pax_global_header00006660000000000000000000000064141313761640014520gustar00rootroot0000000000000052 comment=d1d0186b80c1fbf496265789af89da4e7ca890ab libpg_query-13-2.1.0/000077500000000000000000000000001413137616400142635ustar00rootroot00000000000000libpg_query-13-2.1.0/.github/000077500000000000000000000000001413137616400156235ustar00rootroot00000000000000libpg_query-13-2.1.0/.github/workflows/000077500000000000000000000000001413137616400176605ustar00rootroot00000000000000libpg_query-13-2.1.0/.github/workflows/ci.yml000066400000000000000000000044641413137616400210060ustar00rootroot00000000000000name: CI on: [push, pull_request] jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-20.04] compiler: [clang, gcc] protobuf_lib: [protobuf-c, protobuf-cpp] valgrind: [valgrind,no-valgrind] steps: - name: Check out code uses: actions/checkout@v2 - name: Cache protobuf library if: matrix.protobuf_lib == 'protobuf-cpp' id: cache-protobuf uses: actions/cache@v1 with: path: protobuf-3.14.0 key: ${{ runner.os }}-protobuf-cpp-3.14.0 - name: Build protobuf library if: matrix.protobuf_lib == 'protobuf-cpp' && steps.cache-protobuf.outputs.cache-hit != 'true' run: | wget https://github.com/protocolbuffers/protobuf/releases/download/v3.14.0/protobuf-cpp-3.14.0.tar.gz tar -xf protobuf-cpp-3.14.0.tar.gz cd protobuf-3.14.0 ./configure make - name: Install protobuf library if: matrix.protobuf_lib == 'protobuf-cpp' run: | cd protobuf-3.14.0 sudo make install sudo ldconfig - name: Install Valgrind if: matrix.valgrind == 'valgrind' run: sudo apt install -y valgrind - name: Determine make flags id: make_flags run: | if [ "$PROTOBUF_LIB" = protobuf-cpp ] then echo "::set-output name=proto_flags::USE_PROTOBUF_CPP=1" else echo "::set-output name=proto_flags::" fi if [ "$COMPILER" = clang ] then echo "::set-output name=compiler_flags::CC=clang CXX=clang" elif [ "$COMPILER" = gcc ] then echo "::set-output name=compiler_flags::CC=gcc CXX=g++" else echo "::set-output name=compiler_flags::" fi if [ "$VALGRIND" = valgrind ] then echo "::set-output name=debug_flags::VALGRIND=1 DEBUG=1" else echo "::set-output name=debug_flags::" fi env: PROTOBUF_LIB: ${{ matrix.protobuf_lib }} COMPILER: ${{ matrix.compiler }} VALGRIND: ${{ matrix.valgrind }} - name: Build and run tests run: make $FLAGS env: FLAGS: ${{ format('{0} {1} {2}', steps.make_flags.outputs.proto_flags, steps.make_flags.outputs.compiler_flags, steps.make_flags.outputs.debug_flags) }} libpg_query-13-2.1.0/.gitignore000066400000000000000000000002621413137616400162530ustar00rootroot00000000000000postgres/* postgres.tar.bz2 *.o *.a examples/* !examples/*.c test/* !test/*.c !test/*.sql !test/*.expected.json !test/valgrind.supp !test/**/ test/*.dSYM tmp/* !tmp/.gitkeep libpg_query-13-2.1.0/CHANGELOG.md000066400000000000000000000307511413137616400161020ustar00rootroot00000000000000# Changelog All versions are tagged by the major Postgres version, plus an individual semver for this library itself. ## 13-2.1.0 2021-10-12 * Normalize: add funcname error object [#121](https://github.com/pganalyze/libpg_query/pull/121) * Normalize: Match GROUP BY against target list and re-use param refs [#124](https://github.com/pganalyze/libpg_query/pull/124) * PL/pgSQL: Setup namespace items for parameters, support RECORD types [#123](https://github.com/pganalyze/libpg_query/pull/123) - This significantly improves parsing for PL/pgSQL functions, to the extent that most functions should now parse successfully ## 13-2.0.7 2021-07-16 * Normalize: Don't modify constants in TypeName typmods/arrayBounds fields (#118) - This matches how pg_stat_statement behaves, and avoids causing parsing errors on the normalized statement * Don't fail builds on systems that have strchrnul support (FreeBSD) ## 13-2.0.6 2021-06-29 * Normalize: Don't touch "ORDER BY 1" expressions, keep original text [#115](https://github.com/pganalyze/libpg_query/pull/115) - This avoids obscuring the semantic meaning of integers in the ORDER BY clause, which is to reference a particular column in the target list. ## 13-2.0.5 2021-06-24 * Update to Postgres 13.3 patch release [#114](https://github.com/pganalyze/libpg_query/pull/114) * Add optional Makefile target to build as shared library [#100](https://github.com/pganalyze/libpg_query/pull/100) * Normalize: Don't touch "GROUP BY 1" type statements, keep original text [#113](https://github.com/pganalyze/libpg_query/pull/113) - This avoids obscuring the semantic meaning of integers in the GROUP BY clause, which is to reference a particular column in the target list. * Fingerprint: Cache list item hashes to fingerprint complex queries faster [#112](https://github.com/pganalyze/libpg_query/pull/112) - This was exhibiting quite bad runtime behaviour before, causing both an explosion in memory, as well as very high CPU runtime for complex queries. - The new approach ensures we don't calculate the hashes for a particular list more than once, which ensures that we roughly have quadratic runtime instead of exponential runtime. * Deparser: Emit the RangeVar catalogname if present [#105](https://github.com/pganalyze/libpg_query/pull/105) * Fix crash in pg_scan function when encountering backslash escapes [#109](https://github.com/pganalyze/libpg_query/pull/109) * Integrate oss-fuzz fuzzer [#106](https://github.com/pganalyze/libpg_query/pull/106) ## 13-2.0.4 2021-04-05 * Deparser: Fix crash in CopyStmt with HEADER or FREEZE inside WITH parens - The parse tree does not contain an explicit argument in those cases, but does when specified in the legacy mode without the wrapping WITH. - With this change we only output the "1" argument when the original tree also had this, to ensure parse tree comparisons match. Note the intent here is technically the same, which is to enable these options. ## 13-2.0.3 2021-04-02 * Normalize: Fix handling of two subsequent DefElem elements [#96](https://github.com/pganalyze/libpg_query/pull/91) - We were incorrectly adding too many DefElem locations to the recorded constant values, causing a crash when more than a single DefElem is present in a utility statement. ## 13-2.0.2 2021-03-30 * srcdata/nodetypes.json: Avoid bogus values accidentally parsed from inside comments ## 13-2.0.1 2021-03-30 * Fix ARM builds: Avoid dependency on cpuid.h header * Simplify deparser of TableLikeClause [#91](https://github.com/pganalyze/libpg_query/pull/91) [Lele Gaifax](https://github.com/lelit) * Fix asprintf warnings by ensuring _GNU_SOURCE is set early enough ## 13-2.0.0 2021-03-18 * Update to PostgreSQL 13 parser (13.2 release) * Changes to JSON output format - WARNING: These JSON format changes are incompatible with prior releases. - New top-level result object that contains the Postgres version number the parser is based on - Node type names are only output when the field is a generic field (Node*), but not when the field always has the same type. This matches how the Postgres source looks like, and ensures the JSON and (new) Protobuf format match in their structure. You can utilize the `srcdata/struct_defs.json` file as needed to get the necessary context on field types. - Whitespace between control characters in JSON is no longer added - "<" and ">" characters are escaped to avoid browser HTML injections - Enum values are output with the value's name, instead of the integer value * Introduce new Protobuf parse tree output format - Up until now, this library relied on JSON to pass the parse result back to the caller, which has a number of downsides, most importantly that we don't have a readily available parser for JSON thats not tied to a running Postgres server. That in turn makes it hard to provide cross-language features such as deparsing directly in this library (which would require reading back a parse tree that gets passed in). - Protobuf isn't perfect, but its straightforward enough to generate the schema definitions for the parse tree nodes, and output the tree using a bundled C protobuf library, which has a small enough SLOC count (~3k) to not be noticeable in the big picture. * Add support for returning Postgres scanner result - This allows utilizing pg_query for use cases that need the raw token information, instead of a parse tree. Due to additional modifications to the Postgres source, this also contains information about comments in the query string, and their location. * Add deparsing functionality that turns parse tree back into a SQL query - This is based on the deparser that was written over multiple years for the pg_query Ruby library, and is now accessible for all bindings through this new API and implementation. * Fingerprinting: Introduce v3 version and 64-bit XXH3 hash - See full details in the wiki page here: https://github.com/pganalyze/libpg_query/wiki/Fingerprinting#version-30-based-on-postgresql-13 * Add new pg_query_split_with_scanner/pg_query_split_with_parser functions to split up multi-statement strings - Naively one could assume that splitting a string by ";" is sufficient, but it becomes tricky once one takes into consideration that this character can also show up in identifier, constants or comments. - We provide both a parser-based split function and a scanner-based split function. Most importantly when splitting statements in a file that may contain syntax errors that cause a parser error, but are accepted by the scanner. Otherwise the parser-based split function is recommended due to better accuracy. * Add experimental Protobuf C++ outfuncs, converge JSON output to match Protobuf mapped output * Extract source with USE_ASSERT_CHECKING enabled - This ensures we have the necessary functions to compile an assert-enabled build if necessary. Note that this doesn't mean that asserts are enabled by default (they are not, you need to explicitly use DEBUG=1). * Ensure codebase has a clean Valgrind run * PL/pgSQL: Output NEW/OLD variable numbers, record dno fields [Ethan Resnick](https://github.com/ethanresnick) * Makefile: Allow passing in customized CFLAGS/PG_CONFIGURE_FLAGS/TEST_* [Ethan Resnick](https://github.com/ethanresnick) ## 10-1.0.5 2021-02-17 * Update to latest Postgres 10 patch release (10.16) * Free Postgres top-level memory context on thread exit / with function - Previously there was no way to free the top-level Postgres memory context, causing threaded programs that churn through a lot of threads to leak memory with each newly initialized thread-local top-level memory context. - Instead, this uses a newly introduced cleanup method to free the memory when a pthread exits (note this causes a pthread dependency to be added to this library). In addition, primarily for memory testing purposes, add a new method "pg_query_exit" that performs the same cleanup on demand. * Resolve correctness issues and possible memory leak in PL/pgSQL parser * Add arch-ppc.h for PPC architectures [#80](https://github.com/pganalyze/libpg_query/pull/80) [@pkubaj](https://github.com/pkubaj) ## 10-1.0.4 2020-12-27 * Update to latest Postgres 10 patch release (10.15) * PL/pgSQL parsing: Handle asprintf failures (and prevent compiler warning) ## 10-1.0.3 2020-11-07 * Update to latest Postgres 10 patch release (10.14) * Add support for ARM builds by explicitly copying ARM header file * Ignore return value of asprintf without compiler warnings [@herwinw](https://github.com/herwinw) * Free stderr_buffer when parsing plpgsql [@herwinw](https://github.com/herwinw) ## 10-1.0.2 2018-05-18 * Avoid compiler warning due to unused result in pg_query_parse_plpgsql ## 10-1.0.1 2017-10-31 * Fix fingerprint tests ## 10-1.0.0 2017-10-30 * First release based on PostgreSQL 10.0 - Parse tree output may have changed in backwards-incompatible ways! - Fingerprint base version bumped to "02" to reflect the change in parse trees ## 9.5-1.7.1 2017-10-26 * Allow "$1 FROM $2" to be parsed - This is new with Postgres 10 output of pg_stat_statements, so we should treat this the same as "? FROM ?" in earlier versions. ## 9.5-1.7.0 2017-10-20 * Update to Postgres 9.5.9 * Support gcc versions earlier than 4.6.0 * Export version information in pg_query.h directly ## 9.5-1.6.2 2017-07-30 * Fingerprinting Version 1.3 * Attributes to be ignored: * RangeVar.relname (if node also has RangeVar.relpersistence = "t") * Special cases: List nodes where parent field name is valuesLists * Follow same logic described for fromClause/targetList/cols/rexpr ## 9.5-1.6.1 2017-07-29 * Fingerprinting Version 1.2 * Ignore portal_name in DeclareCursorStmt, FetchStmt and ClosePortalStmt ## 9.5-1.6.0 2017-07-29 * Change normalization methods to output $1/$2 .. $N instead of ? characters * BREAKING CHANGE in pg_query_normalize(..) output * This matches the change in the upcoming Postgres 10, and makes it easier to migrate applications to the new normalization format ## 9.5-1.5.0 2017-05-26 * Update to Postgres 9.5.7 * Disable 128-bit integer support (they are not used), to support 32-bit archs [@herwinw](https://github.com/herwinw) * Cleanup efforts [@herwinw](https://github.com/herwinw) * Improve concurrency tests * Make sure we have a valid proc_source * Normalized whitespace in pg_query_parse_plpgsql * Move inclusion of stdio.h in plpgsql parser ## 9.5-1.4.2 2016-12-06 * Cut off fingerprints at 100 nodes deep to avoid excessive runtimes/memory * Fix warning on Linux due to missing asprintf include ## 9.5-1.4.1 2016-06-26 * Automatically call pg_query_init as needed to ease threaded usage ## 9.5-1.4.0 2016-06-26 * Clean up includes to avoid dependency on stdbool.h and xlocale.h * Change PL/pgSQL input to be the full CREATE FUNCTION statement * This is necessary for parsing, since we need the argument and return types * Fingerprinting Version 1.1 * Only ignore ResTarget.name when parent field name is targetList *and* we have a SelectStmt as a parent node (fixes UpdateStmt fingerprinting) * Normalize the password in ALTER ROLE ... PASSWORD '123' statements * Make library thread-safe through thread-local storage [#13](https://github.com/pganalyze/libpg_query/issues/13) ## 9.5-1.3.0 2016-05-31 * Extract source code using LLVM instead of manually compiling the right objects * This speeds up build times considerably since we don't download the Postgres source anymore, instead shipping a partial copy created as part of a release. * Experimental support for parsing PL/pgSQL source code (output format subject to change) ## 9.5-1.2.1 2016-05-17 * Make sure we encode special characters correctly in JSON output ([@zhm](https://github.com/zhm) [#11](https://github.com/pganalyze/libpg_query/pull/11)) ## 9.5-1.2.0 2016-05-16 * Fix stack overflow when parsing CREATE FOREIGN TABLE ([#9](https://github.com/pganalyze/libpg_query/issues/9)) * Update to PostgreSQL 9.5.3 ## 9.5-1.1.0 2016-04-17 * Add pg_query_fingerprint() method that uniquely identifies SQL queries, whilst ignoring formatting and individual constant values * Update to PostgreSQL 9.5.2 ## 9.5-1.0.0 2016-03-06 * First release based on PostgreSQL 9.5.1 * Make JSON_OUTPUT_V2 the default and remove outfuncs patch * NOTE: This is a backwards incompatible change in the output parsetree format! ## 9.4-1.0.0 2016-03-06 * First tagged release based on PostgreSQL 9.4.5 libpg_query-13-2.1.0/LICENSE000066400000000000000000000027151413137616400152750ustar00rootroot00000000000000Copyright (c) 2015, Lukas Fittl All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of pg_query nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. libpg_query-13-2.1.0/Makefile000066400000000000000000000307471413137616400157360ustar00rootroot00000000000000root_dir := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) word-dot = $(word $2,$(subst ., ,$1)) TARGET = pg_query ARLIB = lib$(TARGET).a SOLIB = lib$(TARGET).so PGDIR = $(root_dir)/tmp/postgres PGDIRBZ2 = $(root_dir)/tmp/postgres.tar.bz2 PG_VERSION = 13.3 PG_VERSION_MAJOR = $(call word-dot,$(PG_VERSION),1) PROTOC_VERSION = 3.14.0 VERSION = 2.1.0 VERSION_MAJOR = $(call word-dot,$(VERSION),1) VERSION_MINOR = $(call word-dot,$(VERSION),2) VERSION_PATCH = $(call word-dot,$(VERSION),3) SONAME = $(SOLIB).$(shell printf '%02d%02d' $(PG_VERSION_MAJOR) $(VERSION_MAJOR)).$(VERSION_MINOR) SOLIBVER = $(SONAME).$(VERSION_PATCH) SRC_FILES := $(wildcard src/*.c src/postgres/*.c) vendor/protobuf-c/protobuf-c.c vendor/xxhash/xxhash.c protobuf/pg_query.pb-c.c NOT_OBJ_FILES := src/pg_query_enum_defs.o src/pg_query_fingerprint_defs.o src/pg_query_fingerprint_conds.o src/pg_query_outfuncs_defs.o src/pg_query_outfuncs_conds.o src/pg_query_readfuncs_defs.o src/pg_query_readfuncs_conds.o src/postgres/guc-file.o src/postgres/scan.o src/pg_query_json_helper.o OBJ_FILES := $(filter-out $(NOT_OBJ_FILES), $(SRC_FILES:.c=.o)) override CFLAGS += -g -I. -I./vendor -I./src/postgres/include -Wall -Wno-unused-function -Wno-unused-value -Wno-unused-variable -fno-strict-aliasing -fwrapv -fPIC override PG_CONFIGURE_FLAGS += -q --without-readline --without-zlib override TEST_CFLAGS += -I. -I./vendor -g override TEST_LDFLAGS += -pthread CFLAGS_OPT_LEVEL = -O3 ifeq ($(DEBUG),1) CFLAGS_OPT_LEVEL = -O0 endif ifeq ($(VALGRIND),1) CFLAGS_OPT_LEVEL = -O0 endif override CFLAGS += $(CFLAGS_OPT_LEVEL) ifeq ($(DEBUG),1) # We always add -g, so this only has to enable assertion checking override CFLAGS += -D USE_ASSERT_CHECKING endif ifeq ($(VALGRIND),1) override CFLAGS += -DUSE_VALGRIND override TEST_CFLAGS += -DUSE_VALGRIND endif CLEANLIBS = $(ARLIB) CLEANOBJS = $(OBJ_FILES) CLEANFILES = $(PGDIRBZ2) AR = ar rs INSTALL = install LN_S = ln -s RM = rm -f ECHO = echo VALGRIND_MEMCHECK = valgrind --leak-check=full --gen-suppressions=all \ --suppressions=test/valgrind.supp --time-stamp=yes \ --error-markers=VALGRINDERROR-BEGIN,VALGRINDERROR-END \ --log-file=test/valgrind.log --trace-children=yes --show-leak-kinds=all \ --error-exitcode=1 --errors-for-leak-kinds=all CC ?= cc # Experimental use of Protobuf C++ library, primarily used to validate JSON output matches Protobuf JSON mapping CXX_SRC_FILES := src/pg_query_outfuncs_protobuf_cpp.cc protobuf/pg_query.pb.cc ifeq ($(USE_PROTOBUF_CPP),1) override CXXFLAGS += `pkg-config --cflags protobuf` -I. -I./src/postgres/include -DHAVE_PTHREAD -std=c++11 -Wall -Wno-unused-function -Wno-zero-length-array -Wno-c99-extensions -fwrapv -fPIC ifeq ($(DEBUG),1) override CXXFLAGS += -O0 -g else override CXXFLAGS += -O3 -g endif override TEST_LDFLAGS += `pkg-config --libs protobuf` -lstdc++ # Don't use regular Protobuf-C or JSON implementation (instead implement the same methods using the C++ library) SRC_FILES := $(filter-out src/pg_query_outfuncs_json.c src/pg_query_outfuncs_protobuf.c, $(SRC_FILES)) OBJ_FILES := $(filter-out $(NOT_OBJ_FILES), $(SRC_FILES:.c=.o)) $(CXX_SRC_FILES:.cc=.o) else # Make sure we always clean C++ object files CLEANOBJS += $(CXX_SRC_FILES:.cc=.o) endif all: examples test build build: $(ARLIB) build_shared: $(SOLIB) clean: -@ $(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) $(EXAMPLES) $(TESTS) -@ $(RM) -rf {test,examples}/*.dSYM -@ $(RM) -r $(PGDIR) $(PGDIRBZ2) .PHONY: all clean build build_shared extract_source examples test install $(PGDIR): curl -o $(PGDIRBZ2) https://ftp.postgresql.org/pub/source/v$(PG_VERSION)/postgresql-$(PG_VERSION).tar.bz2 tar -xjf $(PGDIRBZ2) mv $(root_dir)/postgresql-$(PG_VERSION) $(PGDIR) cd $(PGDIR); patch -p1 < $(root_dir)/patches/01_parser_additional_param_ref_support.patch cd $(PGDIR); patch -p1 < $(root_dir)/patches/02_parser_support_question_mark_as_param_ref.patch cd $(PGDIR); patch -p1 < $(root_dir)/patches/03_lexer_track_yyllocend.patch cd $(PGDIR); patch -p1 < $(root_dir)/patches/04_lexer_comments_as_tokens.patch cd $(PGDIR); patch -p1 < $(root_dir)/patches/05_limit_option_enum_value_default.patch cd $(PGDIR); patch -p1 < $(root_dir)/patches/06_alloc_set_delete_free_list.patch cd $(PGDIR); patch -p1 < $(root_dir)/patches/07_plpgsql_start_finish_datums.patch cd $(PGDIR); patch -p1 < $(root_dir)/patches/08_avoid_zero_length_delimiter_in_regression_tests.patch cd $(PGDIR); ./configure $(PG_CONFIGURE_FLAGS) cd $(PGDIR); rm src/pl/plpgsql/src/pl_gram.h cd $(PGDIR); make -C src/pl/plpgsql/src pl_gram.h cd $(PGDIR); make -C src/port pg_config_paths.h cd $(PGDIR); make -C src/backend generated-headers cd $(PGDIR); make -C src/backend parser-recursive # Triggers copying of includes to where they belong, as well as generating gram.c/scan.c extract_source: $(PGDIR) -@ $(RM) -rf ./src/postgres/ mkdir ./src/postgres mkdir ./src/postgres/include LIBCLANG=/Library/Developer/CommandLineTools/usr/lib/libclang.dylib ruby ./scripts/extract_source.rb $(PGDIR)/ ./src/postgres/ cp $(PGDIR)/src/include/storage/dsm_impl.h ./src/postgres/include/storage cp $(PGDIR)/src/include/port/atomics/arch-arm.h ./src/postgres/include/port/atomics cp $(PGDIR)/src/include/port/atomics/arch-ppc.h ./src/postgres/include/port/atomics touch ./src/postgres/guc-file.c # This causes compatibility problems on some Linux distros, with "xlocale.h" not being available echo "#undef HAVE_LOCALE_T" >> ./src/postgres/include/pg_config.h echo "#undef LOCALE_T_IN_XLOCALE" >> ./src/postgres/include/pg_config.h echo "#undef WCSTOMBS_L_IN_XLOCALE" >> ./src/postgres/include/pg_config.h # Support 32-bit systems without reconfiguring echo "#undef PG_INT128_TYPE" >> ./src/postgres/include/pg_config.h # Support gcc earlier than 4.6.0 without reconfiguring echo "#undef HAVE__STATIC_ASSERT" >> ./src/postgres/include/pg_config.h # Avoid problems with static asserts echo "#undef StaticAssertDecl" >> ./src/postgres/include/c.h echo "#define StaticAssertDecl(condition, errmessage)" >> ./src/postgres/include/c.h # Avoid dependency on execinfo (requires extra library on musl-libc based systems) echo "#undef HAVE_EXECINFO_H" >> ./src/postgres/include/pg_config.h echo "#undef HAVE_BACKTRACE_SYMBOLS" >> ./src/postgres/include/pg_config.h # Avoid dependency on cpuid.h (only supported on x86 systems) echo "#undef HAVE__GET_CPUID" >> ./src/postgres/include/pg_config.h # Ensure we don't fail on systems that have strchrnul support (FreeBSD) echo "#ifdef __FreeBSD__" >> ./src/postgres/include/pg_config.h echo "#define HAVE_STRCHRNUL" >> ./src/postgres/include/pg_config.h echo "#endif" >> ./src/postgres/include/pg_config.h # Copy version information so its easily accessible sed -i "" '$(shell echo 's/\#define PG_MAJORVERSION .*/'`grep "\#define PG_MAJORVERSION " ./src/postgres/include/pg_config.h`'/')' pg_query.h sed -i "" '$(shell echo 's/\#define PG_VERSION .*/'`grep "\#define PG_VERSION " ./src/postgres/include/pg_config.h`'/')' pg_query.h sed -i "" '$(shell echo 's/\#define PG_VERSION_NUM .*/'`grep "\#define PG_VERSION_NUM " ./src/postgres/include/pg_config.h`'/')' pg_query.h # Copy regress SQL files so we can use them in tests rm -f ./test/sql/postgres_regress/*.sql cp $(PGDIR)/src/test/regress/sql/*.sql ./test/sql/postgres_regress/ .c.o: @$(ECHO) compiling $(<) @$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $< .cc.o: @$(ECHO) compiling $(<) @$(CXX) $(CXXFLAGS) -o $@ -c $< $(ARLIB): $(OBJ_FILES) Makefile @$(AR) $@ $(OBJ_FILES) $(SOLIB): $(OBJ_FILES) Makefile @$(CC) $(CFLAGS) -shared -Wl,-soname,$(SONAME) $(LDFLAGS) -o $@ $(OBJ_FILES) $(LIBS) protobuf/pg_query.pb-c.c protobuf/pg_query.pb-c.h: protobuf/pg_query.proto ifneq ($(shell which protoc-gen-c), ) protoc --c_out=. protobuf/pg_query.proto else @echo 'Warning: protoc-gen-c not found, skipping protocol buffer regeneration' endif src/pg_query_protobuf.c src/pg_query_scan.c: protobuf/pg_query.pb-c.h # Only used when USE_PROTOBUF_CPP is used (experimental for testing only) src/pg_query_outfuncs_protobuf_cpp.cc: protobuf/pg_query.pb.cc protobuf/pg_query.pb.cc: protobuf/pg_query.proto ifneq ($(shell protoc --version 2>/dev/null | cut -f2 -d" "), $(PROTOC_VERSION)) $(error "ERROR - Wrong protobuf compiler version, need $(PROTOC_VERSION)") endif protoc --cpp_out=. protobuf/pg_query.proto EXAMPLES = examples/simple examples/scan examples/normalize examples/simple_error examples/normalize_error examples/simple_plpgsql examples: $(EXAMPLES) examples/simple examples/scan examples/normalize examples/simple_error examples/normalize_error examples/simple_plpgsql examples/simple: examples/simple.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ -g examples/simple.c $(ARLIB) $(TEST_LDFLAGS) examples/scan: examples/scan.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ -g examples/scan.c $(ARLIB) $(TEST_LDFLAGS) examples/normalize: examples/normalize.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ -g examples/normalize.c $(ARLIB) $(TEST_LDFLAGS) examples/simple_error: examples/simple_error.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ -g examples/simple_error.c $(ARLIB) $(TEST_LDFLAGS) examples/normalize_error: examples/normalize_error.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ -g examples/normalize_error.c $(ARLIB) $(TEST_LDFLAGS) examples/simple_plpgsql: examples/simple_plpgsql.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ -g examples/simple_plpgsql.c $(ARLIB) $(TEST_LDFLAGS) TESTS = test/complex test/concurrency test/deparse test/fingerprint test/normalize test/parse test/parse_protobuf test/parse_plpgsql test/scan test/split test: $(TESTS) ifeq ($(VALGRIND),1) $(VALGRIND_MEMCHECK) test/complex || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/concurrency || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/deparse || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/fingerprint || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/normalize || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/parse || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/parse_protobuf || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/scan || (cat test/valgrind.log && false) $(VALGRIND_MEMCHECK) test/split || (cat test/valgrind.log && false) # Output-based tests $(VALGRIND_MEMCHECK) test/parse_plpgsql || (cat test/valgrind.log && false) diff -Naur test/plpgsql_samples.expected.json test/plpgsql_samples.actual.json else test/complex test/concurrency test/deparse test/fingerprint test/normalize test/parse test/parse_protobuf test/scan test/split # Output-based tests test/parse_plpgsql diff -Naur test/plpgsql_samples.expected.json test/plpgsql_samples.actual.json endif test/complex: test/complex.c $(ARLIB) # We have "-Isrc/" because this test uses pg_query_fingerprint_with_opts $(CC) $(TEST_CFLAGS) -o $@ -Isrc/ test/complex.c $(ARLIB) $(TEST_LDFLAGS) test/concurrency: test/concurrency.c test/parse_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/concurrency.c $(ARLIB) $(TEST_LDFLAGS) test/deparse: test/deparse.c test/deparse_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/deparse.c $(ARLIB) $(TEST_LDFLAGS) test/fingerprint: test/fingerprint.c test/fingerprint_tests.c $(ARLIB) # We have "-Isrc/" because this test uses pg_query_fingerprint_with_opts $(CC) $(TEST_CFLAGS) -o $@ -Isrc/ test/fingerprint.c $(ARLIB) $(TEST_LDFLAGS) test/normalize: test/normalize.c test/normalize_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/normalize.c $(ARLIB) $(TEST_LDFLAGS) test/parse: test/parse.c test/parse_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/parse.c $(ARLIB) $(TEST_LDFLAGS) test/parse_plpgsql: test/parse_plpgsql.c test/parse_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/parse_plpgsql.c $(ARLIB) $(TEST_LDFLAGS) test/parse_protobuf: test/parse_protobuf.c test/parse_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/parse_protobuf.c $(ARLIB) $(TEST_LDFLAGS) test/scan: test/scan.c test/scan_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/scan.c $(ARLIB) $(TEST_LDFLAGS) test/split: test/split.c test/split_tests.c $(ARLIB) $(CC) $(TEST_CFLAGS) -o $@ test/split.c $(ARLIB) $(TEST_LDFLAGS) prefix = /usr/local libdir = $(prefix)/lib includedir = $(prefix)/include install: $(ARLIB) $(SOLIB) $(INSTALL) -d "$(DESTDIR)"$(libdir) $(INSTALL) -m 644 $(ARLIB) "$(DESTDIR)"$(libdir)/$(ARLIB) $(INSTALL) -m 755 $(SOLIB) "$(DESTDIR)"$(libdir)/$(SOLIBVER) $(LN_S) $(SOLIBVER) "$(DESTDIR)"$(libdir)/$(SONAME) $(LN_S) $(SOLIBVER) "$(DESTDIR)"$(libdir)/$(SOLIB) $(INSTALL) -d "$(DESTDIR)"$(includedir)/$(TARGET) $(INSTALL) -m 644 pg_query.h "$(DESTDIR)"$(includedir)/pg_query.h $(INSTALL) -m 644 protobuf/pg_query.proto "$(DESTDIR)"$(includedir)/$(TARGET)/pg_query.proto libpg_query-13-2.1.0/README.md000066400000000000000000000233441413137616400155500ustar00rootroot00000000000000# libpg_query C library for accessing the PostgreSQL parser outside of the server. This library uses the actual PostgreSQL server source to parse SQL queries and return the internal PostgreSQL parse tree. Note that this is mostly intended as a base library for [pg_query](https://github.com/pganalyze/pg_query) (Ruby), [pg_query.go](https://github.com/pganalyze/pg_query_go) (Go), [pgsql-parser](https://github.com/pyramation/pgsql-parser) (Node), [psqlparse](https://github.com/alculquicondor/psqlparse) (Python) and [pglast](https://pypi.org/project/pglast/) (Python 3). You can find further background to why a query's parse tree is useful here: https://pganalyze.com/blog/parse-postgresql-queries-in-ruby.html ## Installation ```sh git clone -b 13-latest git://github.com/pganalyze/libpg_query cd libpg_query make ``` Due to compiling parts of PostgreSQL, running `make` will take a bit. Expect up to 3 minutes. For a production build, its best to use a specific git tag (see CHANGELOG). ## Usage: Parsing a query A [full example](https://github.com/pganalyze/libpg_query/blob/master/examples/simple.c) that parses a query looks like this: ```c #include #include int main() { PgQueryParseResult result; result = pg_query_parse("SELECT 1"); printf("%s\n", result.parse_tree); pg_query_free_parse_result(result); } ``` Compile it like this: ``` cc -Ilibpg_query -Llibpg_query example.c -lpg_query ``` This will output the parse tree (whitespace adjusted here for better readability): ```json { "version": 130003, "stmts": [ { "stmt": { "SelectStmt": { "targetList": [ { "ResTarget": { "val": { "A_Const": { "val": { "Integer": { "ival": 1 } }, "location": 7 } }, "location": 7 } } ], "limitOption": "LIMIT_OPTION_DEFAULT", "op": "SETOP_NONE" } } } ] } ``` ## Usage: Scanning a query into its tokens using the PostgreSQL scanner/lexer pg_query also exposes the underlying scanner of Postgres, which is also used in the very first part in the parsing process. It can be useful on its own for e.g. syntax highlighting, where one is mostly concerned with differentiating keywords from identifiers and other parts of the query: ```c #include #include #include "protobuf/pg_query.pb-c.h" int main() { PgQueryScanResult result; PgQuery__ScanResult *scan_result; PgQuery__ScanToken *scan_token; const ProtobufCEnumValue *token_kind; const ProtobufCEnumValue *keyword_kind; const char *input = "SELECT update AS left /* comment */ FROM between"; result = pg_query_scan(input); scan_result = pg_query__scan_result__unpack(NULL, result.pbuf.len, (void *) result.pbuf.data); printf(" version: %d, tokens: %ld, size: %d\n", scan_result->version, scan_result->n_tokens, result.pbuf.len); for (size_t j = 0; j < scan_result->n_tokens; j++) { scan_token = scan_result->tokens[j]; token_kind = protobuf_c_enum_descriptor_get_value(&pg_query__token__descriptor, scan_token->token); keyword_kind = protobuf_c_enum_descriptor_get_value(&pg_query__keyword_kind__descriptor, scan_token->keyword_kind); printf(" \"%.*s\" = [ %d, %d, %s, %s ]\n", scan_token->end - scan_token->start, &(input[scan_token->start]), scan_token->start, scan_token->end, token_kind->name, keyword_kind->name); } pg_query__scan_result__free_unpacked(scan_result, NULL); pg_query_free_scan_result(result); return 0; } ``` This will output the following: ``` version: 130003, tokens: 7, size: 77 "SELECT" = [ 0, 6, SELECT, RESERVED_KEYWORD ] "update" = [ 7, 13, UPDATE, UNRESERVED_KEYWORD ] "AS" = [ 14, 16, AS, RESERVED_KEYWORD ] "left" = [ 17, 21, LEFT, TYPE_FUNC_NAME_KEYWORD ] "/* comment */" = [ 22, 35, C_COMMENT, NO_KEYWORD ] "FROM" = [ 36, 40, FROM, RESERVED_KEYWORD ] "between" = [ 41, 48, BETWEEN, COL_NAME_KEYWORD ] ``` Where the each element in the token list has the following fields: 1. Start location in the source string 2. End location in the source string 3. Token value - see Token type in `protobuf/pg_query.proto` 4. Keyword type - see KeywordKind type in `protobuf/pg_query.proto`, possible values: `NO_KEYWORD`: Not a keyword `UNRESERVED_KEYWORD`: Unreserved keyword (available for use as any kind of unescaped name) `COL_NAME_KEYWORD`: Unreserved keyword (can be unescaped column/table/etc names, cannot be unescaped function or type name) `TYPE_FUNC_NAME_KEYWORD`: Reserved keyword (can be unescaped function or type name, cannot be unescaped column/table/etc names) `RESERVED_KEYWORD`: Reserved keyword (cannot be unescaped column/table/variable/type/function names) Note that whitespace does not show as tokens. ## Usage: Fingerprinting a query Fingerprinting allows you to identify similar queries that are different only because of the specific object that is being queried for (i.e. different object ids in the WHERE clause), or because of formatting. Example: ```c #include #include int main() { PgQueryFingerprintResult result; result = pg_query_fingerprint("SELECT 1"); printf("%s\n", result.fingerprint_str); pg_query_free_fingerprint_result(result); } ``` This will output: ``` 50fde20626009aba ``` See https://github.com/pganalyze/libpg_query/wiki/Fingerprinting for the full fingerprinting rules. ## Usage: Parsing a PL/pgSQL function (Experimental) A [full example](https://github.com/pganalyze/libpg_query/blob/master/examples/simple_plpgsql.c) that parses a [PL/pgSQL](https://www.postgresql.org/docs/current/static/plpgsql.html) method looks like this: ```c #include #include #include int main() { PgQueryPlpgsqlParseResult result; result = pg_query_parse_plpgsql(" \ CREATE OR REPLACE FUNCTION cs_fmt_browser_version(v_name varchar, \ v_version varchar) \ RETURNS varchar AS $$ \ BEGIN \ IF v_version IS NULL THEN \ RETURN v_name; \ END IF; \ RETURN v_name || '/' || v_version; \ END; \ $$ LANGUAGE plpgsql;"); if (result.error) { printf("error: %s at %d\n", result.error->message, result.error->cursorpos); } else { printf("%s\n", result.plpgsql_funcs); } pg_query_free_plpgsql_parse_result(result); return 0; } ``` This will output: ```json [ {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":1,"body":[{"PLpgSQL_stmt_if":{"lineno":1,"cond":{"PLpgSQL_expr":{"query":"SELECT v_version IS NULL"}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":1,"expr":{"PLpgSQL_expr":{"query":"SELECT v_name"}}}}]}},{"PLpgSQL_stmt_return":{"lineno":1,"expr":{"PLpgSQL_expr":{"query":"SELECT v_name || '/' || v_version"}}}}]}}}} ] ``` ## Versions For stability, it is recommended you use individual tagged git versions, see CHANGELOG. Each major version is maintained in a dedicated git branch. Only the latest Postgres stable release receives active updates. | PostgreSQL Major Version | Branch | Status | |--------------------------|------------|---------------------| | 13 | 13-latest | Active development | | 12 | (n/a) | Not supported | | 11 | (n/a) | Not supported | | 10 | 10-latest | Critical fixes only | | 9.6 | (n/a) | Not supported | | 9.5 | 9.5-latest | No longer supported | | 9.4 | 9.4-latest | No longer supported | ## Resources pg_query wrappers in other languages: * Ruby: [pg_query](https://github.com/pganalyze/pg_query) * Go: [pg_query_go](https://github.com/pganalyze/pg_query_go) * Javascript (Node): [pgsql-parser](https://github.com/pyramation/pgsql-parser) * Javascript (Browser): [pg-query-emscripten](https://github.com/pganalyze/pg-query-emscripten) * Python: [psqlparse](https://github.com/alculquicondor/psqlparse), [pglast](https://github.com/lelit/pglast) * OCaml: [pg_query-ocaml](https://github.com/roddyyaga/pg_query-ocaml) * Rust: [pg_query.rs](https://github.com/paupino/pg_query.rs) Products, tools and libraries built on pg_query: * [pganalyze](https://pganalyze.com/) * [hsql](https://github.com/JackDanger/hsql) * [sqlint](https://github.com/purcell/sqlint) * [pghero](https://github.com/ankane/pghero) * [dexter](https://github.com/ankane/dexter) * [pgscope](https://github.com/gjalves/pgscope) * [pg_materialize](https://github.com/aanari/pg-materialize) * [DuckDB](https://github.com/cwida/duckdb) ([details](https://github.com/cwida/duckdb/tree/master/third_party/libpg_query)) * and more Please feel free to [open a PR](https://github.com/pganalyze/libpg_query/pull/new/master) to add yours! :) ## Authors - [Lukas Fittl](mailto:lukas@fittl.com) ## License PostgreSQL server source code, used under the [PostgreSQL license](https://www.postgresql.org/about/licence/).
Portions Copyright (c) 1996-2017, The PostgreSQL Global Development Group
Portions Copyright (c) 1994, The Regents of the University of California All other parts are licensed under the 3-clause BSD license, see LICENSE file for details.
Copyright (c) 2017, Lukas Fittl libpg_query-13-2.1.0/examples/000077500000000000000000000000001413137616400161015ustar00rootroot00000000000000libpg_query-13-2.1.0/examples/normalize.c000066400000000000000000000007531413137616400202520ustar00rootroot00000000000000#include #include #include int main() { PgQueryNormalizeResult result; result = pg_query_normalize("SELECT 1"); if (result.error) { printf("error: %s at %d\n", result.error->message, result.error->cursorpos); } else { printf("%s\n", result.normalized_query); } pg_query_free_normalize_result(result); // Optional, this ensures all memory is freed upon program exit (useful when running Valgrind) pg_query_exit(); return 0; } libpg_query-13-2.1.0/examples/normalize_error.c000066400000000000000000000010671413137616400214620ustar00rootroot00000000000000#include #include #include int main() { PgQueryNormalizeResult result; result = pg_query_normalize("SELECT $$$"); if (result.error) { printf("error: %s at location %d (%s:%d)\n", result.error->message, result.error->cursorpos, result.error->filename, result.error->lineno); } else { printf("%s\n", result.normalized_query); } pg_query_free_normalize_result(result); // Optional, this ensures all memory is freed upon program exit (useful when running Valgrind) pg_query_exit(); return 0; } libpg_query-13-2.1.0/examples/scan.c000066400000000000000000000117331413137616400171760ustar00rootroot00000000000000#include #include #include #include "protobuf/pg_query.pb-c.h" size_t testCount = 12; const char* tests[] = { "SELECT 1", "SELECT \\s 1", "SELECT * FROM x WHERE z = 2", "SELECT 5.41414", "SELECT $1", "SELECT ?", "SELECT update AS left /* comment */ FROM between", "--test\nSELECT 1", "SELECT 999999999999999999999::numeric/1000000000000000000000", "SELECT 4790999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", "WITH upsert AS (INSERT INTO schema_columns (table_id, name, position, data_type, default_value, not_null, first_snapshot_id) VALUES (?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?), (?, ?, ?, ?, ?, ?, ?) ON CONFLICT (table_id, name) WHERE invalidated_at_snapshot_id IS NULL DO UPDATE SET (position, data_type, default_value, not_null) = (EXCLUDED.position, EXCLUDED.data_type, EXCLUDED.default_value, EXCLUDED.not_null) RETURNING id, table_id, name), all_ids AS (SELECT id FROM upsert), cleanup AS (UPDATE schema_columns SET invalidated_at_snapshot_id = ? WHERE table_id = ? AND invalidated_at_snapshot_id IS NULL AND id NOT IN (SELECT id FROM all_ids)) SELECT * FROM upsert", "SELECT $foo$test$foo$, '123' FROM \"xy\", abc", "SELECT '/*not a comment*/', E'\\134', B'10', X'12', -Infinity, U&\"d!0061t!+000061\" UESCAPE '!'" }; int main() { PgQueryScanResult result; PgQuery__ScanResult *scan_result; PgQuery__ScanToken *scan_token; const ProtobufCEnumValue *token_kind; const ProtobufCEnumValue *keyword_kind; size_t i; size_t j; for (i = 0; i < testCount; i++) { result = pg_query_scan(tests[i]); printf("%s\n", tests[i]); if (result.error) { printf(" error: %s at %d\n", result.error->message, result.error->cursorpos); } else { scan_result = pg_query__scan_result__unpack(NULL, result.pbuf.len, (void *) result.pbuf.data); printf(" version: %d, tokens: %ld, size: %d\n", scan_result->version, scan_result->n_tokens, result.pbuf.len); for (j = 0; j < scan_result->n_tokens; j++) { scan_token = scan_result->tokens[j]; token_kind = protobuf_c_enum_descriptor_get_value(&pg_query__token__descriptor, scan_token->token); keyword_kind = protobuf_c_enum_descriptor_get_value(&pg_query__keyword_kind__descriptor, scan_token->keyword_kind); printf(" \"%.*s\" = [ %d, %d, %s, %s ]\n", scan_token->end - scan_token->start, &(tests[i][scan_token->start]), scan_token->start, scan_token->end, token_kind->name, keyword_kind->name); } pg_query__scan_result__free_unpacked(scan_result, NULL); } pg_query_free_scan_result(result); } // Optional, this ensures all memory is freed upon program exit (useful when running Valgrind) pg_query_exit(); return 0; } libpg_query-13-2.1.0/examples/simple.c000066400000000000000000000020551413137616400175400ustar00rootroot00000000000000// Welcome to the easiest way to parse an SQL query :-) // Compile the file like this: // // cc -I../ -L../ simple.c -lpg_query #include #include #include size_t testCount = 7; const char* tests[] = { "SELECT 1", "SELECT * FROM x WHERE z = 2", "SELECT 5.41414", "SELECT $1", "SELECT ?", "SELECT 999999999999999999999::numeric/1000000000000000000000", "SELECT 4790999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999" }; int main() { PgQueryParseResult result; size_t i; for (i = 0; i < testCount; i++) { result = pg_query_parse(tests[i]); if (result.error) { printf("error: %s at %d\n", result.error->message, result.error->cursorpos); } else { printf("%s\n", result.parse_tree); } pg_query_free_parse_result(result); } // Optional, this ensures all memory is freed upon program exit (useful when running Valgrind) pg_query_exit(); return 0; } libpg_query-13-2.1.0/examples/simple_error.c000066400000000000000000000011221413137616400207430ustar00rootroot00000000000000#include #include #include int main() { PgQueryParseResult result; result = pg_query_parse("INSERT FROM DOES NOT WORK"); if (result.error) { printf("error: %s at location %d (%s in %s:%d)\n", result.error->message, result.error->cursorpos, result.error->funcname, result.error->filename, result.error->lineno); } else { printf("%s\n", result.parse_tree); } pg_query_free_parse_result(result); // Optional, this ensures all memory is freed upon program exit (useful when running Valgrind) pg_query_exit(); return 0; } libpg_query-13-2.1.0/examples/simple_plpgsql.c000066400000000000000000000014461413137616400213050ustar00rootroot00000000000000#include #include #include int main() { PgQueryPlpgsqlParseResult result; result = pg_query_parse_plpgsql(" \ CREATE OR REPLACE FUNCTION cs_fmt_browser_version(v_name varchar, \ v_version varchar) \ RETURNS varchar AS $$ \ BEGIN \ IF v_version IS NULL THEN \ RETURN v_name; \ END IF; \ RETURN v_name || '/' || v_version; \ END; \ $$ LANGUAGE plpgsql;"); if (result.error) { printf("error: %s at %d\n", result.error->message, result.error->cursorpos); } else { printf("%s\n", result.plpgsql_funcs); } pg_query_free_plpgsql_parse_result(result); // Optional, this ensures all memory is freed upon program exit (useful when running Valgrind) pg_query_exit(); return 0; } libpg_query-13-2.1.0/patches/000077500000000000000000000000001413137616400157125ustar00rootroot00000000000000libpg_query-13-2.1.0/patches/01_parser_additional_param_ref_support.patch000066400000000000000000000154111413137616400265310ustar00rootroot00000000000000commit 2be7057a595bdf4794dd4f9397de19a0fcd0dc23 Author: Lukas Fittl Date: Sun Jan 3 15:06:25 2021 -0800 pg_query: Allow passing $i numbered parameters in more places Due to pg_stat_statements using $1, etc for substitution of constants, the parser needs to support additional locations where these values are allowed to be passed in. Examples: CREATE USER test PASSWORD $1; ALTER USER test ENCRYPTED PASSWORD $2; SET SCHEMA $3; SET ROLE $4; SET SESSION AUTHORIZATION $5; SET TIME ZONE $6; SELECT EXTRACT($1 FROM TIMESTAMP $2); SELECT DATE $1; SELECT INTERVAL $1; SELECT INTERVAL $1 YEAR; SELECT INTERVAL (6) $1; diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 3adc087e3f..cf2b521c23 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -162,6 +162,8 @@ static Node *makeBitStringConst(char *str, int location); static Node *makeNullAConst(int location); static Node *makeAConst(Value *v, int location); static Node *makeBoolAConst(bool state, int location); +static Node *makeParamRef(int number, int location); +static Node *makeParamRefCast(int number, int location, TypeName *typename); static RoleSpec *makeRoleSpec(RoleSpecType type, int location); static void check_qualified_name(List *names, core_yyscan_t yyscanner); static List *check_func_name(List *names, core_yyscan_t yyscanner); @@ -1026,6 +1028,11 @@ AlterOptRoleElem: $$ = makeDefElem("password", (Node *)makeString($2), @1); } + | PASSWORD PARAM + { + $$ = makeDefElem("password", + (Node *)makeParamRef($2, @2), @1); + } | PASSWORD NULL_P { $$ = makeDefElem("password", NULL, @1); @@ -1040,6 +1047,16 @@ AlterOptRoleElem: $$ = makeDefElem("password", (Node *)makeString($3), @1); } + | ENCRYPTED PASSWORD PARAM + { + /* + * These days, passwords are always stored in encrypted + * form, so there is no difference between PASSWORD and + * ENCRYPTED PASSWORD. + */ + $$ = makeDefElem("password", + (Node *)makeParamRef($3, @3), @1); + } | UNENCRYPTED PASSWORD Sconst { ereport(ERROR, @@ -1527,6 +1544,14 @@ set_rest_more: /* Generic SET syntaxes: */ n->args = list_make1(makeStringConst($2, @2)); $$ = n; } + | SCHEMA PARAM + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "search_path"; + n->args = list_make1(makeParamRef($2, @2)); + $$ = n; + } | NAMES opt_encoding { VariableSetStmt *n = makeNode(VariableSetStmt); @@ -1546,6 +1571,14 @@ set_rest_more: /* Generic SET syntaxes: */ n->args = list_make1(makeStringConst($2, @2)); $$ = n; } + | ROLE PARAM + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "role"; + n->args = list_make1(makeParamRef($2, @2)); + $$ = n; + } | SESSION AUTHORIZATION NonReservedWord_or_Sconst { VariableSetStmt *n = makeNode(VariableSetStmt); @@ -1554,6 +1587,14 @@ set_rest_more: /* Generic SET syntaxes: */ n->args = list_make1(makeStringConst($3, @3)); $$ = n; } + | SESSION AUTHORIZATION PARAM + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "session_authorization"; + n->args = list_make1(makeParamRef($3, @3)); + $$ = n; + } | SESSION AUTHORIZATION DEFAULT { VariableSetStmt *n = makeNode(VariableSetStmt); @@ -1593,6 +1634,8 @@ var_value: opt_boolean_or_string { $$ = makeStringConst($1, @1); } | NumericOnly { $$ = makeAConst($1, @1); } + | PARAM + { $$ = makeParamRef($1, @1); } ; iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } @@ -1626,6 +1669,10 @@ zone_value: { $$ = makeStringConst($1, @1); } + | PARAM + { + $$ = makeParamRef($1, @1); + } | IDENT { $$ = makeStringConst($1, @1); @@ -14649,6 +14696,10 @@ extract_list: { $$ = list_make2(makeStringConst($1, @1), $3); } + | PARAM FROM a_expr + { + $$ = list_make2(makeParamRef($1, @1), $3); + } | /*EMPTY*/ { $$ = NIL; } ; @@ -15093,6 +15144,45 @@ AexprConst: Iconst t->location = @1; $$ = makeStringConstCast($6, @6, t); } + | func_name PARAM + { + /* generic type 'literal' syntax */ + TypeName *t = makeTypeNameFromNameList($1); + t->location = @1; + $$ = makeParamRefCast($2, @2, t); + } + | func_name '(' func_arg_list opt_sort_clause ')' PARAM + { + /* generic syntax with a type modifier */ + TypeName *t = makeTypeNameFromNameList($1); + ListCell *lc; + + /* + * We must use func_arg_list and opt_sort_clause in the + * production to avoid reduce/reduce conflicts, but we + * don't actually wish to allow NamedArgExpr in this + * context, nor ORDER BY. + */ + foreach(lc, $3) + { + NamedArgExpr *arg = (NamedArgExpr *) lfirst(lc); + + if (IsA(arg, NamedArgExpr)) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("type modifier cannot have parameter name"), + parser_errposition(arg->location))); + } + if ($4 != NIL) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("type modifier cannot have ORDER BY"), + parser_errposition(@4))); + + t->typmods = $3; + t->location = @1; + $$ = makeParamRefCast($6, @6, t); + } | ConstTypename Sconst { $$ = makeStringConstCast($2, @2, $1); @@ -15110,6 +15200,23 @@ AexprConst: Iconst makeIntConst($3, @3)); $$ = makeStringConstCast($5, @5, t); } + | ConstTypename PARAM + { + $$ = makeParamRefCast($2, @2, $1); + } + | ConstInterval PARAM opt_interval + { + TypeName *t = $1; + t->typmods = $3; + $$ = makeParamRefCast($2, @3, t); + } + | ConstInterval '(' Iconst ')' PARAM + { + TypeName *t = $1; + t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst($3, @3)); + $$ = makeParamRefCast($5, @5, t); + } | TRUE_P { $$ = makeBoolAConst(true, @1); @@ -15964,6 +16071,24 @@ makeBoolAConst(bool state, int location) return makeTypeCast((Node *)n, SystemTypeName("bool"), -1); } +/* makeParamRef + * Creates a new ParamRef node + */ +static Node* makeParamRef(int number, int location) +{ + ParamRef *p = makeNode(ParamRef); + p->number = number; + p->location = location; + return (Node *) p; +} + +static Node * +makeParamRefCast(int number, int location, TypeName *typename) +{ + Node *p = makeParamRef(number, location); + return makeTypeCast(p, typename, -1); +} + /* makeRoleSpec * Create a RoleSpec with the given type */ libpg_query-13-2.1.0/patches/02_parser_support_question_mark_as_param_ref.patch000066400000000000000000000254131413137616400277710ustar00rootroot00000000000000commit 911e2c633fc9f75ea587f9763470ee6140cea0f1 Author: Lukas Fittl Date: Sun Jan 3 15:56:21 2021 -0800 pg_query: Support parsing ? character as param reference This is for compatibility with Postgres 9.6 and older, which used ? as the replacement character in pg_stat_statements. Note that this intentionally breaks use of ? as an operator in some uncommon cases. This patch will likely be removed with the next major parser release, and should be considered deprecated. diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index cf2b521c23..ad796b87e1 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -164,6 +164,7 @@ static Node *makeAConst(Value *v, int location); static Node *makeBoolAConst(bool state, int location); static Node *makeParamRef(int number, int location); static Node *makeParamRefCast(int number, int location, TypeName *typename); +static Node *makeInterval_or_AExprOp(Node *lexpr, Node *rexpr, int location); static RoleSpec *makeRoleSpec(RoleSpecType type, int location); static void check_qualified_name(List *names, core_yyscan_t yyscanner); static List *check_func_name(List *names, core_yyscan_t yyscanner); @@ -745,6 +746,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %nonassoc '<' '>' '=' LESS_EQUALS GREATER_EQUALS NOT_EQUALS %nonassoc BETWEEN IN_P LIKE ILIKE SIMILAR NOT_LA %nonassoc ESCAPE /* ESCAPE must be just above LIKE/ILIKE/SIMILAR */ +%left '?' %left POSTFIXOP /* dummy for postfix Op rules */ /* * To support target_el without AS, we must give IDENT an explicit priority @@ -1033,6 +1035,11 @@ AlterOptRoleElem: $$ = makeDefElem("password", (Node *)makeParamRef($2, @2), @1); } + | PASSWORD '?' + { + $$ = makeDefElem("password", + (Node *)makeParamRef(0, @2), @1); + } | PASSWORD NULL_P { $$ = makeDefElem("password", NULL, @1); @@ -1057,6 +1064,16 @@ AlterOptRoleElem: $$ = makeDefElem("password", (Node *)makeParamRef($3, @3), @1); } + | ENCRYPTED PASSWORD '?' + { + /* + * These days, passwords are always stored in encrypted + * form, so there is no difference between PASSWORD and + * ENCRYPTED PASSWORD. + */ + $$ = makeDefElem("password", + (Node *)makeParamRef(0, @3), @1); + } | UNENCRYPTED PASSWORD Sconst { ereport(ERROR, @@ -1552,6 +1569,14 @@ set_rest_more: /* Generic SET syntaxes: */ n->args = list_make1(makeParamRef($2, @2)); $$ = n; } + | SCHEMA '?' + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "search_path"; + n->args = list_make1(makeParamRef(0, @2)); + $$ = n; + } | NAMES opt_encoding { VariableSetStmt *n = makeNode(VariableSetStmt); @@ -1579,6 +1604,14 @@ set_rest_more: /* Generic SET syntaxes: */ n->args = list_make1(makeParamRef($2, @2)); $$ = n; } + | ROLE '?' + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "role"; + n->args = list_make1(makeParamRef(0, @2)); + $$ = n; + } | SESSION AUTHORIZATION NonReservedWord_or_Sconst { VariableSetStmt *n = makeNode(VariableSetStmt); @@ -1595,6 +1628,14 @@ set_rest_more: /* Generic SET syntaxes: */ n->args = list_make1(makeParamRef($3, @3)); $$ = n; } + | SESSION AUTHORIZATION '?' + { + VariableSetStmt *n = makeNode(VariableSetStmt); + n->kind = VAR_SET_VALUE; + n->name = "session_authorization"; + n->args = list_make1(makeParamRef(0, @3)); + $$ = n; + } | SESSION AUTHORIZATION DEFAULT { VariableSetStmt *n = makeNode(VariableSetStmt); @@ -1636,6 +1677,8 @@ var_value: opt_boolean_or_string { $$ = makeAConst($1, @1); } | PARAM { $$ = makeParamRef($1, @1); } + | '?' + { $$ = makeParamRef(0, @1); } ; iso_level: READ UNCOMMITTED { $$ = "read uncommitted"; } @@ -1673,6 +1716,10 @@ zone_value: { $$ = makeParamRef($1, @1); } + | '?' + { + $$ = makeParamRef(0, @1); + } | IDENT { $$ = makeStringConst($1, @1); @@ -13276,6 +13323,11 @@ a_expr: c_expr { $$ = $1; } | a_expr qual_Op %prec POSTFIXOP { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); } + | a_expr '?' a_expr + { $$ = makeInterval_or_AExprOp($1, $3, @2); } + | a_expr '?' + { $$ = makeInterval_or_AExprOp($1, NULL, @2); } + | a_expr AND a_expr { $$ = makeAndExpr($1, $3, @2); } | a_expr OR a_expr @@ -13684,6 +13736,10 @@ b_expr: c_expr { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $3, @2); } | b_expr NOT_EQUALS b_expr { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", $1, $3, @2); } + | b_expr '?' b_expr + { $$ = makeInterval_or_AExprOp($1, $3, @2); } + | b_expr '?' + { $$ = makeInterval_or_AExprOp($1, NULL, @2); } | b_expr qual_Op b_expr %prec Op { $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); } | qual_Op b_expr %prec Op @@ -13744,6 +13800,21 @@ c_expr: columnref { $$ = $1; } else $$ = (Node *) p; } + | '?' opt_indirection + { + ParamRef *p = makeNode(ParamRef); + p->number = 0; + p->location = @1; + if ($2) + { + A_Indirection *n = makeNode(A_Indirection); + n->arg = (Node *) p; + n->indirection = check_indirection($2, yyscanner); + $$ = (Node *) n; + } + else + $$ = (Node *) p; + } | '(' a_expr ')' opt_indirection { if ($4) @@ -14585,6 +14656,7 @@ MathOp: '+' { $$ = "+"; } | LESS_EQUALS { $$ = "<="; } | GREATER_EQUALS { $$ = ">="; } | NOT_EQUALS { $$ = "<>"; } + | '?' { $$ = "?"; } ; qual_Op: Op @@ -14700,6 +14772,10 @@ extract_list: { $$ = list_make2(makeParamRef($1, @1), $3); } + | '?' FROM a_expr + { + $$ = list_make2(makeParamRef(0, @1), $3); + } | /*EMPTY*/ { $$ = NIL; } ; @@ -15208,7 +15284,7 @@ AexprConst: Iconst { TypeName *t = $1; t->typmods = $3; - $$ = makeParamRefCast($2, @3, t); + $$ = makeParamRefCast($2, @2, t); } | ConstInterval '(' Iconst ')' PARAM { @@ -15217,6 +15293,14 @@ AexprConst: Iconst makeIntConst($3, @3)); $$ = makeParamRefCast($5, @5, t); } + /* Version without () is handled in a_expr/b_expr logic due to ? mis-parsing as operator */ + | ConstInterval '(' Iconst ')' '?' + { + TypeName *t = $1; + t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), + makeIntConst($3, @3)); + $$ = makeParamRefCast(0, @5, t); + } | TRUE_P { $$ = makeBoolAConst(true, @1); @@ -16089,6 +16173,33 @@ makeParamRefCast(int number, int location, TypeName *typename) return makeTypeCast(p, typename, -1); } +/* + * Makes INTERVAL-like nodes for "INTERVAL ?" and "INTERVAL ? opt_interval", otherwise treat as A_EXPR + */ +static Node * +makeInterval_or_AExprOp(Node *lexpr, Node *rexpr, int location) +{ + if (lexpr && IsA(lexpr, ColumnRef)) + { + ColumnRef *c = (ColumnRef *) lexpr; + if (strcmp(strVal(linitial(c->fields)), "interval") == 0 ) + { + TypeName *t = SystemTypeName("interval"); + t->location = c->location; + + /* Its too difficult to tell the parser to give us the right typemod, + * just use a dummy one if present + */ + if (rexpr) + t->typmods = list_make1(makeIntConst(0, -1)); + + return makeParamRefCast(0, location, t); + } + } + + return (Node *) makeA_Expr(AEXPR_OP, list_make1(makeString("?")), lexpr, rexpr, location); +} + /* makeRoleSpec * Create a RoleSpec with the given type */ diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index b1ea0cb538..9ba31f418c 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -277,6 +277,9 @@ xehexesc [\\]x[0-9A-Fa-f]{1,2} xeunicode [\\](u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}) xeunicodefail [\\](u[0-9A-Fa-f]{0,3}|U[0-9A-Fa-f]{0,7}) +/* Normalized escaped string */ +xe_normalized [eE]\? + /* Extended quote * xqdouble implements embedded quote, '''' */ @@ -343,8 +346,9 @@ xcinside [^*/]+ digit [0-9] ident_start [A-Za-z\200-\377_] ident_cont [A-Za-z\200-\377_0-9\$] +ident_end [\?] -identifier {ident_start}{ident_cont}* +identifier {ident_start}{ident_cont}*{ident_end}* /* Assorted special-case operators and operator-like tokens */ typecast "::" @@ -375,7 +379,7 @@ not_equals "!=" * If you change either set, adjust the character lists appearing in the * rule for "operator"! */ -self [,()\[\].;\:\+\-\*\/\%\^\<\>\=] +self [,()\[\].;\:\+\-\*\/\%\^\<\>\=\?] op_chars [\~\!\@\#\^\&\|\`\?\+\-\*\/\%\<\>\=] operator {op_chars}+ @@ -811,6 +815,11 @@ other . return IDENT; } +{xe_normalized} { + /* ignore E */ + return yytext[1]; + } + {typecast} { SET_YYLLOC(); return TYPECAST; @@ -917,6 +926,26 @@ other . } } + /* We don't accept leading ? in any multi-character operators + * except for those in use by hstore, JSON and geometric operators. + * + * We don't accept contained or trailing ? in any + * multi-character operators, except for those in use by JSON operators. + * + * This is necessary in order to support normalized queries without + * spacing between ? as a substition character and a simple operator (e.g. "?=?") + */ + if (yytext[0] == '?' && + strcmp(yytext, "?|") != 0 && strcmp(yytext, "?&") != 0 && + strcmp(yytext, "?#") != 0 && strcmp(yytext, "?-") != 0 && + strcmp(yytext, "?-|") != 0 && strcmp(yytext, "?||") != 0) + nchars = 1; + + if (yytext[0] != '?' && strchr(yytext, '?') && + strcmp(yytext, "@?") != 0) + /* Lex up to just before the ? character */ + nchars = strchr(yytext, '?') - yytext; + SET_YYLLOC(); if (nchars < yyleng) @@ -930,7 +959,7 @@ other . * that the "self" rule would have. */ if (nchars == 1 && - strchr(",()[].;:+-*/%^<>=", yytext[0])) + strchr(",()[].;:+-*/%^<>=?", yytext[0])) return yytext[0]; /* * Likewise, if what we have left is two chars, and @@ -1012,14 +1041,19 @@ other . {identifier} { int kwnum; char *ident; + char *keyword_text = pstrdup(yytext); SET_YYLLOC(); /* Is it a keyword? */ - kwnum = ScanKeywordLookup(yytext, + if (yytext[yyleng - 1] == '?') + keyword_text[yyleng - 1] = '\0'; + kwnum = ScanKeywordLookup(keyword_text, yyextra->keywordlist); if (kwnum >= 0) { + if (keyword_text[yyleng - 1] == '\0') + yyless(yyleng - 1); yylval->keyword = GetScanKeyword(kwnum, yyextra->keywordlist); return yyextra->keyword_tokens[kwnum]; libpg_query-13-2.1.0/patches/03_lexer_track_yyllocend.patch000066400000000000000000000062001413137616400236200ustar00rootroot00000000000000commit 70279ba982378d70ba19e312bf5acd627109acce Author: Lukas Fittl Date: Sun Jan 3 15:59:40 2021 -0800 pg_query: Track yyllocend in lexer This is helpful for tracking the extent of tokens in the scan output, as this is made available by pg_query for uses such as syntax highlighting. diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index 9ba31f418c..5caa03e395 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -517,6 +517,7 @@ other . { /* If NCHAR isn't a keyword, just return "n" */ yylval->str = pstrdup("n"); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } } @@ -585,9 +586,11 @@ other . { case xb: yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return BCONST; case xh: yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return XCONST; case xq: case xe: @@ -600,9 +603,11 @@ other . yyextra->literallen, false); yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return SCONST; case xus: yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return USCONST; default: yyerror("unhandled previous state in xqs"); @@ -740,6 +745,7 @@ other . yyextra->dolqstart = NULL; BEGIN(INITIAL); yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return SCONST; } else @@ -785,6 +791,7 @@ other . if (yyextra->literallen >= NAMEDATALEN) truncate_identifier(ident, yyextra->literallen, true); yylval->str = ident; + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } {dquote} { @@ -793,6 +800,7 @@ other . yyerror("zero-length delimited identifier"); /* can't truncate till after we de-escape the ident */ yylval->str = litbufdup(yyscanner); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return UIDENT; } {xddouble} { @@ -812,6 +820,7 @@ other . /* and treat it as {identifier} */ ident = downcase_truncate_identifier(yytext, yyleng, true); yylval->str = ident; + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } @@ -1065,6 +1074,7 @@ other . */ ident = downcase_truncate_identifier(yytext, yyleng, true); yylval->str = ident; + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } diff --git a/src/include/parser/scanner.h b/src/include/parser/scanner.h index a27352afc1..29852fbd86 100644 --- a/src/include/parser/scanner.h +++ b/src/include/parser/scanner.h @@ -113,6 +113,8 @@ typedef struct core_yy_extra_type /* state variables for literal-lexing warnings */ bool warn_on_first_escape; bool saw_non_ascii; + + int yyllocend; } core_yy_extra_type; /* libpg_query-13-2.1.0/patches/04_lexer_comments_as_tokens.patch000066400000000000000000000100771413137616400243350ustar00rootroot00000000000000commit 2e6aded5d64f6825e8e4e100d2234b3e89b62cd6 Author: Lukas Fittl Date: Sun Jan 3 16:01:44 2021 -0800 pg_query: Track comments separately from whitespace in lexer/parser For syntax highlighting and extracting comments from a query, its very helpful to know the exact locations of a comment in the query string. Previously the lexer discarded all comments as whitespace, making it impossible to determine where they are located in the query string. With this change, the lexer returns them as SQL_COMMENT/C_COMMENT tokens. diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index bcdda00a3a..9a581cbde6 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -620,6 +620,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %token ICONST PARAM %token TYPECAST DOT_DOT COLON_EQUALS EQUALS_GREATER %token LESS_EQUALS GREATER_EQUALS NOT_EQUALS +%token SQL_COMMENT C_COMMENT /* * If you want to make any keyword changes, update the keyword table in diff --git a/src/backend/parser/parser.c b/src/backend/parser/parser.c index be86eb37fe..07b8fd486f 100644 --- a/src/backend/parser/parser.c +++ b/src/backend/parser/parser.c @@ -131,6 +131,9 @@ base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner) case USCONST: cur_token_length = strlen(yyextra->core_yy_extra.scanbuf + *llocp); break; + case SQL_COMMENT: + case C_COMMENT: + return base_yylex(lvalp, llocp, yyscanner); default: return cur_token; } diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index 5caa03e395..6d7e2f0f12 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -223,7 +223,7 @@ non_newline [^\n\r] comment ("--"{non_newline}*) -whitespace ({space}+|{comment}) +whitespace ({space}+) /* * SQL requires at least one newline in the whitespace separating @@ -232,8 +232,8 @@ whitespace ({space}+|{comment}) * it, whereas {whitespace} should generally have a * after it... */ -special_whitespace ({space}+|{comment}{newline}) -horiz_whitespace ({horiz_space}|{comment}) +special_whitespace ({space}+) +horiz_whitespace ({horiz_space}) whitespace_with_newline ({horiz_whitespace}*{newline}{special_whitespace}*) quote ' @@ -423,6 +423,11 @@ other . /* ignore */ } +{comment} { + SET_YYLLOC(); + return SQL_COMMENT; + } + {xcstart} { /* Set location in case of syntax error in comment */ SET_YYLLOC(); @@ -441,7 +446,11 @@ other . {xcstop} { if (yyextra->xcdepth <= 0) + { BEGIN(INITIAL); + yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; + return C_COMMENT; + } else (yyextra->xcdepth)--; } diff --git a/src/interfaces/ecpg/preproc/parser.c b/src/interfaces/ecpg/preproc/parser.c index a2eeeba217..cbfb92384a 100644 --- a/src/interfaces/ecpg/preproc/parser.c +++ b/src/interfaces/ecpg/preproc/parser.c @@ -84,6 +84,9 @@ filtered_base_yylex(void) case UIDENT: case USCONST: break; + case SQL_COMMENT: + case C_COMMENT: + return filtered_base_yylex(); default: return cur_token; } diff --git a/src/pl/plpgsql/src/pl_gram.y b/src/pl/plpgsql/src/pl_gram.y index 3e84162487..d1e6e714ab 100644 --- a/src/pl/plpgsql/src/pl_gram.y +++ b/src/pl/plpgsql/src/pl_gram.y @@ -236,6 +236,7 @@ static void check_raise_parameters(PLpgSQL_stmt_raise *stmt); %token ICONST PARAM %token TYPECAST DOT_DOT COLON_EQUALS EQUALS_GREATER %token LESS_EQUALS GREATER_EQUALS NOT_EQUALS +%token SQL_COMMENT C_COMMENT /* * Other tokens recognized by plpgsql's lexer interface layer (pl_scanner.c). diff --git a/src/pl/plpgsql/src/pl_scanner.c b/src/pl/plpgsql/src/pl_scanner.c index 9cea2e42ac..a0b86ac587 100644 --- a/src/pl/plpgsql/src/pl_scanner.c +++ b/src/pl/plpgsql/src/pl_scanner.c @@ -342,6 +342,11 @@ internal_yylex(TokenAuxData *auxdata) { auxdata->lval.str = pstrdup(yytext); } + + else if (token == SQL_COMMENT || token == C_COMMENT) + { + token = internal_yylex(auxdata); + } } return token; libpg_query-13-2.1.0/patches/05_limit_option_enum_value_default.patch000066400000000000000000000027001413137616400256700ustar00rootroot00000000000000commit d72ada28933f0e04fe2b4481f7886997050ec403 Author: Lukas Fittl Date: Sun Jan 3 15:57:25 2021 -0800 LimitOption: Correctly order LIMIT_OPTION_DEFAULT enum value first This seems like an oversight in the commit that added support for FETCH FIRST... WITH TIES, and causes the parsetree to always have limitOption = LIMIT_OPTION_COUNT, even when no LIMIT/OFFSET is specified. diff --git a/src/backend/executor/nodeLimit.c b/src/backend/executor/nodeLimit.c index d85cf7d93e..f1fdac3156 100644 --- a/src/backend/executor/nodeLimit.c +++ b/src/backend/executor/nodeLimit.c @@ -154,7 +154,8 @@ ExecLimit(PlanState *pstate) if (!node->noCount && node->position - node->offset >= node->count) { - if (node->limitOption == LIMIT_OPTION_COUNT) + if (node->limitOption == LIMIT_OPTION_COUNT || + node->limitOption == LIMIT_OPTION_DEFAULT) { node->lstate = LIMIT_WINDOWEND; return NULL; diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h index 381d84b4e4..a540fce7eb 100644 --- a/src/include/nodes/nodes.h +++ b/src/include/nodes/nodes.h @@ -834,9 +834,9 @@ typedef enum OnConflictAction */ typedef enum LimitOption { + LIMIT_OPTION_DEFAULT, /* No limit present */ LIMIT_OPTION_COUNT, /* FETCH FIRST... ONLY */ LIMIT_OPTION_WITH_TIES, /* FETCH FIRST... WITH TIES */ - LIMIT_OPTION_DEFAULT, /* No limit present */ } LimitOption; #endif /* NODES_H */ libpg_query-13-2.1.0/patches/06_alloc_set_delete_free_list.patch000066400000000000000000000034451413137616400245710ustar00rootroot00000000000000commit bac06c62ccb4d4d5bfa7ae30e3ebef64f37d2254 Author: Lukas Fittl Date: Sat Jan 9 23:42:42 2021 -0800 Add AllocSetDeleteFreeList to clean up aset.c's freelist This frees up the memory allocated to memory contexts that are kept for future allocations. This behaves similar to changing aset.c's MAX_FREE_CONTEXTS to 0, but only does the cleanup when called, and allows the freelist approach to be used during Postgres operations. diff --git a/src/backend/utils/mmgr/aset.c b/src/backend/utils/mmgr/aset.c index 60a761caba..43c3974bed 100644 --- a/src/backend/utils/mmgr/aset.c +++ b/src/backend/utils/mmgr/aset.c @@ -1516,3 +1516,25 @@ AllocSetCheck(MemoryContext context) } #endif /* MEMORY_CONTEXT_CHECKING */ + +void +AllocSetDeleteFreeList(MemoryContext context) +{ + AllocSet set = (AllocSet) context; + if (set->freeListIndex >= 0) + { + AllocSetFreeList *freelist = &context_freelists[set->freeListIndex]; + + while (freelist->first_free != NULL) + { + AllocSetContext *oldset = freelist->first_free; + + freelist->first_free = (AllocSetContext *) oldset->header.nextchild; + freelist->num_free--; + + /* All that remains is to free the header/initial block */ + free(oldset); + } + Assert(freelist->num_free == 0); + } +} diff --git a/src/include/utils/memutils.h b/src/include/utils/memutils.h index 909bc2e988..1a27b6f944 100644 --- a/src/include/utils/memutils.h +++ b/src/include/utils/memutils.h @@ -155,6 +155,7 @@ extern MemoryContext AllocSetContextCreateInternal(MemoryContext parent, Size minContextSize, Size initBlockSize, Size maxBlockSize); +extern void AllocSetDeleteFreeList(MemoryContext context); /* * This wrapper macro exists to check for non-constant strings used as context libpg_query-13-2.1.0/patches/07_plpgsql_start_finish_datums.patch000066400000000000000000000042511413137616400250570ustar00rootroot00000000000000commit 80cb7dcdd721b21fd1e56e915482fd4345a80b17 Author: Lukas Fittl Date: Sun Jan 10 00:28:33 2021 -0800 PL/pgSQL: Make plpgsql_start_datums and plpgsql_finish_datums extern This allows other source units to have the accompanying functions for the already exported plpgsql_adddatum. diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c index 828ff5a288..4670fcafa2 100644 --- a/src/pl/plpgsql/src/pl_comp.c +++ b/src/pl/plpgsql/src/pl_comp.c @@ -105,8 +105,6 @@ static Node *make_datum_param(PLpgSQL_expr *expr, int dno, int location); static PLpgSQL_row *build_row_from_vars(PLpgSQL_variable **vars, int numvars); static PLpgSQL_type *build_datatype(HeapTuple typeTup, int32 typmod, Oid collation, TypeName *origtypname); -static void plpgsql_start_datums(void); -static void plpgsql_finish_datums(PLpgSQL_function *function); static void compute_function_hashkey(FunctionCallInfo fcinfo, Form_pg_proc procStruct, PLpgSQL_func_hashkey *hashkey, @@ -2270,7 +2268,7 @@ plpgsql_parse_err_condition(char *condname) * plpgsql_start_datums Initialize datum list at compile startup. * ---------- */ -static void +void plpgsql_start_datums(void) { datums_alloc = 128; @@ -2304,7 +2302,7 @@ plpgsql_adddatum(PLpgSQL_datum *newdatum) * plpgsql_finish_datums Copy completed datum info into function struct. * ---------- */ -static void +void plpgsql_finish_datums(PLpgSQL_function *function) { Size copiable_size = 0; diff --git a/src/pl/plpgsql/src/plpgsql.h b/src/pl/plpgsql/src/plpgsql.h index 0c3d30fb13..25fdd20bbf 100644 --- a/src/pl/plpgsql/src/plpgsql.h +++ b/src/pl/plpgsql/src/plpgsql.h @@ -1263,6 +1263,8 @@ extern PLpgSQL_recfield *plpgsql_build_recfield(PLpgSQL_rec *rec, extern int plpgsql_recognize_err_condition(const char *condname, bool allow_sqlstate); extern PLpgSQL_condition *plpgsql_parse_err_condition(char *condname); +extern void plpgsql_start_datums(void); +extern void plpgsql_finish_datums(PLpgSQL_function *function); extern void plpgsql_adddatum(PLpgSQL_datum *newdatum); extern int plpgsql_add_initdatums(int **varnos); extern void plpgsql_HashTableInit(void); libpg_query-13-2.1.0/patches/08_avoid_zero_length_delimiter_in_regression_tests.patch000066400000000000000000000100651413137616400311540ustar00rootroot00000000000000commit da83e9064fad6128f1968df975b3ad56377a4476 Author: Lukas Fittl Date: Sat Feb 20 04:38:04 2021 -0800 Avoid zero-length delimiter in regression test files This is a pg_query-specific patch that ensures we can use the split function on the regression test files. Zero-length delimiters fail at the scanner level in Postgres, and thus need to be removed. diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out index e40287d25a..4f545659ad 100644 --- a/src/test/regress/expected/copy2.out +++ b/src/test/regress/expected/copy2.out @@ -422,9 +422,9 @@ BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL(b), FORCE_NULL(c)); COMMIT; SELECT b, c FROM forcetest WHERE a = 1; - b | c ----+------ - | NULL + b | c +---+---------- + | notempty (1 row) -- should succeed, FORCE_NULL and FORCE_NOT_NULL can be both specified @@ -432,17 +432,17 @@ BEGIN; COPY forcetest (a, b, c, d) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL(c,d), FORCE_NULL(c,d)); COMMIT; SELECT c, d FROM forcetest WHERE a = 2; - c | d ----+------ - | NULL + c | d +---+---------- + | notempty (1 row) -- should fail with not-null constraint violation BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NULL(b), FORCE_NOT_NULL(c)); ERROR: null value in column "b" of relation "forcetest" violates not-null constraint -DETAIL: Failing row contains (3, null, , null, null). -CONTEXT: COPY forcetest, line 1: "3,,""" +DETAIL: Failing row contains (3, null, notempty, null, null). +CONTEXT: COPY forcetest, line 1: "3,,"notempty"" ROLLBACK; -- should fail with "not referenced by COPY" error BEGIN; diff --git a/src/test/regress/expected/create_am.out b/src/test/regress/expected/create_am.out index b9dc82dd3c..21f2ad83fc 100644 --- a/src/test/regress/expected/create_am.out +++ b/src/test/regress/expected/create_am.out @@ -281,10 +281,8 @@ ORDER BY 3, 1, 2; ROLLBACK; -- Third, check that we can neither create a table using a nonexistent -- AM, nor using an index AM -CREATE TABLE i_am_a_failure() USING ""; -ERROR: zero-length delimited identifier at or near """" -LINE 1: CREATE TABLE i_am_a_failure() USING ""; - ^ +CREATE TABLE i_am_a_failure() USING "notempty"; +ERROR: access method "notempty" does not exist CREATE TABLE i_am_a_failure() USING i_do_not_exist_am; ERROR: access method "i_do_not_exist_am" does not exist CREATE TABLE i_am_a_failure() USING "I do not exist AM"; diff --git a/src/test/regress/sql/copy2.sql b/src/test/regress/sql/copy2.sql index 902f4fac19..453cc42e59 100644 --- a/src/test/regress/sql/copy2.sql +++ b/src/test/regress/sql/copy2.sql @@ -295,21 +295,21 @@ CREATE TEMP TABLE forcetest ( -- should succeed with no effect ("b" remains an empty string, "c" remains NULL) BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL(b), FORCE_NULL(c)); -1,,"" +1,,"notempty" \. COMMIT; SELECT b, c FROM forcetest WHERE a = 1; -- should succeed, FORCE_NULL and FORCE_NOT_NULL can be both specified BEGIN; COPY forcetest (a, b, c, d) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL(c,d), FORCE_NULL(c,d)); -2,'a',,"" +2,'a',,"notempty" \. COMMIT; SELECT c, d FROM forcetest WHERE a = 2; -- should fail with not-null constraint violation BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NULL(b), FORCE_NOT_NULL(c)); -3,,"" +3,,"notempty" \. ROLLBACK; -- should fail with "not referenced by COPY" error diff --git a/src/test/regress/sql/create_am.sql b/src/test/regress/sql/create_am.sql index 97df244d17..869de81ddf 100644 --- a/src/test/regress/sql/create_am.sql +++ b/src/test/regress/sql/create_am.sql @@ -205,7 +205,7 @@ ROLLBACK; -- Third, check that we can neither create a table using a nonexistent -- AM, nor using an index AM -CREATE TABLE i_am_a_failure() USING ""; +CREATE TABLE i_am_a_failure() USING "notempty"; CREATE TABLE i_am_a_failure() USING i_do_not_exist_am; CREATE TABLE i_am_a_failure() USING "I do not exist AM"; CREATE TABLE i_am_a_failure() USING "btree"; libpg_query-13-2.1.0/pg_query.h000066400000000000000000000065651413137616400163030ustar00rootroot00000000000000#ifndef PG_QUERY_H #define PG_QUERY_H #include typedef struct { char* message; // exception message char* funcname; // source function of exception (e.g. SearchSysCache) char* filename; // source of exception (e.g. parse.l) int lineno; // source of exception (e.g. 104) int cursorpos; // char in query at which exception occurred char* context; // additional context (optional, can be NULL) } PgQueryError; typedef struct { unsigned int len; char* data; } PgQueryProtobuf; typedef struct { PgQueryProtobuf pbuf; char* stderr_buffer; PgQueryError* error; } PgQueryScanResult; typedef struct { char* parse_tree; char* stderr_buffer; PgQueryError* error; } PgQueryParseResult; typedef struct { PgQueryProtobuf parse_tree; char* stderr_buffer; PgQueryError* error; } PgQueryProtobufParseResult; typedef struct { int stmt_location; int stmt_len; } PgQuerySplitStmt; typedef struct { PgQuerySplitStmt **stmts; int n_stmts; char* stderr_buffer; PgQueryError* error; } PgQuerySplitResult; typedef struct { char* query; PgQueryError* error; } PgQueryDeparseResult; typedef struct { char* plpgsql_funcs; PgQueryError* error; } PgQueryPlpgsqlParseResult; typedef struct { uint64_t fingerprint; char* fingerprint_str; char* stderr_buffer; PgQueryError* error; } PgQueryFingerprintResult; typedef struct { char* normalized_query; PgQueryError* error; } PgQueryNormalizeResult; #ifdef __cplusplus extern "C" { #endif PgQueryNormalizeResult pg_query_normalize(const char* input); PgQueryScanResult pg_query_scan(const char* input); PgQueryParseResult pg_query_parse(const char* input); PgQueryProtobufParseResult pg_query_parse_protobuf(const char* input); PgQueryPlpgsqlParseResult pg_query_parse_plpgsql(const char* input); PgQueryFingerprintResult pg_query_fingerprint(const char* input); // Use pg_query_split_with_scanner when you need to split statements that may // contain parse errors, otherwise pg_query_split_with_parser is recommended // for improved accuracy due the parser adding additional token handling. // // Note that we try to support special cases like comments, strings containing // ";" on both, as well as oddities like "CREATE RULE .. (SELECT 1; SELECT 2);" // which is treated as as single statement. PgQuerySplitResult pg_query_split_with_scanner(const char *input); PgQuerySplitResult pg_query_split_with_parser(const char *input); PgQueryDeparseResult pg_query_deparse_protobuf(PgQueryProtobuf parse_tree); void pg_query_free_normalize_result(PgQueryNormalizeResult result); void pg_query_free_scan_result(PgQueryScanResult result); void pg_query_free_parse_result(PgQueryParseResult result); void pg_query_free_split_result(PgQuerySplitResult result); void pg_query_free_deparse_result(PgQueryDeparseResult result); void pg_query_free_protobuf_parse_result(PgQueryProtobufParseResult result); void pg_query_free_plpgsql_parse_result(PgQueryPlpgsqlParseResult result); void pg_query_free_fingerprint_result(PgQueryFingerprintResult result); // Optional, cleans up the top-level memory context (automatically done for threads that exit) void pg_query_exit(void); // Postgres version information #define PG_VERSION "13.3" #define PG_MAJORVERSION "13" #define PG_VERSION_NUM 130003 // Deprecated APIs below void pg_query_init(void); // Deprecated as of 9.5-1.4.1, this is now run automatically as needed #ifdef __cplusplus } #endif #endif libpg_query-13-2.1.0/protobuf/000077500000000000000000000000001413137616400161235ustar00rootroot00000000000000libpg_query-13-2.1.0/protobuf/pg_query.pb-c.c000066400000000000000000044337621413137616400207650ustar00rootroot00000000000000/* Generated by the protocol buffer compiler. DO NOT EDIT! */ /* Generated from: protobuf/pg_query.proto */ /* Do not generate deprecated warnings for self */ #ifndef PROTOBUF_C__NO_DEPRECATED #define PROTOBUF_C__NO_DEPRECATED #endif #include "protobuf/pg_query.pb-c.h" void pg_query__parse_result__init (PgQuery__ParseResult *message) { static const PgQuery__ParseResult init_value = PG_QUERY__PARSE_RESULT__INIT; *message = init_value; } size_t pg_query__parse_result__get_packed_size (const PgQuery__ParseResult *message) { assert(message->base.descriptor == &pg_query__parse_result__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__parse_result__pack (const PgQuery__ParseResult *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__parse_result__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__parse_result__pack_to_buffer (const PgQuery__ParseResult *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__parse_result__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ParseResult * pg_query__parse_result__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ParseResult *) protobuf_c_message_unpack (&pg_query__parse_result__descriptor, allocator, len, data); } void pg_query__parse_result__free_unpacked (PgQuery__ParseResult *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__parse_result__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__scan_result__init (PgQuery__ScanResult *message) { static const PgQuery__ScanResult init_value = PG_QUERY__SCAN_RESULT__INIT; *message = init_value; } size_t pg_query__scan_result__get_packed_size (const PgQuery__ScanResult *message) { assert(message->base.descriptor == &pg_query__scan_result__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__scan_result__pack (const PgQuery__ScanResult *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__scan_result__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__scan_result__pack_to_buffer (const PgQuery__ScanResult *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__scan_result__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ScanResult * pg_query__scan_result__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ScanResult *) protobuf_c_message_unpack (&pg_query__scan_result__descriptor, allocator, len, data); } void pg_query__scan_result__free_unpacked (PgQuery__ScanResult *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__scan_result__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__node__init (PgQuery__Node *message) { static const PgQuery__Node init_value = PG_QUERY__NODE__INIT; *message = init_value; } size_t pg_query__node__get_packed_size (const PgQuery__Node *message) { assert(message->base.descriptor == &pg_query__node__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__node__pack (const PgQuery__Node *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__node__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__node__pack_to_buffer (const PgQuery__Node *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__node__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Node * pg_query__node__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Node *) protobuf_c_message_unpack (&pg_query__node__descriptor, allocator, len, data); } void pg_query__node__free_unpacked (PgQuery__Node *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__node__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__integer__init (PgQuery__Integer *message) { static const PgQuery__Integer init_value = PG_QUERY__INTEGER__INIT; *message = init_value; } size_t pg_query__integer__get_packed_size (const PgQuery__Integer *message) { assert(message->base.descriptor == &pg_query__integer__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__integer__pack (const PgQuery__Integer *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__integer__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__integer__pack_to_buffer (const PgQuery__Integer *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__integer__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Integer * pg_query__integer__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Integer *) protobuf_c_message_unpack (&pg_query__integer__descriptor, allocator, len, data); } void pg_query__integer__free_unpacked (PgQuery__Integer *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__integer__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__float__init (PgQuery__Float *message) { static const PgQuery__Float init_value = PG_QUERY__FLOAT__INIT; *message = init_value; } size_t pg_query__float__get_packed_size (const PgQuery__Float *message) { assert(message->base.descriptor == &pg_query__float__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__float__pack (const PgQuery__Float *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__float__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__float__pack_to_buffer (const PgQuery__Float *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__float__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Float * pg_query__float__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Float *) protobuf_c_message_unpack (&pg_query__float__descriptor, allocator, len, data); } void pg_query__float__free_unpacked (PgQuery__Float *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__float__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__string__init (PgQuery__String *message) { static const PgQuery__String init_value = PG_QUERY__STRING__INIT; *message = init_value; } size_t pg_query__string__get_packed_size (const PgQuery__String *message) { assert(message->base.descriptor == &pg_query__string__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__string__pack (const PgQuery__String *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__string__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__string__pack_to_buffer (const PgQuery__String *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__string__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__String * pg_query__string__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__String *) protobuf_c_message_unpack (&pg_query__string__descriptor, allocator, len, data); } void pg_query__string__free_unpacked (PgQuery__String *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__string__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__bit_string__init (PgQuery__BitString *message) { static const PgQuery__BitString init_value = PG_QUERY__BIT_STRING__INIT; *message = init_value; } size_t pg_query__bit_string__get_packed_size (const PgQuery__BitString *message) { assert(message->base.descriptor == &pg_query__bit_string__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__bit_string__pack (const PgQuery__BitString *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__bit_string__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__bit_string__pack_to_buffer (const PgQuery__BitString *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__bit_string__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__BitString * pg_query__bit_string__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__BitString *) protobuf_c_message_unpack (&pg_query__bit_string__descriptor, allocator, len, data); } void pg_query__bit_string__free_unpacked (PgQuery__BitString *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__bit_string__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__null__init (PgQuery__Null *message) { static const PgQuery__Null init_value = PG_QUERY__NULL__INIT; *message = init_value; } size_t pg_query__null__get_packed_size (const PgQuery__Null *message) { assert(message->base.descriptor == &pg_query__null__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__null__pack (const PgQuery__Null *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__null__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__null__pack_to_buffer (const PgQuery__Null *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__null__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Null * pg_query__null__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Null *) protobuf_c_message_unpack (&pg_query__null__descriptor, allocator, len, data); } void pg_query__null__free_unpacked (PgQuery__Null *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__null__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__list__init (PgQuery__List *message) { static const PgQuery__List init_value = PG_QUERY__LIST__INIT; *message = init_value; } size_t pg_query__list__get_packed_size (const PgQuery__List *message) { assert(message->base.descriptor == &pg_query__list__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__list__pack (const PgQuery__List *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__list__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__list__pack_to_buffer (const PgQuery__List *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__list__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__List * pg_query__list__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__List *) protobuf_c_message_unpack (&pg_query__list__descriptor, allocator, len, data); } void pg_query__list__free_unpacked (PgQuery__List *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__list__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__oid_list__init (PgQuery__OidList *message) { static const PgQuery__OidList init_value = PG_QUERY__OID_LIST__INIT; *message = init_value; } size_t pg_query__oid_list__get_packed_size (const PgQuery__OidList *message) { assert(message->base.descriptor == &pg_query__oid_list__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__oid_list__pack (const PgQuery__OidList *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__oid_list__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__oid_list__pack_to_buffer (const PgQuery__OidList *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__oid_list__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__OidList * pg_query__oid_list__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__OidList *) protobuf_c_message_unpack (&pg_query__oid_list__descriptor, allocator, len, data); } void pg_query__oid_list__free_unpacked (PgQuery__OidList *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__oid_list__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__int_list__init (PgQuery__IntList *message) { static const PgQuery__IntList init_value = PG_QUERY__INT_LIST__INIT; *message = init_value; } size_t pg_query__int_list__get_packed_size (const PgQuery__IntList *message) { assert(message->base.descriptor == &pg_query__int_list__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__int_list__pack (const PgQuery__IntList *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__int_list__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__int_list__pack_to_buffer (const PgQuery__IntList *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__int_list__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__IntList * pg_query__int_list__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__IntList *) protobuf_c_message_unpack (&pg_query__int_list__descriptor, allocator, len, data); } void pg_query__int_list__free_unpacked (PgQuery__IntList *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__int_list__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alias__init (PgQuery__Alias *message) { static const PgQuery__Alias init_value = PG_QUERY__ALIAS__INIT; *message = init_value; } size_t pg_query__alias__get_packed_size (const PgQuery__Alias *message) { assert(message->base.descriptor == &pg_query__alias__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alias__pack (const PgQuery__Alias *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alias__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alias__pack_to_buffer (const PgQuery__Alias *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alias__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Alias * pg_query__alias__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Alias *) protobuf_c_message_unpack (&pg_query__alias__descriptor, allocator, len, data); } void pg_query__alias__free_unpacked (PgQuery__Alias *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alias__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_var__init (PgQuery__RangeVar *message) { static const PgQuery__RangeVar init_value = PG_QUERY__RANGE_VAR__INIT; *message = init_value; } size_t pg_query__range_var__get_packed_size (const PgQuery__RangeVar *message) { assert(message->base.descriptor == &pg_query__range_var__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_var__pack (const PgQuery__RangeVar *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_var__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_var__pack_to_buffer (const PgQuery__RangeVar *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_var__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeVar * pg_query__range_var__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeVar *) protobuf_c_message_unpack (&pg_query__range_var__descriptor, allocator, len, data); } void pg_query__range_var__free_unpacked (PgQuery__RangeVar *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_var__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__table_func__init (PgQuery__TableFunc *message) { static const PgQuery__TableFunc init_value = PG_QUERY__TABLE_FUNC__INIT; *message = init_value; } size_t pg_query__table_func__get_packed_size (const PgQuery__TableFunc *message) { assert(message->base.descriptor == &pg_query__table_func__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__table_func__pack (const PgQuery__TableFunc *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__table_func__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__table_func__pack_to_buffer (const PgQuery__TableFunc *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__table_func__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TableFunc * pg_query__table_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TableFunc *) protobuf_c_message_unpack (&pg_query__table_func__descriptor, allocator, len, data); } void pg_query__table_func__free_unpacked (PgQuery__TableFunc *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__table_func__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__expr__init (PgQuery__Expr *message) { static const PgQuery__Expr init_value = PG_QUERY__EXPR__INIT; *message = init_value; } size_t pg_query__expr__get_packed_size (const PgQuery__Expr *message) { assert(message->base.descriptor == &pg_query__expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__expr__pack (const PgQuery__Expr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__expr__pack_to_buffer (const PgQuery__Expr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Expr * pg_query__expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Expr *) protobuf_c_message_unpack (&pg_query__expr__descriptor, allocator, len, data); } void pg_query__expr__free_unpacked (PgQuery__Expr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__var__init (PgQuery__Var *message) { static const PgQuery__Var init_value = PG_QUERY__VAR__INIT; *message = init_value; } size_t pg_query__var__get_packed_size (const PgQuery__Var *message) { assert(message->base.descriptor == &pg_query__var__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__var__pack (const PgQuery__Var *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__var__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__var__pack_to_buffer (const PgQuery__Var *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__var__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Var * pg_query__var__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Var *) protobuf_c_message_unpack (&pg_query__var__descriptor, allocator, len, data); } void pg_query__var__free_unpacked (PgQuery__Var *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__var__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__param__init (PgQuery__Param *message) { static const PgQuery__Param init_value = PG_QUERY__PARAM__INIT; *message = init_value; } size_t pg_query__param__get_packed_size (const PgQuery__Param *message) { assert(message->base.descriptor == &pg_query__param__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__param__pack (const PgQuery__Param *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__param__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__param__pack_to_buffer (const PgQuery__Param *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__param__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Param * pg_query__param__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Param *) protobuf_c_message_unpack (&pg_query__param__descriptor, allocator, len, data); } void pg_query__param__free_unpacked (PgQuery__Param *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__param__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__aggref__init (PgQuery__Aggref *message) { static const PgQuery__Aggref init_value = PG_QUERY__AGGREF__INIT; *message = init_value; } size_t pg_query__aggref__get_packed_size (const PgQuery__Aggref *message) { assert(message->base.descriptor == &pg_query__aggref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__aggref__pack (const PgQuery__Aggref *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__aggref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__aggref__pack_to_buffer (const PgQuery__Aggref *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__aggref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Aggref * pg_query__aggref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Aggref *) protobuf_c_message_unpack (&pg_query__aggref__descriptor, allocator, len, data); } void pg_query__aggref__free_unpacked (PgQuery__Aggref *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__aggref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__grouping_func__init (PgQuery__GroupingFunc *message) { static const PgQuery__GroupingFunc init_value = PG_QUERY__GROUPING_FUNC__INIT; *message = init_value; } size_t pg_query__grouping_func__get_packed_size (const PgQuery__GroupingFunc *message) { assert(message->base.descriptor == &pg_query__grouping_func__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__grouping_func__pack (const PgQuery__GroupingFunc *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__grouping_func__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__grouping_func__pack_to_buffer (const PgQuery__GroupingFunc *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__grouping_func__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__GroupingFunc * pg_query__grouping_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__GroupingFunc *) protobuf_c_message_unpack (&pg_query__grouping_func__descriptor, allocator, len, data); } void pg_query__grouping_func__free_unpacked (PgQuery__GroupingFunc *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__grouping_func__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__window_func__init (PgQuery__WindowFunc *message) { static const PgQuery__WindowFunc init_value = PG_QUERY__WINDOW_FUNC__INIT; *message = init_value; } size_t pg_query__window_func__get_packed_size (const PgQuery__WindowFunc *message) { assert(message->base.descriptor == &pg_query__window_func__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__window_func__pack (const PgQuery__WindowFunc *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__window_func__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__window_func__pack_to_buffer (const PgQuery__WindowFunc *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__window_func__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WindowFunc * pg_query__window_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WindowFunc *) protobuf_c_message_unpack (&pg_query__window_func__descriptor, allocator, len, data); } void pg_query__window_func__free_unpacked (PgQuery__WindowFunc *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__window_func__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__subscripting_ref__init (PgQuery__SubscriptingRef *message) { static const PgQuery__SubscriptingRef init_value = PG_QUERY__SUBSCRIPTING_REF__INIT; *message = init_value; } size_t pg_query__subscripting_ref__get_packed_size (const PgQuery__SubscriptingRef *message) { assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__subscripting_ref__pack (const PgQuery__SubscriptingRef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__subscripting_ref__pack_to_buffer (const PgQuery__SubscriptingRef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SubscriptingRef * pg_query__subscripting_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SubscriptingRef *) protobuf_c_message_unpack (&pg_query__subscripting_ref__descriptor, allocator, len, data); } void pg_query__subscripting_ref__free_unpacked (PgQuery__SubscriptingRef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__subscripting_ref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__func_expr__init (PgQuery__FuncExpr *message) { static const PgQuery__FuncExpr init_value = PG_QUERY__FUNC_EXPR__INIT; *message = init_value; } size_t pg_query__func_expr__get_packed_size (const PgQuery__FuncExpr *message) { assert(message->base.descriptor == &pg_query__func_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__func_expr__pack (const PgQuery__FuncExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__func_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__func_expr__pack_to_buffer (const PgQuery__FuncExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__func_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FuncExpr * pg_query__func_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FuncExpr *) protobuf_c_message_unpack (&pg_query__func_expr__descriptor, allocator, len, data); } void pg_query__func_expr__free_unpacked (PgQuery__FuncExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__func_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__named_arg_expr__init (PgQuery__NamedArgExpr *message) { static const PgQuery__NamedArgExpr init_value = PG_QUERY__NAMED_ARG_EXPR__INIT; *message = init_value; } size_t pg_query__named_arg_expr__get_packed_size (const PgQuery__NamedArgExpr *message) { assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__named_arg_expr__pack (const PgQuery__NamedArgExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__named_arg_expr__pack_to_buffer (const PgQuery__NamedArgExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__NamedArgExpr * pg_query__named_arg_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__NamedArgExpr *) protobuf_c_message_unpack (&pg_query__named_arg_expr__descriptor, allocator, len, data); } void pg_query__named_arg_expr__free_unpacked (PgQuery__NamedArgExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__named_arg_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__op_expr__init (PgQuery__OpExpr *message) { static const PgQuery__OpExpr init_value = PG_QUERY__OP_EXPR__INIT; *message = init_value; } size_t pg_query__op_expr__get_packed_size (const PgQuery__OpExpr *message) { assert(message->base.descriptor == &pg_query__op_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__op_expr__pack (const PgQuery__OpExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__op_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__op_expr__pack_to_buffer (const PgQuery__OpExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__op_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__OpExpr * pg_query__op_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__OpExpr *) protobuf_c_message_unpack (&pg_query__op_expr__descriptor, allocator, len, data); } void pg_query__op_expr__free_unpacked (PgQuery__OpExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__op_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__distinct_expr__init (PgQuery__DistinctExpr *message) { static const PgQuery__DistinctExpr init_value = PG_QUERY__DISTINCT_EXPR__INIT; *message = init_value; } size_t pg_query__distinct_expr__get_packed_size (const PgQuery__DistinctExpr *message) { assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__distinct_expr__pack (const PgQuery__DistinctExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__distinct_expr__pack_to_buffer (const PgQuery__DistinctExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DistinctExpr * pg_query__distinct_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DistinctExpr *) protobuf_c_message_unpack (&pg_query__distinct_expr__descriptor, allocator, len, data); } void pg_query__distinct_expr__free_unpacked (PgQuery__DistinctExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__distinct_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__null_if_expr__init (PgQuery__NullIfExpr *message) { static const PgQuery__NullIfExpr init_value = PG_QUERY__NULL_IF_EXPR__INIT; *message = init_value; } size_t pg_query__null_if_expr__get_packed_size (const PgQuery__NullIfExpr *message) { assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__null_if_expr__pack (const PgQuery__NullIfExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__null_if_expr__pack_to_buffer (const PgQuery__NullIfExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__NullIfExpr * pg_query__null_if_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__NullIfExpr *) protobuf_c_message_unpack (&pg_query__null_if_expr__descriptor, allocator, len, data); } void pg_query__null_if_expr__free_unpacked (PgQuery__NullIfExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__null_if_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__scalar_array_op_expr__init (PgQuery__ScalarArrayOpExpr *message) { static const PgQuery__ScalarArrayOpExpr init_value = PG_QUERY__SCALAR_ARRAY_OP_EXPR__INIT; *message = init_value; } size_t pg_query__scalar_array_op_expr__get_packed_size (const PgQuery__ScalarArrayOpExpr *message) { assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__scalar_array_op_expr__pack (const PgQuery__ScalarArrayOpExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__scalar_array_op_expr__pack_to_buffer (const PgQuery__ScalarArrayOpExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ScalarArrayOpExpr * pg_query__scalar_array_op_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ScalarArrayOpExpr *) protobuf_c_message_unpack (&pg_query__scalar_array_op_expr__descriptor, allocator, len, data); } void pg_query__scalar_array_op_expr__free_unpacked (PgQuery__ScalarArrayOpExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__scalar_array_op_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__bool_expr__init (PgQuery__BoolExpr *message) { static const PgQuery__BoolExpr init_value = PG_QUERY__BOOL_EXPR__INIT; *message = init_value; } size_t pg_query__bool_expr__get_packed_size (const PgQuery__BoolExpr *message) { assert(message->base.descriptor == &pg_query__bool_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__bool_expr__pack (const PgQuery__BoolExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__bool_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__bool_expr__pack_to_buffer (const PgQuery__BoolExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__bool_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__BoolExpr * pg_query__bool_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__BoolExpr *) protobuf_c_message_unpack (&pg_query__bool_expr__descriptor, allocator, len, data); } void pg_query__bool_expr__free_unpacked (PgQuery__BoolExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__bool_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sub_link__init (PgQuery__SubLink *message) { static const PgQuery__SubLink init_value = PG_QUERY__SUB_LINK__INIT; *message = init_value; } size_t pg_query__sub_link__get_packed_size (const PgQuery__SubLink *message) { assert(message->base.descriptor == &pg_query__sub_link__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sub_link__pack (const PgQuery__SubLink *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sub_link__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sub_link__pack_to_buffer (const PgQuery__SubLink *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sub_link__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SubLink * pg_query__sub_link__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SubLink *) protobuf_c_message_unpack (&pg_query__sub_link__descriptor, allocator, len, data); } void pg_query__sub_link__free_unpacked (PgQuery__SubLink *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sub_link__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sub_plan__init (PgQuery__SubPlan *message) { static const PgQuery__SubPlan init_value = PG_QUERY__SUB_PLAN__INIT; *message = init_value; } size_t pg_query__sub_plan__get_packed_size (const PgQuery__SubPlan *message) { assert(message->base.descriptor == &pg_query__sub_plan__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sub_plan__pack (const PgQuery__SubPlan *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sub_plan__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sub_plan__pack_to_buffer (const PgQuery__SubPlan *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sub_plan__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SubPlan * pg_query__sub_plan__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SubPlan *) protobuf_c_message_unpack (&pg_query__sub_plan__descriptor, allocator, len, data); } void pg_query__sub_plan__free_unpacked (PgQuery__SubPlan *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sub_plan__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alternative_sub_plan__init (PgQuery__AlternativeSubPlan *message) { static const PgQuery__AlternativeSubPlan init_value = PG_QUERY__ALTERNATIVE_SUB_PLAN__INIT; *message = init_value; } size_t pg_query__alternative_sub_plan__get_packed_size (const PgQuery__AlternativeSubPlan *message) { assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alternative_sub_plan__pack (const PgQuery__AlternativeSubPlan *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alternative_sub_plan__pack_to_buffer (const PgQuery__AlternativeSubPlan *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlternativeSubPlan * pg_query__alternative_sub_plan__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlternativeSubPlan *) protobuf_c_message_unpack (&pg_query__alternative_sub_plan__descriptor, allocator, len, data); } void pg_query__alternative_sub_plan__free_unpacked (PgQuery__AlternativeSubPlan *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alternative_sub_plan__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__field_select__init (PgQuery__FieldSelect *message) { static const PgQuery__FieldSelect init_value = PG_QUERY__FIELD_SELECT__INIT; *message = init_value; } size_t pg_query__field_select__get_packed_size (const PgQuery__FieldSelect *message) { assert(message->base.descriptor == &pg_query__field_select__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__field_select__pack (const PgQuery__FieldSelect *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__field_select__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__field_select__pack_to_buffer (const PgQuery__FieldSelect *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__field_select__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FieldSelect * pg_query__field_select__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FieldSelect *) protobuf_c_message_unpack (&pg_query__field_select__descriptor, allocator, len, data); } void pg_query__field_select__free_unpacked (PgQuery__FieldSelect *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__field_select__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__field_store__init (PgQuery__FieldStore *message) { static const PgQuery__FieldStore init_value = PG_QUERY__FIELD_STORE__INIT; *message = init_value; } size_t pg_query__field_store__get_packed_size (const PgQuery__FieldStore *message) { assert(message->base.descriptor == &pg_query__field_store__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__field_store__pack (const PgQuery__FieldStore *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__field_store__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__field_store__pack_to_buffer (const PgQuery__FieldStore *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__field_store__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FieldStore * pg_query__field_store__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FieldStore *) protobuf_c_message_unpack (&pg_query__field_store__descriptor, allocator, len, data); } void pg_query__field_store__free_unpacked (PgQuery__FieldStore *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__field_store__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__relabel_type__init (PgQuery__RelabelType *message) { static const PgQuery__RelabelType init_value = PG_QUERY__RELABEL_TYPE__INIT; *message = init_value; } size_t pg_query__relabel_type__get_packed_size (const PgQuery__RelabelType *message) { assert(message->base.descriptor == &pg_query__relabel_type__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__relabel_type__pack (const PgQuery__RelabelType *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__relabel_type__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__relabel_type__pack_to_buffer (const PgQuery__RelabelType *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__relabel_type__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RelabelType * pg_query__relabel_type__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RelabelType *) protobuf_c_message_unpack (&pg_query__relabel_type__descriptor, allocator, len, data); } void pg_query__relabel_type__free_unpacked (PgQuery__RelabelType *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__relabel_type__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__coerce_via_io__init (PgQuery__CoerceViaIO *message) { static const PgQuery__CoerceViaIO init_value = PG_QUERY__COERCE_VIA_IO__INIT; *message = init_value; } size_t pg_query__coerce_via_io__get_packed_size (const PgQuery__CoerceViaIO *message) { assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__coerce_via_io__pack (const PgQuery__CoerceViaIO *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__coerce_via_io__pack_to_buffer (const PgQuery__CoerceViaIO *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CoerceViaIO * pg_query__coerce_via_io__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CoerceViaIO *) protobuf_c_message_unpack (&pg_query__coerce_via_io__descriptor, allocator, len, data); } void pg_query__coerce_via_io__free_unpacked (PgQuery__CoerceViaIO *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__coerce_via_io__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__array_coerce_expr__init (PgQuery__ArrayCoerceExpr *message) { static const PgQuery__ArrayCoerceExpr init_value = PG_QUERY__ARRAY_COERCE_EXPR__INIT; *message = init_value; } size_t pg_query__array_coerce_expr__get_packed_size (const PgQuery__ArrayCoerceExpr *message) { assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__array_coerce_expr__pack (const PgQuery__ArrayCoerceExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__array_coerce_expr__pack_to_buffer (const PgQuery__ArrayCoerceExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ArrayCoerceExpr * pg_query__array_coerce_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ArrayCoerceExpr *) protobuf_c_message_unpack (&pg_query__array_coerce_expr__descriptor, allocator, len, data); } void pg_query__array_coerce_expr__free_unpacked (PgQuery__ArrayCoerceExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__array_coerce_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__convert_rowtype_expr__init (PgQuery__ConvertRowtypeExpr *message) { static const PgQuery__ConvertRowtypeExpr init_value = PG_QUERY__CONVERT_ROWTYPE_EXPR__INIT; *message = init_value; } size_t pg_query__convert_rowtype_expr__get_packed_size (const PgQuery__ConvertRowtypeExpr *message) { assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__convert_rowtype_expr__pack (const PgQuery__ConvertRowtypeExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__convert_rowtype_expr__pack_to_buffer (const PgQuery__ConvertRowtypeExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ConvertRowtypeExpr * pg_query__convert_rowtype_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ConvertRowtypeExpr *) protobuf_c_message_unpack (&pg_query__convert_rowtype_expr__descriptor, allocator, len, data); } void pg_query__convert_rowtype_expr__free_unpacked (PgQuery__ConvertRowtypeExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__convert_rowtype_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__collate_expr__init (PgQuery__CollateExpr *message) { static const PgQuery__CollateExpr init_value = PG_QUERY__COLLATE_EXPR__INIT; *message = init_value; } size_t pg_query__collate_expr__get_packed_size (const PgQuery__CollateExpr *message) { assert(message->base.descriptor == &pg_query__collate_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__collate_expr__pack (const PgQuery__CollateExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__collate_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__collate_expr__pack_to_buffer (const PgQuery__CollateExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__collate_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CollateExpr * pg_query__collate_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CollateExpr *) protobuf_c_message_unpack (&pg_query__collate_expr__descriptor, allocator, len, data); } void pg_query__collate_expr__free_unpacked (PgQuery__CollateExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__collate_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__case_expr__init (PgQuery__CaseExpr *message) { static const PgQuery__CaseExpr init_value = PG_QUERY__CASE_EXPR__INIT; *message = init_value; } size_t pg_query__case_expr__get_packed_size (const PgQuery__CaseExpr *message) { assert(message->base.descriptor == &pg_query__case_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__case_expr__pack (const PgQuery__CaseExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__case_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__case_expr__pack_to_buffer (const PgQuery__CaseExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__case_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CaseExpr * pg_query__case_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CaseExpr *) protobuf_c_message_unpack (&pg_query__case_expr__descriptor, allocator, len, data); } void pg_query__case_expr__free_unpacked (PgQuery__CaseExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__case_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__case_when__init (PgQuery__CaseWhen *message) { static const PgQuery__CaseWhen init_value = PG_QUERY__CASE_WHEN__INIT; *message = init_value; } size_t pg_query__case_when__get_packed_size (const PgQuery__CaseWhen *message) { assert(message->base.descriptor == &pg_query__case_when__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__case_when__pack (const PgQuery__CaseWhen *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__case_when__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__case_when__pack_to_buffer (const PgQuery__CaseWhen *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__case_when__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CaseWhen * pg_query__case_when__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CaseWhen *) protobuf_c_message_unpack (&pg_query__case_when__descriptor, allocator, len, data); } void pg_query__case_when__free_unpacked (PgQuery__CaseWhen *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__case_when__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__case_test_expr__init (PgQuery__CaseTestExpr *message) { static const PgQuery__CaseTestExpr init_value = PG_QUERY__CASE_TEST_EXPR__INIT; *message = init_value; } size_t pg_query__case_test_expr__get_packed_size (const PgQuery__CaseTestExpr *message) { assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__case_test_expr__pack (const PgQuery__CaseTestExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__case_test_expr__pack_to_buffer (const PgQuery__CaseTestExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CaseTestExpr * pg_query__case_test_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CaseTestExpr *) protobuf_c_message_unpack (&pg_query__case_test_expr__descriptor, allocator, len, data); } void pg_query__case_test_expr__free_unpacked (PgQuery__CaseTestExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__case_test_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__array_expr__init (PgQuery__ArrayExpr *message) { static const PgQuery__ArrayExpr init_value = PG_QUERY__ARRAY_EXPR__INIT; *message = init_value; } size_t pg_query__array_expr__get_packed_size (const PgQuery__ArrayExpr *message) { assert(message->base.descriptor == &pg_query__array_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__array_expr__pack (const PgQuery__ArrayExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__array_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__array_expr__pack_to_buffer (const PgQuery__ArrayExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__array_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ArrayExpr * pg_query__array_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ArrayExpr *) protobuf_c_message_unpack (&pg_query__array_expr__descriptor, allocator, len, data); } void pg_query__array_expr__free_unpacked (PgQuery__ArrayExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__array_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__row_expr__init (PgQuery__RowExpr *message) { static const PgQuery__RowExpr init_value = PG_QUERY__ROW_EXPR__INIT; *message = init_value; } size_t pg_query__row_expr__get_packed_size (const PgQuery__RowExpr *message) { assert(message->base.descriptor == &pg_query__row_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__row_expr__pack (const PgQuery__RowExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__row_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__row_expr__pack_to_buffer (const PgQuery__RowExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__row_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RowExpr * pg_query__row_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RowExpr *) protobuf_c_message_unpack (&pg_query__row_expr__descriptor, allocator, len, data); } void pg_query__row_expr__free_unpacked (PgQuery__RowExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__row_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__row_compare_expr__init (PgQuery__RowCompareExpr *message) { static const PgQuery__RowCompareExpr init_value = PG_QUERY__ROW_COMPARE_EXPR__INIT; *message = init_value; } size_t pg_query__row_compare_expr__get_packed_size (const PgQuery__RowCompareExpr *message) { assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__row_compare_expr__pack (const PgQuery__RowCompareExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__row_compare_expr__pack_to_buffer (const PgQuery__RowCompareExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RowCompareExpr * pg_query__row_compare_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RowCompareExpr *) protobuf_c_message_unpack (&pg_query__row_compare_expr__descriptor, allocator, len, data); } void pg_query__row_compare_expr__free_unpacked (PgQuery__RowCompareExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__row_compare_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__coalesce_expr__init (PgQuery__CoalesceExpr *message) { static const PgQuery__CoalesceExpr init_value = PG_QUERY__COALESCE_EXPR__INIT; *message = init_value; } size_t pg_query__coalesce_expr__get_packed_size (const PgQuery__CoalesceExpr *message) { assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__coalesce_expr__pack (const PgQuery__CoalesceExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__coalesce_expr__pack_to_buffer (const PgQuery__CoalesceExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CoalesceExpr * pg_query__coalesce_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CoalesceExpr *) protobuf_c_message_unpack (&pg_query__coalesce_expr__descriptor, allocator, len, data); } void pg_query__coalesce_expr__free_unpacked (PgQuery__CoalesceExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__coalesce_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__min_max_expr__init (PgQuery__MinMaxExpr *message) { static const PgQuery__MinMaxExpr init_value = PG_QUERY__MIN_MAX_EXPR__INIT; *message = init_value; } size_t pg_query__min_max_expr__get_packed_size (const PgQuery__MinMaxExpr *message) { assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__min_max_expr__pack (const PgQuery__MinMaxExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__min_max_expr__pack_to_buffer (const PgQuery__MinMaxExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__MinMaxExpr * pg_query__min_max_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__MinMaxExpr *) protobuf_c_message_unpack (&pg_query__min_max_expr__descriptor, allocator, len, data); } void pg_query__min_max_expr__free_unpacked (PgQuery__MinMaxExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__min_max_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sqlvalue_function__init (PgQuery__SQLValueFunction *message) { static const PgQuery__SQLValueFunction init_value = PG_QUERY__SQLVALUE_FUNCTION__INIT; *message = init_value; } size_t pg_query__sqlvalue_function__get_packed_size (const PgQuery__SQLValueFunction *message) { assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sqlvalue_function__pack (const PgQuery__SQLValueFunction *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sqlvalue_function__pack_to_buffer (const PgQuery__SQLValueFunction *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SQLValueFunction * pg_query__sqlvalue_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SQLValueFunction *) protobuf_c_message_unpack (&pg_query__sqlvalue_function__descriptor, allocator, len, data); } void pg_query__sqlvalue_function__free_unpacked (PgQuery__SQLValueFunction *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sqlvalue_function__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__xml_expr__init (PgQuery__XmlExpr *message) { static const PgQuery__XmlExpr init_value = PG_QUERY__XML_EXPR__INIT; *message = init_value; } size_t pg_query__xml_expr__get_packed_size (const PgQuery__XmlExpr *message) { assert(message->base.descriptor == &pg_query__xml_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__xml_expr__pack (const PgQuery__XmlExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__xml_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__xml_expr__pack_to_buffer (const PgQuery__XmlExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__xml_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__XmlExpr * pg_query__xml_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__XmlExpr *) protobuf_c_message_unpack (&pg_query__xml_expr__descriptor, allocator, len, data); } void pg_query__xml_expr__free_unpacked (PgQuery__XmlExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__xml_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__null_test__init (PgQuery__NullTest *message) { static const PgQuery__NullTest init_value = PG_QUERY__NULL_TEST__INIT; *message = init_value; } size_t pg_query__null_test__get_packed_size (const PgQuery__NullTest *message) { assert(message->base.descriptor == &pg_query__null_test__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__null_test__pack (const PgQuery__NullTest *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__null_test__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__null_test__pack_to_buffer (const PgQuery__NullTest *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__null_test__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__NullTest * pg_query__null_test__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__NullTest *) protobuf_c_message_unpack (&pg_query__null_test__descriptor, allocator, len, data); } void pg_query__null_test__free_unpacked (PgQuery__NullTest *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__null_test__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__boolean_test__init (PgQuery__BooleanTest *message) { static const PgQuery__BooleanTest init_value = PG_QUERY__BOOLEAN_TEST__INIT; *message = init_value; } size_t pg_query__boolean_test__get_packed_size (const PgQuery__BooleanTest *message) { assert(message->base.descriptor == &pg_query__boolean_test__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__boolean_test__pack (const PgQuery__BooleanTest *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__boolean_test__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__boolean_test__pack_to_buffer (const PgQuery__BooleanTest *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__boolean_test__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__BooleanTest * pg_query__boolean_test__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__BooleanTest *) protobuf_c_message_unpack (&pg_query__boolean_test__descriptor, allocator, len, data); } void pg_query__boolean_test__free_unpacked (PgQuery__BooleanTest *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__boolean_test__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__coerce_to_domain__init (PgQuery__CoerceToDomain *message) { static const PgQuery__CoerceToDomain init_value = PG_QUERY__COERCE_TO_DOMAIN__INIT; *message = init_value; } size_t pg_query__coerce_to_domain__get_packed_size (const PgQuery__CoerceToDomain *message) { assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__coerce_to_domain__pack (const PgQuery__CoerceToDomain *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__coerce_to_domain__pack_to_buffer (const PgQuery__CoerceToDomain *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CoerceToDomain * pg_query__coerce_to_domain__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CoerceToDomain *) protobuf_c_message_unpack (&pg_query__coerce_to_domain__descriptor, allocator, len, data); } void pg_query__coerce_to_domain__free_unpacked (PgQuery__CoerceToDomain *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__coerce_to_domain__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__coerce_to_domain_value__init (PgQuery__CoerceToDomainValue *message) { static const PgQuery__CoerceToDomainValue init_value = PG_QUERY__COERCE_TO_DOMAIN_VALUE__INIT; *message = init_value; } size_t pg_query__coerce_to_domain_value__get_packed_size (const PgQuery__CoerceToDomainValue *message) { assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__coerce_to_domain_value__pack (const PgQuery__CoerceToDomainValue *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__coerce_to_domain_value__pack_to_buffer (const PgQuery__CoerceToDomainValue *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CoerceToDomainValue * pg_query__coerce_to_domain_value__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CoerceToDomainValue *) protobuf_c_message_unpack (&pg_query__coerce_to_domain_value__descriptor, allocator, len, data); } void pg_query__coerce_to_domain_value__free_unpacked (PgQuery__CoerceToDomainValue *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__coerce_to_domain_value__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__set_to_default__init (PgQuery__SetToDefault *message) { static const PgQuery__SetToDefault init_value = PG_QUERY__SET_TO_DEFAULT__INIT; *message = init_value; } size_t pg_query__set_to_default__get_packed_size (const PgQuery__SetToDefault *message) { assert(message->base.descriptor == &pg_query__set_to_default__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__set_to_default__pack (const PgQuery__SetToDefault *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__set_to_default__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__set_to_default__pack_to_buffer (const PgQuery__SetToDefault *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__set_to_default__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SetToDefault * pg_query__set_to_default__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SetToDefault *) protobuf_c_message_unpack (&pg_query__set_to_default__descriptor, allocator, len, data); } void pg_query__set_to_default__free_unpacked (PgQuery__SetToDefault *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__set_to_default__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__current_of_expr__init (PgQuery__CurrentOfExpr *message) { static const PgQuery__CurrentOfExpr init_value = PG_QUERY__CURRENT_OF_EXPR__INIT; *message = init_value; } size_t pg_query__current_of_expr__get_packed_size (const PgQuery__CurrentOfExpr *message) { assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__current_of_expr__pack (const PgQuery__CurrentOfExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__current_of_expr__pack_to_buffer (const PgQuery__CurrentOfExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CurrentOfExpr * pg_query__current_of_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CurrentOfExpr *) protobuf_c_message_unpack (&pg_query__current_of_expr__descriptor, allocator, len, data); } void pg_query__current_of_expr__free_unpacked (PgQuery__CurrentOfExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__current_of_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__next_value_expr__init (PgQuery__NextValueExpr *message) { static const PgQuery__NextValueExpr init_value = PG_QUERY__NEXT_VALUE_EXPR__INIT; *message = init_value; } size_t pg_query__next_value_expr__get_packed_size (const PgQuery__NextValueExpr *message) { assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__next_value_expr__pack (const PgQuery__NextValueExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__next_value_expr__pack_to_buffer (const PgQuery__NextValueExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__NextValueExpr * pg_query__next_value_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__NextValueExpr *) protobuf_c_message_unpack (&pg_query__next_value_expr__descriptor, allocator, len, data); } void pg_query__next_value_expr__free_unpacked (PgQuery__NextValueExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__next_value_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__inference_elem__init (PgQuery__InferenceElem *message) { static const PgQuery__InferenceElem init_value = PG_QUERY__INFERENCE_ELEM__INIT; *message = init_value; } size_t pg_query__inference_elem__get_packed_size (const PgQuery__InferenceElem *message) { assert(message->base.descriptor == &pg_query__inference_elem__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__inference_elem__pack (const PgQuery__InferenceElem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__inference_elem__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__inference_elem__pack_to_buffer (const PgQuery__InferenceElem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__inference_elem__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__InferenceElem * pg_query__inference_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__InferenceElem *) protobuf_c_message_unpack (&pg_query__inference_elem__descriptor, allocator, len, data); } void pg_query__inference_elem__free_unpacked (PgQuery__InferenceElem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__inference_elem__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__target_entry__init (PgQuery__TargetEntry *message) { static const PgQuery__TargetEntry init_value = PG_QUERY__TARGET_ENTRY__INIT; *message = init_value; } size_t pg_query__target_entry__get_packed_size (const PgQuery__TargetEntry *message) { assert(message->base.descriptor == &pg_query__target_entry__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__target_entry__pack (const PgQuery__TargetEntry *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__target_entry__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__target_entry__pack_to_buffer (const PgQuery__TargetEntry *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__target_entry__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TargetEntry * pg_query__target_entry__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TargetEntry *) protobuf_c_message_unpack (&pg_query__target_entry__descriptor, allocator, len, data); } void pg_query__target_entry__free_unpacked (PgQuery__TargetEntry *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__target_entry__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_tbl_ref__init (PgQuery__RangeTblRef *message) { static const PgQuery__RangeTblRef init_value = PG_QUERY__RANGE_TBL_REF__INIT; *message = init_value; } size_t pg_query__range_tbl_ref__get_packed_size (const PgQuery__RangeTblRef *message) { assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_tbl_ref__pack (const PgQuery__RangeTblRef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_tbl_ref__pack_to_buffer (const PgQuery__RangeTblRef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTblRef * pg_query__range_tbl_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTblRef *) protobuf_c_message_unpack (&pg_query__range_tbl_ref__descriptor, allocator, len, data); } void pg_query__range_tbl_ref__free_unpacked (PgQuery__RangeTblRef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_tbl_ref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__join_expr__init (PgQuery__JoinExpr *message) { static const PgQuery__JoinExpr init_value = PG_QUERY__JOIN_EXPR__INIT; *message = init_value; } size_t pg_query__join_expr__get_packed_size (const PgQuery__JoinExpr *message) { assert(message->base.descriptor == &pg_query__join_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__join_expr__pack (const PgQuery__JoinExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__join_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__join_expr__pack_to_buffer (const PgQuery__JoinExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__join_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__JoinExpr * pg_query__join_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__JoinExpr *) protobuf_c_message_unpack (&pg_query__join_expr__descriptor, allocator, len, data); } void pg_query__join_expr__free_unpacked (PgQuery__JoinExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__join_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__from_expr__init (PgQuery__FromExpr *message) { static const PgQuery__FromExpr init_value = PG_QUERY__FROM_EXPR__INIT; *message = init_value; } size_t pg_query__from_expr__get_packed_size (const PgQuery__FromExpr *message) { assert(message->base.descriptor == &pg_query__from_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__from_expr__pack (const PgQuery__FromExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__from_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__from_expr__pack_to_buffer (const PgQuery__FromExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__from_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FromExpr * pg_query__from_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FromExpr *) protobuf_c_message_unpack (&pg_query__from_expr__descriptor, allocator, len, data); } void pg_query__from_expr__free_unpacked (PgQuery__FromExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__from_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__on_conflict_expr__init (PgQuery__OnConflictExpr *message) { static const PgQuery__OnConflictExpr init_value = PG_QUERY__ON_CONFLICT_EXPR__INIT; *message = init_value; } size_t pg_query__on_conflict_expr__get_packed_size (const PgQuery__OnConflictExpr *message) { assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__on_conflict_expr__pack (const PgQuery__OnConflictExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__on_conflict_expr__pack_to_buffer (const PgQuery__OnConflictExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__OnConflictExpr * pg_query__on_conflict_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__OnConflictExpr *) protobuf_c_message_unpack (&pg_query__on_conflict_expr__descriptor, allocator, len, data); } void pg_query__on_conflict_expr__free_unpacked (PgQuery__OnConflictExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__on_conflict_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__into_clause__init (PgQuery__IntoClause *message) { static const PgQuery__IntoClause init_value = PG_QUERY__INTO_CLAUSE__INIT; *message = init_value; } size_t pg_query__into_clause__get_packed_size (const PgQuery__IntoClause *message) { assert(message->base.descriptor == &pg_query__into_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__into_clause__pack (const PgQuery__IntoClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__into_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__into_clause__pack_to_buffer (const PgQuery__IntoClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__into_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__IntoClause * pg_query__into_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__IntoClause *) protobuf_c_message_unpack (&pg_query__into_clause__descriptor, allocator, len, data); } void pg_query__into_clause__free_unpacked (PgQuery__IntoClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__into_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__raw_stmt__init (PgQuery__RawStmt *message) { static const PgQuery__RawStmt init_value = PG_QUERY__RAW_STMT__INIT; *message = init_value; } size_t pg_query__raw_stmt__get_packed_size (const PgQuery__RawStmt *message) { assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__raw_stmt__pack (const PgQuery__RawStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__raw_stmt__pack_to_buffer (const PgQuery__RawStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RawStmt * pg_query__raw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RawStmt *) protobuf_c_message_unpack (&pg_query__raw_stmt__descriptor, allocator, len, data); } void pg_query__raw_stmt__free_unpacked (PgQuery__RawStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__raw_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__query__init (PgQuery__Query *message) { static const PgQuery__Query init_value = PG_QUERY__QUERY__INIT; *message = init_value; } size_t pg_query__query__get_packed_size (const PgQuery__Query *message) { assert(message->base.descriptor == &pg_query__query__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__query__pack (const PgQuery__Query *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__query__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__query__pack_to_buffer (const PgQuery__Query *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__query__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Query * pg_query__query__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Query *) protobuf_c_message_unpack (&pg_query__query__descriptor, allocator, len, data); } void pg_query__query__free_unpacked (PgQuery__Query *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__query__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__insert_stmt__init (PgQuery__InsertStmt *message) { static const PgQuery__InsertStmt init_value = PG_QUERY__INSERT_STMT__INIT; *message = init_value; } size_t pg_query__insert_stmt__get_packed_size (const PgQuery__InsertStmt *message) { assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__insert_stmt__pack (const PgQuery__InsertStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__insert_stmt__pack_to_buffer (const PgQuery__InsertStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__InsertStmt * pg_query__insert_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__InsertStmt *) protobuf_c_message_unpack (&pg_query__insert_stmt__descriptor, allocator, len, data); } void pg_query__insert_stmt__free_unpacked (PgQuery__InsertStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__insert_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__delete_stmt__init (PgQuery__DeleteStmt *message) { static const PgQuery__DeleteStmt init_value = PG_QUERY__DELETE_STMT__INIT; *message = init_value; } size_t pg_query__delete_stmt__get_packed_size (const PgQuery__DeleteStmt *message) { assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__delete_stmt__pack (const PgQuery__DeleteStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__delete_stmt__pack_to_buffer (const PgQuery__DeleteStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DeleteStmt * pg_query__delete_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DeleteStmt *) protobuf_c_message_unpack (&pg_query__delete_stmt__descriptor, allocator, len, data); } void pg_query__delete_stmt__free_unpacked (PgQuery__DeleteStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__delete_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__update_stmt__init (PgQuery__UpdateStmt *message) { static const PgQuery__UpdateStmt init_value = PG_QUERY__UPDATE_STMT__INIT; *message = init_value; } size_t pg_query__update_stmt__get_packed_size (const PgQuery__UpdateStmt *message) { assert(message->base.descriptor == &pg_query__update_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__update_stmt__pack (const PgQuery__UpdateStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__update_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__update_stmt__pack_to_buffer (const PgQuery__UpdateStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__update_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__UpdateStmt * pg_query__update_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__UpdateStmt *) protobuf_c_message_unpack (&pg_query__update_stmt__descriptor, allocator, len, data); } void pg_query__update_stmt__free_unpacked (PgQuery__UpdateStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__update_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__select_stmt__init (PgQuery__SelectStmt *message) { static const PgQuery__SelectStmt init_value = PG_QUERY__SELECT_STMT__INIT; *message = init_value; } size_t pg_query__select_stmt__get_packed_size (const PgQuery__SelectStmt *message) { assert(message->base.descriptor == &pg_query__select_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__select_stmt__pack (const PgQuery__SelectStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__select_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__select_stmt__pack_to_buffer (const PgQuery__SelectStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__select_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SelectStmt * pg_query__select_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SelectStmt *) protobuf_c_message_unpack (&pg_query__select_stmt__descriptor, allocator, len, data); } void pg_query__select_stmt__free_unpacked (PgQuery__SelectStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__select_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_table_stmt__init (PgQuery__AlterTableStmt *message) { static const PgQuery__AlterTableStmt init_value = PG_QUERY__ALTER_TABLE_STMT__INIT; *message = init_value; } size_t pg_query__alter_table_stmt__get_packed_size (const PgQuery__AlterTableStmt *message) { assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_table_stmt__pack (const PgQuery__AlterTableStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_table_stmt__pack_to_buffer (const PgQuery__AlterTableStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTableStmt * pg_query__alter_table_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTableStmt *) protobuf_c_message_unpack (&pg_query__alter_table_stmt__descriptor, allocator, len, data); } void pg_query__alter_table_stmt__free_unpacked (PgQuery__AlterTableStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_table_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_table_cmd__init (PgQuery__AlterTableCmd *message) { static const PgQuery__AlterTableCmd init_value = PG_QUERY__ALTER_TABLE_CMD__INIT; *message = init_value; } size_t pg_query__alter_table_cmd__get_packed_size (const PgQuery__AlterTableCmd *message) { assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_table_cmd__pack (const PgQuery__AlterTableCmd *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_table_cmd__pack_to_buffer (const PgQuery__AlterTableCmd *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTableCmd * pg_query__alter_table_cmd__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTableCmd *) protobuf_c_message_unpack (&pg_query__alter_table_cmd__descriptor, allocator, len, data); } void pg_query__alter_table_cmd__free_unpacked (PgQuery__AlterTableCmd *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_table_cmd__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_domain_stmt__init (PgQuery__AlterDomainStmt *message) { static const PgQuery__AlterDomainStmt init_value = PG_QUERY__ALTER_DOMAIN_STMT__INIT; *message = init_value; } size_t pg_query__alter_domain_stmt__get_packed_size (const PgQuery__AlterDomainStmt *message) { assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_domain_stmt__pack (const PgQuery__AlterDomainStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_domain_stmt__pack_to_buffer (const PgQuery__AlterDomainStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterDomainStmt * pg_query__alter_domain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterDomainStmt *) protobuf_c_message_unpack (&pg_query__alter_domain_stmt__descriptor, allocator, len, data); } void pg_query__alter_domain_stmt__free_unpacked (PgQuery__AlterDomainStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_domain_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__set_operation_stmt__init (PgQuery__SetOperationStmt *message) { static const PgQuery__SetOperationStmt init_value = PG_QUERY__SET_OPERATION_STMT__INIT; *message = init_value; } size_t pg_query__set_operation_stmt__get_packed_size (const PgQuery__SetOperationStmt *message) { assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__set_operation_stmt__pack (const PgQuery__SetOperationStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__set_operation_stmt__pack_to_buffer (const PgQuery__SetOperationStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SetOperationStmt * pg_query__set_operation_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SetOperationStmt *) protobuf_c_message_unpack (&pg_query__set_operation_stmt__descriptor, allocator, len, data); } void pg_query__set_operation_stmt__free_unpacked (PgQuery__SetOperationStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__set_operation_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__grant_stmt__init (PgQuery__GrantStmt *message) { static const PgQuery__GrantStmt init_value = PG_QUERY__GRANT_STMT__INIT; *message = init_value; } size_t pg_query__grant_stmt__get_packed_size (const PgQuery__GrantStmt *message) { assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__grant_stmt__pack (const PgQuery__GrantStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__grant_stmt__pack_to_buffer (const PgQuery__GrantStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__GrantStmt * pg_query__grant_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__GrantStmt *) protobuf_c_message_unpack (&pg_query__grant_stmt__descriptor, allocator, len, data); } void pg_query__grant_stmt__free_unpacked (PgQuery__GrantStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__grant_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__grant_role_stmt__init (PgQuery__GrantRoleStmt *message) { static const PgQuery__GrantRoleStmt init_value = PG_QUERY__GRANT_ROLE_STMT__INIT; *message = init_value; } size_t pg_query__grant_role_stmt__get_packed_size (const PgQuery__GrantRoleStmt *message) { assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__grant_role_stmt__pack (const PgQuery__GrantRoleStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__grant_role_stmt__pack_to_buffer (const PgQuery__GrantRoleStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__GrantRoleStmt * pg_query__grant_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__GrantRoleStmt *) protobuf_c_message_unpack (&pg_query__grant_role_stmt__descriptor, allocator, len, data); } void pg_query__grant_role_stmt__free_unpacked (PgQuery__GrantRoleStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__grant_role_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_default_privileges_stmt__init (PgQuery__AlterDefaultPrivilegesStmt *message) { static const PgQuery__AlterDefaultPrivilegesStmt init_value = PG_QUERY__ALTER_DEFAULT_PRIVILEGES_STMT__INIT; *message = init_value; } size_t pg_query__alter_default_privileges_stmt__get_packed_size (const PgQuery__AlterDefaultPrivilegesStmt *message) { assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_default_privileges_stmt__pack (const PgQuery__AlterDefaultPrivilegesStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_default_privileges_stmt__pack_to_buffer (const PgQuery__AlterDefaultPrivilegesStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterDefaultPrivilegesStmt * pg_query__alter_default_privileges_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterDefaultPrivilegesStmt *) protobuf_c_message_unpack (&pg_query__alter_default_privileges_stmt__descriptor, allocator, len, data); } void pg_query__alter_default_privileges_stmt__free_unpacked (PgQuery__AlterDefaultPrivilegesStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_default_privileges_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__close_portal_stmt__init (PgQuery__ClosePortalStmt *message) { static const PgQuery__ClosePortalStmt init_value = PG_QUERY__CLOSE_PORTAL_STMT__INIT; *message = init_value; } size_t pg_query__close_portal_stmt__get_packed_size (const PgQuery__ClosePortalStmt *message) { assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__close_portal_stmt__pack (const PgQuery__ClosePortalStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__close_portal_stmt__pack_to_buffer (const PgQuery__ClosePortalStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ClosePortalStmt * pg_query__close_portal_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ClosePortalStmt *) protobuf_c_message_unpack (&pg_query__close_portal_stmt__descriptor, allocator, len, data); } void pg_query__close_portal_stmt__free_unpacked (PgQuery__ClosePortalStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__close_portal_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__cluster_stmt__init (PgQuery__ClusterStmt *message) { static const PgQuery__ClusterStmt init_value = PG_QUERY__CLUSTER_STMT__INIT; *message = init_value; } size_t pg_query__cluster_stmt__get_packed_size (const PgQuery__ClusterStmt *message) { assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__cluster_stmt__pack (const PgQuery__ClusterStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__cluster_stmt__pack_to_buffer (const PgQuery__ClusterStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ClusterStmt * pg_query__cluster_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ClusterStmt *) protobuf_c_message_unpack (&pg_query__cluster_stmt__descriptor, allocator, len, data); } void pg_query__cluster_stmt__free_unpacked (PgQuery__ClusterStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__cluster_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__copy_stmt__init (PgQuery__CopyStmt *message) { static const PgQuery__CopyStmt init_value = PG_QUERY__COPY_STMT__INIT; *message = init_value; } size_t pg_query__copy_stmt__get_packed_size (const PgQuery__CopyStmt *message) { assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__copy_stmt__pack (const PgQuery__CopyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__copy_stmt__pack_to_buffer (const PgQuery__CopyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CopyStmt * pg_query__copy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CopyStmt *) protobuf_c_message_unpack (&pg_query__copy_stmt__descriptor, allocator, len, data); } void pg_query__copy_stmt__free_unpacked (PgQuery__CopyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__copy_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_stmt__init (PgQuery__CreateStmt *message) { static const PgQuery__CreateStmt init_value = PG_QUERY__CREATE_STMT__INIT; *message = init_value; } size_t pg_query__create_stmt__get_packed_size (const PgQuery__CreateStmt *message) { assert(message->base.descriptor == &pg_query__create_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_stmt__pack (const PgQuery__CreateStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_stmt__pack_to_buffer (const PgQuery__CreateStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateStmt * pg_query__create_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateStmt *) protobuf_c_message_unpack (&pg_query__create_stmt__descriptor, allocator, len, data); } void pg_query__create_stmt__free_unpacked (PgQuery__CreateStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__define_stmt__init (PgQuery__DefineStmt *message) { static const PgQuery__DefineStmt init_value = PG_QUERY__DEFINE_STMT__INIT; *message = init_value; } size_t pg_query__define_stmt__get_packed_size (const PgQuery__DefineStmt *message) { assert(message->base.descriptor == &pg_query__define_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__define_stmt__pack (const PgQuery__DefineStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__define_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__define_stmt__pack_to_buffer (const PgQuery__DefineStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__define_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DefineStmt * pg_query__define_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DefineStmt *) protobuf_c_message_unpack (&pg_query__define_stmt__descriptor, allocator, len, data); } void pg_query__define_stmt__free_unpacked (PgQuery__DefineStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__define_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_stmt__init (PgQuery__DropStmt *message) { static const PgQuery__DropStmt init_value = PG_QUERY__DROP_STMT__INIT; *message = init_value; } size_t pg_query__drop_stmt__get_packed_size (const PgQuery__DropStmt *message) { assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_stmt__pack (const PgQuery__DropStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_stmt__pack_to_buffer (const PgQuery__DropStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropStmt * pg_query__drop_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropStmt *) protobuf_c_message_unpack (&pg_query__drop_stmt__descriptor, allocator, len, data); } void pg_query__drop_stmt__free_unpacked (PgQuery__DropStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__truncate_stmt__init (PgQuery__TruncateStmt *message) { static const PgQuery__TruncateStmt init_value = PG_QUERY__TRUNCATE_STMT__INIT; *message = init_value; } size_t pg_query__truncate_stmt__get_packed_size (const PgQuery__TruncateStmt *message) { assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__truncate_stmt__pack (const PgQuery__TruncateStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__truncate_stmt__pack_to_buffer (const PgQuery__TruncateStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TruncateStmt * pg_query__truncate_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TruncateStmt *) protobuf_c_message_unpack (&pg_query__truncate_stmt__descriptor, allocator, len, data); } void pg_query__truncate_stmt__free_unpacked (PgQuery__TruncateStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__truncate_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__comment_stmt__init (PgQuery__CommentStmt *message) { static const PgQuery__CommentStmt init_value = PG_QUERY__COMMENT_STMT__INIT; *message = init_value; } size_t pg_query__comment_stmt__get_packed_size (const PgQuery__CommentStmt *message) { assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__comment_stmt__pack (const PgQuery__CommentStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__comment_stmt__pack_to_buffer (const PgQuery__CommentStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CommentStmt * pg_query__comment_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CommentStmt *) protobuf_c_message_unpack (&pg_query__comment_stmt__descriptor, allocator, len, data); } void pg_query__comment_stmt__free_unpacked (PgQuery__CommentStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__comment_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__fetch_stmt__init (PgQuery__FetchStmt *message) { static const PgQuery__FetchStmt init_value = PG_QUERY__FETCH_STMT__INIT; *message = init_value; } size_t pg_query__fetch_stmt__get_packed_size (const PgQuery__FetchStmt *message) { assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__fetch_stmt__pack (const PgQuery__FetchStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__fetch_stmt__pack_to_buffer (const PgQuery__FetchStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FetchStmt * pg_query__fetch_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FetchStmt *) protobuf_c_message_unpack (&pg_query__fetch_stmt__descriptor, allocator, len, data); } void pg_query__fetch_stmt__free_unpacked (PgQuery__FetchStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__fetch_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__index_stmt__init (PgQuery__IndexStmt *message) { static const PgQuery__IndexStmt init_value = PG_QUERY__INDEX_STMT__INIT; *message = init_value; } size_t pg_query__index_stmt__get_packed_size (const PgQuery__IndexStmt *message) { assert(message->base.descriptor == &pg_query__index_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__index_stmt__pack (const PgQuery__IndexStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__index_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__index_stmt__pack_to_buffer (const PgQuery__IndexStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__index_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__IndexStmt * pg_query__index_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__IndexStmt *) protobuf_c_message_unpack (&pg_query__index_stmt__descriptor, allocator, len, data); } void pg_query__index_stmt__free_unpacked (PgQuery__IndexStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__index_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_function_stmt__init (PgQuery__CreateFunctionStmt *message) { static const PgQuery__CreateFunctionStmt init_value = PG_QUERY__CREATE_FUNCTION_STMT__INIT; *message = init_value; } size_t pg_query__create_function_stmt__get_packed_size (const PgQuery__CreateFunctionStmt *message) { assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_function_stmt__pack (const PgQuery__CreateFunctionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_function_stmt__pack_to_buffer (const PgQuery__CreateFunctionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateFunctionStmt * pg_query__create_function_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateFunctionStmt *) protobuf_c_message_unpack (&pg_query__create_function_stmt__descriptor, allocator, len, data); } void pg_query__create_function_stmt__free_unpacked (PgQuery__CreateFunctionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_function_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_function_stmt__init (PgQuery__AlterFunctionStmt *message) { static const PgQuery__AlterFunctionStmt init_value = PG_QUERY__ALTER_FUNCTION_STMT__INIT; *message = init_value; } size_t pg_query__alter_function_stmt__get_packed_size (const PgQuery__AlterFunctionStmt *message) { assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_function_stmt__pack (const PgQuery__AlterFunctionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_function_stmt__pack_to_buffer (const PgQuery__AlterFunctionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterFunctionStmt * pg_query__alter_function_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterFunctionStmt *) protobuf_c_message_unpack (&pg_query__alter_function_stmt__descriptor, allocator, len, data); } void pg_query__alter_function_stmt__free_unpacked (PgQuery__AlterFunctionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_function_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__do_stmt__init (PgQuery__DoStmt *message) { static const PgQuery__DoStmt init_value = PG_QUERY__DO_STMT__INIT; *message = init_value; } size_t pg_query__do_stmt__get_packed_size (const PgQuery__DoStmt *message) { assert(message->base.descriptor == &pg_query__do_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__do_stmt__pack (const PgQuery__DoStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__do_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__do_stmt__pack_to_buffer (const PgQuery__DoStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__do_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DoStmt * pg_query__do_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DoStmt *) protobuf_c_message_unpack (&pg_query__do_stmt__descriptor, allocator, len, data); } void pg_query__do_stmt__free_unpacked (PgQuery__DoStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__do_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__rename_stmt__init (PgQuery__RenameStmt *message) { static const PgQuery__RenameStmt init_value = PG_QUERY__RENAME_STMT__INIT; *message = init_value; } size_t pg_query__rename_stmt__get_packed_size (const PgQuery__RenameStmt *message) { assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__rename_stmt__pack (const PgQuery__RenameStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__rename_stmt__pack_to_buffer (const PgQuery__RenameStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RenameStmt * pg_query__rename_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RenameStmt *) protobuf_c_message_unpack (&pg_query__rename_stmt__descriptor, allocator, len, data); } void pg_query__rename_stmt__free_unpacked (PgQuery__RenameStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__rename_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__rule_stmt__init (PgQuery__RuleStmt *message) { static const PgQuery__RuleStmt init_value = PG_QUERY__RULE_STMT__INIT; *message = init_value; } size_t pg_query__rule_stmt__get_packed_size (const PgQuery__RuleStmt *message) { assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__rule_stmt__pack (const PgQuery__RuleStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__rule_stmt__pack_to_buffer (const PgQuery__RuleStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RuleStmt * pg_query__rule_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RuleStmt *) protobuf_c_message_unpack (&pg_query__rule_stmt__descriptor, allocator, len, data); } void pg_query__rule_stmt__free_unpacked (PgQuery__RuleStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__rule_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__notify_stmt__init (PgQuery__NotifyStmt *message) { static const PgQuery__NotifyStmt init_value = PG_QUERY__NOTIFY_STMT__INIT; *message = init_value; } size_t pg_query__notify_stmt__get_packed_size (const PgQuery__NotifyStmt *message) { assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__notify_stmt__pack (const PgQuery__NotifyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__notify_stmt__pack_to_buffer (const PgQuery__NotifyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__NotifyStmt * pg_query__notify_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__NotifyStmt *) protobuf_c_message_unpack (&pg_query__notify_stmt__descriptor, allocator, len, data); } void pg_query__notify_stmt__free_unpacked (PgQuery__NotifyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__notify_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__listen_stmt__init (PgQuery__ListenStmt *message) { static const PgQuery__ListenStmt init_value = PG_QUERY__LISTEN_STMT__INIT; *message = init_value; } size_t pg_query__listen_stmt__get_packed_size (const PgQuery__ListenStmt *message) { assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__listen_stmt__pack (const PgQuery__ListenStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__listen_stmt__pack_to_buffer (const PgQuery__ListenStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ListenStmt * pg_query__listen_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ListenStmt *) protobuf_c_message_unpack (&pg_query__listen_stmt__descriptor, allocator, len, data); } void pg_query__listen_stmt__free_unpacked (PgQuery__ListenStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__listen_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__unlisten_stmt__init (PgQuery__UnlistenStmt *message) { static const PgQuery__UnlistenStmt init_value = PG_QUERY__UNLISTEN_STMT__INIT; *message = init_value; } size_t pg_query__unlisten_stmt__get_packed_size (const PgQuery__UnlistenStmt *message) { assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__unlisten_stmt__pack (const PgQuery__UnlistenStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__unlisten_stmt__pack_to_buffer (const PgQuery__UnlistenStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__UnlistenStmt * pg_query__unlisten_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__UnlistenStmt *) protobuf_c_message_unpack (&pg_query__unlisten_stmt__descriptor, allocator, len, data); } void pg_query__unlisten_stmt__free_unpacked (PgQuery__UnlistenStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__unlisten_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__transaction_stmt__init (PgQuery__TransactionStmt *message) { static const PgQuery__TransactionStmt init_value = PG_QUERY__TRANSACTION_STMT__INIT; *message = init_value; } size_t pg_query__transaction_stmt__get_packed_size (const PgQuery__TransactionStmt *message) { assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__transaction_stmt__pack (const PgQuery__TransactionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__transaction_stmt__pack_to_buffer (const PgQuery__TransactionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TransactionStmt * pg_query__transaction_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TransactionStmt *) protobuf_c_message_unpack (&pg_query__transaction_stmt__descriptor, allocator, len, data); } void pg_query__transaction_stmt__free_unpacked (PgQuery__TransactionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__transaction_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__view_stmt__init (PgQuery__ViewStmt *message) { static const PgQuery__ViewStmt init_value = PG_QUERY__VIEW_STMT__INIT; *message = init_value; } size_t pg_query__view_stmt__get_packed_size (const PgQuery__ViewStmt *message) { assert(message->base.descriptor == &pg_query__view_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__view_stmt__pack (const PgQuery__ViewStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__view_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__view_stmt__pack_to_buffer (const PgQuery__ViewStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__view_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ViewStmt * pg_query__view_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ViewStmt *) protobuf_c_message_unpack (&pg_query__view_stmt__descriptor, allocator, len, data); } void pg_query__view_stmt__free_unpacked (PgQuery__ViewStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__view_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__load_stmt__init (PgQuery__LoadStmt *message) { static const PgQuery__LoadStmt init_value = PG_QUERY__LOAD_STMT__INIT; *message = init_value; } size_t pg_query__load_stmt__get_packed_size (const PgQuery__LoadStmt *message) { assert(message->base.descriptor == &pg_query__load_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__load_stmt__pack (const PgQuery__LoadStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__load_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__load_stmt__pack_to_buffer (const PgQuery__LoadStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__load_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__LoadStmt * pg_query__load_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__LoadStmt *) protobuf_c_message_unpack (&pg_query__load_stmt__descriptor, allocator, len, data); } void pg_query__load_stmt__free_unpacked (PgQuery__LoadStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__load_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_domain_stmt__init (PgQuery__CreateDomainStmt *message) { static const PgQuery__CreateDomainStmt init_value = PG_QUERY__CREATE_DOMAIN_STMT__INIT; *message = init_value; } size_t pg_query__create_domain_stmt__get_packed_size (const PgQuery__CreateDomainStmt *message) { assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_domain_stmt__pack (const PgQuery__CreateDomainStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_domain_stmt__pack_to_buffer (const PgQuery__CreateDomainStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateDomainStmt * pg_query__create_domain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateDomainStmt *) protobuf_c_message_unpack (&pg_query__create_domain_stmt__descriptor, allocator, len, data); } void pg_query__create_domain_stmt__free_unpacked (PgQuery__CreateDomainStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_domain_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__createdb_stmt__init (PgQuery__CreatedbStmt *message) { static const PgQuery__CreatedbStmt init_value = PG_QUERY__CREATEDB_STMT__INIT; *message = init_value; } size_t pg_query__createdb_stmt__get_packed_size (const PgQuery__CreatedbStmt *message) { assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__createdb_stmt__pack (const PgQuery__CreatedbStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__createdb_stmt__pack_to_buffer (const PgQuery__CreatedbStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreatedbStmt * pg_query__createdb_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreatedbStmt *) protobuf_c_message_unpack (&pg_query__createdb_stmt__descriptor, allocator, len, data); } void pg_query__createdb_stmt__free_unpacked (PgQuery__CreatedbStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__createdb_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__dropdb_stmt__init (PgQuery__DropdbStmt *message) { static const PgQuery__DropdbStmt init_value = PG_QUERY__DROPDB_STMT__INIT; *message = init_value; } size_t pg_query__dropdb_stmt__get_packed_size (const PgQuery__DropdbStmt *message) { assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__dropdb_stmt__pack (const PgQuery__DropdbStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__dropdb_stmt__pack_to_buffer (const PgQuery__DropdbStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropdbStmt * pg_query__dropdb_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropdbStmt *) protobuf_c_message_unpack (&pg_query__dropdb_stmt__descriptor, allocator, len, data); } void pg_query__dropdb_stmt__free_unpacked (PgQuery__DropdbStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__dropdb_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__vacuum_stmt__init (PgQuery__VacuumStmt *message) { static const PgQuery__VacuumStmt init_value = PG_QUERY__VACUUM_STMT__INIT; *message = init_value; } size_t pg_query__vacuum_stmt__get_packed_size (const PgQuery__VacuumStmt *message) { assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__vacuum_stmt__pack (const PgQuery__VacuumStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__vacuum_stmt__pack_to_buffer (const PgQuery__VacuumStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__VacuumStmt * pg_query__vacuum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__VacuumStmt *) protobuf_c_message_unpack (&pg_query__vacuum_stmt__descriptor, allocator, len, data); } void pg_query__vacuum_stmt__free_unpacked (PgQuery__VacuumStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__vacuum_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__explain_stmt__init (PgQuery__ExplainStmt *message) { static const PgQuery__ExplainStmt init_value = PG_QUERY__EXPLAIN_STMT__INIT; *message = init_value; } size_t pg_query__explain_stmt__get_packed_size (const PgQuery__ExplainStmt *message) { assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__explain_stmt__pack (const PgQuery__ExplainStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__explain_stmt__pack_to_buffer (const PgQuery__ExplainStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ExplainStmt * pg_query__explain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ExplainStmt *) protobuf_c_message_unpack (&pg_query__explain_stmt__descriptor, allocator, len, data); } void pg_query__explain_stmt__free_unpacked (PgQuery__ExplainStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__explain_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_table_as_stmt__init (PgQuery__CreateTableAsStmt *message) { static const PgQuery__CreateTableAsStmt init_value = PG_QUERY__CREATE_TABLE_AS_STMT__INIT; *message = init_value; } size_t pg_query__create_table_as_stmt__get_packed_size (const PgQuery__CreateTableAsStmt *message) { assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_table_as_stmt__pack (const PgQuery__CreateTableAsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_table_as_stmt__pack_to_buffer (const PgQuery__CreateTableAsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateTableAsStmt * pg_query__create_table_as_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateTableAsStmt *) protobuf_c_message_unpack (&pg_query__create_table_as_stmt__descriptor, allocator, len, data); } void pg_query__create_table_as_stmt__free_unpacked (PgQuery__CreateTableAsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_table_as_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_seq_stmt__init (PgQuery__CreateSeqStmt *message) { static const PgQuery__CreateSeqStmt init_value = PG_QUERY__CREATE_SEQ_STMT__INIT; *message = init_value; } size_t pg_query__create_seq_stmt__get_packed_size (const PgQuery__CreateSeqStmt *message) { assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_seq_stmt__pack (const PgQuery__CreateSeqStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_seq_stmt__pack_to_buffer (const PgQuery__CreateSeqStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateSeqStmt * pg_query__create_seq_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateSeqStmt *) protobuf_c_message_unpack (&pg_query__create_seq_stmt__descriptor, allocator, len, data); } void pg_query__create_seq_stmt__free_unpacked (PgQuery__CreateSeqStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_seq_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_seq_stmt__init (PgQuery__AlterSeqStmt *message) { static const PgQuery__AlterSeqStmt init_value = PG_QUERY__ALTER_SEQ_STMT__INIT; *message = init_value; } size_t pg_query__alter_seq_stmt__get_packed_size (const PgQuery__AlterSeqStmt *message) { assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_seq_stmt__pack (const PgQuery__AlterSeqStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_seq_stmt__pack_to_buffer (const PgQuery__AlterSeqStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterSeqStmt * pg_query__alter_seq_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterSeqStmt *) protobuf_c_message_unpack (&pg_query__alter_seq_stmt__descriptor, allocator, len, data); } void pg_query__alter_seq_stmt__free_unpacked (PgQuery__AlterSeqStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_seq_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__variable_set_stmt__init (PgQuery__VariableSetStmt *message) { static const PgQuery__VariableSetStmt init_value = PG_QUERY__VARIABLE_SET_STMT__INIT; *message = init_value; } size_t pg_query__variable_set_stmt__get_packed_size (const PgQuery__VariableSetStmt *message) { assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__variable_set_stmt__pack (const PgQuery__VariableSetStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__variable_set_stmt__pack_to_buffer (const PgQuery__VariableSetStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__VariableSetStmt * pg_query__variable_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__VariableSetStmt *) protobuf_c_message_unpack (&pg_query__variable_set_stmt__descriptor, allocator, len, data); } void pg_query__variable_set_stmt__free_unpacked (PgQuery__VariableSetStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__variable_set_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__variable_show_stmt__init (PgQuery__VariableShowStmt *message) { static const PgQuery__VariableShowStmt init_value = PG_QUERY__VARIABLE_SHOW_STMT__INIT; *message = init_value; } size_t pg_query__variable_show_stmt__get_packed_size (const PgQuery__VariableShowStmt *message) { assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__variable_show_stmt__pack (const PgQuery__VariableShowStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__variable_show_stmt__pack_to_buffer (const PgQuery__VariableShowStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__VariableShowStmt * pg_query__variable_show_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__VariableShowStmt *) protobuf_c_message_unpack (&pg_query__variable_show_stmt__descriptor, allocator, len, data); } void pg_query__variable_show_stmt__free_unpacked (PgQuery__VariableShowStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__variable_show_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__discard_stmt__init (PgQuery__DiscardStmt *message) { static const PgQuery__DiscardStmt init_value = PG_QUERY__DISCARD_STMT__INIT; *message = init_value; } size_t pg_query__discard_stmt__get_packed_size (const PgQuery__DiscardStmt *message) { assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__discard_stmt__pack (const PgQuery__DiscardStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__discard_stmt__pack_to_buffer (const PgQuery__DiscardStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DiscardStmt * pg_query__discard_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DiscardStmt *) protobuf_c_message_unpack (&pg_query__discard_stmt__descriptor, allocator, len, data); } void pg_query__discard_stmt__free_unpacked (PgQuery__DiscardStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__discard_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_trig_stmt__init (PgQuery__CreateTrigStmt *message) { static const PgQuery__CreateTrigStmt init_value = PG_QUERY__CREATE_TRIG_STMT__INIT; *message = init_value; } size_t pg_query__create_trig_stmt__get_packed_size (const PgQuery__CreateTrigStmt *message) { assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_trig_stmt__pack (const PgQuery__CreateTrigStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_trig_stmt__pack_to_buffer (const PgQuery__CreateTrigStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateTrigStmt * pg_query__create_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateTrigStmt *) protobuf_c_message_unpack (&pg_query__create_trig_stmt__descriptor, allocator, len, data); } void pg_query__create_trig_stmt__free_unpacked (PgQuery__CreateTrigStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_trig_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_plang_stmt__init (PgQuery__CreatePLangStmt *message) { static const PgQuery__CreatePLangStmt init_value = PG_QUERY__CREATE_PLANG_STMT__INIT; *message = init_value; } size_t pg_query__create_plang_stmt__get_packed_size (const PgQuery__CreatePLangStmt *message) { assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_plang_stmt__pack (const PgQuery__CreatePLangStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_plang_stmt__pack_to_buffer (const PgQuery__CreatePLangStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreatePLangStmt * pg_query__create_plang_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreatePLangStmt *) protobuf_c_message_unpack (&pg_query__create_plang_stmt__descriptor, allocator, len, data); } void pg_query__create_plang_stmt__free_unpacked (PgQuery__CreatePLangStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_plang_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_role_stmt__init (PgQuery__CreateRoleStmt *message) { static const PgQuery__CreateRoleStmt init_value = PG_QUERY__CREATE_ROLE_STMT__INIT; *message = init_value; } size_t pg_query__create_role_stmt__get_packed_size (const PgQuery__CreateRoleStmt *message) { assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_role_stmt__pack (const PgQuery__CreateRoleStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_role_stmt__pack_to_buffer (const PgQuery__CreateRoleStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateRoleStmt * pg_query__create_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateRoleStmt *) protobuf_c_message_unpack (&pg_query__create_role_stmt__descriptor, allocator, len, data); } void pg_query__create_role_stmt__free_unpacked (PgQuery__CreateRoleStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_role_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_role_stmt__init (PgQuery__AlterRoleStmt *message) { static const PgQuery__AlterRoleStmt init_value = PG_QUERY__ALTER_ROLE_STMT__INIT; *message = init_value; } size_t pg_query__alter_role_stmt__get_packed_size (const PgQuery__AlterRoleStmt *message) { assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_role_stmt__pack (const PgQuery__AlterRoleStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_role_stmt__pack_to_buffer (const PgQuery__AlterRoleStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterRoleStmt * pg_query__alter_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterRoleStmt *) protobuf_c_message_unpack (&pg_query__alter_role_stmt__descriptor, allocator, len, data); } void pg_query__alter_role_stmt__free_unpacked (PgQuery__AlterRoleStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_role_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_role_stmt__init (PgQuery__DropRoleStmt *message) { static const PgQuery__DropRoleStmt init_value = PG_QUERY__DROP_ROLE_STMT__INIT; *message = init_value; } size_t pg_query__drop_role_stmt__get_packed_size (const PgQuery__DropRoleStmt *message) { assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_role_stmt__pack (const PgQuery__DropRoleStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_role_stmt__pack_to_buffer (const PgQuery__DropRoleStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropRoleStmt * pg_query__drop_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropRoleStmt *) protobuf_c_message_unpack (&pg_query__drop_role_stmt__descriptor, allocator, len, data); } void pg_query__drop_role_stmt__free_unpacked (PgQuery__DropRoleStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_role_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__lock_stmt__init (PgQuery__LockStmt *message) { static const PgQuery__LockStmt init_value = PG_QUERY__LOCK_STMT__INIT; *message = init_value; } size_t pg_query__lock_stmt__get_packed_size (const PgQuery__LockStmt *message) { assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__lock_stmt__pack (const PgQuery__LockStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__lock_stmt__pack_to_buffer (const PgQuery__LockStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__LockStmt * pg_query__lock_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__LockStmt *) protobuf_c_message_unpack (&pg_query__lock_stmt__descriptor, allocator, len, data); } void pg_query__lock_stmt__free_unpacked (PgQuery__LockStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__lock_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__constraints_set_stmt__init (PgQuery__ConstraintsSetStmt *message) { static const PgQuery__ConstraintsSetStmt init_value = PG_QUERY__CONSTRAINTS_SET_STMT__INIT; *message = init_value; } size_t pg_query__constraints_set_stmt__get_packed_size (const PgQuery__ConstraintsSetStmt *message) { assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__constraints_set_stmt__pack (const PgQuery__ConstraintsSetStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__constraints_set_stmt__pack_to_buffer (const PgQuery__ConstraintsSetStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ConstraintsSetStmt * pg_query__constraints_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ConstraintsSetStmt *) protobuf_c_message_unpack (&pg_query__constraints_set_stmt__descriptor, allocator, len, data); } void pg_query__constraints_set_stmt__free_unpacked (PgQuery__ConstraintsSetStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__constraints_set_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__reindex_stmt__init (PgQuery__ReindexStmt *message) { static const PgQuery__ReindexStmt init_value = PG_QUERY__REINDEX_STMT__INIT; *message = init_value; } size_t pg_query__reindex_stmt__get_packed_size (const PgQuery__ReindexStmt *message) { assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__reindex_stmt__pack (const PgQuery__ReindexStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__reindex_stmt__pack_to_buffer (const PgQuery__ReindexStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ReindexStmt * pg_query__reindex_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ReindexStmt *) protobuf_c_message_unpack (&pg_query__reindex_stmt__descriptor, allocator, len, data); } void pg_query__reindex_stmt__free_unpacked (PgQuery__ReindexStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__reindex_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__check_point_stmt__init (PgQuery__CheckPointStmt *message) { static const PgQuery__CheckPointStmt init_value = PG_QUERY__CHECK_POINT_STMT__INIT; *message = init_value; } size_t pg_query__check_point_stmt__get_packed_size (const PgQuery__CheckPointStmt *message) { assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__check_point_stmt__pack (const PgQuery__CheckPointStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__check_point_stmt__pack_to_buffer (const PgQuery__CheckPointStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CheckPointStmt * pg_query__check_point_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CheckPointStmt *) protobuf_c_message_unpack (&pg_query__check_point_stmt__descriptor, allocator, len, data); } void pg_query__check_point_stmt__free_unpacked (PgQuery__CheckPointStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__check_point_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_schema_stmt__init (PgQuery__CreateSchemaStmt *message) { static const PgQuery__CreateSchemaStmt init_value = PG_QUERY__CREATE_SCHEMA_STMT__INIT; *message = init_value; } size_t pg_query__create_schema_stmt__get_packed_size (const PgQuery__CreateSchemaStmt *message) { assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_schema_stmt__pack (const PgQuery__CreateSchemaStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_schema_stmt__pack_to_buffer (const PgQuery__CreateSchemaStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateSchemaStmt * pg_query__create_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateSchemaStmt *) protobuf_c_message_unpack (&pg_query__create_schema_stmt__descriptor, allocator, len, data); } void pg_query__create_schema_stmt__free_unpacked (PgQuery__CreateSchemaStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_schema_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_database_stmt__init (PgQuery__AlterDatabaseStmt *message) { static const PgQuery__AlterDatabaseStmt init_value = PG_QUERY__ALTER_DATABASE_STMT__INIT; *message = init_value; } size_t pg_query__alter_database_stmt__get_packed_size (const PgQuery__AlterDatabaseStmt *message) { assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_database_stmt__pack (const PgQuery__AlterDatabaseStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_database_stmt__pack_to_buffer (const PgQuery__AlterDatabaseStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterDatabaseStmt * pg_query__alter_database_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterDatabaseStmt *) protobuf_c_message_unpack (&pg_query__alter_database_stmt__descriptor, allocator, len, data); } void pg_query__alter_database_stmt__free_unpacked (PgQuery__AlterDatabaseStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_database_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_database_set_stmt__init (PgQuery__AlterDatabaseSetStmt *message) { static const PgQuery__AlterDatabaseSetStmt init_value = PG_QUERY__ALTER_DATABASE_SET_STMT__INIT; *message = init_value; } size_t pg_query__alter_database_set_stmt__get_packed_size (const PgQuery__AlterDatabaseSetStmt *message) { assert(message->base.descriptor == &pg_query__alter_database_set_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_database_set_stmt__pack (const PgQuery__AlterDatabaseSetStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_database_set_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_database_set_stmt__pack_to_buffer (const PgQuery__AlterDatabaseSetStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_database_set_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterDatabaseSetStmt * pg_query__alter_database_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterDatabaseSetStmt *) protobuf_c_message_unpack (&pg_query__alter_database_set_stmt__descriptor, allocator, len, data); } void pg_query__alter_database_set_stmt__free_unpacked (PgQuery__AlterDatabaseSetStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_database_set_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_role_set_stmt__init (PgQuery__AlterRoleSetStmt *message) { static const PgQuery__AlterRoleSetStmt init_value = PG_QUERY__ALTER_ROLE_SET_STMT__INIT; *message = init_value; } size_t pg_query__alter_role_set_stmt__get_packed_size (const PgQuery__AlterRoleSetStmt *message) { assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_role_set_stmt__pack (const PgQuery__AlterRoleSetStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_role_set_stmt__pack_to_buffer (const PgQuery__AlterRoleSetStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterRoleSetStmt * pg_query__alter_role_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterRoleSetStmt *) protobuf_c_message_unpack (&pg_query__alter_role_set_stmt__descriptor, allocator, len, data); } void pg_query__alter_role_set_stmt__free_unpacked (PgQuery__AlterRoleSetStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_role_set_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_conversion_stmt__init (PgQuery__CreateConversionStmt *message) { static const PgQuery__CreateConversionStmt init_value = PG_QUERY__CREATE_CONVERSION_STMT__INIT; *message = init_value; } size_t pg_query__create_conversion_stmt__get_packed_size (const PgQuery__CreateConversionStmt *message) { assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_conversion_stmt__pack (const PgQuery__CreateConversionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_conversion_stmt__pack_to_buffer (const PgQuery__CreateConversionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateConversionStmt * pg_query__create_conversion_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateConversionStmt *) protobuf_c_message_unpack (&pg_query__create_conversion_stmt__descriptor, allocator, len, data); } void pg_query__create_conversion_stmt__free_unpacked (PgQuery__CreateConversionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_conversion_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_cast_stmt__init (PgQuery__CreateCastStmt *message) { static const PgQuery__CreateCastStmt init_value = PG_QUERY__CREATE_CAST_STMT__INIT; *message = init_value; } size_t pg_query__create_cast_stmt__get_packed_size (const PgQuery__CreateCastStmt *message) { assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_cast_stmt__pack (const PgQuery__CreateCastStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_cast_stmt__pack_to_buffer (const PgQuery__CreateCastStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateCastStmt * pg_query__create_cast_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateCastStmt *) protobuf_c_message_unpack (&pg_query__create_cast_stmt__descriptor, allocator, len, data); } void pg_query__create_cast_stmt__free_unpacked (PgQuery__CreateCastStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_cast_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_op_class_stmt__init (PgQuery__CreateOpClassStmt *message) { static const PgQuery__CreateOpClassStmt init_value = PG_QUERY__CREATE_OP_CLASS_STMT__INIT; *message = init_value; } size_t pg_query__create_op_class_stmt__get_packed_size (const PgQuery__CreateOpClassStmt *message) { assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_op_class_stmt__pack (const PgQuery__CreateOpClassStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_op_class_stmt__pack_to_buffer (const PgQuery__CreateOpClassStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateOpClassStmt * pg_query__create_op_class_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateOpClassStmt *) protobuf_c_message_unpack (&pg_query__create_op_class_stmt__descriptor, allocator, len, data); } void pg_query__create_op_class_stmt__free_unpacked (PgQuery__CreateOpClassStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_op_class_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_op_family_stmt__init (PgQuery__CreateOpFamilyStmt *message) { static const PgQuery__CreateOpFamilyStmt init_value = PG_QUERY__CREATE_OP_FAMILY_STMT__INIT; *message = init_value; } size_t pg_query__create_op_family_stmt__get_packed_size (const PgQuery__CreateOpFamilyStmt *message) { assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_op_family_stmt__pack (const PgQuery__CreateOpFamilyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_op_family_stmt__pack_to_buffer (const PgQuery__CreateOpFamilyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateOpFamilyStmt * pg_query__create_op_family_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateOpFamilyStmt *) protobuf_c_message_unpack (&pg_query__create_op_family_stmt__descriptor, allocator, len, data); } void pg_query__create_op_family_stmt__free_unpacked (PgQuery__CreateOpFamilyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_op_family_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_op_family_stmt__init (PgQuery__AlterOpFamilyStmt *message) { static const PgQuery__AlterOpFamilyStmt init_value = PG_QUERY__ALTER_OP_FAMILY_STMT__INIT; *message = init_value; } size_t pg_query__alter_op_family_stmt__get_packed_size (const PgQuery__AlterOpFamilyStmt *message) { assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_op_family_stmt__pack (const PgQuery__AlterOpFamilyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_op_family_stmt__pack_to_buffer (const PgQuery__AlterOpFamilyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterOpFamilyStmt * pg_query__alter_op_family_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterOpFamilyStmt *) protobuf_c_message_unpack (&pg_query__alter_op_family_stmt__descriptor, allocator, len, data); } void pg_query__alter_op_family_stmt__free_unpacked (PgQuery__AlterOpFamilyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_op_family_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__prepare_stmt__init (PgQuery__PrepareStmt *message) { static const PgQuery__PrepareStmt init_value = PG_QUERY__PREPARE_STMT__INIT; *message = init_value; } size_t pg_query__prepare_stmt__get_packed_size (const PgQuery__PrepareStmt *message) { assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__prepare_stmt__pack (const PgQuery__PrepareStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__prepare_stmt__pack_to_buffer (const PgQuery__PrepareStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PrepareStmt * pg_query__prepare_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PrepareStmt *) protobuf_c_message_unpack (&pg_query__prepare_stmt__descriptor, allocator, len, data); } void pg_query__prepare_stmt__free_unpacked (PgQuery__PrepareStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__prepare_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__execute_stmt__init (PgQuery__ExecuteStmt *message) { static const PgQuery__ExecuteStmt init_value = PG_QUERY__EXECUTE_STMT__INIT; *message = init_value; } size_t pg_query__execute_stmt__get_packed_size (const PgQuery__ExecuteStmt *message) { assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__execute_stmt__pack (const PgQuery__ExecuteStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__execute_stmt__pack_to_buffer (const PgQuery__ExecuteStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ExecuteStmt * pg_query__execute_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ExecuteStmt *) protobuf_c_message_unpack (&pg_query__execute_stmt__descriptor, allocator, len, data); } void pg_query__execute_stmt__free_unpacked (PgQuery__ExecuteStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__execute_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__deallocate_stmt__init (PgQuery__DeallocateStmt *message) { static const PgQuery__DeallocateStmt init_value = PG_QUERY__DEALLOCATE_STMT__INIT; *message = init_value; } size_t pg_query__deallocate_stmt__get_packed_size (const PgQuery__DeallocateStmt *message) { assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__deallocate_stmt__pack (const PgQuery__DeallocateStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__deallocate_stmt__pack_to_buffer (const PgQuery__DeallocateStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DeallocateStmt * pg_query__deallocate_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DeallocateStmt *) protobuf_c_message_unpack (&pg_query__deallocate_stmt__descriptor, allocator, len, data); } void pg_query__deallocate_stmt__free_unpacked (PgQuery__DeallocateStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__deallocate_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__declare_cursor_stmt__init (PgQuery__DeclareCursorStmt *message) { static const PgQuery__DeclareCursorStmt init_value = PG_QUERY__DECLARE_CURSOR_STMT__INIT; *message = init_value; } size_t pg_query__declare_cursor_stmt__get_packed_size (const PgQuery__DeclareCursorStmt *message) { assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__declare_cursor_stmt__pack (const PgQuery__DeclareCursorStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__declare_cursor_stmt__pack_to_buffer (const PgQuery__DeclareCursorStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DeclareCursorStmt * pg_query__declare_cursor_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DeclareCursorStmt *) protobuf_c_message_unpack (&pg_query__declare_cursor_stmt__descriptor, allocator, len, data); } void pg_query__declare_cursor_stmt__free_unpacked (PgQuery__DeclareCursorStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__declare_cursor_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_table_space_stmt__init (PgQuery__CreateTableSpaceStmt *message) { static const PgQuery__CreateTableSpaceStmt init_value = PG_QUERY__CREATE_TABLE_SPACE_STMT__INIT; *message = init_value; } size_t pg_query__create_table_space_stmt__get_packed_size (const PgQuery__CreateTableSpaceStmt *message) { assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_table_space_stmt__pack (const PgQuery__CreateTableSpaceStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_table_space_stmt__pack_to_buffer (const PgQuery__CreateTableSpaceStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateTableSpaceStmt * pg_query__create_table_space_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateTableSpaceStmt *) protobuf_c_message_unpack (&pg_query__create_table_space_stmt__descriptor, allocator, len, data); } void pg_query__create_table_space_stmt__free_unpacked (PgQuery__CreateTableSpaceStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_table_space_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_table_space_stmt__init (PgQuery__DropTableSpaceStmt *message) { static const PgQuery__DropTableSpaceStmt init_value = PG_QUERY__DROP_TABLE_SPACE_STMT__INIT; *message = init_value; } size_t pg_query__drop_table_space_stmt__get_packed_size (const PgQuery__DropTableSpaceStmt *message) { assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_table_space_stmt__pack (const PgQuery__DropTableSpaceStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_table_space_stmt__pack_to_buffer (const PgQuery__DropTableSpaceStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropTableSpaceStmt * pg_query__drop_table_space_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropTableSpaceStmt *) protobuf_c_message_unpack (&pg_query__drop_table_space_stmt__descriptor, allocator, len, data); } void pg_query__drop_table_space_stmt__free_unpacked (PgQuery__DropTableSpaceStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_table_space_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_object_depends_stmt__init (PgQuery__AlterObjectDependsStmt *message) { static const PgQuery__AlterObjectDependsStmt init_value = PG_QUERY__ALTER_OBJECT_DEPENDS_STMT__INIT; *message = init_value; } size_t pg_query__alter_object_depends_stmt__get_packed_size (const PgQuery__AlterObjectDependsStmt *message) { assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_object_depends_stmt__pack (const PgQuery__AlterObjectDependsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_object_depends_stmt__pack_to_buffer (const PgQuery__AlterObjectDependsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterObjectDependsStmt * pg_query__alter_object_depends_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterObjectDependsStmt *) protobuf_c_message_unpack (&pg_query__alter_object_depends_stmt__descriptor, allocator, len, data); } void pg_query__alter_object_depends_stmt__free_unpacked (PgQuery__AlterObjectDependsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_object_depends_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_object_schema_stmt__init (PgQuery__AlterObjectSchemaStmt *message) { static const PgQuery__AlterObjectSchemaStmt init_value = PG_QUERY__ALTER_OBJECT_SCHEMA_STMT__INIT; *message = init_value; } size_t pg_query__alter_object_schema_stmt__get_packed_size (const PgQuery__AlterObjectSchemaStmt *message) { assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_object_schema_stmt__pack (const PgQuery__AlterObjectSchemaStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_object_schema_stmt__pack_to_buffer (const PgQuery__AlterObjectSchemaStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterObjectSchemaStmt * pg_query__alter_object_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterObjectSchemaStmt *) protobuf_c_message_unpack (&pg_query__alter_object_schema_stmt__descriptor, allocator, len, data); } void pg_query__alter_object_schema_stmt__free_unpacked (PgQuery__AlterObjectSchemaStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_object_schema_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_owner_stmt__init (PgQuery__AlterOwnerStmt *message) { static const PgQuery__AlterOwnerStmt init_value = PG_QUERY__ALTER_OWNER_STMT__INIT; *message = init_value; } size_t pg_query__alter_owner_stmt__get_packed_size (const PgQuery__AlterOwnerStmt *message) { assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_owner_stmt__pack (const PgQuery__AlterOwnerStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_owner_stmt__pack_to_buffer (const PgQuery__AlterOwnerStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterOwnerStmt * pg_query__alter_owner_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterOwnerStmt *) protobuf_c_message_unpack (&pg_query__alter_owner_stmt__descriptor, allocator, len, data); } void pg_query__alter_owner_stmt__free_unpacked (PgQuery__AlterOwnerStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_owner_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_operator_stmt__init (PgQuery__AlterOperatorStmt *message) { static const PgQuery__AlterOperatorStmt init_value = PG_QUERY__ALTER_OPERATOR_STMT__INIT; *message = init_value; } size_t pg_query__alter_operator_stmt__get_packed_size (const PgQuery__AlterOperatorStmt *message) { assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_operator_stmt__pack (const PgQuery__AlterOperatorStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_operator_stmt__pack_to_buffer (const PgQuery__AlterOperatorStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterOperatorStmt * pg_query__alter_operator_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterOperatorStmt *) protobuf_c_message_unpack (&pg_query__alter_operator_stmt__descriptor, allocator, len, data); } void pg_query__alter_operator_stmt__free_unpacked (PgQuery__AlterOperatorStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_operator_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_type_stmt__init (PgQuery__AlterTypeStmt *message) { static const PgQuery__AlterTypeStmt init_value = PG_QUERY__ALTER_TYPE_STMT__INIT; *message = init_value; } size_t pg_query__alter_type_stmt__get_packed_size (const PgQuery__AlterTypeStmt *message) { assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_type_stmt__pack (const PgQuery__AlterTypeStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_type_stmt__pack_to_buffer (const PgQuery__AlterTypeStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTypeStmt * pg_query__alter_type_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTypeStmt *) protobuf_c_message_unpack (&pg_query__alter_type_stmt__descriptor, allocator, len, data); } void pg_query__alter_type_stmt__free_unpacked (PgQuery__AlterTypeStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_type_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_owned_stmt__init (PgQuery__DropOwnedStmt *message) { static const PgQuery__DropOwnedStmt init_value = PG_QUERY__DROP_OWNED_STMT__INIT; *message = init_value; } size_t pg_query__drop_owned_stmt__get_packed_size (const PgQuery__DropOwnedStmt *message) { assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_owned_stmt__pack (const PgQuery__DropOwnedStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_owned_stmt__pack_to_buffer (const PgQuery__DropOwnedStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropOwnedStmt * pg_query__drop_owned_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropOwnedStmt *) protobuf_c_message_unpack (&pg_query__drop_owned_stmt__descriptor, allocator, len, data); } void pg_query__drop_owned_stmt__free_unpacked (PgQuery__DropOwnedStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_owned_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__reassign_owned_stmt__init (PgQuery__ReassignOwnedStmt *message) { static const PgQuery__ReassignOwnedStmt init_value = PG_QUERY__REASSIGN_OWNED_STMT__INIT; *message = init_value; } size_t pg_query__reassign_owned_stmt__get_packed_size (const PgQuery__ReassignOwnedStmt *message) { assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__reassign_owned_stmt__pack (const PgQuery__ReassignOwnedStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__reassign_owned_stmt__pack_to_buffer (const PgQuery__ReassignOwnedStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ReassignOwnedStmt * pg_query__reassign_owned_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ReassignOwnedStmt *) protobuf_c_message_unpack (&pg_query__reassign_owned_stmt__descriptor, allocator, len, data); } void pg_query__reassign_owned_stmt__free_unpacked (PgQuery__ReassignOwnedStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__reassign_owned_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__composite_type_stmt__init (PgQuery__CompositeTypeStmt *message) { static const PgQuery__CompositeTypeStmt init_value = PG_QUERY__COMPOSITE_TYPE_STMT__INIT; *message = init_value; } size_t pg_query__composite_type_stmt__get_packed_size (const PgQuery__CompositeTypeStmt *message) { assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__composite_type_stmt__pack (const PgQuery__CompositeTypeStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__composite_type_stmt__pack_to_buffer (const PgQuery__CompositeTypeStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CompositeTypeStmt * pg_query__composite_type_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CompositeTypeStmt *) protobuf_c_message_unpack (&pg_query__composite_type_stmt__descriptor, allocator, len, data); } void pg_query__composite_type_stmt__free_unpacked (PgQuery__CompositeTypeStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__composite_type_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_enum_stmt__init (PgQuery__CreateEnumStmt *message) { static const PgQuery__CreateEnumStmt init_value = PG_QUERY__CREATE_ENUM_STMT__INIT; *message = init_value; } size_t pg_query__create_enum_stmt__get_packed_size (const PgQuery__CreateEnumStmt *message) { assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_enum_stmt__pack (const PgQuery__CreateEnumStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_enum_stmt__pack_to_buffer (const PgQuery__CreateEnumStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateEnumStmt * pg_query__create_enum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateEnumStmt *) protobuf_c_message_unpack (&pg_query__create_enum_stmt__descriptor, allocator, len, data); } void pg_query__create_enum_stmt__free_unpacked (PgQuery__CreateEnumStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_enum_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_range_stmt__init (PgQuery__CreateRangeStmt *message) { static const PgQuery__CreateRangeStmt init_value = PG_QUERY__CREATE_RANGE_STMT__INIT; *message = init_value; } size_t pg_query__create_range_stmt__get_packed_size (const PgQuery__CreateRangeStmt *message) { assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_range_stmt__pack (const PgQuery__CreateRangeStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_range_stmt__pack_to_buffer (const PgQuery__CreateRangeStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateRangeStmt * pg_query__create_range_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateRangeStmt *) protobuf_c_message_unpack (&pg_query__create_range_stmt__descriptor, allocator, len, data); } void pg_query__create_range_stmt__free_unpacked (PgQuery__CreateRangeStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_range_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_enum_stmt__init (PgQuery__AlterEnumStmt *message) { static const PgQuery__AlterEnumStmt init_value = PG_QUERY__ALTER_ENUM_STMT__INIT; *message = init_value; } size_t pg_query__alter_enum_stmt__get_packed_size (const PgQuery__AlterEnumStmt *message) { assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_enum_stmt__pack (const PgQuery__AlterEnumStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_enum_stmt__pack_to_buffer (const PgQuery__AlterEnumStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterEnumStmt * pg_query__alter_enum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterEnumStmt *) protobuf_c_message_unpack (&pg_query__alter_enum_stmt__descriptor, allocator, len, data); } void pg_query__alter_enum_stmt__free_unpacked (PgQuery__AlterEnumStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_enum_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_tsdictionary_stmt__init (PgQuery__AlterTSDictionaryStmt *message) { static const PgQuery__AlterTSDictionaryStmt init_value = PG_QUERY__ALTER_TSDICTIONARY_STMT__INIT; *message = init_value; } size_t pg_query__alter_tsdictionary_stmt__get_packed_size (const PgQuery__AlterTSDictionaryStmt *message) { assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_tsdictionary_stmt__pack (const PgQuery__AlterTSDictionaryStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_tsdictionary_stmt__pack_to_buffer (const PgQuery__AlterTSDictionaryStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTSDictionaryStmt * pg_query__alter_tsdictionary_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTSDictionaryStmt *) protobuf_c_message_unpack (&pg_query__alter_tsdictionary_stmt__descriptor, allocator, len, data); } void pg_query__alter_tsdictionary_stmt__free_unpacked (PgQuery__AlterTSDictionaryStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_tsdictionary_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_tsconfiguration_stmt__init (PgQuery__AlterTSConfigurationStmt *message) { static const PgQuery__AlterTSConfigurationStmt init_value = PG_QUERY__ALTER_TSCONFIGURATION_STMT__INIT; *message = init_value; } size_t pg_query__alter_tsconfiguration_stmt__get_packed_size (const PgQuery__AlterTSConfigurationStmt *message) { assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_tsconfiguration_stmt__pack (const PgQuery__AlterTSConfigurationStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_tsconfiguration_stmt__pack_to_buffer (const PgQuery__AlterTSConfigurationStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTSConfigurationStmt * pg_query__alter_tsconfiguration_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTSConfigurationStmt *) protobuf_c_message_unpack (&pg_query__alter_tsconfiguration_stmt__descriptor, allocator, len, data); } void pg_query__alter_tsconfiguration_stmt__free_unpacked (PgQuery__AlterTSConfigurationStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_tsconfiguration_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_fdw_stmt__init (PgQuery__CreateFdwStmt *message) { static const PgQuery__CreateFdwStmt init_value = PG_QUERY__CREATE_FDW_STMT__INIT; *message = init_value; } size_t pg_query__create_fdw_stmt__get_packed_size (const PgQuery__CreateFdwStmt *message) { assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_fdw_stmt__pack (const PgQuery__CreateFdwStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_fdw_stmt__pack_to_buffer (const PgQuery__CreateFdwStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateFdwStmt * pg_query__create_fdw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateFdwStmt *) protobuf_c_message_unpack (&pg_query__create_fdw_stmt__descriptor, allocator, len, data); } void pg_query__create_fdw_stmt__free_unpacked (PgQuery__CreateFdwStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_fdw_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_fdw_stmt__init (PgQuery__AlterFdwStmt *message) { static const PgQuery__AlterFdwStmt init_value = PG_QUERY__ALTER_FDW_STMT__INIT; *message = init_value; } size_t pg_query__alter_fdw_stmt__get_packed_size (const PgQuery__AlterFdwStmt *message) { assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_fdw_stmt__pack (const PgQuery__AlterFdwStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_fdw_stmt__pack_to_buffer (const PgQuery__AlterFdwStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterFdwStmt * pg_query__alter_fdw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterFdwStmt *) protobuf_c_message_unpack (&pg_query__alter_fdw_stmt__descriptor, allocator, len, data); } void pg_query__alter_fdw_stmt__free_unpacked (PgQuery__AlterFdwStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_fdw_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_foreign_server_stmt__init (PgQuery__CreateForeignServerStmt *message) { static const PgQuery__CreateForeignServerStmt init_value = PG_QUERY__CREATE_FOREIGN_SERVER_STMT__INIT; *message = init_value; } size_t pg_query__create_foreign_server_stmt__get_packed_size (const PgQuery__CreateForeignServerStmt *message) { assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_foreign_server_stmt__pack (const PgQuery__CreateForeignServerStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_foreign_server_stmt__pack_to_buffer (const PgQuery__CreateForeignServerStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateForeignServerStmt * pg_query__create_foreign_server_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateForeignServerStmt *) protobuf_c_message_unpack (&pg_query__create_foreign_server_stmt__descriptor, allocator, len, data); } void pg_query__create_foreign_server_stmt__free_unpacked (PgQuery__CreateForeignServerStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_foreign_server_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_foreign_server_stmt__init (PgQuery__AlterForeignServerStmt *message) { static const PgQuery__AlterForeignServerStmt init_value = PG_QUERY__ALTER_FOREIGN_SERVER_STMT__INIT; *message = init_value; } size_t pg_query__alter_foreign_server_stmt__get_packed_size (const PgQuery__AlterForeignServerStmt *message) { assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_foreign_server_stmt__pack (const PgQuery__AlterForeignServerStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_foreign_server_stmt__pack_to_buffer (const PgQuery__AlterForeignServerStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterForeignServerStmt * pg_query__alter_foreign_server_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterForeignServerStmt *) protobuf_c_message_unpack (&pg_query__alter_foreign_server_stmt__descriptor, allocator, len, data); } void pg_query__alter_foreign_server_stmt__free_unpacked (PgQuery__AlterForeignServerStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_foreign_server_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_user_mapping_stmt__init (PgQuery__CreateUserMappingStmt *message) { static const PgQuery__CreateUserMappingStmt init_value = PG_QUERY__CREATE_USER_MAPPING_STMT__INIT; *message = init_value; } size_t pg_query__create_user_mapping_stmt__get_packed_size (const PgQuery__CreateUserMappingStmt *message) { assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_user_mapping_stmt__pack (const PgQuery__CreateUserMappingStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_user_mapping_stmt__pack_to_buffer (const PgQuery__CreateUserMappingStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateUserMappingStmt * pg_query__create_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateUserMappingStmt *) protobuf_c_message_unpack (&pg_query__create_user_mapping_stmt__descriptor, allocator, len, data); } void pg_query__create_user_mapping_stmt__free_unpacked (PgQuery__CreateUserMappingStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_user_mapping_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_user_mapping_stmt__init (PgQuery__AlterUserMappingStmt *message) { static const PgQuery__AlterUserMappingStmt init_value = PG_QUERY__ALTER_USER_MAPPING_STMT__INIT; *message = init_value; } size_t pg_query__alter_user_mapping_stmt__get_packed_size (const PgQuery__AlterUserMappingStmt *message) { assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_user_mapping_stmt__pack (const PgQuery__AlterUserMappingStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_user_mapping_stmt__pack_to_buffer (const PgQuery__AlterUserMappingStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterUserMappingStmt * pg_query__alter_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterUserMappingStmt *) protobuf_c_message_unpack (&pg_query__alter_user_mapping_stmt__descriptor, allocator, len, data); } void pg_query__alter_user_mapping_stmt__free_unpacked (PgQuery__AlterUserMappingStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_user_mapping_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_user_mapping_stmt__init (PgQuery__DropUserMappingStmt *message) { static const PgQuery__DropUserMappingStmt init_value = PG_QUERY__DROP_USER_MAPPING_STMT__INIT; *message = init_value; } size_t pg_query__drop_user_mapping_stmt__get_packed_size (const PgQuery__DropUserMappingStmt *message) { assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_user_mapping_stmt__pack (const PgQuery__DropUserMappingStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_user_mapping_stmt__pack_to_buffer (const PgQuery__DropUserMappingStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropUserMappingStmt * pg_query__drop_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropUserMappingStmt *) protobuf_c_message_unpack (&pg_query__drop_user_mapping_stmt__descriptor, allocator, len, data); } void pg_query__drop_user_mapping_stmt__free_unpacked (PgQuery__DropUserMappingStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_user_mapping_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_table_space_options_stmt__init (PgQuery__AlterTableSpaceOptionsStmt *message) { static const PgQuery__AlterTableSpaceOptionsStmt init_value = PG_QUERY__ALTER_TABLE_SPACE_OPTIONS_STMT__INIT; *message = init_value; } size_t pg_query__alter_table_space_options_stmt__get_packed_size (const PgQuery__AlterTableSpaceOptionsStmt *message) { assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_table_space_options_stmt__pack (const PgQuery__AlterTableSpaceOptionsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_table_space_options_stmt__pack_to_buffer (const PgQuery__AlterTableSpaceOptionsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTableSpaceOptionsStmt * pg_query__alter_table_space_options_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTableSpaceOptionsStmt *) protobuf_c_message_unpack (&pg_query__alter_table_space_options_stmt__descriptor, allocator, len, data); } void pg_query__alter_table_space_options_stmt__free_unpacked (PgQuery__AlterTableSpaceOptionsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_table_space_options_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_table_move_all_stmt__init (PgQuery__AlterTableMoveAllStmt *message) { static const PgQuery__AlterTableMoveAllStmt init_value = PG_QUERY__ALTER_TABLE_MOVE_ALL_STMT__INIT; *message = init_value; } size_t pg_query__alter_table_move_all_stmt__get_packed_size (const PgQuery__AlterTableMoveAllStmt *message) { assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_table_move_all_stmt__pack (const PgQuery__AlterTableMoveAllStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_table_move_all_stmt__pack_to_buffer (const PgQuery__AlterTableMoveAllStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterTableMoveAllStmt * pg_query__alter_table_move_all_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterTableMoveAllStmt *) protobuf_c_message_unpack (&pg_query__alter_table_move_all_stmt__descriptor, allocator, len, data); } void pg_query__alter_table_move_all_stmt__free_unpacked (PgQuery__AlterTableMoveAllStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_table_move_all_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sec_label_stmt__init (PgQuery__SecLabelStmt *message) { static const PgQuery__SecLabelStmt init_value = PG_QUERY__SEC_LABEL_STMT__INIT; *message = init_value; } size_t pg_query__sec_label_stmt__get_packed_size (const PgQuery__SecLabelStmt *message) { assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sec_label_stmt__pack (const PgQuery__SecLabelStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sec_label_stmt__pack_to_buffer (const PgQuery__SecLabelStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SecLabelStmt * pg_query__sec_label_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SecLabelStmt *) protobuf_c_message_unpack (&pg_query__sec_label_stmt__descriptor, allocator, len, data); } void pg_query__sec_label_stmt__free_unpacked (PgQuery__SecLabelStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sec_label_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_foreign_table_stmt__init (PgQuery__CreateForeignTableStmt *message) { static const PgQuery__CreateForeignTableStmt init_value = PG_QUERY__CREATE_FOREIGN_TABLE_STMT__INIT; *message = init_value; } size_t pg_query__create_foreign_table_stmt__get_packed_size (const PgQuery__CreateForeignTableStmt *message) { assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_foreign_table_stmt__pack (const PgQuery__CreateForeignTableStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_foreign_table_stmt__pack_to_buffer (const PgQuery__CreateForeignTableStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateForeignTableStmt * pg_query__create_foreign_table_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateForeignTableStmt *) protobuf_c_message_unpack (&pg_query__create_foreign_table_stmt__descriptor, allocator, len, data); } void pg_query__create_foreign_table_stmt__free_unpacked (PgQuery__CreateForeignTableStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_foreign_table_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__import_foreign_schema_stmt__init (PgQuery__ImportForeignSchemaStmt *message) { static const PgQuery__ImportForeignSchemaStmt init_value = PG_QUERY__IMPORT_FOREIGN_SCHEMA_STMT__INIT; *message = init_value; } size_t pg_query__import_foreign_schema_stmt__get_packed_size (const PgQuery__ImportForeignSchemaStmt *message) { assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__import_foreign_schema_stmt__pack (const PgQuery__ImportForeignSchemaStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__import_foreign_schema_stmt__pack_to_buffer (const PgQuery__ImportForeignSchemaStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ImportForeignSchemaStmt * pg_query__import_foreign_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ImportForeignSchemaStmt *) protobuf_c_message_unpack (&pg_query__import_foreign_schema_stmt__descriptor, allocator, len, data); } void pg_query__import_foreign_schema_stmt__free_unpacked (PgQuery__ImportForeignSchemaStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__import_foreign_schema_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_extension_stmt__init (PgQuery__CreateExtensionStmt *message) { static const PgQuery__CreateExtensionStmt init_value = PG_QUERY__CREATE_EXTENSION_STMT__INIT; *message = init_value; } size_t pg_query__create_extension_stmt__get_packed_size (const PgQuery__CreateExtensionStmt *message) { assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_extension_stmt__pack (const PgQuery__CreateExtensionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_extension_stmt__pack_to_buffer (const PgQuery__CreateExtensionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateExtensionStmt * pg_query__create_extension_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateExtensionStmt *) protobuf_c_message_unpack (&pg_query__create_extension_stmt__descriptor, allocator, len, data); } void pg_query__create_extension_stmt__free_unpacked (PgQuery__CreateExtensionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_extension_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_extension_stmt__init (PgQuery__AlterExtensionStmt *message) { static const PgQuery__AlterExtensionStmt init_value = PG_QUERY__ALTER_EXTENSION_STMT__INIT; *message = init_value; } size_t pg_query__alter_extension_stmt__get_packed_size (const PgQuery__AlterExtensionStmt *message) { assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_extension_stmt__pack (const PgQuery__AlterExtensionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_extension_stmt__pack_to_buffer (const PgQuery__AlterExtensionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterExtensionStmt * pg_query__alter_extension_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterExtensionStmt *) protobuf_c_message_unpack (&pg_query__alter_extension_stmt__descriptor, allocator, len, data); } void pg_query__alter_extension_stmt__free_unpacked (PgQuery__AlterExtensionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_extension_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_extension_contents_stmt__init (PgQuery__AlterExtensionContentsStmt *message) { static const PgQuery__AlterExtensionContentsStmt init_value = PG_QUERY__ALTER_EXTENSION_CONTENTS_STMT__INIT; *message = init_value; } size_t pg_query__alter_extension_contents_stmt__get_packed_size (const PgQuery__AlterExtensionContentsStmt *message) { assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_extension_contents_stmt__pack (const PgQuery__AlterExtensionContentsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_extension_contents_stmt__pack_to_buffer (const PgQuery__AlterExtensionContentsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterExtensionContentsStmt * pg_query__alter_extension_contents_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterExtensionContentsStmt *) protobuf_c_message_unpack (&pg_query__alter_extension_contents_stmt__descriptor, allocator, len, data); } void pg_query__alter_extension_contents_stmt__free_unpacked (PgQuery__AlterExtensionContentsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_extension_contents_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_event_trig_stmt__init (PgQuery__CreateEventTrigStmt *message) { static const PgQuery__CreateEventTrigStmt init_value = PG_QUERY__CREATE_EVENT_TRIG_STMT__INIT; *message = init_value; } size_t pg_query__create_event_trig_stmt__get_packed_size (const PgQuery__CreateEventTrigStmt *message) { assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_event_trig_stmt__pack (const PgQuery__CreateEventTrigStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_event_trig_stmt__pack_to_buffer (const PgQuery__CreateEventTrigStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateEventTrigStmt * pg_query__create_event_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateEventTrigStmt *) protobuf_c_message_unpack (&pg_query__create_event_trig_stmt__descriptor, allocator, len, data); } void pg_query__create_event_trig_stmt__free_unpacked (PgQuery__CreateEventTrigStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_event_trig_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_event_trig_stmt__init (PgQuery__AlterEventTrigStmt *message) { static const PgQuery__AlterEventTrigStmt init_value = PG_QUERY__ALTER_EVENT_TRIG_STMT__INIT; *message = init_value; } size_t pg_query__alter_event_trig_stmt__get_packed_size (const PgQuery__AlterEventTrigStmt *message) { assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_event_trig_stmt__pack (const PgQuery__AlterEventTrigStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_event_trig_stmt__pack_to_buffer (const PgQuery__AlterEventTrigStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterEventTrigStmt * pg_query__alter_event_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterEventTrigStmt *) protobuf_c_message_unpack (&pg_query__alter_event_trig_stmt__descriptor, allocator, len, data); } void pg_query__alter_event_trig_stmt__free_unpacked (PgQuery__AlterEventTrigStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_event_trig_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__refresh_mat_view_stmt__init (PgQuery__RefreshMatViewStmt *message) { static const PgQuery__RefreshMatViewStmt init_value = PG_QUERY__REFRESH_MAT_VIEW_STMT__INIT; *message = init_value; } size_t pg_query__refresh_mat_view_stmt__get_packed_size (const PgQuery__RefreshMatViewStmt *message) { assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__refresh_mat_view_stmt__pack (const PgQuery__RefreshMatViewStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__refresh_mat_view_stmt__pack_to_buffer (const PgQuery__RefreshMatViewStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RefreshMatViewStmt * pg_query__refresh_mat_view_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RefreshMatViewStmt *) protobuf_c_message_unpack (&pg_query__refresh_mat_view_stmt__descriptor, allocator, len, data); } void pg_query__refresh_mat_view_stmt__free_unpacked (PgQuery__RefreshMatViewStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__refresh_mat_view_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__replica_identity_stmt__init (PgQuery__ReplicaIdentityStmt *message) { static const PgQuery__ReplicaIdentityStmt init_value = PG_QUERY__REPLICA_IDENTITY_STMT__INIT; *message = init_value; } size_t pg_query__replica_identity_stmt__get_packed_size (const PgQuery__ReplicaIdentityStmt *message) { assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__replica_identity_stmt__pack (const PgQuery__ReplicaIdentityStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__replica_identity_stmt__pack_to_buffer (const PgQuery__ReplicaIdentityStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ReplicaIdentityStmt * pg_query__replica_identity_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ReplicaIdentityStmt *) protobuf_c_message_unpack (&pg_query__replica_identity_stmt__descriptor, allocator, len, data); } void pg_query__replica_identity_stmt__free_unpacked (PgQuery__ReplicaIdentityStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__replica_identity_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_system_stmt__init (PgQuery__AlterSystemStmt *message) { static const PgQuery__AlterSystemStmt init_value = PG_QUERY__ALTER_SYSTEM_STMT__INIT; *message = init_value; } size_t pg_query__alter_system_stmt__get_packed_size (const PgQuery__AlterSystemStmt *message) { assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_system_stmt__pack (const PgQuery__AlterSystemStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_system_stmt__pack_to_buffer (const PgQuery__AlterSystemStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterSystemStmt * pg_query__alter_system_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterSystemStmt *) protobuf_c_message_unpack (&pg_query__alter_system_stmt__descriptor, allocator, len, data); } void pg_query__alter_system_stmt__free_unpacked (PgQuery__AlterSystemStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_system_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_policy_stmt__init (PgQuery__CreatePolicyStmt *message) { static const PgQuery__CreatePolicyStmt init_value = PG_QUERY__CREATE_POLICY_STMT__INIT; *message = init_value; } size_t pg_query__create_policy_stmt__get_packed_size (const PgQuery__CreatePolicyStmt *message) { assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_policy_stmt__pack (const PgQuery__CreatePolicyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_policy_stmt__pack_to_buffer (const PgQuery__CreatePolicyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreatePolicyStmt * pg_query__create_policy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreatePolicyStmt *) protobuf_c_message_unpack (&pg_query__create_policy_stmt__descriptor, allocator, len, data); } void pg_query__create_policy_stmt__free_unpacked (PgQuery__CreatePolicyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_policy_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_policy_stmt__init (PgQuery__AlterPolicyStmt *message) { static const PgQuery__AlterPolicyStmt init_value = PG_QUERY__ALTER_POLICY_STMT__INIT; *message = init_value; } size_t pg_query__alter_policy_stmt__get_packed_size (const PgQuery__AlterPolicyStmt *message) { assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_policy_stmt__pack (const PgQuery__AlterPolicyStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_policy_stmt__pack_to_buffer (const PgQuery__AlterPolicyStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterPolicyStmt * pg_query__alter_policy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterPolicyStmt *) protobuf_c_message_unpack (&pg_query__alter_policy_stmt__descriptor, allocator, len, data); } void pg_query__alter_policy_stmt__free_unpacked (PgQuery__AlterPolicyStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_policy_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_transform_stmt__init (PgQuery__CreateTransformStmt *message) { static const PgQuery__CreateTransformStmt init_value = PG_QUERY__CREATE_TRANSFORM_STMT__INIT; *message = init_value; } size_t pg_query__create_transform_stmt__get_packed_size (const PgQuery__CreateTransformStmt *message) { assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_transform_stmt__pack (const PgQuery__CreateTransformStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_transform_stmt__pack_to_buffer (const PgQuery__CreateTransformStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateTransformStmt * pg_query__create_transform_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateTransformStmt *) protobuf_c_message_unpack (&pg_query__create_transform_stmt__descriptor, allocator, len, data); } void pg_query__create_transform_stmt__free_unpacked (PgQuery__CreateTransformStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_transform_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_am_stmt__init (PgQuery__CreateAmStmt *message) { static const PgQuery__CreateAmStmt init_value = PG_QUERY__CREATE_AM_STMT__INIT; *message = init_value; } size_t pg_query__create_am_stmt__get_packed_size (const PgQuery__CreateAmStmt *message) { assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_am_stmt__pack (const PgQuery__CreateAmStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_am_stmt__pack_to_buffer (const PgQuery__CreateAmStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateAmStmt * pg_query__create_am_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateAmStmt *) protobuf_c_message_unpack (&pg_query__create_am_stmt__descriptor, allocator, len, data); } void pg_query__create_am_stmt__free_unpacked (PgQuery__CreateAmStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_am_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_publication_stmt__init (PgQuery__CreatePublicationStmt *message) { static const PgQuery__CreatePublicationStmt init_value = PG_QUERY__CREATE_PUBLICATION_STMT__INIT; *message = init_value; } size_t pg_query__create_publication_stmt__get_packed_size (const PgQuery__CreatePublicationStmt *message) { assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_publication_stmt__pack (const PgQuery__CreatePublicationStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_publication_stmt__pack_to_buffer (const PgQuery__CreatePublicationStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreatePublicationStmt * pg_query__create_publication_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreatePublicationStmt *) protobuf_c_message_unpack (&pg_query__create_publication_stmt__descriptor, allocator, len, data); } void pg_query__create_publication_stmt__free_unpacked (PgQuery__CreatePublicationStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_publication_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_publication_stmt__init (PgQuery__AlterPublicationStmt *message) { static const PgQuery__AlterPublicationStmt init_value = PG_QUERY__ALTER_PUBLICATION_STMT__INIT; *message = init_value; } size_t pg_query__alter_publication_stmt__get_packed_size (const PgQuery__AlterPublicationStmt *message) { assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_publication_stmt__pack (const PgQuery__AlterPublicationStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_publication_stmt__pack_to_buffer (const PgQuery__AlterPublicationStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterPublicationStmt * pg_query__alter_publication_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterPublicationStmt *) protobuf_c_message_unpack (&pg_query__alter_publication_stmt__descriptor, allocator, len, data); } void pg_query__alter_publication_stmt__free_unpacked (PgQuery__AlterPublicationStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_publication_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_subscription_stmt__init (PgQuery__CreateSubscriptionStmt *message) { static const PgQuery__CreateSubscriptionStmt init_value = PG_QUERY__CREATE_SUBSCRIPTION_STMT__INIT; *message = init_value; } size_t pg_query__create_subscription_stmt__get_packed_size (const PgQuery__CreateSubscriptionStmt *message) { assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_subscription_stmt__pack (const PgQuery__CreateSubscriptionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_subscription_stmt__pack_to_buffer (const PgQuery__CreateSubscriptionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateSubscriptionStmt * pg_query__create_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateSubscriptionStmt *) protobuf_c_message_unpack (&pg_query__create_subscription_stmt__descriptor, allocator, len, data); } void pg_query__create_subscription_stmt__free_unpacked (PgQuery__CreateSubscriptionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_subscription_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_subscription_stmt__init (PgQuery__AlterSubscriptionStmt *message) { static const PgQuery__AlterSubscriptionStmt init_value = PG_QUERY__ALTER_SUBSCRIPTION_STMT__INIT; *message = init_value; } size_t pg_query__alter_subscription_stmt__get_packed_size (const PgQuery__AlterSubscriptionStmt *message) { assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_subscription_stmt__pack (const PgQuery__AlterSubscriptionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_subscription_stmt__pack_to_buffer (const PgQuery__AlterSubscriptionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterSubscriptionStmt * pg_query__alter_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterSubscriptionStmt *) protobuf_c_message_unpack (&pg_query__alter_subscription_stmt__descriptor, allocator, len, data); } void pg_query__alter_subscription_stmt__free_unpacked (PgQuery__AlterSubscriptionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_subscription_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__drop_subscription_stmt__init (PgQuery__DropSubscriptionStmt *message) { static const PgQuery__DropSubscriptionStmt init_value = PG_QUERY__DROP_SUBSCRIPTION_STMT__INIT; *message = init_value; } size_t pg_query__drop_subscription_stmt__get_packed_size (const PgQuery__DropSubscriptionStmt *message) { assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__drop_subscription_stmt__pack (const PgQuery__DropSubscriptionStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__drop_subscription_stmt__pack_to_buffer (const PgQuery__DropSubscriptionStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DropSubscriptionStmt * pg_query__drop_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DropSubscriptionStmt *) protobuf_c_message_unpack (&pg_query__drop_subscription_stmt__descriptor, allocator, len, data); } void pg_query__drop_subscription_stmt__free_unpacked (PgQuery__DropSubscriptionStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__drop_subscription_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_stats_stmt__init (PgQuery__CreateStatsStmt *message) { static const PgQuery__CreateStatsStmt init_value = PG_QUERY__CREATE_STATS_STMT__INIT; *message = init_value; } size_t pg_query__create_stats_stmt__get_packed_size (const PgQuery__CreateStatsStmt *message) { assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_stats_stmt__pack (const PgQuery__CreateStatsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_stats_stmt__pack_to_buffer (const PgQuery__CreateStatsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateStatsStmt * pg_query__create_stats_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateStatsStmt *) protobuf_c_message_unpack (&pg_query__create_stats_stmt__descriptor, allocator, len, data); } void pg_query__create_stats_stmt__free_unpacked (PgQuery__CreateStatsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_stats_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_collation_stmt__init (PgQuery__AlterCollationStmt *message) { static const PgQuery__AlterCollationStmt init_value = PG_QUERY__ALTER_COLLATION_STMT__INIT; *message = init_value; } size_t pg_query__alter_collation_stmt__get_packed_size (const PgQuery__AlterCollationStmt *message) { assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_collation_stmt__pack (const PgQuery__AlterCollationStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_collation_stmt__pack_to_buffer (const PgQuery__AlterCollationStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterCollationStmt * pg_query__alter_collation_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterCollationStmt *) protobuf_c_message_unpack (&pg_query__alter_collation_stmt__descriptor, allocator, len, data); } void pg_query__alter_collation_stmt__free_unpacked (PgQuery__AlterCollationStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_collation_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__call_stmt__init (PgQuery__CallStmt *message) { static const PgQuery__CallStmt init_value = PG_QUERY__CALL_STMT__INIT; *message = init_value; } size_t pg_query__call_stmt__get_packed_size (const PgQuery__CallStmt *message) { assert(message->base.descriptor == &pg_query__call_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__call_stmt__pack (const PgQuery__CallStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__call_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__call_stmt__pack_to_buffer (const PgQuery__CallStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__call_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CallStmt * pg_query__call_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CallStmt *) protobuf_c_message_unpack (&pg_query__call_stmt__descriptor, allocator, len, data); } void pg_query__call_stmt__free_unpacked (PgQuery__CallStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__call_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__alter_stats_stmt__init (PgQuery__AlterStatsStmt *message) { static const PgQuery__AlterStatsStmt init_value = PG_QUERY__ALTER_STATS_STMT__INIT; *message = init_value; } size_t pg_query__alter_stats_stmt__get_packed_size (const PgQuery__AlterStatsStmt *message) { assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__alter_stats_stmt__pack (const PgQuery__AlterStatsStmt *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__alter_stats_stmt__pack_to_buffer (const PgQuery__AlterStatsStmt *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AlterStatsStmt * pg_query__alter_stats_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AlterStatsStmt *) protobuf_c_message_unpack (&pg_query__alter_stats_stmt__descriptor, allocator, len, data); } void pg_query__alter_stats_stmt__free_unpacked (PgQuery__AlterStatsStmt *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__alter_stats_stmt__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__expr__init (PgQuery__AExpr *message) { static const PgQuery__AExpr init_value = PG_QUERY__A__EXPR__INIT; *message = init_value; } size_t pg_query__a__expr__get_packed_size (const PgQuery__AExpr *message) { assert(message->base.descriptor == &pg_query__a__expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__expr__pack (const PgQuery__AExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__expr__pack_to_buffer (const PgQuery__AExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AExpr * pg_query__a__expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AExpr *) protobuf_c_message_unpack (&pg_query__a__expr__descriptor, allocator, len, data); } void pg_query__a__expr__free_unpacked (PgQuery__AExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__column_ref__init (PgQuery__ColumnRef *message) { static const PgQuery__ColumnRef init_value = PG_QUERY__COLUMN_REF__INIT; *message = init_value; } size_t pg_query__column_ref__get_packed_size (const PgQuery__ColumnRef *message) { assert(message->base.descriptor == &pg_query__column_ref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__column_ref__pack (const PgQuery__ColumnRef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__column_ref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__column_ref__pack_to_buffer (const PgQuery__ColumnRef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__column_ref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ColumnRef * pg_query__column_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ColumnRef *) protobuf_c_message_unpack (&pg_query__column_ref__descriptor, allocator, len, data); } void pg_query__column_ref__free_unpacked (PgQuery__ColumnRef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__column_ref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__param_ref__init (PgQuery__ParamRef *message) { static const PgQuery__ParamRef init_value = PG_QUERY__PARAM_REF__INIT; *message = init_value; } size_t pg_query__param_ref__get_packed_size (const PgQuery__ParamRef *message) { assert(message->base.descriptor == &pg_query__param_ref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__param_ref__pack (const PgQuery__ParamRef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__param_ref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__param_ref__pack_to_buffer (const PgQuery__ParamRef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__param_ref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ParamRef * pg_query__param_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ParamRef *) protobuf_c_message_unpack (&pg_query__param_ref__descriptor, allocator, len, data); } void pg_query__param_ref__free_unpacked (PgQuery__ParamRef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__param_ref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__const__init (PgQuery__AConst *message) { static const PgQuery__AConst init_value = PG_QUERY__A__CONST__INIT; *message = init_value; } size_t pg_query__a__const__get_packed_size (const PgQuery__AConst *message) { assert(message->base.descriptor == &pg_query__a__const__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__const__pack (const PgQuery__AConst *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__const__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__const__pack_to_buffer (const PgQuery__AConst *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__const__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AConst * pg_query__a__const__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AConst *) protobuf_c_message_unpack (&pg_query__a__const__descriptor, allocator, len, data); } void pg_query__a__const__free_unpacked (PgQuery__AConst *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__const__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__func_call__init (PgQuery__FuncCall *message) { static const PgQuery__FuncCall init_value = PG_QUERY__FUNC_CALL__INIT; *message = init_value; } size_t pg_query__func_call__get_packed_size (const PgQuery__FuncCall *message) { assert(message->base.descriptor == &pg_query__func_call__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__func_call__pack (const PgQuery__FuncCall *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__func_call__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__func_call__pack_to_buffer (const PgQuery__FuncCall *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__func_call__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FuncCall * pg_query__func_call__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FuncCall *) protobuf_c_message_unpack (&pg_query__func_call__descriptor, allocator, len, data); } void pg_query__func_call__free_unpacked (PgQuery__FuncCall *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__func_call__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__star__init (PgQuery__AStar *message) { static const PgQuery__AStar init_value = PG_QUERY__A__STAR__INIT; *message = init_value; } size_t pg_query__a__star__get_packed_size (const PgQuery__AStar *message) { assert(message->base.descriptor == &pg_query__a__star__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__star__pack (const PgQuery__AStar *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__star__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__star__pack_to_buffer (const PgQuery__AStar *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__star__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AStar * pg_query__a__star__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AStar *) protobuf_c_message_unpack (&pg_query__a__star__descriptor, allocator, len, data); } void pg_query__a__star__free_unpacked (PgQuery__AStar *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__star__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__indices__init (PgQuery__AIndices *message) { static const PgQuery__AIndices init_value = PG_QUERY__A__INDICES__INIT; *message = init_value; } size_t pg_query__a__indices__get_packed_size (const PgQuery__AIndices *message) { assert(message->base.descriptor == &pg_query__a__indices__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__indices__pack (const PgQuery__AIndices *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__indices__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__indices__pack_to_buffer (const PgQuery__AIndices *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__indices__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AIndices * pg_query__a__indices__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AIndices *) protobuf_c_message_unpack (&pg_query__a__indices__descriptor, allocator, len, data); } void pg_query__a__indices__free_unpacked (PgQuery__AIndices *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__indices__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__indirection__init (PgQuery__AIndirection *message) { static const PgQuery__AIndirection init_value = PG_QUERY__A__INDIRECTION__INIT; *message = init_value; } size_t pg_query__a__indirection__get_packed_size (const PgQuery__AIndirection *message) { assert(message->base.descriptor == &pg_query__a__indirection__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__indirection__pack (const PgQuery__AIndirection *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__indirection__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__indirection__pack_to_buffer (const PgQuery__AIndirection *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__indirection__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AIndirection * pg_query__a__indirection__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AIndirection *) protobuf_c_message_unpack (&pg_query__a__indirection__descriptor, allocator, len, data); } void pg_query__a__indirection__free_unpacked (PgQuery__AIndirection *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__indirection__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__a__array_expr__init (PgQuery__AArrayExpr *message) { static const PgQuery__AArrayExpr init_value = PG_QUERY__A__ARRAY_EXPR__INIT; *message = init_value; } size_t pg_query__a__array_expr__get_packed_size (const PgQuery__AArrayExpr *message) { assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__a__array_expr__pack (const PgQuery__AArrayExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__a__array_expr__pack_to_buffer (const PgQuery__AArrayExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AArrayExpr * pg_query__a__array_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AArrayExpr *) protobuf_c_message_unpack (&pg_query__a__array_expr__descriptor, allocator, len, data); } void pg_query__a__array_expr__free_unpacked (PgQuery__AArrayExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__a__array_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__res_target__init (PgQuery__ResTarget *message) { static const PgQuery__ResTarget init_value = PG_QUERY__RES_TARGET__INIT; *message = init_value; } size_t pg_query__res_target__get_packed_size (const PgQuery__ResTarget *message) { assert(message->base.descriptor == &pg_query__res_target__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__res_target__pack (const PgQuery__ResTarget *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__res_target__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__res_target__pack_to_buffer (const PgQuery__ResTarget *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__res_target__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ResTarget * pg_query__res_target__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ResTarget *) protobuf_c_message_unpack (&pg_query__res_target__descriptor, allocator, len, data); } void pg_query__res_target__free_unpacked (PgQuery__ResTarget *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__res_target__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__multi_assign_ref__init (PgQuery__MultiAssignRef *message) { static const PgQuery__MultiAssignRef init_value = PG_QUERY__MULTI_ASSIGN_REF__INIT; *message = init_value; } size_t pg_query__multi_assign_ref__get_packed_size (const PgQuery__MultiAssignRef *message) { assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__multi_assign_ref__pack (const PgQuery__MultiAssignRef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__multi_assign_ref__pack_to_buffer (const PgQuery__MultiAssignRef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__MultiAssignRef * pg_query__multi_assign_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__MultiAssignRef *) protobuf_c_message_unpack (&pg_query__multi_assign_ref__descriptor, allocator, len, data); } void pg_query__multi_assign_ref__free_unpacked (PgQuery__MultiAssignRef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__multi_assign_ref__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__type_cast__init (PgQuery__TypeCast *message) { static const PgQuery__TypeCast init_value = PG_QUERY__TYPE_CAST__INIT; *message = init_value; } size_t pg_query__type_cast__get_packed_size (const PgQuery__TypeCast *message) { assert(message->base.descriptor == &pg_query__type_cast__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__type_cast__pack (const PgQuery__TypeCast *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__type_cast__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__type_cast__pack_to_buffer (const PgQuery__TypeCast *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__type_cast__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TypeCast * pg_query__type_cast__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TypeCast *) protobuf_c_message_unpack (&pg_query__type_cast__descriptor, allocator, len, data); } void pg_query__type_cast__free_unpacked (PgQuery__TypeCast *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__type_cast__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__collate_clause__init (PgQuery__CollateClause *message) { static const PgQuery__CollateClause init_value = PG_QUERY__COLLATE_CLAUSE__INIT; *message = init_value; } size_t pg_query__collate_clause__get_packed_size (const PgQuery__CollateClause *message) { assert(message->base.descriptor == &pg_query__collate_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__collate_clause__pack (const PgQuery__CollateClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__collate_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__collate_clause__pack_to_buffer (const PgQuery__CollateClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__collate_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CollateClause * pg_query__collate_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CollateClause *) protobuf_c_message_unpack (&pg_query__collate_clause__descriptor, allocator, len, data); } void pg_query__collate_clause__free_unpacked (PgQuery__CollateClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__collate_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sort_by__init (PgQuery__SortBy *message) { static const PgQuery__SortBy init_value = PG_QUERY__SORT_BY__INIT; *message = init_value; } size_t pg_query__sort_by__get_packed_size (const PgQuery__SortBy *message) { assert(message->base.descriptor == &pg_query__sort_by__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sort_by__pack (const PgQuery__SortBy *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sort_by__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sort_by__pack_to_buffer (const PgQuery__SortBy *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sort_by__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SortBy * pg_query__sort_by__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SortBy *) protobuf_c_message_unpack (&pg_query__sort_by__descriptor, allocator, len, data); } void pg_query__sort_by__free_unpacked (PgQuery__SortBy *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sort_by__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__window_def__init (PgQuery__WindowDef *message) { static const PgQuery__WindowDef init_value = PG_QUERY__WINDOW_DEF__INIT; *message = init_value; } size_t pg_query__window_def__get_packed_size (const PgQuery__WindowDef *message) { assert(message->base.descriptor == &pg_query__window_def__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__window_def__pack (const PgQuery__WindowDef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__window_def__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__window_def__pack_to_buffer (const PgQuery__WindowDef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__window_def__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WindowDef * pg_query__window_def__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WindowDef *) protobuf_c_message_unpack (&pg_query__window_def__descriptor, allocator, len, data); } void pg_query__window_def__free_unpacked (PgQuery__WindowDef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__window_def__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_subselect__init (PgQuery__RangeSubselect *message) { static const PgQuery__RangeSubselect init_value = PG_QUERY__RANGE_SUBSELECT__INIT; *message = init_value; } size_t pg_query__range_subselect__get_packed_size (const PgQuery__RangeSubselect *message) { assert(message->base.descriptor == &pg_query__range_subselect__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_subselect__pack (const PgQuery__RangeSubselect *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_subselect__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_subselect__pack_to_buffer (const PgQuery__RangeSubselect *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_subselect__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeSubselect * pg_query__range_subselect__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeSubselect *) protobuf_c_message_unpack (&pg_query__range_subselect__descriptor, allocator, len, data); } void pg_query__range_subselect__free_unpacked (PgQuery__RangeSubselect *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_subselect__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_function__init (PgQuery__RangeFunction *message) { static const PgQuery__RangeFunction init_value = PG_QUERY__RANGE_FUNCTION__INIT; *message = init_value; } size_t pg_query__range_function__get_packed_size (const PgQuery__RangeFunction *message) { assert(message->base.descriptor == &pg_query__range_function__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_function__pack (const PgQuery__RangeFunction *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_function__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_function__pack_to_buffer (const PgQuery__RangeFunction *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_function__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeFunction * pg_query__range_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeFunction *) protobuf_c_message_unpack (&pg_query__range_function__descriptor, allocator, len, data); } void pg_query__range_function__free_unpacked (PgQuery__RangeFunction *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_function__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_table_sample__init (PgQuery__RangeTableSample *message) { static const PgQuery__RangeTableSample init_value = PG_QUERY__RANGE_TABLE_SAMPLE__INIT; *message = init_value; } size_t pg_query__range_table_sample__get_packed_size (const PgQuery__RangeTableSample *message) { assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_table_sample__pack (const PgQuery__RangeTableSample *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_table_sample__pack_to_buffer (const PgQuery__RangeTableSample *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTableSample * pg_query__range_table_sample__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTableSample *) protobuf_c_message_unpack (&pg_query__range_table_sample__descriptor, allocator, len, data); } void pg_query__range_table_sample__free_unpacked (PgQuery__RangeTableSample *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_table_sample__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_table_func__init (PgQuery__RangeTableFunc *message) { static const PgQuery__RangeTableFunc init_value = PG_QUERY__RANGE_TABLE_FUNC__INIT; *message = init_value; } size_t pg_query__range_table_func__get_packed_size (const PgQuery__RangeTableFunc *message) { assert(message->base.descriptor == &pg_query__range_table_func__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_table_func__pack (const PgQuery__RangeTableFunc *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_table_func__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_table_func__pack_to_buffer (const PgQuery__RangeTableFunc *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_table_func__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTableFunc * pg_query__range_table_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTableFunc *) protobuf_c_message_unpack (&pg_query__range_table_func__descriptor, allocator, len, data); } void pg_query__range_table_func__free_unpacked (PgQuery__RangeTableFunc *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_table_func__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_table_func_col__init (PgQuery__RangeTableFuncCol *message) { static const PgQuery__RangeTableFuncCol init_value = PG_QUERY__RANGE_TABLE_FUNC_COL__INIT; *message = init_value; } size_t pg_query__range_table_func_col__get_packed_size (const PgQuery__RangeTableFuncCol *message) { assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_table_func_col__pack (const PgQuery__RangeTableFuncCol *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_table_func_col__pack_to_buffer (const PgQuery__RangeTableFuncCol *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTableFuncCol * pg_query__range_table_func_col__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTableFuncCol *) protobuf_c_message_unpack (&pg_query__range_table_func_col__descriptor, allocator, len, data); } void pg_query__range_table_func_col__free_unpacked (PgQuery__RangeTableFuncCol *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_table_func_col__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__type_name__init (PgQuery__TypeName *message) { static const PgQuery__TypeName init_value = PG_QUERY__TYPE_NAME__INIT; *message = init_value; } size_t pg_query__type_name__get_packed_size (const PgQuery__TypeName *message) { assert(message->base.descriptor == &pg_query__type_name__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__type_name__pack (const PgQuery__TypeName *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__type_name__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__type_name__pack_to_buffer (const PgQuery__TypeName *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__type_name__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TypeName * pg_query__type_name__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TypeName *) protobuf_c_message_unpack (&pg_query__type_name__descriptor, allocator, len, data); } void pg_query__type_name__free_unpacked (PgQuery__TypeName *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__type_name__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__column_def__init (PgQuery__ColumnDef *message) { static const PgQuery__ColumnDef init_value = PG_QUERY__COLUMN_DEF__INIT; *message = init_value; } size_t pg_query__column_def__get_packed_size (const PgQuery__ColumnDef *message) { assert(message->base.descriptor == &pg_query__column_def__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__column_def__pack (const PgQuery__ColumnDef *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__column_def__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__column_def__pack_to_buffer (const PgQuery__ColumnDef *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__column_def__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ColumnDef * pg_query__column_def__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ColumnDef *) protobuf_c_message_unpack (&pg_query__column_def__descriptor, allocator, len, data); } void pg_query__column_def__free_unpacked (PgQuery__ColumnDef *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__column_def__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__index_elem__init (PgQuery__IndexElem *message) { static const PgQuery__IndexElem init_value = PG_QUERY__INDEX_ELEM__INIT; *message = init_value; } size_t pg_query__index_elem__get_packed_size (const PgQuery__IndexElem *message) { assert(message->base.descriptor == &pg_query__index_elem__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__index_elem__pack (const PgQuery__IndexElem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__index_elem__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__index_elem__pack_to_buffer (const PgQuery__IndexElem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__index_elem__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__IndexElem * pg_query__index_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__IndexElem *) protobuf_c_message_unpack (&pg_query__index_elem__descriptor, allocator, len, data); } void pg_query__index_elem__free_unpacked (PgQuery__IndexElem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__index_elem__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__constraint__init (PgQuery__Constraint *message) { static const PgQuery__Constraint init_value = PG_QUERY__CONSTRAINT__INIT; *message = init_value; } size_t pg_query__constraint__get_packed_size (const PgQuery__Constraint *message) { assert(message->base.descriptor == &pg_query__constraint__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__constraint__pack (const PgQuery__Constraint *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__constraint__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__constraint__pack_to_buffer (const PgQuery__Constraint *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__constraint__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__Constraint * pg_query__constraint__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__Constraint *) protobuf_c_message_unpack (&pg_query__constraint__descriptor, allocator, len, data); } void pg_query__constraint__free_unpacked (PgQuery__Constraint *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__constraint__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__def_elem__init (PgQuery__DefElem *message) { static const PgQuery__DefElem init_value = PG_QUERY__DEF_ELEM__INIT; *message = init_value; } size_t pg_query__def_elem__get_packed_size (const PgQuery__DefElem *message) { assert(message->base.descriptor == &pg_query__def_elem__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__def_elem__pack (const PgQuery__DefElem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__def_elem__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__def_elem__pack_to_buffer (const PgQuery__DefElem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__def_elem__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__DefElem * pg_query__def_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__DefElem *) protobuf_c_message_unpack (&pg_query__def_elem__descriptor, allocator, len, data); } void pg_query__def_elem__free_unpacked (PgQuery__DefElem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__def_elem__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_tbl_entry__init (PgQuery__RangeTblEntry *message) { static const PgQuery__RangeTblEntry init_value = PG_QUERY__RANGE_TBL_ENTRY__INIT; *message = init_value; } size_t pg_query__range_tbl_entry__get_packed_size (const PgQuery__RangeTblEntry *message) { assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_tbl_entry__pack (const PgQuery__RangeTblEntry *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_tbl_entry__pack_to_buffer (const PgQuery__RangeTblEntry *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTblEntry * pg_query__range_tbl_entry__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTblEntry *) protobuf_c_message_unpack (&pg_query__range_tbl_entry__descriptor, allocator, len, data); } void pg_query__range_tbl_entry__free_unpacked (PgQuery__RangeTblEntry *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_tbl_entry__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__range_tbl_function__init (PgQuery__RangeTblFunction *message) { static const PgQuery__RangeTblFunction init_value = PG_QUERY__RANGE_TBL_FUNCTION__INIT; *message = init_value; } size_t pg_query__range_tbl_function__get_packed_size (const PgQuery__RangeTblFunction *message) { assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__range_tbl_function__pack (const PgQuery__RangeTblFunction *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__range_tbl_function__pack_to_buffer (const PgQuery__RangeTblFunction *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RangeTblFunction * pg_query__range_tbl_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RangeTblFunction *) protobuf_c_message_unpack (&pg_query__range_tbl_function__descriptor, allocator, len, data); } void pg_query__range_tbl_function__free_unpacked (PgQuery__RangeTblFunction *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__range_tbl_function__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__table_sample_clause__init (PgQuery__TableSampleClause *message) { static const PgQuery__TableSampleClause init_value = PG_QUERY__TABLE_SAMPLE_CLAUSE__INIT; *message = init_value; } size_t pg_query__table_sample_clause__get_packed_size (const PgQuery__TableSampleClause *message) { assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__table_sample_clause__pack (const PgQuery__TableSampleClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__table_sample_clause__pack_to_buffer (const PgQuery__TableSampleClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TableSampleClause * pg_query__table_sample_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TableSampleClause *) protobuf_c_message_unpack (&pg_query__table_sample_clause__descriptor, allocator, len, data); } void pg_query__table_sample_clause__free_unpacked (PgQuery__TableSampleClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__table_sample_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__with_check_option__init (PgQuery__WithCheckOption *message) { static const PgQuery__WithCheckOption init_value = PG_QUERY__WITH_CHECK_OPTION__INIT; *message = init_value; } size_t pg_query__with_check_option__get_packed_size (const PgQuery__WithCheckOption *message) { assert(message->base.descriptor == &pg_query__with_check_option__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__with_check_option__pack (const PgQuery__WithCheckOption *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__with_check_option__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__with_check_option__pack_to_buffer (const PgQuery__WithCheckOption *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__with_check_option__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WithCheckOption * pg_query__with_check_option__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WithCheckOption *) protobuf_c_message_unpack (&pg_query__with_check_option__descriptor, allocator, len, data); } void pg_query__with_check_option__free_unpacked (PgQuery__WithCheckOption *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__with_check_option__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__sort_group_clause__init (PgQuery__SortGroupClause *message) { static const PgQuery__SortGroupClause init_value = PG_QUERY__SORT_GROUP_CLAUSE__INIT; *message = init_value; } size_t pg_query__sort_group_clause__get_packed_size (const PgQuery__SortGroupClause *message) { assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__sort_group_clause__pack (const PgQuery__SortGroupClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__sort_group_clause__pack_to_buffer (const PgQuery__SortGroupClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__SortGroupClause * pg_query__sort_group_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__SortGroupClause *) protobuf_c_message_unpack (&pg_query__sort_group_clause__descriptor, allocator, len, data); } void pg_query__sort_group_clause__free_unpacked (PgQuery__SortGroupClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__sort_group_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__grouping_set__init (PgQuery__GroupingSet *message) { static const PgQuery__GroupingSet init_value = PG_QUERY__GROUPING_SET__INIT; *message = init_value; } size_t pg_query__grouping_set__get_packed_size (const PgQuery__GroupingSet *message) { assert(message->base.descriptor == &pg_query__grouping_set__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__grouping_set__pack (const PgQuery__GroupingSet *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__grouping_set__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__grouping_set__pack_to_buffer (const PgQuery__GroupingSet *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__grouping_set__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__GroupingSet * pg_query__grouping_set__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__GroupingSet *) protobuf_c_message_unpack (&pg_query__grouping_set__descriptor, allocator, len, data); } void pg_query__grouping_set__free_unpacked (PgQuery__GroupingSet *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__grouping_set__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__window_clause__init (PgQuery__WindowClause *message) { static const PgQuery__WindowClause init_value = PG_QUERY__WINDOW_CLAUSE__INIT; *message = init_value; } size_t pg_query__window_clause__get_packed_size (const PgQuery__WindowClause *message) { assert(message->base.descriptor == &pg_query__window_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__window_clause__pack (const PgQuery__WindowClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__window_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__window_clause__pack_to_buffer (const PgQuery__WindowClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__window_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WindowClause * pg_query__window_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WindowClause *) protobuf_c_message_unpack (&pg_query__window_clause__descriptor, allocator, len, data); } void pg_query__window_clause__free_unpacked (PgQuery__WindowClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__window_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__object_with_args__init (PgQuery__ObjectWithArgs *message) { static const PgQuery__ObjectWithArgs init_value = PG_QUERY__OBJECT_WITH_ARGS__INIT; *message = init_value; } size_t pg_query__object_with_args__get_packed_size (const PgQuery__ObjectWithArgs *message) { assert(message->base.descriptor == &pg_query__object_with_args__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__object_with_args__pack (const PgQuery__ObjectWithArgs *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__object_with_args__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__object_with_args__pack_to_buffer (const PgQuery__ObjectWithArgs *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__object_with_args__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ObjectWithArgs * pg_query__object_with_args__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ObjectWithArgs *) protobuf_c_message_unpack (&pg_query__object_with_args__descriptor, allocator, len, data); } void pg_query__object_with_args__free_unpacked (PgQuery__ObjectWithArgs *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__object_with_args__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__access_priv__init (PgQuery__AccessPriv *message) { static const PgQuery__AccessPriv init_value = PG_QUERY__ACCESS_PRIV__INIT; *message = init_value; } size_t pg_query__access_priv__get_packed_size (const PgQuery__AccessPriv *message) { assert(message->base.descriptor == &pg_query__access_priv__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__access_priv__pack (const PgQuery__AccessPriv *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__access_priv__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__access_priv__pack_to_buffer (const PgQuery__AccessPriv *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__access_priv__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__AccessPriv * pg_query__access_priv__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__AccessPriv *) protobuf_c_message_unpack (&pg_query__access_priv__descriptor, allocator, len, data); } void pg_query__access_priv__free_unpacked (PgQuery__AccessPriv *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__access_priv__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__create_op_class_item__init (PgQuery__CreateOpClassItem *message) { static const PgQuery__CreateOpClassItem init_value = PG_QUERY__CREATE_OP_CLASS_ITEM__INIT; *message = init_value; } size_t pg_query__create_op_class_item__get_packed_size (const PgQuery__CreateOpClassItem *message) { assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__create_op_class_item__pack (const PgQuery__CreateOpClassItem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__create_op_class_item__pack_to_buffer (const PgQuery__CreateOpClassItem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CreateOpClassItem * pg_query__create_op_class_item__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CreateOpClassItem *) protobuf_c_message_unpack (&pg_query__create_op_class_item__descriptor, allocator, len, data); } void pg_query__create_op_class_item__free_unpacked (PgQuery__CreateOpClassItem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__create_op_class_item__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__table_like_clause__init (PgQuery__TableLikeClause *message) { static const PgQuery__TableLikeClause init_value = PG_QUERY__TABLE_LIKE_CLAUSE__INIT; *message = init_value; } size_t pg_query__table_like_clause__get_packed_size (const PgQuery__TableLikeClause *message) { assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__table_like_clause__pack (const PgQuery__TableLikeClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__table_like_clause__pack_to_buffer (const PgQuery__TableLikeClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TableLikeClause * pg_query__table_like_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TableLikeClause *) protobuf_c_message_unpack (&pg_query__table_like_clause__descriptor, allocator, len, data); } void pg_query__table_like_clause__free_unpacked (PgQuery__TableLikeClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__table_like_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__function_parameter__init (PgQuery__FunctionParameter *message) { static const PgQuery__FunctionParameter init_value = PG_QUERY__FUNCTION_PARAMETER__INIT; *message = init_value; } size_t pg_query__function_parameter__get_packed_size (const PgQuery__FunctionParameter *message) { assert(message->base.descriptor == &pg_query__function_parameter__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__function_parameter__pack (const PgQuery__FunctionParameter *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__function_parameter__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__function_parameter__pack_to_buffer (const PgQuery__FunctionParameter *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__function_parameter__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__FunctionParameter * pg_query__function_parameter__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__FunctionParameter *) protobuf_c_message_unpack (&pg_query__function_parameter__descriptor, allocator, len, data); } void pg_query__function_parameter__free_unpacked (PgQuery__FunctionParameter *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__function_parameter__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__locking_clause__init (PgQuery__LockingClause *message) { static const PgQuery__LockingClause init_value = PG_QUERY__LOCKING_CLAUSE__INIT; *message = init_value; } size_t pg_query__locking_clause__get_packed_size (const PgQuery__LockingClause *message) { assert(message->base.descriptor == &pg_query__locking_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__locking_clause__pack (const PgQuery__LockingClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__locking_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__locking_clause__pack_to_buffer (const PgQuery__LockingClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__locking_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__LockingClause * pg_query__locking_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__LockingClause *) protobuf_c_message_unpack (&pg_query__locking_clause__descriptor, allocator, len, data); } void pg_query__locking_clause__free_unpacked (PgQuery__LockingClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__locking_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__row_mark_clause__init (PgQuery__RowMarkClause *message) { static const PgQuery__RowMarkClause init_value = PG_QUERY__ROW_MARK_CLAUSE__INIT; *message = init_value; } size_t pg_query__row_mark_clause__get_packed_size (const PgQuery__RowMarkClause *message) { assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__row_mark_clause__pack (const PgQuery__RowMarkClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__row_mark_clause__pack_to_buffer (const PgQuery__RowMarkClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RowMarkClause * pg_query__row_mark_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RowMarkClause *) protobuf_c_message_unpack (&pg_query__row_mark_clause__descriptor, allocator, len, data); } void pg_query__row_mark_clause__free_unpacked (PgQuery__RowMarkClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__row_mark_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__xml_serialize__init (PgQuery__XmlSerialize *message) { static const PgQuery__XmlSerialize init_value = PG_QUERY__XML_SERIALIZE__INIT; *message = init_value; } size_t pg_query__xml_serialize__get_packed_size (const PgQuery__XmlSerialize *message) { assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__xml_serialize__pack (const PgQuery__XmlSerialize *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__xml_serialize__pack_to_buffer (const PgQuery__XmlSerialize *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__XmlSerialize * pg_query__xml_serialize__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__XmlSerialize *) protobuf_c_message_unpack (&pg_query__xml_serialize__descriptor, allocator, len, data); } void pg_query__xml_serialize__free_unpacked (PgQuery__XmlSerialize *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__xml_serialize__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__with_clause__init (PgQuery__WithClause *message) { static const PgQuery__WithClause init_value = PG_QUERY__WITH_CLAUSE__INIT; *message = init_value; } size_t pg_query__with_clause__get_packed_size (const PgQuery__WithClause *message) { assert(message->base.descriptor == &pg_query__with_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__with_clause__pack (const PgQuery__WithClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__with_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__with_clause__pack_to_buffer (const PgQuery__WithClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__with_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__WithClause * pg_query__with_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__WithClause *) protobuf_c_message_unpack (&pg_query__with_clause__descriptor, allocator, len, data); } void pg_query__with_clause__free_unpacked (PgQuery__WithClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__with_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__infer_clause__init (PgQuery__InferClause *message) { static const PgQuery__InferClause init_value = PG_QUERY__INFER_CLAUSE__INIT; *message = init_value; } size_t pg_query__infer_clause__get_packed_size (const PgQuery__InferClause *message) { assert(message->base.descriptor == &pg_query__infer_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__infer_clause__pack (const PgQuery__InferClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__infer_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__infer_clause__pack_to_buffer (const PgQuery__InferClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__infer_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__InferClause * pg_query__infer_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__InferClause *) protobuf_c_message_unpack (&pg_query__infer_clause__descriptor, allocator, len, data); } void pg_query__infer_clause__free_unpacked (PgQuery__InferClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__infer_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__on_conflict_clause__init (PgQuery__OnConflictClause *message) { static const PgQuery__OnConflictClause init_value = PG_QUERY__ON_CONFLICT_CLAUSE__INIT; *message = init_value; } size_t pg_query__on_conflict_clause__get_packed_size (const PgQuery__OnConflictClause *message) { assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__on_conflict_clause__pack (const PgQuery__OnConflictClause *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__on_conflict_clause__pack_to_buffer (const PgQuery__OnConflictClause *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__OnConflictClause * pg_query__on_conflict_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__OnConflictClause *) protobuf_c_message_unpack (&pg_query__on_conflict_clause__descriptor, allocator, len, data); } void pg_query__on_conflict_clause__free_unpacked (PgQuery__OnConflictClause *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__on_conflict_clause__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__common_table_expr__init (PgQuery__CommonTableExpr *message) { static const PgQuery__CommonTableExpr init_value = PG_QUERY__COMMON_TABLE_EXPR__INIT; *message = init_value; } size_t pg_query__common_table_expr__get_packed_size (const PgQuery__CommonTableExpr *message) { assert(message->base.descriptor == &pg_query__common_table_expr__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__common_table_expr__pack (const PgQuery__CommonTableExpr *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__common_table_expr__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__common_table_expr__pack_to_buffer (const PgQuery__CommonTableExpr *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__common_table_expr__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CommonTableExpr * pg_query__common_table_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CommonTableExpr *) protobuf_c_message_unpack (&pg_query__common_table_expr__descriptor, allocator, len, data); } void pg_query__common_table_expr__free_unpacked (PgQuery__CommonTableExpr *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__common_table_expr__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__role_spec__init (PgQuery__RoleSpec *message) { static const PgQuery__RoleSpec init_value = PG_QUERY__ROLE_SPEC__INIT; *message = init_value; } size_t pg_query__role_spec__get_packed_size (const PgQuery__RoleSpec *message) { assert(message->base.descriptor == &pg_query__role_spec__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__role_spec__pack (const PgQuery__RoleSpec *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__role_spec__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__role_spec__pack_to_buffer (const PgQuery__RoleSpec *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__role_spec__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__RoleSpec * pg_query__role_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__RoleSpec *) protobuf_c_message_unpack (&pg_query__role_spec__descriptor, allocator, len, data); } void pg_query__role_spec__free_unpacked (PgQuery__RoleSpec *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__role_spec__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__trigger_transition__init (PgQuery__TriggerTransition *message) { static const PgQuery__TriggerTransition init_value = PG_QUERY__TRIGGER_TRANSITION__INIT; *message = init_value; } size_t pg_query__trigger_transition__get_packed_size (const PgQuery__TriggerTransition *message) { assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__trigger_transition__pack (const PgQuery__TriggerTransition *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__trigger_transition__pack_to_buffer (const PgQuery__TriggerTransition *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__TriggerTransition * pg_query__trigger_transition__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__TriggerTransition *) protobuf_c_message_unpack (&pg_query__trigger_transition__descriptor, allocator, len, data); } void pg_query__trigger_transition__free_unpacked (PgQuery__TriggerTransition *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__trigger_transition__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__partition_elem__init (PgQuery__PartitionElem *message) { static const PgQuery__PartitionElem init_value = PG_QUERY__PARTITION_ELEM__INIT; *message = init_value; } size_t pg_query__partition_elem__get_packed_size (const PgQuery__PartitionElem *message) { assert(message->base.descriptor == &pg_query__partition_elem__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__partition_elem__pack (const PgQuery__PartitionElem *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__partition_elem__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__partition_elem__pack_to_buffer (const PgQuery__PartitionElem *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__partition_elem__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PartitionElem * pg_query__partition_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PartitionElem *) protobuf_c_message_unpack (&pg_query__partition_elem__descriptor, allocator, len, data); } void pg_query__partition_elem__free_unpacked (PgQuery__PartitionElem *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__partition_elem__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__partition_spec__init (PgQuery__PartitionSpec *message) { static const PgQuery__PartitionSpec init_value = PG_QUERY__PARTITION_SPEC__INIT; *message = init_value; } size_t pg_query__partition_spec__get_packed_size (const PgQuery__PartitionSpec *message) { assert(message->base.descriptor == &pg_query__partition_spec__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__partition_spec__pack (const PgQuery__PartitionSpec *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__partition_spec__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__partition_spec__pack_to_buffer (const PgQuery__PartitionSpec *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__partition_spec__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PartitionSpec * pg_query__partition_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PartitionSpec *) protobuf_c_message_unpack (&pg_query__partition_spec__descriptor, allocator, len, data); } void pg_query__partition_spec__free_unpacked (PgQuery__PartitionSpec *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__partition_spec__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__partition_bound_spec__init (PgQuery__PartitionBoundSpec *message) { static const PgQuery__PartitionBoundSpec init_value = PG_QUERY__PARTITION_BOUND_SPEC__INIT; *message = init_value; } size_t pg_query__partition_bound_spec__get_packed_size (const PgQuery__PartitionBoundSpec *message) { assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__partition_bound_spec__pack (const PgQuery__PartitionBoundSpec *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__partition_bound_spec__pack_to_buffer (const PgQuery__PartitionBoundSpec *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PartitionBoundSpec * pg_query__partition_bound_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PartitionBoundSpec *) protobuf_c_message_unpack (&pg_query__partition_bound_spec__descriptor, allocator, len, data); } void pg_query__partition_bound_spec__free_unpacked (PgQuery__PartitionBoundSpec *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__partition_bound_spec__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__partition_range_datum__init (PgQuery__PartitionRangeDatum *message) { static const PgQuery__PartitionRangeDatum init_value = PG_QUERY__PARTITION_RANGE_DATUM__INIT; *message = init_value; } size_t pg_query__partition_range_datum__get_packed_size (const PgQuery__PartitionRangeDatum *message) { assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__partition_range_datum__pack (const PgQuery__PartitionRangeDatum *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__partition_range_datum__pack_to_buffer (const PgQuery__PartitionRangeDatum *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PartitionRangeDatum * pg_query__partition_range_datum__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PartitionRangeDatum *) protobuf_c_message_unpack (&pg_query__partition_range_datum__descriptor, allocator, len, data); } void pg_query__partition_range_datum__free_unpacked (PgQuery__PartitionRangeDatum *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__partition_range_datum__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__partition_cmd__init (PgQuery__PartitionCmd *message) { static const PgQuery__PartitionCmd init_value = PG_QUERY__PARTITION_CMD__INIT; *message = init_value; } size_t pg_query__partition_cmd__get_packed_size (const PgQuery__PartitionCmd *message) { assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__partition_cmd__pack (const PgQuery__PartitionCmd *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__partition_cmd__pack_to_buffer (const PgQuery__PartitionCmd *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__PartitionCmd * pg_query__partition_cmd__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__PartitionCmd *) protobuf_c_message_unpack (&pg_query__partition_cmd__descriptor, allocator, len, data); } void pg_query__partition_cmd__free_unpacked (PgQuery__PartitionCmd *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__partition_cmd__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__vacuum_relation__init (PgQuery__VacuumRelation *message) { static const PgQuery__VacuumRelation init_value = PG_QUERY__VACUUM_RELATION__INIT; *message = init_value; } size_t pg_query__vacuum_relation__get_packed_size (const PgQuery__VacuumRelation *message) { assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__vacuum_relation__pack (const PgQuery__VacuumRelation *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__vacuum_relation__pack_to_buffer (const PgQuery__VacuumRelation *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__VacuumRelation * pg_query__vacuum_relation__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__VacuumRelation *) protobuf_c_message_unpack (&pg_query__vacuum_relation__descriptor, allocator, len, data); } void pg_query__vacuum_relation__free_unpacked (PgQuery__VacuumRelation *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__vacuum_relation__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__inline_code_block__init (PgQuery__InlineCodeBlock *message) { static const PgQuery__InlineCodeBlock init_value = PG_QUERY__INLINE_CODE_BLOCK__INIT; *message = init_value; } size_t pg_query__inline_code_block__get_packed_size (const PgQuery__InlineCodeBlock *message) { assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__inline_code_block__pack (const PgQuery__InlineCodeBlock *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__inline_code_block__pack_to_buffer (const PgQuery__InlineCodeBlock *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__InlineCodeBlock * pg_query__inline_code_block__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__InlineCodeBlock *) protobuf_c_message_unpack (&pg_query__inline_code_block__descriptor, allocator, len, data); } void pg_query__inline_code_block__free_unpacked (PgQuery__InlineCodeBlock *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__inline_code_block__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__call_context__init (PgQuery__CallContext *message) { static const PgQuery__CallContext init_value = PG_QUERY__CALL_CONTEXT__INIT; *message = init_value; } size_t pg_query__call_context__get_packed_size (const PgQuery__CallContext *message) { assert(message->base.descriptor == &pg_query__call_context__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__call_context__pack (const PgQuery__CallContext *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__call_context__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__call_context__pack_to_buffer (const PgQuery__CallContext *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__call_context__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__CallContext * pg_query__call_context__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__CallContext *) protobuf_c_message_unpack (&pg_query__call_context__descriptor, allocator, len, data); } void pg_query__call_context__free_unpacked (PgQuery__CallContext *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__call_context__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void pg_query__scan_token__init (PgQuery__ScanToken *message) { static const PgQuery__ScanToken init_value = PG_QUERY__SCAN_TOKEN__INIT; *message = init_value; } size_t pg_query__scan_token__get_packed_size (const PgQuery__ScanToken *message) { assert(message->base.descriptor == &pg_query__scan_token__descriptor); return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); } size_t pg_query__scan_token__pack (const PgQuery__ScanToken *message, uint8_t *out) { assert(message->base.descriptor == &pg_query__scan_token__descriptor); return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); } size_t pg_query__scan_token__pack_to_buffer (const PgQuery__ScanToken *message, ProtobufCBuffer *buffer) { assert(message->base.descriptor == &pg_query__scan_token__descriptor); return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); } PgQuery__ScanToken * pg_query__scan_token__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { return (PgQuery__ScanToken *) protobuf_c_message_unpack (&pg_query__scan_token__descriptor, allocator, len, data); } void pg_query__scan_token__free_unpacked (PgQuery__ScanToken *message, ProtobufCAllocator *allocator) { if(!message) return; assert(message->base.descriptor == &pg_query__scan_token__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } static const ProtobufCFieldDescriptor pg_query__parse_result__field_descriptors[2] = { { "version", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ParseResult, version), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stmts", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ParseResult, n_stmts), offsetof(PgQuery__ParseResult, stmts), &pg_query__raw_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__parse_result__field_indices_by_name[] = { 1, /* field[1] = stmts */ 0, /* field[0] = version */ }; static const ProtobufCIntRange pg_query__parse_result__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__parse_result__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ParseResult", "ParseResult", "PgQuery__ParseResult", "pg_query", sizeof(PgQuery__ParseResult), 2, pg_query__parse_result__field_descriptors, pg_query__parse_result__field_indices_by_name, 1, pg_query__parse_result__number_ranges, (ProtobufCMessageInit) pg_query__parse_result__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__scan_result__field_descriptors[2] = { { "version", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScanResult, version), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tokens", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ScanResult, n_tokens), offsetof(PgQuery__ScanResult, tokens), &pg_query__scan_token__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__scan_result__field_indices_by_name[] = { 1, /* field[1] = tokens */ 0, /* field[0] = version */ }; static const ProtobufCIntRange pg_query__scan_result__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__scan_result__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ScanResult", "ScanResult", "PgQuery__ScanResult", "pg_query", sizeof(PgQuery__ScanResult), 2, pg_query__scan_result__field_descriptors, pg_query__scan_result__field_indices_by_name, 1, pg_query__scan_result__number_ranges, (ProtobufCMessageInit) pg_query__scan_result__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__node__field_descriptors[228] = { { "alias", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alias), &pg_query__alias__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_var", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_var), &pg_query__range_var__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_func", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, table_func), &pg_query__table_func__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, expr), &pg_query__expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "var", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, var), &pg_query__var__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "param", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, param), &pg_query__param__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggref", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, aggref), &pg_query__aggref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grouping_func", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, grouping_func), &pg_query__grouping_func__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_func", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, window_func), &pg_query__window_func__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subscripting_ref", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, subscripting_ref), &pg_query__subscripting_ref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_expr", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, func_expr), &pg_query__func_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "named_arg_expr", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, named_arg_expr), &pg_query__named_arg_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "op_expr", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, op_expr), &pg_query__op_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "distinct_expr", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, distinct_expr), &pg_query__distinct_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "null_if_expr", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, null_if_expr), &pg_query__null_if_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "scalar_array_op_expr", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, scalar_array_op_expr), &pg_query__scalar_array_op_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "bool_expr", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, bool_expr), &pg_query__bool_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_link", 18, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sub_link), &pg_query__sub_link__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_plan", 19, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sub_plan), &pg_query__sub_plan__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alternative_sub_plan", 20, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alternative_sub_plan), &pg_query__alternative_sub_plan__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "field_select", 21, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, field_select), &pg_query__field_select__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "field_store", 22, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, field_store), &pg_query__field_store__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relabel_type", 23, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, relabel_type), &pg_query__relabel_type__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerce_via_io", 24, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, coerce_via_io), &pg_query__coerce_via_io__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_coerce_expr", 25, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, array_coerce_expr), &pg_query__array_coerce_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "convert_rowtype_expr", 26, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, convert_rowtype_expr), &pg_query__convert_rowtype_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collate_expr", 27, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, collate_expr), &pg_query__collate_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "case_expr", 28, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, case_expr), &pg_query__case_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "case_when", 29, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, case_when), &pg_query__case_when__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "case_test_expr", 30, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, case_test_expr), &pg_query__case_test_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_expr", 31, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, array_expr), &pg_query__array_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_expr", 32, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, row_expr), &pg_query__row_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_compare_expr", 33, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, row_compare_expr), &pg_query__row_compare_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coalesce_expr", 34, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, coalesce_expr), &pg_query__coalesce_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "min_max_expr", 35, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, min_max_expr), &pg_query__min_max_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sqlvalue_function", 36, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sqlvalue_function), &pg_query__sqlvalue_function__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "xml_expr", 37, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, xml_expr), &pg_query__xml_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "null_test", 38, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, null_test), &pg_query__null_test__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "boolean_test", 39, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, boolean_test), &pg_query__boolean_test__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerce_to_domain", 40, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, coerce_to_domain), &pg_query__coerce_to_domain__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerce_to_domain_value", 41, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, coerce_to_domain_value), &pg_query__coerce_to_domain_value__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "set_to_default", 42, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, set_to_default), &pg_query__set_to_default__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "current_of_expr", 43, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, current_of_expr), &pg_query__current_of_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "next_value_expr", 44, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, next_value_expr), &pg_query__next_value_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inference_elem", 45, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, inference_elem), &pg_query__inference_elem__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_entry", 46, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, target_entry), &pg_query__target_entry__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_tbl_ref", 47, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_tbl_ref), &pg_query__range_tbl_ref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "join_expr", 48, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, join_expr), &pg_query__join_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "from_expr", 49, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, from_expr), &pg_query__from_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict_expr", 50, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, on_conflict_expr), &pg_query__on_conflict_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "into_clause", 51, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, into_clause), &pg_query__into_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "raw_stmt", 52, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, raw_stmt), &pg_query__raw_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 53, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, query), &pg_query__query__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "insert_stmt", 54, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, insert_stmt), &pg_query__insert_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "delete_stmt", 55, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, delete_stmt), &pg_query__delete_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "update_stmt", 56, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, update_stmt), &pg_query__update_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "select_stmt", 57, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, select_stmt), &pg_query__select_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_stmt", 58, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_table_stmt), &pg_query__alter_table_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_cmd", 59, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_table_cmd), &pg_query__alter_table_cmd__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_domain_stmt", 60, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_domain_stmt), &pg_query__alter_domain_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "set_operation_stmt", 61, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, set_operation_stmt), &pg_query__set_operation_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grant_stmt", 62, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, grant_stmt), &pg_query__grant_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grant_role_stmt", 63, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, grant_role_stmt), &pg_query__grant_role_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_default_privileges_stmt", 64, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_default_privileges_stmt), &pg_query__alter_default_privileges_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "close_portal_stmt", 65, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, close_portal_stmt), &pg_query__close_portal_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cluster_stmt", 66, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, cluster_stmt), &pg_query__cluster_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "copy_stmt", 67, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, copy_stmt), &pg_query__copy_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_stmt", 68, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_stmt), &pg_query__create_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "define_stmt", 69, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, define_stmt), &pg_query__define_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_stmt", 70, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_stmt), &pg_query__drop_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "truncate_stmt", 71, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, truncate_stmt), &pg_query__truncate_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "comment_stmt", 72, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, comment_stmt), &pg_query__comment_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fetch_stmt", 73, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, fetch_stmt), &pg_query__fetch_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "index_stmt", 74, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, index_stmt), &pg_query__index_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_function_stmt", 75, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_function_stmt), &pg_query__create_function_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_function_stmt", 76, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_function_stmt), &pg_query__alter_function_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "do_stmt", 77, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, do_stmt), &pg_query__do_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rename_stmt", 78, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, rename_stmt), &pg_query__rename_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rule_stmt", 79, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, rule_stmt), &pg_query__rule_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "notify_stmt", 80, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, notify_stmt), &pg_query__notify_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "listen_stmt", 81, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, listen_stmt), &pg_query__listen_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unlisten_stmt", 82, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, unlisten_stmt), &pg_query__unlisten_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "transaction_stmt", 83, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, transaction_stmt), &pg_query__transaction_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "view_stmt", 84, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, view_stmt), &pg_query__view_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "load_stmt", 85, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, load_stmt), &pg_query__load_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_domain_stmt", 86, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_domain_stmt), &pg_query__create_domain_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "createdb_stmt", 87, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, createdb_stmt), &pg_query__createdb_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "dropdb_stmt", 88, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, dropdb_stmt), &pg_query__dropdb_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "vacuum_stmt", 89, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, vacuum_stmt), &pg_query__vacuum_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "explain_stmt", 90, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, explain_stmt), &pg_query__explain_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_table_as_stmt", 91, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_table_as_stmt), &pg_query__create_table_as_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_seq_stmt", 92, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_seq_stmt), &pg_query__create_seq_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_seq_stmt", 93, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_seq_stmt), &pg_query__alter_seq_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "variable_set_stmt", 94, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, variable_set_stmt), &pg_query__variable_set_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "variable_show_stmt", 95, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, variable_show_stmt), &pg_query__variable_show_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "discard_stmt", 96, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, discard_stmt), &pg_query__discard_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_trig_stmt", 97, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_trig_stmt), &pg_query__create_trig_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_plang_stmt", 98, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_plang_stmt), &pg_query__create_plang_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_role_stmt", 99, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_role_stmt), &pg_query__create_role_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_role_stmt", 100, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_role_stmt), &pg_query__alter_role_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_role_stmt", 101, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_role_stmt), &pg_query__drop_role_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lock_stmt", 102, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, lock_stmt), &pg_query__lock_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraints_set_stmt", 103, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, constraints_set_stmt), &pg_query__constraints_set_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reindex_stmt", 104, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, reindex_stmt), &pg_query__reindex_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "check_point_stmt", 105, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, check_point_stmt), &pg_query__check_point_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_schema_stmt", 106, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_schema_stmt), &pg_query__create_schema_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_database_stmt", 107, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_database_stmt), &pg_query__alter_database_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_database_set_stmt", 108, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_database_set_stmt), &pg_query__alter_database_set_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_role_set_stmt", 109, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_role_set_stmt), &pg_query__alter_role_set_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_conversion_stmt", 110, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_conversion_stmt), &pg_query__create_conversion_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_cast_stmt", 111, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_cast_stmt), &pg_query__create_cast_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_op_class_stmt", 112, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_op_class_stmt), &pg_query__create_op_class_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_op_family_stmt", 113, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_op_family_stmt), &pg_query__create_op_family_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_op_family_stmt", 114, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_op_family_stmt), &pg_query__alter_op_family_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "prepare_stmt", 115, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, prepare_stmt), &pg_query__prepare_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "execute_stmt", 116, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, execute_stmt), &pg_query__execute_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "deallocate_stmt", 117, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, deallocate_stmt), &pg_query__deallocate_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "declare_cursor_stmt", 118, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, declare_cursor_stmt), &pg_query__declare_cursor_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_table_space_stmt", 119, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_table_space_stmt), &pg_query__create_table_space_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_table_space_stmt", 120, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_table_space_stmt), &pg_query__drop_table_space_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_object_depends_stmt", 121, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_object_depends_stmt), &pg_query__alter_object_depends_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_object_schema_stmt", 122, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_object_schema_stmt), &pg_query__alter_object_schema_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_owner_stmt", 123, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_owner_stmt), &pg_query__alter_owner_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_operator_stmt", 124, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_operator_stmt), &pg_query__alter_operator_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_type_stmt", 125, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_type_stmt), &pg_query__alter_type_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_owned_stmt", 126, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_owned_stmt), &pg_query__drop_owned_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reassign_owned_stmt", 127, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, reassign_owned_stmt), &pg_query__reassign_owned_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "composite_type_stmt", 128, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, composite_type_stmt), &pg_query__composite_type_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_enum_stmt", 129, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_enum_stmt), &pg_query__create_enum_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_range_stmt", 130, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_range_stmt), &pg_query__create_range_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_enum_stmt", 131, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_enum_stmt), &pg_query__alter_enum_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_tsdictionary_stmt", 132, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_tsdictionary_stmt), &pg_query__alter_tsdictionary_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_tsconfiguration_stmt", 133, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_tsconfiguration_stmt), &pg_query__alter_tsconfiguration_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_fdw_stmt", 134, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_fdw_stmt), &pg_query__create_fdw_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_fdw_stmt", 135, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_fdw_stmt), &pg_query__alter_fdw_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_foreign_server_stmt", 136, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_foreign_server_stmt), &pg_query__create_foreign_server_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_foreign_server_stmt", 137, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_foreign_server_stmt), &pg_query__alter_foreign_server_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_user_mapping_stmt", 138, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_user_mapping_stmt), &pg_query__create_user_mapping_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_user_mapping_stmt", 139, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_user_mapping_stmt), &pg_query__alter_user_mapping_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_user_mapping_stmt", 140, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_user_mapping_stmt), &pg_query__drop_user_mapping_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_space_options_stmt", 141, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_table_space_options_stmt), &pg_query__alter_table_space_options_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_table_move_all_stmt", 142, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_table_move_all_stmt), &pg_query__alter_table_move_all_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sec_label_stmt", 143, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sec_label_stmt), &pg_query__sec_label_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_foreign_table_stmt", 144, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_foreign_table_stmt), &pg_query__create_foreign_table_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "import_foreign_schema_stmt", 145, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, import_foreign_schema_stmt), &pg_query__import_foreign_schema_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_extension_stmt", 146, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_extension_stmt), &pg_query__create_extension_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_extension_stmt", 147, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_extension_stmt), &pg_query__alter_extension_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_extension_contents_stmt", 148, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_extension_contents_stmt), &pg_query__alter_extension_contents_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_event_trig_stmt", 149, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_event_trig_stmt), &pg_query__create_event_trig_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_event_trig_stmt", 150, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_event_trig_stmt), &pg_query__alter_event_trig_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refresh_mat_view_stmt", 151, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, refresh_mat_view_stmt), &pg_query__refresh_mat_view_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replica_identity_stmt", 152, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, replica_identity_stmt), &pg_query__replica_identity_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_system_stmt", 153, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_system_stmt), &pg_query__alter_system_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_policy_stmt", 154, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_policy_stmt), &pg_query__create_policy_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_policy_stmt", 155, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_policy_stmt), &pg_query__alter_policy_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_transform_stmt", 156, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_transform_stmt), &pg_query__create_transform_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_am_stmt", 157, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_am_stmt), &pg_query__create_am_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_publication_stmt", 158, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_publication_stmt), &pg_query__create_publication_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_publication_stmt", 159, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_publication_stmt), &pg_query__alter_publication_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_subscription_stmt", 160, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_subscription_stmt), &pg_query__create_subscription_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_subscription_stmt", 161, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_subscription_stmt), &pg_query__alter_subscription_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "drop_subscription_stmt", 162, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, drop_subscription_stmt), &pg_query__drop_subscription_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_stats_stmt", 163, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_stats_stmt), &pg_query__create_stats_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_collation_stmt", 164, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_collation_stmt), &pg_query__alter_collation_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "call_stmt", 165, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, call_stmt), &pg_query__call_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alter_stats_stmt", 166, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, alter_stats_stmt), &pg_query__alter_stats_stmt__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_expr", 167, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_expr), &pg_query__a__expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "column_ref", 168, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, column_ref), &pg_query__column_ref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "param_ref", 169, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, param_ref), &pg_query__param_ref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_const", 170, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_const), &pg_query__a__const__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_call", 171, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, func_call), &pg_query__func_call__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_star", 172, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_star), &pg_query__a__star__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_indices", 173, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_indices), &pg_query__a__indices__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_indirection", 174, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_indirection), &pg_query__a__indirection__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "a_array_expr", 175, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, a_array_expr), &pg_query__a__array_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "res_target", 176, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, res_target), &pg_query__res_target__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "multi_assign_ref", 177, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, multi_assign_ref), &pg_query__multi_assign_ref__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_cast", 178, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, type_cast), &pg_query__type_cast__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collate_clause", 179, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, collate_clause), &pg_query__collate_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sort_by", 180, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sort_by), &pg_query__sort_by__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_def", 181, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, window_def), &pg_query__window_def__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_subselect", 182, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_subselect), &pg_query__range_subselect__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_function", 183, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_function), &pg_query__range_function__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_table_sample", 184, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_table_sample), &pg_query__range_table_sample__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_table_func", 185, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_table_func), &pg_query__range_table_func__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_table_func_col", 186, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_table_func_col), &pg_query__range_table_func_col__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 187, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, type_name), &pg_query__type_name__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "column_def", 188, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, column_def), &pg_query__column_def__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "index_elem", 189, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, index_elem), &pg_query__index_elem__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraint", 190, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, constraint), &pg_query__constraint__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "def_elem", 191, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, def_elem), &pg_query__def_elem__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_tbl_entry", 192, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_tbl_entry), &pg_query__range_tbl_entry__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "range_tbl_function", 193, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, range_tbl_function), &pg_query__range_tbl_function__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_sample_clause", 194, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, table_sample_clause), &pg_query__table_sample_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_check_option", 195, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, with_check_option), &pg_query__with_check_option__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sort_group_clause", 196, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, sort_group_clause), &pg_query__sort_group_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grouping_set", 197, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, grouping_set), &pg_query__grouping_set__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_clause", 198, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, window_clause), &pg_query__window_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object_with_args", 199, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, object_with_args), &pg_query__object_with_args__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "access_priv", 200, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, access_priv), &pg_query__access_priv__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "create_op_class_item", 201, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, create_op_class_item), &pg_query__create_op_class_item__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_like_clause", 202, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, table_like_clause), &pg_query__table_like_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "function_parameter", 203, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, function_parameter), &pg_query__function_parameter__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "locking_clause", 204, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, locking_clause), &pg_query__locking_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_mark_clause", 205, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, row_mark_clause), &pg_query__row_mark_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "xml_serialize", 206, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, xml_serialize), &pg_query__xml_serialize__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_clause", 207, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, with_clause), &pg_query__with_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "infer_clause", 208, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, infer_clause), &pg_query__infer_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict_clause", 209, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, on_conflict_clause), &pg_query__on_conflict_clause__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "common_table_expr", 210, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, common_table_expr), &pg_query__common_table_expr__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "role_spec", 211, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, role_spec), &pg_query__role_spec__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "trigger_transition", 212, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, trigger_transition), &pg_query__trigger_transition__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_elem", 213, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_elem), &pg_query__partition_elem__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_spec", 214, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_spec), &pg_query__partition_spec__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_bound_spec", 215, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_bound_spec), &pg_query__partition_bound_spec__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_range_datum", 216, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_range_datum), &pg_query__partition_range_datum__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_cmd", 217, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, partition_cmd), &pg_query__partition_cmd__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "vacuum_relation", 218, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, vacuum_relation), &pg_query__vacuum_relation__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inline_code_block", 219, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, inline_code_block), &pg_query__inline_code_block__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "call_context", 220, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, call_context), &pg_query__call_context__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "integer", 221, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, integer), &pg_query__integer__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "float", 222, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, float_), &pg_query__float__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "string", 223, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, string), &pg_query__string__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "bit_string", 224, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, bit_string), &pg_query__bit_string__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "null", 225, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, null), &pg_query__null__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "list", 226, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, list), &pg_query__list__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "int_list", 227, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, int_list), &pg_query__int_list__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "oid_list", 228, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Node, node_case), offsetof(PgQuery__Node, oid_list), &pg_query__oid_list__descriptor, NULL, 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__node__field_indices_by_name[] = { 174, /* field[174] = a_array_expr */ 169, /* field[169] = a_const */ 166, /* field[166] = a_expr */ 172, /* field[172] = a_indices */ 173, /* field[173] = a_indirection */ 171, /* field[171] = a_star */ 199, /* field[199] = access_priv */ 6, /* field[6] = aggref */ 0, /* field[0] = alias */ 163, /* field[163] = alter_collation_stmt */ 107, /* field[107] = alter_database_set_stmt */ 106, /* field[106] = alter_database_stmt */ 63, /* field[63] = alter_default_privileges_stmt */ 59, /* field[59] = alter_domain_stmt */ 130, /* field[130] = alter_enum_stmt */ 149, /* field[149] = alter_event_trig_stmt */ 147, /* field[147] = alter_extension_contents_stmt */ 146, /* field[146] = alter_extension_stmt */ 134, /* field[134] = alter_fdw_stmt */ 136, /* field[136] = alter_foreign_server_stmt */ 75, /* field[75] = alter_function_stmt */ 120, /* field[120] = alter_object_depends_stmt */ 121, /* field[121] = alter_object_schema_stmt */ 113, /* field[113] = alter_op_family_stmt */ 123, /* field[123] = alter_operator_stmt */ 122, /* field[122] = alter_owner_stmt */ 154, /* field[154] = alter_policy_stmt */ 158, /* field[158] = alter_publication_stmt */ 108, /* field[108] = alter_role_set_stmt */ 99, /* field[99] = alter_role_stmt */ 92, /* field[92] = alter_seq_stmt */ 165, /* field[165] = alter_stats_stmt */ 160, /* field[160] = alter_subscription_stmt */ 152, /* field[152] = alter_system_stmt */ 58, /* field[58] = alter_table_cmd */ 141, /* field[141] = alter_table_move_all_stmt */ 140, /* field[140] = alter_table_space_options_stmt */ 57, /* field[57] = alter_table_stmt */ 132, /* field[132] = alter_tsconfiguration_stmt */ 131, /* field[131] = alter_tsdictionary_stmt */ 124, /* field[124] = alter_type_stmt */ 138, /* field[138] = alter_user_mapping_stmt */ 19, /* field[19] = alternative_sub_plan */ 24, /* field[24] = array_coerce_expr */ 30, /* field[30] = array_expr */ 223, /* field[223] = bit_string */ 16, /* field[16] = bool_expr */ 38, /* field[38] = boolean_test */ 219, /* field[219] = call_context */ 164, /* field[164] = call_stmt */ 27, /* field[27] = case_expr */ 29, /* field[29] = case_test_expr */ 28, /* field[28] = case_when */ 104, /* field[104] = check_point_stmt */ 64, /* field[64] = close_portal_stmt */ 65, /* field[65] = cluster_stmt */ 33, /* field[33] = coalesce_expr */ 39, /* field[39] = coerce_to_domain */ 40, /* field[40] = coerce_to_domain_value */ 23, /* field[23] = coerce_via_io */ 178, /* field[178] = collate_clause */ 26, /* field[26] = collate_expr */ 187, /* field[187] = column_def */ 167, /* field[167] = column_ref */ 71, /* field[71] = comment_stmt */ 209, /* field[209] = common_table_expr */ 127, /* field[127] = composite_type_stmt */ 189, /* field[189] = constraint */ 102, /* field[102] = constraints_set_stmt */ 25, /* field[25] = convert_rowtype_expr */ 66, /* field[66] = copy_stmt */ 156, /* field[156] = create_am_stmt */ 110, /* field[110] = create_cast_stmt */ 109, /* field[109] = create_conversion_stmt */ 85, /* field[85] = create_domain_stmt */ 128, /* field[128] = create_enum_stmt */ 148, /* field[148] = create_event_trig_stmt */ 145, /* field[145] = create_extension_stmt */ 133, /* field[133] = create_fdw_stmt */ 135, /* field[135] = create_foreign_server_stmt */ 143, /* field[143] = create_foreign_table_stmt */ 74, /* field[74] = create_function_stmt */ 200, /* field[200] = create_op_class_item */ 111, /* field[111] = create_op_class_stmt */ 112, /* field[112] = create_op_family_stmt */ 97, /* field[97] = create_plang_stmt */ 153, /* field[153] = create_policy_stmt */ 157, /* field[157] = create_publication_stmt */ 129, /* field[129] = create_range_stmt */ 98, /* field[98] = create_role_stmt */ 105, /* field[105] = create_schema_stmt */ 91, /* field[91] = create_seq_stmt */ 162, /* field[162] = create_stats_stmt */ 67, /* field[67] = create_stmt */ 159, /* field[159] = create_subscription_stmt */ 90, /* field[90] = create_table_as_stmt */ 118, /* field[118] = create_table_space_stmt */ 155, /* field[155] = create_transform_stmt */ 96, /* field[96] = create_trig_stmt */ 137, /* field[137] = create_user_mapping_stmt */ 86, /* field[86] = createdb_stmt */ 42, /* field[42] = current_of_expr */ 116, /* field[116] = deallocate_stmt */ 117, /* field[117] = declare_cursor_stmt */ 190, /* field[190] = def_elem */ 68, /* field[68] = define_stmt */ 54, /* field[54] = delete_stmt */ 95, /* field[95] = discard_stmt */ 13, /* field[13] = distinct_expr */ 76, /* field[76] = do_stmt */ 125, /* field[125] = drop_owned_stmt */ 100, /* field[100] = drop_role_stmt */ 69, /* field[69] = drop_stmt */ 161, /* field[161] = drop_subscription_stmt */ 119, /* field[119] = drop_table_space_stmt */ 139, /* field[139] = drop_user_mapping_stmt */ 87, /* field[87] = dropdb_stmt */ 115, /* field[115] = execute_stmt */ 89, /* field[89] = explain_stmt */ 3, /* field[3] = expr */ 72, /* field[72] = fetch_stmt */ 20, /* field[20] = field_select */ 21, /* field[21] = field_store */ 221, /* field[221] = float */ 48, /* field[48] = from_expr */ 170, /* field[170] = func_call */ 10, /* field[10] = func_expr */ 202, /* field[202] = function_parameter */ 62, /* field[62] = grant_role_stmt */ 61, /* field[61] = grant_stmt */ 7, /* field[7] = grouping_func */ 196, /* field[196] = grouping_set */ 144, /* field[144] = import_foreign_schema_stmt */ 188, /* field[188] = index_elem */ 73, /* field[73] = index_stmt */ 207, /* field[207] = infer_clause */ 44, /* field[44] = inference_elem */ 218, /* field[218] = inline_code_block */ 53, /* field[53] = insert_stmt */ 226, /* field[226] = int_list */ 220, /* field[220] = integer */ 50, /* field[50] = into_clause */ 47, /* field[47] = join_expr */ 225, /* field[225] = list */ 80, /* field[80] = listen_stmt */ 84, /* field[84] = load_stmt */ 101, /* field[101] = lock_stmt */ 203, /* field[203] = locking_clause */ 34, /* field[34] = min_max_expr */ 176, /* field[176] = multi_assign_ref */ 11, /* field[11] = named_arg_expr */ 43, /* field[43] = next_value_expr */ 79, /* field[79] = notify_stmt */ 224, /* field[224] = null */ 14, /* field[14] = null_if_expr */ 37, /* field[37] = null_test */ 198, /* field[198] = object_with_args */ 227, /* field[227] = oid_list */ 208, /* field[208] = on_conflict_clause */ 49, /* field[49] = on_conflict_expr */ 12, /* field[12] = op_expr */ 5, /* field[5] = param */ 168, /* field[168] = param_ref */ 214, /* field[214] = partition_bound_spec */ 216, /* field[216] = partition_cmd */ 212, /* field[212] = partition_elem */ 215, /* field[215] = partition_range_datum */ 213, /* field[213] = partition_spec */ 114, /* field[114] = prepare_stmt */ 52, /* field[52] = query */ 182, /* field[182] = range_function */ 181, /* field[181] = range_subselect */ 184, /* field[184] = range_table_func */ 185, /* field[185] = range_table_func_col */ 183, /* field[183] = range_table_sample */ 191, /* field[191] = range_tbl_entry */ 192, /* field[192] = range_tbl_function */ 46, /* field[46] = range_tbl_ref */ 1, /* field[1] = range_var */ 51, /* field[51] = raw_stmt */ 126, /* field[126] = reassign_owned_stmt */ 150, /* field[150] = refresh_mat_view_stmt */ 103, /* field[103] = reindex_stmt */ 22, /* field[22] = relabel_type */ 77, /* field[77] = rename_stmt */ 151, /* field[151] = replica_identity_stmt */ 175, /* field[175] = res_target */ 210, /* field[210] = role_spec */ 32, /* field[32] = row_compare_expr */ 31, /* field[31] = row_expr */ 204, /* field[204] = row_mark_clause */ 78, /* field[78] = rule_stmt */ 15, /* field[15] = scalar_array_op_expr */ 142, /* field[142] = sec_label_stmt */ 56, /* field[56] = select_stmt */ 60, /* field[60] = set_operation_stmt */ 41, /* field[41] = set_to_default */ 179, /* field[179] = sort_by */ 195, /* field[195] = sort_group_clause */ 35, /* field[35] = sqlvalue_function */ 222, /* field[222] = string */ 17, /* field[17] = sub_link */ 18, /* field[18] = sub_plan */ 9, /* field[9] = subscripting_ref */ 2, /* field[2] = table_func */ 201, /* field[201] = table_like_clause */ 193, /* field[193] = table_sample_clause */ 45, /* field[45] = target_entry */ 82, /* field[82] = transaction_stmt */ 211, /* field[211] = trigger_transition */ 70, /* field[70] = truncate_stmt */ 177, /* field[177] = type_cast */ 186, /* field[186] = type_name */ 81, /* field[81] = unlisten_stmt */ 55, /* field[55] = update_stmt */ 217, /* field[217] = vacuum_relation */ 88, /* field[88] = vacuum_stmt */ 4, /* field[4] = var */ 93, /* field[93] = variable_set_stmt */ 94, /* field[94] = variable_show_stmt */ 83, /* field[83] = view_stmt */ 197, /* field[197] = window_clause */ 180, /* field[180] = window_def */ 8, /* field[8] = window_func */ 194, /* field[194] = with_check_option */ 206, /* field[206] = with_clause */ 36, /* field[36] = xml_expr */ 205, /* field[205] = xml_serialize */ }; static const ProtobufCIntRange pg_query__node__number_ranges[1 + 1] = { { 1, 0 }, { 0, 228 } }; const ProtobufCMessageDescriptor pg_query__node__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Node", "Node", "PgQuery__Node", "pg_query", sizeof(PgQuery__Node), 228, pg_query__node__field_descriptors, pg_query__node__field_indices_by_name, 1, pg_query__node__number_ranges, (ProtobufCMessageInit) pg_query__node__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__integer__field_descriptors[1] = { { "ival", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Integer, ival), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__integer__field_indices_by_name[] = { 0, /* field[0] = ival */ }; static const ProtobufCIntRange pg_query__integer__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__integer__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Integer", "Integer", "PgQuery__Integer", "pg_query", sizeof(PgQuery__Integer), 1, pg_query__integer__field_descriptors, pg_query__integer__field_indices_by_name, 1, pg_query__integer__number_ranges, (ProtobufCMessageInit) pg_query__integer__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__float__field_descriptors[1] = { { "str", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Float, str), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__float__field_indices_by_name[] = { 0, /* field[0] = str */ }; static const ProtobufCIntRange pg_query__float__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__float__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Float", "Float", "PgQuery__Float", "pg_query", sizeof(PgQuery__Float), 1, pg_query__float__field_descriptors, pg_query__float__field_indices_by_name, 1, pg_query__float__number_ranges, (ProtobufCMessageInit) pg_query__float__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__string__field_descriptors[1] = { { "str", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__String, str), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__string__field_indices_by_name[] = { 0, /* field[0] = str */ }; static const ProtobufCIntRange pg_query__string__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__string__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.String", "String", "PgQuery__String", "pg_query", sizeof(PgQuery__String), 1, pg_query__string__field_descriptors, pg_query__string__field_indices_by_name, 1, pg_query__string__number_ranges, (ProtobufCMessageInit) pg_query__string__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__bit_string__field_descriptors[1] = { { "str", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__BitString, str), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__bit_string__field_indices_by_name[] = { 0, /* field[0] = str */ }; static const ProtobufCIntRange pg_query__bit_string__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__bit_string__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.BitString", "BitString", "PgQuery__BitString", "pg_query", sizeof(PgQuery__BitString), 1, pg_query__bit_string__field_descriptors, pg_query__bit_string__field_indices_by_name, 1, pg_query__bit_string__number_ranges, (ProtobufCMessageInit) pg_query__bit_string__init, NULL,NULL,NULL /* reserved[123] */ }; #define pg_query__null__field_descriptors NULL #define pg_query__null__field_indices_by_name NULL #define pg_query__null__number_ranges NULL const ProtobufCMessageDescriptor pg_query__null__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Null", "Null", "PgQuery__Null", "pg_query", sizeof(PgQuery__Null), 0, pg_query__null__field_descriptors, pg_query__null__field_indices_by_name, 0, pg_query__null__number_ranges, (ProtobufCMessageInit) pg_query__null__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__list__field_descriptors[1] = { { "items", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__List, n_items), offsetof(PgQuery__List, items), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__list__field_indices_by_name[] = { 0, /* field[0] = items */ }; static const ProtobufCIntRange pg_query__list__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.List", "List", "PgQuery__List", "pg_query", sizeof(PgQuery__List), 1, pg_query__list__field_descriptors, pg_query__list__field_indices_by_name, 1, pg_query__list__number_ranges, (ProtobufCMessageInit) pg_query__list__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__oid_list__field_descriptors[1] = { { "items", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__OidList, n_items), offsetof(PgQuery__OidList, items), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__oid_list__field_indices_by_name[] = { 0, /* field[0] = items */ }; static const ProtobufCIntRange pg_query__oid_list__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__oid_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.OidList", "OidList", "PgQuery__OidList", "pg_query", sizeof(PgQuery__OidList), 1, pg_query__oid_list__field_descriptors, pg_query__oid_list__field_indices_by_name, 1, pg_query__oid_list__number_ranges, (ProtobufCMessageInit) pg_query__oid_list__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__int_list__field_descriptors[1] = { { "items", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IntList, n_items), offsetof(PgQuery__IntList, items), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__int_list__field_indices_by_name[] = { 0, /* field[0] = items */ }; static const ProtobufCIntRange pg_query__int_list__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__int_list__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.IntList", "IntList", "PgQuery__IntList", "pg_query", sizeof(PgQuery__IntList), 1, pg_query__int_list__field_descriptors, pg_query__int_list__field_indices_by_name, 1, pg_query__int_list__number_ranges, (ProtobufCMessageInit) pg_query__int_list__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alias__field_descriptors[2] = { { "aliasname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Alias, aliasname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colnames", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Alias, n_colnames), offsetof(PgQuery__Alias, colnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alias__field_indices_by_name[] = { 0, /* field[0] = aliasname */ 1, /* field[1] = colnames */ }; static const ProtobufCIntRange pg_query__alias__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alias__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Alias", "Alias", "PgQuery__Alias", "pg_query", sizeof(PgQuery__Alias), 2, pg_query__alias__field_descriptors, pg_query__alias__field_indices_by_name, 1, pg_query__alias__number_ranges, (ProtobufCMessageInit) pg_query__alias__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_var__field_descriptors[7] = { { "catalogname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RangeVar, catalogname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "schemaname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RangeVar, schemaname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RangeVar, relname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inh", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeVar, inh), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relpersistence", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RangeVar, relpersistence), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alias", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeVar, alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeVar, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_var__field_indices_by_name[] = { 5, /* field[5] = alias */ 0, /* field[0] = catalogname */ 3, /* field[3] = inh */ 6, /* field[6] = location */ 2, /* field[2] = relname */ 4, /* field[4] = relpersistence */ 1, /* field[1] = schemaname */ }; static const ProtobufCIntRange pg_query__range_var__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__range_var__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeVar", "RangeVar", "PgQuery__RangeVar", "pg_query", sizeof(PgQuery__RangeVar), 7, pg_query__range_var__field_descriptors, pg_query__range_var__field_indices_by_name, 1, pg_query__range_var__number_ranges, (ProtobufCMessageInit) pg_query__range_var__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__table_func__field_descriptors[13] = { { "ns_uris", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_ns_uris), offsetof(PgQuery__TableFunc, ns_uris), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ns_names", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_ns_names), offsetof(PgQuery__TableFunc, ns_names), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "docexpr", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TableFunc, docexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rowexpr", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TableFunc, rowexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colnames", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_colnames), offsetof(PgQuery__TableFunc, colnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coltypes", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_coltypes), offsetof(PgQuery__TableFunc, coltypes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coltypmods", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_coltypmods), offsetof(PgQuery__TableFunc, coltypmods), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colcollations", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_colcollations), offsetof(PgQuery__TableFunc, colcollations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colexprs", 9, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_colexprs), offsetof(PgQuery__TableFunc, colexprs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coldefexprs", 10, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableFunc, n_coldefexprs), offsetof(PgQuery__TableFunc, coldefexprs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "notnulls", 11, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__TableFunc, n_notnulls), offsetof(PgQuery__TableFunc, notnulls), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ordinalitycol", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TableFunc, ordinalitycol), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TableFunc, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__table_func__field_indices_by_name[] = { 7, /* field[7] = colcollations */ 9, /* field[9] = coldefexprs */ 8, /* field[8] = colexprs */ 4, /* field[4] = colnames */ 5, /* field[5] = coltypes */ 6, /* field[6] = coltypmods */ 2, /* field[2] = docexpr */ 12, /* field[12] = location */ 10, /* field[10] = notnulls */ 1, /* field[1] = ns_names */ 0, /* field[0] = ns_uris */ 11, /* field[11] = ordinalitycol */ 3, /* field[3] = rowexpr */ }; static const ProtobufCIntRange pg_query__table_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 13 } }; const ProtobufCMessageDescriptor pg_query__table_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TableFunc", "TableFunc", "PgQuery__TableFunc", "pg_query", sizeof(PgQuery__TableFunc), 13, pg_query__table_func__field_descriptors, pg_query__table_func__field_indices_by_name, 1, pg_query__table_func__number_ranges, (ProtobufCMessageInit) pg_query__table_func__init, NULL,NULL,NULL /* reserved[123] */ }; #define pg_query__expr__field_descriptors NULL #define pg_query__expr__field_indices_by_name NULL #define pg_query__expr__number_ranges NULL const ProtobufCMessageDescriptor pg_query__expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Expr", "Expr", "PgQuery__Expr", "pg_query", sizeof(PgQuery__Expr), 0, pg_query__expr__field_descriptors, pg_query__expr__field_indices_by_name, 0, pg_query__expr__number_ranges, (ProtobufCMessageInit) pg_query__expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__var__field_descriptors[10] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Var, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "varno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, varno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "varattno", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, varattno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "vartype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, vartype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "vartypmod", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, vartypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "varcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, varcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "varlevelsup", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, varlevelsup), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "varnosyn", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, varnosyn), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "varattnosyn", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, varattnosyn), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Var, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__var__field_indices_by_name[] = { 9, /* field[9] = location */ 2, /* field[2] = varattno */ 8, /* field[8] = varattnosyn */ 5, /* field[5] = varcollid */ 6, /* field[6] = varlevelsup */ 1, /* field[1] = varno */ 7, /* field[7] = varnosyn */ 3, /* field[3] = vartype */ 4, /* field[4] = vartypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__var__number_ranges[1 + 1] = { { 1, 0 }, { 0, 10 } }; const ProtobufCMessageDescriptor pg_query__var__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Var", "Var", "PgQuery__Var", "pg_query", sizeof(PgQuery__Var), 10, pg_query__var__field_descriptors, pg_query__var__field_indices_by_name, 1, pg_query__var__number_ranges, (ProtobufCMessageInit) pg_query__var__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__param__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Param, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "paramkind", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__Param, paramkind), &pg_query__param_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "paramid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Param, paramid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "paramtype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Param, paramtype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "paramtypmod", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Param, paramtypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "paramcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Param, paramcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Param, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__param__field_indices_by_name[] = { 6, /* field[6] = location */ 5, /* field[5] = paramcollid */ 2, /* field[2] = paramid */ 1, /* field[1] = paramkind */ 3, /* field[3] = paramtype */ 4, /* field[4] = paramtypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__param__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__param__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Param", "Param", "PgQuery__Param", "pg_query", sizeof(PgQuery__Param), 7, pg_query__param__field_descriptors, pg_query__param__field_indices_by_name, 1, pg_query__param__number_ranges, (ProtobufCMessageInit) pg_query__param__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__aggref__field_descriptors[18] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggfnoid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggfnoid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggtype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggtype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggcollid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggtranstype", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggtranstype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggargtypes", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Aggref, n_aggargtypes), offsetof(PgQuery__Aggref, aggargtypes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggdirectargs", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Aggref, n_aggdirectargs), offsetof(PgQuery__Aggref, aggdirectargs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 9, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Aggref, n_args), offsetof(PgQuery__Aggref, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggorder", 10, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Aggref, n_aggorder), offsetof(PgQuery__Aggref, aggorder), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggdistinct", 11, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Aggref, n_aggdistinct), offsetof(PgQuery__Aggref, aggdistinct), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggfilter", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggfilter), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggstar", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggstar), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggvariadic", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggvariadic), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggkind", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggkind), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "agglevelsup", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, agglevelsup), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggsplit", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, aggsplit), &pg_query__agg_split__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 18, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Aggref, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__aggref__field_indices_by_name[] = { 6, /* field[6] = aggargtypes */ 3, /* field[3] = aggcollid */ 7, /* field[7] = aggdirectargs */ 10, /* field[10] = aggdistinct */ 11, /* field[11] = aggfilter */ 1, /* field[1] = aggfnoid */ 14, /* field[14] = aggkind */ 15, /* field[15] = agglevelsup */ 9, /* field[9] = aggorder */ 16, /* field[16] = aggsplit */ 12, /* field[12] = aggstar */ 5, /* field[5] = aggtranstype */ 2, /* field[2] = aggtype */ 13, /* field[13] = aggvariadic */ 8, /* field[8] = args */ 4, /* field[4] = inputcollid */ 17, /* field[17] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__aggref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 18 } }; const ProtobufCMessageDescriptor pg_query__aggref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Aggref", "Aggref", "PgQuery__Aggref", "pg_query", sizeof(PgQuery__Aggref), 18, pg_query__aggref__field_descriptors, pg_query__aggref__field_indices_by_name, 1, pg_query__aggref__number_ranges, (ProtobufCMessageInit) pg_query__aggref__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__grouping_func__field_descriptors[6] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__GroupingFunc, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GroupingFunc, n_args), offsetof(PgQuery__GroupingFunc, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refs", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GroupingFunc, n_refs), offsetof(PgQuery__GroupingFunc, refs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cols", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GroupingFunc, n_cols), offsetof(PgQuery__GroupingFunc, cols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "agglevelsup", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__GroupingFunc, agglevelsup), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__GroupingFunc, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__grouping_func__field_indices_by_name[] = { 4, /* field[4] = agglevelsup */ 1, /* field[1] = args */ 3, /* field[3] = cols */ 5, /* field[5] = location */ 2, /* field[2] = refs */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__grouping_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__grouping_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.GroupingFunc", "GroupingFunc", "PgQuery__GroupingFunc", "pg_query", sizeof(PgQuery__GroupingFunc), 6, pg_query__grouping_func__field_descriptors, pg_query__grouping_func__field_indices_by_name, 1, pg_query__grouping_func__number_ranges, (ProtobufCMessageInit) pg_query__grouping_func__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__window_func__field_descriptors[11] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "winfnoid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, winfnoid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wintype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, wintype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wincollid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, wincollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WindowFunc, n_args), offsetof(PgQuery__WindowFunc, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aggfilter", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, aggfilter), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "winref", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, winref), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "winstar", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, winstar), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "winagg", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, winagg), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowFunc, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__window_func__field_indices_by_name[] = { 6, /* field[6] = aggfilter */ 5, /* field[5] = args */ 4, /* field[4] = inputcollid */ 10, /* field[10] = location */ 9, /* field[9] = winagg */ 3, /* field[3] = wincollid */ 1, /* field[1] = winfnoid */ 7, /* field[7] = winref */ 8, /* field[8] = winstar */ 2, /* field[2] = wintype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__window_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 11 } }; const ProtobufCMessageDescriptor pg_query__window_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WindowFunc", "WindowFunc", "PgQuery__WindowFunc", "pg_query", sizeof(PgQuery__WindowFunc), 11, pg_query__window_func__field_descriptors, pg_query__window_func__field_indices_by_name, 1, pg_query__window_func__number_ranges, (ProtobufCMessageInit) pg_query__window_func__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__subscripting_ref__field_descriptors[9] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubscriptingRef, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refcontainertype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubscriptingRef, refcontainertype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refelemtype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubscriptingRef, refelemtype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reftypmod", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubscriptingRef, reftypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refcollid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubscriptingRef, refcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refupperindexpr", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubscriptingRef, n_refupperindexpr), offsetof(PgQuery__SubscriptingRef, refupperindexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reflowerindexpr", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubscriptingRef, n_reflowerindexpr), offsetof(PgQuery__SubscriptingRef, reflowerindexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refexpr", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubscriptingRef, refexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refassgnexpr", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubscriptingRef, refassgnexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__subscripting_ref__field_indices_by_name[] = { 8, /* field[8] = refassgnexpr */ 4, /* field[4] = refcollid */ 1, /* field[1] = refcontainertype */ 2, /* field[2] = refelemtype */ 7, /* field[7] = refexpr */ 6, /* field[6] = reflowerindexpr */ 3, /* field[3] = reftypmod */ 5, /* field[5] = refupperindexpr */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__subscripting_ref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 9 } }; const ProtobufCMessageDescriptor pg_query__subscripting_ref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SubscriptingRef", "SubscriptingRef", "PgQuery__SubscriptingRef", "pg_query", sizeof(PgQuery__SubscriptingRef), 9, pg_query__subscripting_ref__field_descriptors, pg_query__subscripting_ref__field_indices_by_name, 1, pg_query__subscripting_ref__number_ranges, (ProtobufCMessageInit) pg_query__subscripting_ref__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__func_expr__field_descriptors[10] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FuncExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__FuncExpr, funcid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcresulttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__FuncExpr, funcresulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcretset", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__FuncExpr, funcretset), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcvariadic", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__FuncExpr, funcvariadic), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcformat", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__FuncExpr, funcformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccollid", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__FuncExpr, funccollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__FuncExpr, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 9, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__FuncExpr, n_args), offsetof(PgQuery__FuncExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__FuncExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__func_expr__field_indices_by_name[] = { 8, /* field[8] = args */ 6, /* field[6] = funccollid */ 5, /* field[5] = funcformat */ 1, /* field[1] = funcid */ 2, /* field[2] = funcresulttype */ 3, /* field[3] = funcretset */ 4, /* field[4] = funcvariadic */ 7, /* field[7] = inputcollid */ 9, /* field[9] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__func_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 10 } }; const ProtobufCMessageDescriptor pg_query__func_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FuncExpr", "FuncExpr", "PgQuery__FuncExpr", "pg_query", sizeof(PgQuery__FuncExpr), 10, pg_query__func_expr__field_descriptors, pg_query__func_expr__field_indices_by_name, 1, pg_query__func_expr__number_ranges, (ProtobufCMessageInit) pg_query__func_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__named_arg_expr__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__NamedArgExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__NamedArgExpr, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__NamedArgExpr, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "argnumber", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__NamedArgExpr, argnumber), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__NamedArgExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__named_arg_expr__field_indices_by_name[] = { 1, /* field[1] = arg */ 3, /* field[3] = argnumber */ 4, /* field[4] = location */ 2, /* field[2] = name */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__named_arg_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__named_arg_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.NamedArgExpr", "NamedArgExpr", "PgQuery__NamedArgExpr", "pg_query", sizeof(PgQuery__NamedArgExpr), 5, pg_query__named_arg_expr__field_descriptors, pg_query__named_arg_expr__field_indices_by_name, 1, pg_query__named_arg_expr__number_ranges, (ProtobufCMessageInit) pg_query__named_arg_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__op_expr__field_descriptors[9] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, opno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfuncid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, opfuncid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opresulttype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, opresulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opretset", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, opretset), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, opcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__OpExpr, n_args), offsetof(PgQuery__OpExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__OpExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__op_expr__field_indices_by_name[] = { 7, /* field[7] = args */ 6, /* field[6] = inputcollid */ 8, /* field[8] = location */ 5, /* field[5] = opcollid */ 2, /* field[2] = opfuncid */ 1, /* field[1] = opno */ 3, /* field[3] = opresulttype */ 4, /* field[4] = opretset */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__op_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 9 } }; const ProtobufCMessageDescriptor pg_query__op_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.OpExpr", "OpExpr", "PgQuery__OpExpr", "pg_query", sizeof(PgQuery__OpExpr), 9, pg_query__op_expr__field_descriptors, pg_query__op_expr__field_indices_by_name, 1, pg_query__op_expr__number_ranges, (ProtobufCMessageInit) pg_query__op_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__distinct_expr__field_descriptors[9] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, opno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfuncid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, opfuncid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opresulttype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, opresulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opretset", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, opretset), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, opcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DistinctExpr, n_args), offsetof(PgQuery__DistinctExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__DistinctExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__distinct_expr__field_indices_by_name[] = { 7, /* field[7] = args */ 6, /* field[6] = inputcollid */ 8, /* field[8] = location */ 5, /* field[5] = opcollid */ 2, /* field[2] = opfuncid */ 1, /* field[1] = opno */ 3, /* field[3] = opresulttype */ 4, /* field[4] = opretset */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__distinct_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 9 } }; const ProtobufCMessageDescriptor pg_query__distinct_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DistinctExpr", "DistinctExpr", "PgQuery__DistinctExpr", "pg_query", sizeof(PgQuery__DistinctExpr), 9, pg_query__distinct_expr__field_descriptors, pg_query__distinct_expr__field_indices_by_name, 1, pg_query__distinct_expr__number_ranges, (ProtobufCMessageInit) pg_query__distinct_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__null_if_expr__field_descriptors[9] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, opno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfuncid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, opfuncid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opresulttype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, opresulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opretset", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, opretset), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, opcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__NullIfExpr, n_args), offsetof(PgQuery__NullIfExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullIfExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__null_if_expr__field_indices_by_name[] = { 7, /* field[7] = args */ 6, /* field[6] = inputcollid */ 8, /* field[8] = location */ 5, /* field[5] = opcollid */ 2, /* field[2] = opfuncid */ 1, /* field[1] = opno */ 3, /* field[3] = opresulttype */ 4, /* field[4] = opretset */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__null_if_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 9 } }; const ProtobufCMessageDescriptor pg_query__null_if_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.NullIfExpr", "NullIfExpr", "PgQuery__NullIfExpr", "pg_query", sizeof(PgQuery__NullIfExpr), 9, pg_query__null_if_expr__field_descriptors, pg_query__null_if_expr__field_indices_by_name, 1, pg_query__null_if_expr__number_ranges, (ProtobufCMessageInit) pg_query__null_if_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__scalar_array_op_expr__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, opno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfuncid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, opfuncid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "use_or", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, use_or), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ScalarArrayOpExpr, n_args), offsetof(PgQuery__ScalarArrayOpExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScalarArrayOpExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__scalar_array_op_expr__field_indices_by_name[] = { 5, /* field[5] = args */ 4, /* field[4] = inputcollid */ 6, /* field[6] = location */ 2, /* field[2] = opfuncid */ 1, /* field[1] = opno */ 3, /* field[3] = use_or */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__scalar_array_op_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__scalar_array_op_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ScalarArrayOpExpr", "ScalarArrayOpExpr", "PgQuery__ScalarArrayOpExpr", "pg_query", sizeof(PgQuery__ScalarArrayOpExpr), 7, pg_query__scalar_array_op_expr__field_descriptors, pg_query__scalar_array_op_expr__field_indices_by_name, 1, pg_query__scalar_array_op_expr__number_ranges, (ProtobufCMessageInit) pg_query__scalar_array_op_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__bool_expr__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__BoolExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "boolop", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__BoolExpr, boolop), &pg_query__bool_expr_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__BoolExpr, n_args), offsetof(PgQuery__BoolExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__BoolExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__bool_expr__field_indices_by_name[] = { 2, /* field[2] = args */ 1, /* field[1] = boolop */ 3, /* field[3] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__bool_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__bool_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.BoolExpr", "BoolExpr", "PgQuery__BoolExpr", "pg_query", sizeof(PgQuery__BoolExpr), 4, pg_query__bool_expr__field_descriptors, pg_query__bool_expr__field_indices_by_name, 1, pg_query__bool_expr__number_ranges, (ProtobufCMessageInit) pg_query__bool_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sub_link__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_link_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, sub_link_type), &pg_query__sub_link_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_link_id", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, sub_link_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "testexpr", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, testexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "oper_name", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubLink, n_oper_name), offsetof(PgQuery__SubLink, oper_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subselect", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, subselect), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubLink, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sub_link__field_indices_by_name[] = { 6, /* field[6] = location */ 4, /* field[4] = oper_name */ 2, /* field[2] = sub_link_id */ 1, /* field[1] = sub_link_type */ 5, /* field[5] = subselect */ 3, /* field[3] = testexpr */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__sub_link__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__sub_link__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SubLink", "SubLink", "PgQuery__SubLink", "pg_query", sizeof(PgQuery__SubLink), 7, pg_query__sub_link__field_descriptors, pg_query__sub_link__field_indices_by_name, 1, pg_query__sub_link__number_ranges, (ProtobufCMessageInit) pg_query__sub_link__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sub_plan__field_descriptors[17] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sub_link_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, sub_link_type), &pg_query__sub_link_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "testexpr", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, testexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "param_ids", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubPlan, n_param_ids), offsetof(PgQuery__SubPlan, param_ids), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plan_id", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, plan_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plan_name", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, plan_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "first_col_type", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, first_col_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "first_col_typmod", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, first_col_typmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "first_col_collation", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, first_col_collation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "use_hash_table", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, use_hash_table), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unknown_eq_false", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, unknown_eq_false), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "parallel_safe", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, parallel_safe), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "set_param", 13, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubPlan, n_set_param), offsetof(PgQuery__SubPlan, set_param), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "par_param", 14, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubPlan, n_par_param), offsetof(PgQuery__SubPlan, par_param), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 15, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SubPlan, n_args), offsetof(PgQuery__SubPlan, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "startup_cost", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_DOUBLE, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, startup_cost), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "per_call_cost", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_DOUBLE, 0, /* quantifier_offset */ offsetof(PgQuery__SubPlan, per_call_cost), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sub_plan__field_indices_by_name[] = { 14, /* field[14] = args */ 8, /* field[8] = first_col_collation */ 6, /* field[6] = first_col_type */ 7, /* field[7] = first_col_typmod */ 13, /* field[13] = par_param */ 11, /* field[11] = parallel_safe */ 3, /* field[3] = param_ids */ 16, /* field[16] = per_call_cost */ 4, /* field[4] = plan_id */ 5, /* field[5] = plan_name */ 12, /* field[12] = set_param */ 15, /* field[15] = startup_cost */ 1, /* field[1] = sub_link_type */ 2, /* field[2] = testexpr */ 10, /* field[10] = unknown_eq_false */ 9, /* field[9] = use_hash_table */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__sub_plan__number_ranges[1 + 1] = { { 1, 0 }, { 0, 17 } }; const ProtobufCMessageDescriptor pg_query__sub_plan__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SubPlan", "SubPlan", "PgQuery__SubPlan", "pg_query", sizeof(PgQuery__SubPlan), 17, pg_query__sub_plan__field_descriptors, pg_query__sub_plan__field_indices_by_name, 1, pg_query__sub_plan__number_ranges, (ProtobufCMessageInit) pg_query__sub_plan__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alternative_sub_plan__field_descriptors[2] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlternativeSubPlan, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subplans", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlternativeSubPlan, n_subplans), offsetof(PgQuery__AlternativeSubPlan, subplans), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alternative_sub_plan__field_indices_by_name[] = { 1, /* field[1] = subplans */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__alternative_sub_plan__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alternative_sub_plan__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlternativeSubPlan", "AlternativeSubPlan", "PgQuery__AlternativeSubPlan", "pg_query", sizeof(PgQuery__AlternativeSubPlan), 2, pg_query__alternative_sub_plan__field_descriptors, pg_query__alternative_sub_plan__field_indices_by_name, 1, pg_query__alternative_sub_plan__number_ranges, (ProtobufCMessageInit) pg_query__alternative_sub_plan__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__field_select__field_descriptors[6] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fieldnum", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, fieldnum), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttypmod", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, resulttypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resultcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__FieldSelect, resultcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__field_select__field_indices_by_name[] = { 1, /* field[1] = arg */ 2, /* field[2] = fieldnum */ 5, /* field[5] = resultcollid */ 3, /* field[3] = resulttype */ 4, /* field[4] = resulttypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__field_select__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__field_select__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FieldSelect", "FieldSelect", "PgQuery__FieldSelect", "pg_query", sizeof(PgQuery__FieldSelect), 6, pg_query__field_select__field_descriptors, pg_query__field_select__field_indices_by_name, 1, pg_query__field_select__number_ranges, (ProtobufCMessageInit) pg_query__field_select__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__field_store__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FieldStore, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FieldStore, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "newvals", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__FieldStore, n_newvals), offsetof(PgQuery__FieldStore, newvals), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fieldnums", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__FieldStore, n_fieldnums), offsetof(PgQuery__FieldStore, fieldnums), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__FieldStore, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__field_store__field_indices_by_name[] = { 1, /* field[1] = arg */ 3, /* field[3] = fieldnums */ 2, /* field[2] = newvals */ 4, /* field[4] = resulttype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__field_store__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__field_store__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FieldStore", "FieldStore", "PgQuery__FieldStore", "pg_query", sizeof(PgQuery__FieldStore), 5, pg_query__field_store__field_descriptors, pg_query__field_store__field_indices_by_name, 1, pg_query__field_store__number_ranges, (ProtobufCMessageInit) pg_query__field_store__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__relabel_type__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttypmod", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, resulttypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resultcollid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, resultcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relabelformat", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, relabelformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RelabelType, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__relabel_type__field_indices_by_name[] = { 1, /* field[1] = arg */ 6, /* field[6] = location */ 5, /* field[5] = relabelformat */ 4, /* field[4] = resultcollid */ 2, /* field[2] = resulttype */ 3, /* field[3] = resulttypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__relabel_type__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__relabel_type__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RelabelType", "RelabelType", "PgQuery__RelabelType", "pg_query", sizeof(PgQuery__RelabelType), 7, pg_query__relabel_type__field_descriptors, pg_query__relabel_type__field_indices_by_name, 1, pg_query__relabel_type__number_ranges, (ProtobufCMessageInit) pg_query__relabel_type__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__coerce_via_io__field_descriptors[6] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resultcollid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, resultcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerceformat", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, coerceformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceViaIO, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__coerce_via_io__field_indices_by_name[] = { 1, /* field[1] = arg */ 4, /* field[4] = coerceformat */ 5, /* field[5] = location */ 3, /* field[3] = resultcollid */ 2, /* field[2] = resulttype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__coerce_via_io__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__coerce_via_io__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CoerceViaIO", "CoerceViaIO", "PgQuery__CoerceViaIO", "pg_query", sizeof(PgQuery__CoerceViaIO), 6, pg_query__coerce_via_io__field_descriptors, pg_query__coerce_via_io__field_indices_by_name, 1, pg_query__coerce_via_io__number_ranges, (ProtobufCMessageInit) pg_query__coerce_via_io__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__array_coerce_expr__field_descriptors[8] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "elemexpr", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, elemexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttypmod", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, resulttypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resultcollid", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, resultcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coerceformat", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, coerceformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayCoerceExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__array_coerce_expr__field_indices_by_name[] = { 1, /* field[1] = arg */ 6, /* field[6] = coerceformat */ 2, /* field[2] = elemexpr */ 7, /* field[7] = location */ 5, /* field[5] = resultcollid */ 3, /* field[3] = resulttype */ 4, /* field[4] = resulttypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__array_coerce_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__array_coerce_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ArrayCoerceExpr", "ArrayCoerceExpr", "PgQuery__ArrayCoerceExpr", "pg_query", sizeof(PgQuery__ArrayCoerceExpr), 8, pg_query__array_coerce_expr__field_descriptors, pg_query__array_coerce_expr__field_indices_by_name, 1, pg_query__array_coerce_expr__number_ranges, (ProtobufCMessageInit) pg_query__array_coerce_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__convert_rowtype_expr__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ConvertRowtypeExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ConvertRowtypeExpr, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ConvertRowtypeExpr, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "convertformat", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ConvertRowtypeExpr, convertformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ConvertRowtypeExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__convert_rowtype_expr__field_indices_by_name[] = { 1, /* field[1] = arg */ 3, /* field[3] = convertformat */ 4, /* field[4] = location */ 2, /* field[2] = resulttype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__convert_rowtype_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__convert_rowtype_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ConvertRowtypeExpr", "ConvertRowtypeExpr", "PgQuery__ConvertRowtypeExpr", "pg_query", sizeof(PgQuery__ConvertRowtypeExpr), 5, pg_query__convert_rowtype_expr__field_descriptors, pg_query__convert_rowtype_expr__field_indices_by_name, 1, pg_query__convert_rowtype_expr__number_ranges, (ProtobufCMessageInit) pg_query__convert_rowtype_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__collate_expr__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CollateExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CollateExpr, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coll_oid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CollateExpr, coll_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CollateExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__collate_expr__field_indices_by_name[] = { 1, /* field[1] = arg */ 2, /* field[2] = coll_oid */ 3, /* field[3] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__collate_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__collate_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CollateExpr", "CollateExpr", "PgQuery__CollateExpr", "pg_query", sizeof(PgQuery__CollateExpr), 4, pg_query__collate_expr__field_descriptors, pg_query__collate_expr__field_indices_by_name, 1, pg_query__collate_expr__number_ranges, (ProtobufCMessageInit) pg_query__collate_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__case_expr__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "casetype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, casetype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "casecollid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, casecollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CaseExpr, n_args), offsetof(PgQuery__CaseExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "defresult", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, defresult), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__case_expr__field_indices_by_name[] = { 3, /* field[3] = arg */ 4, /* field[4] = args */ 2, /* field[2] = casecollid */ 1, /* field[1] = casetype */ 5, /* field[5] = defresult */ 6, /* field[6] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__case_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__case_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CaseExpr", "CaseExpr", "PgQuery__CaseExpr", "pg_query", sizeof(PgQuery__CaseExpr), 7, pg_query__case_expr__field_descriptors, pg_query__case_expr__field_indices_by_name, 1, pg_query__case_expr__number_ranges, (ProtobufCMessageInit) pg_query__case_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__case_when__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseWhen, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseWhen, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "result", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseWhen, result), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseWhen, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__case_when__field_indices_by_name[] = { 1, /* field[1] = expr */ 3, /* field[3] = location */ 2, /* field[2] = result */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__case_when__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__case_when__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CaseWhen", "CaseWhen", "PgQuery__CaseWhen", "pg_query", sizeof(PgQuery__CaseWhen), 4, pg_query__case_when__field_descriptors, pg_query__case_when__field_indices_by_name, 1, pg_query__case_when__number_ranges, (ProtobufCMessageInit) pg_query__case_when__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__case_test_expr__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CaseTestExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_id", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseTestExpr, type_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_mod", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseTestExpr, type_mod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CaseTestExpr, collation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__case_test_expr__field_indices_by_name[] = { 3, /* field[3] = collation */ 1, /* field[1] = type_id */ 2, /* field[2] = type_mod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__case_test_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__case_test_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CaseTestExpr", "CaseTestExpr", "PgQuery__CaseTestExpr", "pg_query", sizeof(PgQuery__CaseTestExpr), 4, pg_query__case_test_expr__field_descriptors, pg_query__case_test_expr__field_indices_by_name, 1, pg_query__case_test_expr__number_ranges, (ProtobufCMessageInit) pg_query__case_test_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__array_expr__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_typeid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, array_typeid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_collid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, array_collid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "element_typeid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, element_typeid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "elements", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ArrayExpr, n_elements), offsetof(PgQuery__ArrayExpr, elements), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "multidims", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, multidims), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ArrayExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__array_expr__field_indices_by_name[] = { 2, /* field[2] = array_collid */ 1, /* field[1] = array_typeid */ 3, /* field[3] = element_typeid */ 4, /* field[4] = elements */ 6, /* field[6] = location */ 5, /* field[5] = multidims */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__array_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__array_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ArrayExpr", "ArrayExpr", "PgQuery__ArrayExpr", "pg_query", sizeof(PgQuery__ArrayExpr), 7, pg_query__array_expr__field_descriptors, pg_query__array_expr__field_indices_by_name, 1, pg_query__array_expr__number_ranges, (ProtobufCMessageInit) pg_query__array_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__row_expr__field_descriptors[6] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RowExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowExpr, n_args), offsetof(PgQuery__RowExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_typeid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RowExpr, row_typeid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_format", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RowExpr, row_format), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colnames", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowExpr, n_colnames), offsetof(PgQuery__RowExpr, colnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RowExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__row_expr__field_indices_by_name[] = { 1, /* field[1] = args */ 4, /* field[4] = colnames */ 5, /* field[5] = location */ 3, /* field[3] = row_format */ 2, /* field[2] = row_typeid */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__row_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__row_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RowExpr", "RowExpr", "PgQuery__RowExpr", "pg_query", sizeof(PgQuery__RowExpr), 6, pg_query__row_expr__field_descriptors, pg_query__row_expr__field_indices_by_name, 1, pg_query__row_expr__number_ranges, (ProtobufCMessageInit) pg_query__row_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__row_compare_expr__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RowCompareExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rctype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RowCompareExpr, rctype), &pg_query__row_compare_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opnos", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowCompareExpr, n_opnos), offsetof(PgQuery__RowCompareExpr, opnos), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfamilies", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowCompareExpr, n_opfamilies), offsetof(PgQuery__RowCompareExpr, opfamilies), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollids", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowCompareExpr, n_inputcollids), offsetof(PgQuery__RowCompareExpr, inputcollids), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "largs", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowCompareExpr, n_largs), offsetof(PgQuery__RowCompareExpr, largs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rargs", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RowCompareExpr, n_rargs), offsetof(PgQuery__RowCompareExpr, rargs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__row_compare_expr__field_indices_by_name[] = { 4, /* field[4] = inputcollids */ 5, /* field[5] = largs */ 3, /* field[3] = opfamilies */ 2, /* field[2] = opnos */ 6, /* field[6] = rargs */ 1, /* field[1] = rctype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__row_compare_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__row_compare_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RowCompareExpr", "RowCompareExpr", "PgQuery__RowCompareExpr", "pg_query", sizeof(PgQuery__RowCompareExpr), 7, pg_query__row_compare_expr__field_descriptors, pg_query__row_compare_expr__field_indices_by_name, 1, pg_query__row_compare_expr__number_ranges, (ProtobufCMessageInit) pg_query__row_compare_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__coalesce_expr__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoalesceExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coalescetype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoalesceExpr, coalescetype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coalescecollid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoalesceExpr, coalescecollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CoalesceExpr, n_args), offsetof(PgQuery__CoalesceExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoalesceExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__coalesce_expr__field_indices_by_name[] = { 3, /* field[3] = args */ 2, /* field[2] = coalescecollid */ 1, /* field[1] = coalescetype */ 4, /* field[4] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__coalesce_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__coalesce_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CoalesceExpr", "CoalesceExpr", "PgQuery__CoalesceExpr", "pg_query", sizeof(PgQuery__CoalesceExpr), 5, pg_query__coalesce_expr__field_descriptors, pg_query__coalesce_expr__field_indices_by_name, 1, pg_query__coalesce_expr__number_ranges, (ProtobufCMessageInit) pg_query__coalesce_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__min_max_expr__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "minmaxtype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, minmaxtype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "minmaxcollid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, minmaxcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inputcollid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, inputcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "op", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, op), &pg_query__min_max_op__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__MinMaxExpr, n_args), offsetof(PgQuery__MinMaxExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__MinMaxExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__min_max_expr__field_indices_by_name[] = { 5, /* field[5] = args */ 3, /* field[3] = inputcollid */ 6, /* field[6] = location */ 2, /* field[2] = minmaxcollid */ 1, /* field[1] = minmaxtype */ 4, /* field[4] = op */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__min_max_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__min_max_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.MinMaxExpr", "MinMaxExpr", "PgQuery__MinMaxExpr", "pg_query", sizeof(PgQuery__MinMaxExpr), 7, pg_query__min_max_expr__field_descriptors, pg_query__min_max_expr__field_indices_by_name, 1, pg_query__min_max_expr__number_ranges, (ProtobufCMessageInit) pg_query__min_max_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sqlvalue_function__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SQLValueFunction, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "op", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SQLValueFunction, op), &pg_query__sqlvalue_function_op__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SQLValueFunction, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "typmod", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SQLValueFunction, typmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SQLValueFunction, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sqlvalue_function__field_indices_by_name[] = { 4, /* field[4] = location */ 1, /* field[1] = op */ 2, /* field[2] = type */ 3, /* field[3] = typmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__sqlvalue_function__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__sqlvalue_function__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SQLValueFunction", "SQLValueFunction", "PgQuery__SQLValueFunction", "pg_query", sizeof(PgQuery__SQLValueFunction), 5, pg_query__sqlvalue_function__field_descriptors, pg_query__sqlvalue_function__field_indices_by_name, 1, pg_query__sqlvalue_function__number_ranges, (ProtobufCMessageInit) pg_query__sqlvalue_function__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__xml_expr__field_descriptors[10] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "op", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, op), &pg_query__xml_expr_op__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "named_args", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__XmlExpr, n_named_args), offsetof(PgQuery__XmlExpr, named_args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg_names", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__XmlExpr, n_arg_names), offsetof(PgQuery__XmlExpr, arg_names), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__XmlExpr, n_args), offsetof(PgQuery__XmlExpr, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "xmloption", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, xmloption), &pg_query__xml_option_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "typmod", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, typmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__XmlExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__xml_expr__field_indices_by_name[] = { 4, /* field[4] = arg_names */ 5, /* field[5] = args */ 9, /* field[9] = location */ 2, /* field[2] = name */ 3, /* field[3] = named_args */ 1, /* field[1] = op */ 7, /* field[7] = type */ 8, /* field[8] = typmod */ 6, /* field[6] = xmloption */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__xml_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 10 } }; const ProtobufCMessageDescriptor pg_query__xml_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.XmlExpr", "XmlExpr", "PgQuery__XmlExpr", "pg_query", sizeof(PgQuery__XmlExpr), 10, pg_query__xml_expr__field_descriptors, pg_query__xml_expr__field_indices_by_name, 1, pg_query__xml_expr__number_ranges, (ProtobufCMessageInit) pg_query__xml_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__null_test__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__NullTest, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__NullTest, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nulltesttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__NullTest, nulltesttype), &pg_query__null_test_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "argisrow", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__NullTest, argisrow), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__NullTest, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__null_test__field_indices_by_name[] = { 1, /* field[1] = arg */ 3, /* field[3] = argisrow */ 4, /* field[4] = location */ 2, /* field[2] = nulltesttype */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__null_test__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__null_test__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.NullTest", "NullTest", "PgQuery__NullTest", "pg_query", sizeof(PgQuery__NullTest), 5, pg_query__null_test__field_descriptors, pg_query__null_test__field_indices_by_name, 1, pg_query__null_test__number_ranges, (ProtobufCMessageInit) pg_query__null_test__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__boolean_test__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__BooleanTest, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__BooleanTest, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "booltesttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__BooleanTest, booltesttype), &pg_query__bool_test_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__BooleanTest, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__boolean_test__field_indices_by_name[] = { 1, /* field[1] = arg */ 2, /* field[2] = booltesttype */ 3, /* field[3] = location */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__boolean_test__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__boolean_test__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.BooleanTest", "BooleanTest", "PgQuery__BooleanTest", "pg_query", sizeof(PgQuery__BooleanTest), 4, pg_query__boolean_test__field_descriptors, pg_query__boolean_test__field_indices_by_name, 1, pg_query__boolean_test__number_ranges, (ProtobufCMessageInit) pg_query__boolean_test__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__coerce_to_domain__field_descriptors[7] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, resulttype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resulttypmod", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, resulttypmod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resultcollid", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, resultcollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coercionformat", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, coercionformat), &pg_query__coercion_form__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomain, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__coerce_to_domain__field_indices_by_name[] = { 1, /* field[1] = arg */ 5, /* field[5] = coercionformat */ 6, /* field[6] = location */ 4, /* field[4] = resultcollid */ 2, /* field[2] = resulttype */ 3, /* field[3] = resulttypmod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__coerce_to_domain__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__coerce_to_domain__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CoerceToDomain", "CoerceToDomain", "PgQuery__CoerceToDomain", "pg_query", sizeof(PgQuery__CoerceToDomain), 7, pg_query__coerce_to_domain__field_descriptors, pg_query__coerce_to_domain__field_indices_by_name, 1, pg_query__coerce_to_domain__number_ranges, (ProtobufCMessageInit) pg_query__coerce_to_domain__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__coerce_to_domain_value__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomainValue, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_id", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomainValue, type_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_mod", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomainValue, type_mod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomainValue, collation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CoerceToDomainValue, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__coerce_to_domain_value__field_indices_by_name[] = { 3, /* field[3] = collation */ 4, /* field[4] = location */ 1, /* field[1] = type_id */ 2, /* field[2] = type_mod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__coerce_to_domain_value__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__coerce_to_domain_value__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CoerceToDomainValue", "CoerceToDomainValue", "PgQuery__CoerceToDomainValue", "pg_query", sizeof(PgQuery__CoerceToDomainValue), 5, pg_query__coerce_to_domain_value__field_descriptors, pg_query__coerce_to_domain_value__field_indices_by_name, 1, pg_query__coerce_to_domain_value__number_ranges, (ProtobufCMessageInit) pg_query__coerce_to_domain_value__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__set_to_default__field_descriptors[5] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SetToDefault, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_id", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SetToDefault, type_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_mod", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SetToDefault, type_mod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SetToDefault, collation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SetToDefault, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__set_to_default__field_indices_by_name[] = { 3, /* field[3] = collation */ 4, /* field[4] = location */ 1, /* field[1] = type_id */ 2, /* field[2] = type_mod */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__set_to_default__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__set_to_default__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SetToDefault", "SetToDefault", "PgQuery__SetToDefault", "pg_query", sizeof(PgQuery__SetToDefault), 5, pg_query__set_to_default__field_descriptors, pg_query__set_to_default__field_indices_by_name, 1, pg_query__set_to_default__number_ranges, (ProtobufCMessageInit) pg_query__set_to_default__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__current_of_expr__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CurrentOfExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cvarno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CurrentOfExpr, cvarno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cursor_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CurrentOfExpr, cursor_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cursor_param", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CurrentOfExpr, cursor_param), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__current_of_expr__field_indices_by_name[] = { 2, /* field[2] = cursor_name */ 3, /* field[3] = cursor_param */ 1, /* field[1] = cvarno */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__current_of_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__current_of_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CurrentOfExpr", "CurrentOfExpr", "PgQuery__CurrentOfExpr", "pg_query", sizeof(PgQuery__CurrentOfExpr), 4, pg_query__current_of_expr__field_descriptors, pg_query__current_of_expr__field_indices_by_name, 1, pg_query__current_of_expr__number_ranges, (ProtobufCMessageInit) pg_query__current_of_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__next_value_expr__field_descriptors[3] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__NextValueExpr, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "seqid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NextValueExpr, seqid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_id", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__NextValueExpr, type_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__next_value_expr__field_indices_by_name[] = { 1, /* field[1] = seqid */ 2, /* field[2] = type_id */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__next_value_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__next_value_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.NextValueExpr", "NextValueExpr", "PgQuery__NextValueExpr", "pg_query", sizeof(PgQuery__NextValueExpr), 3, pg_query__next_value_expr__field_descriptors, pg_query__next_value_expr__field_indices_by_name, 1, pg_query__next_value_expr__number_ranges, (ProtobufCMessageInit) pg_query__next_value_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__inference_elem__field_descriptors[4] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InferenceElem, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InferenceElem, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "infercollid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__InferenceElem, infercollid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inferopclass", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__InferenceElem, inferopclass), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__inference_elem__field_indices_by_name[] = { 1, /* field[1] = expr */ 2, /* field[2] = infercollid */ 3, /* field[3] = inferopclass */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__inference_elem__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__inference_elem__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.InferenceElem", "InferenceElem", "PgQuery__InferenceElem", "pg_query", sizeof(PgQuery__InferenceElem), 4, pg_query__inference_elem__field_descriptors, pg_query__inference_elem__field_indices_by_name, 1, pg_query__inference_elem__number_ranges, (ProtobufCMessageInit) pg_query__inference_elem__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__target_entry__field_descriptors[8] = { { "xpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, xpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resno", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, resno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resname", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, resname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ressortgroupref", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, ressortgroupref), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resorigtbl", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, resorigtbl), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resorigcol", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, resorigcol), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "resjunk", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TargetEntry, resjunk), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__target_entry__field_indices_by_name[] = { 1, /* field[1] = expr */ 7, /* field[7] = resjunk */ 3, /* field[3] = resname */ 2, /* field[2] = resno */ 6, /* field[6] = resorigcol */ 5, /* field[5] = resorigtbl */ 4, /* field[4] = ressortgroupref */ 0, /* field[0] = xpr */ }; static const ProtobufCIntRange pg_query__target_entry__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__target_entry__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TargetEntry", "TargetEntry", "PgQuery__TargetEntry", "pg_query", sizeof(PgQuery__TargetEntry), 8, pg_query__target_entry__field_descriptors, pg_query__target_entry__field_indices_by_name, 1, pg_query__target_entry__number_ranges, (ProtobufCMessageInit) pg_query__target_entry__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_tbl_ref__field_descriptors[1] = { { "rtindex", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblRef, rtindex), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_tbl_ref__field_indices_by_name[] = { 0, /* field[0] = rtindex */ }; static const ProtobufCIntRange pg_query__range_tbl_ref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__range_tbl_ref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTblRef", "RangeTblRef", "PgQuery__RangeTblRef", "pg_query", sizeof(PgQuery__RangeTblRef), 1, pg_query__range_tbl_ref__field_descriptors, pg_query__range_tbl_ref__field_indices_by_name, 1, pg_query__range_tbl_ref__number_ranges, (ProtobufCMessageInit) pg_query__range_tbl_ref__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__join_expr__field_descriptors[8] = { { "jointype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__JoinExpr, jointype), &pg_query__join_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_natural", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__JoinExpr, is_natural), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "larg", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JoinExpr, larg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rarg", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JoinExpr, rarg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "using_clause", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__JoinExpr, n_using_clause), offsetof(PgQuery__JoinExpr, using_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "quals", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JoinExpr, quals), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alias", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__JoinExpr, alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rtindex", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__JoinExpr, rtindex), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__join_expr__field_indices_by_name[] = { 6, /* field[6] = alias */ 1, /* field[1] = is_natural */ 0, /* field[0] = jointype */ 2, /* field[2] = larg */ 5, /* field[5] = quals */ 3, /* field[3] = rarg */ 7, /* field[7] = rtindex */ 4, /* field[4] = using_clause */ }; static const ProtobufCIntRange pg_query__join_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__join_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.JoinExpr", "JoinExpr", "PgQuery__JoinExpr", "pg_query", sizeof(PgQuery__JoinExpr), 8, pg_query__join_expr__field_descriptors, pg_query__join_expr__field_indices_by_name, 1, pg_query__join_expr__number_ranges, (ProtobufCMessageInit) pg_query__join_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__from_expr__field_descriptors[2] = { { "fromlist", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__FromExpr, n_fromlist), offsetof(PgQuery__FromExpr, fromlist), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "quals", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FromExpr, quals), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__from_expr__field_indices_by_name[] = { 0, /* field[0] = fromlist */ 1, /* field[1] = quals */ }; static const ProtobufCIntRange pg_query__from_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__from_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FromExpr", "FromExpr", "PgQuery__FromExpr", "pg_query", sizeof(PgQuery__FromExpr), 2, pg_query__from_expr__field_descriptors, pg_query__from_expr__field_indices_by_name, 1, pg_query__from_expr__number_ranges, (ProtobufCMessageInit) pg_query__from_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__on_conflict_expr__field_descriptors[8] = { { "action", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictExpr, action), &pg_query__on_conflict_action__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arbiter_elems", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__OnConflictExpr, n_arbiter_elems), offsetof(PgQuery__OnConflictExpr, arbiter_elems), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arbiter_where", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictExpr, arbiter_where), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraint", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictExpr, constraint), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict_set", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__OnConflictExpr, n_on_conflict_set), offsetof(PgQuery__OnConflictExpr, on_conflict_set), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict_where", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictExpr, on_conflict_where), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "excl_rel_index", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictExpr, excl_rel_index), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "excl_rel_tlist", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__OnConflictExpr, n_excl_rel_tlist), offsetof(PgQuery__OnConflictExpr, excl_rel_tlist), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__on_conflict_expr__field_indices_by_name[] = { 0, /* field[0] = action */ 1, /* field[1] = arbiter_elems */ 2, /* field[2] = arbiter_where */ 3, /* field[3] = constraint */ 6, /* field[6] = excl_rel_index */ 7, /* field[7] = excl_rel_tlist */ 4, /* field[4] = on_conflict_set */ 5, /* field[5] = on_conflict_where */ }; static const ProtobufCIntRange pg_query__on_conflict_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__on_conflict_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.OnConflictExpr", "OnConflictExpr", "PgQuery__OnConflictExpr", "pg_query", sizeof(PgQuery__OnConflictExpr), 8, pg_query__on_conflict_expr__field_descriptors, pg_query__on_conflict_expr__field_indices_by_name, 1, pg_query__on_conflict_expr__number_ranges, (ProtobufCMessageInit) pg_query__on_conflict_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__into_clause__field_descriptors[8] = { { "rel", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__IntoClause, rel), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "col_names", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IntoClause, n_col_names), offsetof(PgQuery__IntoClause, col_names), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "access_method", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__IntoClause, access_method), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IntoClause, n_options), offsetof(PgQuery__IntoClause, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_commit", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__IntoClause, on_commit), &pg_query__on_commit_action__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_space_name", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__IntoClause, table_space_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "view_query", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__IntoClause, view_query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "skip_data", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IntoClause, skip_data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__into_clause__field_indices_by_name[] = { 2, /* field[2] = access_method */ 1, /* field[1] = col_names */ 4, /* field[4] = on_commit */ 3, /* field[3] = options */ 0, /* field[0] = rel */ 7, /* field[7] = skip_data */ 5, /* field[5] = table_space_name */ 6, /* field[6] = view_query */ }; static const ProtobufCIntRange pg_query__into_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__into_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.IntoClause", "IntoClause", "PgQuery__IntoClause", "pg_query", sizeof(PgQuery__IntoClause), 8, pg_query__into_clause__field_descriptors, pg_query__into_clause__field_indices_by_name, 1, pg_query__into_clause__number_ranges, (ProtobufCMessageInit) pg_query__into_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__raw_stmt__field_descriptors[3] = { { "stmt", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RawStmt, stmt), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stmt_location", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RawStmt, stmt_location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stmt_len", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RawStmt, stmt_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__raw_stmt__field_indices_by_name[] = { 0, /* field[0] = stmt */ 2, /* field[2] = stmt_len */ 1, /* field[1] = stmt_location */ }; static const ProtobufCIntRange pg_query__raw_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__raw_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RawStmt", "RawStmt", "PgQuery__RawStmt", "pg_query", sizeof(PgQuery__RawStmt), 3, pg_query__raw_stmt__field_descriptors, pg_query__raw_stmt__field_indices_by_name, 1, pg_query__raw_stmt__number_ranges, (ProtobufCMessageInit) pg_query__raw_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__query__field_descriptors[36] = { { "command_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__Query, command_type), &pg_query__cmd_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query_source", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__Query, query_source), &pg_query__query_source__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "can_set_tag", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, can_set_tag), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "utility_stmt", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Query, utility_stmt), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "result_relation", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Query, result_relation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_aggs", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, has_aggs), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_window_funcs", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, has_window_funcs), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_target_srfs", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, has_target_srfs), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_sub_links", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, has_sub_links), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_distinct_on", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, has_distinct_on), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_recursive", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, has_recursive), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_modifying_cte", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, has_modifying_cte), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_for_update", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, has_for_update), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_row_security", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Query, has_row_security), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cte_list", 15, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_cte_list), offsetof(PgQuery__Query, cte_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rtable", 16, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_rtable), offsetof(PgQuery__Query, rtable), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "jointree", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Query, jointree), &pg_query__from_expr__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_list", 18, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_target_list), offsetof(PgQuery__Query, target_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "override", 19, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__Query, override), &pg_query__overriding_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict", 20, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Query, on_conflict), &pg_query__on_conflict_expr__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "returning_list", 21, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_returning_list), offsetof(PgQuery__Query, returning_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "group_clause", 22, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_group_clause), offsetof(PgQuery__Query, group_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grouping_sets", 23, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_grouping_sets), offsetof(PgQuery__Query, grouping_sets), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "having_qual", 24, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Query, having_qual), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_clause", 25, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_window_clause), offsetof(PgQuery__Query, window_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "distinct_clause", 26, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_distinct_clause), offsetof(PgQuery__Query, distinct_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sort_clause", 27, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_sort_clause), offsetof(PgQuery__Query, sort_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "limit_offset", 28, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Query, limit_offset), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "limit_count", 29, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Query, limit_count), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "limit_option", 30, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__Query, limit_option), &pg_query__limit_option__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row_marks", 31, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_row_marks), offsetof(PgQuery__Query, row_marks), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "set_operations", 32, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Query, set_operations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraint_deps", 33, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_constraint_deps), offsetof(PgQuery__Query, constraint_deps), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_check_options", 34, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Query, n_with_check_options), offsetof(PgQuery__Query, with_check_options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stmt_location", 35, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Query, stmt_location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stmt_len", 36, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Query, stmt_len), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__query__field_indices_by_name[] = { 2, /* field[2] = can_set_tag */ 0, /* field[0] = command_type */ 32, /* field[32] = constraint_deps */ 14, /* field[14] = cte_list */ 25, /* field[25] = distinct_clause */ 21, /* field[21] = group_clause */ 22, /* field[22] = grouping_sets */ 5, /* field[5] = has_aggs */ 9, /* field[9] = has_distinct_on */ 12, /* field[12] = has_for_update */ 11, /* field[11] = has_modifying_cte */ 10, /* field[10] = has_recursive */ 13, /* field[13] = has_row_security */ 8, /* field[8] = has_sub_links */ 7, /* field[7] = has_target_srfs */ 6, /* field[6] = has_window_funcs */ 23, /* field[23] = having_qual */ 16, /* field[16] = jointree */ 28, /* field[28] = limit_count */ 27, /* field[27] = limit_offset */ 29, /* field[29] = limit_option */ 19, /* field[19] = on_conflict */ 18, /* field[18] = override */ 1, /* field[1] = query_source */ 4, /* field[4] = result_relation */ 20, /* field[20] = returning_list */ 30, /* field[30] = row_marks */ 15, /* field[15] = rtable */ 31, /* field[31] = set_operations */ 26, /* field[26] = sort_clause */ 35, /* field[35] = stmt_len */ 34, /* field[34] = stmt_location */ 17, /* field[17] = target_list */ 3, /* field[3] = utility_stmt */ 24, /* field[24] = window_clause */ 33, /* field[33] = with_check_options */ }; static const ProtobufCIntRange pg_query__query__number_ranges[1 + 1] = { { 1, 0 }, { 0, 36 } }; const ProtobufCMessageDescriptor pg_query__query__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Query", "Query", "PgQuery__Query", "pg_query", sizeof(PgQuery__Query), 36, pg_query__query__field_descriptors, pg_query__query__field_indices_by_name, 1, pg_query__query__number_ranges, (ProtobufCMessageInit) pg_query__query__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__insert_stmt__field_descriptors[7] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InsertStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cols", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__InsertStmt, n_cols), offsetof(PgQuery__InsertStmt, cols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "select_stmt", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InsertStmt, select_stmt), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "on_conflict_clause", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InsertStmt, on_conflict_clause), &pg_query__on_conflict_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "returning_list", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__InsertStmt, n_returning_list), offsetof(PgQuery__InsertStmt, returning_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_clause", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InsertStmt, with_clause), &pg_query__with_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "override", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__InsertStmt, override), &pg_query__overriding_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__insert_stmt__field_indices_by_name[] = { 1, /* field[1] = cols */ 3, /* field[3] = on_conflict_clause */ 6, /* field[6] = override */ 0, /* field[0] = relation */ 4, /* field[4] = returning_list */ 2, /* field[2] = select_stmt */ 5, /* field[5] = with_clause */ }; static const ProtobufCIntRange pg_query__insert_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__insert_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.InsertStmt", "InsertStmt", "PgQuery__InsertStmt", "pg_query", sizeof(PgQuery__InsertStmt), 7, pg_query__insert_stmt__field_descriptors, pg_query__insert_stmt__field_indices_by_name, 1, pg_query__insert_stmt__number_ranges, (ProtobufCMessageInit) pg_query__insert_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__delete_stmt__field_descriptors[5] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DeleteStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "using_clause", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DeleteStmt, n_using_clause), offsetof(PgQuery__DeleteStmt, using_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DeleteStmt, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "returning_list", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DeleteStmt, n_returning_list), offsetof(PgQuery__DeleteStmt, returning_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_clause", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DeleteStmt, with_clause), &pg_query__with_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__delete_stmt__field_indices_by_name[] = { 0, /* field[0] = relation */ 3, /* field[3] = returning_list */ 1, /* field[1] = using_clause */ 2, /* field[2] = where_clause */ 4, /* field[4] = with_clause */ }; static const ProtobufCIntRange pg_query__delete_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__delete_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DeleteStmt", "DeleteStmt", "PgQuery__DeleteStmt", "pg_query", sizeof(PgQuery__DeleteStmt), 5, pg_query__delete_stmt__field_descriptors, pg_query__delete_stmt__field_indices_by_name, 1, pg_query__delete_stmt__number_ranges, (ProtobufCMessageInit) pg_query__delete_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__update_stmt__field_descriptors[6] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__UpdateStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_list", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__UpdateStmt, n_target_list), offsetof(PgQuery__UpdateStmt, target_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__UpdateStmt, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "from_clause", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__UpdateStmt, n_from_clause), offsetof(PgQuery__UpdateStmt, from_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "returning_list", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__UpdateStmt, n_returning_list), offsetof(PgQuery__UpdateStmt, returning_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_clause", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__UpdateStmt, with_clause), &pg_query__with_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__update_stmt__field_indices_by_name[] = { 3, /* field[3] = from_clause */ 0, /* field[0] = relation */ 4, /* field[4] = returning_list */ 1, /* field[1] = target_list */ 2, /* field[2] = where_clause */ 5, /* field[5] = with_clause */ }; static const ProtobufCIntRange pg_query__update_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__update_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.UpdateStmt", "UpdateStmt", "PgQuery__UpdateStmt", "pg_query", sizeof(PgQuery__UpdateStmt), 6, pg_query__update_stmt__field_descriptors, pg_query__update_stmt__field_indices_by_name, 1, pg_query__update_stmt__number_ranges, (ProtobufCMessageInit) pg_query__update_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__select_stmt__field_descriptors[19] = { { "distinct_clause", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SelectStmt, n_distinct_clause), offsetof(PgQuery__SelectStmt, distinct_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "into_clause", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, into_clause), &pg_query__into_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_list", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SelectStmt, n_target_list), offsetof(PgQuery__SelectStmt, target_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "from_clause", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SelectStmt, n_from_clause), offsetof(PgQuery__SelectStmt, from_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "group_clause", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SelectStmt, n_group_clause), offsetof(PgQuery__SelectStmt, group_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "having_clause", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, having_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "window_clause", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SelectStmt, n_window_clause), offsetof(PgQuery__SelectStmt, window_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "values_lists", 9, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SelectStmt, n_values_lists), offsetof(PgQuery__SelectStmt, values_lists), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sort_clause", 10, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SelectStmt, n_sort_clause), offsetof(PgQuery__SelectStmt, sort_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "limit_offset", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, limit_offset), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "limit_count", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, limit_count), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "limit_option", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, limit_option), &pg_query__limit_option__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "locking_clause", 14, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SelectStmt, n_locking_clause), offsetof(PgQuery__SelectStmt, locking_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_clause", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, with_clause), &pg_query__with_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "op", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, op), &pg_query__set_operation__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "all", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, all), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "larg", 18, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, larg), &pg_query__select_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rarg", 19, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SelectStmt, rarg), &pg_query__select_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__select_stmt__field_indices_by_name[] = { 16, /* field[16] = all */ 0, /* field[0] = distinct_clause */ 3, /* field[3] = from_clause */ 5, /* field[5] = group_clause */ 6, /* field[6] = having_clause */ 1, /* field[1] = into_clause */ 17, /* field[17] = larg */ 11, /* field[11] = limit_count */ 10, /* field[10] = limit_offset */ 12, /* field[12] = limit_option */ 13, /* field[13] = locking_clause */ 15, /* field[15] = op */ 18, /* field[18] = rarg */ 9, /* field[9] = sort_clause */ 2, /* field[2] = target_list */ 8, /* field[8] = values_lists */ 4, /* field[4] = where_clause */ 7, /* field[7] = window_clause */ 14, /* field[14] = with_clause */ }; static const ProtobufCIntRange pg_query__select_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 19 } }; const ProtobufCMessageDescriptor pg_query__select_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SelectStmt", "SelectStmt", "PgQuery__SelectStmt", "pg_query", sizeof(PgQuery__SelectStmt), 19, pg_query__select_stmt__field_descriptors, pg_query__select_stmt__field_indices_by_name, 1, pg_query__select_stmt__number_ranges, (ProtobufCMessageInit) pg_query__select_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_table_stmt__field_descriptors[4] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cmds", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTableStmt, n_cmds), offsetof(PgQuery__AlterTableStmt, cmds), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relkind", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableStmt, relkind), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_table_stmt__field_indices_by_name[] = { 1, /* field[1] = cmds */ 3, /* field[3] = missing_ok */ 0, /* field[0] = relation */ 2, /* field[2] = relkind */ }; static const ProtobufCIntRange pg_query__alter_table_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__alter_table_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTableStmt", "AlterTableStmt", "PgQuery__AlterTableStmt", "pg_query", sizeof(PgQuery__AlterTableStmt), 4, pg_query__alter_table_stmt__field_descriptors, pg_query__alter_table_stmt__field_indices_by_name, 1, pg_query__alter_table_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_table_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_table_cmd__field_descriptors[7] = { { "subtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableCmd, subtype), &pg_query__alter_table_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableCmd, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "num", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableCmd, num), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "newowner", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableCmd, newowner), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "def", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableCmd, def), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableCmd, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableCmd, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_table_cmd__field_indices_by_name[] = { 5, /* field[5] = behavior */ 4, /* field[4] = def */ 6, /* field[6] = missing_ok */ 1, /* field[1] = name */ 3, /* field[3] = newowner */ 2, /* field[2] = num */ 0, /* field[0] = subtype */ }; static const ProtobufCIntRange pg_query__alter_table_cmd__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__alter_table_cmd__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTableCmd", "AlterTableCmd", "PgQuery__AlterTableCmd", "pg_query", sizeof(PgQuery__AlterTableCmd), 7, pg_query__alter_table_cmd__field_descriptors, pg_query__alter_table_cmd__field_indices_by_name, 1, pg_query__alter_table_cmd__number_ranges, (ProtobufCMessageInit) pg_query__alter_table_cmd__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_domain_stmt__field_descriptors[6] = { { "subtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDomainStmt, subtype), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterDomainStmt, n_type_name), offsetof(PgQuery__AlterDomainStmt, type_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDomainStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "def", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDomainStmt, def), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDomainStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDomainStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_domain_stmt__field_indices_by_name[] = { 4, /* field[4] = behavior */ 3, /* field[3] = def */ 5, /* field[5] = missing_ok */ 2, /* field[2] = name */ 0, /* field[0] = subtype */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__alter_domain_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__alter_domain_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterDomainStmt", "AlterDomainStmt", "PgQuery__AlterDomainStmt", "pg_query", sizeof(PgQuery__AlterDomainStmt), 6, pg_query__alter_domain_stmt__field_descriptors, pg_query__alter_domain_stmt__field_indices_by_name, 1, pg_query__alter_domain_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_domain_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__set_operation_stmt__field_descriptors[8] = { { "op", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SetOperationStmt, op), &pg_query__set_operation__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "all", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SetOperationStmt, all), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "larg", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SetOperationStmt, larg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rarg", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SetOperationStmt, rarg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "col_types", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SetOperationStmt, n_col_types), offsetof(PgQuery__SetOperationStmt, col_types), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "col_typmods", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SetOperationStmt, n_col_typmods), offsetof(PgQuery__SetOperationStmt, col_typmods), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "col_collations", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SetOperationStmt, n_col_collations), offsetof(PgQuery__SetOperationStmt, col_collations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "group_clauses", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SetOperationStmt, n_group_clauses), offsetof(PgQuery__SetOperationStmt, group_clauses), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__set_operation_stmt__field_indices_by_name[] = { 1, /* field[1] = all */ 6, /* field[6] = col_collations */ 4, /* field[4] = col_types */ 5, /* field[5] = col_typmods */ 7, /* field[7] = group_clauses */ 2, /* field[2] = larg */ 0, /* field[0] = op */ 3, /* field[3] = rarg */ }; static const ProtobufCIntRange pg_query__set_operation_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__set_operation_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SetOperationStmt", "SetOperationStmt", "PgQuery__SetOperationStmt", "pg_query", sizeof(PgQuery__SetOperationStmt), 8, pg_query__set_operation_stmt__field_descriptors, pg_query__set_operation_stmt__field_indices_by_name, 1, pg_query__set_operation_stmt__number_ranges, (ProtobufCMessageInit) pg_query__set_operation_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__grant_stmt__field_descriptors[8] = { { "is_grant", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__GrantStmt, is_grant), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "targtype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__GrantStmt, targtype), &pg_query__grant_target_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "objtype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__GrantStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "objects", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GrantStmt, n_objects), offsetof(PgQuery__GrantStmt, objects), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "privileges", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GrantStmt, n_privileges), offsetof(PgQuery__GrantStmt, privileges), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grantees", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GrantStmt, n_grantees), offsetof(PgQuery__GrantStmt, grantees), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grant_option", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__GrantStmt, grant_option), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__GrantStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__grant_stmt__field_indices_by_name[] = { 7, /* field[7] = behavior */ 6, /* field[6] = grant_option */ 5, /* field[5] = grantees */ 0, /* field[0] = is_grant */ 3, /* field[3] = objects */ 2, /* field[2] = objtype */ 4, /* field[4] = privileges */ 1, /* field[1] = targtype */ }; static const ProtobufCIntRange pg_query__grant_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__grant_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.GrantStmt", "GrantStmt", "PgQuery__GrantStmt", "pg_query", sizeof(PgQuery__GrantStmt), 8, pg_query__grant_stmt__field_descriptors, pg_query__grant_stmt__field_indices_by_name, 1, pg_query__grant_stmt__number_ranges, (ProtobufCMessageInit) pg_query__grant_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__grant_role_stmt__field_descriptors[6] = { { "granted_roles", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GrantRoleStmt, n_granted_roles), offsetof(PgQuery__GrantRoleStmt, granted_roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grantee_roles", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GrantRoleStmt, n_grantee_roles), offsetof(PgQuery__GrantRoleStmt, grantee_roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_grant", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__GrantRoleStmt, is_grant), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "admin_opt", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__GrantRoleStmt, admin_opt), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "grantor", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__GrantRoleStmt, grantor), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__GrantRoleStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__grant_role_stmt__field_indices_by_name[] = { 3, /* field[3] = admin_opt */ 5, /* field[5] = behavior */ 0, /* field[0] = granted_roles */ 1, /* field[1] = grantee_roles */ 4, /* field[4] = grantor */ 2, /* field[2] = is_grant */ }; static const ProtobufCIntRange pg_query__grant_role_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__grant_role_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.GrantRoleStmt", "GrantRoleStmt", "PgQuery__GrantRoleStmt", "pg_query", sizeof(PgQuery__GrantRoleStmt), 6, pg_query__grant_role_stmt__field_descriptors, pg_query__grant_role_stmt__field_indices_by_name, 1, pg_query__grant_role_stmt__number_ranges, (ProtobufCMessageInit) pg_query__grant_role_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_default_privileges_stmt__field_descriptors[2] = { { "options", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterDefaultPrivilegesStmt, n_options), offsetof(PgQuery__AlterDefaultPrivilegesStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "action", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDefaultPrivilegesStmt, action), &pg_query__grant_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_default_privileges_stmt__field_indices_by_name[] = { 1, /* field[1] = action */ 0, /* field[0] = options */ }; static const ProtobufCIntRange pg_query__alter_default_privileges_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_default_privileges_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterDefaultPrivilegesStmt", "AlterDefaultPrivilegesStmt", "PgQuery__AlterDefaultPrivilegesStmt", "pg_query", sizeof(PgQuery__AlterDefaultPrivilegesStmt), 2, pg_query__alter_default_privileges_stmt__field_descriptors, pg_query__alter_default_privileges_stmt__field_indices_by_name, 1, pg_query__alter_default_privileges_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_default_privileges_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__close_portal_stmt__field_descriptors[1] = { { "portalname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ClosePortalStmt, portalname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__close_portal_stmt__field_indices_by_name[] = { 0, /* field[0] = portalname */ }; static const ProtobufCIntRange pg_query__close_portal_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__close_portal_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ClosePortalStmt", "ClosePortalStmt", "PgQuery__ClosePortalStmt", "pg_query", sizeof(PgQuery__ClosePortalStmt), 1, pg_query__close_portal_stmt__field_descriptors, pg_query__close_portal_stmt__field_indices_by_name, 1, pg_query__close_portal_stmt__number_ranges, (ProtobufCMessageInit) pg_query__close_portal_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__cluster_stmt__field_descriptors[3] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ClusterStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "indexname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ClusterStmt, indexname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ClusterStmt, options), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__cluster_stmt__field_indices_by_name[] = { 1, /* field[1] = indexname */ 2, /* field[2] = options */ 0, /* field[0] = relation */ }; static const ProtobufCIntRange pg_query__cluster_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__cluster_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ClusterStmt", "ClusterStmt", "PgQuery__ClusterStmt", "pg_query", sizeof(PgQuery__ClusterStmt), 3, pg_query__cluster_stmt__field_descriptors, pg_query__cluster_stmt__field_indices_by_name, 1, pg_query__cluster_stmt__number_ranges, (ProtobufCMessageInit) pg_query__cluster_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__copy_stmt__field_descriptors[8] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "attlist", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CopyStmt, n_attlist), offsetof(PgQuery__CopyStmt, attlist), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_from", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, is_from), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_program", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, is_program), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "filename", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, filename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CopyStmt, n_options), offsetof(PgQuery__CopyStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CopyStmt, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__copy_stmt__field_indices_by_name[] = { 2, /* field[2] = attlist */ 5, /* field[5] = filename */ 3, /* field[3] = is_from */ 4, /* field[4] = is_program */ 6, /* field[6] = options */ 1, /* field[1] = query */ 0, /* field[0] = relation */ 7, /* field[7] = where_clause */ }; static const ProtobufCIntRange pg_query__copy_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__copy_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CopyStmt", "CopyStmt", "PgQuery__CopyStmt", "pg_query", sizeof(PgQuery__CopyStmt), 8, pg_query__copy_stmt__field_descriptors, pg_query__copy_stmt__field_indices_by_name, 1, pg_query__copy_stmt__number_ranges, (ProtobufCMessageInit) pg_query__copy_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_stmt__field_descriptors[12] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_elts", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStmt, n_table_elts), offsetof(PgQuery__CreateStmt, table_elts), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inh_relations", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStmt, n_inh_relations), offsetof(PgQuery__CreateStmt, inh_relations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partbound", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, partbound), &pg_query__partition_bound_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partspec", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, partspec), &pg_query__partition_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "of_typename", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, of_typename), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraints", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStmt, n_constraints), offsetof(PgQuery__CreateStmt, constraints), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStmt, n_options), offsetof(PgQuery__CreateStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "oncommit", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, oncommit), &pg_query__on_commit_action__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tablespacename", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "access_method", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, access_method), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_stmt__field_indices_by_name[] = { 10, /* field[10] = access_method */ 6, /* field[6] = constraints */ 11, /* field[11] = if_not_exists */ 2, /* field[2] = inh_relations */ 5, /* field[5] = of_typename */ 8, /* field[8] = oncommit */ 7, /* field[7] = options */ 3, /* field[3] = partbound */ 4, /* field[4] = partspec */ 0, /* field[0] = relation */ 1, /* field[1] = table_elts */ 9, /* field[9] = tablespacename */ }; static const ProtobufCIntRange pg_query__create_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 12 } }; const ProtobufCMessageDescriptor pg_query__create_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateStmt", "CreateStmt", "PgQuery__CreateStmt", "pg_query", sizeof(PgQuery__CreateStmt), 12, pg_query__create_stmt__field_descriptors, pg_query__create_stmt__field_indices_by_name, 1, pg_query__create_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__define_stmt__field_descriptors[7] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DefineStmt, kind), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "oldstyle", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DefineStmt, oldstyle), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "defnames", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DefineStmt, n_defnames), offsetof(PgQuery__DefineStmt, defnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DefineStmt, n_args), offsetof(PgQuery__DefineStmt, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "definition", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DefineStmt, n_definition), offsetof(PgQuery__DefineStmt, definition), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DefineStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replace", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DefineStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__define_stmt__field_indices_by_name[] = { 3, /* field[3] = args */ 4, /* field[4] = definition */ 2, /* field[2] = defnames */ 5, /* field[5] = if_not_exists */ 0, /* field[0] = kind */ 1, /* field[1] = oldstyle */ 6, /* field[6] = replace */ }; static const ProtobufCIntRange pg_query__define_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__define_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DefineStmt", "DefineStmt", "PgQuery__DefineStmt", "pg_query", sizeof(PgQuery__DefineStmt), 7, pg_query__define_stmt__field_descriptors, pg_query__define_stmt__field_indices_by_name, 1, pg_query__define_stmt__number_ranges, (ProtobufCMessageInit) pg_query__define_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__drop_stmt__field_descriptors[5] = { { "objects", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DropStmt, n_objects), offsetof(PgQuery__DropStmt, objects), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "remove_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DropStmt, remove_type), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DropStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "concurrent", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropStmt, concurrent), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_stmt__field_indices_by_name[] = { 2, /* field[2] = behavior */ 4, /* field[4] = concurrent */ 3, /* field[3] = missing_ok */ 0, /* field[0] = objects */ 1, /* field[1] = remove_type */ }; static const ProtobufCIntRange pg_query__drop_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__drop_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropStmt", "DropStmt", "PgQuery__DropStmt", "pg_query", sizeof(PgQuery__DropStmt), 5, pg_query__drop_stmt__field_descriptors, pg_query__drop_stmt__field_indices_by_name, 1, pg_query__drop_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__truncate_stmt__field_descriptors[3] = { { "relations", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TruncateStmt, n_relations), offsetof(PgQuery__TruncateStmt, relations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "restart_seqs", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TruncateStmt, restart_seqs), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__TruncateStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__truncate_stmt__field_indices_by_name[] = { 2, /* field[2] = behavior */ 0, /* field[0] = relations */ 1, /* field[1] = restart_seqs */ }; static const ProtobufCIntRange pg_query__truncate_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__truncate_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TruncateStmt", "TruncateStmt", "PgQuery__TruncateStmt", "pg_query", sizeof(PgQuery__TruncateStmt), 3, pg_query__truncate_stmt__field_descriptors, pg_query__truncate_stmt__field_indices_by_name, 1, pg_query__truncate_stmt__number_ranges, (ProtobufCMessageInit) pg_query__truncate_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__comment_stmt__field_descriptors[3] = { { "objtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CommentStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CommentStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "comment", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CommentStmt, comment), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__comment_stmt__field_indices_by_name[] = { 2, /* field[2] = comment */ 1, /* field[1] = object */ 0, /* field[0] = objtype */ }; static const ProtobufCIntRange pg_query__comment_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__comment_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CommentStmt", "CommentStmt", "PgQuery__CommentStmt", "pg_query", sizeof(PgQuery__CommentStmt), 3, pg_query__comment_stmt__field_descriptors, pg_query__comment_stmt__field_indices_by_name, 1, pg_query__comment_stmt__number_ranges, (ProtobufCMessageInit) pg_query__comment_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__fetch_stmt__field_descriptors[4] = { { "direction", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__FetchStmt, direction), &pg_query__fetch_direction__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "how_many", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT64, 0, /* quantifier_offset */ offsetof(PgQuery__FetchStmt, how_many), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "portalname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__FetchStmt, portalname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ismove", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__FetchStmt, ismove), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__fetch_stmt__field_indices_by_name[] = { 0, /* field[0] = direction */ 1, /* field[1] = how_many */ 3, /* field[3] = ismove */ 2, /* field[2] = portalname */ }; static const ProtobufCIntRange pg_query__fetch_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__fetch_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FetchStmt", "FetchStmt", "PgQuery__FetchStmt", "pg_query", sizeof(PgQuery__FetchStmt), 4, pg_query__fetch_stmt__field_descriptors, pg_query__fetch_stmt__field_indices_by_name, 1, pg_query__fetch_stmt__number_ranges, (ProtobufCMessageInit) pg_query__fetch_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__index_stmt__field_descriptors[23] = { { "idxname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, idxname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "access_method", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, access_method), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_space", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, table_space), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "index_params", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IndexStmt, n_index_params), offsetof(PgQuery__IndexStmt, index_params), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "index_including_params", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IndexStmt, n_index_including_params), offsetof(PgQuery__IndexStmt, index_including_params), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IndexStmt, n_options), offsetof(PgQuery__IndexStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "exclude_op_names", 9, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IndexStmt, n_exclude_op_names), offsetof(PgQuery__IndexStmt, exclude_op_names), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "idxcomment", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, idxcomment), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "index_oid", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, index_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "old_node", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, old_node), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "old_create_subid", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, old_create_subid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "old_first_relfilenode_subid", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, old_first_relfilenode_subid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "unique", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, unique), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "primary", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, primary), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "isconstraint", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, isconstraint), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "deferrable", 18, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, deferrable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "initdeferred", 19, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, initdeferred), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "transformed", 20, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, transformed), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "concurrent", 21, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, concurrent), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 22, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reset_default_tblspc", 23, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__IndexStmt, reset_default_tblspc), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__index_stmt__field_indices_by_name[] = { 2, /* field[2] = access_method */ 20, /* field[20] = concurrent */ 17, /* field[17] = deferrable */ 8, /* field[8] = exclude_op_names */ 9, /* field[9] = idxcomment */ 0, /* field[0] = idxname */ 21, /* field[21] = if_not_exists */ 5, /* field[5] = index_including_params */ 10, /* field[10] = index_oid */ 4, /* field[4] = index_params */ 18, /* field[18] = initdeferred */ 16, /* field[16] = isconstraint */ 12, /* field[12] = old_create_subid */ 13, /* field[13] = old_first_relfilenode_subid */ 11, /* field[11] = old_node */ 6, /* field[6] = options */ 15, /* field[15] = primary */ 1, /* field[1] = relation */ 22, /* field[22] = reset_default_tblspc */ 3, /* field[3] = table_space */ 19, /* field[19] = transformed */ 14, /* field[14] = unique */ 7, /* field[7] = where_clause */ }; static const ProtobufCIntRange pg_query__index_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 23 } }; const ProtobufCMessageDescriptor pg_query__index_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.IndexStmt", "IndexStmt", "PgQuery__IndexStmt", "pg_query", sizeof(PgQuery__IndexStmt), 23, pg_query__index_stmt__field_descriptors, pg_query__index_stmt__field_indices_by_name, 1, pg_query__index_stmt__number_ranges, (ProtobufCMessageInit) pg_query__index_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_function_stmt__field_descriptors[6] = { { "is_procedure", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateFunctionStmt, is_procedure), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replace", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateFunctionStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcname", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateFunctionStmt, n_funcname), offsetof(PgQuery__CreateFunctionStmt, funcname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "parameters", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateFunctionStmt, n_parameters), offsetof(PgQuery__CreateFunctionStmt, parameters), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "return_type", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateFunctionStmt, return_type), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateFunctionStmt, n_options), offsetof(PgQuery__CreateFunctionStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_function_stmt__field_indices_by_name[] = { 2, /* field[2] = funcname */ 0, /* field[0] = is_procedure */ 5, /* field[5] = options */ 3, /* field[3] = parameters */ 1, /* field[1] = replace */ 4, /* field[4] = return_type */ }; static const ProtobufCIntRange pg_query__create_function_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__create_function_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateFunctionStmt", "CreateFunctionStmt", "PgQuery__CreateFunctionStmt", "pg_query", sizeof(PgQuery__CreateFunctionStmt), 6, pg_query__create_function_stmt__field_descriptors, pg_query__create_function_stmt__field_indices_by_name, 1, pg_query__create_function_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_function_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_function_stmt__field_descriptors[3] = { { "objtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterFunctionStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterFunctionStmt, func), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "actions", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterFunctionStmt, n_actions), offsetof(PgQuery__AlterFunctionStmt, actions), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_function_stmt__field_indices_by_name[] = { 2, /* field[2] = actions */ 1, /* field[1] = func */ 0, /* field[0] = objtype */ }; static const ProtobufCIntRange pg_query__alter_function_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_function_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterFunctionStmt", "AlterFunctionStmt", "PgQuery__AlterFunctionStmt", "pg_query", sizeof(PgQuery__AlterFunctionStmt), 3, pg_query__alter_function_stmt__field_descriptors, pg_query__alter_function_stmt__field_indices_by_name, 1, pg_query__alter_function_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_function_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__do_stmt__field_descriptors[1] = { { "args", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DoStmt, n_args), offsetof(PgQuery__DoStmt, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__do_stmt__field_indices_by_name[] = { 0, /* field[0] = args */ }; static const ProtobufCIntRange pg_query__do_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__do_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DoStmt", "DoStmt", "PgQuery__DoStmt", "pg_query", sizeof(PgQuery__DoStmt), 1, pg_query__do_stmt__field_descriptors, pg_query__do_stmt__field_indices_by_name, 1, pg_query__do_stmt__number_ranges, (ProtobufCMessageInit) pg_query__do_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__rename_stmt__field_descriptors[8] = { { "rename_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, rename_type), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, relation_type), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subname", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, subname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "newname", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, newname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RenameStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__rename_stmt__field_indices_by_name[] = { 6, /* field[6] = behavior */ 7, /* field[7] = missing_ok */ 5, /* field[5] = newname */ 3, /* field[3] = object */ 2, /* field[2] = relation */ 1, /* field[1] = relation_type */ 0, /* field[0] = rename_type */ 4, /* field[4] = subname */ }; static const ProtobufCIntRange pg_query__rename_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__rename_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RenameStmt", "RenameStmt", "PgQuery__RenameStmt", "pg_query", sizeof(PgQuery__RenameStmt), 8, pg_query__rename_stmt__field_descriptors, pg_query__rename_stmt__field_indices_by_name, 1, pg_query__rename_stmt__number_ranges, (ProtobufCMessageInit) pg_query__rename_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__rule_stmt__field_descriptors[7] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rulename", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, rulename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "event", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, event), &pg_query__cmd_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "instead", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, instead), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "actions", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RuleStmt, n_actions), offsetof(PgQuery__RuleStmt, actions), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replace", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RuleStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__rule_stmt__field_indices_by_name[] = { 5, /* field[5] = actions */ 3, /* field[3] = event */ 4, /* field[4] = instead */ 0, /* field[0] = relation */ 6, /* field[6] = replace */ 1, /* field[1] = rulename */ 2, /* field[2] = where_clause */ }; static const ProtobufCIntRange pg_query__rule_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__rule_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RuleStmt", "RuleStmt", "PgQuery__RuleStmt", "pg_query", sizeof(PgQuery__RuleStmt), 7, pg_query__rule_stmt__field_descriptors, pg_query__rule_stmt__field_indices_by_name, 1, pg_query__rule_stmt__number_ranges, (ProtobufCMessageInit) pg_query__rule_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__notify_stmt__field_descriptors[2] = { { "conditionname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__NotifyStmt, conditionname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "payload", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__NotifyStmt, payload), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__notify_stmt__field_indices_by_name[] = { 0, /* field[0] = conditionname */ 1, /* field[1] = payload */ }; static const ProtobufCIntRange pg_query__notify_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__notify_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.NotifyStmt", "NotifyStmt", "PgQuery__NotifyStmt", "pg_query", sizeof(PgQuery__NotifyStmt), 2, pg_query__notify_stmt__field_descriptors, pg_query__notify_stmt__field_indices_by_name, 1, pg_query__notify_stmt__number_ranges, (ProtobufCMessageInit) pg_query__notify_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__listen_stmt__field_descriptors[1] = { { "conditionname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ListenStmt, conditionname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__listen_stmt__field_indices_by_name[] = { 0, /* field[0] = conditionname */ }; static const ProtobufCIntRange pg_query__listen_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__listen_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ListenStmt", "ListenStmt", "PgQuery__ListenStmt", "pg_query", sizeof(PgQuery__ListenStmt), 1, pg_query__listen_stmt__field_descriptors, pg_query__listen_stmt__field_indices_by_name, 1, pg_query__listen_stmt__number_ranges, (ProtobufCMessageInit) pg_query__listen_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__unlisten_stmt__field_descriptors[1] = { { "conditionname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__UnlistenStmt, conditionname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__unlisten_stmt__field_indices_by_name[] = { 0, /* field[0] = conditionname */ }; static const ProtobufCIntRange pg_query__unlisten_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__unlisten_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.UnlistenStmt", "UnlistenStmt", "PgQuery__UnlistenStmt", "pg_query", sizeof(PgQuery__UnlistenStmt), 1, pg_query__unlisten_stmt__field_descriptors, pg_query__unlisten_stmt__field_indices_by_name, 1, pg_query__unlisten_stmt__number_ranges, (ProtobufCMessageInit) pg_query__unlisten_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__transaction_stmt__field_descriptors[5] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__TransactionStmt, kind), &pg_query__transaction_stmt_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TransactionStmt, n_options), offsetof(PgQuery__TransactionStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "savepoint_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__TransactionStmt, savepoint_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "gid", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__TransactionStmt, gid), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "chain", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TransactionStmt, chain), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__transaction_stmt__field_indices_by_name[] = { 4, /* field[4] = chain */ 3, /* field[3] = gid */ 0, /* field[0] = kind */ 1, /* field[1] = options */ 2, /* field[2] = savepoint_name */ }; static const ProtobufCIntRange pg_query__transaction_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__transaction_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TransactionStmt", "TransactionStmt", "PgQuery__TransactionStmt", "pg_query", sizeof(PgQuery__TransactionStmt), 5, pg_query__transaction_stmt__field_descriptors, pg_query__transaction_stmt__field_indices_by_name, 1, pg_query__transaction_stmt__number_ranges, (ProtobufCMessageInit) pg_query__transaction_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__view_stmt__field_descriptors[6] = { { "view", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ViewStmt, view), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aliases", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ViewStmt, n_aliases), offsetof(PgQuery__ViewStmt, aliases), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ViewStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replace", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ViewStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ViewStmt, n_options), offsetof(PgQuery__ViewStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_check_option", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ViewStmt, with_check_option), &pg_query__view_check_option__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__view_stmt__field_indices_by_name[] = { 1, /* field[1] = aliases */ 4, /* field[4] = options */ 2, /* field[2] = query */ 3, /* field[3] = replace */ 0, /* field[0] = view */ 5, /* field[5] = with_check_option */ }; static const ProtobufCIntRange pg_query__view_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__view_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ViewStmt", "ViewStmt", "PgQuery__ViewStmt", "pg_query", sizeof(PgQuery__ViewStmt), 6, pg_query__view_stmt__field_descriptors, pg_query__view_stmt__field_indices_by_name, 1, pg_query__view_stmt__number_ranges, (ProtobufCMessageInit) pg_query__view_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__load_stmt__field_descriptors[1] = { { "filename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__LoadStmt, filename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__load_stmt__field_indices_by_name[] = { 0, /* field[0] = filename */ }; static const ProtobufCIntRange pg_query__load_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__load_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.LoadStmt", "LoadStmt", "PgQuery__LoadStmt", "pg_query", sizeof(PgQuery__LoadStmt), 1, pg_query__load_stmt__field_descriptors, pg_query__load_stmt__field_indices_by_name, 1, pg_query__load_stmt__number_ranges, (ProtobufCMessageInit) pg_query__load_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_domain_stmt__field_descriptors[4] = { { "domainname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateDomainStmt, n_domainname), offsetof(PgQuery__CreateDomainStmt, domainname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateDomainStmt, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coll_clause", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateDomainStmt, coll_clause), &pg_query__collate_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraints", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateDomainStmt, n_constraints), offsetof(PgQuery__CreateDomainStmt, constraints), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_domain_stmt__field_indices_by_name[] = { 2, /* field[2] = coll_clause */ 3, /* field[3] = constraints */ 0, /* field[0] = domainname */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__create_domain_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_domain_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateDomainStmt", "CreateDomainStmt", "PgQuery__CreateDomainStmt", "pg_query", sizeof(PgQuery__CreateDomainStmt), 4, pg_query__create_domain_stmt__field_descriptors, pg_query__create_domain_stmt__field_indices_by_name, 1, pg_query__create_domain_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_domain_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__createdb_stmt__field_descriptors[2] = { { "dbname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreatedbStmt, dbname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatedbStmt, n_options), offsetof(PgQuery__CreatedbStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__createdb_stmt__field_indices_by_name[] = { 0, /* field[0] = dbname */ 1, /* field[1] = options */ }; static const ProtobufCIntRange pg_query__createdb_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__createdb_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreatedbStmt", "CreatedbStmt", "PgQuery__CreatedbStmt", "pg_query", sizeof(PgQuery__CreatedbStmt), 2, pg_query__createdb_stmt__field_descriptors, pg_query__createdb_stmt__field_indices_by_name, 1, pg_query__createdb_stmt__number_ranges, (ProtobufCMessageInit) pg_query__createdb_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__dropdb_stmt__field_descriptors[3] = { { "dbname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DropdbStmt, dbname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropdbStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DropdbStmt, n_options), offsetof(PgQuery__DropdbStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__dropdb_stmt__field_indices_by_name[] = { 0, /* field[0] = dbname */ 1, /* field[1] = missing_ok */ 2, /* field[2] = options */ }; static const ProtobufCIntRange pg_query__dropdb_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__dropdb_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropdbStmt", "DropdbStmt", "PgQuery__DropdbStmt", "pg_query", sizeof(PgQuery__DropdbStmt), 3, pg_query__dropdb_stmt__field_descriptors, pg_query__dropdb_stmt__field_indices_by_name, 1, pg_query__dropdb_stmt__number_ranges, (ProtobufCMessageInit) pg_query__dropdb_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__vacuum_stmt__field_descriptors[3] = { { "options", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__VacuumStmt, n_options), offsetof(PgQuery__VacuumStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rels", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__VacuumStmt, n_rels), offsetof(PgQuery__VacuumStmt, rels), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_vacuumcmd", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__VacuumStmt, is_vacuumcmd), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__vacuum_stmt__field_indices_by_name[] = { 2, /* field[2] = is_vacuumcmd */ 0, /* field[0] = options */ 1, /* field[1] = rels */ }; static const ProtobufCIntRange pg_query__vacuum_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__vacuum_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.VacuumStmt", "VacuumStmt", "PgQuery__VacuumStmt", "pg_query", sizeof(PgQuery__VacuumStmt), 3, pg_query__vacuum_stmt__field_descriptors, pg_query__vacuum_stmt__field_indices_by_name, 1, pg_query__vacuum_stmt__number_ranges, (ProtobufCMessageInit) pg_query__vacuum_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__explain_stmt__field_descriptors[2] = { { "query", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ExplainStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ExplainStmt, n_options), offsetof(PgQuery__ExplainStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__explain_stmt__field_indices_by_name[] = { 1, /* field[1] = options */ 0, /* field[0] = query */ }; static const ProtobufCIntRange pg_query__explain_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__explain_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ExplainStmt", "ExplainStmt", "PgQuery__ExplainStmt", "pg_query", sizeof(PgQuery__ExplainStmt), 2, pg_query__explain_stmt__field_descriptors, pg_query__explain_stmt__field_indices_by_name, 1, pg_query__explain_stmt__number_ranges, (ProtobufCMessageInit) pg_query__explain_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_table_as_stmt__field_descriptors[5] = { { "query", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableAsStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "into", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableAsStmt, into), &pg_query__into_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relkind", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableAsStmt, relkind), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_select_into", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableAsStmt, is_select_into), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableAsStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_table_as_stmt__field_indices_by_name[] = { 4, /* field[4] = if_not_exists */ 1, /* field[1] = into */ 3, /* field[3] = is_select_into */ 0, /* field[0] = query */ 2, /* field[2] = relkind */ }; static const ProtobufCIntRange pg_query__create_table_as_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__create_table_as_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateTableAsStmt", "CreateTableAsStmt", "PgQuery__CreateTableAsStmt", "pg_query", sizeof(PgQuery__CreateTableAsStmt), 5, pg_query__create_table_as_stmt__field_descriptors, pg_query__create_table_as_stmt__field_indices_by_name, 1, pg_query__create_table_as_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_table_as_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_seq_stmt__field_descriptors[5] = { { "sequence", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSeqStmt, sequence), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateSeqStmt, n_options), offsetof(PgQuery__CreateSeqStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "owner_id", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSeqStmt, owner_id), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "for_identity", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSeqStmt, for_identity), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSeqStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_seq_stmt__field_indices_by_name[] = { 3, /* field[3] = for_identity */ 4, /* field[4] = if_not_exists */ 1, /* field[1] = options */ 2, /* field[2] = owner_id */ 0, /* field[0] = sequence */ }; static const ProtobufCIntRange pg_query__create_seq_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__create_seq_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateSeqStmt", "CreateSeqStmt", "PgQuery__CreateSeqStmt", "pg_query", sizeof(PgQuery__CreateSeqStmt), 5, pg_query__create_seq_stmt__field_descriptors, pg_query__create_seq_stmt__field_indices_by_name, 1, pg_query__create_seq_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_seq_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_seq_stmt__field_descriptors[4] = { { "sequence", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSeqStmt, sequence), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterSeqStmt, n_options), offsetof(PgQuery__AlterSeqStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "for_identity", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSeqStmt, for_identity), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSeqStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_seq_stmt__field_indices_by_name[] = { 2, /* field[2] = for_identity */ 3, /* field[3] = missing_ok */ 1, /* field[1] = options */ 0, /* field[0] = sequence */ }; static const ProtobufCIntRange pg_query__alter_seq_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__alter_seq_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterSeqStmt", "AlterSeqStmt", "PgQuery__AlterSeqStmt", "pg_query", sizeof(PgQuery__AlterSeqStmt), 4, pg_query__alter_seq_stmt__field_descriptors, pg_query__alter_seq_stmt__field_indices_by_name, 1, pg_query__alter_seq_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_seq_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__variable_set_stmt__field_descriptors[4] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__VariableSetStmt, kind), &pg_query__variable_set_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__VariableSetStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__VariableSetStmt, n_args), offsetof(PgQuery__VariableSetStmt, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_local", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__VariableSetStmt, is_local), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__variable_set_stmt__field_indices_by_name[] = { 2, /* field[2] = args */ 3, /* field[3] = is_local */ 0, /* field[0] = kind */ 1, /* field[1] = name */ }; static const ProtobufCIntRange pg_query__variable_set_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__variable_set_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.VariableSetStmt", "VariableSetStmt", "PgQuery__VariableSetStmt", "pg_query", sizeof(PgQuery__VariableSetStmt), 4, pg_query__variable_set_stmt__field_descriptors, pg_query__variable_set_stmt__field_indices_by_name, 1, pg_query__variable_set_stmt__number_ranges, (ProtobufCMessageInit) pg_query__variable_set_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__variable_show_stmt__field_descriptors[1] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__VariableShowStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__variable_show_stmt__field_indices_by_name[] = { 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__variable_show_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__variable_show_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.VariableShowStmt", "VariableShowStmt", "PgQuery__VariableShowStmt", "pg_query", sizeof(PgQuery__VariableShowStmt), 1, pg_query__variable_show_stmt__field_descriptors, pg_query__variable_show_stmt__field_indices_by_name, 1, pg_query__variable_show_stmt__number_ranges, (ProtobufCMessageInit) pg_query__variable_show_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__discard_stmt__field_descriptors[1] = { { "target", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DiscardStmt, target), &pg_query__discard_mode__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__discard_stmt__field_indices_by_name[] = { 0, /* field[0] = target */ }; static const ProtobufCIntRange pg_query__discard_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__discard_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DiscardStmt", "DiscardStmt", "PgQuery__DiscardStmt", "pg_query", sizeof(PgQuery__DiscardStmt), 1, pg_query__discard_stmt__field_descriptors, pg_query__discard_stmt__field_indices_by_name, 1, pg_query__discard_stmt__number_ranges, (ProtobufCMessageInit) pg_query__discard_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_trig_stmt__field_descriptors[14] = { { "trigname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, trigname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcname", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateTrigStmt, n_funcname), offsetof(PgQuery__CreateTrigStmt, funcname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateTrigStmt, n_args), offsetof(PgQuery__CreateTrigStmt, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "row", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, row), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "timing", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, timing), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "events", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, events), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "columns", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateTrigStmt, n_columns), offsetof(PgQuery__CreateTrigStmt, columns), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "when_clause", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, when_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "isconstraint", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, isconstraint), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "transition_rels", 11, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateTrigStmt, n_transition_rels), offsetof(PgQuery__CreateTrigStmt, transition_rels), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "deferrable", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, deferrable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "initdeferred", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, initdeferred), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constrrel", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTrigStmt, constrrel), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_trig_stmt__field_indices_by_name[] = { 3, /* field[3] = args */ 7, /* field[7] = columns */ 13, /* field[13] = constrrel */ 11, /* field[11] = deferrable */ 6, /* field[6] = events */ 2, /* field[2] = funcname */ 12, /* field[12] = initdeferred */ 9, /* field[9] = isconstraint */ 1, /* field[1] = relation */ 4, /* field[4] = row */ 5, /* field[5] = timing */ 10, /* field[10] = transition_rels */ 0, /* field[0] = trigname */ 8, /* field[8] = when_clause */ }; static const ProtobufCIntRange pg_query__create_trig_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 14 } }; const ProtobufCMessageDescriptor pg_query__create_trig_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateTrigStmt", "CreateTrigStmt", "PgQuery__CreateTrigStmt", "pg_query", sizeof(PgQuery__CreateTrigStmt), 14, pg_query__create_trig_stmt__field_descriptors, pg_query__create_trig_stmt__field_indices_by_name, 1, pg_query__create_trig_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_trig_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_plang_stmt__field_descriptors[6] = { { "replace", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePLangStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePLangStmt, plname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plhandler", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePLangStmt, n_plhandler), offsetof(PgQuery__CreatePLangStmt, plhandler), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plinline", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePLangStmt, n_plinline), offsetof(PgQuery__CreatePLangStmt, plinline), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "plvalidator", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePLangStmt, n_plvalidator), offsetof(PgQuery__CreatePLangStmt, plvalidator), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pltrusted", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePLangStmt, pltrusted), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_plang_stmt__field_indices_by_name[] = { 2, /* field[2] = plhandler */ 3, /* field[3] = plinline */ 1, /* field[1] = plname */ 5, /* field[5] = pltrusted */ 4, /* field[4] = plvalidator */ 0, /* field[0] = replace */ }; static const ProtobufCIntRange pg_query__create_plang_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__create_plang_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreatePLangStmt", "CreatePLangStmt", "PgQuery__CreatePLangStmt", "pg_query", sizeof(PgQuery__CreatePLangStmt), 6, pg_query__create_plang_stmt__field_descriptors, pg_query__create_plang_stmt__field_indices_by_name, 1, pg_query__create_plang_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_plang_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_role_stmt__field_descriptors[3] = { { "stmt_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CreateRoleStmt, stmt_type), &pg_query__role_stmt_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "role", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateRoleStmt, role), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateRoleStmt, n_options), offsetof(PgQuery__CreateRoleStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_role_stmt__field_indices_by_name[] = { 2, /* field[2] = options */ 1, /* field[1] = role */ 0, /* field[0] = stmt_type */ }; static const ProtobufCIntRange pg_query__create_role_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__create_role_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateRoleStmt", "CreateRoleStmt", "PgQuery__CreateRoleStmt", "pg_query", sizeof(PgQuery__CreateRoleStmt), 3, pg_query__create_role_stmt__field_descriptors, pg_query__create_role_stmt__field_indices_by_name, 1, pg_query__create_role_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_role_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_role_stmt__field_descriptors[3] = { { "role", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterRoleStmt, role), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterRoleStmt, n_options), offsetof(PgQuery__AlterRoleStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "action", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AlterRoleStmt, action), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_role_stmt__field_indices_by_name[] = { 2, /* field[2] = action */ 1, /* field[1] = options */ 0, /* field[0] = role */ }; static const ProtobufCIntRange pg_query__alter_role_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_role_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterRoleStmt", "AlterRoleStmt", "PgQuery__AlterRoleStmt", "pg_query", sizeof(PgQuery__AlterRoleStmt), 3, pg_query__alter_role_stmt__field_descriptors, pg_query__alter_role_stmt__field_indices_by_name, 1, pg_query__alter_role_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_role_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__drop_role_stmt__field_descriptors[2] = { { "roles", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DropRoleStmt, n_roles), offsetof(PgQuery__DropRoleStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropRoleStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_role_stmt__field_indices_by_name[] = { 1, /* field[1] = missing_ok */ 0, /* field[0] = roles */ }; static const ProtobufCIntRange pg_query__drop_role_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__drop_role_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropRoleStmt", "DropRoleStmt", "PgQuery__DropRoleStmt", "pg_query", sizeof(PgQuery__DropRoleStmt), 2, pg_query__drop_role_stmt__field_descriptors, pg_query__drop_role_stmt__field_indices_by_name, 1, pg_query__drop_role_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_role_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__lock_stmt__field_descriptors[3] = { { "relations", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__LockStmt, n_relations), offsetof(PgQuery__LockStmt, relations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "mode", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__LockStmt, mode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nowait", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__LockStmt, nowait), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__lock_stmt__field_indices_by_name[] = { 1, /* field[1] = mode */ 2, /* field[2] = nowait */ 0, /* field[0] = relations */ }; static const ProtobufCIntRange pg_query__lock_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__lock_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.LockStmt", "LockStmt", "PgQuery__LockStmt", "pg_query", sizeof(PgQuery__LockStmt), 3, pg_query__lock_stmt__field_descriptors, pg_query__lock_stmt__field_indices_by_name, 1, pg_query__lock_stmt__number_ranges, (ProtobufCMessageInit) pg_query__lock_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__constraints_set_stmt__field_descriptors[2] = { { "constraints", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ConstraintsSetStmt, n_constraints), offsetof(PgQuery__ConstraintsSetStmt, constraints), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "deferred", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ConstraintsSetStmt, deferred), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__constraints_set_stmt__field_indices_by_name[] = { 0, /* field[0] = constraints */ 1, /* field[1] = deferred */ }; static const ProtobufCIntRange pg_query__constraints_set_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__constraints_set_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ConstraintsSetStmt", "ConstraintsSetStmt", "PgQuery__ConstraintsSetStmt", "pg_query", sizeof(PgQuery__ConstraintsSetStmt), 2, pg_query__constraints_set_stmt__field_descriptors, pg_query__constraints_set_stmt__field_indices_by_name, 1, pg_query__constraints_set_stmt__number_ranges, (ProtobufCMessageInit) pg_query__constraints_set_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__reindex_stmt__field_descriptors[5] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ReindexStmt, kind), &pg_query__reindex_object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ReindexStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ReindexStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ReindexStmt, options), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "concurrent", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ReindexStmt, concurrent), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__reindex_stmt__field_indices_by_name[] = { 4, /* field[4] = concurrent */ 0, /* field[0] = kind */ 2, /* field[2] = name */ 3, /* field[3] = options */ 1, /* field[1] = relation */ }; static const ProtobufCIntRange pg_query__reindex_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__reindex_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ReindexStmt", "ReindexStmt", "PgQuery__ReindexStmt", "pg_query", sizeof(PgQuery__ReindexStmt), 5, pg_query__reindex_stmt__field_descriptors, pg_query__reindex_stmt__field_indices_by_name, 1, pg_query__reindex_stmt__number_ranges, (ProtobufCMessageInit) pg_query__reindex_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; #define pg_query__check_point_stmt__field_descriptors NULL #define pg_query__check_point_stmt__field_indices_by_name NULL #define pg_query__check_point_stmt__number_ranges NULL const ProtobufCMessageDescriptor pg_query__check_point_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CheckPointStmt", "CheckPointStmt", "PgQuery__CheckPointStmt", "pg_query", sizeof(PgQuery__CheckPointStmt), 0, pg_query__check_point_stmt__field_descriptors, pg_query__check_point_stmt__field_indices_by_name, 0, pg_query__check_point_stmt__number_ranges, (ProtobufCMessageInit) pg_query__check_point_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_schema_stmt__field_descriptors[4] = { { "schemaname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSchemaStmt, schemaname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "authrole", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSchemaStmt, authrole), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "schema_elts", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateSchemaStmt, n_schema_elts), offsetof(PgQuery__CreateSchemaStmt, schema_elts), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSchemaStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_schema_stmt__field_indices_by_name[] = { 1, /* field[1] = authrole */ 3, /* field[3] = if_not_exists */ 2, /* field[2] = schema_elts */ 0, /* field[0] = schemaname */ }; static const ProtobufCIntRange pg_query__create_schema_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_schema_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateSchemaStmt", "CreateSchemaStmt", "PgQuery__CreateSchemaStmt", "pg_query", sizeof(PgQuery__CreateSchemaStmt), 4, pg_query__create_schema_stmt__field_descriptors, pg_query__create_schema_stmt__field_indices_by_name, 1, pg_query__create_schema_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_schema_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_database_stmt__field_descriptors[2] = { { "dbname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDatabaseStmt, dbname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterDatabaseStmt, n_options), offsetof(PgQuery__AlterDatabaseStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_database_stmt__field_indices_by_name[] = { 0, /* field[0] = dbname */ 1, /* field[1] = options */ }; static const ProtobufCIntRange pg_query__alter_database_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_database_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterDatabaseStmt", "AlterDatabaseStmt", "PgQuery__AlterDatabaseStmt", "pg_query", sizeof(PgQuery__AlterDatabaseStmt), 2, pg_query__alter_database_stmt__field_descriptors, pg_query__alter_database_stmt__field_indices_by_name, 1, pg_query__alter_database_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_database_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_database_set_stmt__field_descriptors[2] = { { "dbname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDatabaseSetStmt, dbname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "setstmt", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterDatabaseSetStmt, setstmt), &pg_query__variable_set_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_database_set_stmt__field_indices_by_name[] = { 0, /* field[0] = dbname */ 1, /* field[1] = setstmt */ }; static const ProtobufCIntRange pg_query__alter_database_set_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_database_set_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterDatabaseSetStmt", "AlterDatabaseSetStmt", "PgQuery__AlterDatabaseSetStmt", "pg_query", sizeof(PgQuery__AlterDatabaseSetStmt), 2, pg_query__alter_database_set_stmt__field_descriptors, pg_query__alter_database_set_stmt__field_indices_by_name, 1, pg_query__alter_database_set_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_database_set_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_role_set_stmt__field_descriptors[3] = { { "role", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterRoleSetStmt, role), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "database", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterRoleSetStmt, database), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "setstmt", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterRoleSetStmt, setstmt), &pg_query__variable_set_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_role_set_stmt__field_indices_by_name[] = { 1, /* field[1] = database */ 0, /* field[0] = role */ 2, /* field[2] = setstmt */ }; static const ProtobufCIntRange pg_query__alter_role_set_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_role_set_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterRoleSetStmt", "AlterRoleSetStmt", "PgQuery__AlterRoleSetStmt", "pg_query", sizeof(PgQuery__AlterRoleSetStmt), 3, pg_query__alter_role_set_stmt__field_descriptors, pg_query__alter_role_set_stmt__field_indices_by_name, 1, pg_query__alter_role_set_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_role_set_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_conversion_stmt__field_descriptors[5] = { { "conversion_name", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateConversionStmt, n_conversion_name), offsetof(PgQuery__CreateConversionStmt, conversion_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "for_encoding_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateConversionStmt, for_encoding_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "to_encoding_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateConversionStmt, to_encoding_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_name", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateConversionStmt, n_func_name), offsetof(PgQuery__CreateConversionStmt, func_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "def", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateConversionStmt, def), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_conversion_stmt__field_indices_by_name[] = { 0, /* field[0] = conversion_name */ 4, /* field[4] = def */ 1, /* field[1] = for_encoding_name */ 3, /* field[3] = func_name */ 2, /* field[2] = to_encoding_name */ }; static const ProtobufCIntRange pg_query__create_conversion_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__create_conversion_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateConversionStmt", "CreateConversionStmt", "PgQuery__CreateConversionStmt", "pg_query", sizeof(PgQuery__CreateConversionStmt), 5, pg_query__create_conversion_stmt__field_descriptors, pg_query__create_conversion_stmt__field_indices_by_name, 1, pg_query__create_conversion_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_conversion_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_cast_stmt__field_descriptors[5] = { { "sourcetype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateCastStmt, sourcetype), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "targettype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateCastStmt, targettype), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateCastStmt, func), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "context", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CreateCastStmt, context), &pg_query__coercion_context__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inout", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateCastStmt, inout), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_cast_stmt__field_indices_by_name[] = { 3, /* field[3] = context */ 2, /* field[2] = func */ 4, /* field[4] = inout */ 0, /* field[0] = sourcetype */ 1, /* field[1] = targettype */ }; static const ProtobufCIntRange pg_query__create_cast_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__create_cast_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateCastStmt", "CreateCastStmt", "PgQuery__CreateCastStmt", "pg_query", sizeof(PgQuery__CreateCastStmt), 5, pg_query__create_cast_stmt__field_descriptors, pg_query__create_cast_stmt__field_indices_by_name, 1, pg_query__create_cast_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_cast_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_op_class_stmt__field_descriptors[6] = { { "opclassname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpClassStmt, n_opclassname), offsetof(PgQuery__CreateOpClassStmt, opclassname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opfamilyname", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpClassStmt, n_opfamilyname), offsetof(PgQuery__CreateOpClassStmt, opfamilyname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "amname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassStmt, amname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "datatype", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassStmt, datatype), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "items", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpClassStmt, n_items), offsetof(PgQuery__CreateOpClassStmt, items), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_default", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassStmt, is_default), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_op_class_stmt__field_indices_by_name[] = { 2, /* field[2] = amname */ 3, /* field[3] = datatype */ 5, /* field[5] = is_default */ 4, /* field[4] = items */ 0, /* field[0] = opclassname */ 1, /* field[1] = opfamilyname */ }; static const ProtobufCIntRange pg_query__create_op_class_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__create_op_class_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateOpClassStmt", "CreateOpClassStmt", "PgQuery__CreateOpClassStmt", "pg_query", sizeof(PgQuery__CreateOpClassStmt), 6, pg_query__create_op_class_stmt__field_descriptors, pg_query__create_op_class_stmt__field_indices_by_name, 1, pg_query__create_op_class_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_op_class_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_op_family_stmt__field_descriptors[2] = { { "opfamilyname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpFamilyStmt, n_opfamilyname), offsetof(PgQuery__CreateOpFamilyStmt, opfamilyname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "amname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpFamilyStmt, amname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_op_family_stmt__field_indices_by_name[] = { 1, /* field[1] = amname */ 0, /* field[0] = opfamilyname */ }; static const ProtobufCIntRange pg_query__create_op_family_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__create_op_family_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateOpFamilyStmt", "CreateOpFamilyStmt", "PgQuery__CreateOpFamilyStmt", "pg_query", sizeof(PgQuery__CreateOpFamilyStmt), 2, pg_query__create_op_family_stmt__field_descriptors, pg_query__create_op_family_stmt__field_indices_by_name, 1, pg_query__create_op_family_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_op_family_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_op_family_stmt__field_descriptors[4] = { { "opfamilyname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterOpFamilyStmt, n_opfamilyname), offsetof(PgQuery__AlterOpFamilyStmt, opfamilyname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "amname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterOpFamilyStmt, amname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_drop", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterOpFamilyStmt, is_drop), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "items", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterOpFamilyStmt, n_items), offsetof(PgQuery__AlterOpFamilyStmt, items), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_op_family_stmt__field_indices_by_name[] = { 1, /* field[1] = amname */ 2, /* field[2] = is_drop */ 3, /* field[3] = items */ 0, /* field[0] = opfamilyname */ }; static const ProtobufCIntRange pg_query__alter_op_family_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__alter_op_family_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterOpFamilyStmt", "AlterOpFamilyStmt", "PgQuery__AlterOpFamilyStmt", "pg_query", sizeof(PgQuery__AlterOpFamilyStmt), 4, pg_query__alter_op_family_stmt__field_descriptors, pg_query__alter_op_family_stmt__field_indices_by_name, 1, pg_query__alter_op_family_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_op_family_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__prepare_stmt__field_descriptors[3] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__PrepareStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "argtypes", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PrepareStmt, n_argtypes), offsetof(PgQuery__PrepareStmt, argtypes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PrepareStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__prepare_stmt__field_indices_by_name[] = { 1, /* field[1] = argtypes */ 0, /* field[0] = name */ 2, /* field[2] = query */ }; static const ProtobufCIntRange pg_query__prepare_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__prepare_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PrepareStmt", "PrepareStmt", "PgQuery__PrepareStmt", "pg_query", sizeof(PgQuery__PrepareStmt), 3, pg_query__prepare_stmt__field_descriptors, pg_query__prepare_stmt__field_indices_by_name, 1, pg_query__prepare_stmt__number_ranges, (ProtobufCMessageInit) pg_query__prepare_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__execute_stmt__field_descriptors[2] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ExecuteStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "params", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ExecuteStmt, n_params), offsetof(PgQuery__ExecuteStmt, params), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__execute_stmt__field_indices_by_name[] = { 0, /* field[0] = name */ 1, /* field[1] = params */ }; static const ProtobufCIntRange pg_query__execute_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__execute_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ExecuteStmt", "ExecuteStmt", "PgQuery__ExecuteStmt", "pg_query", sizeof(PgQuery__ExecuteStmt), 2, pg_query__execute_stmt__field_descriptors, pg_query__execute_stmt__field_indices_by_name, 1, pg_query__execute_stmt__number_ranges, (ProtobufCMessageInit) pg_query__execute_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__deallocate_stmt__field_descriptors[1] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DeallocateStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__deallocate_stmt__field_indices_by_name[] = { 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__deallocate_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__deallocate_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DeallocateStmt", "DeallocateStmt", "PgQuery__DeallocateStmt", "pg_query", sizeof(PgQuery__DeallocateStmt), 1, pg_query__deallocate_stmt__field_descriptors, pg_query__deallocate_stmt__field_indices_by_name, 1, pg_query__deallocate_stmt__number_ranges, (ProtobufCMessageInit) pg_query__deallocate_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__declare_cursor_stmt__field_descriptors[3] = { { "portalname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DeclareCursorStmt, portalname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__DeclareCursorStmt, options), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "query", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DeclareCursorStmt, query), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__declare_cursor_stmt__field_indices_by_name[] = { 1, /* field[1] = options */ 0, /* field[0] = portalname */ 2, /* field[2] = query */ }; static const ProtobufCIntRange pg_query__declare_cursor_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__declare_cursor_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DeclareCursorStmt", "DeclareCursorStmt", "PgQuery__DeclareCursorStmt", "pg_query", sizeof(PgQuery__DeclareCursorStmt), 3, pg_query__declare_cursor_stmt__field_descriptors, pg_query__declare_cursor_stmt__field_indices_by_name, 1, pg_query__declare_cursor_stmt__number_ranges, (ProtobufCMessageInit) pg_query__declare_cursor_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_table_space_stmt__field_descriptors[4] = { { "tablespacename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableSpaceStmt, tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "owner", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableSpaceStmt, owner), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTableSpaceStmt, location), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateTableSpaceStmt, n_options), offsetof(PgQuery__CreateTableSpaceStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_table_space_stmt__field_indices_by_name[] = { 2, /* field[2] = location */ 3, /* field[3] = options */ 1, /* field[1] = owner */ 0, /* field[0] = tablespacename */ }; static const ProtobufCIntRange pg_query__create_table_space_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_table_space_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateTableSpaceStmt", "CreateTableSpaceStmt", "PgQuery__CreateTableSpaceStmt", "pg_query", sizeof(PgQuery__CreateTableSpaceStmt), 4, pg_query__create_table_space_stmt__field_descriptors, pg_query__create_table_space_stmt__field_indices_by_name, 1, pg_query__create_table_space_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_table_space_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__drop_table_space_stmt__field_descriptors[2] = { { "tablespacename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DropTableSpaceStmt, tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropTableSpaceStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_table_space_stmt__field_indices_by_name[] = { 1, /* field[1] = missing_ok */ 0, /* field[0] = tablespacename */ }; static const ProtobufCIntRange pg_query__drop_table_space_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__drop_table_space_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropTableSpaceStmt", "DropTableSpaceStmt", "PgQuery__DropTableSpaceStmt", "pg_query", sizeof(PgQuery__DropTableSpaceStmt), 2, pg_query__drop_table_space_stmt__field_descriptors, pg_query__drop_table_space_stmt__field_indices_by_name, 1, pg_query__drop_table_space_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_table_space_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_object_depends_stmt__field_descriptors[5] = { { "object_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectDependsStmt, object_type), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectDependsStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectDependsStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "extname", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectDependsStmt, extname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "remove", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectDependsStmt, remove), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_object_depends_stmt__field_indices_by_name[] = { 3, /* field[3] = extname */ 2, /* field[2] = object */ 0, /* field[0] = object_type */ 1, /* field[1] = relation */ 4, /* field[4] = remove */ }; static const ProtobufCIntRange pg_query__alter_object_depends_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__alter_object_depends_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterObjectDependsStmt", "AlterObjectDependsStmt", "PgQuery__AlterObjectDependsStmt", "pg_query", sizeof(PgQuery__AlterObjectDependsStmt), 5, pg_query__alter_object_depends_stmt__field_descriptors, pg_query__alter_object_depends_stmt__field_indices_by_name, 1, pg_query__alter_object_depends_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_object_depends_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_object_schema_stmt__field_descriptors[5] = { { "object_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectSchemaStmt, object_type), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectSchemaStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectSchemaStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "newschema", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectSchemaStmt, newschema), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterObjectSchemaStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_object_schema_stmt__field_indices_by_name[] = { 4, /* field[4] = missing_ok */ 3, /* field[3] = newschema */ 2, /* field[2] = object */ 0, /* field[0] = object_type */ 1, /* field[1] = relation */ }; static const ProtobufCIntRange pg_query__alter_object_schema_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__alter_object_schema_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterObjectSchemaStmt", "AlterObjectSchemaStmt", "PgQuery__AlterObjectSchemaStmt", "pg_query", sizeof(PgQuery__AlterObjectSchemaStmt), 5, pg_query__alter_object_schema_stmt__field_descriptors, pg_query__alter_object_schema_stmt__field_indices_by_name, 1, pg_query__alter_object_schema_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_object_schema_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_owner_stmt__field_descriptors[4] = { { "object_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterOwnerStmt, object_type), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterOwnerStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterOwnerStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "newowner", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterOwnerStmt, newowner), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_owner_stmt__field_indices_by_name[] = { 3, /* field[3] = newowner */ 2, /* field[2] = object */ 0, /* field[0] = object_type */ 1, /* field[1] = relation */ }; static const ProtobufCIntRange pg_query__alter_owner_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__alter_owner_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterOwnerStmt", "AlterOwnerStmt", "PgQuery__AlterOwnerStmt", "pg_query", sizeof(PgQuery__AlterOwnerStmt), 4, pg_query__alter_owner_stmt__field_descriptors, pg_query__alter_owner_stmt__field_indices_by_name, 1, pg_query__alter_owner_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_owner_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_operator_stmt__field_descriptors[2] = { { "opername", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterOperatorStmt, opername), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterOperatorStmt, n_options), offsetof(PgQuery__AlterOperatorStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_operator_stmt__field_indices_by_name[] = { 0, /* field[0] = opername */ 1, /* field[1] = options */ }; static const ProtobufCIntRange pg_query__alter_operator_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_operator_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterOperatorStmt", "AlterOperatorStmt", "PgQuery__AlterOperatorStmt", "pg_query", sizeof(PgQuery__AlterOperatorStmt), 2, pg_query__alter_operator_stmt__field_descriptors, pg_query__alter_operator_stmt__field_indices_by_name, 1, pg_query__alter_operator_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_operator_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_type_stmt__field_descriptors[2] = { { "type_name", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTypeStmt, n_type_name), offsetof(PgQuery__AlterTypeStmt, type_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTypeStmt, n_options), offsetof(PgQuery__AlterTypeStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_type_stmt__field_indices_by_name[] = { 1, /* field[1] = options */ 0, /* field[0] = type_name */ }; static const ProtobufCIntRange pg_query__alter_type_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_type_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTypeStmt", "AlterTypeStmt", "PgQuery__AlterTypeStmt", "pg_query", sizeof(PgQuery__AlterTypeStmt), 2, pg_query__alter_type_stmt__field_descriptors, pg_query__alter_type_stmt__field_indices_by_name, 1, pg_query__alter_type_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_type_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__drop_owned_stmt__field_descriptors[2] = { { "roles", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__DropOwnedStmt, n_roles), offsetof(PgQuery__DropOwnedStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DropOwnedStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_owned_stmt__field_indices_by_name[] = { 1, /* field[1] = behavior */ 0, /* field[0] = roles */ }; static const ProtobufCIntRange pg_query__drop_owned_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__drop_owned_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropOwnedStmt", "DropOwnedStmt", "PgQuery__DropOwnedStmt", "pg_query", sizeof(PgQuery__DropOwnedStmt), 2, pg_query__drop_owned_stmt__field_descriptors, pg_query__drop_owned_stmt__field_indices_by_name, 1, pg_query__drop_owned_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_owned_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__reassign_owned_stmt__field_descriptors[2] = { { "roles", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ReassignOwnedStmt, n_roles), offsetof(PgQuery__ReassignOwnedStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "newrole", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ReassignOwnedStmt, newrole), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__reassign_owned_stmt__field_indices_by_name[] = { 1, /* field[1] = newrole */ 0, /* field[0] = roles */ }; static const ProtobufCIntRange pg_query__reassign_owned_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__reassign_owned_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ReassignOwnedStmt", "ReassignOwnedStmt", "PgQuery__ReassignOwnedStmt", "pg_query", sizeof(PgQuery__ReassignOwnedStmt), 2, pg_query__reassign_owned_stmt__field_descriptors, pg_query__reassign_owned_stmt__field_indices_by_name, 1, pg_query__reassign_owned_stmt__number_ranges, (ProtobufCMessageInit) pg_query__reassign_owned_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__composite_type_stmt__field_descriptors[2] = { { "typevar", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CompositeTypeStmt, typevar), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coldeflist", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CompositeTypeStmt, n_coldeflist), offsetof(PgQuery__CompositeTypeStmt, coldeflist), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__composite_type_stmt__field_indices_by_name[] = { 1, /* field[1] = coldeflist */ 0, /* field[0] = typevar */ }; static const ProtobufCIntRange pg_query__composite_type_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__composite_type_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CompositeTypeStmt", "CompositeTypeStmt", "PgQuery__CompositeTypeStmt", "pg_query", sizeof(PgQuery__CompositeTypeStmt), 2, pg_query__composite_type_stmt__field_descriptors, pg_query__composite_type_stmt__field_indices_by_name, 1, pg_query__composite_type_stmt__number_ranges, (ProtobufCMessageInit) pg_query__composite_type_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_enum_stmt__field_descriptors[2] = { { "type_name", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateEnumStmt, n_type_name), offsetof(PgQuery__CreateEnumStmt, type_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "vals", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateEnumStmt, n_vals), offsetof(PgQuery__CreateEnumStmt, vals), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_enum_stmt__field_indices_by_name[] = { 0, /* field[0] = type_name */ 1, /* field[1] = vals */ }; static const ProtobufCIntRange pg_query__create_enum_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__create_enum_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateEnumStmt", "CreateEnumStmt", "PgQuery__CreateEnumStmt", "pg_query", sizeof(PgQuery__CreateEnumStmt), 2, pg_query__create_enum_stmt__field_descriptors, pg_query__create_enum_stmt__field_indices_by_name, 1, pg_query__create_enum_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_enum_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_range_stmt__field_descriptors[2] = { { "type_name", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateRangeStmt, n_type_name), offsetof(PgQuery__CreateRangeStmt, type_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "params", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateRangeStmt, n_params), offsetof(PgQuery__CreateRangeStmt, params), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_range_stmt__field_indices_by_name[] = { 1, /* field[1] = params */ 0, /* field[0] = type_name */ }; static const ProtobufCIntRange pg_query__create_range_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__create_range_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateRangeStmt", "CreateRangeStmt", "PgQuery__CreateRangeStmt", "pg_query", sizeof(PgQuery__CreateRangeStmt), 2, pg_query__create_range_stmt__field_descriptors, pg_query__create_range_stmt__field_indices_by_name, 1, pg_query__create_range_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_range_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_enum_stmt__field_descriptors[6] = { { "type_name", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterEnumStmt, n_type_name), offsetof(PgQuery__AlterEnumStmt, type_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "old_val", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEnumStmt, old_val), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "new_val", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEnumStmt, new_val), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "new_val_neighbor", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEnumStmt, new_val_neighbor), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "new_val_is_after", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEnumStmt, new_val_is_after), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "skip_if_new_val_exists", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEnumStmt, skip_if_new_val_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_enum_stmt__field_indices_by_name[] = { 2, /* field[2] = new_val */ 4, /* field[4] = new_val_is_after */ 3, /* field[3] = new_val_neighbor */ 1, /* field[1] = old_val */ 5, /* field[5] = skip_if_new_val_exists */ 0, /* field[0] = type_name */ }; static const ProtobufCIntRange pg_query__alter_enum_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__alter_enum_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterEnumStmt", "AlterEnumStmt", "PgQuery__AlterEnumStmt", "pg_query", sizeof(PgQuery__AlterEnumStmt), 6, pg_query__alter_enum_stmt__field_descriptors, pg_query__alter_enum_stmt__field_indices_by_name, 1, pg_query__alter_enum_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_enum_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_tsdictionary_stmt__field_descriptors[2] = { { "dictname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTSDictionaryStmt, n_dictname), offsetof(PgQuery__AlterTSDictionaryStmt, dictname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTSDictionaryStmt, n_options), offsetof(PgQuery__AlterTSDictionaryStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_tsdictionary_stmt__field_indices_by_name[] = { 0, /* field[0] = dictname */ 1, /* field[1] = options */ }; static const ProtobufCIntRange pg_query__alter_tsdictionary_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_tsdictionary_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTSDictionaryStmt", "AlterTSDictionaryStmt", "PgQuery__AlterTSDictionaryStmt", "pg_query", sizeof(PgQuery__AlterTSDictionaryStmt), 2, pg_query__alter_tsdictionary_stmt__field_descriptors, pg_query__alter_tsdictionary_stmt__field_indices_by_name, 1, pg_query__alter_tsdictionary_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_tsdictionary_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_tsconfiguration_stmt__field_descriptors[7] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTSConfigurationStmt, kind), &pg_query__alter_tsconfig_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cfgname", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTSConfigurationStmt, n_cfgname), offsetof(PgQuery__AlterTSConfigurationStmt, cfgname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tokentype", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTSConfigurationStmt, n_tokentype), offsetof(PgQuery__AlterTSConfigurationStmt, tokentype), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "dicts", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTSConfigurationStmt, n_dicts), offsetof(PgQuery__AlterTSConfigurationStmt, dicts), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "override", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTSConfigurationStmt, override), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "replace", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTSConfigurationStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTSConfigurationStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_tsconfiguration_stmt__field_indices_by_name[] = { 1, /* field[1] = cfgname */ 3, /* field[3] = dicts */ 0, /* field[0] = kind */ 6, /* field[6] = missing_ok */ 4, /* field[4] = override */ 5, /* field[5] = replace */ 2, /* field[2] = tokentype */ }; static const ProtobufCIntRange pg_query__alter_tsconfiguration_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__alter_tsconfiguration_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTSConfigurationStmt", "AlterTSConfigurationStmt", "PgQuery__AlterTSConfigurationStmt", "pg_query", sizeof(PgQuery__AlterTSConfigurationStmt), 7, pg_query__alter_tsconfiguration_stmt__field_descriptors, pg_query__alter_tsconfiguration_stmt__field_indices_by_name, 1, pg_query__alter_tsconfiguration_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_tsconfiguration_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_fdw_stmt__field_descriptors[3] = { { "fdwname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateFdwStmt, fdwname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateFdwStmt, n_func_options), offsetof(PgQuery__CreateFdwStmt, func_options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateFdwStmt, n_options), offsetof(PgQuery__CreateFdwStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_fdw_stmt__field_indices_by_name[] = { 0, /* field[0] = fdwname */ 1, /* field[1] = func_options */ 2, /* field[2] = options */ }; static const ProtobufCIntRange pg_query__create_fdw_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__create_fdw_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateFdwStmt", "CreateFdwStmt", "PgQuery__CreateFdwStmt", "pg_query", sizeof(PgQuery__CreateFdwStmt), 3, pg_query__create_fdw_stmt__field_descriptors, pg_query__create_fdw_stmt__field_indices_by_name, 1, pg_query__create_fdw_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_fdw_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_fdw_stmt__field_descriptors[3] = { { "fdwname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterFdwStmt, fdwname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterFdwStmt, n_func_options), offsetof(PgQuery__AlterFdwStmt, func_options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterFdwStmt, n_options), offsetof(PgQuery__AlterFdwStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_fdw_stmt__field_indices_by_name[] = { 0, /* field[0] = fdwname */ 1, /* field[1] = func_options */ 2, /* field[2] = options */ }; static const ProtobufCIntRange pg_query__alter_fdw_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_fdw_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterFdwStmt", "AlterFdwStmt", "PgQuery__AlterFdwStmt", "pg_query", sizeof(PgQuery__AlterFdwStmt), 3, pg_query__alter_fdw_stmt__field_descriptors, pg_query__alter_fdw_stmt__field_indices_by_name, 1, pg_query__alter_fdw_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_fdw_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_foreign_server_stmt__field_descriptors[6] = { { "servername", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignServerStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "servertype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignServerStmt, servertype), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "version", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignServerStmt, version), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fdwname", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignServerStmt, fdwname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignServerStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateForeignServerStmt, n_options), offsetof(PgQuery__CreateForeignServerStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_foreign_server_stmt__field_indices_by_name[] = { 3, /* field[3] = fdwname */ 4, /* field[4] = if_not_exists */ 5, /* field[5] = options */ 0, /* field[0] = servername */ 1, /* field[1] = servertype */ 2, /* field[2] = version */ }; static const ProtobufCIntRange pg_query__create_foreign_server_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__create_foreign_server_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateForeignServerStmt", "CreateForeignServerStmt", "PgQuery__CreateForeignServerStmt", "pg_query", sizeof(PgQuery__CreateForeignServerStmt), 6, pg_query__create_foreign_server_stmt__field_descriptors, pg_query__create_foreign_server_stmt__field_indices_by_name, 1, pg_query__create_foreign_server_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_foreign_server_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_foreign_server_stmt__field_descriptors[4] = { { "servername", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterForeignServerStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "version", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterForeignServerStmt, version), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterForeignServerStmt, n_options), offsetof(PgQuery__AlterForeignServerStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "has_version", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterForeignServerStmt, has_version), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_foreign_server_stmt__field_indices_by_name[] = { 3, /* field[3] = has_version */ 2, /* field[2] = options */ 0, /* field[0] = servername */ 1, /* field[1] = version */ }; static const ProtobufCIntRange pg_query__alter_foreign_server_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__alter_foreign_server_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterForeignServerStmt", "AlterForeignServerStmt", "PgQuery__AlterForeignServerStmt", "pg_query", sizeof(PgQuery__AlterForeignServerStmt), 4, pg_query__alter_foreign_server_stmt__field_descriptors, pg_query__alter_foreign_server_stmt__field_indices_by_name, 1, pg_query__alter_foreign_server_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_foreign_server_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_user_mapping_stmt__field_descriptors[4] = { { "user", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateUserMappingStmt, user), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "servername", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateUserMappingStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateUserMappingStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateUserMappingStmt, n_options), offsetof(PgQuery__CreateUserMappingStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_user_mapping_stmt__field_indices_by_name[] = { 2, /* field[2] = if_not_exists */ 3, /* field[3] = options */ 1, /* field[1] = servername */ 0, /* field[0] = user */ }; static const ProtobufCIntRange pg_query__create_user_mapping_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_user_mapping_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateUserMappingStmt", "CreateUserMappingStmt", "PgQuery__CreateUserMappingStmt", "pg_query", sizeof(PgQuery__CreateUserMappingStmt), 4, pg_query__create_user_mapping_stmt__field_descriptors, pg_query__create_user_mapping_stmt__field_indices_by_name, 1, pg_query__create_user_mapping_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_user_mapping_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_user_mapping_stmt__field_descriptors[3] = { { "user", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterUserMappingStmt, user), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "servername", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterUserMappingStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterUserMappingStmt, n_options), offsetof(PgQuery__AlterUserMappingStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_user_mapping_stmt__field_indices_by_name[] = { 2, /* field[2] = options */ 1, /* field[1] = servername */ 0, /* field[0] = user */ }; static const ProtobufCIntRange pg_query__alter_user_mapping_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_user_mapping_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterUserMappingStmt", "AlterUserMappingStmt", "PgQuery__AlterUserMappingStmt", "pg_query", sizeof(PgQuery__AlterUserMappingStmt), 3, pg_query__alter_user_mapping_stmt__field_descriptors, pg_query__alter_user_mapping_stmt__field_indices_by_name, 1, pg_query__alter_user_mapping_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_user_mapping_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__drop_user_mapping_stmt__field_descriptors[3] = { { "user", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DropUserMappingStmt, user), &pg_query__role_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "servername", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DropUserMappingStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropUserMappingStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_user_mapping_stmt__field_indices_by_name[] = { 2, /* field[2] = missing_ok */ 1, /* field[1] = servername */ 0, /* field[0] = user */ }; static const ProtobufCIntRange pg_query__drop_user_mapping_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__drop_user_mapping_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropUserMappingStmt", "DropUserMappingStmt", "PgQuery__DropUserMappingStmt", "pg_query", sizeof(PgQuery__DropUserMappingStmt), 3, pg_query__drop_user_mapping_stmt__field_descriptors, pg_query__drop_user_mapping_stmt__field_indices_by_name, 1, pg_query__drop_user_mapping_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_user_mapping_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_table_space_options_stmt__field_descriptors[3] = { { "tablespacename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableSpaceOptionsStmt, tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTableSpaceOptionsStmt, n_options), offsetof(PgQuery__AlterTableSpaceOptionsStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_reset", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableSpaceOptionsStmt, is_reset), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_table_space_options_stmt__field_indices_by_name[] = { 2, /* field[2] = is_reset */ 1, /* field[1] = options */ 0, /* field[0] = tablespacename */ }; static const ProtobufCIntRange pg_query__alter_table_space_options_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_table_space_options_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTableSpaceOptionsStmt", "AlterTableSpaceOptionsStmt", "PgQuery__AlterTableSpaceOptionsStmt", "pg_query", sizeof(PgQuery__AlterTableSpaceOptionsStmt), 3, pg_query__alter_table_space_options_stmt__field_descriptors, pg_query__alter_table_space_options_stmt__field_indices_by_name, 1, pg_query__alter_table_space_options_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_table_space_options_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_table_move_all_stmt__field_descriptors[5] = { { "orig_tablespacename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableMoveAllStmt, orig_tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "objtype", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableMoveAllStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "roles", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterTableMoveAllStmt, n_roles), offsetof(PgQuery__AlterTableMoveAllStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "new_tablespacename", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableMoveAllStmt, new_tablespacename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nowait", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterTableMoveAllStmt, nowait), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_table_move_all_stmt__field_indices_by_name[] = { 3, /* field[3] = new_tablespacename */ 4, /* field[4] = nowait */ 1, /* field[1] = objtype */ 0, /* field[0] = orig_tablespacename */ 2, /* field[2] = roles */ }; static const ProtobufCIntRange pg_query__alter_table_move_all_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__alter_table_move_all_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterTableMoveAllStmt", "AlterTableMoveAllStmt", "PgQuery__AlterTableMoveAllStmt", "pg_query", sizeof(PgQuery__AlterTableMoveAllStmt), 5, pg_query__alter_table_move_all_stmt__field_descriptors, pg_query__alter_table_move_all_stmt__field_indices_by_name, 1, pg_query__alter_table_move_all_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_table_move_all_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sec_label_stmt__field_descriptors[4] = { { "objtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SecLabelStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SecLabelStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "provider", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__SecLabelStmt, provider), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "label", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__SecLabelStmt, label), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sec_label_stmt__field_indices_by_name[] = { 3, /* field[3] = label */ 1, /* field[1] = object */ 0, /* field[0] = objtype */ 2, /* field[2] = provider */ }; static const ProtobufCIntRange pg_query__sec_label_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__sec_label_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SecLabelStmt", "SecLabelStmt", "PgQuery__SecLabelStmt", "pg_query", sizeof(PgQuery__SecLabelStmt), 4, pg_query__sec_label_stmt__field_descriptors, pg_query__sec_label_stmt__field_indices_by_name, 1, pg_query__sec_label_stmt__number_ranges, (ProtobufCMessageInit) pg_query__sec_label_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_foreign_table_stmt__field_descriptors[3] = { { "base_stmt", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignTableStmt, base_stmt), &pg_query__create_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "servername", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateForeignTableStmt, servername), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateForeignTableStmt, n_options), offsetof(PgQuery__CreateForeignTableStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_foreign_table_stmt__field_indices_by_name[] = { 0, /* field[0] = base_stmt */ 2, /* field[2] = options */ 1, /* field[1] = servername */ }; static const ProtobufCIntRange pg_query__create_foreign_table_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__create_foreign_table_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateForeignTableStmt", "CreateForeignTableStmt", "PgQuery__CreateForeignTableStmt", "pg_query", sizeof(PgQuery__CreateForeignTableStmt), 3, pg_query__create_foreign_table_stmt__field_descriptors, pg_query__create_foreign_table_stmt__field_indices_by_name, 1, pg_query__create_foreign_table_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_foreign_table_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__import_foreign_schema_stmt__field_descriptors[6] = { { "server_name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ImportForeignSchemaStmt, server_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "remote_schema", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ImportForeignSchemaStmt, remote_schema), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "local_schema", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ImportForeignSchemaStmt, local_schema), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "list_type", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ImportForeignSchemaStmt, list_type), &pg_query__import_foreign_schema_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_list", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ImportForeignSchemaStmt, n_table_list), offsetof(PgQuery__ImportForeignSchemaStmt, table_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ImportForeignSchemaStmt, n_options), offsetof(PgQuery__ImportForeignSchemaStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__import_foreign_schema_stmt__field_indices_by_name[] = { 3, /* field[3] = list_type */ 2, /* field[2] = local_schema */ 5, /* field[5] = options */ 1, /* field[1] = remote_schema */ 0, /* field[0] = server_name */ 4, /* field[4] = table_list */ }; static const ProtobufCIntRange pg_query__import_foreign_schema_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__import_foreign_schema_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ImportForeignSchemaStmt", "ImportForeignSchemaStmt", "PgQuery__ImportForeignSchemaStmt", "pg_query", sizeof(PgQuery__ImportForeignSchemaStmt), 6, pg_query__import_foreign_schema_stmt__field_descriptors, pg_query__import_foreign_schema_stmt__field_indices_by_name, 1, pg_query__import_foreign_schema_stmt__number_ranges, (ProtobufCMessageInit) pg_query__import_foreign_schema_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_extension_stmt__field_descriptors[3] = { { "extname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateExtensionStmt, extname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateExtensionStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateExtensionStmt, n_options), offsetof(PgQuery__CreateExtensionStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_extension_stmt__field_indices_by_name[] = { 0, /* field[0] = extname */ 1, /* field[1] = if_not_exists */ 2, /* field[2] = options */ }; static const ProtobufCIntRange pg_query__create_extension_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__create_extension_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateExtensionStmt", "CreateExtensionStmt", "PgQuery__CreateExtensionStmt", "pg_query", sizeof(PgQuery__CreateExtensionStmt), 3, pg_query__create_extension_stmt__field_descriptors, pg_query__create_extension_stmt__field_indices_by_name, 1, pg_query__create_extension_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_extension_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_extension_stmt__field_descriptors[2] = { { "extname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterExtensionStmt, extname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterExtensionStmt, n_options), offsetof(PgQuery__AlterExtensionStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_extension_stmt__field_indices_by_name[] = { 0, /* field[0] = extname */ 1, /* field[1] = options */ }; static const ProtobufCIntRange pg_query__alter_extension_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_extension_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterExtensionStmt", "AlterExtensionStmt", "PgQuery__AlterExtensionStmt", "pg_query", sizeof(PgQuery__AlterExtensionStmt), 2, pg_query__alter_extension_stmt__field_descriptors, pg_query__alter_extension_stmt__field_indices_by_name, 1, pg_query__alter_extension_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_extension_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_extension_contents_stmt__field_descriptors[4] = { { "extname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterExtensionContentsStmt, extname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "action", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AlterExtensionContentsStmt, action), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "objtype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterExtensionContentsStmt, objtype), &pg_query__object_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "object", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterExtensionContentsStmt, object), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_extension_contents_stmt__field_indices_by_name[] = { 1, /* field[1] = action */ 0, /* field[0] = extname */ 3, /* field[3] = object */ 2, /* field[2] = objtype */ }; static const ProtobufCIntRange pg_query__alter_extension_contents_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__alter_extension_contents_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterExtensionContentsStmt", "AlterExtensionContentsStmt", "PgQuery__AlterExtensionContentsStmt", "pg_query", sizeof(PgQuery__AlterExtensionContentsStmt), 4, pg_query__alter_extension_contents_stmt__field_descriptors, pg_query__alter_extension_contents_stmt__field_indices_by_name, 1, pg_query__alter_extension_contents_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_extension_contents_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_event_trig_stmt__field_descriptors[4] = { { "trigname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateEventTrigStmt, trigname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "eventname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateEventTrigStmt, eventname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "whenclause", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateEventTrigStmt, n_whenclause), offsetof(PgQuery__CreateEventTrigStmt, whenclause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcname", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateEventTrigStmt, n_funcname), offsetof(PgQuery__CreateEventTrigStmt, funcname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_event_trig_stmt__field_indices_by_name[] = { 1, /* field[1] = eventname */ 3, /* field[3] = funcname */ 0, /* field[0] = trigname */ 2, /* field[2] = whenclause */ }; static const ProtobufCIntRange pg_query__create_event_trig_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_event_trig_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateEventTrigStmt", "CreateEventTrigStmt", "PgQuery__CreateEventTrigStmt", "pg_query", sizeof(PgQuery__CreateEventTrigStmt), 4, pg_query__create_event_trig_stmt__field_descriptors, pg_query__create_event_trig_stmt__field_indices_by_name, 1, pg_query__create_event_trig_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_event_trig_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_event_trig_stmt__field_descriptors[2] = { { "trigname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEventTrigStmt, trigname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tgenabled", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterEventTrigStmt, tgenabled), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_event_trig_stmt__field_indices_by_name[] = { 1, /* field[1] = tgenabled */ 0, /* field[0] = trigname */ }; static const ProtobufCIntRange pg_query__alter_event_trig_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__alter_event_trig_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterEventTrigStmt", "AlterEventTrigStmt", "PgQuery__AlterEventTrigStmt", "pg_query", sizeof(PgQuery__AlterEventTrigStmt), 2, pg_query__alter_event_trig_stmt__field_descriptors, pg_query__alter_event_trig_stmt__field_indices_by_name, 1, pg_query__alter_event_trig_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_event_trig_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__refresh_mat_view_stmt__field_descriptors[3] = { { "concurrent", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RefreshMatViewStmt, concurrent), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "skip_data", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RefreshMatViewStmt, skip_data), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RefreshMatViewStmt, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__refresh_mat_view_stmt__field_indices_by_name[] = { 0, /* field[0] = concurrent */ 2, /* field[2] = relation */ 1, /* field[1] = skip_data */ }; static const ProtobufCIntRange pg_query__refresh_mat_view_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__refresh_mat_view_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RefreshMatViewStmt", "RefreshMatViewStmt", "PgQuery__RefreshMatViewStmt", "pg_query", sizeof(PgQuery__RefreshMatViewStmt), 3, pg_query__refresh_mat_view_stmt__field_descriptors, pg_query__refresh_mat_view_stmt__field_indices_by_name, 1, pg_query__refresh_mat_view_stmt__number_ranges, (ProtobufCMessageInit) pg_query__refresh_mat_view_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__replica_identity_stmt__field_descriptors[2] = { { "identity_type", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ReplicaIdentityStmt, identity_type), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ReplicaIdentityStmt, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__replica_identity_stmt__field_indices_by_name[] = { 0, /* field[0] = identity_type */ 1, /* field[1] = name */ }; static const ProtobufCIntRange pg_query__replica_identity_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__replica_identity_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ReplicaIdentityStmt", "ReplicaIdentityStmt", "PgQuery__ReplicaIdentityStmt", "pg_query", sizeof(PgQuery__ReplicaIdentityStmt), 2, pg_query__replica_identity_stmt__field_descriptors, pg_query__replica_identity_stmt__field_indices_by_name, 1, pg_query__replica_identity_stmt__number_ranges, (ProtobufCMessageInit) pg_query__replica_identity_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_system_stmt__field_descriptors[1] = { { "setstmt", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSystemStmt, setstmt), &pg_query__variable_set_stmt__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_system_stmt__field_indices_by_name[] = { 0, /* field[0] = setstmt */ }; static const ProtobufCIntRange pg_query__alter_system_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__alter_system_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterSystemStmt", "AlterSystemStmt", "PgQuery__AlterSystemStmt", "pg_query", sizeof(PgQuery__AlterSystemStmt), 1, pg_query__alter_system_stmt__field_descriptors, pg_query__alter_system_stmt__field_indices_by_name, 1, pg_query__alter_system_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_system_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_policy_stmt__field_descriptors[7] = { { "policy_name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, policy_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, table), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cmd_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, cmd_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "permissive", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, permissive), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "roles", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePolicyStmt, n_roles), offsetof(PgQuery__CreatePolicyStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "qual", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, qual), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_check", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePolicyStmt, with_check), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_policy_stmt__field_indices_by_name[] = { 2, /* field[2] = cmd_name */ 3, /* field[3] = permissive */ 0, /* field[0] = policy_name */ 5, /* field[5] = qual */ 4, /* field[4] = roles */ 1, /* field[1] = table */ 6, /* field[6] = with_check */ }; static const ProtobufCIntRange pg_query__create_policy_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__create_policy_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreatePolicyStmt", "CreatePolicyStmt", "PgQuery__CreatePolicyStmt", "pg_query", sizeof(PgQuery__CreatePolicyStmt), 7, pg_query__create_policy_stmt__field_descriptors, pg_query__create_policy_stmt__field_indices_by_name, 1, pg_query__create_policy_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_policy_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_policy_stmt__field_descriptors[5] = { { "policy_name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPolicyStmt, policy_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPolicyStmt, table), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "roles", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterPolicyStmt, n_roles), offsetof(PgQuery__AlterPolicyStmt, roles), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "qual", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPolicyStmt, qual), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "with_check", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPolicyStmt, with_check), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_policy_stmt__field_indices_by_name[] = { 0, /* field[0] = policy_name */ 3, /* field[3] = qual */ 2, /* field[2] = roles */ 1, /* field[1] = table */ 4, /* field[4] = with_check */ }; static const ProtobufCIntRange pg_query__alter_policy_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__alter_policy_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterPolicyStmt", "AlterPolicyStmt", "PgQuery__AlterPolicyStmt", "pg_query", sizeof(PgQuery__AlterPolicyStmt), 5, pg_query__alter_policy_stmt__field_descriptors, pg_query__alter_policy_stmt__field_indices_by_name, 1, pg_query__alter_policy_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_policy_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_transform_stmt__field_descriptors[5] = { { "replace", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTransformStmt, replace), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTransformStmt, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lang", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTransformStmt, lang), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fromsql", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTransformStmt, fromsql), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tosql", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateTransformStmt, tosql), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_transform_stmt__field_indices_by_name[] = { 3, /* field[3] = fromsql */ 2, /* field[2] = lang */ 0, /* field[0] = replace */ 4, /* field[4] = tosql */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__create_transform_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__create_transform_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateTransformStmt", "CreateTransformStmt", "PgQuery__CreateTransformStmt", "pg_query", sizeof(PgQuery__CreateTransformStmt), 5, pg_query__create_transform_stmt__field_descriptors, pg_query__create_transform_stmt__field_indices_by_name, 1, pg_query__create_transform_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_transform_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_am_stmt__field_descriptors[3] = { { "amname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateAmStmt, amname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "handler_name", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateAmStmt, n_handler_name), offsetof(PgQuery__CreateAmStmt, handler_name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "amtype", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateAmStmt, amtype), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_am_stmt__field_indices_by_name[] = { 0, /* field[0] = amname */ 2, /* field[2] = amtype */ 1, /* field[1] = handler_name */ }; static const ProtobufCIntRange pg_query__create_am_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__create_am_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateAmStmt", "CreateAmStmt", "PgQuery__CreateAmStmt", "pg_query", sizeof(PgQuery__CreateAmStmt), 3, pg_query__create_am_stmt__field_descriptors, pg_query__create_am_stmt__field_indices_by_name, 1, pg_query__create_am_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_am_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_publication_stmt__field_descriptors[4] = { { "pubname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePublicationStmt, pubname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePublicationStmt, n_options), offsetof(PgQuery__CreatePublicationStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tables", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreatePublicationStmt, n_tables), offsetof(PgQuery__CreatePublicationStmt, tables), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "for_all_tables", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreatePublicationStmt, for_all_tables), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_publication_stmt__field_indices_by_name[] = { 3, /* field[3] = for_all_tables */ 1, /* field[1] = options */ 0, /* field[0] = pubname */ 2, /* field[2] = tables */ }; static const ProtobufCIntRange pg_query__create_publication_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_publication_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreatePublicationStmt", "CreatePublicationStmt", "PgQuery__CreatePublicationStmt", "pg_query", sizeof(PgQuery__CreatePublicationStmt), 4, pg_query__create_publication_stmt__field_descriptors, pg_query__create_publication_stmt__field_indices_by_name, 1, pg_query__create_publication_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_publication_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_publication_stmt__field_descriptors[5] = { { "pubname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPublicationStmt, pubname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterPublicationStmt, n_options), offsetof(PgQuery__AlterPublicationStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tables", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterPublicationStmt, n_tables), offsetof(PgQuery__AlterPublicationStmt, tables), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "for_all_tables", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPublicationStmt, for_all_tables), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "table_action", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterPublicationStmt, table_action), &pg_query__def_elem_action__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_publication_stmt__field_indices_by_name[] = { 3, /* field[3] = for_all_tables */ 1, /* field[1] = options */ 0, /* field[0] = pubname */ 4, /* field[4] = table_action */ 2, /* field[2] = tables */ }; static const ProtobufCIntRange pg_query__alter_publication_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__alter_publication_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterPublicationStmt", "AlterPublicationStmt", "PgQuery__AlterPublicationStmt", "pg_query", sizeof(PgQuery__AlterPublicationStmt), 5, pg_query__alter_publication_stmt__field_descriptors, pg_query__alter_publication_stmt__field_indices_by_name, 1, pg_query__alter_publication_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_publication_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_subscription_stmt__field_descriptors[4] = { { "subname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSubscriptionStmt, subname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "conninfo", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateSubscriptionStmt, conninfo), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "publication", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateSubscriptionStmt, n_publication), offsetof(PgQuery__CreateSubscriptionStmt, publication), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateSubscriptionStmt, n_options), offsetof(PgQuery__CreateSubscriptionStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_subscription_stmt__field_indices_by_name[] = { 1, /* field[1] = conninfo */ 3, /* field[3] = options */ 2, /* field[2] = publication */ 0, /* field[0] = subname */ }; static const ProtobufCIntRange pg_query__create_subscription_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__create_subscription_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateSubscriptionStmt", "CreateSubscriptionStmt", "PgQuery__CreateSubscriptionStmt", "pg_query", sizeof(PgQuery__CreateSubscriptionStmt), 4, pg_query__create_subscription_stmt__field_descriptors, pg_query__create_subscription_stmt__field_indices_by_name, 1, pg_query__create_subscription_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_subscription_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_subscription_stmt__field_descriptors[5] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSubscriptionStmt, kind), &pg_query__alter_subscription_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSubscriptionStmt, subname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "conninfo", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AlterSubscriptionStmt, conninfo), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "publication", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterSubscriptionStmt, n_publication), offsetof(PgQuery__AlterSubscriptionStmt, publication), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterSubscriptionStmt, n_options), offsetof(PgQuery__AlterSubscriptionStmt, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_subscription_stmt__field_indices_by_name[] = { 2, /* field[2] = conninfo */ 0, /* field[0] = kind */ 4, /* field[4] = options */ 3, /* field[3] = publication */ 1, /* field[1] = subname */ }; static const ProtobufCIntRange pg_query__alter_subscription_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__alter_subscription_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterSubscriptionStmt", "AlterSubscriptionStmt", "PgQuery__AlterSubscriptionStmt", "pg_query", sizeof(PgQuery__AlterSubscriptionStmt), 5, pg_query__alter_subscription_stmt__field_descriptors, pg_query__alter_subscription_stmt__field_indices_by_name, 1, pg_query__alter_subscription_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_subscription_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__drop_subscription_stmt__field_descriptors[3] = { { "subname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DropSubscriptionStmt, subname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__DropSubscriptionStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "behavior", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DropSubscriptionStmt, behavior), &pg_query__drop_behavior__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__drop_subscription_stmt__field_indices_by_name[] = { 2, /* field[2] = behavior */ 1, /* field[1] = missing_ok */ 0, /* field[0] = subname */ }; static const ProtobufCIntRange pg_query__drop_subscription_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__drop_subscription_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DropSubscriptionStmt", "DropSubscriptionStmt", "PgQuery__DropSubscriptionStmt", "pg_query", sizeof(PgQuery__DropSubscriptionStmt), 3, pg_query__drop_subscription_stmt__field_descriptors, pg_query__drop_subscription_stmt__field_indices_by_name, 1, pg_query__drop_subscription_stmt__number_ranges, (ProtobufCMessageInit) pg_query__drop_subscription_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_stats_stmt__field_descriptors[6] = { { "defnames", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStatsStmt, n_defnames), offsetof(PgQuery__CreateStatsStmt, defnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stat_types", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStatsStmt, n_stat_types), offsetof(PgQuery__CreateStatsStmt, stat_types), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "exprs", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStatsStmt, n_exprs), offsetof(PgQuery__CreateStatsStmt, exprs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relations", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateStatsStmt, n_relations), offsetof(PgQuery__CreateStatsStmt, relations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stxcomment", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStatsStmt, stxcomment), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "if_not_exists", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CreateStatsStmt, if_not_exists), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_stats_stmt__field_indices_by_name[] = { 0, /* field[0] = defnames */ 2, /* field[2] = exprs */ 5, /* field[5] = if_not_exists */ 3, /* field[3] = relations */ 1, /* field[1] = stat_types */ 4, /* field[4] = stxcomment */ }; static const ProtobufCIntRange pg_query__create_stats_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__create_stats_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateStatsStmt", "CreateStatsStmt", "PgQuery__CreateStatsStmt", "pg_query", sizeof(PgQuery__CreateStatsStmt), 6, pg_query__create_stats_stmt__field_descriptors, pg_query__create_stats_stmt__field_indices_by_name, 1, pg_query__create_stats_stmt__number_ranges, (ProtobufCMessageInit) pg_query__create_stats_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_collation_stmt__field_descriptors[1] = { { "collname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterCollationStmt, n_collname), offsetof(PgQuery__AlterCollationStmt, collname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_collation_stmt__field_indices_by_name[] = { 0, /* field[0] = collname */ }; static const ProtobufCIntRange pg_query__alter_collation_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__alter_collation_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterCollationStmt", "AlterCollationStmt", "PgQuery__AlterCollationStmt", "pg_query", sizeof(PgQuery__AlterCollationStmt), 1, pg_query__alter_collation_stmt__field_descriptors, pg_query__alter_collation_stmt__field_indices_by_name, 1, pg_query__alter_collation_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_collation_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__call_stmt__field_descriptors[2] = { { "funccall", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CallStmt, funccall), &pg_query__func_call__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcexpr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CallStmt, funcexpr), &pg_query__func_expr__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__call_stmt__field_indices_by_name[] = { 0, /* field[0] = funccall */ 1, /* field[1] = funcexpr */ }; static const ProtobufCIntRange pg_query__call_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__call_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CallStmt", "CallStmt", "PgQuery__CallStmt", "pg_query", sizeof(PgQuery__CallStmt), 2, pg_query__call_stmt__field_descriptors, pg_query__call_stmt__field_indices_by_name, 1, pg_query__call_stmt__number_ranges, (ProtobufCMessageInit) pg_query__call_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__alter_stats_stmt__field_descriptors[3] = { { "defnames", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AlterStatsStmt, n_defnames), offsetof(PgQuery__AlterStatsStmt, defnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "stxstattarget", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AlterStatsStmt, stxstattarget), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "missing_ok", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AlterStatsStmt, missing_ok), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__alter_stats_stmt__field_indices_by_name[] = { 0, /* field[0] = defnames */ 2, /* field[2] = missing_ok */ 1, /* field[1] = stxstattarget */ }; static const ProtobufCIntRange pg_query__alter_stats_stmt__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__alter_stats_stmt__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AlterStatsStmt", "AlterStatsStmt", "PgQuery__AlterStatsStmt", "pg_query", sizeof(PgQuery__AlterStatsStmt), 3, pg_query__alter_stats_stmt__field_descriptors, pg_query__alter_stats_stmt__field_indices_by_name, 1, pg_query__alter_stats_stmt__number_ranges, (ProtobufCMessageInit) pg_query__alter_stats_stmt__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__a__expr__field_descriptors[5] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__AExpr, kind), &pg_query__a__expr__kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AExpr, n_name), offsetof(PgQuery__AExpr, name), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lexpr", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AExpr, lexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rexpr", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AExpr, rexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__a__expr__field_indices_by_name[] = { 0, /* field[0] = kind */ 2, /* field[2] = lexpr */ 4, /* field[4] = location */ 1, /* field[1] = name */ 3, /* field[3] = rexpr */ }; static const ProtobufCIntRange pg_query__a__expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__a__expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.A_Expr", "AExpr", "PgQuery__AExpr", "pg_query", sizeof(PgQuery__AExpr), 5, pg_query__a__expr__field_descriptors, pg_query__a__expr__field_indices_by_name, 1, pg_query__a__expr__number_ranges, (ProtobufCMessageInit) pg_query__a__expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__column_ref__field_descriptors[2] = { { "fields", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ColumnRef, n_fields), offsetof(PgQuery__ColumnRef, fields), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnRef, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__column_ref__field_indices_by_name[] = { 0, /* field[0] = fields */ 1, /* field[1] = location */ }; static const ProtobufCIntRange pg_query__column_ref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__column_ref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ColumnRef", "ColumnRef", "PgQuery__ColumnRef", "pg_query", sizeof(PgQuery__ColumnRef), 2, pg_query__column_ref__field_descriptors, pg_query__column_ref__field_indices_by_name, 1, pg_query__column_ref__number_ranges, (ProtobufCMessageInit) pg_query__column_ref__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__param_ref__field_descriptors[2] = { { "number", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ParamRef, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ParamRef, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__param_ref__field_indices_by_name[] = { 1, /* field[1] = location */ 0, /* field[0] = number */ }; static const ProtobufCIntRange pg_query__param_ref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__param_ref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ParamRef", "ParamRef", "PgQuery__ParamRef", "pg_query", sizeof(PgQuery__ParamRef), 2, pg_query__param_ref__field_descriptors, pg_query__param_ref__field_indices_by_name, 1, pg_query__param_ref__number_ranges, (ProtobufCMessageInit) pg_query__param_ref__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__a__const__field_descriptors[2] = { { "val", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AConst, val), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AConst, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__a__const__field_indices_by_name[] = { 1, /* field[1] = location */ 0, /* field[0] = val */ }; static const ProtobufCIntRange pg_query__a__const__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__a__const__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.A_Const", "AConst", "PgQuery__AConst", "pg_query", sizeof(PgQuery__AConst), 2, pg_query__a__const__field_descriptors, pg_query__a__const__field_indices_by_name, 1, pg_query__a__const__number_ranges, (ProtobufCMessageInit) pg_query__a__const__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__func_call__field_descriptors[10] = { { "funcname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__FuncCall, n_funcname), offsetof(PgQuery__FuncCall, funcname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__FuncCall, n_args), offsetof(PgQuery__FuncCall, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "agg_order", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__FuncCall, n_agg_order), offsetof(PgQuery__FuncCall, agg_order), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "agg_filter", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FuncCall, agg_filter), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "agg_within_group", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__FuncCall, agg_within_group), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "agg_star", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__FuncCall, agg_star), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "agg_distinct", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__FuncCall, agg_distinct), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "func_variadic", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__FuncCall, func_variadic), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "over", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FuncCall, over), &pg_query__window_def__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__FuncCall, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__func_call__field_indices_by_name[] = { 6, /* field[6] = agg_distinct */ 3, /* field[3] = agg_filter */ 2, /* field[2] = agg_order */ 5, /* field[5] = agg_star */ 4, /* field[4] = agg_within_group */ 1, /* field[1] = args */ 7, /* field[7] = func_variadic */ 0, /* field[0] = funcname */ 9, /* field[9] = location */ 8, /* field[8] = over */ }; static const ProtobufCIntRange pg_query__func_call__number_ranges[1 + 1] = { { 1, 0 }, { 0, 10 } }; const ProtobufCMessageDescriptor pg_query__func_call__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FuncCall", "FuncCall", "PgQuery__FuncCall", "pg_query", sizeof(PgQuery__FuncCall), 10, pg_query__func_call__field_descriptors, pg_query__func_call__field_indices_by_name, 1, pg_query__func_call__number_ranges, (ProtobufCMessageInit) pg_query__func_call__init, NULL,NULL,NULL /* reserved[123] */ }; #define pg_query__a__star__field_descriptors NULL #define pg_query__a__star__field_indices_by_name NULL #define pg_query__a__star__number_ranges NULL const ProtobufCMessageDescriptor pg_query__a__star__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.A_Star", "AStar", "PgQuery__AStar", "pg_query", sizeof(PgQuery__AStar), 0, pg_query__a__star__field_descriptors, pg_query__a__star__field_indices_by_name, 0, pg_query__a__star__number_ranges, (ProtobufCMessageInit) pg_query__a__star__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__a__indices__field_descriptors[3] = { { "is_slice", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__AIndices, is_slice), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lidx", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AIndices, lidx), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "uidx", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AIndices, uidx), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__a__indices__field_indices_by_name[] = { 0, /* field[0] = is_slice */ 1, /* field[1] = lidx */ 2, /* field[2] = uidx */ }; static const ProtobufCIntRange pg_query__a__indices__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__a__indices__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.A_Indices", "AIndices", "PgQuery__AIndices", "pg_query", sizeof(PgQuery__AIndices), 3, pg_query__a__indices__field_descriptors, pg_query__a__indices__field_indices_by_name, 1, pg_query__a__indices__number_ranges, (ProtobufCMessageInit) pg_query__a__indices__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__a__indirection__field_descriptors[2] = { { "arg", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__AIndirection, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "indirection", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AIndirection, n_indirection), offsetof(PgQuery__AIndirection, indirection), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__a__indirection__field_indices_by_name[] = { 0, /* field[0] = arg */ 1, /* field[1] = indirection */ }; static const ProtobufCIntRange pg_query__a__indirection__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__a__indirection__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.A_Indirection", "AIndirection", "PgQuery__AIndirection", "pg_query", sizeof(PgQuery__AIndirection), 2, pg_query__a__indirection__field_descriptors, pg_query__a__indirection__field_indices_by_name, 1, pg_query__a__indirection__number_ranges, (ProtobufCMessageInit) pg_query__a__indirection__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__a__array_expr__field_descriptors[2] = { { "elements", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AArrayExpr, n_elements), offsetof(PgQuery__AArrayExpr, elements), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__AArrayExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__a__array_expr__field_indices_by_name[] = { 0, /* field[0] = elements */ 1, /* field[1] = location */ }; static const ProtobufCIntRange pg_query__a__array_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__a__array_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.A_ArrayExpr", "AArrayExpr", "PgQuery__AArrayExpr", "pg_query", sizeof(PgQuery__AArrayExpr), 2, pg_query__a__array_expr__field_descriptors, pg_query__a__array_expr__field_indices_by_name, 1, pg_query__a__array_expr__number_ranges, (ProtobufCMessageInit) pg_query__a__array_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__res_target__field_descriptors[4] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ResTarget, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "indirection", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ResTarget, n_indirection), offsetof(PgQuery__ResTarget, indirection), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "val", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ResTarget, val), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ResTarget, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__res_target__field_indices_by_name[] = { 1, /* field[1] = indirection */ 3, /* field[3] = location */ 0, /* field[0] = name */ 2, /* field[2] = val */ }; static const ProtobufCIntRange pg_query__res_target__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__res_target__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ResTarget", "ResTarget", "PgQuery__ResTarget", "pg_query", sizeof(PgQuery__ResTarget), 4, pg_query__res_target__field_descriptors, pg_query__res_target__field_indices_by_name, 1, pg_query__res_target__number_ranges, (ProtobufCMessageInit) pg_query__res_target__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__multi_assign_ref__field_descriptors[3] = { { "source", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__MultiAssignRef, source), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colno", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__MultiAssignRef, colno), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ncolumns", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__MultiAssignRef, ncolumns), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__multi_assign_ref__field_indices_by_name[] = { 1, /* field[1] = colno */ 2, /* field[2] = ncolumns */ 0, /* field[0] = source */ }; static const ProtobufCIntRange pg_query__multi_assign_ref__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__multi_assign_ref__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.MultiAssignRef", "MultiAssignRef", "PgQuery__MultiAssignRef", "pg_query", sizeof(PgQuery__MultiAssignRef), 3, pg_query__multi_assign_ref__field_descriptors, pg_query__multi_assign_ref__field_indices_by_name, 1, pg_query__multi_assign_ref__number_ranges, (ProtobufCMessageInit) pg_query__multi_assign_ref__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__type_cast__field_descriptors[3] = { { "arg", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TypeCast, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TypeCast, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TypeCast, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__type_cast__field_indices_by_name[] = { 0, /* field[0] = arg */ 2, /* field[2] = location */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__type_cast__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__type_cast__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TypeCast", "TypeCast", "PgQuery__TypeCast", "pg_query", sizeof(PgQuery__TypeCast), 3, pg_query__type_cast__field_descriptors, pg_query__type_cast__field_indices_by_name, 1, pg_query__type_cast__number_ranges, (ProtobufCMessageInit) pg_query__type_cast__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__collate_clause__field_descriptors[3] = { { "arg", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CollateClause, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collname", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CollateClause, n_collname), offsetof(PgQuery__CollateClause, collname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CollateClause, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__collate_clause__field_indices_by_name[] = { 0, /* field[0] = arg */ 1, /* field[1] = collname */ 2, /* field[2] = location */ }; static const ProtobufCIntRange pg_query__collate_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__collate_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CollateClause", "CollateClause", "PgQuery__CollateClause", "pg_query", sizeof(PgQuery__CollateClause), 3, pg_query__collate_clause__field_descriptors, pg_query__collate_clause__field_indices_by_name, 1, pg_query__collate_clause__number_ranges, (ProtobufCMessageInit) pg_query__collate_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sort_by__field_descriptors[5] = { { "node", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__SortBy, node), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sortby_dir", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SortBy, sortby_dir), &pg_query__sort_by_dir__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sortby_nulls", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__SortBy, sortby_nulls), &pg_query__sort_by_nulls__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "use_op", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__SortBy, n_use_op), offsetof(PgQuery__SortBy, use_op), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__SortBy, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sort_by__field_indices_by_name[] = { 4, /* field[4] = location */ 0, /* field[0] = node */ 1, /* field[1] = sortby_dir */ 2, /* field[2] = sortby_nulls */ 3, /* field[3] = use_op */ }; static const ProtobufCIntRange pg_query__sort_by__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__sort_by__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SortBy", "SortBy", "PgQuery__SortBy", "pg_query", sizeof(PgQuery__SortBy), 5, pg_query__sort_by__field_descriptors, pg_query__sort_by__field_indices_by_name, 1, pg_query__sort_by__number_ranges, (ProtobufCMessageInit) pg_query__sort_by__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__window_def__field_descriptors[8] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, refname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_clause", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WindowDef, n_partition_clause), offsetof(PgQuery__WindowDef, partition_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "order_clause", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WindowDef, n_order_clause), offsetof(PgQuery__WindowDef, order_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "frame_options", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, frame_options), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "start_offset", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, start_offset), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "end_offset", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, end_offset), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowDef, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__window_def__field_indices_by_name[] = { 6, /* field[6] = end_offset */ 4, /* field[4] = frame_options */ 7, /* field[7] = location */ 0, /* field[0] = name */ 3, /* field[3] = order_clause */ 2, /* field[2] = partition_clause */ 1, /* field[1] = refname */ 5, /* field[5] = start_offset */ }; static const ProtobufCIntRange pg_query__window_def__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__window_def__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WindowDef", "WindowDef", "PgQuery__WindowDef", "pg_query", sizeof(PgQuery__WindowDef), 8, pg_query__window_def__field_descriptors, pg_query__window_def__field_indices_by_name, 1, pg_query__window_def__number_ranges, (ProtobufCMessageInit) pg_query__window_def__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_subselect__field_descriptors[3] = { { "lateral", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeSubselect, lateral), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subquery", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeSubselect, subquery), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alias", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeSubselect, alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_subselect__field_indices_by_name[] = { 2, /* field[2] = alias */ 0, /* field[0] = lateral */ 1, /* field[1] = subquery */ }; static const ProtobufCIntRange pg_query__range_subselect__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__range_subselect__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeSubselect", "RangeSubselect", "PgQuery__RangeSubselect", "pg_query", sizeof(PgQuery__RangeSubselect), 3, pg_query__range_subselect__field_descriptors, pg_query__range_subselect__field_indices_by_name, 1, pg_query__range_subselect__number_ranges, (ProtobufCMessageInit) pg_query__range_subselect__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_function__field_descriptors[6] = { { "lateral", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeFunction, lateral), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ordinality", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeFunction, ordinality), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_rowsfrom", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeFunction, is_rowsfrom), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "functions", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeFunction, n_functions), offsetof(PgQuery__RangeFunction, functions), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alias", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeFunction, alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coldeflist", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeFunction, n_coldeflist), offsetof(PgQuery__RangeFunction, coldeflist), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_function__field_indices_by_name[] = { 4, /* field[4] = alias */ 5, /* field[5] = coldeflist */ 3, /* field[3] = functions */ 2, /* field[2] = is_rowsfrom */ 0, /* field[0] = lateral */ 1, /* field[1] = ordinality */ }; static const ProtobufCIntRange pg_query__range_function__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__range_function__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeFunction", "RangeFunction", "PgQuery__RangeFunction", "pg_query", sizeof(PgQuery__RangeFunction), 6, pg_query__range_function__field_descriptors, pg_query__range_function__field_indices_by_name, 1, pg_query__range_function__number_ranges, (ProtobufCMessageInit) pg_query__range_function__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_table_sample__field_descriptors[5] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableSample, relation), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "method", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTableSample, n_method), offsetof(PgQuery__RangeTableSample, method), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTableSample, n_args), offsetof(PgQuery__RangeTableSample, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "repeatable", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableSample, repeatable), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableSample, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_table_sample__field_indices_by_name[] = { 2, /* field[2] = args */ 4, /* field[4] = location */ 1, /* field[1] = method */ 0, /* field[0] = relation */ 3, /* field[3] = repeatable */ }; static const ProtobufCIntRange pg_query__range_table_sample__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__range_table_sample__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTableSample", "RangeTableSample", "PgQuery__RangeTableSample", "pg_query", sizeof(PgQuery__RangeTableSample), 5, pg_query__range_table_sample__field_descriptors, pg_query__range_table_sample__field_indices_by_name, 1, pg_query__range_table_sample__number_ranges, (ProtobufCMessageInit) pg_query__range_table_sample__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_table_func__field_descriptors[7] = { { "lateral", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFunc, lateral), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "docexpr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFunc, docexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rowexpr", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFunc, rowexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "namespaces", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTableFunc, n_namespaces), offsetof(PgQuery__RangeTableFunc, namespaces), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "columns", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTableFunc, n_columns), offsetof(PgQuery__RangeTableFunc, columns), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alias", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFunc, alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFunc, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_table_func__field_indices_by_name[] = { 5, /* field[5] = alias */ 4, /* field[4] = columns */ 1, /* field[1] = docexpr */ 0, /* field[0] = lateral */ 6, /* field[6] = location */ 3, /* field[3] = namespaces */ 2, /* field[2] = rowexpr */ }; static const ProtobufCIntRange pg_query__range_table_func__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__range_table_func__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTableFunc", "RangeTableFunc", "PgQuery__RangeTableFunc", "pg_query", sizeof(PgQuery__RangeTableFunc), 7, pg_query__range_table_func__field_descriptors, pg_query__range_table_func__field_indices_by_name, 1, pg_query__range_table_func__number_ranges, (ProtobufCMessageInit) pg_query__range_table_func__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_table_func_col__field_descriptors[7] = { { "colname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, colname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "for_ordinality", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, for_ordinality), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_not_null", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, is_not_null), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colexpr", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, colexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coldefexpr", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, coldefexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTableFuncCol, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_table_func_col__field_indices_by_name[] = { 5, /* field[5] = coldefexpr */ 4, /* field[4] = colexpr */ 0, /* field[0] = colname */ 2, /* field[2] = for_ordinality */ 3, /* field[3] = is_not_null */ 6, /* field[6] = location */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__range_table_func_col__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__range_table_func_col__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTableFuncCol", "RangeTableFuncCol", "PgQuery__RangeTableFuncCol", "pg_query", sizeof(PgQuery__RangeTableFuncCol), 7, pg_query__range_table_func_col__field_descriptors, pg_query__range_table_func_col__field_indices_by_name, 1, pg_query__range_table_func_col__number_ranges, (ProtobufCMessageInit) pg_query__range_table_func_col__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__type_name__field_descriptors[8] = { { "names", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TypeName, n_names), offsetof(PgQuery__TypeName, names), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_oid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TypeName, type_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "setof", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TypeName, setof), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pct_type", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TypeName, pct_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "typmods", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TypeName, n_typmods), offsetof(PgQuery__TypeName, typmods), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "typemod", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TypeName, typemod), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "array_bounds", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TypeName, n_array_bounds), offsetof(PgQuery__TypeName, array_bounds), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__TypeName, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__type_name__field_indices_by_name[] = { 6, /* field[6] = array_bounds */ 7, /* field[7] = location */ 0, /* field[0] = names */ 3, /* field[3] = pct_type */ 2, /* field[2] = setof */ 1, /* field[1] = type_oid */ 5, /* field[5] = typemod */ 4, /* field[4] = typmods */ }; static const ProtobufCIntRange pg_query__type_name__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__type_name__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TypeName", "TypeName", "PgQuery__TypeName", "pg_query", sizeof(PgQuery__TypeName), 8, pg_query__type_name__field_descriptors, pg_query__type_name__field_indices_by_name, 1, pg_query__type_name__number_ranges, (ProtobufCMessageInit) pg_query__type_name__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__column_def__field_descriptors[17] = { { "colname", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, colname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inhcount", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, inhcount), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_local", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, is_local), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_not_null", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, is_not_null), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_from_type", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, is_from_type), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "storage", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, storage), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "raw_default", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, raw_default), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cooked_default", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, cooked_default), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "identity", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, identity), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "identity_sequence", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, identity_sequence), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "generated", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, generated), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coll_clause", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, coll_clause), &pg_query__collate_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coll_oid", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, coll_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "constraints", 15, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ColumnDef, n_constraints), offsetof(PgQuery__ColumnDef, constraints), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fdwoptions", 16, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ColumnDef, n_fdwoptions), offsetof(PgQuery__ColumnDef, fdwoptions), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ColumnDef, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__column_def__field_indices_by_name[] = { 12, /* field[12] = coll_clause */ 13, /* field[13] = coll_oid */ 0, /* field[0] = colname */ 14, /* field[14] = constraints */ 8, /* field[8] = cooked_default */ 15, /* field[15] = fdwoptions */ 11, /* field[11] = generated */ 9, /* field[9] = identity */ 10, /* field[10] = identity_sequence */ 2, /* field[2] = inhcount */ 5, /* field[5] = is_from_type */ 3, /* field[3] = is_local */ 4, /* field[4] = is_not_null */ 16, /* field[16] = location */ 7, /* field[7] = raw_default */ 6, /* field[6] = storage */ 1, /* field[1] = type_name */ }; static const ProtobufCIntRange pg_query__column_def__number_ranges[1 + 1] = { { 1, 0 }, { 0, 17 } }; const ProtobufCMessageDescriptor pg_query__column_def__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ColumnDef", "ColumnDef", "PgQuery__ColumnDef", "pg_query", sizeof(PgQuery__ColumnDef), 17, pg_query__column_def__field_descriptors, pg_query__column_def__field_indices_by_name, 1, pg_query__column_def__number_ranges, (ProtobufCMessageInit) pg_query__column_def__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__index_elem__field_descriptors[8] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__IndexElem, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__IndexElem, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "indexcolname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__IndexElem, indexcolname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IndexElem, n_collation), offsetof(PgQuery__IndexElem, collation), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opclass", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IndexElem, n_opclass), offsetof(PgQuery__IndexElem, opclass), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opclassopts", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__IndexElem, n_opclassopts), offsetof(PgQuery__IndexElem, opclassopts), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ordering", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__IndexElem, ordering), &pg_query__sort_by_dir__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nulls_ordering", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__IndexElem, nulls_ordering), &pg_query__sort_by_nulls__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__index_elem__field_indices_by_name[] = { 3, /* field[3] = collation */ 1, /* field[1] = expr */ 2, /* field[2] = indexcolname */ 0, /* field[0] = name */ 7, /* field[7] = nulls_ordering */ 4, /* field[4] = opclass */ 5, /* field[5] = opclassopts */ 6, /* field[6] = ordering */ }; static const ProtobufCIntRange pg_query__index_elem__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__index_elem__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.IndexElem", "IndexElem", "PgQuery__IndexElem", "pg_query", sizeof(PgQuery__IndexElem), 8, pg_query__index_elem__field_descriptors, pg_query__index_elem__field_indices_by_name, 1, pg_query__index_elem__number_ranges, (ProtobufCMessageInit) pg_query__index_elem__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__constraint__field_descriptors[28] = { { "contype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, contype), &pg_query__constr_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "conname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, conname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "deferrable", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, deferrable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "initdeferred", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, initdeferred), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_no_inherit", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, is_no_inherit), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "raw_expr", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, raw_expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cooked_expr", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, cooked_expr), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "generated_when", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, generated_when), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "keys", 10, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Constraint, n_keys), offsetof(PgQuery__Constraint, keys), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "including", 11, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Constraint, n_including), offsetof(PgQuery__Constraint, including), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "exclusions", 12, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Constraint, n_exclusions), offsetof(PgQuery__Constraint, exclusions), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 13, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Constraint, n_options), offsetof(PgQuery__Constraint, options), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "indexname", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, indexname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "indexspace", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, indexspace), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "reset_default_tblspc", 16, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, reset_default_tblspc), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "access_method", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, access_method), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 18, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pktable", 19, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, pktable), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fk_attrs", 20, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Constraint, n_fk_attrs), offsetof(PgQuery__Constraint, fk_attrs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pk_attrs", 21, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Constraint, n_pk_attrs), offsetof(PgQuery__Constraint, pk_attrs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fk_matchtype", 22, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, fk_matchtype), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fk_upd_action", 23, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, fk_upd_action), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "fk_del_action", 24, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, fk_del_action), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "old_conpfeqop", 25, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__Constraint, n_old_conpfeqop), offsetof(PgQuery__Constraint, old_conpfeqop), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "old_pktable_oid", 26, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, old_pktable_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "skip_validation", 27, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, skip_validation), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "initially_valid", 28, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__Constraint, initially_valid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__constraint__field_indices_by_name[] = { 16, /* field[16] = access_method */ 1, /* field[1] = conname */ 0, /* field[0] = contype */ 7, /* field[7] = cooked_expr */ 2, /* field[2] = deferrable */ 11, /* field[11] = exclusions */ 19, /* field[19] = fk_attrs */ 23, /* field[23] = fk_del_action */ 21, /* field[21] = fk_matchtype */ 22, /* field[22] = fk_upd_action */ 8, /* field[8] = generated_when */ 10, /* field[10] = including */ 13, /* field[13] = indexname */ 14, /* field[14] = indexspace */ 3, /* field[3] = initdeferred */ 27, /* field[27] = initially_valid */ 5, /* field[5] = is_no_inherit */ 9, /* field[9] = keys */ 4, /* field[4] = location */ 24, /* field[24] = old_conpfeqop */ 25, /* field[25] = old_pktable_oid */ 12, /* field[12] = options */ 20, /* field[20] = pk_attrs */ 18, /* field[18] = pktable */ 6, /* field[6] = raw_expr */ 15, /* field[15] = reset_default_tblspc */ 26, /* field[26] = skip_validation */ 17, /* field[17] = where_clause */ }; static const ProtobufCIntRange pg_query__constraint__number_ranges[1 + 1] = { { 1, 0 }, { 0, 28 } }; const ProtobufCMessageDescriptor pg_query__constraint__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.Constraint", "Constraint", "PgQuery__Constraint", "pg_query", sizeof(PgQuery__Constraint), 28, pg_query__constraint__field_descriptors, pg_query__constraint__field_indices_by_name, 1, pg_query__constraint__number_ranges, (ProtobufCMessageInit) pg_query__constraint__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__def_elem__field_descriptors[5] = { { "defnamespace", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DefElem, defnamespace), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "defname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__DefElem, defname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__DefElem, arg), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "defaction", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__DefElem, defaction), &pg_query__def_elem_action__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__DefElem, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__def_elem__field_indices_by_name[] = { 2, /* field[2] = arg */ 3, /* field[3] = defaction */ 1, /* field[1] = defname */ 0, /* field[0] = defnamespace */ 4, /* field[4] = location */ }; static const ProtobufCIntRange pg_query__def_elem__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__def_elem__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.DefElem", "DefElem", "PgQuery__DefElem", "pg_query", sizeof(PgQuery__DefElem), 5, pg_query__def_elem__field_descriptors, pg_query__def_elem__field_indices_by_name, 1, pg_query__def_elem__number_ranges, (ProtobufCMessageInit) pg_query__def_elem__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_tbl_entry__field_descriptors[36] = { { "rtekind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, rtekind), &pg_query__rtekind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, relid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relkind", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, relkind), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rellockmode", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, rellockmode), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tablesample", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, tablesample), &pg_query__table_sample_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "subquery", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, subquery), &pg_query__query__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "security_barrier", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, security_barrier), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "jointype", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, jointype), &pg_query__join_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "joinmergedcols", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, joinmergedcols), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "joinaliasvars", 10, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_joinaliasvars), offsetof(PgQuery__RangeTblEntry, joinaliasvars), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "joinleftcols", 11, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_joinleftcols), offsetof(PgQuery__RangeTblEntry, joinleftcols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "joinrightcols", 12, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_joinrightcols), offsetof(PgQuery__RangeTblEntry, joinrightcols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "functions", 13, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_functions), offsetof(PgQuery__RangeTblEntry, functions), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcordinality", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, funcordinality), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "tablefunc", 15, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, tablefunc), &pg_query__table_func__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "values_lists", 16, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_values_lists), offsetof(PgQuery__RangeTblEntry, values_lists), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctename", 17, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, ctename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctelevelsup", 18, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, ctelevelsup), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "self_reference", 19, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, self_reference), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coltypes", 20, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_coltypes), offsetof(PgQuery__RangeTblEntry, coltypes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "coltypmods", 21, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_coltypmods), offsetof(PgQuery__RangeTblEntry, coltypmods), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "colcollations", 22, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_colcollations), offsetof(PgQuery__RangeTblEntry, colcollations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "enrname", 23, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, enrname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "enrtuples", 24, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_DOUBLE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, enrtuples), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "alias", 25, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, alias), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "eref", 26, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, eref), &pg_query__alias__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lateral", 27, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, lateral), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inh", 28, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, inh), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "in_from_cl", 29, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, in_from_cl), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "required_perms", 30, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, required_perms), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "check_as_user", 31, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblEntry, check_as_user), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "selected_cols", 32, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RangeTblEntry, n_selected_cols), offsetof(PgQuery__RangeTblEntry, selected_cols), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "inserted_cols", 33, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RangeTblEntry, n_inserted_cols), offsetof(PgQuery__RangeTblEntry, inserted_cols), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "updated_cols", 34, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RangeTblEntry, n_updated_cols), offsetof(PgQuery__RangeTblEntry, updated_cols), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "extra_updated_cols", 35, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RangeTblEntry, n_extra_updated_cols), offsetof(PgQuery__RangeTblEntry, extra_updated_cols), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "security_quals", 36, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblEntry, n_security_quals), offsetof(PgQuery__RangeTblEntry, security_quals), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_tbl_entry__field_indices_by_name[] = { 24, /* field[24] = alias */ 30, /* field[30] = check_as_user */ 21, /* field[21] = colcollations */ 19, /* field[19] = coltypes */ 20, /* field[20] = coltypmods */ 17, /* field[17] = ctelevelsup */ 16, /* field[16] = ctename */ 22, /* field[22] = enrname */ 23, /* field[23] = enrtuples */ 25, /* field[25] = eref */ 34, /* field[34] = extra_updated_cols */ 13, /* field[13] = funcordinality */ 12, /* field[12] = functions */ 28, /* field[28] = in_from_cl */ 27, /* field[27] = inh */ 32, /* field[32] = inserted_cols */ 9, /* field[9] = joinaliasvars */ 10, /* field[10] = joinleftcols */ 8, /* field[8] = joinmergedcols */ 11, /* field[11] = joinrightcols */ 7, /* field[7] = jointype */ 26, /* field[26] = lateral */ 1, /* field[1] = relid */ 2, /* field[2] = relkind */ 3, /* field[3] = rellockmode */ 29, /* field[29] = required_perms */ 0, /* field[0] = rtekind */ 6, /* field[6] = security_barrier */ 35, /* field[35] = security_quals */ 31, /* field[31] = selected_cols */ 18, /* field[18] = self_reference */ 5, /* field[5] = subquery */ 14, /* field[14] = tablefunc */ 4, /* field[4] = tablesample */ 33, /* field[33] = updated_cols */ 15, /* field[15] = values_lists */ }; static const ProtobufCIntRange pg_query__range_tbl_entry__number_ranges[1 + 1] = { { 1, 0 }, { 0, 36 } }; const ProtobufCMessageDescriptor pg_query__range_tbl_entry__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTblEntry", "RangeTblEntry", "PgQuery__RangeTblEntry", "pg_query", sizeof(PgQuery__RangeTblEntry), 36, pg_query__range_tbl_entry__field_descriptors, pg_query__range_tbl_entry__field_indices_by_name, 1, pg_query__range_tbl_entry__number_ranges, (ProtobufCMessageInit) pg_query__range_tbl_entry__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__range_tbl_function__field_descriptors[7] = { { "funcexpr", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblFunction, funcexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccolcount", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RangeTblFunction, funccolcount), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccolnames", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblFunction, n_funccolnames), offsetof(PgQuery__RangeTblFunction, funccolnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccoltypes", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblFunction, n_funccoltypes), offsetof(PgQuery__RangeTblFunction, funccoltypes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccoltypmods", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblFunction, n_funccoltypmods), offsetof(PgQuery__RangeTblFunction, funccoltypmods), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funccolcollations", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__RangeTblFunction, n_funccolcollations), offsetof(PgQuery__RangeTblFunction, funccolcollations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "funcparams", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, offsetof(PgQuery__RangeTblFunction, n_funcparams), offsetof(PgQuery__RangeTblFunction, funcparams), NULL, NULL, 0 | PROTOBUF_C_FIELD_FLAG_PACKED, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__range_tbl_function__field_indices_by_name[] = { 5, /* field[5] = funccolcollations */ 1, /* field[1] = funccolcount */ 2, /* field[2] = funccolnames */ 3, /* field[3] = funccoltypes */ 4, /* field[4] = funccoltypmods */ 0, /* field[0] = funcexpr */ 6, /* field[6] = funcparams */ }; static const ProtobufCIntRange pg_query__range_tbl_function__number_ranges[1 + 1] = { { 1, 0 }, { 0, 7 } }; const ProtobufCMessageDescriptor pg_query__range_tbl_function__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RangeTblFunction", "RangeTblFunction", "PgQuery__RangeTblFunction", "pg_query", sizeof(PgQuery__RangeTblFunction), 7, pg_query__range_tbl_function__field_descriptors, pg_query__range_tbl_function__field_indices_by_name, 1, pg_query__range_tbl_function__number_ranges, (ProtobufCMessageInit) pg_query__range_tbl_function__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__table_sample_clause__field_descriptors[3] = { { "tsmhandler", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TableSampleClause, tsmhandler), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__TableSampleClause, n_args), offsetof(PgQuery__TableSampleClause, args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "repeatable", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TableSampleClause, repeatable), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__table_sample_clause__field_indices_by_name[] = { 1, /* field[1] = args */ 2, /* field[2] = repeatable */ 0, /* field[0] = tsmhandler */ }; static const ProtobufCIntRange pg_query__table_sample_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__table_sample_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TableSampleClause", "TableSampleClause", "PgQuery__TableSampleClause", "pg_query", sizeof(PgQuery__TableSampleClause), 3, pg_query__table_sample_clause__field_descriptors, pg_query__table_sample_clause__field_indices_by_name, 1, pg_query__table_sample_clause__number_ranges, (ProtobufCMessageInit) pg_query__table_sample_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__with_check_option__field_descriptors[5] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__WithCheckOption, kind), &pg_query__wcokind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__WithCheckOption, relname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "polname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__WithCheckOption, polname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "qual", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WithCheckOption, qual), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cascaded", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WithCheckOption, cascaded), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__with_check_option__field_indices_by_name[] = { 4, /* field[4] = cascaded */ 0, /* field[0] = kind */ 2, /* field[2] = polname */ 3, /* field[3] = qual */ 1, /* field[1] = relname */ }; static const ProtobufCIntRange pg_query__with_check_option__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__with_check_option__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WithCheckOption", "WithCheckOption", "PgQuery__WithCheckOption", "pg_query", sizeof(PgQuery__WithCheckOption), 5, pg_query__with_check_option__field_descriptors, pg_query__with_check_option__field_indices_by_name, 1, pg_query__with_check_option__number_ranges, (ProtobufCMessageInit) pg_query__with_check_option__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__sort_group_clause__field_descriptors[5] = { { "tle_sort_group_ref", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SortGroupClause, tle_sort_group_ref), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "eqop", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SortGroupClause, eqop), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "sortop", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__SortGroupClause, sortop), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "nulls_first", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SortGroupClause, nulls_first), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "hashable", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__SortGroupClause, hashable), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__sort_group_clause__field_indices_by_name[] = { 1, /* field[1] = eqop */ 4, /* field[4] = hashable */ 3, /* field[3] = nulls_first */ 2, /* field[2] = sortop */ 0, /* field[0] = tle_sort_group_ref */ }; static const ProtobufCIntRange pg_query__sort_group_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__sort_group_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.SortGroupClause", "SortGroupClause", "PgQuery__SortGroupClause", "pg_query", sizeof(PgQuery__SortGroupClause), 5, pg_query__sort_group_clause__field_descriptors, pg_query__sort_group_clause__field_indices_by_name, 1, pg_query__sort_group_clause__number_ranges, (ProtobufCMessageInit) pg_query__sort_group_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__grouping_set__field_descriptors[3] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__GroupingSet, kind), &pg_query__grouping_set_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "content", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__GroupingSet, n_content), offsetof(PgQuery__GroupingSet, content), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__GroupingSet, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__grouping_set__field_indices_by_name[] = { 1, /* field[1] = content */ 0, /* field[0] = kind */ 2, /* field[2] = location */ }; static const ProtobufCIntRange pg_query__grouping_set__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__grouping_set__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.GroupingSet", "GroupingSet", "PgQuery__GroupingSet", "pg_query", sizeof(PgQuery__GroupingSet), 3, pg_query__grouping_set__field_descriptors, pg_query__grouping_set__field_indices_by_name, 1, pg_query__grouping_set__number_ranges, (ProtobufCMessageInit) pg_query__grouping_set__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__window_clause__field_descriptors[14] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "refname", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, refname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "partition_clause", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WindowClause, n_partition_clause), offsetof(PgQuery__WindowClause, partition_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "order_clause", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WindowClause, n_order_clause), offsetof(PgQuery__WindowClause, order_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "frame_options", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, frame_options), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "start_offset", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, start_offset), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "end_offset", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, end_offset), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "start_in_range_func", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, start_in_range_func), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "end_in_range_func", 9, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, end_in_range_func), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "in_range_coll", 10, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, in_range_coll), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "in_range_asc", 11, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, in_range_asc), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "in_range_nulls_first", 12, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, in_range_nulls_first), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "winref", 13, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, winref), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "copied_order", 14, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WindowClause, copied_order), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__window_clause__field_indices_by_name[] = { 13, /* field[13] = copied_order */ 8, /* field[8] = end_in_range_func */ 6, /* field[6] = end_offset */ 4, /* field[4] = frame_options */ 10, /* field[10] = in_range_asc */ 9, /* field[9] = in_range_coll */ 11, /* field[11] = in_range_nulls_first */ 0, /* field[0] = name */ 3, /* field[3] = order_clause */ 2, /* field[2] = partition_clause */ 1, /* field[1] = refname */ 7, /* field[7] = start_in_range_func */ 5, /* field[5] = start_offset */ 12, /* field[12] = winref */ }; static const ProtobufCIntRange pg_query__window_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 14 } }; const ProtobufCMessageDescriptor pg_query__window_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WindowClause", "WindowClause", "PgQuery__WindowClause", "pg_query", sizeof(PgQuery__WindowClause), 14, pg_query__window_clause__field_descriptors, pg_query__window_clause__field_indices_by_name, 1, pg_query__window_clause__number_ranges, (ProtobufCMessageInit) pg_query__window_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__object_with_args__field_descriptors[3] = { { "objname", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ObjectWithArgs, n_objname), offsetof(PgQuery__ObjectWithArgs, objname), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "objargs", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__ObjectWithArgs, n_objargs), offsetof(PgQuery__ObjectWithArgs, objargs), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "args_unspecified", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__ObjectWithArgs, args_unspecified), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__object_with_args__field_indices_by_name[] = { 2, /* field[2] = args_unspecified */ 1, /* field[1] = objargs */ 0, /* field[0] = objname */ }; static const ProtobufCIntRange pg_query__object_with_args__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__object_with_args__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ObjectWithArgs", "ObjectWithArgs", "PgQuery__ObjectWithArgs", "pg_query", sizeof(PgQuery__ObjectWithArgs), 3, pg_query__object_with_args__field_descriptors, pg_query__object_with_args__field_indices_by_name, 1, pg_query__object_with_args__number_ranges, (ProtobufCMessageInit) pg_query__object_with_args__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__access_priv__field_descriptors[2] = { { "priv_name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__AccessPriv, priv_name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cols", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__AccessPriv, n_cols), offsetof(PgQuery__AccessPriv, cols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__access_priv__field_indices_by_name[] = { 1, /* field[1] = cols */ 0, /* field[0] = priv_name */ }; static const ProtobufCIntRange pg_query__access_priv__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__access_priv__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.AccessPriv", "AccessPriv", "PgQuery__AccessPriv", "pg_query", sizeof(PgQuery__AccessPriv), 2, pg_query__access_priv__field_descriptors, pg_query__access_priv__field_indices_by_name, 1, pg_query__access_priv__number_ranges, (ProtobufCMessageInit) pg_query__access_priv__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__create_op_class_item__field_descriptors[6] = { { "itemtype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassItem, itemtype), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "name", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassItem, name), &pg_query__object_with_args__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "number", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassItem, number), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "order_family", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpClassItem, n_order_family), offsetof(PgQuery__CreateOpClassItem, order_family), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "class_args", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CreateOpClassItem, n_class_args), offsetof(PgQuery__CreateOpClassItem, class_args), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "storedtype", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CreateOpClassItem, storedtype), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__create_op_class_item__field_indices_by_name[] = { 4, /* field[4] = class_args */ 0, /* field[0] = itemtype */ 1, /* field[1] = name */ 2, /* field[2] = number */ 3, /* field[3] = order_family */ 5, /* field[5] = storedtype */ }; static const ProtobufCIntRange pg_query__create_op_class_item__number_ranges[1 + 1] = { { 1, 0 }, { 0, 6 } }; const ProtobufCMessageDescriptor pg_query__create_op_class_item__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CreateOpClassItem", "CreateOpClassItem", "PgQuery__CreateOpClassItem", "pg_query", sizeof(PgQuery__CreateOpClassItem), 6, pg_query__create_op_class_item__field_descriptors, pg_query__create_op_class_item__field_indices_by_name, 1, pg_query__create_op_class_item__number_ranges, (ProtobufCMessageInit) pg_query__create_op_class_item__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__table_like_clause__field_descriptors[3] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__TableLikeClause, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "options", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TableLikeClause, options), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "relation_oid", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__TableLikeClause, relation_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__table_like_clause__field_indices_by_name[] = { 1, /* field[1] = options */ 0, /* field[0] = relation */ 2, /* field[2] = relation_oid */ }; static const ProtobufCIntRange pg_query__table_like_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__table_like_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TableLikeClause", "TableLikeClause", "PgQuery__TableLikeClause", "pg_query", sizeof(PgQuery__TableLikeClause), 3, pg_query__table_like_clause__field_descriptors, pg_query__table_like_clause__field_indices_by_name, 1, pg_query__table_like_clause__number_ranges, (ProtobufCMessageInit) pg_query__table_like_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__function_parameter__field_descriptors[4] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__FunctionParameter, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "arg_type", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FunctionParameter, arg_type), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "mode", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__FunctionParameter, mode), &pg_query__function_parameter_mode__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "defexpr", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__FunctionParameter, defexpr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__function_parameter__field_indices_by_name[] = { 1, /* field[1] = arg_type */ 3, /* field[3] = defexpr */ 2, /* field[2] = mode */ 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__function_parameter__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__function_parameter__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.FunctionParameter", "FunctionParameter", "PgQuery__FunctionParameter", "pg_query", sizeof(PgQuery__FunctionParameter), 4, pg_query__function_parameter__field_descriptors, pg_query__function_parameter__field_indices_by_name, 1, pg_query__function_parameter__number_ranges, (ProtobufCMessageInit) pg_query__function_parameter__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__locking_clause__field_descriptors[3] = { { "locked_rels", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__LockingClause, n_locked_rels), offsetof(PgQuery__LockingClause, locked_rels), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "strength", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__LockingClause, strength), &pg_query__lock_clause_strength__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wait_policy", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__LockingClause, wait_policy), &pg_query__lock_wait_policy__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__locking_clause__field_indices_by_name[] = { 0, /* field[0] = locked_rels */ 1, /* field[1] = strength */ 2, /* field[2] = wait_policy */ }; static const ProtobufCIntRange pg_query__locking_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__locking_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.LockingClause", "LockingClause", "PgQuery__LockingClause", "pg_query", sizeof(PgQuery__LockingClause), 3, pg_query__locking_clause__field_descriptors, pg_query__locking_clause__field_indices_by_name, 1, pg_query__locking_clause__number_ranges, (ProtobufCMessageInit) pg_query__locking_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__row_mark_clause__field_descriptors[4] = { { "rti", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__RowMarkClause, rti), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "strength", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RowMarkClause, strength), &pg_query__lock_clause_strength__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "wait_policy", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RowMarkClause, wait_policy), &pg_query__lock_wait_policy__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "pushed_down", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__RowMarkClause, pushed_down), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__row_mark_clause__field_indices_by_name[] = { 3, /* field[3] = pushed_down */ 0, /* field[0] = rti */ 1, /* field[1] = strength */ 2, /* field[2] = wait_policy */ }; static const ProtobufCIntRange pg_query__row_mark_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__row_mark_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RowMarkClause", "RowMarkClause", "PgQuery__RowMarkClause", "pg_query", sizeof(PgQuery__RowMarkClause), 4, pg_query__row_mark_clause__field_descriptors, pg_query__row_mark_clause__field_indices_by_name, 1, pg_query__row_mark_clause__number_ranges, (ProtobufCMessageInit) pg_query__row_mark_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__xml_serialize__field_descriptors[4] = { { "xmloption", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__XmlSerialize, xmloption), &pg_query__xml_option_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__XmlSerialize, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "type_name", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__XmlSerialize, type_name), &pg_query__type_name__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__XmlSerialize, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__xml_serialize__field_indices_by_name[] = { 1, /* field[1] = expr */ 3, /* field[3] = location */ 2, /* field[2] = type_name */ 0, /* field[0] = xmloption */ }; static const ProtobufCIntRange pg_query__xml_serialize__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__xml_serialize__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.XmlSerialize", "XmlSerialize", "PgQuery__XmlSerialize", "pg_query", sizeof(PgQuery__XmlSerialize), 4, pg_query__xml_serialize__field_descriptors, pg_query__xml_serialize__field_indices_by_name, 1, pg_query__xml_serialize__number_ranges, (ProtobufCMessageInit) pg_query__xml_serialize__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__with_clause__field_descriptors[3] = { { "ctes", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__WithClause, n_ctes), offsetof(PgQuery__WithClause, ctes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "recursive", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__WithClause, recursive), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__WithClause, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__with_clause__field_indices_by_name[] = { 0, /* field[0] = ctes */ 2, /* field[2] = location */ 1, /* field[1] = recursive */ }; static const ProtobufCIntRange pg_query__with_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__with_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.WithClause", "WithClause", "PgQuery__WithClause", "pg_query", sizeof(PgQuery__WithClause), 3, pg_query__with_clause__field_descriptors, pg_query__with_clause__field_indices_by_name, 1, pg_query__with_clause__number_ranges, (ProtobufCMessageInit) pg_query__with_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__infer_clause__field_descriptors[4] = { { "index_elems", 1, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__InferClause, n_index_elems), offsetof(PgQuery__InferClause, index_elems), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__InferClause, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "conname", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__InferClause, conname), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__InferClause, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__infer_clause__field_indices_by_name[] = { 2, /* field[2] = conname */ 0, /* field[0] = index_elems */ 3, /* field[3] = location */ 1, /* field[1] = where_clause */ }; static const ProtobufCIntRange pg_query__infer_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__infer_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.InferClause", "InferClause", "PgQuery__InferClause", "pg_query", sizeof(PgQuery__InferClause), 4, pg_query__infer_clause__field_descriptors, pg_query__infer_clause__field_indices_by_name, 1, pg_query__infer_clause__number_ranges, (ProtobufCMessageInit) pg_query__infer_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__on_conflict_clause__field_descriptors[5] = { { "action", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictClause, action), &pg_query__on_conflict_action__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "infer", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictClause, infer), &pg_query__infer_clause__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "target_list", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__OnConflictClause, n_target_list), offsetof(PgQuery__OnConflictClause, target_list), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "where_clause", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictClause, where_clause), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__OnConflictClause, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__on_conflict_clause__field_indices_by_name[] = { 0, /* field[0] = action */ 1, /* field[1] = infer */ 4, /* field[4] = location */ 2, /* field[2] = target_list */ 3, /* field[3] = where_clause */ }; static const ProtobufCIntRange pg_query__on_conflict_clause__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__on_conflict_clause__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.OnConflictClause", "OnConflictClause", "PgQuery__OnConflictClause", "pg_query", sizeof(PgQuery__OnConflictClause), 5, pg_query__on_conflict_clause__field_descriptors, pg_query__on_conflict_clause__field_indices_by_name, 1, pg_query__on_conflict_clause__number_ranges, (ProtobufCMessageInit) pg_query__on_conflict_clause__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__common_table_expr__field_descriptors[11] = { { "ctename", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__CommonTableExpr, ctename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "aliascolnames", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CommonTableExpr, n_aliascolnames), offsetof(PgQuery__CommonTableExpr, aliascolnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctematerialized", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__CommonTableExpr, ctematerialized), &pg_query__ctematerialize__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctequery", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__CommonTableExpr, ctequery), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CommonTableExpr, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cterecursive", 6, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CommonTableExpr, cterecursive), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "cterefcount", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__CommonTableExpr, cterefcount), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctecolnames", 8, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CommonTableExpr, n_ctecolnames), offsetof(PgQuery__CommonTableExpr, ctecolnames), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctecoltypes", 9, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CommonTableExpr, n_ctecoltypes), offsetof(PgQuery__CommonTableExpr, ctecoltypes), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctecoltypmods", 10, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CommonTableExpr, n_ctecoltypmods), offsetof(PgQuery__CommonTableExpr, ctecoltypmods), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "ctecolcollations", 11, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__CommonTableExpr, n_ctecolcollations), offsetof(PgQuery__CommonTableExpr, ctecolcollations), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__common_table_expr__field_indices_by_name[] = { 1, /* field[1] = aliascolnames */ 10, /* field[10] = ctecolcollations */ 7, /* field[7] = ctecolnames */ 8, /* field[8] = ctecoltypes */ 9, /* field[9] = ctecoltypmods */ 2, /* field[2] = ctematerialized */ 0, /* field[0] = ctename */ 3, /* field[3] = ctequery */ 5, /* field[5] = cterecursive */ 6, /* field[6] = cterefcount */ 4, /* field[4] = location */ }; static const ProtobufCIntRange pg_query__common_table_expr__number_ranges[1 + 1] = { { 1, 0 }, { 0, 11 } }; const ProtobufCMessageDescriptor pg_query__common_table_expr__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CommonTableExpr", "CommonTableExpr", "PgQuery__CommonTableExpr", "pg_query", sizeof(PgQuery__CommonTableExpr), 11, pg_query__common_table_expr__field_descriptors, pg_query__common_table_expr__field_indices_by_name, 1, pg_query__common_table_expr__number_ranges, (ProtobufCMessageInit) pg_query__common_table_expr__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__role_spec__field_descriptors[3] = { { "roletype", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__RoleSpec, roletype), &pg_query__role_spec_type__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "rolename", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__RoleSpec, rolename), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__RoleSpec, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__role_spec__field_indices_by_name[] = { 2, /* field[2] = location */ 1, /* field[1] = rolename */ 0, /* field[0] = roletype */ }; static const ProtobufCIntRange pg_query__role_spec__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__role_spec__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.RoleSpec", "RoleSpec", "PgQuery__RoleSpec", "pg_query", sizeof(PgQuery__RoleSpec), 3, pg_query__role_spec__field_descriptors, pg_query__role_spec__field_indices_by_name, 1, pg_query__role_spec__number_ranges, (ProtobufCMessageInit) pg_query__role_spec__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__trigger_transition__field_descriptors[3] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__TriggerTransition, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_new", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TriggerTransition, is_new), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_table", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__TriggerTransition, is_table), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__trigger_transition__field_indices_by_name[] = { 1, /* field[1] = is_new */ 2, /* field[2] = is_table */ 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__trigger_transition__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__trigger_transition__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.TriggerTransition", "TriggerTransition", "PgQuery__TriggerTransition", "pg_query", sizeof(PgQuery__TriggerTransition), 3, pg_query__trigger_transition__field_descriptors, pg_query__trigger_transition__field_indices_by_name, 1, pg_query__trigger_transition__number_ranges, (ProtobufCMessageInit) pg_query__trigger_transition__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_elem__field_descriptors[5] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionElem, name), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "expr", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionElem, expr), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "collation", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionElem, n_collation), offsetof(PgQuery__PartitionElem, collation), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "opclass", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionElem, n_opclass), offsetof(PgQuery__PartitionElem, opclass), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionElem, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__partition_elem__field_indices_by_name[] = { 2, /* field[2] = collation */ 1, /* field[1] = expr */ 4, /* field[4] = location */ 0, /* field[0] = name */ 3, /* field[3] = opclass */ }; static const ProtobufCIntRange pg_query__partition_elem__number_ranges[1 + 1] = { { 1, 0 }, { 0, 5 } }; const ProtobufCMessageDescriptor pg_query__partition_elem__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PartitionElem", "PartitionElem", "PgQuery__PartitionElem", "pg_query", sizeof(PgQuery__PartitionElem), 5, pg_query__partition_elem__field_descriptors, pg_query__partition_elem__field_indices_by_name, 1, pg_query__partition_elem__number_ranges, (ProtobufCMessageInit) pg_query__partition_elem__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_spec__field_descriptors[3] = { { "strategy", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionSpec, strategy), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "part_params", 2, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionSpec, n_part_params), offsetof(PgQuery__PartitionSpec, part_params), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionSpec, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__partition_spec__field_indices_by_name[] = { 2, /* field[2] = location */ 1, /* field[1] = part_params */ 0, /* field[0] = strategy */ }; static const ProtobufCIntRange pg_query__partition_spec__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__partition_spec__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PartitionSpec", "PartitionSpec", "PgQuery__PartitionSpec", "pg_query", sizeof(PgQuery__PartitionSpec), 3, pg_query__partition_spec__field_descriptors, pg_query__partition_spec__field_indices_by_name, 1, pg_query__partition_spec__number_ranges, (ProtobufCMessageInit) pg_query__partition_spec__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_bound_spec__field_descriptors[8] = { { "strategy", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionBoundSpec, strategy), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "is_default", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionBoundSpec, is_default), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "modulus", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionBoundSpec, modulus), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "remainder", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionBoundSpec, remainder), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "listdatums", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionBoundSpec, n_listdatums), offsetof(PgQuery__PartitionBoundSpec, listdatums), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lowerdatums", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionBoundSpec, n_lowerdatums), offsetof(PgQuery__PartitionBoundSpec, lowerdatums), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "upperdatums", 7, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__PartitionBoundSpec, n_upperdatums), offsetof(PgQuery__PartitionBoundSpec, upperdatums), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 8, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionBoundSpec, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__partition_bound_spec__field_indices_by_name[] = { 1, /* field[1] = is_default */ 4, /* field[4] = listdatums */ 7, /* field[7] = location */ 5, /* field[5] = lowerdatums */ 2, /* field[2] = modulus */ 3, /* field[3] = remainder */ 0, /* field[0] = strategy */ 6, /* field[6] = upperdatums */ }; static const ProtobufCIntRange pg_query__partition_bound_spec__number_ranges[1 + 1] = { { 1, 0 }, { 0, 8 } }; const ProtobufCMessageDescriptor pg_query__partition_bound_spec__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PartitionBoundSpec", "PartitionBoundSpec", "PgQuery__PartitionBoundSpec", "pg_query", sizeof(PgQuery__PartitionBoundSpec), 8, pg_query__partition_bound_spec__field_descriptors, pg_query__partition_bound_spec__field_indices_by_name, 1, pg_query__partition_bound_spec__number_ranges, (ProtobufCMessageInit) pg_query__partition_bound_spec__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_range_datum__field_descriptors[3] = { { "kind", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionRangeDatum, kind), &pg_query__partition_range_datum_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "value", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionRangeDatum, value), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "location", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionRangeDatum, location), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__partition_range_datum__field_indices_by_name[] = { 0, /* field[0] = kind */ 2, /* field[2] = location */ 1, /* field[1] = value */ }; static const ProtobufCIntRange pg_query__partition_range_datum__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__partition_range_datum__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PartitionRangeDatum", "PartitionRangeDatum", "PgQuery__PartitionRangeDatum", "pg_query", sizeof(PgQuery__PartitionRangeDatum), 3, pg_query__partition_range_datum__field_descriptors, pg_query__partition_range_datum__field_indices_by_name, 1, pg_query__partition_range_datum__number_ranges, (ProtobufCMessageInit) pg_query__partition_range_datum__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__partition_cmd__field_descriptors[2] = { { "name", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionCmd, name), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "bound", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__PartitionCmd, bound), &pg_query__partition_bound_spec__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__partition_cmd__field_indices_by_name[] = { 1, /* field[1] = bound */ 0, /* field[0] = name */ }; static const ProtobufCIntRange pg_query__partition_cmd__number_ranges[1 + 1] = { { 1, 0 }, { 0, 2 } }; const ProtobufCMessageDescriptor pg_query__partition_cmd__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.PartitionCmd", "PartitionCmd", "PgQuery__PartitionCmd", "pg_query", sizeof(PgQuery__PartitionCmd), 2, pg_query__partition_cmd__field_descriptors, pg_query__partition_cmd__field_indices_by_name, 1, pg_query__partition_cmd__number_ranges, (ProtobufCMessageInit) pg_query__partition_cmd__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__vacuum_relation__field_descriptors[3] = { { "relation", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_MESSAGE, 0, /* quantifier_offset */ offsetof(PgQuery__VacuumRelation, relation), &pg_query__range_var__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "oid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__VacuumRelation, oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "va_cols", 3, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_MESSAGE, offsetof(PgQuery__VacuumRelation, n_va_cols), offsetof(PgQuery__VacuumRelation, va_cols), &pg_query__node__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__vacuum_relation__field_indices_by_name[] = { 1, /* field[1] = oid */ 0, /* field[0] = relation */ 2, /* field[2] = va_cols */ }; static const ProtobufCIntRange pg_query__vacuum_relation__number_ranges[1 + 1] = { { 1, 0 }, { 0, 3 } }; const ProtobufCMessageDescriptor pg_query__vacuum_relation__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.VacuumRelation", "VacuumRelation", "PgQuery__VacuumRelation", "pg_query", sizeof(PgQuery__VacuumRelation), 3, pg_query__vacuum_relation__field_descriptors, pg_query__vacuum_relation__field_indices_by_name, 1, pg_query__vacuum_relation__number_ranges, (ProtobufCMessageInit) pg_query__vacuum_relation__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__inline_code_block__field_descriptors[4] = { { "source_text", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ offsetof(PgQuery__InlineCodeBlock, source_text), NULL, &protobuf_c_empty_string, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lang_oid", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ offsetof(PgQuery__InlineCodeBlock, lang_oid), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "lang_is_trusted", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__InlineCodeBlock, lang_is_trusted), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "atomic", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__InlineCodeBlock, atomic), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__inline_code_block__field_indices_by_name[] = { 3, /* field[3] = atomic */ 2, /* field[2] = lang_is_trusted */ 1, /* field[1] = lang_oid */ 0, /* field[0] = source_text */ }; static const ProtobufCIntRange pg_query__inline_code_block__number_ranges[1 + 1] = { { 1, 0 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__inline_code_block__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.InlineCodeBlock", "InlineCodeBlock", "PgQuery__InlineCodeBlock", "pg_query", sizeof(PgQuery__InlineCodeBlock), 4, pg_query__inline_code_block__field_descriptors, pg_query__inline_code_block__field_indices_by_name, 1, pg_query__inline_code_block__number_ranges, (ProtobufCMessageInit) pg_query__inline_code_block__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__call_context__field_descriptors[1] = { { "atomic", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_BOOL, 0, /* quantifier_offset */ offsetof(PgQuery__CallContext, atomic), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__call_context__field_indices_by_name[] = { 0, /* field[0] = atomic */ }; static const ProtobufCIntRange pg_query__call_context__number_ranges[1 + 1] = { { 1, 0 }, { 0, 1 } }; const ProtobufCMessageDescriptor pg_query__call_context__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.CallContext", "CallContext", "PgQuery__CallContext", "pg_query", sizeof(PgQuery__CallContext), 1, pg_query__call_context__field_descriptors, pg_query__call_context__field_indices_by_name, 1, pg_query__call_context__number_ranges, (ProtobufCMessageInit) pg_query__call_context__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor pg_query__scan_token__field_descriptors[4] = { { "start", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScanToken, start), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "end", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ offsetof(PgQuery__ScanToken, end), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "token", 4, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ScanToken, token), &pg_query__token__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { "keyword_kind", 5, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_ENUM, 0, /* quantifier_offset */ offsetof(PgQuery__ScanToken, keyword_kind), &pg_query__keyword_kind__descriptor, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, }; static const unsigned pg_query__scan_token__field_indices_by_name[] = { 1, /* field[1] = end */ 3, /* field[3] = keyword_kind */ 0, /* field[0] = start */ 2, /* field[2] = token */ }; static const ProtobufCIntRange pg_query__scan_token__number_ranges[2 + 1] = { { 1, 0 }, { 4, 2 }, { 0, 4 } }; const ProtobufCMessageDescriptor pg_query__scan_token__descriptor = { PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, "pg_query.ScanToken", "ScanToken", "PgQuery__ScanToken", "pg_query", sizeof(PgQuery__ScanToken), 4, pg_query__scan_token__field_descriptors, pg_query__scan_token__field_indices_by_name, 2, pg_query__scan_token__number_ranges, (ProtobufCMessageInit) pg_query__scan_token__init, NULL,NULL,NULL /* reserved[123] */ }; static const ProtobufCEnumValue pg_query__overriding_kind__enum_values_by_number[4] = { { "OVERRIDING_KIND_UNDEFINED", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED", 0 }, { "OVERRIDING_NOT_SET", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_NOT_SET", 1 }, { "OVERRIDING_USER_VALUE", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_USER_VALUE", 2 }, { "OVERRIDING_SYSTEM_VALUE", "PG_QUERY__OVERRIDING_KIND__OVERRIDING_SYSTEM_VALUE", 3 }, }; static const ProtobufCIntRange pg_query__overriding_kind__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__overriding_kind__enum_values_by_name[4] = { { "OVERRIDING_KIND_UNDEFINED", 0 }, { "OVERRIDING_NOT_SET", 1 }, { "OVERRIDING_SYSTEM_VALUE", 3 }, { "OVERRIDING_USER_VALUE", 2 }, }; const ProtobufCEnumDescriptor pg_query__overriding_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.OverridingKind", "OverridingKind", "PgQuery__OverridingKind", "pg_query", 4, pg_query__overriding_kind__enum_values_by_number, 4, pg_query__overriding_kind__enum_values_by_name, 1, pg_query__overriding_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__query_source__enum_values_by_number[6] = { { "QUERY_SOURCE_UNDEFINED", "PG_QUERY__QUERY_SOURCE__QUERY_SOURCE_UNDEFINED", 0 }, { "QSRC_ORIGINAL", "PG_QUERY__QUERY_SOURCE__QSRC_ORIGINAL", 1 }, { "QSRC_PARSER", "PG_QUERY__QUERY_SOURCE__QSRC_PARSER", 2 }, { "QSRC_INSTEAD_RULE", "PG_QUERY__QUERY_SOURCE__QSRC_INSTEAD_RULE", 3 }, { "QSRC_QUAL_INSTEAD_RULE", "PG_QUERY__QUERY_SOURCE__QSRC_QUAL_INSTEAD_RULE", 4 }, { "QSRC_NON_INSTEAD_RULE", "PG_QUERY__QUERY_SOURCE__QSRC_NON_INSTEAD_RULE", 5 }, }; static const ProtobufCIntRange pg_query__query_source__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__query_source__enum_values_by_name[6] = { { "QSRC_INSTEAD_RULE", 3 }, { "QSRC_NON_INSTEAD_RULE", 5 }, { "QSRC_ORIGINAL", 1 }, { "QSRC_PARSER", 2 }, { "QSRC_QUAL_INSTEAD_RULE", 4 }, { "QUERY_SOURCE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__query_source__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.QuerySource", "QuerySource", "PgQuery__QuerySource", "pg_query", 6, pg_query__query_source__enum_values_by_number, 6, pg_query__query_source__enum_values_by_name, 1, pg_query__query_source__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__sort_by_dir__enum_values_by_number[5] = { { "SORT_BY_DIR_UNDEFINED", "PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED", 0 }, { "SORTBY_DEFAULT", "PG_QUERY__SORT_BY_DIR__SORTBY_DEFAULT", 1 }, { "SORTBY_ASC", "PG_QUERY__SORT_BY_DIR__SORTBY_ASC", 2 }, { "SORTBY_DESC", "PG_QUERY__SORT_BY_DIR__SORTBY_DESC", 3 }, { "SORTBY_USING", "PG_QUERY__SORT_BY_DIR__SORTBY_USING", 4 }, }; static const ProtobufCIntRange pg_query__sort_by_dir__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__sort_by_dir__enum_values_by_name[5] = { { "SORTBY_ASC", 2 }, { "SORTBY_DEFAULT", 1 }, { "SORTBY_DESC", 3 }, { "SORTBY_USING", 4 }, { "SORT_BY_DIR_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__sort_by_dir__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SortByDir", "SortByDir", "PgQuery__SortByDir", "pg_query", 5, pg_query__sort_by_dir__enum_values_by_number, 5, pg_query__sort_by_dir__enum_values_by_name, 1, pg_query__sort_by_dir__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__sort_by_nulls__enum_values_by_number[4] = { { "SORT_BY_NULLS_UNDEFINED", "PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED", 0 }, { "SORTBY_NULLS_DEFAULT", "PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_DEFAULT", 1 }, { "SORTBY_NULLS_FIRST", "PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_FIRST", 2 }, { "SORTBY_NULLS_LAST", "PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_LAST", 3 }, }; static const ProtobufCIntRange pg_query__sort_by_nulls__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__sort_by_nulls__enum_values_by_name[4] = { { "SORTBY_NULLS_DEFAULT", 1 }, { "SORTBY_NULLS_FIRST", 2 }, { "SORTBY_NULLS_LAST", 3 }, { "SORT_BY_NULLS_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__sort_by_nulls__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SortByNulls", "SortByNulls", "PgQuery__SortByNulls", "pg_query", 4, pg_query__sort_by_nulls__enum_values_by_number, 4, pg_query__sort_by_nulls__enum_values_by_name, 1, pg_query__sort_by_nulls__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__a__expr__kind__enum_values_by_number[17] = { { "A_EXPR_KIND_UNDEFINED", "PG_QUERY__A__EXPR__KIND__A_EXPR_KIND_UNDEFINED", 0 }, { "AEXPR_OP", "PG_QUERY__A__EXPR__KIND__AEXPR_OP", 1 }, { "AEXPR_OP_ANY", "PG_QUERY__A__EXPR__KIND__AEXPR_OP_ANY", 2 }, { "AEXPR_OP_ALL", "PG_QUERY__A__EXPR__KIND__AEXPR_OP_ALL", 3 }, { "AEXPR_DISTINCT", "PG_QUERY__A__EXPR__KIND__AEXPR_DISTINCT", 4 }, { "AEXPR_NOT_DISTINCT", "PG_QUERY__A__EXPR__KIND__AEXPR_NOT_DISTINCT", 5 }, { "AEXPR_NULLIF", "PG_QUERY__A__EXPR__KIND__AEXPR_NULLIF", 6 }, { "AEXPR_OF", "PG_QUERY__A__EXPR__KIND__AEXPR_OF", 7 }, { "AEXPR_IN", "PG_QUERY__A__EXPR__KIND__AEXPR_IN", 8 }, { "AEXPR_LIKE", "PG_QUERY__A__EXPR__KIND__AEXPR_LIKE", 9 }, { "AEXPR_ILIKE", "PG_QUERY__A__EXPR__KIND__AEXPR_ILIKE", 10 }, { "AEXPR_SIMILAR", "PG_QUERY__A__EXPR__KIND__AEXPR_SIMILAR", 11 }, { "AEXPR_BETWEEN", "PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN", 12 }, { "AEXPR_NOT_BETWEEN", "PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN", 13 }, { "AEXPR_BETWEEN_SYM", "PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN_SYM", 14 }, { "AEXPR_NOT_BETWEEN_SYM", "PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN_SYM", 15 }, { "AEXPR_PAREN", "PG_QUERY__A__EXPR__KIND__AEXPR_PAREN", 16 }, }; static const ProtobufCIntRange pg_query__a__expr__kind__value_ranges[] = { {0, 0},{0, 17} }; static const ProtobufCEnumValueIndex pg_query__a__expr__kind__enum_values_by_name[17] = { { "AEXPR_BETWEEN", 12 }, { "AEXPR_BETWEEN_SYM", 14 }, { "AEXPR_DISTINCT", 4 }, { "AEXPR_ILIKE", 10 }, { "AEXPR_IN", 8 }, { "AEXPR_LIKE", 9 }, { "AEXPR_NOT_BETWEEN", 13 }, { "AEXPR_NOT_BETWEEN_SYM", 15 }, { "AEXPR_NOT_DISTINCT", 5 }, { "AEXPR_NULLIF", 6 }, { "AEXPR_OF", 7 }, { "AEXPR_OP", 1 }, { "AEXPR_OP_ALL", 3 }, { "AEXPR_OP_ANY", 2 }, { "AEXPR_PAREN", 16 }, { "AEXPR_SIMILAR", 11 }, { "A_EXPR_KIND_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__a__expr__kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.A_Expr_Kind", "A_Expr_Kind", "PgQuery__AExprKind", "pg_query", 17, pg_query__a__expr__kind__enum_values_by_number, 17, pg_query__a__expr__kind__enum_values_by_name, 1, pg_query__a__expr__kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__role_spec_type__enum_values_by_number[5] = { { "ROLE_SPEC_TYPE_UNDEFINED", "PG_QUERY__ROLE_SPEC_TYPE__ROLE_SPEC_TYPE_UNDEFINED", 0 }, { "ROLESPEC_CSTRING", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CSTRING", 1 }, { "ROLESPEC_CURRENT_USER", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CURRENT_USER", 2 }, { "ROLESPEC_SESSION_USER", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_SESSION_USER", 3 }, { "ROLESPEC_PUBLIC", "PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_PUBLIC", 4 }, }; static const ProtobufCIntRange pg_query__role_spec_type__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__role_spec_type__enum_values_by_name[5] = { { "ROLESPEC_CSTRING", 1 }, { "ROLESPEC_CURRENT_USER", 2 }, { "ROLESPEC_PUBLIC", 4 }, { "ROLESPEC_SESSION_USER", 3 }, { "ROLE_SPEC_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__role_spec_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.RoleSpecType", "RoleSpecType", "PgQuery__RoleSpecType", "pg_query", 5, pg_query__role_spec_type__enum_values_by_number, 5, pg_query__role_spec_type__enum_values_by_name, 1, pg_query__role_spec_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__table_like_option__enum_values_by_number[10] = { { "TABLE_LIKE_OPTION_UNDEFINED", "PG_QUERY__TABLE_LIKE_OPTION__TABLE_LIKE_OPTION_UNDEFINED", 0 }, { "CREATE_TABLE_LIKE_COMMENTS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_COMMENTS", 1 }, { "CREATE_TABLE_LIKE_CONSTRAINTS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_CONSTRAINTS", 2 }, { "CREATE_TABLE_LIKE_DEFAULTS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_DEFAULTS", 3 }, { "CREATE_TABLE_LIKE_GENERATED", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_GENERATED", 4 }, { "CREATE_TABLE_LIKE_IDENTITY", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_IDENTITY", 5 }, { "CREATE_TABLE_LIKE_INDEXES", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_INDEXES", 6 }, { "CREATE_TABLE_LIKE_STATISTICS", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STATISTICS", 7 }, { "CREATE_TABLE_LIKE_STORAGE", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STORAGE", 8 }, { "CREATE_TABLE_LIKE_ALL", "PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_ALL", 9 }, }; static const ProtobufCIntRange pg_query__table_like_option__value_ranges[] = { {0, 0},{0, 10} }; static const ProtobufCEnumValueIndex pg_query__table_like_option__enum_values_by_name[10] = { { "CREATE_TABLE_LIKE_ALL", 9 }, { "CREATE_TABLE_LIKE_COMMENTS", 1 }, { "CREATE_TABLE_LIKE_CONSTRAINTS", 2 }, { "CREATE_TABLE_LIKE_DEFAULTS", 3 }, { "CREATE_TABLE_LIKE_GENERATED", 4 }, { "CREATE_TABLE_LIKE_IDENTITY", 5 }, { "CREATE_TABLE_LIKE_INDEXES", 6 }, { "CREATE_TABLE_LIKE_STATISTICS", 7 }, { "CREATE_TABLE_LIKE_STORAGE", 8 }, { "TABLE_LIKE_OPTION_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__table_like_option__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.TableLikeOption", "TableLikeOption", "PgQuery__TableLikeOption", "pg_query", 10, pg_query__table_like_option__enum_values_by_number, 10, pg_query__table_like_option__enum_values_by_name, 1, pg_query__table_like_option__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__def_elem_action__enum_values_by_number[5] = { { "DEF_ELEM_ACTION_UNDEFINED", "PG_QUERY__DEF_ELEM_ACTION__DEF_ELEM_ACTION_UNDEFINED", 0 }, { "DEFELEM_UNSPEC", "PG_QUERY__DEF_ELEM_ACTION__DEFELEM_UNSPEC", 1 }, { "DEFELEM_SET", "PG_QUERY__DEF_ELEM_ACTION__DEFELEM_SET", 2 }, { "DEFELEM_ADD", "PG_QUERY__DEF_ELEM_ACTION__DEFELEM_ADD", 3 }, { "DEFELEM_DROP", "PG_QUERY__DEF_ELEM_ACTION__DEFELEM_DROP", 4 }, }; static const ProtobufCIntRange pg_query__def_elem_action__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__def_elem_action__enum_values_by_name[5] = { { "DEFELEM_ADD", 3 }, { "DEFELEM_DROP", 4 }, { "DEFELEM_SET", 2 }, { "DEFELEM_UNSPEC", 1 }, { "DEF_ELEM_ACTION_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__def_elem_action__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.DefElemAction", "DefElemAction", "PgQuery__DefElemAction", "pg_query", 5, pg_query__def_elem_action__enum_values_by_number, 5, pg_query__def_elem_action__enum_values_by_name, 1, pg_query__def_elem_action__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__partition_range_datum_kind__enum_values_by_number[4] = { { "PARTITION_RANGE_DATUM_KIND_UNDEFINED", "PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_KIND_UNDEFINED", 0 }, { "PARTITION_RANGE_DATUM_MINVALUE", "PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_MINVALUE", 1 }, { "PARTITION_RANGE_DATUM_VALUE", "PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_VALUE", 2 }, { "PARTITION_RANGE_DATUM_MAXVALUE", "PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_MAXVALUE", 3 }, }; static const ProtobufCIntRange pg_query__partition_range_datum_kind__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__partition_range_datum_kind__enum_values_by_name[4] = { { "PARTITION_RANGE_DATUM_KIND_UNDEFINED", 0 }, { "PARTITION_RANGE_DATUM_MAXVALUE", 3 }, { "PARTITION_RANGE_DATUM_MINVALUE", 1 }, { "PARTITION_RANGE_DATUM_VALUE", 2 }, }; const ProtobufCEnumDescriptor pg_query__partition_range_datum_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.PartitionRangeDatumKind", "PartitionRangeDatumKind", "PgQuery__PartitionRangeDatumKind", "pg_query", 4, pg_query__partition_range_datum_kind__enum_values_by_number, 4, pg_query__partition_range_datum_kind__enum_values_by_name, 1, pg_query__partition_range_datum_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__rtekind__enum_values_by_number[10] = { { "RTEKIND_UNDEFINED", "PG_QUERY__RTEKIND__RTEKIND_UNDEFINED", 0 }, { "RTE_RELATION", "PG_QUERY__RTEKIND__RTE_RELATION", 1 }, { "RTE_SUBQUERY", "PG_QUERY__RTEKIND__RTE_SUBQUERY", 2 }, { "RTE_JOIN", "PG_QUERY__RTEKIND__RTE_JOIN", 3 }, { "RTE_FUNCTION", "PG_QUERY__RTEKIND__RTE_FUNCTION", 4 }, { "RTE_TABLEFUNC", "PG_QUERY__RTEKIND__RTE_TABLEFUNC", 5 }, { "RTE_VALUES", "PG_QUERY__RTEKIND__RTE_VALUES", 6 }, { "RTE_CTE", "PG_QUERY__RTEKIND__RTE_CTE", 7 }, { "RTE_NAMEDTUPLESTORE", "PG_QUERY__RTEKIND__RTE_NAMEDTUPLESTORE", 8 }, { "RTE_RESULT", "PG_QUERY__RTEKIND__RTE_RESULT", 9 }, }; static const ProtobufCIntRange pg_query__rtekind__value_ranges[] = { {0, 0},{0, 10} }; static const ProtobufCEnumValueIndex pg_query__rtekind__enum_values_by_name[10] = { { "RTEKIND_UNDEFINED", 0 }, { "RTE_CTE", 7 }, { "RTE_FUNCTION", 4 }, { "RTE_JOIN", 3 }, { "RTE_NAMEDTUPLESTORE", 8 }, { "RTE_RELATION", 1 }, { "RTE_RESULT", 9 }, { "RTE_SUBQUERY", 2 }, { "RTE_TABLEFUNC", 5 }, { "RTE_VALUES", 6 }, }; const ProtobufCEnumDescriptor pg_query__rtekind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.RTEKind", "RTEKind", "PgQuery__RTEKind", "pg_query", 10, pg_query__rtekind__enum_values_by_number, 10, pg_query__rtekind__enum_values_by_name, 1, pg_query__rtekind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__wcokind__enum_values_by_number[5] = { { "WCOKIND_UNDEFINED", "PG_QUERY__WCOKIND__WCOKIND_UNDEFINED", 0 }, { "WCO_VIEW_CHECK", "PG_QUERY__WCOKIND__WCO_VIEW_CHECK", 1 }, { "WCO_RLS_INSERT_CHECK", "PG_QUERY__WCOKIND__WCO_RLS_INSERT_CHECK", 2 }, { "WCO_RLS_UPDATE_CHECK", "PG_QUERY__WCOKIND__WCO_RLS_UPDATE_CHECK", 3 }, { "WCO_RLS_CONFLICT_CHECK", "PG_QUERY__WCOKIND__WCO_RLS_CONFLICT_CHECK", 4 }, }; static const ProtobufCIntRange pg_query__wcokind__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__wcokind__enum_values_by_name[5] = { { "WCOKIND_UNDEFINED", 0 }, { "WCO_RLS_CONFLICT_CHECK", 4 }, { "WCO_RLS_INSERT_CHECK", 2 }, { "WCO_RLS_UPDATE_CHECK", 3 }, { "WCO_VIEW_CHECK", 1 }, }; const ProtobufCEnumDescriptor pg_query__wcokind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.WCOKind", "WCOKind", "PgQuery__WCOKind", "pg_query", 5, pg_query__wcokind__enum_values_by_number, 5, pg_query__wcokind__enum_values_by_name, 1, pg_query__wcokind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__grouping_set_kind__enum_values_by_number[6] = { { "GROUPING_SET_KIND_UNDEFINED", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_KIND_UNDEFINED", 0 }, { "GROUPING_SET_EMPTY", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_EMPTY", 1 }, { "GROUPING_SET_SIMPLE", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_SIMPLE", 2 }, { "GROUPING_SET_ROLLUP", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_ROLLUP", 3 }, { "GROUPING_SET_CUBE", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_CUBE", 4 }, { "GROUPING_SET_SETS", "PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_SETS", 5 }, }; static const ProtobufCIntRange pg_query__grouping_set_kind__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__grouping_set_kind__enum_values_by_name[6] = { { "GROUPING_SET_CUBE", 4 }, { "GROUPING_SET_EMPTY", 1 }, { "GROUPING_SET_KIND_UNDEFINED", 0 }, { "GROUPING_SET_ROLLUP", 3 }, { "GROUPING_SET_SETS", 5 }, { "GROUPING_SET_SIMPLE", 2 }, }; const ProtobufCEnumDescriptor pg_query__grouping_set_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.GroupingSetKind", "GroupingSetKind", "PgQuery__GroupingSetKind", "pg_query", 6, pg_query__grouping_set_kind__enum_values_by_number, 6, pg_query__grouping_set_kind__enum_values_by_name, 1, pg_query__grouping_set_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__ctematerialize__enum_values_by_number[4] = { { "CTEMATERIALIZE_UNDEFINED", "PG_QUERY__CTEMATERIALIZE__CTEMATERIALIZE_UNDEFINED", 0 }, { "CTEMaterializeDefault", "PG_QUERY__CTEMATERIALIZE__CTEMaterializeDefault", 1 }, { "CTEMaterializeAlways", "PG_QUERY__CTEMATERIALIZE__CTEMaterializeAlways", 2 }, { "CTEMaterializeNever", "PG_QUERY__CTEMATERIALIZE__CTEMaterializeNever", 3 }, }; static const ProtobufCIntRange pg_query__ctematerialize__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__ctematerialize__enum_values_by_name[4] = { { "CTEMATERIALIZE_UNDEFINED", 0 }, { "CTEMaterializeAlways", 2 }, { "CTEMaterializeDefault", 1 }, { "CTEMaterializeNever", 3 }, }; const ProtobufCEnumDescriptor pg_query__ctematerialize__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.CTEMaterialize", "CTEMaterialize", "PgQuery__CTEMaterialize", "pg_query", 4, pg_query__ctematerialize__enum_values_by_number, 4, pg_query__ctematerialize__enum_values_by_name, 1, pg_query__ctematerialize__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__set_operation__enum_values_by_number[5] = { { "SET_OPERATION_UNDEFINED", "PG_QUERY__SET_OPERATION__SET_OPERATION_UNDEFINED", 0 }, { "SETOP_NONE", "PG_QUERY__SET_OPERATION__SETOP_NONE", 1 }, { "SETOP_UNION", "PG_QUERY__SET_OPERATION__SETOP_UNION", 2 }, { "SETOP_INTERSECT", "PG_QUERY__SET_OPERATION__SETOP_INTERSECT", 3 }, { "SETOP_EXCEPT", "PG_QUERY__SET_OPERATION__SETOP_EXCEPT", 4 }, }; static const ProtobufCIntRange pg_query__set_operation__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__set_operation__enum_values_by_name[5] = { { "SETOP_EXCEPT", 4 }, { "SETOP_INTERSECT", 3 }, { "SETOP_NONE", 1 }, { "SETOP_UNION", 2 }, { "SET_OPERATION_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__set_operation__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SetOperation", "SetOperation", "PgQuery__SetOperation", "pg_query", 5, pg_query__set_operation__enum_values_by_number, 5, pg_query__set_operation__enum_values_by_name, 1, pg_query__set_operation__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__object_type__enum_values_by_number[51] = { { "OBJECT_TYPE_UNDEFINED", "PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED", 0 }, { "OBJECT_ACCESS_METHOD", "PG_QUERY__OBJECT_TYPE__OBJECT_ACCESS_METHOD", 1 }, { "OBJECT_AGGREGATE", "PG_QUERY__OBJECT_TYPE__OBJECT_AGGREGATE", 2 }, { "OBJECT_AMOP", "PG_QUERY__OBJECT_TYPE__OBJECT_AMOP", 3 }, { "OBJECT_AMPROC", "PG_QUERY__OBJECT_TYPE__OBJECT_AMPROC", 4 }, { "OBJECT_ATTRIBUTE", "PG_QUERY__OBJECT_TYPE__OBJECT_ATTRIBUTE", 5 }, { "OBJECT_CAST", "PG_QUERY__OBJECT_TYPE__OBJECT_CAST", 6 }, { "OBJECT_COLUMN", "PG_QUERY__OBJECT_TYPE__OBJECT_COLUMN", 7 }, { "OBJECT_COLLATION", "PG_QUERY__OBJECT_TYPE__OBJECT_COLLATION", 8 }, { "OBJECT_CONVERSION", "PG_QUERY__OBJECT_TYPE__OBJECT_CONVERSION", 9 }, { "OBJECT_DATABASE", "PG_QUERY__OBJECT_TYPE__OBJECT_DATABASE", 10 }, { "OBJECT_DEFAULT", "PG_QUERY__OBJECT_TYPE__OBJECT_DEFAULT", 11 }, { "OBJECT_DEFACL", "PG_QUERY__OBJECT_TYPE__OBJECT_DEFACL", 12 }, { "OBJECT_DOMAIN", "PG_QUERY__OBJECT_TYPE__OBJECT_DOMAIN", 13 }, { "OBJECT_DOMCONSTRAINT", "PG_QUERY__OBJECT_TYPE__OBJECT_DOMCONSTRAINT", 14 }, { "OBJECT_EVENT_TRIGGER", "PG_QUERY__OBJECT_TYPE__OBJECT_EVENT_TRIGGER", 15 }, { "OBJECT_EXTENSION", "PG_QUERY__OBJECT_TYPE__OBJECT_EXTENSION", 16 }, { "OBJECT_FDW", "PG_QUERY__OBJECT_TYPE__OBJECT_FDW", 17 }, { "OBJECT_FOREIGN_SERVER", "PG_QUERY__OBJECT_TYPE__OBJECT_FOREIGN_SERVER", 18 }, { "OBJECT_FOREIGN_TABLE", "PG_QUERY__OBJECT_TYPE__OBJECT_FOREIGN_TABLE", 19 }, { "OBJECT_FUNCTION", "PG_QUERY__OBJECT_TYPE__OBJECT_FUNCTION", 20 }, { "OBJECT_INDEX", "PG_QUERY__OBJECT_TYPE__OBJECT_INDEX", 21 }, { "OBJECT_LANGUAGE", "PG_QUERY__OBJECT_TYPE__OBJECT_LANGUAGE", 22 }, { "OBJECT_LARGEOBJECT", "PG_QUERY__OBJECT_TYPE__OBJECT_LARGEOBJECT", 23 }, { "OBJECT_MATVIEW", "PG_QUERY__OBJECT_TYPE__OBJECT_MATVIEW", 24 }, { "OBJECT_OPCLASS", "PG_QUERY__OBJECT_TYPE__OBJECT_OPCLASS", 25 }, { "OBJECT_OPERATOR", "PG_QUERY__OBJECT_TYPE__OBJECT_OPERATOR", 26 }, { "OBJECT_OPFAMILY", "PG_QUERY__OBJECT_TYPE__OBJECT_OPFAMILY", 27 }, { "OBJECT_POLICY", "PG_QUERY__OBJECT_TYPE__OBJECT_POLICY", 28 }, { "OBJECT_PROCEDURE", "PG_QUERY__OBJECT_TYPE__OBJECT_PROCEDURE", 29 }, { "OBJECT_PUBLICATION", "PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION", 30 }, { "OBJECT_PUBLICATION_REL", "PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION_REL", 31 }, { "OBJECT_ROLE", "PG_QUERY__OBJECT_TYPE__OBJECT_ROLE", 32 }, { "OBJECT_ROUTINE", "PG_QUERY__OBJECT_TYPE__OBJECT_ROUTINE", 33 }, { "OBJECT_RULE", "PG_QUERY__OBJECT_TYPE__OBJECT_RULE", 34 }, { "OBJECT_SCHEMA", "PG_QUERY__OBJECT_TYPE__OBJECT_SCHEMA", 35 }, { "OBJECT_SEQUENCE", "PG_QUERY__OBJECT_TYPE__OBJECT_SEQUENCE", 36 }, { "OBJECT_SUBSCRIPTION", "PG_QUERY__OBJECT_TYPE__OBJECT_SUBSCRIPTION", 37 }, { "OBJECT_STATISTIC_EXT", "PG_QUERY__OBJECT_TYPE__OBJECT_STATISTIC_EXT", 38 }, { "OBJECT_TABCONSTRAINT", "PG_QUERY__OBJECT_TYPE__OBJECT_TABCONSTRAINT", 39 }, { "OBJECT_TABLE", "PG_QUERY__OBJECT_TYPE__OBJECT_TABLE", 40 }, { "OBJECT_TABLESPACE", "PG_QUERY__OBJECT_TYPE__OBJECT_TABLESPACE", 41 }, { "OBJECT_TRANSFORM", "PG_QUERY__OBJECT_TYPE__OBJECT_TRANSFORM", 42 }, { "OBJECT_TRIGGER", "PG_QUERY__OBJECT_TYPE__OBJECT_TRIGGER", 43 }, { "OBJECT_TSCONFIGURATION", "PG_QUERY__OBJECT_TYPE__OBJECT_TSCONFIGURATION", 44 }, { "OBJECT_TSDICTIONARY", "PG_QUERY__OBJECT_TYPE__OBJECT_TSDICTIONARY", 45 }, { "OBJECT_TSPARSER", "PG_QUERY__OBJECT_TYPE__OBJECT_TSPARSER", 46 }, { "OBJECT_TSTEMPLATE", "PG_QUERY__OBJECT_TYPE__OBJECT_TSTEMPLATE", 47 }, { "OBJECT_TYPE", "PG_QUERY__OBJECT_TYPE__OBJECT_TYPE", 48 }, { "OBJECT_USER_MAPPING", "PG_QUERY__OBJECT_TYPE__OBJECT_USER_MAPPING", 49 }, { "OBJECT_VIEW", "PG_QUERY__OBJECT_TYPE__OBJECT_VIEW", 50 }, }; static const ProtobufCIntRange pg_query__object_type__value_ranges[] = { {0, 0},{0, 51} }; static const ProtobufCEnumValueIndex pg_query__object_type__enum_values_by_name[51] = { { "OBJECT_ACCESS_METHOD", 1 }, { "OBJECT_AGGREGATE", 2 }, { "OBJECT_AMOP", 3 }, { "OBJECT_AMPROC", 4 }, { "OBJECT_ATTRIBUTE", 5 }, { "OBJECT_CAST", 6 }, { "OBJECT_COLLATION", 8 }, { "OBJECT_COLUMN", 7 }, { "OBJECT_CONVERSION", 9 }, { "OBJECT_DATABASE", 10 }, { "OBJECT_DEFACL", 12 }, { "OBJECT_DEFAULT", 11 }, { "OBJECT_DOMAIN", 13 }, { "OBJECT_DOMCONSTRAINT", 14 }, { "OBJECT_EVENT_TRIGGER", 15 }, { "OBJECT_EXTENSION", 16 }, { "OBJECT_FDW", 17 }, { "OBJECT_FOREIGN_SERVER", 18 }, { "OBJECT_FOREIGN_TABLE", 19 }, { "OBJECT_FUNCTION", 20 }, { "OBJECT_INDEX", 21 }, { "OBJECT_LANGUAGE", 22 }, { "OBJECT_LARGEOBJECT", 23 }, { "OBJECT_MATVIEW", 24 }, { "OBJECT_OPCLASS", 25 }, { "OBJECT_OPERATOR", 26 }, { "OBJECT_OPFAMILY", 27 }, { "OBJECT_POLICY", 28 }, { "OBJECT_PROCEDURE", 29 }, { "OBJECT_PUBLICATION", 30 }, { "OBJECT_PUBLICATION_REL", 31 }, { "OBJECT_ROLE", 32 }, { "OBJECT_ROUTINE", 33 }, { "OBJECT_RULE", 34 }, { "OBJECT_SCHEMA", 35 }, { "OBJECT_SEQUENCE", 36 }, { "OBJECT_STATISTIC_EXT", 38 }, { "OBJECT_SUBSCRIPTION", 37 }, { "OBJECT_TABCONSTRAINT", 39 }, { "OBJECT_TABLE", 40 }, { "OBJECT_TABLESPACE", 41 }, { "OBJECT_TRANSFORM", 42 }, { "OBJECT_TRIGGER", 43 }, { "OBJECT_TSCONFIGURATION", 44 }, { "OBJECT_TSDICTIONARY", 45 }, { "OBJECT_TSPARSER", 46 }, { "OBJECT_TSTEMPLATE", 47 }, { "OBJECT_TYPE", 48 }, { "OBJECT_TYPE_UNDEFINED", 0 }, { "OBJECT_USER_MAPPING", 49 }, { "OBJECT_VIEW", 50 }, }; const ProtobufCEnumDescriptor pg_query__object_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.ObjectType", "ObjectType", "PgQuery__ObjectType", "pg_query", 51, pg_query__object_type__enum_values_by_number, 51, pg_query__object_type__enum_values_by_name, 1, pg_query__object_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__drop_behavior__enum_values_by_number[3] = { { "DROP_BEHAVIOR_UNDEFINED", "PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED", 0 }, { "DROP_RESTRICT", "PG_QUERY__DROP_BEHAVIOR__DROP_RESTRICT", 1 }, { "DROP_CASCADE", "PG_QUERY__DROP_BEHAVIOR__DROP_CASCADE", 2 }, }; static const ProtobufCIntRange pg_query__drop_behavior__value_ranges[] = { {0, 0},{0, 3} }; static const ProtobufCEnumValueIndex pg_query__drop_behavior__enum_values_by_name[3] = { { "DROP_BEHAVIOR_UNDEFINED", 0 }, { "DROP_CASCADE", 2 }, { "DROP_RESTRICT", 1 }, }; const ProtobufCEnumDescriptor pg_query__drop_behavior__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.DropBehavior", "DropBehavior", "PgQuery__DropBehavior", "pg_query", 3, pg_query__drop_behavior__enum_values_by_number, 3, pg_query__drop_behavior__enum_values_by_name, 1, pg_query__drop_behavior__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__alter_table_type__enum_values_by_number[68] = { { "ALTER_TABLE_TYPE_UNDEFINED", "PG_QUERY__ALTER_TABLE_TYPE__ALTER_TABLE_TYPE_UNDEFINED", 0 }, { "AT_AddColumn", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumn", 1 }, { "AT_AddColumnRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnRecurse", 2 }, { "AT_AddColumnToView", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnToView", 3 }, { "AT_ColumnDefault", "PG_QUERY__ALTER_TABLE_TYPE__AT_ColumnDefault", 4 }, { "AT_CookedColumnDefault", "PG_QUERY__ALTER_TABLE_TYPE__AT_CookedColumnDefault", 5 }, { "AT_DropNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropNotNull", 6 }, { "AT_SetNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetNotNull", 7 }, { "AT_DropExpression", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropExpression", 8 }, { "AT_CheckNotNull", "PG_QUERY__ALTER_TABLE_TYPE__AT_CheckNotNull", 9 }, { "AT_SetStatistics", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetStatistics", 10 }, { "AT_SetOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetOptions", 11 }, { "AT_ResetOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ResetOptions", 12 }, { "AT_SetStorage", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetStorage", 13 }, { "AT_DropColumn", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumn", 14 }, { "AT_DropColumnRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumnRecurse", 15 }, { "AT_AddIndex", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndex", 16 }, { "AT_ReAddIndex", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddIndex", 17 }, { "AT_AddConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraint", 18 }, { "AT_AddConstraintRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraintRecurse", 19 }, { "AT_ReAddConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddConstraint", 20 }, { "AT_ReAddDomainConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddDomainConstraint", 21 }, { "AT_AlterConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterConstraint", 22 }, { "AT_ValidateConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraint", 23 }, { "AT_ValidateConstraintRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraintRecurse", 24 }, { "AT_AddIndexConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndexConstraint", 25 }, { "AT_DropConstraint", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraint", 26 }, { "AT_DropConstraintRecurse", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraintRecurse", 27 }, { "AT_ReAddComment", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddComment", 28 }, { "AT_AlterColumnType", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnType", 29 }, { "AT_AlterColumnGenericOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnGenericOptions", 30 }, { "AT_ChangeOwner", "PG_QUERY__ALTER_TABLE_TYPE__AT_ChangeOwner", 31 }, { "AT_ClusterOn", "PG_QUERY__ALTER_TABLE_TYPE__AT_ClusterOn", 32 }, { "AT_DropCluster", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropCluster", 33 }, { "AT_SetLogged", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetLogged", 34 }, { "AT_SetUnLogged", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetUnLogged", 35 }, { "AT_DropOids", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropOids", 36 }, { "AT_SetTableSpace", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetTableSpace", 37 }, { "AT_SetRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetRelOptions", 38 }, { "AT_ResetRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ResetRelOptions", 39 }, { "AT_ReplaceRelOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReplaceRelOptions", 40 }, { "AT_EnableTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrig", 41 }, { "AT_EnableAlwaysTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysTrig", 42 }, { "AT_EnableReplicaTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaTrig", 43 }, { "AT_DisableTrig", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrig", 44 }, { "AT_EnableTrigAll", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigAll", 45 }, { "AT_DisableTrigAll", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigAll", 46 }, { "AT_EnableTrigUser", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigUser", 47 }, { "AT_DisableTrigUser", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigUser", 48 }, { "AT_EnableRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRule", 49 }, { "AT_EnableAlwaysRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysRule", 50 }, { "AT_EnableReplicaRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaRule", 51 }, { "AT_DisableRule", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRule", 52 }, { "AT_AddInherit", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddInherit", 53 }, { "AT_DropInherit", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropInherit", 54 }, { "AT_AddOf", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddOf", 55 }, { "AT_DropOf", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropOf", 56 }, { "AT_ReplicaIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_ReplicaIdentity", 57 }, { "AT_EnableRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRowSecurity", 58 }, { "AT_DisableRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRowSecurity", 59 }, { "AT_ForceRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_ForceRowSecurity", 60 }, { "AT_NoForceRowSecurity", "PG_QUERY__ALTER_TABLE_TYPE__AT_NoForceRowSecurity", 61 }, { "AT_GenericOptions", "PG_QUERY__ALTER_TABLE_TYPE__AT_GenericOptions", 62 }, { "AT_AttachPartition", "PG_QUERY__ALTER_TABLE_TYPE__AT_AttachPartition", 63 }, { "AT_DetachPartition", "PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartition", 64 }, { "AT_AddIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_AddIdentity", 65 }, { "AT_SetIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_SetIdentity", 66 }, { "AT_DropIdentity", "PG_QUERY__ALTER_TABLE_TYPE__AT_DropIdentity", 67 }, }; static const ProtobufCIntRange pg_query__alter_table_type__value_ranges[] = { {0, 0},{0, 68} }; static const ProtobufCEnumValueIndex pg_query__alter_table_type__enum_values_by_name[68] = { { "ALTER_TABLE_TYPE_UNDEFINED", 0 }, { "AT_AddColumn", 1 }, { "AT_AddColumnRecurse", 2 }, { "AT_AddColumnToView", 3 }, { "AT_AddConstraint", 18 }, { "AT_AddConstraintRecurse", 19 }, { "AT_AddIdentity", 65 }, { "AT_AddIndex", 16 }, { "AT_AddIndexConstraint", 25 }, { "AT_AddInherit", 53 }, { "AT_AddOf", 55 }, { "AT_AlterColumnGenericOptions", 30 }, { "AT_AlterColumnType", 29 }, { "AT_AlterConstraint", 22 }, { "AT_AttachPartition", 63 }, { "AT_ChangeOwner", 31 }, { "AT_CheckNotNull", 9 }, { "AT_ClusterOn", 32 }, { "AT_ColumnDefault", 4 }, { "AT_CookedColumnDefault", 5 }, { "AT_DetachPartition", 64 }, { "AT_DisableRowSecurity", 59 }, { "AT_DisableRule", 52 }, { "AT_DisableTrig", 44 }, { "AT_DisableTrigAll", 46 }, { "AT_DisableTrigUser", 48 }, { "AT_DropCluster", 33 }, { "AT_DropColumn", 14 }, { "AT_DropColumnRecurse", 15 }, { "AT_DropConstraint", 26 }, { "AT_DropConstraintRecurse", 27 }, { "AT_DropExpression", 8 }, { "AT_DropIdentity", 67 }, { "AT_DropInherit", 54 }, { "AT_DropNotNull", 6 }, { "AT_DropOf", 56 }, { "AT_DropOids", 36 }, { "AT_EnableAlwaysRule", 50 }, { "AT_EnableAlwaysTrig", 42 }, { "AT_EnableReplicaRule", 51 }, { "AT_EnableReplicaTrig", 43 }, { "AT_EnableRowSecurity", 58 }, { "AT_EnableRule", 49 }, { "AT_EnableTrig", 41 }, { "AT_EnableTrigAll", 45 }, { "AT_EnableTrigUser", 47 }, { "AT_ForceRowSecurity", 60 }, { "AT_GenericOptions", 62 }, { "AT_NoForceRowSecurity", 61 }, { "AT_ReAddComment", 28 }, { "AT_ReAddConstraint", 20 }, { "AT_ReAddDomainConstraint", 21 }, { "AT_ReAddIndex", 17 }, { "AT_ReplaceRelOptions", 40 }, { "AT_ReplicaIdentity", 57 }, { "AT_ResetOptions", 12 }, { "AT_ResetRelOptions", 39 }, { "AT_SetIdentity", 66 }, { "AT_SetLogged", 34 }, { "AT_SetNotNull", 7 }, { "AT_SetOptions", 11 }, { "AT_SetRelOptions", 38 }, { "AT_SetStatistics", 10 }, { "AT_SetStorage", 13 }, { "AT_SetTableSpace", 37 }, { "AT_SetUnLogged", 35 }, { "AT_ValidateConstraint", 23 }, { "AT_ValidateConstraintRecurse", 24 }, }; const ProtobufCEnumDescriptor pg_query__alter_table_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.AlterTableType", "AlterTableType", "PgQuery__AlterTableType", "pg_query", 68, pg_query__alter_table_type__enum_values_by_number, 68, pg_query__alter_table_type__enum_values_by_name, 1, pg_query__alter_table_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__grant_target_type__enum_values_by_number[4] = { { "GRANT_TARGET_TYPE_UNDEFINED", "PG_QUERY__GRANT_TARGET_TYPE__GRANT_TARGET_TYPE_UNDEFINED", 0 }, { "ACL_TARGET_OBJECT", "PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_OBJECT", 1 }, { "ACL_TARGET_ALL_IN_SCHEMA", "PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_ALL_IN_SCHEMA", 2 }, { "ACL_TARGET_DEFAULTS", "PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_DEFAULTS", 3 }, }; static const ProtobufCIntRange pg_query__grant_target_type__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__grant_target_type__enum_values_by_name[4] = { { "ACL_TARGET_ALL_IN_SCHEMA", 2 }, { "ACL_TARGET_DEFAULTS", 3 }, { "ACL_TARGET_OBJECT", 1 }, { "GRANT_TARGET_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__grant_target_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.GrantTargetType", "GrantTargetType", "PgQuery__GrantTargetType", "pg_query", 4, pg_query__grant_target_type__enum_values_by_number, 4, pg_query__grant_target_type__enum_values_by_name, 1, pg_query__grant_target_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__variable_set_kind__enum_values_by_number[7] = { { "VARIABLE_SET_KIND_UNDEFINED", "PG_QUERY__VARIABLE_SET_KIND__VARIABLE_SET_KIND_UNDEFINED", 0 }, { "VAR_SET_VALUE", "PG_QUERY__VARIABLE_SET_KIND__VAR_SET_VALUE", 1 }, { "VAR_SET_DEFAULT", "PG_QUERY__VARIABLE_SET_KIND__VAR_SET_DEFAULT", 2 }, { "VAR_SET_CURRENT", "PG_QUERY__VARIABLE_SET_KIND__VAR_SET_CURRENT", 3 }, { "VAR_SET_MULTI", "PG_QUERY__VARIABLE_SET_KIND__VAR_SET_MULTI", 4 }, { "VAR_RESET", "PG_QUERY__VARIABLE_SET_KIND__VAR_RESET", 5 }, { "VAR_RESET_ALL", "PG_QUERY__VARIABLE_SET_KIND__VAR_RESET_ALL", 6 }, }; static const ProtobufCIntRange pg_query__variable_set_kind__value_ranges[] = { {0, 0},{0, 7} }; static const ProtobufCEnumValueIndex pg_query__variable_set_kind__enum_values_by_name[7] = { { "VARIABLE_SET_KIND_UNDEFINED", 0 }, { "VAR_RESET", 5 }, { "VAR_RESET_ALL", 6 }, { "VAR_SET_CURRENT", 3 }, { "VAR_SET_DEFAULT", 2 }, { "VAR_SET_MULTI", 4 }, { "VAR_SET_VALUE", 1 }, }; const ProtobufCEnumDescriptor pg_query__variable_set_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.VariableSetKind", "VariableSetKind", "PgQuery__VariableSetKind", "pg_query", 7, pg_query__variable_set_kind__enum_values_by_number, 7, pg_query__variable_set_kind__enum_values_by_name, 1, pg_query__variable_set_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__constr_type__enum_values_by_number[15] = { { "CONSTR_TYPE_UNDEFINED", "PG_QUERY__CONSTR_TYPE__CONSTR_TYPE_UNDEFINED", 0 }, { "CONSTR_NULL", "PG_QUERY__CONSTR_TYPE__CONSTR_NULL", 1 }, { "CONSTR_NOTNULL", "PG_QUERY__CONSTR_TYPE__CONSTR_NOTNULL", 2 }, { "CONSTR_DEFAULT", "PG_QUERY__CONSTR_TYPE__CONSTR_DEFAULT", 3 }, { "CONSTR_IDENTITY", "PG_QUERY__CONSTR_TYPE__CONSTR_IDENTITY", 4 }, { "CONSTR_GENERATED", "PG_QUERY__CONSTR_TYPE__CONSTR_GENERATED", 5 }, { "CONSTR_CHECK", "PG_QUERY__CONSTR_TYPE__CONSTR_CHECK", 6 }, { "CONSTR_PRIMARY", "PG_QUERY__CONSTR_TYPE__CONSTR_PRIMARY", 7 }, { "CONSTR_UNIQUE", "PG_QUERY__CONSTR_TYPE__CONSTR_UNIQUE", 8 }, { "CONSTR_EXCLUSION", "PG_QUERY__CONSTR_TYPE__CONSTR_EXCLUSION", 9 }, { "CONSTR_FOREIGN", "PG_QUERY__CONSTR_TYPE__CONSTR_FOREIGN", 10 }, { "CONSTR_ATTR_DEFERRABLE", "PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_DEFERRABLE", 11 }, { "CONSTR_ATTR_NOT_DEFERRABLE", "PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_NOT_DEFERRABLE", 12 }, { "CONSTR_ATTR_DEFERRED", "PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_DEFERRED", 13 }, { "CONSTR_ATTR_IMMEDIATE", "PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_IMMEDIATE", 14 }, }; static const ProtobufCIntRange pg_query__constr_type__value_ranges[] = { {0, 0},{0, 15} }; static const ProtobufCEnumValueIndex pg_query__constr_type__enum_values_by_name[15] = { { "CONSTR_ATTR_DEFERRABLE", 11 }, { "CONSTR_ATTR_DEFERRED", 13 }, { "CONSTR_ATTR_IMMEDIATE", 14 }, { "CONSTR_ATTR_NOT_DEFERRABLE", 12 }, { "CONSTR_CHECK", 6 }, { "CONSTR_DEFAULT", 3 }, { "CONSTR_EXCLUSION", 9 }, { "CONSTR_FOREIGN", 10 }, { "CONSTR_GENERATED", 5 }, { "CONSTR_IDENTITY", 4 }, { "CONSTR_NOTNULL", 2 }, { "CONSTR_NULL", 1 }, { "CONSTR_PRIMARY", 7 }, { "CONSTR_TYPE_UNDEFINED", 0 }, { "CONSTR_UNIQUE", 8 }, }; const ProtobufCEnumDescriptor pg_query__constr_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.ConstrType", "ConstrType", "PgQuery__ConstrType", "pg_query", 15, pg_query__constr_type__enum_values_by_number, 15, pg_query__constr_type__enum_values_by_name, 1, pg_query__constr_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__import_foreign_schema_type__enum_values_by_number[4] = { { "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED", "PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED", 0 }, { "FDW_IMPORT_SCHEMA_ALL", "PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_ALL", 1 }, { "FDW_IMPORT_SCHEMA_LIMIT_TO", "PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_LIMIT_TO", 2 }, { "FDW_IMPORT_SCHEMA_EXCEPT", "PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_EXCEPT", 3 }, }; static const ProtobufCIntRange pg_query__import_foreign_schema_type__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__import_foreign_schema_type__enum_values_by_name[4] = { { "FDW_IMPORT_SCHEMA_ALL", 1 }, { "FDW_IMPORT_SCHEMA_EXCEPT", 3 }, { "FDW_IMPORT_SCHEMA_LIMIT_TO", 2 }, { "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__import_foreign_schema_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.ImportForeignSchemaType", "ImportForeignSchemaType", "PgQuery__ImportForeignSchemaType", "pg_query", 4, pg_query__import_foreign_schema_type__enum_values_by_number, 4, pg_query__import_foreign_schema_type__enum_values_by_name, 1, pg_query__import_foreign_schema_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__role_stmt_type__enum_values_by_number[4] = { { "ROLE_STMT_TYPE_UNDEFINED", "PG_QUERY__ROLE_STMT_TYPE__ROLE_STMT_TYPE_UNDEFINED", 0 }, { "ROLESTMT_ROLE", "PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_ROLE", 1 }, { "ROLESTMT_USER", "PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_USER", 2 }, { "ROLESTMT_GROUP", "PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_GROUP", 3 }, }; static const ProtobufCIntRange pg_query__role_stmt_type__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__role_stmt_type__enum_values_by_name[4] = { { "ROLESTMT_GROUP", 3 }, { "ROLESTMT_ROLE", 1 }, { "ROLESTMT_USER", 2 }, { "ROLE_STMT_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__role_stmt_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.RoleStmtType", "RoleStmtType", "PgQuery__RoleStmtType", "pg_query", 4, pg_query__role_stmt_type__enum_values_by_number, 4, pg_query__role_stmt_type__enum_values_by_name, 1, pg_query__role_stmt_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__fetch_direction__enum_values_by_number[5] = { { "FETCH_DIRECTION_UNDEFINED", "PG_QUERY__FETCH_DIRECTION__FETCH_DIRECTION_UNDEFINED", 0 }, { "FETCH_FORWARD", "PG_QUERY__FETCH_DIRECTION__FETCH_FORWARD", 1 }, { "FETCH_BACKWARD", "PG_QUERY__FETCH_DIRECTION__FETCH_BACKWARD", 2 }, { "FETCH_ABSOLUTE", "PG_QUERY__FETCH_DIRECTION__FETCH_ABSOLUTE", 3 }, { "FETCH_RELATIVE", "PG_QUERY__FETCH_DIRECTION__FETCH_RELATIVE", 4 }, }; static const ProtobufCIntRange pg_query__fetch_direction__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__fetch_direction__enum_values_by_name[5] = { { "FETCH_ABSOLUTE", 3 }, { "FETCH_BACKWARD", 2 }, { "FETCH_DIRECTION_UNDEFINED", 0 }, { "FETCH_FORWARD", 1 }, { "FETCH_RELATIVE", 4 }, }; const ProtobufCEnumDescriptor pg_query__fetch_direction__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.FetchDirection", "FetchDirection", "PgQuery__FetchDirection", "pg_query", 5, pg_query__fetch_direction__enum_values_by_number, 5, pg_query__fetch_direction__enum_values_by_name, 1, pg_query__fetch_direction__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__function_parameter_mode__enum_values_by_number[6] = { { "FUNCTION_PARAMETER_MODE_UNDEFINED", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNCTION_PARAMETER_MODE_UNDEFINED", 0 }, { "FUNC_PARAM_IN", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_IN", 1 }, { "FUNC_PARAM_OUT", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_OUT", 2 }, { "FUNC_PARAM_INOUT", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_INOUT", 3 }, { "FUNC_PARAM_VARIADIC", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_VARIADIC", 4 }, { "FUNC_PARAM_TABLE", "PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_TABLE", 5 }, }; static const ProtobufCIntRange pg_query__function_parameter_mode__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__function_parameter_mode__enum_values_by_name[6] = { { "FUNCTION_PARAMETER_MODE_UNDEFINED", 0 }, { "FUNC_PARAM_IN", 1 }, { "FUNC_PARAM_INOUT", 3 }, { "FUNC_PARAM_OUT", 2 }, { "FUNC_PARAM_TABLE", 5 }, { "FUNC_PARAM_VARIADIC", 4 }, }; const ProtobufCEnumDescriptor pg_query__function_parameter_mode__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.FunctionParameterMode", "FunctionParameterMode", "PgQuery__FunctionParameterMode", "pg_query", 6, pg_query__function_parameter_mode__enum_values_by_number, 6, pg_query__function_parameter_mode__enum_values_by_name, 1, pg_query__function_parameter_mode__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__transaction_stmt_kind__enum_values_by_number[11] = { { "TRANSACTION_STMT_KIND_UNDEFINED", "PG_QUERY__TRANSACTION_STMT_KIND__TRANSACTION_STMT_KIND_UNDEFINED", 0 }, { "TRANS_STMT_BEGIN", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_BEGIN", 1 }, { "TRANS_STMT_START", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_START", 2 }, { "TRANS_STMT_COMMIT", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_COMMIT", 3 }, { "TRANS_STMT_ROLLBACK", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK", 4 }, { "TRANS_STMT_SAVEPOINT", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_SAVEPOINT", 5 }, { "TRANS_STMT_RELEASE", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_RELEASE", 6 }, { "TRANS_STMT_ROLLBACK_TO", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK_TO", 7 }, { "TRANS_STMT_PREPARE", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_PREPARE", 8 }, { "TRANS_STMT_COMMIT_PREPARED", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_COMMIT_PREPARED", 9 }, { "TRANS_STMT_ROLLBACK_PREPARED", "PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK_PREPARED", 10 }, }; static const ProtobufCIntRange pg_query__transaction_stmt_kind__value_ranges[] = { {0, 0},{0, 11} }; static const ProtobufCEnumValueIndex pg_query__transaction_stmt_kind__enum_values_by_name[11] = { { "TRANSACTION_STMT_KIND_UNDEFINED", 0 }, { "TRANS_STMT_BEGIN", 1 }, { "TRANS_STMT_COMMIT", 3 }, { "TRANS_STMT_COMMIT_PREPARED", 9 }, { "TRANS_STMT_PREPARE", 8 }, { "TRANS_STMT_RELEASE", 6 }, { "TRANS_STMT_ROLLBACK", 4 }, { "TRANS_STMT_ROLLBACK_PREPARED", 10 }, { "TRANS_STMT_ROLLBACK_TO", 7 }, { "TRANS_STMT_SAVEPOINT", 5 }, { "TRANS_STMT_START", 2 }, }; const ProtobufCEnumDescriptor pg_query__transaction_stmt_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.TransactionStmtKind", "TransactionStmtKind", "PgQuery__TransactionStmtKind", "pg_query", 11, pg_query__transaction_stmt_kind__enum_values_by_number, 11, pg_query__transaction_stmt_kind__enum_values_by_name, 1, pg_query__transaction_stmt_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__view_check_option__enum_values_by_number[4] = { { "VIEW_CHECK_OPTION_UNDEFINED", "PG_QUERY__VIEW_CHECK_OPTION__VIEW_CHECK_OPTION_UNDEFINED", 0 }, { "NO_CHECK_OPTION", "PG_QUERY__VIEW_CHECK_OPTION__NO_CHECK_OPTION", 1 }, { "LOCAL_CHECK_OPTION", "PG_QUERY__VIEW_CHECK_OPTION__LOCAL_CHECK_OPTION", 2 }, { "CASCADED_CHECK_OPTION", "PG_QUERY__VIEW_CHECK_OPTION__CASCADED_CHECK_OPTION", 3 }, }; static const ProtobufCIntRange pg_query__view_check_option__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__view_check_option__enum_values_by_name[4] = { { "CASCADED_CHECK_OPTION", 3 }, { "LOCAL_CHECK_OPTION", 2 }, { "NO_CHECK_OPTION", 1 }, { "VIEW_CHECK_OPTION_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__view_check_option__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.ViewCheckOption", "ViewCheckOption", "PgQuery__ViewCheckOption", "pg_query", 4, pg_query__view_check_option__enum_values_by_number, 4, pg_query__view_check_option__enum_values_by_name, 1, pg_query__view_check_option__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__cluster_option__enum_values_by_number[3] = { { "CLUSTER_OPTION_UNDEFINED", "PG_QUERY__CLUSTER_OPTION__CLUSTER_OPTION_UNDEFINED", 0 }, { "CLUOPT_RECHECK", "PG_QUERY__CLUSTER_OPTION__CLUOPT_RECHECK", 1 }, { "CLUOPT_VERBOSE", "PG_QUERY__CLUSTER_OPTION__CLUOPT_VERBOSE", 2 }, }; static const ProtobufCIntRange pg_query__cluster_option__value_ranges[] = { {0, 0},{0, 3} }; static const ProtobufCEnumValueIndex pg_query__cluster_option__enum_values_by_name[3] = { { "CLUOPT_RECHECK", 1 }, { "CLUOPT_VERBOSE", 2 }, { "CLUSTER_OPTION_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__cluster_option__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.ClusterOption", "ClusterOption", "PgQuery__ClusterOption", "pg_query", 3, pg_query__cluster_option__enum_values_by_number, 3, pg_query__cluster_option__enum_values_by_name, 1, pg_query__cluster_option__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__discard_mode__enum_values_by_number[5] = { { "DISCARD_MODE_UNDEFINED", "PG_QUERY__DISCARD_MODE__DISCARD_MODE_UNDEFINED", 0 }, { "DISCARD_ALL", "PG_QUERY__DISCARD_MODE__DISCARD_ALL", 1 }, { "DISCARD_PLANS", "PG_QUERY__DISCARD_MODE__DISCARD_PLANS", 2 }, { "DISCARD_SEQUENCES", "PG_QUERY__DISCARD_MODE__DISCARD_SEQUENCES", 3 }, { "DISCARD_TEMP", "PG_QUERY__DISCARD_MODE__DISCARD_TEMP", 4 }, }; static const ProtobufCIntRange pg_query__discard_mode__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__discard_mode__enum_values_by_name[5] = { { "DISCARD_ALL", 1 }, { "DISCARD_MODE_UNDEFINED", 0 }, { "DISCARD_PLANS", 2 }, { "DISCARD_SEQUENCES", 3 }, { "DISCARD_TEMP", 4 }, }; const ProtobufCEnumDescriptor pg_query__discard_mode__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.DiscardMode", "DiscardMode", "PgQuery__DiscardMode", "pg_query", 5, pg_query__discard_mode__enum_values_by_number, 5, pg_query__discard_mode__enum_values_by_name, 1, pg_query__discard_mode__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__reindex_object_type__enum_values_by_number[6] = { { "REINDEX_OBJECT_TYPE_UNDEFINED", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_TYPE_UNDEFINED", 0 }, { "REINDEX_OBJECT_INDEX", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_INDEX", 1 }, { "REINDEX_OBJECT_TABLE", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_TABLE", 2 }, { "REINDEX_OBJECT_SCHEMA", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_SCHEMA", 3 }, { "REINDEX_OBJECT_SYSTEM", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_SYSTEM", 4 }, { "REINDEX_OBJECT_DATABASE", "PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_DATABASE", 5 }, }; static const ProtobufCIntRange pg_query__reindex_object_type__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__reindex_object_type__enum_values_by_name[6] = { { "REINDEX_OBJECT_DATABASE", 5 }, { "REINDEX_OBJECT_INDEX", 1 }, { "REINDEX_OBJECT_SCHEMA", 3 }, { "REINDEX_OBJECT_SYSTEM", 4 }, { "REINDEX_OBJECT_TABLE", 2 }, { "REINDEX_OBJECT_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__reindex_object_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.ReindexObjectType", "ReindexObjectType", "PgQuery__ReindexObjectType", "pg_query", 6, pg_query__reindex_object_type__enum_values_by_number, 6, pg_query__reindex_object_type__enum_values_by_name, 1, pg_query__reindex_object_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__alter_tsconfig_type__enum_values_by_number[6] = { { "ALTER_TSCONFIG_TYPE_UNDEFINED", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_TYPE_UNDEFINED", 0 }, { "ALTER_TSCONFIG_ADD_MAPPING", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_ADD_MAPPING", 1 }, { "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN", 2 }, { "ALTER_TSCONFIG_REPLACE_DICT", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_REPLACE_DICT", 3 }, { "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN", 4 }, { "ALTER_TSCONFIG_DROP_MAPPING", "PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_DROP_MAPPING", 5 }, }; static const ProtobufCIntRange pg_query__alter_tsconfig_type__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__alter_tsconfig_type__enum_values_by_name[6] = { { "ALTER_TSCONFIG_ADD_MAPPING", 1 }, { "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN", 2 }, { "ALTER_TSCONFIG_DROP_MAPPING", 5 }, { "ALTER_TSCONFIG_REPLACE_DICT", 3 }, { "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN", 4 }, { "ALTER_TSCONFIG_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__alter_tsconfig_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.AlterTSConfigType", "AlterTSConfigType", "PgQuery__AlterTSConfigType", "pg_query", 6, pg_query__alter_tsconfig_type__enum_values_by_number, 6, pg_query__alter_tsconfig_type__enum_values_by_name, 1, pg_query__alter_tsconfig_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__alter_subscription_type__enum_values_by_number[6] = { { "ALTER_SUBSCRIPTION_TYPE_UNDEFINED", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_TYPE_UNDEFINED", 0 }, { "ALTER_SUBSCRIPTION_OPTIONS", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_OPTIONS", 1 }, { "ALTER_SUBSCRIPTION_CONNECTION", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_CONNECTION", 2 }, { "ALTER_SUBSCRIPTION_PUBLICATION", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_PUBLICATION", 3 }, { "ALTER_SUBSCRIPTION_REFRESH", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_REFRESH", 4 }, { "ALTER_SUBSCRIPTION_ENABLED", "PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_ENABLED", 5 }, }; static const ProtobufCIntRange pg_query__alter_subscription_type__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__alter_subscription_type__enum_values_by_name[6] = { { "ALTER_SUBSCRIPTION_CONNECTION", 2 }, { "ALTER_SUBSCRIPTION_ENABLED", 5 }, { "ALTER_SUBSCRIPTION_OPTIONS", 1 }, { "ALTER_SUBSCRIPTION_PUBLICATION", 3 }, { "ALTER_SUBSCRIPTION_REFRESH", 4 }, { "ALTER_SUBSCRIPTION_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__alter_subscription_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.AlterSubscriptionType", "AlterSubscriptionType", "PgQuery__AlterSubscriptionType", "pg_query", 6, pg_query__alter_subscription_type__enum_values_by_number, 6, pg_query__alter_subscription_type__enum_values_by_name, 1, pg_query__alter_subscription_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__on_commit_action__enum_values_by_number[5] = { { "ON_COMMIT_ACTION_UNDEFINED", "PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED", 0 }, { "ONCOMMIT_NOOP", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_NOOP", 1 }, { "ONCOMMIT_PRESERVE_ROWS", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_PRESERVE_ROWS", 2 }, { "ONCOMMIT_DELETE_ROWS", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DELETE_ROWS", 3 }, { "ONCOMMIT_DROP", "PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DROP", 4 }, }; static const ProtobufCIntRange pg_query__on_commit_action__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__on_commit_action__enum_values_by_name[5] = { { "ONCOMMIT_DELETE_ROWS", 3 }, { "ONCOMMIT_DROP", 4 }, { "ONCOMMIT_NOOP", 1 }, { "ONCOMMIT_PRESERVE_ROWS", 2 }, { "ON_COMMIT_ACTION_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__on_commit_action__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.OnCommitAction", "OnCommitAction", "PgQuery__OnCommitAction", "pg_query", 5, pg_query__on_commit_action__enum_values_by_number, 5, pg_query__on_commit_action__enum_values_by_name, 1, pg_query__on_commit_action__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__param_kind__enum_values_by_number[5] = { { "PARAM_KIND_UNDEFINED", "PG_QUERY__PARAM_KIND__PARAM_KIND_UNDEFINED", 0 }, { "PARAM_EXTERN", "PG_QUERY__PARAM_KIND__PARAM_EXTERN", 1 }, { "PARAM_EXEC", "PG_QUERY__PARAM_KIND__PARAM_EXEC", 2 }, { "PARAM_SUBLINK", "PG_QUERY__PARAM_KIND__PARAM_SUBLINK", 3 }, { "PARAM_MULTIEXPR", "PG_QUERY__PARAM_KIND__PARAM_MULTIEXPR", 4 }, }; static const ProtobufCIntRange pg_query__param_kind__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__param_kind__enum_values_by_name[5] = { { "PARAM_EXEC", 2 }, { "PARAM_EXTERN", 1 }, { "PARAM_KIND_UNDEFINED", 0 }, { "PARAM_MULTIEXPR", 4 }, { "PARAM_SUBLINK", 3 }, }; const ProtobufCEnumDescriptor pg_query__param_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.ParamKind", "ParamKind", "PgQuery__ParamKind", "pg_query", 5, pg_query__param_kind__enum_values_by_number, 5, pg_query__param_kind__enum_values_by_name, 1, pg_query__param_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__coercion_context__enum_values_by_number[4] = { { "COERCION_CONTEXT_UNDEFINED", "PG_QUERY__COERCION_CONTEXT__COERCION_CONTEXT_UNDEFINED", 0 }, { "COERCION_IMPLICIT", "PG_QUERY__COERCION_CONTEXT__COERCION_IMPLICIT", 1 }, { "COERCION_ASSIGNMENT", "PG_QUERY__COERCION_CONTEXT__COERCION_ASSIGNMENT", 2 }, { "COERCION_EXPLICIT", "PG_QUERY__COERCION_CONTEXT__COERCION_EXPLICIT", 3 }, }; static const ProtobufCIntRange pg_query__coercion_context__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__coercion_context__enum_values_by_name[4] = { { "COERCION_ASSIGNMENT", 2 }, { "COERCION_CONTEXT_UNDEFINED", 0 }, { "COERCION_EXPLICIT", 3 }, { "COERCION_IMPLICIT", 1 }, }; const ProtobufCEnumDescriptor pg_query__coercion_context__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.CoercionContext", "CoercionContext", "PgQuery__CoercionContext", "pg_query", 4, pg_query__coercion_context__enum_values_by_number, 4, pg_query__coercion_context__enum_values_by_name, 1, pg_query__coercion_context__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__coercion_form__enum_values_by_number[4] = { { "COERCION_FORM_UNDEFINED", "PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED", 0 }, { "COERCE_EXPLICIT_CALL", "PG_QUERY__COERCION_FORM__COERCE_EXPLICIT_CALL", 1 }, { "COERCE_EXPLICIT_CAST", "PG_QUERY__COERCION_FORM__COERCE_EXPLICIT_CAST", 2 }, { "COERCE_IMPLICIT_CAST", "PG_QUERY__COERCION_FORM__COERCE_IMPLICIT_CAST", 3 }, }; static const ProtobufCIntRange pg_query__coercion_form__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__coercion_form__enum_values_by_name[4] = { { "COERCE_EXPLICIT_CALL", 1 }, { "COERCE_EXPLICIT_CAST", 2 }, { "COERCE_IMPLICIT_CAST", 3 }, { "COERCION_FORM_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__coercion_form__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.CoercionForm", "CoercionForm", "PgQuery__CoercionForm", "pg_query", 4, pg_query__coercion_form__enum_values_by_number, 4, pg_query__coercion_form__enum_values_by_name, 1, pg_query__coercion_form__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__bool_expr_type__enum_values_by_number[4] = { { "BOOL_EXPR_TYPE_UNDEFINED", "PG_QUERY__BOOL_EXPR_TYPE__BOOL_EXPR_TYPE_UNDEFINED", 0 }, { "AND_EXPR", "PG_QUERY__BOOL_EXPR_TYPE__AND_EXPR", 1 }, { "OR_EXPR", "PG_QUERY__BOOL_EXPR_TYPE__OR_EXPR", 2 }, { "NOT_EXPR", "PG_QUERY__BOOL_EXPR_TYPE__NOT_EXPR", 3 }, }; static const ProtobufCIntRange pg_query__bool_expr_type__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__bool_expr_type__enum_values_by_name[4] = { { "AND_EXPR", 1 }, { "BOOL_EXPR_TYPE_UNDEFINED", 0 }, { "NOT_EXPR", 3 }, { "OR_EXPR", 2 }, }; const ProtobufCEnumDescriptor pg_query__bool_expr_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.BoolExprType", "BoolExprType", "PgQuery__BoolExprType", "pg_query", 4, pg_query__bool_expr_type__enum_values_by_number, 4, pg_query__bool_expr_type__enum_values_by_name, 1, pg_query__bool_expr_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__sub_link_type__enum_values_by_number[9] = { { "SUB_LINK_TYPE_UNDEFINED", "PG_QUERY__SUB_LINK_TYPE__SUB_LINK_TYPE_UNDEFINED", 0 }, { "EXISTS_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__EXISTS_SUBLINK", 1 }, { "ALL_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__ALL_SUBLINK", 2 }, { "ANY_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__ANY_SUBLINK", 3 }, { "ROWCOMPARE_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__ROWCOMPARE_SUBLINK", 4 }, { "EXPR_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__EXPR_SUBLINK", 5 }, { "MULTIEXPR_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__MULTIEXPR_SUBLINK", 6 }, { "ARRAY_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__ARRAY_SUBLINK", 7 }, { "CTE_SUBLINK", "PG_QUERY__SUB_LINK_TYPE__CTE_SUBLINK", 8 }, }; static const ProtobufCIntRange pg_query__sub_link_type__value_ranges[] = { {0, 0},{0, 9} }; static const ProtobufCEnumValueIndex pg_query__sub_link_type__enum_values_by_name[9] = { { "ALL_SUBLINK", 2 }, { "ANY_SUBLINK", 3 }, { "ARRAY_SUBLINK", 7 }, { "CTE_SUBLINK", 8 }, { "EXISTS_SUBLINK", 1 }, { "EXPR_SUBLINK", 5 }, { "MULTIEXPR_SUBLINK", 6 }, { "ROWCOMPARE_SUBLINK", 4 }, { "SUB_LINK_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__sub_link_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SubLinkType", "SubLinkType", "PgQuery__SubLinkType", "pg_query", 9, pg_query__sub_link_type__enum_values_by_number, 9, pg_query__sub_link_type__enum_values_by_name, 1, pg_query__sub_link_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__row_compare_type__enum_values_by_number[7] = { { "ROW_COMPARE_TYPE_UNDEFINED", "PG_QUERY__ROW_COMPARE_TYPE__ROW_COMPARE_TYPE_UNDEFINED", 0 }, { "ROWCOMPARE_LT", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_LT", 1 }, { "ROWCOMPARE_LE", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_LE", 2 }, { "ROWCOMPARE_EQ", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_EQ", 3 }, { "ROWCOMPARE_GE", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_GE", 4 }, { "ROWCOMPARE_GT", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_GT", 5 }, { "ROWCOMPARE_NE", "PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_NE", 6 }, }; static const ProtobufCIntRange pg_query__row_compare_type__value_ranges[] = { {0, 0},{0, 7} }; static const ProtobufCEnumValueIndex pg_query__row_compare_type__enum_values_by_name[7] = { { "ROWCOMPARE_EQ", 3 }, { "ROWCOMPARE_GE", 4 }, { "ROWCOMPARE_GT", 5 }, { "ROWCOMPARE_LE", 2 }, { "ROWCOMPARE_LT", 1 }, { "ROWCOMPARE_NE", 6 }, { "ROW_COMPARE_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__row_compare_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.RowCompareType", "RowCompareType", "PgQuery__RowCompareType", "pg_query", 7, pg_query__row_compare_type__enum_values_by_number, 7, pg_query__row_compare_type__enum_values_by_name, 1, pg_query__row_compare_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__min_max_op__enum_values_by_number[3] = { { "MIN_MAX_OP_UNDEFINED", "PG_QUERY__MIN_MAX_OP__MIN_MAX_OP_UNDEFINED", 0 }, { "IS_GREATEST", "PG_QUERY__MIN_MAX_OP__IS_GREATEST", 1 }, { "IS_LEAST", "PG_QUERY__MIN_MAX_OP__IS_LEAST", 2 }, }; static const ProtobufCIntRange pg_query__min_max_op__value_ranges[] = { {0, 0},{0, 3} }; static const ProtobufCEnumValueIndex pg_query__min_max_op__enum_values_by_name[3] = { { "IS_GREATEST", 1 }, { "IS_LEAST", 2 }, { "MIN_MAX_OP_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__min_max_op__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.MinMaxOp", "MinMaxOp", "PgQuery__MinMaxOp", "pg_query", 3, pg_query__min_max_op__enum_values_by_number, 3, pg_query__min_max_op__enum_values_by_name, 1, pg_query__min_max_op__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__sqlvalue_function_op__enum_values_by_number[16] = { { "SQLVALUE_FUNCTION_OP_UNDEFINED", "PG_QUERY__SQLVALUE_FUNCTION_OP__SQLVALUE_FUNCTION_OP_UNDEFINED", 0 }, { "SVFOP_CURRENT_DATE", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_DATE", 1 }, { "SVFOP_CURRENT_TIME", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIME", 2 }, { "SVFOP_CURRENT_TIME_N", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIME_N", 3 }, { "SVFOP_CURRENT_TIMESTAMP", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIMESTAMP", 4 }, { "SVFOP_CURRENT_TIMESTAMP_N", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIMESTAMP_N", 5 }, { "SVFOP_LOCALTIME", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIME", 6 }, { "SVFOP_LOCALTIME_N", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIME_N", 7 }, { "SVFOP_LOCALTIMESTAMP", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIMESTAMP", 8 }, { "SVFOP_LOCALTIMESTAMP_N", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIMESTAMP_N", 9 }, { "SVFOP_CURRENT_ROLE", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_ROLE", 10 }, { "SVFOP_CURRENT_USER", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_USER", 11 }, { "SVFOP_USER", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_USER", 12 }, { "SVFOP_SESSION_USER", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_SESSION_USER", 13 }, { "SVFOP_CURRENT_CATALOG", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_CATALOG", 14 }, { "SVFOP_CURRENT_SCHEMA", "PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_SCHEMA", 15 }, }; static const ProtobufCIntRange pg_query__sqlvalue_function_op__value_ranges[] = { {0, 0},{0, 16} }; static const ProtobufCEnumValueIndex pg_query__sqlvalue_function_op__enum_values_by_name[16] = { { "SQLVALUE_FUNCTION_OP_UNDEFINED", 0 }, { "SVFOP_CURRENT_CATALOG", 14 }, { "SVFOP_CURRENT_DATE", 1 }, { "SVFOP_CURRENT_ROLE", 10 }, { "SVFOP_CURRENT_SCHEMA", 15 }, { "SVFOP_CURRENT_TIME", 2 }, { "SVFOP_CURRENT_TIMESTAMP", 4 }, { "SVFOP_CURRENT_TIMESTAMP_N", 5 }, { "SVFOP_CURRENT_TIME_N", 3 }, { "SVFOP_CURRENT_USER", 11 }, { "SVFOP_LOCALTIME", 6 }, { "SVFOP_LOCALTIMESTAMP", 8 }, { "SVFOP_LOCALTIMESTAMP_N", 9 }, { "SVFOP_LOCALTIME_N", 7 }, { "SVFOP_SESSION_USER", 13 }, { "SVFOP_USER", 12 }, }; const ProtobufCEnumDescriptor pg_query__sqlvalue_function_op__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SQLValueFunctionOp", "SQLValueFunctionOp", "PgQuery__SQLValueFunctionOp", "pg_query", 16, pg_query__sqlvalue_function_op__enum_values_by_number, 16, pg_query__sqlvalue_function_op__enum_values_by_name, 1, pg_query__sqlvalue_function_op__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__xml_expr_op__enum_values_by_number[9] = { { "XML_EXPR_OP_UNDEFINED", "PG_QUERY__XML_EXPR_OP__XML_EXPR_OP_UNDEFINED", 0 }, { "IS_XMLCONCAT", "PG_QUERY__XML_EXPR_OP__IS_XMLCONCAT", 1 }, { "IS_XMLELEMENT", "PG_QUERY__XML_EXPR_OP__IS_XMLELEMENT", 2 }, { "IS_XMLFOREST", "PG_QUERY__XML_EXPR_OP__IS_XMLFOREST", 3 }, { "IS_XMLPARSE", "PG_QUERY__XML_EXPR_OP__IS_XMLPARSE", 4 }, { "IS_XMLPI", "PG_QUERY__XML_EXPR_OP__IS_XMLPI", 5 }, { "IS_XMLROOT", "PG_QUERY__XML_EXPR_OP__IS_XMLROOT", 6 }, { "IS_XMLSERIALIZE", "PG_QUERY__XML_EXPR_OP__IS_XMLSERIALIZE", 7 }, { "IS_DOCUMENT", "PG_QUERY__XML_EXPR_OP__IS_DOCUMENT", 8 }, }; static const ProtobufCIntRange pg_query__xml_expr_op__value_ranges[] = { {0, 0},{0, 9} }; static const ProtobufCEnumValueIndex pg_query__xml_expr_op__enum_values_by_name[9] = { { "IS_DOCUMENT", 8 }, { "IS_XMLCONCAT", 1 }, { "IS_XMLELEMENT", 2 }, { "IS_XMLFOREST", 3 }, { "IS_XMLPARSE", 4 }, { "IS_XMLPI", 5 }, { "IS_XMLROOT", 6 }, { "IS_XMLSERIALIZE", 7 }, { "XML_EXPR_OP_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__xml_expr_op__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.XmlExprOp", "XmlExprOp", "PgQuery__XmlExprOp", "pg_query", 9, pg_query__xml_expr_op__enum_values_by_number, 9, pg_query__xml_expr_op__enum_values_by_name, 1, pg_query__xml_expr_op__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__xml_option_type__enum_values_by_number[3] = { { "XML_OPTION_TYPE_UNDEFINED", "PG_QUERY__XML_OPTION_TYPE__XML_OPTION_TYPE_UNDEFINED", 0 }, { "XMLOPTION_DOCUMENT", "PG_QUERY__XML_OPTION_TYPE__XMLOPTION_DOCUMENT", 1 }, { "XMLOPTION_CONTENT", "PG_QUERY__XML_OPTION_TYPE__XMLOPTION_CONTENT", 2 }, }; static const ProtobufCIntRange pg_query__xml_option_type__value_ranges[] = { {0, 0},{0, 3} }; static const ProtobufCEnumValueIndex pg_query__xml_option_type__enum_values_by_name[3] = { { "XMLOPTION_CONTENT", 2 }, { "XMLOPTION_DOCUMENT", 1 }, { "XML_OPTION_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__xml_option_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.XmlOptionType", "XmlOptionType", "PgQuery__XmlOptionType", "pg_query", 3, pg_query__xml_option_type__enum_values_by_number, 3, pg_query__xml_option_type__enum_values_by_name, 1, pg_query__xml_option_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__null_test_type__enum_values_by_number[3] = { { "NULL_TEST_TYPE_UNDEFINED", "PG_QUERY__NULL_TEST_TYPE__NULL_TEST_TYPE_UNDEFINED", 0 }, { "IS_NULL", "PG_QUERY__NULL_TEST_TYPE__IS_NULL", 1 }, { "IS_NOT_NULL", "PG_QUERY__NULL_TEST_TYPE__IS_NOT_NULL", 2 }, }; static const ProtobufCIntRange pg_query__null_test_type__value_ranges[] = { {0, 0},{0, 3} }; static const ProtobufCEnumValueIndex pg_query__null_test_type__enum_values_by_name[3] = { { "IS_NOT_NULL", 2 }, { "IS_NULL", 1 }, { "NULL_TEST_TYPE_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__null_test_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.NullTestType", "NullTestType", "PgQuery__NullTestType", "pg_query", 3, pg_query__null_test_type__enum_values_by_number, 3, pg_query__null_test_type__enum_values_by_name, 1, pg_query__null_test_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__bool_test_type__enum_values_by_number[7] = { { "BOOL_TEST_TYPE_UNDEFINED", "PG_QUERY__BOOL_TEST_TYPE__BOOL_TEST_TYPE_UNDEFINED", 0 }, { "IS_TRUE", "PG_QUERY__BOOL_TEST_TYPE__IS_TRUE", 1 }, { "IS_NOT_TRUE", "PG_QUERY__BOOL_TEST_TYPE__IS_NOT_TRUE", 2 }, { "IS_FALSE", "PG_QUERY__BOOL_TEST_TYPE__IS_FALSE", 3 }, { "IS_NOT_FALSE", "PG_QUERY__BOOL_TEST_TYPE__IS_NOT_FALSE", 4 }, { "IS_UNKNOWN", "PG_QUERY__BOOL_TEST_TYPE__IS_UNKNOWN", 5 }, { "IS_NOT_UNKNOWN", "PG_QUERY__BOOL_TEST_TYPE__IS_NOT_UNKNOWN", 6 }, }; static const ProtobufCIntRange pg_query__bool_test_type__value_ranges[] = { {0, 0},{0, 7} }; static const ProtobufCEnumValueIndex pg_query__bool_test_type__enum_values_by_name[7] = { { "BOOL_TEST_TYPE_UNDEFINED", 0 }, { "IS_FALSE", 3 }, { "IS_NOT_FALSE", 4 }, { "IS_NOT_TRUE", 2 }, { "IS_NOT_UNKNOWN", 6 }, { "IS_TRUE", 1 }, { "IS_UNKNOWN", 5 }, }; const ProtobufCEnumDescriptor pg_query__bool_test_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.BoolTestType", "BoolTestType", "PgQuery__BoolTestType", "pg_query", 7, pg_query__bool_test_type__enum_values_by_number, 7, pg_query__bool_test_type__enum_values_by_name, 1, pg_query__bool_test_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__cmd_type__enum_values_by_number[8] = { { "CMD_TYPE_UNDEFINED", "PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED", 0 }, { "CMD_UNKNOWN", "PG_QUERY__CMD_TYPE__CMD_UNKNOWN", 1 }, { "CMD_SELECT", "PG_QUERY__CMD_TYPE__CMD_SELECT", 2 }, { "CMD_UPDATE", "PG_QUERY__CMD_TYPE__CMD_UPDATE", 3 }, { "CMD_INSERT", "PG_QUERY__CMD_TYPE__CMD_INSERT", 4 }, { "CMD_DELETE", "PG_QUERY__CMD_TYPE__CMD_DELETE", 5 }, { "CMD_UTILITY", "PG_QUERY__CMD_TYPE__CMD_UTILITY", 6 }, { "CMD_NOTHING", "PG_QUERY__CMD_TYPE__CMD_NOTHING", 7 }, }; static const ProtobufCIntRange pg_query__cmd_type__value_ranges[] = { {0, 0},{0, 8} }; static const ProtobufCEnumValueIndex pg_query__cmd_type__enum_values_by_name[8] = { { "CMD_DELETE", 5 }, { "CMD_INSERT", 4 }, { "CMD_NOTHING", 7 }, { "CMD_SELECT", 2 }, { "CMD_TYPE_UNDEFINED", 0 }, { "CMD_UNKNOWN", 1 }, { "CMD_UPDATE", 3 }, { "CMD_UTILITY", 6 }, }; const ProtobufCEnumDescriptor pg_query__cmd_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.CmdType", "CmdType", "PgQuery__CmdType", "pg_query", 8, pg_query__cmd_type__enum_values_by_number, 8, pg_query__cmd_type__enum_values_by_name, 1, pg_query__cmd_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__join_type__enum_values_by_number[9] = { { "JOIN_TYPE_UNDEFINED", "PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED", 0 }, { "JOIN_INNER", "PG_QUERY__JOIN_TYPE__JOIN_INNER", 1 }, { "JOIN_LEFT", "PG_QUERY__JOIN_TYPE__JOIN_LEFT", 2 }, { "JOIN_FULL", "PG_QUERY__JOIN_TYPE__JOIN_FULL", 3 }, { "JOIN_RIGHT", "PG_QUERY__JOIN_TYPE__JOIN_RIGHT", 4 }, { "JOIN_SEMI", "PG_QUERY__JOIN_TYPE__JOIN_SEMI", 5 }, { "JOIN_ANTI", "PG_QUERY__JOIN_TYPE__JOIN_ANTI", 6 }, { "JOIN_UNIQUE_OUTER", "PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_OUTER", 7 }, { "JOIN_UNIQUE_INNER", "PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_INNER", 8 }, }; static const ProtobufCIntRange pg_query__join_type__value_ranges[] = { {0, 0},{0, 9} }; static const ProtobufCEnumValueIndex pg_query__join_type__enum_values_by_name[9] = { { "JOIN_ANTI", 6 }, { "JOIN_FULL", 3 }, { "JOIN_INNER", 1 }, { "JOIN_LEFT", 2 }, { "JOIN_RIGHT", 4 }, { "JOIN_SEMI", 5 }, { "JOIN_TYPE_UNDEFINED", 0 }, { "JOIN_UNIQUE_INNER", 8 }, { "JOIN_UNIQUE_OUTER", 7 }, }; const ProtobufCEnumDescriptor pg_query__join_type__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.JoinType", "JoinType", "PgQuery__JoinType", "pg_query", 9, pg_query__join_type__enum_values_by_number, 9, pg_query__join_type__enum_values_by_name, 1, pg_query__join_type__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__agg_strategy__enum_values_by_number[5] = { { "AGG_STRATEGY_UNDEFINED", "PG_QUERY__AGG_STRATEGY__AGG_STRATEGY_UNDEFINED", 0 }, { "AGG_PLAIN", "PG_QUERY__AGG_STRATEGY__AGG_PLAIN", 1 }, { "AGG_SORTED", "PG_QUERY__AGG_STRATEGY__AGG_SORTED", 2 }, { "AGG_HASHED", "PG_QUERY__AGG_STRATEGY__AGG_HASHED", 3 }, { "AGG_MIXED", "PG_QUERY__AGG_STRATEGY__AGG_MIXED", 4 }, }; static const ProtobufCIntRange pg_query__agg_strategy__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__agg_strategy__enum_values_by_name[5] = { { "AGG_HASHED", 3 }, { "AGG_MIXED", 4 }, { "AGG_PLAIN", 1 }, { "AGG_SORTED", 2 }, { "AGG_STRATEGY_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__agg_strategy__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.AggStrategy", "AggStrategy", "PgQuery__AggStrategy", "pg_query", 5, pg_query__agg_strategy__enum_values_by_number, 5, pg_query__agg_strategy__enum_values_by_name, 1, pg_query__agg_strategy__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__agg_split__enum_values_by_number[4] = { { "AGG_SPLIT_UNDEFINED", "PG_QUERY__AGG_SPLIT__AGG_SPLIT_UNDEFINED", 0 }, { "AGGSPLIT_SIMPLE", "PG_QUERY__AGG_SPLIT__AGGSPLIT_SIMPLE", 1 }, { "AGGSPLIT_INITIAL_SERIAL", "PG_QUERY__AGG_SPLIT__AGGSPLIT_INITIAL_SERIAL", 2 }, { "AGGSPLIT_FINAL_DESERIAL", "PG_QUERY__AGG_SPLIT__AGGSPLIT_FINAL_DESERIAL", 3 }, }; static const ProtobufCIntRange pg_query__agg_split__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__agg_split__enum_values_by_name[4] = { { "AGGSPLIT_FINAL_DESERIAL", 3 }, { "AGGSPLIT_INITIAL_SERIAL", 2 }, { "AGGSPLIT_SIMPLE", 1 }, { "AGG_SPLIT_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__agg_split__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.AggSplit", "AggSplit", "PgQuery__AggSplit", "pg_query", 4, pg_query__agg_split__enum_values_by_number, 4, pg_query__agg_split__enum_values_by_name, 1, pg_query__agg_split__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__set_op_cmd__enum_values_by_number[5] = { { "SET_OP_CMD_UNDEFINED", "PG_QUERY__SET_OP_CMD__SET_OP_CMD_UNDEFINED", 0 }, { "SETOPCMD_INTERSECT", "PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT", 1 }, { "SETOPCMD_INTERSECT_ALL", "PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT_ALL", 2 }, { "SETOPCMD_EXCEPT", "PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT", 3 }, { "SETOPCMD_EXCEPT_ALL", "PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT_ALL", 4 }, }; static const ProtobufCIntRange pg_query__set_op_cmd__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__set_op_cmd__enum_values_by_name[5] = { { "SETOPCMD_EXCEPT", 3 }, { "SETOPCMD_EXCEPT_ALL", 4 }, { "SETOPCMD_INTERSECT", 1 }, { "SETOPCMD_INTERSECT_ALL", 2 }, { "SET_OP_CMD_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__set_op_cmd__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SetOpCmd", "SetOpCmd", "PgQuery__SetOpCmd", "pg_query", 5, pg_query__set_op_cmd__enum_values_by_number, 5, pg_query__set_op_cmd__enum_values_by_name, 1, pg_query__set_op_cmd__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__set_op_strategy__enum_values_by_number[3] = { { "SET_OP_STRATEGY_UNDEFINED", "PG_QUERY__SET_OP_STRATEGY__SET_OP_STRATEGY_UNDEFINED", 0 }, { "SETOP_SORTED", "PG_QUERY__SET_OP_STRATEGY__SETOP_SORTED", 1 }, { "SETOP_HASHED", "PG_QUERY__SET_OP_STRATEGY__SETOP_HASHED", 2 }, }; static const ProtobufCIntRange pg_query__set_op_strategy__value_ranges[] = { {0, 0},{0, 3} }; static const ProtobufCEnumValueIndex pg_query__set_op_strategy__enum_values_by_name[3] = { { "SETOP_HASHED", 2 }, { "SETOP_SORTED", 1 }, { "SET_OP_STRATEGY_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__set_op_strategy__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.SetOpStrategy", "SetOpStrategy", "PgQuery__SetOpStrategy", "pg_query", 3, pg_query__set_op_strategy__enum_values_by_number, 3, pg_query__set_op_strategy__enum_values_by_name, 1, pg_query__set_op_strategy__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__on_conflict_action__enum_values_by_number[4] = { { "ON_CONFLICT_ACTION_UNDEFINED", "PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED", 0 }, { "ONCONFLICT_NONE", "PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NONE", 1 }, { "ONCONFLICT_NOTHING", "PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NOTHING", 2 }, { "ONCONFLICT_UPDATE", "PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_UPDATE", 3 }, }; static const ProtobufCIntRange pg_query__on_conflict_action__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__on_conflict_action__enum_values_by_name[4] = { { "ONCONFLICT_NONE", 1 }, { "ONCONFLICT_NOTHING", 2 }, { "ONCONFLICT_UPDATE", 3 }, { "ON_CONFLICT_ACTION_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__on_conflict_action__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.OnConflictAction", "OnConflictAction", "PgQuery__OnConflictAction", "pg_query", 4, pg_query__on_conflict_action__enum_values_by_number, 4, pg_query__on_conflict_action__enum_values_by_name, 1, pg_query__on_conflict_action__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__limit_option__enum_values_by_number[4] = { { "LIMIT_OPTION_UNDEFINED", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_UNDEFINED", 0 }, { "LIMIT_OPTION_DEFAULT", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_DEFAULT", 1 }, { "LIMIT_OPTION_COUNT", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_COUNT", 2 }, { "LIMIT_OPTION_WITH_TIES", "PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_WITH_TIES", 3 }, }; static const ProtobufCIntRange pg_query__limit_option__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__limit_option__enum_values_by_name[4] = { { "LIMIT_OPTION_COUNT", 2 }, { "LIMIT_OPTION_DEFAULT", 1 }, { "LIMIT_OPTION_UNDEFINED", 0 }, { "LIMIT_OPTION_WITH_TIES", 3 }, }; const ProtobufCEnumDescriptor pg_query__limit_option__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.LimitOption", "LimitOption", "PgQuery__LimitOption", "pg_query", 4, pg_query__limit_option__enum_values_by_number, 4, pg_query__limit_option__enum_values_by_name, 1, pg_query__limit_option__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__lock_clause_strength__enum_values_by_number[6] = { { "LOCK_CLAUSE_STRENGTH_UNDEFINED", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED", 0 }, { "LCS_NONE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_NONE", 1 }, { "LCS_FORKEYSHARE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORKEYSHARE", 2 }, { "LCS_FORSHARE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORSHARE", 3 }, { "LCS_FORNOKEYUPDATE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORNOKEYUPDATE", 4 }, { "LCS_FORUPDATE", "PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORUPDATE", 5 }, }; static const ProtobufCIntRange pg_query__lock_clause_strength__value_ranges[] = { {0, 0},{0, 6} }; static const ProtobufCEnumValueIndex pg_query__lock_clause_strength__enum_values_by_name[6] = { { "LCS_FORKEYSHARE", 2 }, { "LCS_FORNOKEYUPDATE", 4 }, { "LCS_FORSHARE", 3 }, { "LCS_FORUPDATE", 5 }, { "LCS_NONE", 1 }, { "LOCK_CLAUSE_STRENGTH_UNDEFINED", 0 }, }; const ProtobufCEnumDescriptor pg_query__lock_clause_strength__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.LockClauseStrength", "LockClauseStrength", "PgQuery__LockClauseStrength", "pg_query", 6, pg_query__lock_clause_strength__enum_values_by_number, 6, pg_query__lock_clause_strength__enum_values_by_name, 1, pg_query__lock_clause_strength__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__lock_wait_policy__enum_values_by_number[4] = { { "LOCK_WAIT_POLICY_UNDEFINED", "PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED", 0 }, { "LockWaitBlock", "PG_QUERY__LOCK_WAIT_POLICY__LockWaitBlock", 1 }, { "LockWaitSkip", "PG_QUERY__LOCK_WAIT_POLICY__LockWaitSkip", 2 }, { "LockWaitError", "PG_QUERY__LOCK_WAIT_POLICY__LockWaitError", 3 }, }; static const ProtobufCIntRange pg_query__lock_wait_policy__value_ranges[] = { {0, 0},{0, 4} }; static const ProtobufCEnumValueIndex pg_query__lock_wait_policy__enum_values_by_name[4] = { { "LOCK_WAIT_POLICY_UNDEFINED", 0 }, { "LockWaitBlock", 1 }, { "LockWaitError", 3 }, { "LockWaitSkip", 2 }, }; const ProtobufCEnumDescriptor pg_query__lock_wait_policy__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.LockWaitPolicy", "LockWaitPolicy", "PgQuery__LockWaitPolicy", "pg_query", 4, pg_query__lock_wait_policy__enum_values_by_number, 4, pg_query__lock_wait_policy__enum_values_by_name, 1, pg_query__lock_wait_policy__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__lock_tuple_mode__enum_values_by_number[5] = { { "LOCK_TUPLE_MODE_UNDEFINED", "PG_QUERY__LOCK_TUPLE_MODE__LOCK_TUPLE_MODE_UNDEFINED", 0 }, { "LockTupleKeyShare", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleKeyShare", 1 }, { "LockTupleShare", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleShare", 2 }, { "LockTupleNoKeyExclusive", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleNoKeyExclusive", 3 }, { "LockTupleExclusive", "PG_QUERY__LOCK_TUPLE_MODE__LockTupleExclusive", 4 }, }; static const ProtobufCIntRange pg_query__lock_tuple_mode__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__lock_tuple_mode__enum_values_by_name[5] = { { "LOCK_TUPLE_MODE_UNDEFINED", 0 }, { "LockTupleExclusive", 4 }, { "LockTupleKeyShare", 1 }, { "LockTupleNoKeyExclusive", 3 }, { "LockTupleShare", 2 }, }; const ProtobufCEnumDescriptor pg_query__lock_tuple_mode__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.LockTupleMode", "LockTupleMode", "PgQuery__LockTupleMode", "pg_query", 5, pg_query__lock_tuple_mode__enum_values_by_number, 5, pg_query__lock_tuple_mode__enum_values_by_name, 1, pg_query__lock_tuple_mode__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__keyword_kind__enum_values_by_number[5] = { { "NO_KEYWORD", "PG_QUERY__KEYWORD_KIND__NO_KEYWORD", 0 }, { "UNRESERVED_KEYWORD", "PG_QUERY__KEYWORD_KIND__UNRESERVED_KEYWORD", 1 }, { "COL_NAME_KEYWORD", "PG_QUERY__KEYWORD_KIND__COL_NAME_KEYWORD", 2 }, { "TYPE_FUNC_NAME_KEYWORD", "PG_QUERY__KEYWORD_KIND__TYPE_FUNC_NAME_KEYWORD", 3 }, { "RESERVED_KEYWORD", "PG_QUERY__KEYWORD_KIND__RESERVED_KEYWORD", 4 }, }; static const ProtobufCIntRange pg_query__keyword_kind__value_ranges[] = { {0, 0},{0, 5} }; static const ProtobufCEnumValueIndex pg_query__keyword_kind__enum_values_by_name[5] = { { "COL_NAME_KEYWORD", 2 }, { "NO_KEYWORD", 0 }, { "RESERVED_KEYWORD", 4 }, { "TYPE_FUNC_NAME_KEYWORD", 3 }, { "UNRESERVED_KEYWORD", 1 }, }; const ProtobufCEnumDescriptor pg_query__keyword_kind__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.KeywordKind", "KeywordKind", "PgQuery__KeywordKind", "pg_query", 5, pg_query__keyword_kind__enum_values_by_number, 5, pg_query__keyword_kind__enum_values_by_name, 1, pg_query__keyword_kind__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; static const ProtobufCEnumValue pg_query__token__enum_values_by_number[494] = { { "NUL", "PG_QUERY__TOKEN__NUL", 0 }, { "ASCII_37", "PG_QUERY__TOKEN__ASCII_37", 37 }, { "ASCII_40", "PG_QUERY__TOKEN__ASCII_40", 40 }, { "ASCII_41", "PG_QUERY__TOKEN__ASCII_41", 41 }, { "ASCII_42", "PG_QUERY__TOKEN__ASCII_42", 42 }, { "ASCII_43", "PG_QUERY__TOKEN__ASCII_43", 43 }, { "ASCII_44", "PG_QUERY__TOKEN__ASCII_44", 44 }, { "ASCII_45", "PG_QUERY__TOKEN__ASCII_45", 45 }, { "ASCII_46", "PG_QUERY__TOKEN__ASCII_46", 46 }, { "ASCII_47", "PG_QUERY__TOKEN__ASCII_47", 47 }, { "ASCII_58", "PG_QUERY__TOKEN__ASCII_58", 58 }, { "ASCII_59", "PG_QUERY__TOKEN__ASCII_59", 59 }, { "ASCII_60", "PG_QUERY__TOKEN__ASCII_60", 60 }, { "ASCII_61", "PG_QUERY__TOKEN__ASCII_61", 61 }, { "ASCII_62", "PG_QUERY__TOKEN__ASCII_62", 62 }, { "ASCII_63", "PG_QUERY__TOKEN__ASCII_63", 63 }, { "ASCII_91", "PG_QUERY__TOKEN__ASCII_91", 91 }, { "ASCII_92", "PG_QUERY__TOKEN__ASCII_92", 92 }, { "ASCII_93", "PG_QUERY__TOKEN__ASCII_93", 93 }, { "ASCII_94", "PG_QUERY__TOKEN__ASCII_94", 94 }, { "IDENT", "PG_QUERY__TOKEN__IDENT", 258 }, { "UIDENT", "PG_QUERY__TOKEN__UIDENT", 259 }, { "FCONST", "PG_QUERY__TOKEN__FCONST", 260 }, { "SCONST", "PG_QUERY__TOKEN__SCONST", 261 }, { "USCONST", "PG_QUERY__TOKEN__USCONST", 262 }, { "BCONST", "PG_QUERY__TOKEN__BCONST", 263 }, { "XCONST", "PG_QUERY__TOKEN__XCONST", 264 }, { "Op", "PG_QUERY__TOKEN__Op", 265 }, { "ICONST", "PG_QUERY__TOKEN__ICONST", 266 }, { "PARAM", "PG_QUERY__TOKEN__PARAM", 267 }, { "TYPECAST", "PG_QUERY__TOKEN__TYPECAST", 268 }, { "DOT_DOT", "PG_QUERY__TOKEN__DOT_DOT", 269 }, { "COLON_EQUALS", "PG_QUERY__TOKEN__COLON_EQUALS", 270 }, { "EQUALS_GREATER", "PG_QUERY__TOKEN__EQUALS_GREATER", 271 }, { "LESS_EQUALS", "PG_QUERY__TOKEN__LESS_EQUALS", 272 }, { "GREATER_EQUALS", "PG_QUERY__TOKEN__GREATER_EQUALS", 273 }, { "NOT_EQUALS", "PG_QUERY__TOKEN__NOT_EQUALS", 274 }, { "SQL_COMMENT", "PG_QUERY__TOKEN__SQL_COMMENT", 275 }, { "C_COMMENT", "PG_QUERY__TOKEN__C_COMMENT", 276 }, { "ABORT_P", "PG_QUERY__TOKEN__ABORT_P", 277 }, { "ABSOLUTE_P", "PG_QUERY__TOKEN__ABSOLUTE_P", 278 }, { "ACCESS", "PG_QUERY__TOKEN__ACCESS", 279 }, { "ACTION", "PG_QUERY__TOKEN__ACTION", 280 }, { "ADD_P", "PG_QUERY__TOKEN__ADD_P", 281 }, { "ADMIN", "PG_QUERY__TOKEN__ADMIN", 282 }, { "AFTER", "PG_QUERY__TOKEN__AFTER", 283 }, { "AGGREGATE", "PG_QUERY__TOKEN__AGGREGATE", 284 }, { "ALL", "PG_QUERY__TOKEN__ALL", 285 }, { "ALSO", "PG_QUERY__TOKEN__ALSO", 286 }, { "ALTER", "PG_QUERY__TOKEN__ALTER", 287 }, { "ALWAYS", "PG_QUERY__TOKEN__ALWAYS", 288 }, { "ANALYSE", "PG_QUERY__TOKEN__ANALYSE", 289 }, { "ANALYZE", "PG_QUERY__TOKEN__ANALYZE", 290 }, { "AND", "PG_QUERY__TOKEN__AND", 291 }, { "ANY", "PG_QUERY__TOKEN__ANY", 292 }, { "ARRAY", "PG_QUERY__TOKEN__ARRAY", 293 }, { "AS", "PG_QUERY__TOKEN__AS", 294 }, { "ASC", "PG_QUERY__TOKEN__ASC", 295 }, { "ASSERTION", "PG_QUERY__TOKEN__ASSERTION", 296 }, { "ASSIGNMENT", "PG_QUERY__TOKEN__ASSIGNMENT", 297 }, { "ASYMMETRIC", "PG_QUERY__TOKEN__ASYMMETRIC", 298 }, { "AT", "PG_QUERY__TOKEN__AT", 299 }, { "ATTACH", "PG_QUERY__TOKEN__ATTACH", 300 }, { "ATTRIBUTE", "PG_QUERY__TOKEN__ATTRIBUTE", 301 }, { "AUTHORIZATION", "PG_QUERY__TOKEN__AUTHORIZATION", 302 }, { "BACKWARD", "PG_QUERY__TOKEN__BACKWARD", 303 }, { "BEFORE", "PG_QUERY__TOKEN__BEFORE", 304 }, { "BEGIN_P", "PG_QUERY__TOKEN__BEGIN_P", 305 }, { "BETWEEN", "PG_QUERY__TOKEN__BETWEEN", 306 }, { "BIGINT", "PG_QUERY__TOKEN__BIGINT", 307 }, { "BINARY", "PG_QUERY__TOKEN__BINARY", 308 }, { "BIT", "PG_QUERY__TOKEN__BIT", 309 }, { "BOOLEAN_P", "PG_QUERY__TOKEN__BOOLEAN_P", 310 }, { "BOTH", "PG_QUERY__TOKEN__BOTH", 311 }, { "BY", "PG_QUERY__TOKEN__BY", 312 }, { "CACHE", "PG_QUERY__TOKEN__CACHE", 313 }, { "CALL", "PG_QUERY__TOKEN__CALL", 314 }, { "CALLED", "PG_QUERY__TOKEN__CALLED", 315 }, { "CASCADE", "PG_QUERY__TOKEN__CASCADE", 316 }, { "CASCADED", "PG_QUERY__TOKEN__CASCADED", 317 }, { "CASE", "PG_QUERY__TOKEN__CASE", 318 }, { "CAST", "PG_QUERY__TOKEN__CAST", 319 }, { "CATALOG_P", "PG_QUERY__TOKEN__CATALOG_P", 320 }, { "CHAIN", "PG_QUERY__TOKEN__CHAIN", 321 }, { "CHAR_P", "PG_QUERY__TOKEN__CHAR_P", 322 }, { "CHARACTER", "PG_QUERY__TOKEN__CHARACTER", 323 }, { "CHARACTERISTICS", "PG_QUERY__TOKEN__CHARACTERISTICS", 324 }, { "CHECK", "PG_QUERY__TOKEN__CHECK", 325 }, { "CHECKPOINT", "PG_QUERY__TOKEN__CHECKPOINT", 326 }, { "CLASS", "PG_QUERY__TOKEN__CLASS", 327 }, { "CLOSE", "PG_QUERY__TOKEN__CLOSE", 328 }, { "CLUSTER", "PG_QUERY__TOKEN__CLUSTER", 329 }, { "COALESCE", "PG_QUERY__TOKEN__COALESCE", 330 }, { "COLLATE", "PG_QUERY__TOKEN__COLLATE", 331 }, { "COLLATION", "PG_QUERY__TOKEN__COLLATION", 332 }, { "COLUMN", "PG_QUERY__TOKEN__COLUMN", 333 }, { "COLUMNS", "PG_QUERY__TOKEN__COLUMNS", 334 }, { "COMMENT", "PG_QUERY__TOKEN__COMMENT", 335 }, { "COMMENTS", "PG_QUERY__TOKEN__COMMENTS", 336 }, { "COMMIT", "PG_QUERY__TOKEN__COMMIT", 337 }, { "COMMITTED", "PG_QUERY__TOKEN__COMMITTED", 338 }, { "CONCURRENTLY", "PG_QUERY__TOKEN__CONCURRENTLY", 339 }, { "CONFIGURATION", "PG_QUERY__TOKEN__CONFIGURATION", 340 }, { "CONFLICT", "PG_QUERY__TOKEN__CONFLICT", 341 }, { "CONNECTION", "PG_QUERY__TOKEN__CONNECTION", 342 }, { "CONSTRAINT", "PG_QUERY__TOKEN__CONSTRAINT", 343 }, { "CONSTRAINTS", "PG_QUERY__TOKEN__CONSTRAINTS", 344 }, { "CONTENT_P", "PG_QUERY__TOKEN__CONTENT_P", 345 }, { "CONTINUE_P", "PG_QUERY__TOKEN__CONTINUE_P", 346 }, { "CONVERSION_P", "PG_QUERY__TOKEN__CONVERSION_P", 347 }, { "COPY", "PG_QUERY__TOKEN__COPY", 348 }, { "COST", "PG_QUERY__TOKEN__COST", 349 }, { "CREATE", "PG_QUERY__TOKEN__CREATE", 350 }, { "CROSS", "PG_QUERY__TOKEN__CROSS", 351 }, { "CSV", "PG_QUERY__TOKEN__CSV", 352 }, { "CUBE", "PG_QUERY__TOKEN__CUBE", 353 }, { "CURRENT_P", "PG_QUERY__TOKEN__CURRENT_P", 354 }, { "CURRENT_CATALOG", "PG_QUERY__TOKEN__CURRENT_CATALOG", 355 }, { "CURRENT_DATE", "PG_QUERY__TOKEN__CURRENT_DATE", 356 }, { "CURRENT_ROLE", "PG_QUERY__TOKEN__CURRENT_ROLE", 357 }, { "CURRENT_SCHEMA", "PG_QUERY__TOKEN__CURRENT_SCHEMA", 358 }, { "CURRENT_TIME", "PG_QUERY__TOKEN__CURRENT_TIME", 359 }, { "CURRENT_TIMESTAMP", "PG_QUERY__TOKEN__CURRENT_TIMESTAMP", 360 }, { "CURRENT_USER", "PG_QUERY__TOKEN__CURRENT_USER", 361 }, { "CURSOR", "PG_QUERY__TOKEN__CURSOR", 362 }, { "CYCLE", "PG_QUERY__TOKEN__CYCLE", 363 }, { "DATA_P", "PG_QUERY__TOKEN__DATA_P", 364 }, { "DATABASE", "PG_QUERY__TOKEN__DATABASE", 365 }, { "DAY_P", "PG_QUERY__TOKEN__DAY_P", 366 }, { "DEALLOCATE", "PG_QUERY__TOKEN__DEALLOCATE", 367 }, { "DEC", "PG_QUERY__TOKEN__DEC", 368 }, { "DECIMAL_P", "PG_QUERY__TOKEN__DECIMAL_P", 369 }, { "DECLARE", "PG_QUERY__TOKEN__DECLARE", 370 }, { "DEFAULT", "PG_QUERY__TOKEN__DEFAULT", 371 }, { "DEFAULTS", "PG_QUERY__TOKEN__DEFAULTS", 372 }, { "DEFERRABLE", "PG_QUERY__TOKEN__DEFERRABLE", 373 }, { "DEFERRED", "PG_QUERY__TOKEN__DEFERRED", 374 }, { "DEFINER", "PG_QUERY__TOKEN__DEFINER", 375 }, { "DELETE_P", "PG_QUERY__TOKEN__DELETE_P", 376 }, { "DELIMITER", "PG_QUERY__TOKEN__DELIMITER", 377 }, { "DELIMITERS", "PG_QUERY__TOKEN__DELIMITERS", 378 }, { "DEPENDS", "PG_QUERY__TOKEN__DEPENDS", 379 }, { "DESC", "PG_QUERY__TOKEN__DESC", 380 }, { "DETACH", "PG_QUERY__TOKEN__DETACH", 381 }, { "DICTIONARY", "PG_QUERY__TOKEN__DICTIONARY", 382 }, { "DISABLE_P", "PG_QUERY__TOKEN__DISABLE_P", 383 }, { "DISCARD", "PG_QUERY__TOKEN__DISCARD", 384 }, { "DISTINCT", "PG_QUERY__TOKEN__DISTINCT", 385 }, { "DO", "PG_QUERY__TOKEN__DO", 386 }, { "DOCUMENT_P", "PG_QUERY__TOKEN__DOCUMENT_P", 387 }, { "DOMAIN_P", "PG_QUERY__TOKEN__DOMAIN_P", 388 }, { "DOUBLE_P", "PG_QUERY__TOKEN__DOUBLE_P", 389 }, { "DROP", "PG_QUERY__TOKEN__DROP", 390 }, { "EACH", "PG_QUERY__TOKEN__EACH", 391 }, { "ELSE", "PG_QUERY__TOKEN__ELSE", 392 }, { "ENABLE_P", "PG_QUERY__TOKEN__ENABLE_P", 393 }, { "ENCODING", "PG_QUERY__TOKEN__ENCODING", 394 }, { "ENCRYPTED", "PG_QUERY__TOKEN__ENCRYPTED", 395 }, { "END_P", "PG_QUERY__TOKEN__END_P", 396 }, { "ENUM_P", "PG_QUERY__TOKEN__ENUM_P", 397 }, { "ESCAPE", "PG_QUERY__TOKEN__ESCAPE", 398 }, { "EVENT", "PG_QUERY__TOKEN__EVENT", 399 }, { "EXCEPT", "PG_QUERY__TOKEN__EXCEPT", 400 }, { "EXCLUDE", "PG_QUERY__TOKEN__EXCLUDE", 401 }, { "EXCLUDING", "PG_QUERY__TOKEN__EXCLUDING", 402 }, { "EXCLUSIVE", "PG_QUERY__TOKEN__EXCLUSIVE", 403 }, { "EXECUTE", "PG_QUERY__TOKEN__EXECUTE", 404 }, { "EXISTS", "PG_QUERY__TOKEN__EXISTS", 405 }, { "EXPLAIN", "PG_QUERY__TOKEN__EXPLAIN", 406 }, { "EXPRESSION", "PG_QUERY__TOKEN__EXPRESSION", 407 }, { "EXTENSION", "PG_QUERY__TOKEN__EXTENSION", 408 }, { "EXTERNAL", "PG_QUERY__TOKEN__EXTERNAL", 409 }, { "EXTRACT", "PG_QUERY__TOKEN__EXTRACT", 410 }, { "FALSE_P", "PG_QUERY__TOKEN__FALSE_P", 411 }, { "FAMILY", "PG_QUERY__TOKEN__FAMILY", 412 }, { "FETCH", "PG_QUERY__TOKEN__FETCH", 413 }, { "FILTER", "PG_QUERY__TOKEN__FILTER", 414 }, { "FIRST_P", "PG_QUERY__TOKEN__FIRST_P", 415 }, { "FLOAT_P", "PG_QUERY__TOKEN__FLOAT_P", 416 }, { "FOLLOWING", "PG_QUERY__TOKEN__FOLLOWING", 417 }, { "FOR", "PG_QUERY__TOKEN__FOR", 418 }, { "FORCE", "PG_QUERY__TOKEN__FORCE", 419 }, { "FOREIGN", "PG_QUERY__TOKEN__FOREIGN", 420 }, { "FORWARD", "PG_QUERY__TOKEN__FORWARD", 421 }, { "FREEZE", "PG_QUERY__TOKEN__FREEZE", 422 }, { "FROM", "PG_QUERY__TOKEN__FROM", 423 }, { "FULL", "PG_QUERY__TOKEN__FULL", 424 }, { "FUNCTION", "PG_QUERY__TOKEN__FUNCTION", 425 }, { "FUNCTIONS", "PG_QUERY__TOKEN__FUNCTIONS", 426 }, { "GENERATED", "PG_QUERY__TOKEN__GENERATED", 427 }, { "GLOBAL", "PG_QUERY__TOKEN__GLOBAL", 428 }, { "GRANT", "PG_QUERY__TOKEN__GRANT", 429 }, { "GRANTED", "PG_QUERY__TOKEN__GRANTED", 430 }, { "GREATEST", "PG_QUERY__TOKEN__GREATEST", 431 }, { "GROUP_P", "PG_QUERY__TOKEN__GROUP_P", 432 }, { "GROUPING", "PG_QUERY__TOKEN__GROUPING", 433 }, { "GROUPS", "PG_QUERY__TOKEN__GROUPS", 434 }, { "HANDLER", "PG_QUERY__TOKEN__HANDLER", 435 }, { "HAVING", "PG_QUERY__TOKEN__HAVING", 436 }, { "HEADER_P", "PG_QUERY__TOKEN__HEADER_P", 437 }, { "HOLD", "PG_QUERY__TOKEN__HOLD", 438 }, { "HOUR_P", "PG_QUERY__TOKEN__HOUR_P", 439 }, { "IDENTITY_P", "PG_QUERY__TOKEN__IDENTITY_P", 440 }, { "IF_P", "PG_QUERY__TOKEN__IF_P", 441 }, { "ILIKE", "PG_QUERY__TOKEN__ILIKE", 442 }, { "IMMEDIATE", "PG_QUERY__TOKEN__IMMEDIATE", 443 }, { "IMMUTABLE", "PG_QUERY__TOKEN__IMMUTABLE", 444 }, { "IMPLICIT_P", "PG_QUERY__TOKEN__IMPLICIT_P", 445 }, { "IMPORT_P", "PG_QUERY__TOKEN__IMPORT_P", 446 }, { "IN_P", "PG_QUERY__TOKEN__IN_P", 447 }, { "INCLUDE", "PG_QUERY__TOKEN__INCLUDE", 448 }, { "INCLUDING", "PG_QUERY__TOKEN__INCLUDING", 449 }, { "INCREMENT", "PG_QUERY__TOKEN__INCREMENT", 450 }, { "INDEX", "PG_QUERY__TOKEN__INDEX", 451 }, { "INDEXES", "PG_QUERY__TOKEN__INDEXES", 452 }, { "INHERIT", "PG_QUERY__TOKEN__INHERIT", 453 }, { "INHERITS", "PG_QUERY__TOKEN__INHERITS", 454 }, { "INITIALLY", "PG_QUERY__TOKEN__INITIALLY", 455 }, { "INLINE_P", "PG_QUERY__TOKEN__INLINE_P", 456 }, { "INNER_P", "PG_QUERY__TOKEN__INNER_P", 457 }, { "INOUT", "PG_QUERY__TOKEN__INOUT", 458 }, { "INPUT_P", "PG_QUERY__TOKEN__INPUT_P", 459 }, { "INSENSITIVE", "PG_QUERY__TOKEN__INSENSITIVE", 460 }, { "INSERT", "PG_QUERY__TOKEN__INSERT", 461 }, { "INSTEAD", "PG_QUERY__TOKEN__INSTEAD", 462 }, { "INT_P", "PG_QUERY__TOKEN__INT_P", 463 }, { "INTEGER", "PG_QUERY__TOKEN__INTEGER", 464 }, { "INTERSECT", "PG_QUERY__TOKEN__INTERSECT", 465 }, { "INTERVAL", "PG_QUERY__TOKEN__INTERVAL", 466 }, { "INTO", "PG_QUERY__TOKEN__INTO", 467 }, { "INVOKER", "PG_QUERY__TOKEN__INVOKER", 468 }, { "IS", "PG_QUERY__TOKEN__IS", 469 }, { "ISNULL", "PG_QUERY__TOKEN__ISNULL", 470 }, { "ISOLATION", "PG_QUERY__TOKEN__ISOLATION", 471 }, { "JOIN", "PG_QUERY__TOKEN__JOIN", 472 }, { "KEY", "PG_QUERY__TOKEN__KEY", 473 }, { "LABEL", "PG_QUERY__TOKEN__LABEL", 474 }, { "LANGUAGE", "PG_QUERY__TOKEN__LANGUAGE", 475 }, { "LARGE_P", "PG_QUERY__TOKEN__LARGE_P", 476 }, { "LAST_P", "PG_QUERY__TOKEN__LAST_P", 477 }, { "LATERAL_P", "PG_QUERY__TOKEN__LATERAL_P", 478 }, { "LEADING", "PG_QUERY__TOKEN__LEADING", 479 }, { "LEAKPROOF", "PG_QUERY__TOKEN__LEAKPROOF", 480 }, { "LEAST", "PG_QUERY__TOKEN__LEAST", 481 }, { "LEFT", "PG_QUERY__TOKEN__LEFT", 482 }, { "LEVEL", "PG_QUERY__TOKEN__LEVEL", 483 }, { "LIKE", "PG_QUERY__TOKEN__LIKE", 484 }, { "LIMIT", "PG_QUERY__TOKEN__LIMIT", 485 }, { "LISTEN", "PG_QUERY__TOKEN__LISTEN", 486 }, { "LOAD", "PG_QUERY__TOKEN__LOAD", 487 }, { "LOCAL", "PG_QUERY__TOKEN__LOCAL", 488 }, { "LOCALTIME", "PG_QUERY__TOKEN__LOCALTIME", 489 }, { "LOCALTIMESTAMP", "PG_QUERY__TOKEN__LOCALTIMESTAMP", 490 }, { "LOCATION", "PG_QUERY__TOKEN__LOCATION", 491 }, { "LOCK_P", "PG_QUERY__TOKEN__LOCK_P", 492 }, { "LOCKED", "PG_QUERY__TOKEN__LOCKED", 493 }, { "LOGGED", "PG_QUERY__TOKEN__LOGGED", 494 }, { "MAPPING", "PG_QUERY__TOKEN__MAPPING", 495 }, { "MATCH", "PG_QUERY__TOKEN__MATCH", 496 }, { "MATERIALIZED", "PG_QUERY__TOKEN__MATERIALIZED", 497 }, { "MAXVALUE", "PG_QUERY__TOKEN__MAXVALUE", 498 }, { "METHOD", "PG_QUERY__TOKEN__METHOD", 499 }, { "MINUTE_P", "PG_QUERY__TOKEN__MINUTE_P", 500 }, { "MINVALUE", "PG_QUERY__TOKEN__MINVALUE", 501 }, { "MODE", "PG_QUERY__TOKEN__MODE", 502 }, { "MONTH_P", "PG_QUERY__TOKEN__MONTH_P", 503 }, { "MOVE", "PG_QUERY__TOKEN__MOVE", 504 }, { "NAME_P", "PG_QUERY__TOKEN__NAME_P", 505 }, { "NAMES", "PG_QUERY__TOKEN__NAMES", 506 }, { "NATIONAL", "PG_QUERY__TOKEN__NATIONAL", 507 }, { "NATURAL", "PG_QUERY__TOKEN__NATURAL", 508 }, { "NCHAR", "PG_QUERY__TOKEN__NCHAR", 509 }, { "NEW", "PG_QUERY__TOKEN__NEW", 510 }, { "NEXT", "PG_QUERY__TOKEN__NEXT", 511 }, { "NFC", "PG_QUERY__TOKEN__NFC", 512 }, { "NFD", "PG_QUERY__TOKEN__NFD", 513 }, { "NFKC", "PG_QUERY__TOKEN__NFKC", 514 }, { "NFKD", "PG_QUERY__TOKEN__NFKD", 515 }, { "NO", "PG_QUERY__TOKEN__NO", 516 }, { "NONE", "PG_QUERY__TOKEN__NONE", 517 }, { "NORMALIZE", "PG_QUERY__TOKEN__NORMALIZE", 518 }, { "NORMALIZED", "PG_QUERY__TOKEN__NORMALIZED", 519 }, { "NOT", "PG_QUERY__TOKEN__NOT", 520 }, { "NOTHING", "PG_QUERY__TOKEN__NOTHING", 521 }, { "NOTIFY", "PG_QUERY__TOKEN__NOTIFY", 522 }, { "NOTNULL", "PG_QUERY__TOKEN__NOTNULL", 523 }, { "NOWAIT", "PG_QUERY__TOKEN__NOWAIT", 524 }, { "NULL_P", "PG_QUERY__TOKEN__NULL_P", 525 }, { "NULLIF", "PG_QUERY__TOKEN__NULLIF", 526 }, { "NULLS_P", "PG_QUERY__TOKEN__NULLS_P", 527 }, { "NUMERIC", "PG_QUERY__TOKEN__NUMERIC", 528 }, { "OBJECT_P", "PG_QUERY__TOKEN__OBJECT_P", 529 }, { "OF", "PG_QUERY__TOKEN__OF", 530 }, { "OFF", "PG_QUERY__TOKEN__OFF", 531 }, { "OFFSET", "PG_QUERY__TOKEN__OFFSET", 532 }, { "OIDS", "PG_QUERY__TOKEN__OIDS", 533 }, { "OLD", "PG_QUERY__TOKEN__OLD", 534 }, { "ON", "PG_QUERY__TOKEN__ON", 535 }, { "ONLY", "PG_QUERY__TOKEN__ONLY", 536 }, { "OPERATOR", "PG_QUERY__TOKEN__OPERATOR", 537 }, { "OPTION", "PG_QUERY__TOKEN__OPTION", 538 }, { "OPTIONS", "PG_QUERY__TOKEN__OPTIONS", 539 }, { "OR", "PG_QUERY__TOKEN__OR", 540 }, { "ORDER", "PG_QUERY__TOKEN__ORDER", 541 }, { "ORDINALITY", "PG_QUERY__TOKEN__ORDINALITY", 542 }, { "OTHERS", "PG_QUERY__TOKEN__OTHERS", 543 }, { "OUT_P", "PG_QUERY__TOKEN__OUT_P", 544 }, { "OUTER_P", "PG_QUERY__TOKEN__OUTER_P", 545 }, { "OVER", "PG_QUERY__TOKEN__OVER", 546 }, { "OVERLAPS", "PG_QUERY__TOKEN__OVERLAPS", 547 }, { "OVERLAY", "PG_QUERY__TOKEN__OVERLAY", 548 }, { "OVERRIDING", "PG_QUERY__TOKEN__OVERRIDING", 549 }, { "OWNED", "PG_QUERY__TOKEN__OWNED", 550 }, { "OWNER", "PG_QUERY__TOKEN__OWNER", 551 }, { "PARALLEL", "PG_QUERY__TOKEN__PARALLEL", 552 }, { "PARSER", "PG_QUERY__TOKEN__PARSER", 553 }, { "PARTIAL", "PG_QUERY__TOKEN__PARTIAL", 554 }, { "PARTITION", "PG_QUERY__TOKEN__PARTITION", 555 }, { "PASSING", "PG_QUERY__TOKEN__PASSING", 556 }, { "PASSWORD", "PG_QUERY__TOKEN__PASSWORD", 557 }, { "PLACING", "PG_QUERY__TOKEN__PLACING", 558 }, { "PLANS", "PG_QUERY__TOKEN__PLANS", 559 }, { "POLICY", "PG_QUERY__TOKEN__POLICY", 560 }, { "POSITION", "PG_QUERY__TOKEN__POSITION", 561 }, { "PRECEDING", "PG_QUERY__TOKEN__PRECEDING", 562 }, { "PRECISION", "PG_QUERY__TOKEN__PRECISION", 563 }, { "PRESERVE", "PG_QUERY__TOKEN__PRESERVE", 564 }, { "PREPARE", "PG_QUERY__TOKEN__PREPARE", 565 }, { "PREPARED", "PG_QUERY__TOKEN__PREPARED", 566 }, { "PRIMARY", "PG_QUERY__TOKEN__PRIMARY", 567 }, { "PRIOR", "PG_QUERY__TOKEN__PRIOR", 568 }, { "PRIVILEGES", "PG_QUERY__TOKEN__PRIVILEGES", 569 }, { "PROCEDURAL", "PG_QUERY__TOKEN__PROCEDURAL", 570 }, { "PROCEDURE", "PG_QUERY__TOKEN__PROCEDURE", 571 }, { "PROCEDURES", "PG_QUERY__TOKEN__PROCEDURES", 572 }, { "PROGRAM", "PG_QUERY__TOKEN__PROGRAM", 573 }, { "PUBLICATION", "PG_QUERY__TOKEN__PUBLICATION", 574 }, { "QUOTE", "PG_QUERY__TOKEN__QUOTE", 575 }, { "RANGE", "PG_QUERY__TOKEN__RANGE", 576 }, { "READ", "PG_QUERY__TOKEN__READ", 577 }, { "REAL", "PG_QUERY__TOKEN__REAL", 578 }, { "REASSIGN", "PG_QUERY__TOKEN__REASSIGN", 579 }, { "RECHECK", "PG_QUERY__TOKEN__RECHECK", 580 }, { "RECURSIVE", "PG_QUERY__TOKEN__RECURSIVE", 581 }, { "REF", "PG_QUERY__TOKEN__REF", 582 }, { "REFERENCES", "PG_QUERY__TOKEN__REFERENCES", 583 }, { "REFERENCING", "PG_QUERY__TOKEN__REFERENCING", 584 }, { "REFRESH", "PG_QUERY__TOKEN__REFRESH", 585 }, { "REINDEX", "PG_QUERY__TOKEN__REINDEX", 586 }, { "RELATIVE_P", "PG_QUERY__TOKEN__RELATIVE_P", 587 }, { "RELEASE", "PG_QUERY__TOKEN__RELEASE", 588 }, { "RENAME", "PG_QUERY__TOKEN__RENAME", 589 }, { "REPEATABLE", "PG_QUERY__TOKEN__REPEATABLE", 590 }, { "REPLACE", "PG_QUERY__TOKEN__REPLACE", 591 }, { "REPLICA", "PG_QUERY__TOKEN__REPLICA", 592 }, { "RESET", "PG_QUERY__TOKEN__RESET", 593 }, { "RESTART", "PG_QUERY__TOKEN__RESTART", 594 }, { "RESTRICT", "PG_QUERY__TOKEN__RESTRICT", 595 }, { "RETURNING", "PG_QUERY__TOKEN__RETURNING", 596 }, { "RETURNS", "PG_QUERY__TOKEN__RETURNS", 597 }, { "REVOKE", "PG_QUERY__TOKEN__REVOKE", 598 }, { "RIGHT", "PG_QUERY__TOKEN__RIGHT", 599 }, { "ROLE", "PG_QUERY__TOKEN__ROLE", 600 }, { "ROLLBACK", "PG_QUERY__TOKEN__ROLLBACK", 601 }, { "ROLLUP", "PG_QUERY__TOKEN__ROLLUP", 602 }, { "ROUTINE", "PG_QUERY__TOKEN__ROUTINE", 603 }, { "ROUTINES", "PG_QUERY__TOKEN__ROUTINES", 604 }, { "ROW", "PG_QUERY__TOKEN__ROW", 605 }, { "ROWS", "PG_QUERY__TOKEN__ROWS", 606 }, { "RULE", "PG_QUERY__TOKEN__RULE", 607 }, { "SAVEPOINT", "PG_QUERY__TOKEN__SAVEPOINT", 608 }, { "SCHEMA", "PG_QUERY__TOKEN__SCHEMA", 609 }, { "SCHEMAS", "PG_QUERY__TOKEN__SCHEMAS", 610 }, { "SCROLL", "PG_QUERY__TOKEN__SCROLL", 611 }, { "SEARCH", "PG_QUERY__TOKEN__SEARCH", 612 }, { "SECOND_P", "PG_QUERY__TOKEN__SECOND_P", 613 }, { "SECURITY", "PG_QUERY__TOKEN__SECURITY", 614 }, { "SELECT", "PG_QUERY__TOKEN__SELECT", 615 }, { "SEQUENCE", "PG_QUERY__TOKEN__SEQUENCE", 616 }, { "SEQUENCES", "PG_QUERY__TOKEN__SEQUENCES", 617 }, { "SERIALIZABLE", "PG_QUERY__TOKEN__SERIALIZABLE", 618 }, { "SERVER", "PG_QUERY__TOKEN__SERVER", 619 }, { "SESSION", "PG_QUERY__TOKEN__SESSION", 620 }, { "SESSION_USER", "PG_QUERY__TOKEN__SESSION_USER", 621 }, { "SET", "PG_QUERY__TOKEN__SET", 622 }, { "SETS", "PG_QUERY__TOKEN__SETS", 623 }, { "SETOF", "PG_QUERY__TOKEN__SETOF", 624 }, { "SHARE", "PG_QUERY__TOKEN__SHARE", 625 }, { "SHOW", "PG_QUERY__TOKEN__SHOW", 626 }, { "SIMILAR", "PG_QUERY__TOKEN__SIMILAR", 627 }, { "SIMPLE", "PG_QUERY__TOKEN__SIMPLE", 628 }, { "SKIP", "PG_QUERY__TOKEN__SKIP", 629 }, { "SMALLINT", "PG_QUERY__TOKEN__SMALLINT", 630 }, { "SNAPSHOT", "PG_QUERY__TOKEN__SNAPSHOT", 631 }, { "SOME", "PG_QUERY__TOKEN__SOME", 632 }, { "SQL_P", "PG_QUERY__TOKEN__SQL_P", 633 }, { "STABLE", "PG_QUERY__TOKEN__STABLE", 634 }, { "STANDALONE_P", "PG_QUERY__TOKEN__STANDALONE_P", 635 }, { "START", "PG_QUERY__TOKEN__START", 636 }, { "STATEMENT", "PG_QUERY__TOKEN__STATEMENT", 637 }, { "STATISTICS", "PG_QUERY__TOKEN__STATISTICS", 638 }, { "STDIN", "PG_QUERY__TOKEN__STDIN", 639 }, { "STDOUT", "PG_QUERY__TOKEN__STDOUT", 640 }, { "STORAGE", "PG_QUERY__TOKEN__STORAGE", 641 }, { "STORED", "PG_QUERY__TOKEN__STORED", 642 }, { "STRICT_P", "PG_QUERY__TOKEN__STRICT_P", 643 }, { "STRIP_P", "PG_QUERY__TOKEN__STRIP_P", 644 }, { "SUBSCRIPTION", "PG_QUERY__TOKEN__SUBSCRIPTION", 645 }, { "SUBSTRING", "PG_QUERY__TOKEN__SUBSTRING", 646 }, { "SUPPORT", "PG_QUERY__TOKEN__SUPPORT", 647 }, { "SYMMETRIC", "PG_QUERY__TOKEN__SYMMETRIC", 648 }, { "SYSID", "PG_QUERY__TOKEN__SYSID", 649 }, { "SYSTEM_P", "PG_QUERY__TOKEN__SYSTEM_P", 650 }, { "TABLE", "PG_QUERY__TOKEN__TABLE", 651 }, { "TABLES", "PG_QUERY__TOKEN__TABLES", 652 }, { "TABLESAMPLE", "PG_QUERY__TOKEN__TABLESAMPLE", 653 }, { "TABLESPACE", "PG_QUERY__TOKEN__TABLESPACE", 654 }, { "TEMP", "PG_QUERY__TOKEN__TEMP", 655 }, { "TEMPLATE", "PG_QUERY__TOKEN__TEMPLATE", 656 }, { "TEMPORARY", "PG_QUERY__TOKEN__TEMPORARY", 657 }, { "TEXT_P", "PG_QUERY__TOKEN__TEXT_P", 658 }, { "THEN", "PG_QUERY__TOKEN__THEN", 659 }, { "TIES", "PG_QUERY__TOKEN__TIES", 660 }, { "TIME", "PG_QUERY__TOKEN__TIME", 661 }, { "TIMESTAMP", "PG_QUERY__TOKEN__TIMESTAMP", 662 }, { "TO", "PG_QUERY__TOKEN__TO", 663 }, { "TRAILING", "PG_QUERY__TOKEN__TRAILING", 664 }, { "TRANSACTION", "PG_QUERY__TOKEN__TRANSACTION", 665 }, { "TRANSFORM", "PG_QUERY__TOKEN__TRANSFORM", 666 }, { "TREAT", "PG_QUERY__TOKEN__TREAT", 667 }, { "TRIGGER", "PG_QUERY__TOKEN__TRIGGER", 668 }, { "TRIM", "PG_QUERY__TOKEN__TRIM", 669 }, { "TRUE_P", "PG_QUERY__TOKEN__TRUE_P", 670 }, { "TRUNCATE", "PG_QUERY__TOKEN__TRUNCATE", 671 }, { "TRUSTED", "PG_QUERY__TOKEN__TRUSTED", 672 }, { "TYPE_P", "PG_QUERY__TOKEN__TYPE_P", 673 }, { "TYPES_P", "PG_QUERY__TOKEN__TYPES_P", 674 }, { "UESCAPE", "PG_QUERY__TOKEN__UESCAPE", 675 }, { "UNBOUNDED", "PG_QUERY__TOKEN__UNBOUNDED", 676 }, { "UNCOMMITTED", "PG_QUERY__TOKEN__UNCOMMITTED", 677 }, { "UNENCRYPTED", "PG_QUERY__TOKEN__UNENCRYPTED", 678 }, { "UNION", "PG_QUERY__TOKEN__UNION", 679 }, { "UNIQUE", "PG_QUERY__TOKEN__UNIQUE", 680 }, { "UNKNOWN", "PG_QUERY__TOKEN__UNKNOWN", 681 }, { "UNLISTEN", "PG_QUERY__TOKEN__UNLISTEN", 682 }, { "UNLOGGED", "PG_QUERY__TOKEN__UNLOGGED", 683 }, { "UNTIL", "PG_QUERY__TOKEN__UNTIL", 684 }, { "UPDATE", "PG_QUERY__TOKEN__UPDATE", 685 }, { "USER", "PG_QUERY__TOKEN__USER", 686 }, { "USING", "PG_QUERY__TOKEN__USING", 687 }, { "VACUUM", "PG_QUERY__TOKEN__VACUUM", 688 }, { "VALID", "PG_QUERY__TOKEN__VALID", 689 }, { "VALIDATE", "PG_QUERY__TOKEN__VALIDATE", 690 }, { "VALIDATOR", "PG_QUERY__TOKEN__VALIDATOR", 691 }, { "VALUE_P", "PG_QUERY__TOKEN__VALUE_P", 692 }, { "VALUES", "PG_QUERY__TOKEN__VALUES", 693 }, { "VARCHAR", "PG_QUERY__TOKEN__VARCHAR", 694 }, { "VARIADIC", "PG_QUERY__TOKEN__VARIADIC", 695 }, { "VARYING", "PG_QUERY__TOKEN__VARYING", 696 }, { "VERBOSE", "PG_QUERY__TOKEN__VERBOSE", 697 }, { "VERSION_P", "PG_QUERY__TOKEN__VERSION_P", 698 }, { "VIEW", "PG_QUERY__TOKEN__VIEW", 699 }, { "VIEWS", "PG_QUERY__TOKEN__VIEWS", 700 }, { "VOLATILE", "PG_QUERY__TOKEN__VOLATILE", 701 }, { "WHEN", "PG_QUERY__TOKEN__WHEN", 702 }, { "WHERE", "PG_QUERY__TOKEN__WHERE", 703 }, { "WHITESPACE_P", "PG_QUERY__TOKEN__WHITESPACE_P", 704 }, { "WINDOW", "PG_QUERY__TOKEN__WINDOW", 705 }, { "WITH", "PG_QUERY__TOKEN__WITH", 706 }, { "WITHIN", "PG_QUERY__TOKEN__WITHIN", 707 }, { "WITHOUT", "PG_QUERY__TOKEN__WITHOUT", 708 }, { "WORK", "PG_QUERY__TOKEN__WORK", 709 }, { "WRAPPER", "PG_QUERY__TOKEN__WRAPPER", 710 }, { "WRITE", "PG_QUERY__TOKEN__WRITE", 711 }, { "XML_P", "PG_QUERY__TOKEN__XML_P", 712 }, { "XMLATTRIBUTES", "PG_QUERY__TOKEN__XMLATTRIBUTES", 713 }, { "XMLCONCAT", "PG_QUERY__TOKEN__XMLCONCAT", 714 }, { "XMLELEMENT", "PG_QUERY__TOKEN__XMLELEMENT", 715 }, { "XMLEXISTS", "PG_QUERY__TOKEN__XMLEXISTS", 716 }, { "XMLFOREST", "PG_QUERY__TOKEN__XMLFOREST", 717 }, { "XMLNAMESPACES", "PG_QUERY__TOKEN__XMLNAMESPACES", 718 }, { "XMLPARSE", "PG_QUERY__TOKEN__XMLPARSE", 719 }, { "XMLPI", "PG_QUERY__TOKEN__XMLPI", 720 }, { "XMLROOT", "PG_QUERY__TOKEN__XMLROOT", 721 }, { "XMLSERIALIZE", "PG_QUERY__TOKEN__XMLSERIALIZE", 722 }, { "XMLTABLE", "PG_QUERY__TOKEN__XMLTABLE", 723 }, { "YEAR_P", "PG_QUERY__TOKEN__YEAR_P", 724 }, { "YES_P", "PG_QUERY__TOKEN__YES_P", 725 }, { "ZONE", "PG_QUERY__TOKEN__ZONE", 726 }, { "NOT_LA", "PG_QUERY__TOKEN__NOT_LA", 727 }, { "NULLS_LA", "PG_QUERY__TOKEN__NULLS_LA", 728 }, { "WITH_LA", "PG_QUERY__TOKEN__WITH_LA", 729 }, { "POSTFIXOP", "PG_QUERY__TOKEN__POSTFIXOP", 730 }, { "UMINUS", "PG_QUERY__TOKEN__UMINUS", 731 }, }; static const ProtobufCIntRange pg_query__token__value_ranges[] = { {0, 0},{37, 1},{40, 2},{58, 10},{91, 16},{258, 20},{0, 494} }; static const ProtobufCEnumValueIndex pg_query__token__enum_values_by_name[494] = { { "ABORT_P", 39 }, { "ABSOLUTE_P", 40 }, { "ACCESS", 41 }, { "ACTION", 42 }, { "ADD_P", 43 }, { "ADMIN", 44 }, { "AFTER", 45 }, { "AGGREGATE", 46 }, { "ALL", 47 }, { "ALSO", 48 }, { "ALTER", 49 }, { "ALWAYS", 50 }, { "ANALYSE", 51 }, { "ANALYZE", 52 }, { "AND", 53 }, { "ANY", 54 }, { "ARRAY", 55 }, { "AS", 56 }, { "ASC", 57 }, { "ASCII_37", 1 }, { "ASCII_40", 2 }, { "ASCII_41", 3 }, { "ASCII_42", 4 }, { "ASCII_43", 5 }, { "ASCII_44", 6 }, { "ASCII_45", 7 }, { "ASCII_46", 8 }, { "ASCII_47", 9 }, { "ASCII_58", 10 }, { "ASCII_59", 11 }, { "ASCII_60", 12 }, { "ASCII_61", 13 }, { "ASCII_62", 14 }, { "ASCII_63", 15 }, { "ASCII_91", 16 }, { "ASCII_92", 17 }, { "ASCII_93", 18 }, { "ASCII_94", 19 }, { "ASSERTION", 58 }, { "ASSIGNMENT", 59 }, { "ASYMMETRIC", 60 }, { "AT", 61 }, { "ATTACH", 62 }, { "ATTRIBUTE", 63 }, { "AUTHORIZATION", 64 }, { "BACKWARD", 65 }, { "BCONST", 25 }, { "BEFORE", 66 }, { "BEGIN_P", 67 }, { "BETWEEN", 68 }, { "BIGINT", 69 }, { "BINARY", 70 }, { "BIT", 71 }, { "BOOLEAN_P", 72 }, { "BOTH", 73 }, { "BY", 74 }, { "CACHE", 75 }, { "CALL", 76 }, { "CALLED", 77 }, { "CASCADE", 78 }, { "CASCADED", 79 }, { "CASE", 80 }, { "CAST", 81 }, { "CATALOG_P", 82 }, { "CHAIN", 83 }, { "CHARACTER", 85 }, { "CHARACTERISTICS", 86 }, { "CHAR_P", 84 }, { "CHECK", 87 }, { "CHECKPOINT", 88 }, { "CLASS", 89 }, { "CLOSE", 90 }, { "CLUSTER", 91 }, { "COALESCE", 92 }, { "COLLATE", 93 }, { "COLLATION", 94 }, { "COLON_EQUALS", 32 }, { "COLUMN", 95 }, { "COLUMNS", 96 }, { "COMMENT", 97 }, { "COMMENTS", 98 }, { "COMMIT", 99 }, { "COMMITTED", 100 }, { "CONCURRENTLY", 101 }, { "CONFIGURATION", 102 }, { "CONFLICT", 103 }, { "CONNECTION", 104 }, { "CONSTRAINT", 105 }, { "CONSTRAINTS", 106 }, { "CONTENT_P", 107 }, { "CONTINUE_P", 108 }, { "CONVERSION_P", 109 }, { "COPY", 110 }, { "COST", 111 }, { "CREATE", 112 }, { "CROSS", 113 }, { "CSV", 114 }, { "CUBE", 115 }, { "CURRENT_CATALOG", 117 }, { "CURRENT_DATE", 118 }, { "CURRENT_P", 116 }, { "CURRENT_ROLE", 119 }, { "CURRENT_SCHEMA", 120 }, { "CURRENT_TIME", 121 }, { "CURRENT_TIMESTAMP", 122 }, { "CURRENT_USER", 123 }, { "CURSOR", 124 }, { "CYCLE", 125 }, { "C_COMMENT", 38 }, { "DATABASE", 127 }, { "DATA_P", 126 }, { "DAY_P", 128 }, { "DEALLOCATE", 129 }, { "DEC", 130 }, { "DECIMAL_P", 131 }, { "DECLARE", 132 }, { "DEFAULT", 133 }, { "DEFAULTS", 134 }, { "DEFERRABLE", 135 }, { "DEFERRED", 136 }, { "DEFINER", 137 }, { "DELETE_P", 138 }, { "DELIMITER", 139 }, { "DELIMITERS", 140 }, { "DEPENDS", 141 }, { "DESC", 142 }, { "DETACH", 143 }, { "DICTIONARY", 144 }, { "DISABLE_P", 145 }, { "DISCARD", 146 }, { "DISTINCT", 147 }, { "DO", 148 }, { "DOCUMENT_P", 149 }, { "DOMAIN_P", 150 }, { "DOT_DOT", 31 }, { "DOUBLE_P", 151 }, { "DROP", 152 }, { "EACH", 153 }, { "ELSE", 154 }, { "ENABLE_P", 155 }, { "ENCODING", 156 }, { "ENCRYPTED", 157 }, { "END_P", 158 }, { "ENUM_P", 159 }, { "EQUALS_GREATER", 33 }, { "ESCAPE", 160 }, { "EVENT", 161 }, { "EXCEPT", 162 }, { "EXCLUDE", 163 }, { "EXCLUDING", 164 }, { "EXCLUSIVE", 165 }, { "EXECUTE", 166 }, { "EXISTS", 167 }, { "EXPLAIN", 168 }, { "EXPRESSION", 169 }, { "EXTENSION", 170 }, { "EXTERNAL", 171 }, { "EXTRACT", 172 }, { "FALSE_P", 173 }, { "FAMILY", 174 }, { "FCONST", 22 }, { "FETCH", 175 }, { "FILTER", 176 }, { "FIRST_P", 177 }, { "FLOAT_P", 178 }, { "FOLLOWING", 179 }, { "FOR", 180 }, { "FORCE", 181 }, { "FOREIGN", 182 }, { "FORWARD", 183 }, { "FREEZE", 184 }, { "FROM", 185 }, { "FULL", 186 }, { "FUNCTION", 187 }, { "FUNCTIONS", 188 }, { "GENERATED", 189 }, { "GLOBAL", 190 }, { "GRANT", 191 }, { "GRANTED", 192 }, { "GREATER_EQUALS", 35 }, { "GREATEST", 193 }, { "GROUPING", 195 }, { "GROUPS", 196 }, { "GROUP_P", 194 }, { "HANDLER", 197 }, { "HAVING", 198 }, { "HEADER_P", 199 }, { "HOLD", 200 }, { "HOUR_P", 201 }, { "ICONST", 28 }, { "IDENT", 20 }, { "IDENTITY_P", 202 }, { "IF_P", 203 }, { "ILIKE", 204 }, { "IMMEDIATE", 205 }, { "IMMUTABLE", 206 }, { "IMPLICIT_P", 207 }, { "IMPORT_P", 208 }, { "INCLUDE", 210 }, { "INCLUDING", 211 }, { "INCREMENT", 212 }, { "INDEX", 213 }, { "INDEXES", 214 }, { "INHERIT", 215 }, { "INHERITS", 216 }, { "INITIALLY", 217 }, { "INLINE_P", 218 }, { "INNER_P", 219 }, { "INOUT", 220 }, { "INPUT_P", 221 }, { "INSENSITIVE", 222 }, { "INSERT", 223 }, { "INSTEAD", 224 }, { "INTEGER", 226 }, { "INTERSECT", 227 }, { "INTERVAL", 228 }, { "INTO", 229 }, { "INT_P", 225 }, { "INVOKER", 230 }, { "IN_P", 209 }, { "IS", 231 }, { "ISNULL", 232 }, { "ISOLATION", 233 }, { "JOIN", 234 }, { "KEY", 235 }, { "LABEL", 236 }, { "LANGUAGE", 237 }, { "LARGE_P", 238 }, { "LAST_P", 239 }, { "LATERAL_P", 240 }, { "LEADING", 241 }, { "LEAKPROOF", 242 }, { "LEAST", 243 }, { "LEFT", 244 }, { "LESS_EQUALS", 34 }, { "LEVEL", 245 }, { "LIKE", 246 }, { "LIMIT", 247 }, { "LISTEN", 248 }, { "LOAD", 249 }, { "LOCAL", 250 }, { "LOCALTIME", 251 }, { "LOCALTIMESTAMP", 252 }, { "LOCATION", 253 }, { "LOCKED", 255 }, { "LOCK_P", 254 }, { "LOGGED", 256 }, { "MAPPING", 257 }, { "MATCH", 258 }, { "MATERIALIZED", 259 }, { "MAXVALUE", 260 }, { "METHOD", 261 }, { "MINUTE_P", 262 }, { "MINVALUE", 263 }, { "MODE", 264 }, { "MONTH_P", 265 }, { "MOVE", 266 }, { "NAMES", 268 }, { "NAME_P", 267 }, { "NATIONAL", 269 }, { "NATURAL", 270 }, { "NCHAR", 271 }, { "NEW", 272 }, { "NEXT", 273 }, { "NFC", 274 }, { "NFD", 275 }, { "NFKC", 276 }, { "NFKD", 277 }, { "NO", 278 }, { "NONE", 279 }, { "NORMALIZE", 280 }, { "NORMALIZED", 281 }, { "NOT", 282 }, { "NOTHING", 283 }, { "NOTIFY", 284 }, { "NOTNULL", 285 }, { "NOT_EQUALS", 36 }, { "NOT_LA", 489 }, { "NOWAIT", 286 }, { "NUL", 0 }, { "NULLIF", 288 }, { "NULLS_LA", 490 }, { "NULLS_P", 289 }, { "NULL_P", 287 }, { "NUMERIC", 290 }, { "OBJECT_P", 291 }, { "OF", 292 }, { "OFF", 293 }, { "OFFSET", 294 }, { "OIDS", 295 }, { "OLD", 296 }, { "ON", 297 }, { "ONLY", 298 }, { "OPERATOR", 299 }, { "OPTION", 300 }, { "OPTIONS", 301 }, { "OR", 302 }, { "ORDER", 303 }, { "ORDINALITY", 304 }, { "OTHERS", 305 }, { "OUTER_P", 307 }, { "OUT_P", 306 }, { "OVER", 308 }, { "OVERLAPS", 309 }, { "OVERLAY", 310 }, { "OVERRIDING", 311 }, { "OWNED", 312 }, { "OWNER", 313 }, { "Op", 27 }, { "PARALLEL", 314 }, { "PARAM", 29 }, { "PARSER", 315 }, { "PARTIAL", 316 }, { "PARTITION", 317 }, { "PASSING", 318 }, { "PASSWORD", 319 }, { "PLACING", 320 }, { "PLANS", 321 }, { "POLICY", 322 }, { "POSITION", 323 }, { "POSTFIXOP", 492 }, { "PRECEDING", 324 }, { "PRECISION", 325 }, { "PREPARE", 327 }, { "PREPARED", 328 }, { "PRESERVE", 326 }, { "PRIMARY", 329 }, { "PRIOR", 330 }, { "PRIVILEGES", 331 }, { "PROCEDURAL", 332 }, { "PROCEDURE", 333 }, { "PROCEDURES", 334 }, { "PROGRAM", 335 }, { "PUBLICATION", 336 }, { "QUOTE", 337 }, { "RANGE", 338 }, { "READ", 339 }, { "REAL", 340 }, { "REASSIGN", 341 }, { "RECHECK", 342 }, { "RECURSIVE", 343 }, { "REF", 344 }, { "REFERENCES", 345 }, { "REFERENCING", 346 }, { "REFRESH", 347 }, { "REINDEX", 348 }, { "RELATIVE_P", 349 }, { "RELEASE", 350 }, { "RENAME", 351 }, { "REPEATABLE", 352 }, { "REPLACE", 353 }, { "REPLICA", 354 }, { "RESET", 355 }, { "RESTART", 356 }, { "RESTRICT", 357 }, { "RETURNING", 358 }, { "RETURNS", 359 }, { "REVOKE", 360 }, { "RIGHT", 361 }, { "ROLE", 362 }, { "ROLLBACK", 363 }, { "ROLLUP", 364 }, { "ROUTINE", 365 }, { "ROUTINES", 366 }, { "ROW", 367 }, { "ROWS", 368 }, { "RULE", 369 }, { "SAVEPOINT", 370 }, { "SCHEMA", 371 }, { "SCHEMAS", 372 }, { "SCONST", 23 }, { "SCROLL", 373 }, { "SEARCH", 374 }, { "SECOND_P", 375 }, { "SECURITY", 376 }, { "SELECT", 377 }, { "SEQUENCE", 378 }, { "SEQUENCES", 379 }, { "SERIALIZABLE", 380 }, { "SERVER", 381 }, { "SESSION", 382 }, { "SESSION_USER", 383 }, { "SET", 384 }, { "SETOF", 386 }, { "SETS", 385 }, { "SHARE", 387 }, { "SHOW", 388 }, { "SIMILAR", 389 }, { "SIMPLE", 390 }, { "SKIP", 391 }, { "SMALLINT", 392 }, { "SNAPSHOT", 393 }, { "SOME", 394 }, { "SQL_COMMENT", 37 }, { "SQL_P", 395 }, { "STABLE", 396 }, { "STANDALONE_P", 397 }, { "START", 398 }, { "STATEMENT", 399 }, { "STATISTICS", 400 }, { "STDIN", 401 }, { "STDOUT", 402 }, { "STORAGE", 403 }, { "STORED", 404 }, { "STRICT_P", 405 }, { "STRIP_P", 406 }, { "SUBSCRIPTION", 407 }, { "SUBSTRING", 408 }, { "SUPPORT", 409 }, { "SYMMETRIC", 410 }, { "SYSID", 411 }, { "SYSTEM_P", 412 }, { "TABLE", 413 }, { "TABLES", 414 }, { "TABLESAMPLE", 415 }, { "TABLESPACE", 416 }, { "TEMP", 417 }, { "TEMPLATE", 418 }, { "TEMPORARY", 419 }, { "TEXT_P", 420 }, { "THEN", 421 }, { "TIES", 422 }, { "TIME", 423 }, { "TIMESTAMP", 424 }, { "TO", 425 }, { "TRAILING", 426 }, { "TRANSACTION", 427 }, { "TRANSFORM", 428 }, { "TREAT", 429 }, { "TRIGGER", 430 }, { "TRIM", 431 }, { "TRUE_P", 432 }, { "TRUNCATE", 433 }, { "TRUSTED", 434 }, { "TYPECAST", 30 }, { "TYPES_P", 436 }, { "TYPE_P", 435 }, { "UESCAPE", 437 }, { "UIDENT", 21 }, { "UMINUS", 493 }, { "UNBOUNDED", 438 }, { "UNCOMMITTED", 439 }, { "UNENCRYPTED", 440 }, { "UNION", 441 }, { "UNIQUE", 442 }, { "UNKNOWN", 443 }, { "UNLISTEN", 444 }, { "UNLOGGED", 445 }, { "UNTIL", 446 }, { "UPDATE", 447 }, { "USCONST", 24 }, { "USER", 448 }, { "USING", 449 }, { "VACUUM", 450 }, { "VALID", 451 }, { "VALIDATE", 452 }, { "VALIDATOR", 453 }, { "VALUES", 455 }, { "VALUE_P", 454 }, { "VARCHAR", 456 }, { "VARIADIC", 457 }, { "VARYING", 458 }, { "VERBOSE", 459 }, { "VERSION_P", 460 }, { "VIEW", 461 }, { "VIEWS", 462 }, { "VOLATILE", 463 }, { "WHEN", 464 }, { "WHERE", 465 }, { "WHITESPACE_P", 466 }, { "WINDOW", 467 }, { "WITH", 468 }, { "WITHIN", 469 }, { "WITHOUT", 470 }, { "WITH_LA", 491 }, { "WORK", 471 }, { "WRAPPER", 472 }, { "WRITE", 473 }, { "XCONST", 26 }, { "XMLATTRIBUTES", 475 }, { "XMLCONCAT", 476 }, { "XMLELEMENT", 477 }, { "XMLEXISTS", 478 }, { "XMLFOREST", 479 }, { "XMLNAMESPACES", 480 }, { "XMLPARSE", 481 }, { "XMLPI", 482 }, { "XMLROOT", 483 }, { "XMLSERIALIZE", 484 }, { "XMLTABLE", 485 }, { "XML_P", 474 }, { "YEAR_P", 486 }, { "YES_P", 487 }, { "ZONE", 488 }, }; const ProtobufCEnumDescriptor pg_query__token__descriptor = { PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, "pg_query.Token", "Token", "PgQuery__Token", "pg_query", 494, pg_query__token__enum_values_by_number, 494, pg_query__token__enum_values_by_name, 6, pg_query__token__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; libpg_query-13-2.1.0/protobuf/pg_query.pb-c.h000066400000000000000000015625101413137616400207610ustar00rootroot00000000000000/* Generated by the protocol buffer compiler. DO NOT EDIT! */ /* Generated from: protobuf/pg_query.proto */ #ifndef PROTOBUF_C_protobuf_2fpg_5fquery_2eproto__INCLUDED #define PROTOBUF_C_protobuf_2fpg_5fquery_2eproto__INCLUDED #include PROTOBUF_C__BEGIN_DECLS #if PROTOBUF_C_VERSION_NUMBER < 1003000 # error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. #elif 1004000 < PROTOBUF_C_MIN_COMPILER_VERSION # error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. #endif typedef struct PgQuery__ParseResult PgQuery__ParseResult; typedef struct PgQuery__ScanResult PgQuery__ScanResult; typedef struct PgQuery__Node PgQuery__Node; typedef struct PgQuery__Integer PgQuery__Integer; typedef struct PgQuery__Float PgQuery__Float; typedef struct PgQuery__String PgQuery__String; typedef struct PgQuery__BitString PgQuery__BitString; typedef struct PgQuery__Null PgQuery__Null; typedef struct PgQuery__List PgQuery__List; typedef struct PgQuery__OidList PgQuery__OidList; typedef struct PgQuery__IntList PgQuery__IntList; typedef struct PgQuery__Alias PgQuery__Alias; typedef struct PgQuery__RangeVar PgQuery__RangeVar; typedef struct PgQuery__TableFunc PgQuery__TableFunc; typedef struct PgQuery__Expr PgQuery__Expr; typedef struct PgQuery__Var PgQuery__Var; typedef struct PgQuery__Param PgQuery__Param; typedef struct PgQuery__Aggref PgQuery__Aggref; typedef struct PgQuery__GroupingFunc PgQuery__GroupingFunc; typedef struct PgQuery__WindowFunc PgQuery__WindowFunc; typedef struct PgQuery__SubscriptingRef PgQuery__SubscriptingRef; typedef struct PgQuery__FuncExpr PgQuery__FuncExpr; typedef struct PgQuery__NamedArgExpr PgQuery__NamedArgExpr; typedef struct PgQuery__OpExpr PgQuery__OpExpr; typedef struct PgQuery__DistinctExpr PgQuery__DistinctExpr; typedef struct PgQuery__NullIfExpr PgQuery__NullIfExpr; typedef struct PgQuery__ScalarArrayOpExpr PgQuery__ScalarArrayOpExpr; typedef struct PgQuery__BoolExpr PgQuery__BoolExpr; typedef struct PgQuery__SubLink PgQuery__SubLink; typedef struct PgQuery__SubPlan PgQuery__SubPlan; typedef struct PgQuery__AlternativeSubPlan PgQuery__AlternativeSubPlan; typedef struct PgQuery__FieldSelect PgQuery__FieldSelect; typedef struct PgQuery__FieldStore PgQuery__FieldStore; typedef struct PgQuery__RelabelType PgQuery__RelabelType; typedef struct PgQuery__CoerceViaIO PgQuery__CoerceViaIO; typedef struct PgQuery__ArrayCoerceExpr PgQuery__ArrayCoerceExpr; typedef struct PgQuery__ConvertRowtypeExpr PgQuery__ConvertRowtypeExpr; typedef struct PgQuery__CollateExpr PgQuery__CollateExpr; typedef struct PgQuery__CaseExpr PgQuery__CaseExpr; typedef struct PgQuery__CaseWhen PgQuery__CaseWhen; typedef struct PgQuery__CaseTestExpr PgQuery__CaseTestExpr; typedef struct PgQuery__ArrayExpr PgQuery__ArrayExpr; typedef struct PgQuery__RowExpr PgQuery__RowExpr; typedef struct PgQuery__RowCompareExpr PgQuery__RowCompareExpr; typedef struct PgQuery__CoalesceExpr PgQuery__CoalesceExpr; typedef struct PgQuery__MinMaxExpr PgQuery__MinMaxExpr; typedef struct PgQuery__SQLValueFunction PgQuery__SQLValueFunction; typedef struct PgQuery__XmlExpr PgQuery__XmlExpr; typedef struct PgQuery__NullTest PgQuery__NullTest; typedef struct PgQuery__BooleanTest PgQuery__BooleanTest; typedef struct PgQuery__CoerceToDomain PgQuery__CoerceToDomain; typedef struct PgQuery__CoerceToDomainValue PgQuery__CoerceToDomainValue; typedef struct PgQuery__SetToDefault PgQuery__SetToDefault; typedef struct PgQuery__CurrentOfExpr PgQuery__CurrentOfExpr; typedef struct PgQuery__NextValueExpr PgQuery__NextValueExpr; typedef struct PgQuery__InferenceElem PgQuery__InferenceElem; typedef struct PgQuery__TargetEntry PgQuery__TargetEntry; typedef struct PgQuery__RangeTblRef PgQuery__RangeTblRef; typedef struct PgQuery__JoinExpr PgQuery__JoinExpr; typedef struct PgQuery__FromExpr PgQuery__FromExpr; typedef struct PgQuery__OnConflictExpr PgQuery__OnConflictExpr; typedef struct PgQuery__IntoClause PgQuery__IntoClause; typedef struct PgQuery__RawStmt PgQuery__RawStmt; typedef struct PgQuery__Query PgQuery__Query; typedef struct PgQuery__InsertStmt PgQuery__InsertStmt; typedef struct PgQuery__DeleteStmt PgQuery__DeleteStmt; typedef struct PgQuery__UpdateStmt PgQuery__UpdateStmt; typedef struct PgQuery__SelectStmt PgQuery__SelectStmt; typedef struct PgQuery__AlterTableStmt PgQuery__AlterTableStmt; typedef struct PgQuery__AlterTableCmd PgQuery__AlterTableCmd; typedef struct PgQuery__AlterDomainStmt PgQuery__AlterDomainStmt; typedef struct PgQuery__SetOperationStmt PgQuery__SetOperationStmt; typedef struct PgQuery__GrantStmt PgQuery__GrantStmt; typedef struct PgQuery__GrantRoleStmt PgQuery__GrantRoleStmt; typedef struct PgQuery__AlterDefaultPrivilegesStmt PgQuery__AlterDefaultPrivilegesStmt; typedef struct PgQuery__ClosePortalStmt PgQuery__ClosePortalStmt; typedef struct PgQuery__ClusterStmt PgQuery__ClusterStmt; typedef struct PgQuery__CopyStmt PgQuery__CopyStmt; typedef struct PgQuery__CreateStmt PgQuery__CreateStmt; typedef struct PgQuery__DefineStmt PgQuery__DefineStmt; typedef struct PgQuery__DropStmt PgQuery__DropStmt; typedef struct PgQuery__TruncateStmt PgQuery__TruncateStmt; typedef struct PgQuery__CommentStmt PgQuery__CommentStmt; typedef struct PgQuery__FetchStmt PgQuery__FetchStmt; typedef struct PgQuery__IndexStmt PgQuery__IndexStmt; typedef struct PgQuery__CreateFunctionStmt PgQuery__CreateFunctionStmt; typedef struct PgQuery__AlterFunctionStmt PgQuery__AlterFunctionStmt; typedef struct PgQuery__DoStmt PgQuery__DoStmt; typedef struct PgQuery__RenameStmt PgQuery__RenameStmt; typedef struct PgQuery__RuleStmt PgQuery__RuleStmt; typedef struct PgQuery__NotifyStmt PgQuery__NotifyStmt; typedef struct PgQuery__ListenStmt PgQuery__ListenStmt; typedef struct PgQuery__UnlistenStmt PgQuery__UnlistenStmt; typedef struct PgQuery__TransactionStmt PgQuery__TransactionStmt; typedef struct PgQuery__ViewStmt PgQuery__ViewStmt; typedef struct PgQuery__LoadStmt PgQuery__LoadStmt; typedef struct PgQuery__CreateDomainStmt PgQuery__CreateDomainStmt; typedef struct PgQuery__CreatedbStmt PgQuery__CreatedbStmt; typedef struct PgQuery__DropdbStmt PgQuery__DropdbStmt; typedef struct PgQuery__VacuumStmt PgQuery__VacuumStmt; typedef struct PgQuery__ExplainStmt PgQuery__ExplainStmt; typedef struct PgQuery__CreateTableAsStmt PgQuery__CreateTableAsStmt; typedef struct PgQuery__CreateSeqStmt PgQuery__CreateSeqStmt; typedef struct PgQuery__AlterSeqStmt PgQuery__AlterSeqStmt; typedef struct PgQuery__VariableSetStmt PgQuery__VariableSetStmt; typedef struct PgQuery__VariableShowStmt PgQuery__VariableShowStmt; typedef struct PgQuery__DiscardStmt PgQuery__DiscardStmt; typedef struct PgQuery__CreateTrigStmt PgQuery__CreateTrigStmt; typedef struct PgQuery__CreatePLangStmt PgQuery__CreatePLangStmt; typedef struct PgQuery__CreateRoleStmt PgQuery__CreateRoleStmt; typedef struct PgQuery__AlterRoleStmt PgQuery__AlterRoleStmt; typedef struct PgQuery__DropRoleStmt PgQuery__DropRoleStmt; typedef struct PgQuery__LockStmt PgQuery__LockStmt; typedef struct PgQuery__ConstraintsSetStmt PgQuery__ConstraintsSetStmt; typedef struct PgQuery__ReindexStmt PgQuery__ReindexStmt; typedef struct PgQuery__CheckPointStmt PgQuery__CheckPointStmt; typedef struct PgQuery__CreateSchemaStmt PgQuery__CreateSchemaStmt; typedef struct PgQuery__AlterDatabaseStmt PgQuery__AlterDatabaseStmt; typedef struct PgQuery__AlterDatabaseSetStmt PgQuery__AlterDatabaseSetStmt; typedef struct PgQuery__AlterRoleSetStmt PgQuery__AlterRoleSetStmt; typedef struct PgQuery__CreateConversionStmt PgQuery__CreateConversionStmt; typedef struct PgQuery__CreateCastStmt PgQuery__CreateCastStmt; typedef struct PgQuery__CreateOpClassStmt PgQuery__CreateOpClassStmt; typedef struct PgQuery__CreateOpFamilyStmt PgQuery__CreateOpFamilyStmt; typedef struct PgQuery__AlterOpFamilyStmt PgQuery__AlterOpFamilyStmt; typedef struct PgQuery__PrepareStmt PgQuery__PrepareStmt; typedef struct PgQuery__ExecuteStmt PgQuery__ExecuteStmt; typedef struct PgQuery__DeallocateStmt PgQuery__DeallocateStmt; typedef struct PgQuery__DeclareCursorStmt PgQuery__DeclareCursorStmt; typedef struct PgQuery__CreateTableSpaceStmt PgQuery__CreateTableSpaceStmt; typedef struct PgQuery__DropTableSpaceStmt PgQuery__DropTableSpaceStmt; typedef struct PgQuery__AlterObjectDependsStmt PgQuery__AlterObjectDependsStmt; typedef struct PgQuery__AlterObjectSchemaStmt PgQuery__AlterObjectSchemaStmt; typedef struct PgQuery__AlterOwnerStmt PgQuery__AlterOwnerStmt; typedef struct PgQuery__AlterOperatorStmt PgQuery__AlterOperatorStmt; typedef struct PgQuery__AlterTypeStmt PgQuery__AlterTypeStmt; typedef struct PgQuery__DropOwnedStmt PgQuery__DropOwnedStmt; typedef struct PgQuery__ReassignOwnedStmt PgQuery__ReassignOwnedStmt; typedef struct PgQuery__CompositeTypeStmt PgQuery__CompositeTypeStmt; typedef struct PgQuery__CreateEnumStmt PgQuery__CreateEnumStmt; typedef struct PgQuery__CreateRangeStmt PgQuery__CreateRangeStmt; typedef struct PgQuery__AlterEnumStmt PgQuery__AlterEnumStmt; typedef struct PgQuery__AlterTSDictionaryStmt PgQuery__AlterTSDictionaryStmt; typedef struct PgQuery__AlterTSConfigurationStmt PgQuery__AlterTSConfigurationStmt; typedef struct PgQuery__CreateFdwStmt PgQuery__CreateFdwStmt; typedef struct PgQuery__AlterFdwStmt PgQuery__AlterFdwStmt; typedef struct PgQuery__CreateForeignServerStmt PgQuery__CreateForeignServerStmt; typedef struct PgQuery__AlterForeignServerStmt PgQuery__AlterForeignServerStmt; typedef struct PgQuery__CreateUserMappingStmt PgQuery__CreateUserMappingStmt; typedef struct PgQuery__AlterUserMappingStmt PgQuery__AlterUserMappingStmt; typedef struct PgQuery__DropUserMappingStmt PgQuery__DropUserMappingStmt; typedef struct PgQuery__AlterTableSpaceOptionsStmt PgQuery__AlterTableSpaceOptionsStmt; typedef struct PgQuery__AlterTableMoveAllStmt PgQuery__AlterTableMoveAllStmt; typedef struct PgQuery__SecLabelStmt PgQuery__SecLabelStmt; typedef struct PgQuery__CreateForeignTableStmt PgQuery__CreateForeignTableStmt; typedef struct PgQuery__ImportForeignSchemaStmt PgQuery__ImportForeignSchemaStmt; typedef struct PgQuery__CreateExtensionStmt PgQuery__CreateExtensionStmt; typedef struct PgQuery__AlterExtensionStmt PgQuery__AlterExtensionStmt; typedef struct PgQuery__AlterExtensionContentsStmt PgQuery__AlterExtensionContentsStmt; typedef struct PgQuery__CreateEventTrigStmt PgQuery__CreateEventTrigStmt; typedef struct PgQuery__AlterEventTrigStmt PgQuery__AlterEventTrigStmt; typedef struct PgQuery__RefreshMatViewStmt PgQuery__RefreshMatViewStmt; typedef struct PgQuery__ReplicaIdentityStmt PgQuery__ReplicaIdentityStmt; typedef struct PgQuery__AlterSystemStmt PgQuery__AlterSystemStmt; typedef struct PgQuery__CreatePolicyStmt PgQuery__CreatePolicyStmt; typedef struct PgQuery__AlterPolicyStmt PgQuery__AlterPolicyStmt; typedef struct PgQuery__CreateTransformStmt PgQuery__CreateTransformStmt; typedef struct PgQuery__CreateAmStmt PgQuery__CreateAmStmt; typedef struct PgQuery__CreatePublicationStmt PgQuery__CreatePublicationStmt; typedef struct PgQuery__AlterPublicationStmt PgQuery__AlterPublicationStmt; typedef struct PgQuery__CreateSubscriptionStmt PgQuery__CreateSubscriptionStmt; typedef struct PgQuery__AlterSubscriptionStmt PgQuery__AlterSubscriptionStmt; typedef struct PgQuery__DropSubscriptionStmt PgQuery__DropSubscriptionStmt; typedef struct PgQuery__CreateStatsStmt PgQuery__CreateStatsStmt; typedef struct PgQuery__AlterCollationStmt PgQuery__AlterCollationStmt; typedef struct PgQuery__CallStmt PgQuery__CallStmt; typedef struct PgQuery__AlterStatsStmt PgQuery__AlterStatsStmt; typedef struct PgQuery__AExpr PgQuery__AExpr; typedef struct PgQuery__ColumnRef PgQuery__ColumnRef; typedef struct PgQuery__ParamRef PgQuery__ParamRef; typedef struct PgQuery__AConst PgQuery__AConst; typedef struct PgQuery__FuncCall PgQuery__FuncCall; typedef struct PgQuery__AStar PgQuery__AStar; typedef struct PgQuery__AIndices PgQuery__AIndices; typedef struct PgQuery__AIndirection PgQuery__AIndirection; typedef struct PgQuery__AArrayExpr PgQuery__AArrayExpr; typedef struct PgQuery__ResTarget PgQuery__ResTarget; typedef struct PgQuery__MultiAssignRef PgQuery__MultiAssignRef; typedef struct PgQuery__TypeCast PgQuery__TypeCast; typedef struct PgQuery__CollateClause PgQuery__CollateClause; typedef struct PgQuery__SortBy PgQuery__SortBy; typedef struct PgQuery__WindowDef PgQuery__WindowDef; typedef struct PgQuery__RangeSubselect PgQuery__RangeSubselect; typedef struct PgQuery__RangeFunction PgQuery__RangeFunction; typedef struct PgQuery__RangeTableSample PgQuery__RangeTableSample; typedef struct PgQuery__RangeTableFunc PgQuery__RangeTableFunc; typedef struct PgQuery__RangeTableFuncCol PgQuery__RangeTableFuncCol; typedef struct PgQuery__TypeName PgQuery__TypeName; typedef struct PgQuery__ColumnDef PgQuery__ColumnDef; typedef struct PgQuery__IndexElem PgQuery__IndexElem; typedef struct PgQuery__Constraint PgQuery__Constraint; typedef struct PgQuery__DefElem PgQuery__DefElem; typedef struct PgQuery__RangeTblEntry PgQuery__RangeTblEntry; typedef struct PgQuery__RangeTblFunction PgQuery__RangeTblFunction; typedef struct PgQuery__TableSampleClause PgQuery__TableSampleClause; typedef struct PgQuery__WithCheckOption PgQuery__WithCheckOption; typedef struct PgQuery__SortGroupClause PgQuery__SortGroupClause; typedef struct PgQuery__GroupingSet PgQuery__GroupingSet; typedef struct PgQuery__WindowClause PgQuery__WindowClause; typedef struct PgQuery__ObjectWithArgs PgQuery__ObjectWithArgs; typedef struct PgQuery__AccessPriv PgQuery__AccessPriv; typedef struct PgQuery__CreateOpClassItem PgQuery__CreateOpClassItem; typedef struct PgQuery__TableLikeClause PgQuery__TableLikeClause; typedef struct PgQuery__FunctionParameter PgQuery__FunctionParameter; typedef struct PgQuery__LockingClause PgQuery__LockingClause; typedef struct PgQuery__RowMarkClause PgQuery__RowMarkClause; typedef struct PgQuery__XmlSerialize PgQuery__XmlSerialize; typedef struct PgQuery__WithClause PgQuery__WithClause; typedef struct PgQuery__InferClause PgQuery__InferClause; typedef struct PgQuery__OnConflictClause PgQuery__OnConflictClause; typedef struct PgQuery__CommonTableExpr PgQuery__CommonTableExpr; typedef struct PgQuery__RoleSpec PgQuery__RoleSpec; typedef struct PgQuery__TriggerTransition PgQuery__TriggerTransition; typedef struct PgQuery__PartitionElem PgQuery__PartitionElem; typedef struct PgQuery__PartitionSpec PgQuery__PartitionSpec; typedef struct PgQuery__PartitionBoundSpec PgQuery__PartitionBoundSpec; typedef struct PgQuery__PartitionRangeDatum PgQuery__PartitionRangeDatum; typedef struct PgQuery__PartitionCmd PgQuery__PartitionCmd; typedef struct PgQuery__VacuumRelation PgQuery__VacuumRelation; typedef struct PgQuery__InlineCodeBlock PgQuery__InlineCodeBlock; typedef struct PgQuery__CallContext PgQuery__CallContext; typedef struct PgQuery__ScanToken PgQuery__ScanToken; /* --- enums --- */ typedef enum _PgQuery__OverridingKind { PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED = 0, PG_QUERY__OVERRIDING_KIND__OVERRIDING_NOT_SET = 1, PG_QUERY__OVERRIDING_KIND__OVERRIDING_USER_VALUE = 2, PG_QUERY__OVERRIDING_KIND__OVERRIDING_SYSTEM_VALUE = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__OVERRIDING_KIND) } PgQuery__OverridingKind; typedef enum _PgQuery__QuerySource { PG_QUERY__QUERY_SOURCE__QUERY_SOURCE_UNDEFINED = 0, PG_QUERY__QUERY_SOURCE__QSRC_ORIGINAL = 1, PG_QUERY__QUERY_SOURCE__QSRC_PARSER = 2, PG_QUERY__QUERY_SOURCE__QSRC_INSTEAD_RULE = 3, PG_QUERY__QUERY_SOURCE__QSRC_QUAL_INSTEAD_RULE = 4, PG_QUERY__QUERY_SOURCE__QSRC_NON_INSTEAD_RULE = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__QUERY_SOURCE) } PgQuery__QuerySource; typedef enum _PgQuery__SortByDir { PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED = 0, PG_QUERY__SORT_BY_DIR__SORTBY_DEFAULT = 1, PG_QUERY__SORT_BY_DIR__SORTBY_ASC = 2, PG_QUERY__SORT_BY_DIR__SORTBY_DESC = 3, PG_QUERY__SORT_BY_DIR__SORTBY_USING = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SORT_BY_DIR) } PgQuery__SortByDir; typedef enum _PgQuery__SortByNulls { PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED = 0, PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_DEFAULT = 1, PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_FIRST = 2, PG_QUERY__SORT_BY_NULLS__SORTBY_NULLS_LAST = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SORT_BY_NULLS) } PgQuery__SortByNulls; typedef enum _PgQuery__AExprKind { PG_QUERY__A__EXPR__KIND__A_EXPR_KIND_UNDEFINED = 0, PG_QUERY__A__EXPR__KIND__AEXPR_OP = 1, PG_QUERY__A__EXPR__KIND__AEXPR_OP_ANY = 2, PG_QUERY__A__EXPR__KIND__AEXPR_OP_ALL = 3, PG_QUERY__A__EXPR__KIND__AEXPR_DISTINCT = 4, PG_QUERY__A__EXPR__KIND__AEXPR_NOT_DISTINCT = 5, PG_QUERY__A__EXPR__KIND__AEXPR_NULLIF = 6, PG_QUERY__A__EXPR__KIND__AEXPR_OF = 7, PG_QUERY__A__EXPR__KIND__AEXPR_IN = 8, PG_QUERY__A__EXPR__KIND__AEXPR_LIKE = 9, PG_QUERY__A__EXPR__KIND__AEXPR_ILIKE = 10, PG_QUERY__A__EXPR__KIND__AEXPR_SIMILAR = 11, PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN = 12, PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN = 13, PG_QUERY__A__EXPR__KIND__AEXPR_BETWEEN_SYM = 14, PG_QUERY__A__EXPR__KIND__AEXPR_NOT_BETWEEN_SYM = 15, PG_QUERY__A__EXPR__KIND__AEXPR_PAREN = 16 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__A__EXPR__KIND) } PgQuery__AExprKind; typedef enum _PgQuery__RoleSpecType { PG_QUERY__ROLE_SPEC_TYPE__ROLE_SPEC_TYPE_UNDEFINED = 0, PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CSTRING = 1, PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_CURRENT_USER = 2, PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_SESSION_USER = 3, PG_QUERY__ROLE_SPEC_TYPE__ROLESPEC_PUBLIC = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ROLE_SPEC_TYPE) } PgQuery__RoleSpecType; typedef enum _PgQuery__TableLikeOption { PG_QUERY__TABLE_LIKE_OPTION__TABLE_LIKE_OPTION_UNDEFINED = 0, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_COMMENTS = 1, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_CONSTRAINTS = 2, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_DEFAULTS = 3, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_GENERATED = 4, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_IDENTITY = 5, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_INDEXES = 6, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STATISTICS = 7, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_STORAGE = 8, PG_QUERY__TABLE_LIKE_OPTION__CREATE_TABLE_LIKE_ALL = 9 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__TABLE_LIKE_OPTION) } PgQuery__TableLikeOption; typedef enum _PgQuery__DefElemAction { PG_QUERY__DEF_ELEM_ACTION__DEF_ELEM_ACTION_UNDEFINED = 0, PG_QUERY__DEF_ELEM_ACTION__DEFELEM_UNSPEC = 1, PG_QUERY__DEF_ELEM_ACTION__DEFELEM_SET = 2, PG_QUERY__DEF_ELEM_ACTION__DEFELEM_ADD = 3, PG_QUERY__DEF_ELEM_ACTION__DEFELEM_DROP = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__DEF_ELEM_ACTION) } PgQuery__DefElemAction; typedef enum _PgQuery__PartitionRangeDatumKind { PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_KIND_UNDEFINED = 0, PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_MINVALUE = 1, PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_VALUE = 2, PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_MAXVALUE = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__PARTITION_RANGE_DATUM_KIND) } PgQuery__PartitionRangeDatumKind; typedef enum _PgQuery__RTEKind { PG_QUERY__RTEKIND__RTEKIND_UNDEFINED = 0, PG_QUERY__RTEKIND__RTE_RELATION = 1, PG_QUERY__RTEKIND__RTE_SUBQUERY = 2, PG_QUERY__RTEKIND__RTE_JOIN = 3, PG_QUERY__RTEKIND__RTE_FUNCTION = 4, PG_QUERY__RTEKIND__RTE_TABLEFUNC = 5, PG_QUERY__RTEKIND__RTE_VALUES = 6, PG_QUERY__RTEKIND__RTE_CTE = 7, PG_QUERY__RTEKIND__RTE_NAMEDTUPLESTORE = 8, PG_QUERY__RTEKIND__RTE_RESULT = 9 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__RTEKIND) } PgQuery__RTEKind; typedef enum _PgQuery__WCOKind { PG_QUERY__WCOKIND__WCOKIND_UNDEFINED = 0, PG_QUERY__WCOKIND__WCO_VIEW_CHECK = 1, PG_QUERY__WCOKIND__WCO_RLS_INSERT_CHECK = 2, PG_QUERY__WCOKIND__WCO_RLS_UPDATE_CHECK = 3, PG_QUERY__WCOKIND__WCO_RLS_CONFLICT_CHECK = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__WCOKIND) } PgQuery__WCOKind; typedef enum _PgQuery__GroupingSetKind { PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_KIND_UNDEFINED = 0, PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_EMPTY = 1, PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_SIMPLE = 2, PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_ROLLUP = 3, PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_CUBE = 4, PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_SETS = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__GROUPING_SET_KIND) } PgQuery__GroupingSetKind; typedef enum _PgQuery__CTEMaterialize { PG_QUERY__CTEMATERIALIZE__CTEMATERIALIZE_UNDEFINED = 0, PG_QUERY__CTEMATERIALIZE__CTEMaterializeDefault = 1, PG_QUERY__CTEMATERIALIZE__CTEMaterializeAlways = 2, PG_QUERY__CTEMATERIALIZE__CTEMaterializeNever = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__CTEMATERIALIZE) } PgQuery__CTEMaterialize; typedef enum _PgQuery__SetOperation { PG_QUERY__SET_OPERATION__SET_OPERATION_UNDEFINED = 0, PG_QUERY__SET_OPERATION__SETOP_NONE = 1, PG_QUERY__SET_OPERATION__SETOP_UNION = 2, PG_QUERY__SET_OPERATION__SETOP_INTERSECT = 3, PG_QUERY__SET_OPERATION__SETOP_EXCEPT = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SET_OPERATION) } PgQuery__SetOperation; typedef enum _PgQuery__ObjectType { PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED = 0, PG_QUERY__OBJECT_TYPE__OBJECT_ACCESS_METHOD = 1, PG_QUERY__OBJECT_TYPE__OBJECT_AGGREGATE = 2, PG_QUERY__OBJECT_TYPE__OBJECT_AMOP = 3, PG_QUERY__OBJECT_TYPE__OBJECT_AMPROC = 4, PG_QUERY__OBJECT_TYPE__OBJECT_ATTRIBUTE = 5, PG_QUERY__OBJECT_TYPE__OBJECT_CAST = 6, PG_QUERY__OBJECT_TYPE__OBJECT_COLUMN = 7, PG_QUERY__OBJECT_TYPE__OBJECT_COLLATION = 8, PG_QUERY__OBJECT_TYPE__OBJECT_CONVERSION = 9, PG_QUERY__OBJECT_TYPE__OBJECT_DATABASE = 10, PG_QUERY__OBJECT_TYPE__OBJECT_DEFAULT = 11, PG_QUERY__OBJECT_TYPE__OBJECT_DEFACL = 12, PG_QUERY__OBJECT_TYPE__OBJECT_DOMAIN = 13, PG_QUERY__OBJECT_TYPE__OBJECT_DOMCONSTRAINT = 14, PG_QUERY__OBJECT_TYPE__OBJECT_EVENT_TRIGGER = 15, PG_QUERY__OBJECT_TYPE__OBJECT_EXTENSION = 16, PG_QUERY__OBJECT_TYPE__OBJECT_FDW = 17, PG_QUERY__OBJECT_TYPE__OBJECT_FOREIGN_SERVER = 18, PG_QUERY__OBJECT_TYPE__OBJECT_FOREIGN_TABLE = 19, PG_QUERY__OBJECT_TYPE__OBJECT_FUNCTION = 20, PG_QUERY__OBJECT_TYPE__OBJECT_INDEX = 21, PG_QUERY__OBJECT_TYPE__OBJECT_LANGUAGE = 22, PG_QUERY__OBJECT_TYPE__OBJECT_LARGEOBJECT = 23, PG_QUERY__OBJECT_TYPE__OBJECT_MATVIEW = 24, PG_QUERY__OBJECT_TYPE__OBJECT_OPCLASS = 25, PG_QUERY__OBJECT_TYPE__OBJECT_OPERATOR = 26, PG_QUERY__OBJECT_TYPE__OBJECT_OPFAMILY = 27, PG_QUERY__OBJECT_TYPE__OBJECT_POLICY = 28, PG_QUERY__OBJECT_TYPE__OBJECT_PROCEDURE = 29, PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION = 30, PG_QUERY__OBJECT_TYPE__OBJECT_PUBLICATION_REL = 31, PG_QUERY__OBJECT_TYPE__OBJECT_ROLE = 32, PG_QUERY__OBJECT_TYPE__OBJECT_ROUTINE = 33, PG_QUERY__OBJECT_TYPE__OBJECT_RULE = 34, PG_QUERY__OBJECT_TYPE__OBJECT_SCHEMA = 35, PG_QUERY__OBJECT_TYPE__OBJECT_SEQUENCE = 36, PG_QUERY__OBJECT_TYPE__OBJECT_SUBSCRIPTION = 37, PG_QUERY__OBJECT_TYPE__OBJECT_STATISTIC_EXT = 38, PG_QUERY__OBJECT_TYPE__OBJECT_TABCONSTRAINT = 39, PG_QUERY__OBJECT_TYPE__OBJECT_TABLE = 40, PG_QUERY__OBJECT_TYPE__OBJECT_TABLESPACE = 41, PG_QUERY__OBJECT_TYPE__OBJECT_TRANSFORM = 42, PG_QUERY__OBJECT_TYPE__OBJECT_TRIGGER = 43, PG_QUERY__OBJECT_TYPE__OBJECT_TSCONFIGURATION = 44, PG_QUERY__OBJECT_TYPE__OBJECT_TSDICTIONARY = 45, PG_QUERY__OBJECT_TYPE__OBJECT_TSPARSER = 46, PG_QUERY__OBJECT_TYPE__OBJECT_TSTEMPLATE = 47, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE = 48, PG_QUERY__OBJECT_TYPE__OBJECT_USER_MAPPING = 49, PG_QUERY__OBJECT_TYPE__OBJECT_VIEW = 50 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__OBJECT_TYPE) } PgQuery__ObjectType; typedef enum _PgQuery__DropBehavior { PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED = 0, PG_QUERY__DROP_BEHAVIOR__DROP_RESTRICT = 1, PG_QUERY__DROP_BEHAVIOR__DROP_CASCADE = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__DROP_BEHAVIOR) } PgQuery__DropBehavior; typedef enum _PgQuery__AlterTableType { PG_QUERY__ALTER_TABLE_TYPE__ALTER_TABLE_TYPE_UNDEFINED = 0, PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumn = 1, PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnRecurse = 2, PG_QUERY__ALTER_TABLE_TYPE__AT_AddColumnToView = 3, PG_QUERY__ALTER_TABLE_TYPE__AT_ColumnDefault = 4, PG_QUERY__ALTER_TABLE_TYPE__AT_CookedColumnDefault = 5, PG_QUERY__ALTER_TABLE_TYPE__AT_DropNotNull = 6, PG_QUERY__ALTER_TABLE_TYPE__AT_SetNotNull = 7, PG_QUERY__ALTER_TABLE_TYPE__AT_DropExpression = 8, PG_QUERY__ALTER_TABLE_TYPE__AT_CheckNotNull = 9, PG_QUERY__ALTER_TABLE_TYPE__AT_SetStatistics = 10, PG_QUERY__ALTER_TABLE_TYPE__AT_SetOptions = 11, PG_QUERY__ALTER_TABLE_TYPE__AT_ResetOptions = 12, PG_QUERY__ALTER_TABLE_TYPE__AT_SetStorage = 13, PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumn = 14, PG_QUERY__ALTER_TABLE_TYPE__AT_DropColumnRecurse = 15, PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndex = 16, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddIndex = 17, PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraint = 18, PG_QUERY__ALTER_TABLE_TYPE__AT_AddConstraintRecurse = 19, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddConstraint = 20, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddDomainConstraint = 21, PG_QUERY__ALTER_TABLE_TYPE__AT_AlterConstraint = 22, PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraint = 23, PG_QUERY__ALTER_TABLE_TYPE__AT_ValidateConstraintRecurse = 24, PG_QUERY__ALTER_TABLE_TYPE__AT_AddIndexConstraint = 25, PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraint = 26, PG_QUERY__ALTER_TABLE_TYPE__AT_DropConstraintRecurse = 27, PG_QUERY__ALTER_TABLE_TYPE__AT_ReAddComment = 28, PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnType = 29, PG_QUERY__ALTER_TABLE_TYPE__AT_AlterColumnGenericOptions = 30, PG_QUERY__ALTER_TABLE_TYPE__AT_ChangeOwner = 31, PG_QUERY__ALTER_TABLE_TYPE__AT_ClusterOn = 32, PG_QUERY__ALTER_TABLE_TYPE__AT_DropCluster = 33, PG_QUERY__ALTER_TABLE_TYPE__AT_SetLogged = 34, PG_QUERY__ALTER_TABLE_TYPE__AT_SetUnLogged = 35, PG_QUERY__ALTER_TABLE_TYPE__AT_DropOids = 36, PG_QUERY__ALTER_TABLE_TYPE__AT_SetTableSpace = 37, PG_QUERY__ALTER_TABLE_TYPE__AT_SetRelOptions = 38, PG_QUERY__ALTER_TABLE_TYPE__AT_ResetRelOptions = 39, PG_QUERY__ALTER_TABLE_TYPE__AT_ReplaceRelOptions = 40, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrig = 41, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysTrig = 42, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaTrig = 43, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrig = 44, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigAll = 45, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigAll = 46, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableTrigUser = 47, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableTrigUser = 48, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRule = 49, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableAlwaysRule = 50, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableReplicaRule = 51, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRule = 52, PG_QUERY__ALTER_TABLE_TYPE__AT_AddInherit = 53, PG_QUERY__ALTER_TABLE_TYPE__AT_DropInherit = 54, PG_QUERY__ALTER_TABLE_TYPE__AT_AddOf = 55, PG_QUERY__ALTER_TABLE_TYPE__AT_DropOf = 56, PG_QUERY__ALTER_TABLE_TYPE__AT_ReplicaIdentity = 57, PG_QUERY__ALTER_TABLE_TYPE__AT_EnableRowSecurity = 58, PG_QUERY__ALTER_TABLE_TYPE__AT_DisableRowSecurity = 59, PG_QUERY__ALTER_TABLE_TYPE__AT_ForceRowSecurity = 60, PG_QUERY__ALTER_TABLE_TYPE__AT_NoForceRowSecurity = 61, PG_QUERY__ALTER_TABLE_TYPE__AT_GenericOptions = 62, PG_QUERY__ALTER_TABLE_TYPE__AT_AttachPartition = 63, PG_QUERY__ALTER_TABLE_TYPE__AT_DetachPartition = 64, PG_QUERY__ALTER_TABLE_TYPE__AT_AddIdentity = 65, PG_QUERY__ALTER_TABLE_TYPE__AT_SetIdentity = 66, PG_QUERY__ALTER_TABLE_TYPE__AT_DropIdentity = 67 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ALTER_TABLE_TYPE) } PgQuery__AlterTableType; typedef enum _PgQuery__GrantTargetType { PG_QUERY__GRANT_TARGET_TYPE__GRANT_TARGET_TYPE_UNDEFINED = 0, PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_OBJECT = 1, PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_ALL_IN_SCHEMA = 2, PG_QUERY__GRANT_TARGET_TYPE__ACL_TARGET_DEFAULTS = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__GRANT_TARGET_TYPE) } PgQuery__GrantTargetType; typedef enum _PgQuery__VariableSetKind { PG_QUERY__VARIABLE_SET_KIND__VARIABLE_SET_KIND_UNDEFINED = 0, PG_QUERY__VARIABLE_SET_KIND__VAR_SET_VALUE = 1, PG_QUERY__VARIABLE_SET_KIND__VAR_SET_DEFAULT = 2, PG_QUERY__VARIABLE_SET_KIND__VAR_SET_CURRENT = 3, PG_QUERY__VARIABLE_SET_KIND__VAR_SET_MULTI = 4, PG_QUERY__VARIABLE_SET_KIND__VAR_RESET = 5, PG_QUERY__VARIABLE_SET_KIND__VAR_RESET_ALL = 6 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__VARIABLE_SET_KIND) } PgQuery__VariableSetKind; typedef enum _PgQuery__ConstrType { PG_QUERY__CONSTR_TYPE__CONSTR_TYPE_UNDEFINED = 0, PG_QUERY__CONSTR_TYPE__CONSTR_NULL = 1, PG_QUERY__CONSTR_TYPE__CONSTR_NOTNULL = 2, PG_QUERY__CONSTR_TYPE__CONSTR_DEFAULT = 3, PG_QUERY__CONSTR_TYPE__CONSTR_IDENTITY = 4, PG_QUERY__CONSTR_TYPE__CONSTR_GENERATED = 5, PG_QUERY__CONSTR_TYPE__CONSTR_CHECK = 6, PG_QUERY__CONSTR_TYPE__CONSTR_PRIMARY = 7, PG_QUERY__CONSTR_TYPE__CONSTR_UNIQUE = 8, PG_QUERY__CONSTR_TYPE__CONSTR_EXCLUSION = 9, PG_QUERY__CONSTR_TYPE__CONSTR_FOREIGN = 10, PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_DEFERRABLE = 11, PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_NOT_DEFERRABLE = 12, PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_DEFERRED = 13, PG_QUERY__CONSTR_TYPE__CONSTR_ATTR_IMMEDIATE = 14 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__CONSTR_TYPE) } PgQuery__ConstrType; typedef enum _PgQuery__ImportForeignSchemaType { PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED = 0, PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_ALL = 1, PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_LIMIT_TO = 2, PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__FDW_IMPORT_SCHEMA_EXCEPT = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE) } PgQuery__ImportForeignSchemaType; typedef enum _PgQuery__RoleStmtType { PG_QUERY__ROLE_STMT_TYPE__ROLE_STMT_TYPE_UNDEFINED = 0, PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_ROLE = 1, PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_USER = 2, PG_QUERY__ROLE_STMT_TYPE__ROLESTMT_GROUP = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ROLE_STMT_TYPE) } PgQuery__RoleStmtType; typedef enum _PgQuery__FetchDirection { PG_QUERY__FETCH_DIRECTION__FETCH_DIRECTION_UNDEFINED = 0, PG_QUERY__FETCH_DIRECTION__FETCH_FORWARD = 1, PG_QUERY__FETCH_DIRECTION__FETCH_BACKWARD = 2, PG_QUERY__FETCH_DIRECTION__FETCH_ABSOLUTE = 3, PG_QUERY__FETCH_DIRECTION__FETCH_RELATIVE = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__FETCH_DIRECTION) } PgQuery__FetchDirection; typedef enum _PgQuery__FunctionParameterMode { PG_QUERY__FUNCTION_PARAMETER_MODE__FUNCTION_PARAMETER_MODE_UNDEFINED = 0, PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_IN = 1, PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_OUT = 2, PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_INOUT = 3, PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_VARIADIC = 4, PG_QUERY__FUNCTION_PARAMETER_MODE__FUNC_PARAM_TABLE = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__FUNCTION_PARAMETER_MODE) } PgQuery__FunctionParameterMode; typedef enum _PgQuery__TransactionStmtKind { PG_QUERY__TRANSACTION_STMT_KIND__TRANSACTION_STMT_KIND_UNDEFINED = 0, PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_BEGIN = 1, PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_START = 2, PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_COMMIT = 3, PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK = 4, PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_SAVEPOINT = 5, PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_RELEASE = 6, PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK_TO = 7, PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_PREPARE = 8, PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_COMMIT_PREPARED = 9, PG_QUERY__TRANSACTION_STMT_KIND__TRANS_STMT_ROLLBACK_PREPARED = 10 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__TRANSACTION_STMT_KIND) } PgQuery__TransactionStmtKind; typedef enum _PgQuery__ViewCheckOption { PG_QUERY__VIEW_CHECK_OPTION__VIEW_CHECK_OPTION_UNDEFINED = 0, PG_QUERY__VIEW_CHECK_OPTION__NO_CHECK_OPTION = 1, PG_QUERY__VIEW_CHECK_OPTION__LOCAL_CHECK_OPTION = 2, PG_QUERY__VIEW_CHECK_OPTION__CASCADED_CHECK_OPTION = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__VIEW_CHECK_OPTION) } PgQuery__ViewCheckOption; typedef enum _PgQuery__ClusterOption { PG_QUERY__CLUSTER_OPTION__CLUSTER_OPTION_UNDEFINED = 0, PG_QUERY__CLUSTER_OPTION__CLUOPT_RECHECK = 1, PG_QUERY__CLUSTER_OPTION__CLUOPT_VERBOSE = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__CLUSTER_OPTION) } PgQuery__ClusterOption; typedef enum _PgQuery__DiscardMode { PG_QUERY__DISCARD_MODE__DISCARD_MODE_UNDEFINED = 0, PG_QUERY__DISCARD_MODE__DISCARD_ALL = 1, PG_QUERY__DISCARD_MODE__DISCARD_PLANS = 2, PG_QUERY__DISCARD_MODE__DISCARD_SEQUENCES = 3, PG_QUERY__DISCARD_MODE__DISCARD_TEMP = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__DISCARD_MODE) } PgQuery__DiscardMode; typedef enum _PgQuery__ReindexObjectType { PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_TYPE_UNDEFINED = 0, PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_INDEX = 1, PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_TABLE = 2, PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_SCHEMA = 3, PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_SYSTEM = 4, PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_DATABASE = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__REINDEX_OBJECT_TYPE) } PgQuery__ReindexObjectType; typedef enum _PgQuery__AlterTSConfigType { PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_TYPE_UNDEFINED = 0, PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_ADD_MAPPING = 1, PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN = 2, PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_REPLACE_DICT = 3, PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN = 4, PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_DROP_MAPPING = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ALTER_TSCONFIG_TYPE) } PgQuery__AlterTSConfigType; typedef enum _PgQuery__AlterSubscriptionType { PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_TYPE_UNDEFINED = 0, PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_OPTIONS = 1, PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_CONNECTION = 2, PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_PUBLICATION = 3, PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_REFRESH = 4, PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_ENABLED = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ALTER_SUBSCRIPTION_TYPE) } PgQuery__AlterSubscriptionType; typedef enum _PgQuery__OnCommitAction { PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED = 0, PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_NOOP = 1, PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_PRESERVE_ROWS = 2, PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DELETE_ROWS = 3, PG_QUERY__ON_COMMIT_ACTION__ONCOMMIT_DROP = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ON_COMMIT_ACTION) } PgQuery__OnCommitAction; typedef enum _PgQuery__ParamKind { PG_QUERY__PARAM_KIND__PARAM_KIND_UNDEFINED = 0, PG_QUERY__PARAM_KIND__PARAM_EXTERN = 1, PG_QUERY__PARAM_KIND__PARAM_EXEC = 2, PG_QUERY__PARAM_KIND__PARAM_SUBLINK = 3, PG_QUERY__PARAM_KIND__PARAM_MULTIEXPR = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__PARAM_KIND) } PgQuery__ParamKind; typedef enum _PgQuery__CoercionContext { PG_QUERY__COERCION_CONTEXT__COERCION_CONTEXT_UNDEFINED = 0, PG_QUERY__COERCION_CONTEXT__COERCION_IMPLICIT = 1, PG_QUERY__COERCION_CONTEXT__COERCION_ASSIGNMENT = 2, PG_QUERY__COERCION_CONTEXT__COERCION_EXPLICIT = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__COERCION_CONTEXT) } PgQuery__CoercionContext; typedef enum _PgQuery__CoercionForm { PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED = 0, PG_QUERY__COERCION_FORM__COERCE_EXPLICIT_CALL = 1, PG_QUERY__COERCION_FORM__COERCE_EXPLICIT_CAST = 2, PG_QUERY__COERCION_FORM__COERCE_IMPLICIT_CAST = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__COERCION_FORM) } PgQuery__CoercionForm; typedef enum _PgQuery__BoolExprType { PG_QUERY__BOOL_EXPR_TYPE__BOOL_EXPR_TYPE_UNDEFINED = 0, PG_QUERY__BOOL_EXPR_TYPE__AND_EXPR = 1, PG_QUERY__BOOL_EXPR_TYPE__OR_EXPR = 2, PG_QUERY__BOOL_EXPR_TYPE__NOT_EXPR = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__BOOL_EXPR_TYPE) } PgQuery__BoolExprType; typedef enum _PgQuery__SubLinkType { PG_QUERY__SUB_LINK_TYPE__SUB_LINK_TYPE_UNDEFINED = 0, PG_QUERY__SUB_LINK_TYPE__EXISTS_SUBLINK = 1, PG_QUERY__SUB_LINK_TYPE__ALL_SUBLINK = 2, PG_QUERY__SUB_LINK_TYPE__ANY_SUBLINK = 3, PG_QUERY__SUB_LINK_TYPE__ROWCOMPARE_SUBLINK = 4, PG_QUERY__SUB_LINK_TYPE__EXPR_SUBLINK = 5, PG_QUERY__SUB_LINK_TYPE__MULTIEXPR_SUBLINK = 6, PG_QUERY__SUB_LINK_TYPE__ARRAY_SUBLINK = 7, PG_QUERY__SUB_LINK_TYPE__CTE_SUBLINK = 8 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SUB_LINK_TYPE) } PgQuery__SubLinkType; typedef enum _PgQuery__RowCompareType { PG_QUERY__ROW_COMPARE_TYPE__ROW_COMPARE_TYPE_UNDEFINED = 0, PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_LT = 1, PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_LE = 2, PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_EQ = 3, PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_GE = 4, PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_GT = 5, PG_QUERY__ROW_COMPARE_TYPE__ROWCOMPARE_NE = 6 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ROW_COMPARE_TYPE) } PgQuery__RowCompareType; typedef enum _PgQuery__MinMaxOp { PG_QUERY__MIN_MAX_OP__MIN_MAX_OP_UNDEFINED = 0, PG_QUERY__MIN_MAX_OP__IS_GREATEST = 1, PG_QUERY__MIN_MAX_OP__IS_LEAST = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__MIN_MAX_OP) } PgQuery__MinMaxOp; typedef enum _PgQuery__SQLValueFunctionOp { PG_QUERY__SQLVALUE_FUNCTION_OP__SQLVALUE_FUNCTION_OP_UNDEFINED = 0, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_DATE = 1, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIME = 2, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIME_N = 3, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIMESTAMP = 4, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_TIMESTAMP_N = 5, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIME = 6, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIME_N = 7, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIMESTAMP = 8, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_LOCALTIMESTAMP_N = 9, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_ROLE = 10, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_USER = 11, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_USER = 12, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_SESSION_USER = 13, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_CATALOG = 14, PG_QUERY__SQLVALUE_FUNCTION_OP__SVFOP_CURRENT_SCHEMA = 15 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SQLVALUE_FUNCTION_OP) } PgQuery__SQLValueFunctionOp; typedef enum _PgQuery__XmlExprOp { PG_QUERY__XML_EXPR_OP__XML_EXPR_OP_UNDEFINED = 0, PG_QUERY__XML_EXPR_OP__IS_XMLCONCAT = 1, PG_QUERY__XML_EXPR_OP__IS_XMLELEMENT = 2, PG_QUERY__XML_EXPR_OP__IS_XMLFOREST = 3, PG_QUERY__XML_EXPR_OP__IS_XMLPARSE = 4, PG_QUERY__XML_EXPR_OP__IS_XMLPI = 5, PG_QUERY__XML_EXPR_OP__IS_XMLROOT = 6, PG_QUERY__XML_EXPR_OP__IS_XMLSERIALIZE = 7, PG_QUERY__XML_EXPR_OP__IS_DOCUMENT = 8 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__XML_EXPR_OP) } PgQuery__XmlExprOp; typedef enum _PgQuery__XmlOptionType { PG_QUERY__XML_OPTION_TYPE__XML_OPTION_TYPE_UNDEFINED = 0, PG_QUERY__XML_OPTION_TYPE__XMLOPTION_DOCUMENT = 1, PG_QUERY__XML_OPTION_TYPE__XMLOPTION_CONTENT = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__XML_OPTION_TYPE) } PgQuery__XmlOptionType; typedef enum _PgQuery__NullTestType { PG_QUERY__NULL_TEST_TYPE__NULL_TEST_TYPE_UNDEFINED = 0, PG_QUERY__NULL_TEST_TYPE__IS_NULL = 1, PG_QUERY__NULL_TEST_TYPE__IS_NOT_NULL = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__NULL_TEST_TYPE) } PgQuery__NullTestType; typedef enum _PgQuery__BoolTestType { PG_QUERY__BOOL_TEST_TYPE__BOOL_TEST_TYPE_UNDEFINED = 0, PG_QUERY__BOOL_TEST_TYPE__IS_TRUE = 1, PG_QUERY__BOOL_TEST_TYPE__IS_NOT_TRUE = 2, PG_QUERY__BOOL_TEST_TYPE__IS_FALSE = 3, PG_QUERY__BOOL_TEST_TYPE__IS_NOT_FALSE = 4, PG_QUERY__BOOL_TEST_TYPE__IS_UNKNOWN = 5, PG_QUERY__BOOL_TEST_TYPE__IS_NOT_UNKNOWN = 6 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__BOOL_TEST_TYPE) } PgQuery__BoolTestType; typedef enum _PgQuery__CmdType { PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED = 0, PG_QUERY__CMD_TYPE__CMD_UNKNOWN = 1, PG_QUERY__CMD_TYPE__CMD_SELECT = 2, PG_QUERY__CMD_TYPE__CMD_UPDATE = 3, PG_QUERY__CMD_TYPE__CMD_INSERT = 4, PG_QUERY__CMD_TYPE__CMD_DELETE = 5, PG_QUERY__CMD_TYPE__CMD_UTILITY = 6, PG_QUERY__CMD_TYPE__CMD_NOTHING = 7 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__CMD_TYPE) } PgQuery__CmdType; typedef enum _PgQuery__JoinType { PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED = 0, PG_QUERY__JOIN_TYPE__JOIN_INNER = 1, PG_QUERY__JOIN_TYPE__JOIN_LEFT = 2, PG_QUERY__JOIN_TYPE__JOIN_FULL = 3, PG_QUERY__JOIN_TYPE__JOIN_RIGHT = 4, PG_QUERY__JOIN_TYPE__JOIN_SEMI = 5, PG_QUERY__JOIN_TYPE__JOIN_ANTI = 6, PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_OUTER = 7, PG_QUERY__JOIN_TYPE__JOIN_UNIQUE_INNER = 8 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__JOIN_TYPE) } PgQuery__JoinType; typedef enum _PgQuery__AggStrategy { PG_QUERY__AGG_STRATEGY__AGG_STRATEGY_UNDEFINED = 0, PG_QUERY__AGG_STRATEGY__AGG_PLAIN = 1, PG_QUERY__AGG_STRATEGY__AGG_SORTED = 2, PG_QUERY__AGG_STRATEGY__AGG_HASHED = 3, PG_QUERY__AGG_STRATEGY__AGG_MIXED = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__AGG_STRATEGY) } PgQuery__AggStrategy; typedef enum _PgQuery__AggSplit { PG_QUERY__AGG_SPLIT__AGG_SPLIT_UNDEFINED = 0, PG_QUERY__AGG_SPLIT__AGGSPLIT_SIMPLE = 1, PG_QUERY__AGG_SPLIT__AGGSPLIT_INITIAL_SERIAL = 2, PG_QUERY__AGG_SPLIT__AGGSPLIT_FINAL_DESERIAL = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__AGG_SPLIT) } PgQuery__AggSplit; typedef enum _PgQuery__SetOpCmd { PG_QUERY__SET_OP_CMD__SET_OP_CMD_UNDEFINED = 0, PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT = 1, PG_QUERY__SET_OP_CMD__SETOPCMD_INTERSECT_ALL = 2, PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT = 3, PG_QUERY__SET_OP_CMD__SETOPCMD_EXCEPT_ALL = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SET_OP_CMD) } PgQuery__SetOpCmd; typedef enum _PgQuery__SetOpStrategy { PG_QUERY__SET_OP_STRATEGY__SET_OP_STRATEGY_UNDEFINED = 0, PG_QUERY__SET_OP_STRATEGY__SETOP_SORTED = 1, PG_QUERY__SET_OP_STRATEGY__SETOP_HASHED = 2 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__SET_OP_STRATEGY) } PgQuery__SetOpStrategy; typedef enum _PgQuery__OnConflictAction { PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED = 0, PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NONE = 1, PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_NOTHING = 2, PG_QUERY__ON_CONFLICT_ACTION__ONCONFLICT_UPDATE = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__ON_CONFLICT_ACTION) } PgQuery__OnConflictAction; typedef enum _PgQuery__LimitOption { PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_UNDEFINED = 0, PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_DEFAULT = 1, PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_COUNT = 2, PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_WITH_TIES = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LIMIT_OPTION) } PgQuery__LimitOption; typedef enum _PgQuery__LockClauseStrength { PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED = 0, PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_NONE = 1, PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORKEYSHARE = 2, PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORSHARE = 3, PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORNOKEYUPDATE = 4, PG_QUERY__LOCK_CLAUSE_STRENGTH__LCS_FORUPDATE = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LOCK_CLAUSE_STRENGTH) } PgQuery__LockClauseStrength; typedef enum _PgQuery__LockWaitPolicy { PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED = 0, PG_QUERY__LOCK_WAIT_POLICY__LockWaitBlock = 1, PG_QUERY__LOCK_WAIT_POLICY__LockWaitSkip = 2, PG_QUERY__LOCK_WAIT_POLICY__LockWaitError = 3 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LOCK_WAIT_POLICY) } PgQuery__LockWaitPolicy; typedef enum _PgQuery__LockTupleMode { PG_QUERY__LOCK_TUPLE_MODE__LOCK_TUPLE_MODE_UNDEFINED = 0, PG_QUERY__LOCK_TUPLE_MODE__LockTupleKeyShare = 1, PG_QUERY__LOCK_TUPLE_MODE__LockTupleShare = 2, PG_QUERY__LOCK_TUPLE_MODE__LockTupleNoKeyExclusive = 3, PG_QUERY__LOCK_TUPLE_MODE__LockTupleExclusive = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__LOCK_TUPLE_MODE) } PgQuery__LockTupleMode; typedef enum _PgQuery__KeywordKind { PG_QUERY__KEYWORD_KIND__NO_KEYWORD = 0, PG_QUERY__KEYWORD_KIND__UNRESERVED_KEYWORD = 1, PG_QUERY__KEYWORD_KIND__COL_NAME_KEYWORD = 2, PG_QUERY__KEYWORD_KIND__TYPE_FUNC_NAME_KEYWORD = 3, PG_QUERY__KEYWORD_KIND__RESERVED_KEYWORD = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__KEYWORD_KIND) } PgQuery__KeywordKind; typedef enum _PgQuery__Token { PG_QUERY__TOKEN__NUL = 0, /* * Single-character tokens that are returned 1:1 (identical with "self" list in scan.l) * Either supporting syntax, or single-character operators (some can be both) * Also see https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-SYNTAX-SPECIAL-CHARS */ /* * "%" */ PG_QUERY__TOKEN__ASCII_37 = 37, /* * "(" */ PG_QUERY__TOKEN__ASCII_40 = 40, /* * ")" */ PG_QUERY__TOKEN__ASCII_41 = 41, /* * "*" */ PG_QUERY__TOKEN__ASCII_42 = 42, /* * "+" */ PG_QUERY__TOKEN__ASCII_43 = 43, /* * "," */ PG_QUERY__TOKEN__ASCII_44 = 44, /* * "-" */ PG_QUERY__TOKEN__ASCII_45 = 45, /* * "." */ PG_QUERY__TOKEN__ASCII_46 = 46, /* * "/" */ PG_QUERY__TOKEN__ASCII_47 = 47, /* * ":" */ PG_QUERY__TOKEN__ASCII_58 = 58, /* * ";" */ PG_QUERY__TOKEN__ASCII_59 = 59, /* * "<" */ PG_QUERY__TOKEN__ASCII_60 = 60, /* * "=" */ PG_QUERY__TOKEN__ASCII_61 = 61, /* * ">" */ PG_QUERY__TOKEN__ASCII_62 = 62, /* * "?" */ PG_QUERY__TOKEN__ASCII_63 = 63, /* * "[" */ PG_QUERY__TOKEN__ASCII_91 = 91, /* * "\" */ PG_QUERY__TOKEN__ASCII_92 = 92, /* * "]" */ PG_QUERY__TOKEN__ASCII_93 = 93, /* * "^" */ PG_QUERY__TOKEN__ASCII_94 = 94, /* * Named tokens in scan.l */ PG_QUERY__TOKEN__IDENT = 258, PG_QUERY__TOKEN__UIDENT = 259, PG_QUERY__TOKEN__FCONST = 260, PG_QUERY__TOKEN__SCONST = 261, PG_QUERY__TOKEN__USCONST = 262, PG_QUERY__TOKEN__BCONST = 263, PG_QUERY__TOKEN__XCONST = 264, PG_QUERY__TOKEN__Op = 265, PG_QUERY__TOKEN__ICONST = 266, PG_QUERY__TOKEN__PARAM = 267, PG_QUERY__TOKEN__TYPECAST = 268, PG_QUERY__TOKEN__DOT_DOT = 269, PG_QUERY__TOKEN__COLON_EQUALS = 270, PG_QUERY__TOKEN__EQUALS_GREATER = 271, PG_QUERY__TOKEN__LESS_EQUALS = 272, PG_QUERY__TOKEN__GREATER_EQUALS = 273, PG_QUERY__TOKEN__NOT_EQUALS = 274, PG_QUERY__TOKEN__SQL_COMMENT = 275, PG_QUERY__TOKEN__C_COMMENT = 276, PG_QUERY__TOKEN__ABORT_P = 277, PG_QUERY__TOKEN__ABSOLUTE_P = 278, PG_QUERY__TOKEN__ACCESS = 279, PG_QUERY__TOKEN__ACTION = 280, PG_QUERY__TOKEN__ADD_P = 281, PG_QUERY__TOKEN__ADMIN = 282, PG_QUERY__TOKEN__AFTER = 283, PG_QUERY__TOKEN__AGGREGATE = 284, PG_QUERY__TOKEN__ALL = 285, PG_QUERY__TOKEN__ALSO = 286, PG_QUERY__TOKEN__ALTER = 287, PG_QUERY__TOKEN__ALWAYS = 288, PG_QUERY__TOKEN__ANALYSE = 289, PG_QUERY__TOKEN__ANALYZE = 290, PG_QUERY__TOKEN__AND = 291, PG_QUERY__TOKEN__ANY = 292, PG_QUERY__TOKEN__ARRAY = 293, PG_QUERY__TOKEN__AS = 294, PG_QUERY__TOKEN__ASC = 295, PG_QUERY__TOKEN__ASSERTION = 296, PG_QUERY__TOKEN__ASSIGNMENT = 297, PG_QUERY__TOKEN__ASYMMETRIC = 298, PG_QUERY__TOKEN__AT = 299, PG_QUERY__TOKEN__ATTACH = 300, PG_QUERY__TOKEN__ATTRIBUTE = 301, PG_QUERY__TOKEN__AUTHORIZATION = 302, PG_QUERY__TOKEN__BACKWARD = 303, PG_QUERY__TOKEN__BEFORE = 304, PG_QUERY__TOKEN__BEGIN_P = 305, PG_QUERY__TOKEN__BETWEEN = 306, PG_QUERY__TOKEN__BIGINT = 307, PG_QUERY__TOKEN__BINARY = 308, PG_QUERY__TOKEN__BIT = 309, PG_QUERY__TOKEN__BOOLEAN_P = 310, PG_QUERY__TOKEN__BOTH = 311, PG_QUERY__TOKEN__BY = 312, PG_QUERY__TOKEN__CACHE = 313, PG_QUERY__TOKEN__CALL = 314, PG_QUERY__TOKEN__CALLED = 315, PG_QUERY__TOKEN__CASCADE = 316, PG_QUERY__TOKEN__CASCADED = 317, PG_QUERY__TOKEN__CASE = 318, PG_QUERY__TOKEN__CAST = 319, PG_QUERY__TOKEN__CATALOG_P = 320, PG_QUERY__TOKEN__CHAIN = 321, PG_QUERY__TOKEN__CHAR_P = 322, PG_QUERY__TOKEN__CHARACTER = 323, PG_QUERY__TOKEN__CHARACTERISTICS = 324, PG_QUERY__TOKEN__CHECK = 325, PG_QUERY__TOKEN__CHECKPOINT = 326, PG_QUERY__TOKEN__CLASS = 327, PG_QUERY__TOKEN__CLOSE = 328, PG_QUERY__TOKEN__CLUSTER = 329, PG_QUERY__TOKEN__COALESCE = 330, PG_QUERY__TOKEN__COLLATE = 331, PG_QUERY__TOKEN__COLLATION = 332, PG_QUERY__TOKEN__COLUMN = 333, PG_QUERY__TOKEN__COLUMNS = 334, PG_QUERY__TOKEN__COMMENT = 335, PG_QUERY__TOKEN__COMMENTS = 336, PG_QUERY__TOKEN__COMMIT = 337, PG_QUERY__TOKEN__COMMITTED = 338, PG_QUERY__TOKEN__CONCURRENTLY = 339, PG_QUERY__TOKEN__CONFIGURATION = 340, PG_QUERY__TOKEN__CONFLICT = 341, PG_QUERY__TOKEN__CONNECTION = 342, PG_QUERY__TOKEN__CONSTRAINT = 343, PG_QUERY__TOKEN__CONSTRAINTS = 344, PG_QUERY__TOKEN__CONTENT_P = 345, PG_QUERY__TOKEN__CONTINUE_P = 346, PG_QUERY__TOKEN__CONVERSION_P = 347, PG_QUERY__TOKEN__COPY = 348, PG_QUERY__TOKEN__COST = 349, PG_QUERY__TOKEN__CREATE = 350, PG_QUERY__TOKEN__CROSS = 351, PG_QUERY__TOKEN__CSV = 352, PG_QUERY__TOKEN__CUBE = 353, PG_QUERY__TOKEN__CURRENT_P = 354, PG_QUERY__TOKEN__CURRENT_CATALOG = 355, PG_QUERY__TOKEN__CURRENT_DATE = 356, PG_QUERY__TOKEN__CURRENT_ROLE = 357, PG_QUERY__TOKEN__CURRENT_SCHEMA = 358, PG_QUERY__TOKEN__CURRENT_TIME = 359, PG_QUERY__TOKEN__CURRENT_TIMESTAMP = 360, PG_QUERY__TOKEN__CURRENT_USER = 361, PG_QUERY__TOKEN__CURSOR = 362, PG_QUERY__TOKEN__CYCLE = 363, PG_QUERY__TOKEN__DATA_P = 364, PG_QUERY__TOKEN__DATABASE = 365, PG_QUERY__TOKEN__DAY_P = 366, PG_QUERY__TOKEN__DEALLOCATE = 367, PG_QUERY__TOKEN__DEC = 368, PG_QUERY__TOKEN__DECIMAL_P = 369, PG_QUERY__TOKEN__DECLARE = 370, PG_QUERY__TOKEN__DEFAULT = 371, PG_QUERY__TOKEN__DEFAULTS = 372, PG_QUERY__TOKEN__DEFERRABLE = 373, PG_QUERY__TOKEN__DEFERRED = 374, PG_QUERY__TOKEN__DEFINER = 375, PG_QUERY__TOKEN__DELETE_P = 376, PG_QUERY__TOKEN__DELIMITER = 377, PG_QUERY__TOKEN__DELIMITERS = 378, PG_QUERY__TOKEN__DEPENDS = 379, PG_QUERY__TOKEN__DESC = 380, PG_QUERY__TOKEN__DETACH = 381, PG_QUERY__TOKEN__DICTIONARY = 382, PG_QUERY__TOKEN__DISABLE_P = 383, PG_QUERY__TOKEN__DISCARD = 384, PG_QUERY__TOKEN__DISTINCT = 385, PG_QUERY__TOKEN__DO = 386, PG_QUERY__TOKEN__DOCUMENT_P = 387, PG_QUERY__TOKEN__DOMAIN_P = 388, PG_QUERY__TOKEN__DOUBLE_P = 389, PG_QUERY__TOKEN__DROP = 390, PG_QUERY__TOKEN__EACH = 391, PG_QUERY__TOKEN__ELSE = 392, PG_QUERY__TOKEN__ENABLE_P = 393, PG_QUERY__TOKEN__ENCODING = 394, PG_QUERY__TOKEN__ENCRYPTED = 395, PG_QUERY__TOKEN__END_P = 396, PG_QUERY__TOKEN__ENUM_P = 397, PG_QUERY__TOKEN__ESCAPE = 398, PG_QUERY__TOKEN__EVENT = 399, PG_QUERY__TOKEN__EXCEPT = 400, PG_QUERY__TOKEN__EXCLUDE = 401, PG_QUERY__TOKEN__EXCLUDING = 402, PG_QUERY__TOKEN__EXCLUSIVE = 403, PG_QUERY__TOKEN__EXECUTE = 404, PG_QUERY__TOKEN__EXISTS = 405, PG_QUERY__TOKEN__EXPLAIN = 406, PG_QUERY__TOKEN__EXPRESSION = 407, PG_QUERY__TOKEN__EXTENSION = 408, PG_QUERY__TOKEN__EXTERNAL = 409, PG_QUERY__TOKEN__EXTRACT = 410, PG_QUERY__TOKEN__FALSE_P = 411, PG_QUERY__TOKEN__FAMILY = 412, PG_QUERY__TOKEN__FETCH = 413, PG_QUERY__TOKEN__FILTER = 414, PG_QUERY__TOKEN__FIRST_P = 415, PG_QUERY__TOKEN__FLOAT_P = 416, PG_QUERY__TOKEN__FOLLOWING = 417, PG_QUERY__TOKEN__FOR = 418, PG_QUERY__TOKEN__FORCE = 419, PG_QUERY__TOKEN__FOREIGN = 420, PG_QUERY__TOKEN__FORWARD = 421, PG_QUERY__TOKEN__FREEZE = 422, PG_QUERY__TOKEN__FROM = 423, PG_QUERY__TOKEN__FULL = 424, PG_QUERY__TOKEN__FUNCTION = 425, PG_QUERY__TOKEN__FUNCTIONS = 426, PG_QUERY__TOKEN__GENERATED = 427, PG_QUERY__TOKEN__GLOBAL = 428, PG_QUERY__TOKEN__GRANT = 429, PG_QUERY__TOKEN__GRANTED = 430, PG_QUERY__TOKEN__GREATEST = 431, PG_QUERY__TOKEN__GROUP_P = 432, PG_QUERY__TOKEN__GROUPING = 433, PG_QUERY__TOKEN__GROUPS = 434, PG_QUERY__TOKEN__HANDLER = 435, PG_QUERY__TOKEN__HAVING = 436, PG_QUERY__TOKEN__HEADER_P = 437, PG_QUERY__TOKEN__HOLD = 438, PG_QUERY__TOKEN__HOUR_P = 439, PG_QUERY__TOKEN__IDENTITY_P = 440, PG_QUERY__TOKEN__IF_P = 441, PG_QUERY__TOKEN__ILIKE = 442, PG_QUERY__TOKEN__IMMEDIATE = 443, PG_QUERY__TOKEN__IMMUTABLE = 444, PG_QUERY__TOKEN__IMPLICIT_P = 445, PG_QUERY__TOKEN__IMPORT_P = 446, PG_QUERY__TOKEN__IN_P = 447, PG_QUERY__TOKEN__INCLUDE = 448, PG_QUERY__TOKEN__INCLUDING = 449, PG_QUERY__TOKEN__INCREMENT = 450, PG_QUERY__TOKEN__INDEX = 451, PG_QUERY__TOKEN__INDEXES = 452, PG_QUERY__TOKEN__INHERIT = 453, PG_QUERY__TOKEN__INHERITS = 454, PG_QUERY__TOKEN__INITIALLY = 455, PG_QUERY__TOKEN__INLINE_P = 456, PG_QUERY__TOKEN__INNER_P = 457, PG_QUERY__TOKEN__INOUT = 458, PG_QUERY__TOKEN__INPUT_P = 459, PG_QUERY__TOKEN__INSENSITIVE = 460, PG_QUERY__TOKEN__INSERT = 461, PG_QUERY__TOKEN__INSTEAD = 462, PG_QUERY__TOKEN__INT_P = 463, PG_QUERY__TOKEN__INTEGER = 464, PG_QUERY__TOKEN__INTERSECT = 465, PG_QUERY__TOKEN__INTERVAL = 466, PG_QUERY__TOKEN__INTO = 467, PG_QUERY__TOKEN__INVOKER = 468, PG_QUERY__TOKEN__IS = 469, PG_QUERY__TOKEN__ISNULL = 470, PG_QUERY__TOKEN__ISOLATION = 471, PG_QUERY__TOKEN__JOIN = 472, PG_QUERY__TOKEN__KEY = 473, PG_QUERY__TOKEN__LABEL = 474, PG_QUERY__TOKEN__LANGUAGE = 475, PG_QUERY__TOKEN__LARGE_P = 476, PG_QUERY__TOKEN__LAST_P = 477, PG_QUERY__TOKEN__LATERAL_P = 478, PG_QUERY__TOKEN__LEADING = 479, PG_QUERY__TOKEN__LEAKPROOF = 480, PG_QUERY__TOKEN__LEAST = 481, PG_QUERY__TOKEN__LEFT = 482, PG_QUERY__TOKEN__LEVEL = 483, PG_QUERY__TOKEN__LIKE = 484, PG_QUERY__TOKEN__LIMIT = 485, PG_QUERY__TOKEN__LISTEN = 486, PG_QUERY__TOKEN__LOAD = 487, PG_QUERY__TOKEN__LOCAL = 488, PG_QUERY__TOKEN__LOCALTIME = 489, PG_QUERY__TOKEN__LOCALTIMESTAMP = 490, PG_QUERY__TOKEN__LOCATION = 491, PG_QUERY__TOKEN__LOCK_P = 492, PG_QUERY__TOKEN__LOCKED = 493, PG_QUERY__TOKEN__LOGGED = 494, PG_QUERY__TOKEN__MAPPING = 495, PG_QUERY__TOKEN__MATCH = 496, PG_QUERY__TOKEN__MATERIALIZED = 497, PG_QUERY__TOKEN__MAXVALUE = 498, PG_QUERY__TOKEN__METHOD = 499, PG_QUERY__TOKEN__MINUTE_P = 500, PG_QUERY__TOKEN__MINVALUE = 501, PG_QUERY__TOKEN__MODE = 502, PG_QUERY__TOKEN__MONTH_P = 503, PG_QUERY__TOKEN__MOVE = 504, PG_QUERY__TOKEN__NAME_P = 505, PG_QUERY__TOKEN__NAMES = 506, PG_QUERY__TOKEN__NATIONAL = 507, PG_QUERY__TOKEN__NATURAL = 508, PG_QUERY__TOKEN__NCHAR = 509, PG_QUERY__TOKEN__NEW = 510, PG_QUERY__TOKEN__NEXT = 511, PG_QUERY__TOKEN__NFC = 512, PG_QUERY__TOKEN__NFD = 513, PG_QUERY__TOKEN__NFKC = 514, PG_QUERY__TOKEN__NFKD = 515, PG_QUERY__TOKEN__NO = 516, PG_QUERY__TOKEN__NONE = 517, PG_QUERY__TOKEN__NORMALIZE = 518, PG_QUERY__TOKEN__NORMALIZED = 519, PG_QUERY__TOKEN__NOT = 520, PG_QUERY__TOKEN__NOTHING = 521, PG_QUERY__TOKEN__NOTIFY = 522, PG_QUERY__TOKEN__NOTNULL = 523, PG_QUERY__TOKEN__NOWAIT = 524, PG_QUERY__TOKEN__NULL_P = 525, PG_QUERY__TOKEN__NULLIF = 526, PG_QUERY__TOKEN__NULLS_P = 527, PG_QUERY__TOKEN__NUMERIC = 528, PG_QUERY__TOKEN__OBJECT_P = 529, PG_QUERY__TOKEN__OF = 530, PG_QUERY__TOKEN__OFF = 531, PG_QUERY__TOKEN__OFFSET = 532, PG_QUERY__TOKEN__OIDS = 533, PG_QUERY__TOKEN__OLD = 534, PG_QUERY__TOKEN__ON = 535, PG_QUERY__TOKEN__ONLY = 536, PG_QUERY__TOKEN__OPERATOR = 537, PG_QUERY__TOKEN__OPTION = 538, PG_QUERY__TOKEN__OPTIONS = 539, PG_QUERY__TOKEN__OR = 540, PG_QUERY__TOKEN__ORDER = 541, PG_QUERY__TOKEN__ORDINALITY = 542, PG_QUERY__TOKEN__OTHERS = 543, PG_QUERY__TOKEN__OUT_P = 544, PG_QUERY__TOKEN__OUTER_P = 545, PG_QUERY__TOKEN__OVER = 546, PG_QUERY__TOKEN__OVERLAPS = 547, PG_QUERY__TOKEN__OVERLAY = 548, PG_QUERY__TOKEN__OVERRIDING = 549, PG_QUERY__TOKEN__OWNED = 550, PG_QUERY__TOKEN__OWNER = 551, PG_QUERY__TOKEN__PARALLEL = 552, PG_QUERY__TOKEN__PARSER = 553, PG_QUERY__TOKEN__PARTIAL = 554, PG_QUERY__TOKEN__PARTITION = 555, PG_QUERY__TOKEN__PASSING = 556, PG_QUERY__TOKEN__PASSWORD = 557, PG_QUERY__TOKEN__PLACING = 558, PG_QUERY__TOKEN__PLANS = 559, PG_QUERY__TOKEN__POLICY = 560, PG_QUERY__TOKEN__POSITION = 561, PG_QUERY__TOKEN__PRECEDING = 562, PG_QUERY__TOKEN__PRECISION = 563, PG_QUERY__TOKEN__PRESERVE = 564, PG_QUERY__TOKEN__PREPARE = 565, PG_QUERY__TOKEN__PREPARED = 566, PG_QUERY__TOKEN__PRIMARY = 567, PG_QUERY__TOKEN__PRIOR = 568, PG_QUERY__TOKEN__PRIVILEGES = 569, PG_QUERY__TOKEN__PROCEDURAL = 570, PG_QUERY__TOKEN__PROCEDURE = 571, PG_QUERY__TOKEN__PROCEDURES = 572, PG_QUERY__TOKEN__PROGRAM = 573, PG_QUERY__TOKEN__PUBLICATION = 574, PG_QUERY__TOKEN__QUOTE = 575, PG_QUERY__TOKEN__RANGE = 576, PG_QUERY__TOKEN__READ = 577, PG_QUERY__TOKEN__REAL = 578, PG_QUERY__TOKEN__REASSIGN = 579, PG_QUERY__TOKEN__RECHECK = 580, PG_QUERY__TOKEN__RECURSIVE = 581, PG_QUERY__TOKEN__REF = 582, PG_QUERY__TOKEN__REFERENCES = 583, PG_QUERY__TOKEN__REFERENCING = 584, PG_QUERY__TOKEN__REFRESH = 585, PG_QUERY__TOKEN__REINDEX = 586, PG_QUERY__TOKEN__RELATIVE_P = 587, PG_QUERY__TOKEN__RELEASE = 588, PG_QUERY__TOKEN__RENAME = 589, PG_QUERY__TOKEN__REPEATABLE = 590, PG_QUERY__TOKEN__REPLACE = 591, PG_QUERY__TOKEN__REPLICA = 592, PG_QUERY__TOKEN__RESET = 593, PG_QUERY__TOKEN__RESTART = 594, PG_QUERY__TOKEN__RESTRICT = 595, PG_QUERY__TOKEN__RETURNING = 596, PG_QUERY__TOKEN__RETURNS = 597, PG_QUERY__TOKEN__REVOKE = 598, PG_QUERY__TOKEN__RIGHT = 599, PG_QUERY__TOKEN__ROLE = 600, PG_QUERY__TOKEN__ROLLBACK = 601, PG_QUERY__TOKEN__ROLLUP = 602, PG_QUERY__TOKEN__ROUTINE = 603, PG_QUERY__TOKEN__ROUTINES = 604, PG_QUERY__TOKEN__ROW = 605, PG_QUERY__TOKEN__ROWS = 606, PG_QUERY__TOKEN__RULE = 607, PG_QUERY__TOKEN__SAVEPOINT = 608, PG_QUERY__TOKEN__SCHEMA = 609, PG_QUERY__TOKEN__SCHEMAS = 610, PG_QUERY__TOKEN__SCROLL = 611, PG_QUERY__TOKEN__SEARCH = 612, PG_QUERY__TOKEN__SECOND_P = 613, PG_QUERY__TOKEN__SECURITY = 614, PG_QUERY__TOKEN__SELECT = 615, PG_QUERY__TOKEN__SEQUENCE = 616, PG_QUERY__TOKEN__SEQUENCES = 617, PG_QUERY__TOKEN__SERIALIZABLE = 618, PG_QUERY__TOKEN__SERVER = 619, PG_QUERY__TOKEN__SESSION = 620, PG_QUERY__TOKEN__SESSION_USER = 621, PG_QUERY__TOKEN__SET = 622, PG_QUERY__TOKEN__SETS = 623, PG_QUERY__TOKEN__SETOF = 624, PG_QUERY__TOKEN__SHARE = 625, PG_QUERY__TOKEN__SHOW = 626, PG_QUERY__TOKEN__SIMILAR = 627, PG_QUERY__TOKEN__SIMPLE = 628, PG_QUERY__TOKEN__SKIP = 629, PG_QUERY__TOKEN__SMALLINT = 630, PG_QUERY__TOKEN__SNAPSHOT = 631, PG_QUERY__TOKEN__SOME = 632, PG_QUERY__TOKEN__SQL_P = 633, PG_QUERY__TOKEN__STABLE = 634, PG_QUERY__TOKEN__STANDALONE_P = 635, PG_QUERY__TOKEN__START = 636, PG_QUERY__TOKEN__STATEMENT = 637, PG_QUERY__TOKEN__STATISTICS = 638, PG_QUERY__TOKEN__STDIN = 639, PG_QUERY__TOKEN__STDOUT = 640, PG_QUERY__TOKEN__STORAGE = 641, PG_QUERY__TOKEN__STORED = 642, PG_QUERY__TOKEN__STRICT_P = 643, PG_QUERY__TOKEN__STRIP_P = 644, PG_QUERY__TOKEN__SUBSCRIPTION = 645, PG_QUERY__TOKEN__SUBSTRING = 646, PG_QUERY__TOKEN__SUPPORT = 647, PG_QUERY__TOKEN__SYMMETRIC = 648, PG_QUERY__TOKEN__SYSID = 649, PG_QUERY__TOKEN__SYSTEM_P = 650, PG_QUERY__TOKEN__TABLE = 651, PG_QUERY__TOKEN__TABLES = 652, PG_QUERY__TOKEN__TABLESAMPLE = 653, PG_QUERY__TOKEN__TABLESPACE = 654, PG_QUERY__TOKEN__TEMP = 655, PG_QUERY__TOKEN__TEMPLATE = 656, PG_QUERY__TOKEN__TEMPORARY = 657, PG_QUERY__TOKEN__TEXT_P = 658, PG_QUERY__TOKEN__THEN = 659, PG_QUERY__TOKEN__TIES = 660, PG_QUERY__TOKEN__TIME = 661, PG_QUERY__TOKEN__TIMESTAMP = 662, PG_QUERY__TOKEN__TO = 663, PG_QUERY__TOKEN__TRAILING = 664, PG_QUERY__TOKEN__TRANSACTION = 665, PG_QUERY__TOKEN__TRANSFORM = 666, PG_QUERY__TOKEN__TREAT = 667, PG_QUERY__TOKEN__TRIGGER = 668, PG_QUERY__TOKEN__TRIM = 669, PG_QUERY__TOKEN__TRUE_P = 670, PG_QUERY__TOKEN__TRUNCATE = 671, PG_QUERY__TOKEN__TRUSTED = 672, PG_QUERY__TOKEN__TYPE_P = 673, PG_QUERY__TOKEN__TYPES_P = 674, PG_QUERY__TOKEN__UESCAPE = 675, PG_QUERY__TOKEN__UNBOUNDED = 676, PG_QUERY__TOKEN__UNCOMMITTED = 677, PG_QUERY__TOKEN__UNENCRYPTED = 678, PG_QUERY__TOKEN__UNION = 679, PG_QUERY__TOKEN__UNIQUE = 680, PG_QUERY__TOKEN__UNKNOWN = 681, PG_QUERY__TOKEN__UNLISTEN = 682, PG_QUERY__TOKEN__UNLOGGED = 683, PG_QUERY__TOKEN__UNTIL = 684, PG_QUERY__TOKEN__UPDATE = 685, PG_QUERY__TOKEN__USER = 686, PG_QUERY__TOKEN__USING = 687, PG_QUERY__TOKEN__VACUUM = 688, PG_QUERY__TOKEN__VALID = 689, PG_QUERY__TOKEN__VALIDATE = 690, PG_QUERY__TOKEN__VALIDATOR = 691, PG_QUERY__TOKEN__VALUE_P = 692, PG_QUERY__TOKEN__VALUES = 693, PG_QUERY__TOKEN__VARCHAR = 694, PG_QUERY__TOKEN__VARIADIC = 695, PG_QUERY__TOKEN__VARYING = 696, PG_QUERY__TOKEN__VERBOSE = 697, PG_QUERY__TOKEN__VERSION_P = 698, PG_QUERY__TOKEN__VIEW = 699, PG_QUERY__TOKEN__VIEWS = 700, PG_QUERY__TOKEN__VOLATILE = 701, PG_QUERY__TOKEN__WHEN = 702, PG_QUERY__TOKEN__WHERE = 703, PG_QUERY__TOKEN__WHITESPACE_P = 704, PG_QUERY__TOKEN__WINDOW = 705, PG_QUERY__TOKEN__WITH = 706, PG_QUERY__TOKEN__WITHIN = 707, PG_QUERY__TOKEN__WITHOUT = 708, PG_QUERY__TOKEN__WORK = 709, PG_QUERY__TOKEN__WRAPPER = 710, PG_QUERY__TOKEN__WRITE = 711, PG_QUERY__TOKEN__XML_P = 712, PG_QUERY__TOKEN__XMLATTRIBUTES = 713, PG_QUERY__TOKEN__XMLCONCAT = 714, PG_QUERY__TOKEN__XMLELEMENT = 715, PG_QUERY__TOKEN__XMLEXISTS = 716, PG_QUERY__TOKEN__XMLFOREST = 717, PG_QUERY__TOKEN__XMLNAMESPACES = 718, PG_QUERY__TOKEN__XMLPARSE = 719, PG_QUERY__TOKEN__XMLPI = 720, PG_QUERY__TOKEN__XMLROOT = 721, PG_QUERY__TOKEN__XMLSERIALIZE = 722, PG_QUERY__TOKEN__XMLTABLE = 723, PG_QUERY__TOKEN__YEAR_P = 724, PG_QUERY__TOKEN__YES_P = 725, PG_QUERY__TOKEN__ZONE = 726, PG_QUERY__TOKEN__NOT_LA = 727, PG_QUERY__TOKEN__NULLS_LA = 728, PG_QUERY__TOKEN__WITH_LA = 729, PG_QUERY__TOKEN__POSTFIXOP = 730, PG_QUERY__TOKEN__UMINUS = 731 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__TOKEN) } PgQuery__Token; /* --- messages --- */ struct PgQuery__ParseResult { ProtobufCMessage base; int32_t version; size_t n_stmts; PgQuery__RawStmt **stmts; }; #define PG_QUERY__PARSE_RESULT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__parse_result__descriptor) \ , 0, 0,NULL } struct PgQuery__ScanResult { ProtobufCMessage base; int32_t version; size_t n_tokens; PgQuery__ScanToken **tokens; }; #define PG_QUERY__SCAN_RESULT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__scan_result__descriptor) \ , 0, 0,NULL } typedef enum { PG_QUERY__NODE__NODE__NOT_SET = 0, PG_QUERY__NODE__NODE_ALIAS = 1, PG_QUERY__NODE__NODE_RANGE_VAR = 2, PG_QUERY__NODE__NODE_TABLE_FUNC = 3, PG_QUERY__NODE__NODE_EXPR = 4, PG_QUERY__NODE__NODE_VAR = 5, PG_QUERY__NODE__NODE_PARAM = 6, PG_QUERY__NODE__NODE_AGGREF = 7, PG_QUERY__NODE__NODE_GROUPING_FUNC = 8, PG_QUERY__NODE__NODE_WINDOW_FUNC = 9, PG_QUERY__NODE__NODE_SUBSCRIPTING_REF = 10, PG_QUERY__NODE__NODE_FUNC_EXPR = 11, PG_QUERY__NODE__NODE_NAMED_ARG_EXPR = 12, PG_QUERY__NODE__NODE_OP_EXPR = 13, PG_QUERY__NODE__NODE_DISTINCT_EXPR = 14, PG_QUERY__NODE__NODE_NULL_IF_EXPR = 15, PG_QUERY__NODE__NODE_SCALAR_ARRAY_OP_EXPR = 16, PG_QUERY__NODE__NODE_BOOL_EXPR = 17, PG_QUERY__NODE__NODE_SUB_LINK = 18, PG_QUERY__NODE__NODE_SUB_PLAN = 19, PG_QUERY__NODE__NODE_ALTERNATIVE_SUB_PLAN = 20, PG_QUERY__NODE__NODE_FIELD_SELECT = 21, PG_QUERY__NODE__NODE_FIELD_STORE = 22, PG_QUERY__NODE__NODE_RELABEL_TYPE = 23, PG_QUERY__NODE__NODE_COERCE_VIA_IO = 24, PG_QUERY__NODE__NODE_ARRAY_COERCE_EXPR = 25, PG_QUERY__NODE__NODE_CONVERT_ROWTYPE_EXPR = 26, PG_QUERY__NODE__NODE_COLLATE_EXPR = 27, PG_QUERY__NODE__NODE_CASE_EXPR = 28, PG_QUERY__NODE__NODE_CASE_WHEN = 29, PG_QUERY__NODE__NODE_CASE_TEST_EXPR = 30, PG_QUERY__NODE__NODE_ARRAY_EXPR = 31, PG_QUERY__NODE__NODE_ROW_EXPR = 32, PG_QUERY__NODE__NODE_ROW_COMPARE_EXPR = 33, PG_QUERY__NODE__NODE_COALESCE_EXPR = 34, PG_QUERY__NODE__NODE_MIN_MAX_EXPR = 35, PG_QUERY__NODE__NODE_SQLVALUE_FUNCTION = 36, PG_QUERY__NODE__NODE_XML_EXPR = 37, PG_QUERY__NODE__NODE_NULL_TEST = 38, PG_QUERY__NODE__NODE_BOOLEAN_TEST = 39, PG_QUERY__NODE__NODE_COERCE_TO_DOMAIN = 40, PG_QUERY__NODE__NODE_COERCE_TO_DOMAIN_VALUE = 41, PG_QUERY__NODE__NODE_SET_TO_DEFAULT = 42, PG_QUERY__NODE__NODE_CURRENT_OF_EXPR = 43, PG_QUERY__NODE__NODE_NEXT_VALUE_EXPR = 44, PG_QUERY__NODE__NODE_INFERENCE_ELEM = 45, PG_QUERY__NODE__NODE_TARGET_ENTRY = 46, PG_QUERY__NODE__NODE_RANGE_TBL_REF = 47, PG_QUERY__NODE__NODE_JOIN_EXPR = 48, PG_QUERY__NODE__NODE_FROM_EXPR = 49, PG_QUERY__NODE__NODE_ON_CONFLICT_EXPR = 50, PG_QUERY__NODE__NODE_INTO_CLAUSE = 51, PG_QUERY__NODE__NODE_RAW_STMT = 52, PG_QUERY__NODE__NODE_QUERY = 53, PG_QUERY__NODE__NODE_INSERT_STMT = 54, PG_QUERY__NODE__NODE_DELETE_STMT = 55, PG_QUERY__NODE__NODE_UPDATE_STMT = 56, PG_QUERY__NODE__NODE_SELECT_STMT = 57, PG_QUERY__NODE__NODE_ALTER_TABLE_STMT = 58, PG_QUERY__NODE__NODE_ALTER_TABLE_CMD = 59, PG_QUERY__NODE__NODE_ALTER_DOMAIN_STMT = 60, PG_QUERY__NODE__NODE_SET_OPERATION_STMT = 61, PG_QUERY__NODE__NODE_GRANT_STMT = 62, PG_QUERY__NODE__NODE_GRANT_ROLE_STMT = 63, PG_QUERY__NODE__NODE_ALTER_DEFAULT_PRIVILEGES_STMT = 64, PG_QUERY__NODE__NODE_CLOSE_PORTAL_STMT = 65, PG_QUERY__NODE__NODE_CLUSTER_STMT = 66, PG_QUERY__NODE__NODE_COPY_STMT = 67, PG_QUERY__NODE__NODE_CREATE_STMT = 68, PG_QUERY__NODE__NODE_DEFINE_STMT = 69, PG_QUERY__NODE__NODE_DROP_STMT = 70, PG_QUERY__NODE__NODE_TRUNCATE_STMT = 71, PG_QUERY__NODE__NODE_COMMENT_STMT = 72, PG_QUERY__NODE__NODE_FETCH_STMT = 73, PG_QUERY__NODE__NODE_INDEX_STMT = 74, PG_QUERY__NODE__NODE_CREATE_FUNCTION_STMT = 75, PG_QUERY__NODE__NODE_ALTER_FUNCTION_STMT = 76, PG_QUERY__NODE__NODE_DO_STMT = 77, PG_QUERY__NODE__NODE_RENAME_STMT = 78, PG_QUERY__NODE__NODE_RULE_STMT = 79, PG_QUERY__NODE__NODE_NOTIFY_STMT = 80, PG_QUERY__NODE__NODE_LISTEN_STMT = 81, PG_QUERY__NODE__NODE_UNLISTEN_STMT = 82, PG_QUERY__NODE__NODE_TRANSACTION_STMT = 83, PG_QUERY__NODE__NODE_VIEW_STMT = 84, PG_QUERY__NODE__NODE_LOAD_STMT = 85, PG_QUERY__NODE__NODE_CREATE_DOMAIN_STMT = 86, PG_QUERY__NODE__NODE_CREATEDB_STMT = 87, PG_QUERY__NODE__NODE_DROPDB_STMT = 88, PG_QUERY__NODE__NODE_VACUUM_STMT = 89, PG_QUERY__NODE__NODE_EXPLAIN_STMT = 90, PG_QUERY__NODE__NODE_CREATE_TABLE_AS_STMT = 91, PG_QUERY__NODE__NODE_CREATE_SEQ_STMT = 92, PG_QUERY__NODE__NODE_ALTER_SEQ_STMT = 93, PG_QUERY__NODE__NODE_VARIABLE_SET_STMT = 94, PG_QUERY__NODE__NODE_VARIABLE_SHOW_STMT = 95, PG_QUERY__NODE__NODE_DISCARD_STMT = 96, PG_QUERY__NODE__NODE_CREATE_TRIG_STMT = 97, PG_QUERY__NODE__NODE_CREATE_PLANG_STMT = 98, PG_QUERY__NODE__NODE_CREATE_ROLE_STMT = 99, PG_QUERY__NODE__NODE_ALTER_ROLE_STMT = 100, PG_QUERY__NODE__NODE_DROP_ROLE_STMT = 101, PG_QUERY__NODE__NODE_LOCK_STMT = 102, PG_QUERY__NODE__NODE_CONSTRAINTS_SET_STMT = 103, PG_QUERY__NODE__NODE_REINDEX_STMT = 104, PG_QUERY__NODE__NODE_CHECK_POINT_STMT = 105, PG_QUERY__NODE__NODE_CREATE_SCHEMA_STMT = 106, PG_QUERY__NODE__NODE_ALTER_DATABASE_STMT = 107, PG_QUERY__NODE__NODE_ALTER_DATABASE_SET_STMT = 108, PG_QUERY__NODE__NODE_ALTER_ROLE_SET_STMT = 109, PG_QUERY__NODE__NODE_CREATE_CONVERSION_STMT = 110, PG_QUERY__NODE__NODE_CREATE_CAST_STMT = 111, PG_QUERY__NODE__NODE_CREATE_OP_CLASS_STMT = 112, PG_QUERY__NODE__NODE_CREATE_OP_FAMILY_STMT = 113, PG_QUERY__NODE__NODE_ALTER_OP_FAMILY_STMT = 114, PG_QUERY__NODE__NODE_PREPARE_STMT = 115, PG_QUERY__NODE__NODE_EXECUTE_STMT = 116, PG_QUERY__NODE__NODE_DEALLOCATE_STMT = 117, PG_QUERY__NODE__NODE_DECLARE_CURSOR_STMT = 118, PG_QUERY__NODE__NODE_CREATE_TABLE_SPACE_STMT = 119, PG_QUERY__NODE__NODE_DROP_TABLE_SPACE_STMT = 120, PG_QUERY__NODE__NODE_ALTER_OBJECT_DEPENDS_STMT = 121, PG_QUERY__NODE__NODE_ALTER_OBJECT_SCHEMA_STMT = 122, PG_QUERY__NODE__NODE_ALTER_OWNER_STMT = 123, PG_QUERY__NODE__NODE_ALTER_OPERATOR_STMT = 124, PG_QUERY__NODE__NODE_ALTER_TYPE_STMT = 125, PG_QUERY__NODE__NODE_DROP_OWNED_STMT = 126, PG_QUERY__NODE__NODE_REASSIGN_OWNED_STMT = 127, PG_QUERY__NODE__NODE_COMPOSITE_TYPE_STMT = 128, PG_QUERY__NODE__NODE_CREATE_ENUM_STMT = 129, PG_QUERY__NODE__NODE_CREATE_RANGE_STMT = 130, PG_QUERY__NODE__NODE_ALTER_ENUM_STMT = 131, PG_QUERY__NODE__NODE_ALTER_TSDICTIONARY_STMT = 132, PG_QUERY__NODE__NODE_ALTER_TSCONFIGURATION_STMT = 133, PG_QUERY__NODE__NODE_CREATE_FDW_STMT = 134, PG_QUERY__NODE__NODE_ALTER_FDW_STMT = 135, PG_QUERY__NODE__NODE_CREATE_FOREIGN_SERVER_STMT = 136, PG_QUERY__NODE__NODE_ALTER_FOREIGN_SERVER_STMT = 137, PG_QUERY__NODE__NODE_CREATE_USER_MAPPING_STMT = 138, PG_QUERY__NODE__NODE_ALTER_USER_MAPPING_STMT = 139, PG_QUERY__NODE__NODE_DROP_USER_MAPPING_STMT = 140, PG_QUERY__NODE__NODE_ALTER_TABLE_SPACE_OPTIONS_STMT = 141, PG_QUERY__NODE__NODE_ALTER_TABLE_MOVE_ALL_STMT = 142, PG_QUERY__NODE__NODE_SEC_LABEL_STMT = 143, PG_QUERY__NODE__NODE_CREATE_FOREIGN_TABLE_STMT = 144, PG_QUERY__NODE__NODE_IMPORT_FOREIGN_SCHEMA_STMT = 145, PG_QUERY__NODE__NODE_CREATE_EXTENSION_STMT = 146, PG_QUERY__NODE__NODE_ALTER_EXTENSION_STMT = 147, PG_QUERY__NODE__NODE_ALTER_EXTENSION_CONTENTS_STMT = 148, PG_QUERY__NODE__NODE_CREATE_EVENT_TRIG_STMT = 149, PG_QUERY__NODE__NODE_ALTER_EVENT_TRIG_STMT = 150, PG_QUERY__NODE__NODE_REFRESH_MAT_VIEW_STMT = 151, PG_QUERY__NODE__NODE_REPLICA_IDENTITY_STMT = 152, PG_QUERY__NODE__NODE_ALTER_SYSTEM_STMT = 153, PG_QUERY__NODE__NODE_CREATE_POLICY_STMT = 154, PG_QUERY__NODE__NODE_ALTER_POLICY_STMT = 155, PG_QUERY__NODE__NODE_CREATE_TRANSFORM_STMT = 156, PG_QUERY__NODE__NODE_CREATE_AM_STMT = 157, PG_QUERY__NODE__NODE_CREATE_PUBLICATION_STMT = 158, PG_QUERY__NODE__NODE_ALTER_PUBLICATION_STMT = 159, PG_QUERY__NODE__NODE_CREATE_SUBSCRIPTION_STMT = 160, PG_QUERY__NODE__NODE_ALTER_SUBSCRIPTION_STMT = 161, PG_QUERY__NODE__NODE_DROP_SUBSCRIPTION_STMT = 162, PG_QUERY__NODE__NODE_CREATE_STATS_STMT = 163, PG_QUERY__NODE__NODE_ALTER_COLLATION_STMT = 164, PG_QUERY__NODE__NODE_CALL_STMT = 165, PG_QUERY__NODE__NODE_ALTER_STATS_STMT = 166, PG_QUERY__NODE__NODE_A_EXPR = 167, PG_QUERY__NODE__NODE_COLUMN_REF = 168, PG_QUERY__NODE__NODE_PARAM_REF = 169, PG_QUERY__NODE__NODE_A_CONST = 170, PG_QUERY__NODE__NODE_FUNC_CALL = 171, PG_QUERY__NODE__NODE_A_STAR = 172, PG_QUERY__NODE__NODE_A_INDICES = 173, PG_QUERY__NODE__NODE_A_INDIRECTION = 174, PG_QUERY__NODE__NODE_A_ARRAY_EXPR = 175, PG_QUERY__NODE__NODE_RES_TARGET = 176, PG_QUERY__NODE__NODE_MULTI_ASSIGN_REF = 177, PG_QUERY__NODE__NODE_TYPE_CAST = 178, PG_QUERY__NODE__NODE_COLLATE_CLAUSE = 179, PG_QUERY__NODE__NODE_SORT_BY = 180, PG_QUERY__NODE__NODE_WINDOW_DEF = 181, PG_QUERY__NODE__NODE_RANGE_SUBSELECT = 182, PG_QUERY__NODE__NODE_RANGE_FUNCTION = 183, PG_QUERY__NODE__NODE_RANGE_TABLE_SAMPLE = 184, PG_QUERY__NODE__NODE_RANGE_TABLE_FUNC = 185, PG_QUERY__NODE__NODE_RANGE_TABLE_FUNC_COL = 186, PG_QUERY__NODE__NODE_TYPE_NAME = 187, PG_QUERY__NODE__NODE_COLUMN_DEF = 188, PG_QUERY__NODE__NODE_INDEX_ELEM = 189, PG_QUERY__NODE__NODE_CONSTRAINT = 190, PG_QUERY__NODE__NODE_DEF_ELEM = 191, PG_QUERY__NODE__NODE_RANGE_TBL_ENTRY = 192, PG_QUERY__NODE__NODE_RANGE_TBL_FUNCTION = 193, PG_QUERY__NODE__NODE_TABLE_SAMPLE_CLAUSE = 194, PG_QUERY__NODE__NODE_WITH_CHECK_OPTION = 195, PG_QUERY__NODE__NODE_SORT_GROUP_CLAUSE = 196, PG_QUERY__NODE__NODE_GROUPING_SET = 197, PG_QUERY__NODE__NODE_WINDOW_CLAUSE = 198, PG_QUERY__NODE__NODE_OBJECT_WITH_ARGS = 199, PG_QUERY__NODE__NODE_ACCESS_PRIV = 200, PG_QUERY__NODE__NODE_CREATE_OP_CLASS_ITEM = 201, PG_QUERY__NODE__NODE_TABLE_LIKE_CLAUSE = 202, PG_QUERY__NODE__NODE_FUNCTION_PARAMETER = 203, PG_QUERY__NODE__NODE_LOCKING_CLAUSE = 204, PG_QUERY__NODE__NODE_ROW_MARK_CLAUSE = 205, PG_QUERY__NODE__NODE_XML_SERIALIZE = 206, PG_QUERY__NODE__NODE_WITH_CLAUSE = 207, PG_QUERY__NODE__NODE_INFER_CLAUSE = 208, PG_QUERY__NODE__NODE_ON_CONFLICT_CLAUSE = 209, PG_QUERY__NODE__NODE_COMMON_TABLE_EXPR = 210, PG_QUERY__NODE__NODE_ROLE_SPEC = 211, PG_QUERY__NODE__NODE_TRIGGER_TRANSITION = 212, PG_QUERY__NODE__NODE_PARTITION_ELEM = 213, PG_QUERY__NODE__NODE_PARTITION_SPEC = 214, PG_QUERY__NODE__NODE_PARTITION_BOUND_SPEC = 215, PG_QUERY__NODE__NODE_PARTITION_RANGE_DATUM = 216, PG_QUERY__NODE__NODE_PARTITION_CMD = 217, PG_QUERY__NODE__NODE_VACUUM_RELATION = 218, PG_QUERY__NODE__NODE_INLINE_CODE_BLOCK = 219, PG_QUERY__NODE__NODE_CALL_CONTEXT = 220, PG_QUERY__NODE__NODE_INTEGER = 221, PG_QUERY__NODE__NODE_FLOAT = 222, PG_QUERY__NODE__NODE_STRING = 223, PG_QUERY__NODE__NODE_BIT_STRING = 224, PG_QUERY__NODE__NODE_NULL = 225, PG_QUERY__NODE__NODE_LIST = 226, PG_QUERY__NODE__NODE_INT_LIST = 227, PG_QUERY__NODE__NODE_OID_LIST = 228 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PG_QUERY__NODE__NODE__CASE) } PgQuery__Node__NodeCase; struct PgQuery__Node { ProtobufCMessage base; PgQuery__Node__NodeCase node_case; union { PgQuery__Alias *alias; PgQuery__RangeVar *range_var; PgQuery__TableFunc *table_func; PgQuery__Expr *expr; PgQuery__Var *var; PgQuery__Param *param; PgQuery__Aggref *aggref; PgQuery__GroupingFunc *grouping_func; PgQuery__WindowFunc *window_func; PgQuery__SubscriptingRef *subscripting_ref; PgQuery__FuncExpr *func_expr; PgQuery__NamedArgExpr *named_arg_expr; PgQuery__OpExpr *op_expr; PgQuery__DistinctExpr *distinct_expr; PgQuery__NullIfExpr *null_if_expr; PgQuery__ScalarArrayOpExpr *scalar_array_op_expr; PgQuery__BoolExpr *bool_expr; PgQuery__SubLink *sub_link; PgQuery__SubPlan *sub_plan; PgQuery__AlternativeSubPlan *alternative_sub_plan; PgQuery__FieldSelect *field_select; PgQuery__FieldStore *field_store; PgQuery__RelabelType *relabel_type; PgQuery__CoerceViaIO *coerce_via_io; PgQuery__ArrayCoerceExpr *array_coerce_expr; PgQuery__ConvertRowtypeExpr *convert_rowtype_expr; PgQuery__CollateExpr *collate_expr; PgQuery__CaseExpr *case_expr; PgQuery__CaseWhen *case_when; PgQuery__CaseTestExpr *case_test_expr; PgQuery__ArrayExpr *array_expr; PgQuery__RowExpr *row_expr; PgQuery__RowCompareExpr *row_compare_expr; PgQuery__CoalesceExpr *coalesce_expr; PgQuery__MinMaxExpr *min_max_expr; PgQuery__SQLValueFunction *sqlvalue_function; PgQuery__XmlExpr *xml_expr; PgQuery__NullTest *null_test; PgQuery__BooleanTest *boolean_test; PgQuery__CoerceToDomain *coerce_to_domain; PgQuery__CoerceToDomainValue *coerce_to_domain_value; PgQuery__SetToDefault *set_to_default; PgQuery__CurrentOfExpr *current_of_expr; PgQuery__NextValueExpr *next_value_expr; PgQuery__InferenceElem *inference_elem; PgQuery__TargetEntry *target_entry; PgQuery__RangeTblRef *range_tbl_ref; PgQuery__JoinExpr *join_expr; PgQuery__FromExpr *from_expr; PgQuery__OnConflictExpr *on_conflict_expr; PgQuery__IntoClause *into_clause; PgQuery__RawStmt *raw_stmt; PgQuery__Query *query; PgQuery__InsertStmt *insert_stmt; PgQuery__DeleteStmt *delete_stmt; PgQuery__UpdateStmt *update_stmt; PgQuery__SelectStmt *select_stmt; PgQuery__AlterTableStmt *alter_table_stmt; PgQuery__AlterTableCmd *alter_table_cmd; PgQuery__AlterDomainStmt *alter_domain_stmt; PgQuery__SetOperationStmt *set_operation_stmt; PgQuery__GrantStmt *grant_stmt; PgQuery__GrantRoleStmt *grant_role_stmt; PgQuery__AlterDefaultPrivilegesStmt *alter_default_privileges_stmt; PgQuery__ClosePortalStmt *close_portal_stmt; PgQuery__ClusterStmt *cluster_stmt; PgQuery__CopyStmt *copy_stmt; PgQuery__CreateStmt *create_stmt; PgQuery__DefineStmt *define_stmt; PgQuery__DropStmt *drop_stmt; PgQuery__TruncateStmt *truncate_stmt; PgQuery__CommentStmt *comment_stmt; PgQuery__FetchStmt *fetch_stmt; PgQuery__IndexStmt *index_stmt; PgQuery__CreateFunctionStmt *create_function_stmt; PgQuery__AlterFunctionStmt *alter_function_stmt; PgQuery__DoStmt *do_stmt; PgQuery__RenameStmt *rename_stmt; PgQuery__RuleStmt *rule_stmt; PgQuery__NotifyStmt *notify_stmt; PgQuery__ListenStmt *listen_stmt; PgQuery__UnlistenStmt *unlisten_stmt; PgQuery__TransactionStmt *transaction_stmt; PgQuery__ViewStmt *view_stmt; PgQuery__LoadStmt *load_stmt; PgQuery__CreateDomainStmt *create_domain_stmt; PgQuery__CreatedbStmt *createdb_stmt; PgQuery__DropdbStmt *dropdb_stmt; PgQuery__VacuumStmt *vacuum_stmt; PgQuery__ExplainStmt *explain_stmt; PgQuery__CreateTableAsStmt *create_table_as_stmt; PgQuery__CreateSeqStmt *create_seq_stmt; PgQuery__AlterSeqStmt *alter_seq_stmt; PgQuery__VariableSetStmt *variable_set_stmt; PgQuery__VariableShowStmt *variable_show_stmt; PgQuery__DiscardStmt *discard_stmt; PgQuery__CreateTrigStmt *create_trig_stmt; PgQuery__CreatePLangStmt *create_plang_stmt; PgQuery__CreateRoleStmt *create_role_stmt; PgQuery__AlterRoleStmt *alter_role_stmt; PgQuery__DropRoleStmt *drop_role_stmt; PgQuery__LockStmt *lock_stmt; PgQuery__ConstraintsSetStmt *constraints_set_stmt; PgQuery__ReindexStmt *reindex_stmt; PgQuery__CheckPointStmt *check_point_stmt; PgQuery__CreateSchemaStmt *create_schema_stmt; PgQuery__AlterDatabaseStmt *alter_database_stmt; PgQuery__AlterDatabaseSetStmt *alter_database_set_stmt; PgQuery__AlterRoleSetStmt *alter_role_set_stmt; PgQuery__CreateConversionStmt *create_conversion_stmt; PgQuery__CreateCastStmt *create_cast_stmt; PgQuery__CreateOpClassStmt *create_op_class_stmt; PgQuery__CreateOpFamilyStmt *create_op_family_stmt; PgQuery__AlterOpFamilyStmt *alter_op_family_stmt; PgQuery__PrepareStmt *prepare_stmt; PgQuery__ExecuteStmt *execute_stmt; PgQuery__DeallocateStmt *deallocate_stmt; PgQuery__DeclareCursorStmt *declare_cursor_stmt; PgQuery__CreateTableSpaceStmt *create_table_space_stmt; PgQuery__DropTableSpaceStmt *drop_table_space_stmt; PgQuery__AlterObjectDependsStmt *alter_object_depends_stmt; PgQuery__AlterObjectSchemaStmt *alter_object_schema_stmt; PgQuery__AlterOwnerStmt *alter_owner_stmt; PgQuery__AlterOperatorStmt *alter_operator_stmt; PgQuery__AlterTypeStmt *alter_type_stmt; PgQuery__DropOwnedStmt *drop_owned_stmt; PgQuery__ReassignOwnedStmt *reassign_owned_stmt; PgQuery__CompositeTypeStmt *composite_type_stmt; PgQuery__CreateEnumStmt *create_enum_stmt; PgQuery__CreateRangeStmt *create_range_stmt; PgQuery__AlterEnumStmt *alter_enum_stmt; PgQuery__AlterTSDictionaryStmt *alter_tsdictionary_stmt; PgQuery__AlterTSConfigurationStmt *alter_tsconfiguration_stmt; PgQuery__CreateFdwStmt *create_fdw_stmt; PgQuery__AlterFdwStmt *alter_fdw_stmt; PgQuery__CreateForeignServerStmt *create_foreign_server_stmt; PgQuery__AlterForeignServerStmt *alter_foreign_server_stmt; PgQuery__CreateUserMappingStmt *create_user_mapping_stmt; PgQuery__AlterUserMappingStmt *alter_user_mapping_stmt; PgQuery__DropUserMappingStmt *drop_user_mapping_stmt; PgQuery__AlterTableSpaceOptionsStmt *alter_table_space_options_stmt; PgQuery__AlterTableMoveAllStmt *alter_table_move_all_stmt; PgQuery__SecLabelStmt *sec_label_stmt; PgQuery__CreateForeignTableStmt *create_foreign_table_stmt; PgQuery__ImportForeignSchemaStmt *import_foreign_schema_stmt; PgQuery__CreateExtensionStmt *create_extension_stmt; PgQuery__AlterExtensionStmt *alter_extension_stmt; PgQuery__AlterExtensionContentsStmt *alter_extension_contents_stmt; PgQuery__CreateEventTrigStmt *create_event_trig_stmt; PgQuery__AlterEventTrigStmt *alter_event_trig_stmt; PgQuery__RefreshMatViewStmt *refresh_mat_view_stmt; PgQuery__ReplicaIdentityStmt *replica_identity_stmt; PgQuery__AlterSystemStmt *alter_system_stmt; PgQuery__CreatePolicyStmt *create_policy_stmt; PgQuery__AlterPolicyStmt *alter_policy_stmt; PgQuery__CreateTransformStmt *create_transform_stmt; PgQuery__CreateAmStmt *create_am_stmt; PgQuery__CreatePublicationStmt *create_publication_stmt; PgQuery__AlterPublicationStmt *alter_publication_stmt; PgQuery__CreateSubscriptionStmt *create_subscription_stmt; PgQuery__AlterSubscriptionStmt *alter_subscription_stmt; PgQuery__DropSubscriptionStmt *drop_subscription_stmt; PgQuery__CreateStatsStmt *create_stats_stmt; PgQuery__AlterCollationStmt *alter_collation_stmt; PgQuery__CallStmt *call_stmt; PgQuery__AlterStatsStmt *alter_stats_stmt; PgQuery__AExpr *a_expr; PgQuery__ColumnRef *column_ref; PgQuery__ParamRef *param_ref; PgQuery__AConst *a_const; PgQuery__FuncCall *func_call; PgQuery__AStar *a_star; PgQuery__AIndices *a_indices; PgQuery__AIndirection *a_indirection; PgQuery__AArrayExpr *a_array_expr; PgQuery__ResTarget *res_target; PgQuery__MultiAssignRef *multi_assign_ref; PgQuery__TypeCast *type_cast; PgQuery__CollateClause *collate_clause; PgQuery__SortBy *sort_by; PgQuery__WindowDef *window_def; PgQuery__RangeSubselect *range_subselect; PgQuery__RangeFunction *range_function; PgQuery__RangeTableSample *range_table_sample; PgQuery__RangeTableFunc *range_table_func; PgQuery__RangeTableFuncCol *range_table_func_col; PgQuery__TypeName *type_name; PgQuery__ColumnDef *column_def; PgQuery__IndexElem *index_elem; PgQuery__Constraint *constraint; PgQuery__DefElem *def_elem; PgQuery__RangeTblEntry *range_tbl_entry; PgQuery__RangeTblFunction *range_tbl_function; PgQuery__TableSampleClause *table_sample_clause; PgQuery__WithCheckOption *with_check_option; PgQuery__SortGroupClause *sort_group_clause; PgQuery__GroupingSet *grouping_set; PgQuery__WindowClause *window_clause; PgQuery__ObjectWithArgs *object_with_args; PgQuery__AccessPriv *access_priv; PgQuery__CreateOpClassItem *create_op_class_item; PgQuery__TableLikeClause *table_like_clause; PgQuery__FunctionParameter *function_parameter; PgQuery__LockingClause *locking_clause; PgQuery__RowMarkClause *row_mark_clause; PgQuery__XmlSerialize *xml_serialize; PgQuery__WithClause *with_clause; PgQuery__InferClause *infer_clause; PgQuery__OnConflictClause *on_conflict_clause; PgQuery__CommonTableExpr *common_table_expr; PgQuery__RoleSpec *role_spec; PgQuery__TriggerTransition *trigger_transition; PgQuery__PartitionElem *partition_elem; PgQuery__PartitionSpec *partition_spec; PgQuery__PartitionBoundSpec *partition_bound_spec; PgQuery__PartitionRangeDatum *partition_range_datum; PgQuery__PartitionCmd *partition_cmd; PgQuery__VacuumRelation *vacuum_relation; PgQuery__InlineCodeBlock *inline_code_block; PgQuery__CallContext *call_context; PgQuery__Integer *integer; PgQuery__Float *float_; PgQuery__String *string; PgQuery__BitString *bit_string; PgQuery__Null *null; PgQuery__List *list; PgQuery__IntList *int_list; PgQuery__OidList *oid_list; }; }; #define PG_QUERY__NODE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__node__descriptor) \ , PG_QUERY__NODE__NODE__NOT_SET, {0} } struct PgQuery__Integer { ProtobufCMessage base; /* * machine integer */ int32_t ival; }; #define PG_QUERY__INTEGER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__integer__descriptor) \ , 0 } struct PgQuery__Float { ProtobufCMessage base; /* * string */ char *str; }; #define PG_QUERY__FLOAT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__float__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__String { ProtobufCMessage base; /* * string */ char *str; }; #define PG_QUERY__STRING__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__string__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__BitString { ProtobufCMessage base; /* * string */ char *str; }; #define PG_QUERY__BIT_STRING__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__bit_string__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__Null { ProtobufCMessage base; }; #define PG_QUERY__NULL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__null__descriptor) \ } struct PgQuery__List { ProtobufCMessage base; size_t n_items; PgQuery__Node **items; }; #define PG_QUERY__LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__list__descriptor) \ , 0,NULL } struct PgQuery__OidList { ProtobufCMessage base; size_t n_items; PgQuery__Node **items; }; #define PG_QUERY__OID_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__oid_list__descriptor) \ , 0,NULL } struct PgQuery__IntList { ProtobufCMessage base; size_t n_items; PgQuery__Node **items; }; #define PG_QUERY__INT_LIST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__int_list__descriptor) \ , 0,NULL } struct PgQuery__Alias { ProtobufCMessage base; char *aliasname; size_t n_colnames; PgQuery__Node **colnames; }; #define PG_QUERY__ALIAS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alias__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__RangeVar { ProtobufCMessage base; char *catalogname; char *schemaname; char *relname; protobuf_c_boolean inh; char *relpersistence; PgQuery__Alias *alias; int32_t location; }; #define PG_QUERY__RANGE_VAR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_var__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, (char *)protobuf_c_empty_string, NULL, 0 } struct PgQuery__TableFunc { ProtobufCMessage base; size_t n_ns_uris; PgQuery__Node **ns_uris; size_t n_ns_names; PgQuery__Node **ns_names; PgQuery__Node *docexpr; PgQuery__Node *rowexpr; size_t n_colnames; PgQuery__Node **colnames; size_t n_coltypes; PgQuery__Node **coltypes; size_t n_coltypmods; PgQuery__Node **coltypmods; size_t n_colcollations; PgQuery__Node **colcollations; size_t n_colexprs; PgQuery__Node **colexprs; size_t n_coldefexprs; PgQuery__Node **coldefexprs; size_t n_notnulls; uint64_t *notnulls; int32_t ordinalitycol; int32_t location; }; #define PG_QUERY__TABLE_FUNC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__table_func__descriptor) \ , 0,NULL, 0,NULL, NULL, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0, 0 } struct PgQuery__Expr { ProtobufCMessage base; }; #define PG_QUERY__EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__expr__descriptor) \ } struct PgQuery__Var { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t varno; int32_t varattno; uint32_t vartype; int32_t vartypmod; uint32_t varcollid; uint32_t varlevelsup; uint32_t varnosyn; int32_t varattnosyn; int32_t location; }; #define PG_QUERY__VAR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__var__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct PgQuery__Param { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__ParamKind paramkind; int32_t paramid; uint32_t paramtype; int32_t paramtypmod; uint32_t paramcollid; int32_t location; }; #define PG_QUERY__PARAM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__param__descriptor) \ , NULL, PG_QUERY__PARAM_KIND__PARAM_KIND_UNDEFINED, 0, 0, 0, 0, 0 } struct PgQuery__Aggref { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t aggfnoid; uint32_t aggtype; uint32_t aggcollid; uint32_t inputcollid; uint32_t aggtranstype; size_t n_aggargtypes; PgQuery__Node **aggargtypes; size_t n_aggdirectargs; PgQuery__Node **aggdirectargs; size_t n_args; PgQuery__Node **args; size_t n_aggorder; PgQuery__Node **aggorder; size_t n_aggdistinct; PgQuery__Node **aggdistinct; PgQuery__Node *aggfilter; protobuf_c_boolean aggstar; protobuf_c_boolean aggvariadic; char *aggkind; uint32_t agglevelsup; PgQuery__AggSplit aggsplit; int32_t location; }; #define PG_QUERY__AGGREF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__aggref__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, NULL, 0, 0, (char *)protobuf_c_empty_string, 0, PG_QUERY__AGG_SPLIT__AGG_SPLIT_UNDEFINED, 0 } struct PgQuery__GroupingFunc { ProtobufCMessage base; PgQuery__Node *xpr; size_t n_args; PgQuery__Node **args; size_t n_refs; PgQuery__Node **refs; size_t n_cols; PgQuery__Node **cols; uint32_t agglevelsup; int32_t location; }; #define PG_QUERY__GROUPING_FUNC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__grouping_func__descriptor) \ , NULL, 0,NULL, 0,NULL, 0,NULL, 0, 0 } struct PgQuery__WindowFunc { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t winfnoid; uint32_t wintype; uint32_t wincollid; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; PgQuery__Node *aggfilter; uint32_t winref; protobuf_c_boolean winstar; protobuf_c_boolean winagg; int32_t location; }; #define PG_QUERY__WINDOW_FUNC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__window_func__descriptor) \ , NULL, 0, 0, 0, 0, 0,NULL, NULL, 0, 0, 0, 0 } struct PgQuery__SubscriptingRef { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t refcontainertype; uint32_t refelemtype; int32_t reftypmod; uint32_t refcollid; size_t n_refupperindexpr; PgQuery__Node **refupperindexpr; size_t n_reflowerindexpr; PgQuery__Node **reflowerindexpr; PgQuery__Node *refexpr; PgQuery__Node *refassgnexpr; }; #define PG_QUERY__SUBSCRIPTING_REF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__subscripting_ref__descriptor) \ , NULL, 0, 0, 0, 0, 0,NULL, 0,NULL, NULL, NULL } struct PgQuery__FuncExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t funcid; uint32_t funcresulttype; protobuf_c_boolean funcretset; protobuf_c_boolean funcvariadic; PgQuery__CoercionForm funcformat; uint32_t funccollid; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__FUNC_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__func_expr__descriptor) \ , NULL, 0, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0, 0, 0,NULL, 0 } struct PgQuery__NamedArgExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; char *name; int32_t argnumber; int32_t location; }; #define PG_QUERY__NAMED_ARG_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__named_arg_expr__descriptor) \ , NULL, NULL, (char *)protobuf_c_empty_string, 0, 0 } struct PgQuery__OpExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; uint32_t opfuncid; uint32_t opresulttype; protobuf_c_boolean opretset; uint32_t opcollid; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__OP_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__op_expr__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0, 0,NULL, 0 } struct PgQuery__DistinctExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; uint32_t opfuncid; uint32_t opresulttype; protobuf_c_boolean opretset; uint32_t opcollid; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__DISTINCT_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__distinct_expr__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0, 0,NULL, 0 } struct PgQuery__NullIfExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; uint32_t opfuncid; uint32_t opresulttype; protobuf_c_boolean opretset; uint32_t opcollid; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__NULL_IF_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__null_if_expr__descriptor) \ , NULL, 0, 0, 0, 0, 0, 0, 0,NULL, 0 } struct PgQuery__ScalarArrayOpExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t opno; uint32_t opfuncid; protobuf_c_boolean use_or; uint32_t inputcollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__SCALAR_ARRAY_OP_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__scalar_array_op_expr__descriptor) \ , NULL, 0, 0, 0, 0, 0,NULL, 0 } struct PgQuery__BoolExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__BoolExprType boolop; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__BOOL_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__bool_expr__descriptor) \ , NULL, PG_QUERY__BOOL_EXPR_TYPE__BOOL_EXPR_TYPE_UNDEFINED, 0,NULL, 0 } struct PgQuery__SubLink { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__SubLinkType sub_link_type; int32_t sub_link_id; PgQuery__Node *testexpr; size_t n_oper_name; PgQuery__Node **oper_name; PgQuery__Node *subselect; int32_t location; }; #define PG_QUERY__SUB_LINK__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sub_link__descriptor) \ , NULL, PG_QUERY__SUB_LINK_TYPE__SUB_LINK_TYPE_UNDEFINED, 0, NULL, 0,NULL, NULL, 0 } struct PgQuery__SubPlan { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__SubLinkType sub_link_type; PgQuery__Node *testexpr; size_t n_param_ids; PgQuery__Node **param_ids; int32_t plan_id; char *plan_name; uint32_t first_col_type; int32_t first_col_typmod; uint32_t first_col_collation; protobuf_c_boolean use_hash_table; protobuf_c_boolean unknown_eq_false; protobuf_c_boolean parallel_safe; size_t n_set_param; PgQuery__Node **set_param; size_t n_par_param; PgQuery__Node **par_param; size_t n_args; PgQuery__Node **args; double startup_cost; double per_call_cost; }; #define PG_QUERY__SUB_PLAN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sub_plan__descriptor) \ , NULL, PG_QUERY__SUB_LINK_TYPE__SUB_LINK_TYPE_UNDEFINED, NULL, 0,NULL, 0, (char *)protobuf_c_empty_string, 0, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0, 0 } struct PgQuery__AlternativeSubPlan { ProtobufCMessage base; PgQuery__Node *xpr; size_t n_subplans; PgQuery__Node **subplans; }; #define PG_QUERY__ALTERNATIVE_SUB_PLAN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alternative_sub_plan__descriptor) \ , NULL, 0,NULL } struct PgQuery__FieldSelect { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; int32_t fieldnum; uint32_t resulttype; int32_t resulttypmod; uint32_t resultcollid; }; #define PG_QUERY__FIELD_SELECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__field_select__descriptor) \ , NULL, NULL, 0, 0, 0, 0 } struct PgQuery__FieldStore { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; size_t n_newvals; PgQuery__Node **newvals; size_t n_fieldnums; PgQuery__Node **fieldnums; uint32_t resulttype; }; #define PG_QUERY__FIELD_STORE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__field_store__descriptor) \ , NULL, NULL, 0,NULL, 0,NULL, 0 } struct PgQuery__RelabelType { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; uint32_t resulttype; int32_t resulttypmod; uint32_t resultcollid; PgQuery__CoercionForm relabelformat; int32_t location; }; #define PG_QUERY__RELABEL_TYPE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__relabel_type__descriptor) \ , NULL, NULL, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } struct PgQuery__CoerceViaIO { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; uint32_t resulttype; uint32_t resultcollid; PgQuery__CoercionForm coerceformat; int32_t location; }; #define PG_QUERY__COERCE_VIA_IO__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__coerce_via_io__descriptor) \ , NULL, NULL, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } struct PgQuery__ArrayCoerceExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; PgQuery__Node *elemexpr; uint32_t resulttype; int32_t resulttypmod; uint32_t resultcollid; PgQuery__CoercionForm coerceformat; int32_t location; }; #define PG_QUERY__ARRAY_COERCE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__array_coerce_expr__descriptor) \ , NULL, NULL, NULL, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } struct PgQuery__ConvertRowtypeExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; uint32_t resulttype; PgQuery__CoercionForm convertformat; int32_t location; }; #define PG_QUERY__CONVERT_ROWTYPE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__convert_rowtype_expr__descriptor) \ , NULL, NULL, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } struct PgQuery__CollateExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; uint32_t coll_oid; int32_t location; }; #define PG_QUERY__COLLATE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__collate_expr__descriptor) \ , NULL, NULL, 0, 0 } struct PgQuery__CaseExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t casetype; uint32_t casecollid; PgQuery__Node *arg; size_t n_args; PgQuery__Node **args; PgQuery__Node *defresult; int32_t location; }; #define PG_QUERY__CASE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__case_expr__descriptor) \ , NULL, 0, 0, NULL, 0,NULL, NULL, 0 } struct PgQuery__CaseWhen { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *expr; PgQuery__Node *result; int32_t location; }; #define PG_QUERY__CASE_WHEN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__case_when__descriptor) \ , NULL, NULL, NULL, 0 } struct PgQuery__CaseTestExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t type_id; int32_t type_mod; uint32_t collation; }; #define PG_QUERY__CASE_TEST_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__case_test_expr__descriptor) \ , NULL, 0, 0, 0 } struct PgQuery__ArrayExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t array_typeid; uint32_t array_collid; uint32_t element_typeid; size_t n_elements; PgQuery__Node **elements; protobuf_c_boolean multidims; int32_t location; }; #define PG_QUERY__ARRAY_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__array_expr__descriptor) \ , NULL, 0, 0, 0, 0,NULL, 0, 0 } struct PgQuery__RowExpr { ProtobufCMessage base; PgQuery__Node *xpr; size_t n_args; PgQuery__Node **args; uint32_t row_typeid; PgQuery__CoercionForm row_format; size_t n_colnames; PgQuery__Node **colnames; int32_t location; }; #define PG_QUERY__ROW_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__row_expr__descriptor) \ , NULL, 0,NULL, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0,NULL, 0 } struct PgQuery__RowCompareExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__RowCompareType rctype; size_t n_opnos; PgQuery__Node **opnos; size_t n_opfamilies; PgQuery__Node **opfamilies; size_t n_inputcollids; PgQuery__Node **inputcollids; size_t n_largs; PgQuery__Node **largs; size_t n_rargs; PgQuery__Node **rargs; }; #define PG_QUERY__ROW_COMPARE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__row_compare_expr__descriptor) \ , NULL, PG_QUERY__ROW_COMPARE_TYPE__ROW_COMPARE_TYPE_UNDEFINED, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } struct PgQuery__CoalesceExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t coalescetype; uint32_t coalescecollid; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__COALESCE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__coalesce_expr__descriptor) \ , NULL, 0, 0, 0,NULL, 0 } struct PgQuery__MinMaxExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t minmaxtype; uint32_t minmaxcollid; uint32_t inputcollid; PgQuery__MinMaxOp op; size_t n_args; PgQuery__Node **args; int32_t location; }; #define PG_QUERY__MIN_MAX_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__min_max_expr__descriptor) \ , NULL, 0, 0, 0, PG_QUERY__MIN_MAX_OP__MIN_MAX_OP_UNDEFINED, 0,NULL, 0 } struct PgQuery__SQLValueFunction { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__SQLValueFunctionOp op; uint32_t type; int32_t typmod; int32_t location; }; #define PG_QUERY__SQLVALUE_FUNCTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sqlvalue_function__descriptor) \ , NULL, PG_QUERY__SQLVALUE_FUNCTION_OP__SQLVALUE_FUNCTION_OP_UNDEFINED, 0, 0, 0 } struct PgQuery__XmlExpr { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__XmlExprOp op; char *name; size_t n_named_args; PgQuery__Node **named_args; size_t n_arg_names; PgQuery__Node **arg_names; size_t n_args; PgQuery__Node **args; PgQuery__XmlOptionType xmloption; uint32_t type; int32_t typmod; int32_t location; }; #define PG_QUERY__XML_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__xml_expr__descriptor) \ , NULL, PG_QUERY__XML_EXPR_OP__XML_EXPR_OP_UNDEFINED, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, PG_QUERY__XML_OPTION_TYPE__XML_OPTION_TYPE_UNDEFINED, 0, 0, 0 } struct PgQuery__NullTest { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; PgQuery__NullTestType nulltesttype; protobuf_c_boolean argisrow; int32_t location; }; #define PG_QUERY__NULL_TEST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__null_test__descriptor) \ , NULL, NULL, PG_QUERY__NULL_TEST_TYPE__NULL_TEST_TYPE_UNDEFINED, 0, 0 } struct PgQuery__BooleanTest { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; PgQuery__BoolTestType booltesttype; int32_t location; }; #define PG_QUERY__BOOLEAN_TEST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__boolean_test__descriptor) \ , NULL, NULL, PG_QUERY__BOOL_TEST_TYPE__BOOL_TEST_TYPE_UNDEFINED, 0 } struct PgQuery__CoerceToDomain { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *arg; uint32_t resulttype; int32_t resulttypmod; uint32_t resultcollid; PgQuery__CoercionForm coercionformat; int32_t location; }; #define PG_QUERY__COERCE_TO_DOMAIN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__coerce_to_domain__descriptor) \ , NULL, NULL, 0, 0, 0, PG_QUERY__COERCION_FORM__COERCION_FORM_UNDEFINED, 0 } struct PgQuery__CoerceToDomainValue { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t type_id; int32_t type_mod; uint32_t collation; int32_t location; }; #define PG_QUERY__COERCE_TO_DOMAIN_VALUE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__coerce_to_domain_value__descriptor) \ , NULL, 0, 0, 0, 0 } struct PgQuery__SetToDefault { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t type_id; int32_t type_mod; uint32_t collation; int32_t location; }; #define PG_QUERY__SET_TO_DEFAULT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__set_to_default__descriptor) \ , NULL, 0, 0, 0, 0 } struct PgQuery__CurrentOfExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t cvarno; char *cursor_name; int32_t cursor_param; }; #define PG_QUERY__CURRENT_OF_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__current_of_expr__descriptor) \ , NULL, 0, (char *)protobuf_c_empty_string, 0 } struct PgQuery__NextValueExpr { ProtobufCMessage base; PgQuery__Node *xpr; uint32_t seqid; uint32_t type_id; }; #define PG_QUERY__NEXT_VALUE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__next_value_expr__descriptor) \ , NULL, 0, 0 } struct PgQuery__InferenceElem { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *expr; uint32_t infercollid; uint32_t inferopclass; }; #define PG_QUERY__INFERENCE_ELEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__inference_elem__descriptor) \ , NULL, NULL, 0, 0 } struct PgQuery__TargetEntry { ProtobufCMessage base; PgQuery__Node *xpr; PgQuery__Node *expr; int32_t resno; char *resname; uint32_t ressortgroupref; uint32_t resorigtbl; int32_t resorigcol; protobuf_c_boolean resjunk; }; #define PG_QUERY__TARGET_ENTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__target_entry__descriptor) \ , NULL, NULL, 0, (char *)protobuf_c_empty_string, 0, 0, 0, 0 } struct PgQuery__RangeTblRef { ProtobufCMessage base; int32_t rtindex; }; #define PG_QUERY__RANGE_TBL_REF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_tbl_ref__descriptor) \ , 0 } struct PgQuery__JoinExpr { ProtobufCMessage base; PgQuery__JoinType jointype; protobuf_c_boolean is_natural; PgQuery__Node *larg; PgQuery__Node *rarg; size_t n_using_clause; PgQuery__Node **using_clause; PgQuery__Node *quals; PgQuery__Alias *alias; int32_t rtindex; }; #define PG_QUERY__JOIN_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__join_expr__descriptor) \ , PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED, 0, NULL, NULL, 0,NULL, NULL, NULL, 0 } struct PgQuery__FromExpr { ProtobufCMessage base; size_t n_fromlist; PgQuery__Node **fromlist; PgQuery__Node *quals; }; #define PG_QUERY__FROM_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__from_expr__descriptor) \ , 0,NULL, NULL } struct PgQuery__OnConflictExpr { ProtobufCMessage base; PgQuery__OnConflictAction action; size_t n_arbiter_elems; PgQuery__Node **arbiter_elems; PgQuery__Node *arbiter_where; uint32_t constraint; size_t n_on_conflict_set; PgQuery__Node **on_conflict_set; PgQuery__Node *on_conflict_where; int32_t excl_rel_index; size_t n_excl_rel_tlist; PgQuery__Node **excl_rel_tlist; }; #define PG_QUERY__ON_CONFLICT_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__on_conflict_expr__descriptor) \ , PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED, 0,NULL, NULL, 0, 0,NULL, NULL, 0, 0,NULL } struct PgQuery__IntoClause { ProtobufCMessage base; PgQuery__RangeVar *rel; size_t n_col_names; PgQuery__Node **col_names; char *access_method; size_t n_options; PgQuery__Node **options; PgQuery__OnCommitAction on_commit; char *table_space_name; PgQuery__Node *view_query; protobuf_c_boolean skip_data; }; #define PG_QUERY__INTO_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__into_clause__descriptor) \ , NULL, 0,NULL, (char *)protobuf_c_empty_string, 0,NULL, PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED, (char *)protobuf_c_empty_string, NULL, 0 } struct PgQuery__RawStmt { ProtobufCMessage base; PgQuery__Node *stmt; int32_t stmt_location; int32_t stmt_len; }; #define PG_QUERY__RAW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__raw_stmt__descriptor) \ , NULL, 0, 0 } struct PgQuery__Query { ProtobufCMessage base; PgQuery__CmdType command_type; PgQuery__QuerySource query_source; protobuf_c_boolean can_set_tag; PgQuery__Node *utility_stmt; int32_t result_relation; protobuf_c_boolean has_aggs; protobuf_c_boolean has_window_funcs; protobuf_c_boolean has_target_srfs; protobuf_c_boolean has_sub_links; protobuf_c_boolean has_distinct_on; protobuf_c_boolean has_recursive; protobuf_c_boolean has_modifying_cte; protobuf_c_boolean has_for_update; protobuf_c_boolean has_row_security; size_t n_cte_list; PgQuery__Node **cte_list; size_t n_rtable; PgQuery__Node **rtable; PgQuery__FromExpr *jointree; size_t n_target_list; PgQuery__Node **target_list; PgQuery__OverridingKind override; PgQuery__OnConflictExpr *on_conflict; size_t n_returning_list; PgQuery__Node **returning_list; size_t n_group_clause; PgQuery__Node **group_clause; size_t n_grouping_sets; PgQuery__Node **grouping_sets; PgQuery__Node *having_qual; size_t n_window_clause; PgQuery__Node **window_clause; size_t n_distinct_clause; PgQuery__Node **distinct_clause; size_t n_sort_clause; PgQuery__Node **sort_clause; PgQuery__Node *limit_offset; PgQuery__Node *limit_count; PgQuery__LimitOption limit_option; size_t n_row_marks; PgQuery__Node **row_marks; PgQuery__Node *set_operations; size_t n_constraint_deps; PgQuery__Node **constraint_deps; size_t n_with_check_options; PgQuery__Node **with_check_options; int32_t stmt_location; int32_t stmt_len; }; #define PG_QUERY__QUERY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__query__descriptor) \ , PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED, PG_QUERY__QUERY_SOURCE__QUERY_SOURCE_UNDEFINED, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, NULL, 0,NULL, PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED, NULL, 0,NULL, 0,NULL, 0,NULL, NULL, 0,NULL, 0,NULL, 0,NULL, NULL, NULL, PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_UNDEFINED, 0,NULL, NULL, 0,NULL, 0,NULL, 0, 0 } struct PgQuery__InsertStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; size_t n_cols; PgQuery__Node **cols; PgQuery__Node *select_stmt; PgQuery__OnConflictClause *on_conflict_clause; size_t n_returning_list; PgQuery__Node **returning_list; PgQuery__WithClause *with_clause; PgQuery__OverridingKind override; }; #define PG_QUERY__INSERT_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__insert_stmt__descriptor) \ , NULL, 0,NULL, NULL, NULL, 0,NULL, NULL, PG_QUERY__OVERRIDING_KIND__OVERRIDING_KIND_UNDEFINED } struct PgQuery__DeleteStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; size_t n_using_clause; PgQuery__Node **using_clause; PgQuery__Node *where_clause; size_t n_returning_list; PgQuery__Node **returning_list; PgQuery__WithClause *with_clause; }; #define PG_QUERY__DELETE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__delete_stmt__descriptor) \ , NULL, 0,NULL, NULL, 0,NULL, NULL } struct PgQuery__UpdateStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; size_t n_target_list; PgQuery__Node **target_list; PgQuery__Node *where_clause; size_t n_from_clause; PgQuery__Node **from_clause; size_t n_returning_list; PgQuery__Node **returning_list; PgQuery__WithClause *with_clause; }; #define PG_QUERY__UPDATE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__update_stmt__descriptor) \ , NULL, 0,NULL, NULL, 0,NULL, 0,NULL, NULL } struct PgQuery__SelectStmt { ProtobufCMessage base; size_t n_distinct_clause; PgQuery__Node **distinct_clause; PgQuery__IntoClause *into_clause; size_t n_target_list; PgQuery__Node **target_list; size_t n_from_clause; PgQuery__Node **from_clause; PgQuery__Node *where_clause; size_t n_group_clause; PgQuery__Node **group_clause; PgQuery__Node *having_clause; size_t n_window_clause; PgQuery__Node **window_clause; size_t n_values_lists; PgQuery__Node **values_lists; size_t n_sort_clause; PgQuery__Node **sort_clause; PgQuery__Node *limit_offset; PgQuery__Node *limit_count; PgQuery__LimitOption limit_option; size_t n_locking_clause; PgQuery__Node **locking_clause; PgQuery__WithClause *with_clause; PgQuery__SetOperation op; protobuf_c_boolean all; PgQuery__SelectStmt *larg; PgQuery__SelectStmt *rarg; }; #define PG_QUERY__SELECT_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__select_stmt__descriptor) \ , 0,NULL, NULL, 0,NULL, 0,NULL, NULL, 0,NULL, NULL, 0,NULL, 0,NULL, 0,NULL, NULL, NULL, PG_QUERY__LIMIT_OPTION__LIMIT_OPTION_UNDEFINED, 0,NULL, NULL, PG_QUERY__SET_OPERATION__SET_OPERATION_UNDEFINED, 0, NULL, NULL } struct PgQuery__AlterTableStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; size_t n_cmds; PgQuery__Node **cmds; PgQuery__ObjectType relkind; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_TABLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_table_stmt__descriptor) \ , NULL, 0,NULL, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0 } struct PgQuery__AlterTableCmd { ProtobufCMessage base; PgQuery__AlterTableType subtype; char *name; int32_t num; PgQuery__RoleSpec *newowner; PgQuery__Node *def; PgQuery__DropBehavior behavior; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_TABLE_CMD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_table_cmd__descriptor) \ , PG_QUERY__ALTER_TABLE_TYPE__ALTER_TABLE_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0, NULL, NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0 } struct PgQuery__AlterDomainStmt { ProtobufCMessage base; char *subtype; size_t n_type_name; PgQuery__Node **type_name; char *name; PgQuery__Node *def; PgQuery__DropBehavior behavior; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_DOMAIN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_domain_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, (char *)protobuf_c_empty_string, NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0 } struct PgQuery__SetOperationStmt { ProtobufCMessage base; PgQuery__SetOperation op; protobuf_c_boolean all; PgQuery__Node *larg; PgQuery__Node *rarg; size_t n_col_types; PgQuery__Node **col_types; size_t n_col_typmods; PgQuery__Node **col_typmods; size_t n_col_collations; PgQuery__Node **col_collations; size_t n_group_clauses; PgQuery__Node **group_clauses; }; #define PG_QUERY__SET_OPERATION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__set_operation_stmt__descriptor) \ , PG_QUERY__SET_OPERATION__SET_OPERATION_UNDEFINED, 0, NULL, NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } struct PgQuery__GrantStmt { ProtobufCMessage base; protobuf_c_boolean is_grant; PgQuery__GrantTargetType targtype; PgQuery__ObjectType objtype; size_t n_objects; PgQuery__Node **objects; size_t n_privileges; PgQuery__Node **privileges; size_t n_grantees; PgQuery__Node **grantees; protobuf_c_boolean grant_option; PgQuery__DropBehavior behavior; }; #define PG_QUERY__GRANT_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__grant_stmt__descriptor) \ , 0, PG_QUERY__GRANT_TARGET_TYPE__GRANT_TARGET_TYPE_UNDEFINED, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0,NULL, 0,NULL, 0,NULL, 0, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } struct PgQuery__GrantRoleStmt { ProtobufCMessage base; size_t n_granted_roles; PgQuery__Node **granted_roles; size_t n_grantee_roles; PgQuery__Node **grantee_roles; protobuf_c_boolean is_grant; protobuf_c_boolean admin_opt; PgQuery__RoleSpec *grantor; PgQuery__DropBehavior behavior; }; #define PG_QUERY__GRANT_ROLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__grant_role_stmt__descriptor) \ , 0,NULL, 0,NULL, 0, 0, NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } struct PgQuery__AlterDefaultPrivilegesStmt { ProtobufCMessage base; size_t n_options; PgQuery__Node **options; PgQuery__GrantStmt *action; }; #define PG_QUERY__ALTER_DEFAULT_PRIVILEGES_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_default_privileges_stmt__descriptor) \ , 0,NULL, NULL } struct PgQuery__ClosePortalStmt { ProtobufCMessage base; char *portalname; }; #define PG_QUERY__CLOSE_PORTAL_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__close_portal_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__ClusterStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; char *indexname; int32_t options; }; #define PG_QUERY__CLUSTER_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__cluster_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 0 } struct PgQuery__CopyStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; PgQuery__Node *query; size_t n_attlist; PgQuery__Node **attlist; protobuf_c_boolean is_from; protobuf_c_boolean is_program; char *filename; size_t n_options; PgQuery__Node **options; PgQuery__Node *where_clause; }; #define PG_QUERY__COPY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__copy_stmt__descriptor) \ , NULL, NULL, 0,NULL, 0, 0, (char *)protobuf_c_empty_string, 0,NULL, NULL } struct PgQuery__CreateStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; size_t n_table_elts; PgQuery__Node **table_elts; size_t n_inh_relations; PgQuery__Node **inh_relations; PgQuery__PartitionBoundSpec *partbound; PgQuery__PartitionSpec *partspec; PgQuery__TypeName *of_typename; size_t n_constraints; PgQuery__Node **constraints; size_t n_options; PgQuery__Node **options; PgQuery__OnCommitAction oncommit; char *tablespacename; char *access_method; protobuf_c_boolean if_not_exists; }; #define PG_QUERY__CREATE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_stmt__descriptor) \ , NULL, 0,NULL, 0,NULL, NULL, NULL, NULL, 0,NULL, 0,NULL, PG_QUERY__ON_COMMIT_ACTION__ON_COMMIT_ACTION_UNDEFINED, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0 } struct PgQuery__DefineStmt { ProtobufCMessage base; PgQuery__ObjectType kind; protobuf_c_boolean oldstyle; size_t n_defnames; PgQuery__Node **defnames; size_t n_args; PgQuery__Node **args; size_t n_definition; PgQuery__Node **definition; protobuf_c_boolean if_not_exists; protobuf_c_boolean replace; }; #define PG_QUERY__DEFINE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__define_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0, 0,NULL, 0,NULL, 0,NULL, 0, 0 } struct PgQuery__DropStmt { ProtobufCMessage base; size_t n_objects; PgQuery__Node **objects; PgQuery__ObjectType remove_type; PgQuery__DropBehavior behavior; protobuf_c_boolean missing_ok; protobuf_c_boolean concurrent; }; #define PG_QUERY__DROP_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_stmt__descriptor) \ , 0,NULL, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0, 0 } struct PgQuery__TruncateStmt { ProtobufCMessage base; size_t n_relations; PgQuery__Node **relations; protobuf_c_boolean restart_seqs; PgQuery__DropBehavior behavior; }; #define PG_QUERY__TRUNCATE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__truncate_stmt__descriptor) \ , 0,NULL, 0, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } struct PgQuery__CommentStmt { ProtobufCMessage base; PgQuery__ObjectType objtype; PgQuery__Node *object; char *comment; }; #define PG_QUERY__COMMENT_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__comment_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, (char *)protobuf_c_empty_string } struct PgQuery__FetchStmt { ProtobufCMessage base; PgQuery__FetchDirection direction; int64_t how_many; char *portalname; protobuf_c_boolean ismove; }; #define PG_QUERY__FETCH_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__fetch_stmt__descriptor) \ , PG_QUERY__FETCH_DIRECTION__FETCH_DIRECTION_UNDEFINED, 0, (char *)protobuf_c_empty_string, 0 } struct PgQuery__IndexStmt { ProtobufCMessage base; char *idxname; PgQuery__RangeVar *relation; char *access_method; char *table_space; size_t n_index_params; PgQuery__Node **index_params; size_t n_index_including_params; PgQuery__Node **index_including_params; size_t n_options; PgQuery__Node **options; PgQuery__Node *where_clause; size_t n_exclude_op_names; PgQuery__Node **exclude_op_names; char *idxcomment; uint32_t index_oid; uint32_t old_node; uint32_t old_create_subid; uint32_t old_first_relfilenode_subid; protobuf_c_boolean unique; protobuf_c_boolean primary; protobuf_c_boolean isconstraint; protobuf_c_boolean deferrable; protobuf_c_boolean initdeferred; protobuf_c_boolean transformed; protobuf_c_boolean concurrent; protobuf_c_boolean if_not_exists; protobuf_c_boolean reset_default_tblspc; }; #define PG_QUERY__INDEX_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__index_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, NULL, 0,NULL, (char *)protobuf_c_empty_string, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } struct PgQuery__CreateFunctionStmt { ProtobufCMessage base; protobuf_c_boolean is_procedure; protobuf_c_boolean replace; size_t n_funcname; PgQuery__Node **funcname; size_t n_parameters; PgQuery__Node **parameters; PgQuery__TypeName *return_type; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_FUNCTION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_function_stmt__descriptor) \ , 0, 0, 0,NULL, 0,NULL, NULL, 0,NULL } struct PgQuery__AlterFunctionStmt { ProtobufCMessage base; PgQuery__ObjectType objtype; PgQuery__ObjectWithArgs *func; size_t n_actions; PgQuery__Node **actions; }; #define PG_QUERY__ALTER_FUNCTION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_function_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, 0,NULL } struct PgQuery__DoStmt { ProtobufCMessage base; size_t n_args; PgQuery__Node **args; }; #define PG_QUERY__DO_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__do_stmt__descriptor) \ , 0,NULL } struct PgQuery__RenameStmt { ProtobufCMessage base; PgQuery__ObjectType rename_type; PgQuery__ObjectType relation_type; PgQuery__RangeVar *relation; PgQuery__Node *object; char *subname; char *newname; PgQuery__DropBehavior behavior; protobuf_c_boolean missing_ok; }; #define PG_QUERY__RENAME_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__rename_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED, 0 } struct PgQuery__RuleStmt { ProtobufCMessage base; PgQuery__RangeVar *relation; char *rulename; PgQuery__Node *where_clause; PgQuery__CmdType event; protobuf_c_boolean instead; size_t n_actions; PgQuery__Node **actions; protobuf_c_boolean replace; }; #define PG_QUERY__RULE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__rule_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, NULL, PG_QUERY__CMD_TYPE__CMD_TYPE_UNDEFINED, 0, 0,NULL, 0 } struct PgQuery__NotifyStmt { ProtobufCMessage base; char *conditionname; char *payload; }; #define PG_QUERY__NOTIFY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__notify_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } struct PgQuery__ListenStmt { ProtobufCMessage base; char *conditionname; }; #define PG_QUERY__LISTEN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__listen_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__UnlistenStmt { ProtobufCMessage base; char *conditionname; }; #define PG_QUERY__UNLISTEN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__unlisten_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__TransactionStmt { ProtobufCMessage base; PgQuery__TransactionStmtKind kind; size_t n_options; PgQuery__Node **options; char *savepoint_name; char *gid; protobuf_c_boolean chain; }; #define PG_QUERY__TRANSACTION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__transaction_stmt__descriptor) \ , PG_QUERY__TRANSACTION_STMT_KIND__TRANSACTION_STMT_KIND_UNDEFINED, 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0 } struct PgQuery__ViewStmt { ProtobufCMessage base; PgQuery__RangeVar *view; size_t n_aliases; PgQuery__Node **aliases; PgQuery__Node *query; protobuf_c_boolean replace; size_t n_options; PgQuery__Node **options; PgQuery__ViewCheckOption with_check_option; }; #define PG_QUERY__VIEW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__view_stmt__descriptor) \ , NULL, 0,NULL, NULL, 0, 0,NULL, PG_QUERY__VIEW_CHECK_OPTION__VIEW_CHECK_OPTION_UNDEFINED } struct PgQuery__LoadStmt { ProtobufCMessage base; char *filename; }; #define PG_QUERY__LOAD_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__load_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__CreateDomainStmt { ProtobufCMessage base; size_t n_domainname; PgQuery__Node **domainname; PgQuery__TypeName *type_name; PgQuery__CollateClause *coll_clause; size_t n_constraints; PgQuery__Node **constraints; }; #define PG_QUERY__CREATE_DOMAIN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_domain_stmt__descriptor) \ , 0,NULL, NULL, NULL, 0,NULL } struct PgQuery__CreatedbStmt { ProtobufCMessage base; char *dbname; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATEDB_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__createdb_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__DropdbStmt { ProtobufCMessage base; char *dbname; protobuf_c_boolean missing_ok; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__DROPDB_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__dropdb_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0,NULL } struct PgQuery__VacuumStmt { ProtobufCMessage base; size_t n_options; PgQuery__Node **options; size_t n_rels; PgQuery__Node **rels; protobuf_c_boolean is_vacuumcmd; }; #define PG_QUERY__VACUUM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__vacuum_stmt__descriptor) \ , 0,NULL, 0,NULL, 0 } struct PgQuery__ExplainStmt { ProtobufCMessage base; PgQuery__Node *query; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__EXPLAIN_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__explain_stmt__descriptor) \ , NULL, 0,NULL } struct PgQuery__CreateTableAsStmt { ProtobufCMessage base; PgQuery__Node *query; PgQuery__IntoClause *into; PgQuery__ObjectType relkind; protobuf_c_boolean is_select_into; protobuf_c_boolean if_not_exists; }; #define PG_QUERY__CREATE_TABLE_AS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_table_as_stmt__descriptor) \ , NULL, NULL, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0, 0 } struct PgQuery__CreateSeqStmt { ProtobufCMessage base; PgQuery__RangeVar *sequence; size_t n_options; PgQuery__Node **options; uint32_t owner_id; protobuf_c_boolean for_identity; protobuf_c_boolean if_not_exists; }; #define PG_QUERY__CREATE_SEQ_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_seq_stmt__descriptor) \ , NULL, 0,NULL, 0, 0, 0 } struct PgQuery__AlterSeqStmt { ProtobufCMessage base; PgQuery__RangeVar *sequence; size_t n_options; PgQuery__Node **options; protobuf_c_boolean for_identity; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_SEQ_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_seq_stmt__descriptor) \ , NULL, 0,NULL, 0, 0 } struct PgQuery__VariableSetStmt { ProtobufCMessage base; PgQuery__VariableSetKind kind; char *name; size_t n_args; PgQuery__Node **args; protobuf_c_boolean is_local; }; #define PG_QUERY__VARIABLE_SET_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__variable_set_stmt__descriptor) \ , PG_QUERY__VARIABLE_SET_KIND__VARIABLE_SET_KIND_UNDEFINED, (char *)protobuf_c_empty_string, 0,NULL, 0 } struct PgQuery__VariableShowStmt { ProtobufCMessage base; char *name; }; #define PG_QUERY__VARIABLE_SHOW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__variable_show_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__DiscardStmt { ProtobufCMessage base; PgQuery__DiscardMode target; }; #define PG_QUERY__DISCARD_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__discard_stmt__descriptor) \ , PG_QUERY__DISCARD_MODE__DISCARD_MODE_UNDEFINED } struct PgQuery__CreateTrigStmt { ProtobufCMessage base; char *trigname; PgQuery__RangeVar *relation; size_t n_funcname; PgQuery__Node **funcname; size_t n_args; PgQuery__Node **args; protobuf_c_boolean row; int32_t timing; int32_t events; size_t n_columns; PgQuery__Node **columns; PgQuery__Node *when_clause; protobuf_c_boolean isconstraint; size_t n_transition_rels; PgQuery__Node **transition_rels; protobuf_c_boolean deferrable; protobuf_c_boolean initdeferred; PgQuery__RangeVar *constrrel; }; #define PG_QUERY__CREATE_TRIG_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_trig_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL, 0,NULL, 0,NULL, 0, 0, 0, 0,NULL, NULL, 0, 0,NULL, 0, 0, NULL } struct PgQuery__CreatePLangStmt { ProtobufCMessage base; protobuf_c_boolean replace; char *plname; size_t n_plhandler; PgQuery__Node **plhandler; size_t n_plinline; PgQuery__Node **plinline; size_t n_plvalidator; PgQuery__Node **plvalidator; protobuf_c_boolean pltrusted; }; #define PG_QUERY__CREATE_PLANG_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_plang_stmt__descriptor) \ , 0, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, 0 } struct PgQuery__CreateRoleStmt { ProtobufCMessage base; PgQuery__RoleStmtType stmt_type; char *role; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_ROLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_role_stmt__descriptor) \ , PG_QUERY__ROLE_STMT_TYPE__ROLE_STMT_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__AlterRoleStmt { ProtobufCMessage base; PgQuery__RoleSpec *role; size_t n_options; PgQuery__Node **options; int32_t action; }; #define PG_QUERY__ALTER_ROLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_role_stmt__descriptor) \ , NULL, 0,NULL, 0 } struct PgQuery__DropRoleStmt { ProtobufCMessage base; size_t n_roles; PgQuery__Node **roles; protobuf_c_boolean missing_ok; }; #define PG_QUERY__DROP_ROLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_role_stmt__descriptor) \ , 0,NULL, 0 } struct PgQuery__LockStmt { ProtobufCMessage base; size_t n_relations; PgQuery__Node **relations; int32_t mode; protobuf_c_boolean nowait; }; #define PG_QUERY__LOCK_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__lock_stmt__descriptor) \ , 0,NULL, 0, 0 } struct PgQuery__ConstraintsSetStmt { ProtobufCMessage base; size_t n_constraints; PgQuery__Node **constraints; protobuf_c_boolean deferred; }; #define PG_QUERY__CONSTRAINTS_SET_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__constraints_set_stmt__descriptor) \ , 0,NULL, 0 } struct PgQuery__ReindexStmt { ProtobufCMessage base; PgQuery__ReindexObjectType kind; PgQuery__RangeVar *relation; char *name; int32_t options; protobuf_c_boolean concurrent; }; #define PG_QUERY__REINDEX_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__reindex_stmt__descriptor) \ , PG_QUERY__REINDEX_OBJECT_TYPE__REINDEX_OBJECT_TYPE_UNDEFINED, NULL, (char *)protobuf_c_empty_string, 0, 0 } struct PgQuery__CheckPointStmt { ProtobufCMessage base; }; #define PG_QUERY__CHECK_POINT_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__check_point_stmt__descriptor) \ } struct PgQuery__CreateSchemaStmt { ProtobufCMessage base; char *schemaname; PgQuery__RoleSpec *authrole; size_t n_schema_elts; PgQuery__Node **schema_elts; protobuf_c_boolean if_not_exists; }; #define PG_QUERY__CREATE_SCHEMA_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_schema_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL, 0,NULL, 0 } struct PgQuery__AlterDatabaseStmt { ProtobufCMessage base; char *dbname; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_DATABASE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_database_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__AlterDatabaseSetStmt { ProtobufCMessage base; char *dbname; PgQuery__VariableSetStmt *setstmt; }; #define PG_QUERY__ALTER_DATABASE_SET_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_database_set_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL } struct PgQuery__AlterRoleSetStmt { ProtobufCMessage base; PgQuery__RoleSpec *role; char *database; PgQuery__VariableSetStmt *setstmt; }; #define PG_QUERY__ALTER_ROLE_SET_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_role_set_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, NULL } struct PgQuery__CreateConversionStmt { ProtobufCMessage base; size_t n_conversion_name; PgQuery__Node **conversion_name; char *for_encoding_name; char *to_encoding_name; size_t n_func_name; PgQuery__Node **func_name; protobuf_c_boolean def; }; #define PG_QUERY__CREATE_CONVERSION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_conversion_stmt__descriptor) \ , 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0 } struct PgQuery__CreateCastStmt { ProtobufCMessage base; PgQuery__TypeName *sourcetype; PgQuery__TypeName *targettype; PgQuery__ObjectWithArgs *func; PgQuery__CoercionContext context; protobuf_c_boolean inout; }; #define PG_QUERY__CREATE_CAST_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_cast_stmt__descriptor) \ , NULL, NULL, NULL, PG_QUERY__COERCION_CONTEXT__COERCION_CONTEXT_UNDEFINED, 0 } struct PgQuery__CreateOpClassStmt { ProtobufCMessage base; size_t n_opclassname; PgQuery__Node **opclassname; size_t n_opfamilyname; PgQuery__Node **opfamilyname; char *amname; PgQuery__TypeName *datatype; size_t n_items; PgQuery__Node **items; protobuf_c_boolean is_default; }; #define PG_QUERY__CREATE_OP_CLASS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_op_class_stmt__descriptor) \ , 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, NULL, 0,NULL, 0 } struct PgQuery__CreateOpFamilyStmt { ProtobufCMessage base; size_t n_opfamilyname; PgQuery__Node **opfamilyname; char *amname; }; #define PG_QUERY__CREATE_OP_FAMILY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_op_family_stmt__descriptor) \ , 0,NULL, (char *)protobuf_c_empty_string } struct PgQuery__AlterOpFamilyStmt { ProtobufCMessage base; size_t n_opfamilyname; PgQuery__Node **opfamilyname; char *amname; protobuf_c_boolean is_drop; size_t n_items; PgQuery__Node **items; }; #define PG_QUERY__ALTER_OP_FAMILY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_op_family_stmt__descriptor) \ , 0,NULL, (char *)protobuf_c_empty_string, 0, 0,NULL } struct PgQuery__PrepareStmt { ProtobufCMessage base; char *name; size_t n_argtypes; PgQuery__Node **argtypes; PgQuery__Node *query; }; #define PG_QUERY__PREPARE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__prepare_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, NULL } struct PgQuery__ExecuteStmt { ProtobufCMessage base; char *name; size_t n_params; PgQuery__Node **params; }; #define PG_QUERY__EXECUTE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__execute_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__DeallocateStmt { ProtobufCMessage base; char *name; }; #define PG_QUERY__DEALLOCATE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__deallocate_stmt__descriptor) \ , (char *)protobuf_c_empty_string } struct PgQuery__DeclareCursorStmt { ProtobufCMessage base; char *portalname; int32_t options; PgQuery__Node *query; }; #define PG_QUERY__DECLARE_CURSOR_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__declare_cursor_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0, NULL } struct PgQuery__CreateTableSpaceStmt { ProtobufCMessage base; char *tablespacename; PgQuery__RoleSpec *owner; char *location; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_TABLE_SPACE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_table_space_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__DropTableSpaceStmt { ProtobufCMessage base; char *tablespacename; protobuf_c_boolean missing_ok; }; #define PG_QUERY__DROP_TABLE_SPACE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_table_space_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0 } struct PgQuery__AlterObjectDependsStmt { ProtobufCMessage base; PgQuery__ObjectType object_type; PgQuery__RangeVar *relation; PgQuery__Node *object; PgQuery__Node *extname; protobuf_c_boolean remove; }; #define PG_QUERY__ALTER_OBJECT_DEPENDS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_object_depends_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, NULL, NULL, 0 } struct PgQuery__AlterObjectSchemaStmt { ProtobufCMessage base; PgQuery__ObjectType object_type; PgQuery__RangeVar *relation; PgQuery__Node *object; char *newschema; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_OBJECT_SCHEMA_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_object_schema_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, NULL, (char *)protobuf_c_empty_string, 0 } struct PgQuery__AlterOwnerStmt { ProtobufCMessage base; PgQuery__ObjectType object_type; PgQuery__RangeVar *relation; PgQuery__Node *object; PgQuery__RoleSpec *newowner; }; #define PG_QUERY__ALTER_OWNER_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_owner_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, NULL, NULL } struct PgQuery__AlterOperatorStmt { ProtobufCMessage base; PgQuery__ObjectWithArgs *opername; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_OPERATOR_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_operator_stmt__descriptor) \ , NULL, 0,NULL } struct PgQuery__AlterTypeStmt { ProtobufCMessage base; size_t n_type_name; PgQuery__Node **type_name; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_TYPE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_type_stmt__descriptor) \ , 0,NULL, 0,NULL } struct PgQuery__DropOwnedStmt { ProtobufCMessage base; size_t n_roles; PgQuery__Node **roles; PgQuery__DropBehavior behavior; }; #define PG_QUERY__DROP_OWNED_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_owned_stmt__descriptor) \ , 0,NULL, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } struct PgQuery__ReassignOwnedStmt { ProtobufCMessage base; size_t n_roles; PgQuery__Node **roles; PgQuery__RoleSpec *newrole; }; #define PG_QUERY__REASSIGN_OWNED_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__reassign_owned_stmt__descriptor) \ , 0,NULL, NULL } struct PgQuery__CompositeTypeStmt { ProtobufCMessage base; PgQuery__RangeVar *typevar; size_t n_coldeflist; PgQuery__Node **coldeflist; }; #define PG_QUERY__COMPOSITE_TYPE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__composite_type_stmt__descriptor) \ , NULL, 0,NULL } struct PgQuery__CreateEnumStmt { ProtobufCMessage base; size_t n_type_name; PgQuery__Node **type_name; size_t n_vals; PgQuery__Node **vals; }; #define PG_QUERY__CREATE_ENUM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_enum_stmt__descriptor) \ , 0,NULL, 0,NULL } struct PgQuery__CreateRangeStmt { ProtobufCMessage base; size_t n_type_name; PgQuery__Node **type_name; size_t n_params; PgQuery__Node **params; }; #define PG_QUERY__CREATE_RANGE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_range_stmt__descriptor) \ , 0,NULL, 0,NULL } struct PgQuery__AlterEnumStmt { ProtobufCMessage base; size_t n_type_name; PgQuery__Node **type_name; char *old_val; char *new_val; char *new_val_neighbor; protobuf_c_boolean new_val_is_after; protobuf_c_boolean skip_if_new_val_exists; }; #define PG_QUERY__ALTER_ENUM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_enum_stmt__descriptor) \ , 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 0 } struct PgQuery__AlterTSDictionaryStmt { ProtobufCMessage base; size_t n_dictname; PgQuery__Node **dictname; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_TSDICTIONARY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_tsdictionary_stmt__descriptor) \ , 0,NULL, 0,NULL } struct PgQuery__AlterTSConfigurationStmt { ProtobufCMessage base; PgQuery__AlterTSConfigType kind; size_t n_cfgname; PgQuery__Node **cfgname; size_t n_tokentype; PgQuery__Node **tokentype; size_t n_dicts; PgQuery__Node **dicts; protobuf_c_boolean override; protobuf_c_boolean replace; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_TSCONFIGURATION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_tsconfiguration_stmt__descriptor) \ , PG_QUERY__ALTER_TSCONFIG_TYPE__ALTER_TSCONFIG_TYPE_UNDEFINED, 0,NULL, 0,NULL, 0,NULL, 0, 0, 0 } struct PgQuery__CreateFdwStmt { ProtobufCMessage base; char *fdwname; size_t n_func_options; PgQuery__Node **func_options; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_FDW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_fdw_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } struct PgQuery__AlterFdwStmt { ProtobufCMessage base; char *fdwname; size_t n_func_options; PgQuery__Node **func_options; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_FDW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_fdw_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } struct PgQuery__CreateForeignServerStmt { ProtobufCMessage base; char *servername; char *servertype; char *version; char *fdwname; protobuf_c_boolean if_not_exists; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_FOREIGN_SERVER_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_foreign_server_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 0,NULL } struct PgQuery__AlterForeignServerStmt { ProtobufCMessage base; char *servername; char *version; size_t n_options; PgQuery__Node **options; protobuf_c_boolean has_version; }; #define PG_QUERY__ALTER_FOREIGN_SERVER_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_foreign_server_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0 } struct PgQuery__CreateUserMappingStmt { ProtobufCMessage base; PgQuery__RoleSpec *user; char *servername; protobuf_c_boolean if_not_exists; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_USER_MAPPING_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_user_mapping_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 0, 0,NULL } struct PgQuery__AlterUserMappingStmt { ProtobufCMessage base; PgQuery__RoleSpec *user; char *servername; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_USER_MAPPING_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_user_mapping_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__DropUserMappingStmt { ProtobufCMessage base; PgQuery__RoleSpec *user; char *servername; protobuf_c_boolean missing_ok; }; #define PG_QUERY__DROP_USER_MAPPING_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_user_mapping_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 0 } struct PgQuery__AlterTableSpaceOptionsStmt { ProtobufCMessage base; char *tablespacename; size_t n_options; PgQuery__Node **options; protobuf_c_boolean is_reset; }; #define PG_QUERY__ALTER_TABLE_SPACE_OPTIONS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_table_space_options_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0 } struct PgQuery__AlterTableMoveAllStmt { ProtobufCMessage base; char *orig_tablespacename; PgQuery__ObjectType objtype; size_t n_roles; PgQuery__Node **roles; char *new_tablespacename; protobuf_c_boolean nowait; }; #define PG_QUERY__ALTER_TABLE_MOVE_ALL_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_table_move_all_stmt__descriptor) \ , (char *)protobuf_c_empty_string, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, 0,NULL, (char *)protobuf_c_empty_string, 0 } struct PgQuery__SecLabelStmt { ProtobufCMessage base; PgQuery__ObjectType objtype; PgQuery__Node *object; char *provider; char *label; }; #define PG_QUERY__SEC_LABEL_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sec_label_stmt__descriptor) \ , PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } struct PgQuery__CreateForeignTableStmt { ProtobufCMessage base; PgQuery__CreateStmt *base_stmt; char *servername; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_FOREIGN_TABLE_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_foreign_table_stmt__descriptor) \ , NULL, (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__ImportForeignSchemaStmt { ProtobufCMessage base; char *server_name; char *remote_schema; char *local_schema; PgQuery__ImportForeignSchemaType list_type; size_t n_table_list; PgQuery__Node **table_list; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__IMPORT_FOREIGN_SCHEMA_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__import_foreign_schema_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, PG_QUERY__IMPORT_FOREIGN_SCHEMA_TYPE__IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED, 0,NULL, 0,NULL } struct PgQuery__CreateExtensionStmt { ProtobufCMessage base; char *extname; protobuf_c_boolean if_not_exists; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_EXTENSION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_extension_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0,NULL } struct PgQuery__AlterExtensionStmt { ProtobufCMessage base; char *extname; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_EXTENSION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_extension_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__AlterExtensionContentsStmt { ProtobufCMessage base; char *extname; int32_t action; PgQuery__ObjectType objtype; PgQuery__Node *object; }; #define PG_QUERY__ALTER_EXTENSION_CONTENTS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_extension_contents_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0, PG_QUERY__OBJECT_TYPE__OBJECT_TYPE_UNDEFINED, NULL } struct PgQuery__CreateEventTrigStmt { ProtobufCMessage base; char *trigname; char *eventname; size_t n_whenclause; PgQuery__Node **whenclause; size_t n_funcname; PgQuery__Node **funcname; }; #define PG_QUERY__CREATE_EVENT_TRIG_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_event_trig_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } struct PgQuery__AlterEventTrigStmt { ProtobufCMessage base; char *trigname; char *tgenabled; }; #define PG_QUERY__ALTER_EVENT_TRIG_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_event_trig_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } struct PgQuery__RefreshMatViewStmt { ProtobufCMessage base; protobuf_c_boolean concurrent; protobuf_c_boolean skip_data; PgQuery__RangeVar *relation; }; #define PG_QUERY__REFRESH_MAT_VIEW_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__refresh_mat_view_stmt__descriptor) \ , 0, 0, NULL } struct PgQuery__ReplicaIdentityStmt { ProtobufCMessage base; char *identity_type; char *name; }; #define PG_QUERY__REPLICA_IDENTITY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__replica_identity_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string } struct PgQuery__AlterSystemStmt { ProtobufCMessage base; PgQuery__VariableSetStmt *setstmt; }; #define PG_QUERY__ALTER_SYSTEM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_system_stmt__descriptor) \ , NULL } struct PgQuery__CreatePolicyStmt { ProtobufCMessage base; char *policy_name; PgQuery__RangeVar *table; char *cmd_name; protobuf_c_boolean permissive; size_t n_roles; PgQuery__Node **roles; PgQuery__Node *qual; PgQuery__Node *with_check; }; #define PG_QUERY__CREATE_POLICY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_policy_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, 0, 0,NULL, NULL, NULL } struct PgQuery__AlterPolicyStmt { ProtobufCMessage base; char *policy_name; PgQuery__RangeVar *table; size_t n_roles; PgQuery__Node **roles; PgQuery__Node *qual; PgQuery__Node *with_check; }; #define PG_QUERY__ALTER_POLICY_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_policy_stmt__descriptor) \ , (char *)protobuf_c_empty_string, NULL, 0,NULL, NULL, NULL } struct PgQuery__CreateTransformStmt { ProtobufCMessage base; protobuf_c_boolean replace; PgQuery__TypeName *type_name; char *lang; PgQuery__ObjectWithArgs *fromsql; PgQuery__ObjectWithArgs *tosql; }; #define PG_QUERY__CREATE_TRANSFORM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_transform_stmt__descriptor) \ , 0, NULL, (char *)protobuf_c_empty_string, NULL, NULL } struct PgQuery__CreateAmStmt { ProtobufCMessage base; char *amname; size_t n_handler_name; PgQuery__Node **handler_name; char *amtype; }; #define PG_QUERY__CREATE_AM_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_am_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, (char *)protobuf_c_empty_string } struct PgQuery__CreatePublicationStmt { ProtobufCMessage base; char *pubname; size_t n_options; PgQuery__Node **options; size_t n_tables; PgQuery__Node **tables; protobuf_c_boolean for_all_tables; }; #define PG_QUERY__CREATE_PUBLICATION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_publication_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0 } struct PgQuery__AlterPublicationStmt { ProtobufCMessage base; char *pubname; size_t n_options; PgQuery__Node **options; size_t n_tables; PgQuery__Node **tables; protobuf_c_boolean for_all_tables; PgQuery__DefElemAction table_action; }; #define PG_QUERY__ALTER_PUBLICATION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_publication_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0, PG_QUERY__DEF_ELEM_ACTION__DEF_ELEM_ACTION_UNDEFINED } struct PgQuery__CreateSubscriptionStmt { ProtobufCMessage base; char *subname; char *conninfo; size_t n_publication; PgQuery__Node **publication; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__CREATE_SUBSCRIPTION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_subscription_stmt__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } struct PgQuery__AlterSubscriptionStmt { ProtobufCMessage base; PgQuery__AlterSubscriptionType kind; char *subname; char *conninfo; size_t n_publication; PgQuery__Node **publication; size_t n_options; PgQuery__Node **options; }; #define PG_QUERY__ALTER_SUBSCRIPTION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_subscription_stmt__descriptor) \ , PG_QUERY__ALTER_SUBSCRIPTION_TYPE__ALTER_SUBSCRIPTION_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL } struct PgQuery__DropSubscriptionStmt { ProtobufCMessage base; char *subname; protobuf_c_boolean missing_ok; PgQuery__DropBehavior behavior; }; #define PG_QUERY__DROP_SUBSCRIPTION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__drop_subscription_stmt__descriptor) \ , (char *)protobuf_c_empty_string, 0, PG_QUERY__DROP_BEHAVIOR__DROP_BEHAVIOR_UNDEFINED } struct PgQuery__CreateStatsStmt { ProtobufCMessage base; size_t n_defnames; PgQuery__Node **defnames; size_t n_stat_types; PgQuery__Node **stat_types; size_t n_exprs; PgQuery__Node **exprs; size_t n_relations; PgQuery__Node **relations; char *stxcomment; protobuf_c_boolean if_not_exists; }; #define PG_QUERY__CREATE_STATS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_stats_stmt__descriptor) \ , 0,NULL, 0,NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, 0 } struct PgQuery__AlterCollationStmt { ProtobufCMessage base; size_t n_collname; PgQuery__Node **collname; }; #define PG_QUERY__ALTER_COLLATION_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_collation_stmt__descriptor) \ , 0,NULL } struct PgQuery__CallStmt { ProtobufCMessage base; PgQuery__FuncCall *funccall; PgQuery__FuncExpr *funcexpr; }; #define PG_QUERY__CALL_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__call_stmt__descriptor) \ , NULL, NULL } struct PgQuery__AlterStatsStmt { ProtobufCMessage base; size_t n_defnames; PgQuery__Node **defnames; int32_t stxstattarget; protobuf_c_boolean missing_ok; }; #define PG_QUERY__ALTER_STATS_STMT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__alter_stats_stmt__descriptor) \ , 0,NULL, 0, 0 } struct PgQuery__AExpr { ProtobufCMessage base; PgQuery__AExprKind kind; size_t n_name; PgQuery__Node **name; PgQuery__Node *lexpr; PgQuery__Node *rexpr; int32_t location; }; #define PG_QUERY__A__EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__expr__descriptor) \ , PG_QUERY__A__EXPR__KIND__A_EXPR_KIND_UNDEFINED, 0,NULL, NULL, NULL, 0 } struct PgQuery__ColumnRef { ProtobufCMessage base; size_t n_fields; PgQuery__Node **fields; int32_t location; }; #define PG_QUERY__COLUMN_REF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__column_ref__descriptor) \ , 0,NULL, 0 } struct PgQuery__ParamRef { ProtobufCMessage base; int32_t number; int32_t location; }; #define PG_QUERY__PARAM_REF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__param_ref__descriptor) \ , 0, 0 } struct PgQuery__AConst { ProtobufCMessage base; PgQuery__Node *val; int32_t location; }; #define PG_QUERY__A__CONST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__const__descriptor) \ , NULL, 0 } struct PgQuery__FuncCall { ProtobufCMessage base; size_t n_funcname; PgQuery__Node **funcname; size_t n_args; PgQuery__Node **args; size_t n_agg_order; PgQuery__Node **agg_order; PgQuery__Node *agg_filter; protobuf_c_boolean agg_within_group; protobuf_c_boolean agg_star; protobuf_c_boolean agg_distinct; protobuf_c_boolean func_variadic; PgQuery__WindowDef *over; int32_t location; }; #define PG_QUERY__FUNC_CALL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__func_call__descriptor) \ , 0,NULL, 0,NULL, 0,NULL, NULL, 0, 0, 0, 0, NULL, 0 } struct PgQuery__AStar { ProtobufCMessage base; }; #define PG_QUERY__A__STAR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__star__descriptor) \ } struct PgQuery__AIndices { ProtobufCMessage base; protobuf_c_boolean is_slice; PgQuery__Node *lidx; PgQuery__Node *uidx; }; #define PG_QUERY__A__INDICES__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__indices__descriptor) \ , 0, NULL, NULL } struct PgQuery__AIndirection { ProtobufCMessage base; PgQuery__Node *arg; size_t n_indirection; PgQuery__Node **indirection; }; #define PG_QUERY__A__INDIRECTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__indirection__descriptor) \ , NULL, 0,NULL } struct PgQuery__AArrayExpr { ProtobufCMessage base; size_t n_elements; PgQuery__Node **elements; int32_t location; }; #define PG_QUERY__A__ARRAY_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__a__array_expr__descriptor) \ , 0,NULL, 0 } struct PgQuery__ResTarget { ProtobufCMessage base; char *name; size_t n_indirection; PgQuery__Node **indirection; PgQuery__Node *val; int32_t location; }; #define PG_QUERY__RES_TARGET__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__res_target__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, NULL, 0 } struct PgQuery__MultiAssignRef { ProtobufCMessage base; PgQuery__Node *source; int32_t colno; int32_t ncolumns; }; #define PG_QUERY__MULTI_ASSIGN_REF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__multi_assign_ref__descriptor) \ , NULL, 0, 0 } struct PgQuery__TypeCast { ProtobufCMessage base; PgQuery__Node *arg; PgQuery__TypeName *type_name; int32_t location; }; #define PG_QUERY__TYPE_CAST__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__type_cast__descriptor) \ , NULL, NULL, 0 } struct PgQuery__CollateClause { ProtobufCMessage base; PgQuery__Node *arg; size_t n_collname; PgQuery__Node **collname; int32_t location; }; #define PG_QUERY__COLLATE_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__collate_clause__descriptor) \ , NULL, 0,NULL, 0 } struct PgQuery__SortBy { ProtobufCMessage base; PgQuery__Node *node; PgQuery__SortByDir sortby_dir; PgQuery__SortByNulls sortby_nulls; size_t n_use_op; PgQuery__Node **use_op; int32_t location; }; #define PG_QUERY__SORT_BY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sort_by__descriptor) \ , NULL, PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED, PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED, 0,NULL, 0 } struct PgQuery__WindowDef { ProtobufCMessage base; char *name; char *refname; size_t n_partition_clause; PgQuery__Node **partition_clause; size_t n_order_clause; PgQuery__Node **order_clause; int32_t frame_options; PgQuery__Node *start_offset; PgQuery__Node *end_offset; int32_t location; }; #define PG_QUERY__WINDOW_DEF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__window_def__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0, NULL, NULL, 0 } struct PgQuery__RangeSubselect { ProtobufCMessage base; protobuf_c_boolean lateral; PgQuery__Node *subquery; PgQuery__Alias *alias; }; #define PG_QUERY__RANGE_SUBSELECT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_subselect__descriptor) \ , 0, NULL, NULL } struct PgQuery__RangeFunction { ProtobufCMessage base; protobuf_c_boolean lateral; protobuf_c_boolean ordinality; protobuf_c_boolean is_rowsfrom; size_t n_functions; PgQuery__Node **functions; PgQuery__Alias *alias; size_t n_coldeflist; PgQuery__Node **coldeflist; }; #define PG_QUERY__RANGE_FUNCTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_function__descriptor) \ , 0, 0, 0, 0,NULL, NULL, 0,NULL } struct PgQuery__RangeTableSample { ProtobufCMessage base; PgQuery__Node *relation; size_t n_method; PgQuery__Node **method; size_t n_args; PgQuery__Node **args; PgQuery__Node *repeatable; int32_t location; }; #define PG_QUERY__RANGE_TABLE_SAMPLE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_table_sample__descriptor) \ , NULL, 0,NULL, 0,NULL, NULL, 0 } struct PgQuery__RangeTableFunc { ProtobufCMessage base; protobuf_c_boolean lateral; PgQuery__Node *docexpr; PgQuery__Node *rowexpr; size_t n_namespaces; PgQuery__Node **namespaces; size_t n_columns; PgQuery__Node **columns; PgQuery__Alias *alias; int32_t location; }; #define PG_QUERY__RANGE_TABLE_FUNC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_table_func__descriptor) \ , 0, NULL, NULL, 0,NULL, 0,NULL, NULL, 0 } struct PgQuery__RangeTableFuncCol { ProtobufCMessage base; char *colname; PgQuery__TypeName *type_name; protobuf_c_boolean for_ordinality; protobuf_c_boolean is_not_null; PgQuery__Node *colexpr; PgQuery__Node *coldefexpr; int32_t location; }; #define PG_QUERY__RANGE_TABLE_FUNC_COL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_table_func_col__descriptor) \ , (char *)protobuf_c_empty_string, NULL, 0, 0, NULL, NULL, 0 } struct PgQuery__TypeName { ProtobufCMessage base; size_t n_names; PgQuery__Node **names; uint32_t type_oid; protobuf_c_boolean setof; protobuf_c_boolean pct_type; size_t n_typmods; PgQuery__Node **typmods; int32_t typemod; size_t n_array_bounds; PgQuery__Node **array_bounds; int32_t location; }; #define PG_QUERY__TYPE_NAME__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__type_name__descriptor) \ , 0,NULL, 0, 0, 0, 0,NULL, 0, 0,NULL, 0 } struct PgQuery__ColumnDef { ProtobufCMessage base; char *colname; PgQuery__TypeName *type_name; int32_t inhcount; protobuf_c_boolean is_local; protobuf_c_boolean is_not_null; protobuf_c_boolean is_from_type; char *storage; PgQuery__Node *raw_default; PgQuery__Node *cooked_default; char *identity; PgQuery__RangeVar *identity_sequence; char *generated; PgQuery__CollateClause *coll_clause; uint32_t coll_oid; size_t n_constraints; PgQuery__Node **constraints; size_t n_fdwoptions; PgQuery__Node **fdwoptions; int32_t location; }; #define PG_QUERY__COLUMN_DEF__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__column_def__descriptor) \ , (char *)protobuf_c_empty_string, NULL, 0, 0, 0, 0, (char *)protobuf_c_empty_string, NULL, NULL, (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, NULL, 0, 0,NULL, 0,NULL, 0 } struct PgQuery__IndexElem { ProtobufCMessage base; char *name; PgQuery__Node *expr; char *indexcolname; size_t n_collation; PgQuery__Node **collation; size_t n_opclass; PgQuery__Node **opclass; size_t n_opclassopts; PgQuery__Node **opclassopts; PgQuery__SortByDir ordering; PgQuery__SortByNulls nulls_ordering; }; #define PG_QUERY__INDEX_ELEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__index_elem__descriptor) \ , (char *)protobuf_c_empty_string, NULL, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, PG_QUERY__SORT_BY_DIR__SORT_BY_DIR_UNDEFINED, PG_QUERY__SORT_BY_NULLS__SORT_BY_NULLS_UNDEFINED } struct PgQuery__Constraint { ProtobufCMessage base; PgQuery__ConstrType contype; char *conname; protobuf_c_boolean deferrable; protobuf_c_boolean initdeferred; int32_t location; protobuf_c_boolean is_no_inherit; PgQuery__Node *raw_expr; char *cooked_expr; char *generated_when; size_t n_keys; PgQuery__Node **keys; size_t n_including; PgQuery__Node **including; size_t n_exclusions; PgQuery__Node **exclusions; size_t n_options; PgQuery__Node **options; char *indexname; char *indexspace; protobuf_c_boolean reset_default_tblspc; char *access_method; PgQuery__Node *where_clause; PgQuery__RangeVar *pktable; size_t n_fk_attrs; PgQuery__Node **fk_attrs; size_t n_pk_attrs; PgQuery__Node **pk_attrs; char *fk_matchtype; char *fk_upd_action; char *fk_del_action; size_t n_old_conpfeqop; PgQuery__Node **old_conpfeqop; uint32_t old_pktable_oid; protobuf_c_boolean skip_validation; protobuf_c_boolean initially_valid; }; #define PG_QUERY__CONSTRAINT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__constraint__descriptor) \ , PG_QUERY__CONSTR_TYPE__CONSTR_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0, 0, 0, 0, NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, (char *)protobuf_c_empty_string, NULL, NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0, 0, 0 } struct PgQuery__DefElem { ProtobufCMessage base; char *defnamespace; char *defname; PgQuery__Node *arg; PgQuery__DefElemAction defaction; int32_t location; }; #define PG_QUERY__DEF_ELEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__def_elem__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, NULL, PG_QUERY__DEF_ELEM_ACTION__DEF_ELEM_ACTION_UNDEFINED, 0 } struct PgQuery__RangeTblEntry { ProtobufCMessage base; PgQuery__RTEKind rtekind; uint32_t relid; char *relkind; int32_t rellockmode; PgQuery__TableSampleClause *tablesample; PgQuery__Query *subquery; protobuf_c_boolean security_barrier; PgQuery__JoinType jointype; int32_t joinmergedcols; size_t n_joinaliasvars; PgQuery__Node **joinaliasvars; size_t n_joinleftcols; PgQuery__Node **joinleftcols; size_t n_joinrightcols; PgQuery__Node **joinrightcols; size_t n_functions; PgQuery__Node **functions; protobuf_c_boolean funcordinality; PgQuery__TableFunc *tablefunc; size_t n_values_lists; PgQuery__Node **values_lists; char *ctename; uint32_t ctelevelsup; protobuf_c_boolean self_reference; size_t n_coltypes; PgQuery__Node **coltypes; size_t n_coltypmods; PgQuery__Node **coltypmods; size_t n_colcollations; PgQuery__Node **colcollations; char *enrname; double enrtuples; PgQuery__Alias *alias; PgQuery__Alias *eref; protobuf_c_boolean lateral; protobuf_c_boolean inh; protobuf_c_boolean in_from_cl; uint32_t required_perms; uint32_t check_as_user; size_t n_selected_cols; uint64_t *selected_cols; size_t n_inserted_cols; uint64_t *inserted_cols; size_t n_updated_cols; uint64_t *updated_cols; size_t n_extra_updated_cols; uint64_t *extra_updated_cols; size_t n_security_quals; PgQuery__Node **security_quals; }; #define PG_QUERY__RANGE_TBL_ENTRY__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_tbl_entry__descriptor) \ , PG_QUERY__RTEKIND__RTEKIND_UNDEFINED, 0, (char *)protobuf_c_empty_string, 0, NULL, NULL, 0, PG_QUERY__JOIN_TYPE__JOIN_TYPE_UNDEFINED, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0, NULL, 0,NULL, (char *)protobuf_c_empty_string, 0, 0, 0,NULL, 0,NULL, 0,NULL, (char *)protobuf_c_empty_string, 0, NULL, NULL, 0, 0, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } struct PgQuery__RangeTblFunction { ProtobufCMessage base; PgQuery__Node *funcexpr; int32_t funccolcount; size_t n_funccolnames; PgQuery__Node **funccolnames; size_t n_funccoltypes; PgQuery__Node **funccoltypes; size_t n_funccoltypmods; PgQuery__Node **funccoltypmods; size_t n_funccolcollations; PgQuery__Node **funccolcollations; size_t n_funcparams; uint64_t *funcparams; }; #define PG_QUERY__RANGE_TBL_FUNCTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__range_tbl_function__descriptor) \ , NULL, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } struct PgQuery__TableSampleClause { ProtobufCMessage base; uint32_t tsmhandler; size_t n_args; PgQuery__Node **args; PgQuery__Node *repeatable; }; #define PG_QUERY__TABLE_SAMPLE_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__table_sample_clause__descriptor) \ , 0, 0,NULL, NULL } struct PgQuery__WithCheckOption { ProtobufCMessage base; PgQuery__WCOKind kind; char *relname; char *polname; PgQuery__Node *qual; protobuf_c_boolean cascaded; }; #define PG_QUERY__WITH_CHECK_OPTION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__with_check_option__descriptor) \ , PG_QUERY__WCOKIND__WCOKIND_UNDEFINED, (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, NULL, 0 } struct PgQuery__SortGroupClause { ProtobufCMessage base; uint32_t tle_sort_group_ref; uint32_t eqop; uint32_t sortop; protobuf_c_boolean nulls_first; protobuf_c_boolean hashable; }; #define PG_QUERY__SORT_GROUP_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__sort_group_clause__descriptor) \ , 0, 0, 0, 0, 0 } struct PgQuery__GroupingSet { ProtobufCMessage base; PgQuery__GroupingSetKind kind; size_t n_content; PgQuery__Node **content; int32_t location; }; #define PG_QUERY__GROUPING_SET__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__grouping_set__descriptor) \ , PG_QUERY__GROUPING_SET_KIND__GROUPING_SET_KIND_UNDEFINED, 0,NULL, 0 } struct PgQuery__WindowClause { ProtobufCMessage base; char *name; char *refname; size_t n_partition_clause; PgQuery__Node **partition_clause; size_t n_order_clause; PgQuery__Node **order_clause; int32_t frame_options; PgQuery__Node *start_offset; PgQuery__Node *end_offset; uint32_t start_in_range_func; uint32_t end_in_range_func; uint32_t in_range_coll; protobuf_c_boolean in_range_asc; protobuf_c_boolean in_range_nulls_first; uint32_t winref; protobuf_c_boolean copied_order; }; #define PG_QUERY__WINDOW_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__window_clause__descriptor) \ , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0,NULL, 0,NULL, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0 } struct PgQuery__ObjectWithArgs { ProtobufCMessage base; size_t n_objname; PgQuery__Node **objname; size_t n_objargs; PgQuery__Node **objargs; protobuf_c_boolean args_unspecified; }; #define PG_QUERY__OBJECT_WITH_ARGS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__object_with_args__descriptor) \ , 0,NULL, 0,NULL, 0 } struct PgQuery__AccessPriv { ProtobufCMessage base; char *priv_name; size_t n_cols; PgQuery__Node **cols; }; #define PG_QUERY__ACCESS_PRIV__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__access_priv__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL } struct PgQuery__CreateOpClassItem { ProtobufCMessage base; int32_t itemtype; PgQuery__ObjectWithArgs *name; int32_t number; size_t n_order_family; PgQuery__Node **order_family; size_t n_class_args; PgQuery__Node **class_args; PgQuery__TypeName *storedtype; }; #define PG_QUERY__CREATE_OP_CLASS_ITEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__create_op_class_item__descriptor) \ , 0, NULL, 0, 0,NULL, 0,NULL, NULL } struct PgQuery__TableLikeClause { ProtobufCMessage base; PgQuery__RangeVar *relation; uint32_t options; uint32_t relation_oid; }; #define PG_QUERY__TABLE_LIKE_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__table_like_clause__descriptor) \ , NULL, 0, 0 } struct PgQuery__FunctionParameter { ProtobufCMessage base; char *name; PgQuery__TypeName *arg_type; PgQuery__FunctionParameterMode mode; PgQuery__Node *defexpr; }; #define PG_QUERY__FUNCTION_PARAMETER__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__function_parameter__descriptor) \ , (char *)protobuf_c_empty_string, NULL, PG_QUERY__FUNCTION_PARAMETER_MODE__FUNCTION_PARAMETER_MODE_UNDEFINED, NULL } struct PgQuery__LockingClause { ProtobufCMessage base; size_t n_locked_rels; PgQuery__Node **locked_rels; PgQuery__LockClauseStrength strength; PgQuery__LockWaitPolicy wait_policy; }; #define PG_QUERY__LOCKING_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__locking_clause__descriptor) \ , 0,NULL, PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED, PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED } struct PgQuery__RowMarkClause { ProtobufCMessage base; uint32_t rti; PgQuery__LockClauseStrength strength; PgQuery__LockWaitPolicy wait_policy; protobuf_c_boolean pushed_down; }; #define PG_QUERY__ROW_MARK_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__row_mark_clause__descriptor) \ , 0, PG_QUERY__LOCK_CLAUSE_STRENGTH__LOCK_CLAUSE_STRENGTH_UNDEFINED, PG_QUERY__LOCK_WAIT_POLICY__LOCK_WAIT_POLICY_UNDEFINED, 0 } struct PgQuery__XmlSerialize { ProtobufCMessage base; PgQuery__XmlOptionType xmloption; PgQuery__Node *expr; PgQuery__TypeName *type_name; int32_t location; }; #define PG_QUERY__XML_SERIALIZE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__xml_serialize__descriptor) \ , PG_QUERY__XML_OPTION_TYPE__XML_OPTION_TYPE_UNDEFINED, NULL, NULL, 0 } struct PgQuery__WithClause { ProtobufCMessage base; size_t n_ctes; PgQuery__Node **ctes; protobuf_c_boolean recursive; int32_t location; }; #define PG_QUERY__WITH_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__with_clause__descriptor) \ , 0,NULL, 0, 0 } struct PgQuery__InferClause { ProtobufCMessage base; size_t n_index_elems; PgQuery__Node **index_elems; PgQuery__Node *where_clause; char *conname; int32_t location; }; #define PG_QUERY__INFER_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__infer_clause__descriptor) \ , 0,NULL, NULL, (char *)protobuf_c_empty_string, 0 } struct PgQuery__OnConflictClause { ProtobufCMessage base; PgQuery__OnConflictAction action; PgQuery__InferClause *infer; size_t n_target_list; PgQuery__Node **target_list; PgQuery__Node *where_clause; int32_t location; }; #define PG_QUERY__ON_CONFLICT_CLAUSE__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__on_conflict_clause__descriptor) \ , PG_QUERY__ON_CONFLICT_ACTION__ON_CONFLICT_ACTION_UNDEFINED, NULL, 0,NULL, NULL, 0 } struct PgQuery__CommonTableExpr { ProtobufCMessage base; char *ctename; size_t n_aliascolnames; PgQuery__Node **aliascolnames; PgQuery__CTEMaterialize ctematerialized; PgQuery__Node *ctequery; int32_t location; protobuf_c_boolean cterecursive; int32_t cterefcount; size_t n_ctecolnames; PgQuery__Node **ctecolnames; size_t n_ctecoltypes; PgQuery__Node **ctecoltypes; size_t n_ctecoltypmods; PgQuery__Node **ctecoltypmods; size_t n_ctecolcollations; PgQuery__Node **ctecolcollations; }; #define PG_QUERY__COMMON_TABLE_EXPR__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__common_table_expr__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, PG_QUERY__CTEMATERIALIZE__CTEMATERIALIZE_UNDEFINED, NULL, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0,NULL } struct PgQuery__RoleSpec { ProtobufCMessage base; PgQuery__RoleSpecType roletype; char *rolename; int32_t location; }; #define PG_QUERY__ROLE_SPEC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__role_spec__descriptor) \ , PG_QUERY__ROLE_SPEC_TYPE__ROLE_SPEC_TYPE_UNDEFINED, (char *)protobuf_c_empty_string, 0 } struct PgQuery__TriggerTransition { ProtobufCMessage base; char *name; protobuf_c_boolean is_new; protobuf_c_boolean is_table; }; #define PG_QUERY__TRIGGER_TRANSITION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__trigger_transition__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0 } struct PgQuery__PartitionElem { ProtobufCMessage base; char *name; PgQuery__Node *expr; size_t n_collation; PgQuery__Node **collation; size_t n_opclass; PgQuery__Node **opclass; int32_t location; }; #define PG_QUERY__PARTITION_ELEM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_elem__descriptor) \ , (char *)protobuf_c_empty_string, NULL, 0,NULL, 0,NULL, 0 } struct PgQuery__PartitionSpec { ProtobufCMessage base; char *strategy; size_t n_part_params; PgQuery__Node **part_params; int32_t location; }; #define PG_QUERY__PARTITION_SPEC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_spec__descriptor) \ , (char *)protobuf_c_empty_string, 0,NULL, 0 } struct PgQuery__PartitionBoundSpec { ProtobufCMessage base; char *strategy; protobuf_c_boolean is_default; int32_t modulus; int32_t remainder; size_t n_listdatums; PgQuery__Node **listdatums; size_t n_lowerdatums; PgQuery__Node **lowerdatums; size_t n_upperdatums; PgQuery__Node **upperdatums; int32_t location; }; #define PG_QUERY__PARTITION_BOUND_SPEC__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_bound_spec__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0, 0, 0,NULL, 0,NULL, 0,NULL, 0 } struct PgQuery__PartitionRangeDatum { ProtobufCMessage base; PgQuery__PartitionRangeDatumKind kind; PgQuery__Node *value; int32_t location; }; #define PG_QUERY__PARTITION_RANGE_DATUM__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_range_datum__descriptor) \ , PG_QUERY__PARTITION_RANGE_DATUM_KIND__PARTITION_RANGE_DATUM_KIND_UNDEFINED, NULL, 0 } struct PgQuery__PartitionCmd { ProtobufCMessage base; PgQuery__RangeVar *name; PgQuery__PartitionBoundSpec *bound; }; #define PG_QUERY__PARTITION_CMD__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__partition_cmd__descriptor) \ , NULL, NULL } struct PgQuery__VacuumRelation { ProtobufCMessage base; PgQuery__RangeVar *relation; uint32_t oid; size_t n_va_cols; PgQuery__Node **va_cols; }; #define PG_QUERY__VACUUM_RELATION__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__vacuum_relation__descriptor) \ , NULL, 0, 0,NULL } struct PgQuery__InlineCodeBlock { ProtobufCMessage base; char *source_text; uint32_t lang_oid; protobuf_c_boolean lang_is_trusted; protobuf_c_boolean atomic; }; #define PG_QUERY__INLINE_CODE_BLOCK__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__inline_code_block__descriptor) \ , (char *)protobuf_c_empty_string, 0, 0, 0 } struct PgQuery__CallContext { ProtobufCMessage base; protobuf_c_boolean atomic; }; #define PG_QUERY__CALL_CONTEXT__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__call_context__descriptor) \ , 0 } struct PgQuery__ScanToken { ProtobufCMessage base; int32_t start; int32_t end; PgQuery__Token token; PgQuery__KeywordKind keyword_kind; }; #define PG_QUERY__SCAN_TOKEN__INIT \ { PROTOBUF_C_MESSAGE_INIT (&pg_query__scan_token__descriptor) \ , 0, 0, PG_QUERY__TOKEN__NUL, PG_QUERY__KEYWORD_KIND__NO_KEYWORD } /* PgQuery__ParseResult methods */ void pg_query__parse_result__init (PgQuery__ParseResult *message); size_t pg_query__parse_result__get_packed_size (const PgQuery__ParseResult *message); size_t pg_query__parse_result__pack (const PgQuery__ParseResult *message, uint8_t *out); size_t pg_query__parse_result__pack_to_buffer (const PgQuery__ParseResult *message, ProtobufCBuffer *buffer); PgQuery__ParseResult * pg_query__parse_result__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__parse_result__free_unpacked (PgQuery__ParseResult *message, ProtobufCAllocator *allocator); /* PgQuery__ScanResult methods */ void pg_query__scan_result__init (PgQuery__ScanResult *message); size_t pg_query__scan_result__get_packed_size (const PgQuery__ScanResult *message); size_t pg_query__scan_result__pack (const PgQuery__ScanResult *message, uint8_t *out); size_t pg_query__scan_result__pack_to_buffer (const PgQuery__ScanResult *message, ProtobufCBuffer *buffer); PgQuery__ScanResult * pg_query__scan_result__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__scan_result__free_unpacked (PgQuery__ScanResult *message, ProtobufCAllocator *allocator); /* PgQuery__Node methods */ void pg_query__node__init (PgQuery__Node *message); size_t pg_query__node__get_packed_size (const PgQuery__Node *message); size_t pg_query__node__pack (const PgQuery__Node *message, uint8_t *out); size_t pg_query__node__pack_to_buffer (const PgQuery__Node *message, ProtobufCBuffer *buffer); PgQuery__Node * pg_query__node__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__node__free_unpacked (PgQuery__Node *message, ProtobufCAllocator *allocator); /* PgQuery__Integer methods */ void pg_query__integer__init (PgQuery__Integer *message); size_t pg_query__integer__get_packed_size (const PgQuery__Integer *message); size_t pg_query__integer__pack (const PgQuery__Integer *message, uint8_t *out); size_t pg_query__integer__pack_to_buffer (const PgQuery__Integer *message, ProtobufCBuffer *buffer); PgQuery__Integer * pg_query__integer__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__integer__free_unpacked (PgQuery__Integer *message, ProtobufCAllocator *allocator); /* PgQuery__Float methods */ void pg_query__float__init (PgQuery__Float *message); size_t pg_query__float__get_packed_size (const PgQuery__Float *message); size_t pg_query__float__pack (const PgQuery__Float *message, uint8_t *out); size_t pg_query__float__pack_to_buffer (const PgQuery__Float *message, ProtobufCBuffer *buffer); PgQuery__Float * pg_query__float__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__float__free_unpacked (PgQuery__Float *message, ProtobufCAllocator *allocator); /* PgQuery__String methods */ void pg_query__string__init (PgQuery__String *message); size_t pg_query__string__get_packed_size (const PgQuery__String *message); size_t pg_query__string__pack (const PgQuery__String *message, uint8_t *out); size_t pg_query__string__pack_to_buffer (const PgQuery__String *message, ProtobufCBuffer *buffer); PgQuery__String * pg_query__string__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__string__free_unpacked (PgQuery__String *message, ProtobufCAllocator *allocator); /* PgQuery__BitString methods */ void pg_query__bit_string__init (PgQuery__BitString *message); size_t pg_query__bit_string__get_packed_size (const PgQuery__BitString *message); size_t pg_query__bit_string__pack (const PgQuery__BitString *message, uint8_t *out); size_t pg_query__bit_string__pack_to_buffer (const PgQuery__BitString *message, ProtobufCBuffer *buffer); PgQuery__BitString * pg_query__bit_string__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__bit_string__free_unpacked (PgQuery__BitString *message, ProtobufCAllocator *allocator); /* PgQuery__Null methods */ void pg_query__null__init (PgQuery__Null *message); size_t pg_query__null__get_packed_size (const PgQuery__Null *message); size_t pg_query__null__pack (const PgQuery__Null *message, uint8_t *out); size_t pg_query__null__pack_to_buffer (const PgQuery__Null *message, ProtobufCBuffer *buffer); PgQuery__Null * pg_query__null__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__null__free_unpacked (PgQuery__Null *message, ProtobufCAllocator *allocator); /* PgQuery__List methods */ void pg_query__list__init (PgQuery__List *message); size_t pg_query__list__get_packed_size (const PgQuery__List *message); size_t pg_query__list__pack (const PgQuery__List *message, uint8_t *out); size_t pg_query__list__pack_to_buffer (const PgQuery__List *message, ProtobufCBuffer *buffer); PgQuery__List * pg_query__list__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__list__free_unpacked (PgQuery__List *message, ProtobufCAllocator *allocator); /* PgQuery__OidList methods */ void pg_query__oid_list__init (PgQuery__OidList *message); size_t pg_query__oid_list__get_packed_size (const PgQuery__OidList *message); size_t pg_query__oid_list__pack (const PgQuery__OidList *message, uint8_t *out); size_t pg_query__oid_list__pack_to_buffer (const PgQuery__OidList *message, ProtobufCBuffer *buffer); PgQuery__OidList * pg_query__oid_list__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__oid_list__free_unpacked (PgQuery__OidList *message, ProtobufCAllocator *allocator); /* PgQuery__IntList methods */ void pg_query__int_list__init (PgQuery__IntList *message); size_t pg_query__int_list__get_packed_size (const PgQuery__IntList *message); size_t pg_query__int_list__pack (const PgQuery__IntList *message, uint8_t *out); size_t pg_query__int_list__pack_to_buffer (const PgQuery__IntList *message, ProtobufCBuffer *buffer); PgQuery__IntList * pg_query__int_list__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__int_list__free_unpacked (PgQuery__IntList *message, ProtobufCAllocator *allocator); /* PgQuery__Alias methods */ void pg_query__alias__init (PgQuery__Alias *message); size_t pg_query__alias__get_packed_size (const PgQuery__Alias *message); size_t pg_query__alias__pack (const PgQuery__Alias *message, uint8_t *out); size_t pg_query__alias__pack_to_buffer (const PgQuery__Alias *message, ProtobufCBuffer *buffer); PgQuery__Alias * pg_query__alias__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alias__free_unpacked (PgQuery__Alias *message, ProtobufCAllocator *allocator); /* PgQuery__RangeVar methods */ void pg_query__range_var__init (PgQuery__RangeVar *message); size_t pg_query__range_var__get_packed_size (const PgQuery__RangeVar *message); size_t pg_query__range_var__pack (const PgQuery__RangeVar *message, uint8_t *out); size_t pg_query__range_var__pack_to_buffer (const PgQuery__RangeVar *message, ProtobufCBuffer *buffer); PgQuery__RangeVar * pg_query__range_var__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_var__free_unpacked (PgQuery__RangeVar *message, ProtobufCAllocator *allocator); /* PgQuery__TableFunc methods */ void pg_query__table_func__init (PgQuery__TableFunc *message); size_t pg_query__table_func__get_packed_size (const PgQuery__TableFunc *message); size_t pg_query__table_func__pack (const PgQuery__TableFunc *message, uint8_t *out); size_t pg_query__table_func__pack_to_buffer (const PgQuery__TableFunc *message, ProtobufCBuffer *buffer); PgQuery__TableFunc * pg_query__table_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__table_func__free_unpacked (PgQuery__TableFunc *message, ProtobufCAllocator *allocator); /* PgQuery__Expr methods */ void pg_query__expr__init (PgQuery__Expr *message); size_t pg_query__expr__get_packed_size (const PgQuery__Expr *message); size_t pg_query__expr__pack (const PgQuery__Expr *message, uint8_t *out); size_t pg_query__expr__pack_to_buffer (const PgQuery__Expr *message, ProtobufCBuffer *buffer); PgQuery__Expr * pg_query__expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__expr__free_unpacked (PgQuery__Expr *message, ProtobufCAllocator *allocator); /* PgQuery__Var methods */ void pg_query__var__init (PgQuery__Var *message); size_t pg_query__var__get_packed_size (const PgQuery__Var *message); size_t pg_query__var__pack (const PgQuery__Var *message, uint8_t *out); size_t pg_query__var__pack_to_buffer (const PgQuery__Var *message, ProtobufCBuffer *buffer); PgQuery__Var * pg_query__var__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__var__free_unpacked (PgQuery__Var *message, ProtobufCAllocator *allocator); /* PgQuery__Param methods */ void pg_query__param__init (PgQuery__Param *message); size_t pg_query__param__get_packed_size (const PgQuery__Param *message); size_t pg_query__param__pack (const PgQuery__Param *message, uint8_t *out); size_t pg_query__param__pack_to_buffer (const PgQuery__Param *message, ProtobufCBuffer *buffer); PgQuery__Param * pg_query__param__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__param__free_unpacked (PgQuery__Param *message, ProtobufCAllocator *allocator); /* PgQuery__Aggref methods */ void pg_query__aggref__init (PgQuery__Aggref *message); size_t pg_query__aggref__get_packed_size (const PgQuery__Aggref *message); size_t pg_query__aggref__pack (const PgQuery__Aggref *message, uint8_t *out); size_t pg_query__aggref__pack_to_buffer (const PgQuery__Aggref *message, ProtobufCBuffer *buffer); PgQuery__Aggref * pg_query__aggref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__aggref__free_unpacked (PgQuery__Aggref *message, ProtobufCAllocator *allocator); /* PgQuery__GroupingFunc methods */ void pg_query__grouping_func__init (PgQuery__GroupingFunc *message); size_t pg_query__grouping_func__get_packed_size (const PgQuery__GroupingFunc *message); size_t pg_query__grouping_func__pack (const PgQuery__GroupingFunc *message, uint8_t *out); size_t pg_query__grouping_func__pack_to_buffer (const PgQuery__GroupingFunc *message, ProtobufCBuffer *buffer); PgQuery__GroupingFunc * pg_query__grouping_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__grouping_func__free_unpacked (PgQuery__GroupingFunc *message, ProtobufCAllocator *allocator); /* PgQuery__WindowFunc methods */ void pg_query__window_func__init (PgQuery__WindowFunc *message); size_t pg_query__window_func__get_packed_size (const PgQuery__WindowFunc *message); size_t pg_query__window_func__pack (const PgQuery__WindowFunc *message, uint8_t *out); size_t pg_query__window_func__pack_to_buffer (const PgQuery__WindowFunc *message, ProtobufCBuffer *buffer); PgQuery__WindowFunc * pg_query__window_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__window_func__free_unpacked (PgQuery__WindowFunc *message, ProtobufCAllocator *allocator); /* PgQuery__SubscriptingRef methods */ void pg_query__subscripting_ref__init (PgQuery__SubscriptingRef *message); size_t pg_query__subscripting_ref__get_packed_size (const PgQuery__SubscriptingRef *message); size_t pg_query__subscripting_ref__pack (const PgQuery__SubscriptingRef *message, uint8_t *out); size_t pg_query__subscripting_ref__pack_to_buffer (const PgQuery__SubscriptingRef *message, ProtobufCBuffer *buffer); PgQuery__SubscriptingRef * pg_query__subscripting_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__subscripting_ref__free_unpacked (PgQuery__SubscriptingRef *message, ProtobufCAllocator *allocator); /* PgQuery__FuncExpr methods */ void pg_query__func_expr__init (PgQuery__FuncExpr *message); size_t pg_query__func_expr__get_packed_size (const PgQuery__FuncExpr *message); size_t pg_query__func_expr__pack (const PgQuery__FuncExpr *message, uint8_t *out); size_t pg_query__func_expr__pack_to_buffer (const PgQuery__FuncExpr *message, ProtobufCBuffer *buffer); PgQuery__FuncExpr * pg_query__func_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__func_expr__free_unpacked (PgQuery__FuncExpr *message, ProtobufCAllocator *allocator); /* PgQuery__NamedArgExpr methods */ void pg_query__named_arg_expr__init (PgQuery__NamedArgExpr *message); size_t pg_query__named_arg_expr__get_packed_size (const PgQuery__NamedArgExpr *message); size_t pg_query__named_arg_expr__pack (const PgQuery__NamedArgExpr *message, uint8_t *out); size_t pg_query__named_arg_expr__pack_to_buffer (const PgQuery__NamedArgExpr *message, ProtobufCBuffer *buffer); PgQuery__NamedArgExpr * pg_query__named_arg_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__named_arg_expr__free_unpacked (PgQuery__NamedArgExpr *message, ProtobufCAllocator *allocator); /* PgQuery__OpExpr methods */ void pg_query__op_expr__init (PgQuery__OpExpr *message); size_t pg_query__op_expr__get_packed_size (const PgQuery__OpExpr *message); size_t pg_query__op_expr__pack (const PgQuery__OpExpr *message, uint8_t *out); size_t pg_query__op_expr__pack_to_buffer (const PgQuery__OpExpr *message, ProtobufCBuffer *buffer); PgQuery__OpExpr * pg_query__op_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__op_expr__free_unpacked (PgQuery__OpExpr *message, ProtobufCAllocator *allocator); /* PgQuery__DistinctExpr methods */ void pg_query__distinct_expr__init (PgQuery__DistinctExpr *message); size_t pg_query__distinct_expr__get_packed_size (const PgQuery__DistinctExpr *message); size_t pg_query__distinct_expr__pack (const PgQuery__DistinctExpr *message, uint8_t *out); size_t pg_query__distinct_expr__pack_to_buffer (const PgQuery__DistinctExpr *message, ProtobufCBuffer *buffer); PgQuery__DistinctExpr * pg_query__distinct_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__distinct_expr__free_unpacked (PgQuery__DistinctExpr *message, ProtobufCAllocator *allocator); /* PgQuery__NullIfExpr methods */ void pg_query__null_if_expr__init (PgQuery__NullIfExpr *message); size_t pg_query__null_if_expr__get_packed_size (const PgQuery__NullIfExpr *message); size_t pg_query__null_if_expr__pack (const PgQuery__NullIfExpr *message, uint8_t *out); size_t pg_query__null_if_expr__pack_to_buffer (const PgQuery__NullIfExpr *message, ProtobufCBuffer *buffer); PgQuery__NullIfExpr * pg_query__null_if_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__null_if_expr__free_unpacked (PgQuery__NullIfExpr *message, ProtobufCAllocator *allocator); /* PgQuery__ScalarArrayOpExpr methods */ void pg_query__scalar_array_op_expr__init (PgQuery__ScalarArrayOpExpr *message); size_t pg_query__scalar_array_op_expr__get_packed_size (const PgQuery__ScalarArrayOpExpr *message); size_t pg_query__scalar_array_op_expr__pack (const PgQuery__ScalarArrayOpExpr *message, uint8_t *out); size_t pg_query__scalar_array_op_expr__pack_to_buffer (const PgQuery__ScalarArrayOpExpr *message, ProtobufCBuffer *buffer); PgQuery__ScalarArrayOpExpr * pg_query__scalar_array_op_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__scalar_array_op_expr__free_unpacked (PgQuery__ScalarArrayOpExpr *message, ProtobufCAllocator *allocator); /* PgQuery__BoolExpr methods */ void pg_query__bool_expr__init (PgQuery__BoolExpr *message); size_t pg_query__bool_expr__get_packed_size (const PgQuery__BoolExpr *message); size_t pg_query__bool_expr__pack (const PgQuery__BoolExpr *message, uint8_t *out); size_t pg_query__bool_expr__pack_to_buffer (const PgQuery__BoolExpr *message, ProtobufCBuffer *buffer); PgQuery__BoolExpr * pg_query__bool_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__bool_expr__free_unpacked (PgQuery__BoolExpr *message, ProtobufCAllocator *allocator); /* PgQuery__SubLink methods */ void pg_query__sub_link__init (PgQuery__SubLink *message); size_t pg_query__sub_link__get_packed_size (const PgQuery__SubLink *message); size_t pg_query__sub_link__pack (const PgQuery__SubLink *message, uint8_t *out); size_t pg_query__sub_link__pack_to_buffer (const PgQuery__SubLink *message, ProtobufCBuffer *buffer); PgQuery__SubLink * pg_query__sub_link__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sub_link__free_unpacked (PgQuery__SubLink *message, ProtobufCAllocator *allocator); /* PgQuery__SubPlan methods */ void pg_query__sub_plan__init (PgQuery__SubPlan *message); size_t pg_query__sub_plan__get_packed_size (const PgQuery__SubPlan *message); size_t pg_query__sub_plan__pack (const PgQuery__SubPlan *message, uint8_t *out); size_t pg_query__sub_plan__pack_to_buffer (const PgQuery__SubPlan *message, ProtobufCBuffer *buffer); PgQuery__SubPlan * pg_query__sub_plan__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sub_plan__free_unpacked (PgQuery__SubPlan *message, ProtobufCAllocator *allocator); /* PgQuery__AlternativeSubPlan methods */ void pg_query__alternative_sub_plan__init (PgQuery__AlternativeSubPlan *message); size_t pg_query__alternative_sub_plan__get_packed_size (const PgQuery__AlternativeSubPlan *message); size_t pg_query__alternative_sub_plan__pack (const PgQuery__AlternativeSubPlan *message, uint8_t *out); size_t pg_query__alternative_sub_plan__pack_to_buffer (const PgQuery__AlternativeSubPlan *message, ProtobufCBuffer *buffer); PgQuery__AlternativeSubPlan * pg_query__alternative_sub_plan__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alternative_sub_plan__free_unpacked (PgQuery__AlternativeSubPlan *message, ProtobufCAllocator *allocator); /* PgQuery__FieldSelect methods */ void pg_query__field_select__init (PgQuery__FieldSelect *message); size_t pg_query__field_select__get_packed_size (const PgQuery__FieldSelect *message); size_t pg_query__field_select__pack (const PgQuery__FieldSelect *message, uint8_t *out); size_t pg_query__field_select__pack_to_buffer (const PgQuery__FieldSelect *message, ProtobufCBuffer *buffer); PgQuery__FieldSelect * pg_query__field_select__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__field_select__free_unpacked (PgQuery__FieldSelect *message, ProtobufCAllocator *allocator); /* PgQuery__FieldStore methods */ void pg_query__field_store__init (PgQuery__FieldStore *message); size_t pg_query__field_store__get_packed_size (const PgQuery__FieldStore *message); size_t pg_query__field_store__pack (const PgQuery__FieldStore *message, uint8_t *out); size_t pg_query__field_store__pack_to_buffer (const PgQuery__FieldStore *message, ProtobufCBuffer *buffer); PgQuery__FieldStore * pg_query__field_store__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__field_store__free_unpacked (PgQuery__FieldStore *message, ProtobufCAllocator *allocator); /* PgQuery__RelabelType methods */ void pg_query__relabel_type__init (PgQuery__RelabelType *message); size_t pg_query__relabel_type__get_packed_size (const PgQuery__RelabelType *message); size_t pg_query__relabel_type__pack (const PgQuery__RelabelType *message, uint8_t *out); size_t pg_query__relabel_type__pack_to_buffer (const PgQuery__RelabelType *message, ProtobufCBuffer *buffer); PgQuery__RelabelType * pg_query__relabel_type__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__relabel_type__free_unpacked (PgQuery__RelabelType *message, ProtobufCAllocator *allocator); /* PgQuery__CoerceViaIO methods */ void pg_query__coerce_via_io__init (PgQuery__CoerceViaIO *message); size_t pg_query__coerce_via_io__get_packed_size (const PgQuery__CoerceViaIO *message); size_t pg_query__coerce_via_io__pack (const PgQuery__CoerceViaIO *message, uint8_t *out); size_t pg_query__coerce_via_io__pack_to_buffer (const PgQuery__CoerceViaIO *message, ProtobufCBuffer *buffer); PgQuery__CoerceViaIO * pg_query__coerce_via_io__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__coerce_via_io__free_unpacked (PgQuery__CoerceViaIO *message, ProtobufCAllocator *allocator); /* PgQuery__ArrayCoerceExpr methods */ void pg_query__array_coerce_expr__init (PgQuery__ArrayCoerceExpr *message); size_t pg_query__array_coerce_expr__get_packed_size (const PgQuery__ArrayCoerceExpr *message); size_t pg_query__array_coerce_expr__pack (const PgQuery__ArrayCoerceExpr *message, uint8_t *out); size_t pg_query__array_coerce_expr__pack_to_buffer (const PgQuery__ArrayCoerceExpr *message, ProtobufCBuffer *buffer); PgQuery__ArrayCoerceExpr * pg_query__array_coerce_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__array_coerce_expr__free_unpacked (PgQuery__ArrayCoerceExpr *message, ProtobufCAllocator *allocator); /* PgQuery__ConvertRowtypeExpr methods */ void pg_query__convert_rowtype_expr__init (PgQuery__ConvertRowtypeExpr *message); size_t pg_query__convert_rowtype_expr__get_packed_size (const PgQuery__ConvertRowtypeExpr *message); size_t pg_query__convert_rowtype_expr__pack (const PgQuery__ConvertRowtypeExpr *message, uint8_t *out); size_t pg_query__convert_rowtype_expr__pack_to_buffer (const PgQuery__ConvertRowtypeExpr *message, ProtobufCBuffer *buffer); PgQuery__ConvertRowtypeExpr * pg_query__convert_rowtype_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__convert_rowtype_expr__free_unpacked (PgQuery__ConvertRowtypeExpr *message, ProtobufCAllocator *allocator); /* PgQuery__CollateExpr methods */ void pg_query__collate_expr__init (PgQuery__CollateExpr *message); size_t pg_query__collate_expr__get_packed_size (const PgQuery__CollateExpr *message); size_t pg_query__collate_expr__pack (const PgQuery__CollateExpr *message, uint8_t *out); size_t pg_query__collate_expr__pack_to_buffer (const PgQuery__CollateExpr *message, ProtobufCBuffer *buffer); PgQuery__CollateExpr * pg_query__collate_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__collate_expr__free_unpacked (PgQuery__CollateExpr *message, ProtobufCAllocator *allocator); /* PgQuery__CaseExpr methods */ void pg_query__case_expr__init (PgQuery__CaseExpr *message); size_t pg_query__case_expr__get_packed_size (const PgQuery__CaseExpr *message); size_t pg_query__case_expr__pack (const PgQuery__CaseExpr *message, uint8_t *out); size_t pg_query__case_expr__pack_to_buffer (const PgQuery__CaseExpr *message, ProtobufCBuffer *buffer); PgQuery__CaseExpr * pg_query__case_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__case_expr__free_unpacked (PgQuery__CaseExpr *message, ProtobufCAllocator *allocator); /* PgQuery__CaseWhen methods */ void pg_query__case_when__init (PgQuery__CaseWhen *message); size_t pg_query__case_when__get_packed_size (const PgQuery__CaseWhen *message); size_t pg_query__case_when__pack (const PgQuery__CaseWhen *message, uint8_t *out); size_t pg_query__case_when__pack_to_buffer (const PgQuery__CaseWhen *message, ProtobufCBuffer *buffer); PgQuery__CaseWhen * pg_query__case_when__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__case_when__free_unpacked (PgQuery__CaseWhen *message, ProtobufCAllocator *allocator); /* PgQuery__CaseTestExpr methods */ void pg_query__case_test_expr__init (PgQuery__CaseTestExpr *message); size_t pg_query__case_test_expr__get_packed_size (const PgQuery__CaseTestExpr *message); size_t pg_query__case_test_expr__pack (const PgQuery__CaseTestExpr *message, uint8_t *out); size_t pg_query__case_test_expr__pack_to_buffer (const PgQuery__CaseTestExpr *message, ProtobufCBuffer *buffer); PgQuery__CaseTestExpr * pg_query__case_test_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__case_test_expr__free_unpacked (PgQuery__CaseTestExpr *message, ProtobufCAllocator *allocator); /* PgQuery__ArrayExpr methods */ void pg_query__array_expr__init (PgQuery__ArrayExpr *message); size_t pg_query__array_expr__get_packed_size (const PgQuery__ArrayExpr *message); size_t pg_query__array_expr__pack (const PgQuery__ArrayExpr *message, uint8_t *out); size_t pg_query__array_expr__pack_to_buffer (const PgQuery__ArrayExpr *message, ProtobufCBuffer *buffer); PgQuery__ArrayExpr * pg_query__array_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__array_expr__free_unpacked (PgQuery__ArrayExpr *message, ProtobufCAllocator *allocator); /* PgQuery__RowExpr methods */ void pg_query__row_expr__init (PgQuery__RowExpr *message); size_t pg_query__row_expr__get_packed_size (const PgQuery__RowExpr *message); size_t pg_query__row_expr__pack (const PgQuery__RowExpr *message, uint8_t *out); size_t pg_query__row_expr__pack_to_buffer (const PgQuery__RowExpr *message, ProtobufCBuffer *buffer); PgQuery__RowExpr * pg_query__row_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__row_expr__free_unpacked (PgQuery__RowExpr *message, ProtobufCAllocator *allocator); /* PgQuery__RowCompareExpr methods */ void pg_query__row_compare_expr__init (PgQuery__RowCompareExpr *message); size_t pg_query__row_compare_expr__get_packed_size (const PgQuery__RowCompareExpr *message); size_t pg_query__row_compare_expr__pack (const PgQuery__RowCompareExpr *message, uint8_t *out); size_t pg_query__row_compare_expr__pack_to_buffer (const PgQuery__RowCompareExpr *message, ProtobufCBuffer *buffer); PgQuery__RowCompareExpr * pg_query__row_compare_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__row_compare_expr__free_unpacked (PgQuery__RowCompareExpr *message, ProtobufCAllocator *allocator); /* PgQuery__CoalesceExpr methods */ void pg_query__coalesce_expr__init (PgQuery__CoalesceExpr *message); size_t pg_query__coalesce_expr__get_packed_size (const PgQuery__CoalesceExpr *message); size_t pg_query__coalesce_expr__pack (const PgQuery__CoalesceExpr *message, uint8_t *out); size_t pg_query__coalesce_expr__pack_to_buffer (const PgQuery__CoalesceExpr *message, ProtobufCBuffer *buffer); PgQuery__CoalesceExpr * pg_query__coalesce_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__coalesce_expr__free_unpacked (PgQuery__CoalesceExpr *message, ProtobufCAllocator *allocator); /* PgQuery__MinMaxExpr methods */ void pg_query__min_max_expr__init (PgQuery__MinMaxExpr *message); size_t pg_query__min_max_expr__get_packed_size (const PgQuery__MinMaxExpr *message); size_t pg_query__min_max_expr__pack (const PgQuery__MinMaxExpr *message, uint8_t *out); size_t pg_query__min_max_expr__pack_to_buffer (const PgQuery__MinMaxExpr *message, ProtobufCBuffer *buffer); PgQuery__MinMaxExpr * pg_query__min_max_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__min_max_expr__free_unpacked (PgQuery__MinMaxExpr *message, ProtobufCAllocator *allocator); /* PgQuery__SQLValueFunction methods */ void pg_query__sqlvalue_function__init (PgQuery__SQLValueFunction *message); size_t pg_query__sqlvalue_function__get_packed_size (const PgQuery__SQLValueFunction *message); size_t pg_query__sqlvalue_function__pack (const PgQuery__SQLValueFunction *message, uint8_t *out); size_t pg_query__sqlvalue_function__pack_to_buffer (const PgQuery__SQLValueFunction *message, ProtobufCBuffer *buffer); PgQuery__SQLValueFunction * pg_query__sqlvalue_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sqlvalue_function__free_unpacked (PgQuery__SQLValueFunction *message, ProtobufCAllocator *allocator); /* PgQuery__XmlExpr methods */ void pg_query__xml_expr__init (PgQuery__XmlExpr *message); size_t pg_query__xml_expr__get_packed_size (const PgQuery__XmlExpr *message); size_t pg_query__xml_expr__pack (const PgQuery__XmlExpr *message, uint8_t *out); size_t pg_query__xml_expr__pack_to_buffer (const PgQuery__XmlExpr *message, ProtobufCBuffer *buffer); PgQuery__XmlExpr * pg_query__xml_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__xml_expr__free_unpacked (PgQuery__XmlExpr *message, ProtobufCAllocator *allocator); /* PgQuery__NullTest methods */ void pg_query__null_test__init (PgQuery__NullTest *message); size_t pg_query__null_test__get_packed_size (const PgQuery__NullTest *message); size_t pg_query__null_test__pack (const PgQuery__NullTest *message, uint8_t *out); size_t pg_query__null_test__pack_to_buffer (const PgQuery__NullTest *message, ProtobufCBuffer *buffer); PgQuery__NullTest * pg_query__null_test__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__null_test__free_unpacked (PgQuery__NullTest *message, ProtobufCAllocator *allocator); /* PgQuery__BooleanTest methods */ void pg_query__boolean_test__init (PgQuery__BooleanTest *message); size_t pg_query__boolean_test__get_packed_size (const PgQuery__BooleanTest *message); size_t pg_query__boolean_test__pack (const PgQuery__BooleanTest *message, uint8_t *out); size_t pg_query__boolean_test__pack_to_buffer (const PgQuery__BooleanTest *message, ProtobufCBuffer *buffer); PgQuery__BooleanTest * pg_query__boolean_test__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__boolean_test__free_unpacked (PgQuery__BooleanTest *message, ProtobufCAllocator *allocator); /* PgQuery__CoerceToDomain methods */ void pg_query__coerce_to_domain__init (PgQuery__CoerceToDomain *message); size_t pg_query__coerce_to_domain__get_packed_size (const PgQuery__CoerceToDomain *message); size_t pg_query__coerce_to_domain__pack (const PgQuery__CoerceToDomain *message, uint8_t *out); size_t pg_query__coerce_to_domain__pack_to_buffer (const PgQuery__CoerceToDomain *message, ProtobufCBuffer *buffer); PgQuery__CoerceToDomain * pg_query__coerce_to_domain__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__coerce_to_domain__free_unpacked (PgQuery__CoerceToDomain *message, ProtobufCAllocator *allocator); /* PgQuery__CoerceToDomainValue methods */ void pg_query__coerce_to_domain_value__init (PgQuery__CoerceToDomainValue *message); size_t pg_query__coerce_to_domain_value__get_packed_size (const PgQuery__CoerceToDomainValue *message); size_t pg_query__coerce_to_domain_value__pack (const PgQuery__CoerceToDomainValue *message, uint8_t *out); size_t pg_query__coerce_to_domain_value__pack_to_buffer (const PgQuery__CoerceToDomainValue *message, ProtobufCBuffer *buffer); PgQuery__CoerceToDomainValue * pg_query__coerce_to_domain_value__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__coerce_to_domain_value__free_unpacked (PgQuery__CoerceToDomainValue *message, ProtobufCAllocator *allocator); /* PgQuery__SetToDefault methods */ void pg_query__set_to_default__init (PgQuery__SetToDefault *message); size_t pg_query__set_to_default__get_packed_size (const PgQuery__SetToDefault *message); size_t pg_query__set_to_default__pack (const PgQuery__SetToDefault *message, uint8_t *out); size_t pg_query__set_to_default__pack_to_buffer (const PgQuery__SetToDefault *message, ProtobufCBuffer *buffer); PgQuery__SetToDefault * pg_query__set_to_default__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__set_to_default__free_unpacked (PgQuery__SetToDefault *message, ProtobufCAllocator *allocator); /* PgQuery__CurrentOfExpr methods */ void pg_query__current_of_expr__init (PgQuery__CurrentOfExpr *message); size_t pg_query__current_of_expr__get_packed_size (const PgQuery__CurrentOfExpr *message); size_t pg_query__current_of_expr__pack (const PgQuery__CurrentOfExpr *message, uint8_t *out); size_t pg_query__current_of_expr__pack_to_buffer (const PgQuery__CurrentOfExpr *message, ProtobufCBuffer *buffer); PgQuery__CurrentOfExpr * pg_query__current_of_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__current_of_expr__free_unpacked (PgQuery__CurrentOfExpr *message, ProtobufCAllocator *allocator); /* PgQuery__NextValueExpr methods */ void pg_query__next_value_expr__init (PgQuery__NextValueExpr *message); size_t pg_query__next_value_expr__get_packed_size (const PgQuery__NextValueExpr *message); size_t pg_query__next_value_expr__pack (const PgQuery__NextValueExpr *message, uint8_t *out); size_t pg_query__next_value_expr__pack_to_buffer (const PgQuery__NextValueExpr *message, ProtobufCBuffer *buffer); PgQuery__NextValueExpr * pg_query__next_value_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__next_value_expr__free_unpacked (PgQuery__NextValueExpr *message, ProtobufCAllocator *allocator); /* PgQuery__InferenceElem methods */ void pg_query__inference_elem__init (PgQuery__InferenceElem *message); size_t pg_query__inference_elem__get_packed_size (const PgQuery__InferenceElem *message); size_t pg_query__inference_elem__pack (const PgQuery__InferenceElem *message, uint8_t *out); size_t pg_query__inference_elem__pack_to_buffer (const PgQuery__InferenceElem *message, ProtobufCBuffer *buffer); PgQuery__InferenceElem * pg_query__inference_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__inference_elem__free_unpacked (PgQuery__InferenceElem *message, ProtobufCAllocator *allocator); /* PgQuery__TargetEntry methods */ void pg_query__target_entry__init (PgQuery__TargetEntry *message); size_t pg_query__target_entry__get_packed_size (const PgQuery__TargetEntry *message); size_t pg_query__target_entry__pack (const PgQuery__TargetEntry *message, uint8_t *out); size_t pg_query__target_entry__pack_to_buffer (const PgQuery__TargetEntry *message, ProtobufCBuffer *buffer); PgQuery__TargetEntry * pg_query__target_entry__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__target_entry__free_unpacked (PgQuery__TargetEntry *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTblRef methods */ void pg_query__range_tbl_ref__init (PgQuery__RangeTblRef *message); size_t pg_query__range_tbl_ref__get_packed_size (const PgQuery__RangeTblRef *message); size_t pg_query__range_tbl_ref__pack (const PgQuery__RangeTblRef *message, uint8_t *out); size_t pg_query__range_tbl_ref__pack_to_buffer (const PgQuery__RangeTblRef *message, ProtobufCBuffer *buffer); PgQuery__RangeTblRef * pg_query__range_tbl_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_tbl_ref__free_unpacked (PgQuery__RangeTblRef *message, ProtobufCAllocator *allocator); /* PgQuery__JoinExpr methods */ void pg_query__join_expr__init (PgQuery__JoinExpr *message); size_t pg_query__join_expr__get_packed_size (const PgQuery__JoinExpr *message); size_t pg_query__join_expr__pack (const PgQuery__JoinExpr *message, uint8_t *out); size_t pg_query__join_expr__pack_to_buffer (const PgQuery__JoinExpr *message, ProtobufCBuffer *buffer); PgQuery__JoinExpr * pg_query__join_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__join_expr__free_unpacked (PgQuery__JoinExpr *message, ProtobufCAllocator *allocator); /* PgQuery__FromExpr methods */ void pg_query__from_expr__init (PgQuery__FromExpr *message); size_t pg_query__from_expr__get_packed_size (const PgQuery__FromExpr *message); size_t pg_query__from_expr__pack (const PgQuery__FromExpr *message, uint8_t *out); size_t pg_query__from_expr__pack_to_buffer (const PgQuery__FromExpr *message, ProtobufCBuffer *buffer); PgQuery__FromExpr * pg_query__from_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__from_expr__free_unpacked (PgQuery__FromExpr *message, ProtobufCAllocator *allocator); /* PgQuery__OnConflictExpr methods */ void pg_query__on_conflict_expr__init (PgQuery__OnConflictExpr *message); size_t pg_query__on_conflict_expr__get_packed_size (const PgQuery__OnConflictExpr *message); size_t pg_query__on_conflict_expr__pack (const PgQuery__OnConflictExpr *message, uint8_t *out); size_t pg_query__on_conflict_expr__pack_to_buffer (const PgQuery__OnConflictExpr *message, ProtobufCBuffer *buffer); PgQuery__OnConflictExpr * pg_query__on_conflict_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__on_conflict_expr__free_unpacked (PgQuery__OnConflictExpr *message, ProtobufCAllocator *allocator); /* PgQuery__IntoClause methods */ void pg_query__into_clause__init (PgQuery__IntoClause *message); size_t pg_query__into_clause__get_packed_size (const PgQuery__IntoClause *message); size_t pg_query__into_clause__pack (const PgQuery__IntoClause *message, uint8_t *out); size_t pg_query__into_clause__pack_to_buffer (const PgQuery__IntoClause *message, ProtobufCBuffer *buffer); PgQuery__IntoClause * pg_query__into_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__into_clause__free_unpacked (PgQuery__IntoClause *message, ProtobufCAllocator *allocator); /* PgQuery__RawStmt methods */ void pg_query__raw_stmt__init (PgQuery__RawStmt *message); size_t pg_query__raw_stmt__get_packed_size (const PgQuery__RawStmt *message); size_t pg_query__raw_stmt__pack (const PgQuery__RawStmt *message, uint8_t *out); size_t pg_query__raw_stmt__pack_to_buffer (const PgQuery__RawStmt *message, ProtobufCBuffer *buffer); PgQuery__RawStmt * pg_query__raw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__raw_stmt__free_unpacked (PgQuery__RawStmt *message, ProtobufCAllocator *allocator); /* PgQuery__Query methods */ void pg_query__query__init (PgQuery__Query *message); size_t pg_query__query__get_packed_size (const PgQuery__Query *message); size_t pg_query__query__pack (const PgQuery__Query *message, uint8_t *out); size_t pg_query__query__pack_to_buffer (const PgQuery__Query *message, ProtobufCBuffer *buffer); PgQuery__Query * pg_query__query__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__query__free_unpacked (PgQuery__Query *message, ProtobufCAllocator *allocator); /* PgQuery__InsertStmt methods */ void pg_query__insert_stmt__init (PgQuery__InsertStmt *message); size_t pg_query__insert_stmt__get_packed_size (const PgQuery__InsertStmt *message); size_t pg_query__insert_stmt__pack (const PgQuery__InsertStmt *message, uint8_t *out); size_t pg_query__insert_stmt__pack_to_buffer (const PgQuery__InsertStmt *message, ProtobufCBuffer *buffer); PgQuery__InsertStmt * pg_query__insert_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__insert_stmt__free_unpacked (PgQuery__InsertStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DeleteStmt methods */ void pg_query__delete_stmt__init (PgQuery__DeleteStmt *message); size_t pg_query__delete_stmt__get_packed_size (const PgQuery__DeleteStmt *message); size_t pg_query__delete_stmt__pack (const PgQuery__DeleteStmt *message, uint8_t *out); size_t pg_query__delete_stmt__pack_to_buffer (const PgQuery__DeleteStmt *message, ProtobufCBuffer *buffer); PgQuery__DeleteStmt * pg_query__delete_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__delete_stmt__free_unpacked (PgQuery__DeleteStmt *message, ProtobufCAllocator *allocator); /* PgQuery__UpdateStmt methods */ void pg_query__update_stmt__init (PgQuery__UpdateStmt *message); size_t pg_query__update_stmt__get_packed_size (const PgQuery__UpdateStmt *message); size_t pg_query__update_stmt__pack (const PgQuery__UpdateStmt *message, uint8_t *out); size_t pg_query__update_stmt__pack_to_buffer (const PgQuery__UpdateStmt *message, ProtobufCBuffer *buffer); PgQuery__UpdateStmt * pg_query__update_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__update_stmt__free_unpacked (PgQuery__UpdateStmt *message, ProtobufCAllocator *allocator); /* PgQuery__SelectStmt methods */ void pg_query__select_stmt__init (PgQuery__SelectStmt *message); size_t pg_query__select_stmt__get_packed_size (const PgQuery__SelectStmt *message); size_t pg_query__select_stmt__pack (const PgQuery__SelectStmt *message, uint8_t *out); size_t pg_query__select_stmt__pack_to_buffer (const PgQuery__SelectStmt *message, ProtobufCBuffer *buffer); PgQuery__SelectStmt * pg_query__select_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__select_stmt__free_unpacked (PgQuery__SelectStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTableStmt methods */ void pg_query__alter_table_stmt__init (PgQuery__AlterTableStmt *message); size_t pg_query__alter_table_stmt__get_packed_size (const PgQuery__AlterTableStmt *message); size_t pg_query__alter_table_stmt__pack (const PgQuery__AlterTableStmt *message, uint8_t *out); size_t pg_query__alter_table_stmt__pack_to_buffer (const PgQuery__AlterTableStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTableStmt * pg_query__alter_table_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_table_stmt__free_unpacked (PgQuery__AlterTableStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTableCmd methods */ void pg_query__alter_table_cmd__init (PgQuery__AlterTableCmd *message); size_t pg_query__alter_table_cmd__get_packed_size (const PgQuery__AlterTableCmd *message); size_t pg_query__alter_table_cmd__pack (const PgQuery__AlterTableCmd *message, uint8_t *out); size_t pg_query__alter_table_cmd__pack_to_buffer (const PgQuery__AlterTableCmd *message, ProtobufCBuffer *buffer); PgQuery__AlterTableCmd * pg_query__alter_table_cmd__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_table_cmd__free_unpacked (PgQuery__AlterTableCmd *message, ProtobufCAllocator *allocator); /* PgQuery__AlterDomainStmt methods */ void pg_query__alter_domain_stmt__init (PgQuery__AlterDomainStmt *message); size_t pg_query__alter_domain_stmt__get_packed_size (const PgQuery__AlterDomainStmt *message); size_t pg_query__alter_domain_stmt__pack (const PgQuery__AlterDomainStmt *message, uint8_t *out); size_t pg_query__alter_domain_stmt__pack_to_buffer (const PgQuery__AlterDomainStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterDomainStmt * pg_query__alter_domain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_domain_stmt__free_unpacked (PgQuery__AlterDomainStmt *message, ProtobufCAllocator *allocator); /* PgQuery__SetOperationStmt methods */ void pg_query__set_operation_stmt__init (PgQuery__SetOperationStmt *message); size_t pg_query__set_operation_stmt__get_packed_size (const PgQuery__SetOperationStmt *message); size_t pg_query__set_operation_stmt__pack (const PgQuery__SetOperationStmt *message, uint8_t *out); size_t pg_query__set_operation_stmt__pack_to_buffer (const PgQuery__SetOperationStmt *message, ProtobufCBuffer *buffer); PgQuery__SetOperationStmt * pg_query__set_operation_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__set_operation_stmt__free_unpacked (PgQuery__SetOperationStmt *message, ProtobufCAllocator *allocator); /* PgQuery__GrantStmt methods */ void pg_query__grant_stmt__init (PgQuery__GrantStmt *message); size_t pg_query__grant_stmt__get_packed_size (const PgQuery__GrantStmt *message); size_t pg_query__grant_stmt__pack (const PgQuery__GrantStmt *message, uint8_t *out); size_t pg_query__grant_stmt__pack_to_buffer (const PgQuery__GrantStmt *message, ProtobufCBuffer *buffer); PgQuery__GrantStmt * pg_query__grant_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__grant_stmt__free_unpacked (PgQuery__GrantStmt *message, ProtobufCAllocator *allocator); /* PgQuery__GrantRoleStmt methods */ void pg_query__grant_role_stmt__init (PgQuery__GrantRoleStmt *message); size_t pg_query__grant_role_stmt__get_packed_size (const PgQuery__GrantRoleStmt *message); size_t pg_query__grant_role_stmt__pack (const PgQuery__GrantRoleStmt *message, uint8_t *out); size_t pg_query__grant_role_stmt__pack_to_buffer (const PgQuery__GrantRoleStmt *message, ProtobufCBuffer *buffer); PgQuery__GrantRoleStmt * pg_query__grant_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__grant_role_stmt__free_unpacked (PgQuery__GrantRoleStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterDefaultPrivilegesStmt methods */ void pg_query__alter_default_privileges_stmt__init (PgQuery__AlterDefaultPrivilegesStmt *message); size_t pg_query__alter_default_privileges_stmt__get_packed_size (const PgQuery__AlterDefaultPrivilegesStmt *message); size_t pg_query__alter_default_privileges_stmt__pack (const PgQuery__AlterDefaultPrivilegesStmt *message, uint8_t *out); size_t pg_query__alter_default_privileges_stmt__pack_to_buffer (const PgQuery__AlterDefaultPrivilegesStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterDefaultPrivilegesStmt * pg_query__alter_default_privileges_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_default_privileges_stmt__free_unpacked (PgQuery__AlterDefaultPrivilegesStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ClosePortalStmt methods */ void pg_query__close_portal_stmt__init (PgQuery__ClosePortalStmt *message); size_t pg_query__close_portal_stmt__get_packed_size (const PgQuery__ClosePortalStmt *message); size_t pg_query__close_portal_stmt__pack (const PgQuery__ClosePortalStmt *message, uint8_t *out); size_t pg_query__close_portal_stmt__pack_to_buffer (const PgQuery__ClosePortalStmt *message, ProtobufCBuffer *buffer); PgQuery__ClosePortalStmt * pg_query__close_portal_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__close_portal_stmt__free_unpacked (PgQuery__ClosePortalStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ClusterStmt methods */ void pg_query__cluster_stmt__init (PgQuery__ClusterStmt *message); size_t pg_query__cluster_stmt__get_packed_size (const PgQuery__ClusterStmt *message); size_t pg_query__cluster_stmt__pack (const PgQuery__ClusterStmt *message, uint8_t *out); size_t pg_query__cluster_stmt__pack_to_buffer (const PgQuery__ClusterStmt *message, ProtobufCBuffer *buffer); PgQuery__ClusterStmt * pg_query__cluster_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__cluster_stmt__free_unpacked (PgQuery__ClusterStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CopyStmt methods */ void pg_query__copy_stmt__init (PgQuery__CopyStmt *message); size_t pg_query__copy_stmt__get_packed_size (const PgQuery__CopyStmt *message); size_t pg_query__copy_stmt__pack (const PgQuery__CopyStmt *message, uint8_t *out); size_t pg_query__copy_stmt__pack_to_buffer (const PgQuery__CopyStmt *message, ProtobufCBuffer *buffer); PgQuery__CopyStmt * pg_query__copy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__copy_stmt__free_unpacked (PgQuery__CopyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateStmt methods */ void pg_query__create_stmt__init (PgQuery__CreateStmt *message); size_t pg_query__create_stmt__get_packed_size (const PgQuery__CreateStmt *message); size_t pg_query__create_stmt__pack (const PgQuery__CreateStmt *message, uint8_t *out); size_t pg_query__create_stmt__pack_to_buffer (const PgQuery__CreateStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateStmt * pg_query__create_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_stmt__free_unpacked (PgQuery__CreateStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DefineStmt methods */ void pg_query__define_stmt__init (PgQuery__DefineStmt *message); size_t pg_query__define_stmt__get_packed_size (const PgQuery__DefineStmt *message); size_t pg_query__define_stmt__pack (const PgQuery__DefineStmt *message, uint8_t *out); size_t pg_query__define_stmt__pack_to_buffer (const PgQuery__DefineStmt *message, ProtobufCBuffer *buffer); PgQuery__DefineStmt * pg_query__define_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__define_stmt__free_unpacked (PgQuery__DefineStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropStmt methods */ void pg_query__drop_stmt__init (PgQuery__DropStmt *message); size_t pg_query__drop_stmt__get_packed_size (const PgQuery__DropStmt *message); size_t pg_query__drop_stmt__pack (const PgQuery__DropStmt *message, uint8_t *out); size_t pg_query__drop_stmt__pack_to_buffer (const PgQuery__DropStmt *message, ProtobufCBuffer *buffer); PgQuery__DropStmt * pg_query__drop_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_stmt__free_unpacked (PgQuery__DropStmt *message, ProtobufCAllocator *allocator); /* PgQuery__TruncateStmt methods */ void pg_query__truncate_stmt__init (PgQuery__TruncateStmt *message); size_t pg_query__truncate_stmt__get_packed_size (const PgQuery__TruncateStmt *message); size_t pg_query__truncate_stmt__pack (const PgQuery__TruncateStmt *message, uint8_t *out); size_t pg_query__truncate_stmt__pack_to_buffer (const PgQuery__TruncateStmt *message, ProtobufCBuffer *buffer); PgQuery__TruncateStmt * pg_query__truncate_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__truncate_stmt__free_unpacked (PgQuery__TruncateStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CommentStmt methods */ void pg_query__comment_stmt__init (PgQuery__CommentStmt *message); size_t pg_query__comment_stmt__get_packed_size (const PgQuery__CommentStmt *message); size_t pg_query__comment_stmt__pack (const PgQuery__CommentStmt *message, uint8_t *out); size_t pg_query__comment_stmt__pack_to_buffer (const PgQuery__CommentStmt *message, ProtobufCBuffer *buffer); PgQuery__CommentStmt * pg_query__comment_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__comment_stmt__free_unpacked (PgQuery__CommentStmt *message, ProtobufCAllocator *allocator); /* PgQuery__FetchStmt methods */ void pg_query__fetch_stmt__init (PgQuery__FetchStmt *message); size_t pg_query__fetch_stmt__get_packed_size (const PgQuery__FetchStmt *message); size_t pg_query__fetch_stmt__pack (const PgQuery__FetchStmt *message, uint8_t *out); size_t pg_query__fetch_stmt__pack_to_buffer (const PgQuery__FetchStmt *message, ProtobufCBuffer *buffer); PgQuery__FetchStmt * pg_query__fetch_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__fetch_stmt__free_unpacked (PgQuery__FetchStmt *message, ProtobufCAllocator *allocator); /* PgQuery__IndexStmt methods */ void pg_query__index_stmt__init (PgQuery__IndexStmt *message); size_t pg_query__index_stmt__get_packed_size (const PgQuery__IndexStmt *message); size_t pg_query__index_stmt__pack (const PgQuery__IndexStmt *message, uint8_t *out); size_t pg_query__index_stmt__pack_to_buffer (const PgQuery__IndexStmt *message, ProtobufCBuffer *buffer); PgQuery__IndexStmt * pg_query__index_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__index_stmt__free_unpacked (PgQuery__IndexStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateFunctionStmt methods */ void pg_query__create_function_stmt__init (PgQuery__CreateFunctionStmt *message); size_t pg_query__create_function_stmt__get_packed_size (const PgQuery__CreateFunctionStmt *message); size_t pg_query__create_function_stmt__pack (const PgQuery__CreateFunctionStmt *message, uint8_t *out); size_t pg_query__create_function_stmt__pack_to_buffer (const PgQuery__CreateFunctionStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateFunctionStmt * pg_query__create_function_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_function_stmt__free_unpacked (PgQuery__CreateFunctionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterFunctionStmt methods */ void pg_query__alter_function_stmt__init (PgQuery__AlterFunctionStmt *message); size_t pg_query__alter_function_stmt__get_packed_size (const PgQuery__AlterFunctionStmt *message); size_t pg_query__alter_function_stmt__pack (const PgQuery__AlterFunctionStmt *message, uint8_t *out); size_t pg_query__alter_function_stmt__pack_to_buffer (const PgQuery__AlterFunctionStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterFunctionStmt * pg_query__alter_function_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_function_stmt__free_unpacked (PgQuery__AlterFunctionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DoStmt methods */ void pg_query__do_stmt__init (PgQuery__DoStmt *message); size_t pg_query__do_stmt__get_packed_size (const PgQuery__DoStmt *message); size_t pg_query__do_stmt__pack (const PgQuery__DoStmt *message, uint8_t *out); size_t pg_query__do_stmt__pack_to_buffer (const PgQuery__DoStmt *message, ProtobufCBuffer *buffer); PgQuery__DoStmt * pg_query__do_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__do_stmt__free_unpacked (PgQuery__DoStmt *message, ProtobufCAllocator *allocator); /* PgQuery__RenameStmt methods */ void pg_query__rename_stmt__init (PgQuery__RenameStmt *message); size_t pg_query__rename_stmt__get_packed_size (const PgQuery__RenameStmt *message); size_t pg_query__rename_stmt__pack (const PgQuery__RenameStmt *message, uint8_t *out); size_t pg_query__rename_stmt__pack_to_buffer (const PgQuery__RenameStmt *message, ProtobufCBuffer *buffer); PgQuery__RenameStmt * pg_query__rename_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__rename_stmt__free_unpacked (PgQuery__RenameStmt *message, ProtobufCAllocator *allocator); /* PgQuery__RuleStmt methods */ void pg_query__rule_stmt__init (PgQuery__RuleStmt *message); size_t pg_query__rule_stmt__get_packed_size (const PgQuery__RuleStmt *message); size_t pg_query__rule_stmt__pack (const PgQuery__RuleStmt *message, uint8_t *out); size_t pg_query__rule_stmt__pack_to_buffer (const PgQuery__RuleStmt *message, ProtobufCBuffer *buffer); PgQuery__RuleStmt * pg_query__rule_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__rule_stmt__free_unpacked (PgQuery__RuleStmt *message, ProtobufCAllocator *allocator); /* PgQuery__NotifyStmt methods */ void pg_query__notify_stmt__init (PgQuery__NotifyStmt *message); size_t pg_query__notify_stmt__get_packed_size (const PgQuery__NotifyStmt *message); size_t pg_query__notify_stmt__pack (const PgQuery__NotifyStmt *message, uint8_t *out); size_t pg_query__notify_stmt__pack_to_buffer (const PgQuery__NotifyStmt *message, ProtobufCBuffer *buffer); PgQuery__NotifyStmt * pg_query__notify_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__notify_stmt__free_unpacked (PgQuery__NotifyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ListenStmt methods */ void pg_query__listen_stmt__init (PgQuery__ListenStmt *message); size_t pg_query__listen_stmt__get_packed_size (const PgQuery__ListenStmt *message); size_t pg_query__listen_stmt__pack (const PgQuery__ListenStmt *message, uint8_t *out); size_t pg_query__listen_stmt__pack_to_buffer (const PgQuery__ListenStmt *message, ProtobufCBuffer *buffer); PgQuery__ListenStmt * pg_query__listen_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__listen_stmt__free_unpacked (PgQuery__ListenStmt *message, ProtobufCAllocator *allocator); /* PgQuery__UnlistenStmt methods */ void pg_query__unlisten_stmt__init (PgQuery__UnlistenStmt *message); size_t pg_query__unlisten_stmt__get_packed_size (const PgQuery__UnlistenStmt *message); size_t pg_query__unlisten_stmt__pack (const PgQuery__UnlistenStmt *message, uint8_t *out); size_t pg_query__unlisten_stmt__pack_to_buffer (const PgQuery__UnlistenStmt *message, ProtobufCBuffer *buffer); PgQuery__UnlistenStmt * pg_query__unlisten_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__unlisten_stmt__free_unpacked (PgQuery__UnlistenStmt *message, ProtobufCAllocator *allocator); /* PgQuery__TransactionStmt methods */ void pg_query__transaction_stmt__init (PgQuery__TransactionStmt *message); size_t pg_query__transaction_stmt__get_packed_size (const PgQuery__TransactionStmt *message); size_t pg_query__transaction_stmt__pack (const PgQuery__TransactionStmt *message, uint8_t *out); size_t pg_query__transaction_stmt__pack_to_buffer (const PgQuery__TransactionStmt *message, ProtobufCBuffer *buffer); PgQuery__TransactionStmt * pg_query__transaction_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__transaction_stmt__free_unpacked (PgQuery__TransactionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ViewStmt methods */ void pg_query__view_stmt__init (PgQuery__ViewStmt *message); size_t pg_query__view_stmt__get_packed_size (const PgQuery__ViewStmt *message); size_t pg_query__view_stmt__pack (const PgQuery__ViewStmt *message, uint8_t *out); size_t pg_query__view_stmt__pack_to_buffer (const PgQuery__ViewStmt *message, ProtobufCBuffer *buffer); PgQuery__ViewStmt * pg_query__view_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__view_stmt__free_unpacked (PgQuery__ViewStmt *message, ProtobufCAllocator *allocator); /* PgQuery__LoadStmt methods */ void pg_query__load_stmt__init (PgQuery__LoadStmt *message); size_t pg_query__load_stmt__get_packed_size (const PgQuery__LoadStmt *message); size_t pg_query__load_stmt__pack (const PgQuery__LoadStmt *message, uint8_t *out); size_t pg_query__load_stmt__pack_to_buffer (const PgQuery__LoadStmt *message, ProtobufCBuffer *buffer); PgQuery__LoadStmt * pg_query__load_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__load_stmt__free_unpacked (PgQuery__LoadStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateDomainStmt methods */ void pg_query__create_domain_stmt__init (PgQuery__CreateDomainStmt *message); size_t pg_query__create_domain_stmt__get_packed_size (const PgQuery__CreateDomainStmt *message); size_t pg_query__create_domain_stmt__pack (const PgQuery__CreateDomainStmt *message, uint8_t *out); size_t pg_query__create_domain_stmt__pack_to_buffer (const PgQuery__CreateDomainStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateDomainStmt * pg_query__create_domain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_domain_stmt__free_unpacked (PgQuery__CreateDomainStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreatedbStmt methods */ void pg_query__createdb_stmt__init (PgQuery__CreatedbStmt *message); size_t pg_query__createdb_stmt__get_packed_size (const PgQuery__CreatedbStmt *message); size_t pg_query__createdb_stmt__pack (const PgQuery__CreatedbStmt *message, uint8_t *out); size_t pg_query__createdb_stmt__pack_to_buffer (const PgQuery__CreatedbStmt *message, ProtobufCBuffer *buffer); PgQuery__CreatedbStmt * pg_query__createdb_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__createdb_stmt__free_unpacked (PgQuery__CreatedbStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropdbStmt methods */ void pg_query__dropdb_stmt__init (PgQuery__DropdbStmt *message); size_t pg_query__dropdb_stmt__get_packed_size (const PgQuery__DropdbStmt *message); size_t pg_query__dropdb_stmt__pack (const PgQuery__DropdbStmt *message, uint8_t *out); size_t pg_query__dropdb_stmt__pack_to_buffer (const PgQuery__DropdbStmt *message, ProtobufCBuffer *buffer); PgQuery__DropdbStmt * pg_query__dropdb_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__dropdb_stmt__free_unpacked (PgQuery__DropdbStmt *message, ProtobufCAllocator *allocator); /* PgQuery__VacuumStmt methods */ void pg_query__vacuum_stmt__init (PgQuery__VacuumStmt *message); size_t pg_query__vacuum_stmt__get_packed_size (const PgQuery__VacuumStmt *message); size_t pg_query__vacuum_stmt__pack (const PgQuery__VacuumStmt *message, uint8_t *out); size_t pg_query__vacuum_stmt__pack_to_buffer (const PgQuery__VacuumStmt *message, ProtobufCBuffer *buffer); PgQuery__VacuumStmt * pg_query__vacuum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__vacuum_stmt__free_unpacked (PgQuery__VacuumStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ExplainStmt methods */ void pg_query__explain_stmt__init (PgQuery__ExplainStmt *message); size_t pg_query__explain_stmt__get_packed_size (const PgQuery__ExplainStmt *message); size_t pg_query__explain_stmt__pack (const PgQuery__ExplainStmt *message, uint8_t *out); size_t pg_query__explain_stmt__pack_to_buffer (const PgQuery__ExplainStmt *message, ProtobufCBuffer *buffer); PgQuery__ExplainStmt * pg_query__explain_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__explain_stmt__free_unpacked (PgQuery__ExplainStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateTableAsStmt methods */ void pg_query__create_table_as_stmt__init (PgQuery__CreateTableAsStmt *message); size_t pg_query__create_table_as_stmt__get_packed_size (const PgQuery__CreateTableAsStmt *message); size_t pg_query__create_table_as_stmt__pack (const PgQuery__CreateTableAsStmt *message, uint8_t *out); size_t pg_query__create_table_as_stmt__pack_to_buffer (const PgQuery__CreateTableAsStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateTableAsStmt * pg_query__create_table_as_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_table_as_stmt__free_unpacked (PgQuery__CreateTableAsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateSeqStmt methods */ void pg_query__create_seq_stmt__init (PgQuery__CreateSeqStmt *message); size_t pg_query__create_seq_stmt__get_packed_size (const PgQuery__CreateSeqStmt *message); size_t pg_query__create_seq_stmt__pack (const PgQuery__CreateSeqStmt *message, uint8_t *out); size_t pg_query__create_seq_stmt__pack_to_buffer (const PgQuery__CreateSeqStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateSeqStmt * pg_query__create_seq_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_seq_stmt__free_unpacked (PgQuery__CreateSeqStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterSeqStmt methods */ void pg_query__alter_seq_stmt__init (PgQuery__AlterSeqStmt *message); size_t pg_query__alter_seq_stmt__get_packed_size (const PgQuery__AlterSeqStmt *message); size_t pg_query__alter_seq_stmt__pack (const PgQuery__AlterSeqStmt *message, uint8_t *out); size_t pg_query__alter_seq_stmt__pack_to_buffer (const PgQuery__AlterSeqStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterSeqStmt * pg_query__alter_seq_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_seq_stmt__free_unpacked (PgQuery__AlterSeqStmt *message, ProtobufCAllocator *allocator); /* PgQuery__VariableSetStmt methods */ void pg_query__variable_set_stmt__init (PgQuery__VariableSetStmt *message); size_t pg_query__variable_set_stmt__get_packed_size (const PgQuery__VariableSetStmt *message); size_t pg_query__variable_set_stmt__pack (const PgQuery__VariableSetStmt *message, uint8_t *out); size_t pg_query__variable_set_stmt__pack_to_buffer (const PgQuery__VariableSetStmt *message, ProtobufCBuffer *buffer); PgQuery__VariableSetStmt * pg_query__variable_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__variable_set_stmt__free_unpacked (PgQuery__VariableSetStmt *message, ProtobufCAllocator *allocator); /* PgQuery__VariableShowStmt methods */ void pg_query__variable_show_stmt__init (PgQuery__VariableShowStmt *message); size_t pg_query__variable_show_stmt__get_packed_size (const PgQuery__VariableShowStmt *message); size_t pg_query__variable_show_stmt__pack (const PgQuery__VariableShowStmt *message, uint8_t *out); size_t pg_query__variable_show_stmt__pack_to_buffer (const PgQuery__VariableShowStmt *message, ProtobufCBuffer *buffer); PgQuery__VariableShowStmt * pg_query__variable_show_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__variable_show_stmt__free_unpacked (PgQuery__VariableShowStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DiscardStmt methods */ void pg_query__discard_stmt__init (PgQuery__DiscardStmt *message); size_t pg_query__discard_stmt__get_packed_size (const PgQuery__DiscardStmt *message); size_t pg_query__discard_stmt__pack (const PgQuery__DiscardStmt *message, uint8_t *out); size_t pg_query__discard_stmt__pack_to_buffer (const PgQuery__DiscardStmt *message, ProtobufCBuffer *buffer); PgQuery__DiscardStmt * pg_query__discard_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__discard_stmt__free_unpacked (PgQuery__DiscardStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateTrigStmt methods */ void pg_query__create_trig_stmt__init (PgQuery__CreateTrigStmt *message); size_t pg_query__create_trig_stmt__get_packed_size (const PgQuery__CreateTrigStmt *message); size_t pg_query__create_trig_stmt__pack (const PgQuery__CreateTrigStmt *message, uint8_t *out); size_t pg_query__create_trig_stmt__pack_to_buffer (const PgQuery__CreateTrigStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateTrigStmt * pg_query__create_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_trig_stmt__free_unpacked (PgQuery__CreateTrigStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreatePLangStmt methods */ void pg_query__create_plang_stmt__init (PgQuery__CreatePLangStmt *message); size_t pg_query__create_plang_stmt__get_packed_size (const PgQuery__CreatePLangStmt *message); size_t pg_query__create_plang_stmt__pack (const PgQuery__CreatePLangStmt *message, uint8_t *out); size_t pg_query__create_plang_stmt__pack_to_buffer (const PgQuery__CreatePLangStmt *message, ProtobufCBuffer *buffer); PgQuery__CreatePLangStmt * pg_query__create_plang_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_plang_stmt__free_unpacked (PgQuery__CreatePLangStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateRoleStmt methods */ void pg_query__create_role_stmt__init (PgQuery__CreateRoleStmt *message); size_t pg_query__create_role_stmt__get_packed_size (const PgQuery__CreateRoleStmt *message); size_t pg_query__create_role_stmt__pack (const PgQuery__CreateRoleStmt *message, uint8_t *out); size_t pg_query__create_role_stmt__pack_to_buffer (const PgQuery__CreateRoleStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateRoleStmt * pg_query__create_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_role_stmt__free_unpacked (PgQuery__CreateRoleStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterRoleStmt methods */ void pg_query__alter_role_stmt__init (PgQuery__AlterRoleStmt *message); size_t pg_query__alter_role_stmt__get_packed_size (const PgQuery__AlterRoleStmt *message); size_t pg_query__alter_role_stmt__pack (const PgQuery__AlterRoleStmt *message, uint8_t *out); size_t pg_query__alter_role_stmt__pack_to_buffer (const PgQuery__AlterRoleStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterRoleStmt * pg_query__alter_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_role_stmt__free_unpacked (PgQuery__AlterRoleStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropRoleStmt methods */ void pg_query__drop_role_stmt__init (PgQuery__DropRoleStmt *message); size_t pg_query__drop_role_stmt__get_packed_size (const PgQuery__DropRoleStmt *message); size_t pg_query__drop_role_stmt__pack (const PgQuery__DropRoleStmt *message, uint8_t *out); size_t pg_query__drop_role_stmt__pack_to_buffer (const PgQuery__DropRoleStmt *message, ProtobufCBuffer *buffer); PgQuery__DropRoleStmt * pg_query__drop_role_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_role_stmt__free_unpacked (PgQuery__DropRoleStmt *message, ProtobufCAllocator *allocator); /* PgQuery__LockStmt methods */ void pg_query__lock_stmt__init (PgQuery__LockStmt *message); size_t pg_query__lock_stmt__get_packed_size (const PgQuery__LockStmt *message); size_t pg_query__lock_stmt__pack (const PgQuery__LockStmt *message, uint8_t *out); size_t pg_query__lock_stmt__pack_to_buffer (const PgQuery__LockStmt *message, ProtobufCBuffer *buffer); PgQuery__LockStmt * pg_query__lock_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__lock_stmt__free_unpacked (PgQuery__LockStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ConstraintsSetStmt methods */ void pg_query__constraints_set_stmt__init (PgQuery__ConstraintsSetStmt *message); size_t pg_query__constraints_set_stmt__get_packed_size (const PgQuery__ConstraintsSetStmt *message); size_t pg_query__constraints_set_stmt__pack (const PgQuery__ConstraintsSetStmt *message, uint8_t *out); size_t pg_query__constraints_set_stmt__pack_to_buffer (const PgQuery__ConstraintsSetStmt *message, ProtobufCBuffer *buffer); PgQuery__ConstraintsSetStmt * pg_query__constraints_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__constraints_set_stmt__free_unpacked (PgQuery__ConstraintsSetStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ReindexStmt methods */ void pg_query__reindex_stmt__init (PgQuery__ReindexStmt *message); size_t pg_query__reindex_stmt__get_packed_size (const PgQuery__ReindexStmt *message); size_t pg_query__reindex_stmt__pack (const PgQuery__ReindexStmt *message, uint8_t *out); size_t pg_query__reindex_stmt__pack_to_buffer (const PgQuery__ReindexStmt *message, ProtobufCBuffer *buffer); PgQuery__ReindexStmt * pg_query__reindex_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__reindex_stmt__free_unpacked (PgQuery__ReindexStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CheckPointStmt methods */ void pg_query__check_point_stmt__init (PgQuery__CheckPointStmt *message); size_t pg_query__check_point_stmt__get_packed_size (const PgQuery__CheckPointStmt *message); size_t pg_query__check_point_stmt__pack (const PgQuery__CheckPointStmt *message, uint8_t *out); size_t pg_query__check_point_stmt__pack_to_buffer (const PgQuery__CheckPointStmt *message, ProtobufCBuffer *buffer); PgQuery__CheckPointStmt * pg_query__check_point_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__check_point_stmt__free_unpacked (PgQuery__CheckPointStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateSchemaStmt methods */ void pg_query__create_schema_stmt__init (PgQuery__CreateSchemaStmt *message); size_t pg_query__create_schema_stmt__get_packed_size (const PgQuery__CreateSchemaStmt *message); size_t pg_query__create_schema_stmt__pack (const PgQuery__CreateSchemaStmt *message, uint8_t *out); size_t pg_query__create_schema_stmt__pack_to_buffer (const PgQuery__CreateSchemaStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateSchemaStmt * pg_query__create_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_schema_stmt__free_unpacked (PgQuery__CreateSchemaStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterDatabaseStmt methods */ void pg_query__alter_database_stmt__init (PgQuery__AlterDatabaseStmt *message); size_t pg_query__alter_database_stmt__get_packed_size (const PgQuery__AlterDatabaseStmt *message); size_t pg_query__alter_database_stmt__pack (const PgQuery__AlterDatabaseStmt *message, uint8_t *out); size_t pg_query__alter_database_stmt__pack_to_buffer (const PgQuery__AlterDatabaseStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterDatabaseStmt * pg_query__alter_database_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_database_stmt__free_unpacked (PgQuery__AlterDatabaseStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterDatabaseSetStmt methods */ void pg_query__alter_database_set_stmt__init (PgQuery__AlterDatabaseSetStmt *message); size_t pg_query__alter_database_set_stmt__get_packed_size (const PgQuery__AlterDatabaseSetStmt *message); size_t pg_query__alter_database_set_stmt__pack (const PgQuery__AlterDatabaseSetStmt *message, uint8_t *out); size_t pg_query__alter_database_set_stmt__pack_to_buffer (const PgQuery__AlterDatabaseSetStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterDatabaseSetStmt * pg_query__alter_database_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_database_set_stmt__free_unpacked (PgQuery__AlterDatabaseSetStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterRoleSetStmt methods */ void pg_query__alter_role_set_stmt__init (PgQuery__AlterRoleSetStmt *message); size_t pg_query__alter_role_set_stmt__get_packed_size (const PgQuery__AlterRoleSetStmt *message); size_t pg_query__alter_role_set_stmt__pack (const PgQuery__AlterRoleSetStmt *message, uint8_t *out); size_t pg_query__alter_role_set_stmt__pack_to_buffer (const PgQuery__AlterRoleSetStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterRoleSetStmt * pg_query__alter_role_set_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_role_set_stmt__free_unpacked (PgQuery__AlterRoleSetStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateConversionStmt methods */ void pg_query__create_conversion_stmt__init (PgQuery__CreateConversionStmt *message); size_t pg_query__create_conversion_stmt__get_packed_size (const PgQuery__CreateConversionStmt *message); size_t pg_query__create_conversion_stmt__pack (const PgQuery__CreateConversionStmt *message, uint8_t *out); size_t pg_query__create_conversion_stmt__pack_to_buffer (const PgQuery__CreateConversionStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateConversionStmt * pg_query__create_conversion_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_conversion_stmt__free_unpacked (PgQuery__CreateConversionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateCastStmt methods */ void pg_query__create_cast_stmt__init (PgQuery__CreateCastStmt *message); size_t pg_query__create_cast_stmt__get_packed_size (const PgQuery__CreateCastStmt *message); size_t pg_query__create_cast_stmt__pack (const PgQuery__CreateCastStmt *message, uint8_t *out); size_t pg_query__create_cast_stmt__pack_to_buffer (const PgQuery__CreateCastStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateCastStmt * pg_query__create_cast_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_cast_stmt__free_unpacked (PgQuery__CreateCastStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateOpClassStmt methods */ void pg_query__create_op_class_stmt__init (PgQuery__CreateOpClassStmt *message); size_t pg_query__create_op_class_stmt__get_packed_size (const PgQuery__CreateOpClassStmt *message); size_t pg_query__create_op_class_stmt__pack (const PgQuery__CreateOpClassStmt *message, uint8_t *out); size_t pg_query__create_op_class_stmt__pack_to_buffer (const PgQuery__CreateOpClassStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateOpClassStmt * pg_query__create_op_class_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_op_class_stmt__free_unpacked (PgQuery__CreateOpClassStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateOpFamilyStmt methods */ void pg_query__create_op_family_stmt__init (PgQuery__CreateOpFamilyStmt *message); size_t pg_query__create_op_family_stmt__get_packed_size (const PgQuery__CreateOpFamilyStmt *message); size_t pg_query__create_op_family_stmt__pack (const PgQuery__CreateOpFamilyStmt *message, uint8_t *out); size_t pg_query__create_op_family_stmt__pack_to_buffer (const PgQuery__CreateOpFamilyStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateOpFamilyStmt * pg_query__create_op_family_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_op_family_stmt__free_unpacked (PgQuery__CreateOpFamilyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterOpFamilyStmt methods */ void pg_query__alter_op_family_stmt__init (PgQuery__AlterOpFamilyStmt *message); size_t pg_query__alter_op_family_stmt__get_packed_size (const PgQuery__AlterOpFamilyStmt *message); size_t pg_query__alter_op_family_stmt__pack (const PgQuery__AlterOpFamilyStmt *message, uint8_t *out); size_t pg_query__alter_op_family_stmt__pack_to_buffer (const PgQuery__AlterOpFamilyStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterOpFamilyStmt * pg_query__alter_op_family_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_op_family_stmt__free_unpacked (PgQuery__AlterOpFamilyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__PrepareStmt methods */ void pg_query__prepare_stmt__init (PgQuery__PrepareStmt *message); size_t pg_query__prepare_stmt__get_packed_size (const PgQuery__PrepareStmt *message); size_t pg_query__prepare_stmt__pack (const PgQuery__PrepareStmt *message, uint8_t *out); size_t pg_query__prepare_stmt__pack_to_buffer (const PgQuery__PrepareStmt *message, ProtobufCBuffer *buffer); PgQuery__PrepareStmt * pg_query__prepare_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__prepare_stmt__free_unpacked (PgQuery__PrepareStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ExecuteStmt methods */ void pg_query__execute_stmt__init (PgQuery__ExecuteStmt *message); size_t pg_query__execute_stmt__get_packed_size (const PgQuery__ExecuteStmt *message); size_t pg_query__execute_stmt__pack (const PgQuery__ExecuteStmt *message, uint8_t *out); size_t pg_query__execute_stmt__pack_to_buffer (const PgQuery__ExecuteStmt *message, ProtobufCBuffer *buffer); PgQuery__ExecuteStmt * pg_query__execute_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__execute_stmt__free_unpacked (PgQuery__ExecuteStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DeallocateStmt methods */ void pg_query__deallocate_stmt__init (PgQuery__DeallocateStmt *message); size_t pg_query__deallocate_stmt__get_packed_size (const PgQuery__DeallocateStmt *message); size_t pg_query__deallocate_stmt__pack (const PgQuery__DeallocateStmt *message, uint8_t *out); size_t pg_query__deallocate_stmt__pack_to_buffer (const PgQuery__DeallocateStmt *message, ProtobufCBuffer *buffer); PgQuery__DeallocateStmt * pg_query__deallocate_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__deallocate_stmt__free_unpacked (PgQuery__DeallocateStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DeclareCursorStmt methods */ void pg_query__declare_cursor_stmt__init (PgQuery__DeclareCursorStmt *message); size_t pg_query__declare_cursor_stmt__get_packed_size (const PgQuery__DeclareCursorStmt *message); size_t pg_query__declare_cursor_stmt__pack (const PgQuery__DeclareCursorStmt *message, uint8_t *out); size_t pg_query__declare_cursor_stmt__pack_to_buffer (const PgQuery__DeclareCursorStmt *message, ProtobufCBuffer *buffer); PgQuery__DeclareCursorStmt * pg_query__declare_cursor_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__declare_cursor_stmt__free_unpacked (PgQuery__DeclareCursorStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateTableSpaceStmt methods */ void pg_query__create_table_space_stmt__init (PgQuery__CreateTableSpaceStmt *message); size_t pg_query__create_table_space_stmt__get_packed_size (const PgQuery__CreateTableSpaceStmt *message); size_t pg_query__create_table_space_stmt__pack (const PgQuery__CreateTableSpaceStmt *message, uint8_t *out); size_t pg_query__create_table_space_stmt__pack_to_buffer (const PgQuery__CreateTableSpaceStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateTableSpaceStmt * pg_query__create_table_space_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_table_space_stmt__free_unpacked (PgQuery__CreateTableSpaceStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropTableSpaceStmt methods */ void pg_query__drop_table_space_stmt__init (PgQuery__DropTableSpaceStmt *message); size_t pg_query__drop_table_space_stmt__get_packed_size (const PgQuery__DropTableSpaceStmt *message); size_t pg_query__drop_table_space_stmt__pack (const PgQuery__DropTableSpaceStmt *message, uint8_t *out); size_t pg_query__drop_table_space_stmt__pack_to_buffer (const PgQuery__DropTableSpaceStmt *message, ProtobufCBuffer *buffer); PgQuery__DropTableSpaceStmt * pg_query__drop_table_space_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_table_space_stmt__free_unpacked (PgQuery__DropTableSpaceStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterObjectDependsStmt methods */ void pg_query__alter_object_depends_stmt__init (PgQuery__AlterObjectDependsStmt *message); size_t pg_query__alter_object_depends_stmt__get_packed_size (const PgQuery__AlterObjectDependsStmt *message); size_t pg_query__alter_object_depends_stmt__pack (const PgQuery__AlterObjectDependsStmt *message, uint8_t *out); size_t pg_query__alter_object_depends_stmt__pack_to_buffer (const PgQuery__AlterObjectDependsStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterObjectDependsStmt * pg_query__alter_object_depends_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_object_depends_stmt__free_unpacked (PgQuery__AlterObjectDependsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterObjectSchemaStmt methods */ void pg_query__alter_object_schema_stmt__init (PgQuery__AlterObjectSchemaStmt *message); size_t pg_query__alter_object_schema_stmt__get_packed_size (const PgQuery__AlterObjectSchemaStmt *message); size_t pg_query__alter_object_schema_stmt__pack (const PgQuery__AlterObjectSchemaStmt *message, uint8_t *out); size_t pg_query__alter_object_schema_stmt__pack_to_buffer (const PgQuery__AlterObjectSchemaStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterObjectSchemaStmt * pg_query__alter_object_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_object_schema_stmt__free_unpacked (PgQuery__AlterObjectSchemaStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterOwnerStmt methods */ void pg_query__alter_owner_stmt__init (PgQuery__AlterOwnerStmt *message); size_t pg_query__alter_owner_stmt__get_packed_size (const PgQuery__AlterOwnerStmt *message); size_t pg_query__alter_owner_stmt__pack (const PgQuery__AlterOwnerStmt *message, uint8_t *out); size_t pg_query__alter_owner_stmt__pack_to_buffer (const PgQuery__AlterOwnerStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterOwnerStmt * pg_query__alter_owner_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_owner_stmt__free_unpacked (PgQuery__AlterOwnerStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterOperatorStmt methods */ void pg_query__alter_operator_stmt__init (PgQuery__AlterOperatorStmt *message); size_t pg_query__alter_operator_stmt__get_packed_size (const PgQuery__AlterOperatorStmt *message); size_t pg_query__alter_operator_stmt__pack (const PgQuery__AlterOperatorStmt *message, uint8_t *out); size_t pg_query__alter_operator_stmt__pack_to_buffer (const PgQuery__AlterOperatorStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterOperatorStmt * pg_query__alter_operator_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_operator_stmt__free_unpacked (PgQuery__AlterOperatorStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTypeStmt methods */ void pg_query__alter_type_stmt__init (PgQuery__AlterTypeStmt *message); size_t pg_query__alter_type_stmt__get_packed_size (const PgQuery__AlterTypeStmt *message); size_t pg_query__alter_type_stmt__pack (const PgQuery__AlterTypeStmt *message, uint8_t *out); size_t pg_query__alter_type_stmt__pack_to_buffer (const PgQuery__AlterTypeStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTypeStmt * pg_query__alter_type_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_type_stmt__free_unpacked (PgQuery__AlterTypeStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropOwnedStmt methods */ void pg_query__drop_owned_stmt__init (PgQuery__DropOwnedStmt *message); size_t pg_query__drop_owned_stmt__get_packed_size (const PgQuery__DropOwnedStmt *message); size_t pg_query__drop_owned_stmt__pack (const PgQuery__DropOwnedStmt *message, uint8_t *out); size_t pg_query__drop_owned_stmt__pack_to_buffer (const PgQuery__DropOwnedStmt *message, ProtobufCBuffer *buffer); PgQuery__DropOwnedStmt * pg_query__drop_owned_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_owned_stmt__free_unpacked (PgQuery__DropOwnedStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ReassignOwnedStmt methods */ void pg_query__reassign_owned_stmt__init (PgQuery__ReassignOwnedStmt *message); size_t pg_query__reassign_owned_stmt__get_packed_size (const PgQuery__ReassignOwnedStmt *message); size_t pg_query__reassign_owned_stmt__pack (const PgQuery__ReassignOwnedStmt *message, uint8_t *out); size_t pg_query__reassign_owned_stmt__pack_to_buffer (const PgQuery__ReassignOwnedStmt *message, ProtobufCBuffer *buffer); PgQuery__ReassignOwnedStmt * pg_query__reassign_owned_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__reassign_owned_stmt__free_unpacked (PgQuery__ReassignOwnedStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CompositeTypeStmt methods */ void pg_query__composite_type_stmt__init (PgQuery__CompositeTypeStmt *message); size_t pg_query__composite_type_stmt__get_packed_size (const PgQuery__CompositeTypeStmt *message); size_t pg_query__composite_type_stmt__pack (const PgQuery__CompositeTypeStmt *message, uint8_t *out); size_t pg_query__composite_type_stmt__pack_to_buffer (const PgQuery__CompositeTypeStmt *message, ProtobufCBuffer *buffer); PgQuery__CompositeTypeStmt * pg_query__composite_type_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__composite_type_stmt__free_unpacked (PgQuery__CompositeTypeStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateEnumStmt methods */ void pg_query__create_enum_stmt__init (PgQuery__CreateEnumStmt *message); size_t pg_query__create_enum_stmt__get_packed_size (const PgQuery__CreateEnumStmt *message); size_t pg_query__create_enum_stmt__pack (const PgQuery__CreateEnumStmt *message, uint8_t *out); size_t pg_query__create_enum_stmt__pack_to_buffer (const PgQuery__CreateEnumStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateEnumStmt * pg_query__create_enum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_enum_stmt__free_unpacked (PgQuery__CreateEnumStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateRangeStmt methods */ void pg_query__create_range_stmt__init (PgQuery__CreateRangeStmt *message); size_t pg_query__create_range_stmt__get_packed_size (const PgQuery__CreateRangeStmt *message); size_t pg_query__create_range_stmt__pack (const PgQuery__CreateRangeStmt *message, uint8_t *out); size_t pg_query__create_range_stmt__pack_to_buffer (const PgQuery__CreateRangeStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateRangeStmt * pg_query__create_range_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_range_stmt__free_unpacked (PgQuery__CreateRangeStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterEnumStmt methods */ void pg_query__alter_enum_stmt__init (PgQuery__AlterEnumStmt *message); size_t pg_query__alter_enum_stmt__get_packed_size (const PgQuery__AlterEnumStmt *message); size_t pg_query__alter_enum_stmt__pack (const PgQuery__AlterEnumStmt *message, uint8_t *out); size_t pg_query__alter_enum_stmt__pack_to_buffer (const PgQuery__AlterEnumStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterEnumStmt * pg_query__alter_enum_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_enum_stmt__free_unpacked (PgQuery__AlterEnumStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTSDictionaryStmt methods */ void pg_query__alter_tsdictionary_stmt__init (PgQuery__AlterTSDictionaryStmt *message); size_t pg_query__alter_tsdictionary_stmt__get_packed_size (const PgQuery__AlterTSDictionaryStmt *message); size_t pg_query__alter_tsdictionary_stmt__pack (const PgQuery__AlterTSDictionaryStmt *message, uint8_t *out); size_t pg_query__alter_tsdictionary_stmt__pack_to_buffer (const PgQuery__AlterTSDictionaryStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTSDictionaryStmt * pg_query__alter_tsdictionary_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_tsdictionary_stmt__free_unpacked (PgQuery__AlterTSDictionaryStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTSConfigurationStmt methods */ void pg_query__alter_tsconfiguration_stmt__init (PgQuery__AlterTSConfigurationStmt *message); size_t pg_query__alter_tsconfiguration_stmt__get_packed_size (const PgQuery__AlterTSConfigurationStmt *message); size_t pg_query__alter_tsconfiguration_stmt__pack (const PgQuery__AlterTSConfigurationStmt *message, uint8_t *out); size_t pg_query__alter_tsconfiguration_stmt__pack_to_buffer (const PgQuery__AlterTSConfigurationStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTSConfigurationStmt * pg_query__alter_tsconfiguration_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_tsconfiguration_stmt__free_unpacked (PgQuery__AlterTSConfigurationStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateFdwStmt methods */ void pg_query__create_fdw_stmt__init (PgQuery__CreateFdwStmt *message); size_t pg_query__create_fdw_stmt__get_packed_size (const PgQuery__CreateFdwStmt *message); size_t pg_query__create_fdw_stmt__pack (const PgQuery__CreateFdwStmt *message, uint8_t *out); size_t pg_query__create_fdw_stmt__pack_to_buffer (const PgQuery__CreateFdwStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateFdwStmt * pg_query__create_fdw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_fdw_stmt__free_unpacked (PgQuery__CreateFdwStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterFdwStmt methods */ void pg_query__alter_fdw_stmt__init (PgQuery__AlterFdwStmt *message); size_t pg_query__alter_fdw_stmt__get_packed_size (const PgQuery__AlterFdwStmt *message); size_t pg_query__alter_fdw_stmt__pack (const PgQuery__AlterFdwStmt *message, uint8_t *out); size_t pg_query__alter_fdw_stmt__pack_to_buffer (const PgQuery__AlterFdwStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterFdwStmt * pg_query__alter_fdw_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_fdw_stmt__free_unpacked (PgQuery__AlterFdwStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateForeignServerStmt methods */ void pg_query__create_foreign_server_stmt__init (PgQuery__CreateForeignServerStmt *message); size_t pg_query__create_foreign_server_stmt__get_packed_size (const PgQuery__CreateForeignServerStmt *message); size_t pg_query__create_foreign_server_stmt__pack (const PgQuery__CreateForeignServerStmt *message, uint8_t *out); size_t pg_query__create_foreign_server_stmt__pack_to_buffer (const PgQuery__CreateForeignServerStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateForeignServerStmt * pg_query__create_foreign_server_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_foreign_server_stmt__free_unpacked (PgQuery__CreateForeignServerStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterForeignServerStmt methods */ void pg_query__alter_foreign_server_stmt__init (PgQuery__AlterForeignServerStmt *message); size_t pg_query__alter_foreign_server_stmt__get_packed_size (const PgQuery__AlterForeignServerStmt *message); size_t pg_query__alter_foreign_server_stmt__pack (const PgQuery__AlterForeignServerStmt *message, uint8_t *out); size_t pg_query__alter_foreign_server_stmt__pack_to_buffer (const PgQuery__AlterForeignServerStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterForeignServerStmt * pg_query__alter_foreign_server_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_foreign_server_stmt__free_unpacked (PgQuery__AlterForeignServerStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateUserMappingStmt methods */ void pg_query__create_user_mapping_stmt__init (PgQuery__CreateUserMappingStmt *message); size_t pg_query__create_user_mapping_stmt__get_packed_size (const PgQuery__CreateUserMappingStmt *message); size_t pg_query__create_user_mapping_stmt__pack (const PgQuery__CreateUserMappingStmt *message, uint8_t *out); size_t pg_query__create_user_mapping_stmt__pack_to_buffer (const PgQuery__CreateUserMappingStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateUserMappingStmt * pg_query__create_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_user_mapping_stmt__free_unpacked (PgQuery__CreateUserMappingStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterUserMappingStmt methods */ void pg_query__alter_user_mapping_stmt__init (PgQuery__AlterUserMappingStmt *message); size_t pg_query__alter_user_mapping_stmt__get_packed_size (const PgQuery__AlterUserMappingStmt *message); size_t pg_query__alter_user_mapping_stmt__pack (const PgQuery__AlterUserMappingStmt *message, uint8_t *out); size_t pg_query__alter_user_mapping_stmt__pack_to_buffer (const PgQuery__AlterUserMappingStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterUserMappingStmt * pg_query__alter_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_user_mapping_stmt__free_unpacked (PgQuery__AlterUserMappingStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropUserMappingStmt methods */ void pg_query__drop_user_mapping_stmt__init (PgQuery__DropUserMappingStmt *message); size_t pg_query__drop_user_mapping_stmt__get_packed_size (const PgQuery__DropUserMappingStmt *message); size_t pg_query__drop_user_mapping_stmt__pack (const PgQuery__DropUserMappingStmt *message, uint8_t *out); size_t pg_query__drop_user_mapping_stmt__pack_to_buffer (const PgQuery__DropUserMappingStmt *message, ProtobufCBuffer *buffer); PgQuery__DropUserMappingStmt * pg_query__drop_user_mapping_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_user_mapping_stmt__free_unpacked (PgQuery__DropUserMappingStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTableSpaceOptionsStmt methods */ void pg_query__alter_table_space_options_stmt__init (PgQuery__AlterTableSpaceOptionsStmt *message); size_t pg_query__alter_table_space_options_stmt__get_packed_size (const PgQuery__AlterTableSpaceOptionsStmt *message); size_t pg_query__alter_table_space_options_stmt__pack (const PgQuery__AlterTableSpaceOptionsStmt *message, uint8_t *out); size_t pg_query__alter_table_space_options_stmt__pack_to_buffer (const PgQuery__AlterTableSpaceOptionsStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTableSpaceOptionsStmt * pg_query__alter_table_space_options_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_table_space_options_stmt__free_unpacked (PgQuery__AlterTableSpaceOptionsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterTableMoveAllStmt methods */ void pg_query__alter_table_move_all_stmt__init (PgQuery__AlterTableMoveAllStmt *message); size_t pg_query__alter_table_move_all_stmt__get_packed_size (const PgQuery__AlterTableMoveAllStmt *message); size_t pg_query__alter_table_move_all_stmt__pack (const PgQuery__AlterTableMoveAllStmt *message, uint8_t *out); size_t pg_query__alter_table_move_all_stmt__pack_to_buffer (const PgQuery__AlterTableMoveAllStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterTableMoveAllStmt * pg_query__alter_table_move_all_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_table_move_all_stmt__free_unpacked (PgQuery__AlterTableMoveAllStmt *message, ProtobufCAllocator *allocator); /* PgQuery__SecLabelStmt methods */ void pg_query__sec_label_stmt__init (PgQuery__SecLabelStmt *message); size_t pg_query__sec_label_stmt__get_packed_size (const PgQuery__SecLabelStmt *message); size_t pg_query__sec_label_stmt__pack (const PgQuery__SecLabelStmt *message, uint8_t *out); size_t pg_query__sec_label_stmt__pack_to_buffer (const PgQuery__SecLabelStmt *message, ProtobufCBuffer *buffer); PgQuery__SecLabelStmt * pg_query__sec_label_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sec_label_stmt__free_unpacked (PgQuery__SecLabelStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateForeignTableStmt methods */ void pg_query__create_foreign_table_stmt__init (PgQuery__CreateForeignTableStmt *message); size_t pg_query__create_foreign_table_stmt__get_packed_size (const PgQuery__CreateForeignTableStmt *message); size_t pg_query__create_foreign_table_stmt__pack (const PgQuery__CreateForeignTableStmt *message, uint8_t *out); size_t pg_query__create_foreign_table_stmt__pack_to_buffer (const PgQuery__CreateForeignTableStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateForeignTableStmt * pg_query__create_foreign_table_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_foreign_table_stmt__free_unpacked (PgQuery__CreateForeignTableStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ImportForeignSchemaStmt methods */ void pg_query__import_foreign_schema_stmt__init (PgQuery__ImportForeignSchemaStmt *message); size_t pg_query__import_foreign_schema_stmt__get_packed_size (const PgQuery__ImportForeignSchemaStmt *message); size_t pg_query__import_foreign_schema_stmt__pack (const PgQuery__ImportForeignSchemaStmt *message, uint8_t *out); size_t pg_query__import_foreign_schema_stmt__pack_to_buffer (const PgQuery__ImportForeignSchemaStmt *message, ProtobufCBuffer *buffer); PgQuery__ImportForeignSchemaStmt * pg_query__import_foreign_schema_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__import_foreign_schema_stmt__free_unpacked (PgQuery__ImportForeignSchemaStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateExtensionStmt methods */ void pg_query__create_extension_stmt__init (PgQuery__CreateExtensionStmt *message); size_t pg_query__create_extension_stmt__get_packed_size (const PgQuery__CreateExtensionStmt *message); size_t pg_query__create_extension_stmt__pack (const PgQuery__CreateExtensionStmt *message, uint8_t *out); size_t pg_query__create_extension_stmt__pack_to_buffer (const PgQuery__CreateExtensionStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateExtensionStmt * pg_query__create_extension_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_extension_stmt__free_unpacked (PgQuery__CreateExtensionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterExtensionStmt methods */ void pg_query__alter_extension_stmt__init (PgQuery__AlterExtensionStmt *message); size_t pg_query__alter_extension_stmt__get_packed_size (const PgQuery__AlterExtensionStmt *message); size_t pg_query__alter_extension_stmt__pack (const PgQuery__AlterExtensionStmt *message, uint8_t *out); size_t pg_query__alter_extension_stmt__pack_to_buffer (const PgQuery__AlterExtensionStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterExtensionStmt * pg_query__alter_extension_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_extension_stmt__free_unpacked (PgQuery__AlterExtensionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterExtensionContentsStmt methods */ void pg_query__alter_extension_contents_stmt__init (PgQuery__AlterExtensionContentsStmt *message); size_t pg_query__alter_extension_contents_stmt__get_packed_size (const PgQuery__AlterExtensionContentsStmt *message); size_t pg_query__alter_extension_contents_stmt__pack (const PgQuery__AlterExtensionContentsStmt *message, uint8_t *out); size_t pg_query__alter_extension_contents_stmt__pack_to_buffer (const PgQuery__AlterExtensionContentsStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterExtensionContentsStmt * pg_query__alter_extension_contents_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_extension_contents_stmt__free_unpacked (PgQuery__AlterExtensionContentsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateEventTrigStmt methods */ void pg_query__create_event_trig_stmt__init (PgQuery__CreateEventTrigStmt *message); size_t pg_query__create_event_trig_stmt__get_packed_size (const PgQuery__CreateEventTrigStmt *message); size_t pg_query__create_event_trig_stmt__pack (const PgQuery__CreateEventTrigStmt *message, uint8_t *out); size_t pg_query__create_event_trig_stmt__pack_to_buffer (const PgQuery__CreateEventTrigStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateEventTrigStmt * pg_query__create_event_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_event_trig_stmt__free_unpacked (PgQuery__CreateEventTrigStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterEventTrigStmt methods */ void pg_query__alter_event_trig_stmt__init (PgQuery__AlterEventTrigStmt *message); size_t pg_query__alter_event_trig_stmt__get_packed_size (const PgQuery__AlterEventTrigStmt *message); size_t pg_query__alter_event_trig_stmt__pack (const PgQuery__AlterEventTrigStmt *message, uint8_t *out); size_t pg_query__alter_event_trig_stmt__pack_to_buffer (const PgQuery__AlterEventTrigStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterEventTrigStmt * pg_query__alter_event_trig_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_event_trig_stmt__free_unpacked (PgQuery__AlterEventTrigStmt *message, ProtobufCAllocator *allocator); /* PgQuery__RefreshMatViewStmt methods */ void pg_query__refresh_mat_view_stmt__init (PgQuery__RefreshMatViewStmt *message); size_t pg_query__refresh_mat_view_stmt__get_packed_size (const PgQuery__RefreshMatViewStmt *message); size_t pg_query__refresh_mat_view_stmt__pack (const PgQuery__RefreshMatViewStmt *message, uint8_t *out); size_t pg_query__refresh_mat_view_stmt__pack_to_buffer (const PgQuery__RefreshMatViewStmt *message, ProtobufCBuffer *buffer); PgQuery__RefreshMatViewStmt * pg_query__refresh_mat_view_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__refresh_mat_view_stmt__free_unpacked (PgQuery__RefreshMatViewStmt *message, ProtobufCAllocator *allocator); /* PgQuery__ReplicaIdentityStmt methods */ void pg_query__replica_identity_stmt__init (PgQuery__ReplicaIdentityStmt *message); size_t pg_query__replica_identity_stmt__get_packed_size (const PgQuery__ReplicaIdentityStmt *message); size_t pg_query__replica_identity_stmt__pack (const PgQuery__ReplicaIdentityStmt *message, uint8_t *out); size_t pg_query__replica_identity_stmt__pack_to_buffer (const PgQuery__ReplicaIdentityStmt *message, ProtobufCBuffer *buffer); PgQuery__ReplicaIdentityStmt * pg_query__replica_identity_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__replica_identity_stmt__free_unpacked (PgQuery__ReplicaIdentityStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterSystemStmt methods */ void pg_query__alter_system_stmt__init (PgQuery__AlterSystemStmt *message); size_t pg_query__alter_system_stmt__get_packed_size (const PgQuery__AlterSystemStmt *message); size_t pg_query__alter_system_stmt__pack (const PgQuery__AlterSystemStmt *message, uint8_t *out); size_t pg_query__alter_system_stmt__pack_to_buffer (const PgQuery__AlterSystemStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterSystemStmt * pg_query__alter_system_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_system_stmt__free_unpacked (PgQuery__AlterSystemStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreatePolicyStmt methods */ void pg_query__create_policy_stmt__init (PgQuery__CreatePolicyStmt *message); size_t pg_query__create_policy_stmt__get_packed_size (const PgQuery__CreatePolicyStmt *message); size_t pg_query__create_policy_stmt__pack (const PgQuery__CreatePolicyStmt *message, uint8_t *out); size_t pg_query__create_policy_stmt__pack_to_buffer (const PgQuery__CreatePolicyStmt *message, ProtobufCBuffer *buffer); PgQuery__CreatePolicyStmt * pg_query__create_policy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_policy_stmt__free_unpacked (PgQuery__CreatePolicyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterPolicyStmt methods */ void pg_query__alter_policy_stmt__init (PgQuery__AlterPolicyStmt *message); size_t pg_query__alter_policy_stmt__get_packed_size (const PgQuery__AlterPolicyStmt *message); size_t pg_query__alter_policy_stmt__pack (const PgQuery__AlterPolicyStmt *message, uint8_t *out); size_t pg_query__alter_policy_stmt__pack_to_buffer (const PgQuery__AlterPolicyStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterPolicyStmt * pg_query__alter_policy_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_policy_stmt__free_unpacked (PgQuery__AlterPolicyStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateTransformStmt methods */ void pg_query__create_transform_stmt__init (PgQuery__CreateTransformStmt *message); size_t pg_query__create_transform_stmt__get_packed_size (const PgQuery__CreateTransformStmt *message); size_t pg_query__create_transform_stmt__pack (const PgQuery__CreateTransformStmt *message, uint8_t *out); size_t pg_query__create_transform_stmt__pack_to_buffer (const PgQuery__CreateTransformStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateTransformStmt * pg_query__create_transform_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_transform_stmt__free_unpacked (PgQuery__CreateTransformStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateAmStmt methods */ void pg_query__create_am_stmt__init (PgQuery__CreateAmStmt *message); size_t pg_query__create_am_stmt__get_packed_size (const PgQuery__CreateAmStmt *message); size_t pg_query__create_am_stmt__pack (const PgQuery__CreateAmStmt *message, uint8_t *out); size_t pg_query__create_am_stmt__pack_to_buffer (const PgQuery__CreateAmStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateAmStmt * pg_query__create_am_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_am_stmt__free_unpacked (PgQuery__CreateAmStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreatePublicationStmt methods */ void pg_query__create_publication_stmt__init (PgQuery__CreatePublicationStmt *message); size_t pg_query__create_publication_stmt__get_packed_size (const PgQuery__CreatePublicationStmt *message); size_t pg_query__create_publication_stmt__pack (const PgQuery__CreatePublicationStmt *message, uint8_t *out); size_t pg_query__create_publication_stmt__pack_to_buffer (const PgQuery__CreatePublicationStmt *message, ProtobufCBuffer *buffer); PgQuery__CreatePublicationStmt * pg_query__create_publication_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_publication_stmt__free_unpacked (PgQuery__CreatePublicationStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterPublicationStmt methods */ void pg_query__alter_publication_stmt__init (PgQuery__AlterPublicationStmt *message); size_t pg_query__alter_publication_stmt__get_packed_size (const PgQuery__AlterPublicationStmt *message); size_t pg_query__alter_publication_stmt__pack (const PgQuery__AlterPublicationStmt *message, uint8_t *out); size_t pg_query__alter_publication_stmt__pack_to_buffer (const PgQuery__AlterPublicationStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterPublicationStmt * pg_query__alter_publication_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_publication_stmt__free_unpacked (PgQuery__AlterPublicationStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateSubscriptionStmt methods */ void pg_query__create_subscription_stmt__init (PgQuery__CreateSubscriptionStmt *message); size_t pg_query__create_subscription_stmt__get_packed_size (const PgQuery__CreateSubscriptionStmt *message); size_t pg_query__create_subscription_stmt__pack (const PgQuery__CreateSubscriptionStmt *message, uint8_t *out); size_t pg_query__create_subscription_stmt__pack_to_buffer (const PgQuery__CreateSubscriptionStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateSubscriptionStmt * pg_query__create_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_subscription_stmt__free_unpacked (PgQuery__CreateSubscriptionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterSubscriptionStmt methods */ void pg_query__alter_subscription_stmt__init (PgQuery__AlterSubscriptionStmt *message); size_t pg_query__alter_subscription_stmt__get_packed_size (const PgQuery__AlterSubscriptionStmt *message); size_t pg_query__alter_subscription_stmt__pack (const PgQuery__AlterSubscriptionStmt *message, uint8_t *out); size_t pg_query__alter_subscription_stmt__pack_to_buffer (const PgQuery__AlterSubscriptionStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterSubscriptionStmt * pg_query__alter_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_subscription_stmt__free_unpacked (PgQuery__AlterSubscriptionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__DropSubscriptionStmt methods */ void pg_query__drop_subscription_stmt__init (PgQuery__DropSubscriptionStmt *message); size_t pg_query__drop_subscription_stmt__get_packed_size (const PgQuery__DropSubscriptionStmt *message); size_t pg_query__drop_subscription_stmt__pack (const PgQuery__DropSubscriptionStmt *message, uint8_t *out); size_t pg_query__drop_subscription_stmt__pack_to_buffer (const PgQuery__DropSubscriptionStmt *message, ProtobufCBuffer *buffer); PgQuery__DropSubscriptionStmt * pg_query__drop_subscription_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__drop_subscription_stmt__free_unpacked (PgQuery__DropSubscriptionStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CreateStatsStmt methods */ void pg_query__create_stats_stmt__init (PgQuery__CreateStatsStmt *message); size_t pg_query__create_stats_stmt__get_packed_size (const PgQuery__CreateStatsStmt *message); size_t pg_query__create_stats_stmt__pack (const PgQuery__CreateStatsStmt *message, uint8_t *out); size_t pg_query__create_stats_stmt__pack_to_buffer (const PgQuery__CreateStatsStmt *message, ProtobufCBuffer *buffer); PgQuery__CreateStatsStmt * pg_query__create_stats_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_stats_stmt__free_unpacked (PgQuery__CreateStatsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterCollationStmt methods */ void pg_query__alter_collation_stmt__init (PgQuery__AlterCollationStmt *message); size_t pg_query__alter_collation_stmt__get_packed_size (const PgQuery__AlterCollationStmt *message); size_t pg_query__alter_collation_stmt__pack (const PgQuery__AlterCollationStmt *message, uint8_t *out); size_t pg_query__alter_collation_stmt__pack_to_buffer (const PgQuery__AlterCollationStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterCollationStmt * pg_query__alter_collation_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_collation_stmt__free_unpacked (PgQuery__AlterCollationStmt *message, ProtobufCAllocator *allocator); /* PgQuery__CallStmt methods */ void pg_query__call_stmt__init (PgQuery__CallStmt *message); size_t pg_query__call_stmt__get_packed_size (const PgQuery__CallStmt *message); size_t pg_query__call_stmt__pack (const PgQuery__CallStmt *message, uint8_t *out); size_t pg_query__call_stmt__pack_to_buffer (const PgQuery__CallStmt *message, ProtobufCBuffer *buffer); PgQuery__CallStmt * pg_query__call_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__call_stmt__free_unpacked (PgQuery__CallStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AlterStatsStmt methods */ void pg_query__alter_stats_stmt__init (PgQuery__AlterStatsStmt *message); size_t pg_query__alter_stats_stmt__get_packed_size (const PgQuery__AlterStatsStmt *message); size_t pg_query__alter_stats_stmt__pack (const PgQuery__AlterStatsStmt *message, uint8_t *out); size_t pg_query__alter_stats_stmt__pack_to_buffer (const PgQuery__AlterStatsStmt *message, ProtobufCBuffer *buffer); PgQuery__AlterStatsStmt * pg_query__alter_stats_stmt__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__alter_stats_stmt__free_unpacked (PgQuery__AlterStatsStmt *message, ProtobufCAllocator *allocator); /* PgQuery__AExpr methods */ void pg_query__a__expr__init (PgQuery__AExpr *message); size_t pg_query__a__expr__get_packed_size (const PgQuery__AExpr *message); size_t pg_query__a__expr__pack (const PgQuery__AExpr *message, uint8_t *out); size_t pg_query__a__expr__pack_to_buffer (const PgQuery__AExpr *message, ProtobufCBuffer *buffer); PgQuery__AExpr * pg_query__a__expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__expr__free_unpacked (PgQuery__AExpr *message, ProtobufCAllocator *allocator); /* PgQuery__ColumnRef methods */ void pg_query__column_ref__init (PgQuery__ColumnRef *message); size_t pg_query__column_ref__get_packed_size (const PgQuery__ColumnRef *message); size_t pg_query__column_ref__pack (const PgQuery__ColumnRef *message, uint8_t *out); size_t pg_query__column_ref__pack_to_buffer (const PgQuery__ColumnRef *message, ProtobufCBuffer *buffer); PgQuery__ColumnRef * pg_query__column_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__column_ref__free_unpacked (PgQuery__ColumnRef *message, ProtobufCAllocator *allocator); /* PgQuery__ParamRef methods */ void pg_query__param_ref__init (PgQuery__ParamRef *message); size_t pg_query__param_ref__get_packed_size (const PgQuery__ParamRef *message); size_t pg_query__param_ref__pack (const PgQuery__ParamRef *message, uint8_t *out); size_t pg_query__param_ref__pack_to_buffer (const PgQuery__ParamRef *message, ProtobufCBuffer *buffer); PgQuery__ParamRef * pg_query__param_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__param_ref__free_unpacked (PgQuery__ParamRef *message, ProtobufCAllocator *allocator); /* PgQuery__AConst methods */ void pg_query__a__const__init (PgQuery__AConst *message); size_t pg_query__a__const__get_packed_size (const PgQuery__AConst *message); size_t pg_query__a__const__pack (const PgQuery__AConst *message, uint8_t *out); size_t pg_query__a__const__pack_to_buffer (const PgQuery__AConst *message, ProtobufCBuffer *buffer); PgQuery__AConst * pg_query__a__const__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__const__free_unpacked (PgQuery__AConst *message, ProtobufCAllocator *allocator); /* PgQuery__FuncCall methods */ void pg_query__func_call__init (PgQuery__FuncCall *message); size_t pg_query__func_call__get_packed_size (const PgQuery__FuncCall *message); size_t pg_query__func_call__pack (const PgQuery__FuncCall *message, uint8_t *out); size_t pg_query__func_call__pack_to_buffer (const PgQuery__FuncCall *message, ProtobufCBuffer *buffer); PgQuery__FuncCall * pg_query__func_call__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__func_call__free_unpacked (PgQuery__FuncCall *message, ProtobufCAllocator *allocator); /* PgQuery__AStar methods */ void pg_query__a__star__init (PgQuery__AStar *message); size_t pg_query__a__star__get_packed_size (const PgQuery__AStar *message); size_t pg_query__a__star__pack (const PgQuery__AStar *message, uint8_t *out); size_t pg_query__a__star__pack_to_buffer (const PgQuery__AStar *message, ProtobufCBuffer *buffer); PgQuery__AStar * pg_query__a__star__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__star__free_unpacked (PgQuery__AStar *message, ProtobufCAllocator *allocator); /* PgQuery__AIndices methods */ void pg_query__a__indices__init (PgQuery__AIndices *message); size_t pg_query__a__indices__get_packed_size (const PgQuery__AIndices *message); size_t pg_query__a__indices__pack (const PgQuery__AIndices *message, uint8_t *out); size_t pg_query__a__indices__pack_to_buffer (const PgQuery__AIndices *message, ProtobufCBuffer *buffer); PgQuery__AIndices * pg_query__a__indices__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__indices__free_unpacked (PgQuery__AIndices *message, ProtobufCAllocator *allocator); /* PgQuery__AIndirection methods */ void pg_query__a__indirection__init (PgQuery__AIndirection *message); size_t pg_query__a__indirection__get_packed_size (const PgQuery__AIndirection *message); size_t pg_query__a__indirection__pack (const PgQuery__AIndirection *message, uint8_t *out); size_t pg_query__a__indirection__pack_to_buffer (const PgQuery__AIndirection *message, ProtobufCBuffer *buffer); PgQuery__AIndirection * pg_query__a__indirection__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__indirection__free_unpacked (PgQuery__AIndirection *message, ProtobufCAllocator *allocator); /* PgQuery__AArrayExpr methods */ void pg_query__a__array_expr__init (PgQuery__AArrayExpr *message); size_t pg_query__a__array_expr__get_packed_size (const PgQuery__AArrayExpr *message); size_t pg_query__a__array_expr__pack (const PgQuery__AArrayExpr *message, uint8_t *out); size_t pg_query__a__array_expr__pack_to_buffer (const PgQuery__AArrayExpr *message, ProtobufCBuffer *buffer); PgQuery__AArrayExpr * pg_query__a__array_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__a__array_expr__free_unpacked (PgQuery__AArrayExpr *message, ProtobufCAllocator *allocator); /* PgQuery__ResTarget methods */ void pg_query__res_target__init (PgQuery__ResTarget *message); size_t pg_query__res_target__get_packed_size (const PgQuery__ResTarget *message); size_t pg_query__res_target__pack (const PgQuery__ResTarget *message, uint8_t *out); size_t pg_query__res_target__pack_to_buffer (const PgQuery__ResTarget *message, ProtobufCBuffer *buffer); PgQuery__ResTarget * pg_query__res_target__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__res_target__free_unpacked (PgQuery__ResTarget *message, ProtobufCAllocator *allocator); /* PgQuery__MultiAssignRef methods */ void pg_query__multi_assign_ref__init (PgQuery__MultiAssignRef *message); size_t pg_query__multi_assign_ref__get_packed_size (const PgQuery__MultiAssignRef *message); size_t pg_query__multi_assign_ref__pack (const PgQuery__MultiAssignRef *message, uint8_t *out); size_t pg_query__multi_assign_ref__pack_to_buffer (const PgQuery__MultiAssignRef *message, ProtobufCBuffer *buffer); PgQuery__MultiAssignRef * pg_query__multi_assign_ref__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__multi_assign_ref__free_unpacked (PgQuery__MultiAssignRef *message, ProtobufCAllocator *allocator); /* PgQuery__TypeCast methods */ void pg_query__type_cast__init (PgQuery__TypeCast *message); size_t pg_query__type_cast__get_packed_size (const PgQuery__TypeCast *message); size_t pg_query__type_cast__pack (const PgQuery__TypeCast *message, uint8_t *out); size_t pg_query__type_cast__pack_to_buffer (const PgQuery__TypeCast *message, ProtobufCBuffer *buffer); PgQuery__TypeCast * pg_query__type_cast__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__type_cast__free_unpacked (PgQuery__TypeCast *message, ProtobufCAllocator *allocator); /* PgQuery__CollateClause methods */ void pg_query__collate_clause__init (PgQuery__CollateClause *message); size_t pg_query__collate_clause__get_packed_size (const PgQuery__CollateClause *message); size_t pg_query__collate_clause__pack (const PgQuery__CollateClause *message, uint8_t *out); size_t pg_query__collate_clause__pack_to_buffer (const PgQuery__CollateClause *message, ProtobufCBuffer *buffer); PgQuery__CollateClause * pg_query__collate_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__collate_clause__free_unpacked (PgQuery__CollateClause *message, ProtobufCAllocator *allocator); /* PgQuery__SortBy methods */ void pg_query__sort_by__init (PgQuery__SortBy *message); size_t pg_query__sort_by__get_packed_size (const PgQuery__SortBy *message); size_t pg_query__sort_by__pack (const PgQuery__SortBy *message, uint8_t *out); size_t pg_query__sort_by__pack_to_buffer (const PgQuery__SortBy *message, ProtobufCBuffer *buffer); PgQuery__SortBy * pg_query__sort_by__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sort_by__free_unpacked (PgQuery__SortBy *message, ProtobufCAllocator *allocator); /* PgQuery__WindowDef methods */ void pg_query__window_def__init (PgQuery__WindowDef *message); size_t pg_query__window_def__get_packed_size (const PgQuery__WindowDef *message); size_t pg_query__window_def__pack (const PgQuery__WindowDef *message, uint8_t *out); size_t pg_query__window_def__pack_to_buffer (const PgQuery__WindowDef *message, ProtobufCBuffer *buffer); PgQuery__WindowDef * pg_query__window_def__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__window_def__free_unpacked (PgQuery__WindowDef *message, ProtobufCAllocator *allocator); /* PgQuery__RangeSubselect methods */ void pg_query__range_subselect__init (PgQuery__RangeSubselect *message); size_t pg_query__range_subselect__get_packed_size (const PgQuery__RangeSubselect *message); size_t pg_query__range_subselect__pack (const PgQuery__RangeSubselect *message, uint8_t *out); size_t pg_query__range_subselect__pack_to_buffer (const PgQuery__RangeSubselect *message, ProtobufCBuffer *buffer); PgQuery__RangeSubselect * pg_query__range_subselect__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_subselect__free_unpacked (PgQuery__RangeSubselect *message, ProtobufCAllocator *allocator); /* PgQuery__RangeFunction methods */ void pg_query__range_function__init (PgQuery__RangeFunction *message); size_t pg_query__range_function__get_packed_size (const PgQuery__RangeFunction *message); size_t pg_query__range_function__pack (const PgQuery__RangeFunction *message, uint8_t *out); size_t pg_query__range_function__pack_to_buffer (const PgQuery__RangeFunction *message, ProtobufCBuffer *buffer); PgQuery__RangeFunction * pg_query__range_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_function__free_unpacked (PgQuery__RangeFunction *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTableSample methods */ void pg_query__range_table_sample__init (PgQuery__RangeTableSample *message); size_t pg_query__range_table_sample__get_packed_size (const PgQuery__RangeTableSample *message); size_t pg_query__range_table_sample__pack (const PgQuery__RangeTableSample *message, uint8_t *out); size_t pg_query__range_table_sample__pack_to_buffer (const PgQuery__RangeTableSample *message, ProtobufCBuffer *buffer); PgQuery__RangeTableSample * pg_query__range_table_sample__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_table_sample__free_unpacked (PgQuery__RangeTableSample *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTableFunc methods */ void pg_query__range_table_func__init (PgQuery__RangeTableFunc *message); size_t pg_query__range_table_func__get_packed_size (const PgQuery__RangeTableFunc *message); size_t pg_query__range_table_func__pack (const PgQuery__RangeTableFunc *message, uint8_t *out); size_t pg_query__range_table_func__pack_to_buffer (const PgQuery__RangeTableFunc *message, ProtobufCBuffer *buffer); PgQuery__RangeTableFunc * pg_query__range_table_func__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_table_func__free_unpacked (PgQuery__RangeTableFunc *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTableFuncCol methods */ void pg_query__range_table_func_col__init (PgQuery__RangeTableFuncCol *message); size_t pg_query__range_table_func_col__get_packed_size (const PgQuery__RangeTableFuncCol *message); size_t pg_query__range_table_func_col__pack (const PgQuery__RangeTableFuncCol *message, uint8_t *out); size_t pg_query__range_table_func_col__pack_to_buffer (const PgQuery__RangeTableFuncCol *message, ProtobufCBuffer *buffer); PgQuery__RangeTableFuncCol * pg_query__range_table_func_col__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_table_func_col__free_unpacked (PgQuery__RangeTableFuncCol *message, ProtobufCAllocator *allocator); /* PgQuery__TypeName methods */ void pg_query__type_name__init (PgQuery__TypeName *message); size_t pg_query__type_name__get_packed_size (const PgQuery__TypeName *message); size_t pg_query__type_name__pack (const PgQuery__TypeName *message, uint8_t *out); size_t pg_query__type_name__pack_to_buffer (const PgQuery__TypeName *message, ProtobufCBuffer *buffer); PgQuery__TypeName * pg_query__type_name__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__type_name__free_unpacked (PgQuery__TypeName *message, ProtobufCAllocator *allocator); /* PgQuery__ColumnDef methods */ void pg_query__column_def__init (PgQuery__ColumnDef *message); size_t pg_query__column_def__get_packed_size (const PgQuery__ColumnDef *message); size_t pg_query__column_def__pack (const PgQuery__ColumnDef *message, uint8_t *out); size_t pg_query__column_def__pack_to_buffer (const PgQuery__ColumnDef *message, ProtobufCBuffer *buffer); PgQuery__ColumnDef * pg_query__column_def__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__column_def__free_unpacked (PgQuery__ColumnDef *message, ProtobufCAllocator *allocator); /* PgQuery__IndexElem methods */ void pg_query__index_elem__init (PgQuery__IndexElem *message); size_t pg_query__index_elem__get_packed_size (const PgQuery__IndexElem *message); size_t pg_query__index_elem__pack (const PgQuery__IndexElem *message, uint8_t *out); size_t pg_query__index_elem__pack_to_buffer (const PgQuery__IndexElem *message, ProtobufCBuffer *buffer); PgQuery__IndexElem * pg_query__index_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__index_elem__free_unpacked (PgQuery__IndexElem *message, ProtobufCAllocator *allocator); /* PgQuery__Constraint methods */ void pg_query__constraint__init (PgQuery__Constraint *message); size_t pg_query__constraint__get_packed_size (const PgQuery__Constraint *message); size_t pg_query__constraint__pack (const PgQuery__Constraint *message, uint8_t *out); size_t pg_query__constraint__pack_to_buffer (const PgQuery__Constraint *message, ProtobufCBuffer *buffer); PgQuery__Constraint * pg_query__constraint__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__constraint__free_unpacked (PgQuery__Constraint *message, ProtobufCAllocator *allocator); /* PgQuery__DefElem methods */ void pg_query__def_elem__init (PgQuery__DefElem *message); size_t pg_query__def_elem__get_packed_size (const PgQuery__DefElem *message); size_t pg_query__def_elem__pack (const PgQuery__DefElem *message, uint8_t *out); size_t pg_query__def_elem__pack_to_buffer (const PgQuery__DefElem *message, ProtobufCBuffer *buffer); PgQuery__DefElem * pg_query__def_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__def_elem__free_unpacked (PgQuery__DefElem *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTblEntry methods */ void pg_query__range_tbl_entry__init (PgQuery__RangeTblEntry *message); size_t pg_query__range_tbl_entry__get_packed_size (const PgQuery__RangeTblEntry *message); size_t pg_query__range_tbl_entry__pack (const PgQuery__RangeTblEntry *message, uint8_t *out); size_t pg_query__range_tbl_entry__pack_to_buffer (const PgQuery__RangeTblEntry *message, ProtobufCBuffer *buffer); PgQuery__RangeTblEntry * pg_query__range_tbl_entry__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_tbl_entry__free_unpacked (PgQuery__RangeTblEntry *message, ProtobufCAllocator *allocator); /* PgQuery__RangeTblFunction methods */ void pg_query__range_tbl_function__init (PgQuery__RangeTblFunction *message); size_t pg_query__range_tbl_function__get_packed_size (const PgQuery__RangeTblFunction *message); size_t pg_query__range_tbl_function__pack (const PgQuery__RangeTblFunction *message, uint8_t *out); size_t pg_query__range_tbl_function__pack_to_buffer (const PgQuery__RangeTblFunction *message, ProtobufCBuffer *buffer); PgQuery__RangeTblFunction * pg_query__range_tbl_function__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__range_tbl_function__free_unpacked (PgQuery__RangeTblFunction *message, ProtobufCAllocator *allocator); /* PgQuery__TableSampleClause methods */ void pg_query__table_sample_clause__init (PgQuery__TableSampleClause *message); size_t pg_query__table_sample_clause__get_packed_size (const PgQuery__TableSampleClause *message); size_t pg_query__table_sample_clause__pack (const PgQuery__TableSampleClause *message, uint8_t *out); size_t pg_query__table_sample_clause__pack_to_buffer (const PgQuery__TableSampleClause *message, ProtobufCBuffer *buffer); PgQuery__TableSampleClause * pg_query__table_sample_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__table_sample_clause__free_unpacked (PgQuery__TableSampleClause *message, ProtobufCAllocator *allocator); /* PgQuery__WithCheckOption methods */ void pg_query__with_check_option__init (PgQuery__WithCheckOption *message); size_t pg_query__with_check_option__get_packed_size (const PgQuery__WithCheckOption *message); size_t pg_query__with_check_option__pack (const PgQuery__WithCheckOption *message, uint8_t *out); size_t pg_query__with_check_option__pack_to_buffer (const PgQuery__WithCheckOption *message, ProtobufCBuffer *buffer); PgQuery__WithCheckOption * pg_query__with_check_option__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__with_check_option__free_unpacked (PgQuery__WithCheckOption *message, ProtobufCAllocator *allocator); /* PgQuery__SortGroupClause methods */ void pg_query__sort_group_clause__init (PgQuery__SortGroupClause *message); size_t pg_query__sort_group_clause__get_packed_size (const PgQuery__SortGroupClause *message); size_t pg_query__sort_group_clause__pack (const PgQuery__SortGroupClause *message, uint8_t *out); size_t pg_query__sort_group_clause__pack_to_buffer (const PgQuery__SortGroupClause *message, ProtobufCBuffer *buffer); PgQuery__SortGroupClause * pg_query__sort_group_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__sort_group_clause__free_unpacked (PgQuery__SortGroupClause *message, ProtobufCAllocator *allocator); /* PgQuery__GroupingSet methods */ void pg_query__grouping_set__init (PgQuery__GroupingSet *message); size_t pg_query__grouping_set__get_packed_size (const PgQuery__GroupingSet *message); size_t pg_query__grouping_set__pack (const PgQuery__GroupingSet *message, uint8_t *out); size_t pg_query__grouping_set__pack_to_buffer (const PgQuery__GroupingSet *message, ProtobufCBuffer *buffer); PgQuery__GroupingSet * pg_query__grouping_set__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__grouping_set__free_unpacked (PgQuery__GroupingSet *message, ProtobufCAllocator *allocator); /* PgQuery__WindowClause methods */ void pg_query__window_clause__init (PgQuery__WindowClause *message); size_t pg_query__window_clause__get_packed_size (const PgQuery__WindowClause *message); size_t pg_query__window_clause__pack (const PgQuery__WindowClause *message, uint8_t *out); size_t pg_query__window_clause__pack_to_buffer (const PgQuery__WindowClause *message, ProtobufCBuffer *buffer); PgQuery__WindowClause * pg_query__window_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__window_clause__free_unpacked (PgQuery__WindowClause *message, ProtobufCAllocator *allocator); /* PgQuery__ObjectWithArgs methods */ void pg_query__object_with_args__init (PgQuery__ObjectWithArgs *message); size_t pg_query__object_with_args__get_packed_size (const PgQuery__ObjectWithArgs *message); size_t pg_query__object_with_args__pack (const PgQuery__ObjectWithArgs *message, uint8_t *out); size_t pg_query__object_with_args__pack_to_buffer (const PgQuery__ObjectWithArgs *message, ProtobufCBuffer *buffer); PgQuery__ObjectWithArgs * pg_query__object_with_args__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__object_with_args__free_unpacked (PgQuery__ObjectWithArgs *message, ProtobufCAllocator *allocator); /* PgQuery__AccessPriv methods */ void pg_query__access_priv__init (PgQuery__AccessPriv *message); size_t pg_query__access_priv__get_packed_size (const PgQuery__AccessPriv *message); size_t pg_query__access_priv__pack (const PgQuery__AccessPriv *message, uint8_t *out); size_t pg_query__access_priv__pack_to_buffer (const PgQuery__AccessPriv *message, ProtobufCBuffer *buffer); PgQuery__AccessPriv * pg_query__access_priv__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__access_priv__free_unpacked (PgQuery__AccessPriv *message, ProtobufCAllocator *allocator); /* PgQuery__CreateOpClassItem methods */ void pg_query__create_op_class_item__init (PgQuery__CreateOpClassItem *message); size_t pg_query__create_op_class_item__get_packed_size (const PgQuery__CreateOpClassItem *message); size_t pg_query__create_op_class_item__pack (const PgQuery__CreateOpClassItem *message, uint8_t *out); size_t pg_query__create_op_class_item__pack_to_buffer (const PgQuery__CreateOpClassItem *message, ProtobufCBuffer *buffer); PgQuery__CreateOpClassItem * pg_query__create_op_class_item__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__create_op_class_item__free_unpacked (PgQuery__CreateOpClassItem *message, ProtobufCAllocator *allocator); /* PgQuery__TableLikeClause methods */ void pg_query__table_like_clause__init (PgQuery__TableLikeClause *message); size_t pg_query__table_like_clause__get_packed_size (const PgQuery__TableLikeClause *message); size_t pg_query__table_like_clause__pack (const PgQuery__TableLikeClause *message, uint8_t *out); size_t pg_query__table_like_clause__pack_to_buffer (const PgQuery__TableLikeClause *message, ProtobufCBuffer *buffer); PgQuery__TableLikeClause * pg_query__table_like_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__table_like_clause__free_unpacked (PgQuery__TableLikeClause *message, ProtobufCAllocator *allocator); /* PgQuery__FunctionParameter methods */ void pg_query__function_parameter__init (PgQuery__FunctionParameter *message); size_t pg_query__function_parameter__get_packed_size (const PgQuery__FunctionParameter *message); size_t pg_query__function_parameter__pack (const PgQuery__FunctionParameter *message, uint8_t *out); size_t pg_query__function_parameter__pack_to_buffer (const PgQuery__FunctionParameter *message, ProtobufCBuffer *buffer); PgQuery__FunctionParameter * pg_query__function_parameter__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__function_parameter__free_unpacked (PgQuery__FunctionParameter *message, ProtobufCAllocator *allocator); /* PgQuery__LockingClause methods */ void pg_query__locking_clause__init (PgQuery__LockingClause *message); size_t pg_query__locking_clause__get_packed_size (const PgQuery__LockingClause *message); size_t pg_query__locking_clause__pack (const PgQuery__LockingClause *message, uint8_t *out); size_t pg_query__locking_clause__pack_to_buffer (const PgQuery__LockingClause *message, ProtobufCBuffer *buffer); PgQuery__LockingClause * pg_query__locking_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__locking_clause__free_unpacked (PgQuery__LockingClause *message, ProtobufCAllocator *allocator); /* PgQuery__RowMarkClause methods */ void pg_query__row_mark_clause__init (PgQuery__RowMarkClause *message); size_t pg_query__row_mark_clause__get_packed_size (const PgQuery__RowMarkClause *message); size_t pg_query__row_mark_clause__pack (const PgQuery__RowMarkClause *message, uint8_t *out); size_t pg_query__row_mark_clause__pack_to_buffer (const PgQuery__RowMarkClause *message, ProtobufCBuffer *buffer); PgQuery__RowMarkClause * pg_query__row_mark_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__row_mark_clause__free_unpacked (PgQuery__RowMarkClause *message, ProtobufCAllocator *allocator); /* PgQuery__XmlSerialize methods */ void pg_query__xml_serialize__init (PgQuery__XmlSerialize *message); size_t pg_query__xml_serialize__get_packed_size (const PgQuery__XmlSerialize *message); size_t pg_query__xml_serialize__pack (const PgQuery__XmlSerialize *message, uint8_t *out); size_t pg_query__xml_serialize__pack_to_buffer (const PgQuery__XmlSerialize *message, ProtobufCBuffer *buffer); PgQuery__XmlSerialize * pg_query__xml_serialize__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__xml_serialize__free_unpacked (PgQuery__XmlSerialize *message, ProtobufCAllocator *allocator); /* PgQuery__WithClause methods */ void pg_query__with_clause__init (PgQuery__WithClause *message); size_t pg_query__with_clause__get_packed_size (const PgQuery__WithClause *message); size_t pg_query__with_clause__pack (const PgQuery__WithClause *message, uint8_t *out); size_t pg_query__with_clause__pack_to_buffer (const PgQuery__WithClause *message, ProtobufCBuffer *buffer); PgQuery__WithClause * pg_query__with_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__with_clause__free_unpacked (PgQuery__WithClause *message, ProtobufCAllocator *allocator); /* PgQuery__InferClause methods */ void pg_query__infer_clause__init (PgQuery__InferClause *message); size_t pg_query__infer_clause__get_packed_size (const PgQuery__InferClause *message); size_t pg_query__infer_clause__pack (const PgQuery__InferClause *message, uint8_t *out); size_t pg_query__infer_clause__pack_to_buffer (const PgQuery__InferClause *message, ProtobufCBuffer *buffer); PgQuery__InferClause * pg_query__infer_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__infer_clause__free_unpacked (PgQuery__InferClause *message, ProtobufCAllocator *allocator); /* PgQuery__OnConflictClause methods */ void pg_query__on_conflict_clause__init (PgQuery__OnConflictClause *message); size_t pg_query__on_conflict_clause__get_packed_size (const PgQuery__OnConflictClause *message); size_t pg_query__on_conflict_clause__pack (const PgQuery__OnConflictClause *message, uint8_t *out); size_t pg_query__on_conflict_clause__pack_to_buffer (const PgQuery__OnConflictClause *message, ProtobufCBuffer *buffer); PgQuery__OnConflictClause * pg_query__on_conflict_clause__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__on_conflict_clause__free_unpacked (PgQuery__OnConflictClause *message, ProtobufCAllocator *allocator); /* PgQuery__CommonTableExpr methods */ void pg_query__common_table_expr__init (PgQuery__CommonTableExpr *message); size_t pg_query__common_table_expr__get_packed_size (const PgQuery__CommonTableExpr *message); size_t pg_query__common_table_expr__pack (const PgQuery__CommonTableExpr *message, uint8_t *out); size_t pg_query__common_table_expr__pack_to_buffer (const PgQuery__CommonTableExpr *message, ProtobufCBuffer *buffer); PgQuery__CommonTableExpr * pg_query__common_table_expr__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__common_table_expr__free_unpacked (PgQuery__CommonTableExpr *message, ProtobufCAllocator *allocator); /* PgQuery__RoleSpec methods */ void pg_query__role_spec__init (PgQuery__RoleSpec *message); size_t pg_query__role_spec__get_packed_size (const PgQuery__RoleSpec *message); size_t pg_query__role_spec__pack (const PgQuery__RoleSpec *message, uint8_t *out); size_t pg_query__role_spec__pack_to_buffer (const PgQuery__RoleSpec *message, ProtobufCBuffer *buffer); PgQuery__RoleSpec * pg_query__role_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__role_spec__free_unpacked (PgQuery__RoleSpec *message, ProtobufCAllocator *allocator); /* PgQuery__TriggerTransition methods */ void pg_query__trigger_transition__init (PgQuery__TriggerTransition *message); size_t pg_query__trigger_transition__get_packed_size (const PgQuery__TriggerTransition *message); size_t pg_query__trigger_transition__pack (const PgQuery__TriggerTransition *message, uint8_t *out); size_t pg_query__trigger_transition__pack_to_buffer (const PgQuery__TriggerTransition *message, ProtobufCBuffer *buffer); PgQuery__TriggerTransition * pg_query__trigger_transition__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__trigger_transition__free_unpacked (PgQuery__TriggerTransition *message, ProtobufCAllocator *allocator); /* PgQuery__PartitionElem methods */ void pg_query__partition_elem__init (PgQuery__PartitionElem *message); size_t pg_query__partition_elem__get_packed_size (const PgQuery__PartitionElem *message); size_t pg_query__partition_elem__pack (const PgQuery__PartitionElem *message, uint8_t *out); size_t pg_query__partition_elem__pack_to_buffer (const PgQuery__PartitionElem *message, ProtobufCBuffer *buffer); PgQuery__PartitionElem * pg_query__partition_elem__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__partition_elem__free_unpacked (PgQuery__PartitionElem *message, ProtobufCAllocator *allocator); /* PgQuery__PartitionSpec methods */ void pg_query__partition_spec__init (PgQuery__PartitionSpec *message); size_t pg_query__partition_spec__get_packed_size (const PgQuery__PartitionSpec *message); size_t pg_query__partition_spec__pack (const PgQuery__PartitionSpec *message, uint8_t *out); size_t pg_query__partition_spec__pack_to_buffer (const PgQuery__PartitionSpec *message, ProtobufCBuffer *buffer); PgQuery__PartitionSpec * pg_query__partition_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__partition_spec__free_unpacked (PgQuery__PartitionSpec *message, ProtobufCAllocator *allocator); /* PgQuery__PartitionBoundSpec methods */ void pg_query__partition_bound_spec__init (PgQuery__PartitionBoundSpec *message); size_t pg_query__partition_bound_spec__get_packed_size (const PgQuery__PartitionBoundSpec *message); size_t pg_query__partition_bound_spec__pack (const PgQuery__PartitionBoundSpec *message, uint8_t *out); size_t pg_query__partition_bound_spec__pack_to_buffer (const PgQuery__PartitionBoundSpec *message, ProtobufCBuffer *buffer); PgQuery__PartitionBoundSpec * pg_query__partition_bound_spec__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__partition_bound_spec__free_unpacked (PgQuery__PartitionBoundSpec *message, ProtobufCAllocator *allocator); /* PgQuery__PartitionRangeDatum methods */ void pg_query__partition_range_datum__init (PgQuery__PartitionRangeDatum *message); size_t pg_query__partition_range_datum__get_packed_size (const PgQuery__PartitionRangeDatum *message); size_t pg_query__partition_range_datum__pack (const PgQuery__PartitionRangeDatum *message, uint8_t *out); size_t pg_query__partition_range_datum__pack_to_buffer (const PgQuery__PartitionRangeDatum *message, ProtobufCBuffer *buffer); PgQuery__PartitionRangeDatum * pg_query__partition_range_datum__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__partition_range_datum__free_unpacked (PgQuery__PartitionRangeDatum *message, ProtobufCAllocator *allocator); /* PgQuery__PartitionCmd methods */ void pg_query__partition_cmd__init (PgQuery__PartitionCmd *message); size_t pg_query__partition_cmd__get_packed_size (const PgQuery__PartitionCmd *message); size_t pg_query__partition_cmd__pack (const PgQuery__PartitionCmd *message, uint8_t *out); size_t pg_query__partition_cmd__pack_to_buffer (const PgQuery__PartitionCmd *message, ProtobufCBuffer *buffer); PgQuery__PartitionCmd * pg_query__partition_cmd__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__partition_cmd__free_unpacked (PgQuery__PartitionCmd *message, ProtobufCAllocator *allocator); /* PgQuery__VacuumRelation methods */ void pg_query__vacuum_relation__init (PgQuery__VacuumRelation *message); size_t pg_query__vacuum_relation__get_packed_size (const PgQuery__VacuumRelation *message); size_t pg_query__vacuum_relation__pack (const PgQuery__VacuumRelation *message, uint8_t *out); size_t pg_query__vacuum_relation__pack_to_buffer (const PgQuery__VacuumRelation *message, ProtobufCBuffer *buffer); PgQuery__VacuumRelation * pg_query__vacuum_relation__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__vacuum_relation__free_unpacked (PgQuery__VacuumRelation *message, ProtobufCAllocator *allocator); /* PgQuery__InlineCodeBlock methods */ void pg_query__inline_code_block__init (PgQuery__InlineCodeBlock *message); size_t pg_query__inline_code_block__get_packed_size (const PgQuery__InlineCodeBlock *message); size_t pg_query__inline_code_block__pack (const PgQuery__InlineCodeBlock *message, uint8_t *out); size_t pg_query__inline_code_block__pack_to_buffer (const PgQuery__InlineCodeBlock *message, ProtobufCBuffer *buffer); PgQuery__InlineCodeBlock * pg_query__inline_code_block__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__inline_code_block__free_unpacked (PgQuery__InlineCodeBlock *message, ProtobufCAllocator *allocator); /* PgQuery__CallContext methods */ void pg_query__call_context__init (PgQuery__CallContext *message); size_t pg_query__call_context__get_packed_size (const PgQuery__CallContext *message); size_t pg_query__call_context__pack (const PgQuery__CallContext *message, uint8_t *out); size_t pg_query__call_context__pack_to_buffer (const PgQuery__CallContext *message, ProtobufCBuffer *buffer); PgQuery__CallContext * pg_query__call_context__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__call_context__free_unpacked (PgQuery__CallContext *message, ProtobufCAllocator *allocator); /* PgQuery__ScanToken methods */ void pg_query__scan_token__init (PgQuery__ScanToken *message); size_t pg_query__scan_token__get_packed_size (const PgQuery__ScanToken *message); size_t pg_query__scan_token__pack (const PgQuery__ScanToken *message, uint8_t *out); size_t pg_query__scan_token__pack_to_buffer (const PgQuery__ScanToken *message, ProtobufCBuffer *buffer); PgQuery__ScanToken * pg_query__scan_token__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); void pg_query__scan_token__free_unpacked (PgQuery__ScanToken *message, ProtobufCAllocator *allocator); /* --- per-message closures --- */ typedef void (*PgQuery__ParseResult_Closure) (const PgQuery__ParseResult *message, void *closure_data); typedef void (*PgQuery__ScanResult_Closure) (const PgQuery__ScanResult *message, void *closure_data); typedef void (*PgQuery__Node_Closure) (const PgQuery__Node *message, void *closure_data); typedef void (*PgQuery__Integer_Closure) (const PgQuery__Integer *message, void *closure_data); typedef void (*PgQuery__Float_Closure) (const PgQuery__Float *message, void *closure_data); typedef void (*PgQuery__String_Closure) (const PgQuery__String *message, void *closure_data); typedef void (*PgQuery__BitString_Closure) (const PgQuery__BitString *message, void *closure_data); typedef void (*PgQuery__Null_Closure) (const PgQuery__Null *message, void *closure_data); typedef void (*PgQuery__List_Closure) (const PgQuery__List *message, void *closure_data); typedef void (*PgQuery__OidList_Closure) (const PgQuery__OidList *message, void *closure_data); typedef void (*PgQuery__IntList_Closure) (const PgQuery__IntList *message, void *closure_data); typedef void (*PgQuery__Alias_Closure) (const PgQuery__Alias *message, void *closure_data); typedef void (*PgQuery__RangeVar_Closure) (const PgQuery__RangeVar *message, void *closure_data); typedef void (*PgQuery__TableFunc_Closure) (const PgQuery__TableFunc *message, void *closure_data); typedef void (*PgQuery__Expr_Closure) (const PgQuery__Expr *message, void *closure_data); typedef void (*PgQuery__Var_Closure) (const PgQuery__Var *message, void *closure_data); typedef void (*PgQuery__Param_Closure) (const PgQuery__Param *message, void *closure_data); typedef void (*PgQuery__Aggref_Closure) (const PgQuery__Aggref *message, void *closure_data); typedef void (*PgQuery__GroupingFunc_Closure) (const PgQuery__GroupingFunc *message, void *closure_data); typedef void (*PgQuery__WindowFunc_Closure) (const PgQuery__WindowFunc *message, void *closure_data); typedef void (*PgQuery__SubscriptingRef_Closure) (const PgQuery__SubscriptingRef *message, void *closure_data); typedef void (*PgQuery__FuncExpr_Closure) (const PgQuery__FuncExpr *message, void *closure_data); typedef void (*PgQuery__NamedArgExpr_Closure) (const PgQuery__NamedArgExpr *message, void *closure_data); typedef void (*PgQuery__OpExpr_Closure) (const PgQuery__OpExpr *message, void *closure_data); typedef void (*PgQuery__DistinctExpr_Closure) (const PgQuery__DistinctExpr *message, void *closure_data); typedef void (*PgQuery__NullIfExpr_Closure) (const PgQuery__NullIfExpr *message, void *closure_data); typedef void (*PgQuery__ScalarArrayOpExpr_Closure) (const PgQuery__ScalarArrayOpExpr *message, void *closure_data); typedef void (*PgQuery__BoolExpr_Closure) (const PgQuery__BoolExpr *message, void *closure_data); typedef void (*PgQuery__SubLink_Closure) (const PgQuery__SubLink *message, void *closure_data); typedef void (*PgQuery__SubPlan_Closure) (const PgQuery__SubPlan *message, void *closure_data); typedef void (*PgQuery__AlternativeSubPlan_Closure) (const PgQuery__AlternativeSubPlan *message, void *closure_data); typedef void (*PgQuery__FieldSelect_Closure) (const PgQuery__FieldSelect *message, void *closure_data); typedef void (*PgQuery__FieldStore_Closure) (const PgQuery__FieldStore *message, void *closure_data); typedef void (*PgQuery__RelabelType_Closure) (const PgQuery__RelabelType *message, void *closure_data); typedef void (*PgQuery__CoerceViaIO_Closure) (const PgQuery__CoerceViaIO *message, void *closure_data); typedef void (*PgQuery__ArrayCoerceExpr_Closure) (const PgQuery__ArrayCoerceExpr *message, void *closure_data); typedef void (*PgQuery__ConvertRowtypeExpr_Closure) (const PgQuery__ConvertRowtypeExpr *message, void *closure_data); typedef void (*PgQuery__CollateExpr_Closure) (const PgQuery__CollateExpr *message, void *closure_data); typedef void (*PgQuery__CaseExpr_Closure) (const PgQuery__CaseExpr *message, void *closure_data); typedef void (*PgQuery__CaseWhen_Closure) (const PgQuery__CaseWhen *message, void *closure_data); typedef void (*PgQuery__CaseTestExpr_Closure) (const PgQuery__CaseTestExpr *message, void *closure_data); typedef void (*PgQuery__ArrayExpr_Closure) (const PgQuery__ArrayExpr *message, void *closure_data); typedef void (*PgQuery__RowExpr_Closure) (const PgQuery__RowExpr *message, void *closure_data); typedef void (*PgQuery__RowCompareExpr_Closure) (const PgQuery__RowCompareExpr *message, void *closure_data); typedef void (*PgQuery__CoalesceExpr_Closure) (const PgQuery__CoalesceExpr *message, void *closure_data); typedef void (*PgQuery__MinMaxExpr_Closure) (const PgQuery__MinMaxExpr *message, void *closure_data); typedef void (*PgQuery__SQLValueFunction_Closure) (const PgQuery__SQLValueFunction *message, void *closure_data); typedef void (*PgQuery__XmlExpr_Closure) (const PgQuery__XmlExpr *message, void *closure_data); typedef void (*PgQuery__NullTest_Closure) (const PgQuery__NullTest *message, void *closure_data); typedef void (*PgQuery__BooleanTest_Closure) (const PgQuery__BooleanTest *message, void *closure_data); typedef void (*PgQuery__CoerceToDomain_Closure) (const PgQuery__CoerceToDomain *message, void *closure_data); typedef void (*PgQuery__CoerceToDomainValue_Closure) (const PgQuery__CoerceToDomainValue *message, void *closure_data); typedef void (*PgQuery__SetToDefault_Closure) (const PgQuery__SetToDefault *message, void *closure_data); typedef void (*PgQuery__CurrentOfExpr_Closure) (const PgQuery__CurrentOfExpr *message, void *closure_data); typedef void (*PgQuery__NextValueExpr_Closure) (const PgQuery__NextValueExpr *message, void *closure_data); typedef void (*PgQuery__InferenceElem_Closure) (const PgQuery__InferenceElem *message, void *closure_data); typedef void (*PgQuery__TargetEntry_Closure) (const PgQuery__TargetEntry *message, void *closure_data); typedef void (*PgQuery__RangeTblRef_Closure) (const PgQuery__RangeTblRef *message, void *closure_data); typedef void (*PgQuery__JoinExpr_Closure) (const PgQuery__JoinExpr *message, void *closure_data); typedef void (*PgQuery__FromExpr_Closure) (const PgQuery__FromExpr *message, void *closure_data); typedef void (*PgQuery__OnConflictExpr_Closure) (const PgQuery__OnConflictExpr *message, void *closure_data); typedef void (*PgQuery__IntoClause_Closure) (const PgQuery__IntoClause *message, void *closure_data); typedef void (*PgQuery__RawStmt_Closure) (const PgQuery__RawStmt *message, void *closure_data); typedef void (*PgQuery__Query_Closure) (const PgQuery__Query *message, void *closure_data); typedef void (*PgQuery__InsertStmt_Closure) (const PgQuery__InsertStmt *message, void *closure_data); typedef void (*PgQuery__DeleteStmt_Closure) (const PgQuery__DeleteStmt *message, void *closure_data); typedef void (*PgQuery__UpdateStmt_Closure) (const PgQuery__UpdateStmt *message, void *closure_data); typedef void (*PgQuery__SelectStmt_Closure) (const PgQuery__SelectStmt *message, void *closure_data); typedef void (*PgQuery__AlterTableStmt_Closure) (const PgQuery__AlterTableStmt *message, void *closure_data); typedef void (*PgQuery__AlterTableCmd_Closure) (const PgQuery__AlterTableCmd *message, void *closure_data); typedef void (*PgQuery__AlterDomainStmt_Closure) (const PgQuery__AlterDomainStmt *message, void *closure_data); typedef void (*PgQuery__SetOperationStmt_Closure) (const PgQuery__SetOperationStmt *message, void *closure_data); typedef void (*PgQuery__GrantStmt_Closure) (const PgQuery__GrantStmt *message, void *closure_data); typedef void (*PgQuery__GrantRoleStmt_Closure) (const PgQuery__GrantRoleStmt *message, void *closure_data); typedef void (*PgQuery__AlterDefaultPrivilegesStmt_Closure) (const PgQuery__AlterDefaultPrivilegesStmt *message, void *closure_data); typedef void (*PgQuery__ClosePortalStmt_Closure) (const PgQuery__ClosePortalStmt *message, void *closure_data); typedef void (*PgQuery__ClusterStmt_Closure) (const PgQuery__ClusterStmt *message, void *closure_data); typedef void (*PgQuery__CopyStmt_Closure) (const PgQuery__CopyStmt *message, void *closure_data); typedef void (*PgQuery__CreateStmt_Closure) (const PgQuery__CreateStmt *message, void *closure_data); typedef void (*PgQuery__DefineStmt_Closure) (const PgQuery__DefineStmt *message, void *closure_data); typedef void (*PgQuery__DropStmt_Closure) (const PgQuery__DropStmt *message, void *closure_data); typedef void (*PgQuery__TruncateStmt_Closure) (const PgQuery__TruncateStmt *message, void *closure_data); typedef void (*PgQuery__CommentStmt_Closure) (const PgQuery__CommentStmt *message, void *closure_data); typedef void (*PgQuery__FetchStmt_Closure) (const PgQuery__FetchStmt *message, void *closure_data); typedef void (*PgQuery__IndexStmt_Closure) (const PgQuery__IndexStmt *message, void *closure_data); typedef void (*PgQuery__CreateFunctionStmt_Closure) (const PgQuery__CreateFunctionStmt *message, void *closure_data); typedef void (*PgQuery__AlterFunctionStmt_Closure) (const PgQuery__AlterFunctionStmt *message, void *closure_data); typedef void (*PgQuery__DoStmt_Closure) (const PgQuery__DoStmt *message, void *closure_data); typedef void (*PgQuery__RenameStmt_Closure) (const PgQuery__RenameStmt *message, void *closure_data); typedef void (*PgQuery__RuleStmt_Closure) (const PgQuery__RuleStmt *message, void *closure_data); typedef void (*PgQuery__NotifyStmt_Closure) (const PgQuery__NotifyStmt *message, void *closure_data); typedef void (*PgQuery__ListenStmt_Closure) (const PgQuery__ListenStmt *message, void *closure_data); typedef void (*PgQuery__UnlistenStmt_Closure) (const PgQuery__UnlistenStmt *message, void *closure_data); typedef void (*PgQuery__TransactionStmt_Closure) (const PgQuery__TransactionStmt *message, void *closure_data); typedef void (*PgQuery__ViewStmt_Closure) (const PgQuery__ViewStmt *message, void *closure_data); typedef void (*PgQuery__LoadStmt_Closure) (const PgQuery__LoadStmt *message, void *closure_data); typedef void (*PgQuery__CreateDomainStmt_Closure) (const PgQuery__CreateDomainStmt *message, void *closure_data); typedef void (*PgQuery__CreatedbStmt_Closure) (const PgQuery__CreatedbStmt *message, void *closure_data); typedef void (*PgQuery__DropdbStmt_Closure) (const PgQuery__DropdbStmt *message, void *closure_data); typedef void (*PgQuery__VacuumStmt_Closure) (const PgQuery__VacuumStmt *message, void *closure_data); typedef void (*PgQuery__ExplainStmt_Closure) (const PgQuery__ExplainStmt *message, void *closure_data); typedef void (*PgQuery__CreateTableAsStmt_Closure) (const PgQuery__CreateTableAsStmt *message, void *closure_data); typedef void (*PgQuery__CreateSeqStmt_Closure) (const PgQuery__CreateSeqStmt *message, void *closure_data); typedef void (*PgQuery__AlterSeqStmt_Closure) (const PgQuery__AlterSeqStmt *message, void *closure_data); typedef void (*PgQuery__VariableSetStmt_Closure) (const PgQuery__VariableSetStmt *message, void *closure_data); typedef void (*PgQuery__VariableShowStmt_Closure) (const PgQuery__VariableShowStmt *message, void *closure_data); typedef void (*PgQuery__DiscardStmt_Closure) (const PgQuery__DiscardStmt *message, void *closure_data); typedef void (*PgQuery__CreateTrigStmt_Closure) (const PgQuery__CreateTrigStmt *message, void *closure_data); typedef void (*PgQuery__CreatePLangStmt_Closure) (const PgQuery__CreatePLangStmt *message, void *closure_data); typedef void (*PgQuery__CreateRoleStmt_Closure) (const PgQuery__CreateRoleStmt *message, void *closure_data); typedef void (*PgQuery__AlterRoleStmt_Closure) (const PgQuery__AlterRoleStmt *message, void *closure_data); typedef void (*PgQuery__DropRoleStmt_Closure) (const PgQuery__DropRoleStmt *message, void *closure_data); typedef void (*PgQuery__LockStmt_Closure) (const PgQuery__LockStmt *message, void *closure_data); typedef void (*PgQuery__ConstraintsSetStmt_Closure) (const PgQuery__ConstraintsSetStmt *message, void *closure_data); typedef void (*PgQuery__ReindexStmt_Closure) (const PgQuery__ReindexStmt *message, void *closure_data); typedef void (*PgQuery__CheckPointStmt_Closure) (const PgQuery__CheckPointStmt *message, void *closure_data); typedef void (*PgQuery__CreateSchemaStmt_Closure) (const PgQuery__CreateSchemaStmt *message, void *closure_data); typedef void (*PgQuery__AlterDatabaseStmt_Closure) (const PgQuery__AlterDatabaseStmt *message, void *closure_data); typedef void (*PgQuery__AlterDatabaseSetStmt_Closure) (const PgQuery__AlterDatabaseSetStmt *message, void *closure_data); typedef void (*PgQuery__AlterRoleSetStmt_Closure) (const PgQuery__AlterRoleSetStmt *message, void *closure_data); typedef void (*PgQuery__CreateConversionStmt_Closure) (const PgQuery__CreateConversionStmt *message, void *closure_data); typedef void (*PgQuery__CreateCastStmt_Closure) (const PgQuery__CreateCastStmt *message, void *closure_data); typedef void (*PgQuery__CreateOpClassStmt_Closure) (const PgQuery__CreateOpClassStmt *message, void *closure_data); typedef void (*PgQuery__CreateOpFamilyStmt_Closure) (const PgQuery__CreateOpFamilyStmt *message, void *closure_data); typedef void (*PgQuery__AlterOpFamilyStmt_Closure) (const PgQuery__AlterOpFamilyStmt *message, void *closure_data); typedef void (*PgQuery__PrepareStmt_Closure) (const PgQuery__PrepareStmt *message, void *closure_data); typedef void (*PgQuery__ExecuteStmt_Closure) (const PgQuery__ExecuteStmt *message, void *closure_data); typedef void (*PgQuery__DeallocateStmt_Closure) (const PgQuery__DeallocateStmt *message, void *closure_data); typedef void (*PgQuery__DeclareCursorStmt_Closure) (const PgQuery__DeclareCursorStmt *message, void *closure_data); typedef void (*PgQuery__CreateTableSpaceStmt_Closure) (const PgQuery__CreateTableSpaceStmt *message, void *closure_data); typedef void (*PgQuery__DropTableSpaceStmt_Closure) (const PgQuery__DropTableSpaceStmt *message, void *closure_data); typedef void (*PgQuery__AlterObjectDependsStmt_Closure) (const PgQuery__AlterObjectDependsStmt *message, void *closure_data); typedef void (*PgQuery__AlterObjectSchemaStmt_Closure) (const PgQuery__AlterObjectSchemaStmt *message, void *closure_data); typedef void (*PgQuery__AlterOwnerStmt_Closure) (const PgQuery__AlterOwnerStmt *message, void *closure_data); typedef void (*PgQuery__AlterOperatorStmt_Closure) (const PgQuery__AlterOperatorStmt *message, void *closure_data); typedef void (*PgQuery__AlterTypeStmt_Closure) (const PgQuery__AlterTypeStmt *message, void *closure_data); typedef void (*PgQuery__DropOwnedStmt_Closure) (const PgQuery__DropOwnedStmt *message, void *closure_data); typedef void (*PgQuery__ReassignOwnedStmt_Closure) (const PgQuery__ReassignOwnedStmt *message, void *closure_data); typedef void (*PgQuery__CompositeTypeStmt_Closure) (const PgQuery__CompositeTypeStmt *message, void *closure_data); typedef void (*PgQuery__CreateEnumStmt_Closure) (const PgQuery__CreateEnumStmt *message, void *closure_data); typedef void (*PgQuery__CreateRangeStmt_Closure) (const PgQuery__CreateRangeStmt *message, void *closure_data); typedef void (*PgQuery__AlterEnumStmt_Closure) (const PgQuery__AlterEnumStmt *message, void *closure_data); typedef void (*PgQuery__AlterTSDictionaryStmt_Closure) (const PgQuery__AlterTSDictionaryStmt *message, void *closure_data); typedef void (*PgQuery__AlterTSConfigurationStmt_Closure) (const PgQuery__AlterTSConfigurationStmt *message, void *closure_data); typedef void (*PgQuery__CreateFdwStmt_Closure) (const PgQuery__CreateFdwStmt *message, void *closure_data); typedef void (*PgQuery__AlterFdwStmt_Closure) (const PgQuery__AlterFdwStmt *message, void *closure_data); typedef void (*PgQuery__CreateForeignServerStmt_Closure) (const PgQuery__CreateForeignServerStmt *message, void *closure_data); typedef void (*PgQuery__AlterForeignServerStmt_Closure) (const PgQuery__AlterForeignServerStmt *message, void *closure_data); typedef void (*PgQuery__CreateUserMappingStmt_Closure) (const PgQuery__CreateUserMappingStmt *message, void *closure_data); typedef void (*PgQuery__AlterUserMappingStmt_Closure) (const PgQuery__AlterUserMappingStmt *message, void *closure_data); typedef void (*PgQuery__DropUserMappingStmt_Closure) (const PgQuery__DropUserMappingStmt *message, void *closure_data); typedef void (*PgQuery__AlterTableSpaceOptionsStmt_Closure) (const PgQuery__AlterTableSpaceOptionsStmt *message, void *closure_data); typedef void (*PgQuery__AlterTableMoveAllStmt_Closure) (const PgQuery__AlterTableMoveAllStmt *message, void *closure_data); typedef void (*PgQuery__SecLabelStmt_Closure) (const PgQuery__SecLabelStmt *message, void *closure_data); typedef void (*PgQuery__CreateForeignTableStmt_Closure) (const PgQuery__CreateForeignTableStmt *message, void *closure_data); typedef void (*PgQuery__ImportForeignSchemaStmt_Closure) (const PgQuery__ImportForeignSchemaStmt *message, void *closure_data); typedef void (*PgQuery__CreateExtensionStmt_Closure) (const PgQuery__CreateExtensionStmt *message, void *closure_data); typedef void (*PgQuery__AlterExtensionStmt_Closure) (const PgQuery__AlterExtensionStmt *message, void *closure_data); typedef void (*PgQuery__AlterExtensionContentsStmt_Closure) (const PgQuery__AlterExtensionContentsStmt *message, void *closure_data); typedef void (*PgQuery__CreateEventTrigStmt_Closure) (const PgQuery__CreateEventTrigStmt *message, void *closure_data); typedef void (*PgQuery__AlterEventTrigStmt_Closure) (const PgQuery__AlterEventTrigStmt *message, void *closure_data); typedef void (*PgQuery__RefreshMatViewStmt_Closure) (const PgQuery__RefreshMatViewStmt *message, void *closure_data); typedef void (*PgQuery__ReplicaIdentityStmt_Closure) (const PgQuery__ReplicaIdentityStmt *message, void *closure_data); typedef void (*PgQuery__AlterSystemStmt_Closure) (const PgQuery__AlterSystemStmt *message, void *closure_data); typedef void (*PgQuery__CreatePolicyStmt_Closure) (const PgQuery__CreatePolicyStmt *message, void *closure_data); typedef void (*PgQuery__AlterPolicyStmt_Closure) (const PgQuery__AlterPolicyStmt *message, void *closure_data); typedef void (*PgQuery__CreateTransformStmt_Closure) (const PgQuery__CreateTransformStmt *message, void *closure_data); typedef void (*PgQuery__CreateAmStmt_Closure) (const PgQuery__CreateAmStmt *message, void *closure_data); typedef void (*PgQuery__CreatePublicationStmt_Closure) (const PgQuery__CreatePublicationStmt *message, void *closure_data); typedef void (*PgQuery__AlterPublicationStmt_Closure) (const PgQuery__AlterPublicationStmt *message, void *closure_data); typedef void (*PgQuery__CreateSubscriptionStmt_Closure) (const PgQuery__CreateSubscriptionStmt *message, void *closure_data); typedef void (*PgQuery__AlterSubscriptionStmt_Closure) (const PgQuery__AlterSubscriptionStmt *message, void *closure_data); typedef void (*PgQuery__DropSubscriptionStmt_Closure) (const PgQuery__DropSubscriptionStmt *message, void *closure_data); typedef void (*PgQuery__CreateStatsStmt_Closure) (const PgQuery__CreateStatsStmt *message, void *closure_data); typedef void (*PgQuery__AlterCollationStmt_Closure) (const PgQuery__AlterCollationStmt *message, void *closure_data); typedef void (*PgQuery__CallStmt_Closure) (const PgQuery__CallStmt *message, void *closure_data); typedef void (*PgQuery__AlterStatsStmt_Closure) (const PgQuery__AlterStatsStmt *message, void *closure_data); typedef void (*PgQuery__AExpr_Closure) (const PgQuery__AExpr *message, void *closure_data); typedef void (*PgQuery__ColumnRef_Closure) (const PgQuery__ColumnRef *message, void *closure_data); typedef void (*PgQuery__ParamRef_Closure) (const PgQuery__ParamRef *message, void *closure_data); typedef void (*PgQuery__AConst_Closure) (const PgQuery__AConst *message, void *closure_data); typedef void (*PgQuery__FuncCall_Closure) (const PgQuery__FuncCall *message, void *closure_data); typedef void (*PgQuery__AStar_Closure) (const PgQuery__AStar *message, void *closure_data); typedef void (*PgQuery__AIndices_Closure) (const PgQuery__AIndices *message, void *closure_data); typedef void (*PgQuery__AIndirection_Closure) (const PgQuery__AIndirection *message, void *closure_data); typedef void (*PgQuery__AArrayExpr_Closure) (const PgQuery__AArrayExpr *message, void *closure_data); typedef void (*PgQuery__ResTarget_Closure) (const PgQuery__ResTarget *message, void *closure_data); typedef void (*PgQuery__MultiAssignRef_Closure) (const PgQuery__MultiAssignRef *message, void *closure_data); typedef void (*PgQuery__TypeCast_Closure) (const PgQuery__TypeCast *message, void *closure_data); typedef void (*PgQuery__CollateClause_Closure) (const PgQuery__CollateClause *message, void *closure_data); typedef void (*PgQuery__SortBy_Closure) (const PgQuery__SortBy *message, void *closure_data); typedef void (*PgQuery__WindowDef_Closure) (const PgQuery__WindowDef *message, void *closure_data); typedef void (*PgQuery__RangeSubselect_Closure) (const PgQuery__RangeSubselect *message, void *closure_data); typedef void (*PgQuery__RangeFunction_Closure) (const PgQuery__RangeFunction *message, void *closure_data); typedef void (*PgQuery__RangeTableSample_Closure) (const PgQuery__RangeTableSample *message, void *closure_data); typedef void (*PgQuery__RangeTableFunc_Closure) (const PgQuery__RangeTableFunc *message, void *closure_data); typedef void (*PgQuery__RangeTableFuncCol_Closure) (const PgQuery__RangeTableFuncCol *message, void *closure_data); typedef void (*PgQuery__TypeName_Closure) (const PgQuery__TypeName *message, void *closure_data); typedef void (*PgQuery__ColumnDef_Closure) (const PgQuery__ColumnDef *message, void *closure_data); typedef void (*PgQuery__IndexElem_Closure) (const PgQuery__IndexElem *message, void *closure_data); typedef void (*PgQuery__Constraint_Closure) (const PgQuery__Constraint *message, void *closure_data); typedef void (*PgQuery__DefElem_Closure) (const PgQuery__DefElem *message, void *closure_data); typedef void (*PgQuery__RangeTblEntry_Closure) (const PgQuery__RangeTblEntry *message, void *closure_data); typedef void (*PgQuery__RangeTblFunction_Closure) (const PgQuery__RangeTblFunction *message, void *closure_data); typedef void (*PgQuery__TableSampleClause_Closure) (const PgQuery__TableSampleClause *message, void *closure_data); typedef void (*PgQuery__WithCheckOption_Closure) (const PgQuery__WithCheckOption *message, void *closure_data); typedef void (*PgQuery__SortGroupClause_Closure) (const PgQuery__SortGroupClause *message, void *closure_data); typedef void (*PgQuery__GroupingSet_Closure) (const PgQuery__GroupingSet *message, void *closure_data); typedef void (*PgQuery__WindowClause_Closure) (const PgQuery__WindowClause *message, void *closure_data); typedef void (*PgQuery__ObjectWithArgs_Closure) (const PgQuery__ObjectWithArgs *message, void *closure_data); typedef void (*PgQuery__AccessPriv_Closure) (const PgQuery__AccessPriv *message, void *closure_data); typedef void (*PgQuery__CreateOpClassItem_Closure) (const PgQuery__CreateOpClassItem *message, void *closure_data); typedef void (*PgQuery__TableLikeClause_Closure) (const PgQuery__TableLikeClause *message, void *closure_data); typedef void (*PgQuery__FunctionParameter_Closure) (const PgQuery__FunctionParameter *message, void *closure_data); typedef void (*PgQuery__LockingClause_Closure) (const PgQuery__LockingClause *message, void *closure_data); typedef void (*PgQuery__RowMarkClause_Closure) (const PgQuery__RowMarkClause *message, void *closure_data); typedef void (*PgQuery__XmlSerialize_Closure) (const PgQuery__XmlSerialize *message, void *closure_data); typedef void (*PgQuery__WithClause_Closure) (const PgQuery__WithClause *message, void *closure_data); typedef void (*PgQuery__InferClause_Closure) (const PgQuery__InferClause *message, void *closure_data); typedef void (*PgQuery__OnConflictClause_Closure) (const PgQuery__OnConflictClause *message, void *closure_data); typedef void (*PgQuery__CommonTableExpr_Closure) (const PgQuery__CommonTableExpr *message, void *closure_data); typedef void (*PgQuery__RoleSpec_Closure) (const PgQuery__RoleSpec *message, void *closure_data); typedef void (*PgQuery__TriggerTransition_Closure) (const PgQuery__TriggerTransition *message, void *closure_data); typedef void (*PgQuery__PartitionElem_Closure) (const PgQuery__PartitionElem *message, void *closure_data); typedef void (*PgQuery__PartitionSpec_Closure) (const PgQuery__PartitionSpec *message, void *closure_data); typedef void (*PgQuery__PartitionBoundSpec_Closure) (const PgQuery__PartitionBoundSpec *message, void *closure_data); typedef void (*PgQuery__PartitionRangeDatum_Closure) (const PgQuery__PartitionRangeDatum *message, void *closure_data); typedef void (*PgQuery__PartitionCmd_Closure) (const PgQuery__PartitionCmd *message, void *closure_data); typedef void (*PgQuery__VacuumRelation_Closure) (const PgQuery__VacuumRelation *message, void *closure_data); typedef void (*PgQuery__InlineCodeBlock_Closure) (const PgQuery__InlineCodeBlock *message, void *closure_data); typedef void (*PgQuery__CallContext_Closure) (const PgQuery__CallContext *message, void *closure_data); typedef void (*PgQuery__ScanToken_Closure) (const PgQuery__ScanToken *message, void *closure_data); /* --- services --- */ /* --- descriptors --- */ extern const ProtobufCEnumDescriptor pg_query__overriding_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__query_source__descriptor; extern const ProtobufCEnumDescriptor pg_query__sort_by_dir__descriptor; extern const ProtobufCEnumDescriptor pg_query__sort_by_nulls__descriptor; extern const ProtobufCEnumDescriptor pg_query__a__expr__kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__role_spec_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__table_like_option__descriptor; extern const ProtobufCEnumDescriptor pg_query__def_elem_action__descriptor; extern const ProtobufCEnumDescriptor pg_query__partition_range_datum_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__rtekind__descriptor; extern const ProtobufCEnumDescriptor pg_query__wcokind__descriptor; extern const ProtobufCEnumDescriptor pg_query__grouping_set_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__ctematerialize__descriptor; extern const ProtobufCEnumDescriptor pg_query__set_operation__descriptor; extern const ProtobufCEnumDescriptor pg_query__object_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__drop_behavior__descriptor; extern const ProtobufCEnumDescriptor pg_query__alter_table_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__grant_target_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__variable_set_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__constr_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__import_foreign_schema_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__role_stmt_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__fetch_direction__descriptor; extern const ProtobufCEnumDescriptor pg_query__function_parameter_mode__descriptor; extern const ProtobufCEnumDescriptor pg_query__transaction_stmt_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__view_check_option__descriptor; extern const ProtobufCEnumDescriptor pg_query__cluster_option__descriptor; extern const ProtobufCEnumDescriptor pg_query__discard_mode__descriptor; extern const ProtobufCEnumDescriptor pg_query__reindex_object_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__alter_tsconfig_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__alter_subscription_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__on_commit_action__descriptor; extern const ProtobufCEnumDescriptor pg_query__param_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__coercion_context__descriptor; extern const ProtobufCEnumDescriptor pg_query__coercion_form__descriptor; extern const ProtobufCEnumDescriptor pg_query__bool_expr_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__sub_link_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__row_compare_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__min_max_op__descriptor; extern const ProtobufCEnumDescriptor pg_query__sqlvalue_function_op__descriptor; extern const ProtobufCEnumDescriptor pg_query__xml_expr_op__descriptor; extern const ProtobufCEnumDescriptor pg_query__xml_option_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__null_test_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__bool_test_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__cmd_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__join_type__descriptor; extern const ProtobufCEnumDescriptor pg_query__agg_strategy__descriptor; extern const ProtobufCEnumDescriptor pg_query__agg_split__descriptor; extern const ProtobufCEnumDescriptor pg_query__set_op_cmd__descriptor; extern const ProtobufCEnumDescriptor pg_query__set_op_strategy__descriptor; extern const ProtobufCEnumDescriptor pg_query__on_conflict_action__descriptor; extern const ProtobufCEnumDescriptor pg_query__limit_option__descriptor; extern const ProtobufCEnumDescriptor pg_query__lock_clause_strength__descriptor; extern const ProtobufCEnumDescriptor pg_query__lock_wait_policy__descriptor; extern const ProtobufCEnumDescriptor pg_query__lock_tuple_mode__descriptor; extern const ProtobufCEnumDescriptor pg_query__keyword_kind__descriptor; extern const ProtobufCEnumDescriptor pg_query__token__descriptor; extern const ProtobufCMessageDescriptor pg_query__parse_result__descriptor; extern const ProtobufCMessageDescriptor pg_query__scan_result__descriptor; extern const ProtobufCMessageDescriptor pg_query__node__descriptor; extern const ProtobufCMessageDescriptor pg_query__integer__descriptor; extern const ProtobufCMessageDescriptor pg_query__float__descriptor; extern const ProtobufCMessageDescriptor pg_query__string__descriptor; extern const ProtobufCMessageDescriptor pg_query__bit_string__descriptor; extern const ProtobufCMessageDescriptor pg_query__null__descriptor; extern const ProtobufCMessageDescriptor pg_query__list__descriptor; extern const ProtobufCMessageDescriptor pg_query__oid_list__descriptor; extern const ProtobufCMessageDescriptor pg_query__int_list__descriptor; extern const ProtobufCMessageDescriptor pg_query__alias__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_var__descriptor; extern const ProtobufCMessageDescriptor pg_query__table_func__descriptor; extern const ProtobufCMessageDescriptor pg_query__expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__var__descriptor; extern const ProtobufCMessageDescriptor pg_query__param__descriptor; extern const ProtobufCMessageDescriptor pg_query__aggref__descriptor; extern const ProtobufCMessageDescriptor pg_query__grouping_func__descriptor; extern const ProtobufCMessageDescriptor pg_query__window_func__descriptor; extern const ProtobufCMessageDescriptor pg_query__subscripting_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__func_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__named_arg_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__op_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__distinct_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__null_if_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__scalar_array_op_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__bool_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__sub_link__descriptor; extern const ProtobufCMessageDescriptor pg_query__sub_plan__descriptor; extern const ProtobufCMessageDescriptor pg_query__alternative_sub_plan__descriptor; extern const ProtobufCMessageDescriptor pg_query__field_select__descriptor; extern const ProtobufCMessageDescriptor pg_query__field_store__descriptor; extern const ProtobufCMessageDescriptor pg_query__relabel_type__descriptor; extern const ProtobufCMessageDescriptor pg_query__coerce_via_io__descriptor; extern const ProtobufCMessageDescriptor pg_query__array_coerce_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__convert_rowtype_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__collate_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__case_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__case_when__descriptor; extern const ProtobufCMessageDescriptor pg_query__case_test_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__array_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__row_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__row_compare_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__coalesce_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__min_max_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__sqlvalue_function__descriptor; extern const ProtobufCMessageDescriptor pg_query__xml_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__null_test__descriptor; extern const ProtobufCMessageDescriptor pg_query__boolean_test__descriptor; extern const ProtobufCMessageDescriptor pg_query__coerce_to_domain__descriptor; extern const ProtobufCMessageDescriptor pg_query__coerce_to_domain_value__descriptor; extern const ProtobufCMessageDescriptor pg_query__set_to_default__descriptor; extern const ProtobufCMessageDescriptor pg_query__current_of_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__next_value_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__inference_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__target_entry__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_tbl_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__join_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__from_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__on_conflict_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__into_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__raw_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__query__descriptor; extern const ProtobufCMessageDescriptor pg_query__insert_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__delete_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__update_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__select_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_cmd__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_domain_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__set_operation_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__grant_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__grant_role_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_default_privileges_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__close_portal_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__cluster_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__copy_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__define_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__truncate_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__comment_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__fetch_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__index_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_function_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_function_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__do_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__rename_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__rule_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__notify_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__listen_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__unlisten_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__transaction_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__view_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__load_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_domain_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__createdb_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__dropdb_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__vacuum_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__explain_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_table_as_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_seq_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_seq_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__variable_set_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__variable_show_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__discard_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_trig_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_plang_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_role_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_role_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_role_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__lock_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__constraints_set_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__reindex_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__check_point_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_schema_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_database_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_database_set_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_role_set_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_conversion_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_cast_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_op_class_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_op_family_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_op_family_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__prepare_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__execute_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__deallocate_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__declare_cursor_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_table_space_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_table_space_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_object_depends_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_object_schema_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_owner_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_operator_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_type_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_owned_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__reassign_owned_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__composite_type_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_enum_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_range_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_enum_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_tsdictionary_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_tsconfiguration_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_fdw_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_fdw_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_foreign_server_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_foreign_server_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_user_mapping_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_user_mapping_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_user_mapping_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_space_options_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_table_move_all_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__sec_label_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_foreign_table_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__import_foreign_schema_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_extension_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_extension_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_extension_contents_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_event_trig_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_event_trig_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__refresh_mat_view_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__replica_identity_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_system_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_policy_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_policy_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_transform_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_am_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_publication_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_publication_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_subscription_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_subscription_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__drop_subscription_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_stats_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_collation_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__call_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__alter_stats_stmt__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__column_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__param_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__const__descriptor; extern const ProtobufCMessageDescriptor pg_query__func_call__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__star__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__indices__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__indirection__descriptor; extern const ProtobufCMessageDescriptor pg_query__a__array_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__res_target__descriptor; extern const ProtobufCMessageDescriptor pg_query__multi_assign_ref__descriptor; extern const ProtobufCMessageDescriptor pg_query__type_cast__descriptor; extern const ProtobufCMessageDescriptor pg_query__collate_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__sort_by__descriptor; extern const ProtobufCMessageDescriptor pg_query__window_def__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_subselect__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_function__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_table_sample__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_table_func__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_table_func_col__descriptor; extern const ProtobufCMessageDescriptor pg_query__type_name__descriptor; extern const ProtobufCMessageDescriptor pg_query__column_def__descriptor; extern const ProtobufCMessageDescriptor pg_query__index_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__constraint__descriptor; extern const ProtobufCMessageDescriptor pg_query__def_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_tbl_entry__descriptor; extern const ProtobufCMessageDescriptor pg_query__range_tbl_function__descriptor; extern const ProtobufCMessageDescriptor pg_query__table_sample_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__with_check_option__descriptor; extern const ProtobufCMessageDescriptor pg_query__sort_group_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__grouping_set__descriptor; extern const ProtobufCMessageDescriptor pg_query__window_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__object_with_args__descriptor; extern const ProtobufCMessageDescriptor pg_query__access_priv__descriptor; extern const ProtobufCMessageDescriptor pg_query__create_op_class_item__descriptor; extern const ProtobufCMessageDescriptor pg_query__table_like_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__function_parameter__descriptor; extern const ProtobufCMessageDescriptor pg_query__locking_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__row_mark_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__xml_serialize__descriptor; extern const ProtobufCMessageDescriptor pg_query__with_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__infer_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__on_conflict_clause__descriptor; extern const ProtobufCMessageDescriptor pg_query__common_table_expr__descriptor; extern const ProtobufCMessageDescriptor pg_query__role_spec__descriptor; extern const ProtobufCMessageDescriptor pg_query__trigger_transition__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_elem__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_spec__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_bound_spec__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_range_datum__descriptor; extern const ProtobufCMessageDescriptor pg_query__partition_cmd__descriptor; extern const ProtobufCMessageDescriptor pg_query__vacuum_relation__descriptor; extern const ProtobufCMessageDescriptor pg_query__inline_code_block__descriptor; extern const ProtobufCMessageDescriptor pg_query__call_context__descriptor; extern const ProtobufCMessageDescriptor pg_query__scan_token__descriptor; PROTOBUF_C__END_DECLS #endif /* PROTOBUF_C_protobuf_2fpg_5fquery_2eproto__INCLUDED */ libpg_query-13-2.1.0/protobuf/pg_query.pb.cc000066400000000000000000201540021413137616400206710ustar00rootroot00000000000000// Generated by the protocol buffer compiler. DO NOT EDIT! // source: protobuf/pg_query.proto #include "protobuf/pg_query.pb.h" #include #include #include #include #include #include #include #include // @@protoc_insertion_point(includes) #include extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<30> scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_A_Star_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_AlterEventTrigStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_BitString_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_CallContext_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_CheckPointStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ClosePortalStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_DeallocateStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_DiscardStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_DropSubscriptionStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_DropTableSpaceStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_DropUserMappingStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Expr_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_FetchStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Float_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_InlineCodeBlock_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Integer_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ListenStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_LoadStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_NotifyStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Null_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ParamRef_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_RangeTblRef_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ReplicaIdentityStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_RoleSpec_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_RowMarkClause_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ScanToken_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SortGroupClause_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_String_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_TriggerTransition_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_UnlistenStmt_protobuf_2fpg_5fquery_2eproto; extern PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_VariableShowStmt_protobuf_2fpg_5fquery_2eproto; namespace pg_query { class ParseResultDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ParseResult_default_instance_; class ScanResultDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ScanResult_default_instance_; class NodeDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Node_default_instance_; class IntegerDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Integer_default_instance_; class FloatDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Float_default_instance_; class StringDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _String_default_instance_; class BitStringDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _BitString_default_instance_; class NullDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Null_default_instance_; class ListDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _List_default_instance_; class OidListDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _OidList_default_instance_; class IntListDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _IntList_default_instance_; class BitmapsetDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Bitmapset_default_instance_; class AliasDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Alias_default_instance_; class RangeVarDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RangeVar_default_instance_; class TableFuncDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _TableFunc_default_instance_; class ExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Expr_default_instance_; class VarDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Var_default_instance_; class ParamDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Param_default_instance_; class AggrefDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Aggref_default_instance_; class GroupingFuncDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _GroupingFunc_default_instance_; class WindowFuncDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _WindowFunc_default_instance_; class SubscriptingRefDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _SubscriptingRef_default_instance_; class FuncExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _FuncExpr_default_instance_; class NamedArgExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _NamedArgExpr_default_instance_; class OpExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _OpExpr_default_instance_; class DistinctExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DistinctExpr_default_instance_; class NullIfExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _NullIfExpr_default_instance_; class ScalarArrayOpExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ScalarArrayOpExpr_default_instance_; class BoolExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _BoolExpr_default_instance_; class SubLinkDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _SubLink_default_instance_; class SubPlanDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _SubPlan_default_instance_; class AlternativeSubPlanDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlternativeSubPlan_default_instance_; class FieldSelectDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _FieldSelect_default_instance_; class FieldStoreDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _FieldStore_default_instance_; class RelabelTypeDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RelabelType_default_instance_; class CoerceViaIODefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CoerceViaIO_default_instance_; class ArrayCoerceExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ArrayCoerceExpr_default_instance_; class ConvertRowtypeExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ConvertRowtypeExpr_default_instance_; class CollateExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CollateExpr_default_instance_; class CaseExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CaseExpr_default_instance_; class CaseWhenDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CaseWhen_default_instance_; class CaseTestExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CaseTestExpr_default_instance_; class ArrayExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ArrayExpr_default_instance_; class RowExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RowExpr_default_instance_; class RowCompareExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RowCompareExpr_default_instance_; class CoalesceExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CoalesceExpr_default_instance_; class MinMaxExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _MinMaxExpr_default_instance_; class SQLValueFunctionDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _SQLValueFunction_default_instance_; class XmlExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _XmlExpr_default_instance_; class NullTestDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _NullTest_default_instance_; class BooleanTestDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _BooleanTest_default_instance_; class CoerceToDomainDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CoerceToDomain_default_instance_; class CoerceToDomainValueDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CoerceToDomainValue_default_instance_; class SetToDefaultDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _SetToDefault_default_instance_; class CurrentOfExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CurrentOfExpr_default_instance_; class NextValueExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _NextValueExpr_default_instance_; class InferenceElemDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _InferenceElem_default_instance_; class TargetEntryDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _TargetEntry_default_instance_; class RangeTblRefDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RangeTblRef_default_instance_; class JoinExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _JoinExpr_default_instance_; class FromExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _FromExpr_default_instance_; class OnConflictExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _OnConflictExpr_default_instance_; class IntoClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _IntoClause_default_instance_; class RawStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RawStmt_default_instance_; class QueryDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Query_default_instance_; class InsertStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _InsertStmt_default_instance_; class DeleteStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DeleteStmt_default_instance_; class UpdateStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _UpdateStmt_default_instance_; class SelectStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _SelectStmt_default_instance_; class AlterTableStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterTableStmt_default_instance_; class AlterTableCmdDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterTableCmd_default_instance_; class AlterDomainStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterDomainStmt_default_instance_; class SetOperationStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _SetOperationStmt_default_instance_; class GrantStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _GrantStmt_default_instance_; class GrantRoleStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _GrantRoleStmt_default_instance_; class AlterDefaultPrivilegesStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterDefaultPrivilegesStmt_default_instance_; class ClosePortalStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ClosePortalStmt_default_instance_; class ClusterStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ClusterStmt_default_instance_; class CopyStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CopyStmt_default_instance_; class CreateStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateStmt_default_instance_; class DefineStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DefineStmt_default_instance_; class DropStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DropStmt_default_instance_; class TruncateStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _TruncateStmt_default_instance_; class CommentStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CommentStmt_default_instance_; class FetchStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _FetchStmt_default_instance_; class IndexStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _IndexStmt_default_instance_; class CreateFunctionStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateFunctionStmt_default_instance_; class AlterFunctionStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterFunctionStmt_default_instance_; class DoStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DoStmt_default_instance_; class RenameStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RenameStmt_default_instance_; class RuleStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RuleStmt_default_instance_; class NotifyStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _NotifyStmt_default_instance_; class ListenStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ListenStmt_default_instance_; class UnlistenStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _UnlistenStmt_default_instance_; class TransactionStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _TransactionStmt_default_instance_; class ViewStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ViewStmt_default_instance_; class LoadStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _LoadStmt_default_instance_; class CreateDomainStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateDomainStmt_default_instance_; class CreatedbStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreatedbStmt_default_instance_; class DropdbStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DropdbStmt_default_instance_; class VacuumStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _VacuumStmt_default_instance_; class ExplainStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ExplainStmt_default_instance_; class CreateTableAsStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateTableAsStmt_default_instance_; class CreateSeqStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateSeqStmt_default_instance_; class AlterSeqStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterSeqStmt_default_instance_; class VariableSetStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _VariableSetStmt_default_instance_; class VariableShowStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _VariableShowStmt_default_instance_; class DiscardStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DiscardStmt_default_instance_; class CreateTrigStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateTrigStmt_default_instance_; class CreatePLangStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreatePLangStmt_default_instance_; class CreateRoleStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateRoleStmt_default_instance_; class AlterRoleStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterRoleStmt_default_instance_; class DropRoleStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DropRoleStmt_default_instance_; class LockStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _LockStmt_default_instance_; class ConstraintsSetStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ConstraintsSetStmt_default_instance_; class ReindexStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ReindexStmt_default_instance_; class CheckPointStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CheckPointStmt_default_instance_; class CreateSchemaStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateSchemaStmt_default_instance_; class AlterDatabaseStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterDatabaseStmt_default_instance_; class AlterDatabaseSetStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterDatabaseSetStmt_default_instance_; class AlterRoleSetStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterRoleSetStmt_default_instance_; class CreateConversionStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateConversionStmt_default_instance_; class CreateCastStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateCastStmt_default_instance_; class CreateOpClassStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateOpClassStmt_default_instance_; class CreateOpFamilyStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateOpFamilyStmt_default_instance_; class AlterOpFamilyStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterOpFamilyStmt_default_instance_; class PrepareStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _PrepareStmt_default_instance_; class ExecuteStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ExecuteStmt_default_instance_; class DeallocateStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DeallocateStmt_default_instance_; class DeclareCursorStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DeclareCursorStmt_default_instance_; class CreateTableSpaceStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateTableSpaceStmt_default_instance_; class DropTableSpaceStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DropTableSpaceStmt_default_instance_; class AlterObjectDependsStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterObjectDependsStmt_default_instance_; class AlterObjectSchemaStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterObjectSchemaStmt_default_instance_; class AlterOwnerStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterOwnerStmt_default_instance_; class AlterOperatorStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterOperatorStmt_default_instance_; class AlterTypeStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterTypeStmt_default_instance_; class DropOwnedStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DropOwnedStmt_default_instance_; class ReassignOwnedStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ReassignOwnedStmt_default_instance_; class CompositeTypeStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CompositeTypeStmt_default_instance_; class CreateEnumStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateEnumStmt_default_instance_; class CreateRangeStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateRangeStmt_default_instance_; class AlterEnumStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterEnumStmt_default_instance_; class AlterTSDictionaryStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterTSDictionaryStmt_default_instance_; class AlterTSConfigurationStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterTSConfigurationStmt_default_instance_; class CreateFdwStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateFdwStmt_default_instance_; class AlterFdwStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterFdwStmt_default_instance_; class CreateForeignServerStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateForeignServerStmt_default_instance_; class AlterForeignServerStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterForeignServerStmt_default_instance_; class CreateUserMappingStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateUserMappingStmt_default_instance_; class AlterUserMappingStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterUserMappingStmt_default_instance_; class DropUserMappingStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DropUserMappingStmt_default_instance_; class AlterTableSpaceOptionsStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterTableSpaceOptionsStmt_default_instance_; class AlterTableMoveAllStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterTableMoveAllStmt_default_instance_; class SecLabelStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _SecLabelStmt_default_instance_; class CreateForeignTableStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateForeignTableStmt_default_instance_; class ImportForeignSchemaStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ImportForeignSchemaStmt_default_instance_; class CreateExtensionStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateExtensionStmt_default_instance_; class AlterExtensionStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterExtensionStmt_default_instance_; class AlterExtensionContentsStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterExtensionContentsStmt_default_instance_; class CreateEventTrigStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateEventTrigStmt_default_instance_; class AlterEventTrigStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterEventTrigStmt_default_instance_; class RefreshMatViewStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RefreshMatViewStmt_default_instance_; class ReplicaIdentityStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ReplicaIdentityStmt_default_instance_; class AlterSystemStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterSystemStmt_default_instance_; class CreatePolicyStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreatePolicyStmt_default_instance_; class AlterPolicyStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterPolicyStmt_default_instance_; class CreateTransformStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateTransformStmt_default_instance_; class CreateAmStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateAmStmt_default_instance_; class CreatePublicationStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreatePublicationStmt_default_instance_; class AlterPublicationStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterPublicationStmt_default_instance_; class CreateSubscriptionStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateSubscriptionStmt_default_instance_; class AlterSubscriptionStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterSubscriptionStmt_default_instance_; class DropSubscriptionStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DropSubscriptionStmt_default_instance_; class CreateStatsStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateStatsStmt_default_instance_; class AlterCollationStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterCollationStmt_default_instance_; class CallStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CallStmt_default_instance_; class AlterStatsStmtDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AlterStatsStmt_default_instance_; class A_ExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _A_Expr_default_instance_; class ColumnRefDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ColumnRef_default_instance_; class ParamRefDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ParamRef_default_instance_; class A_ConstDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _A_Const_default_instance_; class FuncCallDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _FuncCall_default_instance_; class A_StarDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _A_Star_default_instance_; class A_IndicesDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _A_Indices_default_instance_; class A_IndirectionDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _A_Indirection_default_instance_; class A_ArrayExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _A_ArrayExpr_default_instance_; class ResTargetDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ResTarget_default_instance_; class MultiAssignRefDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _MultiAssignRef_default_instance_; class TypeCastDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _TypeCast_default_instance_; class CollateClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CollateClause_default_instance_; class SortByDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _SortBy_default_instance_; class WindowDefDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _WindowDef_default_instance_; class RangeSubselectDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RangeSubselect_default_instance_; class RangeFunctionDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RangeFunction_default_instance_; class RangeTableSampleDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RangeTableSample_default_instance_; class RangeTableFuncDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RangeTableFunc_default_instance_; class RangeTableFuncColDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RangeTableFuncCol_default_instance_; class TypeNameDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _TypeName_default_instance_; class ColumnDefDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ColumnDef_default_instance_; class IndexElemDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _IndexElem_default_instance_; class ConstraintDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _Constraint_default_instance_; class DefElemDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _DefElem_default_instance_; class RangeTblEntryDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RangeTblEntry_default_instance_; class RangeTblFunctionDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RangeTblFunction_default_instance_; class TableSampleClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _TableSampleClause_default_instance_; class WithCheckOptionDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _WithCheckOption_default_instance_; class SortGroupClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _SortGroupClause_default_instance_; class GroupingSetDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _GroupingSet_default_instance_; class WindowClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _WindowClause_default_instance_; class ObjectWithArgsDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ObjectWithArgs_default_instance_; class AccessPrivDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _AccessPriv_default_instance_; class CreateOpClassItemDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CreateOpClassItem_default_instance_; class TableLikeClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _TableLikeClause_default_instance_; class FunctionParameterDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _FunctionParameter_default_instance_; class LockingClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _LockingClause_default_instance_; class RowMarkClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RowMarkClause_default_instance_; class XmlSerializeDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _XmlSerialize_default_instance_; class WithClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _WithClause_default_instance_; class InferClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _InferClause_default_instance_; class OnConflictClauseDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _OnConflictClause_default_instance_; class CommonTableExprDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CommonTableExpr_default_instance_; class RoleSpecDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _RoleSpec_default_instance_; class TriggerTransitionDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _TriggerTransition_default_instance_; class PartitionElemDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _PartitionElem_default_instance_; class PartitionSpecDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _PartitionSpec_default_instance_; class PartitionBoundSpecDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _PartitionBoundSpec_default_instance_; class PartitionRangeDatumDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _PartitionRangeDatum_default_instance_; class PartitionCmdDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _PartitionCmd_default_instance_; class VacuumRelationDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _VacuumRelation_default_instance_; class InlineCodeBlockDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _InlineCodeBlock_default_instance_; class CallContextDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _CallContext_default_instance_; class ScanTokenDefaultTypeInternal { public: ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed _instance; } _ScanToken_default_instance_; } // namespace pg_query static void InitDefaultsscc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_Node_default_instance_; new (ptr) ::pg_query::Node(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_List_default_instance_; new (ptr) ::pg_query::List(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_OidList_default_instance_; new (ptr) ::pg_query::OidList(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_IntList_default_instance_; new (ptr) ::pg_query::IntList(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_Alias_default_instance_; new (ptr) ::pg_query::Alias(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RangeVar_default_instance_; new (ptr) ::pg_query::RangeVar(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_TableFunc_default_instance_; new (ptr) ::pg_query::TableFunc(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_Var_default_instance_; new (ptr) ::pg_query::Var(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_Param_default_instance_; new (ptr) ::pg_query::Param(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_Aggref_default_instance_; new (ptr) ::pg_query::Aggref(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_GroupingFunc_default_instance_; new (ptr) ::pg_query::GroupingFunc(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_WindowFunc_default_instance_; new (ptr) ::pg_query::WindowFunc(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_SubscriptingRef_default_instance_; new (ptr) ::pg_query::SubscriptingRef(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_FuncExpr_default_instance_; new (ptr) ::pg_query::FuncExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_NamedArgExpr_default_instance_; new (ptr) ::pg_query::NamedArgExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_OpExpr_default_instance_; new (ptr) ::pg_query::OpExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_DistinctExpr_default_instance_; new (ptr) ::pg_query::DistinctExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_NullIfExpr_default_instance_; new (ptr) ::pg_query::NullIfExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ScalarArrayOpExpr_default_instance_; new (ptr) ::pg_query::ScalarArrayOpExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_BoolExpr_default_instance_; new (ptr) ::pg_query::BoolExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_SubLink_default_instance_; new (ptr) ::pg_query::SubLink(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_SubPlan_default_instance_; new (ptr) ::pg_query::SubPlan(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlternativeSubPlan_default_instance_; new (ptr) ::pg_query::AlternativeSubPlan(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_FieldSelect_default_instance_; new (ptr) ::pg_query::FieldSelect(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_FieldStore_default_instance_; new (ptr) ::pg_query::FieldStore(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RelabelType_default_instance_; new (ptr) ::pg_query::RelabelType(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CoerceViaIO_default_instance_; new (ptr) ::pg_query::CoerceViaIO(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ArrayCoerceExpr_default_instance_; new (ptr) ::pg_query::ArrayCoerceExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ConvertRowtypeExpr_default_instance_; new (ptr) ::pg_query::ConvertRowtypeExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CollateExpr_default_instance_; new (ptr) ::pg_query::CollateExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CaseExpr_default_instance_; new (ptr) ::pg_query::CaseExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CaseWhen_default_instance_; new (ptr) ::pg_query::CaseWhen(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CaseTestExpr_default_instance_; new (ptr) ::pg_query::CaseTestExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ArrayExpr_default_instance_; new (ptr) ::pg_query::ArrayExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RowExpr_default_instance_; new (ptr) ::pg_query::RowExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RowCompareExpr_default_instance_; new (ptr) ::pg_query::RowCompareExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CoalesceExpr_default_instance_; new (ptr) ::pg_query::CoalesceExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_MinMaxExpr_default_instance_; new (ptr) ::pg_query::MinMaxExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_SQLValueFunction_default_instance_; new (ptr) ::pg_query::SQLValueFunction(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_XmlExpr_default_instance_; new (ptr) ::pg_query::XmlExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_NullTest_default_instance_; new (ptr) ::pg_query::NullTest(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_BooleanTest_default_instance_; new (ptr) ::pg_query::BooleanTest(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CoerceToDomain_default_instance_; new (ptr) ::pg_query::CoerceToDomain(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CoerceToDomainValue_default_instance_; new (ptr) ::pg_query::CoerceToDomainValue(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_SetToDefault_default_instance_; new (ptr) ::pg_query::SetToDefault(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CurrentOfExpr_default_instance_; new (ptr) ::pg_query::CurrentOfExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_NextValueExpr_default_instance_; new (ptr) ::pg_query::NextValueExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_InferenceElem_default_instance_; new (ptr) ::pg_query::InferenceElem(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_TargetEntry_default_instance_; new (ptr) ::pg_query::TargetEntry(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_JoinExpr_default_instance_; new (ptr) ::pg_query::JoinExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_FromExpr_default_instance_; new (ptr) ::pg_query::FromExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_OnConflictExpr_default_instance_; new (ptr) ::pg_query::OnConflictExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_IntoClause_default_instance_; new (ptr) ::pg_query::IntoClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RawStmt_default_instance_; new (ptr) ::pg_query::RawStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_Query_default_instance_; new (ptr) ::pg_query::Query(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_InsertStmt_default_instance_; new (ptr) ::pg_query::InsertStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_DeleteStmt_default_instance_; new (ptr) ::pg_query::DeleteStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_UpdateStmt_default_instance_; new (ptr) ::pg_query::UpdateStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_SelectStmt_default_instance_; new (ptr) ::pg_query::SelectStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterTableStmt_default_instance_; new (ptr) ::pg_query::AlterTableStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterTableCmd_default_instance_; new (ptr) ::pg_query::AlterTableCmd(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterDomainStmt_default_instance_; new (ptr) ::pg_query::AlterDomainStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_SetOperationStmt_default_instance_; new (ptr) ::pg_query::SetOperationStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_GrantStmt_default_instance_; new (ptr) ::pg_query::GrantStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_GrantRoleStmt_default_instance_; new (ptr) ::pg_query::GrantRoleStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterDefaultPrivilegesStmt_default_instance_; new (ptr) ::pg_query::AlterDefaultPrivilegesStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ClusterStmt_default_instance_; new (ptr) ::pg_query::ClusterStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CopyStmt_default_instance_; new (ptr) ::pg_query::CopyStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateStmt_default_instance_; new (ptr) ::pg_query::CreateStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_DefineStmt_default_instance_; new (ptr) ::pg_query::DefineStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_DropStmt_default_instance_; new (ptr) ::pg_query::DropStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_TruncateStmt_default_instance_; new (ptr) ::pg_query::TruncateStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CommentStmt_default_instance_; new (ptr) ::pg_query::CommentStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_IndexStmt_default_instance_; new (ptr) ::pg_query::IndexStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateFunctionStmt_default_instance_; new (ptr) ::pg_query::CreateFunctionStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterFunctionStmt_default_instance_; new (ptr) ::pg_query::AlterFunctionStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_DoStmt_default_instance_; new (ptr) ::pg_query::DoStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RenameStmt_default_instance_; new (ptr) ::pg_query::RenameStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RuleStmt_default_instance_; new (ptr) ::pg_query::RuleStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_TransactionStmt_default_instance_; new (ptr) ::pg_query::TransactionStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ViewStmt_default_instance_; new (ptr) ::pg_query::ViewStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateDomainStmt_default_instance_; new (ptr) ::pg_query::CreateDomainStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreatedbStmt_default_instance_; new (ptr) ::pg_query::CreatedbStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_DropdbStmt_default_instance_; new (ptr) ::pg_query::DropdbStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_VacuumStmt_default_instance_; new (ptr) ::pg_query::VacuumStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ExplainStmt_default_instance_; new (ptr) ::pg_query::ExplainStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateTableAsStmt_default_instance_; new (ptr) ::pg_query::CreateTableAsStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateSeqStmt_default_instance_; new (ptr) ::pg_query::CreateSeqStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterSeqStmt_default_instance_; new (ptr) ::pg_query::AlterSeqStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_VariableSetStmt_default_instance_; new (ptr) ::pg_query::VariableSetStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateTrigStmt_default_instance_; new (ptr) ::pg_query::CreateTrigStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreatePLangStmt_default_instance_; new (ptr) ::pg_query::CreatePLangStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateRoleStmt_default_instance_; new (ptr) ::pg_query::CreateRoleStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterRoleStmt_default_instance_; new (ptr) ::pg_query::AlterRoleStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_DropRoleStmt_default_instance_; new (ptr) ::pg_query::DropRoleStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_LockStmt_default_instance_; new (ptr) ::pg_query::LockStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ConstraintsSetStmt_default_instance_; new (ptr) ::pg_query::ConstraintsSetStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ReindexStmt_default_instance_; new (ptr) ::pg_query::ReindexStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateSchemaStmt_default_instance_; new (ptr) ::pg_query::CreateSchemaStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterDatabaseStmt_default_instance_; new (ptr) ::pg_query::AlterDatabaseStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterDatabaseSetStmt_default_instance_; new (ptr) ::pg_query::AlterDatabaseSetStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterRoleSetStmt_default_instance_; new (ptr) ::pg_query::AlterRoleSetStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateConversionStmt_default_instance_; new (ptr) ::pg_query::CreateConversionStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateCastStmt_default_instance_; new (ptr) ::pg_query::CreateCastStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateOpClassStmt_default_instance_; new (ptr) ::pg_query::CreateOpClassStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateOpFamilyStmt_default_instance_; new (ptr) ::pg_query::CreateOpFamilyStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterOpFamilyStmt_default_instance_; new (ptr) ::pg_query::AlterOpFamilyStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_PrepareStmt_default_instance_; new (ptr) ::pg_query::PrepareStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ExecuteStmt_default_instance_; new (ptr) ::pg_query::ExecuteStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_DeclareCursorStmt_default_instance_; new (ptr) ::pg_query::DeclareCursorStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateTableSpaceStmt_default_instance_; new (ptr) ::pg_query::CreateTableSpaceStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterObjectDependsStmt_default_instance_; new (ptr) ::pg_query::AlterObjectDependsStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterObjectSchemaStmt_default_instance_; new (ptr) ::pg_query::AlterObjectSchemaStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterOwnerStmt_default_instance_; new (ptr) ::pg_query::AlterOwnerStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterOperatorStmt_default_instance_; new (ptr) ::pg_query::AlterOperatorStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterTypeStmt_default_instance_; new (ptr) ::pg_query::AlterTypeStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_DropOwnedStmt_default_instance_; new (ptr) ::pg_query::DropOwnedStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ReassignOwnedStmt_default_instance_; new (ptr) ::pg_query::ReassignOwnedStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CompositeTypeStmt_default_instance_; new (ptr) ::pg_query::CompositeTypeStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateEnumStmt_default_instance_; new (ptr) ::pg_query::CreateEnumStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateRangeStmt_default_instance_; new (ptr) ::pg_query::CreateRangeStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterEnumStmt_default_instance_; new (ptr) ::pg_query::AlterEnumStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterTSDictionaryStmt_default_instance_; new (ptr) ::pg_query::AlterTSDictionaryStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterTSConfigurationStmt_default_instance_; new (ptr) ::pg_query::AlterTSConfigurationStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateFdwStmt_default_instance_; new (ptr) ::pg_query::CreateFdwStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterFdwStmt_default_instance_; new (ptr) ::pg_query::AlterFdwStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateForeignServerStmt_default_instance_; new (ptr) ::pg_query::CreateForeignServerStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterForeignServerStmt_default_instance_; new (ptr) ::pg_query::AlterForeignServerStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateUserMappingStmt_default_instance_; new (ptr) ::pg_query::CreateUserMappingStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterUserMappingStmt_default_instance_; new (ptr) ::pg_query::AlterUserMappingStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterTableSpaceOptionsStmt_default_instance_; new (ptr) ::pg_query::AlterTableSpaceOptionsStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterTableMoveAllStmt_default_instance_; new (ptr) ::pg_query::AlterTableMoveAllStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_SecLabelStmt_default_instance_; new (ptr) ::pg_query::SecLabelStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateForeignTableStmt_default_instance_; new (ptr) ::pg_query::CreateForeignTableStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ImportForeignSchemaStmt_default_instance_; new (ptr) ::pg_query::ImportForeignSchemaStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateExtensionStmt_default_instance_; new (ptr) ::pg_query::CreateExtensionStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterExtensionStmt_default_instance_; new (ptr) ::pg_query::AlterExtensionStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterExtensionContentsStmt_default_instance_; new (ptr) ::pg_query::AlterExtensionContentsStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateEventTrigStmt_default_instance_; new (ptr) ::pg_query::CreateEventTrigStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RefreshMatViewStmt_default_instance_; new (ptr) ::pg_query::RefreshMatViewStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterSystemStmt_default_instance_; new (ptr) ::pg_query::AlterSystemStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreatePolicyStmt_default_instance_; new (ptr) ::pg_query::CreatePolicyStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterPolicyStmt_default_instance_; new (ptr) ::pg_query::AlterPolicyStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateTransformStmt_default_instance_; new (ptr) ::pg_query::CreateTransformStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateAmStmt_default_instance_; new (ptr) ::pg_query::CreateAmStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreatePublicationStmt_default_instance_; new (ptr) ::pg_query::CreatePublicationStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterPublicationStmt_default_instance_; new (ptr) ::pg_query::AlterPublicationStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateSubscriptionStmt_default_instance_; new (ptr) ::pg_query::CreateSubscriptionStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterSubscriptionStmt_default_instance_; new (ptr) ::pg_query::AlterSubscriptionStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateStatsStmt_default_instance_; new (ptr) ::pg_query::CreateStatsStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterCollationStmt_default_instance_; new (ptr) ::pg_query::AlterCollationStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CallStmt_default_instance_; new (ptr) ::pg_query::CallStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AlterStatsStmt_default_instance_; new (ptr) ::pg_query::AlterStatsStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_A_Expr_default_instance_; new (ptr) ::pg_query::A_Expr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ColumnRef_default_instance_; new (ptr) ::pg_query::ColumnRef(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_A_Const_default_instance_; new (ptr) ::pg_query::A_Const(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_FuncCall_default_instance_; new (ptr) ::pg_query::FuncCall(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_A_Indices_default_instance_; new (ptr) ::pg_query::A_Indices(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_A_Indirection_default_instance_; new (ptr) ::pg_query::A_Indirection(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_A_ArrayExpr_default_instance_; new (ptr) ::pg_query::A_ArrayExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ResTarget_default_instance_; new (ptr) ::pg_query::ResTarget(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_MultiAssignRef_default_instance_; new (ptr) ::pg_query::MultiAssignRef(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_TypeCast_default_instance_; new (ptr) ::pg_query::TypeCast(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CollateClause_default_instance_; new (ptr) ::pg_query::CollateClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_SortBy_default_instance_; new (ptr) ::pg_query::SortBy(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_WindowDef_default_instance_; new (ptr) ::pg_query::WindowDef(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RangeSubselect_default_instance_; new (ptr) ::pg_query::RangeSubselect(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RangeFunction_default_instance_; new (ptr) ::pg_query::RangeFunction(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RangeTableSample_default_instance_; new (ptr) ::pg_query::RangeTableSample(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RangeTableFunc_default_instance_; new (ptr) ::pg_query::RangeTableFunc(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RangeTableFuncCol_default_instance_; new (ptr) ::pg_query::RangeTableFuncCol(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_TypeName_default_instance_; new (ptr) ::pg_query::TypeName(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ColumnDef_default_instance_; new (ptr) ::pg_query::ColumnDef(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_IndexElem_default_instance_; new (ptr) ::pg_query::IndexElem(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_Constraint_default_instance_; new (ptr) ::pg_query::Constraint(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_DefElem_default_instance_; new (ptr) ::pg_query::DefElem(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RangeTblEntry_default_instance_; new (ptr) ::pg_query::RangeTblEntry(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_RangeTblFunction_default_instance_; new (ptr) ::pg_query::RangeTblFunction(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_TableSampleClause_default_instance_; new (ptr) ::pg_query::TableSampleClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_WithCheckOption_default_instance_; new (ptr) ::pg_query::WithCheckOption(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_GroupingSet_default_instance_; new (ptr) ::pg_query::GroupingSet(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_WindowClause_default_instance_; new (ptr) ::pg_query::WindowClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_ObjectWithArgs_default_instance_; new (ptr) ::pg_query::ObjectWithArgs(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_AccessPriv_default_instance_; new (ptr) ::pg_query::AccessPriv(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CreateOpClassItem_default_instance_; new (ptr) ::pg_query::CreateOpClassItem(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_TableLikeClause_default_instance_; new (ptr) ::pg_query::TableLikeClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_FunctionParameter_default_instance_; new (ptr) ::pg_query::FunctionParameter(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_LockingClause_default_instance_; new (ptr) ::pg_query::LockingClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_XmlSerialize_default_instance_; new (ptr) ::pg_query::XmlSerialize(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_WithClause_default_instance_; new (ptr) ::pg_query::WithClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_InferClause_default_instance_; new (ptr) ::pg_query::InferClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_OnConflictClause_default_instance_; new (ptr) ::pg_query::OnConflictClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_CommonTableExpr_default_instance_; new (ptr) ::pg_query::CommonTableExpr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_PartitionElem_default_instance_; new (ptr) ::pg_query::PartitionElem(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_PartitionSpec_default_instance_; new (ptr) ::pg_query::PartitionSpec(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_PartitionBoundSpec_default_instance_; new (ptr) ::pg_query::PartitionBoundSpec(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_PartitionRangeDatum_default_instance_; new (ptr) ::pg_query::PartitionRangeDatum(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_PartitionCmd_default_instance_; new (ptr) ::pg_query::PartitionCmd(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } { void* ptr = &::pg_query::_VacuumRelation_default_instance_; new (ptr) ::pg_query::VacuumRelation(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<30> scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 30, 0, InitDefaultsscc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto}, { &scc_info_RoleSpec_protobuf_2fpg_5fquery_2eproto.base, &scc_info_Expr_protobuf_2fpg_5fquery_2eproto.base, &scc_info_RangeTblRef_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ClosePortalStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_FetchStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_NotifyStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ListenStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_UnlistenStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_LoadStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_VariableShowStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_DiscardStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_CheckPointStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_DeallocateStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_DropTableSpaceStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_DropUserMappingStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_AlterEventTrigStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ReplicaIdentityStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_DropSubscriptionStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ParamRef_protobuf_2fpg_5fquery_2eproto.base, &scc_info_A_Star_protobuf_2fpg_5fquery_2eproto.base, &scc_info_SortGroupClause_protobuf_2fpg_5fquery_2eproto.base, &scc_info_RowMarkClause_protobuf_2fpg_5fquery_2eproto.base, &scc_info_TriggerTransition_protobuf_2fpg_5fquery_2eproto.base, &scc_info_InlineCodeBlock_protobuf_2fpg_5fquery_2eproto.base, &scc_info_CallContext_protobuf_2fpg_5fquery_2eproto.base, &scc_info_Integer_protobuf_2fpg_5fquery_2eproto.base, &scc_info_Float_protobuf_2fpg_5fquery_2eproto.base, &scc_info_String_protobuf_2fpg_5fquery_2eproto.base, &scc_info_BitString_protobuf_2fpg_5fquery_2eproto.base, &scc_info_Null_protobuf_2fpg_5fquery_2eproto.base,}}; static void InitDefaultsscc_info_A_Star_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_A_Star_default_instance_; new (ptr) ::pg_query::A_Star(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_A_Star_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_A_Star_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_AlterEventTrigStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_AlterEventTrigStmt_default_instance_; new (ptr) ::pg_query::AlterEventTrigStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_AlterEventTrigStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_AlterEventTrigStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_BitString_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_BitString_default_instance_; new (ptr) ::pg_query::BitString(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_BitString_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_BitString_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_Bitmapset_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_Bitmapset_default_instance_; new (ptr) ::pg_query::Bitmapset(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Bitmapset_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_Bitmapset_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_CallContext_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_CallContext_default_instance_; new (ptr) ::pg_query::CallContext(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_CallContext_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_CallContext_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_CheckPointStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_CheckPointStmt_default_instance_; new (ptr) ::pg_query::CheckPointStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_CheckPointStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_CheckPointStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_ClosePortalStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_ClosePortalStmt_default_instance_; new (ptr) ::pg_query::ClosePortalStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ClosePortalStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ClosePortalStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_DeallocateStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_DeallocateStmt_default_instance_; new (ptr) ::pg_query::DeallocateStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_DeallocateStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_DeallocateStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_DiscardStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_DiscardStmt_default_instance_; new (ptr) ::pg_query::DiscardStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_DiscardStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_DiscardStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_DropSubscriptionStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_DropSubscriptionStmt_default_instance_; new (ptr) ::pg_query::DropSubscriptionStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_DropSubscriptionStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_DropSubscriptionStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_DropTableSpaceStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_DropTableSpaceStmt_default_instance_; new (ptr) ::pg_query::DropTableSpaceStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_DropTableSpaceStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_DropTableSpaceStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_DropUserMappingStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_DropUserMappingStmt_default_instance_; new (ptr) ::pg_query::DropUserMappingStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_DropUserMappingStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_DropUserMappingStmt_protobuf_2fpg_5fquery_2eproto}, { &scc_info_RoleSpec_protobuf_2fpg_5fquery_2eproto.base,}}; static void InitDefaultsscc_info_Expr_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_Expr_default_instance_; new (ptr) ::pg_query::Expr(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Expr_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_Expr_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_FetchStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_FetchStmt_default_instance_; new (ptr) ::pg_query::FetchStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_FetchStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_FetchStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_Float_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_Float_default_instance_; new (ptr) ::pg_query::Float(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Float_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_Float_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_InlineCodeBlock_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_InlineCodeBlock_default_instance_; new (ptr) ::pg_query::InlineCodeBlock(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_InlineCodeBlock_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_InlineCodeBlock_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_Integer_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_Integer_default_instance_; new (ptr) ::pg_query::Integer(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Integer_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_Integer_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_ListenStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_ListenStmt_default_instance_; new (ptr) ::pg_query::ListenStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ListenStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ListenStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_LoadStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_LoadStmt_default_instance_; new (ptr) ::pg_query::LoadStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_LoadStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_LoadStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_NotifyStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_NotifyStmt_default_instance_; new (ptr) ::pg_query::NotifyStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_NotifyStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_NotifyStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_Null_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_Null_default_instance_; new (ptr) ::pg_query::Null(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_Null_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_Null_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_ParamRef_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_ParamRef_default_instance_; new (ptr) ::pg_query::ParamRef(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ParamRef_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ParamRef_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_ParseResult_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_ParseResult_default_instance_; new (ptr) ::pg_query::ParseResult(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_ParseResult_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_ParseResult_protobuf_2fpg_5fquery_2eproto}, { &scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base,}}; static void InitDefaultsscc_info_RangeTblRef_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_RangeTblRef_default_instance_; new (ptr) ::pg_query::RangeTblRef(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_RangeTblRef_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_RangeTblRef_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_ReplicaIdentityStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_ReplicaIdentityStmt_default_instance_; new (ptr) ::pg_query::ReplicaIdentityStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ReplicaIdentityStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ReplicaIdentityStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_RoleSpec_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_RoleSpec_default_instance_; new (ptr) ::pg_query::RoleSpec(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_RoleSpec_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_RoleSpec_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_RowMarkClause_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_RowMarkClause_default_instance_; new (ptr) ::pg_query::RowMarkClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_RowMarkClause_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_RowMarkClause_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_ScanResult_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_ScanResult_default_instance_; new (ptr) ::pg_query::ScanResult(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_ScanResult_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_ScanResult_protobuf_2fpg_5fquery_2eproto}, { &scc_info_ScanToken_protobuf_2fpg_5fquery_2eproto.base,}}; static void InitDefaultsscc_info_ScanToken_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_ScanToken_default_instance_; new (ptr) ::pg_query::ScanToken(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ScanToken_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ScanToken_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_SortGroupClause_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_SortGroupClause_default_instance_; new (ptr) ::pg_query::SortGroupClause(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SortGroupClause_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_SortGroupClause_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_String_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_String_default_instance_; new (ptr) ::pg_query::String(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_String_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_String_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_TriggerTransition_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_TriggerTransition_default_instance_; new (ptr) ::pg_query::TriggerTransition(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_TriggerTransition_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_TriggerTransition_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_UnlistenStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_UnlistenStmt_default_instance_; new (ptr) ::pg_query::UnlistenStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_UnlistenStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_UnlistenStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static void InitDefaultsscc_info_VariableShowStmt_protobuf_2fpg_5fquery_2eproto() { GOOGLE_PROTOBUF_VERIFY_VERSION; { void* ptr = &::pg_query::_VariableShowStmt_default_instance_; new (ptr) ::pg_query::VariableShowStmt(); ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr); } } ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_VariableShowStmt_protobuf_2fpg_5fquery_2eproto = {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_VariableShowStmt_protobuf_2fpg_5fquery_2eproto}, {}}; static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_protobuf_2fpg_5fquery_2eproto[233]; static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[57]; static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_protobuf_2fpg_5fquery_2eproto = nullptr; const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_protobuf_2fpg_5fquery_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ParseResult, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ParseResult, version_), PROTOBUF_FIELD_OFFSET(::pg_query::ParseResult, stmts_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ScanResult, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ScanResult, version_), PROTOBUF_FIELD_OFFSET(::pg_query::ScanResult, tokens_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Node, _internal_metadata_), ~0u, // no _extensions_ PROTOBUF_FIELD_OFFSET(::pg_query::Node, _oneof_case_[0]), ~0u, // no _weak_field_map_ ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, ::PROTOBUF_NAMESPACE_ID::internal::kInvalidFieldOffsetTag, PROTOBUF_FIELD_OFFSET(::pg_query::Node, node_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Integer, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::Integer, ival_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Float, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::Float, str_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::String, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::String, str_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::BitString, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::BitString, str_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Null, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::List, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::List, items_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::OidList, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::OidList, items_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::IntList, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::IntList, items_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Bitmapset, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::Bitmapset, words_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Alias, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::Alias, aliasname_), PROTOBUF_FIELD_OFFSET(::pg_query::Alias, colnames_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, catalogname_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, schemaname_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, relname_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, inh_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, relpersistence_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, alias_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeVar, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, ns_uris_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, ns_names_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, docexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, rowexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, colnames_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, coltypes_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, coltypmods_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, colcollations_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, colexprs_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, coldefexprs_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, ordinalitycol_), PROTOBUF_FIELD_OFFSET(::pg_query::TableFunc, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Expr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Var, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::Var, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, varno_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, varattno_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, vartype_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, vartypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, varcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, varlevelsup_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, varnosyn_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, varattnosyn_), PROTOBUF_FIELD_OFFSET(::pg_query::Var, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Param, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::Param, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, paramkind_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, paramid_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, paramtype_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, paramtypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, paramcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::Param, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggfnoid_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggtype_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggtranstype_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggargtypes_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggdirectargs_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, args_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggorder_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggdistinct_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggfilter_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggstar_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggvariadic_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggkind_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, agglevelsup_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, aggsplit_), PROTOBUF_FIELD_OFFSET(::pg_query::Aggref, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, args_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, refs_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, cols_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, agglevelsup_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingFunc, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, winfnoid_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, wintype_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, wincollid_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, args_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, aggfilter_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, winref_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, winstar_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, winagg_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowFunc, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, refcontainertype_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, refelemtype_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, reftypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, refcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, refupperindexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, reflowerindexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, refexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubscriptingRef, refassgnexpr_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, funcid_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, funcresulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, funcretset_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, funcvariadic_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, funcformat_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, funccollid_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, name_), PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, argnumber_), PROTOBUF_FIELD_OFFSET(::pg_query::NamedArgExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, opno_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, opfuncid_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, opresulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, opretset_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, opcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::OpExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, opno_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, opfuncid_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, opresulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, opretset_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, opcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::DistinctExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, opno_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, opfuncid_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, opresulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, opretset_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, opcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::NullIfExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, opno_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, opfuncid_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, use_or_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::ScalarArrayOpExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, boolop_), PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::BoolExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, sub_link_type_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, sub_link_id_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, testexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, oper_name_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, subselect_), PROTOBUF_FIELD_OFFSET(::pg_query::SubLink, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, sub_link_type_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, testexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, param_ids_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, plan_id_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, plan_name_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, first_col_type_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, first_col_typmod_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, first_col_collation_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, use_hash_table_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, unknown_eq_false_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, parallel_safe_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, set_param_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, par_param_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, args_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, startup_cost_), PROTOBUF_FIELD_OFFSET(::pg_query::SubPlan, per_call_cost_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlternativeSubPlan, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlternativeSubPlan, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::AlternativeSubPlan, subplans_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, fieldnum_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, resulttypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldSelect, resultcollid_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, newvals_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, fieldnums_), PROTOBUF_FIELD_OFFSET(::pg_query::FieldStore, resulttype_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, resulttypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, resultcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, relabelformat_), PROTOBUF_FIELD_OFFSET(::pg_query::RelabelType, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, resultcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, coerceformat_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceViaIO, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, elemexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, resulttypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, resultcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, coerceformat_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayCoerceExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, convertformat_), PROTOBUF_FIELD_OFFSET(::pg_query::ConvertRowtypeExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, coll_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, casetype_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, casecollid_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, defresult_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, expr_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, result_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseWhen, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, type_id_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, type_mod_), PROTOBUF_FIELD_OFFSET(::pg_query::CaseTestExpr, collation_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, array_typeid_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, array_collid_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, element_typeid_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, elements_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, multidims_), PROTOBUF_FIELD_OFFSET(::pg_query::ArrayExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, row_typeid_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, row_format_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, colnames_), PROTOBUF_FIELD_OFFSET(::pg_query::RowExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, rctype_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, opnos_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, opfamilies_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, inputcollids_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, largs_), PROTOBUF_FIELD_OFFSET(::pg_query::RowCompareExpr, rargs_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, coalescetype_), PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, coalescecollid_), PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::CoalesceExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, minmaxtype_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, minmaxcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, inputcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, op_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::MinMaxExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, op_), PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, type_), PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, typmod_), PROTOBUF_FIELD_OFFSET(::pg_query::SQLValueFunction, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, op_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, name_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, named_args_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, arg_names_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, args_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, xmloption_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, type_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, typmod_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, nulltesttype_), PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, argisrow_), PROTOBUF_FIELD_OFFSET(::pg_query::NullTest, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, booltesttype_), PROTOBUF_FIELD_OFFSET(::pg_query::BooleanTest, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, resulttype_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, resulttypmod_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, resultcollid_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, coercionformat_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomain, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, type_id_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, type_mod_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, collation_), PROTOBUF_FIELD_OFFSET(::pg_query::CoerceToDomainValue, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, type_id_), PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, type_mod_), PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, collation_), PROTOBUF_FIELD_OFFSET(::pg_query::SetToDefault, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, cvarno_), PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, cursor_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CurrentOfExpr, cursor_param_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::NextValueExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::NextValueExpr, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::NextValueExpr, seqid_), PROTOBUF_FIELD_OFFSET(::pg_query::NextValueExpr, type_id_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, expr_), PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, infercollid_), PROTOBUF_FIELD_OFFSET(::pg_query::InferenceElem, inferopclass_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, xpr_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, expr_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, resno_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, resname_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, ressortgroupref_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, resorigtbl_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, resorigcol_), PROTOBUF_FIELD_OFFSET(::pg_query::TargetEntry, resjunk_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblRef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblRef, rtindex_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, jointype_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, is_natural_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, larg_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, rarg_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, using_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, quals_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, alias_), PROTOBUF_FIELD_OFFSET(::pg_query::JoinExpr, rtindex_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::FromExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::FromExpr, fromlist_), PROTOBUF_FIELD_OFFSET(::pg_query::FromExpr, quals_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, action_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, arbiter_elems_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, arbiter_where_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, constraint_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, on_conflict_set_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, on_conflict_where_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, excl_rel_index_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictExpr, excl_rel_tlist_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, rel_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, col_names_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, access_method_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, options_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, on_commit_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, table_space_name_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, view_query_), PROTOBUF_FIELD_OFFSET(::pg_query::IntoClause, skip_data_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RawStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RawStmt, stmt_), PROTOBUF_FIELD_OFFSET(::pg_query::RawStmt, stmt_location_), PROTOBUF_FIELD_OFFSET(::pg_query::RawStmt, stmt_len_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Query, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::Query, command_type_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, query_source_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, can_set_tag_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, utility_stmt_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, result_relation_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, has_aggs_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, has_window_funcs_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, has_target_srfs_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, has_sub_links_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, has_distinct_on_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, has_recursive_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, has_modifying_cte_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, has_for_update_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, has_row_security_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, cte_list_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, rtable_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, jointree_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, target_list_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, override_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, on_conflict_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, returning_list_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, group_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, grouping_sets_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, having_qual_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, window_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, distinct_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, sort_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, limit_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, limit_count_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, limit_option_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, row_marks_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, set_operations_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, constraint_deps_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, with_check_options_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, stmt_location_), PROTOBUF_FIELD_OFFSET(::pg_query::Query, stmt_len_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, cols_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, select_stmt_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, on_conflict_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, returning_list_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, with_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::InsertStmt, override_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, using_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, returning_list_), PROTOBUF_FIELD_OFFSET(::pg_query::DeleteStmt, with_clause_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, target_list_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, from_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, returning_list_), PROTOBUF_FIELD_OFFSET(::pg_query::UpdateStmt, with_clause_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, distinct_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, into_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, target_list_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, from_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, group_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, having_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, window_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, values_lists_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, sort_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, limit_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, limit_count_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, limit_option_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, locking_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, with_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, op_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, all_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, larg_), PROTOBUF_FIELD_OFFSET(::pg_query::SelectStmt, rarg_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, cmds_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, relkind_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableStmt, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, subtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, num_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, newowner_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, def_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, behavior_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableCmd, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, subtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, def_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, behavior_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDomainStmt, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, op_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, all_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, larg_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, rarg_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, col_types_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, col_typmods_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, col_collations_), PROTOBUF_FIELD_OFFSET(::pg_query::SetOperationStmt, group_clauses_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, is_grant_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, targtype_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, objects_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, privileges_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, grantees_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, grant_option_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantStmt, behavior_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, granted_roles_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, grantee_roles_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, is_grant_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, admin_opt_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, grantor_), PROTOBUF_FIELD_OFFSET(::pg_query::GrantRoleStmt, behavior_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterDefaultPrivilegesStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterDefaultPrivilegesStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDefaultPrivilegesStmt, action_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ClosePortalStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ClosePortalStmt, portalname_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ClusterStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ClusterStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::ClusterStmt, indexname_), PROTOBUF_FIELD_OFFSET(::pg_query::ClusterStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, query_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, attlist_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, is_from_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, is_program_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, filename_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::CopyStmt, where_clause_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, table_elts_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, inh_relations_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, partbound_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, partspec_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, of_typename_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, constraints_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, oncommit_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, access_method_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStmt, if_not_exists_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, kind_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, oldstyle_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, defnames_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, args_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, definition_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::DefineStmt, replace_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, objects_), PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, remove_type_), PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, behavior_), PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, missing_ok_), PROTOBUF_FIELD_OFFSET(::pg_query::DropStmt, concurrent_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TruncateStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::TruncateStmt, relations_), PROTOBUF_FIELD_OFFSET(::pg_query::TruncateStmt, restart_seqs_), PROTOBUF_FIELD_OFFSET(::pg_query::TruncateStmt, behavior_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CommentStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CommentStmt, objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::CommentStmt, object_), PROTOBUF_FIELD_OFFSET(::pg_query::CommentStmt, comment_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::FetchStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::FetchStmt, direction_), PROTOBUF_FIELD_OFFSET(::pg_query::FetchStmt, how_many_), PROTOBUF_FIELD_OFFSET(::pg_query::FetchStmt, portalname_), PROTOBUF_FIELD_OFFSET(::pg_query::FetchStmt, ismove_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, idxname_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, access_method_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, table_space_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, index_params_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, index_including_params_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, exclude_op_names_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, idxcomment_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, index_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, old_node_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, old_create_subid_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, old_first_relfilenode_subid_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, unique_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, primary_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, isconstraint_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, deferrable_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, initdeferred_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, transformed_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, concurrent_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexStmt, reset_default_tblspc_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, is_procedure_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, replace_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, funcname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, parameters_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, return_type_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFunctionStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterFunctionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterFunctionStmt, objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterFunctionStmt, func_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterFunctionStmt, actions_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DoStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DoStmt, args_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, rename_type_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, relation_type_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, object_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, subname_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, newname_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, behavior_), PROTOBUF_FIELD_OFFSET(::pg_query::RenameStmt, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, rulename_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, event_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, instead_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, actions_), PROTOBUF_FIELD_OFFSET(::pg_query::RuleStmt, replace_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::NotifyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::NotifyStmt, conditionname_), PROTOBUF_FIELD_OFFSET(::pg_query::NotifyStmt, payload_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ListenStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ListenStmt, conditionname_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::UnlistenStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::UnlistenStmt, conditionname_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, kind_), PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, savepoint_name_), PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, gid_), PROTOBUF_FIELD_OFFSET(::pg_query::TransactionStmt, chain_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, view_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, aliases_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, query_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, replace_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::ViewStmt, with_check_option_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::LoadStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::LoadStmt, filename_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, domainname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, coll_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateDomainStmt, constraints_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatedbStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatedbStmt, dbname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatedbStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropdbStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DropdbStmt, dbname_), PROTOBUF_FIELD_OFFSET(::pg_query::DropdbStmt, missing_ok_), PROTOBUF_FIELD_OFFSET(::pg_query::DropdbStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::VacuumStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::VacuumStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::VacuumStmt, rels_), PROTOBUF_FIELD_OFFSET(::pg_query::VacuumStmt, is_vacuumcmd_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ExplainStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ExplainStmt, query_), PROTOBUF_FIELD_OFFSET(::pg_query::ExplainStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, query_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, into_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, relkind_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, is_select_into_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableAsStmt, if_not_exists_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, sequence_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, owner_id_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, for_identity_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSeqStmt, if_not_exists_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, sequence_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, for_identity_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSeqStmt, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::VariableSetStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::VariableSetStmt, kind_), PROTOBUF_FIELD_OFFSET(::pg_query::VariableSetStmt, name_), PROTOBUF_FIELD_OFFSET(::pg_query::VariableSetStmt, args_), PROTOBUF_FIELD_OFFSET(::pg_query::VariableSetStmt, is_local_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::VariableShowStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::VariableShowStmt, name_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DiscardStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DiscardStmt, target_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, trigname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, funcname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, args_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, row_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, timing_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, events_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, columns_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, when_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, isconstraint_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, transition_rels_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, deferrable_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, initdeferred_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTrigStmt, constrrel_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, replace_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, plname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, plhandler_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, plinline_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, plvalidator_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePLangStmt, pltrusted_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateRoleStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateRoleStmt, stmt_type_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateRoleStmt, role_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateRoleStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleStmt, role_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleStmt, action_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropRoleStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DropRoleStmt, roles_), PROTOBUF_FIELD_OFFSET(::pg_query::DropRoleStmt, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::LockStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::LockStmt, relations_), PROTOBUF_FIELD_OFFSET(::pg_query::LockStmt, mode_), PROTOBUF_FIELD_OFFSET(::pg_query::LockStmt, nowait_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ConstraintsSetStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ConstraintsSetStmt, constraints_), PROTOBUF_FIELD_OFFSET(::pg_query::ConstraintsSetStmt, deferred_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, kind_), PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, name_), PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::ReindexStmt, concurrent_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CheckPointStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, schemaname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, authrole_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, schema_elts_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSchemaStmt, if_not_exists_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseStmt, dbname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseSetStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseSetStmt, dbname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterDatabaseSetStmt, setstmt_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleSetStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleSetStmt, role_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleSetStmt, database_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterRoleSetStmt, setstmt_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, conversion_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, for_encoding_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, to_encoding_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, func_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateConversionStmt, def_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, sourcetype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, targettype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, func_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, context_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateCastStmt, inout_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, opclassname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, opfamilyname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, amname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, datatype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, items_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassStmt, is_default_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpFamilyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpFamilyStmt, opfamilyname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpFamilyStmt, amname_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterOpFamilyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterOpFamilyStmt, opfamilyname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOpFamilyStmt, amname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOpFamilyStmt, is_drop_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOpFamilyStmt, items_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::PrepareStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::PrepareStmt, name_), PROTOBUF_FIELD_OFFSET(::pg_query::PrepareStmt, argtypes_), PROTOBUF_FIELD_OFFSET(::pg_query::PrepareStmt, query_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ExecuteStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ExecuteStmt, name_), PROTOBUF_FIELD_OFFSET(::pg_query::ExecuteStmt, params_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DeallocateStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DeallocateStmt, name_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DeclareCursorStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DeclareCursorStmt, portalname_), PROTOBUF_FIELD_OFFSET(::pg_query::DeclareCursorStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::DeclareCursorStmt, query_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, owner_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, location_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTableSpaceStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropTableSpaceStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DropTableSpaceStmt, tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::DropTableSpaceStmt, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, object_type_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, object_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, extname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectDependsStmt, remove_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, object_type_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, object_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, newschema_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterObjectSchemaStmt, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, object_type_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, object_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOwnerStmt, newowner_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterOperatorStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterOperatorStmt, opername_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterOperatorStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTypeStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTypeStmt, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTypeStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropOwnedStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DropOwnedStmt, roles_), PROTOBUF_FIELD_OFFSET(::pg_query::DropOwnedStmt, behavior_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ReassignOwnedStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ReassignOwnedStmt, roles_), PROTOBUF_FIELD_OFFSET(::pg_query::ReassignOwnedStmt, newrole_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CompositeTypeStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CompositeTypeStmt, typevar_), PROTOBUF_FIELD_OFFSET(::pg_query::CompositeTypeStmt, coldeflist_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateEnumStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateEnumStmt, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateEnumStmt, vals_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateRangeStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateRangeStmt, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateRangeStmt, params_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, old_val_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, new_val_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, new_val_neighbor_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, new_val_is_after_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEnumStmt, skip_if_new_val_exists_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSDictionaryStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSDictionaryStmt, dictname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSDictionaryStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, kind_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, cfgname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, tokentype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, dicts_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, override_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, replace_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTSConfigurationStmt, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateFdwStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateFdwStmt, fdwname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFdwStmt, func_options_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateFdwStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterFdwStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterFdwStmt, fdwname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterFdwStmt, func_options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterFdwStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, servername_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, servertype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, version_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, fdwname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignServerStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterForeignServerStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterForeignServerStmt, servername_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterForeignServerStmt, version_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterForeignServerStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterForeignServerStmt, has_version_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, user_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, servername_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateUserMappingStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterUserMappingStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterUserMappingStmt, user_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterUserMappingStmt, servername_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterUserMappingStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropUserMappingStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DropUserMappingStmt, user_), PROTOBUF_FIELD_OFFSET(::pg_query::DropUserMappingStmt, servername_), PROTOBUF_FIELD_OFFSET(::pg_query::DropUserMappingStmt, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableSpaceOptionsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableSpaceOptionsStmt, tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableSpaceOptionsStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableSpaceOptionsStmt, is_reset_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, orig_tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, roles_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, new_tablespacename_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterTableMoveAllStmt, nowait_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, object_), PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, provider_), PROTOBUF_FIELD_OFFSET(::pg_query::SecLabelStmt, label_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignTableStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignTableStmt, base_stmt_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignTableStmt, servername_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateForeignTableStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, server_name_), PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, remote_schema_), PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, local_schema_), PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, list_type_), PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, table_list_), PROTOBUF_FIELD_OFFSET(::pg_query::ImportForeignSchemaStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateExtensionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateExtensionStmt, extname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateExtensionStmt, if_not_exists_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateExtensionStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionStmt, extname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, extname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, action_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, objtype_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterExtensionContentsStmt, object_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateEventTrigStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateEventTrigStmt, trigname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateEventTrigStmt, eventname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateEventTrigStmt, whenclause_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateEventTrigStmt, funcname_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterEventTrigStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterEventTrigStmt, trigname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterEventTrigStmt, tgenabled_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RefreshMatViewStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RefreshMatViewStmt, concurrent_), PROTOBUF_FIELD_OFFSET(::pg_query::RefreshMatViewStmt, skip_data_), PROTOBUF_FIELD_OFFSET(::pg_query::RefreshMatViewStmt, relation_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ReplicaIdentityStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ReplicaIdentityStmt, identity_type_), PROTOBUF_FIELD_OFFSET(::pg_query::ReplicaIdentityStmt, name_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterSystemStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterSystemStmt, setstmt_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, policy_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, table_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, cmd_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, permissive_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, roles_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, qual_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePolicyStmt, with_check_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, policy_name_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, table_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, roles_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, qual_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPolicyStmt, with_check_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, replace_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, lang_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, fromsql_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateTransformStmt, tosql_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateAmStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateAmStmt, amname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateAmStmt, handler_name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateAmStmt, amtype_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatePublicationStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreatePublicationStmt, pubname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePublicationStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePublicationStmt, tables_), PROTOBUF_FIELD_OFFSET(::pg_query::CreatePublicationStmt, for_all_tables_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, pubname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, options_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, tables_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, for_all_tables_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterPublicationStmt, table_action_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateSubscriptionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateSubscriptionStmt, subname_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSubscriptionStmt, conninfo_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSubscriptionStmt, publication_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateSubscriptionStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, kind_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, subname_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, conninfo_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, publication_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterSubscriptionStmt, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DropSubscriptionStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DropSubscriptionStmt, subname_), PROTOBUF_FIELD_OFFSET(::pg_query::DropSubscriptionStmt, missing_ok_), PROTOBUF_FIELD_OFFSET(::pg_query::DropSubscriptionStmt, behavior_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, defnames_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, stat_types_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, exprs_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, relations_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, stxcomment_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateStatsStmt, if_not_exists_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterCollationStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterCollationStmt, collname_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CallStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CallStmt, funccall_), PROTOBUF_FIELD_OFFSET(::pg_query::CallStmt, funcexpr_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterStatsStmt, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AlterStatsStmt, defnames_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterStatsStmt, stxstattarget_), PROTOBUF_FIELD_OFFSET(::pg_query::AlterStatsStmt, missing_ok_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, kind_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, name_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, lexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, rexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Expr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ColumnRef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ColumnRef, fields_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnRef, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ParamRef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ParamRef, number_), PROTOBUF_FIELD_OFFSET(::pg_query::ParamRef, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Const, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Const, val_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Const, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, funcname_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, args_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, agg_order_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, agg_filter_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, agg_within_group_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, agg_star_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, agg_distinct_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, func_variadic_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, over_), PROTOBUF_FIELD_OFFSET(::pg_query::FuncCall, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Star, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Indices, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Indices, is_slice_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Indices, lidx_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Indices, uidx_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Indirection, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::A_Indirection, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::A_Indirection, indirection_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::A_ArrayExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::A_ArrayExpr, elements_), PROTOBUF_FIELD_OFFSET(::pg_query::A_ArrayExpr, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, name_), PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, indirection_), PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, val_), PROTOBUF_FIELD_OFFSET(::pg_query::ResTarget, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::MultiAssignRef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::MultiAssignRef, source_), PROTOBUF_FIELD_OFFSET(::pg_query::MultiAssignRef, colno_), PROTOBUF_FIELD_OFFSET(::pg_query::MultiAssignRef, ncolumns_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TypeCast, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::TypeCast, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeCast, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeCast, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CollateClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CollateClause, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateClause, collname_), PROTOBUF_FIELD_OFFSET(::pg_query::CollateClause, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, node_), PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, sortby_dir_), PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, sortby_nulls_), PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, use_op_), PROTOBUF_FIELD_OFFSET(::pg_query::SortBy, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, name_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, refname_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, partition_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, order_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, frame_options_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, start_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, end_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowDef, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeSubselect, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeSubselect, lateral_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeSubselect, subquery_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeSubselect, alias_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, lateral_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, ordinality_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, is_rowsfrom_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, functions_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, alias_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeFunction, coldeflist_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, method_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, args_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, repeatable_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableSample, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, lateral_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, docexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, rowexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, namespaces_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, columns_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, alias_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFunc, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, colname_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, for_ordinality_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, is_not_null_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, colexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, coldefexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTableFuncCol, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, names_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, type_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, setof_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, pct_type_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, typmods_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, typemod_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, array_bounds_), PROTOBUF_FIELD_OFFSET(::pg_query::TypeName, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, colname_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, inhcount_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, is_local_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, is_not_null_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, is_from_type_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, storage_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, raw_default_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, cooked_default_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, identity_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, identity_sequence_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, generated_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, coll_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, coll_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, constraints_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, fdwoptions_), PROTOBUF_FIELD_OFFSET(::pg_query::ColumnDef, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, name_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, expr_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, indexcolname_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, collation_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, opclass_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, opclassopts_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, ordering_), PROTOBUF_FIELD_OFFSET(::pg_query::IndexElem, nulls_ordering_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, contype_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, conname_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, deferrable_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, initdeferred_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, location_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, is_no_inherit_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, raw_expr_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, cooked_expr_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, generated_when_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, keys_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, including_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, exclusions_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, options_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, indexname_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, indexspace_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, reset_default_tblspc_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, access_method_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, pktable_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, fk_attrs_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, pk_attrs_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, fk_matchtype_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, fk_upd_action_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, fk_del_action_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, old_conpfeqop_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, old_pktable_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, skip_validation_), PROTOBUF_FIELD_OFFSET(::pg_query::Constraint, initially_valid_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, defnamespace_), PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, defname_), PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, arg_), PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, defaction_), PROTOBUF_FIELD_OFFSET(::pg_query::DefElem, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, rtekind_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, relid_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, relkind_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, rellockmode_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, tablesample_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, subquery_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, security_barrier_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, jointype_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, joinmergedcols_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, joinaliasvars_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, joinleftcols_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, joinrightcols_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, functions_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, funcordinality_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, tablefunc_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, values_lists_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, ctename_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, ctelevelsup_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, self_reference_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, coltypes_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, coltypmods_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, colcollations_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, enrname_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, enrtuples_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, alias_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, eref_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, lateral_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, inh_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, in_from_cl_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, required_perms_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, check_as_user_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblEntry, security_quals_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, funcexpr_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, funccolcount_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, funccolnames_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, funccoltypes_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, funccoltypmods_), PROTOBUF_FIELD_OFFSET(::pg_query::RangeTblFunction, funccolcollations_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TableSampleClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::TableSampleClause, tsmhandler_), PROTOBUF_FIELD_OFFSET(::pg_query::TableSampleClause, args_), PROTOBUF_FIELD_OFFSET(::pg_query::TableSampleClause, repeatable_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, kind_), PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, relname_), PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, polname_), PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, qual_), PROTOBUF_FIELD_OFFSET(::pg_query::WithCheckOption, cascaded_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, tle_sort_group_ref_), PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, eqop_), PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, sortop_), PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, nulls_first_), PROTOBUF_FIELD_OFFSET(::pg_query::SortGroupClause, hashable_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::GroupingSet, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::GroupingSet, kind_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingSet, content_), PROTOBUF_FIELD_OFFSET(::pg_query::GroupingSet, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, name_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, refname_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, partition_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, order_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, frame_options_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, start_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, end_offset_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, start_in_range_func_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, end_in_range_func_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, in_range_coll_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, in_range_asc_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, in_range_nulls_first_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, winref_), PROTOBUF_FIELD_OFFSET(::pg_query::WindowClause, copied_order_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ObjectWithArgs, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ObjectWithArgs, objname_), PROTOBUF_FIELD_OFFSET(::pg_query::ObjectWithArgs, objargs_), PROTOBUF_FIELD_OFFSET(::pg_query::ObjectWithArgs, args_unspecified_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::AccessPriv, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::AccessPriv, priv_name_), PROTOBUF_FIELD_OFFSET(::pg_query::AccessPriv, cols_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, itemtype_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, name_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, number_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, order_family_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, class_args_), PROTOBUF_FIELD_OFFSET(::pg_query::CreateOpClassItem, storedtype_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TableLikeClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::TableLikeClause, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::TableLikeClause, options_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, name_), PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, arg_type_), PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, mode_), PROTOBUF_FIELD_OFFSET(::pg_query::FunctionParameter, defexpr_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::LockingClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::LockingClause, locked_rels_), PROTOBUF_FIELD_OFFSET(::pg_query::LockingClause, strength_), PROTOBUF_FIELD_OFFSET(::pg_query::LockingClause, wait_policy_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RowMarkClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RowMarkClause, rti_), PROTOBUF_FIELD_OFFSET(::pg_query::RowMarkClause, strength_), PROTOBUF_FIELD_OFFSET(::pg_query::RowMarkClause, wait_policy_), PROTOBUF_FIELD_OFFSET(::pg_query::RowMarkClause, pushed_down_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, xmloption_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, expr_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, type_name_), PROTOBUF_FIELD_OFFSET(::pg_query::XmlSerialize, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::WithClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::WithClause, ctes_), PROTOBUF_FIELD_OFFSET(::pg_query::WithClause, recursive_), PROTOBUF_FIELD_OFFSET(::pg_query::WithClause, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, index_elems_), PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, conname_), PROTOBUF_FIELD_OFFSET(::pg_query::InferClause, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, action_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, infer_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, target_list_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, where_clause_), PROTOBUF_FIELD_OFFSET(::pg_query::OnConflictClause, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, ctename_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, aliascolnames_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, ctematerialized_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, ctequery_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, location_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, cterecursive_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, cterefcount_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, ctecolnames_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, ctecoltypes_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, ctecoltypmods_), PROTOBUF_FIELD_OFFSET(::pg_query::CommonTableExpr, ctecolcollations_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::RoleSpec, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::RoleSpec, roletype_), PROTOBUF_FIELD_OFFSET(::pg_query::RoleSpec, rolename_), PROTOBUF_FIELD_OFFSET(::pg_query::RoleSpec, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::TriggerTransition, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::TriggerTransition, name_), PROTOBUF_FIELD_OFFSET(::pg_query::TriggerTransition, is_new_), PROTOBUF_FIELD_OFFSET(::pg_query::TriggerTransition, is_table_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, name_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, expr_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, collation_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, opclass_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionElem, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionSpec, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionSpec, strategy_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionSpec, part_params_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionSpec, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, strategy_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, is_default_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, modulus_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, remainder_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, listdatums_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, lowerdatums_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, upperdatums_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionBoundSpec, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionRangeDatum, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionRangeDatum, kind_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionRangeDatum, value_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionRangeDatum, location_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionCmd, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::PartitionCmd, name_), PROTOBUF_FIELD_OFFSET(::pg_query::PartitionCmd, bound_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::VacuumRelation, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::VacuumRelation, relation_), PROTOBUF_FIELD_OFFSET(::pg_query::VacuumRelation, oid_), PROTOBUF_FIELD_OFFSET(::pg_query::VacuumRelation, va_cols_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::InlineCodeBlock, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::InlineCodeBlock, source_text_), PROTOBUF_FIELD_OFFSET(::pg_query::InlineCodeBlock, lang_oid_), PROTOBUF_FIELD_OFFSET(::pg_query::InlineCodeBlock, lang_is_trusted_), PROTOBUF_FIELD_OFFSET(::pg_query::InlineCodeBlock, atomic_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::CallContext, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::CallContext, atomic_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::pg_query::ScanToken, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ ~0u, // no _weak_field_map_ PROTOBUF_FIELD_OFFSET(::pg_query::ScanToken, start_), PROTOBUF_FIELD_OFFSET(::pg_query::ScanToken, end_), PROTOBUF_FIELD_OFFSET(::pg_query::ScanToken, token_), PROTOBUF_FIELD_OFFSET(::pg_query::ScanToken, keyword_kind_), }; static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { { 0, -1, sizeof(::pg_query::ParseResult)}, { 7, -1, sizeof(::pg_query::ScanResult)}, { 14, -1, sizeof(::pg_query::Node)}, { 248, -1, sizeof(::pg_query::Integer)}, { 254, -1, sizeof(::pg_query::Float)}, { 260, -1, sizeof(::pg_query::String)}, { 266, -1, sizeof(::pg_query::BitString)}, { 272, -1, sizeof(::pg_query::Null)}, { 277, -1, sizeof(::pg_query::List)}, { 283, -1, sizeof(::pg_query::OidList)}, { 289, -1, sizeof(::pg_query::IntList)}, { 295, -1, sizeof(::pg_query::Bitmapset)}, { 301, -1, sizeof(::pg_query::Alias)}, { 308, -1, sizeof(::pg_query::RangeVar)}, { 320, -1, sizeof(::pg_query::TableFunc)}, { 337, -1, sizeof(::pg_query::Expr)}, { 342, -1, sizeof(::pg_query::Var)}, { 357, -1, sizeof(::pg_query::Param)}, { 369, -1, sizeof(::pg_query::Aggref)}, { 392, -1, sizeof(::pg_query::GroupingFunc)}, { 403, -1, sizeof(::pg_query::WindowFunc)}, { 419, -1, sizeof(::pg_query::SubscriptingRef)}, { 433, -1, sizeof(::pg_query::FuncExpr)}, { 448, -1, sizeof(::pg_query::NamedArgExpr)}, { 458, -1, sizeof(::pg_query::OpExpr)}, { 472, -1, sizeof(::pg_query::DistinctExpr)}, { 486, -1, sizeof(::pg_query::NullIfExpr)}, { 500, -1, sizeof(::pg_query::ScalarArrayOpExpr)}, { 512, -1, sizeof(::pg_query::BoolExpr)}, { 521, -1, sizeof(::pg_query::SubLink)}, { 533, -1, sizeof(::pg_query::SubPlan)}, { 555, -1, sizeof(::pg_query::AlternativeSubPlan)}, { 562, -1, sizeof(::pg_query::FieldSelect)}, { 573, -1, sizeof(::pg_query::FieldStore)}, { 583, -1, sizeof(::pg_query::RelabelType)}, { 595, -1, sizeof(::pg_query::CoerceViaIO)}, { 606, -1, sizeof(::pg_query::ArrayCoerceExpr)}, { 619, -1, sizeof(::pg_query::ConvertRowtypeExpr)}, { 629, -1, sizeof(::pg_query::CollateExpr)}, { 638, -1, sizeof(::pg_query::CaseExpr)}, { 650, -1, sizeof(::pg_query::CaseWhen)}, { 659, -1, sizeof(::pg_query::CaseTestExpr)}, { 668, -1, sizeof(::pg_query::ArrayExpr)}, { 680, -1, sizeof(::pg_query::RowExpr)}, { 691, -1, sizeof(::pg_query::RowCompareExpr)}, { 703, -1, sizeof(::pg_query::CoalesceExpr)}, { 713, -1, sizeof(::pg_query::MinMaxExpr)}, { 725, -1, sizeof(::pg_query::SQLValueFunction)}, { 735, -1, sizeof(::pg_query::XmlExpr)}, { 750, -1, sizeof(::pg_query::NullTest)}, { 760, -1, sizeof(::pg_query::BooleanTest)}, { 769, -1, sizeof(::pg_query::CoerceToDomain)}, { 781, -1, sizeof(::pg_query::CoerceToDomainValue)}, { 791, -1, sizeof(::pg_query::SetToDefault)}, { 801, -1, sizeof(::pg_query::CurrentOfExpr)}, { 810, -1, sizeof(::pg_query::NextValueExpr)}, { 818, -1, sizeof(::pg_query::InferenceElem)}, { 827, -1, sizeof(::pg_query::TargetEntry)}, { 840, -1, sizeof(::pg_query::RangeTblRef)}, { 846, -1, sizeof(::pg_query::JoinExpr)}, { 859, -1, sizeof(::pg_query::FromExpr)}, { 866, -1, sizeof(::pg_query::OnConflictExpr)}, { 879, -1, sizeof(::pg_query::IntoClause)}, { 892, -1, sizeof(::pg_query::RawStmt)}, { 900, -1, sizeof(::pg_query::Query)}, { 941, -1, sizeof(::pg_query::InsertStmt)}, { 953, -1, sizeof(::pg_query::DeleteStmt)}, { 963, -1, sizeof(::pg_query::UpdateStmt)}, { 974, -1, sizeof(::pg_query::SelectStmt)}, { 998, -1, sizeof(::pg_query::AlterTableStmt)}, { 1007, -1, sizeof(::pg_query::AlterTableCmd)}, { 1019, -1, sizeof(::pg_query::AlterDomainStmt)}, { 1030, -1, sizeof(::pg_query::SetOperationStmt)}, { 1043, -1, sizeof(::pg_query::GrantStmt)}, { 1056, -1, sizeof(::pg_query::GrantRoleStmt)}, { 1067, -1, sizeof(::pg_query::AlterDefaultPrivilegesStmt)}, { 1074, -1, sizeof(::pg_query::ClosePortalStmt)}, { 1080, -1, sizeof(::pg_query::ClusterStmt)}, { 1088, -1, sizeof(::pg_query::CopyStmt)}, { 1101, -1, sizeof(::pg_query::CreateStmt)}, { 1118, -1, sizeof(::pg_query::DefineStmt)}, { 1130, -1, sizeof(::pg_query::DropStmt)}, { 1140, -1, sizeof(::pg_query::TruncateStmt)}, { 1148, -1, sizeof(::pg_query::CommentStmt)}, { 1156, -1, sizeof(::pg_query::FetchStmt)}, { 1165, -1, sizeof(::pg_query::IndexStmt)}, { 1193, -1, sizeof(::pg_query::CreateFunctionStmt)}, { 1204, -1, sizeof(::pg_query::AlterFunctionStmt)}, { 1212, -1, sizeof(::pg_query::DoStmt)}, { 1218, -1, sizeof(::pg_query::RenameStmt)}, { 1231, -1, sizeof(::pg_query::RuleStmt)}, { 1243, -1, sizeof(::pg_query::NotifyStmt)}, { 1250, -1, sizeof(::pg_query::ListenStmt)}, { 1256, -1, sizeof(::pg_query::UnlistenStmt)}, { 1262, -1, sizeof(::pg_query::TransactionStmt)}, { 1272, -1, sizeof(::pg_query::ViewStmt)}, { 1283, -1, sizeof(::pg_query::LoadStmt)}, { 1289, -1, sizeof(::pg_query::CreateDomainStmt)}, { 1298, -1, sizeof(::pg_query::CreatedbStmt)}, { 1305, -1, sizeof(::pg_query::DropdbStmt)}, { 1313, -1, sizeof(::pg_query::VacuumStmt)}, { 1321, -1, sizeof(::pg_query::ExplainStmt)}, { 1328, -1, sizeof(::pg_query::CreateTableAsStmt)}, { 1338, -1, sizeof(::pg_query::CreateSeqStmt)}, { 1348, -1, sizeof(::pg_query::AlterSeqStmt)}, { 1357, -1, sizeof(::pg_query::VariableSetStmt)}, { 1366, -1, sizeof(::pg_query::VariableShowStmt)}, { 1372, -1, sizeof(::pg_query::DiscardStmt)}, { 1378, -1, sizeof(::pg_query::CreateTrigStmt)}, { 1397, -1, sizeof(::pg_query::CreatePLangStmt)}, { 1408, -1, sizeof(::pg_query::CreateRoleStmt)}, { 1416, -1, sizeof(::pg_query::AlterRoleStmt)}, { 1424, -1, sizeof(::pg_query::DropRoleStmt)}, { 1431, -1, sizeof(::pg_query::LockStmt)}, { 1439, -1, sizeof(::pg_query::ConstraintsSetStmt)}, { 1446, -1, sizeof(::pg_query::ReindexStmt)}, { 1456, -1, sizeof(::pg_query::CheckPointStmt)}, { 1461, -1, sizeof(::pg_query::CreateSchemaStmt)}, { 1470, -1, sizeof(::pg_query::AlterDatabaseStmt)}, { 1477, -1, sizeof(::pg_query::AlterDatabaseSetStmt)}, { 1484, -1, sizeof(::pg_query::AlterRoleSetStmt)}, { 1492, -1, sizeof(::pg_query::CreateConversionStmt)}, { 1502, -1, sizeof(::pg_query::CreateCastStmt)}, { 1512, -1, sizeof(::pg_query::CreateOpClassStmt)}, { 1523, -1, sizeof(::pg_query::CreateOpFamilyStmt)}, { 1530, -1, sizeof(::pg_query::AlterOpFamilyStmt)}, { 1539, -1, sizeof(::pg_query::PrepareStmt)}, { 1547, -1, sizeof(::pg_query::ExecuteStmt)}, { 1554, -1, sizeof(::pg_query::DeallocateStmt)}, { 1560, -1, sizeof(::pg_query::DeclareCursorStmt)}, { 1568, -1, sizeof(::pg_query::CreateTableSpaceStmt)}, { 1577, -1, sizeof(::pg_query::DropTableSpaceStmt)}, { 1584, -1, sizeof(::pg_query::AlterObjectDependsStmt)}, { 1594, -1, sizeof(::pg_query::AlterObjectSchemaStmt)}, { 1604, -1, sizeof(::pg_query::AlterOwnerStmt)}, { 1613, -1, sizeof(::pg_query::AlterOperatorStmt)}, { 1620, -1, sizeof(::pg_query::AlterTypeStmt)}, { 1627, -1, sizeof(::pg_query::DropOwnedStmt)}, { 1634, -1, sizeof(::pg_query::ReassignOwnedStmt)}, { 1641, -1, sizeof(::pg_query::CompositeTypeStmt)}, { 1648, -1, sizeof(::pg_query::CreateEnumStmt)}, { 1655, -1, sizeof(::pg_query::CreateRangeStmt)}, { 1662, -1, sizeof(::pg_query::AlterEnumStmt)}, { 1673, -1, sizeof(::pg_query::AlterTSDictionaryStmt)}, { 1680, -1, sizeof(::pg_query::AlterTSConfigurationStmt)}, { 1692, -1, sizeof(::pg_query::CreateFdwStmt)}, { 1700, -1, sizeof(::pg_query::AlterFdwStmt)}, { 1708, -1, sizeof(::pg_query::CreateForeignServerStmt)}, { 1719, -1, sizeof(::pg_query::AlterForeignServerStmt)}, { 1728, -1, sizeof(::pg_query::CreateUserMappingStmt)}, { 1737, -1, sizeof(::pg_query::AlterUserMappingStmt)}, { 1745, -1, sizeof(::pg_query::DropUserMappingStmt)}, { 1753, -1, sizeof(::pg_query::AlterTableSpaceOptionsStmt)}, { 1761, -1, sizeof(::pg_query::AlterTableMoveAllStmt)}, { 1771, -1, sizeof(::pg_query::SecLabelStmt)}, { 1780, -1, sizeof(::pg_query::CreateForeignTableStmt)}, { 1788, -1, sizeof(::pg_query::ImportForeignSchemaStmt)}, { 1799, -1, sizeof(::pg_query::CreateExtensionStmt)}, { 1807, -1, sizeof(::pg_query::AlterExtensionStmt)}, { 1814, -1, sizeof(::pg_query::AlterExtensionContentsStmt)}, { 1823, -1, sizeof(::pg_query::CreateEventTrigStmt)}, { 1832, -1, sizeof(::pg_query::AlterEventTrigStmt)}, { 1839, -1, sizeof(::pg_query::RefreshMatViewStmt)}, { 1847, -1, sizeof(::pg_query::ReplicaIdentityStmt)}, { 1854, -1, sizeof(::pg_query::AlterSystemStmt)}, { 1860, -1, sizeof(::pg_query::CreatePolicyStmt)}, { 1872, -1, sizeof(::pg_query::AlterPolicyStmt)}, { 1882, -1, sizeof(::pg_query::CreateTransformStmt)}, { 1892, -1, sizeof(::pg_query::CreateAmStmt)}, { 1900, -1, sizeof(::pg_query::CreatePublicationStmt)}, { 1909, -1, sizeof(::pg_query::AlterPublicationStmt)}, { 1919, -1, sizeof(::pg_query::CreateSubscriptionStmt)}, { 1928, -1, sizeof(::pg_query::AlterSubscriptionStmt)}, { 1938, -1, sizeof(::pg_query::DropSubscriptionStmt)}, { 1946, -1, sizeof(::pg_query::CreateStatsStmt)}, { 1957, -1, sizeof(::pg_query::AlterCollationStmt)}, { 1963, -1, sizeof(::pg_query::CallStmt)}, { 1970, -1, sizeof(::pg_query::AlterStatsStmt)}, { 1978, -1, sizeof(::pg_query::A_Expr)}, { 1988, -1, sizeof(::pg_query::ColumnRef)}, { 1995, -1, sizeof(::pg_query::ParamRef)}, { 2002, -1, sizeof(::pg_query::A_Const)}, { 2009, -1, sizeof(::pg_query::FuncCall)}, { 2024, -1, sizeof(::pg_query::A_Star)}, { 2029, -1, sizeof(::pg_query::A_Indices)}, { 2037, -1, sizeof(::pg_query::A_Indirection)}, { 2044, -1, sizeof(::pg_query::A_ArrayExpr)}, { 2051, -1, sizeof(::pg_query::ResTarget)}, { 2060, -1, sizeof(::pg_query::MultiAssignRef)}, { 2068, -1, sizeof(::pg_query::TypeCast)}, { 2076, -1, sizeof(::pg_query::CollateClause)}, { 2084, -1, sizeof(::pg_query::SortBy)}, { 2094, -1, sizeof(::pg_query::WindowDef)}, { 2107, -1, sizeof(::pg_query::RangeSubselect)}, { 2115, -1, sizeof(::pg_query::RangeFunction)}, { 2126, -1, sizeof(::pg_query::RangeTableSample)}, { 2136, -1, sizeof(::pg_query::RangeTableFunc)}, { 2148, -1, sizeof(::pg_query::RangeTableFuncCol)}, { 2160, -1, sizeof(::pg_query::TypeName)}, { 2173, -1, sizeof(::pg_query::ColumnDef)}, { 2195, -1, sizeof(::pg_query::IndexElem)}, { 2208, -1, sizeof(::pg_query::Constraint)}, { 2241, -1, sizeof(::pg_query::DefElem)}, { 2251, -1, sizeof(::pg_query::RangeTblEntry)}, { 2288, -1, sizeof(::pg_query::RangeTblFunction)}, { 2299, -1, sizeof(::pg_query::TableSampleClause)}, { 2307, -1, sizeof(::pg_query::WithCheckOption)}, { 2317, -1, sizeof(::pg_query::SortGroupClause)}, { 2327, -1, sizeof(::pg_query::GroupingSet)}, { 2335, -1, sizeof(::pg_query::WindowClause)}, { 2354, -1, sizeof(::pg_query::ObjectWithArgs)}, { 2362, -1, sizeof(::pg_query::AccessPriv)}, { 2369, -1, sizeof(::pg_query::CreateOpClassItem)}, { 2380, -1, sizeof(::pg_query::TableLikeClause)}, { 2387, -1, sizeof(::pg_query::FunctionParameter)}, { 2396, -1, sizeof(::pg_query::LockingClause)}, { 2404, -1, sizeof(::pg_query::RowMarkClause)}, { 2413, -1, sizeof(::pg_query::XmlSerialize)}, { 2422, -1, sizeof(::pg_query::WithClause)}, { 2430, -1, sizeof(::pg_query::InferClause)}, { 2439, -1, sizeof(::pg_query::OnConflictClause)}, { 2449, -1, sizeof(::pg_query::CommonTableExpr)}, { 2465, -1, sizeof(::pg_query::RoleSpec)}, { 2473, -1, sizeof(::pg_query::TriggerTransition)}, { 2481, -1, sizeof(::pg_query::PartitionElem)}, { 2491, -1, sizeof(::pg_query::PartitionSpec)}, { 2499, -1, sizeof(::pg_query::PartitionBoundSpec)}, { 2512, -1, sizeof(::pg_query::PartitionRangeDatum)}, { 2520, -1, sizeof(::pg_query::PartitionCmd)}, { 2527, -1, sizeof(::pg_query::VacuumRelation)}, { 2535, -1, sizeof(::pg_query::InlineCodeBlock)}, { 2544, -1, sizeof(::pg_query::CallContext)}, { 2550, -1, sizeof(::pg_query::ScanToken)}, }; static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = { reinterpret_cast(&::pg_query::_ParseResult_default_instance_), reinterpret_cast(&::pg_query::_ScanResult_default_instance_), reinterpret_cast(&::pg_query::_Node_default_instance_), reinterpret_cast(&::pg_query::_Integer_default_instance_), reinterpret_cast(&::pg_query::_Float_default_instance_), reinterpret_cast(&::pg_query::_String_default_instance_), reinterpret_cast(&::pg_query::_BitString_default_instance_), reinterpret_cast(&::pg_query::_Null_default_instance_), reinterpret_cast(&::pg_query::_List_default_instance_), reinterpret_cast(&::pg_query::_OidList_default_instance_), reinterpret_cast(&::pg_query::_IntList_default_instance_), reinterpret_cast(&::pg_query::_Bitmapset_default_instance_), reinterpret_cast(&::pg_query::_Alias_default_instance_), reinterpret_cast(&::pg_query::_RangeVar_default_instance_), reinterpret_cast(&::pg_query::_TableFunc_default_instance_), reinterpret_cast(&::pg_query::_Expr_default_instance_), reinterpret_cast(&::pg_query::_Var_default_instance_), reinterpret_cast(&::pg_query::_Param_default_instance_), reinterpret_cast(&::pg_query::_Aggref_default_instance_), reinterpret_cast(&::pg_query::_GroupingFunc_default_instance_), reinterpret_cast(&::pg_query::_WindowFunc_default_instance_), reinterpret_cast(&::pg_query::_SubscriptingRef_default_instance_), reinterpret_cast(&::pg_query::_FuncExpr_default_instance_), reinterpret_cast(&::pg_query::_NamedArgExpr_default_instance_), reinterpret_cast(&::pg_query::_OpExpr_default_instance_), reinterpret_cast(&::pg_query::_DistinctExpr_default_instance_), reinterpret_cast(&::pg_query::_NullIfExpr_default_instance_), reinterpret_cast(&::pg_query::_ScalarArrayOpExpr_default_instance_), reinterpret_cast(&::pg_query::_BoolExpr_default_instance_), reinterpret_cast(&::pg_query::_SubLink_default_instance_), reinterpret_cast(&::pg_query::_SubPlan_default_instance_), reinterpret_cast(&::pg_query::_AlternativeSubPlan_default_instance_), reinterpret_cast(&::pg_query::_FieldSelect_default_instance_), reinterpret_cast(&::pg_query::_FieldStore_default_instance_), reinterpret_cast(&::pg_query::_RelabelType_default_instance_), reinterpret_cast(&::pg_query::_CoerceViaIO_default_instance_), reinterpret_cast(&::pg_query::_ArrayCoerceExpr_default_instance_), reinterpret_cast(&::pg_query::_ConvertRowtypeExpr_default_instance_), reinterpret_cast(&::pg_query::_CollateExpr_default_instance_), reinterpret_cast(&::pg_query::_CaseExpr_default_instance_), reinterpret_cast(&::pg_query::_CaseWhen_default_instance_), reinterpret_cast(&::pg_query::_CaseTestExpr_default_instance_), reinterpret_cast(&::pg_query::_ArrayExpr_default_instance_), reinterpret_cast(&::pg_query::_RowExpr_default_instance_), reinterpret_cast(&::pg_query::_RowCompareExpr_default_instance_), reinterpret_cast(&::pg_query::_CoalesceExpr_default_instance_), reinterpret_cast(&::pg_query::_MinMaxExpr_default_instance_), reinterpret_cast(&::pg_query::_SQLValueFunction_default_instance_), reinterpret_cast(&::pg_query::_XmlExpr_default_instance_), reinterpret_cast(&::pg_query::_NullTest_default_instance_), reinterpret_cast(&::pg_query::_BooleanTest_default_instance_), reinterpret_cast(&::pg_query::_CoerceToDomain_default_instance_), reinterpret_cast(&::pg_query::_CoerceToDomainValue_default_instance_), reinterpret_cast(&::pg_query::_SetToDefault_default_instance_), reinterpret_cast(&::pg_query::_CurrentOfExpr_default_instance_), reinterpret_cast(&::pg_query::_NextValueExpr_default_instance_), reinterpret_cast(&::pg_query::_InferenceElem_default_instance_), reinterpret_cast(&::pg_query::_TargetEntry_default_instance_), reinterpret_cast(&::pg_query::_RangeTblRef_default_instance_), reinterpret_cast(&::pg_query::_JoinExpr_default_instance_), reinterpret_cast(&::pg_query::_FromExpr_default_instance_), reinterpret_cast(&::pg_query::_OnConflictExpr_default_instance_), reinterpret_cast(&::pg_query::_IntoClause_default_instance_), reinterpret_cast(&::pg_query::_RawStmt_default_instance_), reinterpret_cast(&::pg_query::_Query_default_instance_), reinterpret_cast(&::pg_query::_InsertStmt_default_instance_), reinterpret_cast(&::pg_query::_DeleteStmt_default_instance_), reinterpret_cast(&::pg_query::_UpdateStmt_default_instance_), reinterpret_cast(&::pg_query::_SelectStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterTableStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterTableCmd_default_instance_), reinterpret_cast(&::pg_query::_AlterDomainStmt_default_instance_), reinterpret_cast(&::pg_query::_SetOperationStmt_default_instance_), reinterpret_cast(&::pg_query::_GrantStmt_default_instance_), reinterpret_cast(&::pg_query::_GrantRoleStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterDefaultPrivilegesStmt_default_instance_), reinterpret_cast(&::pg_query::_ClosePortalStmt_default_instance_), reinterpret_cast(&::pg_query::_ClusterStmt_default_instance_), reinterpret_cast(&::pg_query::_CopyStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateStmt_default_instance_), reinterpret_cast(&::pg_query::_DefineStmt_default_instance_), reinterpret_cast(&::pg_query::_DropStmt_default_instance_), reinterpret_cast(&::pg_query::_TruncateStmt_default_instance_), reinterpret_cast(&::pg_query::_CommentStmt_default_instance_), reinterpret_cast(&::pg_query::_FetchStmt_default_instance_), reinterpret_cast(&::pg_query::_IndexStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateFunctionStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterFunctionStmt_default_instance_), reinterpret_cast(&::pg_query::_DoStmt_default_instance_), reinterpret_cast(&::pg_query::_RenameStmt_default_instance_), reinterpret_cast(&::pg_query::_RuleStmt_default_instance_), reinterpret_cast(&::pg_query::_NotifyStmt_default_instance_), reinterpret_cast(&::pg_query::_ListenStmt_default_instance_), reinterpret_cast(&::pg_query::_UnlistenStmt_default_instance_), reinterpret_cast(&::pg_query::_TransactionStmt_default_instance_), reinterpret_cast(&::pg_query::_ViewStmt_default_instance_), reinterpret_cast(&::pg_query::_LoadStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateDomainStmt_default_instance_), reinterpret_cast(&::pg_query::_CreatedbStmt_default_instance_), reinterpret_cast(&::pg_query::_DropdbStmt_default_instance_), reinterpret_cast(&::pg_query::_VacuumStmt_default_instance_), reinterpret_cast(&::pg_query::_ExplainStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateTableAsStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateSeqStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterSeqStmt_default_instance_), reinterpret_cast(&::pg_query::_VariableSetStmt_default_instance_), reinterpret_cast(&::pg_query::_VariableShowStmt_default_instance_), reinterpret_cast(&::pg_query::_DiscardStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateTrigStmt_default_instance_), reinterpret_cast(&::pg_query::_CreatePLangStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateRoleStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterRoleStmt_default_instance_), reinterpret_cast(&::pg_query::_DropRoleStmt_default_instance_), reinterpret_cast(&::pg_query::_LockStmt_default_instance_), reinterpret_cast(&::pg_query::_ConstraintsSetStmt_default_instance_), reinterpret_cast(&::pg_query::_ReindexStmt_default_instance_), reinterpret_cast(&::pg_query::_CheckPointStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateSchemaStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterDatabaseStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterDatabaseSetStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterRoleSetStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateConversionStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateCastStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateOpClassStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateOpFamilyStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterOpFamilyStmt_default_instance_), reinterpret_cast(&::pg_query::_PrepareStmt_default_instance_), reinterpret_cast(&::pg_query::_ExecuteStmt_default_instance_), reinterpret_cast(&::pg_query::_DeallocateStmt_default_instance_), reinterpret_cast(&::pg_query::_DeclareCursorStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateTableSpaceStmt_default_instance_), reinterpret_cast(&::pg_query::_DropTableSpaceStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterObjectDependsStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterObjectSchemaStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterOwnerStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterOperatorStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterTypeStmt_default_instance_), reinterpret_cast(&::pg_query::_DropOwnedStmt_default_instance_), reinterpret_cast(&::pg_query::_ReassignOwnedStmt_default_instance_), reinterpret_cast(&::pg_query::_CompositeTypeStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateEnumStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateRangeStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterEnumStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterTSDictionaryStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterTSConfigurationStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateFdwStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterFdwStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateForeignServerStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterForeignServerStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateUserMappingStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterUserMappingStmt_default_instance_), reinterpret_cast(&::pg_query::_DropUserMappingStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterTableSpaceOptionsStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterTableMoveAllStmt_default_instance_), reinterpret_cast(&::pg_query::_SecLabelStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateForeignTableStmt_default_instance_), reinterpret_cast(&::pg_query::_ImportForeignSchemaStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateExtensionStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterExtensionStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterExtensionContentsStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateEventTrigStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterEventTrigStmt_default_instance_), reinterpret_cast(&::pg_query::_RefreshMatViewStmt_default_instance_), reinterpret_cast(&::pg_query::_ReplicaIdentityStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterSystemStmt_default_instance_), reinterpret_cast(&::pg_query::_CreatePolicyStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterPolicyStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateTransformStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateAmStmt_default_instance_), reinterpret_cast(&::pg_query::_CreatePublicationStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterPublicationStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateSubscriptionStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterSubscriptionStmt_default_instance_), reinterpret_cast(&::pg_query::_DropSubscriptionStmt_default_instance_), reinterpret_cast(&::pg_query::_CreateStatsStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterCollationStmt_default_instance_), reinterpret_cast(&::pg_query::_CallStmt_default_instance_), reinterpret_cast(&::pg_query::_AlterStatsStmt_default_instance_), reinterpret_cast(&::pg_query::_A_Expr_default_instance_), reinterpret_cast(&::pg_query::_ColumnRef_default_instance_), reinterpret_cast(&::pg_query::_ParamRef_default_instance_), reinterpret_cast(&::pg_query::_A_Const_default_instance_), reinterpret_cast(&::pg_query::_FuncCall_default_instance_), reinterpret_cast(&::pg_query::_A_Star_default_instance_), reinterpret_cast(&::pg_query::_A_Indices_default_instance_), reinterpret_cast(&::pg_query::_A_Indirection_default_instance_), reinterpret_cast(&::pg_query::_A_ArrayExpr_default_instance_), reinterpret_cast(&::pg_query::_ResTarget_default_instance_), reinterpret_cast(&::pg_query::_MultiAssignRef_default_instance_), reinterpret_cast(&::pg_query::_TypeCast_default_instance_), reinterpret_cast(&::pg_query::_CollateClause_default_instance_), reinterpret_cast(&::pg_query::_SortBy_default_instance_), reinterpret_cast(&::pg_query::_WindowDef_default_instance_), reinterpret_cast(&::pg_query::_RangeSubselect_default_instance_), reinterpret_cast(&::pg_query::_RangeFunction_default_instance_), reinterpret_cast(&::pg_query::_RangeTableSample_default_instance_), reinterpret_cast(&::pg_query::_RangeTableFunc_default_instance_), reinterpret_cast(&::pg_query::_RangeTableFuncCol_default_instance_), reinterpret_cast(&::pg_query::_TypeName_default_instance_), reinterpret_cast(&::pg_query::_ColumnDef_default_instance_), reinterpret_cast(&::pg_query::_IndexElem_default_instance_), reinterpret_cast(&::pg_query::_Constraint_default_instance_), reinterpret_cast(&::pg_query::_DefElem_default_instance_), reinterpret_cast(&::pg_query::_RangeTblEntry_default_instance_), reinterpret_cast(&::pg_query::_RangeTblFunction_default_instance_), reinterpret_cast(&::pg_query::_TableSampleClause_default_instance_), reinterpret_cast(&::pg_query::_WithCheckOption_default_instance_), reinterpret_cast(&::pg_query::_SortGroupClause_default_instance_), reinterpret_cast(&::pg_query::_GroupingSet_default_instance_), reinterpret_cast(&::pg_query::_WindowClause_default_instance_), reinterpret_cast(&::pg_query::_ObjectWithArgs_default_instance_), reinterpret_cast(&::pg_query::_AccessPriv_default_instance_), reinterpret_cast(&::pg_query::_CreateOpClassItem_default_instance_), reinterpret_cast(&::pg_query::_TableLikeClause_default_instance_), reinterpret_cast(&::pg_query::_FunctionParameter_default_instance_), reinterpret_cast(&::pg_query::_LockingClause_default_instance_), reinterpret_cast(&::pg_query::_RowMarkClause_default_instance_), reinterpret_cast(&::pg_query::_XmlSerialize_default_instance_), reinterpret_cast(&::pg_query::_WithClause_default_instance_), reinterpret_cast(&::pg_query::_InferClause_default_instance_), reinterpret_cast(&::pg_query::_OnConflictClause_default_instance_), reinterpret_cast(&::pg_query::_CommonTableExpr_default_instance_), reinterpret_cast(&::pg_query::_RoleSpec_default_instance_), reinterpret_cast(&::pg_query::_TriggerTransition_default_instance_), reinterpret_cast(&::pg_query::_PartitionElem_default_instance_), reinterpret_cast(&::pg_query::_PartitionSpec_default_instance_), reinterpret_cast(&::pg_query::_PartitionBoundSpec_default_instance_), reinterpret_cast(&::pg_query::_PartitionRangeDatum_default_instance_), reinterpret_cast(&::pg_query::_PartitionCmd_default_instance_), reinterpret_cast(&::pg_query::_VacuumRelation_default_instance_), reinterpret_cast(&::pg_query::_InlineCodeBlock_default_instance_), reinterpret_cast(&::pg_query::_CallContext_default_instance_), reinterpret_cast(&::pg_query::_ScanToken_default_instance_), }; const char descriptor_table_protodef_protobuf_2fpg_5fquery_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = { '\n', '\027', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'p', 'r', 'o', 't', 'o', '\022', '\010', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '\"', '@', '\n', '\013', 'P', 'a', 'r', 's', 'e', 'R', 'e', 's', 'u', 'l', 't', '\022', '\017', '\n', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\005', '\022', ' ', '\n', '\005', 's', 't', 'm', 't', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'w', 'S', 't', 'm', 't', '\"', 'B', '\n', '\n', 'S', 'c', 'a', 'n', 'R', 'e', 's', 'u', 'l', 't', '\022', '\017', '\n', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\005', '\022', '#', '\n', '\006', 't', 'o', 'k', 'e', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'c', 'a', 'n', 'T', 'o', 'k', 'e', 'n', '\"', '\256', 'w', '\n', '\004', 'N', 'o', 'd', 'e', '\022', '\'', '\n', '\005', 'a', 'l', 'i', 'a', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'H', '\000', 'R', '\005', 'A', 'l', 'i', 'a', 's', '\022', '1', '\n', '\t', 'r', 'a', 'n', 'g', 'e', '_', 'v', 'a', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'H', '\000', 'R', '\010', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', '\022', '4', '\n', '\n', 't', 'a', 'b', 'l', 'e', '_', 'f', 'u', 'n', 'c', '\030', '\003', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', 'H', '\000', 'R', '\t', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', '\022', '$', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\004', 'E', 'x', 'p', 'r', '\022', '!', '\n', '\003', 'v', 'a', 'r', '\030', '\005', ' ', '\001', '(', '\013', '2', '\r', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'a', 'r', 'H', '\000', 'R', '\003', 'V', 'a', 'r', '\022', '\'', '\n', '\005', 'p', 'a', 'r', 'a', 'm', '\030', '\006', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 'a', 'm', 'H', '\000', 'R', '\005', 'P', 'a', 'r', 'a', 'm', '\022', '*', '\n', '\006', 'a', 'g', 'g', 'r', 'e', 'f', '\030', '\007', ' ', '\001', '(', '\013', '2', '\020', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'g', 'g', 'r', 'e', 'f', 'H', '\000', 'R', '\006', 'A', 'g', 'g', 'r', 'e', 'f', '\022', '=', '\n', '\r', 'g', 'r', 'o', 'u', 'p', 'i', 'n', 'g', '_', 'f', 'u', 'n', 'c', '\030', '\010', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'G', 'r', 'o', 'u', 'p', 'i', 'n', 'g', 'F', 'u', 'n', 'c', 'H', '\000', 'R', '\014', 'G', 'r', 'o', 'u', 'p', 'i', 'n', 'g', 'F', 'u', 'n', 'c', '\022', '7', '\n', '\013', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'f', 'u', 'n', 'c', '\030', '\t', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 'n', 'd', 'o', 'w', 'F', 'u', 'n', 'c', 'H', '\000', 'R', '\n', 'W', 'i', 'n', 'd', 'o', 'w', 'F', 'u', 'n', 'c', '\022', 'F', '\n', '\020', 's', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'n', 'g', '_', 'r', 'e', 'f', '\030', '\n', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'n', 'g', 'R', 'e', 'f', 'H', '\000', 'R', '\017', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'n', 'g', 'R', 'e', 'f', '\022', '1', '\n', '\t', 'f', 'u', 'n', 'c', '_', 'e', 'x', 'p', 'r', '\030', '\013', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'u', 'n', 'c', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\010', 'F', 'u', 'n', 'c', 'E', 'x', 'p', 'r', '\022', '>', '\n', '\016', 'n', 'a', 'm', 'e', 'd', '_', 'a', 'r', 'g', '_', 'e', 'x', 'p', 'r', '\030', '\014', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'a', 'm', 'e', 'd', 'A', 'r', 'g', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\014', 'N', 'a', 'm', 'e', 'd', 'A', 'r', 'g', 'E', 'x', 'p', 'r', '\022', '+', '\n', '\007', 'o', 'p', '_', 'e', 'x', 'p', 'r', '\030', '\r', ' ', '\001', '(', '\013', '2', '\020', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'p', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\006', 'O', 'p', 'E', 'x', 'p', 'r', '\022', '=', '\n', '\r', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '_', 'e', 'x', 'p', 'r', '\030', '\016', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'i', 's', 't', 'i', 'n', 'c', 't', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\014', 'D', 'i', 's', 't', 'i', 'n', 'c', 't', 'E', 'x', 'p', 'r', '\022', '8', '\n', '\014', 'n', 'u', 'l', 'l', '_', 'i', 'f', '_', 'e', 'x', 'p', 'r', '\030', '\017', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'u', 'l', 'l', 'I', 'f', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\n', 'N', 'u', 'l', 'l', 'I', 'f', 'E', 'x', 'p', 'r', '\022', 'N', '\n', '\024', 's', 'c', 'a', 'l', 'a', 'r', '_', 'a', 'r', 'r', 'a', 'y', '_', 'o', 'p', '_', 'e', 'x', 'p', 'r', '\030', '\020', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'c', 'a', 'l', 'a', 'r', 'A', 'r', 'r', 'a', 'y', 'O', 'p', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\021', 'S', 'c', 'a', 'l', 'a', 'r', 'A', 'r', 'r', 'a', 'y', 'O', 'p', 'E', 'x', 'p', 'r', '\022', '1', '\n', '\t', 'b', 'o', 'o', 'l', '_', 'e', 'x', 'p', 'r', '\030', '\021', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'B', 'o', 'o', 'l', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\010', 'B', 'o', 'o', 'l', 'E', 'x', 'p', 'r', '\022', '.', '\n', '\010', 's', 'u', 'b', '_', 'l', 'i', 'n', 'k', '\030', '\022', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'u', 'b', 'L', 'i', 'n', 'k', 'H', '\000', 'R', '\007', 'S', 'u', 'b', 'L', 'i', 'n', 'k', '\022', '.', '\n', '\010', 's', 'u', 'b', '_', 'p', 'l', 'a', 'n', '\030', '\023', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'u', 'b', 'P', 'l', 'a', 'n', 'H', '\000', 'R', '\007', 'S', 'u', 'b', 'P', 'l', 'a', 'n', '\022', 'P', '\n', '\024', 'a', 'l', 't', 'e', 'r', 'n', 'a', 't', 'i', 'v', 'e', '_', 's', 'u', 'b', '_', 'p', 'l', 'a', 'n', '\030', '\024', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'n', 'a', 't', 'i', 'v', 'e', 'S', 'u', 'b', 'P', 'l', 'a', 'n', 'H', '\000', 'R', '\022', 'A', 'l', 't', 'e', 'r', 'n', 'a', 't', 'i', 'v', 'e', 'S', 'u', 'b', 'P', 'l', 'a', 'n', '\022', ':', '\n', '\014', 'f', 'i', 'e', 'l', 'd', '_', 's', 'e', 'l', 'e', 'c', 't', '\030', '\025', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'i', 'e', 'l', 'd', 'S', 'e', 'l', 'e', 'c', 't', 'H', '\000', 'R', '\013', 'F', 'i', 'e', 'l', 'd', 'S', 'e', 'l', 'e', 'c', 't', '\022', '7', '\n', '\013', 'f', 'i', 'e', 'l', 'd', '_', 's', 't', 'o', 'r', 'e', '\030', '\026', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'i', 'e', 'l', 'd', 'S', 't', 'o', 'r', 'e', 'H', '\000', 'R', '\n', 'F', 'i', 'e', 'l', 'd', 'S', 't', 'o', 'r', 'e', '\022', ':', '\n', '\014', 'r', 'e', 'l', 'a', 'b', 'e', 'l', '_', 't', 'y', 'p', 'e', '\030', '\027', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'e', 'l', 'a', 'b', 'e', 'l', 'T', 'y', 'p', 'e', 'H', '\000', 'R', '\013', 'R', 'e', 'l', 'a', 'b', 'e', 'l', 'T', 'y', 'p', 'e', '\022', ';', '\n', '\r', 'c', 'o', 'e', 'r', 'c', 'e', '_', 'v', 'i', 'a', '_', 'i', 'o', '\030', '\030', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'e', 'V', 'i', 'a', 'I', 'O', 'H', '\000', 'R', '\013', 'C', 'o', 'e', 'r', 'c', 'e', 'V', 'i', 'a', 'I', 'O', '\022', 'G', '\n', '\021', 'a', 'r', 'r', 'a', 'y', '_', 'c', 'o', 'e', 'r', 'c', 'e', '_', 'e', 'x', 'p', 'r', '\030', '\031', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'r', 'r', 'a', 'y', 'C', 'o', 'e', 'r', 'c', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\017', 'A', 'r', 'r', 'a', 'y', 'C', 'o', 'e', 'r', 'c', 'e', 'E', 'x', 'p', 'r', '\022', 'P', '\n', '\024', 'c', 'o', 'n', 'v', 'e', 'r', 't', '_', 'r', 'o', 'w', 't', 'y', 'p', 'e', '_', 'e', 'x', 'p', 'r', '\030', '\032', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'n', 'v', 'e', 'r', 't', 'R', 'o', 'w', 't', 'y', 'p', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\022', 'C', 'o', 'n', 'v', 'e', 'r', 't', 'R', 'o', 'w', 't', 'y', 'p', 'e', 'E', 'x', 'p', 'r', '\022', ':', '\n', '\014', 'c', 'o', 'l', 'l', 'a', 't', 'e', '_', 'e', 'x', 'p', 'r', '\030', '\033', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'l', 'l', 'a', 't', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\013', 'C', 'o', 'l', 'l', 'a', 't', 'e', 'E', 'x', 'p', 'r', '\022', '1', '\n', '\t', 'c', 'a', 's', 'e', '_', 'e', 'x', 'p', 'r', '\030', '\034', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'a', 's', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\010', 'C', 'a', 's', 'e', 'E', 'x', 'p', 'r', '\022', '1', '\n', '\t', 'c', 'a', 's', 'e', '_', 'w', 'h', 'e', 'n', '\030', '\035', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'a', 's', 'e', 'W', 'h', 'e', 'n', 'H', '\000', 'R', '\010', 'C', 'a', 's', 'e', 'W', 'h', 'e', 'n', '\022', '>', '\n', '\016', 'c', 'a', 's', 'e', '_', 't', 'e', 's', 't', '_', 'e', 'x', 'p', 'r', '\030', '\036', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'a', 's', 'e', 'T', 'e', 's', 't', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\014', 'C', 'a', 's', 'e', 'T', 'e', 's', 't', 'E', 'x', 'p', 'r', '\022', '4', '\n', '\n', 'a', 'r', 'r', 'a', 'y', '_', 'e', 'x', 'p', 'r', '\030', '\037', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'r', 'r', 'a', 'y', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\t', 'A', 'r', 'r', 'a', 'y', 'E', 'x', 'p', 'r', '\022', '.', '\n', '\010', 'r', 'o', 'w', '_', 'e', 'x', 'p', 'r', '\030', ' ', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'w', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\007', 'R', 'o', 'w', 'E', 'x', 'p', 'r', '\022', 'D', '\n', '\020', 'r', 'o', 'w', '_', 'c', 'o', 'm', 'p', 'a', 'r', 'e', '_', 'e', 'x', 'p', 'r', '\030', '!', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'w', 'C', 'o', 'm', 'p', 'a', 'r', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\016', 'R', 'o', 'w', 'C', 'o', 'm', 'p', 'a', 'r', 'e', 'E', 'x', 'p', 'r', '\022', '=', '\n', '\r', 'c', 'o', 'a', 'l', 'e', 's', 'c', 'e', '_', 'e', 'x', 'p', 'r', '\030', '\"', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'a', 'l', 'e', 's', 'c', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\014', 'C', 'o', 'a', 'l', 'e', 's', 'c', 'e', 'E', 'x', 'p', 'r', '\022', '8', '\n', '\014', 'm', 'i', 'n', '_', 'm', 'a', 'x', '_', 'e', 'x', 'p', 'r', '\030', '#', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'M', 'i', 'n', 'M', 'a', 'x', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\n', 'M', 'i', 'n', 'M', 'a', 'x', 'E', 'x', 'p', 'r', '\022', 'I', '\n', '\021', 's', 'q', 'l', 'v', 'a', 'l', 'u', 'e', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\030', '$', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'Q', 'L', 'V', 'a', 'l', 'u', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\020', 'S', 'Q', 'L', 'V', 'a', 'l', 'u', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', '.', '\n', '\010', 'x', 'm', 'l', '_', 'e', 'x', 'p', 'r', '\030', '%', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'X', 'm', 'l', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\007', 'X', 'm', 'l', 'E', 'x', 'p', 'r', '\022', '1', '\n', '\t', 'n', 'u', 'l', 'l', '_', 't', 'e', 's', 't', '\030', '&', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'u', 'l', 'l', 'T', 'e', 's', 't', 'H', '\000', 'R', '\010', 'N', 'u', 'l', 'l', 'T', 'e', 's', 't', '\022', ':', '\n', '\014', 'b', 'o', 'o', 'l', 'e', 'a', 'n', '_', 't', 'e', 's', 't', '\030', '\'', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'B', 'o', 'o', 'l', 'e', 'a', 'n', 'T', 'e', 's', 't', 'H', '\000', 'R', '\013', 'B', 'o', 'o', 'l', 'e', 'a', 'n', 'T', 'e', 's', 't', '\022', 'D', '\n', '\020', 'c', 'o', 'e', 'r', 'c', 'e', '_', 't', 'o', '_', 'd', 'o', 'm', 'a', 'i', 'n', '\030', '(', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'e', 'T', 'o', 'D', 'o', 'm', 'a', 'i', 'n', 'H', '\000', 'R', '\016', 'C', 'o', 'e', 'r', 'c', 'e', 'T', 'o', 'D', 'o', 'm', 'a', 'i', 'n', '\022', 'T', '\n', '\026', 'c', 'o', 'e', 'r', 'c', 'e', '_', 't', 'o', '_', 'd', 'o', 'm', 'a', 'i', 'n', '_', 'v', 'a', 'l', 'u', 'e', '\030', ')', ' ', '\001', '(', '\013', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'e', 'T', 'o', 'D', 'o', 'm', 'a', 'i', 'n', 'V', 'a', 'l', 'u', 'e', 'H', '\000', 'R', '\023', 'C', 'o', 'e', 'r', 'c', 'e', 'T', 'o', 'D', 'o', 'm', 'a', 'i', 'n', 'V', 'a', 'l', 'u', 'e', '\022', '>', '\n', '\016', 's', 'e', 't', '_', 't', 'o', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\030', '*', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'e', 't', 'T', 'o', 'D', 'e', 'f', 'a', 'u', 'l', 't', 'H', '\000', 'R', '\014', 'S', 'e', 't', 'T', 'o', 'D', 'e', 'f', 'a', 'u', 'l', 't', '\022', 'A', '\n', '\017', 'c', 'u', 'r', 'r', 'e', 'n', 't', '_', 'o', 'f', '_', 'e', 'x', 'p', 'r', '\030', '+', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'O', 'f', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\r', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'O', 'f', 'E', 'x', 'p', 'r', '\022', 'A', '\n', '\017', 'n', 'e', 'x', 't', '_', 'v', 'a', 'l', 'u', 'e', '_', 'e', 'x', 'p', 'r', '\030', ',', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'e', 'x', 't', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\r', 'N', 'e', 'x', 't', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', '\022', '@', '\n', '\016', 'i', 'n', 'f', 'e', 'r', 'e', 'n', 'c', 'e', '_', 'e', 'l', 'e', 'm', '\030', '-', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 'f', 'e', 'r', 'e', 'n', 'c', 'e', 'E', 'l', 'e', 'm', 'H', '\000', 'R', '\r', 'I', 'n', 'f', 'e', 'r', 'e', 'n', 'c', 'e', 'E', 'l', 'e', 'm', '\022', ':', '\n', '\014', 't', 'a', 'r', 'g', 'e', 't', '_', 'e', 'n', 't', 'r', 'y', '\030', '.', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'a', 'r', 'g', 'e', 't', 'E', 'n', 't', 'r', 'y', 'H', '\000', 'R', '\013', 'T', 'a', 'r', 'g', 'e', 't', 'E', 'n', 't', 'r', 'y', '\022', ';', '\n', '\r', 'r', 'a', 'n', 'g', 'e', '_', 't', 'b', 'l', '_', 'r', 'e', 'f', '\030', '/', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'T', 'b', 'l', 'R', 'e', 'f', 'H', '\000', 'R', '\013', 'R', 'a', 'n', 'g', 'e', 'T', 'b', 'l', 'R', 'e', 'f', '\022', '1', '\n', '\t', 'j', 'o', 'i', 'n', '_', 'e', 'x', 'p', 'r', '\030', '0', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 'o', 'i', 'n', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\010', 'J', 'o', 'i', 'n', 'E', 'x', 'p', 'r', '\022', '1', '\n', '\t', 'f', 'r', 'o', 'm', '_', 'e', 'x', 'p', 'r', '\030', '1', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'r', 'o', 'm', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\010', 'F', 'r', 'o', 'm', 'E', 'x', 'p', 'r', '\022', 'D', '\n', '\020', 'o', 'n', '_', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', '_', 'e', 'x', 'p', 'r', '\030', '2', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\016', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'E', 'x', 'p', 'r', '\022', '7', '\n', '\013', 'i', 'n', 't', 'o', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '3', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 't', 'o', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\n', 'I', 'n', 't', 'o', 'C', 'l', 'a', 'u', 's', 'e', '\022', '.', '\n', '\010', 'r', 'a', 'w', '_', 's', 't', 'm', 't', '\030', '4', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'w', 'S', 't', 'm', 't', 'H', '\000', 'R', '\007', 'R', 'a', 'w', 'S', 't', 'm', 't', '\022', '\'', '\n', '\005', 'q', 'u', 'e', 'r', 'y', '\030', '5', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'Q', 'u', 'e', 'r', 'y', 'H', '\000', 'R', '\005', 'Q', 'u', 'e', 'r', 'y', '\022', '7', '\n', '\013', 'i', 'n', 's', 'e', 'r', 't', '_', 's', 't', 'm', 't', '\030', '6', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 's', 'e', 'r', 't', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'I', 'n', 's', 'e', 'r', 't', 'S', 't', 'm', 't', '\022', '7', '\n', '\013', 'd', 'e', 'l', 'e', 't', 'e', '_', 's', 't', 'm', 't', '\030', '7', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'e', 'l', 'e', 't', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'D', 'e', 'l', 'e', 't', 'e', 'S', 't', 'm', 't', '\022', '7', '\n', '\013', 'u', 'p', 'd', 'a', 't', 'e', '_', 's', 't', 'm', 't', '\030', '8', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'U', 'p', 'd', 'a', 't', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'U', 'p', 'd', 'a', 't', 'e', 'S', 't', 'm', 't', '\022', '7', '\n', '\013', 's', 'e', 'l', 'e', 'c', 't', '_', 's', 't', 'm', 't', '\030', '9', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'e', 'l', 'e', 'c', 't', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'S', 'e', 'l', 'e', 'c', 't', 'S', 't', 'm', 't', '\022', 'D', '\n', '\020', 'a', 'l', 't', 'e', 'r', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 't', 'm', 't', '\030', ':', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\016', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 't', 'm', 't', '\022', 'A', '\n', '\017', 'a', 'l', 't', 'e', 'r', '_', 't', 'a', 'b', 'l', 'e', '_', 'c', 'm', 'd', '\030', ';', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'C', 'm', 'd', 'H', '\000', 'R', '\r', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'C', 'm', 'd', '\022', 'G', '\n', '\021', 'a', 'l', 't', 'e', 'r', '_', 'd', 'o', 'm', 'a', 'i', 'n', '_', 's', 't', 'm', 't', '\030', '<', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'D', 'o', 'm', 'a', 'i', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\017', 'A', 'l', 't', 'e', 'r', 'D', 'o', 'm', 'a', 'i', 'n', 'S', 't', 'm', 't', '\022', 'J', '\n', '\022', 's', 'e', 't', '_', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '=', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'e', 't', 'O', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\020', 'S', 'e', 't', 'O', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '4', '\n', '\n', 'g', 'r', 'a', 'n', 't', '_', 's', 't', 'm', 't', '\030', '>', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'G', 'r', 'a', 'n', 't', 'S', 't', 'm', 't', 'H', '\000', 'R', '\t', 'G', 'r', 'a', 'n', 't', 'S', 't', 'm', 't', '\022', 'A', '\n', '\017', 'g', 'r', 'a', 'n', 't', '_', 'r', 'o', 'l', 'e', '_', 's', 't', 'm', 't', '\030', '?', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'G', 'r', 'a', 'n', 't', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\r', 'G', 'r', 'a', 'n', 't', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', '\022', 'i', '\n', '\035', 'a', 'l', 't', 'e', 'r', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'p', 'r', 'i', 'v', 'i', 'l', 'e', 'g', 'e', 's', '_', 's', 't', 'm', 't', '\030', '@', ' ', '\001', '(', '\013', '2', '$', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'D', 'e', 'f', 'a', 'u', 'l', 't', 'P', 'r', 'i', 'v', 'i', 'l', 'e', 'g', 'e', 's', 'S', 't', 'm', 't', 'H', '\000', 'R', '\032', 'A', 'l', 't', 'e', 'r', 'D', 'e', 'f', 'a', 'u', 'l', 't', 'P', 'r', 'i', 'v', 'i', 'l', 'e', 'g', 'e', 's', 'S', 't', 'm', 't', '\022', 'G', '\n', '\021', 'c', 'l', 'o', 's', 'e', '_', 'p', 'o', 'r', 't', 'a', 'l', '_', 's', 't', 'm', 't', '\030', 'A', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'l', 'o', 's', 'e', 'P', 'o', 'r', 't', 'a', 'l', 'S', 't', 'm', 't', 'H', '\000', 'R', '\017', 'C', 'l', 'o', 's', 'e', 'P', 'o', 'r', 't', 'a', 'l', 'S', 't', 'm', 't', '\022', ':', '\n', '\014', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 't', 'm', 't', '\030', 'B', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 't', 'm', 't', 'H', '\000', 'R', '\013', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 't', 'm', 't', '\022', '1', '\n', '\t', 'c', 'o', 'p', 'y', '_', 's', 't', 'm', 't', '\030', 'C', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'p', 'y', 'S', 't', 'm', 't', 'H', '\000', 'R', '\010', 'C', 'o', 'p', 'y', 'S', 't', 'm', 't', '\022', '7', '\n', '\013', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 't', 'm', 't', '\030', 'D', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'C', 'r', 'e', 'a', 't', 'e', 'S', 't', 'm', 't', '\022', '7', '\n', '\013', 'd', 'e', 'f', 'i', 'n', 'e', '_', 's', 't', 'm', 't', '\030', 'E', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'e', 'f', 'i', 'n', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'D', 'e', 'f', 'i', 'n', 'e', 'S', 't', 'm', 't', '\022', '1', '\n', '\t', 'd', 'r', 'o', 'p', '_', 's', 't', 'm', 't', '\030', 'F', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'S', 't', 'm', 't', 'H', '\000', 'R', '\010', 'D', 'r', 'o', 'p', 'S', 't', 'm', 't', '\022', '=', '\n', '\r', 't', 'r', 'u', 'n', 'c', 'a', 't', 'e', '_', 's', 't', 'm', 't', '\030', 'G', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'r', 'u', 'n', 'c', 'a', 't', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\014', 'T', 'r', 'u', 'n', 'c', 'a', 't', 'e', 'S', 't', 'm', 't', '\022', ':', '\n', '\014', 'c', 'o', 'm', 'm', 'e', 'n', 't', '_', 's', 't', 'm', 't', '\030', 'H', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'm', 'm', 'e', 'n', 't', 'S', 't', 'm', 't', 'H', '\000', 'R', '\013', 'C', 'o', 'm', 'm', 'e', 'n', 't', 'S', 't', 'm', 't', '\022', '4', '\n', '\n', 'f', 'e', 't', 'c', 'h', '_', 's', 't', 'm', 't', '\030', 'I', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'e', 't', 'c', 'h', 'S', 't', 'm', 't', 'H', '\000', 'R', '\t', 'F', 'e', 't', 'c', 'h', 'S', 't', 'm', 't', '\022', '4', '\n', '\n', 'i', 'n', 'd', 'e', 'x', '_', 's', 't', 'm', 't', '\030', 'J', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 'd', 'e', 'x', 'S', 't', 'm', 't', 'H', '\000', 'R', '\t', 'I', 'n', 'd', 'e', 'x', 'S', 't', 'm', 't', '\022', 'P', '\n', '\024', 'c', 'r', 'e', 'a', 't', 'e', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', 'K', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\022', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', 'M', '\n', '\023', 'a', 'l', 't', 'e', 'r', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', 'L', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\021', 'A', 'l', 't', 'e', 'r', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '+', '\n', '\007', 'd', 'o', '_', 's', 't', 'm', 't', '\030', 'M', ' ', '\001', '(', '\013', '2', '\020', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'o', 'S', 't', 'm', 't', 'H', '\000', 'R', '\006', 'D', 'o', 'S', 't', 'm', 't', '\022', '7', '\n', '\013', 'r', 'e', 'n', 'a', 'm', 'e', '_', 's', 't', 'm', 't', '\030', 'N', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'e', 'n', 'a', 'm', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'R', 'e', 'n', 'a', 'm', 'e', 'S', 't', 'm', 't', '\022', '1', '\n', '\t', 'r', 'u', 'l', 'e', '_', 's', 't', 'm', 't', '\030', 'O', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'u', 'l', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\010', 'R', 'u', 'l', 'e', 'S', 't', 'm', 't', '\022', '7', '\n', '\013', 'n', 'o', 't', 'i', 'f', 'y', '_', 's', 't', 'm', 't', '\030', 'P', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 't', 'i', 'f', 'y', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'N', 'o', 't', 'i', 'f', 'y', 'S', 't', 'm', 't', '\022', '7', '\n', '\013', 'l', 'i', 's', 't', 'e', 'n', '_', 's', 't', 'm', 't', '\030', 'Q', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'i', 's', 't', 'e', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'L', 'i', 's', 't', 'e', 'n', 'S', 't', 'm', 't', '\022', '=', '\n', '\r', 'u', 'n', 'l', 'i', 's', 't', 'e', 'n', '_', 's', 't', 'm', 't', '\030', 'R', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'U', 'n', 'l', 'i', 's', 't', 'e', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\014', 'U', 'n', 'l', 'i', 's', 't', 'e', 'n', 'S', 't', 'm', 't', '\022', 'F', '\n', '\020', 't', 'r', 'a', 'n', 's', 'a', 'c', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', 'S', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'r', 'a', 'n', 's', 'a', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\017', 'T', 'r', 'a', 'n', 's', 'a', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '1', '\n', '\t', 'v', 'i', 'e', 'w', '_', 's', 't', 'm', 't', '\030', 'T', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'i', 'e', 'w', 'S', 't', 'm', 't', 'H', '\000', 'R', '\010', 'V', 'i', 'e', 'w', 'S', 't', 'm', 't', '\022', '1', '\n', '\t', 'l', 'o', 'a', 'd', '_', 's', 't', 'm', 't', '\030', 'U', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'o', 'a', 'd', 'S', 't', 'm', 't', 'H', '\000', 'R', '\010', 'L', 'o', 'a', 'd', 'S', 't', 'm', 't', '\022', 'J', '\n', '\022', 'c', 'r', 'e', 'a', 't', 'e', '_', 'd', 'o', 'm', 'a', 'i', 'n', '_', 's', 't', 'm', 't', '\030', 'V', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'D', 'o', 'm', 'a', 'i', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\020', 'C', 'r', 'e', 'a', 't', 'e', 'D', 'o', 'm', 'a', 'i', 'n', 'S', 't', 'm', 't', '\022', '=', '\n', '\r', 'c', 'r', 'e', 'a', 't', 'e', 'd', 'b', '_', 's', 't', 'm', 't', '\030', 'W', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'd', 'b', 'S', 't', 'm', 't', 'H', '\000', 'R', '\014', 'C', 'r', 'e', 'a', 't', 'e', 'd', 'b', 'S', 't', 'm', 't', '\022', '7', '\n', '\013', 'd', 'r', 'o', 'p', 'd', 'b', '_', 's', 't', 'm', 't', '\030', 'X', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'd', 'b', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'D', 'r', 'o', 'p', 'd', 'b', 'S', 't', 'm', 't', '\022', '7', '\n', '\013', 'v', 'a', 'c', 'u', 'u', 'm', '_', 's', 't', 'm', 't', '\030', 'Y', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'a', 'c', 'u', 'u', 'm', 'S', 't', 'm', 't', 'H', '\000', 'R', '\n', 'V', 'a', 'c', 'u', 'u', 'm', 'S', 't', 'm', 't', '\022', ':', '\n', '\014', 'e', 'x', 'p', 'l', 'a', 'i', 'n', '_', 's', 't', 'm', 't', '\030', 'Z', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'E', 'x', 'p', 'l', 'a', 'i', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\013', 'E', 'x', 'p', 'l', 'a', 'i', 'n', 'S', 't', 'm', 't', '\022', 'N', '\n', '\024', 'c', 'r', 'e', 'a', 't', 'e', '_', 't', 'a', 'b', 'l', 'e', '_', 'a', 's', '_', 's', 't', 'm', 't', '\030', '[', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'a', 'b', 'l', 'e', 'A', 's', 'S', 't', 'm', 't', 'H', '\000', 'R', '\021', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'a', 'b', 'l', 'e', 'A', 's', 'S', 't', 'm', 't', '\022', 'A', '\n', '\017', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'e', 'q', '_', 's', 't', 'm', 't', '\030', '\\', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'S', 'e', 'q', 'S', 't', 'm', 't', 'H', '\000', 'R', '\r', 'C', 'r', 'e', 'a', 't', 'e', 'S', 'e', 'q', 'S', 't', 'm', 't', '\022', '>', '\n', '\016', 'a', 'l', 't', 'e', 'r', '_', 's', 'e', 'q', '_', 's', 't', 'm', 't', '\030', ']', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'S', 'e', 'q', 'S', 't', 'm', 't', 'H', '\000', 'R', '\014', 'A', 'l', 't', 'e', 'r', 'S', 'e', 'q', 'S', 't', 'm', 't', '\022', 'G', '\n', '\021', 'v', 'a', 'r', 'i', 'a', 'b', 'l', 'e', '_', 's', 'e', 't', '_', 's', 't', 'm', 't', '\030', '^', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', 'H', '\000', 'R', '\017', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', '\022', 'J', '\n', '\022', 'v', 'a', 'r', 'i', 'a', 'b', 'l', 'e', '_', 's', 'h', 'o', 'w', '_', 's', 't', 'm', 't', '\030', '_', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'h', 'o', 'w', 'S', 't', 'm', 't', 'H', '\000', 'R', '\020', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'h', 'o', 'w', 'S', 't', 'm', 't', '\022', ':', '\n', '\014', 'd', 'i', 's', 'c', 'a', 'r', 'd', '_', 's', 't', 'm', 't', '\030', '`', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'i', 's', 'c', 'a', 'r', 'd', 'S', 't', 'm', 't', 'H', '\000', 'R', '\013', 'D', 'i', 's', 'c', 'a', 'r', 'd', 'S', 't', 'm', 't', '\022', 'D', '\n', '\020', 'c', 'r', 'e', 'a', 't', 'e', '_', 't', 'r', 'i', 'g', '_', 's', 't', 'm', 't', '\030', 'a', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'r', 'i', 'g', 'S', 't', 'm', 't', 'H', '\000', 'R', '\016', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'r', 'i', 'g', 'S', 't', 'm', 't', '\022', 'G', '\n', '\021', 'c', 'r', 'e', 'a', 't', 'e', '_', 'p', 'l', 'a', 'n', 'g', '_', 's', 't', 'm', 't', '\030', 'b', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'P', 'L', 'a', 'n', 'g', 'S', 't', 'm', 't', 'H', '\000', 'R', '\017', 'C', 'r', 'e', 'a', 't', 'e', 'P', 'L', 'a', 'n', 'g', 'S', 't', 'm', 't', '\022', 'D', '\n', '\020', 'c', 'r', 'e', 'a', 't', 'e', '_', 'r', 'o', 'l', 'e', '_', 's', 't', 'm', 't', '\030', 'c', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\016', 'C', 'r', 'e', 'a', 't', 'e', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', '\022', 'A', '\n', '\017', 'a', 'l', 't', 'e', 'r', '_', 'r', 'o', 'l', 'e', '_', 's', 't', 'm', 't', '\030', 'd', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\r', 'A', 'l', 't', 'e', 'r', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', '\022', '>', '\n', '\016', 'd', 'r', 'o', 'p', '_', 'r', 'o', 'l', 'e', '_', 's', 't', 'm', 't', '\030', 'e', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\014', 'D', 'r', 'o', 'p', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', '\022', '1', '\n', '\t', 'l', 'o', 'c', 'k', '_', 's', 't', 'm', 't', '\030', 'f', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'o', 'c', 'k', 'S', 't', 'm', 't', 'H', '\000', 'R', '\010', 'L', 'o', 'c', 'k', 'S', 't', 'm', 't', '\022', 'P', '\n', '\024', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '_', 's', 'e', 't', '_', 's', 't', 'm', 't', '\030', 'g', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', 'S', 'e', 't', 'S', 't', 'm', 't', 'H', '\000', 'R', '\022', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', 'S', 'e', 't', 'S', 't', 'm', 't', '\022', ':', '\n', '\014', 'r', 'e', 'i', 'n', 'd', 'e', 'x', '_', 's', 't', 'm', 't', '\030', 'h', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'e', 'i', 'n', 'd', 'e', 'x', 'S', 't', 'm', 't', 'H', '\000', 'R', '\013', 'R', 'e', 'i', 'n', 'd', 'e', 'x', 'S', 't', 'm', 't', '\022', 'D', '\n', '\020', 'c', 'h', 'e', 'c', 'k', '_', 'p', 'o', 'i', 'n', 't', '_', 's', 't', 'm', 't', '\030', 'i', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'h', 'e', 'c', 'k', 'P', 'o', 'i', 'n', 't', 'S', 't', 'm', 't', 'H', '\000', 'R', '\016', 'C', 'h', 'e', 'c', 'k', 'P', 'o', 'i', 'n', 't', 'S', 't', 'm', 't', '\022', 'J', '\n', '\022', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'c', 'h', 'e', 'm', 'a', '_', 's', 't', 'm', 't', '\030', 'j', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'S', 'c', 'h', 'e', 'm', 'a', 'S', 't', 'm', 't', 'H', '\000', 'R', '\020', 'C', 'r', 'e', 'a', 't', 'e', 'S', 'c', 'h', 'e', 'm', 'a', 'S', 't', 'm', 't', '\022', 'M', '\n', '\023', 'a', 'l', 't', 'e', 'r', '_', 'd', 'a', 't', 'a', 'b', 'a', 's', 'e', '_', 's', 't', 'm', 't', '\030', 'k', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'D', 'a', 't', 'a', 'b', 'a', 's', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\021', 'A', 'l', 't', 'e', 'r', 'D', 'a', 't', 'a', 'b', 'a', 's', 'e', 'S', 't', 'm', 't', '\022', 'W', '\n', '\027', 'a', 'l', 't', 'e', 'r', '_', 'd', 'a', 't', 'a', 'b', 'a', 's', 'e', '_', 's', 'e', 't', '_', 's', 't', 'm', 't', '\030', 'l', ' ', '\001', '(', '\013', '2', '\036', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'D', 'a', 't', 'a', 'b', 'a', 's', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', 'H', '\000', 'R', '\024', 'A', 'l', 't', 'e', 'r', 'D', 'a', 't', 'a', 'b', 'a', 's', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', '\022', 'K', '\n', '\023', 'a', 'l', 't', 'e', 'r', '_', 'r', 'o', 'l', 'e', '_', 's', 'e', 't', '_', 's', 't', 'm', 't', '\030', 'm', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'R', 'o', 'l', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', 'H', '\000', 'R', '\020', 'A', 'l', 't', 'e', 'r', 'R', 'o', 'l', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', '\022', 'V', '\n', '\026', 'c', 'r', 'e', 'a', 't', 'e', '_', 'c', 'o', 'n', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', 'n', ' ', '\001', '(', '\013', '2', '\036', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'C', 'o', 'n', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\024', 'C', 'r', 'e', 'a', 't', 'e', 'C', 'o', 'n', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', 'D', '\n', '\020', 'c', 'r', 'e', 'a', 't', 'e', '_', 'c', 'a', 's', 't', '_', 's', 't', 'm', 't', '\030', 'o', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'C', 'a', 's', 't', 'S', 't', 'm', 't', 'H', '\000', 'R', '\016', 'C', 'r', 'e', 'a', 't', 'e', 'C', 'a', 's', 't', 'S', 't', 'm', 't', '\022', 'N', '\n', '\024', 'c', 'r', 'e', 'a', 't', 'e', '_', 'o', 'p', '_', 'c', 'l', 'a', 's', 's', '_', 's', 't', 'm', 't', '\030', 'p', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'O', 'p', 'C', 'l', 'a', 's', 's', 'S', 't', 'm', 't', 'H', '\000', 'R', '\021', 'C', 'r', 'e', 'a', 't', 'e', 'O', 'p', 'C', 'l', 'a', 's', 's', 'S', 't', 'm', 't', '\022', 'Q', '\n', '\025', 'c', 'r', 'e', 'a', 't', 'e', '_', 'o', 'p', '_', 'f', 'a', 'm', 'i', 'l', 'y', '_', 's', 't', 'm', 't', '\030', 'q', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'O', 'p', 'F', 'a', 'm', 'i', 'l', 'y', 'S', 't', 'm', 't', 'H', '\000', 'R', '\022', 'C', 'r', 'e', 'a', 't', 'e', 'O', 'p', 'F', 'a', 'm', 'i', 'l', 'y', 'S', 't', 'm', 't', '\022', 'N', '\n', '\024', 'a', 'l', 't', 'e', 'r', '_', 'o', 'p', '_', 'f', 'a', 'm', 'i', 'l', 'y', '_', 's', 't', 'm', 't', '\030', 'r', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'O', 'p', 'F', 'a', 'm', 'i', 'l', 'y', 'S', 't', 'm', 't', 'H', '\000', 'R', '\021', 'A', 'l', 't', 'e', 'r', 'O', 'p', 'F', 'a', 'm', 'i', 'l', 'y', 'S', 't', 'm', 't', '\022', ':', '\n', '\014', 'p', 'r', 'e', 'p', 'a', 'r', 'e', '_', 's', 't', 'm', 't', '\030', 's', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'r', 'e', 'p', 'a', 'r', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\013', 'P', 'r', 'e', 'p', 'a', 'r', 'e', 'S', 't', 'm', 't', '\022', ':', '\n', '\014', 'e', 'x', 'e', 'c', 'u', 't', 'e', '_', 's', 't', 'm', 't', '\030', 't', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'E', 'x', 'e', 'c', 'u', 't', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\013', 'E', 'x', 'e', 'c', 'u', 't', 'e', 'S', 't', 'm', 't', '\022', 'C', '\n', '\017', 'd', 'e', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'e', '_', 's', 't', 'm', 't', '\030', 'u', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'e', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\016', 'D', 'e', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'e', 'S', 't', 'm', 't', '\022', 'M', '\n', '\023', 'd', 'e', 'c', 'l', 'a', 'r', 'e', '_', 'c', 'u', 'r', 's', 'o', 'r', '_', 's', 't', 'm', 't', '\030', 'v', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'e', 'c', 'l', 'a', 'r', 'e', 'C', 'u', 'r', 's', 'o', 'r', 'S', 't', 'm', 't', 'H', '\000', 'R', '\021', 'D', 'e', 'c', 'l', 'a', 'r', 'e', 'C', 'u', 'r', 's', 'o', 'r', 'S', 't', 'm', 't', '\022', 'W', '\n', '\027', 'c', 'r', 'e', 'a', 't', 'e', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 'p', 'a', 'c', 'e', '_', 's', 't', 'm', 't', '\030', 'w', ' ', '\001', '(', '\013', '2', '\036', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\024', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', 'S', 't', 'm', 't', '\022', 'Q', '\n', '\025', 'd', 'r', 'o', 'p', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 'p', 'a', 'c', 'e', '_', 's', 't', 'm', 't', '\030', 'x', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'T', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\022', 'D', 'r', 'o', 'p', 'T', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', 'S', 't', 'm', 't', '\022', ']', '\n', '\031', 'a', 'l', 't', 'e', 'r', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 'd', 'e', 'p', 'e', 'n', 'd', 's', '_', 's', 't', 'm', 't', '\030', 'y', ' ', '\001', '(', '\013', '2', ' ', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'O', 'b', 'j', 'e', 'c', 't', 'D', 'e', 'p', 'e', 'n', 'd', 's', 'S', 't', 'm', 't', 'H', '\000', 'R', '\026', 'A', 'l', 't', 'e', 'r', 'O', 'b', 'j', 'e', 'c', 't', 'D', 'e', 'p', 'e', 'n', 'd', 's', 'S', 't', 'm', 't', '\022', 'Z', '\n', '\030', 'a', 'l', 't', 'e', 'r', '_', 'o', 'b', 'j', 'e', 'c', 't', '_', 's', 'c', 'h', 'e', 'm', 'a', '_', 's', 't', 'm', 't', '\030', 'z', ' ', '\001', '(', '\013', '2', '\037', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'O', 'b', 'j', 'e', 'c', 't', 'S', 'c', 'h', 'e', 'm', 'a', 'S', 't', 'm', 't', 'H', '\000', 'R', '\025', 'A', 'l', 't', 'e', 'r', 'O', 'b', 'j', 'e', 'c', 't', 'S', 'c', 'h', 'e', 'm', 'a', 'S', 't', 'm', 't', '\022', 'D', '\n', '\020', 'a', 'l', 't', 'e', 'r', '_', 'o', 'w', 'n', 'e', 'r', '_', 's', 't', 'm', 't', '\030', '{', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'O', 'w', 'n', 'e', 'r', 'S', 't', 'm', 't', 'H', '\000', 'R', '\016', 'A', 'l', 't', 'e', 'r', 'O', 'w', 'n', 'e', 'r', 'S', 't', 'm', 't', '\022', 'M', '\n', '\023', 'a', 'l', 't', 'e', 'r', '_', 'o', 'p', 'e', 'r', 'a', 't', 'o', 'r', '_', 's', 't', 'm', 't', '\030', '|', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'O', 'p', 'e', 'r', 'a', 't', 'o', 'r', 'S', 't', 'm', 't', 'H', '\000', 'R', '\021', 'A', 'l', 't', 'e', 'r', 'O', 'p', 'e', 'r', 'a', 't', 'o', 'r', 'S', 't', 'm', 't', '\022', 'A', '\n', '\017', 'a', 'l', 't', 'e', 'r', '_', 't', 'y', 'p', 'e', '_', 's', 't', 'm', 't', '\030', '}', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'T', 'y', 'p', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\r', 'A', 'l', 't', 'e', 'r', 'T', 'y', 'p', 'e', 'S', 't', 'm', 't', '\022', 'A', '\n', '\017', 'd', 'r', 'o', 'p', '_', 'o', 'w', 'n', 'e', 'd', '_', 's', 't', 'm', 't', '\030', '~', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'O', 'w', 'n', 'e', 'd', 'S', 't', 'm', 't', 'H', '\000', 'R', '\r', 'D', 'r', 'o', 'p', 'O', 'w', 'n', 'e', 'd', 'S', 't', 'm', 't', '\022', 'M', '\n', '\023', 'r', 'e', 'a', 's', 's', 'i', 'g', 'n', '_', 'o', 'w', 'n', 'e', 'd', '_', 's', 't', 'm', 't', '\030', '\177', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'e', 'a', 's', 's', 'i', 'g', 'n', 'O', 'w', 'n', 'e', 'd', 'S', 't', 'm', 't', 'H', '\000', 'R', '\021', 'R', 'e', 'a', 's', 's', 'i', 'g', 'n', 'O', 'w', 'n', 'e', 'd', 'S', 't', 'm', 't', '\022', 'N', '\n', '\023', 'c', 'o', 'm', 'p', 'o', 's', 'i', 't', 'e', '_', 't', 'y', 'p', 'e', '_', 's', 't', 'm', 't', '\030', '\200', '\001', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'm', 'p', 'o', 's', 'i', 't', 'e', 'T', 'y', 'p', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\021', 'C', 'o', 'm', 'p', 'o', 's', 'i', 't', 'e', 'T', 'y', 'p', 'e', 'S', 't', 'm', 't', '\022', 'E', '\n', '\020', 'c', 'r', 'e', 'a', 't', 'e', '_', 'e', 'n', 'u', 'm', '_', 's', 't', 'm', 't', '\030', '\201', '\001', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'E', 'n', 'u', 'm', 'S', 't', 'm', 't', 'H', '\000', 'R', '\016', 'C', 'r', 'e', 'a', 't', 'e', 'E', 'n', 'u', 'm', 'S', 't', 'm', 't', '\022', 'H', '\n', '\021', 'c', 'r', 'e', 'a', 't', 'e', '_', 'r', 'a', 'n', 'g', 'e', '_', 's', 't', 'm', 't', '\030', '\202', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'R', 'a', 'n', 'g', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\017', 'C', 'r', 'e', 'a', 't', 'e', 'R', 'a', 'n', 'g', 'e', 'S', 't', 'm', 't', '\022', 'B', '\n', '\017', 'a', 'l', 't', 'e', 'r', '_', 'e', 'n', 'u', 'm', '_', 's', 't', 'm', 't', '\030', '\203', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'E', 'n', 'u', 'm', 'S', 't', 'm', 't', 'H', '\000', 'R', '\r', 'A', 'l', 't', 'e', 'r', 'E', 'n', 'u', 'm', 'S', 't', 'm', 't', '\022', 'Z', '\n', '\027', 'a', 'l', 't', 'e', 'r', '_', 't', 's', 'd', 'i', 'c', 't', 'i', 'o', 'n', 'a', 'r', 'y', '_', 's', 't', 'm', 't', '\030', '\204', '\001', ' ', '\001', '(', '\013', '2', '\037', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'T', 'S', 'D', 'i', 'c', 't', 'i', 'o', 'n', 'a', 'r', 'y', 'S', 't', 'm', 't', 'H', '\000', 'R', '\025', 'A', 'l', 't', 'e', 'r', 'T', 'S', 'D', 'i', 'c', 't', 'i', 'o', 'n', 'a', 'r', 'y', 'S', 't', 'm', 't', '\022', 'c', '\n', '\032', 'a', 'l', 't', 'e', 'r', '_', 't', 's', 'c', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\205', '\001', ' ', '\001', '(', '\013', '2', '\"', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'T', 'S', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\030', 'A', 'l', 't', 'e', 'r', 'T', 'S', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', 'B', '\n', '\017', 'c', 'r', 'e', 'a', 't', 'e', '_', 'f', 'd', 'w', '_', 's', 't', 'm', 't', '\030', '\206', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'd', 'w', 'S', 't', 'm', 't', 'H', '\000', 'R', '\r', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'd', 'w', 'S', 't', 'm', 't', '\022', '?', '\n', '\016', 'a', 'l', 't', 'e', 'r', '_', 'f', 'd', 'w', '_', 's', 't', 'm', 't', '\030', '\207', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'F', 'd', 'w', 'S', 't', 'm', 't', 'H', '\000', 'R', '\014', 'A', 'l', 't', 'e', 'r', 'F', 'd', 'w', 'S', 't', 'm', 't', '\022', 'a', '\n', '\032', 'c', 'r', 'e', 'a', 't', 'e', '_', 'f', 'o', 'r', 'e', 'i', 'g', 'n', '_', 's', 'e', 'r', 'v', 'e', 'r', '_', 's', 't', 'm', 't', '\030', '\210', '\001', ' ', '\001', '(', '\013', '2', '!', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'e', 'r', 'v', 'e', 'r', 'S', 't', 'm', 't', 'H', '\000', 'R', '\027', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'e', 'r', 'v', 'e', 'r', 'S', 't', 'm', 't', '\022', '^', '\n', '\031', 'a', 'l', 't', 'e', 'r', '_', 'f', 'o', 'r', 'e', 'i', 'g', 'n', '_', 's', 'e', 'r', 'v', 'e', 'r', '_', 's', 't', 'm', 't', '\030', '\211', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'e', 'r', 'v', 'e', 'r', 'S', 't', 'm', 't', 'H', '\000', 'R', '\026', 'A', 'l', 't', 'e', 'r', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'e', 'r', 'v', 'e', 'r', 'S', 't', 'm', 't', '\022', '[', '\n', '\030', 'c', 'r', 'e', 'a', 't', 'e', '_', 'u', 's', 'e', 'r', '_', 'm', 'a', 'p', 'p', 'i', 'n', 'g', '_', 's', 't', 'm', 't', '\030', '\212', '\001', ' ', '\001', '(', '\013', '2', '\037', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'U', 's', 'e', 'r', 'M', 'a', 'p', 'p', 'i', 'n', 'g', 'S', 't', 'm', 't', 'H', '\000', 'R', '\025', 'C', 'r', 'e', 'a', 't', 'e', 'U', 's', 'e', 'r', 'M', 'a', 'p', 'p', 'i', 'n', 'g', 'S', 't', 'm', 't', '\022', 'X', '\n', '\027', 'a', 'l', 't', 'e', 'r', '_', 'u', 's', 'e', 'r', '_', 'm', 'a', 'p', 'p', 'i', 'n', 'g', '_', 's', 't', 'm', 't', '\030', '\213', '\001', ' ', '\001', '(', '\013', '2', '\036', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'U', 's', 'e', 'r', 'M', 'a', 'p', 'p', 'i', 'n', 'g', 'S', 't', 'm', 't', 'H', '\000', 'R', '\024', 'A', 'l', 't', 'e', 'r', 'U', 's', 'e', 'r', 'M', 'a', 'p', 'p', 'i', 'n', 'g', 'S', 't', 'm', 't', '\022', 'U', '\n', '\026', 'd', 'r', 'o', 'p', '_', 'u', 's', 'e', 'r', '_', 'm', 'a', 'p', 'p', 'i', 'n', 'g', '_', 's', 't', 'm', 't', '\030', '\214', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'U', 's', 'e', 'r', 'M', 'a', 'p', 'p', 'i', 'n', 'g', 'S', 't', 'm', 't', 'H', '\000', 'R', '\023', 'D', 'r', 'o', 'p', 'U', 's', 'e', 'r', 'M', 'a', 'p', 'p', 'i', 'n', 'g', 'S', 't', 'm', 't', '\022', 'k', '\n', '\036', 'a', 'l', 't', 'e', 'r', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 'p', 'a', 'c', 'e', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '_', 's', 't', 'm', 't', '\030', '\215', '\001', ' ', '\001', '(', '\013', '2', '$', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', 'S', 't', 'm', 't', 'H', '\000', 'R', '\032', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', 'S', 't', 'm', 't', '\022', '\\', '\n', '\031', 'a', 'l', 't', 'e', 'r', '_', 't', 'a', 'b', 'l', 'e', '_', 'm', 'o', 'v', 'e', '_', 'a', 'l', 'l', '_', 's', 't', 'm', 't', '\030', '\216', '\001', ' ', '\001', '(', '\013', '2', '\037', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'M', 'o', 'v', 'e', 'A', 'l', 'l', 'S', 't', 'm', 't', 'H', '\000', 'R', '\025', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'M', 'o', 'v', 'e', 'A', 'l', 'l', 'S', 't', 'm', 't', '\022', '?', '\n', '\016', 's', 'e', 'c', '_', 'l', 'a', 'b', 'e', 'l', '_', 's', 't', 'm', 't', '\030', '\217', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'e', 'c', 'L', 'a', 'b', 'e', 'l', 'S', 't', 'm', 't', 'H', '\000', 'R', '\014', 'S', 'e', 'c', 'L', 'a', 'b', 'e', 'l', 'S', 't', 'm', 't', '\022', '^', '\n', '\031', 'c', 'r', 'e', 'a', 't', 'e', '_', 'f', 'o', 'r', 'e', 'i', 'g', 'n', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 't', 'm', 't', '\030', '\220', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'T', 'a', 'b', 'l', 'e', 'S', 't', 'm', 't', 'H', '\000', 'R', '\026', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'T', 'a', 'b', 'l', 'e', 'S', 't', 'm', 't', '\022', 'a', '\n', '\032', 'i', 'm', 'p', 'o', 'r', 't', '_', 'f', 'o', 'r', 'e', 'i', 'g', 'n', '_', 's', 'c', 'h', 'e', 'm', 'a', '_', 's', 't', 'm', 't', '\030', '\221', '\001', ' ', '\001', '(', '\013', '2', '!', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'm', 'p', 'o', 'r', 't', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'c', 'h', 'e', 'm', 'a', 'S', 't', 'm', 't', 'H', '\000', 'R', '\027', 'I', 'm', 'p', 'o', 'r', 't', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'c', 'h', 'e', 'm', 'a', 'S', 't', 'm', 't', '\022', 'T', '\n', '\025', 'c', 'r', 'e', 'a', 't', 'e', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\222', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\023', 'C', 'r', 'e', 'a', 't', 'e', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', 'Q', '\n', '\024', 'a', 'l', 't', 'e', 'r', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\223', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\022', 'A', 'l', 't', 'e', 'r', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', 'j', '\n', '\035', 'a', 'l', 't', 'e', 'r', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'n', 't', 's', '_', 's', 't', 'm', 't', '\030', '\224', '\001', ' ', '\001', '(', '\013', '2', '$', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'n', 't', 's', 'S', 't', 'm', 't', 'H', '\000', 'R', '\032', 'A', 'l', 't', 'e', 'r', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'n', 't', 's', 'S', 't', 'm', 't', '\022', 'U', '\n', '\026', 'c', 'r', 'e', 'a', 't', 'e', '_', 'e', 'v', 'e', 'n', 't', '_', 't', 'r', 'i', 'g', '_', 's', 't', 'm', 't', '\030', '\225', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'E', 'v', 'e', 'n', 't', 'T', 'r', 'i', 'g', 'S', 't', 'm', 't', 'H', '\000', 'R', '\023', 'C', 'r', 'e', 'a', 't', 'e', 'E', 'v', 'e', 'n', 't', 'T', 'r', 'i', 'g', 'S', 't', 'm', 't', '\022', 'R', '\n', '\025', 'a', 'l', 't', 'e', 'r', '_', 'e', 'v', 'e', 'n', 't', '_', 't', 'r', 'i', 'g', '_', 's', 't', 'm', 't', '\030', '\226', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'E', 'v', 'e', 'n', 't', 'T', 'r', 'i', 'g', 'S', 't', 'm', 't', 'H', '\000', 'R', '\022', 'A', 'l', 't', 'e', 'r', 'E', 'v', 'e', 'n', 't', 'T', 'r', 'i', 'g', 'S', 't', 'm', 't', '\022', 'R', '\n', '\025', 'r', 'e', 'f', 'r', 'e', 's', 'h', '_', 'm', 'a', 't', '_', 'v', 'i', 'e', 'w', '_', 's', 't', 'm', 't', '\030', '\227', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'M', 'a', 't', 'V', 'i', 'e', 'w', 'S', 't', 'm', 't', 'H', '\000', 'R', '\022', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'M', 'a', 't', 'V', 'i', 'e', 'w', 'S', 't', 'm', 't', '\022', 'T', '\n', '\025', 'r', 'e', 'p', 'l', 'i', 'c', 'a', '_', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '_', 's', 't', 'm', 't', '\030', '\230', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'e', 'p', 'l', 'i', 'c', 'a', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', 'S', 't', 'm', 't', 'H', '\000', 'R', '\023', 'R', 'e', 'p', 'l', 'i', 'c', 'a', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', 'S', 't', 'm', 't', '\022', 'H', '\n', '\021', 'a', 'l', 't', 'e', 'r', '_', 's', 'y', 's', 't', 'e', 'm', '_', 's', 't', 'm', 't', '\030', '\231', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'S', 'y', 's', 't', 'e', 'm', 'S', 't', 'm', 't', 'H', '\000', 'R', '\017', 'A', 'l', 't', 'e', 'r', 'S', 'y', 's', 't', 'e', 'm', 'S', 't', 'm', 't', '\022', 'K', '\n', '\022', 'c', 'r', 'e', 'a', 't', 'e', '_', 'p', 'o', 'l', 'i', 'c', 'y', '_', 's', 't', 'm', 't', '\030', '\232', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'S', 't', 'm', 't', 'H', '\000', 'R', '\020', 'C', 'r', 'e', 'a', 't', 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'S', 't', 'm', 't', '\022', 'H', '\n', '\021', 'a', 'l', 't', 'e', 'r', '_', 'p', 'o', 'l', 'i', 'c', 'y', '_', 's', 't', 'm', 't', '\030', '\233', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'S', 't', 'm', 't', 'H', '\000', 'R', '\017', 'A', 'l', 't', 'e', 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'S', 't', 'm', 't', '\022', 'T', '\n', '\025', 'c', 'r', 'e', 'a', 't', 'e', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', '_', 's', 't', 'm', 't', '\030', '\234', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'S', 't', 'm', 't', 'H', '\000', 'R', '\023', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'S', 't', 'm', 't', '\022', '?', '\n', '\016', 'c', 'r', 'e', 'a', 't', 'e', '_', 'a', 'm', '_', 's', 't', 'm', 't', '\030', '\235', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'A', 'm', 'S', 't', 'm', 't', 'H', '\000', 'R', '\014', 'C', 'r', 'e', 'a', 't', 'e', 'A', 'm', 'S', 't', 'm', 't', '\022', 'Z', '\n', '\027', 'c', 'r', 'e', 'a', 't', 'e', '_', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\236', '\001', ' ', '\001', '(', '\013', '2', '\037', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\025', 'C', 'r', 'e', 'a', 't', 'e', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', 'W', '\n', '\026', 'a', 'l', 't', 'e', 'r', '_', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\237', '\001', ' ', '\001', '(', '\013', '2', '\036', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\024', 'A', 'l', 't', 'e', 'r', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', ']', '\n', '\030', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\240', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\026', 'C', 'r', 'e', 'a', 't', 'e', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', 'Z', '\n', '\027', 'a', 'l', 't', 'e', 'r', '_', 's', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\241', '\001', ' ', '\001', '(', '\013', '2', '\037', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\025', 'A', 'l', 't', 'e', 'r', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', 'W', '\n', '\026', 'd', 'r', 'o', 'p', '_', 's', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\242', '\001', ' ', '\001', '(', '\013', '2', '\036', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\024', 'D', 'r', 'o', 'p', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', 'H', '\n', '\021', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 't', 'a', 't', 's', '_', 's', 't', 'm', 't', '\030', '\243', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'S', 't', 'a', 't', 's', 'S', 't', 'm', 't', 'H', '\000', 'R', '\017', 'C', 'r', 'e', 'a', 't', 'e', 'S', 't', 'a', 't', 's', 'S', 't', 'm', 't', '\022', 'Q', '\n', '\024', 'a', 'l', 't', 'e', 'r', '_', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '_', 's', 't', 'm', 't', '\030', '\244', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'C', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'H', '\000', 'R', '\022', 'A', 'l', 't', 'e', 'r', 'C', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '2', '\n', '\t', 'c', 'a', 'l', 'l', '_', 's', 't', 'm', 't', '\030', '\245', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'a', 'l', 'l', 'S', 't', 'm', 't', 'H', '\000', 'R', '\010', 'C', 'a', 'l', 'l', 'S', 't', 'm', 't', '\022', 'E', '\n', '\020', 'a', 'l', 't', 'e', 'r', '_', 's', 't', 'a', 't', 's', '_', 's', 't', 'm', 't', '\030', '\246', '\001', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 's', 'S', 't', 'm', 't', 'H', '\000', 'R', '\016', 'A', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 's', 'S', 't', 'm', 't', '\022', '+', '\n', '\006', 'a', '_', 'e', 'x', 'p', 'r', '\030', '\247', '\001', ' ', '\001', '(', '\013', '2', '\020', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', '_', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\006', 'A', '_', 'E', 'x', 'p', 'r', '\022', '5', '\n', '\n', 'c', 'o', 'l', 'u', 'm', 'n', '_', 'r', 'e', 'f', '\030', '\250', '\001', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'l', 'u', 'm', 'n', 'R', 'e', 'f', 'H', '\000', 'R', '\t', 'C', 'o', 'l', 'u', 'm', 'n', 'R', 'e', 'f', '\022', '2', '\n', '\t', 'p', 'a', 'r', 'a', 'm', '_', 'r', 'e', 'f', '\030', '\251', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 'a', 'm', 'R', 'e', 'f', 'H', '\000', 'R', '\010', 'P', 'a', 'r', 'a', 'm', 'R', 'e', 'f', '\022', '.', '\n', '\007', 'a', '_', 'c', 'o', 'n', 's', 't', '\030', '\252', '\001', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', '_', 'C', 'o', 'n', 's', 't', 'H', '\000', 'R', '\007', 'A', '_', 'C', 'o', 'n', 's', 't', '\022', '2', '\n', '\t', 'f', 'u', 'n', 'c', '_', 'c', 'a', 'l', 'l', '\030', '\253', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'u', 'n', 'c', 'C', 'a', 'l', 'l', 'H', '\000', 'R', '\010', 'F', 'u', 'n', 'c', 'C', 'a', 'l', 'l', '\022', '+', '\n', '\006', 'a', '_', 's', 't', 'a', 'r', '\030', '\254', '\001', ' ', '\001', '(', '\013', '2', '\020', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', '_', 'S', 't', 'a', 'r', 'H', '\000', 'R', '\006', 'A', '_', 'S', 't', 'a', 'r', '\022', '4', '\n', '\t', 'a', '_', 'i', 'n', 'd', 'i', 'c', 'e', 's', '\030', '\255', '\001', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', '_', 'I', 'n', 'd', 'i', 'c', 'e', 's', 'H', '\000', 'R', '\t', 'A', '_', 'I', 'n', 'd', 'i', 'c', 'e', 's', '\022', '@', '\n', '\r', 'a', '_', 'i', 'n', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\256', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', '_', 'I', 'n', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\r', 'A', '_', 'I', 'n', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\022', ';', '\n', '\014', 'a', '_', 'a', 'r', 'r', 'a', 'y', '_', 'e', 'x', 'p', 'r', '\030', '\257', '\001', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', '_', 'A', 'r', 'r', 'a', 'y', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\013', 'A', '_', 'A', 'r', 'r', 'a', 'y', 'E', 'x', 'p', 'r', '\022', '5', '\n', '\n', 'r', 'e', 's', '_', 't', 'a', 'r', 'g', 'e', 't', '\030', '\260', '\001', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'e', 's', 'T', 'a', 'r', 'g', 'e', 't', 'H', '\000', 'R', '\t', 'R', 'e', 's', 'T', 'a', 'r', 'g', 'e', 't', '\022', 'E', '\n', '\020', 'm', 'u', 'l', 't', 'i', '_', 'a', 's', 's', 'i', 'g', 'n', '_', 'r', 'e', 'f', '\030', '\261', '\001', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'M', 'u', 'l', 't', 'i', 'A', 's', 's', 'i', 'g', 'n', 'R', 'e', 'f', 'H', '\000', 'R', '\016', 'M', 'u', 'l', 't', 'i', 'A', 's', 's', 'i', 'g', 'n', 'R', 'e', 'f', '\022', '2', '\n', '\t', 't', 'y', 'p', 'e', '_', 'c', 'a', 's', 't', '\030', '\262', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'C', 'a', 's', 't', 'H', '\000', 'R', '\010', 'T', 'y', 'p', 'e', 'C', 'a', 's', 't', '\022', 'A', '\n', '\016', 'c', 'o', 'l', 'l', 'a', 't', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\263', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'l', 'l', 'a', 't', 'e', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\r', 'C', 'o', 'l', 'l', 'a', 't', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', ',', '\n', '\007', 's', 'o', 'r', 't', '_', 'b', 'y', '\030', '\264', '\001', ' ', '\001', '(', '\013', '2', '\020', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'o', 'r', 't', 'B', 'y', 'H', '\000', 'R', '\006', 'S', 'o', 'r', 't', 'B', 'y', '\022', '5', '\n', '\n', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'd', 'e', 'f', '\030', '\265', '\001', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 'n', 'd', 'o', 'w', 'D', 'e', 'f', 'H', '\000', 'R', '\t', 'W', 'i', 'n', 'd', 'o', 'w', 'D', 'e', 'f', '\022', 'D', '\n', '\017', 'r', 'a', 'n', 'g', 'e', '_', 's', 'u', 'b', 's', 'e', 'l', 'e', 'c', 't', '\030', '\266', '\001', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'S', 'u', 'b', 's', 'e', 'l', 'e', 'c', 't', 'H', '\000', 'R', '\016', 'R', 'a', 'n', 'g', 'e', 'S', 'u', 'b', 's', 'e', 'l', 'e', 'c', 't', '\022', 'A', '\n', '\016', 'r', 'a', 'n', 'g', 'e', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\030', '\267', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\r', 'R', 'a', 'n', 'g', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', 'K', '\n', '\022', 'r', 'a', 'n', 'g', 'e', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 'a', 'm', 'p', 'l', 'e', '\030', '\270', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'T', 'a', 'b', 'l', 'e', 'S', 'a', 'm', 'p', 'l', 'e', 'H', '\000', 'R', '\020', 'R', 'a', 'n', 'g', 'e', 'T', 'a', 'b', 'l', 'e', 'S', 'a', 'm', 'p', 'l', 'e', '\022', 'E', '\n', '\020', 'r', 'a', 'n', 'g', 'e', '_', 't', 'a', 'b', 'l', 'e', '_', 'f', 'u', 'n', 'c', '\030', '\271', '\001', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', 'H', '\000', 'R', '\016', 'R', 'a', 'n', 'g', 'e', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', '\022', 'O', '\n', '\024', 'r', 'a', 'n', 'g', 'e', '_', 't', 'a', 'b', 'l', 'e', '_', 'f', 'u', 'n', 'c', '_', 'c', 'o', 'l', '\030', '\272', '\001', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', 'C', 'o', 'l', 'H', '\000', 'R', '\021', 'R', 'a', 'n', 'g', 'e', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', 'C', 'o', 'l', '\022', '2', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\273', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'H', '\000', 'R', '\010', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '5', '\n', '\n', 'c', 'o', 'l', 'u', 'm', 'n', '_', 'd', 'e', 'f', '\030', '\274', '\001', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'l', 'u', 'm', 'n', 'D', 'e', 'f', 'H', '\000', 'R', '\t', 'C', 'o', 'l', 'u', 'm', 'n', 'D', 'e', 'f', '\022', '5', '\n', '\n', 'i', 'n', 'd', 'e', 'x', '_', 'e', 'l', 'e', 'm', '\030', '\275', '\001', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 'd', 'e', 'x', 'E', 'l', 'e', 'm', 'H', '\000', 'R', '\t', 'I', 'n', 'd', 'e', 'x', 'E', 'l', 'e', 'm', '\022', '7', '\n', '\n', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\030', '\276', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 'H', '\000', 'R', '\n', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\022', '/', '\n', '\010', 'd', 'e', 'f', '_', 'e', 'l', 'e', 'm', '\030', '\277', '\001', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'e', 'f', 'E', 'l', 'e', 'm', 'H', '\000', 'R', '\007', 'D', 'e', 'f', 'E', 'l', 'e', 'm', '\022', 'B', '\n', '\017', 'r', 'a', 'n', 'g', 'e', '_', 't', 'b', 'l', '_', 'e', 'n', 't', 'r', 'y', '\030', '\300', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'T', 'b', 'l', 'E', 'n', 't', 'r', 'y', 'H', '\000', 'R', '\r', 'R', 'a', 'n', 'g', 'e', 'T', 'b', 'l', 'E', 'n', 't', 'r', 'y', '\022', 'K', '\n', '\022', 'r', 'a', 'n', 'g', 'e', '_', 't', 'b', 'l', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\030', '\301', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'T', 'b', 'l', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\020', 'R', 'a', 'n', 'g', 'e', 'T', 'b', 'l', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', 'N', '\n', '\023', 't', 'a', 'b', 'l', 'e', '_', 's', 'a', 'm', 'p', 'l', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\302', '\001', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'a', 'b', 'l', 'e', 'S', 'a', 'm', 'p', 'l', 'e', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\021', 'T', 'a', 'b', 'l', 'e', 'S', 'a', 'm', 'p', 'l', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', 'H', '\n', '\021', 'w', 'i', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\303', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'O', 'p', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\017', 'W', 'i', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'O', 'p', 't', 'i', 'o', 'n', '\022', 'H', '\n', '\021', 's', 'o', 'r', 't', '_', 'g', 'r', 'o', 'u', 'p', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\304', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'o', 'r', 't', 'G', 'r', 'o', 'u', 'p', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\017', 'S', 'o', 'r', 't', 'G', 'r', 'o', 'u', 'p', 'C', 'l', 'a', 'u', 's', 'e', '\022', ';', '\n', '\014', 'g', 'r', 'o', 'u', 'p', 'i', 'n', 'g', '_', 's', 'e', 't', '\030', '\305', '\001', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'G', 'r', 'o', 'u', 'p', 'i', 'n', 'g', 'S', 'e', 't', 'H', '\000', 'R', '\013', 'G', 'r', 'o', 'u', 'p', 'i', 'n', 'g', 'S', 'e', 't', '\022', '>', '\n', '\r', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\306', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 'n', 'd', 'o', 'w', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\014', 'W', 'i', 'n', 'd', 'o', 'w', 'C', 'l', 'a', 'u', 's', 'e', '\022', 'E', '\n', '\020', 'o', 'b', 'j', 'e', 'c', 't', '_', 'w', 'i', 't', 'h', '_', 'a', 'r', 'g', 's', '\030', '\307', '\001', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'W', 'i', 't', 'h', 'A', 'r', 'g', 's', 'H', '\000', 'R', '\016', 'O', 'b', 'j', 'e', 'c', 't', 'W', 'i', 't', 'h', 'A', 'r', 'g', 's', '\022', '8', '\n', '\013', 'a', 'c', 'c', 'e', 's', 's', '_', 'p', 'r', 'i', 'v', '\030', '\310', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'c', 'c', 'e', 's', 's', 'P', 'r', 'i', 'v', 'H', '\000', 'R', '\n', 'A', 'c', 'c', 'e', 's', 's', 'P', 'r', 'i', 'v', '\022', 'O', '\n', '\024', 'c', 'r', 'e', 'a', 't', 'e', '_', 'o', 'p', '_', 'c', 'l', 'a', 's', 's', '_', 'i', 't', 'e', 'm', '\030', '\311', '\001', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'O', 'p', 'C', 'l', 'a', 's', 's', 'I', 't', 'e', 'm', 'H', '\000', 'R', '\021', 'C', 'r', 'e', 'a', 't', 'e', 'O', 'p', 'C', 'l', 'a', 's', 's', 'I', 't', 'e', 'm', '\022', 'H', '\n', '\021', 't', 'a', 'b', 'l', 'e', '_', 'l', 'i', 'k', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\312', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'a', 'b', 'l', 'e', 'L', 'i', 'k', 'e', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\017', 'T', 'a', 'b', 'l', 'e', 'L', 'i', 'k', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', 'M', '\n', '\022', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\030', '\313', '\001', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'H', '\000', 'R', '\021', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\022', 'A', '\n', '\016', 'l', 'o', 'c', 'k', 'i', 'n', 'g', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\314', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'o', 'c', 'k', 'i', 'n', 'g', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\r', 'L', 'o', 'c', 'k', 'i', 'n', 'g', 'C', 'l', 'a', 'u', 's', 'e', '\022', 'B', '\n', '\017', 'r', 'o', 'w', '_', 'm', 'a', 'r', 'k', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\315', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'w', 'M', 'a', 'r', 'k', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\r', 'R', 'o', 'w', 'M', 'a', 'r', 'k', 'C', 'l', 'a', 'u', 's', 'e', '\022', '>', '\n', '\r', 'x', 'm', 'l', '_', 's', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', '\030', '\316', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'X', 'm', 'l', 'S', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', 'H', '\000', 'R', '\014', 'X', 'm', 'l', 'S', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', '\022', '8', '\n', '\013', 'w', 'i', 't', 'h', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\317', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\n', 'W', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', '\022', ';', '\n', '\014', 'i', 'n', 'f', 'e', 'r', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\320', '\001', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 'f', 'e', 'r', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\013', 'I', 'n', 'f', 'e', 'r', 'C', 'l', 'a', 'u', 's', 'e', '\022', 'K', '\n', '\022', 'o', 'n', '_', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\321', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'C', 'l', 'a', 'u', 's', 'e', 'H', '\000', 'R', '\020', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'C', 'l', 'a', 'u', 's', 'e', '\022', 'H', '\n', '\021', 'c', 'o', 'm', 'm', 'o', 'n', '_', 't', 'a', 'b', 'l', 'e', '_', 'e', 'x', 'p', 'r', '\030', '\322', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'E', 'x', 'p', 'r', 'H', '\000', 'R', '\017', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'E', 'x', 'p', 'r', '\022', '2', '\n', '\t', 'r', 'o', 'l', 'e', '_', 's', 'p', 'e', 'c', '\030', '\323', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'H', '\000', 'R', '\010', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', '\022', 'M', '\n', '\022', 't', 'r', 'i', 'g', 'g', 'e', 'r', '_', 't', 'r', 'a', 'n', 's', 'i', 't', 'i', 'o', 'n', '\030', '\324', '\001', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'r', 'i', 'g', 'g', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'i', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\021', 'T', 'r', 'i', 'g', 'g', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'i', 't', 'i', 'o', 'n', '\022', 'A', '\n', '\016', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 'e', 'l', 'e', 'm', '\030', '\325', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'E', 'l', 'e', 'm', 'H', '\000', 'R', '\r', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'E', 'l', 'e', 'm', '\022', 'A', '\n', '\016', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 's', 'p', 'e', 'c', '\030', '\326', '\001', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'S', 'p', 'e', 'c', 'H', '\000', 'R', '\r', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'S', 'p', 'e', 'c', '\022', 'Q', '\n', '\024', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 'b', 'o', 'u', 'n', 'd', '_', 's', 'p', 'e', 'c', '\030', '\327', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'B', 'o', 'u', 'n', 'd', 'S', 'p', 'e', 'c', 'H', '\000', 'R', '\022', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'B', 'o', 'u', 'n', 'd', 'S', 'p', 'e', 'c', '\022', 'T', '\n', '\025', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 'r', 'a', 'n', 'g', 'e', '_', 'd', 'a', 't', 'u', 'm', '\030', '\330', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'R', 'a', 'n', 'g', 'e', 'D', 'a', 't', 'u', 'm', 'H', '\000', 'R', '\023', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'R', 'a', 'n', 'g', 'e', 'D', 'a', 't', 'u', 'm', '\022', '>', '\n', '\r', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 'c', 'm', 'd', '\030', '\331', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'C', 'm', 'd', 'H', '\000', 'R', '\014', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'C', 'm', 'd', '\022', 'D', '\n', '\017', 'v', 'a', 'c', 'u', 'u', 'm', '_', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\332', '\001', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'a', 'c', 'u', 'u', 'm', 'R', 'e', 'l', 'a', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\016', 'V', 'a', 'c', 'u', 'u', 'm', 'R', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', 'H', '\n', '\021', 'i', 'n', 'l', 'i', 'n', 'e', '_', 'c', 'o', 'd', 'e', '_', 'b', 'l', 'o', 'c', 'k', '\030', '\333', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 'l', 'i', 'n', 'e', 'C', 'o', 'd', 'e', 'B', 'l', 'o', 'c', 'k', 'H', '\000', 'R', '\017', 'I', 'n', 'l', 'i', 'n', 'e', 'C', 'o', 'd', 'e', 'B', 'l', 'o', 'c', 'k', '\022', ';', '\n', '\014', 'c', 'a', 'l', 'l', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\334', '\001', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'a', 'l', 'l', 'C', 'o', 'n', 't', 'e', 'x', 't', 'H', '\000', 'R', '\013', 'C', 'a', 'l', 'l', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', '.', '\n', '\007', 'i', 'n', 't', 'e', 'g', 'e', 'r', '\030', '\335', '\001', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 't', 'e', 'g', 'e', 'r', 'H', '\000', 'R', '\007', 'I', 'n', 't', 'e', 'g', 'e', 'r', '\022', '(', '\n', '\005', 'f', 'l', 'o', 'a', 't', '\030', '\336', '\001', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'l', 'o', 'a', 't', 'H', '\000', 'R', '\005', 'F', 'l', 'o', 'a', 't', '\022', '+', '\n', '\006', 's', 't', 'r', 'i', 'n', 'g', '\030', '\337', '\001', ' ', '\001', '(', '\013', '2', '\020', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 't', 'r', 'i', 'n', 'g', 'H', '\000', 'R', '\006', 'S', 't', 'r', 'i', 'n', 'g', '\022', '5', '\n', '\n', 'b', 'i', 't', '_', 's', 't', 'r', 'i', 'n', 'g', '\030', '\340', '\001', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'B', 'i', 't', 'S', 't', 'r', 'i', 'n', 'g', 'H', '\000', 'R', '\t', 'B', 'i', 't', 'S', 't', 'r', 'i', 'n', 'g', '\022', '%', '\n', '\004', 'n', 'u', 'l', 'l', '\030', '\341', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'u', 'l', 'l', 'H', '\000', 'R', '\004', 'N', 'u', 'l', 'l', '\022', '%', '\n', '\004', 'l', 'i', 's', 't', '\030', '\342', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'i', 's', 't', 'H', '\000', 'R', '\004', 'L', 'i', 's', 't', '\022', '/', '\n', '\010', 'i', 'n', 't', '_', 'l', 'i', 's', 't', '\030', '\343', '\001', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 't', 'L', 'i', 's', 't', 'H', '\000', 'R', '\007', 'I', 'n', 't', 'L', 'i', 's', 't', '\022', '/', '\n', '\010', 'o', 'i', 'd', '_', 'l', 'i', 's', 't', '\030', '\344', '\001', ' ', '\001', '(', '\013', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'i', 'd', 'L', 'i', 's', 't', 'H', '\000', 'R', '\007', 'O', 'i', 'd', 'L', 'i', 's', 't', 'B', '\006', '\n', '\004', 'n', 'o', 'd', 'e', '\"', '\027', '\n', '\007', 'I', 'n', 't', 'e', 'g', 'e', 'r', '\022', '\014', '\n', '\004', 'i', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\005', '\"', '\024', '\n', '\005', 'F', 'l', 'o', 'a', 't', '\022', '\013', '\n', '\003', 's', 't', 'r', '\030', '\001', ' ', '\001', '(', '\t', '\"', '\025', '\n', '\006', 'S', 't', 'r', 'i', 'n', 'g', '\022', '\013', '\n', '\003', 's', 't', 'r', '\030', '\001', ' ', '\001', '(', '\t', '\"', '\030', '\n', '\t', 'B', 'i', 't', 'S', 't', 'r', 'i', 'n', 'g', '\022', '\013', '\n', '\003', 's', 't', 'r', '\030', '\001', ' ', '\001', '(', '\t', '\"', '\006', '\n', '\004', 'N', 'u', 'l', 'l', '\"', '%', '\n', '\004', 'L', 'i', 's', 't', '\022', '\035', '\n', '\005', 'i', 't', 'e', 'm', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', '\"', '(', '\n', '\007', 'O', 'i', 'd', 'L', 'i', 's', 't', '\022', '\035', '\n', '\005', 'i', 't', 'e', 'm', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', '\"', '(', '\n', '\007', 'I', 'n', 't', 'L', 'i', 's', 't', '\022', '\035', '\n', '\005', 'i', 't', 'e', 'm', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', '\"', '\032', '\n', '\t', 'B', 'i', 't', 'm', 'a', 'p', 's', 'e', 't', '\022', '\r', '\n', '\005', 'w', 'o', 'r', 'd', 's', '\030', '\001', ' ', '\003', '(', '\004', '\"', 'Q', '\n', '\005', 'A', 'l', 'i', 'a', 's', '\022', '\034', '\n', '\t', 'a', 'l', 'i', 'a', 's', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\t', 'a', 'l', 'i', 'a', 's', 'n', 'a', 'm', 'e', '\022', '*', '\n', '\010', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\"', '\343', '\001', '\n', '\010', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', '\022', ' ', '\n', '\013', 'c', 'a', 't', 'a', 'l', 'o', 'g', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'c', 'a', 't', 'a', 'l', 'o', 'g', 'n', 'a', 'm', 'e', '\022', '\036', '\n', '\n', 's', 'c', 'h', 'e', 'm', 'a', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 's', 'c', 'h', 'e', 'm', 'a', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'r', 'e', 'l', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', 'l', 'n', 'a', 'm', 'e', '\022', '\020', '\n', '\003', 'i', 'n', 'h', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\003', 'i', 'n', 'h', '\022', '&', '\n', '\016', 'r', 'e', 'l', 'p', 'e', 'r', 's', 'i', 's', 't', 'e', 'n', 'c', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\016', 'r', 'e', 'l', 'p', 'e', 'r', 's', 'i', 's', 't', 'e', 'n', 'c', 'e', '\022', '%', '\n', '\005', 'a', 'l', 'i', 'a', 's', '\030', '\006', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'R', '\005', 'a', 'l', 'i', 'a', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\223', '\004', '\n', '\t', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', '\022', '(', '\n', '\007', 'n', 's', '_', 'u', 'r', 'i', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'n', 's', '_', 'u', 'r', 'i', 's', '\022', '*', '\n', '\010', 'n', 's', '_', 'n', 'a', 'm', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'n', 's', '_', 'n', 'a', 'm', 'e', 's', '\022', '(', '\n', '\007', 'd', 'o', 'c', 'e', 'x', 'p', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'd', 'o', 'c', 'e', 'x', 'p', 'r', '\022', '(', '\n', '\007', 'r', 'o', 'w', 'e', 'x', 'p', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'r', 'o', 'w', 'e', 'x', 'p', 'r', '\022', '*', '\n', '\010', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\022', '*', '\n', '\010', 'c', 'o', 'l', 't', 'y', 'p', 'e', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'l', 't', 'y', 'p', 'e', 's', '\022', '.', '\n', '\n', 'c', 'o', 'l', 't', 'y', 'p', 'm', 'o', 'd', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'c', 'o', 'l', 't', 'y', 'p', 'm', 'o', 'd', 's', '\022', '4', '\n', '\r', 'c', 'o', 'l', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'c', 'o', 'l', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 's', '\022', '*', '\n', '\010', 'c', 'o', 'l', 'e', 'x', 'p', 'r', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'l', 'e', 'x', 'p', 'r', 's', '\022', '0', '\n', '\013', 'c', 'o', 'l', 'd', 'e', 'f', 'e', 'x', 'p', 'r', 's', '\030', '\n', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'c', 'o', 'l', 'd', 'e', 'f', 'e', 'x', 'p', 'r', 's', '\022', '$', '\n', '\r', 'o', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', 'c', 'o', 'l', '\030', '\013', ' ', '\001', '(', '\005', 'R', '\r', 'o', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', 'c', 'o', 'l', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\014', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\006', '\n', '\004', 'E', 'x', 'p', 'r', '\"', '\253', '\002', '\n', '\003', 'V', 'a', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\024', '\n', '\005', 'v', 'a', 'r', 'n', 'o', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\005', 'v', 'a', 'r', 'n', 'o', '\022', '\032', '\n', '\010', 'v', 'a', 'r', 'a', 't', 't', 'n', 'o', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'v', 'a', 'r', 'a', 't', 't', 'n', 'o', '\022', '\030', '\n', '\007', 'v', 'a', 'r', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\007', 'v', 'a', 'r', 't', 'y', 'p', 'e', '\022', '\034', '\n', '\t', 'v', 'a', 'r', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\t', 'v', 'a', 'r', 't', 'y', 'p', 'm', 'o', 'd', '\022', '\034', '\n', '\t', 'v', 'a', 'r', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\006', ' ', '\001', '(', '\r', 'R', '\t', 'v', 'a', 'r', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ' ', '\n', '\013', 'v', 'a', 'r', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\030', '\007', ' ', '\001', '(', '\r', 'R', '\013', 'v', 'a', 'r', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\022', '\032', '\n', '\010', 'v', 'a', 'r', 'n', 'o', 's', 'y', 'n', '\030', '\010', ' ', '\001', '(', '\r', 'R', '\010', 'v', 'a', 'r', 'n', 'o', 's', 'y', 'n', '\022', ' ', '\n', '\013', 'v', 'a', 'r', 'a', 't', 't', 'n', 'o', 's', 'y', 'n', '\030', '\t', ' ', '\001', '(', '\005', 'R', '\013', 'v', 'a', 'r', 'a', 't', 't', 'n', 'o', 's', 'y', 'n', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\n', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\364', '\001', '\n', '\005', 'P', 'a', 'r', 'a', 'm', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '1', '\n', '\t', 'p', 'a', 'r', 'a', 'm', 'k', 'i', 'n', 'd', '\030', '\002', ' ', '\001', '(', '\016', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 'a', 'm', 'K', 'i', 'n', 'd', 'R', '\t', 'p', 'a', 'r', 'a', 'm', 'k', 'i', 'n', 'd', '\022', '\030', '\n', '\007', 'p', 'a', 'r', 'a', 'm', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\007', 'p', 'a', 'r', 'a', 'm', 'i', 'd', '\022', '\034', '\n', '\t', 'p', 'a', 'r', 'a', 'm', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\t', 'p', 'a', 'r', 'a', 'm', 't', 'y', 'p', 'e', '\022', ' ', '\n', '\013', 'p', 'a', 'r', 'a', 'm', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\013', 'p', 'a', 'r', 'a', 'm', 't', 'y', 'p', 'm', 'o', 'd', '\022', ' ', '\n', '\013', 'p', 'a', 'r', 'a', 'm', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\006', ' ', '\001', '(', '\r', 'R', '\013', 'p', 'a', 'r', 'a', 'm', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\240', '\005', '\n', '\006', 'A', 'g', 'g', 'r', 'e', 'f', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\032', '\n', '\010', 'a', 'g', 'g', 'f', 'n', 'o', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\010', 'a', 'g', 'g', 'f', 'n', 'o', 'i', 'd', '\022', '\030', '\n', '\007', 'a', 'g', 'g', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\007', 'a', 'g', 'g', 't', 'y', 'p', 'e', '\022', '\034', '\n', '\t', 'a', 'g', 'g', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\t', 'a', 'g', 'g', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ' ', '\n', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\005', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\014', 'a', 'g', 'g', 't', 'r', 'a', 'n', 's', 't', 'y', 'p', 'e', '\030', '\006', ' ', '\001', '(', '\r', 'R', '\014', 'a', 'g', 'g', 't', 'r', 'a', 'n', 's', 't', 'y', 'p', 'e', '\022', '0', '\n', '\013', 'a', 'g', 'g', 'a', 'r', 'g', 't', 'y', 'p', 'e', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'a', 'g', 'g', 'a', 'r', 'g', 't', 'y', 'p', 'e', 's', '\022', '4', '\n', '\r', 'a', 'g', 'g', 'd', 'i', 'r', 'e', 'c', 't', 'a', 'r', 'g', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'a', 'g', 'g', 'd', 'i', 'r', 'e', 'c', 't', 'a', 'r', 'g', 's', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '*', '\n', '\010', 'a', 'g', 'g', 'o', 'r', 'd', 'e', 'r', '\030', '\n', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'a', 'g', 'g', 'o', 'r', 'd', 'e', 'r', '\022', '0', '\n', '\013', 'a', 'g', 'g', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '\030', '\013', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'a', 'g', 'g', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '\022', ',', '\n', '\t', 'a', 'g', 'g', 'f', 'i', 'l', 't', 'e', 'r', '\030', '\014', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'a', 'g', 'g', 'f', 'i', 'l', 't', 'e', 'r', '\022', '\030', '\n', '\007', 'a', 'g', 'g', 's', 't', 'a', 'r', '\030', '\r', ' ', '\001', '(', '\010', 'R', '\007', 'a', 'g', 'g', 's', 't', 'a', 'r', '\022', ' ', '\n', '\013', 'a', 'g', 'g', 'v', 'a', 'r', 'i', 'a', 'd', 'i', 'c', '\030', '\016', ' ', '\001', '(', '\010', 'R', '\013', 'a', 'g', 'g', 'v', 'a', 'r', 'i', 'a', 'd', 'i', 'c', '\022', '\030', '\n', '\007', 'a', 'g', 'g', 'k', 'i', 'n', 'd', '\030', '\017', ' ', '\001', '(', '\t', 'R', '\007', 'a', 'g', 'g', 'k', 'i', 'n', 'd', '\022', ' ', '\n', '\013', 'a', 'g', 'g', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\030', '\020', ' ', '\001', '(', '\r', 'R', '\013', 'a', 'g', 'g', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\022', '.', '\n', '\010', 'a', 'g', 'g', 's', 'p', 'l', 'i', 't', '\030', '\021', ' ', '\001', '(', '\016', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'g', 'g', 'S', 'p', 'l', 'i', 't', 'R', '\010', 'a', 'g', 'g', 's', 'p', 'l', 'i', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\022', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\332', '\001', '\n', '\014', 'G', 'r', 'o', 'u', 'p', 'i', 'n', 'g', 'F', 'u', 'n', 'c', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\"', '\n', '\004', 'r', 'e', 'f', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'r', 'e', 'f', 's', '\022', '\"', '\n', '\004', 'c', 'o', 'l', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'c', 'o', 'l', 's', '\022', ' ', '\n', '\013', 'a', 'g', 'g', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\030', '\005', ' ', '\001', '(', '\r', 'R', '\013', 'a', 'g', 'g', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\006', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\334', '\002', '\n', '\n', 'W', 'i', 'n', 'd', 'o', 'w', 'F', 'u', 'n', 'c', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\032', '\n', '\010', 'w', 'i', 'n', 'f', 'n', 'o', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\010', 'w', 'i', 'n', 'f', 'n', 'o', 'i', 'd', '\022', '\030', '\n', '\007', 'w', 'i', 'n', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\007', 'w', 'i', 'n', 't', 'y', 'p', 'e', '\022', '\034', '\n', '\t', 'w', 'i', 'n', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\t', 'w', 'i', 'n', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ' ', '\n', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\005', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', ',', '\n', '\t', 'a', 'g', 'g', 'f', 'i', 'l', 't', 'e', 'r', '\030', '\007', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'a', 'g', 'g', 'f', 'i', 'l', 't', 'e', 'r', '\022', '\026', '\n', '\006', 'w', 'i', 'n', 'r', 'e', 'f', '\030', '\010', ' ', '\001', '(', '\r', 'R', '\006', 'w', 'i', 'n', 'r', 'e', 'f', '\022', '\030', '\n', '\007', 'w', 'i', 'n', 's', 't', 'a', 'r', '\030', '\t', ' ', '\001', '(', '\010', 'R', '\007', 'w', 'i', 'n', 's', 't', 'a', 'r', '\022', '\026', '\n', '\006', 'w', 'i', 'n', 'a', 'g', 'g', '\030', '\n', ' ', '\001', '(', '\010', 'R', '\006', 'w', 'i', 'n', 'a', 'g', 'g', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\013', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\217', '\003', '\n', '\017', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'n', 'g', 'R', 'e', 'f', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '*', '\n', '\020', 'r', 'e', 'f', 'c', 'o', 'n', 't', 'a', 'i', 'n', 'e', 'r', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\020', 'r', 'e', 'f', 'c', 'o', 'n', 't', 'a', 'i', 'n', 'e', 'r', 't', 'y', 'p', 'e', '\022', ' ', '\n', '\013', 'r', 'e', 'f', 'e', 'l', 'e', 'm', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\013', 'r', 'e', 'f', 'e', 'l', 'e', 'm', 't', 'y', 'p', 'e', '\022', '\034', '\n', '\t', 'r', 'e', 'f', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\t', 'r', 'e', 'f', 't', 'y', 'p', 'm', 'o', 'd', '\022', '\034', '\n', '\t', 'r', 'e', 'f', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\005', ' ', '\001', '(', '\r', 'R', '\t', 'r', 'e', 'f', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '8', '\n', '\017', 'r', 'e', 'f', 'u', 'p', 'p', 'e', 'r', 'i', 'n', 'd', 'e', 'x', 'p', 'r', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\017', 'r', 'e', 'f', 'u', 'p', 'p', 'e', 'r', 'i', 'n', 'd', 'e', 'x', 'p', 'r', '\022', '8', '\n', '\017', 'r', 'e', 'f', 'l', 'o', 'w', 'e', 'r', 'i', 'n', 'd', 'e', 'x', 'p', 'r', '\030', '\007', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\017', 'r', 'e', 'f', 'l', 'o', 'w', 'e', 'r', 'i', 'n', 'd', 'e', 'x', 'p', 'r', '\022', '(', '\n', '\007', 'r', 'e', 'f', 'e', 'x', 'p', 'r', '\030', '\010', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'r', 'e', 'f', 'e', 'x', 'p', 'r', '\022', '2', '\n', '\014', 'r', 'e', 'f', 'a', 's', 's', 'g', 'n', 'e', 'x', 'p', 'r', '\030', '\t', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'r', 'e', 'f', 'a', 's', 's', 'g', 'n', 'e', 'x', 'p', 'r', '\"', '\352', '\002', '\n', '\010', 'F', 'u', 'n', 'c', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\026', '\n', '\006', 'f', 'u', 'n', 'c', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\006', 'f', 'u', 'n', 'c', 'i', 'd', '\022', '&', '\n', '\016', 'f', 'u', 'n', 'c', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\016', 'f', 'u', 'n', 'c', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\022', '\036', '\n', '\n', 'f', 'u', 'n', 'c', 'r', 'e', 't', 's', 'e', 't', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\n', 'f', 'u', 'n', 'c', 'r', 'e', 't', 's', 'e', 't', '\022', '\"', '\n', '\014', 'f', 'u', 'n', 'c', 'v', 'a', 'r', 'i', 'a', 'd', 'i', 'c', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\014', 'f', 'u', 'n', 'c', 'v', 'a', 'r', 'i', 'a', 'd', 'i', 'c', '\022', '6', '\n', '\n', 'f', 'u', 'n', 'c', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\006', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'R', '\n', 'f', 'u', 'n', 'c', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\036', '\n', '\n', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\007', ' ', '\001', '(', '\r', 'R', '\n', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ' ', '\n', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\010', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\n', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\240', '\001', '\n', '\014', 'N', 'a', 'm', 'e', 'd', 'A', 'r', 'g', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\034', '\n', '\t', 'a', 'r', 'g', 'n', 'u', 'm', 'b', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\t', 'a', 'r', 'g', 'n', 'u', 'm', 'b', 'e', 'r', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\230', '\002', '\n', '\006', 'O', 'p', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\022', '\n', '\004', 'o', 'p', 'n', 'o', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\004', 'o', 'p', 'n', 'o', '\022', '\032', '\n', '\010', 'o', 'p', 'f', 'u', 'n', 'c', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\010', 'o', 'p', 'f', 'u', 'n', 'c', 'i', 'd', '\022', '\"', '\n', '\014', 'o', 'p', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\014', 'o', 'p', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\022', '\032', '\n', '\010', 'o', 'p', 'r', 'e', 't', 's', 'e', 't', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\010', 'o', 'p', 'r', 'e', 't', 's', 'e', 't', '\022', '\032', '\n', '\010', 'o', 'p', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\006', ' ', '\001', '(', '\r', 'R', '\010', 'o', 'p', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ' ', '\n', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\007', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\236', '\002', '\n', '\014', 'D', 'i', 's', 't', 'i', 'n', 'c', 't', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\022', '\n', '\004', 'o', 'p', 'n', 'o', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\004', 'o', 'p', 'n', 'o', '\022', '\032', '\n', '\010', 'o', 'p', 'f', 'u', 'n', 'c', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\010', 'o', 'p', 'f', 'u', 'n', 'c', 'i', 'd', '\022', '\"', '\n', '\014', 'o', 'p', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\014', 'o', 'p', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\022', '\032', '\n', '\010', 'o', 'p', 'r', 'e', 't', 's', 'e', 't', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\010', 'o', 'p', 'r', 'e', 't', 's', 'e', 't', '\022', '\032', '\n', '\010', 'o', 'p', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\006', ' ', '\001', '(', '\r', 'R', '\010', 'o', 'p', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ' ', '\n', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\007', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\234', '\002', '\n', '\n', 'N', 'u', 'l', 'l', 'I', 'f', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\022', '\n', '\004', 'o', 'p', 'n', 'o', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\004', 'o', 'p', 'n', 'o', '\022', '\032', '\n', '\010', 'o', 'p', 'f', 'u', 'n', 'c', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\010', 'o', 'p', 'f', 'u', 'n', 'c', 'i', 'd', '\022', '\"', '\n', '\014', 'o', 'p', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\014', 'o', 'p', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\022', '\032', '\n', '\010', 'o', 'p', 'r', 'e', 't', 's', 'e', 't', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\010', 'o', 'p', 'r', 'e', 't', 's', 'e', 't', '\022', '\032', '\n', '\010', 'o', 'p', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\006', ' ', '\001', '(', '\r', 'R', '\010', 'o', 'p', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ' ', '\n', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\007', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\336', '\001', '\n', '\021', 'S', 'c', 'a', 'l', 'a', 'r', 'A', 'r', 'r', 'a', 'y', 'O', 'p', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\022', '\n', '\004', 'o', 'p', 'n', 'o', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\004', 'o', 'p', 'n', 'o', '\022', '\032', '\n', '\010', 'o', 'p', 'f', 'u', 'n', 'c', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\010', 'o', 'p', 'f', 'u', 'n', 'c', 'i', 'd', '\022', '\025', '\n', '\006', 'u', 's', 'e', '_', 'o', 'r', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\005', 'u', 's', 'e', 'O', 'r', '\022', ' ', '\n', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\005', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\234', '\001', '\n', '\010', 'B', 'o', 'o', 'l', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '.', '\n', '\006', 'b', 'o', 'o', 'l', 'o', 'p', '\030', '\002', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'B', 'o', 'o', 'l', 'E', 'x', 'p', 'r', 'T', 'y', 'p', 'e', 'R', '\006', 'b', 'o', 'o', 'l', 'o', 'p', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\251', '\002', '\n', '\007', 'S', 'u', 'b', 'L', 'i', 'n', 'k', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '9', '\n', '\r', 's', 'u', 'b', '_', 'l', 'i', 'n', 'k', '_', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'u', 'b', 'L', 'i', 'n', 'k', 'T', 'y', 'p', 'e', 'R', '\013', 's', 'u', 'b', 'L', 'i', 'n', 'k', 'T', 'y', 'p', 'e', '\022', '\036', '\n', '\013', 's', 'u', 'b', '_', 'l', 'i', 'n', 'k', '_', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\t', 's', 'u', 'b', 'L', 'i', 'n', 'k', 'I', 'd', '\022', '*', '\n', '\010', 't', 'e', 's', 't', 'e', 'x', 'p', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 't', 'e', 's', 't', 'e', 'x', 'p', 'r', '\022', '+', '\n', '\t', 'o', 'p', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'o', 'p', 'e', 'r', 'N', 'a', 'm', 'e', '\022', ',', '\n', '\t', 's', 'u', 'b', 's', 'e', 'l', 'e', 'c', 't', '\030', '\006', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 's', 'u', 'b', 's', 'e', 'l', 'e', 'c', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\265', '\005', '\n', '\007', 'S', 'u', 'b', 'P', 'l', 'a', 'n', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '9', '\n', '\r', 's', 'u', 'b', '_', 'l', 'i', 'n', 'k', '_', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'u', 'b', 'L', 'i', 'n', 'k', 'T', 'y', 'p', 'e', 'R', '\013', 's', 'u', 'b', 'L', 'i', 'n', 'k', 'T', 'y', 'p', 'e', '\022', '*', '\n', '\010', 't', 'e', 's', 't', 'e', 'x', 'p', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 't', 'e', 's', 't', 'e', 'x', 'p', 'r', '\022', '+', '\n', '\t', 'p', 'a', 'r', 'a', 'm', '_', 'i', 'd', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'p', 'a', 'r', 'a', 'm', 'I', 'd', 's', '\022', '\030', '\n', '\007', 'p', 'l', 'a', 'n', '_', 'i', 'd', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\007', 'p', 'l', 'a', 'n', '_', 'i', 'd', '\022', '\034', '\n', '\t', 'p', 'l', 'a', 'n', '_', 'n', 'a', 'm', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\t', 'p', 'l', 'a', 'n', '_', 'n', 'a', 'm', 'e', '\022', '$', '\n', '\016', 'f', 'i', 'r', 's', 't', '_', 'c', 'o', 'l', '_', 't', 'y', 'p', 'e', '\030', '\007', ' ', '\001', '(', '\r', 'R', '\014', 'f', 'i', 'r', 's', 't', 'C', 'o', 'l', 'T', 'y', 'p', 'e', '\022', '(', '\n', '\020', 'f', 'i', 'r', 's', 't', '_', 'c', 'o', 'l', '_', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\010', ' ', '\001', '(', '\005', 'R', '\016', 'f', 'i', 'r', 's', 't', 'C', 'o', 'l', 'T', 'y', 'p', 'm', 'o', 'd', '\022', '.', '\n', '\023', 'f', 'i', 'r', 's', 't', '_', 'c', 'o', 'l', '_', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\r', 'R', '\021', 'f', 'i', 'r', 's', 't', 'C', 'o', 'l', 'C', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\022', '$', '\n', '\016', 'u', 's', 'e', '_', 'h', 'a', 's', 'h', '_', 't', 'a', 'b', 'l', 'e', '\030', '\n', ' ', '\001', '(', '\010', 'R', '\014', 'u', 's', 'e', 'H', 'a', 's', 'h', 'T', 'a', 'b', 'l', 'e', '\022', '(', '\n', '\020', 'u', 'n', 'k', 'n', 'o', 'w', 'n', '_', 'e', 'q', '_', 'f', 'a', 'l', 's', 'e', '\030', '\013', ' ', '\001', '(', '\010', 'R', '\016', 'u', 'n', 'k', 'n', 'o', 'w', 'n', 'E', 'q', 'F', 'a', 'l', 's', 'e', '\022', '$', '\n', '\r', 'p', 'a', 'r', 'a', 'l', 'l', 'e', 'l', '_', 's', 'a', 'f', 'e', '\030', '\014', ' ', '\001', '(', '\010', 'R', '\r', 'p', 'a', 'r', 'a', 'l', 'l', 'e', 'l', '_', 's', 'a', 'f', 'e', '\022', '+', '\n', '\t', 's', 'e', 't', '_', 'p', 'a', 'r', 'a', 'm', '\030', '\r', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 's', 'e', 't', 'P', 'a', 'r', 'a', 'm', '\022', '+', '\n', '\t', 'p', 'a', 'r', '_', 'p', 'a', 'r', 'a', 'm', '\030', '\016', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'p', 'a', 'r', 'P', 'a', 'r', 'a', 'm', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\017', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\"', '\n', '\014', 's', 't', 'a', 'r', 't', 'u', 'p', '_', 'c', 'o', 's', 't', '\030', '\020', ' ', '\001', '(', '\001', 'R', '\014', 's', 't', 'a', 'r', 't', 'u', 'p', '_', 'c', 'o', 's', 't', '\022', '$', '\n', '\r', 'p', 'e', 'r', '_', 'c', 'a', 'l', 'l', '_', 'c', 'o', 's', 't', '\030', '\021', ' ', '\001', '(', '\001', 'R', '\r', 'p', 'e', 'r', '_', 'c', 'a', 'l', 'l', '_', 'c', 'o', 's', 't', '\"', 'b', '\n', '\022', 'A', 'l', 't', 'e', 'r', 'n', 'a', 't', 'i', 'v', 'e', 'S', 'u', 'b', 'P', 'l', 'a', 'n', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '*', '\n', '\010', 's', 'u', 'b', 'p', 'l', 'a', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 's', 'u', 'b', 'p', 'l', 'a', 'n', 's', '\"', '\325', '\001', '\n', '\013', 'F', 'i', 'e', 'l', 'd', 'S', 'e', 'l', 'e', 'c', 't', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '\032', '\n', '\010', 'f', 'i', 'e', 'l', 'd', 'n', 'u', 'm', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'f', 'i', 'e', 'l', 'd', 'n', 'u', 'm', '\022', '\036', '\n', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\022', '\"', '\n', '\014', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\014', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'm', 'o', 'd', '\022', '\"', '\n', '\014', 'r', 'e', 's', 'u', 'l', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\006', ' ', '\001', '(', '\r', 'R', '\014', 'r', 'e', 's', 'u', 'l', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\"', '\310', '\001', '\n', '\n', 'F', 'i', 'e', 'l', 'd', 'S', 't', 'o', 'r', 'e', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '(', '\n', '\007', 'n', 'e', 'w', 'v', 'a', 'l', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'n', 'e', 'w', 'v', 'a', 'l', 's', '\022', ',', '\n', '\t', 'f', 'i', 'e', 'l', 'd', 'n', 'u', 'm', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'f', 'i', 'e', 'l', 'd', 'n', 'u', 'm', 's', '\022', '\036', '\n', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\005', ' ', '\001', '(', '\r', 'R', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\"', '\223', '\002', '\n', '\013', 'R', 'e', 'l', 'a', 'b', 'e', 'l', 'T', 'y', 'p', 'e', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '\036', '\n', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\022', '\"', '\n', '\014', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\014', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'm', 'o', 'd', '\022', '\"', '\n', '\014', 'r', 'e', 's', 'u', 'l', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\005', ' ', '\001', '(', '\r', 'R', '\014', 'r', 'e', 's', 'u', 'l', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '<', '\n', '\r', 'r', 'e', 'l', 'a', 'b', 'e', 'l', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\006', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'R', '\r', 'r', 'e', 'l', 'a', 'b', 'e', 'l', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\355', '\001', '\n', '\013', 'C', 'o', 'e', 'r', 'c', 'e', 'V', 'i', 'a', 'I', 'O', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '\036', '\n', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\022', '\"', '\n', '\014', 'r', 'e', 's', 'u', 'l', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\014', 'r', 'e', 's', 'u', 'l', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ':', '\n', '\014', 'c', 'o', 'e', 'r', 'c', 'e', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\005', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'R', '\014', 'c', 'o', 'e', 'r', 'c', 'e', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\006', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\301', '\002', '\n', '\017', 'A', 'r', 'r', 'a', 'y', 'C', 'o', 'e', 'r', 'c', 'e', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '*', '\n', '\010', 'e', 'l', 'e', 'm', 'e', 'x', 'p', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'e', 'l', 'e', 'm', 'e', 'x', 'p', 'r', '\022', '\036', '\n', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\022', '\"', '\n', '\014', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\014', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'm', 'o', 'd', '\022', '\"', '\n', '\014', 'r', 'e', 's', 'u', 'l', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\006', ' ', '\001', '(', '\r', 'R', '\014', 'r', 'e', 's', 'u', 'l', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ':', '\n', '\014', 'c', 'o', 'e', 'r', 'c', 'e', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\007', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'R', '\014', 'c', 'o', 'e', 'r', 'c', 'e', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\010', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\322', '\001', '\n', '\022', 'C', 'o', 'n', 'v', 'e', 'r', 't', 'R', 'o', 'w', 't', 'y', 'p', 'e', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '\036', '\n', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\022', '<', '\n', '\r', 'c', 'o', 'n', 'v', 'e', 'r', 't', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\004', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'R', '\r', 'c', 'o', 'n', 'v', 'e', 'r', 't', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\210', '\001', '\n', '\013', 'C', 'o', 'l', 'l', 'a', 't', 'e', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '\031', '\n', '\010', 'c', 'o', 'l', 'l', '_', 'o', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\007', 'c', 'o', 'l', 'l', 'O', 'i', 'd', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\370', '\001', '\n', '\010', 'C', 'a', 's', 'e', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\032', '\n', '\010', 'c', 'a', 's', 'e', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\010', 'c', 'a', 's', 'e', 't', 'y', 'p', 'e', '\022', '\036', '\n', '\n', 'c', 'a', 's', 'e', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\n', 'c', 'a', 's', 'e', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', ',', '\n', '\t', 'd', 'e', 'f', 'r', 'e', 's', 'u', 'l', 't', '\030', '\006', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'd', 'e', 'f', 'r', 'e', 's', 'u', 'l', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\224', '\001', '\n', '\010', 'C', 'a', 's', 'e', 'W', 'h', 'e', 'n', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\"', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'e', 'x', 'p', 'r', '\022', '&', '\n', '\006', 'r', 'e', 's', 'u', 'l', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'r', 'e', 's', 'u', 'l', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\202', '\001', '\n', '\014', 'C', 'a', 's', 'e', 'T', 'e', 's', 't', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\027', '\n', '\007', 't', 'y', 'p', 'e', '_', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\006', 't', 'y', 'p', 'e', 'I', 'd', '\022', '\031', '\n', '\010', 't', 'y', 'p', 'e', '_', 'm', 'o', 'd', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\007', 't', 'y', 'p', 'e', 'M', 'o', 'd', '\022', '\034', '\n', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\"', '\203', '\002', '\n', '\t', 'A', 'r', 'r', 'a', 'y', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\"', '\n', '\014', 'a', 'r', 'r', 'a', 'y', '_', 't', 'y', 'p', 'e', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\014', 'a', 'r', 'r', 'a', 'y', '_', 't', 'y', 'p', 'e', 'i', 'd', '\022', '\"', '\n', '\014', 'a', 'r', 'r', 'a', 'y', '_', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\014', 'a', 'r', 'r', 'a', 'y', '_', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '&', '\n', '\016', 'e', 'l', 'e', 'm', 'e', 'n', 't', '_', 't', 'y', 'p', 'e', 'i', 'd', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\016', 'e', 'l', 'e', 'm', 'e', 'n', 't', '_', 't', 'y', 'p', 'e', 'i', 'd', '\022', '*', '\n', '\010', 'e', 'l', 'e', 'm', 'e', 'n', 't', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'e', 'l', 'e', 'm', 'e', 'n', 't', 's', '\022', '\034', '\n', '\t', 'm', 'u', 'l', 't', 'i', 'd', 'i', 'm', 's', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\t', 'm', 'u', 'l', 't', 'i', 'd', 'i', 'm', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\357', '\001', '\n', '\007', 'R', 'o', 'w', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\036', '\n', '\n', 'r', 'o', 'w', '_', 't', 'y', 'p', 'e', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\n', 'r', 'o', 'w', '_', 't', 'y', 'p', 'e', 'i', 'd', '\022', '6', '\n', '\n', 'r', 'o', 'w', '_', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\004', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'R', '\n', 'r', 'o', 'w', '_', 'f', 'o', 'r', 'm', 'a', 't', '\022', '*', '\n', '\010', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\006', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\272', '\002', '\n', '\016', 'R', 'o', 'w', 'C', 'o', 'm', 'p', 'a', 'r', 'e', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '0', '\n', '\006', 'r', 'c', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'w', 'C', 'o', 'm', 'p', 'a', 'r', 'e', 'T', 'y', 'p', 'e', 'R', '\006', 'r', 'c', 't', 'y', 'p', 'e', '\022', '$', '\n', '\005', 'o', 'p', 'n', 'o', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'o', 'p', 'n', 'o', 's', '\022', '.', '\n', '\n', 'o', 'p', 'f', 'a', 'm', 'i', 'l', 'i', 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'o', 'p', 'f', 'a', 'm', 'i', 'l', 'i', 'e', 's', '\022', '2', '\n', '\014', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', 's', '\022', '$', '\n', '\005', 'l', 'a', 'r', 'g', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'l', 'a', 'r', 'g', 's', '\022', '$', '\n', '\005', 'r', 'a', 'r', 'g', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'r', 'a', 'r', 'g', 's', '\"', '\274', '\001', '\n', '\014', 'C', 'o', 'a', 'l', 'e', 's', 'c', 'e', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\"', '\n', '\014', 'c', 'o', 'a', 'l', 'e', 's', 'c', 'e', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\014', 'c', 'o', 'a', 'l', 'e', 's', 'c', 'e', 't', 'y', 'p', 'e', '\022', '&', '\n', '\016', 'c', 'o', 'a', 'l', 'e', 's', 'c', 'e', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\016', 'c', 'o', 'a', 'l', 'e', 's', 'c', 'e', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\370', '\001', '\n', '\n', 'M', 'i', 'n', 'M', 'a', 'x', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\036', '\n', '\n', 'm', 'i', 'n', 'm', 'a', 'x', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\n', 'm', 'i', 'n', 'm', 'a', 'x', 't', 'y', 'p', 'e', '\022', '\"', '\n', '\014', 'm', 'i', 'n', 'm', 'a', 'x', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\014', 'm', 'i', 'n', 'm', 'a', 'x', 'c', 'o', 'l', 'l', 'i', 'd', '\022', ' ', '\n', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'p', 'u', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\002', 'o', 'p', '\030', '\005', ' ', '\001', '(', '\016', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'M', 'i', 'n', 'M', 'a', 'x', 'O', 'p', 'R', '\002', 'o', 'p', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\252', '\001', '\n', '\020', 'S', 'Q', 'L', 'V', 'a', 'l', 'u', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ',', '\n', '\002', 'o', 'p', '\030', '\002', ' ', '\001', '(', '\016', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'Q', 'L', 'V', 'a', 'l', 'u', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'O', 'p', 'R', '\002', 'o', 'p', '\022', '\022', '\n', '\004', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\004', 't', 'y', 'p', 'e', '\022', '\026', '\n', '\006', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\006', 't', 'y', 'p', 'm', 'o', 'd', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\345', '\002', '\n', '\007', 'X', 'm', 'l', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '#', '\n', '\002', 'o', 'p', '\030', '\002', ' ', '\001', '(', '\016', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'X', 'm', 'l', 'E', 'x', 'p', 'r', 'O', 'p', 'R', '\002', 'o', 'p', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '.', '\n', '\n', 'n', 'a', 'm', 'e', 'd', '_', 'a', 'r', 'g', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'n', 'a', 'm', 'e', 'd', '_', 'a', 'r', 'g', 's', '\022', ',', '\n', '\t', 'a', 'r', 'g', '_', 'n', 'a', 'm', 'e', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'a', 'r', 'g', '_', 'n', 'a', 'm', 'e', 's', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '5', '\n', '\t', 'x', 'm', 'l', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\016', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'X', 'm', 'l', 'O', 'p', 't', 'i', 'o', 'n', 'T', 'y', 'p', 'e', 'R', '\t', 'x', 'm', 'l', 'o', 'p', 't', 'i', 'o', 'n', '\022', '\022', '\n', '\004', 't', 'y', 'p', 'e', '\030', '\010', ' ', '\001', '(', '\r', 'R', '\004', 't', 'y', 'p', 'e', '\022', '\026', '\n', '\006', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\t', ' ', '\001', '(', '\005', 'R', '\006', 't', 'y', 'p', 'm', 'o', 'd', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\n', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\302', '\001', '\n', '\010', 'N', 'u', 'l', 'l', 'T', 'e', 's', 't', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', ':', '\n', '\014', 'n', 'u', 'l', 'l', 't', 'e', 's', 't', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'u', 'l', 'l', 'T', 'e', 's', 't', 'T', 'y', 'p', 'e', 'R', '\014', 'n', 'u', 'l', 'l', 't', 'e', 's', 't', 't', 'y', 'p', 'e', '\022', '\032', '\n', '\010', 'a', 'r', 'g', 'i', 's', 'r', 'o', 'w', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\010', 'a', 'r', 'g', 'i', 's', 'r', 'o', 'w', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\251', '\001', '\n', '\013', 'B', 'o', 'o', 'l', 'e', 'a', 'n', 'T', 'e', 's', 't', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', ':', '\n', '\014', 'b', 'o', 'o', 'l', 't', 'e', 's', 't', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'B', 'o', 'o', 'l', 'T', 'e', 's', 't', 'T', 'y', 'p', 'e', 'R', '\014', 'b', 'o', 'o', 'l', 't', 'e', 's', 't', 't', 'y', 'p', 'e', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\230', '\002', '\n', '\016', 'C', 'o', 'e', 'r', 'c', 'e', 'T', 'o', 'D', 'o', 'm', 'a', 'i', 'n', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '\036', '\n', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\n', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'e', '\022', '\"', '\n', '\014', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'm', 'o', 'd', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\014', 'r', 'e', 's', 'u', 'l', 't', 't', 'y', 'p', 'm', 'o', 'd', '\022', '\"', '\n', '\014', 'r', 'e', 's', 'u', 'l', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\005', ' ', '\001', '(', '\r', 'R', '\014', 'r', 'e', 's', 'u', 'l', 't', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '>', '\n', '\016', 'c', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\006', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'R', '\016', 'c', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\245', '\001', '\n', '\023', 'C', 'o', 'e', 'r', 'c', 'e', 'T', 'o', 'D', 'o', 'm', 'a', 'i', 'n', 'V', 'a', 'l', 'u', 'e', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\027', '\n', '\007', 't', 'y', 'p', 'e', '_', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\006', 't', 'y', 'p', 'e', 'I', 'd', '\022', '\031', '\n', '\010', 't', 'y', 'p', 'e', '_', 'm', 'o', 'd', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\007', 't', 'y', 'p', 'e', 'M', 'o', 'd', '\022', '\034', '\n', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\236', '\001', '\n', '\014', 'S', 'e', 't', 'T', 'o', 'D', 'e', 'f', 'a', 'u', 'l', 't', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\027', '\n', '\007', 't', 'y', 'p', 'e', '_', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\006', 't', 'y', 'p', 'e', 'I', 'd', '\022', '\031', '\n', '\010', 't', 'y', 'p', 'e', '_', 'm', 'o', 'd', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\007', 't', 'y', 'p', 'e', 'M', 'o', 'd', '\022', '\034', '\n', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\217', '\001', '\n', '\r', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'O', 'f', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\026', '\n', '\006', 'c', 'v', 'a', 'r', 'n', 'o', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\006', 'c', 'v', 'a', 'r', 'n', 'o', '\022', ' ', '\n', '\013', 'c', 'u', 'r', 's', 'o', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\013', 'c', 'u', 'r', 's', 'o', 'r', '_', 'n', 'a', 'm', 'e', '\022', '\"', '\n', '\014', 'c', 'u', 'r', 's', 'o', 'r', '_', 'p', 'a', 'r', 'a', 'm', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\014', 'c', 'u', 'r', 's', 'o', 'r', '_', 'p', 'a', 'r', 'a', 'm', '\"', '`', '\n', '\r', 'N', 'e', 'x', 't', 'V', 'a', 'l', 'u', 'e', 'E', 'x', 'p', 'r', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\024', '\n', '\005', 's', 'e', 'q', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\005', 's', 'e', 'q', 'i', 'd', '\022', '\027', '\n', '\007', 't', 'y', 'p', 'e', '_', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\006', 't', 'y', 'p', 'e', 'I', 'd', '\"', '\233', '\001', '\n', '\r', 'I', 'n', 'f', 'e', 'r', 'e', 'n', 'c', 'e', 'E', 'l', 'e', 'm', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\"', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'e', 'x', 'p', 'r', '\022', ' ', '\n', '\013', 'i', 'n', 'f', 'e', 'r', 'c', 'o', 'l', 'l', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'f', 'e', 'r', 'c', 'o', 'l', 'l', 'i', 'd', '\022', '\"', '\n', '\014', 'i', 'n', 'f', 'e', 'r', 'o', 'p', 'c', 'l', 'a', 's', 's', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\014', 'i', 'n', 'f', 'e', 'r', 'o', 'p', 'c', 'l', 'a', 's', 's', '\"', '\207', '\002', '\n', '\013', 'T', 'a', 'r', 'g', 'e', 't', 'E', 'n', 't', 'r', 'y', '\022', ' ', '\n', '\003', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'x', 'p', 'r', '\022', '\"', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'e', 'x', 'p', 'r', '\022', '\024', '\n', '\005', 'r', 'e', 's', 'n', 'o', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\005', 'r', 'e', 's', 'n', 'o', '\022', '\030', '\n', '\007', 'r', 'e', 's', 'n', 'a', 'm', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', 's', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\017', 'r', 'e', 's', 's', 'o', 'r', 't', 'g', 'r', 'o', 'u', 'p', 'r', 'e', 'f', '\030', '\005', ' ', '\001', '(', '\r', 'R', '\017', 'r', 'e', 's', 's', 'o', 'r', 't', 'g', 'r', 'o', 'u', 'p', 'r', 'e', 'f', '\022', '\036', '\n', '\n', 'r', 'e', 's', 'o', 'r', 'i', 'g', 't', 'b', 'l', '\030', '\006', ' ', '\001', '(', '\r', 'R', '\n', 'r', 'e', 's', 'o', 'r', 'i', 'g', 't', 'b', 'l', '\022', '\036', '\n', '\n', 'r', 'e', 's', 'o', 'r', 'i', 'g', 'c', 'o', 'l', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\n', 'r', 'e', 's', 'o', 'r', 'i', 'g', 'c', 'o', 'l', '\022', '\030', '\n', '\007', 'r', 'e', 's', 'j', 'u', 'n', 'k', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\007', 'r', 'e', 's', 'j', 'u', 'n', 'k', '\"', '\'', '\n', '\013', 'R', 'a', 'n', 'g', 'e', 'T', 'b', 'l', 'R', 'e', 'f', '\022', '\030', '\n', '\007', 'r', 't', 'i', 'n', 'd', 'e', 'x', '\030', '\001', ' ', '\001', '(', '\005', 'R', '\007', 'r', 't', 'i', 'n', 'd', 'e', 'x', '\"', '\273', '\002', '\n', '\010', 'J', 'o', 'i', 'n', 'E', 'x', 'p', 'r', '\022', '.', '\n', '\010', 'j', 'o', 'i', 'n', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 'o', 'i', 'n', 'T', 'y', 'p', 'e', 'R', '\010', 'j', 'o', 'i', 'n', 't', 'y', 'p', 'e', '\022', '\035', '\n', '\n', 'i', 's', '_', 'n', 'a', 't', 'u', 'r', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\t', 'i', 's', 'N', 'a', 't', 'u', 'r', 'a', 'l', '\022', '\"', '\n', '\004', 'l', 'a', 'r', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'l', 'a', 'r', 'g', '\022', '\"', '\n', '\004', 'r', 'a', 'r', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'r', 'a', 'r', 'g', '\022', '1', '\n', '\014', 'u', 's', 'i', 'n', 'g', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'u', 's', 'i', 'n', 'g', 'C', 'l', 'a', 'u', 's', 'e', '\022', '$', '\n', '\005', 'q', 'u', 'a', 'l', 's', '\030', '\006', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'q', 'u', 'a', 'l', 's', '\022', '%', '\n', '\005', 'a', 'l', 'i', 'a', 's', '\030', '\007', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'R', '\005', 'a', 'l', 'i', 'a', 's', '\022', '\030', '\n', '\007', 'r', 't', 'i', 'n', 'd', 'e', 'x', '\030', '\010', ' ', '\001', '(', '\005', 'R', '\007', 'r', 't', 'i', 'n', 'd', 'e', 'x', '\"', '\\', '\n', '\010', 'F', 'r', 'o', 'm', 'E', 'x', 'p', 'r', '\022', '*', '\n', '\010', 'f', 'r', 'o', 'm', 'l', 'i', 's', 't', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'f', 'r', 'o', 'm', 'l', 'i', 's', 't', '\022', '$', '\n', '\005', 'q', 'u', 'a', 'l', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'q', 'u', 'a', 'l', 's', '\"', '\236', '\003', '\n', '\016', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'E', 'x', 'p', 'r', '\022', '2', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\016', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\022', '3', '\n', '\r', 'a', 'r', 'b', 'i', 't', 'e', 'r', '_', 'e', 'l', 'e', 'm', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'a', 'r', 'b', 'i', 't', 'e', 'r', 'E', 'l', 'e', 'm', 's', '\022', '3', '\n', '\r', 'a', 'r', 'b', 'i', 't', 'e', 'r', '_', 'w', 'h', 'e', 'r', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'a', 'r', 'b', 'i', 't', 'e', 'r', 'W', 'h', 'e', 'r', 'e', '\022', '\036', '\n', '\n', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\030', '\004', ' ', '\001', '(', '\r', 'R', '\n', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\022', '6', '\n', '\017', 'o', 'n', '_', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', '_', 's', 'e', 't', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'o', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'S', 'e', 't', '\022', ':', '\n', '\021', 'o', 'n', '_', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', '_', 'w', 'h', 'e', 'r', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\017', 'o', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'W', 'h', 'e', 'r', 'e', '\022', '$', '\n', '\016', 'e', 'x', 'c', 'l', '_', 'r', 'e', 'l', '_', 'i', 'n', 'd', 'e', 'x', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\014', 'e', 'x', 'c', 'l', 'R', 'e', 'l', 'I', 'n', 'd', 'e', 'x', '\022', '4', '\n', '\016', 'e', 'x', 'c', 'l', '_', 'r', 'e', 'l', '_', 't', 'l', 'i', 's', 't', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'e', 'x', 'c', 'l', 'R', 'e', 'l', 'T', 'l', 'i', 's', 't', '\"', '\333', '\002', '\n', '\n', 'I', 'n', 't', 'o', 'C', 'l', 'a', 'u', 's', 'e', '\022', '$', '\n', '\003', 'r', 'e', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\003', 'r', 'e', 'l', '\022', '+', '\n', '\t', 'c', 'o', 'l', '_', 'n', 'a', 'm', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'l', 'N', 'a', 'm', 'e', 's', '\022', '#', '\n', '\r', 'a', 'c', 'c', 'e', 's', 's', '_', 'm', 'e', 't', 'h', 'o', 'd', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 'a', 'c', 'c', 'e', 's', 's', 'M', 'e', 't', 'h', 'o', 'd', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '5', '\n', '\t', 'o', 'n', '_', 'c', 'o', 'm', 'm', 'i', 't', '\030', '\005', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'n', 'C', 'o', 'm', 'm', 'i', 't', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\010', 'o', 'n', 'C', 'o', 'm', 'm', 'i', 't', '\022', '(', '\n', '\020', 't', 'a', 'b', 'l', 'e', '_', 's', 'p', 'a', 'c', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\016', 't', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', 'N', 'a', 'm', 'e', '\022', '-', '\n', '\n', 'v', 'i', 'e', 'w', '_', 'q', 'u', 'e', 'r', 'y', '\030', '\007', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'v', 'i', 'e', 'w', 'Q', 'u', 'e', 'r', 'y', '\022', '\033', '\n', '\t', 's', 'k', 'i', 'p', '_', 'd', 'a', 't', 'a', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\010', 's', 'k', 'i', 'p', 'D', 'a', 't', 'a', '\"', 'o', '\n', '\007', 'R', 'a', 'w', 'S', 't', 'm', 't', '\022', '\"', '\n', '\004', 's', 't', 'm', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 's', 't', 'm', 't', '\022', '$', '\n', '\r', 's', 't', 'm', 't', '_', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\r', 's', 't', 'm', 't', '_', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\022', '\032', '\n', '\010', 's', 't', 'm', 't', '_', 'l', 'e', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 's', 't', 'm', 't', '_', 'l', 'e', 'n', '\"', '\234', '\r', '\n', '\005', 'Q', 'u', 'e', 'r', 'y', '\022', '4', '\n', '\014', 'c', 'o', 'm', 'm', 'a', 'n', 'd', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'm', 'd', 'T', 'y', 'p', 'e', 'R', '\013', 'c', 'o', 'm', 'm', 'a', 'n', 'd', 'T', 'y', 'p', 'e', '\022', '8', '\n', '\014', 'q', 'u', 'e', 'r', 'y', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'Q', 'u', 'e', 'r', 'y', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\013', 'q', 'u', 'e', 'r', 'y', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '\036', '\n', '\013', 'c', 'a', 'n', '_', 's', 'e', 't', '_', 't', 'a', 'g', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\t', 'c', 'a', 'n', 'S', 'e', 't', 'T', 'a', 'g', '\022', '1', '\n', '\014', 'u', 't', 'i', 'l', 'i', 't', 'y', '_', 's', 't', 'm', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'u', 't', 'i', 'l', 'i', 't', 'y', 'S', 't', 'm', 't', '\022', '\'', '\n', '\017', 'r', 'e', 's', 'u', 'l', 't', '_', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\016', 'r', 'e', 's', 'u', 'l', 't', 'R', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '\031', '\n', '\010', 'h', 'a', 's', '_', 'a', 'g', 'g', 's', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\007', 'h', 'a', 's', 'A', 'g', 'g', 's', '\022', '(', '\n', '\020', 'h', 'a', 's', '_', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'f', 'u', 'n', 'c', 's', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\016', 'h', 'a', 's', 'W', 'i', 'n', 'd', 'o', 'w', 'F', 'u', 'n', 'c', 's', '\022', '&', '\n', '\017', 'h', 'a', 's', '_', 't', 'a', 'r', 'g', 'e', 't', '_', 's', 'r', 'f', 's', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\r', 'h', 'a', 's', 'T', 'a', 'r', 'g', 'e', 't', 'S', 'R', 'F', 's', '\022', '\"', '\n', '\r', 'h', 'a', 's', '_', 's', 'u', 'b', '_', 'l', 'i', 'n', 'k', 's', '\030', '\t', ' ', '\001', '(', '\010', 'R', '\013', 'h', 'a', 's', 'S', 'u', 'b', 'L', 'i', 'n', 'k', 's', '\022', '&', '\n', '\017', 'h', 'a', 's', '_', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '_', 'o', 'n', '\030', '\n', ' ', '\001', '(', '\010', 'R', '\r', 'h', 'a', 's', 'D', 'i', 's', 't', 'i', 'n', 'c', 't', 'O', 'n', '\022', '#', '\n', '\r', 'h', 'a', 's', '_', 'r', 'e', 'c', 'u', 'r', 's', 'i', 'v', 'e', '\030', '\013', ' ', '\001', '(', '\010', 'R', '\014', 'h', 'a', 's', 'R', 'e', 'c', 'u', 'r', 's', 'i', 'v', 'e', '\022', '*', '\n', '\021', 'h', 'a', 's', '_', 'm', 'o', 'd', 'i', 'f', 'y', 'i', 'n', 'g', '_', 'c', 't', 'e', '\030', '\014', ' ', '\001', '(', '\010', 'R', '\017', 'h', 'a', 's', 'M', 'o', 'd', 'i', 'f', 'y', 'i', 'n', 'g', 'C', 'T', 'E', '\022', '$', '\n', '\016', 'h', 'a', 's', '_', 'f', 'o', 'r', '_', 'u', 'p', 'd', 'a', 't', 'e', '\030', '\r', ' ', '\001', '(', '\010', 'R', '\014', 'h', 'a', 's', 'F', 'o', 'r', 'U', 'p', 'd', 'a', 't', 'e', '\022', '(', '\n', '\020', 'h', 'a', 's', '_', 'r', 'o', 'w', '_', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '\030', '\016', ' ', '\001', '(', '\010', 'R', '\016', 'h', 'a', 's', 'R', 'o', 'w', 'S', 'e', 'c', 'u', 'r', 'i', 't', 'y', '\022', ')', '\n', '\010', 'c', 't', 'e', '_', 'l', 'i', 's', 't', '\030', '\017', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'c', 't', 'e', 'L', 'i', 's', 't', '\022', '&', '\n', '\006', 'r', 't', 'a', 'b', 'l', 'e', '\030', '\020', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'r', 't', 'a', 'b', 'l', 'e', '\022', '.', '\n', '\010', 'j', 'o', 'i', 'n', 't', 'r', 'e', 'e', '\030', '\021', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'r', 'o', 'm', 'E', 'x', 'p', 'r', 'R', '\010', 'j', 'o', 'i', 'n', 't', 'r', 'e', 'e', '\022', '/', '\n', '\013', 't', 'a', 'r', 'g', 'e', 't', '_', 'l', 'i', 's', 't', '\030', '\022', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 't', 'a', 'r', 'g', 'e', 't', 'L', 'i', 's', 't', '\022', '4', '\n', '\010', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\030', '\023', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'i', 'n', 'g', 'K', 'i', 'n', 'd', 'R', '\010', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\022', '9', '\n', '\013', 'o', 'n', '_', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', '\030', '\024', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'E', 'x', 'p', 'r', 'R', '\n', 'o', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', '\022', '5', '\n', '\016', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '_', 'l', 'i', 's', 't', '\030', '\025', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', 'L', 'i', 's', 't', '\022', '1', '\n', '\014', 'g', 'r', 'o', 'u', 'p', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\026', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'g', 'r', 'o', 'u', 'p', 'C', 'l', 'a', 'u', 's', 'e', '\022', '3', '\n', '\r', 'g', 'r', 'o', 'u', 'p', 'i', 'n', 'g', '_', 's', 'e', 't', 's', '\030', '\027', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'g', 'r', 'o', 'u', 'p', 'i', 'n', 'g', 'S', 'e', 't', 's', '\022', '/', '\n', '\013', 'h', 'a', 'v', 'i', 'n', 'g', '_', 'q', 'u', 'a', 'l', '\030', '\030', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'h', 'a', 'v', 'i', 'n', 'g', 'Q', 'u', 'a', 'l', '\022', '3', '\n', '\r', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\031', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'w', 'i', 'n', 'd', 'o', 'w', 'C', 'l', 'a', 'u', 's', 'e', '\022', '7', '\n', '\017', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\032', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', 'C', 'l', 'a', 'u', 's', 'e', '\022', '/', '\n', '\013', 's', 'o', 'r', 't', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\033', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 's', 'o', 'r', 't', 'C', 'l', 'a', 'u', 's', 'e', '\022', '1', '\n', '\014', 'l', 'i', 'm', 'i', 't', '_', 'o', 'f', 'f', 's', 'e', 't', '\030', '\034', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'l', 'i', 'm', 'i', 't', 'O', 'f', 'f', 's', 'e', 't', '\022', '/', '\n', '\013', 'l', 'i', 'm', 'i', 't', '_', 'c', 'o', 'u', 'n', 't', '\030', '\035', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'l', 'i', 'm', 'i', 't', 'C', 'o', 'u', 'n', 't', '\022', '8', '\n', '\014', 'l', 'i', 'm', 'i', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\036', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'i', 'm', 'i', 't', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\013', 'l', 'i', 'm', 'i', 't', 'O', 'p', 't', 'i', 'o', 'n', '\022', '+', '\n', '\t', 'r', 'o', 'w', '_', 'm', 'a', 'r', 'k', 's', '\030', '\037', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'r', 'o', 'w', 'M', 'a', 'r', 'k', 's', '\022', '5', '\n', '\016', 's', 'e', 't', '_', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', 's', '\030', ' ', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 's', 'e', 't', 'O', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', 's', '\022', '7', '\n', '\017', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '_', 'd', 'e', 'p', 's', '\030', '!', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 'D', 'e', 'p', 's', '\022', '<', '\n', '\022', 'w', 'i', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\"', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\020', 'w', 'i', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '$', '\n', '\r', 's', 't', 'm', 't', '_', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '#', ' ', '\001', '(', '\005', 'R', '\r', 's', 't', 'm', 't', '_', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\022', '\032', '\n', '\010', 's', 't', 'm', 't', '_', 'l', 'e', 'n', '\030', '$', ' ', '\001', '(', '\005', 'R', '\010', 's', 't', 'm', 't', '_', 'l', 'e', 'n', '\"', '\377', '\002', '\n', '\n', 'I', 'n', 's', 'e', 'r', 't', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '\"', '\n', '\004', 'c', 'o', 'l', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'c', 'o', 'l', 's', '\022', '/', '\n', '\013', 's', 'e', 'l', 'e', 'c', 't', '_', 's', 't', 'm', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 's', 'e', 'l', 'e', 'c', 't', 'S', 't', 'm', 't', '\022', 'H', '\n', '\022', 'o', 'n', '_', 'c', 'o', 'n', 'f', 'l', 'i', 'c', 't', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\020', 'o', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'C', 'l', 'a', 'u', 's', 'e', '\022', '5', '\n', '\016', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '_', 'l', 'i', 's', 't', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', 'L', 'i', 's', 't', '\022', '5', '\n', '\013', 'w', 'i', 't', 'h', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\n', 'w', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', '\022', '4', '\n', '\010', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\030', '\007', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'i', 'n', 'g', 'K', 'i', 'n', 'd', 'R', '\010', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\"', '\220', '\002', '\n', '\n', 'D', 'e', 'l', 'e', 't', 'e', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '1', '\n', '\014', 'u', 's', 'i', 'n', 'g', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'u', 's', 'i', 'n', 'g', 'C', 'l', 'a', 'u', 's', 'e', '\022', '1', '\n', '\014', 'w', 'h', 'e', 'r', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'w', 'h', 'e', 'r', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', '5', '\n', '\016', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '_', 'l', 'i', 's', 't', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', 'L', 'i', 's', 't', '\022', '5', '\n', '\013', 'w', 'i', 't', 'h', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\n', 'w', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', '\"', '\277', '\002', '\n', '\n', 'U', 'p', 'd', 'a', 't', 'e', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '/', '\n', '\013', 't', 'a', 'r', 'g', 'e', 't', '_', 'l', 'i', 's', 't', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 't', 'a', 'r', 'g', 'e', 't', 'L', 'i', 's', 't', '\022', '1', '\n', '\014', 'w', 'h', 'e', 'r', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'w', 'h', 'e', 'r', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', '/', '\n', '\013', 'f', 'r', 'o', 'm', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'f', 'r', 'o', 'm', 'C', 'l', 'a', 'u', 's', 'e', '\022', '5', '\n', '\016', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', '_', 'l', 'i', 's', 't', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'r', 'e', 't', 'u', 'r', 'n', 'i', 'n', 'g', 'L', 'i', 's', 't', '\022', '5', '\n', '\013', 'w', 'i', 't', 'h', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\n', 'w', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', '\"', '\254', '\007', '\n', '\n', 'S', 'e', 'l', 'e', 'c', 't', 'S', 't', 'm', 't', '\022', '7', '\n', '\017', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', 'C', 'l', 'a', 'u', 's', 'e', '\022', '5', '\n', '\013', 'i', 'n', 't', 'o', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 't', 'o', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\n', 'i', 'n', 't', 'o', 'C', 'l', 'a', 'u', 's', 'e', '\022', '/', '\n', '\013', 't', 'a', 'r', 'g', 'e', 't', '_', 'l', 'i', 's', 't', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 't', 'a', 'r', 'g', 'e', 't', 'L', 'i', 's', 't', '\022', '/', '\n', '\013', 'f', 'r', 'o', 'm', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'f', 'r', 'o', 'm', 'C', 'l', 'a', 'u', 's', 'e', '\022', '1', '\n', '\014', 'w', 'h', 'e', 'r', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'w', 'h', 'e', 'r', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', '1', '\n', '\014', 'g', 'r', 'o', 'u', 'p', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'g', 'r', 'o', 'u', 'p', 'C', 'l', 'a', 'u', 's', 'e', '\022', '3', '\n', '\r', 'h', 'a', 'v', 'i', 'n', 'g', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\007', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'h', 'a', 'v', 'i', 'n', 'g', 'C', 'l', 'a', 'u', 's', 'e', '\022', '3', '\n', '\r', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'w', 'i', 'n', 'd', 'o', 'w', 'C', 'l', 'a', 'u', 's', 'e', '\022', '1', '\n', '\014', 'v', 'a', 'l', 'u', 'e', 's', '_', 'l', 'i', 's', 't', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'v', 'a', 'l', 'u', 'e', 's', 'L', 'i', 's', 't', 's', '\022', '/', '\n', '\013', 's', 'o', 'r', 't', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\n', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 's', 'o', 'r', 't', 'C', 'l', 'a', 'u', 's', 'e', '\022', '1', '\n', '\014', 'l', 'i', 'm', 'i', 't', '_', 'o', 'f', 'f', 's', 'e', 't', '\030', '\013', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'l', 'i', 'm', 'i', 't', 'O', 'f', 'f', 's', 'e', 't', '\022', '/', '\n', '\013', 'l', 'i', 'm', 'i', 't', '_', 'c', 'o', 'u', 'n', 't', '\030', '\014', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'l', 'i', 'm', 'i', 't', 'C', 'o', 'u', 'n', 't', '\022', '8', '\n', '\014', 'l', 'i', 'm', 'i', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\r', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'i', 'm', 'i', 't', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\013', 'l', 'i', 'm', 'i', 't', 'O', 'p', 't', 'i', 'o', 'n', '\022', '5', '\n', '\016', 'l', 'o', 'c', 'k', 'i', 'n', 'g', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\016', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'l', 'o', 'c', 'k', 'i', 'n', 'g', 'C', 'l', 'a', 'u', 's', 'e', '\022', '5', '\n', '\013', 'w', 'i', 't', 'h', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\017', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\n', 'w', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', '\022', '&', '\n', '\002', 'o', 'p', '\030', '\020', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'e', 't', 'O', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\002', 'o', 'p', '\022', '\020', '\n', '\003', 'a', 'l', 'l', '\030', '\021', ' ', '\001', '(', '\010', 'R', '\003', 'a', 'l', 'l', '\022', '(', '\n', '\004', 'l', 'a', 'r', 'g', '\030', '\022', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'e', 'l', 'e', 'c', 't', 'S', 't', 'm', 't', 'R', '\004', 'l', 'a', 'r', 'g', '\022', '(', '\n', '\004', 'r', 'a', 'r', 'g', '\030', '\023', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'e', 'l', 'e', 'c', 't', 'S', 't', 'm', 't', 'R', '\004', 'r', 'a', 'r', 'g', '\"', '\264', '\001', '\n', '\016', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '\"', '\n', '\004', 'c', 'm', 'd', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'c', 'm', 'd', 's', '\022', '.', '\n', '\007', 'r', 'e', 'l', 'k', 'i', 'n', 'd', '\030', '\003', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\007', 'r', 'e', 'l', 'k', 'i', 'n', 'd', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', '\217', '\002', '\n', '\r', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'C', 'm', 'd', '\022', '2', '\n', '\007', 's', 'u', 'b', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'T', 'y', 'p', 'e', 'R', '\007', 's', 'u', 'b', 't', 'y', 'p', 'e', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\020', '\n', '\003', 'n', 'u', 'm', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\003', 'n', 'u', 'm', '\022', '.', '\n', '\010', 'n', 'e', 'w', 'o', 'w', 'n', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\010', 'n', 'e', 'w', 'o', 'w', 'n', 'e', 'r', '\022', ' ', '\n', '\003', 'd', 'e', 'f', '\030', '\005', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'd', 'e', 'f', '\022', '2', '\n', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\030', '\006', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', '\342', '\001', '\n', '\017', 'A', 'l', 't', 'e', 'r', 'D', 'o', 'm', 'a', 'i', 'n', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 's', 'u', 'b', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 's', 'u', 'b', 't', 'y', 'p', 'e', '\022', '+', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 't', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', ' ', '\n', '\003', 'd', 'e', 'f', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'd', 'e', 'f', '\022', '2', '\n', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\030', '\005', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', '\336', '\002', '\n', '\020', 'S', 'e', 't', 'O', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '&', '\n', '\002', 'o', 'p', '\030', '\001', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'e', 't', 'O', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\002', 'o', 'p', '\022', '\020', '\n', '\003', 'a', 'l', 'l', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\003', 'a', 'l', 'l', '\022', '\"', '\n', '\004', 'l', 'a', 'r', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'l', 'a', 'r', 'g', '\022', '\"', '\n', '\004', 'r', 'a', 'r', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'r', 'a', 'r', 'g', '\022', '+', '\n', '\t', 'c', 'o', 'l', '_', 't', 'y', 'p', 'e', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'l', 'T', 'y', 'p', 'e', 's', '\022', '/', '\n', '\013', 'c', 'o', 'l', '_', 't', 'y', 'p', 'm', 'o', 'd', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'c', 'o', 'l', 'T', 'y', 'p', 'm', 'o', 'd', 's', '\022', '5', '\n', '\016', 'c', 'o', 'l', '_', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'c', 'o', 'l', 'C', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 's', '\022', '3', '\n', '\r', 'g', 'r', 'o', 'u', 'p', '_', 'c', 'l', 'a', 'u', 's', 'e', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'g', 'r', 'o', 'u', 'p', 'C', 'l', 'a', 'u', 's', 'e', 's', '\"', '\354', '\002', '\n', '\t', 'G', 'r', 'a', 'n', 't', 'S', 't', 'm', 't', '\022', '\032', '\n', '\010', 'i', 's', '_', 'g', 'r', 'a', 'n', 't', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\010', 'i', 's', '_', 'g', 'r', 'a', 'n', 't', '\022', '5', '\n', '\010', 't', 'a', 'r', 'g', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'G', 'r', 'a', 'n', 't', 'T', 'a', 'r', 'g', 'e', 't', 'T', 'y', 'p', 'e', 'R', '\010', 't', 'a', 'r', 'g', 't', 'y', 'p', 'e', '\022', '.', '\n', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\022', '(', '\n', '\007', 'o', 'b', 'j', 'e', 'c', 't', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'b', 'j', 'e', 'c', 't', 's', '\022', '.', '\n', '\n', 'p', 'r', 'i', 'v', 'i', 'l', 'e', 'g', 'e', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'p', 'r', 'i', 'v', 'i', 'l', 'e', 'g', 'e', 's', '\022', '*', '\n', '\010', 'g', 'r', 'a', 'n', 't', 'e', 'e', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'g', 'r', 'a', 'n', 't', 'e', 'e', 's', '\022', '\"', '\n', '\014', 'g', 'r', 'a', 'n', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\014', 'g', 'r', 'a', 'n', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', '\022', '2', '\n', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\030', '\010', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\"', '\227', '\002', '\n', '\r', 'G', 'r', 'a', 'n', 't', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', '\022', '4', '\n', '\r', 'g', 'r', 'a', 'n', 't', 'e', 'd', '_', 'r', 'o', 'l', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'g', 'r', 'a', 'n', 't', 'e', 'd', '_', 'r', 'o', 'l', 'e', 's', '\022', '4', '\n', '\r', 'g', 'r', 'a', 'n', 't', 'e', 'e', '_', 'r', 'o', 'l', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'g', 'r', 'a', 'n', 't', 'e', 'e', '_', 'r', 'o', 'l', 'e', 's', '\022', '\032', '\n', '\010', 'i', 's', '_', 'g', 'r', 'a', 'n', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\010', 'i', 's', '_', 'g', 'r', 'a', 'n', 't', '\022', '\034', '\n', '\t', 'a', 'd', 'm', 'i', 'n', '_', 'o', 'p', 't', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\t', 'a', 'd', 'm', 'i', 'n', '_', 'o', 'p', 't', '\022', ',', '\n', '\007', 'g', 'r', 'a', 'n', 't', 'o', 'r', '\030', '\005', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\007', 'g', 'r', 'a', 'n', 't', 'o', 'r', '\022', '2', '\n', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\030', '\006', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\"', 's', '\n', '\032', 'A', 'l', 't', 'e', 'r', 'D', 'e', 'f', 'a', 'u', 'l', 't', 'P', 'r', 'i', 'v', 'i', 'l', 'e', 'g', 'e', 's', 'S', 't', 'm', 't', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '+', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'G', 'r', 'a', 'n', 't', 'S', 't', 'm', 't', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\"', '1', '\n', '\017', 'C', 'l', 'o', 's', 'e', 'P', 'o', 'r', 't', 'a', 'l', 'S', 't', 'm', 't', '\022', '\036', '\n', '\n', 'p', 'o', 'r', 't', 'a', 'l', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\n', 'p', 'o', 'r', 't', 'a', 'l', 'n', 'a', 'm', 'e', '\"', 'u', '\n', '\013', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '\034', '\n', '\t', 'i', 'n', 'd', 'e', 'x', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\t', 'i', 'n', 'd', 'e', 'x', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\275', '\002', '\n', '\010', 'C', 'o', 'p', 'y', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '$', '\n', '\005', 'q', 'u', 'e', 'r', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'q', 'u', 'e', 'r', 'y', '\022', '(', '\n', '\007', 'a', 't', 't', 'l', 'i', 's', 't', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'a', 't', 't', 'l', 'i', 's', 't', '\022', '\030', '\n', '\007', 'i', 's', '_', 'f', 'r', 'o', 'm', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\007', 'i', 's', '_', 'f', 'r', 'o', 'm', '\022', '\036', '\n', '\n', 'i', 's', '_', 'p', 'r', 'o', 'g', 'r', 'a', 'm', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\n', 'i', 's', '_', 'p', 'r', 'o', 'g', 'r', 'a', 'm', '\022', '\032', '\n', '\010', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\010', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '1', '\n', '\014', 'w', 'h', 'e', 'r', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\010', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'w', 'h', 'e', 'r', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\"', '\313', '\004', '\n', '\n', 'C', 'r', 'e', 'a', 't', 'e', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '-', '\n', '\n', 't', 'a', 'b', 'l', 'e', '_', 'e', 'l', 't', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 't', 'a', 'b', 'l', 'e', 'E', 'l', 't', 's', '\022', '3', '\n', '\r', 'i', 'n', 'h', '_', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'i', 'n', 'h', 'R', 'e', 'l', 'a', 't', 'i', 'o', 'n', 's', '\022', ':', '\n', '\t', 'p', 'a', 'r', 't', 'b', 'o', 'u', 'n', 'd', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'B', 'o', 'u', 'n', 'd', 'S', 'p', 'e', 'c', 'R', '\t', 'p', 'a', 'r', 't', 'b', 'o', 'u', 'n', 'd', '\022', '3', '\n', '\010', 'p', 'a', 'r', 't', 's', 'p', 'e', 'c', '\030', '\005', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'S', 'p', 'e', 'c', 'R', '\010', 'p', 'a', 'r', 't', 's', 'p', 'e', 'c', '\022', '3', '\n', '\013', 'o', 'f', '_', 't', 'y', 'p', 'e', 'n', 'a', 'm', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\n', 'o', 'f', 'T', 'y', 'p', 'e', 'n', 'a', 'm', 'e', '\022', '0', '\n', '\013', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '4', '\n', '\010', 'o', 'n', 'c', 'o', 'm', 'm', 'i', 't', '\030', '\t', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'n', 'C', 'o', 'm', 'm', 'i', 't', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\010', 'o', 'n', 'c', 'o', 'm', 'm', 'i', 't', '\022', '&', '\n', '\016', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\030', '\n', ' ', '\001', '(', '\t', 'R', '\016', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\022', '#', '\n', '\r', 'a', 'c', 'c', 'e', 's', 's', '_', 'm', 'e', 't', 'h', 'o', 'd', '\030', '\013', ' ', '\001', '(', '\t', 'R', '\014', 'a', 'c', 'c', 'e', 's', 's', 'M', 'e', 't', 'h', 'o', 'd', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\014', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\"', '\222', '\002', '\n', '\n', 'D', 'e', 'f', 'i', 'n', 'e', 'S', 't', 'm', 't', '\022', '(', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '\032', '\n', '\010', 'o', 'l', 'd', 's', 't', 'y', 'l', 'e', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\010', 'o', 'l', 'd', 's', 't', 'y', 'l', 'e', '\022', '*', '\n', '\010', 'd', 'e', 'f', 'n', 'a', 'm', 'e', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'd', 'e', 'f', 'n', 'a', 'm', 'e', 's', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '.', '\n', '\n', 'd', 'e', 'f', 'i', 'n', 'i', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'd', 'e', 'f', 'i', 'n', 'i', 't', 'i', 'o', 'n', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\022', '\030', '\n', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\"', '\337', '\001', '\n', '\010', 'D', 'r', 'o', 'p', 'S', 't', 'm', 't', '\022', '(', '\n', '\007', 'o', 'b', 'j', 'e', 'c', 't', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'b', 'j', 'e', 'c', 't', 's', '\022', '5', '\n', '\013', 'r', 'e', 'm', 'o', 'v', 'e', '_', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\n', 'r', 'e', 'm', 'o', 'v', 'e', 'T', 'y', 'p', 'e', '\022', '2', '\n', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\030', '\003', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\022', '\036', '\n', '\n', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\n', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '\"', '\224', '\001', '\n', '\014', 'T', 'r', 'u', 'n', 'c', 'a', 't', 'e', 'S', 't', 'm', 't', '\022', ',', '\n', '\t', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', 's', '\022', '\"', '\n', '\014', 'r', 'e', 's', 't', 'a', 'r', 't', '_', 's', 'e', 'q', 's', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\014', 'r', 'e', 's', 't', 'a', 'r', 't', '_', 's', 'e', 'q', 's', '\022', '2', '\n', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\030', '\003', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\"', '\177', '\n', '\013', 'C', 'o', 'm', 'm', 'e', 'n', 't', 'S', 't', 'm', 't', '\022', '.', '\n', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\022', '&', '\n', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\022', '\030', '\n', '\007', 'c', 'o', 'm', 'm', 'e', 'n', 't', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\007', 'c', 'o', 'm', 'm', 'e', 'n', 't', '\"', '\226', '\001', '\n', '\t', 'F', 'e', 't', 'c', 'h', 'S', 't', 'm', 't', '\022', '6', '\n', '\t', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'e', 't', 'c', 'h', 'D', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', 'R', '\t', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\022', '\031', '\n', '\010', 'h', 'o', 'w', '_', 'm', 'a', 'n', 'y', '\030', '\002', ' ', '\001', '(', '\003', 'R', '\007', 'h', 'o', 'w', 'M', 'a', 'n', 'y', '\022', '\036', '\n', '\n', 'p', 'o', 'r', 't', 'a', 'l', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\n', 'p', 'o', 'r', 't', 'a', 'l', 'n', 'a', 'm', 'e', '\022', '\026', '\n', '\006', 'i', 's', 'm', 'o', 'v', 'e', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\006', 'i', 's', 'm', 'o', 'v', 'e', '\"', '\242', '\007', '\n', '\t', 'I', 'n', 'd', 'e', 'x', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 'i', 'd', 'x', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'i', 'd', 'x', 'n', 'a', 'm', 'e', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '#', '\n', '\r', 'a', 'c', 'c', 'e', 's', 's', '_', 'm', 'e', 't', 'h', 'o', 'd', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 'a', 'c', 'c', 'e', 's', 's', 'M', 'e', 't', 'h', 'o', 'd', '\022', '\037', '\n', '\013', 't', 'a', 'b', 'l', 'e', '_', 's', 'p', 'a', 'c', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\n', 't', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', '\022', '1', '\n', '\014', 'i', 'n', 'd', 'e', 'x', '_', 'p', 'a', 'r', 'a', 'm', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'i', 'n', 'd', 'e', 'x', 'P', 'a', 'r', 'a', 'm', 's', '\022', 'D', '\n', '\026', 'i', 'n', 'd', 'e', 'x', '_', 'i', 'n', 'c', 'l', 'u', 'd', 'i', 'n', 'g', '_', 'p', 'a', 'r', 'a', 'm', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\024', 'i', 'n', 'd', 'e', 'x', 'I', 'n', 'c', 'l', 'u', 'd', 'i', 'n', 'g', 'P', 'a', 'r', 'a', 'm', 's', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '1', '\n', '\014', 'w', 'h', 'e', 'r', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\010', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'w', 'h', 'e', 'r', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', '8', '\n', '\020', 'e', 'x', 'c', 'l', 'u', 'd', 'e', '_', 'o', 'p', '_', 'n', 'a', 'm', 'e', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 'e', 'x', 'c', 'l', 'u', 'd', 'e', 'O', 'p', 'N', 'a', 'm', 'e', 's', '\022', '\036', '\n', '\n', 'i', 'd', 'x', 'c', 'o', 'm', 'm', 'e', 'n', 't', '\030', '\n', ' ', '\001', '(', '\t', 'R', '\n', 'i', 'd', 'x', 'c', 'o', 'm', 'm', 'e', 'n', 't', '\022', '\033', '\n', '\t', 'i', 'n', 'd', 'e', 'x', '_', 'o', 'i', 'd', '\030', '\013', ' ', '\001', '(', '\r', 'R', '\010', 'i', 'n', 'd', 'e', 'x', 'O', 'i', 'd', '\022', '\031', '\n', '\010', 'o', 'l', 'd', '_', 'n', 'o', 'd', 'e', '\030', '\014', ' ', '\001', '(', '\r', 'R', '\007', 'o', 'l', 'd', 'N', 'o', 'd', 'e', '\022', '(', '\n', '\020', 'o', 'l', 'd', '_', 'c', 'r', 'e', 'a', 't', 'e', '_', 's', 'u', 'b', 'i', 'd', '\030', '\r', ' ', '\001', '(', '\r', 'R', '\016', 'o', 'l', 'd', 'C', 'r', 'e', 'a', 't', 'e', 'S', 'u', 'b', 'i', 'd', '\022', '=', '\n', '\033', 'o', 'l', 'd', '_', 'f', 'i', 'r', 's', 't', '_', 'r', 'e', 'l', 'f', 'i', 'l', 'e', 'n', 'o', 'd', 'e', '_', 's', 'u', 'b', 'i', 'd', '\030', '\016', ' ', '\001', '(', '\r', 'R', '\030', 'o', 'l', 'd', 'F', 'i', 'r', 's', 't', 'R', 'e', 'l', 'f', 'i', 'l', 'e', 'n', 'o', 'd', 'e', 'S', 'u', 'b', 'i', 'd', '\022', '\026', '\n', '\006', 'u', 'n', 'i', 'q', 'u', 'e', '\030', '\017', ' ', '\001', '(', '\010', 'R', '\006', 'u', 'n', 'i', 'q', 'u', 'e', '\022', '\030', '\n', '\007', 'p', 'r', 'i', 'm', 'a', 'r', 'y', '\030', '\020', ' ', '\001', '(', '\010', 'R', '\007', 'p', 'r', 'i', 'm', 'a', 'r', 'y', '\022', '\"', '\n', '\014', 'i', 's', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\030', '\021', ' ', '\001', '(', '\010', 'R', '\014', 'i', 's', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\022', '\036', '\n', '\n', 'd', 'e', 'f', 'e', 'r', 'r', 'a', 'b', 'l', 'e', '\030', '\022', ' ', '\001', '(', '\010', 'R', '\n', 'd', 'e', 'f', 'e', 'r', 'r', 'a', 'b', 'l', 'e', '\022', '\"', '\n', '\014', 'i', 'n', 'i', 't', 'd', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '\030', '\023', ' ', '\001', '(', '\010', 'R', '\014', 'i', 'n', 'i', 't', 'd', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '\022', ' ', '\n', '\013', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'e', 'd', '\030', '\024', ' ', '\001', '(', '\010', 'R', '\013', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'e', 'd', '\022', '\036', '\n', '\n', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '\030', '\025', ' ', '\001', '(', '\010', 'R', '\n', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\026', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\022', '2', '\n', '\024', 'r', 'e', 's', 'e', 't', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 't', 'b', 'l', 's', 'p', 'c', '\030', '\027', ' ', '\001', '(', '\010', 'R', '\024', 'r', 'e', 's', 'e', 't', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 't', 'b', 'l', 's', 'p', 'c', '\"', '\215', '\002', '\n', '\022', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '\"', '\n', '\014', 'i', 's', '_', 'p', 'r', 'o', 'c', 'e', 'd', 'u', 'r', 'e', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\014', 'i', 's', '_', 'p', 'r', 'o', 'c', 'e', 'd', 'u', 'r', 'e', '\022', '\030', '\n', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\022', '*', '\n', '\010', 'f', 'u', 'n', 'c', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'f', 'u', 'n', 'c', 'n', 'a', 'm', 'e', '\022', '.', '\n', '\n', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\022', '3', '\n', '\013', 'r', 'e', 't', 'u', 'r', 'n', '_', 't', 'y', 'p', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\n', 'r', 'e', 't', 'u', 'r', 'n', 'T', 'y', 'p', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\233', '\001', '\n', '\021', 'A', 'l', 't', 'e', 'r', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '.', '\n', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\022', ',', '\n', '\004', 'f', 'u', 'n', 'c', '\030', '\002', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'W', 'i', 't', 'h', 'A', 'r', 'g', 's', 'R', '\004', 'f', 'u', 'n', 'c', '\022', '(', '\n', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\"', ',', '\n', '\006', 'D', 'o', 'S', 't', 'm', 't', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\"', '\336', '\002', '\n', '\n', 'R', 'e', 'n', 'a', 'm', 'e', 'S', 't', 'm', 't', '\022', '5', '\n', '\013', 'r', 'e', 'n', 'a', 'm', 'e', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\n', 'r', 'e', 'n', 'a', 'm', 'e', 'T', 'y', 'p', 'e', '\022', '9', '\n', '\r', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '_', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\014', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', 'T', 'y', 'p', 'e', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '&', '\n', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\022', '\030', '\n', '\007', 's', 'u', 'b', 'n', 'a', 'm', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\007', 's', 'u', 'b', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'n', 'e', 'w', 'n', 'a', 'm', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\007', 'n', 'e', 'w', 'n', 'a', 'm', 'e', '\022', '2', '\n', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\030', '\007', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', '\220', '\002', '\n', '\010', 'R', 'u', 'l', 'e', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '\032', '\n', '\010', 'r', 'u', 'l', 'e', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\010', 'r', 'u', 'l', 'e', 'n', 'a', 'm', 'e', '\022', '1', '\n', '\014', 'w', 'h', 'e', 'r', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'w', 'h', 'e', 'r', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', '\'', '\n', '\005', 'e', 'v', 'e', 'n', 't', '\030', '\004', ' ', '\001', '(', '\016', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'm', 'd', 'T', 'y', 'p', 'e', 'R', '\005', 'e', 'v', 'e', 'n', 't', '\022', '\030', '\n', '\007', 'i', 'n', 's', 't', 'e', 'a', 'd', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\007', 'i', 'n', 's', 't', 'e', 'a', 'd', '\022', '(', '\n', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\022', '\030', '\n', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\"', 'L', '\n', '\n', 'N', 'o', 't', 'i', 'f', 'y', 'S', 't', 'm', 't', '\022', '$', '\n', '\r', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\r', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'p', 'a', 'y', 'l', 'o', 'a', 'd', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 'p', 'a', 'y', 'l', 'o', 'a', 'd', '\"', '2', '\n', '\n', 'L', 'i', 's', 't', 'e', 'n', 'S', 't', 'm', 't', '\022', '$', '\n', '\r', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\r', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', 'n', 'a', 'm', 'e', '\"', '4', '\n', '\014', 'U', 'n', 'l', 'i', 's', 't', 'e', 'n', 'S', 't', 'm', 't', '\022', '$', '\n', '\r', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\r', 'c', 'o', 'n', 'd', 'i', 't', 'i', 'o', 'n', 'n', 'a', 'm', 'e', '\"', '\276', '\001', '\n', '\017', 'T', 'r', 'a', 'n', 's', 'a', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '1', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\035', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'r', 'a', 'n', 's', 'a', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'K', 'i', 'n', 'd', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '&', '\n', '\016', 's', 'a', 'v', 'e', 'p', 'o', 'i', 'n', 't', '_', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\016', 's', 'a', 'v', 'e', 'p', 'o', 'i', 'n', 't', '_', 'n', 'a', 'm', 'e', '\022', '\020', '\n', '\003', 'g', 'i', 'd', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\003', 'g', 'i', 'd', '\022', '\024', '\n', '\005', 'c', 'h', 'a', 'i', 'n', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\005', 'c', 'h', 'a', 'i', 'n', '\"', '\215', '\002', '\n', '\010', 'V', 'i', 'e', 'w', 'S', 't', 'm', 't', '\022', '&', '\n', '\004', 'v', 'i', 'e', 'w', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\004', 'v', 'i', 'e', 'w', '\022', '(', '\n', '\007', 'a', 'l', 'i', 'a', 's', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'a', 'l', 'i', 'a', 's', 'e', 's', '\022', '$', '\n', '\005', 'q', 'u', 'e', 'r', 'y', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'q', 'u', 'e', 'r', 'y', '\022', '\030', '\n', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', 'E', '\n', '\021', 'w', 'i', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\006', ' ', '\001', '(', '\016', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'i', 'e', 'w', 'C', 'h', 'e', 'c', 'k', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\017', 'w', 'i', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'O', 'p', 't', 'i', 'o', 'n', '\"', '&', '\n', '\010', 'L', 'o', 'a', 'd', 'S', 't', 'm', 't', '\022', '\032', '\n', '\010', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\010', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e', '\"', '\337', '\001', '\n', '\020', 'C', 'r', 'e', 'a', 't', 'e', 'D', 'o', 'm', 'a', 'i', 'n', 'S', 't', 'm', 't', '\022', '.', '\n', '\n', 'd', 'o', 'm', 'a', 'i', 'n', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'd', 'o', 'm', 'a', 'i', 'n', 'n', 'a', 'm', 'e', '\022', '/', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\010', 't', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '8', '\n', '\013', 'c', 'o', 'l', 'l', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'l', 'l', 'a', 't', 'e', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\n', 'c', 'o', 'l', 'l', 'C', 'l', 'a', 'u', 's', 'e', '\022', '0', '\n', '\013', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\"', 'P', '\n', '\014', 'C', 'r', 'e', 'a', 't', 'e', 'd', 'b', 'S', 't', 'm', 't', '\022', '\026', '\n', '\006', 'd', 'b', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\006', 'd', 'b', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', 'n', '\n', '\n', 'D', 'r', 'o', 'p', 'd', 'b', 'S', 't', 'm', 't', '\022', '\026', '\n', '\006', 'd', 'b', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\006', 'd', 'b', 'n', 'a', 'm', 'e', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '~', '\n', '\n', 'V', 'a', 'c', 'u', 'u', 'm', 'S', 't', 'm', 't', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '\"', '\n', '\004', 'r', 'e', 'l', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'r', 'e', 'l', 's', '\022', '\"', '\n', '\014', 'i', 's', '_', 'v', 'a', 'c', 'u', 'u', 'm', 'c', 'm', 'd', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\014', 'i', 's', '_', 'v', 'a', 'c', 'u', 'u', 'm', 'c', 'm', 'd', '\"', ']', '\n', '\013', 'E', 'x', 'p', 'l', 'a', 'i', 'n', 'S', 't', 'm', 't', '\022', '$', '\n', '\005', 'q', 'u', 'e', 'r', 'y', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'q', 'u', 'e', 'r', 'y', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\341', '\001', '\n', '\021', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'a', 'b', 'l', 'e', 'A', 's', 'S', 't', 'm', 't', '\022', '$', '\n', '\005', 'q', 'u', 'e', 'r', 'y', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'q', 'u', 'e', 'r', 'y', '\022', '(', '\n', '\004', 'i', 'n', 't', 'o', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 't', 'o', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\004', 'i', 'n', 't', 'o', '\022', '.', '\n', '\007', 'r', 'e', 'l', 'k', 'i', 'n', 'd', '\030', '\003', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\007', 'r', 'e', 'l', 'k', 'i', 'n', 'd', '\022', '&', '\n', '\016', 'i', 's', '_', 's', 'e', 'l', 'e', 'c', 't', '_', 'i', 'n', 't', 'o', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\016', 'i', 's', '_', 's', 'e', 'l', 'e', 'c', 't', '_', 'i', 'n', 't', 'o', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\"', '\316', '\001', '\n', '\r', 'C', 'r', 'e', 'a', 't', 'e', 'S', 'e', 'q', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 's', 'e', 'q', 'u', 'e', 'n', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 's', 'e', 'q', 'u', 'e', 'n', 'c', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '\031', '\n', '\010', 'o', 'w', 'n', 'e', 'r', '_', 'i', 'd', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\007', 'o', 'w', 'n', 'e', 'r', 'I', 'd', '\022', '\"', '\n', '\014', 'f', 'o', 'r', '_', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\014', 'f', 'o', 'r', '_', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\"', '\254', '\001', '\n', '\014', 'A', 'l', 't', 'e', 'r', 'S', 'e', 'q', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 's', 'e', 'q', 'u', 'e', 'n', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 's', 'e', 'q', 'u', 'e', 'n', 'c', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '\"', '\n', '\014', 'f', 'o', 'r', '_', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\014', 'f', 'o', 'r', '_', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', '\224', '\001', '\n', '\017', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', '\022', '-', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'e', 't', 'K', 'i', 'n', 'd', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\032', '\n', '\010', 'i', 's', '_', 'l', 'o', 'c', 'a', 'l', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\010', 'i', 's', '_', 'l', 'o', 'c', 'a', 'l', '\"', '&', '\n', '\020', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'h', 'o', 'w', 'S', 't', 'm', 't', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\"', '<', '\n', '\013', 'D', 'i', 's', 'c', 'a', 'r', 'd', 'S', 't', 'm', 't', '\022', '-', '\n', '\006', 't', 'a', 'r', 'g', 'e', 't', '\030', '\001', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'i', 's', 'c', 'a', 'r', 'd', 'M', 'o', 'd', 'e', 'R', '\006', 't', 'a', 'r', 'g', 'e', 't', '\"', '\234', '\004', '\n', '\016', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'r', 'i', 'g', 'S', 't', 'm', 't', '\022', '\032', '\n', '\010', 't', 'r', 'i', 'g', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\010', 't', 'r', 'i', 'g', 'n', 'a', 'm', 'e', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '*', '\n', '\010', 'f', 'u', 'n', 'c', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'f', 'u', 'n', 'c', 'n', 'a', 'm', 'e', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '\020', '\n', '\003', 'r', 'o', 'w', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\003', 'r', 'o', 'w', '\022', '\026', '\n', '\006', 't', 'i', 'm', 'i', 'n', 'g', '\030', '\006', ' ', '\001', '(', '\005', 'R', '\006', 't', 'i', 'm', 'i', 'n', 'g', '\022', '\026', '\n', '\006', 'e', 'v', 'e', 'n', 't', 's', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\006', 'e', 'v', 'e', 'n', 't', 's', '\022', '(', '\n', '\007', 'c', 'o', 'l', 'u', 'm', 'n', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'c', 'o', 'l', 'u', 'm', 'n', 's', '\022', '/', '\n', '\013', 'w', 'h', 'e', 'n', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\t', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'w', 'h', 'e', 'n', 'C', 'l', 'a', 'u', 's', 'e', '\022', '\"', '\n', '\014', 'i', 's', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\030', '\n', ' ', '\001', '(', '\010', 'R', '\014', 'i', 's', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\022', '7', '\n', '\017', 't', 'r', 'a', 'n', 's', 'i', 't', 'i', 'o', 'n', '_', 'r', 'e', 'l', 's', '\030', '\013', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 't', 'r', 'a', 'n', 's', 'i', 't', 'i', 'o', 'n', 'R', 'e', 'l', 's', '\022', '\036', '\n', '\n', 'd', 'e', 'f', 'e', 'r', 'r', 'a', 'b', 'l', 'e', '\030', '\014', ' ', '\001', '(', '\010', 'R', '\n', 'd', 'e', 'f', 'e', 'r', 'r', 'a', 'b', 'l', 'e', '\022', '\"', '\n', '\014', 'i', 'n', 'i', 't', 'd', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '\030', '\r', ' ', '\001', '(', '\010', 'R', '\014', 'i', 'n', 'i', 't', 'd', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '\022', '0', '\n', '\t', 'c', 'o', 'n', 's', 't', 'r', 'r', 'e', 'l', '\030', '\016', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\t', 'c', 'o', 'n', 's', 't', 'r', 'r', 'e', 'l', '\"', '\355', '\001', '\n', '\017', 'C', 'r', 'e', 'a', 't', 'e', 'P', 'L', 'a', 'n', 'g', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\022', '\026', '\n', '\006', 'p', 'l', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\006', 'p', 'l', 'n', 'a', 'm', 'e', '\022', ',', '\n', '\t', 'p', 'l', 'h', 'a', 'n', 'd', 'l', 'e', 'r', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'p', 'l', 'h', 'a', 'n', 'd', 'l', 'e', 'r', '\022', '*', '\n', '\010', 'p', 'l', 'i', 'n', 'l', 'i', 'n', 'e', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'p', 'l', 'i', 'n', 'l', 'i', 'n', 'e', '\022', '0', '\n', '\013', 'p', 'l', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'o', 'r', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'p', 'l', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'o', 'r', '\022', '\034', '\n', '\t', 'p', 'l', 't', 'r', 'u', 's', 't', 'e', 'd', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\t', 'p', 'l', 't', 'r', 'u', 's', 't', 'e', 'd', '\"', '\204', '\001', '\n', '\016', 'C', 'r', 'e', 'a', 't', 'e', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', '\022', '4', '\n', '\t', 's', 't', 'm', 't', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', 'T', 'y', 'p', 'e', 'R', '\t', 's', 't', 'm', 't', '_', 't', 'y', 'p', 'e', '\022', '\022', '\n', '\004', 'r', 'o', 'l', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\004', 'r', 'o', 'l', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', 'y', '\n', '\r', 'A', 'l', 't', 'e', 'r', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', '\022', '&', '\n', '\004', 'r', 'o', 'l', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\004', 'r', 'o', 'l', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '\026', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\"', 'T', '\n', '\014', 'D', 'r', 'o', 'p', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', '\022', '$', '\n', '\005', 'r', 'o', 'l', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'r', 'o', 'l', 'e', 's', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', 'd', '\n', '\010', 'L', 'o', 'c', 'k', 'S', 't', 'm', 't', '\022', ',', '\n', '\t', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', 's', '\022', '\022', '\n', '\004', 'm', 'o', 'd', 'e', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\004', 'm', 'o', 'd', 'e', '\022', '\026', '\n', '\006', 'n', 'o', 'w', 'a', 'i', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\006', 'n', 'o', 'w', 'a', 'i', 't', '\"', 'b', '\n', '\022', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', 'S', 'e', 't', 'S', 't', 'm', 't', '\022', '0', '\n', '\013', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\022', '\032', '\n', '\010', 'd', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\010', 'd', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '\"', '\274', '\001', '\n', '\013', 'R', 'e', 'i', 'n', 'd', 'e', 'x', 'S', 't', 'm', 't', '\022', '/', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'e', 'i', 'n', 'd', 'e', 'x', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '\036', '\n', '\n', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\n', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '\"', '\020', '\n', '\016', 'C', 'h', 'e', 'c', 'k', 'P', 'o', 'i', 'n', 't', 'S', 't', 'm', 't', '\"', '\271', '\001', '\n', '\020', 'C', 'r', 'e', 'a', 't', 'e', 'S', 'c', 'h', 'e', 'm', 'a', 'S', 't', 'm', 't', '\022', '\036', '\n', '\n', 's', 'c', 'h', 'e', 'm', 'a', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\n', 's', 'c', 'h', 'e', 'm', 'a', 'n', 'a', 'm', 'e', '\022', '.', '\n', '\010', 'a', 'u', 't', 'h', 'r', 'o', 'l', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\010', 'a', 'u', 't', 'h', 'r', 'o', 'l', 'e', '\022', '/', '\n', '\013', 's', 'c', 'h', 'e', 'm', 'a', '_', 'e', 'l', 't', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 's', 'c', 'h', 'e', 'm', 'a', 'E', 'l', 't', 's', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\"', 'U', '\n', '\021', 'A', 'l', 't', 'e', 'r', 'D', 'a', 't', 'a', 'b', 'a', 's', 'e', 'S', 't', 'm', 't', '\022', '\026', '\n', '\006', 'd', 'b', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\006', 'd', 'b', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', 'c', '\n', '\024', 'A', 'l', 't', 'e', 'r', 'D', 'a', 't', 'a', 'b', 'a', 's', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', '\022', '\026', '\n', '\006', 'd', 'b', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\006', 'd', 'b', 'n', 'a', 'm', 'e', '\022', '3', '\n', '\007', 's', 'e', 't', 's', 't', 'm', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', 'R', '\007', 's', 'e', 't', 's', 't', 'm', 't', '\"', '\213', '\001', '\n', '\020', 'A', 'l', 't', 'e', 'r', 'R', 'o', 'l', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', '\022', '&', '\n', '\004', 'r', 'o', 'l', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\004', 'r', 'o', 'l', 'e', '\022', '\032', '\n', '\010', 'd', 'a', 't', 'a', 'b', 'a', 's', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\010', 'd', 'a', 't', 'a', 'b', 'a', 's', 'e', '\022', '3', '\n', '\007', 's', 'e', 't', 's', 't', 'm', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', 'R', '\007', 's', 'e', 't', 's', 't', 'm', 't', '\"', '\352', '\001', '\n', '\024', 'C', 'r', 'e', 'a', 't', 'e', 'C', 'o', 'n', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '8', '\n', '\017', 'c', 'o', 'n', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\017', 'c', 'o', 'n', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'n', 'a', 'm', 'e', '\022', ',', '\n', '\021', 'f', 'o', 'r', '_', 'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\021', 'f', 'o', 'r', '_', 'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g', '_', 'n', 'a', 'm', 'e', '\022', '*', '\n', '\020', 't', 'o', '_', 'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g', '_', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\020', 't', 'o', '_', 'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g', '_', 'n', 'a', 'm', 'e', '\022', ',', '\n', '\t', 'f', 'u', 'n', 'c', '_', 'n', 'a', 'm', 'e', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'f', 'u', 'n', 'c', '_', 'n', 'a', 'm', 'e', '\022', '\020', '\n', '\003', 'd', 'e', 'f', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\003', 'd', 'e', 'f', '\"', '\361', '\001', '\n', '\016', 'C', 'r', 'e', 'a', 't', 'e', 'C', 'a', 's', 't', 'S', 't', 'm', 't', '\022', '2', '\n', '\n', 's', 'o', 'u', 'r', 'c', 'e', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\n', 's', 'o', 'u', 'r', 'c', 'e', 't', 'y', 'p', 'e', '\022', '2', '\n', '\n', 't', 'a', 'r', 'g', 'e', 't', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\n', 't', 'a', 'r', 'g', 'e', 't', 't', 'y', 'p', 'e', '\022', ',', '\n', '\004', 'f', 'u', 'n', 'c', '\030', '\003', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'W', 'i', 't', 'h', 'A', 'r', 'g', 's', 'R', '\004', 'f', 'u', 'n', 'c', '\022', '3', '\n', '\007', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\004', ' ', '\001', '(', '\016', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'R', '\007', 'c', 'o', 'n', 't', 'e', 'x', 't', '\022', '\024', '\n', '\005', 'i', 'n', 'o', 'u', 't', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\005', 'i', 'n', 'o', 'u', 't', '\"', '\206', '\002', '\n', '\021', 'C', 'r', 'e', 'a', 't', 'e', 'O', 'p', 'C', 'l', 'a', 's', 's', 'S', 't', 'm', 't', '\022', '0', '\n', '\013', 'o', 'p', 'c', 'l', 'a', 's', 's', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'o', 'p', 'c', 'l', 'a', 's', 's', 'n', 'a', 'm', 'e', '\022', '2', '\n', '\014', 'o', 'p', 'f', 'a', 'm', 'i', 'l', 'y', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'o', 'p', 'f', 'a', 'm', 'i', 'l', 'y', 'n', 'a', 'm', 'e', '\022', '\026', '\n', '\006', 'a', 'm', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\006', 'a', 'm', 'n', 'a', 'm', 'e', '\022', '.', '\n', '\010', 'd', 'a', 't', 'a', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\010', 'd', 'a', 't', 'a', 't', 'y', 'p', 'e', '\022', '$', '\n', '\005', 'i', 't', 'e', 'm', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'i', 't', 'e', 'm', 's', '\022', '\035', '\n', '\n', 'i', 's', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\t', 'i', 's', 'D', 'e', 'f', 'a', 'u', 'l', 't', '\"', '`', '\n', '\022', 'C', 'r', 'e', 'a', 't', 'e', 'O', 'p', 'F', 'a', 'm', 'i', 'l', 'y', 'S', 't', 'm', 't', '\022', '2', '\n', '\014', 'o', 'p', 'f', 'a', 'm', 'i', 'l', 'y', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'o', 'p', 'f', 'a', 'm', 'i', 'l', 'y', 'n', 'a', 'm', 'e', '\022', '\026', '\n', '\006', 'a', 'm', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\006', 'a', 'm', 'n', 'a', 'm', 'e', '\"', '\236', '\001', '\n', '\021', 'A', 'l', 't', 'e', 'r', 'O', 'p', 'F', 'a', 'm', 'i', 'l', 'y', 'S', 't', 'm', 't', '\022', '2', '\n', '\014', 'o', 'p', 'f', 'a', 'm', 'i', 'l', 'y', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'o', 'p', 'f', 'a', 'm', 'i', 'l', 'y', 'n', 'a', 'm', 'e', '\022', '\026', '\n', '\006', 'a', 'm', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\006', 'a', 'm', 'n', 'a', 'm', 'e', '\022', '\027', '\n', '\007', 'i', 's', '_', 'd', 'r', 'o', 'p', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\006', 'i', 's', 'D', 'r', 'o', 'p', '\022', '$', '\n', '\005', 'i', 't', 'e', 'm', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'i', 't', 'e', 'm', 's', '\"', 's', '\n', '\013', 'P', 'r', 'e', 'p', 'a', 'r', 'e', 'S', 't', 'm', 't', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '*', '\n', '\010', 'a', 'r', 'g', 't', 'y', 'p', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'a', 'r', 'g', 't', 'y', 'p', 'e', 's', '\022', '$', '\n', '\005', 'q', 'u', 'e', 'r', 'y', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'q', 'u', 'e', 'r', 'y', '\"', 'I', '\n', '\013', 'E', 'x', 'e', 'c', 'u', 't', 'e', 'S', 't', 'm', 't', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '&', '\n', '\006', 'p', 'a', 'r', 'a', 'm', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'p', 'a', 'r', 'a', 'm', 's', '\"', '$', '\n', '\016', 'D', 'e', 'a', 'l', 'l', 'o', 'c', 'a', 't', 'e', 'S', 't', 'm', 't', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\"', 's', '\n', '\021', 'D', 'e', 'c', 'l', 'a', 'r', 'e', 'C', 'u', 'r', 's', 'o', 'r', 'S', 't', 'm', 't', '\022', '\036', '\n', '\n', 'p', 'o', 'r', 't', 'a', 'l', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\n', 'p', 'o', 'r', 't', 'a', 'l', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '$', '\n', '\005', 'q', 'u', 'e', 'r', 'y', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'q', 'u', 'e', 'r', 'y', '\"', '\256', '\001', '\n', '\024', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', 'S', 't', 'm', 't', '\022', '&', '\n', '\016', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\016', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\005', 'o', 'w', 'n', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\005', 'o', 'w', 'n', 'e', 'r', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\\', '\n', '\022', 'D', 'r', 'o', 'p', 'T', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', 'S', 't', 'm', 't', '\022', '&', '\n', '\016', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\016', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', '\351', '\001', '\n', '\026', 'A', 'l', 't', 'e', 'r', 'O', 'b', 'j', 'e', 'c', 't', 'D', 'e', 'p', 'e', 'n', 'd', 's', 'S', 't', 'm', 't', '\022', '5', '\n', '\013', 'o', 'b', 'j', 'e', 'c', 't', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\n', 'o', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '&', '\n', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\022', '(', '\n', '\007', 'e', 'x', 't', 'n', 'a', 'm', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'e', 'x', 't', 'n', 'a', 'm', 'e', '\022', '\026', '\n', '\006', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\006', 'r', 'e', 'm', 'o', 'v', 'e', '\"', '\344', '\001', '\n', '\025', 'A', 'l', 't', 'e', 'r', 'O', 'b', 'j', 'e', 'c', 't', 'S', 'c', 'h', 'e', 'm', 'a', 'S', 't', 'm', 't', '\022', '5', '\n', '\013', 'o', 'b', 'j', 'e', 'c', 't', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\n', 'o', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '&', '\n', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\022', '\034', '\n', '\t', 'n', 'e', 'w', 's', 'c', 'h', 'e', 'm', 'a', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\t', 'n', 'e', 'w', 's', 'c', 'h', 'e', 'm', 'a', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', '\317', '\001', '\n', '\016', 'A', 'l', 't', 'e', 'r', 'O', 'w', 'n', 'e', 'r', 'S', 't', 'm', 't', '\022', '5', '\n', '\013', 'o', 'b', 'j', 'e', 'c', 't', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\n', 'o', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '&', '\n', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\022', '.', '\n', '\010', 'n', 'e', 'w', 'o', 'w', 'n', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\010', 'n', 'e', 'w', 'o', 'w', 'n', 'e', 'r', '\"', 's', '\n', '\021', 'A', 'l', 't', 'e', 'r', 'O', 'p', 'e', 'r', 'a', 't', 'o', 'r', 'S', 't', 'm', 't', '\022', '4', '\n', '\010', 'o', 'p', 'e', 'r', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'W', 'i', 't', 'h', 'A', 'r', 'g', 's', 'R', '\010', 'o', 'p', 'e', 'r', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', 'f', '\n', '\r', 'A', 'l', 't', 'e', 'r', 'T', 'y', 'p', 'e', 'S', 't', 'm', 't', '\022', '+', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 't', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', 'i', '\n', '\r', 'D', 'r', 'o', 'p', 'O', 'w', 'n', 'e', 'd', 'S', 't', 'm', 't', '\022', '$', '\n', '\005', 'r', 'o', 'l', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'r', 'o', 'l', 'e', 's', '\022', '2', '\n', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\030', '\002', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\"', 'g', '\n', '\021', 'R', 'e', 'a', 's', 's', 'i', 'g', 'n', 'O', 'w', 'n', 'e', 'd', 'S', 't', 'm', 't', '\022', '$', '\n', '\005', 'r', 'o', 'l', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'r', 'o', 'l', 'e', 's', '\022', ',', '\n', '\007', 'n', 'e', 'w', 'r', 'o', 'l', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\007', 'n', 'e', 'w', 'r', 'o', 'l', 'e', '\"', 'q', '\n', '\021', 'C', 'o', 'm', 'p', 'o', 's', 'i', 't', 'e', 'T', 'y', 'p', 'e', 'S', 't', 'm', 't', '\022', ',', '\n', '\007', 't', 'y', 'p', 'e', 'v', 'a', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\007', 't', 'y', 'p', 'e', 'v', 'a', 'r', '\022', '.', '\n', '\n', 'c', 'o', 'l', 'd', 'e', 'f', 'l', 'i', 's', 't', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'c', 'o', 'l', 'd', 'e', 'f', 'l', 'i', 's', 't', '\"', 'a', '\n', '\016', 'C', 'r', 'e', 'a', 't', 'e', 'E', 'n', 'u', 'm', 'S', 't', 'm', 't', '\022', '+', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 't', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '\"', '\n', '\004', 'v', 'a', 'l', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'v', 'a', 'l', 's', '\"', 'f', '\n', '\017', 'C', 'r', 'e', 'a', 't', 'e', 'R', 'a', 'n', 'g', 'e', 'S', 't', 'm', 't', '\022', '+', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 't', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '&', '\n', '\006', 'p', 'a', 'r', 'a', 'm', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'p', 'a', 'r', 'a', 'm', 's', '\"', '\365', '\001', '\n', '\r', 'A', 'l', 't', 'e', 'r', 'E', 'n', 'u', 'm', 'S', 't', 'm', 't', '\022', '+', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 't', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '\027', '\n', '\007', 'o', 'l', 'd', '_', 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\006', 'o', 'l', 'd', 'V', 'a', 'l', '\022', '\027', '\n', '\007', 'n', 'e', 'w', '_', 'v', 'a', 'l', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\006', 'n', 'e', 'w', 'V', 'a', 'l', '\022', '(', '\n', '\020', 'n', 'e', 'w', '_', 'v', 'a', 'l', '_', 'n', 'e', 'i', 'g', 'h', 'b', 'o', 'r', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\016', 'n', 'e', 'w', 'V', 'a', 'l', 'N', 'e', 'i', 'g', 'h', 'b', 'o', 'r', '\022', '\'', '\n', '\020', 'n', 'e', 'w', '_', 'v', 'a', 'l', '_', 'i', 's', '_', 'a', 'f', 't', 'e', 'r', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\r', 'n', 'e', 'w', 'V', 'a', 'l', 'I', 's', 'A', 'f', 't', 'e', 'r', '\022', '2', '\n', '\026', 's', 'k', 'i', 'p', '_', 'i', 'f', '_', 'n', 'e', 'w', '_', 'v', 'a', 'l', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\022', 's', 'k', 'i', 'p', 'I', 'f', 'N', 'e', 'w', 'V', 'a', 'l', 'E', 'x', 'i', 's', 't', 's', '\"', 'm', '\n', '\025', 'A', 'l', 't', 'e', 'r', 'T', 'S', 'D', 'i', 'c', 't', 'i', 'o', 'n', 'a', 'r', 'y', 'S', 't', 'm', 't', '\022', '*', '\n', '\010', 'd', 'i', 'c', 't', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'd', 'i', 'c', 't', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\237', '\002', '\n', '\030', 'A', 'l', 't', 'e', 'r', 'T', 'S', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '/', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'T', 'S', 'C', 'o', 'n', 'f', 'i', 'g', 'T', 'y', 'p', 'e', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '(', '\n', '\007', 'c', 'f', 'g', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'c', 'f', 'g', 'n', 'a', 'm', 'e', '\022', ',', '\n', '\t', 't', 'o', 'k', 'e', 'n', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 't', 'o', 'k', 'e', 'n', 't', 'y', 'p', 'e', '\022', '$', '\n', '\005', 'd', 'i', 'c', 't', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'd', 'i', 'c', 't', 's', '\022', '\032', '\n', '\010', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\010', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '\022', '\030', '\n', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', '\207', '\001', '\n', '\r', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'd', 'w', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 'f', 'd', 'w', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'f', 'd', 'w', 'n', 'a', 'm', 'e', '\022', '2', '\n', '\014', 'f', 'u', 'n', 'c', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'f', 'u', 'n', 'c', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\206', '\001', '\n', '\014', 'A', 'l', 't', 'e', 'r', 'F', 'd', 'w', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 'f', 'd', 'w', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'f', 'd', 'w', 'n', 'a', 'm', 'e', '\022', '2', '\n', '\014', 'f', 'u', 'n', 'c', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'f', 'u', 'n', 'c', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\335', '\001', '\n', '\027', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'e', 'r', 'v', 'e', 'r', 'S', 't', 'm', 't', '\022', '\036', '\n', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\022', '\036', '\n', '\n', 's', 'e', 'r', 'v', 'e', 'r', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 's', 'e', 'r', 'v', 'e', 'r', 't', 'y', 'p', 'e', '\022', '\030', '\n', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\022', '\030', '\n', '\007', 'f', 'd', 'w', 'n', 'a', 'm', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\007', 'f', 'd', 'w', 'n', 'a', 'm', 'e', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\236', '\001', '\n', '\026', 'A', 'l', 't', 'e', 'r', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'e', 'r', 'v', 'e', 'r', 'S', 't', 'm', 't', '\022', '\036', '\n', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', ' ', '\n', '\013', 'h', 'a', 's', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\013', 'h', 'a', 's', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\"', '\257', '\001', '\n', '\025', 'C', 'r', 'e', 'a', 't', 'e', 'U', 's', 'e', 'r', 'M', 'a', 'p', 'p', 'i', 'n', 'g', 'S', 't', 'm', 't', '\022', '&', '\n', '\004', 'u', 's', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\004', 'u', 's', 'e', 'r', '\022', '\036', '\n', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\210', '\001', '\n', '\024', 'A', 'l', 't', 'e', 'r', 'U', 's', 'e', 'r', 'M', 'a', 'p', 'p', 'i', 'n', 'g', 'S', 't', 'm', 't', '\022', '&', '\n', '\004', 'u', 's', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\004', 'u', 's', 'e', 'r', '\022', '\036', '\n', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '}', '\n', '\023', 'D', 'r', 'o', 'p', 'U', 's', 'e', 'r', 'M', 'a', 'p', 'p', 'i', 'n', 'g', 'S', 't', 'm', 't', '\022', '&', '\n', '\004', 'u', 's', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'R', '\004', 'u', 's', 'e', 'r', '\022', '\036', '\n', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', '\211', '\001', '\n', '\032', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', 'S', 't', 'm', 't', '\022', '&', '\n', '\016', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\016', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '\031', '\n', '\010', 'i', 's', '_', 'r', 'e', 's', 'e', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\007', 'i', 's', 'R', 'e', 's', 'e', 't', '\"', '\347', '\001', '\n', '\025', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'M', 'o', 'v', 'e', 'A', 'l', 'l', 'S', 't', 'm', 't', '\022', '0', '\n', '\023', 'o', 'r', 'i', 'g', '_', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\023', 'o', 'r', 'i', 'g', '_', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\022', '.', '\n', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\022', '$', '\n', '\005', 'r', 'o', 'l', 'e', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'r', 'o', 'l', 'e', 's', '\022', '.', '\n', '\022', 'n', 'e', 'w', '_', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\022', 'n', 'e', 'w', '_', 't', 'a', 'b', 'l', 'e', 's', 'p', 'a', 'c', 'e', 'n', 'a', 'm', 'e', '\022', '\026', '\n', '\006', 'n', 'o', 'w', 'a', 'i', 't', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\006', 'n', 'o', 'w', 'a', 'i', 't', '\"', '\230', '\001', '\n', '\014', 'S', 'e', 'c', 'L', 'a', 'b', 'e', 'l', 'S', 't', 'm', 't', '\022', '.', '\n', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\022', '&', '\n', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\022', '\032', '\n', '\010', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\010', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\022', '\024', '\n', '\005', 'l', 'a', 'b', 'e', 'l', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\005', 'l', 'a', 'b', 'e', 'l', '\"', '\221', '\001', '\n', '\026', 'C', 'r', 'e', 'a', 't', 'e', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'T', 'a', 'b', 'l', 'e', 'S', 't', 'm', 't', '\022', '-', '\n', '\t', 'b', 'a', 's', 'e', '_', 's', 't', 'm', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'r', 'e', 'a', 't', 'e', 'S', 't', 'm', 't', 'R', '\004', 'b', 'a', 's', 'e', '\022', '\036', '\n', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\240', '\002', '\n', '\027', 'I', 'm', 'p', 'o', 'r', 't', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'c', 'h', 'e', 'm', 'a', 'S', 't', 'm', 't', '\022', ' ', '\n', '\013', 's', 'e', 'r', 'v', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 's', 'e', 'r', 'v', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\022', '$', '\n', '\r', 'r', 'e', 'm', 'o', 't', 'e', '_', 's', 'c', 'h', 'e', 'm', 'a', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\r', 'r', 'e', 'm', 'o', 't', 'e', '_', 's', 'c', 'h', 'e', 'm', 'a', '\022', '\"', '\n', '\014', 'l', 'o', 'c', 'a', 'l', '_', 's', 'c', 'h', 'e', 'm', 'a', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 'l', 'o', 'c', 'a', 'l', '_', 's', 'c', 'h', 'e', 'm', 'a', '\022', '?', '\n', '\t', 'l', 'i', 's', 't', '_', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\016', '2', '!', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'm', 'p', 'o', 'r', 't', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'c', 'h', 'e', 'm', 'a', 'T', 'y', 'p', 'e', 'R', '\t', 'l', 'i', 's', 't', '_', 't', 'y', 'p', 'e', '\022', '.', '\n', '\n', 't', 'a', 'b', 'l', 'e', '_', 'l', 'i', 's', 't', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 't', 'a', 'b', 'l', 'e', '_', 'l', 'i', 's', 't', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\177', '\n', '\023', 'C', 'r', 'e', 'a', 't', 'e', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 'e', 'x', 't', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'e', 'x', 't', 'n', 'a', 'm', 'e', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', 'X', '\n', '\022', 'A', 'l', 't', 'e', 'r', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 'e', 'x', 't', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'e', 'x', 't', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\246', '\001', '\n', '\032', 'A', 'l', 't', 'e', 'r', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'n', 't', 's', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 'e', 'x', 't', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'e', 'x', 't', 'n', 'a', 'm', 'e', '\022', '\026', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\022', '.', '\n', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', 'R', '\007', 'o', 'b', 'j', 't', 'y', 'p', 'e', '\022', '&', '\n', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'o', 'b', 'j', 'e', 'c', 't', '\"', '\253', '\001', '\n', '\023', 'C', 'r', 'e', 'a', 't', 'e', 'E', 'v', 'e', 'n', 't', 'T', 'r', 'i', 'g', 'S', 't', 'm', 't', '\022', '\032', '\n', '\010', 't', 'r', 'i', 'g', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\010', 't', 'r', 'i', 'g', 'n', 'a', 'm', 'e', '\022', '\034', '\n', '\t', 'e', 'v', 'e', 'n', 't', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\t', 'e', 'v', 'e', 'n', 't', 'n', 'a', 'm', 'e', '\022', '.', '\n', '\n', 'w', 'h', 'e', 'n', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'w', 'h', 'e', 'n', 'c', 'l', 'a', 'u', 's', 'e', '\022', '*', '\n', '\010', 'f', 'u', 'n', 'c', 'n', 'a', 'm', 'e', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'f', 'u', 'n', 'c', 'n', 'a', 'm', 'e', '\"', 'N', '\n', '\022', 'A', 'l', 't', 'e', 'r', 'E', 'v', 'e', 'n', 't', 'T', 'r', 'i', 'g', 'S', 't', 'm', 't', '\022', '\032', '\n', '\010', 't', 'r', 'i', 'g', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\010', 't', 'r', 'i', 'g', 'n', 'a', 'm', 'e', '\022', '\034', '\n', '\t', 't', 'g', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\t', 't', 'g', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\"', '\201', '\001', '\n', '\022', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'M', 'a', 't', 'V', 'i', 'e', 'w', 'S', 't', 'm', 't', '\022', '\036', '\n', '\n', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\n', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '\022', '\033', '\n', '\t', 's', 'k', 'i', 'p', '_', 'd', 'a', 't', 'a', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\010', 's', 'k', 'i', 'p', 'D', 'a', 't', 'a', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\"', 'O', '\n', '\023', 'R', 'e', 'p', 'l', 'i', 'c', 'a', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', 'S', 't', 'm', 't', '\022', '$', '\n', '\r', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\r', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '_', 't', 'y', 'p', 'e', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\"', 'F', '\n', '\017', 'A', 'l', 't', 'e', 'r', 'S', 'y', 's', 't', 'e', 'm', 'S', 't', 'm', 't', '\022', '3', '\n', '\007', 's', 'e', 't', 's', 't', 'm', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'e', 't', 'S', 't', 'm', 't', 'R', '\007', 's', 'e', 't', 's', 't', 'm', 't', '\"', '\224', '\002', '\n', '\020', 'C', 'r', 'e', 'a', 't', 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'S', 't', 'm', 't', '\022', ' ', '\n', '\013', 'p', 'o', 'l', 'i', 'c', 'y', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'p', 'o', 'l', 'i', 'c', 'y', '_', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\005', 't', 'a', 'b', 'l', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\005', 't', 'a', 'b', 'l', 'e', '\022', '\032', '\n', '\010', 'c', 'm', 'd', '_', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\010', 'c', 'm', 'd', '_', 'n', 'a', 'm', 'e', '\022', '\036', '\n', '\n', 'p', 'e', 'r', 'm', 'i', 's', 's', 'i', 'v', 'e', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\n', 'p', 'e', 'r', 'm', 'i', 's', 's', 'i', 'v', 'e', '\022', '$', '\n', '\005', 'r', 'o', 'l', 'e', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'r', 'o', 'l', 'e', 's', '\022', '\"', '\n', '\004', 'q', 'u', 'a', 'l', '\030', '\006', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'q', 'u', 'a', 'l', '\022', '.', '\n', '\n', 'w', 'i', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '\030', '\007', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'w', 'i', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '\"', '\327', '\001', '\n', '\017', 'A', 'l', 't', 'e', 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'S', 't', 'm', 't', '\022', ' ', '\n', '\013', 'p', 'o', 'l', 'i', 'c', 'y', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'p', 'o', 'l', 'i', 'c', 'y', '_', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\005', 't', 'a', 'b', 'l', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\005', 't', 'a', 'b', 'l', 'e', '\022', '$', '\n', '\005', 'r', 'o', 'l', 'e', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'r', 'o', 'l', 'e', 's', '\022', '\"', '\n', '\004', 'q', 'u', 'a', 'l', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'q', 'u', 'a', 'l', '\022', '.', '\n', '\n', 'w', 'i', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '\030', '\005', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'w', 'i', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '\"', '\331', '\001', '\n', '\023', 'C', 'r', 'e', 'a', 't', 'e', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\007', 'r', 'e', 'p', 'l', 'a', 'c', 'e', '\022', '0', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\022', '\022', '\n', '\004', 'l', 'a', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', 'l', 'a', 'n', 'g', '\022', '2', '\n', '\007', 'f', 'r', 'o', 'm', 's', 'q', 'l', '\030', '\004', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'W', 'i', 't', 'h', 'A', 'r', 'g', 's', 'R', '\007', 'f', 'r', 'o', 'm', 's', 'q', 'l', '\022', '.', '\n', '\005', 't', 'o', 's', 'q', 'l', '\030', '\005', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'W', 'i', 't', 'h', 'A', 'r', 'g', 's', 'R', '\005', 't', 'o', 's', 'q', 'l', '\"', 'r', '\n', '\014', 'C', 'r', 'e', 'a', 't', 'e', 'A', 'm', 'S', 't', 'm', 't', '\022', '\026', '\n', '\006', 'a', 'm', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\006', 'a', 'm', 'n', 'a', 'm', 'e', '\022', '2', '\n', '\014', 'h', 'a', 'n', 'd', 'l', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'h', 'a', 'n', 'd', 'l', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\022', '\026', '\n', '\006', 'a', 'm', 't', 'y', 'p', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\006', 'a', 'm', 't', 'y', 'p', 'e', '\"', '\253', '\001', '\n', '\025', 'C', 'r', 'e', 'a', 't', 'e', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 'p', 'u', 'b', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'p', 'u', 'b', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '&', '\n', '\006', 't', 'a', 'b', 'l', 'e', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 't', 'a', 'b', 'l', 'e', 's', '\022', '&', '\n', '\016', 'f', 'o', 'r', '_', 'a', 'l', 'l', '_', 't', 'a', 'b', 'l', 'e', 's', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\016', 'f', 'o', 'r', '_', 'a', 'l', 'l', '_', 't', 'a', 'b', 'l', 'e', 's', '\"', '\346', '\001', '\n', '\024', 'A', 'l', 't', 'e', 'r', 'P', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 'p', 'u', 'b', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'p', 'u', 'b', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '&', '\n', '\006', 't', 'a', 'b', 'l', 'e', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 't', 'a', 'b', 'l', 'e', 's', '\022', '&', '\n', '\016', 'f', 'o', 'r', '_', 'a', 'l', 'l', '_', 't', 'a', 'b', 'l', 'e', 's', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\016', 'f', 'o', 'r', '_', 'a', 'l', 'l', '_', 't', 'a', 'b', 'l', 'e', 's', '\022', ':', '\n', '\014', 't', 'a', 'b', 'l', 'e', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\016', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'e', 'f', 'E', 'l', 'e', 'm', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\013', 't', 'a', 'b', 'l', 'e', 'A', 'c', 't', 'i', 'o', 'n', '\"', '\252', '\001', '\n', '\026', 'C', 'r', 'e', 'a', 't', 'e', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 's', 'u', 'b', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 's', 'u', 'b', 'n', 'a', 'm', 'e', '\022', '\032', '\n', '\010', 'c', 'o', 'n', 'n', 'i', 'n', 'f', 'o', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\010', 'c', 'o', 'n', 'n', 'i', 'n', 'f', 'o', '\022', '0', '\n', '\013', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\336', '\001', '\n', '\025', 'A', 'l', 't', 'e', 'r', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '3', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\037', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 't', 'e', 'r', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'T', 'y', 'p', 'e', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '\030', '\n', '\007', 's', 'u', 'b', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 's', 'u', 'b', 'n', 'a', 'm', 'e', '\022', '\032', '\n', '\010', 'c', 'o', 'n', 'n', 'i', 'n', 'f', 'o', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\010', 'c', 'o', 'n', 'n', 'i', 'n', 'f', 'o', '\022', '0', '\n', '\013', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\204', '\001', '\n', '\024', 'D', 'r', 'o', 'p', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '\030', '\n', '\007', 's', 'u', 'b', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 's', 'u', 'b', 'n', 'a', 'm', 'e', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\022', '2', '\n', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\030', '\003', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'r', 'o', 'p', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', 'R', '\010', 'b', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\"', '\207', '\002', '\n', '\017', 'C', 'r', 'e', 'a', 't', 'e', 'S', 't', 'a', 't', 's', 'S', 't', 'm', 't', '\022', '*', '\n', '\010', 'd', 'e', 'f', 'n', 'a', 'm', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'd', 'e', 'f', 'n', 'a', 'm', 'e', 's', '\022', '.', '\n', '\n', 's', 't', 'a', 't', '_', 't', 'y', 'p', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 's', 't', 'a', 't', '_', 't', 'y', 'p', 'e', 's', '\022', '$', '\n', '\005', 'e', 'x', 'p', 'r', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'e', 'x', 'p', 'r', 's', '\022', ',', '\n', '\t', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', 's', '\022', '\036', '\n', '\n', 's', 't', 'x', 'c', 'o', 'm', 'm', 'e', 'n', 't', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\n', 's', 't', 'x', 'c', 'o', 'm', 'm', 'e', 'n', 't', '\022', '$', '\n', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\r', 'i', 'f', '_', 'n', 'o', 't', '_', 'e', 'x', 'i', 's', 't', 's', '\"', '@', '\n', '\022', 'A', 'l', 't', 'e', 'r', 'C', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', '\022', '*', '\n', '\010', 'c', 'o', 'l', 'l', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'l', 'l', 'n', 'a', 'm', 'e', '\"', 'j', '\n', '\010', 'C', 'a', 'l', 'l', 'S', 't', 'm', 't', '\022', '.', '\n', '\010', 'f', 'u', 'n', 'c', 'c', 'a', 'l', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'u', 'n', 'c', 'C', 'a', 'l', 'l', 'R', '\010', 'f', 'u', 'n', 'c', 'c', 'a', 'l', 'l', '\022', '.', '\n', '\010', 'f', 'u', 'n', 'c', 'e', 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'u', 'n', 'c', 'E', 'x', 'p', 'r', 'R', '\010', 'f', 'u', 'n', 'c', 'e', 'x', 'p', 'r', '\"', '\202', '\001', '\n', '\016', 'A', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 's', 'S', 't', 'm', 't', '\022', '*', '\n', '\010', 'd', 'e', 'f', 'n', 'a', 'm', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'd', 'e', 'f', 'n', 'a', 'm', 'e', 's', '\022', '$', '\n', '\r', 's', 't', 'x', 's', 't', 'a', 't', 't', 'a', 'r', 'g', 'e', 't', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\r', 's', 't', 'x', 's', 't', 'a', 't', 't', 'a', 'r', 'g', 'e', 't', '\022', '\036', '\n', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\n', 'm', 'i', 's', 's', 'i', 'n', 'g', '_', 'o', 'k', '\"', '\277', '\001', '\n', '\006', 'A', '_', 'E', 'x', 'p', 'r', '\022', ')', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', '_', 'E', 'x', 'p', 'r', '_', 'K', 'i', 'n', 'd', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '\"', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '$', '\n', '\005', 'l', 'e', 'x', 'p', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'l', 'e', 'x', 'p', 'r', '\022', '$', '\n', '\005', 'r', 'e', 'x', 'p', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'r', 'e', 'x', 'p', 'r', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', 'O', '\n', '\t', 'C', 'o', 'l', 'u', 'm', 'n', 'R', 'e', 'f', '\022', '&', '\n', '\006', 'f', 'i', 'e', 'l', 'd', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'f', 'i', 'e', 'l', 'd', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '>', '\n', '\010', 'P', 'a', 'r', 'a', 'm', 'R', 'e', 'f', '\022', '\026', '\n', '\006', 'n', 'u', 'm', 'b', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\005', 'R', '\006', 'n', 'u', 'm', 'b', 'e', 'r', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', 'G', '\n', '\007', 'A', '_', 'C', 'o', 'n', 's', 't', '\022', ' ', '\n', '\003', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'v', 'a', 'l', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\217', '\003', '\n', '\010', 'F', 'u', 'n', 'c', 'C', 'a', 'l', 'l', '\022', '*', '\n', '\010', 'f', 'u', 'n', 'c', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'f', 'u', 'n', 'c', 'n', 'a', 'm', 'e', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', ',', '\n', '\t', 'a', 'g', 'g', '_', 'o', 'r', 'd', 'e', 'r', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'a', 'g', 'g', '_', 'o', 'r', 'd', 'e', 'r', '\022', '.', '\n', '\n', 'a', 'g', 'g', '_', 'f', 'i', 'l', 't', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'a', 'g', 'g', '_', 'f', 'i', 'l', 't', 'e', 'r', '\022', '*', '\n', '\020', 'a', 'g', 'g', '_', 'w', 'i', 't', 'h', 'i', 'n', '_', 'g', 'r', 'o', 'u', 'p', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\020', 'a', 'g', 'g', '_', 'w', 'i', 't', 'h', 'i', 'n', '_', 'g', 'r', 'o', 'u', 'p', '\022', '\032', '\n', '\010', 'a', 'g', 'g', '_', 's', 't', 'a', 'r', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\010', 'a', 'g', 'g', '_', 's', 't', 'a', 'r', '\022', '\"', '\n', '\014', 'a', 'g', 'g', '_', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\014', 'a', 'g', 'g', '_', 'd', 'i', 's', 't', 'i', 'n', 'c', 't', '\022', '$', '\n', '\r', 'f', 'u', 'n', 'c', '_', 'v', 'a', 'r', 'i', 'a', 'd', 'i', 'c', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\r', 'f', 'u', 'n', 'c', '_', 'v', 'a', 'r', 'i', 'a', 'd', 'i', 'c', '\022', '\'', '\n', '\004', 'o', 'v', 'e', 'r', '\030', '\t', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'i', 'n', 'd', 'o', 'w', 'D', 'e', 'f', 'R', '\004', 'o', 'v', 'e', 'r', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\n', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\010', '\n', '\006', 'A', '_', 'S', 't', 'a', 'r', '\"', 'o', '\n', '\t', 'A', '_', 'I', 'n', 'd', 'i', 'c', 'e', 's', '\022', '\032', '\n', '\010', 'i', 's', '_', 's', 'l', 'i', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\010', 'i', 's', '_', 's', 'l', 'i', 'c', 'e', '\022', '\"', '\n', '\004', 'l', 'i', 'd', 'x', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'l', 'i', 'd', 'x', '\022', '\"', '\n', '\004', 'u', 'i', 'd', 'x', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'u', 'i', 'd', 'x', '\"', 'c', '\n', '\r', 'A', '_', 'I', 'n', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '0', '\n', '\013', 'i', 'n', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'i', 'n', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\"', 'U', '\n', '\013', 'A', '_', 'A', 'r', 'r', 'a', 'y', 'E', 'x', 'p', 'r', '\022', '*', '\n', '\010', 'e', 'l', 'e', 'm', 'e', 'n', 't', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'e', 'l', 'e', 'm', 'e', 'n', 't', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\217', '\001', '\n', '\t', 'R', 'e', 's', 'T', 'a', 'r', 'g', 'e', 't', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '0', '\n', '\013', 'i', 'n', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'i', 'n', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\022', ' ', '\n', '\003', 'v', 'a', 'l', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'v', 'a', 'l', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', 'j', '\n', '\016', 'M', 'u', 'l', 't', 'i', 'A', 's', 's', 'i', 'g', 'n', 'R', 'e', 'f', '\022', '&', '\n', '\006', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 's', 'o', 'u', 'r', 'c', 'e', '\022', '\024', '\n', '\005', 'c', 'o', 'l', 'n', 'o', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\005', 'c', 'o', 'l', 'n', 'o', '\022', '\032', '\n', '\010', 'n', 'c', 'o', 'l', 'u', 'm', 'n', 's', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'n', 'c', 'o', 'l', 'u', 'm', 'n', 's', '\"', 'y', '\n', '\010', 'T', 'y', 'p', 'e', 'C', 'a', 's', 't', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '/', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\010', 't', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', 'y', '\n', '\r', 'C', 'o', 'l', 'l', 'a', 't', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '*', '\n', '\010', 'c', 'o', 'l', 'l', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'l', 'l', 'n', 'a', 'm', 'e', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\337', '\001', '\n', '\006', 'S', 'o', 'r', 't', 'B', 'y', '\022', '\"', '\n', '\004', 'n', 'o', 'd', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'n', 'o', 'd', 'e', '\022', '3', '\n', '\n', 's', 'o', 'r', 't', 'b', 'y', '_', 'd', 'i', 'r', '\030', '\002', ' ', '\001', '(', '\016', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'o', 'r', 't', 'B', 'y', 'D', 'i', 'r', 'R', '\n', 's', 'o', 'r', 't', 'b', 'y', '_', 'd', 'i', 'r', '\022', '9', '\n', '\014', 's', 'o', 'r', 't', 'b', 'y', '_', 'n', 'u', 'l', 'l', 's', '\030', '\003', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'o', 'r', 't', 'B', 'y', 'N', 'u', 'l', 'l', 's', 'R', '\014', 's', 'o', 'r', 't', 'b', 'y', '_', 'n', 'u', 'l', 'l', 's', '\022', '%', '\n', '\006', 'u', 's', 'e', '_', 'o', 'p', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'u', 's', 'e', 'O', 'p', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\312', '\002', '\n', '\t', 'W', 'i', 'n', 'd', 'o', 'w', 'D', 'e', 'f', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'r', 'e', 'f', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', 'f', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\020', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\017', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'C', 'l', 'a', 'u', 's', 'e', '\022', '1', '\n', '\014', 'o', 'r', 'd', 'e', 'r', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'o', 'r', 'd', 'e', 'r', 'C', 'l', 'a', 'u', 's', 'e', '\022', '#', '\n', '\r', 'f', 'r', 'a', 'm', 'e', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\014', 'f', 'r', 'a', 'm', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '1', '\n', '\014', 's', 't', 'a', 'r', 't', '_', 'o', 'f', 'f', 's', 'e', 't', '\030', '\006', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 's', 't', 'a', 'r', 't', 'O', 'f', 'f', 's', 'e', 't', '\022', '-', '\n', '\n', 'e', 'n', 'd', '_', 'o', 'f', 'f', 's', 'e', 't', '\030', '\007', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'e', 'n', 'd', 'O', 'f', 'f', 's', 'e', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\010', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '}', '\n', '\016', 'R', 'a', 'n', 'g', 'e', 'S', 'u', 'b', 's', 'e', 'l', 'e', 'c', 't', '\022', '\030', '\n', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\022', '*', '\n', '\010', 's', 'u', 'b', 'q', 'u', 'e', 'r', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 's', 'u', 'b', 'q', 'u', 'e', 'r', 'y', '\022', '%', '\n', '\005', 'a', 'l', 'i', 'a', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'R', '\005', 'a', 'l', 'i', 'a', 's', '\"', '\360', '\001', '\n', '\r', 'R', 'a', 'n', 'g', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', '\030', '\n', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\022', '\036', '\n', '\n', 'o', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'o', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', '\022', ' ', '\n', '\013', 'i', 's', '_', 'r', 'o', 'w', 's', 'f', 'r', 'o', 'm', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\013', 'i', 's', '_', 'r', 'o', 'w', 's', 'f', 'r', 'o', 'm', '\022', ',', '\n', '\t', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\005', 'a', 'l', 'i', 'a', 's', '\030', '\005', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'R', '\005', 'a', 'l', 'i', 'a', 's', '\022', '.', '\n', '\n', 'c', 'o', 'l', 'd', 'e', 'f', 'l', 'i', 's', 't', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'c', 'o', 'l', 'd', 'e', 'f', 'l', 'i', 's', 't', '\"', '\326', '\001', '\n', '\020', 'R', 'a', 'n', 'g', 'e', 'T', 'a', 'b', 'l', 'e', 'S', 'a', 'm', 'p', 'l', 'e', '\022', '*', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '&', '\n', '\006', 'm', 'e', 't', 'h', 'o', 'd', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\006', 'm', 'e', 't', 'h', 'o', 'd', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '.', '\n', '\n', 'r', 'e', 'p', 'e', 'a', 't', 'a', 'b', 'l', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'r', 'e', 'p', 'e', 'a', 't', 'a', 'b', 'l', 'e', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\233', '\002', '\n', '\016', 'R', 'a', 'n', 'g', 'e', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', '\022', '\030', '\n', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\022', '(', '\n', '\007', 'd', 'o', 'c', 'e', 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'd', 'o', 'c', 'e', 'x', 'p', 'r', '\022', '(', '\n', '\007', 'r', 'o', 'w', 'e', 'x', 'p', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'r', 'o', 'w', 'e', 'x', 'p', 'r', '\022', '.', '\n', '\n', 'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', 's', '\022', '(', '\n', '\007', 'c', 'o', 'l', 'u', 'm', 'n', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'c', 'o', 'l', 'u', 'm', 'n', 's', '\022', '%', '\n', '\005', 'a', 'l', 'i', 'a', 's', '\030', '\006', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'R', '\005', 'a', 'l', 'i', 'a', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\236', '\002', '\n', '\021', 'R', 'a', 'n', 'g', 'e', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', 'C', 'o', 'l', '\022', '\030', '\n', '\007', 'c', 'o', 'l', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'c', 'o', 'l', 'n', 'a', 'm', 'e', '\022', '/', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\010', 't', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '&', '\n', '\016', 'f', 'o', 'r', '_', 'o', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\016', 'f', 'o', 'r', '_', 'o', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', '\022', ' ', '\n', '\013', 'i', 's', '_', 'n', 'o', 't', '_', 'n', 'u', 'l', 'l', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\013', 'i', 's', '_', 'n', 'o', 't', '_', 'n', 'u', 'l', 'l', '\022', '(', '\n', '\007', 'c', 'o', 'l', 'e', 'x', 'p', 'r', '\030', '\005', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'c', 'o', 'l', 'e', 'x', 'p', 'r', '\022', '.', '\n', '\n', 'c', 'o', 'l', 'd', 'e', 'f', 'e', 'x', 'p', 'r', '\030', '\006', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'c', 'o', 'l', 'd', 'e', 'f', 'e', 'x', 'p', 'r', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\220', '\002', '\n', '\010', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '$', '\n', '\005', 'n', 'a', 'm', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'n', 'a', 'm', 'e', 's', '\022', '\031', '\n', '\010', 't', 'y', 'p', 'e', '_', 'o', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\007', 't', 'y', 'p', 'e', 'O', 'i', 'd', '\022', '\024', '\n', '\005', 's', 'e', 't', 'o', 'f', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\005', 's', 'e', 't', 'o', 'f', '\022', '\032', '\n', '\010', 'p', 'c', 't', '_', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\010', 'p', 'c', 't', '_', 't', 'y', 'p', 'e', '\022', '(', '\n', '\007', 't', 'y', 'p', 'm', 'o', 'd', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 't', 'y', 'p', 'm', 'o', 'd', 's', '\022', '\030', '\n', '\007', 't', 'y', 'p', 'e', 'm', 'o', 'd', '\030', '\006', ' ', '\001', '(', '\005', 'R', '\007', 't', 'y', 'p', 'e', 'm', 'o', 'd', '\022', '1', '\n', '\014', 'a', 'r', 'r', 'a', 'y', '_', 'b', 'o', 'u', 'n', 'd', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'a', 'r', 'r', 'a', 'y', 'B', 'o', 'u', 'n', 'd', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\010', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\246', '\005', '\n', '\t', 'C', 'o', 'l', 'u', 'm', 'n', 'D', 'e', 'f', '\022', '\030', '\n', '\007', 'c', 'o', 'l', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'c', 'o', 'l', 'n', 'a', 'm', 'e', '\022', '/', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\010', 't', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '\032', '\n', '\010', 'i', 'n', 'h', 'c', 'o', 'u', 'n', 't', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'i', 'n', 'h', 'c', 'o', 'u', 'n', 't', '\022', '\032', '\n', '\010', 'i', 's', '_', 'l', 'o', 'c', 'a', 'l', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\010', 'i', 's', '_', 'l', 'o', 'c', 'a', 'l', '\022', ' ', '\n', '\013', 'i', 's', '_', 'n', 'o', 't', '_', 'n', 'u', 'l', 'l', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\013', 'i', 's', '_', 'n', 'o', 't', '_', 'n', 'u', 'l', 'l', '\022', '\"', '\n', '\014', 'i', 's', '_', 'f', 'r', 'o', 'm', '_', 't', 'y', 'p', 'e', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\014', 'i', 's', '_', 'f', 'r', 'o', 'm', '_', 't', 'y', 'p', 'e', '\022', '\030', '\n', '\007', 's', 't', 'o', 'r', 'a', 'g', 'e', '\030', '\007', ' ', '\001', '(', '\t', 'R', '\007', 's', 't', 'o', 'r', 'a', 'g', 'e', '\022', '0', '\n', '\013', 'r', 'a', 'w', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\030', '\010', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'r', 'a', 'w', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\022', '6', '\n', '\016', 'c', 'o', 'o', 'k', 'e', 'd', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\030', '\t', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 'c', 'o', 'o', 'k', 'e', 'd', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\022', '\032', '\n', '\010', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '\030', '\n', ' ', '\001', '(', '\t', 'R', '\010', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '\022', '?', '\n', '\021', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '_', 's', 'e', 'q', 'u', 'e', 'n', 'c', 'e', '\030', '\013', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\020', 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', 'S', 'e', 'q', 'u', 'e', 'n', 'c', 'e', '\022', '\034', '\n', '\t', 'g', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', '\030', '\014', ' ', '\001', '(', '\t', 'R', '\t', 'g', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', '\022', '8', '\n', '\013', 'c', 'o', 'l', 'l', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\r', ' ', '\001', '(', '\013', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'l', 'l', 'a', 't', 'e', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\n', 'c', 'o', 'l', 'l', 'C', 'l', 'a', 'u', 's', 'e', '\022', '\031', '\n', '\010', 'c', 'o', 'l', 'l', '_', 'o', 'i', 'd', '\030', '\016', ' ', '\001', '(', '\r', 'R', '\007', 'c', 'o', 'l', 'l', 'O', 'i', 'd', '\022', '0', '\n', '\013', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\030', '\017', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\022', '.', '\n', '\n', 'f', 'd', 'w', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\020', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'f', 'd', 'w', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\021', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\341', '\002', '\n', '\t', 'I', 'n', 'd', 'e', 'x', 'E', 'l', 'e', 'm', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\"', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'e', 'x', 'p', 'r', '\022', '\"', '\n', '\014', 'i', 'n', 'd', 'e', 'x', 'c', 'o', 'l', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 'i', 'n', 'd', 'e', 'x', 'c', 'o', 'l', 'n', 'a', 'm', 'e', '\022', ',', '\n', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\022', '(', '\n', '\007', 'o', 'p', 'c', 'l', 'a', 's', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 'c', 'l', 'a', 's', 's', '\022', '0', '\n', '\013', 'o', 'p', 'c', 'l', 'a', 's', 's', 'o', 'p', 't', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'o', 'p', 'c', 'l', 'a', 's', 's', 'o', 'p', 't', 's', '\022', '/', '\n', '\010', 'o', 'r', 'd', 'e', 'r', 'i', 'n', 'g', '\030', '\007', ' ', '\001', '(', '\016', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'o', 'r', 't', 'B', 'y', 'D', 'i', 'r', 'R', '\010', 'o', 'r', 'd', 'e', 'r', 'i', 'n', 'g', '\022', '=', '\n', '\016', 'n', 'u', 'l', 'l', 's', '_', 'o', 'r', 'd', 'e', 'r', 'i', 'n', 'g', '\030', '\010', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'S', 'o', 'r', 't', 'B', 'y', 'N', 'u', 'l', 'l', 's', 'R', '\016', 'n', 'u', 'l', 'l', 's', '_', 'o', 'r', 'd', 'e', 'r', 'i', 'n', 'g', '\"', '\364', '\010', '\n', '\n', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\022', '.', '\n', '\007', 'c', 'o', 'n', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\024', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'o', 'n', 's', 't', 'r', 'T', 'y', 'p', 'e', 'R', '\007', 'c', 'o', 'n', 't', 'y', 'p', 'e', '\022', '\030', '\n', '\007', 'c', 'o', 'n', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 'c', 'o', 'n', 'n', 'a', 'm', 'e', '\022', '\036', '\n', '\n', 'd', 'e', 'f', 'e', 'r', 'r', 'a', 'b', 'l', 'e', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\n', 'd', 'e', 'f', 'e', 'r', 'r', 'a', 'b', 'l', 'e', '\022', '\"', '\n', '\014', 'i', 'n', 'i', 't', 'd', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\014', 'i', 'n', 'i', 't', 'd', 'e', 'f', 'e', 'r', 'r', 'e', 'd', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\022', '$', '\n', '\r', 'i', 's', '_', 'n', 'o', '_', 'i', 'n', 'h', 'e', 'r', 'i', 't', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\r', 'i', 's', '_', 'n', 'o', '_', 'i', 'n', 'h', 'e', 'r', 'i', 't', '\022', '*', '\n', '\010', 'r', 'a', 'w', '_', 'e', 'x', 'p', 'r', '\030', '\007', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'r', 'a', 'w', '_', 'e', 'x', 'p', 'r', '\022', ' ', '\n', '\013', 'c', 'o', 'o', 'k', 'e', 'd', '_', 'e', 'x', 'p', 'r', '\030', '\010', ' ', '\001', '(', '\t', 'R', '\013', 'c', 'o', 'o', 'k', 'e', 'd', '_', 'e', 'x', 'p', 'r', '\022', '&', '\n', '\016', 'g', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', '_', 'w', 'h', 'e', 'n', '\030', '\t', ' ', '\001', '(', '\t', 'R', '\016', 'g', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', '_', 'w', 'h', 'e', 'n', '\022', '\"', '\n', '\004', 'k', 'e', 'y', 's', '\030', '\n', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'k', 'e', 'y', 's', '\022', ',', '\n', '\t', 'i', 'n', 'c', 'l', 'u', 'd', 'i', 'n', 'g', '\030', '\013', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'i', 'n', 'c', 'l', 'u', 'd', 'i', 'n', 'g', '\022', '.', '\n', '\n', 'e', 'x', 'c', 'l', 'u', 's', 'i', 'o', 'n', 's', '\030', '\014', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'e', 'x', 'c', 'l', 'u', 's', 'i', 'o', 'n', 's', '\022', '(', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\r', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\022', '\034', '\n', '\t', 'i', 'n', 'd', 'e', 'x', 'n', 'a', 'm', 'e', '\030', '\016', ' ', '\001', '(', '\t', 'R', '\t', 'i', 'n', 'd', 'e', 'x', 'n', 'a', 'm', 'e', '\022', '\036', '\n', '\n', 'i', 'n', 'd', 'e', 'x', 's', 'p', 'a', 'c', 'e', '\030', '\017', ' ', '\001', '(', '\t', 'R', '\n', 'i', 'n', 'd', 'e', 'x', 's', 'p', 'a', 'c', 'e', '\022', '2', '\n', '\024', 'r', 'e', 's', 'e', 't', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 't', 'b', 'l', 's', 'p', 'c', '\030', '\020', ' ', '\001', '(', '\010', 'R', '\024', 'r', 'e', 's', 'e', 't', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 't', 'b', 'l', 's', 'p', 'c', '\022', '$', '\n', '\r', 'a', 'c', 'c', 'e', 's', 's', '_', 'm', 'e', 't', 'h', 'o', 'd', '\030', '\021', ' ', '\001', '(', '\t', 'R', '\r', 'a', 'c', 'c', 'e', 's', 's', '_', 'm', 'e', 't', 'h', 'o', 'd', '\022', '2', '\n', '\014', 'w', 'h', 'e', 'r', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\022', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'w', 'h', 'e', 'r', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\022', ',', '\n', '\007', 'p', 'k', 't', 'a', 'b', 'l', 'e', '\030', '\023', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\007', 'p', 'k', 't', 'a', 'b', 'l', 'e', '\022', '*', '\n', '\010', 'f', 'k', '_', 'a', 't', 't', 'r', 's', '\030', '\024', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'f', 'k', '_', 'a', 't', 't', 'r', 's', '\022', '*', '\n', '\010', 'p', 'k', '_', 'a', 't', 't', 'r', 's', '\030', '\025', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'p', 'k', '_', 'a', 't', 't', 'r', 's', '\022', '\"', '\n', '\014', 'f', 'k', '_', 'm', 'a', 't', 'c', 'h', 't', 'y', 'p', 'e', '\030', '\026', ' ', '\001', '(', '\t', 'R', '\014', 'f', 'k', '_', 'm', 'a', 't', 'c', 'h', 't', 'y', 'p', 'e', '\022', '$', '\n', '\r', 'f', 'k', '_', 'u', 'p', 'd', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\027', ' ', '\001', '(', '\t', 'R', '\r', 'f', 'k', '_', 'u', 'p', 'd', '_', 'a', 'c', 't', 'i', 'o', 'n', '\022', '$', '\n', '\r', 'f', 'k', '_', 'd', 'e', 'l', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\030', ' ', '\001', '(', '\t', 'R', '\r', 'f', 'k', '_', 'd', 'e', 'l', '_', 'a', 'c', 't', 'i', 'o', 'n', '\022', '4', '\n', '\r', 'o', 'l', 'd', '_', 'c', 'o', 'n', 'p', 'f', 'e', 'q', 'o', 'p', '\030', '\031', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'o', 'l', 'd', '_', 'c', 'o', 'n', 'p', 'f', 'e', 'q', 'o', 'p', '\022', '(', '\n', '\017', 'o', 'l', 'd', '_', 'p', 'k', 't', 'a', 'b', 'l', 'e', '_', 'o', 'i', 'd', '\030', '\032', ' ', '\001', '(', '\r', 'R', '\017', 'o', 'l', 'd', '_', 'p', 'k', 't', 'a', 'b', 'l', 'e', '_', 'o', 'i', 'd', '\022', '(', '\n', '\017', 's', 'k', 'i', 'p', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '\030', '\033', ' ', '\001', '(', '\010', 'R', '\017', 's', 'k', 'i', 'p', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '\022', '(', '\n', '\017', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'l', 'y', '_', 'v', 'a', 'l', 'i', 'd', '\030', '\034', ' ', '\001', '(', '\010', 'R', '\017', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'l', 'y', '_', 'v', 'a', 'l', 'i', 'd', '\"', '\274', '\001', '\n', '\007', 'D', 'e', 'f', 'E', 'l', 'e', 'm', '\022', '\"', '\n', '\014', 'd', 'e', 'f', 'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\014', 'd', 'e', 'f', 'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', '\022', '\030', '\n', '\007', 'd', 'e', 'f', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 'd', 'e', 'f', 'n', 'a', 'm', 'e', '\022', ' ', '\n', '\003', 'a', 'r', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\003', 'a', 'r', 'g', '\022', '5', '\n', '\t', 'd', 'e', 'f', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\016', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'D', 'e', 'f', 'E', 'l', 'e', 'm', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\t', 'd', 'e', 'f', 'a', 'c', 't', 'i', 'o', 'n', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\241', '\n', '\n', '\r', 'R', 'a', 'n', 'g', 'e', 'T', 'b', 'l', 'E', 'n', 't', 'r', 'y', '\022', '+', '\n', '\007', 'r', 't', 'e', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'T', 'E', 'K', 'i', 'n', 'd', 'R', '\007', 'r', 't', 'e', 'k', 'i', 'n', 'd', '\022', '\024', '\n', '\005', 'r', 'e', 'l', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\005', 'r', 'e', 'l', 'i', 'd', '\022', '\030', '\n', '\007', 'r', 'e', 'l', 'k', 'i', 'n', 'd', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', 'l', 'k', 'i', 'n', 'd', '\022', ' ', '\n', '\013', 'r', 'e', 'l', 'l', 'o', 'c', 'k', 'm', 'o', 'd', 'e', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\013', 'r', 'e', 'l', 'l', 'o', 'c', 'k', 'm', 'o', 'd', 'e', '\022', '=', '\n', '\013', 't', 'a', 'b', 'l', 'e', 's', 'a', 'm', 'p', 'l', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\033', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'a', 'b', 'l', 'e', 'S', 'a', 'm', 'p', 'l', 'e', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\013', 't', 'a', 'b', 'l', 'e', 's', 'a', 'm', 'p', 'l', 'e', '\022', '+', '\n', '\010', 's', 'u', 'b', 'q', 'u', 'e', 'r', 'y', '\030', '\006', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'Q', 'u', 'e', 'r', 'y', 'R', '\010', 's', 'u', 'b', 'q', 'u', 'e', 'r', 'y', '\022', '*', '\n', '\020', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '_', 'b', 'a', 'r', 'r', 'i', 'e', 'r', '\030', '\007', ' ', '\001', '(', '\010', 'R', '\020', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '_', 'b', 'a', 'r', 'r', 'i', 'e', 'r', '\022', '.', '\n', '\010', 'j', 'o', 'i', 'n', 't', 'y', 'p', 'e', '\030', '\010', ' ', '\001', '(', '\016', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'J', 'o', 'i', 'n', 'T', 'y', 'p', 'e', 'R', '\010', 'j', 'o', 'i', 'n', 't', 'y', 'p', 'e', '\022', '&', '\n', '\016', 'j', 'o', 'i', 'n', 'm', 'e', 'r', 'g', 'e', 'd', 'c', 'o', 'l', 's', '\030', '\t', ' ', '\001', '(', '\005', 'R', '\016', 'j', 'o', 'i', 'n', 'm', 'e', 'r', 'g', 'e', 'd', 'c', 'o', 'l', 's', '\022', '4', '\n', '\r', 'j', 'o', 'i', 'n', 'a', 'l', 'i', 'a', 's', 'v', 'a', 'r', 's', '\030', '\n', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'j', 'o', 'i', 'n', 'a', 'l', 'i', 'a', 's', 'v', 'a', 'r', 's', '\022', '2', '\n', '\014', 'j', 'o', 'i', 'n', 'l', 'e', 'f', 't', 'c', 'o', 'l', 's', '\030', '\013', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'j', 'o', 'i', 'n', 'l', 'e', 'f', 't', 'c', 'o', 'l', 's', '\022', '4', '\n', '\r', 'j', 'o', 'i', 'n', 'r', 'i', 'g', 'h', 't', 'c', 'o', 'l', 's', '\030', '\014', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'j', 'o', 'i', 'n', 'r', 'i', 'g', 'h', 't', 'c', 'o', 'l', 's', '\022', ',', '\n', '\t', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', '\030', '\r', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', 's', '\022', '&', '\n', '\016', 'f', 'u', 'n', 'c', 'o', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', '\030', '\016', ' ', '\001', '(', '\010', 'R', '\016', 'f', 'u', 'n', 'c', 'o', 'r', 'd', 'i', 'n', 'a', 'l', 'i', 't', 'y', '\022', '1', '\n', '\t', 't', 'a', 'b', 'l', 'e', 'f', 'u', 'n', 'c', '\030', '\017', ' ', '\001', '(', '\013', '2', '\023', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'a', 'b', 'l', 'e', 'F', 'u', 'n', 'c', 'R', '\t', 't', 'a', 'b', 'l', 'e', 'f', 'u', 'n', 'c', '\022', '2', '\n', '\014', 'v', 'a', 'l', 'u', 'e', 's', '_', 'l', 'i', 's', 't', 's', '\030', '\020', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'v', 'a', 'l', 'u', 'e', 's', '_', 'l', 'i', 's', 't', 's', '\022', '\030', '\n', '\007', 'c', 't', 'e', 'n', 'a', 'm', 'e', '\030', '\021', ' ', '\001', '(', '\t', 'R', '\007', 'c', 't', 'e', 'n', 'a', 'm', 'e', '\022', ' ', '\n', '\013', 'c', 't', 'e', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\030', '\022', ' ', '\001', '(', '\r', 'R', '\013', 'c', 't', 'e', 'l', 'e', 'v', 'e', 'l', 's', 'u', 'p', '\022', '&', '\n', '\016', 's', 'e', 'l', 'f', '_', 'r', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', '\030', '\023', ' ', '\001', '(', '\010', 'R', '\016', 's', 'e', 'l', 'f', '_', 'r', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', '\022', '*', '\n', '\010', 'c', 'o', 'l', 't', 'y', 'p', 'e', 's', '\030', '\024', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 'o', 'l', 't', 'y', 'p', 'e', 's', '\022', '.', '\n', '\n', 'c', 'o', 'l', 't', 'y', 'p', 'm', 'o', 'd', 's', '\030', '\025', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'c', 'o', 'l', 't', 'y', 'p', 'm', 'o', 'd', 's', '\022', '4', '\n', '\r', 'c', 'o', 'l', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 's', '\030', '\026', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'c', 'o', 'l', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 's', '\022', '\030', '\n', '\007', 'e', 'n', 'r', 'n', 'a', 'm', 'e', '\030', '\027', ' ', '\001', '(', '\t', 'R', '\007', 'e', 'n', 'r', 'n', 'a', 'm', 'e', '\022', '\034', '\n', '\t', 'e', 'n', 'r', 't', 'u', 'p', 'l', 'e', 's', '\030', '\030', ' ', '\001', '(', '\001', 'R', '\t', 'e', 'n', 'r', 't', 'u', 'p', 'l', 'e', 's', '\022', '%', '\n', '\005', 'a', 'l', 'i', 'a', 's', '\030', '\031', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'R', '\005', 'a', 'l', 'i', 'a', 's', '\022', '#', '\n', '\004', 'e', 'r', 'e', 'f', '\030', '\032', ' ', '\001', '(', '\013', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'A', 'l', 'i', 'a', 's', 'R', '\004', 'e', 'r', 'e', 'f', '\022', '\030', '\n', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\030', '\033', ' ', '\001', '(', '\010', 'R', '\007', 'l', 'a', 't', 'e', 'r', 'a', 'l', '\022', '\020', '\n', '\003', 'i', 'n', 'h', '\030', '\034', ' ', '\001', '(', '\010', 'R', '\003', 'i', 'n', 'h', '\022', '\034', '\n', '\n', 'i', 'n', '_', 'f', 'r', 'o', 'm', '_', 'c', 'l', '\030', '\035', ' ', '\001', '(', '\010', 'R', '\010', 'i', 'n', 'F', 'r', 'o', 'm', 'C', 'l', '\022', '%', '\n', '\016', 'r', 'e', 'q', 'u', 'i', 'r', 'e', 'd', '_', 'p', 'e', 'r', 'm', 's', '\030', '\036', ' ', '\001', '(', '\r', 'R', '\r', 'r', 'e', 'q', 'u', 'i', 'r', 'e', 'd', 'P', 'e', 'r', 'm', 's', '\022', '\"', '\n', '\r', 'c', 'h', 'e', 'c', 'k', '_', 'a', 's', '_', 'u', 's', 'e', 'r', '\030', '\037', ' ', '\001', '(', '\r', 'R', '\013', 'c', 'h', 'e', 'c', 'k', 'A', 's', 'U', 's', 'e', 'r', '\022', '5', '\n', '\016', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '_', 'q', 'u', 'a', 'l', 's', '\030', ' ', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'Q', 'u', 'a', 'l', 's', '\"', '\300', '\002', '\n', '\020', 'R', 'a', 'n', 'g', 'e', 'T', 'b', 'l', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', '*', '\n', '\010', 'f', 'u', 'n', 'c', 'e', 'x', 'p', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'f', 'u', 'n', 'c', 'e', 'x', 'p', 'r', '\022', '\"', '\n', '\014', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 'c', 'o', 'u', 'n', 't', '\030', '\002', ' ', '\001', '(', '\005', 'R', '\014', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 'c', 'o', 'u', 'n', 't', '\022', '2', '\n', '\014', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\022', '2', '\n', '\014', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 't', 'y', 'p', 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 't', 'y', 'p', 'e', 's', '\022', '6', '\n', '\016', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 't', 'y', 'p', 'm', 'o', 'd', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\016', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 't', 'y', 'p', 'm', 'o', 'd', 's', '\022', '<', '\n', '\021', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\021', 'f', 'u', 'n', 'c', 'c', 'o', 'l', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 's', '\"', '\207', '\001', '\n', '\021', 'T', 'a', 'b', 'l', 'e', 'S', 'a', 'm', 'p', 'l', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', '\036', '\n', '\n', 't', 's', 'm', 'h', 'a', 'n', 'd', 'l', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\r', 'R', '\n', 't', 's', 'm', 'h', 'a', 'n', 'd', 'l', 'e', 'r', '\022', '\"', '\n', '\004', 'a', 'r', 'g', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'a', 'r', 'g', 's', '\022', '.', '\n', '\n', 'r', 'e', 'p', 'e', 'a', 't', 'a', 'b', 'l', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'r', 'e', 'p', 'e', 'a', 't', 'a', 'b', 'l', 'e', '\"', '\254', '\001', '\n', '\017', 'W', 'i', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'O', 'p', 't', 'i', 'o', 'n', '\022', '%', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\021', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'W', 'C', 'O', 'K', 'i', 'n', 'd', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '\030', '\n', '\007', 'r', 'e', 'l', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', 'l', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'p', 'o', 'l', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\007', 'p', 'o', 'l', 'n', 'a', 'm', 'e', '\022', '\"', '\n', '\004', 'q', 'u', 'a', 'l', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'q', 'u', 'a', 'l', '\022', '\032', '\n', '\010', 'c', 'a', 's', 'c', 'a', 'd', 'e', 'd', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\010', 'c', 'a', 's', 'c', 'a', 'd', 'e', 'd', '\"', '\250', '\001', '\n', '\017', 'S', 'o', 'r', 't', 'G', 'r', 'o', 'u', 'p', 'C', 'l', 'a', 'u', 's', 'e', '\022', '+', '\n', '\022', 't', 'l', 'e', '_', 's', 'o', 'r', 't', '_', 'g', 'r', 'o', 'u', 'p', '_', 'r', 'e', 'f', '\030', '\001', ' ', '\001', '(', '\r', 'R', '\017', 't', 'l', 'e', 'S', 'o', 'r', 't', 'G', 'r', 'o', 'u', 'p', 'R', 'e', 'f', '\022', '\022', '\n', '\004', 'e', 'q', 'o', 'p', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\004', 'e', 'q', 'o', 'p', '\022', '\026', '\n', '\006', 's', 'o', 'r', 't', 'o', 'p', '\030', '\003', ' ', '\001', '(', '\r', 'R', '\006', 's', 'o', 'r', 't', 'o', 'p', '\022', ' ', '\n', '\013', 'n', 'u', 'l', 'l', 's', '_', 'f', 'i', 'r', 's', 't', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\013', 'n', 'u', 'l', 'l', 's', '_', 'f', 'i', 'r', 's', 't', '\022', '\032', '\n', '\010', 'h', 'a', 's', 'h', 'a', 'b', 'l', 'e', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\010', 'h', 'a', 's', 'h', 'a', 'b', 'l', 'e', '\"', '\202', '\001', '\n', '\013', 'G', 'r', 'o', 'u', 'p', 'i', 'n', 'g', 'S', 'e', 't', '\022', '-', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '\031', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'G', 'r', 'o', 'u', 'p', 'i', 'n', 'g', 'S', 'e', 't', 'K', 'i', 'n', 'd', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '(', '\n', '\007', 'c', 'o', 'n', 't', 'e', 'n', 't', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'c', 'o', 'n', 't', 'e', 'n', 't', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\275', '\004', '\n', '\014', 'W', 'i', 'n', 'd', 'o', 'w', 'C', 'l', 'a', 'u', 's', 'e', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'r', 'e', 'f', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', 'f', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\020', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\017', 'p', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'C', 'l', 'a', 'u', 's', 'e', '\022', '1', '\n', '\014', 'o', 'r', 'd', 'e', 'r', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'o', 'r', 'd', 'e', 'r', 'C', 'l', 'a', 'u', 's', 'e', '\022', '#', '\n', '\r', 'f', 'r', 'a', 'm', 'e', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\014', 'f', 'r', 'a', 'm', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '1', '\n', '\014', 's', 't', 'a', 'r', 't', '_', 'o', 'f', 'f', 's', 'e', 't', '\030', '\006', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 's', 't', 'a', 'r', 't', 'O', 'f', 'f', 's', 'e', 't', '\022', '-', '\n', '\n', 'e', 'n', 'd', '_', 'o', 'f', 'f', 's', 'e', 't', '\030', '\007', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'e', 'n', 'd', 'O', 'f', 'f', 's', 'e', 't', '\022', '-', '\n', '\023', 's', 't', 'a', 'r', 't', '_', 'i', 'n', '_', 'r', 'a', 'n', 'g', 'e', '_', 'f', 'u', 'n', 'c', '\030', '\010', ' ', '\001', '(', '\r', 'R', '\020', 's', 't', 'a', 'r', 't', 'I', 'n', 'R', 'a', 'n', 'g', 'e', 'F', 'u', 'n', 'c', '\022', ')', '\n', '\021', 'e', 'n', 'd', '_', 'i', 'n', '_', 'r', 'a', 'n', 'g', 'e', '_', 'f', 'u', 'n', 'c', '\030', '\t', ' ', '\001', '(', '\r', 'R', '\016', 'e', 'n', 'd', 'I', 'n', 'R', 'a', 'n', 'g', 'e', 'F', 'u', 'n', 'c', '\022', '\"', '\n', '\r', 'i', 'n', '_', 'r', 'a', 'n', 'g', 'e', '_', 'c', 'o', 'l', 'l', '\030', '\n', ' ', '\001', '(', '\r', 'R', '\013', 'i', 'n', 'R', 'a', 'n', 'g', 'e', 'C', 'o', 'l', 'l', '\022', ' ', '\n', '\014', 'i', 'n', '_', 'r', 'a', 'n', 'g', 'e', '_', 'a', 's', 'c', '\030', '\013', ' ', '\001', '(', '\010', 'R', '\n', 'i', 'n', 'R', 'a', 'n', 'g', 'e', 'A', 's', 'c', '\022', '/', '\n', '\024', 'i', 'n', '_', 'r', 'a', 'n', 'g', 'e', '_', 'n', 'u', 'l', 'l', 's', '_', 'f', 'i', 'r', 's', 't', '\030', '\014', ' ', '\001', '(', '\010', 'R', '\021', 'i', 'n', 'R', 'a', 'n', 'g', 'e', 'N', 'u', 'l', 'l', 's', 'F', 'i', 'r', 's', 't', '\022', '\026', '\n', '\006', 'w', 'i', 'n', 'r', 'e', 'f', '\030', '\r', ' ', '\001', '(', '\r', 'R', '\006', 'w', 'i', 'n', 'r', 'e', 'f', '\022', '!', '\n', '\014', 'c', 'o', 'p', 'i', 'e', 'd', '_', 'o', 'r', 'd', 'e', 'r', '\030', '\016', ' ', '\001', '(', '\010', 'R', '\013', 'c', 'o', 'p', 'i', 'e', 'd', 'O', 'r', 'd', 'e', 'r', '\"', '\220', '\001', '\n', '\016', 'O', 'b', 'j', 'e', 'c', 't', 'W', 'i', 't', 'h', 'A', 'r', 'g', 's', '\022', '(', '\n', '\007', 'o', 'b', 'j', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'b', 'j', 'n', 'a', 'm', 'e', '\022', '(', '\n', '\007', 'o', 'b', 'j', 'a', 'r', 'g', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'b', 'j', 'a', 'r', 'g', 's', '\022', '*', '\n', '\020', 'a', 'r', 'g', 's', '_', 'u', 'n', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\020', 'a', 'r', 'g', 's', '_', 'u', 'n', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'd', '\"', 'N', '\n', '\n', 'A', 'c', 'c', 'e', 's', 's', 'P', 'r', 'i', 'v', '\022', '\034', '\n', '\t', 'p', 'r', 'i', 'v', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\t', 'p', 'r', 'i', 'v', '_', 'n', 'a', 'm', 'e', '\022', '\"', '\n', '\004', 'c', 'o', 'l', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'c', 'o', 'l', 's', '\"', '\215', '\002', '\n', '\021', 'C', 'r', 'e', 'a', 't', 'e', 'O', 'p', 'C', 'l', 'a', 's', 's', 'I', 't', 'e', 'm', '\022', '\032', '\n', '\010', 'i', 't', 'e', 'm', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\005', 'R', '\010', 'i', 't', 'e', 'm', 't', 'y', 'p', 'e', '\022', ',', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'b', 'j', 'e', 'c', 't', 'W', 'i', 't', 'h', 'A', 'r', 'g', 's', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\026', '\n', '\006', 'n', 'u', 'm', 'b', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\006', 'n', 'u', 'm', 'b', 'e', 'r', '\022', '2', '\n', '\014', 'o', 'r', 'd', 'e', 'r', '_', 'f', 'a', 'm', 'i', 'l', 'y', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\014', 'o', 'r', 'd', 'e', 'r', '_', 'f', 'a', 'm', 'i', 'l', 'y', '\022', '.', '\n', '\n', 'c', 'l', 'a', 's', 's', '_', 'a', 'r', 'g', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'c', 'l', 'a', 's', 's', '_', 'a', 'r', 'g', 's', '\022', '2', '\n', '\n', 's', 't', 'o', 'r', 'e', 'd', 't', 'y', 'p', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\n', 's', 't', 'o', 'r', 'e', 'd', 't', 'y', 'p', 'e', '\"', '[', '\n', '\017', 'T', 'a', 'b', 'l', 'e', 'L', 'i', 'k', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '\030', '\n', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\007', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\265', '\001', '\n', '\021', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '-', '\n', '\010', 'a', 'r', 'g', '_', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\007', 'a', 'r', 'g', 'T', 'y', 'p', 'e', '\022', '3', '\n', '\004', 'm', 'o', 'd', 'e', '\030', '\003', ' ', '\001', '(', '\016', '2', '\037', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'M', 'o', 'd', 'e', 'R', '\004', 'm', 'o', 'd', 'e', '\022', '(', '\n', '\007', 'd', 'e', 'f', 'e', 'x', 'p', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'd', 'e', 'f', 'e', 'x', 'p', 'r', '\"', '\265', '\001', '\n', '\r', 'L', 'o', 'c', 'k', 'i', 'n', 'g', 'C', 'l', 'a', 'u', 's', 'e', '\022', '/', '\n', '\013', 'l', 'o', 'c', 'k', 'e', 'd', '_', 'r', 'e', 'l', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'l', 'o', 'c', 'k', 'e', 'd', 'R', 'e', 'l', 's', '\022', '8', '\n', '\010', 's', 't', 'r', 'e', 'n', 'g', 't', 'h', '\030', '\002', ' ', '\001', '(', '\016', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'o', 'c', 'k', 'C', 'l', 'a', 'u', 's', 'e', 'S', 't', 'r', 'e', 'n', 'g', 't', 'h', 'R', '\010', 's', 't', 'r', 'e', 'n', 'g', 't', 'h', '\022', '9', '\n', '\013', 'w', 'a', 'i', 't', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\003', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'o', 'c', 'k', 'W', 'a', 'i', 't', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\n', 'w', 'a', 'i', 't', 'P', 'o', 'l', 'i', 'c', 'y', '\"', '\267', '\001', '\n', '\r', 'R', 'o', 'w', 'M', 'a', 'r', 'k', 'C', 'l', 'a', 'u', 's', 'e', '\022', '\020', '\n', '\003', 'r', 't', 'i', '\030', '\001', ' ', '\001', '(', '\r', 'R', '\003', 'r', 't', 'i', '\022', '8', '\n', '\010', 's', 't', 'r', 'e', 'n', 'g', 't', 'h', '\030', '\002', ' ', '\001', '(', '\016', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'o', 'c', 'k', 'C', 'l', 'a', 'u', 's', 'e', 'S', 't', 'r', 'e', 'n', 'g', 't', 'h', 'R', '\010', 's', 't', 'r', 'e', 'n', 'g', 't', 'h', '\022', '9', '\n', '\013', 'w', 'a', 'i', 't', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\003', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'L', 'o', 'c', 'k', 'W', 'a', 'i', 't', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\n', 'w', 'a', 'i', 't', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\037', '\n', '\013', 'p', 'u', 's', 'h', 'e', 'd', '_', 'd', 'o', 'w', 'n', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\n', 'p', 'u', 's', 'h', 'e', 'd', 'D', 'o', 'w', 'n', '\"', '\266', '\001', '\n', '\014', 'X', 'm', 'l', 'S', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', '\022', '5', '\n', '\t', 'x', 'm', 'l', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\016', '2', '\027', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'X', 'm', 'l', 'O', 'p', 't', 'i', 'o', 'n', 'T', 'y', 'p', 'e', 'R', '\t', 'x', 'm', 'l', 'o', 'p', 't', 'i', 'o', 'n', '\022', '\"', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'e', 'x', 'p', 'r', '\022', '/', '\n', '\t', 't', 'y', 'p', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'y', 'p', 'e', 'N', 'a', 'm', 'e', 'R', '\010', 't', 'y', 'p', 'e', 'N', 'a', 'm', 'e', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', 'j', '\n', '\n', 'W', 'i', 't', 'h', 'C', 'l', 'a', 'u', 's', 'e', '\022', '\"', '\n', '\004', 'c', 't', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'c', 't', 'e', 's', '\022', '\034', '\n', '\t', 'r', 'e', 'c', 'u', 'r', 's', 'i', 'v', 'e', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\t', 'r', 'e', 'c', 'u', 'r', 's', 'i', 'v', 'e', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\247', '\001', '\n', '\013', 'I', 'n', 'f', 'e', 'r', 'C', 'l', 'a', 'u', 's', 'e', '\022', '/', '\n', '\013', 'i', 'n', 'd', 'e', 'x', '_', 'e', 'l', 'e', 'm', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'i', 'n', 'd', 'e', 'x', 'E', 'l', 'e', 'm', 's', '\022', '1', '\n', '\014', 'w', 'h', 'e', 'r', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'w', 'h', 'e', 'r', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', '\030', '\n', '\007', 'c', 'o', 'n', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\007', 'c', 'o', 'n', 'n', 'a', 'm', 'e', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\363', '\001', '\n', '\020', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'C', 'l', 'a', 'u', 's', 'e', '\022', '2', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\016', '2', '\032', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\022', '+', '\n', '\005', 'i', 'n', 'f', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'I', 'n', 'f', 'e', 'r', 'C', 'l', 'a', 'u', 's', 'e', 'R', '\005', 'i', 'n', 'f', 'e', 'r', '\022', '/', '\n', '\013', 't', 'a', 'r', 'g', 'e', 't', '_', 'l', 'i', 's', 't', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 't', 'a', 'r', 'g', 'e', 't', 'L', 'i', 's', 't', '\022', '1', '\n', '\014', 'w', 'h', 'e', 'r', 'e', '_', 'c', 'l', 'a', 'u', 's', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'w', 'h', 'e', 'r', 'e', 'C', 'l', 'a', 'u', 's', 'e', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\211', '\004', '\n', '\017', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'a', 'b', 'l', 'e', 'E', 'x', 'p', 'r', '\022', '\030', '\n', '\007', 'c', 't', 'e', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'c', 't', 'e', 'n', 'a', 'm', 'e', '\022', '4', '\n', '\r', 'a', 'l', 'i', 'a', 's', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'a', 'l', 'i', 'a', 's', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\022', 'B', '\n', '\017', 'c', 't', 'e', 'm', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\016', '2', '\030', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'C', 'T', 'E', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', 'R', '\017', 'c', 't', 'e', 'm', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', 'd', '\022', '*', '\n', '\010', 'c', 't', 'e', 'q', 'u', 'e', 'r', 'y', '\030', '\004', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\010', 'c', 't', 'e', 'q', 'u', 'e', 'r', 'y', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\022', '\"', '\n', '\014', 'c', 't', 'e', 'r', 'e', 'c', 'u', 'r', 's', 'i', 'v', 'e', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\014', 'c', 't', 'e', 'r', 'e', 'c', 'u', 'r', 's', 'i', 'v', 'e', '\022', ' ', '\n', '\013', 'c', 't', 'e', 'r', 'e', 'f', 'c', 'o', 'u', 'n', 't', '\030', '\007', ' ', '\001', '(', '\005', 'R', '\013', 'c', 't', 'e', 'r', 'e', 'f', 'c', 'o', 'u', 'n', 't', '\022', '0', '\n', '\013', 'c', 't', 'e', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'c', 't', 'e', 'c', 'o', 'l', 'n', 'a', 'm', 'e', 's', '\022', '0', '\n', '\013', 'c', 't', 'e', 'c', 'o', 'l', 't', 'y', 'p', 'e', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'c', 't', 'e', 'c', 'o', 'l', 't', 'y', 'p', 'e', 's', '\022', '4', '\n', '\r', 'c', 't', 'e', 'c', 'o', 'l', 't', 'y', 'p', 'm', 'o', 'd', 's', '\030', '\n', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\r', 'c', 't', 'e', 'c', 'o', 'l', 't', 'y', 'p', 'm', 'o', 'd', 's', '\022', ':', '\n', '\020', 'c', 't', 'e', 'c', 'o', 'l', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 's', '\030', '\013', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\020', 'c', 't', 'e', 'c', 'o', 'l', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', 's', '\"', 'v', '\n', '\010', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', '\022', '2', '\n', '\010', 'r', 'o', 'l', 'e', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\026', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'T', 'y', 'p', 'e', 'R', '\010', 'r', 'o', 'l', 'e', 't', 'y', 'p', 'e', '\022', '\032', '\n', '\010', 'r', 'o', 'l', 'e', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\010', 'r', 'o', 'l', 'e', 'n', 'a', 'm', 'e', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', 'Y', '\n', '\021', 'T', 'r', 'i', 'g', 'g', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'i', 't', 'i', 'o', 'n', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\025', '\n', '\006', 'i', 's', '_', 'n', 'e', 'w', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\005', 'i', 's', 'N', 'e', 'w', '\022', '\031', '\n', '\010', 'i', 's', '_', 't', 'a', 'b', 'l', 'e', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\007', 'i', 's', 'T', 'a', 'b', 'l', 'e', '\"', '\273', '\001', '\n', '\r', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'E', 'l', 'e', 'm', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\"', '\n', '\004', 'e', 'x', 'p', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'e', 'x', 'p', 'r', '\022', ',', '\n', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\t', 'c', 'o', 'l', 'l', 'a', 't', 'i', 'o', 'n', '\022', '(', '\n', '\007', 'o', 'p', 'c', 'l', 'a', 's', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'o', 'p', 'c', 'l', 'a', 's', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\005', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', 'x', '\n', '\r', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'S', 'p', 'e', 'c', '\022', '\032', '\n', '\010', 's', 't', 'r', 'a', 't', 'e', 'g', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\010', 's', 't', 'r', 'a', 't', 'e', 'g', 'y', '\022', '/', '\n', '\013', 'p', 'a', 'r', 't', '_', 'p', 'a', 'r', 'a', 'm', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'p', 'a', 'r', 't', 'P', 'a', 'r', 'a', 'm', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\270', '\002', '\n', '\022', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'B', 'o', 'u', 'n', 'd', 'S', 'p', 'e', 'c', '\022', '\032', '\n', '\010', 's', 't', 'r', 'a', 't', 'e', 'g', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\010', 's', 't', 'r', 'a', 't', 'e', 'g', 'y', '\022', '\036', '\n', '\n', 'i', 's', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'i', 's', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '\022', '\030', '\n', '\007', 'm', 'o', 'd', 'u', 'l', 'u', 's', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\007', 'm', 'o', 'd', 'u', 'l', 'u', 's', '\022', '\034', '\n', '\t', 'r', 'e', 'm', 'a', 'i', 'n', 'd', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\t', 'r', 'e', 'm', 'a', 'i', 'n', 'd', 'e', 'r', '\022', '.', '\n', '\n', 'l', 'i', 's', 't', 'd', 'a', 't', 'u', 'm', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\n', 'l', 'i', 's', 't', 'd', 'a', 't', 'u', 'm', 's', '\022', '0', '\n', '\013', 'l', 'o', 'w', 'e', 'r', 'd', 'a', 't', 'u', 'm', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'l', 'o', 'w', 'e', 'r', 'd', 'a', 't', 'u', 'm', 's', '\022', '0', '\n', '\013', 'u', 'p', 'p', 'e', 'r', 'd', 'a', 't', 'u', 'm', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\013', 'u', 'p', 'p', 'e', 'r', 'd', 'a', 't', 'u', 'm', 's', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\010', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', '\216', '\001', '\n', '\023', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'R', 'a', 'n', 'g', 'e', 'D', 'a', 't', 'u', 'm', '\022', '5', '\n', '\004', 'k', 'i', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\016', '2', '!', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'R', 'a', 'n', 'g', 'e', 'D', 'a', 't', 'u', 'm', 'K', 'i', 'n', 'd', 'R', '\004', 'k', 'i', 'n', 'd', '\022', '$', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\005', 'v', 'a', 'l', 'u', 'e', '\022', '\032', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\"', 'j', '\n', '\014', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'C', 'm', 'd', '\022', '&', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '2', '\n', '\005', 'b', 'o', 'u', 'n', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'B', 'o', 'u', 'n', 'd', 'S', 'p', 'e', 'c', 'R', '\005', 'b', 'o', 'u', 'n', 'd', '\"', '|', '\n', '\016', 'V', 'a', 'c', 'u', 'u', 'm', 'R', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '.', '\n', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\022', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'R', 'a', 'n', 'g', 'e', 'V', 'a', 'r', 'R', '\010', 'r', 'e', 'l', 'a', 't', 'i', 'o', 'n', '\022', '\020', '\n', '\003', 'o', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\003', 'o', 'i', 'd', '\022', '(', '\n', '\007', 'v', 'a', '_', 'c', 'o', 'l', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\016', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'N', 'o', 'd', 'e', 'R', '\007', 'v', 'a', '_', 'c', 'o', 'l', 's', '\"', '\216', '\001', '\n', '\017', 'I', 'n', 'l', 'i', 'n', 'e', 'C', 'o', 'd', 'e', 'B', 'l', 'o', 'c', 'k', '\022', ' ', '\n', '\013', 's', 'o', 'u', 'r', 'c', 'e', '_', 't', 'e', 'x', 't', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 's', 'o', 'u', 'r', 'c', 'e', '_', 't', 'e', 'x', 't', '\022', '\031', '\n', '\010', 'l', 'a', 'n', 'g', '_', 'o', 'i', 'd', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\007', 'l', 'a', 'n', 'g', 'O', 'i', 'd', '\022', '&', '\n', '\017', 'l', 'a', 'n', 'g', '_', 'i', 's', '_', 't', 'r', 'u', 's', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\r', 'l', 'a', 'n', 'g', 'I', 's', 'T', 'r', 'u', 's', 't', 'e', 'd', '\022', '\026', '\n', '\006', 'a', 't', 'o', 'm', 'i', 'c', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\006', 'a', 't', 'o', 'm', 'i', 'c', '\"', '%', '\n', '\013', 'C', 'a', 'l', 'l', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', '\026', '\n', '\006', 'a', 't', 'o', 'm', 'i', 'c', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\006', 'a', 't', 'o', 'm', 'i', 'c', '\"', 't', '\n', '\t', 'S', 'c', 'a', 'n', 'T', 'o', 'k', 'e', 'n', '\022', '\r', '\n', '\005', 's', 't', 'a', 'r', 't', '\030', '\001', ' ', '\001', '(', '\005', '\022', '\013', '\n', '\003', 'e', 'n', 'd', '\030', '\002', ' ', '\001', '(', '\005', '\022', '\036', '\n', '\005', 't', 'o', 'k', 'e', 'n', '\030', '\004', ' ', '\001', '(', '\016', '2', '\017', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'T', 'o', 'k', 'e', 'n', '\022', '+', '\n', '\014', 'k', 'e', 'y', 'w', 'o', 'r', 'd', '_', 'k', 'i', 'n', 'd', '\030', '\005', ' ', '\001', '(', '\016', '2', '\025', '.', 'p', 'g', '_', 'q', 'u', 'e', 'r', 'y', '.', 'K', 'e', 'y', 'w', 'o', 'r', 'd', 'K', 'i', 'n', 'd', '*', '\177', '\n', '\016', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'i', 'n', 'g', 'K', 'i', 'n', 'd', '\022', '\035', '\n', '\031', 'O', 'V', 'E', 'R', 'R', 'I', 'D', 'I', 'N', 'G', '_', 'K', 'I', 'N', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\026', '\n', '\022', 'O', 'V', 'E', 'R', 'R', 'I', 'D', 'I', 'N', 'G', '_', 'N', 'O', 'T', '_', 'S', 'E', 'T', '\020', '\001', '\022', '\031', '\n', '\025', 'O', 'V', 'E', 'R', 'R', 'I', 'D', 'I', 'N', 'G', '_', 'U', 'S', 'E', 'R', '_', 'V', 'A', 'L', 'U', 'E', '\020', '\002', '\022', '\033', '\n', '\027', 'O', 'V', 'E', 'R', 'R', 'I', 'D', 'I', 'N', 'G', '_', 'S', 'Y', 'S', 'T', 'E', 'M', '_', 'V', 'A', 'L', 'U', 'E', '\020', '\003', '*', '\233', '\001', '\n', '\013', 'Q', 'u', 'e', 'r', 'y', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '\032', '\n', '\026', 'Q', 'U', 'E', 'R', 'Y', '_', 'S', 'O', 'U', 'R', 'C', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'Q', 'S', 'R', 'C', '_', 'O', 'R', 'I', 'G', 'I', 'N', 'A', 'L', '\020', '\001', '\022', '\017', '\n', '\013', 'Q', 'S', 'R', 'C', '_', 'P', 'A', 'R', 'S', 'E', 'R', '\020', '\002', '\022', '\025', '\n', '\021', 'Q', 'S', 'R', 'C', '_', 'I', 'N', 'S', 'T', 'E', 'A', 'D', '_', 'R', 'U', 'L', 'E', '\020', '\003', '\022', '\032', '\n', '\026', 'Q', 'S', 'R', 'C', '_', 'Q', 'U', 'A', 'L', '_', 'I', 'N', 'S', 'T', 'E', 'A', 'D', '_', 'R', 'U', 'L', 'E', '\020', '\004', '\022', '\031', '\n', '\025', 'Q', 'S', 'R', 'C', '_', 'N', 'O', 'N', '_', 'I', 'N', 'S', 'T', 'E', 'A', 'D', '_', 'R', 'U', 'L', 'E', '\020', '\005', '*', 'm', '\n', '\t', 'S', 'o', 'r', 't', 'B', 'y', 'D', 'i', 'r', '\022', '\031', '\n', '\025', 'S', 'O', 'R', 'T', '_', 'B', 'Y', '_', 'D', 'I', 'R', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\022', '\n', '\016', 'S', 'O', 'R', 'T', 'B', 'Y', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\001', '\022', '\016', '\n', '\n', 'S', 'O', 'R', 'T', 'B', 'Y', '_', 'A', 'S', 'C', '\020', '\002', '\022', '\017', '\n', '\013', 'S', 'O', 'R', 'T', 'B', 'Y', '_', 'D', 'E', 'S', 'C', '\020', '\003', '\022', '\020', '\n', '\014', 'S', 'O', 'R', 'T', 'B', 'Y', '_', 'U', 'S', 'I', 'N', 'G', '\020', '\004', '*', 's', '\n', '\013', 'S', 'o', 'r', 't', 'B', 'y', 'N', 'u', 'l', 'l', 's', '\022', '\033', '\n', '\027', 'S', 'O', 'R', 'T', '_', 'B', 'Y', '_', 'N', 'U', 'L', 'L', 'S', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\030', '\n', '\024', 'S', 'O', 'R', 'T', 'B', 'Y', '_', 'N', 'U', 'L', 'L', 'S', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\001', '\022', '\026', '\n', '\022', 'S', 'O', 'R', 'T', 'B', 'Y', '_', 'N', 'U', 'L', 'L', 'S', '_', 'F', 'I', 'R', 'S', 'T', '\020', '\002', '\022', '\025', '\n', '\021', 'S', 'O', 'R', 'T', 'B', 'Y', '_', 'N', 'U', 'L', 'L', 'S', '_', 'L', 'A', 'S', 'T', '\020', '\003', '*', '\325', '\002', '\n', '\013', 'A', '_', 'E', 'x', 'p', 'r', '_', 'K', 'i', 'n', 'd', '\022', '\031', '\n', '\025', 'A', '_', 'E', 'X', 'P', 'R', '_', 'K', 'I', 'N', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\014', '\n', '\010', 'A', 'E', 'X', 'P', 'R', '_', 'O', 'P', '\020', '\001', '\022', '\020', '\n', '\014', 'A', 'E', 'X', 'P', 'R', '_', 'O', 'P', '_', 'A', 'N', 'Y', '\020', '\002', '\022', '\020', '\n', '\014', 'A', 'E', 'X', 'P', 'R', '_', 'O', 'P', '_', 'A', 'L', 'L', '\020', '\003', '\022', '\022', '\n', '\016', 'A', 'E', 'X', 'P', 'R', '_', 'D', 'I', 'S', 'T', 'I', 'N', 'C', 'T', '\020', '\004', '\022', '\026', '\n', '\022', 'A', 'E', 'X', 'P', 'R', '_', 'N', 'O', 'T', '_', 'D', 'I', 'S', 'T', 'I', 'N', 'C', 'T', '\020', '\005', '\022', '\020', '\n', '\014', 'A', 'E', 'X', 'P', 'R', '_', 'N', 'U', 'L', 'L', 'I', 'F', '\020', '\006', '\022', '\014', '\n', '\010', 'A', 'E', 'X', 'P', 'R', '_', 'O', 'F', '\020', '\007', '\022', '\014', '\n', '\010', 'A', 'E', 'X', 'P', 'R', '_', 'I', 'N', '\020', '\010', '\022', '\016', '\n', '\n', 'A', 'E', 'X', 'P', 'R', '_', 'L', 'I', 'K', 'E', '\020', '\t', '\022', '\017', '\n', '\013', 'A', 'E', 'X', 'P', 'R', '_', 'I', 'L', 'I', 'K', 'E', '\020', '\n', '\022', '\021', '\n', '\r', 'A', 'E', 'X', 'P', 'R', '_', 'S', 'I', 'M', 'I', 'L', 'A', 'R', '\020', '\013', '\022', '\021', '\n', '\r', 'A', 'E', 'X', 'P', 'R', '_', 'B', 'E', 'T', 'W', 'E', 'E', 'N', '\020', '\014', '\022', '\025', '\n', '\021', 'A', 'E', 'X', 'P', 'R', '_', 'N', 'O', 'T', '_', 'B', 'E', 'T', 'W', 'E', 'E', 'N', '\020', '\r', '\022', '\025', '\n', '\021', 'A', 'E', 'X', 'P', 'R', '_', 'B', 'E', 'T', 'W', 'E', 'E', 'N', '_', 'S', 'Y', 'M', '\020', '\016', '\022', '\031', '\n', '\025', 'A', 'E', 'X', 'P', 'R', '_', 'N', 'O', 'T', '_', 'B', 'E', 'T', 'W', 'E', 'E', 'N', '_', 'S', 'Y', 'M', '\020', '\017', '\022', '\017', '\n', '\013', 'A', 'E', 'X', 'P', 'R', '_', 'P', 'A', 'R', 'E', 'N', '\020', '\020', '*', '\215', '\001', '\n', '\014', 'R', 'o', 'l', 'e', 'S', 'p', 'e', 'c', 'T', 'y', 'p', 'e', '\022', '\034', '\n', '\030', 'R', 'O', 'L', 'E', '_', 'S', 'P', 'E', 'C', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\024', '\n', '\020', 'R', 'O', 'L', 'E', 'S', 'P', 'E', 'C', '_', 'C', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\001', '\022', '\031', '\n', '\025', 'R', 'O', 'L', 'E', 'S', 'P', 'E', 'C', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'U', 'S', 'E', 'R', '\020', '\002', '\022', '\031', '\n', '\025', 'R', 'O', 'L', 'E', 'S', 'P', 'E', 'C', '_', 'S', 'E', 'S', 'S', 'I', 'O', 'N', '_', 'U', 'S', 'E', 'R', '\020', '\003', '\022', '\023', '\n', '\017', 'R', 'O', 'L', 'E', 'S', 'P', 'E', 'C', '_', 'P', 'U', 'B', 'L', 'I', 'C', '\020', '\004', '*', '\321', '\002', '\n', '\017', 'T', 'a', 'b', 'l', 'e', 'L', 'i', 'k', 'e', 'O', 'p', 't', 'i', 'o', 'n', '\022', '\037', '\n', '\033', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'O', 'P', 'T', 'I', 'O', 'N', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\036', '\n', '\032', 'C', 'R', 'E', 'A', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'C', 'O', 'M', 'M', 'E', 'N', 'T', 'S', '\020', '\001', '\022', '!', '\n', '\035', 'C', 'R', 'E', 'A', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'C', 'O', 'N', 'S', 'T', 'R', 'A', 'I', 'N', 'T', 'S', '\020', '\002', '\022', '\036', '\n', '\032', 'C', 'R', 'E', 'A', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', 'S', '\020', '\003', '\022', '\037', '\n', '\033', 'C', 'R', 'E', 'A', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'G', 'E', 'N', 'E', 'R', 'A', 'T', 'E', 'D', '\020', '\004', '\022', '\036', '\n', '\032', 'C', 'R', 'E', 'A', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'I', 'D', 'E', 'N', 'T', 'I', 'T', 'Y', '\020', '\005', '\022', '\035', '\n', '\031', 'C', 'R', 'E', 'A', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'I', 'N', 'D', 'E', 'X', 'E', 'S', '\020', '\006', '\022', ' ', '\n', '\034', 'C', 'R', 'E', 'A', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'S', 'T', 'A', 'T', 'I', 'S', 'T', 'I', 'C', 'S', '\020', '\007', '\022', '\035', '\n', '\031', 'C', 'R', 'E', 'A', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'S', 'T', 'O', 'R', 'A', 'G', 'E', '\020', '\010', '\022', '\031', '\n', '\025', 'C', 'R', 'E', 'A', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', '_', 'L', 'I', 'K', 'E', '_', 'A', 'L', 'L', '\020', '\t', '*', 'v', '\n', '\r', 'D', 'e', 'f', 'E', 'l', 'e', 'm', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\035', '\n', '\031', 'D', 'E', 'F', '_', 'E', 'L', 'E', 'M', '_', 'A', 'C', 'T', 'I', 'O', 'N', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\022', '\n', '\016', 'D', 'E', 'F', 'E', 'L', 'E', 'M', '_', 'U', 'N', 'S', 'P', 'E', 'C', '\020', '\001', '\022', '\017', '\n', '\013', 'D', 'E', 'F', 'E', 'L', 'E', 'M', '_', 'S', 'E', 'T', '\020', '\002', '\022', '\017', '\n', '\013', 'D', 'E', 'F', 'E', 'L', 'E', 'M', '_', 'A', 'D', 'D', '\020', '\003', '\022', '\020', '\n', '\014', 'D', 'E', 'F', 'E', 'L', 'E', 'M', '_', 'D', 'R', 'O', 'P', '\020', '\004', '*', '\254', '\001', '\n', '\027', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', 'R', 'a', 'n', 'g', 'e', 'D', 'a', 't', 'u', 'm', 'K', 'i', 'n', 'd', '\022', '(', '\n', '$', 'P', 'A', 'R', 'T', 'I', 'T', 'I', 'O', 'N', '_', 'R', 'A', 'N', 'G', 'E', '_', 'D', 'A', 'T', 'U', 'M', '_', 'K', 'I', 'N', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\"', '\n', '\036', 'P', 'A', 'R', 'T', 'I', 'T', 'I', 'O', 'N', '_', 'R', 'A', 'N', 'G', 'E', '_', 'D', 'A', 'T', 'U', 'M', '_', 'M', 'I', 'N', 'V', 'A', 'L', 'U', 'E', '\020', '\001', '\022', '\037', '\n', '\033', 'P', 'A', 'R', 'T', 'I', 'T', 'I', 'O', 'N', '_', 'R', 'A', 'N', 'G', 'E', '_', 'D', 'A', 'T', 'U', 'M', '_', 'V', 'A', 'L', 'U', 'E', '\020', '\002', '\022', '\"', '\n', '\036', 'P', 'A', 'R', 'T', 'I', 'T', 'I', 'O', 'N', '_', 'R', 'A', 'N', 'G', 'E', '_', 'D', 'A', 'T', 'U', 'M', '_', 'M', 'A', 'X', 'V', 'A', 'L', 'U', 'E', '\020', '\003', '*', '\275', '\001', '\n', '\007', 'R', 'T', 'E', 'K', 'i', 'n', 'd', '\022', '\025', '\n', '\021', 'R', 'T', 'E', 'K', 'I', 'N', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\020', '\n', '\014', 'R', 'T', 'E', '_', 'R', 'E', 'L', 'A', 'T', 'I', 'O', 'N', '\020', '\001', '\022', '\020', '\n', '\014', 'R', 'T', 'E', '_', 'S', 'U', 'B', 'Q', 'U', 'E', 'R', 'Y', '\020', '\002', '\022', '\014', '\n', '\010', 'R', 'T', 'E', '_', 'J', 'O', 'I', 'N', '\020', '\003', '\022', '\020', '\n', '\014', 'R', 'T', 'E', '_', 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N', '\020', '\004', '\022', '\021', '\n', '\r', 'R', 'T', 'E', '_', 'T', 'A', 'B', 'L', 'E', 'F', 'U', 'N', 'C', '\020', '\005', '\022', '\016', '\n', '\n', 'R', 'T', 'E', '_', 'V', 'A', 'L', 'U', 'E', 'S', '\020', '\006', '\022', '\013', '\n', '\007', 'R', 'T', 'E', '_', 'C', 'T', 'E', '\020', '\007', '\022', '\027', '\n', '\023', 'R', 'T', 'E', '_', 'N', 'A', 'M', 'E', 'D', 'T', 'U', 'P', 'L', 'E', 'S', 'T', 'O', 'R', 'E', '\020', '\010', '\022', '\016', '\n', '\n', 'R', 'T', 'E', '_', 'R', 'E', 'S', 'U', 'L', 'T', '\020', '\t', '*', '\204', '\001', '\n', '\007', 'W', 'C', 'O', 'K', 'i', 'n', 'd', '\022', '\025', '\n', '\021', 'W', 'C', 'O', 'K', 'I', 'N', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\022', '\n', '\016', 'W', 'C', 'O', '_', 'V', 'I', 'E', 'W', '_', 'C', 'H', 'E', 'C', 'K', '\020', '\001', '\022', '\030', '\n', '\024', 'W', 'C', 'O', '_', 'R', 'L', 'S', '_', 'I', 'N', 'S', 'E', 'R', 'T', '_', 'C', 'H', 'E', 'C', 'K', '\020', '\002', '\022', '\030', '\n', '\024', 'W', 'C', 'O', '_', 'R', 'L', 'S', '_', 'U', 'P', 'D', 'A', 'T', 'E', '_', 'C', 'H', 'E', 'C', 'K', '\020', '\003', '\022', '\032', '\n', '\026', 'W', 'C', 'O', '_', 'R', 'L', 'S', '_', 'C', 'O', 'N', 'F', 'L', 'I', 'C', 'T', '_', 'C', 'H', 'E', 'C', 'K', '\020', '\004', '*', '\252', '\001', '\n', '\017', 'G', 'r', 'o', 'u', 'p', 'i', 'n', 'g', 'S', 'e', 't', 'K', 'i', 'n', 'd', '\022', '\037', '\n', '\033', 'G', 'R', 'O', 'U', 'P', 'I', 'N', 'G', '_', 'S', 'E', 'T', '_', 'K', 'I', 'N', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\026', '\n', '\022', 'G', 'R', 'O', 'U', 'P', 'I', 'N', 'G', '_', 'S', 'E', 'T', '_', 'E', 'M', 'P', 'T', 'Y', '\020', '\001', '\022', '\027', '\n', '\023', 'G', 'R', 'O', 'U', 'P', 'I', 'N', 'G', '_', 'S', 'E', 'T', '_', 'S', 'I', 'M', 'P', 'L', 'E', '\020', '\002', '\022', '\027', '\n', '\023', 'G', 'R', 'O', 'U', 'P', 'I', 'N', 'G', '_', 'S', 'E', 'T', '_', 'R', 'O', 'L', 'L', 'U', 'P', '\020', '\003', '\022', '\025', '\n', '\021', 'G', 'R', 'O', 'U', 'P', 'I', 'N', 'G', '_', 'S', 'E', 'T', '_', 'C', 'U', 'B', 'E', '\020', '\004', '\022', '\025', '\n', '\021', 'G', 'R', 'O', 'U', 'P', 'I', 'N', 'G', '_', 'S', 'E', 'T', '_', 'S', 'E', 'T', 'S', '\020', '\005', '*', '|', '\n', '\016', 'C', 'T', 'E', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', '\022', '\034', '\n', '\030', 'C', 'T', 'E', 'M', 'A', 'T', 'E', 'R', 'I', 'A', 'L', 'I', 'Z', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\031', '\n', '\025', 'C', 'T', 'E', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', 'D', 'e', 'f', 'a', 'u', 'l', 't', '\020', '\001', '\022', '\030', '\n', '\024', 'C', 'T', 'E', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', 'A', 'l', 'w', 'a', 'y', 's', '\020', '\002', '\022', '\027', '\n', '\023', 'C', 'T', 'E', 'M', 'a', 't', 'e', 'r', 'i', 'a', 'l', 'i', 'z', 'e', 'N', 'e', 'v', 'e', 'r', '\020', '\003', '*', 's', '\n', '\014', 'S', 'e', 't', 'O', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '\022', '\033', '\n', '\027', 'S', 'E', 'T', '_', 'O', 'P', 'E', 'R', 'A', 'T', 'I', 'O', 'N', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\016', '\n', '\n', 'S', 'E', 'T', 'O', 'P', '_', 'N', 'O', 'N', 'E', '\020', '\001', '\022', '\017', '\n', '\013', 'S', 'E', 'T', 'O', 'P', '_', 'U', 'N', 'I', 'O', 'N', '\020', '\002', '\022', '\023', '\n', '\017', 'S', 'E', 'T', 'O', 'P', '_', 'I', 'N', 'T', 'E', 'R', 'S', 'E', 'C', 'T', '\020', '\003', '\022', '\020', '\n', '\014', 'S', 'E', 'T', 'O', 'P', '_', 'E', 'X', 'C', 'E', 'P', 'T', '\020', '\004', '*', '\335', '\010', '\n', '\n', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', '\022', '\031', '\n', '\025', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\030', '\n', '\024', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'A', 'C', 'C', 'E', 'S', 'S', '_', 'M', 'E', 'T', 'H', 'O', 'D', '\020', '\001', '\022', '\024', '\n', '\020', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'A', 'G', 'G', 'R', 'E', 'G', 'A', 'T', 'E', '\020', '\002', '\022', '\017', '\n', '\013', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'A', 'M', 'O', 'P', '\020', '\003', '\022', '\021', '\n', '\r', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'A', 'M', 'P', 'R', 'O', 'C', '\020', '\004', '\022', '\024', '\n', '\020', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'A', 'T', 'T', 'R', 'I', 'B', 'U', 'T', 'E', '\020', '\005', '\022', '\017', '\n', '\013', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'C', 'A', 'S', 'T', '\020', '\006', '\022', '\021', '\n', '\r', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'C', 'O', 'L', 'U', 'M', 'N', '\020', '\007', '\022', '\024', '\n', '\020', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'C', 'O', 'L', 'L', 'A', 'T', 'I', 'O', 'N', '\020', '\010', '\022', '\025', '\n', '\021', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'C', 'O', 'N', 'V', 'E', 'R', 'S', 'I', 'O', 'N', '\020', '\t', '\022', '\023', '\n', '\017', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'D', 'A', 'T', 'A', 'B', 'A', 'S', 'E', '\020', '\n', '\022', '\022', '\n', '\016', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\013', '\022', '\021', '\n', '\r', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'D', 'E', 'F', 'A', 'C', 'L', '\020', '\014', '\022', '\021', '\n', '\r', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'D', 'O', 'M', 'A', 'I', 'N', '\020', '\r', '\022', '\030', '\n', '\024', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'D', 'O', 'M', 'C', 'O', 'N', 'S', 'T', 'R', 'A', 'I', 'N', 'T', '\020', '\016', '\022', '\030', '\n', '\024', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'E', 'V', 'E', 'N', 'T', '_', 'T', 'R', 'I', 'G', 'G', 'E', 'R', '\020', '\017', '\022', '\024', '\n', '\020', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'E', 'X', 'T', 'E', 'N', 'S', 'I', 'O', 'N', '\020', '\020', '\022', '\016', '\n', '\n', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'F', 'D', 'W', '\020', '\021', '\022', '\031', '\n', '\025', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'F', 'O', 'R', 'E', 'I', 'G', 'N', '_', 'S', 'E', 'R', 'V', 'E', 'R', '\020', '\022', '\022', '\030', '\n', '\024', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'F', 'O', 'R', 'E', 'I', 'G', 'N', '_', 'T', 'A', 'B', 'L', 'E', '\020', '\023', '\022', '\023', '\n', '\017', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N', '\020', '\024', '\022', '\020', '\n', '\014', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'I', 'N', 'D', 'E', 'X', '\020', '\025', '\022', '\023', '\n', '\017', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'L', 'A', 'N', 'G', 'U', 'A', 'G', 'E', '\020', '\026', '\022', '\026', '\n', '\022', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'L', 'A', 'R', 'G', 'E', 'O', 'B', 'J', 'E', 'C', 'T', '\020', '\027', '\022', '\022', '\n', '\016', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'M', 'A', 'T', 'V', 'I', 'E', 'W', '\020', '\030', '\022', '\022', '\n', '\016', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'O', 'P', 'C', 'L', 'A', 'S', 'S', '\020', '\031', '\022', '\023', '\n', '\017', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'O', 'P', 'E', 'R', 'A', 'T', 'O', 'R', '\020', '\032', '\022', '\023', '\n', '\017', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'O', 'P', 'F', 'A', 'M', 'I', 'L', 'Y', '\020', '\033', '\022', '\021', '\n', '\r', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', 'O', 'L', 'I', 'C', 'Y', '\020', '\034', '\022', '\024', '\n', '\020', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'E', '\020', '\035', '\022', '\026', '\n', '\022', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '\020', '\036', '\022', '\032', '\n', '\026', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '_', 'R', 'E', 'L', '\020', '\037', '\022', '\017', '\n', '\013', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'R', 'O', 'L', 'E', '\020', ' ', '\022', '\022', '\n', '\016', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'R', 'O', 'U', 'T', 'I', 'N', 'E', '\020', '!', '\022', '\017', '\n', '\013', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'R', 'U', 'L', 'E', '\020', '\"', '\022', '\021', '\n', '\r', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'S', 'C', 'H', 'E', 'M', 'A', '\020', '#', '\022', '\023', '\n', '\017', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'S', 'E', 'Q', 'U', 'E', 'N', 'C', 'E', '\020', '$', '\022', '\027', '\n', '\023', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '\020', '%', '\022', '\030', '\n', '\024', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'S', 'T', 'A', 'T', 'I', 'S', 'T', 'I', 'C', '_', 'E', 'X', 'T', '\020', '&', '\022', '\030', '\n', '\024', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'A', 'B', 'C', 'O', 'N', 'S', 'T', 'R', 'A', 'I', 'N', 'T', '\020', '\'', '\022', '\020', '\n', '\014', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'A', 'B', 'L', 'E', '\020', '(', '\022', '\025', '\n', '\021', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'A', 'B', 'L', 'E', 'S', 'P', 'A', 'C', 'E', '\020', ')', '\022', '\024', '\n', '\020', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'R', 'A', 'N', 'S', 'F', 'O', 'R', 'M', '\020', '*', '\022', '\022', '\n', '\016', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'R', 'I', 'G', 'G', 'E', 'R', '\020', '+', '\022', '\032', '\n', '\026', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'S', 'C', 'O', 'N', 'F', 'I', 'G', 'U', 'R', 'A', 'T', 'I', 'O', 'N', '\020', ',', '\022', '\027', '\n', '\023', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'S', 'D', 'I', 'C', 'T', 'I', 'O', 'N', 'A', 'R', 'Y', '\020', '-', '\022', '\023', '\n', '\017', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'S', 'P', 'A', 'R', 'S', 'E', 'R', '\020', '.', '\022', '\025', '\n', '\021', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'S', 'T', 'E', 'M', 'P', 'L', 'A', 'T', 'E', '\020', '/', '\022', '\017', '\n', '\013', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'Y', 'P', 'E', '\020', '0', '\022', '\027', '\n', '\023', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'U', 'S', 'E', 'R', '_', 'M', 'A', 'P', 'P', 'I', 'N', 'G', '\020', '1', '\022', '\017', '\n', '\013', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'V', 'I', 'E', 'W', '\020', '2', '*', 'P', '\n', '\014', 'D', 'r', 'o', 'p', 'B', 'e', 'h', 'a', 'v', 'i', 'o', 'r', '\022', '\033', '\n', '\027', 'D', 'R', 'O', 'P', '_', 'B', 'E', 'H', 'A', 'V', 'I', 'O', 'R', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'D', 'R', 'O', 'P', '_', 'R', 'E', 'S', 'T', 'R', 'I', 'C', 'T', '\020', '\001', '\022', '\020', '\n', '\014', 'D', 'R', 'O', 'P', '_', 'C', 'A', 'S', 'C', 'A', 'D', 'E', '\020', '\002', '*', '\237', '\014', '\n', '\016', 'A', 'l', 't', 'e', 'r', 'T', 'a', 'b', 'l', 'e', 'T', 'y', 'p', 'e', '\022', '\036', '\n', '\032', 'A', 'L', 'T', 'E', 'R', '_', 'T', 'A', 'B', 'L', 'E', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\020', '\n', '\014', 'A', 'T', '_', 'A', 'd', 'd', 'C', 'o', 'l', 'u', 'm', 'n', '\020', '\001', '\022', '\027', '\n', '\023', 'A', 'T', '_', 'A', 'd', 'd', 'C', 'o', 'l', 'u', 'm', 'n', 'R', 'e', 'c', 'u', 'r', 's', 'e', '\020', '\002', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'A', 'd', 'd', 'C', 'o', 'l', 'u', 'm', 'n', 'T', 'o', 'V', 'i', 'e', 'w', '\020', '\003', '\022', '\024', '\n', '\020', 'A', 'T', '_', 'C', 'o', 'l', 'u', 'm', 'n', 'D', 'e', 'f', 'a', 'u', 'l', 't', '\020', '\004', '\022', '\032', '\n', '\026', 'A', 'T', '_', 'C', 'o', 'o', 'k', 'e', 'd', 'C', 'o', 'l', 'u', 'm', 'n', 'D', 'e', 'f', 'a', 'u', 'l', 't', '\020', '\005', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'N', 'o', 't', 'N', 'u', 'l', 'l', '\020', '\006', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'S', 'e', 't', 'N', 'o', 't', 'N', 'u', 'l', 'l', '\020', '\007', '\022', '\025', '\n', '\021', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'E', 'x', 'p', 'r', 'e', 's', 's', 'i', 'o', 'n', '\020', '\010', '\022', '\023', '\n', '\017', 'A', 'T', '_', 'C', 'h', 'e', 'c', 'k', 'N', 'o', 't', 'N', 'u', 'l', 'l', '\020', '\t', '\022', '\024', '\n', '\020', 'A', 'T', '_', 'S', 'e', 't', 'S', 't', 'a', 't', 'i', 's', 't', 'i', 'c', 's', '\020', '\n', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'S', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 's', '\020', '\013', '\022', '\023', '\n', '\017', 'A', 'T', '_', 'R', 'e', 's', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 's', '\020', '\014', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'S', 'e', 't', 'S', 't', 'o', 'r', 'a', 'g', 'e', '\020', '\r', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'C', 'o', 'l', 'u', 'm', 'n', '\020', '\016', '\022', '\030', '\n', '\024', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'C', 'o', 'l', 'u', 'm', 'n', 'R', 'e', 'c', 'u', 'r', 's', 'e', '\020', '\017', '\022', '\017', '\n', '\013', 'A', 'T', '_', 'A', 'd', 'd', 'I', 'n', 'd', 'e', 'x', '\020', '\020', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'R', 'e', 'A', 'd', 'd', 'I', 'n', 'd', 'e', 'x', '\020', '\021', '\022', '\024', '\n', '\020', 'A', 'T', '_', 'A', 'd', 'd', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\020', '\022', '\022', '\033', '\n', '\027', 'A', 'T', '_', 'A', 'd', 'd', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 'R', 'e', 'c', 'u', 'r', 's', 'e', '\020', '\023', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'R', 'e', 'A', 'd', 'd', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\020', '\024', '\022', '\034', '\n', '\030', 'A', 'T', '_', 'R', 'e', 'A', 'd', 'd', 'D', 'o', 'm', 'a', 'i', 'n', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\020', '\025', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'A', 'l', 't', 'e', 'r', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\020', '\026', '\022', '\031', '\n', '\025', 'A', 'T', '_', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'e', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\020', '\027', '\022', ' ', '\n', '\034', 'A', 'T', '_', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'e', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 'R', 'e', 'c', 'u', 'r', 's', 'e', '\020', '\030', '\022', '\031', '\n', '\025', 'A', 'T', '_', 'A', 'd', 'd', 'I', 'n', 'd', 'e', 'x', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\020', '\031', '\022', '\025', '\n', '\021', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\020', '\032', '\022', '\034', '\n', '\030', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 'R', 'e', 'c', 'u', 'r', 's', 'e', '\020', '\033', '\022', '\023', '\n', '\017', 'A', 'T', '_', 'R', 'e', 'A', 'd', 'd', 'C', 'o', 'm', 'm', 'e', 'n', 't', '\020', '\034', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'A', 'l', 't', 'e', 'r', 'C', 'o', 'l', 'u', 'm', 'n', 'T', 'y', 'p', 'e', '\020', '\035', '\022', ' ', '\n', '\034', 'A', 'T', '_', 'A', 'l', 't', 'e', 'r', 'C', 'o', 'l', 'u', 'm', 'n', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'O', 'p', 't', 'i', 'o', 'n', 's', '\020', '\036', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'C', 'h', 'a', 'n', 'g', 'e', 'O', 'w', 'n', 'e', 'r', '\020', '\037', '\022', '\020', '\n', '\014', 'A', 'T', '_', 'C', 'l', 'u', 's', 't', 'e', 'r', 'O', 'n', '\020', ' ', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'C', 'l', 'u', 's', 't', 'e', 'r', '\020', '!', '\022', '\020', '\n', '\014', 'A', 'T', '_', 'S', 'e', 't', 'L', 'o', 'g', 'g', 'e', 'd', '\020', '\"', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'S', 'e', 't', 'U', 'n', 'L', 'o', 'g', 'g', 'e', 'd', '\020', '#', '\022', '\017', '\n', '\013', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'O', 'i', 'd', 's', '\020', '$', '\022', '\024', '\n', '\020', 'A', 'T', '_', 'S', 'e', 't', 'T', 'a', 'b', 'l', 'e', 'S', 'p', 'a', 'c', 'e', '\020', '%', '\022', '\024', '\n', '\020', 'A', 'T', '_', 'S', 'e', 't', 'R', 'e', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\020', '&', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'R', 'e', 's', 'e', 't', 'R', 'e', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\020', '\'', '\022', '\030', '\n', '\024', 'A', 'T', '_', 'R', 'e', 'p', 'l', 'a', 'c', 'e', 'R', 'e', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\020', '(', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'T', 'r', 'i', 'g', '\020', ')', '\022', '\027', '\n', '\023', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'A', 'l', 'w', 'a', 'y', 's', 'T', 'r', 'i', 'g', '\020', '*', '\022', '\030', '\n', '\024', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'R', 'e', 'p', 'l', 'i', 'c', 'a', 'T', 'r', 'i', 'g', '\020', '+', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'T', 'r', 'i', 'g', '\020', ',', '\022', '\024', '\n', '\020', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'T', 'r', 'i', 'g', 'A', 'l', 'l', '\020', '-', '\022', '\025', '\n', '\021', 'A', 'T', '_', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'T', 'r', 'i', 'g', 'A', 'l', 'l', '\020', '.', '\022', '\025', '\n', '\021', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'T', 'r', 'i', 'g', 'U', 's', 'e', 'r', '\020', '/', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'T', 'r', 'i', 'g', 'U', 's', 'e', 'r', '\020', '0', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'R', 'u', 'l', 'e', '\020', '1', '\022', '\027', '\n', '\023', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'A', 'l', 'w', 'a', 'y', 's', 'R', 'u', 'l', 'e', '\020', '2', '\022', '\030', '\n', '\024', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'R', 'e', 'p', 'l', 'i', 'c', 'a', 'R', 'u', 'l', 'e', '\020', '3', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'R', 'u', 'l', 'e', '\020', '4', '\022', '\021', '\n', '\r', 'A', 'T', '_', 'A', 'd', 'd', 'I', 'n', 'h', 'e', 'r', 'i', 't', '\020', '5', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'I', 'n', 'h', 'e', 'r', 'i', 't', '\020', '6', '\022', '\014', '\n', '\010', 'A', 'T', '_', 'A', 'd', 'd', 'O', 'f', '\020', '7', '\022', '\r', '\n', '\t', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'O', 'f', '\020', '8', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'R', 'e', 'p', 'l', 'i', 'c', 'a', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\020', '9', '\022', '\030', '\n', '\024', 'A', 'T', '_', 'E', 'n', 'a', 'b', 'l', 'e', 'R', 'o', 'w', 'S', 'e', 'c', 'u', 'r', 'i', 't', 'y', '\020', ':', '\022', '\031', '\n', '\025', 'A', 'T', '_', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'R', 'o', 'w', 'S', 'e', 'c', 'u', 'r', 'i', 't', 'y', '\020', ';', '\022', '\027', '\n', '\023', 'A', 'T', '_', 'F', 'o', 'r', 'c', 'e', 'R', 'o', 'w', 'S', 'e', 'c', 'u', 'r', 'i', 't', 'y', '\020', '<', '\022', '\031', '\n', '\025', 'A', 'T', '_', 'N', 'o', 'F', 'o', 'r', 'c', 'e', 'R', 'o', 'w', 'S', 'e', 'c', 'u', 'r', 'i', 't', 'y', '\020', '=', '\022', '\025', '\n', '\021', 'A', 'T', '_', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'O', 'p', 't', 'i', 'o', 'n', 's', '\020', '>', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'A', 't', 't', 'a', 'c', 'h', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '\020', '?', '\022', '\026', '\n', '\022', 'A', 'T', '_', 'D', 'e', 't', 'a', 'c', 'h', 'P', 'a', 'r', 't', 'i', 't', 'i', 'o', 'n', '\020', '@', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'A', 'd', 'd', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\020', 'A', '\022', '\022', '\n', '\016', 'A', 'T', '_', 'S', 'e', 't', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\020', 'B', '\022', '\023', '\n', '\017', 'A', 'T', '_', 'D', 'r', 'o', 'p', 'I', 'd', 'e', 'n', 't', 'i', 't', 'y', '\020', 'C', '*', '\200', '\001', '\n', '\017', 'G', 'r', 'a', 'n', 't', 'T', 'a', 'r', 'g', 'e', 't', 'T', 'y', 'p', 'e', '\022', '\037', '\n', '\033', 'G', 'R', 'A', 'N', 'T', '_', 'T', 'A', 'R', 'G', 'E', 'T', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\025', '\n', '\021', 'A', 'C', 'L', '_', 'T', 'A', 'R', 'G', 'E', 'T', '_', 'O', 'B', 'J', 'E', 'C', 'T', '\020', '\001', '\022', '\034', '\n', '\030', 'A', 'C', 'L', '_', 'T', 'A', 'R', 'G', 'E', 'T', '_', 'A', 'L', 'L', '_', 'I', 'N', '_', 'S', 'C', 'H', 'E', 'M', 'A', '\020', '\002', '\022', '\027', '\n', '\023', 'A', 'C', 'L', '_', 'T', 'A', 'R', 'G', 'E', 'T', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', 'S', '\020', '\003', '*', '\244', '\001', '\n', '\017', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 'e', 't', 'K', 'i', 'n', 'd', '\022', '\037', '\n', '\033', 'V', 'A', 'R', 'I', 'A', 'B', 'L', 'E', '_', 'S', 'E', 'T', '_', 'K', 'I', 'N', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'V', 'A', 'R', '_', 'S', 'E', 'T', '_', 'V', 'A', 'L', 'U', 'E', '\020', '\001', '\022', '\023', '\n', '\017', 'V', 'A', 'R', '_', 'S', 'E', 'T', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\002', '\022', '\023', '\n', '\017', 'V', 'A', 'R', '_', 'S', 'E', 'T', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '\020', '\003', '\022', '\021', '\n', '\r', 'V', 'A', 'R', '_', 'S', 'E', 'T', '_', 'M', 'U', 'L', 'T', 'I', '\020', '\004', '\022', '\r', '\n', '\t', 'V', 'A', 'R', '_', 'R', 'E', 'S', 'E', 'T', '\020', '\005', '\022', '\021', '\n', '\r', 'V', 'A', 'R', '_', 'R', 'E', 'S', 'E', 'T', '_', 'A', 'L', 'L', '\020', '\006', '*', '\337', '\002', '\n', '\n', 'C', 'o', 'n', 's', 't', 'r', 'T', 'y', 'p', 'e', '\022', '\031', '\n', '\025', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\017', '\n', '\013', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'N', 'U', 'L', 'L', '\020', '\001', '\022', '\022', '\n', '\016', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'N', 'O', 'T', 'N', 'U', 'L', 'L', '\020', '\002', '\022', '\022', '\n', '\016', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\003', '\022', '\023', '\n', '\017', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'I', 'D', 'E', 'N', 'T', 'I', 'T', 'Y', '\020', '\004', '\022', '\024', '\n', '\020', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'G', 'E', 'N', 'E', 'R', 'A', 'T', 'E', 'D', '\020', '\005', '\022', '\020', '\n', '\014', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'C', 'H', 'E', 'C', 'K', '\020', '\006', '\022', '\022', '\n', '\016', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'P', 'R', 'I', 'M', 'A', 'R', 'Y', '\020', '\007', '\022', '\021', '\n', '\r', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'U', 'N', 'I', 'Q', 'U', 'E', '\020', '\010', '\022', '\024', '\n', '\020', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'E', 'X', 'C', 'L', 'U', 'S', 'I', 'O', 'N', '\020', '\t', '\022', '\022', '\n', '\016', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'F', 'O', 'R', 'E', 'I', 'G', 'N', '\020', '\n', '\022', '\032', '\n', '\026', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'A', 'T', 'T', 'R', '_', 'D', 'E', 'F', 'E', 'R', 'R', 'A', 'B', 'L', 'E', '\020', '\013', '\022', '\036', '\n', '\032', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'A', 'T', 'T', 'R', '_', 'N', 'O', 'T', '_', 'D', 'E', 'F', 'E', 'R', 'R', 'A', 'B', 'L', 'E', '\020', '\014', '\022', '\030', '\n', '\024', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'A', 'T', 'T', 'R', '_', 'D', 'E', 'F', 'E', 'R', 'R', 'E', 'D', '\020', '\r', '\022', '\031', '\n', '\025', 'C', 'O', 'N', 'S', 'T', 'R', '_', 'A', 'T', 'T', 'R', '_', 'I', 'M', 'M', 'E', 'D', 'I', 'A', 'T', 'E', '\020', '\016', '*', '\234', '\001', '\n', '\027', 'I', 'm', 'p', 'o', 'r', 't', 'F', 'o', 'r', 'e', 'i', 'g', 'n', 'S', 'c', 'h', 'e', 'm', 'a', 'T', 'y', 'p', 'e', '\022', '(', '\n', '$', 'I', 'M', 'P', 'O', 'R', 'T', '_', 'F', 'O', 'R', 'E', 'I', 'G', 'N', '_', 'S', 'C', 'H', 'E', 'M', 'A', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\031', '\n', '\025', 'F', 'D', 'W', '_', 'I', 'M', 'P', 'O', 'R', 'T', '_', 'S', 'C', 'H', 'E', 'M', 'A', '_', 'A', 'L', 'L', '\020', '\001', '\022', '\036', '\n', '\032', 'F', 'D', 'W', '_', 'I', 'M', 'P', 'O', 'R', 'T', '_', 'S', 'C', 'H', 'E', 'M', 'A', '_', 'L', 'I', 'M', 'I', 'T', '_', 'T', 'O', '\020', '\002', '\022', '\034', '\n', '\030', 'F', 'D', 'W', '_', 'I', 'M', 'P', 'O', 'R', 'T', '_', 'S', 'C', 'H', 'E', 'M', 'A', '_', 'E', 'X', 'C', 'E', 'P', 'T', '\020', '\003', '*', 'f', '\n', '\014', 'R', 'o', 'l', 'e', 'S', 't', 'm', 't', 'T', 'y', 'p', 'e', '\022', '\034', '\n', '\030', 'R', 'O', 'L', 'E', '_', 'S', 'T', 'M', 'T', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'R', 'O', 'L', 'E', 'S', 'T', 'M', 'T', '_', 'R', 'O', 'L', 'E', '\020', '\001', '\022', '\021', '\n', '\r', 'R', 'O', 'L', 'E', 'S', 'T', 'M', 'T', '_', 'U', 'S', 'E', 'R', '\020', '\002', '\022', '\022', '\n', '\016', 'R', 'O', 'L', 'E', 'S', 'T', 'M', 'T', '_', 'G', 'R', 'O', 'U', 'P', '\020', '\003', '*', '~', '\n', '\016', 'F', 'e', 't', 'c', 'h', 'D', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\022', '\035', '\n', '\031', 'F', 'E', 'T', 'C', 'H', '_', 'D', 'I', 'R', 'E', 'C', 'T', 'I', 'O', 'N', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'F', 'E', 'T', 'C', 'H', '_', 'F', 'O', 'R', 'W', 'A', 'R', 'D', '\020', '\001', '\022', '\022', '\n', '\016', 'F', 'E', 'T', 'C', 'H', '_', 'B', 'A', 'C', 'K', 'W', 'A', 'R', 'D', '\020', '\002', '\022', '\022', '\n', '\016', 'F', 'E', 'T', 'C', 'H', '_', 'A', 'B', 'S', 'O', 'L', 'U', 'T', 'E', '\020', '\003', '\022', '\022', '\n', '\016', 'F', 'E', 'T', 'C', 'H', '_', 'R', 'E', 'L', 'A', 'T', 'I', 'V', 'E', '\020', '\004', '*', '\252', '\001', '\n', '\025', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'M', 'o', 'd', 'e', '\022', '%', '\n', '!', 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N', '_', 'P', 'A', 'R', 'A', 'M', 'E', 'T', 'E', 'R', '_', 'M', 'O', 'D', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'F', 'U', 'N', 'C', '_', 'P', 'A', 'R', 'A', 'M', '_', 'I', 'N', '\020', '\001', '\022', '\022', '\n', '\016', 'F', 'U', 'N', 'C', '_', 'P', 'A', 'R', 'A', 'M', '_', 'O', 'U', 'T', '\020', '\002', '\022', '\024', '\n', '\020', 'F', 'U', 'N', 'C', '_', 'P', 'A', 'R', 'A', 'M', '_', 'I', 'N', 'O', 'U', 'T', '\020', '\003', '\022', '\027', '\n', '\023', 'F', 'U', 'N', 'C', '_', 'P', 'A', 'R', 'A', 'M', '_', 'V', 'A', 'R', 'I', 'A', 'D', 'I', 'C', '\020', '\004', '\022', '\024', '\n', '\020', 'F', 'U', 'N', 'C', '_', 'P', 'A', 'R', 'A', 'M', '_', 'T', 'A', 'B', 'L', 'E', '\020', '\005', '*', '\276', '\002', '\n', '\023', 'T', 'r', 'a', 'n', 's', 'a', 'c', 't', 'i', 'o', 'n', 'S', 't', 'm', 't', 'K', 'i', 'n', 'd', '\022', '#', '\n', '\037', 'T', 'R', 'A', 'N', 'S', 'A', 'C', 'T', 'I', 'O', 'N', '_', 'S', 'T', 'M', 'T', '_', 'K', 'I', 'N', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\024', '\n', '\020', 'T', 'R', 'A', 'N', 'S', '_', 'S', 'T', 'M', 'T', '_', 'B', 'E', 'G', 'I', 'N', '\020', '\001', '\022', '\024', '\n', '\020', 'T', 'R', 'A', 'N', 'S', '_', 'S', 'T', 'M', 'T', '_', 'S', 'T', 'A', 'R', 'T', '\020', '\002', '\022', '\025', '\n', '\021', 'T', 'R', 'A', 'N', 'S', '_', 'S', 'T', 'M', 'T', '_', 'C', 'O', 'M', 'M', 'I', 'T', '\020', '\003', '\022', '\027', '\n', '\023', 'T', 'R', 'A', 'N', 'S', '_', 'S', 'T', 'M', 'T', '_', 'R', 'O', 'L', 'L', 'B', 'A', 'C', 'K', '\020', '\004', '\022', '\030', '\n', '\024', 'T', 'R', 'A', 'N', 'S', '_', 'S', 'T', 'M', 'T', '_', 'S', 'A', 'V', 'E', 'P', 'O', 'I', 'N', 'T', '\020', '\005', '\022', '\026', '\n', '\022', 'T', 'R', 'A', 'N', 'S', '_', 'S', 'T', 'M', 'T', '_', 'R', 'E', 'L', 'E', 'A', 'S', 'E', '\020', '\006', '\022', '\032', '\n', '\026', 'T', 'R', 'A', 'N', 'S', '_', 'S', 'T', 'M', 'T', '_', 'R', 'O', 'L', 'L', 'B', 'A', 'C', 'K', '_', 'T', 'O', '\020', '\007', '\022', '\026', '\n', '\022', 'T', 'R', 'A', 'N', 'S', '_', 'S', 'T', 'M', 'T', '_', 'P', 'R', 'E', 'P', 'A', 'R', 'E', '\020', '\010', '\022', '\036', '\n', '\032', 'T', 'R', 'A', 'N', 'S', '_', 'S', 'T', 'M', 'T', '_', 'C', 'O', 'M', 'M', 'I', 'T', '_', 'P', 'R', 'E', 'P', 'A', 'R', 'E', 'D', '\020', '\t', '\022', ' ', '\n', '\034', 'T', 'R', 'A', 'N', 'S', '_', 'S', 'T', 'M', 'T', '_', 'R', 'O', 'L', 'L', 'B', 'A', 'C', 'K', '_', 'P', 'R', 'E', 'P', 'A', 'R', 'E', 'D', '\020', '\n', '*', 'z', '\n', '\017', 'V', 'i', 'e', 'w', 'C', 'h', 'e', 'c', 'k', 'O', 'p', 't', 'i', 'o', 'n', '\022', '\037', '\n', '\033', 'V', 'I', 'E', 'W', '_', 'C', 'H', 'E', 'C', 'K', '_', 'O', 'P', 'T', 'I', 'O', 'N', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\023', '\n', '\017', 'N', 'O', '_', 'C', 'H', 'E', 'C', 'K', '_', 'O', 'P', 'T', 'I', 'O', 'N', '\020', '\001', '\022', '\026', '\n', '\022', 'L', 'O', 'C', 'A', 'L', '_', 'C', 'H', 'E', 'C', 'K', '_', 'O', 'P', 'T', 'I', 'O', 'N', '\020', '\002', '\022', '\031', '\n', '\025', 'C', 'A', 'S', 'C', 'A', 'D', 'E', 'D', '_', 'C', 'H', 'E', 'C', 'K', '_', 'O', 'P', 'T', 'I', 'O', 'N', '\020', '\003', '*', 'U', '\n', '\r', 'C', 'l', 'u', 's', 't', 'e', 'r', 'O', 'p', 't', 'i', 'o', 'n', '\022', '\034', '\n', '\030', 'C', 'L', 'U', 'S', 'T', 'E', 'R', '_', 'O', 'P', 'T', 'I', 'O', 'N', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\022', '\n', '\016', 'C', 'L', 'U', 'O', 'P', 'T', '_', 'R', 'E', 'C', 'H', 'E', 'C', 'K', '\020', '\001', '\022', '\022', '\n', '\016', 'C', 'L', 'U', 'O', 'P', 'T', '_', 'V', 'E', 'R', 'B', 'O', 'S', 'E', '\020', '\002', '*', 'v', '\n', '\013', 'D', 'i', 's', 'c', 'a', 'r', 'd', 'M', 'o', 'd', 'e', '\022', '\032', '\n', '\026', 'D', 'I', 'S', 'C', 'A', 'R', 'D', '_', 'M', 'O', 'D', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\017', '\n', '\013', 'D', 'I', 'S', 'C', 'A', 'R', 'D', '_', 'A', 'L', 'L', '\020', '\001', '\022', '\021', '\n', '\r', 'D', 'I', 'S', 'C', 'A', 'R', 'D', '_', 'P', 'L', 'A', 'N', 'S', '\020', '\002', '\022', '\025', '\n', '\021', 'D', 'I', 'S', 'C', 'A', 'R', 'D', '_', 'S', 'E', 'Q', 'U', 'E', 'N', 'C', 'E', 'S', '\020', '\003', '\022', '\020', '\n', '\014', 'D', 'I', 'S', 'C', 'A', 'R', 'D', '_', 'T', 'E', 'M', 'P', '\020', '\004', '*', '\275', '\001', '\n', '\021', 'R', 'e', 'i', 'n', 'd', 'e', 'x', 'O', 'b', 'j', 'e', 'c', 't', 'T', 'y', 'p', 'e', '\022', '!', '\n', '\035', 'R', 'E', 'I', 'N', 'D', 'E', 'X', '_', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\030', '\n', '\024', 'R', 'E', 'I', 'N', 'D', 'E', 'X', '_', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'I', 'N', 'D', 'E', 'X', '\020', '\001', '\022', '\030', '\n', '\024', 'R', 'E', 'I', 'N', 'D', 'E', 'X', '_', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'T', 'A', 'B', 'L', 'E', '\020', '\002', '\022', '\031', '\n', '\025', 'R', 'E', 'I', 'N', 'D', 'E', 'X', '_', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'S', 'C', 'H', 'E', 'M', 'A', '\020', '\003', '\022', '\031', '\n', '\025', 'R', 'E', 'I', 'N', 'D', 'E', 'X', '_', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'S', 'Y', 'S', 'T', 'E', 'M', '\020', '\004', '\022', '\033', '\n', '\027', 'R', 'E', 'I', 'N', 'D', 'E', 'X', '_', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'D', 'A', 'T', 'A', 'B', 'A', 'S', 'E', '\020', '\005', '*', '\357', '\001', '\n', '\021', 'A', 'l', 't', 'e', 'r', 'T', 'S', 'C', 'o', 'n', 'f', 'i', 'g', 'T', 'y', 'p', 'e', '\022', '!', '\n', '\035', 'A', 'L', 'T', 'E', 'R', '_', 'T', 'S', 'C', 'O', 'N', 'F', 'I', 'G', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\036', '\n', '\032', 'A', 'L', 'T', 'E', 'R', '_', 'T', 'S', 'C', 'O', 'N', 'F', 'I', 'G', '_', 'A', 'D', 'D', '_', 'M', 'A', 'P', 'P', 'I', 'N', 'G', '\020', '\001', '\022', '*', '\n', '&', 'A', 'L', 'T', 'E', 'R', '_', 'T', 'S', 'C', 'O', 'N', 'F', 'I', 'G', '_', 'A', 'L', 'T', 'E', 'R', '_', 'M', 'A', 'P', 'P', 'I', 'N', 'G', '_', 'F', 'O', 'R', '_', 'T', 'O', 'K', 'E', 'N', '\020', '\002', '\022', '\037', '\n', '\033', 'A', 'L', 'T', 'E', 'R', '_', 'T', 'S', 'C', 'O', 'N', 'F', 'I', 'G', '_', 'R', 'E', 'P', 'L', 'A', 'C', 'E', '_', 'D', 'I', 'C', 'T', '\020', '\003', '\022', ')', '\n', '%', 'A', 'L', 'T', 'E', 'R', '_', 'T', 'S', 'C', 'O', 'N', 'F', 'I', 'G', '_', 'R', 'E', 'P', 'L', 'A', 'C', 'E', '_', 'D', 'I', 'C', 'T', '_', 'F', 'O', 'R', '_', 'T', 'O', 'K', 'E', 'N', '\020', '\004', '\022', '\037', '\n', '\033', 'A', 'L', 'T', 'E', 'R', '_', 'T', 'S', 'C', 'O', 'N', 'F', 'I', 'G', '_', 'D', 'R', 'O', 'P', '_', 'M', 'A', 'P', 'P', 'I', 'N', 'G', '\020', '\005', '*', '\345', '\001', '\n', '\025', 'A', 'l', 't', 'e', 'r', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'T', 'y', 'p', 'e', '\022', '%', '\n', '!', 'A', 'L', 'T', 'E', 'R', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\036', '\n', '\032', 'A', 'L', 'T', 'E', 'R', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '_', 'O', 'P', 'T', 'I', 'O', 'N', 'S', '\020', '\001', '\022', '!', '\n', '\035', 'A', 'L', 'T', 'E', 'R', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '_', 'C', 'O', 'N', 'N', 'E', 'C', 'T', 'I', 'O', 'N', '\020', '\002', '\022', '\"', '\n', '\036', 'A', 'L', 'T', 'E', 'R', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '_', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '\020', '\003', '\022', '\036', '\n', '\032', 'A', 'L', 'T', 'E', 'R', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '_', 'R', 'E', 'F', 'R', 'E', 'S', 'H', '\020', '\004', '\022', '\036', '\n', '\032', 'A', 'L', 'T', 'E', 'R', '_', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '_', 'E', 'N', 'A', 'B', 'L', 'E', 'D', '\020', '\005', '*', '\214', '\001', '\n', '\016', 'O', 'n', 'C', 'o', 'm', 'm', 'i', 't', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\036', '\n', '\032', 'O', 'N', '_', 'C', 'O', 'M', 'M', 'I', 'T', '_', 'A', 'C', 'T', 'I', 'O', 'N', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'O', 'N', 'C', 'O', 'M', 'M', 'I', 'T', '_', 'N', 'O', 'O', 'P', '\020', '\001', '\022', '\032', '\n', '\026', 'O', 'N', 'C', 'O', 'M', 'M', 'I', 'T', '_', 'P', 'R', 'E', 'S', 'E', 'R', 'V', 'E', '_', 'R', 'O', 'W', 'S', '\020', '\002', '\022', '\030', '\n', '\024', 'O', 'N', 'C', 'O', 'M', 'M', 'I', 'T', '_', 'D', 'E', 'L', 'E', 'T', 'E', '_', 'R', 'O', 'W', 'S', '\020', '\003', '\022', '\021', '\n', '\r', 'O', 'N', 'C', 'O', 'M', 'M', 'I', 'T', '_', 'D', 'R', 'O', 'P', '\020', '\004', '*', 'o', '\n', '\t', 'P', 'a', 'r', 'a', 'm', 'K', 'i', 'n', 'd', '\022', '\030', '\n', '\024', 'P', 'A', 'R', 'A', 'M', '_', 'K', 'I', 'N', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\020', '\n', '\014', 'P', 'A', 'R', 'A', 'M', '_', 'E', 'X', 'T', 'E', 'R', 'N', '\020', '\001', '\022', '\016', '\n', '\n', 'P', 'A', 'R', 'A', 'M', '_', 'E', 'X', 'E', 'C', '\020', '\002', '\022', '\021', '\n', '\r', 'P', 'A', 'R', 'A', 'M', '_', 'S', 'U', 'B', 'L', 'I', 'N', 'K', '\020', '\003', '\022', '\023', '\n', '\017', 'P', 'A', 'R', 'A', 'M', '_', 'M', 'U', 'L', 'T', 'I', 'E', 'X', 'P', 'R', '\020', '\004', '*', 'x', '\n', '\017', 'C', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', '\036', '\n', '\032', 'C', 'O', 'E', 'R', 'C', 'I', 'O', 'N', '_', 'C', 'O', 'N', 'T', 'E', 'X', 'T', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\025', '\n', '\021', 'C', 'O', 'E', 'R', 'C', 'I', 'O', 'N', '_', 'I', 'M', 'P', 'L', 'I', 'C', 'I', 'T', '\020', '\001', '\022', '\027', '\n', '\023', 'C', 'O', 'E', 'R', 'C', 'I', 'O', 'N', '_', 'A', 'S', 'S', 'I', 'G', 'N', 'M', 'E', 'N', 'T', '\020', '\002', '\022', '\025', '\n', '\021', 'C', 'O', 'E', 'R', 'C', 'I', 'O', 'N', '_', 'E', 'X', 'P', 'L', 'I', 'C', 'I', 'T', '\020', '\003', '*', 'y', '\n', '\014', 'C', 'o', 'e', 'r', 'c', 'i', 'o', 'n', 'F', 'o', 'r', 'm', '\022', '\033', '\n', '\027', 'C', 'O', 'E', 'R', 'C', 'I', 'O', 'N', '_', 'F', 'O', 'R', 'M', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\030', '\n', '\024', 'C', 'O', 'E', 'R', 'C', 'E', '_', 'E', 'X', 'P', 'L', 'I', 'C', 'I', 'T', '_', 'C', 'A', 'L', 'L', '\020', '\001', '\022', '\030', '\n', '\024', 'C', 'O', 'E', 'R', 'C', 'E', '_', 'E', 'X', 'P', 'L', 'I', 'C', 'I', 'T', '_', 'C', 'A', 'S', 'T', '\020', '\002', '\022', '\030', '\n', '\024', 'C', 'O', 'E', 'R', 'C', 'E', '_', 'I', 'M', 'P', 'L', 'I', 'C', 'I', 'T', '_', 'C', 'A', 'S', 'T', '\020', '\003', '*', 'U', '\n', '\014', 'B', 'o', 'o', 'l', 'E', 'x', 'p', 'r', 'T', 'y', 'p', 'e', '\022', '\034', '\n', '\030', 'B', 'O', 'O', 'L', '_', 'E', 'X', 'P', 'R', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\014', '\n', '\010', 'A', 'N', 'D', '_', 'E', 'X', 'P', 'R', '\020', '\001', '\022', '\013', '\n', '\007', 'O', 'R', '_', 'E', 'X', 'P', 'R', '\020', '\002', '\022', '\014', '\n', '\010', 'N', 'O', 'T', '_', 'E', 'X', 'P', 'R', '\020', '\003', '*', '\305', '\001', '\n', '\013', 'S', 'u', 'b', 'L', 'i', 'n', 'k', 'T', 'y', 'p', 'e', '\022', '\033', '\n', '\027', 'S', 'U', 'B', '_', 'L', 'I', 'N', 'K', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\022', '\n', '\016', 'E', 'X', 'I', 'S', 'T', 'S', '_', 'S', 'U', 'B', 'L', 'I', 'N', 'K', '\020', '\001', '\022', '\017', '\n', '\013', 'A', 'L', 'L', '_', 'S', 'U', 'B', 'L', 'I', 'N', 'K', '\020', '\002', '\022', '\017', '\n', '\013', 'A', 'N', 'Y', '_', 'S', 'U', 'B', 'L', 'I', 'N', 'K', '\020', '\003', '\022', '\026', '\n', '\022', 'R', 'O', 'W', 'C', 'O', 'M', 'P', 'A', 'R', 'E', '_', 'S', 'U', 'B', 'L', 'I', 'N', 'K', '\020', '\004', '\022', '\020', '\n', '\014', 'E', 'X', 'P', 'R', '_', 'S', 'U', 'B', 'L', 'I', 'N', 'K', '\020', '\005', '\022', '\025', '\n', '\021', 'M', 'U', 'L', 'T', 'I', 'E', 'X', 'P', 'R', '_', 'S', 'U', 'B', 'L', 'I', 'N', 'K', '\020', '\006', '\022', '\021', '\n', '\r', 'A', 'R', 'R', 'A', 'Y', '_', 'S', 'U', 'B', 'L', 'I', 'N', 'K', '\020', '\007', '\022', '\017', '\n', '\013', 'C', 'T', 'E', '_', 'S', 'U', 'B', 'L', 'I', 'N', 'K', '\020', '\010', '*', '\242', '\001', '\n', '\016', 'R', 'o', 'w', 'C', 'o', 'm', 'p', 'a', 'r', 'e', 'T', 'y', 'p', 'e', '\022', '\036', '\n', '\032', 'R', 'O', 'W', '_', 'C', 'O', 'M', 'P', 'A', 'R', 'E', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'R', 'O', 'W', 'C', 'O', 'M', 'P', 'A', 'R', 'E', '_', 'L', 'T', '\020', '\001', '\022', '\021', '\n', '\r', 'R', 'O', 'W', 'C', 'O', 'M', 'P', 'A', 'R', 'E', '_', 'L', 'E', '\020', '\002', '\022', '\021', '\n', '\r', 'R', 'O', 'W', 'C', 'O', 'M', 'P', 'A', 'R', 'E', '_', 'E', 'Q', '\020', '\003', '\022', '\021', '\n', '\r', 'R', 'O', 'W', 'C', 'O', 'M', 'P', 'A', 'R', 'E', '_', 'G', 'E', '\020', '\004', '\022', '\021', '\n', '\r', 'R', 'O', 'W', 'C', 'O', 'M', 'P', 'A', 'R', 'E', '_', 'G', 'T', '\020', '\005', '\022', '\021', '\n', '\r', 'R', 'O', 'W', 'C', 'O', 'M', 'P', 'A', 'R', 'E', '_', 'N', 'E', '\020', '\006', '*', 'C', '\n', '\010', 'M', 'i', 'n', 'M', 'a', 'x', 'O', 'p', '\022', '\030', '\n', '\024', 'M', 'I', 'N', '_', 'M', 'A', 'X', '_', 'O', 'P', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\017', '\n', '\013', 'I', 'S', '_', 'G', 'R', 'E', 'A', 'T', 'E', 'S', 'T', '\020', '\001', '\022', '\014', '\n', '\010', 'I', 'S', '_', 'L', 'E', 'A', 'S', 'T', '\020', '\002', '*', '\255', '\003', '\n', '\022', 'S', 'Q', 'L', 'V', 'a', 'l', 'u', 'e', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'O', 'p', '\022', '\"', '\n', '\036', 'S', 'Q', 'L', 'V', 'A', 'L', 'U', 'E', '_', 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N', '_', 'O', 'P', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\026', '\n', '\022', 'S', 'V', 'F', 'O', 'P', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'D', 'A', 'T', 'E', '\020', '\001', '\022', '\026', '\n', '\022', 'S', 'V', 'F', 'O', 'P', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'T', 'I', 'M', 'E', '\020', '\002', '\022', '\030', '\n', '\024', 'S', 'V', 'F', 'O', 'P', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'T', 'I', 'M', 'E', '_', 'N', '\020', '\003', '\022', '\033', '\n', '\027', 'S', 'V', 'F', 'O', 'P', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\004', '\022', '\035', '\n', '\031', 'S', 'V', 'F', 'O', 'P', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '_', 'N', '\020', '\005', '\022', '\023', '\n', '\017', 'S', 'V', 'F', 'O', 'P', '_', 'L', 'O', 'C', 'A', 'L', 'T', 'I', 'M', 'E', '\020', '\006', '\022', '\025', '\n', '\021', 'S', 'V', 'F', 'O', 'P', '_', 'L', 'O', 'C', 'A', 'L', 'T', 'I', 'M', 'E', '_', 'N', '\020', '\007', '\022', '\030', '\n', '\024', 'S', 'V', 'F', 'O', 'P', '_', 'L', 'O', 'C', 'A', 'L', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\010', '\022', '\032', '\n', '\026', 'S', 'V', 'F', 'O', 'P', '_', 'L', 'O', 'C', 'A', 'L', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '_', 'N', '\020', '\t', '\022', '\026', '\n', '\022', 'S', 'V', 'F', 'O', 'P', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'R', 'O', 'L', 'E', '\020', '\n', '\022', '\026', '\n', '\022', 'S', 'V', 'F', 'O', 'P', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'U', 'S', 'E', 'R', '\020', '\013', '\022', '\016', '\n', '\n', 'S', 'V', 'F', 'O', 'P', '_', 'U', 'S', 'E', 'R', '\020', '\014', '\022', '\026', '\n', '\022', 'S', 'V', 'F', 'O', 'P', '_', 'S', 'E', 'S', 'S', 'I', 'O', 'N', '_', 'U', 'S', 'E', 'R', '\020', '\r', '\022', '\031', '\n', '\025', 'S', 'V', 'F', 'O', 'P', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'C', 'A', 'T', 'A', 'L', 'O', 'G', '\020', '\016', '\022', '\030', '\n', '\024', 'S', 'V', 'F', 'O', 'P', '_', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'S', 'C', 'H', 'E', 'M', 'A', '\020', '\017', '*', '\262', '\001', '\n', '\t', 'X', 'm', 'l', 'E', 'x', 'p', 'r', 'O', 'p', '\022', '\031', '\n', '\025', 'X', 'M', 'L', '_', 'E', 'X', 'P', 'R', '_', 'O', 'P', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\020', '\n', '\014', 'I', 'S', '_', 'X', 'M', 'L', 'C', 'O', 'N', 'C', 'A', 'T', '\020', '\001', '\022', '\021', '\n', '\r', 'I', 'S', '_', 'X', 'M', 'L', 'E', 'L', 'E', 'M', 'E', 'N', 'T', '\020', '\002', '\022', '\020', '\n', '\014', 'I', 'S', '_', 'X', 'M', 'L', 'F', 'O', 'R', 'E', 'S', 'T', '\020', '\003', '\022', '\017', '\n', '\013', 'I', 'S', '_', 'X', 'M', 'L', 'P', 'A', 'R', 'S', 'E', '\020', '\004', '\022', '\014', '\n', '\010', 'I', 'S', '_', 'X', 'M', 'L', 'P', 'I', '\020', '\005', '\022', '\016', '\n', '\n', 'I', 'S', '_', 'X', 'M', 'L', 'R', 'O', 'O', 'T', '\020', '\006', '\022', '\023', '\n', '\017', 'I', 'S', '_', 'X', 'M', 'L', 'S', 'E', 'R', 'I', 'A', 'L', 'I', 'Z', 'E', '\020', '\007', '\022', '\017', '\n', '\013', 'I', 'S', '_', 'D', 'O', 'C', 'U', 'M', 'E', 'N', 'T', '\020', '\010', '*', ']', '\n', '\r', 'X', 'm', 'l', 'O', 'p', 't', 'i', 'o', 'n', 'T', 'y', 'p', 'e', '\022', '\035', '\n', '\031', 'X', 'M', 'L', '_', 'O', 'P', 'T', 'I', 'O', 'N', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\026', '\n', '\022', 'X', 'M', 'L', 'O', 'P', 'T', 'I', 'O', 'N', '_', 'D', 'O', 'C', 'U', 'M', 'E', 'N', 'T', '\020', '\001', '\022', '\025', '\n', '\021', 'X', 'M', 'L', 'O', 'P', 'T', 'I', 'O', 'N', '_', 'C', 'O', 'N', 'T', 'E', 'N', 'T', '\020', '\002', '*', 'J', '\n', '\014', 'N', 'u', 'l', 'l', 'T', 'e', 's', 't', 'T', 'y', 'p', 'e', '\022', '\034', '\n', '\030', 'N', 'U', 'L', 'L', '_', 'T', 'E', 'S', 'T', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\013', '\n', '\007', 'I', 'S', '_', 'N', 'U', 'L', 'L', '\020', '\001', '\022', '\017', '\n', '\013', 'I', 'S', '_', 'N', 'O', 'T', '_', 'N', 'U', 'L', 'L', '\020', '\002', '*', '\216', '\001', '\n', '\014', 'B', 'o', 'o', 'l', 'T', 'e', 's', 't', 'T', 'y', 'p', 'e', '\022', '\034', '\n', '\030', 'B', 'O', 'O', 'L', '_', 'T', 'E', 'S', 'T', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\013', '\n', '\007', 'I', 'S', '_', 'T', 'R', 'U', 'E', '\020', '\001', '\022', '\017', '\n', '\013', 'I', 'S', '_', 'N', 'O', 'T', '_', 'T', 'R', 'U', 'E', '\020', '\002', '\022', '\014', '\n', '\010', 'I', 'S', '_', 'F', 'A', 'L', 'S', 'E', '\020', '\003', '\022', '\020', '\n', '\014', 'I', 'S', '_', 'N', 'O', 'T', '_', 'F', 'A', 'L', 'S', 'E', '\020', '\004', '\022', '\016', '\n', '\n', 'I', 'S', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\005', '\022', '\022', '\n', '\016', 'I', 'S', '_', 'N', 'O', 'T', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\006', '*', '\224', '\001', '\n', '\007', 'C', 'm', 'd', 'T', 'y', 'p', 'e', '\022', '\026', '\n', '\022', 'C', 'M', 'D', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\017', '\n', '\013', 'C', 'M', 'D', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\001', '\022', '\016', '\n', '\n', 'C', 'M', 'D', '_', 'S', 'E', 'L', 'E', 'C', 'T', '\020', '\002', '\022', '\016', '\n', '\n', 'C', 'M', 'D', '_', 'U', 'P', 'D', 'A', 'T', 'E', '\020', '\003', '\022', '\016', '\n', '\n', 'C', 'M', 'D', '_', 'I', 'N', 'S', 'E', 'R', 'T', '\020', '\004', '\022', '\016', '\n', '\n', 'C', 'M', 'D', '_', 'D', 'E', 'L', 'E', 'T', 'E', '\020', '\005', '\022', '\017', '\n', '\013', 'C', 'M', 'D', '_', 'U', 'T', 'I', 'L', 'I', 'T', 'Y', '\020', '\006', '\022', '\017', '\n', '\013', 'C', 'M', 'D', '_', 'N', 'O', 'T', 'H', 'I', 'N', 'G', '\020', '\007', '*', '\255', '\001', '\n', '\010', 'J', 'o', 'i', 'n', 'T', 'y', 'p', 'e', '\022', '\027', '\n', '\023', 'J', 'O', 'I', 'N', '_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\016', '\n', '\n', 'J', 'O', 'I', 'N', '_', 'I', 'N', 'N', 'E', 'R', '\020', '\001', '\022', '\r', '\n', '\t', 'J', 'O', 'I', 'N', '_', 'L', 'E', 'F', 'T', '\020', '\002', '\022', '\r', '\n', '\t', 'J', 'O', 'I', 'N', '_', 'F', 'U', 'L', 'L', '\020', '\003', '\022', '\016', '\n', '\n', 'J', 'O', 'I', 'N', '_', 'R', 'I', 'G', 'H', 'T', '\020', '\004', '\022', '\r', '\n', '\t', 'J', 'O', 'I', 'N', '_', 'S', 'E', 'M', 'I', '\020', '\005', '\022', '\r', '\n', '\t', 'J', 'O', 'I', 'N', '_', 'A', 'N', 'T', 'I', '\020', '\006', '\022', '\025', '\n', '\021', 'J', 'O', 'I', 'N', '_', 'U', 'N', 'I', 'Q', 'U', 'E', '_', 'O', 'U', 'T', 'E', 'R', '\020', '\007', '\022', '\025', '\n', '\021', 'J', 'O', 'I', 'N', '_', 'U', 'N', 'I', 'Q', 'U', 'E', '_', 'I', 'N', 'N', 'E', 'R', '\020', '\010', '*', 'g', '\n', '\013', 'A', 'g', 'g', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', '\022', '\032', '\n', '\026', 'A', 'G', 'G', '_', 'S', 'T', 'R', 'A', 'T', 'E', 'G', 'Y', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\r', '\n', '\t', 'A', 'G', 'G', '_', 'P', 'L', 'A', 'I', 'N', '\020', '\001', '\022', '\016', '\n', '\n', 'A', 'G', 'G', '_', 'S', 'O', 'R', 'T', 'E', 'D', '\020', '\002', '\022', '\016', '\n', '\n', 'A', 'G', 'G', '_', 'H', 'A', 'S', 'H', 'E', 'D', '\020', '\003', '\022', '\r', '\n', '\t', 'A', 'G', 'G', '_', 'M', 'I', 'X', 'E', 'D', '\020', '\004', '*', 'r', '\n', '\010', 'A', 'g', 'g', 'S', 'p', 'l', 'i', 't', '\022', '\027', '\n', '\023', 'A', 'G', 'G', '_', 'S', 'P', 'L', 'I', 'T', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\023', '\n', '\017', 'A', 'G', 'G', 'S', 'P', 'L', 'I', 'T', '_', 'S', 'I', 'M', 'P', 'L', 'E', '\020', '\001', '\022', '\033', '\n', '\027', 'A', 'G', 'G', 'S', 'P', 'L', 'I', 'T', '_', 'I', 'N', 'I', 'T', 'I', 'A', 'L', '_', 'S', 'E', 'R', 'I', 'A', 'L', '\020', '\002', '\022', '\033', '\n', '\027', 'A', 'G', 'G', 'S', 'P', 'L', 'I', 'T', '_', 'F', 'I', 'N', 'A', 'L', '_', 'D', 'E', 'S', 'E', 'R', 'I', 'A', 'L', '\020', '\003', '*', '\206', '\001', '\n', '\010', 'S', 'e', 't', 'O', 'p', 'C', 'm', 'd', '\022', '\030', '\n', '\024', 'S', 'E', 'T', '_', 'O', 'P', '_', 'C', 'M', 'D', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\026', '\n', '\022', 'S', 'E', 'T', 'O', 'P', 'C', 'M', 'D', '_', 'I', 'N', 'T', 'E', 'R', 'S', 'E', 'C', 'T', '\020', '\001', '\022', '\032', '\n', '\026', 'S', 'E', 'T', 'O', 'P', 'C', 'M', 'D', '_', 'I', 'N', 'T', 'E', 'R', 'S', 'E', 'C', 'T', '_', 'A', 'L', 'L', '\020', '\002', '\022', '\023', '\n', '\017', 'S', 'E', 'T', 'O', 'P', 'C', 'M', 'D', '_', 'E', 'X', 'C', 'E', 'P', 'T', '\020', '\003', '\022', '\027', '\n', '\023', 'S', 'E', 'T', 'O', 'P', 'C', 'M', 'D', '_', 'E', 'X', 'C', 'E', 'P', 'T', '_', 'A', 'L', 'L', '\020', '\004', '*', 'R', '\n', '\r', 'S', 'e', 't', 'O', 'p', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', '\022', '\035', '\n', '\031', 'S', 'E', 'T', '_', 'O', 'P', '_', 'S', 'T', 'R', 'A', 'T', 'E', 'G', 'Y', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\020', '\n', '\014', 'S', 'E', 'T', 'O', 'P', '_', 'S', 'O', 'R', 'T', 'E', 'D', '\020', '\001', '\022', '\020', '\n', '\014', 'S', 'E', 'T', 'O', 'P', '_', 'H', 'A', 'S', 'H', 'E', 'D', '\020', '\002', '*', 'x', '\n', '\020', 'O', 'n', 'C', 'o', 'n', 'f', 'l', 'i', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', '\022', ' ', '\n', '\034', 'O', 'N', '_', 'C', 'O', 'N', 'F', 'L', 'I', 'C', 'T', '_', 'A', 'C', 'T', 'I', 'O', 'N', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\023', '\n', '\017', 'O', 'N', 'C', 'O', 'N', 'F', 'L', 'I', 'C', 'T', '_', 'N', 'O', 'N', 'E', '\020', '\001', '\022', '\026', '\n', '\022', 'O', 'N', 'C', 'O', 'N', 'F', 'L', 'I', 'C', 'T', '_', 'N', 'O', 'T', 'H', 'I', 'N', 'G', '\020', '\002', '\022', '\025', '\n', '\021', 'O', 'N', 'C', 'O', 'N', 'F', 'L', 'I', 'C', 'T', '_', 'U', 'P', 'D', 'A', 'T', 'E', '\020', '\003', '*', 'w', '\n', '\013', 'L', 'i', 'm', 'i', 't', 'O', 'p', 't', 'i', 'o', 'n', '\022', '\032', '\n', '\026', 'L', 'I', 'M', 'I', 'T', '_', 'O', 'P', 'T', 'I', 'O', 'N', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\030', '\n', '\024', 'L', 'I', 'M', 'I', 'T', '_', 'O', 'P', 'T', 'I', 'O', 'N', '_', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\001', '\022', '\026', '\n', '\022', 'L', 'I', 'M', 'I', 'T', '_', 'O', 'P', 'T', 'I', 'O', 'N', '_', 'C', 'O', 'U', 'N', 'T', '\020', '\002', '\022', '\032', '\n', '\026', 'L', 'I', 'M', 'I', 'T', '_', 'O', 'P', 'T', 'I', 'O', 'N', '_', 'W', 'I', 'T', 'H', '_', 'T', 'I', 'E', 'S', '\020', '\003', '*', '\230', '\001', '\n', '\022', 'L', 'o', 'c', 'k', 'C', 'l', 'a', 'u', 's', 'e', 'S', 't', 'r', 'e', 'n', 'g', 't', 'h', '\022', '\"', '\n', '\036', 'L', 'O', 'C', 'K', '_', 'C', 'L', 'A', 'U', 'S', 'E', '_', 'S', 'T', 'R', 'E', 'N', 'G', 'T', 'H', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\014', '\n', '\010', 'L', 'C', 'S', '_', 'N', 'O', 'N', 'E', '\020', '\001', '\022', '\023', '\n', '\017', 'L', 'C', 'S', '_', 'F', 'O', 'R', 'K', 'E', 'Y', 'S', 'H', 'A', 'R', 'E', '\020', '\002', '\022', '\020', '\n', '\014', 'L', 'C', 'S', '_', 'F', 'O', 'R', 'S', 'H', 'A', 'R', 'E', '\020', '\003', '\022', '\026', '\n', '\022', 'L', 'C', 'S', '_', 'F', 'O', 'R', 'N', 'O', 'K', 'E', 'Y', 'U', 'P', 'D', 'A', 'T', 'E', '\020', '\004', '\022', '\021', '\n', '\r', 'L', 'C', 'S', '_', 'F', 'O', 'R', 'U', 'P', 'D', 'A', 'T', 'E', '\020', '\005', '*', 'h', '\n', '\016', 'L', 'o', 'c', 'k', 'W', 'a', 'i', 't', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\036', '\n', '\032', 'L', 'O', 'C', 'K', '_', 'W', 'A', 'I', 'T', '_', 'P', 'O', 'L', 'I', 'C', 'Y', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'L', 'o', 'c', 'k', 'W', 'a', 'i', 't', 'B', 'l', 'o', 'c', 'k', '\020', '\001', '\022', '\020', '\n', '\014', 'L', 'o', 'c', 'k', 'W', 'a', 'i', 't', 'S', 'k', 'i', 'p', '\020', '\002', '\022', '\021', '\n', '\r', 'L', 'o', 'c', 'k', 'W', 'a', 'i', 't', 'E', 'r', 'r', 'o', 'r', '\020', '\003', '*', '\216', '\001', '\n', '\r', 'L', 'o', 'c', 'k', 'T', 'u', 'p', 'l', 'e', 'M', 'o', 'd', 'e', '\022', '\035', '\n', '\031', 'L', 'O', 'C', 'K', '_', 'T', 'U', 'P', 'L', 'E', '_', 'M', 'O', 'D', 'E', '_', 'U', 'N', 'D', 'E', 'F', 'I', 'N', 'E', 'D', '\020', '\000', '\022', '\025', '\n', '\021', 'L', 'o', 'c', 'k', 'T', 'u', 'p', 'l', 'e', 'K', 'e', 'y', 'S', 'h', 'a', 'r', 'e', '\020', '\001', '\022', '\022', '\n', '\016', 'L', 'o', 'c', 'k', 'T', 'u', 'p', 'l', 'e', 'S', 'h', 'a', 'r', 'e', '\020', '\002', '\022', '\033', '\n', '\027', 'L', 'o', 'c', 'k', 'T', 'u', 'p', 'l', 'e', 'N', 'o', 'K', 'e', 'y', 'E', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', '\020', '\003', '\022', '\026', '\n', '\022', 'L', 'o', 'c', 'k', 'T', 'u', 'p', 'l', 'e', 'E', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', '\020', '\004', '*', '}', '\n', '\013', 'K', 'e', 'y', 'w', 'o', 'r', 'd', 'K', 'i', 'n', 'd', '\022', '\016', '\n', '\n', 'N', 'O', '_', 'K', 'E', 'Y', 'W', 'O', 'R', 'D', '\020', '\000', '\022', '\026', '\n', '\022', 'U', 'N', 'R', 'E', 'S', 'E', 'R', 'V', 'E', 'D', '_', 'K', 'E', 'Y', 'W', 'O', 'R', 'D', '\020', '\001', '\022', '\024', '\n', '\020', 'C', 'O', 'L', '_', 'N', 'A', 'M', 'E', '_', 'K', 'E', 'Y', 'W', 'O', 'R', 'D', '\020', '\002', '\022', '\032', '\n', '\026', 'T', 'Y', 'P', 'E', '_', 'F', 'U', 'N', 'C', '_', 'N', 'A', 'M', 'E', '_', 'K', 'E', 'Y', 'W', 'O', 'R', 'D', '\020', '\003', '\022', '\024', '\n', '\020', 'R', 'E', 'S', 'E', 'R', 'V', 'E', 'D', '_', 'K', 'E', 'Y', 'W', 'O', 'R', 'D', '\020', '\004', '*', '\323', '5', '\n', '\005', 'T', 'o', 'k', 'e', 'n', '\022', '\007', '\n', '\003', 'N', 'U', 'L', '\020', '\000', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '3', '7', '\020', '%', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '4', '0', '\020', '(', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '4', '1', '\020', ')', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '4', '2', '\020', '*', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '4', '3', '\020', '+', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '4', '4', '\020', ',', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '4', '5', '\020', '-', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '4', '6', '\020', '.', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '4', '7', '\020', '/', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '5', '8', '\020', ':', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '5', '9', '\020', ';', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '6', '0', '\020', '<', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '6', '1', '\020', '=', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '6', '2', '\020', '>', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '6', '3', '\020', '?', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '9', '1', '\020', '[', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '9', '3', '\020', ']', '\022', '\014', '\n', '\010', 'A', 'S', 'C', 'I', 'I', '_', '9', '4', '\020', '^', '\022', '\n', '\n', '\005', 'I', 'D', 'E', 'N', 'T', '\020', '\202', '\002', '\022', '\013', '\n', '\006', 'U', 'I', 'D', 'E', 'N', 'T', '\020', '\203', '\002', '\022', '\013', '\n', '\006', 'F', 'C', 'O', 'N', 'S', 'T', '\020', '\204', '\002', '\022', '\013', '\n', '\006', 'S', 'C', 'O', 'N', 'S', 'T', '\020', '\205', '\002', '\022', '\014', '\n', '\007', 'U', 'S', 'C', 'O', 'N', 'S', 'T', '\020', '\206', '\002', '\022', '\013', '\n', '\006', 'B', 'C', 'O', 'N', 'S', 'T', '\020', '\207', '\002', '\022', '\013', '\n', '\006', 'X', 'C', 'O', 'N', 'S', 'T', '\020', '\210', '\002', '\022', '\007', '\n', '\002', 'O', 'p', '\020', '\211', '\002', '\022', '\013', '\n', '\006', 'I', 'C', 'O', 'N', 'S', 'T', '\020', '\212', '\002', '\022', '\n', '\n', '\005', 'P', 'A', 'R', 'A', 'M', '\020', '\213', '\002', '\022', '\r', '\n', '\010', 'T', 'Y', 'P', 'E', 'C', 'A', 'S', 'T', '\020', '\214', '\002', '\022', '\014', '\n', '\007', 'D', 'O', 'T', '_', 'D', 'O', 'T', '\020', '\215', '\002', '\022', '\021', '\n', '\014', 'C', 'O', 'L', 'O', 'N', '_', 'E', 'Q', 'U', 'A', 'L', 'S', '\020', '\216', '\002', '\022', '\023', '\n', '\016', 'E', 'Q', 'U', 'A', 'L', 'S', '_', 'G', 'R', 'E', 'A', 'T', 'E', 'R', '\020', '\217', '\002', '\022', '\020', '\n', '\013', 'L', 'E', 'S', 'S', '_', 'E', 'Q', 'U', 'A', 'L', 'S', '\020', '\220', '\002', '\022', '\023', '\n', '\016', 'G', 'R', 'E', 'A', 'T', 'E', 'R', '_', 'E', 'Q', 'U', 'A', 'L', 'S', '\020', '\221', '\002', '\022', '\017', '\n', '\n', 'N', 'O', 'T', '_', 'E', 'Q', 'U', 'A', 'L', 'S', '\020', '\222', '\002', '\022', '\020', '\n', '\013', 'S', 'Q', 'L', '_', 'C', 'O', 'M', 'M', 'E', 'N', 'T', '\020', '\223', '\002', '\022', '\016', '\n', '\t', 'C', '_', 'C', 'O', 'M', 'M', 'E', 'N', 'T', '\020', '\224', '\002', '\022', '\014', '\n', '\007', 'A', 'B', 'O', 'R', 'T', '_', 'P', '\020', '\225', '\002', '\022', '\017', '\n', '\n', 'A', 'B', 'S', 'O', 'L', 'U', 'T', 'E', '_', 'P', '\020', '\226', '\002', '\022', '\013', '\n', '\006', 'A', 'C', 'C', 'E', 'S', 'S', '\020', '\227', '\002', '\022', '\013', '\n', '\006', 'A', 'C', 'T', 'I', 'O', 'N', '\020', '\230', '\002', '\022', '\n', '\n', '\005', 'A', 'D', 'D', '_', 'P', '\020', '\231', '\002', '\022', '\n', '\n', '\005', 'A', 'D', 'M', 'I', 'N', '\020', '\232', '\002', '\022', '\n', '\n', '\005', 'A', 'F', 'T', 'E', 'R', '\020', '\233', '\002', '\022', '\016', '\n', '\t', 'A', 'G', 'G', 'R', 'E', 'G', 'A', 'T', 'E', '\020', '\234', '\002', '\022', '\010', '\n', '\003', 'A', 'L', 'L', '\020', '\235', '\002', '\022', '\t', '\n', '\004', 'A', 'L', 'S', 'O', '\020', '\236', '\002', '\022', '\n', '\n', '\005', 'A', 'L', 'T', 'E', 'R', '\020', '\237', '\002', '\022', '\013', '\n', '\006', 'A', 'L', 'W', 'A', 'Y', 'S', '\020', '\240', '\002', '\022', '\014', '\n', '\007', 'A', 'N', 'A', 'L', 'Y', 'S', 'E', '\020', '\241', '\002', '\022', '\014', '\n', '\007', 'A', 'N', 'A', 'L', 'Y', 'Z', 'E', '\020', '\242', '\002', '\022', '\010', '\n', '\003', 'A', 'N', 'D', '\020', '\243', '\002', '\022', '\010', '\n', '\003', 'A', 'N', 'Y', '\020', '\244', '\002', '\022', '\n', '\n', '\005', 'A', 'R', 'R', 'A', 'Y', '\020', '\245', '\002', '\022', '\007', '\n', '\002', 'A', 'S', '\020', '\246', '\002', '\022', '\010', '\n', '\003', 'A', 'S', 'C', '\020', '\247', '\002', '\022', '\016', '\n', '\t', 'A', 'S', 'S', 'E', 'R', 'T', 'I', 'O', 'N', '\020', '\250', '\002', '\022', '\017', '\n', '\n', 'A', 'S', 'S', 'I', 'G', 'N', 'M', 'E', 'N', 'T', '\020', '\251', '\002', '\022', '\017', '\n', '\n', 'A', 'S', 'Y', 'M', 'M', 'E', 'T', 'R', 'I', 'C', '\020', '\252', '\002', '\022', '\007', '\n', '\002', 'A', 'T', '\020', '\253', '\002', '\022', '\013', '\n', '\006', 'A', 'T', 'T', 'A', 'C', 'H', '\020', '\254', '\002', '\022', '\016', '\n', '\t', 'A', 'T', 'T', 'R', 'I', 'B', 'U', 'T', 'E', '\020', '\255', '\002', '\022', '\022', '\n', '\r', 'A', 'U', 'T', 'H', 'O', 'R', 'I', 'Z', 'A', 'T', 'I', 'O', 'N', '\020', '\256', '\002', '\022', '\r', '\n', '\010', 'B', 'A', 'C', 'K', 'W', 'A', 'R', 'D', '\020', '\257', '\002', '\022', '\013', '\n', '\006', 'B', 'E', 'F', 'O', 'R', 'E', '\020', '\260', '\002', '\022', '\014', '\n', '\007', 'B', 'E', 'G', 'I', 'N', '_', 'P', '\020', '\261', '\002', '\022', '\014', '\n', '\007', 'B', 'E', 'T', 'W', 'E', 'E', 'N', '\020', '\262', '\002', '\022', '\013', '\n', '\006', 'B', 'I', 'G', 'I', 'N', 'T', '\020', '\263', '\002', '\022', '\013', '\n', '\006', 'B', 'I', 'N', 'A', 'R', 'Y', '\020', '\264', '\002', '\022', '\010', '\n', '\003', 'B', 'I', 'T', '\020', '\265', '\002', '\022', '\016', '\n', '\t', 'B', 'O', 'O', 'L', 'E', 'A', 'N', '_', 'P', '\020', '\266', '\002', '\022', '\t', '\n', '\004', 'B', 'O', 'T', 'H', '\020', '\267', '\002', '\022', '\007', '\n', '\002', 'B', 'Y', '\020', '\270', '\002', '\022', '\n', '\n', '\005', 'C', 'A', 'C', 'H', 'E', '\020', '\271', '\002', '\022', '\t', '\n', '\004', 'C', 'A', 'L', 'L', '\020', '\272', '\002', '\022', '\013', '\n', '\006', 'C', 'A', 'L', 'L', 'E', 'D', '\020', '\273', '\002', '\022', '\014', '\n', '\007', 'C', 'A', 'S', 'C', 'A', 'D', 'E', '\020', '\274', '\002', '\022', '\r', '\n', '\010', 'C', 'A', 'S', 'C', 'A', 'D', 'E', 'D', '\020', '\275', '\002', '\022', '\t', '\n', '\004', 'C', 'A', 'S', 'E', '\020', '\276', '\002', '\022', '\t', '\n', '\004', 'C', 'A', 'S', 'T', '\020', '\277', '\002', '\022', '\016', '\n', '\t', 'C', 'A', 'T', 'A', 'L', 'O', 'G', '_', 'P', '\020', '\300', '\002', '\022', '\n', '\n', '\005', 'C', 'H', 'A', 'I', 'N', '\020', '\301', '\002', '\022', '\013', '\n', '\006', 'C', 'H', 'A', 'R', '_', 'P', '\020', '\302', '\002', '\022', '\016', '\n', '\t', 'C', 'H', 'A', 'R', 'A', 'C', 'T', 'E', 'R', '\020', '\303', '\002', '\022', '\024', '\n', '\017', 'C', 'H', 'A', 'R', 'A', 'C', 'T', 'E', 'R', 'I', 'S', 'T', 'I', 'C', 'S', '\020', '\304', '\002', '\022', '\n', '\n', '\005', 'C', 'H', 'E', 'C', 'K', '\020', '\305', '\002', '\022', '\017', '\n', '\n', 'C', 'H', 'E', 'C', 'K', 'P', 'O', 'I', 'N', 'T', '\020', '\306', '\002', '\022', '\n', '\n', '\005', 'C', 'L', 'A', 'S', 'S', '\020', '\307', '\002', '\022', '\n', '\n', '\005', 'C', 'L', 'O', 'S', 'E', '\020', '\310', '\002', '\022', '\014', '\n', '\007', 'C', 'L', 'U', 'S', 'T', 'E', 'R', '\020', '\311', '\002', '\022', '\r', '\n', '\010', 'C', 'O', 'A', 'L', 'E', 'S', 'C', 'E', '\020', '\312', '\002', '\022', '\014', '\n', '\007', 'C', 'O', 'L', 'L', 'A', 'T', 'E', '\020', '\313', '\002', '\022', '\016', '\n', '\t', 'C', 'O', 'L', 'L', 'A', 'T', 'I', 'O', 'N', '\020', '\314', '\002', '\022', '\013', '\n', '\006', 'C', 'O', 'L', 'U', 'M', 'N', '\020', '\315', '\002', '\022', '\014', '\n', '\007', 'C', 'O', 'L', 'U', 'M', 'N', 'S', '\020', '\316', '\002', '\022', '\014', '\n', '\007', 'C', 'O', 'M', 'M', 'E', 'N', 'T', '\020', '\317', '\002', '\022', '\r', '\n', '\010', 'C', 'O', 'M', 'M', 'E', 'N', 'T', 'S', '\020', '\320', '\002', '\022', '\013', '\n', '\006', 'C', 'O', 'M', 'M', 'I', 'T', '\020', '\321', '\002', '\022', '\016', '\n', '\t', 'C', 'O', 'M', 'M', 'I', 'T', 'T', 'E', 'D', '\020', '\322', '\002', '\022', '\021', '\n', '\014', 'C', 'O', 'N', 'C', 'U', 'R', 'R', 'E', 'N', 'T', 'L', 'Y', '\020', '\323', '\002', '\022', '\022', '\n', '\r', 'C', 'O', 'N', 'F', 'I', 'G', 'U', 'R', 'A', 'T', 'I', 'O', 'N', '\020', '\324', '\002', '\022', '\r', '\n', '\010', 'C', 'O', 'N', 'F', 'L', 'I', 'C', 'T', '\020', '\325', '\002', '\022', '\017', '\n', '\n', 'C', 'O', 'N', 'N', 'E', 'C', 'T', 'I', 'O', 'N', '\020', '\326', '\002', '\022', '\017', '\n', '\n', 'C', 'O', 'N', 'S', 'T', 'R', 'A', 'I', 'N', 'T', '\020', '\327', '\002', '\022', '\020', '\n', '\013', 'C', 'O', 'N', 'S', 'T', 'R', 'A', 'I', 'N', 'T', 'S', '\020', '\330', '\002', '\022', '\016', '\n', '\t', 'C', 'O', 'N', 'T', 'E', 'N', 'T', '_', 'P', '\020', '\331', '\002', '\022', '\017', '\n', '\n', 'C', 'O', 'N', 'T', 'I', 'N', 'U', 'E', '_', 'P', '\020', '\332', '\002', '\022', '\021', '\n', '\014', 'C', 'O', 'N', 'V', 'E', 'R', 'S', 'I', 'O', 'N', '_', 'P', '\020', '\333', '\002', '\022', '\t', '\n', '\004', 'C', 'O', 'P', 'Y', '\020', '\334', '\002', '\022', '\t', '\n', '\004', 'C', 'O', 'S', 'T', '\020', '\335', '\002', '\022', '\013', '\n', '\006', 'C', 'R', 'E', 'A', 'T', 'E', '\020', '\336', '\002', '\022', '\n', '\n', '\005', 'C', 'R', 'O', 'S', 'S', '\020', '\337', '\002', '\022', '\010', '\n', '\003', 'C', 'S', 'V', '\020', '\340', '\002', '\022', '\t', '\n', '\004', 'C', 'U', 'B', 'E', '\020', '\341', '\002', '\022', '\016', '\n', '\t', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'P', '\020', '\342', '\002', '\022', '\024', '\n', '\017', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'C', 'A', 'T', 'A', 'L', 'O', 'G', '\020', '\343', '\002', '\022', '\021', '\n', '\014', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'D', 'A', 'T', 'E', '\020', '\344', '\002', '\022', '\021', '\n', '\014', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'R', 'O', 'L', 'E', '\020', '\345', '\002', '\022', '\023', '\n', '\016', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'S', 'C', 'H', 'E', 'M', 'A', '\020', '\346', '\002', '\022', '\021', '\n', '\014', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'T', 'I', 'M', 'E', '\020', '\347', '\002', '\022', '\026', '\n', '\021', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\350', '\002', '\022', '\021', '\n', '\014', 'C', 'U', 'R', 'R', 'E', 'N', 'T', '_', 'U', 'S', 'E', 'R', '\020', '\351', '\002', '\022', '\013', '\n', '\006', 'C', 'U', 'R', 'S', 'O', 'R', '\020', '\352', '\002', '\022', '\n', '\n', '\005', 'C', 'Y', 'C', 'L', 'E', '\020', '\353', '\002', '\022', '\013', '\n', '\006', 'D', 'A', 'T', 'A', '_', 'P', '\020', '\354', '\002', '\022', '\r', '\n', '\010', 'D', 'A', 'T', 'A', 'B', 'A', 'S', 'E', '\020', '\355', '\002', '\022', '\n', '\n', '\005', 'D', 'A', 'Y', '_', 'P', '\020', '\356', '\002', '\022', '\017', '\n', '\n', 'D', 'E', 'A', 'L', 'L', 'O', 'C', 'A', 'T', 'E', '\020', '\357', '\002', '\022', '\010', '\n', '\003', 'D', 'E', 'C', '\020', '\360', '\002', '\022', '\016', '\n', '\t', 'D', 'E', 'C', 'I', 'M', 'A', 'L', '_', 'P', '\020', '\361', '\002', '\022', '\014', '\n', '\007', 'D', 'E', 'C', 'L', 'A', 'R', 'E', '\020', '\362', '\002', '\022', '\014', '\n', '\007', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\363', '\002', '\022', '\r', '\n', '\010', 'D', 'E', 'F', 'A', 'U', 'L', 'T', 'S', '\020', '\364', '\002', '\022', '\017', '\n', '\n', 'D', 'E', 'F', 'E', 'R', 'R', 'A', 'B', 'L', 'E', '\020', '\365', '\002', '\022', '\r', '\n', '\010', 'D', 'E', 'F', 'E', 'R', 'R', 'E', 'D', '\020', '\366', '\002', '\022', '\014', '\n', '\007', 'D', 'E', 'F', 'I', 'N', 'E', 'R', '\020', '\367', '\002', '\022', '\r', '\n', '\010', 'D', 'E', 'L', 'E', 'T', 'E', '_', 'P', '\020', '\370', '\002', '\022', '\016', '\n', '\t', 'D', 'E', 'L', 'I', 'M', 'I', 'T', 'E', 'R', '\020', '\371', '\002', '\022', '\017', '\n', '\n', 'D', 'E', 'L', 'I', 'M', 'I', 'T', 'E', 'R', 'S', '\020', '\372', '\002', '\022', '\014', '\n', '\007', 'D', 'E', 'P', 'E', 'N', 'D', 'S', '\020', '\373', '\002', '\022', '\t', '\n', '\004', 'D', 'E', 'S', 'C', '\020', '\374', '\002', '\022', '\013', '\n', '\006', 'D', 'E', 'T', 'A', 'C', 'H', '\020', '\375', '\002', '\022', '\017', '\n', '\n', 'D', 'I', 'C', 'T', 'I', 'O', 'N', 'A', 'R', 'Y', '\020', '\376', '\002', '\022', '\016', '\n', '\t', 'D', 'I', 'S', 'A', 'B', 'L', 'E', '_', 'P', '\020', '\377', '\002', '\022', '\014', '\n', '\007', 'D', 'I', 'S', 'C', 'A', 'R', 'D', '\020', '\200', '\003', '\022', '\r', '\n', '\010', 'D', 'I', 'S', 'T', 'I', 'N', 'C', 'T', '\020', '\201', '\003', '\022', '\007', '\n', '\002', 'D', 'O', '\020', '\202', '\003', '\022', '\017', '\n', '\n', 'D', 'O', 'C', 'U', 'M', 'E', 'N', 'T', '_', 'P', '\020', '\203', '\003', '\022', '\r', '\n', '\010', 'D', 'O', 'M', 'A', 'I', 'N', '_', 'P', '\020', '\204', '\003', '\022', '\r', '\n', '\010', 'D', 'O', 'U', 'B', 'L', 'E', '_', 'P', '\020', '\205', '\003', '\022', '\t', '\n', '\004', 'D', 'R', 'O', 'P', '\020', '\206', '\003', '\022', '\t', '\n', '\004', 'E', 'A', 'C', 'H', '\020', '\207', '\003', '\022', '\t', '\n', '\004', 'E', 'L', 'S', 'E', '\020', '\210', '\003', '\022', '\r', '\n', '\010', 'E', 'N', 'A', 'B', 'L', 'E', '_', 'P', '\020', '\211', '\003', '\022', '\r', '\n', '\010', 'E', 'N', 'C', 'O', 'D', 'I', 'N', 'G', '\020', '\212', '\003', '\022', '\016', '\n', '\t', 'E', 'N', 'C', 'R', 'Y', 'P', 'T', 'E', 'D', '\020', '\213', '\003', '\022', '\n', '\n', '\005', 'E', 'N', 'D', '_', 'P', '\020', '\214', '\003', '\022', '\013', '\n', '\006', 'E', 'N', 'U', 'M', '_', 'P', '\020', '\215', '\003', '\022', '\013', '\n', '\006', 'E', 'S', 'C', 'A', 'P', 'E', '\020', '\216', '\003', '\022', '\n', '\n', '\005', 'E', 'V', 'E', 'N', 'T', '\020', '\217', '\003', '\022', '\013', '\n', '\006', 'E', 'X', 'C', 'E', 'P', 'T', '\020', '\220', '\003', '\022', '\014', '\n', '\007', 'E', 'X', 'C', 'L', 'U', 'D', 'E', '\020', '\221', '\003', '\022', '\016', '\n', '\t', 'E', 'X', 'C', 'L', 'U', 'D', 'I', 'N', 'G', '\020', '\222', '\003', '\022', '\016', '\n', '\t', 'E', 'X', 'C', 'L', 'U', 'S', 'I', 'V', 'E', '\020', '\223', '\003', '\022', '\014', '\n', '\007', 'E', 'X', 'E', 'C', 'U', 'T', 'E', '\020', '\224', '\003', '\022', '\013', '\n', '\006', 'E', 'X', 'I', 'S', 'T', 'S', '\020', '\225', '\003', '\022', '\014', '\n', '\007', 'E', 'X', 'P', 'L', 'A', 'I', 'N', '\020', '\226', '\003', '\022', '\017', '\n', '\n', 'E', 'X', 'P', 'R', 'E', 'S', 'S', 'I', 'O', 'N', '\020', '\227', '\003', '\022', '\016', '\n', '\t', 'E', 'X', 'T', 'E', 'N', 'S', 'I', 'O', 'N', '\020', '\230', '\003', '\022', '\r', '\n', '\010', 'E', 'X', 'T', 'E', 'R', 'N', 'A', 'L', '\020', '\231', '\003', '\022', '\014', '\n', '\007', 'E', 'X', 'T', 'R', 'A', 'C', 'T', '\020', '\232', '\003', '\022', '\014', '\n', '\007', 'F', 'A', 'L', 'S', 'E', '_', 'P', '\020', '\233', '\003', '\022', '\013', '\n', '\006', 'F', 'A', 'M', 'I', 'L', 'Y', '\020', '\234', '\003', '\022', '\n', '\n', '\005', 'F', 'E', 'T', 'C', 'H', '\020', '\235', '\003', '\022', '\013', '\n', '\006', 'F', 'I', 'L', 'T', 'E', 'R', '\020', '\236', '\003', '\022', '\014', '\n', '\007', 'F', 'I', 'R', 'S', 'T', '_', 'P', '\020', '\237', '\003', '\022', '\014', '\n', '\007', 'F', 'L', 'O', 'A', 'T', '_', 'P', '\020', '\240', '\003', '\022', '\016', '\n', '\t', 'F', 'O', 'L', 'L', 'O', 'W', 'I', 'N', 'G', '\020', '\241', '\003', '\022', '\010', '\n', '\003', 'F', 'O', 'R', '\020', '\242', '\003', '\022', '\n', '\n', '\005', 'F', 'O', 'R', 'C', 'E', '\020', '\243', '\003', '\022', '\014', '\n', '\007', 'F', 'O', 'R', 'E', 'I', 'G', 'N', '\020', '\244', '\003', '\022', '\014', '\n', '\007', 'F', 'O', 'R', 'W', 'A', 'R', 'D', '\020', '\245', '\003', '\022', '\013', '\n', '\006', 'F', 'R', 'E', 'E', 'Z', 'E', '\020', '\246', '\003', '\022', '\t', '\n', '\004', 'F', 'R', 'O', 'M', '\020', '\247', '\003', '\022', '\t', '\n', '\004', 'F', 'U', 'L', 'L', '\020', '\250', '\003', '\022', '\r', '\n', '\010', 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N', '\020', '\251', '\003', '\022', '\016', '\n', '\t', 'F', 'U', 'N', 'C', 'T', 'I', 'O', 'N', 'S', '\020', '\252', '\003', '\022', '\016', '\n', '\t', 'G', 'E', 'N', 'E', 'R', 'A', 'T', 'E', 'D', '\020', '\253', '\003', '\022', '\013', '\n', '\006', 'G', 'L', 'O', 'B', 'A', 'L', '\020', '\254', '\003', '\022', '\n', '\n', '\005', 'G', 'R', 'A', 'N', 'T', '\020', '\255', '\003', '\022', '\014', '\n', '\007', 'G', 'R', 'A', 'N', 'T', 'E', 'D', '\020', '\256', '\003', '\022', '\r', '\n', '\010', 'G', 'R', 'E', 'A', 'T', 'E', 'S', 'T', '\020', '\257', '\003', '\022', '\014', '\n', '\007', 'G', 'R', 'O', 'U', 'P', '_', 'P', '\020', '\260', '\003', '\022', '\r', '\n', '\010', 'G', 'R', 'O', 'U', 'P', 'I', 'N', 'G', '\020', '\261', '\003', '\022', '\013', '\n', '\006', 'G', 'R', 'O', 'U', 'P', 'S', '\020', '\262', '\003', '\022', '\014', '\n', '\007', 'H', 'A', 'N', 'D', 'L', 'E', 'R', '\020', '\263', '\003', '\022', '\013', '\n', '\006', 'H', 'A', 'V', 'I', 'N', 'G', '\020', '\264', '\003', '\022', '\r', '\n', '\010', 'H', 'E', 'A', 'D', 'E', 'R', '_', 'P', '\020', '\265', '\003', '\022', '\t', '\n', '\004', 'H', 'O', 'L', 'D', '\020', '\266', '\003', '\022', '\013', '\n', '\006', 'H', 'O', 'U', 'R', '_', 'P', '\020', '\267', '\003', '\022', '\017', '\n', '\n', 'I', 'D', 'E', 'N', 'T', 'I', 'T', 'Y', '_', 'P', '\020', '\270', '\003', '\022', '\t', '\n', '\004', 'I', 'F', '_', 'P', '\020', '\271', '\003', '\022', '\n', '\n', '\005', 'I', 'L', 'I', 'K', 'E', '\020', '\272', '\003', '\022', '\016', '\n', '\t', 'I', 'M', 'M', 'E', 'D', 'I', 'A', 'T', 'E', '\020', '\273', '\003', '\022', '\016', '\n', '\t', 'I', 'M', 'M', 'U', 'T', 'A', 'B', 'L', 'E', '\020', '\274', '\003', '\022', '\017', '\n', '\n', 'I', 'M', 'P', 'L', 'I', 'C', 'I', 'T', '_', 'P', '\020', '\275', '\003', '\022', '\r', '\n', '\010', 'I', 'M', 'P', 'O', 'R', 'T', '_', 'P', '\020', '\276', '\003', '\022', '\t', '\n', '\004', 'I', 'N', '_', 'P', '\020', '\277', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'C', 'L', 'U', 'D', 'E', '\020', '\300', '\003', '\022', '\016', '\n', '\t', 'I', 'N', 'C', 'L', 'U', 'D', 'I', 'N', 'G', '\020', '\301', '\003', '\022', '\016', '\n', '\t', 'I', 'N', 'C', 'R', 'E', 'M', 'E', 'N', 'T', '\020', '\302', '\003', '\022', '\n', '\n', '\005', 'I', 'N', 'D', 'E', 'X', '\020', '\303', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'D', 'E', 'X', 'E', 'S', '\020', '\304', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'H', 'E', 'R', 'I', 'T', '\020', '\305', '\003', '\022', '\r', '\n', '\010', 'I', 'N', 'H', 'E', 'R', 'I', 'T', 'S', '\020', '\306', '\003', '\022', '\016', '\n', '\t', 'I', 'N', 'I', 'T', 'I', 'A', 'L', 'L', 'Y', '\020', '\307', '\003', '\022', '\r', '\n', '\010', 'I', 'N', 'L', 'I', 'N', 'E', '_', 'P', '\020', '\310', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'N', 'E', 'R', '_', 'P', '\020', '\311', '\003', '\022', '\n', '\n', '\005', 'I', 'N', 'O', 'U', 'T', '\020', '\312', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'P', 'U', 'T', '_', 'P', '\020', '\313', '\003', '\022', '\020', '\n', '\013', 'I', 'N', 'S', 'E', 'N', 'S', 'I', 'T', 'I', 'V', 'E', '\020', '\314', '\003', '\022', '\013', '\n', '\006', 'I', 'N', 'S', 'E', 'R', 'T', '\020', '\315', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'S', 'T', 'E', 'A', 'D', '\020', '\316', '\003', '\022', '\n', '\n', '\005', 'I', 'N', 'T', '_', 'P', '\020', '\317', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'T', 'E', 'G', 'E', 'R', '\020', '\320', '\003', '\022', '\016', '\n', '\t', 'I', 'N', 'T', 'E', 'R', 'S', 'E', 'C', 'T', '\020', '\321', '\003', '\022', '\r', '\n', '\010', 'I', 'N', 'T', 'E', 'R', 'V', 'A', 'L', '\020', '\322', '\003', '\022', '\t', '\n', '\004', 'I', 'N', 'T', 'O', '\020', '\323', '\003', '\022', '\014', '\n', '\007', 'I', 'N', 'V', 'O', 'K', 'E', 'R', '\020', '\324', '\003', '\022', '\007', '\n', '\002', 'I', 'S', '\020', '\325', '\003', '\022', '\013', '\n', '\006', 'I', 'S', 'N', 'U', 'L', 'L', '\020', '\326', '\003', '\022', '\016', '\n', '\t', 'I', 'S', 'O', 'L', 'A', 'T', 'I', 'O', 'N', '\020', '\327', '\003', '\022', '\t', '\n', '\004', 'J', 'O', 'I', 'N', '\020', '\330', '\003', '\022', '\010', '\n', '\003', 'K', 'E', 'Y', '\020', '\331', '\003', '\022', '\n', '\n', '\005', 'L', 'A', 'B', 'E', 'L', '\020', '\332', '\003', '\022', '\r', '\n', '\010', 'L', 'A', 'N', 'G', 'U', 'A', 'G', 'E', '\020', '\333', '\003', '\022', '\014', '\n', '\007', 'L', 'A', 'R', 'G', 'E', '_', 'P', '\020', '\334', '\003', '\022', '\013', '\n', '\006', 'L', 'A', 'S', 'T', '_', 'P', '\020', '\335', '\003', '\022', '\016', '\n', '\t', 'L', 'A', 'T', 'E', 'R', 'A', 'L', '_', 'P', '\020', '\336', '\003', '\022', '\014', '\n', '\007', 'L', 'E', 'A', 'D', 'I', 'N', 'G', '\020', '\337', '\003', '\022', '\016', '\n', '\t', 'L', 'E', 'A', 'K', 'P', 'R', 'O', 'O', 'F', '\020', '\340', '\003', '\022', '\n', '\n', '\005', 'L', 'E', 'A', 'S', 'T', '\020', '\341', '\003', '\022', '\t', '\n', '\004', 'L', 'E', 'F', 'T', '\020', '\342', '\003', '\022', '\n', '\n', '\005', 'L', 'E', 'V', 'E', 'L', '\020', '\343', '\003', '\022', '\t', '\n', '\004', 'L', 'I', 'K', 'E', '\020', '\344', '\003', '\022', '\n', '\n', '\005', 'L', 'I', 'M', 'I', 'T', '\020', '\345', '\003', '\022', '\013', '\n', '\006', 'L', 'I', 'S', 'T', 'E', 'N', '\020', '\346', '\003', '\022', '\t', '\n', '\004', 'L', 'O', 'A', 'D', '\020', '\347', '\003', '\022', '\n', '\n', '\005', 'L', 'O', 'C', 'A', 'L', '\020', '\350', '\003', '\022', '\016', '\n', '\t', 'L', 'O', 'C', 'A', 'L', 'T', 'I', 'M', 'E', '\020', '\351', '\003', '\022', '\023', '\n', '\016', 'L', 'O', 'C', 'A', 'L', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\352', '\003', '\022', '\r', '\n', '\010', 'L', 'O', 'C', 'A', 'T', 'I', 'O', 'N', '\020', '\353', '\003', '\022', '\013', '\n', '\006', 'L', 'O', 'C', 'K', '_', 'P', '\020', '\354', '\003', '\022', '\013', '\n', '\006', 'L', 'O', 'C', 'K', 'E', 'D', '\020', '\355', '\003', '\022', '\013', '\n', '\006', 'L', 'O', 'G', 'G', 'E', 'D', '\020', '\356', '\003', '\022', '\014', '\n', '\007', 'M', 'A', 'P', 'P', 'I', 'N', 'G', '\020', '\357', '\003', '\022', '\n', '\n', '\005', 'M', 'A', 'T', 'C', 'H', '\020', '\360', '\003', '\022', '\021', '\n', '\014', 'M', 'A', 'T', 'E', 'R', 'I', 'A', 'L', 'I', 'Z', 'E', 'D', '\020', '\361', '\003', '\022', '\r', '\n', '\010', 'M', 'A', 'X', 'V', 'A', 'L', 'U', 'E', '\020', '\362', '\003', '\022', '\013', '\n', '\006', 'M', 'E', 'T', 'H', 'O', 'D', '\020', '\363', '\003', '\022', '\r', '\n', '\010', 'M', 'I', 'N', 'U', 'T', 'E', '_', 'P', '\020', '\364', '\003', '\022', '\r', '\n', '\010', 'M', 'I', 'N', 'V', 'A', 'L', 'U', 'E', '\020', '\365', '\003', '\022', '\t', '\n', '\004', 'M', 'O', 'D', 'E', '\020', '\366', '\003', '\022', '\014', '\n', '\007', 'M', 'O', 'N', 'T', 'H', '_', 'P', '\020', '\367', '\003', '\022', '\t', '\n', '\004', 'M', 'O', 'V', 'E', '\020', '\370', '\003', '\022', '\013', '\n', '\006', 'N', 'A', 'M', 'E', '_', 'P', '\020', '\371', '\003', '\022', '\n', '\n', '\005', 'N', 'A', 'M', 'E', 'S', '\020', '\372', '\003', '\022', '\r', '\n', '\010', 'N', 'A', 'T', 'I', 'O', 'N', 'A', 'L', '\020', '\373', '\003', '\022', '\014', '\n', '\007', 'N', 'A', 'T', 'U', 'R', 'A', 'L', '\020', '\374', '\003', '\022', '\n', '\n', '\005', 'N', 'C', 'H', 'A', 'R', '\020', '\375', '\003', '\022', '\010', '\n', '\003', 'N', 'E', 'W', '\020', '\376', '\003', '\022', '\t', '\n', '\004', 'N', 'E', 'X', 'T', '\020', '\377', '\003', '\022', '\010', '\n', '\003', 'N', 'F', 'C', '\020', '\200', '\004', '\022', '\010', '\n', '\003', 'N', 'F', 'D', '\020', '\201', '\004', '\022', '\t', '\n', '\004', 'N', 'F', 'K', 'C', '\020', '\202', '\004', '\022', '\t', '\n', '\004', 'N', 'F', 'K', 'D', '\020', '\203', '\004', '\022', '\007', '\n', '\002', 'N', 'O', '\020', '\204', '\004', '\022', '\t', '\n', '\004', 'N', 'O', 'N', 'E', '\020', '\205', '\004', '\022', '\016', '\n', '\t', 'N', 'O', 'R', 'M', 'A', 'L', 'I', 'Z', 'E', '\020', '\206', '\004', '\022', '\017', '\n', '\n', 'N', 'O', 'R', 'M', 'A', 'L', 'I', 'Z', 'E', 'D', '\020', '\207', '\004', '\022', '\010', '\n', '\003', 'N', 'O', 'T', '\020', '\210', '\004', '\022', '\014', '\n', '\007', 'N', 'O', 'T', 'H', 'I', 'N', 'G', '\020', '\211', '\004', '\022', '\013', '\n', '\006', 'N', 'O', 'T', 'I', 'F', 'Y', '\020', '\212', '\004', '\022', '\014', '\n', '\007', 'N', 'O', 'T', 'N', 'U', 'L', 'L', '\020', '\213', '\004', '\022', '\013', '\n', '\006', 'N', 'O', 'W', 'A', 'I', 'T', '\020', '\214', '\004', '\022', '\013', '\n', '\006', 'N', 'U', 'L', 'L', '_', 'P', '\020', '\215', '\004', '\022', '\013', '\n', '\006', 'N', 'U', 'L', 'L', 'I', 'F', '\020', '\216', '\004', '\022', '\014', '\n', '\007', 'N', 'U', 'L', 'L', 'S', '_', 'P', '\020', '\217', '\004', '\022', '\014', '\n', '\007', 'N', 'U', 'M', 'E', 'R', 'I', 'C', '\020', '\220', '\004', '\022', '\r', '\n', '\010', 'O', 'B', 'J', 'E', 'C', 'T', '_', 'P', '\020', '\221', '\004', '\022', '\007', '\n', '\002', 'O', 'F', '\020', '\222', '\004', '\022', '\010', '\n', '\003', 'O', 'F', 'F', '\020', '\223', '\004', '\022', '\013', '\n', '\006', 'O', 'F', 'F', 'S', 'E', 'T', '\020', '\224', '\004', '\022', '\t', '\n', '\004', 'O', 'I', 'D', 'S', '\020', '\225', '\004', '\022', '\010', '\n', '\003', 'O', 'L', 'D', '\020', '\226', '\004', '\022', '\007', '\n', '\002', 'O', 'N', '\020', '\227', '\004', '\022', '\t', '\n', '\004', 'O', 'N', 'L', 'Y', '\020', '\230', '\004', '\022', '\r', '\n', '\010', 'O', 'P', 'E', 'R', 'A', 'T', 'O', 'R', '\020', '\231', '\004', '\022', '\013', '\n', '\006', 'O', 'P', 'T', 'I', 'O', 'N', '\020', '\232', '\004', '\022', '\014', '\n', '\007', 'O', 'P', 'T', 'I', 'O', 'N', 'S', '\020', '\233', '\004', '\022', '\007', '\n', '\002', 'O', 'R', '\020', '\234', '\004', '\022', '\n', '\n', '\005', 'O', 'R', 'D', 'E', 'R', '\020', '\235', '\004', '\022', '\017', '\n', '\n', 'O', 'R', 'D', 'I', 'N', 'A', 'L', 'I', 'T', 'Y', '\020', '\236', '\004', '\022', '\013', '\n', '\006', 'O', 'T', 'H', 'E', 'R', 'S', '\020', '\237', '\004', '\022', '\n', '\n', '\005', 'O', 'U', 'T', '_', 'P', '\020', '\240', '\004', '\022', '\014', '\n', '\007', 'O', 'U', 'T', 'E', 'R', '_', 'P', '\020', '\241', '\004', '\022', '\t', '\n', '\004', 'O', 'V', 'E', 'R', '\020', '\242', '\004', '\022', '\r', '\n', '\010', 'O', 'V', 'E', 'R', 'L', 'A', 'P', 'S', '\020', '\243', '\004', '\022', '\014', '\n', '\007', 'O', 'V', 'E', 'R', 'L', 'A', 'Y', '\020', '\244', '\004', '\022', '\017', '\n', '\n', 'O', 'V', 'E', 'R', 'R', 'I', 'D', 'I', 'N', 'G', '\020', '\245', '\004', '\022', '\n', '\n', '\005', 'O', 'W', 'N', 'E', 'D', '\020', '\246', '\004', '\022', '\n', '\n', '\005', 'O', 'W', 'N', 'E', 'R', '\020', '\247', '\004', '\022', '\r', '\n', '\010', 'P', 'A', 'R', 'A', 'L', 'L', 'E', 'L', '\020', '\250', '\004', '\022', '\013', '\n', '\006', 'P', 'A', 'R', 'S', 'E', 'R', '\020', '\251', '\004', '\022', '\014', '\n', '\007', 'P', 'A', 'R', 'T', 'I', 'A', 'L', '\020', '\252', '\004', '\022', '\016', '\n', '\t', 'P', 'A', 'R', 'T', 'I', 'T', 'I', 'O', 'N', '\020', '\253', '\004', '\022', '\014', '\n', '\007', 'P', 'A', 'S', 'S', 'I', 'N', 'G', '\020', '\254', '\004', '\022', '\r', '\n', '\010', 'P', 'A', 'S', 'S', 'W', 'O', 'R', 'D', '\020', '\255', '\004', '\022', '\014', '\n', '\007', 'P', 'L', 'A', 'C', 'I', 'N', 'G', '\020', '\256', '\004', '\022', '\n', '\n', '\005', 'P', 'L', 'A', 'N', 'S', '\020', '\257', '\004', '\022', '\013', '\n', '\006', 'P', 'O', 'L', 'I', 'C', 'Y', '\020', '\260', '\004', '\022', '\r', '\n', '\010', 'P', 'O', 'S', 'I', 'T', 'I', 'O', 'N', '\020', '\261', '\004', '\022', '\016', '\n', '\t', 'P', 'R', 'E', 'C', 'E', 'D', 'I', 'N', 'G', '\020', '\262', '\004', '\022', '\016', '\n', '\t', 'P', 'R', 'E', 'C', 'I', 'S', 'I', 'O', 'N', '\020', '\263', '\004', '\022', '\r', '\n', '\010', 'P', 'R', 'E', 'S', 'E', 'R', 'V', 'E', '\020', '\264', '\004', '\022', '\014', '\n', '\007', 'P', 'R', 'E', 'P', 'A', 'R', 'E', '\020', '\265', '\004', '\022', '\r', '\n', '\010', 'P', 'R', 'E', 'P', 'A', 'R', 'E', 'D', '\020', '\266', '\004', '\022', '\014', '\n', '\007', 'P', 'R', 'I', 'M', 'A', 'R', 'Y', '\020', '\267', '\004', '\022', '\n', '\n', '\005', 'P', 'R', 'I', 'O', 'R', '\020', '\270', '\004', '\022', '\017', '\n', '\n', 'P', 'R', 'I', 'V', 'I', 'L', 'E', 'G', 'E', 'S', '\020', '\271', '\004', '\022', '\017', '\n', '\n', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'A', 'L', '\020', '\272', '\004', '\022', '\016', '\n', '\t', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'E', '\020', '\273', '\004', '\022', '\017', '\n', '\n', 'P', 'R', 'O', 'C', 'E', 'D', 'U', 'R', 'E', 'S', '\020', '\274', '\004', '\022', '\014', '\n', '\007', 'P', 'R', 'O', 'G', 'R', 'A', 'M', '\020', '\275', '\004', '\022', '\020', '\n', '\013', 'P', 'U', 'B', 'L', 'I', 'C', 'A', 'T', 'I', 'O', 'N', '\020', '\276', '\004', '\022', '\n', '\n', '\005', 'Q', 'U', 'O', 'T', 'E', '\020', '\277', '\004', '\022', '\n', '\n', '\005', 'R', 'A', 'N', 'G', 'E', '\020', '\300', '\004', '\022', '\t', '\n', '\004', 'R', 'E', 'A', 'D', '\020', '\301', '\004', '\022', '\t', '\n', '\004', 'R', 'E', 'A', 'L', '\020', '\302', '\004', '\022', '\r', '\n', '\010', 'R', 'E', 'A', 'S', 'S', 'I', 'G', 'N', '\020', '\303', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'C', 'H', 'E', 'C', 'K', '\020', '\304', '\004', '\022', '\016', '\n', '\t', 'R', 'E', 'C', 'U', 'R', 'S', 'I', 'V', 'E', '\020', '\305', '\004', '\022', '\010', '\n', '\003', 'R', 'E', 'F', '\020', '\306', '\004', '\022', '\017', '\n', '\n', 'R', 'E', 'F', 'E', 'R', 'E', 'N', 'C', 'E', 'S', '\020', '\307', '\004', '\022', '\020', '\n', '\013', 'R', 'E', 'F', 'E', 'R', 'E', 'N', 'C', 'I', 'N', 'G', '\020', '\310', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'F', 'R', 'E', 'S', 'H', '\020', '\311', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'I', 'N', 'D', 'E', 'X', '\020', '\312', '\004', '\022', '\017', '\n', '\n', 'R', 'E', 'L', 'A', 'T', 'I', 'V', 'E', '_', 'P', '\020', '\313', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'L', 'E', 'A', 'S', 'E', '\020', '\314', '\004', '\022', '\013', '\n', '\006', 'R', 'E', 'N', 'A', 'M', 'E', '\020', '\315', '\004', '\022', '\017', '\n', '\n', 'R', 'E', 'P', 'E', 'A', 'T', 'A', 'B', 'L', 'E', '\020', '\316', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'P', 'L', 'A', 'C', 'E', '\020', '\317', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'P', 'L', 'I', 'C', 'A', '\020', '\320', '\004', '\022', '\n', '\n', '\005', 'R', 'E', 'S', 'E', 'T', '\020', '\321', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'S', 'T', 'A', 'R', 'T', '\020', '\322', '\004', '\022', '\r', '\n', '\010', 'R', 'E', 'S', 'T', 'R', 'I', 'C', 'T', '\020', '\323', '\004', '\022', '\016', '\n', '\t', 'R', 'E', 'T', 'U', 'R', 'N', 'I', 'N', 'G', '\020', '\324', '\004', '\022', '\014', '\n', '\007', 'R', 'E', 'T', 'U', 'R', 'N', 'S', '\020', '\325', '\004', '\022', '\013', '\n', '\006', 'R', 'E', 'V', 'O', 'K', 'E', '\020', '\326', '\004', '\022', '\n', '\n', '\005', 'R', 'I', 'G', 'H', 'T', '\020', '\327', '\004', '\022', '\t', '\n', '\004', 'R', 'O', 'L', 'E', '\020', '\330', '\004', '\022', '\r', '\n', '\010', 'R', 'O', 'L', 'L', 'B', 'A', 'C', 'K', '\020', '\331', '\004', '\022', '\013', '\n', '\006', 'R', 'O', 'L', 'L', 'U', 'P', '\020', '\332', '\004', '\022', '\014', '\n', '\007', 'R', 'O', 'U', 'T', 'I', 'N', 'E', '\020', '\333', '\004', '\022', '\r', '\n', '\010', 'R', 'O', 'U', 'T', 'I', 'N', 'E', 'S', '\020', '\334', '\004', '\022', '\010', '\n', '\003', 'R', 'O', 'W', '\020', '\335', '\004', '\022', '\t', '\n', '\004', 'R', 'O', 'W', 'S', '\020', '\336', '\004', '\022', '\t', '\n', '\004', 'R', 'U', 'L', 'E', '\020', '\337', '\004', '\022', '\016', '\n', '\t', 'S', 'A', 'V', 'E', 'P', 'O', 'I', 'N', 'T', '\020', '\340', '\004', '\022', '\013', '\n', '\006', 'S', 'C', 'H', 'E', 'M', 'A', '\020', '\341', '\004', '\022', '\014', '\n', '\007', 'S', 'C', 'H', 'E', 'M', 'A', 'S', '\020', '\342', '\004', '\022', '\013', '\n', '\006', 'S', 'C', 'R', 'O', 'L', 'L', '\020', '\343', '\004', '\022', '\013', '\n', '\006', 'S', 'E', 'A', 'R', 'C', 'H', '\020', '\344', '\004', '\022', '\r', '\n', '\010', 'S', 'E', 'C', 'O', 'N', 'D', '_', 'P', '\020', '\345', '\004', '\022', '\r', '\n', '\010', 'S', 'E', 'C', 'U', 'R', 'I', 'T', 'Y', '\020', '\346', '\004', '\022', '\013', '\n', '\006', 'S', 'E', 'L', 'E', 'C', 'T', '\020', '\347', '\004', '\022', '\r', '\n', '\010', 'S', 'E', 'Q', 'U', 'E', 'N', 'C', 'E', '\020', '\350', '\004', '\022', '\016', '\n', '\t', 'S', 'E', 'Q', 'U', 'E', 'N', 'C', 'E', 'S', '\020', '\351', '\004', '\022', '\021', '\n', '\014', 'S', 'E', 'R', 'I', 'A', 'L', 'I', 'Z', 'A', 'B', 'L', 'E', '\020', '\352', '\004', '\022', '\013', '\n', '\006', 'S', 'E', 'R', 'V', 'E', 'R', '\020', '\353', '\004', '\022', '\014', '\n', '\007', 'S', 'E', 'S', 'S', 'I', 'O', 'N', '\020', '\354', '\004', '\022', '\021', '\n', '\014', 'S', 'E', 'S', 'S', 'I', 'O', 'N', '_', 'U', 'S', 'E', 'R', '\020', '\355', '\004', '\022', '\010', '\n', '\003', 'S', 'E', 'T', '\020', '\356', '\004', '\022', '\t', '\n', '\004', 'S', 'E', 'T', 'S', '\020', '\357', '\004', '\022', '\n', '\n', '\005', 'S', 'E', 'T', 'O', 'F', '\020', '\360', '\004', '\022', '\n', '\n', '\005', 'S', 'H', 'A', 'R', 'E', '\020', '\361', '\004', '\022', '\t', '\n', '\004', 'S', 'H', 'O', 'W', '\020', '\362', '\004', '\022', '\014', '\n', '\007', 'S', 'I', 'M', 'I', 'L', 'A', 'R', '\020', '\363', '\004', '\022', '\013', '\n', '\006', 'S', 'I', 'M', 'P', 'L', 'E', '\020', '\364', '\004', '\022', '\t', '\n', '\004', 'S', 'K', 'I', 'P', '\020', '\365', '\004', '\022', '\r', '\n', '\010', 'S', 'M', 'A', 'L', 'L', 'I', 'N', 'T', '\020', '\366', '\004', '\022', '\r', '\n', '\010', 'S', 'N', 'A', 'P', 'S', 'H', 'O', 'T', '\020', '\367', '\004', '\022', '\t', '\n', '\004', 'S', 'O', 'M', 'E', '\020', '\370', '\004', '\022', '\n', '\n', '\005', 'S', 'Q', 'L', '_', 'P', '\020', '\371', '\004', '\022', '\013', '\n', '\006', 'S', 'T', 'A', 'B', 'L', 'E', '\020', '\372', '\004', '\022', '\021', '\n', '\014', 'S', 'T', 'A', 'N', 'D', 'A', 'L', 'O', 'N', 'E', '_', 'P', '\020', '\373', '\004', '\022', '\n', '\n', '\005', 'S', 'T', 'A', 'R', 'T', '\020', '\374', '\004', '\022', '\016', '\n', '\t', 'S', 'T', 'A', 'T', 'E', 'M', 'E', 'N', 'T', '\020', '\375', '\004', '\022', '\017', '\n', '\n', 'S', 'T', 'A', 'T', 'I', 'S', 'T', 'I', 'C', 'S', '\020', '\376', '\004', '\022', '\n', '\n', '\005', 'S', 'T', 'D', 'I', 'N', '\020', '\377', '\004', '\022', '\013', '\n', '\006', 'S', 'T', 'D', 'O', 'U', 'T', '\020', '\200', '\005', '\022', '\014', '\n', '\007', 'S', 'T', 'O', 'R', 'A', 'G', 'E', '\020', '\201', '\005', '\022', '\013', '\n', '\006', 'S', 'T', 'O', 'R', 'E', 'D', '\020', '\202', '\005', '\022', '\r', '\n', '\010', 'S', 'T', 'R', 'I', 'C', 'T', '_', 'P', '\020', '\203', '\005', '\022', '\014', '\n', '\007', 'S', 'T', 'R', 'I', 'P', '_', 'P', '\020', '\204', '\005', '\022', '\021', '\n', '\014', 'S', 'U', 'B', 'S', 'C', 'R', 'I', 'P', 'T', 'I', 'O', 'N', '\020', '\205', '\005', '\022', '\016', '\n', '\t', 'S', 'U', 'B', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\206', '\005', '\022', '\014', '\n', '\007', 'S', 'U', 'P', 'P', 'O', 'R', 'T', '\020', '\207', '\005', '\022', '\016', '\n', '\t', 'S', 'Y', 'M', 'M', 'E', 'T', 'R', 'I', 'C', '\020', '\210', '\005', '\022', '\n', '\n', '\005', 'S', 'Y', 'S', 'I', 'D', '\020', '\211', '\005', '\022', '\r', '\n', '\010', 'S', 'Y', 'S', 'T', 'E', 'M', '_', 'P', '\020', '\212', '\005', '\022', '\n', '\n', '\005', 'T', 'A', 'B', 'L', 'E', '\020', '\213', '\005', '\022', '\013', '\n', '\006', 'T', 'A', 'B', 'L', 'E', 'S', '\020', '\214', '\005', '\022', '\020', '\n', '\013', 'T', 'A', 'B', 'L', 'E', 'S', 'A', 'M', 'P', 'L', 'E', '\020', '\215', '\005', '\022', '\017', '\n', '\n', 'T', 'A', 'B', 'L', 'E', 'S', 'P', 'A', 'C', 'E', '\020', '\216', '\005', '\022', '\t', '\n', '\004', 'T', 'E', 'M', 'P', '\020', '\217', '\005', '\022', '\r', '\n', '\010', 'T', 'E', 'M', 'P', 'L', 'A', 'T', 'E', '\020', '\220', '\005', '\022', '\016', '\n', '\t', 'T', 'E', 'M', 'P', 'O', 'R', 'A', 'R', 'Y', '\020', '\221', '\005', '\022', '\013', '\n', '\006', 'T', 'E', 'X', 'T', '_', 'P', '\020', '\222', '\005', '\022', '\t', '\n', '\004', 'T', 'H', 'E', 'N', '\020', '\223', '\005', '\022', '\t', '\n', '\004', 'T', 'I', 'E', 'S', '\020', '\224', '\005', '\022', '\t', '\n', '\004', 'T', 'I', 'M', 'E', '\020', '\225', '\005', '\022', '\016', '\n', '\t', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\226', '\005', '\022', '\007', '\n', '\002', 'T', 'O', '\020', '\227', '\005', '\022', '\r', '\n', '\010', 'T', 'R', 'A', 'I', 'L', 'I', 'N', 'G', '\020', '\230', '\005', '\022', '\020', '\n', '\013', 'T', 'R', 'A', 'N', 'S', 'A', 'C', 'T', 'I', 'O', 'N', '\020', '\231', '\005', '\022', '\016', '\n', '\t', 'T', 'R', 'A', 'N', 'S', 'F', 'O', 'R', 'M', '\020', '\232', '\005', '\022', '\n', '\n', '\005', 'T', 'R', 'E', 'A', 'T', '\020', '\233', '\005', '\022', '\014', '\n', '\007', 'T', 'R', 'I', 'G', 'G', 'E', 'R', '\020', '\234', '\005', '\022', '\t', '\n', '\004', 'T', 'R', 'I', 'M', '\020', '\235', '\005', '\022', '\013', '\n', '\006', 'T', 'R', 'U', 'E', '_', 'P', '\020', '\236', '\005', '\022', '\r', '\n', '\010', 'T', 'R', 'U', 'N', 'C', 'A', 'T', 'E', '\020', '\237', '\005', '\022', '\014', '\n', '\007', 'T', 'R', 'U', 'S', 'T', 'E', 'D', '\020', '\240', '\005', '\022', '\013', '\n', '\006', 'T', 'Y', 'P', 'E', '_', 'P', '\020', '\241', '\005', '\022', '\014', '\n', '\007', 'T', 'Y', 'P', 'E', 'S', '_', 'P', '\020', '\242', '\005', '\022', '\014', '\n', '\007', 'U', 'E', 'S', 'C', 'A', 'P', 'E', '\020', '\243', '\005', '\022', '\016', '\n', '\t', 'U', 'N', 'B', 'O', 'U', 'N', 'D', 'E', 'D', '\020', '\244', '\005', '\022', '\020', '\n', '\013', 'U', 'N', 'C', 'O', 'M', 'M', 'I', 'T', 'T', 'E', 'D', '\020', '\245', '\005', '\022', '\020', '\n', '\013', 'U', 'N', 'E', 'N', 'C', 'R', 'Y', 'P', 'T', 'E', 'D', '\020', '\246', '\005', '\022', '\n', '\n', '\005', 'U', 'N', 'I', 'O', 'N', '\020', '\247', '\005', '\022', '\013', '\n', '\006', 'U', 'N', 'I', 'Q', 'U', 'E', '\020', '\250', '\005', '\022', '\014', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\251', '\005', '\022', '\r', '\n', '\010', 'U', 'N', 'L', 'I', 'S', 'T', 'E', 'N', '\020', '\252', '\005', '\022', '\r', '\n', '\010', 'U', 'N', 'L', 'O', 'G', 'G', 'E', 'D', '\020', '\253', '\005', '\022', '\n', '\n', '\005', 'U', 'N', 'T', 'I', 'L', '\020', '\254', '\005', '\022', '\013', '\n', '\006', 'U', 'P', 'D', 'A', 'T', 'E', '\020', '\255', '\005', '\022', '\t', '\n', '\004', 'U', 'S', 'E', 'R', '\020', '\256', '\005', '\022', '\n', '\n', '\005', 'U', 'S', 'I', 'N', 'G', '\020', '\257', '\005', '\022', '\013', '\n', '\006', 'V', 'A', 'C', 'U', 'U', 'M', '\020', '\260', '\005', '\022', '\n', '\n', '\005', 'V', 'A', 'L', 'I', 'D', '\020', '\261', '\005', '\022', '\r', '\n', '\010', 'V', 'A', 'L', 'I', 'D', 'A', 'T', 'E', '\020', '\262', '\005', '\022', '\016', '\n', '\t', 'V', 'A', 'L', 'I', 'D', 'A', 'T', 'O', 'R', '\020', '\263', '\005', '\022', '\014', '\n', '\007', 'V', 'A', 'L', 'U', 'E', '_', 'P', '\020', '\264', '\005', '\022', '\013', '\n', '\006', 'V', 'A', 'L', 'U', 'E', 'S', '\020', '\265', '\005', '\022', '\014', '\n', '\007', 'V', 'A', 'R', 'C', 'H', 'A', 'R', '\020', '\266', '\005', '\022', '\r', '\n', '\010', 'V', 'A', 'R', 'I', 'A', 'D', 'I', 'C', '\020', '\267', '\005', '\022', '\014', '\n', '\007', 'V', 'A', 'R', 'Y', 'I', 'N', 'G', '\020', '\270', '\005', '\022', '\014', '\n', '\007', 'V', 'E', 'R', 'B', 'O', 'S', 'E', '\020', '\271', '\005', '\022', '\016', '\n', '\t', 'V', 'E', 'R', 'S', 'I', 'O', 'N', '_', 'P', '\020', '\272', '\005', '\022', '\t', '\n', '\004', 'V', 'I', 'E', 'W', '\020', '\273', '\005', '\022', '\n', '\n', '\005', 'V', 'I', 'E', 'W', 'S', '\020', '\274', '\005', '\022', '\r', '\n', '\010', 'V', 'O', 'L', 'A', 'T', 'I', 'L', 'E', '\020', '\275', '\005', '\022', '\t', '\n', '\004', 'W', 'H', 'E', 'N', '\020', '\276', '\005', '\022', '\n', '\n', '\005', 'W', 'H', 'E', 'R', 'E', '\020', '\277', '\005', '\022', '\021', '\n', '\014', 'W', 'H', 'I', 'T', 'E', 'S', 'P', 'A', 'C', 'E', '_', 'P', '\020', '\300', '\005', '\022', '\013', '\n', '\006', 'W', 'I', 'N', 'D', 'O', 'W', '\020', '\301', '\005', '\022', '\t', '\n', '\004', 'W', 'I', 'T', 'H', '\020', '\302', '\005', '\022', '\013', '\n', '\006', 'W', 'I', 'T', 'H', 'I', 'N', '\020', '\303', '\005', '\022', '\014', '\n', '\007', 'W', 'I', 'T', 'H', 'O', 'U', 'T', '\020', '\304', '\005', '\022', '\t', '\n', '\004', 'W', 'O', 'R', 'K', '\020', '\305', '\005', '\022', '\014', '\n', '\007', 'W', 'R', 'A', 'P', 'P', 'E', 'R', '\020', '\306', '\005', '\022', '\n', '\n', '\005', 'W', 'R', 'I', 'T', 'E', '\020', '\307', '\005', '\022', '\n', '\n', '\005', 'X', 'M', 'L', '_', 'P', '\020', '\310', '\005', '\022', '\022', '\n', '\r', 'X', 'M', 'L', 'A', 'T', 'T', 'R', 'I', 'B', 'U', 'T', 'E', 'S', '\020', '\311', '\005', '\022', '\016', '\n', '\t', 'X', 'M', 'L', 'C', 'O', 'N', 'C', 'A', 'T', '\020', '\312', '\005', '\022', '\017', '\n', '\n', 'X', 'M', 'L', 'E', 'L', 'E', 'M', 'E', 'N', 'T', '\020', '\313', '\005', '\022', '\016', '\n', '\t', 'X', 'M', 'L', 'E', 'X', 'I', 'S', 'T', 'S', '\020', '\314', '\005', '\022', '\016', '\n', '\t', 'X', 'M', 'L', 'F', 'O', 'R', 'E', 'S', 'T', '\020', '\315', '\005', '\022', '\022', '\n', '\r', 'X', 'M', 'L', 'N', 'A', 'M', 'E', 'S', 'P', 'A', 'C', 'E', 'S', '\020', '\316', '\005', '\022', '\r', '\n', '\010', 'X', 'M', 'L', 'P', 'A', 'R', 'S', 'E', '\020', '\317', '\005', '\022', '\n', '\n', '\005', 'X', 'M', 'L', 'P', 'I', '\020', '\320', '\005', '\022', '\014', '\n', '\007', 'X', 'M', 'L', 'R', 'O', 'O', 'T', '\020', '\321', '\005', '\022', '\021', '\n', '\014', 'X', 'M', 'L', 'S', 'E', 'R', 'I', 'A', 'L', 'I', 'Z', 'E', '\020', '\322', '\005', '\022', '\r', '\n', '\010', 'X', 'M', 'L', 'T', 'A', 'B', 'L', 'E', '\020', '\323', '\005', '\022', '\013', '\n', '\006', 'Y', 'E', 'A', 'R', '_', 'P', '\020', '\324', '\005', '\022', '\n', '\n', '\005', 'Y', 'E', 'S', '_', 'P', '\020', '\325', '\005', '\022', '\t', '\n', '\004', 'Z', 'O', 'N', 'E', '\020', '\326', '\005', '\022', '\013', '\n', '\006', 'N', 'O', 'T', '_', 'L', 'A', '\020', '\327', '\005', '\022', '\r', '\n', '\010', 'N', 'U', 'L', 'L', 'S', '_', 'L', 'A', '\020', '\330', '\005', '\022', '\014', '\n', '\007', 'W', 'I', 'T', 'H', '_', 'L', 'A', '\020', '\331', '\005', '\022', '\016', '\n', '\t', 'P', 'O', 'S', 'T', 'F', 'I', 'X', 'O', 'P', '\020', '\332', '\005', '\022', '\013', '\n', '\006', 'U', 'M', 'I', 'N', 'U', 'S', '\020', '\333', '\005', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3', '\0' }; static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_protobuf_2fpg_5fquery_2eproto_deps[1] = { }; static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_protobuf_2fpg_5fquery_2eproto_sccs[35] = { &scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base, &scc_info_A_Star_protobuf_2fpg_5fquery_2eproto.base, &scc_info_AlterEventTrigStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_BitString_protobuf_2fpg_5fquery_2eproto.base, &scc_info_Bitmapset_protobuf_2fpg_5fquery_2eproto.base, &scc_info_CallContext_protobuf_2fpg_5fquery_2eproto.base, &scc_info_CheckPointStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ClosePortalStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_DeallocateStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_DiscardStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_DropSubscriptionStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_DropTableSpaceStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_DropUserMappingStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_Expr_protobuf_2fpg_5fquery_2eproto.base, &scc_info_FetchStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_Float_protobuf_2fpg_5fquery_2eproto.base, &scc_info_InlineCodeBlock_protobuf_2fpg_5fquery_2eproto.base, &scc_info_Integer_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ListenStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_LoadStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_NotifyStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_Null_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ParamRef_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ParseResult_protobuf_2fpg_5fquery_2eproto.base, &scc_info_RangeTblRef_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ReplicaIdentityStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_RoleSpec_protobuf_2fpg_5fquery_2eproto.base, &scc_info_RowMarkClause_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ScanResult_protobuf_2fpg_5fquery_2eproto.base, &scc_info_ScanToken_protobuf_2fpg_5fquery_2eproto.base, &scc_info_SortGroupClause_protobuf_2fpg_5fquery_2eproto.base, &scc_info_String_protobuf_2fpg_5fquery_2eproto.base, &scc_info_TriggerTransition_protobuf_2fpg_5fquery_2eproto.base, &scc_info_UnlistenStmt_protobuf_2fpg_5fquery_2eproto.base, &scc_info_VariableShowStmt_protobuf_2fpg_5fquery_2eproto.base, }; static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_protobuf_2fpg_5fquery_2eproto_once; const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_protobuf_2fpg_5fquery_2eproto = { false, false, descriptor_table_protodef_protobuf_2fpg_5fquery_2eproto, "protobuf/pg_query.proto", 82111, &descriptor_table_protobuf_2fpg_5fquery_2eproto_once, descriptor_table_protobuf_2fpg_5fquery_2eproto_sccs, descriptor_table_protobuf_2fpg_5fquery_2eproto_deps, 35, 0, schemas, file_default_instances, TableStruct_protobuf_2fpg_5fquery_2eproto::offsets, file_level_metadata_protobuf_2fpg_5fquery_2eproto, 233, file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto, file_level_service_descriptors_protobuf_2fpg_5fquery_2eproto, }; // Force running AddDescriptors() at dynamic initialization time. static bool dynamic_init_dummy_protobuf_2fpg_5fquery_2eproto = (static_cast(::PROTOBUF_NAMESPACE_ID::internal::AddDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto)), true); namespace pg_query { const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OverridingKind_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[0]; } bool OverridingKind_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* QuerySource_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[1]; } bool QuerySource_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SortByDir_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[2]; } bool SortByDir_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SortByNulls_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[3]; } bool SortByNulls_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* A_Expr_Kind_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[4]; } bool A_Expr_Kind_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RoleSpecType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[5]; } bool RoleSpecType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TableLikeOption_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[6]; } bool TableLikeOption_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DefElemAction_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[7]; } bool DefElemAction_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PartitionRangeDatumKind_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[8]; } bool PartitionRangeDatumKind_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RTEKind_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[9]; } bool RTEKind_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* WCOKind_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[10]; } bool WCOKind_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GroupingSetKind_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[11]; } bool GroupingSetKind_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CTEMaterialize_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[12]; } bool CTEMaterialize_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOperation_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[13]; } bool SetOperation_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[14]; } bool ObjectType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: case 50: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DropBehavior_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[15]; } bool DropBehavior_IsValid(int value) { switch (value) { case 0: case 1: case 2: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterTableType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[16]; } bool AlterTableType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 39: case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 58: case 59: case 60: case 61: case 62: case 63: case 64: case 65: case 66: case 67: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GrantTargetType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[17]; } bool GrantTargetType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* VariableSetKind_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[18]; } bool VariableSetKind_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ConstrType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[19]; } bool ConstrType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ImportForeignSchemaType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[20]; } bool ImportForeignSchemaType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RoleStmtType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[21]; } bool RoleStmtType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FetchDirection_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[22]; } bool FetchDirection_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FunctionParameterMode_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[23]; } bool FunctionParameterMode_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TransactionStmtKind_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[24]; } bool TransactionStmtKind_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ViewCheckOption_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[25]; } bool ViewCheckOption_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ClusterOption_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[26]; } bool ClusterOption_IsValid(int value) { switch (value) { case 0: case 1: case 2: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DiscardMode_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[27]; } bool DiscardMode_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ReindexObjectType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[28]; } bool ReindexObjectType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterTSConfigType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[29]; } bool AlterTSConfigType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterSubscriptionType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[30]; } bool AlterSubscriptionType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OnCommitAction_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[31]; } bool OnCommitAction_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ParamKind_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[32]; } bool ParamKind_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CoercionContext_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[33]; } bool CoercionContext_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CoercionForm_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[34]; } bool CoercionForm_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* BoolExprType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[35]; } bool BoolExprType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SubLinkType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[36]; } bool SubLinkType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RowCompareType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[37]; } bool RowCompareType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MinMaxOp_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[38]; } bool MinMaxOp_IsValid(int value) { switch (value) { case 0: case 1: case 2: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SQLValueFunctionOp_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[39]; } bool SQLValueFunctionOp_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* XmlExprOp_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[40]; } bool XmlExprOp_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* XmlOptionType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[41]; } bool XmlOptionType_IsValid(int value) { switch (value) { case 0: case 1: case 2: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* NullTestType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[42]; } bool NullTestType_IsValid(int value) { switch (value) { case 0: case 1: case 2: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* BoolTestType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[43]; } bool BoolTestType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CmdType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[44]; } bool CmdType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* JoinType_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[45]; } bool JoinType_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AggStrategy_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[46]; } bool AggStrategy_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AggSplit_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[47]; } bool AggSplit_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOpCmd_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[48]; } bool SetOpCmd_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOpStrategy_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[49]; } bool SetOpStrategy_IsValid(int value) { switch (value) { case 0: case 1: case 2: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OnConflictAction_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[50]; } bool OnConflictAction_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LimitOption_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[51]; } bool LimitOption_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockClauseStrength_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[52]; } bool LockClauseStrength_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: case 5: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockWaitPolicy_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[53]; } bool LockWaitPolicy_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockTupleMode_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[54]; } bool LockTupleMode_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* KeywordKind_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[55]; } bool KeywordKind_IsValid(int value) { switch (value) { case 0: case 1: case 2: case 3: case 4: return true; default: return false; } } const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Token_descriptor() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_protobuf_2fpg_5fquery_2eproto); return file_level_enum_descriptors_protobuf_2fpg_5fquery_2eproto[56]; } bool Token_IsValid(int value) { switch (value) { case 0: case 37: case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 58: case 59: case 60: case 61: case 62: case 63: case 91: case 93: case 94: case 258: case 259: case 260: case 261: case 262: case 263: case 264: case 265: case 266: case 267: case 268: case 269: case 270: case 271: case 272: case 273: case 274: case 275: case 276: case 277: case 278: case 279: case 280: case 281: case 282: case 283: case 284: case 285: case 286: case 287: case 288: case 289: case 290: case 291: case 292: case 293: case 294: case 295: case 296: case 297: case 298: case 299: case 300: case 301: case 302: case 303: case 304: case 305: case 306: case 307: case 308: case 309: case 310: case 311: case 312: case 313: case 314: case 315: case 316: case 317: case 318: case 319: case 320: case 321: case 322: case 323: case 324: case 325: case 326: case 327: case 328: case 329: case 330: case 331: case 332: case 333: case 334: case 335: case 336: case 337: case 338: case 339: case 340: case 341: case 342: case 343: case 344: case 345: case 346: case 347: case 348: case 349: case 350: case 351: case 352: case 353: case 354: case 355: case 356: case 357: case 358: case 359: case 360: case 361: case 362: case 363: case 364: case 365: case 366: case 367: case 368: case 369: case 370: case 371: case 372: case 373: case 374: case 375: case 376: case 377: case 378: case 379: case 380: case 381: case 382: case 383: case 384: case 385: case 386: case 387: case 388: case 389: case 390: case 391: case 392: case 393: case 394: case 395: case 396: case 397: case 398: case 399: case 400: case 401: case 402: case 403: case 404: case 405: case 406: case 407: case 408: case 409: case 410: case 411: case 412: case 413: case 414: case 415: case 416: case 417: case 418: case 419: case 420: case 421: case 422: case 423: case 424: case 425: case 426: case 427: case 428: case 429: case 430: case 431: case 432: case 433: case 434: case 435: case 436: case 437: case 438: case 439: case 440: case 441: case 442: case 443: case 444: case 445: case 446: case 447: case 448: case 449: case 450: case 451: case 452: case 453: case 454: case 455: case 456: case 457: case 458: case 459: case 460: case 461: case 462: case 463: case 464: case 465: case 466: case 467: case 468: case 469: case 470: case 471: case 472: case 473: case 474: case 475: case 476: case 477: case 478: case 479: case 480: case 481: case 482: case 483: case 484: case 485: case 486: case 487: case 488: case 489: case 490: case 491: case 492: case 493: case 494: case 495: case 496: case 497: case 498: case 499: case 500: case 501: case 502: case 503: case 504: case 505: case 506: case 507: case 508: case 509: case 510: case 511: case 512: case 513: case 514: case 515: case 516: case 517: case 518: case 519: case 520: case 521: case 522: case 523: case 524: case 525: case 526: case 527: case 528: case 529: case 530: case 531: case 532: case 533: case 534: case 535: case 536: case 537: case 538: case 539: case 540: case 541: case 542: case 543: case 544: case 545: case 546: case 547: case 548: case 549: case 550: case 551: case 552: case 553: case 554: case 555: case 556: case 557: case 558: case 559: case 560: case 561: case 562: case 563: case 564: case 565: case 566: case 567: case 568: case 569: case 570: case 571: case 572: case 573: case 574: case 575: case 576: case 577: case 578: case 579: case 580: case 581: case 582: case 583: case 584: case 585: case 586: case 587: case 588: case 589: case 590: case 591: case 592: case 593: case 594: case 595: case 596: case 597: case 598: case 599: case 600: case 601: case 602: case 603: case 604: case 605: case 606: case 607: case 608: case 609: case 610: case 611: case 612: case 613: case 614: case 615: case 616: case 617: case 618: case 619: case 620: case 621: case 622: case 623: case 624: case 625: case 626: case 627: case 628: case 629: case 630: case 631: case 632: case 633: case 634: case 635: case 636: case 637: case 638: case 639: case 640: case 641: case 642: case 643: case 644: case 645: case 646: case 647: case 648: case 649: case 650: case 651: case 652: case 653: case 654: case 655: case 656: case 657: case 658: case 659: case 660: case 661: case 662: case 663: case 664: case 665: case 666: case 667: case 668: case 669: case 670: case 671: case 672: case 673: case 674: case 675: case 676: case 677: case 678: case 679: case 680: case 681: case 682: case 683: case 684: case 685: case 686: case 687: case 688: case 689: case 690: case 691: case 692: case 693: case 694: case 695: case 696: case 697: case 698: case 699: case 700: case 701: case 702: case 703: case 704: case 705: case 706: case 707: case 708: case 709: case 710: case 711: case 712: case 713: case 714: case 715: case 716: case 717: case 718: case 719: case 720: case 721: case 722: case 723: case 724: case 725: case 726: case 727: case 728: case 729: case 730: case 731: return true; default: return false; } } // =================================================================== class ParseResult::_Internal { public: }; ParseResult::ParseResult(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), stmts_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ParseResult) } ParseResult::ParseResult(const ParseResult& from) : ::PROTOBUF_NAMESPACE_ID::Message(), stmts_(from.stmts_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); version_ = from.version_; // @@protoc_insertion_point(copy_constructor:pg_query.ParseResult) } void ParseResult::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ParseResult_protobuf_2fpg_5fquery_2eproto.base); version_ = 0; } ParseResult::~ParseResult() { // @@protoc_insertion_point(destructor:pg_query.ParseResult) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ParseResult::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void ParseResult::ArenaDtor(void* object) { ParseResult* _this = reinterpret_cast< ParseResult* >(object); (void)_this; } void ParseResult::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ParseResult::SetCachedSize(int size) const { _cached_size_.Set(size); } const ParseResult& ParseResult::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ParseResult_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ParseResult::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ParseResult) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; stmts_.Clear(); version_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ParseResult::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // int32 version = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.RawStmt stmts = 2; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_stmts(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ParseResult::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ParseResult) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // int32 version = 1; if (this->version() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_version(), target); } // repeated .pg_query.RawStmt stmts = 2; for (unsigned int i = 0, n = static_cast(this->_internal_stmts_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_stmts(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ParseResult) return target; } size_t ParseResult::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ParseResult) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.RawStmt stmts = 2; total_size += 1UL * this->_internal_stmts_size(); for (const auto& msg : this->stmts_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // int32 version = 1; if (this->version() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_version()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ParseResult::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ParseResult) GOOGLE_DCHECK_NE(&from, this); const ParseResult* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ParseResult) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ParseResult) MergeFrom(*source); } } void ParseResult::MergeFrom(const ParseResult& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ParseResult) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; stmts_.MergeFrom(from.stmts_); if (from.version() != 0) { _internal_set_version(from._internal_version()); } } void ParseResult::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ParseResult) if (&from == this) return; Clear(); MergeFrom(from); } void ParseResult::CopyFrom(const ParseResult& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ParseResult) if (&from == this) return; Clear(); MergeFrom(from); } bool ParseResult::IsInitialized() const { return true; } void ParseResult::InternalSwap(ParseResult* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); stmts_.InternalSwap(&other->stmts_); swap(version_, other->version_); } ::PROTOBUF_NAMESPACE_ID::Metadata ParseResult::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ScanResult::_Internal { public: }; ScanResult::ScanResult(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), tokens_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ScanResult) } ScanResult::ScanResult(const ScanResult& from) : ::PROTOBUF_NAMESPACE_ID::Message(), tokens_(from.tokens_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); version_ = from.version_; // @@protoc_insertion_point(copy_constructor:pg_query.ScanResult) } void ScanResult::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ScanResult_protobuf_2fpg_5fquery_2eproto.base); version_ = 0; } ScanResult::~ScanResult() { // @@protoc_insertion_point(destructor:pg_query.ScanResult) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ScanResult::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void ScanResult::ArenaDtor(void* object) { ScanResult* _this = reinterpret_cast< ScanResult* >(object); (void)_this; } void ScanResult::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ScanResult::SetCachedSize(int size) const { _cached_size_.Set(size); } const ScanResult& ScanResult::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ScanResult_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ScanResult::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ScanResult) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; tokens_.Clear(); version_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ScanResult::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // int32 version = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.ScanToken tokens = 2; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_tokens(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ScanResult::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ScanResult) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // int32 version = 1; if (this->version() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_version(), target); } // repeated .pg_query.ScanToken tokens = 2; for (unsigned int i = 0, n = static_cast(this->_internal_tokens_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_tokens(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ScanResult) return target; } size_t ScanResult::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ScanResult) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.ScanToken tokens = 2; total_size += 1UL * this->_internal_tokens_size(); for (const auto& msg : this->tokens_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // int32 version = 1; if (this->version() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_version()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ScanResult::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ScanResult) GOOGLE_DCHECK_NE(&from, this); const ScanResult* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ScanResult) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ScanResult) MergeFrom(*source); } } void ScanResult::MergeFrom(const ScanResult& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ScanResult) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; tokens_.MergeFrom(from.tokens_); if (from.version() != 0) { _internal_set_version(from._internal_version()); } } void ScanResult::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ScanResult) if (&from == this) return; Clear(); MergeFrom(from); } void ScanResult::CopyFrom(const ScanResult& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ScanResult) if (&from == this) return; Clear(); MergeFrom(from); } bool ScanResult::IsInitialized() const { return true; } void ScanResult::InternalSwap(ScanResult* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); tokens_.InternalSwap(&other->tokens_); swap(version_, other->version_); } ::PROTOBUF_NAMESPACE_ID::Metadata ScanResult::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Node::_Internal { public: static const ::pg_query::Alias& alias(const Node* msg); static const ::pg_query::RangeVar& range_var(const Node* msg); static const ::pg_query::TableFunc& table_func(const Node* msg); static const ::pg_query::Expr& expr(const Node* msg); static const ::pg_query::Var& var(const Node* msg); static const ::pg_query::Param& param(const Node* msg); static const ::pg_query::Aggref& aggref(const Node* msg); static const ::pg_query::GroupingFunc& grouping_func(const Node* msg); static const ::pg_query::WindowFunc& window_func(const Node* msg); static const ::pg_query::SubscriptingRef& subscripting_ref(const Node* msg); static const ::pg_query::FuncExpr& func_expr(const Node* msg); static const ::pg_query::NamedArgExpr& named_arg_expr(const Node* msg); static const ::pg_query::OpExpr& op_expr(const Node* msg); static const ::pg_query::DistinctExpr& distinct_expr(const Node* msg); static const ::pg_query::NullIfExpr& null_if_expr(const Node* msg); static const ::pg_query::ScalarArrayOpExpr& scalar_array_op_expr(const Node* msg); static const ::pg_query::BoolExpr& bool_expr(const Node* msg); static const ::pg_query::SubLink& sub_link(const Node* msg); static const ::pg_query::SubPlan& sub_plan(const Node* msg); static const ::pg_query::AlternativeSubPlan& alternative_sub_plan(const Node* msg); static const ::pg_query::FieldSelect& field_select(const Node* msg); static const ::pg_query::FieldStore& field_store(const Node* msg); static const ::pg_query::RelabelType& relabel_type(const Node* msg); static const ::pg_query::CoerceViaIO& coerce_via_io(const Node* msg); static const ::pg_query::ArrayCoerceExpr& array_coerce_expr(const Node* msg); static const ::pg_query::ConvertRowtypeExpr& convert_rowtype_expr(const Node* msg); static const ::pg_query::CollateExpr& collate_expr(const Node* msg); static const ::pg_query::CaseExpr& case_expr(const Node* msg); static const ::pg_query::CaseWhen& case_when(const Node* msg); static const ::pg_query::CaseTestExpr& case_test_expr(const Node* msg); static const ::pg_query::ArrayExpr& array_expr(const Node* msg); static const ::pg_query::RowExpr& row_expr(const Node* msg); static const ::pg_query::RowCompareExpr& row_compare_expr(const Node* msg); static const ::pg_query::CoalesceExpr& coalesce_expr(const Node* msg); static const ::pg_query::MinMaxExpr& min_max_expr(const Node* msg); static const ::pg_query::SQLValueFunction& sqlvalue_function(const Node* msg); static const ::pg_query::XmlExpr& xml_expr(const Node* msg); static const ::pg_query::NullTest& null_test(const Node* msg); static const ::pg_query::BooleanTest& boolean_test(const Node* msg); static const ::pg_query::CoerceToDomain& coerce_to_domain(const Node* msg); static const ::pg_query::CoerceToDomainValue& coerce_to_domain_value(const Node* msg); static const ::pg_query::SetToDefault& set_to_default(const Node* msg); static const ::pg_query::CurrentOfExpr& current_of_expr(const Node* msg); static const ::pg_query::NextValueExpr& next_value_expr(const Node* msg); static const ::pg_query::InferenceElem& inference_elem(const Node* msg); static const ::pg_query::TargetEntry& target_entry(const Node* msg); static const ::pg_query::RangeTblRef& range_tbl_ref(const Node* msg); static const ::pg_query::JoinExpr& join_expr(const Node* msg); static const ::pg_query::FromExpr& from_expr(const Node* msg); static const ::pg_query::OnConflictExpr& on_conflict_expr(const Node* msg); static const ::pg_query::IntoClause& into_clause(const Node* msg); static const ::pg_query::RawStmt& raw_stmt(const Node* msg); static const ::pg_query::Query& query(const Node* msg); static const ::pg_query::InsertStmt& insert_stmt(const Node* msg); static const ::pg_query::DeleteStmt& delete_stmt(const Node* msg); static const ::pg_query::UpdateStmt& update_stmt(const Node* msg); static const ::pg_query::SelectStmt& select_stmt(const Node* msg); static const ::pg_query::AlterTableStmt& alter_table_stmt(const Node* msg); static const ::pg_query::AlterTableCmd& alter_table_cmd(const Node* msg); static const ::pg_query::AlterDomainStmt& alter_domain_stmt(const Node* msg); static const ::pg_query::SetOperationStmt& set_operation_stmt(const Node* msg); static const ::pg_query::GrantStmt& grant_stmt(const Node* msg); static const ::pg_query::GrantRoleStmt& grant_role_stmt(const Node* msg); static const ::pg_query::AlterDefaultPrivilegesStmt& alter_default_privileges_stmt(const Node* msg); static const ::pg_query::ClosePortalStmt& close_portal_stmt(const Node* msg); static const ::pg_query::ClusterStmt& cluster_stmt(const Node* msg); static const ::pg_query::CopyStmt& copy_stmt(const Node* msg); static const ::pg_query::CreateStmt& create_stmt(const Node* msg); static const ::pg_query::DefineStmt& define_stmt(const Node* msg); static const ::pg_query::DropStmt& drop_stmt(const Node* msg); static const ::pg_query::TruncateStmt& truncate_stmt(const Node* msg); static const ::pg_query::CommentStmt& comment_stmt(const Node* msg); static const ::pg_query::FetchStmt& fetch_stmt(const Node* msg); static const ::pg_query::IndexStmt& index_stmt(const Node* msg); static const ::pg_query::CreateFunctionStmt& create_function_stmt(const Node* msg); static const ::pg_query::AlterFunctionStmt& alter_function_stmt(const Node* msg); static const ::pg_query::DoStmt& do_stmt(const Node* msg); static const ::pg_query::RenameStmt& rename_stmt(const Node* msg); static const ::pg_query::RuleStmt& rule_stmt(const Node* msg); static const ::pg_query::NotifyStmt& notify_stmt(const Node* msg); static const ::pg_query::ListenStmt& listen_stmt(const Node* msg); static const ::pg_query::UnlistenStmt& unlisten_stmt(const Node* msg); static const ::pg_query::TransactionStmt& transaction_stmt(const Node* msg); static const ::pg_query::ViewStmt& view_stmt(const Node* msg); static const ::pg_query::LoadStmt& load_stmt(const Node* msg); static const ::pg_query::CreateDomainStmt& create_domain_stmt(const Node* msg); static const ::pg_query::CreatedbStmt& createdb_stmt(const Node* msg); static const ::pg_query::DropdbStmt& dropdb_stmt(const Node* msg); static const ::pg_query::VacuumStmt& vacuum_stmt(const Node* msg); static const ::pg_query::ExplainStmt& explain_stmt(const Node* msg); static const ::pg_query::CreateTableAsStmt& create_table_as_stmt(const Node* msg); static const ::pg_query::CreateSeqStmt& create_seq_stmt(const Node* msg); static const ::pg_query::AlterSeqStmt& alter_seq_stmt(const Node* msg); static const ::pg_query::VariableSetStmt& variable_set_stmt(const Node* msg); static const ::pg_query::VariableShowStmt& variable_show_stmt(const Node* msg); static const ::pg_query::DiscardStmt& discard_stmt(const Node* msg); static const ::pg_query::CreateTrigStmt& create_trig_stmt(const Node* msg); static const ::pg_query::CreatePLangStmt& create_plang_stmt(const Node* msg); static const ::pg_query::CreateRoleStmt& create_role_stmt(const Node* msg); static const ::pg_query::AlterRoleStmt& alter_role_stmt(const Node* msg); static const ::pg_query::DropRoleStmt& drop_role_stmt(const Node* msg); static const ::pg_query::LockStmt& lock_stmt(const Node* msg); static const ::pg_query::ConstraintsSetStmt& constraints_set_stmt(const Node* msg); static const ::pg_query::ReindexStmt& reindex_stmt(const Node* msg); static const ::pg_query::CheckPointStmt& check_point_stmt(const Node* msg); static const ::pg_query::CreateSchemaStmt& create_schema_stmt(const Node* msg); static const ::pg_query::AlterDatabaseStmt& alter_database_stmt(const Node* msg); static const ::pg_query::AlterDatabaseSetStmt& alter_database_set_stmt(const Node* msg); static const ::pg_query::AlterRoleSetStmt& alter_role_set_stmt(const Node* msg); static const ::pg_query::CreateConversionStmt& create_conversion_stmt(const Node* msg); static const ::pg_query::CreateCastStmt& create_cast_stmt(const Node* msg); static const ::pg_query::CreateOpClassStmt& create_op_class_stmt(const Node* msg); static const ::pg_query::CreateOpFamilyStmt& create_op_family_stmt(const Node* msg); static const ::pg_query::AlterOpFamilyStmt& alter_op_family_stmt(const Node* msg); static const ::pg_query::PrepareStmt& prepare_stmt(const Node* msg); static const ::pg_query::ExecuteStmt& execute_stmt(const Node* msg); static const ::pg_query::DeallocateStmt& deallocate_stmt(const Node* msg); static const ::pg_query::DeclareCursorStmt& declare_cursor_stmt(const Node* msg); static const ::pg_query::CreateTableSpaceStmt& create_table_space_stmt(const Node* msg); static const ::pg_query::DropTableSpaceStmt& drop_table_space_stmt(const Node* msg); static const ::pg_query::AlterObjectDependsStmt& alter_object_depends_stmt(const Node* msg); static const ::pg_query::AlterObjectSchemaStmt& alter_object_schema_stmt(const Node* msg); static const ::pg_query::AlterOwnerStmt& alter_owner_stmt(const Node* msg); static const ::pg_query::AlterOperatorStmt& alter_operator_stmt(const Node* msg); static const ::pg_query::AlterTypeStmt& alter_type_stmt(const Node* msg); static const ::pg_query::DropOwnedStmt& drop_owned_stmt(const Node* msg); static const ::pg_query::ReassignOwnedStmt& reassign_owned_stmt(const Node* msg); static const ::pg_query::CompositeTypeStmt& composite_type_stmt(const Node* msg); static const ::pg_query::CreateEnumStmt& create_enum_stmt(const Node* msg); static const ::pg_query::CreateRangeStmt& create_range_stmt(const Node* msg); static const ::pg_query::AlterEnumStmt& alter_enum_stmt(const Node* msg); static const ::pg_query::AlterTSDictionaryStmt& alter_tsdictionary_stmt(const Node* msg); static const ::pg_query::AlterTSConfigurationStmt& alter_tsconfiguration_stmt(const Node* msg); static const ::pg_query::CreateFdwStmt& create_fdw_stmt(const Node* msg); static const ::pg_query::AlterFdwStmt& alter_fdw_stmt(const Node* msg); static const ::pg_query::CreateForeignServerStmt& create_foreign_server_stmt(const Node* msg); static const ::pg_query::AlterForeignServerStmt& alter_foreign_server_stmt(const Node* msg); static const ::pg_query::CreateUserMappingStmt& create_user_mapping_stmt(const Node* msg); static const ::pg_query::AlterUserMappingStmt& alter_user_mapping_stmt(const Node* msg); static const ::pg_query::DropUserMappingStmt& drop_user_mapping_stmt(const Node* msg); static const ::pg_query::AlterTableSpaceOptionsStmt& alter_table_space_options_stmt(const Node* msg); static const ::pg_query::AlterTableMoveAllStmt& alter_table_move_all_stmt(const Node* msg); static const ::pg_query::SecLabelStmt& sec_label_stmt(const Node* msg); static const ::pg_query::CreateForeignTableStmt& create_foreign_table_stmt(const Node* msg); static const ::pg_query::ImportForeignSchemaStmt& import_foreign_schema_stmt(const Node* msg); static const ::pg_query::CreateExtensionStmt& create_extension_stmt(const Node* msg); static const ::pg_query::AlterExtensionStmt& alter_extension_stmt(const Node* msg); static const ::pg_query::AlterExtensionContentsStmt& alter_extension_contents_stmt(const Node* msg); static const ::pg_query::CreateEventTrigStmt& create_event_trig_stmt(const Node* msg); static const ::pg_query::AlterEventTrigStmt& alter_event_trig_stmt(const Node* msg); static const ::pg_query::RefreshMatViewStmt& refresh_mat_view_stmt(const Node* msg); static const ::pg_query::ReplicaIdentityStmt& replica_identity_stmt(const Node* msg); static const ::pg_query::AlterSystemStmt& alter_system_stmt(const Node* msg); static const ::pg_query::CreatePolicyStmt& create_policy_stmt(const Node* msg); static const ::pg_query::AlterPolicyStmt& alter_policy_stmt(const Node* msg); static const ::pg_query::CreateTransformStmt& create_transform_stmt(const Node* msg); static const ::pg_query::CreateAmStmt& create_am_stmt(const Node* msg); static const ::pg_query::CreatePublicationStmt& create_publication_stmt(const Node* msg); static const ::pg_query::AlterPublicationStmt& alter_publication_stmt(const Node* msg); static const ::pg_query::CreateSubscriptionStmt& create_subscription_stmt(const Node* msg); static const ::pg_query::AlterSubscriptionStmt& alter_subscription_stmt(const Node* msg); static const ::pg_query::DropSubscriptionStmt& drop_subscription_stmt(const Node* msg); static const ::pg_query::CreateStatsStmt& create_stats_stmt(const Node* msg); static const ::pg_query::AlterCollationStmt& alter_collation_stmt(const Node* msg); static const ::pg_query::CallStmt& call_stmt(const Node* msg); static const ::pg_query::AlterStatsStmt& alter_stats_stmt(const Node* msg); static const ::pg_query::A_Expr& a_expr(const Node* msg); static const ::pg_query::ColumnRef& column_ref(const Node* msg); static const ::pg_query::ParamRef& param_ref(const Node* msg); static const ::pg_query::A_Const& a_const(const Node* msg); static const ::pg_query::FuncCall& func_call(const Node* msg); static const ::pg_query::A_Star& a_star(const Node* msg); static const ::pg_query::A_Indices& a_indices(const Node* msg); static const ::pg_query::A_Indirection& a_indirection(const Node* msg); static const ::pg_query::A_ArrayExpr& a_array_expr(const Node* msg); static const ::pg_query::ResTarget& res_target(const Node* msg); static const ::pg_query::MultiAssignRef& multi_assign_ref(const Node* msg); static const ::pg_query::TypeCast& type_cast(const Node* msg); static const ::pg_query::CollateClause& collate_clause(const Node* msg); static const ::pg_query::SortBy& sort_by(const Node* msg); static const ::pg_query::WindowDef& window_def(const Node* msg); static const ::pg_query::RangeSubselect& range_subselect(const Node* msg); static const ::pg_query::RangeFunction& range_function(const Node* msg); static const ::pg_query::RangeTableSample& range_table_sample(const Node* msg); static const ::pg_query::RangeTableFunc& range_table_func(const Node* msg); static const ::pg_query::RangeTableFuncCol& range_table_func_col(const Node* msg); static const ::pg_query::TypeName& type_name(const Node* msg); static const ::pg_query::ColumnDef& column_def(const Node* msg); static const ::pg_query::IndexElem& index_elem(const Node* msg); static const ::pg_query::Constraint& constraint(const Node* msg); static const ::pg_query::DefElem& def_elem(const Node* msg); static const ::pg_query::RangeTblEntry& range_tbl_entry(const Node* msg); static const ::pg_query::RangeTblFunction& range_tbl_function(const Node* msg); static const ::pg_query::TableSampleClause& table_sample_clause(const Node* msg); static const ::pg_query::WithCheckOption& with_check_option(const Node* msg); static const ::pg_query::SortGroupClause& sort_group_clause(const Node* msg); static const ::pg_query::GroupingSet& grouping_set(const Node* msg); static const ::pg_query::WindowClause& window_clause(const Node* msg); static const ::pg_query::ObjectWithArgs& object_with_args(const Node* msg); static const ::pg_query::AccessPriv& access_priv(const Node* msg); static const ::pg_query::CreateOpClassItem& create_op_class_item(const Node* msg); static const ::pg_query::TableLikeClause& table_like_clause(const Node* msg); static const ::pg_query::FunctionParameter& function_parameter(const Node* msg); static const ::pg_query::LockingClause& locking_clause(const Node* msg); static const ::pg_query::RowMarkClause& row_mark_clause(const Node* msg); static const ::pg_query::XmlSerialize& xml_serialize(const Node* msg); static const ::pg_query::WithClause& with_clause(const Node* msg); static const ::pg_query::InferClause& infer_clause(const Node* msg); static const ::pg_query::OnConflictClause& on_conflict_clause(const Node* msg); static const ::pg_query::CommonTableExpr& common_table_expr(const Node* msg); static const ::pg_query::RoleSpec& role_spec(const Node* msg); static const ::pg_query::TriggerTransition& trigger_transition(const Node* msg); static const ::pg_query::PartitionElem& partition_elem(const Node* msg); static const ::pg_query::PartitionSpec& partition_spec(const Node* msg); static const ::pg_query::PartitionBoundSpec& partition_bound_spec(const Node* msg); static const ::pg_query::PartitionRangeDatum& partition_range_datum(const Node* msg); static const ::pg_query::PartitionCmd& partition_cmd(const Node* msg); static const ::pg_query::VacuumRelation& vacuum_relation(const Node* msg); static const ::pg_query::InlineCodeBlock& inline_code_block(const Node* msg); static const ::pg_query::CallContext& call_context(const Node* msg); static const ::pg_query::Integer& integer(const Node* msg); static const ::pg_query::Float& float_(const Node* msg); static const ::pg_query::String& string(const Node* msg); static const ::pg_query::BitString& bit_string(const Node* msg); static const ::pg_query::Null& null(const Node* msg); static const ::pg_query::List& list(const Node* msg); static const ::pg_query::IntList& int_list(const Node* msg); static const ::pg_query::OidList& oid_list(const Node* msg); }; const ::pg_query::Alias& Node::_Internal::alias(const Node* msg) { return *msg->node_.alias_; } const ::pg_query::RangeVar& Node::_Internal::range_var(const Node* msg) { return *msg->node_.range_var_; } const ::pg_query::TableFunc& Node::_Internal::table_func(const Node* msg) { return *msg->node_.table_func_; } const ::pg_query::Expr& Node::_Internal::expr(const Node* msg) { return *msg->node_.expr_; } const ::pg_query::Var& Node::_Internal::var(const Node* msg) { return *msg->node_.var_; } const ::pg_query::Param& Node::_Internal::param(const Node* msg) { return *msg->node_.param_; } const ::pg_query::Aggref& Node::_Internal::aggref(const Node* msg) { return *msg->node_.aggref_; } const ::pg_query::GroupingFunc& Node::_Internal::grouping_func(const Node* msg) { return *msg->node_.grouping_func_; } const ::pg_query::WindowFunc& Node::_Internal::window_func(const Node* msg) { return *msg->node_.window_func_; } const ::pg_query::SubscriptingRef& Node::_Internal::subscripting_ref(const Node* msg) { return *msg->node_.subscripting_ref_; } const ::pg_query::FuncExpr& Node::_Internal::func_expr(const Node* msg) { return *msg->node_.func_expr_; } const ::pg_query::NamedArgExpr& Node::_Internal::named_arg_expr(const Node* msg) { return *msg->node_.named_arg_expr_; } const ::pg_query::OpExpr& Node::_Internal::op_expr(const Node* msg) { return *msg->node_.op_expr_; } const ::pg_query::DistinctExpr& Node::_Internal::distinct_expr(const Node* msg) { return *msg->node_.distinct_expr_; } const ::pg_query::NullIfExpr& Node::_Internal::null_if_expr(const Node* msg) { return *msg->node_.null_if_expr_; } const ::pg_query::ScalarArrayOpExpr& Node::_Internal::scalar_array_op_expr(const Node* msg) { return *msg->node_.scalar_array_op_expr_; } const ::pg_query::BoolExpr& Node::_Internal::bool_expr(const Node* msg) { return *msg->node_.bool_expr_; } const ::pg_query::SubLink& Node::_Internal::sub_link(const Node* msg) { return *msg->node_.sub_link_; } const ::pg_query::SubPlan& Node::_Internal::sub_plan(const Node* msg) { return *msg->node_.sub_plan_; } const ::pg_query::AlternativeSubPlan& Node::_Internal::alternative_sub_plan(const Node* msg) { return *msg->node_.alternative_sub_plan_; } const ::pg_query::FieldSelect& Node::_Internal::field_select(const Node* msg) { return *msg->node_.field_select_; } const ::pg_query::FieldStore& Node::_Internal::field_store(const Node* msg) { return *msg->node_.field_store_; } const ::pg_query::RelabelType& Node::_Internal::relabel_type(const Node* msg) { return *msg->node_.relabel_type_; } const ::pg_query::CoerceViaIO& Node::_Internal::coerce_via_io(const Node* msg) { return *msg->node_.coerce_via_io_; } const ::pg_query::ArrayCoerceExpr& Node::_Internal::array_coerce_expr(const Node* msg) { return *msg->node_.array_coerce_expr_; } const ::pg_query::ConvertRowtypeExpr& Node::_Internal::convert_rowtype_expr(const Node* msg) { return *msg->node_.convert_rowtype_expr_; } const ::pg_query::CollateExpr& Node::_Internal::collate_expr(const Node* msg) { return *msg->node_.collate_expr_; } const ::pg_query::CaseExpr& Node::_Internal::case_expr(const Node* msg) { return *msg->node_.case_expr_; } const ::pg_query::CaseWhen& Node::_Internal::case_when(const Node* msg) { return *msg->node_.case_when_; } const ::pg_query::CaseTestExpr& Node::_Internal::case_test_expr(const Node* msg) { return *msg->node_.case_test_expr_; } const ::pg_query::ArrayExpr& Node::_Internal::array_expr(const Node* msg) { return *msg->node_.array_expr_; } const ::pg_query::RowExpr& Node::_Internal::row_expr(const Node* msg) { return *msg->node_.row_expr_; } const ::pg_query::RowCompareExpr& Node::_Internal::row_compare_expr(const Node* msg) { return *msg->node_.row_compare_expr_; } const ::pg_query::CoalesceExpr& Node::_Internal::coalesce_expr(const Node* msg) { return *msg->node_.coalesce_expr_; } const ::pg_query::MinMaxExpr& Node::_Internal::min_max_expr(const Node* msg) { return *msg->node_.min_max_expr_; } const ::pg_query::SQLValueFunction& Node::_Internal::sqlvalue_function(const Node* msg) { return *msg->node_.sqlvalue_function_; } const ::pg_query::XmlExpr& Node::_Internal::xml_expr(const Node* msg) { return *msg->node_.xml_expr_; } const ::pg_query::NullTest& Node::_Internal::null_test(const Node* msg) { return *msg->node_.null_test_; } const ::pg_query::BooleanTest& Node::_Internal::boolean_test(const Node* msg) { return *msg->node_.boolean_test_; } const ::pg_query::CoerceToDomain& Node::_Internal::coerce_to_domain(const Node* msg) { return *msg->node_.coerce_to_domain_; } const ::pg_query::CoerceToDomainValue& Node::_Internal::coerce_to_domain_value(const Node* msg) { return *msg->node_.coerce_to_domain_value_; } const ::pg_query::SetToDefault& Node::_Internal::set_to_default(const Node* msg) { return *msg->node_.set_to_default_; } const ::pg_query::CurrentOfExpr& Node::_Internal::current_of_expr(const Node* msg) { return *msg->node_.current_of_expr_; } const ::pg_query::NextValueExpr& Node::_Internal::next_value_expr(const Node* msg) { return *msg->node_.next_value_expr_; } const ::pg_query::InferenceElem& Node::_Internal::inference_elem(const Node* msg) { return *msg->node_.inference_elem_; } const ::pg_query::TargetEntry& Node::_Internal::target_entry(const Node* msg) { return *msg->node_.target_entry_; } const ::pg_query::RangeTblRef& Node::_Internal::range_tbl_ref(const Node* msg) { return *msg->node_.range_tbl_ref_; } const ::pg_query::JoinExpr& Node::_Internal::join_expr(const Node* msg) { return *msg->node_.join_expr_; } const ::pg_query::FromExpr& Node::_Internal::from_expr(const Node* msg) { return *msg->node_.from_expr_; } const ::pg_query::OnConflictExpr& Node::_Internal::on_conflict_expr(const Node* msg) { return *msg->node_.on_conflict_expr_; } const ::pg_query::IntoClause& Node::_Internal::into_clause(const Node* msg) { return *msg->node_.into_clause_; } const ::pg_query::RawStmt& Node::_Internal::raw_stmt(const Node* msg) { return *msg->node_.raw_stmt_; } const ::pg_query::Query& Node::_Internal::query(const Node* msg) { return *msg->node_.query_; } const ::pg_query::InsertStmt& Node::_Internal::insert_stmt(const Node* msg) { return *msg->node_.insert_stmt_; } const ::pg_query::DeleteStmt& Node::_Internal::delete_stmt(const Node* msg) { return *msg->node_.delete_stmt_; } const ::pg_query::UpdateStmt& Node::_Internal::update_stmt(const Node* msg) { return *msg->node_.update_stmt_; } const ::pg_query::SelectStmt& Node::_Internal::select_stmt(const Node* msg) { return *msg->node_.select_stmt_; } const ::pg_query::AlterTableStmt& Node::_Internal::alter_table_stmt(const Node* msg) { return *msg->node_.alter_table_stmt_; } const ::pg_query::AlterTableCmd& Node::_Internal::alter_table_cmd(const Node* msg) { return *msg->node_.alter_table_cmd_; } const ::pg_query::AlterDomainStmt& Node::_Internal::alter_domain_stmt(const Node* msg) { return *msg->node_.alter_domain_stmt_; } const ::pg_query::SetOperationStmt& Node::_Internal::set_operation_stmt(const Node* msg) { return *msg->node_.set_operation_stmt_; } const ::pg_query::GrantStmt& Node::_Internal::grant_stmt(const Node* msg) { return *msg->node_.grant_stmt_; } const ::pg_query::GrantRoleStmt& Node::_Internal::grant_role_stmt(const Node* msg) { return *msg->node_.grant_role_stmt_; } const ::pg_query::AlterDefaultPrivilegesStmt& Node::_Internal::alter_default_privileges_stmt(const Node* msg) { return *msg->node_.alter_default_privileges_stmt_; } const ::pg_query::ClosePortalStmt& Node::_Internal::close_portal_stmt(const Node* msg) { return *msg->node_.close_portal_stmt_; } const ::pg_query::ClusterStmt& Node::_Internal::cluster_stmt(const Node* msg) { return *msg->node_.cluster_stmt_; } const ::pg_query::CopyStmt& Node::_Internal::copy_stmt(const Node* msg) { return *msg->node_.copy_stmt_; } const ::pg_query::CreateStmt& Node::_Internal::create_stmt(const Node* msg) { return *msg->node_.create_stmt_; } const ::pg_query::DefineStmt& Node::_Internal::define_stmt(const Node* msg) { return *msg->node_.define_stmt_; } const ::pg_query::DropStmt& Node::_Internal::drop_stmt(const Node* msg) { return *msg->node_.drop_stmt_; } const ::pg_query::TruncateStmt& Node::_Internal::truncate_stmt(const Node* msg) { return *msg->node_.truncate_stmt_; } const ::pg_query::CommentStmt& Node::_Internal::comment_stmt(const Node* msg) { return *msg->node_.comment_stmt_; } const ::pg_query::FetchStmt& Node::_Internal::fetch_stmt(const Node* msg) { return *msg->node_.fetch_stmt_; } const ::pg_query::IndexStmt& Node::_Internal::index_stmt(const Node* msg) { return *msg->node_.index_stmt_; } const ::pg_query::CreateFunctionStmt& Node::_Internal::create_function_stmt(const Node* msg) { return *msg->node_.create_function_stmt_; } const ::pg_query::AlterFunctionStmt& Node::_Internal::alter_function_stmt(const Node* msg) { return *msg->node_.alter_function_stmt_; } const ::pg_query::DoStmt& Node::_Internal::do_stmt(const Node* msg) { return *msg->node_.do_stmt_; } const ::pg_query::RenameStmt& Node::_Internal::rename_stmt(const Node* msg) { return *msg->node_.rename_stmt_; } const ::pg_query::RuleStmt& Node::_Internal::rule_stmt(const Node* msg) { return *msg->node_.rule_stmt_; } const ::pg_query::NotifyStmt& Node::_Internal::notify_stmt(const Node* msg) { return *msg->node_.notify_stmt_; } const ::pg_query::ListenStmt& Node::_Internal::listen_stmt(const Node* msg) { return *msg->node_.listen_stmt_; } const ::pg_query::UnlistenStmt& Node::_Internal::unlisten_stmt(const Node* msg) { return *msg->node_.unlisten_stmt_; } const ::pg_query::TransactionStmt& Node::_Internal::transaction_stmt(const Node* msg) { return *msg->node_.transaction_stmt_; } const ::pg_query::ViewStmt& Node::_Internal::view_stmt(const Node* msg) { return *msg->node_.view_stmt_; } const ::pg_query::LoadStmt& Node::_Internal::load_stmt(const Node* msg) { return *msg->node_.load_stmt_; } const ::pg_query::CreateDomainStmt& Node::_Internal::create_domain_stmt(const Node* msg) { return *msg->node_.create_domain_stmt_; } const ::pg_query::CreatedbStmt& Node::_Internal::createdb_stmt(const Node* msg) { return *msg->node_.createdb_stmt_; } const ::pg_query::DropdbStmt& Node::_Internal::dropdb_stmt(const Node* msg) { return *msg->node_.dropdb_stmt_; } const ::pg_query::VacuumStmt& Node::_Internal::vacuum_stmt(const Node* msg) { return *msg->node_.vacuum_stmt_; } const ::pg_query::ExplainStmt& Node::_Internal::explain_stmt(const Node* msg) { return *msg->node_.explain_stmt_; } const ::pg_query::CreateTableAsStmt& Node::_Internal::create_table_as_stmt(const Node* msg) { return *msg->node_.create_table_as_stmt_; } const ::pg_query::CreateSeqStmt& Node::_Internal::create_seq_stmt(const Node* msg) { return *msg->node_.create_seq_stmt_; } const ::pg_query::AlterSeqStmt& Node::_Internal::alter_seq_stmt(const Node* msg) { return *msg->node_.alter_seq_stmt_; } const ::pg_query::VariableSetStmt& Node::_Internal::variable_set_stmt(const Node* msg) { return *msg->node_.variable_set_stmt_; } const ::pg_query::VariableShowStmt& Node::_Internal::variable_show_stmt(const Node* msg) { return *msg->node_.variable_show_stmt_; } const ::pg_query::DiscardStmt& Node::_Internal::discard_stmt(const Node* msg) { return *msg->node_.discard_stmt_; } const ::pg_query::CreateTrigStmt& Node::_Internal::create_trig_stmt(const Node* msg) { return *msg->node_.create_trig_stmt_; } const ::pg_query::CreatePLangStmt& Node::_Internal::create_plang_stmt(const Node* msg) { return *msg->node_.create_plang_stmt_; } const ::pg_query::CreateRoleStmt& Node::_Internal::create_role_stmt(const Node* msg) { return *msg->node_.create_role_stmt_; } const ::pg_query::AlterRoleStmt& Node::_Internal::alter_role_stmt(const Node* msg) { return *msg->node_.alter_role_stmt_; } const ::pg_query::DropRoleStmt& Node::_Internal::drop_role_stmt(const Node* msg) { return *msg->node_.drop_role_stmt_; } const ::pg_query::LockStmt& Node::_Internal::lock_stmt(const Node* msg) { return *msg->node_.lock_stmt_; } const ::pg_query::ConstraintsSetStmt& Node::_Internal::constraints_set_stmt(const Node* msg) { return *msg->node_.constraints_set_stmt_; } const ::pg_query::ReindexStmt& Node::_Internal::reindex_stmt(const Node* msg) { return *msg->node_.reindex_stmt_; } const ::pg_query::CheckPointStmt& Node::_Internal::check_point_stmt(const Node* msg) { return *msg->node_.check_point_stmt_; } const ::pg_query::CreateSchemaStmt& Node::_Internal::create_schema_stmt(const Node* msg) { return *msg->node_.create_schema_stmt_; } const ::pg_query::AlterDatabaseStmt& Node::_Internal::alter_database_stmt(const Node* msg) { return *msg->node_.alter_database_stmt_; } const ::pg_query::AlterDatabaseSetStmt& Node::_Internal::alter_database_set_stmt(const Node* msg) { return *msg->node_.alter_database_set_stmt_; } const ::pg_query::AlterRoleSetStmt& Node::_Internal::alter_role_set_stmt(const Node* msg) { return *msg->node_.alter_role_set_stmt_; } const ::pg_query::CreateConversionStmt& Node::_Internal::create_conversion_stmt(const Node* msg) { return *msg->node_.create_conversion_stmt_; } const ::pg_query::CreateCastStmt& Node::_Internal::create_cast_stmt(const Node* msg) { return *msg->node_.create_cast_stmt_; } const ::pg_query::CreateOpClassStmt& Node::_Internal::create_op_class_stmt(const Node* msg) { return *msg->node_.create_op_class_stmt_; } const ::pg_query::CreateOpFamilyStmt& Node::_Internal::create_op_family_stmt(const Node* msg) { return *msg->node_.create_op_family_stmt_; } const ::pg_query::AlterOpFamilyStmt& Node::_Internal::alter_op_family_stmt(const Node* msg) { return *msg->node_.alter_op_family_stmt_; } const ::pg_query::PrepareStmt& Node::_Internal::prepare_stmt(const Node* msg) { return *msg->node_.prepare_stmt_; } const ::pg_query::ExecuteStmt& Node::_Internal::execute_stmt(const Node* msg) { return *msg->node_.execute_stmt_; } const ::pg_query::DeallocateStmt& Node::_Internal::deallocate_stmt(const Node* msg) { return *msg->node_.deallocate_stmt_; } const ::pg_query::DeclareCursorStmt& Node::_Internal::declare_cursor_stmt(const Node* msg) { return *msg->node_.declare_cursor_stmt_; } const ::pg_query::CreateTableSpaceStmt& Node::_Internal::create_table_space_stmt(const Node* msg) { return *msg->node_.create_table_space_stmt_; } const ::pg_query::DropTableSpaceStmt& Node::_Internal::drop_table_space_stmt(const Node* msg) { return *msg->node_.drop_table_space_stmt_; } const ::pg_query::AlterObjectDependsStmt& Node::_Internal::alter_object_depends_stmt(const Node* msg) { return *msg->node_.alter_object_depends_stmt_; } const ::pg_query::AlterObjectSchemaStmt& Node::_Internal::alter_object_schema_stmt(const Node* msg) { return *msg->node_.alter_object_schema_stmt_; } const ::pg_query::AlterOwnerStmt& Node::_Internal::alter_owner_stmt(const Node* msg) { return *msg->node_.alter_owner_stmt_; } const ::pg_query::AlterOperatorStmt& Node::_Internal::alter_operator_stmt(const Node* msg) { return *msg->node_.alter_operator_stmt_; } const ::pg_query::AlterTypeStmt& Node::_Internal::alter_type_stmt(const Node* msg) { return *msg->node_.alter_type_stmt_; } const ::pg_query::DropOwnedStmt& Node::_Internal::drop_owned_stmt(const Node* msg) { return *msg->node_.drop_owned_stmt_; } const ::pg_query::ReassignOwnedStmt& Node::_Internal::reassign_owned_stmt(const Node* msg) { return *msg->node_.reassign_owned_stmt_; } const ::pg_query::CompositeTypeStmt& Node::_Internal::composite_type_stmt(const Node* msg) { return *msg->node_.composite_type_stmt_; } const ::pg_query::CreateEnumStmt& Node::_Internal::create_enum_stmt(const Node* msg) { return *msg->node_.create_enum_stmt_; } const ::pg_query::CreateRangeStmt& Node::_Internal::create_range_stmt(const Node* msg) { return *msg->node_.create_range_stmt_; } const ::pg_query::AlterEnumStmt& Node::_Internal::alter_enum_stmt(const Node* msg) { return *msg->node_.alter_enum_stmt_; } const ::pg_query::AlterTSDictionaryStmt& Node::_Internal::alter_tsdictionary_stmt(const Node* msg) { return *msg->node_.alter_tsdictionary_stmt_; } const ::pg_query::AlterTSConfigurationStmt& Node::_Internal::alter_tsconfiguration_stmt(const Node* msg) { return *msg->node_.alter_tsconfiguration_stmt_; } const ::pg_query::CreateFdwStmt& Node::_Internal::create_fdw_stmt(const Node* msg) { return *msg->node_.create_fdw_stmt_; } const ::pg_query::AlterFdwStmt& Node::_Internal::alter_fdw_stmt(const Node* msg) { return *msg->node_.alter_fdw_stmt_; } const ::pg_query::CreateForeignServerStmt& Node::_Internal::create_foreign_server_stmt(const Node* msg) { return *msg->node_.create_foreign_server_stmt_; } const ::pg_query::AlterForeignServerStmt& Node::_Internal::alter_foreign_server_stmt(const Node* msg) { return *msg->node_.alter_foreign_server_stmt_; } const ::pg_query::CreateUserMappingStmt& Node::_Internal::create_user_mapping_stmt(const Node* msg) { return *msg->node_.create_user_mapping_stmt_; } const ::pg_query::AlterUserMappingStmt& Node::_Internal::alter_user_mapping_stmt(const Node* msg) { return *msg->node_.alter_user_mapping_stmt_; } const ::pg_query::DropUserMappingStmt& Node::_Internal::drop_user_mapping_stmt(const Node* msg) { return *msg->node_.drop_user_mapping_stmt_; } const ::pg_query::AlterTableSpaceOptionsStmt& Node::_Internal::alter_table_space_options_stmt(const Node* msg) { return *msg->node_.alter_table_space_options_stmt_; } const ::pg_query::AlterTableMoveAllStmt& Node::_Internal::alter_table_move_all_stmt(const Node* msg) { return *msg->node_.alter_table_move_all_stmt_; } const ::pg_query::SecLabelStmt& Node::_Internal::sec_label_stmt(const Node* msg) { return *msg->node_.sec_label_stmt_; } const ::pg_query::CreateForeignTableStmt& Node::_Internal::create_foreign_table_stmt(const Node* msg) { return *msg->node_.create_foreign_table_stmt_; } const ::pg_query::ImportForeignSchemaStmt& Node::_Internal::import_foreign_schema_stmt(const Node* msg) { return *msg->node_.import_foreign_schema_stmt_; } const ::pg_query::CreateExtensionStmt& Node::_Internal::create_extension_stmt(const Node* msg) { return *msg->node_.create_extension_stmt_; } const ::pg_query::AlterExtensionStmt& Node::_Internal::alter_extension_stmt(const Node* msg) { return *msg->node_.alter_extension_stmt_; } const ::pg_query::AlterExtensionContentsStmt& Node::_Internal::alter_extension_contents_stmt(const Node* msg) { return *msg->node_.alter_extension_contents_stmt_; } const ::pg_query::CreateEventTrigStmt& Node::_Internal::create_event_trig_stmt(const Node* msg) { return *msg->node_.create_event_trig_stmt_; } const ::pg_query::AlterEventTrigStmt& Node::_Internal::alter_event_trig_stmt(const Node* msg) { return *msg->node_.alter_event_trig_stmt_; } const ::pg_query::RefreshMatViewStmt& Node::_Internal::refresh_mat_view_stmt(const Node* msg) { return *msg->node_.refresh_mat_view_stmt_; } const ::pg_query::ReplicaIdentityStmt& Node::_Internal::replica_identity_stmt(const Node* msg) { return *msg->node_.replica_identity_stmt_; } const ::pg_query::AlterSystemStmt& Node::_Internal::alter_system_stmt(const Node* msg) { return *msg->node_.alter_system_stmt_; } const ::pg_query::CreatePolicyStmt& Node::_Internal::create_policy_stmt(const Node* msg) { return *msg->node_.create_policy_stmt_; } const ::pg_query::AlterPolicyStmt& Node::_Internal::alter_policy_stmt(const Node* msg) { return *msg->node_.alter_policy_stmt_; } const ::pg_query::CreateTransformStmt& Node::_Internal::create_transform_stmt(const Node* msg) { return *msg->node_.create_transform_stmt_; } const ::pg_query::CreateAmStmt& Node::_Internal::create_am_stmt(const Node* msg) { return *msg->node_.create_am_stmt_; } const ::pg_query::CreatePublicationStmt& Node::_Internal::create_publication_stmt(const Node* msg) { return *msg->node_.create_publication_stmt_; } const ::pg_query::AlterPublicationStmt& Node::_Internal::alter_publication_stmt(const Node* msg) { return *msg->node_.alter_publication_stmt_; } const ::pg_query::CreateSubscriptionStmt& Node::_Internal::create_subscription_stmt(const Node* msg) { return *msg->node_.create_subscription_stmt_; } const ::pg_query::AlterSubscriptionStmt& Node::_Internal::alter_subscription_stmt(const Node* msg) { return *msg->node_.alter_subscription_stmt_; } const ::pg_query::DropSubscriptionStmt& Node::_Internal::drop_subscription_stmt(const Node* msg) { return *msg->node_.drop_subscription_stmt_; } const ::pg_query::CreateStatsStmt& Node::_Internal::create_stats_stmt(const Node* msg) { return *msg->node_.create_stats_stmt_; } const ::pg_query::AlterCollationStmt& Node::_Internal::alter_collation_stmt(const Node* msg) { return *msg->node_.alter_collation_stmt_; } const ::pg_query::CallStmt& Node::_Internal::call_stmt(const Node* msg) { return *msg->node_.call_stmt_; } const ::pg_query::AlterStatsStmt& Node::_Internal::alter_stats_stmt(const Node* msg) { return *msg->node_.alter_stats_stmt_; } const ::pg_query::A_Expr& Node::_Internal::a_expr(const Node* msg) { return *msg->node_.a_expr_; } const ::pg_query::ColumnRef& Node::_Internal::column_ref(const Node* msg) { return *msg->node_.column_ref_; } const ::pg_query::ParamRef& Node::_Internal::param_ref(const Node* msg) { return *msg->node_.param_ref_; } const ::pg_query::A_Const& Node::_Internal::a_const(const Node* msg) { return *msg->node_.a_const_; } const ::pg_query::FuncCall& Node::_Internal::func_call(const Node* msg) { return *msg->node_.func_call_; } const ::pg_query::A_Star& Node::_Internal::a_star(const Node* msg) { return *msg->node_.a_star_; } const ::pg_query::A_Indices& Node::_Internal::a_indices(const Node* msg) { return *msg->node_.a_indices_; } const ::pg_query::A_Indirection& Node::_Internal::a_indirection(const Node* msg) { return *msg->node_.a_indirection_; } const ::pg_query::A_ArrayExpr& Node::_Internal::a_array_expr(const Node* msg) { return *msg->node_.a_array_expr_; } const ::pg_query::ResTarget& Node::_Internal::res_target(const Node* msg) { return *msg->node_.res_target_; } const ::pg_query::MultiAssignRef& Node::_Internal::multi_assign_ref(const Node* msg) { return *msg->node_.multi_assign_ref_; } const ::pg_query::TypeCast& Node::_Internal::type_cast(const Node* msg) { return *msg->node_.type_cast_; } const ::pg_query::CollateClause& Node::_Internal::collate_clause(const Node* msg) { return *msg->node_.collate_clause_; } const ::pg_query::SortBy& Node::_Internal::sort_by(const Node* msg) { return *msg->node_.sort_by_; } const ::pg_query::WindowDef& Node::_Internal::window_def(const Node* msg) { return *msg->node_.window_def_; } const ::pg_query::RangeSubselect& Node::_Internal::range_subselect(const Node* msg) { return *msg->node_.range_subselect_; } const ::pg_query::RangeFunction& Node::_Internal::range_function(const Node* msg) { return *msg->node_.range_function_; } const ::pg_query::RangeTableSample& Node::_Internal::range_table_sample(const Node* msg) { return *msg->node_.range_table_sample_; } const ::pg_query::RangeTableFunc& Node::_Internal::range_table_func(const Node* msg) { return *msg->node_.range_table_func_; } const ::pg_query::RangeTableFuncCol& Node::_Internal::range_table_func_col(const Node* msg) { return *msg->node_.range_table_func_col_; } const ::pg_query::TypeName& Node::_Internal::type_name(const Node* msg) { return *msg->node_.type_name_; } const ::pg_query::ColumnDef& Node::_Internal::column_def(const Node* msg) { return *msg->node_.column_def_; } const ::pg_query::IndexElem& Node::_Internal::index_elem(const Node* msg) { return *msg->node_.index_elem_; } const ::pg_query::Constraint& Node::_Internal::constraint(const Node* msg) { return *msg->node_.constraint_; } const ::pg_query::DefElem& Node::_Internal::def_elem(const Node* msg) { return *msg->node_.def_elem_; } const ::pg_query::RangeTblEntry& Node::_Internal::range_tbl_entry(const Node* msg) { return *msg->node_.range_tbl_entry_; } const ::pg_query::RangeTblFunction& Node::_Internal::range_tbl_function(const Node* msg) { return *msg->node_.range_tbl_function_; } const ::pg_query::TableSampleClause& Node::_Internal::table_sample_clause(const Node* msg) { return *msg->node_.table_sample_clause_; } const ::pg_query::WithCheckOption& Node::_Internal::with_check_option(const Node* msg) { return *msg->node_.with_check_option_; } const ::pg_query::SortGroupClause& Node::_Internal::sort_group_clause(const Node* msg) { return *msg->node_.sort_group_clause_; } const ::pg_query::GroupingSet& Node::_Internal::grouping_set(const Node* msg) { return *msg->node_.grouping_set_; } const ::pg_query::WindowClause& Node::_Internal::window_clause(const Node* msg) { return *msg->node_.window_clause_; } const ::pg_query::ObjectWithArgs& Node::_Internal::object_with_args(const Node* msg) { return *msg->node_.object_with_args_; } const ::pg_query::AccessPriv& Node::_Internal::access_priv(const Node* msg) { return *msg->node_.access_priv_; } const ::pg_query::CreateOpClassItem& Node::_Internal::create_op_class_item(const Node* msg) { return *msg->node_.create_op_class_item_; } const ::pg_query::TableLikeClause& Node::_Internal::table_like_clause(const Node* msg) { return *msg->node_.table_like_clause_; } const ::pg_query::FunctionParameter& Node::_Internal::function_parameter(const Node* msg) { return *msg->node_.function_parameter_; } const ::pg_query::LockingClause& Node::_Internal::locking_clause(const Node* msg) { return *msg->node_.locking_clause_; } const ::pg_query::RowMarkClause& Node::_Internal::row_mark_clause(const Node* msg) { return *msg->node_.row_mark_clause_; } const ::pg_query::XmlSerialize& Node::_Internal::xml_serialize(const Node* msg) { return *msg->node_.xml_serialize_; } const ::pg_query::WithClause& Node::_Internal::with_clause(const Node* msg) { return *msg->node_.with_clause_; } const ::pg_query::InferClause& Node::_Internal::infer_clause(const Node* msg) { return *msg->node_.infer_clause_; } const ::pg_query::OnConflictClause& Node::_Internal::on_conflict_clause(const Node* msg) { return *msg->node_.on_conflict_clause_; } const ::pg_query::CommonTableExpr& Node::_Internal::common_table_expr(const Node* msg) { return *msg->node_.common_table_expr_; } const ::pg_query::RoleSpec& Node::_Internal::role_spec(const Node* msg) { return *msg->node_.role_spec_; } const ::pg_query::TriggerTransition& Node::_Internal::trigger_transition(const Node* msg) { return *msg->node_.trigger_transition_; } const ::pg_query::PartitionElem& Node::_Internal::partition_elem(const Node* msg) { return *msg->node_.partition_elem_; } const ::pg_query::PartitionSpec& Node::_Internal::partition_spec(const Node* msg) { return *msg->node_.partition_spec_; } const ::pg_query::PartitionBoundSpec& Node::_Internal::partition_bound_spec(const Node* msg) { return *msg->node_.partition_bound_spec_; } const ::pg_query::PartitionRangeDatum& Node::_Internal::partition_range_datum(const Node* msg) { return *msg->node_.partition_range_datum_; } const ::pg_query::PartitionCmd& Node::_Internal::partition_cmd(const Node* msg) { return *msg->node_.partition_cmd_; } const ::pg_query::VacuumRelation& Node::_Internal::vacuum_relation(const Node* msg) { return *msg->node_.vacuum_relation_; } const ::pg_query::InlineCodeBlock& Node::_Internal::inline_code_block(const Node* msg) { return *msg->node_.inline_code_block_; } const ::pg_query::CallContext& Node::_Internal::call_context(const Node* msg) { return *msg->node_.call_context_; } const ::pg_query::Integer& Node::_Internal::integer(const Node* msg) { return *msg->node_.integer_; } const ::pg_query::Float& Node::_Internal::float_(const Node* msg) { return *msg->node_.float__; } const ::pg_query::String& Node::_Internal::string(const Node* msg) { return *msg->node_.string_; } const ::pg_query::BitString& Node::_Internal::bit_string(const Node* msg) { return *msg->node_.bit_string_; } const ::pg_query::Null& Node::_Internal::null(const Node* msg) { return *msg->node_.null_; } const ::pg_query::List& Node::_Internal::list(const Node* msg) { return *msg->node_.list_; } const ::pg_query::IntList& Node::_Internal::int_list(const Node* msg) { return *msg->node_.int_list_; } const ::pg_query::OidList& Node::_Internal::oid_list(const Node* msg) { return *msg->node_.oid_list_; } void Node::set_allocated_alias(::pg_query::Alias* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } set_has_alias(); node_.alias_ = alias; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alias) } void Node::set_allocated_range_var(::pg_query::RangeVar* range_var) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (range_var) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(range_var); if (message_arena != submessage_arena) { range_var = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, range_var, submessage_arena); } set_has_range_var(); node_.range_var_ = range_var; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_var) } void Node::set_allocated_table_func(::pg_query::TableFunc* table_func) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (table_func) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(table_func); if (message_arena != submessage_arena) { table_func = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, table_func, submessage_arena); } set_has_table_func(); node_.table_func_ = table_func; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.table_func) } void Node::set_allocated_expr(::pg_query::Expr* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } set_has_expr(); node_.expr_ = expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.expr) } void Node::set_allocated_var(::pg_query::Var* var) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (var) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(var); if (message_arena != submessage_arena) { var = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, var, submessage_arena); } set_has_var(); node_.var_ = var; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.var) } void Node::set_allocated_param(::pg_query::Param* param) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (param) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(param); if (message_arena != submessage_arena) { param = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, param, submessage_arena); } set_has_param(); node_.param_ = param; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.param) } void Node::set_allocated_aggref(::pg_query::Aggref* aggref) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (aggref) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(aggref); if (message_arena != submessage_arena) { aggref = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, aggref, submessage_arena); } set_has_aggref(); node_.aggref_ = aggref; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.aggref) } void Node::set_allocated_grouping_func(::pg_query::GroupingFunc* grouping_func) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (grouping_func) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(grouping_func); if (message_arena != submessage_arena) { grouping_func = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, grouping_func, submessage_arena); } set_has_grouping_func(); node_.grouping_func_ = grouping_func; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.grouping_func) } void Node::set_allocated_window_func(::pg_query::WindowFunc* window_func) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (window_func) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(window_func); if (message_arena != submessage_arena) { window_func = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, window_func, submessage_arena); } set_has_window_func(); node_.window_func_ = window_func; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.window_func) } void Node::set_allocated_subscripting_ref(::pg_query::SubscriptingRef* subscripting_ref) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (subscripting_ref) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(subscripting_ref); if (message_arena != submessage_arena) { subscripting_ref = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, subscripting_ref, submessage_arena); } set_has_subscripting_ref(); node_.subscripting_ref_ = subscripting_ref; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.subscripting_ref) } void Node::set_allocated_func_expr(::pg_query::FuncExpr* func_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (func_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(func_expr); if (message_arena != submessage_arena) { func_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, func_expr, submessage_arena); } set_has_func_expr(); node_.func_expr_ = func_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.func_expr) } void Node::set_allocated_named_arg_expr(::pg_query::NamedArgExpr* named_arg_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (named_arg_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(named_arg_expr); if (message_arena != submessage_arena) { named_arg_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, named_arg_expr, submessage_arena); } set_has_named_arg_expr(); node_.named_arg_expr_ = named_arg_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.named_arg_expr) } void Node::set_allocated_op_expr(::pg_query::OpExpr* op_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (op_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(op_expr); if (message_arena != submessage_arena) { op_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, op_expr, submessage_arena); } set_has_op_expr(); node_.op_expr_ = op_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.op_expr) } void Node::set_allocated_distinct_expr(::pg_query::DistinctExpr* distinct_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (distinct_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(distinct_expr); if (message_arena != submessage_arena) { distinct_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, distinct_expr, submessage_arena); } set_has_distinct_expr(); node_.distinct_expr_ = distinct_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.distinct_expr) } void Node::set_allocated_null_if_expr(::pg_query::NullIfExpr* null_if_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (null_if_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(null_if_expr); if (message_arena != submessage_arena) { null_if_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, null_if_expr, submessage_arena); } set_has_null_if_expr(); node_.null_if_expr_ = null_if_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.null_if_expr) } void Node::set_allocated_scalar_array_op_expr(::pg_query::ScalarArrayOpExpr* scalar_array_op_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (scalar_array_op_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(scalar_array_op_expr); if (message_arena != submessage_arena) { scalar_array_op_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, scalar_array_op_expr, submessage_arena); } set_has_scalar_array_op_expr(); node_.scalar_array_op_expr_ = scalar_array_op_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.scalar_array_op_expr) } void Node::set_allocated_bool_expr(::pg_query::BoolExpr* bool_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (bool_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(bool_expr); if (message_arena != submessage_arena) { bool_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, bool_expr, submessage_arena); } set_has_bool_expr(); node_.bool_expr_ = bool_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.bool_expr) } void Node::set_allocated_sub_link(::pg_query::SubLink* sub_link) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (sub_link) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sub_link); if (message_arena != submessage_arena) { sub_link = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sub_link, submessage_arena); } set_has_sub_link(); node_.sub_link_ = sub_link; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.sub_link) } void Node::set_allocated_sub_plan(::pg_query::SubPlan* sub_plan) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (sub_plan) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sub_plan); if (message_arena != submessage_arena) { sub_plan = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sub_plan, submessage_arena); } set_has_sub_plan(); node_.sub_plan_ = sub_plan; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.sub_plan) } void Node::set_allocated_alternative_sub_plan(::pg_query::AlternativeSubPlan* alternative_sub_plan) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alternative_sub_plan) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alternative_sub_plan); if (message_arena != submessage_arena) { alternative_sub_plan = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alternative_sub_plan, submessage_arena); } set_has_alternative_sub_plan(); node_.alternative_sub_plan_ = alternative_sub_plan; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alternative_sub_plan) } void Node::set_allocated_field_select(::pg_query::FieldSelect* field_select) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (field_select) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(field_select); if (message_arena != submessage_arena) { field_select = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, field_select, submessage_arena); } set_has_field_select(); node_.field_select_ = field_select; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.field_select) } void Node::set_allocated_field_store(::pg_query::FieldStore* field_store) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (field_store) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(field_store); if (message_arena != submessage_arena) { field_store = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, field_store, submessage_arena); } set_has_field_store(); node_.field_store_ = field_store; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.field_store) } void Node::set_allocated_relabel_type(::pg_query::RelabelType* relabel_type) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (relabel_type) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relabel_type); if (message_arena != submessage_arena) { relabel_type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relabel_type, submessage_arena); } set_has_relabel_type(); node_.relabel_type_ = relabel_type; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.relabel_type) } void Node::set_allocated_coerce_via_io(::pg_query::CoerceViaIO* coerce_via_io) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (coerce_via_io) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(coerce_via_io); if (message_arena != submessage_arena) { coerce_via_io = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, coerce_via_io, submessage_arena); } set_has_coerce_via_io(); node_.coerce_via_io_ = coerce_via_io; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.coerce_via_io) } void Node::set_allocated_array_coerce_expr(::pg_query::ArrayCoerceExpr* array_coerce_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (array_coerce_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(array_coerce_expr); if (message_arena != submessage_arena) { array_coerce_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, array_coerce_expr, submessage_arena); } set_has_array_coerce_expr(); node_.array_coerce_expr_ = array_coerce_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.array_coerce_expr) } void Node::set_allocated_convert_rowtype_expr(::pg_query::ConvertRowtypeExpr* convert_rowtype_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (convert_rowtype_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(convert_rowtype_expr); if (message_arena != submessage_arena) { convert_rowtype_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, convert_rowtype_expr, submessage_arena); } set_has_convert_rowtype_expr(); node_.convert_rowtype_expr_ = convert_rowtype_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.convert_rowtype_expr) } void Node::set_allocated_collate_expr(::pg_query::CollateExpr* collate_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (collate_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(collate_expr); if (message_arena != submessage_arena) { collate_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, collate_expr, submessage_arena); } set_has_collate_expr(); node_.collate_expr_ = collate_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.collate_expr) } void Node::set_allocated_case_expr(::pg_query::CaseExpr* case_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (case_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(case_expr); if (message_arena != submessage_arena) { case_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, case_expr, submessage_arena); } set_has_case_expr(); node_.case_expr_ = case_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.case_expr) } void Node::set_allocated_case_when(::pg_query::CaseWhen* case_when) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (case_when) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(case_when); if (message_arena != submessage_arena) { case_when = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, case_when, submessage_arena); } set_has_case_when(); node_.case_when_ = case_when; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.case_when) } void Node::set_allocated_case_test_expr(::pg_query::CaseTestExpr* case_test_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (case_test_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(case_test_expr); if (message_arena != submessage_arena) { case_test_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, case_test_expr, submessage_arena); } set_has_case_test_expr(); node_.case_test_expr_ = case_test_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.case_test_expr) } void Node::set_allocated_array_expr(::pg_query::ArrayExpr* array_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (array_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(array_expr); if (message_arena != submessage_arena) { array_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, array_expr, submessage_arena); } set_has_array_expr(); node_.array_expr_ = array_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.array_expr) } void Node::set_allocated_row_expr(::pg_query::RowExpr* row_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (row_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(row_expr); if (message_arena != submessage_arena) { row_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, row_expr, submessage_arena); } set_has_row_expr(); node_.row_expr_ = row_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.row_expr) } void Node::set_allocated_row_compare_expr(::pg_query::RowCompareExpr* row_compare_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (row_compare_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(row_compare_expr); if (message_arena != submessage_arena) { row_compare_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, row_compare_expr, submessage_arena); } set_has_row_compare_expr(); node_.row_compare_expr_ = row_compare_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.row_compare_expr) } void Node::set_allocated_coalesce_expr(::pg_query::CoalesceExpr* coalesce_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (coalesce_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(coalesce_expr); if (message_arena != submessage_arena) { coalesce_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, coalesce_expr, submessage_arena); } set_has_coalesce_expr(); node_.coalesce_expr_ = coalesce_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.coalesce_expr) } void Node::set_allocated_min_max_expr(::pg_query::MinMaxExpr* min_max_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (min_max_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(min_max_expr); if (message_arena != submessage_arena) { min_max_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, min_max_expr, submessage_arena); } set_has_min_max_expr(); node_.min_max_expr_ = min_max_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.min_max_expr) } void Node::set_allocated_sqlvalue_function(::pg_query::SQLValueFunction* sqlvalue_function) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (sqlvalue_function) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sqlvalue_function); if (message_arena != submessage_arena) { sqlvalue_function = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sqlvalue_function, submessage_arena); } set_has_sqlvalue_function(); node_.sqlvalue_function_ = sqlvalue_function; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.sqlvalue_function) } void Node::set_allocated_xml_expr(::pg_query::XmlExpr* xml_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (xml_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xml_expr); if (message_arena != submessage_arena) { xml_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xml_expr, submessage_arena); } set_has_xml_expr(); node_.xml_expr_ = xml_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.xml_expr) } void Node::set_allocated_null_test(::pg_query::NullTest* null_test) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (null_test) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(null_test); if (message_arena != submessage_arena) { null_test = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, null_test, submessage_arena); } set_has_null_test(); node_.null_test_ = null_test; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.null_test) } void Node::set_allocated_boolean_test(::pg_query::BooleanTest* boolean_test) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (boolean_test) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(boolean_test); if (message_arena != submessage_arena) { boolean_test = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, boolean_test, submessage_arena); } set_has_boolean_test(); node_.boolean_test_ = boolean_test; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.boolean_test) } void Node::set_allocated_coerce_to_domain(::pg_query::CoerceToDomain* coerce_to_domain) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (coerce_to_domain) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(coerce_to_domain); if (message_arena != submessage_arena) { coerce_to_domain = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, coerce_to_domain, submessage_arena); } set_has_coerce_to_domain(); node_.coerce_to_domain_ = coerce_to_domain; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.coerce_to_domain) } void Node::set_allocated_coerce_to_domain_value(::pg_query::CoerceToDomainValue* coerce_to_domain_value) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (coerce_to_domain_value) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(coerce_to_domain_value); if (message_arena != submessage_arena) { coerce_to_domain_value = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, coerce_to_domain_value, submessage_arena); } set_has_coerce_to_domain_value(); node_.coerce_to_domain_value_ = coerce_to_domain_value; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.coerce_to_domain_value) } void Node::set_allocated_set_to_default(::pg_query::SetToDefault* set_to_default) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (set_to_default) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(set_to_default); if (message_arena != submessage_arena) { set_to_default = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, set_to_default, submessage_arena); } set_has_set_to_default(); node_.set_to_default_ = set_to_default; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.set_to_default) } void Node::set_allocated_current_of_expr(::pg_query::CurrentOfExpr* current_of_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (current_of_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(current_of_expr); if (message_arena != submessage_arena) { current_of_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, current_of_expr, submessage_arena); } set_has_current_of_expr(); node_.current_of_expr_ = current_of_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.current_of_expr) } void Node::set_allocated_next_value_expr(::pg_query::NextValueExpr* next_value_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (next_value_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(next_value_expr); if (message_arena != submessage_arena) { next_value_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, next_value_expr, submessage_arena); } set_has_next_value_expr(); node_.next_value_expr_ = next_value_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.next_value_expr) } void Node::set_allocated_inference_elem(::pg_query::InferenceElem* inference_elem) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (inference_elem) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(inference_elem); if (message_arena != submessage_arena) { inference_elem = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, inference_elem, submessage_arena); } set_has_inference_elem(); node_.inference_elem_ = inference_elem; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.inference_elem) } void Node::set_allocated_target_entry(::pg_query::TargetEntry* target_entry) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (target_entry) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(target_entry); if (message_arena != submessage_arena) { target_entry = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, target_entry, submessage_arena); } set_has_target_entry(); node_.target_entry_ = target_entry; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.target_entry) } void Node::set_allocated_range_tbl_ref(::pg_query::RangeTblRef* range_tbl_ref) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (range_tbl_ref) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(range_tbl_ref); if (message_arena != submessage_arena) { range_tbl_ref = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, range_tbl_ref, submessage_arena); } set_has_range_tbl_ref(); node_.range_tbl_ref_ = range_tbl_ref; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_tbl_ref) } void Node::set_allocated_join_expr(::pg_query::JoinExpr* join_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (join_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(join_expr); if (message_arena != submessage_arena) { join_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, join_expr, submessage_arena); } set_has_join_expr(); node_.join_expr_ = join_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.join_expr) } void Node::set_allocated_from_expr(::pg_query::FromExpr* from_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (from_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(from_expr); if (message_arena != submessage_arena) { from_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, from_expr, submessage_arena); } set_has_from_expr(); node_.from_expr_ = from_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.from_expr) } void Node::set_allocated_on_conflict_expr(::pg_query::OnConflictExpr* on_conflict_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (on_conflict_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(on_conflict_expr); if (message_arena != submessage_arena) { on_conflict_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, on_conflict_expr, submessage_arena); } set_has_on_conflict_expr(); node_.on_conflict_expr_ = on_conflict_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.on_conflict_expr) } void Node::set_allocated_into_clause(::pg_query::IntoClause* into_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (into_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(into_clause); if (message_arena != submessage_arena) { into_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, into_clause, submessage_arena); } set_has_into_clause(); node_.into_clause_ = into_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.into_clause) } void Node::set_allocated_raw_stmt(::pg_query::RawStmt* raw_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (raw_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(raw_stmt); if (message_arena != submessage_arena) { raw_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, raw_stmt, submessage_arena); } set_has_raw_stmt(); node_.raw_stmt_ = raw_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.raw_stmt) } void Node::set_allocated_query(::pg_query::Query* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } set_has_query(); node_.query_ = query; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.query) } void Node::set_allocated_insert_stmt(::pg_query::InsertStmt* insert_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (insert_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(insert_stmt); if (message_arena != submessage_arena) { insert_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, insert_stmt, submessage_arena); } set_has_insert_stmt(); node_.insert_stmt_ = insert_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.insert_stmt) } void Node::set_allocated_delete_stmt(::pg_query::DeleteStmt* delete_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (delete_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(delete_stmt); if (message_arena != submessage_arena) { delete_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, delete_stmt, submessage_arena); } set_has_delete_stmt(); node_.delete_stmt_ = delete_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.delete_stmt) } void Node::set_allocated_update_stmt(::pg_query::UpdateStmt* update_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (update_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(update_stmt); if (message_arena != submessage_arena) { update_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, update_stmt, submessage_arena); } set_has_update_stmt(); node_.update_stmt_ = update_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.update_stmt) } void Node::set_allocated_select_stmt(::pg_query::SelectStmt* select_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (select_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(select_stmt); if (message_arena != submessage_arena) { select_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, select_stmt, submessage_arena); } set_has_select_stmt(); node_.select_stmt_ = select_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.select_stmt) } void Node::set_allocated_alter_table_stmt(::pg_query::AlterTableStmt* alter_table_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_table_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_table_stmt); if (message_arena != submessage_arena) { alter_table_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_table_stmt, submessage_arena); } set_has_alter_table_stmt(); node_.alter_table_stmt_ = alter_table_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_table_stmt) } void Node::set_allocated_alter_table_cmd(::pg_query::AlterTableCmd* alter_table_cmd) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_table_cmd) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_table_cmd); if (message_arena != submessage_arena) { alter_table_cmd = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_table_cmd, submessage_arena); } set_has_alter_table_cmd(); node_.alter_table_cmd_ = alter_table_cmd; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_table_cmd) } void Node::set_allocated_alter_domain_stmt(::pg_query::AlterDomainStmt* alter_domain_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_domain_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_domain_stmt); if (message_arena != submessage_arena) { alter_domain_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_domain_stmt, submessage_arena); } set_has_alter_domain_stmt(); node_.alter_domain_stmt_ = alter_domain_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_domain_stmt) } void Node::set_allocated_set_operation_stmt(::pg_query::SetOperationStmt* set_operation_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (set_operation_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(set_operation_stmt); if (message_arena != submessage_arena) { set_operation_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, set_operation_stmt, submessage_arena); } set_has_set_operation_stmt(); node_.set_operation_stmt_ = set_operation_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.set_operation_stmt) } void Node::set_allocated_grant_stmt(::pg_query::GrantStmt* grant_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (grant_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(grant_stmt); if (message_arena != submessage_arena) { grant_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, grant_stmt, submessage_arena); } set_has_grant_stmt(); node_.grant_stmt_ = grant_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.grant_stmt) } void Node::set_allocated_grant_role_stmt(::pg_query::GrantRoleStmt* grant_role_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (grant_role_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(grant_role_stmt); if (message_arena != submessage_arena) { grant_role_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, grant_role_stmt, submessage_arena); } set_has_grant_role_stmt(); node_.grant_role_stmt_ = grant_role_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.grant_role_stmt) } void Node::set_allocated_alter_default_privileges_stmt(::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_default_privileges_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_default_privileges_stmt); if (message_arena != submessage_arena) { alter_default_privileges_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_default_privileges_stmt, submessage_arena); } set_has_alter_default_privileges_stmt(); node_.alter_default_privileges_stmt_ = alter_default_privileges_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_default_privileges_stmt) } void Node::set_allocated_close_portal_stmt(::pg_query::ClosePortalStmt* close_portal_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (close_portal_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(close_portal_stmt); if (message_arena != submessage_arena) { close_portal_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, close_portal_stmt, submessage_arena); } set_has_close_portal_stmt(); node_.close_portal_stmt_ = close_portal_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.close_portal_stmt) } void Node::set_allocated_cluster_stmt(::pg_query::ClusterStmt* cluster_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (cluster_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(cluster_stmt); if (message_arena != submessage_arena) { cluster_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, cluster_stmt, submessage_arena); } set_has_cluster_stmt(); node_.cluster_stmt_ = cluster_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.cluster_stmt) } void Node::set_allocated_copy_stmt(::pg_query::CopyStmt* copy_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (copy_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(copy_stmt); if (message_arena != submessage_arena) { copy_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, copy_stmt, submessage_arena); } set_has_copy_stmt(); node_.copy_stmt_ = copy_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.copy_stmt) } void Node::set_allocated_create_stmt(::pg_query::CreateStmt* create_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_stmt); if (message_arena != submessage_arena) { create_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_stmt, submessage_arena); } set_has_create_stmt(); node_.create_stmt_ = create_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_stmt) } void Node::set_allocated_define_stmt(::pg_query::DefineStmt* define_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (define_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(define_stmt); if (message_arena != submessage_arena) { define_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, define_stmt, submessage_arena); } set_has_define_stmt(); node_.define_stmt_ = define_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.define_stmt) } void Node::set_allocated_drop_stmt(::pg_query::DropStmt* drop_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (drop_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(drop_stmt); if (message_arena != submessage_arena) { drop_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, drop_stmt, submessage_arena); } set_has_drop_stmt(); node_.drop_stmt_ = drop_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.drop_stmt) } void Node::set_allocated_truncate_stmt(::pg_query::TruncateStmt* truncate_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (truncate_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(truncate_stmt); if (message_arena != submessage_arena) { truncate_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, truncate_stmt, submessage_arena); } set_has_truncate_stmt(); node_.truncate_stmt_ = truncate_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.truncate_stmt) } void Node::set_allocated_comment_stmt(::pg_query::CommentStmt* comment_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (comment_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(comment_stmt); if (message_arena != submessage_arena) { comment_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, comment_stmt, submessage_arena); } set_has_comment_stmt(); node_.comment_stmt_ = comment_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.comment_stmt) } void Node::set_allocated_fetch_stmt(::pg_query::FetchStmt* fetch_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (fetch_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(fetch_stmt); if (message_arena != submessage_arena) { fetch_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, fetch_stmt, submessage_arena); } set_has_fetch_stmt(); node_.fetch_stmt_ = fetch_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.fetch_stmt) } void Node::set_allocated_index_stmt(::pg_query::IndexStmt* index_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (index_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(index_stmt); if (message_arena != submessage_arena) { index_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, index_stmt, submessage_arena); } set_has_index_stmt(); node_.index_stmt_ = index_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.index_stmt) } void Node::set_allocated_create_function_stmt(::pg_query::CreateFunctionStmt* create_function_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_function_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_function_stmt); if (message_arena != submessage_arena) { create_function_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_function_stmt, submessage_arena); } set_has_create_function_stmt(); node_.create_function_stmt_ = create_function_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_function_stmt) } void Node::set_allocated_alter_function_stmt(::pg_query::AlterFunctionStmt* alter_function_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_function_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_function_stmt); if (message_arena != submessage_arena) { alter_function_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_function_stmt, submessage_arena); } set_has_alter_function_stmt(); node_.alter_function_stmt_ = alter_function_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_function_stmt) } void Node::set_allocated_do_stmt(::pg_query::DoStmt* do_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (do_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(do_stmt); if (message_arena != submessage_arena) { do_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, do_stmt, submessage_arena); } set_has_do_stmt(); node_.do_stmt_ = do_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.do_stmt) } void Node::set_allocated_rename_stmt(::pg_query::RenameStmt* rename_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (rename_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rename_stmt); if (message_arena != submessage_arena) { rename_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rename_stmt, submessage_arena); } set_has_rename_stmt(); node_.rename_stmt_ = rename_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.rename_stmt) } void Node::set_allocated_rule_stmt(::pg_query::RuleStmt* rule_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (rule_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rule_stmt); if (message_arena != submessage_arena) { rule_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rule_stmt, submessage_arena); } set_has_rule_stmt(); node_.rule_stmt_ = rule_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.rule_stmt) } void Node::set_allocated_notify_stmt(::pg_query::NotifyStmt* notify_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (notify_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(notify_stmt); if (message_arena != submessage_arena) { notify_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, notify_stmt, submessage_arena); } set_has_notify_stmt(); node_.notify_stmt_ = notify_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.notify_stmt) } void Node::set_allocated_listen_stmt(::pg_query::ListenStmt* listen_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (listen_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(listen_stmt); if (message_arena != submessage_arena) { listen_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, listen_stmt, submessage_arena); } set_has_listen_stmt(); node_.listen_stmt_ = listen_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.listen_stmt) } void Node::set_allocated_unlisten_stmt(::pg_query::UnlistenStmt* unlisten_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (unlisten_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(unlisten_stmt); if (message_arena != submessage_arena) { unlisten_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, unlisten_stmt, submessage_arena); } set_has_unlisten_stmt(); node_.unlisten_stmt_ = unlisten_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.unlisten_stmt) } void Node::set_allocated_transaction_stmt(::pg_query::TransactionStmt* transaction_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (transaction_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(transaction_stmt); if (message_arena != submessage_arena) { transaction_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, transaction_stmt, submessage_arena); } set_has_transaction_stmt(); node_.transaction_stmt_ = transaction_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.transaction_stmt) } void Node::set_allocated_view_stmt(::pg_query::ViewStmt* view_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (view_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(view_stmt); if (message_arena != submessage_arena) { view_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, view_stmt, submessage_arena); } set_has_view_stmt(); node_.view_stmt_ = view_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.view_stmt) } void Node::set_allocated_load_stmt(::pg_query::LoadStmt* load_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (load_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(load_stmt); if (message_arena != submessage_arena) { load_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, load_stmt, submessage_arena); } set_has_load_stmt(); node_.load_stmt_ = load_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.load_stmt) } void Node::set_allocated_create_domain_stmt(::pg_query::CreateDomainStmt* create_domain_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_domain_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_domain_stmt); if (message_arena != submessage_arena) { create_domain_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_domain_stmt, submessage_arena); } set_has_create_domain_stmt(); node_.create_domain_stmt_ = create_domain_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_domain_stmt) } void Node::set_allocated_createdb_stmt(::pg_query::CreatedbStmt* createdb_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (createdb_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(createdb_stmt); if (message_arena != submessage_arena) { createdb_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, createdb_stmt, submessage_arena); } set_has_createdb_stmt(); node_.createdb_stmt_ = createdb_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.createdb_stmt) } void Node::set_allocated_dropdb_stmt(::pg_query::DropdbStmt* dropdb_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (dropdb_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(dropdb_stmt); if (message_arena != submessage_arena) { dropdb_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, dropdb_stmt, submessage_arena); } set_has_dropdb_stmt(); node_.dropdb_stmt_ = dropdb_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.dropdb_stmt) } void Node::set_allocated_vacuum_stmt(::pg_query::VacuumStmt* vacuum_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (vacuum_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(vacuum_stmt); if (message_arena != submessage_arena) { vacuum_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, vacuum_stmt, submessage_arena); } set_has_vacuum_stmt(); node_.vacuum_stmt_ = vacuum_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.vacuum_stmt) } void Node::set_allocated_explain_stmt(::pg_query::ExplainStmt* explain_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (explain_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(explain_stmt); if (message_arena != submessage_arena) { explain_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, explain_stmt, submessage_arena); } set_has_explain_stmt(); node_.explain_stmt_ = explain_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.explain_stmt) } void Node::set_allocated_create_table_as_stmt(::pg_query::CreateTableAsStmt* create_table_as_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_table_as_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_table_as_stmt); if (message_arena != submessage_arena) { create_table_as_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_table_as_stmt, submessage_arena); } set_has_create_table_as_stmt(); node_.create_table_as_stmt_ = create_table_as_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_table_as_stmt) } void Node::set_allocated_create_seq_stmt(::pg_query::CreateSeqStmt* create_seq_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_seq_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_seq_stmt); if (message_arena != submessage_arena) { create_seq_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_seq_stmt, submessage_arena); } set_has_create_seq_stmt(); node_.create_seq_stmt_ = create_seq_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_seq_stmt) } void Node::set_allocated_alter_seq_stmt(::pg_query::AlterSeqStmt* alter_seq_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_seq_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_seq_stmt); if (message_arena != submessage_arena) { alter_seq_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_seq_stmt, submessage_arena); } set_has_alter_seq_stmt(); node_.alter_seq_stmt_ = alter_seq_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_seq_stmt) } void Node::set_allocated_variable_set_stmt(::pg_query::VariableSetStmt* variable_set_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (variable_set_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(variable_set_stmt); if (message_arena != submessage_arena) { variable_set_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, variable_set_stmt, submessage_arena); } set_has_variable_set_stmt(); node_.variable_set_stmt_ = variable_set_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.variable_set_stmt) } void Node::set_allocated_variable_show_stmt(::pg_query::VariableShowStmt* variable_show_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (variable_show_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(variable_show_stmt); if (message_arena != submessage_arena) { variable_show_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, variable_show_stmt, submessage_arena); } set_has_variable_show_stmt(); node_.variable_show_stmt_ = variable_show_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.variable_show_stmt) } void Node::set_allocated_discard_stmt(::pg_query::DiscardStmt* discard_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (discard_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(discard_stmt); if (message_arena != submessage_arena) { discard_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, discard_stmt, submessage_arena); } set_has_discard_stmt(); node_.discard_stmt_ = discard_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.discard_stmt) } void Node::set_allocated_create_trig_stmt(::pg_query::CreateTrigStmt* create_trig_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_trig_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_trig_stmt); if (message_arena != submessage_arena) { create_trig_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_trig_stmt, submessage_arena); } set_has_create_trig_stmt(); node_.create_trig_stmt_ = create_trig_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_trig_stmt) } void Node::set_allocated_create_plang_stmt(::pg_query::CreatePLangStmt* create_plang_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_plang_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_plang_stmt); if (message_arena != submessage_arena) { create_plang_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_plang_stmt, submessage_arena); } set_has_create_plang_stmt(); node_.create_plang_stmt_ = create_plang_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_plang_stmt) } void Node::set_allocated_create_role_stmt(::pg_query::CreateRoleStmt* create_role_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_role_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_role_stmt); if (message_arena != submessage_arena) { create_role_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_role_stmt, submessage_arena); } set_has_create_role_stmt(); node_.create_role_stmt_ = create_role_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_role_stmt) } void Node::set_allocated_alter_role_stmt(::pg_query::AlterRoleStmt* alter_role_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_role_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_role_stmt); if (message_arena != submessage_arena) { alter_role_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_role_stmt, submessage_arena); } set_has_alter_role_stmt(); node_.alter_role_stmt_ = alter_role_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_role_stmt) } void Node::set_allocated_drop_role_stmt(::pg_query::DropRoleStmt* drop_role_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (drop_role_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(drop_role_stmt); if (message_arena != submessage_arena) { drop_role_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, drop_role_stmt, submessage_arena); } set_has_drop_role_stmt(); node_.drop_role_stmt_ = drop_role_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.drop_role_stmt) } void Node::set_allocated_lock_stmt(::pg_query::LockStmt* lock_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (lock_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(lock_stmt); if (message_arena != submessage_arena) { lock_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, lock_stmt, submessage_arena); } set_has_lock_stmt(); node_.lock_stmt_ = lock_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.lock_stmt) } void Node::set_allocated_constraints_set_stmt(::pg_query::ConstraintsSetStmt* constraints_set_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (constraints_set_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(constraints_set_stmt); if (message_arena != submessage_arena) { constraints_set_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, constraints_set_stmt, submessage_arena); } set_has_constraints_set_stmt(); node_.constraints_set_stmt_ = constraints_set_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.constraints_set_stmt) } void Node::set_allocated_reindex_stmt(::pg_query::ReindexStmt* reindex_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (reindex_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(reindex_stmt); if (message_arena != submessage_arena) { reindex_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, reindex_stmt, submessage_arena); } set_has_reindex_stmt(); node_.reindex_stmt_ = reindex_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.reindex_stmt) } void Node::set_allocated_check_point_stmt(::pg_query::CheckPointStmt* check_point_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (check_point_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(check_point_stmt); if (message_arena != submessage_arena) { check_point_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, check_point_stmt, submessage_arena); } set_has_check_point_stmt(); node_.check_point_stmt_ = check_point_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.check_point_stmt) } void Node::set_allocated_create_schema_stmt(::pg_query::CreateSchemaStmt* create_schema_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_schema_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_schema_stmt); if (message_arena != submessage_arena) { create_schema_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_schema_stmt, submessage_arena); } set_has_create_schema_stmt(); node_.create_schema_stmt_ = create_schema_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_schema_stmt) } void Node::set_allocated_alter_database_stmt(::pg_query::AlterDatabaseStmt* alter_database_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_database_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_database_stmt); if (message_arena != submessage_arena) { alter_database_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_database_stmt, submessage_arena); } set_has_alter_database_stmt(); node_.alter_database_stmt_ = alter_database_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_database_stmt) } void Node::set_allocated_alter_database_set_stmt(::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_database_set_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_database_set_stmt); if (message_arena != submessage_arena) { alter_database_set_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_database_set_stmt, submessage_arena); } set_has_alter_database_set_stmt(); node_.alter_database_set_stmt_ = alter_database_set_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_database_set_stmt) } void Node::set_allocated_alter_role_set_stmt(::pg_query::AlterRoleSetStmt* alter_role_set_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_role_set_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_role_set_stmt); if (message_arena != submessage_arena) { alter_role_set_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_role_set_stmt, submessage_arena); } set_has_alter_role_set_stmt(); node_.alter_role_set_stmt_ = alter_role_set_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_role_set_stmt) } void Node::set_allocated_create_conversion_stmt(::pg_query::CreateConversionStmt* create_conversion_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_conversion_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_conversion_stmt); if (message_arena != submessage_arena) { create_conversion_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_conversion_stmt, submessage_arena); } set_has_create_conversion_stmt(); node_.create_conversion_stmt_ = create_conversion_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_conversion_stmt) } void Node::set_allocated_create_cast_stmt(::pg_query::CreateCastStmt* create_cast_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_cast_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_cast_stmt); if (message_arena != submessage_arena) { create_cast_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_cast_stmt, submessage_arena); } set_has_create_cast_stmt(); node_.create_cast_stmt_ = create_cast_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_cast_stmt) } void Node::set_allocated_create_op_class_stmt(::pg_query::CreateOpClassStmt* create_op_class_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_op_class_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_op_class_stmt); if (message_arena != submessage_arena) { create_op_class_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_op_class_stmt, submessage_arena); } set_has_create_op_class_stmt(); node_.create_op_class_stmt_ = create_op_class_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_op_class_stmt) } void Node::set_allocated_create_op_family_stmt(::pg_query::CreateOpFamilyStmt* create_op_family_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_op_family_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_op_family_stmt); if (message_arena != submessage_arena) { create_op_family_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_op_family_stmt, submessage_arena); } set_has_create_op_family_stmt(); node_.create_op_family_stmt_ = create_op_family_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_op_family_stmt) } void Node::set_allocated_alter_op_family_stmt(::pg_query::AlterOpFamilyStmt* alter_op_family_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_op_family_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_op_family_stmt); if (message_arena != submessage_arena) { alter_op_family_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_op_family_stmt, submessage_arena); } set_has_alter_op_family_stmt(); node_.alter_op_family_stmt_ = alter_op_family_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_op_family_stmt) } void Node::set_allocated_prepare_stmt(::pg_query::PrepareStmt* prepare_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (prepare_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(prepare_stmt); if (message_arena != submessage_arena) { prepare_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, prepare_stmt, submessage_arena); } set_has_prepare_stmt(); node_.prepare_stmt_ = prepare_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.prepare_stmt) } void Node::set_allocated_execute_stmt(::pg_query::ExecuteStmt* execute_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (execute_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(execute_stmt); if (message_arena != submessage_arena) { execute_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, execute_stmt, submessage_arena); } set_has_execute_stmt(); node_.execute_stmt_ = execute_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.execute_stmt) } void Node::set_allocated_deallocate_stmt(::pg_query::DeallocateStmt* deallocate_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (deallocate_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(deallocate_stmt); if (message_arena != submessage_arena) { deallocate_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, deallocate_stmt, submessage_arena); } set_has_deallocate_stmt(); node_.deallocate_stmt_ = deallocate_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.deallocate_stmt) } void Node::set_allocated_declare_cursor_stmt(::pg_query::DeclareCursorStmt* declare_cursor_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (declare_cursor_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(declare_cursor_stmt); if (message_arena != submessage_arena) { declare_cursor_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, declare_cursor_stmt, submessage_arena); } set_has_declare_cursor_stmt(); node_.declare_cursor_stmt_ = declare_cursor_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.declare_cursor_stmt) } void Node::set_allocated_create_table_space_stmt(::pg_query::CreateTableSpaceStmt* create_table_space_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_table_space_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_table_space_stmt); if (message_arena != submessage_arena) { create_table_space_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_table_space_stmt, submessage_arena); } set_has_create_table_space_stmt(); node_.create_table_space_stmt_ = create_table_space_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_table_space_stmt) } void Node::set_allocated_drop_table_space_stmt(::pg_query::DropTableSpaceStmt* drop_table_space_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (drop_table_space_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(drop_table_space_stmt); if (message_arena != submessage_arena) { drop_table_space_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, drop_table_space_stmt, submessage_arena); } set_has_drop_table_space_stmt(); node_.drop_table_space_stmt_ = drop_table_space_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.drop_table_space_stmt) } void Node::set_allocated_alter_object_depends_stmt(::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_object_depends_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_object_depends_stmt); if (message_arena != submessage_arena) { alter_object_depends_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_object_depends_stmt, submessage_arena); } set_has_alter_object_depends_stmt(); node_.alter_object_depends_stmt_ = alter_object_depends_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_object_depends_stmt) } void Node::set_allocated_alter_object_schema_stmt(::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_object_schema_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_object_schema_stmt); if (message_arena != submessage_arena) { alter_object_schema_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_object_schema_stmt, submessage_arena); } set_has_alter_object_schema_stmt(); node_.alter_object_schema_stmt_ = alter_object_schema_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_object_schema_stmt) } void Node::set_allocated_alter_owner_stmt(::pg_query::AlterOwnerStmt* alter_owner_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_owner_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_owner_stmt); if (message_arena != submessage_arena) { alter_owner_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_owner_stmt, submessage_arena); } set_has_alter_owner_stmt(); node_.alter_owner_stmt_ = alter_owner_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_owner_stmt) } void Node::set_allocated_alter_operator_stmt(::pg_query::AlterOperatorStmt* alter_operator_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_operator_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_operator_stmt); if (message_arena != submessage_arena) { alter_operator_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_operator_stmt, submessage_arena); } set_has_alter_operator_stmt(); node_.alter_operator_stmt_ = alter_operator_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_operator_stmt) } void Node::set_allocated_alter_type_stmt(::pg_query::AlterTypeStmt* alter_type_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_type_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_type_stmt); if (message_arena != submessage_arena) { alter_type_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_type_stmt, submessage_arena); } set_has_alter_type_stmt(); node_.alter_type_stmt_ = alter_type_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_type_stmt) } void Node::set_allocated_drop_owned_stmt(::pg_query::DropOwnedStmt* drop_owned_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (drop_owned_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(drop_owned_stmt); if (message_arena != submessage_arena) { drop_owned_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, drop_owned_stmt, submessage_arena); } set_has_drop_owned_stmt(); node_.drop_owned_stmt_ = drop_owned_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.drop_owned_stmt) } void Node::set_allocated_reassign_owned_stmt(::pg_query::ReassignOwnedStmt* reassign_owned_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (reassign_owned_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(reassign_owned_stmt); if (message_arena != submessage_arena) { reassign_owned_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, reassign_owned_stmt, submessage_arena); } set_has_reassign_owned_stmt(); node_.reassign_owned_stmt_ = reassign_owned_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.reassign_owned_stmt) } void Node::set_allocated_composite_type_stmt(::pg_query::CompositeTypeStmt* composite_type_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (composite_type_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(composite_type_stmt); if (message_arena != submessage_arena) { composite_type_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, composite_type_stmt, submessage_arena); } set_has_composite_type_stmt(); node_.composite_type_stmt_ = composite_type_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.composite_type_stmt) } void Node::set_allocated_create_enum_stmt(::pg_query::CreateEnumStmt* create_enum_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_enum_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_enum_stmt); if (message_arena != submessage_arena) { create_enum_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_enum_stmt, submessage_arena); } set_has_create_enum_stmt(); node_.create_enum_stmt_ = create_enum_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_enum_stmt) } void Node::set_allocated_create_range_stmt(::pg_query::CreateRangeStmt* create_range_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_range_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_range_stmt); if (message_arena != submessage_arena) { create_range_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_range_stmt, submessage_arena); } set_has_create_range_stmt(); node_.create_range_stmt_ = create_range_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_range_stmt) } void Node::set_allocated_alter_enum_stmt(::pg_query::AlterEnumStmt* alter_enum_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_enum_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_enum_stmt); if (message_arena != submessage_arena) { alter_enum_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_enum_stmt, submessage_arena); } set_has_alter_enum_stmt(); node_.alter_enum_stmt_ = alter_enum_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_enum_stmt) } void Node::set_allocated_alter_tsdictionary_stmt(::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_tsdictionary_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_tsdictionary_stmt); if (message_arena != submessage_arena) { alter_tsdictionary_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_tsdictionary_stmt, submessage_arena); } set_has_alter_tsdictionary_stmt(); node_.alter_tsdictionary_stmt_ = alter_tsdictionary_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_tsdictionary_stmt) } void Node::set_allocated_alter_tsconfiguration_stmt(::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_tsconfiguration_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_tsconfiguration_stmt); if (message_arena != submessage_arena) { alter_tsconfiguration_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_tsconfiguration_stmt, submessage_arena); } set_has_alter_tsconfiguration_stmt(); node_.alter_tsconfiguration_stmt_ = alter_tsconfiguration_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_tsconfiguration_stmt) } void Node::set_allocated_create_fdw_stmt(::pg_query::CreateFdwStmt* create_fdw_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_fdw_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_fdw_stmt); if (message_arena != submessage_arena) { create_fdw_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_fdw_stmt, submessage_arena); } set_has_create_fdw_stmt(); node_.create_fdw_stmt_ = create_fdw_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_fdw_stmt) } void Node::set_allocated_alter_fdw_stmt(::pg_query::AlterFdwStmt* alter_fdw_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_fdw_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_fdw_stmt); if (message_arena != submessage_arena) { alter_fdw_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_fdw_stmt, submessage_arena); } set_has_alter_fdw_stmt(); node_.alter_fdw_stmt_ = alter_fdw_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_fdw_stmt) } void Node::set_allocated_create_foreign_server_stmt(::pg_query::CreateForeignServerStmt* create_foreign_server_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_foreign_server_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_foreign_server_stmt); if (message_arena != submessage_arena) { create_foreign_server_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_foreign_server_stmt, submessage_arena); } set_has_create_foreign_server_stmt(); node_.create_foreign_server_stmt_ = create_foreign_server_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_foreign_server_stmt) } void Node::set_allocated_alter_foreign_server_stmt(::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_foreign_server_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_foreign_server_stmt); if (message_arena != submessage_arena) { alter_foreign_server_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_foreign_server_stmt, submessage_arena); } set_has_alter_foreign_server_stmt(); node_.alter_foreign_server_stmt_ = alter_foreign_server_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_foreign_server_stmt) } void Node::set_allocated_create_user_mapping_stmt(::pg_query::CreateUserMappingStmt* create_user_mapping_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_user_mapping_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_user_mapping_stmt); if (message_arena != submessage_arena) { create_user_mapping_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_user_mapping_stmt, submessage_arena); } set_has_create_user_mapping_stmt(); node_.create_user_mapping_stmt_ = create_user_mapping_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_user_mapping_stmt) } void Node::set_allocated_alter_user_mapping_stmt(::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_user_mapping_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_user_mapping_stmt); if (message_arena != submessage_arena) { alter_user_mapping_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_user_mapping_stmt, submessage_arena); } set_has_alter_user_mapping_stmt(); node_.alter_user_mapping_stmt_ = alter_user_mapping_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_user_mapping_stmt) } void Node::set_allocated_drop_user_mapping_stmt(::pg_query::DropUserMappingStmt* drop_user_mapping_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (drop_user_mapping_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(drop_user_mapping_stmt); if (message_arena != submessage_arena) { drop_user_mapping_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, drop_user_mapping_stmt, submessage_arena); } set_has_drop_user_mapping_stmt(); node_.drop_user_mapping_stmt_ = drop_user_mapping_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.drop_user_mapping_stmt) } void Node::set_allocated_alter_table_space_options_stmt(::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_table_space_options_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_table_space_options_stmt); if (message_arena != submessage_arena) { alter_table_space_options_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_table_space_options_stmt, submessage_arena); } set_has_alter_table_space_options_stmt(); node_.alter_table_space_options_stmt_ = alter_table_space_options_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_table_space_options_stmt) } void Node::set_allocated_alter_table_move_all_stmt(::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_table_move_all_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_table_move_all_stmt); if (message_arena != submessage_arena) { alter_table_move_all_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_table_move_all_stmt, submessage_arena); } set_has_alter_table_move_all_stmt(); node_.alter_table_move_all_stmt_ = alter_table_move_all_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_table_move_all_stmt) } void Node::set_allocated_sec_label_stmt(::pg_query::SecLabelStmt* sec_label_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (sec_label_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sec_label_stmt); if (message_arena != submessage_arena) { sec_label_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sec_label_stmt, submessage_arena); } set_has_sec_label_stmt(); node_.sec_label_stmt_ = sec_label_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.sec_label_stmt) } void Node::set_allocated_create_foreign_table_stmt(::pg_query::CreateForeignTableStmt* create_foreign_table_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_foreign_table_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_foreign_table_stmt); if (message_arena != submessage_arena) { create_foreign_table_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_foreign_table_stmt, submessage_arena); } set_has_create_foreign_table_stmt(); node_.create_foreign_table_stmt_ = create_foreign_table_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_foreign_table_stmt) } void Node::set_allocated_import_foreign_schema_stmt(::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (import_foreign_schema_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(import_foreign_schema_stmt); if (message_arena != submessage_arena) { import_foreign_schema_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, import_foreign_schema_stmt, submessage_arena); } set_has_import_foreign_schema_stmt(); node_.import_foreign_schema_stmt_ = import_foreign_schema_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.import_foreign_schema_stmt) } void Node::set_allocated_create_extension_stmt(::pg_query::CreateExtensionStmt* create_extension_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_extension_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_extension_stmt); if (message_arena != submessage_arena) { create_extension_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_extension_stmt, submessage_arena); } set_has_create_extension_stmt(); node_.create_extension_stmt_ = create_extension_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_extension_stmt) } void Node::set_allocated_alter_extension_stmt(::pg_query::AlterExtensionStmt* alter_extension_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_extension_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_extension_stmt); if (message_arena != submessage_arena) { alter_extension_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_extension_stmt, submessage_arena); } set_has_alter_extension_stmt(); node_.alter_extension_stmt_ = alter_extension_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_extension_stmt) } void Node::set_allocated_alter_extension_contents_stmt(::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_extension_contents_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_extension_contents_stmt); if (message_arena != submessage_arena) { alter_extension_contents_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_extension_contents_stmt, submessage_arena); } set_has_alter_extension_contents_stmt(); node_.alter_extension_contents_stmt_ = alter_extension_contents_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_extension_contents_stmt) } void Node::set_allocated_create_event_trig_stmt(::pg_query::CreateEventTrigStmt* create_event_trig_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_event_trig_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_event_trig_stmt); if (message_arena != submessage_arena) { create_event_trig_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_event_trig_stmt, submessage_arena); } set_has_create_event_trig_stmt(); node_.create_event_trig_stmt_ = create_event_trig_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_event_trig_stmt) } void Node::set_allocated_alter_event_trig_stmt(::pg_query::AlterEventTrigStmt* alter_event_trig_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_event_trig_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_event_trig_stmt); if (message_arena != submessage_arena) { alter_event_trig_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_event_trig_stmt, submessage_arena); } set_has_alter_event_trig_stmt(); node_.alter_event_trig_stmt_ = alter_event_trig_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_event_trig_stmt) } void Node::set_allocated_refresh_mat_view_stmt(::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (refresh_mat_view_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(refresh_mat_view_stmt); if (message_arena != submessage_arena) { refresh_mat_view_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, refresh_mat_view_stmt, submessage_arena); } set_has_refresh_mat_view_stmt(); node_.refresh_mat_view_stmt_ = refresh_mat_view_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.refresh_mat_view_stmt) } void Node::set_allocated_replica_identity_stmt(::pg_query::ReplicaIdentityStmt* replica_identity_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (replica_identity_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(replica_identity_stmt); if (message_arena != submessage_arena) { replica_identity_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, replica_identity_stmt, submessage_arena); } set_has_replica_identity_stmt(); node_.replica_identity_stmt_ = replica_identity_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.replica_identity_stmt) } void Node::set_allocated_alter_system_stmt(::pg_query::AlterSystemStmt* alter_system_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_system_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_system_stmt); if (message_arena != submessage_arena) { alter_system_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_system_stmt, submessage_arena); } set_has_alter_system_stmt(); node_.alter_system_stmt_ = alter_system_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_system_stmt) } void Node::set_allocated_create_policy_stmt(::pg_query::CreatePolicyStmt* create_policy_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_policy_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_policy_stmt); if (message_arena != submessage_arena) { create_policy_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_policy_stmt, submessage_arena); } set_has_create_policy_stmt(); node_.create_policy_stmt_ = create_policy_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_policy_stmt) } void Node::set_allocated_alter_policy_stmt(::pg_query::AlterPolicyStmt* alter_policy_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_policy_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_policy_stmt); if (message_arena != submessage_arena) { alter_policy_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_policy_stmt, submessage_arena); } set_has_alter_policy_stmt(); node_.alter_policy_stmt_ = alter_policy_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_policy_stmt) } void Node::set_allocated_create_transform_stmt(::pg_query::CreateTransformStmt* create_transform_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_transform_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_transform_stmt); if (message_arena != submessage_arena) { create_transform_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_transform_stmt, submessage_arena); } set_has_create_transform_stmt(); node_.create_transform_stmt_ = create_transform_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_transform_stmt) } void Node::set_allocated_create_am_stmt(::pg_query::CreateAmStmt* create_am_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_am_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_am_stmt); if (message_arena != submessage_arena) { create_am_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_am_stmt, submessage_arena); } set_has_create_am_stmt(); node_.create_am_stmt_ = create_am_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_am_stmt) } void Node::set_allocated_create_publication_stmt(::pg_query::CreatePublicationStmt* create_publication_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_publication_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_publication_stmt); if (message_arena != submessage_arena) { create_publication_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_publication_stmt, submessage_arena); } set_has_create_publication_stmt(); node_.create_publication_stmt_ = create_publication_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_publication_stmt) } void Node::set_allocated_alter_publication_stmt(::pg_query::AlterPublicationStmt* alter_publication_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_publication_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_publication_stmt); if (message_arena != submessage_arena) { alter_publication_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_publication_stmt, submessage_arena); } set_has_alter_publication_stmt(); node_.alter_publication_stmt_ = alter_publication_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_publication_stmt) } void Node::set_allocated_create_subscription_stmt(::pg_query::CreateSubscriptionStmt* create_subscription_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_subscription_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_subscription_stmt); if (message_arena != submessage_arena) { create_subscription_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_subscription_stmt, submessage_arena); } set_has_create_subscription_stmt(); node_.create_subscription_stmt_ = create_subscription_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_subscription_stmt) } void Node::set_allocated_alter_subscription_stmt(::pg_query::AlterSubscriptionStmt* alter_subscription_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_subscription_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_subscription_stmt); if (message_arena != submessage_arena) { alter_subscription_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_subscription_stmt, submessage_arena); } set_has_alter_subscription_stmt(); node_.alter_subscription_stmt_ = alter_subscription_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_subscription_stmt) } void Node::set_allocated_drop_subscription_stmt(::pg_query::DropSubscriptionStmt* drop_subscription_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (drop_subscription_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(drop_subscription_stmt); if (message_arena != submessage_arena) { drop_subscription_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, drop_subscription_stmt, submessage_arena); } set_has_drop_subscription_stmt(); node_.drop_subscription_stmt_ = drop_subscription_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.drop_subscription_stmt) } void Node::set_allocated_create_stats_stmt(::pg_query::CreateStatsStmt* create_stats_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_stats_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_stats_stmt); if (message_arena != submessage_arena) { create_stats_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_stats_stmt, submessage_arena); } set_has_create_stats_stmt(); node_.create_stats_stmt_ = create_stats_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_stats_stmt) } void Node::set_allocated_alter_collation_stmt(::pg_query::AlterCollationStmt* alter_collation_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_collation_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_collation_stmt); if (message_arena != submessage_arena) { alter_collation_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_collation_stmt, submessage_arena); } set_has_alter_collation_stmt(); node_.alter_collation_stmt_ = alter_collation_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_collation_stmt) } void Node::set_allocated_call_stmt(::pg_query::CallStmt* call_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (call_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(call_stmt); if (message_arena != submessage_arena) { call_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, call_stmt, submessage_arena); } set_has_call_stmt(); node_.call_stmt_ = call_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.call_stmt) } void Node::set_allocated_alter_stats_stmt(::pg_query::AlterStatsStmt* alter_stats_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (alter_stats_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alter_stats_stmt); if (message_arena != submessage_arena) { alter_stats_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alter_stats_stmt, submessage_arena); } set_has_alter_stats_stmt(); node_.alter_stats_stmt_ = alter_stats_stmt; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.alter_stats_stmt) } void Node::set_allocated_a_expr(::pg_query::A_Expr* a_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (a_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(a_expr); if (message_arena != submessage_arena) { a_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, a_expr, submessage_arena); } set_has_a_expr(); node_.a_expr_ = a_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.a_expr) } void Node::set_allocated_column_ref(::pg_query::ColumnRef* column_ref) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (column_ref) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(column_ref); if (message_arena != submessage_arena) { column_ref = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, column_ref, submessage_arena); } set_has_column_ref(); node_.column_ref_ = column_ref; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.column_ref) } void Node::set_allocated_param_ref(::pg_query::ParamRef* param_ref) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (param_ref) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(param_ref); if (message_arena != submessage_arena) { param_ref = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, param_ref, submessage_arena); } set_has_param_ref(); node_.param_ref_ = param_ref; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.param_ref) } void Node::set_allocated_a_const(::pg_query::A_Const* a_const) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (a_const) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(a_const); if (message_arena != submessage_arena) { a_const = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, a_const, submessage_arena); } set_has_a_const(); node_.a_const_ = a_const; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.a_const) } void Node::set_allocated_func_call(::pg_query::FuncCall* func_call) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (func_call) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(func_call); if (message_arena != submessage_arena) { func_call = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, func_call, submessage_arena); } set_has_func_call(); node_.func_call_ = func_call; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.func_call) } void Node::set_allocated_a_star(::pg_query::A_Star* a_star) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (a_star) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(a_star); if (message_arena != submessage_arena) { a_star = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, a_star, submessage_arena); } set_has_a_star(); node_.a_star_ = a_star; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.a_star) } void Node::set_allocated_a_indices(::pg_query::A_Indices* a_indices) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (a_indices) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(a_indices); if (message_arena != submessage_arena) { a_indices = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, a_indices, submessage_arena); } set_has_a_indices(); node_.a_indices_ = a_indices; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.a_indices) } void Node::set_allocated_a_indirection(::pg_query::A_Indirection* a_indirection) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (a_indirection) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(a_indirection); if (message_arena != submessage_arena) { a_indirection = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, a_indirection, submessage_arena); } set_has_a_indirection(); node_.a_indirection_ = a_indirection; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.a_indirection) } void Node::set_allocated_a_array_expr(::pg_query::A_ArrayExpr* a_array_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (a_array_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(a_array_expr); if (message_arena != submessage_arena) { a_array_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, a_array_expr, submessage_arena); } set_has_a_array_expr(); node_.a_array_expr_ = a_array_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.a_array_expr) } void Node::set_allocated_res_target(::pg_query::ResTarget* res_target) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (res_target) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(res_target); if (message_arena != submessage_arena) { res_target = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, res_target, submessage_arena); } set_has_res_target(); node_.res_target_ = res_target; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.res_target) } void Node::set_allocated_multi_assign_ref(::pg_query::MultiAssignRef* multi_assign_ref) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (multi_assign_ref) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(multi_assign_ref); if (message_arena != submessage_arena) { multi_assign_ref = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, multi_assign_ref, submessage_arena); } set_has_multi_assign_ref(); node_.multi_assign_ref_ = multi_assign_ref; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.multi_assign_ref) } void Node::set_allocated_type_cast(::pg_query::TypeCast* type_cast) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (type_cast) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_cast); if (message_arena != submessage_arena) { type_cast = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_cast, submessage_arena); } set_has_type_cast(); node_.type_cast_ = type_cast; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.type_cast) } void Node::set_allocated_collate_clause(::pg_query::CollateClause* collate_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (collate_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(collate_clause); if (message_arena != submessage_arena) { collate_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, collate_clause, submessage_arena); } set_has_collate_clause(); node_.collate_clause_ = collate_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.collate_clause) } void Node::set_allocated_sort_by(::pg_query::SortBy* sort_by) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (sort_by) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sort_by); if (message_arena != submessage_arena) { sort_by = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sort_by, submessage_arena); } set_has_sort_by(); node_.sort_by_ = sort_by; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.sort_by) } void Node::set_allocated_window_def(::pg_query::WindowDef* window_def) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (window_def) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(window_def); if (message_arena != submessage_arena) { window_def = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, window_def, submessage_arena); } set_has_window_def(); node_.window_def_ = window_def; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.window_def) } void Node::set_allocated_range_subselect(::pg_query::RangeSubselect* range_subselect) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (range_subselect) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(range_subselect); if (message_arena != submessage_arena) { range_subselect = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, range_subselect, submessage_arena); } set_has_range_subselect(); node_.range_subselect_ = range_subselect; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_subselect) } void Node::set_allocated_range_function(::pg_query::RangeFunction* range_function) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (range_function) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(range_function); if (message_arena != submessage_arena) { range_function = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, range_function, submessage_arena); } set_has_range_function(); node_.range_function_ = range_function; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_function) } void Node::set_allocated_range_table_sample(::pg_query::RangeTableSample* range_table_sample) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (range_table_sample) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(range_table_sample); if (message_arena != submessage_arena) { range_table_sample = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, range_table_sample, submessage_arena); } set_has_range_table_sample(); node_.range_table_sample_ = range_table_sample; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_table_sample) } void Node::set_allocated_range_table_func(::pg_query::RangeTableFunc* range_table_func) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (range_table_func) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(range_table_func); if (message_arena != submessage_arena) { range_table_func = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, range_table_func, submessage_arena); } set_has_range_table_func(); node_.range_table_func_ = range_table_func; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_table_func) } void Node::set_allocated_range_table_func_col(::pg_query::RangeTableFuncCol* range_table_func_col) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (range_table_func_col) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(range_table_func_col); if (message_arena != submessage_arena) { range_table_func_col = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, range_table_func_col, submessage_arena); } set_has_range_table_func_col(); node_.range_table_func_col_ = range_table_func_col; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_table_func_col) } void Node::set_allocated_type_name(::pg_query::TypeName* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } set_has_type_name(); node_.type_name_ = type_name; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.type_name) } void Node::set_allocated_column_def(::pg_query::ColumnDef* column_def) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (column_def) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(column_def); if (message_arena != submessage_arena) { column_def = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, column_def, submessage_arena); } set_has_column_def(); node_.column_def_ = column_def; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.column_def) } void Node::set_allocated_index_elem(::pg_query::IndexElem* index_elem) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (index_elem) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(index_elem); if (message_arena != submessage_arena) { index_elem = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, index_elem, submessage_arena); } set_has_index_elem(); node_.index_elem_ = index_elem; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.index_elem) } void Node::set_allocated_constraint(::pg_query::Constraint* constraint) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (constraint) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(constraint); if (message_arena != submessage_arena) { constraint = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, constraint, submessage_arena); } set_has_constraint(); node_.constraint_ = constraint; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.constraint) } void Node::set_allocated_def_elem(::pg_query::DefElem* def_elem) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (def_elem) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(def_elem); if (message_arena != submessage_arena) { def_elem = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, def_elem, submessage_arena); } set_has_def_elem(); node_.def_elem_ = def_elem; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.def_elem) } void Node::set_allocated_range_tbl_entry(::pg_query::RangeTblEntry* range_tbl_entry) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (range_tbl_entry) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(range_tbl_entry); if (message_arena != submessage_arena) { range_tbl_entry = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, range_tbl_entry, submessage_arena); } set_has_range_tbl_entry(); node_.range_tbl_entry_ = range_tbl_entry; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_tbl_entry) } void Node::set_allocated_range_tbl_function(::pg_query::RangeTblFunction* range_tbl_function) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (range_tbl_function) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(range_tbl_function); if (message_arena != submessage_arena) { range_tbl_function = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, range_tbl_function, submessage_arena); } set_has_range_tbl_function(); node_.range_tbl_function_ = range_tbl_function; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.range_tbl_function) } void Node::set_allocated_table_sample_clause(::pg_query::TableSampleClause* table_sample_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (table_sample_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(table_sample_clause); if (message_arena != submessage_arena) { table_sample_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, table_sample_clause, submessage_arena); } set_has_table_sample_clause(); node_.table_sample_clause_ = table_sample_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.table_sample_clause) } void Node::set_allocated_with_check_option(::pg_query::WithCheckOption* with_check_option) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (with_check_option) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_check_option); if (message_arena != submessage_arena) { with_check_option = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_check_option, submessage_arena); } set_has_with_check_option(); node_.with_check_option_ = with_check_option; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.with_check_option) } void Node::set_allocated_sort_group_clause(::pg_query::SortGroupClause* sort_group_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (sort_group_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sort_group_clause); if (message_arena != submessage_arena) { sort_group_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sort_group_clause, submessage_arena); } set_has_sort_group_clause(); node_.sort_group_clause_ = sort_group_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.sort_group_clause) } void Node::set_allocated_grouping_set(::pg_query::GroupingSet* grouping_set) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (grouping_set) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(grouping_set); if (message_arena != submessage_arena) { grouping_set = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, grouping_set, submessage_arena); } set_has_grouping_set(); node_.grouping_set_ = grouping_set; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.grouping_set) } void Node::set_allocated_window_clause(::pg_query::WindowClause* window_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (window_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(window_clause); if (message_arena != submessage_arena) { window_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, window_clause, submessage_arena); } set_has_window_clause(); node_.window_clause_ = window_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.window_clause) } void Node::set_allocated_object_with_args(::pg_query::ObjectWithArgs* object_with_args) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (object_with_args) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object_with_args); if (message_arena != submessage_arena) { object_with_args = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object_with_args, submessage_arena); } set_has_object_with_args(); node_.object_with_args_ = object_with_args; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.object_with_args) } void Node::set_allocated_access_priv(::pg_query::AccessPriv* access_priv) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (access_priv) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(access_priv); if (message_arena != submessage_arena) { access_priv = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, access_priv, submessage_arena); } set_has_access_priv(); node_.access_priv_ = access_priv; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.access_priv) } void Node::set_allocated_create_op_class_item(::pg_query::CreateOpClassItem* create_op_class_item) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (create_op_class_item) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(create_op_class_item); if (message_arena != submessage_arena) { create_op_class_item = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, create_op_class_item, submessage_arena); } set_has_create_op_class_item(); node_.create_op_class_item_ = create_op_class_item; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.create_op_class_item) } void Node::set_allocated_table_like_clause(::pg_query::TableLikeClause* table_like_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (table_like_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(table_like_clause); if (message_arena != submessage_arena) { table_like_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, table_like_clause, submessage_arena); } set_has_table_like_clause(); node_.table_like_clause_ = table_like_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.table_like_clause) } void Node::set_allocated_function_parameter(::pg_query::FunctionParameter* function_parameter) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (function_parameter) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(function_parameter); if (message_arena != submessage_arena) { function_parameter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, function_parameter, submessage_arena); } set_has_function_parameter(); node_.function_parameter_ = function_parameter; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.function_parameter) } void Node::set_allocated_locking_clause(::pg_query::LockingClause* locking_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (locking_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(locking_clause); if (message_arena != submessage_arena) { locking_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, locking_clause, submessage_arena); } set_has_locking_clause(); node_.locking_clause_ = locking_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.locking_clause) } void Node::set_allocated_row_mark_clause(::pg_query::RowMarkClause* row_mark_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (row_mark_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(row_mark_clause); if (message_arena != submessage_arena) { row_mark_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, row_mark_clause, submessage_arena); } set_has_row_mark_clause(); node_.row_mark_clause_ = row_mark_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.row_mark_clause) } void Node::set_allocated_xml_serialize(::pg_query::XmlSerialize* xml_serialize) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (xml_serialize) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xml_serialize); if (message_arena != submessage_arena) { xml_serialize = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xml_serialize, submessage_arena); } set_has_xml_serialize(); node_.xml_serialize_ = xml_serialize; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.xml_serialize) } void Node::set_allocated_with_clause(::pg_query::WithClause* with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_clause); if (message_arena != submessage_arena) { with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_clause, submessage_arena); } set_has_with_clause(); node_.with_clause_ = with_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.with_clause) } void Node::set_allocated_infer_clause(::pg_query::InferClause* infer_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (infer_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(infer_clause); if (message_arena != submessage_arena) { infer_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, infer_clause, submessage_arena); } set_has_infer_clause(); node_.infer_clause_ = infer_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.infer_clause) } void Node::set_allocated_on_conflict_clause(::pg_query::OnConflictClause* on_conflict_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (on_conflict_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(on_conflict_clause); if (message_arena != submessage_arena) { on_conflict_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, on_conflict_clause, submessage_arena); } set_has_on_conflict_clause(); node_.on_conflict_clause_ = on_conflict_clause; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.on_conflict_clause) } void Node::set_allocated_common_table_expr(::pg_query::CommonTableExpr* common_table_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (common_table_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(common_table_expr); if (message_arena != submessage_arena) { common_table_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, common_table_expr, submessage_arena); } set_has_common_table_expr(); node_.common_table_expr_ = common_table_expr; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.common_table_expr) } void Node::set_allocated_role_spec(::pg_query::RoleSpec* role_spec) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (role_spec) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(role_spec); if (message_arena != submessage_arena) { role_spec = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, role_spec, submessage_arena); } set_has_role_spec(); node_.role_spec_ = role_spec; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.role_spec) } void Node::set_allocated_trigger_transition(::pg_query::TriggerTransition* trigger_transition) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (trigger_transition) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(trigger_transition); if (message_arena != submessage_arena) { trigger_transition = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, trigger_transition, submessage_arena); } set_has_trigger_transition(); node_.trigger_transition_ = trigger_transition; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.trigger_transition) } void Node::set_allocated_partition_elem(::pg_query::PartitionElem* partition_elem) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (partition_elem) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(partition_elem); if (message_arena != submessage_arena) { partition_elem = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, partition_elem, submessage_arena); } set_has_partition_elem(); node_.partition_elem_ = partition_elem; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.partition_elem) } void Node::set_allocated_partition_spec(::pg_query::PartitionSpec* partition_spec) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (partition_spec) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(partition_spec); if (message_arena != submessage_arena) { partition_spec = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, partition_spec, submessage_arena); } set_has_partition_spec(); node_.partition_spec_ = partition_spec; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.partition_spec) } void Node::set_allocated_partition_bound_spec(::pg_query::PartitionBoundSpec* partition_bound_spec) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (partition_bound_spec) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(partition_bound_spec); if (message_arena != submessage_arena) { partition_bound_spec = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, partition_bound_spec, submessage_arena); } set_has_partition_bound_spec(); node_.partition_bound_spec_ = partition_bound_spec; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.partition_bound_spec) } void Node::set_allocated_partition_range_datum(::pg_query::PartitionRangeDatum* partition_range_datum) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (partition_range_datum) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(partition_range_datum); if (message_arena != submessage_arena) { partition_range_datum = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, partition_range_datum, submessage_arena); } set_has_partition_range_datum(); node_.partition_range_datum_ = partition_range_datum; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.partition_range_datum) } void Node::set_allocated_partition_cmd(::pg_query::PartitionCmd* partition_cmd) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (partition_cmd) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(partition_cmd); if (message_arena != submessage_arena) { partition_cmd = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, partition_cmd, submessage_arena); } set_has_partition_cmd(); node_.partition_cmd_ = partition_cmd; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.partition_cmd) } void Node::set_allocated_vacuum_relation(::pg_query::VacuumRelation* vacuum_relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (vacuum_relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(vacuum_relation); if (message_arena != submessage_arena) { vacuum_relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, vacuum_relation, submessage_arena); } set_has_vacuum_relation(); node_.vacuum_relation_ = vacuum_relation; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.vacuum_relation) } void Node::set_allocated_inline_code_block(::pg_query::InlineCodeBlock* inline_code_block) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (inline_code_block) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(inline_code_block); if (message_arena != submessage_arena) { inline_code_block = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, inline_code_block, submessage_arena); } set_has_inline_code_block(); node_.inline_code_block_ = inline_code_block; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.inline_code_block) } void Node::set_allocated_call_context(::pg_query::CallContext* call_context) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (call_context) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(call_context); if (message_arena != submessage_arena) { call_context = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, call_context, submessage_arena); } set_has_call_context(); node_.call_context_ = call_context; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.call_context) } void Node::set_allocated_integer(::pg_query::Integer* integer) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (integer) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(integer); if (message_arena != submessage_arena) { integer = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, integer, submessage_arena); } set_has_integer(); node_.integer_ = integer; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.integer) } void Node::set_allocated_float_(::pg_query::Float* float_) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (float_) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(float_); if (message_arena != submessage_arena) { float_ = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, float_, submessage_arena); } set_has_float_(); node_.float__ = float_; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.float) } void Node::set_allocated_string(::pg_query::String* string) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (string) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(string); if (message_arena != submessage_arena) { string = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, string, submessage_arena); } set_has_string(); node_.string_ = string; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.string) } void Node::set_allocated_bit_string(::pg_query::BitString* bit_string) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (bit_string) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(bit_string); if (message_arena != submessage_arena) { bit_string = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, bit_string, submessage_arena); } set_has_bit_string(); node_.bit_string_ = bit_string; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.bit_string) } void Node::set_allocated_null(::pg_query::Null* null) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (null) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(null); if (message_arena != submessage_arena) { null = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, null, submessage_arena); } set_has_null(); node_.null_ = null; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.null) } void Node::set_allocated_list(::pg_query::List* list) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (list) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(list); if (message_arena != submessage_arena) { list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, list, submessage_arena); } set_has_list(); node_.list_ = list; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.list) } void Node::set_allocated_int_list(::pg_query::IntList* int_list) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (int_list) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(int_list); if (message_arena != submessage_arena) { int_list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, int_list, submessage_arena); } set_has_int_list(); node_.int_list_ = int_list; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.int_list) } void Node::set_allocated_oid_list(::pg_query::OidList* oid_list) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); clear_node(); if (oid_list) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(oid_list); if (message_arena != submessage_arena) { oid_list = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, oid_list, submessage_arena); } set_has_oid_list(); node_.oid_list_ = oid_list; } // @@protoc_insertion_point(field_set_allocated:pg_query.Node.oid_list) } Node::Node(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Node) } Node::Node(const Node& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); clear_has_node(); switch (from.node_case()) { case kAlias: { _internal_mutable_alias()->::pg_query::Alias::MergeFrom(from._internal_alias()); break; } case kRangeVar: { _internal_mutable_range_var()->::pg_query::RangeVar::MergeFrom(from._internal_range_var()); break; } case kTableFunc: { _internal_mutable_table_func()->::pg_query::TableFunc::MergeFrom(from._internal_table_func()); break; } case kExpr: { _internal_mutable_expr()->::pg_query::Expr::MergeFrom(from._internal_expr()); break; } case kVar: { _internal_mutable_var()->::pg_query::Var::MergeFrom(from._internal_var()); break; } case kParam: { _internal_mutable_param()->::pg_query::Param::MergeFrom(from._internal_param()); break; } case kAggref: { _internal_mutable_aggref()->::pg_query::Aggref::MergeFrom(from._internal_aggref()); break; } case kGroupingFunc: { _internal_mutable_grouping_func()->::pg_query::GroupingFunc::MergeFrom(from._internal_grouping_func()); break; } case kWindowFunc: { _internal_mutable_window_func()->::pg_query::WindowFunc::MergeFrom(from._internal_window_func()); break; } case kSubscriptingRef: { _internal_mutable_subscripting_ref()->::pg_query::SubscriptingRef::MergeFrom(from._internal_subscripting_ref()); break; } case kFuncExpr: { _internal_mutable_func_expr()->::pg_query::FuncExpr::MergeFrom(from._internal_func_expr()); break; } case kNamedArgExpr: { _internal_mutable_named_arg_expr()->::pg_query::NamedArgExpr::MergeFrom(from._internal_named_arg_expr()); break; } case kOpExpr: { _internal_mutable_op_expr()->::pg_query::OpExpr::MergeFrom(from._internal_op_expr()); break; } case kDistinctExpr: { _internal_mutable_distinct_expr()->::pg_query::DistinctExpr::MergeFrom(from._internal_distinct_expr()); break; } case kNullIfExpr: { _internal_mutable_null_if_expr()->::pg_query::NullIfExpr::MergeFrom(from._internal_null_if_expr()); break; } case kScalarArrayOpExpr: { _internal_mutable_scalar_array_op_expr()->::pg_query::ScalarArrayOpExpr::MergeFrom(from._internal_scalar_array_op_expr()); break; } case kBoolExpr: { _internal_mutable_bool_expr()->::pg_query::BoolExpr::MergeFrom(from._internal_bool_expr()); break; } case kSubLink: { _internal_mutable_sub_link()->::pg_query::SubLink::MergeFrom(from._internal_sub_link()); break; } case kSubPlan: { _internal_mutable_sub_plan()->::pg_query::SubPlan::MergeFrom(from._internal_sub_plan()); break; } case kAlternativeSubPlan: { _internal_mutable_alternative_sub_plan()->::pg_query::AlternativeSubPlan::MergeFrom(from._internal_alternative_sub_plan()); break; } case kFieldSelect: { _internal_mutable_field_select()->::pg_query::FieldSelect::MergeFrom(from._internal_field_select()); break; } case kFieldStore: { _internal_mutable_field_store()->::pg_query::FieldStore::MergeFrom(from._internal_field_store()); break; } case kRelabelType: { _internal_mutable_relabel_type()->::pg_query::RelabelType::MergeFrom(from._internal_relabel_type()); break; } case kCoerceViaIo: { _internal_mutable_coerce_via_io()->::pg_query::CoerceViaIO::MergeFrom(from._internal_coerce_via_io()); break; } case kArrayCoerceExpr: { _internal_mutable_array_coerce_expr()->::pg_query::ArrayCoerceExpr::MergeFrom(from._internal_array_coerce_expr()); break; } case kConvertRowtypeExpr: { _internal_mutable_convert_rowtype_expr()->::pg_query::ConvertRowtypeExpr::MergeFrom(from._internal_convert_rowtype_expr()); break; } case kCollateExpr: { _internal_mutable_collate_expr()->::pg_query::CollateExpr::MergeFrom(from._internal_collate_expr()); break; } case kCaseExpr: { _internal_mutable_case_expr()->::pg_query::CaseExpr::MergeFrom(from._internal_case_expr()); break; } case kCaseWhen: { _internal_mutable_case_when()->::pg_query::CaseWhen::MergeFrom(from._internal_case_when()); break; } case kCaseTestExpr: { _internal_mutable_case_test_expr()->::pg_query::CaseTestExpr::MergeFrom(from._internal_case_test_expr()); break; } case kArrayExpr: { _internal_mutable_array_expr()->::pg_query::ArrayExpr::MergeFrom(from._internal_array_expr()); break; } case kRowExpr: { _internal_mutable_row_expr()->::pg_query::RowExpr::MergeFrom(from._internal_row_expr()); break; } case kRowCompareExpr: { _internal_mutable_row_compare_expr()->::pg_query::RowCompareExpr::MergeFrom(from._internal_row_compare_expr()); break; } case kCoalesceExpr: { _internal_mutable_coalesce_expr()->::pg_query::CoalesceExpr::MergeFrom(from._internal_coalesce_expr()); break; } case kMinMaxExpr: { _internal_mutable_min_max_expr()->::pg_query::MinMaxExpr::MergeFrom(from._internal_min_max_expr()); break; } case kSqlvalueFunction: { _internal_mutable_sqlvalue_function()->::pg_query::SQLValueFunction::MergeFrom(from._internal_sqlvalue_function()); break; } case kXmlExpr: { _internal_mutable_xml_expr()->::pg_query::XmlExpr::MergeFrom(from._internal_xml_expr()); break; } case kNullTest: { _internal_mutable_null_test()->::pg_query::NullTest::MergeFrom(from._internal_null_test()); break; } case kBooleanTest: { _internal_mutable_boolean_test()->::pg_query::BooleanTest::MergeFrom(from._internal_boolean_test()); break; } case kCoerceToDomain: { _internal_mutable_coerce_to_domain()->::pg_query::CoerceToDomain::MergeFrom(from._internal_coerce_to_domain()); break; } case kCoerceToDomainValue: { _internal_mutable_coerce_to_domain_value()->::pg_query::CoerceToDomainValue::MergeFrom(from._internal_coerce_to_domain_value()); break; } case kSetToDefault: { _internal_mutable_set_to_default()->::pg_query::SetToDefault::MergeFrom(from._internal_set_to_default()); break; } case kCurrentOfExpr: { _internal_mutable_current_of_expr()->::pg_query::CurrentOfExpr::MergeFrom(from._internal_current_of_expr()); break; } case kNextValueExpr: { _internal_mutable_next_value_expr()->::pg_query::NextValueExpr::MergeFrom(from._internal_next_value_expr()); break; } case kInferenceElem: { _internal_mutable_inference_elem()->::pg_query::InferenceElem::MergeFrom(from._internal_inference_elem()); break; } case kTargetEntry: { _internal_mutable_target_entry()->::pg_query::TargetEntry::MergeFrom(from._internal_target_entry()); break; } case kRangeTblRef: { _internal_mutable_range_tbl_ref()->::pg_query::RangeTblRef::MergeFrom(from._internal_range_tbl_ref()); break; } case kJoinExpr: { _internal_mutable_join_expr()->::pg_query::JoinExpr::MergeFrom(from._internal_join_expr()); break; } case kFromExpr: { _internal_mutable_from_expr()->::pg_query::FromExpr::MergeFrom(from._internal_from_expr()); break; } case kOnConflictExpr: { _internal_mutable_on_conflict_expr()->::pg_query::OnConflictExpr::MergeFrom(from._internal_on_conflict_expr()); break; } case kIntoClause: { _internal_mutable_into_clause()->::pg_query::IntoClause::MergeFrom(from._internal_into_clause()); break; } case kRawStmt: { _internal_mutable_raw_stmt()->::pg_query::RawStmt::MergeFrom(from._internal_raw_stmt()); break; } case kQuery: { _internal_mutable_query()->::pg_query::Query::MergeFrom(from._internal_query()); break; } case kInsertStmt: { _internal_mutable_insert_stmt()->::pg_query::InsertStmt::MergeFrom(from._internal_insert_stmt()); break; } case kDeleteStmt: { _internal_mutable_delete_stmt()->::pg_query::DeleteStmt::MergeFrom(from._internal_delete_stmt()); break; } case kUpdateStmt: { _internal_mutable_update_stmt()->::pg_query::UpdateStmt::MergeFrom(from._internal_update_stmt()); break; } case kSelectStmt: { _internal_mutable_select_stmt()->::pg_query::SelectStmt::MergeFrom(from._internal_select_stmt()); break; } case kAlterTableStmt: { _internal_mutable_alter_table_stmt()->::pg_query::AlterTableStmt::MergeFrom(from._internal_alter_table_stmt()); break; } case kAlterTableCmd: { _internal_mutable_alter_table_cmd()->::pg_query::AlterTableCmd::MergeFrom(from._internal_alter_table_cmd()); break; } case kAlterDomainStmt: { _internal_mutable_alter_domain_stmt()->::pg_query::AlterDomainStmt::MergeFrom(from._internal_alter_domain_stmt()); break; } case kSetOperationStmt: { _internal_mutable_set_operation_stmt()->::pg_query::SetOperationStmt::MergeFrom(from._internal_set_operation_stmt()); break; } case kGrantStmt: { _internal_mutable_grant_stmt()->::pg_query::GrantStmt::MergeFrom(from._internal_grant_stmt()); break; } case kGrantRoleStmt: { _internal_mutable_grant_role_stmt()->::pg_query::GrantRoleStmt::MergeFrom(from._internal_grant_role_stmt()); break; } case kAlterDefaultPrivilegesStmt: { _internal_mutable_alter_default_privileges_stmt()->::pg_query::AlterDefaultPrivilegesStmt::MergeFrom(from._internal_alter_default_privileges_stmt()); break; } case kClosePortalStmt: { _internal_mutable_close_portal_stmt()->::pg_query::ClosePortalStmt::MergeFrom(from._internal_close_portal_stmt()); break; } case kClusterStmt: { _internal_mutable_cluster_stmt()->::pg_query::ClusterStmt::MergeFrom(from._internal_cluster_stmt()); break; } case kCopyStmt: { _internal_mutable_copy_stmt()->::pg_query::CopyStmt::MergeFrom(from._internal_copy_stmt()); break; } case kCreateStmt: { _internal_mutable_create_stmt()->::pg_query::CreateStmt::MergeFrom(from._internal_create_stmt()); break; } case kDefineStmt: { _internal_mutable_define_stmt()->::pg_query::DefineStmt::MergeFrom(from._internal_define_stmt()); break; } case kDropStmt: { _internal_mutable_drop_stmt()->::pg_query::DropStmt::MergeFrom(from._internal_drop_stmt()); break; } case kTruncateStmt: { _internal_mutable_truncate_stmt()->::pg_query::TruncateStmt::MergeFrom(from._internal_truncate_stmt()); break; } case kCommentStmt: { _internal_mutable_comment_stmt()->::pg_query::CommentStmt::MergeFrom(from._internal_comment_stmt()); break; } case kFetchStmt: { _internal_mutable_fetch_stmt()->::pg_query::FetchStmt::MergeFrom(from._internal_fetch_stmt()); break; } case kIndexStmt: { _internal_mutable_index_stmt()->::pg_query::IndexStmt::MergeFrom(from._internal_index_stmt()); break; } case kCreateFunctionStmt: { _internal_mutable_create_function_stmt()->::pg_query::CreateFunctionStmt::MergeFrom(from._internal_create_function_stmt()); break; } case kAlterFunctionStmt: { _internal_mutable_alter_function_stmt()->::pg_query::AlterFunctionStmt::MergeFrom(from._internal_alter_function_stmt()); break; } case kDoStmt: { _internal_mutable_do_stmt()->::pg_query::DoStmt::MergeFrom(from._internal_do_stmt()); break; } case kRenameStmt: { _internal_mutable_rename_stmt()->::pg_query::RenameStmt::MergeFrom(from._internal_rename_stmt()); break; } case kRuleStmt: { _internal_mutable_rule_stmt()->::pg_query::RuleStmt::MergeFrom(from._internal_rule_stmt()); break; } case kNotifyStmt: { _internal_mutable_notify_stmt()->::pg_query::NotifyStmt::MergeFrom(from._internal_notify_stmt()); break; } case kListenStmt: { _internal_mutable_listen_stmt()->::pg_query::ListenStmt::MergeFrom(from._internal_listen_stmt()); break; } case kUnlistenStmt: { _internal_mutable_unlisten_stmt()->::pg_query::UnlistenStmt::MergeFrom(from._internal_unlisten_stmt()); break; } case kTransactionStmt: { _internal_mutable_transaction_stmt()->::pg_query::TransactionStmt::MergeFrom(from._internal_transaction_stmt()); break; } case kViewStmt: { _internal_mutable_view_stmt()->::pg_query::ViewStmt::MergeFrom(from._internal_view_stmt()); break; } case kLoadStmt: { _internal_mutable_load_stmt()->::pg_query::LoadStmt::MergeFrom(from._internal_load_stmt()); break; } case kCreateDomainStmt: { _internal_mutable_create_domain_stmt()->::pg_query::CreateDomainStmt::MergeFrom(from._internal_create_domain_stmt()); break; } case kCreatedbStmt: { _internal_mutable_createdb_stmt()->::pg_query::CreatedbStmt::MergeFrom(from._internal_createdb_stmt()); break; } case kDropdbStmt: { _internal_mutable_dropdb_stmt()->::pg_query::DropdbStmt::MergeFrom(from._internal_dropdb_stmt()); break; } case kVacuumStmt: { _internal_mutable_vacuum_stmt()->::pg_query::VacuumStmt::MergeFrom(from._internal_vacuum_stmt()); break; } case kExplainStmt: { _internal_mutable_explain_stmt()->::pg_query::ExplainStmt::MergeFrom(from._internal_explain_stmt()); break; } case kCreateTableAsStmt: { _internal_mutable_create_table_as_stmt()->::pg_query::CreateTableAsStmt::MergeFrom(from._internal_create_table_as_stmt()); break; } case kCreateSeqStmt: { _internal_mutable_create_seq_stmt()->::pg_query::CreateSeqStmt::MergeFrom(from._internal_create_seq_stmt()); break; } case kAlterSeqStmt: { _internal_mutable_alter_seq_stmt()->::pg_query::AlterSeqStmt::MergeFrom(from._internal_alter_seq_stmt()); break; } case kVariableSetStmt: { _internal_mutable_variable_set_stmt()->::pg_query::VariableSetStmt::MergeFrom(from._internal_variable_set_stmt()); break; } case kVariableShowStmt: { _internal_mutable_variable_show_stmt()->::pg_query::VariableShowStmt::MergeFrom(from._internal_variable_show_stmt()); break; } case kDiscardStmt: { _internal_mutable_discard_stmt()->::pg_query::DiscardStmt::MergeFrom(from._internal_discard_stmt()); break; } case kCreateTrigStmt: { _internal_mutable_create_trig_stmt()->::pg_query::CreateTrigStmt::MergeFrom(from._internal_create_trig_stmt()); break; } case kCreatePlangStmt: { _internal_mutable_create_plang_stmt()->::pg_query::CreatePLangStmt::MergeFrom(from._internal_create_plang_stmt()); break; } case kCreateRoleStmt: { _internal_mutable_create_role_stmt()->::pg_query::CreateRoleStmt::MergeFrom(from._internal_create_role_stmt()); break; } case kAlterRoleStmt: { _internal_mutable_alter_role_stmt()->::pg_query::AlterRoleStmt::MergeFrom(from._internal_alter_role_stmt()); break; } case kDropRoleStmt: { _internal_mutable_drop_role_stmt()->::pg_query::DropRoleStmt::MergeFrom(from._internal_drop_role_stmt()); break; } case kLockStmt: { _internal_mutable_lock_stmt()->::pg_query::LockStmt::MergeFrom(from._internal_lock_stmt()); break; } case kConstraintsSetStmt: { _internal_mutable_constraints_set_stmt()->::pg_query::ConstraintsSetStmt::MergeFrom(from._internal_constraints_set_stmt()); break; } case kReindexStmt: { _internal_mutable_reindex_stmt()->::pg_query::ReindexStmt::MergeFrom(from._internal_reindex_stmt()); break; } case kCheckPointStmt: { _internal_mutable_check_point_stmt()->::pg_query::CheckPointStmt::MergeFrom(from._internal_check_point_stmt()); break; } case kCreateSchemaStmt: { _internal_mutable_create_schema_stmt()->::pg_query::CreateSchemaStmt::MergeFrom(from._internal_create_schema_stmt()); break; } case kAlterDatabaseStmt: { _internal_mutable_alter_database_stmt()->::pg_query::AlterDatabaseStmt::MergeFrom(from._internal_alter_database_stmt()); break; } case kAlterDatabaseSetStmt: { _internal_mutable_alter_database_set_stmt()->::pg_query::AlterDatabaseSetStmt::MergeFrom(from._internal_alter_database_set_stmt()); break; } case kAlterRoleSetStmt: { _internal_mutable_alter_role_set_stmt()->::pg_query::AlterRoleSetStmt::MergeFrom(from._internal_alter_role_set_stmt()); break; } case kCreateConversionStmt: { _internal_mutable_create_conversion_stmt()->::pg_query::CreateConversionStmt::MergeFrom(from._internal_create_conversion_stmt()); break; } case kCreateCastStmt: { _internal_mutable_create_cast_stmt()->::pg_query::CreateCastStmt::MergeFrom(from._internal_create_cast_stmt()); break; } case kCreateOpClassStmt: { _internal_mutable_create_op_class_stmt()->::pg_query::CreateOpClassStmt::MergeFrom(from._internal_create_op_class_stmt()); break; } case kCreateOpFamilyStmt: { _internal_mutable_create_op_family_stmt()->::pg_query::CreateOpFamilyStmt::MergeFrom(from._internal_create_op_family_stmt()); break; } case kAlterOpFamilyStmt: { _internal_mutable_alter_op_family_stmt()->::pg_query::AlterOpFamilyStmt::MergeFrom(from._internal_alter_op_family_stmt()); break; } case kPrepareStmt: { _internal_mutable_prepare_stmt()->::pg_query::PrepareStmt::MergeFrom(from._internal_prepare_stmt()); break; } case kExecuteStmt: { _internal_mutable_execute_stmt()->::pg_query::ExecuteStmt::MergeFrom(from._internal_execute_stmt()); break; } case kDeallocateStmt: { _internal_mutable_deallocate_stmt()->::pg_query::DeallocateStmt::MergeFrom(from._internal_deallocate_stmt()); break; } case kDeclareCursorStmt: { _internal_mutable_declare_cursor_stmt()->::pg_query::DeclareCursorStmt::MergeFrom(from._internal_declare_cursor_stmt()); break; } case kCreateTableSpaceStmt: { _internal_mutable_create_table_space_stmt()->::pg_query::CreateTableSpaceStmt::MergeFrom(from._internal_create_table_space_stmt()); break; } case kDropTableSpaceStmt: { _internal_mutable_drop_table_space_stmt()->::pg_query::DropTableSpaceStmt::MergeFrom(from._internal_drop_table_space_stmt()); break; } case kAlterObjectDependsStmt: { _internal_mutable_alter_object_depends_stmt()->::pg_query::AlterObjectDependsStmt::MergeFrom(from._internal_alter_object_depends_stmt()); break; } case kAlterObjectSchemaStmt: { _internal_mutable_alter_object_schema_stmt()->::pg_query::AlterObjectSchemaStmt::MergeFrom(from._internal_alter_object_schema_stmt()); break; } case kAlterOwnerStmt: { _internal_mutable_alter_owner_stmt()->::pg_query::AlterOwnerStmt::MergeFrom(from._internal_alter_owner_stmt()); break; } case kAlterOperatorStmt: { _internal_mutable_alter_operator_stmt()->::pg_query::AlterOperatorStmt::MergeFrom(from._internal_alter_operator_stmt()); break; } case kAlterTypeStmt: { _internal_mutable_alter_type_stmt()->::pg_query::AlterTypeStmt::MergeFrom(from._internal_alter_type_stmt()); break; } case kDropOwnedStmt: { _internal_mutable_drop_owned_stmt()->::pg_query::DropOwnedStmt::MergeFrom(from._internal_drop_owned_stmt()); break; } case kReassignOwnedStmt: { _internal_mutable_reassign_owned_stmt()->::pg_query::ReassignOwnedStmt::MergeFrom(from._internal_reassign_owned_stmt()); break; } case kCompositeTypeStmt: { _internal_mutable_composite_type_stmt()->::pg_query::CompositeTypeStmt::MergeFrom(from._internal_composite_type_stmt()); break; } case kCreateEnumStmt: { _internal_mutable_create_enum_stmt()->::pg_query::CreateEnumStmt::MergeFrom(from._internal_create_enum_stmt()); break; } case kCreateRangeStmt: { _internal_mutable_create_range_stmt()->::pg_query::CreateRangeStmt::MergeFrom(from._internal_create_range_stmt()); break; } case kAlterEnumStmt: { _internal_mutable_alter_enum_stmt()->::pg_query::AlterEnumStmt::MergeFrom(from._internal_alter_enum_stmt()); break; } case kAlterTsdictionaryStmt: { _internal_mutable_alter_tsdictionary_stmt()->::pg_query::AlterTSDictionaryStmt::MergeFrom(from._internal_alter_tsdictionary_stmt()); break; } case kAlterTsconfigurationStmt: { _internal_mutable_alter_tsconfiguration_stmt()->::pg_query::AlterTSConfigurationStmt::MergeFrom(from._internal_alter_tsconfiguration_stmt()); break; } case kCreateFdwStmt: { _internal_mutable_create_fdw_stmt()->::pg_query::CreateFdwStmt::MergeFrom(from._internal_create_fdw_stmt()); break; } case kAlterFdwStmt: { _internal_mutable_alter_fdw_stmt()->::pg_query::AlterFdwStmt::MergeFrom(from._internal_alter_fdw_stmt()); break; } case kCreateForeignServerStmt: { _internal_mutable_create_foreign_server_stmt()->::pg_query::CreateForeignServerStmt::MergeFrom(from._internal_create_foreign_server_stmt()); break; } case kAlterForeignServerStmt: { _internal_mutable_alter_foreign_server_stmt()->::pg_query::AlterForeignServerStmt::MergeFrom(from._internal_alter_foreign_server_stmt()); break; } case kCreateUserMappingStmt: { _internal_mutable_create_user_mapping_stmt()->::pg_query::CreateUserMappingStmt::MergeFrom(from._internal_create_user_mapping_stmt()); break; } case kAlterUserMappingStmt: { _internal_mutable_alter_user_mapping_stmt()->::pg_query::AlterUserMappingStmt::MergeFrom(from._internal_alter_user_mapping_stmt()); break; } case kDropUserMappingStmt: { _internal_mutable_drop_user_mapping_stmt()->::pg_query::DropUserMappingStmt::MergeFrom(from._internal_drop_user_mapping_stmt()); break; } case kAlterTableSpaceOptionsStmt: { _internal_mutable_alter_table_space_options_stmt()->::pg_query::AlterTableSpaceOptionsStmt::MergeFrom(from._internal_alter_table_space_options_stmt()); break; } case kAlterTableMoveAllStmt: { _internal_mutable_alter_table_move_all_stmt()->::pg_query::AlterTableMoveAllStmt::MergeFrom(from._internal_alter_table_move_all_stmt()); break; } case kSecLabelStmt: { _internal_mutable_sec_label_stmt()->::pg_query::SecLabelStmt::MergeFrom(from._internal_sec_label_stmt()); break; } case kCreateForeignTableStmt: { _internal_mutable_create_foreign_table_stmt()->::pg_query::CreateForeignTableStmt::MergeFrom(from._internal_create_foreign_table_stmt()); break; } case kImportForeignSchemaStmt: { _internal_mutable_import_foreign_schema_stmt()->::pg_query::ImportForeignSchemaStmt::MergeFrom(from._internal_import_foreign_schema_stmt()); break; } case kCreateExtensionStmt: { _internal_mutable_create_extension_stmt()->::pg_query::CreateExtensionStmt::MergeFrom(from._internal_create_extension_stmt()); break; } case kAlterExtensionStmt: { _internal_mutable_alter_extension_stmt()->::pg_query::AlterExtensionStmt::MergeFrom(from._internal_alter_extension_stmt()); break; } case kAlterExtensionContentsStmt: { _internal_mutable_alter_extension_contents_stmt()->::pg_query::AlterExtensionContentsStmt::MergeFrom(from._internal_alter_extension_contents_stmt()); break; } case kCreateEventTrigStmt: { _internal_mutable_create_event_trig_stmt()->::pg_query::CreateEventTrigStmt::MergeFrom(from._internal_create_event_trig_stmt()); break; } case kAlterEventTrigStmt: { _internal_mutable_alter_event_trig_stmt()->::pg_query::AlterEventTrigStmt::MergeFrom(from._internal_alter_event_trig_stmt()); break; } case kRefreshMatViewStmt: { _internal_mutable_refresh_mat_view_stmt()->::pg_query::RefreshMatViewStmt::MergeFrom(from._internal_refresh_mat_view_stmt()); break; } case kReplicaIdentityStmt: { _internal_mutable_replica_identity_stmt()->::pg_query::ReplicaIdentityStmt::MergeFrom(from._internal_replica_identity_stmt()); break; } case kAlterSystemStmt: { _internal_mutable_alter_system_stmt()->::pg_query::AlterSystemStmt::MergeFrom(from._internal_alter_system_stmt()); break; } case kCreatePolicyStmt: { _internal_mutable_create_policy_stmt()->::pg_query::CreatePolicyStmt::MergeFrom(from._internal_create_policy_stmt()); break; } case kAlterPolicyStmt: { _internal_mutable_alter_policy_stmt()->::pg_query::AlterPolicyStmt::MergeFrom(from._internal_alter_policy_stmt()); break; } case kCreateTransformStmt: { _internal_mutable_create_transform_stmt()->::pg_query::CreateTransformStmt::MergeFrom(from._internal_create_transform_stmt()); break; } case kCreateAmStmt: { _internal_mutable_create_am_stmt()->::pg_query::CreateAmStmt::MergeFrom(from._internal_create_am_stmt()); break; } case kCreatePublicationStmt: { _internal_mutable_create_publication_stmt()->::pg_query::CreatePublicationStmt::MergeFrom(from._internal_create_publication_stmt()); break; } case kAlterPublicationStmt: { _internal_mutable_alter_publication_stmt()->::pg_query::AlterPublicationStmt::MergeFrom(from._internal_alter_publication_stmt()); break; } case kCreateSubscriptionStmt: { _internal_mutable_create_subscription_stmt()->::pg_query::CreateSubscriptionStmt::MergeFrom(from._internal_create_subscription_stmt()); break; } case kAlterSubscriptionStmt: { _internal_mutable_alter_subscription_stmt()->::pg_query::AlterSubscriptionStmt::MergeFrom(from._internal_alter_subscription_stmt()); break; } case kDropSubscriptionStmt: { _internal_mutable_drop_subscription_stmt()->::pg_query::DropSubscriptionStmt::MergeFrom(from._internal_drop_subscription_stmt()); break; } case kCreateStatsStmt: { _internal_mutable_create_stats_stmt()->::pg_query::CreateStatsStmt::MergeFrom(from._internal_create_stats_stmt()); break; } case kAlterCollationStmt: { _internal_mutable_alter_collation_stmt()->::pg_query::AlterCollationStmt::MergeFrom(from._internal_alter_collation_stmt()); break; } case kCallStmt: { _internal_mutable_call_stmt()->::pg_query::CallStmt::MergeFrom(from._internal_call_stmt()); break; } case kAlterStatsStmt: { _internal_mutable_alter_stats_stmt()->::pg_query::AlterStatsStmt::MergeFrom(from._internal_alter_stats_stmt()); break; } case kAExpr: { _internal_mutable_a_expr()->::pg_query::A_Expr::MergeFrom(from._internal_a_expr()); break; } case kColumnRef: { _internal_mutable_column_ref()->::pg_query::ColumnRef::MergeFrom(from._internal_column_ref()); break; } case kParamRef: { _internal_mutable_param_ref()->::pg_query::ParamRef::MergeFrom(from._internal_param_ref()); break; } case kAConst: { _internal_mutable_a_const()->::pg_query::A_Const::MergeFrom(from._internal_a_const()); break; } case kFuncCall: { _internal_mutable_func_call()->::pg_query::FuncCall::MergeFrom(from._internal_func_call()); break; } case kAStar: { _internal_mutable_a_star()->::pg_query::A_Star::MergeFrom(from._internal_a_star()); break; } case kAIndices: { _internal_mutable_a_indices()->::pg_query::A_Indices::MergeFrom(from._internal_a_indices()); break; } case kAIndirection: { _internal_mutable_a_indirection()->::pg_query::A_Indirection::MergeFrom(from._internal_a_indirection()); break; } case kAArrayExpr: { _internal_mutable_a_array_expr()->::pg_query::A_ArrayExpr::MergeFrom(from._internal_a_array_expr()); break; } case kResTarget: { _internal_mutable_res_target()->::pg_query::ResTarget::MergeFrom(from._internal_res_target()); break; } case kMultiAssignRef: { _internal_mutable_multi_assign_ref()->::pg_query::MultiAssignRef::MergeFrom(from._internal_multi_assign_ref()); break; } case kTypeCast: { _internal_mutable_type_cast()->::pg_query::TypeCast::MergeFrom(from._internal_type_cast()); break; } case kCollateClause: { _internal_mutable_collate_clause()->::pg_query::CollateClause::MergeFrom(from._internal_collate_clause()); break; } case kSortBy: { _internal_mutable_sort_by()->::pg_query::SortBy::MergeFrom(from._internal_sort_by()); break; } case kWindowDef: { _internal_mutable_window_def()->::pg_query::WindowDef::MergeFrom(from._internal_window_def()); break; } case kRangeSubselect: { _internal_mutable_range_subselect()->::pg_query::RangeSubselect::MergeFrom(from._internal_range_subselect()); break; } case kRangeFunction: { _internal_mutable_range_function()->::pg_query::RangeFunction::MergeFrom(from._internal_range_function()); break; } case kRangeTableSample: { _internal_mutable_range_table_sample()->::pg_query::RangeTableSample::MergeFrom(from._internal_range_table_sample()); break; } case kRangeTableFunc: { _internal_mutable_range_table_func()->::pg_query::RangeTableFunc::MergeFrom(from._internal_range_table_func()); break; } case kRangeTableFuncCol: { _internal_mutable_range_table_func_col()->::pg_query::RangeTableFuncCol::MergeFrom(from._internal_range_table_func_col()); break; } case kTypeName: { _internal_mutable_type_name()->::pg_query::TypeName::MergeFrom(from._internal_type_name()); break; } case kColumnDef: { _internal_mutable_column_def()->::pg_query::ColumnDef::MergeFrom(from._internal_column_def()); break; } case kIndexElem: { _internal_mutable_index_elem()->::pg_query::IndexElem::MergeFrom(from._internal_index_elem()); break; } case kConstraint: { _internal_mutable_constraint()->::pg_query::Constraint::MergeFrom(from._internal_constraint()); break; } case kDefElem: { _internal_mutable_def_elem()->::pg_query::DefElem::MergeFrom(from._internal_def_elem()); break; } case kRangeTblEntry: { _internal_mutable_range_tbl_entry()->::pg_query::RangeTblEntry::MergeFrom(from._internal_range_tbl_entry()); break; } case kRangeTblFunction: { _internal_mutable_range_tbl_function()->::pg_query::RangeTblFunction::MergeFrom(from._internal_range_tbl_function()); break; } case kTableSampleClause: { _internal_mutable_table_sample_clause()->::pg_query::TableSampleClause::MergeFrom(from._internal_table_sample_clause()); break; } case kWithCheckOption: { _internal_mutable_with_check_option()->::pg_query::WithCheckOption::MergeFrom(from._internal_with_check_option()); break; } case kSortGroupClause: { _internal_mutable_sort_group_clause()->::pg_query::SortGroupClause::MergeFrom(from._internal_sort_group_clause()); break; } case kGroupingSet: { _internal_mutable_grouping_set()->::pg_query::GroupingSet::MergeFrom(from._internal_grouping_set()); break; } case kWindowClause: { _internal_mutable_window_clause()->::pg_query::WindowClause::MergeFrom(from._internal_window_clause()); break; } case kObjectWithArgs: { _internal_mutable_object_with_args()->::pg_query::ObjectWithArgs::MergeFrom(from._internal_object_with_args()); break; } case kAccessPriv: { _internal_mutable_access_priv()->::pg_query::AccessPriv::MergeFrom(from._internal_access_priv()); break; } case kCreateOpClassItem: { _internal_mutable_create_op_class_item()->::pg_query::CreateOpClassItem::MergeFrom(from._internal_create_op_class_item()); break; } case kTableLikeClause: { _internal_mutable_table_like_clause()->::pg_query::TableLikeClause::MergeFrom(from._internal_table_like_clause()); break; } case kFunctionParameter: { _internal_mutable_function_parameter()->::pg_query::FunctionParameter::MergeFrom(from._internal_function_parameter()); break; } case kLockingClause: { _internal_mutable_locking_clause()->::pg_query::LockingClause::MergeFrom(from._internal_locking_clause()); break; } case kRowMarkClause: { _internal_mutable_row_mark_clause()->::pg_query::RowMarkClause::MergeFrom(from._internal_row_mark_clause()); break; } case kXmlSerialize: { _internal_mutable_xml_serialize()->::pg_query::XmlSerialize::MergeFrom(from._internal_xml_serialize()); break; } case kWithClause: { _internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom(from._internal_with_clause()); break; } case kInferClause: { _internal_mutable_infer_clause()->::pg_query::InferClause::MergeFrom(from._internal_infer_clause()); break; } case kOnConflictClause: { _internal_mutable_on_conflict_clause()->::pg_query::OnConflictClause::MergeFrom(from._internal_on_conflict_clause()); break; } case kCommonTableExpr: { _internal_mutable_common_table_expr()->::pg_query::CommonTableExpr::MergeFrom(from._internal_common_table_expr()); break; } case kRoleSpec: { _internal_mutable_role_spec()->::pg_query::RoleSpec::MergeFrom(from._internal_role_spec()); break; } case kTriggerTransition: { _internal_mutable_trigger_transition()->::pg_query::TriggerTransition::MergeFrom(from._internal_trigger_transition()); break; } case kPartitionElem: { _internal_mutable_partition_elem()->::pg_query::PartitionElem::MergeFrom(from._internal_partition_elem()); break; } case kPartitionSpec: { _internal_mutable_partition_spec()->::pg_query::PartitionSpec::MergeFrom(from._internal_partition_spec()); break; } case kPartitionBoundSpec: { _internal_mutable_partition_bound_spec()->::pg_query::PartitionBoundSpec::MergeFrom(from._internal_partition_bound_spec()); break; } case kPartitionRangeDatum: { _internal_mutable_partition_range_datum()->::pg_query::PartitionRangeDatum::MergeFrom(from._internal_partition_range_datum()); break; } case kPartitionCmd: { _internal_mutable_partition_cmd()->::pg_query::PartitionCmd::MergeFrom(from._internal_partition_cmd()); break; } case kVacuumRelation: { _internal_mutable_vacuum_relation()->::pg_query::VacuumRelation::MergeFrom(from._internal_vacuum_relation()); break; } case kInlineCodeBlock: { _internal_mutable_inline_code_block()->::pg_query::InlineCodeBlock::MergeFrom(from._internal_inline_code_block()); break; } case kCallContext: { _internal_mutable_call_context()->::pg_query::CallContext::MergeFrom(from._internal_call_context()); break; } case kInteger: { _internal_mutable_integer()->::pg_query::Integer::MergeFrom(from._internal_integer()); break; } case kFloat: { _internal_mutable_float_()->::pg_query::Float::MergeFrom(from._internal_float_()); break; } case kString: { _internal_mutable_string()->::pg_query::String::MergeFrom(from._internal_string()); break; } case kBitString: { _internal_mutable_bit_string()->::pg_query::BitString::MergeFrom(from._internal_bit_string()); break; } case kNull: { _internal_mutable_null()->::pg_query::Null::MergeFrom(from._internal_null()); break; } case kList: { _internal_mutable_list()->::pg_query::List::MergeFrom(from._internal_list()); break; } case kIntList: { _internal_mutable_int_list()->::pg_query::IntList::MergeFrom(from._internal_int_list()); break; } case kOidList: { _internal_mutable_oid_list()->::pg_query::OidList::MergeFrom(from._internal_oid_list()); break; } case NODE_NOT_SET: { break; } } // @@protoc_insertion_point(copy_constructor:pg_query.Node) } void Node::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); clear_has_node(); } Node::~Node() { // @@protoc_insertion_point(destructor:pg_query.Node) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Node::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (has_node()) { clear_node(); } } void Node::ArenaDtor(void* object) { Node* _this = reinterpret_cast< Node* >(object); (void)_this; } void Node::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Node::SetCachedSize(int size) const { _cached_size_.Set(size); } const Node& Node::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Node::clear_node() { // @@protoc_insertion_point(one_of_clear_start:pg_query.Node) switch (node_case()) { case kAlias: { if (GetArena() == nullptr) { delete node_.alias_; } break; } case kRangeVar: { if (GetArena() == nullptr) { delete node_.range_var_; } break; } case kTableFunc: { if (GetArena() == nullptr) { delete node_.table_func_; } break; } case kExpr: { if (GetArena() == nullptr) { delete node_.expr_; } break; } case kVar: { if (GetArena() == nullptr) { delete node_.var_; } break; } case kParam: { if (GetArena() == nullptr) { delete node_.param_; } break; } case kAggref: { if (GetArena() == nullptr) { delete node_.aggref_; } break; } case kGroupingFunc: { if (GetArena() == nullptr) { delete node_.grouping_func_; } break; } case kWindowFunc: { if (GetArena() == nullptr) { delete node_.window_func_; } break; } case kSubscriptingRef: { if (GetArena() == nullptr) { delete node_.subscripting_ref_; } break; } case kFuncExpr: { if (GetArena() == nullptr) { delete node_.func_expr_; } break; } case kNamedArgExpr: { if (GetArena() == nullptr) { delete node_.named_arg_expr_; } break; } case kOpExpr: { if (GetArena() == nullptr) { delete node_.op_expr_; } break; } case kDistinctExpr: { if (GetArena() == nullptr) { delete node_.distinct_expr_; } break; } case kNullIfExpr: { if (GetArena() == nullptr) { delete node_.null_if_expr_; } break; } case kScalarArrayOpExpr: { if (GetArena() == nullptr) { delete node_.scalar_array_op_expr_; } break; } case kBoolExpr: { if (GetArena() == nullptr) { delete node_.bool_expr_; } break; } case kSubLink: { if (GetArena() == nullptr) { delete node_.sub_link_; } break; } case kSubPlan: { if (GetArena() == nullptr) { delete node_.sub_plan_; } break; } case kAlternativeSubPlan: { if (GetArena() == nullptr) { delete node_.alternative_sub_plan_; } break; } case kFieldSelect: { if (GetArena() == nullptr) { delete node_.field_select_; } break; } case kFieldStore: { if (GetArena() == nullptr) { delete node_.field_store_; } break; } case kRelabelType: { if (GetArena() == nullptr) { delete node_.relabel_type_; } break; } case kCoerceViaIo: { if (GetArena() == nullptr) { delete node_.coerce_via_io_; } break; } case kArrayCoerceExpr: { if (GetArena() == nullptr) { delete node_.array_coerce_expr_; } break; } case kConvertRowtypeExpr: { if (GetArena() == nullptr) { delete node_.convert_rowtype_expr_; } break; } case kCollateExpr: { if (GetArena() == nullptr) { delete node_.collate_expr_; } break; } case kCaseExpr: { if (GetArena() == nullptr) { delete node_.case_expr_; } break; } case kCaseWhen: { if (GetArena() == nullptr) { delete node_.case_when_; } break; } case kCaseTestExpr: { if (GetArena() == nullptr) { delete node_.case_test_expr_; } break; } case kArrayExpr: { if (GetArena() == nullptr) { delete node_.array_expr_; } break; } case kRowExpr: { if (GetArena() == nullptr) { delete node_.row_expr_; } break; } case kRowCompareExpr: { if (GetArena() == nullptr) { delete node_.row_compare_expr_; } break; } case kCoalesceExpr: { if (GetArena() == nullptr) { delete node_.coalesce_expr_; } break; } case kMinMaxExpr: { if (GetArena() == nullptr) { delete node_.min_max_expr_; } break; } case kSqlvalueFunction: { if (GetArena() == nullptr) { delete node_.sqlvalue_function_; } break; } case kXmlExpr: { if (GetArena() == nullptr) { delete node_.xml_expr_; } break; } case kNullTest: { if (GetArena() == nullptr) { delete node_.null_test_; } break; } case kBooleanTest: { if (GetArena() == nullptr) { delete node_.boolean_test_; } break; } case kCoerceToDomain: { if (GetArena() == nullptr) { delete node_.coerce_to_domain_; } break; } case kCoerceToDomainValue: { if (GetArena() == nullptr) { delete node_.coerce_to_domain_value_; } break; } case kSetToDefault: { if (GetArena() == nullptr) { delete node_.set_to_default_; } break; } case kCurrentOfExpr: { if (GetArena() == nullptr) { delete node_.current_of_expr_; } break; } case kNextValueExpr: { if (GetArena() == nullptr) { delete node_.next_value_expr_; } break; } case kInferenceElem: { if (GetArena() == nullptr) { delete node_.inference_elem_; } break; } case kTargetEntry: { if (GetArena() == nullptr) { delete node_.target_entry_; } break; } case kRangeTblRef: { if (GetArena() == nullptr) { delete node_.range_tbl_ref_; } break; } case kJoinExpr: { if (GetArena() == nullptr) { delete node_.join_expr_; } break; } case kFromExpr: { if (GetArena() == nullptr) { delete node_.from_expr_; } break; } case kOnConflictExpr: { if (GetArena() == nullptr) { delete node_.on_conflict_expr_; } break; } case kIntoClause: { if (GetArena() == nullptr) { delete node_.into_clause_; } break; } case kRawStmt: { if (GetArena() == nullptr) { delete node_.raw_stmt_; } break; } case kQuery: { if (GetArena() == nullptr) { delete node_.query_; } break; } case kInsertStmt: { if (GetArena() == nullptr) { delete node_.insert_stmt_; } break; } case kDeleteStmt: { if (GetArena() == nullptr) { delete node_.delete_stmt_; } break; } case kUpdateStmt: { if (GetArena() == nullptr) { delete node_.update_stmt_; } break; } case kSelectStmt: { if (GetArena() == nullptr) { delete node_.select_stmt_; } break; } case kAlterTableStmt: { if (GetArena() == nullptr) { delete node_.alter_table_stmt_; } break; } case kAlterTableCmd: { if (GetArena() == nullptr) { delete node_.alter_table_cmd_; } break; } case kAlterDomainStmt: { if (GetArena() == nullptr) { delete node_.alter_domain_stmt_; } break; } case kSetOperationStmt: { if (GetArena() == nullptr) { delete node_.set_operation_stmt_; } break; } case kGrantStmt: { if (GetArena() == nullptr) { delete node_.grant_stmt_; } break; } case kGrantRoleStmt: { if (GetArena() == nullptr) { delete node_.grant_role_stmt_; } break; } case kAlterDefaultPrivilegesStmt: { if (GetArena() == nullptr) { delete node_.alter_default_privileges_stmt_; } break; } case kClosePortalStmt: { if (GetArena() == nullptr) { delete node_.close_portal_stmt_; } break; } case kClusterStmt: { if (GetArena() == nullptr) { delete node_.cluster_stmt_; } break; } case kCopyStmt: { if (GetArena() == nullptr) { delete node_.copy_stmt_; } break; } case kCreateStmt: { if (GetArena() == nullptr) { delete node_.create_stmt_; } break; } case kDefineStmt: { if (GetArena() == nullptr) { delete node_.define_stmt_; } break; } case kDropStmt: { if (GetArena() == nullptr) { delete node_.drop_stmt_; } break; } case kTruncateStmt: { if (GetArena() == nullptr) { delete node_.truncate_stmt_; } break; } case kCommentStmt: { if (GetArena() == nullptr) { delete node_.comment_stmt_; } break; } case kFetchStmt: { if (GetArena() == nullptr) { delete node_.fetch_stmt_; } break; } case kIndexStmt: { if (GetArena() == nullptr) { delete node_.index_stmt_; } break; } case kCreateFunctionStmt: { if (GetArena() == nullptr) { delete node_.create_function_stmt_; } break; } case kAlterFunctionStmt: { if (GetArena() == nullptr) { delete node_.alter_function_stmt_; } break; } case kDoStmt: { if (GetArena() == nullptr) { delete node_.do_stmt_; } break; } case kRenameStmt: { if (GetArena() == nullptr) { delete node_.rename_stmt_; } break; } case kRuleStmt: { if (GetArena() == nullptr) { delete node_.rule_stmt_; } break; } case kNotifyStmt: { if (GetArena() == nullptr) { delete node_.notify_stmt_; } break; } case kListenStmt: { if (GetArena() == nullptr) { delete node_.listen_stmt_; } break; } case kUnlistenStmt: { if (GetArena() == nullptr) { delete node_.unlisten_stmt_; } break; } case kTransactionStmt: { if (GetArena() == nullptr) { delete node_.transaction_stmt_; } break; } case kViewStmt: { if (GetArena() == nullptr) { delete node_.view_stmt_; } break; } case kLoadStmt: { if (GetArena() == nullptr) { delete node_.load_stmt_; } break; } case kCreateDomainStmt: { if (GetArena() == nullptr) { delete node_.create_domain_stmt_; } break; } case kCreatedbStmt: { if (GetArena() == nullptr) { delete node_.createdb_stmt_; } break; } case kDropdbStmt: { if (GetArena() == nullptr) { delete node_.dropdb_stmt_; } break; } case kVacuumStmt: { if (GetArena() == nullptr) { delete node_.vacuum_stmt_; } break; } case kExplainStmt: { if (GetArena() == nullptr) { delete node_.explain_stmt_; } break; } case kCreateTableAsStmt: { if (GetArena() == nullptr) { delete node_.create_table_as_stmt_; } break; } case kCreateSeqStmt: { if (GetArena() == nullptr) { delete node_.create_seq_stmt_; } break; } case kAlterSeqStmt: { if (GetArena() == nullptr) { delete node_.alter_seq_stmt_; } break; } case kVariableSetStmt: { if (GetArena() == nullptr) { delete node_.variable_set_stmt_; } break; } case kVariableShowStmt: { if (GetArena() == nullptr) { delete node_.variable_show_stmt_; } break; } case kDiscardStmt: { if (GetArena() == nullptr) { delete node_.discard_stmt_; } break; } case kCreateTrigStmt: { if (GetArena() == nullptr) { delete node_.create_trig_stmt_; } break; } case kCreatePlangStmt: { if (GetArena() == nullptr) { delete node_.create_plang_stmt_; } break; } case kCreateRoleStmt: { if (GetArena() == nullptr) { delete node_.create_role_stmt_; } break; } case kAlterRoleStmt: { if (GetArena() == nullptr) { delete node_.alter_role_stmt_; } break; } case kDropRoleStmt: { if (GetArena() == nullptr) { delete node_.drop_role_stmt_; } break; } case kLockStmt: { if (GetArena() == nullptr) { delete node_.lock_stmt_; } break; } case kConstraintsSetStmt: { if (GetArena() == nullptr) { delete node_.constraints_set_stmt_; } break; } case kReindexStmt: { if (GetArena() == nullptr) { delete node_.reindex_stmt_; } break; } case kCheckPointStmt: { if (GetArena() == nullptr) { delete node_.check_point_stmt_; } break; } case kCreateSchemaStmt: { if (GetArena() == nullptr) { delete node_.create_schema_stmt_; } break; } case kAlterDatabaseStmt: { if (GetArena() == nullptr) { delete node_.alter_database_stmt_; } break; } case kAlterDatabaseSetStmt: { if (GetArena() == nullptr) { delete node_.alter_database_set_stmt_; } break; } case kAlterRoleSetStmt: { if (GetArena() == nullptr) { delete node_.alter_role_set_stmt_; } break; } case kCreateConversionStmt: { if (GetArena() == nullptr) { delete node_.create_conversion_stmt_; } break; } case kCreateCastStmt: { if (GetArena() == nullptr) { delete node_.create_cast_stmt_; } break; } case kCreateOpClassStmt: { if (GetArena() == nullptr) { delete node_.create_op_class_stmt_; } break; } case kCreateOpFamilyStmt: { if (GetArena() == nullptr) { delete node_.create_op_family_stmt_; } break; } case kAlterOpFamilyStmt: { if (GetArena() == nullptr) { delete node_.alter_op_family_stmt_; } break; } case kPrepareStmt: { if (GetArena() == nullptr) { delete node_.prepare_stmt_; } break; } case kExecuteStmt: { if (GetArena() == nullptr) { delete node_.execute_stmt_; } break; } case kDeallocateStmt: { if (GetArena() == nullptr) { delete node_.deallocate_stmt_; } break; } case kDeclareCursorStmt: { if (GetArena() == nullptr) { delete node_.declare_cursor_stmt_; } break; } case kCreateTableSpaceStmt: { if (GetArena() == nullptr) { delete node_.create_table_space_stmt_; } break; } case kDropTableSpaceStmt: { if (GetArena() == nullptr) { delete node_.drop_table_space_stmt_; } break; } case kAlterObjectDependsStmt: { if (GetArena() == nullptr) { delete node_.alter_object_depends_stmt_; } break; } case kAlterObjectSchemaStmt: { if (GetArena() == nullptr) { delete node_.alter_object_schema_stmt_; } break; } case kAlterOwnerStmt: { if (GetArena() == nullptr) { delete node_.alter_owner_stmt_; } break; } case kAlterOperatorStmt: { if (GetArena() == nullptr) { delete node_.alter_operator_stmt_; } break; } case kAlterTypeStmt: { if (GetArena() == nullptr) { delete node_.alter_type_stmt_; } break; } case kDropOwnedStmt: { if (GetArena() == nullptr) { delete node_.drop_owned_stmt_; } break; } case kReassignOwnedStmt: { if (GetArena() == nullptr) { delete node_.reassign_owned_stmt_; } break; } case kCompositeTypeStmt: { if (GetArena() == nullptr) { delete node_.composite_type_stmt_; } break; } case kCreateEnumStmt: { if (GetArena() == nullptr) { delete node_.create_enum_stmt_; } break; } case kCreateRangeStmt: { if (GetArena() == nullptr) { delete node_.create_range_stmt_; } break; } case kAlterEnumStmt: { if (GetArena() == nullptr) { delete node_.alter_enum_stmt_; } break; } case kAlterTsdictionaryStmt: { if (GetArena() == nullptr) { delete node_.alter_tsdictionary_stmt_; } break; } case kAlterTsconfigurationStmt: { if (GetArena() == nullptr) { delete node_.alter_tsconfiguration_stmt_; } break; } case kCreateFdwStmt: { if (GetArena() == nullptr) { delete node_.create_fdw_stmt_; } break; } case kAlterFdwStmt: { if (GetArena() == nullptr) { delete node_.alter_fdw_stmt_; } break; } case kCreateForeignServerStmt: { if (GetArena() == nullptr) { delete node_.create_foreign_server_stmt_; } break; } case kAlterForeignServerStmt: { if (GetArena() == nullptr) { delete node_.alter_foreign_server_stmt_; } break; } case kCreateUserMappingStmt: { if (GetArena() == nullptr) { delete node_.create_user_mapping_stmt_; } break; } case kAlterUserMappingStmt: { if (GetArena() == nullptr) { delete node_.alter_user_mapping_stmt_; } break; } case kDropUserMappingStmt: { if (GetArena() == nullptr) { delete node_.drop_user_mapping_stmt_; } break; } case kAlterTableSpaceOptionsStmt: { if (GetArena() == nullptr) { delete node_.alter_table_space_options_stmt_; } break; } case kAlterTableMoveAllStmt: { if (GetArena() == nullptr) { delete node_.alter_table_move_all_stmt_; } break; } case kSecLabelStmt: { if (GetArena() == nullptr) { delete node_.sec_label_stmt_; } break; } case kCreateForeignTableStmt: { if (GetArena() == nullptr) { delete node_.create_foreign_table_stmt_; } break; } case kImportForeignSchemaStmt: { if (GetArena() == nullptr) { delete node_.import_foreign_schema_stmt_; } break; } case kCreateExtensionStmt: { if (GetArena() == nullptr) { delete node_.create_extension_stmt_; } break; } case kAlterExtensionStmt: { if (GetArena() == nullptr) { delete node_.alter_extension_stmt_; } break; } case kAlterExtensionContentsStmt: { if (GetArena() == nullptr) { delete node_.alter_extension_contents_stmt_; } break; } case kCreateEventTrigStmt: { if (GetArena() == nullptr) { delete node_.create_event_trig_stmt_; } break; } case kAlterEventTrigStmt: { if (GetArena() == nullptr) { delete node_.alter_event_trig_stmt_; } break; } case kRefreshMatViewStmt: { if (GetArena() == nullptr) { delete node_.refresh_mat_view_stmt_; } break; } case kReplicaIdentityStmt: { if (GetArena() == nullptr) { delete node_.replica_identity_stmt_; } break; } case kAlterSystemStmt: { if (GetArena() == nullptr) { delete node_.alter_system_stmt_; } break; } case kCreatePolicyStmt: { if (GetArena() == nullptr) { delete node_.create_policy_stmt_; } break; } case kAlterPolicyStmt: { if (GetArena() == nullptr) { delete node_.alter_policy_stmt_; } break; } case kCreateTransformStmt: { if (GetArena() == nullptr) { delete node_.create_transform_stmt_; } break; } case kCreateAmStmt: { if (GetArena() == nullptr) { delete node_.create_am_stmt_; } break; } case kCreatePublicationStmt: { if (GetArena() == nullptr) { delete node_.create_publication_stmt_; } break; } case kAlterPublicationStmt: { if (GetArena() == nullptr) { delete node_.alter_publication_stmt_; } break; } case kCreateSubscriptionStmt: { if (GetArena() == nullptr) { delete node_.create_subscription_stmt_; } break; } case kAlterSubscriptionStmt: { if (GetArena() == nullptr) { delete node_.alter_subscription_stmt_; } break; } case kDropSubscriptionStmt: { if (GetArena() == nullptr) { delete node_.drop_subscription_stmt_; } break; } case kCreateStatsStmt: { if (GetArena() == nullptr) { delete node_.create_stats_stmt_; } break; } case kAlterCollationStmt: { if (GetArena() == nullptr) { delete node_.alter_collation_stmt_; } break; } case kCallStmt: { if (GetArena() == nullptr) { delete node_.call_stmt_; } break; } case kAlterStatsStmt: { if (GetArena() == nullptr) { delete node_.alter_stats_stmt_; } break; } case kAExpr: { if (GetArena() == nullptr) { delete node_.a_expr_; } break; } case kColumnRef: { if (GetArena() == nullptr) { delete node_.column_ref_; } break; } case kParamRef: { if (GetArena() == nullptr) { delete node_.param_ref_; } break; } case kAConst: { if (GetArena() == nullptr) { delete node_.a_const_; } break; } case kFuncCall: { if (GetArena() == nullptr) { delete node_.func_call_; } break; } case kAStar: { if (GetArena() == nullptr) { delete node_.a_star_; } break; } case kAIndices: { if (GetArena() == nullptr) { delete node_.a_indices_; } break; } case kAIndirection: { if (GetArena() == nullptr) { delete node_.a_indirection_; } break; } case kAArrayExpr: { if (GetArena() == nullptr) { delete node_.a_array_expr_; } break; } case kResTarget: { if (GetArena() == nullptr) { delete node_.res_target_; } break; } case kMultiAssignRef: { if (GetArena() == nullptr) { delete node_.multi_assign_ref_; } break; } case kTypeCast: { if (GetArena() == nullptr) { delete node_.type_cast_; } break; } case kCollateClause: { if (GetArena() == nullptr) { delete node_.collate_clause_; } break; } case kSortBy: { if (GetArena() == nullptr) { delete node_.sort_by_; } break; } case kWindowDef: { if (GetArena() == nullptr) { delete node_.window_def_; } break; } case kRangeSubselect: { if (GetArena() == nullptr) { delete node_.range_subselect_; } break; } case kRangeFunction: { if (GetArena() == nullptr) { delete node_.range_function_; } break; } case kRangeTableSample: { if (GetArena() == nullptr) { delete node_.range_table_sample_; } break; } case kRangeTableFunc: { if (GetArena() == nullptr) { delete node_.range_table_func_; } break; } case kRangeTableFuncCol: { if (GetArena() == nullptr) { delete node_.range_table_func_col_; } break; } case kTypeName: { if (GetArena() == nullptr) { delete node_.type_name_; } break; } case kColumnDef: { if (GetArena() == nullptr) { delete node_.column_def_; } break; } case kIndexElem: { if (GetArena() == nullptr) { delete node_.index_elem_; } break; } case kConstraint: { if (GetArena() == nullptr) { delete node_.constraint_; } break; } case kDefElem: { if (GetArena() == nullptr) { delete node_.def_elem_; } break; } case kRangeTblEntry: { if (GetArena() == nullptr) { delete node_.range_tbl_entry_; } break; } case kRangeTblFunction: { if (GetArena() == nullptr) { delete node_.range_tbl_function_; } break; } case kTableSampleClause: { if (GetArena() == nullptr) { delete node_.table_sample_clause_; } break; } case kWithCheckOption: { if (GetArena() == nullptr) { delete node_.with_check_option_; } break; } case kSortGroupClause: { if (GetArena() == nullptr) { delete node_.sort_group_clause_; } break; } case kGroupingSet: { if (GetArena() == nullptr) { delete node_.grouping_set_; } break; } case kWindowClause: { if (GetArena() == nullptr) { delete node_.window_clause_; } break; } case kObjectWithArgs: { if (GetArena() == nullptr) { delete node_.object_with_args_; } break; } case kAccessPriv: { if (GetArena() == nullptr) { delete node_.access_priv_; } break; } case kCreateOpClassItem: { if (GetArena() == nullptr) { delete node_.create_op_class_item_; } break; } case kTableLikeClause: { if (GetArena() == nullptr) { delete node_.table_like_clause_; } break; } case kFunctionParameter: { if (GetArena() == nullptr) { delete node_.function_parameter_; } break; } case kLockingClause: { if (GetArena() == nullptr) { delete node_.locking_clause_; } break; } case kRowMarkClause: { if (GetArena() == nullptr) { delete node_.row_mark_clause_; } break; } case kXmlSerialize: { if (GetArena() == nullptr) { delete node_.xml_serialize_; } break; } case kWithClause: { if (GetArena() == nullptr) { delete node_.with_clause_; } break; } case kInferClause: { if (GetArena() == nullptr) { delete node_.infer_clause_; } break; } case kOnConflictClause: { if (GetArena() == nullptr) { delete node_.on_conflict_clause_; } break; } case kCommonTableExpr: { if (GetArena() == nullptr) { delete node_.common_table_expr_; } break; } case kRoleSpec: { if (GetArena() == nullptr) { delete node_.role_spec_; } break; } case kTriggerTransition: { if (GetArena() == nullptr) { delete node_.trigger_transition_; } break; } case kPartitionElem: { if (GetArena() == nullptr) { delete node_.partition_elem_; } break; } case kPartitionSpec: { if (GetArena() == nullptr) { delete node_.partition_spec_; } break; } case kPartitionBoundSpec: { if (GetArena() == nullptr) { delete node_.partition_bound_spec_; } break; } case kPartitionRangeDatum: { if (GetArena() == nullptr) { delete node_.partition_range_datum_; } break; } case kPartitionCmd: { if (GetArena() == nullptr) { delete node_.partition_cmd_; } break; } case kVacuumRelation: { if (GetArena() == nullptr) { delete node_.vacuum_relation_; } break; } case kInlineCodeBlock: { if (GetArena() == nullptr) { delete node_.inline_code_block_; } break; } case kCallContext: { if (GetArena() == nullptr) { delete node_.call_context_; } break; } case kInteger: { if (GetArena() == nullptr) { delete node_.integer_; } break; } case kFloat: { if (GetArena() == nullptr) { delete node_.float__; } break; } case kString: { if (GetArena() == nullptr) { delete node_.string_; } break; } case kBitString: { if (GetArena() == nullptr) { delete node_.bit_string_; } break; } case kNull: { if (GetArena() == nullptr) { delete node_.null_; } break; } case kList: { if (GetArena() == nullptr) { delete node_.list_; } break; } case kIntList: { if (GetArena() == nullptr) { delete node_.int_list_; } break; } case kOidList: { if (GetArena() == nullptr) { delete node_.oid_list_; } break; } case NODE_NOT_SET: { break; } } _oneof_case_[0] = NODE_NOT_SET; } void Node::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Node) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; clear_node(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Node::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Alias alias = 1 [json_name = "Alias"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_alias(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_range_var(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_table_func(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Expr expr = 4 [json_name = "Expr"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Var var = 5 [json_name = "Var"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_var(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Param param = 6 [json_name = "Param"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_param(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Aggref aggref = 7 [json_name = "Aggref"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_aggref(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.GroupingFunc grouping_func = 8 [json_name = "GroupingFunc"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_grouping_func(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.WindowFunc window_func = 9 [json_name = "WindowFunc"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_window_func(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SubscriptingRef subscripting_ref = 10 [json_name = "SubscriptingRef"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr = ctx->ParseMessage(_internal_mutable_subscripting_ref(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.FuncExpr func_expr = 11 [json_name = "FuncExpr"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr = ctx->ParseMessage(_internal_mutable_func_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.NamedArgExpr named_arg_expr = 12 [json_name = "NamedArgExpr"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr = ctx->ParseMessage(_internal_mutable_named_arg_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.OpExpr op_expr = 13 [json_name = "OpExpr"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr = ctx->ParseMessage(_internal_mutable_op_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DistinctExpr distinct_expr = 14 [json_name = "DistinctExpr"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { ptr = ctx->ParseMessage(_internal_mutable_distinct_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.NullIfExpr null_if_expr = 15 [json_name = "NullIfExpr"]; case 15: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr = ctx->ParseMessage(_internal_mutable_null_if_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 16 [json_name = "ScalarArrayOpExpr"]; case 16: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) { ptr = ctx->ParseMessage(_internal_mutable_scalar_array_op_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.BoolExpr bool_expr = 17 [json_name = "BoolExpr"]; case 17: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) { ptr = ctx->ParseMessage(_internal_mutable_bool_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SubLink sub_link = 18 [json_name = "SubLink"]; case 18: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) { ptr = ctx->ParseMessage(_internal_mutable_sub_link(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SubPlan sub_plan = 19 [json_name = "SubPlan"]; case 19: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 154)) { ptr = ctx->ParseMessage(_internal_mutable_sub_plan(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlternativeSubPlan alternative_sub_plan = 20 [json_name = "AlternativeSubPlan"]; case 20: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) { ptr = ctx->ParseMessage(_internal_mutable_alternative_sub_plan(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.FieldSelect field_select = 21 [json_name = "FieldSelect"]; case 21: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) { ptr = ctx->ParseMessage(_internal_mutable_field_select(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.FieldStore field_store = 22 [json_name = "FieldStore"]; case 22: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) { ptr = ctx->ParseMessage(_internal_mutable_field_store(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RelabelType relabel_type = 23 [json_name = "RelabelType"]; case 23: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) { ptr = ctx->ParseMessage(_internal_mutable_relabel_type(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoerceViaIO coerce_via_io = 24 [json_name = "CoerceViaIO"]; case 24: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) { ptr = ctx->ParseMessage(_internal_mutable_coerce_via_io(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ArrayCoerceExpr array_coerce_expr = 25 [json_name = "ArrayCoerceExpr"]; case 25: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) { ptr = ctx->ParseMessage(_internal_mutable_array_coerce_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 26 [json_name = "ConvertRowtypeExpr"]; case 26: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) { ptr = ctx->ParseMessage(_internal_mutable_convert_rowtype_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CollateExpr collate_expr = 27 [json_name = "CollateExpr"]; case 27: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 218)) { ptr = ctx->ParseMessage(_internal_mutable_collate_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CaseExpr case_expr = 28 [json_name = "CaseExpr"]; case 28: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 226)) { ptr = ctx->ParseMessage(_internal_mutable_case_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CaseWhen case_when = 29 [json_name = "CaseWhen"]; case 29: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 234)) { ptr = ctx->ParseMessage(_internal_mutable_case_when(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CaseTestExpr case_test_expr = 30 [json_name = "CaseTestExpr"]; case 30: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 242)) { ptr = ctx->ParseMessage(_internal_mutable_case_test_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ArrayExpr array_expr = 31 [json_name = "ArrayExpr"]; case 31: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 250)) { ptr = ctx->ParseMessage(_internal_mutable_array_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RowExpr row_expr = 32 [json_name = "RowExpr"]; case 32: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 2)) { ptr = ctx->ParseMessage(_internal_mutable_row_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RowCompareExpr row_compare_expr = 33 [json_name = "RowCompareExpr"]; case 33: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_row_compare_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoalesceExpr coalesce_expr = 34 [json_name = "CoalesceExpr"]; case 34: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_coalesce_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.MinMaxExpr min_max_expr = 35 [json_name = "MinMaxExpr"]; case 35: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_min_max_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SQLValueFunction sqlvalue_function = 36 [json_name = "SQLValueFunction"]; case 36: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_sqlvalue_function(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.XmlExpr xml_expr = 37 [json_name = "XmlExpr"]; case 37: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_xml_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.NullTest null_test = 38 [json_name = "NullTest"]; case 38: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_null_test(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.BooleanTest boolean_test = 39 [json_name = "BooleanTest"]; case 39: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_boolean_test(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoerceToDomain coerce_to_domain = 40 [json_name = "CoerceToDomain"]; case 40: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_coerce_to_domain(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoerceToDomainValue coerce_to_domain_value = 41 [json_name = "CoerceToDomainValue"]; case 41: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_coerce_to_domain_value(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SetToDefault set_to_default = 42 [json_name = "SetToDefault"]; case 42: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr = ctx->ParseMessage(_internal_mutable_set_to_default(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CurrentOfExpr current_of_expr = 43 [json_name = "CurrentOfExpr"]; case 43: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr = ctx->ParseMessage(_internal_mutable_current_of_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.NextValueExpr next_value_expr = 44 [json_name = "NextValueExpr"]; case 44: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr = ctx->ParseMessage(_internal_mutable_next_value_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.InferenceElem inference_elem = 45 [json_name = "InferenceElem"]; case 45: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr = ctx->ParseMessage(_internal_mutable_inference_elem(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TargetEntry target_entry = 46 [json_name = "TargetEntry"]; case 46: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { ptr = ctx->ParseMessage(_internal_mutable_target_entry(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeTblRef range_tbl_ref = 47 [json_name = "RangeTblRef"]; case 47: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr = ctx->ParseMessage(_internal_mutable_range_tbl_ref(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.JoinExpr join_expr = 48 [json_name = "JoinExpr"]; case 48: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) { ptr = ctx->ParseMessage(_internal_mutable_join_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.FromExpr from_expr = 49 [json_name = "FromExpr"]; case 49: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) { ptr = ctx->ParseMessage(_internal_mutable_from_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.OnConflictExpr on_conflict_expr = 50 [json_name = "OnConflictExpr"]; case 50: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) { ptr = ctx->ParseMessage(_internal_mutable_on_conflict_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.IntoClause into_clause = 51 [json_name = "IntoClause"]; case 51: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 154)) { ptr = ctx->ParseMessage(_internal_mutable_into_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RawStmt raw_stmt = 52 [json_name = "RawStmt"]; case 52: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) { ptr = ctx->ParseMessage(_internal_mutable_raw_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Query query = 53 [json_name = "Query"]; case 53: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) { ptr = ctx->ParseMessage(_internal_mutable_query(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.InsertStmt insert_stmt = 54 [json_name = "InsertStmt"]; case 54: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) { ptr = ctx->ParseMessage(_internal_mutable_insert_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DeleteStmt delete_stmt = 55 [json_name = "DeleteStmt"]; case 55: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) { ptr = ctx->ParseMessage(_internal_mutable_delete_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.UpdateStmt update_stmt = 56 [json_name = "UpdateStmt"]; case 56: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) { ptr = ctx->ParseMessage(_internal_mutable_update_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SelectStmt select_stmt = 57 [json_name = "SelectStmt"]; case 57: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) { ptr = ctx->ParseMessage(_internal_mutable_select_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterTableStmt alter_table_stmt = 58 [json_name = "AlterTableStmt"]; case 58: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) { ptr = ctx->ParseMessage(_internal_mutable_alter_table_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterTableCmd alter_table_cmd = 59 [json_name = "AlterTableCmd"]; case 59: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 218)) { ptr = ctx->ParseMessage(_internal_mutable_alter_table_cmd(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterDomainStmt alter_domain_stmt = 60 [json_name = "AlterDomainStmt"]; case 60: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 226)) { ptr = ctx->ParseMessage(_internal_mutable_alter_domain_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SetOperationStmt set_operation_stmt = 61 [json_name = "SetOperationStmt"]; case 61: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 234)) { ptr = ctx->ParseMessage(_internal_mutable_set_operation_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.GrantStmt grant_stmt = 62 [json_name = "GrantStmt"]; case 62: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 242)) { ptr = ctx->ParseMessage(_internal_mutable_grant_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.GrantRoleStmt grant_role_stmt = 63 [json_name = "GrantRoleStmt"]; case 63: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 250)) { ptr = ctx->ParseMessage(_internal_mutable_grant_role_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 64 [json_name = "AlterDefaultPrivilegesStmt"]; case 64: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 2)) { ptr = ctx->ParseMessage(_internal_mutable_alter_default_privileges_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ClosePortalStmt close_portal_stmt = 65 [json_name = "ClosePortalStmt"]; case 65: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_close_portal_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ClusterStmt cluster_stmt = 66 [json_name = "ClusterStmt"]; case 66: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_cluster_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CopyStmt copy_stmt = 67 [json_name = "CopyStmt"]; case 67: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_copy_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateStmt create_stmt = 68 [json_name = "CreateStmt"]; case 68: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_create_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DefineStmt define_stmt = 69 [json_name = "DefineStmt"]; case 69: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_define_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropStmt drop_stmt = 70 [json_name = "DropStmt"]; case 70: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_drop_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TruncateStmt truncate_stmt = 71 [json_name = "TruncateStmt"]; case 71: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_truncate_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CommentStmt comment_stmt = 72 [json_name = "CommentStmt"]; case 72: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_comment_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.FetchStmt fetch_stmt = 73 [json_name = "FetchStmt"]; case 73: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_fetch_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.IndexStmt index_stmt = 74 [json_name = "IndexStmt"]; case 74: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr = ctx->ParseMessage(_internal_mutable_index_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateFunctionStmt create_function_stmt = 75 [json_name = "CreateFunctionStmt"]; case 75: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr = ctx->ParseMessage(_internal_mutable_create_function_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterFunctionStmt alter_function_stmt = 76 [json_name = "AlterFunctionStmt"]; case 76: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr = ctx->ParseMessage(_internal_mutable_alter_function_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DoStmt do_stmt = 77 [json_name = "DoStmt"]; case 77: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr = ctx->ParseMessage(_internal_mutable_do_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RenameStmt rename_stmt = 78 [json_name = "RenameStmt"]; case 78: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { ptr = ctx->ParseMessage(_internal_mutable_rename_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RuleStmt rule_stmt = 79 [json_name = "RuleStmt"]; case 79: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr = ctx->ParseMessage(_internal_mutable_rule_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.NotifyStmt notify_stmt = 80 [json_name = "NotifyStmt"]; case 80: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) { ptr = ctx->ParseMessage(_internal_mutable_notify_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ListenStmt listen_stmt = 81 [json_name = "ListenStmt"]; case 81: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) { ptr = ctx->ParseMessage(_internal_mutable_listen_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.UnlistenStmt unlisten_stmt = 82 [json_name = "UnlistenStmt"]; case 82: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) { ptr = ctx->ParseMessage(_internal_mutable_unlisten_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TransactionStmt transaction_stmt = 83 [json_name = "TransactionStmt"]; case 83: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 154)) { ptr = ctx->ParseMessage(_internal_mutable_transaction_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ViewStmt view_stmt = 84 [json_name = "ViewStmt"]; case 84: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) { ptr = ctx->ParseMessage(_internal_mutable_view_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.LoadStmt load_stmt = 85 [json_name = "LoadStmt"]; case 85: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) { ptr = ctx->ParseMessage(_internal_mutable_load_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateDomainStmt create_domain_stmt = 86 [json_name = "CreateDomainStmt"]; case 86: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) { ptr = ctx->ParseMessage(_internal_mutable_create_domain_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreatedbStmt createdb_stmt = 87 [json_name = "CreatedbStmt"]; case 87: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) { ptr = ctx->ParseMessage(_internal_mutable_createdb_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropdbStmt dropdb_stmt = 88 [json_name = "DropdbStmt"]; case 88: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) { ptr = ctx->ParseMessage(_internal_mutable_dropdb_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.VacuumStmt vacuum_stmt = 89 [json_name = "VacuumStmt"]; case 89: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) { ptr = ctx->ParseMessage(_internal_mutable_vacuum_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ExplainStmt explain_stmt = 90 [json_name = "ExplainStmt"]; case 90: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) { ptr = ctx->ParseMessage(_internal_mutable_explain_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateTableAsStmt create_table_as_stmt = 91 [json_name = "CreateTableAsStmt"]; case 91: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 218)) { ptr = ctx->ParseMessage(_internal_mutable_create_table_as_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateSeqStmt create_seq_stmt = 92 [json_name = "CreateSeqStmt"]; case 92: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 226)) { ptr = ctx->ParseMessage(_internal_mutable_create_seq_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterSeqStmt alter_seq_stmt = 93 [json_name = "AlterSeqStmt"]; case 93: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 234)) { ptr = ctx->ParseMessage(_internal_mutable_alter_seq_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.VariableSetStmt variable_set_stmt = 94 [json_name = "VariableSetStmt"]; case 94: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 242)) { ptr = ctx->ParseMessage(_internal_mutable_variable_set_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.VariableShowStmt variable_show_stmt = 95 [json_name = "VariableShowStmt"]; case 95: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 250)) { ptr = ctx->ParseMessage(_internal_mutable_variable_show_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DiscardStmt discard_stmt = 96 [json_name = "DiscardStmt"]; case 96: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 2)) { ptr = ctx->ParseMessage(_internal_mutable_discard_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateTrigStmt create_trig_stmt = 97 [json_name = "CreateTrigStmt"]; case 97: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_create_trig_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreatePLangStmt create_plang_stmt = 98 [json_name = "CreatePLangStmt"]; case 98: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_create_plang_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateRoleStmt create_role_stmt = 99 [json_name = "CreateRoleStmt"]; case 99: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_create_role_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterRoleStmt alter_role_stmt = 100 [json_name = "AlterRoleStmt"]; case 100: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_alter_role_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropRoleStmt drop_role_stmt = 101 [json_name = "DropRoleStmt"]; case 101: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_drop_role_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.LockStmt lock_stmt = 102 [json_name = "LockStmt"]; case 102: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_lock_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ConstraintsSetStmt constraints_set_stmt = 103 [json_name = "ConstraintsSetStmt"]; case 103: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_constraints_set_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ReindexStmt reindex_stmt = 104 [json_name = "ReindexStmt"]; case 104: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_reindex_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CheckPointStmt check_point_stmt = 105 [json_name = "CheckPointStmt"]; case 105: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_check_point_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateSchemaStmt create_schema_stmt = 106 [json_name = "CreateSchemaStmt"]; case 106: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr = ctx->ParseMessage(_internal_mutable_create_schema_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterDatabaseStmt alter_database_stmt = 107 [json_name = "AlterDatabaseStmt"]; case 107: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr = ctx->ParseMessage(_internal_mutable_alter_database_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 108 [json_name = "AlterDatabaseSetStmt"]; case 108: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr = ctx->ParseMessage(_internal_mutable_alter_database_set_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 109 [json_name = "AlterRoleSetStmt"]; case 109: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr = ctx->ParseMessage(_internal_mutable_alter_role_set_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateConversionStmt create_conversion_stmt = 110 [json_name = "CreateConversionStmt"]; case 110: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { ptr = ctx->ParseMessage(_internal_mutable_create_conversion_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateCastStmt create_cast_stmt = 111 [json_name = "CreateCastStmt"]; case 111: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr = ctx->ParseMessage(_internal_mutable_create_cast_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateOpClassStmt create_op_class_stmt = 112 [json_name = "CreateOpClassStmt"]; case 112: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) { ptr = ctx->ParseMessage(_internal_mutable_create_op_class_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 113 [json_name = "CreateOpFamilyStmt"]; case 113: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) { ptr = ctx->ParseMessage(_internal_mutable_create_op_family_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 114 [json_name = "AlterOpFamilyStmt"]; case 114: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) { ptr = ctx->ParseMessage(_internal_mutable_alter_op_family_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.PrepareStmt prepare_stmt = 115 [json_name = "PrepareStmt"]; case 115: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 154)) { ptr = ctx->ParseMessage(_internal_mutable_prepare_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ExecuteStmt execute_stmt = 116 [json_name = "ExecuteStmt"]; case 116: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) { ptr = ctx->ParseMessage(_internal_mutable_execute_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DeallocateStmt deallocate_stmt = 117 [json_name = "DeallocateStmt"]; case 117: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) { ptr = ctx->ParseMessage(_internal_mutable_deallocate_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DeclareCursorStmt declare_cursor_stmt = 118 [json_name = "DeclareCursorStmt"]; case 118: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) { ptr = ctx->ParseMessage(_internal_mutable_declare_cursor_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 119 [json_name = "CreateTableSpaceStmt"]; case 119: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) { ptr = ctx->ParseMessage(_internal_mutable_create_table_space_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 120 [json_name = "DropTableSpaceStmt"]; case 120: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) { ptr = ctx->ParseMessage(_internal_mutable_drop_table_space_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 121 [json_name = "AlterObjectDependsStmt"]; case 121: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) { ptr = ctx->ParseMessage(_internal_mutable_alter_object_depends_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 122 [json_name = "AlterObjectSchemaStmt"]; case 122: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) { ptr = ctx->ParseMessage(_internal_mutable_alter_object_schema_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterOwnerStmt alter_owner_stmt = 123 [json_name = "AlterOwnerStmt"]; case 123: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 218)) { ptr = ctx->ParseMessage(_internal_mutable_alter_owner_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterOperatorStmt alter_operator_stmt = 124 [json_name = "AlterOperatorStmt"]; case 124: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 226)) { ptr = ctx->ParseMessage(_internal_mutable_alter_operator_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterTypeStmt alter_type_stmt = 125 [json_name = "AlterTypeStmt"]; case 125: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 234)) { ptr = ctx->ParseMessage(_internal_mutable_alter_type_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropOwnedStmt drop_owned_stmt = 126 [json_name = "DropOwnedStmt"]; case 126: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 242)) { ptr = ctx->ParseMessage(_internal_mutable_drop_owned_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 127 [json_name = "ReassignOwnedStmt"]; case 127: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 250)) { ptr = ctx->ParseMessage(_internal_mutable_reassign_owned_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CompositeTypeStmt composite_type_stmt = 128 [json_name = "CompositeTypeStmt"]; case 128: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 2)) { ptr = ctx->ParseMessage(_internal_mutable_composite_type_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateEnumStmt create_enum_stmt = 129 [json_name = "CreateEnumStmt"]; case 129: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_create_enum_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateRangeStmt create_range_stmt = 130 [json_name = "CreateRangeStmt"]; case 130: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_create_range_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterEnumStmt alter_enum_stmt = 131 [json_name = "AlterEnumStmt"]; case 131: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_alter_enum_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 132 [json_name = "AlterTSDictionaryStmt"]; case 132: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_alter_tsdictionary_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 133 [json_name = "AlterTSConfigurationStmt"]; case 133: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_alter_tsconfiguration_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateFdwStmt create_fdw_stmt = 134 [json_name = "CreateFdwStmt"]; case 134: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_create_fdw_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterFdwStmt alter_fdw_stmt = 135 [json_name = "AlterFdwStmt"]; case 135: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_alter_fdw_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 136 [json_name = "CreateForeignServerStmt"]; case 136: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_create_foreign_server_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 137 [json_name = "AlterForeignServerStmt"]; case 137: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_alter_foreign_server_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 138 [json_name = "CreateUserMappingStmt"]; case 138: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr = ctx->ParseMessage(_internal_mutable_create_user_mapping_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 139 [json_name = "AlterUserMappingStmt"]; case 139: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr = ctx->ParseMessage(_internal_mutable_alter_user_mapping_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 140 [json_name = "DropUserMappingStmt"]; case 140: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr = ctx->ParseMessage(_internal_mutable_drop_user_mapping_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 141 [json_name = "AlterTableSpaceOptionsStmt"]; case 141: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr = ctx->ParseMessage(_internal_mutable_alter_table_space_options_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 142 [json_name = "AlterTableMoveAllStmt"]; case 142: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { ptr = ctx->ParseMessage(_internal_mutable_alter_table_move_all_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SecLabelStmt sec_label_stmt = 143 [json_name = "SecLabelStmt"]; case 143: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr = ctx->ParseMessage(_internal_mutable_sec_label_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 144 [json_name = "CreateForeignTableStmt"]; case 144: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) { ptr = ctx->ParseMessage(_internal_mutable_create_foreign_table_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 145 [json_name = "ImportForeignSchemaStmt"]; case 145: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) { ptr = ctx->ParseMessage(_internal_mutable_import_foreign_schema_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateExtensionStmt create_extension_stmt = 146 [json_name = "CreateExtensionStmt"]; case 146: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) { ptr = ctx->ParseMessage(_internal_mutable_create_extension_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterExtensionStmt alter_extension_stmt = 147 [json_name = "AlterExtensionStmt"]; case 147: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 154)) { ptr = ctx->ParseMessage(_internal_mutable_alter_extension_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 148 [json_name = "AlterExtensionContentsStmt"]; case 148: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) { ptr = ctx->ParseMessage(_internal_mutable_alter_extension_contents_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 149 [json_name = "CreateEventTrigStmt"]; case 149: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) { ptr = ctx->ParseMessage(_internal_mutable_create_event_trig_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 150 [json_name = "AlterEventTrigStmt"]; case 150: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) { ptr = ctx->ParseMessage(_internal_mutable_alter_event_trig_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 151 [json_name = "RefreshMatViewStmt"]; case 151: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) { ptr = ctx->ParseMessage(_internal_mutable_refresh_mat_view_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 152 [json_name = "ReplicaIdentityStmt"]; case 152: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) { ptr = ctx->ParseMessage(_internal_mutable_replica_identity_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterSystemStmt alter_system_stmt = 153 [json_name = "AlterSystemStmt"]; case 153: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) { ptr = ctx->ParseMessage(_internal_mutable_alter_system_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreatePolicyStmt create_policy_stmt = 154 [json_name = "CreatePolicyStmt"]; case 154: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) { ptr = ctx->ParseMessage(_internal_mutable_create_policy_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterPolicyStmt alter_policy_stmt = 155 [json_name = "AlterPolicyStmt"]; case 155: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 218)) { ptr = ctx->ParseMessage(_internal_mutable_alter_policy_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateTransformStmt create_transform_stmt = 156 [json_name = "CreateTransformStmt"]; case 156: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 226)) { ptr = ctx->ParseMessage(_internal_mutable_create_transform_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateAmStmt create_am_stmt = 157 [json_name = "CreateAmStmt"]; case 157: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 234)) { ptr = ctx->ParseMessage(_internal_mutable_create_am_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreatePublicationStmt create_publication_stmt = 158 [json_name = "CreatePublicationStmt"]; case 158: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 242)) { ptr = ctx->ParseMessage(_internal_mutable_create_publication_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterPublicationStmt alter_publication_stmt = 159 [json_name = "AlterPublicationStmt"]; case 159: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 250)) { ptr = ctx->ParseMessage(_internal_mutable_alter_publication_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 160 [json_name = "CreateSubscriptionStmt"]; case 160: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 2)) { ptr = ctx->ParseMessage(_internal_mutable_create_subscription_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 161 [json_name = "AlterSubscriptionStmt"]; case 161: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_alter_subscription_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 162 [json_name = "DropSubscriptionStmt"]; case 162: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_drop_subscription_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateStatsStmt create_stats_stmt = 163 [json_name = "CreateStatsStmt"]; case 163: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_create_stats_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterCollationStmt alter_collation_stmt = 164 [json_name = "AlterCollationStmt"]; case 164: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_alter_collation_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CallStmt call_stmt = 165 [json_name = "CallStmt"]; case 165: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_call_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AlterStatsStmt alter_stats_stmt = 166 [json_name = "AlterStatsStmt"]; case 166: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_alter_stats_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.A_Expr a_expr = 167 [json_name = "A_Expr"]; case 167: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_a_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ColumnRef column_ref = 168 [json_name = "ColumnRef"]; case 168: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_column_ref(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ParamRef param_ref = 169 [json_name = "ParamRef"]; case 169: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_param_ref(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.A_Const a_const = 170 [json_name = "A_Const"]; case 170: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr = ctx->ParseMessage(_internal_mutable_a_const(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.FuncCall func_call = 171 [json_name = "FuncCall"]; case 171: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr = ctx->ParseMessage(_internal_mutable_func_call(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.A_Star a_star = 172 [json_name = "A_Star"]; case 172: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr = ctx->ParseMessage(_internal_mutable_a_star(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.A_Indices a_indices = 173 [json_name = "A_Indices"]; case 173: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr = ctx->ParseMessage(_internal_mutable_a_indices(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.A_Indirection a_indirection = 174 [json_name = "A_Indirection"]; case 174: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { ptr = ctx->ParseMessage(_internal_mutable_a_indirection(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.A_ArrayExpr a_array_expr = 175 [json_name = "A_ArrayExpr"]; case 175: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr = ctx->ParseMessage(_internal_mutable_a_array_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ResTarget res_target = 176 [json_name = "ResTarget"]; case 176: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) { ptr = ctx->ParseMessage(_internal_mutable_res_target(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.MultiAssignRef multi_assign_ref = 177 [json_name = "MultiAssignRef"]; case 177: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) { ptr = ctx->ParseMessage(_internal_mutable_multi_assign_ref(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeCast type_cast = 178 [json_name = "TypeCast"]; case 178: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) { ptr = ctx->ParseMessage(_internal_mutable_type_cast(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CollateClause collate_clause = 179 [json_name = "CollateClause"]; case 179: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 154)) { ptr = ctx->ParseMessage(_internal_mutable_collate_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SortBy sort_by = 180 [json_name = "SortBy"]; case 180: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) { ptr = ctx->ParseMessage(_internal_mutable_sort_by(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.WindowDef window_def = 181 [json_name = "WindowDef"]; case 181: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) { ptr = ctx->ParseMessage(_internal_mutable_window_def(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeSubselect range_subselect = 182 [json_name = "RangeSubselect"]; case 182: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) { ptr = ctx->ParseMessage(_internal_mutable_range_subselect(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeFunction range_function = 183 [json_name = "RangeFunction"]; case 183: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) { ptr = ctx->ParseMessage(_internal_mutable_range_function(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeTableSample range_table_sample = 184 [json_name = "RangeTableSample"]; case 184: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) { ptr = ctx->ParseMessage(_internal_mutable_range_table_sample(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeTableFunc range_table_func = 185 [json_name = "RangeTableFunc"]; case 185: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) { ptr = ctx->ParseMessage(_internal_mutable_range_table_func(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeTableFuncCol range_table_func_col = 186 [json_name = "RangeTableFuncCol"]; case 186: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) { ptr = ctx->ParseMessage(_internal_mutable_range_table_func_col(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeName type_name = 187 [json_name = "TypeName"]; case 187: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 218)) { ptr = ctx->ParseMessage(_internal_mutable_type_name(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ColumnDef column_def = 188 [json_name = "ColumnDef"]; case 188: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 226)) { ptr = ctx->ParseMessage(_internal_mutable_column_def(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.IndexElem index_elem = 189 [json_name = "IndexElem"]; case 189: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 234)) { ptr = ctx->ParseMessage(_internal_mutable_index_elem(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Constraint constraint = 190 [json_name = "Constraint"]; case 190: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 242)) { ptr = ctx->ParseMessage(_internal_mutable_constraint(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DefElem def_elem = 191 [json_name = "DefElem"]; case 191: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 250)) { ptr = ctx->ParseMessage(_internal_mutable_def_elem(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeTblEntry range_tbl_entry = 192 [json_name = "RangeTblEntry"]; case 192: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 2)) { ptr = ctx->ParseMessage(_internal_mutable_range_tbl_entry(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeTblFunction range_tbl_function = 193 [json_name = "RangeTblFunction"]; case 193: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_range_tbl_function(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TableSampleClause table_sample_clause = 194 [json_name = "TableSampleClause"]; case 194: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_table_sample_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.WithCheckOption with_check_option = 195 [json_name = "WithCheckOption"]; case 195: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_with_check_option(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SortGroupClause sort_group_clause = 196 [json_name = "SortGroupClause"]; case 196: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_sort_group_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.GroupingSet grouping_set = 197 [json_name = "GroupingSet"]; case 197: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_grouping_set(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.WindowClause window_clause = 198 [json_name = "WindowClause"]; case 198: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_window_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ObjectWithArgs object_with_args = 199 [json_name = "ObjectWithArgs"]; case 199: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_object_with_args(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AccessPriv access_priv = 200 [json_name = "AccessPriv"]; case 200: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_access_priv(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CreateOpClassItem create_op_class_item = 201 [json_name = "CreateOpClassItem"]; case 201: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_create_op_class_item(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TableLikeClause table_like_clause = 202 [json_name = "TableLikeClause"]; case 202: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr = ctx->ParseMessage(_internal_mutable_table_like_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.FunctionParameter function_parameter = 203 [json_name = "FunctionParameter"]; case 203: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr = ctx->ParseMessage(_internal_mutable_function_parameter(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.LockingClause locking_clause = 204 [json_name = "LockingClause"]; case 204: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr = ctx->ParseMessage(_internal_mutable_locking_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RowMarkClause row_mark_clause = 205 [json_name = "RowMarkClause"]; case 205: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr = ctx->ParseMessage(_internal_mutable_row_mark_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.XmlSerialize xml_serialize = 206 [json_name = "XmlSerialize"]; case 206: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { ptr = ctx->ParseMessage(_internal_mutable_xml_serialize(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.WithClause with_clause = 207 [json_name = "WithClause"]; case 207: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr = ctx->ParseMessage(_internal_mutable_with_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.InferClause infer_clause = 208 [json_name = "InferClause"]; case 208: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) { ptr = ctx->ParseMessage(_internal_mutable_infer_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.OnConflictClause on_conflict_clause = 209 [json_name = "OnConflictClause"]; case 209: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) { ptr = ctx->ParseMessage(_internal_mutable_on_conflict_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CommonTableExpr common_table_expr = 210 [json_name = "CommonTableExpr"]; case 210: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) { ptr = ctx->ParseMessage(_internal_mutable_common_table_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RoleSpec role_spec = 211 [json_name = "RoleSpec"]; case 211: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 154)) { ptr = ctx->ParseMessage(_internal_mutable_role_spec(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TriggerTransition trigger_transition = 212 [json_name = "TriggerTransition"]; case 212: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) { ptr = ctx->ParseMessage(_internal_mutable_trigger_transition(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.PartitionElem partition_elem = 213 [json_name = "PartitionElem"]; case 213: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) { ptr = ctx->ParseMessage(_internal_mutable_partition_elem(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.PartitionSpec partition_spec = 214 [json_name = "PartitionSpec"]; case 214: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) { ptr = ctx->ParseMessage(_internal_mutable_partition_spec(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.PartitionBoundSpec partition_bound_spec = 215 [json_name = "PartitionBoundSpec"]; case 215: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) { ptr = ctx->ParseMessage(_internal_mutable_partition_bound_spec(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.PartitionRangeDatum partition_range_datum = 216 [json_name = "PartitionRangeDatum"]; case 216: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) { ptr = ctx->ParseMessage(_internal_mutable_partition_range_datum(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.PartitionCmd partition_cmd = 217 [json_name = "PartitionCmd"]; case 217: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) { ptr = ctx->ParseMessage(_internal_mutable_partition_cmd(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.VacuumRelation vacuum_relation = 218 [json_name = "VacuumRelation"]; case 218: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) { ptr = ctx->ParseMessage(_internal_mutable_vacuum_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.InlineCodeBlock inline_code_block = 219 [json_name = "InlineCodeBlock"]; case 219: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 218)) { ptr = ctx->ParseMessage(_internal_mutable_inline_code_block(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CallContext call_context = 220 [json_name = "CallContext"]; case 220: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 226)) { ptr = ctx->ParseMessage(_internal_mutable_call_context(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Integer integer = 221 [json_name = "Integer"]; case 221: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 234)) { ptr = ctx->ParseMessage(_internal_mutable_integer(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Float float = 222 [json_name = "Float"]; case 222: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 242)) { ptr = ctx->ParseMessage(_internal_mutable_float_(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.String string = 223 [json_name = "String"]; case 223: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 250)) { ptr = ctx->ParseMessage(_internal_mutable_string(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.BitString bit_string = 224 [json_name = "BitString"]; case 224: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 2)) { ptr = ctx->ParseMessage(_internal_mutable_bit_string(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Null null = 225 [json_name = "Null"]; case 225: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_null(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.List list = 226 [json_name = "List"]; case 226: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_list(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.IntList int_list = 227 [json_name = "IntList"]; case 227: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_int_list(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.OidList oid_list = 228 [json_name = "OidList"]; case 228: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_oid_list(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Node::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Node) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Alias alias = 1 [json_name = "Alias"]; if (_internal_has_alias()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::alias(this), target, stream); } // .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; if (_internal_has_range_var()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::range_var(this), target, stream); } // .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; if (_internal_has_table_func()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::table_func(this), target, stream); } // .pg_query.Expr expr = 4 [json_name = "Expr"]; if (_internal_has_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::expr(this), target, stream); } // .pg_query.Var var = 5 [json_name = "Var"]; if (_internal_has_var()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::var(this), target, stream); } // .pg_query.Param param = 6 [json_name = "Param"]; if (_internal_has_param()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::param(this), target, stream); } // .pg_query.Aggref aggref = 7 [json_name = "Aggref"]; if (_internal_has_aggref()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 7, _Internal::aggref(this), target, stream); } // .pg_query.GroupingFunc grouping_func = 8 [json_name = "GroupingFunc"]; if (_internal_has_grouping_func()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 8, _Internal::grouping_func(this), target, stream); } // .pg_query.WindowFunc window_func = 9 [json_name = "WindowFunc"]; if (_internal_has_window_func()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 9, _Internal::window_func(this), target, stream); } // .pg_query.SubscriptingRef subscripting_ref = 10 [json_name = "SubscriptingRef"]; if (_internal_has_subscripting_ref()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 10, _Internal::subscripting_ref(this), target, stream); } // .pg_query.FuncExpr func_expr = 11 [json_name = "FuncExpr"]; if (_internal_has_func_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 11, _Internal::func_expr(this), target, stream); } // .pg_query.NamedArgExpr named_arg_expr = 12 [json_name = "NamedArgExpr"]; if (_internal_has_named_arg_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 12, _Internal::named_arg_expr(this), target, stream); } // .pg_query.OpExpr op_expr = 13 [json_name = "OpExpr"]; if (_internal_has_op_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 13, _Internal::op_expr(this), target, stream); } // .pg_query.DistinctExpr distinct_expr = 14 [json_name = "DistinctExpr"]; if (_internal_has_distinct_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 14, _Internal::distinct_expr(this), target, stream); } // .pg_query.NullIfExpr null_if_expr = 15 [json_name = "NullIfExpr"]; if (_internal_has_null_if_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 15, _Internal::null_if_expr(this), target, stream); } // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 16 [json_name = "ScalarArrayOpExpr"]; if (_internal_has_scalar_array_op_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 16, _Internal::scalar_array_op_expr(this), target, stream); } // .pg_query.BoolExpr bool_expr = 17 [json_name = "BoolExpr"]; if (_internal_has_bool_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 17, _Internal::bool_expr(this), target, stream); } // .pg_query.SubLink sub_link = 18 [json_name = "SubLink"]; if (_internal_has_sub_link()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 18, _Internal::sub_link(this), target, stream); } // .pg_query.SubPlan sub_plan = 19 [json_name = "SubPlan"]; if (_internal_has_sub_plan()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 19, _Internal::sub_plan(this), target, stream); } // .pg_query.AlternativeSubPlan alternative_sub_plan = 20 [json_name = "AlternativeSubPlan"]; if (_internal_has_alternative_sub_plan()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 20, _Internal::alternative_sub_plan(this), target, stream); } // .pg_query.FieldSelect field_select = 21 [json_name = "FieldSelect"]; if (_internal_has_field_select()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 21, _Internal::field_select(this), target, stream); } // .pg_query.FieldStore field_store = 22 [json_name = "FieldStore"]; if (_internal_has_field_store()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 22, _Internal::field_store(this), target, stream); } // .pg_query.RelabelType relabel_type = 23 [json_name = "RelabelType"]; if (_internal_has_relabel_type()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 23, _Internal::relabel_type(this), target, stream); } // .pg_query.CoerceViaIO coerce_via_io = 24 [json_name = "CoerceViaIO"]; if (_internal_has_coerce_via_io()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 24, _Internal::coerce_via_io(this), target, stream); } // .pg_query.ArrayCoerceExpr array_coerce_expr = 25 [json_name = "ArrayCoerceExpr"]; if (_internal_has_array_coerce_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 25, _Internal::array_coerce_expr(this), target, stream); } // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 26 [json_name = "ConvertRowtypeExpr"]; if (_internal_has_convert_rowtype_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 26, _Internal::convert_rowtype_expr(this), target, stream); } // .pg_query.CollateExpr collate_expr = 27 [json_name = "CollateExpr"]; if (_internal_has_collate_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 27, _Internal::collate_expr(this), target, stream); } // .pg_query.CaseExpr case_expr = 28 [json_name = "CaseExpr"]; if (_internal_has_case_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 28, _Internal::case_expr(this), target, stream); } // .pg_query.CaseWhen case_when = 29 [json_name = "CaseWhen"]; if (_internal_has_case_when()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 29, _Internal::case_when(this), target, stream); } // .pg_query.CaseTestExpr case_test_expr = 30 [json_name = "CaseTestExpr"]; if (_internal_has_case_test_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 30, _Internal::case_test_expr(this), target, stream); } // .pg_query.ArrayExpr array_expr = 31 [json_name = "ArrayExpr"]; if (_internal_has_array_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 31, _Internal::array_expr(this), target, stream); } // .pg_query.RowExpr row_expr = 32 [json_name = "RowExpr"]; if (_internal_has_row_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 32, _Internal::row_expr(this), target, stream); } // .pg_query.RowCompareExpr row_compare_expr = 33 [json_name = "RowCompareExpr"]; if (_internal_has_row_compare_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 33, _Internal::row_compare_expr(this), target, stream); } // .pg_query.CoalesceExpr coalesce_expr = 34 [json_name = "CoalesceExpr"]; if (_internal_has_coalesce_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 34, _Internal::coalesce_expr(this), target, stream); } // .pg_query.MinMaxExpr min_max_expr = 35 [json_name = "MinMaxExpr"]; if (_internal_has_min_max_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 35, _Internal::min_max_expr(this), target, stream); } // .pg_query.SQLValueFunction sqlvalue_function = 36 [json_name = "SQLValueFunction"]; if (_internal_has_sqlvalue_function()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 36, _Internal::sqlvalue_function(this), target, stream); } // .pg_query.XmlExpr xml_expr = 37 [json_name = "XmlExpr"]; if (_internal_has_xml_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 37, _Internal::xml_expr(this), target, stream); } // .pg_query.NullTest null_test = 38 [json_name = "NullTest"]; if (_internal_has_null_test()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 38, _Internal::null_test(this), target, stream); } // .pg_query.BooleanTest boolean_test = 39 [json_name = "BooleanTest"]; if (_internal_has_boolean_test()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 39, _Internal::boolean_test(this), target, stream); } // .pg_query.CoerceToDomain coerce_to_domain = 40 [json_name = "CoerceToDomain"]; if (_internal_has_coerce_to_domain()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 40, _Internal::coerce_to_domain(this), target, stream); } // .pg_query.CoerceToDomainValue coerce_to_domain_value = 41 [json_name = "CoerceToDomainValue"]; if (_internal_has_coerce_to_domain_value()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 41, _Internal::coerce_to_domain_value(this), target, stream); } // .pg_query.SetToDefault set_to_default = 42 [json_name = "SetToDefault"]; if (_internal_has_set_to_default()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 42, _Internal::set_to_default(this), target, stream); } // .pg_query.CurrentOfExpr current_of_expr = 43 [json_name = "CurrentOfExpr"]; if (_internal_has_current_of_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 43, _Internal::current_of_expr(this), target, stream); } // .pg_query.NextValueExpr next_value_expr = 44 [json_name = "NextValueExpr"]; if (_internal_has_next_value_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 44, _Internal::next_value_expr(this), target, stream); } // .pg_query.InferenceElem inference_elem = 45 [json_name = "InferenceElem"]; if (_internal_has_inference_elem()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 45, _Internal::inference_elem(this), target, stream); } // .pg_query.TargetEntry target_entry = 46 [json_name = "TargetEntry"]; if (_internal_has_target_entry()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 46, _Internal::target_entry(this), target, stream); } // .pg_query.RangeTblRef range_tbl_ref = 47 [json_name = "RangeTblRef"]; if (_internal_has_range_tbl_ref()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 47, _Internal::range_tbl_ref(this), target, stream); } // .pg_query.JoinExpr join_expr = 48 [json_name = "JoinExpr"]; if (_internal_has_join_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 48, _Internal::join_expr(this), target, stream); } // .pg_query.FromExpr from_expr = 49 [json_name = "FromExpr"]; if (_internal_has_from_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 49, _Internal::from_expr(this), target, stream); } // .pg_query.OnConflictExpr on_conflict_expr = 50 [json_name = "OnConflictExpr"]; if (_internal_has_on_conflict_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 50, _Internal::on_conflict_expr(this), target, stream); } // .pg_query.IntoClause into_clause = 51 [json_name = "IntoClause"]; if (_internal_has_into_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 51, _Internal::into_clause(this), target, stream); } // .pg_query.RawStmt raw_stmt = 52 [json_name = "RawStmt"]; if (_internal_has_raw_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 52, _Internal::raw_stmt(this), target, stream); } // .pg_query.Query query = 53 [json_name = "Query"]; if (_internal_has_query()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 53, _Internal::query(this), target, stream); } // .pg_query.InsertStmt insert_stmt = 54 [json_name = "InsertStmt"]; if (_internal_has_insert_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 54, _Internal::insert_stmt(this), target, stream); } // .pg_query.DeleteStmt delete_stmt = 55 [json_name = "DeleteStmt"]; if (_internal_has_delete_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 55, _Internal::delete_stmt(this), target, stream); } // .pg_query.UpdateStmt update_stmt = 56 [json_name = "UpdateStmt"]; if (_internal_has_update_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 56, _Internal::update_stmt(this), target, stream); } // .pg_query.SelectStmt select_stmt = 57 [json_name = "SelectStmt"]; if (_internal_has_select_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 57, _Internal::select_stmt(this), target, stream); } // .pg_query.AlterTableStmt alter_table_stmt = 58 [json_name = "AlterTableStmt"]; if (_internal_has_alter_table_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 58, _Internal::alter_table_stmt(this), target, stream); } // .pg_query.AlterTableCmd alter_table_cmd = 59 [json_name = "AlterTableCmd"]; if (_internal_has_alter_table_cmd()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 59, _Internal::alter_table_cmd(this), target, stream); } // .pg_query.AlterDomainStmt alter_domain_stmt = 60 [json_name = "AlterDomainStmt"]; if (_internal_has_alter_domain_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 60, _Internal::alter_domain_stmt(this), target, stream); } // .pg_query.SetOperationStmt set_operation_stmt = 61 [json_name = "SetOperationStmt"]; if (_internal_has_set_operation_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 61, _Internal::set_operation_stmt(this), target, stream); } // .pg_query.GrantStmt grant_stmt = 62 [json_name = "GrantStmt"]; if (_internal_has_grant_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 62, _Internal::grant_stmt(this), target, stream); } // .pg_query.GrantRoleStmt grant_role_stmt = 63 [json_name = "GrantRoleStmt"]; if (_internal_has_grant_role_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 63, _Internal::grant_role_stmt(this), target, stream); } // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 64 [json_name = "AlterDefaultPrivilegesStmt"]; if (_internal_has_alter_default_privileges_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 64, _Internal::alter_default_privileges_stmt(this), target, stream); } // .pg_query.ClosePortalStmt close_portal_stmt = 65 [json_name = "ClosePortalStmt"]; if (_internal_has_close_portal_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 65, _Internal::close_portal_stmt(this), target, stream); } // .pg_query.ClusterStmt cluster_stmt = 66 [json_name = "ClusterStmt"]; if (_internal_has_cluster_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 66, _Internal::cluster_stmt(this), target, stream); } // .pg_query.CopyStmt copy_stmt = 67 [json_name = "CopyStmt"]; if (_internal_has_copy_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 67, _Internal::copy_stmt(this), target, stream); } // .pg_query.CreateStmt create_stmt = 68 [json_name = "CreateStmt"]; if (_internal_has_create_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 68, _Internal::create_stmt(this), target, stream); } // .pg_query.DefineStmt define_stmt = 69 [json_name = "DefineStmt"]; if (_internal_has_define_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 69, _Internal::define_stmt(this), target, stream); } // .pg_query.DropStmt drop_stmt = 70 [json_name = "DropStmt"]; if (_internal_has_drop_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 70, _Internal::drop_stmt(this), target, stream); } // .pg_query.TruncateStmt truncate_stmt = 71 [json_name = "TruncateStmt"]; if (_internal_has_truncate_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 71, _Internal::truncate_stmt(this), target, stream); } // .pg_query.CommentStmt comment_stmt = 72 [json_name = "CommentStmt"]; if (_internal_has_comment_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 72, _Internal::comment_stmt(this), target, stream); } // .pg_query.FetchStmt fetch_stmt = 73 [json_name = "FetchStmt"]; if (_internal_has_fetch_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 73, _Internal::fetch_stmt(this), target, stream); } // .pg_query.IndexStmt index_stmt = 74 [json_name = "IndexStmt"]; if (_internal_has_index_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 74, _Internal::index_stmt(this), target, stream); } // .pg_query.CreateFunctionStmt create_function_stmt = 75 [json_name = "CreateFunctionStmt"]; if (_internal_has_create_function_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 75, _Internal::create_function_stmt(this), target, stream); } // .pg_query.AlterFunctionStmt alter_function_stmt = 76 [json_name = "AlterFunctionStmt"]; if (_internal_has_alter_function_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 76, _Internal::alter_function_stmt(this), target, stream); } // .pg_query.DoStmt do_stmt = 77 [json_name = "DoStmt"]; if (_internal_has_do_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 77, _Internal::do_stmt(this), target, stream); } // .pg_query.RenameStmt rename_stmt = 78 [json_name = "RenameStmt"]; if (_internal_has_rename_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 78, _Internal::rename_stmt(this), target, stream); } // .pg_query.RuleStmt rule_stmt = 79 [json_name = "RuleStmt"]; if (_internal_has_rule_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 79, _Internal::rule_stmt(this), target, stream); } // .pg_query.NotifyStmt notify_stmt = 80 [json_name = "NotifyStmt"]; if (_internal_has_notify_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 80, _Internal::notify_stmt(this), target, stream); } // .pg_query.ListenStmt listen_stmt = 81 [json_name = "ListenStmt"]; if (_internal_has_listen_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 81, _Internal::listen_stmt(this), target, stream); } // .pg_query.UnlistenStmt unlisten_stmt = 82 [json_name = "UnlistenStmt"]; if (_internal_has_unlisten_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 82, _Internal::unlisten_stmt(this), target, stream); } // .pg_query.TransactionStmt transaction_stmt = 83 [json_name = "TransactionStmt"]; if (_internal_has_transaction_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 83, _Internal::transaction_stmt(this), target, stream); } // .pg_query.ViewStmt view_stmt = 84 [json_name = "ViewStmt"]; if (_internal_has_view_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 84, _Internal::view_stmt(this), target, stream); } // .pg_query.LoadStmt load_stmt = 85 [json_name = "LoadStmt"]; if (_internal_has_load_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 85, _Internal::load_stmt(this), target, stream); } // .pg_query.CreateDomainStmt create_domain_stmt = 86 [json_name = "CreateDomainStmt"]; if (_internal_has_create_domain_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 86, _Internal::create_domain_stmt(this), target, stream); } // .pg_query.CreatedbStmt createdb_stmt = 87 [json_name = "CreatedbStmt"]; if (_internal_has_createdb_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 87, _Internal::createdb_stmt(this), target, stream); } // .pg_query.DropdbStmt dropdb_stmt = 88 [json_name = "DropdbStmt"]; if (_internal_has_dropdb_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 88, _Internal::dropdb_stmt(this), target, stream); } // .pg_query.VacuumStmt vacuum_stmt = 89 [json_name = "VacuumStmt"]; if (_internal_has_vacuum_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 89, _Internal::vacuum_stmt(this), target, stream); } // .pg_query.ExplainStmt explain_stmt = 90 [json_name = "ExplainStmt"]; if (_internal_has_explain_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 90, _Internal::explain_stmt(this), target, stream); } // .pg_query.CreateTableAsStmt create_table_as_stmt = 91 [json_name = "CreateTableAsStmt"]; if (_internal_has_create_table_as_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 91, _Internal::create_table_as_stmt(this), target, stream); } // .pg_query.CreateSeqStmt create_seq_stmt = 92 [json_name = "CreateSeqStmt"]; if (_internal_has_create_seq_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 92, _Internal::create_seq_stmt(this), target, stream); } // .pg_query.AlterSeqStmt alter_seq_stmt = 93 [json_name = "AlterSeqStmt"]; if (_internal_has_alter_seq_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 93, _Internal::alter_seq_stmt(this), target, stream); } // .pg_query.VariableSetStmt variable_set_stmt = 94 [json_name = "VariableSetStmt"]; if (_internal_has_variable_set_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 94, _Internal::variable_set_stmt(this), target, stream); } // .pg_query.VariableShowStmt variable_show_stmt = 95 [json_name = "VariableShowStmt"]; if (_internal_has_variable_show_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 95, _Internal::variable_show_stmt(this), target, stream); } // .pg_query.DiscardStmt discard_stmt = 96 [json_name = "DiscardStmt"]; if (_internal_has_discard_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 96, _Internal::discard_stmt(this), target, stream); } // .pg_query.CreateTrigStmt create_trig_stmt = 97 [json_name = "CreateTrigStmt"]; if (_internal_has_create_trig_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 97, _Internal::create_trig_stmt(this), target, stream); } // .pg_query.CreatePLangStmt create_plang_stmt = 98 [json_name = "CreatePLangStmt"]; if (_internal_has_create_plang_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 98, _Internal::create_plang_stmt(this), target, stream); } // .pg_query.CreateRoleStmt create_role_stmt = 99 [json_name = "CreateRoleStmt"]; if (_internal_has_create_role_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 99, _Internal::create_role_stmt(this), target, stream); } // .pg_query.AlterRoleStmt alter_role_stmt = 100 [json_name = "AlterRoleStmt"]; if (_internal_has_alter_role_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 100, _Internal::alter_role_stmt(this), target, stream); } // .pg_query.DropRoleStmt drop_role_stmt = 101 [json_name = "DropRoleStmt"]; if (_internal_has_drop_role_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 101, _Internal::drop_role_stmt(this), target, stream); } // .pg_query.LockStmt lock_stmt = 102 [json_name = "LockStmt"]; if (_internal_has_lock_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 102, _Internal::lock_stmt(this), target, stream); } // .pg_query.ConstraintsSetStmt constraints_set_stmt = 103 [json_name = "ConstraintsSetStmt"]; if (_internal_has_constraints_set_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 103, _Internal::constraints_set_stmt(this), target, stream); } // .pg_query.ReindexStmt reindex_stmt = 104 [json_name = "ReindexStmt"]; if (_internal_has_reindex_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 104, _Internal::reindex_stmt(this), target, stream); } // .pg_query.CheckPointStmt check_point_stmt = 105 [json_name = "CheckPointStmt"]; if (_internal_has_check_point_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 105, _Internal::check_point_stmt(this), target, stream); } // .pg_query.CreateSchemaStmt create_schema_stmt = 106 [json_name = "CreateSchemaStmt"]; if (_internal_has_create_schema_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 106, _Internal::create_schema_stmt(this), target, stream); } // .pg_query.AlterDatabaseStmt alter_database_stmt = 107 [json_name = "AlterDatabaseStmt"]; if (_internal_has_alter_database_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 107, _Internal::alter_database_stmt(this), target, stream); } // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 108 [json_name = "AlterDatabaseSetStmt"]; if (_internal_has_alter_database_set_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 108, _Internal::alter_database_set_stmt(this), target, stream); } // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 109 [json_name = "AlterRoleSetStmt"]; if (_internal_has_alter_role_set_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 109, _Internal::alter_role_set_stmt(this), target, stream); } // .pg_query.CreateConversionStmt create_conversion_stmt = 110 [json_name = "CreateConversionStmt"]; if (_internal_has_create_conversion_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 110, _Internal::create_conversion_stmt(this), target, stream); } // .pg_query.CreateCastStmt create_cast_stmt = 111 [json_name = "CreateCastStmt"]; if (_internal_has_create_cast_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 111, _Internal::create_cast_stmt(this), target, stream); } // .pg_query.CreateOpClassStmt create_op_class_stmt = 112 [json_name = "CreateOpClassStmt"]; if (_internal_has_create_op_class_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 112, _Internal::create_op_class_stmt(this), target, stream); } // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 113 [json_name = "CreateOpFamilyStmt"]; if (_internal_has_create_op_family_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 113, _Internal::create_op_family_stmt(this), target, stream); } // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 114 [json_name = "AlterOpFamilyStmt"]; if (_internal_has_alter_op_family_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 114, _Internal::alter_op_family_stmt(this), target, stream); } // .pg_query.PrepareStmt prepare_stmt = 115 [json_name = "PrepareStmt"]; if (_internal_has_prepare_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 115, _Internal::prepare_stmt(this), target, stream); } // .pg_query.ExecuteStmt execute_stmt = 116 [json_name = "ExecuteStmt"]; if (_internal_has_execute_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 116, _Internal::execute_stmt(this), target, stream); } // .pg_query.DeallocateStmt deallocate_stmt = 117 [json_name = "DeallocateStmt"]; if (_internal_has_deallocate_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 117, _Internal::deallocate_stmt(this), target, stream); } // .pg_query.DeclareCursorStmt declare_cursor_stmt = 118 [json_name = "DeclareCursorStmt"]; if (_internal_has_declare_cursor_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 118, _Internal::declare_cursor_stmt(this), target, stream); } // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 119 [json_name = "CreateTableSpaceStmt"]; if (_internal_has_create_table_space_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 119, _Internal::create_table_space_stmt(this), target, stream); } // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 120 [json_name = "DropTableSpaceStmt"]; if (_internal_has_drop_table_space_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 120, _Internal::drop_table_space_stmt(this), target, stream); } // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 121 [json_name = "AlterObjectDependsStmt"]; if (_internal_has_alter_object_depends_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 121, _Internal::alter_object_depends_stmt(this), target, stream); } // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 122 [json_name = "AlterObjectSchemaStmt"]; if (_internal_has_alter_object_schema_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 122, _Internal::alter_object_schema_stmt(this), target, stream); } // .pg_query.AlterOwnerStmt alter_owner_stmt = 123 [json_name = "AlterOwnerStmt"]; if (_internal_has_alter_owner_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 123, _Internal::alter_owner_stmt(this), target, stream); } // .pg_query.AlterOperatorStmt alter_operator_stmt = 124 [json_name = "AlterOperatorStmt"]; if (_internal_has_alter_operator_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 124, _Internal::alter_operator_stmt(this), target, stream); } // .pg_query.AlterTypeStmt alter_type_stmt = 125 [json_name = "AlterTypeStmt"]; if (_internal_has_alter_type_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 125, _Internal::alter_type_stmt(this), target, stream); } // .pg_query.DropOwnedStmt drop_owned_stmt = 126 [json_name = "DropOwnedStmt"]; if (_internal_has_drop_owned_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 126, _Internal::drop_owned_stmt(this), target, stream); } // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 127 [json_name = "ReassignOwnedStmt"]; if (_internal_has_reassign_owned_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 127, _Internal::reassign_owned_stmt(this), target, stream); } // .pg_query.CompositeTypeStmt composite_type_stmt = 128 [json_name = "CompositeTypeStmt"]; if (_internal_has_composite_type_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 128, _Internal::composite_type_stmt(this), target, stream); } // .pg_query.CreateEnumStmt create_enum_stmt = 129 [json_name = "CreateEnumStmt"]; if (_internal_has_create_enum_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 129, _Internal::create_enum_stmt(this), target, stream); } // .pg_query.CreateRangeStmt create_range_stmt = 130 [json_name = "CreateRangeStmt"]; if (_internal_has_create_range_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 130, _Internal::create_range_stmt(this), target, stream); } // .pg_query.AlterEnumStmt alter_enum_stmt = 131 [json_name = "AlterEnumStmt"]; if (_internal_has_alter_enum_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 131, _Internal::alter_enum_stmt(this), target, stream); } // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 132 [json_name = "AlterTSDictionaryStmt"]; if (_internal_has_alter_tsdictionary_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 132, _Internal::alter_tsdictionary_stmt(this), target, stream); } // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 133 [json_name = "AlterTSConfigurationStmt"]; if (_internal_has_alter_tsconfiguration_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 133, _Internal::alter_tsconfiguration_stmt(this), target, stream); } // .pg_query.CreateFdwStmt create_fdw_stmt = 134 [json_name = "CreateFdwStmt"]; if (_internal_has_create_fdw_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 134, _Internal::create_fdw_stmt(this), target, stream); } // .pg_query.AlterFdwStmt alter_fdw_stmt = 135 [json_name = "AlterFdwStmt"]; if (_internal_has_alter_fdw_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 135, _Internal::alter_fdw_stmt(this), target, stream); } // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 136 [json_name = "CreateForeignServerStmt"]; if (_internal_has_create_foreign_server_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 136, _Internal::create_foreign_server_stmt(this), target, stream); } // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 137 [json_name = "AlterForeignServerStmt"]; if (_internal_has_alter_foreign_server_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 137, _Internal::alter_foreign_server_stmt(this), target, stream); } // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 138 [json_name = "CreateUserMappingStmt"]; if (_internal_has_create_user_mapping_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 138, _Internal::create_user_mapping_stmt(this), target, stream); } // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 139 [json_name = "AlterUserMappingStmt"]; if (_internal_has_alter_user_mapping_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 139, _Internal::alter_user_mapping_stmt(this), target, stream); } // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 140 [json_name = "DropUserMappingStmt"]; if (_internal_has_drop_user_mapping_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 140, _Internal::drop_user_mapping_stmt(this), target, stream); } // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 141 [json_name = "AlterTableSpaceOptionsStmt"]; if (_internal_has_alter_table_space_options_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 141, _Internal::alter_table_space_options_stmt(this), target, stream); } // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 142 [json_name = "AlterTableMoveAllStmt"]; if (_internal_has_alter_table_move_all_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 142, _Internal::alter_table_move_all_stmt(this), target, stream); } // .pg_query.SecLabelStmt sec_label_stmt = 143 [json_name = "SecLabelStmt"]; if (_internal_has_sec_label_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 143, _Internal::sec_label_stmt(this), target, stream); } // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 144 [json_name = "CreateForeignTableStmt"]; if (_internal_has_create_foreign_table_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 144, _Internal::create_foreign_table_stmt(this), target, stream); } // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 145 [json_name = "ImportForeignSchemaStmt"]; if (_internal_has_import_foreign_schema_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 145, _Internal::import_foreign_schema_stmt(this), target, stream); } // .pg_query.CreateExtensionStmt create_extension_stmt = 146 [json_name = "CreateExtensionStmt"]; if (_internal_has_create_extension_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 146, _Internal::create_extension_stmt(this), target, stream); } // .pg_query.AlterExtensionStmt alter_extension_stmt = 147 [json_name = "AlterExtensionStmt"]; if (_internal_has_alter_extension_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 147, _Internal::alter_extension_stmt(this), target, stream); } // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 148 [json_name = "AlterExtensionContentsStmt"]; if (_internal_has_alter_extension_contents_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 148, _Internal::alter_extension_contents_stmt(this), target, stream); } // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 149 [json_name = "CreateEventTrigStmt"]; if (_internal_has_create_event_trig_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 149, _Internal::create_event_trig_stmt(this), target, stream); } // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 150 [json_name = "AlterEventTrigStmt"]; if (_internal_has_alter_event_trig_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 150, _Internal::alter_event_trig_stmt(this), target, stream); } // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 151 [json_name = "RefreshMatViewStmt"]; if (_internal_has_refresh_mat_view_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 151, _Internal::refresh_mat_view_stmt(this), target, stream); } // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 152 [json_name = "ReplicaIdentityStmt"]; if (_internal_has_replica_identity_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 152, _Internal::replica_identity_stmt(this), target, stream); } // .pg_query.AlterSystemStmt alter_system_stmt = 153 [json_name = "AlterSystemStmt"]; if (_internal_has_alter_system_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 153, _Internal::alter_system_stmt(this), target, stream); } // .pg_query.CreatePolicyStmt create_policy_stmt = 154 [json_name = "CreatePolicyStmt"]; if (_internal_has_create_policy_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 154, _Internal::create_policy_stmt(this), target, stream); } // .pg_query.AlterPolicyStmt alter_policy_stmt = 155 [json_name = "AlterPolicyStmt"]; if (_internal_has_alter_policy_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 155, _Internal::alter_policy_stmt(this), target, stream); } // .pg_query.CreateTransformStmt create_transform_stmt = 156 [json_name = "CreateTransformStmt"]; if (_internal_has_create_transform_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 156, _Internal::create_transform_stmt(this), target, stream); } // .pg_query.CreateAmStmt create_am_stmt = 157 [json_name = "CreateAmStmt"]; if (_internal_has_create_am_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 157, _Internal::create_am_stmt(this), target, stream); } // .pg_query.CreatePublicationStmt create_publication_stmt = 158 [json_name = "CreatePublicationStmt"]; if (_internal_has_create_publication_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 158, _Internal::create_publication_stmt(this), target, stream); } // .pg_query.AlterPublicationStmt alter_publication_stmt = 159 [json_name = "AlterPublicationStmt"]; if (_internal_has_alter_publication_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 159, _Internal::alter_publication_stmt(this), target, stream); } // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 160 [json_name = "CreateSubscriptionStmt"]; if (_internal_has_create_subscription_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 160, _Internal::create_subscription_stmt(this), target, stream); } // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 161 [json_name = "AlterSubscriptionStmt"]; if (_internal_has_alter_subscription_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 161, _Internal::alter_subscription_stmt(this), target, stream); } // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 162 [json_name = "DropSubscriptionStmt"]; if (_internal_has_drop_subscription_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 162, _Internal::drop_subscription_stmt(this), target, stream); } // .pg_query.CreateStatsStmt create_stats_stmt = 163 [json_name = "CreateStatsStmt"]; if (_internal_has_create_stats_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 163, _Internal::create_stats_stmt(this), target, stream); } // .pg_query.AlterCollationStmt alter_collation_stmt = 164 [json_name = "AlterCollationStmt"]; if (_internal_has_alter_collation_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 164, _Internal::alter_collation_stmt(this), target, stream); } // .pg_query.CallStmt call_stmt = 165 [json_name = "CallStmt"]; if (_internal_has_call_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 165, _Internal::call_stmt(this), target, stream); } // .pg_query.AlterStatsStmt alter_stats_stmt = 166 [json_name = "AlterStatsStmt"]; if (_internal_has_alter_stats_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 166, _Internal::alter_stats_stmt(this), target, stream); } // .pg_query.A_Expr a_expr = 167 [json_name = "A_Expr"]; if (_internal_has_a_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 167, _Internal::a_expr(this), target, stream); } // .pg_query.ColumnRef column_ref = 168 [json_name = "ColumnRef"]; if (_internal_has_column_ref()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 168, _Internal::column_ref(this), target, stream); } // .pg_query.ParamRef param_ref = 169 [json_name = "ParamRef"]; if (_internal_has_param_ref()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 169, _Internal::param_ref(this), target, stream); } // .pg_query.A_Const a_const = 170 [json_name = "A_Const"]; if (_internal_has_a_const()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 170, _Internal::a_const(this), target, stream); } // .pg_query.FuncCall func_call = 171 [json_name = "FuncCall"]; if (_internal_has_func_call()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 171, _Internal::func_call(this), target, stream); } // .pg_query.A_Star a_star = 172 [json_name = "A_Star"]; if (_internal_has_a_star()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 172, _Internal::a_star(this), target, stream); } // .pg_query.A_Indices a_indices = 173 [json_name = "A_Indices"]; if (_internal_has_a_indices()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 173, _Internal::a_indices(this), target, stream); } // .pg_query.A_Indirection a_indirection = 174 [json_name = "A_Indirection"]; if (_internal_has_a_indirection()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 174, _Internal::a_indirection(this), target, stream); } // .pg_query.A_ArrayExpr a_array_expr = 175 [json_name = "A_ArrayExpr"]; if (_internal_has_a_array_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 175, _Internal::a_array_expr(this), target, stream); } // .pg_query.ResTarget res_target = 176 [json_name = "ResTarget"]; if (_internal_has_res_target()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 176, _Internal::res_target(this), target, stream); } // .pg_query.MultiAssignRef multi_assign_ref = 177 [json_name = "MultiAssignRef"]; if (_internal_has_multi_assign_ref()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 177, _Internal::multi_assign_ref(this), target, stream); } // .pg_query.TypeCast type_cast = 178 [json_name = "TypeCast"]; if (_internal_has_type_cast()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 178, _Internal::type_cast(this), target, stream); } // .pg_query.CollateClause collate_clause = 179 [json_name = "CollateClause"]; if (_internal_has_collate_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 179, _Internal::collate_clause(this), target, stream); } // .pg_query.SortBy sort_by = 180 [json_name = "SortBy"]; if (_internal_has_sort_by()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 180, _Internal::sort_by(this), target, stream); } // .pg_query.WindowDef window_def = 181 [json_name = "WindowDef"]; if (_internal_has_window_def()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 181, _Internal::window_def(this), target, stream); } // .pg_query.RangeSubselect range_subselect = 182 [json_name = "RangeSubselect"]; if (_internal_has_range_subselect()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 182, _Internal::range_subselect(this), target, stream); } // .pg_query.RangeFunction range_function = 183 [json_name = "RangeFunction"]; if (_internal_has_range_function()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 183, _Internal::range_function(this), target, stream); } // .pg_query.RangeTableSample range_table_sample = 184 [json_name = "RangeTableSample"]; if (_internal_has_range_table_sample()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 184, _Internal::range_table_sample(this), target, stream); } // .pg_query.RangeTableFunc range_table_func = 185 [json_name = "RangeTableFunc"]; if (_internal_has_range_table_func()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 185, _Internal::range_table_func(this), target, stream); } // .pg_query.RangeTableFuncCol range_table_func_col = 186 [json_name = "RangeTableFuncCol"]; if (_internal_has_range_table_func_col()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 186, _Internal::range_table_func_col(this), target, stream); } // .pg_query.TypeName type_name = 187 [json_name = "TypeName"]; if (_internal_has_type_name()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 187, _Internal::type_name(this), target, stream); } // .pg_query.ColumnDef column_def = 188 [json_name = "ColumnDef"]; if (_internal_has_column_def()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 188, _Internal::column_def(this), target, stream); } // .pg_query.IndexElem index_elem = 189 [json_name = "IndexElem"]; if (_internal_has_index_elem()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 189, _Internal::index_elem(this), target, stream); } // .pg_query.Constraint constraint = 190 [json_name = "Constraint"]; if (_internal_has_constraint()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 190, _Internal::constraint(this), target, stream); } // .pg_query.DefElem def_elem = 191 [json_name = "DefElem"]; if (_internal_has_def_elem()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 191, _Internal::def_elem(this), target, stream); } // .pg_query.RangeTblEntry range_tbl_entry = 192 [json_name = "RangeTblEntry"]; if (_internal_has_range_tbl_entry()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 192, _Internal::range_tbl_entry(this), target, stream); } // .pg_query.RangeTblFunction range_tbl_function = 193 [json_name = "RangeTblFunction"]; if (_internal_has_range_tbl_function()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 193, _Internal::range_tbl_function(this), target, stream); } // .pg_query.TableSampleClause table_sample_clause = 194 [json_name = "TableSampleClause"]; if (_internal_has_table_sample_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 194, _Internal::table_sample_clause(this), target, stream); } // .pg_query.WithCheckOption with_check_option = 195 [json_name = "WithCheckOption"]; if (_internal_has_with_check_option()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 195, _Internal::with_check_option(this), target, stream); } // .pg_query.SortGroupClause sort_group_clause = 196 [json_name = "SortGroupClause"]; if (_internal_has_sort_group_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 196, _Internal::sort_group_clause(this), target, stream); } // .pg_query.GroupingSet grouping_set = 197 [json_name = "GroupingSet"]; if (_internal_has_grouping_set()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 197, _Internal::grouping_set(this), target, stream); } // .pg_query.WindowClause window_clause = 198 [json_name = "WindowClause"]; if (_internal_has_window_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 198, _Internal::window_clause(this), target, stream); } // .pg_query.ObjectWithArgs object_with_args = 199 [json_name = "ObjectWithArgs"]; if (_internal_has_object_with_args()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 199, _Internal::object_with_args(this), target, stream); } // .pg_query.AccessPriv access_priv = 200 [json_name = "AccessPriv"]; if (_internal_has_access_priv()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 200, _Internal::access_priv(this), target, stream); } // .pg_query.CreateOpClassItem create_op_class_item = 201 [json_name = "CreateOpClassItem"]; if (_internal_has_create_op_class_item()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 201, _Internal::create_op_class_item(this), target, stream); } // .pg_query.TableLikeClause table_like_clause = 202 [json_name = "TableLikeClause"]; if (_internal_has_table_like_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 202, _Internal::table_like_clause(this), target, stream); } // .pg_query.FunctionParameter function_parameter = 203 [json_name = "FunctionParameter"]; if (_internal_has_function_parameter()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 203, _Internal::function_parameter(this), target, stream); } // .pg_query.LockingClause locking_clause = 204 [json_name = "LockingClause"]; if (_internal_has_locking_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 204, _Internal::locking_clause(this), target, stream); } // .pg_query.RowMarkClause row_mark_clause = 205 [json_name = "RowMarkClause"]; if (_internal_has_row_mark_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 205, _Internal::row_mark_clause(this), target, stream); } // .pg_query.XmlSerialize xml_serialize = 206 [json_name = "XmlSerialize"]; if (_internal_has_xml_serialize()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 206, _Internal::xml_serialize(this), target, stream); } // .pg_query.WithClause with_clause = 207 [json_name = "WithClause"]; if (_internal_has_with_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 207, _Internal::with_clause(this), target, stream); } // .pg_query.InferClause infer_clause = 208 [json_name = "InferClause"]; if (_internal_has_infer_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 208, _Internal::infer_clause(this), target, stream); } // .pg_query.OnConflictClause on_conflict_clause = 209 [json_name = "OnConflictClause"]; if (_internal_has_on_conflict_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 209, _Internal::on_conflict_clause(this), target, stream); } // .pg_query.CommonTableExpr common_table_expr = 210 [json_name = "CommonTableExpr"]; if (_internal_has_common_table_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 210, _Internal::common_table_expr(this), target, stream); } // .pg_query.RoleSpec role_spec = 211 [json_name = "RoleSpec"]; if (_internal_has_role_spec()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 211, _Internal::role_spec(this), target, stream); } // .pg_query.TriggerTransition trigger_transition = 212 [json_name = "TriggerTransition"]; if (_internal_has_trigger_transition()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 212, _Internal::trigger_transition(this), target, stream); } // .pg_query.PartitionElem partition_elem = 213 [json_name = "PartitionElem"]; if (_internal_has_partition_elem()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 213, _Internal::partition_elem(this), target, stream); } // .pg_query.PartitionSpec partition_spec = 214 [json_name = "PartitionSpec"]; if (_internal_has_partition_spec()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 214, _Internal::partition_spec(this), target, stream); } // .pg_query.PartitionBoundSpec partition_bound_spec = 215 [json_name = "PartitionBoundSpec"]; if (_internal_has_partition_bound_spec()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 215, _Internal::partition_bound_spec(this), target, stream); } // .pg_query.PartitionRangeDatum partition_range_datum = 216 [json_name = "PartitionRangeDatum"]; if (_internal_has_partition_range_datum()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 216, _Internal::partition_range_datum(this), target, stream); } // .pg_query.PartitionCmd partition_cmd = 217 [json_name = "PartitionCmd"]; if (_internal_has_partition_cmd()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 217, _Internal::partition_cmd(this), target, stream); } // .pg_query.VacuumRelation vacuum_relation = 218 [json_name = "VacuumRelation"]; if (_internal_has_vacuum_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 218, _Internal::vacuum_relation(this), target, stream); } // .pg_query.InlineCodeBlock inline_code_block = 219 [json_name = "InlineCodeBlock"]; if (_internal_has_inline_code_block()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 219, _Internal::inline_code_block(this), target, stream); } // .pg_query.CallContext call_context = 220 [json_name = "CallContext"]; if (_internal_has_call_context()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 220, _Internal::call_context(this), target, stream); } // .pg_query.Integer integer = 221 [json_name = "Integer"]; if (_internal_has_integer()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 221, _Internal::integer(this), target, stream); } // .pg_query.Float float = 222 [json_name = "Float"]; if (_internal_has_float_()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 222, _Internal::float_(this), target, stream); } // .pg_query.String string = 223 [json_name = "String"]; if (_internal_has_string()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 223, _Internal::string(this), target, stream); } // .pg_query.BitString bit_string = 224 [json_name = "BitString"]; if (_internal_has_bit_string()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 224, _Internal::bit_string(this), target, stream); } // .pg_query.Null null = 225 [json_name = "Null"]; if (_internal_has_null()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 225, _Internal::null(this), target, stream); } // .pg_query.List list = 226 [json_name = "List"]; if (_internal_has_list()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 226, _Internal::list(this), target, stream); } // .pg_query.IntList int_list = 227 [json_name = "IntList"]; if (_internal_has_int_list()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 227, _Internal::int_list(this), target, stream); } // .pg_query.OidList oid_list = 228 [json_name = "OidList"]; if (_internal_has_oid_list()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 228, _Internal::oid_list(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Node) return target; } size_t Node::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Node) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; switch (node_case()) { // .pg_query.Alias alias = 1 [json_name = "Alias"]; case kAlias: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alias_); break; } // .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; case kRangeVar: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.range_var_); break; } // .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; case kTableFunc: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.table_func_); break; } // .pg_query.Expr expr = 4 [json_name = "Expr"]; case kExpr: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.expr_); break; } // .pg_query.Var var = 5 [json_name = "Var"]; case kVar: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.var_); break; } // .pg_query.Param param = 6 [json_name = "Param"]; case kParam: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.param_); break; } // .pg_query.Aggref aggref = 7 [json_name = "Aggref"]; case kAggref: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.aggref_); break; } // .pg_query.GroupingFunc grouping_func = 8 [json_name = "GroupingFunc"]; case kGroupingFunc: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.grouping_func_); break; } // .pg_query.WindowFunc window_func = 9 [json_name = "WindowFunc"]; case kWindowFunc: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.window_func_); break; } // .pg_query.SubscriptingRef subscripting_ref = 10 [json_name = "SubscriptingRef"]; case kSubscriptingRef: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.subscripting_ref_); break; } // .pg_query.FuncExpr func_expr = 11 [json_name = "FuncExpr"]; case kFuncExpr: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.func_expr_); break; } // .pg_query.NamedArgExpr named_arg_expr = 12 [json_name = "NamedArgExpr"]; case kNamedArgExpr: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.named_arg_expr_); break; } // .pg_query.OpExpr op_expr = 13 [json_name = "OpExpr"]; case kOpExpr: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.op_expr_); break; } // .pg_query.DistinctExpr distinct_expr = 14 [json_name = "DistinctExpr"]; case kDistinctExpr: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.distinct_expr_); break; } // .pg_query.NullIfExpr null_if_expr = 15 [json_name = "NullIfExpr"]; case kNullIfExpr: { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.null_if_expr_); break; } // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 16 [json_name = "ScalarArrayOpExpr"]; case kScalarArrayOpExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.scalar_array_op_expr_); break; } // .pg_query.BoolExpr bool_expr = 17 [json_name = "BoolExpr"]; case kBoolExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.bool_expr_); break; } // .pg_query.SubLink sub_link = 18 [json_name = "SubLink"]; case kSubLink: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.sub_link_); break; } // .pg_query.SubPlan sub_plan = 19 [json_name = "SubPlan"]; case kSubPlan: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.sub_plan_); break; } // .pg_query.AlternativeSubPlan alternative_sub_plan = 20 [json_name = "AlternativeSubPlan"]; case kAlternativeSubPlan: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alternative_sub_plan_); break; } // .pg_query.FieldSelect field_select = 21 [json_name = "FieldSelect"]; case kFieldSelect: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.field_select_); break; } // .pg_query.FieldStore field_store = 22 [json_name = "FieldStore"]; case kFieldStore: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.field_store_); break; } // .pg_query.RelabelType relabel_type = 23 [json_name = "RelabelType"]; case kRelabelType: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.relabel_type_); break; } // .pg_query.CoerceViaIO coerce_via_io = 24 [json_name = "CoerceViaIO"]; case kCoerceViaIo: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.coerce_via_io_); break; } // .pg_query.ArrayCoerceExpr array_coerce_expr = 25 [json_name = "ArrayCoerceExpr"]; case kArrayCoerceExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.array_coerce_expr_); break; } // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 26 [json_name = "ConvertRowtypeExpr"]; case kConvertRowtypeExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.convert_rowtype_expr_); break; } // .pg_query.CollateExpr collate_expr = 27 [json_name = "CollateExpr"]; case kCollateExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.collate_expr_); break; } // .pg_query.CaseExpr case_expr = 28 [json_name = "CaseExpr"]; case kCaseExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.case_expr_); break; } // .pg_query.CaseWhen case_when = 29 [json_name = "CaseWhen"]; case kCaseWhen: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.case_when_); break; } // .pg_query.CaseTestExpr case_test_expr = 30 [json_name = "CaseTestExpr"]; case kCaseTestExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.case_test_expr_); break; } // .pg_query.ArrayExpr array_expr = 31 [json_name = "ArrayExpr"]; case kArrayExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.array_expr_); break; } // .pg_query.RowExpr row_expr = 32 [json_name = "RowExpr"]; case kRowExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.row_expr_); break; } // .pg_query.RowCompareExpr row_compare_expr = 33 [json_name = "RowCompareExpr"]; case kRowCompareExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.row_compare_expr_); break; } // .pg_query.CoalesceExpr coalesce_expr = 34 [json_name = "CoalesceExpr"]; case kCoalesceExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.coalesce_expr_); break; } // .pg_query.MinMaxExpr min_max_expr = 35 [json_name = "MinMaxExpr"]; case kMinMaxExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.min_max_expr_); break; } // .pg_query.SQLValueFunction sqlvalue_function = 36 [json_name = "SQLValueFunction"]; case kSqlvalueFunction: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.sqlvalue_function_); break; } // .pg_query.XmlExpr xml_expr = 37 [json_name = "XmlExpr"]; case kXmlExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.xml_expr_); break; } // .pg_query.NullTest null_test = 38 [json_name = "NullTest"]; case kNullTest: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.null_test_); break; } // .pg_query.BooleanTest boolean_test = 39 [json_name = "BooleanTest"]; case kBooleanTest: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.boolean_test_); break; } // .pg_query.CoerceToDomain coerce_to_domain = 40 [json_name = "CoerceToDomain"]; case kCoerceToDomain: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.coerce_to_domain_); break; } // .pg_query.CoerceToDomainValue coerce_to_domain_value = 41 [json_name = "CoerceToDomainValue"]; case kCoerceToDomainValue: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.coerce_to_domain_value_); break; } // .pg_query.SetToDefault set_to_default = 42 [json_name = "SetToDefault"]; case kSetToDefault: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.set_to_default_); break; } // .pg_query.CurrentOfExpr current_of_expr = 43 [json_name = "CurrentOfExpr"]; case kCurrentOfExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.current_of_expr_); break; } // .pg_query.NextValueExpr next_value_expr = 44 [json_name = "NextValueExpr"]; case kNextValueExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.next_value_expr_); break; } // .pg_query.InferenceElem inference_elem = 45 [json_name = "InferenceElem"]; case kInferenceElem: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.inference_elem_); break; } // .pg_query.TargetEntry target_entry = 46 [json_name = "TargetEntry"]; case kTargetEntry: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.target_entry_); break; } // .pg_query.RangeTblRef range_tbl_ref = 47 [json_name = "RangeTblRef"]; case kRangeTblRef: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.range_tbl_ref_); break; } // .pg_query.JoinExpr join_expr = 48 [json_name = "JoinExpr"]; case kJoinExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.join_expr_); break; } // .pg_query.FromExpr from_expr = 49 [json_name = "FromExpr"]; case kFromExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.from_expr_); break; } // .pg_query.OnConflictExpr on_conflict_expr = 50 [json_name = "OnConflictExpr"]; case kOnConflictExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.on_conflict_expr_); break; } // .pg_query.IntoClause into_clause = 51 [json_name = "IntoClause"]; case kIntoClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.into_clause_); break; } // .pg_query.RawStmt raw_stmt = 52 [json_name = "RawStmt"]; case kRawStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.raw_stmt_); break; } // .pg_query.Query query = 53 [json_name = "Query"]; case kQuery: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.query_); break; } // .pg_query.InsertStmt insert_stmt = 54 [json_name = "InsertStmt"]; case kInsertStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.insert_stmt_); break; } // .pg_query.DeleteStmt delete_stmt = 55 [json_name = "DeleteStmt"]; case kDeleteStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.delete_stmt_); break; } // .pg_query.UpdateStmt update_stmt = 56 [json_name = "UpdateStmt"]; case kUpdateStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.update_stmt_); break; } // .pg_query.SelectStmt select_stmt = 57 [json_name = "SelectStmt"]; case kSelectStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.select_stmt_); break; } // .pg_query.AlterTableStmt alter_table_stmt = 58 [json_name = "AlterTableStmt"]; case kAlterTableStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_table_stmt_); break; } // .pg_query.AlterTableCmd alter_table_cmd = 59 [json_name = "AlterTableCmd"]; case kAlterTableCmd: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_table_cmd_); break; } // .pg_query.AlterDomainStmt alter_domain_stmt = 60 [json_name = "AlterDomainStmt"]; case kAlterDomainStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_domain_stmt_); break; } // .pg_query.SetOperationStmt set_operation_stmt = 61 [json_name = "SetOperationStmt"]; case kSetOperationStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.set_operation_stmt_); break; } // .pg_query.GrantStmt grant_stmt = 62 [json_name = "GrantStmt"]; case kGrantStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.grant_stmt_); break; } // .pg_query.GrantRoleStmt grant_role_stmt = 63 [json_name = "GrantRoleStmt"]; case kGrantRoleStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.grant_role_stmt_); break; } // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 64 [json_name = "AlterDefaultPrivilegesStmt"]; case kAlterDefaultPrivilegesStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_default_privileges_stmt_); break; } // .pg_query.ClosePortalStmt close_portal_stmt = 65 [json_name = "ClosePortalStmt"]; case kClosePortalStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.close_portal_stmt_); break; } // .pg_query.ClusterStmt cluster_stmt = 66 [json_name = "ClusterStmt"]; case kClusterStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.cluster_stmt_); break; } // .pg_query.CopyStmt copy_stmt = 67 [json_name = "CopyStmt"]; case kCopyStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.copy_stmt_); break; } // .pg_query.CreateStmt create_stmt = 68 [json_name = "CreateStmt"]; case kCreateStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_stmt_); break; } // .pg_query.DefineStmt define_stmt = 69 [json_name = "DefineStmt"]; case kDefineStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.define_stmt_); break; } // .pg_query.DropStmt drop_stmt = 70 [json_name = "DropStmt"]; case kDropStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.drop_stmt_); break; } // .pg_query.TruncateStmt truncate_stmt = 71 [json_name = "TruncateStmt"]; case kTruncateStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.truncate_stmt_); break; } // .pg_query.CommentStmt comment_stmt = 72 [json_name = "CommentStmt"]; case kCommentStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.comment_stmt_); break; } // .pg_query.FetchStmt fetch_stmt = 73 [json_name = "FetchStmt"]; case kFetchStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.fetch_stmt_); break; } // .pg_query.IndexStmt index_stmt = 74 [json_name = "IndexStmt"]; case kIndexStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.index_stmt_); break; } // .pg_query.CreateFunctionStmt create_function_stmt = 75 [json_name = "CreateFunctionStmt"]; case kCreateFunctionStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_function_stmt_); break; } // .pg_query.AlterFunctionStmt alter_function_stmt = 76 [json_name = "AlterFunctionStmt"]; case kAlterFunctionStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_function_stmt_); break; } // .pg_query.DoStmt do_stmt = 77 [json_name = "DoStmt"]; case kDoStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.do_stmt_); break; } // .pg_query.RenameStmt rename_stmt = 78 [json_name = "RenameStmt"]; case kRenameStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.rename_stmt_); break; } // .pg_query.RuleStmt rule_stmt = 79 [json_name = "RuleStmt"]; case kRuleStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.rule_stmt_); break; } // .pg_query.NotifyStmt notify_stmt = 80 [json_name = "NotifyStmt"]; case kNotifyStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.notify_stmt_); break; } // .pg_query.ListenStmt listen_stmt = 81 [json_name = "ListenStmt"]; case kListenStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.listen_stmt_); break; } // .pg_query.UnlistenStmt unlisten_stmt = 82 [json_name = "UnlistenStmt"]; case kUnlistenStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.unlisten_stmt_); break; } // .pg_query.TransactionStmt transaction_stmt = 83 [json_name = "TransactionStmt"]; case kTransactionStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.transaction_stmt_); break; } // .pg_query.ViewStmt view_stmt = 84 [json_name = "ViewStmt"]; case kViewStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.view_stmt_); break; } // .pg_query.LoadStmt load_stmt = 85 [json_name = "LoadStmt"]; case kLoadStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.load_stmt_); break; } // .pg_query.CreateDomainStmt create_domain_stmt = 86 [json_name = "CreateDomainStmt"]; case kCreateDomainStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_domain_stmt_); break; } // .pg_query.CreatedbStmt createdb_stmt = 87 [json_name = "CreatedbStmt"]; case kCreatedbStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.createdb_stmt_); break; } // .pg_query.DropdbStmt dropdb_stmt = 88 [json_name = "DropdbStmt"]; case kDropdbStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.dropdb_stmt_); break; } // .pg_query.VacuumStmt vacuum_stmt = 89 [json_name = "VacuumStmt"]; case kVacuumStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.vacuum_stmt_); break; } // .pg_query.ExplainStmt explain_stmt = 90 [json_name = "ExplainStmt"]; case kExplainStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.explain_stmt_); break; } // .pg_query.CreateTableAsStmt create_table_as_stmt = 91 [json_name = "CreateTableAsStmt"]; case kCreateTableAsStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_table_as_stmt_); break; } // .pg_query.CreateSeqStmt create_seq_stmt = 92 [json_name = "CreateSeqStmt"]; case kCreateSeqStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_seq_stmt_); break; } // .pg_query.AlterSeqStmt alter_seq_stmt = 93 [json_name = "AlterSeqStmt"]; case kAlterSeqStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_seq_stmt_); break; } // .pg_query.VariableSetStmt variable_set_stmt = 94 [json_name = "VariableSetStmt"]; case kVariableSetStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.variable_set_stmt_); break; } // .pg_query.VariableShowStmt variable_show_stmt = 95 [json_name = "VariableShowStmt"]; case kVariableShowStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.variable_show_stmt_); break; } // .pg_query.DiscardStmt discard_stmt = 96 [json_name = "DiscardStmt"]; case kDiscardStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.discard_stmt_); break; } // .pg_query.CreateTrigStmt create_trig_stmt = 97 [json_name = "CreateTrigStmt"]; case kCreateTrigStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_trig_stmt_); break; } // .pg_query.CreatePLangStmt create_plang_stmt = 98 [json_name = "CreatePLangStmt"]; case kCreatePlangStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_plang_stmt_); break; } // .pg_query.CreateRoleStmt create_role_stmt = 99 [json_name = "CreateRoleStmt"]; case kCreateRoleStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_role_stmt_); break; } // .pg_query.AlterRoleStmt alter_role_stmt = 100 [json_name = "AlterRoleStmt"]; case kAlterRoleStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_role_stmt_); break; } // .pg_query.DropRoleStmt drop_role_stmt = 101 [json_name = "DropRoleStmt"]; case kDropRoleStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.drop_role_stmt_); break; } // .pg_query.LockStmt lock_stmt = 102 [json_name = "LockStmt"]; case kLockStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.lock_stmt_); break; } // .pg_query.ConstraintsSetStmt constraints_set_stmt = 103 [json_name = "ConstraintsSetStmt"]; case kConstraintsSetStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.constraints_set_stmt_); break; } // .pg_query.ReindexStmt reindex_stmt = 104 [json_name = "ReindexStmt"]; case kReindexStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.reindex_stmt_); break; } // .pg_query.CheckPointStmt check_point_stmt = 105 [json_name = "CheckPointStmt"]; case kCheckPointStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.check_point_stmt_); break; } // .pg_query.CreateSchemaStmt create_schema_stmt = 106 [json_name = "CreateSchemaStmt"]; case kCreateSchemaStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_schema_stmt_); break; } // .pg_query.AlterDatabaseStmt alter_database_stmt = 107 [json_name = "AlterDatabaseStmt"]; case kAlterDatabaseStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_database_stmt_); break; } // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 108 [json_name = "AlterDatabaseSetStmt"]; case kAlterDatabaseSetStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_database_set_stmt_); break; } // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 109 [json_name = "AlterRoleSetStmt"]; case kAlterRoleSetStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_role_set_stmt_); break; } // .pg_query.CreateConversionStmt create_conversion_stmt = 110 [json_name = "CreateConversionStmt"]; case kCreateConversionStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_conversion_stmt_); break; } // .pg_query.CreateCastStmt create_cast_stmt = 111 [json_name = "CreateCastStmt"]; case kCreateCastStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_cast_stmt_); break; } // .pg_query.CreateOpClassStmt create_op_class_stmt = 112 [json_name = "CreateOpClassStmt"]; case kCreateOpClassStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_op_class_stmt_); break; } // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 113 [json_name = "CreateOpFamilyStmt"]; case kCreateOpFamilyStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_op_family_stmt_); break; } // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 114 [json_name = "AlterOpFamilyStmt"]; case kAlterOpFamilyStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_op_family_stmt_); break; } // .pg_query.PrepareStmt prepare_stmt = 115 [json_name = "PrepareStmt"]; case kPrepareStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.prepare_stmt_); break; } // .pg_query.ExecuteStmt execute_stmt = 116 [json_name = "ExecuteStmt"]; case kExecuteStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.execute_stmt_); break; } // .pg_query.DeallocateStmt deallocate_stmt = 117 [json_name = "DeallocateStmt"]; case kDeallocateStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.deallocate_stmt_); break; } // .pg_query.DeclareCursorStmt declare_cursor_stmt = 118 [json_name = "DeclareCursorStmt"]; case kDeclareCursorStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.declare_cursor_stmt_); break; } // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 119 [json_name = "CreateTableSpaceStmt"]; case kCreateTableSpaceStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_table_space_stmt_); break; } // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 120 [json_name = "DropTableSpaceStmt"]; case kDropTableSpaceStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.drop_table_space_stmt_); break; } // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 121 [json_name = "AlterObjectDependsStmt"]; case kAlterObjectDependsStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_object_depends_stmt_); break; } // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 122 [json_name = "AlterObjectSchemaStmt"]; case kAlterObjectSchemaStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_object_schema_stmt_); break; } // .pg_query.AlterOwnerStmt alter_owner_stmt = 123 [json_name = "AlterOwnerStmt"]; case kAlterOwnerStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_owner_stmt_); break; } // .pg_query.AlterOperatorStmt alter_operator_stmt = 124 [json_name = "AlterOperatorStmt"]; case kAlterOperatorStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_operator_stmt_); break; } // .pg_query.AlterTypeStmt alter_type_stmt = 125 [json_name = "AlterTypeStmt"]; case kAlterTypeStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_type_stmt_); break; } // .pg_query.DropOwnedStmt drop_owned_stmt = 126 [json_name = "DropOwnedStmt"]; case kDropOwnedStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.drop_owned_stmt_); break; } // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 127 [json_name = "ReassignOwnedStmt"]; case kReassignOwnedStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.reassign_owned_stmt_); break; } // .pg_query.CompositeTypeStmt composite_type_stmt = 128 [json_name = "CompositeTypeStmt"]; case kCompositeTypeStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.composite_type_stmt_); break; } // .pg_query.CreateEnumStmt create_enum_stmt = 129 [json_name = "CreateEnumStmt"]; case kCreateEnumStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_enum_stmt_); break; } // .pg_query.CreateRangeStmt create_range_stmt = 130 [json_name = "CreateRangeStmt"]; case kCreateRangeStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_range_stmt_); break; } // .pg_query.AlterEnumStmt alter_enum_stmt = 131 [json_name = "AlterEnumStmt"]; case kAlterEnumStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_enum_stmt_); break; } // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 132 [json_name = "AlterTSDictionaryStmt"]; case kAlterTsdictionaryStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_tsdictionary_stmt_); break; } // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 133 [json_name = "AlterTSConfigurationStmt"]; case kAlterTsconfigurationStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_tsconfiguration_stmt_); break; } // .pg_query.CreateFdwStmt create_fdw_stmt = 134 [json_name = "CreateFdwStmt"]; case kCreateFdwStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_fdw_stmt_); break; } // .pg_query.AlterFdwStmt alter_fdw_stmt = 135 [json_name = "AlterFdwStmt"]; case kAlterFdwStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_fdw_stmt_); break; } // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 136 [json_name = "CreateForeignServerStmt"]; case kCreateForeignServerStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_foreign_server_stmt_); break; } // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 137 [json_name = "AlterForeignServerStmt"]; case kAlterForeignServerStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_foreign_server_stmt_); break; } // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 138 [json_name = "CreateUserMappingStmt"]; case kCreateUserMappingStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_user_mapping_stmt_); break; } // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 139 [json_name = "AlterUserMappingStmt"]; case kAlterUserMappingStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_user_mapping_stmt_); break; } // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 140 [json_name = "DropUserMappingStmt"]; case kDropUserMappingStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.drop_user_mapping_stmt_); break; } // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 141 [json_name = "AlterTableSpaceOptionsStmt"]; case kAlterTableSpaceOptionsStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_table_space_options_stmt_); break; } // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 142 [json_name = "AlterTableMoveAllStmt"]; case kAlterTableMoveAllStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_table_move_all_stmt_); break; } // .pg_query.SecLabelStmt sec_label_stmt = 143 [json_name = "SecLabelStmt"]; case kSecLabelStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.sec_label_stmt_); break; } // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 144 [json_name = "CreateForeignTableStmt"]; case kCreateForeignTableStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_foreign_table_stmt_); break; } // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 145 [json_name = "ImportForeignSchemaStmt"]; case kImportForeignSchemaStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.import_foreign_schema_stmt_); break; } // .pg_query.CreateExtensionStmt create_extension_stmt = 146 [json_name = "CreateExtensionStmt"]; case kCreateExtensionStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_extension_stmt_); break; } // .pg_query.AlterExtensionStmt alter_extension_stmt = 147 [json_name = "AlterExtensionStmt"]; case kAlterExtensionStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_extension_stmt_); break; } // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 148 [json_name = "AlterExtensionContentsStmt"]; case kAlterExtensionContentsStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_extension_contents_stmt_); break; } // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 149 [json_name = "CreateEventTrigStmt"]; case kCreateEventTrigStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_event_trig_stmt_); break; } // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 150 [json_name = "AlterEventTrigStmt"]; case kAlterEventTrigStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_event_trig_stmt_); break; } // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 151 [json_name = "RefreshMatViewStmt"]; case kRefreshMatViewStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.refresh_mat_view_stmt_); break; } // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 152 [json_name = "ReplicaIdentityStmt"]; case kReplicaIdentityStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.replica_identity_stmt_); break; } // .pg_query.AlterSystemStmt alter_system_stmt = 153 [json_name = "AlterSystemStmt"]; case kAlterSystemStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_system_stmt_); break; } // .pg_query.CreatePolicyStmt create_policy_stmt = 154 [json_name = "CreatePolicyStmt"]; case kCreatePolicyStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_policy_stmt_); break; } // .pg_query.AlterPolicyStmt alter_policy_stmt = 155 [json_name = "AlterPolicyStmt"]; case kAlterPolicyStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_policy_stmt_); break; } // .pg_query.CreateTransformStmt create_transform_stmt = 156 [json_name = "CreateTransformStmt"]; case kCreateTransformStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_transform_stmt_); break; } // .pg_query.CreateAmStmt create_am_stmt = 157 [json_name = "CreateAmStmt"]; case kCreateAmStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_am_stmt_); break; } // .pg_query.CreatePublicationStmt create_publication_stmt = 158 [json_name = "CreatePublicationStmt"]; case kCreatePublicationStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_publication_stmt_); break; } // .pg_query.AlterPublicationStmt alter_publication_stmt = 159 [json_name = "AlterPublicationStmt"]; case kAlterPublicationStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_publication_stmt_); break; } // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 160 [json_name = "CreateSubscriptionStmt"]; case kCreateSubscriptionStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_subscription_stmt_); break; } // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 161 [json_name = "AlterSubscriptionStmt"]; case kAlterSubscriptionStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_subscription_stmt_); break; } // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 162 [json_name = "DropSubscriptionStmt"]; case kDropSubscriptionStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.drop_subscription_stmt_); break; } // .pg_query.CreateStatsStmt create_stats_stmt = 163 [json_name = "CreateStatsStmt"]; case kCreateStatsStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_stats_stmt_); break; } // .pg_query.AlterCollationStmt alter_collation_stmt = 164 [json_name = "AlterCollationStmt"]; case kAlterCollationStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_collation_stmt_); break; } // .pg_query.CallStmt call_stmt = 165 [json_name = "CallStmt"]; case kCallStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.call_stmt_); break; } // .pg_query.AlterStatsStmt alter_stats_stmt = 166 [json_name = "AlterStatsStmt"]; case kAlterStatsStmt: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.alter_stats_stmt_); break; } // .pg_query.A_Expr a_expr = 167 [json_name = "A_Expr"]; case kAExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.a_expr_); break; } // .pg_query.ColumnRef column_ref = 168 [json_name = "ColumnRef"]; case kColumnRef: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.column_ref_); break; } // .pg_query.ParamRef param_ref = 169 [json_name = "ParamRef"]; case kParamRef: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.param_ref_); break; } // .pg_query.A_Const a_const = 170 [json_name = "A_Const"]; case kAConst: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.a_const_); break; } // .pg_query.FuncCall func_call = 171 [json_name = "FuncCall"]; case kFuncCall: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.func_call_); break; } // .pg_query.A_Star a_star = 172 [json_name = "A_Star"]; case kAStar: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.a_star_); break; } // .pg_query.A_Indices a_indices = 173 [json_name = "A_Indices"]; case kAIndices: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.a_indices_); break; } // .pg_query.A_Indirection a_indirection = 174 [json_name = "A_Indirection"]; case kAIndirection: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.a_indirection_); break; } // .pg_query.A_ArrayExpr a_array_expr = 175 [json_name = "A_ArrayExpr"]; case kAArrayExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.a_array_expr_); break; } // .pg_query.ResTarget res_target = 176 [json_name = "ResTarget"]; case kResTarget: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.res_target_); break; } // .pg_query.MultiAssignRef multi_assign_ref = 177 [json_name = "MultiAssignRef"]; case kMultiAssignRef: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.multi_assign_ref_); break; } // .pg_query.TypeCast type_cast = 178 [json_name = "TypeCast"]; case kTypeCast: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.type_cast_); break; } // .pg_query.CollateClause collate_clause = 179 [json_name = "CollateClause"]; case kCollateClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.collate_clause_); break; } // .pg_query.SortBy sort_by = 180 [json_name = "SortBy"]; case kSortBy: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.sort_by_); break; } // .pg_query.WindowDef window_def = 181 [json_name = "WindowDef"]; case kWindowDef: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.window_def_); break; } // .pg_query.RangeSubselect range_subselect = 182 [json_name = "RangeSubselect"]; case kRangeSubselect: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.range_subselect_); break; } // .pg_query.RangeFunction range_function = 183 [json_name = "RangeFunction"]; case kRangeFunction: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.range_function_); break; } // .pg_query.RangeTableSample range_table_sample = 184 [json_name = "RangeTableSample"]; case kRangeTableSample: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.range_table_sample_); break; } // .pg_query.RangeTableFunc range_table_func = 185 [json_name = "RangeTableFunc"]; case kRangeTableFunc: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.range_table_func_); break; } // .pg_query.RangeTableFuncCol range_table_func_col = 186 [json_name = "RangeTableFuncCol"]; case kRangeTableFuncCol: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.range_table_func_col_); break; } // .pg_query.TypeName type_name = 187 [json_name = "TypeName"]; case kTypeName: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.type_name_); break; } // .pg_query.ColumnDef column_def = 188 [json_name = "ColumnDef"]; case kColumnDef: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.column_def_); break; } // .pg_query.IndexElem index_elem = 189 [json_name = "IndexElem"]; case kIndexElem: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.index_elem_); break; } // .pg_query.Constraint constraint = 190 [json_name = "Constraint"]; case kConstraint: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.constraint_); break; } // .pg_query.DefElem def_elem = 191 [json_name = "DefElem"]; case kDefElem: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.def_elem_); break; } // .pg_query.RangeTblEntry range_tbl_entry = 192 [json_name = "RangeTblEntry"]; case kRangeTblEntry: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.range_tbl_entry_); break; } // .pg_query.RangeTblFunction range_tbl_function = 193 [json_name = "RangeTblFunction"]; case kRangeTblFunction: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.range_tbl_function_); break; } // .pg_query.TableSampleClause table_sample_clause = 194 [json_name = "TableSampleClause"]; case kTableSampleClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.table_sample_clause_); break; } // .pg_query.WithCheckOption with_check_option = 195 [json_name = "WithCheckOption"]; case kWithCheckOption: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.with_check_option_); break; } // .pg_query.SortGroupClause sort_group_clause = 196 [json_name = "SortGroupClause"]; case kSortGroupClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.sort_group_clause_); break; } // .pg_query.GroupingSet grouping_set = 197 [json_name = "GroupingSet"]; case kGroupingSet: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.grouping_set_); break; } // .pg_query.WindowClause window_clause = 198 [json_name = "WindowClause"]; case kWindowClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.window_clause_); break; } // .pg_query.ObjectWithArgs object_with_args = 199 [json_name = "ObjectWithArgs"]; case kObjectWithArgs: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.object_with_args_); break; } // .pg_query.AccessPriv access_priv = 200 [json_name = "AccessPriv"]; case kAccessPriv: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.access_priv_); break; } // .pg_query.CreateOpClassItem create_op_class_item = 201 [json_name = "CreateOpClassItem"]; case kCreateOpClassItem: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.create_op_class_item_); break; } // .pg_query.TableLikeClause table_like_clause = 202 [json_name = "TableLikeClause"]; case kTableLikeClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.table_like_clause_); break; } // .pg_query.FunctionParameter function_parameter = 203 [json_name = "FunctionParameter"]; case kFunctionParameter: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.function_parameter_); break; } // .pg_query.LockingClause locking_clause = 204 [json_name = "LockingClause"]; case kLockingClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.locking_clause_); break; } // .pg_query.RowMarkClause row_mark_clause = 205 [json_name = "RowMarkClause"]; case kRowMarkClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.row_mark_clause_); break; } // .pg_query.XmlSerialize xml_serialize = 206 [json_name = "XmlSerialize"]; case kXmlSerialize: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.xml_serialize_); break; } // .pg_query.WithClause with_clause = 207 [json_name = "WithClause"]; case kWithClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.with_clause_); break; } // .pg_query.InferClause infer_clause = 208 [json_name = "InferClause"]; case kInferClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.infer_clause_); break; } // .pg_query.OnConflictClause on_conflict_clause = 209 [json_name = "OnConflictClause"]; case kOnConflictClause: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.on_conflict_clause_); break; } // .pg_query.CommonTableExpr common_table_expr = 210 [json_name = "CommonTableExpr"]; case kCommonTableExpr: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.common_table_expr_); break; } // .pg_query.RoleSpec role_spec = 211 [json_name = "RoleSpec"]; case kRoleSpec: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.role_spec_); break; } // .pg_query.TriggerTransition trigger_transition = 212 [json_name = "TriggerTransition"]; case kTriggerTransition: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.trigger_transition_); break; } // .pg_query.PartitionElem partition_elem = 213 [json_name = "PartitionElem"]; case kPartitionElem: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.partition_elem_); break; } // .pg_query.PartitionSpec partition_spec = 214 [json_name = "PartitionSpec"]; case kPartitionSpec: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.partition_spec_); break; } // .pg_query.PartitionBoundSpec partition_bound_spec = 215 [json_name = "PartitionBoundSpec"]; case kPartitionBoundSpec: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.partition_bound_spec_); break; } // .pg_query.PartitionRangeDatum partition_range_datum = 216 [json_name = "PartitionRangeDatum"]; case kPartitionRangeDatum: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.partition_range_datum_); break; } // .pg_query.PartitionCmd partition_cmd = 217 [json_name = "PartitionCmd"]; case kPartitionCmd: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.partition_cmd_); break; } // .pg_query.VacuumRelation vacuum_relation = 218 [json_name = "VacuumRelation"]; case kVacuumRelation: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.vacuum_relation_); break; } // .pg_query.InlineCodeBlock inline_code_block = 219 [json_name = "InlineCodeBlock"]; case kInlineCodeBlock: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.inline_code_block_); break; } // .pg_query.CallContext call_context = 220 [json_name = "CallContext"]; case kCallContext: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.call_context_); break; } // .pg_query.Integer integer = 221 [json_name = "Integer"]; case kInteger: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.integer_); break; } // .pg_query.Float float = 222 [json_name = "Float"]; case kFloat: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.float__); break; } // .pg_query.String string = 223 [json_name = "String"]; case kString: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.string_); break; } // .pg_query.BitString bit_string = 224 [json_name = "BitString"]; case kBitString: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.bit_string_); break; } // .pg_query.Null null = 225 [json_name = "Null"]; case kNull: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.null_); break; } // .pg_query.List list = 226 [json_name = "List"]; case kList: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.list_); break; } // .pg_query.IntList int_list = 227 [json_name = "IntList"]; case kIntList: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.int_list_); break; } // .pg_query.OidList oid_list = 228 [json_name = "OidList"]; case kOidList: { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_.oid_list_); break; } case NODE_NOT_SET: { break; } } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Node::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Node) GOOGLE_DCHECK_NE(&from, this); const Node* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Node) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Node) MergeFrom(*source); } } void Node::MergeFrom(const Node& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Node) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; switch (from.node_case()) { case kAlias: { _internal_mutable_alias()->::pg_query::Alias::MergeFrom(from._internal_alias()); break; } case kRangeVar: { _internal_mutable_range_var()->::pg_query::RangeVar::MergeFrom(from._internal_range_var()); break; } case kTableFunc: { _internal_mutable_table_func()->::pg_query::TableFunc::MergeFrom(from._internal_table_func()); break; } case kExpr: { _internal_mutable_expr()->::pg_query::Expr::MergeFrom(from._internal_expr()); break; } case kVar: { _internal_mutable_var()->::pg_query::Var::MergeFrom(from._internal_var()); break; } case kParam: { _internal_mutable_param()->::pg_query::Param::MergeFrom(from._internal_param()); break; } case kAggref: { _internal_mutable_aggref()->::pg_query::Aggref::MergeFrom(from._internal_aggref()); break; } case kGroupingFunc: { _internal_mutable_grouping_func()->::pg_query::GroupingFunc::MergeFrom(from._internal_grouping_func()); break; } case kWindowFunc: { _internal_mutable_window_func()->::pg_query::WindowFunc::MergeFrom(from._internal_window_func()); break; } case kSubscriptingRef: { _internal_mutable_subscripting_ref()->::pg_query::SubscriptingRef::MergeFrom(from._internal_subscripting_ref()); break; } case kFuncExpr: { _internal_mutable_func_expr()->::pg_query::FuncExpr::MergeFrom(from._internal_func_expr()); break; } case kNamedArgExpr: { _internal_mutable_named_arg_expr()->::pg_query::NamedArgExpr::MergeFrom(from._internal_named_arg_expr()); break; } case kOpExpr: { _internal_mutable_op_expr()->::pg_query::OpExpr::MergeFrom(from._internal_op_expr()); break; } case kDistinctExpr: { _internal_mutable_distinct_expr()->::pg_query::DistinctExpr::MergeFrom(from._internal_distinct_expr()); break; } case kNullIfExpr: { _internal_mutable_null_if_expr()->::pg_query::NullIfExpr::MergeFrom(from._internal_null_if_expr()); break; } case kScalarArrayOpExpr: { _internal_mutable_scalar_array_op_expr()->::pg_query::ScalarArrayOpExpr::MergeFrom(from._internal_scalar_array_op_expr()); break; } case kBoolExpr: { _internal_mutable_bool_expr()->::pg_query::BoolExpr::MergeFrom(from._internal_bool_expr()); break; } case kSubLink: { _internal_mutable_sub_link()->::pg_query::SubLink::MergeFrom(from._internal_sub_link()); break; } case kSubPlan: { _internal_mutable_sub_plan()->::pg_query::SubPlan::MergeFrom(from._internal_sub_plan()); break; } case kAlternativeSubPlan: { _internal_mutable_alternative_sub_plan()->::pg_query::AlternativeSubPlan::MergeFrom(from._internal_alternative_sub_plan()); break; } case kFieldSelect: { _internal_mutable_field_select()->::pg_query::FieldSelect::MergeFrom(from._internal_field_select()); break; } case kFieldStore: { _internal_mutable_field_store()->::pg_query::FieldStore::MergeFrom(from._internal_field_store()); break; } case kRelabelType: { _internal_mutable_relabel_type()->::pg_query::RelabelType::MergeFrom(from._internal_relabel_type()); break; } case kCoerceViaIo: { _internal_mutable_coerce_via_io()->::pg_query::CoerceViaIO::MergeFrom(from._internal_coerce_via_io()); break; } case kArrayCoerceExpr: { _internal_mutable_array_coerce_expr()->::pg_query::ArrayCoerceExpr::MergeFrom(from._internal_array_coerce_expr()); break; } case kConvertRowtypeExpr: { _internal_mutable_convert_rowtype_expr()->::pg_query::ConvertRowtypeExpr::MergeFrom(from._internal_convert_rowtype_expr()); break; } case kCollateExpr: { _internal_mutable_collate_expr()->::pg_query::CollateExpr::MergeFrom(from._internal_collate_expr()); break; } case kCaseExpr: { _internal_mutable_case_expr()->::pg_query::CaseExpr::MergeFrom(from._internal_case_expr()); break; } case kCaseWhen: { _internal_mutable_case_when()->::pg_query::CaseWhen::MergeFrom(from._internal_case_when()); break; } case kCaseTestExpr: { _internal_mutable_case_test_expr()->::pg_query::CaseTestExpr::MergeFrom(from._internal_case_test_expr()); break; } case kArrayExpr: { _internal_mutable_array_expr()->::pg_query::ArrayExpr::MergeFrom(from._internal_array_expr()); break; } case kRowExpr: { _internal_mutable_row_expr()->::pg_query::RowExpr::MergeFrom(from._internal_row_expr()); break; } case kRowCompareExpr: { _internal_mutable_row_compare_expr()->::pg_query::RowCompareExpr::MergeFrom(from._internal_row_compare_expr()); break; } case kCoalesceExpr: { _internal_mutable_coalesce_expr()->::pg_query::CoalesceExpr::MergeFrom(from._internal_coalesce_expr()); break; } case kMinMaxExpr: { _internal_mutable_min_max_expr()->::pg_query::MinMaxExpr::MergeFrom(from._internal_min_max_expr()); break; } case kSqlvalueFunction: { _internal_mutable_sqlvalue_function()->::pg_query::SQLValueFunction::MergeFrom(from._internal_sqlvalue_function()); break; } case kXmlExpr: { _internal_mutable_xml_expr()->::pg_query::XmlExpr::MergeFrom(from._internal_xml_expr()); break; } case kNullTest: { _internal_mutable_null_test()->::pg_query::NullTest::MergeFrom(from._internal_null_test()); break; } case kBooleanTest: { _internal_mutable_boolean_test()->::pg_query::BooleanTest::MergeFrom(from._internal_boolean_test()); break; } case kCoerceToDomain: { _internal_mutable_coerce_to_domain()->::pg_query::CoerceToDomain::MergeFrom(from._internal_coerce_to_domain()); break; } case kCoerceToDomainValue: { _internal_mutable_coerce_to_domain_value()->::pg_query::CoerceToDomainValue::MergeFrom(from._internal_coerce_to_domain_value()); break; } case kSetToDefault: { _internal_mutable_set_to_default()->::pg_query::SetToDefault::MergeFrom(from._internal_set_to_default()); break; } case kCurrentOfExpr: { _internal_mutable_current_of_expr()->::pg_query::CurrentOfExpr::MergeFrom(from._internal_current_of_expr()); break; } case kNextValueExpr: { _internal_mutable_next_value_expr()->::pg_query::NextValueExpr::MergeFrom(from._internal_next_value_expr()); break; } case kInferenceElem: { _internal_mutable_inference_elem()->::pg_query::InferenceElem::MergeFrom(from._internal_inference_elem()); break; } case kTargetEntry: { _internal_mutable_target_entry()->::pg_query::TargetEntry::MergeFrom(from._internal_target_entry()); break; } case kRangeTblRef: { _internal_mutable_range_tbl_ref()->::pg_query::RangeTblRef::MergeFrom(from._internal_range_tbl_ref()); break; } case kJoinExpr: { _internal_mutable_join_expr()->::pg_query::JoinExpr::MergeFrom(from._internal_join_expr()); break; } case kFromExpr: { _internal_mutable_from_expr()->::pg_query::FromExpr::MergeFrom(from._internal_from_expr()); break; } case kOnConflictExpr: { _internal_mutable_on_conflict_expr()->::pg_query::OnConflictExpr::MergeFrom(from._internal_on_conflict_expr()); break; } case kIntoClause: { _internal_mutable_into_clause()->::pg_query::IntoClause::MergeFrom(from._internal_into_clause()); break; } case kRawStmt: { _internal_mutable_raw_stmt()->::pg_query::RawStmt::MergeFrom(from._internal_raw_stmt()); break; } case kQuery: { _internal_mutable_query()->::pg_query::Query::MergeFrom(from._internal_query()); break; } case kInsertStmt: { _internal_mutable_insert_stmt()->::pg_query::InsertStmt::MergeFrom(from._internal_insert_stmt()); break; } case kDeleteStmt: { _internal_mutable_delete_stmt()->::pg_query::DeleteStmt::MergeFrom(from._internal_delete_stmt()); break; } case kUpdateStmt: { _internal_mutable_update_stmt()->::pg_query::UpdateStmt::MergeFrom(from._internal_update_stmt()); break; } case kSelectStmt: { _internal_mutable_select_stmt()->::pg_query::SelectStmt::MergeFrom(from._internal_select_stmt()); break; } case kAlterTableStmt: { _internal_mutable_alter_table_stmt()->::pg_query::AlterTableStmt::MergeFrom(from._internal_alter_table_stmt()); break; } case kAlterTableCmd: { _internal_mutable_alter_table_cmd()->::pg_query::AlterTableCmd::MergeFrom(from._internal_alter_table_cmd()); break; } case kAlterDomainStmt: { _internal_mutable_alter_domain_stmt()->::pg_query::AlterDomainStmt::MergeFrom(from._internal_alter_domain_stmt()); break; } case kSetOperationStmt: { _internal_mutable_set_operation_stmt()->::pg_query::SetOperationStmt::MergeFrom(from._internal_set_operation_stmt()); break; } case kGrantStmt: { _internal_mutable_grant_stmt()->::pg_query::GrantStmt::MergeFrom(from._internal_grant_stmt()); break; } case kGrantRoleStmt: { _internal_mutable_grant_role_stmt()->::pg_query::GrantRoleStmt::MergeFrom(from._internal_grant_role_stmt()); break; } case kAlterDefaultPrivilegesStmt: { _internal_mutable_alter_default_privileges_stmt()->::pg_query::AlterDefaultPrivilegesStmt::MergeFrom(from._internal_alter_default_privileges_stmt()); break; } case kClosePortalStmt: { _internal_mutable_close_portal_stmt()->::pg_query::ClosePortalStmt::MergeFrom(from._internal_close_portal_stmt()); break; } case kClusterStmt: { _internal_mutable_cluster_stmt()->::pg_query::ClusterStmt::MergeFrom(from._internal_cluster_stmt()); break; } case kCopyStmt: { _internal_mutable_copy_stmt()->::pg_query::CopyStmt::MergeFrom(from._internal_copy_stmt()); break; } case kCreateStmt: { _internal_mutable_create_stmt()->::pg_query::CreateStmt::MergeFrom(from._internal_create_stmt()); break; } case kDefineStmt: { _internal_mutable_define_stmt()->::pg_query::DefineStmt::MergeFrom(from._internal_define_stmt()); break; } case kDropStmt: { _internal_mutable_drop_stmt()->::pg_query::DropStmt::MergeFrom(from._internal_drop_stmt()); break; } case kTruncateStmt: { _internal_mutable_truncate_stmt()->::pg_query::TruncateStmt::MergeFrom(from._internal_truncate_stmt()); break; } case kCommentStmt: { _internal_mutable_comment_stmt()->::pg_query::CommentStmt::MergeFrom(from._internal_comment_stmt()); break; } case kFetchStmt: { _internal_mutable_fetch_stmt()->::pg_query::FetchStmt::MergeFrom(from._internal_fetch_stmt()); break; } case kIndexStmt: { _internal_mutable_index_stmt()->::pg_query::IndexStmt::MergeFrom(from._internal_index_stmt()); break; } case kCreateFunctionStmt: { _internal_mutable_create_function_stmt()->::pg_query::CreateFunctionStmt::MergeFrom(from._internal_create_function_stmt()); break; } case kAlterFunctionStmt: { _internal_mutable_alter_function_stmt()->::pg_query::AlterFunctionStmt::MergeFrom(from._internal_alter_function_stmt()); break; } case kDoStmt: { _internal_mutable_do_stmt()->::pg_query::DoStmt::MergeFrom(from._internal_do_stmt()); break; } case kRenameStmt: { _internal_mutable_rename_stmt()->::pg_query::RenameStmt::MergeFrom(from._internal_rename_stmt()); break; } case kRuleStmt: { _internal_mutable_rule_stmt()->::pg_query::RuleStmt::MergeFrom(from._internal_rule_stmt()); break; } case kNotifyStmt: { _internal_mutable_notify_stmt()->::pg_query::NotifyStmt::MergeFrom(from._internal_notify_stmt()); break; } case kListenStmt: { _internal_mutable_listen_stmt()->::pg_query::ListenStmt::MergeFrom(from._internal_listen_stmt()); break; } case kUnlistenStmt: { _internal_mutable_unlisten_stmt()->::pg_query::UnlistenStmt::MergeFrom(from._internal_unlisten_stmt()); break; } case kTransactionStmt: { _internal_mutable_transaction_stmt()->::pg_query::TransactionStmt::MergeFrom(from._internal_transaction_stmt()); break; } case kViewStmt: { _internal_mutable_view_stmt()->::pg_query::ViewStmt::MergeFrom(from._internal_view_stmt()); break; } case kLoadStmt: { _internal_mutable_load_stmt()->::pg_query::LoadStmt::MergeFrom(from._internal_load_stmt()); break; } case kCreateDomainStmt: { _internal_mutable_create_domain_stmt()->::pg_query::CreateDomainStmt::MergeFrom(from._internal_create_domain_stmt()); break; } case kCreatedbStmt: { _internal_mutable_createdb_stmt()->::pg_query::CreatedbStmt::MergeFrom(from._internal_createdb_stmt()); break; } case kDropdbStmt: { _internal_mutable_dropdb_stmt()->::pg_query::DropdbStmt::MergeFrom(from._internal_dropdb_stmt()); break; } case kVacuumStmt: { _internal_mutable_vacuum_stmt()->::pg_query::VacuumStmt::MergeFrom(from._internal_vacuum_stmt()); break; } case kExplainStmt: { _internal_mutable_explain_stmt()->::pg_query::ExplainStmt::MergeFrom(from._internal_explain_stmt()); break; } case kCreateTableAsStmt: { _internal_mutable_create_table_as_stmt()->::pg_query::CreateTableAsStmt::MergeFrom(from._internal_create_table_as_stmt()); break; } case kCreateSeqStmt: { _internal_mutable_create_seq_stmt()->::pg_query::CreateSeqStmt::MergeFrom(from._internal_create_seq_stmt()); break; } case kAlterSeqStmt: { _internal_mutable_alter_seq_stmt()->::pg_query::AlterSeqStmt::MergeFrom(from._internal_alter_seq_stmt()); break; } case kVariableSetStmt: { _internal_mutable_variable_set_stmt()->::pg_query::VariableSetStmt::MergeFrom(from._internal_variable_set_stmt()); break; } case kVariableShowStmt: { _internal_mutable_variable_show_stmt()->::pg_query::VariableShowStmt::MergeFrom(from._internal_variable_show_stmt()); break; } case kDiscardStmt: { _internal_mutable_discard_stmt()->::pg_query::DiscardStmt::MergeFrom(from._internal_discard_stmt()); break; } case kCreateTrigStmt: { _internal_mutable_create_trig_stmt()->::pg_query::CreateTrigStmt::MergeFrom(from._internal_create_trig_stmt()); break; } case kCreatePlangStmt: { _internal_mutable_create_plang_stmt()->::pg_query::CreatePLangStmt::MergeFrom(from._internal_create_plang_stmt()); break; } case kCreateRoleStmt: { _internal_mutable_create_role_stmt()->::pg_query::CreateRoleStmt::MergeFrom(from._internal_create_role_stmt()); break; } case kAlterRoleStmt: { _internal_mutable_alter_role_stmt()->::pg_query::AlterRoleStmt::MergeFrom(from._internal_alter_role_stmt()); break; } case kDropRoleStmt: { _internal_mutable_drop_role_stmt()->::pg_query::DropRoleStmt::MergeFrom(from._internal_drop_role_stmt()); break; } case kLockStmt: { _internal_mutable_lock_stmt()->::pg_query::LockStmt::MergeFrom(from._internal_lock_stmt()); break; } case kConstraintsSetStmt: { _internal_mutable_constraints_set_stmt()->::pg_query::ConstraintsSetStmt::MergeFrom(from._internal_constraints_set_stmt()); break; } case kReindexStmt: { _internal_mutable_reindex_stmt()->::pg_query::ReindexStmt::MergeFrom(from._internal_reindex_stmt()); break; } case kCheckPointStmt: { _internal_mutable_check_point_stmt()->::pg_query::CheckPointStmt::MergeFrom(from._internal_check_point_stmt()); break; } case kCreateSchemaStmt: { _internal_mutable_create_schema_stmt()->::pg_query::CreateSchemaStmt::MergeFrom(from._internal_create_schema_stmt()); break; } case kAlterDatabaseStmt: { _internal_mutable_alter_database_stmt()->::pg_query::AlterDatabaseStmt::MergeFrom(from._internal_alter_database_stmt()); break; } case kAlterDatabaseSetStmt: { _internal_mutable_alter_database_set_stmt()->::pg_query::AlterDatabaseSetStmt::MergeFrom(from._internal_alter_database_set_stmt()); break; } case kAlterRoleSetStmt: { _internal_mutable_alter_role_set_stmt()->::pg_query::AlterRoleSetStmt::MergeFrom(from._internal_alter_role_set_stmt()); break; } case kCreateConversionStmt: { _internal_mutable_create_conversion_stmt()->::pg_query::CreateConversionStmt::MergeFrom(from._internal_create_conversion_stmt()); break; } case kCreateCastStmt: { _internal_mutable_create_cast_stmt()->::pg_query::CreateCastStmt::MergeFrom(from._internal_create_cast_stmt()); break; } case kCreateOpClassStmt: { _internal_mutable_create_op_class_stmt()->::pg_query::CreateOpClassStmt::MergeFrom(from._internal_create_op_class_stmt()); break; } case kCreateOpFamilyStmt: { _internal_mutable_create_op_family_stmt()->::pg_query::CreateOpFamilyStmt::MergeFrom(from._internal_create_op_family_stmt()); break; } case kAlterOpFamilyStmt: { _internal_mutable_alter_op_family_stmt()->::pg_query::AlterOpFamilyStmt::MergeFrom(from._internal_alter_op_family_stmt()); break; } case kPrepareStmt: { _internal_mutable_prepare_stmt()->::pg_query::PrepareStmt::MergeFrom(from._internal_prepare_stmt()); break; } case kExecuteStmt: { _internal_mutable_execute_stmt()->::pg_query::ExecuteStmt::MergeFrom(from._internal_execute_stmt()); break; } case kDeallocateStmt: { _internal_mutable_deallocate_stmt()->::pg_query::DeallocateStmt::MergeFrom(from._internal_deallocate_stmt()); break; } case kDeclareCursorStmt: { _internal_mutable_declare_cursor_stmt()->::pg_query::DeclareCursorStmt::MergeFrom(from._internal_declare_cursor_stmt()); break; } case kCreateTableSpaceStmt: { _internal_mutable_create_table_space_stmt()->::pg_query::CreateTableSpaceStmt::MergeFrom(from._internal_create_table_space_stmt()); break; } case kDropTableSpaceStmt: { _internal_mutable_drop_table_space_stmt()->::pg_query::DropTableSpaceStmt::MergeFrom(from._internal_drop_table_space_stmt()); break; } case kAlterObjectDependsStmt: { _internal_mutable_alter_object_depends_stmt()->::pg_query::AlterObjectDependsStmt::MergeFrom(from._internal_alter_object_depends_stmt()); break; } case kAlterObjectSchemaStmt: { _internal_mutable_alter_object_schema_stmt()->::pg_query::AlterObjectSchemaStmt::MergeFrom(from._internal_alter_object_schema_stmt()); break; } case kAlterOwnerStmt: { _internal_mutable_alter_owner_stmt()->::pg_query::AlterOwnerStmt::MergeFrom(from._internal_alter_owner_stmt()); break; } case kAlterOperatorStmt: { _internal_mutable_alter_operator_stmt()->::pg_query::AlterOperatorStmt::MergeFrom(from._internal_alter_operator_stmt()); break; } case kAlterTypeStmt: { _internal_mutable_alter_type_stmt()->::pg_query::AlterTypeStmt::MergeFrom(from._internal_alter_type_stmt()); break; } case kDropOwnedStmt: { _internal_mutable_drop_owned_stmt()->::pg_query::DropOwnedStmt::MergeFrom(from._internal_drop_owned_stmt()); break; } case kReassignOwnedStmt: { _internal_mutable_reassign_owned_stmt()->::pg_query::ReassignOwnedStmt::MergeFrom(from._internal_reassign_owned_stmt()); break; } case kCompositeTypeStmt: { _internal_mutable_composite_type_stmt()->::pg_query::CompositeTypeStmt::MergeFrom(from._internal_composite_type_stmt()); break; } case kCreateEnumStmt: { _internal_mutable_create_enum_stmt()->::pg_query::CreateEnumStmt::MergeFrom(from._internal_create_enum_stmt()); break; } case kCreateRangeStmt: { _internal_mutable_create_range_stmt()->::pg_query::CreateRangeStmt::MergeFrom(from._internal_create_range_stmt()); break; } case kAlterEnumStmt: { _internal_mutable_alter_enum_stmt()->::pg_query::AlterEnumStmt::MergeFrom(from._internal_alter_enum_stmt()); break; } case kAlterTsdictionaryStmt: { _internal_mutable_alter_tsdictionary_stmt()->::pg_query::AlterTSDictionaryStmt::MergeFrom(from._internal_alter_tsdictionary_stmt()); break; } case kAlterTsconfigurationStmt: { _internal_mutable_alter_tsconfiguration_stmt()->::pg_query::AlterTSConfigurationStmt::MergeFrom(from._internal_alter_tsconfiguration_stmt()); break; } case kCreateFdwStmt: { _internal_mutable_create_fdw_stmt()->::pg_query::CreateFdwStmt::MergeFrom(from._internal_create_fdw_stmt()); break; } case kAlterFdwStmt: { _internal_mutable_alter_fdw_stmt()->::pg_query::AlterFdwStmt::MergeFrom(from._internal_alter_fdw_stmt()); break; } case kCreateForeignServerStmt: { _internal_mutable_create_foreign_server_stmt()->::pg_query::CreateForeignServerStmt::MergeFrom(from._internal_create_foreign_server_stmt()); break; } case kAlterForeignServerStmt: { _internal_mutable_alter_foreign_server_stmt()->::pg_query::AlterForeignServerStmt::MergeFrom(from._internal_alter_foreign_server_stmt()); break; } case kCreateUserMappingStmt: { _internal_mutable_create_user_mapping_stmt()->::pg_query::CreateUserMappingStmt::MergeFrom(from._internal_create_user_mapping_stmt()); break; } case kAlterUserMappingStmt: { _internal_mutable_alter_user_mapping_stmt()->::pg_query::AlterUserMappingStmt::MergeFrom(from._internal_alter_user_mapping_stmt()); break; } case kDropUserMappingStmt: { _internal_mutable_drop_user_mapping_stmt()->::pg_query::DropUserMappingStmt::MergeFrom(from._internal_drop_user_mapping_stmt()); break; } case kAlterTableSpaceOptionsStmt: { _internal_mutable_alter_table_space_options_stmt()->::pg_query::AlterTableSpaceOptionsStmt::MergeFrom(from._internal_alter_table_space_options_stmt()); break; } case kAlterTableMoveAllStmt: { _internal_mutable_alter_table_move_all_stmt()->::pg_query::AlterTableMoveAllStmt::MergeFrom(from._internal_alter_table_move_all_stmt()); break; } case kSecLabelStmt: { _internal_mutable_sec_label_stmt()->::pg_query::SecLabelStmt::MergeFrom(from._internal_sec_label_stmt()); break; } case kCreateForeignTableStmt: { _internal_mutable_create_foreign_table_stmt()->::pg_query::CreateForeignTableStmt::MergeFrom(from._internal_create_foreign_table_stmt()); break; } case kImportForeignSchemaStmt: { _internal_mutable_import_foreign_schema_stmt()->::pg_query::ImportForeignSchemaStmt::MergeFrom(from._internal_import_foreign_schema_stmt()); break; } case kCreateExtensionStmt: { _internal_mutable_create_extension_stmt()->::pg_query::CreateExtensionStmt::MergeFrom(from._internal_create_extension_stmt()); break; } case kAlterExtensionStmt: { _internal_mutable_alter_extension_stmt()->::pg_query::AlterExtensionStmt::MergeFrom(from._internal_alter_extension_stmt()); break; } case kAlterExtensionContentsStmt: { _internal_mutable_alter_extension_contents_stmt()->::pg_query::AlterExtensionContentsStmt::MergeFrom(from._internal_alter_extension_contents_stmt()); break; } case kCreateEventTrigStmt: { _internal_mutable_create_event_trig_stmt()->::pg_query::CreateEventTrigStmt::MergeFrom(from._internal_create_event_trig_stmt()); break; } case kAlterEventTrigStmt: { _internal_mutable_alter_event_trig_stmt()->::pg_query::AlterEventTrigStmt::MergeFrom(from._internal_alter_event_trig_stmt()); break; } case kRefreshMatViewStmt: { _internal_mutable_refresh_mat_view_stmt()->::pg_query::RefreshMatViewStmt::MergeFrom(from._internal_refresh_mat_view_stmt()); break; } case kReplicaIdentityStmt: { _internal_mutable_replica_identity_stmt()->::pg_query::ReplicaIdentityStmt::MergeFrom(from._internal_replica_identity_stmt()); break; } case kAlterSystemStmt: { _internal_mutable_alter_system_stmt()->::pg_query::AlterSystemStmt::MergeFrom(from._internal_alter_system_stmt()); break; } case kCreatePolicyStmt: { _internal_mutable_create_policy_stmt()->::pg_query::CreatePolicyStmt::MergeFrom(from._internal_create_policy_stmt()); break; } case kAlterPolicyStmt: { _internal_mutable_alter_policy_stmt()->::pg_query::AlterPolicyStmt::MergeFrom(from._internal_alter_policy_stmt()); break; } case kCreateTransformStmt: { _internal_mutable_create_transform_stmt()->::pg_query::CreateTransformStmt::MergeFrom(from._internal_create_transform_stmt()); break; } case kCreateAmStmt: { _internal_mutable_create_am_stmt()->::pg_query::CreateAmStmt::MergeFrom(from._internal_create_am_stmt()); break; } case kCreatePublicationStmt: { _internal_mutable_create_publication_stmt()->::pg_query::CreatePublicationStmt::MergeFrom(from._internal_create_publication_stmt()); break; } case kAlterPublicationStmt: { _internal_mutable_alter_publication_stmt()->::pg_query::AlterPublicationStmt::MergeFrom(from._internal_alter_publication_stmt()); break; } case kCreateSubscriptionStmt: { _internal_mutable_create_subscription_stmt()->::pg_query::CreateSubscriptionStmt::MergeFrom(from._internal_create_subscription_stmt()); break; } case kAlterSubscriptionStmt: { _internal_mutable_alter_subscription_stmt()->::pg_query::AlterSubscriptionStmt::MergeFrom(from._internal_alter_subscription_stmt()); break; } case kDropSubscriptionStmt: { _internal_mutable_drop_subscription_stmt()->::pg_query::DropSubscriptionStmt::MergeFrom(from._internal_drop_subscription_stmt()); break; } case kCreateStatsStmt: { _internal_mutable_create_stats_stmt()->::pg_query::CreateStatsStmt::MergeFrom(from._internal_create_stats_stmt()); break; } case kAlterCollationStmt: { _internal_mutable_alter_collation_stmt()->::pg_query::AlterCollationStmt::MergeFrom(from._internal_alter_collation_stmt()); break; } case kCallStmt: { _internal_mutable_call_stmt()->::pg_query::CallStmt::MergeFrom(from._internal_call_stmt()); break; } case kAlterStatsStmt: { _internal_mutable_alter_stats_stmt()->::pg_query::AlterStatsStmt::MergeFrom(from._internal_alter_stats_stmt()); break; } case kAExpr: { _internal_mutable_a_expr()->::pg_query::A_Expr::MergeFrom(from._internal_a_expr()); break; } case kColumnRef: { _internal_mutable_column_ref()->::pg_query::ColumnRef::MergeFrom(from._internal_column_ref()); break; } case kParamRef: { _internal_mutable_param_ref()->::pg_query::ParamRef::MergeFrom(from._internal_param_ref()); break; } case kAConst: { _internal_mutable_a_const()->::pg_query::A_Const::MergeFrom(from._internal_a_const()); break; } case kFuncCall: { _internal_mutable_func_call()->::pg_query::FuncCall::MergeFrom(from._internal_func_call()); break; } case kAStar: { _internal_mutable_a_star()->::pg_query::A_Star::MergeFrom(from._internal_a_star()); break; } case kAIndices: { _internal_mutable_a_indices()->::pg_query::A_Indices::MergeFrom(from._internal_a_indices()); break; } case kAIndirection: { _internal_mutable_a_indirection()->::pg_query::A_Indirection::MergeFrom(from._internal_a_indirection()); break; } case kAArrayExpr: { _internal_mutable_a_array_expr()->::pg_query::A_ArrayExpr::MergeFrom(from._internal_a_array_expr()); break; } case kResTarget: { _internal_mutable_res_target()->::pg_query::ResTarget::MergeFrom(from._internal_res_target()); break; } case kMultiAssignRef: { _internal_mutable_multi_assign_ref()->::pg_query::MultiAssignRef::MergeFrom(from._internal_multi_assign_ref()); break; } case kTypeCast: { _internal_mutable_type_cast()->::pg_query::TypeCast::MergeFrom(from._internal_type_cast()); break; } case kCollateClause: { _internal_mutable_collate_clause()->::pg_query::CollateClause::MergeFrom(from._internal_collate_clause()); break; } case kSortBy: { _internal_mutable_sort_by()->::pg_query::SortBy::MergeFrom(from._internal_sort_by()); break; } case kWindowDef: { _internal_mutable_window_def()->::pg_query::WindowDef::MergeFrom(from._internal_window_def()); break; } case kRangeSubselect: { _internal_mutable_range_subselect()->::pg_query::RangeSubselect::MergeFrom(from._internal_range_subselect()); break; } case kRangeFunction: { _internal_mutable_range_function()->::pg_query::RangeFunction::MergeFrom(from._internal_range_function()); break; } case kRangeTableSample: { _internal_mutable_range_table_sample()->::pg_query::RangeTableSample::MergeFrom(from._internal_range_table_sample()); break; } case kRangeTableFunc: { _internal_mutable_range_table_func()->::pg_query::RangeTableFunc::MergeFrom(from._internal_range_table_func()); break; } case kRangeTableFuncCol: { _internal_mutable_range_table_func_col()->::pg_query::RangeTableFuncCol::MergeFrom(from._internal_range_table_func_col()); break; } case kTypeName: { _internal_mutable_type_name()->::pg_query::TypeName::MergeFrom(from._internal_type_name()); break; } case kColumnDef: { _internal_mutable_column_def()->::pg_query::ColumnDef::MergeFrom(from._internal_column_def()); break; } case kIndexElem: { _internal_mutable_index_elem()->::pg_query::IndexElem::MergeFrom(from._internal_index_elem()); break; } case kConstraint: { _internal_mutable_constraint()->::pg_query::Constraint::MergeFrom(from._internal_constraint()); break; } case kDefElem: { _internal_mutable_def_elem()->::pg_query::DefElem::MergeFrom(from._internal_def_elem()); break; } case kRangeTblEntry: { _internal_mutable_range_tbl_entry()->::pg_query::RangeTblEntry::MergeFrom(from._internal_range_tbl_entry()); break; } case kRangeTblFunction: { _internal_mutable_range_tbl_function()->::pg_query::RangeTblFunction::MergeFrom(from._internal_range_tbl_function()); break; } case kTableSampleClause: { _internal_mutable_table_sample_clause()->::pg_query::TableSampleClause::MergeFrom(from._internal_table_sample_clause()); break; } case kWithCheckOption: { _internal_mutable_with_check_option()->::pg_query::WithCheckOption::MergeFrom(from._internal_with_check_option()); break; } case kSortGroupClause: { _internal_mutable_sort_group_clause()->::pg_query::SortGroupClause::MergeFrom(from._internal_sort_group_clause()); break; } case kGroupingSet: { _internal_mutable_grouping_set()->::pg_query::GroupingSet::MergeFrom(from._internal_grouping_set()); break; } case kWindowClause: { _internal_mutable_window_clause()->::pg_query::WindowClause::MergeFrom(from._internal_window_clause()); break; } case kObjectWithArgs: { _internal_mutable_object_with_args()->::pg_query::ObjectWithArgs::MergeFrom(from._internal_object_with_args()); break; } case kAccessPriv: { _internal_mutable_access_priv()->::pg_query::AccessPriv::MergeFrom(from._internal_access_priv()); break; } case kCreateOpClassItem: { _internal_mutable_create_op_class_item()->::pg_query::CreateOpClassItem::MergeFrom(from._internal_create_op_class_item()); break; } case kTableLikeClause: { _internal_mutable_table_like_clause()->::pg_query::TableLikeClause::MergeFrom(from._internal_table_like_clause()); break; } case kFunctionParameter: { _internal_mutable_function_parameter()->::pg_query::FunctionParameter::MergeFrom(from._internal_function_parameter()); break; } case kLockingClause: { _internal_mutable_locking_clause()->::pg_query::LockingClause::MergeFrom(from._internal_locking_clause()); break; } case kRowMarkClause: { _internal_mutable_row_mark_clause()->::pg_query::RowMarkClause::MergeFrom(from._internal_row_mark_clause()); break; } case kXmlSerialize: { _internal_mutable_xml_serialize()->::pg_query::XmlSerialize::MergeFrom(from._internal_xml_serialize()); break; } case kWithClause: { _internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom(from._internal_with_clause()); break; } case kInferClause: { _internal_mutable_infer_clause()->::pg_query::InferClause::MergeFrom(from._internal_infer_clause()); break; } case kOnConflictClause: { _internal_mutable_on_conflict_clause()->::pg_query::OnConflictClause::MergeFrom(from._internal_on_conflict_clause()); break; } case kCommonTableExpr: { _internal_mutable_common_table_expr()->::pg_query::CommonTableExpr::MergeFrom(from._internal_common_table_expr()); break; } case kRoleSpec: { _internal_mutable_role_spec()->::pg_query::RoleSpec::MergeFrom(from._internal_role_spec()); break; } case kTriggerTransition: { _internal_mutable_trigger_transition()->::pg_query::TriggerTransition::MergeFrom(from._internal_trigger_transition()); break; } case kPartitionElem: { _internal_mutable_partition_elem()->::pg_query::PartitionElem::MergeFrom(from._internal_partition_elem()); break; } case kPartitionSpec: { _internal_mutable_partition_spec()->::pg_query::PartitionSpec::MergeFrom(from._internal_partition_spec()); break; } case kPartitionBoundSpec: { _internal_mutable_partition_bound_spec()->::pg_query::PartitionBoundSpec::MergeFrom(from._internal_partition_bound_spec()); break; } case kPartitionRangeDatum: { _internal_mutable_partition_range_datum()->::pg_query::PartitionRangeDatum::MergeFrom(from._internal_partition_range_datum()); break; } case kPartitionCmd: { _internal_mutable_partition_cmd()->::pg_query::PartitionCmd::MergeFrom(from._internal_partition_cmd()); break; } case kVacuumRelation: { _internal_mutable_vacuum_relation()->::pg_query::VacuumRelation::MergeFrom(from._internal_vacuum_relation()); break; } case kInlineCodeBlock: { _internal_mutable_inline_code_block()->::pg_query::InlineCodeBlock::MergeFrom(from._internal_inline_code_block()); break; } case kCallContext: { _internal_mutable_call_context()->::pg_query::CallContext::MergeFrom(from._internal_call_context()); break; } case kInteger: { _internal_mutable_integer()->::pg_query::Integer::MergeFrom(from._internal_integer()); break; } case kFloat: { _internal_mutable_float_()->::pg_query::Float::MergeFrom(from._internal_float_()); break; } case kString: { _internal_mutable_string()->::pg_query::String::MergeFrom(from._internal_string()); break; } case kBitString: { _internal_mutable_bit_string()->::pg_query::BitString::MergeFrom(from._internal_bit_string()); break; } case kNull: { _internal_mutable_null()->::pg_query::Null::MergeFrom(from._internal_null()); break; } case kList: { _internal_mutable_list()->::pg_query::List::MergeFrom(from._internal_list()); break; } case kIntList: { _internal_mutable_int_list()->::pg_query::IntList::MergeFrom(from._internal_int_list()); break; } case kOidList: { _internal_mutable_oid_list()->::pg_query::OidList::MergeFrom(from._internal_oid_list()); break; } case NODE_NOT_SET: { break; } } } void Node::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Node) if (&from == this) return; Clear(); MergeFrom(from); } void Node::CopyFrom(const Node& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Node) if (&from == this) return; Clear(); MergeFrom(from); } bool Node::IsInitialized() const { return true; } void Node::InternalSwap(Node* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); swap(node_, other->node_); swap(_oneof_case_[0], other->_oneof_case_[0]); } ::PROTOBUF_NAMESPACE_ID::Metadata Node::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Integer::_Internal { public: }; Integer::Integer(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Integer) } Integer::Integer(const Integer& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ival_ = from.ival_; // @@protoc_insertion_point(copy_constructor:pg_query.Integer) } void Integer::SharedCtor() { ival_ = 0; } Integer::~Integer() { // @@protoc_insertion_point(destructor:pg_query.Integer) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Integer::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void Integer::ArenaDtor(void* object) { Integer* _this = reinterpret_cast< Integer* >(object); (void)_this; } void Integer::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Integer::SetCachedSize(int size) const { _cached_size_.Set(size); } const Integer& Integer::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Integer_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Integer::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Integer) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ival_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Integer::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // int32 ival = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ival_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Integer::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Integer) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // int32 ival = 1; if (this->ival() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_ival(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Integer) return target; } size_t Integer::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Integer) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // int32 ival = 1; if (this->ival() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_ival()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Integer::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Integer) GOOGLE_DCHECK_NE(&from, this); const Integer* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Integer) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Integer) MergeFrom(*source); } } void Integer::MergeFrom(const Integer& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Integer) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.ival() != 0) { _internal_set_ival(from._internal_ival()); } } void Integer::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Integer) if (&from == this) return; Clear(); MergeFrom(from); } void Integer::CopyFrom(const Integer& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Integer) if (&from == this) return; Clear(); MergeFrom(from); } bool Integer::IsInitialized() const { return true; } void Integer::InternalSwap(Integer* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); swap(ival_, other->ival_); } ::PROTOBUF_NAMESPACE_ID::Metadata Integer::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Float::_Internal { public: }; Float::Float(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Float) } Float::Float(const Float& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); str_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_str().empty()) { str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_str(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.Float) } void Float::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_Float_protobuf_2fpg_5fquery_2eproto.base); str_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } Float::~Float() { // @@protoc_insertion_point(destructor:pg_query.Float) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Float::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); str_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void Float::ArenaDtor(void* object) { Float* _this = reinterpret_cast< Float* >(object); (void)_this; } void Float::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Float::SetCachedSize(int size) const { _cached_size_.Set(size); } const Float& Float::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Float_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Float::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Float) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; str_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Float::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string str = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_str(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Float.str")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Float::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Float) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string str = 1; if (this->str().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_str().data(), static_cast(this->_internal_str().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Float.str"); target = stream->WriteStringMaybeAliased( 1, this->_internal_str(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Float) return target; } size_t Float::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Float) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string str = 1; if (this->str().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_str()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Float::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Float) GOOGLE_DCHECK_NE(&from, this); const Float* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Float) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Float) MergeFrom(*source); } } void Float::MergeFrom(const Float& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Float) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.str().size() > 0) { _internal_set_str(from._internal_str()); } } void Float::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Float) if (&from == this) return; Clear(); MergeFrom(from); } void Float::CopyFrom(const Float& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Float) if (&from == this) return; Clear(); MergeFrom(from); } bool Float::IsInitialized() const { return true; } void Float::InternalSwap(Float* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); str_.Swap(&other->str_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata Float::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class String::_Internal { public: }; String::String(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.String) } String::String(const String& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); str_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_str().empty()) { str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_str(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.String) } void String::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_String_protobuf_2fpg_5fquery_2eproto.base); str_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } String::~String() { // @@protoc_insertion_point(destructor:pg_query.String) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void String::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); str_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void String::ArenaDtor(void* object) { String* _this = reinterpret_cast< String* >(object); (void)_this; } void String::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void String::SetCachedSize(int size) const { _cached_size_.Set(size); } const String& String::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_String_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void String::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.String) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; str_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* String::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string str = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_str(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.String.str")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* String::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.String) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string str = 1; if (this->str().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_str().data(), static_cast(this->_internal_str().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.String.str"); target = stream->WriteStringMaybeAliased( 1, this->_internal_str(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.String) return target; } size_t String::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.String) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string str = 1; if (this->str().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_str()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void String::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.String) GOOGLE_DCHECK_NE(&from, this); const String* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.String) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.String) MergeFrom(*source); } } void String::MergeFrom(const String& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.String) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.str().size() > 0) { _internal_set_str(from._internal_str()); } } void String::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.String) if (&from == this) return; Clear(); MergeFrom(from); } void String::CopyFrom(const String& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.String) if (&from == this) return; Clear(); MergeFrom(from); } bool String::IsInitialized() const { return true; } void String::InternalSwap(String* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); str_.Swap(&other->str_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata String::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class BitString::_Internal { public: }; BitString::BitString(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.BitString) } BitString::BitString(const BitString& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); str_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_str().empty()) { str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_str(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.BitString) } void BitString::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_BitString_protobuf_2fpg_5fquery_2eproto.base); str_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } BitString::~BitString() { // @@protoc_insertion_point(destructor:pg_query.BitString) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void BitString::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); str_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void BitString::ArenaDtor(void* object) { BitString* _this = reinterpret_cast< BitString* >(object); (void)_this; } void BitString::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void BitString::SetCachedSize(int size) const { _cached_size_.Set(size); } const BitString& BitString::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_BitString_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void BitString::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.BitString) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; str_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* BitString::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string str = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_str(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.BitString.str")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* BitString::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.BitString) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string str = 1; if (this->str().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_str().data(), static_cast(this->_internal_str().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.BitString.str"); target = stream->WriteStringMaybeAliased( 1, this->_internal_str(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.BitString) return target; } size_t BitString::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.BitString) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string str = 1; if (this->str().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_str()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void BitString::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.BitString) GOOGLE_DCHECK_NE(&from, this); const BitString* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.BitString) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.BitString) MergeFrom(*source); } } void BitString::MergeFrom(const BitString& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.BitString) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.str().size() > 0) { _internal_set_str(from._internal_str()); } } void BitString::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.BitString) if (&from == this) return; Clear(); MergeFrom(from); } void BitString::CopyFrom(const BitString& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.BitString) if (&from == this) return; Clear(); MergeFrom(from); } bool BitString::IsInitialized() const { return true; } void BitString::InternalSwap(BitString* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); str_.Swap(&other->str_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata BitString::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Null::_Internal { public: }; Null::Null(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Null) } Null::Null(const Null& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.Null) } void Null::SharedCtor() { } Null::~Null() { // @@protoc_insertion_point(destructor:pg_query.Null) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Null::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void Null::ArenaDtor(void* object) { Null* _this = reinterpret_cast< Null* >(object); (void)_this; } void Null::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Null::SetCachedSize(int size) const { _cached_size_.Set(size); } const Null& Null::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Null_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Null::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Null) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Null::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Null::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Null) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Null) return target; } size_t Null::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Null) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Null::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Null) GOOGLE_DCHECK_NE(&from, this); const Null* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Null) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Null) MergeFrom(*source); } } void Null::MergeFrom(const Null& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Null) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; } void Null::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Null) if (&from == this) return; Clear(); MergeFrom(from); } void Null::CopyFrom(const Null& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Null) if (&from == this) return; Clear(); MergeFrom(from); } bool Null::IsInitialized() const { return true; } void Null::InternalSwap(Null* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); } ::PROTOBUF_NAMESPACE_ID::Metadata Null::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class List::_Internal { public: }; List::List(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), items_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.List) } List::List(const List& from) : ::PROTOBUF_NAMESPACE_ID::Message(), items_(from.items_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.List) } void List::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); } List::~List() { // @@protoc_insertion_point(destructor:pg_query.List) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void List::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void List::ArenaDtor(void* object) { List* _this = reinterpret_cast< List* >(object); (void)_this; } void List::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void List::SetCachedSize(int size) const { _cached_size_.Set(size); } const List& List::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void List::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.List) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; items_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* List::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node items = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_items(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* List::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.List) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node items = 1; for (unsigned int i = 0, n = static_cast(this->_internal_items_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_items(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.List) return target; } size_t List::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.List) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node items = 1; total_size += 1UL * this->_internal_items_size(); for (const auto& msg : this->items_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void List::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.List) GOOGLE_DCHECK_NE(&from, this); const List* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.List) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.List) MergeFrom(*source); } } void List::MergeFrom(const List& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.List) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; items_.MergeFrom(from.items_); } void List::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.List) if (&from == this) return; Clear(); MergeFrom(from); } void List::CopyFrom(const List& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.List) if (&from == this) return; Clear(); MergeFrom(from); } bool List::IsInitialized() const { return true; } void List::InternalSwap(List* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); items_.InternalSwap(&other->items_); } ::PROTOBUF_NAMESPACE_ID::Metadata List::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class OidList::_Internal { public: }; OidList::OidList(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), items_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.OidList) } OidList::OidList(const OidList& from) : ::PROTOBUF_NAMESPACE_ID::Message(), items_(from.items_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.OidList) } void OidList::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); } OidList::~OidList() { // @@protoc_insertion_point(destructor:pg_query.OidList) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void OidList::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void OidList::ArenaDtor(void* object) { OidList* _this = reinterpret_cast< OidList* >(object); (void)_this; } void OidList::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void OidList::SetCachedSize(int size) const { _cached_size_.Set(size); } const OidList& OidList::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void OidList::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.OidList) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; items_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* OidList::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node items = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_items(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* OidList::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.OidList) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node items = 1; for (unsigned int i = 0, n = static_cast(this->_internal_items_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_items(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.OidList) return target; } size_t OidList::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.OidList) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node items = 1; total_size += 1UL * this->_internal_items_size(); for (const auto& msg : this->items_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void OidList::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.OidList) GOOGLE_DCHECK_NE(&from, this); const OidList* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.OidList) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.OidList) MergeFrom(*source); } } void OidList::MergeFrom(const OidList& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.OidList) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; items_.MergeFrom(from.items_); } void OidList::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.OidList) if (&from == this) return; Clear(); MergeFrom(from); } void OidList::CopyFrom(const OidList& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.OidList) if (&from == this) return; Clear(); MergeFrom(from); } bool OidList::IsInitialized() const { return true; } void OidList::InternalSwap(OidList* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); items_.InternalSwap(&other->items_); } ::PROTOBUF_NAMESPACE_ID::Metadata OidList::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class IntList::_Internal { public: }; IntList::IntList(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), items_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.IntList) } IntList::IntList(const IntList& from) : ::PROTOBUF_NAMESPACE_ID::Message(), items_(from.items_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.IntList) } void IntList::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); } IntList::~IntList() { // @@protoc_insertion_point(destructor:pg_query.IntList) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void IntList::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void IntList::ArenaDtor(void* object) { IntList* _this = reinterpret_cast< IntList* >(object); (void)_this; } void IntList::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void IntList::SetCachedSize(int size) const { _cached_size_.Set(size); } const IntList& IntList::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void IntList::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.IntList) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; items_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* IntList::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node items = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_items(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* IntList::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.IntList) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node items = 1; for (unsigned int i = 0, n = static_cast(this->_internal_items_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_items(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.IntList) return target; } size_t IntList::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.IntList) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node items = 1; total_size += 1UL * this->_internal_items_size(); for (const auto& msg : this->items_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void IntList::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.IntList) GOOGLE_DCHECK_NE(&from, this); const IntList* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.IntList) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.IntList) MergeFrom(*source); } } void IntList::MergeFrom(const IntList& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.IntList) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; items_.MergeFrom(from.items_); } void IntList::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.IntList) if (&from == this) return; Clear(); MergeFrom(from); } void IntList::CopyFrom(const IntList& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.IntList) if (&from == this) return; Clear(); MergeFrom(from); } bool IntList::IsInitialized() const { return true; } void IntList::InternalSwap(IntList* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); items_.InternalSwap(&other->items_); } ::PROTOBUF_NAMESPACE_ID::Metadata IntList::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Bitmapset::_Internal { public: }; Bitmapset::Bitmapset(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), words_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Bitmapset) } Bitmapset::Bitmapset(const Bitmapset& from) : ::PROTOBUF_NAMESPACE_ID::Message(), words_(from.words_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.Bitmapset) } void Bitmapset::SharedCtor() { } Bitmapset::~Bitmapset() { // @@protoc_insertion_point(destructor:pg_query.Bitmapset) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Bitmapset::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void Bitmapset::ArenaDtor(void* object) { Bitmapset* _this = reinterpret_cast< Bitmapset* >(object); (void)_this; } void Bitmapset::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Bitmapset::SetCachedSize(int size) const { _cached_size_.Set(size); } const Bitmapset& Bitmapset::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Bitmapset_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Bitmapset::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Bitmapset) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; words_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Bitmapset::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated uint64 words = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedUInt64Parser(_internal_mutable_words(), ptr, ctx); CHK_(ptr); } else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8) { _internal_add_words(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr)); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Bitmapset::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Bitmapset) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated uint64 words = 1; { int byte_size = _words_cached_byte_size_.load(std::memory_order_relaxed); if (byte_size > 0) { target = stream->WriteUInt64Packed( 1, _internal_words(), byte_size, target); } } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Bitmapset) return target; } size_t Bitmapset::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Bitmapset) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated uint64 words = 1; { size_t data_size = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: UInt64Size(this->words_); if (data_size > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( static_cast<::PROTOBUF_NAMESPACE_ID::int32>(data_size)); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(data_size); _words_cached_byte_size_.store(cached_size, std::memory_order_relaxed); total_size += data_size; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Bitmapset::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Bitmapset) GOOGLE_DCHECK_NE(&from, this); const Bitmapset* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Bitmapset) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Bitmapset) MergeFrom(*source); } } void Bitmapset::MergeFrom(const Bitmapset& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Bitmapset) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; words_.MergeFrom(from.words_); } void Bitmapset::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Bitmapset) if (&from == this) return; Clear(); MergeFrom(from); } void Bitmapset::CopyFrom(const Bitmapset& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Bitmapset) if (&from == this) return; Clear(); MergeFrom(from); } bool Bitmapset::IsInitialized() const { return true; } void Bitmapset::InternalSwap(Bitmapset* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); words_.InternalSwap(&other->words_); } ::PROTOBUF_NAMESPACE_ID::Metadata Bitmapset::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Alias::_Internal { public: }; Alias::Alias(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), colnames_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Alias) } Alias::Alias(const Alias& from) : ::PROTOBUF_NAMESPACE_ID::Message(), colnames_(from.colnames_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); aliasname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_aliasname().empty()) { aliasname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_aliasname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.Alias) } void Alias::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); aliasname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } Alias::~Alias() { // @@protoc_insertion_point(destructor:pg_query.Alias) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Alias::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); aliasname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void Alias::ArenaDtor(void* object) { Alias* _this = reinterpret_cast< Alias* >(object); (void)_this; } void Alias::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Alias::SetCachedSize(int size) const { _cached_size_.Set(size); } const Alias& Alias::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Alias::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Alias) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; colnames_.Clear(); aliasname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Alias::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string aliasname = 1 [json_name = "aliasname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_aliasname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Alias.aliasname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node colnames = 2 [json_name = "colnames"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_colnames(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Alias::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Alias) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string aliasname = 1 [json_name = "aliasname"]; if (this->aliasname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_aliasname().data(), static_cast(this->_internal_aliasname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Alias.aliasname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_aliasname(), target); } // repeated .pg_query.Node colnames = 2 [json_name = "colnames"]; for (unsigned int i = 0, n = static_cast(this->_internal_colnames_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_colnames(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Alias) return target; } size_t Alias::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Alias) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node colnames = 2 [json_name = "colnames"]; total_size += 1UL * this->_internal_colnames_size(); for (const auto& msg : this->colnames_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string aliasname = 1 [json_name = "aliasname"]; if (this->aliasname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_aliasname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Alias::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Alias) GOOGLE_DCHECK_NE(&from, this); const Alias* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Alias) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Alias) MergeFrom(*source); } } void Alias::MergeFrom(const Alias& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Alias) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; colnames_.MergeFrom(from.colnames_); if (from.aliasname().size() > 0) { _internal_set_aliasname(from._internal_aliasname()); } } void Alias::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Alias) if (&from == this) return; Clear(); MergeFrom(from); } void Alias::CopyFrom(const Alias& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Alias) if (&from == this) return; Clear(); MergeFrom(from); } bool Alias::IsInitialized() const { return true; } void Alias::InternalSwap(Alias* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); colnames_.InternalSwap(&other->colnames_); aliasname_.Swap(&other->aliasname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata Alias::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RangeVar::_Internal { public: static const ::pg_query::Alias& alias(const RangeVar* msg); }; const ::pg_query::Alias& RangeVar::_Internal::alias(const RangeVar* msg) { return *msg->alias_; } RangeVar::RangeVar(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeVar) } RangeVar::RangeVar(const RangeVar& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); catalogname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_catalogname().empty()) { catalogname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_catalogname(), GetArena()); } schemaname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_schemaname().empty()) { schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_schemaname(), GetArena()); } relname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_relname().empty()) { relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_relname(), GetArena()); } relpersistence_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_relpersistence().empty()) { relpersistence_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_relpersistence(), GetArena()); } if (from._internal_has_alias()) { alias_ = new ::pg_query::Alias(*from.alias_); } else { alias_ = nullptr; } ::memcpy(&inh_, &from.inh_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&inh_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RangeVar) } void RangeVar::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); catalogname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); schemaname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); relname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); relpersistence_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&alias_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&alias_)) + sizeof(location_)); } RangeVar::~RangeVar() { // @@protoc_insertion_point(destructor:pg_query.RangeVar) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RangeVar::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); catalogname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); schemaname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); relname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); relpersistence_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete alias_; } void RangeVar::ArenaDtor(void* object) { RangeVar* _this = reinterpret_cast< RangeVar* >(object); (void)_this; } void RangeVar::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RangeVar::SetCachedSize(int size) const { _cached_size_.Set(size); } const RangeVar& RangeVar::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RangeVar::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeVar) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; catalogname_.ClearToEmpty(); schemaname_.ClearToEmpty(); relname_.ClearToEmpty(); relpersistence_.ClearToEmpty(); if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; ::memset(&inh_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&inh_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RangeVar::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string catalogname = 1 [json_name = "catalogname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_catalogname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RangeVar.catalogname")); CHK_(ptr); } else goto handle_unusual; continue; // string schemaname = 2 [json_name = "schemaname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_schemaname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RangeVar.schemaname")); CHK_(ptr); } else goto handle_unusual; continue; // string relname = 3 [json_name = "relname"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_relname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RangeVar.relname")); CHK_(ptr); } else goto handle_unusual; continue; // bool inh = 4 [json_name = "inh"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { inh_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string relpersistence = 5 [json_name = "relpersistence"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { auto str = _internal_mutable_relpersistence(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RangeVar.relpersistence")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Alias alias = 6 [json_name = "alias"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_alias(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RangeVar::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeVar) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string catalogname = 1 [json_name = "catalogname"]; if (this->catalogname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_catalogname().data(), static_cast(this->_internal_catalogname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RangeVar.catalogname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_catalogname(), target); } // string schemaname = 2 [json_name = "schemaname"]; if (this->schemaname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_schemaname().data(), static_cast(this->_internal_schemaname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RangeVar.schemaname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_schemaname(), target); } // string relname = 3 [json_name = "relname"]; if (this->relname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_relname().data(), static_cast(this->_internal_relname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RangeVar.relname"); target = stream->WriteStringMaybeAliased( 3, this->_internal_relname(), target); } // bool inh = 4 [json_name = "inh"]; if (this->inh() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_inh(), target); } // string relpersistence = 5 [json_name = "relpersistence"]; if (this->relpersistence().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_relpersistence().data(), static_cast(this->_internal_relpersistence().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RangeVar.relpersistence"); target = stream->WriteStringMaybeAliased( 5, this->_internal_relpersistence(), target); } // .pg_query.Alias alias = 6 [json_name = "alias"]; if (this->has_alias()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::alias(this), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RangeVar) return target; } size_t RangeVar::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RangeVar) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string catalogname = 1 [json_name = "catalogname"]; if (this->catalogname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_catalogname()); } // string schemaname = 2 [json_name = "schemaname"]; if (this->schemaname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_schemaname()); } // string relname = 3 [json_name = "relname"]; if (this->relname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_relname()); } // string relpersistence = 5 [json_name = "relpersistence"]; if (this->relpersistence().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_relpersistence()); } // .pg_query.Alias alias = 6 [json_name = "alias"]; if (this->has_alias()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *alias_); } // bool inh = 4 [json_name = "inh"]; if (this->inh() != 0) { total_size += 1 + 1; } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RangeVar::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RangeVar) GOOGLE_DCHECK_NE(&from, this); const RangeVar* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RangeVar) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RangeVar) MergeFrom(*source); } } void RangeVar::MergeFrom(const RangeVar& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeVar) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.catalogname().size() > 0) { _internal_set_catalogname(from._internal_catalogname()); } if (from.schemaname().size() > 0) { _internal_set_schemaname(from._internal_schemaname()); } if (from.relname().size() > 0) { _internal_set_relname(from._internal_relname()); } if (from.relpersistence().size() > 0) { _internal_set_relpersistence(from._internal_relpersistence()); } if (from.has_alias()) { _internal_mutable_alias()->::pg_query::Alias::MergeFrom(from._internal_alias()); } if (from.inh() != 0) { _internal_set_inh(from._internal_inh()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void RangeVar::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RangeVar) if (&from == this) return; Clear(); MergeFrom(from); } void RangeVar::CopyFrom(const RangeVar& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeVar) if (&from == this) return; Clear(); MergeFrom(from); } bool RangeVar::IsInitialized() const { return true; } void RangeVar::InternalSwap(RangeVar* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); catalogname_.Swap(&other->catalogname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); schemaname_.Swap(&other->schemaname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); relname_.Swap(&other->relname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); relpersistence_.Swap(&other->relpersistence_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeVar, location_) + sizeof(RangeVar::location_) - PROTOBUF_FIELD_OFFSET(RangeVar, alias_)>( reinterpret_cast(&alias_), reinterpret_cast(&other->alias_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RangeVar::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class TableFunc::_Internal { public: static const ::pg_query::Node& docexpr(const TableFunc* msg); static const ::pg_query::Node& rowexpr(const TableFunc* msg); }; const ::pg_query::Node& TableFunc::_Internal::docexpr(const TableFunc* msg) { return *msg->docexpr_; } const ::pg_query::Node& TableFunc::_Internal::rowexpr(const TableFunc* msg) { return *msg->rowexpr_; } TableFunc::TableFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), ns_uris_(arena), ns_names_(arena), colnames_(arena), coltypes_(arena), coltypmods_(arena), colcollations_(arena), colexprs_(arena), coldefexprs_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TableFunc) } TableFunc::TableFunc(const TableFunc& from) : ::PROTOBUF_NAMESPACE_ID::Message(), ns_uris_(from.ns_uris_), ns_names_(from.ns_names_), colnames_(from.colnames_), coltypes_(from.coltypes_), coltypmods_(from.coltypmods_), colcollations_(from.colcollations_), colexprs_(from.colexprs_), coldefexprs_(from.coldefexprs_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_docexpr()) { docexpr_ = new ::pg_query::Node(*from.docexpr_); } else { docexpr_ = nullptr; } if (from._internal_has_rowexpr()) { rowexpr_ = new ::pg_query::Node(*from.rowexpr_); } else { rowexpr_ = nullptr; } ::memcpy(&ordinalitycol_, &from.ordinalitycol_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&ordinalitycol_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.TableFunc) } void TableFunc::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&docexpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&docexpr_)) + sizeof(location_)); } TableFunc::~TableFunc() { // @@protoc_insertion_point(destructor:pg_query.TableFunc) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void TableFunc::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete docexpr_; if (this != internal_default_instance()) delete rowexpr_; } void TableFunc::ArenaDtor(void* object) { TableFunc* _this = reinterpret_cast< TableFunc* >(object); (void)_this; } void TableFunc::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void TableFunc::SetCachedSize(int size) const { _cached_size_.Set(size); } const TableFunc& TableFunc::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void TableFunc::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TableFunc) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ns_uris_.Clear(); ns_names_.Clear(); colnames_.Clear(); coltypes_.Clear(); coltypmods_.Clear(); colcollations_.Clear(); colexprs_.Clear(); coldefexprs_.Clear(); if (GetArena() == nullptr && docexpr_ != nullptr) { delete docexpr_; } docexpr_ = nullptr; if (GetArena() == nullptr && rowexpr_ != nullptr) { delete rowexpr_; } rowexpr_ = nullptr; ::memset(&ordinalitycol_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&ordinalitycol_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* TableFunc::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node ns_uris = 1 [json_name = "ns_uris"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_ns_uris(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node ns_names = 2 [json_name = "ns_names"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_ns_names(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node docexpr = 3 [json_name = "docexpr"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_docexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node rowexpr = 4 [json_name = "rowexpr"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_rowexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_colnames(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node coltypes = 6 [json_name = "coltypes"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_coltypes(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node coltypmods = 7 [json_name = "coltypmods"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_coltypmods(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node colcollations = 8 [json_name = "colcollations"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_colcollations(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node colexprs = 9 [json_name = "colexprs"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_colexprs(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node coldefexprs = 10 [json_name = "coldefexprs"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_coldefexprs(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr)); } else goto handle_unusual; continue; // int32 ordinalitycol = 11 [json_name = "ordinalitycol"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) { ordinalitycol_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 12 [json_name = "location"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 96)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* TableFunc::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TableFunc) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node ns_uris = 1 [json_name = "ns_uris"]; for (unsigned int i = 0, n = static_cast(this->_internal_ns_uris_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_ns_uris(i), target, stream); } // repeated .pg_query.Node ns_names = 2 [json_name = "ns_names"]; for (unsigned int i = 0, n = static_cast(this->_internal_ns_names_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_ns_names(i), target, stream); } // .pg_query.Node docexpr = 3 [json_name = "docexpr"]; if (this->has_docexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::docexpr(this), target, stream); } // .pg_query.Node rowexpr = 4 [json_name = "rowexpr"]; if (this->has_rowexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::rowexpr(this), target, stream); } // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; for (unsigned int i = 0, n = static_cast(this->_internal_colnames_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_colnames(i), target, stream); } // repeated .pg_query.Node coltypes = 6 [json_name = "coltypes"]; for (unsigned int i = 0, n = static_cast(this->_internal_coltypes_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_coltypes(i), target, stream); } // repeated .pg_query.Node coltypmods = 7 [json_name = "coltypmods"]; for (unsigned int i = 0, n = static_cast(this->_internal_coltypmods_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(7, this->_internal_coltypmods(i), target, stream); } // repeated .pg_query.Node colcollations = 8 [json_name = "colcollations"]; for (unsigned int i = 0, n = static_cast(this->_internal_colcollations_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_colcollations(i), target, stream); } // repeated .pg_query.Node colexprs = 9 [json_name = "colexprs"]; for (unsigned int i = 0, n = static_cast(this->_internal_colexprs_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(9, this->_internal_colexprs(i), target, stream); } // repeated .pg_query.Node coldefexprs = 10 [json_name = "coldefexprs"]; for (unsigned int i = 0, n = static_cast(this->_internal_coldefexprs_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(10, this->_internal_coldefexprs(i), target, stream); } // int32 ordinalitycol = 11 [json_name = "ordinalitycol"]; if (this->ordinalitycol() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(11, this->_internal_ordinalitycol(), target); } // int32 location = 12 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(12, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.TableFunc) return target; } size_t TableFunc::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.TableFunc) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node ns_uris = 1 [json_name = "ns_uris"]; total_size += 1UL * this->_internal_ns_uris_size(); for (const auto& msg : this->ns_uris_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node ns_names = 2 [json_name = "ns_names"]; total_size += 1UL * this->_internal_ns_names_size(); for (const auto& msg : this->ns_names_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; total_size += 1UL * this->_internal_colnames_size(); for (const auto& msg : this->colnames_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coltypes = 6 [json_name = "coltypes"]; total_size += 1UL * this->_internal_coltypes_size(); for (const auto& msg : this->coltypes_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coltypmods = 7 [json_name = "coltypmods"]; total_size += 1UL * this->_internal_coltypmods_size(); for (const auto& msg : this->coltypmods_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node colcollations = 8 [json_name = "colcollations"]; total_size += 1UL * this->_internal_colcollations_size(); for (const auto& msg : this->colcollations_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node colexprs = 9 [json_name = "colexprs"]; total_size += 1UL * this->_internal_colexprs_size(); for (const auto& msg : this->colexprs_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coldefexprs = 10 [json_name = "coldefexprs"]; total_size += 1UL * this->_internal_coldefexprs_size(); for (const auto& msg : this->coldefexprs_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node docexpr = 3 [json_name = "docexpr"]; if (this->has_docexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *docexpr_); } // .pg_query.Node rowexpr = 4 [json_name = "rowexpr"]; if (this->has_rowexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *rowexpr_); } // int32 ordinalitycol = 11 [json_name = "ordinalitycol"]; if (this->ordinalitycol() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_ordinalitycol()); } // int32 location = 12 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void TableFunc::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.TableFunc) GOOGLE_DCHECK_NE(&from, this); const TableFunc* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.TableFunc) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.TableFunc) MergeFrom(*source); } } void TableFunc::MergeFrom(const TableFunc& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TableFunc) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; ns_uris_.MergeFrom(from.ns_uris_); ns_names_.MergeFrom(from.ns_names_); colnames_.MergeFrom(from.colnames_); coltypes_.MergeFrom(from.coltypes_); coltypmods_.MergeFrom(from.coltypmods_); colcollations_.MergeFrom(from.colcollations_); colexprs_.MergeFrom(from.colexprs_); coldefexprs_.MergeFrom(from.coldefexprs_); if (from.has_docexpr()) { _internal_mutable_docexpr()->::pg_query::Node::MergeFrom(from._internal_docexpr()); } if (from.has_rowexpr()) { _internal_mutable_rowexpr()->::pg_query::Node::MergeFrom(from._internal_rowexpr()); } if (from.ordinalitycol() != 0) { _internal_set_ordinalitycol(from._internal_ordinalitycol()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void TableFunc::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.TableFunc) if (&from == this) return; Clear(); MergeFrom(from); } void TableFunc::CopyFrom(const TableFunc& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TableFunc) if (&from == this) return; Clear(); MergeFrom(from); } bool TableFunc::IsInitialized() const { return true; } void TableFunc::InternalSwap(TableFunc* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ns_uris_.InternalSwap(&other->ns_uris_); ns_names_.InternalSwap(&other->ns_names_); colnames_.InternalSwap(&other->colnames_); coltypes_.InternalSwap(&other->coltypes_); coltypmods_.InternalSwap(&other->coltypmods_); colcollations_.InternalSwap(&other->colcollations_); colexprs_.InternalSwap(&other->colexprs_); coldefexprs_.InternalSwap(&other->coldefexprs_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(TableFunc, location_) + sizeof(TableFunc::location_) - PROTOBUF_FIELD_OFFSET(TableFunc, docexpr_)>( reinterpret_cast(&docexpr_), reinterpret_cast(&other->docexpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata TableFunc::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Expr::_Internal { public: }; Expr::Expr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Expr) } Expr::Expr(const Expr& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.Expr) } void Expr::SharedCtor() { } Expr::~Expr() { // @@protoc_insertion_point(destructor:pg_query.Expr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Expr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void Expr::ArenaDtor(void* object) { Expr* _this = reinterpret_cast< Expr* >(object); (void)_this; } void Expr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Expr::SetCachedSize(int size) const { _cached_size_.Set(size); } const Expr& Expr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Expr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Expr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Expr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Expr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Expr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Expr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Expr) return target; } size_t Expr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Expr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Expr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Expr) GOOGLE_DCHECK_NE(&from, this); const Expr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Expr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Expr) MergeFrom(*source); } } void Expr::MergeFrom(const Expr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Expr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; } void Expr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Expr) if (&from == this) return; Clear(); MergeFrom(from); } void Expr::CopyFrom(const Expr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Expr) if (&from == this) return; Clear(); MergeFrom(from); } bool Expr::IsInitialized() const { return true; } void Expr::InternalSwap(Expr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); } ::PROTOBUF_NAMESPACE_ID::Metadata Expr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Var::_Internal { public: static const ::pg_query::Node& xpr(const Var* msg); }; const ::pg_query::Node& Var::_Internal::xpr(const Var* msg) { return *msg->xpr_; } Var::Var(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Var) } Var::Var(const Var& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&varno_, &from.varno_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&varno_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.Var) } void Var::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } Var::~Var() { // @@protoc_insertion_point(destructor:pg_query.Var) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Var::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void Var::ArenaDtor(void* object) { Var* _this = reinterpret_cast< Var* >(object); (void)_this; } void Var::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Var::SetCachedSize(int size) const { _cached_size_.Set(size); } const Var& Var::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Var::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Var) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&varno_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&varno_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Var::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 varno = 2 [json_name = "varno"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { varno_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 varattno = 3 [json_name = "varattno"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { varattno_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 vartype = 4 [json_name = "vartype"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { vartype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 vartypmod = 5 [json_name = "vartypmod"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { vartypmod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 varcollid = 6 [json_name = "varcollid"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { varcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 varlevelsup = 7 [json_name = "varlevelsup"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { varlevelsup_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 varnosyn = 8 [json_name = "varnosyn"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { varnosyn_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 varattnosyn = 9 [json_name = "varattnosyn"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { varattnosyn_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 10 [json_name = "location"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Var::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Var) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 varno = 2 [json_name = "varno"]; if (this->varno() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_varno(), target); } // int32 varattno = 3 [json_name = "varattno"]; if (this->varattno() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_varattno(), target); } // uint32 vartype = 4 [json_name = "vartype"]; if (this->vartype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_vartype(), target); } // int32 vartypmod = 5 [json_name = "vartypmod"]; if (this->vartypmod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_vartypmod(), target); } // uint32 varcollid = 6 [json_name = "varcollid"]; if (this->varcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(6, this->_internal_varcollid(), target); } // uint32 varlevelsup = 7 [json_name = "varlevelsup"]; if (this->varlevelsup() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(7, this->_internal_varlevelsup(), target); } // uint32 varnosyn = 8 [json_name = "varnosyn"]; if (this->varnosyn() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(8, this->_internal_varnosyn(), target); } // int32 varattnosyn = 9 [json_name = "varattnosyn"]; if (this->varattnosyn() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(9, this->_internal_varattnosyn(), target); } // int32 location = 10 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(10, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Var) return target; } size_t Var::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Var) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 varno = 2 [json_name = "varno"]; if (this->varno() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_varno()); } // int32 varattno = 3 [json_name = "varattno"]; if (this->varattno() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_varattno()); } // uint32 vartype = 4 [json_name = "vartype"]; if (this->vartype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_vartype()); } // int32 vartypmod = 5 [json_name = "vartypmod"]; if (this->vartypmod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_vartypmod()); } // uint32 varcollid = 6 [json_name = "varcollid"]; if (this->varcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_varcollid()); } // uint32 varlevelsup = 7 [json_name = "varlevelsup"]; if (this->varlevelsup() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_varlevelsup()); } // uint32 varnosyn = 8 [json_name = "varnosyn"]; if (this->varnosyn() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_varnosyn()); } // int32 varattnosyn = 9 [json_name = "varattnosyn"]; if (this->varattnosyn() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_varattnosyn()); } // int32 location = 10 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Var::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Var) GOOGLE_DCHECK_NE(&from, this); const Var* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Var) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Var) MergeFrom(*source); } } void Var::MergeFrom(const Var& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Var) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.varno() != 0) { _internal_set_varno(from._internal_varno()); } if (from.varattno() != 0) { _internal_set_varattno(from._internal_varattno()); } if (from.vartype() != 0) { _internal_set_vartype(from._internal_vartype()); } if (from.vartypmod() != 0) { _internal_set_vartypmod(from._internal_vartypmod()); } if (from.varcollid() != 0) { _internal_set_varcollid(from._internal_varcollid()); } if (from.varlevelsup() != 0) { _internal_set_varlevelsup(from._internal_varlevelsup()); } if (from.varnosyn() != 0) { _internal_set_varnosyn(from._internal_varnosyn()); } if (from.varattnosyn() != 0) { _internal_set_varattnosyn(from._internal_varattnosyn()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void Var::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Var) if (&from == this) return; Clear(); MergeFrom(from); } void Var::CopyFrom(const Var& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Var) if (&from == this) return; Clear(); MergeFrom(from); } bool Var::IsInitialized() const { return true; } void Var::InternalSwap(Var* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(Var, location_) + sizeof(Var::location_) - PROTOBUF_FIELD_OFFSET(Var, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata Var::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Param::_Internal { public: static const ::pg_query::Node& xpr(const Param* msg); }; const ::pg_query::Node& Param::_Internal::xpr(const Param* msg) { return *msg->xpr_; } Param::Param(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Param) } Param::Param(const Param& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(¶mkind_, &from.paramkind_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(¶mkind_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.Param) } void Param::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } Param::~Param() { // @@protoc_insertion_point(destructor:pg_query.Param) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Param::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void Param::ArenaDtor(void* object) { Param* _this = reinterpret_cast< Param* >(object); (void)_this; } void Param::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Param::SetCachedSize(int size) const { _cached_size_.Set(size); } const Param& Param::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Param::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Param) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(¶mkind_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(¶mkind_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Param::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_paramkind(static_cast<::pg_query::ParamKind>(val)); } else goto handle_unusual; continue; // int32 paramid = 3 [json_name = "paramid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { paramid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 paramtype = 4 [json_name = "paramtype"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { paramtype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 paramtypmod = 5 [json_name = "paramtypmod"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { paramtypmod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 paramcollid = 6 [json_name = "paramcollid"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { paramcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Param::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Param) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; if (this->paramkind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_paramkind(), target); } // int32 paramid = 3 [json_name = "paramid"]; if (this->paramid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_paramid(), target); } // uint32 paramtype = 4 [json_name = "paramtype"]; if (this->paramtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_paramtype(), target); } // int32 paramtypmod = 5 [json_name = "paramtypmod"]; if (this->paramtypmod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_paramtypmod(), target); } // uint32 paramcollid = 6 [json_name = "paramcollid"]; if (this->paramcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(6, this->_internal_paramcollid(), target); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Param) return target; } size_t Param::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Param) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; if (this->paramkind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_paramkind()); } // int32 paramid = 3 [json_name = "paramid"]; if (this->paramid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_paramid()); } // uint32 paramtype = 4 [json_name = "paramtype"]; if (this->paramtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_paramtype()); } // int32 paramtypmod = 5 [json_name = "paramtypmod"]; if (this->paramtypmod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_paramtypmod()); } // uint32 paramcollid = 6 [json_name = "paramcollid"]; if (this->paramcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_paramcollid()); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Param::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Param) GOOGLE_DCHECK_NE(&from, this); const Param* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Param) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Param) MergeFrom(*source); } } void Param::MergeFrom(const Param& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Param) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.paramkind() != 0) { _internal_set_paramkind(from._internal_paramkind()); } if (from.paramid() != 0) { _internal_set_paramid(from._internal_paramid()); } if (from.paramtype() != 0) { _internal_set_paramtype(from._internal_paramtype()); } if (from.paramtypmod() != 0) { _internal_set_paramtypmod(from._internal_paramtypmod()); } if (from.paramcollid() != 0) { _internal_set_paramcollid(from._internal_paramcollid()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void Param::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Param) if (&from == this) return; Clear(); MergeFrom(from); } void Param::CopyFrom(const Param& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Param) if (&from == this) return; Clear(); MergeFrom(from); } bool Param::IsInitialized() const { return true; } void Param::InternalSwap(Param* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(Param, location_) + sizeof(Param::location_) - PROTOBUF_FIELD_OFFSET(Param, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata Param::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Aggref::_Internal { public: static const ::pg_query::Node& xpr(const Aggref* msg); static const ::pg_query::Node& aggfilter(const Aggref* msg); }; const ::pg_query::Node& Aggref::_Internal::xpr(const Aggref* msg) { return *msg->xpr_; } const ::pg_query::Node& Aggref::_Internal::aggfilter(const Aggref* msg) { return *msg->aggfilter_; } Aggref::Aggref(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), aggargtypes_(arena), aggdirectargs_(arena), args_(arena), aggorder_(arena), aggdistinct_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Aggref) } Aggref::Aggref(const Aggref& from) : ::PROTOBUF_NAMESPACE_ID::Message(), aggargtypes_(from.aggargtypes_), aggdirectargs_(from.aggdirectargs_), args_(from.args_), aggorder_(from.aggorder_), aggdistinct_(from.aggdistinct_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); aggkind_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_aggkind().empty()) { aggkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_aggkind(), GetArena()); } if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_aggfilter()) { aggfilter_ = new ::pg_query::Node(*from.aggfilter_); } else { aggfilter_ = nullptr; } ::memcpy(&aggfnoid_, &from.aggfnoid_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&aggfnoid_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.Aggref) } void Aggref::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); aggkind_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } Aggref::~Aggref() { // @@protoc_insertion_point(destructor:pg_query.Aggref) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Aggref::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); aggkind_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete aggfilter_; } void Aggref::ArenaDtor(void* object) { Aggref* _this = reinterpret_cast< Aggref* >(object); (void)_this; } void Aggref::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Aggref::SetCachedSize(int size) const { _cached_size_.Set(size); } const Aggref& Aggref::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Aggref::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Aggref) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; aggargtypes_.Clear(); aggdirectargs_.Clear(); args_.Clear(); aggorder_.Clear(); aggdistinct_.Clear(); aggkind_.ClearToEmpty(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && aggfilter_ != nullptr) { delete aggfilter_; } aggfilter_ = nullptr; ::memset(&aggfnoid_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&aggfnoid_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Aggref::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { aggfnoid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 aggtype = 3 [json_name = "aggtype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { aggtype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 aggcollid = 4 [json_name = "aggcollid"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { aggcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 inputcollid = 5 [json_name = "inputcollid"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { inputcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 aggtranstype = 6 [json_name = "aggtranstype"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { aggtranstype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node aggargtypes = 7 [json_name = "aggargtypes"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_aggargtypes(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node aggdirectargs = 8 [json_name = "aggdirectargs"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_aggdirectargs(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 9 [json_name = "args"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node aggorder = 10 [json_name = "aggorder"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_aggorder(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node aggdistinct = 11 [json_name = "aggdistinct"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_aggdistinct(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<90>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node aggfilter = 12 [json_name = "aggfilter"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr = ctx->ParseMessage(_internal_mutable_aggfilter(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool aggstar = 13 [json_name = "aggstar"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 104)) { aggstar_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool aggvariadic = 14 [json_name = "aggvariadic"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 112)) { aggvariadic_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string aggkind = 15 [json_name = "aggkind"]; case 15: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { auto str = _internal_mutable_aggkind(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Aggref.aggkind")); CHK_(ptr); } else goto handle_unusual; continue; // uint32 agglevelsup = 16 [json_name = "agglevelsup"]; case 16: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 128)) { agglevelsup_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.AggSplit aggsplit = 17 [json_name = "aggsplit"]; case 17: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 136)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_aggsplit(static_cast<::pg_query::AggSplit>(val)); } else goto handle_unusual; continue; // int32 location = 18 [json_name = "location"]; case 18: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 144)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Aggref::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Aggref) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; if (this->aggfnoid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_aggfnoid(), target); } // uint32 aggtype = 3 [json_name = "aggtype"]; if (this->aggtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_aggtype(), target); } // uint32 aggcollid = 4 [json_name = "aggcollid"]; if (this->aggcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_aggcollid(), target); } // uint32 inputcollid = 5 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(5, this->_internal_inputcollid(), target); } // uint32 aggtranstype = 6 [json_name = "aggtranstype"]; if (this->aggtranstype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(6, this->_internal_aggtranstype(), target); } // repeated .pg_query.Node aggargtypes = 7 [json_name = "aggargtypes"]; for (unsigned int i = 0, n = static_cast(this->_internal_aggargtypes_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(7, this->_internal_aggargtypes(i), target, stream); } // repeated .pg_query.Node aggdirectargs = 8 [json_name = "aggdirectargs"]; for (unsigned int i = 0, n = static_cast(this->_internal_aggdirectargs_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_aggdirectargs(i), target, stream); } // repeated .pg_query.Node args = 9 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(9, this->_internal_args(i), target, stream); } // repeated .pg_query.Node aggorder = 10 [json_name = "aggorder"]; for (unsigned int i = 0, n = static_cast(this->_internal_aggorder_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(10, this->_internal_aggorder(i), target, stream); } // repeated .pg_query.Node aggdistinct = 11 [json_name = "aggdistinct"]; for (unsigned int i = 0, n = static_cast(this->_internal_aggdistinct_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(11, this->_internal_aggdistinct(i), target, stream); } // .pg_query.Node aggfilter = 12 [json_name = "aggfilter"]; if (this->has_aggfilter()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 12, _Internal::aggfilter(this), target, stream); } // bool aggstar = 13 [json_name = "aggstar"]; if (this->aggstar() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(13, this->_internal_aggstar(), target); } // bool aggvariadic = 14 [json_name = "aggvariadic"]; if (this->aggvariadic() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(14, this->_internal_aggvariadic(), target); } // string aggkind = 15 [json_name = "aggkind"]; if (this->aggkind().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_aggkind().data(), static_cast(this->_internal_aggkind().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Aggref.aggkind"); target = stream->WriteStringMaybeAliased( 15, this->_internal_aggkind(), target); } // uint32 agglevelsup = 16 [json_name = "agglevelsup"]; if (this->agglevelsup() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(16, this->_internal_agglevelsup(), target); } // .pg_query.AggSplit aggsplit = 17 [json_name = "aggsplit"]; if (this->aggsplit() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 17, this->_internal_aggsplit(), target); } // int32 location = 18 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(18, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Aggref) return target; } size_t Aggref::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Aggref) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node aggargtypes = 7 [json_name = "aggargtypes"]; total_size += 1UL * this->_internal_aggargtypes_size(); for (const auto& msg : this->aggargtypes_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node aggdirectargs = 8 [json_name = "aggdirectargs"]; total_size += 1UL * this->_internal_aggdirectargs_size(); for (const auto& msg : this->aggdirectargs_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node args = 9 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node aggorder = 10 [json_name = "aggorder"]; total_size += 1UL * this->_internal_aggorder_size(); for (const auto& msg : this->aggorder_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node aggdistinct = 11 [json_name = "aggdistinct"]; total_size += 1UL * this->_internal_aggdistinct_size(); for (const auto& msg : this->aggdistinct_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string aggkind = 15 [json_name = "aggkind"]; if (this->aggkind().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_aggkind()); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node aggfilter = 12 [json_name = "aggfilter"]; if (this->has_aggfilter()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *aggfilter_); } // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; if (this->aggfnoid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_aggfnoid()); } // uint32 aggtype = 3 [json_name = "aggtype"]; if (this->aggtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_aggtype()); } // uint32 aggcollid = 4 [json_name = "aggcollid"]; if (this->aggcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_aggcollid()); } // uint32 inputcollid = 5 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_inputcollid()); } // uint32 aggtranstype = 6 [json_name = "aggtranstype"]; if (this->aggtranstype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_aggtranstype()); } // bool aggstar = 13 [json_name = "aggstar"]; if (this->aggstar() != 0) { total_size += 1 + 1; } // bool aggvariadic = 14 [json_name = "aggvariadic"]; if (this->aggvariadic() != 0) { total_size += 1 + 1; } // uint32 agglevelsup = 16 [json_name = "agglevelsup"]; if (this->agglevelsup() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_agglevelsup()); } // .pg_query.AggSplit aggsplit = 17 [json_name = "aggsplit"]; if (this->aggsplit() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_aggsplit()); } // int32 location = 18 [json_name = "location"]; if (this->location() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Aggref::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Aggref) GOOGLE_DCHECK_NE(&from, this); const Aggref* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Aggref) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Aggref) MergeFrom(*source); } } void Aggref::MergeFrom(const Aggref& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Aggref) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; aggargtypes_.MergeFrom(from.aggargtypes_); aggdirectargs_.MergeFrom(from.aggdirectargs_); args_.MergeFrom(from.args_); aggorder_.MergeFrom(from.aggorder_); aggdistinct_.MergeFrom(from.aggdistinct_); if (from.aggkind().size() > 0) { _internal_set_aggkind(from._internal_aggkind()); } if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_aggfilter()) { _internal_mutable_aggfilter()->::pg_query::Node::MergeFrom(from._internal_aggfilter()); } if (from.aggfnoid() != 0) { _internal_set_aggfnoid(from._internal_aggfnoid()); } if (from.aggtype() != 0) { _internal_set_aggtype(from._internal_aggtype()); } if (from.aggcollid() != 0) { _internal_set_aggcollid(from._internal_aggcollid()); } if (from.inputcollid() != 0) { _internal_set_inputcollid(from._internal_inputcollid()); } if (from.aggtranstype() != 0) { _internal_set_aggtranstype(from._internal_aggtranstype()); } if (from.aggstar() != 0) { _internal_set_aggstar(from._internal_aggstar()); } if (from.aggvariadic() != 0) { _internal_set_aggvariadic(from._internal_aggvariadic()); } if (from.agglevelsup() != 0) { _internal_set_agglevelsup(from._internal_agglevelsup()); } if (from.aggsplit() != 0) { _internal_set_aggsplit(from._internal_aggsplit()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void Aggref::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Aggref) if (&from == this) return; Clear(); MergeFrom(from); } void Aggref::CopyFrom(const Aggref& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Aggref) if (&from == this) return; Clear(); MergeFrom(from); } bool Aggref::IsInitialized() const { return true; } void Aggref::InternalSwap(Aggref* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); aggargtypes_.InternalSwap(&other->aggargtypes_); aggdirectargs_.InternalSwap(&other->aggdirectargs_); args_.InternalSwap(&other->args_); aggorder_.InternalSwap(&other->aggorder_); aggdistinct_.InternalSwap(&other->aggdistinct_); aggkind_.Swap(&other->aggkind_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(Aggref, location_) + sizeof(Aggref::location_) - PROTOBUF_FIELD_OFFSET(Aggref, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata Aggref::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class GroupingFunc::_Internal { public: static const ::pg_query::Node& xpr(const GroupingFunc* msg); }; const ::pg_query::Node& GroupingFunc::_Internal::xpr(const GroupingFunc* msg) { return *msg->xpr_; } GroupingFunc::GroupingFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena), refs_(arena), cols_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.GroupingFunc) } GroupingFunc::GroupingFunc(const GroupingFunc& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_), refs_(from.refs_), cols_(from.cols_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&agglevelsup_, &from.agglevelsup_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&agglevelsup_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.GroupingFunc) } void GroupingFunc::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } GroupingFunc::~GroupingFunc() { // @@protoc_insertion_point(destructor:pg_query.GroupingFunc) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void GroupingFunc::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void GroupingFunc::ArenaDtor(void* object) { GroupingFunc* _this = reinterpret_cast< GroupingFunc* >(object); (void)_this; } void GroupingFunc::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void GroupingFunc::SetCachedSize(int size) const { _cached_size_.Set(size); } const GroupingFunc& GroupingFunc::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void GroupingFunc::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.GroupingFunc) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); refs_.Clear(); cols_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&agglevelsup_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&agglevelsup_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* GroupingFunc::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 2 [json_name = "args"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node refs = 3 [json_name = "refs"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_refs(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node cols = 4 [json_name = "cols"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_cols(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // uint32 agglevelsup = 5 [json_name = "agglevelsup"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { agglevelsup_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 6 [json_name = "location"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* GroupingFunc::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.GroupingFunc) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // repeated .pg_query.Node args = 2 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_args(i), target, stream); } // repeated .pg_query.Node refs = 3 [json_name = "refs"]; for (unsigned int i = 0, n = static_cast(this->_internal_refs_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_refs(i), target, stream); } // repeated .pg_query.Node cols = 4 [json_name = "cols"]; for (unsigned int i = 0, n = static_cast(this->_internal_cols_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_cols(i), target, stream); } // uint32 agglevelsup = 5 [json_name = "agglevelsup"]; if (this->agglevelsup() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(5, this->_internal_agglevelsup(), target); } // int32 location = 6 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(6, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.GroupingFunc) return target; } size_t GroupingFunc::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.GroupingFunc) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 2 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node refs = 3 [json_name = "refs"]; total_size += 1UL * this->_internal_refs_size(); for (const auto& msg : this->refs_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node cols = 4 [json_name = "cols"]; total_size += 1UL * this->_internal_cols_size(); for (const auto& msg : this->cols_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 agglevelsup = 5 [json_name = "agglevelsup"]; if (this->agglevelsup() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_agglevelsup()); } // int32 location = 6 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void GroupingFunc::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.GroupingFunc) GOOGLE_DCHECK_NE(&from, this); const GroupingFunc* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.GroupingFunc) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.GroupingFunc) MergeFrom(*source); } } void GroupingFunc::MergeFrom(const GroupingFunc& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.GroupingFunc) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); refs_.MergeFrom(from.refs_); cols_.MergeFrom(from.cols_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.agglevelsup() != 0) { _internal_set_agglevelsup(from._internal_agglevelsup()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void GroupingFunc::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.GroupingFunc) if (&from == this) return; Clear(); MergeFrom(from); } void GroupingFunc::CopyFrom(const GroupingFunc& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.GroupingFunc) if (&from == this) return; Clear(); MergeFrom(from); } bool GroupingFunc::IsInitialized() const { return true; } void GroupingFunc::InternalSwap(GroupingFunc* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); refs_.InternalSwap(&other->refs_); cols_.InternalSwap(&other->cols_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(GroupingFunc, location_) + sizeof(GroupingFunc::location_) - PROTOBUF_FIELD_OFFSET(GroupingFunc, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata GroupingFunc::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class WindowFunc::_Internal { public: static const ::pg_query::Node& xpr(const WindowFunc* msg); static const ::pg_query::Node& aggfilter(const WindowFunc* msg); }; const ::pg_query::Node& WindowFunc::_Internal::xpr(const WindowFunc* msg) { return *msg->xpr_; } const ::pg_query::Node& WindowFunc::_Internal::aggfilter(const WindowFunc* msg) { return *msg->aggfilter_; } WindowFunc::WindowFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WindowFunc) } WindowFunc::WindowFunc(const WindowFunc& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_aggfilter()) { aggfilter_ = new ::pg_query::Node(*from.aggfilter_); } else { aggfilter_ = nullptr; } ::memcpy(&winfnoid_, &from.winfnoid_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&winfnoid_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.WindowFunc) } void WindowFunc::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } WindowFunc::~WindowFunc() { // @@protoc_insertion_point(destructor:pg_query.WindowFunc) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void WindowFunc::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete aggfilter_; } void WindowFunc::ArenaDtor(void* object) { WindowFunc* _this = reinterpret_cast< WindowFunc* >(object); (void)_this; } void WindowFunc::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void WindowFunc::SetCachedSize(int size) const { _cached_size_.Set(size); } const WindowFunc& WindowFunc::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void WindowFunc::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WindowFunc) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && aggfilter_ != nullptr) { delete aggfilter_; } aggfilter_ = nullptr; ::memset(&winfnoid_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&winfnoid_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* WindowFunc::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 winfnoid = 2 [json_name = "winfnoid"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { winfnoid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 wintype = 3 [json_name = "wintype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { wintype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 wincollid = 4 [json_name = "wincollid"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { wincollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 inputcollid = 5 [json_name = "inputcollid"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { inputcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 6 [json_name = "args"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_aggfilter(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 winref = 8 [json_name = "winref"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { winref_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool winstar = 9 [json_name = "winstar"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { winstar_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool winagg = 10 [json_name = "winagg"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { winagg_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 11 [json_name = "location"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* WindowFunc::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WindowFunc) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 winfnoid = 2 [json_name = "winfnoid"]; if (this->winfnoid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_winfnoid(), target); } // uint32 wintype = 3 [json_name = "wintype"]; if (this->wintype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_wintype(), target); } // uint32 wincollid = 4 [json_name = "wincollid"]; if (this->wincollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_wincollid(), target); } // uint32 inputcollid = 5 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(5, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 6 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_args(i), target, stream); } // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; if (this->has_aggfilter()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 7, _Internal::aggfilter(this), target, stream); } // uint32 winref = 8 [json_name = "winref"]; if (this->winref() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(8, this->_internal_winref(), target); } // bool winstar = 9 [json_name = "winstar"]; if (this->winstar() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(9, this->_internal_winstar(), target); } // bool winagg = 10 [json_name = "winagg"]; if (this->winagg() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(10, this->_internal_winagg(), target); } // int32 location = 11 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(11, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.WindowFunc) return target; } size_t WindowFunc::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.WindowFunc) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 6 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; if (this->has_aggfilter()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *aggfilter_); } // uint32 winfnoid = 2 [json_name = "winfnoid"]; if (this->winfnoid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_winfnoid()); } // uint32 wintype = 3 [json_name = "wintype"]; if (this->wintype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_wintype()); } // uint32 wincollid = 4 [json_name = "wincollid"]; if (this->wincollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_wincollid()); } // uint32 inputcollid = 5 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_inputcollid()); } // uint32 winref = 8 [json_name = "winref"]; if (this->winref() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_winref()); } // bool winstar = 9 [json_name = "winstar"]; if (this->winstar() != 0) { total_size += 1 + 1; } // bool winagg = 10 [json_name = "winagg"]; if (this->winagg() != 0) { total_size += 1 + 1; } // int32 location = 11 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void WindowFunc::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.WindowFunc) GOOGLE_DCHECK_NE(&from, this); const WindowFunc* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.WindowFunc) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.WindowFunc) MergeFrom(*source); } } void WindowFunc::MergeFrom(const WindowFunc& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WindowFunc) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_aggfilter()) { _internal_mutable_aggfilter()->::pg_query::Node::MergeFrom(from._internal_aggfilter()); } if (from.winfnoid() != 0) { _internal_set_winfnoid(from._internal_winfnoid()); } if (from.wintype() != 0) { _internal_set_wintype(from._internal_wintype()); } if (from.wincollid() != 0) { _internal_set_wincollid(from._internal_wincollid()); } if (from.inputcollid() != 0) { _internal_set_inputcollid(from._internal_inputcollid()); } if (from.winref() != 0) { _internal_set_winref(from._internal_winref()); } if (from.winstar() != 0) { _internal_set_winstar(from._internal_winstar()); } if (from.winagg() != 0) { _internal_set_winagg(from._internal_winagg()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void WindowFunc::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.WindowFunc) if (&from == this) return; Clear(); MergeFrom(from); } void WindowFunc::CopyFrom(const WindowFunc& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WindowFunc) if (&from == this) return; Clear(); MergeFrom(from); } bool WindowFunc::IsInitialized() const { return true; } void WindowFunc::InternalSwap(WindowFunc* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(WindowFunc, location_) + sizeof(WindowFunc::location_) - PROTOBUF_FIELD_OFFSET(WindowFunc, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata WindowFunc::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class SubscriptingRef::_Internal { public: static const ::pg_query::Node& xpr(const SubscriptingRef* msg); static const ::pg_query::Node& refexpr(const SubscriptingRef* msg); static const ::pg_query::Node& refassgnexpr(const SubscriptingRef* msg); }; const ::pg_query::Node& SubscriptingRef::_Internal::xpr(const SubscriptingRef* msg) { return *msg->xpr_; } const ::pg_query::Node& SubscriptingRef::_Internal::refexpr(const SubscriptingRef* msg) { return *msg->refexpr_; } const ::pg_query::Node& SubscriptingRef::_Internal::refassgnexpr(const SubscriptingRef* msg) { return *msg->refassgnexpr_; } SubscriptingRef::SubscriptingRef(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), refupperindexpr_(arena), reflowerindexpr_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SubscriptingRef) } SubscriptingRef::SubscriptingRef(const SubscriptingRef& from) : ::PROTOBUF_NAMESPACE_ID::Message(), refupperindexpr_(from.refupperindexpr_), reflowerindexpr_(from.reflowerindexpr_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_refexpr()) { refexpr_ = new ::pg_query::Node(*from.refexpr_); } else { refexpr_ = nullptr; } if (from._internal_has_refassgnexpr()) { refassgnexpr_ = new ::pg_query::Node(*from.refassgnexpr_); } else { refassgnexpr_ = nullptr; } ::memcpy(&refcontainertype_, &from.refcontainertype_, static_cast(reinterpret_cast(&refcollid_) - reinterpret_cast(&refcontainertype_)) + sizeof(refcollid_)); // @@protoc_insertion_point(copy_constructor:pg_query.SubscriptingRef) } void SubscriptingRef::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&refcollid_) - reinterpret_cast(&xpr_)) + sizeof(refcollid_)); } SubscriptingRef::~SubscriptingRef() { // @@protoc_insertion_point(destructor:pg_query.SubscriptingRef) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void SubscriptingRef::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete refexpr_; if (this != internal_default_instance()) delete refassgnexpr_; } void SubscriptingRef::ArenaDtor(void* object) { SubscriptingRef* _this = reinterpret_cast< SubscriptingRef* >(object); (void)_this; } void SubscriptingRef::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void SubscriptingRef::SetCachedSize(int size) const { _cached_size_.Set(size); } const SubscriptingRef& SubscriptingRef::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void SubscriptingRef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SubscriptingRef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; refupperindexpr_.Clear(); reflowerindexpr_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && refexpr_ != nullptr) { delete refexpr_; } refexpr_ = nullptr; if (GetArena() == nullptr && refassgnexpr_ != nullptr) { delete refassgnexpr_; } refassgnexpr_ = nullptr; ::memset(&refcontainertype_, 0, static_cast( reinterpret_cast(&refcollid_) - reinterpret_cast(&refcontainertype_)) + sizeof(refcollid_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* SubscriptingRef::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { refcontainertype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 refelemtype = 3 [json_name = "refelemtype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { refelemtype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 reftypmod = 4 [json_name = "reftypmod"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { reftypmod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 refcollid = 5 [json_name = "refcollid"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { refcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node refupperindexpr = 6 [json_name = "refupperindexpr"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_refupperindexpr(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node reflowerindexpr = 7 [json_name = "reflowerindexpr"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_reflowerindexpr(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node refexpr = 8 [json_name = "refexpr"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_refexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node refassgnexpr = 9 [json_name = "refassgnexpr"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_refassgnexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* SubscriptingRef::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SubscriptingRef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; if (this->refcontainertype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_refcontainertype(), target); } // uint32 refelemtype = 3 [json_name = "refelemtype"]; if (this->refelemtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_refelemtype(), target); } // int32 reftypmod = 4 [json_name = "reftypmod"]; if (this->reftypmod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_reftypmod(), target); } // uint32 refcollid = 5 [json_name = "refcollid"]; if (this->refcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(5, this->_internal_refcollid(), target); } // repeated .pg_query.Node refupperindexpr = 6 [json_name = "refupperindexpr"]; for (unsigned int i = 0, n = static_cast(this->_internal_refupperindexpr_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_refupperindexpr(i), target, stream); } // repeated .pg_query.Node reflowerindexpr = 7 [json_name = "reflowerindexpr"]; for (unsigned int i = 0, n = static_cast(this->_internal_reflowerindexpr_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(7, this->_internal_reflowerindexpr(i), target, stream); } // .pg_query.Node refexpr = 8 [json_name = "refexpr"]; if (this->has_refexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 8, _Internal::refexpr(this), target, stream); } // .pg_query.Node refassgnexpr = 9 [json_name = "refassgnexpr"]; if (this->has_refassgnexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 9, _Internal::refassgnexpr(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.SubscriptingRef) return target; } size_t SubscriptingRef::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.SubscriptingRef) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node refupperindexpr = 6 [json_name = "refupperindexpr"]; total_size += 1UL * this->_internal_refupperindexpr_size(); for (const auto& msg : this->refupperindexpr_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node reflowerindexpr = 7 [json_name = "reflowerindexpr"]; total_size += 1UL * this->_internal_reflowerindexpr_size(); for (const auto& msg : this->reflowerindexpr_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node refexpr = 8 [json_name = "refexpr"]; if (this->has_refexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *refexpr_); } // .pg_query.Node refassgnexpr = 9 [json_name = "refassgnexpr"]; if (this->has_refassgnexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *refassgnexpr_); } // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; if (this->refcontainertype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_refcontainertype()); } // uint32 refelemtype = 3 [json_name = "refelemtype"]; if (this->refelemtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_refelemtype()); } // int32 reftypmod = 4 [json_name = "reftypmod"]; if (this->reftypmod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_reftypmod()); } // uint32 refcollid = 5 [json_name = "refcollid"]; if (this->refcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_refcollid()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void SubscriptingRef::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.SubscriptingRef) GOOGLE_DCHECK_NE(&from, this); const SubscriptingRef* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.SubscriptingRef) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.SubscriptingRef) MergeFrom(*source); } } void SubscriptingRef::MergeFrom(const SubscriptingRef& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SubscriptingRef) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; refupperindexpr_.MergeFrom(from.refupperindexpr_); reflowerindexpr_.MergeFrom(from.reflowerindexpr_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_refexpr()) { _internal_mutable_refexpr()->::pg_query::Node::MergeFrom(from._internal_refexpr()); } if (from.has_refassgnexpr()) { _internal_mutable_refassgnexpr()->::pg_query::Node::MergeFrom(from._internal_refassgnexpr()); } if (from.refcontainertype() != 0) { _internal_set_refcontainertype(from._internal_refcontainertype()); } if (from.refelemtype() != 0) { _internal_set_refelemtype(from._internal_refelemtype()); } if (from.reftypmod() != 0) { _internal_set_reftypmod(from._internal_reftypmod()); } if (from.refcollid() != 0) { _internal_set_refcollid(from._internal_refcollid()); } } void SubscriptingRef::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.SubscriptingRef) if (&from == this) return; Clear(); MergeFrom(from); } void SubscriptingRef::CopyFrom(const SubscriptingRef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SubscriptingRef) if (&from == this) return; Clear(); MergeFrom(from); } bool SubscriptingRef::IsInitialized() const { return true; } void SubscriptingRef::InternalSwap(SubscriptingRef* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); refupperindexpr_.InternalSwap(&other->refupperindexpr_); reflowerindexpr_.InternalSwap(&other->reflowerindexpr_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(SubscriptingRef, refcollid_) + sizeof(SubscriptingRef::refcollid_) - PROTOBUF_FIELD_OFFSET(SubscriptingRef, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata SubscriptingRef::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class FuncExpr::_Internal { public: static const ::pg_query::Node& xpr(const FuncExpr* msg); }; const ::pg_query::Node& FuncExpr::_Internal::xpr(const FuncExpr* msg) { return *msg->xpr_; } FuncExpr::FuncExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FuncExpr) } FuncExpr::FuncExpr(const FuncExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&funcid_, &from.funcid_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&funcid_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.FuncExpr) } void FuncExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } FuncExpr::~FuncExpr() { // @@protoc_insertion_point(destructor:pg_query.FuncExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void FuncExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void FuncExpr::ArenaDtor(void* object) { FuncExpr* _this = reinterpret_cast< FuncExpr* >(object); (void)_this; } void FuncExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void FuncExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const FuncExpr& FuncExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void FuncExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FuncExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&funcid_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&funcid_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* FuncExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 funcid = 2 [json_name = "funcid"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { funcid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { funcresulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool funcretset = 4 [json_name = "funcretset"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { funcretset_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool funcvariadic = 5 [json_name = "funcvariadic"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { funcvariadic_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_funcformat(static_cast<::pg_query::CoercionForm>(val)); } else goto handle_unusual; continue; // uint32 funccollid = 7 [json_name = "funccollid"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { funccollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 inputcollid = 8 [json_name = "inputcollid"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { inputcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 9 [json_name = "args"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr)); } else goto handle_unusual; continue; // int32 location = 10 [json_name = "location"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* FuncExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FuncExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 funcid = 2 [json_name = "funcid"]; if (this->funcid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_funcid(), target); } // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; if (this->funcresulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_funcresulttype(), target); } // bool funcretset = 4 [json_name = "funcretset"]; if (this->funcretset() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_funcretset(), target); } // bool funcvariadic = 5 [json_name = "funcvariadic"]; if (this->funcvariadic() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_funcvariadic(), target); } // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; if (this->funcformat() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 6, this->_internal_funcformat(), target); } // uint32 funccollid = 7 [json_name = "funccollid"]; if (this->funccollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(7, this->_internal_funccollid(), target); } // uint32 inputcollid = 8 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(8, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 9 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(9, this->_internal_args(i), target, stream); } // int32 location = 10 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(10, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.FuncExpr) return target; } size_t FuncExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.FuncExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 9 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 funcid = 2 [json_name = "funcid"]; if (this->funcid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_funcid()); } // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; if (this->funcresulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_funcresulttype()); } // bool funcretset = 4 [json_name = "funcretset"]; if (this->funcretset() != 0) { total_size += 1 + 1; } // bool funcvariadic = 5 [json_name = "funcvariadic"]; if (this->funcvariadic() != 0) { total_size += 1 + 1; } // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; if (this->funcformat() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_funcformat()); } // uint32 funccollid = 7 [json_name = "funccollid"]; if (this->funccollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_funccollid()); } // uint32 inputcollid = 8 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_inputcollid()); } // int32 location = 10 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void FuncExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.FuncExpr) GOOGLE_DCHECK_NE(&from, this); const FuncExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.FuncExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.FuncExpr) MergeFrom(*source); } } void FuncExpr::MergeFrom(const FuncExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FuncExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.funcid() != 0) { _internal_set_funcid(from._internal_funcid()); } if (from.funcresulttype() != 0) { _internal_set_funcresulttype(from._internal_funcresulttype()); } if (from.funcretset() != 0) { _internal_set_funcretset(from._internal_funcretset()); } if (from.funcvariadic() != 0) { _internal_set_funcvariadic(from._internal_funcvariadic()); } if (from.funcformat() != 0) { _internal_set_funcformat(from._internal_funcformat()); } if (from.funccollid() != 0) { _internal_set_funccollid(from._internal_funccollid()); } if (from.inputcollid() != 0) { _internal_set_inputcollid(from._internal_inputcollid()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void FuncExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.FuncExpr) if (&from == this) return; Clear(); MergeFrom(from); } void FuncExpr::CopyFrom(const FuncExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FuncExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool FuncExpr::IsInitialized() const { return true; } void FuncExpr::InternalSwap(FuncExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(FuncExpr, location_) + sizeof(FuncExpr::location_) - PROTOBUF_FIELD_OFFSET(FuncExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata FuncExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class NamedArgExpr::_Internal { public: static const ::pg_query::Node& xpr(const NamedArgExpr* msg); static const ::pg_query::Node& arg(const NamedArgExpr* msg); }; const ::pg_query::Node& NamedArgExpr::_Internal::xpr(const NamedArgExpr* msg) { return *msg->xpr_; } const ::pg_query::Node& NamedArgExpr::_Internal::arg(const NamedArgExpr* msg) { return *msg->arg_; } NamedArgExpr::NamedArgExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.NamedArgExpr) } NamedArgExpr::NamedArgExpr(const NamedArgExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } ::memcpy(&argnumber_, &from.argnumber_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&argnumber_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.NamedArgExpr) } void NamedArgExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } NamedArgExpr::~NamedArgExpr() { // @@protoc_insertion_point(destructor:pg_query.NamedArgExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void NamedArgExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; } void NamedArgExpr::ArenaDtor(void* object) { NamedArgExpr* _this = reinterpret_cast< NamedArgExpr* >(object); (void)_this; } void NamedArgExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void NamedArgExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const NamedArgExpr& NamedArgExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void NamedArgExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.NamedArgExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; name_.ClearToEmpty(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; ::memset(&argnumber_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&argnumber_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* NamedArgExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string name = 3 [json_name = "name"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.NamedArgExpr.name")); CHK_(ptr); } else goto handle_unusual; continue; // int32 argnumber = 4 [json_name = "argnumber"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { argnumber_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* NamedArgExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.NamedArgExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // string name = 3 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.NamedArgExpr.name"); target = stream->WriteStringMaybeAliased( 3, this->_internal_name(), target); } // int32 argnumber = 4 [json_name = "argnumber"]; if (this->argnumber() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_argnumber(), target); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.NamedArgExpr) return target; } size_t NamedArgExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.NamedArgExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string name = 3 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // int32 argnumber = 4 [json_name = "argnumber"]; if (this->argnumber() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_argnumber()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void NamedArgExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.NamedArgExpr) GOOGLE_DCHECK_NE(&from, this); const NamedArgExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.NamedArgExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.NamedArgExpr) MergeFrom(*source); } } void NamedArgExpr::MergeFrom(const NamedArgExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.NamedArgExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.argnumber() != 0) { _internal_set_argnumber(from._internal_argnumber()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void NamedArgExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.NamedArgExpr) if (&from == this) return; Clear(); MergeFrom(from); } void NamedArgExpr::CopyFrom(const NamedArgExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.NamedArgExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool NamedArgExpr::IsInitialized() const { return true; } void NamedArgExpr::InternalSwap(NamedArgExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(NamedArgExpr, location_) + sizeof(NamedArgExpr::location_) - PROTOBUF_FIELD_OFFSET(NamedArgExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata NamedArgExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class OpExpr::_Internal { public: static const ::pg_query::Node& xpr(const OpExpr* msg); }; const ::pg_query::Node& OpExpr::_Internal::xpr(const OpExpr* msg) { return *msg->xpr_; } OpExpr::OpExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.OpExpr) } OpExpr::OpExpr(const OpExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&opno_, &from.opno_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&opno_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.OpExpr) } void OpExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } OpExpr::~OpExpr() { // @@protoc_insertion_point(destructor:pg_query.OpExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void OpExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void OpExpr::ArenaDtor(void* object) { OpExpr* _this = reinterpret_cast< OpExpr* >(object); (void)_this; } void OpExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void OpExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const OpExpr& OpExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void OpExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.OpExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&opno_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&opno_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* OpExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opno = 2 [json_name = "opno"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { opno_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opfuncid = 3 [json_name = "opfuncid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { opfuncid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opresulttype = 4 [json_name = "opresulttype"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { opresulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool opretset = 5 [json_name = "opretset"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { opretset_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opcollid = 6 [json_name = "opcollid"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { opcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 inputcollid = 7 [json_name = "inputcollid"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { inputcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 8 [json_name = "args"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; // int32 location = 9 [json_name = "location"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* OpExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.OpExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 opno = 2 [json_name = "opno"]; if (this->opno() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_opno(), target); } // uint32 opfuncid = 3 [json_name = "opfuncid"]; if (this->opfuncid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_opfuncid(), target); } // uint32 opresulttype = 4 [json_name = "opresulttype"]; if (this->opresulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_opresulttype(), target); } // bool opretset = 5 [json_name = "opretset"]; if (this->opretset() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_opretset(), target); } // uint32 opcollid = 6 [json_name = "opcollid"]; if (this->opcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(6, this->_internal_opcollid(), target); } // uint32 inputcollid = 7 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(7, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 8 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_args(i), target, stream); } // int32 location = 9 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(9, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.OpExpr) return target; } size_t OpExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.OpExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 8 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 opno = 2 [json_name = "opno"]; if (this->opno() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opno()); } // uint32 opfuncid = 3 [json_name = "opfuncid"]; if (this->opfuncid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opfuncid()); } // uint32 opresulttype = 4 [json_name = "opresulttype"]; if (this->opresulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opresulttype()); } // bool opretset = 5 [json_name = "opretset"]; if (this->opretset() != 0) { total_size += 1 + 1; } // uint32 opcollid = 6 [json_name = "opcollid"]; if (this->opcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opcollid()); } // uint32 inputcollid = 7 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_inputcollid()); } // int32 location = 9 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void OpExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.OpExpr) GOOGLE_DCHECK_NE(&from, this); const OpExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.OpExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.OpExpr) MergeFrom(*source); } } void OpExpr::MergeFrom(const OpExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.OpExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.opno() != 0) { _internal_set_opno(from._internal_opno()); } if (from.opfuncid() != 0) { _internal_set_opfuncid(from._internal_opfuncid()); } if (from.opresulttype() != 0) { _internal_set_opresulttype(from._internal_opresulttype()); } if (from.opretset() != 0) { _internal_set_opretset(from._internal_opretset()); } if (from.opcollid() != 0) { _internal_set_opcollid(from._internal_opcollid()); } if (from.inputcollid() != 0) { _internal_set_inputcollid(from._internal_inputcollid()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void OpExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.OpExpr) if (&from == this) return; Clear(); MergeFrom(from); } void OpExpr::CopyFrom(const OpExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.OpExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool OpExpr::IsInitialized() const { return true; } void OpExpr::InternalSwap(OpExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(OpExpr, location_) + sizeof(OpExpr::location_) - PROTOBUF_FIELD_OFFSET(OpExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata OpExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DistinctExpr::_Internal { public: static const ::pg_query::Node& xpr(const DistinctExpr* msg); }; const ::pg_query::Node& DistinctExpr::_Internal::xpr(const DistinctExpr* msg) { return *msg->xpr_; } DistinctExpr::DistinctExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DistinctExpr) } DistinctExpr::DistinctExpr(const DistinctExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&opno_, &from.opno_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&opno_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.DistinctExpr) } void DistinctExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } DistinctExpr::~DistinctExpr() { // @@protoc_insertion_point(destructor:pg_query.DistinctExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DistinctExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void DistinctExpr::ArenaDtor(void* object) { DistinctExpr* _this = reinterpret_cast< DistinctExpr* >(object); (void)_this; } void DistinctExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DistinctExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const DistinctExpr& DistinctExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DistinctExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DistinctExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&opno_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&opno_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DistinctExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opno = 2 [json_name = "opno"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { opno_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opfuncid = 3 [json_name = "opfuncid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { opfuncid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opresulttype = 4 [json_name = "opresulttype"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { opresulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool opretset = 5 [json_name = "opretset"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { opretset_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opcollid = 6 [json_name = "opcollid"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { opcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 inputcollid = 7 [json_name = "inputcollid"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { inputcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 8 [json_name = "args"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; // int32 location = 9 [json_name = "location"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DistinctExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DistinctExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 opno = 2 [json_name = "opno"]; if (this->opno() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_opno(), target); } // uint32 opfuncid = 3 [json_name = "opfuncid"]; if (this->opfuncid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_opfuncid(), target); } // uint32 opresulttype = 4 [json_name = "opresulttype"]; if (this->opresulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_opresulttype(), target); } // bool opretset = 5 [json_name = "opretset"]; if (this->opretset() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_opretset(), target); } // uint32 opcollid = 6 [json_name = "opcollid"]; if (this->opcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(6, this->_internal_opcollid(), target); } // uint32 inputcollid = 7 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(7, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 8 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_args(i), target, stream); } // int32 location = 9 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(9, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DistinctExpr) return target; } size_t DistinctExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DistinctExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 8 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 opno = 2 [json_name = "opno"]; if (this->opno() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opno()); } // uint32 opfuncid = 3 [json_name = "opfuncid"]; if (this->opfuncid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opfuncid()); } // uint32 opresulttype = 4 [json_name = "opresulttype"]; if (this->opresulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opresulttype()); } // bool opretset = 5 [json_name = "opretset"]; if (this->opretset() != 0) { total_size += 1 + 1; } // uint32 opcollid = 6 [json_name = "opcollid"]; if (this->opcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opcollid()); } // uint32 inputcollid = 7 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_inputcollid()); } // int32 location = 9 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DistinctExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DistinctExpr) GOOGLE_DCHECK_NE(&from, this); const DistinctExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DistinctExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DistinctExpr) MergeFrom(*source); } } void DistinctExpr::MergeFrom(const DistinctExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DistinctExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.opno() != 0) { _internal_set_opno(from._internal_opno()); } if (from.opfuncid() != 0) { _internal_set_opfuncid(from._internal_opfuncid()); } if (from.opresulttype() != 0) { _internal_set_opresulttype(from._internal_opresulttype()); } if (from.opretset() != 0) { _internal_set_opretset(from._internal_opretset()); } if (from.opcollid() != 0) { _internal_set_opcollid(from._internal_opcollid()); } if (from.inputcollid() != 0) { _internal_set_inputcollid(from._internal_inputcollid()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void DistinctExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DistinctExpr) if (&from == this) return; Clear(); MergeFrom(from); } void DistinctExpr::CopyFrom(const DistinctExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DistinctExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool DistinctExpr::IsInitialized() const { return true; } void DistinctExpr::InternalSwap(DistinctExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(DistinctExpr, location_) + sizeof(DistinctExpr::location_) - PROTOBUF_FIELD_OFFSET(DistinctExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata DistinctExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class NullIfExpr::_Internal { public: static const ::pg_query::Node& xpr(const NullIfExpr* msg); }; const ::pg_query::Node& NullIfExpr::_Internal::xpr(const NullIfExpr* msg) { return *msg->xpr_; } NullIfExpr::NullIfExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.NullIfExpr) } NullIfExpr::NullIfExpr(const NullIfExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&opno_, &from.opno_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&opno_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.NullIfExpr) } void NullIfExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } NullIfExpr::~NullIfExpr() { // @@protoc_insertion_point(destructor:pg_query.NullIfExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void NullIfExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void NullIfExpr::ArenaDtor(void* object) { NullIfExpr* _this = reinterpret_cast< NullIfExpr* >(object); (void)_this; } void NullIfExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void NullIfExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const NullIfExpr& NullIfExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void NullIfExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.NullIfExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&opno_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&opno_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* NullIfExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opno = 2 [json_name = "opno"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { opno_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opfuncid = 3 [json_name = "opfuncid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { opfuncid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opresulttype = 4 [json_name = "opresulttype"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { opresulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool opretset = 5 [json_name = "opretset"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { opretset_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opcollid = 6 [json_name = "opcollid"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { opcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 inputcollid = 7 [json_name = "inputcollid"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { inputcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 8 [json_name = "args"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; // int32 location = 9 [json_name = "location"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* NullIfExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.NullIfExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 opno = 2 [json_name = "opno"]; if (this->opno() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_opno(), target); } // uint32 opfuncid = 3 [json_name = "opfuncid"]; if (this->opfuncid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_opfuncid(), target); } // uint32 opresulttype = 4 [json_name = "opresulttype"]; if (this->opresulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_opresulttype(), target); } // bool opretset = 5 [json_name = "opretset"]; if (this->opretset() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_opretset(), target); } // uint32 opcollid = 6 [json_name = "opcollid"]; if (this->opcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(6, this->_internal_opcollid(), target); } // uint32 inputcollid = 7 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(7, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 8 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_args(i), target, stream); } // int32 location = 9 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(9, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.NullIfExpr) return target; } size_t NullIfExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.NullIfExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 8 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 opno = 2 [json_name = "opno"]; if (this->opno() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opno()); } // uint32 opfuncid = 3 [json_name = "opfuncid"]; if (this->opfuncid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opfuncid()); } // uint32 opresulttype = 4 [json_name = "opresulttype"]; if (this->opresulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opresulttype()); } // bool opretset = 5 [json_name = "opretset"]; if (this->opretset() != 0) { total_size += 1 + 1; } // uint32 opcollid = 6 [json_name = "opcollid"]; if (this->opcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opcollid()); } // uint32 inputcollid = 7 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_inputcollid()); } // int32 location = 9 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void NullIfExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.NullIfExpr) GOOGLE_DCHECK_NE(&from, this); const NullIfExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.NullIfExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.NullIfExpr) MergeFrom(*source); } } void NullIfExpr::MergeFrom(const NullIfExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.NullIfExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.opno() != 0) { _internal_set_opno(from._internal_opno()); } if (from.opfuncid() != 0) { _internal_set_opfuncid(from._internal_opfuncid()); } if (from.opresulttype() != 0) { _internal_set_opresulttype(from._internal_opresulttype()); } if (from.opretset() != 0) { _internal_set_opretset(from._internal_opretset()); } if (from.opcollid() != 0) { _internal_set_opcollid(from._internal_opcollid()); } if (from.inputcollid() != 0) { _internal_set_inputcollid(from._internal_inputcollid()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void NullIfExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.NullIfExpr) if (&from == this) return; Clear(); MergeFrom(from); } void NullIfExpr::CopyFrom(const NullIfExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.NullIfExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool NullIfExpr::IsInitialized() const { return true; } void NullIfExpr::InternalSwap(NullIfExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(NullIfExpr, location_) + sizeof(NullIfExpr::location_) - PROTOBUF_FIELD_OFFSET(NullIfExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata NullIfExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ScalarArrayOpExpr::_Internal { public: static const ::pg_query::Node& xpr(const ScalarArrayOpExpr* msg); }; const ::pg_query::Node& ScalarArrayOpExpr::_Internal::xpr(const ScalarArrayOpExpr* msg) { return *msg->xpr_; } ScalarArrayOpExpr::ScalarArrayOpExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ScalarArrayOpExpr) } ScalarArrayOpExpr::ScalarArrayOpExpr(const ScalarArrayOpExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&opno_, &from.opno_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&opno_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ScalarArrayOpExpr) } void ScalarArrayOpExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } ScalarArrayOpExpr::~ScalarArrayOpExpr() { // @@protoc_insertion_point(destructor:pg_query.ScalarArrayOpExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ScalarArrayOpExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void ScalarArrayOpExpr::ArenaDtor(void* object) { ScalarArrayOpExpr* _this = reinterpret_cast< ScalarArrayOpExpr* >(object); (void)_this; } void ScalarArrayOpExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ScalarArrayOpExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const ScalarArrayOpExpr& ScalarArrayOpExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ScalarArrayOpExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ScalarArrayOpExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&opno_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&opno_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ScalarArrayOpExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opno = 2 [json_name = "opno"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { opno_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 opfuncid = 3 [json_name = "opfuncid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { opfuncid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool use_or = 4 [json_name = "useOr"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { use_or_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 inputcollid = 5 [json_name = "inputcollid"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { inputcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 6 [json_name = "args"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ScalarArrayOpExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ScalarArrayOpExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 opno = 2 [json_name = "opno"]; if (this->opno() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_opno(), target); } // uint32 opfuncid = 3 [json_name = "opfuncid"]; if (this->opfuncid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_opfuncid(), target); } // bool use_or = 4 [json_name = "useOr"]; if (this->use_or() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_use_or(), target); } // uint32 inputcollid = 5 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(5, this->_internal_inputcollid(), target); } // repeated .pg_query.Node args = 6 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_args(i), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ScalarArrayOpExpr) return target; } size_t ScalarArrayOpExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ScalarArrayOpExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 6 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 opno = 2 [json_name = "opno"]; if (this->opno() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opno()); } // uint32 opfuncid = 3 [json_name = "opfuncid"]; if (this->opfuncid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_opfuncid()); } // bool use_or = 4 [json_name = "useOr"]; if (this->use_or() != 0) { total_size += 1 + 1; } // uint32 inputcollid = 5 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_inputcollid()); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ScalarArrayOpExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ScalarArrayOpExpr) GOOGLE_DCHECK_NE(&from, this); const ScalarArrayOpExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ScalarArrayOpExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ScalarArrayOpExpr) MergeFrom(*source); } } void ScalarArrayOpExpr::MergeFrom(const ScalarArrayOpExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ScalarArrayOpExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.opno() != 0) { _internal_set_opno(from._internal_opno()); } if (from.opfuncid() != 0) { _internal_set_opfuncid(from._internal_opfuncid()); } if (from.use_or() != 0) { _internal_set_use_or(from._internal_use_or()); } if (from.inputcollid() != 0) { _internal_set_inputcollid(from._internal_inputcollid()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void ScalarArrayOpExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ScalarArrayOpExpr) if (&from == this) return; Clear(); MergeFrom(from); } void ScalarArrayOpExpr::CopyFrom(const ScalarArrayOpExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ScalarArrayOpExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool ScalarArrayOpExpr::IsInitialized() const { return true; } void ScalarArrayOpExpr::InternalSwap(ScalarArrayOpExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, location_) + sizeof(ScalarArrayOpExpr::location_) - PROTOBUF_FIELD_OFFSET(ScalarArrayOpExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ScalarArrayOpExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class BoolExpr::_Internal { public: static const ::pg_query::Node& xpr(const BoolExpr* msg); }; const ::pg_query::Node& BoolExpr::_Internal::xpr(const BoolExpr* msg) { return *msg->xpr_; } BoolExpr::BoolExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.BoolExpr) } BoolExpr::BoolExpr(const BoolExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&boolop_, &from.boolop_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&boolop_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.BoolExpr) } void BoolExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } BoolExpr::~BoolExpr() { // @@protoc_insertion_point(destructor:pg_query.BoolExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void BoolExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void BoolExpr::ArenaDtor(void* object) { BoolExpr* _this = reinterpret_cast< BoolExpr* >(object); (void)_this; } void BoolExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void BoolExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const BoolExpr& BoolExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void BoolExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.BoolExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&boolop_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&boolop_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* BoolExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_boolop(static_cast<::pg_query::BoolExprType>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 3 [json_name = "args"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // int32 location = 4 [json_name = "location"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* BoolExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.BoolExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; if (this->boolop() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_boolop(), target); } // repeated .pg_query.Node args = 3 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_args(i), target, stream); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.BoolExpr) return target; } size_t BoolExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.BoolExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 3 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; if (this->boolop() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_boolop()); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void BoolExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.BoolExpr) GOOGLE_DCHECK_NE(&from, this); const BoolExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.BoolExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.BoolExpr) MergeFrom(*source); } } void BoolExpr::MergeFrom(const BoolExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.BoolExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.boolop() != 0) { _internal_set_boolop(from._internal_boolop()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void BoolExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.BoolExpr) if (&from == this) return; Clear(); MergeFrom(from); } void BoolExpr::CopyFrom(const BoolExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.BoolExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool BoolExpr::IsInitialized() const { return true; } void BoolExpr::InternalSwap(BoolExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(BoolExpr, location_) + sizeof(BoolExpr::location_) - PROTOBUF_FIELD_OFFSET(BoolExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata BoolExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class SubLink::_Internal { public: static const ::pg_query::Node& xpr(const SubLink* msg); static const ::pg_query::Node& testexpr(const SubLink* msg); static const ::pg_query::Node& subselect(const SubLink* msg); }; const ::pg_query::Node& SubLink::_Internal::xpr(const SubLink* msg) { return *msg->xpr_; } const ::pg_query::Node& SubLink::_Internal::testexpr(const SubLink* msg) { return *msg->testexpr_; } const ::pg_query::Node& SubLink::_Internal::subselect(const SubLink* msg) { return *msg->subselect_; } SubLink::SubLink(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), oper_name_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SubLink) } SubLink::SubLink(const SubLink& from) : ::PROTOBUF_NAMESPACE_ID::Message(), oper_name_(from.oper_name_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_testexpr()) { testexpr_ = new ::pg_query::Node(*from.testexpr_); } else { testexpr_ = nullptr; } if (from._internal_has_subselect()) { subselect_ = new ::pg_query::Node(*from.subselect_); } else { subselect_ = nullptr; } ::memcpy(&sub_link_type_, &from.sub_link_type_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&sub_link_type_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.SubLink) } void SubLink::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } SubLink::~SubLink() { // @@protoc_insertion_point(destructor:pg_query.SubLink) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void SubLink::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete testexpr_; if (this != internal_default_instance()) delete subselect_; } void SubLink::ArenaDtor(void* object) { SubLink* _this = reinterpret_cast< SubLink* >(object); (void)_this; } void SubLink::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void SubLink::SetCachedSize(int size) const { _cached_size_.Set(size); } const SubLink& SubLink::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void SubLink::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SubLink) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; oper_name_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && testexpr_ != nullptr) { delete testexpr_; } testexpr_ = nullptr; if (GetArena() == nullptr && subselect_ != nullptr) { delete subselect_; } subselect_ = nullptr; ::memset(&sub_link_type_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&sub_link_type_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* SubLink::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_sub_link_type(static_cast<::pg_query::SubLinkType>(val)); } else goto handle_unusual; continue; // int32 sub_link_id = 3 [json_name = "subLinkId"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { sub_link_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_testexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_oper_name(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node subselect = 6 [json_name = "subselect"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_subselect(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* SubLink::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SubLink) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; if (this->sub_link_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_sub_link_type(), target); } // int32 sub_link_id = 3 [json_name = "subLinkId"]; if (this->sub_link_id() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_sub_link_id(), target); } // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; if (this->has_testexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::testexpr(this), target, stream); } // repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; for (unsigned int i = 0, n = static_cast(this->_internal_oper_name_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_oper_name(i), target, stream); } // .pg_query.Node subselect = 6 [json_name = "subselect"]; if (this->has_subselect()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::subselect(this), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.SubLink) return target; } size_t SubLink::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.SubLink) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; total_size += 1UL * this->_internal_oper_name_size(); for (const auto& msg : this->oper_name_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; if (this->has_testexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *testexpr_); } // .pg_query.Node subselect = 6 [json_name = "subselect"]; if (this->has_subselect()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *subselect_); } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; if (this->sub_link_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_sub_link_type()); } // int32 sub_link_id = 3 [json_name = "subLinkId"]; if (this->sub_link_id() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_sub_link_id()); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void SubLink::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.SubLink) GOOGLE_DCHECK_NE(&from, this); const SubLink* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.SubLink) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.SubLink) MergeFrom(*source); } } void SubLink::MergeFrom(const SubLink& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SubLink) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; oper_name_.MergeFrom(from.oper_name_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_testexpr()) { _internal_mutable_testexpr()->::pg_query::Node::MergeFrom(from._internal_testexpr()); } if (from.has_subselect()) { _internal_mutable_subselect()->::pg_query::Node::MergeFrom(from._internal_subselect()); } if (from.sub_link_type() != 0) { _internal_set_sub_link_type(from._internal_sub_link_type()); } if (from.sub_link_id() != 0) { _internal_set_sub_link_id(from._internal_sub_link_id()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void SubLink::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.SubLink) if (&from == this) return; Clear(); MergeFrom(from); } void SubLink::CopyFrom(const SubLink& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SubLink) if (&from == this) return; Clear(); MergeFrom(from); } bool SubLink::IsInitialized() const { return true; } void SubLink::InternalSwap(SubLink* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); oper_name_.InternalSwap(&other->oper_name_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(SubLink, location_) + sizeof(SubLink::location_) - PROTOBUF_FIELD_OFFSET(SubLink, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata SubLink::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class SubPlan::_Internal { public: static const ::pg_query::Node& xpr(const SubPlan* msg); static const ::pg_query::Node& testexpr(const SubPlan* msg); }; const ::pg_query::Node& SubPlan::_Internal::xpr(const SubPlan* msg) { return *msg->xpr_; } const ::pg_query::Node& SubPlan::_Internal::testexpr(const SubPlan* msg) { return *msg->testexpr_; } SubPlan::SubPlan(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), param_ids_(arena), set_param_(arena), par_param_(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SubPlan) } SubPlan::SubPlan(const SubPlan& from) : ::PROTOBUF_NAMESPACE_ID::Message(), param_ids_(from.param_ids_), set_param_(from.set_param_), par_param_(from.par_param_), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); plan_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_plan_name().empty()) { plan_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_plan_name(), GetArena()); } if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_testexpr()) { testexpr_ = new ::pg_query::Node(*from.testexpr_); } else { testexpr_ = nullptr; } ::memcpy(&sub_link_type_, &from.sub_link_type_, static_cast(reinterpret_cast(&per_call_cost_) - reinterpret_cast(&sub_link_type_)) + sizeof(per_call_cost_)); // @@protoc_insertion_point(copy_constructor:pg_query.SubPlan) } void SubPlan::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); plan_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&per_call_cost_) - reinterpret_cast(&xpr_)) + sizeof(per_call_cost_)); } SubPlan::~SubPlan() { // @@protoc_insertion_point(destructor:pg_query.SubPlan) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void SubPlan::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); plan_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete testexpr_; } void SubPlan::ArenaDtor(void* object) { SubPlan* _this = reinterpret_cast< SubPlan* >(object); (void)_this; } void SubPlan::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void SubPlan::SetCachedSize(int size) const { _cached_size_.Set(size); } const SubPlan& SubPlan::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void SubPlan::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SubPlan) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; param_ids_.Clear(); set_param_.Clear(); par_param_.Clear(); args_.Clear(); plan_name_.ClearToEmpty(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && testexpr_ != nullptr) { delete testexpr_; } testexpr_ = nullptr; ::memset(&sub_link_type_, 0, static_cast( reinterpret_cast(&per_call_cost_) - reinterpret_cast(&sub_link_type_)) + sizeof(per_call_cost_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* SubPlan::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_sub_link_type(static_cast<::pg_query::SubLinkType>(val)); } else goto handle_unusual; continue; // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_testexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_param_ids(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // int32 plan_id = 5 [json_name = "plan_id"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { plan_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string plan_name = 6 [json_name = "plan_name"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { auto str = _internal_mutable_plan_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.SubPlan.plan_name")); CHK_(ptr); } else goto handle_unusual; continue; // uint32 first_col_type = 7 [json_name = "firstColType"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { first_col_type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { first_col_typmod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { first_col_collation_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool use_hash_table = 10 [json_name = "useHashTable"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { use_hash_table_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) { unknown_eq_false_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool parallel_safe = 12 [json_name = "parallel_safe"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 96)) { parallel_safe_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_set_param(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<106>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_par_param(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<114>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 15 [json_name = "args"]; case 15: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<122>(ptr)); } else goto handle_unusual; continue; // double startup_cost = 16 [json_name = "startup_cost"]; case 16: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 129)) { startup_cost_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); ptr += sizeof(double); } else goto handle_unusual; continue; // double per_call_cost = 17 [json_name = "per_call_cost"]; case 17: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 137)) { per_call_cost_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); ptr += sizeof(double); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* SubPlan::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SubPlan) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; if (this->sub_link_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_sub_link_type(), target); } // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; if (this->has_testexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::testexpr(this), target, stream); } // repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; for (unsigned int i = 0, n = static_cast(this->_internal_param_ids_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_param_ids(i), target, stream); } // int32 plan_id = 5 [json_name = "plan_id"]; if (this->plan_id() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_plan_id(), target); } // string plan_name = 6 [json_name = "plan_name"]; if (this->plan_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_plan_name().data(), static_cast(this->_internal_plan_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.SubPlan.plan_name"); target = stream->WriteStringMaybeAliased( 6, this->_internal_plan_name(), target); } // uint32 first_col_type = 7 [json_name = "firstColType"]; if (this->first_col_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(7, this->_internal_first_col_type(), target); } // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; if (this->first_col_typmod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(8, this->_internal_first_col_typmod(), target); } // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; if (this->first_col_collation() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(9, this->_internal_first_col_collation(), target); } // bool use_hash_table = 10 [json_name = "useHashTable"]; if (this->use_hash_table() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(10, this->_internal_use_hash_table(), target); } // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; if (this->unknown_eq_false() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(11, this->_internal_unknown_eq_false(), target); } // bool parallel_safe = 12 [json_name = "parallel_safe"]; if (this->parallel_safe() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(12, this->_internal_parallel_safe(), target); } // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; for (unsigned int i = 0, n = static_cast(this->_internal_set_param_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(13, this->_internal_set_param(i), target, stream); } // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; for (unsigned int i = 0, n = static_cast(this->_internal_par_param_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(14, this->_internal_par_param(i), target, stream); } // repeated .pg_query.Node args = 15 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(15, this->_internal_args(i), target, stream); } // double startup_cost = 16 [json_name = "startup_cost"]; if (!(this->startup_cost() <= 0 && this->startup_cost() >= 0)) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(16, this->_internal_startup_cost(), target); } // double per_call_cost = 17 [json_name = "per_call_cost"]; if (!(this->per_call_cost() <= 0 && this->per_call_cost() >= 0)) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(17, this->_internal_per_call_cost(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.SubPlan) return target; } size_t SubPlan::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.SubPlan) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; total_size += 1UL * this->_internal_param_ids_size(); for (const auto& msg : this->param_ids_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; total_size += 1UL * this->_internal_set_param_size(); for (const auto& msg : this->set_param_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; total_size += 1UL * this->_internal_par_param_size(); for (const auto& msg : this->par_param_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node args = 15 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string plan_name = 6 [json_name = "plan_name"]; if (this->plan_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_plan_name()); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; if (this->has_testexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *testexpr_); } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; if (this->sub_link_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_sub_link_type()); } // int32 plan_id = 5 [json_name = "plan_id"]; if (this->plan_id() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_plan_id()); } // uint32 first_col_type = 7 [json_name = "firstColType"]; if (this->first_col_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_first_col_type()); } // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; if (this->first_col_typmod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_first_col_typmod()); } // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; if (this->first_col_collation() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_first_col_collation()); } // bool use_hash_table = 10 [json_name = "useHashTable"]; if (this->use_hash_table() != 0) { total_size += 1 + 1; } // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; if (this->unknown_eq_false() != 0) { total_size += 1 + 1; } // bool parallel_safe = 12 [json_name = "parallel_safe"]; if (this->parallel_safe() != 0) { total_size += 1 + 1; } // double startup_cost = 16 [json_name = "startup_cost"]; if (!(this->startup_cost() <= 0 && this->startup_cost() >= 0)) { total_size += 2 + 8; } // double per_call_cost = 17 [json_name = "per_call_cost"]; if (!(this->per_call_cost() <= 0 && this->per_call_cost() >= 0)) { total_size += 2 + 8; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void SubPlan::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.SubPlan) GOOGLE_DCHECK_NE(&from, this); const SubPlan* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.SubPlan) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.SubPlan) MergeFrom(*source); } } void SubPlan::MergeFrom(const SubPlan& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SubPlan) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; param_ids_.MergeFrom(from.param_ids_); set_param_.MergeFrom(from.set_param_); par_param_.MergeFrom(from.par_param_); args_.MergeFrom(from.args_); if (from.plan_name().size() > 0) { _internal_set_plan_name(from._internal_plan_name()); } if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_testexpr()) { _internal_mutable_testexpr()->::pg_query::Node::MergeFrom(from._internal_testexpr()); } if (from.sub_link_type() != 0) { _internal_set_sub_link_type(from._internal_sub_link_type()); } if (from.plan_id() != 0) { _internal_set_plan_id(from._internal_plan_id()); } if (from.first_col_type() != 0) { _internal_set_first_col_type(from._internal_first_col_type()); } if (from.first_col_typmod() != 0) { _internal_set_first_col_typmod(from._internal_first_col_typmod()); } if (from.first_col_collation() != 0) { _internal_set_first_col_collation(from._internal_first_col_collation()); } if (from.use_hash_table() != 0) { _internal_set_use_hash_table(from._internal_use_hash_table()); } if (from.unknown_eq_false() != 0) { _internal_set_unknown_eq_false(from._internal_unknown_eq_false()); } if (from.parallel_safe() != 0) { _internal_set_parallel_safe(from._internal_parallel_safe()); } if (!(from.startup_cost() <= 0 && from.startup_cost() >= 0)) { _internal_set_startup_cost(from._internal_startup_cost()); } if (!(from.per_call_cost() <= 0 && from.per_call_cost() >= 0)) { _internal_set_per_call_cost(from._internal_per_call_cost()); } } void SubPlan::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.SubPlan) if (&from == this) return; Clear(); MergeFrom(from); } void SubPlan::CopyFrom(const SubPlan& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SubPlan) if (&from == this) return; Clear(); MergeFrom(from); } bool SubPlan::IsInitialized() const { return true; } void SubPlan::InternalSwap(SubPlan* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); param_ids_.InternalSwap(&other->param_ids_); set_param_.InternalSwap(&other->set_param_); par_param_.InternalSwap(&other->par_param_); args_.InternalSwap(&other->args_); plan_name_.Swap(&other->plan_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(SubPlan, per_call_cost_) + sizeof(SubPlan::per_call_cost_) - PROTOBUF_FIELD_OFFSET(SubPlan, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata SubPlan::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlternativeSubPlan::_Internal { public: static const ::pg_query::Node& xpr(const AlternativeSubPlan* msg); }; const ::pg_query::Node& AlternativeSubPlan::_Internal::xpr(const AlternativeSubPlan* msg) { return *msg->xpr_; } AlternativeSubPlan::AlternativeSubPlan(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), subplans_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlternativeSubPlan) } AlternativeSubPlan::AlternativeSubPlan(const AlternativeSubPlan& from) : ::PROTOBUF_NAMESPACE_ID::Message(), subplans_(from.subplans_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.AlternativeSubPlan) } void AlternativeSubPlan::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); xpr_ = nullptr; } AlternativeSubPlan::~AlternativeSubPlan() { // @@protoc_insertion_point(destructor:pg_query.AlternativeSubPlan) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlternativeSubPlan::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void AlternativeSubPlan::ArenaDtor(void* object) { AlternativeSubPlan* _this = reinterpret_cast< AlternativeSubPlan* >(object); (void)_this; } void AlternativeSubPlan::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlternativeSubPlan::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlternativeSubPlan& AlternativeSubPlan::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlternativeSubPlan::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlternativeSubPlan) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; subplans_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlternativeSubPlan::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_subplans(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlternativeSubPlan::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlternativeSubPlan) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; for (unsigned int i = 0, n = static_cast(this->_internal_subplans_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_subplans(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlternativeSubPlan) return target; } size_t AlternativeSubPlan::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlternativeSubPlan) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; total_size += 1UL * this->_internal_subplans_size(); for (const auto& msg : this->subplans_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlternativeSubPlan::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlternativeSubPlan) GOOGLE_DCHECK_NE(&from, this); const AlternativeSubPlan* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlternativeSubPlan) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlternativeSubPlan) MergeFrom(*source); } } void AlternativeSubPlan::MergeFrom(const AlternativeSubPlan& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlternativeSubPlan) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; subplans_.MergeFrom(from.subplans_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } } void AlternativeSubPlan::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlternativeSubPlan) if (&from == this) return; Clear(); MergeFrom(from); } void AlternativeSubPlan::CopyFrom(const AlternativeSubPlan& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlternativeSubPlan) if (&from == this) return; Clear(); MergeFrom(from); } bool AlternativeSubPlan::IsInitialized() const { return true; } void AlternativeSubPlan::InternalSwap(AlternativeSubPlan* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); subplans_.InternalSwap(&other->subplans_); swap(xpr_, other->xpr_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlternativeSubPlan::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class FieldSelect::_Internal { public: static const ::pg_query::Node& xpr(const FieldSelect* msg); static const ::pg_query::Node& arg(const FieldSelect* msg); }; const ::pg_query::Node& FieldSelect::_Internal::xpr(const FieldSelect* msg) { return *msg->xpr_; } const ::pg_query::Node& FieldSelect::_Internal::arg(const FieldSelect* msg) { return *msg->arg_; } FieldSelect::FieldSelect(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FieldSelect) } FieldSelect::FieldSelect(const FieldSelect& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } ::memcpy(&fieldnum_, &from.fieldnum_, static_cast(reinterpret_cast(&resultcollid_) - reinterpret_cast(&fieldnum_)) + sizeof(resultcollid_)); // @@protoc_insertion_point(copy_constructor:pg_query.FieldSelect) } void FieldSelect::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&resultcollid_) - reinterpret_cast(&xpr_)) + sizeof(resultcollid_)); } FieldSelect::~FieldSelect() { // @@protoc_insertion_point(destructor:pg_query.FieldSelect) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void FieldSelect::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; } void FieldSelect::ArenaDtor(void* object) { FieldSelect* _this = reinterpret_cast< FieldSelect* >(object); (void)_this; } void FieldSelect::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void FieldSelect::SetCachedSize(int size) const { _cached_size_.Set(size); } const FieldSelect& FieldSelect::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void FieldSelect::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FieldSelect) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; ::memset(&fieldnum_, 0, static_cast( reinterpret_cast(&resultcollid_) - reinterpret_cast(&fieldnum_)) + sizeof(resultcollid_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* FieldSelect::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 fieldnum = 3 [json_name = "fieldnum"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { fieldnum_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resulttype = 4 [json_name = "resulttype"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { resulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 resulttypmod = 5 [json_name = "resulttypmod"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { resulttypmod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resultcollid = 6 [json_name = "resultcollid"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { resultcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* FieldSelect::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FieldSelect) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // int32 fieldnum = 3 [json_name = "fieldnum"]; if (this->fieldnum() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_fieldnum(), target); } // uint32 resulttype = 4 [json_name = "resulttype"]; if (this->resulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_resulttype(), target); } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; if (this->resulttypmod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_resulttypmod(), target); } // uint32 resultcollid = 6 [json_name = "resultcollid"]; if (this->resultcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(6, this->_internal_resultcollid(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.FieldSelect) return target; } size_t FieldSelect::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.FieldSelect) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // int32 fieldnum = 3 [json_name = "fieldnum"]; if (this->fieldnum() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_fieldnum()); } // uint32 resulttype = 4 [json_name = "resulttype"]; if (this->resulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resulttype()); } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; if (this->resulttypmod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_resulttypmod()); } // uint32 resultcollid = 6 [json_name = "resultcollid"]; if (this->resultcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resultcollid()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void FieldSelect::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.FieldSelect) GOOGLE_DCHECK_NE(&from, this); const FieldSelect* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.FieldSelect) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.FieldSelect) MergeFrom(*source); } } void FieldSelect::MergeFrom(const FieldSelect& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FieldSelect) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.fieldnum() != 0) { _internal_set_fieldnum(from._internal_fieldnum()); } if (from.resulttype() != 0) { _internal_set_resulttype(from._internal_resulttype()); } if (from.resulttypmod() != 0) { _internal_set_resulttypmod(from._internal_resulttypmod()); } if (from.resultcollid() != 0) { _internal_set_resultcollid(from._internal_resultcollid()); } } void FieldSelect::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.FieldSelect) if (&from == this) return; Clear(); MergeFrom(from); } void FieldSelect::CopyFrom(const FieldSelect& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FieldSelect) if (&from == this) return; Clear(); MergeFrom(from); } bool FieldSelect::IsInitialized() const { return true; } void FieldSelect::InternalSwap(FieldSelect* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(FieldSelect, resultcollid_) + sizeof(FieldSelect::resultcollid_) - PROTOBUF_FIELD_OFFSET(FieldSelect, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata FieldSelect::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class FieldStore::_Internal { public: static const ::pg_query::Node& xpr(const FieldStore* msg); static const ::pg_query::Node& arg(const FieldStore* msg); }; const ::pg_query::Node& FieldStore::_Internal::xpr(const FieldStore* msg) { return *msg->xpr_; } const ::pg_query::Node& FieldStore::_Internal::arg(const FieldStore* msg) { return *msg->arg_; } FieldStore::FieldStore(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), newvals_(arena), fieldnums_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FieldStore) } FieldStore::FieldStore(const FieldStore& from) : ::PROTOBUF_NAMESPACE_ID::Message(), newvals_(from.newvals_), fieldnums_(from.fieldnums_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } resulttype_ = from.resulttype_; // @@protoc_insertion_point(copy_constructor:pg_query.FieldStore) } void FieldStore::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&resulttype_) - reinterpret_cast(&xpr_)) + sizeof(resulttype_)); } FieldStore::~FieldStore() { // @@protoc_insertion_point(destructor:pg_query.FieldStore) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void FieldStore::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; } void FieldStore::ArenaDtor(void* object) { FieldStore* _this = reinterpret_cast< FieldStore* >(object); (void)_this; } void FieldStore::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void FieldStore::SetCachedSize(int size) const { _cached_size_.Set(size); } const FieldStore& FieldStore::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void FieldStore::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FieldStore) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; newvals_.Clear(); fieldnums_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; resulttype_ = 0u; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* FieldStore::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_newvals(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_fieldnums(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // uint32 resulttype = 5 [json_name = "resulttype"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { resulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* FieldStore::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FieldStore) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; for (unsigned int i = 0, n = static_cast(this->_internal_newvals_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_newvals(i), target, stream); } // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; for (unsigned int i = 0, n = static_cast(this->_internal_fieldnums_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_fieldnums(i), target, stream); } // uint32 resulttype = 5 [json_name = "resulttype"]; if (this->resulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(5, this->_internal_resulttype(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.FieldStore) return target; } size_t FieldStore::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.FieldStore) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; total_size += 1UL * this->_internal_newvals_size(); for (const auto& msg : this->newvals_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; total_size += 1UL * this->_internal_fieldnums_size(); for (const auto& msg : this->fieldnums_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // uint32 resulttype = 5 [json_name = "resulttype"]; if (this->resulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resulttype()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void FieldStore::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.FieldStore) GOOGLE_DCHECK_NE(&from, this); const FieldStore* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.FieldStore) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.FieldStore) MergeFrom(*source); } } void FieldStore::MergeFrom(const FieldStore& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FieldStore) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; newvals_.MergeFrom(from.newvals_); fieldnums_.MergeFrom(from.fieldnums_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.resulttype() != 0) { _internal_set_resulttype(from._internal_resulttype()); } } void FieldStore::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.FieldStore) if (&from == this) return; Clear(); MergeFrom(from); } void FieldStore::CopyFrom(const FieldStore& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FieldStore) if (&from == this) return; Clear(); MergeFrom(from); } bool FieldStore::IsInitialized() const { return true; } void FieldStore::InternalSwap(FieldStore* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); newvals_.InternalSwap(&other->newvals_); fieldnums_.InternalSwap(&other->fieldnums_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(FieldStore, resulttype_) + sizeof(FieldStore::resulttype_) - PROTOBUF_FIELD_OFFSET(FieldStore, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata FieldStore::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RelabelType::_Internal { public: static const ::pg_query::Node& xpr(const RelabelType* msg); static const ::pg_query::Node& arg(const RelabelType* msg); }; const ::pg_query::Node& RelabelType::_Internal::xpr(const RelabelType* msg) { return *msg->xpr_; } const ::pg_query::Node& RelabelType::_Internal::arg(const RelabelType* msg) { return *msg->arg_; } RelabelType::RelabelType(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RelabelType) } RelabelType::RelabelType(const RelabelType& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } ::memcpy(&resulttype_, &from.resulttype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&resulttype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RelabelType) } void RelabelType::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } RelabelType::~RelabelType() { // @@protoc_insertion_point(destructor:pg_query.RelabelType) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RelabelType::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; } void RelabelType::ArenaDtor(void* object) { RelabelType* _this = reinterpret_cast< RelabelType* >(object); (void)_this; } void RelabelType::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RelabelType::SetCachedSize(int size) const { _cached_size_.Set(size); } const RelabelType& RelabelType::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RelabelType::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RelabelType) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; ::memset(&resulttype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&resulttype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RelabelType::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resulttype = 3 [json_name = "resulttype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { resulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 resulttypmod = 4 [json_name = "resulttypmod"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { resulttypmod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resultcollid = 5 [json_name = "resultcollid"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { resultcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_relabelformat(static_cast<::pg_query::CoercionForm>(val)); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RelabelType::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RelabelType) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->resulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_resulttype(), target); } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; if (this->resulttypmod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_resulttypmod(), target); } // uint32 resultcollid = 5 [json_name = "resultcollid"]; if (this->resultcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(5, this->_internal_resultcollid(), target); } // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; if (this->relabelformat() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 6, this->_internal_relabelformat(), target); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RelabelType) return target; } size_t RelabelType::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RelabelType) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->resulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resulttype()); } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; if (this->resulttypmod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_resulttypmod()); } // uint32 resultcollid = 5 [json_name = "resultcollid"]; if (this->resultcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resultcollid()); } // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; if (this->relabelformat() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_relabelformat()); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RelabelType::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RelabelType) GOOGLE_DCHECK_NE(&from, this); const RelabelType* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RelabelType) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RelabelType) MergeFrom(*source); } } void RelabelType::MergeFrom(const RelabelType& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RelabelType) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.resulttype() != 0) { _internal_set_resulttype(from._internal_resulttype()); } if (from.resulttypmod() != 0) { _internal_set_resulttypmod(from._internal_resulttypmod()); } if (from.resultcollid() != 0) { _internal_set_resultcollid(from._internal_resultcollid()); } if (from.relabelformat() != 0) { _internal_set_relabelformat(from._internal_relabelformat()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void RelabelType::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RelabelType) if (&from == this) return; Clear(); MergeFrom(from); } void RelabelType::CopyFrom(const RelabelType& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RelabelType) if (&from == this) return; Clear(); MergeFrom(from); } bool RelabelType::IsInitialized() const { return true; } void RelabelType::InternalSwap(RelabelType* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RelabelType, location_) + sizeof(RelabelType::location_) - PROTOBUF_FIELD_OFFSET(RelabelType, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RelabelType::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CoerceViaIO::_Internal { public: static const ::pg_query::Node& xpr(const CoerceViaIO* msg); static const ::pg_query::Node& arg(const CoerceViaIO* msg); }; const ::pg_query::Node& CoerceViaIO::_Internal::xpr(const CoerceViaIO* msg) { return *msg->xpr_; } const ::pg_query::Node& CoerceViaIO::_Internal::arg(const CoerceViaIO* msg) { return *msg->arg_; } CoerceViaIO::CoerceViaIO(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CoerceViaIO) } CoerceViaIO::CoerceViaIO(const CoerceViaIO& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } ::memcpy(&resulttype_, &from.resulttype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&resulttype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CoerceViaIO) } void CoerceViaIO::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } CoerceViaIO::~CoerceViaIO() { // @@protoc_insertion_point(destructor:pg_query.CoerceViaIO) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CoerceViaIO::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; } void CoerceViaIO::ArenaDtor(void* object) { CoerceViaIO* _this = reinterpret_cast< CoerceViaIO* >(object); (void)_this; } void CoerceViaIO::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CoerceViaIO::SetCachedSize(int size) const { _cached_size_.Set(size); } const CoerceViaIO& CoerceViaIO::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CoerceViaIO::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CoerceViaIO) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; ::memset(&resulttype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&resulttype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CoerceViaIO::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resulttype = 3 [json_name = "resulttype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { resulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resultcollid = 4 [json_name = "resultcollid"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { resultcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_coerceformat(static_cast<::pg_query::CoercionForm>(val)); } else goto handle_unusual; continue; // int32 location = 6 [json_name = "location"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CoerceViaIO::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CoerceViaIO) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->resulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_resulttype(), target); } // uint32 resultcollid = 4 [json_name = "resultcollid"]; if (this->resultcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_resultcollid(), target); } // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; if (this->coerceformat() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 5, this->_internal_coerceformat(), target); } // int32 location = 6 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(6, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CoerceViaIO) return target; } size_t CoerceViaIO::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CoerceViaIO) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->resulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resulttype()); } // uint32 resultcollid = 4 [json_name = "resultcollid"]; if (this->resultcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resultcollid()); } // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; if (this->coerceformat() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_coerceformat()); } // int32 location = 6 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CoerceViaIO::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CoerceViaIO) GOOGLE_DCHECK_NE(&from, this); const CoerceViaIO* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CoerceViaIO) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CoerceViaIO) MergeFrom(*source); } } void CoerceViaIO::MergeFrom(const CoerceViaIO& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CoerceViaIO) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.resulttype() != 0) { _internal_set_resulttype(from._internal_resulttype()); } if (from.resultcollid() != 0) { _internal_set_resultcollid(from._internal_resultcollid()); } if (from.coerceformat() != 0) { _internal_set_coerceformat(from._internal_coerceformat()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void CoerceViaIO::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CoerceViaIO) if (&from == this) return; Clear(); MergeFrom(from); } void CoerceViaIO::CopyFrom(const CoerceViaIO& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CoerceViaIO) if (&from == this) return; Clear(); MergeFrom(from); } bool CoerceViaIO::IsInitialized() const { return true; } void CoerceViaIO::InternalSwap(CoerceViaIO* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CoerceViaIO, location_) + sizeof(CoerceViaIO::location_) - PROTOBUF_FIELD_OFFSET(CoerceViaIO, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CoerceViaIO::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ArrayCoerceExpr::_Internal { public: static const ::pg_query::Node& xpr(const ArrayCoerceExpr* msg); static const ::pg_query::Node& arg(const ArrayCoerceExpr* msg); static const ::pg_query::Node& elemexpr(const ArrayCoerceExpr* msg); }; const ::pg_query::Node& ArrayCoerceExpr::_Internal::xpr(const ArrayCoerceExpr* msg) { return *msg->xpr_; } const ::pg_query::Node& ArrayCoerceExpr::_Internal::arg(const ArrayCoerceExpr* msg) { return *msg->arg_; } const ::pg_query::Node& ArrayCoerceExpr::_Internal::elemexpr(const ArrayCoerceExpr* msg) { return *msg->elemexpr_; } ArrayCoerceExpr::ArrayCoerceExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ArrayCoerceExpr) } ArrayCoerceExpr::ArrayCoerceExpr(const ArrayCoerceExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } if (from._internal_has_elemexpr()) { elemexpr_ = new ::pg_query::Node(*from.elemexpr_); } else { elemexpr_ = nullptr; } ::memcpy(&resulttype_, &from.resulttype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&resulttype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ArrayCoerceExpr) } void ArrayCoerceExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } ArrayCoerceExpr::~ArrayCoerceExpr() { // @@protoc_insertion_point(destructor:pg_query.ArrayCoerceExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ArrayCoerceExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; if (this != internal_default_instance()) delete elemexpr_; } void ArrayCoerceExpr::ArenaDtor(void* object) { ArrayCoerceExpr* _this = reinterpret_cast< ArrayCoerceExpr* >(object); (void)_this; } void ArrayCoerceExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ArrayCoerceExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const ArrayCoerceExpr& ArrayCoerceExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ArrayCoerceExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ArrayCoerceExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; if (GetArena() == nullptr && elemexpr_ != nullptr) { delete elemexpr_; } elemexpr_ = nullptr; ::memset(&resulttype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&resulttype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ArrayCoerceExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_elemexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resulttype = 4 [json_name = "resulttype"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { resulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 resulttypmod = 5 [json_name = "resulttypmod"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { resulttypmod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resultcollid = 6 [json_name = "resultcollid"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { resultcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_coerceformat(static_cast<::pg_query::CoercionForm>(val)); } else goto handle_unusual; continue; // int32 location = 8 [json_name = "location"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ArrayCoerceExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ArrayCoerceExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; if (this->has_elemexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::elemexpr(this), target, stream); } // uint32 resulttype = 4 [json_name = "resulttype"]; if (this->resulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_resulttype(), target); } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; if (this->resulttypmod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_resulttypmod(), target); } // uint32 resultcollid = 6 [json_name = "resultcollid"]; if (this->resultcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(6, this->_internal_resultcollid(), target); } // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; if (this->coerceformat() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 7, this->_internal_coerceformat(), target); } // int32 location = 8 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(8, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ArrayCoerceExpr) return target; } size_t ArrayCoerceExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ArrayCoerceExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; if (this->has_elemexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *elemexpr_); } // uint32 resulttype = 4 [json_name = "resulttype"]; if (this->resulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resulttype()); } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; if (this->resulttypmod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_resulttypmod()); } // uint32 resultcollid = 6 [json_name = "resultcollid"]; if (this->resultcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resultcollid()); } // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; if (this->coerceformat() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_coerceformat()); } // int32 location = 8 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ArrayCoerceExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ArrayCoerceExpr) GOOGLE_DCHECK_NE(&from, this); const ArrayCoerceExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ArrayCoerceExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ArrayCoerceExpr) MergeFrom(*source); } } void ArrayCoerceExpr::MergeFrom(const ArrayCoerceExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ArrayCoerceExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.has_elemexpr()) { _internal_mutable_elemexpr()->::pg_query::Node::MergeFrom(from._internal_elemexpr()); } if (from.resulttype() != 0) { _internal_set_resulttype(from._internal_resulttype()); } if (from.resulttypmod() != 0) { _internal_set_resulttypmod(from._internal_resulttypmod()); } if (from.resultcollid() != 0) { _internal_set_resultcollid(from._internal_resultcollid()); } if (from.coerceformat() != 0) { _internal_set_coerceformat(from._internal_coerceformat()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void ArrayCoerceExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ArrayCoerceExpr) if (&from == this) return; Clear(); MergeFrom(from); } void ArrayCoerceExpr::CopyFrom(const ArrayCoerceExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ArrayCoerceExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool ArrayCoerceExpr::IsInitialized() const { return true; } void ArrayCoerceExpr::InternalSwap(ArrayCoerceExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, location_) + sizeof(ArrayCoerceExpr::location_) - PROTOBUF_FIELD_OFFSET(ArrayCoerceExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ArrayCoerceExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ConvertRowtypeExpr::_Internal { public: static const ::pg_query::Node& xpr(const ConvertRowtypeExpr* msg); static const ::pg_query::Node& arg(const ConvertRowtypeExpr* msg); }; const ::pg_query::Node& ConvertRowtypeExpr::_Internal::xpr(const ConvertRowtypeExpr* msg) { return *msg->xpr_; } const ::pg_query::Node& ConvertRowtypeExpr::_Internal::arg(const ConvertRowtypeExpr* msg) { return *msg->arg_; } ConvertRowtypeExpr::ConvertRowtypeExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ConvertRowtypeExpr) } ConvertRowtypeExpr::ConvertRowtypeExpr(const ConvertRowtypeExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } ::memcpy(&resulttype_, &from.resulttype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&resulttype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ConvertRowtypeExpr) } void ConvertRowtypeExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } ConvertRowtypeExpr::~ConvertRowtypeExpr() { // @@protoc_insertion_point(destructor:pg_query.ConvertRowtypeExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ConvertRowtypeExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; } void ConvertRowtypeExpr::ArenaDtor(void* object) { ConvertRowtypeExpr* _this = reinterpret_cast< ConvertRowtypeExpr* >(object); (void)_this; } void ConvertRowtypeExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ConvertRowtypeExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const ConvertRowtypeExpr& ConvertRowtypeExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ConvertRowtypeExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ConvertRowtypeExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; ::memset(&resulttype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&resulttype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ConvertRowtypeExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resulttype = 3 [json_name = "resulttype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { resulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_convertformat(static_cast<::pg_query::CoercionForm>(val)); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ConvertRowtypeExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ConvertRowtypeExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->resulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_resulttype(), target); } // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; if (this->convertformat() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 4, this->_internal_convertformat(), target); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ConvertRowtypeExpr) return target; } size_t ConvertRowtypeExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ConvertRowtypeExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->resulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resulttype()); } // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; if (this->convertformat() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_convertformat()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ConvertRowtypeExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ConvertRowtypeExpr) GOOGLE_DCHECK_NE(&from, this); const ConvertRowtypeExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ConvertRowtypeExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ConvertRowtypeExpr) MergeFrom(*source); } } void ConvertRowtypeExpr::MergeFrom(const ConvertRowtypeExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ConvertRowtypeExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.resulttype() != 0) { _internal_set_resulttype(from._internal_resulttype()); } if (from.convertformat() != 0) { _internal_set_convertformat(from._internal_convertformat()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void ConvertRowtypeExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ConvertRowtypeExpr) if (&from == this) return; Clear(); MergeFrom(from); } void ConvertRowtypeExpr::CopyFrom(const ConvertRowtypeExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ConvertRowtypeExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool ConvertRowtypeExpr::IsInitialized() const { return true; } void ConvertRowtypeExpr::InternalSwap(ConvertRowtypeExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, location_) + sizeof(ConvertRowtypeExpr::location_) - PROTOBUF_FIELD_OFFSET(ConvertRowtypeExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ConvertRowtypeExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CollateExpr::_Internal { public: static const ::pg_query::Node& xpr(const CollateExpr* msg); static const ::pg_query::Node& arg(const CollateExpr* msg); }; const ::pg_query::Node& CollateExpr::_Internal::xpr(const CollateExpr* msg) { return *msg->xpr_; } const ::pg_query::Node& CollateExpr::_Internal::arg(const CollateExpr* msg) { return *msg->arg_; } CollateExpr::CollateExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CollateExpr) } CollateExpr::CollateExpr(const CollateExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } ::memcpy(&coll_oid_, &from.coll_oid_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&coll_oid_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CollateExpr) } void CollateExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } CollateExpr::~CollateExpr() { // @@protoc_insertion_point(destructor:pg_query.CollateExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CollateExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; } void CollateExpr::ArenaDtor(void* object) { CollateExpr* _this = reinterpret_cast< CollateExpr* >(object); (void)_this; } void CollateExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CollateExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const CollateExpr& CollateExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CollateExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CollateExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; ::memset(&coll_oid_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&coll_oid_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CollateExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 coll_oid = 3 [json_name = "collOid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { coll_oid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 4 [json_name = "location"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CollateExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CollateExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // uint32 coll_oid = 3 [json_name = "collOid"]; if (this->coll_oid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_coll_oid(), target); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CollateExpr) return target; } size_t CollateExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CollateExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // uint32 coll_oid = 3 [json_name = "collOid"]; if (this->coll_oid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_coll_oid()); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CollateExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CollateExpr) GOOGLE_DCHECK_NE(&from, this); const CollateExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CollateExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CollateExpr) MergeFrom(*source); } } void CollateExpr::MergeFrom(const CollateExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CollateExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.coll_oid() != 0) { _internal_set_coll_oid(from._internal_coll_oid()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void CollateExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CollateExpr) if (&from == this) return; Clear(); MergeFrom(from); } void CollateExpr::CopyFrom(const CollateExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CollateExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool CollateExpr::IsInitialized() const { return true; } void CollateExpr::InternalSwap(CollateExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CollateExpr, location_) + sizeof(CollateExpr::location_) - PROTOBUF_FIELD_OFFSET(CollateExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CollateExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CaseExpr::_Internal { public: static const ::pg_query::Node& xpr(const CaseExpr* msg); static const ::pg_query::Node& arg(const CaseExpr* msg); static const ::pg_query::Node& defresult(const CaseExpr* msg); }; const ::pg_query::Node& CaseExpr::_Internal::xpr(const CaseExpr* msg) { return *msg->xpr_; } const ::pg_query::Node& CaseExpr::_Internal::arg(const CaseExpr* msg) { return *msg->arg_; } const ::pg_query::Node& CaseExpr::_Internal::defresult(const CaseExpr* msg) { return *msg->defresult_; } CaseExpr::CaseExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CaseExpr) } CaseExpr::CaseExpr(const CaseExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } if (from._internal_has_defresult()) { defresult_ = new ::pg_query::Node(*from.defresult_); } else { defresult_ = nullptr; } ::memcpy(&casetype_, &from.casetype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&casetype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CaseExpr) } void CaseExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } CaseExpr::~CaseExpr() { // @@protoc_insertion_point(destructor:pg_query.CaseExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CaseExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; if (this != internal_default_instance()) delete defresult_; } void CaseExpr::ArenaDtor(void* object) { CaseExpr* _this = reinterpret_cast< CaseExpr* >(object); (void)_this; } void CaseExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CaseExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const CaseExpr& CaseExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CaseExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CaseExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; if (GetArena() == nullptr && defresult_ != nullptr) { delete defresult_; } defresult_ = nullptr; ::memset(&casetype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&casetype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CaseExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 casetype = 2 [json_name = "casetype"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { casetype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 casecollid = 3 [json_name = "casecollid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { casecollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 4 [json_name = "arg"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 5 [json_name = "args"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node defresult = 6 [json_name = "defresult"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_defresult(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CaseExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CaseExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 casetype = 2 [json_name = "casetype"]; if (this->casetype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_casetype(), target); } // uint32 casecollid = 3 [json_name = "casecollid"]; if (this->casecollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_casecollid(), target); } // .pg_query.Node arg = 4 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::arg(this), target, stream); } // repeated .pg_query.Node args = 5 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_args(i), target, stream); } // .pg_query.Node defresult = 6 [json_name = "defresult"]; if (this->has_defresult()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::defresult(this), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CaseExpr) return target; } size_t CaseExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CaseExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 5 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 4 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // .pg_query.Node defresult = 6 [json_name = "defresult"]; if (this->has_defresult()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *defresult_); } // uint32 casetype = 2 [json_name = "casetype"]; if (this->casetype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_casetype()); } // uint32 casecollid = 3 [json_name = "casecollid"]; if (this->casecollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_casecollid()); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CaseExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CaseExpr) GOOGLE_DCHECK_NE(&from, this); const CaseExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CaseExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CaseExpr) MergeFrom(*source); } } void CaseExpr::MergeFrom(const CaseExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CaseExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.has_defresult()) { _internal_mutable_defresult()->::pg_query::Node::MergeFrom(from._internal_defresult()); } if (from.casetype() != 0) { _internal_set_casetype(from._internal_casetype()); } if (from.casecollid() != 0) { _internal_set_casecollid(from._internal_casecollid()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void CaseExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CaseExpr) if (&from == this) return; Clear(); MergeFrom(from); } void CaseExpr::CopyFrom(const CaseExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CaseExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool CaseExpr::IsInitialized() const { return true; } void CaseExpr::InternalSwap(CaseExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CaseExpr, location_) + sizeof(CaseExpr::location_) - PROTOBUF_FIELD_OFFSET(CaseExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CaseExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CaseWhen::_Internal { public: static const ::pg_query::Node& xpr(const CaseWhen* msg); static const ::pg_query::Node& expr(const CaseWhen* msg); static const ::pg_query::Node& result(const CaseWhen* msg); }; const ::pg_query::Node& CaseWhen::_Internal::xpr(const CaseWhen* msg) { return *msg->xpr_; } const ::pg_query::Node& CaseWhen::_Internal::expr(const CaseWhen* msg) { return *msg->expr_; } const ::pg_query::Node& CaseWhen::_Internal::result(const CaseWhen* msg) { return *msg->result_; } CaseWhen::CaseWhen(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CaseWhen) } CaseWhen::CaseWhen(const CaseWhen& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_expr()) { expr_ = new ::pg_query::Node(*from.expr_); } else { expr_ = nullptr; } if (from._internal_has_result()) { result_ = new ::pg_query::Node(*from.result_); } else { result_ = nullptr; } location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.CaseWhen) } void CaseWhen::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } CaseWhen::~CaseWhen() { // @@protoc_insertion_point(destructor:pg_query.CaseWhen) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CaseWhen::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete expr_; if (this != internal_default_instance()) delete result_; } void CaseWhen::ArenaDtor(void* object) { CaseWhen* _this = reinterpret_cast< CaseWhen* >(object); (void)_this; } void CaseWhen::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CaseWhen::SetCachedSize(int size) const { _cached_size_.Set(size); } const CaseWhen& CaseWhen::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CaseWhen::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CaseWhen) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; if (GetArena() == nullptr && result_ != nullptr) { delete result_; } result_ = nullptr; location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CaseWhen::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node expr = 2 [json_name = "expr"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node result = 3 [json_name = "result"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_result(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 4 [json_name = "location"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CaseWhen::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CaseWhen) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::expr(this), target, stream); } // .pg_query.Node result = 3 [json_name = "result"]; if (this->has_result()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::result(this), target, stream); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CaseWhen) return target; } size_t CaseWhen::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CaseWhen) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *expr_); } // .pg_query.Node result = 3 [json_name = "result"]; if (this->has_result()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *result_); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CaseWhen::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CaseWhen) GOOGLE_DCHECK_NE(&from, this); const CaseWhen* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CaseWhen) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CaseWhen) MergeFrom(*source); } } void CaseWhen::MergeFrom(const CaseWhen& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CaseWhen) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_expr()) { _internal_mutable_expr()->::pg_query::Node::MergeFrom(from._internal_expr()); } if (from.has_result()) { _internal_mutable_result()->::pg_query::Node::MergeFrom(from._internal_result()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void CaseWhen::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CaseWhen) if (&from == this) return; Clear(); MergeFrom(from); } void CaseWhen::CopyFrom(const CaseWhen& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CaseWhen) if (&from == this) return; Clear(); MergeFrom(from); } bool CaseWhen::IsInitialized() const { return true; } void CaseWhen::InternalSwap(CaseWhen* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CaseWhen, location_) + sizeof(CaseWhen::location_) - PROTOBUF_FIELD_OFFSET(CaseWhen, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CaseWhen::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CaseTestExpr::_Internal { public: static const ::pg_query::Node& xpr(const CaseTestExpr* msg); }; const ::pg_query::Node& CaseTestExpr::_Internal::xpr(const CaseTestExpr* msg) { return *msg->xpr_; } CaseTestExpr::CaseTestExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CaseTestExpr) } CaseTestExpr::CaseTestExpr(const CaseTestExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&type_id_, &from.type_id_, static_cast(reinterpret_cast(&collation_) - reinterpret_cast(&type_id_)) + sizeof(collation_)); // @@protoc_insertion_point(copy_constructor:pg_query.CaseTestExpr) } void CaseTestExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&collation_) - reinterpret_cast(&xpr_)) + sizeof(collation_)); } CaseTestExpr::~CaseTestExpr() { // @@protoc_insertion_point(destructor:pg_query.CaseTestExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CaseTestExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void CaseTestExpr::ArenaDtor(void* object) { CaseTestExpr* _this = reinterpret_cast< CaseTestExpr* >(object); (void)_this; } void CaseTestExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CaseTestExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const CaseTestExpr& CaseTestExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CaseTestExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CaseTestExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&type_id_, 0, static_cast( reinterpret_cast(&collation_) - reinterpret_cast(&type_id_)) + sizeof(collation_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CaseTestExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 type_id = 2 [json_name = "typeId"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { type_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 type_mod = 3 [json_name = "typeMod"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { type_mod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 collation = 4 [json_name = "collation"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { collation_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CaseTestExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CaseTestExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->type_id() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_type_id(), target); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->type_mod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_type_mod(), target); } // uint32 collation = 4 [json_name = "collation"]; if (this->collation() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_collation(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CaseTestExpr) return target; } size_t CaseTestExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CaseTestExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->type_id() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_type_id()); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->type_mod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_type_mod()); } // uint32 collation = 4 [json_name = "collation"]; if (this->collation() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_collation()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CaseTestExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CaseTestExpr) GOOGLE_DCHECK_NE(&from, this); const CaseTestExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CaseTestExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CaseTestExpr) MergeFrom(*source); } } void CaseTestExpr::MergeFrom(const CaseTestExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CaseTestExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.type_id() != 0) { _internal_set_type_id(from._internal_type_id()); } if (from.type_mod() != 0) { _internal_set_type_mod(from._internal_type_mod()); } if (from.collation() != 0) { _internal_set_collation(from._internal_collation()); } } void CaseTestExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CaseTestExpr) if (&from == this) return; Clear(); MergeFrom(from); } void CaseTestExpr::CopyFrom(const CaseTestExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CaseTestExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool CaseTestExpr::IsInitialized() const { return true; } void CaseTestExpr::InternalSwap(CaseTestExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CaseTestExpr, collation_) + sizeof(CaseTestExpr::collation_) - PROTOBUF_FIELD_OFFSET(CaseTestExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CaseTestExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ArrayExpr::_Internal { public: static const ::pg_query::Node& xpr(const ArrayExpr* msg); }; const ::pg_query::Node& ArrayExpr::_Internal::xpr(const ArrayExpr* msg) { return *msg->xpr_; } ArrayExpr::ArrayExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), elements_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ArrayExpr) } ArrayExpr::ArrayExpr(const ArrayExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), elements_(from.elements_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&array_typeid_, &from.array_typeid_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&array_typeid_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ArrayExpr) } void ArrayExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } ArrayExpr::~ArrayExpr() { // @@protoc_insertion_point(destructor:pg_query.ArrayExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ArrayExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void ArrayExpr::ArenaDtor(void* object) { ArrayExpr* _this = reinterpret_cast< ArrayExpr* >(object); (void)_this; } void ArrayExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ArrayExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const ArrayExpr& ArrayExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ArrayExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ArrayExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; elements_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&array_typeid_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&array_typeid_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ArrayExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 array_typeid = 2 [json_name = "array_typeid"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { array_typeid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 array_collid = 3 [json_name = "array_collid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { array_collid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 element_typeid = 4 [json_name = "element_typeid"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { element_typeid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node elements = 5 [json_name = "elements"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_elements(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // bool multidims = 6 [json_name = "multidims"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { multidims_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ArrayExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ArrayExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 array_typeid = 2 [json_name = "array_typeid"]; if (this->array_typeid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_array_typeid(), target); } // uint32 array_collid = 3 [json_name = "array_collid"]; if (this->array_collid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_array_collid(), target); } // uint32 element_typeid = 4 [json_name = "element_typeid"]; if (this->element_typeid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_element_typeid(), target); } // repeated .pg_query.Node elements = 5 [json_name = "elements"]; for (unsigned int i = 0, n = static_cast(this->_internal_elements_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_elements(i), target, stream); } // bool multidims = 6 [json_name = "multidims"]; if (this->multidims() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_multidims(), target); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ArrayExpr) return target; } size_t ArrayExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ArrayExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node elements = 5 [json_name = "elements"]; total_size += 1UL * this->_internal_elements_size(); for (const auto& msg : this->elements_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 array_typeid = 2 [json_name = "array_typeid"]; if (this->array_typeid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_array_typeid()); } // uint32 array_collid = 3 [json_name = "array_collid"]; if (this->array_collid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_array_collid()); } // uint32 element_typeid = 4 [json_name = "element_typeid"]; if (this->element_typeid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_element_typeid()); } // bool multidims = 6 [json_name = "multidims"]; if (this->multidims() != 0) { total_size += 1 + 1; } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ArrayExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ArrayExpr) GOOGLE_DCHECK_NE(&from, this); const ArrayExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ArrayExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ArrayExpr) MergeFrom(*source); } } void ArrayExpr::MergeFrom(const ArrayExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ArrayExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; elements_.MergeFrom(from.elements_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.array_typeid() != 0) { _internal_set_array_typeid(from._internal_array_typeid()); } if (from.array_collid() != 0) { _internal_set_array_collid(from._internal_array_collid()); } if (from.element_typeid() != 0) { _internal_set_element_typeid(from._internal_element_typeid()); } if (from.multidims() != 0) { _internal_set_multidims(from._internal_multidims()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void ArrayExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ArrayExpr) if (&from == this) return; Clear(); MergeFrom(from); } void ArrayExpr::CopyFrom(const ArrayExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ArrayExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool ArrayExpr::IsInitialized() const { return true; } void ArrayExpr::InternalSwap(ArrayExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); elements_.InternalSwap(&other->elements_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ArrayExpr, location_) + sizeof(ArrayExpr::location_) - PROTOBUF_FIELD_OFFSET(ArrayExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ArrayExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RowExpr::_Internal { public: static const ::pg_query::Node& xpr(const RowExpr* msg); }; const ::pg_query::Node& RowExpr::_Internal::xpr(const RowExpr* msg) { return *msg->xpr_; } RowExpr::RowExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena), colnames_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RowExpr) } RowExpr::RowExpr(const RowExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_), colnames_(from.colnames_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&row_typeid_, &from.row_typeid_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&row_typeid_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RowExpr) } void RowExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } RowExpr::~RowExpr() { // @@protoc_insertion_point(destructor:pg_query.RowExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RowExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void RowExpr::ArenaDtor(void* object) { RowExpr* _this = reinterpret_cast< RowExpr* >(object); (void)_this; } void RowExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RowExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const RowExpr& RowExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RowExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RowExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); colnames_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&row_typeid_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&row_typeid_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RowExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 2 [json_name = "args"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // uint32 row_typeid = 3 [json_name = "row_typeid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { row_typeid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_row_format(static_cast<::pg_query::CoercionForm>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_colnames(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // int32 location = 6 [json_name = "location"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RowExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RowExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // repeated .pg_query.Node args = 2 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_args(i), target, stream); } // uint32 row_typeid = 3 [json_name = "row_typeid"]; if (this->row_typeid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_row_typeid(), target); } // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; if (this->row_format() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 4, this->_internal_row_format(), target); } // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; for (unsigned int i = 0, n = static_cast(this->_internal_colnames_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_colnames(i), target, stream); } // int32 location = 6 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(6, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RowExpr) return target; } size_t RowExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RowExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 2 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; total_size += 1UL * this->_internal_colnames_size(); for (const auto& msg : this->colnames_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 row_typeid = 3 [json_name = "row_typeid"]; if (this->row_typeid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_row_typeid()); } // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; if (this->row_format() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_row_format()); } // int32 location = 6 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RowExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RowExpr) GOOGLE_DCHECK_NE(&from, this); const RowExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RowExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RowExpr) MergeFrom(*source); } } void RowExpr::MergeFrom(const RowExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RowExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); colnames_.MergeFrom(from.colnames_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.row_typeid() != 0) { _internal_set_row_typeid(from._internal_row_typeid()); } if (from.row_format() != 0) { _internal_set_row_format(from._internal_row_format()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void RowExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RowExpr) if (&from == this) return; Clear(); MergeFrom(from); } void RowExpr::CopyFrom(const RowExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RowExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool RowExpr::IsInitialized() const { return true; } void RowExpr::InternalSwap(RowExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); colnames_.InternalSwap(&other->colnames_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RowExpr, location_) + sizeof(RowExpr::location_) - PROTOBUF_FIELD_OFFSET(RowExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RowExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RowCompareExpr::_Internal { public: static const ::pg_query::Node& xpr(const RowCompareExpr* msg); }; const ::pg_query::Node& RowCompareExpr::_Internal::xpr(const RowCompareExpr* msg) { return *msg->xpr_; } RowCompareExpr::RowCompareExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), opnos_(arena), opfamilies_(arena), inputcollids_(arena), largs_(arena), rargs_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RowCompareExpr) } RowCompareExpr::RowCompareExpr(const RowCompareExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), opnos_(from.opnos_), opfamilies_(from.opfamilies_), inputcollids_(from.inputcollids_), largs_(from.largs_), rargs_(from.rargs_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } rctype_ = from.rctype_; // @@protoc_insertion_point(copy_constructor:pg_query.RowCompareExpr) } void RowCompareExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&rctype_) - reinterpret_cast(&xpr_)) + sizeof(rctype_)); } RowCompareExpr::~RowCompareExpr() { // @@protoc_insertion_point(destructor:pg_query.RowCompareExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RowCompareExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void RowCompareExpr::ArenaDtor(void* object) { RowCompareExpr* _this = reinterpret_cast< RowCompareExpr* >(object); (void)_this; } void RowCompareExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RowCompareExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const RowCompareExpr& RowCompareExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RowCompareExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RowCompareExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; opnos_.Clear(); opfamilies_.Clear(); inputcollids_.Clear(); largs_.Clear(); rargs_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; rctype_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RowCompareExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_rctype(static_cast<::pg_query::RowCompareType>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_opnos(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_opfamilies(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_inputcollids(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node largs = 6 [json_name = "largs"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_largs(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_rargs(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RowCompareExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RowCompareExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; if (this->rctype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_rctype(), target); } // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; for (unsigned int i = 0, n = static_cast(this->_internal_opnos_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_opnos(i), target, stream); } // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; for (unsigned int i = 0, n = static_cast(this->_internal_opfamilies_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_opfamilies(i), target, stream); } // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; for (unsigned int i = 0, n = static_cast(this->_internal_inputcollids_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_inputcollids(i), target, stream); } // repeated .pg_query.Node largs = 6 [json_name = "largs"]; for (unsigned int i = 0, n = static_cast(this->_internal_largs_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_largs(i), target, stream); } // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; for (unsigned int i = 0, n = static_cast(this->_internal_rargs_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(7, this->_internal_rargs(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RowCompareExpr) return target; } size_t RowCompareExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RowCompareExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; total_size += 1UL * this->_internal_opnos_size(); for (const auto& msg : this->opnos_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; total_size += 1UL * this->_internal_opfamilies_size(); for (const auto& msg : this->opfamilies_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; total_size += 1UL * this->_internal_inputcollids_size(); for (const auto& msg : this->inputcollids_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node largs = 6 [json_name = "largs"]; total_size += 1UL * this->_internal_largs_size(); for (const auto& msg : this->largs_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; total_size += 1UL * this->_internal_rargs_size(); for (const auto& msg : this->rargs_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; if (this->rctype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_rctype()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RowCompareExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RowCompareExpr) GOOGLE_DCHECK_NE(&from, this); const RowCompareExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RowCompareExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RowCompareExpr) MergeFrom(*source); } } void RowCompareExpr::MergeFrom(const RowCompareExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RowCompareExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; opnos_.MergeFrom(from.opnos_); opfamilies_.MergeFrom(from.opfamilies_); inputcollids_.MergeFrom(from.inputcollids_); largs_.MergeFrom(from.largs_); rargs_.MergeFrom(from.rargs_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.rctype() != 0) { _internal_set_rctype(from._internal_rctype()); } } void RowCompareExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RowCompareExpr) if (&from == this) return; Clear(); MergeFrom(from); } void RowCompareExpr::CopyFrom(const RowCompareExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RowCompareExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool RowCompareExpr::IsInitialized() const { return true; } void RowCompareExpr::InternalSwap(RowCompareExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); opnos_.InternalSwap(&other->opnos_); opfamilies_.InternalSwap(&other->opfamilies_); inputcollids_.InternalSwap(&other->inputcollids_); largs_.InternalSwap(&other->largs_); rargs_.InternalSwap(&other->rargs_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RowCompareExpr, rctype_) + sizeof(RowCompareExpr::rctype_) - PROTOBUF_FIELD_OFFSET(RowCompareExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RowCompareExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CoalesceExpr::_Internal { public: static const ::pg_query::Node& xpr(const CoalesceExpr* msg); }; const ::pg_query::Node& CoalesceExpr::_Internal::xpr(const CoalesceExpr* msg) { return *msg->xpr_; } CoalesceExpr::CoalesceExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CoalesceExpr) } CoalesceExpr::CoalesceExpr(const CoalesceExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&coalescetype_, &from.coalescetype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&coalescetype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CoalesceExpr) } void CoalesceExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } CoalesceExpr::~CoalesceExpr() { // @@protoc_insertion_point(destructor:pg_query.CoalesceExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CoalesceExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void CoalesceExpr::ArenaDtor(void* object) { CoalesceExpr* _this = reinterpret_cast< CoalesceExpr* >(object); (void)_this; } void CoalesceExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CoalesceExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const CoalesceExpr& CoalesceExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CoalesceExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CoalesceExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&coalescetype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&coalescetype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CoalesceExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 coalescetype = 2 [json_name = "coalescetype"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { coalescetype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { coalescecollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 4 [json_name = "args"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CoalesceExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CoalesceExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 coalescetype = 2 [json_name = "coalescetype"]; if (this->coalescetype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_coalescetype(), target); } // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; if (this->coalescecollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_coalescecollid(), target); } // repeated .pg_query.Node args = 4 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_args(i), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CoalesceExpr) return target; } size_t CoalesceExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CoalesceExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 4 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 coalescetype = 2 [json_name = "coalescetype"]; if (this->coalescetype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_coalescetype()); } // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; if (this->coalescecollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_coalescecollid()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CoalesceExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CoalesceExpr) GOOGLE_DCHECK_NE(&from, this); const CoalesceExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CoalesceExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CoalesceExpr) MergeFrom(*source); } } void CoalesceExpr::MergeFrom(const CoalesceExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CoalesceExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.coalescetype() != 0) { _internal_set_coalescetype(from._internal_coalescetype()); } if (from.coalescecollid() != 0) { _internal_set_coalescecollid(from._internal_coalescecollid()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void CoalesceExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CoalesceExpr) if (&from == this) return; Clear(); MergeFrom(from); } void CoalesceExpr::CopyFrom(const CoalesceExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CoalesceExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool CoalesceExpr::IsInitialized() const { return true; } void CoalesceExpr::InternalSwap(CoalesceExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CoalesceExpr, location_) + sizeof(CoalesceExpr::location_) - PROTOBUF_FIELD_OFFSET(CoalesceExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CoalesceExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class MinMaxExpr::_Internal { public: static const ::pg_query::Node& xpr(const MinMaxExpr* msg); }; const ::pg_query::Node& MinMaxExpr::_Internal::xpr(const MinMaxExpr* msg) { return *msg->xpr_; } MinMaxExpr::MinMaxExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.MinMaxExpr) } MinMaxExpr::MinMaxExpr(const MinMaxExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&minmaxtype_, &from.minmaxtype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&minmaxtype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.MinMaxExpr) } void MinMaxExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } MinMaxExpr::~MinMaxExpr() { // @@protoc_insertion_point(destructor:pg_query.MinMaxExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void MinMaxExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void MinMaxExpr::ArenaDtor(void* object) { MinMaxExpr* _this = reinterpret_cast< MinMaxExpr* >(object); (void)_this; } void MinMaxExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void MinMaxExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const MinMaxExpr& MinMaxExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void MinMaxExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.MinMaxExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&minmaxtype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&minmaxtype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* MinMaxExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { minmaxtype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { minmaxcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 inputcollid = 4 [json_name = "inputcollid"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { inputcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.MinMaxOp op = 5 [json_name = "op"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_op(static_cast<::pg_query::MinMaxOp>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 6 [json_name = "args"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* MinMaxExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.MinMaxExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; if (this->minmaxtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_minmaxtype(), target); } // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; if (this->minmaxcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_minmaxcollid(), target); } // uint32 inputcollid = 4 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_inputcollid(), target); } // .pg_query.MinMaxOp op = 5 [json_name = "op"]; if (this->op() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 5, this->_internal_op(), target); } // repeated .pg_query.Node args = 6 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_args(i), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.MinMaxExpr) return target; } size_t MinMaxExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.MinMaxExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 6 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; if (this->minmaxtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_minmaxtype()); } // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; if (this->minmaxcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_minmaxcollid()); } // uint32 inputcollid = 4 [json_name = "inputcollid"]; if (this->inputcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_inputcollid()); } // .pg_query.MinMaxOp op = 5 [json_name = "op"]; if (this->op() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_op()); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void MinMaxExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.MinMaxExpr) GOOGLE_DCHECK_NE(&from, this); const MinMaxExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.MinMaxExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.MinMaxExpr) MergeFrom(*source); } } void MinMaxExpr::MergeFrom(const MinMaxExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.MinMaxExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.minmaxtype() != 0) { _internal_set_minmaxtype(from._internal_minmaxtype()); } if (from.minmaxcollid() != 0) { _internal_set_minmaxcollid(from._internal_minmaxcollid()); } if (from.inputcollid() != 0) { _internal_set_inputcollid(from._internal_inputcollid()); } if (from.op() != 0) { _internal_set_op(from._internal_op()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void MinMaxExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.MinMaxExpr) if (&from == this) return; Clear(); MergeFrom(from); } void MinMaxExpr::CopyFrom(const MinMaxExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.MinMaxExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool MinMaxExpr::IsInitialized() const { return true; } void MinMaxExpr::InternalSwap(MinMaxExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(MinMaxExpr, location_) + sizeof(MinMaxExpr::location_) - PROTOBUF_FIELD_OFFSET(MinMaxExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata MinMaxExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class SQLValueFunction::_Internal { public: static const ::pg_query::Node& xpr(const SQLValueFunction* msg); }; const ::pg_query::Node& SQLValueFunction::_Internal::xpr(const SQLValueFunction* msg) { return *msg->xpr_; } SQLValueFunction::SQLValueFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SQLValueFunction) } SQLValueFunction::SQLValueFunction(const SQLValueFunction& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&op_, &from.op_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&op_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.SQLValueFunction) } void SQLValueFunction::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } SQLValueFunction::~SQLValueFunction() { // @@protoc_insertion_point(destructor:pg_query.SQLValueFunction) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void SQLValueFunction::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void SQLValueFunction::ArenaDtor(void* object) { SQLValueFunction* _this = reinterpret_cast< SQLValueFunction* >(object); (void)_this; } void SQLValueFunction::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void SQLValueFunction::SetCachedSize(int size) const { _cached_size_.Set(size); } const SQLValueFunction& SQLValueFunction::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void SQLValueFunction::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SQLValueFunction) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&op_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&op_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* SQLValueFunction::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_op(static_cast<::pg_query::SQLValueFunctionOp>(val)); } else goto handle_unusual; continue; // uint32 type = 3 [json_name = "type"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 typmod = 4 [json_name = "typmod"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { typmod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* SQLValueFunction::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SQLValueFunction) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; if (this->op() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_op(), target); } // uint32 type = 3 [json_name = "type"]; if (this->type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_type(), target); } // int32 typmod = 4 [json_name = "typmod"]; if (this->typmod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_typmod(), target); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.SQLValueFunction) return target; } size_t SQLValueFunction::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.SQLValueFunction) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; if (this->op() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_op()); } // uint32 type = 3 [json_name = "type"]; if (this->type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_type()); } // int32 typmod = 4 [json_name = "typmod"]; if (this->typmod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_typmod()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void SQLValueFunction::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.SQLValueFunction) GOOGLE_DCHECK_NE(&from, this); const SQLValueFunction* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.SQLValueFunction) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.SQLValueFunction) MergeFrom(*source); } } void SQLValueFunction::MergeFrom(const SQLValueFunction& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SQLValueFunction) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.op() != 0) { _internal_set_op(from._internal_op()); } if (from.type() != 0) { _internal_set_type(from._internal_type()); } if (from.typmod() != 0) { _internal_set_typmod(from._internal_typmod()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void SQLValueFunction::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.SQLValueFunction) if (&from == this) return; Clear(); MergeFrom(from); } void SQLValueFunction::CopyFrom(const SQLValueFunction& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SQLValueFunction) if (&from == this) return; Clear(); MergeFrom(from); } bool SQLValueFunction::IsInitialized() const { return true; } void SQLValueFunction::InternalSwap(SQLValueFunction* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(SQLValueFunction, location_) + sizeof(SQLValueFunction::location_) - PROTOBUF_FIELD_OFFSET(SQLValueFunction, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata SQLValueFunction::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class XmlExpr::_Internal { public: static const ::pg_query::Node& xpr(const XmlExpr* msg); }; const ::pg_query::Node& XmlExpr::_Internal::xpr(const XmlExpr* msg) { return *msg->xpr_; } XmlExpr::XmlExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), named_args_(arena), arg_names_(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.XmlExpr) } XmlExpr::XmlExpr(const XmlExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), named_args_(from.named_args_), arg_names_(from.arg_names_), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&op_, &from.op_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&op_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.XmlExpr) } void XmlExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } XmlExpr::~XmlExpr() { // @@protoc_insertion_point(destructor:pg_query.XmlExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void XmlExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete xpr_; } void XmlExpr::ArenaDtor(void* object) { XmlExpr* _this = reinterpret_cast< XmlExpr* >(object); (void)_this; } void XmlExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void XmlExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const XmlExpr& XmlExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void XmlExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.XmlExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; named_args_.Clear(); arg_names_.Clear(); args_.Clear(); name_.ClearToEmpty(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&op_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&op_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* XmlExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.XmlExprOp op = 2 [json_name = "op"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_op(static_cast<::pg_query::XmlExprOp>(val)); } else goto handle_unusual; continue; // string name = 3 [json_name = "name"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.XmlExpr.name")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_named_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_arg_names(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 6 [json_name = "args"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_xmloption(static_cast<::pg_query::XmlOptionType>(val)); } else goto handle_unusual; continue; // uint32 type = 8 [json_name = "type"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 typmod = 9 [json_name = "typmod"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { typmod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 10 [json_name = "location"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* XmlExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.XmlExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.XmlExprOp op = 2 [json_name = "op"]; if (this->op() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_op(), target); } // string name = 3 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.XmlExpr.name"); target = stream->WriteStringMaybeAliased( 3, this->_internal_name(), target); } // repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; for (unsigned int i = 0, n = static_cast(this->_internal_named_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_named_args(i), target, stream); } // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; for (unsigned int i = 0, n = static_cast(this->_internal_arg_names_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_arg_names(i), target, stream); } // repeated .pg_query.Node args = 6 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_args(i), target, stream); } // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; if (this->xmloption() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 7, this->_internal_xmloption(), target); } // uint32 type = 8 [json_name = "type"]; if (this->type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(8, this->_internal_type(), target); } // int32 typmod = 9 [json_name = "typmod"]; if (this->typmod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(9, this->_internal_typmod(), target); } // int32 location = 10 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(10, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.XmlExpr) return target; } size_t XmlExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.XmlExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; total_size += 1UL * this->_internal_named_args_size(); for (const auto& msg : this->named_args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; total_size += 1UL * this->_internal_arg_names_size(); for (const auto& msg : this->arg_names_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node args = 6 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string name = 3 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.XmlExprOp op = 2 [json_name = "op"]; if (this->op() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_op()); } // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; if (this->xmloption() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_xmloption()); } // uint32 type = 8 [json_name = "type"]; if (this->type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_type()); } // int32 typmod = 9 [json_name = "typmod"]; if (this->typmod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_typmod()); } // int32 location = 10 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void XmlExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.XmlExpr) GOOGLE_DCHECK_NE(&from, this); const XmlExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.XmlExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.XmlExpr) MergeFrom(*source); } } void XmlExpr::MergeFrom(const XmlExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.XmlExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; named_args_.MergeFrom(from.named_args_); arg_names_.MergeFrom(from.arg_names_); args_.MergeFrom(from.args_); if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.op() != 0) { _internal_set_op(from._internal_op()); } if (from.xmloption() != 0) { _internal_set_xmloption(from._internal_xmloption()); } if (from.type() != 0) { _internal_set_type(from._internal_type()); } if (from.typmod() != 0) { _internal_set_typmod(from._internal_typmod()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void XmlExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.XmlExpr) if (&from == this) return; Clear(); MergeFrom(from); } void XmlExpr::CopyFrom(const XmlExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.XmlExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool XmlExpr::IsInitialized() const { return true; } void XmlExpr::InternalSwap(XmlExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); named_args_.InternalSwap(&other->named_args_); arg_names_.InternalSwap(&other->arg_names_); args_.InternalSwap(&other->args_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(XmlExpr, location_) + sizeof(XmlExpr::location_) - PROTOBUF_FIELD_OFFSET(XmlExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata XmlExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class NullTest::_Internal { public: static const ::pg_query::Node& xpr(const NullTest* msg); static const ::pg_query::Node& arg(const NullTest* msg); }; const ::pg_query::Node& NullTest::_Internal::xpr(const NullTest* msg) { return *msg->xpr_; } const ::pg_query::Node& NullTest::_Internal::arg(const NullTest* msg) { return *msg->arg_; } NullTest::NullTest(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.NullTest) } NullTest::NullTest(const NullTest& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } ::memcpy(&nulltesttype_, &from.nulltesttype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&nulltesttype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.NullTest) } void NullTest::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } NullTest::~NullTest() { // @@protoc_insertion_point(destructor:pg_query.NullTest) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void NullTest::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; } void NullTest::ArenaDtor(void* object) { NullTest* _this = reinterpret_cast< NullTest* >(object); (void)_this; } void NullTest::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void NullTest::SetCachedSize(int size) const { _cached_size_.Set(size); } const NullTest& NullTest::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void NullTest::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.NullTest) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; ::memset(&nulltesttype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&nulltesttype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* NullTest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_nulltesttype(static_cast<::pg_query::NullTestType>(val)); } else goto handle_unusual; continue; // bool argisrow = 4 [json_name = "argisrow"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { argisrow_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* NullTest::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.NullTest) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; if (this->nulltesttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_nulltesttype(), target); } // bool argisrow = 4 [json_name = "argisrow"]; if (this->argisrow() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_argisrow(), target); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.NullTest) return target; } size_t NullTest::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.NullTest) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; if (this->nulltesttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nulltesttype()); } // bool argisrow = 4 [json_name = "argisrow"]; if (this->argisrow() != 0) { total_size += 1 + 1; } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void NullTest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.NullTest) GOOGLE_DCHECK_NE(&from, this); const NullTest* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.NullTest) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.NullTest) MergeFrom(*source); } } void NullTest::MergeFrom(const NullTest& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.NullTest) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.nulltesttype() != 0) { _internal_set_nulltesttype(from._internal_nulltesttype()); } if (from.argisrow() != 0) { _internal_set_argisrow(from._internal_argisrow()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void NullTest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.NullTest) if (&from == this) return; Clear(); MergeFrom(from); } void NullTest::CopyFrom(const NullTest& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.NullTest) if (&from == this) return; Clear(); MergeFrom(from); } bool NullTest::IsInitialized() const { return true; } void NullTest::InternalSwap(NullTest* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(NullTest, location_) + sizeof(NullTest::location_) - PROTOBUF_FIELD_OFFSET(NullTest, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata NullTest::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class BooleanTest::_Internal { public: static const ::pg_query::Node& xpr(const BooleanTest* msg); static const ::pg_query::Node& arg(const BooleanTest* msg); }; const ::pg_query::Node& BooleanTest::_Internal::xpr(const BooleanTest* msg) { return *msg->xpr_; } const ::pg_query::Node& BooleanTest::_Internal::arg(const BooleanTest* msg) { return *msg->arg_; } BooleanTest::BooleanTest(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.BooleanTest) } BooleanTest::BooleanTest(const BooleanTest& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } ::memcpy(&booltesttype_, &from.booltesttype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&booltesttype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.BooleanTest) } void BooleanTest::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } BooleanTest::~BooleanTest() { // @@protoc_insertion_point(destructor:pg_query.BooleanTest) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void BooleanTest::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; } void BooleanTest::ArenaDtor(void* object) { BooleanTest* _this = reinterpret_cast< BooleanTest* >(object); (void)_this; } void BooleanTest::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void BooleanTest::SetCachedSize(int size) const { _cached_size_.Set(size); } const BooleanTest& BooleanTest::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void BooleanTest::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.BooleanTest) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; ::memset(&booltesttype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&booltesttype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* BooleanTest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_booltesttype(static_cast<::pg_query::BoolTestType>(val)); } else goto handle_unusual; continue; // int32 location = 4 [json_name = "location"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* BooleanTest::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.BooleanTest) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; if (this->booltesttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_booltesttype(), target); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.BooleanTest) return target; } size_t BooleanTest::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.BooleanTest) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; if (this->booltesttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_booltesttype()); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void BooleanTest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.BooleanTest) GOOGLE_DCHECK_NE(&from, this); const BooleanTest* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.BooleanTest) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.BooleanTest) MergeFrom(*source); } } void BooleanTest::MergeFrom(const BooleanTest& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.BooleanTest) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.booltesttype() != 0) { _internal_set_booltesttype(from._internal_booltesttype()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void BooleanTest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.BooleanTest) if (&from == this) return; Clear(); MergeFrom(from); } void BooleanTest::CopyFrom(const BooleanTest& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.BooleanTest) if (&from == this) return; Clear(); MergeFrom(from); } bool BooleanTest::IsInitialized() const { return true; } void BooleanTest::InternalSwap(BooleanTest* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(BooleanTest, location_) + sizeof(BooleanTest::location_) - PROTOBUF_FIELD_OFFSET(BooleanTest, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata BooleanTest::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CoerceToDomain::_Internal { public: static const ::pg_query::Node& xpr(const CoerceToDomain* msg); static const ::pg_query::Node& arg(const CoerceToDomain* msg); }; const ::pg_query::Node& CoerceToDomain::_Internal::xpr(const CoerceToDomain* msg) { return *msg->xpr_; } const ::pg_query::Node& CoerceToDomain::_Internal::arg(const CoerceToDomain* msg) { return *msg->arg_; } CoerceToDomain::CoerceToDomain(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CoerceToDomain) } CoerceToDomain::CoerceToDomain(const CoerceToDomain& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } ::memcpy(&resulttype_, &from.resulttype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&resulttype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CoerceToDomain) } void CoerceToDomain::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } CoerceToDomain::~CoerceToDomain() { // @@protoc_insertion_point(destructor:pg_query.CoerceToDomain) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CoerceToDomain::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete arg_; } void CoerceToDomain::ArenaDtor(void* object) { CoerceToDomain* _this = reinterpret_cast< CoerceToDomain* >(object); (void)_this; } void CoerceToDomain::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CoerceToDomain::SetCachedSize(int size) const { _cached_size_.Set(size); } const CoerceToDomain& CoerceToDomain::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CoerceToDomain::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CoerceToDomain) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; ::memset(&resulttype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&resulttype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CoerceToDomain::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 2 [json_name = "arg"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resulttype = 3 [json_name = "resulttype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { resulttype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 resulttypmod = 4 [json_name = "resulttypmod"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { resulttypmod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resultcollid = 5 [json_name = "resultcollid"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { resultcollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_coercionformat(static_cast<::pg_query::CoercionForm>(val)); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CoerceToDomain::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CoerceToDomain) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg(this), target, stream); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->resulttype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_resulttype(), target); } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; if (this->resulttypmod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_resulttypmod(), target); } // uint32 resultcollid = 5 [json_name = "resultcollid"]; if (this->resultcollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(5, this->_internal_resultcollid(), target); } // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; if (this->coercionformat() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 6, this->_internal_coercionformat(), target); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CoerceToDomain) return target; } size_t CoerceToDomain::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CoerceToDomain) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node arg = 2 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // uint32 resulttype = 3 [json_name = "resulttype"]; if (this->resulttype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resulttype()); } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; if (this->resulttypmod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_resulttypmod()); } // uint32 resultcollid = 5 [json_name = "resultcollid"]; if (this->resultcollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resultcollid()); } // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; if (this->coercionformat() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_coercionformat()); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CoerceToDomain::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CoerceToDomain) GOOGLE_DCHECK_NE(&from, this); const CoerceToDomain* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CoerceToDomain) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CoerceToDomain) MergeFrom(*source); } } void CoerceToDomain::MergeFrom(const CoerceToDomain& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CoerceToDomain) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.resulttype() != 0) { _internal_set_resulttype(from._internal_resulttype()); } if (from.resulttypmod() != 0) { _internal_set_resulttypmod(from._internal_resulttypmod()); } if (from.resultcollid() != 0) { _internal_set_resultcollid(from._internal_resultcollid()); } if (from.coercionformat() != 0) { _internal_set_coercionformat(from._internal_coercionformat()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void CoerceToDomain::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CoerceToDomain) if (&from == this) return; Clear(); MergeFrom(from); } void CoerceToDomain::CopyFrom(const CoerceToDomain& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CoerceToDomain) if (&from == this) return; Clear(); MergeFrom(from); } bool CoerceToDomain::IsInitialized() const { return true; } void CoerceToDomain::InternalSwap(CoerceToDomain* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CoerceToDomain, location_) + sizeof(CoerceToDomain::location_) - PROTOBUF_FIELD_OFFSET(CoerceToDomain, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CoerceToDomain::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CoerceToDomainValue::_Internal { public: static const ::pg_query::Node& xpr(const CoerceToDomainValue* msg); }; const ::pg_query::Node& CoerceToDomainValue::_Internal::xpr(const CoerceToDomainValue* msg) { return *msg->xpr_; } CoerceToDomainValue::CoerceToDomainValue(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CoerceToDomainValue) } CoerceToDomainValue::CoerceToDomainValue(const CoerceToDomainValue& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&type_id_, &from.type_id_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&type_id_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.CoerceToDomainValue) } void CoerceToDomainValue::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } CoerceToDomainValue::~CoerceToDomainValue() { // @@protoc_insertion_point(destructor:pg_query.CoerceToDomainValue) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CoerceToDomainValue::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void CoerceToDomainValue::ArenaDtor(void* object) { CoerceToDomainValue* _this = reinterpret_cast< CoerceToDomainValue* >(object); (void)_this; } void CoerceToDomainValue::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CoerceToDomainValue::SetCachedSize(int size) const { _cached_size_.Set(size); } const CoerceToDomainValue& CoerceToDomainValue::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CoerceToDomainValue::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CoerceToDomainValue) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&type_id_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&type_id_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CoerceToDomainValue::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 type_id = 2 [json_name = "typeId"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { type_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 type_mod = 3 [json_name = "typeMod"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { type_mod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 collation = 4 [json_name = "collation"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { collation_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CoerceToDomainValue::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CoerceToDomainValue) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->type_id() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_type_id(), target); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->type_mod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_type_mod(), target); } // uint32 collation = 4 [json_name = "collation"]; if (this->collation() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_collation(), target); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CoerceToDomainValue) return target; } size_t CoerceToDomainValue::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CoerceToDomainValue) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->type_id() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_type_id()); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->type_mod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_type_mod()); } // uint32 collation = 4 [json_name = "collation"]; if (this->collation() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_collation()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CoerceToDomainValue::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CoerceToDomainValue) GOOGLE_DCHECK_NE(&from, this); const CoerceToDomainValue* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CoerceToDomainValue) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CoerceToDomainValue) MergeFrom(*source); } } void CoerceToDomainValue::MergeFrom(const CoerceToDomainValue& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CoerceToDomainValue) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.type_id() != 0) { _internal_set_type_id(from._internal_type_id()); } if (from.type_mod() != 0) { _internal_set_type_mod(from._internal_type_mod()); } if (from.collation() != 0) { _internal_set_collation(from._internal_collation()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void CoerceToDomainValue::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CoerceToDomainValue) if (&from == this) return; Clear(); MergeFrom(from); } void CoerceToDomainValue::CopyFrom(const CoerceToDomainValue& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CoerceToDomainValue) if (&from == this) return; Clear(); MergeFrom(from); } bool CoerceToDomainValue::IsInitialized() const { return true; } void CoerceToDomainValue::InternalSwap(CoerceToDomainValue* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, location_) + sizeof(CoerceToDomainValue::location_) - PROTOBUF_FIELD_OFFSET(CoerceToDomainValue, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CoerceToDomainValue::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class SetToDefault::_Internal { public: static const ::pg_query::Node& xpr(const SetToDefault* msg); }; const ::pg_query::Node& SetToDefault::_Internal::xpr(const SetToDefault* msg) { return *msg->xpr_; } SetToDefault::SetToDefault(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SetToDefault) } SetToDefault::SetToDefault(const SetToDefault& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&type_id_, &from.type_id_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&type_id_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.SetToDefault) } void SetToDefault::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xpr_)) + sizeof(location_)); } SetToDefault::~SetToDefault() { // @@protoc_insertion_point(destructor:pg_query.SetToDefault) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void SetToDefault::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void SetToDefault::ArenaDtor(void* object) { SetToDefault* _this = reinterpret_cast< SetToDefault* >(object); (void)_this; } void SetToDefault::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void SetToDefault::SetCachedSize(int size) const { _cached_size_.Set(size); } const SetToDefault& SetToDefault::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void SetToDefault::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SetToDefault) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&type_id_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&type_id_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* SetToDefault::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 type_id = 2 [json_name = "typeId"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { type_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 type_mod = 3 [json_name = "typeMod"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { type_mod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 collation = 4 [json_name = "collation"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { collation_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* SetToDefault::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SetToDefault) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->type_id() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_type_id(), target); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->type_mod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_type_mod(), target); } // uint32 collation = 4 [json_name = "collation"]; if (this->collation() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_collation(), target); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.SetToDefault) return target; } size_t SetToDefault::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.SetToDefault) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 type_id = 2 [json_name = "typeId"]; if (this->type_id() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_type_id()); } // int32 type_mod = 3 [json_name = "typeMod"]; if (this->type_mod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_type_mod()); } // uint32 collation = 4 [json_name = "collation"]; if (this->collation() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_collation()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void SetToDefault::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.SetToDefault) GOOGLE_DCHECK_NE(&from, this); const SetToDefault* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.SetToDefault) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.SetToDefault) MergeFrom(*source); } } void SetToDefault::MergeFrom(const SetToDefault& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SetToDefault) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.type_id() != 0) { _internal_set_type_id(from._internal_type_id()); } if (from.type_mod() != 0) { _internal_set_type_mod(from._internal_type_mod()); } if (from.collation() != 0) { _internal_set_collation(from._internal_collation()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void SetToDefault::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.SetToDefault) if (&from == this) return; Clear(); MergeFrom(from); } void SetToDefault::CopyFrom(const SetToDefault& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SetToDefault) if (&from == this) return; Clear(); MergeFrom(from); } bool SetToDefault::IsInitialized() const { return true; } void SetToDefault::InternalSwap(SetToDefault* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(SetToDefault, location_) + sizeof(SetToDefault::location_) - PROTOBUF_FIELD_OFFSET(SetToDefault, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata SetToDefault::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CurrentOfExpr::_Internal { public: static const ::pg_query::Node& xpr(const CurrentOfExpr* msg); }; const ::pg_query::Node& CurrentOfExpr::_Internal::xpr(const CurrentOfExpr* msg) { return *msg->xpr_; } CurrentOfExpr::CurrentOfExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CurrentOfExpr) } CurrentOfExpr::CurrentOfExpr(const CurrentOfExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); cursor_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_cursor_name().empty()) { cursor_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_cursor_name(), GetArena()); } if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&cvarno_, &from.cvarno_, static_cast(reinterpret_cast(&cursor_param_) - reinterpret_cast(&cvarno_)) + sizeof(cursor_param_)); // @@protoc_insertion_point(copy_constructor:pg_query.CurrentOfExpr) } void CurrentOfExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); cursor_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&cursor_param_) - reinterpret_cast(&xpr_)) + sizeof(cursor_param_)); } CurrentOfExpr::~CurrentOfExpr() { // @@protoc_insertion_point(destructor:pg_query.CurrentOfExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CurrentOfExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); cursor_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete xpr_; } void CurrentOfExpr::ArenaDtor(void* object) { CurrentOfExpr* _this = reinterpret_cast< CurrentOfExpr* >(object); (void)_this; } void CurrentOfExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CurrentOfExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const CurrentOfExpr& CurrentOfExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CurrentOfExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CurrentOfExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cursor_name_.ClearToEmpty(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&cvarno_, 0, static_cast( reinterpret_cast(&cursor_param_) - reinterpret_cast(&cvarno_)) + sizeof(cursor_param_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CurrentOfExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 cvarno = 2 [json_name = "cvarno"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { cvarno_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string cursor_name = 3 [json_name = "cursor_name"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_cursor_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CurrentOfExpr.cursor_name")); CHK_(ptr); } else goto handle_unusual; continue; // int32 cursor_param = 4 [json_name = "cursor_param"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { cursor_param_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CurrentOfExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CurrentOfExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 cvarno = 2 [json_name = "cvarno"]; if (this->cvarno() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_cvarno(), target); } // string cursor_name = 3 [json_name = "cursor_name"]; if (this->cursor_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_cursor_name().data(), static_cast(this->_internal_cursor_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CurrentOfExpr.cursor_name"); target = stream->WriteStringMaybeAliased( 3, this->_internal_cursor_name(), target); } // int32 cursor_param = 4 [json_name = "cursor_param"]; if (this->cursor_param() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_cursor_param(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CurrentOfExpr) return target; } size_t CurrentOfExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CurrentOfExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string cursor_name = 3 [json_name = "cursor_name"]; if (this->cursor_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_cursor_name()); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 cvarno = 2 [json_name = "cvarno"]; if (this->cvarno() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_cvarno()); } // int32 cursor_param = 4 [json_name = "cursor_param"]; if (this->cursor_param() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_cursor_param()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CurrentOfExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CurrentOfExpr) GOOGLE_DCHECK_NE(&from, this); const CurrentOfExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CurrentOfExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CurrentOfExpr) MergeFrom(*source); } } void CurrentOfExpr::MergeFrom(const CurrentOfExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CurrentOfExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.cursor_name().size() > 0) { _internal_set_cursor_name(from._internal_cursor_name()); } if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.cvarno() != 0) { _internal_set_cvarno(from._internal_cvarno()); } if (from.cursor_param() != 0) { _internal_set_cursor_param(from._internal_cursor_param()); } } void CurrentOfExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CurrentOfExpr) if (&from == this) return; Clear(); MergeFrom(from); } void CurrentOfExpr::CopyFrom(const CurrentOfExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CurrentOfExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool CurrentOfExpr::IsInitialized() const { return true; } void CurrentOfExpr::InternalSwap(CurrentOfExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); cursor_name_.Swap(&other->cursor_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CurrentOfExpr, cursor_param_) + sizeof(CurrentOfExpr::cursor_param_) - PROTOBUF_FIELD_OFFSET(CurrentOfExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CurrentOfExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class NextValueExpr::_Internal { public: static const ::pg_query::Node& xpr(const NextValueExpr* msg); }; const ::pg_query::Node& NextValueExpr::_Internal::xpr(const NextValueExpr* msg) { return *msg->xpr_; } NextValueExpr::NextValueExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.NextValueExpr) } NextValueExpr::NextValueExpr(const NextValueExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } ::memcpy(&seqid_, &from.seqid_, static_cast(reinterpret_cast(&type_id_) - reinterpret_cast(&seqid_)) + sizeof(type_id_)); // @@protoc_insertion_point(copy_constructor:pg_query.NextValueExpr) } void NextValueExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&type_id_) - reinterpret_cast(&xpr_)) + sizeof(type_id_)); } NextValueExpr::~NextValueExpr() { // @@protoc_insertion_point(destructor:pg_query.NextValueExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void NextValueExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; } void NextValueExpr::ArenaDtor(void* object) { NextValueExpr* _this = reinterpret_cast< NextValueExpr* >(object); (void)_this; } void NextValueExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void NextValueExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const NextValueExpr& NextValueExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void NextValueExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.NextValueExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; ::memset(&seqid_, 0, static_cast( reinterpret_cast(&type_id_) - reinterpret_cast(&seqid_)) + sizeof(type_id_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* NextValueExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 seqid = 2 [json_name = "seqid"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { seqid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 type_id = 3 [json_name = "typeId"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { type_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* NextValueExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.NextValueExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // uint32 seqid = 2 [json_name = "seqid"]; if (this->seqid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_seqid(), target); } // uint32 type_id = 3 [json_name = "typeId"]; if (this->type_id() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_type_id(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.NextValueExpr) return target; } size_t NextValueExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.NextValueExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // uint32 seqid = 2 [json_name = "seqid"]; if (this->seqid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_seqid()); } // uint32 type_id = 3 [json_name = "typeId"]; if (this->type_id() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_type_id()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void NextValueExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.NextValueExpr) GOOGLE_DCHECK_NE(&from, this); const NextValueExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.NextValueExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.NextValueExpr) MergeFrom(*source); } } void NextValueExpr::MergeFrom(const NextValueExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.NextValueExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.seqid() != 0) { _internal_set_seqid(from._internal_seqid()); } if (from.type_id() != 0) { _internal_set_type_id(from._internal_type_id()); } } void NextValueExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.NextValueExpr) if (&from == this) return; Clear(); MergeFrom(from); } void NextValueExpr::CopyFrom(const NextValueExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.NextValueExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool NextValueExpr::IsInitialized() const { return true; } void NextValueExpr::InternalSwap(NextValueExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(NextValueExpr, type_id_) + sizeof(NextValueExpr::type_id_) - PROTOBUF_FIELD_OFFSET(NextValueExpr, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata NextValueExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class InferenceElem::_Internal { public: static const ::pg_query::Node& xpr(const InferenceElem* msg); static const ::pg_query::Node& expr(const InferenceElem* msg); }; const ::pg_query::Node& InferenceElem::_Internal::xpr(const InferenceElem* msg) { return *msg->xpr_; } const ::pg_query::Node& InferenceElem::_Internal::expr(const InferenceElem* msg) { return *msg->expr_; } InferenceElem::InferenceElem(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.InferenceElem) } InferenceElem::InferenceElem(const InferenceElem& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_expr()) { expr_ = new ::pg_query::Node(*from.expr_); } else { expr_ = nullptr; } ::memcpy(&infercollid_, &from.infercollid_, static_cast(reinterpret_cast(&inferopclass_) - reinterpret_cast(&infercollid_)) + sizeof(inferopclass_)); // @@protoc_insertion_point(copy_constructor:pg_query.InferenceElem) } void InferenceElem::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&inferopclass_) - reinterpret_cast(&xpr_)) + sizeof(inferopclass_)); } InferenceElem::~InferenceElem() { // @@protoc_insertion_point(destructor:pg_query.InferenceElem) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void InferenceElem::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete expr_; } void InferenceElem::ArenaDtor(void* object) { InferenceElem* _this = reinterpret_cast< InferenceElem* >(object); (void)_this; } void InferenceElem::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void InferenceElem::SetCachedSize(int size) const { _cached_size_.Set(size); } const InferenceElem& InferenceElem::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void InferenceElem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.InferenceElem) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; ::memset(&infercollid_, 0, static_cast( reinterpret_cast(&inferopclass_) - reinterpret_cast(&infercollid_)) + sizeof(inferopclass_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* InferenceElem::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node expr = 2 [json_name = "expr"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 infercollid = 3 [json_name = "infercollid"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { infercollid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 inferopclass = 4 [json_name = "inferopclass"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { inferopclass_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* InferenceElem::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.InferenceElem) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::expr(this), target, stream); } // uint32 infercollid = 3 [json_name = "infercollid"]; if (this->infercollid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_infercollid(), target); } // uint32 inferopclass = 4 [json_name = "inferopclass"]; if (this->inferopclass() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_inferopclass(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.InferenceElem) return target; } size_t InferenceElem::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.InferenceElem) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *expr_); } // uint32 infercollid = 3 [json_name = "infercollid"]; if (this->infercollid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_infercollid()); } // uint32 inferopclass = 4 [json_name = "inferopclass"]; if (this->inferopclass() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_inferopclass()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void InferenceElem::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.InferenceElem) GOOGLE_DCHECK_NE(&from, this); const InferenceElem* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.InferenceElem) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.InferenceElem) MergeFrom(*source); } } void InferenceElem::MergeFrom(const InferenceElem& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.InferenceElem) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_expr()) { _internal_mutable_expr()->::pg_query::Node::MergeFrom(from._internal_expr()); } if (from.infercollid() != 0) { _internal_set_infercollid(from._internal_infercollid()); } if (from.inferopclass() != 0) { _internal_set_inferopclass(from._internal_inferopclass()); } } void InferenceElem::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.InferenceElem) if (&from == this) return; Clear(); MergeFrom(from); } void InferenceElem::CopyFrom(const InferenceElem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.InferenceElem) if (&from == this) return; Clear(); MergeFrom(from); } bool InferenceElem::IsInitialized() const { return true; } void InferenceElem::InternalSwap(InferenceElem* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(InferenceElem, inferopclass_) + sizeof(InferenceElem::inferopclass_) - PROTOBUF_FIELD_OFFSET(InferenceElem, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata InferenceElem::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class TargetEntry::_Internal { public: static const ::pg_query::Node& xpr(const TargetEntry* msg); static const ::pg_query::Node& expr(const TargetEntry* msg); }; const ::pg_query::Node& TargetEntry::_Internal::xpr(const TargetEntry* msg) { return *msg->xpr_; } const ::pg_query::Node& TargetEntry::_Internal::expr(const TargetEntry* msg) { return *msg->expr_; } TargetEntry::TargetEntry(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TargetEntry) } TargetEntry::TargetEntry(const TargetEntry& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); resname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_resname().empty()) { resname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_resname(), GetArena()); } if (from._internal_has_xpr()) { xpr_ = new ::pg_query::Node(*from.xpr_); } else { xpr_ = nullptr; } if (from._internal_has_expr()) { expr_ = new ::pg_query::Node(*from.expr_); } else { expr_ = nullptr; } ::memcpy(&resno_, &from.resno_, static_cast(reinterpret_cast(&resjunk_) - reinterpret_cast(&resno_)) + sizeof(resjunk_)); // @@protoc_insertion_point(copy_constructor:pg_query.TargetEntry) } void TargetEntry::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); resname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&xpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&resjunk_) - reinterpret_cast(&xpr_)) + sizeof(resjunk_)); } TargetEntry::~TargetEntry() { // @@protoc_insertion_point(destructor:pg_query.TargetEntry) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void TargetEntry::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); resname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete xpr_; if (this != internal_default_instance()) delete expr_; } void TargetEntry::ArenaDtor(void* object) { TargetEntry* _this = reinterpret_cast< TargetEntry* >(object); (void)_this; } void TargetEntry::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void TargetEntry::SetCachedSize(int size) const { _cached_size_.Set(size); } const TargetEntry& TargetEntry::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void TargetEntry::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TargetEntry) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; resname_.ClearToEmpty(); if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; ::memset(&resno_, 0, static_cast( reinterpret_cast(&resjunk_) - reinterpret_cast(&resno_)) + sizeof(resjunk_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* TargetEntry::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node xpr = 1 [json_name = "xpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_xpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node expr = 2 [json_name = "expr"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 resno = 3 [json_name = "resno"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { resno_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string resname = 4 [json_name = "resname"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { auto str = _internal_mutable_resname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.TargetEntry.resname")); CHK_(ptr); } else goto handle_unusual; continue; // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { ressortgroupref_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { resorigtbl_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 resorigcol = 7 [json_name = "resorigcol"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { resorigcol_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool resjunk = 8 [json_name = "resjunk"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { resjunk_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* TargetEntry::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TargetEntry) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::xpr(this), target, stream); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::expr(this), target, stream); } // int32 resno = 3 [json_name = "resno"]; if (this->resno() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_resno(), target); } // string resname = 4 [json_name = "resname"]; if (this->resname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_resname().data(), static_cast(this->_internal_resname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.TargetEntry.resname"); target = stream->WriteStringMaybeAliased( 4, this->_internal_resname(), target); } // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; if (this->ressortgroupref() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(5, this->_internal_ressortgroupref(), target); } // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; if (this->resorigtbl() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(6, this->_internal_resorigtbl(), target); } // int32 resorigcol = 7 [json_name = "resorigcol"]; if (this->resorigcol() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_resorigcol(), target); } // bool resjunk = 8 [json_name = "resjunk"]; if (this->resjunk() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(8, this->_internal_resjunk(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.TargetEntry) return target; } size_t TargetEntry::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.TargetEntry) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string resname = 4 [json_name = "resname"]; if (this->resname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_resname()); } // .pg_query.Node xpr = 1 [json_name = "xpr"]; if (this->has_xpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *xpr_); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *expr_); } // int32 resno = 3 [json_name = "resno"]; if (this->resno() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_resno()); } // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; if (this->ressortgroupref() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_ressortgroupref()); } // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; if (this->resorigtbl() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_resorigtbl()); } // int32 resorigcol = 7 [json_name = "resorigcol"]; if (this->resorigcol() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_resorigcol()); } // bool resjunk = 8 [json_name = "resjunk"]; if (this->resjunk() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void TargetEntry::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.TargetEntry) GOOGLE_DCHECK_NE(&from, this); const TargetEntry* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.TargetEntry) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.TargetEntry) MergeFrom(*source); } } void TargetEntry::MergeFrom(const TargetEntry& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TargetEntry) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.resname().size() > 0) { _internal_set_resname(from._internal_resname()); } if (from.has_xpr()) { _internal_mutable_xpr()->::pg_query::Node::MergeFrom(from._internal_xpr()); } if (from.has_expr()) { _internal_mutable_expr()->::pg_query::Node::MergeFrom(from._internal_expr()); } if (from.resno() != 0) { _internal_set_resno(from._internal_resno()); } if (from.ressortgroupref() != 0) { _internal_set_ressortgroupref(from._internal_ressortgroupref()); } if (from.resorigtbl() != 0) { _internal_set_resorigtbl(from._internal_resorigtbl()); } if (from.resorigcol() != 0) { _internal_set_resorigcol(from._internal_resorigcol()); } if (from.resjunk() != 0) { _internal_set_resjunk(from._internal_resjunk()); } } void TargetEntry::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.TargetEntry) if (&from == this) return; Clear(); MergeFrom(from); } void TargetEntry::CopyFrom(const TargetEntry& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TargetEntry) if (&from == this) return; Clear(); MergeFrom(from); } bool TargetEntry::IsInitialized() const { return true; } void TargetEntry::InternalSwap(TargetEntry* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); resname_.Swap(&other->resname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(TargetEntry, resjunk_) + sizeof(TargetEntry::resjunk_) - PROTOBUF_FIELD_OFFSET(TargetEntry, xpr_)>( reinterpret_cast(&xpr_), reinterpret_cast(&other->xpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata TargetEntry::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RangeTblRef::_Internal { public: }; RangeTblRef::RangeTblRef(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTblRef) } RangeTblRef::RangeTblRef(const RangeTblRef& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); rtindex_ = from.rtindex_; // @@protoc_insertion_point(copy_constructor:pg_query.RangeTblRef) } void RangeTblRef::SharedCtor() { rtindex_ = 0; } RangeTblRef::~RangeTblRef() { // @@protoc_insertion_point(destructor:pg_query.RangeTblRef) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RangeTblRef::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void RangeTblRef::ArenaDtor(void* object) { RangeTblRef* _this = reinterpret_cast< RangeTblRef* >(object); (void)_this; } void RangeTblRef::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RangeTblRef::SetCachedSize(int size) const { _cached_size_.Set(size); } const RangeTblRef& RangeTblRef::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_RangeTblRef_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RangeTblRef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTblRef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; rtindex_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RangeTblRef::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // int32 rtindex = 1 [json_name = "rtindex"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { rtindex_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RangeTblRef::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTblRef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // int32 rtindex = 1 [json_name = "rtindex"]; if (this->rtindex() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_rtindex(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RangeTblRef) return target; } size_t RangeTblRef::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RangeTblRef) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // int32 rtindex = 1 [json_name = "rtindex"]; if (this->rtindex() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_rtindex()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RangeTblRef::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RangeTblRef) GOOGLE_DCHECK_NE(&from, this); const RangeTblRef* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RangeTblRef) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RangeTblRef) MergeFrom(*source); } } void RangeTblRef::MergeFrom(const RangeTblRef& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTblRef) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.rtindex() != 0) { _internal_set_rtindex(from._internal_rtindex()); } } void RangeTblRef::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RangeTblRef) if (&from == this) return; Clear(); MergeFrom(from); } void RangeTblRef::CopyFrom(const RangeTblRef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTblRef) if (&from == this) return; Clear(); MergeFrom(from); } bool RangeTblRef::IsInitialized() const { return true; } void RangeTblRef::InternalSwap(RangeTblRef* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); swap(rtindex_, other->rtindex_); } ::PROTOBUF_NAMESPACE_ID::Metadata RangeTblRef::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class JoinExpr::_Internal { public: static const ::pg_query::Node& larg(const JoinExpr* msg); static const ::pg_query::Node& rarg(const JoinExpr* msg); static const ::pg_query::Node& quals(const JoinExpr* msg); static const ::pg_query::Alias& alias(const JoinExpr* msg); }; const ::pg_query::Node& JoinExpr::_Internal::larg(const JoinExpr* msg) { return *msg->larg_; } const ::pg_query::Node& JoinExpr::_Internal::rarg(const JoinExpr* msg) { return *msg->rarg_; } const ::pg_query::Node& JoinExpr::_Internal::quals(const JoinExpr* msg) { return *msg->quals_; } const ::pg_query::Alias& JoinExpr::_Internal::alias(const JoinExpr* msg) { return *msg->alias_; } JoinExpr::JoinExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), using_clause_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.JoinExpr) } JoinExpr::JoinExpr(const JoinExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), using_clause_(from.using_clause_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_larg()) { larg_ = new ::pg_query::Node(*from.larg_); } else { larg_ = nullptr; } if (from._internal_has_rarg()) { rarg_ = new ::pg_query::Node(*from.rarg_); } else { rarg_ = nullptr; } if (from._internal_has_quals()) { quals_ = new ::pg_query::Node(*from.quals_); } else { quals_ = nullptr; } if (from._internal_has_alias()) { alias_ = new ::pg_query::Alias(*from.alias_); } else { alias_ = nullptr; } ::memcpy(&jointype_, &from.jointype_, static_cast(reinterpret_cast(&rtindex_) - reinterpret_cast(&jointype_)) + sizeof(rtindex_)); // @@protoc_insertion_point(copy_constructor:pg_query.JoinExpr) } void JoinExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&larg_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&rtindex_) - reinterpret_cast(&larg_)) + sizeof(rtindex_)); } JoinExpr::~JoinExpr() { // @@protoc_insertion_point(destructor:pg_query.JoinExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void JoinExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete larg_; if (this != internal_default_instance()) delete rarg_; if (this != internal_default_instance()) delete quals_; if (this != internal_default_instance()) delete alias_; } void JoinExpr::ArenaDtor(void* object) { JoinExpr* _this = reinterpret_cast< JoinExpr* >(object); (void)_this; } void JoinExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void JoinExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const JoinExpr& JoinExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void JoinExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.JoinExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; using_clause_.Clear(); if (GetArena() == nullptr && larg_ != nullptr) { delete larg_; } larg_ = nullptr; if (GetArena() == nullptr && rarg_ != nullptr) { delete rarg_; } rarg_ = nullptr; if (GetArena() == nullptr && quals_ != nullptr) { delete quals_; } quals_ = nullptr; if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; ::memset(&jointype_, 0, static_cast( reinterpret_cast(&rtindex_) - reinterpret_cast(&jointype_)) + sizeof(rtindex_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* JoinExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_jointype(static_cast<::pg_query::JoinType>(val)); } else goto handle_unusual; continue; // bool is_natural = 2 [json_name = "isNatural"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { is_natural_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node larg = 3 [json_name = "larg"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_larg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node rarg = 4 [json_name = "rarg"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_rarg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_using_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node quals = 6 [json_name = "quals"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_quals(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Alias alias = 7 [json_name = "alias"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_alias(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 rtindex = 8 [json_name = "rtindex"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { rtindex_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* JoinExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.JoinExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; if (this->jointype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_jointype(), target); } // bool is_natural = 2 [json_name = "isNatural"]; if (this->is_natural() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_is_natural(), target); } // .pg_query.Node larg = 3 [json_name = "larg"]; if (this->has_larg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::larg(this), target, stream); } // .pg_query.Node rarg = 4 [json_name = "rarg"]; if (this->has_rarg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::rarg(this), target, stream); } // repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_using_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_using_clause(i), target, stream); } // .pg_query.Node quals = 6 [json_name = "quals"]; if (this->has_quals()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::quals(this), target, stream); } // .pg_query.Alias alias = 7 [json_name = "alias"]; if (this->has_alias()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 7, _Internal::alias(this), target, stream); } // int32 rtindex = 8 [json_name = "rtindex"]; if (this->rtindex() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(8, this->_internal_rtindex(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.JoinExpr) return target; } size_t JoinExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.JoinExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; total_size += 1UL * this->_internal_using_clause_size(); for (const auto& msg : this->using_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node larg = 3 [json_name = "larg"]; if (this->has_larg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *larg_); } // .pg_query.Node rarg = 4 [json_name = "rarg"]; if (this->has_rarg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *rarg_); } // .pg_query.Node quals = 6 [json_name = "quals"]; if (this->has_quals()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *quals_); } // .pg_query.Alias alias = 7 [json_name = "alias"]; if (this->has_alias()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *alias_); } // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; if (this->jointype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_jointype()); } // bool is_natural = 2 [json_name = "isNatural"]; if (this->is_natural() != 0) { total_size += 1 + 1; } // int32 rtindex = 8 [json_name = "rtindex"]; if (this->rtindex() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_rtindex()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void JoinExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.JoinExpr) GOOGLE_DCHECK_NE(&from, this); const JoinExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.JoinExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.JoinExpr) MergeFrom(*source); } } void JoinExpr::MergeFrom(const JoinExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.JoinExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; using_clause_.MergeFrom(from.using_clause_); if (from.has_larg()) { _internal_mutable_larg()->::pg_query::Node::MergeFrom(from._internal_larg()); } if (from.has_rarg()) { _internal_mutable_rarg()->::pg_query::Node::MergeFrom(from._internal_rarg()); } if (from.has_quals()) { _internal_mutable_quals()->::pg_query::Node::MergeFrom(from._internal_quals()); } if (from.has_alias()) { _internal_mutable_alias()->::pg_query::Alias::MergeFrom(from._internal_alias()); } if (from.jointype() != 0) { _internal_set_jointype(from._internal_jointype()); } if (from.is_natural() != 0) { _internal_set_is_natural(from._internal_is_natural()); } if (from.rtindex() != 0) { _internal_set_rtindex(from._internal_rtindex()); } } void JoinExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.JoinExpr) if (&from == this) return; Clear(); MergeFrom(from); } void JoinExpr::CopyFrom(const JoinExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.JoinExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool JoinExpr::IsInitialized() const { return true; } void JoinExpr::InternalSwap(JoinExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); using_clause_.InternalSwap(&other->using_clause_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(JoinExpr, rtindex_) + sizeof(JoinExpr::rtindex_) - PROTOBUF_FIELD_OFFSET(JoinExpr, larg_)>( reinterpret_cast(&larg_), reinterpret_cast(&other->larg_)); } ::PROTOBUF_NAMESPACE_ID::Metadata JoinExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class FromExpr::_Internal { public: static const ::pg_query::Node& quals(const FromExpr* msg); }; const ::pg_query::Node& FromExpr::_Internal::quals(const FromExpr* msg) { return *msg->quals_; } FromExpr::FromExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), fromlist_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FromExpr) } FromExpr::FromExpr(const FromExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), fromlist_(from.fromlist_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_quals()) { quals_ = new ::pg_query::Node(*from.quals_); } else { quals_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.FromExpr) } void FromExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); quals_ = nullptr; } FromExpr::~FromExpr() { // @@protoc_insertion_point(destructor:pg_query.FromExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void FromExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete quals_; } void FromExpr::ArenaDtor(void* object) { FromExpr* _this = reinterpret_cast< FromExpr* >(object); (void)_this; } void FromExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void FromExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const FromExpr& FromExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void FromExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FromExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; fromlist_.Clear(); if (GetArena() == nullptr && quals_ != nullptr) { delete quals_; } quals_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* FromExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_fromlist(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node quals = 2 [json_name = "quals"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_quals(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* FromExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FromExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; for (unsigned int i = 0, n = static_cast(this->_internal_fromlist_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_fromlist(i), target, stream); } // .pg_query.Node quals = 2 [json_name = "quals"]; if (this->has_quals()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::quals(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.FromExpr) return target; } size_t FromExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.FromExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; total_size += 1UL * this->_internal_fromlist_size(); for (const auto& msg : this->fromlist_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node quals = 2 [json_name = "quals"]; if (this->has_quals()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *quals_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void FromExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.FromExpr) GOOGLE_DCHECK_NE(&from, this); const FromExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.FromExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.FromExpr) MergeFrom(*source); } } void FromExpr::MergeFrom(const FromExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FromExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; fromlist_.MergeFrom(from.fromlist_); if (from.has_quals()) { _internal_mutable_quals()->::pg_query::Node::MergeFrom(from._internal_quals()); } } void FromExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.FromExpr) if (&from == this) return; Clear(); MergeFrom(from); } void FromExpr::CopyFrom(const FromExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FromExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool FromExpr::IsInitialized() const { return true; } void FromExpr::InternalSwap(FromExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); fromlist_.InternalSwap(&other->fromlist_); swap(quals_, other->quals_); } ::PROTOBUF_NAMESPACE_ID::Metadata FromExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class OnConflictExpr::_Internal { public: static const ::pg_query::Node& arbiter_where(const OnConflictExpr* msg); static const ::pg_query::Node& on_conflict_where(const OnConflictExpr* msg); }; const ::pg_query::Node& OnConflictExpr::_Internal::arbiter_where(const OnConflictExpr* msg) { return *msg->arbiter_where_; } const ::pg_query::Node& OnConflictExpr::_Internal::on_conflict_where(const OnConflictExpr* msg) { return *msg->on_conflict_where_; } OnConflictExpr::OnConflictExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), arbiter_elems_(arena), on_conflict_set_(arena), excl_rel_tlist_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.OnConflictExpr) } OnConflictExpr::OnConflictExpr(const OnConflictExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), arbiter_elems_(from.arbiter_elems_), on_conflict_set_(from.on_conflict_set_), excl_rel_tlist_(from.excl_rel_tlist_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_arbiter_where()) { arbiter_where_ = new ::pg_query::Node(*from.arbiter_where_); } else { arbiter_where_ = nullptr; } if (from._internal_has_on_conflict_where()) { on_conflict_where_ = new ::pg_query::Node(*from.on_conflict_where_); } else { on_conflict_where_ = nullptr; } ::memcpy(&action_, &from.action_, static_cast(reinterpret_cast(&excl_rel_index_) - reinterpret_cast(&action_)) + sizeof(excl_rel_index_)); // @@protoc_insertion_point(copy_constructor:pg_query.OnConflictExpr) } void OnConflictExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&arbiter_where_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&excl_rel_index_) - reinterpret_cast(&arbiter_where_)) + sizeof(excl_rel_index_)); } OnConflictExpr::~OnConflictExpr() { // @@protoc_insertion_point(destructor:pg_query.OnConflictExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void OnConflictExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete arbiter_where_; if (this != internal_default_instance()) delete on_conflict_where_; } void OnConflictExpr::ArenaDtor(void* object) { OnConflictExpr* _this = reinterpret_cast< OnConflictExpr* >(object); (void)_this; } void OnConflictExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void OnConflictExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const OnConflictExpr& OnConflictExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void OnConflictExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.OnConflictExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; arbiter_elems_.Clear(); on_conflict_set_.Clear(); excl_rel_tlist_.Clear(); if (GetArena() == nullptr && arbiter_where_ != nullptr) { delete arbiter_where_; } arbiter_where_ = nullptr; if (GetArena() == nullptr && on_conflict_where_ != nullptr) { delete on_conflict_where_; } on_conflict_where_ = nullptr; ::memset(&action_, 0, static_cast( reinterpret_cast(&excl_rel_index_) - reinterpret_cast(&action_)) + sizeof(excl_rel_index_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* OnConflictExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.OnConflictAction action = 1 [json_name = "action"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_action(static_cast<::pg_query::OnConflictAction>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_arbiter_elems(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_arbiter_where(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 constraint = 4 [json_name = "constraint"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { constraint_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_on_conflict_set(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_on_conflict_where(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { excl_rel_index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_excl_rel_tlist(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* OnConflictExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.OnConflictExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.OnConflictAction action = 1 [json_name = "action"]; if (this->action() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_action(), target); } // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; for (unsigned int i = 0, n = static_cast(this->_internal_arbiter_elems_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_arbiter_elems(i), target, stream); } // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; if (this->has_arbiter_where()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::arbiter_where(this), target, stream); } // uint32 constraint = 4 [json_name = "constraint"]; if (this->constraint() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(4, this->_internal_constraint(), target); } // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; for (unsigned int i = 0, n = static_cast(this->_internal_on_conflict_set_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_on_conflict_set(i), target, stream); } // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; if (this->has_on_conflict_where()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::on_conflict_where(this), target, stream); } // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; if (this->excl_rel_index() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_excl_rel_index(), target); } // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; for (unsigned int i = 0, n = static_cast(this->_internal_excl_rel_tlist_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_excl_rel_tlist(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.OnConflictExpr) return target; } size_t OnConflictExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.OnConflictExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; total_size += 1UL * this->_internal_arbiter_elems_size(); for (const auto& msg : this->arbiter_elems_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; total_size += 1UL * this->_internal_on_conflict_set_size(); for (const auto& msg : this->on_conflict_set_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; total_size += 1UL * this->_internal_excl_rel_tlist_size(); for (const auto& msg : this->excl_rel_tlist_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; if (this->has_arbiter_where()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arbiter_where_); } // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; if (this->has_on_conflict_where()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *on_conflict_where_); } // .pg_query.OnConflictAction action = 1 [json_name = "action"]; if (this->action() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_action()); } // uint32 constraint = 4 [json_name = "constraint"]; if (this->constraint() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_constraint()); } // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; if (this->excl_rel_index() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_excl_rel_index()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void OnConflictExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.OnConflictExpr) GOOGLE_DCHECK_NE(&from, this); const OnConflictExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.OnConflictExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.OnConflictExpr) MergeFrom(*source); } } void OnConflictExpr::MergeFrom(const OnConflictExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.OnConflictExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; arbiter_elems_.MergeFrom(from.arbiter_elems_); on_conflict_set_.MergeFrom(from.on_conflict_set_); excl_rel_tlist_.MergeFrom(from.excl_rel_tlist_); if (from.has_arbiter_where()) { _internal_mutable_arbiter_where()->::pg_query::Node::MergeFrom(from._internal_arbiter_where()); } if (from.has_on_conflict_where()) { _internal_mutable_on_conflict_where()->::pg_query::Node::MergeFrom(from._internal_on_conflict_where()); } if (from.action() != 0) { _internal_set_action(from._internal_action()); } if (from.constraint() != 0) { _internal_set_constraint(from._internal_constraint()); } if (from.excl_rel_index() != 0) { _internal_set_excl_rel_index(from._internal_excl_rel_index()); } } void OnConflictExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.OnConflictExpr) if (&from == this) return; Clear(); MergeFrom(from); } void OnConflictExpr::CopyFrom(const OnConflictExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.OnConflictExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool OnConflictExpr::IsInitialized() const { return true; } void OnConflictExpr::InternalSwap(OnConflictExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); arbiter_elems_.InternalSwap(&other->arbiter_elems_); on_conflict_set_.InternalSwap(&other->on_conflict_set_); excl_rel_tlist_.InternalSwap(&other->excl_rel_tlist_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(OnConflictExpr, excl_rel_index_) + sizeof(OnConflictExpr::excl_rel_index_) - PROTOBUF_FIELD_OFFSET(OnConflictExpr, arbiter_where_)>( reinterpret_cast(&arbiter_where_), reinterpret_cast(&other->arbiter_where_)); } ::PROTOBUF_NAMESPACE_ID::Metadata OnConflictExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class IntoClause::_Internal { public: static const ::pg_query::RangeVar& rel(const IntoClause* msg); static const ::pg_query::Node& view_query(const IntoClause* msg); }; const ::pg_query::RangeVar& IntoClause::_Internal::rel(const IntoClause* msg) { return *msg->rel_; } const ::pg_query::Node& IntoClause::_Internal::view_query(const IntoClause* msg) { return *msg->view_query_; } IntoClause::IntoClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), col_names_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.IntoClause) } IntoClause::IntoClause(const IntoClause& from) : ::PROTOBUF_NAMESPACE_ID::Message(), col_names_(from.col_names_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); access_method_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_access_method().empty()) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_access_method(), GetArena()); } table_space_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_table_space_name().empty()) { table_space_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_table_space_name(), GetArena()); } if (from._internal_has_rel()) { rel_ = new ::pg_query::RangeVar(*from.rel_); } else { rel_ = nullptr; } if (from._internal_has_view_query()) { view_query_ = new ::pg_query::Node(*from.view_query_); } else { view_query_ = nullptr; } ::memcpy(&on_commit_, &from.on_commit_, static_cast(reinterpret_cast(&skip_data_) - reinterpret_cast(&on_commit_)) + sizeof(skip_data_)); // @@protoc_insertion_point(copy_constructor:pg_query.IntoClause) } void IntoClause::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); access_method_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); table_space_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&rel_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&skip_data_) - reinterpret_cast(&rel_)) + sizeof(skip_data_)); } IntoClause::~IntoClause() { // @@protoc_insertion_point(destructor:pg_query.IntoClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void IntoClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); access_method_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); table_space_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete rel_; if (this != internal_default_instance()) delete view_query_; } void IntoClause::ArenaDtor(void* object) { IntoClause* _this = reinterpret_cast< IntoClause* >(object); (void)_this; } void IntoClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void IntoClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const IntoClause& IntoClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void IntoClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.IntoClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; col_names_.Clear(); options_.Clear(); access_method_.ClearToEmpty(); table_space_name_.ClearToEmpty(); if (GetArena() == nullptr && rel_ != nullptr) { delete rel_; } rel_ = nullptr; if (GetArena() == nullptr && view_query_ != nullptr) { delete view_query_; } view_query_ = nullptr; ::memset(&on_commit_, 0, static_cast( reinterpret_cast(&skip_data_) - reinterpret_cast(&on_commit_)) + sizeof(skip_data_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* IntoClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar rel = 1 [json_name = "rel"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_rel(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_col_names(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // string access_method = 3 [json_name = "accessMethod"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_access_method(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.IntoClause.access_method")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 4 [json_name = "options"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_on_commit(static_cast<::pg_query::OnCommitAction>(val)); } else goto handle_unusual; continue; // string table_space_name = 6 [json_name = "tableSpaceName"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { auto str = _internal_mutable_table_space_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.IntoClause.table_space_name")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_view_query(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool skip_data = 8 [json_name = "skipData"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { skip_data_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* IntoClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.IntoClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar rel = 1 [json_name = "rel"]; if (this->has_rel()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::rel(this), target, stream); } // repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; for (unsigned int i = 0, n = static_cast(this->_internal_col_names_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_col_names(i), target, stream); } // string access_method = 3 [json_name = "accessMethod"]; if (this->access_method().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_access_method().data(), static_cast(this->_internal_access_method().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.IntoClause.access_method"); target = stream->WriteStringMaybeAliased( 3, this->_internal_access_method(), target); } // repeated .pg_query.Node options = 4 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_options(i), target, stream); } // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; if (this->on_commit() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 5, this->_internal_on_commit(), target); } // string table_space_name = 6 [json_name = "tableSpaceName"]; if (this->table_space_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_table_space_name().data(), static_cast(this->_internal_table_space_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.IntoClause.table_space_name"); target = stream->WriteStringMaybeAliased( 6, this->_internal_table_space_name(), target); } // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; if (this->has_view_query()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 7, _Internal::view_query(this), target, stream); } // bool skip_data = 8 [json_name = "skipData"]; if (this->skip_data() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(8, this->_internal_skip_data(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.IntoClause) return target; } size_t IntoClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.IntoClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; total_size += 1UL * this->_internal_col_names_size(); for (const auto& msg : this->col_names_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 4 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string access_method = 3 [json_name = "accessMethod"]; if (this->access_method().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_access_method()); } // string table_space_name = 6 [json_name = "tableSpaceName"]; if (this->table_space_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_table_space_name()); } // .pg_query.RangeVar rel = 1 [json_name = "rel"]; if (this->has_rel()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *rel_); } // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; if (this->has_view_query()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *view_query_); } // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; if (this->on_commit() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_on_commit()); } // bool skip_data = 8 [json_name = "skipData"]; if (this->skip_data() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void IntoClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.IntoClause) GOOGLE_DCHECK_NE(&from, this); const IntoClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.IntoClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.IntoClause) MergeFrom(*source); } } void IntoClause::MergeFrom(const IntoClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.IntoClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; col_names_.MergeFrom(from.col_names_); options_.MergeFrom(from.options_); if (from.access_method().size() > 0) { _internal_set_access_method(from._internal_access_method()); } if (from.table_space_name().size() > 0) { _internal_set_table_space_name(from._internal_table_space_name()); } if (from.has_rel()) { _internal_mutable_rel()->::pg_query::RangeVar::MergeFrom(from._internal_rel()); } if (from.has_view_query()) { _internal_mutable_view_query()->::pg_query::Node::MergeFrom(from._internal_view_query()); } if (from.on_commit() != 0) { _internal_set_on_commit(from._internal_on_commit()); } if (from.skip_data() != 0) { _internal_set_skip_data(from._internal_skip_data()); } } void IntoClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.IntoClause) if (&from == this) return; Clear(); MergeFrom(from); } void IntoClause::CopyFrom(const IntoClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.IntoClause) if (&from == this) return; Clear(); MergeFrom(from); } bool IntoClause::IsInitialized() const { return true; } void IntoClause::InternalSwap(IntoClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); col_names_.InternalSwap(&other->col_names_); options_.InternalSwap(&other->options_); access_method_.Swap(&other->access_method_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); table_space_name_.Swap(&other->table_space_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(IntoClause, skip_data_) + sizeof(IntoClause::skip_data_) - PROTOBUF_FIELD_OFFSET(IntoClause, rel_)>( reinterpret_cast(&rel_), reinterpret_cast(&other->rel_)); } ::PROTOBUF_NAMESPACE_ID::Metadata IntoClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RawStmt::_Internal { public: static const ::pg_query::Node& stmt(const RawStmt* msg); }; const ::pg_query::Node& RawStmt::_Internal::stmt(const RawStmt* msg) { return *msg->stmt_; } RawStmt::RawStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RawStmt) } RawStmt::RawStmt(const RawStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_stmt()) { stmt_ = new ::pg_query::Node(*from.stmt_); } else { stmt_ = nullptr; } ::memcpy(&stmt_location_, &from.stmt_location_, static_cast(reinterpret_cast(&stmt_len_) - reinterpret_cast(&stmt_location_)) + sizeof(stmt_len_)); // @@protoc_insertion_point(copy_constructor:pg_query.RawStmt) } void RawStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&stmt_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&stmt_len_) - reinterpret_cast(&stmt_)) + sizeof(stmt_len_)); } RawStmt::~RawStmt() { // @@protoc_insertion_point(destructor:pg_query.RawStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RawStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete stmt_; } void RawStmt::ArenaDtor(void* object) { RawStmt* _this = reinterpret_cast< RawStmt* >(object); (void)_this; } void RawStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RawStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const RawStmt& RawStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RawStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RawStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && stmt_ != nullptr) { delete stmt_; } stmt_ = nullptr; ::memset(&stmt_location_, 0, static_cast( reinterpret_cast(&stmt_len_) - reinterpret_cast(&stmt_location_)) + sizeof(stmt_len_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RawStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node stmt = 1 [json_name = "stmt"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 stmt_location = 2 [json_name = "stmt_location"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { stmt_location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 stmt_len = 3 [json_name = "stmt_len"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { stmt_len_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RawStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RawStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node stmt = 1 [json_name = "stmt"]; if (this->has_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::stmt(this), target, stream); } // int32 stmt_location = 2 [json_name = "stmt_location"]; if (this->stmt_location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_stmt_location(), target); } // int32 stmt_len = 3 [json_name = "stmt_len"]; if (this->stmt_len() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_stmt_len(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RawStmt) return target; } size_t RawStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RawStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node stmt = 1 [json_name = "stmt"]; if (this->has_stmt()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *stmt_); } // int32 stmt_location = 2 [json_name = "stmt_location"]; if (this->stmt_location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_stmt_location()); } // int32 stmt_len = 3 [json_name = "stmt_len"]; if (this->stmt_len() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_stmt_len()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RawStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RawStmt) GOOGLE_DCHECK_NE(&from, this); const RawStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RawStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RawStmt) MergeFrom(*source); } } void RawStmt::MergeFrom(const RawStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RawStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_stmt()) { _internal_mutable_stmt()->::pg_query::Node::MergeFrom(from._internal_stmt()); } if (from.stmt_location() != 0) { _internal_set_stmt_location(from._internal_stmt_location()); } if (from.stmt_len() != 0) { _internal_set_stmt_len(from._internal_stmt_len()); } } void RawStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RawStmt) if (&from == this) return; Clear(); MergeFrom(from); } void RawStmt::CopyFrom(const RawStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RawStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool RawStmt::IsInitialized() const { return true; } void RawStmt::InternalSwap(RawStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RawStmt, stmt_len_) + sizeof(RawStmt::stmt_len_) - PROTOBUF_FIELD_OFFSET(RawStmt, stmt_)>( reinterpret_cast(&stmt_), reinterpret_cast(&other->stmt_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RawStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Query::_Internal { public: static const ::pg_query::Node& utility_stmt(const Query* msg); static const ::pg_query::FromExpr& jointree(const Query* msg); static const ::pg_query::OnConflictExpr& on_conflict(const Query* msg); static const ::pg_query::Node& having_qual(const Query* msg); static const ::pg_query::Node& limit_offset(const Query* msg); static const ::pg_query::Node& limit_count(const Query* msg); static const ::pg_query::Node& set_operations(const Query* msg); }; const ::pg_query::Node& Query::_Internal::utility_stmt(const Query* msg) { return *msg->utility_stmt_; } const ::pg_query::FromExpr& Query::_Internal::jointree(const Query* msg) { return *msg->jointree_; } const ::pg_query::OnConflictExpr& Query::_Internal::on_conflict(const Query* msg) { return *msg->on_conflict_; } const ::pg_query::Node& Query::_Internal::having_qual(const Query* msg) { return *msg->having_qual_; } const ::pg_query::Node& Query::_Internal::limit_offset(const Query* msg) { return *msg->limit_offset_; } const ::pg_query::Node& Query::_Internal::limit_count(const Query* msg) { return *msg->limit_count_; } const ::pg_query::Node& Query::_Internal::set_operations(const Query* msg) { return *msg->set_operations_; } Query::Query(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), cte_list_(arena), rtable_(arena), target_list_(arena), returning_list_(arena), group_clause_(arena), grouping_sets_(arena), window_clause_(arena), distinct_clause_(arena), sort_clause_(arena), row_marks_(arena), constraint_deps_(arena), with_check_options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Query) } Query::Query(const Query& from) : ::PROTOBUF_NAMESPACE_ID::Message(), cte_list_(from.cte_list_), rtable_(from.rtable_), target_list_(from.target_list_), returning_list_(from.returning_list_), group_clause_(from.group_clause_), grouping_sets_(from.grouping_sets_), window_clause_(from.window_clause_), distinct_clause_(from.distinct_clause_), sort_clause_(from.sort_clause_), row_marks_(from.row_marks_), constraint_deps_(from.constraint_deps_), with_check_options_(from.with_check_options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_utility_stmt()) { utility_stmt_ = new ::pg_query::Node(*from.utility_stmt_); } else { utility_stmt_ = nullptr; } if (from._internal_has_jointree()) { jointree_ = new ::pg_query::FromExpr(*from.jointree_); } else { jointree_ = nullptr; } if (from._internal_has_on_conflict()) { on_conflict_ = new ::pg_query::OnConflictExpr(*from.on_conflict_); } else { on_conflict_ = nullptr; } if (from._internal_has_having_qual()) { having_qual_ = new ::pg_query::Node(*from.having_qual_); } else { having_qual_ = nullptr; } if (from._internal_has_limit_offset()) { limit_offset_ = new ::pg_query::Node(*from.limit_offset_); } else { limit_offset_ = nullptr; } if (from._internal_has_limit_count()) { limit_count_ = new ::pg_query::Node(*from.limit_count_); } else { limit_count_ = nullptr; } if (from._internal_has_set_operations()) { set_operations_ = new ::pg_query::Node(*from.set_operations_); } else { set_operations_ = nullptr; } ::memcpy(&command_type_, &from.command_type_, static_cast(reinterpret_cast(&stmt_len_) - reinterpret_cast(&command_type_)) + sizeof(stmt_len_)); // @@protoc_insertion_point(copy_constructor:pg_query.Query) } void Query::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&utility_stmt_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&stmt_len_) - reinterpret_cast(&utility_stmt_)) + sizeof(stmt_len_)); } Query::~Query() { // @@protoc_insertion_point(destructor:pg_query.Query) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Query::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete utility_stmt_; if (this != internal_default_instance()) delete jointree_; if (this != internal_default_instance()) delete on_conflict_; if (this != internal_default_instance()) delete having_qual_; if (this != internal_default_instance()) delete limit_offset_; if (this != internal_default_instance()) delete limit_count_; if (this != internal_default_instance()) delete set_operations_; } void Query::ArenaDtor(void* object) { Query* _this = reinterpret_cast< Query* >(object); (void)_this; } void Query::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Query::SetCachedSize(int size) const { _cached_size_.Set(size); } const Query& Query::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Query::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Query) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cte_list_.Clear(); rtable_.Clear(); target_list_.Clear(); returning_list_.Clear(); group_clause_.Clear(); grouping_sets_.Clear(); window_clause_.Clear(); distinct_clause_.Clear(); sort_clause_.Clear(); row_marks_.Clear(); constraint_deps_.Clear(); with_check_options_.Clear(); if (GetArena() == nullptr && utility_stmt_ != nullptr) { delete utility_stmt_; } utility_stmt_ = nullptr; if (GetArena() == nullptr && jointree_ != nullptr) { delete jointree_; } jointree_ = nullptr; if (GetArena() == nullptr && on_conflict_ != nullptr) { delete on_conflict_; } on_conflict_ = nullptr; if (GetArena() == nullptr && having_qual_ != nullptr) { delete having_qual_; } having_qual_ = nullptr; if (GetArena() == nullptr && limit_offset_ != nullptr) { delete limit_offset_; } limit_offset_ = nullptr; if (GetArena() == nullptr && limit_count_ != nullptr) { delete limit_count_; } limit_count_ = nullptr; if (GetArena() == nullptr && set_operations_ != nullptr) { delete set_operations_; } set_operations_ = nullptr; ::memset(&command_type_, 0, static_cast( reinterpret_cast(&stmt_len_) - reinterpret_cast(&command_type_)) + sizeof(stmt_len_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Query::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_command_type(static_cast<::pg_query::CmdType>(val)); } else goto handle_unusual; continue; // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_query_source(static_cast<::pg_query::QuerySource>(val)); } else goto handle_unusual; continue; // bool can_set_tag = 3 [json_name = "canSetTag"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { can_set_tag_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_utility_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 result_relation = 5 [json_name = "resultRelation"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { result_relation_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool has_aggs = 6 [json_name = "hasAggs"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { has_aggs_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { has_window_funcs_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { has_target_srfs_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool has_sub_links = 9 [json_name = "hasSubLinks"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { has_sub_links_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { has_distinct_on_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool has_recursive = 11 [json_name = "hasRecursive"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) { has_recursive_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 96)) { has_modifying_cte_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool has_for_update = 13 [json_name = "hasForUpdate"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 104)) { has_for_update_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool has_row_security = 14 [json_name = "hasRowSecurity"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 112)) { has_row_security_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node cte_list = 15 [json_name = "cteList"]; case 15: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_cte_list(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<122>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node rtable = 16 [json_name = "rtable"]; case 16: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_rtable(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<130>(ptr)); } else goto handle_unusual; continue; // .pg_query.FromExpr jointree = 17 [json_name = "jointree"]; case 17: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) { ptr = ctx->ParseMessage(_internal_mutable_jointree(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node target_list = 18 [json_name = "targetList"]; case 18: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_target_list(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<146>(ptr)); } else goto handle_unusual; continue; // .pg_query.OverridingKind override = 19 [json_name = "override"]; case 19: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 152)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_override(static_cast<::pg_query::OverridingKind>(val)); } else goto handle_unusual; continue; // .pg_query.OnConflictExpr on_conflict = 20 [json_name = "onConflict"]; case 20: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) { ptr = ctx->ParseMessage(_internal_mutable_on_conflict(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node returning_list = 21 [json_name = "returningList"]; case 21: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_returning_list(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<170>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node group_clause = 22 [json_name = "groupClause"]; case 22: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_group_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<178>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node grouping_sets = 23 [json_name = "groupingSets"]; case 23: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_grouping_sets(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<186>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node having_qual = 24 [json_name = "havingQual"]; case 24: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) { ptr = ctx->ParseMessage(_internal_mutable_having_qual(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node window_clause = 25 [json_name = "windowClause"]; case 25: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_window_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<202>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node distinct_clause = 26 [json_name = "distinctClause"]; case 26: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_distinct_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<210>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node sort_clause = 27 [json_name = "sortClause"]; case 27: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 218)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_sort_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<218>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node limit_offset = 28 [json_name = "limitOffset"]; case 28: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 226)) { ptr = ctx->ParseMessage(_internal_mutable_limit_offset(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node limit_count = 29 [json_name = "limitCount"]; case 29: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 234)) { ptr = ctx->ParseMessage(_internal_mutable_limit_count(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.LimitOption limit_option = 30 [json_name = "limitOption"]; case 30: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 240)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_limit_option(static_cast<::pg_query::LimitOption>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node row_marks = 31 [json_name = "rowMarks"]; case 31: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 250)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_row_marks(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<250>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node set_operations = 32 [json_name = "setOperations"]; case 32: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 2)) { ptr = ctx->ParseMessage(_internal_mutable_set_operations(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node constraint_deps = 33 [json_name = "constraintDeps"]; case 33: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_constraint_deps(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<266>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node with_check_options = 34 [json_name = "withCheckOptions"]; case 34: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_with_check_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<274>(ptr)); } else goto handle_unusual; continue; // int32 stmt_location = 35 [json_name = "stmt_location"]; case 35: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { stmt_location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 stmt_len = 36 [json_name = "stmt_len"]; case 36: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { stmt_len_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Query::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Query) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; if (this->command_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_command_type(), target); } // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; if (this->query_source() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_query_source(), target); } // bool can_set_tag = 3 [json_name = "canSetTag"]; if (this->can_set_tag() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_can_set_tag(), target); } // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; if (this->has_utility_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::utility_stmt(this), target, stream); } // int32 result_relation = 5 [json_name = "resultRelation"]; if (this->result_relation() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_result_relation(), target); } // bool has_aggs = 6 [json_name = "hasAggs"]; if (this->has_aggs() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_has_aggs(), target); } // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; if (this->has_window_funcs() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(7, this->_internal_has_window_funcs(), target); } // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; if (this->has_target_srfs() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(8, this->_internal_has_target_srfs(), target); } // bool has_sub_links = 9 [json_name = "hasSubLinks"]; if (this->has_sub_links() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(9, this->_internal_has_sub_links(), target); } // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; if (this->has_distinct_on() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(10, this->_internal_has_distinct_on(), target); } // bool has_recursive = 11 [json_name = "hasRecursive"]; if (this->has_recursive() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(11, this->_internal_has_recursive(), target); } // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; if (this->has_modifying_cte() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(12, this->_internal_has_modifying_cte(), target); } // bool has_for_update = 13 [json_name = "hasForUpdate"]; if (this->has_for_update() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(13, this->_internal_has_for_update(), target); } // bool has_row_security = 14 [json_name = "hasRowSecurity"]; if (this->has_row_security() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(14, this->_internal_has_row_security(), target); } // repeated .pg_query.Node cte_list = 15 [json_name = "cteList"]; for (unsigned int i = 0, n = static_cast(this->_internal_cte_list_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(15, this->_internal_cte_list(i), target, stream); } // repeated .pg_query.Node rtable = 16 [json_name = "rtable"]; for (unsigned int i = 0, n = static_cast(this->_internal_rtable_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(16, this->_internal_rtable(i), target, stream); } // .pg_query.FromExpr jointree = 17 [json_name = "jointree"]; if (this->has_jointree()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 17, _Internal::jointree(this), target, stream); } // repeated .pg_query.Node target_list = 18 [json_name = "targetList"]; for (unsigned int i = 0, n = static_cast(this->_internal_target_list_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(18, this->_internal_target_list(i), target, stream); } // .pg_query.OverridingKind override = 19 [json_name = "override"]; if (this->override() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 19, this->_internal_override(), target); } // .pg_query.OnConflictExpr on_conflict = 20 [json_name = "onConflict"]; if (this->has_on_conflict()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 20, _Internal::on_conflict(this), target, stream); } // repeated .pg_query.Node returning_list = 21 [json_name = "returningList"]; for (unsigned int i = 0, n = static_cast(this->_internal_returning_list_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(21, this->_internal_returning_list(i), target, stream); } // repeated .pg_query.Node group_clause = 22 [json_name = "groupClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_group_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(22, this->_internal_group_clause(i), target, stream); } // repeated .pg_query.Node grouping_sets = 23 [json_name = "groupingSets"]; for (unsigned int i = 0, n = static_cast(this->_internal_grouping_sets_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(23, this->_internal_grouping_sets(i), target, stream); } // .pg_query.Node having_qual = 24 [json_name = "havingQual"]; if (this->has_having_qual()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 24, _Internal::having_qual(this), target, stream); } // repeated .pg_query.Node window_clause = 25 [json_name = "windowClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_window_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(25, this->_internal_window_clause(i), target, stream); } // repeated .pg_query.Node distinct_clause = 26 [json_name = "distinctClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_distinct_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(26, this->_internal_distinct_clause(i), target, stream); } // repeated .pg_query.Node sort_clause = 27 [json_name = "sortClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_sort_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(27, this->_internal_sort_clause(i), target, stream); } // .pg_query.Node limit_offset = 28 [json_name = "limitOffset"]; if (this->has_limit_offset()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 28, _Internal::limit_offset(this), target, stream); } // .pg_query.Node limit_count = 29 [json_name = "limitCount"]; if (this->has_limit_count()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 29, _Internal::limit_count(this), target, stream); } // .pg_query.LimitOption limit_option = 30 [json_name = "limitOption"]; if (this->limit_option() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 30, this->_internal_limit_option(), target); } // repeated .pg_query.Node row_marks = 31 [json_name = "rowMarks"]; for (unsigned int i = 0, n = static_cast(this->_internal_row_marks_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(31, this->_internal_row_marks(i), target, stream); } // .pg_query.Node set_operations = 32 [json_name = "setOperations"]; if (this->has_set_operations()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 32, _Internal::set_operations(this), target, stream); } // repeated .pg_query.Node constraint_deps = 33 [json_name = "constraintDeps"]; for (unsigned int i = 0, n = static_cast(this->_internal_constraint_deps_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(33, this->_internal_constraint_deps(i), target, stream); } // repeated .pg_query.Node with_check_options = 34 [json_name = "withCheckOptions"]; for (unsigned int i = 0, n = static_cast(this->_internal_with_check_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(34, this->_internal_with_check_options(i), target, stream); } // int32 stmt_location = 35 [json_name = "stmt_location"]; if (this->stmt_location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(35, this->_internal_stmt_location(), target); } // int32 stmt_len = 36 [json_name = "stmt_len"]; if (this->stmt_len() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(36, this->_internal_stmt_len(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Query) return target; } size_t Query::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Query) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node cte_list = 15 [json_name = "cteList"]; total_size += 1UL * this->_internal_cte_list_size(); for (const auto& msg : this->cte_list_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node rtable = 16 [json_name = "rtable"]; total_size += 2UL * this->_internal_rtable_size(); for (const auto& msg : this->rtable_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node target_list = 18 [json_name = "targetList"]; total_size += 2UL * this->_internal_target_list_size(); for (const auto& msg : this->target_list_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node returning_list = 21 [json_name = "returningList"]; total_size += 2UL * this->_internal_returning_list_size(); for (const auto& msg : this->returning_list_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node group_clause = 22 [json_name = "groupClause"]; total_size += 2UL * this->_internal_group_clause_size(); for (const auto& msg : this->group_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node grouping_sets = 23 [json_name = "groupingSets"]; total_size += 2UL * this->_internal_grouping_sets_size(); for (const auto& msg : this->grouping_sets_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node window_clause = 25 [json_name = "windowClause"]; total_size += 2UL * this->_internal_window_clause_size(); for (const auto& msg : this->window_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node distinct_clause = 26 [json_name = "distinctClause"]; total_size += 2UL * this->_internal_distinct_clause_size(); for (const auto& msg : this->distinct_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node sort_clause = 27 [json_name = "sortClause"]; total_size += 2UL * this->_internal_sort_clause_size(); for (const auto& msg : this->sort_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node row_marks = 31 [json_name = "rowMarks"]; total_size += 2UL * this->_internal_row_marks_size(); for (const auto& msg : this->row_marks_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node constraint_deps = 33 [json_name = "constraintDeps"]; total_size += 2UL * this->_internal_constraint_deps_size(); for (const auto& msg : this->constraint_deps_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node with_check_options = 34 [json_name = "withCheckOptions"]; total_size += 2UL * this->_internal_with_check_options_size(); for (const auto& msg : this->with_check_options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; if (this->has_utility_stmt()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *utility_stmt_); } // .pg_query.FromExpr jointree = 17 [json_name = "jointree"]; if (this->has_jointree()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *jointree_); } // .pg_query.OnConflictExpr on_conflict = 20 [json_name = "onConflict"]; if (this->has_on_conflict()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *on_conflict_); } // .pg_query.Node having_qual = 24 [json_name = "havingQual"]; if (this->has_having_qual()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *having_qual_); } // .pg_query.Node limit_offset = 28 [json_name = "limitOffset"]; if (this->has_limit_offset()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *limit_offset_); } // .pg_query.Node limit_count = 29 [json_name = "limitCount"]; if (this->has_limit_count()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *limit_count_); } // .pg_query.Node set_operations = 32 [json_name = "setOperations"]; if (this->has_set_operations()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *set_operations_); } // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; if (this->command_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_command_type()); } // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; if (this->query_source() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_query_source()); } // int32 result_relation = 5 [json_name = "resultRelation"]; if (this->result_relation() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_result_relation()); } // bool can_set_tag = 3 [json_name = "canSetTag"]; if (this->can_set_tag() != 0) { total_size += 1 + 1; } // bool has_aggs = 6 [json_name = "hasAggs"]; if (this->has_aggs() != 0) { total_size += 1 + 1; } // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; if (this->has_window_funcs() != 0) { total_size += 1 + 1; } // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; if (this->has_target_srfs() != 0) { total_size += 1 + 1; } // bool has_sub_links = 9 [json_name = "hasSubLinks"]; if (this->has_sub_links() != 0) { total_size += 1 + 1; } // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; if (this->has_distinct_on() != 0) { total_size += 1 + 1; } // bool has_recursive = 11 [json_name = "hasRecursive"]; if (this->has_recursive() != 0) { total_size += 1 + 1; } // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; if (this->has_modifying_cte() != 0) { total_size += 1 + 1; } // bool has_for_update = 13 [json_name = "hasForUpdate"]; if (this->has_for_update() != 0) { total_size += 1 + 1; } // bool has_row_security = 14 [json_name = "hasRowSecurity"]; if (this->has_row_security() != 0) { total_size += 1 + 1; } // .pg_query.OverridingKind override = 19 [json_name = "override"]; if (this->override() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_override()); } // .pg_query.LimitOption limit_option = 30 [json_name = "limitOption"]; if (this->limit_option() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_limit_option()); } // int32 stmt_location = 35 [json_name = "stmt_location"]; if (this->stmt_location() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_stmt_location()); } // int32 stmt_len = 36 [json_name = "stmt_len"]; if (this->stmt_len() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_stmt_len()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Query::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Query) GOOGLE_DCHECK_NE(&from, this); const Query* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Query) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Query) MergeFrom(*source); } } void Query::MergeFrom(const Query& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Query) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; cte_list_.MergeFrom(from.cte_list_); rtable_.MergeFrom(from.rtable_); target_list_.MergeFrom(from.target_list_); returning_list_.MergeFrom(from.returning_list_); group_clause_.MergeFrom(from.group_clause_); grouping_sets_.MergeFrom(from.grouping_sets_); window_clause_.MergeFrom(from.window_clause_); distinct_clause_.MergeFrom(from.distinct_clause_); sort_clause_.MergeFrom(from.sort_clause_); row_marks_.MergeFrom(from.row_marks_); constraint_deps_.MergeFrom(from.constraint_deps_); with_check_options_.MergeFrom(from.with_check_options_); if (from.has_utility_stmt()) { _internal_mutable_utility_stmt()->::pg_query::Node::MergeFrom(from._internal_utility_stmt()); } if (from.has_jointree()) { _internal_mutable_jointree()->::pg_query::FromExpr::MergeFrom(from._internal_jointree()); } if (from.has_on_conflict()) { _internal_mutable_on_conflict()->::pg_query::OnConflictExpr::MergeFrom(from._internal_on_conflict()); } if (from.has_having_qual()) { _internal_mutable_having_qual()->::pg_query::Node::MergeFrom(from._internal_having_qual()); } if (from.has_limit_offset()) { _internal_mutable_limit_offset()->::pg_query::Node::MergeFrom(from._internal_limit_offset()); } if (from.has_limit_count()) { _internal_mutable_limit_count()->::pg_query::Node::MergeFrom(from._internal_limit_count()); } if (from.has_set_operations()) { _internal_mutable_set_operations()->::pg_query::Node::MergeFrom(from._internal_set_operations()); } if (from.command_type() != 0) { _internal_set_command_type(from._internal_command_type()); } if (from.query_source() != 0) { _internal_set_query_source(from._internal_query_source()); } if (from.result_relation() != 0) { _internal_set_result_relation(from._internal_result_relation()); } if (from.can_set_tag() != 0) { _internal_set_can_set_tag(from._internal_can_set_tag()); } if (from.has_aggs() != 0) { _internal_set_has_aggs(from._internal_has_aggs()); } if (from.has_window_funcs() != 0) { _internal_set_has_window_funcs(from._internal_has_window_funcs()); } if (from.has_target_srfs() != 0) { _internal_set_has_target_srfs(from._internal_has_target_srfs()); } if (from.has_sub_links() != 0) { _internal_set_has_sub_links(from._internal_has_sub_links()); } if (from.has_distinct_on() != 0) { _internal_set_has_distinct_on(from._internal_has_distinct_on()); } if (from.has_recursive() != 0) { _internal_set_has_recursive(from._internal_has_recursive()); } if (from.has_modifying_cte() != 0) { _internal_set_has_modifying_cte(from._internal_has_modifying_cte()); } if (from.has_for_update() != 0) { _internal_set_has_for_update(from._internal_has_for_update()); } if (from.has_row_security() != 0) { _internal_set_has_row_security(from._internal_has_row_security()); } if (from.override() != 0) { _internal_set_override(from._internal_override()); } if (from.limit_option() != 0) { _internal_set_limit_option(from._internal_limit_option()); } if (from.stmt_location() != 0) { _internal_set_stmt_location(from._internal_stmt_location()); } if (from.stmt_len() != 0) { _internal_set_stmt_len(from._internal_stmt_len()); } } void Query::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Query) if (&from == this) return; Clear(); MergeFrom(from); } void Query::CopyFrom(const Query& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Query) if (&from == this) return; Clear(); MergeFrom(from); } bool Query::IsInitialized() const { return true; } void Query::InternalSwap(Query* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); cte_list_.InternalSwap(&other->cte_list_); rtable_.InternalSwap(&other->rtable_); target_list_.InternalSwap(&other->target_list_); returning_list_.InternalSwap(&other->returning_list_); group_clause_.InternalSwap(&other->group_clause_); grouping_sets_.InternalSwap(&other->grouping_sets_); window_clause_.InternalSwap(&other->window_clause_); distinct_clause_.InternalSwap(&other->distinct_clause_); sort_clause_.InternalSwap(&other->sort_clause_); row_marks_.InternalSwap(&other->row_marks_); constraint_deps_.InternalSwap(&other->constraint_deps_); with_check_options_.InternalSwap(&other->with_check_options_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(Query, stmt_len_) + sizeof(Query::stmt_len_) - PROTOBUF_FIELD_OFFSET(Query, utility_stmt_)>( reinterpret_cast(&utility_stmt_), reinterpret_cast(&other->utility_stmt_)); } ::PROTOBUF_NAMESPACE_ID::Metadata Query::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class InsertStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const InsertStmt* msg); static const ::pg_query::Node& select_stmt(const InsertStmt* msg); static const ::pg_query::OnConflictClause& on_conflict_clause(const InsertStmt* msg); static const ::pg_query::WithClause& with_clause(const InsertStmt* msg); }; const ::pg_query::RangeVar& InsertStmt::_Internal::relation(const InsertStmt* msg) { return *msg->relation_; } const ::pg_query::Node& InsertStmt::_Internal::select_stmt(const InsertStmt* msg) { return *msg->select_stmt_; } const ::pg_query::OnConflictClause& InsertStmt::_Internal::on_conflict_clause(const InsertStmt* msg) { return *msg->on_conflict_clause_; } const ::pg_query::WithClause& InsertStmt::_Internal::with_clause(const InsertStmt* msg) { return *msg->with_clause_; } InsertStmt::InsertStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), cols_(arena), returning_list_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.InsertStmt) } InsertStmt::InsertStmt(const InsertStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), cols_(from.cols_), returning_list_(from.returning_list_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_select_stmt()) { select_stmt_ = new ::pg_query::Node(*from.select_stmt_); } else { select_stmt_ = nullptr; } if (from._internal_has_on_conflict_clause()) { on_conflict_clause_ = new ::pg_query::OnConflictClause(*from.on_conflict_clause_); } else { on_conflict_clause_ = nullptr; } if (from._internal_has_with_clause()) { with_clause_ = new ::pg_query::WithClause(*from.with_clause_); } else { with_clause_ = nullptr; } override_ = from.override_; // @@protoc_insertion_point(copy_constructor:pg_query.InsertStmt) } void InsertStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&override_) - reinterpret_cast(&relation_)) + sizeof(override_)); } InsertStmt::~InsertStmt() { // @@protoc_insertion_point(destructor:pg_query.InsertStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void InsertStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete select_stmt_; if (this != internal_default_instance()) delete on_conflict_clause_; if (this != internal_default_instance()) delete with_clause_; } void InsertStmt::ArenaDtor(void* object) { InsertStmt* _this = reinterpret_cast< InsertStmt* >(object); (void)_this; } void InsertStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void InsertStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const InsertStmt& InsertStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void InsertStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.InsertStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cols_.Clear(); returning_list_.Clear(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && select_stmt_ != nullptr) { delete select_stmt_; } select_stmt_ = nullptr; if (GetArena() == nullptr && on_conflict_clause_ != nullptr) { delete on_conflict_clause_; } on_conflict_clause_ = nullptr; if (GetArena() == nullptr && with_clause_ != nullptr) { delete with_clause_; } with_clause_ = nullptr; override_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* InsertStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node cols = 2 [json_name = "cols"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_cols(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_select_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_on_conflict_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_returning_list(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_with_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.OverridingKind override = 7 [json_name = "override"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_override(static_cast<::pg_query::OverridingKind>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* InsertStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.InsertStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // repeated .pg_query.Node cols = 2 [json_name = "cols"]; for (unsigned int i = 0, n = static_cast(this->_internal_cols_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_cols(i), target, stream); } // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; if (this->has_select_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::select_stmt(this), target, stream); } // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; if (this->has_on_conflict_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::on_conflict_clause(this), target, stream); } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; for (unsigned int i = 0, n = static_cast(this->_internal_returning_list_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_returning_list(i), target, stream); } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; if (this->has_with_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::with_clause(this), target, stream); } // .pg_query.OverridingKind override = 7 [json_name = "override"]; if (this->override() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 7, this->_internal_override(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.InsertStmt) return target; } size_t InsertStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.InsertStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node cols = 2 [json_name = "cols"]; total_size += 1UL * this->_internal_cols_size(); for (const auto& msg : this->cols_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; total_size += 1UL * this->_internal_returning_list_size(); for (const auto& msg : this->returning_list_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; if (this->has_select_stmt()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *select_stmt_); } // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; if (this->has_on_conflict_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *on_conflict_clause_); } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; if (this->has_with_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *with_clause_); } // .pg_query.OverridingKind override = 7 [json_name = "override"]; if (this->override() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_override()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void InsertStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.InsertStmt) GOOGLE_DCHECK_NE(&from, this); const InsertStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.InsertStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.InsertStmt) MergeFrom(*source); } } void InsertStmt::MergeFrom(const InsertStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.InsertStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; cols_.MergeFrom(from.cols_); returning_list_.MergeFrom(from.returning_list_); if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_select_stmt()) { _internal_mutable_select_stmt()->::pg_query::Node::MergeFrom(from._internal_select_stmt()); } if (from.has_on_conflict_clause()) { _internal_mutable_on_conflict_clause()->::pg_query::OnConflictClause::MergeFrom(from._internal_on_conflict_clause()); } if (from.has_with_clause()) { _internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom(from._internal_with_clause()); } if (from.override() != 0) { _internal_set_override(from._internal_override()); } } void InsertStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.InsertStmt) if (&from == this) return; Clear(); MergeFrom(from); } void InsertStmt::CopyFrom(const InsertStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.InsertStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool InsertStmt::IsInitialized() const { return true; } void InsertStmt::InternalSwap(InsertStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); cols_.InternalSwap(&other->cols_); returning_list_.InternalSwap(&other->returning_list_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(InsertStmt, override_) + sizeof(InsertStmt::override_) - PROTOBUF_FIELD_OFFSET(InsertStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata InsertStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DeleteStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const DeleteStmt* msg); static const ::pg_query::Node& where_clause(const DeleteStmt* msg); static const ::pg_query::WithClause& with_clause(const DeleteStmt* msg); }; const ::pg_query::RangeVar& DeleteStmt::_Internal::relation(const DeleteStmt* msg) { return *msg->relation_; } const ::pg_query::Node& DeleteStmt::_Internal::where_clause(const DeleteStmt* msg) { return *msg->where_clause_; } const ::pg_query::WithClause& DeleteStmt::_Internal::with_clause(const DeleteStmt* msg) { return *msg->with_clause_; } DeleteStmt::DeleteStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), using_clause_(arena), returning_list_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DeleteStmt) } DeleteStmt::DeleteStmt(const DeleteStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), using_clause_(from.using_clause_), returning_list_(from.returning_list_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_where_clause()) { where_clause_ = new ::pg_query::Node(*from.where_clause_); } else { where_clause_ = nullptr; } if (from._internal_has_with_clause()) { with_clause_ = new ::pg_query::WithClause(*from.with_clause_); } else { with_clause_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.DeleteStmt) } void DeleteStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&with_clause_) - reinterpret_cast(&relation_)) + sizeof(with_clause_)); } DeleteStmt::~DeleteStmt() { // @@protoc_insertion_point(destructor:pg_query.DeleteStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DeleteStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete where_clause_; if (this != internal_default_instance()) delete with_clause_; } void DeleteStmt::ArenaDtor(void* object) { DeleteStmt* _this = reinterpret_cast< DeleteStmt* >(object); (void)_this; } void DeleteStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DeleteStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DeleteStmt& DeleteStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DeleteStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DeleteStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; using_clause_.Clear(); returning_list_.Clear(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; if (GetArena() == nullptr && with_clause_ != nullptr) { delete with_clause_; } with_clause_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DeleteStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_using_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_where_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_returning_list(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_with_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DeleteStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DeleteStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_using_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_using_clause(i), target, stream); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (this->has_where_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::where_clause(this), target, stream); } // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; for (unsigned int i = 0, n = static_cast(this->_internal_returning_list_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_returning_list(i), target, stream); } // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; if (this->has_with_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::with_clause(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DeleteStmt) return target; } size_t DeleteStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DeleteStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; total_size += 1UL * this->_internal_using_clause_size(); for (const auto& msg : this->using_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; total_size += 1UL * this->_internal_returning_list_size(); for (const auto& msg : this->returning_list_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (this->has_where_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *where_clause_); } // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; if (this->has_with_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *with_clause_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DeleteStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DeleteStmt) GOOGLE_DCHECK_NE(&from, this); const DeleteStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DeleteStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DeleteStmt) MergeFrom(*source); } } void DeleteStmt::MergeFrom(const DeleteStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DeleteStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; using_clause_.MergeFrom(from.using_clause_); returning_list_.MergeFrom(from.returning_list_); if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_where_clause()) { _internal_mutable_where_clause()->::pg_query::Node::MergeFrom(from._internal_where_clause()); } if (from.has_with_clause()) { _internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom(from._internal_with_clause()); } } void DeleteStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DeleteStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DeleteStmt::CopyFrom(const DeleteStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DeleteStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DeleteStmt::IsInitialized() const { return true; } void DeleteStmt::InternalSwap(DeleteStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); using_clause_.InternalSwap(&other->using_clause_); returning_list_.InternalSwap(&other->returning_list_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(DeleteStmt, with_clause_) + sizeof(DeleteStmt::with_clause_) - PROTOBUF_FIELD_OFFSET(DeleteStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata DeleteStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class UpdateStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const UpdateStmt* msg); static const ::pg_query::Node& where_clause(const UpdateStmt* msg); static const ::pg_query::WithClause& with_clause(const UpdateStmt* msg); }; const ::pg_query::RangeVar& UpdateStmt::_Internal::relation(const UpdateStmt* msg) { return *msg->relation_; } const ::pg_query::Node& UpdateStmt::_Internal::where_clause(const UpdateStmt* msg) { return *msg->where_clause_; } const ::pg_query::WithClause& UpdateStmt::_Internal::with_clause(const UpdateStmt* msg) { return *msg->with_clause_; } UpdateStmt::UpdateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), target_list_(arena), from_clause_(arena), returning_list_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.UpdateStmt) } UpdateStmt::UpdateStmt(const UpdateStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), target_list_(from.target_list_), from_clause_(from.from_clause_), returning_list_(from.returning_list_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_where_clause()) { where_clause_ = new ::pg_query::Node(*from.where_clause_); } else { where_clause_ = nullptr; } if (from._internal_has_with_clause()) { with_clause_ = new ::pg_query::WithClause(*from.with_clause_); } else { with_clause_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.UpdateStmt) } void UpdateStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&with_clause_) - reinterpret_cast(&relation_)) + sizeof(with_clause_)); } UpdateStmt::~UpdateStmt() { // @@protoc_insertion_point(destructor:pg_query.UpdateStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void UpdateStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete where_clause_; if (this != internal_default_instance()) delete with_clause_; } void UpdateStmt::ArenaDtor(void* object) { UpdateStmt* _this = reinterpret_cast< UpdateStmt* >(object); (void)_this; } void UpdateStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void UpdateStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const UpdateStmt& UpdateStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void UpdateStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.UpdateStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; target_list_.Clear(); from_clause_.Clear(); returning_list_.Clear(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; if (GetArena() == nullptr && with_clause_ != nullptr) { delete with_clause_; } with_clause_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* UpdateStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_target_list(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_where_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_from_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_returning_list(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_with_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* UpdateStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.UpdateStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; for (unsigned int i = 0, n = static_cast(this->_internal_target_list_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_target_list(i), target, stream); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (this->has_where_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::where_clause(this), target, stream); } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_from_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_from_clause(i), target, stream); } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; for (unsigned int i = 0, n = static_cast(this->_internal_returning_list_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_returning_list(i), target, stream); } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; if (this->has_with_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::with_clause(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.UpdateStmt) return target; } size_t UpdateStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.UpdateStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; total_size += 1UL * this->_internal_target_list_size(); for (const auto& msg : this->target_list_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; total_size += 1UL * this->_internal_from_clause_size(); for (const auto& msg : this->from_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; total_size += 1UL * this->_internal_returning_list_size(); for (const auto& msg : this->returning_list_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (this->has_where_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *where_clause_); } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; if (this->has_with_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *with_clause_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void UpdateStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.UpdateStmt) GOOGLE_DCHECK_NE(&from, this); const UpdateStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.UpdateStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.UpdateStmt) MergeFrom(*source); } } void UpdateStmt::MergeFrom(const UpdateStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.UpdateStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; target_list_.MergeFrom(from.target_list_); from_clause_.MergeFrom(from.from_clause_); returning_list_.MergeFrom(from.returning_list_); if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_where_clause()) { _internal_mutable_where_clause()->::pg_query::Node::MergeFrom(from._internal_where_clause()); } if (from.has_with_clause()) { _internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom(from._internal_with_clause()); } } void UpdateStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.UpdateStmt) if (&from == this) return; Clear(); MergeFrom(from); } void UpdateStmt::CopyFrom(const UpdateStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.UpdateStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool UpdateStmt::IsInitialized() const { return true; } void UpdateStmt::InternalSwap(UpdateStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); target_list_.InternalSwap(&other->target_list_); from_clause_.InternalSwap(&other->from_clause_); returning_list_.InternalSwap(&other->returning_list_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(UpdateStmt, with_clause_) + sizeof(UpdateStmt::with_clause_) - PROTOBUF_FIELD_OFFSET(UpdateStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata UpdateStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class SelectStmt::_Internal { public: static const ::pg_query::IntoClause& into_clause(const SelectStmt* msg); static const ::pg_query::Node& where_clause(const SelectStmt* msg); static const ::pg_query::Node& having_clause(const SelectStmt* msg); static const ::pg_query::Node& limit_offset(const SelectStmt* msg); static const ::pg_query::Node& limit_count(const SelectStmt* msg); static const ::pg_query::WithClause& with_clause(const SelectStmt* msg); static const ::pg_query::SelectStmt& larg(const SelectStmt* msg); static const ::pg_query::SelectStmt& rarg(const SelectStmt* msg); }; const ::pg_query::IntoClause& SelectStmt::_Internal::into_clause(const SelectStmt* msg) { return *msg->into_clause_; } const ::pg_query::Node& SelectStmt::_Internal::where_clause(const SelectStmt* msg) { return *msg->where_clause_; } const ::pg_query::Node& SelectStmt::_Internal::having_clause(const SelectStmt* msg) { return *msg->having_clause_; } const ::pg_query::Node& SelectStmt::_Internal::limit_offset(const SelectStmt* msg) { return *msg->limit_offset_; } const ::pg_query::Node& SelectStmt::_Internal::limit_count(const SelectStmt* msg) { return *msg->limit_count_; } const ::pg_query::WithClause& SelectStmt::_Internal::with_clause(const SelectStmt* msg) { return *msg->with_clause_; } const ::pg_query::SelectStmt& SelectStmt::_Internal::larg(const SelectStmt* msg) { return *msg->larg_; } const ::pg_query::SelectStmt& SelectStmt::_Internal::rarg(const SelectStmt* msg) { return *msg->rarg_; } SelectStmt::SelectStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), distinct_clause_(arena), target_list_(arena), from_clause_(arena), group_clause_(arena), window_clause_(arena), values_lists_(arena), sort_clause_(arena), locking_clause_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SelectStmt) } SelectStmt::SelectStmt(const SelectStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), distinct_clause_(from.distinct_clause_), target_list_(from.target_list_), from_clause_(from.from_clause_), group_clause_(from.group_clause_), window_clause_(from.window_clause_), values_lists_(from.values_lists_), sort_clause_(from.sort_clause_), locking_clause_(from.locking_clause_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_into_clause()) { into_clause_ = new ::pg_query::IntoClause(*from.into_clause_); } else { into_clause_ = nullptr; } if (from._internal_has_where_clause()) { where_clause_ = new ::pg_query::Node(*from.where_clause_); } else { where_clause_ = nullptr; } if (from._internal_has_having_clause()) { having_clause_ = new ::pg_query::Node(*from.having_clause_); } else { having_clause_ = nullptr; } if (from._internal_has_limit_offset()) { limit_offset_ = new ::pg_query::Node(*from.limit_offset_); } else { limit_offset_ = nullptr; } if (from._internal_has_limit_count()) { limit_count_ = new ::pg_query::Node(*from.limit_count_); } else { limit_count_ = nullptr; } if (from._internal_has_with_clause()) { with_clause_ = new ::pg_query::WithClause(*from.with_clause_); } else { with_clause_ = nullptr; } if (from._internal_has_larg()) { larg_ = new ::pg_query::SelectStmt(*from.larg_); } else { larg_ = nullptr; } if (from._internal_has_rarg()) { rarg_ = new ::pg_query::SelectStmt(*from.rarg_); } else { rarg_ = nullptr; } ::memcpy(&limit_option_, &from.limit_option_, static_cast(reinterpret_cast(&all_) - reinterpret_cast(&limit_option_)) + sizeof(all_)); // @@protoc_insertion_point(copy_constructor:pg_query.SelectStmt) } void SelectStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&into_clause_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&all_) - reinterpret_cast(&into_clause_)) + sizeof(all_)); } SelectStmt::~SelectStmt() { // @@protoc_insertion_point(destructor:pg_query.SelectStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void SelectStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete into_clause_; if (this != internal_default_instance()) delete where_clause_; if (this != internal_default_instance()) delete having_clause_; if (this != internal_default_instance()) delete limit_offset_; if (this != internal_default_instance()) delete limit_count_; if (this != internal_default_instance()) delete with_clause_; if (this != internal_default_instance()) delete larg_; if (this != internal_default_instance()) delete rarg_; } void SelectStmt::ArenaDtor(void* object) { SelectStmt* _this = reinterpret_cast< SelectStmt* >(object); (void)_this; } void SelectStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void SelectStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const SelectStmt& SelectStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void SelectStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SelectStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; distinct_clause_.Clear(); target_list_.Clear(); from_clause_.Clear(); group_clause_.Clear(); window_clause_.Clear(); values_lists_.Clear(); sort_clause_.Clear(); locking_clause_.Clear(); if (GetArena() == nullptr && into_clause_ != nullptr) { delete into_clause_; } into_clause_ = nullptr; if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; if (GetArena() == nullptr && having_clause_ != nullptr) { delete having_clause_; } having_clause_ = nullptr; if (GetArena() == nullptr && limit_offset_ != nullptr) { delete limit_offset_; } limit_offset_ = nullptr; if (GetArena() == nullptr && limit_count_ != nullptr) { delete limit_count_; } limit_count_ = nullptr; if (GetArena() == nullptr && with_clause_ != nullptr) { delete with_clause_; } with_clause_ = nullptr; if (GetArena() == nullptr && larg_ != nullptr) { delete larg_; } larg_ = nullptr; if (GetArena() == nullptr && rarg_ != nullptr) { delete rarg_; } rarg_ = nullptr; ::memset(&limit_option_, 0, static_cast( reinterpret_cast(&all_) - reinterpret_cast(&limit_option_)) + sizeof(all_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* SelectStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_distinct_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_into_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_target_list(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_from_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_where_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_group_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node having_clause = 7 [json_name = "havingClause"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_having_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node window_clause = 8 [json_name = "windowClause"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_window_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node values_lists = 9 [json_name = "valuesLists"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_values_lists(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node sort_clause = 10 [json_name = "sortClause"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_sort_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node limit_offset = 11 [json_name = "limitOffset"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr = ctx->ParseMessage(_internal_mutable_limit_offset(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node limit_count = 12 [json_name = "limitCount"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr = ctx->ParseMessage(_internal_mutable_limit_count(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.LimitOption limit_option = 13 [json_name = "limitOption"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 104)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_limit_option(static_cast<::pg_query::LimitOption>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node locking_clause = 14 [json_name = "lockingClause"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_locking_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<114>(ptr)); } else goto handle_unusual; continue; // .pg_query.WithClause with_clause = 15 [json_name = "withClause"]; case 15: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr = ctx->ParseMessage(_internal_mutable_with_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SetOperation op = 16 [json_name = "op"]; case 16: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 128)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_op(static_cast<::pg_query::SetOperation>(val)); } else goto handle_unusual; continue; // bool all = 17 [json_name = "all"]; case 17: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 136)) { all_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SelectStmt larg = 18 [json_name = "larg"]; case 18: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) { ptr = ctx->ParseMessage(_internal_mutable_larg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SelectStmt rarg = 19 [json_name = "rarg"]; case 19: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 154)) { ptr = ctx->ParseMessage(_internal_mutable_rarg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* SelectStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SelectStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_distinct_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_distinct_clause(i), target, stream); } // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; if (this->has_into_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::into_clause(this), target, stream); } // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; for (unsigned int i = 0, n = static_cast(this->_internal_target_list_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_target_list(i), target, stream); } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_from_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_from_clause(i), target, stream); } // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; if (this->has_where_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::where_clause(this), target, stream); } // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_group_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_group_clause(i), target, stream); } // .pg_query.Node having_clause = 7 [json_name = "havingClause"]; if (this->has_having_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 7, _Internal::having_clause(this), target, stream); } // repeated .pg_query.Node window_clause = 8 [json_name = "windowClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_window_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_window_clause(i), target, stream); } // repeated .pg_query.Node values_lists = 9 [json_name = "valuesLists"]; for (unsigned int i = 0, n = static_cast(this->_internal_values_lists_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(9, this->_internal_values_lists(i), target, stream); } // repeated .pg_query.Node sort_clause = 10 [json_name = "sortClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_sort_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(10, this->_internal_sort_clause(i), target, stream); } // .pg_query.Node limit_offset = 11 [json_name = "limitOffset"]; if (this->has_limit_offset()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 11, _Internal::limit_offset(this), target, stream); } // .pg_query.Node limit_count = 12 [json_name = "limitCount"]; if (this->has_limit_count()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 12, _Internal::limit_count(this), target, stream); } // .pg_query.LimitOption limit_option = 13 [json_name = "limitOption"]; if (this->limit_option() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 13, this->_internal_limit_option(), target); } // repeated .pg_query.Node locking_clause = 14 [json_name = "lockingClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_locking_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(14, this->_internal_locking_clause(i), target, stream); } // .pg_query.WithClause with_clause = 15 [json_name = "withClause"]; if (this->has_with_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 15, _Internal::with_clause(this), target, stream); } // .pg_query.SetOperation op = 16 [json_name = "op"]; if (this->op() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 16, this->_internal_op(), target); } // bool all = 17 [json_name = "all"]; if (this->all() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(17, this->_internal_all(), target); } // .pg_query.SelectStmt larg = 18 [json_name = "larg"]; if (this->has_larg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 18, _Internal::larg(this), target, stream); } // .pg_query.SelectStmt rarg = 19 [json_name = "rarg"]; if (this->has_rarg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 19, _Internal::rarg(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.SelectStmt) return target; } size_t SelectStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.SelectStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; total_size += 1UL * this->_internal_distinct_clause_size(); for (const auto& msg : this->distinct_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; total_size += 1UL * this->_internal_target_list_size(); for (const auto& msg : this->target_list_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; total_size += 1UL * this->_internal_from_clause_size(); for (const auto& msg : this->from_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; total_size += 1UL * this->_internal_group_clause_size(); for (const auto& msg : this->group_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node window_clause = 8 [json_name = "windowClause"]; total_size += 1UL * this->_internal_window_clause_size(); for (const auto& msg : this->window_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node values_lists = 9 [json_name = "valuesLists"]; total_size += 1UL * this->_internal_values_lists_size(); for (const auto& msg : this->values_lists_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node sort_clause = 10 [json_name = "sortClause"]; total_size += 1UL * this->_internal_sort_clause_size(); for (const auto& msg : this->sort_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node locking_clause = 14 [json_name = "lockingClause"]; total_size += 1UL * this->_internal_locking_clause_size(); for (const auto& msg : this->locking_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; if (this->has_into_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *into_clause_); } // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; if (this->has_where_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *where_clause_); } // .pg_query.Node having_clause = 7 [json_name = "havingClause"]; if (this->has_having_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *having_clause_); } // .pg_query.Node limit_offset = 11 [json_name = "limitOffset"]; if (this->has_limit_offset()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *limit_offset_); } // .pg_query.Node limit_count = 12 [json_name = "limitCount"]; if (this->has_limit_count()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *limit_count_); } // .pg_query.WithClause with_clause = 15 [json_name = "withClause"]; if (this->has_with_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *with_clause_); } // .pg_query.SelectStmt larg = 18 [json_name = "larg"]; if (this->has_larg()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *larg_); } // .pg_query.SelectStmt rarg = 19 [json_name = "rarg"]; if (this->has_rarg()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *rarg_); } // .pg_query.LimitOption limit_option = 13 [json_name = "limitOption"]; if (this->limit_option() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_limit_option()); } // .pg_query.SetOperation op = 16 [json_name = "op"]; if (this->op() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_op()); } // bool all = 17 [json_name = "all"]; if (this->all() != 0) { total_size += 2 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void SelectStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.SelectStmt) GOOGLE_DCHECK_NE(&from, this); const SelectStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.SelectStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.SelectStmt) MergeFrom(*source); } } void SelectStmt::MergeFrom(const SelectStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SelectStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; distinct_clause_.MergeFrom(from.distinct_clause_); target_list_.MergeFrom(from.target_list_); from_clause_.MergeFrom(from.from_clause_); group_clause_.MergeFrom(from.group_clause_); window_clause_.MergeFrom(from.window_clause_); values_lists_.MergeFrom(from.values_lists_); sort_clause_.MergeFrom(from.sort_clause_); locking_clause_.MergeFrom(from.locking_clause_); if (from.has_into_clause()) { _internal_mutable_into_clause()->::pg_query::IntoClause::MergeFrom(from._internal_into_clause()); } if (from.has_where_clause()) { _internal_mutable_where_clause()->::pg_query::Node::MergeFrom(from._internal_where_clause()); } if (from.has_having_clause()) { _internal_mutable_having_clause()->::pg_query::Node::MergeFrom(from._internal_having_clause()); } if (from.has_limit_offset()) { _internal_mutable_limit_offset()->::pg_query::Node::MergeFrom(from._internal_limit_offset()); } if (from.has_limit_count()) { _internal_mutable_limit_count()->::pg_query::Node::MergeFrom(from._internal_limit_count()); } if (from.has_with_clause()) { _internal_mutable_with_clause()->::pg_query::WithClause::MergeFrom(from._internal_with_clause()); } if (from.has_larg()) { _internal_mutable_larg()->::pg_query::SelectStmt::MergeFrom(from._internal_larg()); } if (from.has_rarg()) { _internal_mutable_rarg()->::pg_query::SelectStmt::MergeFrom(from._internal_rarg()); } if (from.limit_option() != 0) { _internal_set_limit_option(from._internal_limit_option()); } if (from.op() != 0) { _internal_set_op(from._internal_op()); } if (from.all() != 0) { _internal_set_all(from._internal_all()); } } void SelectStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.SelectStmt) if (&from == this) return; Clear(); MergeFrom(from); } void SelectStmt::CopyFrom(const SelectStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SelectStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool SelectStmt::IsInitialized() const { return true; } void SelectStmt::InternalSwap(SelectStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); distinct_clause_.InternalSwap(&other->distinct_clause_); target_list_.InternalSwap(&other->target_list_); from_clause_.InternalSwap(&other->from_clause_); group_clause_.InternalSwap(&other->group_clause_); window_clause_.InternalSwap(&other->window_clause_); values_lists_.InternalSwap(&other->values_lists_); sort_clause_.InternalSwap(&other->sort_clause_); locking_clause_.InternalSwap(&other->locking_clause_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(SelectStmt, all_) + sizeof(SelectStmt::all_) - PROTOBUF_FIELD_OFFSET(SelectStmt, into_clause_)>( reinterpret_cast(&into_clause_), reinterpret_cast(&other->into_clause_)); } ::PROTOBUF_NAMESPACE_ID::Metadata SelectStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterTableStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const AlterTableStmt* msg); }; const ::pg_query::RangeVar& AlterTableStmt::_Internal::relation(const AlterTableStmt* msg) { return *msg->relation_; } AlterTableStmt::AlterTableStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), cmds_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTableStmt) } AlterTableStmt::AlterTableStmt(const AlterTableStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), cmds_(from.cmds_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } ::memcpy(&relkind_, &from.relkind_, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&relkind_)) + sizeof(missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTableStmt) } void AlterTableStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&relation_)) + sizeof(missing_ok_)); } AlterTableStmt::~AlterTableStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTableStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterTableStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete relation_; } void AlterTableStmt::ArenaDtor(void* object) { AlterTableStmt* _this = reinterpret_cast< AlterTableStmt* >(object); (void)_this; } void AlterTableStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterTableStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterTableStmt& AlterTableStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterTableStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTableStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cmds_.Clear(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; ::memset(&relkind_, 0, static_cast( reinterpret_cast(&missing_ok_) - reinterpret_cast(&relkind_)) + sizeof(missing_ok_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterTableStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_cmds(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_relkind(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // bool missing_ok = 4 [json_name = "missing_ok"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterTableStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTableStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; for (unsigned int i = 0, n = static_cast(this->_internal_cmds_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_cmds(i), target, stream); } // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; if (this->relkind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_relkind(), target); } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterTableStmt) return target; } size_t AlterTableStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterTableStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; total_size += 1UL * this->_internal_cmds_size(); for (const auto& msg : this->cmds_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; if (this->relkind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_relkind()); } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterTableStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterTableStmt) GOOGLE_DCHECK_NE(&from, this); const AlterTableStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterTableStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterTableStmt) MergeFrom(*source); } } void AlterTableStmt::MergeFrom(const AlterTableStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTableStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; cmds_.MergeFrom(from.cmds_); if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.relkind() != 0) { _internal_set_relkind(from._internal_relkind()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void AlterTableStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterTableStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterTableStmt::CopyFrom(const AlterTableStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTableStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterTableStmt::IsInitialized() const { return true; } void AlterTableStmt::InternalSwap(AlterTableStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); cmds_.InternalSwap(&other->cmds_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterTableStmt, missing_ok_) + sizeof(AlterTableStmt::missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterTableStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterTableStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterTableCmd::_Internal { public: static const ::pg_query::RoleSpec& newowner(const AlterTableCmd* msg); static const ::pg_query::Node& def(const AlterTableCmd* msg); }; const ::pg_query::RoleSpec& AlterTableCmd::_Internal::newowner(const AlterTableCmd* msg) { return *msg->newowner_; } const ::pg_query::Node& AlterTableCmd::_Internal::def(const AlterTableCmd* msg) { return *msg->def_; } AlterTableCmd::AlterTableCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTableCmd) } AlterTableCmd::AlterTableCmd(const AlterTableCmd& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } if (from._internal_has_newowner()) { newowner_ = new ::pg_query::RoleSpec(*from.newowner_); } else { newowner_ = nullptr; } if (from._internal_has_def()) { def_ = new ::pg_query::Node(*from.def_); } else { def_ = nullptr; } ::memcpy(&subtype_, &from.subtype_, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&subtype_)) + sizeof(missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTableCmd) } void AlterTableCmd::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&newowner_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&newowner_)) + sizeof(missing_ok_)); } AlterTableCmd::~AlterTableCmd() { // @@protoc_insertion_point(destructor:pg_query.AlterTableCmd) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterTableCmd::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete newowner_; if (this != internal_default_instance()) delete def_; } void AlterTableCmd::ArenaDtor(void* object) { AlterTableCmd* _this = reinterpret_cast< AlterTableCmd* >(object); (void)_this; } void AlterTableCmd::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterTableCmd::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterTableCmd& AlterTableCmd::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterTableCmd::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTableCmd) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; name_.ClearToEmpty(); if (GetArena() == nullptr && newowner_ != nullptr) { delete newowner_; } newowner_ = nullptr; if (GetArena() == nullptr && def_ != nullptr) { delete def_; } def_ = nullptr; ::memset(&subtype_, 0, static_cast( reinterpret_cast(&missing_ok_) - reinterpret_cast(&subtype_)) + sizeof(missing_ok_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterTableCmd::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_subtype(static_cast<::pg_query::AlterTableType>(val)); } else goto handle_unusual; continue; // string name = 2 [json_name = "name"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterTableCmd.name")); CHK_(ptr); } else goto handle_unusual; continue; // int32 num = 3 [json_name = "num"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_newowner(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node def = 5 [json_name = "def"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_def(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_behavior(static_cast<::pg_query::DropBehavior>(val)); } else goto handle_unusual; continue; // bool missing_ok = 7 [json_name = "missing_ok"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterTableCmd::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTableCmd) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; if (this->subtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_subtype(), target); } // string name = 2 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterTableCmd.name"); target = stream->WriteStringMaybeAliased( 2, this->_internal_name(), target); } // int32 num = 3 [json_name = "num"]; if (this->num() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_num(), target); } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; if (this->has_newowner()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::newowner(this), target, stream); } // .pg_query.Node def = 5 [json_name = "def"]; if (this->has_def()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::def(this), target, stream); } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; if (this->behavior() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 6, this->_internal_behavior(), target); } // bool missing_ok = 7 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(7, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterTableCmd) return target; } size_t AlterTableCmd::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterTableCmd) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string name = 2 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; if (this->has_newowner()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *newowner_); } // .pg_query.Node def = 5 [json_name = "def"]; if (this->has_def()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *def_); } // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; if (this->subtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_subtype()); } // int32 num = 3 [json_name = "num"]; if (this->num() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_num()); } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; if (this->behavior() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_behavior()); } // bool missing_ok = 7 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterTableCmd::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterTableCmd) GOOGLE_DCHECK_NE(&from, this); const AlterTableCmd* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterTableCmd) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterTableCmd) MergeFrom(*source); } } void AlterTableCmd::MergeFrom(const AlterTableCmd& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTableCmd) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.has_newowner()) { _internal_mutable_newowner()->::pg_query::RoleSpec::MergeFrom(from._internal_newowner()); } if (from.has_def()) { _internal_mutable_def()->::pg_query::Node::MergeFrom(from._internal_def()); } if (from.subtype() != 0) { _internal_set_subtype(from._internal_subtype()); } if (from.num() != 0) { _internal_set_num(from._internal_num()); } if (from.behavior() != 0) { _internal_set_behavior(from._internal_behavior()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void AlterTableCmd::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterTableCmd) if (&from == this) return; Clear(); MergeFrom(from); } void AlterTableCmd::CopyFrom(const AlterTableCmd& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTableCmd) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterTableCmd::IsInitialized() const { return true; } void AlterTableCmd::InternalSwap(AlterTableCmd* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterTableCmd, missing_ok_) + sizeof(AlterTableCmd::missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterTableCmd, newowner_)>( reinterpret_cast(&newowner_), reinterpret_cast(&other->newowner_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterTableCmd::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterDomainStmt::_Internal { public: static const ::pg_query::Node& def(const AlterDomainStmt* msg); }; const ::pg_query::Node& AlterDomainStmt::_Internal::def(const AlterDomainStmt* msg) { return *msg->def_; } AlterDomainStmt::AlterDomainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), type_name_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterDomainStmt) } AlterDomainStmt::AlterDomainStmt(const AlterDomainStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), type_name_(from.type_name_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); subtype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_subtype().empty()) { subtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_subtype(), GetArena()); } name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } if (from._internal_has_def()) { def_ = new ::pg_query::Node(*from.def_); } else { def_ = nullptr; } ::memcpy(&behavior_, &from.behavior_, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&behavior_)) + sizeof(missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterDomainStmt) } void AlterDomainStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); subtype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&def_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&def_)) + sizeof(missing_ok_)); } AlterDomainStmt::~AlterDomainStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterDomainStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterDomainStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); subtype_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete def_; } void AlterDomainStmt::ArenaDtor(void* object) { AlterDomainStmt* _this = reinterpret_cast< AlterDomainStmt* >(object); (void)_this; } void AlterDomainStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterDomainStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterDomainStmt& AlterDomainStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterDomainStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterDomainStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; type_name_.Clear(); subtype_.ClearToEmpty(); name_.ClearToEmpty(); if (GetArena() == nullptr && def_ != nullptr) { delete def_; } def_ = nullptr; ::memset(&behavior_, 0, static_cast( reinterpret_cast(&missing_ok_) - reinterpret_cast(&behavior_)) + sizeof(missing_ok_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterDomainStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string subtype = 1 [json_name = "subtype"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_subtype(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterDomainStmt.subtype")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node type_name = 2 [json_name = "typeName"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_type_name(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // string name = 3 [json_name = "name"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterDomainStmt.name")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node def = 4 [json_name = "def"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_def(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_behavior(static_cast<::pg_query::DropBehavior>(val)); } else goto handle_unusual; continue; // bool missing_ok = 6 [json_name = "missing_ok"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterDomainStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterDomainStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string subtype = 1 [json_name = "subtype"]; if (this->subtype().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_subtype().data(), static_cast(this->_internal_subtype().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterDomainStmt.subtype"); target = stream->WriteStringMaybeAliased( 1, this->_internal_subtype(), target); } // repeated .pg_query.Node type_name = 2 [json_name = "typeName"]; for (unsigned int i = 0, n = static_cast(this->_internal_type_name_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_type_name(i), target, stream); } // string name = 3 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterDomainStmt.name"); target = stream->WriteStringMaybeAliased( 3, this->_internal_name(), target); } // .pg_query.Node def = 4 [json_name = "def"]; if (this->has_def()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::def(this), target, stream); } // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; if (this->behavior() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 5, this->_internal_behavior(), target); } // bool missing_ok = 6 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterDomainStmt) return target; } size_t AlterDomainStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterDomainStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node type_name = 2 [json_name = "typeName"]; total_size += 1UL * this->_internal_type_name_size(); for (const auto& msg : this->type_name_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string subtype = 1 [json_name = "subtype"]; if (this->subtype().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_subtype()); } // string name = 3 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node def = 4 [json_name = "def"]; if (this->has_def()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *def_); } // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; if (this->behavior() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_behavior()); } // bool missing_ok = 6 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterDomainStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterDomainStmt) GOOGLE_DCHECK_NE(&from, this); const AlterDomainStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterDomainStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterDomainStmt) MergeFrom(*source); } } void AlterDomainStmt::MergeFrom(const AlterDomainStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterDomainStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; type_name_.MergeFrom(from.type_name_); if (from.subtype().size() > 0) { _internal_set_subtype(from._internal_subtype()); } if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.has_def()) { _internal_mutable_def()->::pg_query::Node::MergeFrom(from._internal_def()); } if (from.behavior() != 0) { _internal_set_behavior(from._internal_behavior()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void AlterDomainStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterDomainStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterDomainStmt::CopyFrom(const AlterDomainStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterDomainStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterDomainStmt::IsInitialized() const { return true; } void AlterDomainStmt::InternalSwap(AlterDomainStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); type_name_.InternalSwap(&other->type_name_); subtype_.Swap(&other->subtype_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterDomainStmt, missing_ok_) + sizeof(AlterDomainStmt::missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterDomainStmt, def_)>( reinterpret_cast(&def_), reinterpret_cast(&other->def_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterDomainStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class SetOperationStmt::_Internal { public: static const ::pg_query::Node& larg(const SetOperationStmt* msg); static const ::pg_query::Node& rarg(const SetOperationStmt* msg); }; const ::pg_query::Node& SetOperationStmt::_Internal::larg(const SetOperationStmt* msg) { return *msg->larg_; } const ::pg_query::Node& SetOperationStmt::_Internal::rarg(const SetOperationStmt* msg) { return *msg->rarg_; } SetOperationStmt::SetOperationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), col_types_(arena), col_typmods_(arena), col_collations_(arena), group_clauses_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SetOperationStmt) } SetOperationStmt::SetOperationStmt(const SetOperationStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), col_types_(from.col_types_), col_typmods_(from.col_typmods_), col_collations_(from.col_collations_), group_clauses_(from.group_clauses_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_larg()) { larg_ = new ::pg_query::Node(*from.larg_); } else { larg_ = nullptr; } if (from._internal_has_rarg()) { rarg_ = new ::pg_query::Node(*from.rarg_); } else { rarg_ = nullptr; } ::memcpy(&op_, &from.op_, static_cast(reinterpret_cast(&all_) - reinterpret_cast(&op_)) + sizeof(all_)); // @@protoc_insertion_point(copy_constructor:pg_query.SetOperationStmt) } void SetOperationStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&larg_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&all_) - reinterpret_cast(&larg_)) + sizeof(all_)); } SetOperationStmt::~SetOperationStmt() { // @@protoc_insertion_point(destructor:pg_query.SetOperationStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void SetOperationStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete larg_; if (this != internal_default_instance()) delete rarg_; } void SetOperationStmt::ArenaDtor(void* object) { SetOperationStmt* _this = reinterpret_cast< SetOperationStmt* >(object); (void)_this; } void SetOperationStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void SetOperationStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const SetOperationStmt& SetOperationStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void SetOperationStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SetOperationStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; col_types_.Clear(); col_typmods_.Clear(); col_collations_.Clear(); group_clauses_.Clear(); if (GetArena() == nullptr && larg_ != nullptr) { delete larg_; } larg_ = nullptr; if (GetArena() == nullptr && rarg_ != nullptr) { delete rarg_; } rarg_ = nullptr; ::memset(&op_, 0, static_cast( reinterpret_cast(&all_) - reinterpret_cast(&op_)) + sizeof(all_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* SetOperationStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.SetOperation op = 1 [json_name = "op"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_op(static_cast<::pg_query::SetOperation>(val)); } else goto handle_unusual; continue; // bool all = 2 [json_name = "all"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { all_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node larg = 3 [json_name = "larg"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_larg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node rarg = 4 [json_name = "rarg"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_rarg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_col_types(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_col_typmods(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_col_collations(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_group_clauses(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* SetOperationStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SetOperationStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.SetOperation op = 1 [json_name = "op"]; if (this->op() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_op(), target); } // bool all = 2 [json_name = "all"]; if (this->all() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_all(), target); } // .pg_query.Node larg = 3 [json_name = "larg"]; if (this->has_larg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::larg(this), target, stream); } // .pg_query.Node rarg = 4 [json_name = "rarg"]; if (this->has_rarg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::rarg(this), target, stream); } // repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; for (unsigned int i = 0, n = static_cast(this->_internal_col_types_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_col_types(i), target, stream); } // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; for (unsigned int i = 0, n = static_cast(this->_internal_col_typmods_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_col_typmods(i), target, stream); } // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; for (unsigned int i = 0, n = static_cast(this->_internal_col_collations_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(7, this->_internal_col_collations(i), target, stream); } // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; for (unsigned int i = 0, n = static_cast(this->_internal_group_clauses_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_group_clauses(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.SetOperationStmt) return target; } size_t SetOperationStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.SetOperationStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; total_size += 1UL * this->_internal_col_types_size(); for (const auto& msg : this->col_types_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; total_size += 1UL * this->_internal_col_typmods_size(); for (const auto& msg : this->col_typmods_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; total_size += 1UL * this->_internal_col_collations_size(); for (const auto& msg : this->col_collations_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; total_size += 1UL * this->_internal_group_clauses_size(); for (const auto& msg : this->group_clauses_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node larg = 3 [json_name = "larg"]; if (this->has_larg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *larg_); } // .pg_query.Node rarg = 4 [json_name = "rarg"]; if (this->has_rarg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *rarg_); } // .pg_query.SetOperation op = 1 [json_name = "op"]; if (this->op() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_op()); } // bool all = 2 [json_name = "all"]; if (this->all() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void SetOperationStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.SetOperationStmt) GOOGLE_DCHECK_NE(&from, this); const SetOperationStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.SetOperationStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.SetOperationStmt) MergeFrom(*source); } } void SetOperationStmt::MergeFrom(const SetOperationStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SetOperationStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; col_types_.MergeFrom(from.col_types_); col_typmods_.MergeFrom(from.col_typmods_); col_collations_.MergeFrom(from.col_collations_); group_clauses_.MergeFrom(from.group_clauses_); if (from.has_larg()) { _internal_mutable_larg()->::pg_query::Node::MergeFrom(from._internal_larg()); } if (from.has_rarg()) { _internal_mutable_rarg()->::pg_query::Node::MergeFrom(from._internal_rarg()); } if (from.op() != 0) { _internal_set_op(from._internal_op()); } if (from.all() != 0) { _internal_set_all(from._internal_all()); } } void SetOperationStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.SetOperationStmt) if (&from == this) return; Clear(); MergeFrom(from); } void SetOperationStmt::CopyFrom(const SetOperationStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SetOperationStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool SetOperationStmt::IsInitialized() const { return true; } void SetOperationStmt::InternalSwap(SetOperationStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); col_types_.InternalSwap(&other->col_types_); col_typmods_.InternalSwap(&other->col_typmods_); col_collations_.InternalSwap(&other->col_collations_); group_clauses_.InternalSwap(&other->group_clauses_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(SetOperationStmt, all_) + sizeof(SetOperationStmt::all_) - PROTOBUF_FIELD_OFFSET(SetOperationStmt, larg_)>( reinterpret_cast(&larg_), reinterpret_cast(&other->larg_)); } ::PROTOBUF_NAMESPACE_ID::Metadata SetOperationStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class GrantStmt::_Internal { public: }; GrantStmt::GrantStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), objects_(arena), privileges_(arena), grantees_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.GrantStmt) } GrantStmt::GrantStmt(const GrantStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), objects_(from.objects_), privileges_(from.privileges_), grantees_(from.grantees_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&targtype_, &from.targtype_, static_cast(reinterpret_cast(&behavior_) - reinterpret_cast(&targtype_)) + sizeof(behavior_)); // @@protoc_insertion_point(copy_constructor:pg_query.GrantStmt) } void GrantStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&targtype_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&behavior_) - reinterpret_cast(&targtype_)) + sizeof(behavior_)); } GrantStmt::~GrantStmt() { // @@protoc_insertion_point(destructor:pg_query.GrantStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void GrantStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void GrantStmt::ArenaDtor(void* object) { GrantStmt* _this = reinterpret_cast< GrantStmt* >(object); (void)_this; } void GrantStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void GrantStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const GrantStmt& GrantStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void GrantStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.GrantStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; objects_.Clear(); privileges_.Clear(); grantees_.Clear(); ::memset(&targtype_, 0, static_cast( reinterpret_cast(&behavior_) - reinterpret_cast(&targtype_)) + sizeof(behavior_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* GrantStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // bool is_grant = 1 [json_name = "is_grant"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { is_grant_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_targtype(static_cast<::pg_query::GrantTargetType>(val)); } else goto handle_unusual; continue; // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_objtype(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node objects = 4 [json_name = "objects"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_objects(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_privileges(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_grantees(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // bool grant_option = 7 [json_name = "grant_option"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { grant_option_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropBehavior behavior = 8 [json_name = "behavior"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_behavior(static_cast<::pg_query::DropBehavior>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* GrantStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.GrantStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // bool is_grant = 1 [json_name = "is_grant"]; if (this->is_grant() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_is_grant(), target); } // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; if (this->targtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_targtype(), target); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->objtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_objtype(), target); } // repeated .pg_query.Node objects = 4 [json_name = "objects"]; for (unsigned int i = 0, n = static_cast(this->_internal_objects_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_objects(i), target, stream); } // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; for (unsigned int i = 0, n = static_cast(this->_internal_privileges_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_privileges(i), target, stream); } // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; for (unsigned int i = 0, n = static_cast(this->_internal_grantees_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_grantees(i), target, stream); } // bool grant_option = 7 [json_name = "grant_option"]; if (this->grant_option() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(7, this->_internal_grant_option(), target); } // .pg_query.DropBehavior behavior = 8 [json_name = "behavior"]; if (this->behavior() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 8, this->_internal_behavior(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.GrantStmt) return target; } size_t GrantStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.GrantStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node objects = 4 [json_name = "objects"]; total_size += 1UL * this->_internal_objects_size(); for (const auto& msg : this->objects_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; total_size += 1UL * this->_internal_privileges_size(); for (const auto& msg : this->privileges_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; total_size += 1UL * this->_internal_grantees_size(); for (const auto& msg : this->grantees_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; if (this->targtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_targtype()); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->objtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_objtype()); } // bool is_grant = 1 [json_name = "is_grant"]; if (this->is_grant() != 0) { total_size += 1 + 1; } // bool grant_option = 7 [json_name = "grant_option"]; if (this->grant_option() != 0) { total_size += 1 + 1; } // .pg_query.DropBehavior behavior = 8 [json_name = "behavior"]; if (this->behavior() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_behavior()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void GrantStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.GrantStmt) GOOGLE_DCHECK_NE(&from, this); const GrantStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.GrantStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.GrantStmt) MergeFrom(*source); } } void GrantStmt::MergeFrom(const GrantStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.GrantStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; objects_.MergeFrom(from.objects_); privileges_.MergeFrom(from.privileges_); grantees_.MergeFrom(from.grantees_); if (from.targtype() != 0) { _internal_set_targtype(from._internal_targtype()); } if (from.objtype() != 0) { _internal_set_objtype(from._internal_objtype()); } if (from.is_grant() != 0) { _internal_set_is_grant(from._internal_is_grant()); } if (from.grant_option() != 0) { _internal_set_grant_option(from._internal_grant_option()); } if (from.behavior() != 0) { _internal_set_behavior(from._internal_behavior()); } } void GrantStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.GrantStmt) if (&from == this) return; Clear(); MergeFrom(from); } void GrantStmt::CopyFrom(const GrantStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.GrantStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool GrantStmt::IsInitialized() const { return true; } void GrantStmt::InternalSwap(GrantStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); objects_.InternalSwap(&other->objects_); privileges_.InternalSwap(&other->privileges_); grantees_.InternalSwap(&other->grantees_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(GrantStmt, behavior_) + sizeof(GrantStmt::behavior_) - PROTOBUF_FIELD_OFFSET(GrantStmt, targtype_)>( reinterpret_cast(&targtype_), reinterpret_cast(&other->targtype_)); } ::PROTOBUF_NAMESPACE_ID::Metadata GrantStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class GrantRoleStmt::_Internal { public: static const ::pg_query::RoleSpec& grantor(const GrantRoleStmt* msg); }; const ::pg_query::RoleSpec& GrantRoleStmt::_Internal::grantor(const GrantRoleStmt* msg) { return *msg->grantor_; } GrantRoleStmt::GrantRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), granted_roles_(arena), grantee_roles_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.GrantRoleStmt) } GrantRoleStmt::GrantRoleStmt(const GrantRoleStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), granted_roles_(from.granted_roles_), grantee_roles_(from.grantee_roles_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_grantor()) { grantor_ = new ::pg_query::RoleSpec(*from.grantor_); } else { grantor_ = nullptr; } ::memcpy(&is_grant_, &from.is_grant_, static_cast(reinterpret_cast(&behavior_) - reinterpret_cast(&is_grant_)) + sizeof(behavior_)); // @@protoc_insertion_point(copy_constructor:pg_query.GrantRoleStmt) } void GrantRoleStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&grantor_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&behavior_) - reinterpret_cast(&grantor_)) + sizeof(behavior_)); } GrantRoleStmt::~GrantRoleStmt() { // @@protoc_insertion_point(destructor:pg_query.GrantRoleStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void GrantRoleStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete grantor_; } void GrantRoleStmt::ArenaDtor(void* object) { GrantRoleStmt* _this = reinterpret_cast< GrantRoleStmt* >(object); (void)_this; } void GrantRoleStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void GrantRoleStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const GrantRoleStmt& GrantRoleStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void GrantRoleStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.GrantRoleStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; granted_roles_.Clear(); grantee_roles_.Clear(); if (GetArena() == nullptr && grantor_ != nullptr) { delete grantor_; } grantor_ = nullptr; ::memset(&is_grant_, 0, static_cast( reinterpret_cast(&behavior_) - reinterpret_cast(&is_grant_)) + sizeof(behavior_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* GrantRoleStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_granted_roles(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_grantee_roles(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // bool is_grant = 3 [json_name = "is_grant"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { is_grant_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool admin_opt = 4 [json_name = "admin_opt"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { admin_opt_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_grantor(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_behavior(static_cast<::pg_query::DropBehavior>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* GrantRoleStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.GrantRoleStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; for (unsigned int i = 0, n = static_cast(this->_internal_granted_roles_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_granted_roles(i), target, stream); } // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; for (unsigned int i = 0, n = static_cast(this->_internal_grantee_roles_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_grantee_roles(i), target, stream); } // bool is_grant = 3 [json_name = "is_grant"]; if (this->is_grant() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_is_grant(), target); } // bool admin_opt = 4 [json_name = "admin_opt"]; if (this->admin_opt() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_admin_opt(), target); } // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; if (this->has_grantor()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::grantor(this), target, stream); } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; if (this->behavior() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 6, this->_internal_behavior(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.GrantRoleStmt) return target; } size_t GrantRoleStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.GrantRoleStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; total_size += 1UL * this->_internal_granted_roles_size(); for (const auto& msg : this->granted_roles_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; total_size += 1UL * this->_internal_grantee_roles_size(); for (const auto& msg : this->grantee_roles_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; if (this->has_grantor()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *grantor_); } // bool is_grant = 3 [json_name = "is_grant"]; if (this->is_grant() != 0) { total_size += 1 + 1; } // bool admin_opt = 4 [json_name = "admin_opt"]; if (this->admin_opt() != 0) { total_size += 1 + 1; } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; if (this->behavior() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_behavior()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void GrantRoleStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.GrantRoleStmt) GOOGLE_DCHECK_NE(&from, this); const GrantRoleStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.GrantRoleStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.GrantRoleStmt) MergeFrom(*source); } } void GrantRoleStmt::MergeFrom(const GrantRoleStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.GrantRoleStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; granted_roles_.MergeFrom(from.granted_roles_); grantee_roles_.MergeFrom(from.grantee_roles_); if (from.has_grantor()) { _internal_mutable_grantor()->::pg_query::RoleSpec::MergeFrom(from._internal_grantor()); } if (from.is_grant() != 0) { _internal_set_is_grant(from._internal_is_grant()); } if (from.admin_opt() != 0) { _internal_set_admin_opt(from._internal_admin_opt()); } if (from.behavior() != 0) { _internal_set_behavior(from._internal_behavior()); } } void GrantRoleStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.GrantRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } void GrantRoleStmt::CopyFrom(const GrantRoleStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.GrantRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool GrantRoleStmt::IsInitialized() const { return true; } void GrantRoleStmt::InternalSwap(GrantRoleStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); granted_roles_.InternalSwap(&other->granted_roles_); grantee_roles_.InternalSwap(&other->grantee_roles_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(GrantRoleStmt, behavior_) + sizeof(GrantRoleStmt::behavior_) - PROTOBUF_FIELD_OFFSET(GrantRoleStmt, grantor_)>( reinterpret_cast(&grantor_), reinterpret_cast(&other->grantor_)); } ::PROTOBUF_NAMESPACE_ID::Metadata GrantRoleStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterDefaultPrivilegesStmt::_Internal { public: static const ::pg_query::GrantStmt& action(const AlterDefaultPrivilegesStmt* msg); }; const ::pg_query::GrantStmt& AlterDefaultPrivilegesStmt::_Internal::action(const AlterDefaultPrivilegesStmt* msg) { return *msg->action_; } AlterDefaultPrivilegesStmt::AlterDefaultPrivilegesStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterDefaultPrivilegesStmt) } AlterDefaultPrivilegesStmt::AlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_action()) { action_ = new ::pg_query::GrantStmt(*from.action_); } else { action_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.AlterDefaultPrivilegesStmt) } void AlterDefaultPrivilegesStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); action_ = nullptr; } AlterDefaultPrivilegesStmt::~AlterDefaultPrivilegesStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterDefaultPrivilegesStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterDefaultPrivilegesStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete action_; } void AlterDefaultPrivilegesStmt::ArenaDtor(void* object) { AlterDefaultPrivilegesStmt* _this = reinterpret_cast< AlterDefaultPrivilegesStmt* >(object); (void)_this; } void AlterDefaultPrivilegesStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterDefaultPrivilegesStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterDefaultPrivilegesStmt& AlterDefaultPrivilegesStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterDefaultPrivilegesStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterDefaultPrivilegesStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); if (GetArena() == nullptr && action_ != nullptr) { delete action_; } action_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterDefaultPrivilegesStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node options = 1 [json_name = "options"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // .pg_query.GrantStmt action = 2 [json_name = "action"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_action(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterDefaultPrivilegesStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterDefaultPrivilegesStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node options = 1 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_options(i), target, stream); } // .pg_query.GrantStmt action = 2 [json_name = "action"]; if (this->has_action()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::action(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterDefaultPrivilegesStmt) return target; } size_t AlterDefaultPrivilegesStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterDefaultPrivilegesStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 1 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.GrantStmt action = 2 [json_name = "action"]; if (this->has_action()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *action_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterDefaultPrivilegesStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterDefaultPrivilegesStmt) GOOGLE_DCHECK_NE(&from, this); const AlterDefaultPrivilegesStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterDefaultPrivilegesStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterDefaultPrivilegesStmt) MergeFrom(*source); } } void AlterDefaultPrivilegesStmt::MergeFrom(const AlterDefaultPrivilegesStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterDefaultPrivilegesStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.has_action()) { _internal_mutable_action()->::pg_query::GrantStmt::MergeFrom(from._internal_action()); } } void AlterDefaultPrivilegesStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterDefaultPrivilegesStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterDefaultPrivilegesStmt::CopyFrom(const AlterDefaultPrivilegesStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterDefaultPrivilegesStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterDefaultPrivilegesStmt::IsInitialized() const { return true; } void AlterDefaultPrivilegesStmt::InternalSwap(AlterDefaultPrivilegesStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); swap(action_, other->action_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterDefaultPrivilegesStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ClosePortalStmt::_Internal { public: }; ClosePortalStmt::ClosePortalStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ClosePortalStmt) } ClosePortalStmt::ClosePortalStmt(const ClosePortalStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); portalname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_portalname().empty()) { portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_portalname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.ClosePortalStmt) } void ClosePortalStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ClosePortalStmt_protobuf_2fpg_5fquery_2eproto.base); portalname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } ClosePortalStmt::~ClosePortalStmt() { // @@protoc_insertion_point(destructor:pg_query.ClosePortalStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ClosePortalStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); portalname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void ClosePortalStmt::ArenaDtor(void* object) { ClosePortalStmt* _this = reinterpret_cast< ClosePortalStmt* >(object); (void)_this; } void ClosePortalStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ClosePortalStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ClosePortalStmt& ClosePortalStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ClosePortalStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ClosePortalStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ClosePortalStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; portalname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ClosePortalStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string portalname = 1 [json_name = "portalname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_portalname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ClosePortalStmt.portalname")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ClosePortalStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ClosePortalStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string portalname = 1 [json_name = "portalname"]; if (this->portalname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_portalname().data(), static_cast(this->_internal_portalname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ClosePortalStmt.portalname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_portalname(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ClosePortalStmt) return target; } size_t ClosePortalStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ClosePortalStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string portalname = 1 [json_name = "portalname"]; if (this->portalname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_portalname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ClosePortalStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ClosePortalStmt) GOOGLE_DCHECK_NE(&from, this); const ClosePortalStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ClosePortalStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ClosePortalStmt) MergeFrom(*source); } } void ClosePortalStmt::MergeFrom(const ClosePortalStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ClosePortalStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.portalname().size() > 0) { _internal_set_portalname(from._internal_portalname()); } } void ClosePortalStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ClosePortalStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ClosePortalStmt::CopyFrom(const ClosePortalStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ClosePortalStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ClosePortalStmt::IsInitialized() const { return true; } void ClosePortalStmt::InternalSwap(ClosePortalStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); portalname_.Swap(&other->portalname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata ClosePortalStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ClusterStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const ClusterStmt* msg); }; const ::pg_query::RangeVar& ClusterStmt::_Internal::relation(const ClusterStmt* msg) { return *msg->relation_; } ClusterStmt::ClusterStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ClusterStmt) } ClusterStmt::ClusterStmt(const ClusterStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); indexname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_indexname().empty()) { indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_indexname(), GetArena()); } if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } options_ = from.options_; // @@protoc_insertion_point(copy_constructor:pg_query.ClusterStmt) } void ClusterStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); indexname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&options_) - reinterpret_cast(&relation_)) + sizeof(options_)); } ClusterStmt::~ClusterStmt() { // @@protoc_insertion_point(destructor:pg_query.ClusterStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ClusterStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); indexname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete relation_; } void ClusterStmt::ArenaDtor(void* object) { ClusterStmt* _this = reinterpret_cast< ClusterStmt* >(object); (void)_this; } void ClusterStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ClusterStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ClusterStmt& ClusterStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ClusterStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ClusterStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; indexname_.ClearToEmpty(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; options_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ClusterStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string indexname = 2 [json_name = "indexname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_indexname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ClusterStmt.indexname")); CHK_(ptr); } else goto handle_unusual; continue; // int32 options = 3 [json_name = "options"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { options_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ClusterStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ClusterStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // string indexname = 2 [json_name = "indexname"]; if (this->indexname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_indexname().data(), static_cast(this->_internal_indexname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ClusterStmt.indexname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_indexname(), target); } // int32 options = 3 [json_name = "options"]; if (this->options() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_options(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ClusterStmt) return target; } size_t ClusterStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ClusterStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string indexname = 2 [json_name = "indexname"]; if (this->indexname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_indexname()); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // int32 options = 3 [json_name = "options"]; if (this->options() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_options()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ClusterStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ClusterStmt) GOOGLE_DCHECK_NE(&from, this); const ClusterStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ClusterStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ClusterStmt) MergeFrom(*source); } } void ClusterStmt::MergeFrom(const ClusterStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ClusterStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.indexname().size() > 0) { _internal_set_indexname(from._internal_indexname()); } if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.options() != 0) { _internal_set_options(from._internal_options()); } } void ClusterStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ClusterStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ClusterStmt::CopyFrom(const ClusterStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ClusterStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ClusterStmt::IsInitialized() const { return true; } void ClusterStmt::InternalSwap(ClusterStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); indexname_.Swap(&other->indexname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ClusterStmt, options_) + sizeof(ClusterStmt::options_) - PROTOBUF_FIELD_OFFSET(ClusterStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ClusterStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CopyStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const CopyStmt* msg); static const ::pg_query::Node& query(const CopyStmt* msg); static const ::pg_query::Node& where_clause(const CopyStmt* msg); }; const ::pg_query::RangeVar& CopyStmt::_Internal::relation(const CopyStmt* msg) { return *msg->relation_; } const ::pg_query::Node& CopyStmt::_Internal::query(const CopyStmt* msg) { return *msg->query_; } const ::pg_query::Node& CopyStmt::_Internal::where_clause(const CopyStmt* msg) { return *msg->where_clause_; } CopyStmt::CopyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), attlist_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CopyStmt) } CopyStmt::CopyStmt(const CopyStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), attlist_(from.attlist_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_filename().empty()) { filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_filename(), GetArena()); } if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_query()) { query_ = new ::pg_query::Node(*from.query_); } else { query_ = nullptr; } if (from._internal_has_where_clause()) { where_clause_ = new ::pg_query::Node(*from.where_clause_); } else { where_clause_ = nullptr; } ::memcpy(&is_from_, &from.is_from_, static_cast(reinterpret_cast(&is_program_) - reinterpret_cast(&is_from_)) + sizeof(is_program_)); // @@protoc_insertion_point(copy_constructor:pg_query.CopyStmt) } void CopyStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&is_program_) - reinterpret_cast(&relation_)) + sizeof(is_program_)); } CopyStmt::~CopyStmt() { // @@protoc_insertion_point(destructor:pg_query.CopyStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CopyStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); filename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete query_; if (this != internal_default_instance()) delete where_clause_; } void CopyStmt::ArenaDtor(void* object) { CopyStmt* _this = reinterpret_cast< CopyStmt* >(object); (void)_this; } void CopyStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CopyStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CopyStmt& CopyStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CopyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CopyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; attlist_.Clear(); options_.Clear(); filename_.ClearToEmpty(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; ::memset(&is_from_, 0, static_cast( reinterpret_cast(&is_program_) - reinterpret_cast(&is_from_)) + sizeof(is_program_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CopyStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node query = 2 [json_name = "query"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_query(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_attlist(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // bool is_from = 4 [json_name = "is_from"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { is_from_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool is_program = 5 [json_name = "is_program"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { is_program_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string filename = 6 [json_name = "filename"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { auto str = _internal_mutable_filename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CopyStmt.filename")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 7 [json_name = "options"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_where_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CopyStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CopyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // .pg_query.Node query = 2 [json_name = "query"]; if (this->has_query()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::query(this), target, stream); } // repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; for (unsigned int i = 0, n = static_cast(this->_internal_attlist_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_attlist(i), target, stream); } // bool is_from = 4 [json_name = "is_from"]; if (this->is_from() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_is_from(), target); } // bool is_program = 5 [json_name = "is_program"]; if (this->is_program() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_is_program(), target); } // string filename = 6 [json_name = "filename"]; if (this->filename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_filename().data(), static_cast(this->_internal_filename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CopyStmt.filename"); target = stream->WriteStringMaybeAliased( 6, this->_internal_filename(), target); } // repeated .pg_query.Node options = 7 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(7, this->_internal_options(i), target, stream); } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; if (this->has_where_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 8, _Internal::where_clause(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CopyStmt) return target; } size_t CopyStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CopyStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; total_size += 1UL * this->_internal_attlist_size(); for (const auto& msg : this->attlist_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 7 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string filename = 6 [json_name = "filename"]; if (this->filename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_filename()); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node query = 2 [json_name = "query"]; if (this->has_query()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *query_); } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; if (this->has_where_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *where_clause_); } // bool is_from = 4 [json_name = "is_from"]; if (this->is_from() != 0) { total_size += 1 + 1; } // bool is_program = 5 [json_name = "is_program"]; if (this->is_program() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CopyStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CopyStmt) GOOGLE_DCHECK_NE(&from, this); const CopyStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CopyStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CopyStmt) MergeFrom(*source); } } void CopyStmt::MergeFrom(const CopyStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CopyStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; attlist_.MergeFrom(from.attlist_); options_.MergeFrom(from.options_); if (from.filename().size() > 0) { _internal_set_filename(from._internal_filename()); } if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_query()) { _internal_mutable_query()->::pg_query::Node::MergeFrom(from._internal_query()); } if (from.has_where_clause()) { _internal_mutable_where_clause()->::pg_query::Node::MergeFrom(from._internal_where_clause()); } if (from.is_from() != 0) { _internal_set_is_from(from._internal_is_from()); } if (from.is_program() != 0) { _internal_set_is_program(from._internal_is_program()); } } void CopyStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CopyStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CopyStmt::CopyFrom(const CopyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CopyStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CopyStmt::IsInitialized() const { return true; } void CopyStmt::InternalSwap(CopyStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); attlist_.InternalSwap(&other->attlist_); options_.InternalSwap(&other->options_); filename_.Swap(&other->filename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CopyStmt, is_program_) + sizeof(CopyStmt::is_program_) - PROTOBUF_FIELD_OFFSET(CopyStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CopyStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const CreateStmt* msg); static const ::pg_query::PartitionBoundSpec& partbound(const CreateStmt* msg); static const ::pg_query::PartitionSpec& partspec(const CreateStmt* msg); static const ::pg_query::TypeName& of_typename(const CreateStmt* msg); }; const ::pg_query::RangeVar& CreateStmt::_Internal::relation(const CreateStmt* msg) { return *msg->relation_; } const ::pg_query::PartitionBoundSpec& CreateStmt::_Internal::partbound(const CreateStmt* msg) { return *msg->partbound_; } const ::pg_query::PartitionSpec& CreateStmt::_Internal::partspec(const CreateStmt* msg) { return *msg->partspec_; } const ::pg_query::TypeName& CreateStmt::_Internal::of_typename(const CreateStmt* msg) { return *msg->of_typename_; } CreateStmt::CreateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), table_elts_(arena), inh_relations_(arena), constraints_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateStmt) } CreateStmt::CreateStmt(const CreateStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), table_elts_(from.table_elts_), inh_relations_(from.inh_relations_), constraints_(from.constraints_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_tablespacename().empty()) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_tablespacename(), GetArena()); } access_method_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_access_method().empty()) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_access_method(), GetArena()); } if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_partbound()) { partbound_ = new ::pg_query::PartitionBoundSpec(*from.partbound_); } else { partbound_ = nullptr; } if (from._internal_has_partspec()) { partspec_ = new ::pg_query::PartitionSpec(*from.partspec_); } else { partspec_ = nullptr; } if (from._internal_has_of_typename()) { of_typename_ = new ::pg_query::TypeName(*from.of_typename_); } else { of_typename_ = nullptr; } ::memcpy(&oncommit_, &from.oncommit_, static_cast(reinterpret_cast(&if_not_exists_) - reinterpret_cast(&oncommit_)) + sizeof(if_not_exists_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateStmt) } void CreateStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); access_method_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&if_not_exists_) - reinterpret_cast(&relation_)) + sizeof(if_not_exists_)); } CreateStmt::~CreateStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); tablespacename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); access_method_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete partbound_; if (this != internal_default_instance()) delete partspec_; if (this != internal_default_instance()) delete of_typename_; } void CreateStmt::ArenaDtor(void* object) { CreateStmt* _this = reinterpret_cast< CreateStmt* >(object); (void)_this; } void CreateStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateStmt& CreateStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; table_elts_.Clear(); inh_relations_.Clear(); constraints_.Clear(); options_.Clear(); tablespacename_.ClearToEmpty(); access_method_.ClearToEmpty(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && partbound_ != nullptr) { delete partbound_; } partbound_ = nullptr; if (GetArena() == nullptr && partspec_ != nullptr) { delete partspec_; } partspec_ = nullptr; if (GetArena() == nullptr && of_typename_ != nullptr) { delete of_typename_; } of_typename_ = nullptr; ::memset(&oncommit_, 0, static_cast( reinterpret_cast(&if_not_exists_) - reinterpret_cast(&oncommit_)) + sizeof(if_not_exists_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_table_elts(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_inh_relations(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_partbound(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_partspec(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_of_typename(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_constraints(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 8 [json_name = "options"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_oncommit(static_cast<::pg_query::OnCommitAction>(val)); } else goto handle_unusual; continue; // string tablespacename = 10 [json_name = "tablespacename"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { auto str = _internal_mutable_tablespacename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateStmt.tablespacename")); CHK_(ptr); } else goto handle_unusual; continue; // string access_method = 11 [json_name = "accessMethod"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { auto str = _internal_mutable_access_method(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateStmt.access_method")); CHK_(ptr); } else goto handle_unusual; continue; // bool if_not_exists = 12 [json_name = "if_not_exists"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 96)) { if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; for (unsigned int i = 0, n = static_cast(this->_internal_table_elts_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_table_elts(i), target, stream); } // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; for (unsigned int i = 0, n = static_cast(this->_internal_inh_relations_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_inh_relations(i), target, stream); } // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; if (this->has_partbound()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::partbound(this), target, stream); } // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; if (this->has_partspec()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::partspec(this), target, stream); } // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; if (this->has_of_typename()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::of_typename(this), target, stream); } // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; for (unsigned int i = 0, n = static_cast(this->_internal_constraints_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(7, this->_internal_constraints(i), target, stream); } // repeated .pg_query.Node options = 8 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_options(i), target, stream); } // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; if (this->oncommit() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 9, this->_internal_oncommit(), target); } // string tablespacename = 10 [json_name = "tablespacename"]; if (this->tablespacename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_tablespacename().data(), static_cast(this->_internal_tablespacename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateStmt.tablespacename"); target = stream->WriteStringMaybeAliased( 10, this->_internal_tablespacename(), target); } // string access_method = 11 [json_name = "accessMethod"]; if (this->access_method().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_access_method().data(), static_cast(this->_internal_access_method().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateStmt.access_method"); target = stream->WriteStringMaybeAliased( 11, this->_internal_access_method(), target); } // bool if_not_exists = 12 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(12, this->_internal_if_not_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateStmt) return target; } size_t CreateStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; total_size += 1UL * this->_internal_table_elts_size(); for (const auto& msg : this->table_elts_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; total_size += 1UL * this->_internal_inh_relations_size(); for (const auto& msg : this->inh_relations_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; total_size += 1UL * this->_internal_constraints_size(); for (const auto& msg : this->constraints_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 8 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string tablespacename = 10 [json_name = "tablespacename"]; if (this->tablespacename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_tablespacename()); } // string access_method = 11 [json_name = "accessMethod"]; if (this->access_method().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_access_method()); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; if (this->has_partbound()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *partbound_); } // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; if (this->has_partspec()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *partspec_); } // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; if (this->has_of_typename()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *of_typename_); } // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; if (this->oncommit() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_oncommit()); } // bool if_not_exists = 12 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateStmt) GOOGLE_DCHECK_NE(&from, this); const CreateStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateStmt) MergeFrom(*source); } } void CreateStmt::MergeFrom(const CreateStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; table_elts_.MergeFrom(from.table_elts_); inh_relations_.MergeFrom(from.inh_relations_); constraints_.MergeFrom(from.constraints_); options_.MergeFrom(from.options_); if (from.tablespacename().size() > 0) { _internal_set_tablespacename(from._internal_tablespacename()); } if (from.access_method().size() > 0) { _internal_set_access_method(from._internal_access_method()); } if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_partbound()) { _internal_mutable_partbound()->::pg_query::PartitionBoundSpec::MergeFrom(from._internal_partbound()); } if (from.has_partspec()) { _internal_mutable_partspec()->::pg_query::PartitionSpec::MergeFrom(from._internal_partspec()); } if (from.has_of_typename()) { _internal_mutable_of_typename()->::pg_query::TypeName::MergeFrom(from._internal_of_typename()); } if (from.oncommit() != 0) { _internal_set_oncommit(from._internal_oncommit()); } if (from.if_not_exists() != 0) { _internal_set_if_not_exists(from._internal_if_not_exists()); } } void CreateStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateStmt::CopyFrom(const CreateStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateStmt::IsInitialized() const { return true; } void CreateStmt::InternalSwap(CreateStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); table_elts_.InternalSwap(&other->table_elts_); inh_relations_.InternalSwap(&other->inh_relations_); constraints_.InternalSwap(&other->constraints_); options_.InternalSwap(&other->options_); tablespacename_.Swap(&other->tablespacename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); access_method_.Swap(&other->access_method_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateStmt, if_not_exists_) + sizeof(CreateStmt::if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DefineStmt::_Internal { public: }; DefineStmt::DefineStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), defnames_(arena), args_(arena), definition_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DefineStmt) } DefineStmt::DefineStmt(const DefineStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), defnames_(from.defnames_), args_(from.args_), definition_(from.definition_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&kind_, &from.kind_, static_cast(reinterpret_cast(&replace_) - reinterpret_cast(&kind_)) + sizeof(replace_)); // @@protoc_insertion_point(copy_constructor:pg_query.DefineStmt) } void DefineStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&kind_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&replace_) - reinterpret_cast(&kind_)) + sizeof(replace_)); } DefineStmt::~DefineStmt() { // @@protoc_insertion_point(destructor:pg_query.DefineStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DefineStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void DefineStmt::ArenaDtor(void* object) { DefineStmt* _this = reinterpret_cast< DefineStmt* >(object); (void)_this; } void DefineStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DefineStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DefineStmt& DefineStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DefineStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DefineStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; defnames_.Clear(); args_.Clear(); definition_.Clear(); ::memset(&kind_, 0, static_cast( reinterpret_cast(&replace_) - reinterpret_cast(&kind_)) + sizeof(replace_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DefineStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ObjectType kind = 1 [json_name = "kind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_kind(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // bool oldstyle = 2 [json_name = "oldstyle"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { oldstyle_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_defnames(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 4 [json_name = "args"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node definition = 5 [json_name = "definition"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_definition(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // bool if_not_exists = 6 [json_name = "if_not_exists"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool replace = 7 [json_name = "replace"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { replace_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DefineStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DefineStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ObjectType kind = 1 [json_name = "kind"]; if (this->kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // bool oldstyle = 2 [json_name = "oldstyle"]; if (this->oldstyle() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_oldstyle(), target); } // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; for (unsigned int i = 0, n = static_cast(this->_internal_defnames_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_defnames(i), target, stream); } // repeated .pg_query.Node args = 4 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_args(i), target, stream); } // repeated .pg_query.Node definition = 5 [json_name = "definition"]; for (unsigned int i = 0, n = static_cast(this->_internal_definition_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_definition(i), target, stream); } // bool if_not_exists = 6 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_if_not_exists(), target); } // bool replace = 7 [json_name = "replace"]; if (this->replace() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(7, this->_internal_replace(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DefineStmt) return target; } size_t DefineStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DefineStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; total_size += 1UL * this->_internal_defnames_size(); for (const auto& msg : this->defnames_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node args = 4 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node definition = 5 [json_name = "definition"]; total_size += 1UL * this->_internal_definition_size(); for (const auto& msg : this->definition_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.ObjectType kind = 1 [json_name = "kind"]; if (this->kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind()); } // bool oldstyle = 2 [json_name = "oldstyle"]; if (this->oldstyle() != 0) { total_size += 1 + 1; } // bool if_not_exists = 6 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { total_size += 1 + 1; } // bool replace = 7 [json_name = "replace"]; if (this->replace() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DefineStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DefineStmt) GOOGLE_DCHECK_NE(&from, this); const DefineStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DefineStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DefineStmt) MergeFrom(*source); } } void DefineStmt::MergeFrom(const DefineStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DefineStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; defnames_.MergeFrom(from.defnames_); args_.MergeFrom(from.args_); definition_.MergeFrom(from.definition_); if (from.kind() != 0) { _internal_set_kind(from._internal_kind()); } if (from.oldstyle() != 0) { _internal_set_oldstyle(from._internal_oldstyle()); } if (from.if_not_exists() != 0) { _internal_set_if_not_exists(from._internal_if_not_exists()); } if (from.replace() != 0) { _internal_set_replace(from._internal_replace()); } } void DefineStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DefineStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DefineStmt::CopyFrom(const DefineStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DefineStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DefineStmt::IsInitialized() const { return true; } void DefineStmt::InternalSwap(DefineStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); defnames_.InternalSwap(&other->defnames_); args_.InternalSwap(&other->args_); definition_.InternalSwap(&other->definition_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(DefineStmt, replace_) + sizeof(DefineStmt::replace_) - PROTOBUF_FIELD_OFFSET(DefineStmt, kind_)>( reinterpret_cast(&kind_), reinterpret_cast(&other->kind_)); } ::PROTOBUF_NAMESPACE_ID::Metadata DefineStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DropStmt::_Internal { public: }; DropStmt::DropStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), objects_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropStmt) } DropStmt::DropStmt(const DropStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), objects_(from.objects_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&remove_type_, &from.remove_type_, static_cast(reinterpret_cast(&concurrent_) - reinterpret_cast(&remove_type_)) + sizeof(concurrent_)); // @@protoc_insertion_point(copy_constructor:pg_query.DropStmt) } void DropStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&remove_type_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&concurrent_) - reinterpret_cast(&remove_type_)) + sizeof(concurrent_)); } DropStmt::~DropStmt() { // @@protoc_insertion_point(destructor:pg_query.DropStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DropStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void DropStmt::ArenaDtor(void* object) { DropStmt* _this = reinterpret_cast< DropStmt* >(object); (void)_this; } void DropStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DropStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DropStmt& DropStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DropStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; objects_.Clear(); ::memset(&remove_type_, 0, static_cast( reinterpret_cast(&concurrent_) - reinterpret_cast(&remove_type_)) + sizeof(concurrent_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DropStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node objects = 1 [json_name = "objects"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_objects(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_remove_type(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_behavior(static_cast<::pg_query::DropBehavior>(val)); } else goto handle_unusual; continue; // bool missing_ok = 4 [json_name = "missing_ok"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool concurrent = 5 [json_name = "concurrent"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { concurrent_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DropStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node objects = 1 [json_name = "objects"]; for (unsigned int i = 0, n = static_cast(this->_internal_objects_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_objects(i), target, stream); } // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; if (this->remove_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_remove_type(), target); } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->behavior() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_behavior(), target); } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_missing_ok(), target); } // bool concurrent = 5 [json_name = "concurrent"]; if (this->concurrent() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_concurrent(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DropStmt) return target; } size_t DropStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DropStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node objects = 1 [json_name = "objects"]; total_size += 1UL * this->_internal_objects_size(); for (const auto& msg : this->objects_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; if (this->remove_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_remove_type()); } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->behavior() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_behavior()); } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } // bool concurrent = 5 [json_name = "concurrent"]; if (this->concurrent() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DropStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DropStmt) GOOGLE_DCHECK_NE(&from, this); const DropStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DropStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DropStmt) MergeFrom(*source); } } void DropStmt::MergeFrom(const DropStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; objects_.MergeFrom(from.objects_); if (from.remove_type() != 0) { _internal_set_remove_type(from._internal_remove_type()); } if (from.behavior() != 0) { _internal_set_behavior(from._internal_behavior()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } if (from.concurrent() != 0) { _internal_set_concurrent(from._internal_concurrent()); } } void DropStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DropStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DropStmt::CopyFrom(const DropStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DropStmt::IsInitialized() const { return true; } void DropStmt::InternalSwap(DropStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); objects_.InternalSwap(&other->objects_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(DropStmt, concurrent_) + sizeof(DropStmt::concurrent_) - PROTOBUF_FIELD_OFFSET(DropStmt, remove_type_)>( reinterpret_cast(&remove_type_), reinterpret_cast(&other->remove_type_)); } ::PROTOBUF_NAMESPACE_ID::Metadata DropStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class TruncateStmt::_Internal { public: }; TruncateStmt::TruncateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), relations_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TruncateStmt) } TruncateStmt::TruncateStmt(const TruncateStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), relations_(from.relations_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&restart_seqs_, &from.restart_seqs_, static_cast(reinterpret_cast(&behavior_) - reinterpret_cast(&restart_seqs_)) + sizeof(behavior_)); // @@protoc_insertion_point(copy_constructor:pg_query.TruncateStmt) } void TruncateStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&restart_seqs_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&behavior_) - reinterpret_cast(&restart_seqs_)) + sizeof(behavior_)); } TruncateStmt::~TruncateStmt() { // @@protoc_insertion_point(destructor:pg_query.TruncateStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void TruncateStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void TruncateStmt::ArenaDtor(void* object) { TruncateStmt* _this = reinterpret_cast< TruncateStmt* >(object); (void)_this; } void TruncateStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void TruncateStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const TruncateStmt& TruncateStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void TruncateStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TruncateStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; relations_.Clear(); ::memset(&restart_seqs_, 0, static_cast( reinterpret_cast(&behavior_) - reinterpret_cast(&restart_seqs_)) + sizeof(behavior_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* TruncateStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node relations = 1 [json_name = "relations"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_relations(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // bool restart_seqs = 2 [json_name = "restart_seqs"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { restart_seqs_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_behavior(static_cast<::pg_query::DropBehavior>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* TruncateStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TruncateStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node relations = 1 [json_name = "relations"]; for (unsigned int i = 0, n = static_cast(this->_internal_relations_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_relations(i), target, stream); } // bool restart_seqs = 2 [json_name = "restart_seqs"]; if (this->restart_seqs() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_restart_seqs(), target); } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->behavior() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_behavior(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.TruncateStmt) return target; } size_t TruncateStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.TruncateStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node relations = 1 [json_name = "relations"]; total_size += 1UL * this->_internal_relations_size(); for (const auto& msg : this->relations_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // bool restart_seqs = 2 [json_name = "restart_seqs"]; if (this->restart_seqs() != 0) { total_size += 1 + 1; } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->behavior() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_behavior()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void TruncateStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.TruncateStmt) GOOGLE_DCHECK_NE(&from, this); const TruncateStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.TruncateStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.TruncateStmt) MergeFrom(*source); } } void TruncateStmt::MergeFrom(const TruncateStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TruncateStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; relations_.MergeFrom(from.relations_); if (from.restart_seqs() != 0) { _internal_set_restart_seqs(from._internal_restart_seqs()); } if (from.behavior() != 0) { _internal_set_behavior(from._internal_behavior()); } } void TruncateStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.TruncateStmt) if (&from == this) return; Clear(); MergeFrom(from); } void TruncateStmt::CopyFrom(const TruncateStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TruncateStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool TruncateStmt::IsInitialized() const { return true; } void TruncateStmt::InternalSwap(TruncateStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); relations_.InternalSwap(&other->relations_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(TruncateStmt, behavior_) + sizeof(TruncateStmt::behavior_) - PROTOBUF_FIELD_OFFSET(TruncateStmt, restart_seqs_)>( reinterpret_cast(&restart_seqs_), reinterpret_cast(&other->restart_seqs_)); } ::PROTOBUF_NAMESPACE_ID::Metadata TruncateStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CommentStmt::_Internal { public: static const ::pg_query::Node& object(const CommentStmt* msg); }; const ::pg_query::Node& CommentStmt::_Internal::object(const CommentStmt* msg) { return *msg->object_; } CommentStmt::CommentStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CommentStmt) } CommentStmt::CommentStmt(const CommentStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); comment_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_comment().empty()) { comment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_comment(), GetArena()); } if (from._internal_has_object()) { object_ = new ::pg_query::Node(*from.object_); } else { object_ = nullptr; } objtype_ = from.objtype_; // @@protoc_insertion_point(copy_constructor:pg_query.CommentStmt) } void CommentStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); comment_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&object_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&objtype_) - reinterpret_cast(&object_)) + sizeof(objtype_)); } CommentStmt::~CommentStmt() { // @@protoc_insertion_point(destructor:pg_query.CommentStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CommentStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); comment_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete object_; } void CommentStmt::ArenaDtor(void* object) { CommentStmt* _this = reinterpret_cast< CommentStmt* >(object); (void)_this; } void CommentStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CommentStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CommentStmt& CommentStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CommentStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CommentStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; comment_.ClearToEmpty(); if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; objtype_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CommentStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_objtype(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.Node object = 2 [json_name = "object"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_object(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string comment = 3 [json_name = "comment"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_comment(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CommentStmt.comment")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CommentStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CommentStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->objtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_objtype(), target); } // .pg_query.Node object = 2 [json_name = "object"]; if (this->has_object()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::object(this), target, stream); } // string comment = 3 [json_name = "comment"]; if (this->comment().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_comment().data(), static_cast(this->_internal_comment().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CommentStmt.comment"); target = stream->WriteStringMaybeAliased( 3, this->_internal_comment(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CommentStmt) return target; } size_t CommentStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CommentStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string comment = 3 [json_name = "comment"]; if (this->comment().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_comment()); } // .pg_query.Node object = 2 [json_name = "object"]; if (this->has_object()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *object_); } // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->objtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_objtype()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CommentStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CommentStmt) GOOGLE_DCHECK_NE(&from, this); const CommentStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CommentStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CommentStmt) MergeFrom(*source); } } void CommentStmt::MergeFrom(const CommentStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CommentStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.comment().size() > 0) { _internal_set_comment(from._internal_comment()); } if (from.has_object()) { _internal_mutable_object()->::pg_query::Node::MergeFrom(from._internal_object()); } if (from.objtype() != 0) { _internal_set_objtype(from._internal_objtype()); } } void CommentStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CommentStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CommentStmt::CopyFrom(const CommentStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CommentStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CommentStmt::IsInitialized() const { return true; } void CommentStmt::InternalSwap(CommentStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); comment_.Swap(&other->comment_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CommentStmt, objtype_) + sizeof(CommentStmt::objtype_) - PROTOBUF_FIELD_OFFSET(CommentStmt, object_)>( reinterpret_cast(&object_), reinterpret_cast(&other->object_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CommentStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class FetchStmt::_Internal { public: }; FetchStmt::FetchStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FetchStmt) } FetchStmt::FetchStmt(const FetchStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); portalname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_portalname().empty()) { portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_portalname(), GetArena()); } ::memcpy(&how_many_, &from.how_many_, static_cast(reinterpret_cast(&ismove_) - reinterpret_cast(&how_many_)) + sizeof(ismove_)); // @@protoc_insertion_point(copy_constructor:pg_query.FetchStmt) } void FetchStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_FetchStmt_protobuf_2fpg_5fquery_2eproto.base); portalname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&how_many_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&ismove_) - reinterpret_cast(&how_many_)) + sizeof(ismove_)); } FetchStmt::~FetchStmt() { // @@protoc_insertion_point(destructor:pg_query.FetchStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void FetchStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); portalname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void FetchStmt::ArenaDtor(void* object) { FetchStmt* _this = reinterpret_cast< FetchStmt* >(object); (void)_this; } void FetchStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void FetchStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const FetchStmt& FetchStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_FetchStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void FetchStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FetchStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; portalname_.ClearToEmpty(); ::memset(&how_many_, 0, static_cast( reinterpret_cast(&ismove_) - reinterpret_cast(&how_many_)) + sizeof(ismove_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* FetchStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_direction(static_cast<::pg_query::FetchDirection>(val)); } else goto handle_unusual; continue; // int64 how_many = 2 [json_name = "howMany"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { how_many_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string portalname = 3 [json_name = "portalname"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_portalname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.FetchStmt.portalname")); CHK_(ptr); } else goto handle_unusual; continue; // bool ismove = 4 [json_name = "ismove"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { ismove_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* FetchStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FetchStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; if (this->direction() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_direction(), target); } // int64 how_many = 2 [json_name = "howMany"]; if (this->how_many() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(2, this->_internal_how_many(), target); } // string portalname = 3 [json_name = "portalname"]; if (this->portalname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_portalname().data(), static_cast(this->_internal_portalname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.FetchStmt.portalname"); target = stream->WriteStringMaybeAliased( 3, this->_internal_portalname(), target); } // bool ismove = 4 [json_name = "ismove"]; if (this->ismove() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_ismove(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.FetchStmt) return target; } size_t FetchStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.FetchStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string portalname = 3 [json_name = "portalname"]; if (this->portalname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_portalname()); } // int64 how_many = 2 [json_name = "howMany"]; if (this->how_many() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size( this->_internal_how_many()); } // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; if (this->direction() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_direction()); } // bool ismove = 4 [json_name = "ismove"]; if (this->ismove() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void FetchStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.FetchStmt) GOOGLE_DCHECK_NE(&from, this); const FetchStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.FetchStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.FetchStmt) MergeFrom(*source); } } void FetchStmt::MergeFrom(const FetchStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FetchStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.portalname().size() > 0) { _internal_set_portalname(from._internal_portalname()); } if (from.how_many() != 0) { _internal_set_how_many(from._internal_how_many()); } if (from.direction() != 0) { _internal_set_direction(from._internal_direction()); } if (from.ismove() != 0) { _internal_set_ismove(from._internal_ismove()); } } void FetchStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.FetchStmt) if (&from == this) return; Clear(); MergeFrom(from); } void FetchStmt::CopyFrom(const FetchStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FetchStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool FetchStmt::IsInitialized() const { return true; } void FetchStmt::InternalSwap(FetchStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); portalname_.Swap(&other->portalname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(FetchStmt, ismove_) + sizeof(FetchStmt::ismove_) - PROTOBUF_FIELD_OFFSET(FetchStmt, how_many_)>( reinterpret_cast(&how_many_), reinterpret_cast(&other->how_many_)); } ::PROTOBUF_NAMESPACE_ID::Metadata FetchStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class IndexStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const IndexStmt* msg); static const ::pg_query::Node& where_clause(const IndexStmt* msg); }; const ::pg_query::RangeVar& IndexStmt::_Internal::relation(const IndexStmt* msg) { return *msg->relation_; } const ::pg_query::Node& IndexStmt::_Internal::where_clause(const IndexStmt* msg) { return *msg->where_clause_; } IndexStmt::IndexStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), index_params_(arena), index_including_params_(arena), options_(arena), exclude_op_names_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.IndexStmt) } IndexStmt::IndexStmt(const IndexStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), index_params_(from.index_params_), index_including_params_(from.index_including_params_), options_(from.options_), exclude_op_names_(from.exclude_op_names_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); idxname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_idxname().empty()) { idxname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_idxname(), GetArena()); } access_method_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_access_method().empty()) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_access_method(), GetArena()); } table_space_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_table_space().empty()) { table_space_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_table_space(), GetArena()); } idxcomment_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_idxcomment().empty()) { idxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_idxcomment(), GetArena()); } if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_where_clause()) { where_clause_ = new ::pg_query::Node(*from.where_clause_); } else { where_clause_ = nullptr; } ::memcpy(&index_oid_, &from.index_oid_, static_cast(reinterpret_cast(&reset_default_tblspc_) - reinterpret_cast(&index_oid_)) + sizeof(reset_default_tblspc_)); // @@protoc_insertion_point(copy_constructor:pg_query.IndexStmt) } void IndexStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); idxname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); access_method_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); table_space_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); idxcomment_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&reset_default_tblspc_) - reinterpret_cast(&relation_)) + sizeof(reset_default_tblspc_)); } IndexStmt::~IndexStmt() { // @@protoc_insertion_point(destructor:pg_query.IndexStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void IndexStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); idxname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); access_method_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); table_space_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); idxcomment_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete where_clause_; } void IndexStmt::ArenaDtor(void* object) { IndexStmt* _this = reinterpret_cast< IndexStmt* >(object); (void)_this; } void IndexStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void IndexStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const IndexStmt& IndexStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void IndexStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.IndexStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; index_params_.Clear(); index_including_params_.Clear(); options_.Clear(); exclude_op_names_.Clear(); idxname_.ClearToEmpty(); access_method_.ClearToEmpty(); table_space_.ClearToEmpty(); idxcomment_.ClearToEmpty(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; ::memset(&index_oid_, 0, static_cast( reinterpret_cast(&reset_default_tblspc_) - reinterpret_cast(&index_oid_)) + sizeof(reset_default_tblspc_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* IndexStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string idxname = 1 [json_name = "idxname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_idxname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.IndexStmt.idxname")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string access_method = 3 [json_name = "accessMethod"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_access_method(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.IndexStmt.access_method")); CHK_(ptr); } else goto handle_unusual; continue; // string table_space = 4 [json_name = "tableSpace"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { auto str = _internal_mutable_table_space(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.IndexStmt.table_space")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node index_params = 5 [json_name = "indexParams"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_index_params(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_index_including_params(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 7 [json_name = "options"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_where_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_exclude_op_names(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr)); } else goto handle_unusual; continue; // string idxcomment = 10 [json_name = "idxcomment"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { auto str = _internal_mutable_idxcomment(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.IndexStmt.idxcomment")); CHK_(ptr); } else goto handle_unusual; continue; // uint32 index_oid = 11 [json_name = "indexOid"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) { index_oid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 old_node = 12 [json_name = "oldNode"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 96)) { old_node_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 104)) { old_create_subid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 old_first_relfilenode_subid = 14 [json_name = "oldFirstRelfilenodeSubid"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 112)) { old_first_relfilenode_subid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool unique = 15 [json_name = "unique"]; case 15: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 120)) { unique_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool primary = 16 [json_name = "primary"]; case 16: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 128)) { primary_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool isconstraint = 17 [json_name = "isconstraint"]; case 17: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 136)) { isconstraint_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool deferrable = 18 [json_name = "deferrable"]; case 18: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 144)) { deferrable_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool initdeferred = 19 [json_name = "initdeferred"]; case 19: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 152)) { initdeferred_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool transformed = 20 [json_name = "transformed"]; case 20: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 160)) { transformed_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool concurrent = 21 [json_name = "concurrent"]; case 21: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 168)) { concurrent_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool if_not_exists = 22 [json_name = "if_not_exists"]; case 22: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 176)) { if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool reset_default_tblspc = 23 [json_name = "reset_default_tblspc"]; case 23: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 184)) { reset_default_tblspc_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* IndexStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.IndexStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string idxname = 1 [json_name = "idxname"]; if (this->idxname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_idxname().data(), static_cast(this->_internal_idxname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.IndexStmt.idxname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_idxname(), target); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::relation(this), target, stream); } // string access_method = 3 [json_name = "accessMethod"]; if (this->access_method().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_access_method().data(), static_cast(this->_internal_access_method().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.IndexStmt.access_method"); target = stream->WriteStringMaybeAliased( 3, this->_internal_access_method(), target); } // string table_space = 4 [json_name = "tableSpace"]; if (this->table_space().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_table_space().data(), static_cast(this->_internal_table_space().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.IndexStmt.table_space"); target = stream->WriteStringMaybeAliased( 4, this->_internal_table_space(), target); } // repeated .pg_query.Node index_params = 5 [json_name = "indexParams"]; for (unsigned int i = 0, n = static_cast(this->_internal_index_params_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_index_params(i), target, stream); } // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; for (unsigned int i = 0, n = static_cast(this->_internal_index_including_params_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_index_including_params(i), target, stream); } // repeated .pg_query.Node options = 7 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(7, this->_internal_options(i), target, stream); } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; if (this->has_where_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 8, _Internal::where_clause(this), target, stream); } // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; for (unsigned int i = 0, n = static_cast(this->_internal_exclude_op_names_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(9, this->_internal_exclude_op_names(i), target, stream); } // string idxcomment = 10 [json_name = "idxcomment"]; if (this->idxcomment().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_idxcomment().data(), static_cast(this->_internal_idxcomment().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.IndexStmt.idxcomment"); target = stream->WriteStringMaybeAliased( 10, this->_internal_idxcomment(), target); } // uint32 index_oid = 11 [json_name = "indexOid"]; if (this->index_oid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(11, this->_internal_index_oid(), target); } // uint32 old_node = 12 [json_name = "oldNode"]; if (this->old_node() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(12, this->_internal_old_node(), target); } // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; if (this->old_create_subid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(13, this->_internal_old_create_subid(), target); } // uint32 old_first_relfilenode_subid = 14 [json_name = "oldFirstRelfilenodeSubid"]; if (this->old_first_relfilenode_subid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(14, this->_internal_old_first_relfilenode_subid(), target); } // bool unique = 15 [json_name = "unique"]; if (this->unique() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(15, this->_internal_unique(), target); } // bool primary = 16 [json_name = "primary"]; if (this->primary() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(16, this->_internal_primary(), target); } // bool isconstraint = 17 [json_name = "isconstraint"]; if (this->isconstraint() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(17, this->_internal_isconstraint(), target); } // bool deferrable = 18 [json_name = "deferrable"]; if (this->deferrable() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(18, this->_internal_deferrable(), target); } // bool initdeferred = 19 [json_name = "initdeferred"]; if (this->initdeferred() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(19, this->_internal_initdeferred(), target); } // bool transformed = 20 [json_name = "transformed"]; if (this->transformed() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(20, this->_internal_transformed(), target); } // bool concurrent = 21 [json_name = "concurrent"]; if (this->concurrent() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(21, this->_internal_concurrent(), target); } // bool if_not_exists = 22 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(22, this->_internal_if_not_exists(), target); } // bool reset_default_tblspc = 23 [json_name = "reset_default_tblspc"]; if (this->reset_default_tblspc() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(23, this->_internal_reset_default_tblspc(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.IndexStmt) return target; } size_t IndexStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.IndexStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node index_params = 5 [json_name = "indexParams"]; total_size += 1UL * this->_internal_index_params_size(); for (const auto& msg : this->index_params_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; total_size += 1UL * this->_internal_index_including_params_size(); for (const auto& msg : this->index_including_params_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 7 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; total_size += 1UL * this->_internal_exclude_op_names_size(); for (const auto& msg : this->exclude_op_names_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string idxname = 1 [json_name = "idxname"]; if (this->idxname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_idxname()); } // string access_method = 3 [json_name = "accessMethod"]; if (this->access_method().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_access_method()); } // string table_space = 4 [json_name = "tableSpace"]; if (this->table_space().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_table_space()); } // string idxcomment = 10 [json_name = "idxcomment"]; if (this->idxcomment().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_idxcomment()); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; if (this->has_where_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *where_clause_); } // uint32 index_oid = 11 [json_name = "indexOid"]; if (this->index_oid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_index_oid()); } // uint32 old_node = 12 [json_name = "oldNode"]; if (this->old_node() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_old_node()); } // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; if (this->old_create_subid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_old_create_subid()); } // uint32 old_first_relfilenode_subid = 14 [json_name = "oldFirstRelfilenodeSubid"]; if (this->old_first_relfilenode_subid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_old_first_relfilenode_subid()); } // bool unique = 15 [json_name = "unique"]; if (this->unique() != 0) { total_size += 1 + 1; } // bool primary = 16 [json_name = "primary"]; if (this->primary() != 0) { total_size += 2 + 1; } // bool isconstraint = 17 [json_name = "isconstraint"]; if (this->isconstraint() != 0) { total_size += 2 + 1; } // bool deferrable = 18 [json_name = "deferrable"]; if (this->deferrable() != 0) { total_size += 2 + 1; } // bool initdeferred = 19 [json_name = "initdeferred"]; if (this->initdeferred() != 0) { total_size += 2 + 1; } // bool transformed = 20 [json_name = "transformed"]; if (this->transformed() != 0) { total_size += 2 + 1; } // bool concurrent = 21 [json_name = "concurrent"]; if (this->concurrent() != 0) { total_size += 2 + 1; } // bool if_not_exists = 22 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { total_size += 2 + 1; } // bool reset_default_tblspc = 23 [json_name = "reset_default_tblspc"]; if (this->reset_default_tblspc() != 0) { total_size += 2 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void IndexStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.IndexStmt) GOOGLE_DCHECK_NE(&from, this); const IndexStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.IndexStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.IndexStmt) MergeFrom(*source); } } void IndexStmt::MergeFrom(const IndexStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.IndexStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; index_params_.MergeFrom(from.index_params_); index_including_params_.MergeFrom(from.index_including_params_); options_.MergeFrom(from.options_); exclude_op_names_.MergeFrom(from.exclude_op_names_); if (from.idxname().size() > 0) { _internal_set_idxname(from._internal_idxname()); } if (from.access_method().size() > 0) { _internal_set_access_method(from._internal_access_method()); } if (from.table_space().size() > 0) { _internal_set_table_space(from._internal_table_space()); } if (from.idxcomment().size() > 0) { _internal_set_idxcomment(from._internal_idxcomment()); } if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_where_clause()) { _internal_mutable_where_clause()->::pg_query::Node::MergeFrom(from._internal_where_clause()); } if (from.index_oid() != 0) { _internal_set_index_oid(from._internal_index_oid()); } if (from.old_node() != 0) { _internal_set_old_node(from._internal_old_node()); } if (from.old_create_subid() != 0) { _internal_set_old_create_subid(from._internal_old_create_subid()); } if (from.old_first_relfilenode_subid() != 0) { _internal_set_old_first_relfilenode_subid(from._internal_old_first_relfilenode_subid()); } if (from.unique() != 0) { _internal_set_unique(from._internal_unique()); } if (from.primary() != 0) { _internal_set_primary(from._internal_primary()); } if (from.isconstraint() != 0) { _internal_set_isconstraint(from._internal_isconstraint()); } if (from.deferrable() != 0) { _internal_set_deferrable(from._internal_deferrable()); } if (from.initdeferred() != 0) { _internal_set_initdeferred(from._internal_initdeferred()); } if (from.transformed() != 0) { _internal_set_transformed(from._internal_transformed()); } if (from.concurrent() != 0) { _internal_set_concurrent(from._internal_concurrent()); } if (from.if_not_exists() != 0) { _internal_set_if_not_exists(from._internal_if_not_exists()); } if (from.reset_default_tblspc() != 0) { _internal_set_reset_default_tblspc(from._internal_reset_default_tblspc()); } } void IndexStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.IndexStmt) if (&from == this) return; Clear(); MergeFrom(from); } void IndexStmt::CopyFrom(const IndexStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.IndexStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool IndexStmt::IsInitialized() const { return true; } void IndexStmt::InternalSwap(IndexStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); index_params_.InternalSwap(&other->index_params_); index_including_params_.InternalSwap(&other->index_including_params_); options_.InternalSwap(&other->options_); exclude_op_names_.InternalSwap(&other->exclude_op_names_); idxname_.Swap(&other->idxname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); access_method_.Swap(&other->access_method_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); table_space_.Swap(&other->table_space_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); idxcomment_.Swap(&other->idxcomment_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(IndexStmt, reset_default_tblspc_) + sizeof(IndexStmt::reset_default_tblspc_) - PROTOBUF_FIELD_OFFSET(IndexStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata IndexStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateFunctionStmt::_Internal { public: static const ::pg_query::TypeName& return_type(const CreateFunctionStmt* msg); }; const ::pg_query::TypeName& CreateFunctionStmt::_Internal::return_type(const CreateFunctionStmt* msg) { return *msg->return_type_; } CreateFunctionStmt::CreateFunctionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), funcname_(arena), parameters_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateFunctionStmt) } CreateFunctionStmt::CreateFunctionStmt(const CreateFunctionStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), funcname_(from.funcname_), parameters_(from.parameters_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_return_type()) { return_type_ = new ::pg_query::TypeName(*from.return_type_); } else { return_type_ = nullptr; } ::memcpy(&is_procedure_, &from.is_procedure_, static_cast(reinterpret_cast(&replace_) - reinterpret_cast(&is_procedure_)) + sizeof(replace_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateFunctionStmt) } void CreateFunctionStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&return_type_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&replace_) - reinterpret_cast(&return_type_)) + sizeof(replace_)); } CreateFunctionStmt::~CreateFunctionStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateFunctionStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateFunctionStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete return_type_; } void CreateFunctionStmt::ArenaDtor(void* object) { CreateFunctionStmt* _this = reinterpret_cast< CreateFunctionStmt* >(object); (void)_this; } void CreateFunctionStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateFunctionStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateFunctionStmt& CreateFunctionStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateFunctionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateFunctionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; funcname_.Clear(); parameters_.Clear(); options_.Clear(); if (GetArena() == nullptr && return_type_ != nullptr) { delete return_type_; } return_type_ = nullptr; ::memset(&is_procedure_, 0, static_cast( reinterpret_cast(&replace_) - reinterpret_cast(&is_procedure_)) + sizeof(replace_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateFunctionStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // bool is_procedure = 1 [json_name = "is_procedure"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { is_procedure_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool replace = 2 [json_name = "replace"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { replace_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_funcname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_parameters(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_return_type(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 6 [json_name = "options"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateFunctionStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateFunctionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // bool is_procedure = 1 [json_name = "is_procedure"]; if (this->is_procedure() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_is_procedure(), target); } // bool replace = 2 [json_name = "replace"]; if (this->replace() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_replace(), target); } // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; for (unsigned int i = 0, n = static_cast(this->_internal_funcname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_funcname(i), target, stream); } // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; for (unsigned int i = 0, n = static_cast(this->_internal_parameters_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_parameters(i), target, stream); } // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; if (this->has_return_type()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::return_type(this), target, stream); } // repeated .pg_query.Node options = 6 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateFunctionStmt) return target; } size_t CreateFunctionStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateFunctionStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; total_size += 1UL * this->_internal_funcname_size(); for (const auto& msg : this->funcname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; total_size += 1UL * this->_internal_parameters_size(); for (const auto& msg : this->parameters_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 6 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; if (this->has_return_type()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *return_type_); } // bool is_procedure = 1 [json_name = "is_procedure"]; if (this->is_procedure() != 0) { total_size += 1 + 1; } // bool replace = 2 [json_name = "replace"]; if (this->replace() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateFunctionStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateFunctionStmt) GOOGLE_DCHECK_NE(&from, this); const CreateFunctionStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateFunctionStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateFunctionStmt) MergeFrom(*source); } } void CreateFunctionStmt::MergeFrom(const CreateFunctionStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateFunctionStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; funcname_.MergeFrom(from.funcname_); parameters_.MergeFrom(from.parameters_); options_.MergeFrom(from.options_); if (from.has_return_type()) { _internal_mutable_return_type()->::pg_query::TypeName::MergeFrom(from._internal_return_type()); } if (from.is_procedure() != 0) { _internal_set_is_procedure(from._internal_is_procedure()); } if (from.replace() != 0) { _internal_set_replace(from._internal_replace()); } } void CreateFunctionStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateFunctionStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateFunctionStmt::CopyFrom(const CreateFunctionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateFunctionStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateFunctionStmt::IsInitialized() const { return true; } void CreateFunctionStmt::InternalSwap(CreateFunctionStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); funcname_.InternalSwap(&other->funcname_); parameters_.InternalSwap(&other->parameters_); options_.InternalSwap(&other->options_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, replace_) + sizeof(CreateFunctionStmt::replace_) - PROTOBUF_FIELD_OFFSET(CreateFunctionStmt, return_type_)>( reinterpret_cast(&return_type_), reinterpret_cast(&other->return_type_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateFunctionStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterFunctionStmt::_Internal { public: static const ::pg_query::ObjectWithArgs& func(const AlterFunctionStmt* msg); }; const ::pg_query::ObjectWithArgs& AlterFunctionStmt::_Internal::func(const AlterFunctionStmt* msg) { return *msg->func_; } AlterFunctionStmt::AlterFunctionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), actions_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterFunctionStmt) } AlterFunctionStmt::AlterFunctionStmt(const AlterFunctionStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), actions_(from.actions_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_func()) { func_ = new ::pg_query::ObjectWithArgs(*from.func_); } else { func_ = nullptr; } objtype_ = from.objtype_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterFunctionStmt) } void AlterFunctionStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&func_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&objtype_) - reinterpret_cast(&func_)) + sizeof(objtype_)); } AlterFunctionStmt::~AlterFunctionStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterFunctionStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterFunctionStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete func_; } void AlterFunctionStmt::ArenaDtor(void* object) { AlterFunctionStmt* _this = reinterpret_cast< AlterFunctionStmt* >(object); (void)_this; } void AlterFunctionStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterFunctionStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterFunctionStmt& AlterFunctionStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterFunctionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterFunctionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; actions_.Clear(); if (GetArena() == nullptr && func_ != nullptr) { delete func_; } func_ = nullptr; objtype_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterFunctionStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_objtype(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_func(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node actions = 3 [json_name = "actions"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_actions(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterFunctionStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterFunctionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->objtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_objtype(), target); } // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; if (this->has_func()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::func(this), target, stream); } // repeated .pg_query.Node actions = 3 [json_name = "actions"]; for (unsigned int i = 0, n = static_cast(this->_internal_actions_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_actions(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterFunctionStmt) return target; } size_t AlterFunctionStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterFunctionStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node actions = 3 [json_name = "actions"]; total_size += 1UL * this->_internal_actions_size(); for (const auto& msg : this->actions_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; if (this->has_func()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *func_); } // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->objtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_objtype()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterFunctionStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterFunctionStmt) GOOGLE_DCHECK_NE(&from, this); const AlterFunctionStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterFunctionStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterFunctionStmt) MergeFrom(*source); } } void AlterFunctionStmt::MergeFrom(const AlterFunctionStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterFunctionStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; actions_.MergeFrom(from.actions_); if (from.has_func()) { _internal_mutable_func()->::pg_query::ObjectWithArgs::MergeFrom(from._internal_func()); } if (from.objtype() != 0) { _internal_set_objtype(from._internal_objtype()); } } void AlterFunctionStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterFunctionStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterFunctionStmt::CopyFrom(const AlterFunctionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterFunctionStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterFunctionStmt::IsInitialized() const { return true; } void AlterFunctionStmt::InternalSwap(AlterFunctionStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); actions_.InternalSwap(&other->actions_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, objtype_) + sizeof(AlterFunctionStmt::objtype_) - PROTOBUF_FIELD_OFFSET(AlterFunctionStmt, func_)>( reinterpret_cast(&func_), reinterpret_cast(&other->func_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterFunctionStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DoStmt::_Internal { public: }; DoStmt::DoStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DoStmt) } DoStmt::DoStmt(const DoStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.DoStmt) } void DoStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); } DoStmt::~DoStmt() { // @@protoc_insertion_point(destructor:pg_query.DoStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DoStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void DoStmt::ArenaDtor(void* object) { DoStmt* _this = reinterpret_cast< DoStmt* >(object); (void)_this; } void DoStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DoStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DoStmt& DoStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DoStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DoStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DoStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node args = 1 [json_name = "args"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DoStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DoStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node args = 1 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_args(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DoStmt) return target; } size_t DoStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DoStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 1 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DoStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DoStmt) GOOGLE_DCHECK_NE(&from, this); const DoStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DoStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DoStmt) MergeFrom(*source); } } void DoStmt::MergeFrom(const DoStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DoStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); } void DoStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DoStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DoStmt::CopyFrom(const DoStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DoStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DoStmt::IsInitialized() const { return true; } void DoStmt::InternalSwap(DoStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); } ::PROTOBUF_NAMESPACE_ID::Metadata DoStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RenameStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const RenameStmt* msg); static const ::pg_query::Node& object(const RenameStmt* msg); }; const ::pg_query::RangeVar& RenameStmt::_Internal::relation(const RenameStmt* msg) { return *msg->relation_; } const ::pg_query::Node& RenameStmt::_Internal::object(const RenameStmt* msg) { return *msg->object_; } RenameStmt::RenameStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RenameStmt) } RenameStmt::RenameStmt(const RenameStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); subname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_subname().empty()) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_subname(), GetArena()); } newname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_newname().empty()) { newname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_newname(), GetArena()); } if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_object()) { object_ = new ::pg_query::Node(*from.object_); } else { object_ = nullptr; } ::memcpy(&rename_type_, &from.rename_type_, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&rename_type_)) + sizeof(missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.RenameStmt) } void RenameStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); subname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); newname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&relation_)) + sizeof(missing_ok_)); } RenameStmt::~RenameStmt() { // @@protoc_insertion_point(destructor:pg_query.RenameStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RenameStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); subname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); newname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete object_; } void RenameStmt::ArenaDtor(void* object) { RenameStmt* _this = reinterpret_cast< RenameStmt* >(object); (void)_this; } void RenameStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RenameStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const RenameStmt& RenameStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RenameStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RenameStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; subname_.ClearToEmpty(); newname_.ClearToEmpty(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; ::memset(&rename_type_, 0, static_cast( reinterpret_cast(&missing_ok_) - reinterpret_cast(&rename_type_)) + sizeof(missing_ok_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RenameStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_rename_type(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_relation_type(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.RangeVar relation = 3 [json_name = "relation"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node object = 4 [json_name = "object"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_object(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string subname = 5 [json_name = "subname"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { auto str = _internal_mutable_subname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RenameStmt.subname")); CHK_(ptr); } else goto handle_unusual; continue; // string newname = 6 [json_name = "newname"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { auto str = _internal_mutable_newname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RenameStmt.newname")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_behavior(static_cast<::pg_query::DropBehavior>(val)); } else goto handle_unusual; continue; // bool missing_ok = 8 [json_name = "missing_ok"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RenameStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RenameStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; if (this->rename_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_rename_type(), target); } // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; if (this->relation_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_relation_type(), target); } // .pg_query.RangeVar relation = 3 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::relation(this), target, stream); } // .pg_query.Node object = 4 [json_name = "object"]; if (this->has_object()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::object(this), target, stream); } // string subname = 5 [json_name = "subname"]; if (this->subname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_subname().data(), static_cast(this->_internal_subname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RenameStmt.subname"); target = stream->WriteStringMaybeAliased( 5, this->_internal_subname(), target); } // string newname = 6 [json_name = "newname"]; if (this->newname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_newname().data(), static_cast(this->_internal_newname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RenameStmt.newname"); target = stream->WriteStringMaybeAliased( 6, this->_internal_newname(), target); } // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; if (this->behavior() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 7, this->_internal_behavior(), target); } // bool missing_ok = 8 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(8, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RenameStmt) return target; } size_t RenameStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RenameStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string subname = 5 [json_name = "subname"]; if (this->subname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_subname()); } // string newname = 6 [json_name = "newname"]; if (this->newname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_newname()); } // .pg_query.RangeVar relation = 3 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node object = 4 [json_name = "object"]; if (this->has_object()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *object_); } // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; if (this->rename_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_rename_type()); } // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; if (this->relation_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_relation_type()); } // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; if (this->behavior() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_behavior()); } // bool missing_ok = 8 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RenameStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RenameStmt) GOOGLE_DCHECK_NE(&from, this); const RenameStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RenameStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RenameStmt) MergeFrom(*source); } } void RenameStmt::MergeFrom(const RenameStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RenameStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.subname().size() > 0) { _internal_set_subname(from._internal_subname()); } if (from.newname().size() > 0) { _internal_set_newname(from._internal_newname()); } if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_object()) { _internal_mutable_object()->::pg_query::Node::MergeFrom(from._internal_object()); } if (from.rename_type() != 0) { _internal_set_rename_type(from._internal_rename_type()); } if (from.relation_type() != 0) { _internal_set_relation_type(from._internal_relation_type()); } if (from.behavior() != 0) { _internal_set_behavior(from._internal_behavior()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void RenameStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RenameStmt) if (&from == this) return; Clear(); MergeFrom(from); } void RenameStmt::CopyFrom(const RenameStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RenameStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool RenameStmt::IsInitialized() const { return true; } void RenameStmt::InternalSwap(RenameStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); subname_.Swap(&other->subname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); newname_.Swap(&other->newname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RenameStmt, missing_ok_) + sizeof(RenameStmt::missing_ok_) - PROTOBUF_FIELD_OFFSET(RenameStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RenameStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RuleStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const RuleStmt* msg); static const ::pg_query::Node& where_clause(const RuleStmt* msg); }; const ::pg_query::RangeVar& RuleStmt::_Internal::relation(const RuleStmt* msg) { return *msg->relation_; } const ::pg_query::Node& RuleStmt::_Internal::where_clause(const RuleStmt* msg) { return *msg->where_clause_; } RuleStmt::RuleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), actions_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RuleStmt) } RuleStmt::RuleStmt(const RuleStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), actions_(from.actions_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); rulename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_rulename().empty()) { rulename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_rulename(), GetArena()); } if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_where_clause()) { where_clause_ = new ::pg_query::Node(*from.where_clause_); } else { where_clause_ = nullptr; } ::memcpy(&event_, &from.event_, static_cast(reinterpret_cast(&replace_) - reinterpret_cast(&event_)) + sizeof(replace_)); // @@protoc_insertion_point(copy_constructor:pg_query.RuleStmt) } void RuleStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); rulename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&replace_) - reinterpret_cast(&relation_)) + sizeof(replace_)); } RuleStmt::~RuleStmt() { // @@protoc_insertion_point(destructor:pg_query.RuleStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RuleStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); rulename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete where_clause_; } void RuleStmt::ArenaDtor(void* object) { RuleStmt* _this = reinterpret_cast< RuleStmt* >(object); (void)_this; } void RuleStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RuleStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const RuleStmt& RuleStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RuleStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RuleStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; actions_.Clear(); rulename_.ClearToEmpty(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; ::memset(&event_, 0, static_cast( reinterpret_cast(&replace_) - reinterpret_cast(&event_)) + sizeof(replace_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RuleStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string rulename = 2 [json_name = "rulename"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_rulename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RuleStmt.rulename")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_where_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CmdType event = 4 [json_name = "event"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_event(static_cast<::pg_query::CmdType>(val)); } else goto handle_unusual; continue; // bool instead = 5 [json_name = "instead"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { instead_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node actions = 6 [json_name = "actions"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_actions(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // bool replace = 7 [json_name = "replace"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { replace_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RuleStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RuleStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // string rulename = 2 [json_name = "rulename"]; if (this->rulename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_rulename().data(), static_cast(this->_internal_rulename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RuleStmt.rulename"); target = stream->WriteStringMaybeAliased( 2, this->_internal_rulename(), target); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (this->has_where_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::where_clause(this), target, stream); } // .pg_query.CmdType event = 4 [json_name = "event"]; if (this->event() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 4, this->_internal_event(), target); } // bool instead = 5 [json_name = "instead"]; if (this->instead() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_instead(), target); } // repeated .pg_query.Node actions = 6 [json_name = "actions"]; for (unsigned int i = 0, n = static_cast(this->_internal_actions_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_actions(i), target, stream); } // bool replace = 7 [json_name = "replace"]; if (this->replace() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(7, this->_internal_replace(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RuleStmt) return target; } size_t RuleStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RuleStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node actions = 6 [json_name = "actions"]; total_size += 1UL * this->_internal_actions_size(); for (const auto& msg : this->actions_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string rulename = 2 [json_name = "rulename"]; if (this->rulename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_rulename()); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; if (this->has_where_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *where_clause_); } // .pg_query.CmdType event = 4 [json_name = "event"]; if (this->event() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_event()); } // bool instead = 5 [json_name = "instead"]; if (this->instead() != 0) { total_size += 1 + 1; } // bool replace = 7 [json_name = "replace"]; if (this->replace() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RuleStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RuleStmt) GOOGLE_DCHECK_NE(&from, this); const RuleStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RuleStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RuleStmt) MergeFrom(*source); } } void RuleStmt::MergeFrom(const RuleStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RuleStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; actions_.MergeFrom(from.actions_); if (from.rulename().size() > 0) { _internal_set_rulename(from._internal_rulename()); } if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_where_clause()) { _internal_mutable_where_clause()->::pg_query::Node::MergeFrom(from._internal_where_clause()); } if (from.event() != 0) { _internal_set_event(from._internal_event()); } if (from.instead() != 0) { _internal_set_instead(from._internal_instead()); } if (from.replace() != 0) { _internal_set_replace(from._internal_replace()); } } void RuleStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RuleStmt) if (&from == this) return; Clear(); MergeFrom(from); } void RuleStmt::CopyFrom(const RuleStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RuleStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool RuleStmt::IsInitialized() const { return true; } void RuleStmt::InternalSwap(RuleStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); actions_.InternalSwap(&other->actions_); rulename_.Swap(&other->rulename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RuleStmt, replace_) + sizeof(RuleStmt::replace_) - PROTOBUF_FIELD_OFFSET(RuleStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RuleStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class NotifyStmt::_Internal { public: }; NotifyStmt::NotifyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.NotifyStmt) } NotifyStmt::NotifyStmt(const NotifyStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); conditionname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_conditionname().empty()) { conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_conditionname(), GetArena()); } payload_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_payload().empty()) { payload_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_payload(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.NotifyStmt) } void NotifyStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_NotifyStmt_protobuf_2fpg_5fquery_2eproto.base); conditionname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); payload_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } NotifyStmt::~NotifyStmt() { // @@protoc_insertion_point(destructor:pg_query.NotifyStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void NotifyStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); conditionname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); payload_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void NotifyStmt::ArenaDtor(void* object) { NotifyStmt* _this = reinterpret_cast< NotifyStmt* >(object); (void)_this; } void NotifyStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void NotifyStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const NotifyStmt& NotifyStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_NotifyStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void NotifyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.NotifyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; conditionname_.ClearToEmpty(); payload_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* NotifyStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string conditionname = 1 [json_name = "conditionname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_conditionname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.NotifyStmt.conditionname")); CHK_(ptr); } else goto handle_unusual; continue; // string payload = 2 [json_name = "payload"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_payload(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.NotifyStmt.payload")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* NotifyStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.NotifyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string conditionname = 1 [json_name = "conditionname"]; if (this->conditionname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_conditionname().data(), static_cast(this->_internal_conditionname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.NotifyStmt.conditionname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_conditionname(), target); } // string payload = 2 [json_name = "payload"]; if (this->payload().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_payload().data(), static_cast(this->_internal_payload().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.NotifyStmt.payload"); target = stream->WriteStringMaybeAliased( 2, this->_internal_payload(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.NotifyStmt) return target; } size_t NotifyStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.NotifyStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string conditionname = 1 [json_name = "conditionname"]; if (this->conditionname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_conditionname()); } // string payload = 2 [json_name = "payload"]; if (this->payload().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_payload()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void NotifyStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.NotifyStmt) GOOGLE_DCHECK_NE(&from, this); const NotifyStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.NotifyStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.NotifyStmt) MergeFrom(*source); } } void NotifyStmt::MergeFrom(const NotifyStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.NotifyStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.conditionname().size() > 0) { _internal_set_conditionname(from._internal_conditionname()); } if (from.payload().size() > 0) { _internal_set_payload(from._internal_payload()); } } void NotifyStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.NotifyStmt) if (&from == this) return; Clear(); MergeFrom(from); } void NotifyStmt::CopyFrom(const NotifyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.NotifyStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool NotifyStmt::IsInitialized() const { return true; } void NotifyStmt::InternalSwap(NotifyStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); conditionname_.Swap(&other->conditionname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); payload_.Swap(&other->payload_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata NotifyStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ListenStmt::_Internal { public: }; ListenStmt::ListenStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ListenStmt) } ListenStmt::ListenStmt(const ListenStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); conditionname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_conditionname().empty()) { conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_conditionname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.ListenStmt) } void ListenStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ListenStmt_protobuf_2fpg_5fquery_2eproto.base); conditionname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } ListenStmt::~ListenStmt() { // @@protoc_insertion_point(destructor:pg_query.ListenStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ListenStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); conditionname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void ListenStmt::ArenaDtor(void* object) { ListenStmt* _this = reinterpret_cast< ListenStmt* >(object); (void)_this; } void ListenStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ListenStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ListenStmt& ListenStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ListenStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ListenStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ListenStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; conditionname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ListenStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string conditionname = 1 [json_name = "conditionname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_conditionname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ListenStmt.conditionname")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ListenStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ListenStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string conditionname = 1 [json_name = "conditionname"]; if (this->conditionname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_conditionname().data(), static_cast(this->_internal_conditionname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ListenStmt.conditionname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_conditionname(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ListenStmt) return target; } size_t ListenStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ListenStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string conditionname = 1 [json_name = "conditionname"]; if (this->conditionname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_conditionname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ListenStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ListenStmt) GOOGLE_DCHECK_NE(&from, this); const ListenStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ListenStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ListenStmt) MergeFrom(*source); } } void ListenStmt::MergeFrom(const ListenStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ListenStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.conditionname().size() > 0) { _internal_set_conditionname(from._internal_conditionname()); } } void ListenStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ListenStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ListenStmt::CopyFrom(const ListenStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ListenStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ListenStmt::IsInitialized() const { return true; } void ListenStmt::InternalSwap(ListenStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); conditionname_.Swap(&other->conditionname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata ListenStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class UnlistenStmt::_Internal { public: }; UnlistenStmt::UnlistenStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.UnlistenStmt) } UnlistenStmt::UnlistenStmt(const UnlistenStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); conditionname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_conditionname().empty()) { conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_conditionname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.UnlistenStmt) } void UnlistenStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_UnlistenStmt_protobuf_2fpg_5fquery_2eproto.base); conditionname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } UnlistenStmt::~UnlistenStmt() { // @@protoc_insertion_point(destructor:pg_query.UnlistenStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void UnlistenStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); conditionname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void UnlistenStmt::ArenaDtor(void* object) { UnlistenStmt* _this = reinterpret_cast< UnlistenStmt* >(object); (void)_this; } void UnlistenStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void UnlistenStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const UnlistenStmt& UnlistenStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_UnlistenStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void UnlistenStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.UnlistenStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; conditionname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* UnlistenStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string conditionname = 1 [json_name = "conditionname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_conditionname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.UnlistenStmt.conditionname")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* UnlistenStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.UnlistenStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string conditionname = 1 [json_name = "conditionname"]; if (this->conditionname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_conditionname().data(), static_cast(this->_internal_conditionname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.UnlistenStmt.conditionname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_conditionname(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.UnlistenStmt) return target; } size_t UnlistenStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.UnlistenStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string conditionname = 1 [json_name = "conditionname"]; if (this->conditionname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_conditionname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void UnlistenStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.UnlistenStmt) GOOGLE_DCHECK_NE(&from, this); const UnlistenStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.UnlistenStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.UnlistenStmt) MergeFrom(*source); } } void UnlistenStmt::MergeFrom(const UnlistenStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.UnlistenStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.conditionname().size() > 0) { _internal_set_conditionname(from._internal_conditionname()); } } void UnlistenStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.UnlistenStmt) if (&from == this) return; Clear(); MergeFrom(from); } void UnlistenStmt::CopyFrom(const UnlistenStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.UnlistenStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool UnlistenStmt::IsInitialized() const { return true; } void UnlistenStmt::InternalSwap(UnlistenStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); conditionname_.Swap(&other->conditionname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata UnlistenStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class TransactionStmt::_Internal { public: }; TransactionStmt::TransactionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TransactionStmt) } TransactionStmt::TransactionStmt(const TransactionStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); savepoint_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_savepoint_name().empty()) { savepoint_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_savepoint_name(), GetArena()); } gid_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_gid().empty()) { gid_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_gid(), GetArena()); } ::memcpy(&kind_, &from.kind_, static_cast(reinterpret_cast(&chain_) - reinterpret_cast(&kind_)) + sizeof(chain_)); // @@protoc_insertion_point(copy_constructor:pg_query.TransactionStmt) } void TransactionStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); savepoint_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); gid_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&kind_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&chain_) - reinterpret_cast(&kind_)) + sizeof(chain_)); } TransactionStmt::~TransactionStmt() { // @@protoc_insertion_point(destructor:pg_query.TransactionStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void TransactionStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); savepoint_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); gid_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void TransactionStmt::ArenaDtor(void* object) { TransactionStmt* _this = reinterpret_cast< TransactionStmt* >(object); (void)_this; } void TransactionStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void TransactionStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const TransactionStmt& TransactionStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void TransactionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TransactionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); savepoint_name_.ClearToEmpty(); gid_.ClearToEmpty(); ::memset(&kind_, 0, static_cast( reinterpret_cast(&chain_) - reinterpret_cast(&kind_)) + sizeof(chain_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* TransactionStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_kind(static_cast<::pg_query::TransactionStmtKind>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // string savepoint_name = 3 [json_name = "savepoint_name"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_savepoint_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.TransactionStmt.savepoint_name")); CHK_(ptr); } else goto handle_unusual; continue; // string gid = 4 [json_name = "gid"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { auto str = _internal_mutable_gid(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.TransactionStmt.gid")); CHK_(ptr); } else goto handle_unusual; continue; // bool chain = 5 [json_name = "chain"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { chain_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* TransactionStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TransactionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } // string savepoint_name = 3 [json_name = "savepoint_name"]; if (this->savepoint_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_savepoint_name().data(), static_cast(this->_internal_savepoint_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.TransactionStmt.savepoint_name"); target = stream->WriteStringMaybeAliased( 3, this->_internal_savepoint_name(), target); } // string gid = 4 [json_name = "gid"]; if (this->gid().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_gid().data(), static_cast(this->_internal_gid().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.TransactionStmt.gid"); target = stream->WriteStringMaybeAliased( 4, this->_internal_gid(), target); } // bool chain = 5 [json_name = "chain"]; if (this->chain() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_chain(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.TransactionStmt) return target; } size_t TransactionStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.TransactionStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string savepoint_name = 3 [json_name = "savepoint_name"]; if (this->savepoint_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_savepoint_name()); } // string gid = 4 [json_name = "gid"]; if (this->gid().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_gid()); } // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind()); } // bool chain = 5 [json_name = "chain"]; if (this->chain() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void TransactionStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.TransactionStmt) GOOGLE_DCHECK_NE(&from, this); const TransactionStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.TransactionStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.TransactionStmt) MergeFrom(*source); } } void TransactionStmt::MergeFrom(const TransactionStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TransactionStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.savepoint_name().size() > 0) { _internal_set_savepoint_name(from._internal_savepoint_name()); } if (from.gid().size() > 0) { _internal_set_gid(from._internal_gid()); } if (from.kind() != 0) { _internal_set_kind(from._internal_kind()); } if (from.chain() != 0) { _internal_set_chain(from._internal_chain()); } } void TransactionStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.TransactionStmt) if (&from == this) return; Clear(); MergeFrom(from); } void TransactionStmt::CopyFrom(const TransactionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TransactionStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool TransactionStmt::IsInitialized() const { return true; } void TransactionStmt::InternalSwap(TransactionStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); savepoint_name_.Swap(&other->savepoint_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); gid_.Swap(&other->gid_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(TransactionStmt, chain_) + sizeof(TransactionStmt::chain_) - PROTOBUF_FIELD_OFFSET(TransactionStmt, kind_)>( reinterpret_cast(&kind_), reinterpret_cast(&other->kind_)); } ::PROTOBUF_NAMESPACE_ID::Metadata TransactionStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ViewStmt::_Internal { public: static const ::pg_query::RangeVar& view(const ViewStmt* msg); static const ::pg_query::Node& query(const ViewStmt* msg); }; const ::pg_query::RangeVar& ViewStmt::_Internal::view(const ViewStmt* msg) { return *msg->view_; } const ::pg_query::Node& ViewStmt::_Internal::query(const ViewStmt* msg) { return *msg->query_; } ViewStmt::ViewStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), aliases_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ViewStmt) } ViewStmt::ViewStmt(const ViewStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), aliases_(from.aliases_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_view()) { view_ = new ::pg_query::RangeVar(*from.view_); } else { view_ = nullptr; } if (from._internal_has_query()) { query_ = new ::pg_query::Node(*from.query_); } else { query_ = nullptr; } ::memcpy(&replace_, &from.replace_, static_cast(reinterpret_cast(&with_check_option_) - reinterpret_cast(&replace_)) + sizeof(with_check_option_)); // @@protoc_insertion_point(copy_constructor:pg_query.ViewStmt) } void ViewStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&view_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&with_check_option_) - reinterpret_cast(&view_)) + sizeof(with_check_option_)); } ViewStmt::~ViewStmt() { // @@protoc_insertion_point(destructor:pg_query.ViewStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ViewStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete view_; if (this != internal_default_instance()) delete query_; } void ViewStmt::ArenaDtor(void* object) { ViewStmt* _this = reinterpret_cast< ViewStmt* >(object); (void)_this; } void ViewStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ViewStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ViewStmt& ViewStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ViewStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ViewStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; aliases_.Clear(); options_.Clear(); if (GetArena() == nullptr && view_ != nullptr) { delete view_; } view_ = nullptr; if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; ::memset(&replace_, 0, static_cast( reinterpret_cast(&with_check_option_) - reinterpret_cast(&replace_)) + sizeof(with_check_option_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ViewStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar view = 1 [json_name = "view"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_view(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_aliases(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node query = 3 [json_name = "query"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_query(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool replace = 4 [json_name = "replace"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { replace_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 5 [json_name = "options"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_with_check_option(static_cast<::pg_query::ViewCheckOption>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ViewStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ViewStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar view = 1 [json_name = "view"]; if (this->has_view()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::view(this), target, stream); } // repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; for (unsigned int i = 0, n = static_cast(this->_internal_aliases_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_aliases(i), target, stream); } // .pg_query.Node query = 3 [json_name = "query"]; if (this->has_query()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::query(this), target, stream); } // bool replace = 4 [json_name = "replace"]; if (this->replace() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_replace(), target); } // repeated .pg_query.Node options = 5 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_options(i), target, stream); } // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; if (this->with_check_option() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 6, this->_internal_with_check_option(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ViewStmt) return target; } size_t ViewStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ViewStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; total_size += 1UL * this->_internal_aliases_size(); for (const auto& msg : this->aliases_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 5 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar view = 1 [json_name = "view"]; if (this->has_view()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *view_); } // .pg_query.Node query = 3 [json_name = "query"]; if (this->has_query()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *query_); } // bool replace = 4 [json_name = "replace"]; if (this->replace() != 0) { total_size += 1 + 1; } // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; if (this->with_check_option() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_with_check_option()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ViewStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ViewStmt) GOOGLE_DCHECK_NE(&from, this); const ViewStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ViewStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ViewStmt) MergeFrom(*source); } } void ViewStmt::MergeFrom(const ViewStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ViewStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; aliases_.MergeFrom(from.aliases_); options_.MergeFrom(from.options_); if (from.has_view()) { _internal_mutable_view()->::pg_query::RangeVar::MergeFrom(from._internal_view()); } if (from.has_query()) { _internal_mutable_query()->::pg_query::Node::MergeFrom(from._internal_query()); } if (from.replace() != 0) { _internal_set_replace(from._internal_replace()); } if (from.with_check_option() != 0) { _internal_set_with_check_option(from._internal_with_check_option()); } } void ViewStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ViewStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ViewStmt::CopyFrom(const ViewStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ViewStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ViewStmt::IsInitialized() const { return true; } void ViewStmt::InternalSwap(ViewStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); aliases_.InternalSwap(&other->aliases_); options_.InternalSwap(&other->options_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ViewStmt, with_check_option_) + sizeof(ViewStmt::with_check_option_) - PROTOBUF_FIELD_OFFSET(ViewStmt, view_)>( reinterpret_cast(&view_), reinterpret_cast(&other->view_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ViewStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class LoadStmt::_Internal { public: }; LoadStmt::LoadStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.LoadStmt) } LoadStmt::LoadStmt(const LoadStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_filename().empty()) { filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_filename(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.LoadStmt) } void LoadStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_LoadStmt_protobuf_2fpg_5fquery_2eproto.base); filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } LoadStmt::~LoadStmt() { // @@protoc_insertion_point(destructor:pg_query.LoadStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void LoadStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); filename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void LoadStmt::ArenaDtor(void* object) { LoadStmt* _this = reinterpret_cast< LoadStmt* >(object); (void)_this; } void LoadStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void LoadStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const LoadStmt& LoadStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_LoadStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void LoadStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.LoadStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; filename_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* LoadStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string filename = 1 [json_name = "filename"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_filename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.LoadStmt.filename")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* LoadStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.LoadStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string filename = 1 [json_name = "filename"]; if (this->filename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_filename().data(), static_cast(this->_internal_filename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.LoadStmt.filename"); target = stream->WriteStringMaybeAliased( 1, this->_internal_filename(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.LoadStmt) return target; } size_t LoadStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.LoadStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string filename = 1 [json_name = "filename"]; if (this->filename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_filename()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void LoadStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.LoadStmt) GOOGLE_DCHECK_NE(&from, this); const LoadStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.LoadStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.LoadStmt) MergeFrom(*source); } } void LoadStmt::MergeFrom(const LoadStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.LoadStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.filename().size() > 0) { _internal_set_filename(from._internal_filename()); } } void LoadStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.LoadStmt) if (&from == this) return; Clear(); MergeFrom(from); } void LoadStmt::CopyFrom(const LoadStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.LoadStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool LoadStmt::IsInitialized() const { return true; } void LoadStmt::InternalSwap(LoadStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); filename_.Swap(&other->filename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata LoadStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateDomainStmt::_Internal { public: static const ::pg_query::TypeName& type_name(const CreateDomainStmt* msg); static const ::pg_query::CollateClause& coll_clause(const CreateDomainStmt* msg); }; const ::pg_query::TypeName& CreateDomainStmt::_Internal::type_name(const CreateDomainStmt* msg) { return *msg->type_name_; } const ::pg_query::CollateClause& CreateDomainStmt::_Internal::coll_clause(const CreateDomainStmt* msg) { return *msg->coll_clause_; } CreateDomainStmt::CreateDomainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), domainname_(arena), constraints_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateDomainStmt) } CreateDomainStmt::CreateDomainStmt(const CreateDomainStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), domainname_(from.domainname_), constraints_(from.constraints_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_type_name()) { type_name_ = new ::pg_query::TypeName(*from.type_name_); } else { type_name_ = nullptr; } if (from._internal_has_coll_clause()) { coll_clause_ = new ::pg_query::CollateClause(*from.coll_clause_); } else { coll_clause_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.CreateDomainStmt) } void CreateDomainStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&type_name_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&coll_clause_) - reinterpret_cast(&type_name_)) + sizeof(coll_clause_)); } CreateDomainStmt::~CreateDomainStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateDomainStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateDomainStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete type_name_; if (this != internal_default_instance()) delete coll_clause_; } void CreateDomainStmt::ArenaDtor(void* object) { CreateDomainStmt* _this = reinterpret_cast< CreateDomainStmt* >(object); (void)_this; } void CreateDomainStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateDomainStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateDomainStmt& CreateDomainStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateDomainStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateDomainStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; domainname_.Clear(); constraints_.Clear(); if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; if (GetArena() == nullptr && coll_clause_ != nullptr) { delete coll_clause_; } coll_clause_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateDomainStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_domainname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_type_name(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_coll_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_constraints(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateDomainStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateDomainStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; for (unsigned int i = 0, n = static_cast(this->_internal_domainname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_domainname(i), target, stream); } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (this->has_type_name()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::type_name(this), target, stream); } // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; if (this->has_coll_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::coll_clause(this), target, stream); } // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; for (unsigned int i = 0, n = static_cast(this->_internal_constraints_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_constraints(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateDomainStmt) return target; } size_t CreateDomainStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateDomainStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; total_size += 1UL * this->_internal_domainname_size(); for (const auto& msg : this->domainname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; total_size += 1UL * this->_internal_constraints_size(); for (const auto& msg : this->constraints_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (this->has_type_name()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *type_name_); } // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; if (this->has_coll_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *coll_clause_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateDomainStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateDomainStmt) GOOGLE_DCHECK_NE(&from, this); const CreateDomainStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateDomainStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateDomainStmt) MergeFrom(*source); } } void CreateDomainStmt::MergeFrom(const CreateDomainStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateDomainStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; domainname_.MergeFrom(from.domainname_); constraints_.MergeFrom(from.constraints_); if (from.has_type_name()) { _internal_mutable_type_name()->::pg_query::TypeName::MergeFrom(from._internal_type_name()); } if (from.has_coll_clause()) { _internal_mutable_coll_clause()->::pg_query::CollateClause::MergeFrom(from._internal_coll_clause()); } } void CreateDomainStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateDomainStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateDomainStmt::CopyFrom(const CreateDomainStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateDomainStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateDomainStmt::IsInitialized() const { return true; } void CreateDomainStmt::InternalSwap(CreateDomainStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); domainname_.InternalSwap(&other->domainname_); constraints_.InternalSwap(&other->constraints_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateDomainStmt, coll_clause_) + sizeof(CreateDomainStmt::coll_clause_) - PROTOBUF_FIELD_OFFSET(CreateDomainStmt, type_name_)>( reinterpret_cast(&type_name_), reinterpret_cast(&other->type_name_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateDomainStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreatedbStmt::_Internal { public: }; CreatedbStmt::CreatedbStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreatedbStmt) } CreatedbStmt::CreatedbStmt(const CreatedbStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); dbname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_dbname().empty()) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_dbname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.CreatedbStmt) } void CreatedbStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); dbname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } CreatedbStmt::~CreatedbStmt() { // @@protoc_insertion_point(destructor:pg_query.CreatedbStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreatedbStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); dbname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreatedbStmt::ArenaDtor(void* object) { CreatedbStmt* _this = reinterpret_cast< CreatedbStmt* >(object); (void)_this; } void CreatedbStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreatedbStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreatedbStmt& CreatedbStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreatedbStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreatedbStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); dbname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreatedbStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string dbname = 1 [json_name = "dbname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_dbname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreatedbStmt.dbname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreatedbStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreatedbStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string dbname = 1 [json_name = "dbname"]; if (this->dbname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_dbname().data(), static_cast(this->_internal_dbname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreatedbStmt.dbname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_dbname(), target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreatedbStmt) return target; } size_t CreatedbStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreatedbStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string dbname = 1 [json_name = "dbname"]; if (this->dbname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_dbname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreatedbStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreatedbStmt) GOOGLE_DCHECK_NE(&from, this); const CreatedbStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreatedbStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreatedbStmt) MergeFrom(*source); } } void CreatedbStmt::MergeFrom(const CreatedbStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreatedbStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.dbname().size() > 0) { _internal_set_dbname(from._internal_dbname()); } } void CreatedbStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreatedbStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreatedbStmt::CopyFrom(const CreatedbStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreatedbStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreatedbStmt::IsInitialized() const { return true; } void CreatedbStmt::InternalSwap(CreatedbStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); dbname_.Swap(&other->dbname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata CreatedbStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DropdbStmt::_Internal { public: }; DropdbStmt::DropdbStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropdbStmt) } DropdbStmt::DropdbStmt(const DropdbStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); dbname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_dbname().empty()) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_dbname(), GetArena()); } missing_ok_ = from.missing_ok_; // @@protoc_insertion_point(copy_constructor:pg_query.DropdbStmt) } void DropdbStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); dbname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); missing_ok_ = false; } DropdbStmt::~DropdbStmt() { // @@protoc_insertion_point(destructor:pg_query.DropdbStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DropdbStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); dbname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void DropdbStmt::ArenaDtor(void* object) { DropdbStmt* _this = reinterpret_cast< DropdbStmt* >(object); (void)_this; } void DropdbStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DropdbStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DropdbStmt& DropdbStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DropdbStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropdbStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); dbname_.ClearToEmpty(); missing_ok_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DropdbStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string dbname = 1 [json_name = "dbname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_dbname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.DropdbStmt.dbname")); CHK_(ptr); } else goto handle_unusual; continue; // bool missing_ok = 2 [json_name = "missing_ok"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 3 [json_name = "options"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DropdbStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropdbStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string dbname = 1 [json_name = "dbname"]; if (this->dbname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_dbname().data(), static_cast(this->_internal_dbname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.DropdbStmt.dbname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_dbname(), target); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_missing_ok(), target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DropdbStmt) return target; } size_t DropdbStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DropdbStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 3 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string dbname = 1 [json_name = "dbname"]; if (this->dbname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_dbname()); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DropdbStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DropdbStmt) GOOGLE_DCHECK_NE(&from, this); const DropdbStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DropdbStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DropdbStmt) MergeFrom(*source); } } void DropdbStmt::MergeFrom(const DropdbStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropdbStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.dbname().size() > 0) { _internal_set_dbname(from._internal_dbname()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void DropdbStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DropdbStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DropdbStmt::CopyFrom(const DropdbStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropdbStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DropdbStmt::IsInitialized() const { return true; } void DropdbStmt::InternalSwap(DropdbStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); dbname_.Swap(&other->dbname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(missing_ok_, other->missing_ok_); } ::PROTOBUF_NAMESPACE_ID::Metadata DropdbStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class VacuumStmt::_Internal { public: }; VacuumStmt::VacuumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena), rels_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.VacuumStmt) } VacuumStmt::VacuumStmt(const VacuumStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_), rels_(from.rels_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); is_vacuumcmd_ = from.is_vacuumcmd_; // @@protoc_insertion_point(copy_constructor:pg_query.VacuumStmt) } void VacuumStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); is_vacuumcmd_ = false; } VacuumStmt::~VacuumStmt() { // @@protoc_insertion_point(destructor:pg_query.VacuumStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void VacuumStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void VacuumStmt::ArenaDtor(void* object) { VacuumStmt* _this = reinterpret_cast< VacuumStmt* >(object); (void)_this; } void VacuumStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void VacuumStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const VacuumStmt& VacuumStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void VacuumStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.VacuumStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); rels_.Clear(); is_vacuumcmd_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* VacuumStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node options = 1 [json_name = "options"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node rels = 2 [json_name = "rels"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_rels(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { is_vacuumcmd_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* VacuumStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.VacuumStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node options = 1 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_options(i), target, stream); } // repeated .pg_query.Node rels = 2 [json_name = "rels"]; for (unsigned int i = 0, n = static_cast(this->_internal_rels_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_rels(i), target, stream); } // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; if (this->is_vacuumcmd() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_is_vacuumcmd(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.VacuumStmt) return target; } size_t VacuumStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.VacuumStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 1 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node rels = 2 [json_name = "rels"]; total_size += 1UL * this->_internal_rels_size(); for (const auto& msg : this->rels_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; if (this->is_vacuumcmd() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void VacuumStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.VacuumStmt) GOOGLE_DCHECK_NE(&from, this); const VacuumStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.VacuumStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.VacuumStmt) MergeFrom(*source); } } void VacuumStmt::MergeFrom(const VacuumStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.VacuumStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); rels_.MergeFrom(from.rels_); if (from.is_vacuumcmd() != 0) { _internal_set_is_vacuumcmd(from._internal_is_vacuumcmd()); } } void VacuumStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.VacuumStmt) if (&from == this) return; Clear(); MergeFrom(from); } void VacuumStmt::CopyFrom(const VacuumStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.VacuumStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool VacuumStmt::IsInitialized() const { return true; } void VacuumStmt::InternalSwap(VacuumStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); rels_.InternalSwap(&other->rels_); swap(is_vacuumcmd_, other->is_vacuumcmd_); } ::PROTOBUF_NAMESPACE_ID::Metadata VacuumStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ExplainStmt::_Internal { public: static const ::pg_query::Node& query(const ExplainStmt* msg); }; const ::pg_query::Node& ExplainStmt::_Internal::query(const ExplainStmt* msg) { return *msg->query_; } ExplainStmt::ExplainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ExplainStmt) } ExplainStmt::ExplainStmt(const ExplainStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_query()) { query_ = new ::pg_query::Node(*from.query_); } else { query_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.ExplainStmt) } void ExplainStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); query_ = nullptr; } ExplainStmt::~ExplainStmt() { // @@protoc_insertion_point(destructor:pg_query.ExplainStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ExplainStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete query_; } void ExplainStmt::ArenaDtor(void* object) { ExplainStmt* _this = reinterpret_cast< ExplainStmt* >(object); (void)_this; } void ExplainStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ExplainStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ExplainStmt& ExplainStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ExplainStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ExplainStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ExplainStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node query = 1 [json_name = "query"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_query(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ExplainStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ExplainStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node query = 1 [json_name = "query"]; if (this->has_query()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::query(this), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ExplainStmt) return target; } size_t ExplainStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ExplainStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node query = 1 [json_name = "query"]; if (this->has_query()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *query_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ExplainStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ExplainStmt) GOOGLE_DCHECK_NE(&from, this); const ExplainStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ExplainStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ExplainStmt) MergeFrom(*source); } } void ExplainStmt::MergeFrom(const ExplainStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ExplainStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.has_query()) { _internal_mutable_query()->::pg_query::Node::MergeFrom(from._internal_query()); } } void ExplainStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ExplainStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ExplainStmt::CopyFrom(const ExplainStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ExplainStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ExplainStmt::IsInitialized() const { return true; } void ExplainStmt::InternalSwap(ExplainStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); swap(query_, other->query_); } ::PROTOBUF_NAMESPACE_ID::Metadata ExplainStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateTableAsStmt::_Internal { public: static const ::pg_query::Node& query(const CreateTableAsStmt* msg); static const ::pg_query::IntoClause& into(const CreateTableAsStmt* msg); }; const ::pg_query::Node& CreateTableAsStmt::_Internal::query(const CreateTableAsStmt* msg) { return *msg->query_; } const ::pg_query::IntoClause& CreateTableAsStmt::_Internal::into(const CreateTableAsStmt* msg) { return *msg->into_; } CreateTableAsStmt::CreateTableAsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateTableAsStmt) } CreateTableAsStmt::CreateTableAsStmt(const CreateTableAsStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_query()) { query_ = new ::pg_query::Node(*from.query_); } else { query_ = nullptr; } if (from._internal_has_into()) { into_ = new ::pg_query::IntoClause(*from.into_); } else { into_ = nullptr; } ::memcpy(&relkind_, &from.relkind_, static_cast(reinterpret_cast(&if_not_exists_) - reinterpret_cast(&relkind_)) + sizeof(if_not_exists_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateTableAsStmt) } void CreateTableAsStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&query_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&if_not_exists_) - reinterpret_cast(&query_)) + sizeof(if_not_exists_)); } CreateTableAsStmt::~CreateTableAsStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateTableAsStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateTableAsStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete query_; if (this != internal_default_instance()) delete into_; } void CreateTableAsStmt::ArenaDtor(void* object) { CreateTableAsStmt* _this = reinterpret_cast< CreateTableAsStmt* >(object); (void)_this; } void CreateTableAsStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateTableAsStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateTableAsStmt& CreateTableAsStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateTableAsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateTableAsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; if (GetArena() == nullptr && into_ != nullptr) { delete into_; } into_ = nullptr; ::memset(&relkind_, 0, static_cast( reinterpret_cast(&if_not_exists_) - reinterpret_cast(&relkind_)) + sizeof(if_not_exists_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateTableAsStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node query = 1 [json_name = "query"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_query(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.IntoClause into = 2 [json_name = "into"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_into(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_relkind(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // bool is_select_into = 4 [json_name = "is_select_into"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { is_select_into_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool if_not_exists = 5 [json_name = "if_not_exists"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateTableAsStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateTableAsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node query = 1 [json_name = "query"]; if (this->has_query()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::query(this), target, stream); } // .pg_query.IntoClause into = 2 [json_name = "into"]; if (this->has_into()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::into(this), target, stream); } // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; if (this->relkind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_relkind(), target); } // bool is_select_into = 4 [json_name = "is_select_into"]; if (this->is_select_into() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_is_select_into(), target); } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_if_not_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateTableAsStmt) return target; } size_t CreateTableAsStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateTableAsStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node query = 1 [json_name = "query"]; if (this->has_query()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *query_); } // .pg_query.IntoClause into = 2 [json_name = "into"]; if (this->has_into()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *into_); } // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; if (this->relkind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_relkind()); } // bool is_select_into = 4 [json_name = "is_select_into"]; if (this->is_select_into() != 0) { total_size += 1 + 1; } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateTableAsStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateTableAsStmt) GOOGLE_DCHECK_NE(&from, this); const CreateTableAsStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateTableAsStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateTableAsStmt) MergeFrom(*source); } } void CreateTableAsStmt::MergeFrom(const CreateTableAsStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateTableAsStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_query()) { _internal_mutable_query()->::pg_query::Node::MergeFrom(from._internal_query()); } if (from.has_into()) { _internal_mutable_into()->::pg_query::IntoClause::MergeFrom(from._internal_into()); } if (from.relkind() != 0) { _internal_set_relkind(from._internal_relkind()); } if (from.is_select_into() != 0) { _internal_set_is_select_into(from._internal_is_select_into()); } if (from.if_not_exists() != 0) { _internal_set_if_not_exists(from._internal_if_not_exists()); } } void CreateTableAsStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateTableAsStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateTableAsStmt::CopyFrom(const CreateTableAsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateTableAsStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateTableAsStmt::IsInitialized() const { return true; } void CreateTableAsStmt::InternalSwap(CreateTableAsStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, if_not_exists_) + sizeof(CreateTableAsStmt::if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateTableAsStmt, query_)>( reinterpret_cast(&query_), reinterpret_cast(&other->query_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateTableAsStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateSeqStmt::_Internal { public: static const ::pg_query::RangeVar& sequence(const CreateSeqStmt* msg); }; const ::pg_query::RangeVar& CreateSeqStmt::_Internal::sequence(const CreateSeqStmt* msg) { return *msg->sequence_; } CreateSeqStmt::CreateSeqStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateSeqStmt) } CreateSeqStmt::CreateSeqStmt(const CreateSeqStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_sequence()) { sequence_ = new ::pg_query::RangeVar(*from.sequence_); } else { sequence_ = nullptr; } ::memcpy(&owner_id_, &from.owner_id_, static_cast(reinterpret_cast(&if_not_exists_) - reinterpret_cast(&owner_id_)) + sizeof(if_not_exists_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateSeqStmt) } void CreateSeqStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&sequence_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&if_not_exists_) - reinterpret_cast(&sequence_)) + sizeof(if_not_exists_)); } CreateSeqStmt::~CreateSeqStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateSeqStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateSeqStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete sequence_; } void CreateSeqStmt::ArenaDtor(void* object) { CreateSeqStmt* _this = reinterpret_cast< CreateSeqStmt* >(object); (void)_this; } void CreateSeqStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateSeqStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateSeqStmt& CreateSeqStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateSeqStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateSeqStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); if (GetArena() == nullptr && sequence_ != nullptr) { delete sequence_; } sequence_ = nullptr; ::memset(&owner_id_, 0, static_cast( reinterpret_cast(&if_not_exists_) - reinterpret_cast(&owner_id_)) + sizeof(if_not_exists_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateSeqStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_sequence(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // uint32 owner_id = 3 [json_name = "ownerId"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { owner_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool for_identity = 4 [json_name = "for_identity"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { for_identity_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool if_not_exists = 5 [json_name = "if_not_exists"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateSeqStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateSeqStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; if (this->has_sequence()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::sequence(this), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } // uint32 owner_id = 3 [json_name = "ownerId"]; if (this->owner_id() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_owner_id(), target); } // bool for_identity = 4 [json_name = "for_identity"]; if (this->for_identity() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_for_identity(), target); } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_if_not_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateSeqStmt) return target; } size_t CreateSeqStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateSeqStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; if (this->has_sequence()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *sequence_); } // uint32 owner_id = 3 [json_name = "ownerId"]; if (this->owner_id() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_owner_id()); } // bool for_identity = 4 [json_name = "for_identity"]; if (this->for_identity() != 0) { total_size += 1 + 1; } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateSeqStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateSeqStmt) GOOGLE_DCHECK_NE(&from, this); const CreateSeqStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateSeqStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateSeqStmt) MergeFrom(*source); } } void CreateSeqStmt::MergeFrom(const CreateSeqStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateSeqStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.has_sequence()) { _internal_mutable_sequence()->::pg_query::RangeVar::MergeFrom(from._internal_sequence()); } if (from.owner_id() != 0) { _internal_set_owner_id(from._internal_owner_id()); } if (from.for_identity() != 0) { _internal_set_for_identity(from._internal_for_identity()); } if (from.if_not_exists() != 0) { _internal_set_if_not_exists(from._internal_if_not_exists()); } } void CreateSeqStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateSeqStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateSeqStmt::CopyFrom(const CreateSeqStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateSeqStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateSeqStmt::IsInitialized() const { return true; } void CreateSeqStmt::InternalSwap(CreateSeqStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateSeqStmt, if_not_exists_) + sizeof(CreateSeqStmt::if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateSeqStmt, sequence_)>( reinterpret_cast(&sequence_), reinterpret_cast(&other->sequence_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateSeqStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterSeqStmt::_Internal { public: static const ::pg_query::RangeVar& sequence(const AlterSeqStmt* msg); }; const ::pg_query::RangeVar& AlterSeqStmt::_Internal::sequence(const AlterSeqStmt* msg) { return *msg->sequence_; } AlterSeqStmt::AlterSeqStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterSeqStmt) } AlterSeqStmt::AlterSeqStmt(const AlterSeqStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_sequence()) { sequence_ = new ::pg_query::RangeVar(*from.sequence_); } else { sequence_ = nullptr; } ::memcpy(&for_identity_, &from.for_identity_, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&for_identity_)) + sizeof(missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterSeqStmt) } void AlterSeqStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&sequence_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&sequence_)) + sizeof(missing_ok_)); } AlterSeqStmt::~AlterSeqStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterSeqStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterSeqStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete sequence_; } void AlterSeqStmt::ArenaDtor(void* object) { AlterSeqStmt* _this = reinterpret_cast< AlterSeqStmt* >(object); (void)_this; } void AlterSeqStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterSeqStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterSeqStmt& AlterSeqStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterSeqStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterSeqStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); if (GetArena() == nullptr && sequence_ != nullptr) { delete sequence_; } sequence_ = nullptr; ::memset(&for_identity_, 0, static_cast( reinterpret_cast(&missing_ok_) - reinterpret_cast(&for_identity_)) + sizeof(missing_ok_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterSeqStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_sequence(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // bool for_identity = 3 [json_name = "for_identity"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { for_identity_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool missing_ok = 4 [json_name = "missing_ok"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterSeqStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterSeqStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; if (this->has_sequence()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::sequence(this), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } // bool for_identity = 3 [json_name = "for_identity"]; if (this->for_identity() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_for_identity(), target); } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterSeqStmt) return target; } size_t AlterSeqStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterSeqStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; if (this->has_sequence()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *sequence_); } // bool for_identity = 3 [json_name = "for_identity"]; if (this->for_identity() != 0) { total_size += 1 + 1; } // bool missing_ok = 4 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterSeqStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterSeqStmt) GOOGLE_DCHECK_NE(&from, this); const AlterSeqStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterSeqStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterSeqStmt) MergeFrom(*source); } } void AlterSeqStmt::MergeFrom(const AlterSeqStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterSeqStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.has_sequence()) { _internal_mutable_sequence()->::pg_query::RangeVar::MergeFrom(from._internal_sequence()); } if (from.for_identity() != 0) { _internal_set_for_identity(from._internal_for_identity()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void AlterSeqStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterSeqStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterSeqStmt::CopyFrom(const AlterSeqStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterSeqStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterSeqStmt::IsInitialized() const { return true; } void AlterSeqStmt::InternalSwap(AlterSeqStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterSeqStmt, missing_ok_) + sizeof(AlterSeqStmt::missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterSeqStmt, sequence_)>( reinterpret_cast(&sequence_), reinterpret_cast(&other->sequence_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterSeqStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class VariableSetStmt::_Internal { public: }; VariableSetStmt::VariableSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.VariableSetStmt) } VariableSetStmt::VariableSetStmt(const VariableSetStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } ::memcpy(&kind_, &from.kind_, static_cast(reinterpret_cast(&is_local_) - reinterpret_cast(&kind_)) + sizeof(is_local_)); // @@protoc_insertion_point(copy_constructor:pg_query.VariableSetStmt) } void VariableSetStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&kind_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&is_local_) - reinterpret_cast(&kind_)) + sizeof(is_local_)); } VariableSetStmt::~VariableSetStmt() { // @@protoc_insertion_point(destructor:pg_query.VariableSetStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void VariableSetStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void VariableSetStmt::ArenaDtor(void* object) { VariableSetStmt* _this = reinterpret_cast< VariableSetStmt* >(object); (void)_this; } void VariableSetStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void VariableSetStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const VariableSetStmt& VariableSetStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void VariableSetStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.VariableSetStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); name_.ClearToEmpty(); ::memset(&kind_, 0, static_cast( reinterpret_cast(&is_local_) - reinterpret_cast(&kind_)) + sizeof(is_local_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* VariableSetStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_kind(static_cast<::pg_query::VariableSetKind>(val)); } else goto handle_unusual; continue; // string name = 2 [json_name = "name"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.VariableSetStmt.name")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 3 [json_name = "args"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // bool is_local = 4 [json_name = "is_local"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { is_local_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* VariableSetStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.VariableSetStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // string name = 2 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.VariableSetStmt.name"); target = stream->WriteStringMaybeAliased( 2, this->_internal_name(), target); } // repeated .pg_query.Node args = 3 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_args(i), target, stream); } // bool is_local = 4 [json_name = "is_local"]; if (this->is_local() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_is_local(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.VariableSetStmt) return target; } size_t VariableSetStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.VariableSetStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 3 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string name = 2 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind()); } // bool is_local = 4 [json_name = "is_local"]; if (this->is_local() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void VariableSetStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.VariableSetStmt) GOOGLE_DCHECK_NE(&from, this); const VariableSetStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.VariableSetStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.VariableSetStmt) MergeFrom(*source); } } void VariableSetStmt::MergeFrom(const VariableSetStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.VariableSetStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.kind() != 0) { _internal_set_kind(from._internal_kind()); } if (from.is_local() != 0) { _internal_set_is_local(from._internal_is_local()); } } void VariableSetStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.VariableSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } void VariableSetStmt::CopyFrom(const VariableSetStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.VariableSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool VariableSetStmt::IsInitialized() const { return true; } void VariableSetStmt::InternalSwap(VariableSetStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(VariableSetStmt, is_local_) + sizeof(VariableSetStmt::is_local_) - PROTOBUF_FIELD_OFFSET(VariableSetStmt, kind_)>( reinterpret_cast(&kind_), reinterpret_cast(&other->kind_)); } ::PROTOBUF_NAMESPACE_ID::Metadata VariableSetStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class VariableShowStmt::_Internal { public: }; VariableShowStmt::VariableShowStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.VariableShowStmt) } VariableShowStmt::VariableShowStmt(const VariableShowStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.VariableShowStmt) } void VariableShowStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_VariableShowStmt_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } VariableShowStmt::~VariableShowStmt() { // @@protoc_insertion_point(destructor:pg_query.VariableShowStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void VariableShowStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void VariableShowStmt::ArenaDtor(void* object) { VariableShowStmt* _this = reinterpret_cast< VariableShowStmt* >(object); (void)_this; } void VariableShowStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void VariableShowStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const VariableShowStmt& VariableShowStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_VariableShowStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void VariableShowStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.VariableShowStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; name_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* VariableShowStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.VariableShowStmt.name")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* VariableShowStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.VariableShowStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.VariableShowStmt.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.VariableShowStmt) return target; } size_t VariableShowStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.VariableShowStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void VariableShowStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.VariableShowStmt) GOOGLE_DCHECK_NE(&from, this); const VariableShowStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.VariableShowStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.VariableShowStmt) MergeFrom(*source); } } void VariableShowStmt::MergeFrom(const VariableShowStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.VariableShowStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } } void VariableShowStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.VariableShowStmt) if (&from == this) return; Clear(); MergeFrom(from); } void VariableShowStmt::CopyFrom(const VariableShowStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.VariableShowStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool VariableShowStmt::IsInitialized() const { return true; } void VariableShowStmt::InternalSwap(VariableShowStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata VariableShowStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DiscardStmt::_Internal { public: }; DiscardStmt::DiscardStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DiscardStmt) } DiscardStmt::DiscardStmt(const DiscardStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); target_ = from.target_; // @@protoc_insertion_point(copy_constructor:pg_query.DiscardStmt) } void DiscardStmt::SharedCtor() { target_ = 0; } DiscardStmt::~DiscardStmt() { // @@protoc_insertion_point(destructor:pg_query.DiscardStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DiscardStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void DiscardStmt::ArenaDtor(void* object) { DiscardStmt* _this = reinterpret_cast< DiscardStmt* >(object); (void)_this; } void DiscardStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DiscardStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DiscardStmt& DiscardStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_DiscardStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DiscardStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DiscardStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; target_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DiscardStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.DiscardMode target = 1 [json_name = "target"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_target(static_cast<::pg_query::DiscardMode>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DiscardStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DiscardStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.DiscardMode target = 1 [json_name = "target"]; if (this->target() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_target(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DiscardStmt) return target; } size_t DiscardStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DiscardStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.DiscardMode target = 1 [json_name = "target"]; if (this->target() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_target()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DiscardStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DiscardStmt) GOOGLE_DCHECK_NE(&from, this); const DiscardStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DiscardStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DiscardStmt) MergeFrom(*source); } } void DiscardStmt::MergeFrom(const DiscardStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DiscardStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.target() != 0) { _internal_set_target(from._internal_target()); } } void DiscardStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DiscardStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DiscardStmt::CopyFrom(const DiscardStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DiscardStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DiscardStmt::IsInitialized() const { return true; } void DiscardStmt::InternalSwap(DiscardStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); swap(target_, other->target_); } ::PROTOBUF_NAMESPACE_ID::Metadata DiscardStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateTrigStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const CreateTrigStmt* msg); static const ::pg_query::Node& when_clause(const CreateTrigStmt* msg); static const ::pg_query::RangeVar& constrrel(const CreateTrigStmt* msg); }; const ::pg_query::RangeVar& CreateTrigStmt::_Internal::relation(const CreateTrigStmt* msg) { return *msg->relation_; } const ::pg_query::Node& CreateTrigStmt::_Internal::when_clause(const CreateTrigStmt* msg) { return *msg->when_clause_; } const ::pg_query::RangeVar& CreateTrigStmt::_Internal::constrrel(const CreateTrigStmt* msg) { return *msg->constrrel_; } CreateTrigStmt::CreateTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), funcname_(arena), args_(arena), columns_(arena), transition_rels_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateTrigStmt) } CreateTrigStmt::CreateTrigStmt(const CreateTrigStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), funcname_(from.funcname_), args_(from.args_), columns_(from.columns_), transition_rels_(from.transition_rels_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); trigname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_trigname().empty()) { trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_trigname(), GetArena()); } if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_when_clause()) { when_clause_ = new ::pg_query::Node(*from.when_clause_); } else { when_clause_ = nullptr; } if (from._internal_has_constrrel()) { constrrel_ = new ::pg_query::RangeVar(*from.constrrel_); } else { constrrel_ = nullptr; } ::memcpy(&timing_, &from.timing_, static_cast(reinterpret_cast(&initdeferred_) - reinterpret_cast(&timing_)) + sizeof(initdeferred_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateTrigStmt) } void CreateTrigStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); trigname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&initdeferred_) - reinterpret_cast(&relation_)) + sizeof(initdeferred_)); } CreateTrigStmt::~CreateTrigStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateTrigStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateTrigStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); trigname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete when_clause_; if (this != internal_default_instance()) delete constrrel_; } void CreateTrigStmt::ArenaDtor(void* object) { CreateTrigStmt* _this = reinterpret_cast< CreateTrigStmt* >(object); (void)_this; } void CreateTrigStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateTrigStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateTrigStmt& CreateTrigStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateTrigStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateTrigStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; funcname_.Clear(); args_.Clear(); columns_.Clear(); transition_rels_.Clear(); trigname_.ClearToEmpty(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && when_clause_ != nullptr) { delete when_clause_; } when_clause_ = nullptr; if (GetArena() == nullptr && constrrel_ != nullptr) { delete constrrel_; } constrrel_ = nullptr; ::memset(&timing_, 0, static_cast( reinterpret_cast(&initdeferred_) - reinterpret_cast(&timing_)) + sizeof(initdeferred_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateTrigStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string trigname = 1 [json_name = "trigname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_trigname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateTrigStmt.trigname")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_funcname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 4 [json_name = "args"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // bool row = 5 [json_name = "row"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { row_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 timing = 6 [json_name = "timing"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { timing_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 events = 7 [json_name = "events"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { events_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node columns = 8 [json_name = "columns"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_columns(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node when_clause = 9 [json_name = "whenClause"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_when_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool isconstraint = 10 [json_name = "isconstraint"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { isconstraint_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node transition_rels = 11 [json_name = "transitionRels"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_transition_rels(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<90>(ptr)); } else goto handle_unusual; continue; // bool deferrable = 12 [json_name = "deferrable"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 96)) { deferrable_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool initdeferred = 13 [json_name = "initdeferred"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 104)) { initdeferred_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeVar constrrel = 14 [json_name = "constrrel"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { ptr = ctx->ParseMessage(_internal_mutable_constrrel(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateTrigStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateTrigStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string trigname = 1 [json_name = "trigname"]; if (this->trigname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_trigname().data(), static_cast(this->_internal_trigname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateTrigStmt.trigname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_trigname(), target); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::relation(this), target, stream); } // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; for (unsigned int i = 0, n = static_cast(this->_internal_funcname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_funcname(i), target, stream); } // repeated .pg_query.Node args = 4 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_args(i), target, stream); } // bool row = 5 [json_name = "row"]; if (this->row() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_row(), target); } // int32 timing = 6 [json_name = "timing"]; if (this->timing() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(6, this->_internal_timing(), target); } // int32 events = 7 [json_name = "events"]; if (this->events() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_events(), target); } // repeated .pg_query.Node columns = 8 [json_name = "columns"]; for (unsigned int i = 0, n = static_cast(this->_internal_columns_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_columns(i), target, stream); } // .pg_query.Node when_clause = 9 [json_name = "whenClause"]; if (this->has_when_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 9, _Internal::when_clause(this), target, stream); } // bool isconstraint = 10 [json_name = "isconstraint"]; if (this->isconstraint() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(10, this->_internal_isconstraint(), target); } // repeated .pg_query.Node transition_rels = 11 [json_name = "transitionRels"]; for (unsigned int i = 0, n = static_cast(this->_internal_transition_rels_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(11, this->_internal_transition_rels(i), target, stream); } // bool deferrable = 12 [json_name = "deferrable"]; if (this->deferrable() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(12, this->_internal_deferrable(), target); } // bool initdeferred = 13 [json_name = "initdeferred"]; if (this->initdeferred() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(13, this->_internal_initdeferred(), target); } // .pg_query.RangeVar constrrel = 14 [json_name = "constrrel"]; if (this->has_constrrel()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 14, _Internal::constrrel(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateTrigStmt) return target; } size_t CreateTrigStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateTrigStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; total_size += 1UL * this->_internal_funcname_size(); for (const auto& msg : this->funcname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node args = 4 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node columns = 8 [json_name = "columns"]; total_size += 1UL * this->_internal_columns_size(); for (const auto& msg : this->columns_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node transition_rels = 11 [json_name = "transitionRels"]; total_size += 1UL * this->_internal_transition_rels_size(); for (const auto& msg : this->transition_rels_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string trigname = 1 [json_name = "trigname"]; if (this->trigname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_trigname()); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node when_clause = 9 [json_name = "whenClause"]; if (this->has_when_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *when_clause_); } // .pg_query.RangeVar constrrel = 14 [json_name = "constrrel"]; if (this->has_constrrel()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *constrrel_); } // int32 timing = 6 [json_name = "timing"]; if (this->timing() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_timing()); } // int32 events = 7 [json_name = "events"]; if (this->events() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_events()); } // bool row = 5 [json_name = "row"]; if (this->row() != 0) { total_size += 1 + 1; } // bool isconstraint = 10 [json_name = "isconstraint"]; if (this->isconstraint() != 0) { total_size += 1 + 1; } // bool deferrable = 12 [json_name = "deferrable"]; if (this->deferrable() != 0) { total_size += 1 + 1; } // bool initdeferred = 13 [json_name = "initdeferred"]; if (this->initdeferred() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateTrigStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateTrigStmt) GOOGLE_DCHECK_NE(&from, this); const CreateTrigStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateTrigStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateTrigStmt) MergeFrom(*source); } } void CreateTrigStmt::MergeFrom(const CreateTrigStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateTrigStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; funcname_.MergeFrom(from.funcname_); args_.MergeFrom(from.args_); columns_.MergeFrom(from.columns_); transition_rels_.MergeFrom(from.transition_rels_); if (from.trigname().size() > 0) { _internal_set_trigname(from._internal_trigname()); } if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_when_clause()) { _internal_mutable_when_clause()->::pg_query::Node::MergeFrom(from._internal_when_clause()); } if (from.has_constrrel()) { _internal_mutable_constrrel()->::pg_query::RangeVar::MergeFrom(from._internal_constrrel()); } if (from.timing() != 0) { _internal_set_timing(from._internal_timing()); } if (from.events() != 0) { _internal_set_events(from._internal_events()); } if (from.row() != 0) { _internal_set_row(from._internal_row()); } if (from.isconstraint() != 0) { _internal_set_isconstraint(from._internal_isconstraint()); } if (from.deferrable() != 0) { _internal_set_deferrable(from._internal_deferrable()); } if (from.initdeferred() != 0) { _internal_set_initdeferred(from._internal_initdeferred()); } } void CreateTrigStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateTrigStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateTrigStmt::CopyFrom(const CreateTrigStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateTrigStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateTrigStmt::IsInitialized() const { return true; } void CreateTrigStmt::InternalSwap(CreateTrigStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); funcname_.InternalSwap(&other->funcname_); args_.InternalSwap(&other->args_); columns_.InternalSwap(&other->columns_); transition_rels_.InternalSwap(&other->transition_rels_); trigname_.Swap(&other->trigname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateTrigStmt, initdeferred_) + sizeof(CreateTrigStmt::initdeferred_) - PROTOBUF_FIELD_OFFSET(CreateTrigStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateTrigStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreatePLangStmt::_Internal { public: }; CreatePLangStmt::CreatePLangStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), plhandler_(arena), plinline_(arena), plvalidator_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreatePLangStmt) } CreatePLangStmt::CreatePLangStmt(const CreatePLangStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), plhandler_(from.plhandler_), plinline_(from.plinline_), plvalidator_(from.plvalidator_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); plname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_plname().empty()) { plname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_plname(), GetArena()); } ::memcpy(&replace_, &from.replace_, static_cast(reinterpret_cast(&pltrusted_) - reinterpret_cast(&replace_)) + sizeof(pltrusted_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreatePLangStmt) } void CreatePLangStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); plname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&replace_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&pltrusted_) - reinterpret_cast(&replace_)) + sizeof(pltrusted_)); } CreatePLangStmt::~CreatePLangStmt() { // @@protoc_insertion_point(destructor:pg_query.CreatePLangStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreatePLangStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); plname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreatePLangStmt::ArenaDtor(void* object) { CreatePLangStmt* _this = reinterpret_cast< CreatePLangStmt* >(object); (void)_this; } void CreatePLangStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreatePLangStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreatePLangStmt& CreatePLangStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreatePLangStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreatePLangStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; plhandler_.Clear(); plinline_.Clear(); plvalidator_.Clear(); plname_.ClearToEmpty(); ::memset(&replace_, 0, static_cast( reinterpret_cast(&pltrusted_) - reinterpret_cast(&replace_)) + sizeof(pltrusted_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreatePLangStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // bool replace = 1 [json_name = "replace"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { replace_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string plname = 2 [json_name = "plname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_plname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreatePLangStmt.plname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node plhandler = 3 [json_name = "plhandler"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_plhandler(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_plinline(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_plvalidator(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // bool pltrusted = 6 [json_name = "pltrusted"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { pltrusted_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreatePLangStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreatePLangStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // bool replace = 1 [json_name = "replace"]; if (this->replace() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_replace(), target); } // string plname = 2 [json_name = "plname"]; if (this->plname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_plname().data(), static_cast(this->_internal_plname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreatePLangStmt.plname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_plname(), target); } // repeated .pg_query.Node plhandler = 3 [json_name = "plhandler"]; for (unsigned int i = 0, n = static_cast(this->_internal_plhandler_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_plhandler(i), target, stream); } // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; for (unsigned int i = 0, n = static_cast(this->_internal_plinline_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_plinline(i), target, stream); } // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; for (unsigned int i = 0, n = static_cast(this->_internal_plvalidator_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_plvalidator(i), target, stream); } // bool pltrusted = 6 [json_name = "pltrusted"]; if (this->pltrusted() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_pltrusted(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreatePLangStmt) return target; } size_t CreatePLangStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreatePLangStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node plhandler = 3 [json_name = "plhandler"]; total_size += 1UL * this->_internal_plhandler_size(); for (const auto& msg : this->plhandler_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; total_size += 1UL * this->_internal_plinline_size(); for (const auto& msg : this->plinline_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; total_size += 1UL * this->_internal_plvalidator_size(); for (const auto& msg : this->plvalidator_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string plname = 2 [json_name = "plname"]; if (this->plname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_plname()); } // bool replace = 1 [json_name = "replace"]; if (this->replace() != 0) { total_size += 1 + 1; } // bool pltrusted = 6 [json_name = "pltrusted"]; if (this->pltrusted() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreatePLangStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreatePLangStmt) GOOGLE_DCHECK_NE(&from, this); const CreatePLangStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreatePLangStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreatePLangStmt) MergeFrom(*source); } } void CreatePLangStmt::MergeFrom(const CreatePLangStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreatePLangStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; plhandler_.MergeFrom(from.plhandler_); plinline_.MergeFrom(from.plinline_); plvalidator_.MergeFrom(from.plvalidator_); if (from.plname().size() > 0) { _internal_set_plname(from._internal_plname()); } if (from.replace() != 0) { _internal_set_replace(from._internal_replace()); } if (from.pltrusted() != 0) { _internal_set_pltrusted(from._internal_pltrusted()); } } void CreatePLangStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreatePLangStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreatePLangStmt::CopyFrom(const CreatePLangStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreatePLangStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreatePLangStmt::IsInitialized() const { return true; } void CreatePLangStmt::InternalSwap(CreatePLangStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); plhandler_.InternalSwap(&other->plhandler_); plinline_.InternalSwap(&other->plinline_); plvalidator_.InternalSwap(&other->plvalidator_); plname_.Swap(&other->plname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreatePLangStmt, pltrusted_) + sizeof(CreatePLangStmt::pltrusted_) - PROTOBUF_FIELD_OFFSET(CreatePLangStmt, replace_)>( reinterpret_cast(&replace_), reinterpret_cast(&other->replace_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreatePLangStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateRoleStmt::_Internal { public: }; CreateRoleStmt::CreateRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateRoleStmt) } CreateRoleStmt::CreateRoleStmt(const CreateRoleStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); role_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_role().empty()) { role_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_role(), GetArena()); } stmt_type_ = from.stmt_type_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateRoleStmt) } void CreateRoleStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); role_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); stmt_type_ = 0; } CreateRoleStmt::~CreateRoleStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateRoleStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateRoleStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); role_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreateRoleStmt::ArenaDtor(void* object) { CreateRoleStmt* _this = reinterpret_cast< CreateRoleStmt* >(object); (void)_this; } void CreateRoleStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateRoleStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateRoleStmt& CreateRoleStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateRoleStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateRoleStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); role_.ClearToEmpty(); stmt_type_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateRoleStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_stmt_type(static_cast<::pg_query::RoleStmtType>(val)); } else goto handle_unusual; continue; // string role = 2 [json_name = "role"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_role(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateRoleStmt.role")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 3 [json_name = "options"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateRoleStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateRoleStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; if (this->stmt_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_stmt_type(), target); } // string role = 2 [json_name = "role"]; if (this->role().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_role().data(), static_cast(this->_internal_role().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateRoleStmt.role"); target = stream->WriteStringMaybeAliased( 2, this->_internal_role(), target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateRoleStmt) return target; } size_t CreateRoleStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateRoleStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 3 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string role = 2 [json_name = "role"]; if (this->role().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_role()); } // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; if (this->stmt_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_stmt_type()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateRoleStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateRoleStmt) GOOGLE_DCHECK_NE(&from, this); const CreateRoleStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateRoleStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateRoleStmt) MergeFrom(*source); } } void CreateRoleStmt::MergeFrom(const CreateRoleStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateRoleStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.role().size() > 0) { _internal_set_role(from._internal_role()); } if (from.stmt_type() != 0) { _internal_set_stmt_type(from._internal_stmt_type()); } } void CreateRoleStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateRoleStmt::CopyFrom(const CreateRoleStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateRoleStmt::IsInitialized() const { return true; } void CreateRoleStmt::InternalSwap(CreateRoleStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); role_.Swap(&other->role_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(stmt_type_, other->stmt_type_); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateRoleStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterRoleStmt::_Internal { public: static const ::pg_query::RoleSpec& role(const AlterRoleStmt* msg); }; const ::pg_query::RoleSpec& AlterRoleStmt::_Internal::role(const AlterRoleStmt* msg) { return *msg->role_; } AlterRoleStmt::AlterRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterRoleStmt) } AlterRoleStmt::AlterRoleStmt(const AlterRoleStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_role()) { role_ = new ::pg_query::RoleSpec(*from.role_); } else { role_ = nullptr; } action_ = from.action_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterRoleStmt) } void AlterRoleStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&role_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&action_) - reinterpret_cast(&role_)) + sizeof(action_)); } AlterRoleStmt::~AlterRoleStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterRoleStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterRoleStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete role_; } void AlterRoleStmt::ArenaDtor(void* object) { AlterRoleStmt* _this = reinterpret_cast< AlterRoleStmt* >(object); (void)_this; } void AlterRoleStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterRoleStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterRoleStmt& AlterRoleStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterRoleStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterRoleStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); if (GetArena() == nullptr && role_ != nullptr) { delete role_; } role_ = nullptr; action_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterRoleStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RoleSpec role = 1 [json_name = "role"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_role(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // int32 action = 3 [json_name = "action"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { action_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterRoleStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterRoleStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RoleSpec role = 1 [json_name = "role"]; if (this->has_role()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::role(this), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } // int32 action = 3 [json_name = "action"]; if (this->action() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_action(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterRoleStmt) return target; } size_t AlterRoleStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterRoleStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RoleSpec role = 1 [json_name = "role"]; if (this->has_role()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *role_); } // int32 action = 3 [json_name = "action"]; if (this->action() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_action()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterRoleStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterRoleStmt) GOOGLE_DCHECK_NE(&from, this); const AlterRoleStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterRoleStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterRoleStmt) MergeFrom(*source); } } void AlterRoleStmt::MergeFrom(const AlterRoleStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterRoleStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.has_role()) { _internal_mutable_role()->::pg_query::RoleSpec::MergeFrom(from._internal_role()); } if (from.action() != 0) { _internal_set_action(from._internal_action()); } } void AlterRoleStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterRoleStmt::CopyFrom(const AlterRoleStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterRoleStmt::IsInitialized() const { return true; } void AlterRoleStmt::InternalSwap(AlterRoleStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterRoleStmt, action_) + sizeof(AlterRoleStmt::action_) - PROTOBUF_FIELD_OFFSET(AlterRoleStmt, role_)>( reinterpret_cast(&role_), reinterpret_cast(&other->role_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterRoleStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DropRoleStmt::_Internal { public: }; DropRoleStmt::DropRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), roles_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropRoleStmt) } DropRoleStmt::DropRoleStmt(const DropRoleStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), roles_(from.roles_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); missing_ok_ = from.missing_ok_; // @@protoc_insertion_point(copy_constructor:pg_query.DropRoleStmt) } void DropRoleStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); missing_ok_ = false; } DropRoleStmt::~DropRoleStmt() { // @@protoc_insertion_point(destructor:pg_query.DropRoleStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DropRoleStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void DropRoleStmt::ArenaDtor(void* object) { DropRoleStmt* _this = reinterpret_cast< DropRoleStmt* >(object); (void)_this; } void DropRoleStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DropRoleStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DropRoleStmt& DropRoleStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DropRoleStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropRoleStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; roles_.Clear(); missing_ok_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DropRoleStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node roles = 1 [json_name = "roles"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_roles(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // bool missing_ok = 2 [json_name = "missing_ok"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DropRoleStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropRoleStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; for (unsigned int i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_roles(i), target, stream); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DropRoleStmt) return target; } size_t DropRoleStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DropRoleStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; total_size += 1UL * this->_internal_roles_size(); for (const auto& msg : this->roles_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DropRoleStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DropRoleStmt) GOOGLE_DCHECK_NE(&from, this); const DropRoleStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DropRoleStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DropRoleStmt) MergeFrom(*source); } } void DropRoleStmt::MergeFrom(const DropRoleStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropRoleStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; roles_.MergeFrom(from.roles_); if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void DropRoleStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DropRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DropRoleStmt::CopyFrom(const DropRoleStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropRoleStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DropRoleStmt::IsInitialized() const { return true; } void DropRoleStmt::InternalSwap(DropRoleStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); roles_.InternalSwap(&other->roles_); swap(missing_ok_, other->missing_ok_); } ::PROTOBUF_NAMESPACE_ID::Metadata DropRoleStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class LockStmt::_Internal { public: }; LockStmt::LockStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), relations_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.LockStmt) } LockStmt::LockStmt(const LockStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), relations_(from.relations_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&mode_, &from.mode_, static_cast(reinterpret_cast(&nowait_) - reinterpret_cast(&mode_)) + sizeof(nowait_)); // @@protoc_insertion_point(copy_constructor:pg_query.LockStmt) } void LockStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&mode_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&nowait_) - reinterpret_cast(&mode_)) + sizeof(nowait_)); } LockStmt::~LockStmt() { // @@protoc_insertion_point(destructor:pg_query.LockStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void LockStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void LockStmt::ArenaDtor(void* object) { LockStmt* _this = reinterpret_cast< LockStmt* >(object); (void)_this; } void LockStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void LockStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const LockStmt& LockStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void LockStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.LockStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; relations_.Clear(); ::memset(&mode_, 0, static_cast( reinterpret_cast(&nowait_) - reinterpret_cast(&mode_)) + sizeof(nowait_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* LockStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node relations = 1 [json_name = "relations"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_relations(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // int32 mode = 2 [json_name = "mode"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { mode_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool nowait = 3 [json_name = "nowait"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { nowait_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* LockStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.LockStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node relations = 1 [json_name = "relations"]; for (unsigned int i = 0, n = static_cast(this->_internal_relations_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_relations(i), target, stream); } // int32 mode = 2 [json_name = "mode"]; if (this->mode() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_mode(), target); } // bool nowait = 3 [json_name = "nowait"]; if (this->nowait() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_nowait(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.LockStmt) return target; } size_t LockStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.LockStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node relations = 1 [json_name = "relations"]; total_size += 1UL * this->_internal_relations_size(); for (const auto& msg : this->relations_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // int32 mode = 2 [json_name = "mode"]; if (this->mode() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_mode()); } // bool nowait = 3 [json_name = "nowait"]; if (this->nowait() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void LockStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.LockStmt) GOOGLE_DCHECK_NE(&from, this); const LockStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.LockStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.LockStmt) MergeFrom(*source); } } void LockStmt::MergeFrom(const LockStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.LockStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; relations_.MergeFrom(from.relations_); if (from.mode() != 0) { _internal_set_mode(from._internal_mode()); } if (from.nowait() != 0) { _internal_set_nowait(from._internal_nowait()); } } void LockStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.LockStmt) if (&from == this) return; Clear(); MergeFrom(from); } void LockStmt::CopyFrom(const LockStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.LockStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool LockStmt::IsInitialized() const { return true; } void LockStmt::InternalSwap(LockStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); relations_.InternalSwap(&other->relations_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(LockStmt, nowait_) + sizeof(LockStmt::nowait_) - PROTOBUF_FIELD_OFFSET(LockStmt, mode_)>( reinterpret_cast(&mode_), reinterpret_cast(&other->mode_)); } ::PROTOBUF_NAMESPACE_ID::Metadata LockStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ConstraintsSetStmt::_Internal { public: }; ConstraintsSetStmt::ConstraintsSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), constraints_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ConstraintsSetStmt) } ConstraintsSetStmt::ConstraintsSetStmt(const ConstraintsSetStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), constraints_(from.constraints_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); deferred_ = from.deferred_; // @@protoc_insertion_point(copy_constructor:pg_query.ConstraintsSetStmt) } void ConstraintsSetStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); deferred_ = false; } ConstraintsSetStmt::~ConstraintsSetStmt() { // @@protoc_insertion_point(destructor:pg_query.ConstraintsSetStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ConstraintsSetStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void ConstraintsSetStmt::ArenaDtor(void* object) { ConstraintsSetStmt* _this = reinterpret_cast< ConstraintsSetStmt* >(object); (void)_this; } void ConstraintsSetStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ConstraintsSetStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ConstraintsSetStmt& ConstraintsSetStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ConstraintsSetStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ConstraintsSetStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; constraints_.Clear(); deferred_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ConstraintsSetStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_constraints(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // bool deferred = 2 [json_name = "deferred"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { deferred_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ConstraintsSetStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ConstraintsSetStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; for (unsigned int i = 0, n = static_cast(this->_internal_constraints_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_constraints(i), target, stream); } // bool deferred = 2 [json_name = "deferred"]; if (this->deferred() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_deferred(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ConstraintsSetStmt) return target; } size_t ConstraintsSetStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ConstraintsSetStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; total_size += 1UL * this->_internal_constraints_size(); for (const auto& msg : this->constraints_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // bool deferred = 2 [json_name = "deferred"]; if (this->deferred() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ConstraintsSetStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ConstraintsSetStmt) GOOGLE_DCHECK_NE(&from, this); const ConstraintsSetStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ConstraintsSetStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ConstraintsSetStmt) MergeFrom(*source); } } void ConstraintsSetStmt::MergeFrom(const ConstraintsSetStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ConstraintsSetStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; constraints_.MergeFrom(from.constraints_); if (from.deferred() != 0) { _internal_set_deferred(from._internal_deferred()); } } void ConstraintsSetStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ConstraintsSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ConstraintsSetStmt::CopyFrom(const ConstraintsSetStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ConstraintsSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ConstraintsSetStmt::IsInitialized() const { return true; } void ConstraintsSetStmt::InternalSwap(ConstraintsSetStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); constraints_.InternalSwap(&other->constraints_); swap(deferred_, other->deferred_); } ::PROTOBUF_NAMESPACE_ID::Metadata ConstraintsSetStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ReindexStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const ReindexStmt* msg); }; const ::pg_query::RangeVar& ReindexStmt::_Internal::relation(const ReindexStmt* msg) { return *msg->relation_; } ReindexStmt::ReindexStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ReindexStmt) } ReindexStmt::ReindexStmt(const ReindexStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } ::memcpy(&kind_, &from.kind_, static_cast(reinterpret_cast(&concurrent_) - reinterpret_cast(&kind_)) + sizeof(concurrent_)); // @@protoc_insertion_point(copy_constructor:pg_query.ReindexStmt) } void ReindexStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&concurrent_) - reinterpret_cast(&relation_)) + sizeof(concurrent_)); } ReindexStmt::~ReindexStmt() { // @@protoc_insertion_point(destructor:pg_query.ReindexStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ReindexStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete relation_; } void ReindexStmt::ArenaDtor(void* object) { ReindexStmt* _this = reinterpret_cast< ReindexStmt* >(object); (void)_this; } void ReindexStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ReindexStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ReindexStmt& ReindexStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ReindexStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ReindexStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; name_.ClearToEmpty(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; ::memset(&kind_, 0, static_cast( reinterpret_cast(&concurrent_) - reinterpret_cast(&kind_)) + sizeof(concurrent_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ReindexStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_kind(static_cast<::pg_query::ReindexObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string name = 3 [json_name = "name"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ReindexStmt.name")); CHK_(ptr); } else goto handle_unusual; continue; // int32 options = 4 [json_name = "options"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { options_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool concurrent = 5 [json_name = "concurrent"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { concurrent_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ReindexStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ReindexStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; if (this->kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::relation(this), target, stream); } // string name = 3 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ReindexStmt.name"); target = stream->WriteStringMaybeAliased( 3, this->_internal_name(), target); } // int32 options = 4 [json_name = "options"]; if (this->options() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_options(), target); } // bool concurrent = 5 [json_name = "concurrent"]; if (this->concurrent() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_concurrent(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ReindexStmt) return target; } size_t ReindexStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ReindexStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string name = 3 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; if (this->kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind()); } // int32 options = 4 [json_name = "options"]; if (this->options() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_options()); } // bool concurrent = 5 [json_name = "concurrent"]; if (this->concurrent() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ReindexStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ReindexStmt) GOOGLE_DCHECK_NE(&from, this); const ReindexStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ReindexStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ReindexStmt) MergeFrom(*source); } } void ReindexStmt::MergeFrom(const ReindexStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ReindexStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.kind() != 0) { _internal_set_kind(from._internal_kind()); } if (from.options() != 0) { _internal_set_options(from._internal_options()); } if (from.concurrent() != 0) { _internal_set_concurrent(from._internal_concurrent()); } } void ReindexStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ReindexStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ReindexStmt::CopyFrom(const ReindexStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ReindexStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ReindexStmt::IsInitialized() const { return true; } void ReindexStmt::InternalSwap(ReindexStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ReindexStmt, concurrent_) + sizeof(ReindexStmt::concurrent_) - PROTOBUF_FIELD_OFFSET(ReindexStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ReindexStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CheckPointStmt::_Internal { public: }; CheckPointStmt::CheckPointStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CheckPointStmt) } CheckPointStmt::CheckPointStmt(const CheckPointStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.CheckPointStmt) } void CheckPointStmt::SharedCtor() { } CheckPointStmt::~CheckPointStmt() { // @@protoc_insertion_point(destructor:pg_query.CheckPointStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CheckPointStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void CheckPointStmt::ArenaDtor(void* object) { CheckPointStmt* _this = reinterpret_cast< CheckPointStmt* >(object); (void)_this; } void CheckPointStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CheckPointStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CheckPointStmt& CheckPointStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_CheckPointStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CheckPointStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CheckPointStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CheckPointStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CheckPointStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CheckPointStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CheckPointStmt) return target; } size_t CheckPointStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CheckPointStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CheckPointStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CheckPointStmt) GOOGLE_DCHECK_NE(&from, this); const CheckPointStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CheckPointStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CheckPointStmt) MergeFrom(*source); } } void CheckPointStmt::MergeFrom(const CheckPointStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CheckPointStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; } void CheckPointStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CheckPointStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CheckPointStmt::CopyFrom(const CheckPointStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CheckPointStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CheckPointStmt::IsInitialized() const { return true; } void CheckPointStmt::InternalSwap(CheckPointStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); } ::PROTOBUF_NAMESPACE_ID::Metadata CheckPointStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateSchemaStmt::_Internal { public: static const ::pg_query::RoleSpec& authrole(const CreateSchemaStmt* msg); }; const ::pg_query::RoleSpec& CreateSchemaStmt::_Internal::authrole(const CreateSchemaStmt* msg) { return *msg->authrole_; } CreateSchemaStmt::CreateSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), schema_elts_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateSchemaStmt) } CreateSchemaStmt::CreateSchemaStmt(const CreateSchemaStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), schema_elts_(from.schema_elts_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); schemaname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_schemaname().empty()) { schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_schemaname(), GetArena()); } if (from._internal_has_authrole()) { authrole_ = new ::pg_query::RoleSpec(*from.authrole_); } else { authrole_ = nullptr; } if_not_exists_ = from.if_not_exists_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateSchemaStmt) } void CreateSchemaStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); schemaname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&authrole_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&if_not_exists_) - reinterpret_cast(&authrole_)) + sizeof(if_not_exists_)); } CreateSchemaStmt::~CreateSchemaStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateSchemaStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateSchemaStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); schemaname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete authrole_; } void CreateSchemaStmt::ArenaDtor(void* object) { CreateSchemaStmt* _this = reinterpret_cast< CreateSchemaStmt* >(object); (void)_this; } void CreateSchemaStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateSchemaStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateSchemaStmt& CreateSchemaStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateSchemaStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateSchemaStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; schema_elts_.Clear(); schemaname_.ClearToEmpty(); if (GetArena() == nullptr && authrole_ != nullptr) { delete authrole_; } authrole_ = nullptr; if_not_exists_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateSchemaStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string schemaname = 1 [json_name = "schemaname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_schemaname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateSchemaStmt.schemaname")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_authrole(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_schema_elts(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // bool if_not_exists = 4 [json_name = "if_not_exists"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateSchemaStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateSchemaStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string schemaname = 1 [json_name = "schemaname"]; if (this->schemaname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_schemaname().data(), static_cast(this->_internal_schemaname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateSchemaStmt.schemaname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_schemaname(), target); } // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; if (this->has_authrole()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::authrole(this), target, stream); } // repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; for (unsigned int i = 0, n = static_cast(this->_internal_schema_elts_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_schema_elts(i), target, stream); } // bool if_not_exists = 4 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_if_not_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateSchemaStmt) return target; } size_t CreateSchemaStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateSchemaStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; total_size += 1UL * this->_internal_schema_elts_size(); for (const auto& msg : this->schema_elts_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string schemaname = 1 [json_name = "schemaname"]; if (this->schemaname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_schemaname()); } // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; if (this->has_authrole()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *authrole_); } // bool if_not_exists = 4 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateSchemaStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateSchemaStmt) GOOGLE_DCHECK_NE(&from, this); const CreateSchemaStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateSchemaStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateSchemaStmt) MergeFrom(*source); } } void CreateSchemaStmt::MergeFrom(const CreateSchemaStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateSchemaStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; schema_elts_.MergeFrom(from.schema_elts_); if (from.schemaname().size() > 0) { _internal_set_schemaname(from._internal_schemaname()); } if (from.has_authrole()) { _internal_mutable_authrole()->::pg_query::RoleSpec::MergeFrom(from._internal_authrole()); } if (from.if_not_exists() != 0) { _internal_set_if_not_exists(from._internal_if_not_exists()); } } void CreateSchemaStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateSchemaStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateSchemaStmt::CopyFrom(const CreateSchemaStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateSchemaStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateSchemaStmt::IsInitialized() const { return true; } void CreateSchemaStmt::InternalSwap(CreateSchemaStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); schema_elts_.InternalSwap(&other->schema_elts_); schemaname_.Swap(&other->schemaname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, if_not_exists_) + sizeof(CreateSchemaStmt::if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateSchemaStmt, authrole_)>( reinterpret_cast(&authrole_), reinterpret_cast(&other->authrole_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateSchemaStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterDatabaseStmt::_Internal { public: }; AlterDatabaseStmt::AlterDatabaseStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterDatabaseStmt) } AlterDatabaseStmt::AlterDatabaseStmt(const AlterDatabaseStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); dbname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_dbname().empty()) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_dbname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.AlterDatabaseStmt) } void AlterDatabaseStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); dbname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } AlterDatabaseStmt::~AlterDatabaseStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterDatabaseStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterDatabaseStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); dbname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterDatabaseStmt::ArenaDtor(void* object) { AlterDatabaseStmt* _this = reinterpret_cast< AlterDatabaseStmt* >(object); (void)_this; } void AlterDatabaseStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterDatabaseStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterDatabaseStmt& AlterDatabaseStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterDatabaseStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterDatabaseStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); dbname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterDatabaseStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string dbname = 1 [json_name = "dbname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_dbname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterDatabaseStmt.dbname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterDatabaseStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterDatabaseStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string dbname = 1 [json_name = "dbname"]; if (this->dbname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_dbname().data(), static_cast(this->_internal_dbname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterDatabaseStmt.dbname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_dbname(), target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterDatabaseStmt) return target; } size_t AlterDatabaseStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterDatabaseStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string dbname = 1 [json_name = "dbname"]; if (this->dbname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_dbname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterDatabaseStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterDatabaseStmt) GOOGLE_DCHECK_NE(&from, this); const AlterDatabaseStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterDatabaseStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterDatabaseStmt) MergeFrom(*source); } } void AlterDatabaseStmt::MergeFrom(const AlterDatabaseStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterDatabaseStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.dbname().size() > 0) { _internal_set_dbname(from._internal_dbname()); } } void AlterDatabaseStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterDatabaseStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterDatabaseStmt::CopyFrom(const AlterDatabaseStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterDatabaseStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterDatabaseStmt::IsInitialized() const { return true; } void AlterDatabaseStmt::InternalSwap(AlterDatabaseStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); dbname_.Swap(&other->dbname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterDatabaseStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterDatabaseSetStmt::_Internal { public: static const ::pg_query::VariableSetStmt& setstmt(const AlterDatabaseSetStmt* msg); }; const ::pg_query::VariableSetStmt& AlterDatabaseSetStmt::_Internal::setstmt(const AlterDatabaseSetStmt* msg) { return *msg->setstmt_; } AlterDatabaseSetStmt::AlterDatabaseSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterDatabaseSetStmt) } AlterDatabaseSetStmt::AlterDatabaseSetStmt(const AlterDatabaseSetStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); dbname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_dbname().empty()) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_dbname(), GetArena()); } if (from._internal_has_setstmt()) { setstmt_ = new ::pg_query::VariableSetStmt(*from.setstmt_); } else { setstmt_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.AlterDatabaseSetStmt) } void AlterDatabaseSetStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); dbname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); setstmt_ = nullptr; } AlterDatabaseSetStmt::~AlterDatabaseSetStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterDatabaseSetStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterDatabaseSetStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); dbname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete setstmt_; } void AlterDatabaseSetStmt::ArenaDtor(void* object) { AlterDatabaseSetStmt* _this = reinterpret_cast< AlterDatabaseSetStmt* >(object); (void)_this; } void AlterDatabaseSetStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterDatabaseSetStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterDatabaseSetStmt& AlterDatabaseSetStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterDatabaseSetStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterDatabaseSetStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; dbname_.ClearToEmpty(); if (GetArena() == nullptr && setstmt_ != nullptr) { delete setstmt_; } setstmt_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterDatabaseSetStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string dbname = 1 [json_name = "dbname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_dbname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterDatabaseSetStmt.dbname")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_setstmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterDatabaseSetStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterDatabaseSetStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string dbname = 1 [json_name = "dbname"]; if (this->dbname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_dbname().data(), static_cast(this->_internal_dbname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterDatabaseSetStmt.dbname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_dbname(), target); } // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; if (this->has_setstmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::setstmt(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterDatabaseSetStmt) return target; } size_t AlterDatabaseSetStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterDatabaseSetStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string dbname = 1 [json_name = "dbname"]; if (this->dbname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_dbname()); } // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; if (this->has_setstmt()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *setstmt_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterDatabaseSetStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterDatabaseSetStmt) GOOGLE_DCHECK_NE(&from, this); const AlterDatabaseSetStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterDatabaseSetStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterDatabaseSetStmt) MergeFrom(*source); } } void AlterDatabaseSetStmt::MergeFrom(const AlterDatabaseSetStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterDatabaseSetStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.dbname().size() > 0) { _internal_set_dbname(from._internal_dbname()); } if (from.has_setstmt()) { _internal_mutable_setstmt()->::pg_query::VariableSetStmt::MergeFrom(from._internal_setstmt()); } } void AlterDatabaseSetStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterDatabaseSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterDatabaseSetStmt::CopyFrom(const AlterDatabaseSetStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterDatabaseSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterDatabaseSetStmt::IsInitialized() const { return true; } void AlterDatabaseSetStmt::InternalSwap(AlterDatabaseSetStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); dbname_.Swap(&other->dbname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(setstmt_, other->setstmt_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterDatabaseSetStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterRoleSetStmt::_Internal { public: static const ::pg_query::RoleSpec& role(const AlterRoleSetStmt* msg); static const ::pg_query::VariableSetStmt& setstmt(const AlterRoleSetStmt* msg); }; const ::pg_query::RoleSpec& AlterRoleSetStmt::_Internal::role(const AlterRoleSetStmt* msg) { return *msg->role_; } const ::pg_query::VariableSetStmt& AlterRoleSetStmt::_Internal::setstmt(const AlterRoleSetStmt* msg) { return *msg->setstmt_; } AlterRoleSetStmt::AlterRoleSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterRoleSetStmt) } AlterRoleSetStmt::AlterRoleSetStmt(const AlterRoleSetStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); database_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_database().empty()) { database_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_database(), GetArena()); } if (from._internal_has_role()) { role_ = new ::pg_query::RoleSpec(*from.role_); } else { role_ = nullptr; } if (from._internal_has_setstmt()) { setstmt_ = new ::pg_query::VariableSetStmt(*from.setstmt_); } else { setstmt_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.AlterRoleSetStmt) } void AlterRoleSetStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); database_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&role_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&setstmt_) - reinterpret_cast(&role_)) + sizeof(setstmt_)); } AlterRoleSetStmt::~AlterRoleSetStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterRoleSetStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterRoleSetStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); database_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete role_; if (this != internal_default_instance()) delete setstmt_; } void AlterRoleSetStmt::ArenaDtor(void* object) { AlterRoleSetStmt* _this = reinterpret_cast< AlterRoleSetStmt* >(object); (void)_this; } void AlterRoleSetStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterRoleSetStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterRoleSetStmt& AlterRoleSetStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterRoleSetStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterRoleSetStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; database_.ClearToEmpty(); if (GetArena() == nullptr && role_ != nullptr) { delete role_; } role_ = nullptr; if (GetArena() == nullptr && setstmt_ != nullptr) { delete setstmt_; } setstmt_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterRoleSetStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RoleSpec role = 1 [json_name = "role"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_role(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string database = 2 [json_name = "database"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_database(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterRoleSetStmt.database")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_setstmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterRoleSetStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterRoleSetStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RoleSpec role = 1 [json_name = "role"]; if (this->has_role()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::role(this), target, stream); } // string database = 2 [json_name = "database"]; if (this->database().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_database().data(), static_cast(this->_internal_database().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterRoleSetStmt.database"); target = stream->WriteStringMaybeAliased( 2, this->_internal_database(), target); } // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; if (this->has_setstmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::setstmt(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterRoleSetStmt) return target; } size_t AlterRoleSetStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterRoleSetStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string database = 2 [json_name = "database"]; if (this->database().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_database()); } // .pg_query.RoleSpec role = 1 [json_name = "role"]; if (this->has_role()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *role_); } // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; if (this->has_setstmt()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *setstmt_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterRoleSetStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterRoleSetStmt) GOOGLE_DCHECK_NE(&from, this); const AlterRoleSetStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterRoleSetStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterRoleSetStmt) MergeFrom(*source); } } void AlterRoleSetStmt::MergeFrom(const AlterRoleSetStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterRoleSetStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.database().size() > 0) { _internal_set_database(from._internal_database()); } if (from.has_role()) { _internal_mutable_role()->::pg_query::RoleSpec::MergeFrom(from._internal_role()); } if (from.has_setstmt()) { _internal_mutable_setstmt()->::pg_query::VariableSetStmt::MergeFrom(from._internal_setstmt()); } } void AlterRoleSetStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterRoleSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterRoleSetStmt::CopyFrom(const AlterRoleSetStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterRoleSetStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterRoleSetStmt::IsInitialized() const { return true; } void AlterRoleSetStmt::InternalSwap(AlterRoleSetStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); database_.Swap(&other->database_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, setstmt_) + sizeof(AlterRoleSetStmt::setstmt_) - PROTOBUF_FIELD_OFFSET(AlterRoleSetStmt, role_)>( reinterpret_cast(&role_), reinterpret_cast(&other->role_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterRoleSetStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateConversionStmt::_Internal { public: }; CreateConversionStmt::CreateConversionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), conversion_name_(arena), func_name_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateConversionStmt) } CreateConversionStmt::CreateConversionStmt(const CreateConversionStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), conversion_name_(from.conversion_name_), func_name_(from.func_name_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); for_encoding_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_for_encoding_name().empty()) { for_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_for_encoding_name(), GetArena()); } to_encoding_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_to_encoding_name().empty()) { to_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_to_encoding_name(), GetArena()); } def_ = from.def_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateConversionStmt) } void CreateConversionStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); for_encoding_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); to_encoding_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); def_ = false; } CreateConversionStmt::~CreateConversionStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateConversionStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateConversionStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); for_encoding_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); to_encoding_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreateConversionStmt::ArenaDtor(void* object) { CreateConversionStmt* _this = reinterpret_cast< CreateConversionStmt* >(object); (void)_this; } void CreateConversionStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateConversionStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateConversionStmt& CreateConversionStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateConversionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateConversionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; conversion_name_.Clear(); func_name_.Clear(); for_encoding_name_.ClearToEmpty(); to_encoding_name_.ClearToEmpty(); def_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateConversionStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_conversion_name(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // string for_encoding_name = 2 [json_name = "for_encoding_name"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_for_encoding_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateConversionStmt.for_encoding_name")); CHK_(ptr); } else goto handle_unusual; continue; // string to_encoding_name = 3 [json_name = "to_encoding_name"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_to_encoding_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateConversionStmt.to_encoding_name")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_func_name(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // bool def = 5 [json_name = "def"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { def_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateConversionStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateConversionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; for (unsigned int i = 0, n = static_cast(this->_internal_conversion_name_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_conversion_name(i), target, stream); } // string for_encoding_name = 2 [json_name = "for_encoding_name"]; if (this->for_encoding_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_for_encoding_name().data(), static_cast(this->_internal_for_encoding_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateConversionStmt.for_encoding_name"); target = stream->WriteStringMaybeAliased( 2, this->_internal_for_encoding_name(), target); } // string to_encoding_name = 3 [json_name = "to_encoding_name"]; if (this->to_encoding_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_to_encoding_name().data(), static_cast(this->_internal_to_encoding_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateConversionStmt.to_encoding_name"); target = stream->WriteStringMaybeAliased( 3, this->_internal_to_encoding_name(), target); } // repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; for (unsigned int i = 0, n = static_cast(this->_internal_func_name_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_func_name(i), target, stream); } // bool def = 5 [json_name = "def"]; if (this->def() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_def(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateConversionStmt) return target; } size_t CreateConversionStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateConversionStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; total_size += 1UL * this->_internal_conversion_name_size(); for (const auto& msg : this->conversion_name_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; total_size += 1UL * this->_internal_func_name_size(); for (const auto& msg : this->func_name_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string for_encoding_name = 2 [json_name = "for_encoding_name"]; if (this->for_encoding_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_for_encoding_name()); } // string to_encoding_name = 3 [json_name = "to_encoding_name"]; if (this->to_encoding_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_to_encoding_name()); } // bool def = 5 [json_name = "def"]; if (this->def() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateConversionStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateConversionStmt) GOOGLE_DCHECK_NE(&from, this); const CreateConversionStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateConversionStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateConversionStmt) MergeFrom(*source); } } void CreateConversionStmt::MergeFrom(const CreateConversionStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateConversionStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; conversion_name_.MergeFrom(from.conversion_name_); func_name_.MergeFrom(from.func_name_); if (from.for_encoding_name().size() > 0) { _internal_set_for_encoding_name(from._internal_for_encoding_name()); } if (from.to_encoding_name().size() > 0) { _internal_set_to_encoding_name(from._internal_to_encoding_name()); } if (from.def() != 0) { _internal_set_def(from._internal_def()); } } void CreateConversionStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateConversionStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateConversionStmt::CopyFrom(const CreateConversionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateConversionStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateConversionStmt::IsInitialized() const { return true; } void CreateConversionStmt::InternalSwap(CreateConversionStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); conversion_name_.InternalSwap(&other->conversion_name_); func_name_.InternalSwap(&other->func_name_); for_encoding_name_.Swap(&other->for_encoding_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); to_encoding_name_.Swap(&other->to_encoding_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(def_, other->def_); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateConversionStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateCastStmt::_Internal { public: static const ::pg_query::TypeName& sourcetype(const CreateCastStmt* msg); static const ::pg_query::TypeName& targettype(const CreateCastStmt* msg); static const ::pg_query::ObjectWithArgs& func(const CreateCastStmt* msg); }; const ::pg_query::TypeName& CreateCastStmt::_Internal::sourcetype(const CreateCastStmt* msg) { return *msg->sourcetype_; } const ::pg_query::TypeName& CreateCastStmt::_Internal::targettype(const CreateCastStmt* msg) { return *msg->targettype_; } const ::pg_query::ObjectWithArgs& CreateCastStmt::_Internal::func(const CreateCastStmt* msg) { return *msg->func_; } CreateCastStmt::CreateCastStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateCastStmt) } CreateCastStmt::CreateCastStmt(const CreateCastStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_sourcetype()) { sourcetype_ = new ::pg_query::TypeName(*from.sourcetype_); } else { sourcetype_ = nullptr; } if (from._internal_has_targettype()) { targettype_ = new ::pg_query::TypeName(*from.targettype_); } else { targettype_ = nullptr; } if (from._internal_has_func()) { func_ = new ::pg_query::ObjectWithArgs(*from.func_); } else { func_ = nullptr; } ::memcpy(&context_, &from.context_, static_cast(reinterpret_cast(&inout_) - reinterpret_cast(&context_)) + sizeof(inout_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateCastStmt) } void CreateCastStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&sourcetype_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&inout_) - reinterpret_cast(&sourcetype_)) + sizeof(inout_)); } CreateCastStmt::~CreateCastStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateCastStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateCastStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete sourcetype_; if (this != internal_default_instance()) delete targettype_; if (this != internal_default_instance()) delete func_; } void CreateCastStmt::ArenaDtor(void* object) { CreateCastStmt* _this = reinterpret_cast< CreateCastStmt* >(object); (void)_this; } void CreateCastStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateCastStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateCastStmt& CreateCastStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateCastStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateCastStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && sourcetype_ != nullptr) { delete sourcetype_; } sourcetype_ = nullptr; if (GetArena() == nullptr && targettype_ != nullptr) { delete targettype_; } targettype_ = nullptr; if (GetArena() == nullptr && func_ != nullptr) { delete func_; } func_ = nullptr; ::memset(&context_, 0, static_cast( reinterpret_cast(&inout_) - reinterpret_cast(&context_)) + sizeof(inout_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateCastStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_sourcetype(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_targettype(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_func(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CoercionContext context = 4 [json_name = "context"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_context(static_cast<::pg_query::CoercionContext>(val)); } else goto handle_unusual; continue; // bool inout = 5 [json_name = "inout"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { inout_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateCastStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateCastStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; if (this->has_sourcetype()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::sourcetype(this), target, stream); } // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; if (this->has_targettype()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::targettype(this), target, stream); } // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; if (this->has_func()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::func(this), target, stream); } // .pg_query.CoercionContext context = 4 [json_name = "context"]; if (this->context() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 4, this->_internal_context(), target); } // bool inout = 5 [json_name = "inout"]; if (this->inout() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_inout(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateCastStmt) return target; } size_t CreateCastStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateCastStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; if (this->has_sourcetype()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *sourcetype_); } // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; if (this->has_targettype()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *targettype_); } // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; if (this->has_func()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *func_); } // .pg_query.CoercionContext context = 4 [json_name = "context"]; if (this->context() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_context()); } // bool inout = 5 [json_name = "inout"]; if (this->inout() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateCastStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateCastStmt) GOOGLE_DCHECK_NE(&from, this); const CreateCastStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateCastStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateCastStmt) MergeFrom(*source); } } void CreateCastStmt::MergeFrom(const CreateCastStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateCastStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_sourcetype()) { _internal_mutable_sourcetype()->::pg_query::TypeName::MergeFrom(from._internal_sourcetype()); } if (from.has_targettype()) { _internal_mutable_targettype()->::pg_query::TypeName::MergeFrom(from._internal_targettype()); } if (from.has_func()) { _internal_mutable_func()->::pg_query::ObjectWithArgs::MergeFrom(from._internal_func()); } if (from.context() != 0) { _internal_set_context(from._internal_context()); } if (from.inout() != 0) { _internal_set_inout(from._internal_inout()); } } void CreateCastStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateCastStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateCastStmt::CopyFrom(const CreateCastStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateCastStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateCastStmt::IsInitialized() const { return true; } void CreateCastStmt::InternalSwap(CreateCastStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateCastStmt, inout_) + sizeof(CreateCastStmt::inout_) - PROTOBUF_FIELD_OFFSET(CreateCastStmt, sourcetype_)>( reinterpret_cast(&sourcetype_), reinterpret_cast(&other->sourcetype_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateCastStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateOpClassStmt::_Internal { public: static const ::pg_query::TypeName& datatype(const CreateOpClassStmt* msg); }; const ::pg_query::TypeName& CreateOpClassStmt::_Internal::datatype(const CreateOpClassStmt* msg) { return *msg->datatype_; } CreateOpClassStmt::CreateOpClassStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), opclassname_(arena), opfamilyname_(arena), items_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateOpClassStmt) } CreateOpClassStmt::CreateOpClassStmt(const CreateOpClassStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), opclassname_(from.opclassname_), opfamilyname_(from.opfamilyname_), items_(from.items_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); amname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_amname().empty()) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_amname(), GetArena()); } if (from._internal_has_datatype()) { datatype_ = new ::pg_query::TypeName(*from.datatype_); } else { datatype_ = nullptr; } is_default_ = from.is_default_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateOpClassStmt) } void CreateOpClassStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); amname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&datatype_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&is_default_) - reinterpret_cast(&datatype_)) + sizeof(is_default_)); } CreateOpClassStmt::~CreateOpClassStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateOpClassStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateOpClassStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); amname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete datatype_; } void CreateOpClassStmt::ArenaDtor(void* object) { CreateOpClassStmt* _this = reinterpret_cast< CreateOpClassStmt* >(object); (void)_this; } void CreateOpClassStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateOpClassStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateOpClassStmt& CreateOpClassStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateOpClassStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateOpClassStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; opclassname_.Clear(); opfamilyname_.Clear(); items_.Clear(); amname_.ClearToEmpty(); if (GetArena() == nullptr && datatype_ != nullptr) { delete datatype_; } datatype_ = nullptr; is_default_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateOpClassStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_opclassname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_opfamilyname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // string amname = 3 [json_name = "amname"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_amname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateOpClassStmt.amname")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_datatype(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node items = 5 [json_name = "items"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_items(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // bool is_default = 6 [json_name = "isDefault"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { is_default_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateOpClassStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateOpClassStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; for (unsigned int i = 0, n = static_cast(this->_internal_opclassname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_opclassname(i), target, stream); } // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; for (unsigned int i = 0, n = static_cast(this->_internal_opfamilyname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_opfamilyname(i), target, stream); } // string amname = 3 [json_name = "amname"]; if (this->amname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_amname().data(), static_cast(this->_internal_amname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateOpClassStmt.amname"); target = stream->WriteStringMaybeAliased( 3, this->_internal_amname(), target); } // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; if (this->has_datatype()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::datatype(this), target, stream); } // repeated .pg_query.Node items = 5 [json_name = "items"]; for (unsigned int i = 0, n = static_cast(this->_internal_items_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_items(i), target, stream); } // bool is_default = 6 [json_name = "isDefault"]; if (this->is_default() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_is_default(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateOpClassStmt) return target; } size_t CreateOpClassStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateOpClassStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; total_size += 1UL * this->_internal_opclassname_size(); for (const auto& msg : this->opclassname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; total_size += 1UL * this->_internal_opfamilyname_size(); for (const auto& msg : this->opfamilyname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node items = 5 [json_name = "items"]; total_size += 1UL * this->_internal_items_size(); for (const auto& msg : this->items_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string amname = 3 [json_name = "amname"]; if (this->amname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_amname()); } // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; if (this->has_datatype()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *datatype_); } // bool is_default = 6 [json_name = "isDefault"]; if (this->is_default() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateOpClassStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateOpClassStmt) GOOGLE_DCHECK_NE(&from, this); const CreateOpClassStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateOpClassStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateOpClassStmt) MergeFrom(*source); } } void CreateOpClassStmt::MergeFrom(const CreateOpClassStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateOpClassStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; opclassname_.MergeFrom(from.opclassname_); opfamilyname_.MergeFrom(from.opfamilyname_); items_.MergeFrom(from.items_); if (from.amname().size() > 0) { _internal_set_amname(from._internal_amname()); } if (from.has_datatype()) { _internal_mutable_datatype()->::pg_query::TypeName::MergeFrom(from._internal_datatype()); } if (from.is_default() != 0) { _internal_set_is_default(from._internal_is_default()); } } void CreateOpClassStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateOpClassStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateOpClassStmt::CopyFrom(const CreateOpClassStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateOpClassStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateOpClassStmt::IsInitialized() const { return true; } void CreateOpClassStmt::InternalSwap(CreateOpClassStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); opclassname_.InternalSwap(&other->opclassname_); opfamilyname_.InternalSwap(&other->opfamilyname_); items_.InternalSwap(&other->items_); amname_.Swap(&other->amname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, is_default_) + sizeof(CreateOpClassStmt::is_default_) - PROTOBUF_FIELD_OFFSET(CreateOpClassStmt, datatype_)>( reinterpret_cast(&datatype_), reinterpret_cast(&other->datatype_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateOpClassStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateOpFamilyStmt::_Internal { public: }; CreateOpFamilyStmt::CreateOpFamilyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), opfamilyname_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateOpFamilyStmt) } CreateOpFamilyStmt::CreateOpFamilyStmt(const CreateOpFamilyStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), opfamilyname_(from.opfamilyname_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); amname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_amname().empty()) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_amname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.CreateOpFamilyStmt) } void CreateOpFamilyStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); amname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } CreateOpFamilyStmt::~CreateOpFamilyStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateOpFamilyStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateOpFamilyStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); amname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreateOpFamilyStmt::ArenaDtor(void* object) { CreateOpFamilyStmt* _this = reinterpret_cast< CreateOpFamilyStmt* >(object); (void)_this; } void CreateOpFamilyStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateOpFamilyStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateOpFamilyStmt& CreateOpFamilyStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateOpFamilyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateOpFamilyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; opfamilyname_.Clear(); amname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateOpFamilyStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_opfamilyname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // string amname = 2 [json_name = "amname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_amname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateOpFamilyStmt.amname")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateOpFamilyStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateOpFamilyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; for (unsigned int i = 0, n = static_cast(this->_internal_opfamilyname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_opfamilyname(i), target, stream); } // string amname = 2 [json_name = "amname"]; if (this->amname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_amname().data(), static_cast(this->_internal_amname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateOpFamilyStmt.amname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_amname(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateOpFamilyStmt) return target; } size_t CreateOpFamilyStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateOpFamilyStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; total_size += 1UL * this->_internal_opfamilyname_size(); for (const auto& msg : this->opfamilyname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string amname = 2 [json_name = "amname"]; if (this->amname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_amname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateOpFamilyStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateOpFamilyStmt) GOOGLE_DCHECK_NE(&from, this); const CreateOpFamilyStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateOpFamilyStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateOpFamilyStmt) MergeFrom(*source); } } void CreateOpFamilyStmt::MergeFrom(const CreateOpFamilyStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateOpFamilyStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; opfamilyname_.MergeFrom(from.opfamilyname_); if (from.amname().size() > 0) { _internal_set_amname(from._internal_amname()); } } void CreateOpFamilyStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateOpFamilyStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateOpFamilyStmt::CopyFrom(const CreateOpFamilyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateOpFamilyStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateOpFamilyStmt::IsInitialized() const { return true; } void CreateOpFamilyStmt::InternalSwap(CreateOpFamilyStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); opfamilyname_.InternalSwap(&other->opfamilyname_); amname_.Swap(&other->amname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateOpFamilyStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterOpFamilyStmt::_Internal { public: }; AlterOpFamilyStmt::AlterOpFamilyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), opfamilyname_(arena), items_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterOpFamilyStmt) } AlterOpFamilyStmt::AlterOpFamilyStmt(const AlterOpFamilyStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), opfamilyname_(from.opfamilyname_), items_(from.items_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); amname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_amname().empty()) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_amname(), GetArena()); } is_drop_ = from.is_drop_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterOpFamilyStmt) } void AlterOpFamilyStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); amname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); is_drop_ = false; } AlterOpFamilyStmt::~AlterOpFamilyStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterOpFamilyStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterOpFamilyStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); amname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterOpFamilyStmt::ArenaDtor(void* object) { AlterOpFamilyStmt* _this = reinterpret_cast< AlterOpFamilyStmt* >(object); (void)_this; } void AlterOpFamilyStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterOpFamilyStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterOpFamilyStmt& AlterOpFamilyStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterOpFamilyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterOpFamilyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; opfamilyname_.Clear(); items_.Clear(); amname_.ClearToEmpty(); is_drop_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterOpFamilyStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_opfamilyname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // string amname = 2 [json_name = "amname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_amname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterOpFamilyStmt.amname")); CHK_(ptr); } else goto handle_unusual; continue; // bool is_drop = 3 [json_name = "isDrop"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { is_drop_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node items = 4 [json_name = "items"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_items(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterOpFamilyStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterOpFamilyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; for (unsigned int i = 0, n = static_cast(this->_internal_opfamilyname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_opfamilyname(i), target, stream); } // string amname = 2 [json_name = "amname"]; if (this->amname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_amname().data(), static_cast(this->_internal_amname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterOpFamilyStmt.amname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_amname(), target); } // bool is_drop = 3 [json_name = "isDrop"]; if (this->is_drop() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_is_drop(), target); } // repeated .pg_query.Node items = 4 [json_name = "items"]; for (unsigned int i = 0, n = static_cast(this->_internal_items_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_items(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterOpFamilyStmt) return target; } size_t AlterOpFamilyStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterOpFamilyStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; total_size += 1UL * this->_internal_opfamilyname_size(); for (const auto& msg : this->opfamilyname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node items = 4 [json_name = "items"]; total_size += 1UL * this->_internal_items_size(); for (const auto& msg : this->items_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string amname = 2 [json_name = "amname"]; if (this->amname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_amname()); } // bool is_drop = 3 [json_name = "isDrop"]; if (this->is_drop() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterOpFamilyStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterOpFamilyStmt) GOOGLE_DCHECK_NE(&from, this); const AlterOpFamilyStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterOpFamilyStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterOpFamilyStmt) MergeFrom(*source); } } void AlterOpFamilyStmt::MergeFrom(const AlterOpFamilyStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterOpFamilyStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; opfamilyname_.MergeFrom(from.opfamilyname_); items_.MergeFrom(from.items_); if (from.amname().size() > 0) { _internal_set_amname(from._internal_amname()); } if (from.is_drop() != 0) { _internal_set_is_drop(from._internal_is_drop()); } } void AlterOpFamilyStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterOpFamilyStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterOpFamilyStmt::CopyFrom(const AlterOpFamilyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterOpFamilyStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterOpFamilyStmt::IsInitialized() const { return true; } void AlterOpFamilyStmt::InternalSwap(AlterOpFamilyStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); opfamilyname_.InternalSwap(&other->opfamilyname_); items_.InternalSwap(&other->items_); amname_.Swap(&other->amname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(is_drop_, other->is_drop_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterOpFamilyStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class PrepareStmt::_Internal { public: static const ::pg_query::Node& query(const PrepareStmt* msg); }; const ::pg_query::Node& PrepareStmt::_Internal::query(const PrepareStmt* msg) { return *msg->query_; } PrepareStmt::PrepareStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), argtypes_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PrepareStmt) } PrepareStmt::PrepareStmt(const PrepareStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), argtypes_(from.argtypes_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } if (from._internal_has_query()) { query_ = new ::pg_query::Node(*from.query_); } else { query_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.PrepareStmt) } void PrepareStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); query_ = nullptr; } PrepareStmt::~PrepareStmt() { // @@protoc_insertion_point(destructor:pg_query.PrepareStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void PrepareStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete query_; } void PrepareStmt::ArenaDtor(void* object) { PrepareStmt* _this = reinterpret_cast< PrepareStmt* >(object); (void)_this; } void PrepareStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void PrepareStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const PrepareStmt& PrepareStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void PrepareStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PrepareStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; argtypes_.Clear(); name_.ClearToEmpty(); if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* PrepareStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.PrepareStmt.name")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node argtypes = 2 [json_name = "argtypes"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_argtypes(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node query = 3 [json_name = "query"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_query(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* PrepareStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PrepareStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.PrepareStmt.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } // repeated .pg_query.Node argtypes = 2 [json_name = "argtypes"]; for (unsigned int i = 0, n = static_cast(this->_internal_argtypes_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_argtypes(i), target, stream); } // .pg_query.Node query = 3 [json_name = "query"]; if (this->has_query()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::query(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.PrepareStmt) return target; } size_t PrepareStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.PrepareStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node argtypes = 2 [json_name = "argtypes"]; total_size += 1UL * this->_internal_argtypes_size(); for (const auto& msg : this->argtypes_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node query = 3 [json_name = "query"]; if (this->has_query()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *query_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void PrepareStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.PrepareStmt) GOOGLE_DCHECK_NE(&from, this); const PrepareStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.PrepareStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.PrepareStmt) MergeFrom(*source); } } void PrepareStmt::MergeFrom(const PrepareStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PrepareStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; argtypes_.MergeFrom(from.argtypes_); if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.has_query()) { _internal_mutable_query()->::pg_query::Node::MergeFrom(from._internal_query()); } } void PrepareStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.PrepareStmt) if (&from == this) return; Clear(); MergeFrom(from); } void PrepareStmt::CopyFrom(const PrepareStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PrepareStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool PrepareStmt::IsInitialized() const { return true; } void PrepareStmt::InternalSwap(PrepareStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); argtypes_.InternalSwap(&other->argtypes_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(query_, other->query_); } ::PROTOBUF_NAMESPACE_ID::Metadata PrepareStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ExecuteStmt::_Internal { public: }; ExecuteStmt::ExecuteStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), params_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ExecuteStmt) } ExecuteStmt::ExecuteStmt(const ExecuteStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), params_(from.params_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.ExecuteStmt) } void ExecuteStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } ExecuteStmt::~ExecuteStmt() { // @@protoc_insertion_point(destructor:pg_query.ExecuteStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ExecuteStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void ExecuteStmt::ArenaDtor(void* object) { ExecuteStmt* _this = reinterpret_cast< ExecuteStmt* >(object); (void)_this; } void ExecuteStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ExecuteStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ExecuteStmt& ExecuteStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ExecuteStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ExecuteStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; params_.Clear(); name_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ExecuteStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ExecuteStmt.name")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node params = 2 [json_name = "params"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_params(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ExecuteStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ExecuteStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ExecuteStmt.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } // repeated .pg_query.Node params = 2 [json_name = "params"]; for (unsigned int i = 0, n = static_cast(this->_internal_params_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_params(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ExecuteStmt) return target; } size_t ExecuteStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ExecuteStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node params = 2 [json_name = "params"]; total_size += 1UL * this->_internal_params_size(); for (const auto& msg : this->params_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ExecuteStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ExecuteStmt) GOOGLE_DCHECK_NE(&from, this); const ExecuteStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ExecuteStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ExecuteStmt) MergeFrom(*source); } } void ExecuteStmt::MergeFrom(const ExecuteStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ExecuteStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; params_.MergeFrom(from.params_); if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } } void ExecuteStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ExecuteStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ExecuteStmt::CopyFrom(const ExecuteStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ExecuteStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ExecuteStmt::IsInitialized() const { return true; } void ExecuteStmt::InternalSwap(ExecuteStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); params_.InternalSwap(&other->params_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata ExecuteStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DeallocateStmt::_Internal { public: }; DeallocateStmt::DeallocateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DeallocateStmt) } DeallocateStmt::DeallocateStmt(const DeallocateStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.DeallocateStmt) } void DeallocateStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_DeallocateStmt_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } DeallocateStmt::~DeallocateStmt() { // @@protoc_insertion_point(destructor:pg_query.DeallocateStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DeallocateStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void DeallocateStmt::ArenaDtor(void* object) { DeallocateStmt* _this = reinterpret_cast< DeallocateStmt* >(object); (void)_this; } void DeallocateStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DeallocateStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DeallocateStmt& DeallocateStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_DeallocateStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DeallocateStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DeallocateStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; name_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DeallocateStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.DeallocateStmt.name")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DeallocateStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DeallocateStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.DeallocateStmt.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DeallocateStmt) return target; } size_t DeallocateStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DeallocateStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DeallocateStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DeallocateStmt) GOOGLE_DCHECK_NE(&from, this); const DeallocateStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DeallocateStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DeallocateStmt) MergeFrom(*source); } } void DeallocateStmt::MergeFrom(const DeallocateStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DeallocateStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } } void DeallocateStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DeallocateStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DeallocateStmt::CopyFrom(const DeallocateStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DeallocateStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DeallocateStmt::IsInitialized() const { return true; } void DeallocateStmt::InternalSwap(DeallocateStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata DeallocateStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DeclareCursorStmt::_Internal { public: static const ::pg_query::Node& query(const DeclareCursorStmt* msg); }; const ::pg_query::Node& DeclareCursorStmt::_Internal::query(const DeclareCursorStmt* msg) { return *msg->query_; } DeclareCursorStmt::DeclareCursorStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DeclareCursorStmt) } DeclareCursorStmt::DeclareCursorStmt(const DeclareCursorStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); portalname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_portalname().empty()) { portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_portalname(), GetArena()); } if (from._internal_has_query()) { query_ = new ::pg_query::Node(*from.query_); } else { query_ = nullptr; } options_ = from.options_; // @@protoc_insertion_point(copy_constructor:pg_query.DeclareCursorStmt) } void DeclareCursorStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); portalname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&query_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&options_) - reinterpret_cast(&query_)) + sizeof(options_)); } DeclareCursorStmt::~DeclareCursorStmt() { // @@protoc_insertion_point(destructor:pg_query.DeclareCursorStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DeclareCursorStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); portalname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete query_; } void DeclareCursorStmt::ArenaDtor(void* object) { DeclareCursorStmt* _this = reinterpret_cast< DeclareCursorStmt* >(object); (void)_this; } void DeclareCursorStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DeclareCursorStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DeclareCursorStmt& DeclareCursorStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DeclareCursorStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DeclareCursorStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; portalname_.ClearToEmpty(); if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; options_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DeclareCursorStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string portalname = 1 [json_name = "portalname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_portalname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.DeclareCursorStmt.portalname")); CHK_(ptr); } else goto handle_unusual; continue; // int32 options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { options_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node query = 3 [json_name = "query"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_query(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DeclareCursorStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DeclareCursorStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string portalname = 1 [json_name = "portalname"]; if (this->portalname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_portalname().data(), static_cast(this->_internal_portalname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.DeclareCursorStmt.portalname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_portalname(), target); } // int32 options = 2 [json_name = "options"]; if (this->options() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_options(), target); } // .pg_query.Node query = 3 [json_name = "query"]; if (this->has_query()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::query(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DeclareCursorStmt) return target; } size_t DeclareCursorStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DeclareCursorStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string portalname = 1 [json_name = "portalname"]; if (this->portalname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_portalname()); } // .pg_query.Node query = 3 [json_name = "query"]; if (this->has_query()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *query_); } // int32 options = 2 [json_name = "options"]; if (this->options() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_options()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DeclareCursorStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DeclareCursorStmt) GOOGLE_DCHECK_NE(&from, this); const DeclareCursorStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DeclareCursorStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DeclareCursorStmt) MergeFrom(*source); } } void DeclareCursorStmt::MergeFrom(const DeclareCursorStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DeclareCursorStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.portalname().size() > 0) { _internal_set_portalname(from._internal_portalname()); } if (from.has_query()) { _internal_mutable_query()->::pg_query::Node::MergeFrom(from._internal_query()); } if (from.options() != 0) { _internal_set_options(from._internal_options()); } } void DeclareCursorStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DeclareCursorStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DeclareCursorStmt::CopyFrom(const DeclareCursorStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DeclareCursorStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DeclareCursorStmt::IsInitialized() const { return true; } void DeclareCursorStmt::InternalSwap(DeclareCursorStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); portalname_.Swap(&other->portalname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, options_) + sizeof(DeclareCursorStmt::options_) - PROTOBUF_FIELD_OFFSET(DeclareCursorStmt, query_)>( reinterpret_cast(&query_), reinterpret_cast(&other->query_)); } ::PROTOBUF_NAMESPACE_ID::Metadata DeclareCursorStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateTableSpaceStmt::_Internal { public: static const ::pg_query::RoleSpec& owner(const CreateTableSpaceStmt* msg); }; const ::pg_query::RoleSpec& CreateTableSpaceStmt::_Internal::owner(const CreateTableSpaceStmt* msg) { return *msg->owner_; } CreateTableSpaceStmt::CreateTableSpaceStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateTableSpaceStmt) } CreateTableSpaceStmt::CreateTableSpaceStmt(const CreateTableSpaceStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_tablespacename().empty()) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_tablespacename(), GetArena()); } location_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_location().empty()) { location_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_location(), GetArena()); } if (from._internal_has_owner()) { owner_ = new ::pg_query::RoleSpec(*from.owner_); } else { owner_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.CreateTableSpaceStmt) } void CreateTableSpaceStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); location_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); owner_ = nullptr; } CreateTableSpaceStmt::~CreateTableSpaceStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateTableSpaceStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateTableSpaceStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); tablespacename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); location_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete owner_; } void CreateTableSpaceStmt::ArenaDtor(void* object) { CreateTableSpaceStmt* _this = reinterpret_cast< CreateTableSpaceStmt* >(object); (void)_this; } void CreateTableSpaceStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateTableSpaceStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateTableSpaceStmt& CreateTableSpaceStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateTableSpaceStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateTableSpaceStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); tablespacename_.ClearToEmpty(); location_.ClearToEmpty(); if (GetArena() == nullptr && owner_ != nullptr) { delete owner_; } owner_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateTableSpaceStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string tablespacename = 1 [json_name = "tablespacename"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_tablespacename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateTableSpaceStmt.tablespacename")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_owner(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string location = 3 [json_name = "location"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_location(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateTableSpaceStmt.location")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 4 [json_name = "options"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateTableSpaceStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateTableSpaceStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string tablespacename = 1 [json_name = "tablespacename"]; if (this->tablespacename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_tablespacename().data(), static_cast(this->_internal_tablespacename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateTableSpaceStmt.tablespacename"); target = stream->WriteStringMaybeAliased( 1, this->_internal_tablespacename(), target); } // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; if (this->has_owner()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::owner(this), target, stream); } // string location = 3 [json_name = "location"]; if (this->location().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_location().data(), static_cast(this->_internal_location().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateTableSpaceStmt.location"); target = stream->WriteStringMaybeAliased( 3, this->_internal_location(), target); } // repeated .pg_query.Node options = 4 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateTableSpaceStmt) return target; } size_t CreateTableSpaceStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateTableSpaceStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 4 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string tablespacename = 1 [json_name = "tablespacename"]; if (this->tablespacename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_tablespacename()); } // string location = 3 [json_name = "location"]; if (this->location().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_location()); } // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; if (this->has_owner()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *owner_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateTableSpaceStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateTableSpaceStmt) GOOGLE_DCHECK_NE(&from, this); const CreateTableSpaceStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateTableSpaceStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateTableSpaceStmt) MergeFrom(*source); } } void CreateTableSpaceStmt::MergeFrom(const CreateTableSpaceStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateTableSpaceStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.tablespacename().size() > 0) { _internal_set_tablespacename(from._internal_tablespacename()); } if (from.location().size() > 0) { _internal_set_location(from._internal_location()); } if (from.has_owner()) { _internal_mutable_owner()->::pg_query::RoleSpec::MergeFrom(from._internal_owner()); } } void CreateTableSpaceStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateTableSpaceStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateTableSpaceStmt::CopyFrom(const CreateTableSpaceStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateTableSpaceStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateTableSpaceStmt::IsInitialized() const { return true; } void CreateTableSpaceStmt::InternalSwap(CreateTableSpaceStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); tablespacename_.Swap(&other->tablespacename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); location_.Swap(&other->location_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(owner_, other->owner_); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateTableSpaceStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DropTableSpaceStmt::_Internal { public: }; DropTableSpaceStmt::DropTableSpaceStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropTableSpaceStmt) } DropTableSpaceStmt::DropTableSpaceStmt(const DropTableSpaceStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_tablespacename().empty()) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_tablespacename(), GetArena()); } missing_ok_ = from.missing_ok_; // @@protoc_insertion_point(copy_constructor:pg_query.DropTableSpaceStmt) } void DropTableSpaceStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_DropTableSpaceStmt_protobuf_2fpg_5fquery_2eproto.base); tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); missing_ok_ = false; } DropTableSpaceStmt::~DropTableSpaceStmt() { // @@protoc_insertion_point(destructor:pg_query.DropTableSpaceStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DropTableSpaceStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); tablespacename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void DropTableSpaceStmt::ArenaDtor(void* object) { DropTableSpaceStmt* _this = reinterpret_cast< DropTableSpaceStmt* >(object); (void)_this; } void DropTableSpaceStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DropTableSpaceStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DropTableSpaceStmt& DropTableSpaceStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_DropTableSpaceStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DropTableSpaceStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropTableSpaceStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; tablespacename_.ClearToEmpty(); missing_ok_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DropTableSpaceStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string tablespacename = 1 [json_name = "tablespacename"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_tablespacename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.DropTableSpaceStmt.tablespacename")); CHK_(ptr); } else goto handle_unusual; continue; // bool missing_ok = 2 [json_name = "missing_ok"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DropTableSpaceStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropTableSpaceStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string tablespacename = 1 [json_name = "tablespacename"]; if (this->tablespacename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_tablespacename().data(), static_cast(this->_internal_tablespacename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.DropTableSpaceStmt.tablespacename"); target = stream->WriteStringMaybeAliased( 1, this->_internal_tablespacename(), target); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DropTableSpaceStmt) return target; } size_t DropTableSpaceStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DropTableSpaceStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string tablespacename = 1 [json_name = "tablespacename"]; if (this->tablespacename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_tablespacename()); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DropTableSpaceStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DropTableSpaceStmt) GOOGLE_DCHECK_NE(&from, this); const DropTableSpaceStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DropTableSpaceStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DropTableSpaceStmt) MergeFrom(*source); } } void DropTableSpaceStmt::MergeFrom(const DropTableSpaceStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropTableSpaceStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.tablespacename().size() > 0) { _internal_set_tablespacename(from._internal_tablespacename()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void DropTableSpaceStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DropTableSpaceStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DropTableSpaceStmt::CopyFrom(const DropTableSpaceStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropTableSpaceStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DropTableSpaceStmt::IsInitialized() const { return true; } void DropTableSpaceStmt::InternalSwap(DropTableSpaceStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); tablespacename_.Swap(&other->tablespacename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(missing_ok_, other->missing_ok_); } ::PROTOBUF_NAMESPACE_ID::Metadata DropTableSpaceStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterObjectDependsStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const AlterObjectDependsStmt* msg); static const ::pg_query::Node& object(const AlterObjectDependsStmt* msg); static const ::pg_query::Node& extname(const AlterObjectDependsStmt* msg); }; const ::pg_query::RangeVar& AlterObjectDependsStmt::_Internal::relation(const AlterObjectDependsStmt* msg) { return *msg->relation_; } const ::pg_query::Node& AlterObjectDependsStmt::_Internal::object(const AlterObjectDependsStmt* msg) { return *msg->object_; } const ::pg_query::Node& AlterObjectDependsStmt::_Internal::extname(const AlterObjectDependsStmt* msg) { return *msg->extname_; } AlterObjectDependsStmt::AlterObjectDependsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterObjectDependsStmt) } AlterObjectDependsStmt::AlterObjectDependsStmt(const AlterObjectDependsStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_object()) { object_ = new ::pg_query::Node(*from.object_); } else { object_ = nullptr; } if (from._internal_has_extname()) { extname_ = new ::pg_query::Node(*from.extname_); } else { extname_ = nullptr; } ::memcpy(&object_type_, &from.object_type_, static_cast(reinterpret_cast(&remove_) - reinterpret_cast(&object_type_)) + sizeof(remove_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterObjectDependsStmt) } void AlterObjectDependsStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&remove_) - reinterpret_cast(&relation_)) + sizeof(remove_)); } AlterObjectDependsStmt::~AlterObjectDependsStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterObjectDependsStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterObjectDependsStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete object_; if (this != internal_default_instance()) delete extname_; } void AlterObjectDependsStmt::ArenaDtor(void* object) { AlterObjectDependsStmt* _this = reinterpret_cast< AlterObjectDependsStmt* >(object); (void)_this; } void AlterObjectDependsStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterObjectDependsStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterObjectDependsStmt& AlterObjectDependsStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterObjectDependsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterObjectDependsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; if (GetArena() == nullptr && extname_ != nullptr) { delete extname_; } extname_ = nullptr; ::memset(&object_type_, 0, static_cast( reinterpret_cast(&remove_) - reinterpret_cast(&object_type_)) + sizeof(remove_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterObjectDependsStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_object_type(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node object = 3 [json_name = "object"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_object(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node extname = 4 [json_name = "extname"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_extname(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool remove = 5 [json_name = "remove"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { remove_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterObjectDependsStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterObjectDependsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->object_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_object_type(), target); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::relation(this), target, stream); } // .pg_query.Node object = 3 [json_name = "object"]; if (this->has_object()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::object(this), target, stream); } // .pg_query.Node extname = 4 [json_name = "extname"]; if (this->has_extname()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::extname(this), target, stream); } // bool remove = 5 [json_name = "remove"]; if (this->remove() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_remove(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterObjectDependsStmt) return target; } size_t AlterObjectDependsStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterObjectDependsStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node object = 3 [json_name = "object"]; if (this->has_object()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *object_); } // .pg_query.Node extname = 4 [json_name = "extname"]; if (this->has_extname()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *extname_); } // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->object_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_object_type()); } // bool remove = 5 [json_name = "remove"]; if (this->remove() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterObjectDependsStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterObjectDependsStmt) GOOGLE_DCHECK_NE(&from, this); const AlterObjectDependsStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterObjectDependsStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterObjectDependsStmt) MergeFrom(*source); } } void AlterObjectDependsStmt::MergeFrom(const AlterObjectDependsStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterObjectDependsStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_object()) { _internal_mutable_object()->::pg_query::Node::MergeFrom(from._internal_object()); } if (from.has_extname()) { _internal_mutable_extname()->::pg_query::Node::MergeFrom(from._internal_extname()); } if (from.object_type() != 0) { _internal_set_object_type(from._internal_object_type()); } if (from.remove() != 0) { _internal_set_remove(from._internal_remove()); } } void AlterObjectDependsStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterObjectDependsStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterObjectDependsStmt::CopyFrom(const AlterObjectDependsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterObjectDependsStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterObjectDependsStmt::IsInitialized() const { return true; } void AlterObjectDependsStmt::InternalSwap(AlterObjectDependsStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, remove_) + sizeof(AlterObjectDependsStmt::remove_) - PROTOBUF_FIELD_OFFSET(AlterObjectDependsStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterObjectDependsStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterObjectSchemaStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const AlterObjectSchemaStmt* msg); static const ::pg_query::Node& object(const AlterObjectSchemaStmt* msg); }; const ::pg_query::RangeVar& AlterObjectSchemaStmt::_Internal::relation(const AlterObjectSchemaStmt* msg) { return *msg->relation_; } const ::pg_query::Node& AlterObjectSchemaStmt::_Internal::object(const AlterObjectSchemaStmt* msg) { return *msg->object_; } AlterObjectSchemaStmt::AlterObjectSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterObjectSchemaStmt) } AlterObjectSchemaStmt::AlterObjectSchemaStmt(const AlterObjectSchemaStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); newschema_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_newschema().empty()) { newschema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_newschema(), GetArena()); } if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_object()) { object_ = new ::pg_query::Node(*from.object_); } else { object_ = nullptr; } ::memcpy(&object_type_, &from.object_type_, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&object_type_)) + sizeof(missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterObjectSchemaStmt) } void AlterObjectSchemaStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); newschema_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&relation_)) + sizeof(missing_ok_)); } AlterObjectSchemaStmt::~AlterObjectSchemaStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterObjectSchemaStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterObjectSchemaStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); newschema_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete object_; } void AlterObjectSchemaStmt::ArenaDtor(void* object) { AlterObjectSchemaStmt* _this = reinterpret_cast< AlterObjectSchemaStmt* >(object); (void)_this; } void AlterObjectSchemaStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterObjectSchemaStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterObjectSchemaStmt& AlterObjectSchemaStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterObjectSchemaStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterObjectSchemaStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; newschema_.ClearToEmpty(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; ::memset(&object_type_, 0, static_cast( reinterpret_cast(&missing_ok_) - reinterpret_cast(&object_type_)) + sizeof(missing_ok_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterObjectSchemaStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_object_type(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node object = 3 [json_name = "object"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_object(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string newschema = 4 [json_name = "newschema"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { auto str = _internal_mutable_newschema(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterObjectSchemaStmt.newschema")); CHK_(ptr); } else goto handle_unusual; continue; // bool missing_ok = 5 [json_name = "missing_ok"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterObjectSchemaStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterObjectSchemaStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->object_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_object_type(), target); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::relation(this), target, stream); } // .pg_query.Node object = 3 [json_name = "object"]; if (this->has_object()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::object(this), target, stream); } // string newschema = 4 [json_name = "newschema"]; if (this->newschema().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_newschema().data(), static_cast(this->_internal_newschema().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterObjectSchemaStmt.newschema"); target = stream->WriteStringMaybeAliased( 4, this->_internal_newschema(), target); } // bool missing_ok = 5 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterObjectSchemaStmt) return target; } size_t AlterObjectSchemaStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterObjectSchemaStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string newschema = 4 [json_name = "newschema"]; if (this->newschema().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_newschema()); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node object = 3 [json_name = "object"]; if (this->has_object()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *object_); } // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->object_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_object_type()); } // bool missing_ok = 5 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterObjectSchemaStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterObjectSchemaStmt) GOOGLE_DCHECK_NE(&from, this); const AlterObjectSchemaStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterObjectSchemaStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterObjectSchemaStmt) MergeFrom(*source); } } void AlterObjectSchemaStmt::MergeFrom(const AlterObjectSchemaStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterObjectSchemaStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.newschema().size() > 0) { _internal_set_newschema(from._internal_newschema()); } if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_object()) { _internal_mutable_object()->::pg_query::Node::MergeFrom(from._internal_object()); } if (from.object_type() != 0) { _internal_set_object_type(from._internal_object_type()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void AlterObjectSchemaStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterObjectSchemaStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterObjectSchemaStmt::CopyFrom(const AlterObjectSchemaStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterObjectSchemaStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterObjectSchemaStmt::IsInitialized() const { return true; } void AlterObjectSchemaStmt::InternalSwap(AlterObjectSchemaStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); newschema_.Swap(&other->newschema_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, missing_ok_) + sizeof(AlterObjectSchemaStmt::missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterObjectSchemaStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterObjectSchemaStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterOwnerStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const AlterOwnerStmt* msg); static const ::pg_query::Node& object(const AlterOwnerStmt* msg); static const ::pg_query::RoleSpec& newowner(const AlterOwnerStmt* msg); }; const ::pg_query::RangeVar& AlterOwnerStmt::_Internal::relation(const AlterOwnerStmt* msg) { return *msg->relation_; } const ::pg_query::Node& AlterOwnerStmt::_Internal::object(const AlterOwnerStmt* msg) { return *msg->object_; } const ::pg_query::RoleSpec& AlterOwnerStmt::_Internal::newowner(const AlterOwnerStmt* msg) { return *msg->newowner_; } AlterOwnerStmt::AlterOwnerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterOwnerStmt) } AlterOwnerStmt::AlterOwnerStmt(const AlterOwnerStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_object()) { object_ = new ::pg_query::Node(*from.object_); } else { object_ = nullptr; } if (from._internal_has_newowner()) { newowner_ = new ::pg_query::RoleSpec(*from.newowner_); } else { newowner_ = nullptr; } object_type_ = from.object_type_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterOwnerStmt) } void AlterOwnerStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&object_type_) - reinterpret_cast(&relation_)) + sizeof(object_type_)); } AlterOwnerStmt::~AlterOwnerStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterOwnerStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterOwnerStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete object_; if (this != internal_default_instance()) delete newowner_; } void AlterOwnerStmt::ArenaDtor(void* object) { AlterOwnerStmt* _this = reinterpret_cast< AlterOwnerStmt* >(object); (void)_this; } void AlterOwnerStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterOwnerStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterOwnerStmt& AlterOwnerStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterOwnerStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterOwnerStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; if (GetArena() == nullptr && newowner_ != nullptr) { delete newowner_; } newowner_ = nullptr; object_type_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterOwnerStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_object_type(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node object = 3 [json_name = "object"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_object(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_newowner(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterOwnerStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterOwnerStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->object_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_object_type(), target); } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::relation(this), target, stream); } // .pg_query.Node object = 3 [json_name = "object"]; if (this->has_object()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::object(this), target, stream); } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; if (this->has_newowner()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::newowner(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterOwnerStmt) return target; } size_t AlterOwnerStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterOwnerStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node object = 3 [json_name = "object"]; if (this->has_object()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *object_); } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; if (this->has_newowner()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *newowner_); } // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; if (this->object_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_object_type()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterOwnerStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterOwnerStmt) GOOGLE_DCHECK_NE(&from, this); const AlterOwnerStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterOwnerStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterOwnerStmt) MergeFrom(*source); } } void AlterOwnerStmt::MergeFrom(const AlterOwnerStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterOwnerStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.has_object()) { _internal_mutable_object()->::pg_query::Node::MergeFrom(from._internal_object()); } if (from.has_newowner()) { _internal_mutable_newowner()->::pg_query::RoleSpec::MergeFrom(from._internal_newowner()); } if (from.object_type() != 0) { _internal_set_object_type(from._internal_object_type()); } } void AlterOwnerStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterOwnerStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterOwnerStmt::CopyFrom(const AlterOwnerStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterOwnerStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterOwnerStmt::IsInitialized() const { return true; } void AlterOwnerStmt::InternalSwap(AlterOwnerStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, object_type_) + sizeof(AlterOwnerStmt::object_type_) - PROTOBUF_FIELD_OFFSET(AlterOwnerStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterOwnerStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterOperatorStmt::_Internal { public: static const ::pg_query::ObjectWithArgs& opername(const AlterOperatorStmt* msg); }; const ::pg_query::ObjectWithArgs& AlterOperatorStmt::_Internal::opername(const AlterOperatorStmt* msg) { return *msg->opername_; } AlterOperatorStmt::AlterOperatorStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterOperatorStmt) } AlterOperatorStmt::AlterOperatorStmt(const AlterOperatorStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_opername()) { opername_ = new ::pg_query::ObjectWithArgs(*from.opername_); } else { opername_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.AlterOperatorStmt) } void AlterOperatorStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); opername_ = nullptr; } AlterOperatorStmt::~AlterOperatorStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterOperatorStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterOperatorStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete opername_; } void AlterOperatorStmt::ArenaDtor(void* object) { AlterOperatorStmt* _this = reinterpret_cast< AlterOperatorStmt* >(object); (void)_this; } void AlterOperatorStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterOperatorStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterOperatorStmt& AlterOperatorStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterOperatorStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterOperatorStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); if (GetArena() == nullptr && opername_ != nullptr) { delete opername_; } opername_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterOperatorStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_opername(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterOperatorStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterOperatorStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; if (this->has_opername()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::opername(this), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterOperatorStmt) return target; } size_t AlterOperatorStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterOperatorStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; if (this->has_opername()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *opername_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterOperatorStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterOperatorStmt) GOOGLE_DCHECK_NE(&from, this); const AlterOperatorStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterOperatorStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterOperatorStmt) MergeFrom(*source); } } void AlterOperatorStmt::MergeFrom(const AlterOperatorStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterOperatorStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.has_opername()) { _internal_mutable_opername()->::pg_query::ObjectWithArgs::MergeFrom(from._internal_opername()); } } void AlterOperatorStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterOperatorStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterOperatorStmt::CopyFrom(const AlterOperatorStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterOperatorStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterOperatorStmt::IsInitialized() const { return true; } void AlterOperatorStmt::InternalSwap(AlterOperatorStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); swap(opername_, other->opername_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterOperatorStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterTypeStmt::_Internal { public: }; AlterTypeStmt::AlterTypeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), type_name_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTypeStmt) } AlterTypeStmt::AlterTypeStmt(const AlterTypeStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), type_name_(from.type_name_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTypeStmt) } void AlterTypeStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); } AlterTypeStmt::~AlterTypeStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTypeStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterTypeStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void AlterTypeStmt::ArenaDtor(void* object) { AlterTypeStmt* _this = reinterpret_cast< AlterTypeStmt* >(object); (void)_this; } void AlterTypeStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterTypeStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterTypeStmt& AlterTypeStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterTypeStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTypeStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; type_name_.Clear(); options_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterTypeStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_type_name(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterTypeStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTypeStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; for (unsigned int i = 0, n = static_cast(this->_internal_type_name_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_type_name(i), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterTypeStmt) return target; } size_t AlterTypeStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterTypeStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; total_size += 1UL * this->_internal_type_name_size(); for (const auto& msg : this->type_name_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterTypeStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterTypeStmt) GOOGLE_DCHECK_NE(&from, this); const AlterTypeStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterTypeStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterTypeStmt) MergeFrom(*source); } } void AlterTypeStmt::MergeFrom(const AlterTypeStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTypeStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; type_name_.MergeFrom(from.type_name_); options_.MergeFrom(from.options_); } void AlterTypeStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterTypeStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterTypeStmt::CopyFrom(const AlterTypeStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTypeStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterTypeStmt::IsInitialized() const { return true; } void AlterTypeStmt::InternalSwap(AlterTypeStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); type_name_.InternalSwap(&other->type_name_); options_.InternalSwap(&other->options_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterTypeStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DropOwnedStmt::_Internal { public: }; DropOwnedStmt::DropOwnedStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), roles_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropOwnedStmt) } DropOwnedStmt::DropOwnedStmt(const DropOwnedStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), roles_(from.roles_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); behavior_ = from.behavior_; // @@protoc_insertion_point(copy_constructor:pg_query.DropOwnedStmt) } void DropOwnedStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); behavior_ = 0; } DropOwnedStmt::~DropOwnedStmt() { // @@protoc_insertion_point(destructor:pg_query.DropOwnedStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DropOwnedStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void DropOwnedStmt::ArenaDtor(void* object) { DropOwnedStmt* _this = reinterpret_cast< DropOwnedStmt* >(object); (void)_this; } void DropOwnedStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DropOwnedStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DropOwnedStmt& DropOwnedStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DropOwnedStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropOwnedStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; roles_.Clear(); behavior_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DropOwnedStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node roles = 1 [json_name = "roles"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_roles(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_behavior(static_cast<::pg_query::DropBehavior>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DropOwnedStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropOwnedStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; for (unsigned int i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_roles(i), target, stream); } // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; if (this->behavior() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_behavior(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DropOwnedStmt) return target; } size_t DropOwnedStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DropOwnedStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; total_size += 1UL * this->_internal_roles_size(); for (const auto& msg : this->roles_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; if (this->behavior() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_behavior()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DropOwnedStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DropOwnedStmt) GOOGLE_DCHECK_NE(&from, this); const DropOwnedStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DropOwnedStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DropOwnedStmt) MergeFrom(*source); } } void DropOwnedStmt::MergeFrom(const DropOwnedStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropOwnedStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; roles_.MergeFrom(from.roles_); if (from.behavior() != 0) { _internal_set_behavior(from._internal_behavior()); } } void DropOwnedStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DropOwnedStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DropOwnedStmt::CopyFrom(const DropOwnedStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropOwnedStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DropOwnedStmt::IsInitialized() const { return true; } void DropOwnedStmt::InternalSwap(DropOwnedStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); roles_.InternalSwap(&other->roles_); swap(behavior_, other->behavior_); } ::PROTOBUF_NAMESPACE_ID::Metadata DropOwnedStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ReassignOwnedStmt::_Internal { public: static const ::pg_query::RoleSpec& newrole(const ReassignOwnedStmt* msg); }; const ::pg_query::RoleSpec& ReassignOwnedStmt::_Internal::newrole(const ReassignOwnedStmt* msg) { return *msg->newrole_; } ReassignOwnedStmt::ReassignOwnedStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), roles_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ReassignOwnedStmt) } ReassignOwnedStmt::ReassignOwnedStmt(const ReassignOwnedStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), roles_(from.roles_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_newrole()) { newrole_ = new ::pg_query::RoleSpec(*from.newrole_); } else { newrole_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.ReassignOwnedStmt) } void ReassignOwnedStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); newrole_ = nullptr; } ReassignOwnedStmt::~ReassignOwnedStmt() { // @@protoc_insertion_point(destructor:pg_query.ReassignOwnedStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ReassignOwnedStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete newrole_; } void ReassignOwnedStmt::ArenaDtor(void* object) { ReassignOwnedStmt* _this = reinterpret_cast< ReassignOwnedStmt* >(object); (void)_this; } void ReassignOwnedStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ReassignOwnedStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ReassignOwnedStmt& ReassignOwnedStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ReassignOwnedStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ReassignOwnedStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; roles_.Clear(); if (GetArena() == nullptr && newrole_ != nullptr) { delete newrole_; } newrole_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ReassignOwnedStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node roles = 1 [json_name = "roles"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_roles(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_newrole(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ReassignOwnedStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ReassignOwnedStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; for (unsigned int i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_roles(i), target, stream); } // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; if (this->has_newrole()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::newrole(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ReassignOwnedStmt) return target; } size_t ReassignOwnedStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ReassignOwnedStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; total_size += 1UL * this->_internal_roles_size(); for (const auto& msg : this->roles_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; if (this->has_newrole()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *newrole_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ReassignOwnedStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ReassignOwnedStmt) GOOGLE_DCHECK_NE(&from, this); const ReassignOwnedStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ReassignOwnedStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ReassignOwnedStmt) MergeFrom(*source); } } void ReassignOwnedStmt::MergeFrom(const ReassignOwnedStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ReassignOwnedStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; roles_.MergeFrom(from.roles_); if (from.has_newrole()) { _internal_mutable_newrole()->::pg_query::RoleSpec::MergeFrom(from._internal_newrole()); } } void ReassignOwnedStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ReassignOwnedStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ReassignOwnedStmt::CopyFrom(const ReassignOwnedStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ReassignOwnedStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ReassignOwnedStmt::IsInitialized() const { return true; } void ReassignOwnedStmt::InternalSwap(ReassignOwnedStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); roles_.InternalSwap(&other->roles_); swap(newrole_, other->newrole_); } ::PROTOBUF_NAMESPACE_ID::Metadata ReassignOwnedStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CompositeTypeStmt::_Internal { public: static const ::pg_query::RangeVar& typevar(const CompositeTypeStmt* msg); }; const ::pg_query::RangeVar& CompositeTypeStmt::_Internal::typevar(const CompositeTypeStmt* msg) { return *msg->typevar_; } CompositeTypeStmt::CompositeTypeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), coldeflist_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CompositeTypeStmt) } CompositeTypeStmt::CompositeTypeStmt(const CompositeTypeStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), coldeflist_(from.coldeflist_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_typevar()) { typevar_ = new ::pg_query::RangeVar(*from.typevar_); } else { typevar_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.CompositeTypeStmt) } void CompositeTypeStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); typevar_ = nullptr; } CompositeTypeStmt::~CompositeTypeStmt() { // @@protoc_insertion_point(destructor:pg_query.CompositeTypeStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CompositeTypeStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete typevar_; } void CompositeTypeStmt::ArenaDtor(void* object) { CompositeTypeStmt* _this = reinterpret_cast< CompositeTypeStmt* >(object); (void)_this; } void CompositeTypeStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CompositeTypeStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CompositeTypeStmt& CompositeTypeStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CompositeTypeStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CompositeTypeStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; coldeflist_.Clear(); if (GetArena() == nullptr && typevar_ != nullptr) { delete typevar_; } typevar_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CompositeTypeStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_typevar(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_coldeflist(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CompositeTypeStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CompositeTypeStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; if (this->has_typevar()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::typevar(this), target, stream); } // repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; for (unsigned int i = 0, n = static_cast(this->_internal_coldeflist_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_coldeflist(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CompositeTypeStmt) return target; } size_t CompositeTypeStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CompositeTypeStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; total_size += 1UL * this->_internal_coldeflist_size(); for (const auto& msg : this->coldeflist_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; if (this->has_typevar()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *typevar_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CompositeTypeStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CompositeTypeStmt) GOOGLE_DCHECK_NE(&from, this); const CompositeTypeStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CompositeTypeStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CompositeTypeStmt) MergeFrom(*source); } } void CompositeTypeStmt::MergeFrom(const CompositeTypeStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CompositeTypeStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; coldeflist_.MergeFrom(from.coldeflist_); if (from.has_typevar()) { _internal_mutable_typevar()->::pg_query::RangeVar::MergeFrom(from._internal_typevar()); } } void CompositeTypeStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CompositeTypeStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CompositeTypeStmt::CopyFrom(const CompositeTypeStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CompositeTypeStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CompositeTypeStmt::IsInitialized() const { return true; } void CompositeTypeStmt::InternalSwap(CompositeTypeStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); coldeflist_.InternalSwap(&other->coldeflist_); swap(typevar_, other->typevar_); } ::PROTOBUF_NAMESPACE_ID::Metadata CompositeTypeStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateEnumStmt::_Internal { public: }; CreateEnumStmt::CreateEnumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), type_name_(arena), vals_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateEnumStmt) } CreateEnumStmt::CreateEnumStmt(const CreateEnumStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), type_name_(from.type_name_), vals_(from.vals_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.CreateEnumStmt) } void CreateEnumStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); } CreateEnumStmt::~CreateEnumStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateEnumStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateEnumStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void CreateEnumStmt::ArenaDtor(void* object) { CreateEnumStmt* _this = reinterpret_cast< CreateEnumStmt* >(object); (void)_this; } void CreateEnumStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateEnumStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateEnumStmt& CreateEnumStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateEnumStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateEnumStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; type_name_.Clear(); vals_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateEnumStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_type_name(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node vals = 2 [json_name = "vals"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_vals(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateEnumStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateEnumStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; for (unsigned int i = 0, n = static_cast(this->_internal_type_name_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_type_name(i), target, stream); } // repeated .pg_query.Node vals = 2 [json_name = "vals"]; for (unsigned int i = 0, n = static_cast(this->_internal_vals_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_vals(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateEnumStmt) return target; } size_t CreateEnumStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateEnumStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; total_size += 1UL * this->_internal_type_name_size(); for (const auto& msg : this->type_name_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node vals = 2 [json_name = "vals"]; total_size += 1UL * this->_internal_vals_size(); for (const auto& msg : this->vals_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateEnumStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateEnumStmt) GOOGLE_DCHECK_NE(&from, this); const CreateEnumStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateEnumStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateEnumStmt) MergeFrom(*source); } } void CreateEnumStmt::MergeFrom(const CreateEnumStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateEnumStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; type_name_.MergeFrom(from.type_name_); vals_.MergeFrom(from.vals_); } void CreateEnumStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateEnumStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateEnumStmt::CopyFrom(const CreateEnumStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateEnumStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateEnumStmt::IsInitialized() const { return true; } void CreateEnumStmt::InternalSwap(CreateEnumStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); type_name_.InternalSwap(&other->type_name_); vals_.InternalSwap(&other->vals_); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateEnumStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateRangeStmt::_Internal { public: }; CreateRangeStmt::CreateRangeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), type_name_(arena), params_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateRangeStmt) } CreateRangeStmt::CreateRangeStmt(const CreateRangeStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), type_name_(from.type_name_), params_(from.params_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.CreateRangeStmt) } void CreateRangeStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); } CreateRangeStmt::~CreateRangeStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateRangeStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateRangeStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void CreateRangeStmt::ArenaDtor(void* object) { CreateRangeStmt* _this = reinterpret_cast< CreateRangeStmt* >(object); (void)_this; } void CreateRangeStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateRangeStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateRangeStmt& CreateRangeStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateRangeStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateRangeStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; type_name_.Clear(); params_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateRangeStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_type_name(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node params = 2 [json_name = "params"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_params(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateRangeStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateRangeStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; for (unsigned int i = 0, n = static_cast(this->_internal_type_name_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_type_name(i), target, stream); } // repeated .pg_query.Node params = 2 [json_name = "params"]; for (unsigned int i = 0, n = static_cast(this->_internal_params_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_params(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateRangeStmt) return target; } size_t CreateRangeStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateRangeStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; total_size += 1UL * this->_internal_type_name_size(); for (const auto& msg : this->type_name_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node params = 2 [json_name = "params"]; total_size += 1UL * this->_internal_params_size(); for (const auto& msg : this->params_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateRangeStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateRangeStmt) GOOGLE_DCHECK_NE(&from, this); const CreateRangeStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateRangeStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateRangeStmt) MergeFrom(*source); } } void CreateRangeStmt::MergeFrom(const CreateRangeStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateRangeStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; type_name_.MergeFrom(from.type_name_); params_.MergeFrom(from.params_); } void CreateRangeStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateRangeStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateRangeStmt::CopyFrom(const CreateRangeStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateRangeStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateRangeStmt::IsInitialized() const { return true; } void CreateRangeStmt::InternalSwap(CreateRangeStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); type_name_.InternalSwap(&other->type_name_); params_.InternalSwap(&other->params_); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateRangeStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterEnumStmt::_Internal { public: }; AlterEnumStmt::AlterEnumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), type_name_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterEnumStmt) } AlterEnumStmt::AlterEnumStmt(const AlterEnumStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), type_name_(from.type_name_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); old_val_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_old_val().empty()) { old_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_old_val(), GetArena()); } new_val_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_new_val().empty()) { new_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_new_val(), GetArena()); } new_val_neighbor_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_new_val_neighbor().empty()) { new_val_neighbor_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_new_val_neighbor(), GetArena()); } ::memcpy(&new_val_is_after_, &from.new_val_is_after_, static_cast(reinterpret_cast(&skip_if_new_val_exists_) - reinterpret_cast(&new_val_is_after_)) + sizeof(skip_if_new_val_exists_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterEnumStmt) } void AlterEnumStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); old_val_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); new_val_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); new_val_neighbor_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&new_val_is_after_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&skip_if_new_val_exists_) - reinterpret_cast(&new_val_is_after_)) + sizeof(skip_if_new_val_exists_)); } AlterEnumStmt::~AlterEnumStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterEnumStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterEnumStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); old_val_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); new_val_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); new_val_neighbor_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterEnumStmt::ArenaDtor(void* object) { AlterEnumStmt* _this = reinterpret_cast< AlterEnumStmt* >(object); (void)_this; } void AlterEnumStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterEnumStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterEnumStmt& AlterEnumStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterEnumStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterEnumStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; type_name_.Clear(); old_val_.ClearToEmpty(); new_val_.ClearToEmpty(); new_val_neighbor_.ClearToEmpty(); ::memset(&new_val_is_after_, 0, static_cast( reinterpret_cast(&skip_if_new_val_exists_) - reinterpret_cast(&new_val_is_after_)) + sizeof(skip_if_new_val_exists_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterEnumStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_type_name(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // string old_val = 2 [json_name = "oldVal"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_old_val(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterEnumStmt.old_val")); CHK_(ptr); } else goto handle_unusual; continue; // string new_val = 3 [json_name = "newVal"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_new_val(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterEnumStmt.new_val")); CHK_(ptr); } else goto handle_unusual; continue; // string new_val_neighbor = 4 [json_name = "newValNeighbor"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { auto str = _internal_mutable_new_val_neighbor(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterEnumStmt.new_val_neighbor")); CHK_(ptr); } else goto handle_unusual; continue; // bool new_val_is_after = 5 [json_name = "newValIsAfter"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { new_val_is_after_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { skip_if_new_val_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterEnumStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterEnumStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; for (unsigned int i = 0, n = static_cast(this->_internal_type_name_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_type_name(i), target, stream); } // string old_val = 2 [json_name = "oldVal"]; if (this->old_val().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_old_val().data(), static_cast(this->_internal_old_val().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterEnumStmt.old_val"); target = stream->WriteStringMaybeAliased( 2, this->_internal_old_val(), target); } // string new_val = 3 [json_name = "newVal"]; if (this->new_val().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_new_val().data(), static_cast(this->_internal_new_val().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterEnumStmt.new_val"); target = stream->WriteStringMaybeAliased( 3, this->_internal_new_val(), target); } // string new_val_neighbor = 4 [json_name = "newValNeighbor"]; if (this->new_val_neighbor().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_new_val_neighbor().data(), static_cast(this->_internal_new_val_neighbor().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterEnumStmt.new_val_neighbor"); target = stream->WriteStringMaybeAliased( 4, this->_internal_new_val_neighbor(), target); } // bool new_val_is_after = 5 [json_name = "newValIsAfter"]; if (this->new_val_is_after() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_new_val_is_after(), target); } // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; if (this->skip_if_new_val_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_skip_if_new_val_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterEnumStmt) return target; } size_t AlterEnumStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterEnumStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; total_size += 1UL * this->_internal_type_name_size(); for (const auto& msg : this->type_name_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string old_val = 2 [json_name = "oldVal"]; if (this->old_val().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_old_val()); } // string new_val = 3 [json_name = "newVal"]; if (this->new_val().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_new_val()); } // string new_val_neighbor = 4 [json_name = "newValNeighbor"]; if (this->new_val_neighbor().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_new_val_neighbor()); } // bool new_val_is_after = 5 [json_name = "newValIsAfter"]; if (this->new_val_is_after() != 0) { total_size += 1 + 1; } // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; if (this->skip_if_new_val_exists() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterEnumStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterEnumStmt) GOOGLE_DCHECK_NE(&from, this); const AlterEnumStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterEnumStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterEnumStmt) MergeFrom(*source); } } void AlterEnumStmt::MergeFrom(const AlterEnumStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterEnumStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; type_name_.MergeFrom(from.type_name_); if (from.old_val().size() > 0) { _internal_set_old_val(from._internal_old_val()); } if (from.new_val().size() > 0) { _internal_set_new_val(from._internal_new_val()); } if (from.new_val_neighbor().size() > 0) { _internal_set_new_val_neighbor(from._internal_new_val_neighbor()); } if (from.new_val_is_after() != 0) { _internal_set_new_val_is_after(from._internal_new_val_is_after()); } if (from.skip_if_new_val_exists() != 0) { _internal_set_skip_if_new_val_exists(from._internal_skip_if_new_val_exists()); } } void AlterEnumStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterEnumStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterEnumStmt::CopyFrom(const AlterEnumStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterEnumStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterEnumStmt::IsInitialized() const { return true; } void AlterEnumStmt::InternalSwap(AlterEnumStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); type_name_.InternalSwap(&other->type_name_); old_val_.Swap(&other->old_val_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); new_val_.Swap(&other->new_val_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); new_val_neighbor_.Swap(&other->new_val_neighbor_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterEnumStmt, skip_if_new_val_exists_) + sizeof(AlterEnumStmt::skip_if_new_val_exists_) - PROTOBUF_FIELD_OFFSET(AlterEnumStmt, new_val_is_after_)>( reinterpret_cast(&new_val_is_after_), reinterpret_cast(&other->new_val_is_after_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterEnumStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterTSDictionaryStmt::_Internal { public: }; AlterTSDictionaryStmt::AlterTSDictionaryStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), dictname_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTSDictionaryStmt) } AlterTSDictionaryStmt::AlterTSDictionaryStmt(const AlterTSDictionaryStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), dictname_(from.dictname_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTSDictionaryStmt) } void AlterTSDictionaryStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); } AlterTSDictionaryStmt::~AlterTSDictionaryStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTSDictionaryStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterTSDictionaryStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void AlterTSDictionaryStmt::ArenaDtor(void* object) { AlterTSDictionaryStmt* _this = reinterpret_cast< AlterTSDictionaryStmt* >(object); (void)_this; } void AlterTSDictionaryStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterTSDictionaryStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterTSDictionaryStmt& AlterTSDictionaryStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterTSDictionaryStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTSDictionaryStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; dictname_.Clear(); options_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterTSDictionaryStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_dictname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterTSDictionaryStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTSDictionaryStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; for (unsigned int i = 0, n = static_cast(this->_internal_dictname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_dictname(i), target, stream); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterTSDictionaryStmt) return target; } size_t AlterTSDictionaryStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterTSDictionaryStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; total_size += 1UL * this->_internal_dictname_size(); for (const auto& msg : this->dictname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterTSDictionaryStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterTSDictionaryStmt) GOOGLE_DCHECK_NE(&from, this); const AlterTSDictionaryStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterTSDictionaryStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterTSDictionaryStmt) MergeFrom(*source); } } void AlterTSDictionaryStmt::MergeFrom(const AlterTSDictionaryStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTSDictionaryStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; dictname_.MergeFrom(from.dictname_); options_.MergeFrom(from.options_); } void AlterTSDictionaryStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterTSDictionaryStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterTSDictionaryStmt::CopyFrom(const AlterTSDictionaryStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTSDictionaryStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterTSDictionaryStmt::IsInitialized() const { return true; } void AlterTSDictionaryStmt::InternalSwap(AlterTSDictionaryStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); dictname_.InternalSwap(&other->dictname_); options_.InternalSwap(&other->options_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterTSDictionaryStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterTSConfigurationStmt::_Internal { public: }; AlterTSConfigurationStmt::AlterTSConfigurationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), cfgname_(arena), tokentype_(arena), dicts_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTSConfigurationStmt) } AlterTSConfigurationStmt::AlterTSConfigurationStmt(const AlterTSConfigurationStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), cfgname_(from.cfgname_), tokentype_(from.tokentype_), dicts_(from.dicts_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&kind_, &from.kind_, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&kind_)) + sizeof(missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTSConfigurationStmt) } void AlterTSConfigurationStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&kind_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&kind_)) + sizeof(missing_ok_)); } AlterTSConfigurationStmt::~AlterTSConfigurationStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTSConfigurationStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterTSConfigurationStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void AlterTSConfigurationStmt::ArenaDtor(void* object) { AlterTSConfigurationStmt* _this = reinterpret_cast< AlterTSConfigurationStmt* >(object); (void)_this; } void AlterTSConfigurationStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterTSConfigurationStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterTSConfigurationStmt& AlterTSConfigurationStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterTSConfigurationStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTSConfigurationStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cfgname_.Clear(); tokentype_.Clear(); dicts_.Clear(); ::memset(&kind_, 0, static_cast( reinterpret_cast(&missing_ok_) - reinterpret_cast(&kind_)) + sizeof(missing_ok_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterTSConfigurationStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_kind(static_cast<::pg_query::AlterTSConfigType>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_cfgname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_tokentype(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_dicts(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // bool override = 5 [json_name = "override"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { override_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool replace = 6 [json_name = "replace"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { replace_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool missing_ok = 7 [json_name = "missing_ok"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterTSConfigurationStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTSConfigurationStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; if (this->kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; for (unsigned int i = 0, n = static_cast(this->_internal_cfgname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_cfgname(i), target, stream); } // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; for (unsigned int i = 0, n = static_cast(this->_internal_tokentype_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_tokentype(i), target, stream); } // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; for (unsigned int i = 0, n = static_cast(this->_internal_dicts_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_dicts(i), target, stream); } // bool override = 5 [json_name = "override"]; if (this->override() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_override(), target); } // bool replace = 6 [json_name = "replace"]; if (this->replace() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_replace(), target); } // bool missing_ok = 7 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(7, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterTSConfigurationStmt) return target; } size_t AlterTSConfigurationStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterTSConfigurationStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; total_size += 1UL * this->_internal_cfgname_size(); for (const auto& msg : this->cfgname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; total_size += 1UL * this->_internal_tokentype_size(); for (const auto& msg : this->tokentype_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; total_size += 1UL * this->_internal_dicts_size(); for (const auto& msg : this->dicts_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; if (this->kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind()); } // bool override = 5 [json_name = "override"]; if (this->override() != 0) { total_size += 1 + 1; } // bool replace = 6 [json_name = "replace"]; if (this->replace() != 0) { total_size += 1 + 1; } // bool missing_ok = 7 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterTSConfigurationStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterTSConfigurationStmt) GOOGLE_DCHECK_NE(&from, this); const AlterTSConfigurationStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterTSConfigurationStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterTSConfigurationStmt) MergeFrom(*source); } } void AlterTSConfigurationStmt::MergeFrom(const AlterTSConfigurationStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTSConfigurationStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; cfgname_.MergeFrom(from.cfgname_); tokentype_.MergeFrom(from.tokentype_); dicts_.MergeFrom(from.dicts_); if (from.kind() != 0) { _internal_set_kind(from._internal_kind()); } if (from.override() != 0) { _internal_set_override(from._internal_override()); } if (from.replace() != 0) { _internal_set_replace(from._internal_replace()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void AlterTSConfigurationStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterTSConfigurationStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterTSConfigurationStmt::CopyFrom(const AlterTSConfigurationStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTSConfigurationStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterTSConfigurationStmt::IsInitialized() const { return true; } void AlterTSConfigurationStmt::InternalSwap(AlterTSConfigurationStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); cfgname_.InternalSwap(&other->cfgname_); tokentype_.InternalSwap(&other->tokentype_); dicts_.InternalSwap(&other->dicts_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, missing_ok_) + sizeof(AlterTSConfigurationStmt::missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterTSConfigurationStmt, kind_)>( reinterpret_cast(&kind_), reinterpret_cast(&other->kind_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterTSConfigurationStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateFdwStmt::_Internal { public: }; CreateFdwStmt::CreateFdwStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), func_options_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateFdwStmt) } CreateFdwStmt::CreateFdwStmt(const CreateFdwStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), func_options_(from.func_options_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); fdwname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_fdwname().empty()) { fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_fdwname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.CreateFdwStmt) } void CreateFdwStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); fdwname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } CreateFdwStmt::~CreateFdwStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateFdwStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateFdwStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); fdwname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreateFdwStmt::ArenaDtor(void* object) { CreateFdwStmt* _this = reinterpret_cast< CreateFdwStmt* >(object); (void)_this; } void CreateFdwStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateFdwStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateFdwStmt& CreateFdwStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateFdwStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateFdwStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; func_options_.Clear(); options_.Clear(); fdwname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateFdwStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string fdwname = 1 [json_name = "fdwname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_fdwname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateFdwStmt.fdwname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_func_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 3 [json_name = "options"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateFdwStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateFdwStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string fdwname = 1 [json_name = "fdwname"]; if (this->fdwname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_fdwname().data(), static_cast(this->_internal_fdwname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateFdwStmt.fdwname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_fdwname(), target); } // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; for (unsigned int i = 0, n = static_cast(this->_internal_func_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_func_options(i), target, stream); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateFdwStmt) return target; } size_t CreateFdwStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateFdwStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; total_size += 1UL * this->_internal_func_options_size(); for (const auto& msg : this->func_options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 3 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string fdwname = 1 [json_name = "fdwname"]; if (this->fdwname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_fdwname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateFdwStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateFdwStmt) GOOGLE_DCHECK_NE(&from, this); const CreateFdwStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateFdwStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateFdwStmt) MergeFrom(*source); } } void CreateFdwStmt::MergeFrom(const CreateFdwStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateFdwStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; func_options_.MergeFrom(from.func_options_); options_.MergeFrom(from.options_); if (from.fdwname().size() > 0) { _internal_set_fdwname(from._internal_fdwname()); } } void CreateFdwStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateFdwStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateFdwStmt::CopyFrom(const CreateFdwStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateFdwStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateFdwStmt::IsInitialized() const { return true; } void CreateFdwStmt::InternalSwap(CreateFdwStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); func_options_.InternalSwap(&other->func_options_); options_.InternalSwap(&other->options_); fdwname_.Swap(&other->fdwname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateFdwStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterFdwStmt::_Internal { public: }; AlterFdwStmt::AlterFdwStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), func_options_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterFdwStmt) } AlterFdwStmt::AlterFdwStmt(const AlterFdwStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), func_options_(from.func_options_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); fdwname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_fdwname().empty()) { fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_fdwname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.AlterFdwStmt) } void AlterFdwStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); fdwname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } AlterFdwStmt::~AlterFdwStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterFdwStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterFdwStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); fdwname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterFdwStmt::ArenaDtor(void* object) { AlterFdwStmt* _this = reinterpret_cast< AlterFdwStmt* >(object); (void)_this; } void AlterFdwStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterFdwStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterFdwStmt& AlterFdwStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterFdwStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterFdwStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; func_options_.Clear(); options_.Clear(); fdwname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterFdwStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string fdwname = 1 [json_name = "fdwname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_fdwname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterFdwStmt.fdwname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_func_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 3 [json_name = "options"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterFdwStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterFdwStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string fdwname = 1 [json_name = "fdwname"]; if (this->fdwname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_fdwname().data(), static_cast(this->_internal_fdwname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterFdwStmt.fdwname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_fdwname(), target); } // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; for (unsigned int i = 0, n = static_cast(this->_internal_func_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_func_options(i), target, stream); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterFdwStmt) return target; } size_t AlterFdwStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterFdwStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; total_size += 1UL * this->_internal_func_options_size(); for (const auto& msg : this->func_options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 3 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string fdwname = 1 [json_name = "fdwname"]; if (this->fdwname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_fdwname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterFdwStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterFdwStmt) GOOGLE_DCHECK_NE(&from, this); const AlterFdwStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterFdwStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterFdwStmt) MergeFrom(*source); } } void AlterFdwStmt::MergeFrom(const AlterFdwStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterFdwStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; func_options_.MergeFrom(from.func_options_); options_.MergeFrom(from.options_); if (from.fdwname().size() > 0) { _internal_set_fdwname(from._internal_fdwname()); } } void AlterFdwStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterFdwStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterFdwStmt::CopyFrom(const AlterFdwStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterFdwStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterFdwStmt::IsInitialized() const { return true; } void AlterFdwStmt::InternalSwap(AlterFdwStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); func_options_.InternalSwap(&other->func_options_); options_.InternalSwap(&other->options_); fdwname_.Swap(&other->fdwname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterFdwStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateForeignServerStmt::_Internal { public: }; CreateForeignServerStmt::CreateForeignServerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateForeignServerStmt) } CreateForeignServerStmt::CreateForeignServerStmt(const CreateForeignServerStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_servername().empty()) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_servername(), GetArena()); } servertype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_servertype().empty()) { servertype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_servertype(), GetArena()); } version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_version().empty()) { version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_version(), GetArena()); } fdwname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_fdwname().empty()) { fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_fdwname(), GetArena()); } if_not_exists_ = from.if_not_exists_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateForeignServerStmt) } void CreateForeignServerStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); servertype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); fdwname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if_not_exists_ = false; } CreateForeignServerStmt::~CreateForeignServerStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateForeignServerStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateForeignServerStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); servername_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); servertype_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); fdwname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreateForeignServerStmt::ArenaDtor(void* object) { CreateForeignServerStmt* _this = reinterpret_cast< CreateForeignServerStmt* >(object); (void)_this; } void CreateForeignServerStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateForeignServerStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateForeignServerStmt& CreateForeignServerStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateForeignServerStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateForeignServerStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); servername_.ClearToEmpty(); servertype_.ClearToEmpty(); version_.ClearToEmpty(); fdwname_.ClearToEmpty(); if_not_exists_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateForeignServerStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string servername = 1 [json_name = "servername"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_servername(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateForeignServerStmt.servername")); CHK_(ptr); } else goto handle_unusual; continue; // string servertype = 2 [json_name = "servertype"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_servertype(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateForeignServerStmt.servertype")); CHK_(ptr); } else goto handle_unusual; continue; // string version = 3 [json_name = "version"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_version(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateForeignServerStmt.version")); CHK_(ptr); } else goto handle_unusual; continue; // string fdwname = 4 [json_name = "fdwname"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { auto str = _internal_mutable_fdwname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateForeignServerStmt.fdwname")); CHK_(ptr); } else goto handle_unusual; continue; // bool if_not_exists = 5 [json_name = "if_not_exists"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 6 [json_name = "options"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateForeignServerStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateForeignServerStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string servername = 1 [json_name = "servername"]; if (this->servername().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_servername().data(), static_cast(this->_internal_servername().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateForeignServerStmt.servername"); target = stream->WriteStringMaybeAliased( 1, this->_internal_servername(), target); } // string servertype = 2 [json_name = "servertype"]; if (this->servertype().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_servertype().data(), static_cast(this->_internal_servertype().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateForeignServerStmt.servertype"); target = stream->WriteStringMaybeAliased( 2, this->_internal_servertype(), target); } // string version = 3 [json_name = "version"]; if (this->version().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_version().data(), static_cast(this->_internal_version().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateForeignServerStmt.version"); target = stream->WriteStringMaybeAliased( 3, this->_internal_version(), target); } // string fdwname = 4 [json_name = "fdwname"]; if (this->fdwname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_fdwname().data(), static_cast(this->_internal_fdwname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateForeignServerStmt.fdwname"); target = stream->WriteStringMaybeAliased( 4, this->_internal_fdwname(), target); } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_if_not_exists(), target); } // repeated .pg_query.Node options = 6 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateForeignServerStmt) return target; } size_t CreateForeignServerStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateForeignServerStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 6 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string servername = 1 [json_name = "servername"]; if (this->servername().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_servername()); } // string servertype = 2 [json_name = "servertype"]; if (this->servertype().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_servertype()); } // string version = 3 [json_name = "version"]; if (this->version().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_version()); } // string fdwname = 4 [json_name = "fdwname"]; if (this->fdwname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_fdwname()); } // bool if_not_exists = 5 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateForeignServerStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateForeignServerStmt) GOOGLE_DCHECK_NE(&from, this); const CreateForeignServerStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateForeignServerStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateForeignServerStmt) MergeFrom(*source); } } void CreateForeignServerStmt::MergeFrom(const CreateForeignServerStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateForeignServerStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.servername().size() > 0) { _internal_set_servername(from._internal_servername()); } if (from.servertype().size() > 0) { _internal_set_servertype(from._internal_servertype()); } if (from.version().size() > 0) { _internal_set_version(from._internal_version()); } if (from.fdwname().size() > 0) { _internal_set_fdwname(from._internal_fdwname()); } if (from.if_not_exists() != 0) { _internal_set_if_not_exists(from._internal_if_not_exists()); } } void CreateForeignServerStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateForeignServerStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateForeignServerStmt::CopyFrom(const CreateForeignServerStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateForeignServerStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateForeignServerStmt::IsInitialized() const { return true; } void CreateForeignServerStmt::InternalSwap(CreateForeignServerStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); servername_.Swap(&other->servername_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); servertype_.Swap(&other->servertype_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); version_.Swap(&other->version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); fdwname_.Swap(&other->fdwname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(if_not_exists_, other->if_not_exists_); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateForeignServerStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterForeignServerStmt::_Internal { public: }; AlterForeignServerStmt::AlterForeignServerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterForeignServerStmt) } AlterForeignServerStmt::AlterForeignServerStmt(const AlterForeignServerStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_servername().empty()) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_servername(), GetArena()); } version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_version().empty()) { version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_version(), GetArena()); } has_version_ = from.has_version_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterForeignServerStmt) } void AlterForeignServerStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); has_version_ = false; } AlterForeignServerStmt::~AlterForeignServerStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterForeignServerStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterForeignServerStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); servername_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterForeignServerStmt::ArenaDtor(void* object) { AlterForeignServerStmt* _this = reinterpret_cast< AlterForeignServerStmt* >(object); (void)_this; } void AlterForeignServerStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterForeignServerStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterForeignServerStmt& AlterForeignServerStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterForeignServerStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterForeignServerStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); servername_.ClearToEmpty(); version_.ClearToEmpty(); has_version_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterForeignServerStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string servername = 1 [json_name = "servername"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_servername(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterForeignServerStmt.servername")); CHK_(ptr); } else goto handle_unusual; continue; // string version = 2 [json_name = "version"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_version(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterForeignServerStmt.version")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 3 [json_name = "options"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // bool has_version = 4 [json_name = "has_version"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { has_version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterForeignServerStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterForeignServerStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string servername = 1 [json_name = "servername"]; if (this->servername().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_servername().data(), static_cast(this->_internal_servername().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterForeignServerStmt.servername"); target = stream->WriteStringMaybeAliased( 1, this->_internal_servername(), target); } // string version = 2 [json_name = "version"]; if (this->version().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_version().data(), static_cast(this->_internal_version().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterForeignServerStmt.version"); target = stream->WriteStringMaybeAliased( 2, this->_internal_version(), target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_options(i), target, stream); } // bool has_version = 4 [json_name = "has_version"]; if (this->has_version() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_has_version(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterForeignServerStmt) return target; } size_t AlterForeignServerStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterForeignServerStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 3 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string servername = 1 [json_name = "servername"]; if (this->servername().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_servername()); } // string version = 2 [json_name = "version"]; if (this->version().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_version()); } // bool has_version = 4 [json_name = "has_version"]; if (this->has_version() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterForeignServerStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterForeignServerStmt) GOOGLE_DCHECK_NE(&from, this); const AlterForeignServerStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterForeignServerStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterForeignServerStmt) MergeFrom(*source); } } void AlterForeignServerStmt::MergeFrom(const AlterForeignServerStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterForeignServerStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.servername().size() > 0) { _internal_set_servername(from._internal_servername()); } if (from.version().size() > 0) { _internal_set_version(from._internal_version()); } if (from.has_version() != 0) { _internal_set_has_version(from._internal_has_version()); } } void AlterForeignServerStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterForeignServerStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterForeignServerStmt::CopyFrom(const AlterForeignServerStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterForeignServerStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterForeignServerStmt::IsInitialized() const { return true; } void AlterForeignServerStmt::InternalSwap(AlterForeignServerStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); servername_.Swap(&other->servername_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); version_.Swap(&other->version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(has_version_, other->has_version_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterForeignServerStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateUserMappingStmt::_Internal { public: static const ::pg_query::RoleSpec& user(const CreateUserMappingStmt* msg); }; const ::pg_query::RoleSpec& CreateUserMappingStmt::_Internal::user(const CreateUserMappingStmt* msg) { return *msg->user_; } CreateUserMappingStmt::CreateUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateUserMappingStmt) } CreateUserMappingStmt::CreateUserMappingStmt(const CreateUserMappingStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_servername().empty()) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_servername(), GetArena()); } if (from._internal_has_user()) { user_ = new ::pg_query::RoleSpec(*from.user_); } else { user_ = nullptr; } if_not_exists_ = from.if_not_exists_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateUserMappingStmt) } void CreateUserMappingStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&user_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&if_not_exists_) - reinterpret_cast(&user_)) + sizeof(if_not_exists_)); } CreateUserMappingStmt::~CreateUserMappingStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateUserMappingStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateUserMappingStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); servername_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete user_; } void CreateUserMappingStmt::ArenaDtor(void* object) { CreateUserMappingStmt* _this = reinterpret_cast< CreateUserMappingStmt* >(object); (void)_this; } void CreateUserMappingStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateUserMappingStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateUserMappingStmt& CreateUserMappingStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateUserMappingStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateUserMappingStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); servername_.ClearToEmpty(); if (GetArena() == nullptr && user_ != nullptr) { delete user_; } user_ = nullptr; if_not_exists_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateUserMappingStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RoleSpec user = 1 [json_name = "user"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_user(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string servername = 2 [json_name = "servername"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_servername(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateUserMappingStmt.servername")); CHK_(ptr); } else goto handle_unusual; continue; // bool if_not_exists = 3 [json_name = "if_not_exists"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 4 [json_name = "options"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateUserMappingStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateUserMappingStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RoleSpec user = 1 [json_name = "user"]; if (this->has_user()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::user(this), target, stream); } // string servername = 2 [json_name = "servername"]; if (this->servername().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_servername().data(), static_cast(this->_internal_servername().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateUserMappingStmt.servername"); target = stream->WriteStringMaybeAliased( 2, this->_internal_servername(), target); } // bool if_not_exists = 3 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_if_not_exists(), target); } // repeated .pg_query.Node options = 4 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateUserMappingStmt) return target; } size_t CreateUserMappingStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateUserMappingStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 4 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string servername = 2 [json_name = "servername"]; if (this->servername().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_servername()); } // .pg_query.RoleSpec user = 1 [json_name = "user"]; if (this->has_user()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *user_); } // bool if_not_exists = 3 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateUserMappingStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateUserMappingStmt) GOOGLE_DCHECK_NE(&from, this); const CreateUserMappingStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateUserMappingStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateUserMappingStmt) MergeFrom(*source); } } void CreateUserMappingStmt::MergeFrom(const CreateUserMappingStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateUserMappingStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.servername().size() > 0) { _internal_set_servername(from._internal_servername()); } if (from.has_user()) { _internal_mutable_user()->::pg_query::RoleSpec::MergeFrom(from._internal_user()); } if (from.if_not_exists() != 0) { _internal_set_if_not_exists(from._internal_if_not_exists()); } } void CreateUserMappingStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateUserMappingStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateUserMappingStmt::CopyFrom(const CreateUserMappingStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateUserMappingStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateUserMappingStmt::IsInitialized() const { return true; } void CreateUserMappingStmt::InternalSwap(CreateUserMappingStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); servername_.Swap(&other->servername_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, if_not_exists_) + sizeof(CreateUserMappingStmt::if_not_exists_) - PROTOBUF_FIELD_OFFSET(CreateUserMappingStmt, user_)>( reinterpret_cast(&user_), reinterpret_cast(&other->user_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateUserMappingStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterUserMappingStmt::_Internal { public: static const ::pg_query::RoleSpec& user(const AlterUserMappingStmt* msg); }; const ::pg_query::RoleSpec& AlterUserMappingStmt::_Internal::user(const AlterUserMappingStmt* msg) { return *msg->user_; } AlterUserMappingStmt::AlterUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterUserMappingStmt) } AlterUserMappingStmt::AlterUserMappingStmt(const AlterUserMappingStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_servername().empty()) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_servername(), GetArena()); } if (from._internal_has_user()) { user_ = new ::pg_query::RoleSpec(*from.user_); } else { user_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.AlterUserMappingStmt) } void AlterUserMappingStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); user_ = nullptr; } AlterUserMappingStmt::~AlterUserMappingStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterUserMappingStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterUserMappingStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); servername_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete user_; } void AlterUserMappingStmt::ArenaDtor(void* object) { AlterUserMappingStmt* _this = reinterpret_cast< AlterUserMappingStmt* >(object); (void)_this; } void AlterUserMappingStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterUserMappingStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterUserMappingStmt& AlterUserMappingStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterUserMappingStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterUserMappingStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); servername_.ClearToEmpty(); if (GetArena() == nullptr && user_ != nullptr) { delete user_; } user_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterUserMappingStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RoleSpec user = 1 [json_name = "user"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_user(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string servername = 2 [json_name = "servername"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_servername(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterUserMappingStmt.servername")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 3 [json_name = "options"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterUserMappingStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterUserMappingStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RoleSpec user = 1 [json_name = "user"]; if (this->has_user()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::user(this), target, stream); } // string servername = 2 [json_name = "servername"]; if (this->servername().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_servername().data(), static_cast(this->_internal_servername().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterUserMappingStmt.servername"); target = stream->WriteStringMaybeAliased( 2, this->_internal_servername(), target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterUserMappingStmt) return target; } size_t AlterUserMappingStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterUserMappingStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 3 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string servername = 2 [json_name = "servername"]; if (this->servername().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_servername()); } // .pg_query.RoleSpec user = 1 [json_name = "user"]; if (this->has_user()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *user_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterUserMappingStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterUserMappingStmt) GOOGLE_DCHECK_NE(&from, this); const AlterUserMappingStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterUserMappingStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterUserMappingStmt) MergeFrom(*source); } } void AlterUserMappingStmt::MergeFrom(const AlterUserMappingStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterUserMappingStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.servername().size() > 0) { _internal_set_servername(from._internal_servername()); } if (from.has_user()) { _internal_mutable_user()->::pg_query::RoleSpec::MergeFrom(from._internal_user()); } } void AlterUserMappingStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterUserMappingStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterUserMappingStmt::CopyFrom(const AlterUserMappingStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterUserMappingStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterUserMappingStmt::IsInitialized() const { return true; } void AlterUserMappingStmt::InternalSwap(AlterUserMappingStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); servername_.Swap(&other->servername_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(user_, other->user_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterUserMappingStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DropUserMappingStmt::_Internal { public: static const ::pg_query::RoleSpec& user(const DropUserMappingStmt* msg); }; const ::pg_query::RoleSpec& DropUserMappingStmt::_Internal::user(const DropUserMappingStmt* msg) { return *msg->user_; } DropUserMappingStmt::DropUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropUserMappingStmt) } DropUserMappingStmt::DropUserMappingStmt(const DropUserMappingStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_servername().empty()) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_servername(), GetArena()); } if (from._internal_has_user()) { user_ = new ::pg_query::RoleSpec(*from.user_); } else { user_ = nullptr; } missing_ok_ = from.missing_ok_; // @@protoc_insertion_point(copy_constructor:pg_query.DropUserMappingStmt) } void DropUserMappingStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_DropUserMappingStmt_protobuf_2fpg_5fquery_2eproto.base); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&user_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&user_)) + sizeof(missing_ok_)); } DropUserMappingStmt::~DropUserMappingStmt() { // @@protoc_insertion_point(destructor:pg_query.DropUserMappingStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DropUserMappingStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); servername_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete user_; } void DropUserMappingStmt::ArenaDtor(void* object) { DropUserMappingStmt* _this = reinterpret_cast< DropUserMappingStmt* >(object); (void)_this; } void DropUserMappingStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DropUserMappingStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DropUserMappingStmt& DropUserMappingStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_DropUserMappingStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DropUserMappingStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropUserMappingStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; servername_.ClearToEmpty(); if (GetArena() == nullptr && user_ != nullptr) { delete user_; } user_ = nullptr; missing_ok_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DropUserMappingStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RoleSpec user = 1 [json_name = "user"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_user(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string servername = 2 [json_name = "servername"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_servername(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.DropUserMappingStmt.servername")); CHK_(ptr); } else goto handle_unusual; continue; // bool missing_ok = 3 [json_name = "missing_ok"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DropUserMappingStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropUserMappingStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RoleSpec user = 1 [json_name = "user"]; if (this->has_user()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::user(this), target, stream); } // string servername = 2 [json_name = "servername"]; if (this->servername().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_servername().data(), static_cast(this->_internal_servername().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.DropUserMappingStmt.servername"); target = stream->WriteStringMaybeAliased( 2, this->_internal_servername(), target); } // bool missing_ok = 3 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DropUserMappingStmt) return target; } size_t DropUserMappingStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DropUserMappingStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string servername = 2 [json_name = "servername"]; if (this->servername().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_servername()); } // .pg_query.RoleSpec user = 1 [json_name = "user"]; if (this->has_user()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *user_); } // bool missing_ok = 3 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DropUserMappingStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DropUserMappingStmt) GOOGLE_DCHECK_NE(&from, this); const DropUserMappingStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DropUserMappingStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DropUserMappingStmt) MergeFrom(*source); } } void DropUserMappingStmt::MergeFrom(const DropUserMappingStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropUserMappingStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.servername().size() > 0) { _internal_set_servername(from._internal_servername()); } if (from.has_user()) { _internal_mutable_user()->::pg_query::RoleSpec::MergeFrom(from._internal_user()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void DropUserMappingStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DropUserMappingStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DropUserMappingStmt::CopyFrom(const DropUserMappingStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropUserMappingStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DropUserMappingStmt::IsInitialized() const { return true; } void DropUserMappingStmt::InternalSwap(DropUserMappingStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); servername_.Swap(&other->servername_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, missing_ok_) + sizeof(DropUserMappingStmt::missing_ok_) - PROTOBUF_FIELD_OFFSET(DropUserMappingStmt, user_)>( reinterpret_cast(&user_), reinterpret_cast(&other->user_)); } ::PROTOBUF_NAMESPACE_ID::Metadata DropUserMappingStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterTableSpaceOptionsStmt::_Internal { public: }; AlterTableSpaceOptionsStmt::AlterTableSpaceOptionsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTableSpaceOptionsStmt) } AlterTableSpaceOptionsStmt::AlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_tablespacename().empty()) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_tablespacename(), GetArena()); } is_reset_ = from.is_reset_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterTableSpaceOptionsStmt) } void AlterTableSpaceOptionsStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); is_reset_ = false; } AlterTableSpaceOptionsStmt::~AlterTableSpaceOptionsStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTableSpaceOptionsStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterTableSpaceOptionsStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); tablespacename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterTableSpaceOptionsStmt::ArenaDtor(void* object) { AlterTableSpaceOptionsStmt* _this = reinterpret_cast< AlterTableSpaceOptionsStmt* >(object); (void)_this; } void AlterTableSpaceOptionsStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterTableSpaceOptionsStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterTableSpaceOptionsStmt& AlterTableSpaceOptionsStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterTableSpaceOptionsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTableSpaceOptionsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); tablespacename_.ClearToEmpty(); is_reset_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterTableSpaceOptionsStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string tablespacename = 1 [json_name = "tablespacename"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_tablespacename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterTableSpaceOptionsStmt.tablespacename")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // bool is_reset = 3 [json_name = "isReset"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { is_reset_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterTableSpaceOptionsStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTableSpaceOptionsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string tablespacename = 1 [json_name = "tablespacename"]; if (this->tablespacename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_tablespacename().data(), static_cast(this->_internal_tablespacename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterTableSpaceOptionsStmt.tablespacename"); target = stream->WriteStringMaybeAliased( 1, this->_internal_tablespacename(), target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } // bool is_reset = 3 [json_name = "isReset"]; if (this->is_reset() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_is_reset(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterTableSpaceOptionsStmt) return target; } size_t AlterTableSpaceOptionsStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterTableSpaceOptionsStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string tablespacename = 1 [json_name = "tablespacename"]; if (this->tablespacename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_tablespacename()); } // bool is_reset = 3 [json_name = "isReset"]; if (this->is_reset() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterTableSpaceOptionsStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterTableSpaceOptionsStmt) GOOGLE_DCHECK_NE(&from, this); const AlterTableSpaceOptionsStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterTableSpaceOptionsStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterTableSpaceOptionsStmt) MergeFrom(*source); } } void AlterTableSpaceOptionsStmt::MergeFrom(const AlterTableSpaceOptionsStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTableSpaceOptionsStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.tablespacename().size() > 0) { _internal_set_tablespacename(from._internal_tablespacename()); } if (from.is_reset() != 0) { _internal_set_is_reset(from._internal_is_reset()); } } void AlterTableSpaceOptionsStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterTableSpaceOptionsStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterTableSpaceOptionsStmt::CopyFrom(const AlterTableSpaceOptionsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTableSpaceOptionsStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterTableSpaceOptionsStmt::IsInitialized() const { return true; } void AlterTableSpaceOptionsStmt::InternalSwap(AlterTableSpaceOptionsStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); tablespacename_.Swap(&other->tablespacename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(is_reset_, other->is_reset_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterTableSpaceOptionsStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterTableMoveAllStmt::_Internal { public: }; AlterTableMoveAllStmt::AlterTableMoveAllStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), roles_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterTableMoveAllStmt) } AlterTableMoveAllStmt::AlterTableMoveAllStmt(const AlterTableMoveAllStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), roles_(from.roles_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); orig_tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_orig_tablespacename().empty()) { orig_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_orig_tablespacename(), GetArena()); } new_tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_new_tablespacename().empty()) { new_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_new_tablespacename(), GetArena()); } ::memcpy(&objtype_, &from.objtype_, static_cast(reinterpret_cast(&nowait_) - reinterpret_cast(&objtype_)) + sizeof(nowait_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterTableMoveAllStmt) } void AlterTableMoveAllStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); orig_tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); new_tablespacename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&objtype_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&nowait_) - reinterpret_cast(&objtype_)) + sizeof(nowait_)); } AlterTableMoveAllStmt::~AlterTableMoveAllStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterTableMoveAllStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterTableMoveAllStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); orig_tablespacename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); new_tablespacename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterTableMoveAllStmt::ArenaDtor(void* object) { AlterTableMoveAllStmt* _this = reinterpret_cast< AlterTableMoveAllStmt* >(object); (void)_this; } void AlterTableMoveAllStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterTableMoveAllStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterTableMoveAllStmt& AlterTableMoveAllStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterTableMoveAllStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterTableMoveAllStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; roles_.Clear(); orig_tablespacename_.ClearToEmpty(); new_tablespacename_.ClearToEmpty(); ::memset(&objtype_, 0, static_cast( reinterpret_cast(&nowait_) - reinterpret_cast(&objtype_)) + sizeof(nowait_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterTableMoveAllStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_orig_tablespacename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterTableMoveAllStmt.orig_tablespacename")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_objtype(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node roles = 3 [json_name = "roles"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_roles(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // string new_tablespacename = 4 [json_name = "new_tablespacename"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { auto str = _internal_mutable_new_tablespacename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterTableMoveAllStmt.new_tablespacename")); CHK_(ptr); } else goto handle_unusual; continue; // bool nowait = 5 [json_name = "nowait"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { nowait_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterTableMoveAllStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterTableMoveAllStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; if (this->orig_tablespacename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_orig_tablespacename().data(), static_cast(this->_internal_orig_tablespacename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterTableMoveAllStmt.orig_tablespacename"); target = stream->WriteStringMaybeAliased( 1, this->_internal_orig_tablespacename(), target); } // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; if (this->objtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_objtype(), target); } // repeated .pg_query.Node roles = 3 [json_name = "roles"]; for (unsigned int i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_roles(i), target, stream); } // string new_tablespacename = 4 [json_name = "new_tablespacename"]; if (this->new_tablespacename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_new_tablespacename().data(), static_cast(this->_internal_new_tablespacename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterTableMoveAllStmt.new_tablespacename"); target = stream->WriteStringMaybeAliased( 4, this->_internal_new_tablespacename(), target); } // bool nowait = 5 [json_name = "nowait"]; if (this->nowait() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_nowait(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterTableMoveAllStmt) return target; } size_t AlterTableMoveAllStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterTableMoveAllStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node roles = 3 [json_name = "roles"]; total_size += 1UL * this->_internal_roles_size(); for (const auto& msg : this->roles_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; if (this->orig_tablespacename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_orig_tablespacename()); } // string new_tablespacename = 4 [json_name = "new_tablespacename"]; if (this->new_tablespacename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_new_tablespacename()); } // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; if (this->objtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_objtype()); } // bool nowait = 5 [json_name = "nowait"]; if (this->nowait() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterTableMoveAllStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterTableMoveAllStmt) GOOGLE_DCHECK_NE(&from, this); const AlterTableMoveAllStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterTableMoveAllStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterTableMoveAllStmt) MergeFrom(*source); } } void AlterTableMoveAllStmt::MergeFrom(const AlterTableMoveAllStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterTableMoveAllStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; roles_.MergeFrom(from.roles_); if (from.orig_tablespacename().size() > 0) { _internal_set_orig_tablespacename(from._internal_orig_tablespacename()); } if (from.new_tablespacename().size() > 0) { _internal_set_new_tablespacename(from._internal_new_tablespacename()); } if (from.objtype() != 0) { _internal_set_objtype(from._internal_objtype()); } if (from.nowait() != 0) { _internal_set_nowait(from._internal_nowait()); } } void AlterTableMoveAllStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterTableMoveAllStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterTableMoveAllStmt::CopyFrom(const AlterTableMoveAllStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterTableMoveAllStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterTableMoveAllStmt::IsInitialized() const { return true; } void AlterTableMoveAllStmt::InternalSwap(AlterTableMoveAllStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); roles_.InternalSwap(&other->roles_); orig_tablespacename_.Swap(&other->orig_tablespacename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); new_tablespacename_.Swap(&other->new_tablespacename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, nowait_) + sizeof(AlterTableMoveAllStmt::nowait_) - PROTOBUF_FIELD_OFFSET(AlterTableMoveAllStmt, objtype_)>( reinterpret_cast(&objtype_), reinterpret_cast(&other->objtype_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterTableMoveAllStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class SecLabelStmt::_Internal { public: static const ::pg_query::Node& object(const SecLabelStmt* msg); }; const ::pg_query::Node& SecLabelStmt::_Internal::object(const SecLabelStmt* msg) { return *msg->object_; } SecLabelStmt::SecLabelStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SecLabelStmt) } SecLabelStmt::SecLabelStmt(const SecLabelStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); provider_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_provider().empty()) { provider_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_provider(), GetArena()); } label_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_label().empty()) { label_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_label(), GetArena()); } if (from._internal_has_object()) { object_ = new ::pg_query::Node(*from.object_); } else { object_ = nullptr; } objtype_ = from.objtype_; // @@protoc_insertion_point(copy_constructor:pg_query.SecLabelStmt) } void SecLabelStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); provider_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); label_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&object_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&objtype_) - reinterpret_cast(&object_)) + sizeof(objtype_)); } SecLabelStmt::~SecLabelStmt() { // @@protoc_insertion_point(destructor:pg_query.SecLabelStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void SecLabelStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); provider_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); label_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete object_; } void SecLabelStmt::ArenaDtor(void* object) { SecLabelStmt* _this = reinterpret_cast< SecLabelStmt* >(object); (void)_this; } void SecLabelStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void SecLabelStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const SecLabelStmt& SecLabelStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void SecLabelStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SecLabelStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; provider_.ClearToEmpty(); label_.ClearToEmpty(); if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; objtype_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* SecLabelStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_objtype(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.Node object = 2 [json_name = "object"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_object(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string provider = 3 [json_name = "provider"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_provider(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.SecLabelStmt.provider")); CHK_(ptr); } else goto handle_unusual; continue; // string label = 4 [json_name = "label"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { auto str = _internal_mutable_label(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.SecLabelStmt.label")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* SecLabelStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SecLabelStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->objtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_objtype(), target); } // .pg_query.Node object = 2 [json_name = "object"]; if (this->has_object()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::object(this), target, stream); } // string provider = 3 [json_name = "provider"]; if (this->provider().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_provider().data(), static_cast(this->_internal_provider().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.SecLabelStmt.provider"); target = stream->WriteStringMaybeAliased( 3, this->_internal_provider(), target); } // string label = 4 [json_name = "label"]; if (this->label().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_label().data(), static_cast(this->_internal_label().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.SecLabelStmt.label"); target = stream->WriteStringMaybeAliased( 4, this->_internal_label(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.SecLabelStmt) return target; } size_t SecLabelStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.SecLabelStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string provider = 3 [json_name = "provider"]; if (this->provider().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_provider()); } // string label = 4 [json_name = "label"]; if (this->label().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_label()); } // .pg_query.Node object = 2 [json_name = "object"]; if (this->has_object()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *object_); } // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; if (this->objtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_objtype()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void SecLabelStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.SecLabelStmt) GOOGLE_DCHECK_NE(&from, this); const SecLabelStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.SecLabelStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.SecLabelStmt) MergeFrom(*source); } } void SecLabelStmt::MergeFrom(const SecLabelStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SecLabelStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.provider().size() > 0) { _internal_set_provider(from._internal_provider()); } if (from.label().size() > 0) { _internal_set_label(from._internal_label()); } if (from.has_object()) { _internal_mutable_object()->::pg_query::Node::MergeFrom(from._internal_object()); } if (from.objtype() != 0) { _internal_set_objtype(from._internal_objtype()); } } void SecLabelStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.SecLabelStmt) if (&from == this) return; Clear(); MergeFrom(from); } void SecLabelStmt::CopyFrom(const SecLabelStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SecLabelStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool SecLabelStmt::IsInitialized() const { return true; } void SecLabelStmt::InternalSwap(SecLabelStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); provider_.Swap(&other->provider_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); label_.Swap(&other->label_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(SecLabelStmt, objtype_) + sizeof(SecLabelStmt::objtype_) - PROTOBUF_FIELD_OFFSET(SecLabelStmt, object_)>( reinterpret_cast(&object_), reinterpret_cast(&other->object_)); } ::PROTOBUF_NAMESPACE_ID::Metadata SecLabelStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateForeignTableStmt::_Internal { public: static const ::pg_query::CreateStmt& base_stmt(const CreateForeignTableStmt* msg); }; const ::pg_query::CreateStmt& CreateForeignTableStmt::_Internal::base_stmt(const CreateForeignTableStmt* msg) { return *msg->base_stmt_; } CreateForeignTableStmt::CreateForeignTableStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateForeignTableStmt) } CreateForeignTableStmt::CreateForeignTableStmt(const CreateForeignTableStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_servername().empty()) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_servername(), GetArena()); } if (from._internal_has_base_stmt()) { base_stmt_ = new ::pg_query::CreateStmt(*from.base_stmt_); } else { base_stmt_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.CreateForeignTableStmt) } void CreateForeignTableStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); servername_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); base_stmt_ = nullptr; } CreateForeignTableStmt::~CreateForeignTableStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateForeignTableStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateForeignTableStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); servername_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete base_stmt_; } void CreateForeignTableStmt::ArenaDtor(void* object) { CreateForeignTableStmt* _this = reinterpret_cast< CreateForeignTableStmt* >(object); (void)_this; } void CreateForeignTableStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateForeignTableStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateForeignTableStmt& CreateForeignTableStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateForeignTableStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateForeignTableStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); servername_.ClearToEmpty(); if (GetArena() == nullptr && base_stmt_ != nullptr) { delete base_stmt_; } base_stmt_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateForeignTableStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_base_stmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string servername = 2 [json_name = "servername"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_servername(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateForeignTableStmt.servername")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 3 [json_name = "options"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateForeignTableStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateForeignTableStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; if (this->has_base_stmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::base_stmt(this), target, stream); } // string servername = 2 [json_name = "servername"]; if (this->servername().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_servername().data(), static_cast(this->_internal_servername().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateForeignTableStmt.servername"); target = stream->WriteStringMaybeAliased( 2, this->_internal_servername(), target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateForeignTableStmt) return target; } size_t CreateForeignTableStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateForeignTableStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 3 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string servername = 2 [json_name = "servername"]; if (this->servername().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_servername()); } // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; if (this->has_base_stmt()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *base_stmt_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateForeignTableStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateForeignTableStmt) GOOGLE_DCHECK_NE(&from, this); const CreateForeignTableStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateForeignTableStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateForeignTableStmt) MergeFrom(*source); } } void CreateForeignTableStmt::MergeFrom(const CreateForeignTableStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateForeignTableStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.servername().size() > 0) { _internal_set_servername(from._internal_servername()); } if (from.has_base_stmt()) { _internal_mutable_base_stmt()->::pg_query::CreateStmt::MergeFrom(from._internal_base_stmt()); } } void CreateForeignTableStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateForeignTableStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateForeignTableStmt::CopyFrom(const CreateForeignTableStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateForeignTableStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateForeignTableStmt::IsInitialized() const { return true; } void CreateForeignTableStmt::InternalSwap(CreateForeignTableStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); servername_.Swap(&other->servername_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(base_stmt_, other->base_stmt_); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateForeignTableStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ImportForeignSchemaStmt::_Internal { public: }; ImportForeignSchemaStmt::ImportForeignSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), table_list_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ImportForeignSchemaStmt) } ImportForeignSchemaStmt::ImportForeignSchemaStmt(const ImportForeignSchemaStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), table_list_(from.table_list_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); server_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_server_name().empty()) { server_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_server_name(), GetArena()); } remote_schema_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_remote_schema().empty()) { remote_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_remote_schema(), GetArena()); } local_schema_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_local_schema().empty()) { local_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_local_schema(), GetArena()); } list_type_ = from.list_type_; // @@protoc_insertion_point(copy_constructor:pg_query.ImportForeignSchemaStmt) } void ImportForeignSchemaStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); server_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); remote_schema_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); local_schema_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); list_type_ = 0; } ImportForeignSchemaStmt::~ImportForeignSchemaStmt() { // @@protoc_insertion_point(destructor:pg_query.ImportForeignSchemaStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ImportForeignSchemaStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); server_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); remote_schema_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); local_schema_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void ImportForeignSchemaStmt::ArenaDtor(void* object) { ImportForeignSchemaStmt* _this = reinterpret_cast< ImportForeignSchemaStmt* >(object); (void)_this; } void ImportForeignSchemaStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ImportForeignSchemaStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ImportForeignSchemaStmt& ImportForeignSchemaStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ImportForeignSchemaStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ImportForeignSchemaStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; table_list_.Clear(); options_.Clear(); server_name_.ClearToEmpty(); remote_schema_.ClearToEmpty(); local_schema_.ClearToEmpty(); list_type_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ImportForeignSchemaStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string server_name = 1 [json_name = "server_name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_server_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ImportForeignSchemaStmt.server_name")); CHK_(ptr); } else goto handle_unusual; continue; // string remote_schema = 2 [json_name = "remote_schema"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_remote_schema(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ImportForeignSchemaStmt.remote_schema")); CHK_(ptr); } else goto handle_unusual; continue; // string local_schema = 3 [json_name = "local_schema"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_local_schema(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ImportForeignSchemaStmt.local_schema")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_list_type(static_cast<::pg_query::ImportForeignSchemaType>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_table_list(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 6 [json_name = "options"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ImportForeignSchemaStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ImportForeignSchemaStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string server_name = 1 [json_name = "server_name"]; if (this->server_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_server_name().data(), static_cast(this->_internal_server_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ImportForeignSchemaStmt.server_name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_server_name(), target); } // string remote_schema = 2 [json_name = "remote_schema"]; if (this->remote_schema().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_remote_schema().data(), static_cast(this->_internal_remote_schema().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ImportForeignSchemaStmt.remote_schema"); target = stream->WriteStringMaybeAliased( 2, this->_internal_remote_schema(), target); } // string local_schema = 3 [json_name = "local_schema"]; if (this->local_schema().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_local_schema().data(), static_cast(this->_internal_local_schema().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ImportForeignSchemaStmt.local_schema"); target = stream->WriteStringMaybeAliased( 3, this->_internal_local_schema(), target); } // .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; if (this->list_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 4, this->_internal_list_type(), target); } // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; for (unsigned int i = 0, n = static_cast(this->_internal_table_list_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_table_list(i), target, stream); } // repeated .pg_query.Node options = 6 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ImportForeignSchemaStmt) return target; } size_t ImportForeignSchemaStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ImportForeignSchemaStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; total_size += 1UL * this->_internal_table_list_size(); for (const auto& msg : this->table_list_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 6 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string server_name = 1 [json_name = "server_name"]; if (this->server_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_server_name()); } // string remote_schema = 2 [json_name = "remote_schema"]; if (this->remote_schema().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_remote_schema()); } // string local_schema = 3 [json_name = "local_schema"]; if (this->local_schema().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_local_schema()); } // .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; if (this->list_type() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_list_type()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ImportForeignSchemaStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ImportForeignSchemaStmt) GOOGLE_DCHECK_NE(&from, this); const ImportForeignSchemaStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ImportForeignSchemaStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ImportForeignSchemaStmt) MergeFrom(*source); } } void ImportForeignSchemaStmt::MergeFrom(const ImportForeignSchemaStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ImportForeignSchemaStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; table_list_.MergeFrom(from.table_list_); options_.MergeFrom(from.options_); if (from.server_name().size() > 0) { _internal_set_server_name(from._internal_server_name()); } if (from.remote_schema().size() > 0) { _internal_set_remote_schema(from._internal_remote_schema()); } if (from.local_schema().size() > 0) { _internal_set_local_schema(from._internal_local_schema()); } if (from.list_type() != 0) { _internal_set_list_type(from._internal_list_type()); } } void ImportForeignSchemaStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ImportForeignSchemaStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ImportForeignSchemaStmt::CopyFrom(const ImportForeignSchemaStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ImportForeignSchemaStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ImportForeignSchemaStmt::IsInitialized() const { return true; } void ImportForeignSchemaStmt::InternalSwap(ImportForeignSchemaStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); table_list_.InternalSwap(&other->table_list_); options_.InternalSwap(&other->options_); server_name_.Swap(&other->server_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); remote_schema_.Swap(&other->remote_schema_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); local_schema_.Swap(&other->local_schema_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(list_type_, other->list_type_); } ::PROTOBUF_NAMESPACE_ID::Metadata ImportForeignSchemaStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateExtensionStmt::_Internal { public: }; CreateExtensionStmt::CreateExtensionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateExtensionStmt) } CreateExtensionStmt::CreateExtensionStmt(const CreateExtensionStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); extname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_extname().empty()) { extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_extname(), GetArena()); } if_not_exists_ = from.if_not_exists_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateExtensionStmt) } void CreateExtensionStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); extname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if_not_exists_ = false; } CreateExtensionStmt::~CreateExtensionStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateExtensionStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateExtensionStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); extname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreateExtensionStmt::ArenaDtor(void* object) { CreateExtensionStmt* _this = reinterpret_cast< CreateExtensionStmt* >(object); (void)_this; } void CreateExtensionStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateExtensionStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateExtensionStmt& CreateExtensionStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateExtensionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateExtensionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); extname_.ClearToEmpty(); if_not_exists_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateExtensionStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string extname = 1 [json_name = "extname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_extname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateExtensionStmt.extname")); CHK_(ptr); } else goto handle_unusual; continue; // bool if_not_exists = 2 [json_name = "if_not_exists"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 3 [json_name = "options"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateExtensionStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateExtensionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string extname = 1 [json_name = "extname"]; if (this->extname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_extname().data(), static_cast(this->_internal_extname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateExtensionStmt.extname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_extname(), target); } // bool if_not_exists = 2 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_if_not_exists(), target); } // repeated .pg_query.Node options = 3 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateExtensionStmt) return target; } size_t CreateExtensionStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateExtensionStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 3 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string extname = 1 [json_name = "extname"]; if (this->extname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_extname()); } // bool if_not_exists = 2 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateExtensionStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateExtensionStmt) GOOGLE_DCHECK_NE(&from, this); const CreateExtensionStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateExtensionStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateExtensionStmt) MergeFrom(*source); } } void CreateExtensionStmt::MergeFrom(const CreateExtensionStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateExtensionStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.extname().size() > 0) { _internal_set_extname(from._internal_extname()); } if (from.if_not_exists() != 0) { _internal_set_if_not_exists(from._internal_if_not_exists()); } } void CreateExtensionStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateExtensionStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateExtensionStmt::CopyFrom(const CreateExtensionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateExtensionStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateExtensionStmt::IsInitialized() const { return true; } void CreateExtensionStmt::InternalSwap(CreateExtensionStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); extname_.Swap(&other->extname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(if_not_exists_, other->if_not_exists_); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateExtensionStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterExtensionStmt::_Internal { public: }; AlterExtensionStmt::AlterExtensionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterExtensionStmt) } AlterExtensionStmt::AlterExtensionStmt(const AlterExtensionStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); extname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_extname().empty()) { extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_extname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.AlterExtensionStmt) } void AlterExtensionStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); extname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } AlterExtensionStmt::~AlterExtensionStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterExtensionStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterExtensionStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); extname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterExtensionStmt::ArenaDtor(void* object) { AlterExtensionStmt* _this = reinterpret_cast< AlterExtensionStmt* >(object); (void)_this; } void AlterExtensionStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterExtensionStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterExtensionStmt& AlterExtensionStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterExtensionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterExtensionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); extname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterExtensionStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string extname = 1 [json_name = "extname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_extname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterExtensionStmt.extname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterExtensionStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterExtensionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string extname = 1 [json_name = "extname"]; if (this->extname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_extname().data(), static_cast(this->_internal_extname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterExtensionStmt.extname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_extname(), target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterExtensionStmt) return target; } size_t AlterExtensionStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterExtensionStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string extname = 1 [json_name = "extname"]; if (this->extname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_extname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterExtensionStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterExtensionStmt) GOOGLE_DCHECK_NE(&from, this); const AlterExtensionStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterExtensionStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterExtensionStmt) MergeFrom(*source); } } void AlterExtensionStmt::MergeFrom(const AlterExtensionStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterExtensionStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); if (from.extname().size() > 0) { _internal_set_extname(from._internal_extname()); } } void AlterExtensionStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterExtensionStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterExtensionStmt::CopyFrom(const AlterExtensionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterExtensionStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterExtensionStmt::IsInitialized() const { return true; } void AlterExtensionStmt::InternalSwap(AlterExtensionStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); extname_.Swap(&other->extname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterExtensionStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterExtensionContentsStmt::_Internal { public: static const ::pg_query::Node& object(const AlterExtensionContentsStmt* msg); }; const ::pg_query::Node& AlterExtensionContentsStmt::_Internal::object(const AlterExtensionContentsStmt* msg) { return *msg->object_; } AlterExtensionContentsStmt::AlterExtensionContentsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterExtensionContentsStmt) } AlterExtensionContentsStmt::AlterExtensionContentsStmt(const AlterExtensionContentsStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); extname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_extname().empty()) { extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_extname(), GetArena()); } if (from._internal_has_object()) { object_ = new ::pg_query::Node(*from.object_); } else { object_ = nullptr; } ::memcpy(&action_, &from.action_, static_cast(reinterpret_cast(&objtype_) - reinterpret_cast(&action_)) + sizeof(objtype_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterExtensionContentsStmt) } void AlterExtensionContentsStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); extname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&object_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&objtype_) - reinterpret_cast(&object_)) + sizeof(objtype_)); } AlterExtensionContentsStmt::~AlterExtensionContentsStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterExtensionContentsStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterExtensionContentsStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); extname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete object_; } void AlterExtensionContentsStmt::ArenaDtor(void* object) { AlterExtensionContentsStmt* _this = reinterpret_cast< AlterExtensionContentsStmt* >(object); (void)_this; } void AlterExtensionContentsStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterExtensionContentsStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterExtensionContentsStmt& AlterExtensionContentsStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterExtensionContentsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterExtensionContentsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; extname_.ClearToEmpty(); if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; ::memset(&action_, 0, static_cast( reinterpret_cast(&objtype_) - reinterpret_cast(&action_)) + sizeof(objtype_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterExtensionContentsStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string extname = 1 [json_name = "extname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_extname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterExtensionContentsStmt.extname")); CHK_(ptr); } else goto handle_unusual; continue; // int32 action = 2 [json_name = "action"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { action_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_objtype(static_cast<::pg_query::ObjectType>(val)); } else goto handle_unusual; continue; // .pg_query.Node object = 4 [json_name = "object"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_object(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterExtensionContentsStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterExtensionContentsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string extname = 1 [json_name = "extname"]; if (this->extname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_extname().data(), static_cast(this->_internal_extname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterExtensionContentsStmt.extname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_extname(), target); } // int32 action = 2 [json_name = "action"]; if (this->action() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_action(), target); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->objtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_objtype(), target); } // .pg_query.Node object = 4 [json_name = "object"]; if (this->has_object()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::object(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterExtensionContentsStmt) return target; } size_t AlterExtensionContentsStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterExtensionContentsStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string extname = 1 [json_name = "extname"]; if (this->extname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_extname()); } // .pg_query.Node object = 4 [json_name = "object"]; if (this->has_object()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *object_); } // int32 action = 2 [json_name = "action"]; if (this->action() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_action()); } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; if (this->objtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_objtype()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterExtensionContentsStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterExtensionContentsStmt) GOOGLE_DCHECK_NE(&from, this); const AlterExtensionContentsStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterExtensionContentsStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterExtensionContentsStmt) MergeFrom(*source); } } void AlterExtensionContentsStmt::MergeFrom(const AlterExtensionContentsStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterExtensionContentsStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.extname().size() > 0) { _internal_set_extname(from._internal_extname()); } if (from.has_object()) { _internal_mutable_object()->::pg_query::Node::MergeFrom(from._internal_object()); } if (from.action() != 0) { _internal_set_action(from._internal_action()); } if (from.objtype() != 0) { _internal_set_objtype(from._internal_objtype()); } } void AlterExtensionContentsStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterExtensionContentsStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterExtensionContentsStmt::CopyFrom(const AlterExtensionContentsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterExtensionContentsStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterExtensionContentsStmt::IsInitialized() const { return true; } void AlterExtensionContentsStmt::InternalSwap(AlterExtensionContentsStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); extname_.Swap(&other->extname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, objtype_) + sizeof(AlterExtensionContentsStmt::objtype_) - PROTOBUF_FIELD_OFFSET(AlterExtensionContentsStmt, object_)>( reinterpret_cast(&object_), reinterpret_cast(&other->object_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterExtensionContentsStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateEventTrigStmt::_Internal { public: }; CreateEventTrigStmt::CreateEventTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), whenclause_(arena), funcname_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateEventTrigStmt) } CreateEventTrigStmt::CreateEventTrigStmt(const CreateEventTrigStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), whenclause_(from.whenclause_), funcname_(from.funcname_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); trigname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_trigname().empty()) { trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_trigname(), GetArena()); } eventname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_eventname().empty()) { eventname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_eventname(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.CreateEventTrigStmt) } void CreateEventTrigStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); trigname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); eventname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } CreateEventTrigStmt::~CreateEventTrigStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateEventTrigStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateEventTrigStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); trigname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); eventname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreateEventTrigStmt::ArenaDtor(void* object) { CreateEventTrigStmt* _this = reinterpret_cast< CreateEventTrigStmt* >(object); (void)_this; } void CreateEventTrigStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateEventTrigStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateEventTrigStmt& CreateEventTrigStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateEventTrigStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateEventTrigStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; whenclause_.Clear(); funcname_.Clear(); trigname_.ClearToEmpty(); eventname_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateEventTrigStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string trigname = 1 [json_name = "trigname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_trigname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateEventTrigStmt.trigname")); CHK_(ptr); } else goto handle_unusual; continue; // string eventname = 2 [json_name = "eventname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_eventname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateEventTrigStmt.eventname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node whenclause = 3 [json_name = "whenclause"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_whenclause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_funcname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateEventTrigStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateEventTrigStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string trigname = 1 [json_name = "trigname"]; if (this->trigname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_trigname().data(), static_cast(this->_internal_trigname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateEventTrigStmt.trigname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_trigname(), target); } // string eventname = 2 [json_name = "eventname"]; if (this->eventname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_eventname().data(), static_cast(this->_internal_eventname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateEventTrigStmt.eventname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_eventname(), target); } // repeated .pg_query.Node whenclause = 3 [json_name = "whenclause"]; for (unsigned int i = 0, n = static_cast(this->_internal_whenclause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_whenclause(i), target, stream); } // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; for (unsigned int i = 0, n = static_cast(this->_internal_funcname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_funcname(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateEventTrigStmt) return target; } size_t CreateEventTrigStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateEventTrigStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node whenclause = 3 [json_name = "whenclause"]; total_size += 1UL * this->_internal_whenclause_size(); for (const auto& msg : this->whenclause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; total_size += 1UL * this->_internal_funcname_size(); for (const auto& msg : this->funcname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string trigname = 1 [json_name = "trigname"]; if (this->trigname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_trigname()); } // string eventname = 2 [json_name = "eventname"]; if (this->eventname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_eventname()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateEventTrigStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateEventTrigStmt) GOOGLE_DCHECK_NE(&from, this); const CreateEventTrigStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateEventTrigStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateEventTrigStmt) MergeFrom(*source); } } void CreateEventTrigStmt::MergeFrom(const CreateEventTrigStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateEventTrigStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; whenclause_.MergeFrom(from.whenclause_); funcname_.MergeFrom(from.funcname_); if (from.trigname().size() > 0) { _internal_set_trigname(from._internal_trigname()); } if (from.eventname().size() > 0) { _internal_set_eventname(from._internal_eventname()); } } void CreateEventTrigStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateEventTrigStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateEventTrigStmt::CopyFrom(const CreateEventTrigStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateEventTrigStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateEventTrigStmt::IsInitialized() const { return true; } void CreateEventTrigStmt::InternalSwap(CreateEventTrigStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); whenclause_.InternalSwap(&other->whenclause_); funcname_.InternalSwap(&other->funcname_); trigname_.Swap(&other->trigname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); eventname_.Swap(&other->eventname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateEventTrigStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterEventTrigStmt::_Internal { public: }; AlterEventTrigStmt::AlterEventTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterEventTrigStmt) } AlterEventTrigStmt::AlterEventTrigStmt(const AlterEventTrigStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); trigname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_trigname().empty()) { trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_trigname(), GetArena()); } tgenabled_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_tgenabled().empty()) { tgenabled_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_tgenabled(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.AlterEventTrigStmt) } void AlterEventTrigStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_AlterEventTrigStmt_protobuf_2fpg_5fquery_2eproto.base); trigname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); tgenabled_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } AlterEventTrigStmt::~AlterEventTrigStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterEventTrigStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterEventTrigStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); trigname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); tgenabled_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterEventTrigStmt::ArenaDtor(void* object) { AlterEventTrigStmt* _this = reinterpret_cast< AlterEventTrigStmt* >(object); (void)_this; } void AlterEventTrigStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterEventTrigStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterEventTrigStmt& AlterEventTrigStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_AlterEventTrigStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterEventTrigStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterEventTrigStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; trigname_.ClearToEmpty(); tgenabled_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterEventTrigStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string trigname = 1 [json_name = "trigname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_trigname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterEventTrigStmt.trigname")); CHK_(ptr); } else goto handle_unusual; continue; // string tgenabled = 2 [json_name = "tgenabled"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_tgenabled(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterEventTrigStmt.tgenabled")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterEventTrigStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterEventTrigStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string trigname = 1 [json_name = "trigname"]; if (this->trigname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_trigname().data(), static_cast(this->_internal_trigname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterEventTrigStmt.trigname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_trigname(), target); } // string tgenabled = 2 [json_name = "tgenabled"]; if (this->tgenabled().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_tgenabled().data(), static_cast(this->_internal_tgenabled().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterEventTrigStmt.tgenabled"); target = stream->WriteStringMaybeAliased( 2, this->_internal_tgenabled(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterEventTrigStmt) return target; } size_t AlterEventTrigStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterEventTrigStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string trigname = 1 [json_name = "trigname"]; if (this->trigname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_trigname()); } // string tgenabled = 2 [json_name = "tgenabled"]; if (this->tgenabled().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_tgenabled()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterEventTrigStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterEventTrigStmt) GOOGLE_DCHECK_NE(&from, this); const AlterEventTrigStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterEventTrigStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterEventTrigStmt) MergeFrom(*source); } } void AlterEventTrigStmt::MergeFrom(const AlterEventTrigStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterEventTrigStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.trigname().size() > 0) { _internal_set_trigname(from._internal_trigname()); } if (from.tgenabled().size() > 0) { _internal_set_tgenabled(from._internal_tgenabled()); } } void AlterEventTrigStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterEventTrigStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterEventTrigStmt::CopyFrom(const AlterEventTrigStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterEventTrigStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterEventTrigStmt::IsInitialized() const { return true; } void AlterEventTrigStmt::InternalSwap(AlterEventTrigStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); trigname_.Swap(&other->trigname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); tgenabled_.Swap(&other->tgenabled_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterEventTrigStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RefreshMatViewStmt::_Internal { public: static const ::pg_query::RangeVar& relation(const RefreshMatViewStmt* msg); }; const ::pg_query::RangeVar& RefreshMatViewStmt::_Internal::relation(const RefreshMatViewStmt* msg) { return *msg->relation_; } RefreshMatViewStmt::RefreshMatViewStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RefreshMatViewStmt) } RefreshMatViewStmt::RefreshMatViewStmt(const RefreshMatViewStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } ::memcpy(&concurrent_, &from.concurrent_, static_cast(reinterpret_cast(&skip_data_) - reinterpret_cast(&concurrent_)) + sizeof(skip_data_)); // @@protoc_insertion_point(copy_constructor:pg_query.RefreshMatViewStmt) } void RefreshMatViewStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&skip_data_) - reinterpret_cast(&relation_)) + sizeof(skip_data_)); } RefreshMatViewStmt::~RefreshMatViewStmt() { // @@protoc_insertion_point(destructor:pg_query.RefreshMatViewStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RefreshMatViewStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete relation_; } void RefreshMatViewStmt::ArenaDtor(void* object) { RefreshMatViewStmt* _this = reinterpret_cast< RefreshMatViewStmt* >(object); (void)_this; } void RefreshMatViewStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RefreshMatViewStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const RefreshMatViewStmt& RefreshMatViewStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RefreshMatViewStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RefreshMatViewStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; ::memset(&concurrent_, 0, static_cast( reinterpret_cast(&skip_data_) - reinterpret_cast(&concurrent_)) + sizeof(skip_data_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RefreshMatViewStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // bool concurrent = 1 [json_name = "concurrent"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { concurrent_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool skip_data = 2 [json_name = "skipData"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { skip_data_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeVar relation = 3 [json_name = "relation"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RefreshMatViewStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RefreshMatViewStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // bool concurrent = 1 [json_name = "concurrent"]; if (this->concurrent() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_concurrent(), target); } // bool skip_data = 2 [json_name = "skipData"]; if (this->skip_data() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_skip_data(), target); } // .pg_query.RangeVar relation = 3 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::relation(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RefreshMatViewStmt) return target; } size_t RefreshMatViewStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RefreshMatViewStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.RangeVar relation = 3 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // bool concurrent = 1 [json_name = "concurrent"]; if (this->concurrent() != 0) { total_size += 1 + 1; } // bool skip_data = 2 [json_name = "skipData"]; if (this->skip_data() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RefreshMatViewStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RefreshMatViewStmt) GOOGLE_DCHECK_NE(&from, this); const RefreshMatViewStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RefreshMatViewStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RefreshMatViewStmt) MergeFrom(*source); } } void RefreshMatViewStmt::MergeFrom(const RefreshMatViewStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RefreshMatViewStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.concurrent() != 0) { _internal_set_concurrent(from._internal_concurrent()); } if (from.skip_data() != 0) { _internal_set_skip_data(from._internal_skip_data()); } } void RefreshMatViewStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RefreshMatViewStmt) if (&from == this) return; Clear(); MergeFrom(from); } void RefreshMatViewStmt::CopyFrom(const RefreshMatViewStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RefreshMatViewStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool RefreshMatViewStmt::IsInitialized() const { return true; } void RefreshMatViewStmt::InternalSwap(RefreshMatViewStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, skip_data_) + sizeof(RefreshMatViewStmt::skip_data_) - PROTOBUF_FIELD_OFFSET(RefreshMatViewStmt, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RefreshMatViewStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ReplicaIdentityStmt::_Internal { public: }; ReplicaIdentityStmt::ReplicaIdentityStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ReplicaIdentityStmt) } ReplicaIdentityStmt::ReplicaIdentityStmt(const ReplicaIdentityStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); identity_type_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_identity_type().empty()) { identity_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_identity_type(), GetArena()); } name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.ReplicaIdentityStmt) } void ReplicaIdentityStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ReplicaIdentityStmt_protobuf_2fpg_5fquery_2eproto.base); identity_type_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } ReplicaIdentityStmt::~ReplicaIdentityStmt() { // @@protoc_insertion_point(destructor:pg_query.ReplicaIdentityStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ReplicaIdentityStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); identity_type_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void ReplicaIdentityStmt::ArenaDtor(void* object) { ReplicaIdentityStmt* _this = reinterpret_cast< ReplicaIdentityStmt* >(object); (void)_this; } void ReplicaIdentityStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ReplicaIdentityStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const ReplicaIdentityStmt& ReplicaIdentityStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ReplicaIdentityStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ReplicaIdentityStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ReplicaIdentityStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; identity_type_.ClearToEmpty(); name_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ReplicaIdentityStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string identity_type = 1 [json_name = "identity_type"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_identity_type(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ReplicaIdentityStmt.identity_type")); CHK_(ptr); } else goto handle_unusual; continue; // string name = 2 [json_name = "name"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ReplicaIdentityStmt.name")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ReplicaIdentityStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ReplicaIdentityStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string identity_type = 1 [json_name = "identity_type"]; if (this->identity_type().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_identity_type().data(), static_cast(this->_internal_identity_type().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ReplicaIdentityStmt.identity_type"); target = stream->WriteStringMaybeAliased( 1, this->_internal_identity_type(), target); } // string name = 2 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ReplicaIdentityStmt.name"); target = stream->WriteStringMaybeAliased( 2, this->_internal_name(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ReplicaIdentityStmt) return target; } size_t ReplicaIdentityStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ReplicaIdentityStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string identity_type = 1 [json_name = "identity_type"]; if (this->identity_type().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_identity_type()); } // string name = 2 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ReplicaIdentityStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ReplicaIdentityStmt) GOOGLE_DCHECK_NE(&from, this); const ReplicaIdentityStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ReplicaIdentityStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ReplicaIdentityStmt) MergeFrom(*source); } } void ReplicaIdentityStmt::MergeFrom(const ReplicaIdentityStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ReplicaIdentityStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.identity_type().size() > 0) { _internal_set_identity_type(from._internal_identity_type()); } if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } } void ReplicaIdentityStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ReplicaIdentityStmt) if (&from == this) return; Clear(); MergeFrom(from); } void ReplicaIdentityStmt::CopyFrom(const ReplicaIdentityStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ReplicaIdentityStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool ReplicaIdentityStmt::IsInitialized() const { return true; } void ReplicaIdentityStmt::InternalSwap(ReplicaIdentityStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); identity_type_.Swap(&other->identity_type_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata ReplicaIdentityStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterSystemStmt::_Internal { public: static const ::pg_query::VariableSetStmt& setstmt(const AlterSystemStmt* msg); }; const ::pg_query::VariableSetStmt& AlterSystemStmt::_Internal::setstmt(const AlterSystemStmt* msg) { return *msg->setstmt_; } AlterSystemStmt::AlterSystemStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterSystemStmt) } AlterSystemStmt::AlterSystemStmt(const AlterSystemStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_setstmt()) { setstmt_ = new ::pg_query::VariableSetStmt(*from.setstmt_); } else { setstmt_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.AlterSystemStmt) } void AlterSystemStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); setstmt_ = nullptr; } AlterSystemStmt::~AlterSystemStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterSystemStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterSystemStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete setstmt_; } void AlterSystemStmt::ArenaDtor(void* object) { AlterSystemStmt* _this = reinterpret_cast< AlterSystemStmt* >(object); (void)_this; } void AlterSystemStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterSystemStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterSystemStmt& AlterSystemStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterSystemStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterSystemStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && setstmt_ != nullptr) { delete setstmt_; } setstmt_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterSystemStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_setstmt(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterSystemStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterSystemStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; if (this->has_setstmt()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::setstmt(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterSystemStmt) return target; } size_t AlterSystemStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterSystemStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; if (this->has_setstmt()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *setstmt_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterSystemStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterSystemStmt) GOOGLE_DCHECK_NE(&from, this); const AlterSystemStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterSystemStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterSystemStmt) MergeFrom(*source); } } void AlterSystemStmt::MergeFrom(const AlterSystemStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterSystemStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_setstmt()) { _internal_mutable_setstmt()->::pg_query::VariableSetStmt::MergeFrom(from._internal_setstmt()); } } void AlterSystemStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterSystemStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterSystemStmt::CopyFrom(const AlterSystemStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterSystemStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterSystemStmt::IsInitialized() const { return true; } void AlterSystemStmt::InternalSwap(AlterSystemStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); swap(setstmt_, other->setstmt_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterSystemStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreatePolicyStmt::_Internal { public: static const ::pg_query::RangeVar& table(const CreatePolicyStmt* msg); static const ::pg_query::Node& qual(const CreatePolicyStmt* msg); static const ::pg_query::Node& with_check(const CreatePolicyStmt* msg); }; const ::pg_query::RangeVar& CreatePolicyStmt::_Internal::table(const CreatePolicyStmt* msg) { return *msg->table_; } const ::pg_query::Node& CreatePolicyStmt::_Internal::qual(const CreatePolicyStmt* msg) { return *msg->qual_; } const ::pg_query::Node& CreatePolicyStmt::_Internal::with_check(const CreatePolicyStmt* msg) { return *msg->with_check_; } CreatePolicyStmt::CreatePolicyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), roles_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreatePolicyStmt) } CreatePolicyStmt::CreatePolicyStmt(const CreatePolicyStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), roles_(from.roles_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); policy_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_policy_name().empty()) { policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_policy_name(), GetArena()); } cmd_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_cmd_name().empty()) { cmd_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_cmd_name(), GetArena()); } if (from._internal_has_table()) { table_ = new ::pg_query::RangeVar(*from.table_); } else { table_ = nullptr; } if (from._internal_has_qual()) { qual_ = new ::pg_query::Node(*from.qual_); } else { qual_ = nullptr; } if (from._internal_has_with_check()) { with_check_ = new ::pg_query::Node(*from.with_check_); } else { with_check_ = nullptr; } permissive_ = from.permissive_; // @@protoc_insertion_point(copy_constructor:pg_query.CreatePolicyStmt) } void CreatePolicyStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); policy_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); cmd_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&table_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&permissive_) - reinterpret_cast(&table_)) + sizeof(permissive_)); } CreatePolicyStmt::~CreatePolicyStmt() { // @@protoc_insertion_point(destructor:pg_query.CreatePolicyStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreatePolicyStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); policy_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); cmd_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete table_; if (this != internal_default_instance()) delete qual_; if (this != internal_default_instance()) delete with_check_; } void CreatePolicyStmt::ArenaDtor(void* object) { CreatePolicyStmt* _this = reinterpret_cast< CreatePolicyStmt* >(object); (void)_this; } void CreatePolicyStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreatePolicyStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreatePolicyStmt& CreatePolicyStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreatePolicyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreatePolicyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; roles_.Clear(); policy_name_.ClearToEmpty(); cmd_name_.ClearToEmpty(); if (GetArena() == nullptr && table_ != nullptr) { delete table_; } table_ = nullptr; if (GetArena() == nullptr && qual_ != nullptr) { delete qual_; } qual_ = nullptr; if (GetArena() == nullptr && with_check_ != nullptr) { delete with_check_; } with_check_ = nullptr; permissive_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreatePolicyStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string policy_name = 1 [json_name = "policy_name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_policy_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreatePolicyStmt.policy_name")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeVar table = 2 [json_name = "table"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_table(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string cmd_name = 3 [json_name = "cmd_name"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_cmd_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreatePolicyStmt.cmd_name")); CHK_(ptr); } else goto handle_unusual; continue; // bool permissive = 4 [json_name = "permissive"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { permissive_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node roles = 5 [json_name = "roles"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_roles(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node qual = 6 [json_name = "qual"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_qual(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node with_check = 7 [json_name = "with_check"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_with_check(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreatePolicyStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreatePolicyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string policy_name = 1 [json_name = "policy_name"]; if (this->policy_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_policy_name().data(), static_cast(this->_internal_policy_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreatePolicyStmt.policy_name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_policy_name(), target); } // .pg_query.RangeVar table = 2 [json_name = "table"]; if (this->has_table()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::table(this), target, stream); } // string cmd_name = 3 [json_name = "cmd_name"]; if (this->cmd_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_cmd_name().data(), static_cast(this->_internal_cmd_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreatePolicyStmt.cmd_name"); target = stream->WriteStringMaybeAliased( 3, this->_internal_cmd_name(), target); } // bool permissive = 4 [json_name = "permissive"]; if (this->permissive() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_permissive(), target); } // repeated .pg_query.Node roles = 5 [json_name = "roles"]; for (unsigned int i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_roles(i), target, stream); } // .pg_query.Node qual = 6 [json_name = "qual"]; if (this->has_qual()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::qual(this), target, stream); } // .pg_query.Node with_check = 7 [json_name = "with_check"]; if (this->has_with_check()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 7, _Internal::with_check(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreatePolicyStmt) return target; } size_t CreatePolicyStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreatePolicyStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node roles = 5 [json_name = "roles"]; total_size += 1UL * this->_internal_roles_size(); for (const auto& msg : this->roles_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string policy_name = 1 [json_name = "policy_name"]; if (this->policy_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_policy_name()); } // string cmd_name = 3 [json_name = "cmd_name"]; if (this->cmd_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_cmd_name()); } // .pg_query.RangeVar table = 2 [json_name = "table"]; if (this->has_table()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *table_); } // .pg_query.Node qual = 6 [json_name = "qual"]; if (this->has_qual()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *qual_); } // .pg_query.Node with_check = 7 [json_name = "with_check"]; if (this->has_with_check()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *with_check_); } // bool permissive = 4 [json_name = "permissive"]; if (this->permissive() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreatePolicyStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreatePolicyStmt) GOOGLE_DCHECK_NE(&from, this); const CreatePolicyStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreatePolicyStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreatePolicyStmt) MergeFrom(*source); } } void CreatePolicyStmt::MergeFrom(const CreatePolicyStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreatePolicyStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; roles_.MergeFrom(from.roles_); if (from.policy_name().size() > 0) { _internal_set_policy_name(from._internal_policy_name()); } if (from.cmd_name().size() > 0) { _internal_set_cmd_name(from._internal_cmd_name()); } if (from.has_table()) { _internal_mutable_table()->::pg_query::RangeVar::MergeFrom(from._internal_table()); } if (from.has_qual()) { _internal_mutable_qual()->::pg_query::Node::MergeFrom(from._internal_qual()); } if (from.has_with_check()) { _internal_mutable_with_check()->::pg_query::Node::MergeFrom(from._internal_with_check()); } if (from.permissive() != 0) { _internal_set_permissive(from._internal_permissive()); } } void CreatePolicyStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreatePolicyStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreatePolicyStmt::CopyFrom(const CreatePolicyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreatePolicyStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreatePolicyStmt::IsInitialized() const { return true; } void CreatePolicyStmt::InternalSwap(CreatePolicyStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); roles_.InternalSwap(&other->roles_); policy_name_.Swap(&other->policy_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); cmd_name_.Swap(&other->cmd_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, permissive_) + sizeof(CreatePolicyStmt::permissive_) - PROTOBUF_FIELD_OFFSET(CreatePolicyStmt, table_)>( reinterpret_cast(&table_), reinterpret_cast(&other->table_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreatePolicyStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterPolicyStmt::_Internal { public: static const ::pg_query::RangeVar& table(const AlterPolicyStmt* msg); static const ::pg_query::Node& qual(const AlterPolicyStmt* msg); static const ::pg_query::Node& with_check(const AlterPolicyStmt* msg); }; const ::pg_query::RangeVar& AlterPolicyStmt::_Internal::table(const AlterPolicyStmt* msg) { return *msg->table_; } const ::pg_query::Node& AlterPolicyStmt::_Internal::qual(const AlterPolicyStmt* msg) { return *msg->qual_; } const ::pg_query::Node& AlterPolicyStmt::_Internal::with_check(const AlterPolicyStmt* msg) { return *msg->with_check_; } AlterPolicyStmt::AlterPolicyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), roles_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterPolicyStmt) } AlterPolicyStmt::AlterPolicyStmt(const AlterPolicyStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), roles_(from.roles_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); policy_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_policy_name().empty()) { policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_policy_name(), GetArena()); } if (from._internal_has_table()) { table_ = new ::pg_query::RangeVar(*from.table_); } else { table_ = nullptr; } if (from._internal_has_qual()) { qual_ = new ::pg_query::Node(*from.qual_); } else { qual_ = nullptr; } if (from._internal_has_with_check()) { with_check_ = new ::pg_query::Node(*from.with_check_); } else { with_check_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.AlterPolicyStmt) } void AlterPolicyStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); policy_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&table_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&with_check_) - reinterpret_cast(&table_)) + sizeof(with_check_)); } AlterPolicyStmt::~AlterPolicyStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterPolicyStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterPolicyStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); policy_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete table_; if (this != internal_default_instance()) delete qual_; if (this != internal_default_instance()) delete with_check_; } void AlterPolicyStmt::ArenaDtor(void* object) { AlterPolicyStmt* _this = reinterpret_cast< AlterPolicyStmt* >(object); (void)_this; } void AlterPolicyStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterPolicyStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterPolicyStmt& AlterPolicyStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterPolicyStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterPolicyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; roles_.Clear(); policy_name_.ClearToEmpty(); if (GetArena() == nullptr && table_ != nullptr) { delete table_; } table_ = nullptr; if (GetArena() == nullptr && qual_ != nullptr) { delete qual_; } qual_ = nullptr; if (GetArena() == nullptr && with_check_ != nullptr) { delete with_check_; } with_check_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterPolicyStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string policy_name = 1 [json_name = "policy_name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_policy_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterPolicyStmt.policy_name")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeVar table = 2 [json_name = "table"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_table(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node roles = 3 [json_name = "roles"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_roles(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node qual = 4 [json_name = "qual"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_qual(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node with_check = 5 [json_name = "with_check"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_with_check(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterPolicyStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterPolicyStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string policy_name = 1 [json_name = "policy_name"]; if (this->policy_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_policy_name().data(), static_cast(this->_internal_policy_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterPolicyStmt.policy_name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_policy_name(), target); } // .pg_query.RangeVar table = 2 [json_name = "table"]; if (this->has_table()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::table(this), target, stream); } // repeated .pg_query.Node roles = 3 [json_name = "roles"]; for (unsigned int i = 0, n = static_cast(this->_internal_roles_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_roles(i), target, stream); } // .pg_query.Node qual = 4 [json_name = "qual"]; if (this->has_qual()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::qual(this), target, stream); } // .pg_query.Node with_check = 5 [json_name = "with_check"]; if (this->has_with_check()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::with_check(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterPolicyStmt) return target; } size_t AlterPolicyStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterPolicyStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node roles = 3 [json_name = "roles"]; total_size += 1UL * this->_internal_roles_size(); for (const auto& msg : this->roles_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string policy_name = 1 [json_name = "policy_name"]; if (this->policy_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_policy_name()); } // .pg_query.RangeVar table = 2 [json_name = "table"]; if (this->has_table()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *table_); } // .pg_query.Node qual = 4 [json_name = "qual"]; if (this->has_qual()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *qual_); } // .pg_query.Node with_check = 5 [json_name = "with_check"]; if (this->has_with_check()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *with_check_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterPolicyStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterPolicyStmt) GOOGLE_DCHECK_NE(&from, this); const AlterPolicyStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterPolicyStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterPolicyStmt) MergeFrom(*source); } } void AlterPolicyStmt::MergeFrom(const AlterPolicyStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterPolicyStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; roles_.MergeFrom(from.roles_); if (from.policy_name().size() > 0) { _internal_set_policy_name(from._internal_policy_name()); } if (from.has_table()) { _internal_mutable_table()->::pg_query::RangeVar::MergeFrom(from._internal_table()); } if (from.has_qual()) { _internal_mutable_qual()->::pg_query::Node::MergeFrom(from._internal_qual()); } if (from.has_with_check()) { _internal_mutable_with_check()->::pg_query::Node::MergeFrom(from._internal_with_check()); } } void AlterPolicyStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterPolicyStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterPolicyStmt::CopyFrom(const AlterPolicyStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterPolicyStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterPolicyStmt::IsInitialized() const { return true; } void AlterPolicyStmt::InternalSwap(AlterPolicyStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); roles_.InternalSwap(&other->roles_); policy_name_.Swap(&other->policy_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, with_check_) + sizeof(AlterPolicyStmt::with_check_) - PROTOBUF_FIELD_OFFSET(AlterPolicyStmt, table_)>( reinterpret_cast(&table_), reinterpret_cast(&other->table_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterPolicyStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateTransformStmt::_Internal { public: static const ::pg_query::TypeName& type_name(const CreateTransformStmt* msg); static const ::pg_query::ObjectWithArgs& fromsql(const CreateTransformStmt* msg); static const ::pg_query::ObjectWithArgs& tosql(const CreateTransformStmt* msg); }; const ::pg_query::TypeName& CreateTransformStmt::_Internal::type_name(const CreateTransformStmt* msg) { return *msg->type_name_; } const ::pg_query::ObjectWithArgs& CreateTransformStmt::_Internal::fromsql(const CreateTransformStmt* msg) { return *msg->fromsql_; } const ::pg_query::ObjectWithArgs& CreateTransformStmt::_Internal::tosql(const CreateTransformStmt* msg) { return *msg->tosql_; } CreateTransformStmt::CreateTransformStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateTransformStmt) } CreateTransformStmt::CreateTransformStmt(const CreateTransformStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); lang_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_lang().empty()) { lang_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_lang(), GetArena()); } if (from._internal_has_type_name()) { type_name_ = new ::pg_query::TypeName(*from.type_name_); } else { type_name_ = nullptr; } if (from._internal_has_fromsql()) { fromsql_ = new ::pg_query::ObjectWithArgs(*from.fromsql_); } else { fromsql_ = nullptr; } if (from._internal_has_tosql()) { tosql_ = new ::pg_query::ObjectWithArgs(*from.tosql_); } else { tosql_ = nullptr; } replace_ = from.replace_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateTransformStmt) } void CreateTransformStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); lang_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&type_name_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&replace_) - reinterpret_cast(&type_name_)) + sizeof(replace_)); } CreateTransformStmt::~CreateTransformStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateTransformStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateTransformStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); lang_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete type_name_; if (this != internal_default_instance()) delete fromsql_; if (this != internal_default_instance()) delete tosql_; } void CreateTransformStmt::ArenaDtor(void* object) { CreateTransformStmt* _this = reinterpret_cast< CreateTransformStmt* >(object); (void)_this; } void CreateTransformStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateTransformStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateTransformStmt& CreateTransformStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateTransformStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateTransformStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; lang_.ClearToEmpty(); if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; if (GetArena() == nullptr && fromsql_ != nullptr) { delete fromsql_; } fromsql_ = nullptr; if (GetArena() == nullptr && tosql_ != nullptr) { delete tosql_; } tosql_ = nullptr; replace_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateTransformStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // bool replace = 1 [json_name = "replace"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { replace_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_type_name(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string lang = 3 [json_name = "lang"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_lang(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateTransformStmt.lang")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_fromsql(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_tosql(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateTransformStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateTransformStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // bool replace = 1 [json_name = "replace"]; if (this->replace() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_replace(), target); } // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; if (this->has_type_name()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::type_name(this), target, stream); } // string lang = 3 [json_name = "lang"]; if (this->lang().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_lang().data(), static_cast(this->_internal_lang().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateTransformStmt.lang"); target = stream->WriteStringMaybeAliased( 3, this->_internal_lang(), target); } // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; if (this->has_fromsql()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::fromsql(this), target, stream); } // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; if (this->has_tosql()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::tosql(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateTransformStmt) return target; } size_t CreateTransformStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateTransformStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string lang = 3 [json_name = "lang"]; if (this->lang().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_lang()); } // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; if (this->has_type_name()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *type_name_); } // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; if (this->has_fromsql()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *fromsql_); } // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; if (this->has_tosql()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *tosql_); } // bool replace = 1 [json_name = "replace"]; if (this->replace() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateTransformStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateTransformStmt) GOOGLE_DCHECK_NE(&from, this); const CreateTransformStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateTransformStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateTransformStmt) MergeFrom(*source); } } void CreateTransformStmt::MergeFrom(const CreateTransformStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateTransformStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.lang().size() > 0) { _internal_set_lang(from._internal_lang()); } if (from.has_type_name()) { _internal_mutable_type_name()->::pg_query::TypeName::MergeFrom(from._internal_type_name()); } if (from.has_fromsql()) { _internal_mutable_fromsql()->::pg_query::ObjectWithArgs::MergeFrom(from._internal_fromsql()); } if (from.has_tosql()) { _internal_mutable_tosql()->::pg_query::ObjectWithArgs::MergeFrom(from._internal_tosql()); } if (from.replace() != 0) { _internal_set_replace(from._internal_replace()); } } void CreateTransformStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateTransformStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateTransformStmt::CopyFrom(const CreateTransformStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateTransformStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateTransformStmt::IsInitialized() const { return true; } void CreateTransformStmt::InternalSwap(CreateTransformStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); lang_.Swap(&other->lang_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateTransformStmt, replace_) + sizeof(CreateTransformStmt::replace_) - PROTOBUF_FIELD_OFFSET(CreateTransformStmt, type_name_)>( reinterpret_cast(&type_name_), reinterpret_cast(&other->type_name_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateTransformStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateAmStmt::_Internal { public: }; CreateAmStmt::CreateAmStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), handler_name_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateAmStmt) } CreateAmStmt::CreateAmStmt(const CreateAmStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), handler_name_(from.handler_name_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); amname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_amname().empty()) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_amname(), GetArena()); } amtype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_amtype().empty()) { amtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_amtype(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.CreateAmStmt) } void CreateAmStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); amname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); amtype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } CreateAmStmt::~CreateAmStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateAmStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateAmStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); amname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); amtype_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreateAmStmt::ArenaDtor(void* object) { CreateAmStmt* _this = reinterpret_cast< CreateAmStmt* >(object); (void)_this; } void CreateAmStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateAmStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateAmStmt& CreateAmStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateAmStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateAmStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; handler_name_.Clear(); amname_.ClearToEmpty(); amtype_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateAmStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string amname = 1 [json_name = "amname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_amname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateAmStmt.amname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node handler_name = 2 [json_name = "handler_name"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_handler_name(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // string amtype = 3 [json_name = "amtype"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_amtype(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateAmStmt.amtype")); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateAmStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateAmStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string amname = 1 [json_name = "amname"]; if (this->amname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_amname().data(), static_cast(this->_internal_amname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateAmStmt.amname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_amname(), target); } // repeated .pg_query.Node handler_name = 2 [json_name = "handler_name"]; for (unsigned int i = 0, n = static_cast(this->_internal_handler_name_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_handler_name(i), target, stream); } // string amtype = 3 [json_name = "amtype"]; if (this->amtype().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_amtype().data(), static_cast(this->_internal_amtype().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateAmStmt.amtype"); target = stream->WriteStringMaybeAliased( 3, this->_internal_amtype(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateAmStmt) return target; } size_t CreateAmStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateAmStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node handler_name = 2 [json_name = "handler_name"]; total_size += 1UL * this->_internal_handler_name_size(); for (const auto& msg : this->handler_name_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string amname = 1 [json_name = "amname"]; if (this->amname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_amname()); } // string amtype = 3 [json_name = "amtype"]; if (this->amtype().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_amtype()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateAmStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateAmStmt) GOOGLE_DCHECK_NE(&from, this); const CreateAmStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateAmStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateAmStmt) MergeFrom(*source); } } void CreateAmStmt::MergeFrom(const CreateAmStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateAmStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; handler_name_.MergeFrom(from.handler_name_); if (from.amname().size() > 0) { _internal_set_amname(from._internal_amname()); } if (from.amtype().size() > 0) { _internal_set_amtype(from._internal_amtype()); } } void CreateAmStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateAmStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateAmStmt::CopyFrom(const CreateAmStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateAmStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateAmStmt::IsInitialized() const { return true; } void CreateAmStmt::InternalSwap(CreateAmStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); handler_name_.InternalSwap(&other->handler_name_); amname_.Swap(&other->amname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); amtype_.Swap(&other->amtype_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateAmStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreatePublicationStmt::_Internal { public: }; CreatePublicationStmt::CreatePublicationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena), tables_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreatePublicationStmt) } CreatePublicationStmt::CreatePublicationStmt(const CreatePublicationStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_), tables_(from.tables_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); pubname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_pubname().empty()) { pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_pubname(), GetArena()); } for_all_tables_ = from.for_all_tables_; // @@protoc_insertion_point(copy_constructor:pg_query.CreatePublicationStmt) } void CreatePublicationStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); pubname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); for_all_tables_ = false; } CreatePublicationStmt::~CreatePublicationStmt() { // @@protoc_insertion_point(destructor:pg_query.CreatePublicationStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreatePublicationStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); pubname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreatePublicationStmt::ArenaDtor(void* object) { CreatePublicationStmt* _this = reinterpret_cast< CreatePublicationStmt* >(object); (void)_this; } void CreatePublicationStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreatePublicationStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreatePublicationStmt& CreatePublicationStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreatePublicationStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreatePublicationStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); tables_.Clear(); pubname_.ClearToEmpty(); for_all_tables_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreatePublicationStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string pubname = 1 [json_name = "pubname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_pubname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreatePublicationStmt.pubname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node tables = 3 [json_name = "tables"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_tables(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // bool for_all_tables = 4 [json_name = "for_all_tables"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { for_all_tables_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreatePublicationStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreatePublicationStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string pubname = 1 [json_name = "pubname"]; if (this->pubname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_pubname().data(), static_cast(this->_internal_pubname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreatePublicationStmt.pubname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_pubname(), target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } // repeated .pg_query.Node tables = 3 [json_name = "tables"]; for (unsigned int i = 0, n = static_cast(this->_internal_tables_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_tables(i), target, stream); } // bool for_all_tables = 4 [json_name = "for_all_tables"]; if (this->for_all_tables() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_for_all_tables(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreatePublicationStmt) return target; } size_t CreatePublicationStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreatePublicationStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node tables = 3 [json_name = "tables"]; total_size += 1UL * this->_internal_tables_size(); for (const auto& msg : this->tables_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string pubname = 1 [json_name = "pubname"]; if (this->pubname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_pubname()); } // bool for_all_tables = 4 [json_name = "for_all_tables"]; if (this->for_all_tables() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreatePublicationStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreatePublicationStmt) GOOGLE_DCHECK_NE(&from, this); const CreatePublicationStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreatePublicationStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreatePublicationStmt) MergeFrom(*source); } } void CreatePublicationStmt::MergeFrom(const CreatePublicationStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreatePublicationStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); tables_.MergeFrom(from.tables_); if (from.pubname().size() > 0) { _internal_set_pubname(from._internal_pubname()); } if (from.for_all_tables() != 0) { _internal_set_for_all_tables(from._internal_for_all_tables()); } } void CreatePublicationStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreatePublicationStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreatePublicationStmt::CopyFrom(const CreatePublicationStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreatePublicationStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreatePublicationStmt::IsInitialized() const { return true; } void CreatePublicationStmt::InternalSwap(CreatePublicationStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); tables_.InternalSwap(&other->tables_); pubname_.Swap(&other->pubname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(for_all_tables_, other->for_all_tables_); } ::PROTOBUF_NAMESPACE_ID::Metadata CreatePublicationStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterPublicationStmt::_Internal { public: }; AlterPublicationStmt::AlterPublicationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), options_(arena), tables_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterPublicationStmt) } AlterPublicationStmt::AlterPublicationStmt(const AlterPublicationStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), options_(from.options_), tables_(from.tables_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); pubname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_pubname().empty()) { pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_pubname(), GetArena()); } ::memcpy(&for_all_tables_, &from.for_all_tables_, static_cast(reinterpret_cast(&table_action_) - reinterpret_cast(&for_all_tables_)) + sizeof(table_action_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterPublicationStmt) } void AlterPublicationStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); pubname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&for_all_tables_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&table_action_) - reinterpret_cast(&for_all_tables_)) + sizeof(table_action_)); } AlterPublicationStmt::~AlterPublicationStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterPublicationStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterPublicationStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); pubname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterPublicationStmt::ArenaDtor(void* object) { AlterPublicationStmt* _this = reinterpret_cast< AlterPublicationStmt* >(object); (void)_this; } void AlterPublicationStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterPublicationStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterPublicationStmt& AlterPublicationStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterPublicationStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterPublicationStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; options_.Clear(); tables_.Clear(); pubname_.ClearToEmpty(); ::memset(&for_all_tables_, 0, static_cast( reinterpret_cast(&table_action_) - reinterpret_cast(&for_all_tables_)) + sizeof(table_action_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterPublicationStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string pubname = 1 [json_name = "pubname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_pubname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterPublicationStmt.pubname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node tables = 3 [json_name = "tables"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_tables(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // bool for_all_tables = 4 [json_name = "for_all_tables"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { for_all_tables_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DefElemAction table_action = 5 [json_name = "tableAction"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_table_action(static_cast<::pg_query::DefElemAction>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterPublicationStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterPublicationStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string pubname = 1 [json_name = "pubname"]; if (this->pubname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_pubname().data(), static_cast(this->_internal_pubname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterPublicationStmt.pubname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_pubname(), target); } // repeated .pg_query.Node options = 2 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_options(i), target, stream); } // repeated .pg_query.Node tables = 3 [json_name = "tables"]; for (unsigned int i = 0, n = static_cast(this->_internal_tables_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_tables(i), target, stream); } // bool for_all_tables = 4 [json_name = "for_all_tables"]; if (this->for_all_tables() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_for_all_tables(), target); } // .pg_query.DefElemAction table_action = 5 [json_name = "tableAction"]; if (this->table_action() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 5, this->_internal_table_action(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterPublicationStmt) return target; } size_t AlterPublicationStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterPublicationStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node options = 2 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node tables = 3 [json_name = "tables"]; total_size += 1UL * this->_internal_tables_size(); for (const auto& msg : this->tables_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string pubname = 1 [json_name = "pubname"]; if (this->pubname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_pubname()); } // bool for_all_tables = 4 [json_name = "for_all_tables"]; if (this->for_all_tables() != 0) { total_size += 1 + 1; } // .pg_query.DefElemAction table_action = 5 [json_name = "tableAction"]; if (this->table_action() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_table_action()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterPublicationStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterPublicationStmt) GOOGLE_DCHECK_NE(&from, this); const AlterPublicationStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterPublicationStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterPublicationStmt) MergeFrom(*source); } } void AlterPublicationStmt::MergeFrom(const AlterPublicationStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterPublicationStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; options_.MergeFrom(from.options_); tables_.MergeFrom(from.tables_); if (from.pubname().size() > 0) { _internal_set_pubname(from._internal_pubname()); } if (from.for_all_tables() != 0) { _internal_set_for_all_tables(from._internal_for_all_tables()); } if (from.table_action() != 0) { _internal_set_table_action(from._internal_table_action()); } } void AlterPublicationStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterPublicationStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterPublicationStmt::CopyFrom(const AlterPublicationStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterPublicationStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterPublicationStmt::IsInitialized() const { return true; } void AlterPublicationStmt::InternalSwap(AlterPublicationStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); options_.InternalSwap(&other->options_); tables_.InternalSwap(&other->tables_); pubname_.Swap(&other->pubname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, table_action_) + sizeof(AlterPublicationStmt::table_action_) - PROTOBUF_FIELD_OFFSET(AlterPublicationStmt, for_all_tables_)>( reinterpret_cast(&for_all_tables_), reinterpret_cast(&other->for_all_tables_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterPublicationStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateSubscriptionStmt::_Internal { public: }; CreateSubscriptionStmt::CreateSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), publication_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateSubscriptionStmt) } CreateSubscriptionStmt::CreateSubscriptionStmt(const CreateSubscriptionStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), publication_(from.publication_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); subname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_subname().empty()) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_subname(), GetArena()); } conninfo_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_conninfo().empty()) { conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_conninfo(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.CreateSubscriptionStmt) } void CreateSubscriptionStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); subname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); conninfo_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } CreateSubscriptionStmt::~CreateSubscriptionStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateSubscriptionStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateSubscriptionStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); subname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); conninfo_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreateSubscriptionStmt::ArenaDtor(void* object) { CreateSubscriptionStmt* _this = reinterpret_cast< CreateSubscriptionStmt* >(object); (void)_this; } void CreateSubscriptionStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateSubscriptionStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateSubscriptionStmt& CreateSubscriptionStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateSubscriptionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateSubscriptionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; publication_.Clear(); options_.Clear(); subname_.ClearToEmpty(); conninfo_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateSubscriptionStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string subname = 1 [json_name = "subname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_subname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateSubscriptionStmt.subname")); CHK_(ptr); } else goto handle_unusual; continue; // string conninfo = 2 [json_name = "conninfo"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_conninfo(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateSubscriptionStmt.conninfo")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node publication = 3 [json_name = "publication"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_publication(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 4 [json_name = "options"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateSubscriptionStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateSubscriptionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string subname = 1 [json_name = "subname"]; if (this->subname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_subname().data(), static_cast(this->_internal_subname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateSubscriptionStmt.subname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_subname(), target); } // string conninfo = 2 [json_name = "conninfo"]; if (this->conninfo().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_conninfo().data(), static_cast(this->_internal_conninfo().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateSubscriptionStmt.conninfo"); target = stream->WriteStringMaybeAliased( 2, this->_internal_conninfo(), target); } // repeated .pg_query.Node publication = 3 [json_name = "publication"]; for (unsigned int i = 0, n = static_cast(this->_internal_publication_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_publication(i), target, stream); } // repeated .pg_query.Node options = 4 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateSubscriptionStmt) return target; } size_t CreateSubscriptionStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateSubscriptionStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node publication = 3 [json_name = "publication"]; total_size += 1UL * this->_internal_publication_size(); for (const auto& msg : this->publication_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 4 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string subname = 1 [json_name = "subname"]; if (this->subname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_subname()); } // string conninfo = 2 [json_name = "conninfo"]; if (this->conninfo().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_conninfo()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateSubscriptionStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateSubscriptionStmt) GOOGLE_DCHECK_NE(&from, this); const CreateSubscriptionStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateSubscriptionStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateSubscriptionStmt) MergeFrom(*source); } } void CreateSubscriptionStmt::MergeFrom(const CreateSubscriptionStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateSubscriptionStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; publication_.MergeFrom(from.publication_); options_.MergeFrom(from.options_); if (from.subname().size() > 0) { _internal_set_subname(from._internal_subname()); } if (from.conninfo().size() > 0) { _internal_set_conninfo(from._internal_conninfo()); } } void CreateSubscriptionStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateSubscriptionStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateSubscriptionStmt::CopyFrom(const CreateSubscriptionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateSubscriptionStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateSubscriptionStmt::IsInitialized() const { return true; } void CreateSubscriptionStmt::InternalSwap(CreateSubscriptionStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); publication_.InternalSwap(&other->publication_); options_.InternalSwap(&other->options_); subname_.Swap(&other->subname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); conninfo_.Swap(&other->conninfo_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateSubscriptionStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterSubscriptionStmt::_Internal { public: }; AlterSubscriptionStmt::AlterSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), publication_(arena), options_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterSubscriptionStmt) } AlterSubscriptionStmt::AlterSubscriptionStmt(const AlterSubscriptionStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), publication_(from.publication_), options_(from.options_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); subname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_subname().empty()) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_subname(), GetArena()); } conninfo_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_conninfo().empty()) { conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_conninfo(), GetArena()); } kind_ = from.kind_; // @@protoc_insertion_point(copy_constructor:pg_query.AlterSubscriptionStmt) } void AlterSubscriptionStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); subname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); conninfo_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); kind_ = 0; } AlterSubscriptionStmt::~AlterSubscriptionStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterSubscriptionStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterSubscriptionStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); subname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); conninfo_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AlterSubscriptionStmt::ArenaDtor(void* object) { AlterSubscriptionStmt* _this = reinterpret_cast< AlterSubscriptionStmt* >(object); (void)_this; } void AlterSubscriptionStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterSubscriptionStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterSubscriptionStmt& AlterSubscriptionStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterSubscriptionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterSubscriptionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; publication_.Clear(); options_.Clear(); subname_.ClearToEmpty(); conninfo_.ClearToEmpty(); kind_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterSubscriptionStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_kind(static_cast<::pg_query::AlterSubscriptionType>(val)); } else goto handle_unusual; continue; // string subname = 2 [json_name = "subname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_subname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterSubscriptionStmt.subname")); CHK_(ptr); } else goto handle_unusual; continue; // string conninfo = 3 [json_name = "conninfo"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_conninfo(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AlterSubscriptionStmt.conninfo")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node publication = 4 [json_name = "publication"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_publication(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 5 [json_name = "options"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterSubscriptionStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterSubscriptionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; if (this->kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // string subname = 2 [json_name = "subname"]; if (this->subname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_subname().data(), static_cast(this->_internal_subname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterSubscriptionStmt.subname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_subname(), target); } // string conninfo = 3 [json_name = "conninfo"]; if (this->conninfo().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_conninfo().data(), static_cast(this->_internal_conninfo().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AlterSubscriptionStmt.conninfo"); target = stream->WriteStringMaybeAliased( 3, this->_internal_conninfo(), target); } // repeated .pg_query.Node publication = 4 [json_name = "publication"]; for (unsigned int i = 0, n = static_cast(this->_internal_publication_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_publication(i), target, stream); } // repeated .pg_query.Node options = 5 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_options(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterSubscriptionStmt) return target; } size_t AlterSubscriptionStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterSubscriptionStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node publication = 4 [json_name = "publication"]; total_size += 1UL * this->_internal_publication_size(); for (const auto& msg : this->publication_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 5 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string subname = 2 [json_name = "subname"]; if (this->subname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_subname()); } // string conninfo = 3 [json_name = "conninfo"]; if (this->conninfo().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_conninfo()); } // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; if (this->kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterSubscriptionStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterSubscriptionStmt) GOOGLE_DCHECK_NE(&from, this); const AlterSubscriptionStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterSubscriptionStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterSubscriptionStmt) MergeFrom(*source); } } void AlterSubscriptionStmt::MergeFrom(const AlterSubscriptionStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterSubscriptionStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; publication_.MergeFrom(from.publication_); options_.MergeFrom(from.options_); if (from.subname().size() > 0) { _internal_set_subname(from._internal_subname()); } if (from.conninfo().size() > 0) { _internal_set_conninfo(from._internal_conninfo()); } if (from.kind() != 0) { _internal_set_kind(from._internal_kind()); } } void AlterSubscriptionStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterSubscriptionStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterSubscriptionStmt::CopyFrom(const AlterSubscriptionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterSubscriptionStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterSubscriptionStmt::IsInitialized() const { return true; } void AlterSubscriptionStmt::InternalSwap(AlterSubscriptionStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); publication_.InternalSwap(&other->publication_); options_.InternalSwap(&other->options_); subname_.Swap(&other->subname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); conninfo_.Swap(&other->conninfo_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(kind_, other->kind_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterSubscriptionStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DropSubscriptionStmt::_Internal { public: }; DropSubscriptionStmt::DropSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DropSubscriptionStmt) } DropSubscriptionStmt::DropSubscriptionStmt(const DropSubscriptionStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); subname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_subname().empty()) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_subname(), GetArena()); } ::memcpy(&missing_ok_, &from.missing_ok_, static_cast(reinterpret_cast(&behavior_) - reinterpret_cast(&missing_ok_)) + sizeof(behavior_)); // @@protoc_insertion_point(copy_constructor:pg_query.DropSubscriptionStmt) } void DropSubscriptionStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_DropSubscriptionStmt_protobuf_2fpg_5fquery_2eproto.base); subname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&missing_ok_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&behavior_) - reinterpret_cast(&missing_ok_)) + sizeof(behavior_)); } DropSubscriptionStmt::~DropSubscriptionStmt() { // @@protoc_insertion_point(destructor:pg_query.DropSubscriptionStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DropSubscriptionStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); subname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void DropSubscriptionStmt::ArenaDtor(void* object) { DropSubscriptionStmt* _this = reinterpret_cast< DropSubscriptionStmt* >(object); (void)_this; } void DropSubscriptionStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DropSubscriptionStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const DropSubscriptionStmt& DropSubscriptionStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_DropSubscriptionStmt_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DropSubscriptionStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DropSubscriptionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; subname_.ClearToEmpty(); ::memset(&missing_ok_, 0, static_cast( reinterpret_cast(&behavior_) - reinterpret_cast(&missing_ok_)) + sizeof(behavior_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DropSubscriptionStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string subname = 1 [json_name = "subname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_subname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.DropSubscriptionStmt.subname")); CHK_(ptr); } else goto handle_unusual; continue; // bool missing_ok = 2 [json_name = "missing_ok"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_behavior(static_cast<::pg_query::DropBehavior>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DropSubscriptionStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DropSubscriptionStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string subname = 1 [json_name = "subname"]; if (this->subname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_subname().data(), static_cast(this->_internal_subname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.DropSubscriptionStmt.subname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_subname(), target); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_missing_ok(), target); } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->behavior() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_behavior(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DropSubscriptionStmt) return target; } size_t DropSubscriptionStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DropSubscriptionStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string subname = 1 [json_name = "subname"]; if (this->subname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_subname()); } // bool missing_ok = 2 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; if (this->behavior() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_behavior()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DropSubscriptionStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DropSubscriptionStmt) GOOGLE_DCHECK_NE(&from, this); const DropSubscriptionStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DropSubscriptionStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DropSubscriptionStmt) MergeFrom(*source); } } void DropSubscriptionStmt::MergeFrom(const DropSubscriptionStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DropSubscriptionStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.subname().size() > 0) { _internal_set_subname(from._internal_subname()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } if (from.behavior() != 0) { _internal_set_behavior(from._internal_behavior()); } } void DropSubscriptionStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DropSubscriptionStmt) if (&from == this) return; Clear(); MergeFrom(from); } void DropSubscriptionStmt::CopyFrom(const DropSubscriptionStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DropSubscriptionStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool DropSubscriptionStmt::IsInitialized() const { return true; } void DropSubscriptionStmt::InternalSwap(DropSubscriptionStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); subname_.Swap(&other->subname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(DropSubscriptionStmt, behavior_) + sizeof(DropSubscriptionStmt::behavior_) - PROTOBUF_FIELD_OFFSET(DropSubscriptionStmt, missing_ok_)>( reinterpret_cast(&missing_ok_), reinterpret_cast(&other->missing_ok_)); } ::PROTOBUF_NAMESPACE_ID::Metadata DropSubscriptionStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateStatsStmt::_Internal { public: }; CreateStatsStmt::CreateStatsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), defnames_(arena), stat_types_(arena), exprs_(arena), relations_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateStatsStmt) } CreateStatsStmt::CreateStatsStmt(const CreateStatsStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), defnames_(from.defnames_), stat_types_(from.stat_types_), exprs_(from.exprs_), relations_(from.relations_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); stxcomment_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_stxcomment().empty()) { stxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_stxcomment(), GetArena()); } if_not_exists_ = from.if_not_exists_; // @@protoc_insertion_point(copy_constructor:pg_query.CreateStatsStmt) } void CreateStatsStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); stxcomment_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if_not_exists_ = false; } CreateStatsStmt::~CreateStatsStmt() { // @@protoc_insertion_point(destructor:pg_query.CreateStatsStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateStatsStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); stxcomment_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void CreateStatsStmt::ArenaDtor(void* object) { CreateStatsStmt* _this = reinterpret_cast< CreateStatsStmt* >(object); (void)_this; } void CreateStatsStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateStatsStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateStatsStmt& CreateStatsStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateStatsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateStatsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; defnames_.Clear(); stat_types_.Clear(); exprs_.Clear(); relations_.Clear(); stxcomment_.ClearToEmpty(); if_not_exists_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateStatsStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_defnames(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_stat_types(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_exprs(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node relations = 4 [json_name = "relations"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_relations(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // string stxcomment = 5 [json_name = "stxcomment"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { auto str = _internal_mutable_stxcomment(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CreateStatsStmt.stxcomment")); CHK_(ptr); } else goto handle_unusual; continue; // bool if_not_exists = 6 [json_name = "if_not_exists"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateStatsStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateStatsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; for (unsigned int i = 0, n = static_cast(this->_internal_defnames_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_defnames(i), target, stream); } // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; for (unsigned int i = 0, n = static_cast(this->_internal_stat_types_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_stat_types(i), target, stream); } // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; for (unsigned int i = 0, n = static_cast(this->_internal_exprs_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_exprs(i), target, stream); } // repeated .pg_query.Node relations = 4 [json_name = "relations"]; for (unsigned int i = 0, n = static_cast(this->_internal_relations_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_relations(i), target, stream); } // string stxcomment = 5 [json_name = "stxcomment"]; if (this->stxcomment().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_stxcomment().data(), static_cast(this->_internal_stxcomment().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CreateStatsStmt.stxcomment"); target = stream->WriteStringMaybeAliased( 5, this->_internal_stxcomment(), target); } // bool if_not_exists = 6 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_if_not_exists(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateStatsStmt) return target; } size_t CreateStatsStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateStatsStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; total_size += 1UL * this->_internal_defnames_size(); for (const auto& msg : this->defnames_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; total_size += 1UL * this->_internal_stat_types_size(); for (const auto& msg : this->stat_types_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; total_size += 1UL * this->_internal_exprs_size(); for (const auto& msg : this->exprs_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node relations = 4 [json_name = "relations"]; total_size += 1UL * this->_internal_relations_size(); for (const auto& msg : this->relations_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string stxcomment = 5 [json_name = "stxcomment"]; if (this->stxcomment().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_stxcomment()); } // bool if_not_exists = 6 [json_name = "if_not_exists"]; if (this->if_not_exists() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateStatsStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateStatsStmt) GOOGLE_DCHECK_NE(&from, this); const CreateStatsStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateStatsStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateStatsStmt) MergeFrom(*source); } } void CreateStatsStmt::MergeFrom(const CreateStatsStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateStatsStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; defnames_.MergeFrom(from.defnames_); stat_types_.MergeFrom(from.stat_types_); exprs_.MergeFrom(from.exprs_); relations_.MergeFrom(from.relations_); if (from.stxcomment().size() > 0) { _internal_set_stxcomment(from._internal_stxcomment()); } if (from.if_not_exists() != 0) { _internal_set_if_not_exists(from._internal_if_not_exists()); } } void CreateStatsStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateStatsStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CreateStatsStmt::CopyFrom(const CreateStatsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateStatsStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateStatsStmt::IsInitialized() const { return true; } void CreateStatsStmt::InternalSwap(CreateStatsStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); defnames_.InternalSwap(&other->defnames_); stat_types_.InternalSwap(&other->stat_types_); exprs_.InternalSwap(&other->exprs_); relations_.InternalSwap(&other->relations_); stxcomment_.Swap(&other->stxcomment_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(if_not_exists_, other->if_not_exists_); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateStatsStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterCollationStmt::_Internal { public: }; AlterCollationStmt::AlterCollationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), collname_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterCollationStmt) } AlterCollationStmt::AlterCollationStmt(const AlterCollationStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), collname_(from.collname_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.AlterCollationStmt) } void AlterCollationStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); } AlterCollationStmt::~AlterCollationStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterCollationStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterCollationStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void AlterCollationStmt::ArenaDtor(void* object) { AlterCollationStmt* _this = reinterpret_cast< AlterCollationStmt* >(object); (void)_this; } void AlterCollationStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterCollationStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterCollationStmt& AlterCollationStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterCollationStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterCollationStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; collname_.Clear(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterCollationStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node collname = 1 [json_name = "collname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_collname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterCollationStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterCollationStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node collname = 1 [json_name = "collname"]; for (unsigned int i = 0, n = static_cast(this->_internal_collname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_collname(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterCollationStmt) return target; } size_t AlterCollationStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterCollationStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node collname = 1 [json_name = "collname"]; total_size += 1UL * this->_internal_collname_size(); for (const auto& msg : this->collname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterCollationStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterCollationStmt) GOOGLE_DCHECK_NE(&from, this); const AlterCollationStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterCollationStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterCollationStmt) MergeFrom(*source); } } void AlterCollationStmt::MergeFrom(const AlterCollationStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterCollationStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; collname_.MergeFrom(from.collname_); } void AlterCollationStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterCollationStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterCollationStmt::CopyFrom(const AlterCollationStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterCollationStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterCollationStmt::IsInitialized() const { return true; } void AlterCollationStmt::InternalSwap(AlterCollationStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); collname_.InternalSwap(&other->collname_); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterCollationStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CallStmt::_Internal { public: static const ::pg_query::FuncCall& funccall(const CallStmt* msg); static const ::pg_query::FuncExpr& funcexpr(const CallStmt* msg); }; const ::pg_query::FuncCall& CallStmt::_Internal::funccall(const CallStmt* msg) { return *msg->funccall_; } const ::pg_query::FuncExpr& CallStmt::_Internal::funcexpr(const CallStmt* msg) { return *msg->funcexpr_; } CallStmt::CallStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CallStmt) } CallStmt::CallStmt(const CallStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_funccall()) { funccall_ = new ::pg_query::FuncCall(*from.funccall_); } else { funccall_ = nullptr; } if (from._internal_has_funcexpr()) { funcexpr_ = new ::pg_query::FuncExpr(*from.funcexpr_); } else { funcexpr_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.CallStmt) } void CallStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&funccall_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&funcexpr_) - reinterpret_cast(&funccall_)) + sizeof(funcexpr_)); } CallStmt::~CallStmt() { // @@protoc_insertion_point(destructor:pg_query.CallStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CallStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete funccall_; if (this != internal_default_instance()) delete funcexpr_; } void CallStmt::ArenaDtor(void* object) { CallStmt* _this = reinterpret_cast< CallStmt* >(object); (void)_this; } void CallStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CallStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const CallStmt& CallStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CallStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CallStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && funccall_ != nullptr) { delete funccall_; } funccall_ = nullptr; if (GetArena() == nullptr && funcexpr_ != nullptr) { delete funcexpr_; } funcexpr_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CallStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_funccall(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_funcexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CallStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CallStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; if (this->has_funccall()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::funccall(this), target, stream); } // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; if (this->has_funcexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::funcexpr(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CallStmt) return target; } size_t CallStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CallStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; if (this->has_funccall()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *funccall_); } // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; if (this->has_funcexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *funcexpr_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CallStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CallStmt) GOOGLE_DCHECK_NE(&from, this); const CallStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CallStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CallStmt) MergeFrom(*source); } } void CallStmt::MergeFrom(const CallStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CallStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_funccall()) { _internal_mutable_funccall()->::pg_query::FuncCall::MergeFrom(from._internal_funccall()); } if (from.has_funcexpr()) { _internal_mutable_funcexpr()->::pg_query::FuncExpr::MergeFrom(from._internal_funcexpr()); } } void CallStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CallStmt) if (&from == this) return; Clear(); MergeFrom(from); } void CallStmt::CopyFrom(const CallStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CallStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool CallStmt::IsInitialized() const { return true; } void CallStmt::InternalSwap(CallStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CallStmt, funcexpr_) + sizeof(CallStmt::funcexpr_) - PROTOBUF_FIELD_OFFSET(CallStmt, funccall_)>( reinterpret_cast(&funccall_), reinterpret_cast(&other->funccall_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CallStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AlterStatsStmt::_Internal { public: }; AlterStatsStmt::AlterStatsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), defnames_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AlterStatsStmt) } AlterStatsStmt::AlterStatsStmt(const AlterStatsStmt& from) : ::PROTOBUF_NAMESPACE_ID::Message(), defnames_(from.defnames_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&stxstattarget_, &from.stxstattarget_, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&stxstattarget_)) + sizeof(missing_ok_)); // @@protoc_insertion_point(copy_constructor:pg_query.AlterStatsStmt) } void AlterStatsStmt::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&stxstattarget_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&missing_ok_) - reinterpret_cast(&stxstattarget_)) + sizeof(missing_ok_)); } AlterStatsStmt::~AlterStatsStmt() { // @@protoc_insertion_point(destructor:pg_query.AlterStatsStmt) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AlterStatsStmt::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void AlterStatsStmt::ArenaDtor(void* object) { AlterStatsStmt* _this = reinterpret_cast< AlterStatsStmt* >(object); (void)_this; } void AlterStatsStmt::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AlterStatsStmt::SetCachedSize(int size) const { _cached_size_.Set(size); } const AlterStatsStmt& AlterStatsStmt::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AlterStatsStmt::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AlterStatsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; defnames_.Clear(); ::memset(&stxstattarget_, 0, static_cast( reinterpret_cast(&missing_ok_) - reinterpret_cast(&stxstattarget_)) + sizeof(missing_ok_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AlterStatsStmt::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_defnames(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // int32 stxstattarget = 2 [json_name = "stxstattarget"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { stxstattarget_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool missing_ok = 3 [json_name = "missing_ok"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { missing_ok_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AlterStatsStmt::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AlterStatsStmt) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; for (unsigned int i = 0, n = static_cast(this->_internal_defnames_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_defnames(i), target, stream); } // int32 stxstattarget = 2 [json_name = "stxstattarget"]; if (this->stxstattarget() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_stxstattarget(), target); } // bool missing_ok = 3 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_missing_ok(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AlterStatsStmt) return target; } size_t AlterStatsStmt::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AlterStatsStmt) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; total_size += 1UL * this->_internal_defnames_size(); for (const auto& msg : this->defnames_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // int32 stxstattarget = 2 [json_name = "stxstattarget"]; if (this->stxstattarget() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_stxstattarget()); } // bool missing_ok = 3 [json_name = "missing_ok"]; if (this->missing_ok() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AlterStatsStmt::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AlterStatsStmt) GOOGLE_DCHECK_NE(&from, this); const AlterStatsStmt* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AlterStatsStmt) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AlterStatsStmt) MergeFrom(*source); } } void AlterStatsStmt::MergeFrom(const AlterStatsStmt& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AlterStatsStmt) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; defnames_.MergeFrom(from.defnames_); if (from.stxstattarget() != 0) { _internal_set_stxstattarget(from._internal_stxstattarget()); } if (from.missing_ok() != 0) { _internal_set_missing_ok(from._internal_missing_ok()); } } void AlterStatsStmt::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AlterStatsStmt) if (&from == this) return; Clear(); MergeFrom(from); } void AlterStatsStmt::CopyFrom(const AlterStatsStmt& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AlterStatsStmt) if (&from == this) return; Clear(); MergeFrom(from); } bool AlterStatsStmt::IsInitialized() const { return true; } void AlterStatsStmt::InternalSwap(AlterStatsStmt* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); defnames_.InternalSwap(&other->defnames_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(AlterStatsStmt, missing_ok_) + sizeof(AlterStatsStmt::missing_ok_) - PROTOBUF_FIELD_OFFSET(AlterStatsStmt, stxstattarget_)>( reinterpret_cast(&stxstattarget_), reinterpret_cast(&other->stxstattarget_)); } ::PROTOBUF_NAMESPACE_ID::Metadata AlterStatsStmt::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class A_Expr::_Internal { public: static const ::pg_query::Node& lexpr(const A_Expr* msg); static const ::pg_query::Node& rexpr(const A_Expr* msg); }; const ::pg_query::Node& A_Expr::_Internal::lexpr(const A_Expr* msg) { return *msg->lexpr_; } const ::pg_query::Node& A_Expr::_Internal::rexpr(const A_Expr* msg) { return *msg->rexpr_; } A_Expr::A_Expr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), name_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_Expr) } A_Expr::A_Expr(const A_Expr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), name_(from.name_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_lexpr()) { lexpr_ = new ::pg_query::Node(*from.lexpr_); } else { lexpr_ = nullptr; } if (from._internal_has_rexpr()) { rexpr_ = new ::pg_query::Node(*from.rexpr_); } else { rexpr_ = nullptr; } ::memcpy(&kind_, &from.kind_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&kind_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.A_Expr) } void A_Expr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&lexpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&lexpr_)) + sizeof(location_)); } A_Expr::~A_Expr() { // @@protoc_insertion_point(destructor:pg_query.A_Expr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void A_Expr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete lexpr_; if (this != internal_default_instance()) delete rexpr_; } void A_Expr::ArenaDtor(void* object) { A_Expr* _this = reinterpret_cast< A_Expr* >(object); (void)_this; } void A_Expr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void A_Expr::SetCachedSize(int size) const { _cached_size_.Set(size); } const A_Expr& A_Expr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void A_Expr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_Expr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; name_.Clear(); if (GetArena() == nullptr && lexpr_ != nullptr) { delete lexpr_; } lexpr_ = nullptr; if (GetArena() == nullptr && rexpr_ != nullptr) { delete rexpr_; } rexpr_ = nullptr; ::memset(&kind_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&kind_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* A_Expr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_kind(static_cast<::pg_query::A_Expr_Kind>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node name = 2 [json_name = "name"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_name(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_lexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_rexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* A_Expr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_Expr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // repeated .pg_query.Node name = 2 [json_name = "name"]; for (unsigned int i = 0, n = static_cast(this->_internal_name_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_name(i), target, stream); } // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; if (this->has_lexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::lexpr(this), target, stream); } // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; if (this->has_rexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::rexpr(this), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.A_Expr) return target; } size_t A_Expr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.A_Expr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node name = 2 [json_name = "name"]; total_size += 1UL * this->_internal_name_size(); for (const auto& msg : this->name_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; if (this->has_lexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *lexpr_); } // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; if (this->has_rexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *rexpr_); } // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void A_Expr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.A_Expr) GOOGLE_DCHECK_NE(&from, this); const A_Expr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.A_Expr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.A_Expr) MergeFrom(*source); } } void A_Expr::MergeFrom(const A_Expr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_Expr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; name_.MergeFrom(from.name_); if (from.has_lexpr()) { _internal_mutable_lexpr()->::pg_query::Node::MergeFrom(from._internal_lexpr()); } if (from.has_rexpr()) { _internal_mutable_rexpr()->::pg_query::Node::MergeFrom(from._internal_rexpr()); } if (from.kind() != 0) { _internal_set_kind(from._internal_kind()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void A_Expr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.A_Expr) if (&from == this) return; Clear(); MergeFrom(from); } void A_Expr::CopyFrom(const A_Expr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.A_Expr) if (&from == this) return; Clear(); MergeFrom(from); } bool A_Expr::IsInitialized() const { return true; } void A_Expr::InternalSwap(A_Expr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); name_.InternalSwap(&other->name_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(A_Expr, location_) + sizeof(A_Expr::location_) - PROTOBUF_FIELD_OFFSET(A_Expr, lexpr_)>( reinterpret_cast(&lexpr_), reinterpret_cast(&other->lexpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata A_Expr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ColumnRef::_Internal { public: }; ColumnRef::ColumnRef(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), fields_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ColumnRef) } ColumnRef::ColumnRef(const ColumnRef& from) : ::PROTOBUF_NAMESPACE_ID::Message(), fields_(from.fields_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.ColumnRef) } void ColumnRef::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); location_ = 0; } ColumnRef::~ColumnRef() { // @@protoc_insertion_point(destructor:pg_query.ColumnRef) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ColumnRef::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void ColumnRef::ArenaDtor(void* object) { ColumnRef* _this = reinterpret_cast< ColumnRef* >(object); (void)_this; } void ColumnRef::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ColumnRef::SetCachedSize(int size) const { _cached_size_.Set(size); } const ColumnRef& ColumnRef::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ColumnRef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ColumnRef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; fields_.Clear(); location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ColumnRef::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node fields = 1 [json_name = "fields"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_fields(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // int32 location = 2 [json_name = "location"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ColumnRef::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ColumnRef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node fields = 1 [json_name = "fields"]; for (unsigned int i = 0, n = static_cast(this->_internal_fields_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_fields(i), target, stream); } // int32 location = 2 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ColumnRef) return target; } size_t ColumnRef::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ColumnRef) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node fields = 1 [json_name = "fields"]; total_size += 1UL * this->_internal_fields_size(); for (const auto& msg : this->fields_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // int32 location = 2 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ColumnRef::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ColumnRef) GOOGLE_DCHECK_NE(&from, this); const ColumnRef* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ColumnRef) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ColumnRef) MergeFrom(*source); } } void ColumnRef::MergeFrom(const ColumnRef& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ColumnRef) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; fields_.MergeFrom(from.fields_); if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void ColumnRef::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ColumnRef) if (&from == this) return; Clear(); MergeFrom(from); } void ColumnRef::CopyFrom(const ColumnRef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ColumnRef) if (&from == this) return; Clear(); MergeFrom(from); } bool ColumnRef::IsInitialized() const { return true; } void ColumnRef::InternalSwap(ColumnRef* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); fields_.InternalSwap(&other->fields_); swap(location_, other->location_); } ::PROTOBUF_NAMESPACE_ID::Metadata ColumnRef::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ParamRef::_Internal { public: }; ParamRef::ParamRef(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ParamRef) } ParamRef::ParamRef(const ParamRef& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&number_, &from.number_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&number_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ParamRef) } void ParamRef::SharedCtor() { ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&number_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&number_)) + sizeof(location_)); } ParamRef::~ParamRef() { // @@protoc_insertion_point(destructor:pg_query.ParamRef) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ParamRef::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void ParamRef::ArenaDtor(void* object) { ParamRef* _this = reinterpret_cast< ParamRef* >(object); (void)_this; } void ParamRef::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ParamRef::SetCachedSize(int size) const { _cached_size_.Set(size); } const ParamRef& ParamRef::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ParamRef_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ParamRef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ParamRef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ::memset(&number_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&number_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ParamRef::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // int32 number = 1 [json_name = "number"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { number_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 2 [json_name = "location"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ParamRef::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ParamRef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // int32 number = 1 [json_name = "number"]; if (this->number() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_number(), target); } // int32 location = 2 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ParamRef) return target; } size_t ParamRef::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ParamRef) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // int32 number = 1 [json_name = "number"]; if (this->number() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_number()); } // int32 location = 2 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ParamRef::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ParamRef) GOOGLE_DCHECK_NE(&from, this); const ParamRef* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ParamRef) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ParamRef) MergeFrom(*source); } } void ParamRef::MergeFrom(const ParamRef& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ParamRef) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.number() != 0) { _internal_set_number(from._internal_number()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void ParamRef::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ParamRef) if (&from == this) return; Clear(); MergeFrom(from); } void ParamRef::CopyFrom(const ParamRef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ParamRef) if (&from == this) return; Clear(); MergeFrom(from); } bool ParamRef::IsInitialized() const { return true; } void ParamRef::InternalSwap(ParamRef* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ParamRef, location_) + sizeof(ParamRef::location_) - PROTOBUF_FIELD_OFFSET(ParamRef, number_)>( reinterpret_cast(&number_), reinterpret_cast(&other->number_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ParamRef::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class A_Const::_Internal { public: static const ::pg_query::Node& val(const A_Const* msg); }; const ::pg_query::Node& A_Const::_Internal::val(const A_Const* msg) { return *msg->val_; } A_Const::A_Const(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_Const) } A_Const::A_Const(const A_Const& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_val()) { val_ = new ::pg_query::Node(*from.val_); } else { val_ = nullptr; } location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.A_Const) } void A_Const::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&val_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&val_)) + sizeof(location_)); } A_Const::~A_Const() { // @@protoc_insertion_point(destructor:pg_query.A_Const) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void A_Const::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete val_; } void A_Const::ArenaDtor(void* object) { A_Const* _this = reinterpret_cast< A_Const* >(object); (void)_this; } void A_Const::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void A_Const::SetCachedSize(int size) const { _cached_size_.Set(size); } const A_Const& A_Const::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void A_Const::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_Const) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && val_ != nullptr) { delete val_; } val_ = nullptr; location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* A_Const::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node val = 1 [json_name = "val"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_val(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 2 [json_name = "location"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* A_Const::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_Const) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node val = 1 [json_name = "val"]; if (this->has_val()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::val(this), target, stream); } // int32 location = 2 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.A_Const) return target; } size_t A_Const::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.A_Const) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node val = 1 [json_name = "val"]; if (this->has_val()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *val_); } // int32 location = 2 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void A_Const::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.A_Const) GOOGLE_DCHECK_NE(&from, this); const A_Const* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.A_Const) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.A_Const) MergeFrom(*source); } } void A_Const::MergeFrom(const A_Const& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_Const) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_val()) { _internal_mutable_val()->::pg_query::Node::MergeFrom(from._internal_val()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void A_Const::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.A_Const) if (&from == this) return; Clear(); MergeFrom(from); } void A_Const::CopyFrom(const A_Const& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.A_Const) if (&from == this) return; Clear(); MergeFrom(from); } bool A_Const::IsInitialized() const { return true; } void A_Const::InternalSwap(A_Const* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(A_Const, location_) + sizeof(A_Const::location_) - PROTOBUF_FIELD_OFFSET(A_Const, val_)>( reinterpret_cast(&val_), reinterpret_cast(&other->val_)); } ::PROTOBUF_NAMESPACE_ID::Metadata A_Const::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class FuncCall::_Internal { public: static const ::pg_query::Node& agg_filter(const FuncCall* msg); static const ::pg_query::WindowDef& over(const FuncCall* msg); }; const ::pg_query::Node& FuncCall::_Internal::agg_filter(const FuncCall* msg) { return *msg->agg_filter_; } const ::pg_query::WindowDef& FuncCall::_Internal::over(const FuncCall* msg) { return *msg->over_; } FuncCall::FuncCall(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), funcname_(arena), args_(arena), agg_order_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FuncCall) } FuncCall::FuncCall(const FuncCall& from) : ::PROTOBUF_NAMESPACE_ID::Message(), funcname_(from.funcname_), args_(from.args_), agg_order_(from.agg_order_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_agg_filter()) { agg_filter_ = new ::pg_query::Node(*from.agg_filter_); } else { agg_filter_ = nullptr; } if (from._internal_has_over()) { over_ = new ::pg_query::WindowDef(*from.over_); } else { over_ = nullptr; } ::memcpy(&agg_within_group_, &from.agg_within_group_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&agg_within_group_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.FuncCall) } void FuncCall::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&agg_filter_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&agg_filter_)) + sizeof(location_)); } FuncCall::~FuncCall() { // @@protoc_insertion_point(destructor:pg_query.FuncCall) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void FuncCall::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete agg_filter_; if (this != internal_default_instance()) delete over_; } void FuncCall::ArenaDtor(void* object) { FuncCall* _this = reinterpret_cast< FuncCall* >(object); (void)_this; } void FuncCall::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void FuncCall::SetCachedSize(int size) const { _cached_size_.Set(size); } const FuncCall& FuncCall::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void FuncCall::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FuncCall) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; funcname_.Clear(); args_.Clear(); agg_order_.Clear(); if (GetArena() == nullptr && agg_filter_ != nullptr) { delete agg_filter_; } agg_filter_ = nullptr; if (GetArena() == nullptr && over_ != nullptr) { delete over_; } over_ = nullptr; ::memset(&agg_within_group_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&agg_within_group_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* FuncCall::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_funcname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 2 [json_name = "args"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_agg_order(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_agg_filter(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool agg_within_group = 5 [json_name = "agg_within_group"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { agg_within_group_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool agg_star = 6 [json_name = "agg_star"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { agg_star_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool agg_distinct = 7 [json_name = "agg_distinct"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { agg_distinct_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool func_variadic = 8 [json_name = "func_variadic"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { func_variadic_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.WindowDef over = 9 [json_name = "over"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_over(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 10 [json_name = "location"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* FuncCall::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FuncCall) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; for (unsigned int i = 0, n = static_cast(this->_internal_funcname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_funcname(i), target, stream); } // repeated .pg_query.Node args = 2 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_args(i), target, stream); } // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; for (unsigned int i = 0, n = static_cast(this->_internal_agg_order_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_agg_order(i), target, stream); } // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; if (this->has_agg_filter()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::agg_filter(this), target, stream); } // bool agg_within_group = 5 [json_name = "agg_within_group"]; if (this->agg_within_group() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_agg_within_group(), target); } // bool agg_star = 6 [json_name = "agg_star"]; if (this->agg_star() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_agg_star(), target); } // bool agg_distinct = 7 [json_name = "agg_distinct"]; if (this->agg_distinct() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(7, this->_internal_agg_distinct(), target); } // bool func_variadic = 8 [json_name = "func_variadic"]; if (this->func_variadic() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(8, this->_internal_func_variadic(), target); } // .pg_query.WindowDef over = 9 [json_name = "over"]; if (this->has_over()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 9, _Internal::over(this), target, stream); } // int32 location = 10 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(10, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.FuncCall) return target; } size_t FuncCall::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.FuncCall) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; total_size += 1UL * this->_internal_funcname_size(); for (const auto& msg : this->funcname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node args = 2 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; total_size += 1UL * this->_internal_agg_order_size(); for (const auto& msg : this->agg_order_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; if (this->has_agg_filter()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *agg_filter_); } // .pg_query.WindowDef over = 9 [json_name = "over"]; if (this->has_over()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *over_); } // bool agg_within_group = 5 [json_name = "agg_within_group"]; if (this->agg_within_group() != 0) { total_size += 1 + 1; } // bool agg_star = 6 [json_name = "agg_star"]; if (this->agg_star() != 0) { total_size += 1 + 1; } // bool agg_distinct = 7 [json_name = "agg_distinct"]; if (this->agg_distinct() != 0) { total_size += 1 + 1; } // bool func_variadic = 8 [json_name = "func_variadic"]; if (this->func_variadic() != 0) { total_size += 1 + 1; } // int32 location = 10 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void FuncCall::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.FuncCall) GOOGLE_DCHECK_NE(&from, this); const FuncCall* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.FuncCall) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.FuncCall) MergeFrom(*source); } } void FuncCall::MergeFrom(const FuncCall& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FuncCall) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; funcname_.MergeFrom(from.funcname_); args_.MergeFrom(from.args_); agg_order_.MergeFrom(from.agg_order_); if (from.has_agg_filter()) { _internal_mutable_agg_filter()->::pg_query::Node::MergeFrom(from._internal_agg_filter()); } if (from.has_over()) { _internal_mutable_over()->::pg_query::WindowDef::MergeFrom(from._internal_over()); } if (from.agg_within_group() != 0) { _internal_set_agg_within_group(from._internal_agg_within_group()); } if (from.agg_star() != 0) { _internal_set_agg_star(from._internal_agg_star()); } if (from.agg_distinct() != 0) { _internal_set_agg_distinct(from._internal_agg_distinct()); } if (from.func_variadic() != 0) { _internal_set_func_variadic(from._internal_func_variadic()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void FuncCall::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.FuncCall) if (&from == this) return; Clear(); MergeFrom(from); } void FuncCall::CopyFrom(const FuncCall& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FuncCall) if (&from == this) return; Clear(); MergeFrom(from); } bool FuncCall::IsInitialized() const { return true; } void FuncCall::InternalSwap(FuncCall* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); funcname_.InternalSwap(&other->funcname_); args_.InternalSwap(&other->args_); agg_order_.InternalSwap(&other->agg_order_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(FuncCall, location_) + sizeof(FuncCall::location_) - PROTOBUF_FIELD_OFFSET(FuncCall, agg_filter_)>( reinterpret_cast(&agg_filter_), reinterpret_cast(&other->agg_filter_)); } ::PROTOBUF_NAMESPACE_ID::Metadata FuncCall::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class A_Star::_Internal { public: }; A_Star::A_Star(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_Star) } A_Star::A_Star(const A_Star& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); // @@protoc_insertion_point(copy_constructor:pg_query.A_Star) } void A_Star::SharedCtor() { } A_Star::~A_Star() { // @@protoc_insertion_point(destructor:pg_query.A_Star) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void A_Star::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void A_Star::ArenaDtor(void* object) { A_Star* _this = reinterpret_cast< A_Star* >(object); (void)_this; } void A_Star::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void A_Star::SetCachedSize(int size) const { _cached_size_.Set(size); } const A_Star& A_Star::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_Star_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void A_Star::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_Star) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* A_Star::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* A_Star::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_Star) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.A_Star) return target; } size_t A_Star::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.A_Star) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void A_Star::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.A_Star) GOOGLE_DCHECK_NE(&from, this); const A_Star* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.A_Star) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.A_Star) MergeFrom(*source); } } void A_Star::MergeFrom(const A_Star& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_Star) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; } void A_Star::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.A_Star) if (&from == this) return; Clear(); MergeFrom(from); } void A_Star::CopyFrom(const A_Star& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.A_Star) if (&from == this) return; Clear(); MergeFrom(from); } bool A_Star::IsInitialized() const { return true; } void A_Star::InternalSwap(A_Star* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); } ::PROTOBUF_NAMESPACE_ID::Metadata A_Star::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class A_Indices::_Internal { public: static const ::pg_query::Node& lidx(const A_Indices* msg); static const ::pg_query::Node& uidx(const A_Indices* msg); }; const ::pg_query::Node& A_Indices::_Internal::lidx(const A_Indices* msg) { return *msg->lidx_; } const ::pg_query::Node& A_Indices::_Internal::uidx(const A_Indices* msg) { return *msg->uidx_; } A_Indices::A_Indices(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_Indices) } A_Indices::A_Indices(const A_Indices& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_lidx()) { lidx_ = new ::pg_query::Node(*from.lidx_); } else { lidx_ = nullptr; } if (from._internal_has_uidx()) { uidx_ = new ::pg_query::Node(*from.uidx_); } else { uidx_ = nullptr; } is_slice_ = from.is_slice_; // @@protoc_insertion_point(copy_constructor:pg_query.A_Indices) } void A_Indices::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&lidx_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&is_slice_) - reinterpret_cast(&lidx_)) + sizeof(is_slice_)); } A_Indices::~A_Indices() { // @@protoc_insertion_point(destructor:pg_query.A_Indices) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void A_Indices::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete lidx_; if (this != internal_default_instance()) delete uidx_; } void A_Indices::ArenaDtor(void* object) { A_Indices* _this = reinterpret_cast< A_Indices* >(object); (void)_this; } void A_Indices::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void A_Indices::SetCachedSize(int size) const { _cached_size_.Set(size); } const A_Indices& A_Indices::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void A_Indices::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_Indices) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && lidx_ != nullptr) { delete lidx_; } lidx_ = nullptr; if (GetArena() == nullptr && uidx_ != nullptr) { delete uidx_; } uidx_ = nullptr; is_slice_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* A_Indices::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // bool is_slice = 1 [json_name = "is_slice"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { is_slice_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node lidx = 2 [json_name = "lidx"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_lidx(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node uidx = 3 [json_name = "uidx"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_uidx(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* A_Indices::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_Indices) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // bool is_slice = 1 [json_name = "is_slice"]; if (this->is_slice() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_is_slice(), target); } // .pg_query.Node lidx = 2 [json_name = "lidx"]; if (this->has_lidx()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::lidx(this), target, stream); } // .pg_query.Node uidx = 3 [json_name = "uidx"]; if (this->has_uidx()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::uidx(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.A_Indices) return target; } size_t A_Indices::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.A_Indices) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node lidx = 2 [json_name = "lidx"]; if (this->has_lidx()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *lidx_); } // .pg_query.Node uidx = 3 [json_name = "uidx"]; if (this->has_uidx()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *uidx_); } // bool is_slice = 1 [json_name = "is_slice"]; if (this->is_slice() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void A_Indices::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.A_Indices) GOOGLE_DCHECK_NE(&from, this); const A_Indices* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.A_Indices) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.A_Indices) MergeFrom(*source); } } void A_Indices::MergeFrom(const A_Indices& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_Indices) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_lidx()) { _internal_mutable_lidx()->::pg_query::Node::MergeFrom(from._internal_lidx()); } if (from.has_uidx()) { _internal_mutable_uidx()->::pg_query::Node::MergeFrom(from._internal_uidx()); } if (from.is_slice() != 0) { _internal_set_is_slice(from._internal_is_slice()); } } void A_Indices::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.A_Indices) if (&from == this) return; Clear(); MergeFrom(from); } void A_Indices::CopyFrom(const A_Indices& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.A_Indices) if (&from == this) return; Clear(); MergeFrom(from); } bool A_Indices::IsInitialized() const { return true; } void A_Indices::InternalSwap(A_Indices* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(A_Indices, is_slice_) + sizeof(A_Indices::is_slice_) - PROTOBUF_FIELD_OFFSET(A_Indices, lidx_)>( reinterpret_cast(&lidx_), reinterpret_cast(&other->lidx_)); } ::PROTOBUF_NAMESPACE_ID::Metadata A_Indices::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class A_Indirection::_Internal { public: static const ::pg_query::Node& arg(const A_Indirection* msg); }; const ::pg_query::Node& A_Indirection::_Internal::arg(const A_Indirection* msg) { return *msg->arg_; } A_Indirection::A_Indirection(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), indirection_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_Indirection) } A_Indirection::A_Indirection(const A_Indirection& from) : ::PROTOBUF_NAMESPACE_ID::Message(), indirection_(from.indirection_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.A_Indirection) } void A_Indirection::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); arg_ = nullptr; } A_Indirection::~A_Indirection() { // @@protoc_insertion_point(destructor:pg_query.A_Indirection) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void A_Indirection::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete arg_; } void A_Indirection::ArenaDtor(void* object) { A_Indirection* _this = reinterpret_cast< A_Indirection* >(object); (void)_this; } void A_Indirection::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void A_Indirection::SetCachedSize(int size) const { _cached_size_.Set(size); } const A_Indirection& A_Indirection::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void A_Indirection::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_Indirection) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; indirection_.Clear(); if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* A_Indirection::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node arg = 1 [json_name = "arg"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_indirection(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* A_Indirection::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_Indirection) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node arg = 1 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::arg(this), target, stream); } // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; for (unsigned int i = 0, n = static_cast(this->_internal_indirection_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_indirection(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.A_Indirection) return target; } size_t A_Indirection::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.A_Indirection) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; total_size += 1UL * this->_internal_indirection_size(); for (const auto& msg : this->indirection_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node arg = 1 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void A_Indirection::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.A_Indirection) GOOGLE_DCHECK_NE(&from, this); const A_Indirection* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.A_Indirection) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.A_Indirection) MergeFrom(*source); } } void A_Indirection::MergeFrom(const A_Indirection& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_Indirection) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; indirection_.MergeFrom(from.indirection_); if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } } void A_Indirection::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.A_Indirection) if (&from == this) return; Clear(); MergeFrom(from); } void A_Indirection::CopyFrom(const A_Indirection& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.A_Indirection) if (&from == this) return; Clear(); MergeFrom(from); } bool A_Indirection::IsInitialized() const { return true; } void A_Indirection::InternalSwap(A_Indirection* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); indirection_.InternalSwap(&other->indirection_); swap(arg_, other->arg_); } ::PROTOBUF_NAMESPACE_ID::Metadata A_Indirection::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class A_ArrayExpr::_Internal { public: }; A_ArrayExpr::A_ArrayExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), elements_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.A_ArrayExpr) } A_ArrayExpr::A_ArrayExpr(const A_ArrayExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), elements_(from.elements_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.A_ArrayExpr) } void A_ArrayExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); location_ = 0; } A_ArrayExpr::~A_ArrayExpr() { // @@protoc_insertion_point(destructor:pg_query.A_ArrayExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void A_ArrayExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void A_ArrayExpr::ArenaDtor(void* object) { A_ArrayExpr* _this = reinterpret_cast< A_ArrayExpr* >(object); (void)_this; } void A_ArrayExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void A_ArrayExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const A_ArrayExpr& A_ArrayExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void A_ArrayExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.A_ArrayExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; elements_.Clear(); location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* A_ArrayExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node elements = 1 [json_name = "elements"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_elements(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // int32 location = 2 [json_name = "location"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* A_ArrayExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.A_ArrayExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node elements = 1 [json_name = "elements"]; for (unsigned int i = 0, n = static_cast(this->_internal_elements_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_elements(i), target, stream); } // int32 location = 2 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.A_ArrayExpr) return target; } size_t A_ArrayExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.A_ArrayExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node elements = 1 [json_name = "elements"]; total_size += 1UL * this->_internal_elements_size(); for (const auto& msg : this->elements_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // int32 location = 2 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void A_ArrayExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.A_ArrayExpr) GOOGLE_DCHECK_NE(&from, this); const A_ArrayExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.A_ArrayExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.A_ArrayExpr) MergeFrom(*source); } } void A_ArrayExpr::MergeFrom(const A_ArrayExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.A_ArrayExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; elements_.MergeFrom(from.elements_); if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void A_ArrayExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.A_ArrayExpr) if (&from == this) return; Clear(); MergeFrom(from); } void A_ArrayExpr::CopyFrom(const A_ArrayExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.A_ArrayExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool A_ArrayExpr::IsInitialized() const { return true; } void A_ArrayExpr::InternalSwap(A_ArrayExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); elements_.InternalSwap(&other->elements_); swap(location_, other->location_); } ::PROTOBUF_NAMESPACE_ID::Metadata A_ArrayExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ResTarget::_Internal { public: static const ::pg_query::Node& val(const ResTarget* msg); }; const ::pg_query::Node& ResTarget::_Internal::val(const ResTarget* msg) { return *msg->val_; } ResTarget::ResTarget(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), indirection_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ResTarget) } ResTarget::ResTarget(const ResTarget& from) : ::PROTOBUF_NAMESPACE_ID::Message(), indirection_(from.indirection_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } if (from._internal_has_val()) { val_ = new ::pg_query::Node(*from.val_); } else { val_ = nullptr; } location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.ResTarget) } void ResTarget::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&val_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&val_)) + sizeof(location_)); } ResTarget::~ResTarget() { // @@protoc_insertion_point(destructor:pg_query.ResTarget) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ResTarget::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete val_; } void ResTarget::ArenaDtor(void* object) { ResTarget* _this = reinterpret_cast< ResTarget* >(object); (void)_this; } void ResTarget::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ResTarget::SetCachedSize(int size) const { _cached_size_.Set(size); } const ResTarget& ResTarget::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ResTarget::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ResTarget) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; indirection_.Clear(); name_.ClearToEmpty(); if (GetArena() == nullptr && val_ != nullptr) { delete val_; } val_ = nullptr; location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ResTarget::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ResTarget.name")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_indirection(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node val = 3 [json_name = "val"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_val(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 4 [json_name = "location"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ResTarget::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ResTarget) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ResTarget.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; for (unsigned int i = 0, n = static_cast(this->_internal_indirection_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_indirection(i), target, stream); } // .pg_query.Node val = 3 [json_name = "val"]; if (this->has_val()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::val(this), target, stream); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ResTarget) return target; } size_t ResTarget::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ResTarget) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; total_size += 1UL * this->_internal_indirection_size(); for (const auto& msg : this->indirection_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node val = 3 [json_name = "val"]; if (this->has_val()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *val_); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ResTarget::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ResTarget) GOOGLE_DCHECK_NE(&from, this); const ResTarget* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ResTarget) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ResTarget) MergeFrom(*source); } } void ResTarget::MergeFrom(const ResTarget& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ResTarget) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; indirection_.MergeFrom(from.indirection_); if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.has_val()) { _internal_mutable_val()->::pg_query::Node::MergeFrom(from._internal_val()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void ResTarget::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ResTarget) if (&from == this) return; Clear(); MergeFrom(from); } void ResTarget::CopyFrom(const ResTarget& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ResTarget) if (&from == this) return; Clear(); MergeFrom(from); } bool ResTarget::IsInitialized() const { return true; } void ResTarget::InternalSwap(ResTarget* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); indirection_.InternalSwap(&other->indirection_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ResTarget, location_) + sizeof(ResTarget::location_) - PROTOBUF_FIELD_OFFSET(ResTarget, val_)>( reinterpret_cast(&val_), reinterpret_cast(&other->val_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ResTarget::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class MultiAssignRef::_Internal { public: static const ::pg_query::Node& source(const MultiAssignRef* msg); }; const ::pg_query::Node& MultiAssignRef::_Internal::source(const MultiAssignRef* msg) { return *msg->source_; } MultiAssignRef::MultiAssignRef(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.MultiAssignRef) } MultiAssignRef::MultiAssignRef(const MultiAssignRef& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_source()) { source_ = new ::pg_query::Node(*from.source_); } else { source_ = nullptr; } ::memcpy(&colno_, &from.colno_, static_cast(reinterpret_cast(&ncolumns_) - reinterpret_cast(&colno_)) + sizeof(ncolumns_)); // @@protoc_insertion_point(copy_constructor:pg_query.MultiAssignRef) } void MultiAssignRef::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&source_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&ncolumns_) - reinterpret_cast(&source_)) + sizeof(ncolumns_)); } MultiAssignRef::~MultiAssignRef() { // @@protoc_insertion_point(destructor:pg_query.MultiAssignRef) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void MultiAssignRef::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete source_; } void MultiAssignRef::ArenaDtor(void* object) { MultiAssignRef* _this = reinterpret_cast< MultiAssignRef* >(object); (void)_this; } void MultiAssignRef::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void MultiAssignRef::SetCachedSize(int size) const { _cached_size_.Set(size); } const MultiAssignRef& MultiAssignRef::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void MultiAssignRef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.MultiAssignRef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && source_ != nullptr) { delete source_; } source_ = nullptr; ::memset(&colno_, 0, static_cast( reinterpret_cast(&ncolumns_) - reinterpret_cast(&colno_)) + sizeof(ncolumns_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* MultiAssignRef::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node source = 1 [json_name = "source"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_source(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 colno = 2 [json_name = "colno"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { colno_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 ncolumns = 3 [json_name = "ncolumns"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ncolumns_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* MultiAssignRef::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.MultiAssignRef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node source = 1 [json_name = "source"]; if (this->has_source()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::source(this), target, stream); } // int32 colno = 2 [json_name = "colno"]; if (this->colno() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_colno(), target); } // int32 ncolumns = 3 [json_name = "ncolumns"]; if (this->ncolumns() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_ncolumns(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.MultiAssignRef) return target; } size_t MultiAssignRef::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.MultiAssignRef) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node source = 1 [json_name = "source"]; if (this->has_source()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *source_); } // int32 colno = 2 [json_name = "colno"]; if (this->colno() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_colno()); } // int32 ncolumns = 3 [json_name = "ncolumns"]; if (this->ncolumns() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_ncolumns()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void MultiAssignRef::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.MultiAssignRef) GOOGLE_DCHECK_NE(&from, this); const MultiAssignRef* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.MultiAssignRef) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.MultiAssignRef) MergeFrom(*source); } } void MultiAssignRef::MergeFrom(const MultiAssignRef& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.MultiAssignRef) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_source()) { _internal_mutable_source()->::pg_query::Node::MergeFrom(from._internal_source()); } if (from.colno() != 0) { _internal_set_colno(from._internal_colno()); } if (from.ncolumns() != 0) { _internal_set_ncolumns(from._internal_ncolumns()); } } void MultiAssignRef::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.MultiAssignRef) if (&from == this) return; Clear(); MergeFrom(from); } void MultiAssignRef::CopyFrom(const MultiAssignRef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.MultiAssignRef) if (&from == this) return; Clear(); MergeFrom(from); } bool MultiAssignRef::IsInitialized() const { return true; } void MultiAssignRef::InternalSwap(MultiAssignRef* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(MultiAssignRef, ncolumns_) + sizeof(MultiAssignRef::ncolumns_) - PROTOBUF_FIELD_OFFSET(MultiAssignRef, source_)>( reinterpret_cast(&source_), reinterpret_cast(&other->source_)); } ::PROTOBUF_NAMESPACE_ID::Metadata MultiAssignRef::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class TypeCast::_Internal { public: static const ::pg_query::Node& arg(const TypeCast* msg); static const ::pg_query::TypeName& type_name(const TypeCast* msg); }; const ::pg_query::Node& TypeCast::_Internal::arg(const TypeCast* msg) { return *msg->arg_; } const ::pg_query::TypeName& TypeCast::_Internal::type_name(const TypeCast* msg) { return *msg->type_name_; } TypeCast::TypeCast(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TypeCast) } TypeCast::TypeCast(const TypeCast& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } if (from._internal_has_type_name()) { type_name_ = new ::pg_query::TypeName(*from.type_name_); } else { type_name_ = nullptr; } location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.TypeCast) } void TypeCast::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&arg_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&arg_)) + sizeof(location_)); } TypeCast::~TypeCast() { // @@protoc_insertion_point(destructor:pg_query.TypeCast) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void TypeCast::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete arg_; if (this != internal_default_instance()) delete type_name_; } void TypeCast::ArenaDtor(void* object) { TypeCast* _this = reinterpret_cast< TypeCast* >(object); (void)_this; } void TypeCast::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void TypeCast::SetCachedSize(int size) const { _cached_size_.Set(size); } const TypeCast& TypeCast::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void TypeCast::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TypeCast) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* TypeCast::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node arg = 1 [json_name = "arg"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_type_name(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 3 [json_name = "location"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* TypeCast::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TypeCast) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node arg = 1 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::arg(this), target, stream); } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (this->has_type_name()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::type_name(this), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.TypeCast) return target; } size_t TypeCast::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.TypeCast) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node arg = 1 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (this->has_type_name()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *type_name_); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void TypeCast::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.TypeCast) GOOGLE_DCHECK_NE(&from, this); const TypeCast* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.TypeCast) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.TypeCast) MergeFrom(*source); } } void TypeCast::MergeFrom(const TypeCast& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TypeCast) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.has_type_name()) { _internal_mutable_type_name()->::pg_query::TypeName::MergeFrom(from._internal_type_name()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void TypeCast::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.TypeCast) if (&from == this) return; Clear(); MergeFrom(from); } void TypeCast::CopyFrom(const TypeCast& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TypeCast) if (&from == this) return; Clear(); MergeFrom(from); } bool TypeCast::IsInitialized() const { return true; } void TypeCast::InternalSwap(TypeCast* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(TypeCast, location_) + sizeof(TypeCast::location_) - PROTOBUF_FIELD_OFFSET(TypeCast, arg_)>( reinterpret_cast(&arg_), reinterpret_cast(&other->arg_)); } ::PROTOBUF_NAMESPACE_ID::Metadata TypeCast::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CollateClause::_Internal { public: static const ::pg_query::Node& arg(const CollateClause* msg); }; const ::pg_query::Node& CollateClause::_Internal::arg(const CollateClause* msg) { return *msg->arg_; } CollateClause::CollateClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), collname_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CollateClause) } CollateClause::CollateClause(const CollateClause& from) : ::PROTOBUF_NAMESPACE_ID::Message(), collname_(from.collname_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.CollateClause) } void CollateClause::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&arg_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&arg_)) + sizeof(location_)); } CollateClause::~CollateClause() { // @@protoc_insertion_point(destructor:pg_query.CollateClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CollateClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete arg_; } void CollateClause::ArenaDtor(void* object) { CollateClause* _this = reinterpret_cast< CollateClause* >(object); (void)_this; } void CollateClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CollateClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const CollateClause& CollateClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CollateClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CollateClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; collname_.Clear(); if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CollateClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node arg = 1 [json_name = "arg"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node collname = 2 [json_name = "collname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_collname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // int32 location = 3 [json_name = "location"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CollateClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CollateClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node arg = 1 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::arg(this), target, stream); } // repeated .pg_query.Node collname = 2 [json_name = "collname"]; for (unsigned int i = 0, n = static_cast(this->_internal_collname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_collname(i), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CollateClause) return target; } size_t CollateClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CollateClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node collname = 2 [json_name = "collname"]; total_size += 1UL * this->_internal_collname_size(); for (const auto& msg : this->collname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node arg = 1 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CollateClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CollateClause) GOOGLE_DCHECK_NE(&from, this); const CollateClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CollateClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CollateClause) MergeFrom(*source); } } void CollateClause::MergeFrom(const CollateClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CollateClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; collname_.MergeFrom(from.collname_); if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void CollateClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CollateClause) if (&from == this) return; Clear(); MergeFrom(from); } void CollateClause::CopyFrom(const CollateClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CollateClause) if (&from == this) return; Clear(); MergeFrom(from); } bool CollateClause::IsInitialized() const { return true; } void CollateClause::InternalSwap(CollateClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); collname_.InternalSwap(&other->collname_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CollateClause, location_) + sizeof(CollateClause::location_) - PROTOBUF_FIELD_OFFSET(CollateClause, arg_)>( reinterpret_cast(&arg_), reinterpret_cast(&other->arg_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CollateClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class SortBy::_Internal { public: static const ::pg_query::Node& node(const SortBy* msg); }; const ::pg_query::Node& SortBy::_Internal::node(const SortBy* msg) { return *msg->node_; } SortBy::SortBy(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), use_op_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SortBy) } SortBy::SortBy(const SortBy& from) : ::PROTOBUF_NAMESPACE_ID::Message(), use_op_(from.use_op_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_node()) { node_ = new ::pg_query::Node(*from.node_); } else { node_ = nullptr; } ::memcpy(&sortby_dir_, &from.sortby_dir_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&sortby_dir_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.SortBy) } void SortBy::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&node_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&node_)) + sizeof(location_)); } SortBy::~SortBy() { // @@protoc_insertion_point(destructor:pg_query.SortBy) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void SortBy::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete node_; } void SortBy::ArenaDtor(void* object) { SortBy* _this = reinterpret_cast< SortBy* >(object); (void)_this; } void SortBy::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void SortBy::SetCachedSize(int size) const { _cached_size_.Set(size); } const SortBy& SortBy::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void SortBy::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SortBy) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; use_op_.Clear(); if (GetArena() == nullptr && node_ != nullptr) { delete node_; } node_ = nullptr; ::memset(&sortby_dir_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&sortby_dir_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* SortBy::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node node = 1 [json_name = "node"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_node(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_sortby_dir(static_cast<::pg_query::SortByDir>(val)); } else goto handle_unusual; continue; // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_sortby_nulls(static_cast<::pg_query::SortByNulls>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_use_op(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* SortBy::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SortBy) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node node = 1 [json_name = "node"]; if (this->has_node()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::node(this), target, stream); } // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; if (this->sortby_dir() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_sortby_dir(), target); } // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; if (this->sortby_nulls() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_sortby_nulls(), target); } // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; for (unsigned int i = 0, n = static_cast(this->_internal_use_op_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_use_op(i), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.SortBy) return target; } size_t SortBy::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.SortBy) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; total_size += 1UL * this->_internal_use_op_size(); for (const auto& msg : this->use_op_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node node = 1 [json_name = "node"]; if (this->has_node()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *node_); } // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; if (this->sortby_dir() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_sortby_dir()); } // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; if (this->sortby_nulls() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_sortby_nulls()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void SortBy::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.SortBy) GOOGLE_DCHECK_NE(&from, this); const SortBy* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.SortBy) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.SortBy) MergeFrom(*source); } } void SortBy::MergeFrom(const SortBy& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SortBy) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; use_op_.MergeFrom(from.use_op_); if (from.has_node()) { _internal_mutable_node()->::pg_query::Node::MergeFrom(from._internal_node()); } if (from.sortby_dir() != 0) { _internal_set_sortby_dir(from._internal_sortby_dir()); } if (from.sortby_nulls() != 0) { _internal_set_sortby_nulls(from._internal_sortby_nulls()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void SortBy::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.SortBy) if (&from == this) return; Clear(); MergeFrom(from); } void SortBy::CopyFrom(const SortBy& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SortBy) if (&from == this) return; Clear(); MergeFrom(from); } bool SortBy::IsInitialized() const { return true; } void SortBy::InternalSwap(SortBy* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); use_op_.InternalSwap(&other->use_op_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(SortBy, location_) + sizeof(SortBy::location_) - PROTOBUF_FIELD_OFFSET(SortBy, node_)>( reinterpret_cast(&node_), reinterpret_cast(&other->node_)); } ::PROTOBUF_NAMESPACE_ID::Metadata SortBy::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class WindowDef::_Internal { public: static const ::pg_query::Node& start_offset(const WindowDef* msg); static const ::pg_query::Node& end_offset(const WindowDef* msg); }; const ::pg_query::Node& WindowDef::_Internal::start_offset(const WindowDef* msg) { return *msg->start_offset_; } const ::pg_query::Node& WindowDef::_Internal::end_offset(const WindowDef* msg) { return *msg->end_offset_; } WindowDef::WindowDef(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), partition_clause_(arena), order_clause_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WindowDef) } WindowDef::WindowDef(const WindowDef& from) : ::PROTOBUF_NAMESPACE_ID::Message(), partition_clause_(from.partition_clause_), order_clause_(from.order_clause_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } refname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_refname().empty()) { refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_refname(), GetArena()); } if (from._internal_has_start_offset()) { start_offset_ = new ::pg_query::Node(*from.start_offset_); } else { start_offset_ = nullptr; } if (from._internal_has_end_offset()) { end_offset_ = new ::pg_query::Node(*from.end_offset_); } else { end_offset_ = nullptr; } ::memcpy(&frame_options_, &from.frame_options_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&frame_options_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.WindowDef) } void WindowDef::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); refname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&start_offset_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&start_offset_)) + sizeof(location_)); } WindowDef::~WindowDef() { // @@protoc_insertion_point(destructor:pg_query.WindowDef) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void WindowDef::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); refname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete start_offset_; if (this != internal_default_instance()) delete end_offset_; } void WindowDef::ArenaDtor(void* object) { WindowDef* _this = reinterpret_cast< WindowDef* >(object); (void)_this; } void WindowDef::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void WindowDef::SetCachedSize(int size) const { _cached_size_.Set(size); } const WindowDef& WindowDef::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void WindowDef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WindowDef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; partition_clause_.Clear(); order_clause_.Clear(); name_.ClearToEmpty(); refname_.ClearToEmpty(); if (GetArena() == nullptr && start_offset_ != nullptr) { delete start_offset_; } start_offset_ = nullptr; if (GetArena() == nullptr && end_offset_ != nullptr) { delete end_offset_; } end_offset_ = nullptr; ::memset(&frame_options_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&frame_options_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* WindowDef::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.WindowDef.name")); CHK_(ptr); } else goto handle_unusual; continue; // string refname = 2 [json_name = "refname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_refname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.WindowDef.refname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_partition_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_order_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // int32 frame_options = 5 [json_name = "frameOptions"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { frame_options_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_start_offset(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_end_offset(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 8 [json_name = "location"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* WindowDef::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WindowDef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.WindowDef.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } // string refname = 2 [json_name = "refname"]; if (this->refname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_refname().data(), static_cast(this->_internal_refname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.WindowDef.refname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_refname(), target); } // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_partition_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_partition_clause(i), target, stream); } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_order_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_order_clause(i), target, stream); } // int32 frame_options = 5 [json_name = "frameOptions"]; if (this->frame_options() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_frame_options(), target); } // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; if (this->has_start_offset()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::start_offset(this), target, stream); } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; if (this->has_end_offset()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 7, _Internal::end_offset(this), target, stream); } // int32 location = 8 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(8, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.WindowDef) return target; } size_t WindowDef::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.WindowDef) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; total_size += 1UL * this->_internal_partition_clause_size(); for (const auto& msg : this->partition_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; total_size += 1UL * this->_internal_order_clause_size(); for (const auto& msg : this->order_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // string refname = 2 [json_name = "refname"]; if (this->refname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_refname()); } // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; if (this->has_start_offset()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *start_offset_); } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; if (this->has_end_offset()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *end_offset_); } // int32 frame_options = 5 [json_name = "frameOptions"]; if (this->frame_options() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_frame_options()); } // int32 location = 8 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void WindowDef::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.WindowDef) GOOGLE_DCHECK_NE(&from, this); const WindowDef* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.WindowDef) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.WindowDef) MergeFrom(*source); } } void WindowDef::MergeFrom(const WindowDef& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WindowDef) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; partition_clause_.MergeFrom(from.partition_clause_); order_clause_.MergeFrom(from.order_clause_); if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.refname().size() > 0) { _internal_set_refname(from._internal_refname()); } if (from.has_start_offset()) { _internal_mutable_start_offset()->::pg_query::Node::MergeFrom(from._internal_start_offset()); } if (from.has_end_offset()) { _internal_mutable_end_offset()->::pg_query::Node::MergeFrom(from._internal_end_offset()); } if (from.frame_options() != 0) { _internal_set_frame_options(from._internal_frame_options()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void WindowDef::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.WindowDef) if (&from == this) return; Clear(); MergeFrom(from); } void WindowDef::CopyFrom(const WindowDef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WindowDef) if (&from == this) return; Clear(); MergeFrom(from); } bool WindowDef::IsInitialized() const { return true; } void WindowDef::InternalSwap(WindowDef* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); partition_clause_.InternalSwap(&other->partition_clause_); order_clause_.InternalSwap(&other->order_clause_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); refname_.Swap(&other->refname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(WindowDef, location_) + sizeof(WindowDef::location_) - PROTOBUF_FIELD_OFFSET(WindowDef, start_offset_)>( reinterpret_cast(&start_offset_), reinterpret_cast(&other->start_offset_)); } ::PROTOBUF_NAMESPACE_ID::Metadata WindowDef::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RangeSubselect::_Internal { public: static const ::pg_query::Node& subquery(const RangeSubselect* msg); static const ::pg_query::Alias& alias(const RangeSubselect* msg); }; const ::pg_query::Node& RangeSubselect::_Internal::subquery(const RangeSubselect* msg) { return *msg->subquery_; } const ::pg_query::Alias& RangeSubselect::_Internal::alias(const RangeSubselect* msg) { return *msg->alias_; } RangeSubselect::RangeSubselect(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeSubselect) } RangeSubselect::RangeSubselect(const RangeSubselect& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_subquery()) { subquery_ = new ::pg_query::Node(*from.subquery_); } else { subquery_ = nullptr; } if (from._internal_has_alias()) { alias_ = new ::pg_query::Alias(*from.alias_); } else { alias_ = nullptr; } lateral_ = from.lateral_; // @@protoc_insertion_point(copy_constructor:pg_query.RangeSubselect) } void RangeSubselect::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&subquery_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&lateral_) - reinterpret_cast(&subquery_)) + sizeof(lateral_)); } RangeSubselect::~RangeSubselect() { // @@protoc_insertion_point(destructor:pg_query.RangeSubselect) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RangeSubselect::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete subquery_; if (this != internal_default_instance()) delete alias_; } void RangeSubselect::ArenaDtor(void* object) { RangeSubselect* _this = reinterpret_cast< RangeSubselect* >(object); (void)_this; } void RangeSubselect::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RangeSubselect::SetCachedSize(int size) const { _cached_size_.Set(size); } const RangeSubselect& RangeSubselect::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RangeSubselect::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeSubselect) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && subquery_ != nullptr) { delete subquery_; } subquery_ = nullptr; if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; lateral_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RangeSubselect::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // bool lateral = 1 [json_name = "lateral"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { lateral_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node subquery = 2 [json_name = "subquery"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_subquery(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Alias alias = 3 [json_name = "alias"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_alias(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RangeSubselect::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeSubselect) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // bool lateral = 1 [json_name = "lateral"]; if (this->lateral() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_lateral(), target); } // .pg_query.Node subquery = 2 [json_name = "subquery"]; if (this->has_subquery()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::subquery(this), target, stream); } // .pg_query.Alias alias = 3 [json_name = "alias"]; if (this->has_alias()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::alias(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RangeSubselect) return target; } size_t RangeSubselect::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RangeSubselect) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node subquery = 2 [json_name = "subquery"]; if (this->has_subquery()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *subquery_); } // .pg_query.Alias alias = 3 [json_name = "alias"]; if (this->has_alias()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *alias_); } // bool lateral = 1 [json_name = "lateral"]; if (this->lateral() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RangeSubselect::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RangeSubselect) GOOGLE_DCHECK_NE(&from, this); const RangeSubselect* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RangeSubselect) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RangeSubselect) MergeFrom(*source); } } void RangeSubselect::MergeFrom(const RangeSubselect& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeSubselect) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_subquery()) { _internal_mutable_subquery()->::pg_query::Node::MergeFrom(from._internal_subquery()); } if (from.has_alias()) { _internal_mutable_alias()->::pg_query::Alias::MergeFrom(from._internal_alias()); } if (from.lateral() != 0) { _internal_set_lateral(from._internal_lateral()); } } void RangeSubselect::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RangeSubselect) if (&from == this) return; Clear(); MergeFrom(from); } void RangeSubselect::CopyFrom(const RangeSubselect& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeSubselect) if (&from == this) return; Clear(); MergeFrom(from); } bool RangeSubselect::IsInitialized() const { return true; } void RangeSubselect::InternalSwap(RangeSubselect* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeSubselect, lateral_) + sizeof(RangeSubselect::lateral_) - PROTOBUF_FIELD_OFFSET(RangeSubselect, subquery_)>( reinterpret_cast(&subquery_), reinterpret_cast(&other->subquery_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RangeSubselect::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RangeFunction::_Internal { public: static const ::pg_query::Alias& alias(const RangeFunction* msg); }; const ::pg_query::Alias& RangeFunction::_Internal::alias(const RangeFunction* msg) { return *msg->alias_; } RangeFunction::RangeFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), functions_(arena), coldeflist_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeFunction) } RangeFunction::RangeFunction(const RangeFunction& from) : ::PROTOBUF_NAMESPACE_ID::Message(), functions_(from.functions_), coldeflist_(from.coldeflist_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_alias()) { alias_ = new ::pg_query::Alias(*from.alias_); } else { alias_ = nullptr; } ::memcpy(&lateral_, &from.lateral_, static_cast(reinterpret_cast(&is_rowsfrom_) - reinterpret_cast(&lateral_)) + sizeof(is_rowsfrom_)); // @@protoc_insertion_point(copy_constructor:pg_query.RangeFunction) } void RangeFunction::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&alias_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&is_rowsfrom_) - reinterpret_cast(&alias_)) + sizeof(is_rowsfrom_)); } RangeFunction::~RangeFunction() { // @@protoc_insertion_point(destructor:pg_query.RangeFunction) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RangeFunction::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete alias_; } void RangeFunction::ArenaDtor(void* object) { RangeFunction* _this = reinterpret_cast< RangeFunction* >(object); (void)_this; } void RangeFunction::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RangeFunction::SetCachedSize(int size) const { _cached_size_.Set(size); } const RangeFunction& RangeFunction::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RangeFunction::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeFunction) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; functions_.Clear(); coldeflist_.Clear(); if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; ::memset(&lateral_, 0, static_cast( reinterpret_cast(&is_rowsfrom_) - reinterpret_cast(&lateral_)) + sizeof(is_rowsfrom_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RangeFunction::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // bool lateral = 1 [json_name = "lateral"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { lateral_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool ordinality = 2 [json_name = "ordinality"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ordinality_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { is_rowsfrom_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node functions = 4 [json_name = "functions"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_functions(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // .pg_query.Alias alias = 5 [json_name = "alias"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_alias(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_coldeflist(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RangeFunction::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeFunction) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // bool lateral = 1 [json_name = "lateral"]; if (this->lateral() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_lateral(), target); } // bool ordinality = 2 [json_name = "ordinality"]; if (this->ordinality() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_ordinality(), target); } // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; if (this->is_rowsfrom() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_is_rowsfrom(), target); } // repeated .pg_query.Node functions = 4 [json_name = "functions"]; for (unsigned int i = 0, n = static_cast(this->_internal_functions_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_functions(i), target, stream); } // .pg_query.Alias alias = 5 [json_name = "alias"]; if (this->has_alias()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::alias(this), target, stream); } // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; for (unsigned int i = 0, n = static_cast(this->_internal_coldeflist_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_coldeflist(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RangeFunction) return target; } size_t RangeFunction::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RangeFunction) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node functions = 4 [json_name = "functions"]; total_size += 1UL * this->_internal_functions_size(); for (const auto& msg : this->functions_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; total_size += 1UL * this->_internal_coldeflist_size(); for (const auto& msg : this->coldeflist_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Alias alias = 5 [json_name = "alias"]; if (this->has_alias()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *alias_); } // bool lateral = 1 [json_name = "lateral"]; if (this->lateral() != 0) { total_size += 1 + 1; } // bool ordinality = 2 [json_name = "ordinality"]; if (this->ordinality() != 0) { total_size += 1 + 1; } // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; if (this->is_rowsfrom() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RangeFunction::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RangeFunction) GOOGLE_DCHECK_NE(&from, this); const RangeFunction* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RangeFunction) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RangeFunction) MergeFrom(*source); } } void RangeFunction::MergeFrom(const RangeFunction& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeFunction) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; functions_.MergeFrom(from.functions_); coldeflist_.MergeFrom(from.coldeflist_); if (from.has_alias()) { _internal_mutable_alias()->::pg_query::Alias::MergeFrom(from._internal_alias()); } if (from.lateral() != 0) { _internal_set_lateral(from._internal_lateral()); } if (from.ordinality() != 0) { _internal_set_ordinality(from._internal_ordinality()); } if (from.is_rowsfrom() != 0) { _internal_set_is_rowsfrom(from._internal_is_rowsfrom()); } } void RangeFunction::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RangeFunction) if (&from == this) return; Clear(); MergeFrom(from); } void RangeFunction::CopyFrom(const RangeFunction& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeFunction) if (&from == this) return; Clear(); MergeFrom(from); } bool RangeFunction::IsInitialized() const { return true; } void RangeFunction::InternalSwap(RangeFunction* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); functions_.InternalSwap(&other->functions_); coldeflist_.InternalSwap(&other->coldeflist_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeFunction, is_rowsfrom_) + sizeof(RangeFunction::is_rowsfrom_) - PROTOBUF_FIELD_OFFSET(RangeFunction, alias_)>( reinterpret_cast(&alias_), reinterpret_cast(&other->alias_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RangeFunction::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RangeTableSample::_Internal { public: static const ::pg_query::Node& relation(const RangeTableSample* msg); static const ::pg_query::Node& repeatable(const RangeTableSample* msg); }; const ::pg_query::Node& RangeTableSample::_Internal::relation(const RangeTableSample* msg) { return *msg->relation_; } const ::pg_query::Node& RangeTableSample::_Internal::repeatable(const RangeTableSample* msg) { return *msg->repeatable_; } RangeTableSample::RangeTableSample(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), method_(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTableSample) } RangeTableSample::RangeTableSample(const RangeTableSample& from) : ::PROTOBUF_NAMESPACE_ID::Message(), method_(from.method_), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_relation()) { relation_ = new ::pg_query::Node(*from.relation_); } else { relation_ = nullptr; } if (from._internal_has_repeatable()) { repeatable_ = new ::pg_query::Node(*from.repeatable_); } else { repeatable_ = nullptr; } location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.RangeTableSample) } void RangeTableSample::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&relation_)) + sizeof(location_)); } RangeTableSample::~RangeTableSample() { // @@protoc_insertion_point(destructor:pg_query.RangeTableSample) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RangeTableSample::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete relation_; if (this != internal_default_instance()) delete repeatable_; } void RangeTableSample::ArenaDtor(void* object) { RangeTableSample* _this = reinterpret_cast< RangeTableSample* >(object); (void)_this; } void RangeTableSample::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RangeTableSample::SetCachedSize(int size) const { _cached_size_.Set(size); } const RangeTableSample& RangeTableSample::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RangeTableSample::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTableSample) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; method_.Clear(); args_.Clear(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; if (GetArena() == nullptr && repeatable_ != nullptr) { delete repeatable_; } repeatable_ = nullptr; location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RangeTableSample::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node method = 2 [json_name = "method"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_method(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 3 [json_name = "args"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_repeatable(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RangeTableSample::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTableSample) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // repeated .pg_query.Node method = 2 [json_name = "method"]; for (unsigned int i = 0, n = static_cast(this->_internal_method_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_method(i), target, stream); } // repeated .pg_query.Node args = 3 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_args(i), target, stream); } // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; if (this->has_repeatable()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::repeatable(this), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RangeTableSample) return target; } size_t RangeTableSample::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RangeTableSample) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node method = 2 [json_name = "method"]; total_size += 1UL * this->_internal_method_size(); for (const auto& msg : this->method_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node args = 3 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; if (this->has_repeatable()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *repeatable_); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RangeTableSample::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RangeTableSample) GOOGLE_DCHECK_NE(&from, this); const RangeTableSample* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RangeTableSample) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RangeTableSample) MergeFrom(*source); } } void RangeTableSample::MergeFrom(const RangeTableSample& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTableSample) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; method_.MergeFrom(from.method_); args_.MergeFrom(from.args_); if (from.has_relation()) { _internal_mutable_relation()->::pg_query::Node::MergeFrom(from._internal_relation()); } if (from.has_repeatable()) { _internal_mutable_repeatable()->::pg_query::Node::MergeFrom(from._internal_repeatable()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void RangeTableSample::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RangeTableSample) if (&from == this) return; Clear(); MergeFrom(from); } void RangeTableSample::CopyFrom(const RangeTableSample& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTableSample) if (&from == this) return; Clear(); MergeFrom(from); } bool RangeTableSample::IsInitialized() const { return true; } void RangeTableSample::InternalSwap(RangeTableSample* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); method_.InternalSwap(&other->method_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeTableSample, location_) + sizeof(RangeTableSample::location_) - PROTOBUF_FIELD_OFFSET(RangeTableSample, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RangeTableSample::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RangeTableFunc::_Internal { public: static const ::pg_query::Node& docexpr(const RangeTableFunc* msg); static const ::pg_query::Node& rowexpr(const RangeTableFunc* msg); static const ::pg_query::Alias& alias(const RangeTableFunc* msg); }; const ::pg_query::Node& RangeTableFunc::_Internal::docexpr(const RangeTableFunc* msg) { return *msg->docexpr_; } const ::pg_query::Node& RangeTableFunc::_Internal::rowexpr(const RangeTableFunc* msg) { return *msg->rowexpr_; } const ::pg_query::Alias& RangeTableFunc::_Internal::alias(const RangeTableFunc* msg) { return *msg->alias_; } RangeTableFunc::RangeTableFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), namespaces_(arena), columns_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTableFunc) } RangeTableFunc::RangeTableFunc(const RangeTableFunc& from) : ::PROTOBUF_NAMESPACE_ID::Message(), namespaces_(from.namespaces_), columns_(from.columns_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_docexpr()) { docexpr_ = new ::pg_query::Node(*from.docexpr_); } else { docexpr_ = nullptr; } if (from._internal_has_rowexpr()) { rowexpr_ = new ::pg_query::Node(*from.rowexpr_); } else { rowexpr_ = nullptr; } if (from._internal_has_alias()) { alias_ = new ::pg_query::Alias(*from.alias_); } else { alias_ = nullptr; } ::memcpy(&lateral_, &from.lateral_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&lateral_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RangeTableFunc) } void RangeTableFunc::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&docexpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&docexpr_)) + sizeof(location_)); } RangeTableFunc::~RangeTableFunc() { // @@protoc_insertion_point(destructor:pg_query.RangeTableFunc) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RangeTableFunc::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete docexpr_; if (this != internal_default_instance()) delete rowexpr_; if (this != internal_default_instance()) delete alias_; } void RangeTableFunc::ArenaDtor(void* object) { RangeTableFunc* _this = reinterpret_cast< RangeTableFunc* >(object); (void)_this; } void RangeTableFunc::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RangeTableFunc::SetCachedSize(int size) const { _cached_size_.Set(size); } const RangeTableFunc& RangeTableFunc::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RangeTableFunc::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTableFunc) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; namespaces_.Clear(); columns_.Clear(); if (GetArena() == nullptr && docexpr_ != nullptr) { delete docexpr_; } docexpr_ = nullptr; if (GetArena() == nullptr && rowexpr_ != nullptr) { delete rowexpr_; } rowexpr_ = nullptr; if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; ::memset(&lateral_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&lateral_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RangeTableFunc::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // bool lateral = 1 [json_name = "lateral"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { lateral_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_docexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_rowexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_namespaces(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node columns = 5 [json_name = "columns"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_columns(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // .pg_query.Alias alias = 6 [json_name = "alias"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_alias(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RangeTableFunc::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTableFunc) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // bool lateral = 1 [json_name = "lateral"]; if (this->lateral() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_lateral(), target); } // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; if (this->has_docexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::docexpr(this), target, stream); } // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; if (this->has_rowexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::rowexpr(this), target, stream); } // repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; for (unsigned int i = 0, n = static_cast(this->_internal_namespaces_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_namespaces(i), target, stream); } // repeated .pg_query.Node columns = 5 [json_name = "columns"]; for (unsigned int i = 0, n = static_cast(this->_internal_columns_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_columns(i), target, stream); } // .pg_query.Alias alias = 6 [json_name = "alias"]; if (this->has_alias()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::alias(this), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RangeTableFunc) return target; } size_t RangeTableFunc::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RangeTableFunc) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; total_size += 1UL * this->_internal_namespaces_size(); for (const auto& msg : this->namespaces_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node columns = 5 [json_name = "columns"]; total_size += 1UL * this->_internal_columns_size(); for (const auto& msg : this->columns_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; if (this->has_docexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *docexpr_); } // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; if (this->has_rowexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *rowexpr_); } // .pg_query.Alias alias = 6 [json_name = "alias"]; if (this->has_alias()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *alias_); } // bool lateral = 1 [json_name = "lateral"]; if (this->lateral() != 0) { total_size += 1 + 1; } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RangeTableFunc::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RangeTableFunc) GOOGLE_DCHECK_NE(&from, this); const RangeTableFunc* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RangeTableFunc) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RangeTableFunc) MergeFrom(*source); } } void RangeTableFunc::MergeFrom(const RangeTableFunc& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTableFunc) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; namespaces_.MergeFrom(from.namespaces_); columns_.MergeFrom(from.columns_); if (from.has_docexpr()) { _internal_mutable_docexpr()->::pg_query::Node::MergeFrom(from._internal_docexpr()); } if (from.has_rowexpr()) { _internal_mutable_rowexpr()->::pg_query::Node::MergeFrom(from._internal_rowexpr()); } if (from.has_alias()) { _internal_mutable_alias()->::pg_query::Alias::MergeFrom(from._internal_alias()); } if (from.lateral() != 0) { _internal_set_lateral(from._internal_lateral()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void RangeTableFunc::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RangeTableFunc) if (&from == this) return; Clear(); MergeFrom(from); } void RangeTableFunc::CopyFrom(const RangeTableFunc& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTableFunc) if (&from == this) return; Clear(); MergeFrom(from); } bool RangeTableFunc::IsInitialized() const { return true; } void RangeTableFunc::InternalSwap(RangeTableFunc* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); namespaces_.InternalSwap(&other->namespaces_); columns_.InternalSwap(&other->columns_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeTableFunc, location_) + sizeof(RangeTableFunc::location_) - PROTOBUF_FIELD_OFFSET(RangeTableFunc, docexpr_)>( reinterpret_cast(&docexpr_), reinterpret_cast(&other->docexpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RangeTableFunc::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RangeTableFuncCol::_Internal { public: static const ::pg_query::TypeName& type_name(const RangeTableFuncCol* msg); static const ::pg_query::Node& colexpr(const RangeTableFuncCol* msg); static const ::pg_query::Node& coldefexpr(const RangeTableFuncCol* msg); }; const ::pg_query::TypeName& RangeTableFuncCol::_Internal::type_name(const RangeTableFuncCol* msg) { return *msg->type_name_; } const ::pg_query::Node& RangeTableFuncCol::_Internal::colexpr(const RangeTableFuncCol* msg) { return *msg->colexpr_; } const ::pg_query::Node& RangeTableFuncCol::_Internal::coldefexpr(const RangeTableFuncCol* msg) { return *msg->coldefexpr_; } RangeTableFuncCol::RangeTableFuncCol(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTableFuncCol) } RangeTableFuncCol::RangeTableFuncCol(const RangeTableFuncCol& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); colname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_colname().empty()) { colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_colname(), GetArena()); } if (from._internal_has_type_name()) { type_name_ = new ::pg_query::TypeName(*from.type_name_); } else { type_name_ = nullptr; } if (from._internal_has_colexpr()) { colexpr_ = new ::pg_query::Node(*from.colexpr_); } else { colexpr_ = nullptr; } if (from._internal_has_coldefexpr()) { coldefexpr_ = new ::pg_query::Node(*from.coldefexpr_); } else { coldefexpr_ = nullptr; } ::memcpy(&for_ordinality_, &from.for_ordinality_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&for_ordinality_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RangeTableFuncCol) } void RangeTableFuncCol::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); colname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&type_name_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&type_name_)) + sizeof(location_)); } RangeTableFuncCol::~RangeTableFuncCol() { // @@protoc_insertion_point(destructor:pg_query.RangeTableFuncCol) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RangeTableFuncCol::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); colname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete type_name_; if (this != internal_default_instance()) delete colexpr_; if (this != internal_default_instance()) delete coldefexpr_; } void RangeTableFuncCol::ArenaDtor(void* object) { RangeTableFuncCol* _this = reinterpret_cast< RangeTableFuncCol* >(object); (void)_this; } void RangeTableFuncCol::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RangeTableFuncCol::SetCachedSize(int size) const { _cached_size_.Set(size); } const RangeTableFuncCol& RangeTableFuncCol::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RangeTableFuncCol::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTableFuncCol) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; colname_.ClearToEmpty(); if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; if (GetArena() == nullptr && colexpr_ != nullptr) { delete colexpr_; } colexpr_ = nullptr; if (GetArena() == nullptr && coldefexpr_ != nullptr) { delete coldefexpr_; } coldefexpr_ = nullptr; ::memset(&for_ordinality_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&for_ordinality_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RangeTableFuncCol::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string colname = 1 [json_name = "colname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_colname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RangeTableFuncCol.colname")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_type_name(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool for_ordinality = 3 [json_name = "for_ordinality"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { for_ordinality_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool is_not_null = 4 [json_name = "is_not_null"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { is_not_null_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_colexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_coldefexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 7 [json_name = "location"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RangeTableFuncCol::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTableFuncCol) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string colname = 1 [json_name = "colname"]; if (this->colname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_colname().data(), static_cast(this->_internal_colname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RangeTableFuncCol.colname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_colname(), target); } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (this->has_type_name()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::type_name(this), target, stream); } // bool for_ordinality = 3 [json_name = "for_ordinality"]; if (this->for_ordinality() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_for_ordinality(), target); } // bool is_not_null = 4 [json_name = "is_not_null"]; if (this->is_not_null() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_is_not_null(), target); } // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; if (this->has_colexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::colexpr(this), target, stream); } // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; if (this->has_coldefexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::coldefexpr(this), target, stream); } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RangeTableFuncCol) return target; } size_t RangeTableFuncCol::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RangeTableFuncCol) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string colname = 1 [json_name = "colname"]; if (this->colname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_colname()); } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (this->has_type_name()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *type_name_); } // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; if (this->has_colexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *colexpr_); } // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; if (this->has_coldefexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *coldefexpr_); } // bool for_ordinality = 3 [json_name = "for_ordinality"]; if (this->for_ordinality() != 0) { total_size += 1 + 1; } // bool is_not_null = 4 [json_name = "is_not_null"]; if (this->is_not_null() != 0) { total_size += 1 + 1; } // int32 location = 7 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RangeTableFuncCol::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RangeTableFuncCol) GOOGLE_DCHECK_NE(&from, this); const RangeTableFuncCol* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RangeTableFuncCol) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RangeTableFuncCol) MergeFrom(*source); } } void RangeTableFuncCol::MergeFrom(const RangeTableFuncCol& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTableFuncCol) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.colname().size() > 0) { _internal_set_colname(from._internal_colname()); } if (from.has_type_name()) { _internal_mutable_type_name()->::pg_query::TypeName::MergeFrom(from._internal_type_name()); } if (from.has_colexpr()) { _internal_mutable_colexpr()->::pg_query::Node::MergeFrom(from._internal_colexpr()); } if (from.has_coldefexpr()) { _internal_mutable_coldefexpr()->::pg_query::Node::MergeFrom(from._internal_coldefexpr()); } if (from.for_ordinality() != 0) { _internal_set_for_ordinality(from._internal_for_ordinality()); } if (from.is_not_null() != 0) { _internal_set_is_not_null(from._internal_is_not_null()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void RangeTableFuncCol::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RangeTableFuncCol) if (&from == this) return; Clear(); MergeFrom(from); } void RangeTableFuncCol::CopyFrom(const RangeTableFuncCol& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTableFuncCol) if (&from == this) return; Clear(); MergeFrom(from); } bool RangeTableFuncCol::IsInitialized() const { return true; } void RangeTableFuncCol::InternalSwap(RangeTableFuncCol* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); colname_.Swap(&other->colname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, location_) + sizeof(RangeTableFuncCol::location_) - PROTOBUF_FIELD_OFFSET(RangeTableFuncCol, type_name_)>( reinterpret_cast(&type_name_), reinterpret_cast(&other->type_name_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RangeTableFuncCol::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class TypeName::_Internal { public: }; TypeName::TypeName(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), names_(arena), typmods_(arena), array_bounds_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TypeName) } TypeName::TypeName(const TypeName& from) : ::PROTOBUF_NAMESPACE_ID::Message(), names_(from.names_), typmods_(from.typmods_), array_bounds_(from.array_bounds_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&type_oid_, &from.type_oid_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&type_oid_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.TypeName) } void TypeName::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&type_oid_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&type_oid_)) + sizeof(location_)); } TypeName::~TypeName() { // @@protoc_insertion_point(destructor:pg_query.TypeName) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void TypeName::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void TypeName::ArenaDtor(void* object) { TypeName* _this = reinterpret_cast< TypeName* >(object); (void)_this; } void TypeName::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void TypeName::SetCachedSize(int size) const { _cached_size_.Set(size); } const TypeName& TypeName::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void TypeName::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TypeName) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; names_.Clear(); typmods_.Clear(); array_bounds_.Clear(); ::memset(&type_oid_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&type_oid_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* TypeName::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node names = 1 [json_name = "names"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_names(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // uint32 type_oid = 2 [json_name = "typeOid"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { type_oid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool setof = 3 [json_name = "setof"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { setof_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool pct_type = 4 [json_name = "pct_type"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { pct_type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_typmods(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // int32 typemod = 6 [json_name = "typemod"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { typemod_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_array_bounds(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr)); } else goto handle_unusual; continue; // int32 location = 8 [json_name = "location"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* TypeName::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TypeName) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node names = 1 [json_name = "names"]; for (unsigned int i = 0, n = static_cast(this->_internal_names_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_names(i), target, stream); } // uint32 type_oid = 2 [json_name = "typeOid"]; if (this->type_oid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_type_oid(), target); } // bool setof = 3 [json_name = "setof"]; if (this->setof() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_setof(), target); } // bool pct_type = 4 [json_name = "pct_type"]; if (this->pct_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_pct_type(), target); } // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; for (unsigned int i = 0, n = static_cast(this->_internal_typmods_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_typmods(i), target, stream); } // int32 typemod = 6 [json_name = "typemod"]; if (this->typemod() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(6, this->_internal_typemod(), target); } // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; for (unsigned int i = 0, n = static_cast(this->_internal_array_bounds_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(7, this->_internal_array_bounds(i), target, stream); } // int32 location = 8 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(8, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.TypeName) return target; } size_t TypeName::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.TypeName) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node names = 1 [json_name = "names"]; total_size += 1UL * this->_internal_names_size(); for (const auto& msg : this->names_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; total_size += 1UL * this->_internal_typmods_size(); for (const auto& msg : this->typmods_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; total_size += 1UL * this->_internal_array_bounds_size(); for (const auto& msg : this->array_bounds_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // uint32 type_oid = 2 [json_name = "typeOid"]; if (this->type_oid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_type_oid()); } // bool setof = 3 [json_name = "setof"]; if (this->setof() != 0) { total_size += 1 + 1; } // bool pct_type = 4 [json_name = "pct_type"]; if (this->pct_type() != 0) { total_size += 1 + 1; } // int32 typemod = 6 [json_name = "typemod"]; if (this->typemod() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_typemod()); } // int32 location = 8 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void TypeName::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.TypeName) GOOGLE_DCHECK_NE(&from, this); const TypeName* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.TypeName) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.TypeName) MergeFrom(*source); } } void TypeName::MergeFrom(const TypeName& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TypeName) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; names_.MergeFrom(from.names_); typmods_.MergeFrom(from.typmods_); array_bounds_.MergeFrom(from.array_bounds_); if (from.type_oid() != 0) { _internal_set_type_oid(from._internal_type_oid()); } if (from.setof() != 0) { _internal_set_setof(from._internal_setof()); } if (from.pct_type() != 0) { _internal_set_pct_type(from._internal_pct_type()); } if (from.typemod() != 0) { _internal_set_typemod(from._internal_typemod()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void TypeName::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.TypeName) if (&from == this) return; Clear(); MergeFrom(from); } void TypeName::CopyFrom(const TypeName& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TypeName) if (&from == this) return; Clear(); MergeFrom(from); } bool TypeName::IsInitialized() const { return true; } void TypeName::InternalSwap(TypeName* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); names_.InternalSwap(&other->names_); typmods_.InternalSwap(&other->typmods_); array_bounds_.InternalSwap(&other->array_bounds_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(TypeName, location_) + sizeof(TypeName::location_) - PROTOBUF_FIELD_OFFSET(TypeName, type_oid_)>( reinterpret_cast(&type_oid_), reinterpret_cast(&other->type_oid_)); } ::PROTOBUF_NAMESPACE_ID::Metadata TypeName::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ColumnDef::_Internal { public: static const ::pg_query::TypeName& type_name(const ColumnDef* msg); static const ::pg_query::Node& raw_default(const ColumnDef* msg); static const ::pg_query::Node& cooked_default(const ColumnDef* msg); static const ::pg_query::RangeVar& identity_sequence(const ColumnDef* msg); static const ::pg_query::CollateClause& coll_clause(const ColumnDef* msg); }; const ::pg_query::TypeName& ColumnDef::_Internal::type_name(const ColumnDef* msg) { return *msg->type_name_; } const ::pg_query::Node& ColumnDef::_Internal::raw_default(const ColumnDef* msg) { return *msg->raw_default_; } const ::pg_query::Node& ColumnDef::_Internal::cooked_default(const ColumnDef* msg) { return *msg->cooked_default_; } const ::pg_query::RangeVar& ColumnDef::_Internal::identity_sequence(const ColumnDef* msg) { return *msg->identity_sequence_; } const ::pg_query::CollateClause& ColumnDef::_Internal::coll_clause(const ColumnDef* msg) { return *msg->coll_clause_; } ColumnDef::ColumnDef(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), constraints_(arena), fdwoptions_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ColumnDef) } ColumnDef::ColumnDef(const ColumnDef& from) : ::PROTOBUF_NAMESPACE_ID::Message(), constraints_(from.constraints_), fdwoptions_(from.fdwoptions_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); colname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_colname().empty()) { colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_colname(), GetArena()); } storage_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_storage().empty()) { storage_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_storage(), GetArena()); } identity_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_identity().empty()) { identity_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_identity(), GetArena()); } generated_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_generated().empty()) { generated_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_generated(), GetArena()); } if (from._internal_has_type_name()) { type_name_ = new ::pg_query::TypeName(*from.type_name_); } else { type_name_ = nullptr; } if (from._internal_has_raw_default()) { raw_default_ = new ::pg_query::Node(*from.raw_default_); } else { raw_default_ = nullptr; } if (from._internal_has_cooked_default()) { cooked_default_ = new ::pg_query::Node(*from.cooked_default_); } else { cooked_default_ = nullptr; } if (from._internal_has_identity_sequence()) { identity_sequence_ = new ::pg_query::RangeVar(*from.identity_sequence_); } else { identity_sequence_ = nullptr; } if (from._internal_has_coll_clause()) { coll_clause_ = new ::pg_query::CollateClause(*from.coll_clause_); } else { coll_clause_ = nullptr; } ::memcpy(&inhcount_, &from.inhcount_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&inhcount_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.ColumnDef) } void ColumnDef::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); colname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); storage_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); identity_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); generated_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&type_name_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&type_name_)) + sizeof(location_)); } ColumnDef::~ColumnDef() { // @@protoc_insertion_point(destructor:pg_query.ColumnDef) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ColumnDef::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); colname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); storage_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); identity_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); generated_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete type_name_; if (this != internal_default_instance()) delete raw_default_; if (this != internal_default_instance()) delete cooked_default_; if (this != internal_default_instance()) delete identity_sequence_; if (this != internal_default_instance()) delete coll_clause_; } void ColumnDef::ArenaDtor(void* object) { ColumnDef* _this = reinterpret_cast< ColumnDef* >(object); (void)_this; } void ColumnDef::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ColumnDef::SetCachedSize(int size) const { _cached_size_.Set(size); } const ColumnDef& ColumnDef::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ColumnDef::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ColumnDef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; constraints_.Clear(); fdwoptions_.Clear(); colname_.ClearToEmpty(); storage_.ClearToEmpty(); identity_.ClearToEmpty(); generated_.ClearToEmpty(); if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; if (GetArena() == nullptr && raw_default_ != nullptr) { delete raw_default_; } raw_default_ = nullptr; if (GetArena() == nullptr && cooked_default_ != nullptr) { delete cooked_default_; } cooked_default_ = nullptr; if (GetArena() == nullptr && identity_sequence_ != nullptr) { delete identity_sequence_; } identity_sequence_ = nullptr; if (GetArena() == nullptr && coll_clause_ != nullptr) { delete coll_clause_; } coll_clause_ = nullptr; ::memset(&inhcount_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&inhcount_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ColumnDef::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string colname = 1 [json_name = "colname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_colname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ColumnDef.colname")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_type_name(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 inhcount = 3 [json_name = "inhcount"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { inhcount_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool is_local = 4 [json_name = "is_local"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { is_local_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool is_not_null = 5 [json_name = "is_not_null"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { is_not_null_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool is_from_type = 6 [json_name = "is_from_type"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { is_from_type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string storage = 7 [json_name = "storage"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { auto str = _internal_mutable_storage(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ColumnDef.storage")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node raw_default = 8 [json_name = "raw_default"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr = ctx->ParseMessage(_internal_mutable_raw_default(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node cooked_default = 9 [json_name = "cooked_default"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr = ctx->ParseMessage(_internal_mutable_cooked_default(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string identity = 10 [json_name = "identity"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { auto str = _internal_mutable_identity(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ColumnDef.identity")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeVar identity_sequence = 11 [json_name = "identitySequence"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr = ctx->ParseMessage(_internal_mutable_identity_sequence(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string generated = 12 [json_name = "generated"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { auto str = _internal_mutable_generated(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.ColumnDef.generated")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.CollateClause coll_clause = 13 [json_name = "collClause"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr = ctx->ParseMessage(_internal_mutable_coll_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 coll_oid = 14 [json_name = "collOid"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 112)) { coll_oid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node constraints = 15 [json_name = "constraints"]; case 15: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_constraints(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<122>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node fdwoptions = 16 [json_name = "fdwoptions"]; case 16: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_fdwoptions(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<130>(ptr)); } else goto handle_unusual; continue; // int32 location = 17 [json_name = "location"]; case 17: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 136)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ColumnDef::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ColumnDef) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string colname = 1 [json_name = "colname"]; if (this->colname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_colname().data(), static_cast(this->_internal_colname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ColumnDef.colname"); target = stream->WriteStringMaybeAliased( 1, this->_internal_colname(), target); } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (this->has_type_name()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::type_name(this), target, stream); } // int32 inhcount = 3 [json_name = "inhcount"]; if (this->inhcount() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_inhcount(), target); } // bool is_local = 4 [json_name = "is_local"]; if (this->is_local() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_is_local(), target); } // bool is_not_null = 5 [json_name = "is_not_null"]; if (this->is_not_null() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_is_not_null(), target); } // bool is_from_type = 6 [json_name = "is_from_type"]; if (this->is_from_type() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_is_from_type(), target); } // string storage = 7 [json_name = "storage"]; if (this->storage().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_storage().data(), static_cast(this->_internal_storage().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ColumnDef.storage"); target = stream->WriteStringMaybeAliased( 7, this->_internal_storage(), target); } // .pg_query.Node raw_default = 8 [json_name = "raw_default"]; if (this->has_raw_default()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 8, _Internal::raw_default(this), target, stream); } // .pg_query.Node cooked_default = 9 [json_name = "cooked_default"]; if (this->has_cooked_default()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 9, _Internal::cooked_default(this), target, stream); } // string identity = 10 [json_name = "identity"]; if (this->identity().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_identity().data(), static_cast(this->_internal_identity().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ColumnDef.identity"); target = stream->WriteStringMaybeAliased( 10, this->_internal_identity(), target); } // .pg_query.RangeVar identity_sequence = 11 [json_name = "identitySequence"]; if (this->has_identity_sequence()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 11, _Internal::identity_sequence(this), target, stream); } // string generated = 12 [json_name = "generated"]; if (this->generated().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_generated().data(), static_cast(this->_internal_generated().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.ColumnDef.generated"); target = stream->WriteStringMaybeAliased( 12, this->_internal_generated(), target); } // .pg_query.CollateClause coll_clause = 13 [json_name = "collClause"]; if (this->has_coll_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 13, _Internal::coll_clause(this), target, stream); } // uint32 coll_oid = 14 [json_name = "collOid"]; if (this->coll_oid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(14, this->_internal_coll_oid(), target); } // repeated .pg_query.Node constraints = 15 [json_name = "constraints"]; for (unsigned int i = 0, n = static_cast(this->_internal_constraints_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(15, this->_internal_constraints(i), target, stream); } // repeated .pg_query.Node fdwoptions = 16 [json_name = "fdwoptions"]; for (unsigned int i = 0, n = static_cast(this->_internal_fdwoptions_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(16, this->_internal_fdwoptions(i), target, stream); } // int32 location = 17 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(17, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ColumnDef) return target; } size_t ColumnDef::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ColumnDef) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node constraints = 15 [json_name = "constraints"]; total_size += 1UL * this->_internal_constraints_size(); for (const auto& msg : this->constraints_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node fdwoptions = 16 [json_name = "fdwoptions"]; total_size += 2UL * this->_internal_fdwoptions_size(); for (const auto& msg : this->fdwoptions_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string colname = 1 [json_name = "colname"]; if (this->colname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_colname()); } // string storage = 7 [json_name = "storage"]; if (this->storage().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_storage()); } // string identity = 10 [json_name = "identity"]; if (this->identity().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_identity()); } // string generated = 12 [json_name = "generated"]; if (this->generated().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_generated()); } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; if (this->has_type_name()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *type_name_); } // .pg_query.Node raw_default = 8 [json_name = "raw_default"]; if (this->has_raw_default()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *raw_default_); } // .pg_query.Node cooked_default = 9 [json_name = "cooked_default"]; if (this->has_cooked_default()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *cooked_default_); } // .pg_query.RangeVar identity_sequence = 11 [json_name = "identitySequence"]; if (this->has_identity_sequence()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *identity_sequence_); } // .pg_query.CollateClause coll_clause = 13 [json_name = "collClause"]; if (this->has_coll_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *coll_clause_); } // int32 inhcount = 3 [json_name = "inhcount"]; if (this->inhcount() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_inhcount()); } // bool is_local = 4 [json_name = "is_local"]; if (this->is_local() != 0) { total_size += 1 + 1; } // bool is_not_null = 5 [json_name = "is_not_null"]; if (this->is_not_null() != 0) { total_size += 1 + 1; } // bool is_from_type = 6 [json_name = "is_from_type"]; if (this->is_from_type() != 0) { total_size += 1 + 1; } // uint32 coll_oid = 14 [json_name = "collOid"]; if (this->coll_oid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_coll_oid()); } // int32 location = 17 [json_name = "location"]; if (this->location() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ColumnDef::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ColumnDef) GOOGLE_DCHECK_NE(&from, this); const ColumnDef* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ColumnDef) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ColumnDef) MergeFrom(*source); } } void ColumnDef::MergeFrom(const ColumnDef& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ColumnDef) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; constraints_.MergeFrom(from.constraints_); fdwoptions_.MergeFrom(from.fdwoptions_); if (from.colname().size() > 0) { _internal_set_colname(from._internal_colname()); } if (from.storage().size() > 0) { _internal_set_storage(from._internal_storage()); } if (from.identity().size() > 0) { _internal_set_identity(from._internal_identity()); } if (from.generated().size() > 0) { _internal_set_generated(from._internal_generated()); } if (from.has_type_name()) { _internal_mutable_type_name()->::pg_query::TypeName::MergeFrom(from._internal_type_name()); } if (from.has_raw_default()) { _internal_mutable_raw_default()->::pg_query::Node::MergeFrom(from._internal_raw_default()); } if (from.has_cooked_default()) { _internal_mutable_cooked_default()->::pg_query::Node::MergeFrom(from._internal_cooked_default()); } if (from.has_identity_sequence()) { _internal_mutable_identity_sequence()->::pg_query::RangeVar::MergeFrom(from._internal_identity_sequence()); } if (from.has_coll_clause()) { _internal_mutable_coll_clause()->::pg_query::CollateClause::MergeFrom(from._internal_coll_clause()); } if (from.inhcount() != 0) { _internal_set_inhcount(from._internal_inhcount()); } if (from.is_local() != 0) { _internal_set_is_local(from._internal_is_local()); } if (from.is_not_null() != 0) { _internal_set_is_not_null(from._internal_is_not_null()); } if (from.is_from_type() != 0) { _internal_set_is_from_type(from._internal_is_from_type()); } if (from.coll_oid() != 0) { _internal_set_coll_oid(from._internal_coll_oid()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void ColumnDef::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ColumnDef) if (&from == this) return; Clear(); MergeFrom(from); } void ColumnDef::CopyFrom(const ColumnDef& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ColumnDef) if (&from == this) return; Clear(); MergeFrom(from); } bool ColumnDef::IsInitialized() const { return true; } void ColumnDef::InternalSwap(ColumnDef* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); constraints_.InternalSwap(&other->constraints_); fdwoptions_.InternalSwap(&other->fdwoptions_); colname_.Swap(&other->colname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); storage_.Swap(&other->storage_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); identity_.Swap(&other->identity_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); generated_.Swap(&other->generated_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ColumnDef, location_) + sizeof(ColumnDef::location_) - PROTOBUF_FIELD_OFFSET(ColumnDef, type_name_)>( reinterpret_cast(&type_name_), reinterpret_cast(&other->type_name_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ColumnDef::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class IndexElem::_Internal { public: static const ::pg_query::Node& expr(const IndexElem* msg); }; const ::pg_query::Node& IndexElem::_Internal::expr(const IndexElem* msg) { return *msg->expr_; } IndexElem::IndexElem(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), collation_(arena), opclass_(arena), opclassopts_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.IndexElem) } IndexElem::IndexElem(const IndexElem& from) : ::PROTOBUF_NAMESPACE_ID::Message(), collation_(from.collation_), opclass_(from.opclass_), opclassopts_(from.opclassopts_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } indexcolname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_indexcolname().empty()) { indexcolname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_indexcolname(), GetArena()); } if (from._internal_has_expr()) { expr_ = new ::pg_query::Node(*from.expr_); } else { expr_ = nullptr; } ::memcpy(&ordering_, &from.ordering_, static_cast(reinterpret_cast(&nulls_ordering_) - reinterpret_cast(&ordering_)) + sizeof(nulls_ordering_)); // @@protoc_insertion_point(copy_constructor:pg_query.IndexElem) } void IndexElem::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); indexcolname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&expr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&nulls_ordering_) - reinterpret_cast(&expr_)) + sizeof(nulls_ordering_)); } IndexElem::~IndexElem() { // @@protoc_insertion_point(destructor:pg_query.IndexElem) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void IndexElem::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); indexcolname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete expr_; } void IndexElem::ArenaDtor(void* object) { IndexElem* _this = reinterpret_cast< IndexElem* >(object); (void)_this; } void IndexElem::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void IndexElem::SetCachedSize(int size) const { _cached_size_.Set(size); } const IndexElem& IndexElem::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void IndexElem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.IndexElem) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; collation_.Clear(); opclass_.Clear(); opclassopts_.Clear(); name_.ClearToEmpty(); indexcolname_.ClearToEmpty(); if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; ::memset(&ordering_, 0, static_cast( reinterpret_cast(&nulls_ordering_) - reinterpret_cast(&ordering_)) + sizeof(nulls_ordering_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* IndexElem::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.IndexElem.name")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node expr = 2 [json_name = "expr"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string indexcolname = 3 [json_name = "indexcolname"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_indexcolname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.IndexElem.indexcolname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node collation = 4 [json_name = "collation"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_collation(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_opclass(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_opclassopts(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_ordering(static_cast<::pg_query::SortByDir>(val)); } else goto handle_unusual; continue; // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_nulls_ordering(static_cast<::pg_query::SortByNulls>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* IndexElem::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.IndexElem) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.IndexElem.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::expr(this), target, stream); } // string indexcolname = 3 [json_name = "indexcolname"]; if (this->indexcolname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_indexcolname().data(), static_cast(this->_internal_indexcolname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.IndexElem.indexcolname"); target = stream->WriteStringMaybeAliased( 3, this->_internal_indexcolname(), target); } // repeated .pg_query.Node collation = 4 [json_name = "collation"]; for (unsigned int i = 0, n = static_cast(this->_internal_collation_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_collation(i), target, stream); } // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; for (unsigned int i = 0, n = static_cast(this->_internal_opclass_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_opclass(i), target, stream); } // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; for (unsigned int i = 0, n = static_cast(this->_internal_opclassopts_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_opclassopts(i), target, stream); } // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; if (this->ordering() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 7, this->_internal_ordering(), target); } // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; if (this->nulls_ordering() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 8, this->_internal_nulls_ordering(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.IndexElem) return target; } size_t IndexElem::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.IndexElem) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node collation = 4 [json_name = "collation"]; total_size += 1UL * this->_internal_collation_size(); for (const auto& msg : this->collation_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; total_size += 1UL * this->_internal_opclass_size(); for (const auto& msg : this->opclass_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; total_size += 1UL * this->_internal_opclassopts_size(); for (const auto& msg : this->opclassopts_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // string indexcolname = 3 [json_name = "indexcolname"]; if (this->indexcolname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_indexcolname()); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *expr_); } // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; if (this->ordering() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_ordering()); } // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; if (this->nulls_ordering() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_nulls_ordering()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void IndexElem::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.IndexElem) GOOGLE_DCHECK_NE(&from, this); const IndexElem* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.IndexElem) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.IndexElem) MergeFrom(*source); } } void IndexElem::MergeFrom(const IndexElem& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.IndexElem) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; collation_.MergeFrom(from.collation_); opclass_.MergeFrom(from.opclass_); opclassopts_.MergeFrom(from.opclassopts_); if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.indexcolname().size() > 0) { _internal_set_indexcolname(from._internal_indexcolname()); } if (from.has_expr()) { _internal_mutable_expr()->::pg_query::Node::MergeFrom(from._internal_expr()); } if (from.ordering() != 0) { _internal_set_ordering(from._internal_ordering()); } if (from.nulls_ordering() != 0) { _internal_set_nulls_ordering(from._internal_nulls_ordering()); } } void IndexElem::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.IndexElem) if (&from == this) return; Clear(); MergeFrom(from); } void IndexElem::CopyFrom(const IndexElem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.IndexElem) if (&from == this) return; Clear(); MergeFrom(from); } bool IndexElem::IsInitialized() const { return true; } void IndexElem::InternalSwap(IndexElem* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); collation_.InternalSwap(&other->collation_); opclass_.InternalSwap(&other->opclass_); opclassopts_.InternalSwap(&other->opclassopts_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); indexcolname_.Swap(&other->indexcolname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(IndexElem, nulls_ordering_) + sizeof(IndexElem::nulls_ordering_) - PROTOBUF_FIELD_OFFSET(IndexElem, expr_)>( reinterpret_cast(&expr_), reinterpret_cast(&other->expr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata IndexElem::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class Constraint::_Internal { public: static const ::pg_query::Node& raw_expr(const Constraint* msg); static const ::pg_query::Node& where_clause(const Constraint* msg); static const ::pg_query::RangeVar& pktable(const Constraint* msg); }; const ::pg_query::Node& Constraint::_Internal::raw_expr(const Constraint* msg) { return *msg->raw_expr_; } const ::pg_query::Node& Constraint::_Internal::where_clause(const Constraint* msg) { return *msg->where_clause_; } const ::pg_query::RangeVar& Constraint::_Internal::pktable(const Constraint* msg) { return *msg->pktable_; } Constraint::Constraint(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), keys_(arena), including_(arena), exclusions_(arena), options_(arena), fk_attrs_(arena), pk_attrs_(arena), old_conpfeqop_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.Constraint) } Constraint::Constraint(const Constraint& from) : ::PROTOBUF_NAMESPACE_ID::Message(), keys_(from.keys_), including_(from.including_), exclusions_(from.exclusions_), options_(from.options_), fk_attrs_(from.fk_attrs_), pk_attrs_(from.pk_attrs_), old_conpfeqop_(from.old_conpfeqop_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); conname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_conname().empty()) { conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_conname(), GetArena()); } cooked_expr_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_cooked_expr().empty()) { cooked_expr_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_cooked_expr(), GetArena()); } generated_when_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_generated_when().empty()) { generated_when_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_generated_when(), GetArena()); } indexname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_indexname().empty()) { indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_indexname(), GetArena()); } indexspace_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_indexspace().empty()) { indexspace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_indexspace(), GetArena()); } access_method_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_access_method().empty()) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_access_method(), GetArena()); } fk_matchtype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_fk_matchtype().empty()) { fk_matchtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_fk_matchtype(), GetArena()); } fk_upd_action_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_fk_upd_action().empty()) { fk_upd_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_fk_upd_action(), GetArena()); } fk_del_action_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_fk_del_action().empty()) { fk_del_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_fk_del_action(), GetArena()); } if (from._internal_has_raw_expr()) { raw_expr_ = new ::pg_query::Node(*from.raw_expr_); } else { raw_expr_ = nullptr; } if (from._internal_has_where_clause()) { where_clause_ = new ::pg_query::Node(*from.where_clause_); } else { where_clause_ = nullptr; } if (from._internal_has_pktable()) { pktable_ = new ::pg_query::RangeVar(*from.pktable_); } else { pktable_ = nullptr; } ::memcpy(&contype_, &from.contype_, static_cast(reinterpret_cast(&initially_valid_) - reinterpret_cast(&contype_)) + sizeof(initially_valid_)); // @@protoc_insertion_point(copy_constructor:pg_query.Constraint) } void Constraint::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); conname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); cooked_expr_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); generated_when_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); indexname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); indexspace_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); access_method_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); fk_matchtype_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); fk_upd_action_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); fk_del_action_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&raw_expr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&initially_valid_) - reinterpret_cast(&raw_expr_)) + sizeof(initially_valid_)); } Constraint::~Constraint() { // @@protoc_insertion_point(destructor:pg_query.Constraint) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void Constraint::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); conname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); cooked_expr_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); generated_when_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); indexname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); indexspace_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); access_method_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); fk_matchtype_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); fk_upd_action_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); fk_del_action_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete raw_expr_; if (this != internal_default_instance()) delete where_clause_; if (this != internal_default_instance()) delete pktable_; } void Constraint::ArenaDtor(void* object) { Constraint* _this = reinterpret_cast< Constraint* >(object); (void)_this; } void Constraint::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void Constraint::SetCachedSize(int size) const { _cached_size_.Set(size); } const Constraint& Constraint::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void Constraint::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.Constraint) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; keys_.Clear(); including_.Clear(); exclusions_.Clear(); options_.Clear(); fk_attrs_.Clear(); pk_attrs_.Clear(); old_conpfeqop_.Clear(); conname_.ClearToEmpty(); cooked_expr_.ClearToEmpty(); generated_when_.ClearToEmpty(); indexname_.ClearToEmpty(); indexspace_.ClearToEmpty(); access_method_.ClearToEmpty(); fk_matchtype_.ClearToEmpty(); fk_upd_action_.ClearToEmpty(); fk_del_action_.ClearToEmpty(); if (GetArena() == nullptr && raw_expr_ != nullptr) { delete raw_expr_; } raw_expr_ = nullptr; if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; if (GetArena() == nullptr && pktable_ != nullptr) { delete pktable_; } pktable_ = nullptr; ::memset(&contype_, 0, static_cast( reinterpret_cast(&initially_valid_) - reinterpret_cast(&contype_)) + sizeof(initially_valid_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* Constraint::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.ConstrType contype = 1 [json_name = "contype"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_contype(static_cast<::pg_query::ConstrType>(val)); } else goto handle_unusual; continue; // string conname = 2 [json_name = "conname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_conname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Constraint.conname")); CHK_(ptr); } else goto handle_unusual; continue; // bool deferrable = 3 [json_name = "deferrable"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { deferrable_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool initdeferred = 4 [json_name = "initdeferred"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { initdeferred_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool is_no_inherit = 6 [json_name = "is_no_inherit"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { is_no_inherit_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node raw_expr = 7 [json_name = "raw_expr"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_raw_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string cooked_expr = 8 [json_name = "cooked_expr"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { auto str = _internal_mutable_cooked_expr(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Constraint.cooked_expr")); CHK_(ptr); } else goto handle_unusual; continue; // string generated_when = 9 [json_name = "generated_when"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { auto str = _internal_mutable_generated_when(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Constraint.generated_when")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node keys = 10 [json_name = "keys"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_keys(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node including = 11 [json_name = "including"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_including(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<90>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node exclusions = 12 [json_name = "exclusions"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_exclusions(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<98>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node options = 13 [json_name = "options"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_options(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<106>(ptr)); } else goto handle_unusual; continue; // string indexname = 14 [json_name = "indexname"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) { auto str = _internal_mutable_indexname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Constraint.indexname")); CHK_(ptr); } else goto handle_unusual; continue; // string indexspace = 15 [json_name = "indexspace"]; case 15: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { auto str = _internal_mutable_indexspace(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Constraint.indexspace")); CHK_(ptr); } else goto handle_unusual; continue; // bool reset_default_tblspc = 16 [json_name = "reset_default_tblspc"]; case 16: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 128)) { reset_default_tblspc_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string access_method = 17 [json_name = "access_method"]; case 17: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) { auto str = _internal_mutable_access_method(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Constraint.access_method")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node where_clause = 18 [json_name = "where_clause"]; case 18: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) { ptr = ctx->ParseMessage(_internal_mutable_where_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.RangeVar pktable = 19 [json_name = "pktable"]; case 19: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 154)) { ptr = ctx->ParseMessage(_internal_mutable_pktable(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node fk_attrs = 20 [json_name = "fk_attrs"]; case 20: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_fk_attrs(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<162>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node pk_attrs = 21 [json_name = "pk_attrs"]; case 21: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_pk_attrs(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<170>(ptr)); } else goto handle_unusual; continue; // string fk_matchtype = 22 [json_name = "fk_matchtype"]; case 22: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) { auto str = _internal_mutable_fk_matchtype(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Constraint.fk_matchtype")); CHK_(ptr); } else goto handle_unusual; continue; // string fk_upd_action = 23 [json_name = "fk_upd_action"]; case 23: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) { auto str = _internal_mutable_fk_upd_action(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Constraint.fk_upd_action")); CHK_(ptr); } else goto handle_unusual; continue; // string fk_del_action = 24 [json_name = "fk_del_action"]; case 24: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) { auto str = _internal_mutable_fk_del_action(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.Constraint.fk_del_action")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node old_conpfeqop = 25 [json_name = "old_conpfeqop"]; case 25: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_old_conpfeqop(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<202>(ptr)); } else goto handle_unusual; continue; // uint32 old_pktable_oid = 26 [json_name = "old_pktable_oid"]; case 26: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 208)) { old_pktable_oid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool skip_validation = 27 [json_name = "skip_validation"]; case 27: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 216)) { skip_validation_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool initially_valid = 28 [json_name = "initially_valid"]; case 28: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 224)) { initially_valid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* Constraint::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.Constraint) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.ConstrType contype = 1 [json_name = "contype"]; if (this->contype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_contype(), target); } // string conname = 2 [json_name = "conname"]; if (this->conname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_conname().data(), static_cast(this->_internal_conname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.conname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_conname(), target); } // bool deferrable = 3 [json_name = "deferrable"]; if (this->deferrable() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_deferrable(), target); } // bool initdeferred = 4 [json_name = "initdeferred"]; if (this->initdeferred() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_initdeferred(), target); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } // bool is_no_inherit = 6 [json_name = "is_no_inherit"]; if (this->is_no_inherit() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_is_no_inherit(), target); } // .pg_query.Node raw_expr = 7 [json_name = "raw_expr"]; if (this->has_raw_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 7, _Internal::raw_expr(this), target, stream); } // string cooked_expr = 8 [json_name = "cooked_expr"]; if (this->cooked_expr().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_cooked_expr().data(), static_cast(this->_internal_cooked_expr().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.cooked_expr"); target = stream->WriteStringMaybeAliased( 8, this->_internal_cooked_expr(), target); } // string generated_when = 9 [json_name = "generated_when"]; if (this->generated_when().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_generated_when().data(), static_cast(this->_internal_generated_when().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.generated_when"); target = stream->WriteStringMaybeAliased( 9, this->_internal_generated_when(), target); } // repeated .pg_query.Node keys = 10 [json_name = "keys"]; for (unsigned int i = 0, n = static_cast(this->_internal_keys_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(10, this->_internal_keys(i), target, stream); } // repeated .pg_query.Node including = 11 [json_name = "including"]; for (unsigned int i = 0, n = static_cast(this->_internal_including_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(11, this->_internal_including(i), target, stream); } // repeated .pg_query.Node exclusions = 12 [json_name = "exclusions"]; for (unsigned int i = 0, n = static_cast(this->_internal_exclusions_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(12, this->_internal_exclusions(i), target, stream); } // repeated .pg_query.Node options = 13 [json_name = "options"]; for (unsigned int i = 0, n = static_cast(this->_internal_options_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(13, this->_internal_options(i), target, stream); } // string indexname = 14 [json_name = "indexname"]; if (this->indexname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_indexname().data(), static_cast(this->_internal_indexname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.indexname"); target = stream->WriteStringMaybeAliased( 14, this->_internal_indexname(), target); } // string indexspace = 15 [json_name = "indexspace"]; if (this->indexspace().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_indexspace().data(), static_cast(this->_internal_indexspace().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.indexspace"); target = stream->WriteStringMaybeAliased( 15, this->_internal_indexspace(), target); } // bool reset_default_tblspc = 16 [json_name = "reset_default_tblspc"]; if (this->reset_default_tblspc() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(16, this->_internal_reset_default_tblspc(), target); } // string access_method = 17 [json_name = "access_method"]; if (this->access_method().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_access_method().data(), static_cast(this->_internal_access_method().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.access_method"); target = stream->WriteStringMaybeAliased( 17, this->_internal_access_method(), target); } // .pg_query.Node where_clause = 18 [json_name = "where_clause"]; if (this->has_where_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 18, _Internal::where_clause(this), target, stream); } // .pg_query.RangeVar pktable = 19 [json_name = "pktable"]; if (this->has_pktable()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 19, _Internal::pktable(this), target, stream); } // repeated .pg_query.Node fk_attrs = 20 [json_name = "fk_attrs"]; for (unsigned int i = 0, n = static_cast(this->_internal_fk_attrs_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(20, this->_internal_fk_attrs(i), target, stream); } // repeated .pg_query.Node pk_attrs = 21 [json_name = "pk_attrs"]; for (unsigned int i = 0, n = static_cast(this->_internal_pk_attrs_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(21, this->_internal_pk_attrs(i), target, stream); } // string fk_matchtype = 22 [json_name = "fk_matchtype"]; if (this->fk_matchtype().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_fk_matchtype().data(), static_cast(this->_internal_fk_matchtype().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.fk_matchtype"); target = stream->WriteStringMaybeAliased( 22, this->_internal_fk_matchtype(), target); } // string fk_upd_action = 23 [json_name = "fk_upd_action"]; if (this->fk_upd_action().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_fk_upd_action().data(), static_cast(this->_internal_fk_upd_action().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.fk_upd_action"); target = stream->WriteStringMaybeAliased( 23, this->_internal_fk_upd_action(), target); } // string fk_del_action = 24 [json_name = "fk_del_action"]; if (this->fk_del_action().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_fk_del_action().data(), static_cast(this->_internal_fk_del_action().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.Constraint.fk_del_action"); target = stream->WriteStringMaybeAliased( 24, this->_internal_fk_del_action(), target); } // repeated .pg_query.Node old_conpfeqop = 25 [json_name = "old_conpfeqop"]; for (unsigned int i = 0, n = static_cast(this->_internal_old_conpfeqop_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(25, this->_internal_old_conpfeqop(i), target, stream); } // uint32 old_pktable_oid = 26 [json_name = "old_pktable_oid"]; if (this->old_pktable_oid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(26, this->_internal_old_pktable_oid(), target); } // bool skip_validation = 27 [json_name = "skip_validation"]; if (this->skip_validation() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(27, this->_internal_skip_validation(), target); } // bool initially_valid = 28 [json_name = "initially_valid"]; if (this->initially_valid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(28, this->_internal_initially_valid(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.Constraint) return target; } size_t Constraint::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.Constraint) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node keys = 10 [json_name = "keys"]; total_size += 1UL * this->_internal_keys_size(); for (const auto& msg : this->keys_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node including = 11 [json_name = "including"]; total_size += 1UL * this->_internal_including_size(); for (const auto& msg : this->including_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node exclusions = 12 [json_name = "exclusions"]; total_size += 1UL * this->_internal_exclusions_size(); for (const auto& msg : this->exclusions_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node options = 13 [json_name = "options"]; total_size += 1UL * this->_internal_options_size(); for (const auto& msg : this->options_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node fk_attrs = 20 [json_name = "fk_attrs"]; total_size += 2UL * this->_internal_fk_attrs_size(); for (const auto& msg : this->fk_attrs_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node pk_attrs = 21 [json_name = "pk_attrs"]; total_size += 2UL * this->_internal_pk_attrs_size(); for (const auto& msg : this->pk_attrs_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node old_conpfeqop = 25 [json_name = "old_conpfeqop"]; total_size += 2UL * this->_internal_old_conpfeqop_size(); for (const auto& msg : this->old_conpfeqop_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string conname = 2 [json_name = "conname"]; if (this->conname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_conname()); } // string cooked_expr = 8 [json_name = "cooked_expr"]; if (this->cooked_expr().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_cooked_expr()); } // string generated_when = 9 [json_name = "generated_when"]; if (this->generated_when().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_generated_when()); } // string indexname = 14 [json_name = "indexname"]; if (this->indexname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_indexname()); } // string indexspace = 15 [json_name = "indexspace"]; if (this->indexspace().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_indexspace()); } // string access_method = 17 [json_name = "access_method"]; if (this->access_method().size() > 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_access_method()); } // string fk_matchtype = 22 [json_name = "fk_matchtype"]; if (this->fk_matchtype().size() > 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_fk_matchtype()); } // string fk_upd_action = 23 [json_name = "fk_upd_action"]; if (this->fk_upd_action().size() > 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_fk_upd_action()); } // string fk_del_action = 24 [json_name = "fk_del_action"]; if (this->fk_del_action().size() > 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_fk_del_action()); } // .pg_query.Node raw_expr = 7 [json_name = "raw_expr"]; if (this->has_raw_expr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *raw_expr_); } // .pg_query.Node where_clause = 18 [json_name = "where_clause"]; if (this->has_where_clause()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *where_clause_); } // .pg_query.RangeVar pktable = 19 [json_name = "pktable"]; if (this->has_pktable()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *pktable_); } // .pg_query.ConstrType contype = 1 [json_name = "contype"]; if (this->contype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_contype()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } // bool deferrable = 3 [json_name = "deferrable"]; if (this->deferrable() != 0) { total_size += 1 + 1; } // bool initdeferred = 4 [json_name = "initdeferred"]; if (this->initdeferred() != 0) { total_size += 1 + 1; } // bool is_no_inherit = 6 [json_name = "is_no_inherit"]; if (this->is_no_inherit() != 0) { total_size += 1 + 1; } // bool reset_default_tblspc = 16 [json_name = "reset_default_tblspc"]; if (this->reset_default_tblspc() != 0) { total_size += 2 + 1; } // uint32 old_pktable_oid = 26 [json_name = "old_pktable_oid"]; if (this->old_pktable_oid() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_old_pktable_oid()); } // bool skip_validation = 27 [json_name = "skip_validation"]; if (this->skip_validation() != 0) { total_size += 2 + 1; } // bool initially_valid = 28 [json_name = "initially_valid"]; if (this->initially_valid() != 0) { total_size += 2 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void Constraint::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.Constraint) GOOGLE_DCHECK_NE(&from, this); const Constraint* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.Constraint) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.Constraint) MergeFrom(*source); } } void Constraint::MergeFrom(const Constraint& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.Constraint) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; keys_.MergeFrom(from.keys_); including_.MergeFrom(from.including_); exclusions_.MergeFrom(from.exclusions_); options_.MergeFrom(from.options_); fk_attrs_.MergeFrom(from.fk_attrs_); pk_attrs_.MergeFrom(from.pk_attrs_); old_conpfeqop_.MergeFrom(from.old_conpfeqop_); if (from.conname().size() > 0) { _internal_set_conname(from._internal_conname()); } if (from.cooked_expr().size() > 0) { _internal_set_cooked_expr(from._internal_cooked_expr()); } if (from.generated_when().size() > 0) { _internal_set_generated_when(from._internal_generated_when()); } if (from.indexname().size() > 0) { _internal_set_indexname(from._internal_indexname()); } if (from.indexspace().size() > 0) { _internal_set_indexspace(from._internal_indexspace()); } if (from.access_method().size() > 0) { _internal_set_access_method(from._internal_access_method()); } if (from.fk_matchtype().size() > 0) { _internal_set_fk_matchtype(from._internal_fk_matchtype()); } if (from.fk_upd_action().size() > 0) { _internal_set_fk_upd_action(from._internal_fk_upd_action()); } if (from.fk_del_action().size() > 0) { _internal_set_fk_del_action(from._internal_fk_del_action()); } if (from.has_raw_expr()) { _internal_mutable_raw_expr()->::pg_query::Node::MergeFrom(from._internal_raw_expr()); } if (from.has_where_clause()) { _internal_mutable_where_clause()->::pg_query::Node::MergeFrom(from._internal_where_clause()); } if (from.has_pktable()) { _internal_mutable_pktable()->::pg_query::RangeVar::MergeFrom(from._internal_pktable()); } if (from.contype() != 0) { _internal_set_contype(from._internal_contype()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } if (from.deferrable() != 0) { _internal_set_deferrable(from._internal_deferrable()); } if (from.initdeferred() != 0) { _internal_set_initdeferred(from._internal_initdeferred()); } if (from.is_no_inherit() != 0) { _internal_set_is_no_inherit(from._internal_is_no_inherit()); } if (from.reset_default_tblspc() != 0) { _internal_set_reset_default_tblspc(from._internal_reset_default_tblspc()); } if (from.old_pktable_oid() != 0) { _internal_set_old_pktable_oid(from._internal_old_pktable_oid()); } if (from.skip_validation() != 0) { _internal_set_skip_validation(from._internal_skip_validation()); } if (from.initially_valid() != 0) { _internal_set_initially_valid(from._internal_initially_valid()); } } void Constraint::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.Constraint) if (&from == this) return; Clear(); MergeFrom(from); } void Constraint::CopyFrom(const Constraint& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.Constraint) if (&from == this) return; Clear(); MergeFrom(from); } bool Constraint::IsInitialized() const { return true; } void Constraint::InternalSwap(Constraint* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); keys_.InternalSwap(&other->keys_); including_.InternalSwap(&other->including_); exclusions_.InternalSwap(&other->exclusions_); options_.InternalSwap(&other->options_); fk_attrs_.InternalSwap(&other->fk_attrs_); pk_attrs_.InternalSwap(&other->pk_attrs_); old_conpfeqop_.InternalSwap(&other->old_conpfeqop_); conname_.Swap(&other->conname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); cooked_expr_.Swap(&other->cooked_expr_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); generated_when_.Swap(&other->generated_when_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); indexname_.Swap(&other->indexname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); indexspace_.Swap(&other->indexspace_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); access_method_.Swap(&other->access_method_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); fk_matchtype_.Swap(&other->fk_matchtype_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); fk_upd_action_.Swap(&other->fk_upd_action_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); fk_del_action_.Swap(&other->fk_del_action_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(Constraint, initially_valid_) + sizeof(Constraint::initially_valid_) - PROTOBUF_FIELD_OFFSET(Constraint, raw_expr_)>( reinterpret_cast(&raw_expr_), reinterpret_cast(&other->raw_expr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata Constraint::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class DefElem::_Internal { public: static const ::pg_query::Node& arg(const DefElem* msg); }; const ::pg_query::Node& DefElem::_Internal::arg(const DefElem* msg) { return *msg->arg_; } DefElem::DefElem(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.DefElem) } DefElem::DefElem(const DefElem& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); defnamespace_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_defnamespace().empty()) { defnamespace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_defnamespace(), GetArena()); } defname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_defname().empty()) { defname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_defname(), GetArena()); } if (from._internal_has_arg()) { arg_ = new ::pg_query::Node(*from.arg_); } else { arg_ = nullptr; } ::memcpy(&defaction_, &from.defaction_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&defaction_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.DefElem) } void DefElem::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); defnamespace_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); defname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&arg_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&arg_)) + sizeof(location_)); } DefElem::~DefElem() { // @@protoc_insertion_point(destructor:pg_query.DefElem) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void DefElem::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); defnamespace_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); defname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete arg_; } void DefElem::ArenaDtor(void* object) { DefElem* _this = reinterpret_cast< DefElem* >(object); (void)_this; } void DefElem::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void DefElem::SetCachedSize(int size) const { _cached_size_.Set(size); } const DefElem& DefElem::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void DefElem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.DefElem) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; defnamespace_.ClearToEmpty(); defname_.ClearToEmpty(); if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; ::memset(&defaction_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&defaction_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* DefElem::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string defnamespace = 1 [json_name = "defnamespace"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_defnamespace(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.DefElem.defnamespace")); CHK_(ptr); } else goto handle_unusual; continue; // string defname = 2 [json_name = "defname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_defname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.DefElem.defname")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node arg = 3 [json_name = "arg"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_arg(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_defaction(static_cast<::pg_query::DefElemAction>(val)); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* DefElem::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.DefElem) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string defnamespace = 1 [json_name = "defnamespace"]; if (this->defnamespace().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_defnamespace().data(), static_cast(this->_internal_defnamespace().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.DefElem.defnamespace"); target = stream->WriteStringMaybeAliased( 1, this->_internal_defnamespace(), target); } // string defname = 2 [json_name = "defname"]; if (this->defname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_defname().data(), static_cast(this->_internal_defname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.DefElem.defname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_defname(), target); } // .pg_query.Node arg = 3 [json_name = "arg"]; if (this->has_arg()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::arg(this), target, stream); } // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; if (this->defaction() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 4, this->_internal_defaction(), target); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.DefElem) return target; } size_t DefElem::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.DefElem) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string defnamespace = 1 [json_name = "defnamespace"]; if (this->defnamespace().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_defnamespace()); } // string defname = 2 [json_name = "defname"]; if (this->defname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_defname()); } // .pg_query.Node arg = 3 [json_name = "arg"]; if (this->has_arg()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_); } // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; if (this->defaction() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_defaction()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void DefElem::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.DefElem) GOOGLE_DCHECK_NE(&from, this); const DefElem* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.DefElem) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.DefElem) MergeFrom(*source); } } void DefElem::MergeFrom(const DefElem& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.DefElem) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.defnamespace().size() > 0) { _internal_set_defnamespace(from._internal_defnamespace()); } if (from.defname().size() > 0) { _internal_set_defname(from._internal_defname()); } if (from.has_arg()) { _internal_mutable_arg()->::pg_query::Node::MergeFrom(from._internal_arg()); } if (from.defaction() != 0) { _internal_set_defaction(from._internal_defaction()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void DefElem::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.DefElem) if (&from == this) return; Clear(); MergeFrom(from); } void DefElem::CopyFrom(const DefElem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.DefElem) if (&from == this) return; Clear(); MergeFrom(from); } bool DefElem::IsInitialized() const { return true; } void DefElem::InternalSwap(DefElem* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); defnamespace_.Swap(&other->defnamespace_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); defname_.Swap(&other->defname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(DefElem, location_) + sizeof(DefElem::location_) - PROTOBUF_FIELD_OFFSET(DefElem, arg_)>( reinterpret_cast(&arg_), reinterpret_cast(&other->arg_)); } ::PROTOBUF_NAMESPACE_ID::Metadata DefElem::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RangeTblEntry::_Internal { public: static const ::pg_query::TableSampleClause& tablesample(const RangeTblEntry* msg); static const ::pg_query::Query& subquery(const RangeTblEntry* msg); static const ::pg_query::TableFunc& tablefunc(const RangeTblEntry* msg); static const ::pg_query::Alias& alias(const RangeTblEntry* msg); static const ::pg_query::Alias& eref(const RangeTblEntry* msg); }; const ::pg_query::TableSampleClause& RangeTblEntry::_Internal::tablesample(const RangeTblEntry* msg) { return *msg->tablesample_; } const ::pg_query::Query& RangeTblEntry::_Internal::subquery(const RangeTblEntry* msg) { return *msg->subquery_; } const ::pg_query::TableFunc& RangeTblEntry::_Internal::tablefunc(const RangeTblEntry* msg) { return *msg->tablefunc_; } const ::pg_query::Alias& RangeTblEntry::_Internal::alias(const RangeTblEntry* msg) { return *msg->alias_; } const ::pg_query::Alias& RangeTblEntry::_Internal::eref(const RangeTblEntry* msg) { return *msg->eref_; } RangeTblEntry::RangeTblEntry(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), joinaliasvars_(arena), joinleftcols_(arena), joinrightcols_(arena), functions_(arena), values_lists_(arena), coltypes_(arena), coltypmods_(arena), colcollations_(arena), security_quals_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTblEntry) } RangeTblEntry::RangeTblEntry(const RangeTblEntry& from) : ::PROTOBUF_NAMESPACE_ID::Message(), joinaliasvars_(from.joinaliasvars_), joinleftcols_(from.joinleftcols_), joinrightcols_(from.joinrightcols_), functions_(from.functions_), values_lists_(from.values_lists_), coltypes_(from.coltypes_), coltypmods_(from.coltypmods_), colcollations_(from.colcollations_), security_quals_(from.security_quals_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); relkind_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_relkind().empty()) { relkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_relkind(), GetArena()); } ctename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_ctename().empty()) { ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_ctename(), GetArena()); } enrname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_enrname().empty()) { enrname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_enrname(), GetArena()); } if (from._internal_has_tablesample()) { tablesample_ = new ::pg_query::TableSampleClause(*from.tablesample_); } else { tablesample_ = nullptr; } if (from._internal_has_subquery()) { subquery_ = new ::pg_query::Query(*from.subquery_); } else { subquery_ = nullptr; } if (from._internal_has_tablefunc()) { tablefunc_ = new ::pg_query::TableFunc(*from.tablefunc_); } else { tablefunc_ = nullptr; } if (from._internal_has_alias()) { alias_ = new ::pg_query::Alias(*from.alias_); } else { alias_ = nullptr; } if (from._internal_has_eref()) { eref_ = new ::pg_query::Alias(*from.eref_); } else { eref_ = nullptr; } ::memcpy(&rtekind_, &from.rtekind_, static_cast(reinterpret_cast(&check_as_user_) - reinterpret_cast(&rtekind_)) + sizeof(check_as_user_)); // @@protoc_insertion_point(copy_constructor:pg_query.RangeTblEntry) } void RangeTblEntry::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); relkind_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ctename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); enrname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&tablesample_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&check_as_user_) - reinterpret_cast(&tablesample_)) + sizeof(check_as_user_)); } RangeTblEntry::~RangeTblEntry() { // @@protoc_insertion_point(destructor:pg_query.RangeTblEntry) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RangeTblEntry::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); relkind_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ctename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); enrname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete tablesample_; if (this != internal_default_instance()) delete subquery_; if (this != internal_default_instance()) delete tablefunc_; if (this != internal_default_instance()) delete alias_; if (this != internal_default_instance()) delete eref_; } void RangeTblEntry::ArenaDtor(void* object) { RangeTblEntry* _this = reinterpret_cast< RangeTblEntry* >(object); (void)_this; } void RangeTblEntry::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RangeTblEntry::SetCachedSize(int size) const { _cached_size_.Set(size); } const RangeTblEntry& RangeTblEntry::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RangeTblEntry::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTblEntry) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; joinaliasvars_.Clear(); joinleftcols_.Clear(); joinrightcols_.Clear(); functions_.Clear(); values_lists_.Clear(); coltypes_.Clear(); coltypmods_.Clear(); colcollations_.Clear(); security_quals_.Clear(); relkind_.ClearToEmpty(); ctename_.ClearToEmpty(); enrname_.ClearToEmpty(); if (GetArena() == nullptr && tablesample_ != nullptr) { delete tablesample_; } tablesample_ = nullptr; if (GetArena() == nullptr && subquery_ != nullptr) { delete subquery_; } subquery_ = nullptr; if (GetArena() == nullptr && tablefunc_ != nullptr) { delete tablefunc_; } tablefunc_ = nullptr; if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; if (GetArena() == nullptr && eref_ != nullptr) { delete eref_; } eref_ = nullptr; ::memset(&rtekind_, 0, static_cast( reinterpret_cast(&check_as_user_) - reinterpret_cast(&rtekind_)) + sizeof(check_as_user_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RangeTblEntry::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RTEKind rtekind = 1 [json_name = "rtekind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_rtekind(static_cast<::pg_query::RTEKind>(val)); } else goto handle_unusual; continue; // uint32 relid = 2 [json_name = "relid"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { relid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // string relkind = 3 [json_name = "relkind"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_relkind(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RangeTblEntry.relkind")); CHK_(ptr); } else goto handle_unusual; continue; // int32 rellockmode = 4 [json_name = "rellockmode"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { rellockmode_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TableSampleClause tablesample = 5 [json_name = "tablesample"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr = ctx->ParseMessage(_internal_mutable_tablesample(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Query subquery = 6 [json_name = "subquery"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_subquery(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool security_barrier = 7 [json_name = "security_barrier"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { security_barrier_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.JoinType jointype = 8 [json_name = "jointype"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_jointype(static_cast<::pg_query::JoinType>(val)); } else goto handle_unusual; continue; // int32 joinmergedcols = 9 [json_name = "joinmergedcols"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { joinmergedcols_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node joinaliasvars = 10 [json_name = "joinaliasvars"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_joinaliasvars(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node joinleftcols = 11 [json_name = "joinleftcols"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_joinleftcols(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<90>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node joinrightcols = 12 [json_name = "joinrightcols"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_joinrightcols(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<98>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node functions = 13 [json_name = "functions"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_functions(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<106>(ptr)); } else goto handle_unusual; continue; // bool funcordinality = 14 [json_name = "funcordinality"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 112)) { funcordinality_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TableFunc tablefunc = 15 [json_name = "tablefunc"]; case 15: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) { ptr = ctx->ParseMessage(_internal_mutable_tablefunc(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node values_lists = 16 [json_name = "values_lists"]; case 16: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_values_lists(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<130>(ptr)); } else goto handle_unusual; continue; // string ctename = 17 [json_name = "ctename"]; case 17: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) { auto str = _internal_mutable_ctename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RangeTblEntry.ctename")); CHK_(ptr); } else goto handle_unusual; continue; // uint32 ctelevelsup = 18 [json_name = "ctelevelsup"]; case 18: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 144)) { ctelevelsup_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool self_reference = 19 [json_name = "self_reference"]; case 19: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 152)) { self_reference_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node coltypes = 20 [json_name = "coltypes"]; case 20: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_coltypes(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<162>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node coltypmods = 21 [json_name = "coltypmods"]; case 21: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_coltypmods(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<170>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node colcollations = 22 [json_name = "colcollations"]; case 22: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_colcollations(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<178>(ptr)); } else goto handle_unusual; continue; // string enrname = 23 [json_name = "enrname"]; case 23: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) { auto str = _internal_mutable_enrname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RangeTblEntry.enrname")); CHK_(ptr); } else goto handle_unusual; continue; // double enrtuples = 24 [json_name = "enrtuples"]; case 24: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 193)) { enrtuples_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr); ptr += sizeof(double); } else goto handle_unusual; continue; // .pg_query.Alias alias = 25 [json_name = "alias"]; case 25: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) { ptr = ctx->ParseMessage(_internal_mutable_alias(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Alias eref = 26 [json_name = "eref"]; case 26: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) { ptr = ctx->ParseMessage(_internal_mutable_eref(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool lateral = 27 [json_name = "lateral"]; case 27: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 216)) { lateral_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool inh = 28 [json_name = "inh"]; case 28: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 224)) { inh_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool in_from_cl = 29 [json_name = "inFromCl"]; case 29: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 232)) { in_from_cl_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 required_perms = 30 [json_name = "requiredPerms"]; case 30: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 240)) { required_perms_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 check_as_user = 31 [json_name = "checkAsUser"]; case 31: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 248)) { check_as_user_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node security_quals = 32 [json_name = "securityQuals"]; case 32: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 2)) { ptr -= 2; do { ptr += 2; ptr = ctx->ParseMessage(_internal_add_security_quals(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<258>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RangeTblEntry::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTblEntry) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RTEKind rtekind = 1 [json_name = "rtekind"]; if (this->rtekind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_rtekind(), target); } // uint32 relid = 2 [json_name = "relid"]; if (this->relid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_relid(), target); } // string relkind = 3 [json_name = "relkind"]; if (this->relkind().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_relkind().data(), static_cast(this->_internal_relkind().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RangeTblEntry.relkind"); target = stream->WriteStringMaybeAliased( 3, this->_internal_relkind(), target); } // int32 rellockmode = 4 [json_name = "rellockmode"]; if (this->rellockmode() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_rellockmode(), target); } // .pg_query.TableSampleClause tablesample = 5 [json_name = "tablesample"]; if (this->has_tablesample()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 5, _Internal::tablesample(this), target, stream); } // .pg_query.Query subquery = 6 [json_name = "subquery"]; if (this->has_subquery()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::subquery(this), target, stream); } // bool security_barrier = 7 [json_name = "security_barrier"]; if (this->security_barrier() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(7, this->_internal_security_barrier(), target); } // .pg_query.JoinType jointype = 8 [json_name = "jointype"]; if (this->jointype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 8, this->_internal_jointype(), target); } // int32 joinmergedcols = 9 [json_name = "joinmergedcols"]; if (this->joinmergedcols() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(9, this->_internal_joinmergedcols(), target); } // repeated .pg_query.Node joinaliasvars = 10 [json_name = "joinaliasvars"]; for (unsigned int i = 0, n = static_cast(this->_internal_joinaliasvars_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(10, this->_internal_joinaliasvars(i), target, stream); } // repeated .pg_query.Node joinleftcols = 11 [json_name = "joinleftcols"]; for (unsigned int i = 0, n = static_cast(this->_internal_joinleftcols_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(11, this->_internal_joinleftcols(i), target, stream); } // repeated .pg_query.Node joinrightcols = 12 [json_name = "joinrightcols"]; for (unsigned int i = 0, n = static_cast(this->_internal_joinrightcols_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(12, this->_internal_joinrightcols(i), target, stream); } // repeated .pg_query.Node functions = 13 [json_name = "functions"]; for (unsigned int i = 0, n = static_cast(this->_internal_functions_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(13, this->_internal_functions(i), target, stream); } // bool funcordinality = 14 [json_name = "funcordinality"]; if (this->funcordinality() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(14, this->_internal_funcordinality(), target); } // .pg_query.TableFunc tablefunc = 15 [json_name = "tablefunc"]; if (this->has_tablefunc()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 15, _Internal::tablefunc(this), target, stream); } // repeated .pg_query.Node values_lists = 16 [json_name = "values_lists"]; for (unsigned int i = 0, n = static_cast(this->_internal_values_lists_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(16, this->_internal_values_lists(i), target, stream); } // string ctename = 17 [json_name = "ctename"]; if (this->ctename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_ctename().data(), static_cast(this->_internal_ctename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RangeTblEntry.ctename"); target = stream->WriteStringMaybeAliased( 17, this->_internal_ctename(), target); } // uint32 ctelevelsup = 18 [json_name = "ctelevelsup"]; if (this->ctelevelsup() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(18, this->_internal_ctelevelsup(), target); } // bool self_reference = 19 [json_name = "self_reference"]; if (this->self_reference() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(19, this->_internal_self_reference(), target); } // repeated .pg_query.Node coltypes = 20 [json_name = "coltypes"]; for (unsigned int i = 0, n = static_cast(this->_internal_coltypes_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(20, this->_internal_coltypes(i), target, stream); } // repeated .pg_query.Node coltypmods = 21 [json_name = "coltypmods"]; for (unsigned int i = 0, n = static_cast(this->_internal_coltypmods_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(21, this->_internal_coltypmods(i), target, stream); } // repeated .pg_query.Node colcollations = 22 [json_name = "colcollations"]; for (unsigned int i = 0, n = static_cast(this->_internal_colcollations_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(22, this->_internal_colcollations(i), target, stream); } // string enrname = 23 [json_name = "enrname"]; if (this->enrname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_enrname().data(), static_cast(this->_internal_enrname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RangeTblEntry.enrname"); target = stream->WriteStringMaybeAliased( 23, this->_internal_enrname(), target); } // double enrtuples = 24 [json_name = "enrtuples"]; if (!(this->enrtuples() <= 0 && this->enrtuples() >= 0)) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(24, this->_internal_enrtuples(), target); } // .pg_query.Alias alias = 25 [json_name = "alias"]; if (this->has_alias()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 25, _Internal::alias(this), target, stream); } // .pg_query.Alias eref = 26 [json_name = "eref"]; if (this->has_eref()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 26, _Internal::eref(this), target, stream); } // bool lateral = 27 [json_name = "lateral"]; if (this->lateral() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(27, this->_internal_lateral(), target); } // bool inh = 28 [json_name = "inh"]; if (this->inh() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(28, this->_internal_inh(), target); } // bool in_from_cl = 29 [json_name = "inFromCl"]; if (this->in_from_cl() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(29, this->_internal_in_from_cl(), target); } // uint32 required_perms = 30 [json_name = "requiredPerms"]; if (this->required_perms() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(30, this->_internal_required_perms(), target); } // uint32 check_as_user = 31 [json_name = "checkAsUser"]; if (this->check_as_user() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(31, this->_internal_check_as_user(), target); } // repeated .pg_query.Node security_quals = 32 [json_name = "securityQuals"]; for (unsigned int i = 0, n = static_cast(this->_internal_security_quals_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(32, this->_internal_security_quals(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RangeTblEntry) return target; } size_t RangeTblEntry::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RangeTblEntry) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node joinaliasvars = 10 [json_name = "joinaliasvars"]; total_size += 1UL * this->_internal_joinaliasvars_size(); for (const auto& msg : this->joinaliasvars_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node joinleftcols = 11 [json_name = "joinleftcols"]; total_size += 1UL * this->_internal_joinleftcols_size(); for (const auto& msg : this->joinleftcols_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node joinrightcols = 12 [json_name = "joinrightcols"]; total_size += 1UL * this->_internal_joinrightcols_size(); for (const auto& msg : this->joinrightcols_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node functions = 13 [json_name = "functions"]; total_size += 1UL * this->_internal_functions_size(); for (const auto& msg : this->functions_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node values_lists = 16 [json_name = "values_lists"]; total_size += 2UL * this->_internal_values_lists_size(); for (const auto& msg : this->values_lists_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coltypes = 20 [json_name = "coltypes"]; total_size += 2UL * this->_internal_coltypes_size(); for (const auto& msg : this->coltypes_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node coltypmods = 21 [json_name = "coltypmods"]; total_size += 2UL * this->_internal_coltypmods_size(); for (const auto& msg : this->coltypmods_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node colcollations = 22 [json_name = "colcollations"]; total_size += 2UL * this->_internal_colcollations_size(); for (const auto& msg : this->colcollations_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node security_quals = 32 [json_name = "securityQuals"]; total_size += 2UL * this->_internal_security_quals_size(); for (const auto& msg : this->security_quals_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string relkind = 3 [json_name = "relkind"]; if (this->relkind().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_relkind()); } // string ctename = 17 [json_name = "ctename"]; if (this->ctename().size() > 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_ctename()); } // string enrname = 23 [json_name = "enrname"]; if (this->enrname().size() > 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_enrname()); } // .pg_query.TableSampleClause tablesample = 5 [json_name = "tablesample"]; if (this->has_tablesample()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *tablesample_); } // .pg_query.Query subquery = 6 [json_name = "subquery"]; if (this->has_subquery()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *subquery_); } // .pg_query.TableFunc tablefunc = 15 [json_name = "tablefunc"]; if (this->has_tablefunc()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *tablefunc_); } // .pg_query.Alias alias = 25 [json_name = "alias"]; if (this->has_alias()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *alias_); } // .pg_query.Alias eref = 26 [json_name = "eref"]; if (this->has_eref()) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *eref_); } // .pg_query.RTEKind rtekind = 1 [json_name = "rtekind"]; if (this->rtekind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_rtekind()); } // uint32 relid = 2 [json_name = "relid"]; if (this->relid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_relid()); } // int32 rellockmode = 4 [json_name = "rellockmode"]; if (this->rellockmode() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_rellockmode()); } // .pg_query.JoinType jointype = 8 [json_name = "jointype"]; if (this->jointype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_jointype()); } // int32 joinmergedcols = 9 [json_name = "joinmergedcols"]; if (this->joinmergedcols() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_joinmergedcols()); } // bool security_barrier = 7 [json_name = "security_barrier"]; if (this->security_barrier() != 0) { total_size += 1 + 1; } // bool funcordinality = 14 [json_name = "funcordinality"]; if (this->funcordinality() != 0) { total_size += 1 + 1; } // bool self_reference = 19 [json_name = "self_reference"]; if (this->self_reference() != 0) { total_size += 2 + 1; } // bool lateral = 27 [json_name = "lateral"]; if (this->lateral() != 0) { total_size += 2 + 1; } // double enrtuples = 24 [json_name = "enrtuples"]; if (!(this->enrtuples() <= 0 && this->enrtuples() >= 0)) { total_size += 2 + 8; } // uint32 ctelevelsup = 18 [json_name = "ctelevelsup"]; if (this->ctelevelsup() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_ctelevelsup()); } // bool inh = 28 [json_name = "inh"]; if (this->inh() != 0) { total_size += 2 + 1; } // bool in_from_cl = 29 [json_name = "inFromCl"]; if (this->in_from_cl() != 0) { total_size += 2 + 1; } // uint32 required_perms = 30 [json_name = "requiredPerms"]; if (this->required_perms() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_required_perms()); } // uint32 check_as_user = 31 [json_name = "checkAsUser"]; if (this->check_as_user() != 0) { total_size += 2 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_check_as_user()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RangeTblEntry::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RangeTblEntry) GOOGLE_DCHECK_NE(&from, this); const RangeTblEntry* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RangeTblEntry) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RangeTblEntry) MergeFrom(*source); } } void RangeTblEntry::MergeFrom(const RangeTblEntry& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTblEntry) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; joinaliasvars_.MergeFrom(from.joinaliasvars_); joinleftcols_.MergeFrom(from.joinleftcols_); joinrightcols_.MergeFrom(from.joinrightcols_); functions_.MergeFrom(from.functions_); values_lists_.MergeFrom(from.values_lists_); coltypes_.MergeFrom(from.coltypes_); coltypmods_.MergeFrom(from.coltypmods_); colcollations_.MergeFrom(from.colcollations_); security_quals_.MergeFrom(from.security_quals_); if (from.relkind().size() > 0) { _internal_set_relkind(from._internal_relkind()); } if (from.ctename().size() > 0) { _internal_set_ctename(from._internal_ctename()); } if (from.enrname().size() > 0) { _internal_set_enrname(from._internal_enrname()); } if (from.has_tablesample()) { _internal_mutable_tablesample()->::pg_query::TableSampleClause::MergeFrom(from._internal_tablesample()); } if (from.has_subquery()) { _internal_mutable_subquery()->::pg_query::Query::MergeFrom(from._internal_subquery()); } if (from.has_tablefunc()) { _internal_mutable_tablefunc()->::pg_query::TableFunc::MergeFrom(from._internal_tablefunc()); } if (from.has_alias()) { _internal_mutable_alias()->::pg_query::Alias::MergeFrom(from._internal_alias()); } if (from.has_eref()) { _internal_mutable_eref()->::pg_query::Alias::MergeFrom(from._internal_eref()); } if (from.rtekind() != 0) { _internal_set_rtekind(from._internal_rtekind()); } if (from.relid() != 0) { _internal_set_relid(from._internal_relid()); } if (from.rellockmode() != 0) { _internal_set_rellockmode(from._internal_rellockmode()); } if (from.jointype() != 0) { _internal_set_jointype(from._internal_jointype()); } if (from.joinmergedcols() != 0) { _internal_set_joinmergedcols(from._internal_joinmergedcols()); } if (from.security_barrier() != 0) { _internal_set_security_barrier(from._internal_security_barrier()); } if (from.funcordinality() != 0) { _internal_set_funcordinality(from._internal_funcordinality()); } if (from.self_reference() != 0) { _internal_set_self_reference(from._internal_self_reference()); } if (from.lateral() != 0) { _internal_set_lateral(from._internal_lateral()); } if (!(from.enrtuples() <= 0 && from.enrtuples() >= 0)) { _internal_set_enrtuples(from._internal_enrtuples()); } if (from.ctelevelsup() != 0) { _internal_set_ctelevelsup(from._internal_ctelevelsup()); } if (from.inh() != 0) { _internal_set_inh(from._internal_inh()); } if (from.in_from_cl() != 0) { _internal_set_in_from_cl(from._internal_in_from_cl()); } if (from.required_perms() != 0) { _internal_set_required_perms(from._internal_required_perms()); } if (from.check_as_user() != 0) { _internal_set_check_as_user(from._internal_check_as_user()); } } void RangeTblEntry::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RangeTblEntry) if (&from == this) return; Clear(); MergeFrom(from); } void RangeTblEntry::CopyFrom(const RangeTblEntry& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTblEntry) if (&from == this) return; Clear(); MergeFrom(from); } bool RangeTblEntry::IsInitialized() const { return true; } void RangeTblEntry::InternalSwap(RangeTblEntry* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); joinaliasvars_.InternalSwap(&other->joinaliasvars_); joinleftcols_.InternalSwap(&other->joinleftcols_); joinrightcols_.InternalSwap(&other->joinrightcols_); functions_.InternalSwap(&other->functions_); values_lists_.InternalSwap(&other->values_lists_); coltypes_.InternalSwap(&other->coltypes_); coltypmods_.InternalSwap(&other->coltypmods_); colcollations_.InternalSwap(&other->colcollations_); security_quals_.InternalSwap(&other->security_quals_); relkind_.Swap(&other->relkind_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ctename_.Swap(&other->ctename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); enrname_.Swap(&other->enrname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeTblEntry, check_as_user_) + sizeof(RangeTblEntry::check_as_user_) - PROTOBUF_FIELD_OFFSET(RangeTblEntry, tablesample_)>( reinterpret_cast(&tablesample_), reinterpret_cast(&other->tablesample_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RangeTblEntry::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RangeTblFunction::_Internal { public: static const ::pg_query::Node& funcexpr(const RangeTblFunction* msg); }; const ::pg_query::Node& RangeTblFunction::_Internal::funcexpr(const RangeTblFunction* msg) { return *msg->funcexpr_; } RangeTblFunction::RangeTblFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), funccolnames_(arena), funccoltypes_(arena), funccoltypmods_(arena), funccolcollations_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RangeTblFunction) } RangeTblFunction::RangeTblFunction(const RangeTblFunction& from) : ::PROTOBUF_NAMESPACE_ID::Message(), funccolnames_(from.funccolnames_), funccoltypes_(from.funccoltypes_), funccoltypmods_(from.funccoltypmods_), funccolcollations_(from.funccolcollations_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_funcexpr()) { funcexpr_ = new ::pg_query::Node(*from.funcexpr_); } else { funcexpr_ = nullptr; } funccolcount_ = from.funccolcount_; // @@protoc_insertion_point(copy_constructor:pg_query.RangeTblFunction) } void RangeTblFunction::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&funcexpr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&funccolcount_) - reinterpret_cast(&funcexpr_)) + sizeof(funccolcount_)); } RangeTblFunction::~RangeTblFunction() { // @@protoc_insertion_point(destructor:pg_query.RangeTblFunction) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RangeTblFunction::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete funcexpr_; } void RangeTblFunction::ArenaDtor(void* object) { RangeTblFunction* _this = reinterpret_cast< RangeTblFunction* >(object); (void)_this; } void RangeTblFunction::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RangeTblFunction::SetCachedSize(int size) const { _cached_size_.Set(size); } const RangeTblFunction& RangeTblFunction::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RangeTblFunction::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RangeTblFunction) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; funccolnames_.Clear(); funccoltypes_.Clear(); funccoltypmods_.Clear(); funccolcollations_.Clear(); if (GetArena() == nullptr && funcexpr_ != nullptr) { delete funcexpr_; } funcexpr_ = nullptr; funccolcount_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RangeTblFunction::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_funcexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 funccolcount = 2 [json_name = "funccolcount"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { funccolcount_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_funccolnames(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_funccoltypes(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_funccoltypmods(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_funccolcollations(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RangeTblFunction::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RangeTblFunction) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; if (this->has_funcexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::funcexpr(this), target, stream); } // int32 funccolcount = 2 [json_name = "funccolcount"]; if (this->funccolcount() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_funccolcount(), target); } // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; for (unsigned int i = 0, n = static_cast(this->_internal_funccolnames_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_funccolnames(i), target, stream); } // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; for (unsigned int i = 0, n = static_cast(this->_internal_funccoltypes_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_funccoltypes(i), target, stream); } // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; for (unsigned int i = 0, n = static_cast(this->_internal_funccoltypmods_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_funccoltypmods(i), target, stream); } // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; for (unsigned int i = 0, n = static_cast(this->_internal_funccolcollations_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_funccolcollations(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RangeTblFunction) return target; } size_t RangeTblFunction::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RangeTblFunction) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; total_size += 1UL * this->_internal_funccolnames_size(); for (const auto& msg : this->funccolnames_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; total_size += 1UL * this->_internal_funccoltypes_size(); for (const auto& msg : this->funccoltypes_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; total_size += 1UL * this->_internal_funccoltypmods_size(); for (const auto& msg : this->funccoltypmods_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; total_size += 1UL * this->_internal_funccolcollations_size(); for (const auto& msg : this->funccolcollations_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; if (this->has_funcexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *funcexpr_); } // int32 funccolcount = 2 [json_name = "funccolcount"]; if (this->funccolcount() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_funccolcount()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RangeTblFunction::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RangeTblFunction) GOOGLE_DCHECK_NE(&from, this); const RangeTblFunction* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RangeTblFunction) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RangeTblFunction) MergeFrom(*source); } } void RangeTblFunction::MergeFrom(const RangeTblFunction& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RangeTblFunction) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; funccolnames_.MergeFrom(from.funccolnames_); funccoltypes_.MergeFrom(from.funccoltypes_); funccoltypmods_.MergeFrom(from.funccoltypmods_); funccolcollations_.MergeFrom(from.funccolcollations_); if (from.has_funcexpr()) { _internal_mutable_funcexpr()->::pg_query::Node::MergeFrom(from._internal_funcexpr()); } if (from.funccolcount() != 0) { _internal_set_funccolcount(from._internal_funccolcount()); } } void RangeTblFunction::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RangeTblFunction) if (&from == this) return; Clear(); MergeFrom(from); } void RangeTblFunction::CopyFrom(const RangeTblFunction& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RangeTblFunction) if (&from == this) return; Clear(); MergeFrom(from); } bool RangeTblFunction::IsInitialized() const { return true; } void RangeTblFunction::InternalSwap(RangeTblFunction* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); funccolnames_.InternalSwap(&other->funccolnames_); funccoltypes_.InternalSwap(&other->funccoltypes_); funccoltypmods_.InternalSwap(&other->funccoltypmods_); funccolcollations_.InternalSwap(&other->funccolcollations_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RangeTblFunction, funccolcount_) + sizeof(RangeTblFunction::funccolcount_) - PROTOBUF_FIELD_OFFSET(RangeTblFunction, funcexpr_)>( reinterpret_cast(&funcexpr_), reinterpret_cast(&other->funcexpr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RangeTblFunction::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class TableSampleClause::_Internal { public: static const ::pg_query::Node& repeatable(const TableSampleClause* msg); }; const ::pg_query::Node& TableSampleClause::_Internal::repeatable(const TableSampleClause* msg) { return *msg->repeatable_; } TableSampleClause::TableSampleClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TableSampleClause) } TableSampleClause::TableSampleClause(const TableSampleClause& from) : ::PROTOBUF_NAMESPACE_ID::Message(), args_(from.args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_repeatable()) { repeatable_ = new ::pg_query::Node(*from.repeatable_); } else { repeatable_ = nullptr; } tsmhandler_ = from.tsmhandler_; // @@protoc_insertion_point(copy_constructor:pg_query.TableSampleClause) } void TableSampleClause::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&repeatable_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&tsmhandler_) - reinterpret_cast(&repeatable_)) + sizeof(tsmhandler_)); } TableSampleClause::~TableSampleClause() { // @@protoc_insertion_point(destructor:pg_query.TableSampleClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void TableSampleClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete repeatable_; } void TableSampleClause::ArenaDtor(void* object) { TableSampleClause* _this = reinterpret_cast< TableSampleClause* >(object); (void)_this; } void TableSampleClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void TableSampleClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const TableSampleClause& TableSampleClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void TableSampleClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TableSampleClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; args_.Clear(); if (GetArena() == nullptr && repeatable_ != nullptr) { delete repeatable_; } repeatable_ = nullptr; tsmhandler_ = 0u; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* TableSampleClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { tsmhandler_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node args = 2 [json_name = "args"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_repeatable(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* TableSampleClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TableSampleClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; if (this->tsmhandler() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_tsmhandler(), target); } // repeated .pg_query.Node args = 2 [json_name = "args"]; for (unsigned int i = 0, n = static_cast(this->_internal_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_args(i), target, stream); } // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; if (this->has_repeatable()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::repeatable(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.TableSampleClause) return target; } size_t TableSampleClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.TableSampleClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node args = 2 [json_name = "args"]; total_size += 1UL * this->_internal_args_size(); for (const auto& msg : this->args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; if (this->has_repeatable()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *repeatable_); } // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; if (this->tsmhandler() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_tsmhandler()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void TableSampleClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.TableSampleClause) GOOGLE_DCHECK_NE(&from, this); const TableSampleClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.TableSampleClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.TableSampleClause) MergeFrom(*source); } } void TableSampleClause::MergeFrom(const TableSampleClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TableSampleClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; args_.MergeFrom(from.args_); if (from.has_repeatable()) { _internal_mutable_repeatable()->::pg_query::Node::MergeFrom(from._internal_repeatable()); } if (from.tsmhandler() != 0) { _internal_set_tsmhandler(from._internal_tsmhandler()); } } void TableSampleClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.TableSampleClause) if (&from == this) return; Clear(); MergeFrom(from); } void TableSampleClause::CopyFrom(const TableSampleClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TableSampleClause) if (&from == this) return; Clear(); MergeFrom(from); } bool TableSampleClause::IsInitialized() const { return true; } void TableSampleClause::InternalSwap(TableSampleClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); args_.InternalSwap(&other->args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(TableSampleClause, tsmhandler_) + sizeof(TableSampleClause::tsmhandler_) - PROTOBUF_FIELD_OFFSET(TableSampleClause, repeatable_)>( reinterpret_cast(&repeatable_), reinterpret_cast(&other->repeatable_)); } ::PROTOBUF_NAMESPACE_ID::Metadata TableSampleClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class WithCheckOption::_Internal { public: static const ::pg_query::Node& qual(const WithCheckOption* msg); }; const ::pg_query::Node& WithCheckOption::_Internal::qual(const WithCheckOption* msg) { return *msg->qual_; } WithCheckOption::WithCheckOption(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WithCheckOption) } WithCheckOption::WithCheckOption(const WithCheckOption& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); relname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_relname().empty()) { relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_relname(), GetArena()); } polname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_polname().empty()) { polname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_polname(), GetArena()); } if (from._internal_has_qual()) { qual_ = new ::pg_query::Node(*from.qual_); } else { qual_ = nullptr; } ::memcpy(&kind_, &from.kind_, static_cast(reinterpret_cast(&cascaded_) - reinterpret_cast(&kind_)) + sizeof(cascaded_)); // @@protoc_insertion_point(copy_constructor:pg_query.WithCheckOption) } void WithCheckOption::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); relname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); polname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&qual_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&cascaded_) - reinterpret_cast(&qual_)) + sizeof(cascaded_)); } WithCheckOption::~WithCheckOption() { // @@protoc_insertion_point(destructor:pg_query.WithCheckOption) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void WithCheckOption::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); relname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); polname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete qual_; } void WithCheckOption::ArenaDtor(void* object) { WithCheckOption* _this = reinterpret_cast< WithCheckOption* >(object); (void)_this; } void WithCheckOption::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void WithCheckOption::SetCachedSize(int size) const { _cached_size_.Set(size); } const WithCheckOption& WithCheckOption::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void WithCheckOption::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WithCheckOption) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; relname_.ClearToEmpty(); polname_.ClearToEmpty(); if (GetArena() == nullptr && qual_ != nullptr) { delete qual_; } qual_ = nullptr; ::memset(&kind_, 0, static_cast( reinterpret_cast(&cascaded_) - reinterpret_cast(&kind_)) + sizeof(cascaded_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* WithCheckOption::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.WCOKind kind = 1 [json_name = "kind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_kind(static_cast<::pg_query::WCOKind>(val)); } else goto handle_unusual; continue; // string relname = 2 [json_name = "relname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_relname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.WithCheckOption.relname")); CHK_(ptr); } else goto handle_unusual; continue; // string polname = 3 [json_name = "polname"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_polname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.WithCheckOption.polname")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node qual = 4 [json_name = "qual"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_qual(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool cascaded = 5 [json_name = "cascaded"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { cascaded_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* WithCheckOption::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WithCheckOption) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.WCOKind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // string relname = 2 [json_name = "relname"]; if (this->relname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_relname().data(), static_cast(this->_internal_relname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.WithCheckOption.relname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_relname(), target); } // string polname = 3 [json_name = "polname"]; if (this->polname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_polname().data(), static_cast(this->_internal_polname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.WithCheckOption.polname"); target = stream->WriteStringMaybeAliased( 3, this->_internal_polname(), target); } // .pg_query.Node qual = 4 [json_name = "qual"]; if (this->has_qual()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::qual(this), target, stream); } // bool cascaded = 5 [json_name = "cascaded"]; if (this->cascaded() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_cascaded(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.WithCheckOption) return target; } size_t WithCheckOption::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.WithCheckOption) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string relname = 2 [json_name = "relname"]; if (this->relname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_relname()); } // string polname = 3 [json_name = "polname"]; if (this->polname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_polname()); } // .pg_query.Node qual = 4 [json_name = "qual"]; if (this->has_qual()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *qual_); } // .pg_query.WCOKind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind()); } // bool cascaded = 5 [json_name = "cascaded"]; if (this->cascaded() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void WithCheckOption::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.WithCheckOption) GOOGLE_DCHECK_NE(&from, this); const WithCheckOption* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.WithCheckOption) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.WithCheckOption) MergeFrom(*source); } } void WithCheckOption::MergeFrom(const WithCheckOption& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WithCheckOption) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.relname().size() > 0) { _internal_set_relname(from._internal_relname()); } if (from.polname().size() > 0) { _internal_set_polname(from._internal_polname()); } if (from.has_qual()) { _internal_mutable_qual()->::pg_query::Node::MergeFrom(from._internal_qual()); } if (from.kind() != 0) { _internal_set_kind(from._internal_kind()); } if (from.cascaded() != 0) { _internal_set_cascaded(from._internal_cascaded()); } } void WithCheckOption::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.WithCheckOption) if (&from == this) return; Clear(); MergeFrom(from); } void WithCheckOption::CopyFrom(const WithCheckOption& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WithCheckOption) if (&from == this) return; Clear(); MergeFrom(from); } bool WithCheckOption::IsInitialized() const { return true; } void WithCheckOption::InternalSwap(WithCheckOption* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); relname_.Swap(&other->relname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); polname_.Swap(&other->polname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(WithCheckOption, cascaded_) + sizeof(WithCheckOption::cascaded_) - PROTOBUF_FIELD_OFFSET(WithCheckOption, qual_)>( reinterpret_cast(&qual_), reinterpret_cast(&other->qual_)); } ::PROTOBUF_NAMESPACE_ID::Metadata WithCheckOption::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class SortGroupClause::_Internal { public: }; SortGroupClause::SortGroupClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.SortGroupClause) } SortGroupClause::SortGroupClause(const SortGroupClause& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&tle_sort_group_ref_, &from.tle_sort_group_ref_, static_cast(reinterpret_cast(&hashable_) - reinterpret_cast(&tle_sort_group_ref_)) + sizeof(hashable_)); // @@protoc_insertion_point(copy_constructor:pg_query.SortGroupClause) } void SortGroupClause::SharedCtor() { ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&tle_sort_group_ref_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&hashable_) - reinterpret_cast(&tle_sort_group_ref_)) + sizeof(hashable_)); } SortGroupClause::~SortGroupClause() { // @@protoc_insertion_point(destructor:pg_query.SortGroupClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void SortGroupClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void SortGroupClause::ArenaDtor(void* object) { SortGroupClause* _this = reinterpret_cast< SortGroupClause* >(object); (void)_this; } void SortGroupClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void SortGroupClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const SortGroupClause& SortGroupClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_SortGroupClause_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void SortGroupClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.SortGroupClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ::memset(&tle_sort_group_ref_, 0, static_cast( reinterpret_cast(&hashable_) - reinterpret_cast(&tle_sort_group_ref_)) + sizeof(hashable_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* SortGroupClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { tle_sort_group_ref_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 eqop = 2 [json_name = "eqop"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { eqop_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 sortop = 3 [json_name = "sortop"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { sortop_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool nulls_first = 4 [json_name = "nulls_first"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { nulls_first_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool hashable = 5 [json_name = "hashable"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { hashable_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* SortGroupClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.SortGroupClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; if (this->tle_sort_group_ref() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_tle_sort_group_ref(), target); } // uint32 eqop = 2 [json_name = "eqop"]; if (this->eqop() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_eqop(), target); } // uint32 sortop = 3 [json_name = "sortop"]; if (this->sortop() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_sortop(), target); } // bool nulls_first = 4 [json_name = "nulls_first"]; if (this->nulls_first() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_nulls_first(), target); } // bool hashable = 5 [json_name = "hashable"]; if (this->hashable() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_hashable(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.SortGroupClause) return target; } size_t SortGroupClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.SortGroupClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; if (this->tle_sort_group_ref() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_tle_sort_group_ref()); } // uint32 eqop = 2 [json_name = "eqop"]; if (this->eqop() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_eqop()); } // uint32 sortop = 3 [json_name = "sortop"]; if (this->sortop() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_sortop()); } // bool nulls_first = 4 [json_name = "nulls_first"]; if (this->nulls_first() != 0) { total_size += 1 + 1; } // bool hashable = 5 [json_name = "hashable"]; if (this->hashable() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void SortGroupClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.SortGroupClause) GOOGLE_DCHECK_NE(&from, this); const SortGroupClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.SortGroupClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.SortGroupClause) MergeFrom(*source); } } void SortGroupClause::MergeFrom(const SortGroupClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.SortGroupClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.tle_sort_group_ref() != 0) { _internal_set_tle_sort_group_ref(from._internal_tle_sort_group_ref()); } if (from.eqop() != 0) { _internal_set_eqop(from._internal_eqop()); } if (from.sortop() != 0) { _internal_set_sortop(from._internal_sortop()); } if (from.nulls_first() != 0) { _internal_set_nulls_first(from._internal_nulls_first()); } if (from.hashable() != 0) { _internal_set_hashable(from._internal_hashable()); } } void SortGroupClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.SortGroupClause) if (&from == this) return; Clear(); MergeFrom(from); } void SortGroupClause::CopyFrom(const SortGroupClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.SortGroupClause) if (&from == this) return; Clear(); MergeFrom(from); } bool SortGroupClause::IsInitialized() const { return true; } void SortGroupClause::InternalSwap(SortGroupClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(SortGroupClause, hashable_) + sizeof(SortGroupClause::hashable_) - PROTOBUF_FIELD_OFFSET(SortGroupClause, tle_sort_group_ref_)>( reinterpret_cast(&tle_sort_group_ref_), reinterpret_cast(&other->tle_sort_group_ref_)); } ::PROTOBUF_NAMESPACE_ID::Metadata SortGroupClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class GroupingSet::_Internal { public: }; GroupingSet::GroupingSet(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), content_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.GroupingSet) } GroupingSet::GroupingSet(const GroupingSet& from) : ::PROTOBUF_NAMESPACE_ID::Message(), content_(from.content_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&kind_, &from.kind_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&kind_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.GroupingSet) } void GroupingSet::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&kind_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&kind_)) + sizeof(location_)); } GroupingSet::~GroupingSet() { // @@protoc_insertion_point(destructor:pg_query.GroupingSet) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void GroupingSet::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void GroupingSet::ArenaDtor(void* object) { GroupingSet* _this = reinterpret_cast< GroupingSet* >(object); (void)_this; } void GroupingSet::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void GroupingSet::SetCachedSize(int size) const { _cached_size_.Set(size); } const GroupingSet& GroupingSet::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void GroupingSet::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.GroupingSet) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; content_.Clear(); ::memset(&kind_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&kind_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* GroupingSet::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_kind(static_cast<::pg_query::GroupingSetKind>(val)); } else goto handle_unusual; continue; // repeated .pg_query.Node content = 2 [json_name = "content"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_content(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // int32 location = 3 [json_name = "location"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* GroupingSet::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.GroupingSet) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // repeated .pg_query.Node content = 2 [json_name = "content"]; for (unsigned int i = 0, n = static_cast(this->_internal_content_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_content(i), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.GroupingSet) return target; } size_t GroupingSet::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.GroupingSet) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node content = 2 [json_name = "content"]; total_size += 1UL * this->_internal_content_size(); for (const auto& msg : this->content_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind()); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void GroupingSet::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.GroupingSet) GOOGLE_DCHECK_NE(&from, this); const GroupingSet* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.GroupingSet) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.GroupingSet) MergeFrom(*source); } } void GroupingSet::MergeFrom(const GroupingSet& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.GroupingSet) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; content_.MergeFrom(from.content_); if (from.kind() != 0) { _internal_set_kind(from._internal_kind()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void GroupingSet::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.GroupingSet) if (&from == this) return; Clear(); MergeFrom(from); } void GroupingSet::CopyFrom(const GroupingSet& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.GroupingSet) if (&from == this) return; Clear(); MergeFrom(from); } bool GroupingSet::IsInitialized() const { return true; } void GroupingSet::InternalSwap(GroupingSet* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); content_.InternalSwap(&other->content_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(GroupingSet, location_) + sizeof(GroupingSet::location_) - PROTOBUF_FIELD_OFFSET(GroupingSet, kind_)>( reinterpret_cast(&kind_), reinterpret_cast(&other->kind_)); } ::PROTOBUF_NAMESPACE_ID::Metadata GroupingSet::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class WindowClause::_Internal { public: static const ::pg_query::Node& start_offset(const WindowClause* msg); static const ::pg_query::Node& end_offset(const WindowClause* msg); }; const ::pg_query::Node& WindowClause::_Internal::start_offset(const WindowClause* msg) { return *msg->start_offset_; } const ::pg_query::Node& WindowClause::_Internal::end_offset(const WindowClause* msg) { return *msg->end_offset_; } WindowClause::WindowClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), partition_clause_(arena), order_clause_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WindowClause) } WindowClause::WindowClause(const WindowClause& from) : ::PROTOBUF_NAMESPACE_ID::Message(), partition_clause_(from.partition_clause_), order_clause_(from.order_clause_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } refname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_refname().empty()) { refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_refname(), GetArena()); } if (from._internal_has_start_offset()) { start_offset_ = new ::pg_query::Node(*from.start_offset_); } else { start_offset_ = nullptr; } if (from._internal_has_end_offset()) { end_offset_ = new ::pg_query::Node(*from.end_offset_); } else { end_offset_ = nullptr; } ::memcpy(&frame_options_, &from.frame_options_, static_cast(reinterpret_cast(&winref_) - reinterpret_cast(&frame_options_)) + sizeof(winref_)); // @@protoc_insertion_point(copy_constructor:pg_query.WindowClause) } void WindowClause::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); refname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&start_offset_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&winref_) - reinterpret_cast(&start_offset_)) + sizeof(winref_)); } WindowClause::~WindowClause() { // @@protoc_insertion_point(destructor:pg_query.WindowClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void WindowClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); refname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete start_offset_; if (this != internal_default_instance()) delete end_offset_; } void WindowClause::ArenaDtor(void* object) { WindowClause* _this = reinterpret_cast< WindowClause* >(object); (void)_this; } void WindowClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void WindowClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const WindowClause& WindowClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void WindowClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WindowClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; partition_clause_.Clear(); order_clause_.Clear(); name_.ClearToEmpty(); refname_.ClearToEmpty(); if (GetArena() == nullptr && start_offset_ != nullptr) { delete start_offset_; } start_offset_ = nullptr; if (GetArena() == nullptr && end_offset_ != nullptr) { delete end_offset_; } end_offset_ = nullptr; ::memset(&frame_options_, 0, static_cast( reinterpret_cast(&winref_) - reinterpret_cast(&frame_options_)) + sizeof(winref_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* WindowClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.WindowClause.name")); CHK_(ptr); } else goto handle_unusual; continue; // string refname = 2 [json_name = "refname"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_refname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.WindowClause.refname")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_partition_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_order_clause(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // int32 frame_options = 5 [json_name = "frameOptions"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { frame_options_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_start_offset(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr = ctx->ParseMessage(_internal_mutable_end_offset(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { start_in_range_func_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) { end_in_range_func_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { in_range_coll_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool in_range_asc = 11 [json_name = "inRangeAsc"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) { in_range_asc_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; case 12: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 96)) { in_range_nulls_first_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 winref = 13 [json_name = "winref"]; case 13: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 104)) { winref_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool copied_order = 14 [json_name = "copiedOrder"]; case 14: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 112)) { copied_order_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* WindowClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WindowClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.WindowClause.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } // string refname = 2 [json_name = "refname"]; if (this->refname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_refname().data(), static_cast(this->_internal_refname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.WindowClause.refname"); target = stream->WriteStringMaybeAliased( 2, this->_internal_refname(), target); } // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_partition_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_partition_clause(i), target, stream); } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; for (unsigned int i = 0, n = static_cast(this->_internal_order_clause_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_order_clause(i), target, stream); } // int32 frame_options = 5 [json_name = "frameOptions"]; if (this->frame_options() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_frame_options(), target); } // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; if (this->has_start_offset()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::start_offset(this), target, stream); } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; if (this->has_end_offset()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 7, _Internal::end_offset(this), target, stream); } // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; if (this->start_in_range_func() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(8, this->_internal_start_in_range_func(), target); } // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; if (this->end_in_range_func() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(9, this->_internal_end_in_range_func(), target); } // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; if (this->in_range_coll() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(10, this->_internal_in_range_coll(), target); } // bool in_range_asc = 11 [json_name = "inRangeAsc"]; if (this->in_range_asc() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(11, this->_internal_in_range_asc(), target); } // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; if (this->in_range_nulls_first() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(12, this->_internal_in_range_nulls_first(), target); } // uint32 winref = 13 [json_name = "winref"]; if (this->winref() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(13, this->_internal_winref(), target); } // bool copied_order = 14 [json_name = "copiedOrder"]; if (this->copied_order() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(14, this->_internal_copied_order(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.WindowClause) return target; } size_t WindowClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.WindowClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; total_size += 1UL * this->_internal_partition_clause_size(); for (const auto& msg : this->partition_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; total_size += 1UL * this->_internal_order_clause_size(); for (const auto& msg : this->order_clause_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // string refname = 2 [json_name = "refname"]; if (this->refname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_refname()); } // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; if (this->has_start_offset()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *start_offset_); } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; if (this->has_end_offset()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *end_offset_); } // int32 frame_options = 5 [json_name = "frameOptions"]; if (this->frame_options() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_frame_options()); } // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; if (this->start_in_range_func() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_start_in_range_func()); } // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; if (this->end_in_range_func() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_end_in_range_func()); } // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; if (this->in_range_coll() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_in_range_coll()); } // bool in_range_asc = 11 [json_name = "inRangeAsc"]; if (this->in_range_asc() != 0) { total_size += 1 + 1; } // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; if (this->in_range_nulls_first() != 0) { total_size += 1 + 1; } // bool copied_order = 14 [json_name = "copiedOrder"]; if (this->copied_order() != 0) { total_size += 1 + 1; } // uint32 winref = 13 [json_name = "winref"]; if (this->winref() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_winref()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void WindowClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.WindowClause) GOOGLE_DCHECK_NE(&from, this); const WindowClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.WindowClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.WindowClause) MergeFrom(*source); } } void WindowClause::MergeFrom(const WindowClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WindowClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; partition_clause_.MergeFrom(from.partition_clause_); order_clause_.MergeFrom(from.order_clause_); if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.refname().size() > 0) { _internal_set_refname(from._internal_refname()); } if (from.has_start_offset()) { _internal_mutable_start_offset()->::pg_query::Node::MergeFrom(from._internal_start_offset()); } if (from.has_end_offset()) { _internal_mutable_end_offset()->::pg_query::Node::MergeFrom(from._internal_end_offset()); } if (from.frame_options() != 0) { _internal_set_frame_options(from._internal_frame_options()); } if (from.start_in_range_func() != 0) { _internal_set_start_in_range_func(from._internal_start_in_range_func()); } if (from.end_in_range_func() != 0) { _internal_set_end_in_range_func(from._internal_end_in_range_func()); } if (from.in_range_coll() != 0) { _internal_set_in_range_coll(from._internal_in_range_coll()); } if (from.in_range_asc() != 0) { _internal_set_in_range_asc(from._internal_in_range_asc()); } if (from.in_range_nulls_first() != 0) { _internal_set_in_range_nulls_first(from._internal_in_range_nulls_first()); } if (from.copied_order() != 0) { _internal_set_copied_order(from._internal_copied_order()); } if (from.winref() != 0) { _internal_set_winref(from._internal_winref()); } } void WindowClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.WindowClause) if (&from == this) return; Clear(); MergeFrom(from); } void WindowClause::CopyFrom(const WindowClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WindowClause) if (&from == this) return; Clear(); MergeFrom(from); } bool WindowClause::IsInitialized() const { return true; } void WindowClause::InternalSwap(WindowClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); partition_clause_.InternalSwap(&other->partition_clause_); order_clause_.InternalSwap(&other->order_clause_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); refname_.Swap(&other->refname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(WindowClause, winref_) + sizeof(WindowClause::winref_) - PROTOBUF_FIELD_OFFSET(WindowClause, start_offset_)>( reinterpret_cast(&start_offset_), reinterpret_cast(&other->start_offset_)); } ::PROTOBUF_NAMESPACE_ID::Metadata WindowClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ObjectWithArgs::_Internal { public: }; ObjectWithArgs::ObjectWithArgs(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), objname_(arena), objargs_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ObjectWithArgs) } ObjectWithArgs::ObjectWithArgs(const ObjectWithArgs& from) : ::PROTOBUF_NAMESPACE_ID::Message(), objname_(from.objname_), objargs_(from.objargs_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); args_unspecified_ = from.args_unspecified_; // @@protoc_insertion_point(copy_constructor:pg_query.ObjectWithArgs) } void ObjectWithArgs::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); args_unspecified_ = false; } ObjectWithArgs::~ObjectWithArgs() { // @@protoc_insertion_point(destructor:pg_query.ObjectWithArgs) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ObjectWithArgs::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void ObjectWithArgs::ArenaDtor(void* object) { ObjectWithArgs* _this = reinterpret_cast< ObjectWithArgs* >(object); (void)_this; } void ObjectWithArgs::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ObjectWithArgs::SetCachedSize(int size) const { _cached_size_.Set(size); } const ObjectWithArgs& ObjectWithArgs::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ObjectWithArgs::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ObjectWithArgs) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; objname_.Clear(); objargs_.Clear(); args_unspecified_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ObjectWithArgs::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node objname = 1 [json_name = "objname"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_objname(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_objargs(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // bool args_unspecified = 3 [json_name = "args_unspecified"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { args_unspecified_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ObjectWithArgs::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ObjectWithArgs) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node objname = 1 [json_name = "objname"]; for (unsigned int i = 0, n = static_cast(this->_internal_objname_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_objname(i), target, stream); } // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; for (unsigned int i = 0, n = static_cast(this->_internal_objargs_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_objargs(i), target, stream); } // bool args_unspecified = 3 [json_name = "args_unspecified"]; if (this->args_unspecified() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_args_unspecified(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ObjectWithArgs) return target; } size_t ObjectWithArgs::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ObjectWithArgs) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node objname = 1 [json_name = "objname"]; total_size += 1UL * this->_internal_objname_size(); for (const auto& msg : this->objname_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; total_size += 1UL * this->_internal_objargs_size(); for (const auto& msg : this->objargs_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // bool args_unspecified = 3 [json_name = "args_unspecified"]; if (this->args_unspecified() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ObjectWithArgs::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ObjectWithArgs) GOOGLE_DCHECK_NE(&from, this); const ObjectWithArgs* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ObjectWithArgs) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ObjectWithArgs) MergeFrom(*source); } } void ObjectWithArgs::MergeFrom(const ObjectWithArgs& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ObjectWithArgs) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; objname_.MergeFrom(from.objname_); objargs_.MergeFrom(from.objargs_); if (from.args_unspecified() != 0) { _internal_set_args_unspecified(from._internal_args_unspecified()); } } void ObjectWithArgs::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ObjectWithArgs) if (&from == this) return; Clear(); MergeFrom(from); } void ObjectWithArgs::CopyFrom(const ObjectWithArgs& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ObjectWithArgs) if (&from == this) return; Clear(); MergeFrom(from); } bool ObjectWithArgs::IsInitialized() const { return true; } void ObjectWithArgs::InternalSwap(ObjectWithArgs* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); objname_.InternalSwap(&other->objname_); objargs_.InternalSwap(&other->objargs_); swap(args_unspecified_, other->args_unspecified_); } ::PROTOBUF_NAMESPACE_ID::Metadata ObjectWithArgs::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class AccessPriv::_Internal { public: }; AccessPriv::AccessPriv(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), cols_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.AccessPriv) } AccessPriv::AccessPriv(const AccessPriv& from) : ::PROTOBUF_NAMESPACE_ID::Message(), cols_(from.cols_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); priv_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_priv_name().empty()) { priv_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_priv_name(), GetArena()); } // @@protoc_insertion_point(copy_constructor:pg_query.AccessPriv) } void AccessPriv::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); priv_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } AccessPriv::~AccessPriv() { // @@protoc_insertion_point(destructor:pg_query.AccessPriv) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void AccessPriv::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); priv_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void AccessPriv::ArenaDtor(void* object) { AccessPriv* _this = reinterpret_cast< AccessPriv* >(object); (void)_this; } void AccessPriv::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void AccessPriv::SetCachedSize(int size) const { _cached_size_.Set(size); } const AccessPriv& AccessPriv::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void AccessPriv::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.AccessPriv) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; cols_.Clear(); priv_name_.ClearToEmpty(); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* AccessPriv::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string priv_name = 1 [json_name = "priv_name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_priv_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.AccessPriv.priv_name")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node cols = 2 [json_name = "cols"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_cols(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* AccessPriv::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.AccessPriv) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string priv_name = 1 [json_name = "priv_name"]; if (this->priv_name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_priv_name().data(), static_cast(this->_internal_priv_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.AccessPriv.priv_name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_priv_name(), target); } // repeated .pg_query.Node cols = 2 [json_name = "cols"]; for (unsigned int i = 0, n = static_cast(this->_internal_cols_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_cols(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.AccessPriv) return target; } size_t AccessPriv::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.AccessPriv) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node cols = 2 [json_name = "cols"]; total_size += 1UL * this->_internal_cols_size(); for (const auto& msg : this->cols_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string priv_name = 1 [json_name = "priv_name"]; if (this->priv_name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_priv_name()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void AccessPriv::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.AccessPriv) GOOGLE_DCHECK_NE(&from, this); const AccessPriv* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.AccessPriv) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.AccessPriv) MergeFrom(*source); } } void AccessPriv::MergeFrom(const AccessPriv& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.AccessPriv) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; cols_.MergeFrom(from.cols_); if (from.priv_name().size() > 0) { _internal_set_priv_name(from._internal_priv_name()); } } void AccessPriv::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.AccessPriv) if (&from == this) return; Clear(); MergeFrom(from); } void AccessPriv::CopyFrom(const AccessPriv& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.AccessPriv) if (&from == this) return; Clear(); MergeFrom(from); } bool AccessPriv::IsInitialized() const { return true; } void AccessPriv::InternalSwap(AccessPriv* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); cols_.InternalSwap(&other->cols_); priv_name_.Swap(&other->priv_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } ::PROTOBUF_NAMESPACE_ID::Metadata AccessPriv::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CreateOpClassItem::_Internal { public: static const ::pg_query::ObjectWithArgs& name(const CreateOpClassItem* msg); static const ::pg_query::TypeName& storedtype(const CreateOpClassItem* msg); }; const ::pg_query::ObjectWithArgs& CreateOpClassItem::_Internal::name(const CreateOpClassItem* msg) { return *msg->name_; } const ::pg_query::TypeName& CreateOpClassItem::_Internal::storedtype(const CreateOpClassItem* msg) { return *msg->storedtype_; } CreateOpClassItem::CreateOpClassItem(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), order_family_(arena), class_args_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CreateOpClassItem) } CreateOpClassItem::CreateOpClassItem(const CreateOpClassItem& from) : ::PROTOBUF_NAMESPACE_ID::Message(), order_family_(from.order_family_), class_args_(from.class_args_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_name()) { name_ = new ::pg_query::ObjectWithArgs(*from.name_); } else { name_ = nullptr; } if (from._internal_has_storedtype()) { storedtype_ = new ::pg_query::TypeName(*from.storedtype_); } else { storedtype_ = nullptr; } ::memcpy(&itemtype_, &from.itemtype_, static_cast(reinterpret_cast(&number_) - reinterpret_cast(&itemtype_)) + sizeof(number_)); // @@protoc_insertion_point(copy_constructor:pg_query.CreateOpClassItem) } void CreateOpClassItem::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&name_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&number_) - reinterpret_cast(&name_)) + sizeof(number_)); } CreateOpClassItem::~CreateOpClassItem() { // @@protoc_insertion_point(destructor:pg_query.CreateOpClassItem) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CreateOpClassItem::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete name_; if (this != internal_default_instance()) delete storedtype_; } void CreateOpClassItem::ArenaDtor(void* object) { CreateOpClassItem* _this = reinterpret_cast< CreateOpClassItem* >(object); (void)_this; } void CreateOpClassItem::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CreateOpClassItem::SetCachedSize(int size) const { _cached_size_.Set(size); } const CreateOpClassItem& CreateOpClassItem::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CreateOpClassItem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CreateOpClassItem) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; order_family_.Clear(); class_args_.Clear(); if (GetArena() == nullptr && name_ != nullptr) { delete name_; } name_ = nullptr; if (GetArena() == nullptr && storedtype_ != nullptr) { delete storedtype_; } storedtype_ = nullptr; ::memset(&itemtype_, 0, static_cast( reinterpret_cast(&number_) - reinterpret_cast(&itemtype_)) + sizeof(number_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CreateOpClassItem::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // int32 itemtype = 1 [json_name = "itemtype"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { itemtype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_name(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 number = 3 [json_name = "number"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { number_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_order_family(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_class_args(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr = ctx->ParseMessage(_internal_mutable_storedtype(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CreateOpClassItem::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CreateOpClassItem) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // int32 itemtype = 1 [json_name = "itemtype"]; if (this->itemtype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_itemtype(), target); } // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; if (this->has_name()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::name(this), target, stream); } // int32 number = 3 [json_name = "number"]; if (this->number() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_number(), target); } // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; for (unsigned int i = 0, n = static_cast(this->_internal_order_family_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_order_family(i), target, stream); } // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; for (unsigned int i = 0, n = static_cast(this->_internal_class_args_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_class_args(i), target, stream); } // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; if (this->has_storedtype()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 6, _Internal::storedtype(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CreateOpClassItem) return target; } size_t CreateOpClassItem::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CreateOpClassItem) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; total_size += 1UL * this->_internal_order_family_size(); for (const auto& msg : this->order_family_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; total_size += 1UL * this->_internal_class_args_size(); for (const auto& msg : this->class_args_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; if (this->has_name()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *name_); } // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; if (this->has_storedtype()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *storedtype_); } // int32 itemtype = 1 [json_name = "itemtype"]; if (this->itemtype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_itemtype()); } // int32 number = 3 [json_name = "number"]; if (this->number() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_number()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CreateOpClassItem::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CreateOpClassItem) GOOGLE_DCHECK_NE(&from, this); const CreateOpClassItem* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CreateOpClassItem) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CreateOpClassItem) MergeFrom(*source); } } void CreateOpClassItem::MergeFrom(const CreateOpClassItem& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CreateOpClassItem) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; order_family_.MergeFrom(from.order_family_); class_args_.MergeFrom(from.class_args_); if (from.has_name()) { _internal_mutable_name()->::pg_query::ObjectWithArgs::MergeFrom(from._internal_name()); } if (from.has_storedtype()) { _internal_mutable_storedtype()->::pg_query::TypeName::MergeFrom(from._internal_storedtype()); } if (from.itemtype() != 0) { _internal_set_itemtype(from._internal_itemtype()); } if (from.number() != 0) { _internal_set_number(from._internal_number()); } } void CreateOpClassItem::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CreateOpClassItem) if (&from == this) return; Clear(); MergeFrom(from); } void CreateOpClassItem::CopyFrom(const CreateOpClassItem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CreateOpClassItem) if (&from == this) return; Clear(); MergeFrom(from); } bool CreateOpClassItem::IsInitialized() const { return true; } void CreateOpClassItem::InternalSwap(CreateOpClassItem* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); order_family_.InternalSwap(&other->order_family_); class_args_.InternalSwap(&other->class_args_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CreateOpClassItem, number_) + sizeof(CreateOpClassItem::number_) - PROTOBUF_FIELD_OFFSET(CreateOpClassItem, name_)>( reinterpret_cast(&name_), reinterpret_cast(&other->name_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CreateOpClassItem::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class TableLikeClause::_Internal { public: static const ::pg_query::RangeVar& relation(const TableLikeClause* msg); }; const ::pg_query::RangeVar& TableLikeClause::_Internal::relation(const TableLikeClause* msg) { return *msg->relation_; } TableLikeClause::TableLikeClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TableLikeClause) } TableLikeClause::TableLikeClause(const TableLikeClause& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } options_ = from.options_; // @@protoc_insertion_point(copy_constructor:pg_query.TableLikeClause) } void TableLikeClause::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&options_) - reinterpret_cast(&relation_)) + sizeof(options_)); } TableLikeClause::~TableLikeClause() { // @@protoc_insertion_point(destructor:pg_query.TableLikeClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void TableLikeClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete relation_; } void TableLikeClause::ArenaDtor(void* object) { TableLikeClause* _this = reinterpret_cast< TableLikeClause* >(object); (void)_this; } void TableLikeClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void TableLikeClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const TableLikeClause& TableLikeClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void TableLikeClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TableLikeClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; options_ = 0u; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* TableLikeClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 options = 2 [json_name = "options"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { options_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* TableLikeClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TableLikeClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // uint32 options = 2 [json_name = "options"]; if (this->options() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_options(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.TableLikeClause) return target; } size_t TableLikeClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.TableLikeClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // uint32 options = 2 [json_name = "options"]; if (this->options() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_options()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void TableLikeClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.TableLikeClause) GOOGLE_DCHECK_NE(&from, this); const TableLikeClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.TableLikeClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.TableLikeClause) MergeFrom(*source); } } void TableLikeClause::MergeFrom(const TableLikeClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TableLikeClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.options() != 0) { _internal_set_options(from._internal_options()); } } void TableLikeClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.TableLikeClause) if (&from == this) return; Clear(); MergeFrom(from); } void TableLikeClause::CopyFrom(const TableLikeClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TableLikeClause) if (&from == this) return; Clear(); MergeFrom(from); } bool TableLikeClause::IsInitialized() const { return true; } void TableLikeClause::InternalSwap(TableLikeClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(TableLikeClause, options_) + sizeof(TableLikeClause::options_) - PROTOBUF_FIELD_OFFSET(TableLikeClause, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata TableLikeClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class FunctionParameter::_Internal { public: static const ::pg_query::TypeName& arg_type(const FunctionParameter* msg); static const ::pg_query::Node& defexpr(const FunctionParameter* msg); }; const ::pg_query::TypeName& FunctionParameter::_Internal::arg_type(const FunctionParameter* msg) { return *msg->arg_type_; } const ::pg_query::Node& FunctionParameter::_Internal::defexpr(const FunctionParameter* msg) { return *msg->defexpr_; } FunctionParameter::FunctionParameter(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.FunctionParameter) } FunctionParameter::FunctionParameter(const FunctionParameter& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } if (from._internal_has_arg_type()) { arg_type_ = new ::pg_query::TypeName(*from.arg_type_); } else { arg_type_ = nullptr; } if (from._internal_has_defexpr()) { defexpr_ = new ::pg_query::Node(*from.defexpr_); } else { defexpr_ = nullptr; } mode_ = from.mode_; // @@protoc_insertion_point(copy_constructor:pg_query.FunctionParameter) } void FunctionParameter::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&arg_type_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&mode_) - reinterpret_cast(&arg_type_)) + sizeof(mode_)); } FunctionParameter::~FunctionParameter() { // @@protoc_insertion_point(destructor:pg_query.FunctionParameter) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void FunctionParameter::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete arg_type_; if (this != internal_default_instance()) delete defexpr_; } void FunctionParameter::ArenaDtor(void* object) { FunctionParameter* _this = reinterpret_cast< FunctionParameter* >(object); (void)_this; } void FunctionParameter::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void FunctionParameter::SetCachedSize(int size) const { _cached_size_.Set(size); } const FunctionParameter& FunctionParameter::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void FunctionParameter::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.FunctionParameter) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; name_.ClearToEmpty(); if (GetArena() == nullptr && arg_type_ != nullptr) { delete arg_type_; } arg_type_ = nullptr; if (GetArena() == nullptr && defexpr_ != nullptr) { delete defexpr_; } defexpr_ = nullptr; mode_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* FunctionParameter::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.FunctionParameter.name")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_arg_type(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_mode(static_cast<::pg_query::FunctionParameterMode>(val)); } else goto handle_unusual; continue; // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_defexpr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* FunctionParameter::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.FunctionParameter) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.FunctionParameter.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; if (this->has_arg_type()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::arg_type(this), target, stream); } // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; if (this->mode() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_mode(), target); } // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; if (this->has_defexpr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::defexpr(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.FunctionParameter) return target; } size_t FunctionParameter::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.FunctionParameter) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; if (this->has_arg_type()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *arg_type_); } // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; if (this->has_defexpr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *defexpr_); } // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; if (this->mode() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_mode()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void FunctionParameter::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.FunctionParameter) GOOGLE_DCHECK_NE(&from, this); const FunctionParameter* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.FunctionParameter) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.FunctionParameter) MergeFrom(*source); } } void FunctionParameter::MergeFrom(const FunctionParameter& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.FunctionParameter) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.has_arg_type()) { _internal_mutable_arg_type()->::pg_query::TypeName::MergeFrom(from._internal_arg_type()); } if (from.has_defexpr()) { _internal_mutable_defexpr()->::pg_query::Node::MergeFrom(from._internal_defexpr()); } if (from.mode() != 0) { _internal_set_mode(from._internal_mode()); } } void FunctionParameter::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.FunctionParameter) if (&from == this) return; Clear(); MergeFrom(from); } void FunctionParameter::CopyFrom(const FunctionParameter& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.FunctionParameter) if (&from == this) return; Clear(); MergeFrom(from); } bool FunctionParameter::IsInitialized() const { return true; } void FunctionParameter::InternalSwap(FunctionParameter* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(FunctionParameter, mode_) + sizeof(FunctionParameter::mode_) - PROTOBUF_FIELD_OFFSET(FunctionParameter, arg_type_)>( reinterpret_cast(&arg_type_), reinterpret_cast(&other->arg_type_)); } ::PROTOBUF_NAMESPACE_ID::Metadata FunctionParameter::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class LockingClause::_Internal { public: }; LockingClause::LockingClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), locked_rels_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.LockingClause) } LockingClause::LockingClause(const LockingClause& from) : ::PROTOBUF_NAMESPACE_ID::Message(), locked_rels_(from.locked_rels_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&strength_, &from.strength_, static_cast(reinterpret_cast(&wait_policy_) - reinterpret_cast(&strength_)) + sizeof(wait_policy_)); // @@protoc_insertion_point(copy_constructor:pg_query.LockingClause) } void LockingClause::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&strength_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&wait_policy_) - reinterpret_cast(&strength_)) + sizeof(wait_policy_)); } LockingClause::~LockingClause() { // @@protoc_insertion_point(destructor:pg_query.LockingClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void LockingClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void LockingClause::ArenaDtor(void* object) { LockingClause* _this = reinterpret_cast< LockingClause* >(object); (void)_this; } void LockingClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void LockingClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const LockingClause& LockingClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void LockingClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.LockingClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; locked_rels_.Clear(); ::memset(&strength_, 0, static_cast( reinterpret_cast(&wait_policy_) - reinterpret_cast(&strength_)) + sizeof(wait_policy_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* LockingClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_locked_rels(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_strength(static_cast<::pg_query::LockClauseStrength>(val)); } else goto handle_unusual; continue; // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_wait_policy(static_cast<::pg_query::LockWaitPolicy>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* LockingClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.LockingClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; for (unsigned int i = 0, n = static_cast(this->_internal_locked_rels_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_locked_rels(i), target, stream); } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; if (this->strength() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_strength(), target); } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; if (this->wait_policy() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_wait_policy(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.LockingClause) return target; } size_t LockingClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.LockingClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; total_size += 1UL * this->_internal_locked_rels_size(); for (const auto& msg : this->locked_rels_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; if (this->strength() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_strength()); } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; if (this->wait_policy() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_wait_policy()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void LockingClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.LockingClause) GOOGLE_DCHECK_NE(&from, this); const LockingClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.LockingClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.LockingClause) MergeFrom(*source); } } void LockingClause::MergeFrom(const LockingClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.LockingClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; locked_rels_.MergeFrom(from.locked_rels_); if (from.strength() != 0) { _internal_set_strength(from._internal_strength()); } if (from.wait_policy() != 0) { _internal_set_wait_policy(from._internal_wait_policy()); } } void LockingClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.LockingClause) if (&from == this) return; Clear(); MergeFrom(from); } void LockingClause::CopyFrom(const LockingClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.LockingClause) if (&from == this) return; Clear(); MergeFrom(from); } bool LockingClause::IsInitialized() const { return true; } void LockingClause::InternalSwap(LockingClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); locked_rels_.InternalSwap(&other->locked_rels_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(LockingClause, wait_policy_) + sizeof(LockingClause::wait_policy_) - PROTOBUF_FIELD_OFFSET(LockingClause, strength_)>( reinterpret_cast(&strength_), reinterpret_cast(&other->strength_)); } ::PROTOBUF_NAMESPACE_ID::Metadata LockingClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RowMarkClause::_Internal { public: }; RowMarkClause::RowMarkClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RowMarkClause) } RowMarkClause::RowMarkClause(const RowMarkClause& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&rti_, &from.rti_, static_cast(reinterpret_cast(&pushed_down_) - reinterpret_cast(&rti_)) + sizeof(pushed_down_)); // @@protoc_insertion_point(copy_constructor:pg_query.RowMarkClause) } void RowMarkClause::SharedCtor() { ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&rti_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&pushed_down_) - reinterpret_cast(&rti_)) + sizeof(pushed_down_)); } RowMarkClause::~RowMarkClause() { // @@protoc_insertion_point(destructor:pg_query.RowMarkClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RowMarkClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void RowMarkClause::ArenaDtor(void* object) { RowMarkClause* _this = reinterpret_cast< RowMarkClause* >(object); (void)_this; } void RowMarkClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RowMarkClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const RowMarkClause& RowMarkClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_RowMarkClause_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RowMarkClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RowMarkClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ::memset(&rti_, 0, static_cast( reinterpret_cast(&pushed_down_) - reinterpret_cast(&rti_)) + sizeof(pushed_down_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RowMarkClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // uint32 rti = 1 [json_name = "rti"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { rti_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_strength(static_cast<::pg_query::LockClauseStrength>(val)); } else goto handle_unusual; continue; // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_wait_policy(static_cast<::pg_query::LockWaitPolicy>(val)); } else goto handle_unusual; continue; // bool pushed_down = 4 [json_name = "pushedDown"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { pushed_down_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RowMarkClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RowMarkClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // uint32 rti = 1 [json_name = "rti"]; if (this->rti() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_rti(), target); } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; if (this->strength() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 2, this->_internal_strength(), target); } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; if (this->wait_policy() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_wait_policy(), target); } // bool pushed_down = 4 [json_name = "pushedDown"]; if (this->pushed_down() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_pushed_down(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RowMarkClause) return target; } size_t RowMarkClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RowMarkClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // uint32 rti = 1 [json_name = "rti"]; if (this->rti() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_rti()); } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; if (this->strength() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_strength()); } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; if (this->wait_policy() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_wait_policy()); } // bool pushed_down = 4 [json_name = "pushedDown"]; if (this->pushed_down() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RowMarkClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RowMarkClause) GOOGLE_DCHECK_NE(&from, this); const RowMarkClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RowMarkClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RowMarkClause) MergeFrom(*source); } } void RowMarkClause::MergeFrom(const RowMarkClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RowMarkClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.rti() != 0) { _internal_set_rti(from._internal_rti()); } if (from.strength() != 0) { _internal_set_strength(from._internal_strength()); } if (from.wait_policy() != 0) { _internal_set_wait_policy(from._internal_wait_policy()); } if (from.pushed_down() != 0) { _internal_set_pushed_down(from._internal_pushed_down()); } } void RowMarkClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RowMarkClause) if (&from == this) return; Clear(); MergeFrom(from); } void RowMarkClause::CopyFrom(const RowMarkClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RowMarkClause) if (&from == this) return; Clear(); MergeFrom(from); } bool RowMarkClause::IsInitialized() const { return true; } void RowMarkClause::InternalSwap(RowMarkClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RowMarkClause, pushed_down_) + sizeof(RowMarkClause::pushed_down_) - PROTOBUF_FIELD_OFFSET(RowMarkClause, rti_)>( reinterpret_cast(&rti_), reinterpret_cast(&other->rti_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RowMarkClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class XmlSerialize::_Internal { public: static const ::pg_query::Node& expr(const XmlSerialize* msg); static const ::pg_query::TypeName& type_name(const XmlSerialize* msg); }; const ::pg_query::Node& XmlSerialize::_Internal::expr(const XmlSerialize* msg) { return *msg->expr_; } const ::pg_query::TypeName& XmlSerialize::_Internal::type_name(const XmlSerialize* msg) { return *msg->type_name_; } XmlSerialize::XmlSerialize(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.XmlSerialize) } XmlSerialize::XmlSerialize(const XmlSerialize& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_expr()) { expr_ = new ::pg_query::Node(*from.expr_); } else { expr_ = nullptr; } if (from._internal_has_type_name()) { type_name_ = new ::pg_query::TypeName(*from.type_name_); } else { type_name_ = nullptr; } ::memcpy(&xmloption_, &from.xmloption_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&xmloption_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.XmlSerialize) } void XmlSerialize::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&expr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&expr_)) + sizeof(location_)); } XmlSerialize::~XmlSerialize() { // @@protoc_insertion_point(destructor:pg_query.XmlSerialize) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void XmlSerialize::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete expr_; if (this != internal_default_instance()) delete type_name_; } void XmlSerialize::ArenaDtor(void* object) { XmlSerialize* _this = reinterpret_cast< XmlSerialize* >(object); (void)_this; } void XmlSerialize::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void XmlSerialize::SetCachedSize(int size) const { _cached_size_.Set(size); } const XmlSerialize& XmlSerialize::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void XmlSerialize::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.XmlSerialize) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; ::memset(&xmloption_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&xmloption_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* XmlSerialize::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_xmloption(static_cast<::pg_query::XmlOptionType>(val)); } else goto handle_unusual; continue; // .pg_query.Node expr = 2 [json_name = "expr"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr = ctx->ParseMessage(_internal_mutable_type_name(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 4 [json_name = "location"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* XmlSerialize::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.XmlSerialize) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; if (this->xmloption() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_xmloption(), target); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::expr(this), target, stream); } // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; if (this->has_type_name()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 3, _Internal::type_name(this), target, stream); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.XmlSerialize) return target; } size_t XmlSerialize::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.XmlSerialize) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *expr_); } // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; if (this->has_type_name()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *type_name_); } // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; if (this->xmloption() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_xmloption()); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void XmlSerialize::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.XmlSerialize) GOOGLE_DCHECK_NE(&from, this); const XmlSerialize* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.XmlSerialize) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.XmlSerialize) MergeFrom(*source); } } void XmlSerialize::MergeFrom(const XmlSerialize& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.XmlSerialize) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_expr()) { _internal_mutable_expr()->::pg_query::Node::MergeFrom(from._internal_expr()); } if (from.has_type_name()) { _internal_mutable_type_name()->::pg_query::TypeName::MergeFrom(from._internal_type_name()); } if (from.xmloption() != 0) { _internal_set_xmloption(from._internal_xmloption()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void XmlSerialize::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.XmlSerialize) if (&from == this) return; Clear(); MergeFrom(from); } void XmlSerialize::CopyFrom(const XmlSerialize& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.XmlSerialize) if (&from == this) return; Clear(); MergeFrom(from); } bool XmlSerialize::IsInitialized() const { return true; } void XmlSerialize::InternalSwap(XmlSerialize* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(XmlSerialize, location_) + sizeof(XmlSerialize::location_) - PROTOBUF_FIELD_OFFSET(XmlSerialize, expr_)>( reinterpret_cast(&expr_), reinterpret_cast(&other->expr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata XmlSerialize::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class WithClause::_Internal { public: }; WithClause::WithClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), ctes_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.WithClause) } WithClause::WithClause(const WithClause& from) : ::PROTOBUF_NAMESPACE_ID::Message(), ctes_(from.ctes_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&recursive_, &from.recursive_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&recursive_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.WithClause) } void WithClause::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&recursive_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&recursive_)) + sizeof(location_)); } WithClause::~WithClause() { // @@protoc_insertion_point(destructor:pg_query.WithClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void WithClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void WithClause::ArenaDtor(void* object) { WithClause* _this = reinterpret_cast< WithClause* >(object); (void)_this; } void WithClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void WithClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const WithClause& WithClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void WithClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.WithClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ctes_.Clear(); ::memset(&recursive_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&recursive_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* WithClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_ctes(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // bool recursive = 2 [json_name = "recursive"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { recursive_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 3 [json_name = "location"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* WithClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.WithClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; for (unsigned int i = 0, n = static_cast(this->_internal_ctes_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_ctes(i), target, stream); } // bool recursive = 2 [json_name = "recursive"]; if (this->recursive() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_recursive(), target); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.WithClause) return target; } size_t WithClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.WithClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; total_size += 1UL * this->_internal_ctes_size(); for (const auto& msg : this->ctes_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // bool recursive = 2 [json_name = "recursive"]; if (this->recursive() != 0) { total_size += 1 + 1; } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void WithClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.WithClause) GOOGLE_DCHECK_NE(&from, this); const WithClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.WithClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.WithClause) MergeFrom(*source); } } void WithClause::MergeFrom(const WithClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.WithClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; ctes_.MergeFrom(from.ctes_); if (from.recursive() != 0) { _internal_set_recursive(from._internal_recursive()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void WithClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.WithClause) if (&from == this) return; Clear(); MergeFrom(from); } void WithClause::CopyFrom(const WithClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.WithClause) if (&from == this) return; Clear(); MergeFrom(from); } bool WithClause::IsInitialized() const { return true; } void WithClause::InternalSwap(WithClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ctes_.InternalSwap(&other->ctes_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(WithClause, location_) + sizeof(WithClause::location_) - PROTOBUF_FIELD_OFFSET(WithClause, recursive_)>( reinterpret_cast(&recursive_), reinterpret_cast(&other->recursive_)); } ::PROTOBUF_NAMESPACE_ID::Metadata WithClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class InferClause::_Internal { public: static const ::pg_query::Node& where_clause(const InferClause* msg); }; const ::pg_query::Node& InferClause::_Internal::where_clause(const InferClause* msg) { return *msg->where_clause_; } InferClause::InferClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), index_elems_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.InferClause) } InferClause::InferClause(const InferClause& from) : ::PROTOBUF_NAMESPACE_ID::Message(), index_elems_(from.index_elems_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); conname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_conname().empty()) { conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_conname(), GetArena()); } if (from._internal_has_where_clause()) { where_clause_ = new ::pg_query::Node(*from.where_clause_); } else { where_clause_ = nullptr; } location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.InferClause) } void InferClause::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); conname_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&where_clause_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&where_clause_)) + sizeof(location_)); } InferClause::~InferClause() { // @@protoc_insertion_point(destructor:pg_query.InferClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void InferClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); conname_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete where_clause_; } void InferClause::ArenaDtor(void* object) { InferClause* _this = reinterpret_cast< InferClause* >(object); (void)_this; } void InferClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void InferClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const InferClause& InferClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void InferClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.InferClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; index_elems_.Clear(); conname_.ClearToEmpty(); if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* InferClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_index_elems(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_where_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // string conname = 3 [json_name = "conname"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { auto str = _internal_mutable_conname(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.InferClause.conname")); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 4 [json_name = "location"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* InferClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.InferClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; for (unsigned int i = 0, n = static_cast(this->_internal_index_elems_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(1, this->_internal_index_elems(i), target, stream); } // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; if (this->has_where_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::where_clause(this), target, stream); } // string conname = 3 [json_name = "conname"]; if (this->conname().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_conname().data(), static_cast(this->_internal_conname().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.InferClause.conname"); target = stream->WriteStringMaybeAliased( 3, this->_internal_conname(), target); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.InferClause) return target; } size_t InferClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.InferClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; total_size += 1UL * this->_internal_index_elems_size(); for (const auto& msg : this->index_elems_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string conname = 3 [json_name = "conname"]; if (this->conname().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_conname()); } // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; if (this->has_where_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *where_clause_); } // int32 location = 4 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void InferClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.InferClause) GOOGLE_DCHECK_NE(&from, this); const InferClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.InferClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.InferClause) MergeFrom(*source); } } void InferClause::MergeFrom(const InferClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.InferClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; index_elems_.MergeFrom(from.index_elems_); if (from.conname().size() > 0) { _internal_set_conname(from._internal_conname()); } if (from.has_where_clause()) { _internal_mutable_where_clause()->::pg_query::Node::MergeFrom(from._internal_where_clause()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void InferClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.InferClause) if (&from == this) return; Clear(); MergeFrom(from); } void InferClause::CopyFrom(const InferClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.InferClause) if (&from == this) return; Clear(); MergeFrom(from); } bool InferClause::IsInitialized() const { return true; } void InferClause::InternalSwap(InferClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); index_elems_.InternalSwap(&other->index_elems_); conname_.Swap(&other->conname_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(InferClause, location_) + sizeof(InferClause::location_) - PROTOBUF_FIELD_OFFSET(InferClause, where_clause_)>( reinterpret_cast(&where_clause_), reinterpret_cast(&other->where_clause_)); } ::PROTOBUF_NAMESPACE_ID::Metadata InferClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class OnConflictClause::_Internal { public: static const ::pg_query::InferClause& infer(const OnConflictClause* msg); static const ::pg_query::Node& where_clause(const OnConflictClause* msg); }; const ::pg_query::InferClause& OnConflictClause::_Internal::infer(const OnConflictClause* msg) { return *msg->infer_; } const ::pg_query::Node& OnConflictClause::_Internal::where_clause(const OnConflictClause* msg) { return *msg->where_clause_; } OnConflictClause::OnConflictClause(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), target_list_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.OnConflictClause) } OnConflictClause::OnConflictClause(const OnConflictClause& from) : ::PROTOBUF_NAMESPACE_ID::Message(), target_list_(from.target_list_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_infer()) { infer_ = new ::pg_query::InferClause(*from.infer_); } else { infer_ = nullptr; } if (from._internal_has_where_clause()) { where_clause_ = new ::pg_query::Node(*from.where_clause_); } else { where_clause_ = nullptr; } ::memcpy(&action_, &from.action_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&action_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.OnConflictClause) } void OnConflictClause::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&infer_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&infer_)) + sizeof(location_)); } OnConflictClause::~OnConflictClause() { // @@protoc_insertion_point(destructor:pg_query.OnConflictClause) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void OnConflictClause::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete infer_; if (this != internal_default_instance()) delete where_clause_; } void OnConflictClause::ArenaDtor(void* object) { OnConflictClause* _this = reinterpret_cast< OnConflictClause* >(object); (void)_this; } void OnConflictClause::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void OnConflictClause::SetCachedSize(int size) const { _cached_size_.Set(size); } const OnConflictClause& OnConflictClause::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void OnConflictClause::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.OnConflictClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; target_list_.Clear(); if (GetArena() == nullptr && infer_ != nullptr) { delete infer_; } infer_ = nullptr; if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; ::memset(&action_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&action_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* OnConflictClause::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.OnConflictAction action = 1 [json_name = "action"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_action(static_cast<::pg_query::OnConflictAction>(val)); } else goto handle_unusual; continue; // .pg_query.InferClause infer = 2 [json_name = "infer"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_infer(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_target_list(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_where_clause(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* OnConflictClause::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.OnConflictClause) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.OnConflictAction action = 1 [json_name = "action"]; if (this->action() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_action(), target); } // .pg_query.InferClause infer = 2 [json_name = "infer"]; if (this->has_infer()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::infer(this), target, stream); } // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; for (unsigned int i = 0, n = static_cast(this->_internal_target_list_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_target_list(i), target, stream); } // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; if (this->has_where_clause()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::where_clause(this), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.OnConflictClause) return target; } size_t OnConflictClause::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.OnConflictClause) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; total_size += 1UL * this->_internal_target_list_size(); for (const auto& msg : this->target_list_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.InferClause infer = 2 [json_name = "infer"]; if (this->has_infer()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *infer_); } // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; if (this->has_where_clause()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *where_clause_); } // .pg_query.OnConflictAction action = 1 [json_name = "action"]; if (this->action() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_action()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void OnConflictClause::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.OnConflictClause) GOOGLE_DCHECK_NE(&from, this); const OnConflictClause* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.OnConflictClause) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.OnConflictClause) MergeFrom(*source); } } void OnConflictClause::MergeFrom(const OnConflictClause& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.OnConflictClause) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; target_list_.MergeFrom(from.target_list_); if (from.has_infer()) { _internal_mutable_infer()->::pg_query::InferClause::MergeFrom(from._internal_infer()); } if (from.has_where_clause()) { _internal_mutable_where_clause()->::pg_query::Node::MergeFrom(from._internal_where_clause()); } if (from.action() != 0) { _internal_set_action(from._internal_action()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void OnConflictClause::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.OnConflictClause) if (&from == this) return; Clear(); MergeFrom(from); } void OnConflictClause::CopyFrom(const OnConflictClause& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.OnConflictClause) if (&from == this) return; Clear(); MergeFrom(from); } bool OnConflictClause::IsInitialized() const { return true; } void OnConflictClause::InternalSwap(OnConflictClause* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); target_list_.InternalSwap(&other->target_list_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(OnConflictClause, location_) + sizeof(OnConflictClause::location_) - PROTOBUF_FIELD_OFFSET(OnConflictClause, infer_)>( reinterpret_cast(&infer_), reinterpret_cast(&other->infer_)); } ::PROTOBUF_NAMESPACE_ID::Metadata OnConflictClause::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CommonTableExpr::_Internal { public: static const ::pg_query::Node& ctequery(const CommonTableExpr* msg); }; const ::pg_query::Node& CommonTableExpr::_Internal::ctequery(const CommonTableExpr* msg) { return *msg->ctequery_; } CommonTableExpr::CommonTableExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), aliascolnames_(arena), ctecolnames_(arena), ctecoltypes_(arena), ctecoltypmods_(arena), ctecolcollations_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CommonTableExpr) } CommonTableExpr::CommonTableExpr(const CommonTableExpr& from) : ::PROTOBUF_NAMESPACE_ID::Message(), aliascolnames_(from.aliascolnames_), ctecolnames_(from.ctecolnames_), ctecoltypes_(from.ctecoltypes_), ctecoltypmods_(from.ctecoltypmods_), ctecolcollations_(from.ctecolcollations_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ctename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_ctename().empty()) { ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_ctename(), GetArena()); } if (from._internal_has_ctequery()) { ctequery_ = new ::pg_query::Node(*from.ctequery_); } else { ctequery_ = nullptr; } ::memcpy(&ctematerialized_, &from.ctematerialized_, static_cast(reinterpret_cast(&cterefcount_) - reinterpret_cast(&ctematerialized_)) + sizeof(cterefcount_)); // @@protoc_insertion_point(copy_constructor:pg_query.CommonTableExpr) } void CommonTableExpr::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ctename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&ctequery_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&cterefcount_) - reinterpret_cast(&ctequery_)) + sizeof(cterefcount_)); } CommonTableExpr::~CommonTableExpr() { // @@protoc_insertion_point(destructor:pg_query.CommonTableExpr) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CommonTableExpr::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); ctename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete ctequery_; } void CommonTableExpr::ArenaDtor(void* object) { CommonTableExpr* _this = reinterpret_cast< CommonTableExpr* >(object); (void)_this; } void CommonTableExpr::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CommonTableExpr::SetCachedSize(int size) const { _cached_size_.Set(size); } const CommonTableExpr& CommonTableExpr::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CommonTableExpr::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CommonTableExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; aliascolnames_.Clear(); ctecolnames_.Clear(); ctecoltypes_.Clear(); ctecoltypmods_.Clear(); ctecolcollations_.Clear(); ctename_.ClearToEmpty(); if (GetArena() == nullptr && ctequery_ != nullptr) { delete ctequery_; } ctequery_ = nullptr; ::memset(&ctematerialized_, 0, static_cast( reinterpret_cast(&cterefcount_) - reinterpret_cast(&ctematerialized_)) + sizeof(cterefcount_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CommonTableExpr::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string ctename = 1 [json_name = "ctename"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_ctename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.CommonTableExpr.ctename")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node aliascolnames = 2 [json_name = "aliascolnames"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_aliascolnames(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_ctematerialized(static_cast<::pg_query::CTEMaterialize>(val)); } else goto handle_unusual; continue; // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr = ctx->ParseMessage(_internal_mutable_ctequery(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool cterecursive = 6 [json_name = "cterecursive"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) { cterecursive_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 cterefcount = 7 [json_name = "cterefcount"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) { cterefcount_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node ctecolnames = 8 [json_name = "ctecolnames"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_ctecolnames(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node ctecoltypes = 9 [json_name = "ctecoltypes"]; case 9: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_ctecoltypes(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node ctecoltypmods = 10 [json_name = "ctecoltypmods"]; case 10: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 82)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_ctecoltypmods(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node ctecolcollations = 11 [json_name = "ctecolcollations"]; case 11: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_ctecolcollations(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<90>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CommonTableExpr::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CommonTableExpr) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string ctename = 1 [json_name = "ctename"]; if (this->ctename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_ctename().data(), static_cast(this->_internal_ctename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.CommonTableExpr.ctename"); target = stream->WriteStringMaybeAliased( 1, this->_internal_ctename(), target); } // repeated .pg_query.Node aliascolnames = 2 [json_name = "aliascolnames"]; for (unsigned int i = 0, n = static_cast(this->_internal_aliascolnames_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_aliascolnames(i), target, stream); } // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; if (this->ctematerialized() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 3, this->_internal_ctematerialized(), target); } // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; if (this->has_ctequery()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 4, _Internal::ctequery(this), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } // bool cterecursive = 6 [json_name = "cterecursive"]; if (this->cterecursive() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_cterecursive(), target); } // int32 cterefcount = 7 [json_name = "cterefcount"]; if (this->cterefcount() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_cterefcount(), target); } // repeated .pg_query.Node ctecolnames = 8 [json_name = "ctecolnames"]; for (unsigned int i = 0, n = static_cast(this->_internal_ctecolnames_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(8, this->_internal_ctecolnames(i), target, stream); } // repeated .pg_query.Node ctecoltypes = 9 [json_name = "ctecoltypes"]; for (unsigned int i = 0, n = static_cast(this->_internal_ctecoltypes_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(9, this->_internal_ctecoltypes(i), target, stream); } // repeated .pg_query.Node ctecoltypmods = 10 [json_name = "ctecoltypmods"]; for (unsigned int i = 0, n = static_cast(this->_internal_ctecoltypmods_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(10, this->_internal_ctecoltypmods(i), target, stream); } // repeated .pg_query.Node ctecolcollations = 11 [json_name = "ctecolcollations"]; for (unsigned int i = 0, n = static_cast(this->_internal_ctecolcollations_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(11, this->_internal_ctecolcollations(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CommonTableExpr) return target; } size_t CommonTableExpr::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CommonTableExpr) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node aliascolnames = 2 [json_name = "aliascolnames"]; total_size += 1UL * this->_internal_aliascolnames_size(); for (const auto& msg : this->aliascolnames_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node ctecolnames = 8 [json_name = "ctecolnames"]; total_size += 1UL * this->_internal_ctecolnames_size(); for (const auto& msg : this->ctecolnames_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node ctecoltypes = 9 [json_name = "ctecoltypes"]; total_size += 1UL * this->_internal_ctecoltypes_size(); for (const auto& msg : this->ctecoltypes_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node ctecoltypmods = 10 [json_name = "ctecoltypmods"]; total_size += 1UL * this->_internal_ctecoltypmods_size(); for (const auto& msg : this->ctecoltypmods_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node ctecolcollations = 11 [json_name = "ctecolcollations"]; total_size += 1UL * this->_internal_ctecolcollations_size(); for (const auto& msg : this->ctecolcollations_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string ctename = 1 [json_name = "ctename"]; if (this->ctename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_ctename()); } // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; if (this->has_ctequery()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *ctequery_); } // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; if (this->ctematerialized() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_ctematerialized()); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } // bool cterecursive = 6 [json_name = "cterecursive"]; if (this->cterecursive() != 0) { total_size += 1 + 1; } // int32 cterefcount = 7 [json_name = "cterefcount"]; if (this->cterefcount() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_cterefcount()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CommonTableExpr::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CommonTableExpr) GOOGLE_DCHECK_NE(&from, this); const CommonTableExpr* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CommonTableExpr) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CommonTableExpr) MergeFrom(*source); } } void CommonTableExpr::MergeFrom(const CommonTableExpr& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CommonTableExpr) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; aliascolnames_.MergeFrom(from.aliascolnames_); ctecolnames_.MergeFrom(from.ctecolnames_); ctecoltypes_.MergeFrom(from.ctecoltypes_); ctecoltypmods_.MergeFrom(from.ctecoltypmods_); ctecolcollations_.MergeFrom(from.ctecolcollations_); if (from.ctename().size() > 0) { _internal_set_ctename(from._internal_ctename()); } if (from.has_ctequery()) { _internal_mutable_ctequery()->::pg_query::Node::MergeFrom(from._internal_ctequery()); } if (from.ctematerialized() != 0) { _internal_set_ctematerialized(from._internal_ctematerialized()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } if (from.cterecursive() != 0) { _internal_set_cterecursive(from._internal_cterecursive()); } if (from.cterefcount() != 0) { _internal_set_cterefcount(from._internal_cterefcount()); } } void CommonTableExpr::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CommonTableExpr) if (&from == this) return; Clear(); MergeFrom(from); } void CommonTableExpr::CopyFrom(const CommonTableExpr& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CommonTableExpr) if (&from == this) return; Clear(); MergeFrom(from); } bool CommonTableExpr::IsInitialized() const { return true; } void CommonTableExpr::InternalSwap(CommonTableExpr* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); aliascolnames_.InternalSwap(&other->aliascolnames_); ctecolnames_.InternalSwap(&other->ctecolnames_); ctecoltypes_.InternalSwap(&other->ctecoltypes_); ctecoltypmods_.InternalSwap(&other->ctecoltypmods_); ctecolcollations_.InternalSwap(&other->ctecolcollations_); ctename_.Swap(&other->ctename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(CommonTableExpr, cterefcount_) + sizeof(CommonTableExpr::cterefcount_) - PROTOBUF_FIELD_OFFSET(CommonTableExpr, ctequery_)>( reinterpret_cast(&ctequery_), reinterpret_cast(&other->ctequery_)); } ::PROTOBUF_NAMESPACE_ID::Metadata CommonTableExpr::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class RoleSpec::_Internal { public: }; RoleSpec::RoleSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.RoleSpec) } RoleSpec::RoleSpec(const RoleSpec& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); rolename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_rolename().empty()) { rolename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_rolename(), GetArena()); } ::memcpy(&roletype_, &from.roletype_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&roletype_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.RoleSpec) } void RoleSpec::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_RoleSpec_protobuf_2fpg_5fquery_2eproto.base); rolename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&roletype_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&roletype_)) + sizeof(location_)); } RoleSpec::~RoleSpec() { // @@protoc_insertion_point(destructor:pg_query.RoleSpec) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void RoleSpec::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); rolename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void RoleSpec::ArenaDtor(void* object) { RoleSpec* _this = reinterpret_cast< RoleSpec* >(object); (void)_this; } void RoleSpec::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void RoleSpec::SetCachedSize(int size) const { _cached_size_.Set(size); } const RoleSpec& RoleSpec::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_RoleSpec_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void RoleSpec::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.RoleSpec) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; rolename_.ClearToEmpty(); ::memset(&roletype_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&roletype_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* RoleSpec::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_roletype(static_cast<::pg_query::RoleSpecType>(val)); } else goto handle_unusual; continue; // string rolename = 2 [json_name = "rolename"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { auto str = _internal_mutable_rolename(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.RoleSpec.rolename")); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 3 [json_name = "location"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* RoleSpec::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.RoleSpec) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; if (this->roletype() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_roletype(), target); } // string rolename = 2 [json_name = "rolename"]; if (this->rolename().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_rolename().data(), static_cast(this->_internal_rolename().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.RoleSpec.rolename"); target = stream->WriteStringMaybeAliased( 2, this->_internal_rolename(), target); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.RoleSpec) return target; } size_t RoleSpec::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.RoleSpec) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string rolename = 2 [json_name = "rolename"]; if (this->rolename().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_rolename()); } // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; if (this->roletype() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_roletype()); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void RoleSpec::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.RoleSpec) GOOGLE_DCHECK_NE(&from, this); const RoleSpec* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.RoleSpec) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.RoleSpec) MergeFrom(*source); } } void RoleSpec::MergeFrom(const RoleSpec& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.RoleSpec) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.rolename().size() > 0) { _internal_set_rolename(from._internal_rolename()); } if (from.roletype() != 0) { _internal_set_roletype(from._internal_roletype()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void RoleSpec::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.RoleSpec) if (&from == this) return; Clear(); MergeFrom(from); } void RoleSpec::CopyFrom(const RoleSpec& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.RoleSpec) if (&from == this) return; Clear(); MergeFrom(from); } bool RoleSpec::IsInitialized() const { return true; } void RoleSpec::InternalSwap(RoleSpec* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); rolename_.Swap(&other->rolename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(RoleSpec, location_) + sizeof(RoleSpec::location_) - PROTOBUF_FIELD_OFFSET(RoleSpec, roletype_)>( reinterpret_cast(&roletype_), reinterpret_cast(&other->roletype_)); } ::PROTOBUF_NAMESPACE_ID::Metadata RoleSpec::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class TriggerTransition::_Internal { public: }; TriggerTransition::TriggerTransition(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.TriggerTransition) } TriggerTransition::TriggerTransition(const TriggerTransition& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } ::memcpy(&is_new_, &from.is_new_, static_cast(reinterpret_cast(&is_table_) - reinterpret_cast(&is_new_)) + sizeof(is_table_)); // @@protoc_insertion_point(copy_constructor:pg_query.TriggerTransition) } void TriggerTransition::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_TriggerTransition_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&is_new_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&is_table_) - reinterpret_cast(&is_new_)) + sizeof(is_table_)); } TriggerTransition::~TriggerTransition() { // @@protoc_insertion_point(destructor:pg_query.TriggerTransition) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void TriggerTransition::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void TriggerTransition::ArenaDtor(void* object) { TriggerTransition* _this = reinterpret_cast< TriggerTransition* >(object); (void)_this; } void TriggerTransition::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void TriggerTransition::SetCachedSize(int size) const { _cached_size_.Set(size); } const TriggerTransition& TriggerTransition::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_TriggerTransition_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void TriggerTransition::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.TriggerTransition) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; name_.ClearToEmpty(); ::memset(&is_new_, 0, static_cast( reinterpret_cast(&is_table_) - reinterpret_cast(&is_new_)) + sizeof(is_table_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* TriggerTransition::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.TriggerTransition.name")); CHK_(ptr); } else goto handle_unusual; continue; // bool is_new = 2 [json_name = "isNew"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { is_new_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool is_table = 3 [json_name = "isTable"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { is_table_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* TriggerTransition::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.TriggerTransition) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.TriggerTransition.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } // bool is_new = 2 [json_name = "isNew"]; if (this->is_new() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_is_new(), target); } // bool is_table = 3 [json_name = "isTable"]; if (this->is_table() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_is_table(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.TriggerTransition) return target; } size_t TriggerTransition::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.TriggerTransition) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // bool is_new = 2 [json_name = "isNew"]; if (this->is_new() != 0) { total_size += 1 + 1; } // bool is_table = 3 [json_name = "isTable"]; if (this->is_table() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void TriggerTransition::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.TriggerTransition) GOOGLE_DCHECK_NE(&from, this); const TriggerTransition* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.TriggerTransition) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.TriggerTransition) MergeFrom(*source); } } void TriggerTransition::MergeFrom(const TriggerTransition& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.TriggerTransition) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.is_new() != 0) { _internal_set_is_new(from._internal_is_new()); } if (from.is_table() != 0) { _internal_set_is_table(from._internal_is_table()); } } void TriggerTransition::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.TriggerTransition) if (&from == this) return; Clear(); MergeFrom(from); } void TriggerTransition::CopyFrom(const TriggerTransition& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.TriggerTransition) if (&from == this) return; Clear(); MergeFrom(from); } bool TriggerTransition::IsInitialized() const { return true; } void TriggerTransition::InternalSwap(TriggerTransition* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(TriggerTransition, is_table_) + sizeof(TriggerTransition::is_table_) - PROTOBUF_FIELD_OFFSET(TriggerTransition, is_new_)>( reinterpret_cast(&is_new_), reinterpret_cast(&other->is_new_)); } ::PROTOBUF_NAMESPACE_ID::Metadata TriggerTransition::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class PartitionElem::_Internal { public: static const ::pg_query::Node& expr(const PartitionElem* msg); }; const ::pg_query::Node& PartitionElem::_Internal::expr(const PartitionElem* msg) { return *msg->expr_; } PartitionElem::PartitionElem(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), collation_(arena), opclass_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PartitionElem) } PartitionElem::PartitionElem(const PartitionElem& from) : ::PROTOBUF_NAMESPACE_ID::Message(), collation_(from.collation_), opclass_(from.opclass_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_name().empty()) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), GetArena()); } if (from._internal_has_expr()) { expr_ = new ::pg_query::Node(*from.expr_); } else { expr_ = nullptr; } location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.PartitionElem) } void PartitionElem::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&expr_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&expr_)) + sizeof(location_)); } PartitionElem::~PartitionElem() { // @@protoc_insertion_point(destructor:pg_query.PartitionElem) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void PartitionElem::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (this != internal_default_instance()) delete expr_; } void PartitionElem::ArenaDtor(void* object) { PartitionElem* _this = reinterpret_cast< PartitionElem* >(object); (void)_this; } void PartitionElem::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void PartitionElem::SetCachedSize(int size) const { _cached_size_.Set(size); } const PartitionElem& PartitionElem::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void PartitionElem::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PartitionElem) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; collation_.Clear(); opclass_.Clear(); name_.ClearToEmpty(); if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* PartitionElem::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_name(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.PartitionElem.name")); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Node expr = 2 [json_name = "expr"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_expr(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node collation = 3 [json_name = "collation"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_collation(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_opclass(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr)); } else goto handle_unusual; continue; // int32 location = 5 [json_name = "location"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* PartitionElem::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PartitionElem) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_name().data(), static_cast(this->_internal_name().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.PartitionElem.name"); target = stream->WriteStringMaybeAliased( 1, this->_internal_name(), target); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::expr(this), target, stream); } // repeated .pg_query.Node collation = 3 [json_name = "collation"]; for (unsigned int i = 0, n = static_cast(this->_internal_collation_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_collation(i), target, stream); } // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; for (unsigned int i = 0, n = static_cast(this->_internal_opclass_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(4, this->_internal_opclass(i), target, stream); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.PartitionElem) return target; } size_t PartitionElem::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.PartitionElem) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node collation = 3 [json_name = "collation"]; total_size += 1UL * this->_internal_collation_size(); for (const auto& msg : this->collation_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; total_size += 1UL * this->_internal_opclass_size(); for (const auto& msg : this->opclass_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string name = 1 [json_name = "name"]; if (this->name().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_name()); } // .pg_query.Node expr = 2 [json_name = "expr"]; if (this->has_expr()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *expr_); } // int32 location = 5 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void PartitionElem::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.PartitionElem) GOOGLE_DCHECK_NE(&from, this); const PartitionElem* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.PartitionElem) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.PartitionElem) MergeFrom(*source); } } void PartitionElem::MergeFrom(const PartitionElem& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PartitionElem) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; collation_.MergeFrom(from.collation_); opclass_.MergeFrom(from.opclass_); if (from.name().size() > 0) { _internal_set_name(from._internal_name()); } if (from.has_expr()) { _internal_mutable_expr()->::pg_query::Node::MergeFrom(from._internal_expr()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void PartitionElem::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.PartitionElem) if (&from == this) return; Clear(); MergeFrom(from); } void PartitionElem::CopyFrom(const PartitionElem& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PartitionElem) if (&from == this) return; Clear(); MergeFrom(from); } bool PartitionElem::IsInitialized() const { return true; } void PartitionElem::InternalSwap(PartitionElem* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); collation_.InternalSwap(&other->collation_); opclass_.InternalSwap(&other->opclass_); name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(PartitionElem, location_) + sizeof(PartitionElem::location_) - PROTOBUF_FIELD_OFFSET(PartitionElem, expr_)>( reinterpret_cast(&expr_), reinterpret_cast(&other->expr_)); } ::PROTOBUF_NAMESPACE_ID::Metadata PartitionElem::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class PartitionSpec::_Internal { public: }; PartitionSpec::PartitionSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), part_params_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PartitionSpec) } PartitionSpec::PartitionSpec(const PartitionSpec& from) : ::PROTOBUF_NAMESPACE_ID::Message(), part_params_(from.part_params_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); strategy_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_strategy().empty()) { strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_strategy(), GetArena()); } location_ = from.location_; // @@protoc_insertion_point(copy_constructor:pg_query.PartitionSpec) } void PartitionSpec::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); strategy_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); location_ = 0; } PartitionSpec::~PartitionSpec() { // @@protoc_insertion_point(destructor:pg_query.PartitionSpec) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void PartitionSpec::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); strategy_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void PartitionSpec::ArenaDtor(void* object) { PartitionSpec* _this = reinterpret_cast< PartitionSpec* >(object); (void)_this; } void PartitionSpec::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void PartitionSpec::SetCachedSize(int size) const { _cached_size_.Set(size); } const PartitionSpec& PartitionSpec::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void PartitionSpec::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PartitionSpec) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; part_params_.Clear(); strategy_.ClearToEmpty(); location_ = 0; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* PartitionSpec::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string strategy = 1 [json_name = "strategy"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_strategy(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.PartitionSpec.strategy")); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_part_params(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr)); } else goto handle_unusual; continue; // int32 location = 3 [json_name = "location"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* PartitionSpec::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PartitionSpec) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string strategy = 1 [json_name = "strategy"]; if (this->strategy().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_strategy().data(), static_cast(this->_internal_strategy().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.PartitionSpec.strategy"); target = stream->WriteStringMaybeAliased( 1, this->_internal_strategy(), target); } // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; for (unsigned int i = 0, n = static_cast(this->_internal_part_params_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(2, this->_internal_part_params(i), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.PartitionSpec) return target; } size_t PartitionSpec::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.PartitionSpec) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; total_size += 1UL * this->_internal_part_params_size(); for (const auto& msg : this->part_params_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string strategy = 1 [json_name = "strategy"]; if (this->strategy().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_strategy()); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void PartitionSpec::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.PartitionSpec) GOOGLE_DCHECK_NE(&from, this); const PartitionSpec* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.PartitionSpec) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.PartitionSpec) MergeFrom(*source); } } void PartitionSpec::MergeFrom(const PartitionSpec& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PartitionSpec) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; part_params_.MergeFrom(from.part_params_); if (from.strategy().size() > 0) { _internal_set_strategy(from._internal_strategy()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void PartitionSpec::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.PartitionSpec) if (&from == this) return; Clear(); MergeFrom(from); } void PartitionSpec::CopyFrom(const PartitionSpec& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PartitionSpec) if (&from == this) return; Clear(); MergeFrom(from); } bool PartitionSpec::IsInitialized() const { return true; } void PartitionSpec::InternalSwap(PartitionSpec* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); part_params_.InternalSwap(&other->part_params_); strategy_.Swap(&other->strategy_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); swap(location_, other->location_); } ::PROTOBUF_NAMESPACE_ID::Metadata PartitionSpec::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class PartitionBoundSpec::_Internal { public: }; PartitionBoundSpec::PartitionBoundSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), listdatums_(arena), lowerdatums_(arena), upperdatums_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PartitionBoundSpec) } PartitionBoundSpec::PartitionBoundSpec(const PartitionBoundSpec& from) : ::PROTOBUF_NAMESPACE_ID::Message(), listdatums_(from.listdatums_), lowerdatums_(from.lowerdatums_), upperdatums_(from.upperdatums_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); strategy_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_strategy().empty()) { strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_strategy(), GetArena()); } ::memcpy(&is_default_, &from.is_default_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&is_default_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.PartitionBoundSpec) } void PartitionBoundSpec::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); strategy_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&is_default_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&is_default_)) + sizeof(location_)); } PartitionBoundSpec::~PartitionBoundSpec() { // @@protoc_insertion_point(destructor:pg_query.PartitionBoundSpec) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void PartitionBoundSpec::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); strategy_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void PartitionBoundSpec::ArenaDtor(void* object) { PartitionBoundSpec* _this = reinterpret_cast< PartitionBoundSpec* >(object); (void)_this; } void PartitionBoundSpec::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void PartitionBoundSpec::SetCachedSize(int size) const { _cached_size_.Set(size); } const PartitionBoundSpec& PartitionBoundSpec::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void PartitionBoundSpec::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PartitionBoundSpec) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; listdatums_.Clear(); lowerdatums_.Clear(); upperdatums_.Clear(); strategy_.ClearToEmpty(); ::memset(&is_default_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&is_default_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* PartitionBoundSpec::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string strategy = 1 [json_name = "strategy"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_strategy(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.PartitionBoundSpec.strategy")); CHK_(ptr); } else goto handle_unusual; continue; // bool is_default = 2 [json_name = "is_default"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { is_default_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 modulus = 3 [json_name = "modulus"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { modulus_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 remainder = 4 [json_name = "remainder"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { remainder_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_listdatums(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; case 6: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_lowerdatums(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr)); } else goto handle_unusual; continue; // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; case 7: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_upperdatums(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr)); } else goto handle_unusual; continue; // int32 location = 8 [json_name = "location"]; case 8: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* PartitionBoundSpec::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PartitionBoundSpec) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string strategy = 1 [json_name = "strategy"]; if (this->strategy().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_strategy().data(), static_cast(this->_internal_strategy().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.PartitionBoundSpec.strategy"); target = stream->WriteStringMaybeAliased( 1, this->_internal_strategy(), target); } // bool is_default = 2 [json_name = "is_default"]; if (this->is_default() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_is_default(), target); } // int32 modulus = 3 [json_name = "modulus"]; if (this->modulus() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_modulus(), target); } // int32 remainder = 4 [json_name = "remainder"]; if (this->remainder() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_remainder(), target); } // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; for (unsigned int i = 0, n = static_cast(this->_internal_listdatums_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(5, this->_internal_listdatums(i), target, stream); } // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; for (unsigned int i = 0, n = static_cast(this->_internal_lowerdatums_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(6, this->_internal_lowerdatums(i), target, stream); } // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; for (unsigned int i = 0, n = static_cast(this->_internal_upperdatums_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(7, this->_internal_upperdatums(i), target, stream); } // int32 location = 8 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(8, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.PartitionBoundSpec) return target; } size_t PartitionBoundSpec::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.PartitionBoundSpec) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; total_size += 1UL * this->_internal_listdatums_size(); for (const auto& msg : this->listdatums_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; total_size += 1UL * this->_internal_lowerdatums_size(); for (const auto& msg : this->lowerdatums_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; total_size += 1UL * this->_internal_upperdatums_size(); for (const auto& msg : this->upperdatums_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // string strategy = 1 [json_name = "strategy"]; if (this->strategy().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_strategy()); } // bool is_default = 2 [json_name = "is_default"]; if (this->is_default() != 0) { total_size += 1 + 1; } // int32 modulus = 3 [json_name = "modulus"]; if (this->modulus() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_modulus()); } // int32 remainder = 4 [json_name = "remainder"]; if (this->remainder() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_remainder()); } // int32 location = 8 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void PartitionBoundSpec::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.PartitionBoundSpec) GOOGLE_DCHECK_NE(&from, this); const PartitionBoundSpec* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.PartitionBoundSpec) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.PartitionBoundSpec) MergeFrom(*source); } } void PartitionBoundSpec::MergeFrom(const PartitionBoundSpec& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PartitionBoundSpec) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; listdatums_.MergeFrom(from.listdatums_); lowerdatums_.MergeFrom(from.lowerdatums_); upperdatums_.MergeFrom(from.upperdatums_); if (from.strategy().size() > 0) { _internal_set_strategy(from._internal_strategy()); } if (from.is_default() != 0) { _internal_set_is_default(from._internal_is_default()); } if (from.modulus() != 0) { _internal_set_modulus(from._internal_modulus()); } if (from.remainder() != 0) { _internal_set_remainder(from._internal_remainder()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void PartitionBoundSpec::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.PartitionBoundSpec) if (&from == this) return; Clear(); MergeFrom(from); } void PartitionBoundSpec::CopyFrom(const PartitionBoundSpec& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PartitionBoundSpec) if (&from == this) return; Clear(); MergeFrom(from); } bool PartitionBoundSpec::IsInitialized() const { return true; } void PartitionBoundSpec::InternalSwap(PartitionBoundSpec* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); listdatums_.InternalSwap(&other->listdatums_); lowerdatums_.InternalSwap(&other->lowerdatums_); upperdatums_.InternalSwap(&other->upperdatums_); strategy_.Swap(&other->strategy_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, location_) + sizeof(PartitionBoundSpec::location_) - PROTOBUF_FIELD_OFFSET(PartitionBoundSpec, is_default_)>( reinterpret_cast(&is_default_), reinterpret_cast(&other->is_default_)); } ::PROTOBUF_NAMESPACE_ID::Metadata PartitionBoundSpec::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class PartitionRangeDatum::_Internal { public: static const ::pg_query::Node& value(const PartitionRangeDatum* msg); }; const ::pg_query::Node& PartitionRangeDatum::_Internal::value(const PartitionRangeDatum* msg) { return *msg->value_; } PartitionRangeDatum::PartitionRangeDatum(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PartitionRangeDatum) } PartitionRangeDatum::PartitionRangeDatum(const PartitionRangeDatum& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_value()) { value_ = new ::pg_query::Node(*from.value_); } else { value_ = nullptr; } ::memcpy(&kind_, &from.kind_, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&kind_)) + sizeof(location_)); // @@protoc_insertion_point(copy_constructor:pg_query.PartitionRangeDatum) } void PartitionRangeDatum::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&value_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&location_) - reinterpret_cast(&value_)) + sizeof(location_)); } PartitionRangeDatum::~PartitionRangeDatum() { // @@protoc_insertion_point(destructor:pg_query.PartitionRangeDatum) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void PartitionRangeDatum::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete value_; } void PartitionRangeDatum::ArenaDtor(void* object) { PartitionRangeDatum* _this = reinterpret_cast< PartitionRangeDatum* >(object); (void)_this; } void PartitionRangeDatum::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void PartitionRangeDatum::SetCachedSize(int size) const { _cached_size_.Set(size); } const PartitionRangeDatum& PartitionRangeDatum::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void PartitionRangeDatum::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PartitionRangeDatum) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && value_ != nullptr) { delete value_; } value_ = nullptr; ::memset(&kind_, 0, static_cast( reinterpret_cast(&location_) - reinterpret_cast(&kind_)) + sizeof(location_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* PartitionRangeDatum::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_kind(static_cast<::pg_query::PartitionRangeDatumKind>(val)); } else goto handle_unusual; continue; // .pg_query.Node value = 2 [json_name = "value"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_value(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 location = 3 [json_name = "location"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { location_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* PartitionRangeDatum::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PartitionRangeDatum) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 1, this->_internal_kind(), target); } // .pg_query.Node value = 2 [json_name = "value"]; if (this->has_value()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::value(this), target, stream); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_location(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.PartitionRangeDatum) return target; } size_t PartitionRangeDatum::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.PartitionRangeDatum) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.Node value = 2 [json_name = "value"]; if (this->has_value()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *value_); } // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; if (this->kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_kind()); } // int32 location = 3 [json_name = "location"]; if (this->location() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_location()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void PartitionRangeDatum::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.PartitionRangeDatum) GOOGLE_DCHECK_NE(&from, this); const PartitionRangeDatum* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.PartitionRangeDatum) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.PartitionRangeDatum) MergeFrom(*source); } } void PartitionRangeDatum::MergeFrom(const PartitionRangeDatum& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PartitionRangeDatum) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_value()) { _internal_mutable_value()->::pg_query::Node::MergeFrom(from._internal_value()); } if (from.kind() != 0) { _internal_set_kind(from._internal_kind()); } if (from.location() != 0) { _internal_set_location(from._internal_location()); } } void PartitionRangeDatum::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.PartitionRangeDatum) if (&from == this) return; Clear(); MergeFrom(from); } void PartitionRangeDatum::CopyFrom(const PartitionRangeDatum& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PartitionRangeDatum) if (&from == this) return; Clear(); MergeFrom(from); } bool PartitionRangeDatum::IsInitialized() const { return true; } void PartitionRangeDatum::InternalSwap(PartitionRangeDatum* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, location_) + sizeof(PartitionRangeDatum::location_) - PROTOBUF_FIELD_OFFSET(PartitionRangeDatum, value_)>( reinterpret_cast(&value_), reinterpret_cast(&other->value_)); } ::PROTOBUF_NAMESPACE_ID::Metadata PartitionRangeDatum::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class PartitionCmd::_Internal { public: static const ::pg_query::RangeVar& name(const PartitionCmd* msg); static const ::pg_query::PartitionBoundSpec& bound(const PartitionCmd* msg); }; const ::pg_query::RangeVar& PartitionCmd::_Internal::name(const PartitionCmd* msg) { return *msg->name_; } const ::pg_query::PartitionBoundSpec& PartitionCmd::_Internal::bound(const PartitionCmd* msg) { return *msg->bound_; } PartitionCmd::PartitionCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.PartitionCmd) } PartitionCmd::PartitionCmd(const PartitionCmd& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_name()) { name_ = new ::pg_query::RangeVar(*from.name_); } else { name_ = nullptr; } if (from._internal_has_bound()) { bound_ = new ::pg_query::PartitionBoundSpec(*from.bound_); } else { bound_ = nullptr; } // @@protoc_insertion_point(copy_constructor:pg_query.PartitionCmd) } void PartitionCmd::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&name_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&bound_) - reinterpret_cast(&name_)) + sizeof(bound_)); } PartitionCmd::~PartitionCmd() { // @@protoc_insertion_point(destructor:pg_query.PartitionCmd) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void PartitionCmd::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete name_; if (this != internal_default_instance()) delete bound_; } void PartitionCmd::ArenaDtor(void* object) { PartitionCmd* _this = reinterpret_cast< PartitionCmd* >(object); (void)_this; } void PartitionCmd::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void PartitionCmd::SetCachedSize(int size) const { _cached_size_.Set(size); } const PartitionCmd& PartitionCmd::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void PartitionCmd::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.PartitionCmd) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; if (GetArena() == nullptr && name_ != nullptr) { delete name_; } name_ = nullptr; if (GetArena() == nullptr && bound_ != nullptr) { delete bound_; } bound_ = nullptr; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* PartitionCmd::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar name = 1 [json_name = "name"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_name(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) { ptr = ctx->ParseMessage(_internal_mutable_bound(), ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* PartitionCmd::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.PartitionCmd) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar name = 1 [json_name = "name"]; if (this->has_name()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::name(this), target, stream); } // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; if (this->has_bound()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 2, _Internal::bound(this), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.PartitionCmd) return target; } size_t PartitionCmd::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.PartitionCmd) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // .pg_query.RangeVar name = 1 [json_name = "name"]; if (this->has_name()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *name_); } // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; if (this->has_bound()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *bound_); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void PartitionCmd::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.PartitionCmd) GOOGLE_DCHECK_NE(&from, this); const PartitionCmd* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.PartitionCmd) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.PartitionCmd) MergeFrom(*source); } } void PartitionCmd::MergeFrom(const PartitionCmd& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.PartitionCmd) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.has_name()) { _internal_mutable_name()->::pg_query::RangeVar::MergeFrom(from._internal_name()); } if (from.has_bound()) { _internal_mutable_bound()->::pg_query::PartitionBoundSpec::MergeFrom(from._internal_bound()); } } void PartitionCmd::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.PartitionCmd) if (&from == this) return; Clear(); MergeFrom(from); } void PartitionCmd::CopyFrom(const PartitionCmd& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.PartitionCmd) if (&from == this) return; Clear(); MergeFrom(from); } bool PartitionCmd::IsInitialized() const { return true; } void PartitionCmd::InternalSwap(PartitionCmd* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(PartitionCmd, bound_) + sizeof(PartitionCmd::bound_) - PROTOBUF_FIELD_OFFSET(PartitionCmd, name_)>( reinterpret_cast(&name_), reinterpret_cast(&other->name_)); } ::PROTOBUF_NAMESPACE_ID::Metadata PartitionCmd::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class VacuumRelation::_Internal { public: static const ::pg_query::RangeVar& relation(const VacuumRelation* msg); }; const ::pg_query::RangeVar& VacuumRelation::_Internal::relation(const VacuumRelation* msg) { return *msg->relation_; } VacuumRelation::VacuumRelation(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena), va_cols_(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.VacuumRelation) } VacuumRelation::VacuumRelation(const VacuumRelation& from) : ::PROTOBUF_NAMESPACE_ID::Message(), va_cols_(from.va_cols_) { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); if (from._internal_has_relation()) { relation_ = new ::pg_query::RangeVar(*from.relation_); } else { relation_ = nullptr; } oid_ = from.oid_; // @@protoc_insertion_point(copy_constructor:pg_query.VacuumRelation) } void VacuumRelation::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&relation_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&oid_) - reinterpret_cast(&relation_)) + sizeof(oid_)); } VacuumRelation::~VacuumRelation() { // @@protoc_insertion_point(destructor:pg_query.VacuumRelation) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void VacuumRelation::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); if (this != internal_default_instance()) delete relation_; } void VacuumRelation::ArenaDtor(void* object) { VacuumRelation* _this = reinterpret_cast< VacuumRelation* >(object); (void)_this; } void VacuumRelation::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void VacuumRelation::SetCachedSize(int size) const { _cached_size_.Set(size); } const VacuumRelation& VacuumRelation::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_A_ArrayExpr_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void VacuumRelation::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.VacuumRelation) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; va_cols_.Clear(); if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; oid_ = 0u; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* VacuumRelation::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // .pg_query.RangeVar relation = 1 [json_name = "relation"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { ptr = ctx->ParseMessage(_internal_mutable_relation(), ptr); CHK_(ptr); } else goto handle_unusual; continue; // uint32 oid = 2 [json_name = "oid"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { oid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) { ptr -= 1; do { ptr += 1; ptr = ctx->ParseMessage(_internal_add_va_cols(), ptr); CHK_(ptr); if (!ctx->DataAvailable(ptr)) break; } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* VacuumRelation::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.VacuumRelation) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage( 1, _Internal::relation(this), target, stream); } // uint32 oid = 2 [json_name = "oid"]; if (this->oid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_oid(), target); } // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; for (unsigned int i = 0, n = static_cast(this->_internal_va_cols_size()); i < n; i++) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: InternalWriteMessage(3, this->_internal_va_cols(i), target, stream); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.VacuumRelation) return target; } size_t VacuumRelation::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.VacuumRelation) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; total_size += 1UL * this->_internal_va_cols_size(); for (const auto& msg : this->va_cols_) { total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg); } // .pg_query.RangeVar relation = 1 [json_name = "relation"]; if (this->has_relation()) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( *relation_); } // uint32 oid = 2 [json_name = "oid"]; if (this->oid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_oid()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void VacuumRelation::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.VacuumRelation) GOOGLE_DCHECK_NE(&from, this); const VacuumRelation* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.VacuumRelation) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.VacuumRelation) MergeFrom(*source); } } void VacuumRelation::MergeFrom(const VacuumRelation& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.VacuumRelation) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; va_cols_.MergeFrom(from.va_cols_); if (from.has_relation()) { _internal_mutable_relation()->::pg_query::RangeVar::MergeFrom(from._internal_relation()); } if (from.oid() != 0) { _internal_set_oid(from._internal_oid()); } } void VacuumRelation::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.VacuumRelation) if (&from == this) return; Clear(); MergeFrom(from); } void VacuumRelation::CopyFrom(const VacuumRelation& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.VacuumRelation) if (&from == this) return; Clear(); MergeFrom(from); } bool VacuumRelation::IsInitialized() const { return true; } void VacuumRelation::InternalSwap(VacuumRelation* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); va_cols_.InternalSwap(&other->va_cols_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(VacuumRelation, oid_) + sizeof(VacuumRelation::oid_) - PROTOBUF_FIELD_OFFSET(VacuumRelation, relation_)>( reinterpret_cast(&relation_), reinterpret_cast(&other->relation_)); } ::PROTOBUF_NAMESPACE_ID::Metadata VacuumRelation::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class InlineCodeBlock::_Internal { public: }; InlineCodeBlock::InlineCodeBlock(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.InlineCodeBlock) } InlineCodeBlock::InlineCodeBlock(const InlineCodeBlock& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); source_text_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); if (!from._internal_source_text().empty()) { source_text_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_source_text(), GetArena()); } ::memcpy(&lang_oid_, &from.lang_oid_, static_cast(reinterpret_cast(&atomic_) - reinterpret_cast(&lang_oid_)) + sizeof(atomic_)); // @@protoc_insertion_point(copy_constructor:pg_query.InlineCodeBlock) } void InlineCodeBlock::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_InlineCodeBlock_protobuf_2fpg_5fquery_2eproto.base); source_text_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&lang_oid_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&atomic_) - reinterpret_cast(&lang_oid_)) + sizeof(atomic_)); } InlineCodeBlock::~InlineCodeBlock() { // @@protoc_insertion_point(destructor:pg_query.InlineCodeBlock) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void InlineCodeBlock::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); source_text_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); } void InlineCodeBlock::ArenaDtor(void* object) { InlineCodeBlock* _this = reinterpret_cast< InlineCodeBlock* >(object); (void)_this; } void InlineCodeBlock::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void InlineCodeBlock::SetCachedSize(int size) const { _cached_size_.Set(size); } const InlineCodeBlock& InlineCodeBlock::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_InlineCodeBlock_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void InlineCodeBlock::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.InlineCodeBlock) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; source_text_.ClearToEmpty(); ::memset(&lang_oid_, 0, static_cast( reinterpret_cast(&atomic_) - reinterpret_cast(&lang_oid_)) + sizeof(atomic_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* InlineCodeBlock::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // string source_text = 1 [json_name = "source_text"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) { auto str = _internal_mutable_source_text(); ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx); CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "pg_query.InlineCodeBlock.source_text")); CHK_(ptr); } else goto handle_unusual; continue; // uint32 lang_oid = 2 [json_name = "langOid"]; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { lang_oid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; case 3: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) { lang_is_trusted_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // bool atomic = 4 [json_name = "atomic"]; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { atomic_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* InlineCodeBlock::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.InlineCodeBlock) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // string source_text = 1 [json_name = "source_text"]; if (this->source_text().size() > 0) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( this->_internal_source_text().data(), static_cast(this->_internal_source_text().length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "pg_query.InlineCodeBlock.source_text"); target = stream->WriteStringMaybeAliased( 1, this->_internal_source_text(), target); } // uint32 lang_oid = 2 [json_name = "langOid"]; if (this->lang_oid() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_lang_oid(), target); } // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; if (this->lang_is_trusted() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_lang_is_trusted(), target); } // bool atomic = 4 [json_name = "atomic"]; if (this->atomic() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_atomic(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.InlineCodeBlock) return target; } size_t InlineCodeBlock::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.InlineCodeBlock) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // string source_text = 1 [json_name = "source_text"]; if (this->source_text().size() > 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( this->_internal_source_text()); } // uint32 lang_oid = 2 [json_name = "langOid"]; if (this->lang_oid() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( this->_internal_lang_oid()); } // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; if (this->lang_is_trusted() != 0) { total_size += 1 + 1; } // bool atomic = 4 [json_name = "atomic"]; if (this->atomic() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void InlineCodeBlock::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.InlineCodeBlock) GOOGLE_DCHECK_NE(&from, this); const InlineCodeBlock* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.InlineCodeBlock) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.InlineCodeBlock) MergeFrom(*source); } } void InlineCodeBlock::MergeFrom(const InlineCodeBlock& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.InlineCodeBlock) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.source_text().size() > 0) { _internal_set_source_text(from._internal_source_text()); } if (from.lang_oid() != 0) { _internal_set_lang_oid(from._internal_lang_oid()); } if (from.lang_is_trusted() != 0) { _internal_set_lang_is_trusted(from._internal_lang_is_trusted()); } if (from.atomic() != 0) { _internal_set_atomic(from._internal_atomic()); } } void InlineCodeBlock::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.InlineCodeBlock) if (&from == this) return; Clear(); MergeFrom(from); } void InlineCodeBlock::CopyFrom(const InlineCodeBlock& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.InlineCodeBlock) if (&from == this) return; Clear(); MergeFrom(from); } bool InlineCodeBlock::IsInitialized() const { return true; } void InlineCodeBlock::InternalSwap(InlineCodeBlock* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); source_text_.Swap(&other->source_text_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(InlineCodeBlock, atomic_) + sizeof(InlineCodeBlock::atomic_) - PROTOBUF_FIELD_OFFSET(InlineCodeBlock, lang_oid_)>( reinterpret_cast(&lang_oid_), reinterpret_cast(&other->lang_oid_)); } ::PROTOBUF_NAMESPACE_ID::Metadata InlineCodeBlock::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class CallContext::_Internal { public: }; CallContext::CallContext(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.CallContext) } CallContext::CallContext(const CallContext& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); atomic_ = from.atomic_; // @@protoc_insertion_point(copy_constructor:pg_query.CallContext) } void CallContext::SharedCtor() { atomic_ = false; } CallContext::~CallContext() { // @@protoc_insertion_point(destructor:pg_query.CallContext) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void CallContext::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void CallContext::ArenaDtor(void* object) { CallContext* _this = reinterpret_cast< CallContext* >(object); (void)_this; } void CallContext::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void CallContext::SetCachedSize(int size) const { _cached_size_.Set(size); } const CallContext& CallContext::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_CallContext_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void CallContext::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.CallContext) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; atomic_ = false; _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* CallContext::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // bool atomic = 1 [json_name = "atomic"]; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { atomic_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* CallContext::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.CallContext) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // bool atomic = 1 [json_name = "atomic"]; if (this->atomic() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_atomic(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.CallContext) return target; } size_t CallContext::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.CallContext) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // bool atomic = 1 [json_name = "atomic"]; if (this->atomic() != 0) { total_size += 1 + 1; } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void CallContext::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.CallContext) GOOGLE_DCHECK_NE(&from, this); const CallContext* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.CallContext) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.CallContext) MergeFrom(*source); } } void CallContext::MergeFrom(const CallContext& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.CallContext) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.atomic() != 0) { _internal_set_atomic(from._internal_atomic()); } } void CallContext::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.CallContext) if (&from == this) return; Clear(); MergeFrom(from); } void CallContext::CopyFrom(const CallContext& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.CallContext) if (&from == this) return; Clear(); MergeFrom(from); } bool CallContext::IsInitialized() const { return true; } void CallContext::InternalSwap(CallContext* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); swap(atomic_, other->atomic_); } ::PROTOBUF_NAMESPACE_ID::Metadata CallContext::GetMetadata() const { return GetMetadataStatic(); } // =================================================================== class ScanToken::_Internal { public: }; ScanToken::ScanToken(::PROTOBUF_NAMESPACE_ID::Arena* arena) : ::PROTOBUF_NAMESPACE_ID::Message(arena) { SharedCtor(); RegisterArenaDtor(arena); // @@protoc_insertion_point(arena_constructor:pg_query.ScanToken) } ScanToken::ScanToken(const ScanToken& from) : ::PROTOBUF_NAMESPACE_ID::Message() { _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::memcpy(&start_, &from.start_, static_cast(reinterpret_cast(&keyword_kind_) - reinterpret_cast(&start_)) + sizeof(keyword_kind_)); // @@protoc_insertion_point(copy_constructor:pg_query.ScanToken) } void ScanToken::SharedCtor() { ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&start_) - reinterpret_cast(this)), 0, static_cast(reinterpret_cast(&keyword_kind_) - reinterpret_cast(&start_)) + sizeof(keyword_kind_)); } ScanToken::~ScanToken() { // @@protoc_insertion_point(destructor:pg_query.ScanToken) SharedDtor(); _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } void ScanToken::SharedDtor() { GOOGLE_DCHECK(GetArena() == nullptr); } void ScanToken::ArenaDtor(void* object) { ScanToken* _this = reinterpret_cast< ScanToken* >(object); (void)_this; } void ScanToken::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) { } void ScanToken::SetCachedSize(int size) const { _cached_size_.Set(size); } const ScanToken& ScanToken::default_instance() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ScanToken_protobuf_2fpg_5fquery_2eproto.base); return *internal_default_instance(); } void ScanToken::Clear() { // @@protoc_insertion_point(message_clear_start:pg_query.ScanToken) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; ::memset(&start_, 0, static_cast( reinterpret_cast(&keyword_kind_) - reinterpret_cast(&start_)) + sizeof(keyword_kind_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } const char* ScanToken::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) { #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure while (!ctx->Done(&ptr)) { ::PROTOBUF_NAMESPACE_ID::uint32 tag; ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag); CHK_(ptr); switch (tag >> 3) { // int32 start = 1; case 1: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) { start_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // int32 end = 2; case 2: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) { end_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); } else goto handle_unusual; continue; // .pg_query.Token token = 4; case 4: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_token(static_cast<::pg_query::Token>(val)); } else goto handle_unusual; continue; // .pg_query.KeywordKind keyword_kind = 5; case 5: if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) { ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr); CHK_(ptr); _internal_set_keyword_kind(static_cast<::pg_query::KeywordKind>(val)); } else goto handle_unusual; continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { ctx->SetLastTag(tag); goto success; } ptr = UnknownFieldParse(tag, _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), ptr, ctx); CHK_(ptr != nullptr); continue; } } // switch } // while success: return ptr; failure: ptr = nullptr; goto success; #undef CHK_ } ::PROTOBUF_NAMESPACE_ID::uint8* ScanToken::_InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { // @@protoc_insertion_point(serialize_to_array_start:pg_query.ScanToken) ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; // int32 start = 1; if (this->start() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_start(), target); } // int32 end = 2; if (this->end() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_end(), target); } // .pg_query.Token token = 4; if (this->token() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 4, this->_internal_token(), target); } // .pg_query.KeywordKind keyword_kind = 5; if (this->keyword_kind() != 0) { target = stream->EnsureSpace(target); target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray( 5, this->_internal_keyword_kind(), target); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); } // @@protoc_insertion_point(serialize_to_array_end:pg_query.ScanToken) return target; } size_t ScanToken::ByteSizeLong() const { // @@protoc_insertion_point(message_byte_size_start:pg_query.ScanToken) size_t total_size = 0; ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; // Prevent compiler warnings about cached_has_bits being unused (void) cached_has_bits; // int32 start = 1; if (this->start() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_start()); } // int32 end = 2; if (this->end() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( this->_internal_end()); } // .pg_query.Token token = 4; if (this->token() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_token()); } // .pg_query.KeywordKind keyword_kind = 5; if (this->keyword_kind() != 0) { total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_keyword_kind()); } if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); } int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; } void ScanToken::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_merge_from_start:pg_query.ScanToken) GOOGLE_DCHECK_NE(&from, this); const ScanToken* source = ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated( &from); if (source == nullptr) { // @@protoc_insertion_point(generalized_merge_from_cast_fail:pg_query.ScanToken) ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this); } else { // @@protoc_insertion_point(generalized_merge_from_cast_success:pg_query.ScanToken) MergeFrom(*source); } } void ScanToken::MergeFrom(const ScanToken& from) { // @@protoc_insertion_point(class_specific_merge_from_start:pg_query.ScanToken) GOOGLE_DCHECK_NE(&from, this); _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0; (void) cached_has_bits; if (from.start() != 0) { _internal_set_start(from._internal_start()); } if (from.end() != 0) { _internal_set_end(from._internal_end()); } if (from.token() != 0) { _internal_set_token(from._internal_token()); } if (from.keyword_kind() != 0) { _internal_set_keyword_kind(from._internal_keyword_kind()); } } void ScanToken::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { // @@protoc_insertion_point(generalized_copy_from_start:pg_query.ScanToken) if (&from == this) return; Clear(); MergeFrom(from); } void ScanToken::CopyFrom(const ScanToken& from) { // @@protoc_insertion_point(class_specific_copy_from_start:pg_query.ScanToken) if (&from == this) return; Clear(); MergeFrom(from); } bool ScanToken::IsInitialized() const { return true; } void ScanToken::InternalSwap(ScanToken* other) { using std::swap; _internal_metadata_.Swap<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(&other->_internal_metadata_); ::PROTOBUF_NAMESPACE_ID::internal::memswap< PROTOBUF_FIELD_OFFSET(ScanToken, keyword_kind_) + sizeof(ScanToken::keyword_kind_) - PROTOBUF_FIELD_OFFSET(ScanToken, start_)>( reinterpret_cast(&start_), reinterpret_cast(&other->start_)); } ::PROTOBUF_NAMESPACE_ID::Metadata ScanToken::GetMetadata() const { return GetMetadataStatic(); } // @@protoc_insertion_point(namespace_scope) } // namespace pg_query PROTOBUF_NAMESPACE_OPEN template<> PROTOBUF_NOINLINE ::pg_query::ParseResult* Arena::CreateMaybeMessage< ::pg_query::ParseResult >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ParseResult >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ScanResult* Arena::CreateMaybeMessage< ::pg_query::ScanResult >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ScanResult >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Node* Arena::CreateMaybeMessage< ::pg_query::Node >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Node >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Integer* Arena::CreateMaybeMessage< ::pg_query::Integer >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Integer >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Float* Arena::CreateMaybeMessage< ::pg_query::Float >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Float >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::String* Arena::CreateMaybeMessage< ::pg_query::String >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::String >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::BitString* Arena::CreateMaybeMessage< ::pg_query::BitString >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::BitString >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Null* Arena::CreateMaybeMessage< ::pg_query::Null >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Null >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::List* Arena::CreateMaybeMessage< ::pg_query::List >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::List >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::OidList* Arena::CreateMaybeMessage< ::pg_query::OidList >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::OidList >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::IntList* Arena::CreateMaybeMessage< ::pg_query::IntList >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::IntList >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Bitmapset* Arena::CreateMaybeMessage< ::pg_query::Bitmapset >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Bitmapset >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Alias* Arena::CreateMaybeMessage< ::pg_query::Alias >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Alias >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RangeVar* Arena::CreateMaybeMessage< ::pg_query::RangeVar >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RangeVar >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::TableFunc* Arena::CreateMaybeMessage< ::pg_query::TableFunc >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::TableFunc >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Expr* Arena::CreateMaybeMessage< ::pg_query::Expr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Expr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Var* Arena::CreateMaybeMessage< ::pg_query::Var >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Var >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Param* Arena::CreateMaybeMessage< ::pg_query::Param >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Param >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Aggref* Arena::CreateMaybeMessage< ::pg_query::Aggref >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Aggref >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::GroupingFunc* Arena::CreateMaybeMessage< ::pg_query::GroupingFunc >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::GroupingFunc >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::WindowFunc* Arena::CreateMaybeMessage< ::pg_query::WindowFunc >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::WindowFunc >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::SubscriptingRef* Arena::CreateMaybeMessage< ::pg_query::SubscriptingRef >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::SubscriptingRef >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::FuncExpr* Arena::CreateMaybeMessage< ::pg_query::FuncExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::FuncExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::NamedArgExpr* Arena::CreateMaybeMessage< ::pg_query::NamedArgExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::NamedArgExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::OpExpr* Arena::CreateMaybeMessage< ::pg_query::OpExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::OpExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DistinctExpr* Arena::CreateMaybeMessage< ::pg_query::DistinctExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DistinctExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::NullIfExpr* Arena::CreateMaybeMessage< ::pg_query::NullIfExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::NullIfExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ScalarArrayOpExpr* Arena::CreateMaybeMessage< ::pg_query::ScalarArrayOpExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ScalarArrayOpExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::BoolExpr* Arena::CreateMaybeMessage< ::pg_query::BoolExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::BoolExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::SubLink* Arena::CreateMaybeMessage< ::pg_query::SubLink >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::SubLink >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::SubPlan* Arena::CreateMaybeMessage< ::pg_query::SubPlan >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::SubPlan >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlternativeSubPlan* Arena::CreateMaybeMessage< ::pg_query::AlternativeSubPlan >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlternativeSubPlan >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::FieldSelect* Arena::CreateMaybeMessage< ::pg_query::FieldSelect >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::FieldSelect >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::FieldStore* Arena::CreateMaybeMessage< ::pg_query::FieldStore >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::FieldStore >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RelabelType* Arena::CreateMaybeMessage< ::pg_query::RelabelType >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RelabelType >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CoerceViaIO* Arena::CreateMaybeMessage< ::pg_query::CoerceViaIO >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CoerceViaIO >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ArrayCoerceExpr* Arena::CreateMaybeMessage< ::pg_query::ArrayCoerceExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ArrayCoerceExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ConvertRowtypeExpr* Arena::CreateMaybeMessage< ::pg_query::ConvertRowtypeExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ConvertRowtypeExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CollateExpr* Arena::CreateMaybeMessage< ::pg_query::CollateExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CollateExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CaseExpr* Arena::CreateMaybeMessage< ::pg_query::CaseExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CaseExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CaseWhen* Arena::CreateMaybeMessage< ::pg_query::CaseWhen >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CaseWhen >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CaseTestExpr* Arena::CreateMaybeMessage< ::pg_query::CaseTestExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CaseTestExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ArrayExpr* Arena::CreateMaybeMessage< ::pg_query::ArrayExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ArrayExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RowExpr* Arena::CreateMaybeMessage< ::pg_query::RowExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RowExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RowCompareExpr* Arena::CreateMaybeMessage< ::pg_query::RowCompareExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RowCompareExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CoalesceExpr* Arena::CreateMaybeMessage< ::pg_query::CoalesceExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CoalesceExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::MinMaxExpr* Arena::CreateMaybeMessage< ::pg_query::MinMaxExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::MinMaxExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::SQLValueFunction* Arena::CreateMaybeMessage< ::pg_query::SQLValueFunction >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::SQLValueFunction >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::XmlExpr* Arena::CreateMaybeMessage< ::pg_query::XmlExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::XmlExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::NullTest* Arena::CreateMaybeMessage< ::pg_query::NullTest >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::NullTest >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::BooleanTest* Arena::CreateMaybeMessage< ::pg_query::BooleanTest >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::BooleanTest >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CoerceToDomain* Arena::CreateMaybeMessage< ::pg_query::CoerceToDomain >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CoerceToDomain >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CoerceToDomainValue* Arena::CreateMaybeMessage< ::pg_query::CoerceToDomainValue >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CoerceToDomainValue >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::SetToDefault* Arena::CreateMaybeMessage< ::pg_query::SetToDefault >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::SetToDefault >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CurrentOfExpr* Arena::CreateMaybeMessage< ::pg_query::CurrentOfExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CurrentOfExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::NextValueExpr* Arena::CreateMaybeMessage< ::pg_query::NextValueExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::NextValueExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::InferenceElem* Arena::CreateMaybeMessage< ::pg_query::InferenceElem >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::InferenceElem >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::TargetEntry* Arena::CreateMaybeMessage< ::pg_query::TargetEntry >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::TargetEntry >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RangeTblRef* Arena::CreateMaybeMessage< ::pg_query::RangeTblRef >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RangeTblRef >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::JoinExpr* Arena::CreateMaybeMessage< ::pg_query::JoinExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::JoinExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::FromExpr* Arena::CreateMaybeMessage< ::pg_query::FromExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::FromExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::OnConflictExpr* Arena::CreateMaybeMessage< ::pg_query::OnConflictExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::OnConflictExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::IntoClause* Arena::CreateMaybeMessage< ::pg_query::IntoClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::IntoClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RawStmt* Arena::CreateMaybeMessage< ::pg_query::RawStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RawStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Query* Arena::CreateMaybeMessage< ::pg_query::Query >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Query >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::InsertStmt* Arena::CreateMaybeMessage< ::pg_query::InsertStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::InsertStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DeleteStmt* Arena::CreateMaybeMessage< ::pg_query::DeleteStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DeleteStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::UpdateStmt* Arena::CreateMaybeMessage< ::pg_query::UpdateStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::UpdateStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::SelectStmt* Arena::CreateMaybeMessage< ::pg_query::SelectStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::SelectStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterTableStmt* Arena::CreateMaybeMessage< ::pg_query::AlterTableStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterTableStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterTableCmd* Arena::CreateMaybeMessage< ::pg_query::AlterTableCmd >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterTableCmd >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterDomainStmt* Arena::CreateMaybeMessage< ::pg_query::AlterDomainStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterDomainStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::SetOperationStmt* Arena::CreateMaybeMessage< ::pg_query::SetOperationStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::SetOperationStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::GrantStmt* Arena::CreateMaybeMessage< ::pg_query::GrantStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::GrantStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::GrantRoleStmt* Arena::CreateMaybeMessage< ::pg_query::GrantRoleStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::GrantRoleStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterDefaultPrivilegesStmt* Arena::CreateMaybeMessage< ::pg_query::AlterDefaultPrivilegesStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterDefaultPrivilegesStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ClosePortalStmt* Arena::CreateMaybeMessage< ::pg_query::ClosePortalStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ClosePortalStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ClusterStmt* Arena::CreateMaybeMessage< ::pg_query::ClusterStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ClusterStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CopyStmt* Arena::CreateMaybeMessage< ::pg_query::CopyStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CopyStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateStmt* Arena::CreateMaybeMessage< ::pg_query::CreateStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DefineStmt* Arena::CreateMaybeMessage< ::pg_query::DefineStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DefineStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DropStmt* Arena::CreateMaybeMessage< ::pg_query::DropStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DropStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::TruncateStmt* Arena::CreateMaybeMessage< ::pg_query::TruncateStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::TruncateStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CommentStmt* Arena::CreateMaybeMessage< ::pg_query::CommentStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CommentStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::FetchStmt* Arena::CreateMaybeMessage< ::pg_query::FetchStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::FetchStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::IndexStmt* Arena::CreateMaybeMessage< ::pg_query::IndexStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::IndexStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateFunctionStmt* Arena::CreateMaybeMessage< ::pg_query::CreateFunctionStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateFunctionStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterFunctionStmt* Arena::CreateMaybeMessage< ::pg_query::AlterFunctionStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterFunctionStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DoStmt* Arena::CreateMaybeMessage< ::pg_query::DoStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DoStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RenameStmt* Arena::CreateMaybeMessage< ::pg_query::RenameStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RenameStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RuleStmt* Arena::CreateMaybeMessage< ::pg_query::RuleStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RuleStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::NotifyStmt* Arena::CreateMaybeMessage< ::pg_query::NotifyStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::NotifyStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ListenStmt* Arena::CreateMaybeMessage< ::pg_query::ListenStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ListenStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::UnlistenStmt* Arena::CreateMaybeMessage< ::pg_query::UnlistenStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::UnlistenStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::TransactionStmt* Arena::CreateMaybeMessage< ::pg_query::TransactionStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::TransactionStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ViewStmt* Arena::CreateMaybeMessage< ::pg_query::ViewStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ViewStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::LoadStmt* Arena::CreateMaybeMessage< ::pg_query::LoadStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::LoadStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateDomainStmt* Arena::CreateMaybeMessage< ::pg_query::CreateDomainStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateDomainStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreatedbStmt* Arena::CreateMaybeMessage< ::pg_query::CreatedbStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreatedbStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DropdbStmt* Arena::CreateMaybeMessage< ::pg_query::DropdbStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DropdbStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::VacuumStmt* Arena::CreateMaybeMessage< ::pg_query::VacuumStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::VacuumStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ExplainStmt* Arena::CreateMaybeMessage< ::pg_query::ExplainStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ExplainStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateTableAsStmt* Arena::CreateMaybeMessage< ::pg_query::CreateTableAsStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateTableAsStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateSeqStmt* Arena::CreateMaybeMessage< ::pg_query::CreateSeqStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateSeqStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterSeqStmt* Arena::CreateMaybeMessage< ::pg_query::AlterSeqStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterSeqStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::VariableSetStmt* Arena::CreateMaybeMessage< ::pg_query::VariableSetStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::VariableSetStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::VariableShowStmt* Arena::CreateMaybeMessage< ::pg_query::VariableShowStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::VariableShowStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DiscardStmt* Arena::CreateMaybeMessage< ::pg_query::DiscardStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DiscardStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateTrigStmt* Arena::CreateMaybeMessage< ::pg_query::CreateTrigStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateTrigStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreatePLangStmt* Arena::CreateMaybeMessage< ::pg_query::CreatePLangStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreatePLangStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateRoleStmt* Arena::CreateMaybeMessage< ::pg_query::CreateRoleStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateRoleStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterRoleStmt* Arena::CreateMaybeMessage< ::pg_query::AlterRoleStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterRoleStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DropRoleStmt* Arena::CreateMaybeMessage< ::pg_query::DropRoleStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DropRoleStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::LockStmt* Arena::CreateMaybeMessage< ::pg_query::LockStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::LockStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ConstraintsSetStmt* Arena::CreateMaybeMessage< ::pg_query::ConstraintsSetStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ConstraintsSetStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ReindexStmt* Arena::CreateMaybeMessage< ::pg_query::ReindexStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ReindexStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CheckPointStmt* Arena::CreateMaybeMessage< ::pg_query::CheckPointStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CheckPointStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateSchemaStmt* Arena::CreateMaybeMessage< ::pg_query::CreateSchemaStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateSchemaStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterDatabaseStmt* Arena::CreateMaybeMessage< ::pg_query::AlterDatabaseStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterDatabaseStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterDatabaseSetStmt* Arena::CreateMaybeMessage< ::pg_query::AlterDatabaseSetStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterDatabaseSetStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterRoleSetStmt* Arena::CreateMaybeMessage< ::pg_query::AlterRoleSetStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterRoleSetStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateConversionStmt* Arena::CreateMaybeMessage< ::pg_query::CreateConversionStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateConversionStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateCastStmt* Arena::CreateMaybeMessage< ::pg_query::CreateCastStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateCastStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateOpClassStmt* Arena::CreateMaybeMessage< ::pg_query::CreateOpClassStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateOpClassStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateOpFamilyStmt* Arena::CreateMaybeMessage< ::pg_query::CreateOpFamilyStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateOpFamilyStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterOpFamilyStmt* Arena::CreateMaybeMessage< ::pg_query::AlterOpFamilyStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterOpFamilyStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::PrepareStmt* Arena::CreateMaybeMessage< ::pg_query::PrepareStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::PrepareStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ExecuteStmt* Arena::CreateMaybeMessage< ::pg_query::ExecuteStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ExecuteStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DeallocateStmt* Arena::CreateMaybeMessage< ::pg_query::DeallocateStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DeallocateStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DeclareCursorStmt* Arena::CreateMaybeMessage< ::pg_query::DeclareCursorStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DeclareCursorStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateTableSpaceStmt* Arena::CreateMaybeMessage< ::pg_query::CreateTableSpaceStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateTableSpaceStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DropTableSpaceStmt* Arena::CreateMaybeMessage< ::pg_query::DropTableSpaceStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DropTableSpaceStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterObjectDependsStmt* Arena::CreateMaybeMessage< ::pg_query::AlterObjectDependsStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterObjectDependsStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterObjectSchemaStmt* Arena::CreateMaybeMessage< ::pg_query::AlterObjectSchemaStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterObjectSchemaStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterOwnerStmt* Arena::CreateMaybeMessage< ::pg_query::AlterOwnerStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterOwnerStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterOperatorStmt* Arena::CreateMaybeMessage< ::pg_query::AlterOperatorStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterOperatorStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterTypeStmt* Arena::CreateMaybeMessage< ::pg_query::AlterTypeStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterTypeStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DropOwnedStmt* Arena::CreateMaybeMessage< ::pg_query::DropOwnedStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DropOwnedStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ReassignOwnedStmt* Arena::CreateMaybeMessage< ::pg_query::ReassignOwnedStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ReassignOwnedStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CompositeTypeStmt* Arena::CreateMaybeMessage< ::pg_query::CompositeTypeStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CompositeTypeStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateEnumStmt* Arena::CreateMaybeMessage< ::pg_query::CreateEnumStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateEnumStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateRangeStmt* Arena::CreateMaybeMessage< ::pg_query::CreateRangeStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateRangeStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterEnumStmt* Arena::CreateMaybeMessage< ::pg_query::AlterEnumStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterEnumStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterTSDictionaryStmt* Arena::CreateMaybeMessage< ::pg_query::AlterTSDictionaryStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterTSDictionaryStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterTSConfigurationStmt* Arena::CreateMaybeMessage< ::pg_query::AlterTSConfigurationStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterTSConfigurationStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateFdwStmt* Arena::CreateMaybeMessage< ::pg_query::CreateFdwStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateFdwStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterFdwStmt* Arena::CreateMaybeMessage< ::pg_query::AlterFdwStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterFdwStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateForeignServerStmt* Arena::CreateMaybeMessage< ::pg_query::CreateForeignServerStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateForeignServerStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterForeignServerStmt* Arena::CreateMaybeMessage< ::pg_query::AlterForeignServerStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterForeignServerStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateUserMappingStmt* Arena::CreateMaybeMessage< ::pg_query::CreateUserMappingStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateUserMappingStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterUserMappingStmt* Arena::CreateMaybeMessage< ::pg_query::AlterUserMappingStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterUserMappingStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DropUserMappingStmt* Arena::CreateMaybeMessage< ::pg_query::DropUserMappingStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DropUserMappingStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterTableSpaceOptionsStmt* Arena::CreateMaybeMessage< ::pg_query::AlterTableSpaceOptionsStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterTableSpaceOptionsStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterTableMoveAllStmt* Arena::CreateMaybeMessage< ::pg_query::AlterTableMoveAllStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterTableMoveAllStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::SecLabelStmt* Arena::CreateMaybeMessage< ::pg_query::SecLabelStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::SecLabelStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateForeignTableStmt* Arena::CreateMaybeMessage< ::pg_query::CreateForeignTableStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateForeignTableStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ImportForeignSchemaStmt* Arena::CreateMaybeMessage< ::pg_query::ImportForeignSchemaStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ImportForeignSchemaStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateExtensionStmt* Arena::CreateMaybeMessage< ::pg_query::CreateExtensionStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateExtensionStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterExtensionStmt* Arena::CreateMaybeMessage< ::pg_query::AlterExtensionStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterExtensionStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterExtensionContentsStmt* Arena::CreateMaybeMessage< ::pg_query::AlterExtensionContentsStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterExtensionContentsStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateEventTrigStmt* Arena::CreateMaybeMessage< ::pg_query::CreateEventTrigStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateEventTrigStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterEventTrigStmt* Arena::CreateMaybeMessage< ::pg_query::AlterEventTrigStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterEventTrigStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RefreshMatViewStmt* Arena::CreateMaybeMessage< ::pg_query::RefreshMatViewStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RefreshMatViewStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ReplicaIdentityStmt* Arena::CreateMaybeMessage< ::pg_query::ReplicaIdentityStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ReplicaIdentityStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterSystemStmt* Arena::CreateMaybeMessage< ::pg_query::AlterSystemStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterSystemStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreatePolicyStmt* Arena::CreateMaybeMessage< ::pg_query::CreatePolicyStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreatePolicyStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterPolicyStmt* Arena::CreateMaybeMessage< ::pg_query::AlterPolicyStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterPolicyStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateTransformStmt* Arena::CreateMaybeMessage< ::pg_query::CreateTransformStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateTransformStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateAmStmt* Arena::CreateMaybeMessage< ::pg_query::CreateAmStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateAmStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreatePublicationStmt* Arena::CreateMaybeMessage< ::pg_query::CreatePublicationStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreatePublicationStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterPublicationStmt* Arena::CreateMaybeMessage< ::pg_query::AlterPublicationStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterPublicationStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateSubscriptionStmt* Arena::CreateMaybeMessage< ::pg_query::CreateSubscriptionStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateSubscriptionStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterSubscriptionStmt* Arena::CreateMaybeMessage< ::pg_query::AlterSubscriptionStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterSubscriptionStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DropSubscriptionStmt* Arena::CreateMaybeMessage< ::pg_query::DropSubscriptionStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DropSubscriptionStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateStatsStmt* Arena::CreateMaybeMessage< ::pg_query::CreateStatsStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateStatsStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterCollationStmt* Arena::CreateMaybeMessage< ::pg_query::AlterCollationStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterCollationStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CallStmt* Arena::CreateMaybeMessage< ::pg_query::CallStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CallStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AlterStatsStmt* Arena::CreateMaybeMessage< ::pg_query::AlterStatsStmt >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AlterStatsStmt >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::A_Expr* Arena::CreateMaybeMessage< ::pg_query::A_Expr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::A_Expr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ColumnRef* Arena::CreateMaybeMessage< ::pg_query::ColumnRef >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ColumnRef >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ParamRef* Arena::CreateMaybeMessage< ::pg_query::ParamRef >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ParamRef >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::A_Const* Arena::CreateMaybeMessage< ::pg_query::A_Const >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::A_Const >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::FuncCall* Arena::CreateMaybeMessage< ::pg_query::FuncCall >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::FuncCall >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::A_Star* Arena::CreateMaybeMessage< ::pg_query::A_Star >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::A_Star >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::A_Indices* Arena::CreateMaybeMessage< ::pg_query::A_Indices >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::A_Indices >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::A_Indirection* Arena::CreateMaybeMessage< ::pg_query::A_Indirection >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::A_Indirection >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::A_ArrayExpr* Arena::CreateMaybeMessage< ::pg_query::A_ArrayExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::A_ArrayExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ResTarget* Arena::CreateMaybeMessage< ::pg_query::ResTarget >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ResTarget >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::MultiAssignRef* Arena::CreateMaybeMessage< ::pg_query::MultiAssignRef >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::MultiAssignRef >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::TypeCast* Arena::CreateMaybeMessage< ::pg_query::TypeCast >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::TypeCast >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CollateClause* Arena::CreateMaybeMessage< ::pg_query::CollateClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CollateClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::SortBy* Arena::CreateMaybeMessage< ::pg_query::SortBy >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::SortBy >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::WindowDef* Arena::CreateMaybeMessage< ::pg_query::WindowDef >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::WindowDef >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RangeSubselect* Arena::CreateMaybeMessage< ::pg_query::RangeSubselect >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RangeSubselect >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RangeFunction* Arena::CreateMaybeMessage< ::pg_query::RangeFunction >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RangeFunction >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RangeTableSample* Arena::CreateMaybeMessage< ::pg_query::RangeTableSample >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RangeTableSample >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RangeTableFunc* Arena::CreateMaybeMessage< ::pg_query::RangeTableFunc >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RangeTableFunc >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RangeTableFuncCol* Arena::CreateMaybeMessage< ::pg_query::RangeTableFuncCol >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RangeTableFuncCol >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::TypeName* Arena::CreateMaybeMessage< ::pg_query::TypeName >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::TypeName >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ColumnDef* Arena::CreateMaybeMessage< ::pg_query::ColumnDef >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ColumnDef >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::IndexElem* Arena::CreateMaybeMessage< ::pg_query::IndexElem >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::IndexElem >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::Constraint* Arena::CreateMaybeMessage< ::pg_query::Constraint >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::Constraint >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::DefElem* Arena::CreateMaybeMessage< ::pg_query::DefElem >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::DefElem >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RangeTblEntry* Arena::CreateMaybeMessage< ::pg_query::RangeTblEntry >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RangeTblEntry >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RangeTblFunction* Arena::CreateMaybeMessage< ::pg_query::RangeTblFunction >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RangeTblFunction >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::TableSampleClause* Arena::CreateMaybeMessage< ::pg_query::TableSampleClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::TableSampleClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::WithCheckOption* Arena::CreateMaybeMessage< ::pg_query::WithCheckOption >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::WithCheckOption >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::SortGroupClause* Arena::CreateMaybeMessage< ::pg_query::SortGroupClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::SortGroupClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::GroupingSet* Arena::CreateMaybeMessage< ::pg_query::GroupingSet >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::GroupingSet >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::WindowClause* Arena::CreateMaybeMessage< ::pg_query::WindowClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::WindowClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ObjectWithArgs* Arena::CreateMaybeMessage< ::pg_query::ObjectWithArgs >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ObjectWithArgs >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::AccessPriv* Arena::CreateMaybeMessage< ::pg_query::AccessPriv >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::AccessPriv >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CreateOpClassItem* Arena::CreateMaybeMessage< ::pg_query::CreateOpClassItem >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CreateOpClassItem >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::TableLikeClause* Arena::CreateMaybeMessage< ::pg_query::TableLikeClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::TableLikeClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::FunctionParameter* Arena::CreateMaybeMessage< ::pg_query::FunctionParameter >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::FunctionParameter >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::LockingClause* Arena::CreateMaybeMessage< ::pg_query::LockingClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::LockingClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RowMarkClause* Arena::CreateMaybeMessage< ::pg_query::RowMarkClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RowMarkClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::XmlSerialize* Arena::CreateMaybeMessage< ::pg_query::XmlSerialize >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::XmlSerialize >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::WithClause* Arena::CreateMaybeMessage< ::pg_query::WithClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::WithClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::InferClause* Arena::CreateMaybeMessage< ::pg_query::InferClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::InferClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::OnConflictClause* Arena::CreateMaybeMessage< ::pg_query::OnConflictClause >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::OnConflictClause >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CommonTableExpr* Arena::CreateMaybeMessage< ::pg_query::CommonTableExpr >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CommonTableExpr >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::RoleSpec* Arena::CreateMaybeMessage< ::pg_query::RoleSpec >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::RoleSpec >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::TriggerTransition* Arena::CreateMaybeMessage< ::pg_query::TriggerTransition >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::TriggerTransition >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::PartitionElem* Arena::CreateMaybeMessage< ::pg_query::PartitionElem >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::PartitionElem >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::PartitionSpec* Arena::CreateMaybeMessage< ::pg_query::PartitionSpec >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::PartitionSpec >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::PartitionBoundSpec* Arena::CreateMaybeMessage< ::pg_query::PartitionBoundSpec >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::PartitionBoundSpec >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::PartitionRangeDatum* Arena::CreateMaybeMessage< ::pg_query::PartitionRangeDatum >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::PartitionRangeDatum >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::PartitionCmd* Arena::CreateMaybeMessage< ::pg_query::PartitionCmd >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::PartitionCmd >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::VacuumRelation* Arena::CreateMaybeMessage< ::pg_query::VacuumRelation >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::VacuumRelation >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::InlineCodeBlock* Arena::CreateMaybeMessage< ::pg_query::InlineCodeBlock >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::InlineCodeBlock >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::CallContext* Arena::CreateMaybeMessage< ::pg_query::CallContext >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::CallContext >(arena); } template<> PROTOBUF_NOINLINE ::pg_query::ScanToken* Arena::CreateMaybeMessage< ::pg_query::ScanToken >(Arena* arena) { return Arena::CreateMessageInternal< ::pg_query::ScanToken >(arena); } PROTOBUF_NAMESPACE_CLOSE // @@protoc_insertion_point(global_scope) #include libpg_query-13-2.1.0/protobuf/pg_query.pb.h000066400000000000000000211003631413137616400205350ustar00rootroot00000000000000// Generated by the protocol buffer compiler. DO NOT EDIT! // source: protobuf/pg_query.proto #ifndef GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto #define GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto #include #include #include #if PROTOBUF_VERSION < 3014000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif #if 3014000 < PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include #include #include #include #include #include #include #include #include #include // IWYU pragma: export #include // IWYU pragma: export #include #include // @@protoc_insertion_point(includes) #include #define PROTOBUF_INTERNAL_EXPORT_protobuf_2fpg_5fquery_2eproto PROTOBUF_NAMESPACE_OPEN namespace internal { class AnyMetadata; } // namespace internal PROTOBUF_NAMESPACE_CLOSE // Internal implementation detail -- do not use these members. struct TableStruct_protobuf_2fpg_5fquery_2eproto { static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[233] PROTOBUF_SECTION_VARIABLE(protodesc_cold); static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[]; static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[]; static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[]; }; extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_protobuf_2fpg_5fquery_2eproto; namespace pg_query { class A_ArrayExpr; class A_ArrayExprDefaultTypeInternal; extern A_ArrayExprDefaultTypeInternal _A_ArrayExpr_default_instance_; class A_Const; class A_ConstDefaultTypeInternal; extern A_ConstDefaultTypeInternal _A_Const_default_instance_; class A_Expr; class A_ExprDefaultTypeInternal; extern A_ExprDefaultTypeInternal _A_Expr_default_instance_; class A_Indices; class A_IndicesDefaultTypeInternal; extern A_IndicesDefaultTypeInternal _A_Indices_default_instance_; class A_Indirection; class A_IndirectionDefaultTypeInternal; extern A_IndirectionDefaultTypeInternal _A_Indirection_default_instance_; class A_Star; class A_StarDefaultTypeInternal; extern A_StarDefaultTypeInternal _A_Star_default_instance_; class AccessPriv; class AccessPrivDefaultTypeInternal; extern AccessPrivDefaultTypeInternal _AccessPriv_default_instance_; class Aggref; class AggrefDefaultTypeInternal; extern AggrefDefaultTypeInternal _Aggref_default_instance_; class Alias; class AliasDefaultTypeInternal; extern AliasDefaultTypeInternal _Alias_default_instance_; class AlterCollationStmt; class AlterCollationStmtDefaultTypeInternal; extern AlterCollationStmtDefaultTypeInternal _AlterCollationStmt_default_instance_; class AlterDatabaseSetStmt; class AlterDatabaseSetStmtDefaultTypeInternal; extern AlterDatabaseSetStmtDefaultTypeInternal _AlterDatabaseSetStmt_default_instance_; class AlterDatabaseStmt; class AlterDatabaseStmtDefaultTypeInternal; extern AlterDatabaseStmtDefaultTypeInternal _AlterDatabaseStmt_default_instance_; class AlterDefaultPrivilegesStmt; class AlterDefaultPrivilegesStmtDefaultTypeInternal; extern AlterDefaultPrivilegesStmtDefaultTypeInternal _AlterDefaultPrivilegesStmt_default_instance_; class AlterDomainStmt; class AlterDomainStmtDefaultTypeInternal; extern AlterDomainStmtDefaultTypeInternal _AlterDomainStmt_default_instance_; class AlterEnumStmt; class AlterEnumStmtDefaultTypeInternal; extern AlterEnumStmtDefaultTypeInternal _AlterEnumStmt_default_instance_; class AlterEventTrigStmt; class AlterEventTrigStmtDefaultTypeInternal; extern AlterEventTrigStmtDefaultTypeInternal _AlterEventTrigStmt_default_instance_; class AlterExtensionContentsStmt; class AlterExtensionContentsStmtDefaultTypeInternal; extern AlterExtensionContentsStmtDefaultTypeInternal _AlterExtensionContentsStmt_default_instance_; class AlterExtensionStmt; class AlterExtensionStmtDefaultTypeInternal; extern AlterExtensionStmtDefaultTypeInternal _AlterExtensionStmt_default_instance_; class AlterFdwStmt; class AlterFdwStmtDefaultTypeInternal; extern AlterFdwStmtDefaultTypeInternal _AlterFdwStmt_default_instance_; class AlterForeignServerStmt; class AlterForeignServerStmtDefaultTypeInternal; extern AlterForeignServerStmtDefaultTypeInternal _AlterForeignServerStmt_default_instance_; class AlterFunctionStmt; class AlterFunctionStmtDefaultTypeInternal; extern AlterFunctionStmtDefaultTypeInternal _AlterFunctionStmt_default_instance_; class AlterObjectDependsStmt; class AlterObjectDependsStmtDefaultTypeInternal; extern AlterObjectDependsStmtDefaultTypeInternal _AlterObjectDependsStmt_default_instance_; class AlterObjectSchemaStmt; class AlterObjectSchemaStmtDefaultTypeInternal; extern AlterObjectSchemaStmtDefaultTypeInternal _AlterObjectSchemaStmt_default_instance_; class AlterOpFamilyStmt; class AlterOpFamilyStmtDefaultTypeInternal; extern AlterOpFamilyStmtDefaultTypeInternal _AlterOpFamilyStmt_default_instance_; class AlterOperatorStmt; class AlterOperatorStmtDefaultTypeInternal; extern AlterOperatorStmtDefaultTypeInternal _AlterOperatorStmt_default_instance_; class AlterOwnerStmt; class AlterOwnerStmtDefaultTypeInternal; extern AlterOwnerStmtDefaultTypeInternal _AlterOwnerStmt_default_instance_; class AlterPolicyStmt; class AlterPolicyStmtDefaultTypeInternal; extern AlterPolicyStmtDefaultTypeInternal _AlterPolicyStmt_default_instance_; class AlterPublicationStmt; class AlterPublicationStmtDefaultTypeInternal; extern AlterPublicationStmtDefaultTypeInternal _AlterPublicationStmt_default_instance_; class AlterRoleSetStmt; class AlterRoleSetStmtDefaultTypeInternal; extern AlterRoleSetStmtDefaultTypeInternal _AlterRoleSetStmt_default_instance_; class AlterRoleStmt; class AlterRoleStmtDefaultTypeInternal; extern AlterRoleStmtDefaultTypeInternal _AlterRoleStmt_default_instance_; class AlterSeqStmt; class AlterSeqStmtDefaultTypeInternal; extern AlterSeqStmtDefaultTypeInternal _AlterSeqStmt_default_instance_; class AlterStatsStmt; class AlterStatsStmtDefaultTypeInternal; extern AlterStatsStmtDefaultTypeInternal _AlterStatsStmt_default_instance_; class AlterSubscriptionStmt; class AlterSubscriptionStmtDefaultTypeInternal; extern AlterSubscriptionStmtDefaultTypeInternal _AlterSubscriptionStmt_default_instance_; class AlterSystemStmt; class AlterSystemStmtDefaultTypeInternal; extern AlterSystemStmtDefaultTypeInternal _AlterSystemStmt_default_instance_; class AlterTSConfigurationStmt; class AlterTSConfigurationStmtDefaultTypeInternal; extern AlterTSConfigurationStmtDefaultTypeInternal _AlterTSConfigurationStmt_default_instance_; class AlterTSDictionaryStmt; class AlterTSDictionaryStmtDefaultTypeInternal; extern AlterTSDictionaryStmtDefaultTypeInternal _AlterTSDictionaryStmt_default_instance_; class AlterTableCmd; class AlterTableCmdDefaultTypeInternal; extern AlterTableCmdDefaultTypeInternal _AlterTableCmd_default_instance_; class AlterTableMoveAllStmt; class AlterTableMoveAllStmtDefaultTypeInternal; extern AlterTableMoveAllStmtDefaultTypeInternal _AlterTableMoveAllStmt_default_instance_; class AlterTableSpaceOptionsStmt; class AlterTableSpaceOptionsStmtDefaultTypeInternal; extern AlterTableSpaceOptionsStmtDefaultTypeInternal _AlterTableSpaceOptionsStmt_default_instance_; class AlterTableStmt; class AlterTableStmtDefaultTypeInternal; extern AlterTableStmtDefaultTypeInternal _AlterTableStmt_default_instance_; class AlterTypeStmt; class AlterTypeStmtDefaultTypeInternal; extern AlterTypeStmtDefaultTypeInternal _AlterTypeStmt_default_instance_; class AlterUserMappingStmt; class AlterUserMappingStmtDefaultTypeInternal; extern AlterUserMappingStmtDefaultTypeInternal _AlterUserMappingStmt_default_instance_; class AlternativeSubPlan; class AlternativeSubPlanDefaultTypeInternal; extern AlternativeSubPlanDefaultTypeInternal _AlternativeSubPlan_default_instance_; class ArrayCoerceExpr; class ArrayCoerceExprDefaultTypeInternal; extern ArrayCoerceExprDefaultTypeInternal _ArrayCoerceExpr_default_instance_; class ArrayExpr; class ArrayExprDefaultTypeInternal; extern ArrayExprDefaultTypeInternal _ArrayExpr_default_instance_; class BitString; class BitStringDefaultTypeInternal; extern BitStringDefaultTypeInternal _BitString_default_instance_; class Bitmapset; class BitmapsetDefaultTypeInternal; extern BitmapsetDefaultTypeInternal _Bitmapset_default_instance_; class BoolExpr; class BoolExprDefaultTypeInternal; extern BoolExprDefaultTypeInternal _BoolExpr_default_instance_; class BooleanTest; class BooleanTestDefaultTypeInternal; extern BooleanTestDefaultTypeInternal _BooleanTest_default_instance_; class CallContext; class CallContextDefaultTypeInternal; extern CallContextDefaultTypeInternal _CallContext_default_instance_; class CallStmt; class CallStmtDefaultTypeInternal; extern CallStmtDefaultTypeInternal _CallStmt_default_instance_; class CaseExpr; class CaseExprDefaultTypeInternal; extern CaseExprDefaultTypeInternal _CaseExpr_default_instance_; class CaseTestExpr; class CaseTestExprDefaultTypeInternal; extern CaseTestExprDefaultTypeInternal _CaseTestExpr_default_instance_; class CaseWhen; class CaseWhenDefaultTypeInternal; extern CaseWhenDefaultTypeInternal _CaseWhen_default_instance_; class CheckPointStmt; class CheckPointStmtDefaultTypeInternal; extern CheckPointStmtDefaultTypeInternal _CheckPointStmt_default_instance_; class ClosePortalStmt; class ClosePortalStmtDefaultTypeInternal; extern ClosePortalStmtDefaultTypeInternal _ClosePortalStmt_default_instance_; class ClusterStmt; class ClusterStmtDefaultTypeInternal; extern ClusterStmtDefaultTypeInternal _ClusterStmt_default_instance_; class CoalesceExpr; class CoalesceExprDefaultTypeInternal; extern CoalesceExprDefaultTypeInternal _CoalesceExpr_default_instance_; class CoerceToDomain; class CoerceToDomainDefaultTypeInternal; extern CoerceToDomainDefaultTypeInternal _CoerceToDomain_default_instance_; class CoerceToDomainValue; class CoerceToDomainValueDefaultTypeInternal; extern CoerceToDomainValueDefaultTypeInternal _CoerceToDomainValue_default_instance_; class CoerceViaIO; class CoerceViaIODefaultTypeInternal; extern CoerceViaIODefaultTypeInternal _CoerceViaIO_default_instance_; class CollateClause; class CollateClauseDefaultTypeInternal; extern CollateClauseDefaultTypeInternal _CollateClause_default_instance_; class CollateExpr; class CollateExprDefaultTypeInternal; extern CollateExprDefaultTypeInternal _CollateExpr_default_instance_; class ColumnDef; class ColumnDefDefaultTypeInternal; extern ColumnDefDefaultTypeInternal _ColumnDef_default_instance_; class ColumnRef; class ColumnRefDefaultTypeInternal; extern ColumnRefDefaultTypeInternal _ColumnRef_default_instance_; class CommentStmt; class CommentStmtDefaultTypeInternal; extern CommentStmtDefaultTypeInternal _CommentStmt_default_instance_; class CommonTableExpr; class CommonTableExprDefaultTypeInternal; extern CommonTableExprDefaultTypeInternal _CommonTableExpr_default_instance_; class CompositeTypeStmt; class CompositeTypeStmtDefaultTypeInternal; extern CompositeTypeStmtDefaultTypeInternal _CompositeTypeStmt_default_instance_; class Constraint; class ConstraintDefaultTypeInternal; extern ConstraintDefaultTypeInternal _Constraint_default_instance_; class ConstraintsSetStmt; class ConstraintsSetStmtDefaultTypeInternal; extern ConstraintsSetStmtDefaultTypeInternal _ConstraintsSetStmt_default_instance_; class ConvertRowtypeExpr; class ConvertRowtypeExprDefaultTypeInternal; extern ConvertRowtypeExprDefaultTypeInternal _ConvertRowtypeExpr_default_instance_; class CopyStmt; class CopyStmtDefaultTypeInternal; extern CopyStmtDefaultTypeInternal _CopyStmt_default_instance_; class CreateAmStmt; class CreateAmStmtDefaultTypeInternal; extern CreateAmStmtDefaultTypeInternal _CreateAmStmt_default_instance_; class CreateCastStmt; class CreateCastStmtDefaultTypeInternal; extern CreateCastStmtDefaultTypeInternal _CreateCastStmt_default_instance_; class CreateConversionStmt; class CreateConversionStmtDefaultTypeInternal; extern CreateConversionStmtDefaultTypeInternal _CreateConversionStmt_default_instance_; class CreateDomainStmt; class CreateDomainStmtDefaultTypeInternal; extern CreateDomainStmtDefaultTypeInternal _CreateDomainStmt_default_instance_; class CreateEnumStmt; class CreateEnumStmtDefaultTypeInternal; extern CreateEnumStmtDefaultTypeInternal _CreateEnumStmt_default_instance_; class CreateEventTrigStmt; class CreateEventTrigStmtDefaultTypeInternal; extern CreateEventTrigStmtDefaultTypeInternal _CreateEventTrigStmt_default_instance_; class CreateExtensionStmt; class CreateExtensionStmtDefaultTypeInternal; extern CreateExtensionStmtDefaultTypeInternal _CreateExtensionStmt_default_instance_; class CreateFdwStmt; class CreateFdwStmtDefaultTypeInternal; extern CreateFdwStmtDefaultTypeInternal _CreateFdwStmt_default_instance_; class CreateForeignServerStmt; class CreateForeignServerStmtDefaultTypeInternal; extern CreateForeignServerStmtDefaultTypeInternal _CreateForeignServerStmt_default_instance_; class CreateForeignTableStmt; class CreateForeignTableStmtDefaultTypeInternal; extern CreateForeignTableStmtDefaultTypeInternal _CreateForeignTableStmt_default_instance_; class CreateFunctionStmt; class CreateFunctionStmtDefaultTypeInternal; extern CreateFunctionStmtDefaultTypeInternal _CreateFunctionStmt_default_instance_; class CreateOpClassItem; class CreateOpClassItemDefaultTypeInternal; extern CreateOpClassItemDefaultTypeInternal _CreateOpClassItem_default_instance_; class CreateOpClassStmt; class CreateOpClassStmtDefaultTypeInternal; extern CreateOpClassStmtDefaultTypeInternal _CreateOpClassStmt_default_instance_; class CreateOpFamilyStmt; class CreateOpFamilyStmtDefaultTypeInternal; extern CreateOpFamilyStmtDefaultTypeInternal _CreateOpFamilyStmt_default_instance_; class CreatePLangStmt; class CreatePLangStmtDefaultTypeInternal; extern CreatePLangStmtDefaultTypeInternal _CreatePLangStmt_default_instance_; class CreatePolicyStmt; class CreatePolicyStmtDefaultTypeInternal; extern CreatePolicyStmtDefaultTypeInternal _CreatePolicyStmt_default_instance_; class CreatePublicationStmt; class CreatePublicationStmtDefaultTypeInternal; extern CreatePublicationStmtDefaultTypeInternal _CreatePublicationStmt_default_instance_; class CreateRangeStmt; class CreateRangeStmtDefaultTypeInternal; extern CreateRangeStmtDefaultTypeInternal _CreateRangeStmt_default_instance_; class CreateRoleStmt; class CreateRoleStmtDefaultTypeInternal; extern CreateRoleStmtDefaultTypeInternal _CreateRoleStmt_default_instance_; class CreateSchemaStmt; class CreateSchemaStmtDefaultTypeInternal; extern CreateSchemaStmtDefaultTypeInternal _CreateSchemaStmt_default_instance_; class CreateSeqStmt; class CreateSeqStmtDefaultTypeInternal; extern CreateSeqStmtDefaultTypeInternal _CreateSeqStmt_default_instance_; class CreateStatsStmt; class CreateStatsStmtDefaultTypeInternal; extern CreateStatsStmtDefaultTypeInternal _CreateStatsStmt_default_instance_; class CreateStmt; class CreateStmtDefaultTypeInternal; extern CreateStmtDefaultTypeInternal _CreateStmt_default_instance_; class CreateSubscriptionStmt; class CreateSubscriptionStmtDefaultTypeInternal; extern CreateSubscriptionStmtDefaultTypeInternal _CreateSubscriptionStmt_default_instance_; class CreateTableAsStmt; class CreateTableAsStmtDefaultTypeInternal; extern CreateTableAsStmtDefaultTypeInternal _CreateTableAsStmt_default_instance_; class CreateTableSpaceStmt; class CreateTableSpaceStmtDefaultTypeInternal; extern CreateTableSpaceStmtDefaultTypeInternal _CreateTableSpaceStmt_default_instance_; class CreateTransformStmt; class CreateTransformStmtDefaultTypeInternal; extern CreateTransformStmtDefaultTypeInternal _CreateTransformStmt_default_instance_; class CreateTrigStmt; class CreateTrigStmtDefaultTypeInternal; extern CreateTrigStmtDefaultTypeInternal _CreateTrigStmt_default_instance_; class CreateUserMappingStmt; class CreateUserMappingStmtDefaultTypeInternal; extern CreateUserMappingStmtDefaultTypeInternal _CreateUserMappingStmt_default_instance_; class CreatedbStmt; class CreatedbStmtDefaultTypeInternal; extern CreatedbStmtDefaultTypeInternal _CreatedbStmt_default_instance_; class CurrentOfExpr; class CurrentOfExprDefaultTypeInternal; extern CurrentOfExprDefaultTypeInternal _CurrentOfExpr_default_instance_; class DeallocateStmt; class DeallocateStmtDefaultTypeInternal; extern DeallocateStmtDefaultTypeInternal _DeallocateStmt_default_instance_; class DeclareCursorStmt; class DeclareCursorStmtDefaultTypeInternal; extern DeclareCursorStmtDefaultTypeInternal _DeclareCursorStmt_default_instance_; class DefElem; class DefElemDefaultTypeInternal; extern DefElemDefaultTypeInternal _DefElem_default_instance_; class DefineStmt; class DefineStmtDefaultTypeInternal; extern DefineStmtDefaultTypeInternal _DefineStmt_default_instance_; class DeleteStmt; class DeleteStmtDefaultTypeInternal; extern DeleteStmtDefaultTypeInternal _DeleteStmt_default_instance_; class DiscardStmt; class DiscardStmtDefaultTypeInternal; extern DiscardStmtDefaultTypeInternal _DiscardStmt_default_instance_; class DistinctExpr; class DistinctExprDefaultTypeInternal; extern DistinctExprDefaultTypeInternal _DistinctExpr_default_instance_; class DoStmt; class DoStmtDefaultTypeInternal; extern DoStmtDefaultTypeInternal _DoStmt_default_instance_; class DropOwnedStmt; class DropOwnedStmtDefaultTypeInternal; extern DropOwnedStmtDefaultTypeInternal _DropOwnedStmt_default_instance_; class DropRoleStmt; class DropRoleStmtDefaultTypeInternal; extern DropRoleStmtDefaultTypeInternal _DropRoleStmt_default_instance_; class DropStmt; class DropStmtDefaultTypeInternal; extern DropStmtDefaultTypeInternal _DropStmt_default_instance_; class DropSubscriptionStmt; class DropSubscriptionStmtDefaultTypeInternal; extern DropSubscriptionStmtDefaultTypeInternal _DropSubscriptionStmt_default_instance_; class DropTableSpaceStmt; class DropTableSpaceStmtDefaultTypeInternal; extern DropTableSpaceStmtDefaultTypeInternal _DropTableSpaceStmt_default_instance_; class DropUserMappingStmt; class DropUserMappingStmtDefaultTypeInternal; extern DropUserMappingStmtDefaultTypeInternal _DropUserMappingStmt_default_instance_; class DropdbStmt; class DropdbStmtDefaultTypeInternal; extern DropdbStmtDefaultTypeInternal _DropdbStmt_default_instance_; class ExecuteStmt; class ExecuteStmtDefaultTypeInternal; extern ExecuteStmtDefaultTypeInternal _ExecuteStmt_default_instance_; class ExplainStmt; class ExplainStmtDefaultTypeInternal; extern ExplainStmtDefaultTypeInternal _ExplainStmt_default_instance_; class Expr; class ExprDefaultTypeInternal; extern ExprDefaultTypeInternal _Expr_default_instance_; class FetchStmt; class FetchStmtDefaultTypeInternal; extern FetchStmtDefaultTypeInternal _FetchStmt_default_instance_; class FieldSelect; class FieldSelectDefaultTypeInternal; extern FieldSelectDefaultTypeInternal _FieldSelect_default_instance_; class FieldStore; class FieldStoreDefaultTypeInternal; extern FieldStoreDefaultTypeInternal _FieldStore_default_instance_; class Float; class FloatDefaultTypeInternal; extern FloatDefaultTypeInternal _Float_default_instance_; class FromExpr; class FromExprDefaultTypeInternal; extern FromExprDefaultTypeInternal _FromExpr_default_instance_; class FuncCall; class FuncCallDefaultTypeInternal; extern FuncCallDefaultTypeInternal _FuncCall_default_instance_; class FuncExpr; class FuncExprDefaultTypeInternal; extern FuncExprDefaultTypeInternal _FuncExpr_default_instance_; class FunctionParameter; class FunctionParameterDefaultTypeInternal; extern FunctionParameterDefaultTypeInternal _FunctionParameter_default_instance_; class GrantRoleStmt; class GrantRoleStmtDefaultTypeInternal; extern GrantRoleStmtDefaultTypeInternal _GrantRoleStmt_default_instance_; class GrantStmt; class GrantStmtDefaultTypeInternal; extern GrantStmtDefaultTypeInternal _GrantStmt_default_instance_; class GroupingFunc; class GroupingFuncDefaultTypeInternal; extern GroupingFuncDefaultTypeInternal _GroupingFunc_default_instance_; class GroupingSet; class GroupingSetDefaultTypeInternal; extern GroupingSetDefaultTypeInternal _GroupingSet_default_instance_; class ImportForeignSchemaStmt; class ImportForeignSchemaStmtDefaultTypeInternal; extern ImportForeignSchemaStmtDefaultTypeInternal _ImportForeignSchemaStmt_default_instance_; class IndexElem; class IndexElemDefaultTypeInternal; extern IndexElemDefaultTypeInternal _IndexElem_default_instance_; class IndexStmt; class IndexStmtDefaultTypeInternal; extern IndexStmtDefaultTypeInternal _IndexStmt_default_instance_; class InferClause; class InferClauseDefaultTypeInternal; extern InferClauseDefaultTypeInternal _InferClause_default_instance_; class InferenceElem; class InferenceElemDefaultTypeInternal; extern InferenceElemDefaultTypeInternal _InferenceElem_default_instance_; class InlineCodeBlock; class InlineCodeBlockDefaultTypeInternal; extern InlineCodeBlockDefaultTypeInternal _InlineCodeBlock_default_instance_; class InsertStmt; class InsertStmtDefaultTypeInternal; extern InsertStmtDefaultTypeInternal _InsertStmt_default_instance_; class IntList; class IntListDefaultTypeInternal; extern IntListDefaultTypeInternal _IntList_default_instance_; class Integer; class IntegerDefaultTypeInternal; extern IntegerDefaultTypeInternal _Integer_default_instance_; class IntoClause; class IntoClauseDefaultTypeInternal; extern IntoClauseDefaultTypeInternal _IntoClause_default_instance_; class JoinExpr; class JoinExprDefaultTypeInternal; extern JoinExprDefaultTypeInternal _JoinExpr_default_instance_; class List; class ListDefaultTypeInternal; extern ListDefaultTypeInternal _List_default_instance_; class ListenStmt; class ListenStmtDefaultTypeInternal; extern ListenStmtDefaultTypeInternal _ListenStmt_default_instance_; class LoadStmt; class LoadStmtDefaultTypeInternal; extern LoadStmtDefaultTypeInternal _LoadStmt_default_instance_; class LockStmt; class LockStmtDefaultTypeInternal; extern LockStmtDefaultTypeInternal _LockStmt_default_instance_; class LockingClause; class LockingClauseDefaultTypeInternal; extern LockingClauseDefaultTypeInternal _LockingClause_default_instance_; class MinMaxExpr; class MinMaxExprDefaultTypeInternal; extern MinMaxExprDefaultTypeInternal _MinMaxExpr_default_instance_; class MultiAssignRef; class MultiAssignRefDefaultTypeInternal; extern MultiAssignRefDefaultTypeInternal _MultiAssignRef_default_instance_; class NamedArgExpr; class NamedArgExprDefaultTypeInternal; extern NamedArgExprDefaultTypeInternal _NamedArgExpr_default_instance_; class NextValueExpr; class NextValueExprDefaultTypeInternal; extern NextValueExprDefaultTypeInternal _NextValueExpr_default_instance_; class Node; class NodeDefaultTypeInternal; extern NodeDefaultTypeInternal _Node_default_instance_; class NotifyStmt; class NotifyStmtDefaultTypeInternal; extern NotifyStmtDefaultTypeInternal _NotifyStmt_default_instance_; class Null; class NullDefaultTypeInternal; extern NullDefaultTypeInternal _Null_default_instance_; class NullIfExpr; class NullIfExprDefaultTypeInternal; extern NullIfExprDefaultTypeInternal _NullIfExpr_default_instance_; class NullTest; class NullTestDefaultTypeInternal; extern NullTestDefaultTypeInternal _NullTest_default_instance_; class ObjectWithArgs; class ObjectWithArgsDefaultTypeInternal; extern ObjectWithArgsDefaultTypeInternal _ObjectWithArgs_default_instance_; class OidList; class OidListDefaultTypeInternal; extern OidListDefaultTypeInternal _OidList_default_instance_; class OnConflictClause; class OnConflictClauseDefaultTypeInternal; extern OnConflictClauseDefaultTypeInternal _OnConflictClause_default_instance_; class OnConflictExpr; class OnConflictExprDefaultTypeInternal; extern OnConflictExprDefaultTypeInternal _OnConflictExpr_default_instance_; class OpExpr; class OpExprDefaultTypeInternal; extern OpExprDefaultTypeInternal _OpExpr_default_instance_; class Param; class ParamDefaultTypeInternal; extern ParamDefaultTypeInternal _Param_default_instance_; class ParamRef; class ParamRefDefaultTypeInternal; extern ParamRefDefaultTypeInternal _ParamRef_default_instance_; class ParseResult; class ParseResultDefaultTypeInternal; extern ParseResultDefaultTypeInternal _ParseResult_default_instance_; class PartitionBoundSpec; class PartitionBoundSpecDefaultTypeInternal; extern PartitionBoundSpecDefaultTypeInternal _PartitionBoundSpec_default_instance_; class PartitionCmd; class PartitionCmdDefaultTypeInternal; extern PartitionCmdDefaultTypeInternal _PartitionCmd_default_instance_; class PartitionElem; class PartitionElemDefaultTypeInternal; extern PartitionElemDefaultTypeInternal _PartitionElem_default_instance_; class PartitionRangeDatum; class PartitionRangeDatumDefaultTypeInternal; extern PartitionRangeDatumDefaultTypeInternal _PartitionRangeDatum_default_instance_; class PartitionSpec; class PartitionSpecDefaultTypeInternal; extern PartitionSpecDefaultTypeInternal _PartitionSpec_default_instance_; class PrepareStmt; class PrepareStmtDefaultTypeInternal; extern PrepareStmtDefaultTypeInternal _PrepareStmt_default_instance_; class Query; class QueryDefaultTypeInternal; extern QueryDefaultTypeInternal _Query_default_instance_; class RangeFunction; class RangeFunctionDefaultTypeInternal; extern RangeFunctionDefaultTypeInternal _RangeFunction_default_instance_; class RangeSubselect; class RangeSubselectDefaultTypeInternal; extern RangeSubselectDefaultTypeInternal _RangeSubselect_default_instance_; class RangeTableFunc; class RangeTableFuncDefaultTypeInternal; extern RangeTableFuncDefaultTypeInternal _RangeTableFunc_default_instance_; class RangeTableFuncCol; class RangeTableFuncColDefaultTypeInternal; extern RangeTableFuncColDefaultTypeInternal _RangeTableFuncCol_default_instance_; class RangeTableSample; class RangeTableSampleDefaultTypeInternal; extern RangeTableSampleDefaultTypeInternal _RangeTableSample_default_instance_; class RangeTblEntry; class RangeTblEntryDefaultTypeInternal; extern RangeTblEntryDefaultTypeInternal _RangeTblEntry_default_instance_; class RangeTblFunction; class RangeTblFunctionDefaultTypeInternal; extern RangeTblFunctionDefaultTypeInternal _RangeTblFunction_default_instance_; class RangeTblRef; class RangeTblRefDefaultTypeInternal; extern RangeTblRefDefaultTypeInternal _RangeTblRef_default_instance_; class RangeVar; class RangeVarDefaultTypeInternal; extern RangeVarDefaultTypeInternal _RangeVar_default_instance_; class RawStmt; class RawStmtDefaultTypeInternal; extern RawStmtDefaultTypeInternal _RawStmt_default_instance_; class ReassignOwnedStmt; class ReassignOwnedStmtDefaultTypeInternal; extern ReassignOwnedStmtDefaultTypeInternal _ReassignOwnedStmt_default_instance_; class RefreshMatViewStmt; class RefreshMatViewStmtDefaultTypeInternal; extern RefreshMatViewStmtDefaultTypeInternal _RefreshMatViewStmt_default_instance_; class ReindexStmt; class ReindexStmtDefaultTypeInternal; extern ReindexStmtDefaultTypeInternal _ReindexStmt_default_instance_; class RelabelType; class RelabelTypeDefaultTypeInternal; extern RelabelTypeDefaultTypeInternal _RelabelType_default_instance_; class RenameStmt; class RenameStmtDefaultTypeInternal; extern RenameStmtDefaultTypeInternal _RenameStmt_default_instance_; class ReplicaIdentityStmt; class ReplicaIdentityStmtDefaultTypeInternal; extern ReplicaIdentityStmtDefaultTypeInternal _ReplicaIdentityStmt_default_instance_; class ResTarget; class ResTargetDefaultTypeInternal; extern ResTargetDefaultTypeInternal _ResTarget_default_instance_; class RoleSpec; class RoleSpecDefaultTypeInternal; extern RoleSpecDefaultTypeInternal _RoleSpec_default_instance_; class RowCompareExpr; class RowCompareExprDefaultTypeInternal; extern RowCompareExprDefaultTypeInternal _RowCompareExpr_default_instance_; class RowExpr; class RowExprDefaultTypeInternal; extern RowExprDefaultTypeInternal _RowExpr_default_instance_; class RowMarkClause; class RowMarkClauseDefaultTypeInternal; extern RowMarkClauseDefaultTypeInternal _RowMarkClause_default_instance_; class RuleStmt; class RuleStmtDefaultTypeInternal; extern RuleStmtDefaultTypeInternal _RuleStmt_default_instance_; class SQLValueFunction; class SQLValueFunctionDefaultTypeInternal; extern SQLValueFunctionDefaultTypeInternal _SQLValueFunction_default_instance_; class ScalarArrayOpExpr; class ScalarArrayOpExprDefaultTypeInternal; extern ScalarArrayOpExprDefaultTypeInternal _ScalarArrayOpExpr_default_instance_; class ScanResult; class ScanResultDefaultTypeInternal; extern ScanResultDefaultTypeInternal _ScanResult_default_instance_; class ScanToken; class ScanTokenDefaultTypeInternal; extern ScanTokenDefaultTypeInternal _ScanToken_default_instance_; class SecLabelStmt; class SecLabelStmtDefaultTypeInternal; extern SecLabelStmtDefaultTypeInternal _SecLabelStmt_default_instance_; class SelectStmt; class SelectStmtDefaultTypeInternal; extern SelectStmtDefaultTypeInternal _SelectStmt_default_instance_; class SetOperationStmt; class SetOperationStmtDefaultTypeInternal; extern SetOperationStmtDefaultTypeInternal _SetOperationStmt_default_instance_; class SetToDefault; class SetToDefaultDefaultTypeInternal; extern SetToDefaultDefaultTypeInternal _SetToDefault_default_instance_; class SortBy; class SortByDefaultTypeInternal; extern SortByDefaultTypeInternal _SortBy_default_instance_; class SortGroupClause; class SortGroupClauseDefaultTypeInternal; extern SortGroupClauseDefaultTypeInternal _SortGroupClause_default_instance_; class String; class StringDefaultTypeInternal; extern StringDefaultTypeInternal _String_default_instance_; class SubLink; class SubLinkDefaultTypeInternal; extern SubLinkDefaultTypeInternal _SubLink_default_instance_; class SubPlan; class SubPlanDefaultTypeInternal; extern SubPlanDefaultTypeInternal _SubPlan_default_instance_; class SubscriptingRef; class SubscriptingRefDefaultTypeInternal; extern SubscriptingRefDefaultTypeInternal _SubscriptingRef_default_instance_; class TableFunc; class TableFuncDefaultTypeInternal; extern TableFuncDefaultTypeInternal _TableFunc_default_instance_; class TableLikeClause; class TableLikeClauseDefaultTypeInternal; extern TableLikeClauseDefaultTypeInternal _TableLikeClause_default_instance_; class TableSampleClause; class TableSampleClauseDefaultTypeInternal; extern TableSampleClauseDefaultTypeInternal _TableSampleClause_default_instance_; class TargetEntry; class TargetEntryDefaultTypeInternal; extern TargetEntryDefaultTypeInternal _TargetEntry_default_instance_; class TransactionStmt; class TransactionStmtDefaultTypeInternal; extern TransactionStmtDefaultTypeInternal _TransactionStmt_default_instance_; class TriggerTransition; class TriggerTransitionDefaultTypeInternal; extern TriggerTransitionDefaultTypeInternal _TriggerTransition_default_instance_; class TruncateStmt; class TruncateStmtDefaultTypeInternal; extern TruncateStmtDefaultTypeInternal _TruncateStmt_default_instance_; class TypeCast; class TypeCastDefaultTypeInternal; extern TypeCastDefaultTypeInternal _TypeCast_default_instance_; class TypeName; class TypeNameDefaultTypeInternal; extern TypeNameDefaultTypeInternal _TypeName_default_instance_; class UnlistenStmt; class UnlistenStmtDefaultTypeInternal; extern UnlistenStmtDefaultTypeInternal _UnlistenStmt_default_instance_; class UpdateStmt; class UpdateStmtDefaultTypeInternal; extern UpdateStmtDefaultTypeInternal _UpdateStmt_default_instance_; class VacuumRelation; class VacuumRelationDefaultTypeInternal; extern VacuumRelationDefaultTypeInternal _VacuumRelation_default_instance_; class VacuumStmt; class VacuumStmtDefaultTypeInternal; extern VacuumStmtDefaultTypeInternal _VacuumStmt_default_instance_; class Var; class VarDefaultTypeInternal; extern VarDefaultTypeInternal _Var_default_instance_; class VariableSetStmt; class VariableSetStmtDefaultTypeInternal; extern VariableSetStmtDefaultTypeInternal _VariableSetStmt_default_instance_; class VariableShowStmt; class VariableShowStmtDefaultTypeInternal; extern VariableShowStmtDefaultTypeInternal _VariableShowStmt_default_instance_; class ViewStmt; class ViewStmtDefaultTypeInternal; extern ViewStmtDefaultTypeInternal _ViewStmt_default_instance_; class WindowClause; class WindowClauseDefaultTypeInternal; extern WindowClauseDefaultTypeInternal _WindowClause_default_instance_; class WindowDef; class WindowDefDefaultTypeInternal; extern WindowDefDefaultTypeInternal _WindowDef_default_instance_; class WindowFunc; class WindowFuncDefaultTypeInternal; extern WindowFuncDefaultTypeInternal _WindowFunc_default_instance_; class WithCheckOption; class WithCheckOptionDefaultTypeInternal; extern WithCheckOptionDefaultTypeInternal _WithCheckOption_default_instance_; class WithClause; class WithClauseDefaultTypeInternal; extern WithClauseDefaultTypeInternal _WithClause_default_instance_; class XmlExpr; class XmlExprDefaultTypeInternal; extern XmlExprDefaultTypeInternal _XmlExpr_default_instance_; class XmlSerialize; class XmlSerializeDefaultTypeInternal; extern XmlSerializeDefaultTypeInternal _XmlSerialize_default_instance_; } // namespace pg_query PROTOBUF_NAMESPACE_OPEN template<> ::pg_query::A_ArrayExpr* Arena::CreateMaybeMessage<::pg_query::A_ArrayExpr>(Arena*); template<> ::pg_query::A_Const* Arena::CreateMaybeMessage<::pg_query::A_Const>(Arena*); template<> ::pg_query::A_Expr* Arena::CreateMaybeMessage<::pg_query::A_Expr>(Arena*); template<> ::pg_query::A_Indices* Arena::CreateMaybeMessage<::pg_query::A_Indices>(Arena*); template<> ::pg_query::A_Indirection* Arena::CreateMaybeMessage<::pg_query::A_Indirection>(Arena*); template<> ::pg_query::A_Star* Arena::CreateMaybeMessage<::pg_query::A_Star>(Arena*); template<> ::pg_query::AccessPriv* Arena::CreateMaybeMessage<::pg_query::AccessPriv>(Arena*); template<> ::pg_query::Aggref* Arena::CreateMaybeMessage<::pg_query::Aggref>(Arena*); template<> ::pg_query::Alias* Arena::CreateMaybeMessage<::pg_query::Alias>(Arena*); template<> ::pg_query::AlterCollationStmt* Arena::CreateMaybeMessage<::pg_query::AlterCollationStmt>(Arena*); template<> ::pg_query::AlterDatabaseSetStmt* Arena::CreateMaybeMessage<::pg_query::AlterDatabaseSetStmt>(Arena*); template<> ::pg_query::AlterDatabaseStmt* Arena::CreateMaybeMessage<::pg_query::AlterDatabaseStmt>(Arena*); template<> ::pg_query::AlterDefaultPrivilegesStmt* Arena::CreateMaybeMessage<::pg_query::AlterDefaultPrivilegesStmt>(Arena*); template<> ::pg_query::AlterDomainStmt* Arena::CreateMaybeMessage<::pg_query::AlterDomainStmt>(Arena*); template<> ::pg_query::AlterEnumStmt* Arena::CreateMaybeMessage<::pg_query::AlterEnumStmt>(Arena*); template<> ::pg_query::AlterEventTrigStmt* Arena::CreateMaybeMessage<::pg_query::AlterEventTrigStmt>(Arena*); template<> ::pg_query::AlterExtensionContentsStmt* Arena::CreateMaybeMessage<::pg_query::AlterExtensionContentsStmt>(Arena*); template<> ::pg_query::AlterExtensionStmt* Arena::CreateMaybeMessage<::pg_query::AlterExtensionStmt>(Arena*); template<> ::pg_query::AlterFdwStmt* Arena::CreateMaybeMessage<::pg_query::AlterFdwStmt>(Arena*); template<> ::pg_query::AlterForeignServerStmt* Arena::CreateMaybeMessage<::pg_query::AlterForeignServerStmt>(Arena*); template<> ::pg_query::AlterFunctionStmt* Arena::CreateMaybeMessage<::pg_query::AlterFunctionStmt>(Arena*); template<> ::pg_query::AlterObjectDependsStmt* Arena::CreateMaybeMessage<::pg_query::AlterObjectDependsStmt>(Arena*); template<> ::pg_query::AlterObjectSchemaStmt* Arena::CreateMaybeMessage<::pg_query::AlterObjectSchemaStmt>(Arena*); template<> ::pg_query::AlterOpFamilyStmt* Arena::CreateMaybeMessage<::pg_query::AlterOpFamilyStmt>(Arena*); template<> ::pg_query::AlterOperatorStmt* Arena::CreateMaybeMessage<::pg_query::AlterOperatorStmt>(Arena*); template<> ::pg_query::AlterOwnerStmt* Arena::CreateMaybeMessage<::pg_query::AlterOwnerStmt>(Arena*); template<> ::pg_query::AlterPolicyStmt* Arena::CreateMaybeMessage<::pg_query::AlterPolicyStmt>(Arena*); template<> ::pg_query::AlterPublicationStmt* Arena::CreateMaybeMessage<::pg_query::AlterPublicationStmt>(Arena*); template<> ::pg_query::AlterRoleSetStmt* Arena::CreateMaybeMessage<::pg_query::AlterRoleSetStmt>(Arena*); template<> ::pg_query::AlterRoleStmt* Arena::CreateMaybeMessage<::pg_query::AlterRoleStmt>(Arena*); template<> ::pg_query::AlterSeqStmt* Arena::CreateMaybeMessage<::pg_query::AlterSeqStmt>(Arena*); template<> ::pg_query::AlterStatsStmt* Arena::CreateMaybeMessage<::pg_query::AlterStatsStmt>(Arena*); template<> ::pg_query::AlterSubscriptionStmt* Arena::CreateMaybeMessage<::pg_query::AlterSubscriptionStmt>(Arena*); template<> ::pg_query::AlterSystemStmt* Arena::CreateMaybeMessage<::pg_query::AlterSystemStmt>(Arena*); template<> ::pg_query::AlterTSConfigurationStmt* Arena::CreateMaybeMessage<::pg_query::AlterTSConfigurationStmt>(Arena*); template<> ::pg_query::AlterTSDictionaryStmt* Arena::CreateMaybeMessage<::pg_query::AlterTSDictionaryStmt>(Arena*); template<> ::pg_query::AlterTableCmd* Arena::CreateMaybeMessage<::pg_query::AlterTableCmd>(Arena*); template<> ::pg_query::AlterTableMoveAllStmt* Arena::CreateMaybeMessage<::pg_query::AlterTableMoveAllStmt>(Arena*); template<> ::pg_query::AlterTableSpaceOptionsStmt* Arena::CreateMaybeMessage<::pg_query::AlterTableSpaceOptionsStmt>(Arena*); template<> ::pg_query::AlterTableStmt* Arena::CreateMaybeMessage<::pg_query::AlterTableStmt>(Arena*); template<> ::pg_query::AlterTypeStmt* Arena::CreateMaybeMessage<::pg_query::AlterTypeStmt>(Arena*); template<> ::pg_query::AlterUserMappingStmt* Arena::CreateMaybeMessage<::pg_query::AlterUserMappingStmt>(Arena*); template<> ::pg_query::AlternativeSubPlan* Arena::CreateMaybeMessage<::pg_query::AlternativeSubPlan>(Arena*); template<> ::pg_query::ArrayCoerceExpr* Arena::CreateMaybeMessage<::pg_query::ArrayCoerceExpr>(Arena*); template<> ::pg_query::ArrayExpr* Arena::CreateMaybeMessage<::pg_query::ArrayExpr>(Arena*); template<> ::pg_query::BitString* Arena::CreateMaybeMessage<::pg_query::BitString>(Arena*); template<> ::pg_query::Bitmapset* Arena::CreateMaybeMessage<::pg_query::Bitmapset>(Arena*); template<> ::pg_query::BoolExpr* Arena::CreateMaybeMessage<::pg_query::BoolExpr>(Arena*); template<> ::pg_query::BooleanTest* Arena::CreateMaybeMessage<::pg_query::BooleanTest>(Arena*); template<> ::pg_query::CallContext* Arena::CreateMaybeMessage<::pg_query::CallContext>(Arena*); template<> ::pg_query::CallStmt* Arena::CreateMaybeMessage<::pg_query::CallStmt>(Arena*); template<> ::pg_query::CaseExpr* Arena::CreateMaybeMessage<::pg_query::CaseExpr>(Arena*); template<> ::pg_query::CaseTestExpr* Arena::CreateMaybeMessage<::pg_query::CaseTestExpr>(Arena*); template<> ::pg_query::CaseWhen* Arena::CreateMaybeMessage<::pg_query::CaseWhen>(Arena*); template<> ::pg_query::CheckPointStmt* Arena::CreateMaybeMessage<::pg_query::CheckPointStmt>(Arena*); template<> ::pg_query::ClosePortalStmt* Arena::CreateMaybeMessage<::pg_query::ClosePortalStmt>(Arena*); template<> ::pg_query::ClusterStmt* Arena::CreateMaybeMessage<::pg_query::ClusterStmt>(Arena*); template<> ::pg_query::CoalesceExpr* Arena::CreateMaybeMessage<::pg_query::CoalesceExpr>(Arena*); template<> ::pg_query::CoerceToDomain* Arena::CreateMaybeMessage<::pg_query::CoerceToDomain>(Arena*); template<> ::pg_query::CoerceToDomainValue* Arena::CreateMaybeMessage<::pg_query::CoerceToDomainValue>(Arena*); template<> ::pg_query::CoerceViaIO* Arena::CreateMaybeMessage<::pg_query::CoerceViaIO>(Arena*); template<> ::pg_query::CollateClause* Arena::CreateMaybeMessage<::pg_query::CollateClause>(Arena*); template<> ::pg_query::CollateExpr* Arena::CreateMaybeMessage<::pg_query::CollateExpr>(Arena*); template<> ::pg_query::ColumnDef* Arena::CreateMaybeMessage<::pg_query::ColumnDef>(Arena*); template<> ::pg_query::ColumnRef* Arena::CreateMaybeMessage<::pg_query::ColumnRef>(Arena*); template<> ::pg_query::CommentStmt* Arena::CreateMaybeMessage<::pg_query::CommentStmt>(Arena*); template<> ::pg_query::CommonTableExpr* Arena::CreateMaybeMessage<::pg_query::CommonTableExpr>(Arena*); template<> ::pg_query::CompositeTypeStmt* Arena::CreateMaybeMessage<::pg_query::CompositeTypeStmt>(Arena*); template<> ::pg_query::Constraint* Arena::CreateMaybeMessage<::pg_query::Constraint>(Arena*); template<> ::pg_query::ConstraintsSetStmt* Arena::CreateMaybeMessage<::pg_query::ConstraintsSetStmt>(Arena*); template<> ::pg_query::ConvertRowtypeExpr* Arena::CreateMaybeMessage<::pg_query::ConvertRowtypeExpr>(Arena*); template<> ::pg_query::CopyStmt* Arena::CreateMaybeMessage<::pg_query::CopyStmt>(Arena*); template<> ::pg_query::CreateAmStmt* Arena::CreateMaybeMessage<::pg_query::CreateAmStmt>(Arena*); template<> ::pg_query::CreateCastStmt* Arena::CreateMaybeMessage<::pg_query::CreateCastStmt>(Arena*); template<> ::pg_query::CreateConversionStmt* Arena::CreateMaybeMessage<::pg_query::CreateConversionStmt>(Arena*); template<> ::pg_query::CreateDomainStmt* Arena::CreateMaybeMessage<::pg_query::CreateDomainStmt>(Arena*); template<> ::pg_query::CreateEnumStmt* Arena::CreateMaybeMessage<::pg_query::CreateEnumStmt>(Arena*); template<> ::pg_query::CreateEventTrigStmt* Arena::CreateMaybeMessage<::pg_query::CreateEventTrigStmt>(Arena*); template<> ::pg_query::CreateExtensionStmt* Arena::CreateMaybeMessage<::pg_query::CreateExtensionStmt>(Arena*); template<> ::pg_query::CreateFdwStmt* Arena::CreateMaybeMessage<::pg_query::CreateFdwStmt>(Arena*); template<> ::pg_query::CreateForeignServerStmt* Arena::CreateMaybeMessage<::pg_query::CreateForeignServerStmt>(Arena*); template<> ::pg_query::CreateForeignTableStmt* Arena::CreateMaybeMessage<::pg_query::CreateForeignTableStmt>(Arena*); template<> ::pg_query::CreateFunctionStmt* Arena::CreateMaybeMessage<::pg_query::CreateFunctionStmt>(Arena*); template<> ::pg_query::CreateOpClassItem* Arena::CreateMaybeMessage<::pg_query::CreateOpClassItem>(Arena*); template<> ::pg_query::CreateOpClassStmt* Arena::CreateMaybeMessage<::pg_query::CreateOpClassStmt>(Arena*); template<> ::pg_query::CreateOpFamilyStmt* Arena::CreateMaybeMessage<::pg_query::CreateOpFamilyStmt>(Arena*); template<> ::pg_query::CreatePLangStmt* Arena::CreateMaybeMessage<::pg_query::CreatePLangStmt>(Arena*); template<> ::pg_query::CreatePolicyStmt* Arena::CreateMaybeMessage<::pg_query::CreatePolicyStmt>(Arena*); template<> ::pg_query::CreatePublicationStmt* Arena::CreateMaybeMessage<::pg_query::CreatePublicationStmt>(Arena*); template<> ::pg_query::CreateRangeStmt* Arena::CreateMaybeMessage<::pg_query::CreateRangeStmt>(Arena*); template<> ::pg_query::CreateRoleStmt* Arena::CreateMaybeMessage<::pg_query::CreateRoleStmt>(Arena*); template<> ::pg_query::CreateSchemaStmt* Arena::CreateMaybeMessage<::pg_query::CreateSchemaStmt>(Arena*); template<> ::pg_query::CreateSeqStmt* Arena::CreateMaybeMessage<::pg_query::CreateSeqStmt>(Arena*); template<> ::pg_query::CreateStatsStmt* Arena::CreateMaybeMessage<::pg_query::CreateStatsStmt>(Arena*); template<> ::pg_query::CreateStmt* Arena::CreateMaybeMessage<::pg_query::CreateStmt>(Arena*); template<> ::pg_query::CreateSubscriptionStmt* Arena::CreateMaybeMessage<::pg_query::CreateSubscriptionStmt>(Arena*); template<> ::pg_query::CreateTableAsStmt* Arena::CreateMaybeMessage<::pg_query::CreateTableAsStmt>(Arena*); template<> ::pg_query::CreateTableSpaceStmt* Arena::CreateMaybeMessage<::pg_query::CreateTableSpaceStmt>(Arena*); template<> ::pg_query::CreateTransformStmt* Arena::CreateMaybeMessage<::pg_query::CreateTransformStmt>(Arena*); template<> ::pg_query::CreateTrigStmt* Arena::CreateMaybeMessage<::pg_query::CreateTrigStmt>(Arena*); template<> ::pg_query::CreateUserMappingStmt* Arena::CreateMaybeMessage<::pg_query::CreateUserMappingStmt>(Arena*); template<> ::pg_query::CreatedbStmt* Arena::CreateMaybeMessage<::pg_query::CreatedbStmt>(Arena*); template<> ::pg_query::CurrentOfExpr* Arena::CreateMaybeMessage<::pg_query::CurrentOfExpr>(Arena*); template<> ::pg_query::DeallocateStmt* Arena::CreateMaybeMessage<::pg_query::DeallocateStmt>(Arena*); template<> ::pg_query::DeclareCursorStmt* Arena::CreateMaybeMessage<::pg_query::DeclareCursorStmt>(Arena*); template<> ::pg_query::DefElem* Arena::CreateMaybeMessage<::pg_query::DefElem>(Arena*); template<> ::pg_query::DefineStmt* Arena::CreateMaybeMessage<::pg_query::DefineStmt>(Arena*); template<> ::pg_query::DeleteStmt* Arena::CreateMaybeMessage<::pg_query::DeleteStmt>(Arena*); template<> ::pg_query::DiscardStmt* Arena::CreateMaybeMessage<::pg_query::DiscardStmt>(Arena*); template<> ::pg_query::DistinctExpr* Arena::CreateMaybeMessage<::pg_query::DistinctExpr>(Arena*); template<> ::pg_query::DoStmt* Arena::CreateMaybeMessage<::pg_query::DoStmt>(Arena*); template<> ::pg_query::DropOwnedStmt* Arena::CreateMaybeMessage<::pg_query::DropOwnedStmt>(Arena*); template<> ::pg_query::DropRoleStmt* Arena::CreateMaybeMessage<::pg_query::DropRoleStmt>(Arena*); template<> ::pg_query::DropStmt* Arena::CreateMaybeMessage<::pg_query::DropStmt>(Arena*); template<> ::pg_query::DropSubscriptionStmt* Arena::CreateMaybeMessage<::pg_query::DropSubscriptionStmt>(Arena*); template<> ::pg_query::DropTableSpaceStmt* Arena::CreateMaybeMessage<::pg_query::DropTableSpaceStmt>(Arena*); template<> ::pg_query::DropUserMappingStmt* Arena::CreateMaybeMessage<::pg_query::DropUserMappingStmt>(Arena*); template<> ::pg_query::DropdbStmt* Arena::CreateMaybeMessage<::pg_query::DropdbStmt>(Arena*); template<> ::pg_query::ExecuteStmt* Arena::CreateMaybeMessage<::pg_query::ExecuteStmt>(Arena*); template<> ::pg_query::ExplainStmt* Arena::CreateMaybeMessage<::pg_query::ExplainStmt>(Arena*); template<> ::pg_query::Expr* Arena::CreateMaybeMessage<::pg_query::Expr>(Arena*); template<> ::pg_query::FetchStmt* Arena::CreateMaybeMessage<::pg_query::FetchStmt>(Arena*); template<> ::pg_query::FieldSelect* Arena::CreateMaybeMessage<::pg_query::FieldSelect>(Arena*); template<> ::pg_query::FieldStore* Arena::CreateMaybeMessage<::pg_query::FieldStore>(Arena*); template<> ::pg_query::Float* Arena::CreateMaybeMessage<::pg_query::Float>(Arena*); template<> ::pg_query::FromExpr* Arena::CreateMaybeMessage<::pg_query::FromExpr>(Arena*); template<> ::pg_query::FuncCall* Arena::CreateMaybeMessage<::pg_query::FuncCall>(Arena*); template<> ::pg_query::FuncExpr* Arena::CreateMaybeMessage<::pg_query::FuncExpr>(Arena*); template<> ::pg_query::FunctionParameter* Arena::CreateMaybeMessage<::pg_query::FunctionParameter>(Arena*); template<> ::pg_query::GrantRoleStmt* Arena::CreateMaybeMessage<::pg_query::GrantRoleStmt>(Arena*); template<> ::pg_query::GrantStmt* Arena::CreateMaybeMessage<::pg_query::GrantStmt>(Arena*); template<> ::pg_query::GroupingFunc* Arena::CreateMaybeMessage<::pg_query::GroupingFunc>(Arena*); template<> ::pg_query::GroupingSet* Arena::CreateMaybeMessage<::pg_query::GroupingSet>(Arena*); template<> ::pg_query::ImportForeignSchemaStmt* Arena::CreateMaybeMessage<::pg_query::ImportForeignSchemaStmt>(Arena*); template<> ::pg_query::IndexElem* Arena::CreateMaybeMessage<::pg_query::IndexElem>(Arena*); template<> ::pg_query::IndexStmt* Arena::CreateMaybeMessage<::pg_query::IndexStmt>(Arena*); template<> ::pg_query::InferClause* Arena::CreateMaybeMessage<::pg_query::InferClause>(Arena*); template<> ::pg_query::InferenceElem* Arena::CreateMaybeMessage<::pg_query::InferenceElem>(Arena*); template<> ::pg_query::InlineCodeBlock* Arena::CreateMaybeMessage<::pg_query::InlineCodeBlock>(Arena*); template<> ::pg_query::InsertStmt* Arena::CreateMaybeMessage<::pg_query::InsertStmt>(Arena*); template<> ::pg_query::IntList* Arena::CreateMaybeMessage<::pg_query::IntList>(Arena*); template<> ::pg_query::Integer* Arena::CreateMaybeMessage<::pg_query::Integer>(Arena*); template<> ::pg_query::IntoClause* Arena::CreateMaybeMessage<::pg_query::IntoClause>(Arena*); template<> ::pg_query::JoinExpr* Arena::CreateMaybeMessage<::pg_query::JoinExpr>(Arena*); template<> ::pg_query::List* Arena::CreateMaybeMessage<::pg_query::List>(Arena*); template<> ::pg_query::ListenStmt* Arena::CreateMaybeMessage<::pg_query::ListenStmt>(Arena*); template<> ::pg_query::LoadStmt* Arena::CreateMaybeMessage<::pg_query::LoadStmt>(Arena*); template<> ::pg_query::LockStmt* Arena::CreateMaybeMessage<::pg_query::LockStmt>(Arena*); template<> ::pg_query::LockingClause* Arena::CreateMaybeMessage<::pg_query::LockingClause>(Arena*); template<> ::pg_query::MinMaxExpr* Arena::CreateMaybeMessage<::pg_query::MinMaxExpr>(Arena*); template<> ::pg_query::MultiAssignRef* Arena::CreateMaybeMessage<::pg_query::MultiAssignRef>(Arena*); template<> ::pg_query::NamedArgExpr* Arena::CreateMaybeMessage<::pg_query::NamedArgExpr>(Arena*); template<> ::pg_query::NextValueExpr* Arena::CreateMaybeMessage<::pg_query::NextValueExpr>(Arena*); template<> ::pg_query::Node* Arena::CreateMaybeMessage<::pg_query::Node>(Arena*); template<> ::pg_query::NotifyStmt* Arena::CreateMaybeMessage<::pg_query::NotifyStmt>(Arena*); template<> ::pg_query::Null* Arena::CreateMaybeMessage<::pg_query::Null>(Arena*); template<> ::pg_query::NullIfExpr* Arena::CreateMaybeMessage<::pg_query::NullIfExpr>(Arena*); template<> ::pg_query::NullTest* Arena::CreateMaybeMessage<::pg_query::NullTest>(Arena*); template<> ::pg_query::ObjectWithArgs* Arena::CreateMaybeMessage<::pg_query::ObjectWithArgs>(Arena*); template<> ::pg_query::OidList* Arena::CreateMaybeMessage<::pg_query::OidList>(Arena*); template<> ::pg_query::OnConflictClause* Arena::CreateMaybeMessage<::pg_query::OnConflictClause>(Arena*); template<> ::pg_query::OnConflictExpr* Arena::CreateMaybeMessage<::pg_query::OnConflictExpr>(Arena*); template<> ::pg_query::OpExpr* Arena::CreateMaybeMessage<::pg_query::OpExpr>(Arena*); template<> ::pg_query::Param* Arena::CreateMaybeMessage<::pg_query::Param>(Arena*); template<> ::pg_query::ParamRef* Arena::CreateMaybeMessage<::pg_query::ParamRef>(Arena*); template<> ::pg_query::ParseResult* Arena::CreateMaybeMessage<::pg_query::ParseResult>(Arena*); template<> ::pg_query::PartitionBoundSpec* Arena::CreateMaybeMessage<::pg_query::PartitionBoundSpec>(Arena*); template<> ::pg_query::PartitionCmd* Arena::CreateMaybeMessage<::pg_query::PartitionCmd>(Arena*); template<> ::pg_query::PartitionElem* Arena::CreateMaybeMessage<::pg_query::PartitionElem>(Arena*); template<> ::pg_query::PartitionRangeDatum* Arena::CreateMaybeMessage<::pg_query::PartitionRangeDatum>(Arena*); template<> ::pg_query::PartitionSpec* Arena::CreateMaybeMessage<::pg_query::PartitionSpec>(Arena*); template<> ::pg_query::PrepareStmt* Arena::CreateMaybeMessage<::pg_query::PrepareStmt>(Arena*); template<> ::pg_query::Query* Arena::CreateMaybeMessage<::pg_query::Query>(Arena*); template<> ::pg_query::RangeFunction* Arena::CreateMaybeMessage<::pg_query::RangeFunction>(Arena*); template<> ::pg_query::RangeSubselect* Arena::CreateMaybeMessage<::pg_query::RangeSubselect>(Arena*); template<> ::pg_query::RangeTableFunc* Arena::CreateMaybeMessage<::pg_query::RangeTableFunc>(Arena*); template<> ::pg_query::RangeTableFuncCol* Arena::CreateMaybeMessage<::pg_query::RangeTableFuncCol>(Arena*); template<> ::pg_query::RangeTableSample* Arena::CreateMaybeMessage<::pg_query::RangeTableSample>(Arena*); template<> ::pg_query::RangeTblEntry* Arena::CreateMaybeMessage<::pg_query::RangeTblEntry>(Arena*); template<> ::pg_query::RangeTblFunction* Arena::CreateMaybeMessage<::pg_query::RangeTblFunction>(Arena*); template<> ::pg_query::RangeTblRef* Arena::CreateMaybeMessage<::pg_query::RangeTblRef>(Arena*); template<> ::pg_query::RangeVar* Arena::CreateMaybeMessage<::pg_query::RangeVar>(Arena*); template<> ::pg_query::RawStmt* Arena::CreateMaybeMessage<::pg_query::RawStmt>(Arena*); template<> ::pg_query::ReassignOwnedStmt* Arena::CreateMaybeMessage<::pg_query::ReassignOwnedStmt>(Arena*); template<> ::pg_query::RefreshMatViewStmt* Arena::CreateMaybeMessage<::pg_query::RefreshMatViewStmt>(Arena*); template<> ::pg_query::ReindexStmt* Arena::CreateMaybeMessage<::pg_query::ReindexStmt>(Arena*); template<> ::pg_query::RelabelType* Arena::CreateMaybeMessage<::pg_query::RelabelType>(Arena*); template<> ::pg_query::RenameStmt* Arena::CreateMaybeMessage<::pg_query::RenameStmt>(Arena*); template<> ::pg_query::ReplicaIdentityStmt* Arena::CreateMaybeMessage<::pg_query::ReplicaIdentityStmt>(Arena*); template<> ::pg_query::ResTarget* Arena::CreateMaybeMessage<::pg_query::ResTarget>(Arena*); template<> ::pg_query::RoleSpec* Arena::CreateMaybeMessage<::pg_query::RoleSpec>(Arena*); template<> ::pg_query::RowCompareExpr* Arena::CreateMaybeMessage<::pg_query::RowCompareExpr>(Arena*); template<> ::pg_query::RowExpr* Arena::CreateMaybeMessage<::pg_query::RowExpr>(Arena*); template<> ::pg_query::RowMarkClause* Arena::CreateMaybeMessage<::pg_query::RowMarkClause>(Arena*); template<> ::pg_query::RuleStmt* Arena::CreateMaybeMessage<::pg_query::RuleStmt>(Arena*); template<> ::pg_query::SQLValueFunction* Arena::CreateMaybeMessage<::pg_query::SQLValueFunction>(Arena*); template<> ::pg_query::ScalarArrayOpExpr* Arena::CreateMaybeMessage<::pg_query::ScalarArrayOpExpr>(Arena*); template<> ::pg_query::ScanResult* Arena::CreateMaybeMessage<::pg_query::ScanResult>(Arena*); template<> ::pg_query::ScanToken* Arena::CreateMaybeMessage<::pg_query::ScanToken>(Arena*); template<> ::pg_query::SecLabelStmt* Arena::CreateMaybeMessage<::pg_query::SecLabelStmt>(Arena*); template<> ::pg_query::SelectStmt* Arena::CreateMaybeMessage<::pg_query::SelectStmt>(Arena*); template<> ::pg_query::SetOperationStmt* Arena::CreateMaybeMessage<::pg_query::SetOperationStmt>(Arena*); template<> ::pg_query::SetToDefault* Arena::CreateMaybeMessage<::pg_query::SetToDefault>(Arena*); template<> ::pg_query::SortBy* Arena::CreateMaybeMessage<::pg_query::SortBy>(Arena*); template<> ::pg_query::SortGroupClause* Arena::CreateMaybeMessage<::pg_query::SortGroupClause>(Arena*); template<> ::pg_query::String* Arena::CreateMaybeMessage<::pg_query::String>(Arena*); template<> ::pg_query::SubLink* Arena::CreateMaybeMessage<::pg_query::SubLink>(Arena*); template<> ::pg_query::SubPlan* Arena::CreateMaybeMessage<::pg_query::SubPlan>(Arena*); template<> ::pg_query::SubscriptingRef* Arena::CreateMaybeMessage<::pg_query::SubscriptingRef>(Arena*); template<> ::pg_query::TableFunc* Arena::CreateMaybeMessage<::pg_query::TableFunc>(Arena*); template<> ::pg_query::TableLikeClause* Arena::CreateMaybeMessage<::pg_query::TableLikeClause>(Arena*); template<> ::pg_query::TableSampleClause* Arena::CreateMaybeMessage<::pg_query::TableSampleClause>(Arena*); template<> ::pg_query::TargetEntry* Arena::CreateMaybeMessage<::pg_query::TargetEntry>(Arena*); template<> ::pg_query::TransactionStmt* Arena::CreateMaybeMessage<::pg_query::TransactionStmt>(Arena*); template<> ::pg_query::TriggerTransition* Arena::CreateMaybeMessage<::pg_query::TriggerTransition>(Arena*); template<> ::pg_query::TruncateStmt* Arena::CreateMaybeMessage<::pg_query::TruncateStmt>(Arena*); template<> ::pg_query::TypeCast* Arena::CreateMaybeMessage<::pg_query::TypeCast>(Arena*); template<> ::pg_query::TypeName* Arena::CreateMaybeMessage<::pg_query::TypeName>(Arena*); template<> ::pg_query::UnlistenStmt* Arena::CreateMaybeMessage<::pg_query::UnlistenStmt>(Arena*); template<> ::pg_query::UpdateStmt* Arena::CreateMaybeMessage<::pg_query::UpdateStmt>(Arena*); template<> ::pg_query::VacuumRelation* Arena::CreateMaybeMessage<::pg_query::VacuumRelation>(Arena*); template<> ::pg_query::VacuumStmt* Arena::CreateMaybeMessage<::pg_query::VacuumStmt>(Arena*); template<> ::pg_query::Var* Arena::CreateMaybeMessage<::pg_query::Var>(Arena*); template<> ::pg_query::VariableSetStmt* Arena::CreateMaybeMessage<::pg_query::VariableSetStmt>(Arena*); template<> ::pg_query::VariableShowStmt* Arena::CreateMaybeMessage<::pg_query::VariableShowStmt>(Arena*); template<> ::pg_query::ViewStmt* Arena::CreateMaybeMessage<::pg_query::ViewStmt>(Arena*); template<> ::pg_query::WindowClause* Arena::CreateMaybeMessage<::pg_query::WindowClause>(Arena*); template<> ::pg_query::WindowDef* Arena::CreateMaybeMessage<::pg_query::WindowDef>(Arena*); template<> ::pg_query::WindowFunc* Arena::CreateMaybeMessage<::pg_query::WindowFunc>(Arena*); template<> ::pg_query::WithCheckOption* Arena::CreateMaybeMessage<::pg_query::WithCheckOption>(Arena*); template<> ::pg_query::WithClause* Arena::CreateMaybeMessage<::pg_query::WithClause>(Arena*); template<> ::pg_query::XmlExpr* Arena::CreateMaybeMessage<::pg_query::XmlExpr>(Arena*); template<> ::pg_query::XmlSerialize* Arena::CreateMaybeMessage<::pg_query::XmlSerialize>(Arena*); PROTOBUF_NAMESPACE_CLOSE namespace pg_query { enum OverridingKind : int { OVERRIDING_KIND_UNDEFINED = 0, OVERRIDING_NOT_SET = 1, OVERRIDING_USER_VALUE = 2, OVERRIDING_SYSTEM_VALUE = 3, OverridingKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), OverridingKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool OverridingKind_IsValid(int value); constexpr OverridingKind OverridingKind_MIN = OVERRIDING_KIND_UNDEFINED; constexpr OverridingKind OverridingKind_MAX = OVERRIDING_SYSTEM_VALUE; constexpr int OverridingKind_ARRAYSIZE = OverridingKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OverridingKind_descriptor(); template inline const std::string& OverridingKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function OverridingKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( OverridingKind_descriptor(), enum_t_value); } inline bool OverridingKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OverridingKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( OverridingKind_descriptor(), name, value); } enum QuerySource : int { QUERY_SOURCE_UNDEFINED = 0, QSRC_ORIGINAL = 1, QSRC_PARSER = 2, QSRC_INSTEAD_RULE = 3, QSRC_QUAL_INSTEAD_RULE = 4, QSRC_NON_INSTEAD_RULE = 5, QuerySource_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), QuerySource_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool QuerySource_IsValid(int value); constexpr QuerySource QuerySource_MIN = QUERY_SOURCE_UNDEFINED; constexpr QuerySource QuerySource_MAX = QSRC_NON_INSTEAD_RULE; constexpr int QuerySource_ARRAYSIZE = QuerySource_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* QuerySource_descriptor(); template inline const std::string& QuerySource_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function QuerySource_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( QuerySource_descriptor(), enum_t_value); } inline bool QuerySource_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, QuerySource* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( QuerySource_descriptor(), name, value); } enum SortByDir : int { SORT_BY_DIR_UNDEFINED = 0, SORTBY_DEFAULT = 1, SORTBY_ASC = 2, SORTBY_DESC = 3, SORTBY_USING = 4, SortByDir_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), SortByDir_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool SortByDir_IsValid(int value); constexpr SortByDir SortByDir_MIN = SORT_BY_DIR_UNDEFINED; constexpr SortByDir SortByDir_MAX = SORTBY_USING; constexpr int SortByDir_ARRAYSIZE = SortByDir_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SortByDir_descriptor(); template inline const std::string& SortByDir_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SortByDir_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SortByDir_descriptor(), enum_t_value); } inline bool SortByDir_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SortByDir* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SortByDir_descriptor(), name, value); } enum SortByNulls : int { SORT_BY_NULLS_UNDEFINED = 0, SORTBY_NULLS_DEFAULT = 1, SORTBY_NULLS_FIRST = 2, SORTBY_NULLS_LAST = 3, SortByNulls_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), SortByNulls_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool SortByNulls_IsValid(int value); constexpr SortByNulls SortByNulls_MIN = SORT_BY_NULLS_UNDEFINED; constexpr SortByNulls SortByNulls_MAX = SORTBY_NULLS_LAST; constexpr int SortByNulls_ARRAYSIZE = SortByNulls_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SortByNulls_descriptor(); template inline const std::string& SortByNulls_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SortByNulls_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SortByNulls_descriptor(), enum_t_value); } inline bool SortByNulls_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SortByNulls* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SortByNulls_descriptor(), name, value); } enum A_Expr_Kind : int { A_EXPR_KIND_UNDEFINED = 0, AEXPR_OP = 1, AEXPR_OP_ANY = 2, AEXPR_OP_ALL = 3, AEXPR_DISTINCT = 4, AEXPR_NOT_DISTINCT = 5, AEXPR_NULLIF = 6, AEXPR_OF = 7, AEXPR_IN = 8, AEXPR_LIKE = 9, AEXPR_ILIKE = 10, AEXPR_SIMILAR = 11, AEXPR_BETWEEN = 12, AEXPR_NOT_BETWEEN = 13, AEXPR_BETWEEN_SYM = 14, AEXPR_NOT_BETWEEN_SYM = 15, AEXPR_PAREN = 16, A_Expr_Kind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), A_Expr_Kind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool A_Expr_Kind_IsValid(int value); constexpr A_Expr_Kind A_Expr_Kind_MIN = A_EXPR_KIND_UNDEFINED; constexpr A_Expr_Kind A_Expr_Kind_MAX = AEXPR_PAREN; constexpr int A_Expr_Kind_ARRAYSIZE = A_Expr_Kind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* A_Expr_Kind_descriptor(); template inline const std::string& A_Expr_Kind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function A_Expr_Kind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( A_Expr_Kind_descriptor(), enum_t_value); } inline bool A_Expr_Kind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, A_Expr_Kind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( A_Expr_Kind_descriptor(), name, value); } enum RoleSpecType : int { ROLE_SPEC_TYPE_UNDEFINED = 0, ROLESPEC_CSTRING = 1, ROLESPEC_CURRENT_USER = 2, ROLESPEC_SESSION_USER = 3, ROLESPEC_PUBLIC = 4, RoleSpecType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), RoleSpecType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool RoleSpecType_IsValid(int value); constexpr RoleSpecType RoleSpecType_MIN = ROLE_SPEC_TYPE_UNDEFINED; constexpr RoleSpecType RoleSpecType_MAX = ROLESPEC_PUBLIC; constexpr int RoleSpecType_ARRAYSIZE = RoleSpecType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RoleSpecType_descriptor(); template inline const std::string& RoleSpecType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function RoleSpecType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( RoleSpecType_descriptor(), enum_t_value); } inline bool RoleSpecType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RoleSpecType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( RoleSpecType_descriptor(), name, value); } enum TableLikeOption : int { TABLE_LIKE_OPTION_UNDEFINED = 0, CREATE_TABLE_LIKE_COMMENTS = 1, CREATE_TABLE_LIKE_CONSTRAINTS = 2, CREATE_TABLE_LIKE_DEFAULTS = 3, CREATE_TABLE_LIKE_GENERATED = 4, CREATE_TABLE_LIKE_IDENTITY = 5, CREATE_TABLE_LIKE_INDEXES = 6, CREATE_TABLE_LIKE_STATISTICS = 7, CREATE_TABLE_LIKE_STORAGE = 8, CREATE_TABLE_LIKE_ALL = 9, TableLikeOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), TableLikeOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool TableLikeOption_IsValid(int value); constexpr TableLikeOption TableLikeOption_MIN = TABLE_LIKE_OPTION_UNDEFINED; constexpr TableLikeOption TableLikeOption_MAX = CREATE_TABLE_LIKE_ALL; constexpr int TableLikeOption_ARRAYSIZE = TableLikeOption_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TableLikeOption_descriptor(); template inline const std::string& TableLikeOption_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function TableLikeOption_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( TableLikeOption_descriptor(), enum_t_value); } inline bool TableLikeOption_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TableLikeOption* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( TableLikeOption_descriptor(), name, value); } enum DefElemAction : int { DEF_ELEM_ACTION_UNDEFINED = 0, DEFELEM_UNSPEC = 1, DEFELEM_SET = 2, DEFELEM_ADD = 3, DEFELEM_DROP = 4, DefElemAction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), DefElemAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool DefElemAction_IsValid(int value); constexpr DefElemAction DefElemAction_MIN = DEF_ELEM_ACTION_UNDEFINED; constexpr DefElemAction DefElemAction_MAX = DEFELEM_DROP; constexpr int DefElemAction_ARRAYSIZE = DefElemAction_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DefElemAction_descriptor(); template inline const std::string& DefElemAction_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function DefElemAction_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( DefElemAction_descriptor(), enum_t_value); } inline bool DefElemAction_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, DefElemAction* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( DefElemAction_descriptor(), name, value); } enum PartitionRangeDatumKind : int { PARTITION_RANGE_DATUM_KIND_UNDEFINED = 0, PARTITION_RANGE_DATUM_MINVALUE = 1, PARTITION_RANGE_DATUM_VALUE = 2, PARTITION_RANGE_DATUM_MAXVALUE = 3, PartitionRangeDatumKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), PartitionRangeDatumKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool PartitionRangeDatumKind_IsValid(int value); constexpr PartitionRangeDatumKind PartitionRangeDatumKind_MIN = PARTITION_RANGE_DATUM_KIND_UNDEFINED; constexpr PartitionRangeDatumKind PartitionRangeDatumKind_MAX = PARTITION_RANGE_DATUM_MAXVALUE; constexpr int PartitionRangeDatumKind_ARRAYSIZE = PartitionRangeDatumKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PartitionRangeDatumKind_descriptor(); template inline const std::string& PartitionRangeDatumKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function PartitionRangeDatumKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( PartitionRangeDatumKind_descriptor(), enum_t_value); } inline bool PartitionRangeDatumKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, PartitionRangeDatumKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( PartitionRangeDatumKind_descriptor(), name, value); } enum RTEKind : int { RTEKIND_UNDEFINED = 0, RTE_RELATION = 1, RTE_SUBQUERY = 2, RTE_JOIN = 3, RTE_FUNCTION = 4, RTE_TABLEFUNC = 5, RTE_VALUES = 6, RTE_CTE = 7, RTE_NAMEDTUPLESTORE = 8, RTE_RESULT = 9, RTEKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), RTEKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool RTEKind_IsValid(int value); constexpr RTEKind RTEKind_MIN = RTEKIND_UNDEFINED; constexpr RTEKind RTEKind_MAX = RTE_RESULT; constexpr int RTEKind_ARRAYSIZE = RTEKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RTEKind_descriptor(); template inline const std::string& RTEKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function RTEKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( RTEKind_descriptor(), enum_t_value); } inline bool RTEKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RTEKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( RTEKind_descriptor(), name, value); } enum WCOKind : int { WCOKIND_UNDEFINED = 0, WCO_VIEW_CHECK = 1, WCO_RLS_INSERT_CHECK = 2, WCO_RLS_UPDATE_CHECK = 3, WCO_RLS_CONFLICT_CHECK = 4, WCOKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), WCOKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool WCOKind_IsValid(int value); constexpr WCOKind WCOKind_MIN = WCOKIND_UNDEFINED; constexpr WCOKind WCOKind_MAX = WCO_RLS_CONFLICT_CHECK; constexpr int WCOKind_ARRAYSIZE = WCOKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* WCOKind_descriptor(); template inline const std::string& WCOKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function WCOKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( WCOKind_descriptor(), enum_t_value); } inline bool WCOKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, WCOKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( WCOKind_descriptor(), name, value); } enum GroupingSetKind : int { GROUPING_SET_KIND_UNDEFINED = 0, GROUPING_SET_EMPTY = 1, GROUPING_SET_SIMPLE = 2, GROUPING_SET_ROLLUP = 3, GROUPING_SET_CUBE = 4, GROUPING_SET_SETS = 5, GroupingSetKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), GroupingSetKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool GroupingSetKind_IsValid(int value); constexpr GroupingSetKind GroupingSetKind_MIN = GROUPING_SET_KIND_UNDEFINED; constexpr GroupingSetKind GroupingSetKind_MAX = GROUPING_SET_SETS; constexpr int GroupingSetKind_ARRAYSIZE = GroupingSetKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GroupingSetKind_descriptor(); template inline const std::string& GroupingSetKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function GroupingSetKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( GroupingSetKind_descriptor(), enum_t_value); } inline bool GroupingSetKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, GroupingSetKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( GroupingSetKind_descriptor(), name, value); } enum CTEMaterialize : int { CTEMATERIALIZE_UNDEFINED = 0, CTEMaterializeDefault = 1, CTEMaterializeAlways = 2, CTEMaterializeNever = 3, CTEMaterialize_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), CTEMaterialize_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool CTEMaterialize_IsValid(int value); constexpr CTEMaterialize CTEMaterialize_MIN = CTEMATERIALIZE_UNDEFINED; constexpr CTEMaterialize CTEMaterialize_MAX = CTEMaterializeNever; constexpr int CTEMaterialize_ARRAYSIZE = CTEMaterialize_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CTEMaterialize_descriptor(); template inline const std::string& CTEMaterialize_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function CTEMaterialize_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( CTEMaterialize_descriptor(), enum_t_value); } inline bool CTEMaterialize_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CTEMaterialize* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( CTEMaterialize_descriptor(), name, value); } enum SetOperation : int { SET_OPERATION_UNDEFINED = 0, SETOP_NONE = 1, SETOP_UNION = 2, SETOP_INTERSECT = 3, SETOP_EXCEPT = 4, SetOperation_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), SetOperation_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool SetOperation_IsValid(int value); constexpr SetOperation SetOperation_MIN = SET_OPERATION_UNDEFINED; constexpr SetOperation SetOperation_MAX = SETOP_EXCEPT; constexpr int SetOperation_ARRAYSIZE = SetOperation_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOperation_descriptor(); template inline const std::string& SetOperation_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SetOperation_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SetOperation_descriptor(), enum_t_value); } inline bool SetOperation_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SetOperation* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SetOperation_descriptor(), name, value); } enum ObjectType : int { OBJECT_TYPE_UNDEFINED = 0, OBJECT_ACCESS_METHOD = 1, OBJECT_AGGREGATE = 2, OBJECT_AMOP = 3, OBJECT_AMPROC = 4, OBJECT_ATTRIBUTE = 5, OBJECT_CAST = 6, OBJECT_COLUMN = 7, OBJECT_COLLATION = 8, OBJECT_CONVERSION = 9, OBJECT_DATABASE = 10, OBJECT_DEFAULT = 11, OBJECT_DEFACL = 12, OBJECT_DOMAIN = 13, OBJECT_DOMCONSTRAINT = 14, OBJECT_EVENT_TRIGGER = 15, OBJECT_EXTENSION = 16, OBJECT_FDW = 17, OBJECT_FOREIGN_SERVER = 18, OBJECT_FOREIGN_TABLE = 19, OBJECT_FUNCTION = 20, OBJECT_INDEX = 21, OBJECT_LANGUAGE = 22, OBJECT_LARGEOBJECT = 23, OBJECT_MATVIEW = 24, OBJECT_OPCLASS = 25, OBJECT_OPERATOR = 26, OBJECT_OPFAMILY = 27, OBJECT_POLICY = 28, OBJECT_PROCEDURE = 29, OBJECT_PUBLICATION = 30, OBJECT_PUBLICATION_REL = 31, OBJECT_ROLE = 32, OBJECT_ROUTINE = 33, OBJECT_RULE = 34, OBJECT_SCHEMA = 35, OBJECT_SEQUENCE = 36, OBJECT_SUBSCRIPTION = 37, OBJECT_STATISTIC_EXT = 38, OBJECT_TABCONSTRAINT = 39, OBJECT_TABLE = 40, OBJECT_TABLESPACE = 41, OBJECT_TRANSFORM = 42, OBJECT_TRIGGER = 43, OBJECT_TSCONFIGURATION = 44, OBJECT_TSDICTIONARY = 45, OBJECT_TSPARSER = 46, OBJECT_TSTEMPLATE = 47, OBJECT_TYPE = 48, OBJECT_USER_MAPPING = 49, OBJECT_VIEW = 50, ObjectType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), ObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool ObjectType_IsValid(int value); constexpr ObjectType ObjectType_MIN = OBJECT_TYPE_UNDEFINED; constexpr ObjectType ObjectType_MAX = OBJECT_VIEW; constexpr int ObjectType_ARRAYSIZE = ObjectType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ObjectType_descriptor(); template inline const std::string& ObjectType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ObjectType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ObjectType_descriptor(), enum_t_value); } inline bool ObjectType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ObjectType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ObjectType_descriptor(), name, value); } enum DropBehavior : int { DROP_BEHAVIOR_UNDEFINED = 0, DROP_RESTRICT = 1, DROP_CASCADE = 2, DropBehavior_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), DropBehavior_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool DropBehavior_IsValid(int value); constexpr DropBehavior DropBehavior_MIN = DROP_BEHAVIOR_UNDEFINED; constexpr DropBehavior DropBehavior_MAX = DROP_CASCADE; constexpr int DropBehavior_ARRAYSIZE = DropBehavior_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DropBehavior_descriptor(); template inline const std::string& DropBehavior_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function DropBehavior_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( DropBehavior_descriptor(), enum_t_value); } inline bool DropBehavior_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, DropBehavior* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( DropBehavior_descriptor(), name, value); } enum AlterTableType : int { ALTER_TABLE_TYPE_UNDEFINED = 0, AT_AddColumn = 1, AT_AddColumnRecurse = 2, AT_AddColumnToView = 3, AT_ColumnDefault = 4, AT_CookedColumnDefault = 5, AT_DropNotNull = 6, AT_SetNotNull = 7, AT_DropExpression = 8, AT_CheckNotNull = 9, AT_SetStatistics = 10, AT_SetOptions = 11, AT_ResetOptions = 12, AT_SetStorage = 13, AT_DropColumn = 14, AT_DropColumnRecurse = 15, AT_AddIndex = 16, AT_ReAddIndex = 17, AT_AddConstraint = 18, AT_AddConstraintRecurse = 19, AT_ReAddConstraint = 20, AT_ReAddDomainConstraint = 21, AT_AlterConstraint = 22, AT_ValidateConstraint = 23, AT_ValidateConstraintRecurse = 24, AT_AddIndexConstraint = 25, AT_DropConstraint = 26, AT_DropConstraintRecurse = 27, AT_ReAddComment = 28, AT_AlterColumnType = 29, AT_AlterColumnGenericOptions = 30, AT_ChangeOwner = 31, AT_ClusterOn = 32, AT_DropCluster = 33, AT_SetLogged = 34, AT_SetUnLogged = 35, AT_DropOids = 36, AT_SetTableSpace = 37, AT_SetRelOptions = 38, AT_ResetRelOptions = 39, AT_ReplaceRelOptions = 40, AT_EnableTrig = 41, AT_EnableAlwaysTrig = 42, AT_EnableReplicaTrig = 43, AT_DisableTrig = 44, AT_EnableTrigAll = 45, AT_DisableTrigAll = 46, AT_EnableTrigUser = 47, AT_DisableTrigUser = 48, AT_EnableRule = 49, AT_EnableAlwaysRule = 50, AT_EnableReplicaRule = 51, AT_DisableRule = 52, AT_AddInherit = 53, AT_DropInherit = 54, AT_AddOf = 55, AT_DropOf = 56, AT_ReplicaIdentity = 57, AT_EnableRowSecurity = 58, AT_DisableRowSecurity = 59, AT_ForceRowSecurity = 60, AT_NoForceRowSecurity = 61, AT_GenericOptions = 62, AT_AttachPartition = 63, AT_DetachPartition = 64, AT_AddIdentity = 65, AT_SetIdentity = 66, AT_DropIdentity = 67, AlterTableType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), AlterTableType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool AlterTableType_IsValid(int value); constexpr AlterTableType AlterTableType_MIN = ALTER_TABLE_TYPE_UNDEFINED; constexpr AlterTableType AlterTableType_MAX = AT_DropIdentity; constexpr int AlterTableType_ARRAYSIZE = AlterTableType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterTableType_descriptor(); template inline const std::string& AlterTableType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AlterTableType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AlterTableType_descriptor(), enum_t_value); } inline bool AlterTableType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AlterTableType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( AlterTableType_descriptor(), name, value); } enum GrantTargetType : int { GRANT_TARGET_TYPE_UNDEFINED = 0, ACL_TARGET_OBJECT = 1, ACL_TARGET_ALL_IN_SCHEMA = 2, ACL_TARGET_DEFAULTS = 3, GrantTargetType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), GrantTargetType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool GrantTargetType_IsValid(int value); constexpr GrantTargetType GrantTargetType_MIN = GRANT_TARGET_TYPE_UNDEFINED; constexpr GrantTargetType GrantTargetType_MAX = ACL_TARGET_DEFAULTS; constexpr int GrantTargetType_ARRAYSIZE = GrantTargetType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* GrantTargetType_descriptor(); template inline const std::string& GrantTargetType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function GrantTargetType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( GrantTargetType_descriptor(), enum_t_value); } inline bool GrantTargetType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, GrantTargetType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( GrantTargetType_descriptor(), name, value); } enum VariableSetKind : int { VARIABLE_SET_KIND_UNDEFINED = 0, VAR_SET_VALUE = 1, VAR_SET_DEFAULT = 2, VAR_SET_CURRENT = 3, VAR_SET_MULTI = 4, VAR_RESET = 5, VAR_RESET_ALL = 6, VariableSetKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), VariableSetKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool VariableSetKind_IsValid(int value); constexpr VariableSetKind VariableSetKind_MIN = VARIABLE_SET_KIND_UNDEFINED; constexpr VariableSetKind VariableSetKind_MAX = VAR_RESET_ALL; constexpr int VariableSetKind_ARRAYSIZE = VariableSetKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* VariableSetKind_descriptor(); template inline const std::string& VariableSetKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function VariableSetKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( VariableSetKind_descriptor(), enum_t_value); } inline bool VariableSetKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, VariableSetKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( VariableSetKind_descriptor(), name, value); } enum ConstrType : int { CONSTR_TYPE_UNDEFINED = 0, CONSTR_NULL = 1, CONSTR_NOTNULL = 2, CONSTR_DEFAULT = 3, CONSTR_IDENTITY = 4, CONSTR_GENERATED = 5, CONSTR_CHECK = 6, CONSTR_PRIMARY = 7, CONSTR_UNIQUE = 8, CONSTR_EXCLUSION = 9, CONSTR_FOREIGN = 10, CONSTR_ATTR_DEFERRABLE = 11, CONSTR_ATTR_NOT_DEFERRABLE = 12, CONSTR_ATTR_DEFERRED = 13, CONSTR_ATTR_IMMEDIATE = 14, ConstrType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), ConstrType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool ConstrType_IsValid(int value); constexpr ConstrType ConstrType_MIN = CONSTR_TYPE_UNDEFINED; constexpr ConstrType ConstrType_MAX = CONSTR_ATTR_IMMEDIATE; constexpr int ConstrType_ARRAYSIZE = ConstrType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ConstrType_descriptor(); template inline const std::string& ConstrType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ConstrType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ConstrType_descriptor(), enum_t_value); } inline bool ConstrType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ConstrType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ConstrType_descriptor(), name, value); } enum ImportForeignSchemaType : int { IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED = 0, FDW_IMPORT_SCHEMA_ALL = 1, FDW_IMPORT_SCHEMA_LIMIT_TO = 2, FDW_IMPORT_SCHEMA_EXCEPT = 3, ImportForeignSchemaType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), ImportForeignSchemaType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool ImportForeignSchemaType_IsValid(int value); constexpr ImportForeignSchemaType ImportForeignSchemaType_MIN = IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED; constexpr ImportForeignSchemaType ImportForeignSchemaType_MAX = FDW_IMPORT_SCHEMA_EXCEPT; constexpr int ImportForeignSchemaType_ARRAYSIZE = ImportForeignSchemaType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ImportForeignSchemaType_descriptor(); template inline const std::string& ImportForeignSchemaType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ImportForeignSchemaType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ImportForeignSchemaType_descriptor(), enum_t_value); } inline bool ImportForeignSchemaType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ImportForeignSchemaType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ImportForeignSchemaType_descriptor(), name, value); } enum RoleStmtType : int { ROLE_STMT_TYPE_UNDEFINED = 0, ROLESTMT_ROLE = 1, ROLESTMT_USER = 2, ROLESTMT_GROUP = 3, RoleStmtType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), RoleStmtType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool RoleStmtType_IsValid(int value); constexpr RoleStmtType RoleStmtType_MIN = ROLE_STMT_TYPE_UNDEFINED; constexpr RoleStmtType RoleStmtType_MAX = ROLESTMT_GROUP; constexpr int RoleStmtType_ARRAYSIZE = RoleStmtType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RoleStmtType_descriptor(); template inline const std::string& RoleStmtType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function RoleStmtType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( RoleStmtType_descriptor(), enum_t_value); } inline bool RoleStmtType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RoleStmtType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( RoleStmtType_descriptor(), name, value); } enum FetchDirection : int { FETCH_DIRECTION_UNDEFINED = 0, FETCH_FORWARD = 1, FETCH_BACKWARD = 2, FETCH_ABSOLUTE = 3, FETCH_RELATIVE = 4, FetchDirection_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), FetchDirection_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool FetchDirection_IsValid(int value); constexpr FetchDirection FetchDirection_MIN = FETCH_DIRECTION_UNDEFINED; constexpr FetchDirection FetchDirection_MAX = FETCH_RELATIVE; constexpr int FetchDirection_ARRAYSIZE = FetchDirection_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FetchDirection_descriptor(); template inline const std::string& FetchDirection_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function FetchDirection_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( FetchDirection_descriptor(), enum_t_value); } inline bool FetchDirection_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FetchDirection* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( FetchDirection_descriptor(), name, value); } enum FunctionParameterMode : int { FUNCTION_PARAMETER_MODE_UNDEFINED = 0, FUNC_PARAM_IN = 1, FUNC_PARAM_OUT = 2, FUNC_PARAM_INOUT = 3, FUNC_PARAM_VARIADIC = 4, FUNC_PARAM_TABLE = 5, FunctionParameterMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), FunctionParameterMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool FunctionParameterMode_IsValid(int value); constexpr FunctionParameterMode FunctionParameterMode_MIN = FUNCTION_PARAMETER_MODE_UNDEFINED; constexpr FunctionParameterMode FunctionParameterMode_MAX = FUNC_PARAM_TABLE; constexpr int FunctionParameterMode_ARRAYSIZE = FunctionParameterMode_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FunctionParameterMode_descriptor(); template inline const std::string& FunctionParameterMode_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function FunctionParameterMode_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( FunctionParameterMode_descriptor(), enum_t_value); } inline bool FunctionParameterMode_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FunctionParameterMode* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( FunctionParameterMode_descriptor(), name, value); } enum TransactionStmtKind : int { TRANSACTION_STMT_KIND_UNDEFINED = 0, TRANS_STMT_BEGIN = 1, TRANS_STMT_START = 2, TRANS_STMT_COMMIT = 3, TRANS_STMT_ROLLBACK = 4, TRANS_STMT_SAVEPOINT = 5, TRANS_STMT_RELEASE = 6, TRANS_STMT_ROLLBACK_TO = 7, TRANS_STMT_PREPARE = 8, TRANS_STMT_COMMIT_PREPARED = 9, TRANS_STMT_ROLLBACK_PREPARED = 10, TransactionStmtKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), TransactionStmtKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool TransactionStmtKind_IsValid(int value); constexpr TransactionStmtKind TransactionStmtKind_MIN = TRANSACTION_STMT_KIND_UNDEFINED; constexpr TransactionStmtKind TransactionStmtKind_MAX = TRANS_STMT_ROLLBACK_PREPARED; constexpr int TransactionStmtKind_ARRAYSIZE = TransactionStmtKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TransactionStmtKind_descriptor(); template inline const std::string& TransactionStmtKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function TransactionStmtKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( TransactionStmtKind_descriptor(), enum_t_value); } inline bool TransactionStmtKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TransactionStmtKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( TransactionStmtKind_descriptor(), name, value); } enum ViewCheckOption : int { VIEW_CHECK_OPTION_UNDEFINED = 0, NO_CHECK_OPTION = 1, LOCAL_CHECK_OPTION = 2, CASCADED_CHECK_OPTION = 3, ViewCheckOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), ViewCheckOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool ViewCheckOption_IsValid(int value); constexpr ViewCheckOption ViewCheckOption_MIN = VIEW_CHECK_OPTION_UNDEFINED; constexpr ViewCheckOption ViewCheckOption_MAX = CASCADED_CHECK_OPTION; constexpr int ViewCheckOption_ARRAYSIZE = ViewCheckOption_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ViewCheckOption_descriptor(); template inline const std::string& ViewCheckOption_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ViewCheckOption_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ViewCheckOption_descriptor(), enum_t_value); } inline bool ViewCheckOption_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ViewCheckOption* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ViewCheckOption_descriptor(), name, value); } enum ClusterOption : int { CLUSTER_OPTION_UNDEFINED = 0, CLUOPT_RECHECK = 1, CLUOPT_VERBOSE = 2, ClusterOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), ClusterOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool ClusterOption_IsValid(int value); constexpr ClusterOption ClusterOption_MIN = CLUSTER_OPTION_UNDEFINED; constexpr ClusterOption ClusterOption_MAX = CLUOPT_VERBOSE; constexpr int ClusterOption_ARRAYSIZE = ClusterOption_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ClusterOption_descriptor(); template inline const std::string& ClusterOption_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ClusterOption_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ClusterOption_descriptor(), enum_t_value); } inline bool ClusterOption_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ClusterOption* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ClusterOption_descriptor(), name, value); } enum DiscardMode : int { DISCARD_MODE_UNDEFINED = 0, DISCARD_ALL = 1, DISCARD_PLANS = 2, DISCARD_SEQUENCES = 3, DISCARD_TEMP = 4, DiscardMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), DiscardMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool DiscardMode_IsValid(int value); constexpr DiscardMode DiscardMode_MIN = DISCARD_MODE_UNDEFINED; constexpr DiscardMode DiscardMode_MAX = DISCARD_TEMP; constexpr int DiscardMode_ARRAYSIZE = DiscardMode_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DiscardMode_descriptor(); template inline const std::string& DiscardMode_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function DiscardMode_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( DiscardMode_descriptor(), enum_t_value); } inline bool DiscardMode_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, DiscardMode* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( DiscardMode_descriptor(), name, value); } enum ReindexObjectType : int { REINDEX_OBJECT_TYPE_UNDEFINED = 0, REINDEX_OBJECT_INDEX = 1, REINDEX_OBJECT_TABLE = 2, REINDEX_OBJECT_SCHEMA = 3, REINDEX_OBJECT_SYSTEM = 4, REINDEX_OBJECT_DATABASE = 5, ReindexObjectType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), ReindexObjectType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool ReindexObjectType_IsValid(int value); constexpr ReindexObjectType ReindexObjectType_MIN = REINDEX_OBJECT_TYPE_UNDEFINED; constexpr ReindexObjectType ReindexObjectType_MAX = REINDEX_OBJECT_DATABASE; constexpr int ReindexObjectType_ARRAYSIZE = ReindexObjectType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ReindexObjectType_descriptor(); template inline const std::string& ReindexObjectType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ReindexObjectType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ReindexObjectType_descriptor(), enum_t_value); } inline bool ReindexObjectType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ReindexObjectType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ReindexObjectType_descriptor(), name, value); } enum AlterTSConfigType : int { ALTER_TSCONFIG_TYPE_UNDEFINED = 0, ALTER_TSCONFIG_ADD_MAPPING = 1, ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN = 2, ALTER_TSCONFIG_REPLACE_DICT = 3, ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN = 4, ALTER_TSCONFIG_DROP_MAPPING = 5, AlterTSConfigType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), AlterTSConfigType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool AlterTSConfigType_IsValid(int value); constexpr AlterTSConfigType AlterTSConfigType_MIN = ALTER_TSCONFIG_TYPE_UNDEFINED; constexpr AlterTSConfigType AlterTSConfigType_MAX = ALTER_TSCONFIG_DROP_MAPPING; constexpr int AlterTSConfigType_ARRAYSIZE = AlterTSConfigType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterTSConfigType_descriptor(); template inline const std::string& AlterTSConfigType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AlterTSConfigType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AlterTSConfigType_descriptor(), enum_t_value); } inline bool AlterTSConfigType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AlterTSConfigType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( AlterTSConfigType_descriptor(), name, value); } enum AlterSubscriptionType : int { ALTER_SUBSCRIPTION_TYPE_UNDEFINED = 0, ALTER_SUBSCRIPTION_OPTIONS = 1, ALTER_SUBSCRIPTION_CONNECTION = 2, ALTER_SUBSCRIPTION_PUBLICATION = 3, ALTER_SUBSCRIPTION_REFRESH = 4, ALTER_SUBSCRIPTION_ENABLED = 5, AlterSubscriptionType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), AlterSubscriptionType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool AlterSubscriptionType_IsValid(int value); constexpr AlterSubscriptionType AlterSubscriptionType_MIN = ALTER_SUBSCRIPTION_TYPE_UNDEFINED; constexpr AlterSubscriptionType AlterSubscriptionType_MAX = ALTER_SUBSCRIPTION_ENABLED; constexpr int AlterSubscriptionType_ARRAYSIZE = AlterSubscriptionType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AlterSubscriptionType_descriptor(); template inline const std::string& AlterSubscriptionType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AlterSubscriptionType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AlterSubscriptionType_descriptor(), enum_t_value); } inline bool AlterSubscriptionType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AlterSubscriptionType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( AlterSubscriptionType_descriptor(), name, value); } enum OnCommitAction : int { ON_COMMIT_ACTION_UNDEFINED = 0, ONCOMMIT_NOOP = 1, ONCOMMIT_PRESERVE_ROWS = 2, ONCOMMIT_DELETE_ROWS = 3, ONCOMMIT_DROP = 4, OnCommitAction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), OnCommitAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool OnCommitAction_IsValid(int value); constexpr OnCommitAction OnCommitAction_MIN = ON_COMMIT_ACTION_UNDEFINED; constexpr OnCommitAction OnCommitAction_MAX = ONCOMMIT_DROP; constexpr int OnCommitAction_ARRAYSIZE = OnCommitAction_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OnCommitAction_descriptor(); template inline const std::string& OnCommitAction_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function OnCommitAction_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( OnCommitAction_descriptor(), enum_t_value); } inline bool OnCommitAction_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OnCommitAction* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( OnCommitAction_descriptor(), name, value); } enum ParamKind : int { PARAM_KIND_UNDEFINED = 0, PARAM_EXTERN = 1, PARAM_EXEC = 2, PARAM_SUBLINK = 3, PARAM_MULTIEXPR = 4, ParamKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), ParamKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool ParamKind_IsValid(int value); constexpr ParamKind ParamKind_MIN = PARAM_KIND_UNDEFINED; constexpr ParamKind ParamKind_MAX = PARAM_MULTIEXPR; constexpr int ParamKind_ARRAYSIZE = ParamKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ParamKind_descriptor(); template inline const std::string& ParamKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function ParamKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( ParamKind_descriptor(), enum_t_value); } inline bool ParamKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ParamKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( ParamKind_descriptor(), name, value); } enum CoercionContext : int { COERCION_CONTEXT_UNDEFINED = 0, COERCION_IMPLICIT = 1, COERCION_ASSIGNMENT = 2, COERCION_EXPLICIT = 3, CoercionContext_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), CoercionContext_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool CoercionContext_IsValid(int value); constexpr CoercionContext CoercionContext_MIN = COERCION_CONTEXT_UNDEFINED; constexpr CoercionContext CoercionContext_MAX = COERCION_EXPLICIT; constexpr int CoercionContext_ARRAYSIZE = CoercionContext_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CoercionContext_descriptor(); template inline const std::string& CoercionContext_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function CoercionContext_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( CoercionContext_descriptor(), enum_t_value); } inline bool CoercionContext_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CoercionContext* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( CoercionContext_descriptor(), name, value); } enum CoercionForm : int { COERCION_FORM_UNDEFINED = 0, COERCE_EXPLICIT_CALL = 1, COERCE_EXPLICIT_CAST = 2, COERCE_IMPLICIT_CAST = 3, CoercionForm_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), CoercionForm_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool CoercionForm_IsValid(int value); constexpr CoercionForm CoercionForm_MIN = COERCION_FORM_UNDEFINED; constexpr CoercionForm CoercionForm_MAX = COERCE_IMPLICIT_CAST; constexpr int CoercionForm_ARRAYSIZE = CoercionForm_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CoercionForm_descriptor(); template inline const std::string& CoercionForm_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function CoercionForm_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( CoercionForm_descriptor(), enum_t_value); } inline bool CoercionForm_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CoercionForm* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( CoercionForm_descriptor(), name, value); } enum BoolExprType : int { BOOL_EXPR_TYPE_UNDEFINED = 0, AND_EXPR = 1, OR_EXPR = 2, NOT_EXPR = 3, BoolExprType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), BoolExprType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool BoolExprType_IsValid(int value); constexpr BoolExprType BoolExprType_MIN = BOOL_EXPR_TYPE_UNDEFINED; constexpr BoolExprType BoolExprType_MAX = NOT_EXPR; constexpr int BoolExprType_ARRAYSIZE = BoolExprType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* BoolExprType_descriptor(); template inline const std::string& BoolExprType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function BoolExprType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( BoolExprType_descriptor(), enum_t_value); } inline bool BoolExprType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, BoolExprType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( BoolExprType_descriptor(), name, value); } enum SubLinkType : int { SUB_LINK_TYPE_UNDEFINED = 0, EXISTS_SUBLINK = 1, ALL_SUBLINK = 2, ANY_SUBLINK = 3, ROWCOMPARE_SUBLINK = 4, EXPR_SUBLINK = 5, MULTIEXPR_SUBLINK = 6, ARRAY_SUBLINK = 7, CTE_SUBLINK = 8, SubLinkType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), SubLinkType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool SubLinkType_IsValid(int value); constexpr SubLinkType SubLinkType_MIN = SUB_LINK_TYPE_UNDEFINED; constexpr SubLinkType SubLinkType_MAX = CTE_SUBLINK; constexpr int SubLinkType_ARRAYSIZE = SubLinkType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SubLinkType_descriptor(); template inline const std::string& SubLinkType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SubLinkType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SubLinkType_descriptor(), enum_t_value); } inline bool SubLinkType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SubLinkType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SubLinkType_descriptor(), name, value); } enum RowCompareType : int { ROW_COMPARE_TYPE_UNDEFINED = 0, ROWCOMPARE_LT = 1, ROWCOMPARE_LE = 2, ROWCOMPARE_EQ = 3, ROWCOMPARE_GE = 4, ROWCOMPARE_GT = 5, ROWCOMPARE_NE = 6, RowCompareType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), RowCompareType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool RowCompareType_IsValid(int value); constexpr RowCompareType RowCompareType_MIN = ROW_COMPARE_TYPE_UNDEFINED; constexpr RowCompareType RowCompareType_MAX = ROWCOMPARE_NE; constexpr int RowCompareType_ARRAYSIZE = RowCompareType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RowCompareType_descriptor(); template inline const std::string& RowCompareType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function RowCompareType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( RowCompareType_descriptor(), enum_t_value); } inline bool RowCompareType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, RowCompareType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( RowCompareType_descriptor(), name, value); } enum MinMaxOp : int { MIN_MAX_OP_UNDEFINED = 0, IS_GREATEST = 1, IS_LEAST = 2, MinMaxOp_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), MinMaxOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool MinMaxOp_IsValid(int value); constexpr MinMaxOp MinMaxOp_MIN = MIN_MAX_OP_UNDEFINED; constexpr MinMaxOp MinMaxOp_MAX = IS_LEAST; constexpr int MinMaxOp_ARRAYSIZE = MinMaxOp_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MinMaxOp_descriptor(); template inline const std::string& MinMaxOp_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function MinMaxOp_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( MinMaxOp_descriptor(), enum_t_value); } inline bool MinMaxOp_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, MinMaxOp* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( MinMaxOp_descriptor(), name, value); } enum SQLValueFunctionOp : int { SQLVALUE_FUNCTION_OP_UNDEFINED = 0, SVFOP_CURRENT_DATE = 1, SVFOP_CURRENT_TIME = 2, SVFOP_CURRENT_TIME_N = 3, SVFOP_CURRENT_TIMESTAMP = 4, SVFOP_CURRENT_TIMESTAMP_N = 5, SVFOP_LOCALTIME = 6, SVFOP_LOCALTIME_N = 7, SVFOP_LOCALTIMESTAMP = 8, SVFOP_LOCALTIMESTAMP_N = 9, SVFOP_CURRENT_ROLE = 10, SVFOP_CURRENT_USER = 11, SVFOP_USER = 12, SVFOP_SESSION_USER = 13, SVFOP_CURRENT_CATALOG = 14, SVFOP_CURRENT_SCHEMA = 15, SQLValueFunctionOp_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), SQLValueFunctionOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool SQLValueFunctionOp_IsValid(int value); constexpr SQLValueFunctionOp SQLValueFunctionOp_MIN = SQLVALUE_FUNCTION_OP_UNDEFINED; constexpr SQLValueFunctionOp SQLValueFunctionOp_MAX = SVFOP_CURRENT_SCHEMA; constexpr int SQLValueFunctionOp_ARRAYSIZE = SQLValueFunctionOp_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SQLValueFunctionOp_descriptor(); template inline const std::string& SQLValueFunctionOp_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SQLValueFunctionOp_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SQLValueFunctionOp_descriptor(), enum_t_value); } inline bool SQLValueFunctionOp_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SQLValueFunctionOp* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SQLValueFunctionOp_descriptor(), name, value); } enum XmlExprOp : int { XML_EXPR_OP_UNDEFINED = 0, IS_XMLCONCAT = 1, IS_XMLELEMENT = 2, IS_XMLFOREST = 3, IS_XMLPARSE = 4, IS_XMLPI = 5, IS_XMLROOT = 6, IS_XMLSERIALIZE = 7, IS_DOCUMENT = 8, XmlExprOp_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), XmlExprOp_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool XmlExprOp_IsValid(int value); constexpr XmlExprOp XmlExprOp_MIN = XML_EXPR_OP_UNDEFINED; constexpr XmlExprOp XmlExprOp_MAX = IS_DOCUMENT; constexpr int XmlExprOp_ARRAYSIZE = XmlExprOp_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* XmlExprOp_descriptor(); template inline const std::string& XmlExprOp_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function XmlExprOp_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( XmlExprOp_descriptor(), enum_t_value); } inline bool XmlExprOp_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, XmlExprOp* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( XmlExprOp_descriptor(), name, value); } enum XmlOptionType : int { XML_OPTION_TYPE_UNDEFINED = 0, XMLOPTION_DOCUMENT = 1, XMLOPTION_CONTENT = 2, XmlOptionType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), XmlOptionType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool XmlOptionType_IsValid(int value); constexpr XmlOptionType XmlOptionType_MIN = XML_OPTION_TYPE_UNDEFINED; constexpr XmlOptionType XmlOptionType_MAX = XMLOPTION_CONTENT; constexpr int XmlOptionType_ARRAYSIZE = XmlOptionType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* XmlOptionType_descriptor(); template inline const std::string& XmlOptionType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function XmlOptionType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( XmlOptionType_descriptor(), enum_t_value); } inline bool XmlOptionType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, XmlOptionType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( XmlOptionType_descriptor(), name, value); } enum NullTestType : int { NULL_TEST_TYPE_UNDEFINED = 0, IS_NULL = 1, IS_NOT_NULL = 2, NullTestType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), NullTestType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool NullTestType_IsValid(int value); constexpr NullTestType NullTestType_MIN = NULL_TEST_TYPE_UNDEFINED; constexpr NullTestType NullTestType_MAX = IS_NOT_NULL; constexpr int NullTestType_ARRAYSIZE = NullTestType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* NullTestType_descriptor(); template inline const std::string& NullTestType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function NullTestType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( NullTestType_descriptor(), enum_t_value); } inline bool NullTestType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, NullTestType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( NullTestType_descriptor(), name, value); } enum BoolTestType : int { BOOL_TEST_TYPE_UNDEFINED = 0, IS_TRUE = 1, IS_NOT_TRUE = 2, IS_FALSE = 3, IS_NOT_FALSE = 4, IS_UNKNOWN = 5, IS_NOT_UNKNOWN = 6, BoolTestType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), BoolTestType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool BoolTestType_IsValid(int value); constexpr BoolTestType BoolTestType_MIN = BOOL_TEST_TYPE_UNDEFINED; constexpr BoolTestType BoolTestType_MAX = IS_NOT_UNKNOWN; constexpr int BoolTestType_ARRAYSIZE = BoolTestType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* BoolTestType_descriptor(); template inline const std::string& BoolTestType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function BoolTestType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( BoolTestType_descriptor(), enum_t_value); } inline bool BoolTestType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, BoolTestType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( BoolTestType_descriptor(), name, value); } enum CmdType : int { CMD_TYPE_UNDEFINED = 0, CMD_UNKNOWN = 1, CMD_SELECT = 2, CMD_UPDATE = 3, CMD_INSERT = 4, CMD_DELETE = 5, CMD_UTILITY = 6, CMD_NOTHING = 7, CmdType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), CmdType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool CmdType_IsValid(int value); constexpr CmdType CmdType_MIN = CMD_TYPE_UNDEFINED; constexpr CmdType CmdType_MAX = CMD_NOTHING; constexpr int CmdType_ARRAYSIZE = CmdType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CmdType_descriptor(); template inline const std::string& CmdType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function CmdType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( CmdType_descriptor(), enum_t_value); } inline bool CmdType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, CmdType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( CmdType_descriptor(), name, value); } enum JoinType : int { JOIN_TYPE_UNDEFINED = 0, JOIN_INNER = 1, JOIN_LEFT = 2, JOIN_FULL = 3, JOIN_RIGHT = 4, JOIN_SEMI = 5, JOIN_ANTI = 6, JOIN_UNIQUE_OUTER = 7, JOIN_UNIQUE_INNER = 8, JoinType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), JoinType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool JoinType_IsValid(int value); constexpr JoinType JoinType_MIN = JOIN_TYPE_UNDEFINED; constexpr JoinType JoinType_MAX = JOIN_UNIQUE_INNER; constexpr int JoinType_ARRAYSIZE = JoinType_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* JoinType_descriptor(); template inline const std::string& JoinType_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function JoinType_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( JoinType_descriptor(), enum_t_value); } inline bool JoinType_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, JoinType* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( JoinType_descriptor(), name, value); } enum AggStrategy : int { AGG_STRATEGY_UNDEFINED = 0, AGG_PLAIN = 1, AGG_SORTED = 2, AGG_HASHED = 3, AGG_MIXED = 4, AggStrategy_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), AggStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool AggStrategy_IsValid(int value); constexpr AggStrategy AggStrategy_MIN = AGG_STRATEGY_UNDEFINED; constexpr AggStrategy AggStrategy_MAX = AGG_MIXED; constexpr int AggStrategy_ARRAYSIZE = AggStrategy_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AggStrategy_descriptor(); template inline const std::string& AggStrategy_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AggStrategy_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AggStrategy_descriptor(), enum_t_value); } inline bool AggStrategy_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AggStrategy* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( AggStrategy_descriptor(), name, value); } enum AggSplit : int { AGG_SPLIT_UNDEFINED = 0, AGGSPLIT_SIMPLE = 1, AGGSPLIT_INITIAL_SERIAL = 2, AGGSPLIT_FINAL_DESERIAL = 3, AggSplit_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), AggSplit_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool AggSplit_IsValid(int value); constexpr AggSplit AggSplit_MIN = AGG_SPLIT_UNDEFINED; constexpr AggSplit AggSplit_MAX = AGGSPLIT_FINAL_DESERIAL; constexpr int AggSplit_ARRAYSIZE = AggSplit_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AggSplit_descriptor(); template inline const std::string& AggSplit_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function AggSplit_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( AggSplit_descriptor(), enum_t_value); } inline bool AggSplit_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AggSplit* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( AggSplit_descriptor(), name, value); } enum SetOpCmd : int { SET_OP_CMD_UNDEFINED = 0, SETOPCMD_INTERSECT = 1, SETOPCMD_INTERSECT_ALL = 2, SETOPCMD_EXCEPT = 3, SETOPCMD_EXCEPT_ALL = 4, SetOpCmd_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), SetOpCmd_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool SetOpCmd_IsValid(int value); constexpr SetOpCmd SetOpCmd_MIN = SET_OP_CMD_UNDEFINED; constexpr SetOpCmd SetOpCmd_MAX = SETOPCMD_EXCEPT_ALL; constexpr int SetOpCmd_ARRAYSIZE = SetOpCmd_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOpCmd_descriptor(); template inline const std::string& SetOpCmd_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SetOpCmd_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SetOpCmd_descriptor(), enum_t_value); } inline bool SetOpCmd_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SetOpCmd* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SetOpCmd_descriptor(), name, value); } enum SetOpStrategy : int { SET_OP_STRATEGY_UNDEFINED = 0, SETOP_SORTED = 1, SETOP_HASHED = 2, SetOpStrategy_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), SetOpStrategy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool SetOpStrategy_IsValid(int value); constexpr SetOpStrategy SetOpStrategy_MIN = SET_OP_STRATEGY_UNDEFINED; constexpr SetOpStrategy SetOpStrategy_MAX = SETOP_HASHED; constexpr int SetOpStrategy_ARRAYSIZE = SetOpStrategy_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SetOpStrategy_descriptor(); template inline const std::string& SetOpStrategy_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function SetOpStrategy_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( SetOpStrategy_descriptor(), enum_t_value); } inline bool SetOpStrategy_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, SetOpStrategy* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( SetOpStrategy_descriptor(), name, value); } enum OnConflictAction : int { ON_CONFLICT_ACTION_UNDEFINED = 0, ONCONFLICT_NONE = 1, ONCONFLICT_NOTHING = 2, ONCONFLICT_UPDATE = 3, OnConflictAction_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), OnConflictAction_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool OnConflictAction_IsValid(int value); constexpr OnConflictAction OnConflictAction_MIN = ON_CONFLICT_ACTION_UNDEFINED; constexpr OnConflictAction OnConflictAction_MAX = ONCONFLICT_UPDATE; constexpr int OnConflictAction_ARRAYSIZE = OnConflictAction_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OnConflictAction_descriptor(); template inline const std::string& OnConflictAction_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function OnConflictAction_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( OnConflictAction_descriptor(), enum_t_value); } inline bool OnConflictAction_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OnConflictAction* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( OnConflictAction_descriptor(), name, value); } enum LimitOption : int { LIMIT_OPTION_UNDEFINED = 0, LIMIT_OPTION_DEFAULT = 1, LIMIT_OPTION_COUNT = 2, LIMIT_OPTION_WITH_TIES = 3, LimitOption_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), LimitOption_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool LimitOption_IsValid(int value); constexpr LimitOption LimitOption_MIN = LIMIT_OPTION_UNDEFINED; constexpr LimitOption LimitOption_MAX = LIMIT_OPTION_WITH_TIES; constexpr int LimitOption_ARRAYSIZE = LimitOption_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LimitOption_descriptor(); template inline const std::string& LimitOption_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function LimitOption_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( LimitOption_descriptor(), enum_t_value); } inline bool LimitOption_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LimitOption* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( LimitOption_descriptor(), name, value); } enum LockClauseStrength : int { LOCK_CLAUSE_STRENGTH_UNDEFINED = 0, LCS_NONE = 1, LCS_FORKEYSHARE = 2, LCS_FORSHARE = 3, LCS_FORNOKEYUPDATE = 4, LCS_FORUPDATE = 5, LockClauseStrength_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), LockClauseStrength_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool LockClauseStrength_IsValid(int value); constexpr LockClauseStrength LockClauseStrength_MIN = LOCK_CLAUSE_STRENGTH_UNDEFINED; constexpr LockClauseStrength LockClauseStrength_MAX = LCS_FORUPDATE; constexpr int LockClauseStrength_ARRAYSIZE = LockClauseStrength_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockClauseStrength_descriptor(); template inline const std::string& LockClauseStrength_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function LockClauseStrength_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( LockClauseStrength_descriptor(), enum_t_value); } inline bool LockClauseStrength_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LockClauseStrength* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( LockClauseStrength_descriptor(), name, value); } enum LockWaitPolicy : int { LOCK_WAIT_POLICY_UNDEFINED = 0, LockWaitBlock = 1, LockWaitSkip = 2, LockWaitError = 3, LockWaitPolicy_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), LockWaitPolicy_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool LockWaitPolicy_IsValid(int value); constexpr LockWaitPolicy LockWaitPolicy_MIN = LOCK_WAIT_POLICY_UNDEFINED; constexpr LockWaitPolicy LockWaitPolicy_MAX = LockWaitError; constexpr int LockWaitPolicy_ARRAYSIZE = LockWaitPolicy_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockWaitPolicy_descriptor(); template inline const std::string& LockWaitPolicy_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function LockWaitPolicy_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( LockWaitPolicy_descriptor(), enum_t_value); } inline bool LockWaitPolicy_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LockWaitPolicy* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( LockWaitPolicy_descriptor(), name, value); } enum LockTupleMode : int { LOCK_TUPLE_MODE_UNDEFINED = 0, LockTupleKeyShare = 1, LockTupleShare = 2, LockTupleNoKeyExclusive = 3, LockTupleExclusive = 4, LockTupleMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), LockTupleMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool LockTupleMode_IsValid(int value); constexpr LockTupleMode LockTupleMode_MIN = LOCK_TUPLE_MODE_UNDEFINED; constexpr LockTupleMode LockTupleMode_MAX = LockTupleExclusive; constexpr int LockTupleMode_ARRAYSIZE = LockTupleMode_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* LockTupleMode_descriptor(); template inline const std::string& LockTupleMode_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function LockTupleMode_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( LockTupleMode_descriptor(), enum_t_value); } inline bool LockTupleMode_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, LockTupleMode* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( LockTupleMode_descriptor(), name, value); } enum KeywordKind : int { NO_KEYWORD = 0, UNRESERVED_KEYWORD = 1, COL_NAME_KEYWORD = 2, TYPE_FUNC_NAME_KEYWORD = 3, RESERVED_KEYWORD = 4, KeywordKind_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), KeywordKind_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool KeywordKind_IsValid(int value); constexpr KeywordKind KeywordKind_MIN = NO_KEYWORD; constexpr KeywordKind KeywordKind_MAX = RESERVED_KEYWORD; constexpr int KeywordKind_ARRAYSIZE = KeywordKind_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* KeywordKind_descriptor(); template inline const std::string& KeywordKind_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function KeywordKind_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( KeywordKind_descriptor(), enum_t_value); } inline bool KeywordKind_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, KeywordKind* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( KeywordKind_descriptor(), name, value); } enum Token : int { NUL = 0, ASCII_37 = 37, ASCII_40 = 40, ASCII_41 = 41, ASCII_42 = 42, ASCII_43 = 43, ASCII_44 = 44, ASCII_45 = 45, ASCII_46 = 46, ASCII_47 = 47, ASCII_58 = 58, ASCII_59 = 59, ASCII_60 = 60, ASCII_61 = 61, ASCII_62 = 62, ASCII_63 = 63, ASCII_91 = 91, ASCII_93 = 93, ASCII_94 = 94, IDENT = 258, UIDENT = 259, FCONST = 260, SCONST = 261, USCONST = 262, BCONST = 263, XCONST = 264, Op = 265, ICONST = 266, PARAM = 267, TYPECAST = 268, DOT_DOT = 269, COLON_EQUALS = 270, EQUALS_GREATER = 271, LESS_EQUALS = 272, GREATER_EQUALS = 273, NOT_EQUALS = 274, SQL_COMMENT = 275, C_COMMENT = 276, ABORT_P = 277, ABSOLUTE_P = 278, ACCESS = 279, ACTION = 280, ADD_P = 281, ADMIN = 282, AFTER = 283, AGGREGATE = 284, ALL = 285, ALSO = 286, ALTER = 287, ALWAYS = 288, ANALYSE = 289, ANALYZE = 290, AND = 291, ANY = 292, ARRAY = 293, AS = 294, ASC = 295, ASSERTION = 296, ASSIGNMENT = 297, ASYMMETRIC = 298, AT = 299, ATTACH = 300, ATTRIBUTE = 301, AUTHORIZATION = 302, BACKWARD = 303, BEFORE = 304, BEGIN_P = 305, BETWEEN = 306, BIGINT = 307, BINARY = 308, BIT = 309, BOOLEAN_P = 310, BOTH = 311, BY = 312, CACHE = 313, CALL = 314, CALLED = 315, CASCADE = 316, CASCADED = 317, CASE = 318, CAST = 319, CATALOG_P = 320, CHAIN = 321, CHAR_P = 322, CHARACTER = 323, CHARACTERISTICS = 324, CHECK = 325, CHECKPOINT = 326, CLASS = 327, CLOSE = 328, CLUSTER = 329, COALESCE = 330, COLLATE = 331, COLLATION = 332, COLUMN = 333, COLUMNS = 334, COMMENT = 335, COMMENTS = 336, COMMIT = 337, COMMITTED = 338, CONCURRENTLY = 339, CONFIGURATION = 340, CONFLICT = 341, CONNECTION = 342, CONSTRAINT = 343, CONSTRAINTS = 344, CONTENT_P = 345, CONTINUE_P = 346, CONVERSION_P = 347, COPY = 348, COST = 349, CREATE = 350, CROSS = 351, CSV = 352, CUBE = 353, CURRENT_P = 354, CURRENT_CATALOG = 355, CURRENT_DATE = 356, CURRENT_ROLE = 357, CURRENT_SCHEMA = 358, CURRENT_TIME = 359, CURRENT_TIMESTAMP = 360, CURRENT_USER = 361, CURSOR = 362, CYCLE = 363, DATA_P = 364, DATABASE = 365, DAY_P = 366, DEALLOCATE = 367, DEC = 368, DECIMAL_P = 369, DECLARE = 370, DEFAULT = 371, DEFAULTS = 372, DEFERRABLE = 373, DEFERRED = 374, DEFINER = 375, DELETE_P = 376, DELIMITER = 377, DELIMITERS = 378, DEPENDS = 379, DESC = 380, DETACH = 381, DICTIONARY = 382, DISABLE_P = 383, DISCARD = 384, DISTINCT = 385, DO = 386, DOCUMENT_P = 387, DOMAIN_P = 388, DOUBLE_P = 389, DROP = 390, EACH = 391, ELSE = 392, ENABLE_P = 393, ENCODING = 394, ENCRYPTED = 395, END_P = 396, ENUM_P = 397, ESCAPE = 398, EVENT = 399, EXCEPT = 400, EXCLUDE = 401, EXCLUDING = 402, EXCLUSIVE = 403, EXECUTE = 404, EXISTS = 405, EXPLAIN = 406, EXPRESSION = 407, EXTENSION = 408, EXTERNAL = 409, EXTRACT = 410, FALSE_P = 411, FAMILY = 412, FETCH = 413, FILTER = 414, FIRST_P = 415, FLOAT_P = 416, FOLLOWING = 417, FOR = 418, FORCE = 419, FOREIGN = 420, FORWARD = 421, FREEZE = 422, FROM = 423, FULL = 424, FUNCTION = 425, FUNCTIONS = 426, GENERATED = 427, GLOBAL = 428, GRANT = 429, GRANTED = 430, GREATEST = 431, GROUP_P = 432, GROUPING = 433, GROUPS = 434, HANDLER = 435, HAVING = 436, HEADER_P = 437, HOLD = 438, HOUR_P = 439, IDENTITY_P = 440, IF_P = 441, ILIKE = 442, IMMEDIATE = 443, IMMUTABLE = 444, IMPLICIT_P = 445, IMPORT_P = 446, IN_P = 447, INCLUDE = 448, INCLUDING = 449, INCREMENT = 450, INDEX = 451, INDEXES = 452, INHERIT = 453, INHERITS = 454, INITIALLY = 455, INLINE_P = 456, INNER_P = 457, INOUT = 458, INPUT_P = 459, INSENSITIVE = 460, INSERT = 461, INSTEAD = 462, INT_P = 463, INTEGER = 464, INTERSECT = 465, INTERVAL = 466, INTO = 467, INVOKER = 468, IS = 469, ISNULL = 470, ISOLATION = 471, JOIN = 472, KEY = 473, LABEL = 474, LANGUAGE = 475, LARGE_P = 476, LAST_P = 477, LATERAL_P = 478, LEADING = 479, LEAKPROOF = 480, LEAST = 481, LEFT = 482, LEVEL = 483, LIKE = 484, LIMIT = 485, LISTEN = 486, LOAD = 487, LOCAL = 488, LOCALTIME = 489, LOCALTIMESTAMP = 490, LOCATION = 491, LOCK_P = 492, LOCKED = 493, LOGGED = 494, MAPPING = 495, MATCH = 496, MATERIALIZED = 497, MAXVALUE = 498, METHOD = 499, MINUTE_P = 500, MINVALUE = 501, MODE = 502, MONTH_P = 503, MOVE = 504, NAME_P = 505, NAMES = 506, NATIONAL = 507, NATURAL = 508, NCHAR = 509, NEW = 510, NEXT = 511, NFC = 512, NFD = 513, NFKC = 514, NFKD = 515, NO = 516, NONE = 517, NORMALIZE = 518, NORMALIZED = 519, NOT = 520, NOTHING = 521, NOTIFY = 522, NOTNULL = 523, NOWAIT = 524, NULL_P = 525, NULLIF = 526, NULLS_P = 527, NUMERIC = 528, OBJECT_P = 529, OF = 530, OFF = 531, OFFSET = 532, OIDS = 533, OLD = 534, ON = 535, ONLY = 536, OPERATOR = 537, OPTION = 538, OPTIONS = 539, OR = 540, ORDER = 541, ORDINALITY = 542, OTHERS = 543, OUT_P = 544, OUTER_P = 545, OVER = 546, OVERLAPS = 547, OVERLAY = 548, OVERRIDING = 549, OWNED = 550, OWNER = 551, PARALLEL = 552, PARSER = 553, PARTIAL = 554, PARTITION = 555, PASSING = 556, PASSWORD = 557, PLACING = 558, PLANS = 559, POLICY = 560, POSITION = 561, PRECEDING = 562, PRECISION = 563, PRESERVE = 564, PREPARE = 565, PREPARED = 566, PRIMARY = 567, PRIOR = 568, PRIVILEGES = 569, PROCEDURAL = 570, PROCEDURE = 571, PROCEDURES = 572, PROGRAM = 573, PUBLICATION = 574, QUOTE = 575, RANGE = 576, READ = 577, REAL = 578, REASSIGN = 579, RECHECK = 580, RECURSIVE = 581, REF = 582, REFERENCES = 583, REFERENCING = 584, REFRESH = 585, REINDEX = 586, RELATIVE_P = 587, RELEASE = 588, RENAME = 589, REPEATABLE = 590, REPLACE = 591, REPLICA = 592, RESET = 593, RESTART = 594, RESTRICT = 595, RETURNING = 596, RETURNS = 597, REVOKE = 598, RIGHT = 599, ROLE = 600, ROLLBACK = 601, ROLLUP = 602, ROUTINE = 603, ROUTINES = 604, ROW = 605, ROWS = 606, RULE = 607, SAVEPOINT = 608, SCHEMA = 609, SCHEMAS = 610, SCROLL = 611, SEARCH = 612, SECOND_P = 613, SECURITY = 614, SELECT = 615, SEQUENCE = 616, SEQUENCES = 617, SERIALIZABLE = 618, SERVER = 619, SESSION = 620, SESSION_USER = 621, SET = 622, SETS = 623, SETOF = 624, SHARE = 625, SHOW = 626, SIMILAR = 627, SIMPLE = 628, SKIP = 629, SMALLINT = 630, SNAPSHOT = 631, SOME = 632, SQL_P = 633, STABLE = 634, STANDALONE_P = 635, START = 636, STATEMENT = 637, STATISTICS = 638, STDIN = 639, STDOUT = 640, STORAGE = 641, STORED = 642, STRICT_P = 643, STRIP_P = 644, SUBSCRIPTION = 645, SUBSTRING = 646, SUPPORT = 647, SYMMETRIC = 648, SYSID = 649, SYSTEM_P = 650, TABLE = 651, TABLES = 652, TABLESAMPLE = 653, TABLESPACE = 654, TEMP = 655, TEMPLATE = 656, TEMPORARY = 657, TEXT_P = 658, THEN = 659, TIES = 660, TIME = 661, TIMESTAMP = 662, TO = 663, TRAILING = 664, TRANSACTION = 665, TRANSFORM = 666, TREAT = 667, TRIGGER = 668, TRIM = 669, TRUE_P = 670, TRUNCATE = 671, TRUSTED = 672, TYPE_P = 673, TYPES_P = 674, UESCAPE = 675, UNBOUNDED = 676, UNCOMMITTED = 677, UNENCRYPTED = 678, UNION = 679, UNIQUE = 680, UNKNOWN = 681, UNLISTEN = 682, UNLOGGED = 683, UNTIL = 684, UPDATE = 685, USER = 686, USING = 687, VACUUM = 688, VALID = 689, VALIDATE = 690, VALIDATOR = 691, VALUE_P = 692, VALUES = 693, VARCHAR = 694, VARIADIC = 695, VARYING = 696, VERBOSE = 697, VERSION_P = 698, VIEW = 699, VIEWS = 700, VOLATILE = 701, WHEN = 702, WHERE = 703, WHITESPACE_P = 704, WINDOW = 705, WITH = 706, WITHIN = 707, WITHOUT = 708, WORK = 709, WRAPPER = 710, WRITE = 711, XML_P = 712, XMLATTRIBUTES = 713, XMLCONCAT = 714, XMLELEMENT = 715, XMLEXISTS = 716, XMLFOREST = 717, XMLNAMESPACES = 718, XMLPARSE = 719, XMLPI = 720, XMLROOT = 721, XMLSERIALIZE = 722, XMLTABLE = 723, YEAR_P = 724, YES_P = 725, ZONE = 726, NOT_LA = 727, NULLS_LA = 728, WITH_LA = 729, POSTFIXOP = 730, UMINUS = 731, Token_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(), Token_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max() }; bool Token_IsValid(int value); constexpr Token Token_MIN = NUL; constexpr Token Token_MAX = UMINUS; constexpr int Token_ARRAYSIZE = Token_MAX + 1; const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Token_descriptor(); template inline const std::string& Token_Name(T enum_t_value) { static_assert(::std::is_same::value || ::std::is_integral::value, "Incorrect type passed to function Token_Name."); return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum( Token_descriptor(), enum_t_value); } inline bool Token_Parse( ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, Token* value) { return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum( Token_descriptor(), name, value); } // =================================================================== class ParseResult PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ParseResult) */ { public: inline ParseResult() : ParseResult(nullptr) {} virtual ~ParseResult(); ParseResult(const ParseResult& from); ParseResult(ParseResult&& from) noexcept : ParseResult() { *this = ::std::move(from); } inline ParseResult& operator=(const ParseResult& from) { CopyFrom(from); return *this; } inline ParseResult& operator=(ParseResult&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ParseResult& default_instance(); static inline const ParseResult* internal_default_instance() { return reinterpret_cast( &_ParseResult_default_instance_); } static constexpr int kIndexInFileMessages = 0; friend void swap(ParseResult& a, ParseResult& b) { a.Swap(&b); } inline void Swap(ParseResult* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ParseResult* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ParseResult* New() const final { return CreateMaybeMessage(nullptr); } ParseResult* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ParseResult& from); void MergeFrom(const ParseResult& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ParseResult* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ParseResult"; } protected: explicit ParseResult(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kStmtsFieldNumber = 2, kVersionFieldNumber = 1, }; // repeated .pg_query.RawStmt stmts = 2; int stmts_size() const; private: int _internal_stmts_size() const; public: void clear_stmts(); ::pg_query::RawStmt* mutable_stmts(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >* mutable_stmts(); private: const ::pg_query::RawStmt& _internal_stmts(int index) const; ::pg_query::RawStmt* _internal_add_stmts(); public: const ::pg_query::RawStmt& stmts(int index) const; ::pg_query::RawStmt* add_stmts(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >& stmts() const; // int32 version = 1; void clear_version(); ::PROTOBUF_NAMESPACE_ID::int32 version() const; void set_version(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_version() const; void _internal_set_version(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ParseResult) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt > stmts_; ::PROTOBUF_NAMESPACE_ID::int32 version_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ScanResult PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ScanResult) */ { public: inline ScanResult() : ScanResult(nullptr) {} virtual ~ScanResult(); ScanResult(const ScanResult& from); ScanResult(ScanResult&& from) noexcept : ScanResult() { *this = ::std::move(from); } inline ScanResult& operator=(const ScanResult& from) { CopyFrom(from); return *this; } inline ScanResult& operator=(ScanResult&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ScanResult& default_instance(); static inline const ScanResult* internal_default_instance() { return reinterpret_cast( &_ScanResult_default_instance_); } static constexpr int kIndexInFileMessages = 1; friend void swap(ScanResult& a, ScanResult& b) { a.Swap(&b); } inline void Swap(ScanResult* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ScanResult* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ScanResult* New() const final { return CreateMaybeMessage(nullptr); } ScanResult* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ScanResult& from); void MergeFrom(const ScanResult& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ScanResult* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ScanResult"; } protected: explicit ScanResult(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTokensFieldNumber = 2, kVersionFieldNumber = 1, }; // repeated .pg_query.ScanToken tokens = 2; int tokens_size() const; private: int _internal_tokens_size() const; public: void clear_tokens(); ::pg_query::ScanToken* mutable_tokens(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >* mutable_tokens(); private: const ::pg_query::ScanToken& _internal_tokens(int index) const; ::pg_query::ScanToken* _internal_add_tokens(); public: const ::pg_query::ScanToken& tokens(int index) const; ::pg_query::ScanToken* add_tokens(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >& tokens() const; // int32 version = 1; void clear_version(); ::PROTOBUF_NAMESPACE_ID::int32 version() const; void set_version(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_version() const; void _internal_set_version(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ScanResult) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken > tokens_; ::PROTOBUF_NAMESPACE_ID::int32 version_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Node PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Node) */ { public: inline Node() : Node(nullptr) {} virtual ~Node(); Node(const Node& from); Node(Node&& from) noexcept : Node() { *this = ::std::move(from); } inline Node& operator=(const Node& from) { CopyFrom(from); return *this; } inline Node& operator=(Node&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Node& default_instance(); enum NodeCase { kAlias = 1, kRangeVar = 2, kTableFunc = 3, kExpr = 4, kVar = 5, kParam = 6, kAggref = 7, kGroupingFunc = 8, kWindowFunc = 9, kSubscriptingRef = 10, kFuncExpr = 11, kNamedArgExpr = 12, kOpExpr = 13, kDistinctExpr = 14, kNullIfExpr = 15, kScalarArrayOpExpr = 16, kBoolExpr = 17, kSubLink = 18, kSubPlan = 19, kAlternativeSubPlan = 20, kFieldSelect = 21, kFieldStore = 22, kRelabelType = 23, kCoerceViaIo = 24, kArrayCoerceExpr = 25, kConvertRowtypeExpr = 26, kCollateExpr = 27, kCaseExpr = 28, kCaseWhen = 29, kCaseTestExpr = 30, kArrayExpr = 31, kRowExpr = 32, kRowCompareExpr = 33, kCoalesceExpr = 34, kMinMaxExpr = 35, kSqlvalueFunction = 36, kXmlExpr = 37, kNullTest = 38, kBooleanTest = 39, kCoerceToDomain = 40, kCoerceToDomainValue = 41, kSetToDefault = 42, kCurrentOfExpr = 43, kNextValueExpr = 44, kInferenceElem = 45, kTargetEntry = 46, kRangeTblRef = 47, kJoinExpr = 48, kFromExpr = 49, kOnConflictExpr = 50, kIntoClause = 51, kRawStmt = 52, kQuery = 53, kInsertStmt = 54, kDeleteStmt = 55, kUpdateStmt = 56, kSelectStmt = 57, kAlterTableStmt = 58, kAlterTableCmd = 59, kAlterDomainStmt = 60, kSetOperationStmt = 61, kGrantStmt = 62, kGrantRoleStmt = 63, kAlterDefaultPrivilegesStmt = 64, kClosePortalStmt = 65, kClusterStmt = 66, kCopyStmt = 67, kCreateStmt = 68, kDefineStmt = 69, kDropStmt = 70, kTruncateStmt = 71, kCommentStmt = 72, kFetchStmt = 73, kIndexStmt = 74, kCreateFunctionStmt = 75, kAlterFunctionStmt = 76, kDoStmt = 77, kRenameStmt = 78, kRuleStmt = 79, kNotifyStmt = 80, kListenStmt = 81, kUnlistenStmt = 82, kTransactionStmt = 83, kViewStmt = 84, kLoadStmt = 85, kCreateDomainStmt = 86, kCreatedbStmt = 87, kDropdbStmt = 88, kVacuumStmt = 89, kExplainStmt = 90, kCreateTableAsStmt = 91, kCreateSeqStmt = 92, kAlterSeqStmt = 93, kVariableSetStmt = 94, kVariableShowStmt = 95, kDiscardStmt = 96, kCreateTrigStmt = 97, kCreatePlangStmt = 98, kCreateRoleStmt = 99, kAlterRoleStmt = 100, kDropRoleStmt = 101, kLockStmt = 102, kConstraintsSetStmt = 103, kReindexStmt = 104, kCheckPointStmt = 105, kCreateSchemaStmt = 106, kAlterDatabaseStmt = 107, kAlterDatabaseSetStmt = 108, kAlterRoleSetStmt = 109, kCreateConversionStmt = 110, kCreateCastStmt = 111, kCreateOpClassStmt = 112, kCreateOpFamilyStmt = 113, kAlterOpFamilyStmt = 114, kPrepareStmt = 115, kExecuteStmt = 116, kDeallocateStmt = 117, kDeclareCursorStmt = 118, kCreateTableSpaceStmt = 119, kDropTableSpaceStmt = 120, kAlterObjectDependsStmt = 121, kAlterObjectSchemaStmt = 122, kAlterOwnerStmt = 123, kAlterOperatorStmt = 124, kAlterTypeStmt = 125, kDropOwnedStmt = 126, kReassignOwnedStmt = 127, kCompositeTypeStmt = 128, kCreateEnumStmt = 129, kCreateRangeStmt = 130, kAlterEnumStmt = 131, kAlterTsdictionaryStmt = 132, kAlterTsconfigurationStmt = 133, kCreateFdwStmt = 134, kAlterFdwStmt = 135, kCreateForeignServerStmt = 136, kAlterForeignServerStmt = 137, kCreateUserMappingStmt = 138, kAlterUserMappingStmt = 139, kDropUserMappingStmt = 140, kAlterTableSpaceOptionsStmt = 141, kAlterTableMoveAllStmt = 142, kSecLabelStmt = 143, kCreateForeignTableStmt = 144, kImportForeignSchemaStmt = 145, kCreateExtensionStmt = 146, kAlterExtensionStmt = 147, kAlterExtensionContentsStmt = 148, kCreateEventTrigStmt = 149, kAlterEventTrigStmt = 150, kRefreshMatViewStmt = 151, kReplicaIdentityStmt = 152, kAlterSystemStmt = 153, kCreatePolicyStmt = 154, kAlterPolicyStmt = 155, kCreateTransformStmt = 156, kCreateAmStmt = 157, kCreatePublicationStmt = 158, kAlterPublicationStmt = 159, kCreateSubscriptionStmt = 160, kAlterSubscriptionStmt = 161, kDropSubscriptionStmt = 162, kCreateStatsStmt = 163, kAlterCollationStmt = 164, kCallStmt = 165, kAlterStatsStmt = 166, kAExpr = 167, kColumnRef = 168, kParamRef = 169, kAConst = 170, kFuncCall = 171, kAStar = 172, kAIndices = 173, kAIndirection = 174, kAArrayExpr = 175, kResTarget = 176, kMultiAssignRef = 177, kTypeCast = 178, kCollateClause = 179, kSortBy = 180, kWindowDef = 181, kRangeSubselect = 182, kRangeFunction = 183, kRangeTableSample = 184, kRangeTableFunc = 185, kRangeTableFuncCol = 186, kTypeName = 187, kColumnDef = 188, kIndexElem = 189, kConstraint = 190, kDefElem = 191, kRangeTblEntry = 192, kRangeTblFunction = 193, kTableSampleClause = 194, kWithCheckOption = 195, kSortGroupClause = 196, kGroupingSet = 197, kWindowClause = 198, kObjectWithArgs = 199, kAccessPriv = 200, kCreateOpClassItem = 201, kTableLikeClause = 202, kFunctionParameter = 203, kLockingClause = 204, kRowMarkClause = 205, kXmlSerialize = 206, kWithClause = 207, kInferClause = 208, kOnConflictClause = 209, kCommonTableExpr = 210, kRoleSpec = 211, kTriggerTransition = 212, kPartitionElem = 213, kPartitionSpec = 214, kPartitionBoundSpec = 215, kPartitionRangeDatum = 216, kPartitionCmd = 217, kVacuumRelation = 218, kInlineCodeBlock = 219, kCallContext = 220, kInteger = 221, kFloat = 222, kString = 223, kBitString = 224, kNull = 225, kList = 226, kIntList = 227, kOidList = 228, NODE_NOT_SET = 0, }; static inline const Node* internal_default_instance() { return reinterpret_cast( &_Node_default_instance_); } static constexpr int kIndexInFileMessages = 2; friend void swap(Node& a, Node& b) { a.Swap(&b); } inline void Swap(Node* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Node* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Node* New() const final { return CreateMaybeMessage(nullptr); } Node* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Node& from); void MergeFrom(const Node& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Node* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Node"; } protected: explicit Node(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAliasFieldNumber = 1, kRangeVarFieldNumber = 2, kTableFuncFieldNumber = 3, kExprFieldNumber = 4, kVarFieldNumber = 5, kParamFieldNumber = 6, kAggrefFieldNumber = 7, kGroupingFuncFieldNumber = 8, kWindowFuncFieldNumber = 9, kSubscriptingRefFieldNumber = 10, kFuncExprFieldNumber = 11, kNamedArgExprFieldNumber = 12, kOpExprFieldNumber = 13, kDistinctExprFieldNumber = 14, kNullIfExprFieldNumber = 15, kScalarArrayOpExprFieldNumber = 16, kBoolExprFieldNumber = 17, kSubLinkFieldNumber = 18, kSubPlanFieldNumber = 19, kAlternativeSubPlanFieldNumber = 20, kFieldSelectFieldNumber = 21, kFieldStoreFieldNumber = 22, kRelabelTypeFieldNumber = 23, kCoerceViaIoFieldNumber = 24, kArrayCoerceExprFieldNumber = 25, kConvertRowtypeExprFieldNumber = 26, kCollateExprFieldNumber = 27, kCaseExprFieldNumber = 28, kCaseWhenFieldNumber = 29, kCaseTestExprFieldNumber = 30, kArrayExprFieldNumber = 31, kRowExprFieldNumber = 32, kRowCompareExprFieldNumber = 33, kCoalesceExprFieldNumber = 34, kMinMaxExprFieldNumber = 35, kSqlvalueFunctionFieldNumber = 36, kXmlExprFieldNumber = 37, kNullTestFieldNumber = 38, kBooleanTestFieldNumber = 39, kCoerceToDomainFieldNumber = 40, kCoerceToDomainValueFieldNumber = 41, kSetToDefaultFieldNumber = 42, kCurrentOfExprFieldNumber = 43, kNextValueExprFieldNumber = 44, kInferenceElemFieldNumber = 45, kTargetEntryFieldNumber = 46, kRangeTblRefFieldNumber = 47, kJoinExprFieldNumber = 48, kFromExprFieldNumber = 49, kOnConflictExprFieldNumber = 50, kIntoClauseFieldNumber = 51, kRawStmtFieldNumber = 52, kQueryFieldNumber = 53, kInsertStmtFieldNumber = 54, kDeleteStmtFieldNumber = 55, kUpdateStmtFieldNumber = 56, kSelectStmtFieldNumber = 57, kAlterTableStmtFieldNumber = 58, kAlterTableCmdFieldNumber = 59, kAlterDomainStmtFieldNumber = 60, kSetOperationStmtFieldNumber = 61, kGrantStmtFieldNumber = 62, kGrantRoleStmtFieldNumber = 63, kAlterDefaultPrivilegesStmtFieldNumber = 64, kClosePortalStmtFieldNumber = 65, kClusterStmtFieldNumber = 66, kCopyStmtFieldNumber = 67, kCreateStmtFieldNumber = 68, kDefineStmtFieldNumber = 69, kDropStmtFieldNumber = 70, kTruncateStmtFieldNumber = 71, kCommentStmtFieldNumber = 72, kFetchStmtFieldNumber = 73, kIndexStmtFieldNumber = 74, kCreateFunctionStmtFieldNumber = 75, kAlterFunctionStmtFieldNumber = 76, kDoStmtFieldNumber = 77, kRenameStmtFieldNumber = 78, kRuleStmtFieldNumber = 79, kNotifyStmtFieldNumber = 80, kListenStmtFieldNumber = 81, kUnlistenStmtFieldNumber = 82, kTransactionStmtFieldNumber = 83, kViewStmtFieldNumber = 84, kLoadStmtFieldNumber = 85, kCreateDomainStmtFieldNumber = 86, kCreatedbStmtFieldNumber = 87, kDropdbStmtFieldNumber = 88, kVacuumStmtFieldNumber = 89, kExplainStmtFieldNumber = 90, kCreateTableAsStmtFieldNumber = 91, kCreateSeqStmtFieldNumber = 92, kAlterSeqStmtFieldNumber = 93, kVariableSetStmtFieldNumber = 94, kVariableShowStmtFieldNumber = 95, kDiscardStmtFieldNumber = 96, kCreateTrigStmtFieldNumber = 97, kCreatePlangStmtFieldNumber = 98, kCreateRoleStmtFieldNumber = 99, kAlterRoleStmtFieldNumber = 100, kDropRoleStmtFieldNumber = 101, kLockStmtFieldNumber = 102, kConstraintsSetStmtFieldNumber = 103, kReindexStmtFieldNumber = 104, kCheckPointStmtFieldNumber = 105, kCreateSchemaStmtFieldNumber = 106, kAlterDatabaseStmtFieldNumber = 107, kAlterDatabaseSetStmtFieldNumber = 108, kAlterRoleSetStmtFieldNumber = 109, kCreateConversionStmtFieldNumber = 110, kCreateCastStmtFieldNumber = 111, kCreateOpClassStmtFieldNumber = 112, kCreateOpFamilyStmtFieldNumber = 113, kAlterOpFamilyStmtFieldNumber = 114, kPrepareStmtFieldNumber = 115, kExecuteStmtFieldNumber = 116, kDeallocateStmtFieldNumber = 117, kDeclareCursorStmtFieldNumber = 118, kCreateTableSpaceStmtFieldNumber = 119, kDropTableSpaceStmtFieldNumber = 120, kAlterObjectDependsStmtFieldNumber = 121, kAlterObjectSchemaStmtFieldNumber = 122, kAlterOwnerStmtFieldNumber = 123, kAlterOperatorStmtFieldNumber = 124, kAlterTypeStmtFieldNumber = 125, kDropOwnedStmtFieldNumber = 126, kReassignOwnedStmtFieldNumber = 127, kCompositeTypeStmtFieldNumber = 128, kCreateEnumStmtFieldNumber = 129, kCreateRangeStmtFieldNumber = 130, kAlterEnumStmtFieldNumber = 131, kAlterTsdictionaryStmtFieldNumber = 132, kAlterTsconfigurationStmtFieldNumber = 133, kCreateFdwStmtFieldNumber = 134, kAlterFdwStmtFieldNumber = 135, kCreateForeignServerStmtFieldNumber = 136, kAlterForeignServerStmtFieldNumber = 137, kCreateUserMappingStmtFieldNumber = 138, kAlterUserMappingStmtFieldNumber = 139, kDropUserMappingStmtFieldNumber = 140, kAlterTableSpaceOptionsStmtFieldNumber = 141, kAlterTableMoveAllStmtFieldNumber = 142, kSecLabelStmtFieldNumber = 143, kCreateForeignTableStmtFieldNumber = 144, kImportForeignSchemaStmtFieldNumber = 145, kCreateExtensionStmtFieldNumber = 146, kAlterExtensionStmtFieldNumber = 147, kAlterExtensionContentsStmtFieldNumber = 148, kCreateEventTrigStmtFieldNumber = 149, kAlterEventTrigStmtFieldNumber = 150, kRefreshMatViewStmtFieldNumber = 151, kReplicaIdentityStmtFieldNumber = 152, kAlterSystemStmtFieldNumber = 153, kCreatePolicyStmtFieldNumber = 154, kAlterPolicyStmtFieldNumber = 155, kCreateTransformStmtFieldNumber = 156, kCreateAmStmtFieldNumber = 157, kCreatePublicationStmtFieldNumber = 158, kAlterPublicationStmtFieldNumber = 159, kCreateSubscriptionStmtFieldNumber = 160, kAlterSubscriptionStmtFieldNumber = 161, kDropSubscriptionStmtFieldNumber = 162, kCreateStatsStmtFieldNumber = 163, kAlterCollationStmtFieldNumber = 164, kCallStmtFieldNumber = 165, kAlterStatsStmtFieldNumber = 166, kAExprFieldNumber = 167, kColumnRefFieldNumber = 168, kParamRefFieldNumber = 169, kAConstFieldNumber = 170, kFuncCallFieldNumber = 171, kAStarFieldNumber = 172, kAIndicesFieldNumber = 173, kAIndirectionFieldNumber = 174, kAArrayExprFieldNumber = 175, kResTargetFieldNumber = 176, kMultiAssignRefFieldNumber = 177, kTypeCastFieldNumber = 178, kCollateClauseFieldNumber = 179, kSortByFieldNumber = 180, kWindowDefFieldNumber = 181, kRangeSubselectFieldNumber = 182, kRangeFunctionFieldNumber = 183, kRangeTableSampleFieldNumber = 184, kRangeTableFuncFieldNumber = 185, kRangeTableFuncColFieldNumber = 186, kTypeNameFieldNumber = 187, kColumnDefFieldNumber = 188, kIndexElemFieldNumber = 189, kConstraintFieldNumber = 190, kDefElemFieldNumber = 191, kRangeTblEntryFieldNumber = 192, kRangeTblFunctionFieldNumber = 193, kTableSampleClauseFieldNumber = 194, kWithCheckOptionFieldNumber = 195, kSortGroupClauseFieldNumber = 196, kGroupingSetFieldNumber = 197, kWindowClauseFieldNumber = 198, kObjectWithArgsFieldNumber = 199, kAccessPrivFieldNumber = 200, kCreateOpClassItemFieldNumber = 201, kTableLikeClauseFieldNumber = 202, kFunctionParameterFieldNumber = 203, kLockingClauseFieldNumber = 204, kRowMarkClauseFieldNumber = 205, kXmlSerializeFieldNumber = 206, kWithClauseFieldNumber = 207, kInferClauseFieldNumber = 208, kOnConflictClauseFieldNumber = 209, kCommonTableExprFieldNumber = 210, kRoleSpecFieldNumber = 211, kTriggerTransitionFieldNumber = 212, kPartitionElemFieldNumber = 213, kPartitionSpecFieldNumber = 214, kPartitionBoundSpecFieldNumber = 215, kPartitionRangeDatumFieldNumber = 216, kPartitionCmdFieldNumber = 217, kVacuumRelationFieldNumber = 218, kInlineCodeBlockFieldNumber = 219, kCallContextFieldNumber = 220, kIntegerFieldNumber = 221, kFloatFieldNumber = 222, kStringFieldNumber = 223, kBitStringFieldNumber = 224, kNullFieldNumber = 225, kListFieldNumber = 226, kIntListFieldNumber = 227, kOidListFieldNumber = 228, }; // .pg_query.Alias alias = 1 [json_name = "Alias"]; bool has_alias() const; private: bool _internal_has_alias() const; public: void clear_alias(); const ::pg_query::Alias& alias() const; ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; bool has_range_var() const; private: bool _internal_has_range_var() const; public: void clear_range_var(); const ::pg_query::RangeVar& range_var() const; ::pg_query::RangeVar* release_range_var(); ::pg_query::RangeVar* mutable_range_var(); void set_allocated_range_var(::pg_query::RangeVar* range_var); private: const ::pg_query::RangeVar& _internal_range_var() const; ::pg_query::RangeVar* _internal_mutable_range_var(); public: void unsafe_arena_set_allocated_range_var( ::pg_query::RangeVar* range_var); ::pg_query::RangeVar* unsafe_arena_release_range_var(); // .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; bool has_table_func() const; private: bool _internal_has_table_func() const; public: void clear_table_func(); const ::pg_query::TableFunc& table_func() const; ::pg_query::TableFunc* release_table_func(); ::pg_query::TableFunc* mutable_table_func(); void set_allocated_table_func(::pg_query::TableFunc* table_func); private: const ::pg_query::TableFunc& _internal_table_func() const; ::pg_query::TableFunc* _internal_mutable_table_func(); public: void unsafe_arena_set_allocated_table_func( ::pg_query::TableFunc* table_func); ::pg_query::TableFunc* unsafe_arena_release_table_func(); // .pg_query.Expr expr = 4 [json_name = "Expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Expr& expr() const; ::pg_query::Expr* release_expr(); ::pg_query::Expr* mutable_expr(); void set_allocated_expr(::pg_query::Expr* expr); private: const ::pg_query::Expr& _internal_expr() const; ::pg_query::Expr* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Expr* expr); ::pg_query::Expr* unsafe_arena_release_expr(); // .pg_query.Var var = 5 [json_name = "Var"]; bool has_var() const; private: bool _internal_has_var() const; public: void clear_var(); const ::pg_query::Var& var() const; ::pg_query::Var* release_var(); ::pg_query::Var* mutable_var(); void set_allocated_var(::pg_query::Var* var); private: const ::pg_query::Var& _internal_var() const; ::pg_query::Var* _internal_mutable_var(); public: void unsafe_arena_set_allocated_var( ::pg_query::Var* var); ::pg_query::Var* unsafe_arena_release_var(); // .pg_query.Param param = 6 [json_name = "Param"]; bool has_param() const; private: bool _internal_has_param() const; public: void clear_param(); const ::pg_query::Param& param() const; ::pg_query::Param* release_param(); ::pg_query::Param* mutable_param(); void set_allocated_param(::pg_query::Param* param); private: const ::pg_query::Param& _internal_param() const; ::pg_query::Param* _internal_mutable_param(); public: void unsafe_arena_set_allocated_param( ::pg_query::Param* param); ::pg_query::Param* unsafe_arena_release_param(); // .pg_query.Aggref aggref = 7 [json_name = "Aggref"]; bool has_aggref() const; private: bool _internal_has_aggref() const; public: void clear_aggref(); const ::pg_query::Aggref& aggref() const; ::pg_query::Aggref* release_aggref(); ::pg_query::Aggref* mutable_aggref(); void set_allocated_aggref(::pg_query::Aggref* aggref); private: const ::pg_query::Aggref& _internal_aggref() const; ::pg_query::Aggref* _internal_mutable_aggref(); public: void unsafe_arena_set_allocated_aggref( ::pg_query::Aggref* aggref); ::pg_query::Aggref* unsafe_arena_release_aggref(); // .pg_query.GroupingFunc grouping_func = 8 [json_name = "GroupingFunc"]; bool has_grouping_func() const; private: bool _internal_has_grouping_func() const; public: void clear_grouping_func(); const ::pg_query::GroupingFunc& grouping_func() const; ::pg_query::GroupingFunc* release_grouping_func(); ::pg_query::GroupingFunc* mutable_grouping_func(); void set_allocated_grouping_func(::pg_query::GroupingFunc* grouping_func); private: const ::pg_query::GroupingFunc& _internal_grouping_func() const; ::pg_query::GroupingFunc* _internal_mutable_grouping_func(); public: void unsafe_arena_set_allocated_grouping_func( ::pg_query::GroupingFunc* grouping_func); ::pg_query::GroupingFunc* unsafe_arena_release_grouping_func(); // .pg_query.WindowFunc window_func = 9 [json_name = "WindowFunc"]; bool has_window_func() const; private: bool _internal_has_window_func() const; public: void clear_window_func(); const ::pg_query::WindowFunc& window_func() const; ::pg_query::WindowFunc* release_window_func(); ::pg_query::WindowFunc* mutable_window_func(); void set_allocated_window_func(::pg_query::WindowFunc* window_func); private: const ::pg_query::WindowFunc& _internal_window_func() const; ::pg_query::WindowFunc* _internal_mutable_window_func(); public: void unsafe_arena_set_allocated_window_func( ::pg_query::WindowFunc* window_func); ::pg_query::WindowFunc* unsafe_arena_release_window_func(); // .pg_query.SubscriptingRef subscripting_ref = 10 [json_name = "SubscriptingRef"]; bool has_subscripting_ref() const; private: bool _internal_has_subscripting_ref() const; public: void clear_subscripting_ref(); const ::pg_query::SubscriptingRef& subscripting_ref() const; ::pg_query::SubscriptingRef* release_subscripting_ref(); ::pg_query::SubscriptingRef* mutable_subscripting_ref(); void set_allocated_subscripting_ref(::pg_query::SubscriptingRef* subscripting_ref); private: const ::pg_query::SubscriptingRef& _internal_subscripting_ref() const; ::pg_query::SubscriptingRef* _internal_mutable_subscripting_ref(); public: void unsafe_arena_set_allocated_subscripting_ref( ::pg_query::SubscriptingRef* subscripting_ref); ::pg_query::SubscriptingRef* unsafe_arena_release_subscripting_ref(); // .pg_query.FuncExpr func_expr = 11 [json_name = "FuncExpr"]; bool has_func_expr() const; private: bool _internal_has_func_expr() const; public: void clear_func_expr(); const ::pg_query::FuncExpr& func_expr() const; ::pg_query::FuncExpr* release_func_expr(); ::pg_query::FuncExpr* mutable_func_expr(); void set_allocated_func_expr(::pg_query::FuncExpr* func_expr); private: const ::pg_query::FuncExpr& _internal_func_expr() const; ::pg_query::FuncExpr* _internal_mutable_func_expr(); public: void unsafe_arena_set_allocated_func_expr( ::pg_query::FuncExpr* func_expr); ::pg_query::FuncExpr* unsafe_arena_release_func_expr(); // .pg_query.NamedArgExpr named_arg_expr = 12 [json_name = "NamedArgExpr"]; bool has_named_arg_expr() const; private: bool _internal_has_named_arg_expr() const; public: void clear_named_arg_expr(); const ::pg_query::NamedArgExpr& named_arg_expr() const; ::pg_query::NamedArgExpr* release_named_arg_expr(); ::pg_query::NamedArgExpr* mutable_named_arg_expr(); void set_allocated_named_arg_expr(::pg_query::NamedArgExpr* named_arg_expr); private: const ::pg_query::NamedArgExpr& _internal_named_arg_expr() const; ::pg_query::NamedArgExpr* _internal_mutable_named_arg_expr(); public: void unsafe_arena_set_allocated_named_arg_expr( ::pg_query::NamedArgExpr* named_arg_expr); ::pg_query::NamedArgExpr* unsafe_arena_release_named_arg_expr(); // .pg_query.OpExpr op_expr = 13 [json_name = "OpExpr"]; bool has_op_expr() const; private: bool _internal_has_op_expr() const; public: void clear_op_expr(); const ::pg_query::OpExpr& op_expr() const; ::pg_query::OpExpr* release_op_expr(); ::pg_query::OpExpr* mutable_op_expr(); void set_allocated_op_expr(::pg_query::OpExpr* op_expr); private: const ::pg_query::OpExpr& _internal_op_expr() const; ::pg_query::OpExpr* _internal_mutable_op_expr(); public: void unsafe_arena_set_allocated_op_expr( ::pg_query::OpExpr* op_expr); ::pg_query::OpExpr* unsafe_arena_release_op_expr(); // .pg_query.DistinctExpr distinct_expr = 14 [json_name = "DistinctExpr"]; bool has_distinct_expr() const; private: bool _internal_has_distinct_expr() const; public: void clear_distinct_expr(); const ::pg_query::DistinctExpr& distinct_expr() const; ::pg_query::DistinctExpr* release_distinct_expr(); ::pg_query::DistinctExpr* mutable_distinct_expr(); void set_allocated_distinct_expr(::pg_query::DistinctExpr* distinct_expr); private: const ::pg_query::DistinctExpr& _internal_distinct_expr() const; ::pg_query::DistinctExpr* _internal_mutable_distinct_expr(); public: void unsafe_arena_set_allocated_distinct_expr( ::pg_query::DistinctExpr* distinct_expr); ::pg_query::DistinctExpr* unsafe_arena_release_distinct_expr(); // .pg_query.NullIfExpr null_if_expr = 15 [json_name = "NullIfExpr"]; bool has_null_if_expr() const; private: bool _internal_has_null_if_expr() const; public: void clear_null_if_expr(); const ::pg_query::NullIfExpr& null_if_expr() const; ::pg_query::NullIfExpr* release_null_if_expr(); ::pg_query::NullIfExpr* mutable_null_if_expr(); void set_allocated_null_if_expr(::pg_query::NullIfExpr* null_if_expr); private: const ::pg_query::NullIfExpr& _internal_null_if_expr() const; ::pg_query::NullIfExpr* _internal_mutable_null_if_expr(); public: void unsafe_arena_set_allocated_null_if_expr( ::pg_query::NullIfExpr* null_if_expr); ::pg_query::NullIfExpr* unsafe_arena_release_null_if_expr(); // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 16 [json_name = "ScalarArrayOpExpr"]; bool has_scalar_array_op_expr() const; private: bool _internal_has_scalar_array_op_expr() const; public: void clear_scalar_array_op_expr(); const ::pg_query::ScalarArrayOpExpr& scalar_array_op_expr() const; ::pg_query::ScalarArrayOpExpr* release_scalar_array_op_expr(); ::pg_query::ScalarArrayOpExpr* mutable_scalar_array_op_expr(); void set_allocated_scalar_array_op_expr(::pg_query::ScalarArrayOpExpr* scalar_array_op_expr); private: const ::pg_query::ScalarArrayOpExpr& _internal_scalar_array_op_expr() const; ::pg_query::ScalarArrayOpExpr* _internal_mutable_scalar_array_op_expr(); public: void unsafe_arena_set_allocated_scalar_array_op_expr( ::pg_query::ScalarArrayOpExpr* scalar_array_op_expr); ::pg_query::ScalarArrayOpExpr* unsafe_arena_release_scalar_array_op_expr(); // .pg_query.BoolExpr bool_expr = 17 [json_name = "BoolExpr"]; bool has_bool_expr() const; private: bool _internal_has_bool_expr() const; public: void clear_bool_expr(); const ::pg_query::BoolExpr& bool_expr() const; ::pg_query::BoolExpr* release_bool_expr(); ::pg_query::BoolExpr* mutable_bool_expr(); void set_allocated_bool_expr(::pg_query::BoolExpr* bool_expr); private: const ::pg_query::BoolExpr& _internal_bool_expr() const; ::pg_query::BoolExpr* _internal_mutable_bool_expr(); public: void unsafe_arena_set_allocated_bool_expr( ::pg_query::BoolExpr* bool_expr); ::pg_query::BoolExpr* unsafe_arena_release_bool_expr(); // .pg_query.SubLink sub_link = 18 [json_name = "SubLink"]; bool has_sub_link() const; private: bool _internal_has_sub_link() const; public: void clear_sub_link(); const ::pg_query::SubLink& sub_link() const; ::pg_query::SubLink* release_sub_link(); ::pg_query::SubLink* mutable_sub_link(); void set_allocated_sub_link(::pg_query::SubLink* sub_link); private: const ::pg_query::SubLink& _internal_sub_link() const; ::pg_query::SubLink* _internal_mutable_sub_link(); public: void unsafe_arena_set_allocated_sub_link( ::pg_query::SubLink* sub_link); ::pg_query::SubLink* unsafe_arena_release_sub_link(); // .pg_query.SubPlan sub_plan = 19 [json_name = "SubPlan"]; bool has_sub_plan() const; private: bool _internal_has_sub_plan() const; public: void clear_sub_plan(); const ::pg_query::SubPlan& sub_plan() const; ::pg_query::SubPlan* release_sub_plan(); ::pg_query::SubPlan* mutable_sub_plan(); void set_allocated_sub_plan(::pg_query::SubPlan* sub_plan); private: const ::pg_query::SubPlan& _internal_sub_plan() const; ::pg_query::SubPlan* _internal_mutable_sub_plan(); public: void unsafe_arena_set_allocated_sub_plan( ::pg_query::SubPlan* sub_plan); ::pg_query::SubPlan* unsafe_arena_release_sub_plan(); // .pg_query.AlternativeSubPlan alternative_sub_plan = 20 [json_name = "AlternativeSubPlan"]; bool has_alternative_sub_plan() const; private: bool _internal_has_alternative_sub_plan() const; public: void clear_alternative_sub_plan(); const ::pg_query::AlternativeSubPlan& alternative_sub_plan() const; ::pg_query::AlternativeSubPlan* release_alternative_sub_plan(); ::pg_query::AlternativeSubPlan* mutable_alternative_sub_plan(); void set_allocated_alternative_sub_plan(::pg_query::AlternativeSubPlan* alternative_sub_plan); private: const ::pg_query::AlternativeSubPlan& _internal_alternative_sub_plan() const; ::pg_query::AlternativeSubPlan* _internal_mutable_alternative_sub_plan(); public: void unsafe_arena_set_allocated_alternative_sub_plan( ::pg_query::AlternativeSubPlan* alternative_sub_plan); ::pg_query::AlternativeSubPlan* unsafe_arena_release_alternative_sub_plan(); // .pg_query.FieldSelect field_select = 21 [json_name = "FieldSelect"]; bool has_field_select() const; private: bool _internal_has_field_select() const; public: void clear_field_select(); const ::pg_query::FieldSelect& field_select() const; ::pg_query::FieldSelect* release_field_select(); ::pg_query::FieldSelect* mutable_field_select(); void set_allocated_field_select(::pg_query::FieldSelect* field_select); private: const ::pg_query::FieldSelect& _internal_field_select() const; ::pg_query::FieldSelect* _internal_mutable_field_select(); public: void unsafe_arena_set_allocated_field_select( ::pg_query::FieldSelect* field_select); ::pg_query::FieldSelect* unsafe_arena_release_field_select(); // .pg_query.FieldStore field_store = 22 [json_name = "FieldStore"]; bool has_field_store() const; private: bool _internal_has_field_store() const; public: void clear_field_store(); const ::pg_query::FieldStore& field_store() const; ::pg_query::FieldStore* release_field_store(); ::pg_query::FieldStore* mutable_field_store(); void set_allocated_field_store(::pg_query::FieldStore* field_store); private: const ::pg_query::FieldStore& _internal_field_store() const; ::pg_query::FieldStore* _internal_mutable_field_store(); public: void unsafe_arena_set_allocated_field_store( ::pg_query::FieldStore* field_store); ::pg_query::FieldStore* unsafe_arena_release_field_store(); // .pg_query.RelabelType relabel_type = 23 [json_name = "RelabelType"]; bool has_relabel_type() const; private: bool _internal_has_relabel_type() const; public: void clear_relabel_type(); const ::pg_query::RelabelType& relabel_type() const; ::pg_query::RelabelType* release_relabel_type(); ::pg_query::RelabelType* mutable_relabel_type(); void set_allocated_relabel_type(::pg_query::RelabelType* relabel_type); private: const ::pg_query::RelabelType& _internal_relabel_type() const; ::pg_query::RelabelType* _internal_mutable_relabel_type(); public: void unsafe_arena_set_allocated_relabel_type( ::pg_query::RelabelType* relabel_type); ::pg_query::RelabelType* unsafe_arena_release_relabel_type(); // .pg_query.CoerceViaIO coerce_via_io = 24 [json_name = "CoerceViaIO"]; bool has_coerce_via_io() const; private: bool _internal_has_coerce_via_io() const; public: void clear_coerce_via_io(); const ::pg_query::CoerceViaIO& coerce_via_io() const; ::pg_query::CoerceViaIO* release_coerce_via_io(); ::pg_query::CoerceViaIO* mutable_coerce_via_io(); void set_allocated_coerce_via_io(::pg_query::CoerceViaIO* coerce_via_io); private: const ::pg_query::CoerceViaIO& _internal_coerce_via_io() const; ::pg_query::CoerceViaIO* _internal_mutable_coerce_via_io(); public: void unsafe_arena_set_allocated_coerce_via_io( ::pg_query::CoerceViaIO* coerce_via_io); ::pg_query::CoerceViaIO* unsafe_arena_release_coerce_via_io(); // .pg_query.ArrayCoerceExpr array_coerce_expr = 25 [json_name = "ArrayCoerceExpr"]; bool has_array_coerce_expr() const; private: bool _internal_has_array_coerce_expr() const; public: void clear_array_coerce_expr(); const ::pg_query::ArrayCoerceExpr& array_coerce_expr() const; ::pg_query::ArrayCoerceExpr* release_array_coerce_expr(); ::pg_query::ArrayCoerceExpr* mutable_array_coerce_expr(); void set_allocated_array_coerce_expr(::pg_query::ArrayCoerceExpr* array_coerce_expr); private: const ::pg_query::ArrayCoerceExpr& _internal_array_coerce_expr() const; ::pg_query::ArrayCoerceExpr* _internal_mutable_array_coerce_expr(); public: void unsafe_arena_set_allocated_array_coerce_expr( ::pg_query::ArrayCoerceExpr* array_coerce_expr); ::pg_query::ArrayCoerceExpr* unsafe_arena_release_array_coerce_expr(); // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 26 [json_name = "ConvertRowtypeExpr"]; bool has_convert_rowtype_expr() const; private: bool _internal_has_convert_rowtype_expr() const; public: void clear_convert_rowtype_expr(); const ::pg_query::ConvertRowtypeExpr& convert_rowtype_expr() const; ::pg_query::ConvertRowtypeExpr* release_convert_rowtype_expr(); ::pg_query::ConvertRowtypeExpr* mutable_convert_rowtype_expr(); void set_allocated_convert_rowtype_expr(::pg_query::ConvertRowtypeExpr* convert_rowtype_expr); private: const ::pg_query::ConvertRowtypeExpr& _internal_convert_rowtype_expr() const; ::pg_query::ConvertRowtypeExpr* _internal_mutable_convert_rowtype_expr(); public: void unsafe_arena_set_allocated_convert_rowtype_expr( ::pg_query::ConvertRowtypeExpr* convert_rowtype_expr); ::pg_query::ConvertRowtypeExpr* unsafe_arena_release_convert_rowtype_expr(); // .pg_query.CollateExpr collate_expr = 27 [json_name = "CollateExpr"]; bool has_collate_expr() const; private: bool _internal_has_collate_expr() const; public: void clear_collate_expr(); const ::pg_query::CollateExpr& collate_expr() const; ::pg_query::CollateExpr* release_collate_expr(); ::pg_query::CollateExpr* mutable_collate_expr(); void set_allocated_collate_expr(::pg_query::CollateExpr* collate_expr); private: const ::pg_query::CollateExpr& _internal_collate_expr() const; ::pg_query::CollateExpr* _internal_mutable_collate_expr(); public: void unsafe_arena_set_allocated_collate_expr( ::pg_query::CollateExpr* collate_expr); ::pg_query::CollateExpr* unsafe_arena_release_collate_expr(); // .pg_query.CaseExpr case_expr = 28 [json_name = "CaseExpr"]; bool has_case_expr() const; private: bool _internal_has_case_expr() const; public: void clear_case_expr(); const ::pg_query::CaseExpr& case_expr() const; ::pg_query::CaseExpr* release_case_expr(); ::pg_query::CaseExpr* mutable_case_expr(); void set_allocated_case_expr(::pg_query::CaseExpr* case_expr); private: const ::pg_query::CaseExpr& _internal_case_expr() const; ::pg_query::CaseExpr* _internal_mutable_case_expr(); public: void unsafe_arena_set_allocated_case_expr( ::pg_query::CaseExpr* case_expr); ::pg_query::CaseExpr* unsafe_arena_release_case_expr(); // .pg_query.CaseWhen case_when = 29 [json_name = "CaseWhen"]; bool has_case_when() const; private: bool _internal_has_case_when() const; public: void clear_case_when(); const ::pg_query::CaseWhen& case_when() const; ::pg_query::CaseWhen* release_case_when(); ::pg_query::CaseWhen* mutable_case_when(); void set_allocated_case_when(::pg_query::CaseWhen* case_when); private: const ::pg_query::CaseWhen& _internal_case_when() const; ::pg_query::CaseWhen* _internal_mutable_case_when(); public: void unsafe_arena_set_allocated_case_when( ::pg_query::CaseWhen* case_when); ::pg_query::CaseWhen* unsafe_arena_release_case_when(); // .pg_query.CaseTestExpr case_test_expr = 30 [json_name = "CaseTestExpr"]; bool has_case_test_expr() const; private: bool _internal_has_case_test_expr() const; public: void clear_case_test_expr(); const ::pg_query::CaseTestExpr& case_test_expr() const; ::pg_query::CaseTestExpr* release_case_test_expr(); ::pg_query::CaseTestExpr* mutable_case_test_expr(); void set_allocated_case_test_expr(::pg_query::CaseTestExpr* case_test_expr); private: const ::pg_query::CaseTestExpr& _internal_case_test_expr() const; ::pg_query::CaseTestExpr* _internal_mutable_case_test_expr(); public: void unsafe_arena_set_allocated_case_test_expr( ::pg_query::CaseTestExpr* case_test_expr); ::pg_query::CaseTestExpr* unsafe_arena_release_case_test_expr(); // .pg_query.ArrayExpr array_expr = 31 [json_name = "ArrayExpr"]; bool has_array_expr() const; private: bool _internal_has_array_expr() const; public: void clear_array_expr(); const ::pg_query::ArrayExpr& array_expr() const; ::pg_query::ArrayExpr* release_array_expr(); ::pg_query::ArrayExpr* mutable_array_expr(); void set_allocated_array_expr(::pg_query::ArrayExpr* array_expr); private: const ::pg_query::ArrayExpr& _internal_array_expr() const; ::pg_query::ArrayExpr* _internal_mutable_array_expr(); public: void unsafe_arena_set_allocated_array_expr( ::pg_query::ArrayExpr* array_expr); ::pg_query::ArrayExpr* unsafe_arena_release_array_expr(); // .pg_query.RowExpr row_expr = 32 [json_name = "RowExpr"]; bool has_row_expr() const; private: bool _internal_has_row_expr() const; public: void clear_row_expr(); const ::pg_query::RowExpr& row_expr() const; ::pg_query::RowExpr* release_row_expr(); ::pg_query::RowExpr* mutable_row_expr(); void set_allocated_row_expr(::pg_query::RowExpr* row_expr); private: const ::pg_query::RowExpr& _internal_row_expr() const; ::pg_query::RowExpr* _internal_mutable_row_expr(); public: void unsafe_arena_set_allocated_row_expr( ::pg_query::RowExpr* row_expr); ::pg_query::RowExpr* unsafe_arena_release_row_expr(); // .pg_query.RowCompareExpr row_compare_expr = 33 [json_name = "RowCompareExpr"]; bool has_row_compare_expr() const; private: bool _internal_has_row_compare_expr() const; public: void clear_row_compare_expr(); const ::pg_query::RowCompareExpr& row_compare_expr() const; ::pg_query::RowCompareExpr* release_row_compare_expr(); ::pg_query::RowCompareExpr* mutable_row_compare_expr(); void set_allocated_row_compare_expr(::pg_query::RowCompareExpr* row_compare_expr); private: const ::pg_query::RowCompareExpr& _internal_row_compare_expr() const; ::pg_query::RowCompareExpr* _internal_mutable_row_compare_expr(); public: void unsafe_arena_set_allocated_row_compare_expr( ::pg_query::RowCompareExpr* row_compare_expr); ::pg_query::RowCompareExpr* unsafe_arena_release_row_compare_expr(); // .pg_query.CoalesceExpr coalesce_expr = 34 [json_name = "CoalesceExpr"]; bool has_coalesce_expr() const; private: bool _internal_has_coalesce_expr() const; public: void clear_coalesce_expr(); const ::pg_query::CoalesceExpr& coalesce_expr() const; ::pg_query::CoalesceExpr* release_coalesce_expr(); ::pg_query::CoalesceExpr* mutable_coalesce_expr(); void set_allocated_coalesce_expr(::pg_query::CoalesceExpr* coalesce_expr); private: const ::pg_query::CoalesceExpr& _internal_coalesce_expr() const; ::pg_query::CoalesceExpr* _internal_mutable_coalesce_expr(); public: void unsafe_arena_set_allocated_coalesce_expr( ::pg_query::CoalesceExpr* coalesce_expr); ::pg_query::CoalesceExpr* unsafe_arena_release_coalesce_expr(); // .pg_query.MinMaxExpr min_max_expr = 35 [json_name = "MinMaxExpr"]; bool has_min_max_expr() const; private: bool _internal_has_min_max_expr() const; public: void clear_min_max_expr(); const ::pg_query::MinMaxExpr& min_max_expr() const; ::pg_query::MinMaxExpr* release_min_max_expr(); ::pg_query::MinMaxExpr* mutable_min_max_expr(); void set_allocated_min_max_expr(::pg_query::MinMaxExpr* min_max_expr); private: const ::pg_query::MinMaxExpr& _internal_min_max_expr() const; ::pg_query::MinMaxExpr* _internal_mutable_min_max_expr(); public: void unsafe_arena_set_allocated_min_max_expr( ::pg_query::MinMaxExpr* min_max_expr); ::pg_query::MinMaxExpr* unsafe_arena_release_min_max_expr(); // .pg_query.SQLValueFunction sqlvalue_function = 36 [json_name = "SQLValueFunction"]; bool has_sqlvalue_function() const; private: bool _internal_has_sqlvalue_function() const; public: void clear_sqlvalue_function(); const ::pg_query::SQLValueFunction& sqlvalue_function() const; ::pg_query::SQLValueFunction* release_sqlvalue_function(); ::pg_query::SQLValueFunction* mutable_sqlvalue_function(); void set_allocated_sqlvalue_function(::pg_query::SQLValueFunction* sqlvalue_function); private: const ::pg_query::SQLValueFunction& _internal_sqlvalue_function() const; ::pg_query::SQLValueFunction* _internal_mutable_sqlvalue_function(); public: void unsafe_arena_set_allocated_sqlvalue_function( ::pg_query::SQLValueFunction* sqlvalue_function); ::pg_query::SQLValueFunction* unsafe_arena_release_sqlvalue_function(); // .pg_query.XmlExpr xml_expr = 37 [json_name = "XmlExpr"]; bool has_xml_expr() const; private: bool _internal_has_xml_expr() const; public: void clear_xml_expr(); const ::pg_query::XmlExpr& xml_expr() const; ::pg_query::XmlExpr* release_xml_expr(); ::pg_query::XmlExpr* mutable_xml_expr(); void set_allocated_xml_expr(::pg_query::XmlExpr* xml_expr); private: const ::pg_query::XmlExpr& _internal_xml_expr() const; ::pg_query::XmlExpr* _internal_mutable_xml_expr(); public: void unsafe_arena_set_allocated_xml_expr( ::pg_query::XmlExpr* xml_expr); ::pg_query::XmlExpr* unsafe_arena_release_xml_expr(); // .pg_query.NullTest null_test = 38 [json_name = "NullTest"]; bool has_null_test() const; private: bool _internal_has_null_test() const; public: void clear_null_test(); const ::pg_query::NullTest& null_test() const; ::pg_query::NullTest* release_null_test(); ::pg_query::NullTest* mutable_null_test(); void set_allocated_null_test(::pg_query::NullTest* null_test); private: const ::pg_query::NullTest& _internal_null_test() const; ::pg_query::NullTest* _internal_mutable_null_test(); public: void unsafe_arena_set_allocated_null_test( ::pg_query::NullTest* null_test); ::pg_query::NullTest* unsafe_arena_release_null_test(); // .pg_query.BooleanTest boolean_test = 39 [json_name = "BooleanTest"]; bool has_boolean_test() const; private: bool _internal_has_boolean_test() const; public: void clear_boolean_test(); const ::pg_query::BooleanTest& boolean_test() const; ::pg_query::BooleanTest* release_boolean_test(); ::pg_query::BooleanTest* mutable_boolean_test(); void set_allocated_boolean_test(::pg_query::BooleanTest* boolean_test); private: const ::pg_query::BooleanTest& _internal_boolean_test() const; ::pg_query::BooleanTest* _internal_mutable_boolean_test(); public: void unsafe_arena_set_allocated_boolean_test( ::pg_query::BooleanTest* boolean_test); ::pg_query::BooleanTest* unsafe_arena_release_boolean_test(); // .pg_query.CoerceToDomain coerce_to_domain = 40 [json_name = "CoerceToDomain"]; bool has_coerce_to_domain() const; private: bool _internal_has_coerce_to_domain() const; public: void clear_coerce_to_domain(); const ::pg_query::CoerceToDomain& coerce_to_domain() const; ::pg_query::CoerceToDomain* release_coerce_to_domain(); ::pg_query::CoerceToDomain* mutable_coerce_to_domain(); void set_allocated_coerce_to_domain(::pg_query::CoerceToDomain* coerce_to_domain); private: const ::pg_query::CoerceToDomain& _internal_coerce_to_domain() const; ::pg_query::CoerceToDomain* _internal_mutable_coerce_to_domain(); public: void unsafe_arena_set_allocated_coerce_to_domain( ::pg_query::CoerceToDomain* coerce_to_domain); ::pg_query::CoerceToDomain* unsafe_arena_release_coerce_to_domain(); // .pg_query.CoerceToDomainValue coerce_to_domain_value = 41 [json_name = "CoerceToDomainValue"]; bool has_coerce_to_domain_value() const; private: bool _internal_has_coerce_to_domain_value() const; public: void clear_coerce_to_domain_value(); const ::pg_query::CoerceToDomainValue& coerce_to_domain_value() const; ::pg_query::CoerceToDomainValue* release_coerce_to_domain_value(); ::pg_query::CoerceToDomainValue* mutable_coerce_to_domain_value(); void set_allocated_coerce_to_domain_value(::pg_query::CoerceToDomainValue* coerce_to_domain_value); private: const ::pg_query::CoerceToDomainValue& _internal_coerce_to_domain_value() const; ::pg_query::CoerceToDomainValue* _internal_mutable_coerce_to_domain_value(); public: void unsafe_arena_set_allocated_coerce_to_domain_value( ::pg_query::CoerceToDomainValue* coerce_to_domain_value); ::pg_query::CoerceToDomainValue* unsafe_arena_release_coerce_to_domain_value(); // .pg_query.SetToDefault set_to_default = 42 [json_name = "SetToDefault"]; bool has_set_to_default() const; private: bool _internal_has_set_to_default() const; public: void clear_set_to_default(); const ::pg_query::SetToDefault& set_to_default() const; ::pg_query::SetToDefault* release_set_to_default(); ::pg_query::SetToDefault* mutable_set_to_default(); void set_allocated_set_to_default(::pg_query::SetToDefault* set_to_default); private: const ::pg_query::SetToDefault& _internal_set_to_default() const; ::pg_query::SetToDefault* _internal_mutable_set_to_default(); public: void unsafe_arena_set_allocated_set_to_default( ::pg_query::SetToDefault* set_to_default); ::pg_query::SetToDefault* unsafe_arena_release_set_to_default(); // .pg_query.CurrentOfExpr current_of_expr = 43 [json_name = "CurrentOfExpr"]; bool has_current_of_expr() const; private: bool _internal_has_current_of_expr() const; public: void clear_current_of_expr(); const ::pg_query::CurrentOfExpr& current_of_expr() const; ::pg_query::CurrentOfExpr* release_current_of_expr(); ::pg_query::CurrentOfExpr* mutable_current_of_expr(); void set_allocated_current_of_expr(::pg_query::CurrentOfExpr* current_of_expr); private: const ::pg_query::CurrentOfExpr& _internal_current_of_expr() const; ::pg_query::CurrentOfExpr* _internal_mutable_current_of_expr(); public: void unsafe_arena_set_allocated_current_of_expr( ::pg_query::CurrentOfExpr* current_of_expr); ::pg_query::CurrentOfExpr* unsafe_arena_release_current_of_expr(); // .pg_query.NextValueExpr next_value_expr = 44 [json_name = "NextValueExpr"]; bool has_next_value_expr() const; private: bool _internal_has_next_value_expr() const; public: void clear_next_value_expr(); const ::pg_query::NextValueExpr& next_value_expr() const; ::pg_query::NextValueExpr* release_next_value_expr(); ::pg_query::NextValueExpr* mutable_next_value_expr(); void set_allocated_next_value_expr(::pg_query::NextValueExpr* next_value_expr); private: const ::pg_query::NextValueExpr& _internal_next_value_expr() const; ::pg_query::NextValueExpr* _internal_mutable_next_value_expr(); public: void unsafe_arena_set_allocated_next_value_expr( ::pg_query::NextValueExpr* next_value_expr); ::pg_query::NextValueExpr* unsafe_arena_release_next_value_expr(); // .pg_query.InferenceElem inference_elem = 45 [json_name = "InferenceElem"]; bool has_inference_elem() const; private: bool _internal_has_inference_elem() const; public: void clear_inference_elem(); const ::pg_query::InferenceElem& inference_elem() const; ::pg_query::InferenceElem* release_inference_elem(); ::pg_query::InferenceElem* mutable_inference_elem(); void set_allocated_inference_elem(::pg_query::InferenceElem* inference_elem); private: const ::pg_query::InferenceElem& _internal_inference_elem() const; ::pg_query::InferenceElem* _internal_mutable_inference_elem(); public: void unsafe_arena_set_allocated_inference_elem( ::pg_query::InferenceElem* inference_elem); ::pg_query::InferenceElem* unsafe_arena_release_inference_elem(); // .pg_query.TargetEntry target_entry = 46 [json_name = "TargetEntry"]; bool has_target_entry() const; private: bool _internal_has_target_entry() const; public: void clear_target_entry(); const ::pg_query::TargetEntry& target_entry() const; ::pg_query::TargetEntry* release_target_entry(); ::pg_query::TargetEntry* mutable_target_entry(); void set_allocated_target_entry(::pg_query::TargetEntry* target_entry); private: const ::pg_query::TargetEntry& _internal_target_entry() const; ::pg_query::TargetEntry* _internal_mutable_target_entry(); public: void unsafe_arena_set_allocated_target_entry( ::pg_query::TargetEntry* target_entry); ::pg_query::TargetEntry* unsafe_arena_release_target_entry(); // .pg_query.RangeTblRef range_tbl_ref = 47 [json_name = "RangeTblRef"]; bool has_range_tbl_ref() const; private: bool _internal_has_range_tbl_ref() const; public: void clear_range_tbl_ref(); const ::pg_query::RangeTblRef& range_tbl_ref() const; ::pg_query::RangeTblRef* release_range_tbl_ref(); ::pg_query::RangeTblRef* mutable_range_tbl_ref(); void set_allocated_range_tbl_ref(::pg_query::RangeTblRef* range_tbl_ref); private: const ::pg_query::RangeTblRef& _internal_range_tbl_ref() const; ::pg_query::RangeTblRef* _internal_mutable_range_tbl_ref(); public: void unsafe_arena_set_allocated_range_tbl_ref( ::pg_query::RangeTblRef* range_tbl_ref); ::pg_query::RangeTblRef* unsafe_arena_release_range_tbl_ref(); // .pg_query.JoinExpr join_expr = 48 [json_name = "JoinExpr"]; bool has_join_expr() const; private: bool _internal_has_join_expr() const; public: void clear_join_expr(); const ::pg_query::JoinExpr& join_expr() const; ::pg_query::JoinExpr* release_join_expr(); ::pg_query::JoinExpr* mutable_join_expr(); void set_allocated_join_expr(::pg_query::JoinExpr* join_expr); private: const ::pg_query::JoinExpr& _internal_join_expr() const; ::pg_query::JoinExpr* _internal_mutable_join_expr(); public: void unsafe_arena_set_allocated_join_expr( ::pg_query::JoinExpr* join_expr); ::pg_query::JoinExpr* unsafe_arena_release_join_expr(); // .pg_query.FromExpr from_expr = 49 [json_name = "FromExpr"]; bool has_from_expr() const; private: bool _internal_has_from_expr() const; public: void clear_from_expr(); const ::pg_query::FromExpr& from_expr() const; ::pg_query::FromExpr* release_from_expr(); ::pg_query::FromExpr* mutable_from_expr(); void set_allocated_from_expr(::pg_query::FromExpr* from_expr); private: const ::pg_query::FromExpr& _internal_from_expr() const; ::pg_query::FromExpr* _internal_mutable_from_expr(); public: void unsafe_arena_set_allocated_from_expr( ::pg_query::FromExpr* from_expr); ::pg_query::FromExpr* unsafe_arena_release_from_expr(); // .pg_query.OnConflictExpr on_conflict_expr = 50 [json_name = "OnConflictExpr"]; bool has_on_conflict_expr() const; private: bool _internal_has_on_conflict_expr() const; public: void clear_on_conflict_expr(); const ::pg_query::OnConflictExpr& on_conflict_expr() const; ::pg_query::OnConflictExpr* release_on_conflict_expr(); ::pg_query::OnConflictExpr* mutable_on_conflict_expr(); void set_allocated_on_conflict_expr(::pg_query::OnConflictExpr* on_conflict_expr); private: const ::pg_query::OnConflictExpr& _internal_on_conflict_expr() const; ::pg_query::OnConflictExpr* _internal_mutable_on_conflict_expr(); public: void unsafe_arena_set_allocated_on_conflict_expr( ::pg_query::OnConflictExpr* on_conflict_expr); ::pg_query::OnConflictExpr* unsafe_arena_release_on_conflict_expr(); // .pg_query.IntoClause into_clause = 51 [json_name = "IntoClause"]; bool has_into_clause() const; private: bool _internal_has_into_clause() const; public: void clear_into_clause(); const ::pg_query::IntoClause& into_clause() const; ::pg_query::IntoClause* release_into_clause(); ::pg_query::IntoClause* mutable_into_clause(); void set_allocated_into_clause(::pg_query::IntoClause* into_clause); private: const ::pg_query::IntoClause& _internal_into_clause() const; ::pg_query::IntoClause* _internal_mutable_into_clause(); public: void unsafe_arena_set_allocated_into_clause( ::pg_query::IntoClause* into_clause); ::pg_query::IntoClause* unsafe_arena_release_into_clause(); // .pg_query.RawStmt raw_stmt = 52 [json_name = "RawStmt"]; bool has_raw_stmt() const; private: bool _internal_has_raw_stmt() const; public: void clear_raw_stmt(); const ::pg_query::RawStmt& raw_stmt() const; ::pg_query::RawStmt* release_raw_stmt(); ::pg_query::RawStmt* mutable_raw_stmt(); void set_allocated_raw_stmt(::pg_query::RawStmt* raw_stmt); private: const ::pg_query::RawStmt& _internal_raw_stmt() const; ::pg_query::RawStmt* _internal_mutable_raw_stmt(); public: void unsafe_arena_set_allocated_raw_stmt( ::pg_query::RawStmt* raw_stmt); ::pg_query::RawStmt* unsafe_arena_release_raw_stmt(); // .pg_query.Query query = 53 [json_name = "Query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Query& query() const; ::pg_query::Query* release_query(); ::pg_query::Query* mutable_query(); void set_allocated_query(::pg_query::Query* query); private: const ::pg_query::Query& _internal_query() const; ::pg_query::Query* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Query* query); ::pg_query::Query* unsafe_arena_release_query(); // .pg_query.InsertStmt insert_stmt = 54 [json_name = "InsertStmt"]; bool has_insert_stmt() const; private: bool _internal_has_insert_stmt() const; public: void clear_insert_stmt(); const ::pg_query::InsertStmt& insert_stmt() const; ::pg_query::InsertStmt* release_insert_stmt(); ::pg_query::InsertStmt* mutable_insert_stmt(); void set_allocated_insert_stmt(::pg_query::InsertStmt* insert_stmt); private: const ::pg_query::InsertStmt& _internal_insert_stmt() const; ::pg_query::InsertStmt* _internal_mutable_insert_stmt(); public: void unsafe_arena_set_allocated_insert_stmt( ::pg_query::InsertStmt* insert_stmt); ::pg_query::InsertStmt* unsafe_arena_release_insert_stmt(); // .pg_query.DeleteStmt delete_stmt = 55 [json_name = "DeleteStmt"]; bool has_delete_stmt() const; private: bool _internal_has_delete_stmt() const; public: void clear_delete_stmt(); const ::pg_query::DeleteStmt& delete_stmt() const; ::pg_query::DeleteStmt* release_delete_stmt(); ::pg_query::DeleteStmt* mutable_delete_stmt(); void set_allocated_delete_stmt(::pg_query::DeleteStmt* delete_stmt); private: const ::pg_query::DeleteStmt& _internal_delete_stmt() const; ::pg_query::DeleteStmt* _internal_mutable_delete_stmt(); public: void unsafe_arena_set_allocated_delete_stmt( ::pg_query::DeleteStmt* delete_stmt); ::pg_query::DeleteStmt* unsafe_arena_release_delete_stmt(); // .pg_query.UpdateStmt update_stmt = 56 [json_name = "UpdateStmt"]; bool has_update_stmt() const; private: bool _internal_has_update_stmt() const; public: void clear_update_stmt(); const ::pg_query::UpdateStmt& update_stmt() const; ::pg_query::UpdateStmt* release_update_stmt(); ::pg_query::UpdateStmt* mutable_update_stmt(); void set_allocated_update_stmt(::pg_query::UpdateStmt* update_stmt); private: const ::pg_query::UpdateStmt& _internal_update_stmt() const; ::pg_query::UpdateStmt* _internal_mutable_update_stmt(); public: void unsafe_arena_set_allocated_update_stmt( ::pg_query::UpdateStmt* update_stmt); ::pg_query::UpdateStmt* unsafe_arena_release_update_stmt(); // .pg_query.SelectStmt select_stmt = 57 [json_name = "SelectStmt"]; bool has_select_stmt() const; private: bool _internal_has_select_stmt() const; public: void clear_select_stmt(); const ::pg_query::SelectStmt& select_stmt() const; ::pg_query::SelectStmt* release_select_stmt(); ::pg_query::SelectStmt* mutable_select_stmt(); void set_allocated_select_stmt(::pg_query::SelectStmt* select_stmt); private: const ::pg_query::SelectStmt& _internal_select_stmt() const; ::pg_query::SelectStmt* _internal_mutable_select_stmt(); public: void unsafe_arena_set_allocated_select_stmt( ::pg_query::SelectStmt* select_stmt); ::pg_query::SelectStmt* unsafe_arena_release_select_stmt(); // .pg_query.AlterTableStmt alter_table_stmt = 58 [json_name = "AlterTableStmt"]; bool has_alter_table_stmt() const; private: bool _internal_has_alter_table_stmt() const; public: void clear_alter_table_stmt(); const ::pg_query::AlterTableStmt& alter_table_stmt() const; ::pg_query::AlterTableStmt* release_alter_table_stmt(); ::pg_query::AlterTableStmt* mutable_alter_table_stmt(); void set_allocated_alter_table_stmt(::pg_query::AlterTableStmt* alter_table_stmt); private: const ::pg_query::AlterTableStmt& _internal_alter_table_stmt() const; ::pg_query::AlterTableStmt* _internal_mutable_alter_table_stmt(); public: void unsafe_arena_set_allocated_alter_table_stmt( ::pg_query::AlterTableStmt* alter_table_stmt); ::pg_query::AlterTableStmt* unsafe_arena_release_alter_table_stmt(); // .pg_query.AlterTableCmd alter_table_cmd = 59 [json_name = "AlterTableCmd"]; bool has_alter_table_cmd() const; private: bool _internal_has_alter_table_cmd() const; public: void clear_alter_table_cmd(); const ::pg_query::AlterTableCmd& alter_table_cmd() const; ::pg_query::AlterTableCmd* release_alter_table_cmd(); ::pg_query::AlterTableCmd* mutable_alter_table_cmd(); void set_allocated_alter_table_cmd(::pg_query::AlterTableCmd* alter_table_cmd); private: const ::pg_query::AlterTableCmd& _internal_alter_table_cmd() const; ::pg_query::AlterTableCmd* _internal_mutable_alter_table_cmd(); public: void unsafe_arena_set_allocated_alter_table_cmd( ::pg_query::AlterTableCmd* alter_table_cmd); ::pg_query::AlterTableCmd* unsafe_arena_release_alter_table_cmd(); // .pg_query.AlterDomainStmt alter_domain_stmt = 60 [json_name = "AlterDomainStmt"]; bool has_alter_domain_stmt() const; private: bool _internal_has_alter_domain_stmt() const; public: void clear_alter_domain_stmt(); const ::pg_query::AlterDomainStmt& alter_domain_stmt() const; ::pg_query::AlterDomainStmt* release_alter_domain_stmt(); ::pg_query::AlterDomainStmt* mutable_alter_domain_stmt(); void set_allocated_alter_domain_stmt(::pg_query::AlterDomainStmt* alter_domain_stmt); private: const ::pg_query::AlterDomainStmt& _internal_alter_domain_stmt() const; ::pg_query::AlterDomainStmt* _internal_mutable_alter_domain_stmt(); public: void unsafe_arena_set_allocated_alter_domain_stmt( ::pg_query::AlterDomainStmt* alter_domain_stmt); ::pg_query::AlterDomainStmt* unsafe_arena_release_alter_domain_stmt(); // .pg_query.SetOperationStmt set_operation_stmt = 61 [json_name = "SetOperationStmt"]; bool has_set_operation_stmt() const; private: bool _internal_has_set_operation_stmt() const; public: void clear_set_operation_stmt(); const ::pg_query::SetOperationStmt& set_operation_stmt() const; ::pg_query::SetOperationStmt* release_set_operation_stmt(); ::pg_query::SetOperationStmt* mutable_set_operation_stmt(); void set_allocated_set_operation_stmt(::pg_query::SetOperationStmt* set_operation_stmt); private: const ::pg_query::SetOperationStmt& _internal_set_operation_stmt() const; ::pg_query::SetOperationStmt* _internal_mutable_set_operation_stmt(); public: void unsafe_arena_set_allocated_set_operation_stmt( ::pg_query::SetOperationStmt* set_operation_stmt); ::pg_query::SetOperationStmt* unsafe_arena_release_set_operation_stmt(); // .pg_query.GrantStmt grant_stmt = 62 [json_name = "GrantStmt"]; bool has_grant_stmt() const; private: bool _internal_has_grant_stmt() const; public: void clear_grant_stmt(); const ::pg_query::GrantStmt& grant_stmt() const; ::pg_query::GrantStmt* release_grant_stmt(); ::pg_query::GrantStmt* mutable_grant_stmt(); void set_allocated_grant_stmt(::pg_query::GrantStmt* grant_stmt); private: const ::pg_query::GrantStmt& _internal_grant_stmt() const; ::pg_query::GrantStmt* _internal_mutable_grant_stmt(); public: void unsafe_arena_set_allocated_grant_stmt( ::pg_query::GrantStmt* grant_stmt); ::pg_query::GrantStmt* unsafe_arena_release_grant_stmt(); // .pg_query.GrantRoleStmt grant_role_stmt = 63 [json_name = "GrantRoleStmt"]; bool has_grant_role_stmt() const; private: bool _internal_has_grant_role_stmt() const; public: void clear_grant_role_stmt(); const ::pg_query::GrantRoleStmt& grant_role_stmt() const; ::pg_query::GrantRoleStmt* release_grant_role_stmt(); ::pg_query::GrantRoleStmt* mutable_grant_role_stmt(); void set_allocated_grant_role_stmt(::pg_query::GrantRoleStmt* grant_role_stmt); private: const ::pg_query::GrantRoleStmt& _internal_grant_role_stmt() const; ::pg_query::GrantRoleStmt* _internal_mutable_grant_role_stmt(); public: void unsafe_arena_set_allocated_grant_role_stmt( ::pg_query::GrantRoleStmt* grant_role_stmt); ::pg_query::GrantRoleStmt* unsafe_arena_release_grant_role_stmt(); // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 64 [json_name = "AlterDefaultPrivilegesStmt"]; bool has_alter_default_privileges_stmt() const; private: bool _internal_has_alter_default_privileges_stmt() const; public: void clear_alter_default_privileges_stmt(); const ::pg_query::AlterDefaultPrivilegesStmt& alter_default_privileges_stmt() const; ::pg_query::AlterDefaultPrivilegesStmt* release_alter_default_privileges_stmt(); ::pg_query::AlterDefaultPrivilegesStmt* mutable_alter_default_privileges_stmt(); void set_allocated_alter_default_privileges_stmt(::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt); private: const ::pg_query::AlterDefaultPrivilegesStmt& _internal_alter_default_privileges_stmt() const; ::pg_query::AlterDefaultPrivilegesStmt* _internal_mutable_alter_default_privileges_stmt(); public: void unsafe_arena_set_allocated_alter_default_privileges_stmt( ::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt); ::pg_query::AlterDefaultPrivilegesStmt* unsafe_arena_release_alter_default_privileges_stmt(); // .pg_query.ClosePortalStmt close_portal_stmt = 65 [json_name = "ClosePortalStmt"]; bool has_close_portal_stmt() const; private: bool _internal_has_close_portal_stmt() const; public: void clear_close_portal_stmt(); const ::pg_query::ClosePortalStmt& close_portal_stmt() const; ::pg_query::ClosePortalStmt* release_close_portal_stmt(); ::pg_query::ClosePortalStmt* mutable_close_portal_stmt(); void set_allocated_close_portal_stmt(::pg_query::ClosePortalStmt* close_portal_stmt); private: const ::pg_query::ClosePortalStmt& _internal_close_portal_stmt() const; ::pg_query::ClosePortalStmt* _internal_mutable_close_portal_stmt(); public: void unsafe_arena_set_allocated_close_portal_stmt( ::pg_query::ClosePortalStmt* close_portal_stmt); ::pg_query::ClosePortalStmt* unsafe_arena_release_close_portal_stmt(); // .pg_query.ClusterStmt cluster_stmt = 66 [json_name = "ClusterStmt"]; bool has_cluster_stmt() const; private: bool _internal_has_cluster_stmt() const; public: void clear_cluster_stmt(); const ::pg_query::ClusterStmt& cluster_stmt() const; ::pg_query::ClusterStmt* release_cluster_stmt(); ::pg_query::ClusterStmt* mutable_cluster_stmt(); void set_allocated_cluster_stmt(::pg_query::ClusterStmt* cluster_stmt); private: const ::pg_query::ClusterStmt& _internal_cluster_stmt() const; ::pg_query::ClusterStmt* _internal_mutable_cluster_stmt(); public: void unsafe_arena_set_allocated_cluster_stmt( ::pg_query::ClusterStmt* cluster_stmt); ::pg_query::ClusterStmt* unsafe_arena_release_cluster_stmt(); // .pg_query.CopyStmt copy_stmt = 67 [json_name = "CopyStmt"]; bool has_copy_stmt() const; private: bool _internal_has_copy_stmt() const; public: void clear_copy_stmt(); const ::pg_query::CopyStmt& copy_stmt() const; ::pg_query::CopyStmt* release_copy_stmt(); ::pg_query::CopyStmt* mutable_copy_stmt(); void set_allocated_copy_stmt(::pg_query::CopyStmt* copy_stmt); private: const ::pg_query::CopyStmt& _internal_copy_stmt() const; ::pg_query::CopyStmt* _internal_mutable_copy_stmt(); public: void unsafe_arena_set_allocated_copy_stmt( ::pg_query::CopyStmt* copy_stmt); ::pg_query::CopyStmt* unsafe_arena_release_copy_stmt(); // .pg_query.CreateStmt create_stmt = 68 [json_name = "CreateStmt"]; bool has_create_stmt() const; private: bool _internal_has_create_stmt() const; public: void clear_create_stmt(); const ::pg_query::CreateStmt& create_stmt() const; ::pg_query::CreateStmt* release_create_stmt(); ::pg_query::CreateStmt* mutable_create_stmt(); void set_allocated_create_stmt(::pg_query::CreateStmt* create_stmt); private: const ::pg_query::CreateStmt& _internal_create_stmt() const; ::pg_query::CreateStmt* _internal_mutable_create_stmt(); public: void unsafe_arena_set_allocated_create_stmt( ::pg_query::CreateStmt* create_stmt); ::pg_query::CreateStmt* unsafe_arena_release_create_stmt(); // .pg_query.DefineStmt define_stmt = 69 [json_name = "DefineStmt"]; bool has_define_stmt() const; private: bool _internal_has_define_stmt() const; public: void clear_define_stmt(); const ::pg_query::DefineStmt& define_stmt() const; ::pg_query::DefineStmt* release_define_stmt(); ::pg_query::DefineStmt* mutable_define_stmt(); void set_allocated_define_stmt(::pg_query::DefineStmt* define_stmt); private: const ::pg_query::DefineStmt& _internal_define_stmt() const; ::pg_query::DefineStmt* _internal_mutable_define_stmt(); public: void unsafe_arena_set_allocated_define_stmt( ::pg_query::DefineStmt* define_stmt); ::pg_query::DefineStmt* unsafe_arena_release_define_stmt(); // .pg_query.DropStmt drop_stmt = 70 [json_name = "DropStmt"]; bool has_drop_stmt() const; private: bool _internal_has_drop_stmt() const; public: void clear_drop_stmt(); const ::pg_query::DropStmt& drop_stmt() const; ::pg_query::DropStmt* release_drop_stmt(); ::pg_query::DropStmt* mutable_drop_stmt(); void set_allocated_drop_stmt(::pg_query::DropStmt* drop_stmt); private: const ::pg_query::DropStmt& _internal_drop_stmt() const; ::pg_query::DropStmt* _internal_mutable_drop_stmt(); public: void unsafe_arena_set_allocated_drop_stmt( ::pg_query::DropStmt* drop_stmt); ::pg_query::DropStmt* unsafe_arena_release_drop_stmt(); // .pg_query.TruncateStmt truncate_stmt = 71 [json_name = "TruncateStmt"]; bool has_truncate_stmt() const; private: bool _internal_has_truncate_stmt() const; public: void clear_truncate_stmt(); const ::pg_query::TruncateStmt& truncate_stmt() const; ::pg_query::TruncateStmt* release_truncate_stmt(); ::pg_query::TruncateStmt* mutable_truncate_stmt(); void set_allocated_truncate_stmt(::pg_query::TruncateStmt* truncate_stmt); private: const ::pg_query::TruncateStmt& _internal_truncate_stmt() const; ::pg_query::TruncateStmt* _internal_mutable_truncate_stmt(); public: void unsafe_arena_set_allocated_truncate_stmt( ::pg_query::TruncateStmt* truncate_stmt); ::pg_query::TruncateStmt* unsafe_arena_release_truncate_stmt(); // .pg_query.CommentStmt comment_stmt = 72 [json_name = "CommentStmt"]; bool has_comment_stmt() const; private: bool _internal_has_comment_stmt() const; public: void clear_comment_stmt(); const ::pg_query::CommentStmt& comment_stmt() const; ::pg_query::CommentStmt* release_comment_stmt(); ::pg_query::CommentStmt* mutable_comment_stmt(); void set_allocated_comment_stmt(::pg_query::CommentStmt* comment_stmt); private: const ::pg_query::CommentStmt& _internal_comment_stmt() const; ::pg_query::CommentStmt* _internal_mutable_comment_stmt(); public: void unsafe_arena_set_allocated_comment_stmt( ::pg_query::CommentStmt* comment_stmt); ::pg_query::CommentStmt* unsafe_arena_release_comment_stmt(); // .pg_query.FetchStmt fetch_stmt = 73 [json_name = "FetchStmt"]; bool has_fetch_stmt() const; private: bool _internal_has_fetch_stmt() const; public: void clear_fetch_stmt(); const ::pg_query::FetchStmt& fetch_stmt() const; ::pg_query::FetchStmt* release_fetch_stmt(); ::pg_query::FetchStmt* mutable_fetch_stmt(); void set_allocated_fetch_stmt(::pg_query::FetchStmt* fetch_stmt); private: const ::pg_query::FetchStmt& _internal_fetch_stmt() const; ::pg_query::FetchStmt* _internal_mutable_fetch_stmt(); public: void unsafe_arena_set_allocated_fetch_stmt( ::pg_query::FetchStmt* fetch_stmt); ::pg_query::FetchStmt* unsafe_arena_release_fetch_stmt(); // .pg_query.IndexStmt index_stmt = 74 [json_name = "IndexStmt"]; bool has_index_stmt() const; private: bool _internal_has_index_stmt() const; public: void clear_index_stmt(); const ::pg_query::IndexStmt& index_stmt() const; ::pg_query::IndexStmt* release_index_stmt(); ::pg_query::IndexStmt* mutable_index_stmt(); void set_allocated_index_stmt(::pg_query::IndexStmt* index_stmt); private: const ::pg_query::IndexStmt& _internal_index_stmt() const; ::pg_query::IndexStmt* _internal_mutable_index_stmt(); public: void unsafe_arena_set_allocated_index_stmt( ::pg_query::IndexStmt* index_stmt); ::pg_query::IndexStmt* unsafe_arena_release_index_stmt(); // .pg_query.CreateFunctionStmt create_function_stmt = 75 [json_name = "CreateFunctionStmt"]; bool has_create_function_stmt() const; private: bool _internal_has_create_function_stmt() const; public: void clear_create_function_stmt(); const ::pg_query::CreateFunctionStmt& create_function_stmt() const; ::pg_query::CreateFunctionStmt* release_create_function_stmt(); ::pg_query::CreateFunctionStmt* mutable_create_function_stmt(); void set_allocated_create_function_stmt(::pg_query::CreateFunctionStmt* create_function_stmt); private: const ::pg_query::CreateFunctionStmt& _internal_create_function_stmt() const; ::pg_query::CreateFunctionStmt* _internal_mutable_create_function_stmt(); public: void unsafe_arena_set_allocated_create_function_stmt( ::pg_query::CreateFunctionStmt* create_function_stmt); ::pg_query::CreateFunctionStmt* unsafe_arena_release_create_function_stmt(); // .pg_query.AlterFunctionStmt alter_function_stmt = 76 [json_name = "AlterFunctionStmt"]; bool has_alter_function_stmt() const; private: bool _internal_has_alter_function_stmt() const; public: void clear_alter_function_stmt(); const ::pg_query::AlterFunctionStmt& alter_function_stmt() const; ::pg_query::AlterFunctionStmt* release_alter_function_stmt(); ::pg_query::AlterFunctionStmt* mutable_alter_function_stmt(); void set_allocated_alter_function_stmt(::pg_query::AlterFunctionStmt* alter_function_stmt); private: const ::pg_query::AlterFunctionStmt& _internal_alter_function_stmt() const; ::pg_query::AlterFunctionStmt* _internal_mutable_alter_function_stmt(); public: void unsafe_arena_set_allocated_alter_function_stmt( ::pg_query::AlterFunctionStmt* alter_function_stmt); ::pg_query::AlterFunctionStmt* unsafe_arena_release_alter_function_stmt(); // .pg_query.DoStmt do_stmt = 77 [json_name = "DoStmt"]; bool has_do_stmt() const; private: bool _internal_has_do_stmt() const; public: void clear_do_stmt(); const ::pg_query::DoStmt& do_stmt() const; ::pg_query::DoStmt* release_do_stmt(); ::pg_query::DoStmt* mutable_do_stmt(); void set_allocated_do_stmt(::pg_query::DoStmt* do_stmt); private: const ::pg_query::DoStmt& _internal_do_stmt() const; ::pg_query::DoStmt* _internal_mutable_do_stmt(); public: void unsafe_arena_set_allocated_do_stmt( ::pg_query::DoStmt* do_stmt); ::pg_query::DoStmt* unsafe_arena_release_do_stmt(); // .pg_query.RenameStmt rename_stmt = 78 [json_name = "RenameStmt"]; bool has_rename_stmt() const; private: bool _internal_has_rename_stmt() const; public: void clear_rename_stmt(); const ::pg_query::RenameStmt& rename_stmt() const; ::pg_query::RenameStmt* release_rename_stmt(); ::pg_query::RenameStmt* mutable_rename_stmt(); void set_allocated_rename_stmt(::pg_query::RenameStmt* rename_stmt); private: const ::pg_query::RenameStmt& _internal_rename_stmt() const; ::pg_query::RenameStmt* _internal_mutable_rename_stmt(); public: void unsafe_arena_set_allocated_rename_stmt( ::pg_query::RenameStmt* rename_stmt); ::pg_query::RenameStmt* unsafe_arena_release_rename_stmt(); // .pg_query.RuleStmt rule_stmt = 79 [json_name = "RuleStmt"]; bool has_rule_stmt() const; private: bool _internal_has_rule_stmt() const; public: void clear_rule_stmt(); const ::pg_query::RuleStmt& rule_stmt() const; ::pg_query::RuleStmt* release_rule_stmt(); ::pg_query::RuleStmt* mutable_rule_stmt(); void set_allocated_rule_stmt(::pg_query::RuleStmt* rule_stmt); private: const ::pg_query::RuleStmt& _internal_rule_stmt() const; ::pg_query::RuleStmt* _internal_mutable_rule_stmt(); public: void unsafe_arena_set_allocated_rule_stmt( ::pg_query::RuleStmt* rule_stmt); ::pg_query::RuleStmt* unsafe_arena_release_rule_stmt(); // .pg_query.NotifyStmt notify_stmt = 80 [json_name = "NotifyStmt"]; bool has_notify_stmt() const; private: bool _internal_has_notify_stmt() const; public: void clear_notify_stmt(); const ::pg_query::NotifyStmt& notify_stmt() const; ::pg_query::NotifyStmt* release_notify_stmt(); ::pg_query::NotifyStmt* mutable_notify_stmt(); void set_allocated_notify_stmt(::pg_query::NotifyStmt* notify_stmt); private: const ::pg_query::NotifyStmt& _internal_notify_stmt() const; ::pg_query::NotifyStmt* _internal_mutable_notify_stmt(); public: void unsafe_arena_set_allocated_notify_stmt( ::pg_query::NotifyStmt* notify_stmt); ::pg_query::NotifyStmt* unsafe_arena_release_notify_stmt(); // .pg_query.ListenStmt listen_stmt = 81 [json_name = "ListenStmt"]; bool has_listen_stmt() const; private: bool _internal_has_listen_stmt() const; public: void clear_listen_stmt(); const ::pg_query::ListenStmt& listen_stmt() const; ::pg_query::ListenStmt* release_listen_stmt(); ::pg_query::ListenStmt* mutable_listen_stmt(); void set_allocated_listen_stmt(::pg_query::ListenStmt* listen_stmt); private: const ::pg_query::ListenStmt& _internal_listen_stmt() const; ::pg_query::ListenStmt* _internal_mutable_listen_stmt(); public: void unsafe_arena_set_allocated_listen_stmt( ::pg_query::ListenStmt* listen_stmt); ::pg_query::ListenStmt* unsafe_arena_release_listen_stmt(); // .pg_query.UnlistenStmt unlisten_stmt = 82 [json_name = "UnlistenStmt"]; bool has_unlisten_stmt() const; private: bool _internal_has_unlisten_stmt() const; public: void clear_unlisten_stmt(); const ::pg_query::UnlistenStmt& unlisten_stmt() const; ::pg_query::UnlistenStmt* release_unlisten_stmt(); ::pg_query::UnlistenStmt* mutable_unlisten_stmt(); void set_allocated_unlisten_stmt(::pg_query::UnlistenStmt* unlisten_stmt); private: const ::pg_query::UnlistenStmt& _internal_unlisten_stmt() const; ::pg_query::UnlistenStmt* _internal_mutable_unlisten_stmt(); public: void unsafe_arena_set_allocated_unlisten_stmt( ::pg_query::UnlistenStmt* unlisten_stmt); ::pg_query::UnlistenStmt* unsafe_arena_release_unlisten_stmt(); // .pg_query.TransactionStmt transaction_stmt = 83 [json_name = "TransactionStmt"]; bool has_transaction_stmt() const; private: bool _internal_has_transaction_stmt() const; public: void clear_transaction_stmt(); const ::pg_query::TransactionStmt& transaction_stmt() const; ::pg_query::TransactionStmt* release_transaction_stmt(); ::pg_query::TransactionStmt* mutable_transaction_stmt(); void set_allocated_transaction_stmt(::pg_query::TransactionStmt* transaction_stmt); private: const ::pg_query::TransactionStmt& _internal_transaction_stmt() const; ::pg_query::TransactionStmt* _internal_mutable_transaction_stmt(); public: void unsafe_arena_set_allocated_transaction_stmt( ::pg_query::TransactionStmt* transaction_stmt); ::pg_query::TransactionStmt* unsafe_arena_release_transaction_stmt(); // .pg_query.ViewStmt view_stmt = 84 [json_name = "ViewStmt"]; bool has_view_stmt() const; private: bool _internal_has_view_stmt() const; public: void clear_view_stmt(); const ::pg_query::ViewStmt& view_stmt() const; ::pg_query::ViewStmt* release_view_stmt(); ::pg_query::ViewStmt* mutable_view_stmt(); void set_allocated_view_stmt(::pg_query::ViewStmt* view_stmt); private: const ::pg_query::ViewStmt& _internal_view_stmt() const; ::pg_query::ViewStmt* _internal_mutable_view_stmt(); public: void unsafe_arena_set_allocated_view_stmt( ::pg_query::ViewStmt* view_stmt); ::pg_query::ViewStmt* unsafe_arena_release_view_stmt(); // .pg_query.LoadStmt load_stmt = 85 [json_name = "LoadStmt"]; bool has_load_stmt() const; private: bool _internal_has_load_stmt() const; public: void clear_load_stmt(); const ::pg_query::LoadStmt& load_stmt() const; ::pg_query::LoadStmt* release_load_stmt(); ::pg_query::LoadStmt* mutable_load_stmt(); void set_allocated_load_stmt(::pg_query::LoadStmt* load_stmt); private: const ::pg_query::LoadStmt& _internal_load_stmt() const; ::pg_query::LoadStmt* _internal_mutable_load_stmt(); public: void unsafe_arena_set_allocated_load_stmt( ::pg_query::LoadStmt* load_stmt); ::pg_query::LoadStmt* unsafe_arena_release_load_stmt(); // .pg_query.CreateDomainStmt create_domain_stmt = 86 [json_name = "CreateDomainStmt"]; bool has_create_domain_stmt() const; private: bool _internal_has_create_domain_stmt() const; public: void clear_create_domain_stmt(); const ::pg_query::CreateDomainStmt& create_domain_stmt() const; ::pg_query::CreateDomainStmt* release_create_domain_stmt(); ::pg_query::CreateDomainStmt* mutable_create_domain_stmt(); void set_allocated_create_domain_stmt(::pg_query::CreateDomainStmt* create_domain_stmt); private: const ::pg_query::CreateDomainStmt& _internal_create_domain_stmt() const; ::pg_query::CreateDomainStmt* _internal_mutable_create_domain_stmt(); public: void unsafe_arena_set_allocated_create_domain_stmt( ::pg_query::CreateDomainStmt* create_domain_stmt); ::pg_query::CreateDomainStmt* unsafe_arena_release_create_domain_stmt(); // .pg_query.CreatedbStmt createdb_stmt = 87 [json_name = "CreatedbStmt"]; bool has_createdb_stmt() const; private: bool _internal_has_createdb_stmt() const; public: void clear_createdb_stmt(); const ::pg_query::CreatedbStmt& createdb_stmt() const; ::pg_query::CreatedbStmt* release_createdb_stmt(); ::pg_query::CreatedbStmt* mutable_createdb_stmt(); void set_allocated_createdb_stmt(::pg_query::CreatedbStmt* createdb_stmt); private: const ::pg_query::CreatedbStmt& _internal_createdb_stmt() const; ::pg_query::CreatedbStmt* _internal_mutable_createdb_stmt(); public: void unsafe_arena_set_allocated_createdb_stmt( ::pg_query::CreatedbStmt* createdb_stmt); ::pg_query::CreatedbStmt* unsafe_arena_release_createdb_stmt(); // .pg_query.DropdbStmt dropdb_stmt = 88 [json_name = "DropdbStmt"]; bool has_dropdb_stmt() const; private: bool _internal_has_dropdb_stmt() const; public: void clear_dropdb_stmt(); const ::pg_query::DropdbStmt& dropdb_stmt() const; ::pg_query::DropdbStmt* release_dropdb_stmt(); ::pg_query::DropdbStmt* mutable_dropdb_stmt(); void set_allocated_dropdb_stmt(::pg_query::DropdbStmt* dropdb_stmt); private: const ::pg_query::DropdbStmt& _internal_dropdb_stmt() const; ::pg_query::DropdbStmt* _internal_mutable_dropdb_stmt(); public: void unsafe_arena_set_allocated_dropdb_stmt( ::pg_query::DropdbStmt* dropdb_stmt); ::pg_query::DropdbStmt* unsafe_arena_release_dropdb_stmt(); // .pg_query.VacuumStmt vacuum_stmt = 89 [json_name = "VacuumStmt"]; bool has_vacuum_stmt() const; private: bool _internal_has_vacuum_stmt() const; public: void clear_vacuum_stmt(); const ::pg_query::VacuumStmt& vacuum_stmt() const; ::pg_query::VacuumStmt* release_vacuum_stmt(); ::pg_query::VacuumStmt* mutable_vacuum_stmt(); void set_allocated_vacuum_stmt(::pg_query::VacuumStmt* vacuum_stmt); private: const ::pg_query::VacuumStmt& _internal_vacuum_stmt() const; ::pg_query::VacuumStmt* _internal_mutable_vacuum_stmt(); public: void unsafe_arena_set_allocated_vacuum_stmt( ::pg_query::VacuumStmt* vacuum_stmt); ::pg_query::VacuumStmt* unsafe_arena_release_vacuum_stmt(); // .pg_query.ExplainStmt explain_stmt = 90 [json_name = "ExplainStmt"]; bool has_explain_stmt() const; private: bool _internal_has_explain_stmt() const; public: void clear_explain_stmt(); const ::pg_query::ExplainStmt& explain_stmt() const; ::pg_query::ExplainStmt* release_explain_stmt(); ::pg_query::ExplainStmt* mutable_explain_stmt(); void set_allocated_explain_stmt(::pg_query::ExplainStmt* explain_stmt); private: const ::pg_query::ExplainStmt& _internal_explain_stmt() const; ::pg_query::ExplainStmt* _internal_mutable_explain_stmt(); public: void unsafe_arena_set_allocated_explain_stmt( ::pg_query::ExplainStmt* explain_stmt); ::pg_query::ExplainStmt* unsafe_arena_release_explain_stmt(); // .pg_query.CreateTableAsStmt create_table_as_stmt = 91 [json_name = "CreateTableAsStmt"]; bool has_create_table_as_stmt() const; private: bool _internal_has_create_table_as_stmt() const; public: void clear_create_table_as_stmt(); const ::pg_query::CreateTableAsStmt& create_table_as_stmt() const; ::pg_query::CreateTableAsStmt* release_create_table_as_stmt(); ::pg_query::CreateTableAsStmt* mutable_create_table_as_stmt(); void set_allocated_create_table_as_stmt(::pg_query::CreateTableAsStmt* create_table_as_stmt); private: const ::pg_query::CreateTableAsStmt& _internal_create_table_as_stmt() const; ::pg_query::CreateTableAsStmt* _internal_mutable_create_table_as_stmt(); public: void unsafe_arena_set_allocated_create_table_as_stmt( ::pg_query::CreateTableAsStmt* create_table_as_stmt); ::pg_query::CreateTableAsStmt* unsafe_arena_release_create_table_as_stmt(); // .pg_query.CreateSeqStmt create_seq_stmt = 92 [json_name = "CreateSeqStmt"]; bool has_create_seq_stmt() const; private: bool _internal_has_create_seq_stmt() const; public: void clear_create_seq_stmt(); const ::pg_query::CreateSeqStmt& create_seq_stmt() const; ::pg_query::CreateSeqStmt* release_create_seq_stmt(); ::pg_query::CreateSeqStmt* mutable_create_seq_stmt(); void set_allocated_create_seq_stmt(::pg_query::CreateSeqStmt* create_seq_stmt); private: const ::pg_query::CreateSeqStmt& _internal_create_seq_stmt() const; ::pg_query::CreateSeqStmt* _internal_mutable_create_seq_stmt(); public: void unsafe_arena_set_allocated_create_seq_stmt( ::pg_query::CreateSeqStmt* create_seq_stmt); ::pg_query::CreateSeqStmt* unsafe_arena_release_create_seq_stmt(); // .pg_query.AlterSeqStmt alter_seq_stmt = 93 [json_name = "AlterSeqStmt"]; bool has_alter_seq_stmt() const; private: bool _internal_has_alter_seq_stmt() const; public: void clear_alter_seq_stmt(); const ::pg_query::AlterSeqStmt& alter_seq_stmt() const; ::pg_query::AlterSeqStmt* release_alter_seq_stmt(); ::pg_query::AlterSeqStmt* mutable_alter_seq_stmt(); void set_allocated_alter_seq_stmt(::pg_query::AlterSeqStmt* alter_seq_stmt); private: const ::pg_query::AlterSeqStmt& _internal_alter_seq_stmt() const; ::pg_query::AlterSeqStmt* _internal_mutable_alter_seq_stmt(); public: void unsafe_arena_set_allocated_alter_seq_stmt( ::pg_query::AlterSeqStmt* alter_seq_stmt); ::pg_query::AlterSeqStmt* unsafe_arena_release_alter_seq_stmt(); // .pg_query.VariableSetStmt variable_set_stmt = 94 [json_name = "VariableSetStmt"]; bool has_variable_set_stmt() const; private: bool _internal_has_variable_set_stmt() const; public: void clear_variable_set_stmt(); const ::pg_query::VariableSetStmt& variable_set_stmt() const; ::pg_query::VariableSetStmt* release_variable_set_stmt(); ::pg_query::VariableSetStmt* mutable_variable_set_stmt(); void set_allocated_variable_set_stmt(::pg_query::VariableSetStmt* variable_set_stmt); private: const ::pg_query::VariableSetStmt& _internal_variable_set_stmt() const; ::pg_query::VariableSetStmt* _internal_mutable_variable_set_stmt(); public: void unsafe_arena_set_allocated_variable_set_stmt( ::pg_query::VariableSetStmt* variable_set_stmt); ::pg_query::VariableSetStmt* unsafe_arena_release_variable_set_stmt(); // .pg_query.VariableShowStmt variable_show_stmt = 95 [json_name = "VariableShowStmt"]; bool has_variable_show_stmt() const; private: bool _internal_has_variable_show_stmt() const; public: void clear_variable_show_stmt(); const ::pg_query::VariableShowStmt& variable_show_stmt() const; ::pg_query::VariableShowStmt* release_variable_show_stmt(); ::pg_query::VariableShowStmt* mutable_variable_show_stmt(); void set_allocated_variable_show_stmt(::pg_query::VariableShowStmt* variable_show_stmt); private: const ::pg_query::VariableShowStmt& _internal_variable_show_stmt() const; ::pg_query::VariableShowStmt* _internal_mutable_variable_show_stmt(); public: void unsafe_arena_set_allocated_variable_show_stmt( ::pg_query::VariableShowStmt* variable_show_stmt); ::pg_query::VariableShowStmt* unsafe_arena_release_variable_show_stmt(); // .pg_query.DiscardStmt discard_stmt = 96 [json_name = "DiscardStmt"]; bool has_discard_stmt() const; private: bool _internal_has_discard_stmt() const; public: void clear_discard_stmt(); const ::pg_query::DiscardStmt& discard_stmt() const; ::pg_query::DiscardStmt* release_discard_stmt(); ::pg_query::DiscardStmt* mutable_discard_stmt(); void set_allocated_discard_stmt(::pg_query::DiscardStmt* discard_stmt); private: const ::pg_query::DiscardStmt& _internal_discard_stmt() const; ::pg_query::DiscardStmt* _internal_mutable_discard_stmt(); public: void unsafe_arena_set_allocated_discard_stmt( ::pg_query::DiscardStmt* discard_stmt); ::pg_query::DiscardStmt* unsafe_arena_release_discard_stmt(); // .pg_query.CreateTrigStmt create_trig_stmt = 97 [json_name = "CreateTrigStmt"]; bool has_create_trig_stmt() const; private: bool _internal_has_create_trig_stmt() const; public: void clear_create_trig_stmt(); const ::pg_query::CreateTrigStmt& create_trig_stmt() const; ::pg_query::CreateTrigStmt* release_create_trig_stmt(); ::pg_query::CreateTrigStmt* mutable_create_trig_stmt(); void set_allocated_create_trig_stmt(::pg_query::CreateTrigStmt* create_trig_stmt); private: const ::pg_query::CreateTrigStmt& _internal_create_trig_stmt() const; ::pg_query::CreateTrigStmt* _internal_mutable_create_trig_stmt(); public: void unsafe_arena_set_allocated_create_trig_stmt( ::pg_query::CreateTrigStmt* create_trig_stmt); ::pg_query::CreateTrigStmt* unsafe_arena_release_create_trig_stmt(); // .pg_query.CreatePLangStmt create_plang_stmt = 98 [json_name = "CreatePLangStmt"]; bool has_create_plang_stmt() const; private: bool _internal_has_create_plang_stmt() const; public: void clear_create_plang_stmt(); const ::pg_query::CreatePLangStmt& create_plang_stmt() const; ::pg_query::CreatePLangStmt* release_create_plang_stmt(); ::pg_query::CreatePLangStmt* mutable_create_plang_stmt(); void set_allocated_create_plang_stmt(::pg_query::CreatePLangStmt* create_plang_stmt); private: const ::pg_query::CreatePLangStmt& _internal_create_plang_stmt() const; ::pg_query::CreatePLangStmt* _internal_mutable_create_plang_stmt(); public: void unsafe_arena_set_allocated_create_plang_stmt( ::pg_query::CreatePLangStmt* create_plang_stmt); ::pg_query::CreatePLangStmt* unsafe_arena_release_create_plang_stmt(); // .pg_query.CreateRoleStmt create_role_stmt = 99 [json_name = "CreateRoleStmt"]; bool has_create_role_stmt() const; private: bool _internal_has_create_role_stmt() const; public: void clear_create_role_stmt(); const ::pg_query::CreateRoleStmt& create_role_stmt() const; ::pg_query::CreateRoleStmt* release_create_role_stmt(); ::pg_query::CreateRoleStmt* mutable_create_role_stmt(); void set_allocated_create_role_stmt(::pg_query::CreateRoleStmt* create_role_stmt); private: const ::pg_query::CreateRoleStmt& _internal_create_role_stmt() const; ::pg_query::CreateRoleStmt* _internal_mutable_create_role_stmt(); public: void unsafe_arena_set_allocated_create_role_stmt( ::pg_query::CreateRoleStmt* create_role_stmt); ::pg_query::CreateRoleStmt* unsafe_arena_release_create_role_stmt(); // .pg_query.AlterRoleStmt alter_role_stmt = 100 [json_name = "AlterRoleStmt"]; bool has_alter_role_stmt() const; private: bool _internal_has_alter_role_stmt() const; public: void clear_alter_role_stmt(); const ::pg_query::AlterRoleStmt& alter_role_stmt() const; ::pg_query::AlterRoleStmt* release_alter_role_stmt(); ::pg_query::AlterRoleStmt* mutable_alter_role_stmt(); void set_allocated_alter_role_stmt(::pg_query::AlterRoleStmt* alter_role_stmt); private: const ::pg_query::AlterRoleStmt& _internal_alter_role_stmt() const; ::pg_query::AlterRoleStmt* _internal_mutable_alter_role_stmt(); public: void unsafe_arena_set_allocated_alter_role_stmt( ::pg_query::AlterRoleStmt* alter_role_stmt); ::pg_query::AlterRoleStmt* unsafe_arena_release_alter_role_stmt(); // .pg_query.DropRoleStmt drop_role_stmt = 101 [json_name = "DropRoleStmt"]; bool has_drop_role_stmt() const; private: bool _internal_has_drop_role_stmt() const; public: void clear_drop_role_stmt(); const ::pg_query::DropRoleStmt& drop_role_stmt() const; ::pg_query::DropRoleStmt* release_drop_role_stmt(); ::pg_query::DropRoleStmt* mutable_drop_role_stmt(); void set_allocated_drop_role_stmt(::pg_query::DropRoleStmt* drop_role_stmt); private: const ::pg_query::DropRoleStmt& _internal_drop_role_stmt() const; ::pg_query::DropRoleStmt* _internal_mutable_drop_role_stmt(); public: void unsafe_arena_set_allocated_drop_role_stmt( ::pg_query::DropRoleStmt* drop_role_stmt); ::pg_query::DropRoleStmt* unsafe_arena_release_drop_role_stmt(); // .pg_query.LockStmt lock_stmt = 102 [json_name = "LockStmt"]; bool has_lock_stmt() const; private: bool _internal_has_lock_stmt() const; public: void clear_lock_stmt(); const ::pg_query::LockStmt& lock_stmt() const; ::pg_query::LockStmt* release_lock_stmt(); ::pg_query::LockStmt* mutable_lock_stmt(); void set_allocated_lock_stmt(::pg_query::LockStmt* lock_stmt); private: const ::pg_query::LockStmt& _internal_lock_stmt() const; ::pg_query::LockStmt* _internal_mutable_lock_stmt(); public: void unsafe_arena_set_allocated_lock_stmt( ::pg_query::LockStmt* lock_stmt); ::pg_query::LockStmt* unsafe_arena_release_lock_stmt(); // .pg_query.ConstraintsSetStmt constraints_set_stmt = 103 [json_name = "ConstraintsSetStmt"]; bool has_constraints_set_stmt() const; private: bool _internal_has_constraints_set_stmt() const; public: void clear_constraints_set_stmt(); const ::pg_query::ConstraintsSetStmt& constraints_set_stmt() const; ::pg_query::ConstraintsSetStmt* release_constraints_set_stmt(); ::pg_query::ConstraintsSetStmt* mutable_constraints_set_stmt(); void set_allocated_constraints_set_stmt(::pg_query::ConstraintsSetStmt* constraints_set_stmt); private: const ::pg_query::ConstraintsSetStmt& _internal_constraints_set_stmt() const; ::pg_query::ConstraintsSetStmt* _internal_mutable_constraints_set_stmt(); public: void unsafe_arena_set_allocated_constraints_set_stmt( ::pg_query::ConstraintsSetStmt* constraints_set_stmt); ::pg_query::ConstraintsSetStmt* unsafe_arena_release_constraints_set_stmt(); // .pg_query.ReindexStmt reindex_stmt = 104 [json_name = "ReindexStmt"]; bool has_reindex_stmt() const; private: bool _internal_has_reindex_stmt() const; public: void clear_reindex_stmt(); const ::pg_query::ReindexStmt& reindex_stmt() const; ::pg_query::ReindexStmt* release_reindex_stmt(); ::pg_query::ReindexStmt* mutable_reindex_stmt(); void set_allocated_reindex_stmt(::pg_query::ReindexStmt* reindex_stmt); private: const ::pg_query::ReindexStmt& _internal_reindex_stmt() const; ::pg_query::ReindexStmt* _internal_mutable_reindex_stmt(); public: void unsafe_arena_set_allocated_reindex_stmt( ::pg_query::ReindexStmt* reindex_stmt); ::pg_query::ReindexStmt* unsafe_arena_release_reindex_stmt(); // .pg_query.CheckPointStmt check_point_stmt = 105 [json_name = "CheckPointStmt"]; bool has_check_point_stmt() const; private: bool _internal_has_check_point_stmt() const; public: void clear_check_point_stmt(); const ::pg_query::CheckPointStmt& check_point_stmt() const; ::pg_query::CheckPointStmt* release_check_point_stmt(); ::pg_query::CheckPointStmt* mutable_check_point_stmt(); void set_allocated_check_point_stmt(::pg_query::CheckPointStmt* check_point_stmt); private: const ::pg_query::CheckPointStmt& _internal_check_point_stmt() const; ::pg_query::CheckPointStmt* _internal_mutable_check_point_stmt(); public: void unsafe_arena_set_allocated_check_point_stmt( ::pg_query::CheckPointStmt* check_point_stmt); ::pg_query::CheckPointStmt* unsafe_arena_release_check_point_stmt(); // .pg_query.CreateSchemaStmt create_schema_stmt = 106 [json_name = "CreateSchemaStmt"]; bool has_create_schema_stmt() const; private: bool _internal_has_create_schema_stmt() const; public: void clear_create_schema_stmt(); const ::pg_query::CreateSchemaStmt& create_schema_stmt() const; ::pg_query::CreateSchemaStmt* release_create_schema_stmt(); ::pg_query::CreateSchemaStmt* mutable_create_schema_stmt(); void set_allocated_create_schema_stmt(::pg_query::CreateSchemaStmt* create_schema_stmt); private: const ::pg_query::CreateSchemaStmt& _internal_create_schema_stmt() const; ::pg_query::CreateSchemaStmt* _internal_mutable_create_schema_stmt(); public: void unsafe_arena_set_allocated_create_schema_stmt( ::pg_query::CreateSchemaStmt* create_schema_stmt); ::pg_query::CreateSchemaStmt* unsafe_arena_release_create_schema_stmt(); // .pg_query.AlterDatabaseStmt alter_database_stmt = 107 [json_name = "AlterDatabaseStmt"]; bool has_alter_database_stmt() const; private: bool _internal_has_alter_database_stmt() const; public: void clear_alter_database_stmt(); const ::pg_query::AlterDatabaseStmt& alter_database_stmt() const; ::pg_query::AlterDatabaseStmt* release_alter_database_stmt(); ::pg_query::AlterDatabaseStmt* mutable_alter_database_stmt(); void set_allocated_alter_database_stmt(::pg_query::AlterDatabaseStmt* alter_database_stmt); private: const ::pg_query::AlterDatabaseStmt& _internal_alter_database_stmt() const; ::pg_query::AlterDatabaseStmt* _internal_mutable_alter_database_stmt(); public: void unsafe_arena_set_allocated_alter_database_stmt( ::pg_query::AlterDatabaseStmt* alter_database_stmt); ::pg_query::AlterDatabaseStmt* unsafe_arena_release_alter_database_stmt(); // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 108 [json_name = "AlterDatabaseSetStmt"]; bool has_alter_database_set_stmt() const; private: bool _internal_has_alter_database_set_stmt() const; public: void clear_alter_database_set_stmt(); const ::pg_query::AlterDatabaseSetStmt& alter_database_set_stmt() const; ::pg_query::AlterDatabaseSetStmt* release_alter_database_set_stmt(); ::pg_query::AlterDatabaseSetStmt* mutable_alter_database_set_stmt(); void set_allocated_alter_database_set_stmt(::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt); private: const ::pg_query::AlterDatabaseSetStmt& _internal_alter_database_set_stmt() const; ::pg_query::AlterDatabaseSetStmt* _internal_mutable_alter_database_set_stmt(); public: void unsafe_arena_set_allocated_alter_database_set_stmt( ::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt); ::pg_query::AlterDatabaseSetStmt* unsafe_arena_release_alter_database_set_stmt(); // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 109 [json_name = "AlterRoleSetStmt"]; bool has_alter_role_set_stmt() const; private: bool _internal_has_alter_role_set_stmt() const; public: void clear_alter_role_set_stmt(); const ::pg_query::AlterRoleSetStmt& alter_role_set_stmt() const; ::pg_query::AlterRoleSetStmt* release_alter_role_set_stmt(); ::pg_query::AlterRoleSetStmt* mutable_alter_role_set_stmt(); void set_allocated_alter_role_set_stmt(::pg_query::AlterRoleSetStmt* alter_role_set_stmt); private: const ::pg_query::AlterRoleSetStmt& _internal_alter_role_set_stmt() const; ::pg_query::AlterRoleSetStmt* _internal_mutable_alter_role_set_stmt(); public: void unsafe_arena_set_allocated_alter_role_set_stmt( ::pg_query::AlterRoleSetStmt* alter_role_set_stmt); ::pg_query::AlterRoleSetStmt* unsafe_arena_release_alter_role_set_stmt(); // .pg_query.CreateConversionStmt create_conversion_stmt = 110 [json_name = "CreateConversionStmt"]; bool has_create_conversion_stmt() const; private: bool _internal_has_create_conversion_stmt() const; public: void clear_create_conversion_stmt(); const ::pg_query::CreateConversionStmt& create_conversion_stmt() const; ::pg_query::CreateConversionStmt* release_create_conversion_stmt(); ::pg_query::CreateConversionStmt* mutable_create_conversion_stmt(); void set_allocated_create_conversion_stmt(::pg_query::CreateConversionStmt* create_conversion_stmt); private: const ::pg_query::CreateConversionStmt& _internal_create_conversion_stmt() const; ::pg_query::CreateConversionStmt* _internal_mutable_create_conversion_stmt(); public: void unsafe_arena_set_allocated_create_conversion_stmt( ::pg_query::CreateConversionStmt* create_conversion_stmt); ::pg_query::CreateConversionStmt* unsafe_arena_release_create_conversion_stmt(); // .pg_query.CreateCastStmt create_cast_stmt = 111 [json_name = "CreateCastStmt"]; bool has_create_cast_stmt() const; private: bool _internal_has_create_cast_stmt() const; public: void clear_create_cast_stmt(); const ::pg_query::CreateCastStmt& create_cast_stmt() const; ::pg_query::CreateCastStmt* release_create_cast_stmt(); ::pg_query::CreateCastStmt* mutable_create_cast_stmt(); void set_allocated_create_cast_stmt(::pg_query::CreateCastStmt* create_cast_stmt); private: const ::pg_query::CreateCastStmt& _internal_create_cast_stmt() const; ::pg_query::CreateCastStmt* _internal_mutable_create_cast_stmt(); public: void unsafe_arena_set_allocated_create_cast_stmt( ::pg_query::CreateCastStmt* create_cast_stmt); ::pg_query::CreateCastStmt* unsafe_arena_release_create_cast_stmt(); // .pg_query.CreateOpClassStmt create_op_class_stmt = 112 [json_name = "CreateOpClassStmt"]; bool has_create_op_class_stmt() const; private: bool _internal_has_create_op_class_stmt() const; public: void clear_create_op_class_stmt(); const ::pg_query::CreateOpClassStmt& create_op_class_stmt() const; ::pg_query::CreateOpClassStmt* release_create_op_class_stmt(); ::pg_query::CreateOpClassStmt* mutable_create_op_class_stmt(); void set_allocated_create_op_class_stmt(::pg_query::CreateOpClassStmt* create_op_class_stmt); private: const ::pg_query::CreateOpClassStmt& _internal_create_op_class_stmt() const; ::pg_query::CreateOpClassStmt* _internal_mutable_create_op_class_stmt(); public: void unsafe_arena_set_allocated_create_op_class_stmt( ::pg_query::CreateOpClassStmt* create_op_class_stmt); ::pg_query::CreateOpClassStmt* unsafe_arena_release_create_op_class_stmt(); // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 113 [json_name = "CreateOpFamilyStmt"]; bool has_create_op_family_stmt() const; private: bool _internal_has_create_op_family_stmt() const; public: void clear_create_op_family_stmt(); const ::pg_query::CreateOpFamilyStmt& create_op_family_stmt() const; ::pg_query::CreateOpFamilyStmt* release_create_op_family_stmt(); ::pg_query::CreateOpFamilyStmt* mutable_create_op_family_stmt(); void set_allocated_create_op_family_stmt(::pg_query::CreateOpFamilyStmt* create_op_family_stmt); private: const ::pg_query::CreateOpFamilyStmt& _internal_create_op_family_stmt() const; ::pg_query::CreateOpFamilyStmt* _internal_mutable_create_op_family_stmt(); public: void unsafe_arena_set_allocated_create_op_family_stmt( ::pg_query::CreateOpFamilyStmt* create_op_family_stmt); ::pg_query::CreateOpFamilyStmt* unsafe_arena_release_create_op_family_stmt(); // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 114 [json_name = "AlterOpFamilyStmt"]; bool has_alter_op_family_stmt() const; private: bool _internal_has_alter_op_family_stmt() const; public: void clear_alter_op_family_stmt(); const ::pg_query::AlterOpFamilyStmt& alter_op_family_stmt() const; ::pg_query::AlterOpFamilyStmt* release_alter_op_family_stmt(); ::pg_query::AlterOpFamilyStmt* mutable_alter_op_family_stmt(); void set_allocated_alter_op_family_stmt(::pg_query::AlterOpFamilyStmt* alter_op_family_stmt); private: const ::pg_query::AlterOpFamilyStmt& _internal_alter_op_family_stmt() const; ::pg_query::AlterOpFamilyStmt* _internal_mutable_alter_op_family_stmt(); public: void unsafe_arena_set_allocated_alter_op_family_stmt( ::pg_query::AlterOpFamilyStmt* alter_op_family_stmt); ::pg_query::AlterOpFamilyStmt* unsafe_arena_release_alter_op_family_stmt(); // .pg_query.PrepareStmt prepare_stmt = 115 [json_name = "PrepareStmt"]; bool has_prepare_stmt() const; private: bool _internal_has_prepare_stmt() const; public: void clear_prepare_stmt(); const ::pg_query::PrepareStmt& prepare_stmt() const; ::pg_query::PrepareStmt* release_prepare_stmt(); ::pg_query::PrepareStmt* mutable_prepare_stmt(); void set_allocated_prepare_stmt(::pg_query::PrepareStmt* prepare_stmt); private: const ::pg_query::PrepareStmt& _internal_prepare_stmt() const; ::pg_query::PrepareStmt* _internal_mutable_prepare_stmt(); public: void unsafe_arena_set_allocated_prepare_stmt( ::pg_query::PrepareStmt* prepare_stmt); ::pg_query::PrepareStmt* unsafe_arena_release_prepare_stmt(); // .pg_query.ExecuteStmt execute_stmt = 116 [json_name = "ExecuteStmt"]; bool has_execute_stmt() const; private: bool _internal_has_execute_stmt() const; public: void clear_execute_stmt(); const ::pg_query::ExecuteStmt& execute_stmt() const; ::pg_query::ExecuteStmt* release_execute_stmt(); ::pg_query::ExecuteStmt* mutable_execute_stmt(); void set_allocated_execute_stmt(::pg_query::ExecuteStmt* execute_stmt); private: const ::pg_query::ExecuteStmt& _internal_execute_stmt() const; ::pg_query::ExecuteStmt* _internal_mutable_execute_stmt(); public: void unsafe_arena_set_allocated_execute_stmt( ::pg_query::ExecuteStmt* execute_stmt); ::pg_query::ExecuteStmt* unsafe_arena_release_execute_stmt(); // .pg_query.DeallocateStmt deallocate_stmt = 117 [json_name = "DeallocateStmt"]; bool has_deallocate_stmt() const; private: bool _internal_has_deallocate_stmt() const; public: void clear_deallocate_stmt(); const ::pg_query::DeallocateStmt& deallocate_stmt() const; ::pg_query::DeallocateStmt* release_deallocate_stmt(); ::pg_query::DeallocateStmt* mutable_deallocate_stmt(); void set_allocated_deallocate_stmt(::pg_query::DeallocateStmt* deallocate_stmt); private: const ::pg_query::DeallocateStmt& _internal_deallocate_stmt() const; ::pg_query::DeallocateStmt* _internal_mutable_deallocate_stmt(); public: void unsafe_arena_set_allocated_deallocate_stmt( ::pg_query::DeallocateStmt* deallocate_stmt); ::pg_query::DeallocateStmt* unsafe_arena_release_deallocate_stmt(); // .pg_query.DeclareCursorStmt declare_cursor_stmt = 118 [json_name = "DeclareCursorStmt"]; bool has_declare_cursor_stmt() const; private: bool _internal_has_declare_cursor_stmt() const; public: void clear_declare_cursor_stmt(); const ::pg_query::DeclareCursorStmt& declare_cursor_stmt() const; ::pg_query::DeclareCursorStmt* release_declare_cursor_stmt(); ::pg_query::DeclareCursorStmt* mutable_declare_cursor_stmt(); void set_allocated_declare_cursor_stmt(::pg_query::DeclareCursorStmt* declare_cursor_stmt); private: const ::pg_query::DeclareCursorStmt& _internal_declare_cursor_stmt() const; ::pg_query::DeclareCursorStmt* _internal_mutable_declare_cursor_stmt(); public: void unsafe_arena_set_allocated_declare_cursor_stmt( ::pg_query::DeclareCursorStmt* declare_cursor_stmt); ::pg_query::DeclareCursorStmt* unsafe_arena_release_declare_cursor_stmt(); // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 119 [json_name = "CreateTableSpaceStmt"]; bool has_create_table_space_stmt() const; private: bool _internal_has_create_table_space_stmt() const; public: void clear_create_table_space_stmt(); const ::pg_query::CreateTableSpaceStmt& create_table_space_stmt() const; ::pg_query::CreateTableSpaceStmt* release_create_table_space_stmt(); ::pg_query::CreateTableSpaceStmt* mutable_create_table_space_stmt(); void set_allocated_create_table_space_stmt(::pg_query::CreateTableSpaceStmt* create_table_space_stmt); private: const ::pg_query::CreateTableSpaceStmt& _internal_create_table_space_stmt() const; ::pg_query::CreateTableSpaceStmt* _internal_mutable_create_table_space_stmt(); public: void unsafe_arena_set_allocated_create_table_space_stmt( ::pg_query::CreateTableSpaceStmt* create_table_space_stmt); ::pg_query::CreateTableSpaceStmt* unsafe_arena_release_create_table_space_stmt(); // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 120 [json_name = "DropTableSpaceStmt"]; bool has_drop_table_space_stmt() const; private: bool _internal_has_drop_table_space_stmt() const; public: void clear_drop_table_space_stmt(); const ::pg_query::DropTableSpaceStmt& drop_table_space_stmt() const; ::pg_query::DropTableSpaceStmt* release_drop_table_space_stmt(); ::pg_query::DropTableSpaceStmt* mutable_drop_table_space_stmt(); void set_allocated_drop_table_space_stmt(::pg_query::DropTableSpaceStmt* drop_table_space_stmt); private: const ::pg_query::DropTableSpaceStmt& _internal_drop_table_space_stmt() const; ::pg_query::DropTableSpaceStmt* _internal_mutable_drop_table_space_stmt(); public: void unsafe_arena_set_allocated_drop_table_space_stmt( ::pg_query::DropTableSpaceStmt* drop_table_space_stmt); ::pg_query::DropTableSpaceStmt* unsafe_arena_release_drop_table_space_stmt(); // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 121 [json_name = "AlterObjectDependsStmt"]; bool has_alter_object_depends_stmt() const; private: bool _internal_has_alter_object_depends_stmt() const; public: void clear_alter_object_depends_stmt(); const ::pg_query::AlterObjectDependsStmt& alter_object_depends_stmt() const; ::pg_query::AlterObjectDependsStmt* release_alter_object_depends_stmt(); ::pg_query::AlterObjectDependsStmt* mutable_alter_object_depends_stmt(); void set_allocated_alter_object_depends_stmt(::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt); private: const ::pg_query::AlterObjectDependsStmt& _internal_alter_object_depends_stmt() const; ::pg_query::AlterObjectDependsStmt* _internal_mutable_alter_object_depends_stmt(); public: void unsafe_arena_set_allocated_alter_object_depends_stmt( ::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt); ::pg_query::AlterObjectDependsStmt* unsafe_arena_release_alter_object_depends_stmt(); // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 122 [json_name = "AlterObjectSchemaStmt"]; bool has_alter_object_schema_stmt() const; private: bool _internal_has_alter_object_schema_stmt() const; public: void clear_alter_object_schema_stmt(); const ::pg_query::AlterObjectSchemaStmt& alter_object_schema_stmt() const; ::pg_query::AlterObjectSchemaStmt* release_alter_object_schema_stmt(); ::pg_query::AlterObjectSchemaStmt* mutable_alter_object_schema_stmt(); void set_allocated_alter_object_schema_stmt(::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt); private: const ::pg_query::AlterObjectSchemaStmt& _internal_alter_object_schema_stmt() const; ::pg_query::AlterObjectSchemaStmt* _internal_mutable_alter_object_schema_stmt(); public: void unsafe_arena_set_allocated_alter_object_schema_stmt( ::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt); ::pg_query::AlterObjectSchemaStmt* unsafe_arena_release_alter_object_schema_stmt(); // .pg_query.AlterOwnerStmt alter_owner_stmt = 123 [json_name = "AlterOwnerStmt"]; bool has_alter_owner_stmt() const; private: bool _internal_has_alter_owner_stmt() const; public: void clear_alter_owner_stmt(); const ::pg_query::AlterOwnerStmt& alter_owner_stmt() const; ::pg_query::AlterOwnerStmt* release_alter_owner_stmt(); ::pg_query::AlterOwnerStmt* mutable_alter_owner_stmt(); void set_allocated_alter_owner_stmt(::pg_query::AlterOwnerStmt* alter_owner_stmt); private: const ::pg_query::AlterOwnerStmt& _internal_alter_owner_stmt() const; ::pg_query::AlterOwnerStmt* _internal_mutable_alter_owner_stmt(); public: void unsafe_arena_set_allocated_alter_owner_stmt( ::pg_query::AlterOwnerStmt* alter_owner_stmt); ::pg_query::AlterOwnerStmt* unsafe_arena_release_alter_owner_stmt(); // .pg_query.AlterOperatorStmt alter_operator_stmt = 124 [json_name = "AlterOperatorStmt"]; bool has_alter_operator_stmt() const; private: bool _internal_has_alter_operator_stmt() const; public: void clear_alter_operator_stmt(); const ::pg_query::AlterOperatorStmt& alter_operator_stmt() const; ::pg_query::AlterOperatorStmt* release_alter_operator_stmt(); ::pg_query::AlterOperatorStmt* mutable_alter_operator_stmt(); void set_allocated_alter_operator_stmt(::pg_query::AlterOperatorStmt* alter_operator_stmt); private: const ::pg_query::AlterOperatorStmt& _internal_alter_operator_stmt() const; ::pg_query::AlterOperatorStmt* _internal_mutable_alter_operator_stmt(); public: void unsafe_arena_set_allocated_alter_operator_stmt( ::pg_query::AlterOperatorStmt* alter_operator_stmt); ::pg_query::AlterOperatorStmt* unsafe_arena_release_alter_operator_stmt(); // .pg_query.AlterTypeStmt alter_type_stmt = 125 [json_name = "AlterTypeStmt"]; bool has_alter_type_stmt() const; private: bool _internal_has_alter_type_stmt() const; public: void clear_alter_type_stmt(); const ::pg_query::AlterTypeStmt& alter_type_stmt() const; ::pg_query::AlterTypeStmt* release_alter_type_stmt(); ::pg_query::AlterTypeStmt* mutable_alter_type_stmt(); void set_allocated_alter_type_stmt(::pg_query::AlterTypeStmt* alter_type_stmt); private: const ::pg_query::AlterTypeStmt& _internal_alter_type_stmt() const; ::pg_query::AlterTypeStmt* _internal_mutable_alter_type_stmt(); public: void unsafe_arena_set_allocated_alter_type_stmt( ::pg_query::AlterTypeStmt* alter_type_stmt); ::pg_query::AlterTypeStmt* unsafe_arena_release_alter_type_stmt(); // .pg_query.DropOwnedStmt drop_owned_stmt = 126 [json_name = "DropOwnedStmt"]; bool has_drop_owned_stmt() const; private: bool _internal_has_drop_owned_stmt() const; public: void clear_drop_owned_stmt(); const ::pg_query::DropOwnedStmt& drop_owned_stmt() const; ::pg_query::DropOwnedStmt* release_drop_owned_stmt(); ::pg_query::DropOwnedStmt* mutable_drop_owned_stmt(); void set_allocated_drop_owned_stmt(::pg_query::DropOwnedStmt* drop_owned_stmt); private: const ::pg_query::DropOwnedStmt& _internal_drop_owned_stmt() const; ::pg_query::DropOwnedStmt* _internal_mutable_drop_owned_stmt(); public: void unsafe_arena_set_allocated_drop_owned_stmt( ::pg_query::DropOwnedStmt* drop_owned_stmt); ::pg_query::DropOwnedStmt* unsafe_arena_release_drop_owned_stmt(); // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 127 [json_name = "ReassignOwnedStmt"]; bool has_reassign_owned_stmt() const; private: bool _internal_has_reassign_owned_stmt() const; public: void clear_reassign_owned_stmt(); const ::pg_query::ReassignOwnedStmt& reassign_owned_stmt() const; ::pg_query::ReassignOwnedStmt* release_reassign_owned_stmt(); ::pg_query::ReassignOwnedStmt* mutable_reassign_owned_stmt(); void set_allocated_reassign_owned_stmt(::pg_query::ReassignOwnedStmt* reassign_owned_stmt); private: const ::pg_query::ReassignOwnedStmt& _internal_reassign_owned_stmt() const; ::pg_query::ReassignOwnedStmt* _internal_mutable_reassign_owned_stmt(); public: void unsafe_arena_set_allocated_reassign_owned_stmt( ::pg_query::ReassignOwnedStmt* reassign_owned_stmt); ::pg_query::ReassignOwnedStmt* unsafe_arena_release_reassign_owned_stmt(); // .pg_query.CompositeTypeStmt composite_type_stmt = 128 [json_name = "CompositeTypeStmt"]; bool has_composite_type_stmt() const; private: bool _internal_has_composite_type_stmt() const; public: void clear_composite_type_stmt(); const ::pg_query::CompositeTypeStmt& composite_type_stmt() const; ::pg_query::CompositeTypeStmt* release_composite_type_stmt(); ::pg_query::CompositeTypeStmt* mutable_composite_type_stmt(); void set_allocated_composite_type_stmt(::pg_query::CompositeTypeStmt* composite_type_stmt); private: const ::pg_query::CompositeTypeStmt& _internal_composite_type_stmt() const; ::pg_query::CompositeTypeStmt* _internal_mutable_composite_type_stmt(); public: void unsafe_arena_set_allocated_composite_type_stmt( ::pg_query::CompositeTypeStmt* composite_type_stmt); ::pg_query::CompositeTypeStmt* unsafe_arena_release_composite_type_stmt(); // .pg_query.CreateEnumStmt create_enum_stmt = 129 [json_name = "CreateEnumStmt"]; bool has_create_enum_stmt() const; private: bool _internal_has_create_enum_stmt() const; public: void clear_create_enum_stmt(); const ::pg_query::CreateEnumStmt& create_enum_stmt() const; ::pg_query::CreateEnumStmt* release_create_enum_stmt(); ::pg_query::CreateEnumStmt* mutable_create_enum_stmt(); void set_allocated_create_enum_stmt(::pg_query::CreateEnumStmt* create_enum_stmt); private: const ::pg_query::CreateEnumStmt& _internal_create_enum_stmt() const; ::pg_query::CreateEnumStmt* _internal_mutable_create_enum_stmt(); public: void unsafe_arena_set_allocated_create_enum_stmt( ::pg_query::CreateEnumStmt* create_enum_stmt); ::pg_query::CreateEnumStmt* unsafe_arena_release_create_enum_stmt(); // .pg_query.CreateRangeStmt create_range_stmt = 130 [json_name = "CreateRangeStmt"]; bool has_create_range_stmt() const; private: bool _internal_has_create_range_stmt() const; public: void clear_create_range_stmt(); const ::pg_query::CreateRangeStmt& create_range_stmt() const; ::pg_query::CreateRangeStmt* release_create_range_stmt(); ::pg_query::CreateRangeStmt* mutable_create_range_stmt(); void set_allocated_create_range_stmt(::pg_query::CreateRangeStmt* create_range_stmt); private: const ::pg_query::CreateRangeStmt& _internal_create_range_stmt() const; ::pg_query::CreateRangeStmt* _internal_mutable_create_range_stmt(); public: void unsafe_arena_set_allocated_create_range_stmt( ::pg_query::CreateRangeStmt* create_range_stmt); ::pg_query::CreateRangeStmt* unsafe_arena_release_create_range_stmt(); // .pg_query.AlterEnumStmt alter_enum_stmt = 131 [json_name = "AlterEnumStmt"]; bool has_alter_enum_stmt() const; private: bool _internal_has_alter_enum_stmt() const; public: void clear_alter_enum_stmt(); const ::pg_query::AlterEnumStmt& alter_enum_stmt() const; ::pg_query::AlterEnumStmt* release_alter_enum_stmt(); ::pg_query::AlterEnumStmt* mutable_alter_enum_stmt(); void set_allocated_alter_enum_stmt(::pg_query::AlterEnumStmt* alter_enum_stmt); private: const ::pg_query::AlterEnumStmt& _internal_alter_enum_stmt() const; ::pg_query::AlterEnumStmt* _internal_mutable_alter_enum_stmt(); public: void unsafe_arena_set_allocated_alter_enum_stmt( ::pg_query::AlterEnumStmt* alter_enum_stmt); ::pg_query::AlterEnumStmt* unsafe_arena_release_alter_enum_stmt(); // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 132 [json_name = "AlterTSDictionaryStmt"]; bool has_alter_tsdictionary_stmt() const; private: bool _internal_has_alter_tsdictionary_stmt() const; public: void clear_alter_tsdictionary_stmt(); const ::pg_query::AlterTSDictionaryStmt& alter_tsdictionary_stmt() const; ::pg_query::AlterTSDictionaryStmt* release_alter_tsdictionary_stmt(); ::pg_query::AlterTSDictionaryStmt* mutable_alter_tsdictionary_stmt(); void set_allocated_alter_tsdictionary_stmt(::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt); private: const ::pg_query::AlterTSDictionaryStmt& _internal_alter_tsdictionary_stmt() const; ::pg_query::AlterTSDictionaryStmt* _internal_mutable_alter_tsdictionary_stmt(); public: void unsafe_arena_set_allocated_alter_tsdictionary_stmt( ::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt); ::pg_query::AlterTSDictionaryStmt* unsafe_arena_release_alter_tsdictionary_stmt(); // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 133 [json_name = "AlterTSConfigurationStmt"]; bool has_alter_tsconfiguration_stmt() const; private: bool _internal_has_alter_tsconfiguration_stmt() const; public: void clear_alter_tsconfiguration_stmt(); const ::pg_query::AlterTSConfigurationStmt& alter_tsconfiguration_stmt() const; ::pg_query::AlterTSConfigurationStmt* release_alter_tsconfiguration_stmt(); ::pg_query::AlterTSConfigurationStmt* mutable_alter_tsconfiguration_stmt(); void set_allocated_alter_tsconfiguration_stmt(::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt); private: const ::pg_query::AlterTSConfigurationStmt& _internal_alter_tsconfiguration_stmt() const; ::pg_query::AlterTSConfigurationStmt* _internal_mutable_alter_tsconfiguration_stmt(); public: void unsafe_arena_set_allocated_alter_tsconfiguration_stmt( ::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt); ::pg_query::AlterTSConfigurationStmt* unsafe_arena_release_alter_tsconfiguration_stmt(); // .pg_query.CreateFdwStmt create_fdw_stmt = 134 [json_name = "CreateFdwStmt"]; bool has_create_fdw_stmt() const; private: bool _internal_has_create_fdw_stmt() const; public: void clear_create_fdw_stmt(); const ::pg_query::CreateFdwStmt& create_fdw_stmt() const; ::pg_query::CreateFdwStmt* release_create_fdw_stmt(); ::pg_query::CreateFdwStmt* mutable_create_fdw_stmt(); void set_allocated_create_fdw_stmt(::pg_query::CreateFdwStmt* create_fdw_stmt); private: const ::pg_query::CreateFdwStmt& _internal_create_fdw_stmt() const; ::pg_query::CreateFdwStmt* _internal_mutable_create_fdw_stmt(); public: void unsafe_arena_set_allocated_create_fdw_stmt( ::pg_query::CreateFdwStmt* create_fdw_stmt); ::pg_query::CreateFdwStmt* unsafe_arena_release_create_fdw_stmt(); // .pg_query.AlterFdwStmt alter_fdw_stmt = 135 [json_name = "AlterFdwStmt"]; bool has_alter_fdw_stmt() const; private: bool _internal_has_alter_fdw_stmt() const; public: void clear_alter_fdw_stmt(); const ::pg_query::AlterFdwStmt& alter_fdw_stmt() const; ::pg_query::AlterFdwStmt* release_alter_fdw_stmt(); ::pg_query::AlterFdwStmt* mutable_alter_fdw_stmt(); void set_allocated_alter_fdw_stmt(::pg_query::AlterFdwStmt* alter_fdw_stmt); private: const ::pg_query::AlterFdwStmt& _internal_alter_fdw_stmt() const; ::pg_query::AlterFdwStmt* _internal_mutable_alter_fdw_stmt(); public: void unsafe_arena_set_allocated_alter_fdw_stmt( ::pg_query::AlterFdwStmt* alter_fdw_stmt); ::pg_query::AlterFdwStmt* unsafe_arena_release_alter_fdw_stmt(); // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 136 [json_name = "CreateForeignServerStmt"]; bool has_create_foreign_server_stmt() const; private: bool _internal_has_create_foreign_server_stmt() const; public: void clear_create_foreign_server_stmt(); const ::pg_query::CreateForeignServerStmt& create_foreign_server_stmt() const; ::pg_query::CreateForeignServerStmt* release_create_foreign_server_stmt(); ::pg_query::CreateForeignServerStmt* mutable_create_foreign_server_stmt(); void set_allocated_create_foreign_server_stmt(::pg_query::CreateForeignServerStmt* create_foreign_server_stmt); private: const ::pg_query::CreateForeignServerStmt& _internal_create_foreign_server_stmt() const; ::pg_query::CreateForeignServerStmt* _internal_mutable_create_foreign_server_stmt(); public: void unsafe_arena_set_allocated_create_foreign_server_stmt( ::pg_query::CreateForeignServerStmt* create_foreign_server_stmt); ::pg_query::CreateForeignServerStmt* unsafe_arena_release_create_foreign_server_stmt(); // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 137 [json_name = "AlterForeignServerStmt"]; bool has_alter_foreign_server_stmt() const; private: bool _internal_has_alter_foreign_server_stmt() const; public: void clear_alter_foreign_server_stmt(); const ::pg_query::AlterForeignServerStmt& alter_foreign_server_stmt() const; ::pg_query::AlterForeignServerStmt* release_alter_foreign_server_stmt(); ::pg_query::AlterForeignServerStmt* mutable_alter_foreign_server_stmt(); void set_allocated_alter_foreign_server_stmt(::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt); private: const ::pg_query::AlterForeignServerStmt& _internal_alter_foreign_server_stmt() const; ::pg_query::AlterForeignServerStmt* _internal_mutable_alter_foreign_server_stmt(); public: void unsafe_arena_set_allocated_alter_foreign_server_stmt( ::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt); ::pg_query::AlterForeignServerStmt* unsafe_arena_release_alter_foreign_server_stmt(); // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 138 [json_name = "CreateUserMappingStmt"]; bool has_create_user_mapping_stmt() const; private: bool _internal_has_create_user_mapping_stmt() const; public: void clear_create_user_mapping_stmt(); const ::pg_query::CreateUserMappingStmt& create_user_mapping_stmt() const; ::pg_query::CreateUserMappingStmt* release_create_user_mapping_stmt(); ::pg_query::CreateUserMappingStmt* mutable_create_user_mapping_stmt(); void set_allocated_create_user_mapping_stmt(::pg_query::CreateUserMappingStmt* create_user_mapping_stmt); private: const ::pg_query::CreateUserMappingStmt& _internal_create_user_mapping_stmt() const; ::pg_query::CreateUserMappingStmt* _internal_mutable_create_user_mapping_stmt(); public: void unsafe_arena_set_allocated_create_user_mapping_stmt( ::pg_query::CreateUserMappingStmt* create_user_mapping_stmt); ::pg_query::CreateUserMappingStmt* unsafe_arena_release_create_user_mapping_stmt(); // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 139 [json_name = "AlterUserMappingStmt"]; bool has_alter_user_mapping_stmt() const; private: bool _internal_has_alter_user_mapping_stmt() const; public: void clear_alter_user_mapping_stmt(); const ::pg_query::AlterUserMappingStmt& alter_user_mapping_stmt() const; ::pg_query::AlterUserMappingStmt* release_alter_user_mapping_stmt(); ::pg_query::AlterUserMappingStmt* mutable_alter_user_mapping_stmt(); void set_allocated_alter_user_mapping_stmt(::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt); private: const ::pg_query::AlterUserMappingStmt& _internal_alter_user_mapping_stmt() const; ::pg_query::AlterUserMappingStmt* _internal_mutable_alter_user_mapping_stmt(); public: void unsafe_arena_set_allocated_alter_user_mapping_stmt( ::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt); ::pg_query::AlterUserMappingStmt* unsafe_arena_release_alter_user_mapping_stmt(); // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 140 [json_name = "DropUserMappingStmt"]; bool has_drop_user_mapping_stmt() const; private: bool _internal_has_drop_user_mapping_stmt() const; public: void clear_drop_user_mapping_stmt(); const ::pg_query::DropUserMappingStmt& drop_user_mapping_stmt() const; ::pg_query::DropUserMappingStmt* release_drop_user_mapping_stmt(); ::pg_query::DropUserMappingStmt* mutable_drop_user_mapping_stmt(); void set_allocated_drop_user_mapping_stmt(::pg_query::DropUserMappingStmt* drop_user_mapping_stmt); private: const ::pg_query::DropUserMappingStmt& _internal_drop_user_mapping_stmt() const; ::pg_query::DropUserMappingStmt* _internal_mutable_drop_user_mapping_stmt(); public: void unsafe_arena_set_allocated_drop_user_mapping_stmt( ::pg_query::DropUserMappingStmt* drop_user_mapping_stmt); ::pg_query::DropUserMappingStmt* unsafe_arena_release_drop_user_mapping_stmt(); // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 141 [json_name = "AlterTableSpaceOptionsStmt"]; bool has_alter_table_space_options_stmt() const; private: bool _internal_has_alter_table_space_options_stmt() const; public: void clear_alter_table_space_options_stmt(); const ::pg_query::AlterTableSpaceOptionsStmt& alter_table_space_options_stmt() const; ::pg_query::AlterTableSpaceOptionsStmt* release_alter_table_space_options_stmt(); ::pg_query::AlterTableSpaceOptionsStmt* mutable_alter_table_space_options_stmt(); void set_allocated_alter_table_space_options_stmt(::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt); private: const ::pg_query::AlterTableSpaceOptionsStmt& _internal_alter_table_space_options_stmt() const; ::pg_query::AlterTableSpaceOptionsStmt* _internal_mutable_alter_table_space_options_stmt(); public: void unsafe_arena_set_allocated_alter_table_space_options_stmt( ::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt); ::pg_query::AlterTableSpaceOptionsStmt* unsafe_arena_release_alter_table_space_options_stmt(); // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 142 [json_name = "AlterTableMoveAllStmt"]; bool has_alter_table_move_all_stmt() const; private: bool _internal_has_alter_table_move_all_stmt() const; public: void clear_alter_table_move_all_stmt(); const ::pg_query::AlterTableMoveAllStmt& alter_table_move_all_stmt() const; ::pg_query::AlterTableMoveAllStmt* release_alter_table_move_all_stmt(); ::pg_query::AlterTableMoveAllStmt* mutable_alter_table_move_all_stmt(); void set_allocated_alter_table_move_all_stmt(::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt); private: const ::pg_query::AlterTableMoveAllStmt& _internal_alter_table_move_all_stmt() const; ::pg_query::AlterTableMoveAllStmt* _internal_mutable_alter_table_move_all_stmt(); public: void unsafe_arena_set_allocated_alter_table_move_all_stmt( ::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt); ::pg_query::AlterTableMoveAllStmt* unsafe_arena_release_alter_table_move_all_stmt(); // .pg_query.SecLabelStmt sec_label_stmt = 143 [json_name = "SecLabelStmt"]; bool has_sec_label_stmt() const; private: bool _internal_has_sec_label_stmt() const; public: void clear_sec_label_stmt(); const ::pg_query::SecLabelStmt& sec_label_stmt() const; ::pg_query::SecLabelStmt* release_sec_label_stmt(); ::pg_query::SecLabelStmt* mutable_sec_label_stmt(); void set_allocated_sec_label_stmt(::pg_query::SecLabelStmt* sec_label_stmt); private: const ::pg_query::SecLabelStmt& _internal_sec_label_stmt() const; ::pg_query::SecLabelStmt* _internal_mutable_sec_label_stmt(); public: void unsafe_arena_set_allocated_sec_label_stmt( ::pg_query::SecLabelStmt* sec_label_stmt); ::pg_query::SecLabelStmt* unsafe_arena_release_sec_label_stmt(); // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 144 [json_name = "CreateForeignTableStmt"]; bool has_create_foreign_table_stmt() const; private: bool _internal_has_create_foreign_table_stmt() const; public: void clear_create_foreign_table_stmt(); const ::pg_query::CreateForeignTableStmt& create_foreign_table_stmt() const; ::pg_query::CreateForeignTableStmt* release_create_foreign_table_stmt(); ::pg_query::CreateForeignTableStmt* mutable_create_foreign_table_stmt(); void set_allocated_create_foreign_table_stmt(::pg_query::CreateForeignTableStmt* create_foreign_table_stmt); private: const ::pg_query::CreateForeignTableStmt& _internal_create_foreign_table_stmt() const; ::pg_query::CreateForeignTableStmt* _internal_mutable_create_foreign_table_stmt(); public: void unsafe_arena_set_allocated_create_foreign_table_stmt( ::pg_query::CreateForeignTableStmt* create_foreign_table_stmt); ::pg_query::CreateForeignTableStmt* unsafe_arena_release_create_foreign_table_stmt(); // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 145 [json_name = "ImportForeignSchemaStmt"]; bool has_import_foreign_schema_stmt() const; private: bool _internal_has_import_foreign_schema_stmt() const; public: void clear_import_foreign_schema_stmt(); const ::pg_query::ImportForeignSchemaStmt& import_foreign_schema_stmt() const; ::pg_query::ImportForeignSchemaStmt* release_import_foreign_schema_stmt(); ::pg_query::ImportForeignSchemaStmt* mutable_import_foreign_schema_stmt(); void set_allocated_import_foreign_schema_stmt(::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt); private: const ::pg_query::ImportForeignSchemaStmt& _internal_import_foreign_schema_stmt() const; ::pg_query::ImportForeignSchemaStmt* _internal_mutable_import_foreign_schema_stmt(); public: void unsafe_arena_set_allocated_import_foreign_schema_stmt( ::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt); ::pg_query::ImportForeignSchemaStmt* unsafe_arena_release_import_foreign_schema_stmt(); // .pg_query.CreateExtensionStmt create_extension_stmt = 146 [json_name = "CreateExtensionStmt"]; bool has_create_extension_stmt() const; private: bool _internal_has_create_extension_stmt() const; public: void clear_create_extension_stmt(); const ::pg_query::CreateExtensionStmt& create_extension_stmt() const; ::pg_query::CreateExtensionStmt* release_create_extension_stmt(); ::pg_query::CreateExtensionStmt* mutable_create_extension_stmt(); void set_allocated_create_extension_stmt(::pg_query::CreateExtensionStmt* create_extension_stmt); private: const ::pg_query::CreateExtensionStmt& _internal_create_extension_stmt() const; ::pg_query::CreateExtensionStmt* _internal_mutable_create_extension_stmt(); public: void unsafe_arena_set_allocated_create_extension_stmt( ::pg_query::CreateExtensionStmt* create_extension_stmt); ::pg_query::CreateExtensionStmt* unsafe_arena_release_create_extension_stmt(); // .pg_query.AlterExtensionStmt alter_extension_stmt = 147 [json_name = "AlterExtensionStmt"]; bool has_alter_extension_stmt() const; private: bool _internal_has_alter_extension_stmt() const; public: void clear_alter_extension_stmt(); const ::pg_query::AlterExtensionStmt& alter_extension_stmt() const; ::pg_query::AlterExtensionStmt* release_alter_extension_stmt(); ::pg_query::AlterExtensionStmt* mutable_alter_extension_stmt(); void set_allocated_alter_extension_stmt(::pg_query::AlterExtensionStmt* alter_extension_stmt); private: const ::pg_query::AlterExtensionStmt& _internal_alter_extension_stmt() const; ::pg_query::AlterExtensionStmt* _internal_mutable_alter_extension_stmt(); public: void unsafe_arena_set_allocated_alter_extension_stmt( ::pg_query::AlterExtensionStmt* alter_extension_stmt); ::pg_query::AlterExtensionStmt* unsafe_arena_release_alter_extension_stmt(); // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 148 [json_name = "AlterExtensionContentsStmt"]; bool has_alter_extension_contents_stmt() const; private: bool _internal_has_alter_extension_contents_stmt() const; public: void clear_alter_extension_contents_stmt(); const ::pg_query::AlterExtensionContentsStmt& alter_extension_contents_stmt() const; ::pg_query::AlterExtensionContentsStmt* release_alter_extension_contents_stmt(); ::pg_query::AlterExtensionContentsStmt* mutable_alter_extension_contents_stmt(); void set_allocated_alter_extension_contents_stmt(::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt); private: const ::pg_query::AlterExtensionContentsStmt& _internal_alter_extension_contents_stmt() const; ::pg_query::AlterExtensionContentsStmt* _internal_mutable_alter_extension_contents_stmt(); public: void unsafe_arena_set_allocated_alter_extension_contents_stmt( ::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt); ::pg_query::AlterExtensionContentsStmt* unsafe_arena_release_alter_extension_contents_stmt(); // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 149 [json_name = "CreateEventTrigStmt"]; bool has_create_event_trig_stmt() const; private: bool _internal_has_create_event_trig_stmt() const; public: void clear_create_event_trig_stmt(); const ::pg_query::CreateEventTrigStmt& create_event_trig_stmt() const; ::pg_query::CreateEventTrigStmt* release_create_event_trig_stmt(); ::pg_query::CreateEventTrigStmt* mutable_create_event_trig_stmt(); void set_allocated_create_event_trig_stmt(::pg_query::CreateEventTrigStmt* create_event_trig_stmt); private: const ::pg_query::CreateEventTrigStmt& _internal_create_event_trig_stmt() const; ::pg_query::CreateEventTrigStmt* _internal_mutable_create_event_trig_stmt(); public: void unsafe_arena_set_allocated_create_event_trig_stmt( ::pg_query::CreateEventTrigStmt* create_event_trig_stmt); ::pg_query::CreateEventTrigStmt* unsafe_arena_release_create_event_trig_stmt(); // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 150 [json_name = "AlterEventTrigStmt"]; bool has_alter_event_trig_stmt() const; private: bool _internal_has_alter_event_trig_stmt() const; public: void clear_alter_event_trig_stmt(); const ::pg_query::AlterEventTrigStmt& alter_event_trig_stmt() const; ::pg_query::AlterEventTrigStmt* release_alter_event_trig_stmt(); ::pg_query::AlterEventTrigStmt* mutable_alter_event_trig_stmt(); void set_allocated_alter_event_trig_stmt(::pg_query::AlterEventTrigStmt* alter_event_trig_stmt); private: const ::pg_query::AlterEventTrigStmt& _internal_alter_event_trig_stmt() const; ::pg_query::AlterEventTrigStmt* _internal_mutable_alter_event_trig_stmt(); public: void unsafe_arena_set_allocated_alter_event_trig_stmt( ::pg_query::AlterEventTrigStmt* alter_event_trig_stmt); ::pg_query::AlterEventTrigStmt* unsafe_arena_release_alter_event_trig_stmt(); // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 151 [json_name = "RefreshMatViewStmt"]; bool has_refresh_mat_view_stmt() const; private: bool _internal_has_refresh_mat_view_stmt() const; public: void clear_refresh_mat_view_stmt(); const ::pg_query::RefreshMatViewStmt& refresh_mat_view_stmt() const; ::pg_query::RefreshMatViewStmt* release_refresh_mat_view_stmt(); ::pg_query::RefreshMatViewStmt* mutable_refresh_mat_view_stmt(); void set_allocated_refresh_mat_view_stmt(::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt); private: const ::pg_query::RefreshMatViewStmt& _internal_refresh_mat_view_stmt() const; ::pg_query::RefreshMatViewStmt* _internal_mutable_refresh_mat_view_stmt(); public: void unsafe_arena_set_allocated_refresh_mat_view_stmt( ::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt); ::pg_query::RefreshMatViewStmt* unsafe_arena_release_refresh_mat_view_stmt(); // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 152 [json_name = "ReplicaIdentityStmt"]; bool has_replica_identity_stmt() const; private: bool _internal_has_replica_identity_stmt() const; public: void clear_replica_identity_stmt(); const ::pg_query::ReplicaIdentityStmt& replica_identity_stmt() const; ::pg_query::ReplicaIdentityStmt* release_replica_identity_stmt(); ::pg_query::ReplicaIdentityStmt* mutable_replica_identity_stmt(); void set_allocated_replica_identity_stmt(::pg_query::ReplicaIdentityStmt* replica_identity_stmt); private: const ::pg_query::ReplicaIdentityStmt& _internal_replica_identity_stmt() const; ::pg_query::ReplicaIdentityStmt* _internal_mutable_replica_identity_stmt(); public: void unsafe_arena_set_allocated_replica_identity_stmt( ::pg_query::ReplicaIdentityStmt* replica_identity_stmt); ::pg_query::ReplicaIdentityStmt* unsafe_arena_release_replica_identity_stmt(); // .pg_query.AlterSystemStmt alter_system_stmt = 153 [json_name = "AlterSystemStmt"]; bool has_alter_system_stmt() const; private: bool _internal_has_alter_system_stmt() const; public: void clear_alter_system_stmt(); const ::pg_query::AlterSystemStmt& alter_system_stmt() const; ::pg_query::AlterSystemStmt* release_alter_system_stmt(); ::pg_query::AlterSystemStmt* mutable_alter_system_stmt(); void set_allocated_alter_system_stmt(::pg_query::AlterSystemStmt* alter_system_stmt); private: const ::pg_query::AlterSystemStmt& _internal_alter_system_stmt() const; ::pg_query::AlterSystemStmt* _internal_mutable_alter_system_stmt(); public: void unsafe_arena_set_allocated_alter_system_stmt( ::pg_query::AlterSystemStmt* alter_system_stmt); ::pg_query::AlterSystemStmt* unsafe_arena_release_alter_system_stmt(); // .pg_query.CreatePolicyStmt create_policy_stmt = 154 [json_name = "CreatePolicyStmt"]; bool has_create_policy_stmt() const; private: bool _internal_has_create_policy_stmt() const; public: void clear_create_policy_stmt(); const ::pg_query::CreatePolicyStmt& create_policy_stmt() const; ::pg_query::CreatePolicyStmt* release_create_policy_stmt(); ::pg_query::CreatePolicyStmt* mutable_create_policy_stmt(); void set_allocated_create_policy_stmt(::pg_query::CreatePolicyStmt* create_policy_stmt); private: const ::pg_query::CreatePolicyStmt& _internal_create_policy_stmt() const; ::pg_query::CreatePolicyStmt* _internal_mutable_create_policy_stmt(); public: void unsafe_arena_set_allocated_create_policy_stmt( ::pg_query::CreatePolicyStmt* create_policy_stmt); ::pg_query::CreatePolicyStmt* unsafe_arena_release_create_policy_stmt(); // .pg_query.AlterPolicyStmt alter_policy_stmt = 155 [json_name = "AlterPolicyStmt"]; bool has_alter_policy_stmt() const; private: bool _internal_has_alter_policy_stmt() const; public: void clear_alter_policy_stmt(); const ::pg_query::AlterPolicyStmt& alter_policy_stmt() const; ::pg_query::AlterPolicyStmt* release_alter_policy_stmt(); ::pg_query::AlterPolicyStmt* mutable_alter_policy_stmt(); void set_allocated_alter_policy_stmt(::pg_query::AlterPolicyStmt* alter_policy_stmt); private: const ::pg_query::AlterPolicyStmt& _internal_alter_policy_stmt() const; ::pg_query::AlterPolicyStmt* _internal_mutable_alter_policy_stmt(); public: void unsafe_arena_set_allocated_alter_policy_stmt( ::pg_query::AlterPolicyStmt* alter_policy_stmt); ::pg_query::AlterPolicyStmt* unsafe_arena_release_alter_policy_stmt(); // .pg_query.CreateTransformStmt create_transform_stmt = 156 [json_name = "CreateTransformStmt"]; bool has_create_transform_stmt() const; private: bool _internal_has_create_transform_stmt() const; public: void clear_create_transform_stmt(); const ::pg_query::CreateTransformStmt& create_transform_stmt() const; ::pg_query::CreateTransformStmt* release_create_transform_stmt(); ::pg_query::CreateTransformStmt* mutable_create_transform_stmt(); void set_allocated_create_transform_stmt(::pg_query::CreateTransformStmt* create_transform_stmt); private: const ::pg_query::CreateTransformStmt& _internal_create_transform_stmt() const; ::pg_query::CreateTransformStmt* _internal_mutable_create_transform_stmt(); public: void unsafe_arena_set_allocated_create_transform_stmt( ::pg_query::CreateTransformStmt* create_transform_stmt); ::pg_query::CreateTransformStmt* unsafe_arena_release_create_transform_stmt(); // .pg_query.CreateAmStmt create_am_stmt = 157 [json_name = "CreateAmStmt"]; bool has_create_am_stmt() const; private: bool _internal_has_create_am_stmt() const; public: void clear_create_am_stmt(); const ::pg_query::CreateAmStmt& create_am_stmt() const; ::pg_query::CreateAmStmt* release_create_am_stmt(); ::pg_query::CreateAmStmt* mutable_create_am_stmt(); void set_allocated_create_am_stmt(::pg_query::CreateAmStmt* create_am_stmt); private: const ::pg_query::CreateAmStmt& _internal_create_am_stmt() const; ::pg_query::CreateAmStmt* _internal_mutable_create_am_stmt(); public: void unsafe_arena_set_allocated_create_am_stmt( ::pg_query::CreateAmStmt* create_am_stmt); ::pg_query::CreateAmStmt* unsafe_arena_release_create_am_stmt(); // .pg_query.CreatePublicationStmt create_publication_stmt = 158 [json_name = "CreatePublicationStmt"]; bool has_create_publication_stmt() const; private: bool _internal_has_create_publication_stmt() const; public: void clear_create_publication_stmt(); const ::pg_query::CreatePublicationStmt& create_publication_stmt() const; ::pg_query::CreatePublicationStmt* release_create_publication_stmt(); ::pg_query::CreatePublicationStmt* mutable_create_publication_stmt(); void set_allocated_create_publication_stmt(::pg_query::CreatePublicationStmt* create_publication_stmt); private: const ::pg_query::CreatePublicationStmt& _internal_create_publication_stmt() const; ::pg_query::CreatePublicationStmt* _internal_mutable_create_publication_stmt(); public: void unsafe_arena_set_allocated_create_publication_stmt( ::pg_query::CreatePublicationStmt* create_publication_stmt); ::pg_query::CreatePublicationStmt* unsafe_arena_release_create_publication_stmt(); // .pg_query.AlterPublicationStmt alter_publication_stmt = 159 [json_name = "AlterPublicationStmt"]; bool has_alter_publication_stmt() const; private: bool _internal_has_alter_publication_stmt() const; public: void clear_alter_publication_stmt(); const ::pg_query::AlterPublicationStmt& alter_publication_stmt() const; ::pg_query::AlterPublicationStmt* release_alter_publication_stmt(); ::pg_query::AlterPublicationStmt* mutable_alter_publication_stmt(); void set_allocated_alter_publication_stmt(::pg_query::AlterPublicationStmt* alter_publication_stmt); private: const ::pg_query::AlterPublicationStmt& _internal_alter_publication_stmt() const; ::pg_query::AlterPublicationStmt* _internal_mutable_alter_publication_stmt(); public: void unsafe_arena_set_allocated_alter_publication_stmt( ::pg_query::AlterPublicationStmt* alter_publication_stmt); ::pg_query::AlterPublicationStmt* unsafe_arena_release_alter_publication_stmt(); // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 160 [json_name = "CreateSubscriptionStmt"]; bool has_create_subscription_stmt() const; private: bool _internal_has_create_subscription_stmt() const; public: void clear_create_subscription_stmt(); const ::pg_query::CreateSubscriptionStmt& create_subscription_stmt() const; ::pg_query::CreateSubscriptionStmt* release_create_subscription_stmt(); ::pg_query::CreateSubscriptionStmt* mutable_create_subscription_stmt(); void set_allocated_create_subscription_stmt(::pg_query::CreateSubscriptionStmt* create_subscription_stmt); private: const ::pg_query::CreateSubscriptionStmt& _internal_create_subscription_stmt() const; ::pg_query::CreateSubscriptionStmt* _internal_mutable_create_subscription_stmt(); public: void unsafe_arena_set_allocated_create_subscription_stmt( ::pg_query::CreateSubscriptionStmt* create_subscription_stmt); ::pg_query::CreateSubscriptionStmt* unsafe_arena_release_create_subscription_stmt(); // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 161 [json_name = "AlterSubscriptionStmt"]; bool has_alter_subscription_stmt() const; private: bool _internal_has_alter_subscription_stmt() const; public: void clear_alter_subscription_stmt(); const ::pg_query::AlterSubscriptionStmt& alter_subscription_stmt() const; ::pg_query::AlterSubscriptionStmt* release_alter_subscription_stmt(); ::pg_query::AlterSubscriptionStmt* mutable_alter_subscription_stmt(); void set_allocated_alter_subscription_stmt(::pg_query::AlterSubscriptionStmt* alter_subscription_stmt); private: const ::pg_query::AlterSubscriptionStmt& _internal_alter_subscription_stmt() const; ::pg_query::AlterSubscriptionStmt* _internal_mutable_alter_subscription_stmt(); public: void unsafe_arena_set_allocated_alter_subscription_stmt( ::pg_query::AlterSubscriptionStmt* alter_subscription_stmt); ::pg_query::AlterSubscriptionStmt* unsafe_arena_release_alter_subscription_stmt(); // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 162 [json_name = "DropSubscriptionStmt"]; bool has_drop_subscription_stmt() const; private: bool _internal_has_drop_subscription_stmt() const; public: void clear_drop_subscription_stmt(); const ::pg_query::DropSubscriptionStmt& drop_subscription_stmt() const; ::pg_query::DropSubscriptionStmt* release_drop_subscription_stmt(); ::pg_query::DropSubscriptionStmt* mutable_drop_subscription_stmt(); void set_allocated_drop_subscription_stmt(::pg_query::DropSubscriptionStmt* drop_subscription_stmt); private: const ::pg_query::DropSubscriptionStmt& _internal_drop_subscription_stmt() const; ::pg_query::DropSubscriptionStmt* _internal_mutable_drop_subscription_stmt(); public: void unsafe_arena_set_allocated_drop_subscription_stmt( ::pg_query::DropSubscriptionStmt* drop_subscription_stmt); ::pg_query::DropSubscriptionStmt* unsafe_arena_release_drop_subscription_stmt(); // .pg_query.CreateStatsStmt create_stats_stmt = 163 [json_name = "CreateStatsStmt"]; bool has_create_stats_stmt() const; private: bool _internal_has_create_stats_stmt() const; public: void clear_create_stats_stmt(); const ::pg_query::CreateStatsStmt& create_stats_stmt() const; ::pg_query::CreateStatsStmt* release_create_stats_stmt(); ::pg_query::CreateStatsStmt* mutable_create_stats_stmt(); void set_allocated_create_stats_stmt(::pg_query::CreateStatsStmt* create_stats_stmt); private: const ::pg_query::CreateStatsStmt& _internal_create_stats_stmt() const; ::pg_query::CreateStatsStmt* _internal_mutable_create_stats_stmt(); public: void unsafe_arena_set_allocated_create_stats_stmt( ::pg_query::CreateStatsStmt* create_stats_stmt); ::pg_query::CreateStatsStmt* unsafe_arena_release_create_stats_stmt(); // .pg_query.AlterCollationStmt alter_collation_stmt = 164 [json_name = "AlterCollationStmt"]; bool has_alter_collation_stmt() const; private: bool _internal_has_alter_collation_stmt() const; public: void clear_alter_collation_stmt(); const ::pg_query::AlterCollationStmt& alter_collation_stmt() const; ::pg_query::AlterCollationStmt* release_alter_collation_stmt(); ::pg_query::AlterCollationStmt* mutable_alter_collation_stmt(); void set_allocated_alter_collation_stmt(::pg_query::AlterCollationStmt* alter_collation_stmt); private: const ::pg_query::AlterCollationStmt& _internal_alter_collation_stmt() const; ::pg_query::AlterCollationStmt* _internal_mutable_alter_collation_stmt(); public: void unsafe_arena_set_allocated_alter_collation_stmt( ::pg_query::AlterCollationStmt* alter_collation_stmt); ::pg_query::AlterCollationStmt* unsafe_arena_release_alter_collation_stmt(); // .pg_query.CallStmt call_stmt = 165 [json_name = "CallStmt"]; bool has_call_stmt() const; private: bool _internal_has_call_stmt() const; public: void clear_call_stmt(); const ::pg_query::CallStmt& call_stmt() const; ::pg_query::CallStmt* release_call_stmt(); ::pg_query::CallStmt* mutable_call_stmt(); void set_allocated_call_stmt(::pg_query::CallStmt* call_stmt); private: const ::pg_query::CallStmt& _internal_call_stmt() const; ::pg_query::CallStmt* _internal_mutable_call_stmt(); public: void unsafe_arena_set_allocated_call_stmt( ::pg_query::CallStmt* call_stmt); ::pg_query::CallStmt* unsafe_arena_release_call_stmt(); // .pg_query.AlterStatsStmt alter_stats_stmt = 166 [json_name = "AlterStatsStmt"]; bool has_alter_stats_stmt() const; private: bool _internal_has_alter_stats_stmt() const; public: void clear_alter_stats_stmt(); const ::pg_query::AlterStatsStmt& alter_stats_stmt() const; ::pg_query::AlterStatsStmt* release_alter_stats_stmt(); ::pg_query::AlterStatsStmt* mutable_alter_stats_stmt(); void set_allocated_alter_stats_stmt(::pg_query::AlterStatsStmt* alter_stats_stmt); private: const ::pg_query::AlterStatsStmt& _internal_alter_stats_stmt() const; ::pg_query::AlterStatsStmt* _internal_mutable_alter_stats_stmt(); public: void unsafe_arena_set_allocated_alter_stats_stmt( ::pg_query::AlterStatsStmt* alter_stats_stmt); ::pg_query::AlterStatsStmt* unsafe_arena_release_alter_stats_stmt(); // .pg_query.A_Expr a_expr = 167 [json_name = "A_Expr"]; bool has_a_expr() const; private: bool _internal_has_a_expr() const; public: void clear_a_expr(); const ::pg_query::A_Expr& a_expr() const; ::pg_query::A_Expr* release_a_expr(); ::pg_query::A_Expr* mutable_a_expr(); void set_allocated_a_expr(::pg_query::A_Expr* a_expr); private: const ::pg_query::A_Expr& _internal_a_expr() const; ::pg_query::A_Expr* _internal_mutable_a_expr(); public: void unsafe_arena_set_allocated_a_expr( ::pg_query::A_Expr* a_expr); ::pg_query::A_Expr* unsafe_arena_release_a_expr(); // .pg_query.ColumnRef column_ref = 168 [json_name = "ColumnRef"]; bool has_column_ref() const; private: bool _internal_has_column_ref() const; public: void clear_column_ref(); const ::pg_query::ColumnRef& column_ref() const; ::pg_query::ColumnRef* release_column_ref(); ::pg_query::ColumnRef* mutable_column_ref(); void set_allocated_column_ref(::pg_query::ColumnRef* column_ref); private: const ::pg_query::ColumnRef& _internal_column_ref() const; ::pg_query::ColumnRef* _internal_mutable_column_ref(); public: void unsafe_arena_set_allocated_column_ref( ::pg_query::ColumnRef* column_ref); ::pg_query::ColumnRef* unsafe_arena_release_column_ref(); // .pg_query.ParamRef param_ref = 169 [json_name = "ParamRef"]; bool has_param_ref() const; private: bool _internal_has_param_ref() const; public: void clear_param_ref(); const ::pg_query::ParamRef& param_ref() const; ::pg_query::ParamRef* release_param_ref(); ::pg_query::ParamRef* mutable_param_ref(); void set_allocated_param_ref(::pg_query::ParamRef* param_ref); private: const ::pg_query::ParamRef& _internal_param_ref() const; ::pg_query::ParamRef* _internal_mutable_param_ref(); public: void unsafe_arena_set_allocated_param_ref( ::pg_query::ParamRef* param_ref); ::pg_query::ParamRef* unsafe_arena_release_param_ref(); // .pg_query.A_Const a_const = 170 [json_name = "A_Const"]; bool has_a_const() const; private: bool _internal_has_a_const() const; public: void clear_a_const(); const ::pg_query::A_Const& a_const() const; ::pg_query::A_Const* release_a_const(); ::pg_query::A_Const* mutable_a_const(); void set_allocated_a_const(::pg_query::A_Const* a_const); private: const ::pg_query::A_Const& _internal_a_const() const; ::pg_query::A_Const* _internal_mutable_a_const(); public: void unsafe_arena_set_allocated_a_const( ::pg_query::A_Const* a_const); ::pg_query::A_Const* unsafe_arena_release_a_const(); // .pg_query.FuncCall func_call = 171 [json_name = "FuncCall"]; bool has_func_call() const; private: bool _internal_has_func_call() const; public: void clear_func_call(); const ::pg_query::FuncCall& func_call() const; ::pg_query::FuncCall* release_func_call(); ::pg_query::FuncCall* mutable_func_call(); void set_allocated_func_call(::pg_query::FuncCall* func_call); private: const ::pg_query::FuncCall& _internal_func_call() const; ::pg_query::FuncCall* _internal_mutable_func_call(); public: void unsafe_arena_set_allocated_func_call( ::pg_query::FuncCall* func_call); ::pg_query::FuncCall* unsafe_arena_release_func_call(); // .pg_query.A_Star a_star = 172 [json_name = "A_Star"]; bool has_a_star() const; private: bool _internal_has_a_star() const; public: void clear_a_star(); const ::pg_query::A_Star& a_star() const; ::pg_query::A_Star* release_a_star(); ::pg_query::A_Star* mutable_a_star(); void set_allocated_a_star(::pg_query::A_Star* a_star); private: const ::pg_query::A_Star& _internal_a_star() const; ::pg_query::A_Star* _internal_mutable_a_star(); public: void unsafe_arena_set_allocated_a_star( ::pg_query::A_Star* a_star); ::pg_query::A_Star* unsafe_arena_release_a_star(); // .pg_query.A_Indices a_indices = 173 [json_name = "A_Indices"]; bool has_a_indices() const; private: bool _internal_has_a_indices() const; public: void clear_a_indices(); const ::pg_query::A_Indices& a_indices() const; ::pg_query::A_Indices* release_a_indices(); ::pg_query::A_Indices* mutable_a_indices(); void set_allocated_a_indices(::pg_query::A_Indices* a_indices); private: const ::pg_query::A_Indices& _internal_a_indices() const; ::pg_query::A_Indices* _internal_mutable_a_indices(); public: void unsafe_arena_set_allocated_a_indices( ::pg_query::A_Indices* a_indices); ::pg_query::A_Indices* unsafe_arena_release_a_indices(); // .pg_query.A_Indirection a_indirection = 174 [json_name = "A_Indirection"]; bool has_a_indirection() const; private: bool _internal_has_a_indirection() const; public: void clear_a_indirection(); const ::pg_query::A_Indirection& a_indirection() const; ::pg_query::A_Indirection* release_a_indirection(); ::pg_query::A_Indirection* mutable_a_indirection(); void set_allocated_a_indirection(::pg_query::A_Indirection* a_indirection); private: const ::pg_query::A_Indirection& _internal_a_indirection() const; ::pg_query::A_Indirection* _internal_mutable_a_indirection(); public: void unsafe_arena_set_allocated_a_indirection( ::pg_query::A_Indirection* a_indirection); ::pg_query::A_Indirection* unsafe_arena_release_a_indirection(); // .pg_query.A_ArrayExpr a_array_expr = 175 [json_name = "A_ArrayExpr"]; bool has_a_array_expr() const; private: bool _internal_has_a_array_expr() const; public: void clear_a_array_expr(); const ::pg_query::A_ArrayExpr& a_array_expr() const; ::pg_query::A_ArrayExpr* release_a_array_expr(); ::pg_query::A_ArrayExpr* mutable_a_array_expr(); void set_allocated_a_array_expr(::pg_query::A_ArrayExpr* a_array_expr); private: const ::pg_query::A_ArrayExpr& _internal_a_array_expr() const; ::pg_query::A_ArrayExpr* _internal_mutable_a_array_expr(); public: void unsafe_arena_set_allocated_a_array_expr( ::pg_query::A_ArrayExpr* a_array_expr); ::pg_query::A_ArrayExpr* unsafe_arena_release_a_array_expr(); // .pg_query.ResTarget res_target = 176 [json_name = "ResTarget"]; bool has_res_target() const; private: bool _internal_has_res_target() const; public: void clear_res_target(); const ::pg_query::ResTarget& res_target() const; ::pg_query::ResTarget* release_res_target(); ::pg_query::ResTarget* mutable_res_target(); void set_allocated_res_target(::pg_query::ResTarget* res_target); private: const ::pg_query::ResTarget& _internal_res_target() const; ::pg_query::ResTarget* _internal_mutable_res_target(); public: void unsafe_arena_set_allocated_res_target( ::pg_query::ResTarget* res_target); ::pg_query::ResTarget* unsafe_arena_release_res_target(); // .pg_query.MultiAssignRef multi_assign_ref = 177 [json_name = "MultiAssignRef"]; bool has_multi_assign_ref() const; private: bool _internal_has_multi_assign_ref() const; public: void clear_multi_assign_ref(); const ::pg_query::MultiAssignRef& multi_assign_ref() const; ::pg_query::MultiAssignRef* release_multi_assign_ref(); ::pg_query::MultiAssignRef* mutable_multi_assign_ref(); void set_allocated_multi_assign_ref(::pg_query::MultiAssignRef* multi_assign_ref); private: const ::pg_query::MultiAssignRef& _internal_multi_assign_ref() const; ::pg_query::MultiAssignRef* _internal_mutable_multi_assign_ref(); public: void unsafe_arena_set_allocated_multi_assign_ref( ::pg_query::MultiAssignRef* multi_assign_ref); ::pg_query::MultiAssignRef* unsafe_arena_release_multi_assign_ref(); // .pg_query.TypeCast type_cast = 178 [json_name = "TypeCast"]; bool has_type_cast() const; private: bool _internal_has_type_cast() const; public: void clear_type_cast(); const ::pg_query::TypeCast& type_cast() const; ::pg_query::TypeCast* release_type_cast(); ::pg_query::TypeCast* mutable_type_cast(); void set_allocated_type_cast(::pg_query::TypeCast* type_cast); private: const ::pg_query::TypeCast& _internal_type_cast() const; ::pg_query::TypeCast* _internal_mutable_type_cast(); public: void unsafe_arena_set_allocated_type_cast( ::pg_query::TypeCast* type_cast); ::pg_query::TypeCast* unsafe_arena_release_type_cast(); // .pg_query.CollateClause collate_clause = 179 [json_name = "CollateClause"]; bool has_collate_clause() const; private: bool _internal_has_collate_clause() const; public: void clear_collate_clause(); const ::pg_query::CollateClause& collate_clause() const; ::pg_query::CollateClause* release_collate_clause(); ::pg_query::CollateClause* mutable_collate_clause(); void set_allocated_collate_clause(::pg_query::CollateClause* collate_clause); private: const ::pg_query::CollateClause& _internal_collate_clause() const; ::pg_query::CollateClause* _internal_mutable_collate_clause(); public: void unsafe_arena_set_allocated_collate_clause( ::pg_query::CollateClause* collate_clause); ::pg_query::CollateClause* unsafe_arena_release_collate_clause(); // .pg_query.SortBy sort_by = 180 [json_name = "SortBy"]; bool has_sort_by() const; private: bool _internal_has_sort_by() const; public: void clear_sort_by(); const ::pg_query::SortBy& sort_by() const; ::pg_query::SortBy* release_sort_by(); ::pg_query::SortBy* mutable_sort_by(); void set_allocated_sort_by(::pg_query::SortBy* sort_by); private: const ::pg_query::SortBy& _internal_sort_by() const; ::pg_query::SortBy* _internal_mutable_sort_by(); public: void unsafe_arena_set_allocated_sort_by( ::pg_query::SortBy* sort_by); ::pg_query::SortBy* unsafe_arena_release_sort_by(); // .pg_query.WindowDef window_def = 181 [json_name = "WindowDef"]; bool has_window_def() const; private: bool _internal_has_window_def() const; public: void clear_window_def(); const ::pg_query::WindowDef& window_def() const; ::pg_query::WindowDef* release_window_def(); ::pg_query::WindowDef* mutable_window_def(); void set_allocated_window_def(::pg_query::WindowDef* window_def); private: const ::pg_query::WindowDef& _internal_window_def() const; ::pg_query::WindowDef* _internal_mutable_window_def(); public: void unsafe_arena_set_allocated_window_def( ::pg_query::WindowDef* window_def); ::pg_query::WindowDef* unsafe_arena_release_window_def(); // .pg_query.RangeSubselect range_subselect = 182 [json_name = "RangeSubselect"]; bool has_range_subselect() const; private: bool _internal_has_range_subselect() const; public: void clear_range_subselect(); const ::pg_query::RangeSubselect& range_subselect() const; ::pg_query::RangeSubselect* release_range_subselect(); ::pg_query::RangeSubselect* mutable_range_subselect(); void set_allocated_range_subselect(::pg_query::RangeSubselect* range_subselect); private: const ::pg_query::RangeSubselect& _internal_range_subselect() const; ::pg_query::RangeSubselect* _internal_mutable_range_subselect(); public: void unsafe_arena_set_allocated_range_subselect( ::pg_query::RangeSubselect* range_subselect); ::pg_query::RangeSubselect* unsafe_arena_release_range_subselect(); // .pg_query.RangeFunction range_function = 183 [json_name = "RangeFunction"]; bool has_range_function() const; private: bool _internal_has_range_function() const; public: void clear_range_function(); const ::pg_query::RangeFunction& range_function() const; ::pg_query::RangeFunction* release_range_function(); ::pg_query::RangeFunction* mutable_range_function(); void set_allocated_range_function(::pg_query::RangeFunction* range_function); private: const ::pg_query::RangeFunction& _internal_range_function() const; ::pg_query::RangeFunction* _internal_mutable_range_function(); public: void unsafe_arena_set_allocated_range_function( ::pg_query::RangeFunction* range_function); ::pg_query::RangeFunction* unsafe_arena_release_range_function(); // .pg_query.RangeTableSample range_table_sample = 184 [json_name = "RangeTableSample"]; bool has_range_table_sample() const; private: bool _internal_has_range_table_sample() const; public: void clear_range_table_sample(); const ::pg_query::RangeTableSample& range_table_sample() const; ::pg_query::RangeTableSample* release_range_table_sample(); ::pg_query::RangeTableSample* mutable_range_table_sample(); void set_allocated_range_table_sample(::pg_query::RangeTableSample* range_table_sample); private: const ::pg_query::RangeTableSample& _internal_range_table_sample() const; ::pg_query::RangeTableSample* _internal_mutable_range_table_sample(); public: void unsafe_arena_set_allocated_range_table_sample( ::pg_query::RangeTableSample* range_table_sample); ::pg_query::RangeTableSample* unsafe_arena_release_range_table_sample(); // .pg_query.RangeTableFunc range_table_func = 185 [json_name = "RangeTableFunc"]; bool has_range_table_func() const; private: bool _internal_has_range_table_func() const; public: void clear_range_table_func(); const ::pg_query::RangeTableFunc& range_table_func() const; ::pg_query::RangeTableFunc* release_range_table_func(); ::pg_query::RangeTableFunc* mutable_range_table_func(); void set_allocated_range_table_func(::pg_query::RangeTableFunc* range_table_func); private: const ::pg_query::RangeTableFunc& _internal_range_table_func() const; ::pg_query::RangeTableFunc* _internal_mutable_range_table_func(); public: void unsafe_arena_set_allocated_range_table_func( ::pg_query::RangeTableFunc* range_table_func); ::pg_query::RangeTableFunc* unsafe_arena_release_range_table_func(); // .pg_query.RangeTableFuncCol range_table_func_col = 186 [json_name = "RangeTableFuncCol"]; bool has_range_table_func_col() const; private: bool _internal_has_range_table_func_col() const; public: void clear_range_table_func_col(); const ::pg_query::RangeTableFuncCol& range_table_func_col() const; ::pg_query::RangeTableFuncCol* release_range_table_func_col(); ::pg_query::RangeTableFuncCol* mutable_range_table_func_col(); void set_allocated_range_table_func_col(::pg_query::RangeTableFuncCol* range_table_func_col); private: const ::pg_query::RangeTableFuncCol& _internal_range_table_func_col() const; ::pg_query::RangeTableFuncCol* _internal_mutable_range_table_func_col(); public: void unsafe_arena_set_allocated_range_table_func_col( ::pg_query::RangeTableFuncCol* range_table_func_col); ::pg_query::RangeTableFuncCol* unsafe_arena_release_range_table_func_col(); // .pg_query.TypeName type_name = 187 [json_name = "TypeName"]; bool has_type_name() const; private: bool _internal_has_type_name() const; public: void clear_type_name(); const ::pg_query::TypeName& type_name() const; ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.ColumnDef column_def = 188 [json_name = "ColumnDef"]; bool has_column_def() const; private: bool _internal_has_column_def() const; public: void clear_column_def(); const ::pg_query::ColumnDef& column_def() const; ::pg_query::ColumnDef* release_column_def(); ::pg_query::ColumnDef* mutable_column_def(); void set_allocated_column_def(::pg_query::ColumnDef* column_def); private: const ::pg_query::ColumnDef& _internal_column_def() const; ::pg_query::ColumnDef* _internal_mutable_column_def(); public: void unsafe_arena_set_allocated_column_def( ::pg_query::ColumnDef* column_def); ::pg_query::ColumnDef* unsafe_arena_release_column_def(); // .pg_query.IndexElem index_elem = 189 [json_name = "IndexElem"]; bool has_index_elem() const; private: bool _internal_has_index_elem() const; public: void clear_index_elem(); const ::pg_query::IndexElem& index_elem() const; ::pg_query::IndexElem* release_index_elem(); ::pg_query::IndexElem* mutable_index_elem(); void set_allocated_index_elem(::pg_query::IndexElem* index_elem); private: const ::pg_query::IndexElem& _internal_index_elem() const; ::pg_query::IndexElem* _internal_mutable_index_elem(); public: void unsafe_arena_set_allocated_index_elem( ::pg_query::IndexElem* index_elem); ::pg_query::IndexElem* unsafe_arena_release_index_elem(); // .pg_query.Constraint constraint = 190 [json_name = "Constraint"]; bool has_constraint() const; private: bool _internal_has_constraint() const; public: void clear_constraint(); const ::pg_query::Constraint& constraint() const; ::pg_query::Constraint* release_constraint(); ::pg_query::Constraint* mutable_constraint(); void set_allocated_constraint(::pg_query::Constraint* constraint); private: const ::pg_query::Constraint& _internal_constraint() const; ::pg_query::Constraint* _internal_mutable_constraint(); public: void unsafe_arena_set_allocated_constraint( ::pg_query::Constraint* constraint); ::pg_query::Constraint* unsafe_arena_release_constraint(); // .pg_query.DefElem def_elem = 191 [json_name = "DefElem"]; bool has_def_elem() const; private: bool _internal_has_def_elem() const; public: void clear_def_elem(); const ::pg_query::DefElem& def_elem() const; ::pg_query::DefElem* release_def_elem(); ::pg_query::DefElem* mutable_def_elem(); void set_allocated_def_elem(::pg_query::DefElem* def_elem); private: const ::pg_query::DefElem& _internal_def_elem() const; ::pg_query::DefElem* _internal_mutable_def_elem(); public: void unsafe_arena_set_allocated_def_elem( ::pg_query::DefElem* def_elem); ::pg_query::DefElem* unsafe_arena_release_def_elem(); // .pg_query.RangeTblEntry range_tbl_entry = 192 [json_name = "RangeTblEntry"]; bool has_range_tbl_entry() const; private: bool _internal_has_range_tbl_entry() const; public: void clear_range_tbl_entry(); const ::pg_query::RangeTblEntry& range_tbl_entry() const; ::pg_query::RangeTblEntry* release_range_tbl_entry(); ::pg_query::RangeTblEntry* mutable_range_tbl_entry(); void set_allocated_range_tbl_entry(::pg_query::RangeTblEntry* range_tbl_entry); private: const ::pg_query::RangeTblEntry& _internal_range_tbl_entry() const; ::pg_query::RangeTblEntry* _internal_mutable_range_tbl_entry(); public: void unsafe_arena_set_allocated_range_tbl_entry( ::pg_query::RangeTblEntry* range_tbl_entry); ::pg_query::RangeTblEntry* unsafe_arena_release_range_tbl_entry(); // .pg_query.RangeTblFunction range_tbl_function = 193 [json_name = "RangeTblFunction"]; bool has_range_tbl_function() const; private: bool _internal_has_range_tbl_function() const; public: void clear_range_tbl_function(); const ::pg_query::RangeTblFunction& range_tbl_function() const; ::pg_query::RangeTblFunction* release_range_tbl_function(); ::pg_query::RangeTblFunction* mutable_range_tbl_function(); void set_allocated_range_tbl_function(::pg_query::RangeTblFunction* range_tbl_function); private: const ::pg_query::RangeTblFunction& _internal_range_tbl_function() const; ::pg_query::RangeTblFunction* _internal_mutable_range_tbl_function(); public: void unsafe_arena_set_allocated_range_tbl_function( ::pg_query::RangeTblFunction* range_tbl_function); ::pg_query::RangeTblFunction* unsafe_arena_release_range_tbl_function(); // .pg_query.TableSampleClause table_sample_clause = 194 [json_name = "TableSampleClause"]; bool has_table_sample_clause() const; private: bool _internal_has_table_sample_clause() const; public: void clear_table_sample_clause(); const ::pg_query::TableSampleClause& table_sample_clause() const; ::pg_query::TableSampleClause* release_table_sample_clause(); ::pg_query::TableSampleClause* mutable_table_sample_clause(); void set_allocated_table_sample_clause(::pg_query::TableSampleClause* table_sample_clause); private: const ::pg_query::TableSampleClause& _internal_table_sample_clause() const; ::pg_query::TableSampleClause* _internal_mutable_table_sample_clause(); public: void unsafe_arena_set_allocated_table_sample_clause( ::pg_query::TableSampleClause* table_sample_clause); ::pg_query::TableSampleClause* unsafe_arena_release_table_sample_clause(); // .pg_query.WithCheckOption with_check_option = 195 [json_name = "WithCheckOption"]; bool has_with_check_option() const; private: bool _internal_has_with_check_option() const; public: void clear_with_check_option(); const ::pg_query::WithCheckOption& with_check_option() const; ::pg_query::WithCheckOption* release_with_check_option(); ::pg_query::WithCheckOption* mutable_with_check_option(); void set_allocated_with_check_option(::pg_query::WithCheckOption* with_check_option); private: const ::pg_query::WithCheckOption& _internal_with_check_option() const; ::pg_query::WithCheckOption* _internal_mutable_with_check_option(); public: void unsafe_arena_set_allocated_with_check_option( ::pg_query::WithCheckOption* with_check_option); ::pg_query::WithCheckOption* unsafe_arena_release_with_check_option(); // .pg_query.SortGroupClause sort_group_clause = 196 [json_name = "SortGroupClause"]; bool has_sort_group_clause() const; private: bool _internal_has_sort_group_clause() const; public: void clear_sort_group_clause(); const ::pg_query::SortGroupClause& sort_group_clause() const; ::pg_query::SortGroupClause* release_sort_group_clause(); ::pg_query::SortGroupClause* mutable_sort_group_clause(); void set_allocated_sort_group_clause(::pg_query::SortGroupClause* sort_group_clause); private: const ::pg_query::SortGroupClause& _internal_sort_group_clause() const; ::pg_query::SortGroupClause* _internal_mutable_sort_group_clause(); public: void unsafe_arena_set_allocated_sort_group_clause( ::pg_query::SortGroupClause* sort_group_clause); ::pg_query::SortGroupClause* unsafe_arena_release_sort_group_clause(); // .pg_query.GroupingSet grouping_set = 197 [json_name = "GroupingSet"]; bool has_grouping_set() const; private: bool _internal_has_grouping_set() const; public: void clear_grouping_set(); const ::pg_query::GroupingSet& grouping_set() const; ::pg_query::GroupingSet* release_grouping_set(); ::pg_query::GroupingSet* mutable_grouping_set(); void set_allocated_grouping_set(::pg_query::GroupingSet* grouping_set); private: const ::pg_query::GroupingSet& _internal_grouping_set() const; ::pg_query::GroupingSet* _internal_mutable_grouping_set(); public: void unsafe_arena_set_allocated_grouping_set( ::pg_query::GroupingSet* grouping_set); ::pg_query::GroupingSet* unsafe_arena_release_grouping_set(); // .pg_query.WindowClause window_clause = 198 [json_name = "WindowClause"]; bool has_window_clause() const; private: bool _internal_has_window_clause() const; public: void clear_window_clause(); const ::pg_query::WindowClause& window_clause() const; ::pg_query::WindowClause* release_window_clause(); ::pg_query::WindowClause* mutable_window_clause(); void set_allocated_window_clause(::pg_query::WindowClause* window_clause); private: const ::pg_query::WindowClause& _internal_window_clause() const; ::pg_query::WindowClause* _internal_mutable_window_clause(); public: void unsafe_arena_set_allocated_window_clause( ::pg_query::WindowClause* window_clause); ::pg_query::WindowClause* unsafe_arena_release_window_clause(); // .pg_query.ObjectWithArgs object_with_args = 199 [json_name = "ObjectWithArgs"]; bool has_object_with_args() const; private: bool _internal_has_object_with_args() const; public: void clear_object_with_args(); const ::pg_query::ObjectWithArgs& object_with_args() const; ::pg_query::ObjectWithArgs* release_object_with_args(); ::pg_query::ObjectWithArgs* mutable_object_with_args(); void set_allocated_object_with_args(::pg_query::ObjectWithArgs* object_with_args); private: const ::pg_query::ObjectWithArgs& _internal_object_with_args() const; ::pg_query::ObjectWithArgs* _internal_mutable_object_with_args(); public: void unsafe_arena_set_allocated_object_with_args( ::pg_query::ObjectWithArgs* object_with_args); ::pg_query::ObjectWithArgs* unsafe_arena_release_object_with_args(); // .pg_query.AccessPriv access_priv = 200 [json_name = "AccessPriv"]; bool has_access_priv() const; private: bool _internal_has_access_priv() const; public: void clear_access_priv(); const ::pg_query::AccessPriv& access_priv() const; ::pg_query::AccessPriv* release_access_priv(); ::pg_query::AccessPriv* mutable_access_priv(); void set_allocated_access_priv(::pg_query::AccessPriv* access_priv); private: const ::pg_query::AccessPriv& _internal_access_priv() const; ::pg_query::AccessPriv* _internal_mutable_access_priv(); public: void unsafe_arena_set_allocated_access_priv( ::pg_query::AccessPriv* access_priv); ::pg_query::AccessPriv* unsafe_arena_release_access_priv(); // .pg_query.CreateOpClassItem create_op_class_item = 201 [json_name = "CreateOpClassItem"]; bool has_create_op_class_item() const; private: bool _internal_has_create_op_class_item() const; public: void clear_create_op_class_item(); const ::pg_query::CreateOpClassItem& create_op_class_item() const; ::pg_query::CreateOpClassItem* release_create_op_class_item(); ::pg_query::CreateOpClassItem* mutable_create_op_class_item(); void set_allocated_create_op_class_item(::pg_query::CreateOpClassItem* create_op_class_item); private: const ::pg_query::CreateOpClassItem& _internal_create_op_class_item() const; ::pg_query::CreateOpClassItem* _internal_mutable_create_op_class_item(); public: void unsafe_arena_set_allocated_create_op_class_item( ::pg_query::CreateOpClassItem* create_op_class_item); ::pg_query::CreateOpClassItem* unsafe_arena_release_create_op_class_item(); // .pg_query.TableLikeClause table_like_clause = 202 [json_name = "TableLikeClause"]; bool has_table_like_clause() const; private: bool _internal_has_table_like_clause() const; public: void clear_table_like_clause(); const ::pg_query::TableLikeClause& table_like_clause() const; ::pg_query::TableLikeClause* release_table_like_clause(); ::pg_query::TableLikeClause* mutable_table_like_clause(); void set_allocated_table_like_clause(::pg_query::TableLikeClause* table_like_clause); private: const ::pg_query::TableLikeClause& _internal_table_like_clause() const; ::pg_query::TableLikeClause* _internal_mutable_table_like_clause(); public: void unsafe_arena_set_allocated_table_like_clause( ::pg_query::TableLikeClause* table_like_clause); ::pg_query::TableLikeClause* unsafe_arena_release_table_like_clause(); // .pg_query.FunctionParameter function_parameter = 203 [json_name = "FunctionParameter"]; bool has_function_parameter() const; private: bool _internal_has_function_parameter() const; public: void clear_function_parameter(); const ::pg_query::FunctionParameter& function_parameter() const; ::pg_query::FunctionParameter* release_function_parameter(); ::pg_query::FunctionParameter* mutable_function_parameter(); void set_allocated_function_parameter(::pg_query::FunctionParameter* function_parameter); private: const ::pg_query::FunctionParameter& _internal_function_parameter() const; ::pg_query::FunctionParameter* _internal_mutable_function_parameter(); public: void unsafe_arena_set_allocated_function_parameter( ::pg_query::FunctionParameter* function_parameter); ::pg_query::FunctionParameter* unsafe_arena_release_function_parameter(); // .pg_query.LockingClause locking_clause = 204 [json_name = "LockingClause"]; bool has_locking_clause() const; private: bool _internal_has_locking_clause() const; public: void clear_locking_clause(); const ::pg_query::LockingClause& locking_clause() const; ::pg_query::LockingClause* release_locking_clause(); ::pg_query::LockingClause* mutable_locking_clause(); void set_allocated_locking_clause(::pg_query::LockingClause* locking_clause); private: const ::pg_query::LockingClause& _internal_locking_clause() const; ::pg_query::LockingClause* _internal_mutable_locking_clause(); public: void unsafe_arena_set_allocated_locking_clause( ::pg_query::LockingClause* locking_clause); ::pg_query::LockingClause* unsafe_arena_release_locking_clause(); // .pg_query.RowMarkClause row_mark_clause = 205 [json_name = "RowMarkClause"]; bool has_row_mark_clause() const; private: bool _internal_has_row_mark_clause() const; public: void clear_row_mark_clause(); const ::pg_query::RowMarkClause& row_mark_clause() const; ::pg_query::RowMarkClause* release_row_mark_clause(); ::pg_query::RowMarkClause* mutable_row_mark_clause(); void set_allocated_row_mark_clause(::pg_query::RowMarkClause* row_mark_clause); private: const ::pg_query::RowMarkClause& _internal_row_mark_clause() const; ::pg_query::RowMarkClause* _internal_mutable_row_mark_clause(); public: void unsafe_arena_set_allocated_row_mark_clause( ::pg_query::RowMarkClause* row_mark_clause); ::pg_query::RowMarkClause* unsafe_arena_release_row_mark_clause(); // .pg_query.XmlSerialize xml_serialize = 206 [json_name = "XmlSerialize"]; bool has_xml_serialize() const; private: bool _internal_has_xml_serialize() const; public: void clear_xml_serialize(); const ::pg_query::XmlSerialize& xml_serialize() const; ::pg_query::XmlSerialize* release_xml_serialize(); ::pg_query::XmlSerialize* mutable_xml_serialize(); void set_allocated_xml_serialize(::pg_query::XmlSerialize* xml_serialize); private: const ::pg_query::XmlSerialize& _internal_xml_serialize() const; ::pg_query::XmlSerialize* _internal_mutable_xml_serialize(); public: void unsafe_arena_set_allocated_xml_serialize( ::pg_query::XmlSerialize* xml_serialize); ::pg_query::XmlSerialize* unsafe_arena_release_xml_serialize(); // .pg_query.WithClause with_clause = 207 [json_name = "WithClause"]; bool has_with_clause() const; private: bool _internal_has_with_clause() const; public: void clear_with_clause(); const ::pg_query::WithClause& with_clause() const; ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // .pg_query.InferClause infer_clause = 208 [json_name = "InferClause"]; bool has_infer_clause() const; private: bool _internal_has_infer_clause() const; public: void clear_infer_clause(); const ::pg_query::InferClause& infer_clause() const; ::pg_query::InferClause* release_infer_clause(); ::pg_query::InferClause* mutable_infer_clause(); void set_allocated_infer_clause(::pg_query::InferClause* infer_clause); private: const ::pg_query::InferClause& _internal_infer_clause() const; ::pg_query::InferClause* _internal_mutable_infer_clause(); public: void unsafe_arena_set_allocated_infer_clause( ::pg_query::InferClause* infer_clause); ::pg_query::InferClause* unsafe_arena_release_infer_clause(); // .pg_query.OnConflictClause on_conflict_clause = 209 [json_name = "OnConflictClause"]; bool has_on_conflict_clause() const; private: bool _internal_has_on_conflict_clause() const; public: void clear_on_conflict_clause(); const ::pg_query::OnConflictClause& on_conflict_clause() const; ::pg_query::OnConflictClause* release_on_conflict_clause(); ::pg_query::OnConflictClause* mutable_on_conflict_clause(); void set_allocated_on_conflict_clause(::pg_query::OnConflictClause* on_conflict_clause); private: const ::pg_query::OnConflictClause& _internal_on_conflict_clause() const; ::pg_query::OnConflictClause* _internal_mutable_on_conflict_clause(); public: void unsafe_arena_set_allocated_on_conflict_clause( ::pg_query::OnConflictClause* on_conflict_clause); ::pg_query::OnConflictClause* unsafe_arena_release_on_conflict_clause(); // .pg_query.CommonTableExpr common_table_expr = 210 [json_name = "CommonTableExpr"]; bool has_common_table_expr() const; private: bool _internal_has_common_table_expr() const; public: void clear_common_table_expr(); const ::pg_query::CommonTableExpr& common_table_expr() const; ::pg_query::CommonTableExpr* release_common_table_expr(); ::pg_query::CommonTableExpr* mutable_common_table_expr(); void set_allocated_common_table_expr(::pg_query::CommonTableExpr* common_table_expr); private: const ::pg_query::CommonTableExpr& _internal_common_table_expr() const; ::pg_query::CommonTableExpr* _internal_mutable_common_table_expr(); public: void unsafe_arena_set_allocated_common_table_expr( ::pg_query::CommonTableExpr* common_table_expr); ::pg_query::CommonTableExpr* unsafe_arena_release_common_table_expr(); // .pg_query.RoleSpec role_spec = 211 [json_name = "RoleSpec"]; bool has_role_spec() const; private: bool _internal_has_role_spec() const; public: void clear_role_spec(); const ::pg_query::RoleSpec& role_spec() const; ::pg_query::RoleSpec* release_role_spec(); ::pg_query::RoleSpec* mutable_role_spec(); void set_allocated_role_spec(::pg_query::RoleSpec* role_spec); private: const ::pg_query::RoleSpec& _internal_role_spec() const; ::pg_query::RoleSpec* _internal_mutable_role_spec(); public: void unsafe_arena_set_allocated_role_spec( ::pg_query::RoleSpec* role_spec); ::pg_query::RoleSpec* unsafe_arena_release_role_spec(); // .pg_query.TriggerTransition trigger_transition = 212 [json_name = "TriggerTransition"]; bool has_trigger_transition() const; private: bool _internal_has_trigger_transition() const; public: void clear_trigger_transition(); const ::pg_query::TriggerTransition& trigger_transition() const; ::pg_query::TriggerTransition* release_trigger_transition(); ::pg_query::TriggerTransition* mutable_trigger_transition(); void set_allocated_trigger_transition(::pg_query::TriggerTransition* trigger_transition); private: const ::pg_query::TriggerTransition& _internal_trigger_transition() const; ::pg_query::TriggerTransition* _internal_mutable_trigger_transition(); public: void unsafe_arena_set_allocated_trigger_transition( ::pg_query::TriggerTransition* trigger_transition); ::pg_query::TriggerTransition* unsafe_arena_release_trigger_transition(); // .pg_query.PartitionElem partition_elem = 213 [json_name = "PartitionElem"]; bool has_partition_elem() const; private: bool _internal_has_partition_elem() const; public: void clear_partition_elem(); const ::pg_query::PartitionElem& partition_elem() const; ::pg_query::PartitionElem* release_partition_elem(); ::pg_query::PartitionElem* mutable_partition_elem(); void set_allocated_partition_elem(::pg_query::PartitionElem* partition_elem); private: const ::pg_query::PartitionElem& _internal_partition_elem() const; ::pg_query::PartitionElem* _internal_mutable_partition_elem(); public: void unsafe_arena_set_allocated_partition_elem( ::pg_query::PartitionElem* partition_elem); ::pg_query::PartitionElem* unsafe_arena_release_partition_elem(); // .pg_query.PartitionSpec partition_spec = 214 [json_name = "PartitionSpec"]; bool has_partition_spec() const; private: bool _internal_has_partition_spec() const; public: void clear_partition_spec(); const ::pg_query::PartitionSpec& partition_spec() const; ::pg_query::PartitionSpec* release_partition_spec(); ::pg_query::PartitionSpec* mutable_partition_spec(); void set_allocated_partition_spec(::pg_query::PartitionSpec* partition_spec); private: const ::pg_query::PartitionSpec& _internal_partition_spec() const; ::pg_query::PartitionSpec* _internal_mutable_partition_spec(); public: void unsafe_arena_set_allocated_partition_spec( ::pg_query::PartitionSpec* partition_spec); ::pg_query::PartitionSpec* unsafe_arena_release_partition_spec(); // .pg_query.PartitionBoundSpec partition_bound_spec = 215 [json_name = "PartitionBoundSpec"]; bool has_partition_bound_spec() const; private: bool _internal_has_partition_bound_spec() const; public: void clear_partition_bound_spec(); const ::pg_query::PartitionBoundSpec& partition_bound_spec() const; ::pg_query::PartitionBoundSpec* release_partition_bound_spec(); ::pg_query::PartitionBoundSpec* mutable_partition_bound_spec(); void set_allocated_partition_bound_spec(::pg_query::PartitionBoundSpec* partition_bound_spec); private: const ::pg_query::PartitionBoundSpec& _internal_partition_bound_spec() const; ::pg_query::PartitionBoundSpec* _internal_mutable_partition_bound_spec(); public: void unsafe_arena_set_allocated_partition_bound_spec( ::pg_query::PartitionBoundSpec* partition_bound_spec); ::pg_query::PartitionBoundSpec* unsafe_arena_release_partition_bound_spec(); // .pg_query.PartitionRangeDatum partition_range_datum = 216 [json_name = "PartitionRangeDatum"]; bool has_partition_range_datum() const; private: bool _internal_has_partition_range_datum() const; public: void clear_partition_range_datum(); const ::pg_query::PartitionRangeDatum& partition_range_datum() const; ::pg_query::PartitionRangeDatum* release_partition_range_datum(); ::pg_query::PartitionRangeDatum* mutable_partition_range_datum(); void set_allocated_partition_range_datum(::pg_query::PartitionRangeDatum* partition_range_datum); private: const ::pg_query::PartitionRangeDatum& _internal_partition_range_datum() const; ::pg_query::PartitionRangeDatum* _internal_mutable_partition_range_datum(); public: void unsafe_arena_set_allocated_partition_range_datum( ::pg_query::PartitionRangeDatum* partition_range_datum); ::pg_query::PartitionRangeDatum* unsafe_arena_release_partition_range_datum(); // .pg_query.PartitionCmd partition_cmd = 217 [json_name = "PartitionCmd"]; bool has_partition_cmd() const; private: bool _internal_has_partition_cmd() const; public: void clear_partition_cmd(); const ::pg_query::PartitionCmd& partition_cmd() const; ::pg_query::PartitionCmd* release_partition_cmd(); ::pg_query::PartitionCmd* mutable_partition_cmd(); void set_allocated_partition_cmd(::pg_query::PartitionCmd* partition_cmd); private: const ::pg_query::PartitionCmd& _internal_partition_cmd() const; ::pg_query::PartitionCmd* _internal_mutable_partition_cmd(); public: void unsafe_arena_set_allocated_partition_cmd( ::pg_query::PartitionCmd* partition_cmd); ::pg_query::PartitionCmd* unsafe_arena_release_partition_cmd(); // .pg_query.VacuumRelation vacuum_relation = 218 [json_name = "VacuumRelation"]; bool has_vacuum_relation() const; private: bool _internal_has_vacuum_relation() const; public: void clear_vacuum_relation(); const ::pg_query::VacuumRelation& vacuum_relation() const; ::pg_query::VacuumRelation* release_vacuum_relation(); ::pg_query::VacuumRelation* mutable_vacuum_relation(); void set_allocated_vacuum_relation(::pg_query::VacuumRelation* vacuum_relation); private: const ::pg_query::VacuumRelation& _internal_vacuum_relation() const; ::pg_query::VacuumRelation* _internal_mutable_vacuum_relation(); public: void unsafe_arena_set_allocated_vacuum_relation( ::pg_query::VacuumRelation* vacuum_relation); ::pg_query::VacuumRelation* unsafe_arena_release_vacuum_relation(); // .pg_query.InlineCodeBlock inline_code_block = 219 [json_name = "InlineCodeBlock"]; bool has_inline_code_block() const; private: bool _internal_has_inline_code_block() const; public: void clear_inline_code_block(); const ::pg_query::InlineCodeBlock& inline_code_block() const; ::pg_query::InlineCodeBlock* release_inline_code_block(); ::pg_query::InlineCodeBlock* mutable_inline_code_block(); void set_allocated_inline_code_block(::pg_query::InlineCodeBlock* inline_code_block); private: const ::pg_query::InlineCodeBlock& _internal_inline_code_block() const; ::pg_query::InlineCodeBlock* _internal_mutable_inline_code_block(); public: void unsafe_arena_set_allocated_inline_code_block( ::pg_query::InlineCodeBlock* inline_code_block); ::pg_query::InlineCodeBlock* unsafe_arena_release_inline_code_block(); // .pg_query.CallContext call_context = 220 [json_name = "CallContext"]; bool has_call_context() const; private: bool _internal_has_call_context() const; public: void clear_call_context(); const ::pg_query::CallContext& call_context() const; ::pg_query::CallContext* release_call_context(); ::pg_query::CallContext* mutable_call_context(); void set_allocated_call_context(::pg_query::CallContext* call_context); private: const ::pg_query::CallContext& _internal_call_context() const; ::pg_query::CallContext* _internal_mutable_call_context(); public: void unsafe_arena_set_allocated_call_context( ::pg_query::CallContext* call_context); ::pg_query::CallContext* unsafe_arena_release_call_context(); // .pg_query.Integer integer = 221 [json_name = "Integer"]; bool has_integer() const; private: bool _internal_has_integer() const; public: void clear_integer(); const ::pg_query::Integer& integer() const; ::pg_query::Integer* release_integer(); ::pg_query::Integer* mutable_integer(); void set_allocated_integer(::pg_query::Integer* integer); private: const ::pg_query::Integer& _internal_integer() const; ::pg_query::Integer* _internal_mutable_integer(); public: void unsafe_arena_set_allocated_integer( ::pg_query::Integer* integer); ::pg_query::Integer* unsafe_arena_release_integer(); // .pg_query.Float float = 222 [json_name = "Float"]; bool has_float_() const; private: bool _internal_has_float_() const; public: void clear_float_(); const ::pg_query::Float& float_() const; ::pg_query::Float* release_float_(); ::pg_query::Float* mutable_float_(); void set_allocated_float_(::pg_query::Float* float_); private: const ::pg_query::Float& _internal_float_() const; ::pg_query::Float* _internal_mutable_float_(); public: void unsafe_arena_set_allocated_float_( ::pg_query::Float* float_); ::pg_query::Float* unsafe_arena_release_float_(); // .pg_query.String string = 223 [json_name = "String"]; bool has_string() const; private: bool _internal_has_string() const; public: void clear_string(); const ::pg_query::String& string() const; ::pg_query::String* release_string(); ::pg_query::String* mutable_string(); void set_allocated_string(::pg_query::String* string); private: const ::pg_query::String& _internal_string() const; ::pg_query::String* _internal_mutable_string(); public: void unsafe_arena_set_allocated_string( ::pg_query::String* string); ::pg_query::String* unsafe_arena_release_string(); // .pg_query.BitString bit_string = 224 [json_name = "BitString"]; bool has_bit_string() const; private: bool _internal_has_bit_string() const; public: void clear_bit_string(); const ::pg_query::BitString& bit_string() const; ::pg_query::BitString* release_bit_string(); ::pg_query::BitString* mutable_bit_string(); void set_allocated_bit_string(::pg_query::BitString* bit_string); private: const ::pg_query::BitString& _internal_bit_string() const; ::pg_query::BitString* _internal_mutable_bit_string(); public: void unsafe_arena_set_allocated_bit_string( ::pg_query::BitString* bit_string); ::pg_query::BitString* unsafe_arena_release_bit_string(); // .pg_query.Null null = 225 [json_name = "Null"]; bool has_null() const; private: bool _internal_has_null() const; public: void clear_null(); const ::pg_query::Null& null() const; ::pg_query::Null* release_null(); ::pg_query::Null* mutable_null(); void set_allocated_null(::pg_query::Null* null); private: const ::pg_query::Null& _internal_null() const; ::pg_query::Null* _internal_mutable_null(); public: void unsafe_arena_set_allocated_null( ::pg_query::Null* null); ::pg_query::Null* unsafe_arena_release_null(); // .pg_query.List list = 226 [json_name = "List"]; bool has_list() const; private: bool _internal_has_list() const; public: void clear_list(); const ::pg_query::List& list() const; ::pg_query::List* release_list(); ::pg_query::List* mutable_list(); void set_allocated_list(::pg_query::List* list); private: const ::pg_query::List& _internal_list() const; ::pg_query::List* _internal_mutable_list(); public: void unsafe_arena_set_allocated_list( ::pg_query::List* list); ::pg_query::List* unsafe_arena_release_list(); // .pg_query.IntList int_list = 227 [json_name = "IntList"]; bool has_int_list() const; private: bool _internal_has_int_list() const; public: void clear_int_list(); const ::pg_query::IntList& int_list() const; ::pg_query::IntList* release_int_list(); ::pg_query::IntList* mutable_int_list(); void set_allocated_int_list(::pg_query::IntList* int_list); private: const ::pg_query::IntList& _internal_int_list() const; ::pg_query::IntList* _internal_mutable_int_list(); public: void unsafe_arena_set_allocated_int_list( ::pg_query::IntList* int_list); ::pg_query::IntList* unsafe_arena_release_int_list(); // .pg_query.OidList oid_list = 228 [json_name = "OidList"]; bool has_oid_list() const; private: bool _internal_has_oid_list() const; public: void clear_oid_list(); const ::pg_query::OidList& oid_list() const; ::pg_query::OidList* release_oid_list(); ::pg_query::OidList* mutable_oid_list(); void set_allocated_oid_list(::pg_query::OidList* oid_list); private: const ::pg_query::OidList& _internal_oid_list() const; ::pg_query::OidList* _internal_mutable_oid_list(); public: void unsafe_arena_set_allocated_oid_list( ::pg_query::OidList* oid_list); ::pg_query::OidList* unsafe_arena_release_oid_list(); void clear_node(); NodeCase node_case() const; // @@protoc_insertion_point(class_scope:pg_query.Node) private: class _Internal; void set_has_alias(); void set_has_range_var(); void set_has_table_func(); void set_has_expr(); void set_has_var(); void set_has_param(); void set_has_aggref(); void set_has_grouping_func(); void set_has_window_func(); void set_has_subscripting_ref(); void set_has_func_expr(); void set_has_named_arg_expr(); void set_has_op_expr(); void set_has_distinct_expr(); void set_has_null_if_expr(); void set_has_scalar_array_op_expr(); void set_has_bool_expr(); void set_has_sub_link(); void set_has_sub_plan(); void set_has_alternative_sub_plan(); void set_has_field_select(); void set_has_field_store(); void set_has_relabel_type(); void set_has_coerce_via_io(); void set_has_array_coerce_expr(); void set_has_convert_rowtype_expr(); void set_has_collate_expr(); void set_has_case_expr(); void set_has_case_when(); void set_has_case_test_expr(); void set_has_array_expr(); void set_has_row_expr(); void set_has_row_compare_expr(); void set_has_coalesce_expr(); void set_has_min_max_expr(); void set_has_sqlvalue_function(); void set_has_xml_expr(); void set_has_null_test(); void set_has_boolean_test(); void set_has_coerce_to_domain(); void set_has_coerce_to_domain_value(); void set_has_set_to_default(); void set_has_current_of_expr(); void set_has_next_value_expr(); void set_has_inference_elem(); void set_has_target_entry(); void set_has_range_tbl_ref(); void set_has_join_expr(); void set_has_from_expr(); void set_has_on_conflict_expr(); void set_has_into_clause(); void set_has_raw_stmt(); void set_has_query(); void set_has_insert_stmt(); void set_has_delete_stmt(); void set_has_update_stmt(); void set_has_select_stmt(); void set_has_alter_table_stmt(); void set_has_alter_table_cmd(); void set_has_alter_domain_stmt(); void set_has_set_operation_stmt(); void set_has_grant_stmt(); void set_has_grant_role_stmt(); void set_has_alter_default_privileges_stmt(); void set_has_close_portal_stmt(); void set_has_cluster_stmt(); void set_has_copy_stmt(); void set_has_create_stmt(); void set_has_define_stmt(); void set_has_drop_stmt(); void set_has_truncate_stmt(); void set_has_comment_stmt(); void set_has_fetch_stmt(); void set_has_index_stmt(); void set_has_create_function_stmt(); void set_has_alter_function_stmt(); void set_has_do_stmt(); void set_has_rename_stmt(); void set_has_rule_stmt(); void set_has_notify_stmt(); void set_has_listen_stmt(); void set_has_unlisten_stmt(); void set_has_transaction_stmt(); void set_has_view_stmt(); void set_has_load_stmt(); void set_has_create_domain_stmt(); void set_has_createdb_stmt(); void set_has_dropdb_stmt(); void set_has_vacuum_stmt(); void set_has_explain_stmt(); void set_has_create_table_as_stmt(); void set_has_create_seq_stmt(); void set_has_alter_seq_stmt(); void set_has_variable_set_stmt(); void set_has_variable_show_stmt(); void set_has_discard_stmt(); void set_has_create_trig_stmt(); void set_has_create_plang_stmt(); void set_has_create_role_stmt(); void set_has_alter_role_stmt(); void set_has_drop_role_stmt(); void set_has_lock_stmt(); void set_has_constraints_set_stmt(); void set_has_reindex_stmt(); void set_has_check_point_stmt(); void set_has_create_schema_stmt(); void set_has_alter_database_stmt(); void set_has_alter_database_set_stmt(); void set_has_alter_role_set_stmt(); void set_has_create_conversion_stmt(); void set_has_create_cast_stmt(); void set_has_create_op_class_stmt(); void set_has_create_op_family_stmt(); void set_has_alter_op_family_stmt(); void set_has_prepare_stmt(); void set_has_execute_stmt(); void set_has_deallocate_stmt(); void set_has_declare_cursor_stmt(); void set_has_create_table_space_stmt(); void set_has_drop_table_space_stmt(); void set_has_alter_object_depends_stmt(); void set_has_alter_object_schema_stmt(); void set_has_alter_owner_stmt(); void set_has_alter_operator_stmt(); void set_has_alter_type_stmt(); void set_has_drop_owned_stmt(); void set_has_reassign_owned_stmt(); void set_has_composite_type_stmt(); void set_has_create_enum_stmt(); void set_has_create_range_stmt(); void set_has_alter_enum_stmt(); void set_has_alter_tsdictionary_stmt(); void set_has_alter_tsconfiguration_stmt(); void set_has_create_fdw_stmt(); void set_has_alter_fdw_stmt(); void set_has_create_foreign_server_stmt(); void set_has_alter_foreign_server_stmt(); void set_has_create_user_mapping_stmt(); void set_has_alter_user_mapping_stmt(); void set_has_drop_user_mapping_stmt(); void set_has_alter_table_space_options_stmt(); void set_has_alter_table_move_all_stmt(); void set_has_sec_label_stmt(); void set_has_create_foreign_table_stmt(); void set_has_import_foreign_schema_stmt(); void set_has_create_extension_stmt(); void set_has_alter_extension_stmt(); void set_has_alter_extension_contents_stmt(); void set_has_create_event_trig_stmt(); void set_has_alter_event_trig_stmt(); void set_has_refresh_mat_view_stmt(); void set_has_replica_identity_stmt(); void set_has_alter_system_stmt(); void set_has_create_policy_stmt(); void set_has_alter_policy_stmt(); void set_has_create_transform_stmt(); void set_has_create_am_stmt(); void set_has_create_publication_stmt(); void set_has_alter_publication_stmt(); void set_has_create_subscription_stmt(); void set_has_alter_subscription_stmt(); void set_has_drop_subscription_stmt(); void set_has_create_stats_stmt(); void set_has_alter_collation_stmt(); void set_has_call_stmt(); void set_has_alter_stats_stmt(); void set_has_a_expr(); void set_has_column_ref(); void set_has_param_ref(); void set_has_a_const(); void set_has_func_call(); void set_has_a_star(); void set_has_a_indices(); void set_has_a_indirection(); void set_has_a_array_expr(); void set_has_res_target(); void set_has_multi_assign_ref(); void set_has_type_cast(); void set_has_collate_clause(); void set_has_sort_by(); void set_has_window_def(); void set_has_range_subselect(); void set_has_range_function(); void set_has_range_table_sample(); void set_has_range_table_func(); void set_has_range_table_func_col(); void set_has_type_name(); void set_has_column_def(); void set_has_index_elem(); void set_has_constraint(); void set_has_def_elem(); void set_has_range_tbl_entry(); void set_has_range_tbl_function(); void set_has_table_sample_clause(); void set_has_with_check_option(); void set_has_sort_group_clause(); void set_has_grouping_set(); void set_has_window_clause(); void set_has_object_with_args(); void set_has_access_priv(); void set_has_create_op_class_item(); void set_has_table_like_clause(); void set_has_function_parameter(); void set_has_locking_clause(); void set_has_row_mark_clause(); void set_has_xml_serialize(); void set_has_with_clause(); void set_has_infer_clause(); void set_has_on_conflict_clause(); void set_has_common_table_expr(); void set_has_role_spec(); void set_has_trigger_transition(); void set_has_partition_elem(); void set_has_partition_spec(); void set_has_partition_bound_spec(); void set_has_partition_range_datum(); void set_has_partition_cmd(); void set_has_vacuum_relation(); void set_has_inline_code_block(); void set_has_call_context(); void set_has_integer(); void set_has_float_(); void set_has_string(); void set_has_bit_string(); void set_has_null(); void set_has_list(); void set_has_int_list(); void set_has_oid_list(); inline bool has_node() const; inline void clear_has_node(); template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; union NodeUnion { NodeUnion() {} ::pg_query::Alias* alias_; ::pg_query::RangeVar* range_var_; ::pg_query::TableFunc* table_func_; ::pg_query::Expr* expr_; ::pg_query::Var* var_; ::pg_query::Param* param_; ::pg_query::Aggref* aggref_; ::pg_query::GroupingFunc* grouping_func_; ::pg_query::WindowFunc* window_func_; ::pg_query::SubscriptingRef* subscripting_ref_; ::pg_query::FuncExpr* func_expr_; ::pg_query::NamedArgExpr* named_arg_expr_; ::pg_query::OpExpr* op_expr_; ::pg_query::DistinctExpr* distinct_expr_; ::pg_query::NullIfExpr* null_if_expr_; ::pg_query::ScalarArrayOpExpr* scalar_array_op_expr_; ::pg_query::BoolExpr* bool_expr_; ::pg_query::SubLink* sub_link_; ::pg_query::SubPlan* sub_plan_; ::pg_query::AlternativeSubPlan* alternative_sub_plan_; ::pg_query::FieldSelect* field_select_; ::pg_query::FieldStore* field_store_; ::pg_query::RelabelType* relabel_type_; ::pg_query::CoerceViaIO* coerce_via_io_; ::pg_query::ArrayCoerceExpr* array_coerce_expr_; ::pg_query::ConvertRowtypeExpr* convert_rowtype_expr_; ::pg_query::CollateExpr* collate_expr_; ::pg_query::CaseExpr* case_expr_; ::pg_query::CaseWhen* case_when_; ::pg_query::CaseTestExpr* case_test_expr_; ::pg_query::ArrayExpr* array_expr_; ::pg_query::RowExpr* row_expr_; ::pg_query::RowCompareExpr* row_compare_expr_; ::pg_query::CoalesceExpr* coalesce_expr_; ::pg_query::MinMaxExpr* min_max_expr_; ::pg_query::SQLValueFunction* sqlvalue_function_; ::pg_query::XmlExpr* xml_expr_; ::pg_query::NullTest* null_test_; ::pg_query::BooleanTest* boolean_test_; ::pg_query::CoerceToDomain* coerce_to_domain_; ::pg_query::CoerceToDomainValue* coerce_to_domain_value_; ::pg_query::SetToDefault* set_to_default_; ::pg_query::CurrentOfExpr* current_of_expr_; ::pg_query::NextValueExpr* next_value_expr_; ::pg_query::InferenceElem* inference_elem_; ::pg_query::TargetEntry* target_entry_; ::pg_query::RangeTblRef* range_tbl_ref_; ::pg_query::JoinExpr* join_expr_; ::pg_query::FromExpr* from_expr_; ::pg_query::OnConflictExpr* on_conflict_expr_; ::pg_query::IntoClause* into_clause_; ::pg_query::RawStmt* raw_stmt_; ::pg_query::Query* query_; ::pg_query::InsertStmt* insert_stmt_; ::pg_query::DeleteStmt* delete_stmt_; ::pg_query::UpdateStmt* update_stmt_; ::pg_query::SelectStmt* select_stmt_; ::pg_query::AlterTableStmt* alter_table_stmt_; ::pg_query::AlterTableCmd* alter_table_cmd_; ::pg_query::AlterDomainStmt* alter_domain_stmt_; ::pg_query::SetOperationStmt* set_operation_stmt_; ::pg_query::GrantStmt* grant_stmt_; ::pg_query::GrantRoleStmt* grant_role_stmt_; ::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt_; ::pg_query::ClosePortalStmt* close_portal_stmt_; ::pg_query::ClusterStmt* cluster_stmt_; ::pg_query::CopyStmt* copy_stmt_; ::pg_query::CreateStmt* create_stmt_; ::pg_query::DefineStmt* define_stmt_; ::pg_query::DropStmt* drop_stmt_; ::pg_query::TruncateStmt* truncate_stmt_; ::pg_query::CommentStmt* comment_stmt_; ::pg_query::FetchStmt* fetch_stmt_; ::pg_query::IndexStmt* index_stmt_; ::pg_query::CreateFunctionStmt* create_function_stmt_; ::pg_query::AlterFunctionStmt* alter_function_stmt_; ::pg_query::DoStmt* do_stmt_; ::pg_query::RenameStmt* rename_stmt_; ::pg_query::RuleStmt* rule_stmt_; ::pg_query::NotifyStmt* notify_stmt_; ::pg_query::ListenStmt* listen_stmt_; ::pg_query::UnlistenStmt* unlisten_stmt_; ::pg_query::TransactionStmt* transaction_stmt_; ::pg_query::ViewStmt* view_stmt_; ::pg_query::LoadStmt* load_stmt_; ::pg_query::CreateDomainStmt* create_domain_stmt_; ::pg_query::CreatedbStmt* createdb_stmt_; ::pg_query::DropdbStmt* dropdb_stmt_; ::pg_query::VacuumStmt* vacuum_stmt_; ::pg_query::ExplainStmt* explain_stmt_; ::pg_query::CreateTableAsStmt* create_table_as_stmt_; ::pg_query::CreateSeqStmt* create_seq_stmt_; ::pg_query::AlterSeqStmt* alter_seq_stmt_; ::pg_query::VariableSetStmt* variable_set_stmt_; ::pg_query::VariableShowStmt* variable_show_stmt_; ::pg_query::DiscardStmt* discard_stmt_; ::pg_query::CreateTrigStmt* create_trig_stmt_; ::pg_query::CreatePLangStmt* create_plang_stmt_; ::pg_query::CreateRoleStmt* create_role_stmt_; ::pg_query::AlterRoleStmt* alter_role_stmt_; ::pg_query::DropRoleStmt* drop_role_stmt_; ::pg_query::LockStmt* lock_stmt_; ::pg_query::ConstraintsSetStmt* constraints_set_stmt_; ::pg_query::ReindexStmt* reindex_stmt_; ::pg_query::CheckPointStmt* check_point_stmt_; ::pg_query::CreateSchemaStmt* create_schema_stmt_; ::pg_query::AlterDatabaseStmt* alter_database_stmt_; ::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt_; ::pg_query::AlterRoleSetStmt* alter_role_set_stmt_; ::pg_query::CreateConversionStmt* create_conversion_stmt_; ::pg_query::CreateCastStmt* create_cast_stmt_; ::pg_query::CreateOpClassStmt* create_op_class_stmt_; ::pg_query::CreateOpFamilyStmt* create_op_family_stmt_; ::pg_query::AlterOpFamilyStmt* alter_op_family_stmt_; ::pg_query::PrepareStmt* prepare_stmt_; ::pg_query::ExecuteStmt* execute_stmt_; ::pg_query::DeallocateStmt* deallocate_stmt_; ::pg_query::DeclareCursorStmt* declare_cursor_stmt_; ::pg_query::CreateTableSpaceStmt* create_table_space_stmt_; ::pg_query::DropTableSpaceStmt* drop_table_space_stmt_; ::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt_; ::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt_; ::pg_query::AlterOwnerStmt* alter_owner_stmt_; ::pg_query::AlterOperatorStmt* alter_operator_stmt_; ::pg_query::AlterTypeStmt* alter_type_stmt_; ::pg_query::DropOwnedStmt* drop_owned_stmt_; ::pg_query::ReassignOwnedStmt* reassign_owned_stmt_; ::pg_query::CompositeTypeStmt* composite_type_stmt_; ::pg_query::CreateEnumStmt* create_enum_stmt_; ::pg_query::CreateRangeStmt* create_range_stmt_; ::pg_query::AlterEnumStmt* alter_enum_stmt_; ::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt_; ::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt_; ::pg_query::CreateFdwStmt* create_fdw_stmt_; ::pg_query::AlterFdwStmt* alter_fdw_stmt_; ::pg_query::CreateForeignServerStmt* create_foreign_server_stmt_; ::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt_; ::pg_query::CreateUserMappingStmt* create_user_mapping_stmt_; ::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt_; ::pg_query::DropUserMappingStmt* drop_user_mapping_stmt_; ::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt_; ::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt_; ::pg_query::SecLabelStmt* sec_label_stmt_; ::pg_query::CreateForeignTableStmt* create_foreign_table_stmt_; ::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt_; ::pg_query::CreateExtensionStmt* create_extension_stmt_; ::pg_query::AlterExtensionStmt* alter_extension_stmt_; ::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt_; ::pg_query::CreateEventTrigStmt* create_event_trig_stmt_; ::pg_query::AlterEventTrigStmt* alter_event_trig_stmt_; ::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt_; ::pg_query::ReplicaIdentityStmt* replica_identity_stmt_; ::pg_query::AlterSystemStmt* alter_system_stmt_; ::pg_query::CreatePolicyStmt* create_policy_stmt_; ::pg_query::AlterPolicyStmt* alter_policy_stmt_; ::pg_query::CreateTransformStmt* create_transform_stmt_; ::pg_query::CreateAmStmt* create_am_stmt_; ::pg_query::CreatePublicationStmt* create_publication_stmt_; ::pg_query::AlterPublicationStmt* alter_publication_stmt_; ::pg_query::CreateSubscriptionStmt* create_subscription_stmt_; ::pg_query::AlterSubscriptionStmt* alter_subscription_stmt_; ::pg_query::DropSubscriptionStmt* drop_subscription_stmt_; ::pg_query::CreateStatsStmt* create_stats_stmt_; ::pg_query::AlterCollationStmt* alter_collation_stmt_; ::pg_query::CallStmt* call_stmt_; ::pg_query::AlterStatsStmt* alter_stats_stmt_; ::pg_query::A_Expr* a_expr_; ::pg_query::ColumnRef* column_ref_; ::pg_query::ParamRef* param_ref_; ::pg_query::A_Const* a_const_; ::pg_query::FuncCall* func_call_; ::pg_query::A_Star* a_star_; ::pg_query::A_Indices* a_indices_; ::pg_query::A_Indirection* a_indirection_; ::pg_query::A_ArrayExpr* a_array_expr_; ::pg_query::ResTarget* res_target_; ::pg_query::MultiAssignRef* multi_assign_ref_; ::pg_query::TypeCast* type_cast_; ::pg_query::CollateClause* collate_clause_; ::pg_query::SortBy* sort_by_; ::pg_query::WindowDef* window_def_; ::pg_query::RangeSubselect* range_subselect_; ::pg_query::RangeFunction* range_function_; ::pg_query::RangeTableSample* range_table_sample_; ::pg_query::RangeTableFunc* range_table_func_; ::pg_query::RangeTableFuncCol* range_table_func_col_; ::pg_query::TypeName* type_name_; ::pg_query::ColumnDef* column_def_; ::pg_query::IndexElem* index_elem_; ::pg_query::Constraint* constraint_; ::pg_query::DefElem* def_elem_; ::pg_query::RangeTblEntry* range_tbl_entry_; ::pg_query::RangeTblFunction* range_tbl_function_; ::pg_query::TableSampleClause* table_sample_clause_; ::pg_query::WithCheckOption* with_check_option_; ::pg_query::SortGroupClause* sort_group_clause_; ::pg_query::GroupingSet* grouping_set_; ::pg_query::WindowClause* window_clause_; ::pg_query::ObjectWithArgs* object_with_args_; ::pg_query::AccessPriv* access_priv_; ::pg_query::CreateOpClassItem* create_op_class_item_; ::pg_query::TableLikeClause* table_like_clause_; ::pg_query::FunctionParameter* function_parameter_; ::pg_query::LockingClause* locking_clause_; ::pg_query::RowMarkClause* row_mark_clause_; ::pg_query::XmlSerialize* xml_serialize_; ::pg_query::WithClause* with_clause_; ::pg_query::InferClause* infer_clause_; ::pg_query::OnConflictClause* on_conflict_clause_; ::pg_query::CommonTableExpr* common_table_expr_; ::pg_query::RoleSpec* role_spec_; ::pg_query::TriggerTransition* trigger_transition_; ::pg_query::PartitionElem* partition_elem_; ::pg_query::PartitionSpec* partition_spec_; ::pg_query::PartitionBoundSpec* partition_bound_spec_; ::pg_query::PartitionRangeDatum* partition_range_datum_; ::pg_query::PartitionCmd* partition_cmd_; ::pg_query::VacuumRelation* vacuum_relation_; ::pg_query::InlineCodeBlock* inline_code_block_; ::pg_query::CallContext* call_context_; ::pg_query::Integer* integer_; ::pg_query::Float* float__; ::pg_query::String* string_; ::pg_query::BitString* bit_string_; ::pg_query::Null* null_; ::pg_query::List* list_; ::pg_query::IntList* int_list_; ::pg_query::OidList* oid_list_; } node_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1]; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Integer PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Integer) */ { public: inline Integer() : Integer(nullptr) {} virtual ~Integer(); Integer(const Integer& from); Integer(Integer&& from) noexcept : Integer() { *this = ::std::move(from); } inline Integer& operator=(const Integer& from) { CopyFrom(from); return *this; } inline Integer& operator=(Integer&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Integer& default_instance(); static inline const Integer* internal_default_instance() { return reinterpret_cast( &_Integer_default_instance_); } static constexpr int kIndexInFileMessages = 3; friend void swap(Integer& a, Integer& b) { a.Swap(&b); } inline void Swap(Integer* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Integer* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Integer* New() const final { return CreateMaybeMessage(nullptr); } Integer* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Integer& from); void MergeFrom(const Integer& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Integer* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Integer"; } protected: explicit Integer(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kIvalFieldNumber = 1, }; // int32 ival = 1; void clear_ival(); ::PROTOBUF_NAMESPACE_ID::int32 ival() const; void set_ival(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_ival() const; void _internal_set_ival(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.Integer) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::int32 ival_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Float PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Float) */ { public: inline Float() : Float(nullptr) {} virtual ~Float(); Float(const Float& from); Float(Float&& from) noexcept : Float() { *this = ::std::move(from); } inline Float& operator=(const Float& from) { CopyFrom(from); return *this; } inline Float& operator=(Float&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Float& default_instance(); static inline const Float* internal_default_instance() { return reinterpret_cast( &_Float_default_instance_); } static constexpr int kIndexInFileMessages = 4; friend void swap(Float& a, Float& b) { a.Swap(&b); } inline void Swap(Float* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Float* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Float* New() const final { return CreateMaybeMessage(nullptr); } Float* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Float& from); void MergeFrom(const Float& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Float* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Float"; } protected: explicit Float(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kStrFieldNumber = 1, }; // string str = 1; void clear_str(); const std::string& str() const; void set_str(const std::string& value); void set_str(std::string&& value); void set_str(const char* value); void set_str(const char* value, size_t size); std::string* mutable_str(); std::string* release_str(); void set_allocated_str(std::string* str); private: const std::string& _internal_str() const; void _internal_set_str(const std::string& value); std::string* _internal_mutable_str(); public: // @@protoc_insertion_point(class_scope:pg_query.Float) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr str_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class String PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.String) */ { public: inline String() : String(nullptr) {} virtual ~String(); String(const String& from); String(String&& from) noexcept : String() { *this = ::std::move(from); } inline String& operator=(const String& from) { CopyFrom(from); return *this; } inline String& operator=(String&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const String& default_instance(); static inline const String* internal_default_instance() { return reinterpret_cast( &_String_default_instance_); } static constexpr int kIndexInFileMessages = 5; friend void swap(String& a, String& b) { a.Swap(&b); } inline void Swap(String* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(String* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline String* New() const final { return CreateMaybeMessage(nullptr); } String* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const String& from); void MergeFrom(const String& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(String* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.String"; } protected: explicit String(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kStrFieldNumber = 1, }; // string str = 1; void clear_str(); const std::string& str() const; void set_str(const std::string& value); void set_str(std::string&& value); void set_str(const char* value); void set_str(const char* value, size_t size); std::string* mutable_str(); std::string* release_str(); void set_allocated_str(std::string* str); private: const std::string& _internal_str() const; void _internal_set_str(const std::string& value); std::string* _internal_mutable_str(); public: // @@protoc_insertion_point(class_scope:pg_query.String) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr str_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class BitString PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.BitString) */ { public: inline BitString() : BitString(nullptr) {} virtual ~BitString(); BitString(const BitString& from); BitString(BitString&& from) noexcept : BitString() { *this = ::std::move(from); } inline BitString& operator=(const BitString& from) { CopyFrom(from); return *this; } inline BitString& operator=(BitString&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const BitString& default_instance(); static inline const BitString* internal_default_instance() { return reinterpret_cast( &_BitString_default_instance_); } static constexpr int kIndexInFileMessages = 6; friend void swap(BitString& a, BitString& b) { a.Swap(&b); } inline void Swap(BitString* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(BitString* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline BitString* New() const final { return CreateMaybeMessage(nullptr); } BitString* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const BitString& from); void MergeFrom(const BitString& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(BitString* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.BitString"; } protected: explicit BitString(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kStrFieldNumber = 1, }; // string str = 1; void clear_str(); const std::string& str() const; void set_str(const std::string& value); void set_str(std::string&& value); void set_str(const char* value); void set_str(const char* value, size_t size); std::string* mutable_str(); std::string* release_str(); void set_allocated_str(std::string* str); private: const std::string& _internal_str() const; void _internal_set_str(const std::string& value); std::string* _internal_mutable_str(); public: // @@protoc_insertion_point(class_scope:pg_query.BitString) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr str_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Null PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Null) */ { public: inline Null() : Null(nullptr) {} virtual ~Null(); Null(const Null& from); Null(Null&& from) noexcept : Null() { *this = ::std::move(from); } inline Null& operator=(const Null& from) { CopyFrom(from); return *this; } inline Null& operator=(Null&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Null& default_instance(); static inline const Null* internal_default_instance() { return reinterpret_cast( &_Null_default_instance_); } static constexpr int kIndexInFileMessages = 7; friend void swap(Null& a, Null& b) { a.Swap(&b); } inline void Swap(Null* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Null* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Null* New() const final { return CreateMaybeMessage(nullptr); } Null* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Null& from); void MergeFrom(const Null& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Null* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Null"; } protected: explicit Null(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // @@protoc_insertion_point(class_scope:pg_query.Null) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class List PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.List) */ { public: inline List() : List(nullptr) {} virtual ~List(); List(const List& from); List(List&& from) noexcept : List() { *this = ::std::move(from); } inline List& operator=(const List& from) { CopyFrom(from); return *this; } inline List& operator=(List&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const List& default_instance(); static inline const List* internal_default_instance() { return reinterpret_cast( &_List_default_instance_); } static constexpr int kIndexInFileMessages = 8; friend void swap(List& a, List& b) { a.Swap(&b); } inline void Swap(List* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(List* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline List* New() const final { return CreateMaybeMessage(nullptr); } List* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const List& from); void MergeFrom(const List& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(List* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.List"; } protected: explicit List(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kItemsFieldNumber = 1, }; // repeated .pg_query.Node items = 1; int items_size() const; private: int _internal_items_size() const; public: void clear_items(); ::pg_query::Node* mutable_items(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::pg_query::Node& _internal_items(int index) const; ::pg_query::Node* _internal_add_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& items() const; // @@protoc_insertion_point(class_scope:pg_query.List) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class OidList PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OidList) */ { public: inline OidList() : OidList(nullptr) {} virtual ~OidList(); OidList(const OidList& from); OidList(OidList&& from) noexcept : OidList() { *this = ::std::move(from); } inline OidList& operator=(const OidList& from) { CopyFrom(from); return *this; } inline OidList& operator=(OidList&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const OidList& default_instance(); static inline const OidList* internal_default_instance() { return reinterpret_cast( &_OidList_default_instance_); } static constexpr int kIndexInFileMessages = 9; friend void swap(OidList& a, OidList& b) { a.Swap(&b); } inline void Swap(OidList* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OidList* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline OidList* New() const final { return CreateMaybeMessage(nullptr); } OidList* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const OidList& from); void MergeFrom(const OidList& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(OidList* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.OidList"; } protected: explicit OidList(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kItemsFieldNumber = 1, }; // repeated .pg_query.Node items = 1; int items_size() const; private: int _internal_items_size() const; public: void clear_items(); ::pg_query::Node* mutable_items(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::pg_query::Node& _internal_items(int index) const; ::pg_query::Node* _internal_add_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& items() const; // @@protoc_insertion_point(class_scope:pg_query.OidList) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class IntList PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IntList) */ { public: inline IntList() : IntList(nullptr) {} virtual ~IntList(); IntList(const IntList& from); IntList(IntList&& from) noexcept : IntList() { *this = ::std::move(from); } inline IntList& operator=(const IntList& from) { CopyFrom(from); return *this; } inline IntList& operator=(IntList&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const IntList& default_instance(); static inline const IntList* internal_default_instance() { return reinterpret_cast( &_IntList_default_instance_); } static constexpr int kIndexInFileMessages = 10; friend void swap(IntList& a, IntList& b) { a.Swap(&b); } inline void Swap(IntList* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IntList* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline IntList* New() const final { return CreateMaybeMessage(nullptr); } IntList* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const IntList& from); void MergeFrom(const IntList& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(IntList* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.IntList"; } protected: explicit IntList(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kItemsFieldNumber = 1, }; // repeated .pg_query.Node items = 1; int items_size() const; private: int _internal_items_size() const; public: void clear_items(); ::pg_query::Node* mutable_items(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::pg_query::Node& _internal_items(int index) const; ::pg_query::Node* _internal_add_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& items() const; // @@protoc_insertion_point(class_scope:pg_query.IntList) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Bitmapset PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Bitmapset) */ { public: inline Bitmapset() : Bitmapset(nullptr) {} virtual ~Bitmapset(); Bitmapset(const Bitmapset& from); Bitmapset(Bitmapset&& from) noexcept : Bitmapset() { *this = ::std::move(from); } inline Bitmapset& operator=(const Bitmapset& from) { CopyFrom(from); return *this; } inline Bitmapset& operator=(Bitmapset&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Bitmapset& default_instance(); static inline const Bitmapset* internal_default_instance() { return reinterpret_cast( &_Bitmapset_default_instance_); } static constexpr int kIndexInFileMessages = 11; friend void swap(Bitmapset& a, Bitmapset& b) { a.Swap(&b); } inline void Swap(Bitmapset* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Bitmapset* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Bitmapset* New() const final { return CreateMaybeMessage(nullptr); } Bitmapset* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Bitmapset& from); void MergeFrom(const Bitmapset& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Bitmapset* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Bitmapset"; } protected: explicit Bitmapset(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kWordsFieldNumber = 1, }; // repeated uint64 words = 1; int words_size() const; private: int _internal_words_size() const; public: void clear_words(); private: ::PROTOBUF_NAMESPACE_ID::uint64 _internal_words(int index) const; const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >& _internal_words() const; void _internal_add_words(::PROTOBUF_NAMESPACE_ID::uint64 value); ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >* _internal_mutable_words(); public: ::PROTOBUF_NAMESPACE_ID::uint64 words(int index) const; void set_words(int index, ::PROTOBUF_NAMESPACE_ID::uint64 value); void add_words(::PROTOBUF_NAMESPACE_ID::uint64 value); const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >& words() const; ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >* mutable_words(); // @@protoc_insertion_point(class_scope:pg_query.Bitmapset) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 > words_; mutable std::atomic _words_cached_byte_size_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Alias PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Alias) */ { public: inline Alias() : Alias(nullptr) {} virtual ~Alias(); Alias(const Alias& from); Alias(Alias&& from) noexcept : Alias() { *this = ::std::move(from); } inline Alias& operator=(const Alias& from) { CopyFrom(from); return *this; } inline Alias& operator=(Alias&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Alias& default_instance(); static inline const Alias* internal_default_instance() { return reinterpret_cast( &_Alias_default_instance_); } static constexpr int kIndexInFileMessages = 12; friend void swap(Alias& a, Alias& b) { a.Swap(&b); } inline void Swap(Alias* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Alias* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Alias* New() const final { return CreateMaybeMessage(nullptr); } Alias* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Alias& from); void MergeFrom(const Alias& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Alias* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Alias"; } protected: explicit Alias(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kColnamesFieldNumber = 2, kAliasnameFieldNumber = 1, }; // repeated .pg_query.Node colnames = 2 [json_name = "colnames"]; int colnames_size() const; private: int _internal_colnames_size() const; public: void clear_colnames(); ::pg_query::Node* mutable_colnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colnames(); private: const ::pg_query::Node& _internal_colnames(int index) const; ::pg_query::Node* _internal_add_colnames(); public: const ::pg_query::Node& colnames(int index) const; ::pg_query::Node* add_colnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colnames() const; // string aliasname = 1 [json_name = "aliasname"]; void clear_aliasname(); const std::string& aliasname() const; void set_aliasname(const std::string& value); void set_aliasname(std::string&& value); void set_aliasname(const char* value); void set_aliasname(const char* value, size_t size); std::string* mutable_aliasname(); std::string* release_aliasname(); void set_allocated_aliasname(std::string* aliasname); private: const std::string& _internal_aliasname() const; void _internal_set_aliasname(const std::string& value); std::string* _internal_mutable_aliasname(); public: // @@protoc_insertion_point(class_scope:pg_query.Alias) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colnames_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr aliasname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeVar PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeVar) */ { public: inline RangeVar() : RangeVar(nullptr) {} virtual ~RangeVar(); RangeVar(const RangeVar& from); RangeVar(RangeVar&& from) noexcept : RangeVar() { *this = ::std::move(from); } inline RangeVar& operator=(const RangeVar& from) { CopyFrom(from); return *this; } inline RangeVar& operator=(RangeVar&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RangeVar& default_instance(); static inline const RangeVar* internal_default_instance() { return reinterpret_cast( &_RangeVar_default_instance_); } static constexpr int kIndexInFileMessages = 13; friend void swap(RangeVar& a, RangeVar& b) { a.Swap(&b); } inline void Swap(RangeVar* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeVar* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RangeVar* New() const final { return CreateMaybeMessage(nullptr); } RangeVar* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RangeVar& from); void MergeFrom(const RangeVar& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeVar* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeVar"; } protected: explicit RangeVar(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCatalognameFieldNumber = 1, kSchemanameFieldNumber = 2, kRelnameFieldNumber = 3, kRelpersistenceFieldNumber = 5, kAliasFieldNumber = 6, kInhFieldNumber = 4, kLocationFieldNumber = 7, }; // string catalogname = 1 [json_name = "catalogname"]; void clear_catalogname(); const std::string& catalogname() const; void set_catalogname(const std::string& value); void set_catalogname(std::string&& value); void set_catalogname(const char* value); void set_catalogname(const char* value, size_t size); std::string* mutable_catalogname(); std::string* release_catalogname(); void set_allocated_catalogname(std::string* catalogname); private: const std::string& _internal_catalogname() const; void _internal_set_catalogname(const std::string& value); std::string* _internal_mutable_catalogname(); public: // string schemaname = 2 [json_name = "schemaname"]; void clear_schemaname(); const std::string& schemaname() const; void set_schemaname(const std::string& value); void set_schemaname(std::string&& value); void set_schemaname(const char* value); void set_schemaname(const char* value, size_t size); std::string* mutable_schemaname(); std::string* release_schemaname(); void set_allocated_schemaname(std::string* schemaname); private: const std::string& _internal_schemaname() const; void _internal_set_schemaname(const std::string& value); std::string* _internal_mutable_schemaname(); public: // string relname = 3 [json_name = "relname"]; void clear_relname(); const std::string& relname() const; void set_relname(const std::string& value); void set_relname(std::string&& value); void set_relname(const char* value); void set_relname(const char* value, size_t size); std::string* mutable_relname(); std::string* release_relname(); void set_allocated_relname(std::string* relname); private: const std::string& _internal_relname() const; void _internal_set_relname(const std::string& value); std::string* _internal_mutable_relname(); public: // string relpersistence = 5 [json_name = "relpersistence"]; void clear_relpersistence(); const std::string& relpersistence() const; void set_relpersistence(const std::string& value); void set_relpersistence(std::string&& value); void set_relpersistence(const char* value); void set_relpersistence(const char* value, size_t size); std::string* mutable_relpersistence(); std::string* release_relpersistence(); void set_allocated_relpersistence(std::string* relpersistence); private: const std::string& _internal_relpersistence() const; void _internal_set_relpersistence(const std::string& value); std::string* _internal_mutable_relpersistence(); public: // .pg_query.Alias alias = 6 [json_name = "alias"]; bool has_alias() const; private: bool _internal_has_alias() const; public: void clear_alias(); const ::pg_query::Alias& alias() const; ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // bool inh = 4 [json_name = "inh"]; void clear_inh(); bool inh() const; void set_inh(bool value); private: bool _internal_inh() const; void _internal_set_inh(bool value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeVar) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr catalogname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr schemaname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relpersistence_; ::pg_query::Alias* alias_; bool inh_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TableFunc PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TableFunc) */ { public: inline TableFunc() : TableFunc(nullptr) {} virtual ~TableFunc(); TableFunc(const TableFunc& from); TableFunc(TableFunc&& from) noexcept : TableFunc() { *this = ::std::move(from); } inline TableFunc& operator=(const TableFunc& from) { CopyFrom(from); return *this; } inline TableFunc& operator=(TableFunc&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const TableFunc& default_instance(); static inline const TableFunc* internal_default_instance() { return reinterpret_cast( &_TableFunc_default_instance_); } static constexpr int kIndexInFileMessages = 14; friend void swap(TableFunc& a, TableFunc& b) { a.Swap(&b); } inline void Swap(TableFunc* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TableFunc* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline TableFunc* New() const final { return CreateMaybeMessage(nullptr); } TableFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const TableFunc& from); void MergeFrom(const TableFunc& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TableFunc* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TableFunc"; } protected: explicit TableFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNsUrisFieldNumber = 1, kNsNamesFieldNumber = 2, kColnamesFieldNumber = 5, kColtypesFieldNumber = 6, kColtypmodsFieldNumber = 7, kColcollationsFieldNumber = 8, kColexprsFieldNumber = 9, kColdefexprsFieldNumber = 10, kDocexprFieldNumber = 3, kRowexprFieldNumber = 4, kOrdinalitycolFieldNumber = 11, kLocationFieldNumber = 12, }; // repeated .pg_query.Node ns_uris = 1 [json_name = "ns_uris"]; int ns_uris_size() const; private: int _internal_ns_uris_size() const; public: void clear_ns_uris(); ::pg_query::Node* mutable_ns_uris(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ns_uris(); private: const ::pg_query::Node& _internal_ns_uris(int index) const; ::pg_query::Node* _internal_add_ns_uris(); public: const ::pg_query::Node& ns_uris(int index) const; ::pg_query::Node* add_ns_uris(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ns_uris() const; // repeated .pg_query.Node ns_names = 2 [json_name = "ns_names"]; int ns_names_size() const; private: int _internal_ns_names_size() const; public: void clear_ns_names(); ::pg_query::Node* mutable_ns_names(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ns_names(); private: const ::pg_query::Node& _internal_ns_names(int index) const; ::pg_query::Node* _internal_add_ns_names(); public: const ::pg_query::Node& ns_names(int index) const; ::pg_query::Node* add_ns_names(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ns_names() const; // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; int colnames_size() const; private: int _internal_colnames_size() const; public: void clear_colnames(); ::pg_query::Node* mutable_colnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colnames(); private: const ::pg_query::Node& _internal_colnames(int index) const; ::pg_query::Node* _internal_add_colnames(); public: const ::pg_query::Node& colnames(int index) const; ::pg_query::Node* add_colnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colnames() const; // repeated .pg_query.Node coltypes = 6 [json_name = "coltypes"]; int coltypes_size() const; private: int _internal_coltypes_size() const; public: void clear_coltypes(); ::pg_query::Node* mutable_coltypes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coltypes(); private: const ::pg_query::Node& _internal_coltypes(int index) const; ::pg_query::Node* _internal_add_coltypes(); public: const ::pg_query::Node& coltypes(int index) const; ::pg_query::Node* add_coltypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coltypes() const; // repeated .pg_query.Node coltypmods = 7 [json_name = "coltypmods"]; int coltypmods_size() const; private: int _internal_coltypmods_size() const; public: void clear_coltypmods(); ::pg_query::Node* mutable_coltypmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coltypmods(); private: const ::pg_query::Node& _internal_coltypmods(int index) const; ::pg_query::Node* _internal_add_coltypmods(); public: const ::pg_query::Node& coltypmods(int index) const; ::pg_query::Node* add_coltypmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coltypmods() const; // repeated .pg_query.Node colcollations = 8 [json_name = "colcollations"]; int colcollations_size() const; private: int _internal_colcollations_size() const; public: void clear_colcollations(); ::pg_query::Node* mutable_colcollations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colcollations(); private: const ::pg_query::Node& _internal_colcollations(int index) const; ::pg_query::Node* _internal_add_colcollations(); public: const ::pg_query::Node& colcollations(int index) const; ::pg_query::Node* add_colcollations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colcollations() const; // repeated .pg_query.Node colexprs = 9 [json_name = "colexprs"]; int colexprs_size() const; private: int _internal_colexprs_size() const; public: void clear_colexprs(); ::pg_query::Node* mutable_colexprs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colexprs(); private: const ::pg_query::Node& _internal_colexprs(int index) const; ::pg_query::Node* _internal_add_colexprs(); public: const ::pg_query::Node& colexprs(int index) const; ::pg_query::Node* add_colexprs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colexprs() const; // repeated .pg_query.Node coldefexprs = 10 [json_name = "coldefexprs"]; int coldefexprs_size() const; private: int _internal_coldefexprs_size() const; public: void clear_coldefexprs(); ::pg_query::Node* mutable_coldefexprs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coldefexprs(); private: const ::pg_query::Node& _internal_coldefexprs(int index) const; ::pg_query::Node* _internal_add_coldefexprs(); public: const ::pg_query::Node& coldefexprs(int index) const; ::pg_query::Node* add_coldefexprs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coldefexprs() const; // .pg_query.Node docexpr = 3 [json_name = "docexpr"]; bool has_docexpr() const; private: bool _internal_has_docexpr() const; public: void clear_docexpr(); const ::pg_query::Node& docexpr() const; ::pg_query::Node* release_docexpr(); ::pg_query::Node* mutable_docexpr(); void set_allocated_docexpr(::pg_query::Node* docexpr); private: const ::pg_query::Node& _internal_docexpr() const; ::pg_query::Node* _internal_mutable_docexpr(); public: void unsafe_arena_set_allocated_docexpr( ::pg_query::Node* docexpr); ::pg_query::Node* unsafe_arena_release_docexpr(); // .pg_query.Node rowexpr = 4 [json_name = "rowexpr"]; bool has_rowexpr() const; private: bool _internal_has_rowexpr() const; public: void clear_rowexpr(); const ::pg_query::Node& rowexpr() const; ::pg_query::Node* release_rowexpr(); ::pg_query::Node* mutable_rowexpr(); void set_allocated_rowexpr(::pg_query::Node* rowexpr); private: const ::pg_query::Node& _internal_rowexpr() const; ::pg_query::Node* _internal_mutable_rowexpr(); public: void unsafe_arena_set_allocated_rowexpr( ::pg_query::Node* rowexpr); ::pg_query::Node* unsafe_arena_release_rowexpr(); // int32 ordinalitycol = 11 [json_name = "ordinalitycol"]; void clear_ordinalitycol(); ::PROTOBUF_NAMESPACE_ID::int32 ordinalitycol() const; void set_ordinalitycol(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_ordinalitycol() const; void _internal_set_ordinalitycol(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 location = 12 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.TableFunc) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ns_uris_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ns_names_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypes_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colcollations_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colexprs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coldefexprs_; ::pg_query::Node* docexpr_; ::pg_query::Node* rowexpr_; ::PROTOBUF_NAMESPACE_ID::int32 ordinalitycol_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Expr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Expr) */ { public: inline Expr() : Expr(nullptr) {} virtual ~Expr(); Expr(const Expr& from); Expr(Expr&& from) noexcept : Expr() { *this = ::std::move(from); } inline Expr& operator=(const Expr& from) { CopyFrom(from); return *this; } inline Expr& operator=(Expr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Expr& default_instance(); static inline const Expr* internal_default_instance() { return reinterpret_cast( &_Expr_default_instance_); } static constexpr int kIndexInFileMessages = 15; friend void swap(Expr& a, Expr& b) { a.Swap(&b); } inline void Swap(Expr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Expr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Expr* New() const final { return CreateMaybeMessage(nullptr); } Expr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Expr& from); void MergeFrom(const Expr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Expr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Expr"; } protected: explicit Expr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // @@protoc_insertion_point(class_scope:pg_query.Expr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Var PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Var) */ { public: inline Var() : Var(nullptr) {} virtual ~Var(); Var(const Var& from); Var(Var&& from) noexcept : Var() { *this = ::std::move(from); } inline Var& operator=(const Var& from) { CopyFrom(from); return *this; } inline Var& operator=(Var&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Var& default_instance(); static inline const Var* internal_default_instance() { return reinterpret_cast( &_Var_default_instance_); } static constexpr int kIndexInFileMessages = 16; friend void swap(Var& a, Var& b) { a.Swap(&b); } inline void Swap(Var* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Var* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Var* New() const final { return CreateMaybeMessage(nullptr); } Var* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Var& from); void MergeFrom(const Var& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Var* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Var"; } protected: explicit Var(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kVarnoFieldNumber = 2, kVarattnoFieldNumber = 3, kVartypeFieldNumber = 4, kVartypmodFieldNumber = 5, kVarcollidFieldNumber = 6, kVarlevelsupFieldNumber = 7, kVarnosynFieldNumber = 8, kVarattnosynFieldNumber = 9, kLocationFieldNumber = 10, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 varno = 2 [json_name = "varno"]; void clear_varno(); ::PROTOBUF_NAMESPACE_ID::uint32 varno() const; void set_varno(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_varno() const; void _internal_set_varno(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 varattno = 3 [json_name = "varattno"]; void clear_varattno(); ::PROTOBUF_NAMESPACE_ID::int32 varattno() const; void set_varattno(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_varattno() const; void _internal_set_varattno(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 vartype = 4 [json_name = "vartype"]; void clear_vartype(); ::PROTOBUF_NAMESPACE_ID::uint32 vartype() const; void set_vartype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_vartype() const; void _internal_set_vartype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 vartypmod = 5 [json_name = "vartypmod"]; void clear_vartypmod(); ::PROTOBUF_NAMESPACE_ID::int32 vartypmod() const; void set_vartypmod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_vartypmod() const; void _internal_set_vartypmod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 varcollid = 6 [json_name = "varcollid"]; void clear_varcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 varcollid() const; void set_varcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_varcollid() const; void _internal_set_varcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 varlevelsup = 7 [json_name = "varlevelsup"]; void clear_varlevelsup(); ::PROTOBUF_NAMESPACE_ID::uint32 varlevelsup() const; void set_varlevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_varlevelsup() const; void _internal_set_varlevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 varnosyn = 8 [json_name = "varnosyn"]; void clear_varnosyn(); ::PROTOBUF_NAMESPACE_ID::uint32 varnosyn() const; void set_varnosyn(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_varnosyn() const; void _internal_set_varnosyn(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 varattnosyn = 9 [json_name = "varattnosyn"]; void clear_varattnosyn(); ::PROTOBUF_NAMESPACE_ID::int32 varattnosyn() const; void set_varattnosyn(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_varattnosyn() const; void _internal_set_varattnosyn(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 location = 10 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.Var) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 varno_; ::PROTOBUF_NAMESPACE_ID::int32 varattno_; ::PROTOBUF_NAMESPACE_ID::uint32 vartype_; ::PROTOBUF_NAMESPACE_ID::int32 vartypmod_; ::PROTOBUF_NAMESPACE_ID::uint32 varcollid_; ::PROTOBUF_NAMESPACE_ID::uint32 varlevelsup_; ::PROTOBUF_NAMESPACE_ID::uint32 varnosyn_; ::PROTOBUF_NAMESPACE_ID::int32 varattnosyn_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Param PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Param) */ { public: inline Param() : Param(nullptr) {} virtual ~Param(); Param(const Param& from); Param(Param&& from) noexcept : Param() { *this = ::std::move(from); } inline Param& operator=(const Param& from) { CopyFrom(from); return *this; } inline Param& operator=(Param&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Param& default_instance(); static inline const Param* internal_default_instance() { return reinterpret_cast( &_Param_default_instance_); } static constexpr int kIndexInFileMessages = 17; friend void swap(Param& a, Param& b) { a.Swap(&b); } inline void Swap(Param* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Param* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Param* New() const final { return CreateMaybeMessage(nullptr); } Param* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Param& from); void MergeFrom(const Param& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Param* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Param"; } protected: explicit Param(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kParamkindFieldNumber = 2, kParamidFieldNumber = 3, kParamtypeFieldNumber = 4, kParamtypmodFieldNumber = 5, kParamcollidFieldNumber = 6, kLocationFieldNumber = 7, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; void clear_paramkind(); ::pg_query::ParamKind paramkind() const; void set_paramkind(::pg_query::ParamKind value); private: ::pg_query::ParamKind _internal_paramkind() const; void _internal_set_paramkind(::pg_query::ParamKind value); public: // int32 paramid = 3 [json_name = "paramid"]; void clear_paramid(); ::PROTOBUF_NAMESPACE_ID::int32 paramid() const; void set_paramid(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_paramid() const; void _internal_set_paramid(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 paramtype = 4 [json_name = "paramtype"]; void clear_paramtype(); ::PROTOBUF_NAMESPACE_ID::uint32 paramtype() const; void set_paramtype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_paramtype() const; void _internal_set_paramtype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 paramtypmod = 5 [json_name = "paramtypmod"]; void clear_paramtypmod(); ::PROTOBUF_NAMESPACE_ID::int32 paramtypmod() const; void set_paramtypmod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_paramtypmod() const; void _internal_set_paramtypmod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 paramcollid = 6 [json_name = "paramcollid"]; void clear_paramcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 paramcollid() const; void set_paramcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_paramcollid() const; void _internal_set_paramcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.Param) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; int paramkind_; ::PROTOBUF_NAMESPACE_ID::int32 paramid_; ::PROTOBUF_NAMESPACE_ID::uint32 paramtype_; ::PROTOBUF_NAMESPACE_ID::int32 paramtypmod_; ::PROTOBUF_NAMESPACE_ID::uint32 paramcollid_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Aggref PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Aggref) */ { public: inline Aggref() : Aggref(nullptr) {} virtual ~Aggref(); Aggref(const Aggref& from); Aggref(Aggref&& from) noexcept : Aggref() { *this = ::std::move(from); } inline Aggref& operator=(const Aggref& from) { CopyFrom(from); return *this; } inline Aggref& operator=(Aggref&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Aggref& default_instance(); static inline const Aggref* internal_default_instance() { return reinterpret_cast( &_Aggref_default_instance_); } static constexpr int kIndexInFileMessages = 18; friend void swap(Aggref& a, Aggref& b) { a.Swap(&b); } inline void Swap(Aggref* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Aggref* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Aggref* New() const final { return CreateMaybeMessage(nullptr); } Aggref* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Aggref& from); void MergeFrom(const Aggref& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Aggref* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Aggref"; } protected: explicit Aggref(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAggargtypesFieldNumber = 7, kAggdirectargsFieldNumber = 8, kArgsFieldNumber = 9, kAggorderFieldNumber = 10, kAggdistinctFieldNumber = 11, kAggkindFieldNumber = 15, kXprFieldNumber = 1, kAggfilterFieldNumber = 12, kAggfnoidFieldNumber = 2, kAggtypeFieldNumber = 3, kAggcollidFieldNumber = 4, kInputcollidFieldNumber = 5, kAggtranstypeFieldNumber = 6, kAggstarFieldNumber = 13, kAggvariadicFieldNumber = 14, kAgglevelsupFieldNumber = 16, kAggsplitFieldNumber = 17, kLocationFieldNumber = 18, }; // repeated .pg_query.Node aggargtypes = 7 [json_name = "aggargtypes"]; int aggargtypes_size() const; private: int _internal_aggargtypes_size() const; public: void clear_aggargtypes(); ::pg_query::Node* mutable_aggargtypes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aggargtypes(); private: const ::pg_query::Node& _internal_aggargtypes(int index) const; ::pg_query::Node* _internal_add_aggargtypes(); public: const ::pg_query::Node& aggargtypes(int index) const; ::pg_query::Node* add_aggargtypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aggargtypes() const; // repeated .pg_query.Node aggdirectargs = 8 [json_name = "aggdirectargs"]; int aggdirectargs_size() const; private: int _internal_aggdirectargs_size() const; public: void clear_aggdirectargs(); ::pg_query::Node* mutable_aggdirectargs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aggdirectargs(); private: const ::pg_query::Node& _internal_aggdirectargs(int index) const; ::pg_query::Node* _internal_add_aggdirectargs(); public: const ::pg_query::Node& aggdirectargs(int index) const; ::pg_query::Node* add_aggdirectargs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aggdirectargs() const; // repeated .pg_query.Node args = 9 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node aggorder = 10 [json_name = "aggorder"]; int aggorder_size() const; private: int _internal_aggorder_size() const; public: void clear_aggorder(); ::pg_query::Node* mutable_aggorder(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aggorder(); private: const ::pg_query::Node& _internal_aggorder(int index) const; ::pg_query::Node* _internal_add_aggorder(); public: const ::pg_query::Node& aggorder(int index) const; ::pg_query::Node* add_aggorder(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aggorder() const; // repeated .pg_query.Node aggdistinct = 11 [json_name = "aggdistinct"]; int aggdistinct_size() const; private: int _internal_aggdistinct_size() const; public: void clear_aggdistinct(); ::pg_query::Node* mutable_aggdistinct(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aggdistinct(); private: const ::pg_query::Node& _internal_aggdistinct(int index) const; ::pg_query::Node* _internal_add_aggdistinct(); public: const ::pg_query::Node& aggdistinct(int index) const; ::pg_query::Node* add_aggdistinct(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aggdistinct() const; // string aggkind = 15 [json_name = "aggkind"]; void clear_aggkind(); const std::string& aggkind() const; void set_aggkind(const std::string& value); void set_aggkind(std::string&& value); void set_aggkind(const char* value); void set_aggkind(const char* value, size_t size); std::string* mutable_aggkind(); std::string* release_aggkind(); void set_allocated_aggkind(std::string* aggkind); private: const std::string& _internal_aggkind() const; void _internal_set_aggkind(const std::string& value); std::string* _internal_mutable_aggkind(); public: // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node aggfilter = 12 [json_name = "aggfilter"]; bool has_aggfilter() const; private: bool _internal_has_aggfilter() const; public: void clear_aggfilter(); const ::pg_query::Node& aggfilter() const; ::pg_query::Node* release_aggfilter(); ::pg_query::Node* mutable_aggfilter(); void set_allocated_aggfilter(::pg_query::Node* aggfilter); private: const ::pg_query::Node& _internal_aggfilter() const; ::pg_query::Node* _internal_mutable_aggfilter(); public: void unsafe_arena_set_allocated_aggfilter( ::pg_query::Node* aggfilter); ::pg_query::Node* unsafe_arena_release_aggfilter(); // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; void clear_aggfnoid(); ::PROTOBUF_NAMESPACE_ID::uint32 aggfnoid() const; void set_aggfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_aggfnoid() const; void _internal_set_aggfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 aggtype = 3 [json_name = "aggtype"]; void clear_aggtype(); ::PROTOBUF_NAMESPACE_ID::uint32 aggtype() const; void set_aggtype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_aggtype() const; void _internal_set_aggtype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 aggcollid = 4 [json_name = "aggcollid"]; void clear_aggcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 aggcollid() const; void set_aggcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_aggcollid() const; void _internal_set_aggcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 inputcollid = 5 [json_name = "inputcollid"]; void clear_inputcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 aggtranstype = 6 [json_name = "aggtranstype"]; void clear_aggtranstype(); ::PROTOBUF_NAMESPACE_ID::uint32 aggtranstype() const; void set_aggtranstype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_aggtranstype() const; void _internal_set_aggtranstype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool aggstar = 13 [json_name = "aggstar"]; void clear_aggstar(); bool aggstar() const; void set_aggstar(bool value); private: bool _internal_aggstar() const; void _internal_set_aggstar(bool value); public: // bool aggvariadic = 14 [json_name = "aggvariadic"]; void clear_aggvariadic(); bool aggvariadic() const; void set_aggvariadic(bool value); private: bool _internal_aggvariadic() const; void _internal_set_aggvariadic(bool value); public: // uint32 agglevelsup = 16 [json_name = "agglevelsup"]; void clear_agglevelsup(); ::PROTOBUF_NAMESPACE_ID::uint32 agglevelsup() const; void set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_agglevelsup() const; void _internal_set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // .pg_query.AggSplit aggsplit = 17 [json_name = "aggsplit"]; void clear_aggsplit(); ::pg_query::AggSplit aggsplit() const; void set_aggsplit(::pg_query::AggSplit value); private: ::pg_query::AggSplit _internal_aggsplit() const; void _internal_set_aggsplit(::pg_query::AggSplit value); public: // int32 location = 18 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.Aggref) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggargtypes_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggdirectargs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggorder_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aggdistinct_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr aggkind_; ::pg_query::Node* xpr_; ::pg_query::Node* aggfilter_; ::PROTOBUF_NAMESPACE_ID::uint32 aggfnoid_; ::PROTOBUF_NAMESPACE_ID::uint32 aggtype_; ::PROTOBUF_NAMESPACE_ID::uint32 aggcollid_; ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; ::PROTOBUF_NAMESPACE_ID::uint32 aggtranstype_; bool aggstar_; bool aggvariadic_; ::PROTOBUF_NAMESPACE_ID::uint32 agglevelsup_; int aggsplit_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class GroupingFunc PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GroupingFunc) */ { public: inline GroupingFunc() : GroupingFunc(nullptr) {} virtual ~GroupingFunc(); GroupingFunc(const GroupingFunc& from); GroupingFunc(GroupingFunc&& from) noexcept : GroupingFunc() { *this = ::std::move(from); } inline GroupingFunc& operator=(const GroupingFunc& from) { CopyFrom(from); return *this; } inline GroupingFunc& operator=(GroupingFunc&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const GroupingFunc& default_instance(); static inline const GroupingFunc* internal_default_instance() { return reinterpret_cast( &_GroupingFunc_default_instance_); } static constexpr int kIndexInFileMessages = 19; friend void swap(GroupingFunc& a, GroupingFunc& b) { a.Swap(&b); } inline void Swap(GroupingFunc* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GroupingFunc* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline GroupingFunc* New() const final { return CreateMaybeMessage(nullptr); } GroupingFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const GroupingFunc& from); void MergeFrom(const GroupingFunc& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(GroupingFunc* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.GroupingFunc"; } protected: explicit GroupingFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 2, kRefsFieldNumber = 3, kColsFieldNumber = 4, kXprFieldNumber = 1, kAgglevelsupFieldNumber = 5, kLocationFieldNumber = 6, }; // repeated .pg_query.Node args = 2 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node refs = 3 [json_name = "refs"]; int refs_size() const; private: int _internal_refs_size() const; public: void clear_refs(); ::pg_query::Node* mutable_refs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_refs(); private: const ::pg_query::Node& _internal_refs(int index) const; ::pg_query::Node* _internal_add_refs(); public: const ::pg_query::Node& refs(int index) const; ::pg_query::Node* add_refs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& refs() const; // repeated .pg_query.Node cols = 4 [json_name = "cols"]; int cols_size() const; private: int _internal_cols_size() const; public: void clear_cols(); ::pg_query::Node* mutable_cols(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cols(); private: const ::pg_query::Node& _internal_cols(int index) const; ::pg_query::Node* _internal_add_cols(); public: const ::pg_query::Node& cols(int index) const; ::pg_query::Node* add_cols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cols() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 agglevelsup = 5 [json_name = "agglevelsup"]; void clear_agglevelsup(); ::PROTOBUF_NAMESPACE_ID::uint32 agglevelsup() const; void set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_agglevelsup() const; void _internal_set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 6 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.GroupingFunc) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > refs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cols_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 agglevelsup_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class WindowFunc PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowFunc) */ { public: inline WindowFunc() : WindowFunc(nullptr) {} virtual ~WindowFunc(); WindowFunc(const WindowFunc& from); WindowFunc(WindowFunc&& from) noexcept : WindowFunc() { *this = ::std::move(from); } inline WindowFunc& operator=(const WindowFunc& from) { CopyFrom(from); return *this; } inline WindowFunc& operator=(WindowFunc&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const WindowFunc& default_instance(); static inline const WindowFunc* internal_default_instance() { return reinterpret_cast( &_WindowFunc_default_instance_); } static constexpr int kIndexInFileMessages = 20; friend void swap(WindowFunc& a, WindowFunc& b) { a.Swap(&b); } inline void Swap(WindowFunc* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WindowFunc* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline WindowFunc* New() const final { return CreateMaybeMessage(nullptr); } WindowFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const WindowFunc& from); void MergeFrom(const WindowFunc& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(WindowFunc* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.WindowFunc"; } protected: explicit WindowFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 6, kXprFieldNumber = 1, kAggfilterFieldNumber = 7, kWinfnoidFieldNumber = 2, kWintypeFieldNumber = 3, kWincollidFieldNumber = 4, kInputcollidFieldNumber = 5, kWinrefFieldNumber = 8, kWinstarFieldNumber = 9, kWinaggFieldNumber = 10, kLocationFieldNumber = 11, }; // repeated .pg_query.Node args = 6 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; bool has_aggfilter() const; private: bool _internal_has_aggfilter() const; public: void clear_aggfilter(); const ::pg_query::Node& aggfilter() const; ::pg_query::Node* release_aggfilter(); ::pg_query::Node* mutable_aggfilter(); void set_allocated_aggfilter(::pg_query::Node* aggfilter); private: const ::pg_query::Node& _internal_aggfilter() const; ::pg_query::Node* _internal_mutable_aggfilter(); public: void unsafe_arena_set_allocated_aggfilter( ::pg_query::Node* aggfilter); ::pg_query::Node* unsafe_arena_release_aggfilter(); // uint32 winfnoid = 2 [json_name = "winfnoid"]; void clear_winfnoid(); ::PROTOBUF_NAMESPACE_ID::uint32 winfnoid() const; void set_winfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_winfnoid() const; void _internal_set_winfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 wintype = 3 [json_name = "wintype"]; void clear_wintype(); ::PROTOBUF_NAMESPACE_ID::uint32 wintype() const; void set_wintype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_wintype() const; void _internal_set_wintype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 wincollid = 4 [json_name = "wincollid"]; void clear_wincollid(); ::PROTOBUF_NAMESPACE_ID::uint32 wincollid() const; void set_wincollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_wincollid() const; void _internal_set_wincollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 inputcollid = 5 [json_name = "inputcollid"]; void clear_inputcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 winref = 8 [json_name = "winref"]; void clear_winref(); ::PROTOBUF_NAMESPACE_ID::uint32 winref() const; void set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_winref() const; void _internal_set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool winstar = 9 [json_name = "winstar"]; void clear_winstar(); bool winstar() const; void set_winstar(bool value); private: bool _internal_winstar() const; void _internal_set_winstar(bool value); public: // bool winagg = 10 [json_name = "winagg"]; void clear_winagg(); bool winagg() const; void set_winagg(bool value); private: bool _internal_winagg() const; void _internal_set_winagg(bool value); public: // int32 location = 11 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.WindowFunc) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::pg_query::Node* aggfilter_; ::PROTOBUF_NAMESPACE_ID::uint32 winfnoid_; ::PROTOBUF_NAMESPACE_ID::uint32 wintype_; ::PROTOBUF_NAMESPACE_ID::uint32 wincollid_; ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; ::PROTOBUF_NAMESPACE_ID::uint32 winref_; bool winstar_; bool winagg_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SubscriptingRef PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SubscriptingRef) */ { public: inline SubscriptingRef() : SubscriptingRef(nullptr) {} virtual ~SubscriptingRef(); SubscriptingRef(const SubscriptingRef& from); SubscriptingRef(SubscriptingRef&& from) noexcept : SubscriptingRef() { *this = ::std::move(from); } inline SubscriptingRef& operator=(const SubscriptingRef& from) { CopyFrom(from); return *this; } inline SubscriptingRef& operator=(SubscriptingRef&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const SubscriptingRef& default_instance(); static inline const SubscriptingRef* internal_default_instance() { return reinterpret_cast( &_SubscriptingRef_default_instance_); } static constexpr int kIndexInFileMessages = 21; friend void swap(SubscriptingRef& a, SubscriptingRef& b) { a.Swap(&b); } inline void Swap(SubscriptingRef* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SubscriptingRef* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline SubscriptingRef* New() const final { return CreateMaybeMessage(nullptr); } SubscriptingRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const SubscriptingRef& from); void MergeFrom(const SubscriptingRef& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SubscriptingRef* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SubscriptingRef"; } protected: explicit SubscriptingRef(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRefupperindexprFieldNumber = 6, kReflowerindexprFieldNumber = 7, kXprFieldNumber = 1, kRefexprFieldNumber = 8, kRefassgnexprFieldNumber = 9, kRefcontainertypeFieldNumber = 2, kRefelemtypeFieldNumber = 3, kReftypmodFieldNumber = 4, kRefcollidFieldNumber = 5, }; // repeated .pg_query.Node refupperindexpr = 6 [json_name = "refupperindexpr"]; int refupperindexpr_size() const; private: int _internal_refupperindexpr_size() const; public: void clear_refupperindexpr(); ::pg_query::Node* mutable_refupperindexpr(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_refupperindexpr(); private: const ::pg_query::Node& _internal_refupperindexpr(int index) const; ::pg_query::Node* _internal_add_refupperindexpr(); public: const ::pg_query::Node& refupperindexpr(int index) const; ::pg_query::Node* add_refupperindexpr(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& refupperindexpr() const; // repeated .pg_query.Node reflowerindexpr = 7 [json_name = "reflowerindexpr"]; int reflowerindexpr_size() const; private: int _internal_reflowerindexpr_size() const; public: void clear_reflowerindexpr(); ::pg_query::Node* mutable_reflowerindexpr(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_reflowerindexpr(); private: const ::pg_query::Node& _internal_reflowerindexpr(int index) const; ::pg_query::Node* _internal_add_reflowerindexpr(); public: const ::pg_query::Node& reflowerindexpr(int index) const; ::pg_query::Node* add_reflowerindexpr(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& reflowerindexpr() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node refexpr = 8 [json_name = "refexpr"]; bool has_refexpr() const; private: bool _internal_has_refexpr() const; public: void clear_refexpr(); const ::pg_query::Node& refexpr() const; ::pg_query::Node* release_refexpr(); ::pg_query::Node* mutable_refexpr(); void set_allocated_refexpr(::pg_query::Node* refexpr); private: const ::pg_query::Node& _internal_refexpr() const; ::pg_query::Node* _internal_mutable_refexpr(); public: void unsafe_arena_set_allocated_refexpr( ::pg_query::Node* refexpr); ::pg_query::Node* unsafe_arena_release_refexpr(); // .pg_query.Node refassgnexpr = 9 [json_name = "refassgnexpr"]; bool has_refassgnexpr() const; private: bool _internal_has_refassgnexpr() const; public: void clear_refassgnexpr(); const ::pg_query::Node& refassgnexpr() const; ::pg_query::Node* release_refassgnexpr(); ::pg_query::Node* mutable_refassgnexpr(); void set_allocated_refassgnexpr(::pg_query::Node* refassgnexpr); private: const ::pg_query::Node& _internal_refassgnexpr() const; ::pg_query::Node* _internal_mutable_refassgnexpr(); public: void unsafe_arena_set_allocated_refassgnexpr( ::pg_query::Node* refassgnexpr); ::pg_query::Node* unsafe_arena_release_refassgnexpr(); // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; void clear_refcontainertype(); ::PROTOBUF_NAMESPACE_ID::uint32 refcontainertype() const; void set_refcontainertype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_refcontainertype() const; void _internal_set_refcontainertype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 refelemtype = 3 [json_name = "refelemtype"]; void clear_refelemtype(); ::PROTOBUF_NAMESPACE_ID::uint32 refelemtype() const; void set_refelemtype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_refelemtype() const; void _internal_set_refelemtype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 reftypmod = 4 [json_name = "reftypmod"]; void clear_reftypmod(); ::PROTOBUF_NAMESPACE_ID::int32 reftypmod() const; void set_reftypmod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_reftypmod() const; void _internal_set_reftypmod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 refcollid = 5 [json_name = "refcollid"]; void clear_refcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 refcollid() const; void set_refcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_refcollid() const; void _internal_set_refcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.SubscriptingRef) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > refupperindexpr_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > reflowerindexpr_; ::pg_query::Node* xpr_; ::pg_query::Node* refexpr_; ::pg_query::Node* refassgnexpr_; ::PROTOBUF_NAMESPACE_ID::uint32 refcontainertype_; ::PROTOBUF_NAMESPACE_ID::uint32 refelemtype_; ::PROTOBUF_NAMESPACE_ID::int32 reftypmod_; ::PROTOBUF_NAMESPACE_ID::uint32 refcollid_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FuncExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FuncExpr) */ { public: inline FuncExpr() : FuncExpr(nullptr) {} virtual ~FuncExpr(); FuncExpr(const FuncExpr& from); FuncExpr(FuncExpr&& from) noexcept : FuncExpr() { *this = ::std::move(from); } inline FuncExpr& operator=(const FuncExpr& from) { CopyFrom(from); return *this; } inline FuncExpr& operator=(FuncExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const FuncExpr& default_instance(); static inline const FuncExpr* internal_default_instance() { return reinterpret_cast( &_FuncExpr_default_instance_); } static constexpr int kIndexInFileMessages = 22; friend void swap(FuncExpr& a, FuncExpr& b) { a.Swap(&b); } inline void Swap(FuncExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FuncExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline FuncExpr* New() const final { return CreateMaybeMessage(nullptr); } FuncExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const FuncExpr& from); void MergeFrom(const FuncExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FuncExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FuncExpr"; } protected: explicit FuncExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 9, kXprFieldNumber = 1, kFuncidFieldNumber = 2, kFuncresulttypeFieldNumber = 3, kFuncretsetFieldNumber = 4, kFuncvariadicFieldNumber = 5, kFuncformatFieldNumber = 6, kFunccollidFieldNumber = 7, kInputcollidFieldNumber = 8, kLocationFieldNumber = 10, }; // repeated .pg_query.Node args = 9 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 funcid = 2 [json_name = "funcid"]; void clear_funcid(); ::PROTOBUF_NAMESPACE_ID::uint32 funcid() const; void set_funcid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_funcid() const; void _internal_set_funcid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; void clear_funcresulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 funcresulttype() const; void set_funcresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_funcresulttype() const; void _internal_set_funcresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool funcretset = 4 [json_name = "funcretset"]; void clear_funcretset(); bool funcretset() const; void set_funcretset(bool value); private: bool _internal_funcretset() const; void _internal_set_funcretset(bool value); public: // bool funcvariadic = 5 [json_name = "funcvariadic"]; void clear_funcvariadic(); bool funcvariadic() const; void set_funcvariadic(bool value); private: bool _internal_funcvariadic() const; void _internal_set_funcvariadic(bool value); public: // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; void clear_funcformat(); ::pg_query::CoercionForm funcformat() const; void set_funcformat(::pg_query::CoercionForm value); private: ::pg_query::CoercionForm _internal_funcformat() const; void _internal_set_funcformat(::pg_query::CoercionForm value); public: // uint32 funccollid = 7 [json_name = "funccollid"]; void clear_funccollid(); ::PROTOBUF_NAMESPACE_ID::uint32 funccollid() const; void set_funccollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_funccollid() const; void _internal_set_funccollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 inputcollid = 8 [json_name = "inputcollid"]; void clear_inputcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 10 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.FuncExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 funcid_; ::PROTOBUF_NAMESPACE_ID::uint32 funcresulttype_; bool funcretset_; bool funcvariadic_; int funcformat_; ::PROTOBUF_NAMESPACE_ID::uint32 funccollid_; ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class NamedArgExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NamedArgExpr) */ { public: inline NamedArgExpr() : NamedArgExpr(nullptr) {} virtual ~NamedArgExpr(); NamedArgExpr(const NamedArgExpr& from); NamedArgExpr(NamedArgExpr&& from) noexcept : NamedArgExpr() { *this = ::std::move(from); } inline NamedArgExpr& operator=(const NamedArgExpr& from) { CopyFrom(from); return *this; } inline NamedArgExpr& operator=(NamedArgExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const NamedArgExpr& default_instance(); static inline const NamedArgExpr* internal_default_instance() { return reinterpret_cast( &_NamedArgExpr_default_instance_); } static constexpr int kIndexInFileMessages = 23; friend void swap(NamedArgExpr& a, NamedArgExpr& b) { a.Swap(&b); } inline void Swap(NamedArgExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NamedArgExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline NamedArgExpr* New() const final { return CreateMaybeMessage(nullptr); } NamedArgExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const NamedArgExpr& from); void MergeFrom(const NamedArgExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(NamedArgExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.NamedArgExpr"; } protected: explicit NamedArgExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 3, kXprFieldNumber = 1, kArgFieldNumber = 2, kArgnumberFieldNumber = 4, kLocationFieldNumber = 5, }; // string name = 3 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // int32 argnumber = 4 [json_name = "argnumber"]; void clear_argnumber(); ::PROTOBUF_NAMESPACE_ID::int32 argnumber() const; void set_argnumber(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_argnumber() const; void _internal_set_argnumber(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.NamedArgExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::PROTOBUF_NAMESPACE_ID::int32 argnumber_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class OpExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OpExpr) */ { public: inline OpExpr() : OpExpr(nullptr) {} virtual ~OpExpr(); OpExpr(const OpExpr& from); OpExpr(OpExpr&& from) noexcept : OpExpr() { *this = ::std::move(from); } inline OpExpr& operator=(const OpExpr& from) { CopyFrom(from); return *this; } inline OpExpr& operator=(OpExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const OpExpr& default_instance(); static inline const OpExpr* internal_default_instance() { return reinterpret_cast( &_OpExpr_default_instance_); } static constexpr int kIndexInFileMessages = 24; friend void swap(OpExpr& a, OpExpr& b) { a.Swap(&b); } inline void Swap(OpExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OpExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline OpExpr* New() const final { return CreateMaybeMessage(nullptr); } OpExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const OpExpr& from); void MergeFrom(const OpExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(OpExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.OpExpr"; } protected: explicit OpExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 8, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpfuncidFieldNumber = 3, kOpresulttypeFieldNumber = 4, kOpretsetFieldNumber = 5, kOpcollidFieldNumber = 6, kInputcollidFieldNumber = 7, kLocationFieldNumber = 9, }; // repeated .pg_query.Node args = 8 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 opno = 2 [json_name = "opno"]; void clear_opno(); ::PROTOBUF_NAMESPACE_ID::uint32 opno() const; void set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opno() const; void _internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 opfuncid = 3 [json_name = "opfuncid"]; void clear_opfuncid(); ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid() const; void set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opfuncid() const; void _internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 opresulttype = 4 [json_name = "opresulttype"]; void clear_opresulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype() const; void set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opresulttype() const; void _internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool opretset = 5 [json_name = "opretset"]; void clear_opretset(); bool opretset() const; void set_opretset(bool value); private: bool _internal_opretset() const; void _internal_set_opretset(bool value); public: // uint32 opcollid = 6 [json_name = "opcollid"]; void clear_opcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 opcollid() const; void set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opcollid() const; void _internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 inputcollid = 7 [json_name = "inputcollid"]; void clear_inputcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 9 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.OpExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 opno_; ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid_; ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype_; bool opretset_; ::PROTOBUF_NAMESPACE_ID::uint32 opcollid_; ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DistinctExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DistinctExpr) */ { public: inline DistinctExpr() : DistinctExpr(nullptr) {} virtual ~DistinctExpr(); DistinctExpr(const DistinctExpr& from); DistinctExpr(DistinctExpr&& from) noexcept : DistinctExpr() { *this = ::std::move(from); } inline DistinctExpr& operator=(const DistinctExpr& from) { CopyFrom(from); return *this; } inline DistinctExpr& operator=(DistinctExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DistinctExpr& default_instance(); static inline const DistinctExpr* internal_default_instance() { return reinterpret_cast( &_DistinctExpr_default_instance_); } static constexpr int kIndexInFileMessages = 25; friend void swap(DistinctExpr& a, DistinctExpr& b) { a.Swap(&b); } inline void Swap(DistinctExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DistinctExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DistinctExpr* New() const final { return CreateMaybeMessage(nullptr); } DistinctExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DistinctExpr& from); void MergeFrom(const DistinctExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DistinctExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DistinctExpr"; } protected: explicit DistinctExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 8, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpfuncidFieldNumber = 3, kOpresulttypeFieldNumber = 4, kOpretsetFieldNumber = 5, kOpcollidFieldNumber = 6, kInputcollidFieldNumber = 7, kLocationFieldNumber = 9, }; // repeated .pg_query.Node args = 8 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 opno = 2 [json_name = "opno"]; void clear_opno(); ::PROTOBUF_NAMESPACE_ID::uint32 opno() const; void set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opno() const; void _internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 opfuncid = 3 [json_name = "opfuncid"]; void clear_opfuncid(); ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid() const; void set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opfuncid() const; void _internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 opresulttype = 4 [json_name = "opresulttype"]; void clear_opresulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype() const; void set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opresulttype() const; void _internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool opretset = 5 [json_name = "opretset"]; void clear_opretset(); bool opretset() const; void set_opretset(bool value); private: bool _internal_opretset() const; void _internal_set_opretset(bool value); public: // uint32 opcollid = 6 [json_name = "opcollid"]; void clear_opcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 opcollid() const; void set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opcollid() const; void _internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 inputcollid = 7 [json_name = "inputcollid"]; void clear_inputcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 9 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.DistinctExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 opno_; ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid_; ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype_; bool opretset_; ::PROTOBUF_NAMESPACE_ID::uint32 opcollid_; ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class NullIfExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NullIfExpr) */ { public: inline NullIfExpr() : NullIfExpr(nullptr) {} virtual ~NullIfExpr(); NullIfExpr(const NullIfExpr& from); NullIfExpr(NullIfExpr&& from) noexcept : NullIfExpr() { *this = ::std::move(from); } inline NullIfExpr& operator=(const NullIfExpr& from) { CopyFrom(from); return *this; } inline NullIfExpr& operator=(NullIfExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const NullIfExpr& default_instance(); static inline const NullIfExpr* internal_default_instance() { return reinterpret_cast( &_NullIfExpr_default_instance_); } static constexpr int kIndexInFileMessages = 26; friend void swap(NullIfExpr& a, NullIfExpr& b) { a.Swap(&b); } inline void Swap(NullIfExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NullIfExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline NullIfExpr* New() const final { return CreateMaybeMessage(nullptr); } NullIfExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const NullIfExpr& from); void MergeFrom(const NullIfExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(NullIfExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.NullIfExpr"; } protected: explicit NullIfExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 8, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpfuncidFieldNumber = 3, kOpresulttypeFieldNumber = 4, kOpretsetFieldNumber = 5, kOpcollidFieldNumber = 6, kInputcollidFieldNumber = 7, kLocationFieldNumber = 9, }; // repeated .pg_query.Node args = 8 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 opno = 2 [json_name = "opno"]; void clear_opno(); ::PROTOBUF_NAMESPACE_ID::uint32 opno() const; void set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opno() const; void _internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 opfuncid = 3 [json_name = "opfuncid"]; void clear_opfuncid(); ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid() const; void set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opfuncid() const; void _internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 opresulttype = 4 [json_name = "opresulttype"]; void clear_opresulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype() const; void set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opresulttype() const; void _internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool opretset = 5 [json_name = "opretset"]; void clear_opretset(); bool opretset() const; void set_opretset(bool value); private: bool _internal_opretset() const; void _internal_set_opretset(bool value); public: // uint32 opcollid = 6 [json_name = "opcollid"]; void clear_opcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 opcollid() const; void set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opcollid() const; void _internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 inputcollid = 7 [json_name = "inputcollid"]; void clear_inputcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 9 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.NullIfExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 opno_; ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid_; ::PROTOBUF_NAMESPACE_ID::uint32 opresulttype_; bool opretset_; ::PROTOBUF_NAMESPACE_ID::uint32 opcollid_; ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ScalarArrayOpExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ScalarArrayOpExpr) */ { public: inline ScalarArrayOpExpr() : ScalarArrayOpExpr(nullptr) {} virtual ~ScalarArrayOpExpr(); ScalarArrayOpExpr(const ScalarArrayOpExpr& from); ScalarArrayOpExpr(ScalarArrayOpExpr&& from) noexcept : ScalarArrayOpExpr() { *this = ::std::move(from); } inline ScalarArrayOpExpr& operator=(const ScalarArrayOpExpr& from) { CopyFrom(from); return *this; } inline ScalarArrayOpExpr& operator=(ScalarArrayOpExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ScalarArrayOpExpr& default_instance(); static inline const ScalarArrayOpExpr* internal_default_instance() { return reinterpret_cast( &_ScalarArrayOpExpr_default_instance_); } static constexpr int kIndexInFileMessages = 27; friend void swap(ScalarArrayOpExpr& a, ScalarArrayOpExpr& b) { a.Swap(&b); } inline void Swap(ScalarArrayOpExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ScalarArrayOpExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ScalarArrayOpExpr* New() const final { return CreateMaybeMessage(nullptr); } ScalarArrayOpExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ScalarArrayOpExpr& from); void MergeFrom(const ScalarArrayOpExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ScalarArrayOpExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ScalarArrayOpExpr"; } protected: explicit ScalarArrayOpExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 6, kXprFieldNumber = 1, kOpnoFieldNumber = 2, kOpfuncidFieldNumber = 3, kUseOrFieldNumber = 4, kInputcollidFieldNumber = 5, kLocationFieldNumber = 7, }; // repeated .pg_query.Node args = 6 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 opno = 2 [json_name = "opno"]; void clear_opno(); ::PROTOBUF_NAMESPACE_ID::uint32 opno() const; void set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opno() const; void _internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 opfuncid = 3 [json_name = "opfuncid"]; void clear_opfuncid(); ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid() const; void set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_opfuncid() const; void _internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool use_or = 4 [json_name = "useOr"]; void clear_use_or(); bool use_or() const; void set_use_or(bool value); private: bool _internal_use_or() const; void _internal_set_use_or(bool value); public: // uint32 inputcollid = 5 [json_name = "inputcollid"]; void clear_inputcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ScalarArrayOpExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 opno_; ::PROTOBUF_NAMESPACE_ID::uint32 opfuncid_; bool use_or_; ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class BoolExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.BoolExpr) */ { public: inline BoolExpr() : BoolExpr(nullptr) {} virtual ~BoolExpr(); BoolExpr(const BoolExpr& from); BoolExpr(BoolExpr&& from) noexcept : BoolExpr() { *this = ::std::move(from); } inline BoolExpr& operator=(const BoolExpr& from) { CopyFrom(from); return *this; } inline BoolExpr& operator=(BoolExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const BoolExpr& default_instance(); static inline const BoolExpr* internal_default_instance() { return reinterpret_cast( &_BoolExpr_default_instance_); } static constexpr int kIndexInFileMessages = 28; friend void swap(BoolExpr& a, BoolExpr& b) { a.Swap(&b); } inline void Swap(BoolExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(BoolExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline BoolExpr* New() const final { return CreateMaybeMessage(nullptr); } BoolExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const BoolExpr& from); void MergeFrom(const BoolExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(BoolExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.BoolExpr"; } protected: explicit BoolExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 3, kXprFieldNumber = 1, kBoolopFieldNumber = 2, kLocationFieldNumber = 4, }; // repeated .pg_query.Node args = 3 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; void clear_boolop(); ::pg_query::BoolExprType boolop() const; void set_boolop(::pg_query::BoolExprType value); private: ::pg_query::BoolExprType _internal_boolop() const; void _internal_set_boolop(::pg_query::BoolExprType value); public: // int32 location = 4 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.BoolExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; int boolop_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SubLink PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SubLink) */ { public: inline SubLink() : SubLink(nullptr) {} virtual ~SubLink(); SubLink(const SubLink& from); SubLink(SubLink&& from) noexcept : SubLink() { *this = ::std::move(from); } inline SubLink& operator=(const SubLink& from) { CopyFrom(from); return *this; } inline SubLink& operator=(SubLink&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const SubLink& default_instance(); static inline const SubLink* internal_default_instance() { return reinterpret_cast( &_SubLink_default_instance_); } static constexpr int kIndexInFileMessages = 29; friend void swap(SubLink& a, SubLink& b) { a.Swap(&b); } inline void Swap(SubLink* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SubLink* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline SubLink* New() const final { return CreateMaybeMessage(nullptr); } SubLink* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const SubLink& from); void MergeFrom(const SubLink& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SubLink* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SubLink"; } protected: explicit SubLink(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOperNameFieldNumber = 5, kXprFieldNumber = 1, kTestexprFieldNumber = 4, kSubselectFieldNumber = 6, kSubLinkTypeFieldNumber = 2, kSubLinkIdFieldNumber = 3, kLocationFieldNumber = 7, }; // repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; int oper_name_size() const; private: int _internal_oper_name_size() const; public: void clear_oper_name(); ::pg_query::Node* mutable_oper_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_oper_name(); private: const ::pg_query::Node& _internal_oper_name(int index) const; ::pg_query::Node* _internal_add_oper_name(); public: const ::pg_query::Node& oper_name(int index) const; ::pg_query::Node* add_oper_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& oper_name() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; bool has_testexpr() const; private: bool _internal_has_testexpr() const; public: void clear_testexpr(); const ::pg_query::Node& testexpr() const; ::pg_query::Node* release_testexpr(); ::pg_query::Node* mutable_testexpr(); void set_allocated_testexpr(::pg_query::Node* testexpr); private: const ::pg_query::Node& _internal_testexpr() const; ::pg_query::Node* _internal_mutable_testexpr(); public: void unsafe_arena_set_allocated_testexpr( ::pg_query::Node* testexpr); ::pg_query::Node* unsafe_arena_release_testexpr(); // .pg_query.Node subselect = 6 [json_name = "subselect"]; bool has_subselect() const; private: bool _internal_has_subselect() const; public: void clear_subselect(); const ::pg_query::Node& subselect() const; ::pg_query::Node* release_subselect(); ::pg_query::Node* mutable_subselect(); void set_allocated_subselect(::pg_query::Node* subselect); private: const ::pg_query::Node& _internal_subselect() const; ::pg_query::Node* _internal_mutable_subselect(); public: void unsafe_arena_set_allocated_subselect( ::pg_query::Node* subselect); ::pg_query::Node* unsafe_arena_release_subselect(); // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; void clear_sub_link_type(); ::pg_query::SubLinkType sub_link_type() const; void set_sub_link_type(::pg_query::SubLinkType value); private: ::pg_query::SubLinkType _internal_sub_link_type() const; void _internal_set_sub_link_type(::pg_query::SubLinkType value); public: // int32 sub_link_id = 3 [json_name = "subLinkId"]; void clear_sub_link_id(); ::PROTOBUF_NAMESPACE_ID::int32 sub_link_id() const; void set_sub_link_id(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_sub_link_id() const; void _internal_set_sub_link_id(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.SubLink) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > oper_name_; ::pg_query::Node* xpr_; ::pg_query::Node* testexpr_; ::pg_query::Node* subselect_; int sub_link_type_; ::PROTOBUF_NAMESPACE_ID::int32 sub_link_id_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SubPlan PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SubPlan) */ { public: inline SubPlan() : SubPlan(nullptr) {} virtual ~SubPlan(); SubPlan(const SubPlan& from); SubPlan(SubPlan&& from) noexcept : SubPlan() { *this = ::std::move(from); } inline SubPlan& operator=(const SubPlan& from) { CopyFrom(from); return *this; } inline SubPlan& operator=(SubPlan&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const SubPlan& default_instance(); static inline const SubPlan* internal_default_instance() { return reinterpret_cast( &_SubPlan_default_instance_); } static constexpr int kIndexInFileMessages = 30; friend void swap(SubPlan& a, SubPlan& b) { a.Swap(&b); } inline void Swap(SubPlan* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SubPlan* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline SubPlan* New() const final { return CreateMaybeMessage(nullptr); } SubPlan* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const SubPlan& from); void MergeFrom(const SubPlan& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SubPlan* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SubPlan"; } protected: explicit SubPlan(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kParamIdsFieldNumber = 4, kSetParamFieldNumber = 13, kParParamFieldNumber = 14, kArgsFieldNumber = 15, kPlanNameFieldNumber = 6, kXprFieldNumber = 1, kTestexprFieldNumber = 3, kSubLinkTypeFieldNumber = 2, kPlanIdFieldNumber = 5, kFirstColTypeFieldNumber = 7, kFirstColTypmodFieldNumber = 8, kFirstColCollationFieldNumber = 9, kUseHashTableFieldNumber = 10, kUnknownEqFalseFieldNumber = 11, kParallelSafeFieldNumber = 12, kStartupCostFieldNumber = 16, kPerCallCostFieldNumber = 17, }; // repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; int param_ids_size() const; private: int _internal_param_ids_size() const; public: void clear_param_ids(); ::pg_query::Node* mutable_param_ids(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_param_ids(); private: const ::pg_query::Node& _internal_param_ids(int index) const; ::pg_query::Node* _internal_add_param_ids(); public: const ::pg_query::Node& param_ids(int index) const; ::pg_query::Node* add_param_ids(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& param_ids() const; // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; int set_param_size() const; private: int _internal_set_param_size() const; public: void clear_set_param(); ::pg_query::Node* mutable_set_param(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_set_param(); private: const ::pg_query::Node& _internal_set_param(int index) const; ::pg_query::Node* _internal_add_set_param(); public: const ::pg_query::Node& set_param(int index) const; ::pg_query::Node* add_set_param(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& set_param() const; // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; int par_param_size() const; private: int _internal_par_param_size() const; public: void clear_par_param(); ::pg_query::Node* mutable_par_param(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_par_param(); private: const ::pg_query::Node& _internal_par_param(int index) const; ::pg_query::Node* _internal_add_par_param(); public: const ::pg_query::Node& par_param(int index) const; ::pg_query::Node* add_par_param(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& par_param() const; // repeated .pg_query.Node args = 15 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // string plan_name = 6 [json_name = "plan_name"]; void clear_plan_name(); const std::string& plan_name() const; void set_plan_name(const std::string& value); void set_plan_name(std::string&& value); void set_plan_name(const char* value); void set_plan_name(const char* value, size_t size); std::string* mutable_plan_name(); std::string* release_plan_name(); void set_allocated_plan_name(std::string* plan_name); private: const std::string& _internal_plan_name() const; void _internal_set_plan_name(const std::string& value); std::string* _internal_mutable_plan_name(); public: // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; bool has_testexpr() const; private: bool _internal_has_testexpr() const; public: void clear_testexpr(); const ::pg_query::Node& testexpr() const; ::pg_query::Node* release_testexpr(); ::pg_query::Node* mutable_testexpr(); void set_allocated_testexpr(::pg_query::Node* testexpr); private: const ::pg_query::Node& _internal_testexpr() const; ::pg_query::Node* _internal_mutable_testexpr(); public: void unsafe_arena_set_allocated_testexpr( ::pg_query::Node* testexpr); ::pg_query::Node* unsafe_arena_release_testexpr(); // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; void clear_sub_link_type(); ::pg_query::SubLinkType sub_link_type() const; void set_sub_link_type(::pg_query::SubLinkType value); private: ::pg_query::SubLinkType _internal_sub_link_type() const; void _internal_set_sub_link_type(::pg_query::SubLinkType value); public: // int32 plan_id = 5 [json_name = "plan_id"]; void clear_plan_id(); ::PROTOBUF_NAMESPACE_ID::int32 plan_id() const; void set_plan_id(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_plan_id() const; void _internal_set_plan_id(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 first_col_type = 7 [json_name = "firstColType"]; void clear_first_col_type(); ::PROTOBUF_NAMESPACE_ID::uint32 first_col_type() const; void set_first_col_type(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_first_col_type() const; void _internal_set_first_col_type(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; void clear_first_col_typmod(); ::PROTOBUF_NAMESPACE_ID::int32 first_col_typmod() const; void set_first_col_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_first_col_typmod() const; void _internal_set_first_col_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; void clear_first_col_collation(); ::PROTOBUF_NAMESPACE_ID::uint32 first_col_collation() const; void set_first_col_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_first_col_collation() const; void _internal_set_first_col_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool use_hash_table = 10 [json_name = "useHashTable"]; void clear_use_hash_table(); bool use_hash_table() const; void set_use_hash_table(bool value); private: bool _internal_use_hash_table() const; void _internal_set_use_hash_table(bool value); public: // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; void clear_unknown_eq_false(); bool unknown_eq_false() const; void set_unknown_eq_false(bool value); private: bool _internal_unknown_eq_false() const; void _internal_set_unknown_eq_false(bool value); public: // bool parallel_safe = 12 [json_name = "parallel_safe"]; void clear_parallel_safe(); bool parallel_safe() const; void set_parallel_safe(bool value); private: bool _internal_parallel_safe() const; void _internal_set_parallel_safe(bool value); public: // double startup_cost = 16 [json_name = "startup_cost"]; void clear_startup_cost(); double startup_cost() const; void set_startup_cost(double value); private: double _internal_startup_cost() const; void _internal_set_startup_cost(double value); public: // double per_call_cost = 17 [json_name = "per_call_cost"]; void clear_per_call_cost(); double per_call_cost() const; void set_per_call_cost(double value); private: double _internal_per_call_cost() const; void _internal_set_per_call_cost(double value); public: // @@protoc_insertion_point(class_scope:pg_query.SubPlan) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > param_ids_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > set_param_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > par_param_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr plan_name_; ::pg_query::Node* xpr_; ::pg_query::Node* testexpr_; int sub_link_type_; ::PROTOBUF_NAMESPACE_ID::int32 plan_id_; ::PROTOBUF_NAMESPACE_ID::uint32 first_col_type_; ::PROTOBUF_NAMESPACE_ID::int32 first_col_typmod_; ::PROTOBUF_NAMESPACE_ID::uint32 first_col_collation_; bool use_hash_table_; bool unknown_eq_false_; bool parallel_safe_; double startup_cost_; double per_call_cost_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlternativeSubPlan PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlternativeSubPlan) */ { public: inline AlternativeSubPlan() : AlternativeSubPlan(nullptr) {} virtual ~AlternativeSubPlan(); AlternativeSubPlan(const AlternativeSubPlan& from); AlternativeSubPlan(AlternativeSubPlan&& from) noexcept : AlternativeSubPlan() { *this = ::std::move(from); } inline AlternativeSubPlan& operator=(const AlternativeSubPlan& from) { CopyFrom(from); return *this; } inline AlternativeSubPlan& operator=(AlternativeSubPlan&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlternativeSubPlan& default_instance(); static inline const AlternativeSubPlan* internal_default_instance() { return reinterpret_cast( &_AlternativeSubPlan_default_instance_); } static constexpr int kIndexInFileMessages = 31; friend void swap(AlternativeSubPlan& a, AlternativeSubPlan& b) { a.Swap(&b); } inline void Swap(AlternativeSubPlan* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlternativeSubPlan* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlternativeSubPlan* New() const final { return CreateMaybeMessage(nullptr); } AlternativeSubPlan* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlternativeSubPlan& from); void MergeFrom(const AlternativeSubPlan& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlternativeSubPlan* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlternativeSubPlan"; } protected: explicit AlternativeSubPlan(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSubplansFieldNumber = 2, kXprFieldNumber = 1, }; // repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; int subplans_size() const; private: int _internal_subplans_size() const; public: void clear_subplans(); ::pg_query::Node* mutable_subplans(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_subplans(); private: const ::pg_query::Node& _internal_subplans(int index) const; ::pg_query::Node* _internal_add_subplans(); public: const ::pg_query::Node& subplans(int index) const; ::pg_query::Node* add_subplans(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& subplans() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // @@protoc_insertion_point(class_scope:pg_query.AlternativeSubPlan) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > subplans_; ::pg_query::Node* xpr_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FieldSelect PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FieldSelect) */ { public: inline FieldSelect() : FieldSelect(nullptr) {} virtual ~FieldSelect(); FieldSelect(const FieldSelect& from); FieldSelect(FieldSelect&& from) noexcept : FieldSelect() { *this = ::std::move(from); } inline FieldSelect& operator=(const FieldSelect& from) { CopyFrom(from); return *this; } inline FieldSelect& operator=(FieldSelect&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const FieldSelect& default_instance(); static inline const FieldSelect* internal_default_instance() { return reinterpret_cast( &_FieldSelect_default_instance_); } static constexpr int kIndexInFileMessages = 32; friend void swap(FieldSelect& a, FieldSelect& b) { a.Swap(&b); } inline void Swap(FieldSelect* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FieldSelect* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline FieldSelect* New() const final { return CreateMaybeMessage(nullptr); } FieldSelect* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const FieldSelect& from); void MergeFrom(const FieldSelect& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FieldSelect* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FieldSelect"; } protected: explicit FieldSelect(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kArgFieldNumber = 2, kFieldnumFieldNumber = 3, kResulttypeFieldNumber = 4, kResulttypmodFieldNumber = 5, kResultcollidFieldNumber = 6, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // int32 fieldnum = 3 [json_name = "fieldnum"]; void clear_fieldnum(); ::PROTOBUF_NAMESPACE_ID::int32 fieldnum() const; void set_fieldnum(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_fieldnum() const; void _internal_set_fieldnum(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 resulttype = 4 [json_name = "resulttype"]; void clear_resulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 resulttypmod = 5 [json_name = "resulttypmod"]; void clear_resulttypmod(); ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod() const; void set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_resulttypmod() const; void _internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 resultcollid = 6 [json_name = "resultcollid"]; void clear_resultcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid() const; void set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resultcollid() const; void _internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.FieldSelect) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::PROTOBUF_NAMESPACE_ID::int32 fieldnum_; ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod_; ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FieldStore PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FieldStore) */ { public: inline FieldStore() : FieldStore(nullptr) {} virtual ~FieldStore(); FieldStore(const FieldStore& from); FieldStore(FieldStore&& from) noexcept : FieldStore() { *this = ::std::move(from); } inline FieldStore& operator=(const FieldStore& from) { CopyFrom(from); return *this; } inline FieldStore& operator=(FieldStore&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const FieldStore& default_instance(); static inline const FieldStore* internal_default_instance() { return reinterpret_cast( &_FieldStore_default_instance_); } static constexpr int kIndexInFileMessages = 33; friend void swap(FieldStore& a, FieldStore& b) { a.Swap(&b); } inline void Swap(FieldStore* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FieldStore* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline FieldStore* New() const final { return CreateMaybeMessage(nullptr); } FieldStore* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const FieldStore& from); void MergeFrom(const FieldStore& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FieldStore* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FieldStore"; } protected: explicit FieldStore(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNewvalsFieldNumber = 3, kFieldnumsFieldNumber = 4, kXprFieldNumber = 1, kArgFieldNumber = 2, kResulttypeFieldNumber = 5, }; // repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; int newvals_size() const; private: int _internal_newvals_size() const; public: void clear_newvals(); ::pg_query::Node* mutable_newvals(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_newvals(); private: const ::pg_query::Node& _internal_newvals(int index) const; ::pg_query::Node* _internal_add_newvals(); public: const ::pg_query::Node& newvals(int index) const; ::pg_query::Node* add_newvals(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& newvals() const; // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; int fieldnums_size() const; private: int _internal_fieldnums_size() const; public: void clear_fieldnums(); ::pg_query::Node* mutable_fieldnums(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fieldnums(); private: const ::pg_query::Node& _internal_fieldnums(int index) const; ::pg_query::Node* _internal_add_fieldnums(); public: const ::pg_query::Node& fieldnums(int index) const; ::pg_query::Node* add_fieldnums(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fieldnums() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 resulttype = 5 [json_name = "resulttype"]; void clear_resulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.FieldStore) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > newvals_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fieldnums_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RelabelType PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RelabelType) */ { public: inline RelabelType() : RelabelType(nullptr) {} virtual ~RelabelType(); RelabelType(const RelabelType& from); RelabelType(RelabelType&& from) noexcept : RelabelType() { *this = ::std::move(from); } inline RelabelType& operator=(const RelabelType& from) { CopyFrom(from); return *this; } inline RelabelType& operator=(RelabelType&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RelabelType& default_instance(); static inline const RelabelType* internal_default_instance() { return reinterpret_cast( &_RelabelType_default_instance_); } static constexpr int kIndexInFileMessages = 34; friend void swap(RelabelType& a, RelabelType& b) { a.Swap(&b); } inline void Swap(RelabelType* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RelabelType* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RelabelType* New() const final { return CreateMaybeMessage(nullptr); } RelabelType* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RelabelType& from); void MergeFrom(const RelabelType& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RelabelType* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RelabelType"; } protected: explicit RelabelType(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kArgFieldNumber = 2, kResulttypeFieldNumber = 3, kResulttypmodFieldNumber = 4, kResultcollidFieldNumber = 5, kRelabelformatFieldNumber = 6, kLocationFieldNumber = 7, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 resulttypmod = 4 [json_name = "resulttypmod"]; void clear_resulttypmod(); ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod() const; void set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_resulttypmod() const; void _internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 resultcollid = 5 [json_name = "resultcollid"]; void clear_resultcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid() const; void set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resultcollid() const; void _internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; void clear_relabelformat(); ::pg_query::CoercionForm relabelformat() const; void set_relabelformat(::pg_query::CoercionForm value); private: ::pg_query::CoercionForm _internal_relabelformat() const; void _internal_set_relabelformat(::pg_query::CoercionForm value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RelabelType) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod_; ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid_; int relabelformat_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CoerceViaIO PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceViaIO) */ { public: inline CoerceViaIO() : CoerceViaIO(nullptr) {} virtual ~CoerceViaIO(); CoerceViaIO(const CoerceViaIO& from); CoerceViaIO(CoerceViaIO&& from) noexcept : CoerceViaIO() { *this = ::std::move(from); } inline CoerceViaIO& operator=(const CoerceViaIO& from) { CopyFrom(from); return *this; } inline CoerceViaIO& operator=(CoerceViaIO&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CoerceViaIO& default_instance(); static inline const CoerceViaIO* internal_default_instance() { return reinterpret_cast( &_CoerceViaIO_default_instance_); } static constexpr int kIndexInFileMessages = 35; friend void swap(CoerceViaIO& a, CoerceViaIO& b) { a.Swap(&b); } inline void Swap(CoerceViaIO* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoerceViaIO* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CoerceViaIO* New() const final { return CreateMaybeMessage(nullptr); } CoerceViaIO* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CoerceViaIO& from); void MergeFrom(const CoerceViaIO& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CoerceViaIO* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CoerceViaIO"; } protected: explicit CoerceViaIO(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kArgFieldNumber = 2, kResulttypeFieldNumber = 3, kResultcollidFieldNumber = 4, kCoerceformatFieldNumber = 5, kLocationFieldNumber = 6, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 resultcollid = 4 [json_name = "resultcollid"]; void clear_resultcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid() const; void set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resultcollid() const; void _internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; void clear_coerceformat(); ::pg_query::CoercionForm coerceformat() const; void set_coerceformat(::pg_query::CoercionForm value); private: ::pg_query::CoercionForm _internal_coerceformat() const; void _internal_set_coerceformat(::pg_query::CoercionForm value); public: // int32 location = 6 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CoerceViaIO) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid_; int coerceformat_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ArrayCoerceExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ArrayCoerceExpr) */ { public: inline ArrayCoerceExpr() : ArrayCoerceExpr(nullptr) {} virtual ~ArrayCoerceExpr(); ArrayCoerceExpr(const ArrayCoerceExpr& from); ArrayCoerceExpr(ArrayCoerceExpr&& from) noexcept : ArrayCoerceExpr() { *this = ::std::move(from); } inline ArrayCoerceExpr& operator=(const ArrayCoerceExpr& from) { CopyFrom(from); return *this; } inline ArrayCoerceExpr& operator=(ArrayCoerceExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ArrayCoerceExpr& default_instance(); static inline const ArrayCoerceExpr* internal_default_instance() { return reinterpret_cast( &_ArrayCoerceExpr_default_instance_); } static constexpr int kIndexInFileMessages = 36; friend void swap(ArrayCoerceExpr& a, ArrayCoerceExpr& b) { a.Swap(&b); } inline void Swap(ArrayCoerceExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ArrayCoerceExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ArrayCoerceExpr* New() const final { return CreateMaybeMessage(nullptr); } ArrayCoerceExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ArrayCoerceExpr& from); void MergeFrom(const ArrayCoerceExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ArrayCoerceExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ArrayCoerceExpr"; } protected: explicit ArrayCoerceExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kArgFieldNumber = 2, kElemexprFieldNumber = 3, kResulttypeFieldNumber = 4, kResulttypmodFieldNumber = 5, kResultcollidFieldNumber = 6, kCoerceformatFieldNumber = 7, kLocationFieldNumber = 8, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; bool has_elemexpr() const; private: bool _internal_has_elemexpr() const; public: void clear_elemexpr(); const ::pg_query::Node& elemexpr() const; ::pg_query::Node* release_elemexpr(); ::pg_query::Node* mutable_elemexpr(); void set_allocated_elemexpr(::pg_query::Node* elemexpr); private: const ::pg_query::Node& _internal_elemexpr() const; ::pg_query::Node* _internal_mutable_elemexpr(); public: void unsafe_arena_set_allocated_elemexpr( ::pg_query::Node* elemexpr); ::pg_query::Node* unsafe_arena_release_elemexpr(); // uint32 resulttype = 4 [json_name = "resulttype"]; void clear_resulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 resulttypmod = 5 [json_name = "resulttypmod"]; void clear_resulttypmod(); ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod() const; void set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_resulttypmod() const; void _internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 resultcollid = 6 [json_name = "resultcollid"]; void clear_resultcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid() const; void set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resultcollid() const; void _internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; void clear_coerceformat(); ::pg_query::CoercionForm coerceformat() const; void set_coerceformat(::pg_query::CoercionForm value); private: ::pg_query::CoercionForm _internal_coerceformat() const; void _internal_set_coerceformat(::pg_query::CoercionForm value); public: // int32 location = 8 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ArrayCoerceExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::pg_query::Node* elemexpr_; ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod_; ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid_; int coerceformat_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ConvertRowtypeExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ConvertRowtypeExpr) */ { public: inline ConvertRowtypeExpr() : ConvertRowtypeExpr(nullptr) {} virtual ~ConvertRowtypeExpr(); ConvertRowtypeExpr(const ConvertRowtypeExpr& from); ConvertRowtypeExpr(ConvertRowtypeExpr&& from) noexcept : ConvertRowtypeExpr() { *this = ::std::move(from); } inline ConvertRowtypeExpr& operator=(const ConvertRowtypeExpr& from) { CopyFrom(from); return *this; } inline ConvertRowtypeExpr& operator=(ConvertRowtypeExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ConvertRowtypeExpr& default_instance(); static inline const ConvertRowtypeExpr* internal_default_instance() { return reinterpret_cast( &_ConvertRowtypeExpr_default_instance_); } static constexpr int kIndexInFileMessages = 37; friend void swap(ConvertRowtypeExpr& a, ConvertRowtypeExpr& b) { a.Swap(&b); } inline void Swap(ConvertRowtypeExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ConvertRowtypeExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ConvertRowtypeExpr* New() const final { return CreateMaybeMessage(nullptr); } ConvertRowtypeExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ConvertRowtypeExpr& from); void MergeFrom(const ConvertRowtypeExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ConvertRowtypeExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ConvertRowtypeExpr"; } protected: explicit ConvertRowtypeExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kArgFieldNumber = 2, kResulttypeFieldNumber = 3, kConvertformatFieldNumber = 4, kLocationFieldNumber = 5, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; void clear_convertformat(); ::pg_query::CoercionForm convertformat() const; void set_convertformat(::pg_query::CoercionForm value); private: ::pg_query::CoercionForm _internal_convertformat() const; void _internal_set_convertformat(::pg_query::CoercionForm value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ConvertRowtypeExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; int convertformat_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CollateExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CollateExpr) */ { public: inline CollateExpr() : CollateExpr(nullptr) {} virtual ~CollateExpr(); CollateExpr(const CollateExpr& from); CollateExpr(CollateExpr&& from) noexcept : CollateExpr() { *this = ::std::move(from); } inline CollateExpr& operator=(const CollateExpr& from) { CopyFrom(from); return *this; } inline CollateExpr& operator=(CollateExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CollateExpr& default_instance(); static inline const CollateExpr* internal_default_instance() { return reinterpret_cast( &_CollateExpr_default_instance_); } static constexpr int kIndexInFileMessages = 38; friend void swap(CollateExpr& a, CollateExpr& b) { a.Swap(&b); } inline void Swap(CollateExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CollateExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CollateExpr* New() const final { return CreateMaybeMessage(nullptr); } CollateExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CollateExpr& from); void MergeFrom(const CollateExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CollateExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CollateExpr"; } protected: explicit CollateExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kArgFieldNumber = 2, kCollOidFieldNumber = 3, kLocationFieldNumber = 4, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 coll_oid = 3 [json_name = "collOid"]; void clear_coll_oid(); ::PROTOBUF_NAMESPACE_ID::uint32 coll_oid() const; void set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_coll_oid() const; void _internal_set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 4 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CollateExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::PROTOBUF_NAMESPACE_ID::uint32 coll_oid_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CaseExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseExpr) */ { public: inline CaseExpr() : CaseExpr(nullptr) {} virtual ~CaseExpr(); CaseExpr(const CaseExpr& from); CaseExpr(CaseExpr&& from) noexcept : CaseExpr() { *this = ::std::move(from); } inline CaseExpr& operator=(const CaseExpr& from) { CopyFrom(from); return *this; } inline CaseExpr& operator=(CaseExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CaseExpr& default_instance(); static inline const CaseExpr* internal_default_instance() { return reinterpret_cast( &_CaseExpr_default_instance_); } static constexpr int kIndexInFileMessages = 39; friend void swap(CaseExpr& a, CaseExpr& b) { a.Swap(&b); } inline void Swap(CaseExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CaseExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CaseExpr* New() const final { return CreateMaybeMessage(nullptr); } CaseExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CaseExpr& from); void MergeFrom(const CaseExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CaseExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CaseExpr"; } protected: explicit CaseExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 5, kXprFieldNumber = 1, kArgFieldNumber = 4, kDefresultFieldNumber = 6, kCasetypeFieldNumber = 2, kCasecollidFieldNumber = 3, kLocationFieldNumber = 7, }; // repeated .pg_query.Node args = 5 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 4 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.Node defresult = 6 [json_name = "defresult"]; bool has_defresult() const; private: bool _internal_has_defresult() const; public: void clear_defresult(); const ::pg_query::Node& defresult() const; ::pg_query::Node* release_defresult(); ::pg_query::Node* mutable_defresult(); void set_allocated_defresult(::pg_query::Node* defresult); private: const ::pg_query::Node& _internal_defresult() const; ::pg_query::Node* _internal_mutable_defresult(); public: void unsafe_arena_set_allocated_defresult( ::pg_query::Node* defresult); ::pg_query::Node* unsafe_arena_release_defresult(); // uint32 casetype = 2 [json_name = "casetype"]; void clear_casetype(); ::PROTOBUF_NAMESPACE_ID::uint32 casetype() const; void set_casetype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_casetype() const; void _internal_set_casetype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 casecollid = 3 [json_name = "casecollid"]; void clear_casecollid(); ::PROTOBUF_NAMESPACE_ID::uint32 casecollid() const; void set_casecollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_casecollid() const; void _internal_set_casecollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CaseExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::pg_query::Node* defresult_; ::PROTOBUF_NAMESPACE_ID::uint32 casetype_; ::PROTOBUF_NAMESPACE_ID::uint32 casecollid_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CaseWhen PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseWhen) */ { public: inline CaseWhen() : CaseWhen(nullptr) {} virtual ~CaseWhen(); CaseWhen(const CaseWhen& from); CaseWhen(CaseWhen&& from) noexcept : CaseWhen() { *this = ::std::move(from); } inline CaseWhen& operator=(const CaseWhen& from) { CopyFrom(from); return *this; } inline CaseWhen& operator=(CaseWhen&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CaseWhen& default_instance(); static inline const CaseWhen* internal_default_instance() { return reinterpret_cast( &_CaseWhen_default_instance_); } static constexpr int kIndexInFileMessages = 40; friend void swap(CaseWhen& a, CaseWhen& b) { a.Swap(&b); } inline void Swap(CaseWhen* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CaseWhen* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CaseWhen* New() const final { return CreateMaybeMessage(nullptr); } CaseWhen* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CaseWhen& from); void MergeFrom(const CaseWhen& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CaseWhen* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CaseWhen"; } protected: explicit CaseWhen(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kExprFieldNumber = 2, kResultFieldNumber = 3, kLocationFieldNumber = 4, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Node& expr() const; ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // .pg_query.Node result = 3 [json_name = "result"]; bool has_result() const; private: bool _internal_has_result() const; public: void clear_result(); const ::pg_query::Node& result() const; ::pg_query::Node* release_result(); ::pg_query::Node* mutable_result(); void set_allocated_result(::pg_query::Node* result); private: const ::pg_query::Node& _internal_result() const; ::pg_query::Node* _internal_mutable_result(); public: void unsafe_arena_set_allocated_result( ::pg_query::Node* result); ::pg_query::Node* unsafe_arena_release_result(); // int32 location = 4 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CaseWhen) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* expr_; ::pg_query::Node* result_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CaseTestExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CaseTestExpr) */ { public: inline CaseTestExpr() : CaseTestExpr(nullptr) {} virtual ~CaseTestExpr(); CaseTestExpr(const CaseTestExpr& from); CaseTestExpr(CaseTestExpr&& from) noexcept : CaseTestExpr() { *this = ::std::move(from); } inline CaseTestExpr& operator=(const CaseTestExpr& from) { CopyFrom(from); return *this; } inline CaseTestExpr& operator=(CaseTestExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CaseTestExpr& default_instance(); static inline const CaseTestExpr* internal_default_instance() { return reinterpret_cast( &_CaseTestExpr_default_instance_); } static constexpr int kIndexInFileMessages = 41; friend void swap(CaseTestExpr& a, CaseTestExpr& b) { a.Swap(&b); } inline void Swap(CaseTestExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CaseTestExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CaseTestExpr* New() const final { return CreateMaybeMessage(nullptr); } CaseTestExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CaseTestExpr& from); void MergeFrom(const CaseTestExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CaseTestExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CaseTestExpr"; } protected: explicit CaseTestExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kTypeIdFieldNumber = 2, kTypeModFieldNumber = 3, kCollationFieldNumber = 4, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 type_id = 2 [json_name = "typeId"]; void clear_type_id(); ::PROTOBUF_NAMESPACE_ID::uint32 type_id() const; void set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type_id() const; void _internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 type_mod = 3 [json_name = "typeMod"]; void clear_type_mod(); ::PROTOBUF_NAMESPACE_ID::int32 type_mod() const; void set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_type_mod() const; void _internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 collation = 4 [json_name = "collation"]; void clear_collation(); ::PROTOBUF_NAMESPACE_ID::uint32 collation() const; void set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_collation() const; void _internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CaseTestExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 type_id_; ::PROTOBUF_NAMESPACE_ID::int32 type_mod_; ::PROTOBUF_NAMESPACE_ID::uint32 collation_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ArrayExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ArrayExpr) */ { public: inline ArrayExpr() : ArrayExpr(nullptr) {} virtual ~ArrayExpr(); ArrayExpr(const ArrayExpr& from); ArrayExpr(ArrayExpr&& from) noexcept : ArrayExpr() { *this = ::std::move(from); } inline ArrayExpr& operator=(const ArrayExpr& from) { CopyFrom(from); return *this; } inline ArrayExpr& operator=(ArrayExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ArrayExpr& default_instance(); static inline const ArrayExpr* internal_default_instance() { return reinterpret_cast( &_ArrayExpr_default_instance_); } static constexpr int kIndexInFileMessages = 42; friend void swap(ArrayExpr& a, ArrayExpr& b) { a.Swap(&b); } inline void Swap(ArrayExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ArrayExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ArrayExpr* New() const final { return CreateMaybeMessage(nullptr); } ArrayExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ArrayExpr& from); void MergeFrom(const ArrayExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ArrayExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ArrayExpr"; } protected: explicit ArrayExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kElementsFieldNumber = 5, kXprFieldNumber = 1, kArrayTypeidFieldNumber = 2, kArrayCollidFieldNumber = 3, kElementTypeidFieldNumber = 4, kMultidimsFieldNumber = 6, kLocationFieldNumber = 7, }; // repeated .pg_query.Node elements = 5 [json_name = "elements"]; int elements_size() const; private: int _internal_elements_size() const; public: void clear_elements(); ::pg_query::Node* mutable_elements(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_elements(); private: const ::pg_query::Node& _internal_elements(int index) const; ::pg_query::Node* _internal_add_elements(); public: const ::pg_query::Node& elements(int index) const; ::pg_query::Node* add_elements(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& elements() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 array_typeid = 2 [json_name = "array_typeid"]; void clear_array_typeid(); ::PROTOBUF_NAMESPACE_ID::uint32 array_typeid() const; void set_array_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_array_typeid() const; void _internal_set_array_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 array_collid = 3 [json_name = "array_collid"]; void clear_array_collid(); ::PROTOBUF_NAMESPACE_ID::uint32 array_collid() const; void set_array_collid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_array_collid() const; void _internal_set_array_collid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 element_typeid = 4 [json_name = "element_typeid"]; void clear_element_typeid(); ::PROTOBUF_NAMESPACE_ID::uint32 element_typeid() const; void set_element_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_element_typeid() const; void _internal_set_element_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool multidims = 6 [json_name = "multidims"]; void clear_multidims(); bool multidims() const; void set_multidims(bool value); private: bool _internal_multidims() const; void _internal_set_multidims(bool value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ArrayExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > elements_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 array_typeid_; ::PROTOBUF_NAMESPACE_ID::uint32 array_collid_; ::PROTOBUF_NAMESPACE_ID::uint32 element_typeid_; bool multidims_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RowExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RowExpr) */ { public: inline RowExpr() : RowExpr(nullptr) {} virtual ~RowExpr(); RowExpr(const RowExpr& from); RowExpr(RowExpr&& from) noexcept : RowExpr() { *this = ::std::move(from); } inline RowExpr& operator=(const RowExpr& from) { CopyFrom(from); return *this; } inline RowExpr& operator=(RowExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RowExpr& default_instance(); static inline const RowExpr* internal_default_instance() { return reinterpret_cast( &_RowExpr_default_instance_); } static constexpr int kIndexInFileMessages = 43; friend void swap(RowExpr& a, RowExpr& b) { a.Swap(&b); } inline void Swap(RowExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RowExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RowExpr* New() const final { return CreateMaybeMessage(nullptr); } RowExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RowExpr& from); void MergeFrom(const RowExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RowExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RowExpr"; } protected: explicit RowExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 2, kColnamesFieldNumber = 5, kXprFieldNumber = 1, kRowTypeidFieldNumber = 3, kRowFormatFieldNumber = 4, kLocationFieldNumber = 6, }; // repeated .pg_query.Node args = 2 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; int colnames_size() const; private: int _internal_colnames_size() const; public: void clear_colnames(); ::pg_query::Node* mutable_colnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colnames(); private: const ::pg_query::Node& _internal_colnames(int index) const; ::pg_query::Node* _internal_add_colnames(); public: const ::pg_query::Node& colnames(int index) const; ::pg_query::Node* add_colnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colnames() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 row_typeid = 3 [json_name = "row_typeid"]; void clear_row_typeid(); ::PROTOBUF_NAMESPACE_ID::uint32 row_typeid() const; void set_row_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_row_typeid() const; void _internal_set_row_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; void clear_row_format(); ::pg_query::CoercionForm row_format() const; void set_row_format(::pg_query::CoercionForm value); private: ::pg_query::CoercionForm _internal_row_format() const; void _internal_set_row_format(::pg_query::CoercionForm value); public: // int32 location = 6 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RowExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colnames_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 row_typeid_; int row_format_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RowCompareExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RowCompareExpr) */ { public: inline RowCompareExpr() : RowCompareExpr(nullptr) {} virtual ~RowCompareExpr(); RowCompareExpr(const RowCompareExpr& from); RowCompareExpr(RowCompareExpr&& from) noexcept : RowCompareExpr() { *this = ::std::move(from); } inline RowCompareExpr& operator=(const RowCompareExpr& from) { CopyFrom(from); return *this; } inline RowCompareExpr& operator=(RowCompareExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RowCompareExpr& default_instance(); static inline const RowCompareExpr* internal_default_instance() { return reinterpret_cast( &_RowCompareExpr_default_instance_); } static constexpr int kIndexInFileMessages = 44; friend void swap(RowCompareExpr& a, RowCompareExpr& b) { a.Swap(&b); } inline void Swap(RowCompareExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RowCompareExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RowCompareExpr* New() const final { return CreateMaybeMessage(nullptr); } RowCompareExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RowCompareExpr& from); void MergeFrom(const RowCompareExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RowCompareExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RowCompareExpr"; } protected: explicit RowCompareExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOpnosFieldNumber = 3, kOpfamiliesFieldNumber = 4, kInputcollidsFieldNumber = 5, kLargsFieldNumber = 6, kRargsFieldNumber = 7, kXprFieldNumber = 1, kRctypeFieldNumber = 2, }; // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; int opnos_size() const; private: int _internal_opnos_size() const; public: void clear_opnos(); ::pg_query::Node* mutable_opnos(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opnos(); private: const ::pg_query::Node& _internal_opnos(int index) const; ::pg_query::Node* _internal_add_opnos(); public: const ::pg_query::Node& opnos(int index) const; ::pg_query::Node* add_opnos(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opnos() const; // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; int opfamilies_size() const; private: int _internal_opfamilies_size() const; public: void clear_opfamilies(); ::pg_query::Node* mutable_opfamilies(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilies(); private: const ::pg_query::Node& _internal_opfamilies(int index) const; ::pg_query::Node* _internal_add_opfamilies(); public: const ::pg_query::Node& opfamilies(int index) const; ::pg_query::Node* add_opfamilies(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opfamilies() const; // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; int inputcollids_size() const; private: int _internal_inputcollids_size() const; public: void clear_inputcollids(); ::pg_query::Node* mutable_inputcollids(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_inputcollids(); private: const ::pg_query::Node& _internal_inputcollids(int index) const; ::pg_query::Node* _internal_add_inputcollids(); public: const ::pg_query::Node& inputcollids(int index) const; ::pg_query::Node* add_inputcollids(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& inputcollids() const; // repeated .pg_query.Node largs = 6 [json_name = "largs"]; int largs_size() const; private: int _internal_largs_size() const; public: void clear_largs(); ::pg_query::Node* mutable_largs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_largs(); private: const ::pg_query::Node& _internal_largs(int index) const; ::pg_query::Node* _internal_add_largs(); public: const ::pg_query::Node& largs(int index) const; ::pg_query::Node* add_largs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& largs() const; // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; int rargs_size() const; private: int _internal_rargs_size() const; public: void clear_rargs(); ::pg_query::Node* mutable_rargs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_rargs(); private: const ::pg_query::Node& _internal_rargs(int index) const; ::pg_query::Node* _internal_add_rargs(); public: const ::pg_query::Node& rargs(int index) const; ::pg_query::Node* add_rargs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& rargs() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; void clear_rctype(); ::pg_query::RowCompareType rctype() const; void set_rctype(::pg_query::RowCompareType value); private: ::pg_query::RowCompareType _internal_rctype() const; void _internal_set_rctype(::pg_query::RowCompareType value); public: // @@protoc_insertion_point(class_scope:pg_query.RowCompareExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opnos_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilies_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > inputcollids_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > largs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > rargs_; ::pg_query::Node* xpr_; int rctype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CoalesceExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoalesceExpr) */ { public: inline CoalesceExpr() : CoalesceExpr(nullptr) {} virtual ~CoalesceExpr(); CoalesceExpr(const CoalesceExpr& from); CoalesceExpr(CoalesceExpr&& from) noexcept : CoalesceExpr() { *this = ::std::move(from); } inline CoalesceExpr& operator=(const CoalesceExpr& from) { CopyFrom(from); return *this; } inline CoalesceExpr& operator=(CoalesceExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CoalesceExpr& default_instance(); static inline const CoalesceExpr* internal_default_instance() { return reinterpret_cast( &_CoalesceExpr_default_instance_); } static constexpr int kIndexInFileMessages = 45; friend void swap(CoalesceExpr& a, CoalesceExpr& b) { a.Swap(&b); } inline void Swap(CoalesceExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoalesceExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CoalesceExpr* New() const final { return CreateMaybeMessage(nullptr); } CoalesceExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CoalesceExpr& from); void MergeFrom(const CoalesceExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CoalesceExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CoalesceExpr"; } protected: explicit CoalesceExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 4, kXprFieldNumber = 1, kCoalescetypeFieldNumber = 2, kCoalescecollidFieldNumber = 3, kLocationFieldNumber = 5, }; // repeated .pg_query.Node args = 4 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 coalescetype = 2 [json_name = "coalescetype"]; void clear_coalescetype(); ::PROTOBUF_NAMESPACE_ID::uint32 coalescetype() const; void set_coalescetype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_coalescetype() const; void _internal_set_coalescetype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; void clear_coalescecollid(); ::PROTOBUF_NAMESPACE_ID::uint32 coalescecollid() const; void set_coalescecollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_coalescecollid() const; void _internal_set_coalescecollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CoalesceExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 coalescetype_; ::PROTOBUF_NAMESPACE_ID::uint32 coalescecollid_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class MinMaxExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.MinMaxExpr) */ { public: inline MinMaxExpr() : MinMaxExpr(nullptr) {} virtual ~MinMaxExpr(); MinMaxExpr(const MinMaxExpr& from); MinMaxExpr(MinMaxExpr&& from) noexcept : MinMaxExpr() { *this = ::std::move(from); } inline MinMaxExpr& operator=(const MinMaxExpr& from) { CopyFrom(from); return *this; } inline MinMaxExpr& operator=(MinMaxExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const MinMaxExpr& default_instance(); static inline const MinMaxExpr* internal_default_instance() { return reinterpret_cast( &_MinMaxExpr_default_instance_); } static constexpr int kIndexInFileMessages = 46; friend void swap(MinMaxExpr& a, MinMaxExpr& b) { a.Swap(&b); } inline void Swap(MinMaxExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MinMaxExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline MinMaxExpr* New() const final { return CreateMaybeMessage(nullptr); } MinMaxExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const MinMaxExpr& from); void MergeFrom(const MinMaxExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(MinMaxExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.MinMaxExpr"; } protected: explicit MinMaxExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 6, kXprFieldNumber = 1, kMinmaxtypeFieldNumber = 2, kMinmaxcollidFieldNumber = 3, kInputcollidFieldNumber = 4, kOpFieldNumber = 5, kLocationFieldNumber = 7, }; // repeated .pg_query.Node args = 6 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; void clear_minmaxtype(); ::PROTOBUF_NAMESPACE_ID::uint32 minmaxtype() const; void set_minmaxtype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_minmaxtype() const; void _internal_set_minmaxtype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; void clear_minmaxcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 minmaxcollid() const; void set_minmaxcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_minmaxcollid() const; void _internal_set_minmaxcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 inputcollid = 4 [json_name = "inputcollid"]; void clear_inputcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid() const; void set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inputcollid() const; void _internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // .pg_query.MinMaxOp op = 5 [json_name = "op"]; void clear_op(); ::pg_query::MinMaxOp op() const; void set_op(::pg_query::MinMaxOp value); private: ::pg_query::MinMaxOp _internal_op() const; void _internal_set_op(::pg_query::MinMaxOp value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.MinMaxExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 minmaxtype_; ::PROTOBUF_NAMESPACE_ID::uint32 minmaxcollid_; ::PROTOBUF_NAMESPACE_ID::uint32 inputcollid_; int op_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SQLValueFunction PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SQLValueFunction) */ { public: inline SQLValueFunction() : SQLValueFunction(nullptr) {} virtual ~SQLValueFunction(); SQLValueFunction(const SQLValueFunction& from); SQLValueFunction(SQLValueFunction&& from) noexcept : SQLValueFunction() { *this = ::std::move(from); } inline SQLValueFunction& operator=(const SQLValueFunction& from) { CopyFrom(from); return *this; } inline SQLValueFunction& operator=(SQLValueFunction&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const SQLValueFunction& default_instance(); static inline const SQLValueFunction* internal_default_instance() { return reinterpret_cast( &_SQLValueFunction_default_instance_); } static constexpr int kIndexInFileMessages = 47; friend void swap(SQLValueFunction& a, SQLValueFunction& b) { a.Swap(&b); } inline void Swap(SQLValueFunction* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SQLValueFunction* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline SQLValueFunction* New() const final { return CreateMaybeMessage(nullptr); } SQLValueFunction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const SQLValueFunction& from); void MergeFrom(const SQLValueFunction& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SQLValueFunction* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SQLValueFunction"; } protected: explicit SQLValueFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kOpFieldNumber = 2, kTypeFieldNumber = 3, kTypmodFieldNumber = 4, kLocationFieldNumber = 5, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; void clear_op(); ::pg_query::SQLValueFunctionOp op() const; void set_op(::pg_query::SQLValueFunctionOp value); private: ::pg_query::SQLValueFunctionOp _internal_op() const; void _internal_set_op(::pg_query::SQLValueFunctionOp value); public: // uint32 type = 3 [json_name = "type"]; void clear_type(); ::PROTOBUF_NAMESPACE_ID::uint32 type() const; void set_type(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type() const; void _internal_set_type(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 typmod = 4 [json_name = "typmod"]; void clear_typmod(); ::PROTOBUF_NAMESPACE_ID::int32 typmod() const; void set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_typmod() const; void _internal_set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.SQLValueFunction) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; int op_; ::PROTOBUF_NAMESPACE_ID::uint32 type_; ::PROTOBUF_NAMESPACE_ID::int32 typmod_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class XmlExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.XmlExpr) */ { public: inline XmlExpr() : XmlExpr(nullptr) {} virtual ~XmlExpr(); XmlExpr(const XmlExpr& from); XmlExpr(XmlExpr&& from) noexcept : XmlExpr() { *this = ::std::move(from); } inline XmlExpr& operator=(const XmlExpr& from) { CopyFrom(from); return *this; } inline XmlExpr& operator=(XmlExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const XmlExpr& default_instance(); static inline const XmlExpr* internal_default_instance() { return reinterpret_cast( &_XmlExpr_default_instance_); } static constexpr int kIndexInFileMessages = 48; friend void swap(XmlExpr& a, XmlExpr& b) { a.Swap(&b); } inline void Swap(XmlExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(XmlExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline XmlExpr* New() const final { return CreateMaybeMessage(nullptr); } XmlExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const XmlExpr& from); void MergeFrom(const XmlExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(XmlExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.XmlExpr"; } protected: explicit XmlExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNamedArgsFieldNumber = 4, kArgNamesFieldNumber = 5, kArgsFieldNumber = 6, kNameFieldNumber = 3, kXprFieldNumber = 1, kOpFieldNumber = 2, kXmloptionFieldNumber = 7, kTypeFieldNumber = 8, kTypmodFieldNumber = 9, kLocationFieldNumber = 10, }; // repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; int named_args_size() const; private: int _internal_named_args_size() const; public: void clear_named_args(); ::pg_query::Node* mutable_named_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_named_args(); private: const ::pg_query::Node& _internal_named_args(int index) const; ::pg_query::Node* _internal_add_named_args(); public: const ::pg_query::Node& named_args(int index) const; ::pg_query::Node* add_named_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& named_args() const; // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; int arg_names_size() const; private: int _internal_arg_names_size() const; public: void clear_arg_names(); ::pg_query::Node* mutable_arg_names(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_arg_names(); private: const ::pg_query::Node& _internal_arg_names(int index) const; ::pg_query::Node* _internal_add_arg_names(); public: const ::pg_query::Node& arg_names(int index) const; ::pg_query::Node* add_arg_names(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& arg_names() const; // repeated .pg_query.Node args = 6 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // string name = 3 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.XmlExprOp op = 2 [json_name = "op"]; void clear_op(); ::pg_query::XmlExprOp op() const; void set_op(::pg_query::XmlExprOp value); private: ::pg_query::XmlExprOp _internal_op() const; void _internal_set_op(::pg_query::XmlExprOp value); public: // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; void clear_xmloption(); ::pg_query::XmlOptionType xmloption() const; void set_xmloption(::pg_query::XmlOptionType value); private: ::pg_query::XmlOptionType _internal_xmloption() const; void _internal_set_xmloption(::pg_query::XmlOptionType value); public: // uint32 type = 8 [json_name = "type"]; void clear_type(); ::PROTOBUF_NAMESPACE_ID::uint32 type() const; void set_type(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type() const; void _internal_set_type(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 typmod = 9 [json_name = "typmod"]; void clear_typmod(); ::PROTOBUF_NAMESPACE_ID::int32 typmod() const; void set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_typmod() const; void _internal_set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 location = 10 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.XmlExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > named_args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > arg_names_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* xpr_; int op_; int xmloption_; ::PROTOBUF_NAMESPACE_ID::uint32 type_; ::PROTOBUF_NAMESPACE_ID::int32 typmod_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class NullTest PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NullTest) */ { public: inline NullTest() : NullTest(nullptr) {} virtual ~NullTest(); NullTest(const NullTest& from); NullTest(NullTest&& from) noexcept : NullTest() { *this = ::std::move(from); } inline NullTest& operator=(const NullTest& from) { CopyFrom(from); return *this; } inline NullTest& operator=(NullTest&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const NullTest& default_instance(); static inline const NullTest* internal_default_instance() { return reinterpret_cast( &_NullTest_default_instance_); } static constexpr int kIndexInFileMessages = 49; friend void swap(NullTest& a, NullTest& b) { a.Swap(&b); } inline void Swap(NullTest* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NullTest* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline NullTest* New() const final { return CreateMaybeMessage(nullptr); } NullTest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const NullTest& from); void MergeFrom(const NullTest& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(NullTest* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.NullTest"; } protected: explicit NullTest(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kArgFieldNumber = 2, kNulltesttypeFieldNumber = 3, kArgisrowFieldNumber = 4, kLocationFieldNumber = 5, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; void clear_nulltesttype(); ::pg_query::NullTestType nulltesttype() const; void set_nulltesttype(::pg_query::NullTestType value); private: ::pg_query::NullTestType _internal_nulltesttype() const; void _internal_set_nulltesttype(::pg_query::NullTestType value); public: // bool argisrow = 4 [json_name = "argisrow"]; void clear_argisrow(); bool argisrow() const; void set_argisrow(bool value); private: bool _internal_argisrow() const; void _internal_set_argisrow(bool value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.NullTest) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; int nulltesttype_; bool argisrow_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class BooleanTest PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.BooleanTest) */ { public: inline BooleanTest() : BooleanTest(nullptr) {} virtual ~BooleanTest(); BooleanTest(const BooleanTest& from); BooleanTest(BooleanTest&& from) noexcept : BooleanTest() { *this = ::std::move(from); } inline BooleanTest& operator=(const BooleanTest& from) { CopyFrom(from); return *this; } inline BooleanTest& operator=(BooleanTest&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const BooleanTest& default_instance(); static inline const BooleanTest* internal_default_instance() { return reinterpret_cast( &_BooleanTest_default_instance_); } static constexpr int kIndexInFileMessages = 50; friend void swap(BooleanTest& a, BooleanTest& b) { a.Swap(&b); } inline void Swap(BooleanTest* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(BooleanTest* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline BooleanTest* New() const final { return CreateMaybeMessage(nullptr); } BooleanTest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const BooleanTest& from); void MergeFrom(const BooleanTest& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(BooleanTest* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.BooleanTest"; } protected: explicit BooleanTest(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kArgFieldNumber = 2, kBooltesttypeFieldNumber = 3, kLocationFieldNumber = 4, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; void clear_booltesttype(); ::pg_query::BoolTestType booltesttype() const; void set_booltesttype(::pg_query::BoolTestType value); private: ::pg_query::BoolTestType _internal_booltesttype() const; void _internal_set_booltesttype(::pg_query::BoolTestType value); public: // int32 location = 4 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.BooleanTest) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; int booltesttype_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CoerceToDomain PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceToDomain) */ { public: inline CoerceToDomain() : CoerceToDomain(nullptr) {} virtual ~CoerceToDomain(); CoerceToDomain(const CoerceToDomain& from); CoerceToDomain(CoerceToDomain&& from) noexcept : CoerceToDomain() { *this = ::std::move(from); } inline CoerceToDomain& operator=(const CoerceToDomain& from) { CopyFrom(from); return *this; } inline CoerceToDomain& operator=(CoerceToDomain&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CoerceToDomain& default_instance(); static inline const CoerceToDomain* internal_default_instance() { return reinterpret_cast( &_CoerceToDomain_default_instance_); } static constexpr int kIndexInFileMessages = 51; friend void swap(CoerceToDomain& a, CoerceToDomain& b) { a.Swap(&b); } inline void Swap(CoerceToDomain* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoerceToDomain* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CoerceToDomain* New() const final { return CreateMaybeMessage(nullptr); } CoerceToDomain* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CoerceToDomain& from); void MergeFrom(const CoerceToDomain& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CoerceToDomain* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CoerceToDomain"; } protected: explicit CoerceToDomain(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kArgFieldNumber = 2, kResulttypeFieldNumber = 3, kResulttypmodFieldNumber = 4, kResultcollidFieldNumber = 5, kCoercionformatFieldNumber = 6, kLocationFieldNumber = 7, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node arg = 2 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // uint32 resulttype = 3 [json_name = "resulttype"]; void clear_resulttype(); ::PROTOBUF_NAMESPACE_ID::uint32 resulttype() const; void set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resulttype() const; void _internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 resulttypmod = 4 [json_name = "resulttypmod"]; void clear_resulttypmod(); ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod() const; void set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_resulttypmod() const; void _internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 resultcollid = 5 [json_name = "resultcollid"]; void clear_resultcollid(); ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid() const; void set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resultcollid() const; void _internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; void clear_coercionformat(); ::pg_query::CoercionForm coercionformat() const; void set_coercionformat(::pg_query::CoercionForm value); private: ::pg_query::CoercionForm _internal_coercionformat() const; void _internal_set_coercionformat(::pg_query::CoercionForm value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CoerceToDomain) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* arg_; ::PROTOBUF_NAMESPACE_ID::uint32 resulttype_; ::PROTOBUF_NAMESPACE_ID::int32 resulttypmod_; ::PROTOBUF_NAMESPACE_ID::uint32 resultcollid_; int coercionformat_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CoerceToDomainValue PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CoerceToDomainValue) */ { public: inline CoerceToDomainValue() : CoerceToDomainValue(nullptr) {} virtual ~CoerceToDomainValue(); CoerceToDomainValue(const CoerceToDomainValue& from); CoerceToDomainValue(CoerceToDomainValue&& from) noexcept : CoerceToDomainValue() { *this = ::std::move(from); } inline CoerceToDomainValue& operator=(const CoerceToDomainValue& from) { CopyFrom(from); return *this; } inline CoerceToDomainValue& operator=(CoerceToDomainValue&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CoerceToDomainValue& default_instance(); static inline const CoerceToDomainValue* internal_default_instance() { return reinterpret_cast( &_CoerceToDomainValue_default_instance_); } static constexpr int kIndexInFileMessages = 52; friend void swap(CoerceToDomainValue& a, CoerceToDomainValue& b) { a.Swap(&b); } inline void Swap(CoerceToDomainValue* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CoerceToDomainValue* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CoerceToDomainValue* New() const final { return CreateMaybeMessage(nullptr); } CoerceToDomainValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CoerceToDomainValue& from); void MergeFrom(const CoerceToDomainValue& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CoerceToDomainValue* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CoerceToDomainValue"; } protected: explicit CoerceToDomainValue(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kTypeIdFieldNumber = 2, kTypeModFieldNumber = 3, kCollationFieldNumber = 4, kLocationFieldNumber = 5, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 type_id = 2 [json_name = "typeId"]; void clear_type_id(); ::PROTOBUF_NAMESPACE_ID::uint32 type_id() const; void set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type_id() const; void _internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 type_mod = 3 [json_name = "typeMod"]; void clear_type_mod(); ::PROTOBUF_NAMESPACE_ID::int32 type_mod() const; void set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_type_mod() const; void _internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 collation = 4 [json_name = "collation"]; void clear_collation(); ::PROTOBUF_NAMESPACE_ID::uint32 collation() const; void set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_collation() const; void _internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CoerceToDomainValue) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 type_id_; ::PROTOBUF_NAMESPACE_ID::int32 type_mod_; ::PROTOBUF_NAMESPACE_ID::uint32 collation_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SetToDefault PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SetToDefault) */ { public: inline SetToDefault() : SetToDefault(nullptr) {} virtual ~SetToDefault(); SetToDefault(const SetToDefault& from); SetToDefault(SetToDefault&& from) noexcept : SetToDefault() { *this = ::std::move(from); } inline SetToDefault& operator=(const SetToDefault& from) { CopyFrom(from); return *this; } inline SetToDefault& operator=(SetToDefault&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const SetToDefault& default_instance(); static inline const SetToDefault* internal_default_instance() { return reinterpret_cast( &_SetToDefault_default_instance_); } static constexpr int kIndexInFileMessages = 53; friend void swap(SetToDefault& a, SetToDefault& b) { a.Swap(&b); } inline void Swap(SetToDefault* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SetToDefault* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline SetToDefault* New() const final { return CreateMaybeMessage(nullptr); } SetToDefault* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const SetToDefault& from); void MergeFrom(const SetToDefault& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SetToDefault* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SetToDefault"; } protected: explicit SetToDefault(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kTypeIdFieldNumber = 2, kTypeModFieldNumber = 3, kCollationFieldNumber = 4, kLocationFieldNumber = 5, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 type_id = 2 [json_name = "typeId"]; void clear_type_id(); ::PROTOBUF_NAMESPACE_ID::uint32 type_id() const; void set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type_id() const; void _internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 type_mod = 3 [json_name = "typeMod"]; void clear_type_mod(); ::PROTOBUF_NAMESPACE_ID::int32 type_mod() const; void set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_type_mod() const; void _internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 collation = 4 [json_name = "collation"]; void clear_collation(); ::PROTOBUF_NAMESPACE_ID::uint32 collation() const; void set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_collation() const; void _internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.SetToDefault) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 type_id_; ::PROTOBUF_NAMESPACE_ID::int32 type_mod_; ::PROTOBUF_NAMESPACE_ID::uint32 collation_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CurrentOfExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CurrentOfExpr) */ { public: inline CurrentOfExpr() : CurrentOfExpr(nullptr) {} virtual ~CurrentOfExpr(); CurrentOfExpr(const CurrentOfExpr& from); CurrentOfExpr(CurrentOfExpr&& from) noexcept : CurrentOfExpr() { *this = ::std::move(from); } inline CurrentOfExpr& operator=(const CurrentOfExpr& from) { CopyFrom(from); return *this; } inline CurrentOfExpr& operator=(CurrentOfExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CurrentOfExpr& default_instance(); static inline const CurrentOfExpr* internal_default_instance() { return reinterpret_cast( &_CurrentOfExpr_default_instance_); } static constexpr int kIndexInFileMessages = 54; friend void swap(CurrentOfExpr& a, CurrentOfExpr& b) { a.Swap(&b); } inline void Swap(CurrentOfExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CurrentOfExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CurrentOfExpr* New() const final { return CreateMaybeMessage(nullptr); } CurrentOfExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CurrentOfExpr& from); void MergeFrom(const CurrentOfExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CurrentOfExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CurrentOfExpr"; } protected: explicit CurrentOfExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCursorNameFieldNumber = 3, kXprFieldNumber = 1, kCvarnoFieldNumber = 2, kCursorParamFieldNumber = 4, }; // string cursor_name = 3 [json_name = "cursor_name"]; void clear_cursor_name(); const std::string& cursor_name() const; void set_cursor_name(const std::string& value); void set_cursor_name(std::string&& value); void set_cursor_name(const char* value); void set_cursor_name(const char* value, size_t size); std::string* mutable_cursor_name(); std::string* release_cursor_name(); void set_allocated_cursor_name(std::string* cursor_name); private: const std::string& _internal_cursor_name() const; void _internal_set_cursor_name(const std::string& value); std::string* _internal_mutable_cursor_name(); public: // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 cvarno = 2 [json_name = "cvarno"]; void clear_cvarno(); ::PROTOBUF_NAMESPACE_ID::uint32 cvarno() const; void set_cvarno(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_cvarno() const; void _internal_set_cvarno(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 cursor_param = 4 [json_name = "cursor_param"]; void clear_cursor_param(); ::PROTOBUF_NAMESPACE_ID::int32 cursor_param() const; void set_cursor_param(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_cursor_param() const; void _internal_set_cursor_param(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CurrentOfExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cursor_name_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 cvarno_; ::PROTOBUF_NAMESPACE_ID::int32 cursor_param_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class NextValueExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NextValueExpr) */ { public: inline NextValueExpr() : NextValueExpr(nullptr) {} virtual ~NextValueExpr(); NextValueExpr(const NextValueExpr& from); NextValueExpr(NextValueExpr&& from) noexcept : NextValueExpr() { *this = ::std::move(from); } inline NextValueExpr& operator=(const NextValueExpr& from) { CopyFrom(from); return *this; } inline NextValueExpr& operator=(NextValueExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const NextValueExpr& default_instance(); static inline const NextValueExpr* internal_default_instance() { return reinterpret_cast( &_NextValueExpr_default_instance_); } static constexpr int kIndexInFileMessages = 55; friend void swap(NextValueExpr& a, NextValueExpr& b) { a.Swap(&b); } inline void Swap(NextValueExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NextValueExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline NextValueExpr* New() const final { return CreateMaybeMessage(nullptr); } NextValueExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const NextValueExpr& from); void MergeFrom(const NextValueExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(NextValueExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.NextValueExpr"; } protected: explicit NextValueExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kSeqidFieldNumber = 2, kTypeIdFieldNumber = 3, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // uint32 seqid = 2 [json_name = "seqid"]; void clear_seqid(); ::PROTOBUF_NAMESPACE_ID::uint32 seqid() const; void set_seqid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_seqid() const; void _internal_set_seqid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 type_id = 3 [json_name = "typeId"]; void clear_type_id(); ::PROTOBUF_NAMESPACE_ID::uint32 type_id() const; void set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type_id() const; void _internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.NextValueExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::PROTOBUF_NAMESPACE_ID::uint32 seqid_; ::PROTOBUF_NAMESPACE_ID::uint32 type_id_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class InferenceElem PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InferenceElem) */ { public: inline InferenceElem() : InferenceElem(nullptr) {} virtual ~InferenceElem(); InferenceElem(const InferenceElem& from); InferenceElem(InferenceElem&& from) noexcept : InferenceElem() { *this = ::std::move(from); } inline InferenceElem& operator=(const InferenceElem& from) { CopyFrom(from); return *this; } inline InferenceElem& operator=(InferenceElem&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const InferenceElem& default_instance(); static inline const InferenceElem* internal_default_instance() { return reinterpret_cast( &_InferenceElem_default_instance_); } static constexpr int kIndexInFileMessages = 56; friend void swap(InferenceElem& a, InferenceElem& b) { a.Swap(&b); } inline void Swap(InferenceElem* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InferenceElem* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline InferenceElem* New() const final { return CreateMaybeMessage(nullptr); } InferenceElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const InferenceElem& from); void MergeFrom(const InferenceElem& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(InferenceElem* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.InferenceElem"; } protected: explicit InferenceElem(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kXprFieldNumber = 1, kExprFieldNumber = 2, kInfercollidFieldNumber = 3, kInferopclassFieldNumber = 4, }; // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Node& expr() const; ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // uint32 infercollid = 3 [json_name = "infercollid"]; void clear_infercollid(); ::PROTOBUF_NAMESPACE_ID::uint32 infercollid() const; void set_infercollid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_infercollid() const; void _internal_set_infercollid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 inferopclass = 4 [json_name = "inferopclass"]; void clear_inferopclass(); ::PROTOBUF_NAMESPACE_ID::uint32 inferopclass() const; void set_inferopclass(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_inferopclass() const; void _internal_set_inferopclass(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.InferenceElem) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* xpr_; ::pg_query::Node* expr_; ::PROTOBUF_NAMESPACE_ID::uint32 infercollid_; ::PROTOBUF_NAMESPACE_ID::uint32 inferopclass_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TargetEntry PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TargetEntry) */ { public: inline TargetEntry() : TargetEntry(nullptr) {} virtual ~TargetEntry(); TargetEntry(const TargetEntry& from); TargetEntry(TargetEntry&& from) noexcept : TargetEntry() { *this = ::std::move(from); } inline TargetEntry& operator=(const TargetEntry& from) { CopyFrom(from); return *this; } inline TargetEntry& operator=(TargetEntry&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const TargetEntry& default_instance(); static inline const TargetEntry* internal_default_instance() { return reinterpret_cast( &_TargetEntry_default_instance_); } static constexpr int kIndexInFileMessages = 57; friend void swap(TargetEntry& a, TargetEntry& b) { a.Swap(&b); } inline void Swap(TargetEntry* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TargetEntry* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline TargetEntry* New() const final { return CreateMaybeMessage(nullptr); } TargetEntry* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const TargetEntry& from); void MergeFrom(const TargetEntry& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TargetEntry* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TargetEntry"; } protected: explicit TargetEntry(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kResnameFieldNumber = 4, kXprFieldNumber = 1, kExprFieldNumber = 2, kResnoFieldNumber = 3, kRessortgrouprefFieldNumber = 5, kResorigtblFieldNumber = 6, kResorigcolFieldNumber = 7, kResjunkFieldNumber = 8, }; // string resname = 4 [json_name = "resname"]; void clear_resname(); const std::string& resname() const; void set_resname(const std::string& value); void set_resname(std::string&& value); void set_resname(const char* value); void set_resname(const char* value, size_t size); std::string* mutable_resname(); std::string* release_resname(); void set_allocated_resname(std::string* resname); private: const std::string& _internal_resname() const; void _internal_set_resname(const std::string& value); std::string* _internal_mutable_resname(); public: // .pg_query.Node xpr = 1 [json_name = "xpr"]; bool has_xpr() const; private: bool _internal_has_xpr() const; public: void clear_xpr(); const ::pg_query::Node& xpr() const; ::pg_query::Node* release_xpr(); ::pg_query::Node* mutable_xpr(); void set_allocated_xpr(::pg_query::Node* xpr); private: const ::pg_query::Node& _internal_xpr() const; ::pg_query::Node* _internal_mutable_xpr(); public: void unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr); ::pg_query::Node* unsafe_arena_release_xpr(); // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Node& expr() const; ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // int32 resno = 3 [json_name = "resno"]; void clear_resno(); ::PROTOBUF_NAMESPACE_ID::int32 resno() const; void set_resno(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_resno() const; void _internal_set_resno(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; void clear_ressortgroupref(); ::PROTOBUF_NAMESPACE_ID::uint32 ressortgroupref() const; void set_ressortgroupref(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_ressortgroupref() const; void _internal_set_ressortgroupref(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; void clear_resorigtbl(); ::PROTOBUF_NAMESPACE_ID::uint32 resorigtbl() const; void set_resorigtbl(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_resorigtbl() const; void _internal_set_resorigtbl(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 resorigcol = 7 [json_name = "resorigcol"]; void clear_resorigcol(); ::PROTOBUF_NAMESPACE_ID::int32 resorigcol() const; void set_resorigcol(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_resorigcol() const; void _internal_set_resorigcol(::PROTOBUF_NAMESPACE_ID::int32 value); public: // bool resjunk = 8 [json_name = "resjunk"]; void clear_resjunk(); bool resjunk() const; void set_resjunk(bool value); private: bool _internal_resjunk() const; void _internal_set_resjunk(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.TargetEntry) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr resname_; ::pg_query::Node* xpr_; ::pg_query::Node* expr_; ::PROTOBUF_NAMESPACE_ID::int32 resno_; ::PROTOBUF_NAMESPACE_ID::uint32 ressortgroupref_; ::PROTOBUF_NAMESPACE_ID::uint32 resorigtbl_; ::PROTOBUF_NAMESPACE_ID::int32 resorigcol_; bool resjunk_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTblRef PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblRef) */ { public: inline RangeTblRef() : RangeTblRef(nullptr) {} virtual ~RangeTblRef(); RangeTblRef(const RangeTblRef& from); RangeTblRef(RangeTblRef&& from) noexcept : RangeTblRef() { *this = ::std::move(from); } inline RangeTblRef& operator=(const RangeTblRef& from) { CopyFrom(from); return *this; } inline RangeTblRef& operator=(RangeTblRef&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RangeTblRef& default_instance(); static inline const RangeTblRef* internal_default_instance() { return reinterpret_cast( &_RangeTblRef_default_instance_); } static constexpr int kIndexInFileMessages = 58; friend void swap(RangeTblRef& a, RangeTblRef& b) { a.Swap(&b); } inline void Swap(RangeTblRef* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTblRef* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RangeTblRef* New() const final { return CreateMaybeMessage(nullptr); } RangeTblRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RangeTblRef& from); void MergeFrom(const RangeTblRef& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTblRef* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTblRef"; } protected: explicit RangeTblRef(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRtindexFieldNumber = 1, }; // int32 rtindex = 1 [json_name = "rtindex"]; void clear_rtindex(); ::PROTOBUF_NAMESPACE_ID::int32 rtindex() const; void set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_rtindex() const; void _internal_set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTblRef) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::int32 rtindex_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class JoinExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.JoinExpr) */ { public: inline JoinExpr() : JoinExpr(nullptr) {} virtual ~JoinExpr(); JoinExpr(const JoinExpr& from); JoinExpr(JoinExpr&& from) noexcept : JoinExpr() { *this = ::std::move(from); } inline JoinExpr& operator=(const JoinExpr& from) { CopyFrom(from); return *this; } inline JoinExpr& operator=(JoinExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const JoinExpr& default_instance(); static inline const JoinExpr* internal_default_instance() { return reinterpret_cast( &_JoinExpr_default_instance_); } static constexpr int kIndexInFileMessages = 59; friend void swap(JoinExpr& a, JoinExpr& b) { a.Swap(&b); } inline void Swap(JoinExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(JoinExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline JoinExpr* New() const final { return CreateMaybeMessage(nullptr); } JoinExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const JoinExpr& from); void MergeFrom(const JoinExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(JoinExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.JoinExpr"; } protected: explicit JoinExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kUsingClauseFieldNumber = 5, kLargFieldNumber = 3, kRargFieldNumber = 4, kQualsFieldNumber = 6, kAliasFieldNumber = 7, kJointypeFieldNumber = 1, kIsNaturalFieldNumber = 2, kRtindexFieldNumber = 8, }; // repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; int using_clause_size() const; private: int _internal_using_clause_size() const; public: void clear_using_clause(); ::pg_query::Node* mutable_using_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_using_clause(); private: const ::pg_query::Node& _internal_using_clause(int index) const; ::pg_query::Node* _internal_add_using_clause(); public: const ::pg_query::Node& using_clause(int index) const; ::pg_query::Node* add_using_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& using_clause() const; // .pg_query.Node larg = 3 [json_name = "larg"]; bool has_larg() const; private: bool _internal_has_larg() const; public: void clear_larg(); const ::pg_query::Node& larg() const; ::pg_query::Node* release_larg(); ::pg_query::Node* mutable_larg(); void set_allocated_larg(::pg_query::Node* larg); private: const ::pg_query::Node& _internal_larg() const; ::pg_query::Node* _internal_mutable_larg(); public: void unsafe_arena_set_allocated_larg( ::pg_query::Node* larg); ::pg_query::Node* unsafe_arena_release_larg(); // .pg_query.Node rarg = 4 [json_name = "rarg"]; bool has_rarg() const; private: bool _internal_has_rarg() const; public: void clear_rarg(); const ::pg_query::Node& rarg() const; ::pg_query::Node* release_rarg(); ::pg_query::Node* mutable_rarg(); void set_allocated_rarg(::pg_query::Node* rarg); private: const ::pg_query::Node& _internal_rarg() const; ::pg_query::Node* _internal_mutable_rarg(); public: void unsafe_arena_set_allocated_rarg( ::pg_query::Node* rarg); ::pg_query::Node* unsafe_arena_release_rarg(); // .pg_query.Node quals = 6 [json_name = "quals"]; bool has_quals() const; private: bool _internal_has_quals() const; public: void clear_quals(); const ::pg_query::Node& quals() const; ::pg_query::Node* release_quals(); ::pg_query::Node* mutable_quals(); void set_allocated_quals(::pg_query::Node* quals); private: const ::pg_query::Node& _internal_quals() const; ::pg_query::Node* _internal_mutable_quals(); public: void unsafe_arena_set_allocated_quals( ::pg_query::Node* quals); ::pg_query::Node* unsafe_arena_release_quals(); // .pg_query.Alias alias = 7 [json_name = "alias"]; bool has_alias() const; private: bool _internal_has_alias() const; public: void clear_alias(); const ::pg_query::Alias& alias() const; ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; void clear_jointype(); ::pg_query::JoinType jointype() const; void set_jointype(::pg_query::JoinType value); private: ::pg_query::JoinType _internal_jointype() const; void _internal_set_jointype(::pg_query::JoinType value); public: // bool is_natural = 2 [json_name = "isNatural"]; void clear_is_natural(); bool is_natural() const; void set_is_natural(bool value); private: bool _internal_is_natural() const; void _internal_set_is_natural(bool value); public: // int32 rtindex = 8 [json_name = "rtindex"]; void clear_rtindex(); ::PROTOBUF_NAMESPACE_ID::int32 rtindex() const; void set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_rtindex() const; void _internal_set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.JoinExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > using_clause_; ::pg_query::Node* larg_; ::pg_query::Node* rarg_; ::pg_query::Node* quals_; ::pg_query::Alias* alias_; int jointype_; bool is_natural_; ::PROTOBUF_NAMESPACE_ID::int32 rtindex_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FromExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FromExpr) */ { public: inline FromExpr() : FromExpr(nullptr) {} virtual ~FromExpr(); FromExpr(const FromExpr& from); FromExpr(FromExpr&& from) noexcept : FromExpr() { *this = ::std::move(from); } inline FromExpr& operator=(const FromExpr& from) { CopyFrom(from); return *this; } inline FromExpr& operator=(FromExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const FromExpr& default_instance(); static inline const FromExpr* internal_default_instance() { return reinterpret_cast( &_FromExpr_default_instance_); } static constexpr int kIndexInFileMessages = 60; friend void swap(FromExpr& a, FromExpr& b) { a.Swap(&b); } inline void Swap(FromExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FromExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline FromExpr* New() const final { return CreateMaybeMessage(nullptr); } FromExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const FromExpr& from); void MergeFrom(const FromExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FromExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FromExpr"; } protected: explicit FromExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFromlistFieldNumber = 1, kQualsFieldNumber = 2, }; // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; int fromlist_size() const; private: int _internal_fromlist_size() const; public: void clear_fromlist(); ::pg_query::Node* mutable_fromlist(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fromlist(); private: const ::pg_query::Node& _internal_fromlist(int index) const; ::pg_query::Node* _internal_add_fromlist(); public: const ::pg_query::Node& fromlist(int index) const; ::pg_query::Node* add_fromlist(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fromlist() const; // .pg_query.Node quals = 2 [json_name = "quals"]; bool has_quals() const; private: bool _internal_has_quals() const; public: void clear_quals(); const ::pg_query::Node& quals() const; ::pg_query::Node* release_quals(); ::pg_query::Node* mutable_quals(); void set_allocated_quals(::pg_query::Node* quals); private: const ::pg_query::Node& _internal_quals() const; ::pg_query::Node* _internal_mutable_quals(); public: void unsafe_arena_set_allocated_quals( ::pg_query::Node* quals); ::pg_query::Node* unsafe_arena_release_quals(); // @@protoc_insertion_point(class_scope:pg_query.FromExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fromlist_; ::pg_query::Node* quals_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class OnConflictExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OnConflictExpr) */ { public: inline OnConflictExpr() : OnConflictExpr(nullptr) {} virtual ~OnConflictExpr(); OnConflictExpr(const OnConflictExpr& from); OnConflictExpr(OnConflictExpr&& from) noexcept : OnConflictExpr() { *this = ::std::move(from); } inline OnConflictExpr& operator=(const OnConflictExpr& from) { CopyFrom(from); return *this; } inline OnConflictExpr& operator=(OnConflictExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const OnConflictExpr& default_instance(); static inline const OnConflictExpr* internal_default_instance() { return reinterpret_cast( &_OnConflictExpr_default_instance_); } static constexpr int kIndexInFileMessages = 61; friend void swap(OnConflictExpr& a, OnConflictExpr& b) { a.Swap(&b); } inline void Swap(OnConflictExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OnConflictExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline OnConflictExpr* New() const final { return CreateMaybeMessage(nullptr); } OnConflictExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const OnConflictExpr& from); void MergeFrom(const OnConflictExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(OnConflictExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.OnConflictExpr"; } protected: explicit OnConflictExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArbiterElemsFieldNumber = 2, kOnConflictSetFieldNumber = 5, kExclRelTlistFieldNumber = 8, kArbiterWhereFieldNumber = 3, kOnConflictWhereFieldNumber = 6, kActionFieldNumber = 1, kConstraintFieldNumber = 4, kExclRelIndexFieldNumber = 7, }; // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; int arbiter_elems_size() const; private: int _internal_arbiter_elems_size() const; public: void clear_arbiter_elems(); ::pg_query::Node* mutable_arbiter_elems(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_arbiter_elems(); private: const ::pg_query::Node& _internal_arbiter_elems(int index) const; ::pg_query::Node* _internal_add_arbiter_elems(); public: const ::pg_query::Node& arbiter_elems(int index) const; ::pg_query::Node* add_arbiter_elems(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& arbiter_elems() const; // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; int on_conflict_set_size() const; private: int _internal_on_conflict_set_size() const; public: void clear_on_conflict_set(); ::pg_query::Node* mutable_on_conflict_set(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_on_conflict_set(); private: const ::pg_query::Node& _internal_on_conflict_set(int index) const; ::pg_query::Node* _internal_add_on_conflict_set(); public: const ::pg_query::Node& on_conflict_set(int index) const; ::pg_query::Node* add_on_conflict_set(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& on_conflict_set() const; // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; int excl_rel_tlist_size() const; private: int _internal_excl_rel_tlist_size() const; public: void clear_excl_rel_tlist(); ::pg_query::Node* mutable_excl_rel_tlist(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_excl_rel_tlist(); private: const ::pg_query::Node& _internal_excl_rel_tlist(int index) const; ::pg_query::Node* _internal_add_excl_rel_tlist(); public: const ::pg_query::Node& excl_rel_tlist(int index) const; ::pg_query::Node* add_excl_rel_tlist(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& excl_rel_tlist() const; // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; bool has_arbiter_where() const; private: bool _internal_has_arbiter_where() const; public: void clear_arbiter_where(); const ::pg_query::Node& arbiter_where() const; ::pg_query::Node* release_arbiter_where(); ::pg_query::Node* mutable_arbiter_where(); void set_allocated_arbiter_where(::pg_query::Node* arbiter_where); private: const ::pg_query::Node& _internal_arbiter_where() const; ::pg_query::Node* _internal_mutable_arbiter_where(); public: void unsafe_arena_set_allocated_arbiter_where( ::pg_query::Node* arbiter_where); ::pg_query::Node* unsafe_arena_release_arbiter_where(); // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; bool has_on_conflict_where() const; private: bool _internal_has_on_conflict_where() const; public: void clear_on_conflict_where(); const ::pg_query::Node& on_conflict_where() const; ::pg_query::Node* release_on_conflict_where(); ::pg_query::Node* mutable_on_conflict_where(); void set_allocated_on_conflict_where(::pg_query::Node* on_conflict_where); private: const ::pg_query::Node& _internal_on_conflict_where() const; ::pg_query::Node* _internal_mutable_on_conflict_where(); public: void unsafe_arena_set_allocated_on_conflict_where( ::pg_query::Node* on_conflict_where); ::pg_query::Node* unsafe_arena_release_on_conflict_where(); // .pg_query.OnConflictAction action = 1 [json_name = "action"]; void clear_action(); ::pg_query::OnConflictAction action() const; void set_action(::pg_query::OnConflictAction value); private: ::pg_query::OnConflictAction _internal_action() const; void _internal_set_action(::pg_query::OnConflictAction value); public: // uint32 constraint = 4 [json_name = "constraint"]; void clear_constraint(); ::PROTOBUF_NAMESPACE_ID::uint32 constraint() const; void set_constraint(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_constraint() const; void _internal_set_constraint(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; void clear_excl_rel_index(); ::PROTOBUF_NAMESPACE_ID::int32 excl_rel_index() const; void set_excl_rel_index(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_excl_rel_index() const; void _internal_set_excl_rel_index(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.OnConflictExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > arbiter_elems_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > on_conflict_set_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > excl_rel_tlist_; ::pg_query::Node* arbiter_where_; ::pg_query::Node* on_conflict_where_; int action_; ::PROTOBUF_NAMESPACE_ID::uint32 constraint_; ::PROTOBUF_NAMESPACE_ID::int32 excl_rel_index_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class IntoClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IntoClause) */ { public: inline IntoClause() : IntoClause(nullptr) {} virtual ~IntoClause(); IntoClause(const IntoClause& from); IntoClause(IntoClause&& from) noexcept : IntoClause() { *this = ::std::move(from); } inline IntoClause& operator=(const IntoClause& from) { CopyFrom(from); return *this; } inline IntoClause& operator=(IntoClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const IntoClause& default_instance(); static inline const IntoClause* internal_default_instance() { return reinterpret_cast( &_IntoClause_default_instance_); } static constexpr int kIndexInFileMessages = 62; friend void swap(IntoClause& a, IntoClause& b) { a.Swap(&b); } inline void Swap(IntoClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IntoClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline IntoClause* New() const final { return CreateMaybeMessage(nullptr); } IntoClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const IntoClause& from); void MergeFrom(const IntoClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(IntoClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.IntoClause"; } protected: explicit IntoClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kColNamesFieldNumber = 2, kOptionsFieldNumber = 4, kAccessMethodFieldNumber = 3, kTableSpaceNameFieldNumber = 6, kRelFieldNumber = 1, kViewQueryFieldNumber = 7, kOnCommitFieldNumber = 5, kSkipDataFieldNumber = 8, }; // repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; int col_names_size() const; private: int _internal_col_names_size() const; public: void clear_col_names(); ::pg_query::Node* mutable_col_names(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_col_names(); private: const ::pg_query::Node& _internal_col_names(int index) const; ::pg_query::Node* _internal_add_col_names(); public: const ::pg_query::Node& col_names(int index) const; ::pg_query::Node* add_col_names(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& col_names() const; // repeated .pg_query.Node options = 4 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string access_method = 3 [json_name = "accessMethod"]; void clear_access_method(); const std::string& access_method() const; void set_access_method(const std::string& value); void set_access_method(std::string&& value); void set_access_method(const char* value); void set_access_method(const char* value, size_t size); std::string* mutable_access_method(); std::string* release_access_method(); void set_allocated_access_method(std::string* access_method); private: const std::string& _internal_access_method() const; void _internal_set_access_method(const std::string& value); std::string* _internal_mutable_access_method(); public: // string table_space_name = 6 [json_name = "tableSpaceName"]; void clear_table_space_name(); const std::string& table_space_name() const; void set_table_space_name(const std::string& value); void set_table_space_name(std::string&& value); void set_table_space_name(const char* value); void set_table_space_name(const char* value, size_t size); std::string* mutable_table_space_name(); std::string* release_table_space_name(); void set_allocated_table_space_name(std::string* table_space_name); private: const std::string& _internal_table_space_name() const; void _internal_set_table_space_name(const std::string& value); std::string* _internal_mutable_table_space_name(); public: // .pg_query.RangeVar rel = 1 [json_name = "rel"]; bool has_rel() const; private: bool _internal_has_rel() const; public: void clear_rel(); const ::pg_query::RangeVar& rel() const; ::pg_query::RangeVar* release_rel(); ::pg_query::RangeVar* mutable_rel(); void set_allocated_rel(::pg_query::RangeVar* rel); private: const ::pg_query::RangeVar& _internal_rel() const; ::pg_query::RangeVar* _internal_mutable_rel(); public: void unsafe_arena_set_allocated_rel( ::pg_query::RangeVar* rel); ::pg_query::RangeVar* unsafe_arena_release_rel(); // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; bool has_view_query() const; private: bool _internal_has_view_query() const; public: void clear_view_query(); const ::pg_query::Node& view_query() const; ::pg_query::Node* release_view_query(); ::pg_query::Node* mutable_view_query(); void set_allocated_view_query(::pg_query::Node* view_query); private: const ::pg_query::Node& _internal_view_query() const; ::pg_query::Node* _internal_mutable_view_query(); public: void unsafe_arena_set_allocated_view_query( ::pg_query::Node* view_query); ::pg_query::Node* unsafe_arena_release_view_query(); // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; void clear_on_commit(); ::pg_query::OnCommitAction on_commit() const; void set_on_commit(::pg_query::OnCommitAction value); private: ::pg_query::OnCommitAction _internal_on_commit() const; void _internal_set_on_commit(::pg_query::OnCommitAction value); public: // bool skip_data = 8 [json_name = "skipData"]; void clear_skip_data(); bool skip_data() const; void set_skip_data(bool value); private: bool _internal_skip_data() const; void _internal_set_skip_data(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.IntoClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_names_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr table_space_name_; ::pg_query::RangeVar* rel_; ::pg_query::Node* view_query_; int on_commit_; bool skip_data_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RawStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RawStmt) */ { public: inline RawStmt() : RawStmt(nullptr) {} virtual ~RawStmt(); RawStmt(const RawStmt& from); RawStmt(RawStmt&& from) noexcept : RawStmt() { *this = ::std::move(from); } inline RawStmt& operator=(const RawStmt& from) { CopyFrom(from); return *this; } inline RawStmt& operator=(RawStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RawStmt& default_instance(); static inline const RawStmt* internal_default_instance() { return reinterpret_cast( &_RawStmt_default_instance_); } static constexpr int kIndexInFileMessages = 63; friend void swap(RawStmt& a, RawStmt& b) { a.Swap(&b); } inline void Swap(RawStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RawStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RawStmt* New() const final { return CreateMaybeMessage(nullptr); } RawStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RawStmt& from); void MergeFrom(const RawStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RawStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RawStmt"; } protected: explicit RawStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kStmtFieldNumber = 1, kStmtLocationFieldNumber = 2, kStmtLenFieldNumber = 3, }; // .pg_query.Node stmt = 1 [json_name = "stmt"]; bool has_stmt() const; private: bool _internal_has_stmt() const; public: void clear_stmt(); const ::pg_query::Node& stmt() const; ::pg_query::Node* release_stmt(); ::pg_query::Node* mutable_stmt(); void set_allocated_stmt(::pg_query::Node* stmt); private: const ::pg_query::Node& _internal_stmt() const; ::pg_query::Node* _internal_mutable_stmt(); public: void unsafe_arena_set_allocated_stmt( ::pg_query::Node* stmt); ::pg_query::Node* unsafe_arena_release_stmt(); // int32 stmt_location = 2 [json_name = "stmt_location"]; void clear_stmt_location(); ::PROTOBUF_NAMESPACE_ID::int32 stmt_location() const; void set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_stmt_location() const; void _internal_set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 stmt_len = 3 [json_name = "stmt_len"]; void clear_stmt_len(); ::PROTOBUF_NAMESPACE_ID::int32 stmt_len() const; void set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_stmt_len() const; void _internal_set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RawStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* stmt_; ::PROTOBUF_NAMESPACE_ID::int32 stmt_location_; ::PROTOBUF_NAMESPACE_ID::int32 stmt_len_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Query PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Query) */ { public: inline Query() : Query(nullptr) {} virtual ~Query(); Query(const Query& from); Query(Query&& from) noexcept : Query() { *this = ::std::move(from); } inline Query& operator=(const Query& from) { CopyFrom(from); return *this; } inline Query& operator=(Query&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Query& default_instance(); static inline const Query* internal_default_instance() { return reinterpret_cast( &_Query_default_instance_); } static constexpr int kIndexInFileMessages = 64; friend void swap(Query& a, Query& b) { a.Swap(&b); } inline void Swap(Query* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Query* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Query* New() const final { return CreateMaybeMessage(nullptr); } Query* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Query& from); void MergeFrom(const Query& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Query* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Query"; } protected: explicit Query(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCteListFieldNumber = 15, kRtableFieldNumber = 16, kTargetListFieldNumber = 18, kReturningListFieldNumber = 21, kGroupClauseFieldNumber = 22, kGroupingSetsFieldNumber = 23, kWindowClauseFieldNumber = 25, kDistinctClauseFieldNumber = 26, kSortClauseFieldNumber = 27, kRowMarksFieldNumber = 31, kConstraintDepsFieldNumber = 33, kWithCheckOptionsFieldNumber = 34, kUtilityStmtFieldNumber = 4, kJointreeFieldNumber = 17, kOnConflictFieldNumber = 20, kHavingQualFieldNumber = 24, kLimitOffsetFieldNumber = 28, kLimitCountFieldNumber = 29, kSetOperationsFieldNumber = 32, kCommandTypeFieldNumber = 1, kQuerySourceFieldNumber = 2, kResultRelationFieldNumber = 5, kCanSetTagFieldNumber = 3, kHasAggsFieldNumber = 6, kHasWindowFuncsFieldNumber = 7, kHasTargetSrfsFieldNumber = 8, kHasSubLinksFieldNumber = 9, kHasDistinctOnFieldNumber = 10, kHasRecursiveFieldNumber = 11, kHasModifyingCteFieldNumber = 12, kHasForUpdateFieldNumber = 13, kHasRowSecurityFieldNumber = 14, kOverrideFieldNumber = 19, kLimitOptionFieldNumber = 30, kStmtLocationFieldNumber = 35, kStmtLenFieldNumber = 36, }; // repeated .pg_query.Node cte_list = 15 [json_name = "cteList"]; int cte_list_size() const; private: int _internal_cte_list_size() const; public: void clear_cte_list(); ::pg_query::Node* mutable_cte_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cte_list(); private: const ::pg_query::Node& _internal_cte_list(int index) const; ::pg_query::Node* _internal_add_cte_list(); public: const ::pg_query::Node& cte_list(int index) const; ::pg_query::Node* add_cte_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cte_list() const; // repeated .pg_query.Node rtable = 16 [json_name = "rtable"]; int rtable_size() const; private: int _internal_rtable_size() const; public: void clear_rtable(); ::pg_query::Node* mutable_rtable(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_rtable(); private: const ::pg_query::Node& _internal_rtable(int index) const; ::pg_query::Node* _internal_add_rtable(); public: const ::pg_query::Node& rtable(int index) const; ::pg_query::Node* add_rtable(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& rtable() const; // repeated .pg_query.Node target_list = 18 [json_name = "targetList"]; int target_list_size() const; private: int _internal_target_list_size() const; public: void clear_target_list(); ::pg_query::Node* mutable_target_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::pg_query::Node& _internal_target_list(int index) const; ::pg_query::Node* _internal_add_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node returning_list = 21 [json_name = "returningList"]; int returning_list_size() const; private: int _internal_returning_list_size() const; public: void clear_returning_list(); ::pg_query::Node* mutable_returning_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::pg_query::Node& _internal_returning_list(int index) const; ::pg_query::Node* _internal_add_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // repeated .pg_query.Node group_clause = 22 [json_name = "groupClause"]; int group_clause_size() const; private: int _internal_group_clause_size() const; public: void clear_group_clause(); ::pg_query::Node* mutable_group_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_group_clause(); private: const ::pg_query::Node& _internal_group_clause(int index) const; ::pg_query::Node* _internal_add_group_clause(); public: const ::pg_query::Node& group_clause(int index) const; ::pg_query::Node* add_group_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& group_clause() const; // repeated .pg_query.Node grouping_sets = 23 [json_name = "groupingSets"]; int grouping_sets_size() const; private: int _internal_grouping_sets_size() const; public: void clear_grouping_sets(); ::pg_query::Node* mutable_grouping_sets(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_grouping_sets(); private: const ::pg_query::Node& _internal_grouping_sets(int index) const; ::pg_query::Node* _internal_add_grouping_sets(); public: const ::pg_query::Node& grouping_sets(int index) const; ::pg_query::Node* add_grouping_sets(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& grouping_sets() const; // repeated .pg_query.Node window_clause = 25 [json_name = "windowClause"]; int window_clause_size() const; private: int _internal_window_clause_size() const; public: void clear_window_clause(); ::pg_query::Node* mutable_window_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_window_clause(); private: const ::pg_query::Node& _internal_window_clause(int index) const; ::pg_query::Node* _internal_add_window_clause(); public: const ::pg_query::Node& window_clause(int index) const; ::pg_query::Node* add_window_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& window_clause() const; // repeated .pg_query.Node distinct_clause = 26 [json_name = "distinctClause"]; int distinct_clause_size() const; private: int _internal_distinct_clause_size() const; public: void clear_distinct_clause(); ::pg_query::Node* mutable_distinct_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_distinct_clause(); private: const ::pg_query::Node& _internal_distinct_clause(int index) const; ::pg_query::Node* _internal_add_distinct_clause(); public: const ::pg_query::Node& distinct_clause(int index) const; ::pg_query::Node* add_distinct_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& distinct_clause() const; // repeated .pg_query.Node sort_clause = 27 [json_name = "sortClause"]; int sort_clause_size() const; private: int _internal_sort_clause_size() const; public: void clear_sort_clause(); ::pg_query::Node* mutable_sort_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_sort_clause(); private: const ::pg_query::Node& _internal_sort_clause(int index) const; ::pg_query::Node* _internal_add_sort_clause(); public: const ::pg_query::Node& sort_clause(int index) const; ::pg_query::Node* add_sort_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& sort_clause() const; // repeated .pg_query.Node row_marks = 31 [json_name = "rowMarks"]; int row_marks_size() const; private: int _internal_row_marks_size() const; public: void clear_row_marks(); ::pg_query::Node* mutable_row_marks(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_row_marks(); private: const ::pg_query::Node& _internal_row_marks(int index) const; ::pg_query::Node* _internal_add_row_marks(); public: const ::pg_query::Node& row_marks(int index) const; ::pg_query::Node* add_row_marks(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& row_marks() const; // repeated .pg_query.Node constraint_deps = 33 [json_name = "constraintDeps"]; int constraint_deps_size() const; private: int _internal_constraint_deps_size() const; public: void clear_constraint_deps(); ::pg_query::Node* mutable_constraint_deps(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_constraint_deps(); private: const ::pg_query::Node& _internal_constraint_deps(int index) const; ::pg_query::Node* _internal_add_constraint_deps(); public: const ::pg_query::Node& constraint_deps(int index) const; ::pg_query::Node* add_constraint_deps(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& constraint_deps() const; // repeated .pg_query.Node with_check_options = 34 [json_name = "withCheckOptions"]; int with_check_options_size() const; private: int _internal_with_check_options_size() const; public: void clear_with_check_options(); ::pg_query::Node* mutable_with_check_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_with_check_options(); private: const ::pg_query::Node& _internal_with_check_options(int index) const; ::pg_query::Node* _internal_add_with_check_options(); public: const ::pg_query::Node& with_check_options(int index) const; ::pg_query::Node* add_with_check_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& with_check_options() const; // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; bool has_utility_stmt() const; private: bool _internal_has_utility_stmt() const; public: void clear_utility_stmt(); const ::pg_query::Node& utility_stmt() const; ::pg_query::Node* release_utility_stmt(); ::pg_query::Node* mutable_utility_stmt(); void set_allocated_utility_stmt(::pg_query::Node* utility_stmt); private: const ::pg_query::Node& _internal_utility_stmt() const; ::pg_query::Node* _internal_mutable_utility_stmt(); public: void unsafe_arena_set_allocated_utility_stmt( ::pg_query::Node* utility_stmt); ::pg_query::Node* unsafe_arena_release_utility_stmt(); // .pg_query.FromExpr jointree = 17 [json_name = "jointree"]; bool has_jointree() const; private: bool _internal_has_jointree() const; public: void clear_jointree(); const ::pg_query::FromExpr& jointree() const; ::pg_query::FromExpr* release_jointree(); ::pg_query::FromExpr* mutable_jointree(); void set_allocated_jointree(::pg_query::FromExpr* jointree); private: const ::pg_query::FromExpr& _internal_jointree() const; ::pg_query::FromExpr* _internal_mutable_jointree(); public: void unsafe_arena_set_allocated_jointree( ::pg_query::FromExpr* jointree); ::pg_query::FromExpr* unsafe_arena_release_jointree(); // .pg_query.OnConflictExpr on_conflict = 20 [json_name = "onConflict"]; bool has_on_conflict() const; private: bool _internal_has_on_conflict() const; public: void clear_on_conflict(); const ::pg_query::OnConflictExpr& on_conflict() const; ::pg_query::OnConflictExpr* release_on_conflict(); ::pg_query::OnConflictExpr* mutable_on_conflict(); void set_allocated_on_conflict(::pg_query::OnConflictExpr* on_conflict); private: const ::pg_query::OnConflictExpr& _internal_on_conflict() const; ::pg_query::OnConflictExpr* _internal_mutable_on_conflict(); public: void unsafe_arena_set_allocated_on_conflict( ::pg_query::OnConflictExpr* on_conflict); ::pg_query::OnConflictExpr* unsafe_arena_release_on_conflict(); // .pg_query.Node having_qual = 24 [json_name = "havingQual"]; bool has_having_qual() const; private: bool _internal_has_having_qual() const; public: void clear_having_qual(); const ::pg_query::Node& having_qual() const; ::pg_query::Node* release_having_qual(); ::pg_query::Node* mutable_having_qual(); void set_allocated_having_qual(::pg_query::Node* having_qual); private: const ::pg_query::Node& _internal_having_qual() const; ::pg_query::Node* _internal_mutable_having_qual(); public: void unsafe_arena_set_allocated_having_qual( ::pg_query::Node* having_qual); ::pg_query::Node* unsafe_arena_release_having_qual(); // .pg_query.Node limit_offset = 28 [json_name = "limitOffset"]; bool has_limit_offset() const; private: bool _internal_has_limit_offset() const; public: void clear_limit_offset(); const ::pg_query::Node& limit_offset() const; ::pg_query::Node* release_limit_offset(); ::pg_query::Node* mutable_limit_offset(); void set_allocated_limit_offset(::pg_query::Node* limit_offset); private: const ::pg_query::Node& _internal_limit_offset() const; ::pg_query::Node* _internal_mutable_limit_offset(); public: void unsafe_arena_set_allocated_limit_offset( ::pg_query::Node* limit_offset); ::pg_query::Node* unsafe_arena_release_limit_offset(); // .pg_query.Node limit_count = 29 [json_name = "limitCount"]; bool has_limit_count() const; private: bool _internal_has_limit_count() const; public: void clear_limit_count(); const ::pg_query::Node& limit_count() const; ::pg_query::Node* release_limit_count(); ::pg_query::Node* mutable_limit_count(); void set_allocated_limit_count(::pg_query::Node* limit_count); private: const ::pg_query::Node& _internal_limit_count() const; ::pg_query::Node* _internal_mutable_limit_count(); public: void unsafe_arena_set_allocated_limit_count( ::pg_query::Node* limit_count); ::pg_query::Node* unsafe_arena_release_limit_count(); // .pg_query.Node set_operations = 32 [json_name = "setOperations"]; bool has_set_operations() const; private: bool _internal_has_set_operations() const; public: void clear_set_operations(); const ::pg_query::Node& set_operations() const; ::pg_query::Node* release_set_operations(); ::pg_query::Node* mutable_set_operations(); void set_allocated_set_operations(::pg_query::Node* set_operations); private: const ::pg_query::Node& _internal_set_operations() const; ::pg_query::Node* _internal_mutable_set_operations(); public: void unsafe_arena_set_allocated_set_operations( ::pg_query::Node* set_operations); ::pg_query::Node* unsafe_arena_release_set_operations(); // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; void clear_command_type(); ::pg_query::CmdType command_type() const; void set_command_type(::pg_query::CmdType value); private: ::pg_query::CmdType _internal_command_type() const; void _internal_set_command_type(::pg_query::CmdType value); public: // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; void clear_query_source(); ::pg_query::QuerySource query_source() const; void set_query_source(::pg_query::QuerySource value); private: ::pg_query::QuerySource _internal_query_source() const; void _internal_set_query_source(::pg_query::QuerySource value); public: // int32 result_relation = 5 [json_name = "resultRelation"]; void clear_result_relation(); ::PROTOBUF_NAMESPACE_ID::int32 result_relation() const; void set_result_relation(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_result_relation() const; void _internal_set_result_relation(::PROTOBUF_NAMESPACE_ID::int32 value); public: // bool can_set_tag = 3 [json_name = "canSetTag"]; void clear_can_set_tag(); bool can_set_tag() const; void set_can_set_tag(bool value); private: bool _internal_can_set_tag() const; void _internal_set_can_set_tag(bool value); public: // bool has_aggs = 6 [json_name = "hasAggs"]; void clear_has_aggs(); bool has_aggs() const; void set_has_aggs(bool value); private: bool _internal_has_aggs() const; void _internal_set_has_aggs(bool value); public: // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; void clear_has_window_funcs(); bool has_window_funcs() const; void set_has_window_funcs(bool value); private: bool _internal_has_window_funcs() const; void _internal_set_has_window_funcs(bool value); public: // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; void clear_has_target_srfs(); bool has_target_srfs() const; void set_has_target_srfs(bool value); private: bool _internal_has_target_srfs() const; void _internal_set_has_target_srfs(bool value); public: // bool has_sub_links = 9 [json_name = "hasSubLinks"]; void clear_has_sub_links(); bool has_sub_links() const; void set_has_sub_links(bool value); private: bool _internal_has_sub_links() const; void _internal_set_has_sub_links(bool value); public: // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; void clear_has_distinct_on(); bool has_distinct_on() const; void set_has_distinct_on(bool value); private: bool _internal_has_distinct_on() const; void _internal_set_has_distinct_on(bool value); public: // bool has_recursive = 11 [json_name = "hasRecursive"]; void clear_has_recursive(); bool has_recursive() const; void set_has_recursive(bool value); private: bool _internal_has_recursive() const; void _internal_set_has_recursive(bool value); public: // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; void clear_has_modifying_cte(); bool has_modifying_cte() const; void set_has_modifying_cte(bool value); private: bool _internal_has_modifying_cte() const; void _internal_set_has_modifying_cte(bool value); public: // bool has_for_update = 13 [json_name = "hasForUpdate"]; void clear_has_for_update(); bool has_for_update() const; void set_has_for_update(bool value); private: bool _internal_has_for_update() const; void _internal_set_has_for_update(bool value); public: // bool has_row_security = 14 [json_name = "hasRowSecurity"]; void clear_has_row_security(); bool has_row_security() const; void set_has_row_security(bool value); private: bool _internal_has_row_security() const; void _internal_set_has_row_security(bool value); public: // .pg_query.OverridingKind override = 19 [json_name = "override"]; void clear_override(); ::pg_query::OverridingKind override() const; void set_override(::pg_query::OverridingKind value); private: ::pg_query::OverridingKind _internal_override() const; void _internal_set_override(::pg_query::OverridingKind value); public: // .pg_query.LimitOption limit_option = 30 [json_name = "limitOption"]; void clear_limit_option(); ::pg_query::LimitOption limit_option() const; void set_limit_option(::pg_query::LimitOption value); private: ::pg_query::LimitOption _internal_limit_option() const; void _internal_set_limit_option(::pg_query::LimitOption value); public: // int32 stmt_location = 35 [json_name = "stmt_location"]; void clear_stmt_location(); ::PROTOBUF_NAMESPACE_ID::int32 stmt_location() const; void set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_stmt_location() const; void _internal_set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 stmt_len = 36 [json_name = "stmt_len"]; void clear_stmt_len(); ::PROTOBUF_NAMESPACE_ID::int32 stmt_len() const; void set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_stmt_len() const; void _internal_set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.Query) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cte_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > rtable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > group_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > grouping_sets_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > window_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > distinct_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > sort_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > row_marks_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraint_deps_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > with_check_options_; ::pg_query::Node* utility_stmt_; ::pg_query::FromExpr* jointree_; ::pg_query::OnConflictExpr* on_conflict_; ::pg_query::Node* having_qual_; ::pg_query::Node* limit_offset_; ::pg_query::Node* limit_count_; ::pg_query::Node* set_operations_; int command_type_; int query_source_; ::PROTOBUF_NAMESPACE_ID::int32 result_relation_; bool can_set_tag_; bool has_aggs_; bool has_window_funcs_; bool has_target_srfs_; bool has_sub_links_; bool has_distinct_on_; bool has_recursive_; bool has_modifying_cte_; bool has_for_update_; bool has_row_security_; int override_; int limit_option_; ::PROTOBUF_NAMESPACE_ID::int32 stmt_location_; ::PROTOBUF_NAMESPACE_ID::int32 stmt_len_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class InsertStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InsertStmt) */ { public: inline InsertStmt() : InsertStmt(nullptr) {} virtual ~InsertStmt(); InsertStmt(const InsertStmt& from); InsertStmt(InsertStmt&& from) noexcept : InsertStmt() { *this = ::std::move(from); } inline InsertStmt& operator=(const InsertStmt& from) { CopyFrom(from); return *this; } inline InsertStmt& operator=(InsertStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const InsertStmt& default_instance(); static inline const InsertStmt* internal_default_instance() { return reinterpret_cast( &_InsertStmt_default_instance_); } static constexpr int kIndexInFileMessages = 65; friend void swap(InsertStmt& a, InsertStmt& b) { a.Swap(&b); } inline void Swap(InsertStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InsertStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline InsertStmt* New() const final { return CreateMaybeMessage(nullptr); } InsertStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const InsertStmt& from); void MergeFrom(const InsertStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(InsertStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.InsertStmt"; } protected: explicit InsertStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kColsFieldNumber = 2, kReturningListFieldNumber = 5, kRelationFieldNumber = 1, kSelectStmtFieldNumber = 3, kOnConflictClauseFieldNumber = 4, kWithClauseFieldNumber = 6, kOverrideFieldNumber = 7, }; // repeated .pg_query.Node cols = 2 [json_name = "cols"]; int cols_size() const; private: int _internal_cols_size() const; public: void clear_cols(); ::pg_query::Node* mutable_cols(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cols(); private: const ::pg_query::Node& _internal_cols(int index) const; ::pg_query::Node* _internal_add_cols(); public: const ::pg_query::Node& cols(int index) const; ::pg_query::Node* add_cols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cols() const; // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; int returning_list_size() const; private: int _internal_returning_list_size() const; public: void clear_returning_list(); ::pg_query::Node* mutable_returning_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::pg_query::Node& _internal_returning_list(int index) const; ::pg_query::Node* _internal_add_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; bool has_select_stmt() const; private: bool _internal_has_select_stmt() const; public: void clear_select_stmt(); const ::pg_query::Node& select_stmt() const; ::pg_query::Node* release_select_stmt(); ::pg_query::Node* mutable_select_stmt(); void set_allocated_select_stmt(::pg_query::Node* select_stmt); private: const ::pg_query::Node& _internal_select_stmt() const; ::pg_query::Node* _internal_mutable_select_stmt(); public: void unsafe_arena_set_allocated_select_stmt( ::pg_query::Node* select_stmt); ::pg_query::Node* unsafe_arena_release_select_stmt(); // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; bool has_on_conflict_clause() const; private: bool _internal_has_on_conflict_clause() const; public: void clear_on_conflict_clause(); const ::pg_query::OnConflictClause& on_conflict_clause() const; ::pg_query::OnConflictClause* release_on_conflict_clause(); ::pg_query::OnConflictClause* mutable_on_conflict_clause(); void set_allocated_on_conflict_clause(::pg_query::OnConflictClause* on_conflict_clause); private: const ::pg_query::OnConflictClause& _internal_on_conflict_clause() const; ::pg_query::OnConflictClause* _internal_mutable_on_conflict_clause(); public: void unsafe_arena_set_allocated_on_conflict_clause( ::pg_query::OnConflictClause* on_conflict_clause); ::pg_query::OnConflictClause* unsafe_arena_release_on_conflict_clause(); // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; bool has_with_clause() const; private: bool _internal_has_with_clause() const; public: void clear_with_clause(); const ::pg_query::WithClause& with_clause() const; ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // .pg_query.OverridingKind override = 7 [json_name = "override"]; void clear_override(); ::pg_query::OverridingKind override() const; void set_override(::pg_query::OverridingKind value); private: ::pg_query::OverridingKind _internal_override() const; void _internal_set_override(::pg_query::OverridingKind value); public: // @@protoc_insertion_point(class_scope:pg_query.InsertStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cols_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; ::pg_query::RangeVar* relation_; ::pg_query::Node* select_stmt_; ::pg_query::OnConflictClause* on_conflict_clause_; ::pg_query::WithClause* with_clause_; int override_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DeleteStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DeleteStmt) */ { public: inline DeleteStmt() : DeleteStmt(nullptr) {} virtual ~DeleteStmt(); DeleteStmt(const DeleteStmt& from); DeleteStmt(DeleteStmt&& from) noexcept : DeleteStmt() { *this = ::std::move(from); } inline DeleteStmt& operator=(const DeleteStmt& from) { CopyFrom(from); return *this; } inline DeleteStmt& operator=(DeleteStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DeleteStmt& default_instance(); static inline const DeleteStmt* internal_default_instance() { return reinterpret_cast( &_DeleteStmt_default_instance_); } static constexpr int kIndexInFileMessages = 66; friend void swap(DeleteStmt& a, DeleteStmt& b) { a.Swap(&b); } inline void Swap(DeleteStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DeleteStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DeleteStmt* New() const final { return CreateMaybeMessage(nullptr); } DeleteStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DeleteStmt& from); void MergeFrom(const DeleteStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DeleteStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DeleteStmt"; } protected: explicit DeleteStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kUsingClauseFieldNumber = 2, kReturningListFieldNumber = 4, kRelationFieldNumber = 1, kWhereClauseFieldNumber = 3, kWithClauseFieldNumber = 5, }; // repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; int using_clause_size() const; private: int _internal_using_clause_size() const; public: void clear_using_clause(); ::pg_query::Node* mutable_using_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_using_clause(); private: const ::pg_query::Node& _internal_using_clause(int index) const; ::pg_query::Node* _internal_add_using_clause(); public: const ::pg_query::Node& using_clause(int index) const; ::pg_query::Node* add_using_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& using_clause() const; // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; int returning_list_size() const; private: int _internal_returning_list_size() const; public: void clear_returning_list(); ::pg_query::Node* mutable_returning_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::pg_query::Node& _internal_returning_list(int index) const; ::pg_query::Node* _internal_add_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; bool has_with_clause() const; private: bool _internal_has_with_clause() const; public: void clear_with_clause(); const ::pg_query::WithClause& with_clause() const; ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // @@protoc_insertion_point(class_scope:pg_query.DeleteStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > using_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; ::pg_query::WithClause* with_clause_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class UpdateStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.UpdateStmt) */ { public: inline UpdateStmt() : UpdateStmt(nullptr) {} virtual ~UpdateStmt(); UpdateStmt(const UpdateStmt& from); UpdateStmt(UpdateStmt&& from) noexcept : UpdateStmt() { *this = ::std::move(from); } inline UpdateStmt& operator=(const UpdateStmt& from) { CopyFrom(from); return *this; } inline UpdateStmt& operator=(UpdateStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const UpdateStmt& default_instance(); static inline const UpdateStmt* internal_default_instance() { return reinterpret_cast( &_UpdateStmt_default_instance_); } static constexpr int kIndexInFileMessages = 67; friend void swap(UpdateStmt& a, UpdateStmt& b) { a.Swap(&b); } inline void Swap(UpdateStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(UpdateStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline UpdateStmt* New() const final { return CreateMaybeMessage(nullptr); } UpdateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const UpdateStmt& from); void MergeFrom(const UpdateStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(UpdateStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.UpdateStmt"; } protected: explicit UpdateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTargetListFieldNumber = 2, kFromClauseFieldNumber = 4, kReturningListFieldNumber = 5, kRelationFieldNumber = 1, kWhereClauseFieldNumber = 3, kWithClauseFieldNumber = 6, }; // repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; int target_list_size() const; private: int _internal_target_list_size() const; public: void clear_target_list(); ::pg_query::Node* mutable_target_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::pg_query::Node& _internal_target_list(int index) const; ::pg_query::Node* _internal_add_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; int from_clause_size() const; private: int _internal_from_clause_size() const; public: void clear_from_clause(); ::pg_query::Node* mutable_from_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_from_clause(); private: const ::pg_query::Node& _internal_from_clause(int index) const; ::pg_query::Node* _internal_add_from_clause(); public: const ::pg_query::Node& from_clause(int index) const; ::pg_query::Node* add_from_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& from_clause() const; // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; int returning_list_size() const; private: int _internal_returning_list_size() const; public: void clear_returning_list(); ::pg_query::Node* mutable_returning_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_returning_list(); private: const ::pg_query::Node& _internal_returning_list(int index) const; ::pg_query::Node* _internal_add_returning_list(); public: const ::pg_query::Node& returning_list(int index) const; ::pg_query::Node* add_returning_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& returning_list() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; bool has_with_clause() const; private: bool _internal_has_with_clause() const; public: void clear_with_clause(); const ::pg_query::WithClause& with_clause() const; ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // @@protoc_insertion_point(class_scope:pg_query.UpdateStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > from_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > returning_list_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; ::pg_query::WithClause* with_clause_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SelectStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SelectStmt) */ { public: inline SelectStmt() : SelectStmt(nullptr) {} virtual ~SelectStmt(); SelectStmt(const SelectStmt& from); SelectStmt(SelectStmt&& from) noexcept : SelectStmt() { *this = ::std::move(from); } inline SelectStmt& operator=(const SelectStmt& from) { CopyFrom(from); return *this; } inline SelectStmt& operator=(SelectStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const SelectStmt& default_instance(); static inline const SelectStmt* internal_default_instance() { return reinterpret_cast( &_SelectStmt_default_instance_); } static constexpr int kIndexInFileMessages = 68; friend void swap(SelectStmt& a, SelectStmt& b) { a.Swap(&b); } inline void Swap(SelectStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SelectStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline SelectStmt* New() const final { return CreateMaybeMessage(nullptr); } SelectStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const SelectStmt& from); void MergeFrom(const SelectStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SelectStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SelectStmt"; } protected: explicit SelectStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDistinctClauseFieldNumber = 1, kTargetListFieldNumber = 3, kFromClauseFieldNumber = 4, kGroupClauseFieldNumber = 6, kWindowClauseFieldNumber = 8, kValuesListsFieldNumber = 9, kSortClauseFieldNumber = 10, kLockingClauseFieldNumber = 14, kIntoClauseFieldNumber = 2, kWhereClauseFieldNumber = 5, kHavingClauseFieldNumber = 7, kLimitOffsetFieldNumber = 11, kLimitCountFieldNumber = 12, kWithClauseFieldNumber = 15, kLargFieldNumber = 18, kRargFieldNumber = 19, kLimitOptionFieldNumber = 13, kOpFieldNumber = 16, kAllFieldNumber = 17, }; // repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; int distinct_clause_size() const; private: int _internal_distinct_clause_size() const; public: void clear_distinct_clause(); ::pg_query::Node* mutable_distinct_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_distinct_clause(); private: const ::pg_query::Node& _internal_distinct_clause(int index) const; ::pg_query::Node* _internal_add_distinct_clause(); public: const ::pg_query::Node& distinct_clause(int index) const; ::pg_query::Node* add_distinct_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& distinct_clause() const; // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; int target_list_size() const; private: int _internal_target_list_size() const; public: void clear_target_list(); ::pg_query::Node* mutable_target_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::pg_query::Node& _internal_target_list(int index) const; ::pg_query::Node* _internal_add_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& target_list() const; // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; int from_clause_size() const; private: int _internal_from_clause_size() const; public: void clear_from_clause(); ::pg_query::Node* mutable_from_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_from_clause(); private: const ::pg_query::Node& _internal_from_clause(int index) const; ::pg_query::Node* _internal_add_from_clause(); public: const ::pg_query::Node& from_clause(int index) const; ::pg_query::Node* add_from_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& from_clause() const; // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; int group_clause_size() const; private: int _internal_group_clause_size() const; public: void clear_group_clause(); ::pg_query::Node* mutable_group_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_group_clause(); private: const ::pg_query::Node& _internal_group_clause(int index) const; ::pg_query::Node* _internal_add_group_clause(); public: const ::pg_query::Node& group_clause(int index) const; ::pg_query::Node* add_group_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& group_clause() const; // repeated .pg_query.Node window_clause = 8 [json_name = "windowClause"]; int window_clause_size() const; private: int _internal_window_clause_size() const; public: void clear_window_clause(); ::pg_query::Node* mutable_window_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_window_clause(); private: const ::pg_query::Node& _internal_window_clause(int index) const; ::pg_query::Node* _internal_add_window_clause(); public: const ::pg_query::Node& window_clause(int index) const; ::pg_query::Node* add_window_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& window_clause() const; // repeated .pg_query.Node values_lists = 9 [json_name = "valuesLists"]; int values_lists_size() const; private: int _internal_values_lists_size() const; public: void clear_values_lists(); ::pg_query::Node* mutable_values_lists(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_values_lists(); private: const ::pg_query::Node& _internal_values_lists(int index) const; ::pg_query::Node* _internal_add_values_lists(); public: const ::pg_query::Node& values_lists(int index) const; ::pg_query::Node* add_values_lists(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& values_lists() const; // repeated .pg_query.Node sort_clause = 10 [json_name = "sortClause"]; int sort_clause_size() const; private: int _internal_sort_clause_size() const; public: void clear_sort_clause(); ::pg_query::Node* mutable_sort_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_sort_clause(); private: const ::pg_query::Node& _internal_sort_clause(int index) const; ::pg_query::Node* _internal_add_sort_clause(); public: const ::pg_query::Node& sort_clause(int index) const; ::pg_query::Node* add_sort_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& sort_clause() const; // repeated .pg_query.Node locking_clause = 14 [json_name = "lockingClause"]; int locking_clause_size() const; private: int _internal_locking_clause_size() const; public: void clear_locking_clause(); ::pg_query::Node* mutable_locking_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_locking_clause(); private: const ::pg_query::Node& _internal_locking_clause(int index) const; ::pg_query::Node* _internal_add_locking_clause(); public: const ::pg_query::Node& locking_clause(int index) const; ::pg_query::Node* add_locking_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& locking_clause() const; // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; bool has_into_clause() const; private: bool _internal_has_into_clause() const; public: void clear_into_clause(); const ::pg_query::IntoClause& into_clause() const; ::pg_query::IntoClause* release_into_clause(); ::pg_query::IntoClause* mutable_into_clause(); void set_allocated_into_clause(::pg_query::IntoClause* into_clause); private: const ::pg_query::IntoClause& _internal_into_clause() const; ::pg_query::IntoClause* _internal_mutable_into_clause(); public: void unsafe_arena_set_allocated_into_clause( ::pg_query::IntoClause* into_clause); ::pg_query::IntoClause* unsafe_arena_release_into_clause(); // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.Node having_clause = 7 [json_name = "havingClause"]; bool has_having_clause() const; private: bool _internal_has_having_clause() const; public: void clear_having_clause(); const ::pg_query::Node& having_clause() const; ::pg_query::Node* release_having_clause(); ::pg_query::Node* mutable_having_clause(); void set_allocated_having_clause(::pg_query::Node* having_clause); private: const ::pg_query::Node& _internal_having_clause() const; ::pg_query::Node* _internal_mutable_having_clause(); public: void unsafe_arena_set_allocated_having_clause( ::pg_query::Node* having_clause); ::pg_query::Node* unsafe_arena_release_having_clause(); // .pg_query.Node limit_offset = 11 [json_name = "limitOffset"]; bool has_limit_offset() const; private: bool _internal_has_limit_offset() const; public: void clear_limit_offset(); const ::pg_query::Node& limit_offset() const; ::pg_query::Node* release_limit_offset(); ::pg_query::Node* mutable_limit_offset(); void set_allocated_limit_offset(::pg_query::Node* limit_offset); private: const ::pg_query::Node& _internal_limit_offset() const; ::pg_query::Node* _internal_mutable_limit_offset(); public: void unsafe_arena_set_allocated_limit_offset( ::pg_query::Node* limit_offset); ::pg_query::Node* unsafe_arena_release_limit_offset(); // .pg_query.Node limit_count = 12 [json_name = "limitCount"]; bool has_limit_count() const; private: bool _internal_has_limit_count() const; public: void clear_limit_count(); const ::pg_query::Node& limit_count() const; ::pg_query::Node* release_limit_count(); ::pg_query::Node* mutable_limit_count(); void set_allocated_limit_count(::pg_query::Node* limit_count); private: const ::pg_query::Node& _internal_limit_count() const; ::pg_query::Node* _internal_mutable_limit_count(); public: void unsafe_arena_set_allocated_limit_count( ::pg_query::Node* limit_count); ::pg_query::Node* unsafe_arena_release_limit_count(); // .pg_query.WithClause with_clause = 15 [json_name = "withClause"]; bool has_with_clause() const; private: bool _internal_has_with_clause() const; public: void clear_with_clause(); const ::pg_query::WithClause& with_clause() const; ::pg_query::WithClause* release_with_clause(); ::pg_query::WithClause* mutable_with_clause(); void set_allocated_with_clause(::pg_query::WithClause* with_clause); private: const ::pg_query::WithClause& _internal_with_clause() const; ::pg_query::WithClause* _internal_mutable_with_clause(); public: void unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause); ::pg_query::WithClause* unsafe_arena_release_with_clause(); // .pg_query.SelectStmt larg = 18 [json_name = "larg"]; bool has_larg() const; private: bool _internal_has_larg() const; public: void clear_larg(); const ::pg_query::SelectStmt& larg() const; ::pg_query::SelectStmt* release_larg(); ::pg_query::SelectStmt* mutable_larg(); void set_allocated_larg(::pg_query::SelectStmt* larg); private: const ::pg_query::SelectStmt& _internal_larg() const; ::pg_query::SelectStmt* _internal_mutable_larg(); public: void unsafe_arena_set_allocated_larg( ::pg_query::SelectStmt* larg); ::pg_query::SelectStmt* unsafe_arena_release_larg(); // .pg_query.SelectStmt rarg = 19 [json_name = "rarg"]; bool has_rarg() const; private: bool _internal_has_rarg() const; public: void clear_rarg(); const ::pg_query::SelectStmt& rarg() const; ::pg_query::SelectStmt* release_rarg(); ::pg_query::SelectStmt* mutable_rarg(); void set_allocated_rarg(::pg_query::SelectStmt* rarg); private: const ::pg_query::SelectStmt& _internal_rarg() const; ::pg_query::SelectStmt* _internal_mutable_rarg(); public: void unsafe_arena_set_allocated_rarg( ::pg_query::SelectStmt* rarg); ::pg_query::SelectStmt* unsafe_arena_release_rarg(); // .pg_query.LimitOption limit_option = 13 [json_name = "limitOption"]; void clear_limit_option(); ::pg_query::LimitOption limit_option() const; void set_limit_option(::pg_query::LimitOption value); private: ::pg_query::LimitOption _internal_limit_option() const; void _internal_set_limit_option(::pg_query::LimitOption value); public: // .pg_query.SetOperation op = 16 [json_name = "op"]; void clear_op(); ::pg_query::SetOperation op() const; void set_op(::pg_query::SetOperation value); private: ::pg_query::SetOperation _internal_op() const; void _internal_set_op(::pg_query::SetOperation value); public: // bool all = 17 [json_name = "all"]; void clear_all(); bool all() const; void set_all(bool value); private: bool _internal_all() const; void _internal_set_all(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.SelectStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > distinct_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > from_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > group_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > window_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > values_lists_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > sort_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > locking_clause_; ::pg_query::IntoClause* into_clause_; ::pg_query::Node* where_clause_; ::pg_query::Node* having_clause_; ::pg_query::Node* limit_offset_; ::pg_query::Node* limit_count_; ::pg_query::WithClause* with_clause_; ::pg_query::SelectStmt* larg_; ::pg_query::SelectStmt* rarg_; int limit_option_; int op_; bool all_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTableStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableStmt) */ { public: inline AlterTableStmt() : AlterTableStmt(nullptr) {} virtual ~AlterTableStmt(); AlterTableStmt(const AlterTableStmt& from); AlterTableStmt(AlterTableStmt&& from) noexcept : AlterTableStmt() { *this = ::std::move(from); } inline AlterTableStmt& operator=(const AlterTableStmt& from) { CopyFrom(from); return *this; } inline AlterTableStmt& operator=(AlterTableStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterTableStmt& default_instance(); static inline const AlterTableStmt* internal_default_instance() { return reinterpret_cast( &_AlterTableStmt_default_instance_); } static constexpr int kIndexInFileMessages = 69; friend void swap(AlterTableStmt& a, AlterTableStmt& b) { a.Swap(&b); } inline void Swap(AlterTableStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterTableStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterTableStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterTableStmt& from); void MergeFrom(const AlterTableStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTableStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTableStmt"; } protected: explicit AlterTableStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCmdsFieldNumber = 2, kRelationFieldNumber = 1, kRelkindFieldNumber = 3, kMissingOkFieldNumber = 4, }; // repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; int cmds_size() const; private: int _internal_cmds_size() const; public: void clear_cmds(); ::pg_query::Node* mutable_cmds(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cmds(); private: const ::pg_query::Node& _internal_cmds(int index) const; ::pg_query::Node* _internal_add_cmds(); public: const ::pg_query::Node& cmds(int index) const; ::pg_query::Node* add_cmds(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cmds() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; void clear_relkind(); ::pg_query::ObjectType relkind() const; void set_relkind(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_relkind() const; void _internal_set_relkind(::pg_query::ObjectType value); public: // bool missing_ok = 4 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterTableStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cmds_; ::pg_query::RangeVar* relation_; int relkind_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTableCmd PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableCmd) */ { public: inline AlterTableCmd() : AlterTableCmd(nullptr) {} virtual ~AlterTableCmd(); AlterTableCmd(const AlterTableCmd& from); AlterTableCmd(AlterTableCmd&& from) noexcept : AlterTableCmd() { *this = ::std::move(from); } inline AlterTableCmd& operator=(const AlterTableCmd& from) { CopyFrom(from); return *this; } inline AlterTableCmd& operator=(AlterTableCmd&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterTableCmd& default_instance(); static inline const AlterTableCmd* internal_default_instance() { return reinterpret_cast( &_AlterTableCmd_default_instance_); } static constexpr int kIndexInFileMessages = 70; friend void swap(AlterTableCmd& a, AlterTableCmd& b) { a.Swap(&b); } inline void Swap(AlterTableCmd* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableCmd* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterTableCmd* New() const final { return CreateMaybeMessage(nullptr); } AlterTableCmd* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterTableCmd& from); void MergeFrom(const AlterTableCmd& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTableCmd* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTableCmd"; } protected: explicit AlterTableCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 2, kNewownerFieldNumber = 4, kDefFieldNumber = 5, kSubtypeFieldNumber = 1, kNumFieldNumber = 3, kBehaviorFieldNumber = 6, kMissingOkFieldNumber = 7, }; // string name = 2 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; bool has_newowner() const; private: bool _internal_has_newowner() const; public: void clear_newowner(); const ::pg_query::RoleSpec& newowner() const; ::pg_query::RoleSpec* release_newowner(); ::pg_query::RoleSpec* mutable_newowner(); void set_allocated_newowner(::pg_query::RoleSpec* newowner); private: const ::pg_query::RoleSpec& _internal_newowner() const; ::pg_query::RoleSpec* _internal_mutable_newowner(); public: void unsafe_arena_set_allocated_newowner( ::pg_query::RoleSpec* newowner); ::pg_query::RoleSpec* unsafe_arena_release_newowner(); // .pg_query.Node def = 5 [json_name = "def"]; bool has_def() const; private: bool _internal_has_def() const; public: void clear_def(); const ::pg_query::Node& def() const; ::pg_query::Node* release_def(); ::pg_query::Node* mutable_def(); void set_allocated_def(::pg_query::Node* def); private: const ::pg_query::Node& _internal_def() const; ::pg_query::Node* _internal_mutable_def(); public: void unsafe_arena_set_allocated_def( ::pg_query::Node* def); ::pg_query::Node* unsafe_arena_release_def(); // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; void clear_subtype(); ::pg_query::AlterTableType subtype() const; void set_subtype(::pg_query::AlterTableType value); private: ::pg_query::AlterTableType _internal_subtype() const; void _internal_set_subtype(::pg_query::AlterTableType value); public: // int32 num = 3 [json_name = "num"]; void clear_num(); ::PROTOBUF_NAMESPACE_ID::int32 num() const; void set_num(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_num() const; void _internal_set_num(::PROTOBUF_NAMESPACE_ID::int32 value); public: // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // bool missing_ok = 7 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterTableCmd) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::RoleSpec* newowner_; ::pg_query::Node* def_; int subtype_; ::PROTOBUF_NAMESPACE_ID::int32 num_; int behavior_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterDomainStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDomainStmt) */ { public: inline AlterDomainStmt() : AlterDomainStmt(nullptr) {} virtual ~AlterDomainStmt(); AlterDomainStmt(const AlterDomainStmt& from); AlterDomainStmt(AlterDomainStmt&& from) noexcept : AlterDomainStmt() { *this = ::std::move(from); } inline AlterDomainStmt& operator=(const AlterDomainStmt& from) { CopyFrom(from); return *this; } inline AlterDomainStmt& operator=(AlterDomainStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterDomainStmt& default_instance(); static inline const AlterDomainStmt* internal_default_instance() { return reinterpret_cast( &_AlterDomainStmt_default_instance_); } static constexpr int kIndexInFileMessages = 71; friend void swap(AlterDomainStmt& a, AlterDomainStmt& b) { a.Swap(&b); } inline void Swap(AlterDomainStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDomainStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterDomainStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterDomainStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterDomainStmt& from); void MergeFrom(const AlterDomainStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterDomainStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterDomainStmt"; } protected: explicit AlterDomainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTypeNameFieldNumber = 2, kSubtypeFieldNumber = 1, kNameFieldNumber = 3, kDefFieldNumber = 4, kBehaviorFieldNumber = 5, kMissingOkFieldNumber = 6, }; // repeated .pg_query.Node type_name = 2 [json_name = "typeName"]; int type_name_size() const; private: int _internal_type_name_size() const; public: void clear_type_name(); ::pg_query::Node* mutable_type_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::pg_query::Node& _internal_type_name(int index) const; ::pg_query::Node* _internal_add_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& type_name() const; // string subtype = 1 [json_name = "subtype"]; void clear_subtype(); const std::string& subtype() const; void set_subtype(const std::string& value); void set_subtype(std::string&& value); void set_subtype(const char* value); void set_subtype(const char* value, size_t size); std::string* mutable_subtype(); std::string* release_subtype(); void set_allocated_subtype(std::string* subtype); private: const std::string& _internal_subtype() const; void _internal_set_subtype(const std::string& value); std::string* _internal_mutable_subtype(); public: // string name = 3 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.Node def = 4 [json_name = "def"]; bool has_def() const; private: bool _internal_has_def() const; public: void clear_def(); const ::pg_query::Node& def() const; ::pg_query::Node* release_def(); ::pg_query::Node* mutable_def(); void set_allocated_def(::pg_query::Node* def); private: const ::pg_query::Node& _internal_def() const; ::pg_query::Node* _internal_mutable_def(); public: void unsafe_arena_set_allocated_def( ::pg_query::Node* def); ::pg_query::Node* unsafe_arena_release_def(); // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // bool missing_ok = 6 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterDomainStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subtype_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* def_; int behavior_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SetOperationStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SetOperationStmt) */ { public: inline SetOperationStmt() : SetOperationStmt(nullptr) {} virtual ~SetOperationStmt(); SetOperationStmt(const SetOperationStmt& from); SetOperationStmt(SetOperationStmt&& from) noexcept : SetOperationStmt() { *this = ::std::move(from); } inline SetOperationStmt& operator=(const SetOperationStmt& from) { CopyFrom(from); return *this; } inline SetOperationStmt& operator=(SetOperationStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const SetOperationStmt& default_instance(); static inline const SetOperationStmt* internal_default_instance() { return reinterpret_cast( &_SetOperationStmt_default_instance_); } static constexpr int kIndexInFileMessages = 72; friend void swap(SetOperationStmt& a, SetOperationStmt& b) { a.Swap(&b); } inline void Swap(SetOperationStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SetOperationStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline SetOperationStmt* New() const final { return CreateMaybeMessage(nullptr); } SetOperationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const SetOperationStmt& from); void MergeFrom(const SetOperationStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SetOperationStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SetOperationStmt"; } protected: explicit SetOperationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kColTypesFieldNumber = 5, kColTypmodsFieldNumber = 6, kColCollationsFieldNumber = 7, kGroupClausesFieldNumber = 8, kLargFieldNumber = 3, kRargFieldNumber = 4, kOpFieldNumber = 1, kAllFieldNumber = 2, }; // repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; int col_types_size() const; private: int _internal_col_types_size() const; public: void clear_col_types(); ::pg_query::Node* mutable_col_types(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_col_types(); private: const ::pg_query::Node& _internal_col_types(int index) const; ::pg_query::Node* _internal_add_col_types(); public: const ::pg_query::Node& col_types(int index) const; ::pg_query::Node* add_col_types(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& col_types() const; // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; int col_typmods_size() const; private: int _internal_col_typmods_size() const; public: void clear_col_typmods(); ::pg_query::Node* mutable_col_typmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_col_typmods(); private: const ::pg_query::Node& _internal_col_typmods(int index) const; ::pg_query::Node* _internal_add_col_typmods(); public: const ::pg_query::Node& col_typmods(int index) const; ::pg_query::Node* add_col_typmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& col_typmods() const; // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; int col_collations_size() const; private: int _internal_col_collations_size() const; public: void clear_col_collations(); ::pg_query::Node* mutable_col_collations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_col_collations(); private: const ::pg_query::Node& _internal_col_collations(int index) const; ::pg_query::Node* _internal_add_col_collations(); public: const ::pg_query::Node& col_collations(int index) const; ::pg_query::Node* add_col_collations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& col_collations() const; // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; int group_clauses_size() const; private: int _internal_group_clauses_size() const; public: void clear_group_clauses(); ::pg_query::Node* mutable_group_clauses(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_group_clauses(); private: const ::pg_query::Node& _internal_group_clauses(int index) const; ::pg_query::Node* _internal_add_group_clauses(); public: const ::pg_query::Node& group_clauses(int index) const; ::pg_query::Node* add_group_clauses(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& group_clauses() const; // .pg_query.Node larg = 3 [json_name = "larg"]; bool has_larg() const; private: bool _internal_has_larg() const; public: void clear_larg(); const ::pg_query::Node& larg() const; ::pg_query::Node* release_larg(); ::pg_query::Node* mutable_larg(); void set_allocated_larg(::pg_query::Node* larg); private: const ::pg_query::Node& _internal_larg() const; ::pg_query::Node* _internal_mutable_larg(); public: void unsafe_arena_set_allocated_larg( ::pg_query::Node* larg); ::pg_query::Node* unsafe_arena_release_larg(); // .pg_query.Node rarg = 4 [json_name = "rarg"]; bool has_rarg() const; private: bool _internal_has_rarg() const; public: void clear_rarg(); const ::pg_query::Node& rarg() const; ::pg_query::Node* release_rarg(); ::pg_query::Node* mutable_rarg(); void set_allocated_rarg(::pg_query::Node* rarg); private: const ::pg_query::Node& _internal_rarg() const; ::pg_query::Node* _internal_mutable_rarg(); public: void unsafe_arena_set_allocated_rarg( ::pg_query::Node* rarg); ::pg_query::Node* unsafe_arena_release_rarg(); // .pg_query.SetOperation op = 1 [json_name = "op"]; void clear_op(); ::pg_query::SetOperation op() const; void set_op(::pg_query::SetOperation value); private: ::pg_query::SetOperation _internal_op() const; void _internal_set_op(::pg_query::SetOperation value); public: // bool all = 2 [json_name = "all"]; void clear_all(); bool all() const; void set_all(bool value); private: bool _internal_all() const; void _internal_set_all(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.SetOperationStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_types_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_typmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > col_collations_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > group_clauses_; ::pg_query::Node* larg_; ::pg_query::Node* rarg_; int op_; bool all_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class GrantStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GrantStmt) */ { public: inline GrantStmt() : GrantStmt(nullptr) {} virtual ~GrantStmt(); GrantStmt(const GrantStmt& from); GrantStmt(GrantStmt&& from) noexcept : GrantStmt() { *this = ::std::move(from); } inline GrantStmt& operator=(const GrantStmt& from) { CopyFrom(from); return *this; } inline GrantStmt& operator=(GrantStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const GrantStmt& default_instance(); static inline const GrantStmt* internal_default_instance() { return reinterpret_cast( &_GrantStmt_default_instance_); } static constexpr int kIndexInFileMessages = 73; friend void swap(GrantStmt& a, GrantStmt& b) { a.Swap(&b); } inline void Swap(GrantStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GrantStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline GrantStmt* New() const final { return CreateMaybeMessage(nullptr); } GrantStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const GrantStmt& from); void MergeFrom(const GrantStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(GrantStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.GrantStmt"; } protected: explicit GrantStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kObjectsFieldNumber = 4, kPrivilegesFieldNumber = 5, kGranteesFieldNumber = 6, kTargtypeFieldNumber = 2, kObjtypeFieldNumber = 3, kIsGrantFieldNumber = 1, kGrantOptionFieldNumber = 7, kBehaviorFieldNumber = 8, }; // repeated .pg_query.Node objects = 4 [json_name = "objects"]; int objects_size() const; private: int _internal_objects_size() const; public: void clear_objects(); ::pg_query::Node* mutable_objects(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_objects(); private: const ::pg_query::Node& _internal_objects(int index) const; ::pg_query::Node* _internal_add_objects(); public: const ::pg_query::Node& objects(int index) const; ::pg_query::Node* add_objects(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& objects() const; // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; int privileges_size() const; private: int _internal_privileges_size() const; public: void clear_privileges(); ::pg_query::Node* mutable_privileges(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_privileges(); private: const ::pg_query::Node& _internal_privileges(int index) const; ::pg_query::Node* _internal_add_privileges(); public: const ::pg_query::Node& privileges(int index) const; ::pg_query::Node* add_privileges(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& privileges() const; // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; int grantees_size() const; private: int _internal_grantees_size() const; public: void clear_grantees(); ::pg_query::Node* mutable_grantees(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_grantees(); private: const ::pg_query::Node& _internal_grantees(int index) const; ::pg_query::Node* _internal_add_grantees(); public: const ::pg_query::Node& grantees(int index) const; ::pg_query::Node* add_grantees(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& grantees() const; // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; void clear_targtype(); ::pg_query::GrantTargetType targtype() const; void set_targtype(::pg_query::GrantTargetType value); private: ::pg_query::GrantTargetType _internal_targtype() const; void _internal_set_targtype(::pg_query::GrantTargetType value); public: // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; void clear_objtype(); ::pg_query::ObjectType objtype() const; void set_objtype(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_objtype() const; void _internal_set_objtype(::pg_query::ObjectType value); public: // bool is_grant = 1 [json_name = "is_grant"]; void clear_is_grant(); bool is_grant() const; void set_is_grant(bool value); private: bool _internal_is_grant() const; void _internal_set_is_grant(bool value); public: // bool grant_option = 7 [json_name = "grant_option"]; void clear_grant_option(); bool grant_option() const; void set_grant_option(bool value); private: bool _internal_grant_option() const; void _internal_set_grant_option(bool value); public: // .pg_query.DropBehavior behavior = 8 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // @@protoc_insertion_point(class_scope:pg_query.GrantStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objects_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > privileges_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > grantees_; int targtype_; int objtype_; bool is_grant_; bool grant_option_; int behavior_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class GrantRoleStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GrantRoleStmt) */ { public: inline GrantRoleStmt() : GrantRoleStmt(nullptr) {} virtual ~GrantRoleStmt(); GrantRoleStmt(const GrantRoleStmt& from); GrantRoleStmt(GrantRoleStmt&& from) noexcept : GrantRoleStmt() { *this = ::std::move(from); } inline GrantRoleStmt& operator=(const GrantRoleStmt& from) { CopyFrom(from); return *this; } inline GrantRoleStmt& operator=(GrantRoleStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const GrantRoleStmt& default_instance(); static inline const GrantRoleStmt* internal_default_instance() { return reinterpret_cast( &_GrantRoleStmt_default_instance_); } static constexpr int kIndexInFileMessages = 74; friend void swap(GrantRoleStmt& a, GrantRoleStmt& b) { a.Swap(&b); } inline void Swap(GrantRoleStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GrantRoleStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline GrantRoleStmt* New() const final { return CreateMaybeMessage(nullptr); } GrantRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const GrantRoleStmt& from); void MergeFrom(const GrantRoleStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(GrantRoleStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.GrantRoleStmt"; } protected: explicit GrantRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kGrantedRolesFieldNumber = 1, kGranteeRolesFieldNumber = 2, kGrantorFieldNumber = 5, kIsGrantFieldNumber = 3, kAdminOptFieldNumber = 4, kBehaviorFieldNumber = 6, }; // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; int granted_roles_size() const; private: int _internal_granted_roles_size() const; public: void clear_granted_roles(); ::pg_query::Node* mutable_granted_roles(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_granted_roles(); private: const ::pg_query::Node& _internal_granted_roles(int index) const; ::pg_query::Node* _internal_add_granted_roles(); public: const ::pg_query::Node& granted_roles(int index) const; ::pg_query::Node* add_granted_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& granted_roles() const; // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; int grantee_roles_size() const; private: int _internal_grantee_roles_size() const; public: void clear_grantee_roles(); ::pg_query::Node* mutable_grantee_roles(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_grantee_roles(); private: const ::pg_query::Node& _internal_grantee_roles(int index) const; ::pg_query::Node* _internal_add_grantee_roles(); public: const ::pg_query::Node& grantee_roles(int index) const; ::pg_query::Node* add_grantee_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& grantee_roles() const; // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; bool has_grantor() const; private: bool _internal_has_grantor() const; public: void clear_grantor(); const ::pg_query::RoleSpec& grantor() const; ::pg_query::RoleSpec* release_grantor(); ::pg_query::RoleSpec* mutable_grantor(); void set_allocated_grantor(::pg_query::RoleSpec* grantor); private: const ::pg_query::RoleSpec& _internal_grantor() const; ::pg_query::RoleSpec* _internal_mutable_grantor(); public: void unsafe_arena_set_allocated_grantor( ::pg_query::RoleSpec* grantor); ::pg_query::RoleSpec* unsafe_arena_release_grantor(); // bool is_grant = 3 [json_name = "is_grant"]; void clear_is_grant(); bool is_grant() const; void set_is_grant(bool value); private: bool _internal_is_grant() const; void _internal_set_is_grant(bool value); public: // bool admin_opt = 4 [json_name = "admin_opt"]; void clear_admin_opt(); bool admin_opt() const; void set_admin_opt(bool value); private: bool _internal_admin_opt() const; void _internal_set_admin_opt(bool value); public: // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // @@protoc_insertion_point(class_scope:pg_query.GrantRoleStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > granted_roles_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > grantee_roles_; ::pg_query::RoleSpec* grantor_; bool is_grant_; bool admin_opt_; int behavior_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterDefaultPrivilegesStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDefaultPrivilegesStmt) */ { public: inline AlterDefaultPrivilegesStmt() : AlterDefaultPrivilegesStmt(nullptr) {} virtual ~AlterDefaultPrivilegesStmt(); AlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt& from); AlterDefaultPrivilegesStmt(AlterDefaultPrivilegesStmt&& from) noexcept : AlterDefaultPrivilegesStmt() { *this = ::std::move(from); } inline AlterDefaultPrivilegesStmt& operator=(const AlterDefaultPrivilegesStmt& from) { CopyFrom(from); return *this; } inline AlterDefaultPrivilegesStmt& operator=(AlterDefaultPrivilegesStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterDefaultPrivilegesStmt& default_instance(); static inline const AlterDefaultPrivilegesStmt* internal_default_instance() { return reinterpret_cast( &_AlterDefaultPrivilegesStmt_default_instance_); } static constexpr int kIndexInFileMessages = 75; friend void swap(AlterDefaultPrivilegesStmt& a, AlterDefaultPrivilegesStmt& b) { a.Swap(&b); } inline void Swap(AlterDefaultPrivilegesStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDefaultPrivilegesStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterDefaultPrivilegesStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterDefaultPrivilegesStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterDefaultPrivilegesStmt& from); void MergeFrom(const AlterDefaultPrivilegesStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterDefaultPrivilegesStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterDefaultPrivilegesStmt"; } protected: explicit AlterDefaultPrivilegesStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 1, kActionFieldNumber = 2, }; // repeated .pg_query.Node options = 1 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.GrantStmt action = 2 [json_name = "action"]; bool has_action() const; private: bool _internal_has_action() const; public: void clear_action(); const ::pg_query::GrantStmt& action() const; ::pg_query::GrantStmt* release_action(); ::pg_query::GrantStmt* mutable_action(); void set_allocated_action(::pg_query::GrantStmt* action); private: const ::pg_query::GrantStmt& _internal_action() const; ::pg_query::GrantStmt* _internal_mutable_action(); public: void unsafe_arena_set_allocated_action( ::pg_query::GrantStmt* action); ::pg_query::GrantStmt* unsafe_arena_release_action(); // @@protoc_insertion_point(class_scope:pg_query.AlterDefaultPrivilegesStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::GrantStmt* action_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ClosePortalStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ClosePortalStmt) */ { public: inline ClosePortalStmt() : ClosePortalStmt(nullptr) {} virtual ~ClosePortalStmt(); ClosePortalStmt(const ClosePortalStmt& from); ClosePortalStmt(ClosePortalStmt&& from) noexcept : ClosePortalStmt() { *this = ::std::move(from); } inline ClosePortalStmt& operator=(const ClosePortalStmt& from) { CopyFrom(from); return *this; } inline ClosePortalStmt& operator=(ClosePortalStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ClosePortalStmt& default_instance(); static inline const ClosePortalStmt* internal_default_instance() { return reinterpret_cast( &_ClosePortalStmt_default_instance_); } static constexpr int kIndexInFileMessages = 76; friend void swap(ClosePortalStmt& a, ClosePortalStmt& b) { a.Swap(&b); } inline void Swap(ClosePortalStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ClosePortalStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ClosePortalStmt* New() const final { return CreateMaybeMessage(nullptr); } ClosePortalStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ClosePortalStmt& from); void MergeFrom(const ClosePortalStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ClosePortalStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ClosePortalStmt"; } protected: explicit ClosePortalStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPortalnameFieldNumber = 1, }; // string portalname = 1 [json_name = "portalname"]; void clear_portalname(); const std::string& portalname() const; void set_portalname(const std::string& value); void set_portalname(std::string&& value); void set_portalname(const char* value); void set_portalname(const char* value, size_t size); std::string* mutable_portalname(); std::string* release_portalname(); void set_allocated_portalname(std::string* portalname); private: const std::string& _internal_portalname() const; void _internal_set_portalname(const std::string& value); std::string* _internal_mutable_portalname(); public: // @@protoc_insertion_point(class_scope:pg_query.ClosePortalStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr portalname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ClusterStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ClusterStmt) */ { public: inline ClusterStmt() : ClusterStmt(nullptr) {} virtual ~ClusterStmt(); ClusterStmt(const ClusterStmt& from); ClusterStmt(ClusterStmt&& from) noexcept : ClusterStmt() { *this = ::std::move(from); } inline ClusterStmt& operator=(const ClusterStmt& from) { CopyFrom(from); return *this; } inline ClusterStmt& operator=(ClusterStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ClusterStmt& default_instance(); static inline const ClusterStmt* internal_default_instance() { return reinterpret_cast( &_ClusterStmt_default_instance_); } static constexpr int kIndexInFileMessages = 77; friend void swap(ClusterStmt& a, ClusterStmt& b) { a.Swap(&b); } inline void Swap(ClusterStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ClusterStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ClusterStmt* New() const final { return CreateMaybeMessage(nullptr); } ClusterStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ClusterStmt& from); void MergeFrom(const ClusterStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ClusterStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ClusterStmt"; } protected: explicit ClusterStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kIndexnameFieldNumber = 2, kRelationFieldNumber = 1, kOptionsFieldNumber = 3, }; // string indexname = 2 [json_name = "indexname"]; void clear_indexname(); const std::string& indexname() const; void set_indexname(const std::string& value); void set_indexname(std::string&& value); void set_indexname(const char* value); void set_indexname(const char* value, size_t size); std::string* mutable_indexname(); std::string* release_indexname(); void set_allocated_indexname(std::string* indexname); private: const std::string& _internal_indexname() const; void _internal_set_indexname(const std::string& value); std::string* _internal_mutable_indexname(); public: // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // int32 options = 3 [json_name = "options"]; void clear_options(); ::PROTOBUF_NAMESPACE_ID::int32 options() const; void set_options(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_options() const; void _internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ClusterStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexname_; ::pg_query::RangeVar* relation_; ::PROTOBUF_NAMESPACE_ID::int32 options_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CopyStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CopyStmt) */ { public: inline CopyStmt() : CopyStmt(nullptr) {} virtual ~CopyStmt(); CopyStmt(const CopyStmt& from); CopyStmt(CopyStmt&& from) noexcept : CopyStmt() { *this = ::std::move(from); } inline CopyStmt& operator=(const CopyStmt& from) { CopyFrom(from); return *this; } inline CopyStmt& operator=(CopyStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CopyStmt& default_instance(); static inline const CopyStmt* internal_default_instance() { return reinterpret_cast( &_CopyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 78; friend void swap(CopyStmt& a, CopyStmt& b) { a.Swap(&b); } inline void Swap(CopyStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CopyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CopyStmt* New() const final { return CreateMaybeMessage(nullptr); } CopyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CopyStmt& from); void MergeFrom(const CopyStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CopyStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CopyStmt"; } protected: explicit CopyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAttlistFieldNumber = 3, kOptionsFieldNumber = 7, kFilenameFieldNumber = 6, kRelationFieldNumber = 1, kQueryFieldNumber = 2, kWhereClauseFieldNumber = 8, kIsFromFieldNumber = 4, kIsProgramFieldNumber = 5, }; // repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; int attlist_size() const; private: int _internal_attlist_size() const; public: void clear_attlist(); ::pg_query::Node* mutable_attlist(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_attlist(); private: const ::pg_query::Node& _internal_attlist(int index) const; ::pg_query::Node* _internal_add_attlist(); public: const ::pg_query::Node& attlist(int index) const; ::pg_query::Node* add_attlist(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& attlist() const; // repeated .pg_query.Node options = 7 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string filename = 6 [json_name = "filename"]; void clear_filename(); const std::string& filename() const; void set_filename(const std::string& value); void set_filename(std::string&& value); void set_filename(const char* value); void set_filename(const char* value, size_t size); std::string* mutable_filename(); std::string* release_filename(); void set_allocated_filename(std::string* filename); private: const std::string& _internal_filename() const; void _internal_set_filename(const std::string& value); std::string* _internal_mutable_filename(); public: // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node query = 2 [json_name = "query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Node& query() const; ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // bool is_from = 4 [json_name = "is_from"]; void clear_is_from(); bool is_from() const; void set_is_from(bool value); private: bool _internal_is_from() const; void _internal_set_is_from(bool value); public: // bool is_program = 5 [json_name = "is_program"]; void clear_is_program(); bool is_program() const; void set_is_program(bool value); private: bool _internal_is_program() const; void _internal_set_is_program(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CopyStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > attlist_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr filename_; ::pg_query::RangeVar* relation_; ::pg_query::Node* query_; ::pg_query::Node* where_clause_; bool is_from_; bool is_program_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateStmt) */ { public: inline CreateStmt() : CreateStmt(nullptr) {} virtual ~CreateStmt(); CreateStmt(const CreateStmt& from); CreateStmt(CreateStmt&& from) noexcept : CreateStmt() { *this = ::std::move(from); } inline CreateStmt& operator=(const CreateStmt& from) { CopyFrom(from); return *this; } inline CreateStmt& operator=(CreateStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateStmt& default_instance(); static inline const CreateStmt* internal_default_instance() { return reinterpret_cast( &_CreateStmt_default_instance_); } static constexpr int kIndexInFileMessages = 79; friend void swap(CreateStmt& a, CreateStmt& b) { a.Swap(&b); } inline void Swap(CreateStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateStmt& from); void MergeFrom(const CreateStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateStmt"; } protected: explicit CreateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTableEltsFieldNumber = 2, kInhRelationsFieldNumber = 3, kConstraintsFieldNumber = 7, kOptionsFieldNumber = 8, kTablespacenameFieldNumber = 10, kAccessMethodFieldNumber = 11, kRelationFieldNumber = 1, kPartboundFieldNumber = 4, kPartspecFieldNumber = 5, kOfTypenameFieldNumber = 6, kOncommitFieldNumber = 9, kIfNotExistsFieldNumber = 12, }; // repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; int table_elts_size() const; private: int _internal_table_elts_size() const; public: void clear_table_elts(); ::pg_query::Node* mutable_table_elts(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_table_elts(); private: const ::pg_query::Node& _internal_table_elts(int index) const; ::pg_query::Node* _internal_add_table_elts(); public: const ::pg_query::Node& table_elts(int index) const; ::pg_query::Node* add_table_elts(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& table_elts() const; // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; int inh_relations_size() const; private: int _internal_inh_relations_size() const; public: void clear_inh_relations(); ::pg_query::Node* mutable_inh_relations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_inh_relations(); private: const ::pg_query::Node& _internal_inh_relations(int index) const; ::pg_query::Node* _internal_add_inh_relations(); public: const ::pg_query::Node& inh_relations(int index) const; ::pg_query::Node* add_inh_relations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& inh_relations() const; // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; int constraints_size() const; private: int _internal_constraints_size() const; public: void clear_constraints(); ::pg_query::Node* mutable_constraints(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::pg_query::Node& _internal_constraints(int index) const; ::pg_query::Node* _internal_add_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& constraints() const; // repeated .pg_query.Node options = 8 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string tablespacename = 10 [json_name = "tablespacename"]; void clear_tablespacename(); const std::string& tablespacename() const; void set_tablespacename(const std::string& value); void set_tablespacename(std::string&& value); void set_tablespacename(const char* value); void set_tablespacename(const char* value, size_t size); std::string* mutable_tablespacename(); std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* tablespacename); private: const std::string& _internal_tablespacename() const; void _internal_set_tablespacename(const std::string& value); std::string* _internal_mutable_tablespacename(); public: // string access_method = 11 [json_name = "accessMethod"]; void clear_access_method(); const std::string& access_method() const; void set_access_method(const std::string& value); void set_access_method(std::string&& value); void set_access_method(const char* value); void set_access_method(const char* value, size_t size); std::string* mutable_access_method(); std::string* release_access_method(); void set_allocated_access_method(std::string* access_method); private: const std::string& _internal_access_method() const; void _internal_set_access_method(const std::string& value); std::string* _internal_mutable_access_method(); public: // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; bool has_partbound() const; private: bool _internal_has_partbound() const; public: void clear_partbound(); const ::pg_query::PartitionBoundSpec& partbound() const; ::pg_query::PartitionBoundSpec* release_partbound(); ::pg_query::PartitionBoundSpec* mutable_partbound(); void set_allocated_partbound(::pg_query::PartitionBoundSpec* partbound); private: const ::pg_query::PartitionBoundSpec& _internal_partbound() const; ::pg_query::PartitionBoundSpec* _internal_mutable_partbound(); public: void unsafe_arena_set_allocated_partbound( ::pg_query::PartitionBoundSpec* partbound); ::pg_query::PartitionBoundSpec* unsafe_arena_release_partbound(); // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; bool has_partspec() const; private: bool _internal_has_partspec() const; public: void clear_partspec(); const ::pg_query::PartitionSpec& partspec() const; ::pg_query::PartitionSpec* release_partspec(); ::pg_query::PartitionSpec* mutable_partspec(); void set_allocated_partspec(::pg_query::PartitionSpec* partspec); private: const ::pg_query::PartitionSpec& _internal_partspec() const; ::pg_query::PartitionSpec* _internal_mutable_partspec(); public: void unsafe_arena_set_allocated_partspec( ::pg_query::PartitionSpec* partspec); ::pg_query::PartitionSpec* unsafe_arena_release_partspec(); // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; bool has_of_typename() const; private: bool _internal_has_of_typename() const; public: void clear_of_typename(); const ::pg_query::TypeName& of_typename() const; ::pg_query::TypeName* release_of_typename(); ::pg_query::TypeName* mutable_of_typename(); void set_allocated_of_typename(::pg_query::TypeName* of_typename); private: const ::pg_query::TypeName& _internal_of_typename() const; ::pg_query::TypeName* _internal_mutable_of_typename(); public: void unsafe_arena_set_allocated_of_typename( ::pg_query::TypeName* of_typename); ::pg_query::TypeName* unsafe_arena_release_of_typename(); // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; void clear_oncommit(); ::pg_query::OnCommitAction oncommit() const; void set_oncommit(::pg_query::OnCommitAction value); private: ::pg_query::OnCommitAction _internal_oncommit() const; void _internal_set_oncommit(::pg_query::OnCommitAction value); public: // bool if_not_exists = 12 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > table_elts_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > inh_relations_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; ::pg_query::RangeVar* relation_; ::pg_query::PartitionBoundSpec* partbound_; ::pg_query::PartitionSpec* partspec_; ::pg_query::TypeName* of_typename_; int oncommit_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DefineStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DefineStmt) */ { public: inline DefineStmt() : DefineStmt(nullptr) {} virtual ~DefineStmt(); DefineStmt(const DefineStmt& from); DefineStmt(DefineStmt&& from) noexcept : DefineStmt() { *this = ::std::move(from); } inline DefineStmt& operator=(const DefineStmt& from) { CopyFrom(from); return *this; } inline DefineStmt& operator=(DefineStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DefineStmt& default_instance(); static inline const DefineStmt* internal_default_instance() { return reinterpret_cast( &_DefineStmt_default_instance_); } static constexpr int kIndexInFileMessages = 80; friend void swap(DefineStmt& a, DefineStmt& b) { a.Swap(&b); } inline void Swap(DefineStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DefineStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DefineStmt* New() const final { return CreateMaybeMessage(nullptr); } DefineStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DefineStmt& from); void MergeFrom(const DefineStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DefineStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DefineStmt"; } protected: explicit DefineStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDefnamesFieldNumber = 3, kArgsFieldNumber = 4, kDefinitionFieldNumber = 5, kKindFieldNumber = 1, kOldstyleFieldNumber = 2, kIfNotExistsFieldNumber = 6, kReplaceFieldNumber = 7, }; // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; int defnames_size() const; private: int _internal_defnames_size() const; public: void clear_defnames(); ::pg_query::Node* mutable_defnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_defnames(); private: const ::pg_query::Node& _internal_defnames(int index) const; ::pg_query::Node* _internal_add_defnames(); public: const ::pg_query::Node& defnames(int index) const; ::pg_query::Node* add_defnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& defnames() const; // repeated .pg_query.Node args = 4 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node definition = 5 [json_name = "definition"]; int definition_size() const; private: int _internal_definition_size() const; public: void clear_definition(); ::pg_query::Node* mutable_definition(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_definition(); private: const ::pg_query::Node& _internal_definition(int index) const; ::pg_query::Node* _internal_add_definition(); public: const ::pg_query::Node& definition(int index) const; ::pg_query::Node* add_definition(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& definition() const; // .pg_query.ObjectType kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::ObjectType kind() const; void set_kind(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_kind() const; void _internal_set_kind(::pg_query::ObjectType value); public: // bool oldstyle = 2 [json_name = "oldstyle"]; void clear_oldstyle(); bool oldstyle() const; void set_oldstyle(bool value); private: bool _internal_oldstyle() const; void _internal_set_oldstyle(bool value); public: // bool if_not_exists = 6 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // bool replace = 7 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.DefineStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > defnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > definition_; int kind_; bool oldstyle_; bool if_not_exists_; bool replace_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropStmt) */ { public: inline DropStmt() : DropStmt(nullptr) {} virtual ~DropStmt(); DropStmt(const DropStmt& from); DropStmt(DropStmt&& from) noexcept : DropStmt() { *this = ::std::move(from); } inline DropStmt& operator=(const DropStmt& from) { CopyFrom(from); return *this; } inline DropStmt& operator=(DropStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DropStmt& default_instance(); static inline const DropStmt* internal_default_instance() { return reinterpret_cast( &_DropStmt_default_instance_); } static constexpr int kIndexInFileMessages = 81; friend void swap(DropStmt& a, DropStmt& b) { a.Swap(&b); } inline void Swap(DropStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DropStmt* New() const final { return CreateMaybeMessage(nullptr); } DropStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DropStmt& from); void MergeFrom(const DropStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropStmt"; } protected: explicit DropStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kObjectsFieldNumber = 1, kRemoveTypeFieldNumber = 2, kBehaviorFieldNumber = 3, kMissingOkFieldNumber = 4, kConcurrentFieldNumber = 5, }; // repeated .pg_query.Node objects = 1 [json_name = "objects"]; int objects_size() const; private: int _internal_objects_size() const; public: void clear_objects(); ::pg_query::Node* mutable_objects(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_objects(); private: const ::pg_query::Node& _internal_objects(int index) const; ::pg_query::Node* _internal_add_objects(); public: const ::pg_query::Node& objects(int index) const; ::pg_query::Node* add_objects(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& objects() const; // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; void clear_remove_type(); ::pg_query::ObjectType remove_type() const; void set_remove_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_remove_type() const; void _internal_set_remove_type(::pg_query::ObjectType value); public: // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // bool missing_ok = 4 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // bool concurrent = 5 [json_name = "concurrent"]; void clear_concurrent(); bool concurrent() const; void set_concurrent(bool value); private: bool _internal_concurrent() const; void _internal_set_concurrent(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.DropStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objects_; int remove_type_; int behavior_; bool missing_ok_; bool concurrent_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TruncateStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TruncateStmt) */ { public: inline TruncateStmt() : TruncateStmt(nullptr) {} virtual ~TruncateStmt(); TruncateStmt(const TruncateStmt& from); TruncateStmt(TruncateStmt&& from) noexcept : TruncateStmt() { *this = ::std::move(from); } inline TruncateStmt& operator=(const TruncateStmt& from) { CopyFrom(from); return *this; } inline TruncateStmt& operator=(TruncateStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const TruncateStmt& default_instance(); static inline const TruncateStmt* internal_default_instance() { return reinterpret_cast( &_TruncateStmt_default_instance_); } static constexpr int kIndexInFileMessages = 82; friend void swap(TruncateStmt& a, TruncateStmt& b) { a.Swap(&b); } inline void Swap(TruncateStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TruncateStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline TruncateStmt* New() const final { return CreateMaybeMessage(nullptr); } TruncateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const TruncateStmt& from); void MergeFrom(const TruncateStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TruncateStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TruncateStmt"; } protected: explicit TruncateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRelationsFieldNumber = 1, kRestartSeqsFieldNumber = 2, kBehaviorFieldNumber = 3, }; // repeated .pg_query.Node relations = 1 [json_name = "relations"]; int relations_size() const; private: int _internal_relations_size() const; public: void clear_relations(); ::pg_query::Node* mutable_relations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_relations(); private: const ::pg_query::Node& _internal_relations(int index) const; ::pg_query::Node* _internal_add_relations(); public: const ::pg_query::Node& relations(int index) const; ::pg_query::Node* add_relations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& relations() const; // bool restart_seqs = 2 [json_name = "restart_seqs"]; void clear_restart_seqs(); bool restart_seqs() const; void set_restart_seqs(bool value); private: bool _internal_restart_seqs() const; void _internal_set_restart_seqs(bool value); public: // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // @@protoc_insertion_point(class_scope:pg_query.TruncateStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > relations_; bool restart_seqs_; int behavior_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CommentStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CommentStmt) */ { public: inline CommentStmt() : CommentStmt(nullptr) {} virtual ~CommentStmt(); CommentStmt(const CommentStmt& from); CommentStmt(CommentStmt&& from) noexcept : CommentStmt() { *this = ::std::move(from); } inline CommentStmt& operator=(const CommentStmt& from) { CopyFrom(from); return *this; } inline CommentStmt& operator=(CommentStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CommentStmt& default_instance(); static inline const CommentStmt* internal_default_instance() { return reinterpret_cast( &_CommentStmt_default_instance_); } static constexpr int kIndexInFileMessages = 83; friend void swap(CommentStmt& a, CommentStmt& b) { a.Swap(&b); } inline void Swap(CommentStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CommentStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CommentStmt* New() const final { return CreateMaybeMessage(nullptr); } CommentStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CommentStmt& from); void MergeFrom(const CommentStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CommentStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CommentStmt"; } protected: explicit CommentStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCommentFieldNumber = 3, kObjectFieldNumber = 2, kObjtypeFieldNumber = 1, }; // string comment = 3 [json_name = "comment"]; void clear_comment(); const std::string& comment() const; void set_comment(const std::string& value); void set_comment(std::string&& value); void set_comment(const char* value); void set_comment(const char* value, size_t size); std::string* mutable_comment(); std::string* release_comment(); void set_allocated_comment(std::string* comment); private: const std::string& _internal_comment() const; void _internal_set_comment(const std::string& value); std::string* _internal_mutable_comment(); public: // .pg_query.Node object = 2 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; void clear_objtype(); ::pg_query::ObjectType objtype() const; void set_objtype(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_objtype() const; void _internal_set_objtype(::pg_query::ObjectType value); public: // @@protoc_insertion_point(class_scope:pg_query.CommentStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr comment_; ::pg_query::Node* object_; int objtype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FetchStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FetchStmt) */ { public: inline FetchStmt() : FetchStmt(nullptr) {} virtual ~FetchStmt(); FetchStmt(const FetchStmt& from); FetchStmt(FetchStmt&& from) noexcept : FetchStmt() { *this = ::std::move(from); } inline FetchStmt& operator=(const FetchStmt& from) { CopyFrom(from); return *this; } inline FetchStmt& operator=(FetchStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const FetchStmt& default_instance(); static inline const FetchStmt* internal_default_instance() { return reinterpret_cast( &_FetchStmt_default_instance_); } static constexpr int kIndexInFileMessages = 84; friend void swap(FetchStmt& a, FetchStmt& b) { a.Swap(&b); } inline void Swap(FetchStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FetchStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline FetchStmt* New() const final { return CreateMaybeMessage(nullptr); } FetchStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const FetchStmt& from); void MergeFrom(const FetchStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FetchStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FetchStmt"; } protected: explicit FetchStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPortalnameFieldNumber = 3, kHowManyFieldNumber = 2, kDirectionFieldNumber = 1, kIsmoveFieldNumber = 4, }; // string portalname = 3 [json_name = "portalname"]; void clear_portalname(); const std::string& portalname() const; void set_portalname(const std::string& value); void set_portalname(std::string&& value); void set_portalname(const char* value); void set_portalname(const char* value, size_t size); std::string* mutable_portalname(); std::string* release_portalname(); void set_allocated_portalname(std::string* portalname); private: const std::string& _internal_portalname() const; void _internal_set_portalname(const std::string& value); std::string* _internal_mutable_portalname(); public: // int64 how_many = 2 [json_name = "howMany"]; void clear_how_many(); ::PROTOBUF_NAMESPACE_ID::int64 how_many() const; void set_how_many(::PROTOBUF_NAMESPACE_ID::int64 value); private: ::PROTOBUF_NAMESPACE_ID::int64 _internal_how_many() const; void _internal_set_how_many(::PROTOBUF_NAMESPACE_ID::int64 value); public: // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; void clear_direction(); ::pg_query::FetchDirection direction() const; void set_direction(::pg_query::FetchDirection value); private: ::pg_query::FetchDirection _internal_direction() const; void _internal_set_direction(::pg_query::FetchDirection value); public: // bool ismove = 4 [json_name = "ismove"]; void clear_ismove(); bool ismove() const; void set_ismove(bool value); private: bool _internal_ismove() const; void _internal_set_ismove(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.FetchStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr portalname_; ::PROTOBUF_NAMESPACE_ID::int64 how_many_; int direction_; bool ismove_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class IndexStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IndexStmt) */ { public: inline IndexStmt() : IndexStmt(nullptr) {} virtual ~IndexStmt(); IndexStmt(const IndexStmt& from); IndexStmt(IndexStmt&& from) noexcept : IndexStmt() { *this = ::std::move(from); } inline IndexStmt& operator=(const IndexStmt& from) { CopyFrom(from); return *this; } inline IndexStmt& operator=(IndexStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const IndexStmt& default_instance(); static inline const IndexStmt* internal_default_instance() { return reinterpret_cast( &_IndexStmt_default_instance_); } static constexpr int kIndexInFileMessages = 85; friend void swap(IndexStmt& a, IndexStmt& b) { a.Swap(&b); } inline void Swap(IndexStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IndexStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline IndexStmt* New() const final { return CreateMaybeMessage(nullptr); } IndexStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const IndexStmt& from); void MergeFrom(const IndexStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(IndexStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.IndexStmt"; } protected: explicit IndexStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kIndexParamsFieldNumber = 5, kIndexIncludingParamsFieldNumber = 6, kOptionsFieldNumber = 7, kExcludeOpNamesFieldNumber = 9, kIdxnameFieldNumber = 1, kAccessMethodFieldNumber = 3, kTableSpaceFieldNumber = 4, kIdxcommentFieldNumber = 10, kRelationFieldNumber = 2, kWhereClauseFieldNumber = 8, kIndexOidFieldNumber = 11, kOldNodeFieldNumber = 12, kOldCreateSubidFieldNumber = 13, kOldFirstRelfilenodeSubidFieldNumber = 14, kUniqueFieldNumber = 15, kPrimaryFieldNumber = 16, kIsconstraintFieldNumber = 17, kDeferrableFieldNumber = 18, kInitdeferredFieldNumber = 19, kTransformedFieldNumber = 20, kConcurrentFieldNumber = 21, kIfNotExistsFieldNumber = 22, kResetDefaultTblspcFieldNumber = 23, }; // repeated .pg_query.Node index_params = 5 [json_name = "indexParams"]; int index_params_size() const; private: int _internal_index_params_size() const; public: void clear_index_params(); ::pg_query::Node* mutable_index_params(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_index_params(); private: const ::pg_query::Node& _internal_index_params(int index) const; ::pg_query::Node* _internal_add_index_params(); public: const ::pg_query::Node& index_params(int index) const; ::pg_query::Node* add_index_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& index_params() const; // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; int index_including_params_size() const; private: int _internal_index_including_params_size() const; public: void clear_index_including_params(); ::pg_query::Node* mutable_index_including_params(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_index_including_params(); private: const ::pg_query::Node& _internal_index_including_params(int index) const; ::pg_query::Node* _internal_add_index_including_params(); public: const ::pg_query::Node& index_including_params(int index) const; ::pg_query::Node* add_index_including_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& index_including_params() const; // repeated .pg_query.Node options = 7 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; int exclude_op_names_size() const; private: int _internal_exclude_op_names_size() const; public: void clear_exclude_op_names(); ::pg_query::Node* mutable_exclude_op_names(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_exclude_op_names(); private: const ::pg_query::Node& _internal_exclude_op_names(int index) const; ::pg_query::Node* _internal_add_exclude_op_names(); public: const ::pg_query::Node& exclude_op_names(int index) const; ::pg_query::Node* add_exclude_op_names(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& exclude_op_names() const; // string idxname = 1 [json_name = "idxname"]; void clear_idxname(); const std::string& idxname() const; void set_idxname(const std::string& value); void set_idxname(std::string&& value); void set_idxname(const char* value); void set_idxname(const char* value, size_t size); std::string* mutable_idxname(); std::string* release_idxname(); void set_allocated_idxname(std::string* idxname); private: const std::string& _internal_idxname() const; void _internal_set_idxname(const std::string& value); std::string* _internal_mutable_idxname(); public: // string access_method = 3 [json_name = "accessMethod"]; void clear_access_method(); const std::string& access_method() const; void set_access_method(const std::string& value); void set_access_method(std::string&& value); void set_access_method(const char* value); void set_access_method(const char* value, size_t size); std::string* mutable_access_method(); std::string* release_access_method(); void set_allocated_access_method(std::string* access_method); private: const std::string& _internal_access_method() const; void _internal_set_access_method(const std::string& value); std::string* _internal_mutable_access_method(); public: // string table_space = 4 [json_name = "tableSpace"]; void clear_table_space(); const std::string& table_space() const; void set_table_space(const std::string& value); void set_table_space(std::string&& value); void set_table_space(const char* value); void set_table_space(const char* value, size_t size); std::string* mutable_table_space(); std::string* release_table_space(); void set_allocated_table_space(std::string* table_space); private: const std::string& _internal_table_space() const; void _internal_set_table_space(const std::string& value); std::string* _internal_mutable_table_space(); public: // string idxcomment = 10 [json_name = "idxcomment"]; void clear_idxcomment(); const std::string& idxcomment() const; void set_idxcomment(const std::string& value); void set_idxcomment(std::string&& value); void set_idxcomment(const char* value); void set_idxcomment(const char* value, size_t size); std::string* mutable_idxcomment(); std::string* release_idxcomment(); void set_allocated_idxcomment(std::string* idxcomment); private: const std::string& _internal_idxcomment() const; void _internal_set_idxcomment(const std::string& value); std::string* _internal_mutable_idxcomment(); public: // .pg_query.RangeVar relation = 2 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // uint32 index_oid = 11 [json_name = "indexOid"]; void clear_index_oid(); ::PROTOBUF_NAMESPACE_ID::uint32 index_oid() const; void set_index_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_index_oid() const; void _internal_set_index_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 old_node = 12 [json_name = "oldNode"]; void clear_old_node(); ::PROTOBUF_NAMESPACE_ID::uint32 old_node() const; void set_old_node(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_old_node() const; void _internal_set_old_node(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; void clear_old_create_subid(); ::PROTOBUF_NAMESPACE_ID::uint32 old_create_subid() const; void set_old_create_subid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_old_create_subid() const; void _internal_set_old_create_subid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 old_first_relfilenode_subid = 14 [json_name = "oldFirstRelfilenodeSubid"]; void clear_old_first_relfilenode_subid(); ::PROTOBUF_NAMESPACE_ID::uint32 old_first_relfilenode_subid() const; void set_old_first_relfilenode_subid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_old_first_relfilenode_subid() const; void _internal_set_old_first_relfilenode_subid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool unique = 15 [json_name = "unique"]; void clear_unique(); bool unique() const; void set_unique(bool value); private: bool _internal_unique() const; void _internal_set_unique(bool value); public: // bool primary = 16 [json_name = "primary"]; void clear_primary(); bool primary() const; void set_primary(bool value); private: bool _internal_primary() const; void _internal_set_primary(bool value); public: // bool isconstraint = 17 [json_name = "isconstraint"]; void clear_isconstraint(); bool isconstraint() const; void set_isconstraint(bool value); private: bool _internal_isconstraint() const; void _internal_set_isconstraint(bool value); public: // bool deferrable = 18 [json_name = "deferrable"]; void clear_deferrable(); bool deferrable() const; void set_deferrable(bool value); private: bool _internal_deferrable() const; void _internal_set_deferrable(bool value); public: // bool initdeferred = 19 [json_name = "initdeferred"]; void clear_initdeferred(); bool initdeferred() const; void set_initdeferred(bool value); private: bool _internal_initdeferred() const; void _internal_set_initdeferred(bool value); public: // bool transformed = 20 [json_name = "transformed"]; void clear_transformed(); bool transformed() const; void set_transformed(bool value); private: bool _internal_transformed() const; void _internal_set_transformed(bool value); public: // bool concurrent = 21 [json_name = "concurrent"]; void clear_concurrent(); bool concurrent() const; void set_concurrent(bool value); private: bool _internal_concurrent() const; void _internal_set_concurrent(bool value); public: // bool if_not_exists = 22 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // bool reset_default_tblspc = 23 [json_name = "reset_default_tblspc"]; void clear_reset_default_tblspc(); bool reset_default_tblspc() const; void set_reset_default_tblspc(bool value); private: bool _internal_reset_default_tblspc() const; void _internal_set_reset_default_tblspc(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.IndexStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > index_params_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > index_including_params_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > exclude_op_names_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr idxname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr table_space_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr idxcomment_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; ::PROTOBUF_NAMESPACE_ID::uint32 index_oid_; ::PROTOBUF_NAMESPACE_ID::uint32 old_node_; ::PROTOBUF_NAMESPACE_ID::uint32 old_create_subid_; ::PROTOBUF_NAMESPACE_ID::uint32 old_first_relfilenode_subid_; bool unique_; bool primary_; bool isconstraint_; bool deferrable_; bool initdeferred_; bool transformed_; bool concurrent_; bool if_not_exists_; bool reset_default_tblspc_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateFunctionStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateFunctionStmt) */ { public: inline CreateFunctionStmt() : CreateFunctionStmt(nullptr) {} virtual ~CreateFunctionStmt(); CreateFunctionStmt(const CreateFunctionStmt& from); CreateFunctionStmt(CreateFunctionStmt&& from) noexcept : CreateFunctionStmt() { *this = ::std::move(from); } inline CreateFunctionStmt& operator=(const CreateFunctionStmt& from) { CopyFrom(from); return *this; } inline CreateFunctionStmt& operator=(CreateFunctionStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateFunctionStmt& default_instance(); static inline const CreateFunctionStmt* internal_default_instance() { return reinterpret_cast( &_CreateFunctionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 86; friend void swap(CreateFunctionStmt& a, CreateFunctionStmt& b) { a.Swap(&b); } inline void Swap(CreateFunctionStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateFunctionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateFunctionStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateFunctionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateFunctionStmt& from); void MergeFrom(const CreateFunctionStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateFunctionStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateFunctionStmt"; } protected: explicit CreateFunctionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFuncnameFieldNumber = 3, kParametersFieldNumber = 4, kOptionsFieldNumber = 6, kReturnTypeFieldNumber = 5, kIsProcedureFieldNumber = 1, kReplaceFieldNumber = 2, }; // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; int funcname_size() const; private: int _internal_funcname_size() const; public: void clear_funcname(); ::pg_query::Node* mutable_funcname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::pg_query::Node& _internal_funcname(int index) const; ::pg_query::Node* _internal_add_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funcname() const; // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; int parameters_size() const; private: int _internal_parameters_size() const; public: void clear_parameters(); ::pg_query::Node* mutable_parameters(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_parameters(); private: const ::pg_query::Node& _internal_parameters(int index) const; ::pg_query::Node* _internal_add_parameters(); public: const ::pg_query::Node& parameters(int index) const; ::pg_query::Node* add_parameters(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& parameters() const; // repeated .pg_query.Node options = 6 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; bool has_return_type() const; private: bool _internal_has_return_type() const; public: void clear_return_type(); const ::pg_query::TypeName& return_type() const; ::pg_query::TypeName* release_return_type(); ::pg_query::TypeName* mutable_return_type(); void set_allocated_return_type(::pg_query::TypeName* return_type); private: const ::pg_query::TypeName& _internal_return_type() const; ::pg_query::TypeName* _internal_mutable_return_type(); public: void unsafe_arena_set_allocated_return_type( ::pg_query::TypeName* return_type); ::pg_query::TypeName* unsafe_arena_release_return_type(); // bool is_procedure = 1 [json_name = "is_procedure"]; void clear_is_procedure(); bool is_procedure() const; void set_is_procedure(bool value); private: bool _internal_is_procedure() const; void _internal_set_is_procedure(bool value); public: // bool replace = 2 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateFunctionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > parameters_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::TypeName* return_type_; bool is_procedure_; bool replace_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterFunctionStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterFunctionStmt) */ { public: inline AlterFunctionStmt() : AlterFunctionStmt(nullptr) {} virtual ~AlterFunctionStmt(); AlterFunctionStmt(const AlterFunctionStmt& from); AlterFunctionStmt(AlterFunctionStmt&& from) noexcept : AlterFunctionStmt() { *this = ::std::move(from); } inline AlterFunctionStmt& operator=(const AlterFunctionStmt& from) { CopyFrom(from); return *this; } inline AlterFunctionStmt& operator=(AlterFunctionStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterFunctionStmt& default_instance(); static inline const AlterFunctionStmt* internal_default_instance() { return reinterpret_cast( &_AlterFunctionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 87; friend void swap(AlterFunctionStmt& a, AlterFunctionStmt& b) { a.Swap(&b); } inline void Swap(AlterFunctionStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterFunctionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterFunctionStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterFunctionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterFunctionStmt& from); void MergeFrom(const AlterFunctionStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterFunctionStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterFunctionStmt"; } protected: explicit AlterFunctionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kActionsFieldNumber = 3, kFuncFieldNumber = 2, kObjtypeFieldNumber = 1, }; // repeated .pg_query.Node actions = 3 [json_name = "actions"]; int actions_size() const; private: int _internal_actions_size() const; public: void clear_actions(); ::pg_query::Node* mutable_actions(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_actions(); private: const ::pg_query::Node& _internal_actions(int index) const; ::pg_query::Node* _internal_add_actions(); public: const ::pg_query::Node& actions(int index) const; ::pg_query::Node* add_actions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& actions() const; // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; bool has_func() const; private: bool _internal_has_func() const; public: void clear_func(); const ::pg_query::ObjectWithArgs& func() const; ::pg_query::ObjectWithArgs* release_func(); ::pg_query::ObjectWithArgs* mutable_func(); void set_allocated_func(::pg_query::ObjectWithArgs* func); private: const ::pg_query::ObjectWithArgs& _internal_func() const; ::pg_query::ObjectWithArgs* _internal_mutable_func(); public: void unsafe_arena_set_allocated_func( ::pg_query::ObjectWithArgs* func); ::pg_query::ObjectWithArgs* unsafe_arena_release_func(); // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; void clear_objtype(); ::pg_query::ObjectType objtype() const; void set_objtype(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_objtype() const; void _internal_set_objtype(::pg_query::ObjectType value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterFunctionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > actions_; ::pg_query::ObjectWithArgs* func_; int objtype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DoStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DoStmt) */ { public: inline DoStmt() : DoStmt(nullptr) {} virtual ~DoStmt(); DoStmt(const DoStmt& from); DoStmt(DoStmt&& from) noexcept : DoStmt() { *this = ::std::move(from); } inline DoStmt& operator=(const DoStmt& from) { CopyFrom(from); return *this; } inline DoStmt& operator=(DoStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DoStmt& default_instance(); static inline const DoStmt* internal_default_instance() { return reinterpret_cast( &_DoStmt_default_instance_); } static constexpr int kIndexInFileMessages = 88; friend void swap(DoStmt& a, DoStmt& b) { a.Swap(&b); } inline void Swap(DoStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DoStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DoStmt* New() const final { return CreateMaybeMessage(nullptr); } DoStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DoStmt& from); void MergeFrom(const DoStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DoStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DoStmt"; } protected: explicit DoStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 1, }; // repeated .pg_query.Node args = 1 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // @@protoc_insertion_point(class_scope:pg_query.DoStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RenameStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RenameStmt) */ { public: inline RenameStmt() : RenameStmt(nullptr) {} virtual ~RenameStmt(); RenameStmt(const RenameStmt& from); RenameStmt(RenameStmt&& from) noexcept : RenameStmt() { *this = ::std::move(from); } inline RenameStmt& operator=(const RenameStmt& from) { CopyFrom(from); return *this; } inline RenameStmt& operator=(RenameStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RenameStmt& default_instance(); static inline const RenameStmt* internal_default_instance() { return reinterpret_cast( &_RenameStmt_default_instance_); } static constexpr int kIndexInFileMessages = 89; friend void swap(RenameStmt& a, RenameStmt& b) { a.Swap(&b); } inline void Swap(RenameStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RenameStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RenameStmt* New() const final { return CreateMaybeMessage(nullptr); } RenameStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RenameStmt& from); void MergeFrom(const RenameStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RenameStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RenameStmt"; } protected: explicit RenameStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSubnameFieldNumber = 5, kNewnameFieldNumber = 6, kRelationFieldNumber = 3, kObjectFieldNumber = 4, kRenameTypeFieldNumber = 1, kRelationTypeFieldNumber = 2, kBehaviorFieldNumber = 7, kMissingOkFieldNumber = 8, }; // string subname = 5 [json_name = "subname"]; void clear_subname(); const std::string& subname() const; void set_subname(const std::string& value); void set_subname(std::string&& value); void set_subname(const char* value); void set_subname(const char* value, size_t size); std::string* mutable_subname(); std::string* release_subname(); void set_allocated_subname(std::string* subname); private: const std::string& _internal_subname() const; void _internal_set_subname(const std::string& value); std::string* _internal_mutable_subname(); public: // string newname = 6 [json_name = "newname"]; void clear_newname(); const std::string& newname() const; void set_newname(const std::string& value); void set_newname(std::string&& value); void set_newname(const char* value); void set_newname(const char* value, size_t size); std::string* mutable_newname(); std::string* release_newname(); void set_allocated_newname(std::string* newname); private: const std::string& _internal_newname() const; void _internal_set_newname(const std::string& value); std::string* _internal_mutable_newname(); public: // .pg_query.RangeVar relation = 3 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node object = 4 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; void clear_rename_type(); ::pg_query::ObjectType rename_type() const; void set_rename_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_rename_type() const; void _internal_set_rename_type(::pg_query::ObjectType value); public: // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; void clear_relation_type(); ::pg_query::ObjectType relation_type() const; void set_relation_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_relation_type() const; void _internal_set_relation_type(::pg_query::ObjectType value); public: // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // bool missing_ok = 8 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RenameStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr newname_; ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; int rename_type_; int relation_type_; int behavior_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RuleStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RuleStmt) */ { public: inline RuleStmt() : RuleStmt(nullptr) {} virtual ~RuleStmt(); RuleStmt(const RuleStmt& from); RuleStmt(RuleStmt&& from) noexcept : RuleStmt() { *this = ::std::move(from); } inline RuleStmt& operator=(const RuleStmt& from) { CopyFrom(from); return *this; } inline RuleStmt& operator=(RuleStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RuleStmt& default_instance(); static inline const RuleStmt* internal_default_instance() { return reinterpret_cast( &_RuleStmt_default_instance_); } static constexpr int kIndexInFileMessages = 90; friend void swap(RuleStmt& a, RuleStmt& b) { a.Swap(&b); } inline void Swap(RuleStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RuleStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RuleStmt* New() const final { return CreateMaybeMessage(nullptr); } RuleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RuleStmt& from); void MergeFrom(const RuleStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RuleStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RuleStmt"; } protected: explicit RuleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kActionsFieldNumber = 6, kRulenameFieldNumber = 2, kRelationFieldNumber = 1, kWhereClauseFieldNumber = 3, kEventFieldNumber = 4, kInsteadFieldNumber = 5, kReplaceFieldNumber = 7, }; // repeated .pg_query.Node actions = 6 [json_name = "actions"]; int actions_size() const; private: int _internal_actions_size() const; public: void clear_actions(); ::pg_query::Node* mutable_actions(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_actions(); private: const ::pg_query::Node& _internal_actions(int index) const; ::pg_query::Node* _internal_add_actions(); public: const ::pg_query::Node& actions(int index) const; ::pg_query::Node* add_actions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& actions() const; // string rulename = 2 [json_name = "rulename"]; void clear_rulename(); const std::string& rulename() const; void set_rulename(const std::string& value); void set_rulename(std::string&& value); void set_rulename(const char* value); void set_rulename(const char* value, size_t size); std::string* mutable_rulename(); std::string* release_rulename(); void set_allocated_rulename(std::string* rulename); private: const std::string& _internal_rulename() const; void _internal_set_rulename(const std::string& value); std::string* _internal_mutable_rulename(); public: // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.CmdType event = 4 [json_name = "event"]; void clear_event(); ::pg_query::CmdType event() const; void set_event(::pg_query::CmdType value); private: ::pg_query::CmdType _internal_event() const; void _internal_set_event(::pg_query::CmdType value); public: // bool instead = 5 [json_name = "instead"]; void clear_instead(); bool instead() const; void set_instead(bool value); private: bool _internal_instead() const; void _internal_set_instead(bool value); public: // bool replace = 7 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RuleStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > actions_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr rulename_; ::pg_query::RangeVar* relation_; ::pg_query::Node* where_clause_; int event_; bool instead_; bool replace_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class NotifyStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.NotifyStmt) */ { public: inline NotifyStmt() : NotifyStmt(nullptr) {} virtual ~NotifyStmt(); NotifyStmt(const NotifyStmt& from); NotifyStmt(NotifyStmt&& from) noexcept : NotifyStmt() { *this = ::std::move(from); } inline NotifyStmt& operator=(const NotifyStmt& from) { CopyFrom(from); return *this; } inline NotifyStmt& operator=(NotifyStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const NotifyStmt& default_instance(); static inline const NotifyStmt* internal_default_instance() { return reinterpret_cast( &_NotifyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 91; friend void swap(NotifyStmt& a, NotifyStmt& b) { a.Swap(&b); } inline void Swap(NotifyStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(NotifyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline NotifyStmt* New() const final { return CreateMaybeMessage(nullptr); } NotifyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const NotifyStmt& from); void MergeFrom(const NotifyStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(NotifyStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.NotifyStmt"; } protected: explicit NotifyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConditionnameFieldNumber = 1, kPayloadFieldNumber = 2, }; // string conditionname = 1 [json_name = "conditionname"]; void clear_conditionname(); const std::string& conditionname() const; void set_conditionname(const std::string& value); void set_conditionname(std::string&& value); void set_conditionname(const char* value); void set_conditionname(const char* value, size_t size); std::string* mutable_conditionname(); std::string* release_conditionname(); void set_allocated_conditionname(std::string* conditionname); private: const std::string& _internal_conditionname() const; void _internal_set_conditionname(const std::string& value); std::string* _internal_mutable_conditionname(); public: // string payload = 2 [json_name = "payload"]; void clear_payload(); const std::string& payload() const; void set_payload(const std::string& value); void set_payload(std::string&& value); void set_payload(const char* value); void set_payload(const char* value, size_t size); std::string* mutable_payload(); std::string* release_payload(); void set_allocated_payload(std::string* payload); private: const std::string& _internal_payload() const; void _internal_set_payload(const std::string& value); std::string* _internal_mutable_payload(); public: // @@protoc_insertion_point(class_scope:pg_query.NotifyStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conditionname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr payload_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ListenStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ListenStmt) */ { public: inline ListenStmt() : ListenStmt(nullptr) {} virtual ~ListenStmt(); ListenStmt(const ListenStmt& from); ListenStmt(ListenStmt&& from) noexcept : ListenStmt() { *this = ::std::move(from); } inline ListenStmt& operator=(const ListenStmt& from) { CopyFrom(from); return *this; } inline ListenStmt& operator=(ListenStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ListenStmt& default_instance(); static inline const ListenStmt* internal_default_instance() { return reinterpret_cast( &_ListenStmt_default_instance_); } static constexpr int kIndexInFileMessages = 92; friend void swap(ListenStmt& a, ListenStmt& b) { a.Swap(&b); } inline void Swap(ListenStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ListenStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ListenStmt* New() const final { return CreateMaybeMessage(nullptr); } ListenStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ListenStmt& from); void MergeFrom(const ListenStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ListenStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ListenStmt"; } protected: explicit ListenStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConditionnameFieldNumber = 1, }; // string conditionname = 1 [json_name = "conditionname"]; void clear_conditionname(); const std::string& conditionname() const; void set_conditionname(const std::string& value); void set_conditionname(std::string&& value); void set_conditionname(const char* value); void set_conditionname(const char* value, size_t size); std::string* mutable_conditionname(); std::string* release_conditionname(); void set_allocated_conditionname(std::string* conditionname); private: const std::string& _internal_conditionname() const; void _internal_set_conditionname(const std::string& value); std::string* _internal_mutable_conditionname(); public: // @@protoc_insertion_point(class_scope:pg_query.ListenStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conditionname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class UnlistenStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.UnlistenStmt) */ { public: inline UnlistenStmt() : UnlistenStmt(nullptr) {} virtual ~UnlistenStmt(); UnlistenStmt(const UnlistenStmt& from); UnlistenStmt(UnlistenStmt&& from) noexcept : UnlistenStmt() { *this = ::std::move(from); } inline UnlistenStmt& operator=(const UnlistenStmt& from) { CopyFrom(from); return *this; } inline UnlistenStmt& operator=(UnlistenStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const UnlistenStmt& default_instance(); static inline const UnlistenStmt* internal_default_instance() { return reinterpret_cast( &_UnlistenStmt_default_instance_); } static constexpr int kIndexInFileMessages = 93; friend void swap(UnlistenStmt& a, UnlistenStmt& b) { a.Swap(&b); } inline void Swap(UnlistenStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(UnlistenStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline UnlistenStmt* New() const final { return CreateMaybeMessage(nullptr); } UnlistenStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const UnlistenStmt& from); void MergeFrom(const UnlistenStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(UnlistenStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.UnlistenStmt"; } protected: explicit UnlistenStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConditionnameFieldNumber = 1, }; // string conditionname = 1 [json_name = "conditionname"]; void clear_conditionname(); const std::string& conditionname() const; void set_conditionname(const std::string& value); void set_conditionname(std::string&& value); void set_conditionname(const char* value); void set_conditionname(const char* value, size_t size); std::string* mutable_conditionname(); std::string* release_conditionname(); void set_allocated_conditionname(std::string* conditionname); private: const std::string& _internal_conditionname() const; void _internal_set_conditionname(const std::string& value); std::string* _internal_mutable_conditionname(); public: // @@protoc_insertion_point(class_scope:pg_query.UnlistenStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conditionname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TransactionStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TransactionStmt) */ { public: inline TransactionStmt() : TransactionStmt(nullptr) {} virtual ~TransactionStmt(); TransactionStmt(const TransactionStmt& from); TransactionStmt(TransactionStmt&& from) noexcept : TransactionStmt() { *this = ::std::move(from); } inline TransactionStmt& operator=(const TransactionStmt& from) { CopyFrom(from); return *this; } inline TransactionStmt& operator=(TransactionStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const TransactionStmt& default_instance(); static inline const TransactionStmt* internal_default_instance() { return reinterpret_cast( &_TransactionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 94; friend void swap(TransactionStmt& a, TransactionStmt& b) { a.Swap(&b); } inline void Swap(TransactionStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TransactionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline TransactionStmt* New() const final { return CreateMaybeMessage(nullptr); } TransactionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const TransactionStmt& from); void MergeFrom(const TransactionStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TransactionStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TransactionStmt"; } protected: explicit TransactionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kSavepointNameFieldNumber = 3, kGidFieldNumber = 4, kKindFieldNumber = 1, kChainFieldNumber = 5, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string savepoint_name = 3 [json_name = "savepoint_name"]; void clear_savepoint_name(); const std::string& savepoint_name() const; void set_savepoint_name(const std::string& value); void set_savepoint_name(std::string&& value); void set_savepoint_name(const char* value); void set_savepoint_name(const char* value, size_t size); std::string* mutable_savepoint_name(); std::string* release_savepoint_name(); void set_allocated_savepoint_name(std::string* savepoint_name); private: const std::string& _internal_savepoint_name() const; void _internal_set_savepoint_name(const std::string& value); std::string* _internal_mutable_savepoint_name(); public: // string gid = 4 [json_name = "gid"]; void clear_gid(); const std::string& gid() const; void set_gid(const std::string& value); void set_gid(std::string&& value); void set_gid(const char* value); void set_gid(const char* value, size_t size); std::string* mutable_gid(); std::string* release_gid(); void set_allocated_gid(std::string* gid); private: const std::string& _internal_gid() const; void _internal_set_gid(const std::string& value); std::string* _internal_mutable_gid(); public: // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::TransactionStmtKind kind() const; void set_kind(::pg_query::TransactionStmtKind value); private: ::pg_query::TransactionStmtKind _internal_kind() const; void _internal_set_kind(::pg_query::TransactionStmtKind value); public: // bool chain = 5 [json_name = "chain"]; void clear_chain(); bool chain() const; void set_chain(bool value); private: bool _internal_chain() const; void _internal_set_chain(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.TransactionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr savepoint_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr gid_; int kind_; bool chain_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ViewStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ViewStmt) */ { public: inline ViewStmt() : ViewStmt(nullptr) {} virtual ~ViewStmt(); ViewStmt(const ViewStmt& from); ViewStmt(ViewStmt&& from) noexcept : ViewStmt() { *this = ::std::move(from); } inline ViewStmt& operator=(const ViewStmt& from) { CopyFrom(from); return *this; } inline ViewStmt& operator=(ViewStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ViewStmt& default_instance(); static inline const ViewStmt* internal_default_instance() { return reinterpret_cast( &_ViewStmt_default_instance_); } static constexpr int kIndexInFileMessages = 95; friend void swap(ViewStmt& a, ViewStmt& b) { a.Swap(&b); } inline void Swap(ViewStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ViewStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ViewStmt* New() const final { return CreateMaybeMessage(nullptr); } ViewStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ViewStmt& from); void MergeFrom(const ViewStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ViewStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ViewStmt"; } protected: explicit ViewStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAliasesFieldNumber = 2, kOptionsFieldNumber = 5, kViewFieldNumber = 1, kQueryFieldNumber = 3, kReplaceFieldNumber = 4, kWithCheckOptionFieldNumber = 6, }; // repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; int aliases_size() const; private: int _internal_aliases_size() const; public: void clear_aliases(); ::pg_query::Node* mutable_aliases(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aliases(); private: const ::pg_query::Node& _internal_aliases(int index) const; ::pg_query::Node* _internal_add_aliases(); public: const ::pg_query::Node& aliases(int index) const; ::pg_query::Node* add_aliases(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aliases() const; // repeated .pg_query.Node options = 5 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RangeVar view = 1 [json_name = "view"]; bool has_view() const; private: bool _internal_has_view() const; public: void clear_view(); const ::pg_query::RangeVar& view() const; ::pg_query::RangeVar* release_view(); ::pg_query::RangeVar* mutable_view(); void set_allocated_view(::pg_query::RangeVar* view); private: const ::pg_query::RangeVar& _internal_view() const; ::pg_query::RangeVar* _internal_mutable_view(); public: void unsafe_arena_set_allocated_view( ::pg_query::RangeVar* view); ::pg_query::RangeVar* unsafe_arena_release_view(); // .pg_query.Node query = 3 [json_name = "query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Node& query() const; ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // bool replace = 4 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; void clear_with_check_option(); ::pg_query::ViewCheckOption with_check_option() const; void set_with_check_option(::pg_query::ViewCheckOption value); private: ::pg_query::ViewCheckOption _internal_with_check_option() const; void _internal_set_with_check_option(::pg_query::ViewCheckOption value); public: // @@protoc_insertion_point(class_scope:pg_query.ViewStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aliases_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RangeVar* view_; ::pg_query::Node* query_; bool replace_; int with_check_option_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class LoadStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.LoadStmt) */ { public: inline LoadStmt() : LoadStmt(nullptr) {} virtual ~LoadStmt(); LoadStmt(const LoadStmt& from); LoadStmt(LoadStmt&& from) noexcept : LoadStmt() { *this = ::std::move(from); } inline LoadStmt& operator=(const LoadStmt& from) { CopyFrom(from); return *this; } inline LoadStmt& operator=(LoadStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const LoadStmt& default_instance(); static inline const LoadStmt* internal_default_instance() { return reinterpret_cast( &_LoadStmt_default_instance_); } static constexpr int kIndexInFileMessages = 96; friend void swap(LoadStmt& a, LoadStmt& b) { a.Swap(&b); } inline void Swap(LoadStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(LoadStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline LoadStmt* New() const final { return CreateMaybeMessage(nullptr); } LoadStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const LoadStmt& from); void MergeFrom(const LoadStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(LoadStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.LoadStmt"; } protected: explicit LoadStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFilenameFieldNumber = 1, }; // string filename = 1 [json_name = "filename"]; void clear_filename(); const std::string& filename() const; void set_filename(const std::string& value); void set_filename(std::string&& value); void set_filename(const char* value); void set_filename(const char* value, size_t size); std::string* mutable_filename(); std::string* release_filename(); void set_allocated_filename(std::string* filename); private: const std::string& _internal_filename() const; void _internal_set_filename(const std::string& value); std::string* _internal_mutable_filename(); public: // @@protoc_insertion_point(class_scope:pg_query.LoadStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr filename_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateDomainStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateDomainStmt) */ { public: inline CreateDomainStmt() : CreateDomainStmt(nullptr) {} virtual ~CreateDomainStmt(); CreateDomainStmt(const CreateDomainStmt& from); CreateDomainStmt(CreateDomainStmt&& from) noexcept : CreateDomainStmt() { *this = ::std::move(from); } inline CreateDomainStmt& operator=(const CreateDomainStmt& from) { CopyFrom(from); return *this; } inline CreateDomainStmt& operator=(CreateDomainStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateDomainStmt& default_instance(); static inline const CreateDomainStmt* internal_default_instance() { return reinterpret_cast( &_CreateDomainStmt_default_instance_); } static constexpr int kIndexInFileMessages = 97; friend void swap(CreateDomainStmt& a, CreateDomainStmt& b) { a.Swap(&b); } inline void Swap(CreateDomainStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateDomainStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateDomainStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateDomainStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateDomainStmt& from); void MergeFrom(const CreateDomainStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateDomainStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateDomainStmt"; } protected: explicit CreateDomainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDomainnameFieldNumber = 1, kConstraintsFieldNumber = 4, kTypeNameFieldNumber = 2, kCollClauseFieldNumber = 3, }; // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; int domainname_size() const; private: int _internal_domainname_size() const; public: void clear_domainname(); ::pg_query::Node* mutable_domainname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_domainname(); private: const ::pg_query::Node& _internal_domainname(int index) const; ::pg_query::Node* _internal_add_domainname(); public: const ::pg_query::Node& domainname(int index) const; ::pg_query::Node* add_domainname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& domainname() const; // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; int constraints_size() const; private: int _internal_constraints_size() const; public: void clear_constraints(); ::pg_query::Node* mutable_constraints(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::pg_query::Node& _internal_constraints(int index) const; ::pg_query::Node* _internal_add_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& constraints() const; // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; bool has_type_name() const; private: bool _internal_has_type_name() const; public: void clear_type_name(); const ::pg_query::TypeName& type_name() const; ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; bool has_coll_clause() const; private: bool _internal_has_coll_clause() const; public: void clear_coll_clause(); const ::pg_query::CollateClause& coll_clause() const; ::pg_query::CollateClause* release_coll_clause(); ::pg_query::CollateClause* mutable_coll_clause(); void set_allocated_coll_clause(::pg_query::CollateClause* coll_clause); private: const ::pg_query::CollateClause& _internal_coll_clause() const; ::pg_query::CollateClause* _internal_mutable_coll_clause(); public: void unsafe_arena_set_allocated_coll_clause( ::pg_query::CollateClause* coll_clause); ::pg_query::CollateClause* unsafe_arena_release_coll_clause(); // @@protoc_insertion_point(class_scope:pg_query.CreateDomainStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > domainname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; ::pg_query::TypeName* type_name_; ::pg_query::CollateClause* coll_clause_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreatedbStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatedbStmt) */ { public: inline CreatedbStmt() : CreatedbStmt(nullptr) {} virtual ~CreatedbStmt(); CreatedbStmt(const CreatedbStmt& from); CreatedbStmt(CreatedbStmt&& from) noexcept : CreatedbStmt() { *this = ::std::move(from); } inline CreatedbStmt& operator=(const CreatedbStmt& from) { CopyFrom(from); return *this; } inline CreatedbStmt& operator=(CreatedbStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreatedbStmt& default_instance(); static inline const CreatedbStmt* internal_default_instance() { return reinterpret_cast( &_CreatedbStmt_default_instance_); } static constexpr int kIndexInFileMessages = 98; friend void swap(CreatedbStmt& a, CreatedbStmt& b) { a.Swap(&b); } inline void Swap(CreatedbStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatedbStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreatedbStmt* New() const final { return CreateMaybeMessage(nullptr); } CreatedbStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreatedbStmt& from); void MergeFrom(const CreatedbStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreatedbStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreatedbStmt"; } protected: explicit CreatedbStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kDbnameFieldNumber = 1, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string dbname = 1 [json_name = "dbname"]; void clear_dbname(); const std::string& dbname() const; void set_dbname(const std::string& value); void set_dbname(std::string&& value); void set_dbname(const char* value); void set_dbname(const char* value, size_t size); std::string* mutable_dbname(); std::string* release_dbname(); void set_allocated_dbname(std::string* dbname); private: const std::string& _internal_dbname() const; void _internal_set_dbname(const std::string& value); std::string* _internal_mutable_dbname(); public: // @@protoc_insertion_point(class_scope:pg_query.CreatedbStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropdbStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropdbStmt) */ { public: inline DropdbStmt() : DropdbStmt(nullptr) {} virtual ~DropdbStmt(); DropdbStmt(const DropdbStmt& from); DropdbStmt(DropdbStmt&& from) noexcept : DropdbStmt() { *this = ::std::move(from); } inline DropdbStmt& operator=(const DropdbStmt& from) { CopyFrom(from); return *this; } inline DropdbStmt& operator=(DropdbStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DropdbStmt& default_instance(); static inline const DropdbStmt* internal_default_instance() { return reinterpret_cast( &_DropdbStmt_default_instance_); } static constexpr int kIndexInFileMessages = 99; friend void swap(DropdbStmt& a, DropdbStmt& b) { a.Swap(&b); } inline void Swap(DropdbStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropdbStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DropdbStmt* New() const final { return CreateMaybeMessage(nullptr); } DropdbStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DropdbStmt& from); void MergeFrom(const DropdbStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropdbStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropdbStmt"; } protected: explicit DropdbStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 3, kDbnameFieldNumber = 1, kMissingOkFieldNumber = 2, }; // repeated .pg_query.Node options = 3 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string dbname = 1 [json_name = "dbname"]; void clear_dbname(); const std::string& dbname() const; void set_dbname(const std::string& value); void set_dbname(std::string&& value); void set_dbname(const char* value); void set_dbname(const char* value, size_t size); std::string* mutable_dbname(); std::string* release_dbname(); void set_allocated_dbname(std::string* dbname); private: const std::string& _internal_dbname() const; void _internal_set_dbname(const std::string& value); std::string* _internal_mutable_dbname(); public: // bool missing_ok = 2 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.DropdbStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class VacuumStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VacuumStmt) */ { public: inline VacuumStmt() : VacuumStmt(nullptr) {} virtual ~VacuumStmt(); VacuumStmt(const VacuumStmt& from); VacuumStmt(VacuumStmt&& from) noexcept : VacuumStmt() { *this = ::std::move(from); } inline VacuumStmt& operator=(const VacuumStmt& from) { CopyFrom(from); return *this; } inline VacuumStmt& operator=(VacuumStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const VacuumStmt& default_instance(); static inline const VacuumStmt* internal_default_instance() { return reinterpret_cast( &_VacuumStmt_default_instance_); } static constexpr int kIndexInFileMessages = 100; friend void swap(VacuumStmt& a, VacuumStmt& b) { a.Swap(&b); } inline void Swap(VacuumStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VacuumStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline VacuumStmt* New() const final { return CreateMaybeMessage(nullptr); } VacuumStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const VacuumStmt& from); void MergeFrom(const VacuumStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(VacuumStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.VacuumStmt"; } protected: explicit VacuumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 1, kRelsFieldNumber = 2, kIsVacuumcmdFieldNumber = 3, }; // repeated .pg_query.Node options = 1 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node rels = 2 [json_name = "rels"]; int rels_size() const; private: int _internal_rels_size() const; public: void clear_rels(); ::pg_query::Node* mutable_rels(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_rels(); private: const ::pg_query::Node& _internal_rels(int index) const; ::pg_query::Node* _internal_add_rels(); public: const ::pg_query::Node& rels(int index) const; ::pg_query::Node* add_rels(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& rels() const; // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; void clear_is_vacuumcmd(); bool is_vacuumcmd() const; void set_is_vacuumcmd(bool value); private: bool _internal_is_vacuumcmd() const; void _internal_set_is_vacuumcmd(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.VacuumStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > rels_; bool is_vacuumcmd_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ExplainStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ExplainStmt) */ { public: inline ExplainStmt() : ExplainStmt(nullptr) {} virtual ~ExplainStmt(); ExplainStmt(const ExplainStmt& from); ExplainStmt(ExplainStmt&& from) noexcept : ExplainStmt() { *this = ::std::move(from); } inline ExplainStmt& operator=(const ExplainStmt& from) { CopyFrom(from); return *this; } inline ExplainStmt& operator=(ExplainStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ExplainStmt& default_instance(); static inline const ExplainStmt* internal_default_instance() { return reinterpret_cast( &_ExplainStmt_default_instance_); } static constexpr int kIndexInFileMessages = 101; friend void swap(ExplainStmt& a, ExplainStmt& b) { a.Swap(&b); } inline void Swap(ExplainStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ExplainStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ExplainStmt* New() const final { return CreateMaybeMessage(nullptr); } ExplainStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ExplainStmt& from); void MergeFrom(const ExplainStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ExplainStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ExplainStmt"; } protected: explicit ExplainStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kQueryFieldNumber = 1, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.Node query = 1 [json_name = "query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Node& query() const; ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // @@protoc_insertion_point(class_scope:pg_query.ExplainStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::Node* query_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateTableAsStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTableAsStmt) */ { public: inline CreateTableAsStmt() : CreateTableAsStmt(nullptr) {} virtual ~CreateTableAsStmt(); CreateTableAsStmt(const CreateTableAsStmt& from); CreateTableAsStmt(CreateTableAsStmt&& from) noexcept : CreateTableAsStmt() { *this = ::std::move(from); } inline CreateTableAsStmt& operator=(const CreateTableAsStmt& from) { CopyFrom(from); return *this; } inline CreateTableAsStmt& operator=(CreateTableAsStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateTableAsStmt& default_instance(); static inline const CreateTableAsStmt* internal_default_instance() { return reinterpret_cast( &_CreateTableAsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 102; friend void swap(CreateTableAsStmt& a, CreateTableAsStmt& b) { a.Swap(&b); } inline void Swap(CreateTableAsStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTableAsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateTableAsStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateTableAsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateTableAsStmt& from); void MergeFrom(const CreateTableAsStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateTableAsStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateTableAsStmt"; } protected: explicit CreateTableAsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kQueryFieldNumber = 1, kIntoFieldNumber = 2, kRelkindFieldNumber = 3, kIsSelectIntoFieldNumber = 4, kIfNotExistsFieldNumber = 5, }; // .pg_query.Node query = 1 [json_name = "query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Node& query() const; ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // .pg_query.IntoClause into = 2 [json_name = "into"]; bool has_into() const; private: bool _internal_has_into() const; public: void clear_into(); const ::pg_query::IntoClause& into() const; ::pg_query::IntoClause* release_into(); ::pg_query::IntoClause* mutable_into(); void set_allocated_into(::pg_query::IntoClause* into); private: const ::pg_query::IntoClause& _internal_into() const; ::pg_query::IntoClause* _internal_mutable_into(); public: void unsafe_arena_set_allocated_into( ::pg_query::IntoClause* into); ::pg_query::IntoClause* unsafe_arena_release_into(); // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; void clear_relkind(); ::pg_query::ObjectType relkind() const; void set_relkind(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_relkind() const; void _internal_set_relkind(::pg_query::ObjectType value); public: // bool is_select_into = 4 [json_name = "is_select_into"]; void clear_is_select_into(); bool is_select_into() const; void set_is_select_into(bool value); private: bool _internal_is_select_into() const; void _internal_set_is_select_into(bool value); public: // bool if_not_exists = 5 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateTableAsStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* query_; ::pg_query::IntoClause* into_; int relkind_; bool is_select_into_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateSeqStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSeqStmt) */ { public: inline CreateSeqStmt() : CreateSeqStmt(nullptr) {} virtual ~CreateSeqStmt(); CreateSeqStmt(const CreateSeqStmt& from); CreateSeqStmt(CreateSeqStmt&& from) noexcept : CreateSeqStmt() { *this = ::std::move(from); } inline CreateSeqStmt& operator=(const CreateSeqStmt& from) { CopyFrom(from); return *this; } inline CreateSeqStmt& operator=(CreateSeqStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateSeqStmt& default_instance(); static inline const CreateSeqStmt* internal_default_instance() { return reinterpret_cast( &_CreateSeqStmt_default_instance_); } static constexpr int kIndexInFileMessages = 103; friend void swap(CreateSeqStmt& a, CreateSeqStmt& b) { a.Swap(&b); } inline void Swap(CreateSeqStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateSeqStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateSeqStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateSeqStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateSeqStmt& from); void MergeFrom(const CreateSeqStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateSeqStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateSeqStmt"; } protected: explicit CreateSeqStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kSequenceFieldNumber = 1, kOwnerIdFieldNumber = 3, kForIdentityFieldNumber = 4, kIfNotExistsFieldNumber = 5, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; bool has_sequence() const; private: bool _internal_has_sequence() const; public: void clear_sequence(); const ::pg_query::RangeVar& sequence() const; ::pg_query::RangeVar* release_sequence(); ::pg_query::RangeVar* mutable_sequence(); void set_allocated_sequence(::pg_query::RangeVar* sequence); private: const ::pg_query::RangeVar& _internal_sequence() const; ::pg_query::RangeVar* _internal_mutable_sequence(); public: void unsafe_arena_set_allocated_sequence( ::pg_query::RangeVar* sequence); ::pg_query::RangeVar* unsafe_arena_release_sequence(); // uint32 owner_id = 3 [json_name = "ownerId"]; void clear_owner_id(); ::PROTOBUF_NAMESPACE_ID::uint32 owner_id() const; void set_owner_id(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_owner_id() const; void _internal_set_owner_id(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool for_identity = 4 [json_name = "for_identity"]; void clear_for_identity(); bool for_identity() const; void set_for_identity(bool value); private: bool _internal_for_identity() const; void _internal_set_for_identity(bool value); public: // bool if_not_exists = 5 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateSeqStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RangeVar* sequence_; ::PROTOBUF_NAMESPACE_ID::uint32 owner_id_; bool for_identity_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterSeqStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSeqStmt) */ { public: inline AlterSeqStmt() : AlterSeqStmt(nullptr) {} virtual ~AlterSeqStmt(); AlterSeqStmt(const AlterSeqStmt& from); AlterSeqStmt(AlterSeqStmt&& from) noexcept : AlterSeqStmt() { *this = ::std::move(from); } inline AlterSeqStmt& operator=(const AlterSeqStmt& from) { CopyFrom(from); return *this; } inline AlterSeqStmt& operator=(AlterSeqStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterSeqStmt& default_instance(); static inline const AlterSeqStmt* internal_default_instance() { return reinterpret_cast( &_AlterSeqStmt_default_instance_); } static constexpr int kIndexInFileMessages = 104; friend void swap(AlterSeqStmt& a, AlterSeqStmt& b) { a.Swap(&b); } inline void Swap(AlterSeqStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterSeqStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterSeqStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterSeqStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterSeqStmt& from); void MergeFrom(const AlterSeqStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterSeqStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterSeqStmt"; } protected: explicit AlterSeqStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kSequenceFieldNumber = 1, kForIdentityFieldNumber = 3, kMissingOkFieldNumber = 4, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; bool has_sequence() const; private: bool _internal_has_sequence() const; public: void clear_sequence(); const ::pg_query::RangeVar& sequence() const; ::pg_query::RangeVar* release_sequence(); ::pg_query::RangeVar* mutable_sequence(); void set_allocated_sequence(::pg_query::RangeVar* sequence); private: const ::pg_query::RangeVar& _internal_sequence() const; ::pg_query::RangeVar* _internal_mutable_sequence(); public: void unsafe_arena_set_allocated_sequence( ::pg_query::RangeVar* sequence); ::pg_query::RangeVar* unsafe_arena_release_sequence(); // bool for_identity = 3 [json_name = "for_identity"]; void clear_for_identity(); bool for_identity() const; void set_for_identity(bool value); private: bool _internal_for_identity() const; void _internal_set_for_identity(bool value); public: // bool missing_ok = 4 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterSeqStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RangeVar* sequence_; bool for_identity_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class VariableSetStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VariableSetStmt) */ { public: inline VariableSetStmt() : VariableSetStmt(nullptr) {} virtual ~VariableSetStmt(); VariableSetStmt(const VariableSetStmt& from); VariableSetStmt(VariableSetStmt&& from) noexcept : VariableSetStmt() { *this = ::std::move(from); } inline VariableSetStmt& operator=(const VariableSetStmt& from) { CopyFrom(from); return *this; } inline VariableSetStmt& operator=(VariableSetStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const VariableSetStmt& default_instance(); static inline const VariableSetStmt* internal_default_instance() { return reinterpret_cast( &_VariableSetStmt_default_instance_); } static constexpr int kIndexInFileMessages = 105; friend void swap(VariableSetStmt& a, VariableSetStmt& b) { a.Swap(&b); } inline void Swap(VariableSetStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VariableSetStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline VariableSetStmt* New() const final { return CreateMaybeMessage(nullptr); } VariableSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const VariableSetStmt& from); void MergeFrom(const VariableSetStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(VariableSetStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.VariableSetStmt"; } protected: explicit VariableSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 3, kNameFieldNumber = 2, kKindFieldNumber = 1, kIsLocalFieldNumber = 4, }; // repeated .pg_query.Node args = 3 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // string name = 2 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::VariableSetKind kind() const; void set_kind(::pg_query::VariableSetKind value); private: ::pg_query::VariableSetKind _internal_kind() const; void _internal_set_kind(::pg_query::VariableSetKind value); public: // bool is_local = 4 [json_name = "is_local"]; void clear_is_local(); bool is_local() const; void set_is_local(bool value); private: bool _internal_is_local() const; void _internal_set_is_local(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.VariableSetStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; int kind_; bool is_local_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class VariableShowStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VariableShowStmt) */ { public: inline VariableShowStmt() : VariableShowStmt(nullptr) {} virtual ~VariableShowStmt(); VariableShowStmt(const VariableShowStmt& from); VariableShowStmt(VariableShowStmt&& from) noexcept : VariableShowStmt() { *this = ::std::move(from); } inline VariableShowStmt& operator=(const VariableShowStmt& from) { CopyFrom(from); return *this; } inline VariableShowStmt& operator=(VariableShowStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const VariableShowStmt& default_instance(); static inline const VariableShowStmt* internal_default_instance() { return reinterpret_cast( &_VariableShowStmt_default_instance_); } static constexpr int kIndexInFileMessages = 106; friend void swap(VariableShowStmt& a, VariableShowStmt& b) { a.Swap(&b); } inline void Swap(VariableShowStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VariableShowStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline VariableShowStmt* New() const final { return CreateMaybeMessage(nullptr); } VariableShowStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const VariableShowStmt& from); void MergeFrom(const VariableShowStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(VariableShowStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.VariableShowStmt"; } protected: explicit VariableShowStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 1, }; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // @@protoc_insertion_point(class_scope:pg_query.VariableShowStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DiscardStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DiscardStmt) */ { public: inline DiscardStmt() : DiscardStmt(nullptr) {} virtual ~DiscardStmt(); DiscardStmt(const DiscardStmt& from); DiscardStmt(DiscardStmt&& from) noexcept : DiscardStmt() { *this = ::std::move(from); } inline DiscardStmt& operator=(const DiscardStmt& from) { CopyFrom(from); return *this; } inline DiscardStmt& operator=(DiscardStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DiscardStmt& default_instance(); static inline const DiscardStmt* internal_default_instance() { return reinterpret_cast( &_DiscardStmt_default_instance_); } static constexpr int kIndexInFileMessages = 107; friend void swap(DiscardStmt& a, DiscardStmt& b) { a.Swap(&b); } inline void Swap(DiscardStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DiscardStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DiscardStmt* New() const final { return CreateMaybeMessage(nullptr); } DiscardStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DiscardStmt& from); void MergeFrom(const DiscardStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DiscardStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DiscardStmt"; } protected: explicit DiscardStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTargetFieldNumber = 1, }; // .pg_query.DiscardMode target = 1 [json_name = "target"]; void clear_target(); ::pg_query::DiscardMode target() const; void set_target(::pg_query::DiscardMode value); private: ::pg_query::DiscardMode _internal_target() const; void _internal_set_target(::pg_query::DiscardMode value); public: // @@protoc_insertion_point(class_scope:pg_query.DiscardStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; int target_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateTrigStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTrigStmt) */ { public: inline CreateTrigStmt() : CreateTrigStmt(nullptr) {} virtual ~CreateTrigStmt(); CreateTrigStmt(const CreateTrigStmt& from); CreateTrigStmt(CreateTrigStmt&& from) noexcept : CreateTrigStmt() { *this = ::std::move(from); } inline CreateTrigStmt& operator=(const CreateTrigStmt& from) { CopyFrom(from); return *this; } inline CreateTrigStmt& operator=(CreateTrigStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateTrigStmt& default_instance(); static inline const CreateTrigStmt* internal_default_instance() { return reinterpret_cast( &_CreateTrigStmt_default_instance_); } static constexpr int kIndexInFileMessages = 108; friend void swap(CreateTrigStmt& a, CreateTrigStmt& b) { a.Swap(&b); } inline void Swap(CreateTrigStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTrigStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateTrigStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateTrigStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateTrigStmt& from); void MergeFrom(const CreateTrigStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateTrigStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateTrigStmt"; } protected: explicit CreateTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFuncnameFieldNumber = 3, kArgsFieldNumber = 4, kColumnsFieldNumber = 8, kTransitionRelsFieldNumber = 11, kTrignameFieldNumber = 1, kRelationFieldNumber = 2, kWhenClauseFieldNumber = 9, kConstrrelFieldNumber = 14, kTimingFieldNumber = 6, kEventsFieldNumber = 7, kRowFieldNumber = 5, kIsconstraintFieldNumber = 10, kDeferrableFieldNumber = 12, kInitdeferredFieldNumber = 13, }; // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; int funcname_size() const; private: int _internal_funcname_size() const; public: void clear_funcname(); ::pg_query::Node* mutable_funcname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::pg_query::Node& _internal_funcname(int index) const; ::pg_query::Node* _internal_add_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funcname() const; // repeated .pg_query.Node args = 4 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node columns = 8 [json_name = "columns"]; int columns_size() const; private: int _internal_columns_size() const; public: void clear_columns(); ::pg_query::Node* mutable_columns(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_columns(); private: const ::pg_query::Node& _internal_columns(int index) const; ::pg_query::Node* _internal_add_columns(); public: const ::pg_query::Node& columns(int index) const; ::pg_query::Node* add_columns(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& columns() const; // repeated .pg_query.Node transition_rels = 11 [json_name = "transitionRels"]; int transition_rels_size() const; private: int _internal_transition_rels_size() const; public: void clear_transition_rels(); ::pg_query::Node* mutable_transition_rels(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_transition_rels(); private: const ::pg_query::Node& _internal_transition_rels(int index) const; ::pg_query::Node* _internal_add_transition_rels(); public: const ::pg_query::Node& transition_rels(int index) const; ::pg_query::Node* add_transition_rels(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& transition_rels() const; // string trigname = 1 [json_name = "trigname"]; void clear_trigname(); const std::string& trigname() const; void set_trigname(const std::string& value); void set_trigname(std::string&& value); void set_trigname(const char* value); void set_trigname(const char* value, size_t size); std::string* mutable_trigname(); std::string* release_trigname(); void set_allocated_trigname(std::string* trigname); private: const std::string& _internal_trigname() const; void _internal_set_trigname(const std::string& value); std::string* _internal_mutable_trigname(); public: // .pg_query.RangeVar relation = 2 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node when_clause = 9 [json_name = "whenClause"]; bool has_when_clause() const; private: bool _internal_has_when_clause() const; public: void clear_when_clause(); const ::pg_query::Node& when_clause() const; ::pg_query::Node* release_when_clause(); ::pg_query::Node* mutable_when_clause(); void set_allocated_when_clause(::pg_query::Node* when_clause); private: const ::pg_query::Node& _internal_when_clause() const; ::pg_query::Node* _internal_mutable_when_clause(); public: void unsafe_arena_set_allocated_when_clause( ::pg_query::Node* when_clause); ::pg_query::Node* unsafe_arena_release_when_clause(); // .pg_query.RangeVar constrrel = 14 [json_name = "constrrel"]; bool has_constrrel() const; private: bool _internal_has_constrrel() const; public: void clear_constrrel(); const ::pg_query::RangeVar& constrrel() const; ::pg_query::RangeVar* release_constrrel(); ::pg_query::RangeVar* mutable_constrrel(); void set_allocated_constrrel(::pg_query::RangeVar* constrrel); private: const ::pg_query::RangeVar& _internal_constrrel() const; ::pg_query::RangeVar* _internal_mutable_constrrel(); public: void unsafe_arena_set_allocated_constrrel( ::pg_query::RangeVar* constrrel); ::pg_query::RangeVar* unsafe_arena_release_constrrel(); // int32 timing = 6 [json_name = "timing"]; void clear_timing(); ::PROTOBUF_NAMESPACE_ID::int32 timing() const; void set_timing(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_timing() const; void _internal_set_timing(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 events = 7 [json_name = "events"]; void clear_events(); ::PROTOBUF_NAMESPACE_ID::int32 events() const; void set_events(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_events() const; void _internal_set_events(::PROTOBUF_NAMESPACE_ID::int32 value); public: // bool row = 5 [json_name = "row"]; void clear_row(); bool row() const; void set_row(bool value); private: bool _internal_row() const; void _internal_set_row(bool value); public: // bool isconstraint = 10 [json_name = "isconstraint"]; void clear_isconstraint(); bool isconstraint() const; void set_isconstraint(bool value); private: bool _internal_isconstraint() const; void _internal_set_isconstraint(bool value); public: // bool deferrable = 12 [json_name = "deferrable"]; void clear_deferrable(); bool deferrable() const; void set_deferrable(bool value); private: bool _internal_deferrable() const; void _internal_set_deferrable(bool value); public: // bool initdeferred = 13 [json_name = "initdeferred"]; void clear_initdeferred(); bool initdeferred() const; void set_initdeferred(bool value); private: bool _internal_initdeferred() const; void _internal_set_initdeferred(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateTrigStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > columns_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > transition_rels_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr trigname_; ::pg_query::RangeVar* relation_; ::pg_query::Node* when_clause_; ::pg_query::RangeVar* constrrel_; ::PROTOBUF_NAMESPACE_ID::int32 timing_; ::PROTOBUF_NAMESPACE_ID::int32 events_; bool row_; bool isconstraint_; bool deferrable_; bool initdeferred_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreatePLangStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePLangStmt) */ { public: inline CreatePLangStmt() : CreatePLangStmt(nullptr) {} virtual ~CreatePLangStmt(); CreatePLangStmt(const CreatePLangStmt& from); CreatePLangStmt(CreatePLangStmt&& from) noexcept : CreatePLangStmt() { *this = ::std::move(from); } inline CreatePLangStmt& operator=(const CreatePLangStmt& from) { CopyFrom(from); return *this; } inline CreatePLangStmt& operator=(CreatePLangStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreatePLangStmt& default_instance(); static inline const CreatePLangStmt* internal_default_instance() { return reinterpret_cast( &_CreatePLangStmt_default_instance_); } static constexpr int kIndexInFileMessages = 109; friend void swap(CreatePLangStmt& a, CreatePLangStmt& b) { a.Swap(&b); } inline void Swap(CreatePLangStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatePLangStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreatePLangStmt* New() const final { return CreateMaybeMessage(nullptr); } CreatePLangStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreatePLangStmt& from); void MergeFrom(const CreatePLangStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreatePLangStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreatePLangStmt"; } protected: explicit CreatePLangStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPlhandlerFieldNumber = 3, kPlinlineFieldNumber = 4, kPlvalidatorFieldNumber = 5, kPlnameFieldNumber = 2, kReplaceFieldNumber = 1, kPltrustedFieldNumber = 6, }; // repeated .pg_query.Node plhandler = 3 [json_name = "plhandler"]; int plhandler_size() const; private: int _internal_plhandler_size() const; public: void clear_plhandler(); ::pg_query::Node* mutable_plhandler(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_plhandler(); private: const ::pg_query::Node& _internal_plhandler(int index) const; ::pg_query::Node* _internal_add_plhandler(); public: const ::pg_query::Node& plhandler(int index) const; ::pg_query::Node* add_plhandler(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& plhandler() const; // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; int plinline_size() const; private: int _internal_plinline_size() const; public: void clear_plinline(); ::pg_query::Node* mutable_plinline(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_plinline(); private: const ::pg_query::Node& _internal_plinline(int index) const; ::pg_query::Node* _internal_add_plinline(); public: const ::pg_query::Node& plinline(int index) const; ::pg_query::Node* add_plinline(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& plinline() const; // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; int plvalidator_size() const; private: int _internal_plvalidator_size() const; public: void clear_plvalidator(); ::pg_query::Node* mutable_plvalidator(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_plvalidator(); private: const ::pg_query::Node& _internal_plvalidator(int index) const; ::pg_query::Node* _internal_add_plvalidator(); public: const ::pg_query::Node& plvalidator(int index) const; ::pg_query::Node* add_plvalidator(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& plvalidator() const; // string plname = 2 [json_name = "plname"]; void clear_plname(); const std::string& plname() const; void set_plname(const std::string& value); void set_plname(std::string&& value); void set_plname(const char* value); void set_plname(const char* value, size_t size); std::string* mutable_plname(); std::string* release_plname(); void set_allocated_plname(std::string* plname); private: const std::string& _internal_plname() const; void _internal_set_plname(const std::string& value); std::string* _internal_mutable_plname(); public: // bool replace = 1 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // bool pltrusted = 6 [json_name = "pltrusted"]; void clear_pltrusted(); bool pltrusted() const; void set_pltrusted(bool value); private: bool _internal_pltrusted() const; void _internal_set_pltrusted(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreatePLangStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > plhandler_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > plinline_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > plvalidator_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr plname_; bool replace_; bool pltrusted_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateRoleStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateRoleStmt) */ { public: inline CreateRoleStmt() : CreateRoleStmt(nullptr) {} virtual ~CreateRoleStmt(); CreateRoleStmt(const CreateRoleStmt& from); CreateRoleStmt(CreateRoleStmt&& from) noexcept : CreateRoleStmt() { *this = ::std::move(from); } inline CreateRoleStmt& operator=(const CreateRoleStmt& from) { CopyFrom(from); return *this; } inline CreateRoleStmt& operator=(CreateRoleStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateRoleStmt& default_instance(); static inline const CreateRoleStmt* internal_default_instance() { return reinterpret_cast( &_CreateRoleStmt_default_instance_); } static constexpr int kIndexInFileMessages = 110; friend void swap(CreateRoleStmt& a, CreateRoleStmt& b) { a.Swap(&b); } inline void Swap(CreateRoleStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateRoleStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateRoleStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateRoleStmt& from); void MergeFrom(const CreateRoleStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateRoleStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateRoleStmt"; } protected: explicit CreateRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 3, kRoleFieldNumber = 2, kStmtTypeFieldNumber = 1, }; // repeated .pg_query.Node options = 3 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string role = 2 [json_name = "role"]; void clear_role(); const std::string& role() const; void set_role(const std::string& value); void set_role(std::string&& value); void set_role(const char* value); void set_role(const char* value, size_t size); std::string* mutable_role(); std::string* release_role(); void set_allocated_role(std::string* role); private: const std::string& _internal_role() const; void _internal_set_role(const std::string& value); std::string* _internal_mutable_role(); public: // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; void clear_stmt_type(); ::pg_query::RoleStmtType stmt_type() const; void set_stmt_type(::pg_query::RoleStmtType value); private: ::pg_query::RoleStmtType _internal_stmt_type() const; void _internal_set_stmt_type(::pg_query::RoleStmtType value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateRoleStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr role_; int stmt_type_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterRoleStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterRoleStmt) */ { public: inline AlterRoleStmt() : AlterRoleStmt(nullptr) {} virtual ~AlterRoleStmt(); AlterRoleStmt(const AlterRoleStmt& from); AlterRoleStmt(AlterRoleStmt&& from) noexcept : AlterRoleStmt() { *this = ::std::move(from); } inline AlterRoleStmt& operator=(const AlterRoleStmt& from) { CopyFrom(from); return *this; } inline AlterRoleStmt& operator=(AlterRoleStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterRoleStmt& default_instance(); static inline const AlterRoleStmt* internal_default_instance() { return reinterpret_cast( &_AlterRoleStmt_default_instance_); } static constexpr int kIndexInFileMessages = 111; friend void swap(AlterRoleStmt& a, AlterRoleStmt& b) { a.Swap(&b); } inline void Swap(AlterRoleStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterRoleStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterRoleStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterRoleStmt& from); void MergeFrom(const AlterRoleStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterRoleStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterRoleStmt"; } protected: explicit AlterRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kRoleFieldNumber = 1, kActionFieldNumber = 3, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.RoleSpec role = 1 [json_name = "role"]; bool has_role() const; private: bool _internal_has_role() const; public: void clear_role(); const ::pg_query::RoleSpec& role() const; ::pg_query::RoleSpec* release_role(); ::pg_query::RoleSpec* mutable_role(); void set_allocated_role(::pg_query::RoleSpec* role); private: const ::pg_query::RoleSpec& _internal_role() const; ::pg_query::RoleSpec* _internal_mutable_role(); public: void unsafe_arena_set_allocated_role( ::pg_query::RoleSpec* role); ::pg_query::RoleSpec* unsafe_arena_release_role(); // int32 action = 3 [json_name = "action"]; void clear_action(); ::PROTOBUF_NAMESPACE_ID::int32 action() const; void set_action(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_action() const; void _internal_set_action(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterRoleStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::RoleSpec* role_; ::PROTOBUF_NAMESPACE_ID::int32 action_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropRoleStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropRoleStmt) */ { public: inline DropRoleStmt() : DropRoleStmt(nullptr) {} virtual ~DropRoleStmt(); DropRoleStmt(const DropRoleStmt& from); DropRoleStmt(DropRoleStmt&& from) noexcept : DropRoleStmt() { *this = ::std::move(from); } inline DropRoleStmt& operator=(const DropRoleStmt& from) { CopyFrom(from); return *this; } inline DropRoleStmt& operator=(DropRoleStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DropRoleStmt& default_instance(); static inline const DropRoleStmt* internal_default_instance() { return reinterpret_cast( &_DropRoleStmt_default_instance_); } static constexpr int kIndexInFileMessages = 112; friend void swap(DropRoleStmt& a, DropRoleStmt& b) { a.Swap(&b); } inline void Swap(DropRoleStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropRoleStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DropRoleStmt* New() const final { return CreateMaybeMessage(nullptr); } DropRoleStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DropRoleStmt& from); void MergeFrom(const DropRoleStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropRoleStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropRoleStmt"; } protected: explicit DropRoleStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRolesFieldNumber = 1, kMissingOkFieldNumber = 2, }; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; int roles_size() const; private: int _internal_roles_size() const; public: void clear_roles(); ::pg_query::Node* mutable_roles(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // bool missing_ok = 2 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.DropRoleStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class LockStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.LockStmt) */ { public: inline LockStmt() : LockStmt(nullptr) {} virtual ~LockStmt(); LockStmt(const LockStmt& from); LockStmt(LockStmt&& from) noexcept : LockStmt() { *this = ::std::move(from); } inline LockStmt& operator=(const LockStmt& from) { CopyFrom(from); return *this; } inline LockStmt& operator=(LockStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const LockStmt& default_instance(); static inline const LockStmt* internal_default_instance() { return reinterpret_cast( &_LockStmt_default_instance_); } static constexpr int kIndexInFileMessages = 113; friend void swap(LockStmt& a, LockStmt& b) { a.Swap(&b); } inline void Swap(LockStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(LockStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline LockStmt* New() const final { return CreateMaybeMessage(nullptr); } LockStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const LockStmt& from); void MergeFrom(const LockStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(LockStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.LockStmt"; } protected: explicit LockStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRelationsFieldNumber = 1, kModeFieldNumber = 2, kNowaitFieldNumber = 3, }; // repeated .pg_query.Node relations = 1 [json_name = "relations"]; int relations_size() const; private: int _internal_relations_size() const; public: void clear_relations(); ::pg_query::Node* mutable_relations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_relations(); private: const ::pg_query::Node& _internal_relations(int index) const; ::pg_query::Node* _internal_add_relations(); public: const ::pg_query::Node& relations(int index) const; ::pg_query::Node* add_relations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& relations() const; // int32 mode = 2 [json_name = "mode"]; void clear_mode(); ::PROTOBUF_NAMESPACE_ID::int32 mode() const; void set_mode(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_mode() const; void _internal_set_mode(::PROTOBUF_NAMESPACE_ID::int32 value); public: // bool nowait = 3 [json_name = "nowait"]; void clear_nowait(); bool nowait() const; void set_nowait(bool value); private: bool _internal_nowait() const; void _internal_set_nowait(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.LockStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > relations_; ::PROTOBUF_NAMESPACE_ID::int32 mode_; bool nowait_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ConstraintsSetStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ConstraintsSetStmt) */ { public: inline ConstraintsSetStmt() : ConstraintsSetStmt(nullptr) {} virtual ~ConstraintsSetStmt(); ConstraintsSetStmt(const ConstraintsSetStmt& from); ConstraintsSetStmt(ConstraintsSetStmt&& from) noexcept : ConstraintsSetStmt() { *this = ::std::move(from); } inline ConstraintsSetStmt& operator=(const ConstraintsSetStmt& from) { CopyFrom(from); return *this; } inline ConstraintsSetStmt& operator=(ConstraintsSetStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ConstraintsSetStmt& default_instance(); static inline const ConstraintsSetStmt* internal_default_instance() { return reinterpret_cast( &_ConstraintsSetStmt_default_instance_); } static constexpr int kIndexInFileMessages = 114; friend void swap(ConstraintsSetStmt& a, ConstraintsSetStmt& b) { a.Swap(&b); } inline void Swap(ConstraintsSetStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ConstraintsSetStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ConstraintsSetStmt* New() const final { return CreateMaybeMessage(nullptr); } ConstraintsSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ConstraintsSetStmt& from); void MergeFrom(const ConstraintsSetStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ConstraintsSetStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ConstraintsSetStmt"; } protected: explicit ConstraintsSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConstraintsFieldNumber = 1, kDeferredFieldNumber = 2, }; // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; int constraints_size() const; private: int _internal_constraints_size() const; public: void clear_constraints(); ::pg_query::Node* mutable_constraints(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::pg_query::Node& _internal_constraints(int index) const; ::pg_query::Node* _internal_add_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& constraints() const; // bool deferred = 2 [json_name = "deferred"]; void clear_deferred(); bool deferred() const; void set_deferred(bool value); private: bool _internal_deferred() const; void _internal_set_deferred(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.ConstraintsSetStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; bool deferred_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ReindexStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ReindexStmt) */ { public: inline ReindexStmt() : ReindexStmt(nullptr) {} virtual ~ReindexStmt(); ReindexStmt(const ReindexStmt& from); ReindexStmt(ReindexStmt&& from) noexcept : ReindexStmt() { *this = ::std::move(from); } inline ReindexStmt& operator=(const ReindexStmt& from) { CopyFrom(from); return *this; } inline ReindexStmt& operator=(ReindexStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ReindexStmt& default_instance(); static inline const ReindexStmt* internal_default_instance() { return reinterpret_cast( &_ReindexStmt_default_instance_); } static constexpr int kIndexInFileMessages = 115; friend void swap(ReindexStmt& a, ReindexStmt& b) { a.Swap(&b); } inline void Swap(ReindexStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReindexStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ReindexStmt* New() const final { return CreateMaybeMessage(nullptr); } ReindexStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ReindexStmt& from); void MergeFrom(const ReindexStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ReindexStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ReindexStmt"; } protected: explicit ReindexStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 3, kRelationFieldNumber = 2, kKindFieldNumber = 1, kOptionsFieldNumber = 4, kConcurrentFieldNumber = 5, }; // string name = 3 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.RangeVar relation = 2 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::ReindexObjectType kind() const; void set_kind(::pg_query::ReindexObjectType value); private: ::pg_query::ReindexObjectType _internal_kind() const; void _internal_set_kind(::pg_query::ReindexObjectType value); public: // int32 options = 4 [json_name = "options"]; void clear_options(); ::PROTOBUF_NAMESPACE_ID::int32 options() const; void set_options(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_options() const; void _internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value); public: // bool concurrent = 5 [json_name = "concurrent"]; void clear_concurrent(); bool concurrent() const; void set_concurrent(bool value); private: bool _internal_concurrent() const; void _internal_set_concurrent(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.ReindexStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::RangeVar* relation_; int kind_; ::PROTOBUF_NAMESPACE_ID::int32 options_; bool concurrent_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CheckPointStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CheckPointStmt) */ { public: inline CheckPointStmt() : CheckPointStmt(nullptr) {} virtual ~CheckPointStmt(); CheckPointStmt(const CheckPointStmt& from); CheckPointStmt(CheckPointStmt&& from) noexcept : CheckPointStmt() { *this = ::std::move(from); } inline CheckPointStmt& operator=(const CheckPointStmt& from) { CopyFrom(from); return *this; } inline CheckPointStmt& operator=(CheckPointStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CheckPointStmt& default_instance(); static inline const CheckPointStmt* internal_default_instance() { return reinterpret_cast( &_CheckPointStmt_default_instance_); } static constexpr int kIndexInFileMessages = 116; friend void swap(CheckPointStmt& a, CheckPointStmt& b) { a.Swap(&b); } inline void Swap(CheckPointStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CheckPointStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CheckPointStmt* New() const final { return CreateMaybeMessage(nullptr); } CheckPointStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CheckPointStmt& from); void MergeFrom(const CheckPointStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CheckPointStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CheckPointStmt"; } protected: explicit CheckPointStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // @@protoc_insertion_point(class_scope:pg_query.CheckPointStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateSchemaStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSchemaStmt) */ { public: inline CreateSchemaStmt() : CreateSchemaStmt(nullptr) {} virtual ~CreateSchemaStmt(); CreateSchemaStmt(const CreateSchemaStmt& from); CreateSchemaStmt(CreateSchemaStmt&& from) noexcept : CreateSchemaStmt() { *this = ::std::move(from); } inline CreateSchemaStmt& operator=(const CreateSchemaStmt& from) { CopyFrom(from); return *this; } inline CreateSchemaStmt& operator=(CreateSchemaStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateSchemaStmt& default_instance(); static inline const CreateSchemaStmt* internal_default_instance() { return reinterpret_cast( &_CreateSchemaStmt_default_instance_); } static constexpr int kIndexInFileMessages = 117; friend void swap(CreateSchemaStmt& a, CreateSchemaStmt& b) { a.Swap(&b); } inline void Swap(CreateSchemaStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateSchemaStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateSchemaStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateSchemaStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateSchemaStmt& from); void MergeFrom(const CreateSchemaStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateSchemaStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateSchemaStmt"; } protected: explicit CreateSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSchemaEltsFieldNumber = 3, kSchemanameFieldNumber = 1, kAuthroleFieldNumber = 2, kIfNotExistsFieldNumber = 4, }; // repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; int schema_elts_size() const; private: int _internal_schema_elts_size() const; public: void clear_schema_elts(); ::pg_query::Node* mutable_schema_elts(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_schema_elts(); private: const ::pg_query::Node& _internal_schema_elts(int index) const; ::pg_query::Node* _internal_add_schema_elts(); public: const ::pg_query::Node& schema_elts(int index) const; ::pg_query::Node* add_schema_elts(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& schema_elts() const; // string schemaname = 1 [json_name = "schemaname"]; void clear_schemaname(); const std::string& schemaname() const; void set_schemaname(const std::string& value); void set_schemaname(std::string&& value); void set_schemaname(const char* value); void set_schemaname(const char* value, size_t size); std::string* mutable_schemaname(); std::string* release_schemaname(); void set_allocated_schemaname(std::string* schemaname); private: const std::string& _internal_schemaname() const; void _internal_set_schemaname(const std::string& value); std::string* _internal_mutable_schemaname(); public: // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; bool has_authrole() const; private: bool _internal_has_authrole() const; public: void clear_authrole(); const ::pg_query::RoleSpec& authrole() const; ::pg_query::RoleSpec* release_authrole(); ::pg_query::RoleSpec* mutable_authrole(); void set_allocated_authrole(::pg_query::RoleSpec* authrole); private: const ::pg_query::RoleSpec& _internal_authrole() const; ::pg_query::RoleSpec* _internal_mutable_authrole(); public: void unsafe_arena_set_allocated_authrole( ::pg_query::RoleSpec* authrole); ::pg_query::RoleSpec* unsafe_arena_release_authrole(); // bool if_not_exists = 4 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateSchemaStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > schema_elts_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr schemaname_; ::pg_query::RoleSpec* authrole_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterDatabaseStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDatabaseStmt) */ { public: inline AlterDatabaseStmt() : AlterDatabaseStmt(nullptr) {} virtual ~AlterDatabaseStmt(); AlterDatabaseStmt(const AlterDatabaseStmt& from); AlterDatabaseStmt(AlterDatabaseStmt&& from) noexcept : AlterDatabaseStmt() { *this = ::std::move(from); } inline AlterDatabaseStmt& operator=(const AlterDatabaseStmt& from) { CopyFrom(from); return *this; } inline AlterDatabaseStmt& operator=(AlterDatabaseStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterDatabaseStmt& default_instance(); static inline const AlterDatabaseStmt* internal_default_instance() { return reinterpret_cast( &_AlterDatabaseStmt_default_instance_); } static constexpr int kIndexInFileMessages = 118; friend void swap(AlterDatabaseStmt& a, AlterDatabaseStmt& b) { a.Swap(&b); } inline void Swap(AlterDatabaseStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDatabaseStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterDatabaseStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterDatabaseStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterDatabaseStmt& from); void MergeFrom(const AlterDatabaseStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterDatabaseStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterDatabaseStmt"; } protected: explicit AlterDatabaseStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kDbnameFieldNumber = 1, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string dbname = 1 [json_name = "dbname"]; void clear_dbname(); const std::string& dbname() const; void set_dbname(const std::string& value); void set_dbname(std::string&& value); void set_dbname(const char* value); void set_dbname(const char* value, size_t size); std::string* mutable_dbname(); std::string* release_dbname(); void set_allocated_dbname(std::string* dbname); private: const std::string& _internal_dbname() const; void _internal_set_dbname(const std::string& value); std::string* _internal_mutable_dbname(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterDatabaseStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterDatabaseSetStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterDatabaseSetStmt) */ { public: inline AlterDatabaseSetStmt() : AlterDatabaseSetStmt(nullptr) {} virtual ~AlterDatabaseSetStmt(); AlterDatabaseSetStmt(const AlterDatabaseSetStmt& from); AlterDatabaseSetStmt(AlterDatabaseSetStmt&& from) noexcept : AlterDatabaseSetStmt() { *this = ::std::move(from); } inline AlterDatabaseSetStmt& operator=(const AlterDatabaseSetStmt& from) { CopyFrom(from); return *this; } inline AlterDatabaseSetStmt& operator=(AlterDatabaseSetStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterDatabaseSetStmt& default_instance(); static inline const AlterDatabaseSetStmt* internal_default_instance() { return reinterpret_cast( &_AlterDatabaseSetStmt_default_instance_); } static constexpr int kIndexInFileMessages = 119; friend void swap(AlterDatabaseSetStmt& a, AlterDatabaseSetStmt& b) { a.Swap(&b); } inline void Swap(AlterDatabaseSetStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterDatabaseSetStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterDatabaseSetStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterDatabaseSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterDatabaseSetStmt& from); void MergeFrom(const AlterDatabaseSetStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterDatabaseSetStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterDatabaseSetStmt"; } protected: explicit AlterDatabaseSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDbnameFieldNumber = 1, kSetstmtFieldNumber = 2, }; // string dbname = 1 [json_name = "dbname"]; void clear_dbname(); const std::string& dbname() const; void set_dbname(const std::string& value); void set_dbname(std::string&& value); void set_dbname(const char* value); void set_dbname(const char* value, size_t size); std::string* mutable_dbname(); std::string* release_dbname(); void set_allocated_dbname(std::string* dbname); private: const std::string& _internal_dbname() const; void _internal_set_dbname(const std::string& value); std::string* _internal_mutable_dbname(); public: // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; bool has_setstmt() const; private: bool _internal_has_setstmt() const; public: void clear_setstmt(); const ::pg_query::VariableSetStmt& setstmt() const; ::pg_query::VariableSetStmt* release_setstmt(); ::pg_query::VariableSetStmt* mutable_setstmt(); void set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt); private: const ::pg_query::VariableSetStmt& _internal_setstmt() const; ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); public: void unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt); ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); // @@protoc_insertion_point(class_scope:pg_query.AlterDatabaseSetStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dbname_; ::pg_query::VariableSetStmt* setstmt_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterRoleSetStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterRoleSetStmt) */ { public: inline AlterRoleSetStmt() : AlterRoleSetStmt(nullptr) {} virtual ~AlterRoleSetStmt(); AlterRoleSetStmt(const AlterRoleSetStmt& from); AlterRoleSetStmt(AlterRoleSetStmt&& from) noexcept : AlterRoleSetStmt() { *this = ::std::move(from); } inline AlterRoleSetStmt& operator=(const AlterRoleSetStmt& from) { CopyFrom(from); return *this; } inline AlterRoleSetStmt& operator=(AlterRoleSetStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterRoleSetStmt& default_instance(); static inline const AlterRoleSetStmt* internal_default_instance() { return reinterpret_cast( &_AlterRoleSetStmt_default_instance_); } static constexpr int kIndexInFileMessages = 120; friend void swap(AlterRoleSetStmt& a, AlterRoleSetStmt& b) { a.Swap(&b); } inline void Swap(AlterRoleSetStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterRoleSetStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterRoleSetStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterRoleSetStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterRoleSetStmt& from); void MergeFrom(const AlterRoleSetStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterRoleSetStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterRoleSetStmt"; } protected: explicit AlterRoleSetStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDatabaseFieldNumber = 2, kRoleFieldNumber = 1, kSetstmtFieldNumber = 3, }; // string database = 2 [json_name = "database"]; void clear_database(); const std::string& database() const; void set_database(const std::string& value); void set_database(std::string&& value); void set_database(const char* value); void set_database(const char* value, size_t size); std::string* mutable_database(); std::string* release_database(); void set_allocated_database(std::string* database); private: const std::string& _internal_database() const; void _internal_set_database(const std::string& value); std::string* _internal_mutable_database(); public: // .pg_query.RoleSpec role = 1 [json_name = "role"]; bool has_role() const; private: bool _internal_has_role() const; public: void clear_role(); const ::pg_query::RoleSpec& role() const; ::pg_query::RoleSpec* release_role(); ::pg_query::RoleSpec* mutable_role(); void set_allocated_role(::pg_query::RoleSpec* role); private: const ::pg_query::RoleSpec& _internal_role() const; ::pg_query::RoleSpec* _internal_mutable_role(); public: void unsafe_arena_set_allocated_role( ::pg_query::RoleSpec* role); ::pg_query::RoleSpec* unsafe_arena_release_role(); // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; bool has_setstmt() const; private: bool _internal_has_setstmt() const; public: void clear_setstmt(); const ::pg_query::VariableSetStmt& setstmt() const; ::pg_query::VariableSetStmt* release_setstmt(); ::pg_query::VariableSetStmt* mutable_setstmt(); void set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt); private: const ::pg_query::VariableSetStmt& _internal_setstmt() const; ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); public: void unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt); ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); // @@protoc_insertion_point(class_scope:pg_query.AlterRoleSetStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr database_; ::pg_query::RoleSpec* role_; ::pg_query::VariableSetStmt* setstmt_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateConversionStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateConversionStmt) */ { public: inline CreateConversionStmt() : CreateConversionStmt(nullptr) {} virtual ~CreateConversionStmt(); CreateConversionStmt(const CreateConversionStmt& from); CreateConversionStmt(CreateConversionStmt&& from) noexcept : CreateConversionStmt() { *this = ::std::move(from); } inline CreateConversionStmt& operator=(const CreateConversionStmt& from) { CopyFrom(from); return *this; } inline CreateConversionStmt& operator=(CreateConversionStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateConversionStmt& default_instance(); static inline const CreateConversionStmt* internal_default_instance() { return reinterpret_cast( &_CreateConversionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 121; friend void swap(CreateConversionStmt& a, CreateConversionStmt& b) { a.Swap(&b); } inline void Swap(CreateConversionStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateConversionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateConversionStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateConversionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateConversionStmt& from); void MergeFrom(const CreateConversionStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateConversionStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateConversionStmt"; } protected: explicit CreateConversionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConversionNameFieldNumber = 1, kFuncNameFieldNumber = 4, kForEncodingNameFieldNumber = 2, kToEncodingNameFieldNumber = 3, kDefFieldNumber = 5, }; // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; int conversion_name_size() const; private: int _internal_conversion_name_size() const; public: void clear_conversion_name(); ::pg_query::Node* mutable_conversion_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_conversion_name(); private: const ::pg_query::Node& _internal_conversion_name(int index) const; ::pg_query::Node* _internal_add_conversion_name(); public: const ::pg_query::Node& conversion_name(int index) const; ::pg_query::Node* add_conversion_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& conversion_name() const; // repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; int func_name_size() const; private: int _internal_func_name_size() const; public: void clear_func_name(); ::pg_query::Node* mutable_func_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_func_name(); private: const ::pg_query::Node& _internal_func_name(int index) const; ::pg_query::Node* _internal_add_func_name(); public: const ::pg_query::Node& func_name(int index) const; ::pg_query::Node* add_func_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& func_name() const; // string for_encoding_name = 2 [json_name = "for_encoding_name"]; void clear_for_encoding_name(); const std::string& for_encoding_name() const; void set_for_encoding_name(const std::string& value); void set_for_encoding_name(std::string&& value); void set_for_encoding_name(const char* value); void set_for_encoding_name(const char* value, size_t size); std::string* mutable_for_encoding_name(); std::string* release_for_encoding_name(); void set_allocated_for_encoding_name(std::string* for_encoding_name); private: const std::string& _internal_for_encoding_name() const; void _internal_set_for_encoding_name(const std::string& value); std::string* _internal_mutable_for_encoding_name(); public: // string to_encoding_name = 3 [json_name = "to_encoding_name"]; void clear_to_encoding_name(); const std::string& to_encoding_name() const; void set_to_encoding_name(const std::string& value); void set_to_encoding_name(std::string&& value); void set_to_encoding_name(const char* value); void set_to_encoding_name(const char* value, size_t size); std::string* mutable_to_encoding_name(); std::string* release_to_encoding_name(); void set_allocated_to_encoding_name(std::string* to_encoding_name); private: const std::string& _internal_to_encoding_name() const; void _internal_set_to_encoding_name(const std::string& value); std::string* _internal_mutable_to_encoding_name(); public: // bool def = 5 [json_name = "def"]; void clear_def(); bool def() const; void set_def(bool value); private: bool _internal_def() const; void _internal_set_def(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateConversionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > conversion_name_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > func_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr for_encoding_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr to_encoding_name_; bool def_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateCastStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateCastStmt) */ { public: inline CreateCastStmt() : CreateCastStmt(nullptr) {} virtual ~CreateCastStmt(); CreateCastStmt(const CreateCastStmt& from); CreateCastStmt(CreateCastStmt&& from) noexcept : CreateCastStmt() { *this = ::std::move(from); } inline CreateCastStmt& operator=(const CreateCastStmt& from) { CopyFrom(from); return *this; } inline CreateCastStmt& operator=(CreateCastStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateCastStmt& default_instance(); static inline const CreateCastStmt* internal_default_instance() { return reinterpret_cast( &_CreateCastStmt_default_instance_); } static constexpr int kIndexInFileMessages = 122; friend void swap(CreateCastStmt& a, CreateCastStmt& b) { a.Swap(&b); } inline void Swap(CreateCastStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateCastStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateCastStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateCastStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateCastStmt& from); void MergeFrom(const CreateCastStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateCastStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateCastStmt"; } protected: explicit CreateCastStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSourcetypeFieldNumber = 1, kTargettypeFieldNumber = 2, kFuncFieldNumber = 3, kContextFieldNumber = 4, kInoutFieldNumber = 5, }; // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; bool has_sourcetype() const; private: bool _internal_has_sourcetype() const; public: void clear_sourcetype(); const ::pg_query::TypeName& sourcetype() const; ::pg_query::TypeName* release_sourcetype(); ::pg_query::TypeName* mutable_sourcetype(); void set_allocated_sourcetype(::pg_query::TypeName* sourcetype); private: const ::pg_query::TypeName& _internal_sourcetype() const; ::pg_query::TypeName* _internal_mutable_sourcetype(); public: void unsafe_arena_set_allocated_sourcetype( ::pg_query::TypeName* sourcetype); ::pg_query::TypeName* unsafe_arena_release_sourcetype(); // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; bool has_targettype() const; private: bool _internal_has_targettype() const; public: void clear_targettype(); const ::pg_query::TypeName& targettype() const; ::pg_query::TypeName* release_targettype(); ::pg_query::TypeName* mutable_targettype(); void set_allocated_targettype(::pg_query::TypeName* targettype); private: const ::pg_query::TypeName& _internal_targettype() const; ::pg_query::TypeName* _internal_mutable_targettype(); public: void unsafe_arena_set_allocated_targettype( ::pg_query::TypeName* targettype); ::pg_query::TypeName* unsafe_arena_release_targettype(); // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; bool has_func() const; private: bool _internal_has_func() const; public: void clear_func(); const ::pg_query::ObjectWithArgs& func() const; ::pg_query::ObjectWithArgs* release_func(); ::pg_query::ObjectWithArgs* mutable_func(); void set_allocated_func(::pg_query::ObjectWithArgs* func); private: const ::pg_query::ObjectWithArgs& _internal_func() const; ::pg_query::ObjectWithArgs* _internal_mutable_func(); public: void unsafe_arena_set_allocated_func( ::pg_query::ObjectWithArgs* func); ::pg_query::ObjectWithArgs* unsafe_arena_release_func(); // .pg_query.CoercionContext context = 4 [json_name = "context"]; void clear_context(); ::pg_query::CoercionContext context() const; void set_context(::pg_query::CoercionContext value); private: ::pg_query::CoercionContext _internal_context() const; void _internal_set_context(::pg_query::CoercionContext value); public: // bool inout = 5 [json_name = "inout"]; void clear_inout(); bool inout() const; void set_inout(bool value); private: bool _internal_inout() const; void _internal_set_inout(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateCastStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::TypeName* sourcetype_; ::pg_query::TypeName* targettype_; ::pg_query::ObjectWithArgs* func_; int context_; bool inout_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateOpClassStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpClassStmt) */ { public: inline CreateOpClassStmt() : CreateOpClassStmt(nullptr) {} virtual ~CreateOpClassStmt(); CreateOpClassStmt(const CreateOpClassStmt& from); CreateOpClassStmt(CreateOpClassStmt&& from) noexcept : CreateOpClassStmt() { *this = ::std::move(from); } inline CreateOpClassStmt& operator=(const CreateOpClassStmt& from) { CopyFrom(from); return *this; } inline CreateOpClassStmt& operator=(CreateOpClassStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateOpClassStmt& default_instance(); static inline const CreateOpClassStmt* internal_default_instance() { return reinterpret_cast( &_CreateOpClassStmt_default_instance_); } static constexpr int kIndexInFileMessages = 123; friend void swap(CreateOpClassStmt& a, CreateOpClassStmt& b) { a.Swap(&b); } inline void Swap(CreateOpClassStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateOpClassStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateOpClassStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateOpClassStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateOpClassStmt& from); void MergeFrom(const CreateOpClassStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateOpClassStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateOpClassStmt"; } protected: explicit CreateOpClassStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOpclassnameFieldNumber = 1, kOpfamilynameFieldNumber = 2, kItemsFieldNumber = 5, kAmnameFieldNumber = 3, kDatatypeFieldNumber = 4, kIsDefaultFieldNumber = 6, }; // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; int opclassname_size() const; private: int _internal_opclassname_size() const; public: void clear_opclassname(); ::pg_query::Node* mutable_opclassname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opclassname(); private: const ::pg_query::Node& _internal_opclassname(int index) const; ::pg_query::Node* _internal_add_opclassname(); public: const ::pg_query::Node& opclassname(int index) const; ::pg_query::Node* add_opclassname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opclassname() const; // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; int opfamilyname_size() const; private: int _internal_opfamilyname_size() const; public: void clear_opfamilyname(); ::pg_query::Node* mutable_opfamilyname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilyname(); private: const ::pg_query::Node& _internal_opfamilyname(int index) const; ::pg_query::Node* _internal_add_opfamilyname(); public: const ::pg_query::Node& opfamilyname(int index) const; ::pg_query::Node* add_opfamilyname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opfamilyname() const; // repeated .pg_query.Node items = 5 [json_name = "items"]; int items_size() const; private: int _internal_items_size() const; public: void clear_items(); ::pg_query::Node* mutable_items(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::pg_query::Node& _internal_items(int index) const; ::pg_query::Node* _internal_add_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& items() const; // string amname = 3 [json_name = "amname"]; void clear_amname(); const std::string& amname() const; void set_amname(const std::string& value); void set_amname(std::string&& value); void set_amname(const char* value); void set_amname(const char* value, size_t size); std::string* mutable_amname(); std::string* release_amname(); void set_allocated_amname(std::string* amname); private: const std::string& _internal_amname() const; void _internal_set_amname(const std::string& value); std::string* _internal_mutable_amname(); public: // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; bool has_datatype() const; private: bool _internal_has_datatype() const; public: void clear_datatype(); const ::pg_query::TypeName& datatype() const; ::pg_query::TypeName* release_datatype(); ::pg_query::TypeName* mutable_datatype(); void set_allocated_datatype(::pg_query::TypeName* datatype); private: const ::pg_query::TypeName& _internal_datatype() const; ::pg_query::TypeName* _internal_mutable_datatype(); public: void unsafe_arena_set_allocated_datatype( ::pg_query::TypeName* datatype); ::pg_query::TypeName* unsafe_arena_release_datatype(); // bool is_default = 6 [json_name = "isDefault"]; void clear_is_default(); bool is_default() const; void set_is_default(bool value); private: bool _internal_is_default() const; void _internal_set_is_default(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateOpClassStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclassname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilyname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; ::pg_query::TypeName* datatype_; bool is_default_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateOpFamilyStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpFamilyStmt) */ { public: inline CreateOpFamilyStmt() : CreateOpFamilyStmt(nullptr) {} virtual ~CreateOpFamilyStmt(); CreateOpFamilyStmt(const CreateOpFamilyStmt& from); CreateOpFamilyStmt(CreateOpFamilyStmt&& from) noexcept : CreateOpFamilyStmt() { *this = ::std::move(from); } inline CreateOpFamilyStmt& operator=(const CreateOpFamilyStmt& from) { CopyFrom(from); return *this; } inline CreateOpFamilyStmt& operator=(CreateOpFamilyStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateOpFamilyStmt& default_instance(); static inline const CreateOpFamilyStmt* internal_default_instance() { return reinterpret_cast( &_CreateOpFamilyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 124; friend void swap(CreateOpFamilyStmt& a, CreateOpFamilyStmt& b) { a.Swap(&b); } inline void Swap(CreateOpFamilyStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateOpFamilyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateOpFamilyStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateOpFamilyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateOpFamilyStmt& from); void MergeFrom(const CreateOpFamilyStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateOpFamilyStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateOpFamilyStmt"; } protected: explicit CreateOpFamilyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOpfamilynameFieldNumber = 1, kAmnameFieldNumber = 2, }; // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; int opfamilyname_size() const; private: int _internal_opfamilyname_size() const; public: void clear_opfamilyname(); ::pg_query::Node* mutable_opfamilyname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilyname(); private: const ::pg_query::Node& _internal_opfamilyname(int index) const; ::pg_query::Node* _internal_add_opfamilyname(); public: const ::pg_query::Node& opfamilyname(int index) const; ::pg_query::Node* add_opfamilyname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opfamilyname() const; // string amname = 2 [json_name = "amname"]; void clear_amname(); const std::string& amname() const; void set_amname(const std::string& value); void set_amname(std::string&& value); void set_amname(const char* value); void set_amname(const char* value, size_t size); std::string* mutable_amname(); std::string* release_amname(); void set_allocated_amname(std::string* amname); private: const std::string& _internal_amname() const; void _internal_set_amname(const std::string& value); std::string* _internal_mutable_amname(); public: // @@protoc_insertion_point(class_scope:pg_query.CreateOpFamilyStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilyname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterOpFamilyStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOpFamilyStmt) */ { public: inline AlterOpFamilyStmt() : AlterOpFamilyStmt(nullptr) {} virtual ~AlterOpFamilyStmt(); AlterOpFamilyStmt(const AlterOpFamilyStmt& from); AlterOpFamilyStmt(AlterOpFamilyStmt&& from) noexcept : AlterOpFamilyStmt() { *this = ::std::move(from); } inline AlterOpFamilyStmt& operator=(const AlterOpFamilyStmt& from) { CopyFrom(from); return *this; } inline AlterOpFamilyStmt& operator=(AlterOpFamilyStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterOpFamilyStmt& default_instance(); static inline const AlterOpFamilyStmt* internal_default_instance() { return reinterpret_cast( &_AlterOpFamilyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 125; friend void swap(AlterOpFamilyStmt& a, AlterOpFamilyStmt& b) { a.Swap(&b); } inline void Swap(AlterOpFamilyStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterOpFamilyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterOpFamilyStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterOpFamilyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterOpFamilyStmt& from); void MergeFrom(const AlterOpFamilyStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterOpFamilyStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterOpFamilyStmt"; } protected: explicit AlterOpFamilyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOpfamilynameFieldNumber = 1, kItemsFieldNumber = 4, kAmnameFieldNumber = 2, kIsDropFieldNumber = 3, }; // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; int opfamilyname_size() const; private: int _internal_opfamilyname_size() const; public: void clear_opfamilyname(); ::pg_query::Node* mutable_opfamilyname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opfamilyname(); private: const ::pg_query::Node& _internal_opfamilyname(int index) const; ::pg_query::Node* _internal_add_opfamilyname(); public: const ::pg_query::Node& opfamilyname(int index) const; ::pg_query::Node* add_opfamilyname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opfamilyname() const; // repeated .pg_query.Node items = 4 [json_name = "items"]; int items_size() const; private: int _internal_items_size() const; public: void clear_items(); ::pg_query::Node* mutable_items(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_items(); private: const ::pg_query::Node& _internal_items(int index) const; ::pg_query::Node* _internal_add_items(); public: const ::pg_query::Node& items(int index) const; ::pg_query::Node* add_items(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& items() const; // string amname = 2 [json_name = "amname"]; void clear_amname(); const std::string& amname() const; void set_amname(const std::string& value); void set_amname(std::string&& value); void set_amname(const char* value); void set_amname(const char* value, size_t size); std::string* mutable_amname(); std::string* release_amname(); void set_allocated_amname(std::string* amname); private: const std::string& _internal_amname() const; void _internal_set_amname(const std::string& value); std::string* _internal_mutable_amname(); public: // bool is_drop = 3 [json_name = "isDrop"]; void clear_is_drop(); bool is_drop() const; void set_is_drop(bool value); private: bool _internal_is_drop() const; void _internal_set_is_drop(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterOpFamilyStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opfamilyname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > items_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; bool is_drop_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PrepareStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PrepareStmt) */ { public: inline PrepareStmt() : PrepareStmt(nullptr) {} virtual ~PrepareStmt(); PrepareStmt(const PrepareStmt& from); PrepareStmt(PrepareStmt&& from) noexcept : PrepareStmt() { *this = ::std::move(from); } inline PrepareStmt& operator=(const PrepareStmt& from) { CopyFrom(from); return *this; } inline PrepareStmt& operator=(PrepareStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const PrepareStmt& default_instance(); static inline const PrepareStmt* internal_default_instance() { return reinterpret_cast( &_PrepareStmt_default_instance_); } static constexpr int kIndexInFileMessages = 126; friend void swap(PrepareStmt& a, PrepareStmt& b) { a.Swap(&b); } inline void Swap(PrepareStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PrepareStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline PrepareStmt* New() const final { return CreateMaybeMessage(nullptr); } PrepareStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const PrepareStmt& from); void MergeFrom(const PrepareStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PrepareStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PrepareStmt"; } protected: explicit PrepareStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgtypesFieldNumber = 2, kNameFieldNumber = 1, kQueryFieldNumber = 3, }; // repeated .pg_query.Node argtypes = 2 [json_name = "argtypes"]; int argtypes_size() const; private: int _internal_argtypes_size() const; public: void clear_argtypes(); ::pg_query::Node* mutable_argtypes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_argtypes(); private: const ::pg_query::Node& _internal_argtypes(int index) const; ::pg_query::Node* _internal_add_argtypes(); public: const ::pg_query::Node& argtypes(int index) const; ::pg_query::Node* add_argtypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& argtypes() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.Node query = 3 [json_name = "query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Node& query() const; ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // @@protoc_insertion_point(class_scope:pg_query.PrepareStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > argtypes_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* query_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ExecuteStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ExecuteStmt) */ { public: inline ExecuteStmt() : ExecuteStmt(nullptr) {} virtual ~ExecuteStmt(); ExecuteStmt(const ExecuteStmt& from); ExecuteStmt(ExecuteStmt&& from) noexcept : ExecuteStmt() { *this = ::std::move(from); } inline ExecuteStmt& operator=(const ExecuteStmt& from) { CopyFrom(from); return *this; } inline ExecuteStmt& operator=(ExecuteStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ExecuteStmt& default_instance(); static inline const ExecuteStmt* internal_default_instance() { return reinterpret_cast( &_ExecuteStmt_default_instance_); } static constexpr int kIndexInFileMessages = 127; friend void swap(ExecuteStmt& a, ExecuteStmt& b) { a.Swap(&b); } inline void Swap(ExecuteStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ExecuteStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ExecuteStmt* New() const final { return CreateMaybeMessage(nullptr); } ExecuteStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ExecuteStmt& from); void MergeFrom(const ExecuteStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ExecuteStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ExecuteStmt"; } protected: explicit ExecuteStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kParamsFieldNumber = 2, kNameFieldNumber = 1, }; // repeated .pg_query.Node params = 2 [json_name = "params"]; int params_size() const; private: int _internal_params_size() const; public: void clear_params(); ::pg_query::Node* mutable_params(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_params(); private: const ::pg_query::Node& _internal_params(int index) const; ::pg_query::Node* _internal_add_params(); public: const ::pg_query::Node& params(int index) const; ::pg_query::Node* add_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& params() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // @@protoc_insertion_point(class_scope:pg_query.ExecuteStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > params_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DeallocateStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DeallocateStmt) */ { public: inline DeallocateStmt() : DeallocateStmt(nullptr) {} virtual ~DeallocateStmt(); DeallocateStmt(const DeallocateStmt& from); DeallocateStmt(DeallocateStmt&& from) noexcept : DeallocateStmt() { *this = ::std::move(from); } inline DeallocateStmt& operator=(const DeallocateStmt& from) { CopyFrom(from); return *this; } inline DeallocateStmt& operator=(DeallocateStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DeallocateStmt& default_instance(); static inline const DeallocateStmt* internal_default_instance() { return reinterpret_cast( &_DeallocateStmt_default_instance_); } static constexpr int kIndexInFileMessages = 128; friend void swap(DeallocateStmt& a, DeallocateStmt& b) { a.Swap(&b); } inline void Swap(DeallocateStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DeallocateStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DeallocateStmt* New() const final { return CreateMaybeMessage(nullptr); } DeallocateStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DeallocateStmt& from); void MergeFrom(const DeallocateStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DeallocateStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DeallocateStmt"; } protected: explicit DeallocateStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 1, }; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // @@protoc_insertion_point(class_scope:pg_query.DeallocateStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DeclareCursorStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DeclareCursorStmt) */ { public: inline DeclareCursorStmt() : DeclareCursorStmt(nullptr) {} virtual ~DeclareCursorStmt(); DeclareCursorStmt(const DeclareCursorStmt& from); DeclareCursorStmt(DeclareCursorStmt&& from) noexcept : DeclareCursorStmt() { *this = ::std::move(from); } inline DeclareCursorStmt& operator=(const DeclareCursorStmt& from) { CopyFrom(from); return *this; } inline DeclareCursorStmt& operator=(DeclareCursorStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DeclareCursorStmt& default_instance(); static inline const DeclareCursorStmt* internal_default_instance() { return reinterpret_cast( &_DeclareCursorStmt_default_instance_); } static constexpr int kIndexInFileMessages = 129; friend void swap(DeclareCursorStmt& a, DeclareCursorStmt& b) { a.Swap(&b); } inline void Swap(DeclareCursorStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DeclareCursorStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DeclareCursorStmt* New() const final { return CreateMaybeMessage(nullptr); } DeclareCursorStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DeclareCursorStmt& from); void MergeFrom(const DeclareCursorStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DeclareCursorStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DeclareCursorStmt"; } protected: explicit DeclareCursorStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPortalnameFieldNumber = 1, kQueryFieldNumber = 3, kOptionsFieldNumber = 2, }; // string portalname = 1 [json_name = "portalname"]; void clear_portalname(); const std::string& portalname() const; void set_portalname(const std::string& value); void set_portalname(std::string&& value); void set_portalname(const char* value); void set_portalname(const char* value, size_t size); std::string* mutable_portalname(); std::string* release_portalname(); void set_allocated_portalname(std::string* portalname); private: const std::string& _internal_portalname() const; void _internal_set_portalname(const std::string& value); std::string* _internal_mutable_portalname(); public: // .pg_query.Node query = 3 [json_name = "query"]; bool has_query() const; private: bool _internal_has_query() const; public: void clear_query(); const ::pg_query::Node& query() const; ::pg_query::Node* release_query(); ::pg_query::Node* mutable_query(); void set_allocated_query(::pg_query::Node* query); private: const ::pg_query::Node& _internal_query() const; ::pg_query::Node* _internal_mutable_query(); public: void unsafe_arena_set_allocated_query( ::pg_query::Node* query); ::pg_query::Node* unsafe_arena_release_query(); // int32 options = 2 [json_name = "options"]; void clear_options(); ::PROTOBUF_NAMESPACE_ID::int32 options() const; void set_options(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_options() const; void _internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.DeclareCursorStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr portalname_; ::pg_query::Node* query_; ::PROTOBUF_NAMESPACE_ID::int32 options_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateTableSpaceStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTableSpaceStmt) */ { public: inline CreateTableSpaceStmt() : CreateTableSpaceStmt(nullptr) {} virtual ~CreateTableSpaceStmt(); CreateTableSpaceStmt(const CreateTableSpaceStmt& from); CreateTableSpaceStmt(CreateTableSpaceStmt&& from) noexcept : CreateTableSpaceStmt() { *this = ::std::move(from); } inline CreateTableSpaceStmt& operator=(const CreateTableSpaceStmt& from) { CopyFrom(from); return *this; } inline CreateTableSpaceStmt& operator=(CreateTableSpaceStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateTableSpaceStmt& default_instance(); static inline const CreateTableSpaceStmt* internal_default_instance() { return reinterpret_cast( &_CreateTableSpaceStmt_default_instance_); } static constexpr int kIndexInFileMessages = 130; friend void swap(CreateTableSpaceStmt& a, CreateTableSpaceStmt& b) { a.Swap(&b); } inline void Swap(CreateTableSpaceStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTableSpaceStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateTableSpaceStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateTableSpaceStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateTableSpaceStmt& from); void MergeFrom(const CreateTableSpaceStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateTableSpaceStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateTableSpaceStmt"; } protected: explicit CreateTableSpaceStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 4, kTablespacenameFieldNumber = 1, kLocationFieldNumber = 3, kOwnerFieldNumber = 2, }; // repeated .pg_query.Node options = 4 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string tablespacename = 1 [json_name = "tablespacename"]; void clear_tablespacename(); const std::string& tablespacename() const; void set_tablespacename(const std::string& value); void set_tablespacename(std::string&& value); void set_tablespacename(const char* value); void set_tablespacename(const char* value, size_t size); std::string* mutable_tablespacename(); std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* tablespacename); private: const std::string& _internal_tablespacename() const; void _internal_set_tablespacename(const std::string& value); std::string* _internal_mutable_tablespacename(); public: // string location = 3 [json_name = "location"]; void clear_location(); const std::string& location() const; void set_location(const std::string& value); void set_location(std::string&& value); void set_location(const char* value); void set_location(const char* value, size_t size); std::string* mutable_location(); std::string* release_location(); void set_allocated_location(std::string* location); private: const std::string& _internal_location() const; void _internal_set_location(const std::string& value); std::string* _internal_mutable_location(); public: // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; bool has_owner() const; private: bool _internal_has_owner() const; public: void clear_owner(); const ::pg_query::RoleSpec& owner() const; ::pg_query::RoleSpec* release_owner(); ::pg_query::RoleSpec* mutable_owner(); void set_allocated_owner(::pg_query::RoleSpec* owner); private: const ::pg_query::RoleSpec& _internal_owner() const; ::pg_query::RoleSpec* _internal_mutable_owner(); public: void unsafe_arena_set_allocated_owner( ::pg_query::RoleSpec* owner); ::pg_query::RoleSpec* unsafe_arena_release_owner(); // @@protoc_insertion_point(class_scope:pg_query.CreateTableSpaceStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr location_; ::pg_query::RoleSpec* owner_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropTableSpaceStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropTableSpaceStmt) */ { public: inline DropTableSpaceStmt() : DropTableSpaceStmt(nullptr) {} virtual ~DropTableSpaceStmt(); DropTableSpaceStmt(const DropTableSpaceStmt& from); DropTableSpaceStmt(DropTableSpaceStmt&& from) noexcept : DropTableSpaceStmt() { *this = ::std::move(from); } inline DropTableSpaceStmt& operator=(const DropTableSpaceStmt& from) { CopyFrom(from); return *this; } inline DropTableSpaceStmt& operator=(DropTableSpaceStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DropTableSpaceStmt& default_instance(); static inline const DropTableSpaceStmt* internal_default_instance() { return reinterpret_cast( &_DropTableSpaceStmt_default_instance_); } static constexpr int kIndexInFileMessages = 131; friend void swap(DropTableSpaceStmt& a, DropTableSpaceStmt& b) { a.Swap(&b); } inline void Swap(DropTableSpaceStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropTableSpaceStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DropTableSpaceStmt* New() const final { return CreateMaybeMessage(nullptr); } DropTableSpaceStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DropTableSpaceStmt& from); void MergeFrom(const DropTableSpaceStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropTableSpaceStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropTableSpaceStmt"; } protected: explicit DropTableSpaceStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTablespacenameFieldNumber = 1, kMissingOkFieldNumber = 2, }; // string tablespacename = 1 [json_name = "tablespacename"]; void clear_tablespacename(); const std::string& tablespacename() const; void set_tablespacename(const std::string& value); void set_tablespacename(std::string&& value); void set_tablespacename(const char* value); void set_tablespacename(const char* value, size_t size); std::string* mutable_tablespacename(); std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* tablespacename); private: const std::string& _internal_tablespacename() const; void _internal_set_tablespacename(const std::string& value); std::string* _internal_mutable_tablespacename(); public: // bool missing_ok = 2 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.DropTableSpaceStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterObjectDependsStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterObjectDependsStmt) */ { public: inline AlterObjectDependsStmt() : AlterObjectDependsStmt(nullptr) {} virtual ~AlterObjectDependsStmt(); AlterObjectDependsStmt(const AlterObjectDependsStmt& from); AlterObjectDependsStmt(AlterObjectDependsStmt&& from) noexcept : AlterObjectDependsStmt() { *this = ::std::move(from); } inline AlterObjectDependsStmt& operator=(const AlterObjectDependsStmt& from) { CopyFrom(from); return *this; } inline AlterObjectDependsStmt& operator=(AlterObjectDependsStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterObjectDependsStmt& default_instance(); static inline const AlterObjectDependsStmt* internal_default_instance() { return reinterpret_cast( &_AlterObjectDependsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 132; friend void swap(AlterObjectDependsStmt& a, AlterObjectDependsStmt& b) { a.Swap(&b); } inline void Swap(AlterObjectDependsStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterObjectDependsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterObjectDependsStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterObjectDependsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterObjectDependsStmt& from); void MergeFrom(const AlterObjectDependsStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterObjectDependsStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterObjectDependsStmt"; } protected: explicit AlterObjectDependsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRelationFieldNumber = 2, kObjectFieldNumber = 3, kExtnameFieldNumber = 4, kObjectTypeFieldNumber = 1, kRemoveFieldNumber = 5, }; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node object = 3 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.Node extname = 4 [json_name = "extname"]; bool has_extname() const; private: bool _internal_has_extname() const; public: void clear_extname(); const ::pg_query::Node& extname() const; ::pg_query::Node* release_extname(); ::pg_query::Node* mutable_extname(); void set_allocated_extname(::pg_query::Node* extname); private: const ::pg_query::Node& _internal_extname() const; ::pg_query::Node* _internal_mutable_extname(); public: void unsafe_arena_set_allocated_extname( ::pg_query::Node* extname); ::pg_query::Node* unsafe_arena_release_extname(); // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; void clear_object_type(); ::pg_query::ObjectType object_type() const; void set_object_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_object_type() const; void _internal_set_object_type(::pg_query::ObjectType value); public: // bool remove = 5 [json_name = "remove"]; void clear_remove(); bool remove() const; void set_remove(bool value); private: bool _internal_remove() const; void _internal_set_remove(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterObjectDependsStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; ::pg_query::Node* extname_; int object_type_; bool remove_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterObjectSchemaStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterObjectSchemaStmt) */ { public: inline AlterObjectSchemaStmt() : AlterObjectSchemaStmt(nullptr) {} virtual ~AlterObjectSchemaStmt(); AlterObjectSchemaStmt(const AlterObjectSchemaStmt& from); AlterObjectSchemaStmt(AlterObjectSchemaStmt&& from) noexcept : AlterObjectSchemaStmt() { *this = ::std::move(from); } inline AlterObjectSchemaStmt& operator=(const AlterObjectSchemaStmt& from) { CopyFrom(from); return *this; } inline AlterObjectSchemaStmt& operator=(AlterObjectSchemaStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterObjectSchemaStmt& default_instance(); static inline const AlterObjectSchemaStmt* internal_default_instance() { return reinterpret_cast( &_AlterObjectSchemaStmt_default_instance_); } static constexpr int kIndexInFileMessages = 133; friend void swap(AlterObjectSchemaStmt& a, AlterObjectSchemaStmt& b) { a.Swap(&b); } inline void Swap(AlterObjectSchemaStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterObjectSchemaStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterObjectSchemaStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterObjectSchemaStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterObjectSchemaStmt& from); void MergeFrom(const AlterObjectSchemaStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterObjectSchemaStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterObjectSchemaStmt"; } protected: explicit AlterObjectSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNewschemaFieldNumber = 4, kRelationFieldNumber = 2, kObjectFieldNumber = 3, kObjectTypeFieldNumber = 1, kMissingOkFieldNumber = 5, }; // string newschema = 4 [json_name = "newschema"]; void clear_newschema(); const std::string& newschema() const; void set_newschema(const std::string& value); void set_newschema(std::string&& value); void set_newschema(const char* value); void set_newschema(const char* value, size_t size); std::string* mutable_newschema(); std::string* release_newschema(); void set_allocated_newschema(std::string* newschema); private: const std::string& _internal_newschema() const; void _internal_set_newschema(const std::string& value); std::string* _internal_mutable_newschema(); public: // .pg_query.RangeVar relation = 2 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node object = 3 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; void clear_object_type(); ::pg_query::ObjectType object_type() const; void set_object_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_object_type() const; void _internal_set_object_type(::pg_query::ObjectType value); public: // bool missing_ok = 5 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterObjectSchemaStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr newschema_; ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; int object_type_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterOwnerStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOwnerStmt) */ { public: inline AlterOwnerStmt() : AlterOwnerStmt(nullptr) {} virtual ~AlterOwnerStmt(); AlterOwnerStmt(const AlterOwnerStmt& from); AlterOwnerStmt(AlterOwnerStmt&& from) noexcept : AlterOwnerStmt() { *this = ::std::move(from); } inline AlterOwnerStmt& operator=(const AlterOwnerStmt& from) { CopyFrom(from); return *this; } inline AlterOwnerStmt& operator=(AlterOwnerStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterOwnerStmt& default_instance(); static inline const AlterOwnerStmt* internal_default_instance() { return reinterpret_cast( &_AlterOwnerStmt_default_instance_); } static constexpr int kIndexInFileMessages = 134; friend void swap(AlterOwnerStmt& a, AlterOwnerStmt& b) { a.Swap(&b); } inline void Swap(AlterOwnerStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterOwnerStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterOwnerStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterOwnerStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterOwnerStmt& from); void MergeFrom(const AlterOwnerStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterOwnerStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterOwnerStmt"; } protected: explicit AlterOwnerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRelationFieldNumber = 2, kObjectFieldNumber = 3, kNewownerFieldNumber = 4, kObjectTypeFieldNumber = 1, }; // .pg_query.RangeVar relation = 2 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // .pg_query.Node object = 3 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; bool has_newowner() const; private: bool _internal_has_newowner() const; public: void clear_newowner(); const ::pg_query::RoleSpec& newowner() const; ::pg_query::RoleSpec* release_newowner(); ::pg_query::RoleSpec* mutable_newowner(); void set_allocated_newowner(::pg_query::RoleSpec* newowner); private: const ::pg_query::RoleSpec& _internal_newowner() const; ::pg_query::RoleSpec* _internal_mutable_newowner(); public: void unsafe_arena_set_allocated_newowner( ::pg_query::RoleSpec* newowner); ::pg_query::RoleSpec* unsafe_arena_release_newowner(); // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; void clear_object_type(); ::pg_query::ObjectType object_type() const; void set_object_type(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_object_type() const; void _internal_set_object_type(::pg_query::ObjectType value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterOwnerStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::RangeVar* relation_; ::pg_query::Node* object_; ::pg_query::RoleSpec* newowner_; int object_type_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterOperatorStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterOperatorStmt) */ { public: inline AlterOperatorStmt() : AlterOperatorStmt(nullptr) {} virtual ~AlterOperatorStmt(); AlterOperatorStmt(const AlterOperatorStmt& from); AlterOperatorStmt(AlterOperatorStmt&& from) noexcept : AlterOperatorStmt() { *this = ::std::move(from); } inline AlterOperatorStmt& operator=(const AlterOperatorStmt& from) { CopyFrom(from); return *this; } inline AlterOperatorStmt& operator=(AlterOperatorStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterOperatorStmt& default_instance(); static inline const AlterOperatorStmt* internal_default_instance() { return reinterpret_cast( &_AlterOperatorStmt_default_instance_); } static constexpr int kIndexInFileMessages = 135; friend void swap(AlterOperatorStmt& a, AlterOperatorStmt& b) { a.Swap(&b); } inline void Swap(AlterOperatorStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterOperatorStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterOperatorStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterOperatorStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterOperatorStmt& from); void MergeFrom(const AlterOperatorStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterOperatorStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterOperatorStmt"; } protected: explicit AlterOperatorStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kOpernameFieldNumber = 1, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; bool has_opername() const; private: bool _internal_has_opername() const; public: void clear_opername(); const ::pg_query::ObjectWithArgs& opername() const; ::pg_query::ObjectWithArgs* release_opername(); ::pg_query::ObjectWithArgs* mutable_opername(); void set_allocated_opername(::pg_query::ObjectWithArgs* opername); private: const ::pg_query::ObjectWithArgs& _internal_opername() const; ::pg_query::ObjectWithArgs* _internal_mutable_opername(); public: void unsafe_arena_set_allocated_opername( ::pg_query::ObjectWithArgs* opername); ::pg_query::ObjectWithArgs* unsafe_arena_release_opername(); // @@protoc_insertion_point(class_scope:pg_query.AlterOperatorStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::pg_query::ObjectWithArgs* opername_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTypeStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTypeStmt) */ { public: inline AlterTypeStmt() : AlterTypeStmt(nullptr) {} virtual ~AlterTypeStmt(); AlterTypeStmt(const AlterTypeStmt& from); AlterTypeStmt(AlterTypeStmt&& from) noexcept : AlterTypeStmt() { *this = ::std::move(from); } inline AlterTypeStmt& operator=(const AlterTypeStmt& from) { CopyFrom(from); return *this; } inline AlterTypeStmt& operator=(AlterTypeStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterTypeStmt& default_instance(); static inline const AlterTypeStmt* internal_default_instance() { return reinterpret_cast( &_AlterTypeStmt_default_instance_); } static constexpr int kIndexInFileMessages = 136; friend void swap(AlterTypeStmt& a, AlterTypeStmt& b) { a.Swap(&b); } inline void Swap(AlterTypeStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTypeStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterTypeStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterTypeStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterTypeStmt& from); void MergeFrom(const AlterTypeStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTypeStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTypeStmt"; } protected: explicit AlterTypeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTypeNameFieldNumber = 1, kOptionsFieldNumber = 2, }; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; int type_name_size() const; private: int _internal_type_name_size() const; public: void clear_type_name(); ::pg_query::Node* mutable_type_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::pg_query::Node& _internal_type_name(int index) const; ::pg_query::Node* _internal_add_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& type_name() const; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // @@protoc_insertion_point(class_scope:pg_query.AlterTypeStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropOwnedStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropOwnedStmt) */ { public: inline DropOwnedStmt() : DropOwnedStmt(nullptr) {} virtual ~DropOwnedStmt(); DropOwnedStmt(const DropOwnedStmt& from); DropOwnedStmt(DropOwnedStmt&& from) noexcept : DropOwnedStmt() { *this = ::std::move(from); } inline DropOwnedStmt& operator=(const DropOwnedStmt& from) { CopyFrom(from); return *this; } inline DropOwnedStmt& operator=(DropOwnedStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DropOwnedStmt& default_instance(); static inline const DropOwnedStmt* internal_default_instance() { return reinterpret_cast( &_DropOwnedStmt_default_instance_); } static constexpr int kIndexInFileMessages = 137; friend void swap(DropOwnedStmt& a, DropOwnedStmt& b) { a.Swap(&b); } inline void Swap(DropOwnedStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropOwnedStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DropOwnedStmt* New() const final { return CreateMaybeMessage(nullptr); } DropOwnedStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DropOwnedStmt& from); void MergeFrom(const DropOwnedStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropOwnedStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropOwnedStmt"; } protected: explicit DropOwnedStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRolesFieldNumber = 1, kBehaviorFieldNumber = 2, }; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; int roles_size() const; private: int _internal_roles_size() const; public: void clear_roles(); ::pg_query::Node* mutable_roles(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // @@protoc_insertion_point(class_scope:pg_query.DropOwnedStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; int behavior_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ReassignOwnedStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ReassignOwnedStmt) */ { public: inline ReassignOwnedStmt() : ReassignOwnedStmt(nullptr) {} virtual ~ReassignOwnedStmt(); ReassignOwnedStmt(const ReassignOwnedStmt& from); ReassignOwnedStmt(ReassignOwnedStmt&& from) noexcept : ReassignOwnedStmt() { *this = ::std::move(from); } inline ReassignOwnedStmt& operator=(const ReassignOwnedStmt& from) { CopyFrom(from); return *this; } inline ReassignOwnedStmt& operator=(ReassignOwnedStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ReassignOwnedStmt& default_instance(); static inline const ReassignOwnedStmt* internal_default_instance() { return reinterpret_cast( &_ReassignOwnedStmt_default_instance_); } static constexpr int kIndexInFileMessages = 138; friend void swap(ReassignOwnedStmt& a, ReassignOwnedStmt& b) { a.Swap(&b); } inline void Swap(ReassignOwnedStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReassignOwnedStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ReassignOwnedStmt* New() const final { return CreateMaybeMessage(nullptr); } ReassignOwnedStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ReassignOwnedStmt& from); void MergeFrom(const ReassignOwnedStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ReassignOwnedStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ReassignOwnedStmt"; } protected: explicit ReassignOwnedStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRolesFieldNumber = 1, kNewroleFieldNumber = 2, }; // repeated .pg_query.Node roles = 1 [json_name = "roles"]; int roles_size() const; private: int _internal_roles_size() const; public: void clear_roles(); ::pg_query::Node* mutable_roles(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; bool has_newrole() const; private: bool _internal_has_newrole() const; public: void clear_newrole(); const ::pg_query::RoleSpec& newrole() const; ::pg_query::RoleSpec* release_newrole(); ::pg_query::RoleSpec* mutable_newrole(); void set_allocated_newrole(::pg_query::RoleSpec* newrole); private: const ::pg_query::RoleSpec& _internal_newrole() const; ::pg_query::RoleSpec* _internal_mutable_newrole(); public: void unsafe_arena_set_allocated_newrole( ::pg_query::RoleSpec* newrole); ::pg_query::RoleSpec* unsafe_arena_release_newrole(); // @@protoc_insertion_point(class_scope:pg_query.ReassignOwnedStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; ::pg_query::RoleSpec* newrole_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CompositeTypeStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CompositeTypeStmt) */ { public: inline CompositeTypeStmt() : CompositeTypeStmt(nullptr) {} virtual ~CompositeTypeStmt(); CompositeTypeStmt(const CompositeTypeStmt& from); CompositeTypeStmt(CompositeTypeStmt&& from) noexcept : CompositeTypeStmt() { *this = ::std::move(from); } inline CompositeTypeStmt& operator=(const CompositeTypeStmt& from) { CopyFrom(from); return *this; } inline CompositeTypeStmt& operator=(CompositeTypeStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CompositeTypeStmt& default_instance(); static inline const CompositeTypeStmt* internal_default_instance() { return reinterpret_cast( &_CompositeTypeStmt_default_instance_); } static constexpr int kIndexInFileMessages = 139; friend void swap(CompositeTypeStmt& a, CompositeTypeStmt& b) { a.Swap(&b); } inline void Swap(CompositeTypeStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CompositeTypeStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CompositeTypeStmt* New() const final { return CreateMaybeMessage(nullptr); } CompositeTypeStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CompositeTypeStmt& from); void MergeFrom(const CompositeTypeStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CompositeTypeStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CompositeTypeStmt"; } protected: explicit CompositeTypeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kColdeflistFieldNumber = 2, kTypevarFieldNumber = 1, }; // repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; int coldeflist_size() const; private: int _internal_coldeflist_size() const; public: void clear_coldeflist(); ::pg_query::Node* mutable_coldeflist(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coldeflist(); private: const ::pg_query::Node& _internal_coldeflist(int index) const; ::pg_query::Node* _internal_add_coldeflist(); public: const ::pg_query::Node& coldeflist(int index) const; ::pg_query::Node* add_coldeflist(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coldeflist() const; // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; bool has_typevar() const; private: bool _internal_has_typevar() const; public: void clear_typevar(); const ::pg_query::RangeVar& typevar() const; ::pg_query::RangeVar* release_typevar(); ::pg_query::RangeVar* mutable_typevar(); void set_allocated_typevar(::pg_query::RangeVar* typevar); private: const ::pg_query::RangeVar& _internal_typevar() const; ::pg_query::RangeVar* _internal_mutable_typevar(); public: void unsafe_arena_set_allocated_typevar( ::pg_query::RangeVar* typevar); ::pg_query::RangeVar* unsafe_arena_release_typevar(); // @@protoc_insertion_point(class_scope:pg_query.CompositeTypeStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coldeflist_; ::pg_query::RangeVar* typevar_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateEnumStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateEnumStmt) */ { public: inline CreateEnumStmt() : CreateEnumStmt(nullptr) {} virtual ~CreateEnumStmt(); CreateEnumStmt(const CreateEnumStmt& from); CreateEnumStmt(CreateEnumStmt&& from) noexcept : CreateEnumStmt() { *this = ::std::move(from); } inline CreateEnumStmt& operator=(const CreateEnumStmt& from) { CopyFrom(from); return *this; } inline CreateEnumStmt& operator=(CreateEnumStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateEnumStmt& default_instance(); static inline const CreateEnumStmt* internal_default_instance() { return reinterpret_cast( &_CreateEnumStmt_default_instance_); } static constexpr int kIndexInFileMessages = 140; friend void swap(CreateEnumStmt& a, CreateEnumStmt& b) { a.Swap(&b); } inline void Swap(CreateEnumStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateEnumStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateEnumStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateEnumStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateEnumStmt& from); void MergeFrom(const CreateEnumStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateEnumStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateEnumStmt"; } protected: explicit CreateEnumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTypeNameFieldNumber = 1, kValsFieldNumber = 2, }; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; int type_name_size() const; private: int _internal_type_name_size() const; public: void clear_type_name(); ::pg_query::Node* mutable_type_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::pg_query::Node& _internal_type_name(int index) const; ::pg_query::Node* _internal_add_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& type_name() const; // repeated .pg_query.Node vals = 2 [json_name = "vals"]; int vals_size() const; private: int _internal_vals_size() const; public: void clear_vals(); ::pg_query::Node* mutable_vals(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_vals(); private: const ::pg_query::Node& _internal_vals(int index) const; ::pg_query::Node* _internal_add_vals(); public: const ::pg_query::Node& vals(int index) const; ::pg_query::Node* add_vals(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& vals() const; // @@protoc_insertion_point(class_scope:pg_query.CreateEnumStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > vals_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateRangeStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateRangeStmt) */ { public: inline CreateRangeStmt() : CreateRangeStmt(nullptr) {} virtual ~CreateRangeStmt(); CreateRangeStmt(const CreateRangeStmt& from); CreateRangeStmt(CreateRangeStmt&& from) noexcept : CreateRangeStmt() { *this = ::std::move(from); } inline CreateRangeStmt& operator=(const CreateRangeStmt& from) { CopyFrom(from); return *this; } inline CreateRangeStmt& operator=(CreateRangeStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateRangeStmt& default_instance(); static inline const CreateRangeStmt* internal_default_instance() { return reinterpret_cast( &_CreateRangeStmt_default_instance_); } static constexpr int kIndexInFileMessages = 141; friend void swap(CreateRangeStmt& a, CreateRangeStmt& b) { a.Swap(&b); } inline void Swap(CreateRangeStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateRangeStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateRangeStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateRangeStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateRangeStmt& from); void MergeFrom(const CreateRangeStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateRangeStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateRangeStmt"; } protected: explicit CreateRangeStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTypeNameFieldNumber = 1, kParamsFieldNumber = 2, }; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; int type_name_size() const; private: int _internal_type_name_size() const; public: void clear_type_name(); ::pg_query::Node* mutable_type_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::pg_query::Node& _internal_type_name(int index) const; ::pg_query::Node* _internal_add_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& type_name() const; // repeated .pg_query.Node params = 2 [json_name = "params"]; int params_size() const; private: int _internal_params_size() const; public: void clear_params(); ::pg_query::Node* mutable_params(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_params(); private: const ::pg_query::Node& _internal_params(int index) const; ::pg_query::Node* _internal_add_params(); public: const ::pg_query::Node& params(int index) const; ::pg_query::Node* add_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& params() const; // @@protoc_insertion_point(class_scope:pg_query.CreateRangeStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > params_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterEnumStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterEnumStmt) */ { public: inline AlterEnumStmt() : AlterEnumStmt(nullptr) {} virtual ~AlterEnumStmt(); AlterEnumStmt(const AlterEnumStmt& from); AlterEnumStmt(AlterEnumStmt&& from) noexcept : AlterEnumStmt() { *this = ::std::move(from); } inline AlterEnumStmt& operator=(const AlterEnumStmt& from) { CopyFrom(from); return *this; } inline AlterEnumStmt& operator=(AlterEnumStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterEnumStmt& default_instance(); static inline const AlterEnumStmt* internal_default_instance() { return reinterpret_cast( &_AlterEnumStmt_default_instance_); } static constexpr int kIndexInFileMessages = 142; friend void swap(AlterEnumStmt& a, AlterEnumStmt& b) { a.Swap(&b); } inline void Swap(AlterEnumStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterEnumStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterEnumStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterEnumStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterEnumStmt& from); void MergeFrom(const AlterEnumStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterEnumStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterEnumStmt"; } protected: explicit AlterEnumStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTypeNameFieldNumber = 1, kOldValFieldNumber = 2, kNewValFieldNumber = 3, kNewValNeighborFieldNumber = 4, kNewValIsAfterFieldNumber = 5, kSkipIfNewValExistsFieldNumber = 6, }; // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; int type_name_size() const; private: int _internal_type_name_size() const; public: void clear_type_name(); ::pg_query::Node* mutable_type_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_type_name(); private: const ::pg_query::Node& _internal_type_name(int index) const; ::pg_query::Node* _internal_add_type_name(); public: const ::pg_query::Node& type_name(int index) const; ::pg_query::Node* add_type_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& type_name() const; // string old_val = 2 [json_name = "oldVal"]; void clear_old_val(); const std::string& old_val() const; void set_old_val(const std::string& value); void set_old_val(std::string&& value); void set_old_val(const char* value); void set_old_val(const char* value, size_t size); std::string* mutable_old_val(); std::string* release_old_val(); void set_allocated_old_val(std::string* old_val); private: const std::string& _internal_old_val() const; void _internal_set_old_val(const std::string& value); std::string* _internal_mutable_old_val(); public: // string new_val = 3 [json_name = "newVal"]; void clear_new_val(); const std::string& new_val() const; void set_new_val(const std::string& value); void set_new_val(std::string&& value); void set_new_val(const char* value); void set_new_val(const char* value, size_t size); std::string* mutable_new_val(); std::string* release_new_val(); void set_allocated_new_val(std::string* new_val); private: const std::string& _internal_new_val() const; void _internal_set_new_val(const std::string& value); std::string* _internal_mutable_new_val(); public: // string new_val_neighbor = 4 [json_name = "newValNeighbor"]; void clear_new_val_neighbor(); const std::string& new_val_neighbor() const; void set_new_val_neighbor(const std::string& value); void set_new_val_neighbor(std::string&& value); void set_new_val_neighbor(const char* value); void set_new_val_neighbor(const char* value, size_t size); std::string* mutable_new_val_neighbor(); std::string* release_new_val_neighbor(); void set_allocated_new_val_neighbor(std::string* new_val_neighbor); private: const std::string& _internal_new_val_neighbor() const; void _internal_set_new_val_neighbor(const std::string& value); std::string* _internal_mutable_new_val_neighbor(); public: // bool new_val_is_after = 5 [json_name = "newValIsAfter"]; void clear_new_val_is_after(); bool new_val_is_after() const; void set_new_val_is_after(bool value); private: bool _internal_new_val_is_after() const; void _internal_set_new_val_is_after(bool value); public: // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; void clear_skip_if_new_val_exists(); bool skip_if_new_val_exists() const; void set_skip_if_new_val_exists(bool value); private: bool _internal_skip_if_new_val_exists() const; void _internal_set_skip_if_new_val_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterEnumStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > type_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr old_val_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr new_val_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr new_val_neighbor_; bool new_val_is_after_; bool skip_if_new_val_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTSDictionaryStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTSDictionaryStmt) */ { public: inline AlterTSDictionaryStmt() : AlterTSDictionaryStmt(nullptr) {} virtual ~AlterTSDictionaryStmt(); AlterTSDictionaryStmt(const AlterTSDictionaryStmt& from); AlterTSDictionaryStmt(AlterTSDictionaryStmt&& from) noexcept : AlterTSDictionaryStmt() { *this = ::std::move(from); } inline AlterTSDictionaryStmt& operator=(const AlterTSDictionaryStmt& from) { CopyFrom(from); return *this; } inline AlterTSDictionaryStmt& operator=(AlterTSDictionaryStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterTSDictionaryStmt& default_instance(); static inline const AlterTSDictionaryStmt* internal_default_instance() { return reinterpret_cast( &_AlterTSDictionaryStmt_default_instance_); } static constexpr int kIndexInFileMessages = 143; friend void swap(AlterTSDictionaryStmt& a, AlterTSDictionaryStmt& b) { a.Swap(&b); } inline void Swap(AlterTSDictionaryStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTSDictionaryStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterTSDictionaryStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterTSDictionaryStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterTSDictionaryStmt& from); void MergeFrom(const AlterTSDictionaryStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTSDictionaryStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTSDictionaryStmt"; } protected: explicit AlterTSDictionaryStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDictnameFieldNumber = 1, kOptionsFieldNumber = 2, }; // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; int dictname_size() const; private: int _internal_dictname_size() const; public: void clear_dictname(); ::pg_query::Node* mutable_dictname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_dictname(); private: const ::pg_query::Node& _internal_dictname(int index) const; ::pg_query::Node* _internal_add_dictname(); public: const ::pg_query::Node& dictname(int index) const; ::pg_query::Node* add_dictname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& dictname() const; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // @@protoc_insertion_point(class_scope:pg_query.AlterTSDictionaryStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > dictname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTSConfigurationStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTSConfigurationStmt) */ { public: inline AlterTSConfigurationStmt() : AlterTSConfigurationStmt(nullptr) {} virtual ~AlterTSConfigurationStmt(); AlterTSConfigurationStmt(const AlterTSConfigurationStmt& from); AlterTSConfigurationStmt(AlterTSConfigurationStmt&& from) noexcept : AlterTSConfigurationStmt() { *this = ::std::move(from); } inline AlterTSConfigurationStmt& operator=(const AlterTSConfigurationStmt& from) { CopyFrom(from); return *this; } inline AlterTSConfigurationStmt& operator=(AlterTSConfigurationStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterTSConfigurationStmt& default_instance(); static inline const AlterTSConfigurationStmt* internal_default_instance() { return reinterpret_cast( &_AlterTSConfigurationStmt_default_instance_); } static constexpr int kIndexInFileMessages = 144; friend void swap(AlterTSConfigurationStmt& a, AlterTSConfigurationStmt& b) { a.Swap(&b); } inline void Swap(AlterTSConfigurationStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTSConfigurationStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterTSConfigurationStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterTSConfigurationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterTSConfigurationStmt& from); void MergeFrom(const AlterTSConfigurationStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTSConfigurationStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTSConfigurationStmt"; } protected: explicit AlterTSConfigurationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCfgnameFieldNumber = 2, kTokentypeFieldNumber = 3, kDictsFieldNumber = 4, kKindFieldNumber = 1, kOverrideFieldNumber = 5, kReplaceFieldNumber = 6, kMissingOkFieldNumber = 7, }; // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; int cfgname_size() const; private: int _internal_cfgname_size() const; public: void clear_cfgname(); ::pg_query::Node* mutable_cfgname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cfgname(); private: const ::pg_query::Node& _internal_cfgname(int index) const; ::pg_query::Node* _internal_add_cfgname(); public: const ::pg_query::Node& cfgname(int index) const; ::pg_query::Node* add_cfgname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cfgname() const; // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; int tokentype_size() const; private: int _internal_tokentype_size() const; public: void clear_tokentype(); ::pg_query::Node* mutable_tokentype(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_tokentype(); private: const ::pg_query::Node& _internal_tokentype(int index) const; ::pg_query::Node* _internal_add_tokentype(); public: const ::pg_query::Node& tokentype(int index) const; ::pg_query::Node* add_tokentype(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& tokentype() const; // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; int dicts_size() const; private: int _internal_dicts_size() const; public: void clear_dicts(); ::pg_query::Node* mutable_dicts(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_dicts(); private: const ::pg_query::Node& _internal_dicts(int index) const; ::pg_query::Node* _internal_add_dicts(); public: const ::pg_query::Node& dicts(int index) const; ::pg_query::Node* add_dicts(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& dicts() const; // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::AlterTSConfigType kind() const; void set_kind(::pg_query::AlterTSConfigType value); private: ::pg_query::AlterTSConfigType _internal_kind() const; void _internal_set_kind(::pg_query::AlterTSConfigType value); public: // bool override = 5 [json_name = "override"]; void clear_override(); bool override() const; void set_override(bool value); private: bool _internal_override() const; void _internal_set_override(bool value); public: // bool replace = 6 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // bool missing_ok = 7 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterTSConfigurationStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cfgname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > tokentype_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > dicts_; int kind_; bool override_; bool replace_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateFdwStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateFdwStmt) */ { public: inline CreateFdwStmt() : CreateFdwStmt(nullptr) {} virtual ~CreateFdwStmt(); CreateFdwStmt(const CreateFdwStmt& from); CreateFdwStmt(CreateFdwStmt&& from) noexcept : CreateFdwStmt() { *this = ::std::move(from); } inline CreateFdwStmt& operator=(const CreateFdwStmt& from) { CopyFrom(from); return *this; } inline CreateFdwStmt& operator=(CreateFdwStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateFdwStmt& default_instance(); static inline const CreateFdwStmt* internal_default_instance() { return reinterpret_cast( &_CreateFdwStmt_default_instance_); } static constexpr int kIndexInFileMessages = 145; friend void swap(CreateFdwStmt& a, CreateFdwStmt& b) { a.Swap(&b); } inline void Swap(CreateFdwStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateFdwStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateFdwStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateFdwStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateFdwStmt& from); void MergeFrom(const CreateFdwStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateFdwStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateFdwStmt"; } protected: explicit CreateFdwStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFuncOptionsFieldNumber = 2, kOptionsFieldNumber = 3, kFdwnameFieldNumber = 1, }; // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; int func_options_size() const; private: int _internal_func_options_size() const; public: void clear_func_options(); ::pg_query::Node* mutable_func_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_func_options(); private: const ::pg_query::Node& _internal_func_options(int index) const; ::pg_query::Node* _internal_add_func_options(); public: const ::pg_query::Node& func_options(int index) const; ::pg_query::Node* add_func_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& func_options() const; // repeated .pg_query.Node options = 3 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string fdwname = 1 [json_name = "fdwname"]; void clear_fdwname(); const std::string& fdwname() const; void set_fdwname(const std::string& value); void set_fdwname(std::string&& value); void set_fdwname(const char* value); void set_fdwname(const char* value, size_t size); std::string* mutable_fdwname(); std::string* release_fdwname(); void set_allocated_fdwname(std::string* fdwname); private: const std::string& _internal_fdwname() const; void _internal_set_fdwname(const std::string& value); std::string* _internal_mutable_fdwname(); public: // @@protoc_insertion_point(class_scope:pg_query.CreateFdwStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > func_options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fdwname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterFdwStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterFdwStmt) */ { public: inline AlterFdwStmt() : AlterFdwStmt(nullptr) {} virtual ~AlterFdwStmt(); AlterFdwStmt(const AlterFdwStmt& from); AlterFdwStmt(AlterFdwStmt&& from) noexcept : AlterFdwStmt() { *this = ::std::move(from); } inline AlterFdwStmt& operator=(const AlterFdwStmt& from) { CopyFrom(from); return *this; } inline AlterFdwStmt& operator=(AlterFdwStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterFdwStmt& default_instance(); static inline const AlterFdwStmt* internal_default_instance() { return reinterpret_cast( &_AlterFdwStmt_default_instance_); } static constexpr int kIndexInFileMessages = 146; friend void swap(AlterFdwStmt& a, AlterFdwStmt& b) { a.Swap(&b); } inline void Swap(AlterFdwStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterFdwStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterFdwStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterFdwStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterFdwStmt& from); void MergeFrom(const AlterFdwStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterFdwStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterFdwStmt"; } protected: explicit AlterFdwStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFuncOptionsFieldNumber = 2, kOptionsFieldNumber = 3, kFdwnameFieldNumber = 1, }; // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; int func_options_size() const; private: int _internal_func_options_size() const; public: void clear_func_options(); ::pg_query::Node* mutable_func_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_func_options(); private: const ::pg_query::Node& _internal_func_options(int index) const; ::pg_query::Node* _internal_add_func_options(); public: const ::pg_query::Node& func_options(int index) const; ::pg_query::Node* add_func_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& func_options() const; // repeated .pg_query.Node options = 3 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string fdwname = 1 [json_name = "fdwname"]; void clear_fdwname(); const std::string& fdwname() const; void set_fdwname(const std::string& value); void set_fdwname(std::string&& value); void set_fdwname(const char* value); void set_fdwname(const char* value, size_t size); std::string* mutable_fdwname(); std::string* release_fdwname(); void set_allocated_fdwname(std::string* fdwname); private: const std::string& _internal_fdwname() const; void _internal_set_fdwname(const std::string& value); std::string* _internal_mutable_fdwname(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterFdwStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > func_options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fdwname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateForeignServerStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateForeignServerStmt) */ { public: inline CreateForeignServerStmt() : CreateForeignServerStmt(nullptr) {} virtual ~CreateForeignServerStmt(); CreateForeignServerStmt(const CreateForeignServerStmt& from); CreateForeignServerStmt(CreateForeignServerStmt&& from) noexcept : CreateForeignServerStmt() { *this = ::std::move(from); } inline CreateForeignServerStmt& operator=(const CreateForeignServerStmt& from) { CopyFrom(from); return *this; } inline CreateForeignServerStmt& operator=(CreateForeignServerStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateForeignServerStmt& default_instance(); static inline const CreateForeignServerStmt* internal_default_instance() { return reinterpret_cast( &_CreateForeignServerStmt_default_instance_); } static constexpr int kIndexInFileMessages = 147; friend void swap(CreateForeignServerStmt& a, CreateForeignServerStmt& b) { a.Swap(&b); } inline void Swap(CreateForeignServerStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateForeignServerStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateForeignServerStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateForeignServerStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateForeignServerStmt& from); void MergeFrom(const CreateForeignServerStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateForeignServerStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateForeignServerStmt"; } protected: explicit CreateForeignServerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 6, kServernameFieldNumber = 1, kServertypeFieldNumber = 2, kVersionFieldNumber = 3, kFdwnameFieldNumber = 4, kIfNotExistsFieldNumber = 5, }; // repeated .pg_query.Node options = 6 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 1 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; void set_servername(const std::string& value); void set_servername(std::string&& value); void set_servername(const char* value); void set_servername(const char* value, size_t size); std::string* mutable_servername(); std::string* release_servername(); void set_allocated_servername(std::string* servername); private: const std::string& _internal_servername() const; void _internal_set_servername(const std::string& value); std::string* _internal_mutable_servername(); public: // string servertype = 2 [json_name = "servertype"]; void clear_servertype(); const std::string& servertype() const; void set_servertype(const std::string& value); void set_servertype(std::string&& value); void set_servertype(const char* value); void set_servertype(const char* value, size_t size); std::string* mutable_servertype(); std::string* release_servertype(); void set_allocated_servertype(std::string* servertype); private: const std::string& _internal_servertype() const; void _internal_set_servertype(const std::string& value); std::string* _internal_mutable_servertype(); public: // string version = 3 [json_name = "version"]; void clear_version(); const std::string& version() const; void set_version(const std::string& value); void set_version(std::string&& value); void set_version(const char* value); void set_version(const char* value, size_t size); std::string* mutable_version(); std::string* release_version(); void set_allocated_version(std::string* version); private: const std::string& _internal_version() const; void _internal_set_version(const std::string& value); std::string* _internal_mutable_version(); public: // string fdwname = 4 [json_name = "fdwname"]; void clear_fdwname(); const std::string& fdwname() const; void set_fdwname(const std::string& value); void set_fdwname(std::string&& value); void set_fdwname(const char* value); void set_fdwname(const char* value, size_t size); std::string* mutable_fdwname(); std::string* release_fdwname(); void set_allocated_fdwname(std::string* fdwname); private: const std::string& _internal_fdwname() const; void _internal_set_fdwname(const std::string& value); std::string* _internal_mutable_fdwname(); public: // bool if_not_exists = 5 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateForeignServerStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servertype_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr version_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fdwname_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterForeignServerStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterForeignServerStmt) */ { public: inline AlterForeignServerStmt() : AlterForeignServerStmt(nullptr) {} virtual ~AlterForeignServerStmt(); AlterForeignServerStmt(const AlterForeignServerStmt& from); AlterForeignServerStmt(AlterForeignServerStmt&& from) noexcept : AlterForeignServerStmt() { *this = ::std::move(from); } inline AlterForeignServerStmt& operator=(const AlterForeignServerStmt& from) { CopyFrom(from); return *this; } inline AlterForeignServerStmt& operator=(AlterForeignServerStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterForeignServerStmt& default_instance(); static inline const AlterForeignServerStmt* internal_default_instance() { return reinterpret_cast( &_AlterForeignServerStmt_default_instance_); } static constexpr int kIndexInFileMessages = 148; friend void swap(AlterForeignServerStmt& a, AlterForeignServerStmt& b) { a.Swap(&b); } inline void Swap(AlterForeignServerStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterForeignServerStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterForeignServerStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterForeignServerStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterForeignServerStmt& from); void MergeFrom(const AlterForeignServerStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterForeignServerStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterForeignServerStmt"; } protected: explicit AlterForeignServerStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 3, kServernameFieldNumber = 1, kVersionFieldNumber = 2, kHasVersionFieldNumber = 4, }; // repeated .pg_query.Node options = 3 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 1 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; void set_servername(const std::string& value); void set_servername(std::string&& value); void set_servername(const char* value); void set_servername(const char* value, size_t size); std::string* mutable_servername(); std::string* release_servername(); void set_allocated_servername(std::string* servername); private: const std::string& _internal_servername() const; void _internal_set_servername(const std::string& value); std::string* _internal_mutable_servername(); public: // string version = 2 [json_name = "version"]; void clear_version(); const std::string& version() const; void set_version(const std::string& value); void set_version(std::string&& value); void set_version(const char* value); void set_version(const char* value, size_t size); std::string* mutable_version(); std::string* release_version(); void set_allocated_version(std::string* version); private: const std::string& _internal_version() const; void _internal_set_version(const std::string& value); std::string* _internal_mutable_version(); public: // bool has_version = 4 [json_name = "has_version"]; void clear_has_version(); bool has_version() const; void set_has_version(bool value); private: bool _internal_has_version() const; void _internal_set_has_version(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterForeignServerStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr version_; bool has_version_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateUserMappingStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateUserMappingStmt) */ { public: inline CreateUserMappingStmt() : CreateUserMappingStmt(nullptr) {} virtual ~CreateUserMappingStmt(); CreateUserMappingStmt(const CreateUserMappingStmt& from); CreateUserMappingStmt(CreateUserMappingStmt&& from) noexcept : CreateUserMappingStmt() { *this = ::std::move(from); } inline CreateUserMappingStmt& operator=(const CreateUserMappingStmt& from) { CopyFrom(from); return *this; } inline CreateUserMappingStmt& operator=(CreateUserMappingStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateUserMappingStmt& default_instance(); static inline const CreateUserMappingStmt* internal_default_instance() { return reinterpret_cast( &_CreateUserMappingStmt_default_instance_); } static constexpr int kIndexInFileMessages = 149; friend void swap(CreateUserMappingStmt& a, CreateUserMappingStmt& b) { a.Swap(&b); } inline void Swap(CreateUserMappingStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateUserMappingStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateUserMappingStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateUserMappingStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateUserMappingStmt& from); void MergeFrom(const CreateUserMappingStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateUserMappingStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateUserMappingStmt"; } protected: explicit CreateUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 4, kServernameFieldNumber = 2, kUserFieldNumber = 1, kIfNotExistsFieldNumber = 3, }; // repeated .pg_query.Node options = 4 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 2 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; void set_servername(const std::string& value); void set_servername(std::string&& value); void set_servername(const char* value); void set_servername(const char* value, size_t size); std::string* mutable_servername(); std::string* release_servername(); void set_allocated_servername(std::string* servername); private: const std::string& _internal_servername() const; void _internal_set_servername(const std::string& value); std::string* _internal_mutable_servername(); public: // .pg_query.RoleSpec user = 1 [json_name = "user"]; bool has_user() const; private: bool _internal_has_user() const; public: void clear_user(); const ::pg_query::RoleSpec& user() const; ::pg_query::RoleSpec* release_user(); ::pg_query::RoleSpec* mutable_user(); void set_allocated_user(::pg_query::RoleSpec* user); private: const ::pg_query::RoleSpec& _internal_user() const; ::pg_query::RoleSpec* _internal_mutable_user(); public: void unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user); ::pg_query::RoleSpec* unsafe_arena_release_user(); // bool if_not_exists = 3 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateUserMappingStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::pg_query::RoleSpec* user_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterUserMappingStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterUserMappingStmt) */ { public: inline AlterUserMappingStmt() : AlterUserMappingStmt(nullptr) {} virtual ~AlterUserMappingStmt(); AlterUserMappingStmt(const AlterUserMappingStmt& from); AlterUserMappingStmt(AlterUserMappingStmt&& from) noexcept : AlterUserMappingStmt() { *this = ::std::move(from); } inline AlterUserMappingStmt& operator=(const AlterUserMappingStmt& from) { CopyFrom(from); return *this; } inline AlterUserMappingStmt& operator=(AlterUserMappingStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterUserMappingStmt& default_instance(); static inline const AlterUserMappingStmt* internal_default_instance() { return reinterpret_cast( &_AlterUserMappingStmt_default_instance_); } static constexpr int kIndexInFileMessages = 150; friend void swap(AlterUserMappingStmt& a, AlterUserMappingStmt& b) { a.Swap(&b); } inline void Swap(AlterUserMappingStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterUserMappingStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterUserMappingStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterUserMappingStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterUserMappingStmt& from); void MergeFrom(const AlterUserMappingStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterUserMappingStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterUserMappingStmt"; } protected: explicit AlterUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 3, kServernameFieldNumber = 2, kUserFieldNumber = 1, }; // repeated .pg_query.Node options = 3 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 2 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; void set_servername(const std::string& value); void set_servername(std::string&& value); void set_servername(const char* value); void set_servername(const char* value, size_t size); std::string* mutable_servername(); std::string* release_servername(); void set_allocated_servername(std::string* servername); private: const std::string& _internal_servername() const; void _internal_set_servername(const std::string& value); std::string* _internal_mutable_servername(); public: // .pg_query.RoleSpec user = 1 [json_name = "user"]; bool has_user() const; private: bool _internal_has_user() const; public: void clear_user(); const ::pg_query::RoleSpec& user() const; ::pg_query::RoleSpec* release_user(); ::pg_query::RoleSpec* mutable_user(); void set_allocated_user(::pg_query::RoleSpec* user); private: const ::pg_query::RoleSpec& _internal_user() const; ::pg_query::RoleSpec* _internal_mutable_user(); public: void unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user); ::pg_query::RoleSpec* unsafe_arena_release_user(); // @@protoc_insertion_point(class_scope:pg_query.AlterUserMappingStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::pg_query::RoleSpec* user_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropUserMappingStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropUserMappingStmt) */ { public: inline DropUserMappingStmt() : DropUserMappingStmt(nullptr) {} virtual ~DropUserMappingStmt(); DropUserMappingStmt(const DropUserMappingStmt& from); DropUserMappingStmt(DropUserMappingStmt&& from) noexcept : DropUserMappingStmt() { *this = ::std::move(from); } inline DropUserMappingStmt& operator=(const DropUserMappingStmt& from) { CopyFrom(from); return *this; } inline DropUserMappingStmt& operator=(DropUserMappingStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DropUserMappingStmt& default_instance(); static inline const DropUserMappingStmt* internal_default_instance() { return reinterpret_cast( &_DropUserMappingStmt_default_instance_); } static constexpr int kIndexInFileMessages = 151; friend void swap(DropUserMappingStmt& a, DropUserMappingStmt& b) { a.Swap(&b); } inline void Swap(DropUserMappingStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropUserMappingStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DropUserMappingStmt* New() const final { return CreateMaybeMessage(nullptr); } DropUserMappingStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DropUserMappingStmt& from); void MergeFrom(const DropUserMappingStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropUserMappingStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropUserMappingStmt"; } protected: explicit DropUserMappingStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kServernameFieldNumber = 2, kUserFieldNumber = 1, kMissingOkFieldNumber = 3, }; // string servername = 2 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; void set_servername(const std::string& value); void set_servername(std::string&& value); void set_servername(const char* value); void set_servername(const char* value, size_t size); std::string* mutable_servername(); std::string* release_servername(); void set_allocated_servername(std::string* servername); private: const std::string& _internal_servername() const; void _internal_set_servername(const std::string& value); std::string* _internal_mutable_servername(); public: // .pg_query.RoleSpec user = 1 [json_name = "user"]; bool has_user() const; private: bool _internal_has_user() const; public: void clear_user(); const ::pg_query::RoleSpec& user() const; ::pg_query::RoleSpec* release_user(); ::pg_query::RoleSpec* mutable_user(); void set_allocated_user(::pg_query::RoleSpec* user); private: const ::pg_query::RoleSpec& _internal_user() const; ::pg_query::RoleSpec* _internal_mutable_user(); public: void unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user); ::pg_query::RoleSpec* unsafe_arena_release_user(); // bool missing_ok = 3 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.DropUserMappingStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::pg_query::RoleSpec* user_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTableSpaceOptionsStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableSpaceOptionsStmt) */ { public: inline AlterTableSpaceOptionsStmt() : AlterTableSpaceOptionsStmt(nullptr) {} virtual ~AlterTableSpaceOptionsStmt(); AlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt& from); AlterTableSpaceOptionsStmt(AlterTableSpaceOptionsStmt&& from) noexcept : AlterTableSpaceOptionsStmt() { *this = ::std::move(from); } inline AlterTableSpaceOptionsStmt& operator=(const AlterTableSpaceOptionsStmt& from) { CopyFrom(from); return *this; } inline AlterTableSpaceOptionsStmt& operator=(AlterTableSpaceOptionsStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterTableSpaceOptionsStmt& default_instance(); static inline const AlterTableSpaceOptionsStmt* internal_default_instance() { return reinterpret_cast( &_AlterTableSpaceOptionsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 152; friend void swap(AlterTableSpaceOptionsStmt& a, AlterTableSpaceOptionsStmt& b) { a.Swap(&b); } inline void Swap(AlterTableSpaceOptionsStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableSpaceOptionsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterTableSpaceOptionsStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterTableSpaceOptionsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterTableSpaceOptionsStmt& from); void MergeFrom(const AlterTableSpaceOptionsStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTableSpaceOptionsStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTableSpaceOptionsStmt"; } protected: explicit AlterTableSpaceOptionsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kTablespacenameFieldNumber = 1, kIsResetFieldNumber = 3, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string tablespacename = 1 [json_name = "tablespacename"]; void clear_tablespacename(); const std::string& tablespacename() const; void set_tablespacename(const std::string& value); void set_tablespacename(std::string&& value); void set_tablespacename(const char* value); void set_tablespacename(const char* value, size_t size); std::string* mutable_tablespacename(); std::string* release_tablespacename(); void set_allocated_tablespacename(std::string* tablespacename); private: const std::string& _internal_tablespacename() const; void _internal_set_tablespacename(const std::string& value); std::string* _internal_mutable_tablespacename(); public: // bool is_reset = 3 [json_name = "isReset"]; void clear_is_reset(); bool is_reset() const; void set_is_reset(bool value); private: bool _internal_is_reset() const; void _internal_set_is_reset(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterTableSpaceOptionsStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tablespacename_; bool is_reset_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterTableMoveAllStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterTableMoveAllStmt) */ { public: inline AlterTableMoveAllStmt() : AlterTableMoveAllStmt(nullptr) {} virtual ~AlterTableMoveAllStmt(); AlterTableMoveAllStmt(const AlterTableMoveAllStmt& from); AlterTableMoveAllStmt(AlterTableMoveAllStmt&& from) noexcept : AlterTableMoveAllStmt() { *this = ::std::move(from); } inline AlterTableMoveAllStmt& operator=(const AlterTableMoveAllStmt& from) { CopyFrom(from); return *this; } inline AlterTableMoveAllStmt& operator=(AlterTableMoveAllStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterTableMoveAllStmt& default_instance(); static inline const AlterTableMoveAllStmt* internal_default_instance() { return reinterpret_cast( &_AlterTableMoveAllStmt_default_instance_); } static constexpr int kIndexInFileMessages = 153; friend void swap(AlterTableMoveAllStmt& a, AlterTableMoveAllStmt& b) { a.Swap(&b); } inline void Swap(AlterTableMoveAllStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterTableMoveAllStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterTableMoveAllStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterTableMoveAllStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterTableMoveAllStmt& from); void MergeFrom(const AlterTableMoveAllStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterTableMoveAllStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterTableMoveAllStmt"; } protected: explicit AlterTableMoveAllStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRolesFieldNumber = 3, kOrigTablespacenameFieldNumber = 1, kNewTablespacenameFieldNumber = 4, kObjtypeFieldNumber = 2, kNowaitFieldNumber = 5, }; // repeated .pg_query.Node roles = 3 [json_name = "roles"]; int roles_size() const; private: int _internal_roles_size() const; public: void clear_roles(); ::pg_query::Node* mutable_roles(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; void clear_orig_tablespacename(); const std::string& orig_tablespacename() const; void set_orig_tablespacename(const std::string& value); void set_orig_tablespacename(std::string&& value); void set_orig_tablespacename(const char* value); void set_orig_tablespacename(const char* value, size_t size); std::string* mutable_orig_tablespacename(); std::string* release_orig_tablespacename(); void set_allocated_orig_tablespacename(std::string* orig_tablespacename); private: const std::string& _internal_orig_tablespacename() const; void _internal_set_orig_tablespacename(const std::string& value); std::string* _internal_mutable_orig_tablespacename(); public: // string new_tablespacename = 4 [json_name = "new_tablespacename"]; void clear_new_tablespacename(); const std::string& new_tablespacename() const; void set_new_tablespacename(const std::string& value); void set_new_tablespacename(std::string&& value); void set_new_tablespacename(const char* value); void set_new_tablespacename(const char* value, size_t size); std::string* mutable_new_tablespacename(); std::string* release_new_tablespacename(); void set_allocated_new_tablespacename(std::string* new_tablespacename); private: const std::string& _internal_new_tablespacename() const; void _internal_set_new_tablespacename(const std::string& value); std::string* _internal_mutable_new_tablespacename(); public: // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; void clear_objtype(); ::pg_query::ObjectType objtype() const; void set_objtype(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_objtype() const; void _internal_set_objtype(::pg_query::ObjectType value); public: // bool nowait = 5 [json_name = "nowait"]; void clear_nowait(); bool nowait() const; void set_nowait(bool value); private: bool _internal_nowait() const; void _internal_set_nowait(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterTableMoveAllStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr orig_tablespacename_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr new_tablespacename_; int objtype_; bool nowait_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SecLabelStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SecLabelStmt) */ { public: inline SecLabelStmt() : SecLabelStmt(nullptr) {} virtual ~SecLabelStmt(); SecLabelStmt(const SecLabelStmt& from); SecLabelStmt(SecLabelStmt&& from) noexcept : SecLabelStmt() { *this = ::std::move(from); } inline SecLabelStmt& operator=(const SecLabelStmt& from) { CopyFrom(from); return *this; } inline SecLabelStmt& operator=(SecLabelStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const SecLabelStmt& default_instance(); static inline const SecLabelStmt* internal_default_instance() { return reinterpret_cast( &_SecLabelStmt_default_instance_); } static constexpr int kIndexInFileMessages = 154; friend void swap(SecLabelStmt& a, SecLabelStmt& b) { a.Swap(&b); } inline void Swap(SecLabelStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SecLabelStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline SecLabelStmt* New() const final { return CreateMaybeMessage(nullptr); } SecLabelStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const SecLabelStmt& from); void MergeFrom(const SecLabelStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SecLabelStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SecLabelStmt"; } protected: explicit SecLabelStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kProviderFieldNumber = 3, kLabelFieldNumber = 4, kObjectFieldNumber = 2, kObjtypeFieldNumber = 1, }; // string provider = 3 [json_name = "provider"]; void clear_provider(); const std::string& provider() const; void set_provider(const std::string& value); void set_provider(std::string&& value); void set_provider(const char* value); void set_provider(const char* value, size_t size); std::string* mutable_provider(); std::string* release_provider(); void set_allocated_provider(std::string* provider); private: const std::string& _internal_provider() const; void _internal_set_provider(const std::string& value); std::string* _internal_mutable_provider(); public: // string label = 4 [json_name = "label"]; void clear_label(); const std::string& label() const; void set_label(const std::string& value); void set_label(std::string&& value); void set_label(const char* value); void set_label(const char* value, size_t size); std::string* mutable_label(); std::string* release_label(); void set_allocated_label(std::string* label); private: const std::string& _internal_label() const; void _internal_set_label(const std::string& value); std::string* _internal_mutable_label(); public: // .pg_query.Node object = 2 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; void clear_objtype(); ::pg_query::ObjectType objtype() const; void set_objtype(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_objtype() const; void _internal_set_objtype(::pg_query::ObjectType value); public: // @@protoc_insertion_point(class_scope:pg_query.SecLabelStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr provider_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr label_; ::pg_query::Node* object_; int objtype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateForeignTableStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateForeignTableStmt) */ { public: inline CreateForeignTableStmt() : CreateForeignTableStmt(nullptr) {} virtual ~CreateForeignTableStmt(); CreateForeignTableStmt(const CreateForeignTableStmt& from); CreateForeignTableStmt(CreateForeignTableStmt&& from) noexcept : CreateForeignTableStmt() { *this = ::std::move(from); } inline CreateForeignTableStmt& operator=(const CreateForeignTableStmt& from) { CopyFrom(from); return *this; } inline CreateForeignTableStmt& operator=(CreateForeignTableStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateForeignTableStmt& default_instance(); static inline const CreateForeignTableStmt* internal_default_instance() { return reinterpret_cast( &_CreateForeignTableStmt_default_instance_); } static constexpr int kIndexInFileMessages = 155; friend void swap(CreateForeignTableStmt& a, CreateForeignTableStmt& b) { a.Swap(&b); } inline void Swap(CreateForeignTableStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateForeignTableStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateForeignTableStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateForeignTableStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateForeignTableStmt& from); void MergeFrom(const CreateForeignTableStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateForeignTableStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateForeignTableStmt"; } protected: explicit CreateForeignTableStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 3, kServernameFieldNumber = 2, kBaseStmtFieldNumber = 1, }; // repeated .pg_query.Node options = 3 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string servername = 2 [json_name = "servername"]; void clear_servername(); const std::string& servername() const; void set_servername(const std::string& value); void set_servername(std::string&& value); void set_servername(const char* value); void set_servername(const char* value, size_t size); std::string* mutable_servername(); std::string* release_servername(); void set_allocated_servername(std::string* servername); private: const std::string& _internal_servername() const; void _internal_set_servername(const std::string& value); std::string* _internal_mutable_servername(); public: // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; bool has_base_stmt() const; private: bool _internal_has_base_stmt() const; public: void clear_base_stmt(); const ::pg_query::CreateStmt& base_stmt() const; ::pg_query::CreateStmt* release_base_stmt(); ::pg_query::CreateStmt* mutable_base_stmt(); void set_allocated_base_stmt(::pg_query::CreateStmt* base_stmt); private: const ::pg_query::CreateStmt& _internal_base_stmt() const; ::pg_query::CreateStmt* _internal_mutable_base_stmt(); public: void unsafe_arena_set_allocated_base_stmt( ::pg_query::CreateStmt* base_stmt); ::pg_query::CreateStmt* unsafe_arena_release_base_stmt(); // @@protoc_insertion_point(class_scope:pg_query.CreateForeignTableStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr servername_; ::pg_query::CreateStmt* base_stmt_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ImportForeignSchemaStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ImportForeignSchemaStmt) */ { public: inline ImportForeignSchemaStmt() : ImportForeignSchemaStmt(nullptr) {} virtual ~ImportForeignSchemaStmt(); ImportForeignSchemaStmt(const ImportForeignSchemaStmt& from); ImportForeignSchemaStmt(ImportForeignSchemaStmt&& from) noexcept : ImportForeignSchemaStmt() { *this = ::std::move(from); } inline ImportForeignSchemaStmt& operator=(const ImportForeignSchemaStmt& from) { CopyFrom(from); return *this; } inline ImportForeignSchemaStmt& operator=(ImportForeignSchemaStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ImportForeignSchemaStmt& default_instance(); static inline const ImportForeignSchemaStmt* internal_default_instance() { return reinterpret_cast( &_ImportForeignSchemaStmt_default_instance_); } static constexpr int kIndexInFileMessages = 156; friend void swap(ImportForeignSchemaStmt& a, ImportForeignSchemaStmt& b) { a.Swap(&b); } inline void Swap(ImportForeignSchemaStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ImportForeignSchemaStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ImportForeignSchemaStmt* New() const final { return CreateMaybeMessage(nullptr); } ImportForeignSchemaStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ImportForeignSchemaStmt& from); void MergeFrom(const ImportForeignSchemaStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ImportForeignSchemaStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ImportForeignSchemaStmt"; } protected: explicit ImportForeignSchemaStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTableListFieldNumber = 5, kOptionsFieldNumber = 6, kServerNameFieldNumber = 1, kRemoteSchemaFieldNumber = 2, kLocalSchemaFieldNumber = 3, kListTypeFieldNumber = 4, }; // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; int table_list_size() const; private: int _internal_table_list_size() const; public: void clear_table_list(); ::pg_query::Node* mutable_table_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_table_list(); private: const ::pg_query::Node& _internal_table_list(int index) const; ::pg_query::Node* _internal_add_table_list(); public: const ::pg_query::Node& table_list(int index) const; ::pg_query::Node* add_table_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& table_list() const; // repeated .pg_query.Node options = 6 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string server_name = 1 [json_name = "server_name"]; void clear_server_name(); const std::string& server_name() const; void set_server_name(const std::string& value); void set_server_name(std::string&& value); void set_server_name(const char* value); void set_server_name(const char* value, size_t size); std::string* mutable_server_name(); std::string* release_server_name(); void set_allocated_server_name(std::string* server_name); private: const std::string& _internal_server_name() const; void _internal_set_server_name(const std::string& value); std::string* _internal_mutable_server_name(); public: // string remote_schema = 2 [json_name = "remote_schema"]; void clear_remote_schema(); const std::string& remote_schema() const; void set_remote_schema(const std::string& value); void set_remote_schema(std::string&& value); void set_remote_schema(const char* value); void set_remote_schema(const char* value, size_t size); std::string* mutable_remote_schema(); std::string* release_remote_schema(); void set_allocated_remote_schema(std::string* remote_schema); private: const std::string& _internal_remote_schema() const; void _internal_set_remote_schema(const std::string& value); std::string* _internal_mutable_remote_schema(); public: // string local_schema = 3 [json_name = "local_schema"]; void clear_local_schema(); const std::string& local_schema() const; void set_local_schema(const std::string& value); void set_local_schema(std::string&& value); void set_local_schema(const char* value); void set_local_schema(const char* value, size_t size); std::string* mutable_local_schema(); std::string* release_local_schema(); void set_allocated_local_schema(std::string* local_schema); private: const std::string& _internal_local_schema() const; void _internal_set_local_schema(const std::string& value); std::string* _internal_mutable_local_schema(); public: // .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; void clear_list_type(); ::pg_query::ImportForeignSchemaType list_type() const; void set_list_type(::pg_query::ImportForeignSchemaType value); private: ::pg_query::ImportForeignSchemaType _internal_list_type() const; void _internal_set_list_type(::pg_query::ImportForeignSchemaType value); public: // @@protoc_insertion_point(class_scope:pg_query.ImportForeignSchemaStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > table_list_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr server_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr remote_schema_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr local_schema_; int list_type_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateExtensionStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateExtensionStmt) */ { public: inline CreateExtensionStmt() : CreateExtensionStmt(nullptr) {} virtual ~CreateExtensionStmt(); CreateExtensionStmt(const CreateExtensionStmt& from); CreateExtensionStmt(CreateExtensionStmt&& from) noexcept : CreateExtensionStmt() { *this = ::std::move(from); } inline CreateExtensionStmt& operator=(const CreateExtensionStmt& from) { CopyFrom(from); return *this; } inline CreateExtensionStmt& operator=(CreateExtensionStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateExtensionStmt& default_instance(); static inline const CreateExtensionStmt* internal_default_instance() { return reinterpret_cast( &_CreateExtensionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 157; friend void swap(CreateExtensionStmt& a, CreateExtensionStmt& b) { a.Swap(&b); } inline void Swap(CreateExtensionStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateExtensionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateExtensionStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateExtensionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateExtensionStmt& from); void MergeFrom(const CreateExtensionStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateExtensionStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateExtensionStmt"; } protected: explicit CreateExtensionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 3, kExtnameFieldNumber = 1, kIfNotExistsFieldNumber = 2, }; // repeated .pg_query.Node options = 3 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string extname = 1 [json_name = "extname"]; void clear_extname(); const std::string& extname() const; void set_extname(const std::string& value); void set_extname(std::string&& value); void set_extname(const char* value); void set_extname(const char* value, size_t size); std::string* mutable_extname(); std::string* release_extname(); void set_allocated_extname(std::string* extname); private: const std::string& _internal_extname() const; void _internal_set_extname(const std::string& value); std::string* _internal_mutable_extname(); public: // bool if_not_exists = 2 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateExtensionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr extname_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterExtensionStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterExtensionStmt) */ { public: inline AlterExtensionStmt() : AlterExtensionStmt(nullptr) {} virtual ~AlterExtensionStmt(); AlterExtensionStmt(const AlterExtensionStmt& from); AlterExtensionStmt(AlterExtensionStmt&& from) noexcept : AlterExtensionStmt() { *this = ::std::move(from); } inline AlterExtensionStmt& operator=(const AlterExtensionStmt& from) { CopyFrom(from); return *this; } inline AlterExtensionStmt& operator=(AlterExtensionStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterExtensionStmt& default_instance(); static inline const AlterExtensionStmt* internal_default_instance() { return reinterpret_cast( &_AlterExtensionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 158; friend void swap(AlterExtensionStmt& a, AlterExtensionStmt& b) { a.Swap(&b); } inline void Swap(AlterExtensionStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterExtensionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterExtensionStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterExtensionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterExtensionStmt& from); void MergeFrom(const AlterExtensionStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterExtensionStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterExtensionStmt"; } protected: explicit AlterExtensionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kExtnameFieldNumber = 1, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string extname = 1 [json_name = "extname"]; void clear_extname(); const std::string& extname() const; void set_extname(const std::string& value); void set_extname(std::string&& value); void set_extname(const char* value); void set_extname(const char* value, size_t size); std::string* mutable_extname(); std::string* release_extname(); void set_allocated_extname(std::string* extname); private: const std::string& _internal_extname() const; void _internal_set_extname(const std::string& value); std::string* _internal_mutable_extname(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterExtensionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr extname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterExtensionContentsStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterExtensionContentsStmt) */ { public: inline AlterExtensionContentsStmt() : AlterExtensionContentsStmt(nullptr) {} virtual ~AlterExtensionContentsStmt(); AlterExtensionContentsStmt(const AlterExtensionContentsStmt& from); AlterExtensionContentsStmt(AlterExtensionContentsStmt&& from) noexcept : AlterExtensionContentsStmt() { *this = ::std::move(from); } inline AlterExtensionContentsStmt& operator=(const AlterExtensionContentsStmt& from) { CopyFrom(from); return *this; } inline AlterExtensionContentsStmt& operator=(AlterExtensionContentsStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterExtensionContentsStmt& default_instance(); static inline const AlterExtensionContentsStmt* internal_default_instance() { return reinterpret_cast( &_AlterExtensionContentsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 159; friend void swap(AlterExtensionContentsStmt& a, AlterExtensionContentsStmt& b) { a.Swap(&b); } inline void Swap(AlterExtensionContentsStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterExtensionContentsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterExtensionContentsStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterExtensionContentsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterExtensionContentsStmt& from); void MergeFrom(const AlterExtensionContentsStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterExtensionContentsStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterExtensionContentsStmt"; } protected: explicit AlterExtensionContentsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExtnameFieldNumber = 1, kObjectFieldNumber = 4, kActionFieldNumber = 2, kObjtypeFieldNumber = 3, }; // string extname = 1 [json_name = "extname"]; void clear_extname(); const std::string& extname() const; void set_extname(const std::string& value); void set_extname(std::string&& value); void set_extname(const char* value); void set_extname(const char* value, size_t size); std::string* mutable_extname(); std::string* release_extname(); void set_allocated_extname(std::string* extname); private: const std::string& _internal_extname() const; void _internal_set_extname(const std::string& value); std::string* _internal_mutable_extname(); public: // .pg_query.Node object = 4 [json_name = "object"]; bool has_object() const; private: bool _internal_has_object() const; public: void clear_object(); const ::pg_query::Node& object() const; ::pg_query::Node* release_object(); ::pg_query::Node* mutable_object(); void set_allocated_object(::pg_query::Node* object); private: const ::pg_query::Node& _internal_object() const; ::pg_query::Node* _internal_mutable_object(); public: void unsafe_arena_set_allocated_object( ::pg_query::Node* object); ::pg_query::Node* unsafe_arena_release_object(); // int32 action = 2 [json_name = "action"]; void clear_action(); ::PROTOBUF_NAMESPACE_ID::int32 action() const; void set_action(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_action() const; void _internal_set_action(::PROTOBUF_NAMESPACE_ID::int32 value); public: // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; void clear_objtype(); ::pg_query::ObjectType objtype() const; void set_objtype(::pg_query::ObjectType value); private: ::pg_query::ObjectType _internal_objtype() const; void _internal_set_objtype(::pg_query::ObjectType value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterExtensionContentsStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr extname_; ::pg_query::Node* object_; ::PROTOBUF_NAMESPACE_ID::int32 action_; int objtype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateEventTrigStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateEventTrigStmt) */ { public: inline CreateEventTrigStmt() : CreateEventTrigStmt(nullptr) {} virtual ~CreateEventTrigStmt(); CreateEventTrigStmt(const CreateEventTrigStmt& from); CreateEventTrigStmt(CreateEventTrigStmt&& from) noexcept : CreateEventTrigStmt() { *this = ::std::move(from); } inline CreateEventTrigStmt& operator=(const CreateEventTrigStmt& from) { CopyFrom(from); return *this; } inline CreateEventTrigStmt& operator=(CreateEventTrigStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateEventTrigStmt& default_instance(); static inline const CreateEventTrigStmt* internal_default_instance() { return reinterpret_cast( &_CreateEventTrigStmt_default_instance_); } static constexpr int kIndexInFileMessages = 160; friend void swap(CreateEventTrigStmt& a, CreateEventTrigStmt& b) { a.Swap(&b); } inline void Swap(CreateEventTrigStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateEventTrigStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateEventTrigStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateEventTrigStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateEventTrigStmt& from); void MergeFrom(const CreateEventTrigStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateEventTrigStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateEventTrigStmt"; } protected: explicit CreateEventTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kWhenclauseFieldNumber = 3, kFuncnameFieldNumber = 4, kTrignameFieldNumber = 1, kEventnameFieldNumber = 2, }; // repeated .pg_query.Node whenclause = 3 [json_name = "whenclause"]; int whenclause_size() const; private: int _internal_whenclause_size() const; public: void clear_whenclause(); ::pg_query::Node* mutable_whenclause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_whenclause(); private: const ::pg_query::Node& _internal_whenclause(int index) const; ::pg_query::Node* _internal_add_whenclause(); public: const ::pg_query::Node& whenclause(int index) const; ::pg_query::Node* add_whenclause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& whenclause() const; // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; int funcname_size() const; private: int _internal_funcname_size() const; public: void clear_funcname(); ::pg_query::Node* mutable_funcname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::pg_query::Node& _internal_funcname(int index) const; ::pg_query::Node* _internal_add_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funcname() const; // string trigname = 1 [json_name = "trigname"]; void clear_trigname(); const std::string& trigname() const; void set_trigname(const std::string& value); void set_trigname(std::string&& value); void set_trigname(const char* value); void set_trigname(const char* value, size_t size); std::string* mutable_trigname(); std::string* release_trigname(); void set_allocated_trigname(std::string* trigname); private: const std::string& _internal_trigname() const; void _internal_set_trigname(const std::string& value); std::string* _internal_mutable_trigname(); public: // string eventname = 2 [json_name = "eventname"]; void clear_eventname(); const std::string& eventname() const; void set_eventname(const std::string& value); void set_eventname(std::string&& value); void set_eventname(const char* value); void set_eventname(const char* value, size_t size); std::string* mutable_eventname(); std::string* release_eventname(); void set_allocated_eventname(std::string* eventname); private: const std::string& _internal_eventname() const; void _internal_set_eventname(const std::string& value); std::string* _internal_mutable_eventname(); public: // @@protoc_insertion_point(class_scope:pg_query.CreateEventTrigStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > whenclause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr trigname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr eventname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterEventTrigStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterEventTrigStmt) */ { public: inline AlterEventTrigStmt() : AlterEventTrigStmt(nullptr) {} virtual ~AlterEventTrigStmt(); AlterEventTrigStmt(const AlterEventTrigStmt& from); AlterEventTrigStmt(AlterEventTrigStmt&& from) noexcept : AlterEventTrigStmt() { *this = ::std::move(from); } inline AlterEventTrigStmt& operator=(const AlterEventTrigStmt& from) { CopyFrom(from); return *this; } inline AlterEventTrigStmt& operator=(AlterEventTrigStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterEventTrigStmt& default_instance(); static inline const AlterEventTrigStmt* internal_default_instance() { return reinterpret_cast( &_AlterEventTrigStmt_default_instance_); } static constexpr int kIndexInFileMessages = 161; friend void swap(AlterEventTrigStmt& a, AlterEventTrigStmt& b) { a.Swap(&b); } inline void Swap(AlterEventTrigStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterEventTrigStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterEventTrigStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterEventTrigStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterEventTrigStmt& from); void MergeFrom(const AlterEventTrigStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterEventTrigStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterEventTrigStmt"; } protected: explicit AlterEventTrigStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTrignameFieldNumber = 1, kTgenabledFieldNumber = 2, }; // string trigname = 1 [json_name = "trigname"]; void clear_trigname(); const std::string& trigname() const; void set_trigname(const std::string& value); void set_trigname(std::string&& value); void set_trigname(const char* value); void set_trigname(const char* value, size_t size); std::string* mutable_trigname(); std::string* release_trigname(); void set_allocated_trigname(std::string* trigname); private: const std::string& _internal_trigname() const; void _internal_set_trigname(const std::string& value); std::string* _internal_mutable_trigname(); public: // string tgenabled = 2 [json_name = "tgenabled"]; void clear_tgenabled(); const std::string& tgenabled() const; void set_tgenabled(const std::string& value); void set_tgenabled(std::string&& value); void set_tgenabled(const char* value); void set_tgenabled(const char* value, size_t size); std::string* mutable_tgenabled(); std::string* release_tgenabled(); void set_allocated_tgenabled(std::string* tgenabled); private: const std::string& _internal_tgenabled() const; void _internal_set_tgenabled(const std::string& value); std::string* _internal_mutable_tgenabled(); public: // @@protoc_insertion_point(class_scope:pg_query.AlterEventTrigStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr trigname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tgenabled_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RefreshMatViewStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RefreshMatViewStmt) */ { public: inline RefreshMatViewStmt() : RefreshMatViewStmt(nullptr) {} virtual ~RefreshMatViewStmt(); RefreshMatViewStmt(const RefreshMatViewStmt& from); RefreshMatViewStmt(RefreshMatViewStmt&& from) noexcept : RefreshMatViewStmt() { *this = ::std::move(from); } inline RefreshMatViewStmt& operator=(const RefreshMatViewStmt& from) { CopyFrom(from); return *this; } inline RefreshMatViewStmt& operator=(RefreshMatViewStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RefreshMatViewStmt& default_instance(); static inline const RefreshMatViewStmt* internal_default_instance() { return reinterpret_cast( &_RefreshMatViewStmt_default_instance_); } static constexpr int kIndexInFileMessages = 162; friend void swap(RefreshMatViewStmt& a, RefreshMatViewStmt& b) { a.Swap(&b); } inline void Swap(RefreshMatViewStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RefreshMatViewStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RefreshMatViewStmt* New() const final { return CreateMaybeMessage(nullptr); } RefreshMatViewStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RefreshMatViewStmt& from); void MergeFrom(const RefreshMatViewStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RefreshMatViewStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RefreshMatViewStmt"; } protected: explicit RefreshMatViewStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRelationFieldNumber = 3, kConcurrentFieldNumber = 1, kSkipDataFieldNumber = 2, }; // .pg_query.RangeVar relation = 3 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // bool concurrent = 1 [json_name = "concurrent"]; void clear_concurrent(); bool concurrent() const; void set_concurrent(bool value); private: bool _internal_concurrent() const; void _internal_set_concurrent(bool value); public: // bool skip_data = 2 [json_name = "skipData"]; void clear_skip_data(); bool skip_data() const; void set_skip_data(bool value); private: bool _internal_skip_data() const; void _internal_set_skip_data(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RefreshMatViewStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::RangeVar* relation_; bool concurrent_; bool skip_data_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ReplicaIdentityStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ReplicaIdentityStmt) */ { public: inline ReplicaIdentityStmt() : ReplicaIdentityStmt(nullptr) {} virtual ~ReplicaIdentityStmt(); ReplicaIdentityStmt(const ReplicaIdentityStmt& from); ReplicaIdentityStmt(ReplicaIdentityStmt&& from) noexcept : ReplicaIdentityStmt() { *this = ::std::move(from); } inline ReplicaIdentityStmt& operator=(const ReplicaIdentityStmt& from) { CopyFrom(from); return *this; } inline ReplicaIdentityStmt& operator=(ReplicaIdentityStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ReplicaIdentityStmt& default_instance(); static inline const ReplicaIdentityStmt* internal_default_instance() { return reinterpret_cast( &_ReplicaIdentityStmt_default_instance_); } static constexpr int kIndexInFileMessages = 163; friend void swap(ReplicaIdentityStmt& a, ReplicaIdentityStmt& b) { a.Swap(&b); } inline void Swap(ReplicaIdentityStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ReplicaIdentityStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ReplicaIdentityStmt* New() const final { return CreateMaybeMessage(nullptr); } ReplicaIdentityStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ReplicaIdentityStmt& from); void MergeFrom(const ReplicaIdentityStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ReplicaIdentityStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ReplicaIdentityStmt"; } protected: explicit ReplicaIdentityStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kIdentityTypeFieldNumber = 1, kNameFieldNumber = 2, }; // string identity_type = 1 [json_name = "identity_type"]; void clear_identity_type(); const std::string& identity_type() const; void set_identity_type(const std::string& value); void set_identity_type(std::string&& value); void set_identity_type(const char* value); void set_identity_type(const char* value, size_t size); std::string* mutable_identity_type(); std::string* release_identity_type(); void set_allocated_identity_type(std::string* identity_type); private: const std::string& _internal_identity_type() const; void _internal_set_identity_type(const std::string& value); std::string* _internal_mutable_identity_type(); public: // string name = 2 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // @@protoc_insertion_point(class_scope:pg_query.ReplicaIdentityStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr identity_type_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterSystemStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSystemStmt) */ { public: inline AlterSystemStmt() : AlterSystemStmt(nullptr) {} virtual ~AlterSystemStmt(); AlterSystemStmt(const AlterSystemStmt& from); AlterSystemStmt(AlterSystemStmt&& from) noexcept : AlterSystemStmt() { *this = ::std::move(from); } inline AlterSystemStmt& operator=(const AlterSystemStmt& from) { CopyFrom(from); return *this; } inline AlterSystemStmt& operator=(AlterSystemStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterSystemStmt& default_instance(); static inline const AlterSystemStmt* internal_default_instance() { return reinterpret_cast( &_AlterSystemStmt_default_instance_); } static constexpr int kIndexInFileMessages = 164; friend void swap(AlterSystemStmt& a, AlterSystemStmt& b) { a.Swap(&b); } inline void Swap(AlterSystemStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterSystemStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterSystemStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterSystemStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterSystemStmt& from); void MergeFrom(const AlterSystemStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterSystemStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterSystemStmt"; } protected: explicit AlterSystemStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSetstmtFieldNumber = 1, }; // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; bool has_setstmt() const; private: bool _internal_has_setstmt() const; public: void clear_setstmt(); const ::pg_query::VariableSetStmt& setstmt() const; ::pg_query::VariableSetStmt* release_setstmt(); ::pg_query::VariableSetStmt* mutable_setstmt(); void set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt); private: const ::pg_query::VariableSetStmt& _internal_setstmt() const; ::pg_query::VariableSetStmt* _internal_mutable_setstmt(); public: void unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt); ::pg_query::VariableSetStmt* unsafe_arena_release_setstmt(); // @@protoc_insertion_point(class_scope:pg_query.AlterSystemStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::VariableSetStmt* setstmt_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreatePolicyStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePolicyStmt) */ { public: inline CreatePolicyStmt() : CreatePolicyStmt(nullptr) {} virtual ~CreatePolicyStmt(); CreatePolicyStmt(const CreatePolicyStmt& from); CreatePolicyStmt(CreatePolicyStmt&& from) noexcept : CreatePolicyStmt() { *this = ::std::move(from); } inline CreatePolicyStmt& operator=(const CreatePolicyStmt& from) { CopyFrom(from); return *this; } inline CreatePolicyStmt& operator=(CreatePolicyStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreatePolicyStmt& default_instance(); static inline const CreatePolicyStmt* internal_default_instance() { return reinterpret_cast( &_CreatePolicyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 165; friend void swap(CreatePolicyStmt& a, CreatePolicyStmt& b) { a.Swap(&b); } inline void Swap(CreatePolicyStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatePolicyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreatePolicyStmt* New() const final { return CreateMaybeMessage(nullptr); } CreatePolicyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreatePolicyStmt& from); void MergeFrom(const CreatePolicyStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreatePolicyStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreatePolicyStmt"; } protected: explicit CreatePolicyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRolesFieldNumber = 5, kPolicyNameFieldNumber = 1, kCmdNameFieldNumber = 3, kTableFieldNumber = 2, kQualFieldNumber = 6, kWithCheckFieldNumber = 7, kPermissiveFieldNumber = 4, }; // repeated .pg_query.Node roles = 5 [json_name = "roles"]; int roles_size() const; private: int _internal_roles_size() const; public: void clear_roles(); ::pg_query::Node* mutable_roles(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // string policy_name = 1 [json_name = "policy_name"]; void clear_policy_name(); const std::string& policy_name() const; void set_policy_name(const std::string& value); void set_policy_name(std::string&& value); void set_policy_name(const char* value); void set_policy_name(const char* value, size_t size); std::string* mutable_policy_name(); std::string* release_policy_name(); void set_allocated_policy_name(std::string* policy_name); private: const std::string& _internal_policy_name() const; void _internal_set_policy_name(const std::string& value); std::string* _internal_mutable_policy_name(); public: // string cmd_name = 3 [json_name = "cmd_name"]; void clear_cmd_name(); const std::string& cmd_name() const; void set_cmd_name(const std::string& value); void set_cmd_name(std::string&& value); void set_cmd_name(const char* value); void set_cmd_name(const char* value, size_t size); std::string* mutable_cmd_name(); std::string* release_cmd_name(); void set_allocated_cmd_name(std::string* cmd_name); private: const std::string& _internal_cmd_name() const; void _internal_set_cmd_name(const std::string& value); std::string* _internal_mutable_cmd_name(); public: // .pg_query.RangeVar table = 2 [json_name = "table"]; bool has_table() const; private: bool _internal_has_table() const; public: void clear_table(); const ::pg_query::RangeVar& table() const; ::pg_query::RangeVar* release_table(); ::pg_query::RangeVar* mutable_table(); void set_allocated_table(::pg_query::RangeVar* table); private: const ::pg_query::RangeVar& _internal_table() const; ::pg_query::RangeVar* _internal_mutable_table(); public: void unsafe_arena_set_allocated_table( ::pg_query::RangeVar* table); ::pg_query::RangeVar* unsafe_arena_release_table(); // .pg_query.Node qual = 6 [json_name = "qual"]; bool has_qual() const; private: bool _internal_has_qual() const; public: void clear_qual(); const ::pg_query::Node& qual() const; ::pg_query::Node* release_qual(); ::pg_query::Node* mutable_qual(); void set_allocated_qual(::pg_query::Node* qual); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: void unsafe_arena_set_allocated_qual( ::pg_query::Node* qual); ::pg_query::Node* unsafe_arena_release_qual(); // .pg_query.Node with_check = 7 [json_name = "with_check"]; bool has_with_check() const; private: bool _internal_has_with_check() const; public: void clear_with_check(); const ::pg_query::Node& with_check() const; ::pg_query::Node* release_with_check(); ::pg_query::Node* mutable_with_check(); void set_allocated_with_check(::pg_query::Node* with_check); private: const ::pg_query::Node& _internal_with_check() const; ::pg_query::Node* _internal_mutable_with_check(); public: void unsafe_arena_set_allocated_with_check( ::pg_query::Node* with_check); ::pg_query::Node* unsafe_arena_release_with_check(); // bool permissive = 4 [json_name = "permissive"]; void clear_permissive(); bool permissive() const; void set_permissive(bool value); private: bool _internal_permissive() const; void _internal_set_permissive(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreatePolicyStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr policy_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cmd_name_; ::pg_query::RangeVar* table_; ::pg_query::Node* qual_; ::pg_query::Node* with_check_; bool permissive_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterPolicyStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterPolicyStmt) */ { public: inline AlterPolicyStmt() : AlterPolicyStmt(nullptr) {} virtual ~AlterPolicyStmt(); AlterPolicyStmt(const AlterPolicyStmt& from); AlterPolicyStmt(AlterPolicyStmt&& from) noexcept : AlterPolicyStmt() { *this = ::std::move(from); } inline AlterPolicyStmt& operator=(const AlterPolicyStmt& from) { CopyFrom(from); return *this; } inline AlterPolicyStmt& operator=(AlterPolicyStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterPolicyStmt& default_instance(); static inline const AlterPolicyStmt* internal_default_instance() { return reinterpret_cast( &_AlterPolicyStmt_default_instance_); } static constexpr int kIndexInFileMessages = 166; friend void swap(AlterPolicyStmt& a, AlterPolicyStmt& b) { a.Swap(&b); } inline void Swap(AlterPolicyStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterPolicyStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterPolicyStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterPolicyStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterPolicyStmt& from); void MergeFrom(const AlterPolicyStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterPolicyStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterPolicyStmt"; } protected: explicit AlterPolicyStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRolesFieldNumber = 3, kPolicyNameFieldNumber = 1, kTableFieldNumber = 2, kQualFieldNumber = 4, kWithCheckFieldNumber = 5, }; // repeated .pg_query.Node roles = 3 [json_name = "roles"]; int roles_size() const; private: int _internal_roles_size() const; public: void clear_roles(); ::pg_query::Node* mutable_roles(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_roles(); private: const ::pg_query::Node& _internal_roles(int index) const; ::pg_query::Node* _internal_add_roles(); public: const ::pg_query::Node& roles(int index) const; ::pg_query::Node* add_roles(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& roles() const; // string policy_name = 1 [json_name = "policy_name"]; void clear_policy_name(); const std::string& policy_name() const; void set_policy_name(const std::string& value); void set_policy_name(std::string&& value); void set_policy_name(const char* value); void set_policy_name(const char* value, size_t size); std::string* mutable_policy_name(); std::string* release_policy_name(); void set_allocated_policy_name(std::string* policy_name); private: const std::string& _internal_policy_name() const; void _internal_set_policy_name(const std::string& value); std::string* _internal_mutable_policy_name(); public: // .pg_query.RangeVar table = 2 [json_name = "table"]; bool has_table() const; private: bool _internal_has_table() const; public: void clear_table(); const ::pg_query::RangeVar& table() const; ::pg_query::RangeVar* release_table(); ::pg_query::RangeVar* mutable_table(); void set_allocated_table(::pg_query::RangeVar* table); private: const ::pg_query::RangeVar& _internal_table() const; ::pg_query::RangeVar* _internal_mutable_table(); public: void unsafe_arena_set_allocated_table( ::pg_query::RangeVar* table); ::pg_query::RangeVar* unsafe_arena_release_table(); // .pg_query.Node qual = 4 [json_name = "qual"]; bool has_qual() const; private: bool _internal_has_qual() const; public: void clear_qual(); const ::pg_query::Node& qual() const; ::pg_query::Node* release_qual(); ::pg_query::Node* mutable_qual(); void set_allocated_qual(::pg_query::Node* qual); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: void unsafe_arena_set_allocated_qual( ::pg_query::Node* qual); ::pg_query::Node* unsafe_arena_release_qual(); // .pg_query.Node with_check = 5 [json_name = "with_check"]; bool has_with_check() const; private: bool _internal_has_with_check() const; public: void clear_with_check(); const ::pg_query::Node& with_check() const; ::pg_query::Node* release_with_check(); ::pg_query::Node* mutable_with_check(); void set_allocated_with_check(::pg_query::Node* with_check); private: const ::pg_query::Node& _internal_with_check() const; ::pg_query::Node* _internal_mutable_with_check(); public: void unsafe_arena_set_allocated_with_check( ::pg_query::Node* with_check); ::pg_query::Node* unsafe_arena_release_with_check(); // @@protoc_insertion_point(class_scope:pg_query.AlterPolicyStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > roles_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr policy_name_; ::pg_query::RangeVar* table_; ::pg_query::Node* qual_; ::pg_query::Node* with_check_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateTransformStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateTransformStmt) */ { public: inline CreateTransformStmt() : CreateTransformStmt(nullptr) {} virtual ~CreateTransformStmt(); CreateTransformStmt(const CreateTransformStmt& from); CreateTransformStmt(CreateTransformStmt&& from) noexcept : CreateTransformStmt() { *this = ::std::move(from); } inline CreateTransformStmt& operator=(const CreateTransformStmt& from) { CopyFrom(from); return *this; } inline CreateTransformStmt& operator=(CreateTransformStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateTransformStmt& default_instance(); static inline const CreateTransformStmt* internal_default_instance() { return reinterpret_cast( &_CreateTransformStmt_default_instance_); } static constexpr int kIndexInFileMessages = 167; friend void swap(CreateTransformStmt& a, CreateTransformStmt& b) { a.Swap(&b); } inline void Swap(CreateTransformStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateTransformStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateTransformStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateTransformStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateTransformStmt& from); void MergeFrom(const CreateTransformStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateTransformStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateTransformStmt"; } protected: explicit CreateTransformStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kLangFieldNumber = 3, kTypeNameFieldNumber = 2, kFromsqlFieldNumber = 4, kTosqlFieldNumber = 5, kReplaceFieldNumber = 1, }; // string lang = 3 [json_name = "lang"]; void clear_lang(); const std::string& lang() const; void set_lang(const std::string& value); void set_lang(std::string&& value); void set_lang(const char* value); void set_lang(const char* value, size_t size); std::string* mutable_lang(); std::string* release_lang(); void set_allocated_lang(std::string* lang); private: const std::string& _internal_lang() const; void _internal_set_lang(const std::string& value); std::string* _internal_mutable_lang(); public: // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; bool has_type_name() const; private: bool _internal_has_type_name() const; public: void clear_type_name(); const ::pg_query::TypeName& type_name() const; ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; bool has_fromsql() const; private: bool _internal_has_fromsql() const; public: void clear_fromsql(); const ::pg_query::ObjectWithArgs& fromsql() const; ::pg_query::ObjectWithArgs* release_fromsql(); ::pg_query::ObjectWithArgs* mutable_fromsql(); void set_allocated_fromsql(::pg_query::ObjectWithArgs* fromsql); private: const ::pg_query::ObjectWithArgs& _internal_fromsql() const; ::pg_query::ObjectWithArgs* _internal_mutable_fromsql(); public: void unsafe_arena_set_allocated_fromsql( ::pg_query::ObjectWithArgs* fromsql); ::pg_query::ObjectWithArgs* unsafe_arena_release_fromsql(); // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; bool has_tosql() const; private: bool _internal_has_tosql() const; public: void clear_tosql(); const ::pg_query::ObjectWithArgs& tosql() const; ::pg_query::ObjectWithArgs* release_tosql(); ::pg_query::ObjectWithArgs* mutable_tosql(); void set_allocated_tosql(::pg_query::ObjectWithArgs* tosql); private: const ::pg_query::ObjectWithArgs& _internal_tosql() const; ::pg_query::ObjectWithArgs* _internal_mutable_tosql(); public: void unsafe_arena_set_allocated_tosql( ::pg_query::ObjectWithArgs* tosql); ::pg_query::ObjectWithArgs* unsafe_arena_release_tosql(); // bool replace = 1 [json_name = "replace"]; void clear_replace(); bool replace() const; void set_replace(bool value); private: bool _internal_replace() const; void _internal_set_replace(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateTransformStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr lang_; ::pg_query::TypeName* type_name_; ::pg_query::ObjectWithArgs* fromsql_; ::pg_query::ObjectWithArgs* tosql_; bool replace_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateAmStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateAmStmt) */ { public: inline CreateAmStmt() : CreateAmStmt(nullptr) {} virtual ~CreateAmStmt(); CreateAmStmt(const CreateAmStmt& from); CreateAmStmt(CreateAmStmt&& from) noexcept : CreateAmStmt() { *this = ::std::move(from); } inline CreateAmStmt& operator=(const CreateAmStmt& from) { CopyFrom(from); return *this; } inline CreateAmStmt& operator=(CreateAmStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateAmStmt& default_instance(); static inline const CreateAmStmt* internal_default_instance() { return reinterpret_cast( &_CreateAmStmt_default_instance_); } static constexpr int kIndexInFileMessages = 168; friend void swap(CreateAmStmt& a, CreateAmStmt& b) { a.Swap(&b); } inline void Swap(CreateAmStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateAmStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateAmStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateAmStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateAmStmt& from); void MergeFrom(const CreateAmStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateAmStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateAmStmt"; } protected: explicit CreateAmStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kHandlerNameFieldNumber = 2, kAmnameFieldNumber = 1, kAmtypeFieldNumber = 3, }; // repeated .pg_query.Node handler_name = 2 [json_name = "handler_name"]; int handler_name_size() const; private: int _internal_handler_name_size() const; public: void clear_handler_name(); ::pg_query::Node* mutable_handler_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_handler_name(); private: const ::pg_query::Node& _internal_handler_name(int index) const; ::pg_query::Node* _internal_add_handler_name(); public: const ::pg_query::Node& handler_name(int index) const; ::pg_query::Node* add_handler_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& handler_name() const; // string amname = 1 [json_name = "amname"]; void clear_amname(); const std::string& amname() const; void set_amname(const std::string& value); void set_amname(std::string&& value); void set_amname(const char* value); void set_amname(const char* value, size_t size); std::string* mutable_amname(); std::string* release_amname(); void set_allocated_amname(std::string* amname); private: const std::string& _internal_amname() const; void _internal_set_amname(const std::string& value); std::string* _internal_mutable_amname(); public: // string amtype = 3 [json_name = "amtype"]; void clear_amtype(); const std::string& amtype() const; void set_amtype(const std::string& value); void set_amtype(std::string&& value); void set_amtype(const char* value); void set_amtype(const char* value, size_t size); std::string* mutable_amtype(); std::string* release_amtype(); void set_allocated_amtype(std::string* amtype); private: const std::string& _internal_amtype() const; void _internal_set_amtype(const std::string& value); std::string* _internal_mutable_amtype(); public: // @@protoc_insertion_point(class_scope:pg_query.CreateAmStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > handler_name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr amtype_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreatePublicationStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreatePublicationStmt) */ { public: inline CreatePublicationStmt() : CreatePublicationStmt(nullptr) {} virtual ~CreatePublicationStmt(); CreatePublicationStmt(const CreatePublicationStmt& from); CreatePublicationStmt(CreatePublicationStmt&& from) noexcept : CreatePublicationStmt() { *this = ::std::move(from); } inline CreatePublicationStmt& operator=(const CreatePublicationStmt& from) { CopyFrom(from); return *this; } inline CreatePublicationStmt& operator=(CreatePublicationStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreatePublicationStmt& default_instance(); static inline const CreatePublicationStmt* internal_default_instance() { return reinterpret_cast( &_CreatePublicationStmt_default_instance_); } static constexpr int kIndexInFileMessages = 169; friend void swap(CreatePublicationStmt& a, CreatePublicationStmt& b) { a.Swap(&b); } inline void Swap(CreatePublicationStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreatePublicationStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreatePublicationStmt* New() const final { return CreateMaybeMessage(nullptr); } CreatePublicationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreatePublicationStmt& from); void MergeFrom(const CreatePublicationStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreatePublicationStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreatePublicationStmt"; } protected: explicit CreatePublicationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kTablesFieldNumber = 3, kPubnameFieldNumber = 1, kForAllTablesFieldNumber = 4, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node tables = 3 [json_name = "tables"]; int tables_size() const; private: int _internal_tables_size() const; public: void clear_tables(); ::pg_query::Node* mutable_tables(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_tables(); private: const ::pg_query::Node& _internal_tables(int index) const; ::pg_query::Node* _internal_add_tables(); public: const ::pg_query::Node& tables(int index) const; ::pg_query::Node* add_tables(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& tables() const; // string pubname = 1 [json_name = "pubname"]; void clear_pubname(); const std::string& pubname() const; void set_pubname(const std::string& value); void set_pubname(std::string&& value); void set_pubname(const char* value); void set_pubname(const char* value, size_t size); std::string* mutable_pubname(); std::string* release_pubname(); void set_allocated_pubname(std::string* pubname); private: const std::string& _internal_pubname() const; void _internal_set_pubname(const std::string& value); std::string* _internal_mutable_pubname(); public: // bool for_all_tables = 4 [json_name = "for_all_tables"]; void clear_for_all_tables(); bool for_all_tables() const; void set_for_all_tables(bool value); private: bool _internal_for_all_tables() const; void _internal_set_for_all_tables(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreatePublicationStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > tables_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr pubname_; bool for_all_tables_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterPublicationStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterPublicationStmt) */ { public: inline AlterPublicationStmt() : AlterPublicationStmt(nullptr) {} virtual ~AlterPublicationStmt(); AlterPublicationStmt(const AlterPublicationStmt& from); AlterPublicationStmt(AlterPublicationStmt&& from) noexcept : AlterPublicationStmt() { *this = ::std::move(from); } inline AlterPublicationStmt& operator=(const AlterPublicationStmt& from) { CopyFrom(from); return *this; } inline AlterPublicationStmt& operator=(AlterPublicationStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterPublicationStmt& default_instance(); static inline const AlterPublicationStmt* internal_default_instance() { return reinterpret_cast( &_AlterPublicationStmt_default_instance_); } static constexpr int kIndexInFileMessages = 170; friend void swap(AlterPublicationStmt& a, AlterPublicationStmt& b) { a.Swap(&b); } inline void Swap(AlterPublicationStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterPublicationStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterPublicationStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterPublicationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterPublicationStmt& from); void MergeFrom(const AlterPublicationStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterPublicationStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterPublicationStmt"; } protected: explicit AlterPublicationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOptionsFieldNumber = 2, kTablesFieldNumber = 3, kPubnameFieldNumber = 1, kForAllTablesFieldNumber = 4, kTableActionFieldNumber = 5, }; // repeated .pg_query.Node options = 2 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node tables = 3 [json_name = "tables"]; int tables_size() const; private: int _internal_tables_size() const; public: void clear_tables(); ::pg_query::Node* mutable_tables(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_tables(); private: const ::pg_query::Node& _internal_tables(int index) const; ::pg_query::Node* _internal_add_tables(); public: const ::pg_query::Node& tables(int index) const; ::pg_query::Node* add_tables(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& tables() const; // string pubname = 1 [json_name = "pubname"]; void clear_pubname(); const std::string& pubname() const; void set_pubname(const std::string& value); void set_pubname(std::string&& value); void set_pubname(const char* value); void set_pubname(const char* value, size_t size); std::string* mutable_pubname(); std::string* release_pubname(); void set_allocated_pubname(std::string* pubname); private: const std::string& _internal_pubname() const; void _internal_set_pubname(const std::string& value); std::string* _internal_mutable_pubname(); public: // bool for_all_tables = 4 [json_name = "for_all_tables"]; void clear_for_all_tables(); bool for_all_tables() const; void set_for_all_tables(bool value); private: bool _internal_for_all_tables() const; void _internal_set_for_all_tables(bool value); public: // .pg_query.DefElemAction table_action = 5 [json_name = "tableAction"]; void clear_table_action(); ::pg_query::DefElemAction table_action() const; void set_table_action(::pg_query::DefElemAction value); private: ::pg_query::DefElemAction _internal_table_action() const; void _internal_set_table_action(::pg_query::DefElemAction value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterPublicationStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > tables_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr pubname_; bool for_all_tables_; int table_action_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateSubscriptionStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateSubscriptionStmt) */ { public: inline CreateSubscriptionStmt() : CreateSubscriptionStmt(nullptr) {} virtual ~CreateSubscriptionStmt(); CreateSubscriptionStmt(const CreateSubscriptionStmt& from); CreateSubscriptionStmt(CreateSubscriptionStmt&& from) noexcept : CreateSubscriptionStmt() { *this = ::std::move(from); } inline CreateSubscriptionStmt& operator=(const CreateSubscriptionStmt& from) { CopyFrom(from); return *this; } inline CreateSubscriptionStmt& operator=(CreateSubscriptionStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateSubscriptionStmt& default_instance(); static inline const CreateSubscriptionStmt* internal_default_instance() { return reinterpret_cast( &_CreateSubscriptionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 171; friend void swap(CreateSubscriptionStmt& a, CreateSubscriptionStmt& b) { a.Swap(&b); } inline void Swap(CreateSubscriptionStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateSubscriptionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateSubscriptionStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateSubscriptionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateSubscriptionStmt& from); void MergeFrom(const CreateSubscriptionStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateSubscriptionStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateSubscriptionStmt"; } protected: explicit CreateSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPublicationFieldNumber = 3, kOptionsFieldNumber = 4, kSubnameFieldNumber = 1, kConninfoFieldNumber = 2, }; // repeated .pg_query.Node publication = 3 [json_name = "publication"]; int publication_size() const; private: int _internal_publication_size() const; public: void clear_publication(); ::pg_query::Node* mutable_publication(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_publication(); private: const ::pg_query::Node& _internal_publication(int index) const; ::pg_query::Node* _internal_add_publication(); public: const ::pg_query::Node& publication(int index) const; ::pg_query::Node* add_publication(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& publication() const; // repeated .pg_query.Node options = 4 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string subname = 1 [json_name = "subname"]; void clear_subname(); const std::string& subname() const; void set_subname(const std::string& value); void set_subname(std::string&& value); void set_subname(const char* value); void set_subname(const char* value, size_t size); std::string* mutable_subname(); std::string* release_subname(); void set_allocated_subname(std::string* subname); private: const std::string& _internal_subname() const; void _internal_set_subname(const std::string& value); std::string* _internal_mutable_subname(); public: // string conninfo = 2 [json_name = "conninfo"]; void clear_conninfo(); const std::string& conninfo() const; void set_conninfo(const std::string& value); void set_conninfo(std::string&& value); void set_conninfo(const char* value); void set_conninfo(const char* value, size_t size); std::string* mutable_conninfo(); std::string* release_conninfo(); void set_allocated_conninfo(std::string* conninfo); private: const std::string& _internal_conninfo() const; void _internal_set_conninfo(const std::string& value); std::string* _internal_mutable_conninfo(); public: // @@protoc_insertion_point(class_scope:pg_query.CreateSubscriptionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > publication_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conninfo_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterSubscriptionStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterSubscriptionStmt) */ { public: inline AlterSubscriptionStmt() : AlterSubscriptionStmt(nullptr) {} virtual ~AlterSubscriptionStmt(); AlterSubscriptionStmt(const AlterSubscriptionStmt& from); AlterSubscriptionStmt(AlterSubscriptionStmt&& from) noexcept : AlterSubscriptionStmt() { *this = ::std::move(from); } inline AlterSubscriptionStmt& operator=(const AlterSubscriptionStmt& from) { CopyFrom(from); return *this; } inline AlterSubscriptionStmt& operator=(AlterSubscriptionStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterSubscriptionStmt& default_instance(); static inline const AlterSubscriptionStmt* internal_default_instance() { return reinterpret_cast( &_AlterSubscriptionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 172; friend void swap(AlterSubscriptionStmt& a, AlterSubscriptionStmt& b) { a.Swap(&b); } inline void Swap(AlterSubscriptionStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterSubscriptionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterSubscriptionStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterSubscriptionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterSubscriptionStmt& from); void MergeFrom(const AlterSubscriptionStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterSubscriptionStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterSubscriptionStmt"; } protected: explicit AlterSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPublicationFieldNumber = 4, kOptionsFieldNumber = 5, kSubnameFieldNumber = 2, kConninfoFieldNumber = 3, kKindFieldNumber = 1, }; // repeated .pg_query.Node publication = 4 [json_name = "publication"]; int publication_size() const; private: int _internal_publication_size() const; public: void clear_publication(); ::pg_query::Node* mutable_publication(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_publication(); private: const ::pg_query::Node& _internal_publication(int index) const; ::pg_query::Node* _internal_add_publication(); public: const ::pg_query::Node& publication(int index) const; ::pg_query::Node* add_publication(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& publication() const; // repeated .pg_query.Node options = 5 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // string subname = 2 [json_name = "subname"]; void clear_subname(); const std::string& subname() const; void set_subname(const std::string& value); void set_subname(std::string&& value); void set_subname(const char* value); void set_subname(const char* value, size_t size); std::string* mutable_subname(); std::string* release_subname(); void set_allocated_subname(std::string* subname); private: const std::string& _internal_subname() const; void _internal_set_subname(const std::string& value); std::string* _internal_mutable_subname(); public: // string conninfo = 3 [json_name = "conninfo"]; void clear_conninfo(); const std::string& conninfo() const; void set_conninfo(const std::string& value); void set_conninfo(std::string&& value); void set_conninfo(const char* value); void set_conninfo(const char* value, size_t size); std::string* mutable_conninfo(); std::string* release_conninfo(); void set_allocated_conninfo(std::string* conninfo); private: const std::string& _internal_conninfo() const; void _internal_set_conninfo(const std::string& value); std::string* _internal_mutable_conninfo(); public: // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::AlterSubscriptionType kind() const; void set_kind(::pg_query::AlterSubscriptionType value); private: ::pg_query::AlterSubscriptionType _internal_kind() const; void _internal_set_kind(::pg_query::AlterSubscriptionType value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterSubscriptionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > publication_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conninfo_; int kind_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DropSubscriptionStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DropSubscriptionStmt) */ { public: inline DropSubscriptionStmt() : DropSubscriptionStmt(nullptr) {} virtual ~DropSubscriptionStmt(); DropSubscriptionStmt(const DropSubscriptionStmt& from); DropSubscriptionStmt(DropSubscriptionStmt&& from) noexcept : DropSubscriptionStmt() { *this = ::std::move(from); } inline DropSubscriptionStmt& operator=(const DropSubscriptionStmt& from) { CopyFrom(from); return *this; } inline DropSubscriptionStmt& operator=(DropSubscriptionStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DropSubscriptionStmt& default_instance(); static inline const DropSubscriptionStmt* internal_default_instance() { return reinterpret_cast( &_DropSubscriptionStmt_default_instance_); } static constexpr int kIndexInFileMessages = 173; friend void swap(DropSubscriptionStmt& a, DropSubscriptionStmt& b) { a.Swap(&b); } inline void Swap(DropSubscriptionStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DropSubscriptionStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DropSubscriptionStmt* New() const final { return CreateMaybeMessage(nullptr); } DropSubscriptionStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DropSubscriptionStmt& from); void MergeFrom(const DropSubscriptionStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DropSubscriptionStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DropSubscriptionStmt"; } protected: explicit DropSubscriptionStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSubnameFieldNumber = 1, kMissingOkFieldNumber = 2, kBehaviorFieldNumber = 3, }; // string subname = 1 [json_name = "subname"]; void clear_subname(); const std::string& subname() const; void set_subname(const std::string& value); void set_subname(std::string&& value); void set_subname(const char* value); void set_subname(const char* value, size_t size); std::string* mutable_subname(); std::string* release_subname(); void set_allocated_subname(std::string* subname); private: const std::string& _internal_subname() const; void _internal_set_subname(const std::string& value); std::string* _internal_mutable_subname(); public: // bool missing_ok = 2 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; void clear_behavior(); ::pg_query::DropBehavior behavior() const; void set_behavior(::pg_query::DropBehavior value); private: ::pg_query::DropBehavior _internal_behavior() const; void _internal_set_behavior(::pg_query::DropBehavior value); public: // @@protoc_insertion_point(class_scope:pg_query.DropSubscriptionStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr subname_; bool missing_ok_; int behavior_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateStatsStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateStatsStmt) */ { public: inline CreateStatsStmt() : CreateStatsStmt(nullptr) {} virtual ~CreateStatsStmt(); CreateStatsStmt(const CreateStatsStmt& from); CreateStatsStmt(CreateStatsStmt&& from) noexcept : CreateStatsStmt() { *this = ::std::move(from); } inline CreateStatsStmt& operator=(const CreateStatsStmt& from) { CopyFrom(from); return *this; } inline CreateStatsStmt& operator=(CreateStatsStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateStatsStmt& default_instance(); static inline const CreateStatsStmt* internal_default_instance() { return reinterpret_cast( &_CreateStatsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 174; friend void swap(CreateStatsStmt& a, CreateStatsStmt& b) { a.Swap(&b); } inline void Swap(CreateStatsStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateStatsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateStatsStmt* New() const final { return CreateMaybeMessage(nullptr); } CreateStatsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateStatsStmt& from); void MergeFrom(const CreateStatsStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateStatsStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateStatsStmt"; } protected: explicit CreateStatsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDefnamesFieldNumber = 1, kStatTypesFieldNumber = 2, kExprsFieldNumber = 3, kRelationsFieldNumber = 4, kStxcommentFieldNumber = 5, kIfNotExistsFieldNumber = 6, }; // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; int defnames_size() const; private: int _internal_defnames_size() const; public: void clear_defnames(); ::pg_query::Node* mutable_defnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_defnames(); private: const ::pg_query::Node& _internal_defnames(int index) const; ::pg_query::Node* _internal_add_defnames(); public: const ::pg_query::Node& defnames(int index) const; ::pg_query::Node* add_defnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& defnames() const; // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; int stat_types_size() const; private: int _internal_stat_types_size() const; public: void clear_stat_types(); ::pg_query::Node* mutable_stat_types(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_stat_types(); private: const ::pg_query::Node& _internal_stat_types(int index) const; ::pg_query::Node* _internal_add_stat_types(); public: const ::pg_query::Node& stat_types(int index) const; ::pg_query::Node* add_stat_types(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& stat_types() const; // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; int exprs_size() const; private: int _internal_exprs_size() const; public: void clear_exprs(); ::pg_query::Node* mutable_exprs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_exprs(); private: const ::pg_query::Node& _internal_exprs(int index) const; ::pg_query::Node* _internal_add_exprs(); public: const ::pg_query::Node& exprs(int index) const; ::pg_query::Node* add_exprs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& exprs() const; // repeated .pg_query.Node relations = 4 [json_name = "relations"]; int relations_size() const; private: int _internal_relations_size() const; public: void clear_relations(); ::pg_query::Node* mutable_relations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_relations(); private: const ::pg_query::Node& _internal_relations(int index) const; ::pg_query::Node* _internal_add_relations(); public: const ::pg_query::Node& relations(int index) const; ::pg_query::Node* add_relations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& relations() const; // string stxcomment = 5 [json_name = "stxcomment"]; void clear_stxcomment(); const std::string& stxcomment() const; void set_stxcomment(const std::string& value); void set_stxcomment(std::string&& value); void set_stxcomment(const char* value); void set_stxcomment(const char* value, size_t size); std::string* mutable_stxcomment(); std::string* release_stxcomment(); void set_allocated_stxcomment(std::string* stxcomment); private: const std::string& _internal_stxcomment() const; void _internal_set_stxcomment(const std::string& value); std::string* _internal_mutable_stxcomment(); public: // bool if_not_exists = 6 [json_name = "if_not_exists"]; void clear_if_not_exists(); bool if_not_exists() const; void set_if_not_exists(bool value); private: bool _internal_if_not_exists() const; void _internal_set_if_not_exists(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateStatsStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > defnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > stat_types_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > exprs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > relations_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr stxcomment_; bool if_not_exists_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterCollationStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterCollationStmt) */ { public: inline AlterCollationStmt() : AlterCollationStmt(nullptr) {} virtual ~AlterCollationStmt(); AlterCollationStmt(const AlterCollationStmt& from); AlterCollationStmt(AlterCollationStmt&& from) noexcept : AlterCollationStmt() { *this = ::std::move(from); } inline AlterCollationStmt& operator=(const AlterCollationStmt& from) { CopyFrom(from); return *this; } inline AlterCollationStmt& operator=(AlterCollationStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterCollationStmt& default_instance(); static inline const AlterCollationStmt* internal_default_instance() { return reinterpret_cast( &_AlterCollationStmt_default_instance_); } static constexpr int kIndexInFileMessages = 175; friend void swap(AlterCollationStmt& a, AlterCollationStmt& b) { a.Swap(&b); } inline void Swap(AlterCollationStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterCollationStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterCollationStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterCollationStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterCollationStmt& from); void MergeFrom(const AlterCollationStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterCollationStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterCollationStmt"; } protected: explicit AlterCollationStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCollnameFieldNumber = 1, }; // repeated .pg_query.Node collname = 1 [json_name = "collname"]; int collname_size() const; private: int _internal_collname_size() const; public: void clear_collname(); ::pg_query::Node* mutable_collname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_collname(); private: const ::pg_query::Node& _internal_collname(int index) const; ::pg_query::Node* _internal_add_collname(); public: const ::pg_query::Node& collname(int index) const; ::pg_query::Node* add_collname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& collname() const; // @@protoc_insertion_point(class_scope:pg_query.AlterCollationStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collname_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CallStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CallStmt) */ { public: inline CallStmt() : CallStmt(nullptr) {} virtual ~CallStmt(); CallStmt(const CallStmt& from); CallStmt(CallStmt&& from) noexcept : CallStmt() { *this = ::std::move(from); } inline CallStmt& operator=(const CallStmt& from) { CopyFrom(from); return *this; } inline CallStmt& operator=(CallStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CallStmt& default_instance(); static inline const CallStmt* internal_default_instance() { return reinterpret_cast( &_CallStmt_default_instance_); } static constexpr int kIndexInFileMessages = 176; friend void swap(CallStmt& a, CallStmt& b) { a.Swap(&b); } inline void Swap(CallStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CallStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CallStmt* New() const final { return CreateMaybeMessage(nullptr); } CallStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CallStmt& from); void MergeFrom(const CallStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CallStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CallStmt"; } protected: explicit CallStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFunccallFieldNumber = 1, kFuncexprFieldNumber = 2, }; // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; bool has_funccall() const; private: bool _internal_has_funccall() const; public: void clear_funccall(); const ::pg_query::FuncCall& funccall() const; ::pg_query::FuncCall* release_funccall(); ::pg_query::FuncCall* mutable_funccall(); void set_allocated_funccall(::pg_query::FuncCall* funccall); private: const ::pg_query::FuncCall& _internal_funccall() const; ::pg_query::FuncCall* _internal_mutable_funccall(); public: void unsafe_arena_set_allocated_funccall( ::pg_query::FuncCall* funccall); ::pg_query::FuncCall* unsafe_arena_release_funccall(); // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; bool has_funcexpr() const; private: bool _internal_has_funcexpr() const; public: void clear_funcexpr(); const ::pg_query::FuncExpr& funcexpr() const; ::pg_query::FuncExpr* release_funcexpr(); ::pg_query::FuncExpr* mutable_funcexpr(); void set_allocated_funcexpr(::pg_query::FuncExpr* funcexpr); private: const ::pg_query::FuncExpr& _internal_funcexpr() const; ::pg_query::FuncExpr* _internal_mutable_funcexpr(); public: void unsafe_arena_set_allocated_funcexpr( ::pg_query::FuncExpr* funcexpr); ::pg_query::FuncExpr* unsafe_arena_release_funcexpr(); // @@protoc_insertion_point(class_scope:pg_query.CallStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::FuncCall* funccall_; ::pg_query::FuncExpr* funcexpr_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AlterStatsStmt PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AlterStatsStmt) */ { public: inline AlterStatsStmt() : AlterStatsStmt(nullptr) {} virtual ~AlterStatsStmt(); AlterStatsStmt(const AlterStatsStmt& from); AlterStatsStmt(AlterStatsStmt&& from) noexcept : AlterStatsStmt() { *this = ::std::move(from); } inline AlterStatsStmt& operator=(const AlterStatsStmt& from) { CopyFrom(from); return *this; } inline AlterStatsStmt& operator=(AlterStatsStmt&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AlterStatsStmt& default_instance(); static inline const AlterStatsStmt* internal_default_instance() { return reinterpret_cast( &_AlterStatsStmt_default_instance_); } static constexpr int kIndexInFileMessages = 177; friend void swap(AlterStatsStmt& a, AlterStatsStmt& b) { a.Swap(&b); } inline void Swap(AlterStatsStmt* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AlterStatsStmt* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AlterStatsStmt* New() const final { return CreateMaybeMessage(nullptr); } AlterStatsStmt* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AlterStatsStmt& from); void MergeFrom(const AlterStatsStmt& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AlterStatsStmt* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AlterStatsStmt"; } protected: explicit AlterStatsStmt(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDefnamesFieldNumber = 1, kStxstattargetFieldNumber = 2, kMissingOkFieldNumber = 3, }; // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; int defnames_size() const; private: int _internal_defnames_size() const; public: void clear_defnames(); ::pg_query::Node* mutable_defnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_defnames(); private: const ::pg_query::Node& _internal_defnames(int index) const; ::pg_query::Node* _internal_add_defnames(); public: const ::pg_query::Node& defnames(int index) const; ::pg_query::Node* add_defnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& defnames() const; // int32 stxstattarget = 2 [json_name = "stxstattarget"]; void clear_stxstattarget(); ::PROTOBUF_NAMESPACE_ID::int32 stxstattarget() const; void set_stxstattarget(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_stxstattarget() const; void _internal_set_stxstattarget(::PROTOBUF_NAMESPACE_ID::int32 value); public: // bool missing_ok = 3 [json_name = "missing_ok"]; void clear_missing_ok(); bool missing_ok() const; void set_missing_ok(bool value); private: bool _internal_missing_ok() const; void _internal_set_missing_ok(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.AlterStatsStmt) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > defnames_; ::PROTOBUF_NAMESPACE_ID::int32 stxstattarget_; bool missing_ok_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_Expr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Expr) */ { public: inline A_Expr() : A_Expr(nullptr) {} virtual ~A_Expr(); A_Expr(const A_Expr& from); A_Expr(A_Expr&& from) noexcept : A_Expr() { *this = ::std::move(from); } inline A_Expr& operator=(const A_Expr& from) { CopyFrom(from); return *this; } inline A_Expr& operator=(A_Expr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const A_Expr& default_instance(); static inline const A_Expr* internal_default_instance() { return reinterpret_cast( &_A_Expr_default_instance_); } static constexpr int kIndexInFileMessages = 178; friend void swap(A_Expr& a, A_Expr& b) { a.Swap(&b); } inline void Swap(A_Expr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Expr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline A_Expr* New() const final { return CreateMaybeMessage(nullptr); } A_Expr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const A_Expr& from); void MergeFrom(const A_Expr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_Expr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_Expr"; } protected: explicit A_Expr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 2, kLexprFieldNumber = 3, kRexprFieldNumber = 4, kKindFieldNumber = 1, kLocationFieldNumber = 5, }; // repeated .pg_query.Node name = 2 [json_name = "name"]; int name_size() const; private: int _internal_name_size() const; public: void clear_name(); ::pg_query::Node* mutable_name(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_name(); private: const ::pg_query::Node& _internal_name(int index) const; ::pg_query::Node* _internal_add_name(); public: const ::pg_query::Node& name(int index) const; ::pg_query::Node* add_name(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& name() const; // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; bool has_lexpr() const; private: bool _internal_has_lexpr() const; public: void clear_lexpr(); const ::pg_query::Node& lexpr() const; ::pg_query::Node* release_lexpr(); ::pg_query::Node* mutable_lexpr(); void set_allocated_lexpr(::pg_query::Node* lexpr); private: const ::pg_query::Node& _internal_lexpr() const; ::pg_query::Node* _internal_mutable_lexpr(); public: void unsafe_arena_set_allocated_lexpr( ::pg_query::Node* lexpr); ::pg_query::Node* unsafe_arena_release_lexpr(); // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; bool has_rexpr() const; private: bool _internal_has_rexpr() const; public: void clear_rexpr(); const ::pg_query::Node& rexpr() const; ::pg_query::Node* release_rexpr(); ::pg_query::Node* mutable_rexpr(); void set_allocated_rexpr(::pg_query::Node* rexpr); private: const ::pg_query::Node& _internal_rexpr() const; ::pg_query::Node* _internal_mutable_rexpr(); public: void unsafe_arena_set_allocated_rexpr( ::pg_query::Node* rexpr); ::pg_query::Node* unsafe_arena_release_rexpr(); // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::A_Expr_Kind kind() const; void set_kind(::pg_query::A_Expr_Kind value); private: ::pg_query::A_Expr_Kind _internal_kind() const; void _internal_set_kind(::pg_query::A_Expr_Kind value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.A_Expr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > name_; ::pg_query::Node* lexpr_; ::pg_query::Node* rexpr_; int kind_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ColumnRef PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ColumnRef) */ { public: inline ColumnRef() : ColumnRef(nullptr) {} virtual ~ColumnRef(); ColumnRef(const ColumnRef& from); ColumnRef(ColumnRef&& from) noexcept : ColumnRef() { *this = ::std::move(from); } inline ColumnRef& operator=(const ColumnRef& from) { CopyFrom(from); return *this; } inline ColumnRef& operator=(ColumnRef&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ColumnRef& default_instance(); static inline const ColumnRef* internal_default_instance() { return reinterpret_cast( &_ColumnRef_default_instance_); } static constexpr int kIndexInFileMessages = 179; friend void swap(ColumnRef& a, ColumnRef& b) { a.Swap(&b); } inline void Swap(ColumnRef* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ColumnRef* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ColumnRef* New() const final { return CreateMaybeMessage(nullptr); } ColumnRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ColumnRef& from); void MergeFrom(const ColumnRef& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ColumnRef* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ColumnRef"; } protected: explicit ColumnRef(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFieldsFieldNumber = 1, kLocationFieldNumber = 2, }; // repeated .pg_query.Node fields = 1 [json_name = "fields"]; int fields_size() const; private: int _internal_fields_size() const; public: void clear_fields(); ::pg_query::Node* mutable_fields(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fields(); private: const ::pg_query::Node& _internal_fields(int index) const; ::pg_query::Node* _internal_add_fields(); public: const ::pg_query::Node& fields(int index) const; ::pg_query::Node* add_fields(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fields() const; // int32 location = 2 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ColumnRef) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fields_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ParamRef PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ParamRef) */ { public: inline ParamRef() : ParamRef(nullptr) {} virtual ~ParamRef(); ParamRef(const ParamRef& from); ParamRef(ParamRef&& from) noexcept : ParamRef() { *this = ::std::move(from); } inline ParamRef& operator=(const ParamRef& from) { CopyFrom(from); return *this; } inline ParamRef& operator=(ParamRef&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ParamRef& default_instance(); static inline const ParamRef* internal_default_instance() { return reinterpret_cast( &_ParamRef_default_instance_); } static constexpr int kIndexInFileMessages = 180; friend void swap(ParamRef& a, ParamRef& b) { a.Swap(&b); } inline void Swap(ParamRef* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ParamRef* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ParamRef* New() const final { return CreateMaybeMessage(nullptr); } ParamRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ParamRef& from); void MergeFrom(const ParamRef& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ParamRef* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ParamRef"; } protected: explicit ParamRef(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNumberFieldNumber = 1, kLocationFieldNumber = 2, }; // int32 number = 1 [json_name = "number"]; void clear_number(); ::PROTOBUF_NAMESPACE_ID::int32 number() const; void set_number(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_number() const; void _internal_set_number(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 location = 2 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ParamRef) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::int32 number_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_Const PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Const) */ { public: inline A_Const() : A_Const(nullptr) {} virtual ~A_Const(); A_Const(const A_Const& from); A_Const(A_Const&& from) noexcept : A_Const() { *this = ::std::move(from); } inline A_Const& operator=(const A_Const& from) { CopyFrom(from); return *this; } inline A_Const& operator=(A_Const&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const A_Const& default_instance(); static inline const A_Const* internal_default_instance() { return reinterpret_cast( &_A_Const_default_instance_); } static constexpr int kIndexInFileMessages = 181; friend void swap(A_Const& a, A_Const& b) { a.Swap(&b); } inline void Swap(A_Const* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Const* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline A_Const* New() const final { return CreateMaybeMessage(nullptr); } A_Const* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const A_Const& from); void MergeFrom(const A_Const& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_Const* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_Const"; } protected: explicit A_Const(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kValFieldNumber = 1, kLocationFieldNumber = 2, }; // .pg_query.Node val = 1 [json_name = "val"]; bool has_val() const; private: bool _internal_has_val() const; public: void clear_val(); const ::pg_query::Node& val() const; ::pg_query::Node* release_val(); ::pg_query::Node* mutable_val(); void set_allocated_val(::pg_query::Node* val); private: const ::pg_query::Node& _internal_val() const; ::pg_query::Node* _internal_mutable_val(); public: void unsafe_arena_set_allocated_val( ::pg_query::Node* val); ::pg_query::Node* unsafe_arena_release_val(); // int32 location = 2 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.A_Const) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* val_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FuncCall PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FuncCall) */ { public: inline FuncCall() : FuncCall(nullptr) {} virtual ~FuncCall(); FuncCall(const FuncCall& from); FuncCall(FuncCall&& from) noexcept : FuncCall() { *this = ::std::move(from); } inline FuncCall& operator=(const FuncCall& from) { CopyFrom(from); return *this; } inline FuncCall& operator=(FuncCall&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const FuncCall& default_instance(); static inline const FuncCall* internal_default_instance() { return reinterpret_cast( &_FuncCall_default_instance_); } static constexpr int kIndexInFileMessages = 182; friend void swap(FuncCall& a, FuncCall& b) { a.Swap(&b); } inline void Swap(FuncCall* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FuncCall* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline FuncCall* New() const final { return CreateMaybeMessage(nullptr); } FuncCall* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const FuncCall& from); void MergeFrom(const FuncCall& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FuncCall* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FuncCall"; } protected: explicit FuncCall(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFuncnameFieldNumber = 1, kArgsFieldNumber = 2, kAggOrderFieldNumber = 3, kAggFilterFieldNumber = 4, kOverFieldNumber = 9, kAggWithinGroupFieldNumber = 5, kAggStarFieldNumber = 6, kAggDistinctFieldNumber = 7, kFuncVariadicFieldNumber = 8, kLocationFieldNumber = 10, }; // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; int funcname_size() const; private: int _internal_funcname_size() const; public: void clear_funcname(); ::pg_query::Node* mutable_funcname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funcname(); private: const ::pg_query::Node& _internal_funcname(int index) const; ::pg_query::Node* _internal_add_funcname(); public: const ::pg_query::Node& funcname(int index) const; ::pg_query::Node* add_funcname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funcname() const; // repeated .pg_query.Node args = 2 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; int agg_order_size() const; private: int _internal_agg_order_size() const; public: void clear_agg_order(); ::pg_query::Node* mutable_agg_order(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_agg_order(); private: const ::pg_query::Node& _internal_agg_order(int index) const; ::pg_query::Node* _internal_add_agg_order(); public: const ::pg_query::Node& agg_order(int index) const; ::pg_query::Node* add_agg_order(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& agg_order() const; // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; bool has_agg_filter() const; private: bool _internal_has_agg_filter() const; public: void clear_agg_filter(); const ::pg_query::Node& agg_filter() const; ::pg_query::Node* release_agg_filter(); ::pg_query::Node* mutable_agg_filter(); void set_allocated_agg_filter(::pg_query::Node* agg_filter); private: const ::pg_query::Node& _internal_agg_filter() const; ::pg_query::Node* _internal_mutable_agg_filter(); public: void unsafe_arena_set_allocated_agg_filter( ::pg_query::Node* agg_filter); ::pg_query::Node* unsafe_arena_release_agg_filter(); // .pg_query.WindowDef over = 9 [json_name = "over"]; bool has_over() const; private: bool _internal_has_over() const; public: void clear_over(); const ::pg_query::WindowDef& over() const; ::pg_query::WindowDef* release_over(); ::pg_query::WindowDef* mutable_over(); void set_allocated_over(::pg_query::WindowDef* over); private: const ::pg_query::WindowDef& _internal_over() const; ::pg_query::WindowDef* _internal_mutable_over(); public: void unsafe_arena_set_allocated_over( ::pg_query::WindowDef* over); ::pg_query::WindowDef* unsafe_arena_release_over(); // bool agg_within_group = 5 [json_name = "agg_within_group"]; void clear_agg_within_group(); bool agg_within_group() const; void set_agg_within_group(bool value); private: bool _internal_agg_within_group() const; void _internal_set_agg_within_group(bool value); public: // bool agg_star = 6 [json_name = "agg_star"]; void clear_agg_star(); bool agg_star() const; void set_agg_star(bool value); private: bool _internal_agg_star() const; void _internal_set_agg_star(bool value); public: // bool agg_distinct = 7 [json_name = "agg_distinct"]; void clear_agg_distinct(); bool agg_distinct() const; void set_agg_distinct(bool value); private: bool _internal_agg_distinct() const; void _internal_set_agg_distinct(bool value); public: // bool func_variadic = 8 [json_name = "func_variadic"]; void clear_func_variadic(); bool func_variadic() const; void set_func_variadic(bool value); private: bool _internal_func_variadic() const; void _internal_set_func_variadic(bool value); public: // int32 location = 10 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.FuncCall) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funcname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > agg_order_; ::pg_query::Node* agg_filter_; ::pg_query::WindowDef* over_; bool agg_within_group_; bool agg_star_; bool agg_distinct_; bool func_variadic_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_Star PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Star) */ { public: inline A_Star() : A_Star(nullptr) {} virtual ~A_Star(); A_Star(const A_Star& from); A_Star(A_Star&& from) noexcept : A_Star() { *this = ::std::move(from); } inline A_Star& operator=(const A_Star& from) { CopyFrom(from); return *this; } inline A_Star& operator=(A_Star&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const A_Star& default_instance(); static inline const A_Star* internal_default_instance() { return reinterpret_cast( &_A_Star_default_instance_); } static constexpr int kIndexInFileMessages = 183; friend void swap(A_Star& a, A_Star& b) { a.Swap(&b); } inline void Swap(A_Star* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Star* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline A_Star* New() const final { return CreateMaybeMessage(nullptr); } A_Star* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const A_Star& from); void MergeFrom(const A_Star& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_Star* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_Star"; } protected: explicit A_Star(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- // @@protoc_insertion_point(class_scope:pg_query.A_Star) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_Indices PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Indices) */ { public: inline A_Indices() : A_Indices(nullptr) {} virtual ~A_Indices(); A_Indices(const A_Indices& from); A_Indices(A_Indices&& from) noexcept : A_Indices() { *this = ::std::move(from); } inline A_Indices& operator=(const A_Indices& from) { CopyFrom(from); return *this; } inline A_Indices& operator=(A_Indices&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const A_Indices& default_instance(); static inline const A_Indices* internal_default_instance() { return reinterpret_cast( &_A_Indices_default_instance_); } static constexpr int kIndexInFileMessages = 184; friend void swap(A_Indices& a, A_Indices& b) { a.Swap(&b); } inline void Swap(A_Indices* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Indices* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline A_Indices* New() const final { return CreateMaybeMessage(nullptr); } A_Indices* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const A_Indices& from); void MergeFrom(const A_Indices& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_Indices* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_Indices"; } protected: explicit A_Indices(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kLidxFieldNumber = 2, kUidxFieldNumber = 3, kIsSliceFieldNumber = 1, }; // .pg_query.Node lidx = 2 [json_name = "lidx"]; bool has_lidx() const; private: bool _internal_has_lidx() const; public: void clear_lidx(); const ::pg_query::Node& lidx() const; ::pg_query::Node* release_lidx(); ::pg_query::Node* mutable_lidx(); void set_allocated_lidx(::pg_query::Node* lidx); private: const ::pg_query::Node& _internal_lidx() const; ::pg_query::Node* _internal_mutable_lidx(); public: void unsafe_arena_set_allocated_lidx( ::pg_query::Node* lidx); ::pg_query::Node* unsafe_arena_release_lidx(); // .pg_query.Node uidx = 3 [json_name = "uidx"]; bool has_uidx() const; private: bool _internal_has_uidx() const; public: void clear_uidx(); const ::pg_query::Node& uidx() const; ::pg_query::Node* release_uidx(); ::pg_query::Node* mutable_uidx(); void set_allocated_uidx(::pg_query::Node* uidx); private: const ::pg_query::Node& _internal_uidx() const; ::pg_query::Node* _internal_mutable_uidx(); public: void unsafe_arena_set_allocated_uidx( ::pg_query::Node* uidx); ::pg_query::Node* unsafe_arena_release_uidx(); // bool is_slice = 1 [json_name = "is_slice"]; void clear_is_slice(); bool is_slice() const; void set_is_slice(bool value); private: bool _internal_is_slice() const; void _internal_set_is_slice(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.A_Indices) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* lidx_; ::pg_query::Node* uidx_; bool is_slice_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_Indirection PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_Indirection) */ { public: inline A_Indirection() : A_Indirection(nullptr) {} virtual ~A_Indirection(); A_Indirection(const A_Indirection& from); A_Indirection(A_Indirection&& from) noexcept : A_Indirection() { *this = ::std::move(from); } inline A_Indirection& operator=(const A_Indirection& from) { CopyFrom(from); return *this; } inline A_Indirection& operator=(A_Indirection&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const A_Indirection& default_instance(); static inline const A_Indirection* internal_default_instance() { return reinterpret_cast( &_A_Indirection_default_instance_); } static constexpr int kIndexInFileMessages = 185; friend void swap(A_Indirection& a, A_Indirection& b) { a.Swap(&b); } inline void Swap(A_Indirection* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_Indirection* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline A_Indirection* New() const final { return CreateMaybeMessage(nullptr); } A_Indirection* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const A_Indirection& from); void MergeFrom(const A_Indirection& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_Indirection* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_Indirection"; } protected: explicit A_Indirection(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kIndirectionFieldNumber = 2, kArgFieldNumber = 1, }; // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; int indirection_size() const; private: int _internal_indirection_size() const; public: void clear_indirection(); ::pg_query::Node* mutable_indirection(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_indirection(); private: const ::pg_query::Node& _internal_indirection(int index) const; ::pg_query::Node* _internal_add_indirection(); public: const ::pg_query::Node& indirection(int index) const; ::pg_query::Node* add_indirection(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& indirection() const; // .pg_query.Node arg = 1 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // @@protoc_insertion_point(class_scope:pg_query.A_Indirection) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > indirection_; ::pg_query::Node* arg_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class A_ArrayExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.A_ArrayExpr) */ { public: inline A_ArrayExpr() : A_ArrayExpr(nullptr) {} virtual ~A_ArrayExpr(); A_ArrayExpr(const A_ArrayExpr& from); A_ArrayExpr(A_ArrayExpr&& from) noexcept : A_ArrayExpr() { *this = ::std::move(from); } inline A_ArrayExpr& operator=(const A_ArrayExpr& from) { CopyFrom(from); return *this; } inline A_ArrayExpr& operator=(A_ArrayExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const A_ArrayExpr& default_instance(); static inline const A_ArrayExpr* internal_default_instance() { return reinterpret_cast( &_A_ArrayExpr_default_instance_); } static constexpr int kIndexInFileMessages = 186; friend void swap(A_ArrayExpr& a, A_ArrayExpr& b) { a.Swap(&b); } inline void Swap(A_ArrayExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(A_ArrayExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline A_ArrayExpr* New() const final { return CreateMaybeMessage(nullptr); } A_ArrayExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const A_ArrayExpr& from); void MergeFrom(const A_ArrayExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(A_ArrayExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.A_ArrayExpr"; } protected: explicit A_ArrayExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kElementsFieldNumber = 1, kLocationFieldNumber = 2, }; // repeated .pg_query.Node elements = 1 [json_name = "elements"]; int elements_size() const; private: int _internal_elements_size() const; public: void clear_elements(); ::pg_query::Node* mutable_elements(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_elements(); private: const ::pg_query::Node& _internal_elements(int index) const; ::pg_query::Node* _internal_add_elements(); public: const ::pg_query::Node& elements(int index) const; ::pg_query::Node* add_elements(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& elements() const; // int32 location = 2 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.A_ArrayExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > elements_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ResTarget PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ResTarget) */ { public: inline ResTarget() : ResTarget(nullptr) {} virtual ~ResTarget(); ResTarget(const ResTarget& from); ResTarget(ResTarget&& from) noexcept : ResTarget() { *this = ::std::move(from); } inline ResTarget& operator=(const ResTarget& from) { CopyFrom(from); return *this; } inline ResTarget& operator=(ResTarget&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ResTarget& default_instance(); static inline const ResTarget* internal_default_instance() { return reinterpret_cast( &_ResTarget_default_instance_); } static constexpr int kIndexInFileMessages = 187; friend void swap(ResTarget& a, ResTarget& b) { a.Swap(&b); } inline void Swap(ResTarget* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ResTarget* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ResTarget* New() const final { return CreateMaybeMessage(nullptr); } ResTarget* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ResTarget& from); void MergeFrom(const ResTarget& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ResTarget* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ResTarget"; } protected: explicit ResTarget(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kIndirectionFieldNumber = 2, kNameFieldNumber = 1, kValFieldNumber = 3, kLocationFieldNumber = 4, }; // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; int indirection_size() const; private: int _internal_indirection_size() const; public: void clear_indirection(); ::pg_query::Node* mutable_indirection(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_indirection(); private: const ::pg_query::Node& _internal_indirection(int index) const; ::pg_query::Node* _internal_add_indirection(); public: const ::pg_query::Node& indirection(int index) const; ::pg_query::Node* add_indirection(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& indirection() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.Node val = 3 [json_name = "val"]; bool has_val() const; private: bool _internal_has_val() const; public: void clear_val(); const ::pg_query::Node& val() const; ::pg_query::Node* release_val(); ::pg_query::Node* mutable_val(); void set_allocated_val(::pg_query::Node* val); private: const ::pg_query::Node& _internal_val() const; ::pg_query::Node* _internal_mutable_val(); public: void unsafe_arena_set_allocated_val( ::pg_query::Node* val); ::pg_query::Node* unsafe_arena_release_val(); // int32 location = 4 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ResTarget) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > indirection_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* val_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class MultiAssignRef PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.MultiAssignRef) */ { public: inline MultiAssignRef() : MultiAssignRef(nullptr) {} virtual ~MultiAssignRef(); MultiAssignRef(const MultiAssignRef& from); MultiAssignRef(MultiAssignRef&& from) noexcept : MultiAssignRef() { *this = ::std::move(from); } inline MultiAssignRef& operator=(const MultiAssignRef& from) { CopyFrom(from); return *this; } inline MultiAssignRef& operator=(MultiAssignRef&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const MultiAssignRef& default_instance(); static inline const MultiAssignRef* internal_default_instance() { return reinterpret_cast( &_MultiAssignRef_default_instance_); } static constexpr int kIndexInFileMessages = 188; friend void swap(MultiAssignRef& a, MultiAssignRef& b) { a.Swap(&b); } inline void Swap(MultiAssignRef* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(MultiAssignRef* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline MultiAssignRef* New() const final { return CreateMaybeMessage(nullptr); } MultiAssignRef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const MultiAssignRef& from); void MergeFrom(const MultiAssignRef& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(MultiAssignRef* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.MultiAssignRef"; } protected: explicit MultiAssignRef(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSourceFieldNumber = 1, kColnoFieldNumber = 2, kNcolumnsFieldNumber = 3, }; // .pg_query.Node source = 1 [json_name = "source"]; bool has_source() const; private: bool _internal_has_source() const; public: void clear_source(); const ::pg_query::Node& source() const; ::pg_query::Node* release_source(); ::pg_query::Node* mutable_source(); void set_allocated_source(::pg_query::Node* source); private: const ::pg_query::Node& _internal_source() const; ::pg_query::Node* _internal_mutable_source(); public: void unsafe_arena_set_allocated_source( ::pg_query::Node* source); ::pg_query::Node* unsafe_arena_release_source(); // int32 colno = 2 [json_name = "colno"]; void clear_colno(); ::PROTOBUF_NAMESPACE_ID::int32 colno() const; void set_colno(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_colno() const; void _internal_set_colno(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 ncolumns = 3 [json_name = "ncolumns"]; void clear_ncolumns(); ::PROTOBUF_NAMESPACE_ID::int32 ncolumns() const; void set_ncolumns(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_ncolumns() const; void _internal_set_ncolumns(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.MultiAssignRef) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* source_; ::PROTOBUF_NAMESPACE_ID::int32 colno_; ::PROTOBUF_NAMESPACE_ID::int32 ncolumns_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TypeCast PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TypeCast) */ { public: inline TypeCast() : TypeCast(nullptr) {} virtual ~TypeCast(); TypeCast(const TypeCast& from); TypeCast(TypeCast&& from) noexcept : TypeCast() { *this = ::std::move(from); } inline TypeCast& operator=(const TypeCast& from) { CopyFrom(from); return *this; } inline TypeCast& operator=(TypeCast&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const TypeCast& default_instance(); static inline const TypeCast* internal_default_instance() { return reinterpret_cast( &_TypeCast_default_instance_); } static constexpr int kIndexInFileMessages = 189; friend void swap(TypeCast& a, TypeCast& b) { a.Swap(&b); } inline void Swap(TypeCast* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TypeCast* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline TypeCast* New() const final { return CreateMaybeMessage(nullptr); } TypeCast* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const TypeCast& from); void MergeFrom(const TypeCast& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TypeCast* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TypeCast"; } protected: explicit TypeCast(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgFieldNumber = 1, kTypeNameFieldNumber = 2, kLocationFieldNumber = 3, }; // .pg_query.Node arg = 1 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; bool has_type_name() const; private: bool _internal_has_type_name() const; public: void clear_type_name(); const ::pg_query::TypeName& type_name() const; ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // int32 location = 3 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.TypeCast) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* arg_; ::pg_query::TypeName* type_name_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CollateClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CollateClause) */ { public: inline CollateClause() : CollateClause(nullptr) {} virtual ~CollateClause(); CollateClause(const CollateClause& from); CollateClause(CollateClause&& from) noexcept : CollateClause() { *this = ::std::move(from); } inline CollateClause& operator=(const CollateClause& from) { CopyFrom(from); return *this; } inline CollateClause& operator=(CollateClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CollateClause& default_instance(); static inline const CollateClause* internal_default_instance() { return reinterpret_cast( &_CollateClause_default_instance_); } static constexpr int kIndexInFileMessages = 190; friend void swap(CollateClause& a, CollateClause& b) { a.Swap(&b); } inline void Swap(CollateClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CollateClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CollateClause* New() const final { return CreateMaybeMessage(nullptr); } CollateClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CollateClause& from); void MergeFrom(const CollateClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CollateClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CollateClause"; } protected: explicit CollateClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCollnameFieldNumber = 2, kArgFieldNumber = 1, kLocationFieldNumber = 3, }; // repeated .pg_query.Node collname = 2 [json_name = "collname"]; int collname_size() const; private: int _internal_collname_size() const; public: void clear_collname(); ::pg_query::Node* mutable_collname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_collname(); private: const ::pg_query::Node& _internal_collname(int index) const; ::pg_query::Node* _internal_add_collname(); public: const ::pg_query::Node& collname(int index) const; ::pg_query::Node* add_collname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& collname() const; // .pg_query.Node arg = 1 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // int32 location = 3 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CollateClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collname_; ::pg_query::Node* arg_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SortBy PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SortBy) */ { public: inline SortBy() : SortBy(nullptr) {} virtual ~SortBy(); SortBy(const SortBy& from); SortBy(SortBy&& from) noexcept : SortBy() { *this = ::std::move(from); } inline SortBy& operator=(const SortBy& from) { CopyFrom(from); return *this; } inline SortBy& operator=(SortBy&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const SortBy& default_instance(); static inline const SortBy* internal_default_instance() { return reinterpret_cast( &_SortBy_default_instance_); } static constexpr int kIndexInFileMessages = 191; friend void swap(SortBy& a, SortBy& b) { a.Swap(&b); } inline void Swap(SortBy* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SortBy* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline SortBy* New() const final { return CreateMaybeMessage(nullptr); } SortBy* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const SortBy& from); void MergeFrom(const SortBy& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SortBy* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SortBy"; } protected: explicit SortBy(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kUseOpFieldNumber = 4, kNodeFieldNumber = 1, kSortbyDirFieldNumber = 2, kSortbyNullsFieldNumber = 3, kLocationFieldNumber = 5, }; // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; int use_op_size() const; private: int _internal_use_op_size() const; public: void clear_use_op(); ::pg_query::Node* mutable_use_op(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_use_op(); private: const ::pg_query::Node& _internal_use_op(int index) const; ::pg_query::Node* _internal_add_use_op(); public: const ::pg_query::Node& use_op(int index) const; ::pg_query::Node* add_use_op(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& use_op() const; // .pg_query.Node node = 1 [json_name = "node"]; bool has_node() const; private: bool _internal_has_node() const; public: void clear_node(); const ::pg_query::Node& node() const; ::pg_query::Node* release_node(); ::pg_query::Node* mutable_node(); void set_allocated_node(::pg_query::Node* node); private: const ::pg_query::Node& _internal_node() const; ::pg_query::Node* _internal_mutable_node(); public: void unsafe_arena_set_allocated_node( ::pg_query::Node* node); ::pg_query::Node* unsafe_arena_release_node(); // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; void clear_sortby_dir(); ::pg_query::SortByDir sortby_dir() const; void set_sortby_dir(::pg_query::SortByDir value); private: ::pg_query::SortByDir _internal_sortby_dir() const; void _internal_set_sortby_dir(::pg_query::SortByDir value); public: // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; void clear_sortby_nulls(); ::pg_query::SortByNulls sortby_nulls() const; void set_sortby_nulls(::pg_query::SortByNulls value); private: ::pg_query::SortByNulls _internal_sortby_nulls() const; void _internal_set_sortby_nulls(::pg_query::SortByNulls value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.SortBy) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > use_op_; ::pg_query::Node* node_; int sortby_dir_; int sortby_nulls_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class WindowDef PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowDef) */ { public: inline WindowDef() : WindowDef(nullptr) {} virtual ~WindowDef(); WindowDef(const WindowDef& from); WindowDef(WindowDef&& from) noexcept : WindowDef() { *this = ::std::move(from); } inline WindowDef& operator=(const WindowDef& from) { CopyFrom(from); return *this; } inline WindowDef& operator=(WindowDef&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const WindowDef& default_instance(); static inline const WindowDef* internal_default_instance() { return reinterpret_cast( &_WindowDef_default_instance_); } static constexpr int kIndexInFileMessages = 192; friend void swap(WindowDef& a, WindowDef& b) { a.Swap(&b); } inline void Swap(WindowDef* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WindowDef* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline WindowDef* New() const final { return CreateMaybeMessage(nullptr); } WindowDef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const WindowDef& from); void MergeFrom(const WindowDef& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(WindowDef* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.WindowDef"; } protected: explicit WindowDef(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPartitionClauseFieldNumber = 3, kOrderClauseFieldNumber = 4, kNameFieldNumber = 1, kRefnameFieldNumber = 2, kStartOffsetFieldNumber = 6, kEndOffsetFieldNumber = 7, kFrameOptionsFieldNumber = 5, kLocationFieldNumber = 8, }; // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; int partition_clause_size() const; private: int _internal_partition_clause_size() const; public: void clear_partition_clause(); ::pg_query::Node* mutable_partition_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_partition_clause(); private: const ::pg_query::Node& _internal_partition_clause(int index) const; ::pg_query::Node* _internal_add_partition_clause(); public: const ::pg_query::Node& partition_clause(int index) const; ::pg_query::Node* add_partition_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& partition_clause() const; // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; int order_clause_size() const; private: int _internal_order_clause_size() const; public: void clear_order_clause(); ::pg_query::Node* mutable_order_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_order_clause(); private: const ::pg_query::Node& _internal_order_clause(int index) const; ::pg_query::Node* _internal_add_order_clause(); public: const ::pg_query::Node& order_clause(int index) const; ::pg_query::Node* add_order_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& order_clause() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // string refname = 2 [json_name = "refname"]; void clear_refname(); const std::string& refname() const; void set_refname(const std::string& value); void set_refname(std::string&& value); void set_refname(const char* value); void set_refname(const char* value, size_t size); std::string* mutable_refname(); std::string* release_refname(); void set_allocated_refname(std::string* refname); private: const std::string& _internal_refname() const; void _internal_set_refname(const std::string& value); std::string* _internal_mutable_refname(); public: // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; bool has_start_offset() const; private: bool _internal_has_start_offset() const; public: void clear_start_offset(); const ::pg_query::Node& start_offset() const; ::pg_query::Node* release_start_offset(); ::pg_query::Node* mutable_start_offset(); void set_allocated_start_offset(::pg_query::Node* start_offset); private: const ::pg_query::Node& _internal_start_offset() const; ::pg_query::Node* _internal_mutable_start_offset(); public: void unsafe_arena_set_allocated_start_offset( ::pg_query::Node* start_offset); ::pg_query::Node* unsafe_arena_release_start_offset(); // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; bool has_end_offset() const; private: bool _internal_has_end_offset() const; public: void clear_end_offset(); const ::pg_query::Node& end_offset() const; ::pg_query::Node* release_end_offset(); ::pg_query::Node* mutable_end_offset(); void set_allocated_end_offset(::pg_query::Node* end_offset); private: const ::pg_query::Node& _internal_end_offset() const; ::pg_query::Node* _internal_mutable_end_offset(); public: void unsafe_arena_set_allocated_end_offset( ::pg_query::Node* end_offset); ::pg_query::Node* unsafe_arena_release_end_offset(); // int32 frame_options = 5 [json_name = "frameOptions"]; void clear_frame_options(); ::PROTOBUF_NAMESPACE_ID::int32 frame_options() const; void set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_frame_options() const; void _internal_set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 location = 8 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.WindowDef) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > partition_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > order_clause_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr refname_; ::pg_query::Node* start_offset_; ::pg_query::Node* end_offset_; ::PROTOBUF_NAMESPACE_ID::int32 frame_options_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeSubselect PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeSubselect) */ { public: inline RangeSubselect() : RangeSubselect(nullptr) {} virtual ~RangeSubselect(); RangeSubselect(const RangeSubselect& from); RangeSubselect(RangeSubselect&& from) noexcept : RangeSubselect() { *this = ::std::move(from); } inline RangeSubselect& operator=(const RangeSubselect& from) { CopyFrom(from); return *this; } inline RangeSubselect& operator=(RangeSubselect&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RangeSubselect& default_instance(); static inline const RangeSubselect* internal_default_instance() { return reinterpret_cast( &_RangeSubselect_default_instance_); } static constexpr int kIndexInFileMessages = 193; friend void swap(RangeSubselect& a, RangeSubselect& b) { a.Swap(&b); } inline void Swap(RangeSubselect* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeSubselect* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RangeSubselect* New() const final { return CreateMaybeMessage(nullptr); } RangeSubselect* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RangeSubselect& from); void MergeFrom(const RangeSubselect& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeSubselect* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeSubselect"; } protected: explicit RangeSubselect(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSubqueryFieldNumber = 2, kAliasFieldNumber = 3, kLateralFieldNumber = 1, }; // .pg_query.Node subquery = 2 [json_name = "subquery"]; bool has_subquery() const; private: bool _internal_has_subquery() const; public: void clear_subquery(); const ::pg_query::Node& subquery() const; ::pg_query::Node* release_subquery(); ::pg_query::Node* mutable_subquery(); void set_allocated_subquery(::pg_query::Node* subquery); private: const ::pg_query::Node& _internal_subquery() const; ::pg_query::Node* _internal_mutable_subquery(); public: void unsafe_arena_set_allocated_subquery( ::pg_query::Node* subquery); ::pg_query::Node* unsafe_arena_release_subquery(); // .pg_query.Alias alias = 3 [json_name = "alias"]; bool has_alias() const; private: bool _internal_has_alias() const; public: void clear_alias(); const ::pg_query::Alias& alias() const; ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // bool lateral = 1 [json_name = "lateral"]; void clear_lateral(); bool lateral() const; void set_lateral(bool value); private: bool _internal_lateral() const; void _internal_set_lateral(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeSubselect) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* subquery_; ::pg_query::Alias* alias_; bool lateral_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeFunction PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeFunction) */ { public: inline RangeFunction() : RangeFunction(nullptr) {} virtual ~RangeFunction(); RangeFunction(const RangeFunction& from); RangeFunction(RangeFunction&& from) noexcept : RangeFunction() { *this = ::std::move(from); } inline RangeFunction& operator=(const RangeFunction& from) { CopyFrom(from); return *this; } inline RangeFunction& operator=(RangeFunction&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RangeFunction& default_instance(); static inline const RangeFunction* internal_default_instance() { return reinterpret_cast( &_RangeFunction_default_instance_); } static constexpr int kIndexInFileMessages = 194; friend void swap(RangeFunction& a, RangeFunction& b) { a.Swap(&b); } inline void Swap(RangeFunction* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeFunction* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RangeFunction* New() const final { return CreateMaybeMessage(nullptr); } RangeFunction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RangeFunction& from); void MergeFrom(const RangeFunction& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeFunction* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeFunction"; } protected: explicit RangeFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFunctionsFieldNumber = 4, kColdeflistFieldNumber = 6, kAliasFieldNumber = 5, kLateralFieldNumber = 1, kOrdinalityFieldNumber = 2, kIsRowsfromFieldNumber = 3, }; // repeated .pg_query.Node functions = 4 [json_name = "functions"]; int functions_size() const; private: int _internal_functions_size() const; public: void clear_functions(); ::pg_query::Node* mutable_functions(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_functions(); private: const ::pg_query::Node& _internal_functions(int index) const; ::pg_query::Node* _internal_add_functions(); public: const ::pg_query::Node& functions(int index) const; ::pg_query::Node* add_functions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& functions() const; // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; int coldeflist_size() const; private: int _internal_coldeflist_size() const; public: void clear_coldeflist(); ::pg_query::Node* mutable_coldeflist(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coldeflist(); private: const ::pg_query::Node& _internal_coldeflist(int index) const; ::pg_query::Node* _internal_add_coldeflist(); public: const ::pg_query::Node& coldeflist(int index) const; ::pg_query::Node* add_coldeflist(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coldeflist() const; // .pg_query.Alias alias = 5 [json_name = "alias"]; bool has_alias() const; private: bool _internal_has_alias() const; public: void clear_alias(); const ::pg_query::Alias& alias() const; ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // bool lateral = 1 [json_name = "lateral"]; void clear_lateral(); bool lateral() const; void set_lateral(bool value); private: bool _internal_lateral() const; void _internal_set_lateral(bool value); public: // bool ordinality = 2 [json_name = "ordinality"]; void clear_ordinality(); bool ordinality() const; void set_ordinality(bool value); private: bool _internal_ordinality() const; void _internal_set_ordinality(bool value); public: // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; void clear_is_rowsfrom(); bool is_rowsfrom() const; void set_is_rowsfrom(bool value); private: bool _internal_is_rowsfrom() const; void _internal_set_is_rowsfrom(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeFunction) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > functions_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coldeflist_; ::pg_query::Alias* alias_; bool lateral_; bool ordinality_; bool is_rowsfrom_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTableSample PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableSample) */ { public: inline RangeTableSample() : RangeTableSample(nullptr) {} virtual ~RangeTableSample(); RangeTableSample(const RangeTableSample& from); RangeTableSample(RangeTableSample&& from) noexcept : RangeTableSample() { *this = ::std::move(from); } inline RangeTableSample& operator=(const RangeTableSample& from) { CopyFrom(from); return *this; } inline RangeTableSample& operator=(RangeTableSample&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RangeTableSample& default_instance(); static inline const RangeTableSample* internal_default_instance() { return reinterpret_cast( &_RangeTableSample_default_instance_); } static constexpr int kIndexInFileMessages = 195; friend void swap(RangeTableSample& a, RangeTableSample& b) { a.Swap(&b); } inline void Swap(RangeTableSample* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTableSample* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RangeTableSample* New() const final { return CreateMaybeMessage(nullptr); } RangeTableSample* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RangeTableSample& from); void MergeFrom(const RangeTableSample& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTableSample* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTableSample"; } protected: explicit RangeTableSample(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kMethodFieldNumber = 2, kArgsFieldNumber = 3, kRelationFieldNumber = 1, kRepeatableFieldNumber = 4, kLocationFieldNumber = 5, }; // repeated .pg_query.Node method = 2 [json_name = "method"]; int method_size() const; private: int _internal_method_size() const; public: void clear_method(); ::pg_query::Node* mutable_method(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_method(); private: const ::pg_query::Node& _internal_method(int index) const; ::pg_query::Node* _internal_add_method(); public: const ::pg_query::Node& method(int index) const; ::pg_query::Node* add_method(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& method() const; // repeated .pg_query.Node args = 3 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::Node& relation() const; ::pg_query::Node* release_relation(); ::pg_query::Node* mutable_relation(); void set_allocated_relation(::pg_query::Node* relation); private: const ::pg_query::Node& _internal_relation() const; ::pg_query::Node* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::Node* relation); ::pg_query::Node* unsafe_arena_release_relation(); // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; bool has_repeatable() const; private: bool _internal_has_repeatable() const; public: void clear_repeatable(); const ::pg_query::Node& repeatable() const; ::pg_query::Node* release_repeatable(); ::pg_query::Node* mutable_repeatable(); void set_allocated_repeatable(::pg_query::Node* repeatable); private: const ::pg_query::Node& _internal_repeatable() const; ::pg_query::Node* _internal_mutable_repeatable(); public: void unsafe_arena_set_allocated_repeatable( ::pg_query::Node* repeatable); ::pg_query::Node* unsafe_arena_release_repeatable(); // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTableSample) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > method_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* relation_; ::pg_query::Node* repeatable_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTableFunc PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableFunc) */ { public: inline RangeTableFunc() : RangeTableFunc(nullptr) {} virtual ~RangeTableFunc(); RangeTableFunc(const RangeTableFunc& from); RangeTableFunc(RangeTableFunc&& from) noexcept : RangeTableFunc() { *this = ::std::move(from); } inline RangeTableFunc& operator=(const RangeTableFunc& from) { CopyFrom(from); return *this; } inline RangeTableFunc& operator=(RangeTableFunc&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RangeTableFunc& default_instance(); static inline const RangeTableFunc* internal_default_instance() { return reinterpret_cast( &_RangeTableFunc_default_instance_); } static constexpr int kIndexInFileMessages = 196; friend void swap(RangeTableFunc& a, RangeTableFunc& b) { a.Swap(&b); } inline void Swap(RangeTableFunc* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTableFunc* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RangeTableFunc* New() const final { return CreateMaybeMessage(nullptr); } RangeTableFunc* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RangeTableFunc& from); void MergeFrom(const RangeTableFunc& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTableFunc* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTableFunc"; } protected: explicit RangeTableFunc(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNamespacesFieldNumber = 4, kColumnsFieldNumber = 5, kDocexprFieldNumber = 2, kRowexprFieldNumber = 3, kAliasFieldNumber = 6, kLateralFieldNumber = 1, kLocationFieldNumber = 7, }; // repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; int namespaces_size() const; private: int _internal_namespaces_size() const; public: void clear_namespaces(); ::pg_query::Node* mutable_namespaces(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_namespaces(); private: const ::pg_query::Node& _internal_namespaces(int index) const; ::pg_query::Node* _internal_add_namespaces(); public: const ::pg_query::Node& namespaces(int index) const; ::pg_query::Node* add_namespaces(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& namespaces() const; // repeated .pg_query.Node columns = 5 [json_name = "columns"]; int columns_size() const; private: int _internal_columns_size() const; public: void clear_columns(); ::pg_query::Node* mutable_columns(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_columns(); private: const ::pg_query::Node& _internal_columns(int index) const; ::pg_query::Node* _internal_add_columns(); public: const ::pg_query::Node& columns(int index) const; ::pg_query::Node* add_columns(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& columns() const; // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; bool has_docexpr() const; private: bool _internal_has_docexpr() const; public: void clear_docexpr(); const ::pg_query::Node& docexpr() const; ::pg_query::Node* release_docexpr(); ::pg_query::Node* mutable_docexpr(); void set_allocated_docexpr(::pg_query::Node* docexpr); private: const ::pg_query::Node& _internal_docexpr() const; ::pg_query::Node* _internal_mutable_docexpr(); public: void unsafe_arena_set_allocated_docexpr( ::pg_query::Node* docexpr); ::pg_query::Node* unsafe_arena_release_docexpr(); // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; bool has_rowexpr() const; private: bool _internal_has_rowexpr() const; public: void clear_rowexpr(); const ::pg_query::Node& rowexpr() const; ::pg_query::Node* release_rowexpr(); ::pg_query::Node* mutable_rowexpr(); void set_allocated_rowexpr(::pg_query::Node* rowexpr); private: const ::pg_query::Node& _internal_rowexpr() const; ::pg_query::Node* _internal_mutable_rowexpr(); public: void unsafe_arena_set_allocated_rowexpr( ::pg_query::Node* rowexpr); ::pg_query::Node* unsafe_arena_release_rowexpr(); // .pg_query.Alias alias = 6 [json_name = "alias"]; bool has_alias() const; private: bool _internal_has_alias() const; public: void clear_alias(); const ::pg_query::Alias& alias() const; ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // bool lateral = 1 [json_name = "lateral"]; void clear_lateral(); bool lateral() const; void set_lateral(bool value); private: bool _internal_lateral() const; void _internal_set_lateral(bool value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTableFunc) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > namespaces_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > columns_; ::pg_query::Node* docexpr_; ::pg_query::Node* rowexpr_; ::pg_query::Alias* alias_; bool lateral_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTableFuncCol PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTableFuncCol) */ { public: inline RangeTableFuncCol() : RangeTableFuncCol(nullptr) {} virtual ~RangeTableFuncCol(); RangeTableFuncCol(const RangeTableFuncCol& from); RangeTableFuncCol(RangeTableFuncCol&& from) noexcept : RangeTableFuncCol() { *this = ::std::move(from); } inline RangeTableFuncCol& operator=(const RangeTableFuncCol& from) { CopyFrom(from); return *this; } inline RangeTableFuncCol& operator=(RangeTableFuncCol&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RangeTableFuncCol& default_instance(); static inline const RangeTableFuncCol* internal_default_instance() { return reinterpret_cast( &_RangeTableFuncCol_default_instance_); } static constexpr int kIndexInFileMessages = 197; friend void swap(RangeTableFuncCol& a, RangeTableFuncCol& b) { a.Swap(&b); } inline void Swap(RangeTableFuncCol* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTableFuncCol* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RangeTableFuncCol* New() const final { return CreateMaybeMessage(nullptr); } RangeTableFuncCol* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RangeTableFuncCol& from); void MergeFrom(const RangeTableFuncCol& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTableFuncCol* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTableFuncCol"; } protected: explicit RangeTableFuncCol(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kColnameFieldNumber = 1, kTypeNameFieldNumber = 2, kColexprFieldNumber = 5, kColdefexprFieldNumber = 6, kForOrdinalityFieldNumber = 3, kIsNotNullFieldNumber = 4, kLocationFieldNumber = 7, }; // string colname = 1 [json_name = "colname"]; void clear_colname(); const std::string& colname() const; void set_colname(const std::string& value); void set_colname(std::string&& value); void set_colname(const char* value); void set_colname(const char* value, size_t size); std::string* mutable_colname(); std::string* release_colname(); void set_allocated_colname(std::string* colname); private: const std::string& _internal_colname() const; void _internal_set_colname(const std::string& value); std::string* _internal_mutable_colname(); public: // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; bool has_type_name() const; private: bool _internal_has_type_name() const; public: void clear_type_name(); const ::pg_query::TypeName& type_name() const; ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; bool has_colexpr() const; private: bool _internal_has_colexpr() const; public: void clear_colexpr(); const ::pg_query::Node& colexpr() const; ::pg_query::Node* release_colexpr(); ::pg_query::Node* mutable_colexpr(); void set_allocated_colexpr(::pg_query::Node* colexpr); private: const ::pg_query::Node& _internal_colexpr() const; ::pg_query::Node* _internal_mutable_colexpr(); public: void unsafe_arena_set_allocated_colexpr( ::pg_query::Node* colexpr); ::pg_query::Node* unsafe_arena_release_colexpr(); // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; bool has_coldefexpr() const; private: bool _internal_has_coldefexpr() const; public: void clear_coldefexpr(); const ::pg_query::Node& coldefexpr() const; ::pg_query::Node* release_coldefexpr(); ::pg_query::Node* mutable_coldefexpr(); void set_allocated_coldefexpr(::pg_query::Node* coldefexpr); private: const ::pg_query::Node& _internal_coldefexpr() const; ::pg_query::Node* _internal_mutable_coldefexpr(); public: void unsafe_arena_set_allocated_coldefexpr( ::pg_query::Node* coldefexpr); ::pg_query::Node* unsafe_arena_release_coldefexpr(); // bool for_ordinality = 3 [json_name = "for_ordinality"]; void clear_for_ordinality(); bool for_ordinality() const; void set_for_ordinality(bool value); private: bool _internal_for_ordinality() const; void _internal_set_for_ordinality(bool value); public: // bool is_not_null = 4 [json_name = "is_not_null"]; void clear_is_not_null(); bool is_not_null() const; void set_is_not_null(bool value); private: bool _internal_is_not_null() const; void _internal_set_is_not_null(bool value); public: // int32 location = 7 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTableFuncCol) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr colname_; ::pg_query::TypeName* type_name_; ::pg_query::Node* colexpr_; ::pg_query::Node* coldefexpr_; bool for_ordinality_; bool is_not_null_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TypeName PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TypeName) */ { public: inline TypeName() : TypeName(nullptr) {} virtual ~TypeName(); TypeName(const TypeName& from); TypeName(TypeName&& from) noexcept : TypeName() { *this = ::std::move(from); } inline TypeName& operator=(const TypeName& from) { CopyFrom(from); return *this; } inline TypeName& operator=(TypeName&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const TypeName& default_instance(); static inline const TypeName* internal_default_instance() { return reinterpret_cast( &_TypeName_default_instance_); } static constexpr int kIndexInFileMessages = 198; friend void swap(TypeName& a, TypeName& b) { a.Swap(&b); } inline void Swap(TypeName* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TypeName* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline TypeName* New() const final { return CreateMaybeMessage(nullptr); } TypeName* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const TypeName& from); void MergeFrom(const TypeName& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TypeName* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TypeName"; } protected: explicit TypeName(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNamesFieldNumber = 1, kTypmodsFieldNumber = 5, kArrayBoundsFieldNumber = 7, kTypeOidFieldNumber = 2, kSetofFieldNumber = 3, kPctTypeFieldNumber = 4, kTypemodFieldNumber = 6, kLocationFieldNumber = 8, }; // repeated .pg_query.Node names = 1 [json_name = "names"]; int names_size() const; private: int _internal_names_size() const; public: void clear_names(); ::pg_query::Node* mutable_names(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_names(); private: const ::pg_query::Node& _internal_names(int index) const; ::pg_query::Node* _internal_add_names(); public: const ::pg_query::Node& names(int index) const; ::pg_query::Node* add_names(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& names() const; // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; int typmods_size() const; private: int _internal_typmods_size() const; public: void clear_typmods(); ::pg_query::Node* mutable_typmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_typmods(); private: const ::pg_query::Node& _internal_typmods(int index) const; ::pg_query::Node* _internal_add_typmods(); public: const ::pg_query::Node& typmods(int index) const; ::pg_query::Node* add_typmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& typmods() const; // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; int array_bounds_size() const; private: int _internal_array_bounds_size() const; public: void clear_array_bounds(); ::pg_query::Node* mutable_array_bounds(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_array_bounds(); private: const ::pg_query::Node& _internal_array_bounds(int index) const; ::pg_query::Node* _internal_add_array_bounds(); public: const ::pg_query::Node& array_bounds(int index) const; ::pg_query::Node* add_array_bounds(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& array_bounds() const; // uint32 type_oid = 2 [json_name = "typeOid"]; void clear_type_oid(); ::PROTOBUF_NAMESPACE_ID::uint32 type_oid() const; void set_type_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_type_oid() const; void _internal_set_type_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool setof = 3 [json_name = "setof"]; void clear_setof(); bool setof() const; void set_setof(bool value); private: bool _internal_setof() const; void _internal_set_setof(bool value); public: // bool pct_type = 4 [json_name = "pct_type"]; void clear_pct_type(); bool pct_type() const; void set_pct_type(bool value); private: bool _internal_pct_type() const; void _internal_set_pct_type(bool value); public: // int32 typemod = 6 [json_name = "typemod"]; void clear_typemod(); ::PROTOBUF_NAMESPACE_ID::int32 typemod() const; void set_typemod(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_typemod() const; void _internal_set_typemod(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 location = 8 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.TypeName) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > names_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > typmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > array_bounds_; ::PROTOBUF_NAMESPACE_ID::uint32 type_oid_; bool setof_; bool pct_type_; ::PROTOBUF_NAMESPACE_ID::int32 typemod_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ColumnDef PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ColumnDef) */ { public: inline ColumnDef() : ColumnDef(nullptr) {} virtual ~ColumnDef(); ColumnDef(const ColumnDef& from); ColumnDef(ColumnDef&& from) noexcept : ColumnDef() { *this = ::std::move(from); } inline ColumnDef& operator=(const ColumnDef& from) { CopyFrom(from); return *this; } inline ColumnDef& operator=(ColumnDef&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ColumnDef& default_instance(); static inline const ColumnDef* internal_default_instance() { return reinterpret_cast( &_ColumnDef_default_instance_); } static constexpr int kIndexInFileMessages = 199; friend void swap(ColumnDef& a, ColumnDef& b) { a.Swap(&b); } inline void Swap(ColumnDef* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ColumnDef* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ColumnDef* New() const final { return CreateMaybeMessage(nullptr); } ColumnDef* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ColumnDef& from); void MergeFrom(const ColumnDef& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ColumnDef* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ColumnDef"; } protected: explicit ColumnDef(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kConstraintsFieldNumber = 15, kFdwoptionsFieldNumber = 16, kColnameFieldNumber = 1, kStorageFieldNumber = 7, kIdentityFieldNumber = 10, kGeneratedFieldNumber = 12, kTypeNameFieldNumber = 2, kRawDefaultFieldNumber = 8, kCookedDefaultFieldNumber = 9, kIdentitySequenceFieldNumber = 11, kCollClauseFieldNumber = 13, kInhcountFieldNumber = 3, kIsLocalFieldNumber = 4, kIsNotNullFieldNumber = 5, kIsFromTypeFieldNumber = 6, kCollOidFieldNumber = 14, kLocationFieldNumber = 17, }; // repeated .pg_query.Node constraints = 15 [json_name = "constraints"]; int constraints_size() const; private: int _internal_constraints_size() const; public: void clear_constraints(); ::pg_query::Node* mutable_constraints(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_constraints(); private: const ::pg_query::Node& _internal_constraints(int index) const; ::pg_query::Node* _internal_add_constraints(); public: const ::pg_query::Node& constraints(int index) const; ::pg_query::Node* add_constraints(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& constraints() const; // repeated .pg_query.Node fdwoptions = 16 [json_name = "fdwoptions"]; int fdwoptions_size() const; private: int _internal_fdwoptions_size() const; public: void clear_fdwoptions(); ::pg_query::Node* mutable_fdwoptions(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fdwoptions(); private: const ::pg_query::Node& _internal_fdwoptions(int index) const; ::pg_query::Node* _internal_add_fdwoptions(); public: const ::pg_query::Node& fdwoptions(int index) const; ::pg_query::Node* add_fdwoptions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fdwoptions() const; // string colname = 1 [json_name = "colname"]; void clear_colname(); const std::string& colname() const; void set_colname(const std::string& value); void set_colname(std::string&& value); void set_colname(const char* value); void set_colname(const char* value, size_t size); std::string* mutable_colname(); std::string* release_colname(); void set_allocated_colname(std::string* colname); private: const std::string& _internal_colname() const; void _internal_set_colname(const std::string& value); std::string* _internal_mutable_colname(); public: // string storage = 7 [json_name = "storage"]; void clear_storage(); const std::string& storage() const; void set_storage(const std::string& value); void set_storage(std::string&& value); void set_storage(const char* value); void set_storage(const char* value, size_t size); std::string* mutable_storage(); std::string* release_storage(); void set_allocated_storage(std::string* storage); private: const std::string& _internal_storage() const; void _internal_set_storage(const std::string& value); std::string* _internal_mutable_storage(); public: // string identity = 10 [json_name = "identity"]; void clear_identity(); const std::string& identity() const; void set_identity(const std::string& value); void set_identity(std::string&& value); void set_identity(const char* value); void set_identity(const char* value, size_t size); std::string* mutable_identity(); std::string* release_identity(); void set_allocated_identity(std::string* identity); private: const std::string& _internal_identity() const; void _internal_set_identity(const std::string& value); std::string* _internal_mutable_identity(); public: // string generated = 12 [json_name = "generated"]; void clear_generated(); const std::string& generated() const; void set_generated(const std::string& value); void set_generated(std::string&& value); void set_generated(const char* value); void set_generated(const char* value, size_t size); std::string* mutable_generated(); std::string* release_generated(); void set_allocated_generated(std::string* generated); private: const std::string& _internal_generated() const; void _internal_set_generated(const std::string& value); std::string* _internal_mutable_generated(); public: // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; bool has_type_name() const; private: bool _internal_has_type_name() const; public: void clear_type_name(); const ::pg_query::TypeName& type_name() const; ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.Node raw_default = 8 [json_name = "raw_default"]; bool has_raw_default() const; private: bool _internal_has_raw_default() const; public: void clear_raw_default(); const ::pg_query::Node& raw_default() const; ::pg_query::Node* release_raw_default(); ::pg_query::Node* mutable_raw_default(); void set_allocated_raw_default(::pg_query::Node* raw_default); private: const ::pg_query::Node& _internal_raw_default() const; ::pg_query::Node* _internal_mutable_raw_default(); public: void unsafe_arena_set_allocated_raw_default( ::pg_query::Node* raw_default); ::pg_query::Node* unsafe_arena_release_raw_default(); // .pg_query.Node cooked_default = 9 [json_name = "cooked_default"]; bool has_cooked_default() const; private: bool _internal_has_cooked_default() const; public: void clear_cooked_default(); const ::pg_query::Node& cooked_default() const; ::pg_query::Node* release_cooked_default(); ::pg_query::Node* mutable_cooked_default(); void set_allocated_cooked_default(::pg_query::Node* cooked_default); private: const ::pg_query::Node& _internal_cooked_default() const; ::pg_query::Node* _internal_mutable_cooked_default(); public: void unsafe_arena_set_allocated_cooked_default( ::pg_query::Node* cooked_default); ::pg_query::Node* unsafe_arena_release_cooked_default(); // .pg_query.RangeVar identity_sequence = 11 [json_name = "identitySequence"]; bool has_identity_sequence() const; private: bool _internal_has_identity_sequence() const; public: void clear_identity_sequence(); const ::pg_query::RangeVar& identity_sequence() const; ::pg_query::RangeVar* release_identity_sequence(); ::pg_query::RangeVar* mutable_identity_sequence(); void set_allocated_identity_sequence(::pg_query::RangeVar* identity_sequence); private: const ::pg_query::RangeVar& _internal_identity_sequence() const; ::pg_query::RangeVar* _internal_mutable_identity_sequence(); public: void unsafe_arena_set_allocated_identity_sequence( ::pg_query::RangeVar* identity_sequence); ::pg_query::RangeVar* unsafe_arena_release_identity_sequence(); // .pg_query.CollateClause coll_clause = 13 [json_name = "collClause"]; bool has_coll_clause() const; private: bool _internal_has_coll_clause() const; public: void clear_coll_clause(); const ::pg_query::CollateClause& coll_clause() const; ::pg_query::CollateClause* release_coll_clause(); ::pg_query::CollateClause* mutable_coll_clause(); void set_allocated_coll_clause(::pg_query::CollateClause* coll_clause); private: const ::pg_query::CollateClause& _internal_coll_clause() const; ::pg_query::CollateClause* _internal_mutable_coll_clause(); public: void unsafe_arena_set_allocated_coll_clause( ::pg_query::CollateClause* coll_clause); ::pg_query::CollateClause* unsafe_arena_release_coll_clause(); // int32 inhcount = 3 [json_name = "inhcount"]; void clear_inhcount(); ::PROTOBUF_NAMESPACE_ID::int32 inhcount() const; void set_inhcount(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_inhcount() const; void _internal_set_inhcount(::PROTOBUF_NAMESPACE_ID::int32 value); public: // bool is_local = 4 [json_name = "is_local"]; void clear_is_local(); bool is_local() const; void set_is_local(bool value); private: bool _internal_is_local() const; void _internal_set_is_local(bool value); public: // bool is_not_null = 5 [json_name = "is_not_null"]; void clear_is_not_null(); bool is_not_null() const; void set_is_not_null(bool value); private: bool _internal_is_not_null() const; void _internal_set_is_not_null(bool value); public: // bool is_from_type = 6 [json_name = "is_from_type"]; void clear_is_from_type(); bool is_from_type() const; void set_is_from_type(bool value); private: bool _internal_is_from_type() const; void _internal_set_is_from_type(bool value); public: // uint32 coll_oid = 14 [json_name = "collOid"]; void clear_coll_oid(); ::PROTOBUF_NAMESPACE_ID::uint32 coll_oid() const; void set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_coll_oid() const; void _internal_set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 location = 17 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.ColumnDef) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > constraints_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fdwoptions_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr colname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr storage_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr identity_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr generated_; ::pg_query::TypeName* type_name_; ::pg_query::Node* raw_default_; ::pg_query::Node* cooked_default_; ::pg_query::RangeVar* identity_sequence_; ::pg_query::CollateClause* coll_clause_; ::PROTOBUF_NAMESPACE_ID::int32 inhcount_; bool is_local_; bool is_not_null_; bool is_from_type_; ::PROTOBUF_NAMESPACE_ID::uint32 coll_oid_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class IndexElem PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.IndexElem) */ { public: inline IndexElem() : IndexElem(nullptr) {} virtual ~IndexElem(); IndexElem(const IndexElem& from); IndexElem(IndexElem&& from) noexcept : IndexElem() { *this = ::std::move(from); } inline IndexElem& operator=(const IndexElem& from) { CopyFrom(from); return *this; } inline IndexElem& operator=(IndexElem&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const IndexElem& default_instance(); static inline const IndexElem* internal_default_instance() { return reinterpret_cast( &_IndexElem_default_instance_); } static constexpr int kIndexInFileMessages = 200; friend void swap(IndexElem& a, IndexElem& b) { a.Swap(&b); } inline void Swap(IndexElem* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(IndexElem* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline IndexElem* New() const final { return CreateMaybeMessage(nullptr); } IndexElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const IndexElem& from); void MergeFrom(const IndexElem& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(IndexElem* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.IndexElem"; } protected: explicit IndexElem(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCollationFieldNumber = 4, kOpclassFieldNumber = 5, kOpclassoptsFieldNumber = 6, kNameFieldNumber = 1, kIndexcolnameFieldNumber = 3, kExprFieldNumber = 2, kOrderingFieldNumber = 7, kNullsOrderingFieldNumber = 8, }; // repeated .pg_query.Node collation = 4 [json_name = "collation"]; int collation_size() const; private: int _internal_collation_size() const; public: void clear_collation(); ::pg_query::Node* mutable_collation(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_collation(); private: const ::pg_query::Node& _internal_collation(int index) const; ::pg_query::Node* _internal_add_collation(); public: const ::pg_query::Node& collation(int index) const; ::pg_query::Node* add_collation(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& collation() const; // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; int opclass_size() const; private: int _internal_opclass_size() const; public: void clear_opclass(); ::pg_query::Node* mutable_opclass(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opclass(); private: const ::pg_query::Node& _internal_opclass(int index) const; ::pg_query::Node* _internal_add_opclass(); public: const ::pg_query::Node& opclass(int index) const; ::pg_query::Node* add_opclass(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opclass() const; // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; int opclassopts_size() const; private: int _internal_opclassopts_size() const; public: void clear_opclassopts(); ::pg_query::Node* mutable_opclassopts(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opclassopts(); private: const ::pg_query::Node& _internal_opclassopts(int index) const; ::pg_query::Node* _internal_add_opclassopts(); public: const ::pg_query::Node& opclassopts(int index) const; ::pg_query::Node* add_opclassopts(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opclassopts() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // string indexcolname = 3 [json_name = "indexcolname"]; void clear_indexcolname(); const std::string& indexcolname() const; void set_indexcolname(const std::string& value); void set_indexcolname(std::string&& value); void set_indexcolname(const char* value); void set_indexcolname(const char* value, size_t size); std::string* mutable_indexcolname(); std::string* release_indexcolname(); void set_allocated_indexcolname(std::string* indexcolname); private: const std::string& _internal_indexcolname() const; void _internal_set_indexcolname(const std::string& value); std::string* _internal_mutable_indexcolname(); public: // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Node& expr() const; ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; void clear_ordering(); ::pg_query::SortByDir ordering() const; void set_ordering(::pg_query::SortByDir value); private: ::pg_query::SortByDir _internal_ordering() const; void _internal_set_ordering(::pg_query::SortByDir value); public: // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; void clear_nulls_ordering(); ::pg_query::SortByNulls nulls_ordering() const; void set_nulls_ordering(::pg_query::SortByNulls value); private: ::pg_query::SortByNulls _internal_nulls_ordering() const; void _internal_set_nulls_ordering(::pg_query::SortByNulls value); public: // @@protoc_insertion_point(class_scope:pg_query.IndexElem) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collation_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclass_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclassopts_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexcolname_; ::pg_query::Node* expr_; int ordering_; int nulls_ordering_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class Constraint PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.Constraint) */ { public: inline Constraint() : Constraint(nullptr) {} virtual ~Constraint(); Constraint(const Constraint& from); Constraint(Constraint&& from) noexcept : Constraint() { *this = ::std::move(from); } inline Constraint& operator=(const Constraint& from) { CopyFrom(from); return *this; } inline Constraint& operator=(Constraint&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const Constraint& default_instance(); static inline const Constraint* internal_default_instance() { return reinterpret_cast( &_Constraint_default_instance_); } static constexpr int kIndexInFileMessages = 201; friend void swap(Constraint& a, Constraint& b) { a.Swap(&b); } inline void Swap(Constraint* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(Constraint* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline Constraint* New() const final { return CreateMaybeMessage(nullptr); } Constraint* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const Constraint& from); void MergeFrom(const Constraint& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(Constraint* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.Constraint"; } protected: explicit Constraint(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kKeysFieldNumber = 10, kIncludingFieldNumber = 11, kExclusionsFieldNumber = 12, kOptionsFieldNumber = 13, kFkAttrsFieldNumber = 20, kPkAttrsFieldNumber = 21, kOldConpfeqopFieldNumber = 25, kConnameFieldNumber = 2, kCookedExprFieldNumber = 8, kGeneratedWhenFieldNumber = 9, kIndexnameFieldNumber = 14, kIndexspaceFieldNumber = 15, kAccessMethodFieldNumber = 17, kFkMatchtypeFieldNumber = 22, kFkUpdActionFieldNumber = 23, kFkDelActionFieldNumber = 24, kRawExprFieldNumber = 7, kWhereClauseFieldNumber = 18, kPktableFieldNumber = 19, kContypeFieldNumber = 1, kLocationFieldNumber = 5, kDeferrableFieldNumber = 3, kInitdeferredFieldNumber = 4, kIsNoInheritFieldNumber = 6, kResetDefaultTblspcFieldNumber = 16, kOldPktableOidFieldNumber = 26, kSkipValidationFieldNumber = 27, kInitiallyValidFieldNumber = 28, }; // repeated .pg_query.Node keys = 10 [json_name = "keys"]; int keys_size() const; private: int _internal_keys_size() const; public: void clear_keys(); ::pg_query::Node* mutable_keys(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_keys(); private: const ::pg_query::Node& _internal_keys(int index) const; ::pg_query::Node* _internal_add_keys(); public: const ::pg_query::Node& keys(int index) const; ::pg_query::Node* add_keys(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& keys() const; // repeated .pg_query.Node including = 11 [json_name = "including"]; int including_size() const; private: int _internal_including_size() const; public: void clear_including(); ::pg_query::Node* mutable_including(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_including(); private: const ::pg_query::Node& _internal_including(int index) const; ::pg_query::Node* _internal_add_including(); public: const ::pg_query::Node& including(int index) const; ::pg_query::Node* add_including(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& including() const; // repeated .pg_query.Node exclusions = 12 [json_name = "exclusions"]; int exclusions_size() const; private: int _internal_exclusions_size() const; public: void clear_exclusions(); ::pg_query::Node* mutable_exclusions(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_exclusions(); private: const ::pg_query::Node& _internal_exclusions(int index) const; ::pg_query::Node* _internal_add_exclusions(); public: const ::pg_query::Node& exclusions(int index) const; ::pg_query::Node* add_exclusions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& exclusions() const; // repeated .pg_query.Node options = 13 [json_name = "options"]; int options_size() const; private: int _internal_options_size() const; public: void clear_options(); ::pg_query::Node* mutable_options(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_options(); private: const ::pg_query::Node& _internal_options(int index) const; ::pg_query::Node* _internal_add_options(); public: const ::pg_query::Node& options(int index) const; ::pg_query::Node* add_options(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& options() const; // repeated .pg_query.Node fk_attrs = 20 [json_name = "fk_attrs"]; int fk_attrs_size() const; private: int _internal_fk_attrs_size() const; public: void clear_fk_attrs(); ::pg_query::Node* mutable_fk_attrs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_fk_attrs(); private: const ::pg_query::Node& _internal_fk_attrs(int index) const; ::pg_query::Node* _internal_add_fk_attrs(); public: const ::pg_query::Node& fk_attrs(int index) const; ::pg_query::Node* add_fk_attrs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& fk_attrs() const; // repeated .pg_query.Node pk_attrs = 21 [json_name = "pk_attrs"]; int pk_attrs_size() const; private: int _internal_pk_attrs_size() const; public: void clear_pk_attrs(); ::pg_query::Node* mutable_pk_attrs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_pk_attrs(); private: const ::pg_query::Node& _internal_pk_attrs(int index) const; ::pg_query::Node* _internal_add_pk_attrs(); public: const ::pg_query::Node& pk_attrs(int index) const; ::pg_query::Node* add_pk_attrs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& pk_attrs() const; // repeated .pg_query.Node old_conpfeqop = 25 [json_name = "old_conpfeqop"]; int old_conpfeqop_size() const; private: int _internal_old_conpfeqop_size() const; public: void clear_old_conpfeqop(); ::pg_query::Node* mutable_old_conpfeqop(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_old_conpfeqop(); private: const ::pg_query::Node& _internal_old_conpfeqop(int index) const; ::pg_query::Node* _internal_add_old_conpfeqop(); public: const ::pg_query::Node& old_conpfeqop(int index) const; ::pg_query::Node* add_old_conpfeqop(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& old_conpfeqop() const; // string conname = 2 [json_name = "conname"]; void clear_conname(); const std::string& conname() const; void set_conname(const std::string& value); void set_conname(std::string&& value); void set_conname(const char* value); void set_conname(const char* value, size_t size); std::string* mutable_conname(); std::string* release_conname(); void set_allocated_conname(std::string* conname); private: const std::string& _internal_conname() const; void _internal_set_conname(const std::string& value); std::string* _internal_mutable_conname(); public: // string cooked_expr = 8 [json_name = "cooked_expr"]; void clear_cooked_expr(); const std::string& cooked_expr() const; void set_cooked_expr(const std::string& value); void set_cooked_expr(std::string&& value); void set_cooked_expr(const char* value); void set_cooked_expr(const char* value, size_t size); std::string* mutable_cooked_expr(); std::string* release_cooked_expr(); void set_allocated_cooked_expr(std::string* cooked_expr); private: const std::string& _internal_cooked_expr() const; void _internal_set_cooked_expr(const std::string& value); std::string* _internal_mutable_cooked_expr(); public: // string generated_when = 9 [json_name = "generated_when"]; void clear_generated_when(); const std::string& generated_when() const; void set_generated_when(const std::string& value); void set_generated_when(std::string&& value); void set_generated_when(const char* value); void set_generated_when(const char* value, size_t size); std::string* mutable_generated_when(); std::string* release_generated_when(); void set_allocated_generated_when(std::string* generated_when); private: const std::string& _internal_generated_when() const; void _internal_set_generated_when(const std::string& value); std::string* _internal_mutable_generated_when(); public: // string indexname = 14 [json_name = "indexname"]; void clear_indexname(); const std::string& indexname() const; void set_indexname(const std::string& value); void set_indexname(std::string&& value); void set_indexname(const char* value); void set_indexname(const char* value, size_t size); std::string* mutable_indexname(); std::string* release_indexname(); void set_allocated_indexname(std::string* indexname); private: const std::string& _internal_indexname() const; void _internal_set_indexname(const std::string& value); std::string* _internal_mutable_indexname(); public: // string indexspace = 15 [json_name = "indexspace"]; void clear_indexspace(); const std::string& indexspace() const; void set_indexspace(const std::string& value); void set_indexspace(std::string&& value); void set_indexspace(const char* value); void set_indexspace(const char* value, size_t size); std::string* mutable_indexspace(); std::string* release_indexspace(); void set_allocated_indexspace(std::string* indexspace); private: const std::string& _internal_indexspace() const; void _internal_set_indexspace(const std::string& value); std::string* _internal_mutable_indexspace(); public: // string access_method = 17 [json_name = "access_method"]; void clear_access_method(); const std::string& access_method() const; void set_access_method(const std::string& value); void set_access_method(std::string&& value); void set_access_method(const char* value); void set_access_method(const char* value, size_t size); std::string* mutable_access_method(); std::string* release_access_method(); void set_allocated_access_method(std::string* access_method); private: const std::string& _internal_access_method() const; void _internal_set_access_method(const std::string& value); std::string* _internal_mutable_access_method(); public: // string fk_matchtype = 22 [json_name = "fk_matchtype"]; void clear_fk_matchtype(); const std::string& fk_matchtype() const; void set_fk_matchtype(const std::string& value); void set_fk_matchtype(std::string&& value); void set_fk_matchtype(const char* value); void set_fk_matchtype(const char* value, size_t size); std::string* mutable_fk_matchtype(); std::string* release_fk_matchtype(); void set_allocated_fk_matchtype(std::string* fk_matchtype); private: const std::string& _internal_fk_matchtype() const; void _internal_set_fk_matchtype(const std::string& value); std::string* _internal_mutable_fk_matchtype(); public: // string fk_upd_action = 23 [json_name = "fk_upd_action"]; void clear_fk_upd_action(); const std::string& fk_upd_action() const; void set_fk_upd_action(const std::string& value); void set_fk_upd_action(std::string&& value); void set_fk_upd_action(const char* value); void set_fk_upd_action(const char* value, size_t size); std::string* mutable_fk_upd_action(); std::string* release_fk_upd_action(); void set_allocated_fk_upd_action(std::string* fk_upd_action); private: const std::string& _internal_fk_upd_action() const; void _internal_set_fk_upd_action(const std::string& value); std::string* _internal_mutable_fk_upd_action(); public: // string fk_del_action = 24 [json_name = "fk_del_action"]; void clear_fk_del_action(); const std::string& fk_del_action() const; void set_fk_del_action(const std::string& value); void set_fk_del_action(std::string&& value); void set_fk_del_action(const char* value); void set_fk_del_action(const char* value, size_t size); std::string* mutable_fk_del_action(); std::string* release_fk_del_action(); void set_allocated_fk_del_action(std::string* fk_del_action); private: const std::string& _internal_fk_del_action() const; void _internal_set_fk_del_action(const std::string& value); std::string* _internal_mutable_fk_del_action(); public: // .pg_query.Node raw_expr = 7 [json_name = "raw_expr"]; bool has_raw_expr() const; private: bool _internal_has_raw_expr() const; public: void clear_raw_expr(); const ::pg_query::Node& raw_expr() const; ::pg_query::Node* release_raw_expr(); ::pg_query::Node* mutable_raw_expr(); void set_allocated_raw_expr(::pg_query::Node* raw_expr); private: const ::pg_query::Node& _internal_raw_expr() const; ::pg_query::Node* _internal_mutable_raw_expr(); public: void unsafe_arena_set_allocated_raw_expr( ::pg_query::Node* raw_expr); ::pg_query::Node* unsafe_arena_release_raw_expr(); // .pg_query.Node where_clause = 18 [json_name = "where_clause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.RangeVar pktable = 19 [json_name = "pktable"]; bool has_pktable() const; private: bool _internal_has_pktable() const; public: void clear_pktable(); const ::pg_query::RangeVar& pktable() const; ::pg_query::RangeVar* release_pktable(); ::pg_query::RangeVar* mutable_pktable(); void set_allocated_pktable(::pg_query::RangeVar* pktable); private: const ::pg_query::RangeVar& _internal_pktable() const; ::pg_query::RangeVar* _internal_mutable_pktable(); public: void unsafe_arena_set_allocated_pktable( ::pg_query::RangeVar* pktable); ::pg_query::RangeVar* unsafe_arena_release_pktable(); // .pg_query.ConstrType contype = 1 [json_name = "contype"]; void clear_contype(); ::pg_query::ConstrType contype() const; void set_contype(::pg_query::ConstrType value); private: ::pg_query::ConstrType _internal_contype() const; void _internal_set_contype(::pg_query::ConstrType value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // bool deferrable = 3 [json_name = "deferrable"]; void clear_deferrable(); bool deferrable() const; void set_deferrable(bool value); private: bool _internal_deferrable() const; void _internal_set_deferrable(bool value); public: // bool initdeferred = 4 [json_name = "initdeferred"]; void clear_initdeferred(); bool initdeferred() const; void set_initdeferred(bool value); private: bool _internal_initdeferred() const; void _internal_set_initdeferred(bool value); public: // bool is_no_inherit = 6 [json_name = "is_no_inherit"]; void clear_is_no_inherit(); bool is_no_inherit() const; void set_is_no_inherit(bool value); private: bool _internal_is_no_inherit() const; void _internal_set_is_no_inherit(bool value); public: // bool reset_default_tblspc = 16 [json_name = "reset_default_tblspc"]; void clear_reset_default_tblspc(); bool reset_default_tblspc() const; void set_reset_default_tblspc(bool value); private: bool _internal_reset_default_tblspc() const; void _internal_set_reset_default_tblspc(bool value); public: // uint32 old_pktable_oid = 26 [json_name = "old_pktable_oid"]; void clear_old_pktable_oid(); ::PROTOBUF_NAMESPACE_ID::uint32 old_pktable_oid() const; void set_old_pktable_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_old_pktable_oid() const; void _internal_set_old_pktable_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool skip_validation = 27 [json_name = "skip_validation"]; void clear_skip_validation(); bool skip_validation() const; void set_skip_validation(bool value); private: bool _internal_skip_validation() const; void _internal_set_skip_validation(bool value); public: // bool initially_valid = 28 [json_name = "initially_valid"]; void clear_initially_valid(); bool initially_valid() const; void set_initially_valid(bool value); private: bool _internal_initially_valid() const; void _internal_set_initially_valid(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.Constraint) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > keys_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > including_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > exclusions_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > options_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > fk_attrs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > pk_attrs_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > old_conpfeqop_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cooked_expr_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr generated_when_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr indexspace_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr access_method_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fk_matchtype_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fk_upd_action_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr fk_del_action_; ::pg_query::Node* raw_expr_; ::pg_query::Node* where_clause_; ::pg_query::RangeVar* pktable_; int contype_; ::PROTOBUF_NAMESPACE_ID::int32 location_; bool deferrable_; bool initdeferred_; bool is_no_inherit_; bool reset_default_tblspc_; ::PROTOBUF_NAMESPACE_ID::uint32 old_pktable_oid_; bool skip_validation_; bool initially_valid_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class DefElem PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.DefElem) */ { public: inline DefElem() : DefElem(nullptr) {} virtual ~DefElem(); DefElem(const DefElem& from); DefElem(DefElem&& from) noexcept : DefElem() { *this = ::std::move(from); } inline DefElem& operator=(const DefElem& from) { CopyFrom(from); return *this; } inline DefElem& operator=(DefElem&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const DefElem& default_instance(); static inline const DefElem* internal_default_instance() { return reinterpret_cast( &_DefElem_default_instance_); } static constexpr int kIndexInFileMessages = 202; friend void swap(DefElem& a, DefElem& b) { a.Swap(&b); } inline void Swap(DefElem* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(DefElem* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline DefElem* New() const final { return CreateMaybeMessage(nullptr); } DefElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const DefElem& from); void MergeFrom(const DefElem& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(DefElem* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.DefElem"; } protected: explicit DefElem(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kDefnamespaceFieldNumber = 1, kDefnameFieldNumber = 2, kArgFieldNumber = 3, kDefactionFieldNumber = 4, kLocationFieldNumber = 5, }; // string defnamespace = 1 [json_name = "defnamespace"]; void clear_defnamespace(); const std::string& defnamespace() const; void set_defnamespace(const std::string& value); void set_defnamespace(std::string&& value); void set_defnamespace(const char* value); void set_defnamespace(const char* value, size_t size); std::string* mutable_defnamespace(); std::string* release_defnamespace(); void set_allocated_defnamespace(std::string* defnamespace); private: const std::string& _internal_defnamespace() const; void _internal_set_defnamespace(const std::string& value); std::string* _internal_mutable_defnamespace(); public: // string defname = 2 [json_name = "defname"]; void clear_defname(); const std::string& defname() const; void set_defname(const std::string& value); void set_defname(std::string&& value); void set_defname(const char* value); void set_defname(const char* value, size_t size); std::string* mutable_defname(); std::string* release_defname(); void set_allocated_defname(std::string* defname); private: const std::string& _internal_defname() const; void _internal_set_defname(const std::string& value); std::string* _internal_mutable_defname(); public: // .pg_query.Node arg = 3 [json_name = "arg"]; bool has_arg() const; private: bool _internal_has_arg() const; public: void clear_arg(); const ::pg_query::Node& arg() const; ::pg_query::Node* release_arg(); ::pg_query::Node* mutable_arg(); void set_allocated_arg(::pg_query::Node* arg); private: const ::pg_query::Node& _internal_arg() const; ::pg_query::Node* _internal_mutable_arg(); public: void unsafe_arena_set_allocated_arg( ::pg_query::Node* arg); ::pg_query::Node* unsafe_arena_release_arg(); // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; void clear_defaction(); ::pg_query::DefElemAction defaction() const; void set_defaction(::pg_query::DefElemAction value); private: ::pg_query::DefElemAction _internal_defaction() const; void _internal_set_defaction(::pg_query::DefElemAction value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.DefElem) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr defnamespace_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr defname_; ::pg_query::Node* arg_; int defaction_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTblEntry PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblEntry) */ { public: inline RangeTblEntry() : RangeTblEntry(nullptr) {} virtual ~RangeTblEntry(); RangeTblEntry(const RangeTblEntry& from); RangeTblEntry(RangeTblEntry&& from) noexcept : RangeTblEntry() { *this = ::std::move(from); } inline RangeTblEntry& operator=(const RangeTblEntry& from) { CopyFrom(from); return *this; } inline RangeTblEntry& operator=(RangeTblEntry&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RangeTblEntry& default_instance(); static inline const RangeTblEntry* internal_default_instance() { return reinterpret_cast( &_RangeTblEntry_default_instance_); } static constexpr int kIndexInFileMessages = 203; friend void swap(RangeTblEntry& a, RangeTblEntry& b) { a.Swap(&b); } inline void Swap(RangeTblEntry* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTblEntry* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RangeTblEntry* New() const final { return CreateMaybeMessage(nullptr); } RangeTblEntry* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RangeTblEntry& from); void MergeFrom(const RangeTblEntry& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTblEntry* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTblEntry"; } protected: explicit RangeTblEntry(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kJoinaliasvarsFieldNumber = 10, kJoinleftcolsFieldNumber = 11, kJoinrightcolsFieldNumber = 12, kFunctionsFieldNumber = 13, kValuesListsFieldNumber = 16, kColtypesFieldNumber = 20, kColtypmodsFieldNumber = 21, kColcollationsFieldNumber = 22, kSecurityQualsFieldNumber = 32, kRelkindFieldNumber = 3, kCtenameFieldNumber = 17, kEnrnameFieldNumber = 23, kTablesampleFieldNumber = 5, kSubqueryFieldNumber = 6, kTablefuncFieldNumber = 15, kAliasFieldNumber = 25, kErefFieldNumber = 26, kRtekindFieldNumber = 1, kRelidFieldNumber = 2, kRellockmodeFieldNumber = 4, kJointypeFieldNumber = 8, kJoinmergedcolsFieldNumber = 9, kSecurityBarrierFieldNumber = 7, kFuncordinalityFieldNumber = 14, kSelfReferenceFieldNumber = 19, kLateralFieldNumber = 27, kEnrtuplesFieldNumber = 24, kCtelevelsupFieldNumber = 18, kInhFieldNumber = 28, kInFromClFieldNumber = 29, kRequiredPermsFieldNumber = 30, kCheckAsUserFieldNumber = 31, }; // repeated .pg_query.Node joinaliasvars = 10 [json_name = "joinaliasvars"]; int joinaliasvars_size() const; private: int _internal_joinaliasvars_size() const; public: void clear_joinaliasvars(); ::pg_query::Node* mutable_joinaliasvars(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_joinaliasvars(); private: const ::pg_query::Node& _internal_joinaliasvars(int index) const; ::pg_query::Node* _internal_add_joinaliasvars(); public: const ::pg_query::Node& joinaliasvars(int index) const; ::pg_query::Node* add_joinaliasvars(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& joinaliasvars() const; // repeated .pg_query.Node joinleftcols = 11 [json_name = "joinleftcols"]; int joinleftcols_size() const; private: int _internal_joinleftcols_size() const; public: void clear_joinleftcols(); ::pg_query::Node* mutable_joinleftcols(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_joinleftcols(); private: const ::pg_query::Node& _internal_joinleftcols(int index) const; ::pg_query::Node* _internal_add_joinleftcols(); public: const ::pg_query::Node& joinleftcols(int index) const; ::pg_query::Node* add_joinleftcols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& joinleftcols() const; // repeated .pg_query.Node joinrightcols = 12 [json_name = "joinrightcols"]; int joinrightcols_size() const; private: int _internal_joinrightcols_size() const; public: void clear_joinrightcols(); ::pg_query::Node* mutable_joinrightcols(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_joinrightcols(); private: const ::pg_query::Node& _internal_joinrightcols(int index) const; ::pg_query::Node* _internal_add_joinrightcols(); public: const ::pg_query::Node& joinrightcols(int index) const; ::pg_query::Node* add_joinrightcols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& joinrightcols() const; // repeated .pg_query.Node functions = 13 [json_name = "functions"]; int functions_size() const; private: int _internal_functions_size() const; public: void clear_functions(); ::pg_query::Node* mutable_functions(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_functions(); private: const ::pg_query::Node& _internal_functions(int index) const; ::pg_query::Node* _internal_add_functions(); public: const ::pg_query::Node& functions(int index) const; ::pg_query::Node* add_functions(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& functions() const; // repeated .pg_query.Node values_lists = 16 [json_name = "values_lists"]; int values_lists_size() const; private: int _internal_values_lists_size() const; public: void clear_values_lists(); ::pg_query::Node* mutable_values_lists(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_values_lists(); private: const ::pg_query::Node& _internal_values_lists(int index) const; ::pg_query::Node* _internal_add_values_lists(); public: const ::pg_query::Node& values_lists(int index) const; ::pg_query::Node* add_values_lists(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& values_lists() const; // repeated .pg_query.Node coltypes = 20 [json_name = "coltypes"]; int coltypes_size() const; private: int _internal_coltypes_size() const; public: void clear_coltypes(); ::pg_query::Node* mutable_coltypes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coltypes(); private: const ::pg_query::Node& _internal_coltypes(int index) const; ::pg_query::Node* _internal_add_coltypes(); public: const ::pg_query::Node& coltypes(int index) const; ::pg_query::Node* add_coltypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coltypes() const; // repeated .pg_query.Node coltypmods = 21 [json_name = "coltypmods"]; int coltypmods_size() const; private: int _internal_coltypmods_size() const; public: void clear_coltypmods(); ::pg_query::Node* mutable_coltypmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_coltypmods(); private: const ::pg_query::Node& _internal_coltypmods(int index) const; ::pg_query::Node* _internal_add_coltypmods(); public: const ::pg_query::Node& coltypmods(int index) const; ::pg_query::Node* add_coltypmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& coltypmods() const; // repeated .pg_query.Node colcollations = 22 [json_name = "colcollations"]; int colcollations_size() const; private: int _internal_colcollations_size() const; public: void clear_colcollations(); ::pg_query::Node* mutable_colcollations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_colcollations(); private: const ::pg_query::Node& _internal_colcollations(int index) const; ::pg_query::Node* _internal_add_colcollations(); public: const ::pg_query::Node& colcollations(int index) const; ::pg_query::Node* add_colcollations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& colcollations() const; // repeated .pg_query.Node security_quals = 32 [json_name = "securityQuals"]; int security_quals_size() const; private: int _internal_security_quals_size() const; public: void clear_security_quals(); ::pg_query::Node* mutable_security_quals(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_security_quals(); private: const ::pg_query::Node& _internal_security_quals(int index) const; ::pg_query::Node* _internal_add_security_quals(); public: const ::pg_query::Node& security_quals(int index) const; ::pg_query::Node* add_security_quals(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& security_quals() const; // string relkind = 3 [json_name = "relkind"]; void clear_relkind(); const std::string& relkind() const; void set_relkind(const std::string& value); void set_relkind(std::string&& value); void set_relkind(const char* value); void set_relkind(const char* value, size_t size); std::string* mutable_relkind(); std::string* release_relkind(); void set_allocated_relkind(std::string* relkind); private: const std::string& _internal_relkind() const; void _internal_set_relkind(const std::string& value); std::string* _internal_mutable_relkind(); public: // string ctename = 17 [json_name = "ctename"]; void clear_ctename(); const std::string& ctename() const; void set_ctename(const std::string& value); void set_ctename(std::string&& value); void set_ctename(const char* value); void set_ctename(const char* value, size_t size); std::string* mutable_ctename(); std::string* release_ctename(); void set_allocated_ctename(std::string* ctename); private: const std::string& _internal_ctename() const; void _internal_set_ctename(const std::string& value); std::string* _internal_mutable_ctename(); public: // string enrname = 23 [json_name = "enrname"]; void clear_enrname(); const std::string& enrname() const; void set_enrname(const std::string& value); void set_enrname(std::string&& value); void set_enrname(const char* value); void set_enrname(const char* value, size_t size); std::string* mutable_enrname(); std::string* release_enrname(); void set_allocated_enrname(std::string* enrname); private: const std::string& _internal_enrname() const; void _internal_set_enrname(const std::string& value); std::string* _internal_mutable_enrname(); public: // .pg_query.TableSampleClause tablesample = 5 [json_name = "tablesample"]; bool has_tablesample() const; private: bool _internal_has_tablesample() const; public: void clear_tablesample(); const ::pg_query::TableSampleClause& tablesample() const; ::pg_query::TableSampleClause* release_tablesample(); ::pg_query::TableSampleClause* mutable_tablesample(); void set_allocated_tablesample(::pg_query::TableSampleClause* tablesample); private: const ::pg_query::TableSampleClause& _internal_tablesample() const; ::pg_query::TableSampleClause* _internal_mutable_tablesample(); public: void unsafe_arena_set_allocated_tablesample( ::pg_query::TableSampleClause* tablesample); ::pg_query::TableSampleClause* unsafe_arena_release_tablesample(); // .pg_query.Query subquery = 6 [json_name = "subquery"]; bool has_subquery() const; private: bool _internal_has_subquery() const; public: void clear_subquery(); const ::pg_query::Query& subquery() const; ::pg_query::Query* release_subquery(); ::pg_query::Query* mutable_subquery(); void set_allocated_subquery(::pg_query::Query* subquery); private: const ::pg_query::Query& _internal_subquery() const; ::pg_query::Query* _internal_mutable_subquery(); public: void unsafe_arena_set_allocated_subquery( ::pg_query::Query* subquery); ::pg_query::Query* unsafe_arena_release_subquery(); // .pg_query.TableFunc tablefunc = 15 [json_name = "tablefunc"]; bool has_tablefunc() const; private: bool _internal_has_tablefunc() const; public: void clear_tablefunc(); const ::pg_query::TableFunc& tablefunc() const; ::pg_query::TableFunc* release_tablefunc(); ::pg_query::TableFunc* mutable_tablefunc(); void set_allocated_tablefunc(::pg_query::TableFunc* tablefunc); private: const ::pg_query::TableFunc& _internal_tablefunc() const; ::pg_query::TableFunc* _internal_mutable_tablefunc(); public: void unsafe_arena_set_allocated_tablefunc( ::pg_query::TableFunc* tablefunc); ::pg_query::TableFunc* unsafe_arena_release_tablefunc(); // .pg_query.Alias alias = 25 [json_name = "alias"]; bool has_alias() const; private: bool _internal_has_alias() const; public: void clear_alias(); const ::pg_query::Alias& alias() const; ::pg_query::Alias* release_alias(); ::pg_query::Alias* mutable_alias(); void set_allocated_alias(::pg_query::Alias* alias); private: const ::pg_query::Alias& _internal_alias() const; ::pg_query::Alias* _internal_mutable_alias(); public: void unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias); ::pg_query::Alias* unsafe_arena_release_alias(); // .pg_query.Alias eref = 26 [json_name = "eref"]; bool has_eref() const; private: bool _internal_has_eref() const; public: void clear_eref(); const ::pg_query::Alias& eref() const; ::pg_query::Alias* release_eref(); ::pg_query::Alias* mutable_eref(); void set_allocated_eref(::pg_query::Alias* eref); private: const ::pg_query::Alias& _internal_eref() const; ::pg_query::Alias* _internal_mutable_eref(); public: void unsafe_arena_set_allocated_eref( ::pg_query::Alias* eref); ::pg_query::Alias* unsafe_arena_release_eref(); // .pg_query.RTEKind rtekind = 1 [json_name = "rtekind"]; void clear_rtekind(); ::pg_query::RTEKind rtekind() const; void set_rtekind(::pg_query::RTEKind value); private: ::pg_query::RTEKind _internal_rtekind() const; void _internal_set_rtekind(::pg_query::RTEKind value); public: // uint32 relid = 2 [json_name = "relid"]; void clear_relid(); ::PROTOBUF_NAMESPACE_ID::uint32 relid() const; void set_relid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_relid() const; void _internal_set_relid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // int32 rellockmode = 4 [json_name = "rellockmode"]; void clear_rellockmode(); ::PROTOBUF_NAMESPACE_ID::int32 rellockmode() const; void set_rellockmode(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_rellockmode() const; void _internal_set_rellockmode(::PROTOBUF_NAMESPACE_ID::int32 value); public: // .pg_query.JoinType jointype = 8 [json_name = "jointype"]; void clear_jointype(); ::pg_query::JoinType jointype() const; void set_jointype(::pg_query::JoinType value); private: ::pg_query::JoinType _internal_jointype() const; void _internal_set_jointype(::pg_query::JoinType value); public: // int32 joinmergedcols = 9 [json_name = "joinmergedcols"]; void clear_joinmergedcols(); ::PROTOBUF_NAMESPACE_ID::int32 joinmergedcols() const; void set_joinmergedcols(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_joinmergedcols() const; void _internal_set_joinmergedcols(::PROTOBUF_NAMESPACE_ID::int32 value); public: // bool security_barrier = 7 [json_name = "security_barrier"]; void clear_security_barrier(); bool security_barrier() const; void set_security_barrier(bool value); private: bool _internal_security_barrier() const; void _internal_set_security_barrier(bool value); public: // bool funcordinality = 14 [json_name = "funcordinality"]; void clear_funcordinality(); bool funcordinality() const; void set_funcordinality(bool value); private: bool _internal_funcordinality() const; void _internal_set_funcordinality(bool value); public: // bool self_reference = 19 [json_name = "self_reference"]; void clear_self_reference(); bool self_reference() const; void set_self_reference(bool value); private: bool _internal_self_reference() const; void _internal_set_self_reference(bool value); public: // bool lateral = 27 [json_name = "lateral"]; void clear_lateral(); bool lateral() const; void set_lateral(bool value); private: bool _internal_lateral() const; void _internal_set_lateral(bool value); public: // double enrtuples = 24 [json_name = "enrtuples"]; void clear_enrtuples(); double enrtuples() const; void set_enrtuples(double value); private: double _internal_enrtuples() const; void _internal_set_enrtuples(double value); public: // uint32 ctelevelsup = 18 [json_name = "ctelevelsup"]; void clear_ctelevelsup(); ::PROTOBUF_NAMESPACE_ID::uint32 ctelevelsup() const; void set_ctelevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_ctelevelsup() const; void _internal_set_ctelevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool inh = 28 [json_name = "inh"]; void clear_inh(); bool inh() const; void set_inh(bool value); private: bool _internal_inh() const; void _internal_set_inh(bool value); public: // bool in_from_cl = 29 [json_name = "inFromCl"]; void clear_in_from_cl(); bool in_from_cl() const; void set_in_from_cl(bool value); private: bool _internal_in_from_cl() const; void _internal_set_in_from_cl(bool value); public: // uint32 required_perms = 30 [json_name = "requiredPerms"]; void clear_required_perms(); ::PROTOBUF_NAMESPACE_ID::uint32 required_perms() const; void set_required_perms(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_required_perms() const; void _internal_set_required_perms(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 check_as_user = 31 [json_name = "checkAsUser"]; void clear_check_as_user(); ::PROTOBUF_NAMESPACE_ID::uint32 check_as_user() const; void set_check_as_user(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_check_as_user() const; void _internal_set_check_as_user(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTblEntry) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > joinaliasvars_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > joinleftcols_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > joinrightcols_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > functions_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > values_lists_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypes_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > coltypmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > colcollations_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > security_quals_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relkind_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr ctename_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr enrname_; ::pg_query::TableSampleClause* tablesample_; ::pg_query::Query* subquery_; ::pg_query::TableFunc* tablefunc_; ::pg_query::Alias* alias_; ::pg_query::Alias* eref_; int rtekind_; ::PROTOBUF_NAMESPACE_ID::uint32 relid_; ::PROTOBUF_NAMESPACE_ID::int32 rellockmode_; int jointype_; ::PROTOBUF_NAMESPACE_ID::int32 joinmergedcols_; bool security_barrier_; bool funcordinality_; bool self_reference_; bool lateral_; double enrtuples_; ::PROTOBUF_NAMESPACE_ID::uint32 ctelevelsup_; bool inh_; bool in_from_cl_; ::PROTOBUF_NAMESPACE_ID::uint32 required_perms_; ::PROTOBUF_NAMESPACE_ID::uint32 check_as_user_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RangeTblFunction PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RangeTblFunction) */ { public: inline RangeTblFunction() : RangeTblFunction(nullptr) {} virtual ~RangeTblFunction(); RangeTblFunction(const RangeTblFunction& from); RangeTblFunction(RangeTblFunction&& from) noexcept : RangeTblFunction() { *this = ::std::move(from); } inline RangeTblFunction& operator=(const RangeTblFunction& from) { CopyFrom(from); return *this; } inline RangeTblFunction& operator=(RangeTblFunction&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RangeTblFunction& default_instance(); static inline const RangeTblFunction* internal_default_instance() { return reinterpret_cast( &_RangeTblFunction_default_instance_); } static constexpr int kIndexInFileMessages = 204; friend void swap(RangeTblFunction& a, RangeTblFunction& b) { a.Swap(&b); } inline void Swap(RangeTblFunction* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RangeTblFunction* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RangeTblFunction* New() const final { return CreateMaybeMessage(nullptr); } RangeTblFunction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RangeTblFunction& from); void MergeFrom(const RangeTblFunction& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RangeTblFunction* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RangeTblFunction"; } protected: explicit RangeTblFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kFunccolnamesFieldNumber = 3, kFunccoltypesFieldNumber = 4, kFunccoltypmodsFieldNumber = 5, kFunccolcollationsFieldNumber = 6, kFuncexprFieldNumber = 1, kFunccolcountFieldNumber = 2, }; // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; int funccolnames_size() const; private: int _internal_funccolnames_size() const; public: void clear_funccolnames(); ::pg_query::Node* mutable_funccolnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funccolnames(); private: const ::pg_query::Node& _internal_funccolnames(int index) const; ::pg_query::Node* _internal_add_funccolnames(); public: const ::pg_query::Node& funccolnames(int index) const; ::pg_query::Node* add_funccolnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funccolnames() const; // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; int funccoltypes_size() const; private: int _internal_funccoltypes_size() const; public: void clear_funccoltypes(); ::pg_query::Node* mutable_funccoltypes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funccoltypes(); private: const ::pg_query::Node& _internal_funccoltypes(int index) const; ::pg_query::Node* _internal_add_funccoltypes(); public: const ::pg_query::Node& funccoltypes(int index) const; ::pg_query::Node* add_funccoltypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funccoltypes() const; // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; int funccoltypmods_size() const; private: int _internal_funccoltypmods_size() const; public: void clear_funccoltypmods(); ::pg_query::Node* mutable_funccoltypmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funccoltypmods(); private: const ::pg_query::Node& _internal_funccoltypmods(int index) const; ::pg_query::Node* _internal_add_funccoltypmods(); public: const ::pg_query::Node& funccoltypmods(int index) const; ::pg_query::Node* add_funccoltypmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funccoltypmods() const; // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; int funccolcollations_size() const; private: int _internal_funccolcollations_size() const; public: void clear_funccolcollations(); ::pg_query::Node* mutable_funccolcollations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_funccolcollations(); private: const ::pg_query::Node& _internal_funccolcollations(int index) const; ::pg_query::Node* _internal_add_funccolcollations(); public: const ::pg_query::Node& funccolcollations(int index) const; ::pg_query::Node* add_funccolcollations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& funccolcollations() const; // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; bool has_funcexpr() const; private: bool _internal_has_funcexpr() const; public: void clear_funcexpr(); const ::pg_query::Node& funcexpr() const; ::pg_query::Node* release_funcexpr(); ::pg_query::Node* mutable_funcexpr(); void set_allocated_funcexpr(::pg_query::Node* funcexpr); private: const ::pg_query::Node& _internal_funcexpr() const; ::pg_query::Node* _internal_mutable_funcexpr(); public: void unsafe_arena_set_allocated_funcexpr( ::pg_query::Node* funcexpr); ::pg_query::Node* unsafe_arena_release_funcexpr(); // int32 funccolcount = 2 [json_name = "funccolcount"]; void clear_funccolcount(); ::PROTOBUF_NAMESPACE_ID::int32 funccolcount() const; void set_funccolcount(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_funccolcount() const; void _internal_set_funccolcount(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RangeTblFunction) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccolnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccoltypes_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccoltypmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > funccolcollations_; ::pg_query::Node* funcexpr_; ::PROTOBUF_NAMESPACE_ID::int32 funccolcount_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TableSampleClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TableSampleClause) */ { public: inline TableSampleClause() : TableSampleClause(nullptr) {} virtual ~TableSampleClause(); TableSampleClause(const TableSampleClause& from); TableSampleClause(TableSampleClause&& from) noexcept : TableSampleClause() { *this = ::std::move(from); } inline TableSampleClause& operator=(const TableSampleClause& from) { CopyFrom(from); return *this; } inline TableSampleClause& operator=(TableSampleClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const TableSampleClause& default_instance(); static inline const TableSampleClause* internal_default_instance() { return reinterpret_cast( &_TableSampleClause_default_instance_); } static constexpr int kIndexInFileMessages = 205; friend void swap(TableSampleClause& a, TableSampleClause& b) { a.Swap(&b); } inline void Swap(TableSampleClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TableSampleClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline TableSampleClause* New() const final { return CreateMaybeMessage(nullptr); } TableSampleClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const TableSampleClause& from); void MergeFrom(const TableSampleClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TableSampleClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TableSampleClause"; } protected: explicit TableSampleClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kArgsFieldNumber = 2, kRepeatableFieldNumber = 3, kTsmhandlerFieldNumber = 1, }; // repeated .pg_query.Node args = 2 [json_name = "args"]; int args_size() const; private: int _internal_args_size() const; public: void clear_args(); ::pg_query::Node* mutable_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_args(); private: const ::pg_query::Node& _internal_args(int index) const; ::pg_query::Node* _internal_add_args(); public: const ::pg_query::Node& args(int index) const; ::pg_query::Node* add_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& args() const; // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; bool has_repeatable() const; private: bool _internal_has_repeatable() const; public: void clear_repeatable(); const ::pg_query::Node& repeatable() const; ::pg_query::Node* release_repeatable(); ::pg_query::Node* mutable_repeatable(); void set_allocated_repeatable(::pg_query::Node* repeatable); private: const ::pg_query::Node& _internal_repeatable() const; ::pg_query::Node* _internal_mutable_repeatable(); public: void unsafe_arena_set_allocated_repeatable( ::pg_query::Node* repeatable); ::pg_query::Node* unsafe_arena_release_repeatable(); // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; void clear_tsmhandler(); ::PROTOBUF_NAMESPACE_ID::uint32 tsmhandler() const; void set_tsmhandler(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_tsmhandler() const; void _internal_set_tsmhandler(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.TableSampleClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > args_; ::pg_query::Node* repeatable_; ::PROTOBUF_NAMESPACE_ID::uint32 tsmhandler_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class WithCheckOption PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WithCheckOption) */ { public: inline WithCheckOption() : WithCheckOption(nullptr) {} virtual ~WithCheckOption(); WithCheckOption(const WithCheckOption& from); WithCheckOption(WithCheckOption&& from) noexcept : WithCheckOption() { *this = ::std::move(from); } inline WithCheckOption& operator=(const WithCheckOption& from) { CopyFrom(from); return *this; } inline WithCheckOption& operator=(WithCheckOption&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const WithCheckOption& default_instance(); static inline const WithCheckOption* internal_default_instance() { return reinterpret_cast( &_WithCheckOption_default_instance_); } static constexpr int kIndexInFileMessages = 206; friend void swap(WithCheckOption& a, WithCheckOption& b) { a.Swap(&b); } inline void Swap(WithCheckOption* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WithCheckOption* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline WithCheckOption* New() const final { return CreateMaybeMessage(nullptr); } WithCheckOption* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const WithCheckOption& from); void MergeFrom(const WithCheckOption& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(WithCheckOption* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.WithCheckOption"; } protected: explicit WithCheckOption(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRelnameFieldNumber = 2, kPolnameFieldNumber = 3, kQualFieldNumber = 4, kKindFieldNumber = 1, kCascadedFieldNumber = 5, }; // string relname = 2 [json_name = "relname"]; void clear_relname(); const std::string& relname() const; void set_relname(const std::string& value); void set_relname(std::string&& value); void set_relname(const char* value); void set_relname(const char* value, size_t size); std::string* mutable_relname(); std::string* release_relname(); void set_allocated_relname(std::string* relname); private: const std::string& _internal_relname() const; void _internal_set_relname(const std::string& value); std::string* _internal_mutable_relname(); public: // string polname = 3 [json_name = "polname"]; void clear_polname(); const std::string& polname() const; void set_polname(const std::string& value); void set_polname(std::string&& value); void set_polname(const char* value); void set_polname(const char* value, size_t size); std::string* mutable_polname(); std::string* release_polname(); void set_allocated_polname(std::string* polname); private: const std::string& _internal_polname() const; void _internal_set_polname(const std::string& value); std::string* _internal_mutable_polname(); public: // .pg_query.Node qual = 4 [json_name = "qual"]; bool has_qual() const; private: bool _internal_has_qual() const; public: void clear_qual(); const ::pg_query::Node& qual() const; ::pg_query::Node* release_qual(); ::pg_query::Node* mutable_qual(); void set_allocated_qual(::pg_query::Node* qual); private: const ::pg_query::Node& _internal_qual() const; ::pg_query::Node* _internal_mutable_qual(); public: void unsafe_arena_set_allocated_qual( ::pg_query::Node* qual); ::pg_query::Node* unsafe_arena_release_qual(); // .pg_query.WCOKind kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::WCOKind kind() const; void set_kind(::pg_query::WCOKind value); private: ::pg_query::WCOKind _internal_kind() const; void _internal_set_kind(::pg_query::WCOKind value); public: // bool cascaded = 5 [json_name = "cascaded"]; void clear_cascaded(); bool cascaded() const; void set_cascaded(bool value); private: bool _internal_cascaded() const; void _internal_set_cascaded(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.WithCheckOption) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr relname_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr polname_; ::pg_query::Node* qual_; int kind_; bool cascaded_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class SortGroupClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.SortGroupClause) */ { public: inline SortGroupClause() : SortGroupClause(nullptr) {} virtual ~SortGroupClause(); SortGroupClause(const SortGroupClause& from); SortGroupClause(SortGroupClause&& from) noexcept : SortGroupClause() { *this = ::std::move(from); } inline SortGroupClause& operator=(const SortGroupClause& from) { CopyFrom(from); return *this; } inline SortGroupClause& operator=(SortGroupClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const SortGroupClause& default_instance(); static inline const SortGroupClause* internal_default_instance() { return reinterpret_cast( &_SortGroupClause_default_instance_); } static constexpr int kIndexInFileMessages = 207; friend void swap(SortGroupClause& a, SortGroupClause& b) { a.Swap(&b); } inline void Swap(SortGroupClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(SortGroupClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline SortGroupClause* New() const final { return CreateMaybeMessage(nullptr); } SortGroupClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const SortGroupClause& from); void MergeFrom(const SortGroupClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(SortGroupClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.SortGroupClause"; } protected: explicit SortGroupClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTleSortGroupRefFieldNumber = 1, kEqopFieldNumber = 2, kSortopFieldNumber = 3, kNullsFirstFieldNumber = 4, kHashableFieldNumber = 5, }; // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; void clear_tle_sort_group_ref(); ::PROTOBUF_NAMESPACE_ID::uint32 tle_sort_group_ref() const; void set_tle_sort_group_ref(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_tle_sort_group_ref() const; void _internal_set_tle_sort_group_ref(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 eqop = 2 [json_name = "eqop"]; void clear_eqop(); ::PROTOBUF_NAMESPACE_ID::uint32 eqop() const; void set_eqop(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_eqop() const; void _internal_set_eqop(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 sortop = 3 [json_name = "sortop"]; void clear_sortop(); ::PROTOBUF_NAMESPACE_ID::uint32 sortop() const; void set_sortop(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_sortop() const; void _internal_set_sortop(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool nulls_first = 4 [json_name = "nulls_first"]; void clear_nulls_first(); bool nulls_first() const; void set_nulls_first(bool value); private: bool _internal_nulls_first() const; void _internal_set_nulls_first(bool value); public: // bool hashable = 5 [json_name = "hashable"]; void clear_hashable(); bool hashable() const; void set_hashable(bool value); private: bool _internal_hashable() const; void _internal_set_hashable(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.SortGroupClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::uint32 tle_sort_group_ref_; ::PROTOBUF_NAMESPACE_ID::uint32 eqop_; ::PROTOBUF_NAMESPACE_ID::uint32 sortop_; bool nulls_first_; bool hashable_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class GroupingSet PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.GroupingSet) */ { public: inline GroupingSet() : GroupingSet(nullptr) {} virtual ~GroupingSet(); GroupingSet(const GroupingSet& from); GroupingSet(GroupingSet&& from) noexcept : GroupingSet() { *this = ::std::move(from); } inline GroupingSet& operator=(const GroupingSet& from) { CopyFrom(from); return *this; } inline GroupingSet& operator=(GroupingSet&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const GroupingSet& default_instance(); static inline const GroupingSet* internal_default_instance() { return reinterpret_cast( &_GroupingSet_default_instance_); } static constexpr int kIndexInFileMessages = 208; friend void swap(GroupingSet& a, GroupingSet& b) { a.Swap(&b); } inline void Swap(GroupingSet* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(GroupingSet* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline GroupingSet* New() const final { return CreateMaybeMessage(nullptr); } GroupingSet* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const GroupingSet& from); void MergeFrom(const GroupingSet& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(GroupingSet* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.GroupingSet"; } protected: explicit GroupingSet(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kContentFieldNumber = 2, kKindFieldNumber = 1, kLocationFieldNumber = 3, }; // repeated .pg_query.Node content = 2 [json_name = "content"]; int content_size() const; private: int _internal_content_size() const; public: void clear_content(); ::pg_query::Node* mutable_content(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_content(); private: const ::pg_query::Node& _internal_content(int index) const; ::pg_query::Node* _internal_add_content(); public: const ::pg_query::Node& content(int index) const; ::pg_query::Node* add_content(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& content() const; // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::GroupingSetKind kind() const; void set_kind(::pg_query::GroupingSetKind value); private: ::pg_query::GroupingSetKind _internal_kind() const; void _internal_set_kind(::pg_query::GroupingSetKind value); public: // int32 location = 3 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.GroupingSet) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > content_; int kind_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class WindowClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WindowClause) */ { public: inline WindowClause() : WindowClause(nullptr) {} virtual ~WindowClause(); WindowClause(const WindowClause& from); WindowClause(WindowClause&& from) noexcept : WindowClause() { *this = ::std::move(from); } inline WindowClause& operator=(const WindowClause& from) { CopyFrom(from); return *this; } inline WindowClause& operator=(WindowClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const WindowClause& default_instance(); static inline const WindowClause* internal_default_instance() { return reinterpret_cast( &_WindowClause_default_instance_); } static constexpr int kIndexInFileMessages = 209; friend void swap(WindowClause& a, WindowClause& b) { a.Swap(&b); } inline void Swap(WindowClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WindowClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline WindowClause* New() const final { return CreateMaybeMessage(nullptr); } WindowClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const WindowClause& from); void MergeFrom(const WindowClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(WindowClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.WindowClause"; } protected: explicit WindowClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPartitionClauseFieldNumber = 3, kOrderClauseFieldNumber = 4, kNameFieldNumber = 1, kRefnameFieldNumber = 2, kStartOffsetFieldNumber = 6, kEndOffsetFieldNumber = 7, kFrameOptionsFieldNumber = 5, kStartInRangeFuncFieldNumber = 8, kEndInRangeFuncFieldNumber = 9, kInRangeCollFieldNumber = 10, kInRangeAscFieldNumber = 11, kInRangeNullsFirstFieldNumber = 12, kCopiedOrderFieldNumber = 14, kWinrefFieldNumber = 13, }; // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; int partition_clause_size() const; private: int _internal_partition_clause_size() const; public: void clear_partition_clause(); ::pg_query::Node* mutable_partition_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_partition_clause(); private: const ::pg_query::Node& _internal_partition_clause(int index) const; ::pg_query::Node* _internal_add_partition_clause(); public: const ::pg_query::Node& partition_clause(int index) const; ::pg_query::Node* add_partition_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& partition_clause() const; // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; int order_clause_size() const; private: int _internal_order_clause_size() const; public: void clear_order_clause(); ::pg_query::Node* mutable_order_clause(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_order_clause(); private: const ::pg_query::Node& _internal_order_clause(int index) const; ::pg_query::Node* _internal_add_order_clause(); public: const ::pg_query::Node& order_clause(int index) const; ::pg_query::Node* add_order_clause(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& order_clause() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // string refname = 2 [json_name = "refname"]; void clear_refname(); const std::string& refname() const; void set_refname(const std::string& value); void set_refname(std::string&& value); void set_refname(const char* value); void set_refname(const char* value, size_t size); std::string* mutable_refname(); std::string* release_refname(); void set_allocated_refname(std::string* refname); private: const std::string& _internal_refname() const; void _internal_set_refname(const std::string& value); std::string* _internal_mutable_refname(); public: // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; bool has_start_offset() const; private: bool _internal_has_start_offset() const; public: void clear_start_offset(); const ::pg_query::Node& start_offset() const; ::pg_query::Node* release_start_offset(); ::pg_query::Node* mutable_start_offset(); void set_allocated_start_offset(::pg_query::Node* start_offset); private: const ::pg_query::Node& _internal_start_offset() const; ::pg_query::Node* _internal_mutable_start_offset(); public: void unsafe_arena_set_allocated_start_offset( ::pg_query::Node* start_offset); ::pg_query::Node* unsafe_arena_release_start_offset(); // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; bool has_end_offset() const; private: bool _internal_has_end_offset() const; public: void clear_end_offset(); const ::pg_query::Node& end_offset() const; ::pg_query::Node* release_end_offset(); ::pg_query::Node* mutable_end_offset(); void set_allocated_end_offset(::pg_query::Node* end_offset); private: const ::pg_query::Node& _internal_end_offset() const; ::pg_query::Node* _internal_mutable_end_offset(); public: void unsafe_arena_set_allocated_end_offset( ::pg_query::Node* end_offset); ::pg_query::Node* unsafe_arena_release_end_offset(); // int32 frame_options = 5 [json_name = "frameOptions"]; void clear_frame_options(); ::PROTOBUF_NAMESPACE_ID::int32 frame_options() const; void set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_frame_options() const; void _internal_set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value); public: // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; void clear_start_in_range_func(); ::PROTOBUF_NAMESPACE_ID::uint32 start_in_range_func() const; void set_start_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_start_in_range_func() const; void _internal_set_start_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; void clear_end_in_range_func(); ::PROTOBUF_NAMESPACE_ID::uint32 end_in_range_func() const; void set_end_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_end_in_range_func() const; void _internal_set_end_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; void clear_in_range_coll(); ::PROTOBUF_NAMESPACE_ID::uint32 in_range_coll() const; void set_in_range_coll(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_in_range_coll() const; void _internal_set_in_range_coll(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool in_range_asc = 11 [json_name = "inRangeAsc"]; void clear_in_range_asc(); bool in_range_asc() const; void set_in_range_asc(bool value); private: bool _internal_in_range_asc() const; void _internal_set_in_range_asc(bool value); public: // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; void clear_in_range_nulls_first(); bool in_range_nulls_first() const; void set_in_range_nulls_first(bool value); private: bool _internal_in_range_nulls_first() const; void _internal_set_in_range_nulls_first(bool value); public: // bool copied_order = 14 [json_name = "copiedOrder"]; void clear_copied_order(); bool copied_order() const; void set_copied_order(bool value); private: bool _internal_copied_order() const; void _internal_set_copied_order(bool value); public: // uint32 winref = 13 [json_name = "winref"]; void clear_winref(); ::PROTOBUF_NAMESPACE_ID::uint32 winref() const; void set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_winref() const; void _internal_set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.WindowClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > partition_clause_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > order_clause_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr refname_; ::pg_query::Node* start_offset_; ::pg_query::Node* end_offset_; ::PROTOBUF_NAMESPACE_ID::int32 frame_options_; ::PROTOBUF_NAMESPACE_ID::uint32 start_in_range_func_; ::PROTOBUF_NAMESPACE_ID::uint32 end_in_range_func_; ::PROTOBUF_NAMESPACE_ID::uint32 in_range_coll_; bool in_range_asc_; bool in_range_nulls_first_; bool copied_order_; ::PROTOBUF_NAMESPACE_ID::uint32 winref_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ObjectWithArgs PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ObjectWithArgs) */ { public: inline ObjectWithArgs() : ObjectWithArgs(nullptr) {} virtual ~ObjectWithArgs(); ObjectWithArgs(const ObjectWithArgs& from); ObjectWithArgs(ObjectWithArgs&& from) noexcept : ObjectWithArgs() { *this = ::std::move(from); } inline ObjectWithArgs& operator=(const ObjectWithArgs& from) { CopyFrom(from); return *this; } inline ObjectWithArgs& operator=(ObjectWithArgs&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ObjectWithArgs& default_instance(); static inline const ObjectWithArgs* internal_default_instance() { return reinterpret_cast( &_ObjectWithArgs_default_instance_); } static constexpr int kIndexInFileMessages = 210; friend void swap(ObjectWithArgs& a, ObjectWithArgs& b) { a.Swap(&b); } inline void Swap(ObjectWithArgs* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ObjectWithArgs* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ObjectWithArgs* New() const final { return CreateMaybeMessage(nullptr); } ObjectWithArgs* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ObjectWithArgs& from); void MergeFrom(const ObjectWithArgs& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ObjectWithArgs* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ObjectWithArgs"; } protected: explicit ObjectWithArgs(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kObjnameFieldNumber = 1, kObjargsFieldNumber = 2, kArgsUnspecifiedFieldNumber = 3, }; // repeated .pg_query.Node objname = 1 [json_name = "objname"]; int objname_size() const; private: int _internal_objname_size() const; public: void clear_objname(); ::pg_query::Node* mutable_objname(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_objname(); private: const ::pg_query::Node& _internal_objname(int index) const; ::pg_query::Node* _internal_add_objname(); public: const ::pg_query::Node& objname(int index) const; ::pg_query::Node* add_objname(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& objname() const; // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; int objargs_size() const; private: int _internal_objargs_size() const; public: void clear_objargs(); ::pg_query::Node* mutable_objargs(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_objargs(); private: const ::pg_query::Node& _internal_objargs(int index) const; ::pg_query::Node* _internal_add_objargs(); public: const ::pg_query::Node& objargs(int index) const; ::pg_query::Node* add_objargs(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& objargs() const; // bool args_unspecified = 3 [json_name = "args_unspecified"]; void clear_args_unspecified(); bool args_unspecified() const; void set_args_unspecified(bool value); private: bool _internal_args_unspecified() const; void _internal_set_args_unspecified(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.ObjectWithArgs) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objname_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > objargs_; bool args_unspecified_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class AccessPriv PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.AccessPriv) */ { public: inline AccessPriv() : AccessPriv(nullptr) {} virtual ~AccessPriv(); AccessPriv(const AccessPriv& from); AccessPriv(AccessPriv&& from) noexcept : AccessPriv() { *this = ::std::move(from); } inline AccessPriv& operator=(const AccessPriv& from) { CopyFrom(from); return *this; } inline AccessPriv& operator=(AccessPriv&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const AccessPriv& default_instance(); static inline const AccessPriv* internal_default_instance() { return reinterpret_cast( &_AccessPriv_default_instance_); } static constexpr int kIndexInFileMessages = 211; friend void swap(AccessPriv& a, AccessPriv& b) { a.Swap(&b); } inline void Swap(AccessPriv* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(AccessPriv* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline AccessPriv* New() const final { return CreateMaybeMessage(nullptr); } AccessPriv* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const AccessPriv& from); void MergeFrom(const AccessPriv& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(AccessPriv* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.AccessPriv"; } protected: explicit AccessPriv(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kColsFieldNumber = 2, kPrivNameFieldNumber = 1, }; // repeated .pg_query.Node cols = 2 [json_name = "cols"]; int cols_size() const; private: int _internal_cols_size() const; public: void clear_cols(); ::pg_query::Node* mutable_cols(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_cols(); private: const ::pg_query::Node& _internal_cols(int index) const; ::pg_query::Node* _internal_add_cols(); public: const ::pg_query::Node& cols(int index) const; ::pg_query::Node* add_cols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& cols() const; // string priv_name = 1 [json_name = "priv_name"]; void clear_priv_name(); const std::string& priv_name() const; void set_priv_name(const std::string& value); void set_priv_name(std::string&& value); void set_priv_name(const char* value); void set_priv_name(const char* value, size_t size); std::string* mutable_priv_name(); std::string* release_priv_name(); void set_allocated_priv_name(std::string* priv_name); private: const std::string& _internal_priv_name() const; void _internal_set_priv_name(const std::string& value); std::string* _internal_mutable_priv_name(); public: // @@protoc_insertion_point(class_scope:pg_query.AccessPriv) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > cols_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr priv_name_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CreateOpClassItem PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CreateOpClassItem) */ { public: inline CreateOpClassItem() : CreateOpClassItem(nullptr) {} virtual ~CreateOpClassItem(); CreateOpClassItem(const CreateOpClassItem& from); CreateOpClassItem(CreateOpClassItem&& from) noexcept : CreateOpClassItem() { *this = ::std::move(from); } inline CreateOpClassItem& operator=(const CreateOpClassItem& from) { CopyFrom(from); return *this; } inline CreateOpClassItem& operator=(CreateOpClassItem&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CreateOpClassItem& default_instance(); static inline const CreateOpClassItem* internal_default_instance() { return reinterpret_cast( &_CreateOpClassItem_default_instance_); } static constexpr int kIndexInFileMessages = 212; friend void swap(CreateOpClassItem& a, CreateOpClassItem& b) { a.Swap(&b); } inline void Swap(CreateOpClassItem* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CreateOpClassItem* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CreateOpClassItem* New() const final { return CreateMaybeMessage(nullptr); } CreateOpClassItem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CreateOpClassItem& from); void MergeFrom(const CreateOpClassItem& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CreateOpClassItem* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CreateOpClassItem"; } protected: explicit CreateOpClassItem(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kOrderFamilyFieldNumber = 4, kClassArgsFieldNumber = 5, kNameFieldNumber = 2, kStoredtypeFieldNumber = 6, kItemtypeFieldNumber = 1, kNumberFieldNumber = 3, }; // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; int order_family_size() const; private: int _internal_order_family_size() const; public: void clear_order_family(); ::pg_query::Node* mutable_order_family(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_order_family(); private: const ::pg_query::Node& _internal_order_family(int index) const; ::pg_query::Node* _internal_add_order_family(); public: const ::pg_query::Node& order_family(int index) const; ::pg_query::Node* add_order_family(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& order_family() const; // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; int class_args_size() const; private: int _internal_class_args_size() const; public: void clear_class_args(); ::pg_query::Node* mutable_class_args(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_class_args(); private: const ::pg_query::Node& _internal_class_args(int index) const; ::pg_query::Node* _internal_add_class_args(); public: const ::pg_query::Node& class_args(int index) const; ::pg_query::Node* add_class_args(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& class_args() const; // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; bool has_name() const; private: bool _internal_has_name() const; public: void clear_name(); const ::pg_query::ObjectWithArgs& name() const; ::pg_query::ObjectWithArgs* release_name(); ::pg_query::ObjectWithArgs* mutable_name(); void set_allocated_name(::pg_query::ObjectWithArgs* name); private: const ::pg_query::ObjectWithArgs& _internal_name() const; ::pg_query::ObjectWithArgs* _internal_mutable_name(); public: void unsafe_arena_set_allocated_name( ::pg_query::ObjectWithArgs* name); ::pg_query::ObjectWithArgs* unsafe_arena_release_name(); // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; bool has_storedtype() const; private: bool _internal_has_storedtype() const; public: void clear_storedtype(); const ::pg_query::TypeName& storedtype() const; ::pg_query::TypeName* release_storedtype(); ::pg_query::TypeName* mutable_storedtype(); void set_allocated_storedtype(::pg_query::TypeName* storedtype); private: const ::pg_query::TypeName& _internal_storedtype() const; ::pg_query::TypeName* _internal_mutable_storedtype(); public: void unsafe_arena_set_allocated_storedtype( ::pg_query::TypeName* storedtype); ::pg_query::TypeName* unsafe_arena_release_storedtype(); // int32 itemtype = 1 [json_name = "itemtype"]; void clear_itemtype(); ::PROTOBUF_NAMESPACE_ID::int32 itemtype() const; void set_itemtype(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_itemtype() const; void _internal_set_itemtype(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 number = 3 [json_name = "number"]; void clear_number(); ::PROTOBUF_NAMESPACE_ID::int32 number() const; void set_number(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_number() const; void _internal_set_number(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CreateOpClassItem) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > order_family_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > class_args_; ::pg_query::ObjectWithArgs* name_; ::pg_query::TypeName* storedtype_; ::PROTOBUF_NAMESPACE_ID::int32 itemtype_; ::PROTOBUF_NAMESPACE_ID::int32 number_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TableLikeClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TableLikeClause) */ { public: inline TableLikeClause() : TableLikeClause(nullptr) {} virtual ~TableLikeClause(); TableLikeClause(const TableLikeClause& from); TableLikeClause(TableLikeClause&& from) noexcept : TableLikeClause() { *this = ::std::move(from); } inline TableLikeClause& operator=(const TableLikeClause& from) { CopyFrom(from); return *this; } inline TableLikeClause& operator=(TableLikeClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const TableLikeClause& default_instance(); static inline const TableLikeClause* internal_default_instance() { return reinterpret_cast( &_TableLikeClause_default_instance_); } static constexpr int kIndexInFileMessages = 213; friend void swap(TableLikeClause& a, TableLikeClause& b) { a.Swap(&b); } inline void Swap(TableLikeClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TableLikeClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline TableLikeClause* New() const final { return CreateMaybeMessage(nullptr); } TableLikeClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const TableLikeClause& from); void MergeFrom(const TableLikeClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TableLikeClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TableLikeClause"; } protected: explicit TableLikeClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRelationFieldNumber = 1, kOptionsFieldNumber = 2, }; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // uint32 options = 2 [json_name = "options"]; void clear_options(); ::PROTOBUF_NAMESPACE_ID::uint32 options() const; void set_options(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_options() const; void _internal_set_options(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.TableLikeClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::RangeVar* relation_; ::PROTOBUF_NAMESPACE_ID::uint32 options_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class FunctionParameter PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.FunctionParameter) */ { public: inline FunctionParameter() : FunctionParameter(nullptr) {} virtual ~FunctionParameter(); FunctionParameter(const FunctionParameter& from); FunctionParameter(FunctionParameter&& from) noexcept : FunctionParameter() { *this = ::std::move(from); } inline FunctionParameter& operator=(const FunctionParameter& from) { CopyFrom(from); return *this; } inline FunctionParameter& operator=(FunctionParameter&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const FunctionParameter& default_instance(); static inline const FunctionParameter* internal_default_instance() { return reinterpret_cast( &_FunctionParameter_default_instance_); } static constexpr int kIndexInFileMessages = 214; friend void swap(FunctionParameter& a, FunctionParameter& b) { a.Swap(&b); } inline void Swap(FunctionParameter* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(FunctionParameter* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline FunctionParameter* New() const final { return CreateMaybeMessage(nullptr); } FunctionParameter* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const FunctionParameter& from); void MergeFrom(const FunctionParameter& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(FunctionParameter* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.FunctionParameter"; } protected: explicit FunctionParameter(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 1, kArgTypeFieldNumber = 2, kDefexprFieldNumber = 4, kModeFieldNumber = 3, }; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; bool has_arg_type() const; private: bool _internal_has_arg_type() const; public: void clear_arg_type(); const ::pg_query::TypeName& arg_type() const; ::pg_query::TypeName* release_arg_type(); ::pg_query::TypeName* mutable_arg_type(); void set_allocated_arg_type(::pg_query::TypeName* arg_type); private: const ::pg_query::TypeName& _internal_arg_type() const; ::pg_query::TypeName* _internal_mutable_arg_type(); public: void unsafe_arena_set_allocated_arg_type( ::pg_query::TypeName* arg_type); ::pg_query::TypeName* unsafe_arena_release_arg_type(); // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; bool has_defexpr() const; private: bool _internal_has_defexpr() const; public: void clear_defexpr(); const ::pg_query::Node& defexpr() const; ::pg_query::Node* release_defexpr(); ::pg_query::Node* mutable_defexpr(); void set_allocated_defexpr(::pg_query::Node* defexpr); private: const ::pg_query::Node& _internal_defexpr() const; ::pg_query::Node* _internal_mutable_defexpr(); public: void unsafe_arena_set_allocated_defexpr( ::pg_query::Node* defexpr); ::pg_query::Node* unsafe_arena_release_defexpr(); // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; void clear_mode(); ::pg_query::FunctionParameterMode mode() const; void set_mode(::pg_query::FunctionParameterMode value); private: ::pg_query::FunctionParameterMode _internal_mode() const; void _internal_set_mode(::pg_query::FunctionParameterMode value); public: // @@protoc_insertion_point(class_scope:pg_query.FunctionParameter) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::TypeName* arg_type_; ::pg_query::Node* defexpr_; int mode_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class LockingClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.LockingClause) */ { public: inline LockingClause() : LockingClause(nullptr) {} virtual ~LockingClause(); LockingClause(const LockingClause& from); LockingClause(LockingClause&& from) noexcept : LockingClause() { *this = ::std::move(from); } inline LockingClause& operator=(const LockingClause& from) { CopyFrom(from); return *this; } inline LockingClause& operator=(LockingClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const LockingClause& default_instance(); static inline const LockingClause* internal_default_instance() { return reinterpret_cast( &_LockingClause_default_instance_); } static constexpr int kIndexInFileMessages = 215; friend void swap(LockingClause& a, LockingClause& b) { a.Swap(&b); } inline void Swap(LockingClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(LockingClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline LockingClause* New() const final { return CreateMaybeMessage(nullptr); } LockingClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const LockingClause& from); void MergeFrom(const LockingClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(LockingClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.LockingClause"; } protected: explicit LockingClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kLockedRelsFieldNumber = 1, kStrengthFieldNumber = 2, kWaitPolicyFieldNumber = 3, }; // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; int locked_rels_size() const; private: int _internal_locked_rels_size() const; public: void clear_locked_rels(); ::pg_query::Node* mutable_locked_rels(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_locked_rels(); private: const ::pg_query::Node& _internal_locked_rels(int index) const; ::pg_query::Node* _internal_add_locked_rels(); public: const ::pg_query::Node& locked_rels(int index) const; ::pg_query::Node* add_locked_rels(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& locked_rels() const; // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; void clear_strength(); ::pg_query::LockClauseStrength strength() const; void set_strength(::pg_query::LockClauseStrength value); private: ::pg_query::LockClauseStrength _internal_strength() const; void _internal_set_strength(::pg_query::LockClauseStrength value); public: // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; void clear_wait_policy(); ::pg_query::LockWaitPolicy wait_policy() const; void set_wait_policy(::pg_query::LockWaitPolicy value); private: ::pg_query::LockWaitPolicy _internal_wait_policy() const; void _internal_set_wait_policy(::pg_query::LockWaitPolicy value); public: // @@protoc_insertion_point(class_scope:pg_query.LockingClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > locked_rels_; int strength_; int wait_policy_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RowMarkClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RowMarkClause) */ { public: inline RowMarkClause() : RowMarkClause(nullptr) {} virtual ~RowMarkClause(); RowMarkClause(const RowMarkClause& from); RowMarkClause(RowMarkClause&& from) noexcept : RowMarkClause() { *this = ::std::move(from); } inline RowMarkClause& operator=(const RowMarkClause& from) { CopyFrom(from); return *this; } inline RowMarkClause& operator=(RowMarkClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RowMarkClause& default_instance(); static inline const RowMarkClause* internal_default_instance() { return reinterpret_cast( &_RowMarkClause_default_instance_); } static constexpr int kIndexInFileMessages = 216; friend void swap(RowMarkClause& a, RowMarkClause& b) { a.Swap(&b); } inline void Swap(RowMarkClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RowMarkClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RowMarkClause* New() const final { return CreateMaybeMessage(nullptr); } RowMarkClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RowMarkClause& from); void MergeFrom(const RowMarkClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RowMarkClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RowMarkClause"; } protected: explicit RowMarkClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRtiFieldNumber = 1, kStrengthFieldNumber = 2, kWaitPolicyFieldNumber = 3, kPushedDownFieldNumber = 4, }; // uint32 rti = 1 [json_name = "rti"]; void clear_rti(); ::PROTOBUF_NAMESPACE_ID::uint32 rti() const; void set_rti(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_rti() const; void _internal_set_rti(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; void clear_strength(); ::pg_query::LockClauseStrength strength() const; void set_strength(::pg_query::LockClauseStrength value); private: ::pg_query::LockClauseStrength _internal_strength() const; void _internal_set_strength(::pg_query::LockClauseStrength value); public: // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; void clear_wait_policy(); ::pg_query::LockWaitPolicy wait_policy() const; void set_wait_policy(::pg_query::LockWaitPolicy value); private: ::pg_query::LockWaitPolicy _internal_wait_policy() const; void _internal_set_wait_policy(::pg_query::LockWaitPolicy value); public: // bool pushed_down = 4 [json_name = "pushedDown"]; void clear_pushed_down(); bool pushed_down() const; void set_pushed_down(bool value); private: bool _internal_pushed_down() const; void _internal_set_pushed_down(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.RowMarkClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::uint32 rti_; int strength_; int wait_policy_; bool pushed_down_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class XmlSerialize PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.XmlSerialize) */ { public: inline XmlSerialize() : XmlSerialize(nullptr) {} virtual ~XmlSerialize(); XmlSerialize(const XmlSerialize& from); XmlSerialize(XmlSerialize&& from) noexcept : XmlSerialize() { *this = ::std::move(from); } inline XmlSerialize& operator=(const XmlSerialize& from) { CopyFrom(from); return *this; } inline XmlSerialize& operator=(XmlSerialize&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const XmlSerialize& default_instance(); static inline const XmlSerialize* internal_default_instance() { return reinterpret_cast( &_XmlSerialize_default_instance_); } static constexpr int kIndexInFileMessages = 217; friend void swap(XmlSerialize& a, XmlSerialize& b) { a.Swap(&b); } inline void Swap(XmlSerialize* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(XmlSerialize* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline XmlSerialize* New() const final { return CreateMaybeMessage(nullptr); } XmlSerialize* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const XmlSerialize& from); void MergeFrom(const XmlSerialize& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(XmlSerialize* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.XmlSerialize"; } protected: explicit XmlSerialize(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kExprFieldNumber = 2, kTypeNameFieldNumber = 3, kXmloptionFieldNumber = 1, kLocationFieldNumber = 4, }; // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Node& expr() const; ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; bool has_type_name() const; private: bool _internal_has_type_name() const; public: void clear_type_name(); const ::pg_query::TypeName& type_name() const; ::pg_query::TypeName* release_type_name(); ::pg_query::TypeName* mutable_type_name(); void set_allocated_type_name(::pg_query::TypeName* type_name); private: const ::pg_query::TypeName& _internal_type_name() const; ::pg_query::TypeName* _internal_mutable_type_name(); public: void unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name); ::pg_query::TypeName* unsafe_arena_release_type_name(); // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; void clear_xmloption(); ::pg_query::XmlOptionType xmloption() const; void set_xmloption(::pg_query::XmlOptionType value); private: ::pg_query::XmlOptionType _internal_xmloption() const; void _internal_set_xmloption(::pg_query::XmlOptionType value); public: // int32 location = 4 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.XmlSerialize) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* expr_; ::pg_query::TypeName* type_name_; int xmloption_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class WithClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.WithClause) */ { public: inline WithClause() : WithClause(nullptr) {} virtual ~WithClause(); WithClause(const WithClause& from); WithClause(WithClause&& from) noexcept : WithClause() { *this = ::std::move(from); } inline WithClause& operator=(const WithClause& from) { CopyFrom(from); return *this; } inline WithClause& operator=(WithClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const WithClause& default_instance(); static inline const WithClause* internal_default_instance() { return reinterpret_cast( &_WithClause_default_instance_); } static constexpr int kIndexInFileMessages = 218; friend void swap(WithClause& a, WithClause& b) { a.Swap(&b); } inline void Swap(WithClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(WithClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline WithClause* New() const final { return CreateMaybeMessage(nullptr); } WithClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const WithClause& from); void MergeFrom(const WithClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(WithClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.WithClause"; } protected: explicit WithClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCtesFieldNumber = 1, kRecursiveFieldNumber = 2, kLocationFieldNumber = 3, }; // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; int ctes_size() const; private: int _internal_ctes_size() const; public: void clear_ctes(); ::pg_query::Node* mutable_ctes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ctes(); private: const ::pg_query::Node& _internal_ctes(int index) const; ::pg_query::Node* _internal_add_ctes(); public: const ::pg_query::Node& ctes(int index) const; ::pg_query::Node* add_ctes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ctes() const; // bool recursive = 2 [json_name = "recursive"]; void clear_recursive(); bool recursive() const; void set_recursive(bool value); private: bool _internal_recursive() const; void _internal_set_recursive(bool value); public: // int32 location = 3 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.WithClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctes_; bool recursive_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class InferClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InferClause) */ { public: inline InferClause() : InferClause(nullptr) {} virtual ~InferClause(); InferClause(const InferClause& from); InferClause(InferClause&& from) noexcept : InferClause() { *this = ::std::move(from); } inline InferClause& operator=(const InferClause& from) { CopyFrom(from); return *this; } inline InferClause& operator=(InferClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const InferClause& default_instance(); static inline const InferClause* internal_default_instance() { return reinterpret_cast( &_InferClause_default_instance_); } static constexpr int kIndexInFileMessages = 219; friend void swap(InferClause& a, InferClause& b) { a.Swap(&b); } inline void Swap(InferClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InferClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline InferClause* New() const final { return CreateMaybeMessage(nullptr); } InferClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const InferClause& from); void MergeFrom(const InferClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(InferClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.InferClause"; } protected: explicit InferClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kIndexElemsFieldNumber = 1, kConnameFieldNumber = 3, kWhereClauseFieldNumber = 2, kLocationFieldNumber = 4, }; // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; int index_elems_size() const; private: int _internal_index_elems_size() const; public: void clear_index_elems(); ::pg_query::Node* mutable_index_elems(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_index_elems(); private: const ::pg_query::Node& _internal_index_elems(int index) const; ::pg_query::Node* _internal_add_index_elems(); public: const ::pg_query::Node& index_elems(int index) const; ::pg_query::Node* add_index_elems(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& index_elems() const; // string conname = 3 [json_name = "conname"]; void clear_conname(); const std::string& conname() const; void set_conname(const std::string& value); void set_conname(std::string&& value); void set_conname(const char* value); void set_conname(const char* value, size_t size); std::string* mutable_conname(); std::string* release_conname(); void set_allocated_conname(std::string* conname); private: const std::string& _internal_conname() const; void _internal_set_conname(const std::string& value); std::string* _internal_mutable_conname(); public: // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // int32 location = 4 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.InferClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > index_elems_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr conname_; ::pg_query::Node* where_clause_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class OnConflictClause PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.OnConflictClause) */ { public: inline OnConflictClause() : OnConflictClause(nullptr) {} virtual ~OnConflictClause(); OnConflictClause(const OnConflictClause& from); OnConflictClause(OnConflictClause&& from) noexcept : OnConflictClause() { *this = ::std::move(from); } inline OnConflictClause& operator=(const OnConflictClause& from) { CopyFrom(from); return *this; } inline OnConflictClause& operator=(OnConflictClause&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const OnConflictClause& default_instance(); static inline const OnConflictClause* internal_default_instance() { return reinterpret_cast( &_OnConflictClause_default_instance_); } static constexpr int kIndexInFileMessages = 220; friend void swap(OnConflictClause& a, OnConflictClause& b) { a.Swap(&b); } inline void Swap(OnConflictClause* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(OnConflictClause* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline OnConflictClause* New() const final { return CreateMaybeMessage(nullptr); } OnConflictClause* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const OnConflictClause& from); void MergeFrom(const OnConflictClause& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(OnConflictClause* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.OnConflictClause"; } protected: explicit OnConflictClause(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kTargetListFieldNumber = 3, kInferFieldNumber = 2, kWhereClauseFieldNumber = 4, kActionFieldNumber = 1, kLocationFieldNumber = 5, }; // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; int target_list_size() const; private: int _internal_target_list_size() const; public: void clear_target_list(); ::pg_query::Node* mutable_target_list(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_target_list(); private: const ::pg_query::Node& _internal_target_list(int index) const; ::pg_query::Node* _internal_add_target_list(); public: const ::pg_query::Node& target_list(int index) const; ::pg_query::Node* add_target_list(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& target_list() const; // .pg_query.InferClause infer = 2 [json_name = "infer"]; bool has_infer() const; private: bool _internal_has_infer() const; public: void clear_infer(); const ::pg_query::InferClause& infer() const; ::pg_query::InferClause* release_infer(); ::pg_query::InferClause* mutable_infer(); void set_allocated_infer(::pg_query::InferClause* infer); private: const ::pg_query::InferClause& _internal_infer() const; ::pg_query::InferClause* _internal_mutable_infer(); public: void unsafe_arena_set_allocated_infer( ::pg_query::InferClause* infer); ::pg_query::InferClause* unsafe_arena_release_infer(); // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; bool has_where_clause() const; private: bool _internal_has_where_clause() const; public: void clear_where_clause(); const ::pg_query::Node& where_clause() const; ::pg_query::Node* release_where_clause(); ::pg_query::Node* mutable_where_clause(); void set_allocated_where_clause(::pg_query::Node* where_clause); private: const ::pg_query::Node& _internal_where_clause() const; ::pg_query::Node* _internal_mutable_where_clause(); public: void unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause); ::pg_query::Node* unsafe_arena_release_where_clause(); // .pg_query.OnConflictAction action = 1 [json_name = "action"]; void clear_action(); ::pg_query::OnConflictAction action() const; void set_action(::pg_query::OnConflictAction value); private: ::pg_query::OnConflictAction _internal_action() const; void _internal_set_action(::pg_query::OnConflictAction value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.OnConflictClause) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > target_list_; ::pg_query::InferClause* infer_; ::pg_query::Node* where_clause_; int action_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CommonTableExpr PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CommonTableExpr) */ { public: inline CommonTableExpr() : CommonTableExpr(nullptr) {} virtual ~CommonTableExpr(); CommonTableExpr(const CommonTableExpr& from); CommonTableExpr(CommonTableExpr&& from) noexcept : CommonTableExpr() { *this = ::std::move(from); } inline CommonTableExpr& operator=(const CommonTableExpr& from) { CopyFrom(from); return *this; } inline CommonTableExpr& operator=(CommonTableExpr&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CommonTableExpr& default_instance(); static inline const CommonTableExpr* internal_default_instance() { return reinterpret_cast( &_CommonTableExpr_default_instance_); } static constexpr int kIndexInFileMessages = 221; friend void swap(CommonTableExpr& a, CommonTableExpr& b) { a.Swap(&b); } inline void Swap(CommonTableExpr* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CommonTableExpr* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CommonTableExpr* New() const final { return CreateMaybeMessage(nullptr); } CommonTableExpr* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CommonTableExpr& from); void MergeFrom(const CommonTableExpr& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CommonTableExpr* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CommonTableExpr"; } protected: explicit CommonTableExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAliascolnamesFieldNumber = 2, kCtecolnamesFieldNumber = 8, kCtecoltypesFieldNumber = 9, kCtecoltypmodsFieldNumber = 10, kCtecolcollationsFieldNumber = 11, kCtenameFieldNumber = 1, kCtequeryFieldNumber = 4, kCtematerializedFieldNumber = 3, kLocationFieldNumber = 5, kCterecursiveFieldNumber = 6, kCterefcountFieldNumber = 7, }; // repeated .pg_query.Node aliascolnames = 2 [json_name = "aliascolnames"]; int aliascolnames_size() const; private: int _internal_aliascolnames_size() const; public: void clear_aliascolnames(); ::pg_query::Node* mutable_aliascolnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_aliascolnames(); private: const ::pg_query::Node& _internal_aliascolnames(int index) const; ::pg_query::Node* _internal_add_aliascolnames(); public: const ::pg_query::Node& aliascolnames(int index) const; ::pg_query::Node* add_aliascolnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& aliascolnames() const; // repeated .pg_query.Node ctecolnames = 8 [json_name = "ctecolnames"]; int ctecolnames_size() const; private: int _internal_ctecolnames_size() const; public: void clear_ctecolnames(); ::pg_query::Node* mutable_ctecolnames(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ctecolnames(); private: const ::pg_query::Node& _internal_ctecolnames(int index) const; ::pg_query::Node* _internal_add_ctecolnames(); public: const ::pg_query::Node& ctecolnames(int index) const; ::pg_query::Node* add_ctecolnames(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ctecolnames() const; // repeated .pg_query.Node ctecoltypes = 9 [json_name = "ctecoltypes"]; int ctecoltypes_size() const; private: int _internal_ctecoltypes_size() const; public: void clear_ctecoltypes(); ::pg_query::Node* mutable_ctecoltypes(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ctecoltypes(); private: const ::pg_query::Node& _internal_ctecoltypes(int index) const; ::pg_query::Node* _internal_add_ctecoltypes(); public: const ::pg_query::Node& ctecoltypes(int index) const; ::pg_query::Node* add_ctecoltypes(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ctecoltypes() const; // repeated .pg_query.Node ctecoltypmods = 10 [json_name = "ctecoltypmods"]; int ctecoltypmods_size() const; private: int _internal_ctecoltypmods_size() const; public: void clear_ctecoltypmods(); ::pg_query::Node* mutable_ctecoltypmods(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ctecoltypmods(); private: const ::pg_query::Node& _internal_ctecoltypmods(int index) const; ::pg_query::Node* _internal_add_ctecoltypmods(); public: const ::pg_query::Node& ctecoltypmods(int index) const; ::pg_query::Node* add_ctecoltypmods(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ctecoltypmods() const; // repeated .pg_query.Node ctecolcollations = 11 [json_name = "ctecolcollations"]; int ctecolcollations_size() const; private: int _internal_ctecolcollations_size() const; public: void clear_ctecolcollations(); ::pg_query::Node* mutable_ctecolcollations(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_ctecolcollations(); private: const ::pg_query::Node& _internal_ctecolcollations(int index) const; ::pg_query::Node* _internal_add_ctecolcollations(); public: const ::pg_query::Node& ctecolcollations(int index) const; ::pg_query::Node* add_ctecolcollations(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ctecolcollations() const; // string ctename = 1 [json_name = "ctename"]; void clear_ctename(); const std::string& ctename() const; void set_ctename(const std::string& value); void set_ctename(std::string&& value); void set_ctename(const char* value); void set_ctename(const char* value, size_t size); std::string* mutable_ctename(); std::string* release_ctename(); void set_allocated_ctename(std::string* ctename); private: const std::string& _internal_ctename() const; void _internal_set_ctename(const std::string& value); std::string* _internal_mutable_ctename(); public: // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; bool has_ctequery() const; private: bool _internal_has_ctequery() const; public: void clear_ctequery(); const ::pg_query::Node& ctequery() const; ::pg_query::Node* release_ctequery(); ::pg_query::Node* mutable_ctequery(); void set_allocated_ctequery(::pg_query::Node* ctequery); private: const ::pg_query::Node& _internal_ctequery() const; ::pg_query::Node* _internal_mutable_ctequery(); public: void unsafe_arena_set_allocated_ctequery( ::pg_query::Node* ctequery); ::pg_query::Node* unsafe_arena_release_ctequery(); // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; void clear_ctematerialized(); ::pg_query::CTEMaterialize ctematerialized() const; void set_ctematerialized(::pg_query::CTEMaterialize value); private: ::pg_query::CTEMaterialize _internal_ctematerialized() const; void _internal_set_ctematerialized(::pg_query::CTEMaterialize value); public: // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // bool cterecursive = 6 [json_name = "cterecursive"]; void clear_cterecursive(); bool cterecursive() const; void set_cterecursive(bool value); private: bool _internal_cterecursive() const; void _internal_set_cterecursive(bool value); public: // int32 cterefcount = 7 [json_name = "cterefcount"]; void clear_cterefcount(); ::PROTOBUF_NAMESPACE_ID::int32 cterefcount() const; void set_cterefcount(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_cterefcount() const; void _internal_set_cterefcount(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.CommonTableExpr) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > aliascolnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecolnames_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecoltypes_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecoltypmods_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > ctecolcollations_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr ctename_; ::pg_query::Node* ctequery_; int ctematerialized_; ::PROTOBUF_NAMESPACE_ID::int32 location_; bool cterecursive_; ::PROTOBUF_NAMESPACE_ID::int32 cterefcount_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class RoleSpec PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.RoleSpec) */ { public: inline RoleSpec() : RoleSpec(nullptr) {} virtual ~RoleSpec(); RoleSpec(const RoleSpec& from); RoleSpec(RoleSpec&& from) noexcept : RoleSpec() { *this = ::std::move(from); } inline RoleSpec& operator=(const RoleSpec& from) { CopyFrom(from); return *this; } inline RoleSpec& operator=(RoleSpec&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const RoleSpec& default_instance(); static inline const RoleSpec* internal_default_instance() { return reinterpret_cast( &_RoleSpec_default_instance_); } static constexpr int kIndexInFileMessages = 222; friend void swap(RoleSpec& a, RoleSpec& b) { a.Swap(&b); } inline void Swap(RoleSpec* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(RoleSpec* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline RoleSpec* New() const final { return CreateMaybeMessage(nullptr); } RoleSpec* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const RoleSpec& from); void MergeFrom(const RoleSpec& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(RoleSpec* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.RoleSpec"; } protected: explicit RoleSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kRolenameFieldNumber = 2, kRoletypeFieldNumber = 1, kLocationFieldNumber = 3, }; // string rolename = 2 [json_name = "rolename"]; void clear_rolename(); const std::string& rolename() const; void set_rolename(const std::string& value); void set_rolename(std::string&& value); void set_rolename(const char* value); void set_rolename(const char* value, size_t size); std::string* mutable_rolename(); std::string* release_rolename(); void set_allocated_rolename(std::string* rolename); private: const std::string& _internal_rolename() const; void _internal_set_rolename(const std::string& value); std::string* _internal_mutable_rolename(); public: // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; void clear_roletype(); ::pg_query::RoleSpecType roletype() const; void set_roletype(::pg_query::RoleSpecType value); private: ::pg_query::RoleSpecType _internal_roletype() const; void _internal_set_roletype(::pg_query::RoleSpecType value); public: // int32 location = 3 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.RoleSpec) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr rolename_; int roletype_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class TriggerTransition PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.TriggerTransition) */ { public: inline TriggerTransition() : TriggerTransition(nullptr) {} virtual ~TriggerTransition(); TriggerTransition(const TriggerTransition& from); TriggerTransition(TriggerTransition&& from) noexcept : TriggerTransition() { *this = ::std::move(from); } inline TriggerTransition& operator=(const TriggerTransition& from) { CopyFrom(from); return *this; } inline TriggerTransition& operator=(TriggerTransition&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const TriggerTransition& default_instance(); static inline const TriggerTransition* internal_default_instance() { return reinterpret_cast( &_TriggerTransition_default_instance_); } static constexpr int kIndexInFileMessages = 223; friend void swap(TriggerTransition& a, TriggerTransition& b) { a.Swap(&b); } inline void Swap(TriggerTransition* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(TriggerTransition* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline TriggerTransition* New() const final { return CreateMaybeMessage(nullptr); } TriggerTransition* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const TriggerTransition& from); void MergeFrom(const TriggerTransition& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(TriggerTransition* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.TriggerTransition"; } protected: explicit TriggerTransition(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 1, kIsNewFieldNumber = 2, kIsTableFieldNumber = 3, }; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // bool is_new = 2 [json_name = "isNew"]; void clear_is_new(); bool is_new() const; void set_is_new(bool value); private: bool _internal_is_new() const; void _internal_set_is_new(bool value); public: // bool is_table = 3 [json_name = "isTable"]; void clear_is_table(); bool is_table() const; void set_is_table(bool value); private: bool _internal_is_table() const; void _internal_set_is_table(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.TriggerTransition) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; bool is_new_; bool is_table_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PartitionElem PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionElem) */ { public: inline PartitionElem() : PartitionElem(nullptr) {} virtual ~PartitionElem(); PartitionElem(const PartitionElem& from); PartitionElem(PartitionElem&& from) noexcept : PartitionElem() { *this = ::std::move(from); } inline PartitionElem& operator=(const PartitionElem& from) { CopyFrom(from); return *this; } inline PartitionElem& operator=(PartitionElem&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const PartitionElem& default_instance(); static inline const PartitionElem* internal_default_instance() { return reinterpret_cast( &_PartitionElem_default_instance_); } static constexpr int kIndexInFileMessages = 224; friend void swap(PartitionElem& a, PartitionElem& b) { a.Swap(&b); } inline void Swap(PartitionElem* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionElem* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline PartitionElem* New() const final { return CreateMaybeMessage(nullptr); } PartitionElem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const PartitionElem& from); void MergeFrom(const PartitionElem& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PartitionElem* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PartitionElem"; } protected: explicit PartitionElem(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kCollationFieldNumber = 3, kOpclassFieldNumber = 4, kNameFieldNumber = 1, kExprFieldNumber = 2, kLocationFieldNumber = 5, }; // repeated .pg_query.Node collation = 3 [json_name = "collation"]; int collation_size() const; private: int _internal_collation_size() const; public: void clear_collation(); ::pg_query::Node* mutable_collation(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_collation(); private: const ::pg_query::Node& _internal_collation(int index) const; ::pg_query::Node* _internal_add_collation(); public: const ::pg_query::Node& collation(int index) const; ::pg_query::Node* add_collation(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& collation() const; // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; int opclass_size() const; private: int _internal_opclass_size() const; public: void clear_opclass(); ::pg_query::Node* mutable_opclass(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_opclass(); private: const ::pg_query::Node& _internal_opclass(int index) const; ::pg_query::Node* _internal_add_opclass(); public: const ::pg_query::Node& opclass(int index) const; ::pg_query::Node* add_opclass(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& opclass() const; // string name = 1 [json_name = "name"]; void clear_name(); const std::string& name() const; void set_name(const std::string& value); void set_name(std::string&& value); void set_name(const char* value); void set_name(const char* value, size_t size); std::string* mutable_name(); std::string* release_name(); void set_allocated_name(std::string* name); private: const std::string& _internal_name() const; void _internal_set_name(const std::string& value); std::string* _internal_mutable_name(); public: // .pg_query.Node expr = 2 [json_name = "expr"]; bool has_expr() const; private: bool _internal_has_expr() const; public: void clear_expr(); const ::pg_query::Node& expr() const; ::pg_query::Node* release_expr(); ::pg_query::Node* mutable_expr(); void set_allocated_expr(::pg_query::Node* expr); private: const ::pg_query::Node& _internal_expr() const; ::pg_query::Node* _internal_mutable_expr(); public: void unsafe_arena_set_allocated_expr( ::pg_query::Node* expr); ::pg_query::Node* unsafe_arena_release_expr(); // int32 location = 5 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.PartitionElem) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > collation_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > opclass_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_; ::pg_query::Node* expr_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PartitionSpec PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionSpec) */ { public: inline PartitionSpec() : PartitionSpec(nullptr) {} virtual ~PartitionSpec(); PartitionSpec(const PartitionSpec& from); PartitionSpec(PartitionSpec&& from) noexcept : PartitionSpec() { *this = ::std::move(from); } inline PartitionSpec& operator=(const PartitionSpec& from) { CopyFrom(from); return *this; } inline PartitionSpec& operator=(PartitionSpec&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const PartitionSpec& default_instance(); static inline const PartitionSpec* internal_default_instance() { return reinterpret_cast( &_PartitionSpec_default_instance_); } static constexpr int kIndexInFileMessages = 225; friend void swap(PartitionSpec& a, PartitionSpec& b) { a.Swap(&b); } inline void Swap(PartitionSpec* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionSpec* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline PartitionSpec* New() const final { return CreateMaybeMessage(nullptr); } PartitionSpec* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const PartitionSpec& from); void MergeFrom(const PartitionSpec& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PartitionSpec* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PartitionSpec"; } protected: explicit PartitionSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kPartParamsFieldNumber = 2, kStrategyFieldNumber = 1, kLocationFieldNumber = 3, }; // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; int part_params_size() const; private: int _internal_part_params_size() const; public: void clear_part_params(); ::pg_query::Node* mutable_part_params(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_part_params(); private: const ::pg_query::Node& _internal_part_params(int index) const; ::pg_query::Node* _internal_add_part_params(); public: const ::pg_query::Node& part_params(int index) const; ::pg_query::Node* add_part_params(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& part_params() const; // string strategy = 1 [json_name = "strategy"]; void clear_strategy(); const std::string& strategy() const; void set_strategy(const std::string& value); void set_strategy(std::string&& value); void set_strategy(const char* value); void set_strategy(const char* value, size_t size); std::string* mutable_strategy(); std::string* release_strategy(); void set_allocated_strategy(std::string* strategy); private: const std::string& _internal_strategy() const; void _internal_set_strategy(const std::string& value); std::string* _internal_mutable_strategy(); public: // int32 location = 3 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.PartitionSpec) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > part_params_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr strategy_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PartitionBoundSpec PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionBoundSpec) */ { public: inline PartitionBoundSpec() : PartitionBoundSpec(nullptr) {} virtual ~PartitionBoundSpec(); PartitionBoundSpec(const PartitionBoundSpec& from); PartitionBoundSpec(PartitionBoundSpec&& from) noexcept : PartitionBoundSpec() { *this = ::std::move(from); } inline PartitionBoundSpec& operator=(const PartitionBoundSpec& from) { CopyFrom(from); return *this; } inline PartitionBoundSpec& operator=(PartitionBoundSpec&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const PartitionBoundSpec& default_instance(); static inline const PartitionBoundSpec* internal_default_instance() { return reinterpret_cast( &_PartitionBoundSpec_default_instance_); } static constexpr int kIndexInFileMessages = 226; friend void swap(PartitionBoundSpec& a, PartitionBoundSpec& b) { a.Swap(&b); } inline void Swap(PartitionBoundSpec* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionBoundSpec* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline PartitionBoundSpec* New() const final { return CreateMaybeMessage(nullptr); } PartitionBoundSpec* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const PartitionBoundSpec& from); void MergeFrom(const PartitionBoundSpec& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PartitionBoundSpec* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PartitionBoundSpec"; } protected: explicit PartitionBoundSpec(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kListdatumsFieldNumber = 5, kLowerdatumsFieldNumber = 6, kUpperdatumsFieldNumber = 7, kStrategyFieldNumber = 1, kIsDefaultFieldNumber = 2, kModulusFieldNumber = 3, kRemainderFieldNumber = 4, kLocationFieldNumber = 8, }; // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; int listdatums_size() const; private: int _internal_listdatums_size() const; public: void clear_listdatums(); ::pg_query::Node* mutable_listdatums(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_listdatums(); private: const ::pg_query::Node& _internal_listdatums(int index) const; ::pg_query::Node* _internal_add_listdatums(); public: const ::pg_query::Node& listdatums(int index) const; ::pg_query::Node* add_listdatums(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& listdatums() const; // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; int lowerdatums_size() const; private: int _internal_lowerdatums_size() const; public: void clear_lowerdatums(); ::pg_query::Node* mutable_lowerdatums(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_lowerdatums(); private: const ::pg_query::Node& _internal_lowerdatums(int index) const; ::pg_query::Node* _internal_add_lowerdatums(); public: const ::pg_query::Node& lowerdatums(int index) const; ::pg_query::Node* add_lowerdatums(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& lowerdatums() const; // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; int upperdatums_size() const; private: int _internal_upperdatums_size() const; public: void clear_upperdatums(); ::pg_query::Node* mutable_upperdatums(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_upperdatums(); private: const ::pg_query::Node& _internal_upperdatums(int index) const; ::pg_query::Node* _internal_add_upperdatums(); public: const ::pg_query::Node& upperdatums(int index) const; ::pg_query::Node* add_upperdatums(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& upperdatums() const; // string strategy = 1 [json_name = "strategy"]; void clear_strategy(); const std::string& strategy() const; void set_strategy(const std::string& value); void set_strategy(std::string&& value); void set_strategy(const char* value); void set_strategy(const char* value, size_t size); std::string* mutable_strategy(); std::string* release_strategy(); void set_allocated_strategy(std::string* strategy); private: const std::string& _internal_strategy() const; void _internal_set_strategy(const std::string& value); std::string* _internal_mutable_strategy(); public: // bool is_default = 2 [json_name = "is_default"]; void clear_is_default(); bool is_default() const; void set_is_default(bool value); private: bool _internal_is_default() const; void _internal_set_is_default(bool value); public: // int32 modulus = 3 [json_name = "modulus"]; void clear_modulus(); ::PROTOBUF_NAMESPACE_ID::int32 modulus() const; void set_modulus(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_modulus() const; void _internal_set_modulus(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 remainder = 4 [json_name = "remainder"]; void clear_remainder(); ::PROTOBUF_NAMESPACE_ID::int32 remainder() const; void set_remainder(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_remainder() const; void _internal_set_remainder(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 location = 8 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.PartitionBoundSpec) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > listdatums_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > lowerdatums_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > upperdatums_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr strategy_; bool is_default_; ::PROTOBUF_NAMESPACE_ID::int32 modulus_; ::PROTOBUF_NAMESPACE_ID::int32 remainder_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PartitionRangeDatum PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionRangeDatum) */ { public: inline PartitionRangeDatum() : PartitionRangeDatum(nullptr) {} virtual ~PartitionRangeDatum(); PartitionRangeDatum(const PartitionRangeDatum& from); PartitionRangeDatum(PartitionRangeDatum&& from) noexcept : PartitionRangeDatum() { *this = ::std::move(from); } inline PartitionRangeDatum& operator=(const PartitionRangeDatum& from) { CopyFrom(from); return *this; } inline PartitionRangeDatum& operator=(PartitionRangeDatum&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const PartitionRangeDatum& default_instance(); static inline const PartitionRangeDatum* internal_default_instance() { return reinterpret_cast( &_PartitionRangeDatum_default_instance_); } static constexpr int kIndexInFileMessages = 227; friend void swap(PartitionRangeDatum& a, PartitionRangeDatum& b) { a.Swap(&b); } inline void Swap(PartitionRangeDatum* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionRangeDatum* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline PartitionRangeDatum* New() const final { return CreateMaybeMessage(nullptr); } PartitionRangeDatum* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const PartitionRangeDatum& from); void MergeFrom(const PartitionRangeDatum& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PartitionRangeDatum* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PartitionRangeDatum"; } protected: explicit PartitionRangeDatum(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kValueFieldNumber = 2, kKindFieldNumber = 1, kLocationFieldNumber = 3, }; // .pg_query.Node value = 2 [json_name = "value"]; bool has_value() const; private: bool _internal_has_value() const; public: void clear_value(); const ::pg_query::Node& value() const; ::pg_query::Node* release_value(); ::pg_query::Node* mutable_value(); void set_allocated_value(::pg_query::Node* value); private: const ::pg_query::Node& _internal_value() const; ::pg_query::Node* _internal_mutable_value(); public: void unsafe_arena_set_allocated_value( ::pg_query::Node* value); ::pg_query::Node* unsafe_arena_release_value(); // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; void clear_kind(); ::pg_query::PartitionRangeDatumKind kind() const; void set_kind(::pg_query::PartitionRangeDatumKind value); private: ::pg_query::PartitionRangeDatumKind _internal_kind() const; void _internal_set_kind(::pg_query::PartitionRangeDatumKind value); public: // int32 location = 3 [json_name = "location"]; void clear_location(); ::PROTOBUF_NAMESPACE_ID::int32 location() const; void set_location(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_location() const; void _internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value); public: // @@protoc_insertion_point(class_scope:pg_query.PartitionRangeDatum) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::Node* value_; int kind_; ::PROTOBUF_NAMESPACE_ID::int32 location_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class PartitionCmd PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.PartitionCmd) */ { public: inline PartitionCmd() : PartitionCmd(nullptr) {} virtual ~PartitionCmd(); PartitionCmd(const PartitionCmd& from); PartitionCmd(PartitionCmd&& from) noexcept : PartitionCmd() { *this = ::std::move(from); } inline PartitionCmd& operator=(const PartitionCmd& from) { CopyFrom(from); return *this; } inline PartitionCmd& operator=(PartitionCmd&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const PartitionCmd& default_instance(); static inline const PartitionCmd* internal_default_instance() { return reinterpret_cast( &_PartitionCmd_default_instance_); } static constexpr int kIndexInFileMessages = 228; friend void swap(PartitionCmd& a, PartitionCmd& b) { a.Swap(&b); } inline void Swap(PartitionCmd* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(PartitionCmd* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline PartitionCmd* New() const final { return CreateMaybeMessage(nullptr); } PartitionCmd* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const PartitionCmd& from); void MergeFrom(const PartitionCmd& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(PartitionCmd* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.PartitionCmd"; } protected: explicit PartitionCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kNameFieldNumber = 1, kBoundFieldNumber = 2, }; // .pg_query.RangeVar name = 1 [json_name = "name"]; bool has_name() const; private: bool _internal_has_name() const; public: void clear_name(); const ::pg_query::RangeVar& name() const; ::pg_query::RangeVar* release_name(); ::pg_query::RangeVar* mutable_name(); void set_allocated_name(::pg_query::RangeVar* name); private: const ::pg_query::RangeVar& _internal_name() const; ::pg_query::RangeVar* _internal_mutable_name(); public: void unsafe_arena_set_allocated_name( ::pg_query::RangeVar* name); ::pg_query::RangeVar* unsafe_arena_release_name(); // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; bool has_bound() const; private: bool _internal_has_bound() const; public: void clear_bound(); const ::pg_query::PartitionBoundSpec& bound() const; ::pg_query::PartitionBoundSpec* release_bound(); ::pg_query::PartitionBoundSpec* mutable_bound(); void set_allocated_bound(::pg_query::PartitionBoundSpec* bound); private: const ::pg_query::PartitionBoundSpec& _internal_bound() const; ::pg_query::PartitionBoundSpec* _internal_mutable_bound(); public: void unsafe_arena_set_allocated_bound( ::pg_query::PartitionBoundSpec* bound); ::pg_query::PartitionBoundSpec* unsafe_arena_release_bound(); // @@protoc_insertion_point(class_scope:pg_query.PartitionCmd) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::pg_query::RangeVar* name_; ::pg_query::PartitionBoundSpec* bound_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class VacuumRelation PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.VacuumRelation) */ { public: inline VacuumRelation() : VacuumRelation(nullptr) {} virtual ~VacuumRelation(); VacuumRelation(const VacuumRelation& from); VacuumRelation(VacuumRelation&& from) noexcept : VacuumRelation() { *this = ::std::move(from); } inline VacuumRelation& operator=(const VacuumRelation& from) { CopyFrom(from); return *this; } inline VacuumRelation& operator=(VacuumRelation&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const VacuumRelation& default_instance(); static inline const VacuumRelation* internal_default_instance() { return reinterpret_cast( &_VacuumRelation_default_instance_); } static constexpr int kIndexInFileMessages = 229; friend void swap(VacuumRelation& a, VacuumRelation& b) { a.Swap(&b); } inline void Swap(VacuumRelation* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(VacuumRelation* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline VacuumRelation* New() const final { return CreateMaybeMessage(nullptr); } VacuumRelation* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const VacuumRelation& from); void MergeFrom(const VacuumRelation& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(VacuumRelation* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.VacuumRelation"; } protected: explicit VacuumRelation(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kVaColsFieldNumber = 3, kRelationFieldNumber = 1, kOidFieldNumber = 2, }; // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; int va_cols_size() const; private: int _internal_va_cols_size() const; public: void clear_va_cols(); ::pg_query::Node* mutable_va_cols(int index); ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* mutable_va_cols(); private: const ::pg_query::Node& _internal_va_cols(int index) const; ::pg_query::Node* _internal_add_va_cols(); public: const ::pg_query::Node& va_cols(int index) const; ::pg_query::Node* add_va_cols(); const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& va_cols() const; // .pg_query.RangeVar relation = 1 [json_name = "relation"]; bool has_relation() const; private: bool _internal_has_relation() const; public: void clear_relation(); const ::pg_query::RangeVar& relation() const; ::pg_query::RangeVar* release_relation(); ::pg_query::RangeVar* mutable_relation(); void set_allocated_relation(::pg_query::RangeVar* relation); private: const ::pg_query::RangeVar& _internal_relation() const; ::pg_query::RangeVar* _internal_mutable_relation(); public: void unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation); ::pg_query::RangeVar* unsafe_arena_release_relation(); // uint32 oid = 2 [json_name = "oid"]; void clear_oid(); ::PROTOBUF_NAMESPACE_ID::uint32 oid() const; void set_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_oid() const; void _internal_set_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // @@protoc_insertion_point(class_scope:pg_query.VacuumRelation) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node > va_cols_; ::pg_query::RangeVar* relation_; ::PROTOBUF_NAMESPACE_ID::uint32 oid_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class InlineCodeBlock PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.InlineCodeBlock) */ { public: inline InlineCodeBlock() : InlineCodeBlock(nullptr) {} virtual ~InlineCodeBlock(); InlineCodeBlock(const InlineCodeBlock& from); InlineCodeBlock(InlineCodeBlock&& from) noexcept : InlineCodeBlock() { *this = ::std::move(from); } inline InlineCodeBlock& operator=(const InlineCodeBlock& from) { CopyFrom(from); return *this; } inline InlineCodeBlock& operator=(InlineCodeBlock&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const InlineCodeBlock& default_instance(); static inline const InlineCodeBlock* internal_default_instance() { return reinterpret_cast( &_InlineCodeBlock_default_instance_); } static constexpr int kIndexInFileMessages = 230; friend void swap(InlineCodeBlock& a, InlineCodeBlock& b) { a.Swap(&b); } inline void Swap(InlineCodeBlock* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(InlineCodeBlock* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline InlineCodeBlock* New() const final { return CreateMaybeMessage(nullptr); } InlineCodeBlock* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const InlineCodeBlock& from); void MergeFrom(const InlineCodeBlock& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(InlineCodeBlock* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.InlineCodeBlock"; } protected: explicit InlineCodeBlock(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kSourceTextFieldNumber = 1, kLangOidFieldNumber = 2, kLangIsTrustedFieldNumber = 3, kAtomicFieldNumber = 4, }; // string source_text = 1 [json_name = "source_text"]; void clear_source_text(); const std::string& source_text() const; void set_source_text(const std::string& value); void set_source_text(std::string&& value); void set_source_text(const char* value); void set_source_text(const char* value, size_t size); std::string* mutable_source_text(); std::string* release_source_text(); void set_allocated_source_text(std::string* source_text); private: const std::string& _internal_source_text() const; void _internal_set_source_text(const std::string& value); std::string* _internal_mutable_source_text(); public: // uint32 lang_oid = 2 [json_name = "langOid"]; void clear_lang_oid(); ::PROTOBUF_NAMESPACE_ID::uint32 lang_oid() const; void set_lang_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); private: ::PROTOBUF_NAMESPACE_ID::uint32 _internal_lang_oid() const; void _internal_set_lang_oid(::PROTOBUF_NAMESPACE_ID::uint32 value); public: // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; void clear_lang_is_trusted(); bool lang_is_trusted() const; void set_lang_is_trusted(bool value); private: bool _internal_lang_is_trusted() const; void _internal_set_lang_is_trusted(bool value); public: // bool atomic = 4 [json_name = "atomic"]; void clear_atomic(); bool atomic() const; void set_atomic(bool value); private: bool _internal_atomic() const; void _internal_set_atomic(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.InlineCodeBlock) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr source_text_; ::PROTOBUF_NAMESPACE_ID::uint32 lang_oid_; bool lang_is_trusted_; bool atomic_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class CallContext PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.CallContext) */ { public: inline CallContext() : CallContext(nullptr) {} virtual ~CallContext(); CallContext(const CallContext& from); CallContext(CallContext&& from) noexcept : CallContext() { *this = ::std::move(from); } inline CallContext& operator=(const CallContext& from) { CopyFrom(from); return *this; } inline CallContext& operator=(CallContext&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const CallContext& default_instance(); static inline const CallContext* internal_default_instance() { return reinterpret_cast( &_CallContext_default_instance_); } static constexpr int kIndexInFileMessages = 231; friend void swap(CallContext& a, CallContext& b) { a.Swap(&b); } inline void Swap(CallContext* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(CallContext* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline CallContext* New() const final { return CreateMaybeMessage(nullptr); } CallContext* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const CallContext& from); void MergeFrom(const CallContext& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(CallContext* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.CallContext"; } protected: explicit CallContext(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kAtomicFieldNumber = 1, }; // bool atomic = 1 [json_name = "atomic"]; void clear_atomic(); bool atomic() const; void set_atomic(bool value); private: bool _internal_atomic() const; void _internal_set_atomic(bool value); public: // @@protoc_insertion_point(class_scope:pg_query.CallContext) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; bool atomic_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // ------------------------------------------------------------------- class ScanToken PROTOBUF_FINAL : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:pg_query.ScanToken) */ { public: inline ScanToken() : ScanToken(nullptr) {} virtual ~ScanToken(); ScanToken(const ScanToken& from); ScanToken(ScanToken&& from) noexcept : ScanToken() { *this = ::std::move(from); } inline ScanToken& operator=(const ScanToken& from) { CopyFrom(from); return *this; } inline ScanToken& operator=(ScanToken&& from) noexcept { if (GetArena() == from.GetArena()) { if (this != &from) InternalSwap(&from); } else { CopyFrom(from); } return *this; } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { return GetDescriptor(); } static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { return GetMetadataStatic().descriptor; } static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { return GetMetadataStatic().reflection; } static const ScanToken& default_instance(); static inline const ScanToken* internal_default_instance() { return reinterpret_cast( &_ScanToken_default_instance_); } static constexpr int kIndexInFileMessages = 232; friend void swap(ScanToken& a, ScanToken& b) { a.Swap(&b); } inline void Swap(ScanToken* other) { if (other == this) return; if (GetArena() == other->GetArena()) { InternalSwap(other); } else { ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); } } void UnsafeArenaSwap(ScanToken* other) { if (other == this) return; GOOGLE_DCHECK(GetArena() == other->GetArena()); InternalSwap(other); } // implements Message ---------------------------------------------- inline ScanToken* New() const final { return CreateMaybeMessage(nullptr); } ScanToken* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final { return CreateMaybeMessage(arena); } void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final; void CopyFrom(const ScanToken& from); void MergeFrom(const ScanToken& from); PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; bool IsInitialized() const final; size_t ByteSizeLong() const final; const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize( ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; int GetCachedSize() const final { return _cached_size_.Get(); } private: inline void SharedCtor(); inline void SharedDtor(); void SetCachedSize(int size) const final; void InternalSwap(ScanToken* other); friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { return "pg_query.ScanToken"; } protected: explicit ScanToken(::PROTOBUF_NAMESPACE_ID::Arena* arena); private: static void ArenaDtor(void* object); inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena); public: ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; private: static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() { ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_protobuf_2fpg_5fquery_2eproto); return ::descriptor_table_protobuf_2fpg_5fquery_2eproto.file_level_metadata[kIndexInFileMessages]; } public: // nested types ---------------------------------------------------- // accessors ------------------------------------------------------- enum : int { kStartFieldNumber = 1, kEndFieldNumber = 2, kTokenFieldNumber = 4, kKeywordKindFieldNumber = 5, }; // int32 start = 1; void clear_start(); ::PROTOBUF_NAMESPACE_ID::int32 start() const; void set_start(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_start() const; void _internal_set_start(::PROTOBUF_NAMESPACE_ID::int32 value); public: // int32 end = 2; void clear_end(); ::PROTOBUF_NAMESPACE_ID::int32 end() const; void set_end(::PROTOBUF_NAMESPACE_ID::int32 value); private: ::PROTOBUF_NAMESPACE_ID::int32 _internal_end() const; void _internal_set_end(::PROTOBUF_NAMESPACE_ID::int32 value); public: // .pg_query.Token token = 4; void clear_token(); ::pg_query::Token token() const; void set_token(::pg_query::Token value); private: ::pg_query::Token _internal_token() const; void _internal_set_token(::pg_query::Token value); public: // .pg_query.KeywordKind keyword_kind = 5; void clear_keyword_kind(); ::pg_query::KeywordKind keyword_kind() const; void set_keyword_kind(::pg_query::KeywordKind value); private: ::pg_query::KeywordKind _internal_keyword_kind() const; void _internal_set_keyword_kind(::pg_query::KeywordKind value); public: // @@protoc_insertion_point(class_scope:pg_query.ScanToken) private: class _Internal; template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; typedef void InternalArenaConstructable_; typedef void DestructorSkippable_; ::PROTOBUF_NAMESPACE_ID::int32 start_; ::PROTOBUF_NAMESPACE_ID::int32 end_; int token_; int keyword_kind_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_protobuf_2fpg_5fquery_2eproto; }; // =================================================================== // =================================================================== #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wstrict-aliasing" #endif // __GNUC__ // ParseResult // int32 version = 1; inline void ParseResult::clear_version() { version_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ParseResult::_internal_version() const { return version_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ParseResult::version() const { // @@protoc_insertion_point(field_get:pg_query.ParseResult.version) return _internal_version(); } inline void ParseResult::_internal_set_version(::PROTOBUF_NAMESPACE_ID::int32 value) { version_ = value; } inline void ParseResult::set_version(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_version(value); // @@protoc_insertion_point(field_set:pg_query.ParseResult.version) } // repeated .pg_query.RawStmt stmts = 2; inline int ParseResult::_internal_stmts_size() const { return stmts_.size(); } inline int ParseResult::stmts_size() const { return _internal_stmts_size(); } inline void ParseResult::clear_stmts() { stmts_.Clear(); } inline ::pg_query::RawStmt* ParseResult::mutable_stmts(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ParseResult.stmts) return stmts_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >* ParseResult::mutable_stmts() { // @@protoc_insertion_point(field_mutable_list:pg_query.ParseResult.stmts) return &stmts_; } inline const ::pg_query::RawStmt& ParseResult::_internal_stmts(int index) const { return stmts_.Get(index); } inline const ::pg_query::RawStmt& ParseResult::stmts(int index) const { // @@protoc_insertion_point(field_get:pg_query.ParseResult.stmts) return _internal_stmts(index); } inline ::pg_query::RawStmt* ParseResult::_internal_add_stmts() { return stmts_.Add(); } inline ::pg_query::RawStmt* ParseResult::add_stmts() { // @@protoc_insertion_point(field_add:pg_query.ParseResult.stmts) return _internal_add_stmts(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::RawStmt >& ParseResult::stmts() const { // @@protoc_insertion_point(field_list:pg_query.ParseResult.stmts) return stmts_; } // ------------------------------------------------------------------- // ScanResult // int32 version = 1; inline void ScanResult::clear_version() { version_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ScanResult::_internal_version() const { return version_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ScanResult::version() const { // @@protoc_insertion_point(field_get:pg_query.ScanResult.version) return _internal_version(); } inline void ScanResult::_internal_set_version(::PROTOBUF_NAMESPACE_ID::int32 value) { version_ = value; } inline void ScanResult::set_version(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_version(value); // @@protoc_insertion_point(field_set:pg_query.ScanResult.version) } // repeated .pg_query.ScanToken tokens = 2; inline int ScanResult::_internal_tokens_size() const { return tokens_.size(); } inline int ScanResult::tokens_size() const { return _internal_tokens_size(); } inline void ScanResult::clear_tokens() { tokens_.Clear(); } inline ::pg_query::ScanToken* ScanResult::mutable_tokens(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ScanResult.tokens) return tokens_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >* ScanResult::mutable_tokens() { // @@protoc_insertion_point(field_mutable_list:pg_query.ScanResult.tokens) return &tokens_; } inline const ::pg_query::ScanToken& ScanResult::_internal_tokens(int index) const { return tokens_.Get(index); } inline const ::pg_query::ScanToken& ScanResult::tokens(int index) const { // @@protoc_insertion_point(field_get:pg_query.ScanResult.tokens) return _internal_tokens(index); } inline ::pg_query::ScanToken* ScanResult::_internal_add_tokens() { return tokens_.Add(); } inline ::pg_query::ScanToken* ScanResult::add_tokens() { // @@protoc_insertion_point(field_add:pg_query.ScanResult.tokens) return _internal_add_tokens(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::ScanToken >& ScanResult::tokens() const { // @@protoc_insertion_point(field_list:pg_query.ScanResult.tokens) return tokens_; } // ------------------------------------------------------------------- // Node // .pg_query.Alias alias = 1 [json_name = "Alias"]; inline bool Node::_internal_has_alias() const { return node_case() == kAlias; } inline bool Node::has_alias() const { return _internal_has_alias(); } inline void Node::set_has_alias() { _oneof_case_[0] = kAlias; } inline void Node::clear_alias() { if (_internal_has_alias()) { if (GetArena() == nullptr) { delete node_.alias_; } clear_has_node(); } } inline ::pg_query::Alias* Node::release_alias() { // @@protoc_insertion_point(field_release:pg_query.Node.alias) if (_internal_has_alias()) { clear_has_node(); ::pg_query::Alias* temp = node_.alias_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alias_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Alias& Node::_internal_alias() const { return _internal_has_alias() ? *node_.alias_ : reinterpret_cast< ::pg_query::Alias&>(::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& Node::alias() const { // @@protoc_insertion_point(field_get:pg_query.Node.alias) return _internal_alias(); } inline ::pg_query::Alias* Node::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alias) if (_internal_has_alias()) { clear_has_node(); ::pg_query::Alias* temp = node_.alias_; node_.alias_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alias(::pg_query::Alias* alias) { clear_node(); if (alias) { set_has_alias(); node_.alias_ = alias; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alias) } inline ::pg_query::Alias* Node::_internal_mutable_alias() { if (!_internal_has_alias()) { clear_node(); set_has_alias(); node_.alias_ = CreateMaybeMessage< ::pg_query::Alias >(GetArena()); } return node_.alias_; } inline ::pg_query::Alias* Node::mutable_alias() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alias) return _internal_mutable_alias(); } // .pg_query.RangeVar range_var = 2 [json_name = "RangeVar"]; inline bool Node::_internal_has_range_var() const { return node_case() == kRangeVar; } inline bool Node::has_range_var() const { return _internal_has_range_var(); } inline void Node::set_has_range_var() { _oneof_case_[0] = kRangeVar; } inline void Node::clear_range_var() { if (_internal_has_range_var()) { if (GetArena() == nullptr) { delete node_.range_var_; } clear_has_node(); } } inline ::pg_query::RangeVar* Node::release_range_var() { // @@protoc_insertion_point(field_release:pg_query.Node.range_var) if (_internal_has_range_var()) { clear_has_node(); ::pg_query::RangeVar* temp = node_.range_var_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.range_var_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeVar& Node::_internal_range_var() const { return _internal_has_range_var() ? *node_.range_var_ : reinterpret_cast< ::pg_query::RangeVar&>(::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& Node::range_var() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_var) return _internal_range_var(); } inline ::pg_query::RangeVar* Node::unsafe_arena_release_range_var() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_var) if (_internal_has_range_var()) { clear_has_node(); ::pg_query::RangeVar* temp = node_.range_var_; node_.range_var_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_var(::pg_query::RangeVar* range_var) { clear_node(); if (range_var) { set_has_range_var(); node_.range_var_ = range_var; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_var) } inline ::pg_query::RangeVar* Node::_internal_mutable_range_var() { if (!_internal_has_range_var()) { clear_node(); set_has_range_var(); node_.range_var_ = CreateMaybeMessage< ::pg_query::RangeVar >(GetArena()); } return node_.range_var_; } inline ::pg_query::RangeVar* Node::mutable_range_var() { // @@protoc_insertion_point(field_mutable:pg_query.Node.range_var) return _internal_mutable_range_var(); } // .pg_query.TableFunc table_func = 3 [json_name = "TableFunc"]; inline bool Node::_internal_has_table_func() const { return node_case() == kTableFunc; } inline bool Node::has_table_func() const { return _internal_has_table_func(); } inline void Node::set_has_table_func() { _oneof_case_[0] = kTableFunc; } inline void Node::clear_table_func() { if (_internal_has_table_func()) { if (GetArena() == nullptr) { delete node_.table_func_; } clear_has_node(); } } inline ::pg_query::TableFunc* Node::release_table_func() { // @@protoc_insertion_point(field_release:pg_query.Node.table_func) if (_internal_has_table_func()) { clear_has_node(); ::pg_query::TableFunc* temp = node_.table_func_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.table_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TableFunc& Node::_internal_table_func() const { return _internal_has_table_func() ? *node_.table_func_ : reinterpret_cast< ::pg_query::TableFunc&>(::pg_query::_TableFunc_default_instance_); } inline const ::pg_query::TableFunc& Node::table_func() const { // @@protoc_insertion_point(field_get:pg_query.Node.table_func) return _internal_table_func(); } inline ::pg_query::TableFunc* Node::unsafe_arena_release_table_func() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.table_func) if (_internal_has_table_func()) { clear_has_node(); ::pg_query::TableFunc* temp = node_.table_func_; node_.table_func_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_table_func(::pg_query::TableFunc* table_func) { clear_node(); if (table_func) { set_has_table_func(); node_.table_func_ = table_func; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.table_func) } inline ::pg_query::TableFunc* Node::_internal_mutable_table_func() { if (!_internal_has_table_func()) { clear_node(); set_has_table_func(); node_.table_func_ = CreateMaybeMessage< ::pg_query::TableFunc >(GetArena()); } return node_.table_func_; } inline ::pg_query::TableFunc* Node::mutable_table_func() { // @@protoc_insertion_point(field_mutable:pg_query.Node.table_func) return _internal_mutable_table_func(); } // .pg_query.Expr expr = 4 [json_name = "Expr"]; inline bool Node::_internal_has_expr() const { return node_case() == kExpr; } inline bool Node::has_expr() const { return _internal_has_expr(); } inline void Node::set_has_expr() { _oneof_case_[0] = kExpr; } inline void Node::clear_expr() { if (_internal_has_expr()) { if (GetArena() == nullptr) { delete node_.expr_; } clear_has_node(); } } inline ::pg_query::Expr* Node::release_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.expr) if (_internal_has_expr()) { clear_has_node(); ::pg_query::Expr* temp = node_.expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Expr& Node::_internal_expr() const { return _internal_has_expr() ? *node_.expr_ : reinterpret_cast< ::pg_query::Expr&>(::pg_query::_Expr_default_instance_); } inline const ::pg_query::Expr& Node::expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.expr) return _internal_expr(); } inline ::pg_query::Expr* Node::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.expr) if (_internal_has_expr()) { clear_has_node(); ::pg_query::Expr* temp = node_.expr_; node_.expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_expr(::pg_query::Expr* expr) { clear_node(); if (expr) { set_has_expr(); node_.expr_ = expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.expr) } inline ::pg_query::Expr* Node::_internal_mutable_expr() { if (!_internal_has_expr()) { clear_node(); set_has_expr(); node_.expr_ = CreateMaybeMessage< ::pg_query::Expr >(GetArena()); } return node_.expr_; } inline ::pg_query::Expr* Node::mutable_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.expr) return _internal_mutable_expr(); } // .pg_query.Var var = 5 [json_name = "Var"]; inline bool Node::_internal_has_var() const { return node_case() == kVar; } inline bool Node::has_var() const { return _internal_has_var(); } inline void Node::set_has_var() { _oneof_case_[0] = kVar; } inline void Node::clear_var() { if (_internal_has_var()) { if (GetArena() == nullptr) { delete node_.var_; } clear_has_node(); } } inline ::pg_query::Var* Node::release_var() { // @@protoc_insertion_point(field_release:pg_query.Node.var) if (_internal_has_var()) { clear_has_node(); ::pg_query::Var* temp = node_.var_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.var_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Var& Node::_internal_var() const { return _internal_has_var() ? *node_.var_ : reinterpret_cast< ::pg_query::Var&>(::pg_query::_Var_default_instance_); } inline const ::pg_query::Var& Node::var() const { // @@protoc_insertion_point(field_get:pg_query.Node.var) return _internal_var(); } inline ::pg_query::Var* Node::unsafe_arena_release_var() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.var) if (_internal_has_var()) { clear_has_node(); ::pg_query::Var* temp = node_.var_; node_.var_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_var(::pg_query::Var* var) { clear_node(); if (var) { set_has_var(); node_.var_ = var; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.var) } inline ::pg_query::Var* Node::_internal_mutable_var() { if (!_internal_has_var()) { clear_node(); set_has_var(); node_.var_ = CreateMaybeMessage< ::pg_query::Var >(GetArena()); } return node_.var_; } inline ::pg_query::Var* Node::mutable_var() { // @@protoc_insertion_point(field_mutable:pg_query.Node.var) return _internal_mutable_var(); } // .pg_query.Param param = 6 [json_name = "Param"]; inline bool Node::_internal_has_param() const { return node_case() == kParam; } inline bool Node::has_param() const { return _internal_has_param(); } inline void Node::set_has_param() { _oneof_case_[0] = kParam; } inline void Node::clear_param() { if (_internal_has_param()) { if (GetArena() == nullptr) { delete node_.param_; } clear_has_node(); } } inline ::pg_query::Param* Node::release_param() { // @@protoc_insertion_point(field_release:pg_query.Node.param) if (_internal_has_param()) { clear_has_node(); ::pg_query::Param* temp = node_.param_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.param_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Param& Node::_internal_param() const { return _internal_has_param() ? *node_.param_ : reinterpret_cast< ::pg_query::Param&>(::pg_query::_Param_default_instance_); } inline const ::pg_query::Param& Node::param() const { // @@protoc_insertion_point(field_get:pg_query.Node.param) return _internal_param(); } inline ::pg_query::Param* Node::unsafe_arena_release_param() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.param) if (_internal_has_param()) { clear_has_node(); ::pg_query::Param* temp = node_.param_; node_.param_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_param(::pg_query::Param* param) { clear_node(); if (param) { set_has_param(); node_.param_ = param; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.param) } inline ::pg_query::Param* Node::_internal_mutable_param() { if (!_internal_has_param()) { clear_node(); set_has_param(); node_.param_ = CreateMaybeMessage< ::pg_query::Param >(GetArena()); } return node_.param_; } inline ::pg_query::Param* Node::mutable_param() { // @@protoc_insertion_point(field_mutable:pg_query.Node.param) return _internal_mutable_param(); } // .pg_query.Aggref aggref = 7 [json_name = "Aggref"]; inline bool Node::_internal_has_aggref() const { return node_case() == kAggref; } inline bool Node::has_aggref() const { return _internal_has_aggref(); } inline void Node::set_has_aggref() { _oneof_case_[0] = kAggref; } inline void Node::clear_aggref() { if (_internal_has_aggref()) { if (GetArena() == nullptr) { delete node_.aggref_; } clear_has_node(); } } inline ::pg_query::Aggref* Node::release_aggref() { // @@protoc_insertion_point(field_release:pg_query.Node.aggref) if (_internal_has_aggref()) { clear_has_node(); ::pg_query::Aggref* temp = node_.aggref_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.aggref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Aggref& Node::_internal_aggref() const { return _internal_has_aggref() ? *node_.aggref_ : reinterpret_cast< ::pg_query::Aggref&>(::pg_query::_Aggref_default_instance_); } inline const ::pg_query::Aggref& Node::aggref() const { // @@protoc_insertion_point(field_get:pg_query.Node.aggref) return _internal_aggref(); } inline ::pg_query::Aggref* Node::unsafe_arena_release_aggref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.aggref) if (_internal_has_aggref()) { clear_has_node(); ::pg_query::Aggref* temp = node_.aggref_; node_.aggref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_aggref(::pg_query::Aggref* aggref) { clear_node(); if (aggref) { set_has_aggref(); node_.aggref_ = aggref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.aggref) } inline ::pg_query::Aggref* Node::_internal_mutable_aggref() { if (!_internal_has_aggref()) { clear_node(); set_has_aggref(); node_.aggref_ = CreateMaybeMessage< ::pg_query::Aggref >(GetArena()); } return node_.aggref_; } inline ::pg_query::Aggref* Node::mutable_aggref() { // @@protoc_insertion_point(field_mutable:pg_query.Node.aggref) return _internal_mutable_aggref(); } // .pg_query.GroupingFunc grouping_func = 8 [json_name = "GroupingFunc"]; inline bool Node::_internal_has_grouping_func() const { return node_case() == kGroupingFunc; } inline bool Node::has_grouping_func() const { return _internal_has_grouping_func(); } inline void Node::set_has_grouping_func() { _oneof_case_[0] = kGroupingFunc; } inline void Node::clear_grouping_func() { if (_internal_has_grouping_func()) { if (GetArena() == nullptr) { delete node_.grouping_func_; } clear_has_node(); } } inline ::pg_query::GroupingFunc* Node::release_grouping_func() { // @@protoc_insertion_point(field_release:pg_query.Node.grouping_func) if (_internal_has_grouping_func()) { clear_has_node(); ::pg_query::GroupingFunc* temp = node_.grouping_func_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.grouping_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GroupingFunc& Node::_internal_grouping_func() const { return _internal_has_grouping_func() ? *node_.grouping_func_ : reinterpret_cast< ::pg_query::GroupingFunc&>(::pg_query::_GroupingFunc_default_instance_); } inline const ::pg_query::GroupingFunc& Node::grouping_func() const { // @@protoc_insertion_point(field_get:pg_query.Node.grouping_func) return _internal_grouping_func(); } inline ::pg_query::GroupingFunc* Node::unsafe_arena_release_grouping_func() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grouping_func) if (_internal_has_grouping_func()) { clear_has_node(); ::pg_query::GroupingFunc* temp = node_.grouping_func_; node_.grouping_func_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_grouping_func(::pg_query::GroupingFunc* grouping_func) { clear_node(); if (grouping_func) { set_has_grouping_func(); node_.grouping_func_ = grouping_func; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grouping_func) } inline ::pg_query::GroupingFunc* Node::_internal_mutable_grouping_func() { if (!_internal_has_grouping_func()) { clear_node(); set_has_grouping_func(); node_.grouping_func_ = CreateMaybeMessage< ::pg_query::GroupingFunc >(GetArena()); } return node_.grouping_func_; } inline ::pg_query::GroupingFunc* Node::mutable_grouping_func() { // @@protoc_insertion_point(field_mutable:pg_query.Node.grouping_func) return _internal_mutable_grouping_func(); } // .pg_query.WindowFunc window_func = 9 [json_name = "WindowFunc"]; inline bool Node::_internal_has_window_func() const { return node_case() == kWindowFunc; } inline bool Node::has_window_func() const { return _internal_has_window_func(); } inline void Node::set_has_window_func() { _oneof_case_[0] = kWindowFunc; } inline void Node::clear_window_func() { if (_internal_has_window_func()) { if (GetArena() == nullptr) { delete node_.window_func_; } clear_has_node(); } } inline ::pg_query::WindowFunc* Node::release_window_func() { // @@protoc_insertion_point(field_release:pg_query.Node.window_func) if (_internal_has_window_func()) { clear_has_node(); ::pg_query::WindowFunc* temp = node_.window_func_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.window_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WindowFunc& Node::_internal_window_func() const { return _internal_has_window_func() ? *node_.window_func_ : reinterpret_cast< ::pg_query::WindowFunc&>(::pg_query::_WindowFunc_default_instance_); } inline const ::pg_query::WindowFunc& Node::window_func() const { // @@protoc_insertion_point(field_get:pg_query.Node.window_func) return _internal_window_func(); } inline ::pg_query::WindowFunc* Node::unsafe_arena_release_window_func() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.window_func) if (_internal_has_window_func()) { clear_has_node(); ::pg_query::WindowFunc* temp = node_.window_func_; node_.window_func_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_window_func(::pg_query::WindowFunc* window_func) { clear_node(); if (window_func) { set_has_window_func(); node_.window_func_ = window_func; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_func) } inline ::pg_query::WindowFunc* Node::_internal_mutable_window_func() { if (!_internal_has_window_func()) { clear_node(); set_has_window_func(); node_.window_func_ = CreateMaybeMessage< ::pg_query::WindowFunc >(GetArena()); } return node_.window_func_; } inline ::pg_query::WindowFunc* Node::mutable_window_func() { // @@protoc_insertion_point(field_mutable:pg_query.Node.window_func) return _internal_mutable_window_func(); } // .pg_query.SubscriptingRef subscripting_ref = 10 [json_name = "SubscriptingRef"]; inline bool Node::_internal_has_subscripting_ref() const { return node_case() == kSubscriptingRef; } inline bool Node::has_subscripting_ref() const { return _internal_has_subscripting_ref(); } inline void Node::set_has_subscripting_ref() { _oneof_case_[0] = kSubscriptingRef; } inline void Node::clear_subscripting_ref() { if (_internal_has_subscripting_ref()) { if (GetArena() == nullptr) { delete node_.subscripting_ref_; } clear_has_node(); } } inline ::pg_query::SubscriptingRef* Node::release_subscripting_ref() { // @@protoc_insertion_point(field_release:pg_query.Node.subscripting_ref) if (_internal_has_subscripting_ref()) { clear_has_node(); ::pg_query::SubscriptingRef* temp = node_.subscripting_ref_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.subscripting_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SubscriptingRef& Node::_internal_subscripting_ref() const { return _internal_has_subscripting_ref() ? *node_.subscripting_ref_ : reinterpret_cast< ::pg_query::SubscriptingRef&>(::pg_query::_SubscriptingRef_default_instance_); } inline const ::pg_query::SubscriptingRef& Node::subscripting_ref() const { // @@protoc_insertion_point(field_get:pg_query.Node.subscripting_ref) return _internal_subscripting_ref(); } inline ::pg_query::SubscriptingRef* Node::unsafe_arena_release_subscripting_ref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.subscripting_ref) if (_internal_has_subscripting_ref()) { clear_has_node(); ::pg_query::SubscriptingRef* temp = node_.subscripting_ref_; node_.subscripting_ref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_subscripting_ref(::pg_query::SubscriptingRef* subscripting_ref) { clear_node(); if (subscripting_ref) { set_has_subscripting_ref(); node_.subscripting_ref_ = subscripting_ref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.subscripting_ref) } inline ::pg_query::SubscriptingRef* Node::_internal_mutable_subscripting_ref() { if (!_internal_has_subscripting_ref()) { clear_node(); set_has_subscripting_ref(); node_.subscripting_ref_ = CreateMaybeMessage< ::pg_query::SubscriptingRef >(GetArena()); } return node_.subscripting_ref_; } inline ::pg_query::SubscriptingRef* Node::mutable_subscripting_ref() { // @@protoc_insertion_point(field_mutable:pg_query.Node.subscripting_ref) return _internal_mutable_subscripting_ref(); } // .pg_query.FuncExpr func_expr = 11 [json_name = "FuncExpr"]; inline bool Node::_internal_has_func_expr() const { return node_case() == kFuncExpr; } inline bool Node::has_func_expr() const { return _internal_has_func_expr(); } inline void Node::set_has_func_expr() { _oneof_case_[0] = kFuncExpr; } inline void Node::clear_func_expr() { if (_internal_has_func_expr()) { if (GetArena() == nullptr) { delete node_.func_expr_; } clear_has_node(); } } inline ::pg_query::FuncExpr* Node::release_func_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.func_expr) if (_internal_has_func_expr()) { clear_has_node(); ::pg_query::FuncExpr* temp = node_.func_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.func_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FuncExpr& Node::_internal_func_expr() const { return _internal_has_func_expr() ? *node_.func_expr_ : reinterpret_cast< ::pg_query::FuncExpr&>(::pg_query::_FuncExpr_default_instance_); } inline const ::pg_query::FuncExpr& Node::func_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.func_expr) return _internal_func_expr(); } inline ::pg_query::FuncExpr* Node::unsafe_arena_release_func_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.func_expr) if (_internal_has_func_expr()) { clear_has_node(); ::pg_query::FuncExpr* temp = node_.func_expr_; node_.func_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_func_expr(::pg_query::FuncExpr* func_expr) { clear_node(); if (func_expr) { set_has_func_expr(); node_.func_expr_ = func_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.func_expr) } inline ::pg_query::FuncExpr* Node::_internal_mutable_func_expr() { if (!_internal_has_func_expr()) { clear_node(); set_has_func_expr(); node_.func_expr_ = CreateMaybeMessage< ::pg_query::FuncExpr >(GetArena()); } return node_.func_expr_; } inline ::pg_query::FuncExpr* Node::mutable_func_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.func_expr) return _internal_mutable_func_expr(); } // .pg_query.NamedArgExpr named_arg_expr = 12 [json_name = "NamedArgExpr"]; inline bool Node::_internal_has_named_arg_expr() const { return node_case() == kNamedArgExpr; } inline bool Node::has_named_arg_expr() const { return _internal_has_named_arg_expr(); } inline void Node::set_has_named_arg_expr() { _oneof_case_[0] = kNamedArgExpr; } inline void Node::clear_named_arg_expr() { if (_internal_has_named_arg_expr()) { if (GetArena() == nullptr) { delete node_.named_arg_expr_; } clear_has_node(); } } inline ::pg_query::NamedArgExpr* Node::release_named_arg_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.named_arg_expr) if (_internal_has_named_arg_expr()) { clear_has_node(); ::pg_query::NamedArgExpr* temp = node_.named_arg_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.named_arg_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NamedArgExpr& Node::_internal_named_arg_expr() const { return _internal_has_named_arg_expr() ? *node_.named_arg_expr_ : reinterpret_cast< ::pg_query::NamedArgExpr&>(::pg_query::_NamedArgExpr_default_instance_); } inline const ::pg_query::NamedArgExpr& Node::named_arg_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.named_arg_expr) return _internal_named_arg_expr(); } inline ::pg_query::NamedArgExpr* Node::unsafe_arena_release_named_arg_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.named_arg_expr) if (_internal_has_named_arg_expr()) { clear_has_node(); ::pg_query::NamedArgExpr* temp = node_.named_arg_expr_; node_.named_arg_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_named_arg_expr(::pg_query::NamedArgExpr* named_arg_expr) { clear_node(); if (named_arg_expr) { set_has_named_arg_expr(); node_.named_arg_expr_ = named_arg_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.named_arg_expr) } inline ::pg_query::NamedArgExpr* Node::_internal_mutable_named_arg_expr() { if (!_internal_has_named_arg_expr()) { clear_node(); set_has_named_arg_expr(); node_.named_arg_expr_ = CreateMaybeMessage< ::pg_query::NamedArgExpr >(GetArena()); } return node_.named_arg_expr_; } inline ::pg_query::NamedArgExpr* Node::mutable_named_arg_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.named_arg_expr) return _internal_mutable_named_arg_expr(); } // .pg_query.OpExpr op_expr = 13 [json_name = "OpExpr"]; inline bool Node::_internal_has_op_expr() const { return node_case() == kOpExpr; } inline bool Node::has_op_expr() const { return _internal_has_op_expr(); } inline void Node::set_has_op_expr() { _oneof_case_[0] = kOpExpr; } inline void Node::clear_op_expr() { if (_internal_has_op_expr()) { if (GetArena() == nullptr) { delete node_.op_expr_; } clear_has_node(); } } inline ::pg_query::OpExpr* Node::release_op_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.op_expr) if (_internal_has_op_expr()) { clear_has_node(); ::pg_query::OpExpr* temp = node_.op_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.op_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::OpExpr& Node::_internal_op_expr() const { return _internal_has_op_expr() ? *node_.op_expr_ : reinterpret_cast< ::pg_query::OpExpr&>(::pg_query::_OpExpr_default_instance_); } inline const ::pg_query::OpExpr& Node::op_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.op_expr) return _internal_op_expr(); } inline ::pg_query::OpExpr* Node::unsafe_arena_release_op_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.op_expr) if (_internal_has_op_expr()) { clear_has_node(); ::pg_query::OpExpr* temp = node_.op_expr_; node_.op_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_op_expr(::pg_query::OpExpr* op_expr) { clear_node(); if (op_expr) { set_has_op_expr(); node_.op_expr_ = op_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.op_expr) } inline ::pg_query::OpExpr* Node::_internal_mutable_op_expr() { if (!_internal_has_op_expr()) { clear_node(); set_has_op_expr(); node_.op_expr_ = CreateMaybeMessage< ::pg_query::OpExpr >(GetArena()); } return node_.op_expr_; } inline ::pg_query::OpExpr* Node::mutable_op_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.op_expr) return _internal_mutable_op_expr(); } // .pg_query.DistinctExpr distinct_expr = 14 [json_name = "DistinctExpr"]; inline bool Node::_internal_has_distinct_expr() const { return node_case() == kDistinctExpr; } inline bool Node::has_distinct_expr() const { return _internal_has_distinct_expr(); } inline void Node::set_has_distinct_expr() { _oneof_case_[0] = kDistinctExpr; } inline void Node::clear_distinct_expr() { if (_internal_has_distinct_expr()) { if (GetArena() == nullptr) { delete node_.distinct_expr_; } clear_has_node(); } } inline ::pg_query::DistinctExpr* Node::release_distinct_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.distinct_expr) if (_internal_has_distinct_expr()) { clear_has_node(); ::pg_query::DistinctExpr* temp = node_.distinct_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.distinct_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DistinctExpr& Node::_internal_distinct_expr() const { return _internal_has_distinct_expr() ? *node_.distinct_expr_ : reinterpret_cast< ::pg_query::DistinctExpr&>(::pg_query::_DistinctExpr_default_instance_); } inline const ::pg_query::DistinctExpr& Node::distinct_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.distinct_expr) return _internal_distinct_expr(); } inline ::pg_query::DistinctExpr* Node::unsafe_arena_release_distinct_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.distinct_expr) if (_internal_has_distinct_expr()) { clear_has_node(); ::pg_query::DistinctExpr* temp = node_.distinct_expr_; node_.distinct_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_distinct_expr(::pg_query::DistinctExpr* distinct_expr) { clear_node(); if (distinct_expr) { set_has_distinct_expr(); node_.distinct_expr_ = distinct_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.distinct_expr) } inline ::pg_query::DistinctExpr* Node::_internal_mutable_distinct_expr() { if (!_internal_has_distinct_expr()) { clear_node(); set_has_distinct_expr(); node_.distinct_expr_ = CreateMaybeMessage< ::pg_query::DistinctExpr >(GetArena()); } return node_.distinct_expr_; } inline ::pg_query::DistinctExpr* Node::mutable_distinct_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.distinct_expr) return _internal_mutable_distinct_expr(); } // .pg_query.NullIfExpr null_if_expr = 15 [json_name = "NullIfExpr"]; inline bool Node::_internal_has_null_if_expr() const { return node_case() == kNullIfExpr; } inline bool Node::has_null_if_expr() const { return _internal_has_null_if_expr(); } inline void Node::set_has_null_if_expr() { _oneof_case_[0] = kNullIfExpr; } inline void Node::clear_null_if_expr() { if (_internal_has_null_if_expr()) { if (GetArena() == nullptr) { delete node_.null_if_expr_; } clear_has_node(); } } inline ::pg_query::NullIfExpr* Node::release_null_if_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.null_if_expr) if (_internal_has_null_if_expr()) { clear_has_node(); ::pg_query::NullIfExpr* temp = node_.null_if_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.null_if_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NullIfExpr& Node::_internal_null_if_expr() const { return _internal_has_null_if_expr() ? *node_.null_if_expr_ : reinterpret_cast< ::pg_query::NullIfExpr&>(::pg_query::_NullIfExpr_default_instance_); } inline const ::pg_query::NullIfExpr& Node::null_if_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.null_if_expr) return _internal_null_if_expr(); } inline ::pg_query::NullIfExpr* Node::unsafe_arena_release_null_if_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.null_if_expr) if (_internal_has_null_if_expr()) { clear_has_node(); ::pg_query::NullIfExpr* temp = node_.null_if_expr_; node_.null_if_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_null_if_expr(::pg_query::NullIfExpr* null_if_expr) { clear_node(); if (null_if_expr) { set_has_null_if_expr(); node_.null_if_expr_ = null_if_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.null_if_expr) } inline ::pg_query::NullIfExpr* Node::_internal_mutable_null_if_expr() { if (!_internal_has_null_if_expr()) { clear_node(); set_has_null_if_expr(); node_.null_if_expr_ = CreateMaybeMessage< ::pg_query::NullIfExpr >(GetArena()); } return node_.null_if_expr_; } inline ::pg_query::NullIfExpr* Node::mutable_null_if_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.null_if_expr) return _internal_mutable_null_if_expr(); } // .pg_query.ScalarArrayOpExpr scalar_array_op_expr = 16 [json_name = "ScalarArrayOpExpr"]; inline bool Node::_internal_has_scalar_array_op_expr() const { return node_case() == kScalarArrayOpExpr; } inline bool Node::has_scalar_array_op_expr() const { return _internal_has_scalar_array_op_expr(); } inline void Node::set_has_scalar_array_op_expr() { _oneof_case_[0] = kScalarArrayOpExpr; } inline void Node::clear_scalar_array_op_expr() { if (_internal_has_scalar_array_op_expr()) { if (GetArena() == nullptr) { delete node_.scalar_array_op_expr_; } clear_has_node(); } } inline ::pg_query::ScalarArrayOpExpr* Node::release_scalar_array_op_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.scalar_array_op_expr) if (_internal_has_scalar_array_op_expr()) { clear_has_node(); ::pg_query::ScalarArrayOpExpr* temp = node_.scalar_array_op_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.scalar_array_op_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ScalarArrayOpExpr& Node::_internal_scalar_array_op_expr() const { return _internal_has_scalar_array_op_expr() ? *node_.scalar_array_op_expr_ : reinterpret_cast< ::pg_query::ScalarArrayOpExpr&>(::pg_query::_ScalarArrayOpExpr_default_instance_); } inline const ::pg_query::ScalarArrayOpExpr& Node::scalar_array_op_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.scalar_array_op_expr) return _internal_scalar_array_op_expr(); } inline ::pg_query::ScalarArrayOpExpr* Node::unsafe_arena_release_scalar_array_op_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.scalar_array_op_expr) if (_internal_has_scalar_array_op_expr()) { clear_has_node(); ::pg_query::ScalarArrayOpExpr* temp = node_.scalar_array_op_expr_; node_.scalar_array_op_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_scalar_array_op_expr(::pg_query::ScalarArrayOpExpr* scalar_array_op_expr) { clear_node(); if (scalar_array_op_expr) { set_has_scalar_array_op_expr(); node_.scalar_array_op_expr_ = scalar_array_op_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.scalar_array_op_expr) } inline ::pg_query::ScalarArrayOpExpr* Node::_internal_mutable_scalar_array_op_expr() { if (!_internal_has_scalar_array_op_expr()) { clear_node(); set_has_scalar_array_op_expr(); node_.scalar_array_op_expr_ = CreateMaybeMessage< ::pg_query::ScalarArrayOpExpr >(GetArena()); } return node_.scalar_array_op_expr_; } inline ::pg_query::ScalarArrayOpExpr* Node::mutable_scalar_array_op_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.scalar_array_op_expr) return _internal_mutable_scalar_array_op_expr(); } // .pg_query.BoolExpr bool_expr = 17 [json_name = "BoolExpr"]; inline bool Node::_internal_has_bool_expr() const { return node_case() == kBoolExpr; } inline bool Node::has_bool_expr() const { return _internal_has_bool_expr(); } inline void Node::set_has_bool_expr() { _oneof_case_[0] = kBoolExpr; } inline void Node::clear_bool_expr() { if (_internal_has_bool_expr()) { if (GetArena() == nullptr) { delete node_.bool_expr_; } clear_has_node(); } } inline ::pg_query::BoolExpr* Node::release_bool_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.bool_expr) if (_internal_has_bool_expr()) { clear_has_node(); ::pg_query::BoolExpr* temp = node_.bool_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.bool_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BoolExpr& Node::_internal_bool_expr() const { return _internal_has_bool_expr() ? *node_.bool_expr_ : reinterpret_cast< ::pg_query::BoolExpr&>(::pg_query::_BoolExpr_default_instance_); } inline const ::pg_query::BoolExpr& Node::bool_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.bool_expr) return _internal_bool_expr(); } inline ::pg_query::BoolExpr* Node::unsafe_arena_release_bool_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.bool_expr) if (_internal_has_bool_expr()) { clear_has_node(); ::pg_query::BoolExpr* temp = node_.bool_expr_; node_.bool_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_bool_expr(::pg_query::BoolExpr* bool_expr) { clear_node(); if (bool_expr) { set_has_bool_expr(); node_.bool_expr_ = bool_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.bool_expr) } inline ::pg_query::BoolExpr* Node::_internal_mutable_bool_expr() { if (!_internal_has_bool_expr()) { clear_node(); set_has_bool_expr(); node_.bool_expr_ = CreateMaybeMessage< ::pg_query::BoolExpr >(GetArena()); } return node_.bool_expr_; } inline ::pg_query::BoolExpr* Node::mutable_bool_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.bool_expr) return _internal_mutable_bool_expr(); } // .pg_query.SubLink sub_link = 18 [json_name = "SubLink"]; inline bool Node::_internal_has_sub_link() const { return node_case() == kSubLink; } inline bool Node::has_sub_link() const { return _internal_has_sub_link(); } inline void Node::set_has_sub_link() { _oneof_case_[0] = kSubLink; } inline void Node::clear_sub_link() { if (_internal_has_sub_link()) { if (GetArena() == nullptr) { delete node_.sub_link_; } clear_has_node(); } } inline ::pg_query::SubLink* Node::release_sub_link() { // @@protoc_insertion_point(field_release:pg_query.Node.sub_link) if (_internal_has_sub_link()) { clear_has_node(); ::pg_query::SubLink* temp = node_.sub_link_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.sub_link_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SubLink& Node::_internal_sub_link() const { return _internal_has_sub_link() ? *node_.sub_link_ : reinterpret_cast< ::pg_query::SubLink&>(::pg_query::_SubLink_default_instance_); } inline const ::pg_query::SubLink& Node::sub_link() const { // @@protoc_insertion_point(field_get:pg_query.Node.sub_link) return _internal_sub_link(); } inline ::pg_query::SubLink* Node::unsafe_arena_release_sub_link() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sub_link) if (_internal_has_sub_link()) { clear_has_node(); ::pg_query::SubLink* temp = node_.sub_link_; node_.sub_link_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sub_link(::pg_query::SubLink* sub_link) { clear_node(); if (sub_link) { set_has_sub_link(); node_.sub_link_ = sub_link; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sub_link) } inline ::pg_query::SubLink* Node::_internal_mutable_sub_link() { if (!_internal_has_sub_link()) { clear_node(); set_has_sub_link(); node_.sub_link_ = CreateMaybeMessage< ::pg_query::SubLink >(GetArena()); } return node_.sub_link_; } inline ::pg_query::SubLink* Node::mutable_sub_link() { // @@protoc_insertion_point(field_mutable:pg_query.Node.sub_link) return _internal_mutable_sub_link(); } // .pg_query.SubPlan sub_plan = 19 [json_name = "SubPlan"]; inline bool Node::_internal_has_sub_plan() const { return node_case() == kSubPlan; } inline bool Node::has_sub_plan() const { return _internal_has_sub_plan(); } inline void Node::set_has_sub_plan() { _oneof_case_[0] = kSubPlan; } inline void Node::clear_sub_plan() { if (_internal_has_sub_plan()) { if (GetArena() == nullptr) { delete node_.sub_plan_; } clear_has_node(); } } inline ::pg_query::SubPlan* Node::release_sub_plan() { // @@protoc_insertion_point(field_release:pg_query.Node.sub_plan) if (_internal_has_sub_plan()) { clear_has_node(); ::pg_query::SubPlan* temp = node_.sub_plan_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.sub_plan_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SubPlan& Node::_internal_sub_plan() const { return _internal_has_sub_plan() ? *node_.sub_plan_ : reinterpret_cast< ::pg_query::SubPlan&>(::pg_query::_SubPlan_default_instance_); } inline const ::pg_query::SubPlan& Node::sub_plan() const { // @@protoc_insertion_point(field_get:pg_query.Node.sub_plan) return _internal_sub_plan(); } inline ::pg_query::SubPlan* Node::unsafe_arena_release_sub_plan() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sub_plan) if (_internal_has_sub_plan()) { clear_has_node(); ::pg_query::SubPlan* temp = node_.sub_plan_; node_.sub_plan_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sub_plan(::pg_query::SubPlan* sub_plan) { clear_node(); if (sub_plan) { set_has_sub_plan(); node_.sub_plan_ = sub_plan; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sub_plan) } inline ::pg_query::SubPlan* Node::_internal_mutable_sub_plan() { if (!_internal_has_sub_plan()) { clear_node(); set_has_sub_plan(); node_.sub_plan_ = CreateMaybeMessage< ::pg_query::SubPlan >(GetArena()); } return node_.sub_plan_; } inline ::pg_query::SubPlan* Node::mutable_sub_plan() { // @@protoc_insertion_point(field_mutable:pg_query.Node.sub_plan) return _internal_mutable_sub_plan(); } // .pg_query.AlternativeSubPlan alternative_sub_plan = 20 [json_name = "AlternativeSubPlan"]; inline bool Node::_internal_has_alternative_sub_plan() const { return node_case() == kAlternativeSubPlan; } inline bool Node::has_alternative_sub_plan() const { return _internal_has_alternative_sub_plan(); } inline void Node::set_has_alternative_sub_plan() { _oneof_case_[0] = kAlternativeSubPlan; } inline void Node::clear_alternative_sub_plan() { if (_internal_has_alternative_sub_plan()) { if (GetArena() == nullptr) { delete node_.alternative_sub_plan_; } clear_has_node(); } } inline ::pg_query::AlternativeSubPlan* Node::release_alternative_sub_plan() { // @@protoc_insertion_point(field_release:pg_query.Node.alternative_sub_plan) if (_internal_has_alternative_sub_plan()) { clear_has_node(); ::pg_query::AlternativeSubPlan* temp = node_.alternative_sub_plan_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alternative_sub_plan_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlternativeSubPlan& Node::_internal_alternative_sub_plan() const { return _internal_has_alternative_sub_plan() ? *node_.alternative_sub_plan_ : reinterpret_cast< ::pg_query::AlternativeSubPlan&>(::pg_query::_AlternativeSubPlan_default_instance_); } inline const ::pg_query::AlternativeSubPlan& Node::alternative_sub_plan() const { // @@protoc_insertion_point(field_get:pg_query.Node.alternative_sub_plan) return _internal_alternative_sub_plan(); } inline ::pg_query::AlternativeSubPlan* Node::unsafe_arena_release_alternative_sub_plan() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alternative_sub_plan) if (_internal_has_alternative_sub_plan()) { clear_has_node(); ::pg_query::AlternativeSubPlan* temp = node_.alternative_sub_plan_; node_.alternative_sub_plan_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alternative_sub_plan(::pg_query::AlternativeSubPlan* alternative_sub_plan) { clear_node(); if (alternative_sub_plan) { set_has_alternative_sub_plan(); node_.alternative_sub_plan_ = alternative_sub_plan; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alternative_sub_plan) } inline ::pg_query::AlternativeSubPlan* Node::_internal_mutable_alternative_sub_plan() { if (!_internal_has_alternative_sub_plan()) { clear_node(); set_has_alternative_sub_plan(); node_.alternative_sub_plan_ = CreateMaybeMessage< ::pg_query::AlternativeSubPlan >(GetArena()); } return node_.alternative_sub_plan_; } inline ::pg_query::AlternativeSubPlan* Node::mutable_alternative_sub_plan() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alternative_sub_plan) return _internal_mutable_alternative_sub_plan(); } // .pg_query.FieldSelect field_select = 21 [json_name = "FieldSelect"]; inline bool Node::_internal_has_field_select() const { return node_case() == kFieldSelect; } inline bool Node::has_field_select() const { return _internal_has_field_select(); } inline void Node::set_has_field_select() { _oneof_case_[0] = kFieldSelect; } inline void Node::clear_field_select() { if (_internal_has_field_select()) { if (GetArena() == nullptr) { delete node_.field_select_; } clear_has_node(); } } inline ::pg_query::FieldSelect* Node::release_field_select() { // @@protoc_insertion_point(field_release:pg_query.Node.field_select) if (_internal_has_field_select()) { clear_has_node(); ::pg_query::FieldSelect* temp = node_.field_select_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.field_select_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FieldSelect& Node::_internal_field_select() const { return _internal_has_field_select() ? *node_.field_select_ : reinterpret_cast< ::pg_query::FieldSelect&>(::pg_query::_FieldSelect_default_instance_); } inline const ::pg_query::FieldSelect& Node::field_select() const { // @@protoc_insertion_point(field_get:pg_query.Node.field_select) return _internal_field_select(); } inline ::pg_query::FieldSelect* Node::unsafe_arena_release_field_select() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.field_select) if (_internal_has_field_select()) { clear_has_node(); ::pg_query::FieldSelect* temp = node_.field_select_; node_.field_select_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_field_select(::pg_query::FieldSelect* field_select) { clear_node(); if (field_select) { set_has_field_select(); node_.field_select_ = field_select; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.field_select) } inline ::pg_query::FieldSelect* Node::_internal_mutable_field_select() { if (!_internal_has_field_select()) { clear_node(); set_has_field_select(); node_.field_select_ = CreateMaybeMessage< ::pg_query::FieldSelect >(GetArena()); } return node_.field_select_; } inline ::pg_query::FieldSelect* Node::mutable_field_select() { // @@protoc_insertion_point(field_mutable:pg_query.Node.field_select) return _internal_mutable_field_select(); } // .pg_query.FieldStore field_store = 22 [json_name = "FieldStore"]; inline bool Node::_internal_has_field_store() const { return node_case() == kFieldStore; } inline bool Node::has_field_store() const { return _internal_has_field_store(); } inline void Node::set_has_field_store() { _oneof_case_[0] = kFieldStore; } inline void Node::clear_field_store() { if (_internal_has_field_store()) { if (GetArena() == nullptr) { delete node_.field_store_; } clear_has_node(); } } inline ::pg_query::FieldStore* Node::release_field_store() { // @@protoc_insertion_point(field_release:pg_query.Node.field_store) if (_internal_has_field_store()) { clear_has_node(); ::pg_query::FieldStore* temp = node_.field_store_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.field_store_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FieldStore& Node::_internal_field_store() const { return _internal_has_field_store() ? *node_.field_store_ : reinterpret_cast< ::pg_query::FieldStore&>(::pg_query::_FieldStore_default_instance_); } inline const ::pg_query::FieldStore& Node::field_store() const { // @@protoc_insertion_point(field_get:pg_query.Node.field_store) return _internal_field_store(); } inline ::pg_query::FieldStore* Node::unsafe_arena_release_field_store() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.field_store) if (_internal_has_field_store()) { clear_has_node(); ::pg_query::FieldStore* temp = node_.field_store_; node_.field_store_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_field_store(::pg_query::FieldStore* field_store) { clear_node(); if (field_store) { set_has_field_store(); node_.field_store_ = field_store; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.field_store) } inline ::pg_query::FieldStore* Node::_internal_mutable_field_store() { if (!_internal_has_field_store()) { clear_node(); set_has_field_store(); node_.field_store_ = CreateMaybeMessage< ::pg_query::FieldStore >(GetArena()); } return node_.field_store_; } inline ::pg_query::FieldStore* Node::mutable_field_store() { // @@protoc_insertion_point(field_mutable:pg_query.Node.field_store) return _internal_mutable_field_store(); } // .pg_query.RelabelType relabel_type = 23 [json_name = "RelabelType"]; inline bool Node::_internal_has_relabel_type() const { return node_case() == kRelabelType; } inline bool Node::has_relabel_type() const { return _internal_has_relabel_type(); } inline void Node::set_has_relabel_type() { _oneof_case_[0] = kRelabelType; } inline void Node::clear_relabel_type() { if (_internal_has_relabel_type()) { if (GetArena() == nullptr) { delete node_.relabel_type_; } clear_has_node(); } } inline ::pg_query::RelabelType* Node::release_relabel_type() { // @@protoc_insertion_point(field_release:pg_query.Node.relabel_type) if (_internal_has_relabel_type()) { clear_has_node(); ::pg_query::RelabelType* temp = node_.relabel_type_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.relabel_type_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RelabelType& Node::_internal_relabel_type() const { return _internal_has_relabel_type() ? *node_.relabel_type_ : reinterpret_cast< ::pg_query::RelabelType&>(::pg_query::_RelabelType_default_instance_); } inline const ::pg_query::RelabelType& Node::relabel_type() const { // @@protoc_insertion_point(field_get:pg_query.Node.relabel_type) return _internal_relabel_type(); } inline ::pg_query::RelabelType* Node::unsafe_arena_release_relabel_type() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.relabel_type) if (_internal_has_relabel_type()) { clear_has_node(); ::pg_query::RelabelType* temp = node_.relabel_type_; node_.relabel_type_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_relabel_type(::pg_query::RelabelType* relabel_type) { clear_node(); if (relabel_type) { set_has_relabel_type(); node_.relabel_type_ = relabel_type; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.relabel_type) } inline ::pg_query::RelabelType* Node::_internal_mutable_relabel_type() { if (!_internal_has_relabel_type()) { clear_node(); set_has_relabel_type(); node_.relabel_type_ = CreateMaybeMessage< ::pg_query::RelabelType >(GetArena()); } return node_.relabel_type_; } inline ::pg_query::RelabelType* Node::mutable_relabel_type() { // @@protoc_insertion_point(field_mutable:pg_query.Node.relabel_type) return _internal_mutable_relabel_type(); } // .pg_query.CoerceViaIO coerce_via_io = 24 [json_name = "CoerceViaIO"]; inline bool Node::_internal_has_coerce_via_io() const { return node_case() == kCoerceViaIo; } inline bool Node::has_coerce_via_io() const { return _internal_has_coerce_via_io(); } inline void Node::set_has_coerce_via_io() { _oneof_case_[0] = kCoerceViaIo; } inline void Node::clear_coerce_via_io() { if (_internal_has_coerce_via_io()) { if (GetArena() == nullptr) { delete node_.coerce_via_io_; } clear_has_node(); } } inline ::pg_query::CoerceViaIO* Node::release_coerce_via_io() { // @@protoc_insertion_point(field_release:pg_query.Node.coerce_via_io) if (_internal_has_coerce_via_io()) { clear_has_node(); ::pg_query::CoerceViaIO* temp = node_.coerce_via_io_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.coerce_via_io_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CoerceViaIO& Node::_internal_coerce_via_io() const { return _internal_has_coerce_via_io() ? *node_.coerce_via_io_ : reinterpret_cast< ::pg_query::CoerceViaIO&>(::pg_query::_CoerceViaIO_default_instance_); } inline const ::pg_query::CoerceViaIO& Node::coerce_via_io() const { // @@protoc_insertion_point(field_get:pg_query.Node.coerce_via_io) return _internal_coerce_via_io(); } inline ::pg_query::CoerceViaIO* Node::unsafe_arena_release_coerce_via_io() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coerce_via_io) if (_internal_has_coerce_via_io()) { clear_has_node(); ::pg_query::CoerceViaIO* temp = node_.coerce_via_io_; node_.coerce_via_io_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_coerce_via_io(::pg_query::CoerceViaIO* coerce_via_io) { clear_node(); if (coerce_via_io) { set_has_coerce_via_io(); node_.coerce_via_io_ = coerce_via_io; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coerce_via_io) } inline ::pg_query::CoerceViaIO* Node::_internal_mutable_coerce_via_io() { if (!_internal_has_coerce_via_io()) { clear_node(); set_has_coerce_via_io(); node_.coerce_via_io_ = CreateMaybeMessage< ::pg_query::CoerceViaIO >(GetArena()); } return node_.coerce_via_io_; } inline ::pg_query::CoerceViaIO* Node::mutable_coerce_via_io() { // @@protoc_insertion_point(field_mutable:pg_query.Node.coerce_via_io) return _internal_mutable_coerce_via_io(); } // .pg_query.ArrayCoerceExpr array_coerce_expr = 25 [json_name = "ArrayCoerceExpr"]; inline bool Node::_internal_has_array_coerce_expr() const { return node_case() == kArrayCoerceExpr; } inline bool Node::has_array_coerce_expr() const { return _internal_has_array_coerce_expr(); } inline void Node::set_has_array_coerce_expr() { _oneof_case_[0] = kArrayCoerceExpr; } inline void Node::clear_array_coerce_expr() { if (_internal_has_array_coerce_expr()) { if (GetArena() == nullptr) { delete node_.array_coerce_expr_; } clear_has_node(); } } inline ::pg_query::ArrayCoerceExpr* Node::release_array_coerce_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.array_coerce_expr) if (_internal_has_array_coerce_expr()) { clear_has_node(); ::pg_query::ArrayCoerceExpr* temp = node_.array_coerce_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.array_coerce_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ArrayCoerceExpr& Node::_internal_array_coerce_expr() const { return _internal_has_array_coerce_expr() ? *node_.array_coerce_expr_ : reinterpret_cast< ::pg_query::ArrayCoerceExpr&>(::pg_query::_ArrayCoerceExpr_default_instance_); } inline const ::pg_query::ArrayCoerceExpr& Node::array_coerce_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.array_coerce_expr) return _internal_array_coerce_expr(); } inline ::pg_query::ArrayCoerceExpr* Node::unsafe_arena_release_array_coerce_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.array_coerce_expr) if (_internal_has_array_coerce_expr()) { clear_has_node(); ::pg_query::ArrayCoerceExpr* temp = node_.array_coerce_expr_; node_.array_coerce_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_array_coerce_expr(::pg_query::ArrayCoerceExpr* array_coerce_expr) { clear_node(); if (array_coerce_expr) { set_has_array_coerce_expr(); node_.array_coerce_expr_ = array_coerce_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.array_coerce_expr) } inline ::pg_query::ArrayCoerceExpr* Node::_internal_mutable_array_coerce_expr() { if (!_internal_has_array_coerce_expr()) { clear_node(); set_has_array_coerce_expr(); node_.array_coerce_expr_ = CreateMaybeMessage< ::pg_query::ArrayCoerceExpr >(GetArena()); } return node_.array_coerce_expr_; } inline ::pg_query::ArrayCoerceExpr* Node::mutable_array_coerce_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.array_coerce_expr) return _internal_mutable_array_coerce_expr(); } // .pg_query.ConvertRowtypeExpr convert_rowtype_expr = 26 [json_name = "ConvertRowtypeExpr"]; inline bool Node::_internal_has_convert_rowtype_expr() const { return node_case() == kConvertRowtypeExpr; } inline bool Node::has_convert_rowtype_expr() const { return _internal_has_convert_rowtype_expr(); } inline void Node::set_has_convert_rowtype_expr() { _oneof_case_[0] = kConvertRowtypeExpr; } inline void Node::clear_convert_rowtype_expr() { if (_internal_has_convert_rowtype_expr()) { if (GetArena() == nullptr) { delete node_.convert_rowtype_expr_; } clear_has_node(); } } inline ::pg_query::ConvertRowtypeExpr* Node::release_convert_rowtype_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.convert_rowtype_expr) if (_internal_has_convert_rowtype_expr()) { clear_has_node(); ::pg_query::ConvertRowtypeExpr* temp = node_.convert_rowtype_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.convert_rowtype_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ConvertRowtypeExpr& Node::_internal_convert_rowtype_expr() const { return _internal_has_convert_rowtype_expr() ? *node_.convert_rowtype_expr_ : reinterpret_cast< ::pg_query::ConvertRowtypeExpr&>(::pg_query::_ConvertRowtypeExpr_default_instance_); } inline const ::pg_query::ConvertRowtypeExpr& Node::convert_rowtype_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.convert_rowtype_expr) return _internal_convert_rowtype_expr(); } inline ::pg_query::ConvertRowtypeExpr* Node::unsafe_arena_release_convert_rowtype_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.convert_rowtype_expr) if (_internal_has_convert_rowtype_expr()) { clear_has_node(); ::pg_query::ConvertRowtypeExpr* temp = node_.convert_rowtype_expr_; node_.convert_rowtype_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_convert_rowtype_expr(::pg_query::ConvertRowtypeExpr* convert_rowtype_expr) { clear_node(); if (convert_rowtype_expr) { set_has_convert_rowtype_expr(); node_.convert_rowtype_expr_ = convert_rowtype_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.convert_rowtype_expr) } inline ::pg_query::ConvertRowtypeExpr* Node::_internal_mutable_convert_rowtype_expr() { if (!_internal_has_convert_rowtype_expr()) { clear_node(); set_has_convert_rowtype_expr(); node_.convert_rowtype_expr_ = CreateMaybeMessage< ::pg_query::ConvertRowtypeExpr >(GetArena()); } return node_.convert_rowtype_expr_; } inline ::pg_query::ConvertRowtypeExpr* Node::mutable_convert_rowtype_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.convert_rowtype_expr) return _internal_mutable_convert_rowtype_expr(); } // .pg_query.CollateExpr collate_expr = 27 [json_name = "CollateExpr"]; inline bool Node::_internal_has_collate_expr() const { return node_case() == kCollateExpr; } inline bool Node::has_collate_expr() const { return _internal_has_collate_expr(); } inline void Node::set_has_collate_expr() { _oneof_case_[0] = kCollateExpr; } inline void Node::clear_collate_expr() { if (_internal_has_collate_expr()) { if (GetArena() == nullptr) { delete node_.collate_expr_; } clear_has_node(); } } inline ::pg_query::CollateExpr* Node::release_collate_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.collate_expr) if (_internal_has_collate_expr()) { clear_has_node(); ::pg_query::CollateExpr* temp = node_.collate_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.collate_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CollateExpr& Node::_internal_collate_expr() const { return _internal_has_collate_expr() ? *node_.collate_expr_ : reinterpret_cast< ::pg_query::CollateExpr&>(::pg_query::_CollateExpr_default_instance_); } inline const ::pg_query::CollateExpr& Node::collate_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.collate_expr) return _internal_collate_expr(); } inline ::pg_query::CollateExpr* Node::unsafe_arena_release_collate_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.collate_expr) if (_internal_has_collate_expr()) { clear_has_node(); ::pg_query::CollateExpr* temp = node_.collate_expr_; node_.collate_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_collate_expr(::pg_query::CollateExpr* collate_expr) { clear_node(); if (collate_expr) { set_has_collate_expr(); node_.collate_expr_ = collate_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.collate_expr) } inline ::pg_query::CollateExpr* Node::_internal_mutable_collate_expr() { if (!_internal_has_collate_expr()) { clear_node(); set_has_collate_expr(); node_.collate_expr_ = CreateMaybeMessage< ::pg_query::CollateExpr >(GetArena()); } return node_.collate_expr_; } inline ::pg_query::CollateExpr* Node::mutable_collate_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.collate_expr) return _internal_mutable_collate_expr(); } // .pg_query.CaseExpr case_expr = 28 [json_name = "CaseExpr"]; inline bool Node::_internal_has_case_expr() const { return node_case() == kCaseExpr; } inline bool Node::has_case_expr() const { return _internal_has_case_expr(); } inline void Node::set_has_case_expr() { _oneof_case_[0] = kCaseExpr; } inline void Node::clear_case_expr() { if (_internal_has_case_expr()) { if (GetArena() == nullptr) { delete node_.case_expr_; } clear_has_node(); } } inline ::pg_query::CaseExpr* Node::release_case_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.case_expr) if (_internal_has_case_expr()) { clear_has_node(); ::pg_query::CaseExpr* temp = node_.case_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.case_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CaseExpr& Node::_internal_case_expr() const { return _internal_has_case_expr() ? *node_.case_expr_ : reinterpret_cast< ::pg_query::CaseExpr&>(::pg_query::_CaseExpr_default_instance_); } inline const ::pg_query::CaseExpr& Node::case_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.case_expr) return _internal_case_expr(); } inline ::pg_query::CaseExpr* Node::unsafe_arena_release_case_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.case_expr) if (_internal_has_case_expr()) { clear_has_node(); ::pg_query::CaseExpr* temp = node_.case_expr_; node_.case_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_case_expr(::pg_query::CaseExpr* case_expr) { clear_node(); if (case_expr) { set_has_case_expr(); node_.case_expr_ = case_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_expr) } inline ::pg_query::CaseExpr* Node::_internal_mutable_case_expr() { if (!_internal_has_case_expr()) { clear_node(); set_has_case_expr(); node_.case_expr_ = CreateMaybeMessage< ::pg_query::CaseExpr >(GetArena()); } return node_.case_expr_; } inline ::pg_query::CaseExpr* Node::mutable_case_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.case_expr) return _internal_mutable_case_expr(); } // .pg_query.CaseWhen case_when = 29 [json_name = "CaseWhen"]; inline bool Node::_internal_has_case_when() const { return node_case() == kCaseWhen; } inline bool Node::has_case_when() const { return _internal_has_case_when(); } inline void Node::set_has_case_when() { _oneof_case_[0] = kCaseWhen; } inline void Node::clear_case_when() { if (_internal_has_case_when()) { if (GetArena() == nullptr) { delete node_.case_when_; } clear_has_node(); } } inline ::pg_query::CaseWhen* Node::release_case_when() { // @@protoc_insertion_point(field_release:pg_query.Node.case_when) if (_internal_has_case_when()) { clear_has_node(); ::pg_query::CaseWhen* temp = node_.case_when_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.case_when_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CaseWhen& Node::_internal_case_when() const { return _internal_has_case_when() ? *node_.case_when_ : reinterpret_cast< ::pg_query::CaseWhen&>(::pg_query::_CaseWhen_default_instance_); } inline const ::pg_query::CaseWhen& Node::case_when() const { // @@protoc_insertion_point(field_get:pg_query.Node.case_when) return _internal_case_when(); } inline ::pg_query::CaseWhen* Node::unsafe_arena_release_case_when() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.case_when) if (_internal_has_case_when()) { clear_has_node(); ::pg_query::CaseWhen* temp = node_.case_when_; node_.case_when_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_case_when(::pg_query::CaseWhen* case_when) { clear_node(); if (case_when) { set_has_case_when(); node_.case_when_ = case_when; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_when) } inline ::pg_query::CaseWhen* Node::_internal_mutable_case_when() { if (!_internal_has_case_when()) { clear_node(); set_has_case_when(); node_.case_when_ = CreateMaybeMessage< ::pg_query::CaseWhen >(GetArena()); } return node_.case_when_; } inline ::pg_query::CaseWhen* Node::mutable_case_when() { // @@protoc_insertion_point(field_mutable:pg_query.Node.case_when) return _internal_mutable_case_when(); } // .pg_query.CaseTestExpr case_test_expr = 30 [json_name = "CaseTestExpr"]; inline bool Node::_internal_has_case_test_expr() const { return node_case() == kCaseTestExpr; } inline bool Node::has_case_test_expr() const { return _internal_has_case_test_expr(); } inline void Node::set_has_case_test_expr() { _oneof_case_[0] = kCaseTestExpr; } inline void Node::clear_case_test_expr() { if (_internal_has_case_test_expr()) { if (GetArena() == nullptr) { delete node_.case_test_expr_; } clear_has_node(); } } inline ::pg_query::CaseTestExpr* Node::release_case_test_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.case_test_expr) if (_internal_has_case_test_expr()) { clear_has_node(); ::pg_query::CaseTestExpr* temp = node_.case_test_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.case_test_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CaseTestExpr& Node::_internal_case_test_expr() const { return _internal_has_case_test_expr() ? *node_.case_test_expr_ : reinterpret_cast< ::pg_query::CaseTestExpr&>(::pg_query::_CaseTestExpr_default_instance_); } inline const ::pg_query::CaseTestExpr& Node::case_test_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.case_test_expr) return _internal_case_test_expr(); } inline ::pg_query::CaseTestExpr* Node::unsafe_arena_release_case_test_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.case_test_expr) if (_internal_has_case_test_expr()) { clear_has_node(); ::pg_query::CaseTestExpr* temp = node_.case_test_expr_; node_.case_test_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_case_test_expr(::pg_query::CaseTestExpr* case_test_expr) { clear_node(); if (case_test_expr) { set_has_case_test_expr(); node_.case_test_expr_ = case_test_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.case_test_expr) } inline ::pg_query::CaseTestExpr* Node::_internal_mutable_case_test_expr() { if (!_internal_has_case_test_expr()) { clear_node(); set_has_case_test_expr(); node_.case_test_expr_ = CreateMaybeMessage< ::pg_query::CaseTestExpr >(GetArena()); } return node_.case_test_expr_; } inline ::pg_query::CaseTestExpr* Node::mutable_case_test_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.case_test_expr) return _internal_mutable_case_test_expr(); } // .pg_query.ArrayExpr array_expr = 31 [json_name = "ArrayExpr"]; inline bool Node::_internal_has_array_expr() const { return node_case() == kArrayExpr; } inline bool Node::has_array_expr() const { return _internal_has_array_expr(); } inline void Node::set_has_array_expr() { _oneof_case_[0] = kArrayExpr; } inline void Node::clear_array_expr() { if (_internal_has_array_expr()) { if (GetArena() == nullptr) { delete node_.array_expr_; } clear_has_node(); } } inline ::pg_query::ArrayExpr* Node::release_array_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.array_expr) if (_internal_has_array_expr()) { clear_has_node(); ::pg_query::ArrayExpr* temp = node_.array_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.array_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ArrayExpr& Node::_internal_array_expr() const { return _internal_has_array_expr() ? *node_.array_expr_ : reinterpret_cast< ::pg_query::ArrayExpr&>(::pg_query::_ArrayExpr_default_instance_); } inline const ::pg_query::ArrayExpr& Node::array_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.array_expr) return _internal_array_expr(); } inline ::pg_query::ArrayExpr* Node::unsafe_arena_release_array_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.array_expr) if (_internal_has_array_expr()) { clear_has_node(); ::pg_query::ArrayExpr* temp = node_.array_expr_; node_.array_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_array_expr(::pg_query::ArrayExpr* array_expr) { clear_node(); if (array_expr) { set_has_array_expr(); node_.array_expr_ = array_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.array_expr) } inline ::pg_query::ArrayExpr* Node::_internal_mutable_array_expr() { if (!_internal_has_array_expr()) { clear_node(); set_has_array_expr(); node_.array_expr_ = CreateMaybeMessage< ::pg_query::ArrayExpr >(GetArena()); } return node_.array_expr_; } inline ::pg_query::ArrayExpr* Node::mutable_array_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.array_expr) return _internal_mutable_array_expr(); } // .pg_query.RowExpr row_expr = 32 [json_name = "RowExpr"]; inline bool Node::_internal_has_row_expr() const { return node_case() == kRowExpr; } inline bool Node::has_row_expr() const { return _internal_has_row_expr(); } inline void Node::set_has_row_expr() { _oneof_case_[0] = kRowExpr; } inline void Node::clear_row_expr() { if (_internal_has_row_expr()) { if (GetArena() == nullptr) { delete node_.row_expr_; } clear_has_node(); } } inline ::pg_query::RowExpr* Node::release_row_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.row_expr) if (_internal_has_row_expr()) { clear_has_node(); ::pg_query::RowExpr* temp = node_.row_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.row_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RowExpr& Node::_internal_row_expr() const { return _internal_has_row_expr() ? *node_.row_expr_ : reinterpret_cast< ::pg_query::RowExpr&>(::pg_query::_RowExpr_default_instance_); } inline const ::pg_query::RowExpr& Node::row_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.row_expr) return _internal_row_expr(); } inline ::pg_query::RowExpr* Node::unsafe_arena_release_row_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.row_expr) if (_internal_has_row_expr()) { clear_has_node(); ::pg_query::RowExpr* temp = node_.row_expr_; node_.row_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_row_expr(::pg_query::RowExpr* row_expr) { clear_node(); if (row_expr) { set_has_row_expr(); node_.row_expr_ = row_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.row_expr) } inline ::pg_query::RowExpr* Node::_internal_mutable_row_expr() { if (!_internal_has_row_expr()) { clear_node(); set_has_row_expr(); node_.row_expr_ = CreateMaybeMessage< ::pg_query::RowExpr >(GetArena()); } return node_.row_expr_; } inline ::pg_query::RowExpr* Node::mutable_row_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.row_expr) return _internal_mutable_row_expr(); } // .pg_query.RowCompareExpr row_compare_expr = 33 [json_name = "RowCompareExpr"]; inline bool Node::_internal_has_row_compare_expr() const { return node_case() == kRowCompareExpr; } inline bool Node::has_row_compare_expr() const { return _internal_has_row_compare_expr(); } inline void Node::set_has_row_compare_expr() { _oneof_case_[0] = kRowCompareExpr; } inline void Node::clear_row_compare_expr() { if (_internal_has_row_compare_expr()) { if (GetArena() == nullptr) { delete node_.row_compare_expr_; } clear_has_node(); } } inline ::pg_query::RowCompareExpr* Node::release_row_compare_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.row_compare_expr) if (_internal_has_row_compare_expr()) { clear_has_node(); ::pg_query::RowCompareExpr* temp = node_.row_compare_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.row_compare_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RowCompareExpr& Node::_internal_row_compare_expr() const { return _internal_has_row_compare_expr() ? *node_.row_compare_expr_ : reinterpret_cast< ::pg_query::RowCompareExpr&>(::pg_query::_RowCompareExpr_default_instance_); } inline const ::pg_query::RowCompareExpr& Node::row_compare_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.row_compare_expr) return _internal_row_compare_expr(); } inline ::pg_query::RowCompareExpr* Node::unsafe_arena_release_row_compare_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.row_compare_expr) if (_internal_has_row_compare_expr()) { clear_has_node(); ::pg_query::RowCompareExpr* temp = node_.row_compare_expr_; node_.row_compare_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_row_compare_expr(::pg_query::RowCompareExpr* row_compare_expr) { clear_node(); if (row_compare_expr) { set_has_row_compare_expr(); node_.row_compare_expr_ = row_compare_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.row_compare_expr) } inline ::pg_query::RowCompareExpr* Node::_internal_mutable_row_compare_expr() { if (!_internal_has_row_compare_expr()) { clear_node(); set_has_row_compare_expr(); node_.row_compare_expr_ = CreateMaybeMessage< ::pg_query::RowCompareExpr >(GetArena()); } return node_.row_compare_expr_; } inline ::pg_query::RowCompareExpr* Node::mutable_row_compare_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.row_compare_expr) return _internal_mutable_row_compare_expr(); } // .pg_query.CoalesceExpr coalesce_expr = 34 [json_name = "CoalesceExpr"]; inline bool Node::_internal_has_coalesce_expr() const { return node_case() == kCoalesceExpr; } inline bool Node::has_coalesce_expr() const { return _internal_has_coalesce_expr(); } inline void Node::set_has_coalesce_expr() { _oneof_case_[0] = kCoalesceExpr; } inline void Node::clear_coalesce_expr() { if (_internal_has_coalesce_expr()) { if (GetArena() == nullptr) { delete node_.coalesce_expr_; } clear_has_node(); } } inline ::pg_query::CoalesceExpr* Node::release_coalesce_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.coalesce_expr) if (_internal_has_coalesce_expr()) { clear_has_node(); ::pg_query::CoalesceExpr* temp = node_.coalesce_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.coalesce_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CoalesceExpr& Node::_internal_coalesce_expr() const { return _internal_has_coalesce_expr() ? *node_.coalesce_expr_ : reinterpret_cast< ::pg_query::CoalesceExpr&>(::pg_query::_CoalesceExpr_default_instance_); } inline const ::pg_query::CoalesceExpr& Node::coalesce_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.coalesce_expr) return _internal_coalesce_expr(); } inline ::pg_query::CoalesceExpr* Node::unsafe_arena_release_coalesce_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coalesce_expr) if (_internal_has_coalesce_expr()) { clear_has_node(); ::pg_query::CoalesceExpr* temp = node_.coalesce_expr_; node_.coalesce_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_coalesce_expr(::pg_query::CoalesceExpr* coalesce_expr) { clear_node(); if (coalesce_expr) { set_has_coalesce_expr(); node_.coalesce_expr_ = coalesce_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coalesce_expr) } inline ::pg_query::CoalesceExpr* Node::_internal_mutable_coalesce_expr() { if (!_internal_has_coalesce_expr()) { clear_node(); set_has_coalesce_expr(); node_.coalesce_expr_ = CreateMaybeMessage< ::pg_query::CoalesceExpr >(GetArena()); } return node_.coalesce_expr_; } inline ::pg_query::CoalesceExpr* Node::mutable_coalesce_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.coalesce_expr) return _internal_mutable_coalesce_expr(); } // .pg_query.MinMaxExpr min_max_expr = 35 [json_name = "MinMaxExpr"]; inline bool Node::_internal_has_min_max_expr() const { return node_case() == kMinMaxExpr; } inline bool Node::has_min_max_expr() const { return _internal_has_min_max_expr(); } inline void Node::set_has_min_max_expr() { _oneof_case_[0] = kMinMaxExpr; } inline void Node::clear_min_max_expr() { if (_internal_has_min_max_expr()) { if (GetArena() == nullptr) { delete node_.min_max_expr_; } clear_has_node(); } } inline ::pg_query::MinMaxExpr* Node::release_min_max_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.min_max_expr) if (_internal_has_min_max_expr()) { clear_has_node(); ::pg_query::MinMaxExpr* temp = node_.min_max_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.min_max_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::MinMaxExpr& Node::_internal_min_max_expr() const { return _internal_has_min_max_expr() ? *node_.min_max_expr_ : reinterpret_cast< ::pg_query::MinMaxExpr&>(::pg_query::_MinMaxExpr_default_instance_); } inline const ::pg_query::MinMaxExpr& Node::min_max_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.min_max_expr) return _internal_min_max_expr(); } inline ::pg_query::MinMaxExpr* Node::unsafe_arena_release_min_max_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.min_max_expr) if (_internal_has_min_max_expr()) { clear_has_node(); ::pg_query::MinMaxExpr* temp = node_.min_max_expr_; node_.min_max_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_min_max_expr(::pg_query::MinMaxExpr* min_max_expr) { clear_node(); if (min_max_expr) { set_has_min_max_expr(); node_.min_max_expr_ = min_max_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.min_max_expr) } inline ::pg_query::MinMaxExpr* Node::_internal_mutable_min_max_expr() { if (!_internal_has_min_max_expr()) { clear_node(); set_has_min_max_expr(); node_.min_max_expr_ = CreateMaybeMessage< ::pg_query::MinMaxExpr >(GetArena()); } return node_.min_max_expr_; } inline ::pg_query::MinMaxExpr* Node::mutable_min_max_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.min_max_expr) return _internal_mutable_min_max_expr(); } // .pg_query.SQLValueFunction sqlvalue_function = 36 [json_name = "SQLValueFunction"]; inline bool Node::_internal_has_sqlvalue_function() const { return node_case() == kSqlvalueFunction; } inline bool Node::has_sqlvalue_function() const { return _internal_has_sqlvalue_function(); } inline void Node::set_has_sqlvalue_function() { _oneof_case_[0] = kSqlvalueFunction; } inline void Node::clear_sqlvalue_function() { if (_internal_has_sqlvalue_function()) { if (GetArena() == nullptr) { delete node_.sqlvalue_function_; } clear_has_node(); } } inline ::pg_query::SQLValueFunction* Node::release_sqlvalue_function() { // @@protoc_insertion_point(field_release:pg_query.Node.sqlvalue_function) if (_internal_has_sqlvalue_function()) { clear_has_node(); ::pg_query::SQLValueFunction* temp = node_.sqlvalue_function_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.sqlvalue_function_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SQLValueFunction& Node::_internal_sqlvalue_function() const { return _internal_has_sqlvalue_function() ? *node_.sqlvalue_function_ : reinterpret_cast< ::pg_query::SQLValueFunction&>(::pg_query::_SQLValueFunction_default_instance_); } inline const ::pg_query::SQLValueFunction& Node::sqlvalue_function() const { // @@protoc_insertion_point(field_get:pg_query.Node.sqlvalue_function) return _internal_sqlvalue_function(); } inline ::pg_query::SQLValueFunction* Node::unsafe_arena_release_sqlvalue_function() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sqlvalue_function) if (_internal_has_sqlvalue_function()) { clear_has_node(); ::pg_query::SQLValueFunction* temp = node_.sqlvalue_function_; node_.sqlvalue_function_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sqlvalue_function(::pg_query::SQLValueFunction* sqlvalue_function) { clear_node(); if (sqlvalue_function) { set_has_sqlvalue_function(); node_.sqlvalue_function_ = sqlvalue_function; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sqlvalue_function) } inline ::pg_query::SQLValueFunction* Node::_internal_mutable_sqlvalue_function() { if (!_internal_has_sqlvalue_function()) { clear_node(); set_has_sqlvalue_function(); node_.sqlvalue_function_ = CreateMaybeMessage< ::pg_query::SQLValueFunction >(GetArena()); } return node_.sqlvalue_function_; } inline ::pg_query::SQLValueFunction* Node::mutable_sqlvalue_function() { // @@protoc_insertion_point(field_mutable:pg_query.Node.sqlvalue_function) return _internal_mutable_sqlvalue_function(); } // .pg_query.XmlExpr xml_expr = 37 [json_name = "XmlExpr"]; inline bool Node::_internal_has_xml_expr() const { return node_case() == kXmlExpr; } inline bool Node::has_xml_expr() const { return _internal_has_xml_expr(); } inline void Node::set_has_xml_expr() { _oneof_case_[0] = kXmlExpr; } inline void Node::clear_xml_expr() { if (_internal_has_xml_expr()) { if (GetArena() == nullptr) { delete node_.xml_expr_; } clear_has_node(); } } inline ::pg_query::XmlExpr* Node::release_xml_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.xml_expr) if (_internal_has_xml_expr()) { clear_has_node(); ::pg_query::XmlExpr* temp = node_.xml_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.xml_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::XmlExpr& Node::_internal_xml_expr() const { return _internal_has_xml_expr() ? *node_.xml_expr_ : reinterpret_cast< ::pg_query::XmlExpr&>(::pg_query::_XmlExpr_default_instance_); } inline const ::pg_query::XmlExpr& Node::xml_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.xml_expr) return _internal_xml_expr(); } inline ::pg_query::XmlExpr* Node::unsafe_arena_release_xml_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.xml_expr) if (_internal_has_xml_expr()) { clear_has_node(); ::pg_query::XmlExpr* temp = node_.xml_expr_; node_.xml_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_xml_expr(::pg_query::XmlExpr* xml_expr) { clear_node(); if (xml_expr) { set_has_xml_expr(); node_.xml_expr_ = xml_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.xml_expr) } inline ::pg_query::XmlExpr* Node::_internal_mutable_xml_expr() { if (!_internal_has_xml_expr()) { clear_node(); set_has_xml_expr(); node_.xml_expr_ = CreateMaybeMessage< ::pg_query::XmlExpr >(GetArena()); } return node_.xml_expr_; } inline ::pg_query::XmlExpr* Node::mutable_xml_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.xml_expr) return _internal_mutable_xml_expr(); } // .pg_query.NullTest null_test = 38 [json_name = "NullTest"]; inline bool Node::_internal_has_null_test() const { return node_case() == kNullTest; } inline bool Node::has_null_test() const { return _internal_has_null_test(); } inline void Node::set_has_null_test() { _oneof_case_[0] = kNullTest; } inline void Node::clear_null_test() { if (_internal_has_null_test()) { if (GetArena() == nullptr) { delete node_.null_test_; } clear_has_node(); } } inline ::pg_query::NullTest* Node::release_null_test() { // @@protoc_insertion_point(field_release:pg_query.Node.null_test) if (_internal_has_null_test()) { clear_has_node(); ::pg_query::NullTest* temp = node_.null_test_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.null_test_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NullTest& Node::_internal_null_test() const { return _internal_has_null_test() ? *node_.null_test_ : reinterpret_cast< ::pg_query::NullTest&>(::pg_query::_NullTest_default_instance_); } inline const ::pg_query::NullTest& Node::null_test() const { // @@protoc_insertion_point(field_get:pg_query.Node.null_test) return _internal_null_test(); } inline ::pg_query::NullTest* Node::unsafe_arena_release_null_test() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.null_test) if (_internal_has_null_test()) { clear_has_node(); ::pg_query::NullTest* temp = node_.null_test_; node_.null_test_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_null_test(::pg_query::NullTest* null_test) { clear_node(); if (null_test) { set_has_null_test(); node_.null_test_ = null_test; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.null_test) } inline ::pg_query::NullTest* Node::_internal_mutable_null_test() { if (!_internal_has_null_test()) { clear_node(); set_has_null_test(); node_.null_test_ = CreateMaybeMessage< ::pg_query::NullTest >(GetArena()); } return node_.null_test_; } inline ::pg_query::NullTest* Node::mutable_null_test() { // @@protoc_insertion_point(field_mutable:pg_query.Node.null_test) return _internal_mutable_null_test(); } // .pg_query.BooleanTest boolean_test = 39 [json_name = "BooleanTest"]; inline bool Node::_internal_has_boolean_test() const { return node_case() == kBooleanTest; } inline bool Node::has_boolean_test() const { return _internal_has_boolean_test(); } inline void Node::set_has_boolean_test() { _oneof_case_[0] = kBooleanTest; } inline void Node::clear_boolean_test() { if (_internal_has_boolean_test()) { if (GetArena() == nullptr) { delete node_.boolean_test_; } clear_has_node(); } } inline ::pg_query::BooleanTest* Node::release_boolean_test() { // @@protoc_insertion_point(field_release:pg_query.Node.boolean_test) if (_internal_has_boolean_test()) { clear_has_node(); ::pg_query::BooleanTest* temp = node_.boolean_test_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.boolean_test_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BooleanTest& Node::_internal_boolean_test() const { return _internal_has_boolean_test() ? *node_.boolean_test_ : reinterpret_cast< ::pg_query::BooleanTest&>(::pg_query::_BooleanTest_default_instance_); } inline const ::pg_query::BooleanTest& Node::boolean_test() const { // @@protoc_insertion_point(field_get:pg_query.Node.boolean_test) return _internal_boolean_test(); } inline ::pg_query::BooleanTest* Node::unsafe_arena_release_boolean_test() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.boolean_test) if (_internal_has_boolean_test()) { clear_has_node(); ::pg_query::BooleanTest* temp = node_.boolean_test_; node_.boolean_test_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_boolean_test(::pg_query::BooleanTest* boolean_test) { clear_node(); if (boolean_test) { set_has_boolean_test(); node_.boolean_test_ = boolean_test; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.boolean_test) } inline ::pg_query::BooleanTest* Node::_internal_mutable_boolean_test() { if (!_internal_has_boolean_test()) { clear_node(); set_has_boolean_test(); node_.boolean_test_ = CreateMaybeMessage< ::pg_query::BooleanTest >(GetArena()); } return node_.boolean_test_; } inline ::pg_query::BooleanTest* Node::mutable_boolean_test() { // @@protoc_insertion_point(field_mutable:pg_query.Node.boolean_test) return _internal_mutable_boolean_test(); } // .pg_query.CoerceToDomain coerce_to_domain = 40 [json_name = "CoerceToDomain"]; inline bool Node::_internal_has_coerce_to_domain() const { return node_case() == kCoerceToDomain; } inline bool Node::has_coerce_to_domain() const { return _internal_has_coerce_to_domain(); } inline void Node::set_has_coerce_to_domain() { _oneof_case_[0] = kCoerceToDomain; } inline void Node::clear_coerce_to_domain() { if (_internal_has_coerce_to_domain()) { if (GetArena() == nullptr) { delete node_.coerce_to_domain_; } clear_has_node(); } } inline ::pg_query::CoerceToDomain* Node::release_coerce_to_domain() { // @@protoc_insertion_point(field_release:pg_query.Node.coerce_to_domain) if (_internal_has_coerce_to_domain()) { clear_has_node(); ::pg_query::CoerceToDomain* temp = node_.coerce_to_domain_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.coerce_to_domain_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CoerceToDomain& Node::_internal_coerce_to_domain() const { return _internal_has_coerce_to_domain() ? *node_.coerce_to_domain_ : reinterpret_cast< ::pg_query::CoerceToDomain&>(::pg_query::_CoerceToDomain_default_instance_); } inline const ::pg_query::CoerceToDomain& Node::coerce_to_domain() const { // @@protoc_insertion_point(field_get:pg_query.Node.coerce_to_domain) return _internal_coerce_to_domain(); } inline ::pg_query::CoerceToDomain* Node::unsafe_arena_release_coerce_to_domain() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coerce_to_domain) if (_internal_has_coerce_to_domain()) { clear_has_node(); ::pg_query::CoerceToDomain* temp = node_.coerce_to_domain_; node_.coerce_to_domain_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_coerce_to_domain(::pg_query::CoerceToDomain* coerce_to_domain) { clear_node(); if (coerce_to_domain) { set_has_coerce_to_domain(); node_.coerce_to_domain_ = coerce_to_domain; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coerce_to_domain) } inline ::pg_query::CoerceToDomain* Node::_internal_mutable_coerce_to_domain() { if (!_internal_has_coerce_to_domain()) { clear_node(); set_has_coerce_to_domain(); node_.coerce_to_domain_ = CreateMaybeMessage< ::pg_query::CoerceToDomain >(GetArena()); } return node_.coerce_to_domain_; } inline ::pg_query::CoerceToDomain* Node::mutable_coerce_to_domain() { // @@protoc_insertion_point(field_mutable:pg_query.Node.coerce_to_domain) return _internal_mutable_coerce_to_domain(); } // .pg_query.CoerceToDomainValue coerce_to_domain_value = 41 [json_name = "CoerceToDomainValue"]; inline bool Node::_internal_has_coerce_to_domain_value() const { return node_case() == kCoerceToDomainValue; } inline bool Node::has_coerce_to_domain_value() const { return _internal_has_coerce_to_domain_value(); } inline void Node::set_has_coerce_to_domain_value() { _oneof_case_[0] = kCoerceToDomainValue; } inline void Node::clear_coerce_to_domain_value() { if (_internal_has_coerce_to_domain_value()) { if (GetArena() == nullptr) { delete node_.coerce_to_domain_value_; } clear_has_node(); } } inline ::pg_query::CoerceToDomainValue* Node::release_coerce_to_domain_value() { // @@protoc_insertion_point(field_release:pg_query.Node.coerce_to_domain_value) if (_internal_has_coerce_to_domain_value()) { clear_has_node(); ::pg_query::CoerceToDomainValue* temp = node_.coerce_to_domain_value_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.coerce_to_domain_value_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CoerceToDomainValue& Node::_internal_coerce_to_domain_value() const { return _internal_has_coerce_to_domain_value() ? *node_.coerce_to_domain_value_ : reinterpret_cast< ::pg_query::CoerceToDomainValue&>(::pg_query::_CoerceToDomainValue_default_instance_); } inline const ::pg_query::CoerceToDomainValue& Node::coerce_to_domain_value() const { // @@protoc_insertion_point(field_get:pg_query.Node.coerce_to_domain_value) return _internal_coerce_to_domain_value(); } inline ::pg_query::CoerceToDomainValue* Node::unsafe_arena_release_coerce_to_domain_value() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.coerce_to_domain_value) if (_internal_has_coerce_to_domain_value()) { clear_has_node(); ::pg_query::CoerceToDomainValue* temp = node_.coerce_to_domain_value_; node_.coerce_to_domain_value_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_coerce_to_domain_value(::pg_query::CoerceToDomainValue* coerce_to_domain_value) { clear_node(); if (coerce_to_domain_value) { set_has_coerce_to_domain_value(); node_.coerce_to_domain_value_ = coerce_to_domain_value; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.coerce_to_domain_value) } inline ::pg_query::CoerceToDomainValue* Node::_internal_mutable_coerce_to_domain_value() { if (!_internal_has_coerce_to_domain_value()) { clear_node(); set_has_coerce_to_domain_value(); node_.coerce_to_domain_value_ = CreateMaybeMessage< ::pg_query::CoerceToDomainValue >(GetArena()); } return node_.coerce_to_domain_value_; } inline ::pg_query::CoerceToDomainValue* Node::mutable_coerce_to_domain_value() { // @@protoc_insertion_point(field_mutable:pg_query.Node.coerce_to_domain_value) return _internal_mutable_coerce_to_domain_value(); } // .pg_query.SetToDefault set_to_default = 42 [json_name = "SetToDefault"]; inline bool Node::_internal_has_set_to_default() const { return node_case() == kSetToDefault; } inline bool Node::has_set_to_default() const { return _internal_has_set_to_default(); } inline void Node::set_has_set_to_default() { _oneof_case_[0] = kSetToDefault; } inline void Node::clear_set_to_default() { if (_internal_has_set_to_default()) { if (GetArena() == nullptr) { delete node_.set_to_default_; } clear_has_node(); } } inline ::pg_query::SetToDefault* Node::release_set_to_default() { // @@protoc_insertion_point(field_release:pg_query.Node.set_to_default) if (_internal_has_set_to_default()) { clear_has_node(); ::pg_query::SetToDefault* temp = node_.set_to_default_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.set_to_default_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SetToDefault& Node::_internal_set_to_default() const { return _internal_has_set_to_default() ? *node_.set_to_default_ : reinterpret_cast< ::pg_query::SetToDefault&>(::pg_query::_SetToDefault_default_instance_); } inline const ::pg_query::SetToDefault& Node::set_to_default() const { // @@protoc_insertion_point(field_get:pg_query.Node.set_to_default) return _internal_set_to_default(); } inline ::pg_query::SetToDefault* Node::unsafe_arena_release_set_to_default() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.set_to_default) if (_internal_has_set_to_default()) { clear_has_node(); ::pg_query::SetToDefault* temp = node_.set_to_default_; node_.set_to_default_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_set_to_default(::pg_query::SetToDefault* set_to_default) { clear_node(); if (set_to_default) { set_has_set_to_default(); node_.set_to_default_ = set_to_default; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.set_to_default) } inline ::pg_query::SetToDefault* Node::_internal_mutable_set_to_default() { if (!_internal_has_set_to_default()) { clear_node(); set_has_set_to_default(); node_.set_to_default_ = CreateMaybeMessage< ::pg_query::SetToDefault >(GetArena()); } return node_.set_to_default_; } inline ::pg_query::SetToDefault* Node::mutable_set_to_default() { // @@protoc_insertion_point(field_mutable:pg_query.Node.set_to_default) return _internal_mutable_set_to_default(); } // .pg_query.CurrentOfExpr current_of_expr = 43 [json_name = "CurrentOfExpr"]; inline bool Node::_internal_has_current_of_expr() const { return node_case() == kCurrentOfExpr; } inline bool Node::has_current_of_expr() const { return _internal_has_current_of_expr(); } inline void Node::set_has_current_of_expr() { _oneof_case_[0] = kCurrentOfExpr; } inline void Node::clear_current_of_expr() { if (_internal_has_current_of_expr()) { if (GetArena() == nullptr) { delete node_.current_of_expr_; } clear_has_node(); } } inline ::pg_query::CurrentOfExpr* Node::release_current_of_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.current_of_expr) if (_internal_has_current_of_expr()) { clear_has_node(); ::pg_query::CurrentOfExpr* temp = node_.current_of_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.current_of_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CurrentOfExpr& Node::_internal_current_of_expr() const { return _internal_has_current_of_expr() ? *node_.current_of_expr_ : reinterpret_cast< ::pg_query::CurrentOfExpr&>(::pg_query::_CurrentOfExpr_default_instance_); } inline const ::pg_query::CurrentOfExpr& Node::current_of_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.current_of_expr) return _internal_current_of_expr(); } inline ::pg_query::CurrentOfExpr* Node::unsafe_arena_release_current_of_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.current_of_expr) if (_internal_has_current_of_expr()) { clear_has_node(); ::pg_query::CurrentOfExpr* temp = node_.current_of_expr_; node_.current_of_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_current_of_expr(::pg_query::CurrentOfExpr* current_of_expr) { clear_node(); if (current_of_expr) { set_has_current_of_expr(); node_.current_of_expr_ = current_of_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.current_of_expr) } inline ::pg_query::CurrentOfExpr* Node::_internal_mutable_current_of_expr() { if (!_internal_has_current_of_expr()) { clear_node(); set_has_current_of_expr(); node_.current_of_expr_ = CreateMaybeMessage< ::pg_query::CurrentOfExpr >(GetArena()); } return node_.current_of_expr_; } inline ::pg_query::CurrentOfExpr* Node::mutable_current_of_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.current_of_expr) return _internal_mutable_current_of_expr(); } // .pg_query.NextValueExpr next_value_expr = 44 [json_name = "NextValueExpr"]; inline bool Node::_internal_has_next_value_expr() const { return node_case() == kNextValueExpr; } inline bool Node::has_next_value_expr() const { return _internal_has_next_value_expr(); } inline void Node::set_has_next_value_expr() { _oneof_case_[0] = kNextValueExpr; } inline void Node::clear_next_value_expr() { if (_internal_has_next_value_expr()) { if (GetArena() == nullptr) { delete node_.next_value_expr_; } clear_has_node(); } } inline ::pg_query::NextValueExpr* Node::release_next_value_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.next_value_expr) if (_internal_has_next_value_expr()) { clear_has_node(); ::pg_query::NextValueExpr* temp = node_.next_value_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.next_value_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NextValueExpr& Node::_internal_next_value_expr() const { return _internal_has_next_value_expr() ? *node_.next_value_expr_ : reinterpret_cast< ::pg_query::NextValueExpr&>(::pg_query::_NextValueExpr_default_instance_); } inline const ::pg_query::NextValueExpr& Node::next_value_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.next_value_expr) return _internal_next_value_expr(); } inline ::pg_query::NextValueExpr* Node::unsafe_arena_release_next_value_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.next_value_expr) if (_internal_has_next_value_expr()) { clear_has_node(); ::pg_query::NextValueExpr* temp = node_.next_value_expr_; node_.next_value_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_next_value_expr(::pg_query::NextValueExpr* next_value_expr) { clear_node(); if (next_value_expr) { set_has_next_value_expr(); node_.next_value_expr_ = next_value_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.next_value_expr) } inline ::pg_query::NextValueExpr* Node::_internal_mutable_next_value_expr() { if (!_internal_has_next_value_expr()) { clear_node(); set_has_next_value_expr(); node_.next_value_expr_ = CreateMaybeMessage< ::pg_query::NextValueExpr >(GetArena()); } return node_.next_value_expr_; } inline ::pg_query::NextValueExpr* Node::mutable_next_value_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.next_value_expr) return _internal_mutable_next_value_expr(); } // .pg_query.InferenceElem inference_elem = 45 [json_name = "InferenceElem"]; inline bool Node::_internal_has_inference_elem() const { return node_case() == kInferenceElem; } inline bool Node::has_inference_elem() const { return _internal_has_inference_elem(); } inline void Node::set_has_inference_elem() { _oneof_case_[0] = kInferenceElem; } inline void Node::clear_inference_elem() { if (_internal_has_inference_elem()) { if (GetArena() == nullptr) { delete node_.inference_elem_; } clear_has_node(); } } inline ::pg_query::InferenceElem* Node::release_inference_elem() { // @@protoc_insertion_point(field_release:pg_query.Node.inference_elem) if (_internal_has_inference_elem()) { clear_has_node(); ::pg_query::InferenceElem* temp = node_.inference_elem_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.inference_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InferenceElem& Node::_internal_inference_elem() const { return _internal_has_inference_elem() ? *node_.inference_elem_ : reinterpret_cast< ::pg_query::InferenceElem&>(::pg_query::_InferenceElem_default_instance_); } inline const ::pg_query::InferenceElem& Node::inference_elem() const { // @@protoc_insertion_point(field_get:pg_query.Node.inference_elem) return _internal_inference_elem(); } inline ::pg_query::InferenceElem* Node::unsafe_arena_release_inference_elem() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.inference_elem) if (_internal_has_inference_elem()) { clear_has_node(); ::pg_query::InferenceElem* temp = node_.inference_elem_; node_.inference_elem_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_inference_elem(::pg_query::InferenceElem* inference_elem) { clear_node(); if (inference_elem) { set_has_inference_elem(); node_.inference_elem_ = inference_elem; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.inference_elem) } inline ::pg_query::InferenceElem* Node::_internal_mutable_inference_elem() { if (!_internal_has_inference_elem()) { clear_node(); set_has_inference_elem(); node_.inference_elem_ = CreateMaybeMessage< ::pg_query::InferenceElem >(GetArena()); } return node_.inference_elem_; } inline ::pg_query::InferenceElem* Node::mutable_inference_elem() { // @@protoc_insertion_point(field_mutable:pg_query.Node.inference_elem) return _internal_mutable_inference_elem(); } // .pg_query.TargetEntry target_entry = 46 [json_name = "TargetEntry"]; inline bool Node::_internal_has_target_entry() const { return node_case() == kTargetEntry; } inline bool Node::has_target_entry() const { return _internal_has_target_entry(); } inline void Node::set_has_target_entry() { _oneof_case_[0] = kTargetEntry; } inline void Node::clear_target_entry() { if (_internal_has_target_entry()) { if (GetArena() == nullptr) { delete node_.target_entry_; } clear_has_node(); } } inline ::pg_query::TargetEntry* Node::release_target_entry() { // @@protoc_insertion_point(field_release:pg_query.Node.target_entry) if (_internal_has_target_entry()) { clear_has_node(); ::pg_query::TargetEntry* temp = node_.target_entry_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.target_entry_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TargetEntry& Node::_internal_target_entry() const { return _internal_has_target_entry() ? *node_.target_entry_ : reinterpret_cast< ::pg_query::TargetEntry&>(::pg_query::_TargetEntry_default_instance_); } inline const ::pg_query::TargetEntry& Node::target_entry() const { // @@protoc_insertion_point(field_get:pg_query.Node.target_entry) return _internal_target_entry(); } inline ::pg_query::TargetEntry* Node::unsafe_arena_release_target_entry() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.target_entry) if (_internal_has_target_entry()) { clear_has_node(); ::pg_query::TargetEntry* temp = node_.target_entry_; node_.target_entry_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_target_entry(::pg_query::TargetEntry* target_entry) { clear_node(); if (target_entry) { set_has_target_entry(); node_.target_entry_ = target_entry; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.target_entry) } inline ::pg_query::TargetEntry* Node::_internal_mutable_target_entry() { if (!_internal_has_target_entry()) { clear_node(); set_has_target_entry(); node_.target_entry_ = CreateMaybeMessage< ::pg_query::TargetEntry >(GetArena()); } return node_.target_entry_; } inline ::pg_query::TargetEntry* Node::mutable_target_entry() { // @@protoc_insertion_point(field_mutable:pg_query.Node.target_entry) return _internal_mutable_target_entry(); } // .pg_query.RangeTblRef range_tbl_ref = 47 [json_name = "RangeTblRef"]; inline bool Node::_internal_has_range_tbl_ref() const { return node_case() == kRangeTblRef; } inline bool Node::has_range_tbl_ref() const { return _internal_has_range_tbl_ref(); } inline void Node::set_has_range_tbl_ref() { _oneof_case_[0] = kRangeTblRef; } inline void Node::clear_range_tbl_ref() { if (_internal_has_range_tbl_ref()) { if (GetArena() == nullptr) { delete node_.range_tbl_ref_; } clear_has_node(); } } inline ::pg_query::RangeTblRef* Node::release_range_tbl_ref() { // @@protoc_insertion_point(field_release:pg_query.Node.range_tbl_ref) if (_internal_has_range_tbl_ref()) { clear_has_node(); ::pg_query::RangeTblRef* temp = node_.range_tbl_ref_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.range_tbl_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTblRef& Node::_internal_range_tbl_ref() const { return _internal_has_range_tbl_ref() ? *node_.range_tbl_ref_ : reinterpret_cast< ::pg_query::RangeTblRef&>(::pg_query::_RangeTblRef_default_instance_); } inline const ::pg_query::RangeTblRef& Node::range_tbl_ref() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_tbl_ref) return _internal_range_tbl_ref(); } inline ::pg_query::RangeTblRef* Node::unsafe_arena_release_range_tbl_ref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_tbl_ref) if (_internal_has_range_tbl_ref()) { clear_has_node(); ::pg_query::RangeTblRef* temp = node_.range_tbl_ref_; node_.range_tbl_ref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_tbl_ref(::pg_query::RangeTblRef* range_tbl_ref) { clear_node(); if (range_tbl_ref) { set_has_range_tbl_ref(); node_.range_tbl_ref_ = range_tbl_ref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_tbl_ref) } inline ::pg_query::RangeTblRef* Node::_internal_mutable_range_tbl_ref() { if (!_internal_has_range_tbl_ref()) { clear_node(); set_has_range_tbl_ref(); node_.range_tbl_ref_ = CreateMaybeMessage< ::pg_query::RangeTblRef >(GetArena()); } return node_.range_tbl_ref_; } inline ::pg_query::RangeTblRef* Node::mutable_range_tbl_ref() { // @@protoc_insertion_point(field_mutable:pg_query.Node.range_tbl_ref) return _internal_mutable_range_tbl_ref(); } // .pg_query.JoinExpr join_expr = 48 [json_name = "JoinExpr"]; inline bool Node::_internal_has_join_expr() const { return node_case() == kJoinExpr; } inline bool Node::has_join_expr() const { return _internal_has_join_expr(); } inline void Node::set_has_join_expr() { _oneof_case_[0] = kJoinExpr; } inline void Node::clear_join_expr() { if (_internal_has_join_expr()) { if (GetArena() == nullptr) { delete node_.join_expr_; } clear_has_node(); } } inline ::pg_query::JoinExpr* Node::release_join_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.join_expr) if (_internal_has_join_expr()) { clear_has_node(); ::pg_query::JoinExpr* temp = node_.join_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.join_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::JoinExpr& Node::_internal_join_expr() const { return _internal_has_join_expr() ? *node_.join_expr_ : reinterpret_cast< ::pg_query::JoinExpr&>(::pg_query::_JoinExpr_default_instance_); } inline const ::pg_query::JoinExpr& Node::join_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.join_expr) return _internal_join_expr(); } inline ::pg_query::JoinExpr* Node::unsafe_arena_release_join_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.join_expr) if (_internal_has_join_expr()) { clear_has_node(); ::pg_query::JoinExpr* temp = node_.join_expr_; node_.join_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_join_expr(::pg_query::JoinExpr* join_expr) { clear_node(); if (join_expr) { set_has_join_expr(); node_.join_expr_ = join_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.join_expr) } inline ::pg_query::JoinExpr* Node::_internal_mutable_join_expr() { if (!_internal_has_join_expr()) { clear_node(); set_has_join_expr(); node_.join_expr_ = CreateMaybeMessage< ::pg_query::JoinExpr >(GetArena()); } return node_.join_expr_; } inline ::pg_query::JoinExpr* Node::mutable_join_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.join_expr) return _internal_mutable_join_expr(); } // .pg_query.FromExpr from_expr = 49 [json_name = "FromExpr"]; inline bool Node::_internal_has_from_expr() const { return node_case() == kFromExpr; } inline bool Node::has_from_expr() const { return _internal_has_from_expr(); } inline void Node::set_has_from_expr() { _oneof_case_[0] = kFromExpr; } inline void Node::clear_from_expr() { if (_internal_has_from_expr()) { if (GetArena() == nullptr) { delete node_.from_expr_; } clear_has_node(); } } inline ::pg_query::FromExpr* Node::release_from_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.from_expr) if (_internal_has_from_expr()) { clear_has_node(); ::pg_query::FromExpr* temp = node_.from_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.from_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FromExpr& Node::_internal_from_expr() const { return _internal_has_from_expr() ? *node_.from_expr_ : reinterpret_cast< ::pg_query::FromExpr&>(::pg_query::_FromExpr_default_instance_); } inline const ::pg_query::FromExpr& Node::from_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.from_expr) return _internal_from_expr(); } inline ::pg_query::FromExpr* Node::unsafe_arena_release_from_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.from_expr) if (_internal_has_from_expr()) { clear_has_node(); ::pg_query::FromExpr* temp = node_.from_expr_; node_.from_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_from_expr(::pg_query::FromExpr* from_expr) { clear_node(); if (from_expr) { set_has_from_expr(); node_.from_expr_ = from_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.from_expr) } inline ::pg_query::FromExpr* Node::_internal_mutable_from_expr() { if (!_internal_has_from_expr()) { clear_node(); set_has_from_expr(); node_.from_expr_ = CreateMaybeMessage< ::pg_query::FromExpr >(GetArena()); } return node_.from_expr_; } inline ::pg_query::FromExpr* Node::mutable_from_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.from_expr) return _internal_mutable_from_expr(); } // .pg_query.OnConflictExpr on_conflict_expr = 50 [json_name = "OnConflictExpr"]; inline bool Node::_internal_has_on_conflict_expr() const { return node_case() == kOnConflictExpr; } inline bool Node::has_on_conflict_expr() const { return _internal_has_on_conflict_expr(); } inline void Node::set_has_on_conflict_expr() { _oneof_case_[0] = kOnConflictExpr; } inline void Node::clear_on_conflict_expr() { if (_internal_has_on_conflict_expr()) { if (GetArena() == nullptr) { delete node_.on_conflict_expr_; } clear_has_node(); } } inline ::pg_query::OnConflictExpr* Node::release_on_conflict_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.on_conflict_expr) if (_internal_has_on_conflict_expr()) { clear_has_node(); ::pg_query::OnConflictExpr* temp = node_.on_conflict_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.on_conflict_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::OnConflictExpr& Node::_internal_on_conflict_expr() const { return _internal_has_on_conflict_expr() ? *node_.on_conflict_expr_ : reinterpret_cast< ::pg_query::OnConflictExpr&>(::pg_query::_OnConflictExpr_default_instance_); } inline const ::pg_query::OnConflictExpr& Node::on_conflict_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.on_conflict_expr) return _internal_on_conflict_expr(); } inline ::pg_query::OnConflictExpr* Node::unsafe_arena_release_on_conflict_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.on_conflict_expr) if (_internal_has_on_conflict_expr()) { clear_has_node(); ::pg_query::OnConflictExpr* temp = node_.on_conflict_expr_; node_.on_conflict_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_on_conflict_expr(::pg_query::OnConflictExpr* on_conflict_expr) { clear_node(); if (on_conflict_expr) { set_has_on_conflict_expr(); node_.on_conflict_expr_ = on_conflict_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.on_conflict_expr) } inline ::pg_query::OnConflictExpr* Node::_internal_mutable_on_conflict_expr() { if (!_internal_has_on_conflict_expr()) { clear_node(); set_has_on_conflict_expr(); node_.on_conflict_expr_ = CreateMaybeMessage< ::pg_query::OnConflictExpr >(GetArena()); } return node_.on_conflict_expr_; } inline ::pg_query::OnConflictExpr* Node::mutable_on_conflict_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.on_conflict_expr) return _internal_mutable_on_conflict_expr(); } // .pg_query.IntoClause into_clause = 51 [json_name = "IntoClause"]; inline bool Node::_internal_has_into_clause() const { return node_case() == kIntoClause; } inline bool Node::has_into_clause() const { return _internal_has_into_clause(); } inline void Node::set_has_into_clause() { _oneof_case_[0] = kIntoClause; } inline void Node::clear_into_clause() { if (_internal_has_into_clause()) { if (GetArena() == nullptr) { delete node_.into_clause_; } clear_has_node(); } } inline ::pg_query::IntoClause* Node::release_into_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.into_clause) if (_internal_has_into_clause()) { clear_has_node(); ::pg_query::IntoClause* temp = node_.into_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.into_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IntoClause& Node::_internal_into_clause() const { return _internal_has_into_clause() ? *node_.into_clause_ : reinterpret_cast< ::pg_query::IntoClause&>(::pg_query::_IntoClause_default_instance_); } inline const ::pg_query::IntoClause& Node::into_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.into_clause) return _internal_into_clause(); } inline ::pg_query::IntoClause* Node::unsafe_arena_release_into_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.into_clause) if (_internal_has_into_clause()) { clear_has_node(); ::pg_query::IntoClause* temp = node_.into_clause_; node_.into_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_into_clause(::pg_query::IntoClause* into_clause) { clear_node(); if (into_clause) { set_has_into_clause(); node_.into_clause_ = into_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.into_clause) } inline ::pg_query::IntoClause* Node::_internal_mutable_into_clause() { if (!_internal_has_into_clause()) { clear_node(); set_has_into_clause(); node_.into_clause_ = CreateMaybeMessage< ::pg_query::IntoClause >(GetArena()); } return node_.into_clause_; } inline ::pg_query::IntoClause* Node::mutable_into_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.into_clause) return _internal_mutable_into_clause(); } // .pg_query.RawStmt raw_stmt = 52 [json_name = "RawStmt"]; inline bool Node::_internal_has_raw_stmt() const { return node_case() == kRawStmt; } inline bool Node::has_raw_stmt() const { return _internal_has_raw_stmt(); } inline void Node::set_has_raw_stmt() { _oneof_case_[0] = kRawStmt; } inline void Node::clear_raw_stmt() { if (_internal_has_raw_stmt()) { if (GetArena() == nullptr) { delete node_.raw_stmt_; } clear_has_node(); } } inline ::pg_query::RawStmt* Node::release_raw_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.raw_stmt) if (_internal_has_raw_stmt()) { clear_has_node(); ::pg_query::RawStmt* temp = node_.raw_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.raw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RawStmt& Node::_internal_raw_stmt() const { return _internal_has_raw_stmt() ? *node_.raw_stmt_ : reinterpret_cast< ::pg_query::RawStmt&>(::pg_query::_RawStmt_default_instance_); } inline const ::pg_query::RawStmt& Node::raw_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.raw_stmt) return _internal_raw_stmt(); } inline ::pg_query::RawStmt* Node::unsafe_arena_release_raw_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.raw_stmt) if (_internal_has_raw_stmt()) { clear_has_node(); ::pg_query::RawStmt* temp = node_.raw_stmt_; node_.raw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_raw_stmt(::pg_query::RawStmt* raw_stmt) { clear_node(); if (raw_stmt) { set_has_raw_stmt(); node_.raw_stmt_ = raw_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.raw_stmt) } inline ::pg_query::RawStmt* Node::_internal_mutable_raw_stmt() { if (!_internal_has_raw_stmt()) { clear_node(); set_has_raw_stmt(); node_.raw_stmt_ = CreateMaybeMessage< ::pg_query::RawStmt >(GetArena()); } return node_.raw_stmt_; } inline ::pg_query::RawStmt* Node::mutable_raw_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.raw_stmt) return _internal_mutable_raw_stmt(); } // .pg_query.Query query = 53 [json_name = "Query"]; inline bool Node::_internal_has_query() const { return node_case() == kQuery; } inline bool Node::has_query() const { return _internal_has_query(); } inline void Node::set_has_query() { _oneof_case_[0] = kQuery; } inline void Node::clear_query() { if (_internal_has_query()) { if (GetArena() == nullptr) { delete node_.query_; } clear_has_node(); } } inline ::pg_query::Query* Node::release_query() { // @@protoc_insertion_point(field_release:pg_query.Node.query) if (_internal_has_query()) { clear_has_node(); ::pg_query::Query* temp = node_.query_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.query_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Query& Node::_internal_query() const { return _internal_has_query() ? *node_.query_ : reinterpret_cast< ::pg_query::Query&>(::pg_query::_Query_default_instance_); } inline const ::pg_query::Query& Node::query() const { // @@protoc_insertion_point(field_get:pg_query.Node.query) return _internal_query(); } inline ::pg_query::Query* Node::unsafe_arena_release_query() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.query) if (_internal_has_query()) { clear_has_node(); ::pg_query::Query* temp = node_.query_; node_.query_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_query(::pg_query::Query* query) { clear_node(); if (query) { set_has_query(); node_.query_ = query; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.query) } inline ::pg_query::Query* Node::_internal_mutable_query() { if (!_internal_has_query()) { clear_node(); set_has_query(); node_.query_ = CreateMaybeMessage< ::pg_query::Query >(GetArena()); } return node_.query_; } inline ::pg_query::Query* Node::mutable_query() { // @@protoc_insertion_point(field_mutable:pg_query.Node.query) return _internal_mutable_query(); } // .pg_query.InsertStmt insert_stmt = 54 [json_name = "InsertStmt"]; inline bool Node::_internal_has_insert_stmt() const { return node_case() == kInsertStmt; } inline bool Node::has_insert_stmt() const { return _internal_has_insert_stmt(); } inline void Node::set_has_insert_stmt() { _oneof_case_[0] = kInsertStmt; } inline void Node::clear_insert_stmt() { if (_internal_has_insert_stmt()) { if (GetArena() == nullptr) { delete node_.insert_stmt_; } clear_has_node(); } } inline ::pg_query::InsertStmt* Node::release_insert_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.insert_stmt) if (_internal_has_insert_stmt()) { clear_has_node(); ::pg_query::InsertStmt* temp = node_.insert_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.insert_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InsertStmt& Node::_internal_insert_stmt() const { return _internal_has_insert_stmt() ? *node_.insert_stmt_ : reinterpret_cast< ::pg_query::InsertStmt&>(::pg_query::_InsertStmt_default_instance_); } inline const ::pg_query::InsertStmt& Node::insert_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.insert_stmt) return _internal_insert_stmt(); } inline ::pg_query::InsertStmt* Node::unsafe_arena_release_insert_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.insert_stmt) if (_internal_has_insert_stmt()) { clear_has_node(); ::pg_query::InsertStmt* temp = node_.insert_stmt_; node_.insert_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_insert_stmt(::pg_query::InsertStmt* insert_stmt) { clear_node(); if (insert_stmt) { set_has_insert_stmt(); node_.insert_stmt_ = insert_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.insert_stmt) } inline ::pg_query::InsertStmt* Node::_internal_mutable_insert_stmt() { if (!_internal_has_insert_stmt()) { clear_node(); set_has_insert_stmt(); node_.insert_stmt_ = CreateMaybeMessage< ::pg_query::InsertStmt >(GetArena()); } return node_.insert_stmt_; } inline ::pg_query::InsertStmt* Node::mutable_insert_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.insert_stmt) return _internal_mutable_insert_stmt(); } // .pg_query.DeleteStmt delete_stmt = 55 [json_name = "DeleteStmt"]; inline bool Node::_internal_has_delete_stmt() const { return node_case() == kDeleteStmt; } inline bool Node::has_delete_stmt() const { return _internal_has_delete_stmt(); } inline void Node::set_has_delete_stmt() { _oneof_case_[0] = kDeleteStmt; } inline void Node::clear_delete_stmt() { if (_internal_has_delete_stmt()) { if (GetArena() == nullptr) { delete node_.delete_stmt_; } clear_has_node(); } } inline ::pg_query::DeleteStmt* Node::release_delete_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.delete_stmt) if (_internal_has_delete_stmt()) { clear_has_node(); ::pg_query::DeleteStmt* temp = node_.delete_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.delete_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DeleteStmt& Node::_internal_delete_stmt() const { return _internal_has_delete_stmt() ? *node_.delete_stmt_ : reinterpret_cast< ::pg_query::DeleteStmt&>(::pg_query::_DeleteStmt_default_instance_); } inline const ::pg_query::DeleteStmt& Node::delete_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.delete_stmt) return _internal_delete_stmt(); } inline ::pg_query::DeleteStmt* Node::unsafe_arena_release_delete_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.delete_stmt) if (_internal_has_delete_stmt()) { clear_has_node(); ::pg_query::DeleteStmt* temp = node_.delete_stmt_; node_.delete_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_delete_stmt(::pg_query::DeleteStmt* delete_stmt) { clear_node(); if (delete_stmt) { set_has_delete_stmt(); node_.delete_stmt_ = delete_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.delete_stmt) } inline ::pg_query::DeleteStmt* Node::_internal_mutable_delete_stmt() { if (!_internal_has_delete_stmt()) { clear_node(); set_has_delete_stmt(); node_.delete_stmt_ = CreateMaybeMessage< ::pg_query::DeleteStmt >(GetArena()); } return node_.delete_stmt_; } inline ::pg_query::DeleteStmt* Node::mutable_delete_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.delete_stmt) return _internal_mutable_delete_stmt(); } // .pg_query.UpdateStmt update_stmt = 56 [json_name = "UpdateStmt"]; inline bool Node::_internal_has_update_stmt() const { return node_case() == kUpdateStmt; } inline bool Node::has_update_stmt() const { return _internal_has_update_stmt(); } inline void Node::set_has_update_stmt() { _oneof_case_[0] = kUpdateStmt; } inline void Node::clear_update_stmt() { if (_internal_has_update_stmt()) { if (GetArena() == nullptr) { delete node_.update_stmt_; } clear_has_node(); } } inline ::pg_query::UpdateStmt* Node::release_update_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.update_stmt) if (_internal_has_update_stmt()) { clear_has_node(); ::pg_query::UpdateStmt* temp = node_.update_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.update_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::UpdateStmt& Node::_internal_update_stmt() const { return _internal_has_update_stmt() ? *node_.update_stmt_ : reinterpret_cast< ::pg_query::UpdateStmt&>(::pg_query::_UpdateStmt_default_instance_); } inline const ::pg_query::UpdateStmt& Node::update_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.update_stmt) return _internal_update_stmt(); } inline ::pg_query::UpdateStmt* Node::unsafe_arena_release_update_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.update_stmt) if (_internal_has_update_stmt()) { clear_has_node(); ::pg_query::UpdateStmt* temp = node_.update_stmt_; node_.update_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_update_stmt(::pg_query::UpdateStmt* update_stmt) { clear_node(); if (update_stmt) { set_has_update_stmt(); node_.update_stmt_ = update_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.update_stmt) } inline ::pg_query::UpdateStmt* Node::_internal_mutable_update_stmt() { if (!_internal_has_update_stmt()) { clear_node(); set_has_update_stmt(); node_.update_stmt_ = CreateMaybeMessage< ::pg_query::UpdateStmt >(GetArena()); } return node_.update_stmt_; } inline ::pg_query::UpdateStmt* Node::mutable_update_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.update_stmt) return _internal_mutable_update_stmt(); } // .pg_query.SelectStmt select_stmt = 57 [json_name = "SelectStmt"]; inline bool Node::_internal_has_select_stmt() const { return node_case() == kSelectStmt; } inline bool Node::has_select_stmt() const { return _internal_has_select_stmt(); } inline void Node::set_has_select_stmt() { _oneof_case_[0] = kSelectStmt; } inline void Node::clear_select_stmt() { if (_internal_has_select_stmt()) { if (GetArena() == nullptr) { delete node_.select_stmt_; } clear_has_node(); } } inline ::pg_query::SelectStmt* Node::release_select_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.select_stmt) if (_internal_has_select_stmt()) { clear_has_node(); ::pg_query::SelectStmt* temp = node_.select_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.select_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SelectStmt& Node::_internal_select_stmt() const { return _internal_has_select_stmt() ? *node_.select_stmt_ : reinterpret_cast< ::pg_query::SelectStmt&>(::pg_query::_SelectStmt_default_instance_); } inline const ::pg_query::SelectStmt& Node::select_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.select_stmt) return _internal_select_stmt(); } inline ::pg_query::SelectStmt* Node::unsafe_arena_release_select_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.select_stmt) if (_internal_has_select_stmt()) { clear_has_node(); ::pg_query::SelectStmt* temp = node_.select_stmt_; node_.select_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_select_stmt(::pg_query::SelectStmt* select_stmt) { clear_node(); if (select_stmt) { set_has_select_stmt(); node_.select_stmt_ = select_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.select_stmt) } inline ::pg_query::SelectStmt* Node::_internal_mutable_select_stmt() { if (!_internal_has_select_stmt()) { clear_node(); set_has_select_stmt(); node_.select_stmt_ = CreateMaybeMessage< ::pg_query::SelectStmt >(GetArena()); } return node_.select_stmt_; } inline ::pg_query::SelectStmt* Node::mutable_select_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.select_stmt) return _internal_mutable_select_stmt(); } // .pg_query.AlterTableStmt alter_table_stmt = 58 [json_name = "AlterTableStmt"]; inline bool Node::_internal_has_alter_table_stmt() const { return node_case() == kAlterTableStmt; } inline bool Node::has_alter_table_stmt() const { return _internal_has_alter_table_stmt(); } inline void Node::set_has_alter_table_stmt() { _oneof_case_[0] = kAlterTableStmt; } inline void Node::clear_alter_table_stmt() { if (_internal_has_alter_table_stmt()) { if (GetArena() == nullptr) { delete node_.alter_table_stmt_; } clear_has_node(); } } inline ::pg_query::AlterTableStmt* Node::release_alter_table_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_table_stmt) if (_internal_has_alter_table_stmt()) { clear_has_node(); ::pg_query::AlterTableStmt* temp = node_.alter_table_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_table_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTableStmt& Node::_internal_alter_table_stmt() const { return _internal_has_alter_table_stmt() ? *node_.alter_table_stmt_ : reinterpret_cast< ::pg_query::AlterTableStmt&>(::pg_query::_AlterTableStmt_default_instance_); } inline const ::pg_query::AlterTableStmt& Node::alter_table_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_stmt) return _internal_alter_table_stmt(); } inline ::pg_query::AlterTableStmt* Node::unsafe_arena_release_alter_table_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_stmt) if (_internal_has_alter_table_stmt()) { clear_has_node(); ::pg_query::AlterTableStmt* temp = node_.alter_table_stmt_; node_.alter_table_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_table_stmt(::pg_query::AlterTableStmt* alter_table_stmt) { clear_node(); if (alter_table_stmt) { set_has_alter_table_stmt(); node_.alter_table_stmt_ = alter_table_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_stmt) } inline ::pg_query::AlterTableStmt* Node::_internal_mutable_alter_table_stmt() { if (!_internal_has_alter_table_stmt()) { clear_node(); set_has_alter_table_stmt(); node_.alter_table_stmt_ = CreateMaybeMessage< ::pg_query::AlterTableStmt >(GetArena()); } return node_.alter_table_stmt_; } inline ::pg_query::AlterTableStmt* Node::mutable_alter_table_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_stmt) return _internal_mutable_alter_table_stmt(); } // .pg_query.AlterTableCmd alter_table_cmd = 59 [json_name = "AlterTableCmd"]; inline bool Node::_internal_has_alter_table_cmd() const { return node_case() == kAlterTableCmd; } inline bool Node::has_alter_table_cmd() const { return _internal_has_alter_table_cmd(); } inline void Node::set_has_alter_table_cmd() { _oneof_case_[0] = kAlterTableCmd; } inline void Node::clear_alter_table_cmd() { if (_internal_has_alter_table_cmd()) { if (GetArena() == nullptr) { delete node_.alter_table_cmd_; } clear_has_node(); } } inline ::pg_query::AlterTableCmd* Node::release_alter_table_cmd() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_table_cmd) if (_internal_has_alter_table_cmd()) { clear_has_node(); ::pg_query::AlterTableCmd* temp = node_.alter_table_cmd_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_table_cmd_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTableCmd& Node::_internal_alter_table_cmd() const { return _internal_has_alter_table_cmd() ? *node_.alter_table_cmd_ : reinterpret_cast< ::pg_query::AlterTableCmd&>(::pg_query::_AlterTableCmd_default_instance_); } inline const ::pg_query::AlterTableCmd& Node::alter_table_cmd() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_cmd) return _internal_alter_table_cmd(); } inline ::pg_query::AlterTableCmd* Node::unsafe_arena_release_alter_table_cmd() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_cmd) if (_internal_has_alter_table_cmd()) { clear_has_node(); ::pg_query::AlterTableCmd* temp = node_.alter_table_cmd_; node_.alter_table_cmd_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_table_cmd(::pg_query::AlterTableCmd* alter_table_cmd) { clear_node(); if (alter_table_cmd) { set_has_alter_table_cmd(); node_.alter_table_cmd_ = alter_table_cmd; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_cmd) } inline ::pg_query::AlterTableCmd* Node::_internal_mutable_alter_table_cmd() { if (!_internal_has_alter_table_cmd()) { clear_node(); set_has_alter_table_cmd(); node_.alter_table_cmd_ = CreateMaybeMessage< ::pg_query::AlterTableCmd >(GetArena()); } return node_.alter_table_cmd_; } inline ::pg_query::AlterTableCmd* Node::mutable_alter_table_cmd() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_cmd) return _internal_mutable_alter_table_cmd(); } // .pg_query.AlterDomainStmt alter_domain_stmt = 60 [json_name = "AlterDomainStmt"]; inline bool Node::_internal_has_alter_domain_stmt() const { return node_case() == kAlterDomainStmt; } inline bool Node::has_alter_domain_stmt() const { return _internal_has_alter_domain_stmt(); } inline void Node::set_has_alter_domain_stmt() { _oneof_case_[0] = kAlterDomainStmt; } inline void Node::clear_alter_domain_stmt() { if (_internal_has_alter_domain_stmt()) { if (GetArena() == nullptr) { delete node_.alter_domain_stmt_; } clear_has_node(); } } inline ::pg_query::AlterDomainStmt* Node::release_alter_domain_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_domain_stmt) if (_internal_has_alter_domain_stmt()) { clear_has_node(); ::pg_query::AlterDomainStmt* temp = node_.alter_domain_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_domain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterDomainStmt& Node::_internal_alter_domain_stmt() const { return _internal_has_alter_domain_stmt() ? *node_.alter_domain_stmt_ : reinterpret_cast< ::pg_query::AlterDomainStmt&>(::pg_query::_AlterDomainStmt_default_instance_); } inline const ::pg_query::AlterDomainStmt& Node::alter_domain_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_domain_stmt) return _internal_alter_domain_stmt(); } inline ::pg_query::AlterDomainStmt* Node::unsafe_arena_release_alter_domain_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_domain_stmt) if (_internal_has_alter_domain_stmt()) { clear_has_node(); ::pg_query::AlterDomainStmt* temp = node_.alter_domain_stmt_; node_.alter_domain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_domain_stmt(::pg_query::AlterDomainStmt* alter_domain_stmt) { clear_node(); if (alter_domain_stmt) { set_has_alter_domain_stmt(); node_.alter_domain_stmt_ = alter_domain_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_domain_stmt) } inline ::pg_query::AlterDomainStmt* Node::_internal_mutable_alter_domain_stmt() { if (!_internal_has_alter_domain_stmt()) { clear_node(); set_has_alter_domain_stmt(); node_.alter_domain_stmt_ = CreateMaybeMessage< ::pg_query::AlterDomainStmt >(GetArena()); } return node_.alter_domain_stmt_; } inline ::pg_query::AlterDomainStmt* Node::mutable_alter_domain_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_domain_stmt) return _internal_mutable_alter_domain_stmt(); } // .pg_query.SetOperationStmt set_operation_stmt = 61 [json_name = "SetOperationStmt"]; inline bool Node::_internal_has_set_operation_stmt() const { return node_case() == kSetOperationStmt; } inline bool Node::has_set_operation_stmt() const { return _internal_has_set_operation_stmt(); } inline void Node::set_has_set_operation_stmt() { _oneof_case_[0] = kSetOperationStmt; } inline void Node::clear_set_operation_stmt() { if (_internal_has_set_operation_stmt()) { if (GetArena() == nullptr) { delete node_.set_operation_stmt_; } clear_has_node(); } } inline ::pg_query::SetOperationStmt* Node::release_set_operation_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.set_operation_stmt) if (_internal_has_set_operation_stmt()) { clear_has_node(); ::pg_query::SetOperationStmt* temp = node_.set_operation_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.set_operation_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SetOperationStmt& Node::_internal_set_operation_stmt() const { return _internal_has_set_operation_stmt() ? *node_.set_operation_stmt_ : reinterpret_cast< ::pg_query::SetOperationStmt&>(::pg_query::_SetOperationStmt_default_instance_); } inline const ::pg_query::SetOperationStmt& Node::set_operation_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.set_operation_stmt) return _internal_set_operation_stmt(); } inline ::pg_query::SetOperationStmt* Node::unsafe_arena_release_set_operation_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.set_operation_stmt) if (_internal_has_set_operation_stmt()) { clear_has_node(); ::pg_query::SetOperationStmt* temp = node_.set_operation_stmt_; node_.set_operation_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_set_operation_stmt(::pg_query::SetOperationStmt* set_operation_stmt) { clear_node(); if (set_operation_stmt) { set_has_set_operation_stmt(); node_.set_operation_stmt_ = set_operation_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.set_operation_stmt) } inline ::pg_query::SetOperationStmt* Node::_internal_mutable_set_operation_stmt() { if (!_internal_has_set_operation_stmt()) { clear_node(); set_has_set_operation_stmt(); node_.set_operation_stmt_ = CreateMaybeMessage< ::pg_query::SetOperationStmt >(GetArena()); } return node_.set_operation_stmt_; } inline ::pg_query::SetOperationStmt* Node::mutable_set_operation_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.set_operation_stmt) return _internal_mutable_set_operation_stmt(); } // .pg_query.GrantStmt grant_stmt = 62 [json_name = "GrantStmt"]; inline bool Node::_internal_has_grant_stmt() const { return node_case() == kGrantStmt; } inline bool Node::has_grant_stmt() const { return _internal_has_grant_stmt(); } inline void Node::set_has_grant_stmt() { _oneof_case_[0] = kGrantStmt; } inline void Node::clear_grant_stmt() { if (_internal_has_grant_stmt()) { if (GetArena() == nullptr) { delete node_.grant_stmt_; } clear_has_node(); } } inline ::pg_query::GrantStmt* Node::release_grant_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.grant_stmt) if (_internal_has_grant_stmt()) { clear_has_node(); ::pg_query::GrantStmt* temp = node_.grant_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.grant_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GrantStmt& Node::_internal_grant_stmt() const { return _internal_has_grant_stmt() ? *node_.grant_stmt_ : reinterpret_cast< ::pg_query::GrantStmt&>(::pg_query::_GrantStmt_default_instance_); } inline const ::pg_query::GrantStmt& Node::grant_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.grant_stmt) return _internal_grant_stmt(); } inline ::pg_query::GrantStmt* Node::unsafe_arena_release_grant_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grant_stmt) if (_internal_has_grant_stmt()) { clear_has_node(); ::pg_query::GrantStmt* temp = node_.grant_stmt_; node_.grant_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_grant_stmt(::pg_query::GrantStmt* grant_stmt) { clear_node(); if (grant_stmt) { set_has_grant_stmt(); node_.grant_stmt_ = grant_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grant_stmt) } inline ::pg_query::GrantStmt* Node::_internal_mutable_grant_stmt() { if (!_internal_has_grant_stmt()) { clear_node(); set_has_grant_stmt(); node_.grant_stmt_ = CreateMaybeMessage< ::pg_query::GrantStmt >(GetArena()); } return node_.grant_stmt_; } inline ::pg_query::GrantStmt* Node::mutable_grant_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.grant_stmt) return _internal_mutable_grant_stmt(); } // .pg_query.GrantRoleStmt grant_role_stmt = 63 [json_name = "GrantRoleStmt"]; inline bool Node::_internal_has_grant_role_stmt() const { return node_case() == kGrantRoleStmt; } inline bool Node::has_grant_role_stmt() const { return _internal_has_grant_role_stmt(); } inline void Node::set_has_grant_role_stmt() { _oneof_case_[0] = kGrantRoleStmt; } inline void Node::clear_grant_role_stmt() { if (_internal_has_grant_role_stmt()) { if (GetArena() == nullptr) { delete node_.grant_role_stmt_; } clear_has_node(); } } inline ::pg_query::GrantRoleStmt* Node::release_grant_role_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.grant_role_stmt) if (_internal_has_grant_role_stmt()) { clear_has_node(); ::pg_query::GrantRoleStmt* temp = node_.grant_role_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.grant_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GrantRoleStmt& Node::_internal_grant_role_stmt() const { return _internal_has_grant_role_stmt() ? *node_.grant_role_stmt_ : reinterpret_cast< ::pg_query::GrantRoleStmt&>(::pg_query::_GrantRoleStmt_default_instance_); } inline const ::pg_query::GrantRoleStmt& Node::grant_role_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.grant_role_stmt) return _internal_grant_role_stmt(); } inline ::pg_query::GrantRoleStmt* Node::unsafe_arena_release_grant_role_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grant_role_stmt) if (_internal_has_grant_role_stmt()) { clear_has_node(); ::pg_query::GrantRoleStmt* temp = node_.grant_role_stmt_; node_.grant_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_grant_role_stmt(::pg_query::GrantRoleStmt* grant_role_stmt) { clear_node(); if (grant_role_stmt) { set_has_grant_role_stmt(); node_.grant_role_stmt_ = grant_role_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grant_role_stmt) } inline ::pg_query::GrantRoleStmt* Node::_internal_mutable_grant_role_stmt() { if (!_internal_has_grant_role_stmt()) { clear_node(); set_has_grant_role_stmt(); node_.grant_role_stmt_ = CreateMaybeMessage< ::pg_query::GrantRoleStmt >(GetArena()); } return node_.grant_role_stmt_; } inline ::pg_query::GrantRoleStmt* Node::mutable_grant_role_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.grant_role_stmt) return _internal_mutable_grant_role_stmt(); } // .pg_query.AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 64 [json_name = "AlterDefaultPrivilegesStmt"]; inline bool Node::_internal_has_alter_default_privileges_stmt() const { return node_case() == kAlterDefaultPrivilegesStmt; } inline bool Node::has_alter_default_privileges_stmt() const { return _internal_has_alter_default_privileges_stmt(); } inline void Node::set_has_alter_default_privileges_stmt() { _oneof_case_[0] = kAlterDefaultPrivilegesStmt; } inline void Node::clear_alter_default_privileges_stmt() { if (_internal_has_alter_default_privileges_stmt()) { if (GetArena() == nullptr) { delete node_.alter_default_privileges_stmt_; } clear_has_node(); } } inline ::pg_query::AlterDefaultPrivilegesStmt* Node::release_alter_default_privileges_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_default_privileges_stmt) if (_internal_has_alter_default_privileges_stmt()) { clear_has_node(); ::pg_query::AlterDefaultPrivilegesStmt* temp = node_.alter_default_privileges_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_default_privileges_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterDefaultPrivilegesStmt& Node::_internal_alter_default_privileges_stmt() const { return _internal_has_alter_default_privileges_stmt() ? *node_.alter_default_privileges_stmt_ : reinterpret_cast< ::pg_query::AlterDefaultPrivilegesStmt&>(::pg_query::_AlterDefaultPrivilegesStmt_default_instance_); } inline const ::pg_query::AlterDefaultPrivilegesStmt& Node::alter_default_privileges_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_default_privileges_stmt) return _internal_alter_default_privileges_stmt(); } inline ::pg_query::AlterDefaultPrivilegesStmt* Node::unsafe_arena_release_alter_default_privileges_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_default_privileges_stmt) if (_internal_has_alter_default_privileges_stmt()) { clear_has_node(); ::pg_query::AlterDefaultPrivilegesStmt* temp = node_.alter_default_privileges_stmt_; node_.alter_default_privileges_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_default_privileges_stmt(::pg_query::AlterDefaultPrivilegesStmt* alter_default_privileges_stmt) { clear_node(); if (alter_default_privileges_stmt) { set_has_alter_default_privileges_stmt(); node_.alter_default_privileges_stmt_ = alter_default_privileges_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_default_privileges_stmt) } inline ::pg_query::AlterDefaultPrivilegesStmt* Node::_internal_mutable_alter_default_privileges_stmt() { if (!_internal_has_alter_default_privileges_stmt()) { clear_node(); set_has_alter_default_privileges_stmt(); node_.alter_default_privileges_stmt_ = CreateMaybeMessage< ::pg_query::AlterDefaultPrivilegesStmt >(GetArena()); } return node_.alter_default_privileges_stmt_; } inline ::pg_query::AlterDefaultPrivilegesStmt* Node::mutable_alter_default_privileges_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_default_privileges_stmt) return _internal_mutable_alter_default_privileges_stmt(); } // .pg_query.ClosePortalStmt close_portal_stmt = 65 [json_name = "ClosePortalStmt"]; inline bool Node::_internal_has_close_portal_stmt() const { return node_case() == kClosePortalStmt; } inline bool Node::has_close_portal_stmt() const { return _internal_has_close_portal_stmt(); } inline void Node::set_has_close_portal_stmt() { _oneof_case_[0] = kClosePortalStmt; } inline void Node::clear_close_portal_stmt() { if (_internal_has_close_portal_stmt()) { if (GetArena() == nullptr) { delete node_.close_portal_stmt_; } clear_has_node(); } } inline ::pg_query::ClosePortalStmt* Node::release_close_portal_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.close_portal_stmt) if (_internal_has_close_portal_stmt()) { clear_has_node(); ::pg_query::ClosePortalStmt* temp = node_.close_portal_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.close_portal_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ClosePortalStmt& Node::_internal_close_portal_stmt() const { return _internal_has_close_portal_stmt() ? *node_.close_portal_stmt_ : reinterpret_cast< ::pg_query::ClosePortalStmt&>(::pg_query::_ClosePortalStmt_default_instance_); } inline const ::pg_query::ClosePortalStmt& Node::close_portal_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.close_portal_stmt) return _internal_close_portal_stmt(); } inline ::pg_query::ClosePortalStmt* Node::unsafe_arena_release_close_portal_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.close_portal_stmt) if (_internal_has_close_portal_stmt()) { clear_has_node(); ::pg_query::ClosePortalStmt* temp = node_.close_portal_stmt_; node_.close_portal_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_close_portal_stmt(::pg_query::ClosePortalStmt* close_portal_stmt) { clear_node(); if (close_portal_stmt) { set_has_close_portal_stmt(); node_.close_portal_stmt_ = close_portal_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.close_portal_stmt) } inline ::pg_query::ClosePortalStmt* Node::_internal_mutable_close_portal_stmt() { if (!_internal_has_close_portal_stmt()) { clear_node(); set_has_close_portal_stmt(); node_.close_portal_stmt_ = CreateMaybeMessage< ::pg_query::ClosePortalStmt >(GetArena()); } return node_.close_portal_stmt_; } inline ::pg_query::ClosePortalStmt* Node::mutable_close_portal_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.close_portal_stmt) return _internal_mutable_close_portal_stmt(); } // .pg_query.ClusterStmt cluster_stmt = 66 [json_name = "ClusterStmt"]; inline bool Node::_internal_has_cluster_stmt() const { return node_case() == kClusterStmt; } inline bool Node::has_cluster_stmt() const { return _internal_has_cluster_stmt(); } inline void Node::set_has_cluster_stmt() { _oneof_case_[0] = kClusterStmt; } inline void Node::clear_cluster_stmt() { if (_internal_has_cluster_stmt()) { if (GetArena() == nullptr) { delete node_.cluster_stmt_; } clear_has_node(); } } inline ::pg_query::ClusterStmt* Node::release_cluster_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.cluster_stmt) if (_internal_has_cluster_stmt()) { clear_has_node(); ::pg_query::ClusterStmt* temp = node_.cluster_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.cluster_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ClusterStmt& Node::_internal_cluster_stmt() const { return _internal_has_cluster_stmt() ? *node_.cluster_stmt_ : reinterpret_cast< ::pg_query::ClusterStmt&>(::pg_query::_ClusterStmt_default_instance_); } inline const ::pg_query::ClusterStmt& Node::cluster_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.cluster_stmt) return _internal_cluster_stmt(); } inline ::pg_query::ClusterStmt* Node::unsafe_arena_release_cluster_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.cluster_stmt) if (_internal_has_cluster_stmt()) { clear_has_node(); ::pg_query::ClusterStmt* temp = node_.cluster_stmt_; node_.cluster_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_cluster_stmt(::pg_query::ClusterStmt* cluster_stmt) { clear_node(); if (cluster_stmt) { set_has_cluster_stmt(); node_.cluster_stmt_ = cluster_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.cluster_stmt) } inline ::pg_query::ClusterStmt* Node::_internal_mutable_cluster_stmt() { if (!_internal_has_cluster_stmt()) { clear_node(); set_has_cluster_stmt(); node_.cluster_stmt_ = CreateMaybeMessage< ::pg_query::ClusterStmt >(GetArena()); } return node_.cluster_stmt_; } inline ::pg_query::ClusterStmt* Node::mutable_cluster_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.cluster_stmt) return _internal_mutable_cluster_stmt(); } // .pg_query.CopyStmt copy_stmt = 67 [json_name = "CopyStmt"]; inline bool Node::_internal_has_copy_stmt() const { return node_case() == kCopyStmt; } inline bool Node::has_copy_stmt() const { return _internal_has_copy_stmt(); } inline void Node::set_has_copy_stmt() { _oneof_case_[0] = kCopyStmt; } inline void Node::clear_copy_stmt() { if (_internal_has_copy_stmt()) { if (GetArena() == nullptr) { delete node_.copy_stmt_; } clear_has_node(); } } inline ::pg_query::CopyStmt* Node::release_copy_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.copy_stmt) if (_internal_has_copy_stmt()) { clear_has_node(); ::pg_query::CopyStmt* temp = node_.copy_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.copy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CopyStmt& Node::_internal_copy_stmt() const { return _internal_has_copy_stmt() ? *node_.copy_stmt_ : reinterpret_cast< ::pg_query::CopyStmt&>(::pg_query::_CopyStmt_default_instance_); } inline const ::pg_query::CopyStmt& Node::copy_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.copy_stmt) return _internal_copy_stmt(); } inline ::pg_query::CopyStmt* Node::unsafe_arena_release_copy_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.copy_stmt) if (_internal_has_copy_stmt()) { clear_has_node(); ::pg_query::CopyStmt* temp = node_.copy_stmt_; node_.copy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_copy_stmt(::pg_query::CopyStmt* copy_stmt) { clear_node(); if (copy_stmt) { set_has_copy_stmt(); node_.copy_stmt_ = copy_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.copy_stmt) } inline ::pg_query::CopyStmt* Node::_internal_mutable_copy_stmt() { if (!_internal_has_copy_stmt()) { clear_node(); set_has_copy_stmt(); node_.copy_stmt_ = CreateMaybeMessage< ::pg_query::CopyStmt >(GetArena()); } return node_.copy_stmt_; } inline ::pg_query::CopyStmt* Node::mutable_copy_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.copy_stmt) return _internal_mutable_copy_stmt(); } // .pg_query.CreateStmt create_stmt = 68 [json_name = "CreateStmt"]; inline bool Node::_internal_has_create_stmt() const { return node_case() == kCreateStmt; } inline bool Node::has_create_stmt() const { return _internal_has_create_stmt(); } inline void Node::set_has_create_stmt() { _oneof_case_[0] = kCreateStmt; } inline void Node::clear_create_stmt() { if (_internal_has_create_stmt()) { if (GetArena() == nullptr) { delete node_.create_stmt_; } clear_has_node(); } } inline ::pg_query::CreateStmt* Node::release_create_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_stmt) if (_internal_has_create_stmt()) { clear_has_node(); ::pg_query::CreateStmt* temp = node_.create_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateStmt& Node::_internal_create_stmt() const { return _internal_has_create_stmt() ? *node_.create_stmt_ : reinterpret_cast< ::pg_query::CreateStmt&>(::pg_query::_CreateStmt_default_instance_); } inline const ::pg_query::CreateStmt& Node::create_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_stmt) return _internal_create_stmt(); } inline ::pg_query::CreateStmt* Node::unsafe_arena_release_create_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_stmt) if (_internal_has_create_stmt()) { clear_has_node(); ::pg_query::CreateStmt* temp = node_.create_stmt_; node_.create_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_stmt(::pg_query::CreateStmt* create_stmt) { clear_node(); if (create_stmt) { set_has_create_stmt(); node_.create_stmt_ = create_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_stmt) } inline ::pg_query::CreateStmt* Node::_internal_mutable_create_stmt() { if (!_internal_has_create_stmt()) { clear_node(); set_has_create_stmt(); node_.create_stmt_ = CreateMaybeMessage< ::pg_query::CreateStmt >(GetArena()); } return node_.create_stmt_; } inline ::pg_query::CreateStmt* Node::mutable_create_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_stmt) return _internal_mutable_create_stmt(); } // .pg_query.DefineStmt define_stmt = 69 [json_name = "DefineStmt"]; inline bool Node::_internal_has_define_stmt() const { return node_case() == kDefineStmt; } inline bool Node::has_define_stmt() const { return _internal_has_define_stmt(); } inline void Node::set_has_define_stmt() { _oneof_case_[0] = kDefineStmt; } inline void Node::clear_define_stmt() { if (_internal_has_define_stmt()) { if (GetArena() == nullptr) { delete node_.define_stmt_; } clear_has_node(); } } inline ::pg_query::DefineStmt* Node::release_define_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.define_stmt) if (_internal_has_define_stmt()) { clear_has_node(); ::pg_query::DefineStmt* temp = node_.define_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.define_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DefineStmt& Node::_internal_define_stmt() const { return _internal_has_define_stmt() ? *node_.define_stmt_ : reinterpret_cast< ::pg_query::DefineStmt&>(::pg_query::_DefineStmt_default_instance_); } inline const ::pg_query::DefineStmt& Node::define_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.define_stmt) return _internal_define_stmt(); } inline ::pg_query::DefineStmt* Node::unsafe_arena_release_define_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.define_stmt) if (_internal_has_define_stmt()) { clear_has_node(); ::pg_query::DefineStmt* temp = node_.define_stmt_; node_.define_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_define_stmt(::pg_query::DefineStmt* define_stmt) { clear_node(); if (define_stmt) { set_has_define_stmt(); node_.define_stmt_ = define_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.define_stmt) } inline ::pg_query::DefineStmt* Node::_internal_mutable_define_stmt() { if (!_internal_has_define_stmt()) { clear_node(); set_has_define_stmt(); node_.define_stmt_ = CreateMaybeMessage< ::pg_query::DefineStmt >(GetArena()); } return node_.define_stmt_; } inline ::pg_query::DefineStmt* Node::mutable_define_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.define_stmt) return _internal_mutable_define_stmt(); } // .pg_query.DropStmt drop_stmt = 70 [json_name = "DropStmt"]; inline bool Node::_internal_has_drop_stmt() const { return node_case() == kDropStmt; } inline bool Node::has_drop_stmt() const { return _internal_has_drop_stmt(); } inline void Node::set_has_drop_stmt() { _oneof_case_[0] = kDropStmt; } inline void Node::clear_drop_stmt() { if (_internal_has_drop_stmt()) { if (GetArena() == nullptr) { delete node_.drop_stmt_; } clear_has_node(); } } inline ::pg_query::DropStmt* Node::release_drop_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.drop_stmt) if (_internal_has_drop_stmt()) { clear_has_node(); ::pg_query::DropStmt* temp = node_.drop_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.drop_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropStmt& Node::_internal_drop_stmt() const { return _internal_has_drop_stmt() ? *node_.drop_stmt_ : reinterpret_cast< ::pg_query::DropStmt&>(::pg_query::_DropStmt_default_instance_); } inline const ::pg_query::DropStmt& Node::drop_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.drop_stmt) return _internal_drop_stmt(); } inline ::pg_query::DropStmt* Node::unsafe_arena_release_drop_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_stmt) if (_internal_has_drop_stmt()) { clear_has_node(); ::pg_query::DropStmt* temp = node_.drop_stmt_; node_.drop_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_drop_stmt(::pg_query::DropStmt* drop_stmt) { clear_node(); if (drop_stmt) { set_has_drop_stmt(); node_.drop_stmt_ = drop_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_stmt) } inline ::pg_query::DropStmt* Node::_internal_mutable_drop_stmt() { if (!_internal_has_drop_stmt()) { clear_node(); set_has_drop_stmt(); node_.drop_stmt_ = CreateMaybeMessage< ::pg_query::DropStmt >(GetArena()); } return node_.drop_stmt_; } inline ::pg_query::DropStmt* Node::mutable_drop_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_stmt) return _internal_mutable_drop_stmt(); } // .pg_query.TruncateStmt truncate_stmt = 71 [json_name = "TruncateStmt"]; inline bool Node::_internal_has_truncate_stmt() const { return node_case() == kTruncateStmt; } inline bool Node::has_truncate_stmt() const { return _internal_has_truncate_stmt(); } inline void Node::set_has_truncate_stmt() { _oneof_case_[0] = kTruncateStmt; } inline void Node::clear_truncate_stmt() { if (_internal_has_truncate_stmt()) { if (GetArena() == nullptr) { delete node_.truncate_stmt_; } clear_has_node(); } } inline ::pg_query::TruncateStmt* Node::release_truncate_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.truncate_stmt) if (_internal_has_truncate_stmt()) { clear_has_node(); ::pg_query::TruncateStmt* temp = node_.truncate_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.truncate_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TruncateStmt& Node::_internal_truncate_stmt() const { return _internal_has_truncate_stmt() ? *node_.truncate_stmt_ : reinterpret_cast< ::pg_query::TruncateStmt&>(::pg_query::_TruncateStmt_default_instance_); } inline const ::pg_query::TruncateStmt& Node::truncate_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.truncate_stmt) return _internal_truncate_stmt(); } inline ::pg_query::TruncateStmt* Node::unsafe_arena_release_truncate_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.truncate_stmt) if (_internal_has_truncate_stmt()) { clear_has_node(); ::pg_query::TruncateStmt* temp = node_.truncate_stmt_; node_.truncate_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_truncate_stmt(::pg_query::TruncateStmt* truncate_stmt) { clear_node(); if (truncate_stmt) { set_has_truncate_stmt(); node_.truncate_stmt_ = truncate_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.truncate_stmt) } inline ::pg_query::TruncateStmt* Node::_internal_mutable_truncate_stmt() { if (!_internal_has_truncate_stmt()) { clear_node(); set_has_truncate_stmt(); node_.truncate_stmt_ = CreateMaybeMessage< ::pg_query::TruncateStmt >(GetArena()); } return node_.truncate_stmt_; } inline ::pg_query::TruncateStmt* Node::mutable_truncate_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.truncate_stmt) return _internal_mutable_truncate_stmt(); } // .pg_query.CommentStmt comment_stmt = 72 [json_name = "CommentStmt"]; inline bool Node::_internal_has_comment_stmt() const { return node_case() == kCommentStmt; } inline bool Node::has_comment_stmt() const { return _internal_has_comment_stmt(); } inline void Node::set_has_comment_stmt() { _oneof_case_[0] = kCommentStmt; } inline void Node::clear_comment_stmt() { if (_internal_has_comment_stmt()) { if (GetArena() == nullptr) { delete node_.comment_stmt_; } clear_has_node(); } } inline ::pg_query::CommentStmt* Node::release_comment_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.comment_stmt) if (_internal_has_comment_stmt()) { clear_has_node(); ::pg_query::CommentStmt* temp = node_.comment_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.comment_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CommentStmt& Node::_internal_comment_stmt() const { return _internal_has_comment_stmt() ? *node_.comment_stmt_ : reinterpret_cast< ::pg_query::CommentStmt&>(::pg_query::_CommentStmt_default_instance_); } inline const ::pg_query::CommentStmt& Node::comment_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.comment_stmt) return _internal_comment_stmt(); } inline ::pg_query::CommentStmt* Node::unsafe_arena_release_comment_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.comment_stmt) if (_internal_has_comment_stmt()) { clear_has_node(); ::pg_query::CommentStmt* temp = node_.comment_stmt_; node_.comment_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_comment_stmt(::pg_query::CommentStmt* comment_stmt) { clear_node(); if (comment_stmt) { set_has_comment_stmt(); node_.comment_stmt_ = comment_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.comment_stmt) } inline ::pg_query::CommentStmt* Node::_internal_mutable_comment_stmt() { if (!_internal_has_comment_stmt()) { clear_node(); set_has_comment_stmt(); node_.comment_stmt_ = CreateMaybeMessage< ::pg_query::CommentStmt >(GetArena()); } return node_.comment_stmt_; } inline ::pg_query::CommentStmt* Node::mutable_comment_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.comment_stmt) return _internal_mutable_comment_stmt(); } // .pg_query.FetchStmt fetch_stmt = 73 [json_name = "FetchStmt"]; inline bool Node::_internal_has_fetch_stmt() const { return node_case() == kFetchStmt; } inline bool Node::has_fetch_stmt() const { return _internal_has_fetch_stmt(); } inline void Node::set_has_fetch_stmt() { _oneof_case_[0] = kFetchStmt; } inline void Node::clear_fetch_stmt() { if (_internal_has_fetch_stmt()) { if (GetArena() == nullptr) { delete node_.fetch_stmt_; } clear_has_node(); } } inline ::pg_query::FetchStmt* Node::release_fetch_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.fetch_stmt) if (_internal_has_fetch_stmt()) { clear_has_node(); ::pg_query::FetchStmt* temp = node_.fetch_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.fetch_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FetchStmt& Node::_internal_fetch_stmt() const { return _internal_has_fetch_stmt() ? *node_.fetch_stmt_ : reinterpret_cast< ::pg_query::FetchStmt&>(::pg_query::_FetchStmt_default_instance_); } inline const ::pg_query::FetchStmt& Node::fetch_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.fetch_stmt) return _internal_fetch_stmt(); } inline ::pg_query::FetchStmt* Node::unsafe_arena_release_fetch_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.fetch_stmt) if (_internal_has_fetch_stmt()) { clear_has_node(); ::pg_query::FetchStmt* temp = node_.fetch_stmt_; node_.fetch_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_fetch_stmt(::pg_query::FetchStmt* fetch_stmt) { clear_node(); if (fetch_stmt) { set_has_fetch_stmt(); node_.fetch_stmt_ = fetch_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.fetch_stmt) } inline ::pg_query::FetchStmt* Node::_internal_mutable_fetch_stmt() { if (!_internal_has_fetch_stmt()) { clear_node(); set_has_fetch_stmt(); node_.fetch_stmt_ = CreateMaybeMessage< ::pg_query::FetchStmt >(GetArena()); } return node_.fetch_stmt_; } inline ::pg_query::FetchStmt* Node::mutable_fetch_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.fetch_stmt) return _internal_mutable_fetch_stmt(); } // .pg_query.IndexStmt index_stmt = 74 [json_name = "IndexStmt"]; inline bool Node::_internal_has_index_stmt() const { return node_case() == kIndexStmt; } inline bool Node::has_index_stmt() const { return _internal_has_index_stmt(); } inline void Node::set_has_index_stmt() { _oneof_case_[0] = kIndexStmt; } inline void Node::clear_index_stmt() { if (_internal_has_index_stmt()) { if (GetArena() == nullptr) { delete node_.index_stmt_; } clear_has_node(); } } inline ::pg_query::IndexStmt* Node::release_index_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.index_stmt) if (_internal_has_index_stmt()) { clear_has_node(); ::pg_query::IndexStmt* temp = node_.index_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.index_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IndexStmt& Node::_internal_index_stmt() const { return _internal_has_index_stmt() ? *node_.index_stmt_ : reinterpret_cast< ::pg_query::IndexStmt&>(::pg_query::_IndexStmt_default_instance_); } inline const ::pg_query::IndexStmt& Node::index_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.index_stmt) return _internal_index_stmt(); } inline ::pg_query::IndexStmt* Node::unsafe_arena_release_index_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.index_stmt) if (_internal_has_index_stmt()) { clear_has_node(); ::pg_query::IndexStmt* temp = node_.index_stmt_; node_.index_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_index_stmt(::pg_query::IndexStmt* index_stmt) { clear_node(); if (index_stmt) { set_has_index_stmt(); node_.index_stmt_ = index_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.index_stmt) } inline ::pg_query::IndexStmt* Node::_internal_mutable_index_stmt() { if (!_internal_has_index_stmt()) { clear_node(); set_has_index_stmt(); node_.index_stmt_ = CreateMaybeMessage< ::pg_query::IndexStmt >(GetArena()); } return node_.index_stmt_; } inline ::pg_query::IndexStmt* Node::mutable_index_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.index_stmt) return _internal_mutable_index_stmt(); } // .pg_query.CreateFunctionStmt create_function_stmt = 75 [json_name = "CreateFunctionStmt"]; inline bool Node::_internal_has_create_function_stmt() const { return node_case() == kCreateFunctionStmt; } inline bool Node::has_create_function_stmt() const { return _internal_has_create_function_stmt(); } inline void Node::set_has_create_function_stmt() { _oneof_case_[0] = kCreateFunctionStmt; } inline void Node::clear_create_function_stmt() { if (_internal_has_create_function_stmt()) { if (GetArena() == nullptr) { delete node_.create_function_stmt_; } clear_has_node(); } } inline ::pg_query::CreateFunctionStmt* Node::release_create_function_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_function_stmt) if (_internal_has_create_function_stmt()) { clear_has_node(); ::pg_query::CreateFunctionStmt* temp = node_.create_function_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_function_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateFunctionStmt& Node::_internal_create_function_stmt() const { return _internal_has_create_function_stmt() ? *node_.create_function_stmt_ : reinterpret_cast< ::pg_query::CreateFunctionStmt&>(::pg_query::_CreateFunctionStmt_default_instance_); } inline const ::pg_query::CreateFunctionStmt& Node::create_function_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_function_stmt) return _internal_create_function_stmt(); } inline ::pg_query::CreateFunctionStmt* Node::unsafe_arena_release_create_function_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_function_stmt) if (_internal_has_create_function_stmt()) { clear_has_node(); ::pg_query::CreateFunctionStmt* temp = node_.create_function_stmt_; node_.create_function_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_function_stmt(::pg_query::CreateFunctionStmt* create_function_stmt) { clear_node(); if (create_function_stmt) { set_has_create_function_stmt(); node_.create_function_stmt_ = create_function_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_function_stmt) } inline ::pg_query::CreateFunctionStmt* Node::_internal_mutable_create_function_stmt() { if (!_internal_has_create_function_stmt()) { clear_node(); set_has_create_function_stmt(); node_.create_function_stmt_ = CreateMaybeMessage< ::pg_query::CreateFunctionStmt >(GetArena()); } return node_.create_function_stmt_; } inline ::pg_query::CreateFunctionStmt* Node::mutable_create_function_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_function_stmt) return _internal_mutable_create_function_stmt(); } // .pg_query.AlterFunctionStmt alter_function_stmt = 76 [json_name = "AlterFunctionStmt"]; inline bool Node::_internal_has_alter_function_stmt() const { return node_case() == kAlterFunctionStmt; } inline bool Node::has_alter_function_stmt() const { return _internal_has_alter_function_stmt(); } inline void Node::set_has_alter_function_stmt() { _oneof_case_[0] = kAlterFunctionStmt; } inline void Node::clear_alter_function_stmt() { if (_internal_has_alter_function_stmt()) { if (GetArena() == nullptr) { delete node_.alter_function_stmt_; } clear_has_node(); } } inline ::pg_query::AlterFunctionStmt* Node::release_alter_function_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_function_stmt) if (_internal_has_alter_function_stmt()) { clear_has_node(); ::pg_query::AlterFunctionStmt* temp = node_.alter_function_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_function_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterFunctionStmt& Node::_internal_alter_function_stmt() const { return _internal_has_alter_function_stmt() ? *node_.alter_function_stmt_ : reinterpret_cast< ::pg_query::AlterFunctionStmt&>(::pg_query::_AlterFunctionStmt_default_instance_); } inline const ::pg_query::AlterFunctionStmt& Node::alter_function_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_function_stmt) return _internal_alter_function_stmt(); } inline ::pg_query::AlterFunctionStmt* Node::unsafe_arena_release_alter_function_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_function_stmt) if (_internal_has_alter_function_stmt()) { clear_has_node(); ::pg_query::AlterFunctionStmt* temp = node_.alter_function_stmt_; node_.alter_function_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_function_stmt(::pg_query::AlterFunctionStmt* alter_function_stmt) { clear_node(); if (alter_function_stmt) { set_has_alter_function_stmt(); node_.alter_function_stmt_ = alter_function_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_function_stmt) } inline ::pg_query::AlterFunctionStmt* Node::_internal_mutable_alter_function_stmt() { if (!_internal_has_alter_function_stmt()) { clear_node(); set_has_alter_function_stmt(); node_.alter_function_stmt_ = CreateMaybeMessage< ::pg_query::AlterFunctionStmt >(GetArena()); } return node_.alter_function_stmt_; } inline ::pg_query::AlterFunctionStmt* Node::mutable_alter_function_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_function_stmt) return _internal_mutable_alter_function_stmt(); } // .pg_query.DoStmt do_stmt = 77 [json_name = "DoStmt"]; inline bool Node::_internal_has_do_stmt() const { return node_case() == kDoStmt; } inline bool Node::has_do_stmt() const { return _internal_has_do_stmt(); } inline void Node::set_has_do_stmt() { _oneof_case_[0] = kDoStmt; } inline void Node::clear_do_stmt() { if (_internal_has_do_stmt()) { if (GetArena() == nullptr) { delete node_.do_stmt_; } clear_has_node(); } } inline ::pg_query::DoStmt* Node::release_do_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.do_stmt) if (_internal_has_do_stmt()) { clear_has_node(); ::pg_query::DoStmt* temp = node_.do_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.do_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DoStmt& Node::_internal_do_stmt() const { return _internal_has_do_stmt() ? *node_.do_stmt_ : reinterpret_cast< ::pg_query::DoStmt&>(::pg_query::_DoStmt_default_instance_); } inline const ::pg_query::DoStmt& Node::do_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.do_stmt) return _internal_do_stmt(); } inline ::pg_query::DoStmt* Node::unsafe_arena_release_do_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.do_stmt) if (_internal_has_do_stmt()) { clear_has_node(); ::pg_query::DoStmt* temp = node_.do_stmt_; node_.do_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_do_stmt(::pg_query::DoStmt* do_stmt) { clear_node(); if (do_stmt) { set_has_do_stmt(); node_.do_stmt_ = do_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.do_stmt) } inline ::pg_query::DoStmt* Node::_internal_mutable_do_stmt() { if (!_internal_has_do_stmt()) { clear_node(); set_has_do_stmt(); node_.do_stmt_ = CreateMaybeMessage< ::pg_query::DoStmt >(GetArena()); } return node_.do_stmt_; } inline ::pg_query::DoStmt* Node::mutable_do_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.do_stmt) return _internal_mutable_do_stmt(); } // .pg_query.RenameStmt rename_stmt = 78 [json_name = "RenameStmt"]; inline bool Node::_internal_has_rename_stmt() const { return node_case() == kRenameStmt; } inline bool Node::has_rename_stmt() const { return _internal_has_rename_stmt(); } inline void Node::set_has_rename_stmt() { _oneof_case_[0] = kRenameStmt; } inline void Node::clear_rename_stmt() { if (_internal_has_rename_stmt()) { if (GetArena() == nullptr) { delete node_.rename_stmt_; } clear_has_node(); } } inline ::pg_query::RenameStmt* Node::release_rename_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.rename_stmt) if (_internal_has_rename_stmt()) { clear_has_node(); ::pg_query::RenameStmt* temp = node_.rename_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.rename_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RenameStmt& Node::_internal_rename_stmt() const { return _internal_has_rename_stmt() ? *node_.rename_stmt_ : reinterpret_cast< ::pg_query::RenameStmt&>(::pg_query::_RenameStmt_default_instance_); } inline const ::pg_query::RenameStmt& Node::rename_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.rename_stmt) return _internal_rename_stmt(); } inline ::pg_query::RenameStmt* Node::unsafe_arena_release_rename_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.rename_stmt) if (_internal_has_rename_stmt()) { clear_has_node(); ::pg_query::RenameStmt* temp = node_.rename_stmt_; node_.rename_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_rename_stmt(::pg_query::RenameStmt* rename_stmt) { clear_node(); if (rename_stmt) { set_has_rename_stmt(); node_.rename_stmt_ = rename_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.rename_stmt) } inline ::pg_query::RenameStmt* Node::_internal_mutable_rename_stmt() { if (!_internal_has_rename_stmt()) { clear_node(); set_has_rename_stmt(); node_.rename_stmt_ = CreateMaybeMessage< ::pg_query::RenameStmt >(GetArena()); } return node_.rename_stmt_; } inline ::pg_query::RenameStmt* Node::mutable_rename_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.rename_stmt) return _internal_mutable_rename_stmt(); } // .pg_query.RuleStmt rule_stmt = 79 [json_name = "RuleStmt"]; inline bool Node::_internal_has_rule_stmt() const { return node_case() == kRuleStmt; } inline bool Node::has_rule_stmt() const { return _internal_has_rule_stmt(); } inline void Node::set_has_rule_stmt() { _oneof_case_[0] = kRuleStmt; } inline void Node::clear_rule_stmt() { if (_internal_has_rule_stmt()) { if (GetArena() == nullptr) { delete node_.rule_stmt_; } clear_has_node(); } } inline ::pg_query::RuleStmt* Node::release_rule_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.rule_stmt) if (_internal_has_rule_stmt()) { clear_has_node(); ::pg_query::RuleStmt* temp = node_.rule_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.rule_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RuleStmt& Node::_internal_rule_stmt() const { return _internal_has_rule_stmt() ? *node_.rule_stmt_ : reinterpret_cast< ::pg_query::RuleStmt&>(::pg_query::_RuleStmt_default_instance_); } inline const ::pg_query::RuleStmt& Node::rule_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.rule_stmt) return _internal_rule_stmt(); } inline ::pg_query::RuleStmt* Node::unsafe_arena_release_rule_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.rule_stmt) if (_internal_has_rule_stmt()) { clear_has_node(); ::pg_query::RuleStmt* temp = node_.rule_stmt_; node_.rule_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_rule_stmt(::pg_query::RuleStmt* rule_stmt) { clear_node(); if (rule_stmt) { set_has_rule_stmt(); node_.rule_stmt_ = rule_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.rule_stmt) } inline ::pg_query::RuleStmt* Node::_internal_mutable_rule_stmt() { if (!_internal_has_rule_stmt()) { clear_node(); set_has_rule_stmt(); node_.rule_stmt_ = CreateMaybeMessage< ::pg_query::RuleStmt >(GetArena()); } return node_.rule_stmt_; } inline ::pg_query::RuleStmt* Node::mutable_rule_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.rule_stmt) return _internal_mutable_rule_stmt(); } // .pg_query.NotifyStmt notify_stmt = 80 [json_name = "NotifyStmt"]; inline bool Node::_internal_has_notify_stmt() const { return node_case() == kNotifyStmt; } inline bool Node::has_notify_stmt() const { return _internal_has_notify_stmt(); } inline void Node::set_has_notify_stmt() { _oneof_case_[0] = kNotifyStmt; } inline void Node::clear_notify_stmt() { if (_internal_has_notify_stmt()) { if (GetArena() == nullptr) { delete node_.notify_stmt_; } clear_has_node(); } } inline ::pg_query::NotifyStmt* Node::release_notify_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.notify_stmt) if (_internal_has_notify_stmt()) { clear_has_node(); ::pg_query::NotifyStmt* temp = node_.notify_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.notify_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::NotifyStmt& Node::_internal_notify_stmt() const { return _internal_has_notify_stmt() ? *node_.notify_stmt_ : reinterpret_cast< ::pg_query::NotifyStmt&>(::pg_query::_NotifyStmt_default_instance_); } inline const ::pg_query::NotifyStmt& Node::notify_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.notify_stmt) return _internal_notify_stmt(); } inline ::pg_query::NotifyStmt* Node::unsafe_arena_release_notify_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.notify_stmt) if (_internal_has_notify_stmt()) { clear_has_node(); ::pg_query::NotifyStmt* temp = node_.notify_stmt_; node_.notify_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_notify_stmt(::pg_query::NotifyStmt* notify_stmt) { clear_node(); if (notify_stmt) { set_has_notify_stmt(); node_.notify_stmt_ = notify_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.notify_stmt) } inline ::pg_query::NotifyStmt* Node::_internal_mutable_notify_stmt() { if (!_internal_has_notify_stmt()) { clear_node(); set_has_notify_stmt(); node_.notify_stmt_ = CreateMaybeMessage< ::pg_query::NotifyStmt >(GetArena()); } return node_.notify_stmt_; } inline ::pg_query::NotifyStmt* Node::mutable_notify_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.notify_stmt) return _internal_mutable_notify_stmt(); } // .pg_query.ListenStmt listen_stmt = 81 [json_name = "ListenStmt"]; inline bool Node::_internal_has_listen_stmt() const { return node_case() == kListenStmt; } inline bool Node::has_listen_stmt() const { return _internal_has_listen_stmt(); } inline void Node::set_has_listen_stmt() { _oneof_case_[0] = kListenStmt; } inline void Node::clear_listen_stmt() { if (_internal_has_listen_stmt()) { if (GetArena() == nullptr) { delete node_.listen_stmt_; } clear_has_node(); } } inline ::pg_query::ListenStmt* Node::release_listen_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.listen_stmt) if (_internal_has_listen_stmt()) { clear_has_node(); ::pg_query::ListenStmt* temp = node_.listen_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.listen_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ListenStmt& Node::_internal_listen_stmt() const { return _internal_has_listen_stmt() ? *node_.listen_stmt_ : reinterpret_cast< ::pg_query::ListenStmt&>(::pg_query::_ListenStmt_default_instance_); } inline const ::pg_query::ListenStmt& Node::listen_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.listen_stmt) return _internal_listen_stmt(); } inline ::pg_query::ListenStmt* Node::unsafe_arena_release_listen_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.listen_stmt) if (_internal_has_listen_stmt()) { clear_has_node(); ::pg_query::ListenStmt* temp = node_.listen_stmt_; node_.listen_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_listen_stmt(::pg_query::ListenStmt* listen_stmt) { clear_node(); if (listen_stmt) { set_has_listen_stmt(); node_.listen_stmt_ = listen_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.listen_stmt) } inline ::pg_query::ListenStmt* Node::_internal_mutable_listen_stmt() { if (!_internal_has_listen_stmt()) { clear_node(); set_has_listen_stmt(); node_.listen_stmt_ = CreateMaybeMessage< ::pg_query::ListenStmt >(GetArena()); } return node_.listen_stmt_; } inline ::pg_query::ListenStmt* Node::mutable_listen_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.listen_stmt) return _internal_mutable_listen_stmt(); } // .pg_query.UnlistenStmt unlisten_stmt = 82 [json_name = "UnlistenStmt"]; inline bool Node::_internal_has_unlisten_stmt() const { return node_case() == kUnlistenStmt; } inline bool Node::has_unlisten_stmt() const { return _internal_has_unlisten_stmt(); } inline void Node::set_has_unlisten_stmt() { _oneof_case_[0] = kUnlistenStmt; } inline void Node::clear_unlisten_stmt() { if (_internal_has_unlisten_stmt()) { if (GetArena() == nullptr) { delete node_.unlisten_stmt_; } clear_has_node(); } } inline ::pg_query::UnlistenStmt* Node::release_unlisten_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.unlisten_stmt) if (_internal_has_unlisten_stmt()) { clear_has_node(); ::pg_query::UnlistenStmt* temp = node_.unlisten_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.unlisten_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::UnlistenStmt& Node::_internal_unlisten_stmt() const { return _internal_has_unlisten_stmt() ? *node_.unlisten_stmt_ : reinterpret_cast< ::pg_query::UnlistenStmt&>(::pg_query::_UnlistenStmt_default_instance_); } inline const ::pg_query::UnlistenStmt& Node::unlisten_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.unlisten_stmt) return _internal_unlisten_stmt(); } inline ::pg_query::UnlistenStmt* Node::unsafe_arena_release_unlisten_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.unlisten_stmt) if (_internal_has_unlisten_stmt()) { clear_has_node(); ::pg_query::UnlistenStmt* temp = node_.unlisten_stmt_; node_.unlisten_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_unlisten_stmt(::pg_query::UnlistenStmt* unlisten_stmt) { clear_node(); if (unlisten_stmt) { set_has_unlisten_stmt(); node_.unlisten_stmt_ = unlisten_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.unlisten_stmt) } inline ::pg_query::UnlistenStmt* Node::_internal_mutable_unlisten_stmt() { if (!_internal_has_unlisten_stmt()) { clear_node(); set_has_unlisten_stmt(); node_.unlisten_stmt_ = CreateMaybeMessage< ::pg_query::UnlistenStmt >(GetArena()); } return node_.unlisten_stmt_; } inline ::pg_query::UnlistenStmt* Node::mutable_unlisten_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.unlisten_stmt) return _internal_mutable_unlisten_stmt(); } // .pg_query.TransactionStmt transaction_stmt = 83 [json_name = "TransactionStmt"]; inline bool Node::_internal_has_transaction_stmt() const { return node_case() == kTransactionStmt; } inline bool Node::has_transaction_stmt() const { return _internal_has_transaction_stmt(); } inline void Node::set_has_transaction_stmt() { _oneof_case_[0] = kTransactionStmt; } inline void Node::clear_transaction_stmt() { if (_internal_has_transaction_stmt()) { if (GetArena() == nullptr) { delete node_.transaction_stmt_; } clear_has_node(); } } inline ::pg_query::TransactionStmt* Node::release_transaction_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.transaction_stmt) if (_internal_has_transaction_stmt()) { clear_has_node(); ::pg_query::TransactionStmt* temp = node_.transaction_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.transaction_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TransactionStmt& Node::_internal_transaction_stmt() const { return _internal_has_transaction_stmt() ? *node_.transaction_stmt_ : reinterpret_cast< ::pg_query::TransactionStmt&>(::pg_query::_TransactionStmt_default_instance_); } inline const ::pg_query::TransactionStmt& Node::transaction_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.transaction_stmt) return _internal_transaction_stmt(); } inline ::pg_query::TransactionStmt* Node::unsafe_arena_release_transaction_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.transaction_stmt) if (_internal_has_transaction_stmt()) { clear_has_node(); ::pg_query::TransactionStmt* temp = node_.transaction_stmt_; node_.transaction_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_transaction_stmt(::pg_query::TransactionStmt* transaction_stmt) { clear_node(); if (transaction_stmt) { set_has_transaction_stmt(); node_.transaction_stmt_ = transaction_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.transaction_stmt) } inline ::pg_query::TransactionStmt* Node::_internal_mutable_transaction_stmt() { if (!_internal_has_transaction_stmt()) { clear_node(); set_has_transaction_stmt(); node_.transaction_stmt_ = CreateMaybeMessage< ::pg_query::TransactionStmt >(GetArena()); } return node_.transaction_stmt_; } inline ::pg_query::TransactionStmt* Node::mutable_transaction_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.transaction_stmt) return _internal_mutable_transaction_stmt(); } // .pg_query.ViewStmt view_stmt = 84 [json_name = "ViewStmt"]; inline bool Node::_internal_has_view_stmt() const { return node_case() == kViewStmt; } inline bool Node::has_view_stmt() const { return _internal_has_view_stmt(); } inline void Node::set_has_view_stmt() { _oneof_case_[0] = kViewStmt; } inline void Node::clear_view_stmt() { if (_internal_has_view_stmt()) { if (GetArena() == nullptr) { delete node_.view_stmt_; } clear_has_node(); } } inline ::pg_query::ViewStmt* Node::release_view_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.view_stmt) if (_internal_has_view_stmt()) { clear_has_node(); ::pg_query::ViewStmt* temp = node_.view_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.view_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ViewStmt& Node::_internal_view_stmt() const { return _internal_has_view_stmt() ? *node_.view_stmt_ : reinterpret_cast< ::pg_query::ViewStmt&>(::pg_query::_ViewStmt_default_instance_); } inline const ::pg_query::ViewStmt& Node::view_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.view_stmt) return _internal_view_stmt(); } inline ::pg_query::ViewStmt* Node::unsafe_arena_release_view_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.view_stmt) if (_internal_has_view_stmt()) { clear_has_node(); ::pg_query::ViewStmt* temp = node_.view_stmt_; node_.view_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_view_stmt(::pg_query::ViewStmt* view_stmt) { clear_node(); if (view_stmt) { set_has_view_stmt(); node_.view_stmt_ = view_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.view_stmt) } inline ::pg_query::ViewStmt* Node::_internal_mutable_view_stmt() { if (!_internal_has_view_stmt()) { clear_node(); set_has_view_stmt(); node_.view_stmt_ = CreateMaybeMessage< ::pg_query::ViewStmt >(GetArena()); } return node_.view_stmt_; } inline ::pg_query::ViewStmt* Node::mutable_view_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.view_stmt) return _internal_mutable_view_stmt(); } // .pg_query.LoadStmt load_stmt = 85 [json_name = "LoadStmt"]; inline bool Node::_internal_has_load_stmt() const { return node_case() == kLoadStmt; } inline bool Node::has_load_stmt() const { return _internal_has_load_stmt(); } inline void Node::set_has_load_stmt() { _oneof_case_[0] = kLoadStmt; } inline void Node::clear_load_stmt() { if (_internal_has_load_stmt()) { if (GetArena() == nullptr) { delete node_.load_stmt_; } clear_has_node(); } } inline ::pg_query::LoadStmt* Node::release_load_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.load_stmt) if (_internal_has_load_stmt()) { clear_has_node(); ::pg_query::LoadStmt* temp = node_.load_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.load_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::LoadStmt& Node::_internal_load_stmt() const { return _internal_has_load_stmt() ? *node_.load_stmt_ : reinterpret_cast< ::pg_query::LoadStmt&>(::pg_query::_LoadStmt_default_instance_); } inline const ::pg_query::LoadStmt& Node::load_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.load_stmt) return _internal_load_stmt(); } inline ::pg_query::LoadStmt* Node::unsafe_arena_release_load_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.load_stmt) if (_internal_has_load_stmt()) { clear_has_node(); ::pg_query::LoadStmt* temp = node_.load_stmt_; node_.load_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_load_stmt(::pg_query::LoadStmt* load_stmt) { clear_node(); if (load_stmt) { set_has_load_stmt(); node_.load_stmt_ = load_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.load_stmt) } inline ::pg_query::LoadStmt* Node::_internal_mutable_load_stmt() { if (!_internal_has_load_stmt()) { clear_node(); set_has_load_stmt(); node_.load_stmt_ = CreateMaybeMessage< ::pg_query::LoadStmt >(GetArena()); } return node_.load_stmt_; } inline ::pg_query::LoadStmt* Node::mutable_load_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.load_stmt) return _internal_mutable_load_stmt(); } // .pg_query.CreateDomainStmt create_domain_stmt = 86 [json_name = "CreateDomainStmt"]; inline bool Node::_internal_has_create_domain_stmt() const { return node_case() == kCreateDomainStmt; } inline bool Node::has_create_domain_stmt() const { return _internal_has_create_domain_stmt(); } inline void Node::set_has_create_domain_stmt() { _oneof_case_[0] = kCreateDomainStmt; } inline void Node::clear_create_domain_stmt() { if (_internal_has_create_domain_stmt()) { if (GetArena() == nullptr) { delete node_.create_domain_stmt_; } clear_has_node(); } } inline ::pg_query::CreateDomainStmt* Node::release_create_domain_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_domain_stmt) if (_internal_has_create_domain_stmt()) { clear_has_node(); ::pg_query::CreateDomainStmt* temp = node_.create_domain_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_domain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateDomainStmt& Node::_internal_create_domain_stmt() const { return _internal_has_create_domain_stmt() ? *node_.create_domain_stmt_ : reinterpret_cast< ::pg_query::CreateDomainStmt&>(::pg_query::_CreateDomainStmt_default_instance_); } inline const ::pg_query::CreateDomainStmt& Node::create_domain_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_domain_stmt) return _internal_create_domain_stmt(); } inline ::pg_query::CreateDomainStmt* Node::unsafe_arena_release_create_domain_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_domain_stmt) if (_internal_has_create_domain_stmt()) { clear_has_node(); ::pg_query::CreateDomainStmt* temp = node_.create_domain_stmt_; node_.create_domain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_domain_stmt(::pg_query::CreateDomainStmt* create_domain_stmt) { clear_node(); if (create_domain_stmt) { set_has_create_domain_stmt(); node_.create_domain_stmt_ = create_domain_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_domain_stmt) } inline ::pg_query::CreateDomainStmt* Node::_internal_mutable_create_domain_stmt() { if (!_internal_has_create_domain_stmt()) { clear_node(); set_has_create_domain_stmt(); node_.create_domain_stmt_ = CreateMaybeMessage< ::pg_query::CreateDomainStmt >(GetArena()); } return node_.create_domain_stmt_; } inline ::pg_query::CreateDomainStmt* Node::mutable_create_domain_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_domain_stmt) return _internal_mutable_create_domain_stmt(); } // .pg_query.CreatedbStmt createdb_stmt = 87 [json_name = "CreatedbStmt"]; inline bool Node::_internal_has_createdb_stmt() const { return node_case() == kCreatedbStmt; } inline bool Node::has_createdb_stmt() const { return _internal_has_createdb_stmt(); } inline void Node::set_has_createdb_stmt() { _oneof_case_[0] = kCreatedbStmt; } inline void Node::clear_createdb_stmt() { if (_internal_has_createdb_stmt()) { if (GetArena() == nullptr) { delete node_.createdb_stmt_; } clear_has_node(); } } inline ::pg_query::CreatedbStmt* Node::release_createdb_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.createdb_stmt) if (_internal_has_createdb_stmt()) { clear_has_node(); ::pg_query::CreatedbStmt* temp = node_.createdb_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.createdb_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreatedbStmt& Node::_internal_createdb_stmt() const { return _internal_has_createdb_stmt() ? *node_.createdb_stmt_ : reinterpret_cast< ::pg_query::CreatedbStmt&>(::pg_query::_CreatedbStmt_default_instance_); } inline const ::pg_query::CreatedbStmt& Node::createdb_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.createdb_stmt) return _internal_createdb_stmt(); } inline ::pg_query::CreatedbStmt* Node::unsafe_arena_release_createdb_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.createdb_stmt) if (_internal_has_createdb_stmt()) { clear_has_node(); ::pg_query::CreatedbStmt* temp = node_.createdb_stmt_; node_.createdb_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_createdb_stmt(::pg_query::CreatedbStmt* createdb_stmt) { clear_node(); if (createdb_stmt) { set_has_createdb_stmt(); node_.createdb_stmt_ = createdb_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.createdb_stmt) } inline ::pg_query::CreatedbStmt* Node::_internal_mutable_createdb_stmt() { if (!_internal_has_createdb_stmt()) { clear_node(); set_has_createdb_stmt(); node_.createdb_stmt_ = CreateMaybeMessage< ::pg_query::CreatedbStmt >(GetArena()); } return node_.createdb_stmt_; } inline ::pg_query::CreatedbStmt* Node::mutable_createdb_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.createdb_stmt) return _internal_mutable_createdb_stmt(); } // .pg_query.DropdbStmt dropdb_stmt = 88 [json_name = "DropdbStmt"]; inline bool Node::_internal_has_dropdb_stmt() const { return node_case() == kDropdbStmt; } inline bool Node::has_dropdb_stmt() const { return _internal_has_dropdb_stmt(); } inline void Node::set_has_dropdb_stmt() { _oneof_case_[0] = kDropdbStmt; } inline void Node::clear_dropdb_stmt() { if (_internal_has_dropdb_stmt()) { if (GetArena() == nullptr) { delete node_.dropdb_stmt_; } clear_has_node(); } } inline ::pg_query::DropdbStmt* Node::release_dropdb_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.dropdb_stmt) if (_internal_has_dropdb_stmt()) { clear_has_node(); ::pg_query::DropdbStmt* temp = node_.dropdb_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.dropdb_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropdbStmt& Node::_internal_dropdb_stmt() const { return _internal_has_dropdb_stmt() ? *node_.dropdb_stmt_ : reinterpret_cast< ::pg_query::DropdbStmt&>(::pg_query::_DropdbStmt_default_instance_); } inline const ::pg_query::DropdbStmt& Node::dropdb_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.dropdb_stmt) return _internal_dropdb_stmt(); } inline ::pg_query::DropdbStmt* Node::unsafe_arena_release_dropdb_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.dropdb_stmt) if (_internal_has_dropdb_stmt()) { clear_has_node(); ::pg_query::DropdbStmt* temp = node_.dropdb_stmt_; node_.dropdb_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_dropdb_stmt(::pg_query::DropdbStmt* dropdb_stmt) { clear_node(); if (dropdb_stmt) { set_has_dropdb_stmt(); node_.dropdb_stmt_ = dropdb_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.dropdb_stmt) } inline ::pg_query::DropdbStmt* Node::_internal_mutable_dropdb_stmt() { if (!_internal_has_dropdb_stmt()) { clear_node(); set_has_dropdb_stmt(); node_.dropdb_stmt_ = CreateMaybeMessage< ::pg_query::DropdbStmt >(GetArena()); } return node_.dropdb_stmt_; } inline ::pg_query::DropdbStmt* Node::mutable_dropdb_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.dropdb_stmt) return _internal_mutable_dropdb_stmt(); } // .pg_query.VacuumStmt vacuum_stmt = 89 [json_name = "VacuumStmt"]; inline bool Node::_internal_has_vacuum_stmt() const { return node_case() == kVacuumStmt; } inline bool Node::has_vacuum_stmt() const { return _internal_has_vacuum_stmt(); } inline void Node::set_has_vacuum_stmt() { _oneof_case_[0] = kVacuumStmt; } inline void Node::clear_vacuum_stmt() { if (_internal_has_vacuum_stmt()) { if (GetArena() == nullptr) { delete node_.vacuum_stmt_; } clear_has_node(); } } inline ::pg_query::VacuumStmt* Node::release_vacuum_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.vacuum_stmt) if (_internal_has_vacuum_stmt()) { clear_has_node(); ::pg_query::VacuumStmt* temp = node_.vacuum_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.vacuum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::VacuumStmt& Node::_internal_vacuum_stmt() const { return _internal_has_vacuum_stmt() ? *node_.vacuum_stmt_ : reinterpret_cast< ::pg_query::VacuumStmt&>(::pg_query::_VacuumStmt_default_instance_); } inline const ::pg_query::VacuumStmt& Node::vacuum_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.vacuum_stmt) return _internal_vacuum_stmt(); } inline ::pg_query::VacuumStmt* Node::unsafe_arena_release_vacuum_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.vacuum_stmt) if (_internal_has_vacuum_stmt()) { clear_has_node(); ::pg_query::VacuumStmt* temp = node_.vacuum_stmt_; node_.vacuum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_vacuum_stmt(::pg_query::VacuumStmt* vacuum_stmt) { clear_node(); if (vacuum_stmt) { set_has_vacuum_stmt(); node_.vacuum_stmt_ = vacuum_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.vacuum_stmt) } inline ::pg_query::VacuumStmt* Node::_internal_mutable_vacuum_stmt() { if (!_internal_has_vacuum_stmt()) { clear_node(); set_has_vacuum_stmt(); node_.vacuum_stmt_ = CreateMaybeMessage< ::pg_query::VacuumStmt >(GetArena()); } return node_.vacuum_stmt_; } inline ::pg_query::VacuumStmt* Node::mutable_vacuum_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.vacuum_stmt) return _internal_mutable_vacuum_stmt(); } // .pg_query.ExplainStmt explain_stmt = 90 [json_name = "ExplainStmt"]; inline bool Node::_internal_has_explain_stmt() const { return node_case() == kExplainStmt; } inline bool Node::has_explain_stmt() const { return _internal_has_explain_stmt(); } inline void Node::set_has_explain_stmt() { _oneof_case_[0] = kExplainStmt; } inline void Node::clear_explain_stmt() { if (_internal_has_explain_stmt()) { if (GetArena() == nullptr) { delete node_.explain_stmt_; } clear_has_node(); } } inline ::pg_query::ExplainStmt* Node::release_explain_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.explain_stmt) if (_internal_has_explain_stmt()) { clear_has_node(); ::pg_query::ExplainStmt* temp = node_.explain_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.explain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ExplainStmt& Node::_internal_explain_stmt() const { return _internal_has_explain_stmt() ? *node_.explain_stmt_ : reinterpret_cast< ::pg_query::ExplainStmt&>(::pg_query::_ExplainStmt_default_instance_); } inline const ::pg_query::ExplainStmt& Node::explain_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.explain_stmt) return _internal_explain_stmt(); } inline ::pg_query::ExplainStmt* Node::unsafe_arena_release_explain_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.explain_stmt) if (_internal_has_explain_stmt()) { clear_has_node(); ::pg_query::ExplainStmt* temp = node_.explain_stmt_; node_.explain_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_explain_stmt(::pg_query::ExplainStmt* explain_stmt) { clear_node(); if (explain_stmt) { set_has_explain_stmt(); node_.explain_stmt_ = explain_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.explain_stmt) } inline ::pg_query::ExplainStmt* Node::_internal_mutable_explain_stmt() { if (!_internal_has_explain_stmt()) { clear_node(); set_has_explain_stmt(); node_.explain_stmt_ = CreateMaybeMessage< ::pg_query::ExplainStmt >(GetArena()); } return node_.explain_stmt_; } inline ::pg_query::ExplainStmt* Node::mutable_explain_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.explain_stmt) return _internal_mutable_explain_stmt(); } // .pg_query.CreateTableAsStmt create_table_as_stmt = 91 [json_name = "CreateTableAsStmt"]; inline bool Node::_internal_has_create_table_as_stmt() const { return node_case() == kCreateTableAsStmt; } inline bool Node::has_create_table_as_stmt() const { return _internal_has_create_table_as_stmt(); } inline void Node::set_has_create_table_as_stmt() { _oneof_case_[0] = kCreateTableAsStmt; } inline void Node::clear_create_table_as_stmt() { if (_internal_has_create_table_as_stmt()) { if (GetArena() == nullptr) { delete node_.create_table_as_stmt_; } clear_has_node(); } } inline ::pg_query::CreateTableAsStmt* Node::release_create_table_as_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_table_as_stmt) if (_internal_has_create_table_as_stmt()) { clear_has_node(); ::pg_query::CreateTableAsStmt* temp = node_.create_table_as_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_table_as_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateTableAsStmt& Node::_internal_create_table_as_stmt() const { return _internal_has_create_table_as_stmt() ? *node_.create_table_as_stmt_ : reinterpret_cast< ::pg_query::CreateTableAsStmt&>(::pg_query::_CreateTableAsStmt_default_instance_); } inline const ::pg_query::CreateTableAsStmt& Node::create_table_as_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_table_as_stmt) return _internal_create_table_as_stmt(); } inline ::pg_query::CreateTableAsStmt* Node::unsafe_arena_release_create_table_as_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_table_as_stmt) if (_internal_has_create_table_as_stmt()) { clear_has_node(); ::pg_query::CreateTableAsStmt* temp = node_.create_table_as_stmt_; node_.create_table_as_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_table_as_stmt(::pg_query::CreateTableAsStmt* create_table_as_stmt) { clear_node(); if (create_table_as_stmt) { set_has_create_table_as_stmt(); node_.create_table_as_stmt_ = create_table_as_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_table_as_stmt) } inline ::pg_query::CreateTableAsStmt* Node::_internal_mutable_create_table_as_stmt() { if (!_internal_has_create_table_as_stmt()) { clear_node(); set_has_create_table_as_stmt(); node_.create_table_as_stmt_ = CreateMaybeMessage< ::pg_query::CreateTableAsStmt >(GetArena()); } return node_.create_table_as_stmt_; } inline ::pg_query::CreateTableAsStmt* Node::mutable_create_table_as_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_table_as_stmt) return _internal_mutable_create_table_as_stmt(); } // .pg_query.CreateSeqStmt create_seq_stmt = 92 [json_name = "CreateSeqStmt"]; inline bool Node::_internal_has_create_seq_stmt() const { return node_case() == kCreateSeqStmt; } inline bool Node::has_create_seq_stmt() const { return _internal_has_create_seq_stmt(); } inline void Node::set_has_create_seq_stmt() { _oneof_case_[0] = kCreateSeqStmt; } inline void Node::clear_create_seq_stmt() { if (_internal_has_create_seq_stmt()) { if (GetArena() == nullptr) { delete node_.create_seq_stmt_; } clear_has_node(); } } inline ::pg_query::CreateSeqStmt* Node::release_create_seq_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_seq_stmt) if (_internal_has_create_seq_stmt()) { clear_has_node(); ::pg_query::CreateSeqStmt* temp = node_.create_seq_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_seq_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateSeqStmt& Node::_internal_create_seq_stmt() const { return _internal_has_create_seq_stmt() ? *node_.create_seq_stmt_ : reinterpret_cast< ::pg_query::CreateSeqStmt&>(::pg_query::_CreateSeqStmt_default_instance_); } inline const ::pg_query::CreateSeqStmt& Node::create_seq_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_seq_stmt) return _internal_create_seq_stmt(); } inline ::pg_query::CreateSeqStmt* Node::unsafe_arena_release_create_seq_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_seq_stmt) if (_internal_has_create_seq_stmt()) { clear_has_node(); ::pg_query::CreateSeqStmt* temp = node_.create_seq_stmt_; node_.create_seq_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_seq_stmt(::pg_query::CreateSeqStmt* create_seq_stmt) { clear_node(); if (create_seq_stmt) { set_has_create_seq_stmt(); node_.create_seq_stmt_ = create_seq_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_seq_stmt) } inline ::pg_query::CreateSeqStmt* Node::_internal_mutable_create_seq_stmt() { if (!_internal_has_create_seq_stmt()) { clear_node(); set_has_create_seq_stmt(); node_.create_seq_stmt_ = CreateMaybeMessage< ::pg_query::CreateSeqStmt >(GetArena()); } return node_.create_seq_stmt_; } inline ::pg_query::CreateSeqStmt* Node::mutable_create_seq_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_seq_stmt) return _internal_mutable_create_seq_stmt(); } // .pg_query.AlterSeqStmt alter_seq_stmt = 93 [json_name = "AlterSeqStmt"]; inline bool Node::_internal_has_alter_seq_stmt() const { return node_case() == kAlterSeqStmt; } inline bool Node::has_alter_seq_stmt() const { return _internal_has_alter_seq_stmt(); } inline void Node::set_has_alter_seq_stmt() { _oneof_case_[0] = kAlterSeqStmt; } inline void Node::clear_alter_seq_stmt() { if (_internal_has_alter_seq_stmt()) { if (GetArena() == nullptr) { delete node_.alter_seq_stmt_; } clear_has_node(); } } inline ::pg_query::AlterSeqStmt* Node::release_alter_seq_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_seq_stmt) if (_internal_has_alter_seq_stmt()) { clear_has_node(); ::pg_query::AlterSeqStmt* temp = node_.alter_seq_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_seq_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterSeqStmt& Node::_internal_alter_seq_stmt() const { return _internal_has_alter_seq_stmt() ? *node_.alter_seq_stmt_ : reinterpret_cast< ::pg_query::AlterSeqStmt&>(::pg_query::_AlterSeqStmt_default_instance_); } inline const ::pg_query::AlterSeqStmt& Node::alter_seq_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_seq_stmt) return _internal_alter_seq_stmt(); } inline ::pg_query::AlterSeqStmt* Node::unsafe_arena_release_alter_seq_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_seq_stmt) if (_internal_has_alter_seq_stmt()) { clear_has_node(); ::pg_query::AlterSeqStmt* temp = node_.alter_seq_stmt_; node_.alter_seq_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_seq_stmt(::pg_query::AlterSeqStmt* alter_seq_stmt) { clear_node(); if (alter_seq_stmt) { set_has_alter_seq_stmt(); node_.alter_seq_stmt_ = alter_seq_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_seq_stmt) } inline ::pg_query::AlterSeqStmt* Node::_internal_mutable_alter_seq_stmt() { if (!_internal_has_alter_seq_stmt()) { clear_node(); set_has_alter_seq_stmt(); node_.alter_seq_stmt_ = CreateMaybeMessage< ::pg_query::AlterSeqStmt >(GetArena()); } return node_.alter_seq_stmt_; } inline ::pg_query::AlterSeqStmt* Node::mutable_alter_seq_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_seq_stmt) return _internal_mutable_alter_seq_stmt(); } // .pg_query.VariableSetStmt variable_set_stmt = 94 [json_name = "VariableSetStmt"]; inline bool Node::_internal_has_variable_set_stmt() const { return node_case() == kVariableSetStmt; } inline bool Node::has_variable_set_stmt() const { return _internal_has_variable_set_stmt(); } inline void Node::set_has_variable_set_stmt() { _oneof_case_[0] = kVariableSetStmt; } inline void Node::clear_variable_set_stmt() { if (_internal_has_variable_set_stmt()) { if (GetArena() == nullptr) { delete node_.variable_set_stmt_; } clear_has_node(); } } inline ::pg_query::VariableSetStmt* Node::release_variable_set_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.variable_set_stmt) if (_internal_has_variable_set_stmt()) { clear_has_node(); ::pg_query::VariableSetStmt* temp = node_.variable_set_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.variable_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::VariableSetStmt& Node::_internal_variable_set_stmt() const { return _internal_has_variable_set_stmt() ? *node_.variable_set_stmt_ : reinterpret_cast< ::pg_query::VariableSetStmt&>(::pg_query::_VariableSetStmt_default_instance_); } inline const ::pg_query::VariableSetStmt& Node::variable_set_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.variable_set_stmt) return _internal_variable_set_stmt(); } inline ::pg_query::VariableSetStmt* Node::unsafe_arena_release_variable_set_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.variable_set_stmt) if (_internal_has_variable_set_stmt()) { clear_has_node(); ::pg_query::VariableSetStmt* temp = node_.variable_set_stmt_; node_.variable_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_variable_set_stmt(::pg_query::VariableSetStmt* variable_set_stmt) { clear_node(); if (variable_set_stmt) { set_has_variable_set_stmt(); node_.variable_set_stmt_ = variable_set_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.variable_set_stmt) } inline ::pg_query::VariableSetStmt* Node::_internal_mutable_variable_set_stmt() { if (!_internal_has_variable_set_stmt()) { clear_node(); set_has_variable_set_stmt(); node_.variable_set_stmt_ = CreateMaybeMessage< ::pg_query::VariableSetStmt >(GetArena()); } return node_.variable_set_stmt_; } inline ::pg_query::VariableSetStmt* Node::mutable_variable_set_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.variable_set_stmt) return _internal_mutable_variable_set_stmt(); } // .pg_query.VariableShowStmt variable_show_stmt = 95 [json_name = "VariableShowStmt"]; inline bool Node::_internal_has_variable_show_stmt() const { return node_case() == kVariableShowStmt; } inline bool Node::has_variable_show_stmt() const { return _internal_has_variable_show_stmt(); } inline void Node::set_has_variable_show_stmt() { _oneof_case_[0] = kVariableShowStmt; } inline void Node::clear_variable_show_stmt() { if (_internal_has_variable_show_stmt()) { if (GetArena() == nullptr) { delete node_.variable_show_stmt_; } clear_has_node(); } } inline ::pg_query::VariableShowStmt* Node::release_variable_show_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.variable_show_stmt) if (_internal_has_variable_show_stmt()) { clear_has_node(); ::pg_query::VariableShowStmt* temp = node_.variable_show_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.variable_show_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::VariableShowStmt& Node::_internal_variable_show_stmt() const { return _internal_has_variable_show_stmt() ? *node_.variable_show_stmt_ : reinterpret_cast< ::pg_query::VariableShowStmt&>(::pg_query::_VariableShowStmt_default_instance_); } inline const ::pg_query::VariableShowStmt& Node::variable_show_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.variable_show_stmt) return _internal_variable_show_stmt(); } inline ::pg_query::VariableShowStmt* Node::unsafe_arena_release_variable_show_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.variable_show_stmt) if (_internal_has_variable_show_stmt()) { clear_has_node(); ::pg_query::VariableShowStmt* temp = node_.variable_show_stmt_; node_.variable_show_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_variable_show_stmt(::pg_query::VariableShowStmt* variable_show_stmt) { clear_node(); if (variable_show_stmt) { set_has_variable_show_stmt(); node_.variable_show_stmt_ = variable_show_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.variable_show_stmt) } inline ::pg_query::VariableShowStmt* Node::_internal_mutable_variable_show_stmt() { if (!_internal_has_variable_show_stmt()) { clear_node(); set_has_variable_show_stmt(); node_.variable_show_stmt_ = CreateMaybeMessage< ::pg_query::VariableShowStmt >(GetArena()); } return node_.variable_show_stmt_; } inline ::pg_query::VariableShowStmt* Node::mutable_variable_show_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.variable_show_stmt) return _internal_mutable_variable_show_stmt(); } // .pg_query.DiscardStmt discard_stmt = 96 [json_name = "DiscardStmt"]; inline bool Node::_internal_has_discard_stmt() const { return node_case() == kDiscardStmt; } inline bool Node::has_discard_stmt() const { return _internal_has_discard_stmt(); } inline void Node::set_has_discard_stmt() { _oneof_case_[0] = kDiscardStmt; } inline void Node::clear_discard_stmt() { if (_internal_has_discard_stmt()) { if (GetArena() == nullptr) { delete node_.discard_stmt_; } clear_has_node(); } } inline ::pg_query::DiscardStmt* Node::release_discard_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.discard_stmt) if (_internal_has_discard_stmt()) { clear_has_node(); ::pg_query::DiscardStmt* temp = node_.discard_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.discard_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DiscardStmt& Node::_internal_discard_stmt() const { return _internal_has_discard_stmt() ? *node_.discard_stmt_ : reinterpret_cast< ::pg_query::DiscardStmt&>(::pg_query::_DiscardStmt_default_instance_); } inline const ::pg_query::DiscardStmt& Node::discard_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.discard_stmt) return _internal_discard_stmt(); } inline ::pg_query::DiscardStmt* Node::unsafe_arena_release_discard_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.discard_stmt) if (_internal_has_discard_stmt()) { clear_has_node(); ::pg_query::DiscardStmt* temp = node_.discard_stmt_; node_.discard_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_discard_stmt(::pg_query::DiscardStmt* discard_stmt) { clear_node(); if (discard_stmt) { set_has_discard_stmt(); node_.discard_stmt_ = discard_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.discard_stmt) } inline ::pg_query::DiscardStmt* Node::_internal_mutable_discard_stmt() { if (!_internal_has_discard_stmt()) { clear_node(); set_has_discard_stmt(); node_.discard_stmt_ = CreateMaybeMessage< ::pg_query::DiscardStmt >(GetArena()); } return node_.discard_stmt_; } inline ::pg_query::DiscardStmt* Node::mutable_discard_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.discard_stmt) return _internal_mutable_discard_stmt(); } // .pg_query.CreateTrigStmt create_trig_stmt = 97 [json_name = "CreateTrigStmt"]; inline bool Node::_internal_has_create_trig_stmt() const { return node_case() == kCreateTrigStmt; } inline bool Node::has_create_trig_stmt() const { return _internal_has_create_trig_stmt(); } inline void Node::set_has_create_trig_stmt() { _oneof_case_[0] = kCreateTrigStmt; } inline void Node::clear_create_trig_stmt() { if (_internal_has_create_trig_stmt()) { if (GetArena() == nullptr) { delete node_.create_trig_stmt_; } clear_has_node(); } } inline ::pg_query::CreateTrigStmt* Node::release_create_trig_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_trig_stmt) if (_internal_has_create_trig_stmt()) { clear_has_node(); ::pg_query::CreateTrigStmt* temp = node_.create_trig_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_trig_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateTrigStmt& Node::_internal_create_trig_stmt() const { return _internal_has_create_trig_stmt() ? *node_.create_trig_stmt_ : reinterpret_cast< ::pg_query::CreateTrigStmt&>(::pg_query::_CreateTrigStmt_default_instance_); } inline const ::pg_query::CreateTrigStmt& Node::create_trig_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_trig_stmt) return _internal_create_trig_stmt(); } inline ::pg_query::CreateTrigStmt* Node::unsafe_arena_release_create_trig_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_trig_stmt) if (_internal_has_create_trig_stmt()) { clear_has_node(); ::pg_query::CreateTrigStmt* temp = node_.create_trig_stmt_; node_.create_trig_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_trig_stmt(::pg_query::CreateTrigStmt* create_trig_stmt) { clear_node(); if (create_trig_stmt) { set_has_create_trig_stmt(); node_.create_trig_stmt_ = create_trig_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_trig_stmt) } inline ::pg_query::CreateTrigStmt* Node::_internal_mutable_create_trig_stmt() { if (!_internal_has_create_trig_stmt()) { clear_node(); set_has_create_trig_stmt(); node_.create_trig_stmt_ = CreateMaybeMessage< ::pg_query::CreateTrigStmt >(GetArena()); } return node_.create_trig_stmt_; } inline ::pg_query::CreateTrigStmt* Node::mutable_create_trig_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_trig_stmt) return _internal_mutable_create_trig_stmt(); } // .pg_query.CreatePLangStmt create_plang_stmt = 98 [json_name = "CreatePLangStmt"]; inline bool Node::_internal_has_create_plang_stmt() const { return node_case() == kCreatePlangStmt; } inline bool Node::has_create_plang_stmt() const { return _internal_has_create_plang_stmt(); } inline void Node::set_has_create_plang_stmt() { _oneof_case_[0] = kCreatePlangStmt; } inline void Node::clear_create_plang_stmt() { if (_internal_has_create_plang_stmt()) { if (GetArena() == nullptr) { delete node_.create_plang_stmt_; } clear_has_node(); } } inline ::pg_query::CreatePLangStmt* Node::release_create_plang_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_plang_stmt) if (_internal_has_create_plang_stmt()) { clear_has_node(); ::pg_query::CreatePLangStmt* temp = node_.create_plang_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_plang_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreatePLangStmt& Node::_internal_create_plang_stmt() const { return _internal_has_create_plang_stmt() ? *node_.create_plang_stmt_ : reinterpret_cast< ::pg_query::CreatePLangStmt&>(::pg_query::_CreatePLangStmt_default_instance_); } inline const ::pg_query::CreatePLangStmt& Node::create_plang_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_plang_stmt) return _internal_create_plang_stmt(); } inline ::pg_query::CreatePLangStmt* Node::unsafe_arena_release_create_plang_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_plang_stmt) if (_internal_has_create_plang_stmt()) { clear_has_node(); ::pg_query::CreatePLangStmt* temp = node_.create_plang_stmt_; node_.create_plang_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_plang_stmt(::pg_query::CreatePLangStmt* create_plang_stmt) { clear_node(); if (create_plang_stmt) { set_has_create_plang_stmt(); node_.create_plang_stmt_ = create_plang_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_plang_stmt) } inline ::pg_query::CreatePLangStmt* Node::_internal_mutable_create_plang_stmt() { if (!_internal_has_create_plang_stmt()) { clear_node(); set_has_create_plang_stmt(); node_.create_plang_stmt_ = CreateMaybeMessage< ::pg_query::CreatePLangStmt >(GetArena()); } return node_.create_plang_stmt_; } inline ::pg_query::CreatePLangStmt* Node::mutable_create_plang_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_plang_stmt) return _internal_mutable_create_plang_stmt(); } // .pg_query.CreateRoleStmt create_role_stmt = 99 [json_name = "CreateRoleStmt"]; inline bool Node::_internal_has_create_role_stmt() const { return node_case() == kCreateRoleStmt; } inline bool Node::has_create_role_stmt() const { return _internal_has_create_role_stmt(); } inline void Node::set_has_create_role_stmt() { _oneof_case_[0] = kCreateRoleStmt; } inline void Node::clear_create_role_stmt() { if (_internal_has_create_role_stmt()) { if (GetArena() == nullptr) { delete node_.create_role_stmt_; } clear_has_node(); } } inline ::pg_query::CreateRoleStmt* Node::release_create_role_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_role_stmt) if (_internal_has_create_role_stmt()) { clear_has_node(); ::pg_query::CreateRoleStmt* temp = node_.create_role_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateRoleStmt& Node::_internal_create_role_stmt() const { return _internal_has_create_role_stmt() ? *node_.create_role_stmt_ : reinterpret_cast< ::pg_query::CreateRoleStmt&>(::pg_query::_CreateRoleStmt_default_instance_); } inline const ::pg_query::CreateRoleStmt& Node::create_role_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_role_stmt) return _internal_create_role_stmt(); } inline ::pg_query::CreateRoleStmt* Node::unsafe_arena_release_create_role_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_role_stmt) if (_internal_has_create_role_stmt()) { clear_has_node(); ::pg_query::CreateRoleStmt* temp = node_.create_role_stmt_; node_.create_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_role_stmt(::pg_query::CreateRoleStmt* create_role_stmt) { clear_node(); if (create_role_stmt) { set_has_create_role_stmt(); node_.create_role_stmt_ = create_role_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_role_stmt) } inline ::pg_query::CreateRoleStmt* Node::_internal_mutable_create_role_stmt() { if (!_internal_has_create_role_stmt()) { clear_node(); set_has_create_role_stmt(); node_.create_role_stmt_ = CreateMaybeMessage< ::pg_query::CreateRoleStmt >(GetArena()); } return node_.create_role_stmt_; } inline ::pg_query::CreateRoleStmt* Node::mutable_create_role_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_role_stmt) return _internal_mutable_create_role_stmt(); } // .pg_query.AlterRoleStmt alter_role_stmt = 100 [json_name = "AlterRoleStmt"]; inline bool Node::_internal_has_alter_role_stmt() const { return node_case() == kAlterRoleStmt; } inline bool Node::has_alter_role_stmt() const { return _internal_has_alter_role_stmt(); } inline void Node::set_has_alter_role_stmt() { _oneof_case_[0] = kAlterRoleStmt; } inline void Node::clear_alter_role_stmt() { if (_internal_has_alter_role_stmt()) { if (GetArena() == nullptr) { delete node_.alter_role_stmt_; } clear_has_node(); } } inline ::pg_query::AlterRoleStmt* Node::release_alter_role_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_role_stmt) if (_internal_has_alter_role_stmt()) { clear_has_node(); ::pg_query::AlterRoleStmt* temp = node_.alter_role_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterRoleStmt& Node::_internal_alter_role_stmt() const { return _internal_has_alter_role_stmt() ? *node_.alter_role_stmt_ : reinterpret_cast< ::pg_query::AlterRoleStmt&>(::pg_query::_AlterRoleStmt_default_instance_); } inline const ::pg_query::AlterRoleStmt& Node::alter_role_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_role_stmt) return _internal_alter_role_stmt(); } inline ::pg_query::AlterRoleStmt* Node::unsafe_arena_release_alter_role_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_role_stmt) if (_internal_has_alter_role_stmt()) { clear_has_node(); ::pg_query::AlterRoleStmt* temp = node_.alter_role_stmt_; node_.alter_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_role_stmt(::pg_query::AlterRoleStmt* alter_role_stmt) { clear_node(); if (alter_role_stmt) { set_has_alter_role_stmt(); node_.alter_role_stmt_ = alter_role_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_role_stmt) } inline ::pg_query::AlterRoleStmt* Node::_internal_mutable_alter_role_stmt() { if (!_internal_has_alter_role_stmt()) { clear_node(); set_has_alter_role_stmt(); node_.alter_role_stmt_ = CreateMaybeMessage< ::pg_query::AlterRoleStmt >(GetArena()); } return node_.alter_role_stmt_; } inline ::pg_query::AlterRoleStmt* Node::mutable_alter_role_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_role_stmt) return _internal_mutable_alter_role_stmt(); } // .pg_query.DropRoleStmt drop_role_stmt = 101 [json_name = "DropRoleStmt"]; inline bool Node::_internal_has_drop_role_stmt() const { return node_case() == kDropRoleStmt; } inline bool Node::has_drop_role_stmt() const { return _internal_has_drop_role_stmt(); } inline void Node::set_has_drop_role_stmt() { _oneof_case_[0] = kDropRoleStmt; } inline void Node::clear_drop_role_stmt() { if (_internal_has_drop_role_stmt()) { if (GetArena() == nullptr) { delete node_.drop_role_stmt_; } clear_has_node(); } } inline ::pg_query::DropRoleStmt* Node::release_drop_role_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.drop_role_stmt) if (_internal_has_drop_role_stmt()) { clear_has_node(); ::pg_query::DropRoleStmt* temp = node_.drop_role_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.drop_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropRoleStmt& Node::_internal_drop_role_stmt() const { return _internal_has_drop_role_stmt() ? *node_.drop_role_stmt_ : reinterpret_cast< ::pg_query::DropRoleStmt&>(::pg_query::_DropRoleStmt_default_instance_); } inline const ::pg_query::DropRoleStmt& Node::drop_role_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.drop_role_stmt) return _internal_drop_role_stmt(); } inline ::pg_query::DropRoleStmt* Node::unsafe_arena_release_drop_role_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_role_stmt) if (_internal_has_drop_role_stmt()) { clear_has_node(); ::pg_query::DropRoleStmt* temp = node_.drop_role_stmt_; node_.drop_role_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_drop_role_stmt(::pg_query::DropRoleStmt* drop_role_stmt) { clear_node(); if (drop_role_stmt) { set_has_drop_role_stmt(); node_.drop_role_stmt_ = drop_role_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_role_stmt) } inline ::pg_query::DropRoleStmt* Node::_internal_mutable_drop_role_stmt() { if (!_internal_has_drop_role_stmt()) { clear_node(); set_has_drop_role_stmt(); node_.drop_role_stmt_ = CreateMaybeMessage< ::pg_query::DropRoleStmt >(GetArena()); } return node_.drop_role_stmt_; } inline ::pg_query::DropRoleStmt* Node::mutable_drop_role_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_role_stmt) return _internal_mutable_drop_role_stmt(); } // .pg_query.LockStmt lock_stmt = 102 [json_name = "LockStmt"]; inline bool Node::_internal_has_lock_stmt() const { return node_case() == kLockStmt; } inline bool Node::has_lock_stmt() const { return _internal_has_lock_stmt(); } inline void Node::set_has_lock_stmt() { _oneof_case_[0] = kLockStmt; } inline void Node::clear_lock_stmt() { if (_internal_has_lock_stmt()) { if (GetArena() == nullptr) { delete node_.lock_stmt_; } clear_has_node(); } } inline ::pg_query::LockStmt* Node::release_lock_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.lock_stmt) if (_internal_has_lock_stmt()) { clear_has_node(); ::pg_query::LockStmt* temp = node_.lock_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.lock_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::LockStmt& Node::_internal_lock_stmt() const { return _internal_has_lock_stmt() ? *node_.lock_stmt_ : reinterpret_cast< ::pg_query::LockStmt&>(::pg_query::_LockStmt_default_instance_); } inline const ::pg_query::LockStmt& Node::lock_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.lock_stmt) return _internal_lock_stmt(); } inline ::pg_query::LockStmt* Node::unsafe_arena_release_lock_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.lock_stmt) if (_internal_has_lock_stmt()) { clear_has_node(); ::pg_query::LockStmt* temp = node_.lock_stmt_; node_.lock_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_lock_stmt(::pg_query::LockStmt* lock_stmt) { clear_node(); if (lock_stmt) { set_has_lock_stmt(); node_.lock_stmt_ = lock_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.lock_stmt) } inline ::pg_query::LockStmt* Node::_internal_mutable_lock_stmt() { if (!_internal_has_lock_stmt()) { clear_node(); set_has_lock_stmt(); node_.lock_stmt_ = CreateMaybeMessage< ::pg_query::LockStmt >(GetArena()); } return node_.lock_stmt_; } inline ::pg_query::LockStmt* Node::mutable_lock_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.lock_stmt) return _internal_mutable_lock_stmt(); } // .pg_query.ConstraintsSetStmt constraints_set_stmt = 103 [json_name = "ConstraintsSetStmt"]; inline bool Node::_internal_has_constraints_set_stmt() const { return node_case() == kConstraintsSetStmt; } inline bool Node::has_constraints_set_stmt() const { return _internal_has_constraints_set_stmt(); } inline void Node::set_has_constraints_set_stmt() { _oneof_case_[0] = kConstraintsSetStmt; } inline void Node::clear_constraints_set_stmt() { if (_internal_has_constraints_set_stmt()) { if (GetArena() == nullptr) { delete node_.constraints_set_stmt_; } clear_has_node(); } } inline ::pg_query::ConstraintsSetStmt* Node::release_constraints_set_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.constraints_set_stmt) if (_internal_has_constraints_set_stmt()) { clear_has_node(); ::pg_query::ConstraintsSetStmt* temp = node_.constraints_set_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.constraints_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ConstraintsSetStmt& Node::_internal_constraints_set_stmt() const { return _internal_has_constraints_set_stmt() ? *node_.constraints_set_stmt_ : reinterpret_cast< ::pg_query::ConstraintsSetStmt&>(::pg_query::_ConstraintsSetStmt_default_instance_); } inline const ::pg_query::ConstraintsSetStmt& Node::constraints_set_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.constraints_set_stmt) return _internal_constraints_set_stmt(); } inline ::pg_query::ConstraintsSetStmt* Node::unsafe_arena_release_constraints_set_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.constraints_set_stmt) if (_internal_has_constraints_set_stmt()) { clear_has_node(); ::pg_query::ConstraintsSetStmt* temp = node_.constraints_set_stmt_; node_.constraints_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_constraints_set_stmt(::pg_query::ConstraintsSetStmt* constraints_set_stmt) { clear_node(); if (constraints_set_stmt) { set_has_constraints_set_stmt(); node_.constraints_set_stmt_ = constraints_set_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.constraints_set_stmt) } inline ::pg_query::ConstraintsSetStmt* Node::_internal_mutable_constraints_set_stmt() { if (!_internal_has_constraints_set_stmt()) { clear_node(); set_has_constraints_set_stmt(); node_.constraints_set_stmt_ = CreateMaybeMessage< ::pg_query::ConstraintsSetStmt >(GetArena()); } return node_.constraints_set_stmt_; } inline ::pg_query::ConstraintsSetStmt* Node::mutable_constraints_set_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.constraints_set_stmt) return _internal_mutable_constraints_set_stmt(); } // .pg_query.ReindexStmt reindex_stmt = 104 [json_name = "ReindexStmt"]; inline bool Node::_internal_has_reindex_stmt() const { return node_case() == kReindexStmt; } inline bool Node::has_reindex_stmt() const { return _internal_has_reindex_stmt(); } inline void Node::set_has_reindex_stmt() { _oneof_case_[0] = kReindexStmt; } inline void Node::clear_reindex_stmt() { if (_internal_has_reindex_stmt()) { if (GetArena() == nullptr) { delete node_.reindex_stmt_; } clear_has_node(); } } inline ::pg_query::ReindexStmt* Node::release_reindex_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.reindex_stmt) if (_internal_has_reindex_stmt()) { clear_has_node(); ::pg_query::ReindexStmt* temp = node_.reindex_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.reindex_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ReindexStmt& Node::_internal_reindex_stmt() const { return _internal_has_reindex_stmt() ? *node_.reindex_stmt_ : reinterpret_cast< ::pg_query::ReindexStmt&>(::pg_query::_ReindexStmt_default_instance_); } inline const ::pg_query::ReindexStmt& Node::reindex_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.reindex_stmt) return _internal_reindex_stmt(); } inline ::pg_query::ReindexStmt* Node::unsafe_arena_release_reindex_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.reindex_stmt) if (_internal_has_reindex_stmt()) { clear_has_node(); ::pg_query::ReindexStmt* temp = node_.reindex_stmt_; node_.reindex_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_reindex_stmt(::pg_query::ReindexStmt* reindex_stmt) { clear_node(); if (reindex_stmt) { set_has_reindex_stmt(); node_.reindex_stmt_ = reindex_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.reindex_stmt) } inline ::pg_query::ReindexStmt* Node::_internal_mutable_reindex_stmt() { if (!_internal_has_reindex_stmt()) { clear_node(); set_has_reindex_stmt(); node_.reindex_stmt_ = CreateMaybeMessage< ::pg_query::ReindexStmt >(GetArena()); } return node_.reindex_stmt_; } inline ::pg_query::ReindexStmt* Node::mutable_reindex_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.reindex_stmt) return _internal_mutable_reindex_stmt(); } // .pg_query.CheckPointStmt check_point_stmt = 105 [json_name = "CheckPointStmt"]; inline bool Node::_internal_has_check_point_stmt() const { return node_case() == kCheckPointStmt; } inline bool Node::has_check_point_stmt() const { return _internal_has_check_point_stmt(); } inline void Node::set_has_check_point_stmt() { _oneof_case_[0] = kCheckPointStmt; } inline void Node::clear_check_point_stmt() { if (_internal_has_check_point_stmt()) { if (GetArena() == nullptr) { delete node_.check_point_stmt_; } clear_has_node(); } } inline ::pg_query::CheckPointStmt* Node::release_check_point_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.check_point_stmt) if (_internal_has_check_point_stmt()) { clear_has_node(); ::pg_query::CheckPointStmt* temp = node_.check_point_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.check_point_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CheckPointStmt& Node::_internal_check_point_stmt() const { return _internal_has_check_point_stmt() ? *node_.check_point_stmt_ : reinterpret_cast< ::pg_query::CheckPointStmt&>(::pg_query::_CheckPointStmt_default_instance_); } inline const ::pg_query::CheckPointStmt& Node::check_point_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.check_point_stmt) return _internal_check_point_stmt(); } inline ::pg_query::CheckPointStmt* Node::unsafe_arena_release_check_point_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.check_point_stmt) if (_internal_has_check_point_stmt()) { clear_has_node(); ::pg_query::CheckPointStmt* temp = node_.check_point_stmt_; node_.check_point_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_check_point_stmt(::pg_query::CheckPointStmt* check_point_stmt) { clear_node(); if (check_point_stmt) { set_has_check_point_stmt(); node_.check_point_stmt_ = check_point_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.check_point_stmt) } inline ::pg_query::CheckPointStmt* Node::_internal_mutable_check_point_stmt() { if (!_internal_has_check_point_stmt()) { clear_node(); set_has_check_point_stmt(); node_.check_point_stmt_ = CreateMaybeMessage< ::pg_query::CheckPointStmt >(GetArena()); } return node_.check_point_stmt_; } inline ::pg_query::CheckPointStmt* Node::mutable_check_point_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.check_point_stmt) return _internal_mutable_check_point_stmt(); } // .pg_query.CreateSchemaStmt create_schema_stmt = 106 [json_name = "CreateSchemaStmt"]; inline bool Node::_internal_has_create_schema_stmt() const { return node_case() == kCreateSchemaStmt; } inline bool Node::has_create_schema_stmt() const { return _internal_has_create_schema_stmt(); } inline void Node::set_has_create_schema_stmt() { _oneof_case_[0] = kCreateSchemaStmt; } inline void Node::clear_create_schema_stmt() { if (_internal_has_create_schema_stmt()) { if (GetArena() == nullptr) { delete node_.create_schema_stmt_; } clear_has_node(); } } inline ::pg_query::CreateSchemaStmt* Node::release_create_schema_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_schema_stmt) if (_internal_has_create_schema_stmt()) { clear_has_node(); ::pg_query::CreateSchemaStmt* temp = node_.create_schema_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_schema_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateSchemaStmt& Node::_internal_create_schema_stmt() const { return _internal_has_create_schema_stmt() ? *node_.create_schema_stmt_ : reinterpret_cast< ::pg_query::CreateSchemaStmt&>(::pg_query::_CreateSchemaStmt_default_instance_); } inline const ::pg_query::CreateSchemaStmt& Node::create_schema_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_schema_stmt) return _internal_create_schema_stmt(); } inline ::pg_query::CreateSchemaStmt* Node::unsafe_arena_release_create_schema_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_schema_stmt) if (_internal_has_create_schema_stmt()) { clear_has_node(); ::pg_query::CreateSchemaStmt* temp = node_.create_schema_stmt_; node_.create_schema_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_schema_stmt(::pg_query::CreateSchemaStmt* create_schema_stmt) { clear_node(); if (create_schema_stmt) { set_has_create_schema_stmt(); node_.create_schema_stmt_ = create_schema_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_schema_stmt) } inline ::pg_query::CreateSchemaStmt* Node::_internal_mutable_create_schema_stmt() { if (!_internal_has_create_schema_stmt()) { clear_node(); set_has_create_schema_stmt(); node_.create_schema_stmt_ = CreateMaybeMessage< ::pg_query::CreateSchemaStmt >(GetArena()); } return node_.create_schema_stmt_; } inline ::pg_query::CreateSchemaStmt* Node::mutable_create_schema_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_schema_stmt) return _internal_mutable_create_schema_stmt(); } // .pg_query.AlterDatabaseStmt alter_database_stmt = 107 [json_name = "AlterDatabaseStmt"]; inline bool Node::_internal_has_alter_database_stmt() const { return node_case() == kAlterDatabaseStmt; } inline bool Node::has_alter_database_stmt() const { return _internal_has_alter_database_stmt(); } inline void Node::set_has_alter_database_stmt() { _oneof_case_[0] = kAlterDatabaseStmt; } inline void Node::clear_alter_database_stmt() { if (_internal_has_alter_database_stmt()) { if (GetArena() == nullptr) { delete node_.alter_database_stmt_; } clear_has_node(); } } inline ::pg_query::AlterDatabaseStmt* Node::release_alter_database_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_database_stmt) if (_internal_has_alter_database_stmt()) { clear_has_node(); ::pg_query::AlterDatabaseStmt* temp = node_.alter_database_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_database_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterDatabaseStmt& Node::_internal_alter_database_stmt() const { return _internal_has_alter_database_stmt() ? *node_.alter_database_stmt_ : reinterpret_cast< ::pg_query::AlterDatabaseStmt&>(::pg_query::_AlterDatabaseStmt_default_instance_); } inline const ::pg_query::AlterDatabaseStmt& Node::alter_database_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_database_stmt) return _internal_alter_database_stmt(); } inline ::pg_query::AlterDatabaseStmt* Node::unsafe_arena_release_alter_database_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_database_stmt) if (_internal_has_alter_database_stmt()) { clear_has_node(); ::pg_query::AlterDatabaseStmt* temp = node_.alter_database_stmt_; node_.alter_database_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_database_stmt(::pg_query::AlterDatabaseStmt* alter_database_stmt) { clear_node(); if (alter_database_stmt) { set_has_alter_database_stmt(); node_.alter_database_stmt_ = alter_database_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_database_stmt) } inline ::pg_query::AlterDatabaseStmt* Node::_internal_mutable_alter_database_stmt() { if (!_internal_has_alter_database_stmt()) { clear_node(); set_has_alter_database_stmt(); node_.alter_database_stmt_ = CreateMaybeMessage< ::pg_query::AlterDatabaseStmt >(GetArena()); } return node_.alter_database_stmt_; } inline ::pg_query::AlterDatabaseStmt* Node::mutable_alter_database_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_database_stmt) return _internal_mutable_alter_database_stmt(); } // .pg_query.AlterDatabaseSetStmt alter_database_set_stmt = 108 [json_name = "AlterDatabaseSetStmt"]; inline bool Node::_internal_has_alter_database_set_stmt() const { return node_case() == kAlterDatabaseSetStmt; } inline bool Node::has_alter_database_set_stmt() const { return _internal_has_alter_database_set_stmt(); } inline void Node::set_has_alter_database_set_stmt() { _oneof_case_[0] = kAlterDatabaseSetStmt; } inline void Node::clear_alter_database_set_stmt() { if (_internal_has_alter_database_set_stmt()) { if (GetArena() == nullptr) { delete node_.alter_database_set_stmt_; } clear_has_node(); } } inline ::pg_query::AlterDatabaseSetStmt* Node::release_alter_database_set_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_database_set_stmt) if (_internal_has_alter_database_set_stmt()) { clear_has_node(); ::pg_query::AlterDatabaseSetStmt* temp = node_.alter_database_set_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_database_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterDatabaseSetStmt& Node::_internal_alter_database_set_stmt() const { return _internal_has_alter_database_set_stmt() ? *node_.alter_database_set_stmt_ : reinterpret_cast< ::pg_query::AlterDatabaseSetStmt&>(::pg_query::_AlterDatabaseSetStmt_default_instance_); } inline const ::pg_query::AlterDatabaseSetStmt& Node::alter_database_set_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_database_set_stmt) return _internal_alter_database_set_stmt(); } inline ::pg_query::AlterDatabaseSetStmt* Node::unsafe_arena_release_alter_database_set_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_database_set_stmt) if (_internal_has_alter_database_set_stmt()) { clear_has_node(); ::pg_query::AlterDatabaseSetStmt* temp = node_.alter_database_set_stmt_; node_.alter_database_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_database_set_stmt(::pg_query::AlterDatabaseSetStmt* alter_database_set_stmt) { clear_node(); if (alter_database_set_stmt) { set_has_alter_database_set_stmt(); node_.alter_database_set_stmt_ = alter_database_set_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_database_set_stmt) } inline ::pg_query::AlterDatabaseSetStmt* Node::_internal_mutable_alter_database_set_stmt() { if (!_internal_has_alter_database_set_stmt()) { clear_node(); set_has_alter_database_set_stmt(); node_.alter_database_set_stmt_ = CreateMaybeMessage< ::pg_query::AlterDatabaseSetStmt >(GetArena()); } return node_.alter_database_set_stmt_; } inline ::pg_query::AlterDatabaseSetStmt* Node::mutable_alter_database_set_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_database_set_stmt) return _internal_mutable_alter_database_set_stmt(); } // .pg_query.AlterRoleSetStmt alter_role_set_stmt = 109 [json_name = "AlterRoleSetStmt"]; inline bool Node::_internal_has_alter_role_set_stmt() const { return node_case() == kAlterRoleSetStmt; } inline bool Node::has_alter_role_set_stmt() const { return _internal_has_alter_role_set_stmt(); } inline void Node::set_has_alter_role_set_stmt() { _oneof_case_[0] = kAlterRoleSetStmt; } inline void Node::clear_alter_role_set_stmt() { if (_internal_has_alter_role_set_stmt()) { if (GetArena() == nullptr) { delete node_.alter_role_set_stmt_; } clear_has_node(); } } inline ::pg_query::AlterRoleSetStmt* Node::release_alter_role_set_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_role_set_stmt) if (_internal_has_alter_role_set_stmt()) { clear_has_node(); ::pg_query::AlterRoleSetStmt* temp = node_.alter_role_set_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_role_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterRoleSetStmt& Node::_internal_alter_role_set_stmt() const { return _internal_has_alter_role_set_stmt() ? *node_.alter_role_set_stmt_ : reinterpret_cast< ::pg_query::AlterRoleSetStmt&>(::pg_query::_AlterRoleSetStmt_default_instance_); } inline const ::pg_query::AlterRoleSetStmt& Node::alter_role_set_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_role_set_stmt) return _internal_alter_role_set_stmt(); } inline ::pg_query::AlterRoleSetStmt* Node::unsafe_arena_release_alter_role_set_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_role_set_stmt) if (_internal_has_alter_role_set_stmt()) { clear_has_node(); ::pg_query::AlterRoleSetStmt* temp = node_.alter_role_set_stmt_; node_.alter_role_set_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_role_set_stmt(::pg_query::AlterRoleSetStmt* alter_role_set_stmt) { clear_node(); if (alter_role_set_stmt) { set_has_alter_role_set_stmt(); node_.alter_role_set_stmt_ = alter_role_set_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_role_set_stmt) } inline ::pg_query::AlterRoleSetStmt* Node::_internal_mutable_alter_role_set_stmt() { if (!_internal_has_alter_role_set_stmt()) { clear_node(); set_has_alter_role_set_stmt(); node_.alter_role_set_stmt_ = CreateMaybeMessage< ::pg_query::AlterRoleSetStmt >(GetArena()); } return node_.alter_role_set_stmt_; } inline ::pg_query::AlterRoleSetStmt* Node::mutable_alter_role_set_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_role_set_stmt) return _internal_mutable_alter_role_set_stmt(); } // .pg_query.CreateConversionStmt create_conversion_stmt = 110 [json_name = "CreateConversionStmt"]; inline bool Node::_internal_has_create_conversion_stmt() const { return node_case() == kCreateConversionStmt; } inline bool Node::has_create_conversion_stmt() const { return _internal_has_create_conversion_stmt(); } inline void Node::set_has_create_conversion_stmt() { _oneof_case_[0] = kCreateConversionStmt; } inline void Node::clear_create_conversion_stmt() { if (_internal_has_create_conversion_stmt()) { if (GetArena() == nullptr) { delete node_.create_conversion_stmt_; } clear_has_node(); } } inline ::pg_query::CreateConversionStmt* Node::release_create_conversion_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_conversion_stmt) if (_internal_has_create_conversion_stmt()) { clear_has_node(); ::pg_query::CreateConversionStmt* temp = node_.create_conversion_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_conversion_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateConversionStmt& Node::_internal_create_conversion_stmt() const { return _internal_has_create_conversion_stmt() ? *node_.create_conversion_stmt_ : reinterpret_cast< ::pg_query::CreateConversionStmt&>(::pg_query::_CreateConversionStmt_default_instance_); } inline const ::pg_query::CreateConversionStmt& Node::create_conversion_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_conversion_stmt) return _internal_create_conversion_stmt(); } inline ::pg_query::CreateConversionStmt* Node::unsafe_arena_release_create_conversion_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_conversion_stmt) if (_internal_has_create_conversion_stmt()) { clear_has_node(); ::pg_query::CreateConversionStmt* temp = node_.create_conversion_stmt_; node_.create_conversion_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_conversion_stmt(::pg_query::CreateConversionStmt* create_conversion_stmt) { clear_node(); if (create_conversion_stmt) { set_has_create_conversion_stmt(); node_.create_conversion_stmt_ = create_conversion_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_conversion_stmt) } inline ::pg_query::CreateConversionStmt* Node::_internal_mutable_create_conversion_stmt() { if (!_internal_has_create_conversion_stmt()) { clear_node(); set_has_create_conversion_stmt(); node_.create_conversion_stmt_ = CreateMaybeMessage< ::pg_query::CreateConversionStmt >(GetArena()); } return node_.create_conversion_stmt_; } inline ::pg_query::CreateConversionStmt* Node::mutable_create_conversion_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_conversion_stmt) return _internal_mutable_create_conversion_stmt(); } // .pg_query.CreateCastStmt create_cast_stmt = 111 [json_name = "CreateCastStmt"]; inline bool Node::_internal_has_create_cast_stmt() const { return node_case() == kCreateCastStmt; } inline bool Node::has_create_cast_stmt() const { return _internal_has_create_cast_stmt(); } inline void Node::set_has_create_cast_stmt() { _oneof_case_[0] = kCreateCastStmt; } inline void Node::clear_create_cast_stmt() { if (_internal_has_create_cast_stmt()) { if (GetArena() == nullptr) { delete node_.create_cast_stmt_; } clear_has_node(); } } inline ::pg_query::CreateCastStmt* Node::release_create_cast_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_cast_stmt) if (_internal_has_create_cast_stmt()) { clear_has_node(); ::pg_query::CreateCastStmt* temp = node_.create_cast_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_cast_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateCastStmt& Node::_internal_create_cast_stmt() const { return _internal_has_create_cast_stmt() ? *node_.create_cast_stmt_ : reinterpret_cast< ::pg_query::CreateCastStmt&>(::pg_query::_CreateCastStmt_default_instance_); } inline const ::pg_query::CreateCastStmt& Node::create_cast_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_cast_stmt) return _internal_create_cast_stmt(); } inline ::pg_query::CreateCastStmt* Node::unsafe_arena_release_create_cast_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_cast_stmt) if (_internal_has_create_cast_stmt()) { clear_has_node(); ::pg_query::CreateCastStmt* temp = node_.create_cast_stmt_; node_.create_cast_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_cast_stmt(::pg_query::CreateCastStmt* create_cast_stmt) { clear_node(); if (create_cast_stmt) { set_has_create_cast_stmt(); node_.create_cast_stmt_ = create_cast_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_cast_stmt) } inline ::pg_query::CreateCastStmt* Node::_internal_mutable_create_cast_stmt() { if (!_internal_has_create_cast_stmt()) { clear_node(); set_has_create_cast_stmt(); node_.create_cast_stmt_ = CreateMaybeMessage< ::pg_query::CreateCastStmt >(GetArena()); } return node_.create_cast_stmt_; } inline ::pg_query::CreateCastStmt* Node::mutable_create_cast_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_cast_stmt) return _internal_mutable_create_cast_stmt(); } // .pg_query.CreateOpClassStmt create_op_class_stmt = 112 [json_name = "CreateOpClassStmt"]; inline bool Node::_internal_has_create_op_class_stmt() const { return node_case() == kCreateOpClassStmt; } inline bool Node::has_create_op_class_stmt() const { return _internal_has_create_op_class_stmt(); } inline void Node::set_has_create_op_class_stmt() { _oneof_case_[0] = kCreateOpClassStmt; } inline void Node::clear_create_op_class_stmt() { if (_internal_has_create_op_class_stmt()) { if (GetArena() == nullptr) { delete node_.create_op_class_stmt_; } clear_has_node(); } } inline ::pg_query::CreateOpClassStmt* Node::release_create_op_class_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_op_class_stmt) if (_internal_has_create_op_class_stmt()) { clear_has_node(); ::pg_query::CreateOpClassStmt* temp = node_.create_op_class_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_op_class_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateOpClassStmt& Node::_internal_create_op_class_stmt() const { return _internal_has_create_op_class_stmt() ? *node_.create_op_class_stmt_ : reinterpret_cast< ::pg_query::CreateOpClassStmt&>(::pg_query::_CreateOpClassStmt_default_instance_); } inline const ::pg_query::CreateOpClassStmt& Node::create_op_class_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_op_class_stmt) return _internal_create_op_class_stmt(); } inline ::pg_query::CreateOpClassStmt* Node::unsafe_arena_release_create_op_class_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_op_class_stmt) if (_internal_has_create_op_class_stmt()) { clear_has_node(); ::pg_query::CreateOpClassStmt* temp = node_.create_op_class_stmt_; node_.create_op_class_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_op_class_stmt(::pg_query::CreateOpClassStmt* create_op_class_stmt) { clear_node(); if (create_op_class_stmt) { set_has_create_op_class_stmt(); node_.create_op_class_stmt_ = create_op_class_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_op_class_stmt) } inline ::pg_query::CreateOpClassStmt* Node::_internal_mutable_create_op_class_stmt() { if (!_internal_has_create_op_class_stmt()) { clear_node(); set_has_create_op_class_stmt(); node_.create_op_class_stmt_ = CreateMaybeMessage< ::pg_query::CreateOpClassStmt >(GetArena()); } return node_.create_op_class_stmt_; } inline ::pg_query::CreateOpClassStmt* Node::mutable_create_op_class_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_op_class_stmt) return _internal_mutable_create_op_class_stmt(); } // .pg_query.CreateOpFamilyStmt create_op_family_stmt = 113 [json_name = "CreateOpFamilyStmt"]; inline bool Node::_internal_has_create_op_family_stmt() const { return node_case() == kCreateOpFamilyStmt; } inline bool Node::has_create_op_family_stmt() const { return _internal_has_create_op_family_stmt(); } inline void Node::set_has_create_op_family_stmt() { _oneof_case_[0] = kCreateOpFamilyStmt; } inline void Node::clear_create_op_family_stmt() { if (_internal_has_create_op_family_stmt()) { if (GetArena() == nullptr) { delete node_.create_op_family_stmt_; } clear_has_node(); } } inline ::pg_query::CreateOpFamilyStmt* Node::release_create_op_family_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_op_family_stmt) if (_internal_has_create_op_family_stmt()) { clear_has_node(); ::pg_query::CreateOpFamilyStmt* temp = node_.create_op_family_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_op_family_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateOpFamilyStmt& Node::_internal_create_op_family_stmt() const { return _internal_has_create_op_family_stmt() ? *node_.create_op_family_stmt_ : reinterpret_cast< ::pg_query::CreateOpFamilyStmt&>(::pg_query::_CreateOpFamilyStmt_default_instance_); } inline const ::pg_query::CreateOpFamilyStmt& Node::create_op_family_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_op_family_stmt) return _internal_create_op_family_stmt(); } inline ::pg_query::CreateOpFamilyStmt* Node::unsafe_arena_release_create_op_family_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_op_family_stmt) if (_internal_has_create_op_family_stmt()) { clear_has_node(); ::pg_query::CreateOpFamilyStmt* temp = node_.create_op_family_stmt_; node_.create_op_family_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_op_family_stmt(::pg_query::CreateOpFamilyStmt* create_op_family_stmt) { clear_node(); if (create_op_family_stmt) { set_has_create_op_family_stmt(); node_.create_op_family_stmt_ = create_op_family_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_op_family_stmt) } inline ::pg_query::CreateOpFamilyStmt* Node::_internal_mutable_create_op_family_stmt() { if (!_internal_has_create_op_family_stmt()) { clear_node(); set_has_create_op_family_stmt(); node_.create_op_family_stmt_ = CreateMaybeMessage< ::pg_query::CreateOpFamilyStmt >(GetArena()); } return node_.create_op_family_stmt_; } inline ::pg_query::CreateOpFamilyStmt* Node::mutable_create_op_family_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_op_family_stmt) return _internal_mutable_create_op_family_stmt(); } // .pg_query.AlterOpFamilyStmt alter_op_family_stmt = 114 [json_name = "AlterOpFamilyStmt"]; inline bool Node::_internal_has_alter_op_family_stmt() const { return node_case() == kAlterOpFamilyStmt; } inline bool Node::has_alter_op_family_stmt() const { return _internal_has_alter_op_family_stmt(); } inline void Node::set_has_alter_op_family_stmt() { _oneof_case_[0] = kAlterOpFamilyStmt; } inline void Node::clear_alter_op_family_stmt() { if (_internal_has_alter_op_family_stmt()) { if (GetArena() == nullptr) { delete node_.alter_op_family_stmt_; } clear_has_node(); } } inline ::pg_query::AlterOpFamilyStmt* Node::release_alter_op_family_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_op_family_stmt) if (_internal_has_alter_op_family_stmt()) { clear_has_node(); ::pg_query::AlterOpFamilyStmt* temp = node_.alter_op_family_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_op_family_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterOpFamilyStmt& Node::_internal_alter_op_family_stmt() const { return _internal_has_alter_op_family_stmt() ? *node_.alter_op_family_stmt_ : reinterpret_cast< ::pg_query::AlterOpFamilyStmt&>(::pg_query::_AlterOpFamilyStmt_default_instance_); } inline const ::pg_query::AlterOpFamilyStmt& Node::alter_op_family_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_op_family_stmt) return _internal_alter_op_family_stmt(); } inline ::pg_query::AlterOpFamilyStmt* Node::unsafe_arena_release_alter_op_family_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_op_family_stmt) if (_internal_has_alter_op_family_stmt()) { clear_has_node(); ::pg_query::AlterOpFamilyStmt* temp = node_.alter_op_family_stmt_; node_.alter_op_family_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_op_family_stmt(::pg_query::AlterOpFamilyStmt* alter_op_family_stmt) { clear_node(); if (alter_op_family_stmt) { set_has_alter_op_family_stmt(); node_.alter_op_family_stmt_ = alter_op_family_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_op_family_stmt) } inline ::pg_query::AlterOpFamilyStmt* Node::_internal_mutable_alter_op_family_stmt() { if (!_internal_has_alter_op_family_stmt()) { clear_node(); set_has_alter_op_family_stmt(); node_.alter_op_family_stmt_ = CreateMaybeMessage< ::pg_query::AlterOpFamilyStmt >(GetArena()); } return node_.alter_op_family_stmt_; } inline ::pg_query::AlterOpFamilyStmt* Node::mutable_alter_op_family_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_op_family_stmt) return _internal_mutable_alter_op_family_stmt(); } // .pg_query.PrepareStmt prepare_stmt = 115 [json_name = "PrepareStmt"]; inline bool Node::_internal_has_prepare_stmt() const { return node_case() == kPrepareStmt; } inline bool Node::has_prepare_stmt() const { return _internal_has_prepare_stmt(); } inline void Node::set_has_prepare_stmt() { _oneof_case_[0] = kPrepareStmt; } inline void Node::clear_prepare_stmt() { if (_internal_has_prepare_stmt()) { if (GetArena() == nullptr) { delete node_.prepare_stmt_; } clear_has_node(); } } inline ::pg_query::PrepareStmt* Node::release_prepare_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.prepare_stmt) if (_internal_has_prepare_stmt()) { clear_has_node(); ::pg_query::PrepareStmt* temp = node_.prepare_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.prepare_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PrepareStmt& Node::_internal_prepare_stmt() const { return _internal_has_prepare_stmt() ? *node_.prepare_stmt_ : reinterpret_cast< ::pg_query::PrepareStmt&>(::pg_query::_PrepareStmt_default_instance_); } inline const ::pg_query::PrepareStmt& Node::prepare_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.prepare_stmt) return _internal_prepare_stmt(); } inline ::pg_query::PrepareStmt* Node::unsafe_arena_release_prepare_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.prepare_stmt) if (_internal_has_prepare_stmt()) { clear_has_node(); ::pg_query::PrepareStmt* temp = node_.prepare_stmt_; node_.prepare_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_prepare_stmt(::pg_query::PrepareStmt* prepare_stmt) { clear_node(); if (prepare_stmt) { set_has_prepare_stmt(); node_.prepare_stmt_ = prepare_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.prepare_stmt) } inline ::pg_query::PrepareStmt* Node::_internal_mutable_prepare_stmt() { if (!_internal_has_prepare_stmt()) { clear_node(); set_has_prepare_stmt(); node_.prepare_stmt_ = CreateMaybeMessage< ::pg_query::PrepareStmt >(GetArena()); } return node_.prepare_stmt_; } inline ::pg_query::PrepareStmt* Node::mutable_prepare_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.prepare_stmt) return _internal_mutable_prepare_stmt(); } // .pg_query.ExecuteStmt execute_stmt = 116 [json_name = "ExecuteStmt"]; inline bool Node::_internal_has_execute_stmt() const { return node_case() == kExecuteStmt; } inline bool Node::has_execute_stmt() const { return _internal_has_execute_stmt(); } inline void Node::set_has_execute_stmt() { _oneof_case_[0] = kExecuteStmt; } inline void Node::clear_execute_stmt() { if (_internal_has_execute_stmt()) { if (GetArena() == nullptr) { delete node_.execute_stmt_; } clear_has_node(); } } inline ::pg_query::ExecuteStmt* Node::release_execute_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.execute_stmt) if (_internal_has_execute_stmt()) { clear_has_node(); ::pg_query::ExecuteStmt* temp = node_.execute_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.execute_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ExecuteStmt& Node::_internal_execute_stmt() const { return _internal_has_execute_stmt() ? *node_.execute_stmt_ : reinterpret_cast< ::pg_query::ExecuteStmt&>(::pg_query::_ExecuteStmt_default_instance_); } inline const ::pg_query::ExecuteStmt& Node::execute_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.execute_stmt) return _internal_execute_stmt(); } inline ::pg_query::ExecuteStmt* Node::unsafe_arena_release_execute_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.execute_stmt) if (_internal_has_execute_stmt()) { clear_has_node(); ::pg_query::ExecuteStmt* temp = node_.execute_stmt_; node_.execute_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_execute_stmt(::pg_query::ExecuteStmt* execute_stmt) { clear_node(); if (execute_stmt) { set_has_execute_stmt(); node_.execute_stmt_ = execute_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.execute_stmt) } inline ::pg_query::ExecuteStmt* Node::_internal_mutable_execute_stmt() { if (!_internal_has_execute_stmt()) { clear_node(); set_has_execute_stmt(); node_.execute_stmt_ = CreateMaybeMessage< ::pg_query::ExecuteStmt >(GetArena()); } return node_.execute_stmt_; } inline ::pg_query::ExecuteStmt* Node::mutable_execute_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.execute_stmt) return _internal_mutable_execute_stmt(); } // .pg_query.DeallocateStmt deallocate_stmt = 117 [json_name = "DeallocateStmt"]; inline bool Node::_internal_has_deallocate_stmt() const { return node_case() == kDeallocateStmt; } inline bool Node::has_deallocate_stmt() const { return _internal_has_deallocate_stmt(); } inline void Node::set_has_deallocate_stmt() { _oneof_case_[0] = kDeallocateStmt; } inline void Node::clear_deallocate_stmt() { if (_internal_has_deallocate_stmt()) { if (GetArena() == nullptr) { delete node_.deallocate_stmt_; } clear_has_node(); } } inline ::pg_query::DeallocateStmt* Node::release_deallocate_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.deallocate_stmt) if (_internal_has_deallocate_stmt()) { clear_has_node(); ::pg_query::DeallocateStmt* temp = node_.deallocate_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.deallocate_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DeallocateStmt& Node::_internal_deallocate_stmt() const { return _internal_has_deallocate_stmt() ? *node_.deallocate_stmt_ : reinterpret_cast< ::pg_query::DeallocateStmt&>(::pg_query::_DeallocateStmt_default_instance_); } inline const ::pg_query::DeallocateStmt& Node::deallocate_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.deallocate_stmt) return _internal_deallocate_stmt(); } inline ::pg_query::DeallocateStmt* Node::unsafe_arena_release_deallocate_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.deallocate_stmt) if (_internal_has_deallocate_stmt()) { clear_has_node(); ::pg_query::DeallocateStmt* temp = node_.deallocate_stmt_; node_.deallocate_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_deallocate_stmt(::pg_query::DeallocateStmt* deallocate_stmt) { clear_node(); if (deallocate_stmt) { set_has_deallocate_stmt(); node_.deallocate_stmt_ = deallocate_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.deallocate_stmt) } inline ::pg_query::DeallocateStmt* Node::_internal_mutable_deallocate_stmt() { if (!_internal_has_deallocate_stmt()) { clear_node(); set_has_deallocate_stmt(); node_.deallocate_stmt_ = CreateMaybeMessage< ::pg_query::DeallocateStmt >(GetArena()); } return node_.deallocate_stmt_; } inline ::pg_query::DeallocateStmt* Node::mutable_deallocate_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.deallocate_stmt) return _internal_mutable_deallocate_stmt(); } // .pg_query.DeclareCursorStmt declare_cursor_stmt = 118 [json_name = "DeclareCursorStmt"]; inline bool Node::_internal_has_declare_cursor_stmt() const { return node_case() == kDeclareCursorStmt; } inline bool Node::has_declare_cursor_stmt() const { return _internal_has_declare_cursor_stmt(); } inline void Node::set_has_declare_cursor_stmt() { _oneof_case_[0] = kDeclareCursorStmt; } inline void Node::clear_declare_cursor_stmt() { if (_internal_has_declare_cursor_stmt()) { if (GetArena() == nullptr) { delete node_.declare_cursor_stmt_; } clear_has_node(); } } inline ::pg_query::DeclareCursorStmt* Node::release_declare_cursor_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.declare_cursor_stmt) if (_internal_has_declare_cursor_stmt()) { clear_has_node(); ::pg_query::DeclareCursorStmt* temp = node_.declare_cursor_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.declare_cursor_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DeclareCursorStmt& Node::_internal_declare_cursor_stmt() const { return _internal_has_declare_cursor_stmt() ? *node_.declare_cursor_stmt_ : reinterpret_cast< ::pg_query::DeclareCursorStmt&>(::pg_query::_DeclareCursorStmt_default_instance_); } inline const ::pg_query::DeclareCursorStmt& Node::declare_cursor_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.declare_cursor_stmt) return _internal_declare_cursor_stmt(); } inline ::pg_query::DeclareCursorStmt* Node::unsafe_arena_release_declare_cursor_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.declare_cursor_stmt) if (_internal_has_declare_cursor_stmt()) { clear_has_node(); ::pg_query::DeclareCursorStmt* temp = node_.declare_cursor_stmt_; node_.declare_cursor_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_declare_cursor_stmt(::pg_query::DeclareCursorStmt* declare_cursor_stmt) { clear_node(); if (declare_cursor_stmt) { set_has_declare_cursor_stmt(); node_.declare_cursor_stmt_ = declare_cursor_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.declare_cursor_stmt) } inline ::pg_query::DeclareCursorStmt* Node::_internal_mutable_declare_cursor_stmt() { if (!_internal_has_declare_cursor_stmt()) { clear_node(); set_has_declare_cursor_stmt(); node_.declare_cursor_stmt_ = CreateMaybeMessage< ::pg_query::DeclareCursorStmt >(GetArena()); } return node_.declare_cursor_stmt_; } inline ::pg_query::DeclareCursorStmt* Node::mutable_declare_cursor_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.declare_cursor_stmt) return _internal_mutable_declare_cursor_stmt(); } // .pg_query.CreateTableSpaceStmt create_table_space_stmt = 119 [json_name = "CreateTableSpaceStmt"]; inline bool Node::_internal_has_create_table_space_stmt() const { return node_case() == kCreateTableSpaceStmt; } inline bool Node::has_create_table_space_stmt() const { return _internal_has_create_table_space_stmt(); } inline void Node::set_has_create_table_space_stmt() { _oneof_case_[0] = kCreateTableSpaceStmt; } inline void Node::clear_create_table_space_stmt() { if (_internal_has_create_table_space_stmt()) { if (GetArena() == nullptr) { delete node_.create_table_space_stmt_; } clear_has_node(); } } inline ::pg_query::CreateTableSpaceStmt* Node::release_create_table_space_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_table_space_stmt) if (_internal_has_create_table_space_stmt()) { clear_has_node(); ::pg_query::CreateTableSpaceStmt* temp = node_.create_table_space_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_table_space_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateTableSpaceStmt& Node::_internal_create_table_space_stmt() const { return _internal_has_create_table_space_stmt() ? *node_.create_table_space_stmt_ : reinterpret_cast< ::pg_query::CreateTableSpaceStmt&>(::pg_query::_CreateTableSpaceStmt_default_instance_); } inline const ::pg_query::CreateTableSpaceStmt& Node::create_table_space_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_table_space_stmt) return _internal_create_table_space_stmt(); } inline ::pg_query::CreateTableSpaceStmt* Node::unsafe_arena_release_create_table_space_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_table_space_stmt) if (_internal_has_create_table_space_stmt()) { clear_has_node(); ::pg_query::CreateTableSpaceStmt* temp = node_.create_table_space_stmt_; node_.create_table_space_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_table_space_stmt(::pg_query::CreateTableSpaceStmt* create_table_space_stmt) { clear_node(); if (create_table_space_stmt) { set_has_create_table_space_stmt(); node_.create_table_space_stmt_ = create_table_space_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_table_space_stmt) } inline ::pg_query::CreateTableSpaceStmt* Node::_internal_mutable_create_table_space_stmt() { if (!_internal_has_create_table_space_stmt()) { clear_node(); set_has_create_table_space_stmt(); node_.create_table_space_stmt_ = CreateMaybeMessage< ::pg_query::CreateTableSpaceStmt >(GetArena()); } return node_.create_table_space_stmt_; } inline ::pg_query::CreateTableSpaceStmt* Node::mutable_create_table_space_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_table_space_stmt) return _internal_mutable_create_table_space_stmt(); } // .pg_query.DropTableSpaceStmt drop_table_space_stmt = 120 [json_name = "DropTableSpaceStmt"]; inline bool Node::_internal_has_drop_table_space_stmt() const { return node_case() == kDropTableSpaceStmt; } inline bool Node::has_drop_table_space_stmt() const { return _internal_has_drop_table_space_stmt(); } inline void Node::set_has_drop_table_space_stmt() { _oneof_case_[0] = kDropTableSpaceStmt; } inline void Node::clear_drop_table_space_stmt() { if (_internal_has_drop_table_space_stmt()) { if (GetArena() == nullptr) { delete node_.drop_table_space_stmt_; } clear_has_node(); } } inline ::pg_query::DropTableSpaceStmt* Node::release_drop_table_space_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.drop_table_space_stmt) if (_internal_has_drop_table_space_stmt()) { clear_has_node(); ::pg_query::DropTableSpaceStmt* temp = node_.drop_table_space_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.drop_table_space_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropTableSpaceStmt& Node::_internal_drop_table_space_stmt() const { return _internal_has_drop_table_space_stmt() ? *node_.drop_table_space_stmt_ : reinterpret_cast< ::pg_query::DropTableSpaceStmt&>(::pg_query::_DropTableSpaceStmt_default_instance_); } inline const ::pg_query::DropTableSpaceStmt& Node::drop_table_space_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.drop_table_space_stmt) return _internal_drop_table_space_stmt(); } inline ::pg_query::DropTableSpaceStmt* Node::unsafe_arena_release_drop_table_space_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_table_space_stmt) if (_internal_has_drop_table_space_stmt()) { clear_has_node(); ::pg_query::DropTableSpaceStmt* temp = node_.drop_table_space_stmt_; node_.drop_table_space_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_drop_table_space_stmt(::pg_query::DropTableSpaceStmt* drop_table_space_stmt) { clear_node(); if (drop_table_space_stmt) { set_has_drop_table_space_stmt(); node_.drop_table_space_stmt_ = drop_table_space_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_table_space_stmt) } inline ::pg_query::DropTableSpaceStmt* Node::_internal_mutable_drop_table_space_stmt() { if (!_internal_has_drop_table_space_stmt()) { clear_node(); set_has_drop_table_space_stmt(); node_.drop_table_space_stmt_ = CreateMaybeMessage< ::pg_query::DropTableSpaceStmt >(GetArena()); } return node_.drop_table_space_stmt_; } inline ::pg_query::DropTableSpaceStmt* Node::mutable_drop_table_space_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_table_space_stmt) return _internal_mutable_drop_table_space_stmt(); } // .pg_query.AlterObjectDependsStmt alter_object_depends_stmt = 121 [json_name = "AlterObjectDependsStmt"]; inline bool Node::_internal_has_alter_object_depends_stmt() const { return node_case() == kAlterObjectDependsStmt; } inline bool Node::has_alter_object_depends_stmt() const { return _internal_has_alter_object_depends_stmt(); } inline void Node::set_has_alter_object_depends_stmt() { _oneof_case_[0] = kAlterObjectDependsStmt; } inline void Node::clear_alter_object_depends_stmt() { if (_internal_has_alter_object_depends_stmt()) { if (GetArena() == nullptr) { delete node_.alter_object_depends_stmt_; } clear_has_node(); } } inline ::pg_query::AlterObjectDependsStmt* Node::release_alter_object_depends_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_object_depends_stmt) if (_internal_has_alter_object_depends_stmt()) { clear_has_node(); ::pg_query::AlterObjectDependsStmt* temp = node_.alter_object_depends_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_object_depends_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterObjectDependsStmt& Node::_internal_alter_object_depends_stmt() const { return _internal_has_alter_object_depends_stmt() ? *node_.alter_object_depends_stmt_ : reinterpret_cast< ::pg_query::AlterObjectDependsStmt&>(::pg_query::_AlterObjectDependsStmt_default_instance_); } inline const ::pg_query::AlterObjectDependsStmt& Node::alter_object_depends_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_object_depends_stmt) return _internal_alter_object_depends_stmt(); } inline ::pg_query::AlterObjectDependsStmt* Node::unsafe_arena_release_alter_object_depends_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_object_depends_stmt) if (_internal_has_alter_object_depends_stmt()) { clear_has_node(); ::pg_query::AlterObjectDependsStmt* temp = node_.alter_object_depends_stmt_; node_.alter_object_depends_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_object_depends_stmt(::pg_query::AlterObjectDependsStmt* alter_object_depends_stmt) { clear_node(); if (alter_object_depends_stmt) { set_has_alter_object_depends_stmt(); node_.alter_object_depends_stmt_ = alter_object_depends_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_object_depends_stmt) } inline ::pg_query::AlterObjectDependsStmt* Node::_internal_mutable_alter_object_depends_stmt() { if (!_internal_has_alter_object_depends_stmt()) { clear_node(); set_has_alter_object_depends_stmt(); node_.alter_object_depends_stmt_ = CreateMaybeMessage< ::pg_query::AlterObjectDependsStmt >(GetArena()); } return node_.alter_object_depends_stmt_; } inline ::pg_query::AlterObjectDependsStmt* Node::mutable_alter_object_depends_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_object_depends_stmt) return _internal_mutable_alter_object_depends_stmt(); } // .pg_query.AlterObjectSchemaStmt alter_object_schema_stmt = 122 [json_name = "AlterObjectSchemaStmt"]; inline bool Node::_internal_has_alter_object_schema_stmt() const { return node_case() == kAlterObjectSchemaStmt; } inline bool Node::has_alter_object_schema_stmt() const { return _internal_has_alter_object_schema_stmt(); } inline void Node::set_has_alter_object_schema_stmt() { _oneof_case_[0] = kAlterObjectSchemaStmt; } inline void Node::clear_alter_object_schema_stmt() { if (_internal_has_alter_object_schema_stmt()) { if (GetArena() == nullptr) { delete node_.alter_object_schema_stmt_; } clear_has_node(); } } inline ::pg_query::AlterObjectSchemaStmt* Node::release_alter_object_schema_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_object_schema_stmt) if (_internal_has_alter_object_schema_stmt()) { clear_has_node(); ::pg_query::AlterObjectSchemaStmt* temp = node_.alter_object_schema_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_object_schema_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterObjectSchemaStmt& Node::_internal_alter_object_schema_stmt() const { return _internal_has_alter_object_schema_stmt() ? *node_.alter_object_schema_stmt_ : reinterpret_cast< ::pg_query::AlterObjectSchemaStmt&>(::pg_query::_AlterObjectSchemaStmt_default_instance_); } inline const ::pg_query::AlterObjectSchemaStmt& Node::alter_object_schema_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_object_schema_stmt) return _internal_alter_object_schema_stmt(); } inline ::pg_query::AlterObjectSchemaStmt* Node::unsafe_arena_release_alter_object_schema_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_object_schema_stmt) if (_internal_has_alter_object_schema_stmt()) { clear_has_node(); ::pg_query::AlterObjectSchemaStmt* temp = node_.alter_object_schema_stmt_; node_.alter_object_schema_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_object_schema_stmt(::pg_query::AlterObjectSchemaStmt* alter_object_schema_stmt) { clear_node(); if (alter_object_schema_stmt) { set_has_alter_object_schema_stmt(); node_.alter_object_schema_stmt_ = alter_object_schema_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_object_schema_stmt) } inline ::pg_query::AlterObjectSchemaStmt* Node::_internal_mutable_alter_object_schema_stmt() { if (!_internal_has_alter_object_schema_stmt()) { clear_node(); set_has_alter_object_schema_stmt(); node_.alter_object_schema_stmt_ = CreateMaybeMessage< ::pg_query::AlterObjectSchemaStmt >(GetArena()); } return node_.alter_object_schema_stmt_; } inline ::pg_query::AlterObjectSchemaStmt* Node::mutable_alter_object_schema_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_object_schema_stmt) return _internal_mutable_alter_object_schema_stmt(); } // .pg_query.AlterOwnerStmt alter_owner_stmt = 123 [json_name = "AlterOwnerStmt"]; inline bool Node::_internal_has_alter_owner_stmt() const { return node_case() == kAlterOwnerStmt; } inline bool Node::has_alter_owner_stmt() const { return _internal_has_alter_owner_stmt(); } inline void Node::set_has_alter_owner_stmt() { _oneof_case_[0] = kAlterOwnerStmt; } inline void Node::clear_alter_owner_stmt() { if (_internal_has_alter_owner_stmt()) { if (GetArena() == nullptr) { delete node_.alter_owner_stmt_; } clear_has_node(); } } inline ::pg_query::AlterOwnerStmt* Node::release_alter_owner_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_owner_stmt) if (_internal_has_alter_owner_stmt()) { clear_has_node(); ::pg_query::AlterOwnerStmt* temp = node_.alter_owner_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_owner_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterOwnerStmt& Node::_internal_alter_owner_stmt() const { return _internal_has_alter_owner_stmt() ? *node_.alter_owner_stmt_ : reinterpret_cast< ::pg_query::AlterOwnerStmt&>(::pg_query::_AlterOwnerStmt_default_instance_); } inline const ::pg_query::AlterOwnerStmt& Node::alter_owner_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_owner_stmt) return _internal_alter_owner_stmt(); } inline ::pg_query::AlterOwnerStmt* Node::unsafe_arena_release_alter_owner_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_owner_stmt) if (_internal_has_alter_owner_stmt()) { clear_has_node(); ::pg_query::AlterOwnerStmt* temp = node_.alter_owner_stmt_; node_.alter_owner_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_owner_stmt(::pg_query::AlterOwnerStmt* alter_owner_stmt) { clear_node(); if (alter_owner_stmt) { set_has_alter_owner_stmt(); node_.alter_owner_stmt_ = alter_owner_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_owner_stmt) } inline ::pg_query::AlterOwnerStmt* Node::_internal_mutable_alter_owner_stmt() { if (!_internal_has_alter_owner_stmt()) { clear_node(); set_has_alter_owner_stmt(); node_.alter_owner_stmt_ = CreateMaybeMessage< ::pg_query::AlterOwnerStmt >(GetArena()); } return node_.alter_owner_stmt_; } inline ::pg_query::AlterOwnerStmt* Node::mutable_alter_owner_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_owner_stmt) return _internal_mutable_alter_owner_stmt(); } // .pg_query.AlterOperatorStmt alter_operator_stmt = 124 [json_name = "AlterOperatorStmt"]; inline bool Node::_internal_has_alter_operator_stmt() const { return node_case() == kAlterOperatorStmt; } inline bool Node::has_alter_operator_stmt() const { return _internal_has_alter_operator_stmt(); } inline void Node::set_has_alter_operator_stmt() { _oneof_case_[0] = kAlterOperatorStmt; } inline void Node::clear_alter_operator_stmt() { if (_internal_has_alter_operator_stmt()) { if (GetArena() == nullptr) { delete node_.alter_operator_stmt_; } clear_has_node(); } } inline ::pg_query::AlterOperatorStmt* Node::release_alter_operator_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_operator_stmt) if (_internal_has_alter_operator_stmt()) { clear_has_node(); ::pg_query::AlterOperatorStmt* temp = node_.alter_operator_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_operator_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterOperatorStmt& Node::_internal_alter_operator_stmt() const { return _internal_has_alter_operator_stmt() ? *node_.alter_operator_stmt_ : reinterpret_cast< ::pg_query::AlterOperatorStmt&>(::pg_query::_AlterOperatorStmt_default_instance_); } inline const ::pg_query::AlterOperatorStmt& Node::alter_operator_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_operator_stmt) return _internal_alter_operator_stmt(); } inline ::pg_query::AlterOperatorStmt* Node::unsafe_arena_release_alter_operator_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_operator_stmt) if (_internal_has_alter_operator_stmt()) { clear_has_node(); ::pg_query::AlterOperatorStmt* temp = node_.alter_operator_stmt_; node_.alter_operator_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_operator_stmt(::pg_query::AlterOperatorStmt* alter_operator_stmt) { clear_node(); if (alter_operator_stmt) { set_has_alter_operator_stmt(); node_.alter_operator_stmt_ = alter_operator_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_operator_stmt) } inline ::pg_query::AlterOperatorStmt* Node::_internal_mutable_alter_operator_stmt() { if (!_internal_has_alter_operator_stmt()) { clear_node(); set_has_alter_operator_stmt(); node_.alter_operator_stmt_ = CreateMaybeMessage< ::pg_query::AlterOperatorStmt >(GetArena()); } return node_.alter_operator_stmt_; } inline ::pg_query::AlterOperatorStmt* Node::mutable_alter_operator_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_operator_stmt) return _internal_mutable_alter_operator_stmt(); } // .pg_query.AlterTypeStmt alter_type_stmt = 125 [json_name = "AlterTypeStmt"]; inline bool Node::_internal_has_alter_type_stmt() const { return node_case() == kAlterTypeStmt; } inline bool Node::has_alter_type_stmt() const { return _internal_has_alter_type_stmt(); } inline void Node::set_has_alter_type_stmt() { _oneof_case_[0] = kAlterTypeStmt; } inline void Node::clear_alter_type_stmt() { if (_internal_has_alter_type_stmt()) { if (GetArena() == nullptr) { delete node_.alter_type_stmt_; } clear_has_node(); } } inline ::pg_query::AlterTypeStmt* Node::release_alter_type_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_type_stmt) if (_internal_has_alter_type_stmt()) { clear_has_node(); ::pg_query::AlterTypeStmt* temp = node_.alter_type_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_type_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTypeStmt& Node::_internal_alter_type_stmt() const { return _internal_has_alter_type_stmt() ? *node_.alter_type_stmt_ : reinterpret_cast< ::pg_query::AlterTypeStmt&>(::pg_query::_AlterTypeStmt_default_instance_); } inline const ::pg_query::AlterTypeStmt& Node::alter_type_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_type_stmt) return _internal_alter_type_stmt(); } inline ::pg_query::AlterTypeStmt* Node::unsafe_arena_release_alter_type_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_type_stmt) if (_internal_has_alter_type_stmt()) { clear_has_node(); ::pg_query::AlterTypeStmt* temp = node_.alter_type_stmt_; node_.alter_type_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_type_stmt(::pg_query::AlterTypeStmt* alter_type_stmt) { clear_node(); if (alter_type_stmt) { set_has_alter_type_stmt(); node_.alter_type_stmt_ = alter_type_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_type_stmt) } inline ::pg_query::AlterTypeStmt* Node::_internal_mutable_alter_type_stmt() { if (!_internal_has_alter_type_stmt()) { clear_node(); set_has_alter_type_stmt(); node_.alter_type_stmt_ = CreateMaybeMessage< ::pg_query::AlterTypeStmt >(GetArena()); } return node_.alter_type_stmt_; } inline ::pg_query::AlterTypeStmt* Node::mutable_alter_type_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_type_stmt) return _internal_mutable_alter_type_stmt(); } // .pg_query.DropOwnedStmt drop_owned_stmt = 126 [json_name = "DropOwnedStmt"]; inline bool Node::_internal_has_drop_owned_stmt() const { return node_case() == kDropOwnedStmt; } inline bool Node::has_drop_owned_stmt() const { return _internal_has_drop_owned_stmt(); } inline void Node::set_has_drop_owned_stmt() { _oneof_case_[0] = kDropOwnedStmt; } inline void Node::clear_drop_owned_stmt() { if (_internal_has_drop_owned_stmt()) { if (GetArena() == nullptr) { delete node_.drop_owned_stmt_; } clear_has_node(); } } inline ::pg_query::DropOwnedStmt* Node::release_drop_owned_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.drop_owned_stmt) if (_internal_has_drop_owned_stmt()) { clear_has_node(); ::pg_query::DropOwnedStmt* temp = node_.drop_owned_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.drop_owned_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropOwnedStmt& Node::_internal_drop_owned_stmt() const { return _internal_has_drop_owned_stmt() ? *node_.drop_owned_stmt_ : reinterpret_cast< ::pg_query::DropOwnedStmt&>(::pg_query::_DropOwnedStmt_default_instance_); } inline const ::pg_query::DropOwnedStmt& Node::drop_owned_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.drop_owned_stmt) return _internal_drop_owned_stmt(); } inline ::pg_query::DropOwnedStmt* Node::unsafe_arena_release_drop_owned_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_owned_stmt) if (_internal_has_drop_owned_stmt()) { clear_has_node(); ::pg_query::DropOwnedStmt* temp = node_.drop_owned_stmt_; node_.drop_owned_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_drop_owned_stmt(::pg_query::DropOwnedStmt* drop_owned_stmt) { clear_node(); if (drop_owned_stmt) { set_has_drop_owned_stmt(); node_.drop_owned_stmt_ = drop_owned_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_owned_stmt) } inline ::pg_query::DropOwnedStmt* Node::_internal_mutable_drop_owned_stmt() { if (!_internal_has_drop_owned_stmt()) { clear_node(); set_has_drop_owned_stmt(); node_.drop_owned_stmt_ = CreateMaybeMessage< ::pg_query::DropOwnedStmt >(GetArena()); } return node_.drop_owned_stmt_; } inline ::pg_query::DropOwnedStmt* Node::mutable_drop_owned_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_owned_stmt) return _internal_mutable_drop_owned_stmt(); } // .pg_query.ReassignOwnedStmt reassign_owned_stmt = 127 [json_name = "ReassignOwnedStmt"]; inline bool Node::_internal_has_reassign_owned_stmt() const { return node_case() == kReassignOwnedStmt; } inline bool Node::has_reassign_owned_stmt() const { return _internal_has_reassign_owned_stmt(); } inline void Node::set_has_reassign_owned_stmt() { _oneof_case_[0] = kReassignOwnedStmt; } inline void Node::clear_reassign_owned_stmt() { if (_internal_has_reassign_owned_stmt()) { if (GetArena() == nullptr) { delete node_.reassign_owned_stmt_; } clear_has_node(); } } inline ::pg_query::ReassignOwnedStmt* Node::release_reassign_owned_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.reassign_owned_stmt) if (_internal_has_reassign_owned_stmt()) { clear_has_node(); ::pg_query::ReassignOwnedStmt* temp = node_.reassign_owned_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.reassign_owned_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ReassignOwnedStmt& Node::_internal_reassign_owned_stmt() const { return _internal_has_reassign_owned_stmt() ? *node_.reassign_owned_stmt_ : reinterpret_cast< ::pg_query::ReassignOwnedStmt&>(::pg_query::_ReassignOwnedStmt_default_instance_); } inline const ::pg_query::ReassignOwnedStmt& Node::reassign_owned_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.reassign_owned_stmt) return _internal_reassign_owned_stmt(); } inline ::pg_query::ReassignOwnedStmt* Node::unsafe_arena_release_reassign_owned_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.reassign_owned_stmt) if (_internal_has_reassign_owned_stmt()) { clear_has_node(); ::pg_query::ReassignOwnedStmt* temp = node_.reassign_owned_stmt_; node_.reassign_owned_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_reassign_owned_stmt(::pg_query::ReassignOwnedStmt* reassign_owned_stmt) { clear_node(); if (reassign_owned_stmt) { set_has_reassign_owned_stmt(); node_.reassign_owned_stmt_ = reassign_owned_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.reassign_owned_stmt) } inline ::pg_query::ReassignOwnedStmt* Node::_internal_mutable_reassign_owned_stmt() { if (!_internal_has_reassign_owned_stmt()) { clear_node(); set_has_reassign_owned_stmt(); node_.reassign_owned_stmt_ = CreateMaybeMessage< ::pg_query::ReassignOwnedStmt >(GetArena()); } return node_.reassign_owned_stmt_; } inline ::pg_query::ReassignOwnedStmt* Node::mutable_reassign_owned_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.reassign_owned_stmt) return _internal_mutable_reassign_owned_stmt(); } // .pg_query.CompositeTypeStmt composite_type_stmt = 128 [json_name = "CompositeTypeStmt"]; inline bool Node::_internal_has_composite_type_stmt() const { return node_case() == kCompositeTypeStmt; } inline bool Node::has_composite_type_stmt() const { return _internal_has_composite_type_stmt(); } inline void Node::set_has_composite_type_stmt() { _oneof_case_[0] = kCompositeTypeStmt; } inline void Node::clear_composite_type_stmt() { if (_internal_has_composite_type_stmt()) { if (GetArena() == nullptr) { delete node_.composite_type_stmt_; } clear_has_node(); } } inline ::pg_query::CompositeTypeStmt* Node::release_composite_type_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.composite_type_stmt) if (_internal_has_composite_type_stmt()) { clear_has_node(); ::pg_query::CompositeTypeStmt* temp = node_.composite_type_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.composite_type_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CompositeTypeStmt& Node::_internal_composite_type_stmt() const { return _internal_has_composite_type_stmt() ? *node_.composite_type_stmt_ : reinterpret_cast< ::pg_query::CompositeTypeStmt&>(::pg_query::_CompositeTypeStmt_default_instance_); } inline const ::pg_query::CompositeTypeStmt& Node::composite_type_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.composite_type_stmt) return _internal_composite_type_stmt(); } inline ::pg_query::CompositeTypeStmt* Node::unsafe_arena_release_composite_type_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.composite_type_stmt) if (_internal_has_composite_type_stmt()) { clear_has_node(); ::pg_query::CompositeTypeStmt* temp = node_.composite_type_stmt_; node_.composite_type_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_composite_type_stmt(::pg_query::CompositeTypeStmt* composite_type_stmt) { clear_node(); if (composite_type_stmt) { set_has_composite_type_stmt(); node_.composite_type_stmt_ = composite_type_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.composite_type_stmt) } inline ::pg_query::CompositeTypeStmt* Node::_internal_mutable_composite_type_stmt() { if (!_internal_has_composite_type_stmt()) { clear_node(); set_has_composite_type_stmt(); node_.composite_type_stmt_ = CreateMaybeMessage< ::pg_query::CompositeTypeStmt >(GetArena()); } return node_.composite_type_stmt_; } inline ::pg_query::CompositeTypeStmt* Node::mutable_composite_type_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.composite_type_stmt) return _internal_mutable_composite_type_stmt(); } // .pg_query.CreateEnumStmt create_enum_stmt = 129 [json_name = "CreateEnumStmt"]; inline bool Node::_internal_has_create_enum_stmt() const { return node_case() == kCreateEnumStmt; } inline bool Node::has_create_enum_stmt() const { return _internal_has_create_enum_stmt(); } inline void Node::set_has_create_enum_stmt() { _oneof_case_[0] = kCreateEnumStmt; } inline void Node::clear_create_enum_stmt() { if (_internal_has_create_enum_stmt()) { if (GetArena() == nullptr) { delete node_.create_enum_stmt_; } clear_has_node(); } } inline ::pg_query::CreateEnumStmt* Node::release_create_enum_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_enum_stmt) if (_internal_has_create_enum_stmt()) { clear_has_node(); ::pg_query::CreateEnumStmt* temp = node_.create_enum_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_enum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateEnumStmt& Node::_internal_create_enum_stmt() const { return _internal_has_create_enum_stmt() ? *node_.create_enum_stmt_ : reinterpret_cast< ::pg_query::CreateEnumStmt&>(::pg_query::_CreateEnumStmt_default_instance_); } inline const ::pg_query::CreateEnumStmt& Node::create_enum_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_enum_stmt) return _internal_create_enum_stmt(); } inline ::pg_query::CreateEnumStmt* Node::unsafe_arena_release_create_enum_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_enum_stmt) if (_internal_has_create_enum_stmt()) { clear_has_node(); ::pg_query::CreateEnumStmt* temp = node_.create_enum_stmt_; node_.create_enum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_enum_stmt(::pg_query::CreateEnumStmt* create_enum_stmt) { clear_node(); if (create_enum_stmt) { set_has_create_enum_stmt(); node_.create_enum_stmt_ = create_enum_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_enum_stmt) } inline ::pg_query::CreateEnumStmt* Node::_internal_mutable_create_enum_stmt() { if (!_internal_has_create_enum_stmt()) { clear_node(); set_has_create_enum_stmt(); node_.create_enum_stmt_ = CreateMaybeMessage< ::pg_query::CreateEnumStmt >(GetArena()); } return node_.create_enum_stmt_; } inline ::pg_query::CreateEnumStmt* Node::mutable_create_enum_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_enum_stmt) return _internal_mutable_create_enum_stmt(); } // .pg_query.CreateRangeStmt create_range_stmt = 130 [json_name = "CreateRangeStmt"]; inline bool Node::_internal_has_create_range_stmt() const { return node_case() == kCreateRangeStmt; } inline bool Node::has_create_range_stmt() const { return _internal_has_create_range_stmt(); } inline void Node::set_has_create_range_stmt() { _oneof_case_[0] = kCreateRangeStmt; } inline void Node::clear_create_range_stmt() { if (_internal_has_create_range_stmt()) { if (GetArena() == nullptr) { delete node_.create_range_stmt_; } clear_has_node(); } } inline ::pg_query::CreateRangeStmt* Node::release_create_range_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_range_stmt) if (_internal_has_create_range_stmt()) { clear_has_node(); ::pg_query::CreateRangeStmt* temp = node_.create_range_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_range_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateRangeStmt& Node::_internal_create_range_stmt() const { return _internal_has_create_range_stmt() ? *node_.create_range_stmt_ : reinterpret_cast< ::pg_query::CreateRangeStmt&>(::pg_query::_CreateRangeStmt_default_instance_); } inline const ::pg_query::CreateRangeStmt& Node::create_range_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_range_stmt) return _internal_create_range_stmt(); } inline ::pg_query::CreateRangeStmt* Node::unsafe_arena_release_create_range_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_range_stmt) if (_internal_has_create_range_stmt()) { clear_has_node(); ::pg_query::CreateRangeStmt* temp = node_.create_range_stmt_; node_.create_range_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_range_stmt(::pg_query::CreateRangeStmt* create_range_stmt) { clear_node(); if (create_range_stmt) { set_has_create_range_stmt(); node_.create_range_stmt_ = create_range_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_range_stmt) } inline ::pg_query::CreateRangeStmt* Node::_internal_mutable_create_range_stmt() { if (!_internal_has_create_range_stmt()) { clear_node(); set_has_create_range_stmt(); node_.create_range_stmt_ = CreateMaybeMessage< ::pg_query::CreateRangeStmt >(GetArena()); } return node_.create_range_stmt_; } inline ::pg_query::CreateRangeStmt* Node::mutable_create_range_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_range_stmt) return _internal_mutable_create_range_stmt(); } // .pg_query.AlterEnumStmt alter_enum_stmt = 131 [json_name = "AlterEnumStmt"]; inline bool Node::_internal_has_alter_enum_stmt() const { return node_case() == kAlterEnumStmt; } inline bool Node::has_alter_enum_stmt() const { return _internal_has_alter_enum_stmt(); } inline void Node::set_has_alter_enum_stmt() { _oneof_case_[0] = kAlterEnumStmt; } inline void Node::clear_alter_enum_stmt() { if (_internal_has_alter_enum_stmt()) { if (GetArena() == nullptr) { delete node_.alter_enum_stmt_; } clear_has_node(); } } inline ::pg_query::AlterEnumStmt* Node::release_alter_enum_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_enum_stmt) if (_internal_has_alter_enum_stmt()) { clear_has_node(); ::pg_query::AlterEnumStmt* temp = node_.alter_enum_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_enum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterEnumStmt& Node::_internal_alter_enum_stmt() const { return _internal_has_alter_enum_stmt() ? *node_.alter_enum_stmt_ : reinterpret_cast< ::pg_query::AlterEnumStmt&>(::pg_query::_AlterEnumStmt_default_instance_); } inline const ::pg_query::AlterEnumStmt& Node::alter_enum_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_enum_stmt) return _internal_alter_enum_stmt(); } inline ::pg_query::AlterEnumStmt* Node::unsafe_arena_release_alter_enum_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_enum_stmt) if (_internal_has_alter_enum_stmt()) { clear_has_node(); ::pg_query::AlterEnumStmt* temp = node_.alter_enum_stmt_; node_.alter_enum_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_enum_stmt(::pg_query::AlterEnumStmt* alter_enum_stmt) { clear_node(); if (alter_enum_stmt) { set_has_alter_enum_stmt(); node_.alter_enum_stmt_ = alter_enum_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_enum_stmt) } inline ::pg_query::AlterEnumStmt* Node::_internal_mutable_alter_enum_stmt() { if (!_internal_has_alter_enum_stmt()) { clear_node(); set_has_alter_enum_stmt(); node_.alter_enum_stmt_ = CreateMaybeMessage< ::pg_query::AlterEnumStmt >(GetArena()); } return node_.alter_enum_stmt_; } inline ::pg_query::AlterEnumStmt* Node::mutable_alter_enum_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_enum_stmt) return _internal_mutable_alter_enum_stmt(); } // .pg_query.AlterTSDictionaryStmt alter_tsdictionary_stmt = 132 [json_name = "AlterTSDictionaryStmt"]; inline bool Node::_internal_has_alter_tsdictionary_stmt() const { return node_case() == kAlterTsdictionaryStmt; } inline bool Node::has_alter_tsdictionary_stmt() const { return _internal_has_alter_tsdictionary_stmt(); } inline void Node::set_has_alter_tsdictionary_stmt() { _oneof_case_[0] = kAlterTsdictionaryStmt; } inline void Node::clear_alter_tsdictionary_stmt() { if (_internal_has_alter_tsdictionary_stmt()) { if (GetArena() == nullptr) { delete node_.alter_tsdictionary_stmt_; } clear_has_node(); } } inline ::pg_query::AlterTSDictionaryStmt* Node::release_alter_tsdictionary_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_tsdictionary_stmt) if (_internal_has_alter_tsdictionary_stmt()) { clear_has_node(); ::pg_query::AlterTSDictionaryStmt* temp = node_.alter_tsdictionary_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_tsdictionary_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTSDictionaryStmt& Node::_internal_alter_tsdictionary_stmt() const { return _internal_has_alter_tsdictionary_stmt() ? *node_.alter_tsdictionary_stmt_ : reinterpret_cast< ::pg_query::AlterTSDictionaryStmt&>(::pg_query::_AlterTSDictionaryStmt_default_instance_); } inline const ::pg_query::AlterTSDictionaryStmt& Node::alter_tsdictionary_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_tsdictionary_stmt) return _internal_alter_tsdictionary_stmt(); } inline ::pg_query::AlterTSDictionaryStmt* Node::unsafe_arena_release_alter_tsdictionary_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_tsdictionary_stmt) if (_internal_has_alter_tsdictionary_stmt()) { clear_has_node(); ::pg_query::AlterTSDictionaryStmt* temp = node_.alter_tsdictionary_stmt_; node_.alter_tsdictionary_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_tsdictionary_stmt(::pg_query::AlterTSDictionaryStmt* alter_tsdictionary_stmt) { clear_node(); if (alter_tsdictionary_stmt) { set_has_alter_tsdictionary_stmt(); node_.alter_tsdictionary_stmt_ = alter_tsdictionary_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_tsdictionary_stmt) } inline ::pg_query::AlterTSDictionaryStmt* Node::_internal_mutable_alter_tsdictionary_stmt() { if (!_internal_has_alter_tsdictionary_stmt()) { clear_node(); set_has_alter_tsdictionary_stmt(); node_.alter_tsdictionary_stmt_ = CreateMaybeMessage< ::pg_query::AlterTSDictionaryStmt >(GetArena()); } return node_.alter_tsdictionary_stmt_; } inline ::pg_query::AlterTSDictionaryStmt* Node::mutable_alter_tsdictionary_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_tsdictionary_stmt) return _internal_mutable_alter_tsdictionary_stmt(); } // .pg_query.AlterTSConfigurationStmt alter_tsconfiguration_stmt = 133 [json_name = "AlterTSConfigurationStmt"]; inline bool Node::_internal_has_alter_tsconfiguration_stmt() const { return node_case() == kAlterTsconfigurationStmt; } inline bool Node::has_alter_tsconfiguration_stmt() const { return _internal_has_alter_tsconfiguration_stmt(); } inline void Node::set_has_alter_tsconfiguration_stmt() { _oneof_case_[0] = kAlterTsconfigurationStmt; } inline void Node::clear_alter_tsconfiguration_stmt() { if (_internal_has_alter_tsconfiguration_stmt()) { if (GetArena() == nullptr) { delete node_.alter_tsconfiguration_stmt_; } clear_has_node(); } } inline ::pg_query::AlterTSConfigurationStmt* Node::release_alter_tsconfiguration_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_tsconfiguration_stmt) if (_internal_has_alter_tsconfiguration_stmt()) { clear_has_node(); ::pg_query::AlterTSConfigurationStmt* temp = node_.alter_tsconfiguration_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_tsconfiguration_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTSConfigurationStmt& Node::_internal_alter_tsconfiguration_stmt() const { return _internal_has_alter_tsconfiguration_stmt() ? *node_.alter_tsconfiguration_stmt_ : reinterpret_cast< ::pg_query::AlterTSConfigurationStmt&>(::pg_query::_AlterTSConfigurationStmt_default_instance_); } inline const ::pg_query::AlterTSConfigurationStmt& Node::alter_tsconfiguration_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_tsconfiguration_stmt) return _internal_alter_tsconfiguration_stmt(); } inline ::pg_query::AlterTSConfigurationStmt* Node::unsafe_arena_release_alter_tsconfiguration_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_tsconfiguration_stmt) if (_internal_has_alter_tsconfiguration_stmt()) { clear_has_node(); ::pg_query::AlterTSConfigurationStmt* temp = node_.alter_tsconfiguration_stmt_; node_.alter_tsconfiguration_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_tsconfiguration_stmt(::pg_query::AlterTSConfigurationStmt* alter_tsconfiguration_stmt) { clear_node(); if (alter_tsconfiguration_stmt) { set_has_alter_tsconfiguration_stmt(); node_.alter_tsconfiguration_stmt_ = alter_tsconfiguration_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_tsconfiguration_stmt) } inline ::pg_query::AlterTSConfigurationStmt* Node::_internal_mutable_alter_tsconfiguration_stmt() { if (!_internal_has_alter_tsconfiguration_stmt()) { clear_node(); set_has_alter_tsconfiguration_stmt(); node_.alter_tsconfiguration_stmt_ = CreateMaybeMessage< ::pg_query::AlterTSConfigurationStmt >(GetArena()); } return node_.alter_tsconfiguration_stmt_; } inline ::pg_query::AlterTSConfigurationStmt* Node::mutable_alter_tsconfiguration_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_tsconfiguration_stmt) return _internal_mutable_alter_tsconfiguration_stmt(); } // .pg_query.CreateFdwStmt create_fdw_stmt = 134 [json_name = "CreateFdwStmt"]; inline bool Node::_internal_has_create_fdw_stmt() const { return node_case() == kCreateFdwStmt; } inline bool Node::has_create_fdw_stmt() const { return _internal_has_create_fdw_stmt(); } inline void Node::set_has_create_fdw_stmt() { _oneof_case_[0] = kCreateFdwStmt; } inline void Node::clear_create_fdw_stmt() { if (_internal_has_create_fdw_stmt()) { if (GetArena() == nullptr) { delete node_.create_fdw_stmt_; } clear_has_node(); } } inline ::pg_query::CreateFdwStmt* Node::release_create_fdw_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_fdw_stmt) if (_internal_has_create_fdw_stmt()) { clear_has_node(); ::pg_query::CreateFdwStmt* temp = node_.create_fdw_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_fdw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateFdwStmt& Node::_internal_create_fdw_stmt() const { return _internal_has_create_fdw_stmt() ? *node_.create_fdw_stmt_ : reinterpret_cast< ::pg_query::CreateFdwStmt&>(::pg_query::_CreateFdwStmt_default_instance_); } inline const ::pg_query::CreateFdwStmt& Node::create_fdw_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_fdw_stmt) return _internal_create_fdw_stmt(); } inline ::pg_query::CreateFdwStmt* Node::unsafe_arena_release_create_fdw_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_fdw_stmt) if (_internal_has_create_fdw_stmt()) { clear_has_node(); ::pg_query::CreateFdwStmt* temp = node_.create_fdw_stmt_; node_.create_fdw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_fdw_stmt(::pg_query::CreateFdwStmt* create_fdw_stmt) { clear_node(); if (create_fdw_stmt) { set_has_create_fdw_stmt(); node_.create_fdw_stmt_ = create_fdw_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_fdw_stmt) } inline ::pg_query::CreateFdwStmt* Node::_internal_mutable_create_fdw_stmt() { if (!_internal_has_create_fdw_stmt()) { clear_node(); set_has_create_fdw_stmt(); node_.create_fdw_stmt_ = CreateMaybeMessage< ::pg_query::CreateFdwStmt >(GetArena()); } return node_.create_fdw_stmt_; } inline ::pg_query::CreateFdwStmt* Node::mutable_create_fdw_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_fdw_stmt) return _internal_mutable_create_fdw_stmt(); } // .pg_query.AlterFdwStmt alter_fdw_stmt = 135 [json_name = "AlterFdwStmt"]; inline bool Node::_internal_has_alter_fdw_stmt() const { return node_case() == kAlterFdwStmt; } inline bool Node::has_alter_fdw_stmt() const { return _internal_has_alter_fdw_stmt(); } inline void Node::set_has_alter_fdw_stmt() { _oneof_case_[0] = kAlterFdwStmt; } inline void Node::clear_alter_fdw_stmt() { if (_internal_has_alter_fdw_stmt()) { if (GetArena() == nullptr) { delete node_.alter_fdw_stmt_; } clear_has_node(); } } inline ::pg_query::AlterFdwStmt* Node::release_alter_fdw_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_fdw_stmt) if (_internal_has_alter_fdw_stmt()) { clear_has_node(); ::pg_query::AlterFdwStmt* temp = node_.alter_fdw_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_fdw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterFdwStmt& Node::_internal_alter_fdw_stmt() const { return _internal_has_alter_fdw_stmt() ? *node_.alter_fdw_stmt_ : reinterpret_cast< ::pg_query::AlterFdwStmt&>(::pg_query::_AlterFdwStmt_default_instance_); } inline const ::pg_query::AlterFdwStmt& Node::alter_fdw_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_fdw_stmt) return _internal_alter_fdw_stmt(); } inline ::pg_query::AlterFdwStmt* Node::unsafe_arena_release_alter_fdw_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_fdw_stmt) if (_internal_has_alter_fdw_stmt()) { clear_has_node(); ::pg_query::AlterFdwStmt* temp = node_.alter_fdw_stmt_; node_.alter_fdw_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_fdw_stmt(::pg_query::AlterFdwStmt* alter_fdw_stmt) { clear_node(); if (alter_fdw_stmt) { set_has_alter_fdw_stmt(); node_.alter_fdw_stmt_ = alter_fdw_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_fdw_stmt) } inline ::pg_query::AlterFdwStmt* Node::_internal_mutable_alter_fdw_stmt() { if (!_internal_has_alter_fdw_stmt()) { clear_node(); set_has_alter_fdw_stmt(); node_.alter_fdw_stmt_ = CreateMaybeMessage< ::pg_query::AlterFdwStmt >(GetArena()); } return node_.alter_fdw_stmt_; } inline ::pg_query::AlterFdwStmt* Node::mutable_alter_fdw_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_fdw_stmt) return _internal_mutable_alter_fdw_stmt(); } // .pg_query.CreateForeignServerStmt create_foreign_server_stmt = 136 [json_name = "CreateForeignServerStmt"]; inline bool Node::_internal_has_create_foreign_server_stmt() const { return node_case() == kCreateForeignServerStmt; } inline bool Node::has_create_foreign_server_stmt() const { return _internal_has_create_foreign_server_stmt(); } inline void Node::set_has_create_foreign_server_stmt() { _oneof_case_[0] = kCreateForeignServerStmt; } inline void Node::clear_create_foreign_server_stmt() { if (_internal_has_create_foreign_server_stmt()) { if (GetArena() == nullptr) { delete node_.create_foreign_server_stmt_; } clear_has_node(); } } inline ::pg_query::CreateForeignServerStmt* Node::release_create_foreign_server_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_foreign_server_stmt) if (_internal_has_create_foreign_server_stmt()) { clear_has_node(); ::pg_query::CreateForeignServerStmt* temp = node_.create_foreign_server_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_foreign_server_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateForeignServerStmt& Node::_internal_create_foreign_server_stmt() const { return _internal_has_create_foreign_server_stmt() ? *node_.create_foreign_server_stmt_ : reinterpret_cast< ::pg_query::CreateForeignServerStmt&>(::pg_query::_CreateForeignServerStmt_default_instance_); } inline const ::pg_query::CreateForeignServerStmt& Node::create_foreign_server_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_foreign_server_stmt) return _internal_create_foreign_server_stmt(); } inline ::pg_query::CreateForeignServerStmt* Node::unsafe_arena_release_create_foreign_server_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_foreign_server_stmt) if (_internal_has_create_foreign_server_stmt()) { clear_has_node(); ::pg_query::CreateForeignServerStmt* temp = node_.create_foreign_server_stmt_; node_.create_foreign_server_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_foreign_server_stmt(::pg_query::CreateForeignServerStmt* create_foreign_server_stmt) { clear_node(); if (create_foreign_server_stmt) { set_has_create_foreign_server_stmt(); node_.create_foreign_server_stmt_ = create_foreign_server_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_foreign_server_stmt) } inline ::pg_query::CreateForeignServerStmt* Node::_internal_mutable_create_foreign_server_stmt() { if (!_internal_has_create_foreign_server_stmt()) { clear_node(); set_has_create_foreign_server_stmt(); node_.create_foreign_server_stmt_ = CreateMaybeMessage< ::pg_query::CreateForeignServerStmt >(GetArena()); } return node_.create_foreign_server_stmt_; } inline ::pg_query::CreateForeignServerStmt* Node::mutable_create_foreign_server_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_foreign_server_stmt) return _internal_mutable_create_foreign_server_stmt(); } // .pg_query.AlterForeignServerStmt alter_foreign_server_stmt = 137 [json_name = "AlterForeignServerStmt"]; inline bool Node::_internal_has_alter_foreign_server_stmt() const { return node_case() == kAlterForeignServerStmt; } inline bool Node::has_alter_foreign_server_stmt() const { return _internal_has_alter_foreign_server_stmt(); } inline void Node::set_has_alter_foreign_server_stmt() { _oneof_case_[0] = kAlterForeignServerStmt; } inline void Node::clear_alter_foreign_server_stmt() { if (_internal_has_alter_foreign_server_stmt()) { if (GetArena() == nullptr) { delete node_.alter_foreign_server_stmt_; } clear_has_node(); } } inline ::pg_query::AlterForeignServerStmt* Node::release_alter_foreign_server_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_foreign_server_stmt) if (_internal_has_alter_foreign_server_stmt()) { clear_has_node(); ::pg_query::AlterForeignServerStmt* temp = node_.alter_foreign_server_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_foreign_server_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterForeignServerStmt& Node::_internal_alter_foreign_server_stmt() const { return _internal_has_alter_foreign_server_stmt() ? *node_.alter_foreign_server_stmt_ : reinterpret_cast< ::pg_query::AlterForeignServerStmt&>(::pg_query::_AlterForeignServerStmt_default_instance_); } inline const ::pg_query::AlterForeignServerStmt& Node::alter_foreign_server_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_foreign_server_stmt) return _internal_alter_foreign_server_stmt(); } inline ::pg_query::AlterForeignServerStmt* Node::unsafe_arena_release_alter_foreign_server_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_foreign_server_stmt) if (_internal_has_alter_foreign_server_stmt()) { clear_has_node(); ::pg_query::AlterForeignServerStmt* temp = node_.alter_foreign_server_stmt_; node_.alter_foreign_server_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_foreign_server_stmt(::pg_query::AlterForeignServerStmt* alter_foreign_server_stmt) { clear_node(); if (alter_foreign_server_stmt) { set_has_alter_foreign_server_stmt(); node_.alter_foreign_server_stmt_ = alter_foreign_server_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_foreign_server_stmt) } inline ::pg_query::AlterForeignServerStmt* Node::_internal_mutable_alter_foreign_server_stmt() { if (!_internal_has_alter_foreign_server_stmt()) { clear_node(); set_has_alter_foreign_server_stmt(); node_.alter_foreign_server_stmt_ = CreateMaybeMessage< ::pg_query::AlterForeignServerStmt >(GetArena()); } return node_.alter_foreign_server_stmt_; } inline ::pg_query::AlterForeignServerStmt* Node::mutable_alter_foreign_server_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_foreign_server_stmt) return _internal_mutable_alter_foreign_server_stmt(); } // .pg_query.CreateUserMappingStmt create_user_mapping_stmt = 138 [json_name = "CreateUserMappingStmt"]; inline bool Node::_internal_has_create_user_mapping_stmt() const { return node_case() == kCreateUserMappingStmt; } inline bool Node::has_create_user_mapping_stmt() const { return _internal_has_create_user_mapping_stmt(); } inline void Node::set_has_create_user_mapping_stmt() { _oneof_case_[0] = kCreateUserMappingStmt; } inline void Node::clear_create_user_mapping_stmt() { if (_internal_has_create_user_mapping_stmt()) { if (GetArena() == nullptr) { delete node_.create_user_mapping_stmt_; } clear_has_node(); } } inline ::pg_query::CreateUserMappingStmt* Node::release_create_user_mapping_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_user_mapping_stmt) if (_internal_has_create_user_mapping_stmt()) { clear_has_node(); ::pg_query::CreateUserMappingStmt* temp = node_.create_user_mapping_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_user_mapping_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateUserMappingStmt& Node::_internal_create_user_mapping_stmt() const { return _internal_has_create_user_mapping_stmt() ? *node_.create_user_mapping_stmt_ : reinterpret_cast< ::pg_query::CreateUserMappingStmt&>(::pg_query::_CreateUserMappingStmt_default_instance_); } inline const ::pg_query::CreateUserMappingStmt& Node::create_user_mapping_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_user_mapping_stmt) return _internal_create_user_mapping_stmt(); } inline ::pg_query::CreateUserMappingStmt* Node::unsafe_arena_release_create_user_mapping_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_user_mapping_stmt) if (_internal_has_create_user_mapping_stmt()) { clear_has_node(); ::pg_query::CreateUserMappingStmt* temp = node_.create_user_mapping_stmt_; node_.create_user_mapping_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_user_mapping_stmt(::pg_query::CreateUserMappingStmt* create_user_mapping_stmt) { clear_node(); if (create_user_mapping_stmt) { set_has_create_user_mapping_stmt(); node_.create_user_mapping_stmt_ = create_user_mapping_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_user_mapping_stmt) } inline ::pg_query::CreateUserMappingStmt* Node::_internal_mutable_create_user_mapping_stmt() { if (!_internal_has_create_user_mapping_stmt()) { clear_node(); set_has_create_user_mapping_stmt(); node_.create_user_mapping_stmt_ = CreateMaybeMessage< ::pg_query::CreateUserMappingStmt >(GetArena()); } return node_.create_user_mapping_stmt_; } inline ::pg_query::CreateUserMappingStmt* Node::mutable_create_user_mapping_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_user_mapping_stmt) return _internal_mutable_create_user_mapping_stmt(); } // .pg_query.AlterUserMappingStmt alter_user_mapping_stmt = 139 [json_name = "AlterUserMappingStmt"]; inline bool Node::_internal_has_alter_user_mapping_stmt() const { return node_case() == kAlterUserMappingStmt; } inline bool Node::has_alter_user_mapping_stmt() const { return _internal_has_alter_user_mapping_stmt(); } inline void Node::set_has_alter_user_mapping_stmt() { _oneof_case_[0] = kAlterUserMappingStmt; } inline void Node::clear_alter_user_mapping_stmt() { if (_internal_has_alter_user_mapping_stmt()) { if (GetArena() == nullptr) { delete node_.alter_user_mapping_stmt_; } clear_has_node(); } } inline ::pg_query::AlterUserMappingStmt* Node::release_alter_user_mapping_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_user_mapping_stmt) if (_internal_has_alter_user_mapping_stmt()) { clear_has_node(); ::pg_query::AlterUserMappingStmt* temp = node_.alter_user_mapping_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_user_mapping_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterUserMappingStmt& Node::_internal_alter_user_mapping_stmt() const { return _internal_has_alter_user_mapping_stmt() ? *node_.alter_user_mapping_stmt_ : reinterpret_cast< ::pg_query::AlterUserMappingStmt&>(::pg_query::_AlterUserMappingStmt_default_instance_); } inline const ::pg_query::AlterUserMappingStmt& Node::alter_user_mapping_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_user_mapping_stmt) return _internal_alter_user_mapping_stmt(); } inline ::pg_query::AlterUserMappingStmt* Node::unsafe_arena_release_alter_user_mapping_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_user_mapping_stmt) if (_internal_has_alter_user_mapping_stmt()) { clear_has_node(); ::pg_query::AlterUserMappingStmt* temp = node_.alter_user_mapping_stmt_; node_.alter_user_mapping_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_user_mapping_stmt(::pg_query::AlterUserMappingStmt* alter_user_mapping_stmt) { clear_node(); if (alter_user_mapping_stmt) { set_has_alter_user_mapping_stmt(); node_.alter_user_mapping_stmt_ = alter_user_mapping_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_user_mapping_stmt) } inline ::pg_query::AlterUserMappingStmt* Node::_internal_mutable_alter_user_mapping_stmt() { if (!_internal_has_alter_user_mapping_stmt()) { clear_node(); set_has_alter_user_mapping_stmt(); node_.alter_user_mapping_stmt_ = CreateMaybeMessage< ::pg_query::AlterUserMappingStmt >(GetArena()); } return node_.alter_user_mapping_stmt_; } inline ::pg_query::AlterUserMappingStmt* Node::mutable_alter_user_mapping_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_user_mapping_stmt) return _internal_mutable_alter_user_mapping_stmt(); } // .pg_query.DropUserMappingStmt drop_user_mapping_stmt = 140 [json_name = "DropUserMappingStmt"]; inline bool Node::_internal_has_drop_user_mapping_stmt() const { return node_case() == kDropUserMappingStmt; } inline bool Node::has_drop_user_mapping_stmt() const { return _internal_has_drop_user_mapping_stmt(); } inline void Node::set_has_drop_user_mapping_stmt() { _oneof_case_[0] = kDropUserMappingStmt; } inline void Node::clear_drop_user_mapping_stmt() { if (_internal_has_drop_user_mapping_stmt()) { if (GetArena() == nullptr) { delete node_.drop_user_mapping_stmt_; } clear_has_node(); } } inline ::pg_query::DropUserMappingStmt* Node::release_drop_user_mapping_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.drop_user_mapping_stmt) if (_internal_has_drop_user_mapping_stmt()) { clear_has_node(); ::pg_query::DropUserMappingStmt* temp = node_.drop_user_mapping_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.drop_user_mapping_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropUserMappingStmt& Node::_internal_drop_user_mapping_stmt() const { return _internal_has_drop_user_mapping_stmt() ? *node_.drop_user_mapping_stmt_ : reinterpret_cast< ::pg_query::DropUserMappingStmt&>(::pg_query::_DropUserMappingStmt_default_instance_); } inline const ::pg_query::DropUserMappingStmt& Node::drop_user_mapping_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.drop_user_mapping_stmt) return _internal_drop_user_mapping_stmt(); } inline ::pg_query::DropUserMappingStmt* Node::unsafe_arena_release_drop_user_mapping_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_user_mapping_stmt) if (_internal_has_drop_user_mapping_stmt()) { clear_has_node(); ::pg_query::DropUserMappingStmt* temp = node_.drop_user_mapping_stmt_; node_.drop_user_mapping_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_drop_user_mapping_stmt(::pg_query::DropUserMappingStmt* drop_user_mapping_stmt) { clear_node(); if (drop_user_mapping_stmt) { set_has_drop_user_mapping_stmt(); node_.drop_user_mapping_stmt_ = drop_user_mapping_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_user_mapping_stmt) } inline ::pg_query::DropUserMappingStmt* Node::_internal_mutable_drop_user_mapping_stmt() { if (!_internal_has_drop_user_mapping_stmt()) { clear_node(); set_has_drop_user_mapping_stmt(); node_.drop_user_mapping_stmt_ = CreateMaybeMessage< ::pg_query::DropUserMappingStmt >(GetArena()); } return node_.drop_user_mapping_stmt_; } inline ::pg_query::DropUserMappingStmt* Node::mutable_drop_user_mapping_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_user_mapping_stmt) return _internal_mutable_drop_user_mapping_stmt(); } // .pg_query.AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 141 [json_name = "AlterTableSpaceOptionsStmt"]; inline bool Node::_internal_has_alter_table_space_options_stmt() const { return node_case() == kAlterTableSpaceOptionsStmt; } inline bool Node::has_alter_table_space_options_stmt() const { return _internal_has_alter_table_space_options_stmt(); } inline void Node::set_has_alter_table_space_options_stmt() { _oneof_case_[0] = kAlterTableSpaceOptionsStmt; } inline void Node::clear_alter_table_space_options_stmt() { if (_internal_has_alter_table_space_options_stmt()) { if (GetArena() == nullptr) { delete node_.alter_table_space_options_stmt_; } clear_has_node(); } } inline ::pg_query::AlterTableSpaceOptionsStmt* Node::release_alter_table_space_options_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_table_space_options_stmt) if (_internal_has_alter_table_space_options_stmt()) { clear_has_node(); ::pg_query::AlterTableSpaceOptionsStmt* temp = node_.alter_table_space_options_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_table_space_options_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTableSpaceOptionsStmt& Node::_internal_alter_table_space_options_stmt() const { return _internal_has_alter_table_space_options_stmt() ? *node_.alter_table_space_options_stmt_ : reinterpret_cast< ::pg_query::AlterTableSpaceOptionsStmt&>(::pg_query::_AlterTableSpaceOptionsStmt_default_instance_); } inline const ::pg_query::AlterTableSpaceOptionsStmt& Node::alter_table_space_options_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_space_options_stmt) return _internal_alter_table_space_options_stmt(); } inline ::pg_query::AlterTableSpaceOptionsStmt* Node::unsafe_arena_release_alter_table_space_options_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_space_options_stmt) if (_internal_has_alter_table_space_options_stmt()) { clear_has_node(); ::pg_query::AlterTableSpaceOptionsStmt* temp = node_.alter_table_space_options_stmt_; node_.alter_table_space_options_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_table_space_options_stmt(::pg_query::AlterTableSpaceOptionsStmt* alter_table_space_options_stmt) { clear_node(); if (alter_table_space_options_stmt) { set_has_alter_table_space_options_stmt(); node_.alter_table_space_options_stmt_ = alter_table_space_options_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_space_options_stmt) } inline ::pg_query::AlterTableSpaceOptionsStmt* Node::_internal_mutable_alter_table_space_options_stmt() { if (!_internal_has_alter_table_space_options_stmt()) { clear_node(); set_has_alter_table_space_options_stmt(); node_.alter_table_space_options_stmt_ = CreateMaybeMessage< ::pg_query::AlterTableSpaceOptionsStmt >(GetArena()); } return node_.alter_table_space_options_stmt_; } inline ::pg_query::AlterTableSpaceOptionsStmt* Node::mutable_alter_table_space_options_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_space_options_stmt) return _internal_mutable_alter_table_space_options_stmt(); } // .pg_query.AlterTableMoveAllStmt alter_table_move_all_stmt = 142 [json_name = "AlterTableMoveAllStmt"]; inline bool Node::_internal_has_alter_table_move_all_stmt() const { return node_case() == kAlterTableMoveAllStmt; } inline bool Node::has_alter_table_move_all_stmt() const { return _internal_has_alter_table_move_all_stmt(); } inline void Node::set_has_alter_table_move_all_stmt() { _oneof_case_[0] = kAlterTableMoveAllStmt; } inline void Node::clear_alter_table_move_all_stmt() { if (_internal_has_alter_table_move_all_stmt()) { if (GetArena() == nullptr) { delete node_.alter_table_move_all_stmt_; } clear_has_node(); } } inline ::pg_query::AlterTableMoveAllStmt* Node::release_alter_table_move_all_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_table_move_all_stmt) if (_internal_has_alter_table_move_all_stmt()) { clear_has_node(); ::pg_query::AlterTableMoveAllStmt* temp = node_.alter_table_move_all_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_table_move_all_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterTableMoveAllStmt& Node::_internal_alter_table_move_all_stmt() const { return _internal_has_alter_table_move_all_stmt() ? *node_.alter_table_move_all_stmt_ : reinterpret_cast< ::pg_query::AlterTableMoveAllStmt&>(::pg_query::_AlterTableMoveAllStmt_default_instance_); } inline const ::pg_query::AlterTableMoveAllStmt& Node::alter_table_move_all_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_table_move_all_stmt) return _internal_alter_table_move_all_stmt(); } inline ::pg_query::AlterTableMoveAllStmt* Node::unsafe_arena_release_alter_table_move_all_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_table_move_all_stmt) if (_internal_has_alter_table_move_all_stmt()) { clear_has_node(); ::pg_query::AlterTableMoveAllStmt* temp = node_.alter_table_move_all_stmt_; node_.alter_table_move_all_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_table_move_all_stmt(::pg_query::AlterTableMoveAllStmt* alter_table_move_all_stmt) { clear_node(); if (alter_table_move_all_stmt) { set_has_alter_table_move_all_stmt(); node_.alter_table_move_all_stmt_ = alter_table_move_all_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_table_move_all_stmt) } inline ::pg_query::AlterTableMoveAllStmt* Node::_internal_mutable_alter_table_move_all_stmt() { if (!_internal_has_alter_table_move_all_stmt()) { clear_node(); set_has_alter_table_move_all_stmt(); node_.alter_table_move_all_stmt_ = CreateMaybeMessage< ::pg_query::AlterTableMoveAllStmt >(GetArena()); } return node_.alter_table_move_all_stmt_; } inline ::pg_query::AlterTableMoveAllStmt* Node::mutable_alter_table_move_all_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_table_move_all_stmt) return _internal_mutable_alter_table_move_all_stmt(); } // .pg_query.SecLabelStmt sec_label_stmt = 143 [json_name = "SecLabelStmt"]; inline bool Node::_internal_has_sec_label_stmt() const { return node_case() == kSecLabelStmt; } inline bool Node::has_sec_label_stmt() const { return _internal_has_sec_label_stmt(); } inline void Node::set_has_sec_label_stmt() { _oneof_case_[0] = kSecLabelStmt; } inline void Node::clear_sec_label_stmt() { if (_internal_has_sec_label_stmt()) { if (GetArena() == nullptr) { delete node_.sec_label_stmt_; } clear_has_node(); } } inline ::pg_query::SecLabelStmt* Node::release_sec_label_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.sec_label_stmt) if (_internal_has_sec_label_stmt()) { clear_has_node(); ::pg_query::SecLabelStmt* temp = node_.sec_label_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.sec_label_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SecLabelStmt& Node::_internal_sec_label_stmt() const { return _internal_has_sec_label_stmt() ? *node_.sec_label_stmt_ : reinterpret_cast< ::pg_query::SecLabelStmt&>(::pg_query::_SecLabelStmt_default_instance_); } inline const ::pg_query::SecLabelStmt& Node::sec_label_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.sec_label_stmt) return _internal_sec_label_stmt(); } inline ::pg_query::SecLabelStmt* Node::unsafe_arena_release_sec_label_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sec_label_stmt) if (_internal_has_sec_label_stmt()) { clear_has_node(); ::pg_query::SecLabelStmt* temp = node_.sec_label_stmt_; node_.sec_label_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sec_label_stmt(::pg_query::SecLabelStmt* sec_label_stmt) { clear_node(); if (sec_label_stmt) { set_has_sec_label_stmt(); node_.sec_label_stmt_ = sec_label_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sec_label_stmt) } inline ::pg_query::SecLabelStmt* Node::_internal_mutable_sec_label_stmt() { if (!_internal_has_sec_label_stmt()) { clear_node(); set_has_sec_label_stmt(); node_.sec_label_stmt_ = CreateMaybeMessage< ::pg_query::SecLabelStmt >(GetArena()); } return node_.sec_label_stmt_; } inline ::pg_query::SecLabelStmt* Node::mutable_sec_label_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.sec_label_stmt) return _internal_mutable_sec_label_stmt(); } // .pg_query.CreateForeignTableStmt create_foreign_table_stmt = 144 [json_name = "CreateForeignTableStmt"]; inline bool Node::_internal_has_create_foreign_table_stmt() const { return node_case() == kCreateForeignTableStmt; } inline bool Node::has_create_foreign_table_stmt() const { return _internal_has_create_foreign_table_stmt(); } inline void Node::set_has_create_foreign_table_stmt() { _oneof_case_[0] = kCreateForeignTableStmt; } inline void Node::clear_create_foreign_table_stmt() { if (_internal_has_create_foreign_table_stmt()) { if (GetArena() == nullptr) { delete node_.create_foreign_table_stmt_; } clear_has_node(); } } inline ::pg_query::CreateForeignTableStmt* Node::release_create_foreign_table_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_foreign_table_stmt) if (_internal_has_create_foreign_table_stmt()) { clear_has_node(); ::pg_query::CreateForeignTableStmt* temp = node_.create_foreign_table_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_foreign_table_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateForeignTableStmt& Node::_internal_create_foreign_table_stmt() const { return _internal_has_create_foreign_table_stmt() ? *node_.create_foreign_table_stmt_ : reinterpret_cast< ::pg_query::CreateForeignTableStmt&>(::pg_query::_CreateForeignTableStmt_default_instance_); } inline const ::pg_query::CreateForeignTableStmt& Node::create_foreign_table_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_foreign_table_stmt) return _internal_create_foreign_table_stmt(); } inline ::pg_query::CreateForeignTableStmt* Node::unsafe_arena_release_create_foreign_table_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_foreign_table_stmt) if (_internal_has_create_foreign_table_stmt()) { clear_has_node(); ::pg_query::CreateForeignTableStmt* temp = node_.create_foreign_table_stmt_; node_.create_foreign_table_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_foreign_table_stmt(::pg_query::CreateForeignTableStmt* create_foreign_table_stmt) { clear_node(); if (create_foreign_table_stmt) { set_has_create_foreign_table_stmt(); node_.create_foreign_table_stmt_ = create_foreign_table_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_foreign_table_stmt) } inline ::pg_query::CreateForeignTableStmt* Node::_internal_mutable_create_foreign_table_stmt() { if (!_internal_has_create_foreign_table_stmt()) { clear_node(); set_has_create_foreign_table_stmt(); node_.create_foreign_table_stmt_ = CreateMaybeMessage< ::pg_query::CreateForeignTableStmt >(GetArena()); } return node_.create_foreign_table_stmt_; } inline ::pg_query::CreateForeignTableStmt* Node::mutable_create_foreign_table_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_foreign_table_stmt) return _internal_mutable_create_foreign_table_stmt(); } // .pg_query.ImportForeignSchemaStmt import_foreign_schema_stmt = 145 [json_name = "ImportForeignSchemaStmt"]; inline bool Node::_internal_has_import_foreign_schema_stmt() const { return node_case() == kImportForeignSchemaStmt; } inline bool Node::has_import_foreign_schema_stmt() const { return _internal_has_import_foreign_schema_stmt(); } inline void Node::set_has_import_foreign_schema_stmt() { _oneof_case_[0] = kImportForeignSchemaStmt; } inline void Node::clear_import_foreign_schema_stmt() { if (_internal_has_import_foreign_schema_stmt()) { if (GetArena() == nullptr) { delete node_.import_foreign_schema_stmt_; } clear_has_node(); } } inline ::pg_query::ImportForeignSchemaStmt* Node::release_import_foreign_schema_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.import_foreign_schema_stmt) if (_internal_has_import_foreign_schema_stmt()) { clear_has_node(); ::pg_query::ImportForeignSchemaStmt* temp = node_.import_foreign_schema_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.import_foreign_schema_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ImportForeignSchemaStmt& Node::_internal_import_foreign_schema_stmt() const { return _internal_has_import_foreign_schema_stmt() ? *node_.import_foreign_schema_stmt_ : reinterpret_cast< ::pg_query::ImportForeignSchemaStmt&>(::pg_query::_ImportForeignSchemaStmt_default_instance_); } inline const ::pg_query::ImportForeignSchemaStmt& Node::import_foreign_schema_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.import_foreign_schema_stmt) return _internal_import_foreign_schema_stmt(); } inline ::pg_query::ImportForeignSchemaStmt* Node::unsafe_arena_release_import_foreign_schema_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.import_foreign_schema_stmt) if (_internal_has_import_foreign_schema_stmt()) { clear_has_node(); ::pg_query::ImportForeignSchemaStmt* temp = node_.import_foreign_schema_stmt_; node_.import_foreign_schema_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_import_foreign_schema_stmt(::pg_query::ImportForeignSchemaStmt* import_foreign_schema_stmt) { clear_node(); if (import_foreign_schema_stmt) { set_has_import_foreign_schema_stmt(); node_.import_foreign_schema_stmt_ = import_foreign_schema_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.import_foreign_schema_stmt) } inline ::pg_query::ImportForeignSchemaStmt* Node::_internal_mutable_import_foreign_schema_stmt() { if (!_internal_has_import_foreign_schema_stmt()) { clear_node(); set_has_import_foreign_schema_stmt(); node_.import_foreign_schema_stmt_ = CreateMaybeMessage< ::pg_query::ImportForeignSchemaStmt >(GetArena()); } return node_.import_foreign_schema_stmt_; } inline ::pg_query::ImportForeignSchemaStmt* Node::mutable_import_foreign_schema_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.import_foreign_schema_stmt) return _internal_mutable_import_foreign_schema_stmt(); } // .pg_query.CreateExtensionStmt create_extension_stmt = 146 [json_name = "CreateExtensionStmt"]; inline bool Node::_internal_has_create_extension_stmt() const { return node_case() == kCreateExtensionStmt; } inline bool Node::has_create_extension_stmt() const { return _internal_has_create_extension_stmt(); } inline void Node::set_has_create_extension_stmt() { _oneof_case_[0] = kCreateExtensionStmt; } inline void Node::clear_create_extension_stmt() { if (_internal_has_create_extension_stmt()) { if (GetArena() == nullptr) { delete node_.create_extension_stmt_; } clear_has_node(); } } inline ::pg_query::CreateExtensionStmt* Node::release_create_extension_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_extension_stmt) if (_internal_has_create_extension_stmt()) { clear_has_node(); ::pg_query::CreateExtensionStmt* temp = node_.create_extension_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_extension_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateExtensionStmt& Node::_internal_create_extension_stmt() const { return _internal_has_create_extension_stmt() ? *node_.create_extension_stmt_ : reinterpret_cast< ::pg_query::CreateExtensionStmt&>(::pg_query::_CreateExtensionStmt_default_instance_); } inline const ::pg_query::CreateExtensionStmt& Node::create_extension_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_extension_stmt) return _internal_create_extension_stmt(); } inline ::pg_query::CreateExtensionStmt* Node::unsafe_arena_release_create_extension_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_extension_stmt) if (_internal_has_create_extension_stmt()) { clear_has_node(); ::pg_query::CreateExtensionStmt* temp = node_.create_extension_stmt_; node_.create_extension_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_extension_stmt(::pg_query::CreateExtensionStmt* create_extension_stmt) { clear_node(); if (create_extension_stmt) { set_has_create_extension_stmt(); node_.create_extension_stmt_ = create_extension_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_extension_stmt) } inline ::pg_query::CreateExtensionStmt* Node::_internal_mutable_create_extension_stmt() { if (!_internal_has_create_extension_stmt()) { clear_node(); set_has_create_extension_stmt(); node_.create_extension_stmt_ = CreateMaybeMessage< ::pg_query::CreateExtensionStmt >(GetArena()); } return node_.create_extension_stmt_; } inline ::pg_query::CreateExtensionStmt* Node::mutable_create_extension_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_extension_stmt) return _internal_mutable_create_extension_stmt(); } // .pg_query.AlterExtensionStmt alter_extension_stmt = 147 [json_name = "AlterExtensionStmt"]; inline bool Node::_internal_has_alter_extension_stmt() const { return node_case() == kAlterExtensionStmt; } inline bool Node::has_alter_extension_stmt() const { return _internal_has_alter_extension_stmt(); } inline void Node::set_has_alter_extension_stmt() { _oneof_case_[0] = kAlterExtensionStmt; } inline void Node::clear_alter_extension_stmt() { if (_internal_has_alter_extension_stmt()) { if (GetArena() == nullptr) { delete node_.alter_extension_stmt_; } clear_has_node(); } } inline ::pg_query::AlterExtensionStmt* Node::release_alter_extension_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_extension_stmt) if (_internal_has_alter_extension_stmt()) { clear_has_node(); ::pg_query::AlterExtensionStmt* temp = node_.alter_extension_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_extension_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterExtensionStmt& Node::_internal_alter_extension_stmt() const { return _internal_has_alter_extension_stmt() ? *node_.alter_extension_stmt_ : reinterpret_cast< ::pg_query::AlterExtensionStmt&>(::pg_query::_AlterExtensionStmt_default_instance_); } inline const ::pg_query::AlterExtensionStmt& Node::alter_extension_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_extension_stmt) return _internal_alter_extension_stmt(); } inline ::pg_query::AlterExtensionStmt* Node::unsafe_arena_release_alter_extension_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_extension_stmt) if (_internal_has_alter_extension_stmt()) { clear_has_node(); ::pg_query::AlterExtensionStmt* temp = node_.alter_extension_stmt_; node_.alter_extension_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_extension_stmt(::pg_query::AlterExtensionStmt* alter_extension_stmt) { clear_node(); if (alter_extension_stmt) { set_has_alter_extension_stmt(); node_.alter_extension_stmt_ = alter_extension_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_extension_stmt) } inline ::pg_query::AlterExtensionStmt* Node::_internal_mutable_alter_extension_stmt() { if (!_internal_has_alter_extension_stmt()) { clear_node(); set_has_alter_extension_stmt(); node_.alter_extension_stmt_ = CreateMaybeMessage< ::pg_query::AlterExtensionStmt >(GetArena()); } return node_.alter_extension_stmt_; } inline ::pg_query::AlterExtensionStmt* Node::mutable_alter_extension_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_extension_stmt) return _internal_mutable_alter_extension_stmt(); } // .pg_query.AlterExtensionContentsStmt alter_extension_contents_stmt = 148 [json_name = "AlterExtensionContentsStmt"]; inline bool Node::_internal_has_alter_extension_contents_stmt() const { return node_case() == kAlterExtensionContentsStmt; } inline bool Node::has_alter_extension_contents_stmt() const { return _internal_has_alter_extension_contents_stmt(); } inline void Node::set_has_alter_extension_contents_stmt() { _oneof_case_[0] = kAlterExtensionContentsStmt; } inline void Node::clear_alter_extension_contents_stmt() { if (_internal_has_alter_extension_contents_stmt()) { if (GetArena() == nullptr) { delete node_.alter_extension_contents_stmt_; } clear_has_node(); } } inline ::pg_query::AlterExtensionContentsStmt* Node::release_alter_extension_contents_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_extension_contents_stmt) if (_internal_has_alter_extension_contents_stmt()) { clear_has_node(); ::pg_query::AlterExtensionContentsStmt* temp = node_.alter_extension_contents_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_extension_contents_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterExtensionContentsStmt& Node::_internal_alter_extension_contents_stmt() const { return _internal_has_alter_extension_contents_stmt() ? *node_.alter_extension_contents_stmt_ : reinterpret_cast< ::pg_query::AlterExtensionContentsStmt&>(::pg_query::_AlterExtensionContentsStmt_default_instance_); } inline const ::pg_query::AlterExtensionContentsStmt& Node::alter_extension_contents_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_extension_contents_stmt) return _internal_alter_extension_contents_stmt(); } inline ::pg_query::AlterExtensionContentsStmt* Node::unsafe_arena_release_alter_extension_contents_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_extension_contents_stmt) if (_internal_has_alter_extension_contents_stmt()) { clear_has_node(); ::pg_query::AlterExtensionContentsStmt* temp = node_.alter_extension_contents_stmt_; node_.alter_extension_contents_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_extension_contents_stmt(::pg_query::AlterExtensionContentsStmt* alter_extension_contents_stmt) { clear_node(); if (alter_extension_contents_stmt) { set_has_alter_extension_contents_stmt(); node_.alter_extension_contents_stmt_ = alter_extension_contents_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_extension_contents_stmt) } inline ::pg_query::AlterExtensionContentsStmt* Node::_internal_mutable_alter_extension_contents_stmt() { if (!_internal_has_alter_extension_contents_stmt()) { clear_node(); set_has_alter_extension_contents_stmt(); node_.alter_extension_contents_stmt_ = CreateMaybeMessage< ::pg_query::AlterExtensionContentsStmt >(GetArena()); } return node_.alter_extension_contents_stmt_; } inline ::pg_query::AlterExtensionContentsStmt* Node::mutable_alter_extension_contents_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_extension_contents_stmt) return _internal_mutable_alter_extension_contents_stmt(); } // .pg_query.CreateEventTrigStmt create_event_trig_stmt = 149 [json_name = "CreateEventTrigStmt"]; inline bool Node::_internal_has_create_event_trig_stmt() const { return node_case() == kCreateEventTrigStmt; } inline bool Node::has_create_event_trig_stmt() const { return _internal_has_create_event_trig_stmt(); } inline void Node::set_has_create_event_trig_stmt() { _oneof_case_[0] = kCreateEventTrigStmt; } inline void Node::clear_create_event_trig_stmt() { if (_internal_has_create_event_trig_stmt()) { if (GetArena() == nullptr) { delete node_.create_event_trig_stmt_; } clear_has_node(); } } inline ::pg_query::CreateEventTrigStmt* Node::release_create_event_trig_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_event_trig_stmt) if (_internal_has_create_event_trig_stmt()) { clear_has_node(); ::pg_query::CreateEventTrigStmt* temp = node_.create_event_trig_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_event_trig_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateEventTrigStmt& Node::_internal_create_event_trig_stmt() const { return _internal_has_create_event_trig_stmt() ? *node_.create_event_trig_stmt_ : reinterpret_cast< ::pg_query::CreateEventTrigStmt&>(::pg_query::_CreateEventTrigStmt_default_instance_); } inline const ::pg_query::CreateEventTrigStmt& Node::create_event_trig_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_event_trig_stmt) return _internal_create_event_trig_stmt(); } inline ::pg_query::CreateEventTrigStmt* Node::unsafe_arena_release_create_event_trig_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_event_trig_stmt) if (_internal_has_create_event_trig_stmt()) { clear_has_node(); ::pg_query::CreateEventTrigStmt* temp = node_.create_event_trig_stmt_; node_.create_event_trig_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_event_trig_stmt(::pg_query::CreateEventTrigStmt* create_event_trig_stmt) { clear_node(); if (create_event_trig_stmt) { set_has_create_event_trig_stmt(); node_.create_event_trig_stmt_ = create_event_trig_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_event_trig_stmt) } inline ::pg_query::CreateEventTrigStmt* Node::_internal_mutable_create_event_trig_stmt() { if (!_internal_has_create_event_trig_stmt()) { clear_node(); set_has_create_event_trig_stmt(); node_.create_event_trig_stmt_ = CreateMaybeMessage< ::pg_query::CreateEventTrigStmt >(GetArena()); } return node_.create_event_trig_stmt_; } inline ::pg_query::CreateEventTrigStmt* Node::mutable_create_event_trig_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_event_trig_stmt) return _internal_mutable_create_event_trig_stmt(); } // .pg_query.AlterEventTrigStmt alter_event_trig_stmt = 150 [json_name = "AlterEventTrigStmt"]; inline bool Node::_internal_has_alter_event_trig_stmt() const { return node_case() == kAlterEventTrigStmt; } inline bool Node::has_alter_event_trig_stmt() const { return _internal_has_alter_event_trig_stmt(); } inline void Node::set_has_alter_event_trig_stmt() { _oneof_case_[0] = kAlterEventTrigStmt; } inline void Node::clear_alter_event_trig_stmt() { if (_internal_has_alter_event_trig_stmt()) { if (GetArena() == nullptr) { delete node_.alter_event_trig_stmt_; } clear_has_node(); } } inline ::pg_query::AlterEventTrigStmt* Node::release_alter_event_trig_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_event_trig_stmt) if (_internal_has_alter_event_trig_stmt()) { clear_has_node(); ::pg_query::AlterEventTrigStmt* temp = node_.alter_event_trig_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_event_trig_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterEventTrigStmt& Node::_internal_alter_event_trig_stmt() const { return _internal_has_alter_event_trig_stmt() ? *node_.alter_event_trig_stmt_ : reinterpret_cast< ::pg_query::AlterEventTrigStmt&>(::pg_query::_AlterEventTrigStmt_default_instance_); } inline const ::pg_query::AlterEventTrigStmt& Node::alter_event_trig_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_event_trig_stmt) return _internal_alter_event_trig_stmt(); } inline ::pg_query::AlterEventTrigStmt* Node::unsafe_arena_release_alter_event_trig_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_event_trig_stmt) if (_internal_has_alter_event_trig_stmt()) { clear_has_node(); ::pg_query::AlterEventTrigStmt* temp = node_.alter_event_trig_stmt_; node_.alter_event_trig_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_event_trig_stmt(::pg_query::AlterEventTrigStmt* alter_event_trig_stmt) { clear_node(); if (alter_event_trig_stmt) { set_has_alter_event_trig_stmt(); node_.alter_event_trig_stmt_ = alter_event_trig_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_event_trig_stmt) } inline ::pg_query::AlterEventTrigStmt* Node::_internal_mutable_alter_event_trig_stmt() { if (!_internal_has_alter_event_trig_stmt()) { clear_node(); set_has_alter_event_trig_stmt(); node_.alter_event_trig_stmt_ = CreateMaybeMessage< ::pg_query::AlterEventTrigStmt >(GetArena()); } return node_.alter_event_trig_stmt_; } inline ::pg_query::AlterEventTrigStmt* Node::mutable_alter_event_trig_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_event_trig_stmt) return _internal_mutable_alter_event_trig_stmt(); } // .pg_query.RefreshMatViewStmt refresh_mat_view_stmt = 151 [json_name = "RefreshMatViewStmt"]; inline bool Node::_internal_has_refresh_mat_view_stmt() const { return node_case() == kRefreshMatViewStmt; } inline bool Node::has_refresh_mat_view_stmt() const { return _internal_has_refresh_mat_view_stmt(); } inline void Node::set_has_refresh_mat_view_stmt() { _oneof_case_[0] = kRefreshMatViewStmt; } inline void Node::clear_refresh_mat_view_stmt() { if (_internal_has_refresh_mat_view_stmt()) { if (GetArena() == nullptr) { delete node_.refresh_mat_view_stmt_; } clear_has_node(); } } inline ::pg_query::RefreshMatViewStmt* Node::release_refresh_mat_view_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.refresh_mat_view_stmt) if (_internal_has_refresh_mat_view_stmt()) { clear_has_node(); ::pg_query::RefreshMatViewStmt* temp = node_.refresh_mat_view_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.refresh_mat_view_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RefreshMatViewStmt& Node::_internal_refresh_mat_view_stmt() const { return _internal_has_refresh_mat_view_stmt() ? *node_.refresh_mat_view_stmt_ : reinterpret_cast< ::pg_query::RefreshMatViewStmt&>(::pg_query::_RefreshMatViewStmt_default_instance_); } inline const ::pg_query::RefreshMatViewStmt& Node::refresh_mat_view_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.refresh_mat_view_stmt) return _internal_refresh_mat_view_stmt(); } inline ::pg_query::RefreshMatViewStmt* Node::unsafe_arena_release_refresh_mat_view_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.refresh_mat_view_stmt) if (_internal_has_refresh_mat_view_stmt()) { clear_has_node(); ::pg_query::RefreshMatViewStmt* temp = node_.refresh_mat_view_stmt_; node_.refresh_mat_view_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_refresh_mat_view_stmt(::pg_query::RefreshMatViewStmt* refresh_mat_view_stmt) { clear_node(); if (refresh_mat_view_stmt) { set_has_refresh_mat_view_stmt(); node_.refresh_mat_view_stmt_ = refresh_mat_view_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.refresh_mat_view_stmt) } inline ::pg_query::RefreshMatViewStmt* Node::_internal_mutable_refresh_mat_view_stmt() { if (!_internal_has_refresh_mat_view_stmt()) { clear_node(); set_has_refresh_mat_view_stmt(); node_.refresh_mat_view_stmt_ = CreateMaybeMessage< ::pg_query::RefreshMatViewStmt >(GetArena()); } return node_.refresh_mat_view_stmt_; } inline ::pg_query::RefreshMatViewStmt* Node::mutable_refresh_mat_view_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.refresh_mat_view_stmt) return _internal_mutable_refresh_mat_view_stmt(); } // .pg_query.ReplicaIdentityStmt replica_identity_stmt = 152 [json_name = "ReplicaIdentityStmt"]; inline bool Node::_internal_has_replica_identity_stmt() const { return node_case() == kReplicaIdentityStmt; } inline bool Node::has_replica_identity_stmt() const { return _internal_has_replica_identity_stmt(); } inline void Node::set_has_replica_identity_stmt() { _oneof_case_[0] = kReplicaIdentityStmt; } inline void Node::clear_replica_identity_stmt() { if (_internal_has_replica_identity_stmt()) { if (GetArena() == nullptr) { delete node_.replica_identity_stmt_; } clear_has_node(); } } inline ::pg_query::ReplicaIdentityStmt* Node::release_replica_identity_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.replica_identity_stmt) if (_internal_has_replica_identity_stmt()) { clear_has_node(); ::pg_query::ReplicaIdentityStmt* temp = node_.replica_identity_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.replica_identity_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ReplicaIdentityStmt& Node::_internal_replica_identity_stmt() const { return _internal_has_replica_identity_stmt() ? *node_.replica_identity_stmt_ : reinterpret_cast< ::pg_query::ReplicaIdentityStmt&>(::pg_query::_ReplicaIdentityStmt_default_instance_); } inline const ::pg_query::ReplicaIdentityStmt& Node::replica_identity_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.replica_identity_stmt) return _internal_replica_identity_stmt(); } inline ::pg_query::ReplicaIdentityStmt* Node::unsafe_arena_release_replica_identity_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.replica_identity_stmt) if (_internal_has_replica_identity_stmt()) { clear_has_node(); ::pg_query::ReplicaIdentityStmt* temp = node_.replica_identity_stmt_; node_.replica_identity_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_replica_identity_stmt(::pg_query::ReplicaIdentityStmt* replica_identity_stmt) { clear_node(); if (replica_identity_stmt) { set_has_replica_identity_stmt(); node_.replica_identity_stmt_ = replica_identity_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.replica_identity_stmt) } inline ::pg_query::ReplicaIdentityStmt* Node::_internal_mutable_replica_identity_stmt() { if (!_internal_has_replica_identity_stmt()) { clear_node(); set_has_replica_identity_stmt(); node_.replica_identity_stmt_ = CreateMaybeMessage< ::pg_query::ReplicaIdentityStmt >(GetArena()); } return node_.replica_identity_stmt_; } inline ::pg_query::ReplicaIdentityStmt* Node::mutable_replica_identity_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.replica_identity_stmt) return _internal_mutable_replica_identity_stmt(); } // .pg_query.AlterSystemStmt alter_system_stmt = 153 [json_name = "AlterSystemStmt"]; inline bool Node::_internal_has_alter_system_stmt() const { return node_case() == kAlterSystemStmt; } inline bool Node::has_alter_system_stmt() const { return _internal_has_alter_system_stmt(); } inline void Node::set_has_alter_system_stmt() { _oneof_case_[0] = kAlterSystemStmt; } inline void Node::clear_alter_system_stmt() { if (_internal_has_alter_system_stmt()) { if (GetArena() == nullptr) { delete node_.alter_system_stmt_; } clear_has_node(); } } inline ::pg_query::AlterSystemStmt* Node::release_alter_system_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_system_stmt) if (_internal_has_alter_system_stmt()) { clear_has_node(); ::pg_query::AlterSystemStmt* temp = node_.alter_system_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_system_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterSystemStmt& Node::_internal_alter_system_stmt() const { return _internal_has_alter_system_stmt() ? *node_.alter_system_stmt_ : reinterpret_cast< ::pg_query::AlterSystemStmt&>(::pg_query::_AlterSystemStmt_default_instance_); } inline const ::pg_query::AlterSystemStmt& Node::alter_system_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_system_stmt) return _internal_alter_system_stmt(); } inline ::pg_query::AlterSystemStmt* Node::unsafe_arena_release_alter_system_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_system_stmt) if (_internal_has_alter_system_stmt()) { clear_has_node(); ::pg_query::AlterSystemStmt* temp = node_.alter_system_stmt_; node_.alter_system_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_system_stmt(::pg_query::AlterSystemStmt* alter_system_stmt) { clear_node(); if (alter_system_stmt) { set_has_alter_system_stmt(); node_.alter_system_stmt_ = alter_system_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_system_stmt) } inline ::pg_query::AlterSystemStmt* Node::_internal_mutable_alter_system_stmt() { if (!_internal_has_alter_system_stmt()) { clear_node(); set_has_alter_system_stmt(); node_.alter_system_stmt_ = CreateMaybeMessage< ::pg_query::AlterSystemStmt >(GetArena()); } return node_.alter_system_stmt_; } inline ::pg_query::AlterSystemStmt* Node::mutable_alter_system_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_system_stmt) return _internal_mutable_alter_system_stmt(); } // .pg_query.CreatePolicyStmt create_policy_stmt = 154 [json_name = "CreatePolicyStmt"]; inline bool Node::_internal_has_create_policy_stmt() const { return node_case() == kCreatePolicyStmt; } inline bool Node::has_create_policy_stmt() const { return _internal_has_create_policy_stmt(); } inline void Node::set_has_create_policy_stmt() { _oneof_case_[0] = kCreatePolicyStmt; } inline void Node::clear_create_policy_stmt() { if (_internal_has_create_policy_stmt()) { if (GetArena() == nullptr) { delete node_.create_policy_stmt_; } clear_has_node(); } } inline ::pg_query::CreatePolicyStmt* Node::release_create_policy_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_policy_stmt) if (_internal_has_create_policy_stmt()) { clear_has_node(); ::pg_query::CreatePolicyStmt* temp = node_.create_policy_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_policy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreatePolicyStmt& Node::_internal_create_policy_stmt() const { return _internal_has_create_policy_stmt() ? *node_.create_policy_stmt_ : reinterpret_cast< ::pg_query::CreatePolicyStmt&>(::pg_query::_CreatePolicyStmt_default_instance_); } inline const ::pg_query::CreatePolicyStmt& Node::create_policy_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_policy_stmt) return _internal_create_policy_stmt(); } inline ::pg_query::CreatePolicyStmt* Node::unsafe_arena_release_create_policy_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_policy_stmt) if (_internal_has_create_policy_stmt()) { clear_has_node(); ::pg_query::CreatePolicyStmt* temp = node_.create_policy_stmt_; node_.create_policy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_policy_stmt(::pg_query::CreatePolicyStmt* create_policy_stmt) { clear_node(); if (create_policy_stmt) { set_has_create_policy_stmt(); node_.create_policy_stmt_ = create_policy_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_policy_stmt) } inline ::pg_query::CreatePolicyStmt* Node::_internal_mutable_create_policy_stmt() { if (!_internal_has_create_policy_stmt()) { clear_node(); set_has_create_policy_stmt(); node_.create_policy_stmt_ = CreateMaybeMessage< ::pg_query::CreatePolicyStmt >(GetArena()); } return node_.create_policy_stmt_; } inline ::pg_query::CreatePolicyStmt* Node::mutable_create_policy_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_policy_stmt) return _internal_mutable_create_policy_stmt(); } // .pg_query.AlterPolicyStmt alter_policy_stmt = 155 [json_name = "AlterPolicyStmt"]; inline bool Node::_internal_has_alter_policy_stmt() const { return node_case() == kAlterPolicyStmt; } inline bool Node::has_alter_policy_stmt() const { return _internal_has_alter_policy_stmt(); } inline void Node::set_has_alter_policy_stmt() { _oneof_case_[0] = kAlterPolicyStmt; } inline void Node::clear_alter_policy_stmt() { if (_internal_has_alter_policy_stmt()) { if (GetArena() == nullptr) { delete node_.alter_policy_stmt_; } clear_has_node(); } } inline ::pg_query::AlterPolicyStmt* Node::release_alter_policy_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_policy_stmt) if (_internal_has_alter_policy_stmt()) { clear_has_node(); ::pg_query::AlterPolicyStmt* temp = node_.alter_policy_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_policy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterPolicyStmt& Node::_internal_alter_policy_stmt() const { return _internal_has_alter_policy_stmt() ? *node_.alter_policy_stmt_ : reinterpret_cast< ::pg_query::AlterPolicyStmt&>(::pg_query::_AlterPolicyStmt_default_instance_); } inline const ::pg_query::AlterPolicyStmt& Node::alter_policy_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_policy_stmt) return _internal_alter_policy_stmt(); } inline ::pg_query::AlterPolicyStmt* Node::unsafe_arena_release_alter_policy_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_policy_stmt) if (_internal_has_alter_policy_stmt()) { clear_has_node(); ::pg_query::AlterPolicyStmt* temp = node_.alter_policy_stmt_; node_.alter_policy_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_policy_stmt(::pg_query::AlterPolicyStmt* alter_policy_stmt) { clear_node(); if (alter_policy_stmt) { set_has_alter_policy_stmt(); node_.alter_policy_stmt_ = alter_policy_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_policy_stmt) } inline ::pg_query::AlterPolicyStmt* Node::_internal_mutable_alter_policy_stmt() { if (!_internal_has_alter_policy_stmt()) { clear_node(); set_has_alter_policy_stmt(); node_.alter_policy_stmt_ = CreateMaybeMessage< ::pg_query::AlterPolicyStmt >(GetArena()); } return node_.alter_policy_stmt_; } inline ::pg_query::AlterPolicyStmt* Node::mutable_alter_policy_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_policy_stmt) return _internal_mutable_alter_policy_stmt(); } // .pg_query.CreateTransformStmt create_transform_stmt = 156 [json_name = "CreateTransformStmt"]; inline bool Node::_internal_has_create_transform_stmt() const { return node_case() == kCreateTransformStmt; } inline bool Node::has_create_transform_stmt() const { return _internal_has_create_transform_stmt(); } inline void Node::set_has_create_transform_stmt() { _oneof_case_[0] = kCreateTransformStmt; } inline void Node::clear_create_transform_stmt() { if (_internal_has_create_transform_stmt()) { if (GetArena() == nullptr) { delete node_.create_transform_stmt_; } clear_has_node(); } } inline ::pg_query::CreateTransformStmt* Node::release_create_transform_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_transform_stmt) if (_internal_has_create_transform_stmt()) { clear_has_node(); ::pg_query::CreateTransformStmt* temp = node_.create_transform_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_transform_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateTransformStmt& Node::_internal_create_transform_stmt() const { return _internal_has_create_transform_stmt() ? *node_.create_transform_stmt_ : reinterpret_cast< ::pg_query::CreateTransformStmt&>(::pg_query::_CreateTransformStmt_default_instance_); } inline const ::pg_query::CreateTransformStmt& Node::create_transform_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_transform_stmt) return _internal_create_transform_stmt(); } inline ::pg_query::CreateTransformStmt* Node::unsafe_arena_release_create_transform_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_transform_stmt) if (_internal_has_create_transform_stmt()) { clear_has_node(); ::pg_query::CreateTransformStmt* temp = node_.create_transform_stmt_; node_.create_transform_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_transform_stmt(::pg_query::CreateTransformStmt* create_transform_stmt) { clear_node(); if (create_transform_stmt) { set_has_create_transform_stmt(); node_.create_transform_stmt_ = create_transform_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_transform_stmt) } inline ::pg_query::CreateTransformStmt* Node::_internal_mutable_create_transform_stmt() { if (!_internal_has_create_transform_stmt()) { clear_node(); set_has_create_transform_stmt(); node_.create_transform_stmt_ = CreateMaybeMessage< ::pg_query::CreateTransformStmt >(GetArena()); } return node_.create_transform_stmt_; } inline ::pg_query::CreateTransformStmt* Node::mutable_create_transform_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_transform_stmt) return _internal_mutable_create_transform_stmt(); } // .pg_query.CreateAmStmt create_am_stmt = 157 [json_name = "CreateAmStmt"]; inline bool Node::_internal_has_create_am_stmt() const { return node_case() == kCreateAmStmt; } inline bool Node::has_create_am_stmt() const { return _internal_has_create_am_stmt(); } inline void Node::set_has_create_am_stmt() { _oneof_case_[0] = kCreateAmStmt; } inline void Node::clear_create_am_stmt() { if (_internal_has_create_am_stmt()) { if (GetArena() == nullptr) { delete node_.create_am_stmt_; } clear_has_node(); } } inline ::pg_query::CreateAmStmt* Node::release_create_am_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_am_stmt) if (_internal_has_create_am_stmt()) { clear_has_node(); ::pg_query::CreateAmStmt* temp = node_.create_am_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_am_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateAmStmt& Node::_internal_create_am_stmt() const { return _internal_has_create_am_stmt() ? *node_.create_am_stmt_ : reinterpret_cast< ::pg_query::CreateAmStmt&>(::pg_query::_CreateAmStmt_default_instance_); } inline const ::pg_query::CreateAmStmt& Node::create_am_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_am_stmt) return _internal_create_am_stmt(); } inline ::pg_query::CreateAmStmt* Node::unsafe_arena_release_create_am_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_am_stmt) if (_internal_has_create_am_stmt()) { clear_has_node(); ::pg_query::CreateAmStmt* temp = node_.create_am_stmt_; node_.create_am_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_am_stmt(::pg_query::CreateAmStmt* create_am_stmt) { clear_node(); if (create_am_stmt) { set_has_create_am_stmt(); node_.create_am_stmt_ = create_am_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_am_stmt) } inline ::pg_query::CreateAmStmt* Node::_internal_mutable_create_am_stmt() { if (!_internal_has_create_am_stmt()) { clear_node(); set_has_create_am_stmt(); node_.create_am_stmt_ = CreateMaybeMessage< ::pg_query::CreateAmStmt >(GetArena()); } return node_.create_am_stmt_; } inline ::pg_query::CreateAmStmt* Node::mutable_create_am_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_am_stmt) return _internal_mutable_create_am_stmt(); } // .pg_query.CreatePublicationStmt create_publication_stmt = 158 [json_name = "CreatePublicationStmt"]; inline bool Node::_internal_has_create_publication_stmt() const { return node_case() == kCreatePublicationStmt; } inline bool Node::has_create_publication_stmt() const { return _internal_has_create_publication_stmt(); } inline void Node::set_has_create_publication_stmt() { _oneof_case_[0] = kCreatePublicationStmt; } inline void Node::clear_create_publication_stmt() { if (_internal_has_create_publication_stmt()) { if (GetArena() == nullptr) { delete node_.create_publication_stmt_; } clear_has_node(); } } inline ::pg_query::CreatePublicationStmt* Node::release_create_publication_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_publication_stmt) if (_internal_has_create_publication_stmt()) { clear_has_node(); ::pg_query::CreatePublicationStmt* temp = node_.create_publication_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_publication_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreatePublicationStmt& Node::_internal_create_publication_stmt() const { return _internal_has_create_publication_stmt() ? *node_.create_publication_stmt_ : reinterpret_cast< ::pg_query::CreatePublicationStmt&>(::pg_query::_CreatePublicationStmt_default_instance_); } inline const ::pg_query::CreatePublicationStmt& Node::create_publication_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_publication_stmt) return _internal_create_publication_stmt(); } inline ::pg_query::CreatePublicationStmt* Node::unsafe_arena_release_create_publication_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_publication_stmt) if (_internal_has_create_publication_stmt()) { clear_has_node(); ::pg_query::CreatePublicationStmt* temp = node_.create_publication_stmt_; node_.create_publication_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_publication_stmt(::pg_query::CreatePublicationStmt* create_publication_stmt) { clear_node(); if (create_publication_stmt) { set_has_create_publication_stmt(); node_.create_publication_stmt_ = create_publication_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_publication_stmt) } inline ::pg_query::CreatePublicationStmt* Node::_internal_mutable_create_publication_stmt() { if (!_internal_has_create_publication_stmt()) { clear_node(); set_has_create_publication_stmt(); node_.create_publication_stmt_ = CreateMaybeMessage< ::pg_query::CreatePublicationStmt >(GetArena()); } return node_.create_publication_stmt_; } inline ::pg_query::CreatePublicationStmt* Node::mutable_create_publication_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_publication_stmt) return _internal_mutable_create_publication_stmt(); } // .pg_query.AlterPublicationStmt alter_publication_stmt = 159 [json_name = "AlterPublicationStmt"]; inline bool Node::_internal_has_alter_publication_stmt() const { return node_case() == kAlterPublicationStmt; } inline bool Node::has_alter_publication_stmt() const { return _internal_has_alter_publication_stmt(); } inline void Node::set_has_alter_publication_stmt() { _oneof_case_[0] = kAlterPublicationStmt; } inline void Node::clear_alter_publication_stmt() { if (_internal_has_alter_publication_stmt()) { if (GetArena() == nullptr) { delete node_.alter_publication_stmt_; } clear_has_node(); } } inline ::pg_query::AlterPublicationStmt* Node::release_alter_publication_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_publication_stmt) if (_internal_has_alter_publication_stmt()) { clear_has_node(); ::pg_query::AlterPublicationStmt* temp = node_.alter_publication_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_publication_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterPublicationStmt& Node::_internal_alter_publication_stmt() const { return _internal_has_alter_publication_stmt() ? *node_.alter_publication_stmt_ : reinterpret_cast< ::pg_query::AlterPublicationStmt&>(::pg_query::_AlterPublicationStmt_default_instance_); } inline const ::pg_query::AlterPublicationStmt& Node::alter_publication_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_publication_stmt) return _internal_alter_publication_stmt(); } inline ::pg_query::AlterPublicationStmt* Node::unsafe_arena_release_alter_publication_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_publication_stmt) if (_internal_has_alter_publication_stmt()) { clear_has_node(); ::pg_query::AlterPublicationStmt* temp = node_.alter_publication_stmt_; node_.alter_publication_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_publication_stmt(::pg_query::AlterPublicationStmt* alter_publication_stmt) { clear_node(); if (alter_publication_stmt) { set_has_alter_publication_stmt(); node_.alter_publication_stmt_ = alter_publication_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_publication_stmt) } inline ::pg_query::AlterPublicationStmt* Node::_internal_mutable_alter_publication_stmt() { if (!_internal_has_alter_publication_stmt()) { clear_node(); set_has_alter_publication_stmt(); node_.alter_publication_stmt_ = CreateMaybeMessage< ::pg_query::AlterPublicationStmt >(GetArena()); } return node_.alter_publication_stmt_; } inline ::pg_query::AlterPublicationStmt* Node::mutable_alter_publication_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_publication_stmt) return _internal_mutable_alter_publication_stmt(); } // .pg_query.CreateSubscriptionStmt create_subscription_stmt = 160 [json_name = "CreateSubscriptionStmt"]; inline bool Node::_internal_has_create_subscription_stmt() const { return node_case() == kCreateSubscriptionStmt; } inline bool Node::has_create_subscription_stmt() const { return _internal_has_create_subscription_stmt(); } inline void Node::set_has_create_subscription_stmt() { _oneof_case_[0] = kCreateSubscriptionStmt; } inline void Node::clear_create_subscription_stmt() { if (_internal_has_create_subscription_stmt()) { if (GetArena() == nullptr) { delete node_.create_subscription_stmt_; } clear_has_node(); } } inline ::pg_query::CreateSubscriptionStmt* Node::release_create_subscription_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_subscription_stmt) if (_internal_has_create_subscription_stmt()) { clear_has_node(); ::pg_query::CreateSubscriptionStmt* temp = node_.create_subscription_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateSubscriptionStmt& Node::_internal_create_subscription_stmt() const { return _internal_has_create_subscription_stmt() ? *node_.create_subscription_stmt_ : reinterpret_cast< ::pg_query::CreateSubscriptionStmt&>(::pg_query::_CreateSubscriptionStmt_default_instance_); } inline const ::pg_query::CreateSubscriptionStmt& Node::create_subscription_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_subscription_stmt) return _internal_create_subscription_stmt(); } inline ::pg_query::CreateSubscriptionStmt* Node::unsafe_arena_release_create_subscription_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_subscription_stmt) if (_internal_has_create_subscription_stmt()) { clear_has_node(); ::pg_query::CreateSubscriptionStmt* temp = node_.create_subscription_stmt_; node_.create_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_subscription_stmt(::pg_query::CreateSubscriptionStmt* create_subscription_stmt) { clear_node(); if (create_subscription_stmt) { set_has_create_subscription_stmt(); node_.create_subscription_stmt_ = create_subscription_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_subscription_stmt) } inline ::pg_query::CreateSubscriptionStmt* Node::_internal_mutable_create_subscription_stmt() { if (!_internal_has_create_subscription_stmt()) { clear_node(); set_has_create_subscription_stmt(); node_.create_subscription_stmt_ = CreateMaybeMessage< ::pg_query::CreateSubscriptionStmt >(GetArena()); } return node_.create_subscription_stmt_; } inline ::pg_query::CreateSubscriptionStmt* Node::mutable_create_subscription_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_subscription_stmt) return _internal_mutable_create_subscription_stmt(); } // .pg_query.AlterSubscriptionStmt alter_subscription_stmt = 161 [json_name = "AlterSubscriptionStmt"]; inline bool Node::_internal_has_alter_subscription_stmt() const { return node_case() == kAlterSubscriptionStmt; } inline bool Node::has_alter_subscription_stmt() const { return _internal_has_alter_subscription_stmt(); } inline void Node::set_has_alter_subscription_stmt() { _oneof_case_[0] = kAlterSubscriptionStmt; } inline void Node::clear_alter_subscription_stmt() { if (_internal_has_alter_subscription_stmt()) { if (GetArena() == nullptr) { delete node_.alter_subscription_stmt_; } clear_has_node(); } } inline ::pg_query::AlterSubscriptionStmt* Node::release_alter_subscription_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_subscription_stmt) if (_internal_has_alter_subscription_stmt()) { clear_has_node(); ::pg_query::AlterSubscriptionStmt* temp = node_.alter_subscription_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterSubscriptionStmt& Node::_internal_alter_subscription_stmt() const { return _internal_has_alter_subscription_stmt() ? *node_.alter_subscription_stmt_ : reinterpret_cast< ::pg_query::AlterSubscriptionStmt&>(::pg_query::_AlterSubscriptionStmt_default_instance_); } inline const ::pg_query::AlterSubscriptionStmt& Node::alter_subscription_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_subscription_stmt) return _internal_alter_subscription_stmt(); } inline ::pg_query::AlterSubscriptionStmt* Node::unsafe_arena_release_alter_subscription_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_subscription_stmt) if (_internal_has_alter_subscription_stmt()) { clear_has_node(); ::pg_query::AlterSubscriptionStmt* temp = node_.alter_subscription_stmt_; node_.alter_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_subscription_stmt(::pg_query::AlterSubscriptionStmt* alter_subscription_stmt) { clear_node(); if (alter_subscription_stmt) { set_has_alter_subscription_stmt(); node_.alter_subscription_stmt_ = alter_subscription_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_subscription_stmt) } inline ::pg_query::AlterSubscriptionStmt* Node::_internal_mutable_alter_subscription_stmt() { if (!_internal_has_alter_subscription_stmt()) { clear_node(); set_has_alter_subscription_stmt(); node_.alter_subscription_stmt_ = CreateMaybeMessage< ::pg_query::AlterSubscriptionStmt >(GetArena()); } return node_.alter_subscription_stmt_; } inline ::pg_query::AlterSubscriptionStmt* Node::mutable_alter_subscription_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_subscription_stmt) return _internal_mutable_alter_subscription_stmt(); } // .pg_query.DropSubscriptionStmt drop_subscription_stmt = 162 [json_name = "DropSubscriptionStmt"]; inline bool Node::_internal_has_drop_subscription_stmt() const { return node_case() == kDropSubscriptionStmt; } inline bool Node::has_drop_subscription_stmt() const { return _internal_has_drop_subscription_stmt(); } inline void Node::set_has_drop_subscription_stmt() { _oneof_case_[0] = kDropSubscriptionStmt; } inline void Node::clear_drop_subscription_stmt() { if (_internal_has_drop_subscription_stmt()) { if (GetArena() == nullptr) { delete node_.drop_subscription_stmt_; } clear_has_node(); } } inline ::pg_query::DropSubscriptionStmt* Node::release_drop_subscription_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.drop_subscription_stmt) if (_internal_has_drop_subscription_stmt()) { clear_has_node(); ::pg_query::DropSubscriptionStmt* temp = node_.drop_subscription_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.drop_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DropSubscriptionStmt& Node::_internal_drop_subscription_stmt() const { return _internal_has_drop_subscription_stmt() ? *node_.drop_subscription_stmt_ : reinterpret_cast< ::pg_query::DropSubscriptionStmt&>(::pg_query::_DropSubscriptionStmt_default_instance_); } inline const ::pg_query::DropSubscriptionStmt& Node::drop_subscription_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.drop_subscription_stmt) return _internal_drop_subscription_stmt(); } inline ::pg_query::DropSubscriptionStmt* Node::unsafe_arena_release_drop_subscription_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.drop_subscription_stmt) if (_internal_has_drop_subscription_stmt()) { clear_has_node(); ::pg_query::DropSubscriptionStmt* temp = node_.drop_subscription_stmt_; node_.drop_subscription_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_drop_subscription_stmt(::pg_query::DropSubscriptionStmt* drop_subscription_stmt) { clear_node(); if (drop_subscription_stmt) { set_has_drop_subscription_stmt(); node_.drop_subscription_stmt_ = drop_subscription_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.drop_subscription_stmt) } inline ::pg_query::DropSubscriptionStmt* Node::_internal_mutable_drop_subscription_stmt() { if (!_internal_has_drop_subscription_stmt()) { clear_node(); set_has_drop_subscription_stmt(); node_.drop_subscription_stmt_ = CreateMaybeMessage< ::pg_query::DropSubscriptionStmt >(GetArena()); } return node_.drop_subscription_stmt_; } inline ::pg_query::DropSubscriptionStmt* Node::mutable_drop_subscription_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.drop_subscription_stmt) return _internal_mutable_drop_subscription_stmt(); } // .pg_query.CreateStatsStmt create_stats_stmt = 163 [json_name = "CreateStatsStmt"]; inline bool Node::_internal_has_create_stats_stmt() const { return node_case() == kCreateStatsStmt; } inline bool Node::has_create_stats_stmt() const { return _internal_has_create_stats_stmt(); } inline void Node::set_has_create_stats_stmt() { _oneof_case_[0] = kCreateStatsStmt; } inline void Node::clear_create_stats_stmt() { if (_internal_has_create_stats_stmt()) { if (GetArena() == nullptr) { delete node_.create_stats_stmt_; } clear_has_node(); } } inline ::pg_query::CreateStatsStmt* Node::release_create_stats_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.create_stats_stmt) if (_internal_has_create_stats_stmt()) { clear_has_node(); ::pg_query::CreateStatsStmt* temp = node_.create_stats_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_stats_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateStatsStmt& Node::_internal_create_stats_stmt() const { return _internal_has_create_stats_stmt() ? *node_.create_stats_stmt_ : reinterpret_cast< ::pg_query::CreateStatsStmt&>(::pg_query::_CreateStatsStmt_default_instance_); } inline const ::pg_query::CreateStatsStmt& Node::create_stats_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_stats_stmt) return _internal_create_stats_stmt(); } inline ::pg_query::CreateStatsStmt* Node::unsafe_arena_release_create_stats_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_stats_stmt) if (_internal_has_create_stats_stmt()) { clear_has_node(); ::pg_query::CreateStatsStmt* temp = node_.create_stats_stmt_; node_.create_stats_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_stats_stmt(::pg_query::CreateStatsStmt* create_stats_stmt) { clear_node(); if (create_stats_stmt) { set_has_create_stats_stmt(); node_.create_stats_stmt_ = create_stats_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_stats_stmt) } inline ::pg_query::CreateStatsStmt* Node::_internal_mutable_create_stats_stmt() { if (!_internal_has_create_stats_stmt()) { clear_node(); set_has_create_stats_stmt(); node_.create_stats_stmt_ = CreateMaybeMessage< ::pg_query::CreateStatsStmt >(GetArena()); } return node_.create_stats_stmt_; } inline ::pg_query::CreateStatsStmt* Node::mutable_create_stats_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_stats_stmt) return _internal_mutable_create_stats_stmt(); } // .pg_query.AlterCollationStmt alter_collation_stmt = 164 [json_name = "AlterCollationStmt"]; inline bool Node::_internal_has_alter_collation_stmt() const { return node_case() == kAlterCollationStmt; } inline bool Node::has_alter_collation_stmt() const { return _internal_has_alter_collation_stmt(); } inline void Node::set_has_alter_collation_stmt() { _oneof_case_[0] = kAlterCollationStmt; } inline void Node::clear_alter_collation_stmt() { if (_internal_has_alter_collation_stmt()) { if (GetArena() == nullptr) { delete node_.alter_collation_stmt_; } clear_has_node(); } } inline ::pg_query::AlterCollationStmt* Node::release_alter_collation_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_collation_stmt) if (_internal_has_alter_collation_stmt()) { clear_has_node(); ::pg_query::AlterCollationStmt* temp = node_.alter_collation_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_collation_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterCollationStmt& Node::_internal_alter_collation_stmt() const { return _internal_has_alter_collation_stmt() ? *node_.alter_collation_stmt_ : reinterpret_cast< ::pg_query::AlterCollationStmt&>(::pg_query::_AlterCollationStmt_default_instance_); } inline const ::pg_query::AlterCollationStmt& Node::alter_collation_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_collation_stmt) return _internal_alter_collation_stmt(); } inline ::pg_query::AlterCollationStmt* Node::unsafe_arena_release_alter_collation_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_collation_stmt) if (_internal_has_alter_collation_stmt()) { clear_has_node(); ::pg_query::AlterCollationStmt* temp = node_.alter_collation_stmt_; node_.alter_collation_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_collation_stmt(::pg_query::AlterCollationStmt* alter_collation_stmt) { clear_node(); if (alter_collation_stmt) { set_has_alter_collation_stmt(); node_.alter_collation_stmt_ = alter_collation_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_collation_stmt) } inline ::pg_query::AlterCollationStmt* Node::_internal_mutable_alter_collation_stmt() { if (!_internal_has_alter_collation_stmt()) { clear_node(); set_has_alter_collation_stmt(); node_.alter_collation_stmt_ = CreateMaybeMessage< ::pg_query::AlterCollationStmt >(GetArena()); } return node_.alter_collation_stmt_; } inline ::pg_query::AlterCollationStmt* Node::mutable_alter_collation_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_collation_stmt) return _internal_mutable_alter_collation_stmt(); } // .pg_query.CallStmt call_stmt = 165 [json_name = "CallStmt"]; inline bool Node::_internal_has_call_stmt() const { return node_case() == kCallStmt; } inline bool Node::has_call_stmt() const { return _internal_has_call_stmt(); } inline void Node::set_has_call_stmt() { _oneof_case_[0] = kCallStmt; } inline void Node::clear_call_stmt() { if (_internal_has_call_stmt()) { if (GetArena() == nullptr) { delete node_.call_stmt_; } clear_has_node(); } } inline ::pg_query::CallStmt* Node::release_call_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.call_stmt) if (_internal_has_call_stmt()) { clear_has_node(); ::pg_query::CallStmt* temp = node_.call_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.call_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CallStmt& Node::_internal_call_stmt() const { return _internal_has_call_stmt() ? *node_.call_stmt_ : reinterpret_cast< ::pg_query::CallStmt&>(::pg_query::_CallStmt_default_instance_); } inline const ::pg_query::CallStmt& Node::call_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.call_stmt) return _internal_call_stmt(); } inline ::pg_query::CallStmt* Node::unsafe_arena_release_call_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.call_stmt) if (_internal_has_call_stmt()) { clear_has_node(); ::pg_query::CallStmt* temp = node_.call_stmt_; node_.call_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_call_stmt(::pg_query::CallStmt* call_stmt) { clear_node(); if (call_stmt) { set_has_call_stmt(); node_.call_stmt_ = call_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.call_stmt) } inline ::pg_query::CallStmt* Node::_internal_mutable_call_stmt() { if (!_internal_has_call_stmt()) { clear_node(); set_has_call_stmt(); node_.call_stmt_ = CreateMaybeMessage< ::pg_query::CallStmt >(GetArena()); } return node_.call_stmt_; } inline ::pg_query::CallStmt* Node::mutable_call_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.call_stmt) return _internal_mutable_call_stmt(); } // .pg_query.AlterStatsStmt alter_stats_stmt = 166 [json_name = "AlterStatsStmt"]; inline bool Node::_internal_has_alter_stats_stmt() const { return node_case() == kAlterStatsStmt; } inline bool Node::has_alter_stats_stmt() const { return _internal_has_alter_stats_stmt(); } inline void Node::set_has_alter_stats_stmt() { _oneof_case_[0] = kAlterStatsStmt; } inline void Node::clear_alter_stats_stmt() { if (_internal_has_alter_stats_stmt()) { if (GetArena() == nullptr) { delete node_.alter_stats_stmt_; } clear_has_node(); } } inline ::pg_query::AlterStatsStmt* Node::release_alter_stats_stmt() { // @@protoc_insertion_point(field_release:pg_query.Node.alter_stats_stmt) if (_internal_has_alter_stats_stmt()) { clear_has_node(); ::pg_query::AlterStatsStmt* temp = node_.alter_stats_stmt_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.alter_stats_stmt_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AlterStatsStmt& Node::_internal_alter_stats_stmt() const { return _internal_has_alter_stats_stmt() ? *node_.alter_stats_stmt_ : reinterpret_cast< ::pg_query::AlterStatsStmt&>(::pg_query::_AlterStatsStmt_default_instance_); } inline const ::pg_query::AlterStatsStmt& Node::alter_stats_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Node.alter_stats_stmt) return _internal_alter_stats_stmt(); } inline ::pg_query::AlterStatsStmt* Node::unsafe_arena_release_alter_stats_stmt() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.alter_stats_stmt) if (_internal_has_alter_stats_stmt()) { clear_has_node(); ::pg_query::AlterStatsStmt* temp = node_.alter_stats_stmt_; node_.alter_stats_stmt_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_alter_stats_stmt(::pg_query::AlterStatsStmt* alter_stats_stmt) { clear_node(); if (alter_stats_stmt) { set_has_alter_stats_stmt(); node_.alter_stats_stmt_ = alter_stats_stmt; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.alter_stats_stmt) } inline ::pg_query::AlterStatsStmt* Node::_internal_mutable_alter_stats_stmt() { if (!_internal_has_alter_stats_stmt()) { clear_node(); set_has_alter_stats_stmt(); node_.alter_stats_stmt_ = CreateMaybeMessage< ::pg_query::AlterStatsStmt >(GetArena()); } return node_.alter_stats_stmt_; } inline ::pg_query::AlterStatsStmt* Node::mutable_alter_stats_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Node.alter_stats_stmt) return _internal_mutable_alter_stats_stmt(); } // .pg_query.A_Expr a_expr = 167 [json_name = "A_Expr"]; inline bool Node::_internal_has_a_expr() const { return node_case() == kAExpr; } inline bool Node::has_a_expr() const { return _internal_has_a_expr(); } inline void Node::set_has_a_expr() { _oneof_case_[0] = kAExpr; } inline void Node::clear_a_expr() { if (_internal_has_a_expr()) { if (GetArena() == nullptr) { delete node_.a_expr_; } clear_has_node(); } } inline ::pg_query::A_Expr* Node::release_a_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.a_expr) if (_internal_has_a_expr()) { clear_has_node(); ::pg_query::A_Expr* temp = node_.a_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.a_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_Expr& Node::_internal_a_expr() const { return _internal_has_a_expr() ? *node_.a_expr_ : reinterpret_cast< ::pg_query::A_Expr&>(::pg_query::_A_Expr_default_instance_); } inline const ::pg_query::A_Expr& Node::a_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.a_expr) return _internal_a_expr(); } inline ::pg_query::A_Expr* Node::unsafe_arena_release_a_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_expr) if (_internal_has_a_expr()) { clear_has_node(); ::pg_query::A_Expr* temp = node_.a_expr_; node_.a_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_expr(::pg_query::A_Expr* a_expr) { clear_node(); if (a_expr) { set_has_a_expr(); node_.a_expr_ = a_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_expr) } inline ::pg_query::A_Expr* Node::_internal_mutable_a_expr() { if (!_internal_has_a_expr()) { clear_node(); set_has_a_expr(); node_.a_expr_ = CreateMaybeMessage< ::pg_query::A_Expr >(GetArena()); } return node_.a_expr_; } inline ::pg_query::A_Expr* Node::mutable_a_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.a_expr) return _internal_mutable_a_expr(); } // .pg_query.ColumnRef column_ref = 168 [json_name = "ColumnRef"]; inline bool Node::_internal_has_column_ref() const { return node_case() == kColumnRef; } inline bool Node::has_column_ref() const { return _internal_has_column_ref(); } inline void Node::set_has_column_ref() { _oneof_case_[0] = kColumnRef; } inline void Node::clear_column_ref() { if (_internal_has_column_ref()) { if (GetArena() == nullptr) { delete node_.column_ref_; } clear_has_node(); } } inline ::pg_query::ColumnRef* Node::release_column_ref() { // @@protoc_insertion_point(field_release:pg_query.Node.column_ref) if (_internal_has_column_ref()) { clear_has_node(); ::pg_query::ColumnRef* temp = node_.column_ref_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.column_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ColumnRef& Node::_internal_column_ref() const { return _internal_has_column_ref() ? *node_.column_ref_ : reinterpret_cast< ::pg_query::ColumnRef&>(::pg_query::_ColumnRef_default_instance_); } inline const ::pg_query::ColumnRef& Node::column_ref() const { // @@protoc_insertion_point(field_get:pg_query.Node.column_ref) return _internal_column_ref(); } inline ::pg_query::ColumnRef* Node::unsafe_arena_release_column_ref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.column_ref) if (_internal_has_column_ref()) { clear_has_node(); ::pg_query::ColumnRef* temp = node_.column_ref_; node_.column_ref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_column_ref(::pg_query::ColumnRef* column_ref) { clear_node(); if (column_ref) { set_has_column_ref(); node_.column_ref_ = column_ref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.column_ref) } inline ::pg_query::ColumnRef* Node::_internal_mutable_column_ref() { if (!_internal_has_column_ref()) { clear_node(); set_has_column_ref(); node_.column_ref_ = CreateMaybeMessage< ::pg_query::ColumnRef >(GetArena()); } return node_.column_ref_; } inline ::pg_query::ColumnRef* Node::mutable_column_ref() { // @@protoc_insertion_point(field_mutable:pg_query.Node.column_ref) return _internal_mutable_column_ref(); } // .pg_query.ParamRef param_ref = 169 [json_name = "ParamRef"]; inline bool Node::_internal_has_param_ref() const { return node_case() == kParamRef; } inline bool Node::has_param_ref() const { return _internal_has_param_ref(); } inline void Node::set_has_param_ref() { _oneof_case_[0] = kParamRef; } inline void Node::clear_param_ref() { if (_internal_has_param_ref()) { if (GetArena() == nullptr) { delete node_.param_ref_; } clear_has_node(); } } inline ::pg_query::ParamRef* Node::release_param_ref() { // @@protoc_insertion_point(field_release:pg_query.Node.param_ref) if (_internal_has_param_ref()) { clear_has_node(); ::pg_query::ParamRef* temp = node_.param_ref_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.param_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ParamRef& Node::_internal_param_ref() const { return _internal_has_param_ref() ? *node_.param_ref_ : reinterpret_cast< ::pg_query::ParamRef&>(::pg_query::_ParamRef_default_instance_); } inline const ::pg_query::ParamRef& Node::param_ref() const { // @@protoc_insertion_point(field_get:pg_query.Node.param_ref) return _internal_param_ref(); } inline ::pg_query::ParamRef* Node::unsafe_arena_release_param_ref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.param_ref) if (_internal_has_param_ref()) { clear_has_node(); ::pg_query::ParamRef* temp = node_.param_ref_; node_.param_ref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_param_ref(::pg_query::ParamRef* param_ref) { clear_node(); if (param_ref) { set_has_param_ref(); node_.param_ref_ = param_ref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.param_ref) } inline ::pg_query::ParamRef* Node::_internal_mutable_param_ref() { if (!_internal_has_param_ref()) { clear_node(); set_has_param_ref(); node_.param_ref_ = CreateMaybeMessage< ::pg_query::ParamRef >(GetArena()); } return node_.param_ref_; } inline ::pg_query::ParamRef* Node::mutable_param_ref() { // @@protoc_insertion_point(field_mutable:pg_query.Node.param_ref) return _internal_mutable_param_ref(); } // .pg_query.A_Const a_const = 170 [json_name = "A_Const"]; inline bool Node::_internal_has_a_const() const { return node_case() == kAConst; } inline bool Node::has_a_const() const { return _internal_has_a_const(); } inline void Node::set_has_a_const() { _oneof_case_[0] = kAConst; } inline void Node::clear_a_const() { if (_internal_has_a_const()) { if (GetArena() == nullptr) { delete node_.a_const_; } clear_has_node(); } } inline ::pg_query::A_Const* Node::release_a_const() { // @@protoc_insertion_point(field_release:pg_query.Node.a_const) if (_internal_has_a_const()) { clear_has_node(); ::pg_query::A_Const* temp = node_.a_const_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.a_const_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_Const& Node::_internal_a_const() const { return _internal_has_a_const() ? *node_.a_const_ : reinterpret_cast< ::pg_query::A_Const&>(::pg_query::_A_Const_default_instance_); } inline const ::pg_query::A_Const& Node::a_const() const { // @@protoc_insertion_point(field_get:pg_query.Node.a_const) return _internal_a_const(); } inline ::pg_query::A_Const* Node::unsafe_arena_release_a_const() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_const) if (_internal_has_a_const()) { clear_has_node(); ::pg_query::A_Const* temp = node_.a_const_; node_.a_const_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_const(::pg_query::A_Const* a_const) { clear_node(); if (a_const) { set_has_a_const(); node_.a_const_ = a_const; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_const) } inline ::pg_query::A_Const* Node::_internal_mutable_a_const() { if (!_internal_has_a_const()) { clear_node(); set_has_a_const(); node_.a_const_ = CreateMaybeMessage< ::pg_query::A_Const >(GetArena()); } return node_.a_const_; } inline ::pg_query::A_Const* Node::mutable_a_const() { // @@protoc_insertion_point(field_mutable:pg_query.Node.a_const) return _internal_mutable_a_const(); } // .pg_query.FuncCall func_call = 171 [json_name = "FuncCall"]; inline bool Node::_internal_has_func_call() const { return node_case() == kFuncCall; } inline bool Node::has_func_call() const { return _internal_has_func_call(); } inline void Node::set_has_func_call() { _oneof_case_[0] = kFuncCall; } inline void Node::clear_func_call() { if (_internal_has_func_call()) { if (GetArena() == nullptr) { delete node_.func_call_; } clear_has_node(); } } inline ::pg_query::FuncCall* Node::release_func_call() { // @@protoc_insertion_point(field_release:pg_query.Node.func_call) if (_internal_has_func_call()) { clear_has_node(); ::pg_query::FuncCall* temp = node_.func_call_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.func_call_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FuncCall& Node::_internal_func_call() const { return _internal_has_func_call() ? *node_.func_call_ : reinterpret_cast< ::pg_query::FuncCall&>(::pg_query::_FuncCall_default_instance_); } inline const ::pg_query::FuncCall& Node::func_call() const { // @@protoc_insertion_point(field_get:pg_query.Node.func_call) return _internal_func_call(); } inline ::pg_query::FuncCall* Node::unsafe_arena_release_func_call() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.func_call) if (_internal_has_func_call()) { clear_has_node(); ::pg_query::FuncCall* temp = node_.func_call_; node_.func_call_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_func_call(::pg_query::FuncCall* func_call) { clear_node(); if (func_call) { set_has_func_call(); node_.func_call_ = func_call; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.func_call) } inline ::pg_query::FuncCall* Node::_internal_mutable_func_call() { if (!_internal_has_func_call()) { clear_node(); set_has_func_call(); node_.func_call_ = CreateMaybeMessage< ::pg_query::FuncCall >(GetArena()); } return node_.func_call_; } inline ::pg_query::FuncCall* Node::mutable_func_call() { // @@protoc_insertion_point(field_mutable:pg_query.Node.func_call) return _internal_mutable_func_call(); } // .pg_query.A_Star a_star = 172 [json_name = "A_Star"]; inline bool Node::_internal_has_a_star() const { return node_case() == kAStar; } inline bool Node::has_a_star() const { return _internal_has_a_star(); } inline void Node::set_has_a_star() { _oneof_case_[0] = kAStar; } inline void Node::clear_a_star() { if (_internal_has_a_star()) { if (GetArena() == nullptr) { delete node_.a_star_; } clear_has_node(); } } inline ::pg_query::A_Star* Node::release_a_star() { // @@protoc_insertion_point(field_release:pg_query.Node.a_star) if (_internal_has_a_star()) { clear_has_node(); ::pg_query::A_Star* temp = node_.a_star_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.a_star_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_Star& Node::_internal_a_star() const { return _internal_has_a_star() ? *node_.a_star_ : reinterpret_cast< ::pg_query::A_Star&>(::pg_query::_A_Star_default_instance_); } inline const ::pg_query::A_Star& Node::a_star() const { // @@protoc_insertion_point(field_get:pg_query.Node.a_star) return _internal_a_star(); } inline ::pg_query::A_Star* Node::unsafe_arena_release_a_star() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_star) if (_internal_has_a_star()) { clear_has_node(); ::pg_query::A_Star* temp = node_.a_star_; node_.a_star_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_star(::pg_query::A_Star* a_star) { clear_node(); if (a_star) { set_has_a_star(); node_.a_star_ = a_star; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_star) } inline ::pg_query::A_Star* Node::_internal_mutable_a_star() { if (!_internal_has_a_star()) { clear_node(); set_has_a_star(); node_.a_star_ = CreateMaybeMessage< ::pg_query::A_Star >(GetArena()); } return node_.a_star_; } inline ::pg_query::A_Star* Node::mutable_a_star() { // @@protoc_insertion_point(field_mutable:pg_query.Node.a_star) return _internal_mutable_a_star(); } // .pg_query.A_Indices a_indices = 173 [json_name = "A_Indices"]; inline bool Node::_internal_has_a_indices() const { return node_case() == kAIndices; } inline bool Node::has_a_indices() const { return _internal_has_a_indices(); } inline void Node::set_has_a_indices() { _oneof_case_[0] = kAIndices; } inline void Node::clear_a_indices() { if (_internal_has_a_indices()) { if (GetArena() == nullptr) { delete node_.a_indices_; } clear_has_node(); } } inline ::pg_query::A_Indices* Node::release_a_indices() { // @@protoc_insertion_point(field_release:pg_query.Node.a_indices) if (_internal_has_a_indices()) { clear_has_node(); ::pg_query::A_Indices* temp = node_.a_indices_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.a_indices_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_Indices& Node::_internal_a_indices() const { return _internal_has_a_indices() ? *node_.a_indices_ : reinterpret_cast< ::pg_query::A_Indices&>(::pg_query::_A_Indices_default_instance_); } inline const ::pg_query::A_Indices& Node::a_indices() const { // @@protoc_insertion_point(field_get:pg_query.Node.a_indices) return _internal_a_indices(); } inline ::pg_query::A_Indices* Node::unsafe_arena_release_a_indices() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_indices) if (_internal_has_a_indices()) { clear_has_node(); ::pg_query::A_Indices* temp = node_.a_indices_; node_.a_indices_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_indices(::pg_query::A_Indices* a_indices) { clear_node(); if (a_indices) { set_has_a_indices(); node_.a_indices_ = a_indices; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_indices) } inline ::pg_query::A_Indices* Node::_internal_mutable_a_indices() { if (!_internal_has_a_indices()) { clear_node(); set_has_a_indices(); node_.a_indices_ = CreateMaybeMessage< ::pg_query::A_Indices >(GetArena()); } return node_.a_indices_; } inline ::pg_query::A_Indices* Node::mutable_a_indices() { // @@protoc_insertion_point(field_mutable:pg_query.Node.a_indices) return _internal_mutable_a_indices(); } // .pg_query.A_Indirection a_indirection = 174 [json_name = "A_Indirection"]; inline bool Node::_internal_has_a_indirection() const { return node_case() == kAIndirection; } inline bool Node::has_a_indirection() const { return _internal_has_a_indirection(); } inline void Node::set_has_a_indirection() { _oneof_case_[0] = kAIndirection; } inline void Node::clear_a_indirection() { if (_internal_has_a_indirection()) { if (GetArena() == nullptr) { delete node_.a_indirection_; } clear_has_node(); } } inline ::pg_query::A_Indirection* Node::release_a_indirection() { // @@protoc_insertion_point(field_release:pg_query.Node.a_indirection) if (_internal_has_a_indirection()) { clear_has_node(); ::pg_query::A_Indirection* temp = node_.a_indirection_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.a_indirection_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_Indirection& Node::_internal_a_indirection() const { return _internal_has_a_indirection() ? *node_.a_indirection_ : reinterpret_cast< ::pg_query::A_Indirection&>(::pg_query::_A_Indirection_default_instance_); } inline const ::pg_query::A_Indirection& Node::a_indirection() const { // @@protoc_insertion_point(field_get:pg_query.Node.a_indirection) return _internal_a_indirection(); } inline ::pg_query::A_Indirection* Node::unsafe_arena_release_a_indirection() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_indirection) if (_internal_has_a_indirection()) { clear_has_node(); ::pg_query::A_Indirection* temp = node_.a_indirection_; node_.a_indirection_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_indirection(::pg_query::A_Indirection* a_indirection) { clear_node(); if (a_indirection) { set_has_a_indirection(); node_.a_indirection_ = a_indirection; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_indirection) } inline ::pg_query::A_Indirection* Node::_internal_mutable_a_indirection() { if (!_internal_has_a_indirection()) { clear_node(); set_has_a_indirection(); node_.a_indirection_ = CreateMaybeMessage< ::pg_query::A_Indirection >(GetArena()); } return node_.a_indirection_; } inline ::pg_query::A_Indirection* Node::mutable_a_indirection() { // @@protoc_insertion_point(field_mutable:pg_query.Node.a_indirection) return _internal_mutable_a_indirection(); } // .pg_query.A_ArrayExpr a_array_expr = 175 [json_name = "A_ArrayExpr"]; inline bool Node::_internal_has_a_array_expr() const { return node_case() == kAArrayExpr; } inline bool Node::has_a_array_expr() const { return _internal_has_a_array_expr(); } inline void Node::set_has_a_array_expr() { _oneof_case_[0] = kAArrayExpr; } inline void Node::clear_a_array_expr() { if (_internal_has_a_array_expr()) { if (GetArena() == nullptr) { delete node_.a_array_expr_; } clear_has_node(); } } inline ::pg_query::A_ArrayExpr* Node::release_a_array_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.a_array_expr) if (_internal_has_a_array_expr()) { clear_has_node(); ::pg_query::A_ArrayExpr* temp = node_.a_array_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.a_array_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::A_ArrayExpr& Node::_internal_a_array_expr() const { return _internal_has_a_array_expr() ? *node_.a_array_expr_ : reinterpret_cast< ::pg_query::A_ArrayExpr&>(::pg_query::_A_ArrayExpr_default_instance_); } inline const ::pg_query::A_ArrayExpr& Node::a_array_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.a_array_expr) return _internal_a_array_expr(); } inline ::pg_query::A_ArrayExpr* Node::unsafe_arena_release_a_array_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.a_array_expr) if (_internal_has_a_array_expr()) { clear_has_node(); ::pg_query::A_ArrayExpr* temp = node_.a_array_expr_; node_.a_array_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_a_array_expr(::pg_query::A_ArrayExpr* a_array_expr) { clear_node(); if (a_array_expr) { set_has_a_array_expr(); node_.a_array_expr_ = a_array_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.a_array_expr) } inline ::pg_query::A_ArrayExpr* Node::_internal_mutable_a_array_expr() { if (!_internal_has_a_array_expr()) { clear_node(); set_has_a_array_expr(); node_.a_array_expr_ = CreateMaybeMessage< ::pg_query::A_ArrayExpr >(GetArena()); } return node_.a_array_expr_; } inline ::pg_query::A_ArrayExpr* Node::mutable_a_array_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.a_array_expr) return _internal_mutable_a_array_expr(); } // .pg_query.ResTarget res_target = 176 [json_name = "ResTarget"]; inline bool Node::_internal_has_res_target() const { return node_case() == kResTarget; } inline bool Node::has_res_target() const { return _internal_has_res_target(); } inline void Node::set_has_res_target() { _oneof_case_[0] = kResTarget; } inline void Node::clear_res_target() { if (_internal_has_res_target()) { if (GetArena() == nullptr) { delete node_.res_target_; } clear_has_node(); } } inline ::pg_query::ResTarget* Node::release_res_target() { // @@protoc_insertion_point(field_release:pg_query.Node.res_target) if (_internal_has_res_target()) { clear_has_node(); ::pg_query::ResTarget* temp = node_.res_target_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.res_target_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ResTarget& Node::_internal_res_target() const { return _internal_has_res_target() ? *node_.res_target_ : reinterpret_cast< ::pg_query::ResTarget&>(::pg_query::_ResTarget_default_instance_); } inline const ::pg_query::ResTarget& Node::res_target() const { // @@protoc_insertion_point(field_get:pg_query.Node.res_target) return _internal_res_target(); } inline ::pg_query::ResTarget* Node::unsafe_arena_release_res_target() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.res_target) if (_internal_has_res_target()) { clear_has_node(); ::pg_query::ResTarget* temp = node_.res_target_; node_.res_target_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_res_target(::pg_query::ResTarget* res_target) { clear_node(); if (res_target) { set_has_res_target(); node_.res_target_ = res_target; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.res_target) } inline ::pg_query::ResTarget* Node::_internal_mutable_res_target() { if (!_internal_has_res_target()) { clear_node(); set_has_res_target(); node_.res_target_ = CreateMaybeMessage< ::pg_query::ResTarget >(GetArena()); } return node_.res_target_; } inline ::pg_query::ResTarget* Node::mutable_res_target() { // @@protoc_insertion_point(field_mutable:pg_query.Node.res_target) return _internal_mutable_res_target(); } // .pg_query.MultiAssignRef multi_assign_ref = 177 [json_name = "MultiAssignRef"]; inline bool Node::_internal_has_multi_assign_ref() const { return node_case() == kMultiAssignRef; } inline bool Node::has_multi_assign_ref() const { return _internal_has_multi_assign_ref(); } inline void Node::set_has_multi_assign_ref() { _oneof_case_[0] = kMultiAssignRef; } inline void Node::clear_multi_assign_ref() { if (_internal_has_multi_assign_ref()) { if (GetArena() == nullptr) { delete node_.multi_assign_ref_; } clear_has_node(); } } inline ::pg_query::MultiAssignRef* Node::release_multi_assign_ref() { // @@protoc_insertion_point(field_release:pg_query.Node.multi_assign_ref) if (_internal_has_multi_assign_ref()) { clear_has_node(); ::pg_query::MultiAssignRef* temp = node_.multi_assign_ref_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.multi_assign_ref_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::MultiAssignRef& Node::_internal_multi_assign_ref() const { return _internal_has_multi_assign_ref() ? *node_.multi_assign_ref_ : reinterpret_cast< ::pg_query::MultiAssignRef&>(::pg_query::_MultiAssignRef_default_instance_); } inline const ::pg_query::MultiAssignRef& Node::multi_assign_ref() const { // @@protoc_insertion_point(field_get:pg_query.Node.multi_assign_ref) return _internal_multi_assign_ref(); } inline ::pg_query::MultiAssignRef* Node::unsafe_arena_release_multi_assign_ref() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.multi_assign_ref) if (_internal_has_multi_assign_ref()) { clear_has_node(); ::pg_query::MultiAssignRef* temp = node_.multi_assign_ref_; node_.multi_assign_ref_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_multi_assign_ref(::pg_query::MultiAssignRef* multi_assign_ref) { clear_node(); if (multi_assign_ref) { set_has_multi_assign_ref(); node_.multi_assign_ref_ = multi_assign_ref; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.multi_assign_ref) } inline ::pg_query::MultiAssignRef* Node::_internal_mutable_multi_assign_ref() { if (!_internal_has_multi_assign_ref()) { clear_node(); set_has_multi_assign_ref(); node_.multi_assign_ref_ = CreateMaybeMessage< ::pg_query::MultiAssignRef >(GetArena()); } return node_.multi_assign_ref_; } inline ::pg_query::MultiAssignRef* Node::mutable_multi_assign_ref() { // @@protoc_insertion_point(field_mutable:pg_query.Node.multi_assign_ref) return _internal_mutable_multi_assign_ref(); } // .pg_query.TypeCast type_cast = 178 [json_name = "TypeCast"]; inline bool Node::_internal_has_type_cast() const { return node_case() == kTypeCast; } inline bool Node::has_type_cast() const { return _internal_has_type_cast(); } inline void Node::set_has_type_cast() { _oneof_case_[0] = kTypeCast; } inline void Node::clear_type_cast() { if (_internal_has_type_cast()) { if (GetArena() == nullptr) { delete node_.type_cast_; } clear_has_node(); } } inline ::pg_query::TypeCast* Node::release_type_cast() { // @@protoc_insertion_point(field_release:pg_query.Node.type_cast) if (_internal_has_type_cast()) { clear_has_node(); ::pg_query::TypeCast* temp = node_.type_cast_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.type_cast_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TypeCast& Node::_internal_type_cast() const { return _internal_has_type_cast() ? *node_.type_cast_ : reinterpret_cast< ::pg_query::TypeCast&>(::pg_query::_TypeCast_default_instance_); } inline const ::pg_query::TypeCast& Node::type_cast() const { // @@protoc_insertion_point(field_get:pg_query.Node.type_cast) return _internal_type_cast(); } inline ::pg_query::TypeCast* Node::unsafe_arena_release_type_cast() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.type_cast) if (_internal_has_type_cast()) { clear_has_node(); ::pg_query::TypeCast* temp = node_.type_cast_; node_.type_cast_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_type_cast(::pg_query::TypeCast* type_cast) { clear_node(); if (type_cast) { set_has_type_cast(); node_.type_cast_ = type_cast; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.type_cast) } inline ::pg_query::TypeCast* Node::_internal_mutable_type_cast() { if (!_internal_has_type_cast()) { clear_node(); set_has_type_cast(); node_.type_cast_ = CreateMaybeMessage< ::pg_query::TypeCast >(GetArena()); } return node_.type_cast_; } inline ::pg_query::TypeCast* Node::mutable_type_cast() { // @@protoc_insertion_point(field_mutable:pg_query.Node.type_cast) return _internal_mutable_type_cast(); } // .pg_query.CollateClause collate_clause = 179 [json_name = "CollateClause"]; inline bool Node::_internal_has_collate_clause() const { return node_case() == kCollateClause; } inline bool Node::has_collate_clause() const { return _internal_has_collate_clause(); } inline void Node::set_has_collate_clause() { _oneof_case_[0] = kCollateClause; } inline void Node::clear_collate_clause() { if (_internal_has_collate_clause()) { if (GetArena() == nullptr) { delete node_.collate_clause_; } clear_has_node(); } } inline ::pg_query::CollateClause* Node::release_collate_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.collate_clause) if (_internal_has_collate_clause()) { clear_has_node(); ::pg_query::CollateClause* temp = node_.collate_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.collate_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CollateClause& Node::_internal_collate_clause() const { return _internal_has_collate_clause() ? *node_.collate_clause_ : reinterpret_cast< ::pg_query::CollateClause&>(::pg_query::_CollateClause_default_instance_); } inline const ::pg_query::CollateClause& Node::collate_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.collate_clause) return _internal_collate_clause(); } inline ::pg_query::CollateClause* Node::unsafe_arena_release_collate_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.collate_clause) if (_internal_has_collate_clause()) { clear_has_node(); ::pg_query::CollateClause* temp = node_.collate_clause_; node_.collate_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_collate_clause(::pg_query::CollateClause* collate_clause) { clear_node(); if (collate_clause) { set_has_collate_clause(); node_.collate_clause_ = collate_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.collate_clause) } inline ::pg_query::CollateClause* Node::_internal_mutable_collate_clause() { if (!_internal_has_collate_clause()) { clear_node(); set_has_collate_clause(); node_.collate_clause_ = CreateMaybeMessage< ::pg_query::CollateClause >(GetArena()); } return node_.collate_clause_; } inline ::pg_query::CollateClause* Node::mutable_collate_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.collate_clause) return _internal_mutable_collate_clause(); } // .pg_query.SortBy sort_by = 180 [json_name = "SortBy"]; inline bool Node::_internal_has_sort_by() const { return node_case() == kSortBy; } inline bool Node::has_sort_by() const { return _internal_has_sort_by(); } inline void Node::set_has_sort_by() { _oneof_case_[0] = kSortBy; } inline void Node::clear_sort_by() { if (_internal_has_sort_by()) { if (GetArena() == nullptr) { delete node_.sort_by_; } clear_has_node(); } } inline ::pg_query::SortBy* Node::release_sort_by() { // @@protoc_insertion_point(field_release:pg_query.Node.sort_by) if (_internal_has_sort_by()) { clear_has_node(); ::pg_query::SortBy* temp = node_.sort_by_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.sort_by_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SortBy& Node::_internal_sort_by() const { return _internal_has_sort_by() ? *node_.sort_by_ : reinterpret_cast< ::pg_query::SortBy&>(::pg_query::_SortBy_default_instance_); } inline const ::pg_query::SortBy& Node::sort_by() const { // @@protoc_insertion_point(field_get:pg_query.Node.sort_by) return _internal_sort_by(); } inline ::pg_query::SortBy* Node::unsafe_arena_release_sort_by() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sort_by) if (_internal_has_sort_by()) { clear_has_node(); ::pg_query::SortBy* temp = node_.sort_by_; node_.sort_by_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sort_by(::pg_query::SortBy* sort_by) { clear_node(); if (sort_by) { set_has_sort_by(); node_.sort_by_ = sort_by; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sort_by) } inline ::pg_query::SortBy* Node::_internal_mutable_sort_by() { if (!_internal_has_sort_by()) { clear_node(); set_has_sort_by(); node_.sort_by_ = CreateMaybeMessage< ::pg_query::SortBy >(GetArena()); } return node_.sort_by_; } inline ::pg_query::SortBy* Node::mutable_sort_by() { // @@protoc_insertion_point(field_mutable:pg_query.Node.sort_by) return _internal_mutable_sort_by(); } // .pg_query.WindowDef window_def = 181 [json_name = "WindowDef"]; inline bool Node::_internal_has_window_def() const { return node_case() == kWindowDef; } inline bool Node::has_window_def() const { return _internal_has_window_def(); } inline void Node::set_has_window_def() { _oneof_case_[0] = kWindowDef; } inline void Node::clear_window_def() { if (_internal_has_window_def()) { if (GetArena() == nullptr) { delete node_.window_def_; } clear_has_node(); } } inline ::pg_query::WindowDef* Node::release_window_def() { // @@protoc_insertion_point(field_release:pg_query.Node.window_def) if (_internal_has_window_def()) { clear_has_node(); ::pg_query::WindowDef* temp = node_.window_def_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.window_def_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WindowDef& Node::_internal_window_def() const { return _internal_has_window_def() ? *node_.window_def_ : reinterpret_cast< ::pg_query::WindowDef&>(::pg_query::_WindowDef_default_instance_); } inline const ::pg_query::WindowDef& Node::window_def() const { // @@protoc_insertion_point(field_get:pg_query.Node.window_def) return _internal_window_def(); } inline ::pg_query::WindowDef* Node::unsafe_arena_release_window_def() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.window_def) if (_internal_has_window_def()) { clear_has_node(); ::pg_query::WindowDef* temp = node_.window_def_; node_.window_def_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_window_def(::pg_query::WindowDef* window_def) { clear_node(); if (window_def) { set_has_window_def(); node_.window_def_ = window_def; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_def) } inline ::pg_query::WindowDef* Node::_internal_mutable_window_def() { if (!_internal_has_window_def()) { clear_node(); set_has_window_def(); node_.window_def_ = CreateMaybeMessage< ::pg_query::WindowDef >(GetArena()); } return node_.window_def_; } inline ::pg_query::WindowDef* Node::mutable_window_def() { // @@protoc_insertion_point(field_mutable:pg_query.Node.window_def) return _internal_mutable_window_def(); } // .pg_query.RangeSubselect range_subselect = 182 [json_name = "RangeSubselect"]; inline bool Node::_internal_has_range_subselect() const { return node_case() == kRangeSubselect; } inline bool Node::has_range_subselect() const { return _internal_has_range_subselect(); } inline void Node::set_has_range_subselect() { _oneof_case_[0] = kRangeSubselect; } inline void Node::clear_range_subselect() { if (_internal_has_range_subselect()) { if (GetArena() == nullptr) { delete node_.range_subselect_; } clear_has_node(); } } inline ::pg_query::RangeSubselect* Node::release_range_subselect() { // @@protoc_insertion_point(field_release:pg_query.Node.range_subselect) if (_internal_has_range_subselect()) { clear_has_node(); ::pg_query::RangeSubselect* temp = node_.range_subselect_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.range_subselect_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeSubselect& Node::_internal_range_subselect() const { return _internal_has_range_subselect() ? *node_.range_subselect_ : reinterpret_cast< ::pg_query::RangeSubselect&>(::pg_query::_RangeSubselect_default_instance_); } inline const ::pg_query::RangeSubselect& Node::range_subselect() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_subselect) return _internal_range_subselect(); } inline ::pg_query::RangeSubselect* Node::unsafe_arena_release_range_subselect() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_subselect) if (_internal_has_range_subselect()) { clear_has_node(); ::pg_query::RangeSubselect* temp = node_.range_subselect_; node_.range_subselect_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_subselect(::pg_query::RangeSubselect* range_subselect) { clear_node(); if (range_subselect) { set_has_range_subselect(); node_.range_subselect_ = range_subselect; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_subselect) } inline ::pg_query::RangeSubselect* Node::_internal_mutable_range_subselect() { if (!_internal_has_range_subselect()) { clear_node(); set_has_range_subselect(); node_.range_subselect_ = CreateMaybeMessage< ::pg_query::RangeSubselect >(GetArena()); } return node_.range_subselect_; } inline ::pg_query::RangeSubselect* Node::mutable_range_subselect() { // @@protoc_insertion_point(field_mutable:pg_query.Node.range_subselect) return _internal_mutable_range_subselect(); } // .pg_query.RangeFunction range_function = 183 [json_name = "RangeFunction"]; inline bool Node::_internal_has_range_function() const { return node_case() == kRangeFunction; } inline bool Node::has_range_function() const { return _internal_has_range_function(); } inline void Node::set_has_range_function() { _oneof_case_[0] = kRangeFunction; } inline void Node::clear_range_function() { if (_internal_has_range_function()) { if (GetArena() == nullptr) { delete node_.range_function_; } clear_has_node(); } } inline ::pg_query::RangeFunction* Node::release_range_function() { // @@protoc_insertion_point(field_release:pg_query.Node.range_function) if (_internal_has_range_function()) { clear_has_node(); ::pg_query::RangeFunction* temp = node_.range_function_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.range_function_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeFunction& Node::_internal_range_function() const { return _internal_has_range_function() ? *node_.range_function_ : reinterpret_cast< ::pg_query::RangeFunction&>(::pg_query::_RangeFunction_default_instance_); } inline const ::pg_query::RangeFunction& Node::range_function() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_function) return _internal_range_function(); } inline ::pg_query::RangeFunction* Node::unsafe_arena_release_range_function() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_function) if (_internal_has_range_function()) { clear_has_node(); ::pg_query::RangeFunction* temp = node_.range_function_; node_.range_function_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_function(::pg_query::RangeFunction* range_function) { clear_node(); if (range_function) { set_has_range_function(); node_.range_function_ = range_function; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_function) } inline ::pg_query::RangeFunction* Node::_internal_mutable_range_function() { if (!_internal_has_range_function()) { clear_node(); set_has_range_function(); node_.range_function_ = CreateMaybeMessage< ::pg_query::RangeFunction >(GetArena()); } return node_.range_function_; } inline ::pg_query::RangeFunction* Node::mutable_range_function() { // @@protoc_insertion_point(field_mutable:pg_query.Node.range_function) return _internal_mutable_range_function(); } // .pg_query.RangeTableSample range_table_sample = 184 [json_name = "RangeTableSample"]; inline bool Node::_internal_has_range_table_sample() const { return node_case() == kRangeTableSample; } inline bool Node::has_range_table_sample() const { return _internal_has_range_table_sample(); } inline void Node::set_has_range_table_sample() { _oneof_case_[0] = kRangeTableSample; } inline void Node::clear_range_table_sample() { if (_internal_has_range_table_sample()) { if (GetArena() == nullptr) { delete node_.range_table_sample_; } clear_has_node(); } } inline ::pg_query::RangeTableSample* Node::release_range_table_sample() { // @@protoc_insertion_point(field_release:pg_query.Node.range_table_sample) if (_internal_has_range_table_sample()) { clear_has_node(); ::pg_query::RangeTableSample* temp = node_.range_table_sample_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.range_table_sample_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTableSample& Node::_internal_range_table_sample() const { return _internal_has_range_table_sample() ? *node_.range_table_sample_ : reinterpret_cast< ::pg_query::RangeTableSample&>(::pg_query::_RangeTableSample_default_instance_); } inline const ::pg_query::RangeTableSample& Node::range_table_sample() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_table_sample) return _internal_range_table_sample(); } inline ::pg_query::RangeTableSample* Node::unsafe_arena_release_range_table_sample() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_table_sample) if (_internal_has_range_table_sample()) { clear_has_node(); ::pg_query::RangeTableSample* temp = node_.range_table_sample_; node_.range_table_sample_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_table_sample(::pg_query::RangeTableSample* range_table_sample) { clear_node(); if (range_table_sample) { set_has_range_table_sample(); node_.range_table_sample_ = range_table_sample; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_table_sample) } inline ::pg_query::RangeTableSample* Node::_internal_mutable_range_table_sample() { if (!_internal_has_range_table_sample()) { clear_node(); set_has_range_table_sample(); node_.range_table_sample_ = CreateMaybeMessage< ::pg_query::RangeTableSample >(GetArena()); } return node_.range_table_sample_; } inline ::pg_query::RangeTableSample* Node::mutable_range_table_sample() { // @@protoc_insertion_point(field_mutable:pg_query.Node.range_table_sample) return _internal_mutable_range_table_sample(); } // .pg_query.RangeTableFunc range_table_func = 185 [json_name = "RangeTableFunc"]; inline bool Node::_internal_has_range_table_func() const { return node_case() == kRangeTableFunc; } inline bool Node::has_range_table_func() const { return _internal_has_range_table_func(); } inline void Node::set_has_range_table_func() { _oneof_case_[0] = kRangeTableFunc; } inline void Node::clear_range_table_func() { if (_internal_has_range_table_func()) { if (GetArena() == nullptr) { delete node_.range_table_func_; } clear_has_node(); } } inline ::pg_query::RangeTableFunc* Node::release_range_table_func() { // @@protoc_insertion_point(field_release:pg_query.Node.range_table_func) if (_internal_has_range_table_func()) { clear_has_node(); ::pg_query::RangeTableFunc* temp = node_.range_table_func_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.range_table_func_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTableFunc& Node::_internal_range_table_func() const { return _internal_has_range_table_func() ? *node_.range_table_func_ : reinterpret_cast< ::pg_query::RangeTableFunc&>(::pg_query::_RangeTableFunc_default_instance_); } inline const ::pg_query::RangeTableFunc& Node::range_table_func() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_table_func) return _internal_range_table_func(); } inline ::pg_query::RangeTableFunc* Node::unsafe_arena_release_range_table_func() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_table_func) if (_internal_has_range_table_func()) { clear_has_node(); ::pg_query::RangeTableFunc* temp = node_.range_table_func_; node_.range_table_func_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_table_func(::pg_query::RangeTableFunc* range_table_func) { clear_node(); if (range_table_func) { set_has_range_table_func(); node_.range_table_func_ = range_table_func; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_table_func) } inline ::pg_query::RangeTableFunc* Node::_internal_mutable_range_table_func() { if (!_internal_has_range_table_func()) { clear_node(); set_has_range_table_func(); node_.range_table_func_ = CreateMaybeMessage< ::pg_query::RangeTableFunc >(GetArena()); } return node_.range_table_func_; } inline ::pg_query::RangeTableFunc* Node::mutable_range_table_func() { // @@protoc_insertion_point(field_mutable:pg_query.Node.range_table_func) return _internal_mutable_range_table_func(); } // .pg_query.RangeTableFuncCol range_table_func_col = 186 [json_name = "RangeTableFuncCol"]; inline bool Node::_internal_has_range_table_func_col() const { return node_case() == kRangeTableFuncCol; } inline bool Node::has_range_table_func_col() const { return _internal_has_range_table_func_col(); } inline void Node::set_has_range_table_func_col() { _oneof_case_[0] = kRangeTableFuncCol; } inline void Node::clear_range_table_func_col() { if (_internal_has_range_table_func_col()) { if (GetArena() == nullptr) { delete node_.range_table_func_col_; } clear_has_node(); } } inline ::pg_query::RangeTableFuncCol* Node::release_range_table_func_col() { // @@protoc_insertion_point(field_release:pg_query.Node.range_table_func_col) if (_internal_has_range_table_func_col()) { clear_has_node(); ::pg_query::RangeTableFuncCol* temp = node_.range_table_func_col_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.range_table_func_col_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTableFuncCol& Node::_internal_range_table_func_col() const { return _internal_has_range_table_func_col() ? *node_.range_table_func_col_ : reinterpret_cast< ::pg_query::RangeTableFuncCol&>(::pg_query::_RangeTableFuncCol_default_instance_); } inline const ::pg_query::RangeTableFuncCol& Node::range_table_func_col() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_table_func_col) return _internal_range_table_func_col(); } inline ::pg_query::RangeTableFuncCol* Node::unsafe_arena_release_range_table_func_col() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_table_func_col) if (_internal_has_range_table_func_col()) { clear_has_node(); ::pg_query::RangeTableFuncCol* temp = node_.range_table_func_col_; node_.range_table_func_col_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_table_func_col(::pg_query::RangeTableFuncCol* range_table_func_col) { clear_node(); if (range_table_func_col) { set_has_range_table_func_col(); node_.range_table_func_col_ = range_table_func_col; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_table_func_col) } inline ::pg_query::RangeTableFuncCol* Node::_internal_mutable_range_table_func_col() { if (!_internal_has_range_table_func_col()) { clear_node(); set_has_range_table_func_col(); node_.range_table_func_col_ = CreateMaybeMessage< ::pg_query::RangeTableFuncCol >(GetArena()); } return node_.range_table_func_col_; } inline ::pg_query::RangeTableFuncCol* Node::mutable_range_table_func_col() { // @@protoc_insertion_point(field_mutable:pg_query.Node.range_table_func_col) return _internal_mutable_range_table_func_col(); } // .pg_query.TypeName type_name = 187 [json_name = "TypeName"]; inline bool Node::_internal_has_type_name() const { return node_case() == kTypeName; } inline bool Node::has_type_name() const { return _internal_has_type_name(); } inline void Node::set_has_type_name() { _oneof_case_[0] = kTypeName; } inline void Node::clear_type_name() { if (_internal_has_type_name()) { if (GetArena() == nullptr) { delete node_.type_name_; } clear_has_node(); } } inline ::pg_query::TypeName* Node::release_type_name() { // @@protoc_insertion_point(field_release:pg_query.Node.type_name) if (_internal_has_type_name()) { clear_has_node(); ::pg_query::TypeName* temp = node_.type_name_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.type_name_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TypeName& Node::_internal_type_name() const { return _internal_has_type_name() ? *node_.type_name_ : reinterpret_cast< ::pg_query::TypeName&>(::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& Node::type_name() const { // @@protoc_insertion_point(field_get:pg_query.Node.type_name) return _internal_type_name(); } inline ::pg_query::TypeName* Node::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.type_name) if (_internal_has_type_name()) { clear_has_node(); ::pg_query::TypeName* temp = node_.type_name_; node_.type_name_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_type_name(::pg_query::TypeName* type_name) { clear_node(); if (type_name) { set_has_type_name(); node_.type_name_ = type_name; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.type_name) } inline ::pg_query::TypeName* Node::_internal_mutable_type_name() { if (!_internal_has_type_name()) { clear_node(); set_has_type_name(); node_.type_name_ = CreateMaybeMessage< ::pg_query::TypeName >(GetArena()); } return node_.type_name_; } inline ::pg_query::TypeName* Node::mutable_type_name() { // @@protoc_insertion_point(field_mutable:pg_query.Node.type_name) return _internal_mutable_type_name(); } // .pg_query.ColumnDef column_def = 188 [json_name = "ColumnDef"]; inline bool Node::_internal_has_column_def() const { return node_case() == kColumnDef; } inline bool Node::has_column_def() const { return _internal_has_column_def(); } inline void Node::set_has_column_def() { _oneof_case_[0] = kColumnDef; } inline void Node::clear_column_def() { if (_internal_has_column_def()) { if (GetArena() == nullptr) { delete node_.column_def_; } clear_has_node(); } } inline ::pg_query::ColumnDef* Node::release_column_def() { // @@protoc_insertion_point(field_release:pg_query.Node.column_def) if (_internal_has_column_def()) { clear_has_node(); ::pg_query::ColumnDef* temp = node_.column_def_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.column_def_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ColumnDef& Node::_internal_column_def() const { return _internal_has_column_def() ? *node_.column_def_ : reinterpret_cast< ::pg_query::ColumnDef&>(::pg_query::_ColumnDef_default_instance_); } inline const ::pg_query::ColumnDef& Node::column_def() const { // @@protoc_insertion_point(field_get:pg_query.Node.column_def) return _internal_column_def(); } inline ::pg_query::ColumnDef* Node::unsafe_arena_release_column_def() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.column_def) if (_internal_has_column_def()) { clear_has_node(); ::pg_query::ColumnDef* temp = node_.column_def_; node_.column_def_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_column_def(::pg_query::ColumnDef* column_def) { clear_node(); if (column_def) { set_has_column_def(); node_.column_def_ = column_def; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.column_def) } inline ::pg_query::ColumnDef* Node::_internal_mutable_column_def() { if (!_internal_has_column_def()) { clear_node(); set_has_column_def(); node_.column_def_ = CreateMaybeMessage< ::pg_query::ColumnDef >(GetArena()); } return node_.column_def_; } inline ::pg_query::ColumnDef* Node::mutable_column_def() { // @@protoc_insertion_point(field_mutable:pg_query.Node.column_def) return _internal_mutable_column_def(); } // .pg_query.IndexElem index_elem = 189 [json_name = "IndexElem"]; inline bool Node::_internal_has_index_elem() const { return node_case() == kIndexElem; } inline bool Node::has_index_elem() const { return _internal_has_index_elem(); } inline void Node::set_has_index_elem() { _oneof_case_[0] = kIndexElem; } inline void Node::clear_index_elem() { if (_internal_has_index_elem()) { if (GetArena() == nullptr) { delete node_.index_elem_; } clear_has_node(); } } inline ::pg_query::IndexElem* Node::release_index_elem() { // @@protoc_insertion_point(field_release:pg_query.Node.index_elem) if (_internal_has_index_elem()) { clear_has_node(); ::pg_query::IndexElem* temp = node_.index_elem_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.index_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IndexElem& Node::_internal_index_elem() const { return _internal_has_index_elem() ? *node_.index_elem_ : reinterpret_cast< ::pg_query::IndexElem&>(::pg_query::_IndexElem_default_instance_); } inline const ::pg_query::IndexElem& Node::index_elem() const { // @@protoc_insertion_point(field_get:pg_query.Node.index_elem) return _internal_index_elem(); } inline ::pg_query::IndexElem* Node::unsafe_arena_release_index_elem() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.index_elem) if (_internal_has_index_elem()) { clear_has_node(); ::pg_query::IndexElem* temp = node_.index_elem_; node_.index_elem_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_index_elem(::pg_query::IndexElem* index_elem) { clear_node(); if (index_elem) { set_has_index_elem(); node_.index_elem_ = index_elem; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.index_elem) } inline ::pg_query::IndexElem* Node::_internal_mutable_index_elem() { if (!_internal_has_index_elem()) { clear_node(); set_has_index_elem(); node_.index_elem_ = CreateMaybeMessage< ::pg_query::IndexElem >(GetArena()); } return node_.index_elem_; } inline ::pg_query::IndexElem* Node::mutable_index_elem() { // @@protoc_insertion_point(field_mutable:pg_query.Node.index_elem) return _internal_mutable_index_elem(); } // .pg_query.Constraint constraint = 190 [json_name = "Constraint"]; inline bool Node::_internal_has_constraint() const { return node_case() == kConstraint; } inline bool Node::has_constraint() const { return _internal_has_constraint(); } inline void Node::set_has_constraint() { _oneof_case_[0] = kConstraint; } inline void Node::clear_constraint() { if (_internal_has_constraint()) { if (GetArena() == nullptr) { delete node_.constraint_; } clear_has_node(); } } inline ::pg_query::Constraint* Node::release_constraint() { // @@protoc_insertion_point(field_release:pg_query.Node.constraint) if (_internal_has_constraint()) { clear_has_node(); ::pg_query::Constraint* temp = node_.constraint_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.constraint_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Constraint& Node::_internal_constraint() const { return _internal_has_constraint() ? *node_.constraint_ : reinterpret_cast< ::pg_query::Constraint&>(::pg_query::_Constraint_default_instance_); } inline const ::pg_query::Constraint& Node::constraint() const { // @@protoc_insertion_point(field_get:pg_query.Node.constraint) return _internal_constraint(); } inline ::pg_query::Constraint* Node::unsafe_arena_release_constraint() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.constraint) if (_internal_has_constraint()) { clear_has_node(); ::pg_query::Constraint* temp = node_.constraint_; node_.constraint_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_constraint(::pg_query::Constraint* constraint) { clear_node(); if (constraint) { set_has_constraint(); node_.constraint_ = constraint; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.constraint) } inline ::pg_query::Constraint* Node::_internal_mutable_constraint() { if (!_internal_has_constraint()) { clear_node(); set_has_constraint(); node_.constraint_ = CreateMaybeMessage< ::pg_query::Constraint >(GetArena()); } return node_.constraint_; } inline ::pg_query::Constraint* Node::mutable_constraint() { // @@protoc_insertion_point(field_mutable:pg_query.Node.constraint) return _internal_mutable_constraint(); } // .pg_query.DefElem def_elem = 191 [json_name = "DefElem"]; inline bool Node::_internal_has_def_elem() const { return node_case() == kDefElem; } inline bool Node::has_def_elem() const { return _internal_has_def_elem(); } inline void Node::set_has_def_elem() { _oneof_case_[0] = kDefElem; } inline void Node::clear_def_elem() { if (_internal_has_def_elem()) { if (GetArena() == nullptr) { delete node_.def_elem_; } clear_has_node(); } } inline ::pg_query::DefElem* Node::release_def_elem() { // @@protoc_insertion_point(field_release:pg_query.Node.def_elem) if (_internal_has_def_elem()) { clear_has_node(); ::pg_query::DefElem* temp = node_.def_elem_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.def_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::DefElem& Node::_internal_def_elem() const { return _internal_has_def_elem() ? *node_.def_elem_ : reinterpret_cast< ::pg_query::DefElem&>(::pg_query::_DefElem_default_instance_); } inline const ::pg_query::DefElem& Node::def_elem() const { // @@protoc_insertion_point(field_get:pg_query.Node.def_elem) return _internal_def_elem(); } inline ::pg_query::DefElem* Node::unsafe_arena_release_def_elem() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.def_elem) if (_internal_has_def_elem()) { clear_has_node(); ::pg_query::DefElem* temp = node_.def_elem_; node_.def_elem_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_def_elem(::pg_query::DefElem* def_elem) { clear_node(); if (def_elem) { set_has_def_elem(); node_.def_elem_ = def_elem; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.def_elem) } inline ::pg_query::DefElem* Node::_internal_mutable_def_elem() { if (!_internal_has_def_elem()) { clear_node(); set_has_def_elem(); node_.def_elem_ = CreateMaybeMessage< ::pg_query::DefElem >(GetArena()); } return node_.def_elem_; } inline ::pg_query::DefElem* Node::mutable_def_elem() { // @@protoc_insertion_point(field_mutable:pg_query.Node.def_elem) return _internal_mutable_def_elem(); } // .pg_query.RangeTblEntry range_tbl_entry = 192 [json_name = "RangeTblEntry"]; inline bool Node::_internal_has_range_tbl_entry() const { return node_case() == kRangeTblEntry; } inline bool Node::has_range_tbl_entry() const { return _internal_has_range_tbl_entry(); } inline void Node::set_has_range_tbl_entry() { _oneof_case_[0] = kRangeTblEntry; } inline void Node::clear_range_tbl_entry() { if (_internal_has_range_tbl_entry()) { if (GetArena() == nullptr) { delete node_.range_tbl_entry_; } clear_has_node(); } } inline ::pg_query::RangeTblEntry* Node::release_range_tbl_entry() { // @@protoc_insertion_point(field_release:pg_query.Node.range_tbl_entry) if (_internal_has_range_tbl_entry()) { clear_has_node(); ::pg_query::RangeTblEntry* temp = node_.range_tbl_entry_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.range_tbl_entry_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTblEntry& Node::_internal_range_tbl_entry() const { return _internal_has_range_tbl_entry() ? *node_.range_tbl_entry_ : reinterpret_cast< ::pg_query::RangeTblEntry&>(::pg_query::_RangeTblEntry_default_instance_); } inline const ::pg_query::RangeTblEntry& Node::range_tbl_entry() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_tbl_entry) return _internal_range_tbl_entry(); } inline ::pg_query::RangeTblEntry* Node::unsafe_arena_release_range_tbl_entry() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_tbl_entry) if (_internal_has_range_tbl_entry()) { clear_has_node(); ::pg_query::RangeTblEntry* temp = node_.range_tbl_entry_; node_.range_tbl_entry_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_tbl_entry(::pg_query::RangeTblEntry* range_tbl_entry) { clear_node(); if (range_tbl_entry) { set_has_range_tbl_entry(); node_.range_tbl_entry_ = range_tbl_entry; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_tbl_entry) } inline ::pg_query::RangeTblEntry* Node::_internal_mutable_range_tbl_entry() { if (!_internal_has_range_tbl_entry()) { clear_node(); set_has_range_tbl_entry(); node_.range_tbl_entry_ = CreateMaybeMessage< ::pg_query::RangeTblEntry >(GetArena()); } return node_.range_tbl_entry_; } inline ::pg_query::RangeTblEntry* Node::mutable_range_tbl_entry() { // @@protoc_insertion_point(field_mutable:pg_query.Node.range_tbl_entry) return _internal_mutable_range_tbl_entry(); } // .pg_query.RangeTblFunction range_tbl_function = 193 [json_name = "RangeTblFunction"]; inline bool Node::_internal_has_range_tbl_function() const { return node_case() == kRangeTblFunction; } inline bool Node::has_range_tbl_function() const { return _internal_has_range_tbl_function(); } inline void Node::set_has_range_tbl_function() { _oneof_case_[0] = kRangeTblFunction; } inline void Node::clear_range_tbl_function() { if (_internal_has_range_tbl_function()) { if (GetArena() == nullptr) { delete node_.range_tbl_function_; } clear_has_node(); } } inline ::pg_query::RangeTblFunction* Node::release_range_tbl_function() { // @@protoc_insertion_point(field_release:pg_query.Node.range_tbl_function) if (_internal_has_range_tbl_function()) { clear_has_node(); ::pg_query::RangeTblFunction* temp = node_.range_tbl_function_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.range_tbl_function_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RangeTblFunction& Node::_internal_range_tbl_function() const { return _internal_has_range_tbl_function() ? *node_.range_tbl_function_ : reinterpret_cast< ::pg_query::RangeTblFunction&>(::pg_query::_RangeTblFunction_default_instance_); } inline const ::pg_query::RangeTblFunction& Node::range_tbl_function() const { // @@protoc_insertion_point(field_get:pg_query.Node.range_tbl_function) return _internal_range_tbl_function(); } inline ::pg_query::RangeTblFunction* Node::unsafe_arena_release_range_tbl_function() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.range_tbl_function) if (_internal_has_range_tbl_function()) { clear_has_node(); ::pg_query::RangeTblFunction* temp = node_.range_tbl_function_; node_.range_tbl_function_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_range_tbl_function(::pg_query::RangeTblFunction* range_tbl_function) { clear_node(); if (range_tbl_function) { set_has_range_tbl_function(); node_.range_tbl_function_ = range_tbl_function; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.range_tbl_function) } inline ::pg_query::RangeTblFunction* Node::_internal_mutable_range_tbl_function() { if (!_internal_has_range_tbl_function()) { clear_node(); set_has_range_tbl_function(); node_.range_tbl_function_ = CreateMaybeMessage< ::pg_query::RangeTblFunction >(GetArena()); } return node_.range_tbl_function_; } inline ::pg_query::RangeTblFunction* Node::mutable_range_tbl_function() { // @@protoc_insertion_point(field_mutable:pg_query.Node.range_tbl_function) return _internal_mutable_range_tbl_function(); } // .pg_query.TableSampleClause table_sample_clause = 194 [json_name = "TableSampleClause"]; inline bool Node::_internal_has_table_sample_clause() const { return node_case() == kTableSampleClause; } inline bool Node::has_table_sample_clause() const { return _internal_has_table_sample_clause(); } inline void Node::set_has_table_sample_clause() { _oneof_case_[0] = kTableSampleClause; } inline void Node::clear_table_sample_clause() { if (_internal_has_table_sample_clause()) { if (GetArena() == nullptr) { delete node_.table_sample_clause_; } clear_has_node(); } } inline ::pg_query::TableSampleClause* Node::release_table_sample_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.table_sample_clause) if (_internal_has_table_sample_clause()) { clear_has_node(); ::pg_query::TableSampleClause* temp = node_.table_sample_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.table_sample_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TableSampleClause& Node::_internal_table_sample_clause() const { return _internal_has_table_sample_clause() ? *node_.table_sample_clause_ : reinterpret_cast< ::pg_query::TableSampleClause&>(::pg_query::_TableSampleClause_default_instance_); } inline const ::pg_query::TableSampleClause& Node::table_sample_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.table_sample_clause) return _internal_table_sample_clause(); } inline ::pg_query::TableSampleClause* Node::unsafe_arena_release_table_sample_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.table_sample_clause) if (_internal_has_table_sample_clause()) { clear_has_node(); ::pg_query::TableSampleClause* temp = node_.table_sample_clause_; node_.table_sample_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_table_sample_clause(::pg_query::TableSampleClause* table_sample_clause) { clear_node(); if (table_sample_clause) { set_has_table_sample_clause(); node_.table_sample_clause_ = table_sample_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.table_sample_clause) } inline ::pg_query::TableSampleClause* Node::_internal_mutable_table_sample_clause() { if (!_internal_has_table_sample_clause()) { clear_node(); set_has_table_sample_clause(); node_.table_sample_clause_ = CreateMaybeMessage< ::pg_query::TableSampleClause >(GetArena()); } return node_.table_sample_clause_; } inline ::pg_query::TableSampleClause* Node::mutable_table_sample_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.table_sample_clause) return _internal_mutable_table_sample_clause(); } // .pg_query.WithCheckOption with_check_option = 195 [json_name = "WithCheckOption"]; inline bool Node::_internal_has_with_check_option() const { return node_case() == kWithCheckOption; } inline bool Node::has_with_check_option() const { return _internal_has_with_check_option(); } inline void Node::set_has_with_check_option() { _oneof_case_[0] = kWithCheckOption; } inline void Node::clear_with_check_option() { if (_internal_has_with_check_option()) { if (GetArena() == nullptr) { delete node_.with_check_option_; } clear_has_node(); } } inline ::pg_query::WithCheckOption* Node::release_with_check_option() { // @@protoc_insertion_point(field_release:pg_query.Node.with_check_option) if (_internal_has_with_check_option()) { clear_has_node(); ::pg_query::WithCheckOption* temp = node_.with_check_option_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.with_check_option_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WithCheckOption& Node::_internal_with_check_option() const { return _internal_has_with_check_option() ? *node_.with_check_option_ : reinterpret_cast< ::pg_query::WithCheckOption&>(::pg_query::_WithCheckOption_default_instance_); } inline const ::pg_query::WithCheckOption& Node::with_check_option() const { // @@protoc_insertion_point(field_get:pg_query.Node.with_check_option) return _internal_with_check_option(); } inline ::pg_query::WithCheckOption* Node::unsafe_arena_release_with_check_option() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.with_check_option) if (_internal_has_with_check_option()) { clear_has_node(); ::pg_query::WithCheckOption* temp = node_.with_check_option_; node_.with_check_option_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_with_check_option(::pg_query::WithCheckOption* with_check_option) { clear_node(); if (with_check_option) { set_has_with_check_option(); node_.with_check_option_ = with_check_option; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.with_check_option) } inline ::pg_query::WithCheckOption* Node::_internal_mutable_with_check_option() { if (!_internal_has_with_check_option()) { clear_node(); set_has_with_check_option(); node_.with_check_option_ = CreateMaybeMessage< ::pg_query::WithCheckOption >(GetArena()); } return node_.with_check_option_; } inline ::pg_query::WithCheckOption* Node::mutable_with_check_option() { // @@protoc_insertion_point(field_mutable:pg_query.Node.with_check_option) return _internal_mutable_with_check_option(); } // .pg_query.SortGroupClause sort_group_clause = 196 [json_name = "SortGroupClause"]; inline bool Node::_internal_has_sort_group_clause() const { return node_case() == kSortGroupClause; } inline bool Node::has_sort_group_clause() const { return _internal_has_sort_group_clause(); } inline void Node::set_has_sort_group_clause() { _oneof_case_[0] = kSortGroupClause; } inline void Node::clear_sort_group_clause() { if (_internal_has_sort_group_clause()) { if (GetArena() == nullptr) { delete node_.sort_group_clause_; } clear_has_node(); } } inline ::pg_query::SortGroupClause* Node::release_sort_group_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.sort_group_clause) if (_internal_has_sort_group_clause()) { clear_has_node(); ::pg_query::SortGroupClause* temp = node_.sort_group_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.sort_group_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::SortGroupClause& Node::_internal_sort_group_clause() const { return _internal_has_sort_group_clause() ? *node_.sort_group_clause_ : reinterpret_cast< ::pg_query::SortGroupClause&>(::pg_query::_SortGroupClause_default_instance_); } inline const ::pg_query::SortGroupClause& Node::sort_group_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.sort_group_clause) return _internal_sort_group_clause(); } inline ::pg_query::SortGroupClause* Node::unsafe_arena_release_sort_group_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.sort_group_clause) if (_internal_has_sort_group_clause()) { clear_has_node(); ::pg_query::SortGroupClause* temp = node_.sort_group_clause_; node_.sort_group_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_sort_group_clause(::pg_query::SortGroupClause* sort_group_clause) { clear_node(); if (sort_group_clause) { set_has_sort_group_clause(); node_.sort_group_clause_ = sort_group_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.sort_group_clause) } inline ::pg_query::SortGroupClause* Node::_internal_mutable_sort_group_clause() { if (!_internal_has_sort_group_clause()) { clear_node(); set_has_sort_group_clause(); node_.sort_group_clause_ = CreateMaybeMessage< ::pg_query::SortGroupClause >(GetArena()); } return node_.sort_group_clause_; } inline ::pg_query::SortGroupClause* Node::mutable_sort_group_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.sort_group_clause) return _internal_mutable_sort_group_clause(); } // .pg_query.GroupingSet grouping_set = 197 [json_name = "GroupingSet"]; inline bool Node::_internal_has_grouping_set() const { return node_case() == kGroupingSet; } inline bool Node::has_grouping_set() const { return _internal_has_grouping_set(); } inline void Node::set_has_grouping_set() { _oneof_case_[0] = kGroupingSet; } inline void Node::clear_grouping_set() { if (_internal_has_grouping_set()) { if (GetArena() == nullptr) { delete node_.grouping_set_; } clear_has_node(); } } inline ::pg_query::GroupingSet* Node::release_grouping_set() { // @@protoc_insertion_point(field_release:pg_query.Node.grouping_set) if (_internal_has_grouping_set()) { clear_has_node(); ::pg_query::GroupingSet* temp = node_.grouping_set_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.grouping_set_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::GroupingSet& Node::_internal_grouping_set() const { return _internal_has_grouping_set() ? *node_.grouping_set_ : reinterpret_cast< ::pg_query::GroupingSet&>(::pg_query::_GroupingSet_default_instance_); } inline const ::pg_query::GroupingSet& Node::grouping_set() const { // @@protoc_insertion_point(field_get:pg_query.Node.grouping_set) return _internal_grouping_set(); } inline ::pg_query::GroupingSet* Node::unsafe_arena_release_grouping_set() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.grouping_set) if (_internal_has_grouping_set()) { clear_has_node(); ::pg_query::GroupingSet* temp = node_.grouping_set_; node_.grouping_set_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_grouping_set(::pg_query::GroupingSet* grouping_set) { clear_node(); if (grouping_set) { set_has_grouping_set(); node_.grouping_set_ = grouping_set; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.grouping_set) } inline ::pg_query::GroupingSet* Node::_internal_mutable_grouping_set() { if (!_internal_has_grouping_set()) { clear_node(); set_has_grouping_set(); node_.grouping_set_ = CreateMaybeMessage< ::pg_query::GroupingSet >(GetArena()); } return node_.grouping_set_; } inline ::pg_query::GroupingSet* Node::mutable_grouping_set() { // @@protoc_insertion_point(field_mutable:pg_query.Node.grouping_set) return _internal_mutable_grouping_set(); } // .pg_query.WindowClause window_clause = 198 [json_name = "WindowClause"]; inline bool Node::_internal_has_window_clause() const { return node_case() == kWindowClause; } inline bool Node::has_window_clause() const { return _internal_has_window_clause(); } inline void Node::set_has_window_clause() { _oneof_case_[0] = kWindowClause; } inline void Node::clear_window_clause() { if (_internal_has_window_clause()) { if (GetArena() == nullptr) { delete node_.window_clause_; } clear_has_node(); } } inline ::pg_query::WindowClause* Node::release_window_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.window_clause) if (_internal_has_window_clause()) { clear_has_node(); ::pg_query::WindowClause* temp = node_.window_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.window_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WindowClause& Node::_internal_window_clause() const { return _internal_has_window_clause() ? *node_.window_clause_ : reinterpret_cast< ::pg_query::WindowClause&>(::pg_query::_WindowClause_default_instance_); } inline const ::pg_query::WindowClause& Node::window_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.window_clause) return _internal_window_clause(); } inline ::pg_query::WindowClause* Node::unsafe_arena_release_window_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.window_clause) if (_internal_has_window_clause()) { clear_has_node(); ::pg_query::WindowClause* temp = node_.window_clause_; node_.window_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_window_clause(::pg_query::WindowClause* window_clause) { clear_node(); if (window_clause) { set_has_window_clause(); node_.window_clause_ = window_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.window_clause) } inline ::pg_query::WindowClause* Node::_internal_mutable_window_clause() { if (!_internal_has_window_clause()) { clear_node(); set_has_window_clause(); node_.window_clause_ = CreateMaybeMessage< ::pg_query::WindowClause >(GetArena()); } return node_.window_clause_; } inline ::pg_query::WindowClause* Node::mutable_window_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.window_clause) return _internal_mutable_window_clause(); } // .pg_query.ObjectWithArgs object_with_args = 199 [json_name = "ObjectWithArgs"]; inline bool Node::_internal_has_object_with_args() const { return node_case() == kObjectWithArgs; } inline bool Node::has_object_with_args() const { return _internal_has_object_with_args(); } inline void Node::set_has_object_with_args() { _oneof_case_[0] = kObjectWithArgs; } inline void Node::clear_object_with_args() { if (_internal_has_object_with_args()) { if (GetArena() == nullptr) { delete node_.object_with_args_; } clear_has_node(); } } inline ::pg_query::ObjectWithArgs* Node::release_object_with_args() { // @@protoc_insertion_point(field_release:pg_query.Node.object_with_args) if (_internal_has_object_with_args()) { clear_has_node(); ::pg_query::ObjectWithArgs* temp = node_.object_with_args_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.object_with_args_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::ObjectWithArgs& Node::_internal_object_with_args() const { return _internal_has_object_with_args() ? *node_.object_with_args_ : reinterpret_cast< ::pg_query::ObjectWithArgs&>(::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& Node::object_with_args() const { // @@protoc_insertion_point(field_get:pg_query.Node.object_with_args) return _internal_object_with_args(); } inline ::pg_query::ObjectWithArgs* Node::unsafe_arena_release_object_with_args() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.object_with_args) if (_internal_has_object_with_args()) { clear_has_node(); ::pg_query::ObjectWithArgs* temp = node_.object_with_args_; node_.object_with_args_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_object_with_args(::pg_query::ObjectWithArgs* object_with_args) { clear_node(); if (object_with_args) { set_has_object_with_args(); node_.object_with_args_ = object_with_args; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.object_with_args) } inline ::pg_query::ObjectWithArgs* Node::_internal_mutable_object_with_args() { if (!_internal_has_object_with_args()) { clear_node(); set_has_object_with_args(); node_.object_with_args_ = CreateMaybeMessage< ::pg_query::ObjectWithArgs >(GetArena()); } return node_.object_with_args_; } inline ::pg_query::ObjectWithArgs* Node::mutable_object_with_args() { // @@protoc_insertion_point(field_mutable:pg_query.Node.object_with_args) return _internal_mutable_object_with_args(); } // .pg_query.AccessPriv access_priv = 200 [json_name = "AccessPriv"]; inline bool Node::_internal_has_access_priv() const { return node_case() == kAccessPriv; } inline bool Node::has_access_priv() const { return _internal_has_access_priv(); } inline void Node::set_has_access_priv() { _oneof_case_[0] = kAccessPriv; } inline void Node::clear_access_priv() { if (_internal_has_access_priv()) { if (GetArena() == nullptr) { delete node_.access_priv_; } clear_has_node(); } } inline ::pg_query::AccessPriv* Node::release_access_priv() { // @@protoc_insertion_point(field_release:pg_query.Node.access_priv) if (_internal_has_access_priv()) { clear_has_node(); ::pg_query::AccessPriv* temp = node_.access_priv_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.access_priv_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::AccessPriv& Node::_internal_access_priv() const { return _internal_has_access_priv() ? *node_.access_priv_ : reinterpret_cast< ::pg_query::AccessPriv&>(::pg_query::_AccessPriv_default_instance_); } inline const ::pg_query::AccessPriv& Node::access_priv() const { // @@protoc_insertion_point(field_get:pg_query.Node.access_priv) return _internal_access_priv(); } inline ::pg_query::AccessPriv* Node::unsafe_arena_release_access_priv() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.access_priv) if (_internal_has_access_priv()) { clear_has_node(); ::pg_query::AccessPriv* temp = node_.access_priv_; node_.access_priv_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_access_priv(::pg_query::AccessPriv* access_priv) { clear_node(); if (access_priv) { set_has_access_priv(); node_.access_priv_ = access_priv; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.access_priv) } inline ::pg_query::AccessPriv* Node::_internal_mutable_access_priv() { if (!_internal_has_access_priv()) { clear_node(); set_has_access_priv(); node_.access_priv_ = CreateMaybeMessage< ::pg_query::AccessPriv >(GetArena()); } return node_.access_priv_; } inline ::pg_query::AccessPriv* Node::mutable_access_priv() { // @@protoc_insertion_point(field_mutable:pg_query.Node.access_priv) return _internal_mutable_access_priv(); } // .pg_query.CreateOpClassItem create_op_class_item = 201 [json_name = "CreateOpClassItem"]; inline bool Node::_internal_has_create_op_class_item() const { return node_case() == kCreateOpClassItem; } inline bool Node::has_create_op_class_item() const { return _internal_has_create_op_class_item(); } inline void Node::set_has_create_op_class_item() { _oneof_case_[0] = kCreateOpClassItem; } inline void Node::clear_create_op_class_item() { if (_internal_has_create_op_class_item()) { if (GetArena() == nullptr) { delete node_.create_op_class_item_; } clear_has_node(); } } inline ::pg_query::CreateOpClassItem* Node::release_create_op_class_item() { // @@protoc_insertion_point(field_release:pg_query.Node.create_op_class_item) if (_internal_has_create_op_class_item()) { clear_has_node(); ::pg_query::CreateOpClassItem* temp = node_.create_op_class_item_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.create_op_class_item_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CreateOpClassItem& Node::_internal_create_op_class_item() const { return _internal_has_create_op_class_item() ? *node_.create_op_class_item_ : reinterpret_cast< ::pg_query::CreateOpClassItem&>(::pg_query::_CreateOpClassItem_default_instance_); } inline const ::pg_query::CreateOpClassItem& Node::create_op_class_item() const { // @@protoc_insertion_point(field_get:pg_query.Node.create_op_class_item) return _internal_create_op_class_item(); } inline ::pg_query::CreateOpClassItem* Node::unsafe_arena_release_create_op_class_item() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.create_op_class_item) if (_internal_has_create_op_class_item()) { clear_has_node(); ::pg_query::CreateOpClassItem* temp = node_.create_op_class_item_; node_.create_op_class_item_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_create_op_class_item(::pg_query::CreateOpClassItem* create_op_class_item) { clear_node(); if (create_op_class_item) { set_has_create_op_class_item(); node_.create_op_class_item_ = create_op_class_item; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.create_op_class_item) } inline ::pg_query::CreateOpClassItem* Node::_internal_mutable_create_op_class_item() { if (!_internal_has_create_op_class_item()) { clear_node(); set_has_create_op_class_item(); node_.create_op_class_item_ = CreateMaybeMessage< ::pg_query::CreateOpClassItem >(GetArena()); } return node_.create_op_class_item_; } inline ::pg_query::CreateOpClassItem* Node::mutable_create_op_class_item() { // @@protoc_insertion_point(field_mutable:pg_query.Node.create_op_class_item) return _internal_mutable_create_op_class_item(); } // .pg_query.TableLikeClause table_like_clause = 202 [json_name = "TableLikeClause"]; inline bool Node::_internal_has_table_like_clause() const { return node_case() == kTableLikeClause; } inline bool Node::has_table_like_clause() const { return _internal_has_table_like_clause(); } inline void Node::set_has_table_like_clause() { _oneof_case_[0] = kTableLikeClause; } inline void Node::clear_table_like_clause() { if (_internal_has_table_like_clause()) { if (GetArena() == nullptr) { delete node_.table_like_clause_; } clear_has_node(); } } inline ::pg_query::TableLikeClause* Node::release_table_like_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.table_like_clause) if (_internal_has_table_like_clause()) { clear_has_node(); ::pg_query::TableLikeClause* temp = node_.table_like_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.table_like_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TableLikeClause& Node::_internal_table_like_clause() const { return _internal_has_table_like_clause() ? *node_.table_like_clause_ : reinterpret_cast< ::pg_query::TableLikeClause&>(::pg_query::_TableLikeClause_default_instance_); } inline const ::pg_query::TableLikeClause& Node::table_like_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.table_like_clause) return _internal_table_like_clause(); } inline ::pg_query::TableLikeClause* Node::unsafe_arena_release_table_like_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.table_like_clause) if (_internal_has_table_like_clause()) { clear_has_node(); ::pg_query::TableLikeClause* temp = node_.table_like_clause_; node_.table_like_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_table_like_clause(::pg_query::TableLikeClause* table_like_clause) { clear_node(); if (table_like_clause) { set_has_table_like_clause(); node_.table_like_clause_ = table_like_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.table_like_clause) } inline ::pg_query::TableLikeClause* Node::_internal_mutable_table_like_clause() { if (!_internal_has_table_like_clause()) { clear_node(); set_has_table_like_clause(); node_.table_like_clause_ = CreateMaybeMessage< ::pg_query::TableLikeClause >(GetArena()); } return node_.table_like_clause_; } inline ::pg_query::TableLikeClause* Node::mutable_table_like_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.table_like_clause) return _internal_mutable_table_like_clause(); } // .pg_query.FunctionParameter function_parameter = 203 [json_name = "FunctionParameter"]; inline bool Node::_internal_has_function_parameter() const { return node_case() == kFunctionParameter; } inline bool Node::has_function_parameter() const { return _internal_has_function_parameter(); } inline void Node::set_has_function_parameter() { _oneof_case_[0] = kFunctionParameter; } inline void Node::clear_function_parameter() { if (_internal_has_function_parameter()) { if (GetArena() == nullptr) { delete node_.function_parameter_; } clear_has_node(); } } inline ::pg_query::FunctionParameter* Node::release_function_parameter() { // @@protoc_insertion_point(field_release:pg_query.Node.function_parameter) if (_internal_has_function_parameter()) { clear_has_node(); ::pg_query::FunctionParameter* temp = node_.function_parameter_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.function_parameter_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::FunctionParameter& Node::_internal_function_parameter() const { return _internal_has_function_parameter() ? *node_.function_parameter_ : reinterpret_cast< ::pg_query::FunctionParameter&>(::pg_query::_FunctionParameter_default_instance_); } inline const ::pg_query::FunctionParameter& Node::function_parameter() const { // @@protoc_insertion_point(field_get:pg_query.Node.function_parameter) return _internal_function_parameter(); } inline ::pg_query::FunctionParameter* Node::unsafe_arena_release_function_parameter() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.function_parameter) if (_internal_has_function_parameter()) { clear_has_node(); ::pg_query::FunctionParameter* temp = node_.function_parameter_; node_.function_parameter_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_function_parameter(::pg_query::FunctionParameter* function_parameter) { clear_node(); if (function_parameter) { set_has_function_parameter(); node_.function_parameter_ = function_parameter; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.function_parameter) } inline ::pg_query::FunctionParameter* Node::_internal_mutable_function_parameter() { if (!_internal_has_function_parameter()) { clear_node(); set_has_function_parameter(); node_.function_parameter_ = CreateMaybeMessage< ::pg_query::FunctionParameter >(GetArena()); } return node_.function_parameter_; } inline ::pg_query::FunctionParameter* Node::mutable_function_parameter() { // @@protoc_insertion_point(field_mutable:pg_query.Node.function_parameter) return _internal_mutable_function_parameter(); } // .pg_query.LockingClause locking_clause = 204 [json_name = "LockingClause"]; inline bool Node::_internal_has_locking_clause() const { return node_case() == kLockingClause; } inline bool Node::has_locking_clause() const { return _internal_has_locking_clause(); } inline void Node::set_has_locking_clause() { _oneof_case_[0] = kLockingClause; } inline void Node::clear_locking_clause() { if (_internal_has_locking_clause()) { if (GetArena() == nullptr) { delete node_.locking_clause_; } clear_has_node(); } } inline ::pg_query::LockingClause* Node::release_locking_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.locking_clause) if (_internal_has_locking_clause()) { clear_has_node(); ::pg_query::LockingClause* temp = node_.locking_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.locking_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::LockingClause& Node::_internal_locking_clause() const { return _internal_has_locking_clause() ? *node_.locking_clause_ : reinterpret_cast< ::pg_query::LockingClause&>(::pg_query::_LockingClause_default_instance_); } inline const ::pg_query::LockingClause& Node::locking_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.locking_clause) return _internal_locking_clause(); } inline ::pg_query::LockingClause* Node::unsafe_arena_release_locking_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.locking_clause) if (_internal_has_locking_clause()) { clear_has_node(); ::pg_query::LockingClause* temp = node_.locking_clause_; node_.locking_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_locking_clause(::pg_query::LockingClause* locking_clause) { clear_node(); if (locking_clause) { set_has_locking_clause(); node_.locking_clause_ = locking_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.locking_clause) } inline ::pg_query::LockingClause* Node::_internal_mutable_locking_clause() { if (!_internal_has_locking_clause()) { clear_node(); set_has_locking_clause(); node_.locking_clause_ = CreateMaybeMessage< ::pg_query::LockingClause >(GetArena()); } return node_.locking_clause_; } inline ::pg_query::LockingClause* Node::mutable_locking_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.locking_clause) return _internal_mutable_locking_clause(); } // .pg_query.RowMarkClause row_mark_clause = 205 [json_name = "RowMarkClause"]; inline bool Node::_internal_has_row_mark_clause() const { return node_case() == kRowMarkClause; } inline bool Node::has_row_mark_clause() const { return _internal_has_row_mark_clause(); } inline void Node::set_has_row_mark_clause() { _oneof_case_[0] = kRowMarkClause; } inline void Node::clear_row_mark_clause() { if (_internal_has_row_mark_clause()) { if (GetArena() == nullptr) { delete node_.row_mark_clause_; } clear_has_node(); } } inline ::pg_query::RowMarkClause* Node::release_row_mark_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.row_mark_clause) if (_internal_has_row_mark_clause()) { clear_has_node(); ::pg_query::RowMarkClause* temp = node_.row_mark_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.row_mark_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RowMarkClause& Node::_internal_row_mark_clause() const { return _internal_has_row_mark_clause() ? *node_.row_mark_clause_ : reinterpret_cast< ::pg_query::RowMarkClause&>(::pg_query::_RowMarkClause_default_instance_); } inline const ::pg_query::RowMarkClause& Node::row_mark_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.row_mark_clause) return _internal_row_mark_clause(); } inline ::pg_query::RowMarkClause* Node::unsafe_arena_release_row_mark_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.row_mark_clause) if (_internal_has_row_mark_clause()) { clear_has_node(); ::pg_query::RowMarkClause* temp = node_.row_mark_clause_; node_.row_mark_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_row_mark_clause(::pg_query::RowMarkClause* row_mark_clause) { clear_node(); if (row_mark_clause) { set_has_row_mark_clause(); node_.row_mark_clause_ = row_mark_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.row_mark_clause) } inline ::pg_query::RowMarkClause* Node::_internal_mutable_row_mark_clause() { if (!_internal_has_row_mark_clause()) { clear_node(); set_has_row_mark_clause(); node_.row_mark_clause_ = CreateMaybeMessage< ::pg_query::RowMarkClause >(GetArena()); } return node_.row_mark_clause_; } inline ::pg_query::RowMarkClause* Node::mutable_row_mark_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.row_mark_clause) return _internal_mutable_row_mark_clause(); } // .pg_query.XmlSerialize xml_serialize = 206 [json_name = "XmlSerialize"]; inline bool Node::_internal_has_xml_serialize() const { return node_case() == kXmlSerialize; } inline bool Node::has_xml_serialize() const { return _internal_has_xml_serialize(); } inline void Node::set_has_xml_serialize() { _oneof_case_[0] = kXmlSerialize; } inline void Node::clear_xml_serialize() { if (_internal_has_xml_serialize()) { if (GetArena() == nullptr) { delete node_.xml_serialize_; } clear_has_node(); } } inline ::pg_query::XmlSerialize* Node::release_xml_serialize() { // @@protoc_insertion_point(field_release:pg_query.Node.xml_serialize) if (_internal_has_xml_serialize()) { clear_has_node(); ::pg_query::XmlSerialize* temp = node_.xml_serialize_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.xml_serialize_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::XmlSerialize& Node::_internal_xml_serialize() const { return _internal_has_xml_serialize() ? *node_.xml_serialize_ : reinterpret_cast< ::pg_query::XmlSerialize&>(::pg_query::_XmlSerialize_default_instance_); } inline const ::pg_query::XmlSerialize& Node::xml_serialize() const { // @@protoc_insertion_point(field_get:pg_query.Node.xml_serialize) return _internal_xml_serialize(); } inline ::pg_query::XmlSerialize* Node::unsafe_arena_release_xml_serialize() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.xml_serialize) if (_internal_has_xml_serialize()) { clear_has_node(); ::pg_query::XmlSerialize* temp = node_.xml_serialize_; node_.xml_serialize_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_xml_serialize(::pg_query::XmlSerialize* xml_serialize) { clear_node(); if (xml_serialize) { set_has_xml_serialize(); node_.xml_serialize_ = xml_serialize; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.xml_serialize) } inline ::pg_query::XmlSerialize* Node::_internal_mutable_xml_serialize() { if (!_internal_has_xml_serialize()) { clear_node(); set_has_xml_serialize(); node_.xml_serialize_ = CreateMaybeMessage< ::pg_query::XmlSerialize >(GetArena()); } return node_.xml_serialize_; } inline ::pg_query::XmlSerialize* Node::mutable_xml_serialize() { // @@protoc_insertion_point(field_mutable:pg_query.Node.xml_serialize) return _internal_mutable_xml_serialize(); } // .pg_query.WithClause with_clause = 207 [json_name = "WithClause"]; inline bool Node::_internal_has_with_clause() const { return node_case() == kWithClause; } inline bool Node::has_with_clause() const { return _internal_has_with_clause(); } inline void Node::set_has_with_clause() { _oneof_case_[0] = kWithClause; } inline void Node::clear_with_clause() { if (_internal_has_with_clause()) { if (GetArena() == nullptr) { delete node_.with_clause_; } clear_has_node(); } } inline ::pg_query::WithClause* Node::release_with_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.with_clause) if (_internal_has_with_clause()) { clear_has_node(); ::pg_query::WithClause* temp = node_.with_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.with_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::WithClause& Node::_internal_with_clause() const { return _internal_has_with_clause() ? *node_.with_clause_ : reinterpret_cast< ::pg_query::WithClause&>(::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& Node::with_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.with_clause) return _internal_with_clause(); } inline ::pg_query::WithClause* Node::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.with_clause) if (_internal_has_with_clause()) { clear_has_node(); ::pg_query::WithClause* temp = node_.with_clause_; node_.with_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_with_clause(::pg_query::WithClause* with_clause) { clear_node(); if (with_clause) { set_has_with_clause(); node_.with_clause_ = with_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.with_clause) } inline ::pg_query::WithClause* Node::_internal_mutable_with_clause() { if (!_internal_has_with_clause()) { clear_node(); set_has_with_clause(); node_.with_clause_ = CreateMaybeMessage< ::pg_query::WithClause >(GetArena()); } return node_.with_clause_; } inline ::pg_query::WithClause* Node::mutable_with_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.with_clause) return _internal_mutable_with_clause(); } // .pg_query.InferClause infer_clause = 208 [json_name = "InferClause"]; inline bool Node::_internal_has_infer_clause() const { return node_case() == kInferClause; } inline bool Node::has_infer_clause() const { return _internal_has_infer_clause(); } inline void Node::set_has_infer_clause() { _oneof_case_[0] = kInferClause; } inline void Node::clear_infer_clause() { if (_internal_has_infer_clause()) { if (GetArena() == nullptr) { delete node_.infer_clause_; } clear_has_node(); } } inline ::pg_query::InferClause* Node::release_infer_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.infer_clause) if (_internal_has_infer_clause()) { clear_has_node(); ::pg_query::InferClause* temp = node_.infer_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.infer_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InferClause& Node::_internal_infer_clause() const { return _internal_has_infer_clause() ? *node_.infer_clause_ : reinterpret_cast< ::pg_query::InferClause&>(::pg_query::_InferClause_default_instance_); } inline const ::pg_query::InferClause& Node::infer_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.infer_clause) return _internal_infer_clause(); } inline ::pg_query::InferClause* Node::unsafe_arena_release_infer_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.infer_clause) if (_internal_has_infer_clause()) { clear_has_node(); ::pg_query::InferClause* temp = node_.infer_clause_; node_.infer_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_infer_clause(::pg_query::InferClause* infer_clause) { clear_node(); if (infer_clause) { set_has_infer_clause(); node_.infer_clause_ = infer_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.infer_clause) } inline ::pg_query::InferClause* Node::_internal_mutable_infer_clause() { if (!_internal_has_infer_clause()) { clear_node(); set_has_infer_clause(); node_.infer_clause_ = CreateMaybeMessage< ::pg_query::InferClause >(GetArena()); } return node_.infer_clause_; } inline ::pg_query::InferClause* Node::mutable_infer_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.infer_clause) return _internal_mutable_infer_clause(); } // .pg_query.OnConflictClause on_conflict_clause = 209 [json_name = "OnConflictClause"]; inline bool Node::_internal_has_on_conflict_clause() const { return node_case() == kOnConflictClause; } inline bool Node::has_on_conflict_clause() const { return _internal_has_on_conflict_clause(); } inline void Node::set_has_on_conflict_clause() { _oneof_case_[0] = kOnConflictClause; } inline void Node::clear_on_conflict_clause() { if (_internal_has_on_conflict_clause()) { if (GetArena() == nullptr) { delete node_.on_conflict_clause_; } clear_has_node(); } } inline ::pg_query::OnConflictClause* Node::release_on_conflict_clause() { // @@protoc_insertion_point(field_release:pg_query.Node.on_conflict_clause) if (_internal_has_on_conflict_clause()) { clear_has_node(); ::pg_query::OnConflictClause* temp = node_.on_conflict_clause_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.on_conflict_clause_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::OnConflictClause& Node::_internal_on_conflict_clause() const { return _internal_has_on_conflict_clause() ? *node_.on_conflict_clause_ : reinterpret_cast< ::pg_query::OnConflictClause&>(::pg_query::_OnConflictClause_default_instance_); } inline const ::pg_query::OnConflictClause& Node::on_conflict_clause() const { // @@protoc_insertion_point(field_get:pg_query.Node.on_conflict_clause) return _internal_on_conflict_clause(); } inline ::pg_query::OnConflictClause* Node::unsafe_arena_release_on_conflict_clause() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.on_conflict_clause) if (_internal_has_on_conflict_clause()) { clear_has_node(); ::pg_query::OnConflictClause* temp = node_.on_conflict_clause_; node_.on_conflict_clause_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_on_conflict_clause(::pg_query::OnConflictClause* on_conflict_clause) { clear_node(); if (on_conflict_clause) { set_has_on_conflict_clause(); node_.on_conflict_clause_ = on_conflict_clause; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.on_conflict_clause) } inline ::pg_query::OnConflictClause* Node::_internal_mutable_on_conflict_clause() { if (!_internal_has_on_conflict_clause()) { clear_node(); set_has_on_conflict_clause(); node_.on_conflict_clause_ = CreateMaybeMessage< ::pg_query::OnConflictClause >(GetArena()); } return node_.on_conflict_clause_; } inline ::pg_query::OnConflictClause* Node::mutable_on_conflict_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Node.on_conflict_clause) return _internal_mutable_on_conflict_clause(); } // .pg_query.CommonTableExpr common_table_expr = 210 [json_name = "CommonTableExpr"]; inline bool Node::_internal_has_common_table_expr() const { return node_case() == kCommonTableExpr; } inline bool Node::has_common_table_expr() const { return _internal_has_common_table_expr(); } inline void Node::set_has_common_table_expr() { _oneof_case_[0] = kCommonTableExpr; } inline void Node::clear_common_table_expr() { if (_internal_has_common_table_expr()) { if (GetArena() == nullptr) { delete node_.common_table_expr_; } clear_has_node(); } } inline ::pg_query::CommonTableExpr* Node::release_common_table_expr() { // @@protoc_insertion_point(field_release:pg_query.Node.common_table_expr) if (_internal_has_common_table_expr()) { clear_has_node(); ::pg_query::CommonTableExpr* temp = node_.common_table_expr_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.common_table_expr_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CommonTableExpr& Node::_internal_common_table_expr() const { return _internal_has_common_table_expr() ? *node_.common_table_expr_ : reinterpret_cast< ::pg_query::CommonTableExpr&>(::pg_query::_CommonTableExpr_default_instance_); } inline const ::pg_query::CommonTableExpr& Node::common_table_expr() const { // @@protoc_insertion_point(field_get:pg_query.Node.common_table_expr) return _internal_common_table_expr(); } inline ::pg_query::CommonTableExpr* Node::unsafe_arena_release_common_table_expr() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.common_table_expr) if (_internal_has_common_table_expr()) { clear_has_node(); ::pg_query::CommonTableExpr* temp = node_.common_table_expr_; node_.common_table_expr_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_common_table_expr(::pg_query::CommonTableExpr* common_table_expr) { clear_node(); if (common_table_expr) { set_has_common_table_expr(); node_.common_table_expr_ = common_table_expr; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.common_table_expr) } inline ::pg_query::CommonTableExpr* Node::_internal_mutable_common_table_expr() { if (!_internal_has_common_table_expr()) { clear_node(); set_has_common_table_expr(); node_.common_table_expr_ = CreateMaybeMessage< ::pg_query::CommonTableExpr >(GetArena()); } return node_.common_table_expr_; } inline ::pg_query::CommonTableExpr* Node::mutable_common_table_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Node.common_table_expr) return _internal_mutable_common_table_expr(); } // .pg_query.RoleSpec role_spec = 211 [json_name = "RoleSpec"]; inline bool Node::_internal_has_role_spec() const { return node_case() == kRoleSpec; } inline bool Node::has_role_spec() const { return _internal_has_role_spec(); } inline void Node::set_has_role_spec() { _oneof_case_[0] = kRoleSpec; } inline void Node::clear_role_spec() { if (_internal_has_role_spec()) { if (GetArena() == nullptr) { delete node_.role_spec_; } clear_has_node(); } } inline ::pg_query::RoleSpec* Node::release_role_spec() { // @@protoc_insertion_point(field_release:pg_query.Node.role_spec) if (_internal_has_role_spec()) { clear_has_node(); ::pg_query::RoleSpec* temp = node_.role_spec_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.role_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::RoleSpec& Node::_internal_role_spec() const { return _internal_has_role_spec() ? *node_.role_spec_ : reinterpret_cast< ::pg_query::RoleSpec&>(::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& Node::role_spec() const { // @@protoc_insertion_point(field_get:pg_query.Node.role_spec) return _internal_role_spec(); } inline ::pg_query::RoleSpec* Node::unsafe_arena_release_role_spec() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.role_spec) if (_internal_has_role_spec()) { clear_has_node(); ::pg_query::RoleSpec* temp = node_.role_spec_; node_.role_spec_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_role_spec(::pg_query::RoleSpec* role_spec) { clear_node(); if (role_spec) { set_has_role_spec(); node_.role_spec_ = role_spec; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.role_spec) } inline ::pg_query::RoleSpec* Node::_internal_mutable_role_spec() { if (!_internal_has_role_spec()) { clear_node(); set_has_role_spec(); node_.role_spec_ = CreateMaybeMessage< ::pg_query::RoleSpec >(GetArena()); } return node_.role_spec_; } inline ::pg_query::RoleSpec* Node::mutable_role_spec() { // @@protoc_insertion_point(field_mutable:pg_query.Node.role_spec) return _internal_mutable_role_spec(); } // .pg_query.TriggerTransition trigger_transition = 212 [json_name = "TriggerTransition"]; inline bool Node::_internal_has_trigger_transition() const { return node_case() == kTriggerTransition; } inline bool Node::has_trigger_transition() const { return _internal_has_trigger_transition(); } inline void Node::set_has_trigger_transition() { _oneof_case_[0] = kTriggerTransition; } inline void Node::clear_trigger_transition() { if (_internal_has_trigger_transition()) { if (GetArena() == nullptr) { delete node_.trigger_transition_; } clear_has_node(); } } inline ::pg_query::TriggerTransition* Node::release_trigger_transition() { // @@protoc_insertion_point(field_release:pg_query.Node.trigger_transition) if (_internal_has_trigger_transition()) { clear_has_node(); ::pg_query::TriggerTransition* temp = node_.trigger_transition_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.trigger_transition_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::TriggerTransition& Node::_internal_trigger_transition() const { return _internal_has_trigger_transition() ? *node_.trigger_transition_ : reinterpret_cast< ::pg_query::TriggerTransition&>(::pg_query::_TriggerTransition_default_instance_); } inline const ::pg_query::TriggerTransition& Node::trigger_transition() const { // @@protoc_insertion_point(field_get:pg_query.Node.trigger_transition) return _internal_trigger_transition(); } inline ::pg_query::TriggerTransition* Node::unsafe_arena_release_trigger_transition() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.trigger_transition) if (_internal_has_trigger_transition()) { clear_has_node(); ::pg_query::TriggerTransition* temp = node_.trigger_transition_; node_.trigger_transition_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_trigger_transition(::pg_query::TriggerTransition* trigger_transition) { clear_node(); if (trigger_transition) { set_has_trigger_transition(); node_.trigger_transition_ = trigger_transition; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.trigger_transition) } inline ::pg_query::TriggerTransition* Node::_internal_mutable_trigger_transition() { if (!_internal_has_trigger_transition()) { clear_node(); set_has_trigger_transition(); node_.trigger_transition_ = CreateMaybeMessage< ::pg_query::TriggerTransition >(GetArena()); } return node_.trigger_transition_; } inline ::pg_query::TriggerTransition* Node::mutable_trigger_transition() { // @@protoc_insertion_point(field_mutable:pg_query.Node.trigger_transition) return _internal_mutable_trigger_transition(); } // .pg_query.PartitionElem partition_elem = 213 [json_name = "PartitionElem"]; inline bool Node::_internal_has_partition_elem() const { return node_case() == kPartitionElem; } inline bool Node::has_partition_elem() const { return _internal_has_partition_elem(); } inline void Node::set_has_partition_elem() { _oneof_case_[0] = kPartitionElem; } inline void Node::clear_partition_elem() { if (_internal_has_partition_elem()) { if (GetArena() == nullptr) { delete node_.partition_elem_; } clear_has_node(); } } inline ::pg_query::PartitionElem* Node::release_partition_elem() { // @@protoc_insertion_point(field_release:pg_query.Node.partition_elem) if (_internal_has_partition_elem()) { clear_has_node(); ::pg_query::PartitionElem* temp = node_.partition_elem_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.partition_elem_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionElem& Node::_internal_partition_elem() const { return _internal_has_partition_elem() ? *node_.partition_elem_ : reinterpret_cast< ::pg_query::PartitionElem&>(::pg_query::_PartitionElem_default_instance_); } inline const ::pg_query::PartitionElem& Node::partition_elem() const { // @@protoc_insertion_point(field_get:pg_query.Node.partition_elem) return _internal_partition_elem(); } inline ::pg_query::PartitionElem* Node::unsafe_arena_release_partition_elem() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_elem) if (_internal_has_partition_elem()) { clear_has_node(); ::pg_query::PartitionElem* temp = node_.partition_elem_; node_.partition_elem_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_partition_elem(::pg_query::PartitionElem* partition_elem) { clear_node(); if (partition_elem) { set_has_partition_elem(); node_.partition_elem_ = partition_elem; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_elem) } inline ::pg_query::PartitionElem* Node::_internal_mutable_partition_elem() { if (!_internal_has_partition_elem()) { clear_node(); set_has_partition_elem(); node_.partition_elem_ = CreateMaybeMessage< ::pg_query::PartitionElem >(GetArena()); } return node_.partition_elem_; } inline ::pg_query::PartitionElem* Node::mutable_partition_elem() { // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_elem) return _internal_mutable_partition_elem(); } // .pg_query.PartitionSpec partition_spec = 214 [json_name = "PartitionSpec"]; inline bool Node::_internal_has_partition_spec() const { return node_case() == kPartitionSpec; } inline bool Node::has_partition_spec() const { return _internal_has_partition_spec(); } inline void Node::set_has_partition_spec() { _oneof_case_[0] = kPartitionSpec; } inline void Node::clear_partition_spec() { if (_internal_has_partition_spec()) { if (GetArena() == nullptr) { delete node_.partition_spec_; } clear_has_node(); } } inline ::pg_query::PartitionSpec* Node::release_partition_spec() { // @@protoc_insertion_point(field_release:pg_query.Node.partition_spec) if (_internal_has_partition_spec()) { clear_has_node(); ::pg_query::PartitionSpec* temp = node_.partition_spec_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.partition_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionSpec& Node::_internal_partition_spec() const { return _internal_has_partition_spec() ? *node_.partition_spec_ : reinterpret_cast< ::pg_query::PartitionSpec&>(::pg_query::_PartitionSpec_default_instance_); } inline const ::pg_query::PartitionSpec& Node::partition_spec() const { // @@protoc_insertion_point(field_get:pg_query.Node.partition_spec) return _internal_partition_spec(); } inline ::pg_query::PartitionSpec* Node::unsafe_arena_release_partition_spec() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_spec) if (_internal_has_partition_spec()) { clear_has_node(); ::pg_query::PartitionSpec* temp = node_.partition_spec_; node_.partition_spec_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_partition_spec(::pg_query::PartitionSpec* partition_spec) { clear_node(); if (partition_spec) { set_has_partition_spec(); node_.partition_spec_ = partition_spec; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_spec) } inline ::pg_query::PartitionSpec* Node::_internal_mutable_partition_spec() { if (!_internal_has_partition_spec()) { clear_node(); set_has_partition_spec(); node_.partition_spec_ = CreateMaybeMessage< ::pg_query::PartitionSpec >(GetArena()); } return node_.partition_spec_; } inline ::pg_query::PartitionSpec* Node::mutable_partition_spec() { // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_spec) return _internal_mutable_partition_spec(); } // .pg_query.PartitionBoundSpec partition_bound_spec = 215 [json_name = "PartitionBoundSpec"]; inline bool Node::_internal_has_partition_bound_spec() const { return node_case() == kPartitionBoundSpec; } inline bool Node::has_partition_bound_spec() const { return _internal_has_partition_bound_spec(); } inline void Node::set_has_partition_bound_spec() { _oneof_case_[0] = kPartitionBoundSpec; } inline void Node::clear_partition_bound_spec() { if (_internal_has_partition_bound_spec()) { if (GetArena() == nullptr) { delete node_.partition_bound_spec_; } clear_has_node(); } } inline ::pg_query::PartitionBoundSpec* Node::release_partition_bound_spec() { // @@protoc_insertion_point(field_release:pg_query.Node.partition_bound_spec) if (_internal_has_partition_bound_spec()) { clear_has_node(); ::pg_query::PartitionBoundSpec* temp = node_.partition_bound_spec_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.partition_bound_spec_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionBoundSpec& Node::_internal_partition_bound_spec() const { return _internal_has_partition_bound_spec() ? *node_.partition_bound_spec_ : reinterpret_cast< ::pg_query::PartitionBoundSpec&>(::pg_query::_PartitionBoundSpec_default_instance_); } inline const ::pg_query::PartitionBoundSpec& Node::partition_bound_spec() const { // @@protoc_insertion_point(field_get:pg_query.Node.partition_bound_spec) return _internal_partition_bound_spec(); } inline ::pg_query::PartitionBoundSpec* Node::unsafe_arena_release_partition_bound_spec() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_bound_spec) if (_internal_has_partition_bound_spec()) { clear_has_node(); ::pg_query::PartitionBoundSpec* temp = node_.partition_bound_spec_; node_.partition_bound_spec_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_partition_bound_spec(::pg_query::PartitionBoundSpec* partition_bound_spec) { clear_node(); if (partition_bound_spec) { set_has_partition_bound_spec(); node_.partition_bound_spec_ = partition_bound_spec; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_bound_spec) } inline ::pg_query::PartitionBoundSpec* Node::_internal_mutable_partition_bound_spec() { if (!_internal_has_partition_bound_spec()) { clear_node(); set_has_partition_bound_spec(); node_.partition_bound_spec_ = CreateMaybeMessage< ::pg_query::PartitionBoundSpec >(GetArena()); } return node_.partition_bound_spec_; } inline ::pg_query::PartitionBoundSpec* Node::mutable_partition_bound_spec() { // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_bound_spec) return _internal_mutable_partition_bound_spec(); } // .pg_query.PartitionRangeDatum partition_range_datum = 216 [json_name = "PartitionRangeDatum"]; inline bool Node::_internal_has_partition_range_datum() const { return node_case() == kPartitionRangeDatum; } inline bool Node::has_partition_range_datum() const { return _internal_has_partition_range_datum(); } inline void Node::set_has_partition_range_datum() { _oneof_case_[0] = kPartitionRangeDatum; } inline void Node::clear_partition_range_datum() { if (_internal_has_partition_range_datum()) { if (GetArena() == nullptr) { delete node_.partition_range_datum_; } clear_has_node(); } } inline ::pg_query::PartitionRangeDatum* Node::release_partition_range_datum() { // @@protoc_insertion_point(field_release:pg_query.Node.partition_range_datum) if (_internal_has_partition_range_datum()) { clear_has_node(); ::pg_query::PartitionRangeDatum* temp = node_.partition_range_datum_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.partition_range_datum_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionRangeDatum& Node::_internal_partition_range_datum() const { return _internal_has_partition_range_datum() ? *node_.partition_range_datum_ : reinterpret_cast< ::pg_query::PartitionRangeDatum&>(::pg_query::_PartitionRangeDatum_default_instance_); } inline const ::pg_query::PartitionRangeDatum& Node::partition_range_datum() const { // @@protoc_insertion_point(field_get:pg_query.Node.partition_range_datum) return _internal_partition_range_datum(); } inline ::pg_query::PartitionRangeDatum* Node::unsafe_arena_release_partition_range_datum() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_range_datum) if (_internal_has_partition_range_datum()) { clear_has_node(); ::pg_query::PartitionRangeDatum* temp = node_.partition_range_datum_; node_.partition_range_datum_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_partition_range_datum(::pg_query::PartitionRangeDatum* partition_range_datum) { clear_node(); if (partition_range_datum) { set_has_partition_range_datum(); node_.partition_range_datum_ = partition_range_datum; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_range_datum) } inline ::pg_query::PartitionRangeDatum* Node::_internal_mutable_partition_range_datum() { if (!_internal_has_partition_range_datum()) { clear_node(); set_has_partition_range_datum(); node_.partition_range_datum_ = CreateMaybeMessage< ::pg_query::PartitionRangeDatum >(GetArena()); } return node_.partition_range_datum_; } inline ::pg_query::PartitionRangeDatum* Node::mutable_partition_range_datum() { // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_range_datum) return _internal_mutable_partition_range_datum(); } // .pg_query.PartitionCmd partition_cmd = 217 [json_name = "PartitionCmd"]; inline bool Node::_internal_has_partition_cmd() const { return node_case() == kPartitionCmd; } inline bool Node::has_partition_cmd() const { return _internal_has_partition_cmd(); } inline void Node::set_has_partition_cmd() { _oneof_case_[0] = kPartitionCmd; } inline void Node::clear_partition_cmd() { if (_internal_has_partition_cmd()) { if (GetArena() == nullptr) { delete node_.partition_cmd_; } clear_has_node(); } } inline ::pg_query::PartitionCmd* Node::release_partition_cmd() { // @@protoc_insertion_point(field_release:pg_query.Node.partition_cmd) if (_internal_has_partition_cmd()) { clear_has_node(); ::pg_query::PartitionCmd* temp = node_.partition_cmd_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.partition_cmd_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::PartitionCmd& Node::_internal_partition_cmd() const { return _internal_has_partition_cmd() ? *node_.partition_cmd_ : reinterpret_cast< ::pg_query::PartitionCmd&>(::pg_query::_PartitionCmd_default_instance_); } inline const ::pg_query::PartitionCmd& Node::partition_cmd() const { // @@protoc_insertion_point(field_get:pg_query.Node.partition_cmd) return _internal_partition_cmd(); } inline ::pg_query::PartitionCmd* Node::unsafe_arena_release_partition_cmd() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.partition_cmd) if (_internal_has_partition_cmd()) { clear_has_node(); ::pg_query::PartitionCmd* temp = node_.partition_cmd_; node_.partition_cmd_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_partition_cmd(::pg_query::PartitionCmd* partition_cmd) { clear_node(); if (partition_cmd) { set_has_partition_cmd(); node_.partition_cmd_ = partition_cmd; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.partition_cmd) } inline ::pg_query::PartitionCmd* Node::_internal_mutable_partition_cmd() { if (!_internal_has_partition_cmd()) { clear_node(); set_has_partition_cmd(); node_.partition_cmd_ = CreateMaybeMessage< ::pg_query::PartitionCmd >(GetArena()); } return node_.partition_cmd_; } inline ::pg_query::PartitionCmd* Node::mutable_partition_cmd() { // @@protoc_insertion_point(field_mutable:pg_query.Node.partition_cmd) return _internal_mutable_partition_cmd(); } // .pg_query.VacuumRelation vacuum_relation = 218 [json_name = "VacuumRelation"]; inline bool Node::_internal_has_vacuum_relation() const { return node_case() == kVacuumRelation; } inline bool Node::has_vacuum_relation() const { return _internal_has_vacuum_relation(); } inline void Node::set_has_vacuum_relation() { _oneof_case_[0] = kVacuumRelation; } inline void Node::clear_vacuum_relation() { if (_internal_has_vacuum_relation()) { if (GetArena() == nullptr) { delete node_.vacuum_relation_; } clear_has_node(); } } inline ::pg_query::VacuumRelation* Node::release_vacuum_relation() { // @@protoc_insertion_point(field_release:pg_query.Node.vacuum_relation) if (_internal_has_vacuum_relation()) { clear_has_node(); ::pg_query::VacuumRelation* temp = node_.vacuum_relation_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.vacuum_relation_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::VacuumRelation& Node::_internal_vacuum_relation() const { return _internal_has_vacuum_relation() ? *node_.vacuum_relation_ : reinterpret_cast< ::pg_query::VacuumRelation&>(::pg_query::_VacuumRelation_default_instance_); } inline const ::pg_query::VacuumRelation& Node::vacuum_relation() const { // @@protoc_insertion_point(field_get:pg_query.Node.vacuum_relation) return _internal_vacuum_relation(); } inline ::pg_query::VacuumRelation* Node::unsafe_arena_release_vacuum_relation() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.vacuum_relation) if (_internal_has_vacuum_relation()) { clear_has_node(); ::pg_query::VacuumRelation* temp = node_.vacuum_relation_; node_.vacuum_relation_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_vacuum_relation(::pg_query::VacuumRelation* vacuum_relation) { clear_node(); if (vacuum_relation) { set_has_vacuum_relation(); node_.vacuum_relation_ = vacuum_relation; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.vacuum_relation) } inline ::pg_query::VacuumRelation* Node::_internal_mutable_vacuum_relation() { if (!_internal_has_vacuum_relation()) { clear_node(); set_has_vacuum_relation(); node_.vacuum_relation_ = CreateMaybeMessage< ::pg_query::VacuumRelation >(GetArena()); } return node_.vacuum_relation_; } inline ::pg_query::VacuumRelation* Node::mutable_vacuum_relation() { // @@protoc_insertion_point(field_mutable:pg_query.Node.vacuum_relation) return _internal_mutable_vacuum_relation(); } // .pg_query.InlineCodeBlock inline_code_block = 219 [json_name = "InlineCodeBlock"]; inline bool Node::_internal_has_inline_code_block() const { return node_case() == kInlineCodeBlock; } inline bool Node::has_inline_code_block() const { return _internal_has_inline_code_block(); } inline void Node::set_has_inline_code_block() { _oneof_case_[0] = kInlineCodeBlock; } inline void Node::clear_inline_code_block() { if (_internal_has_inline_code_block()) { if (GetArena() == nullptr) { delete node_.inline_code_block_; } clear_has_node(); } } inline ::pg_query::InlineCodeBlock* Node::release_inline_code_block() { // @@protoc_insertion_point(field_release:pg_query.Node.inline_code_block) if (_internal_has_inline_code_block()) { clear_has_node(); ::pg_query::InlineCodeBlock* temp = node_.inline_code_block_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.inline_code_block_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::InlineCodeBlock& Node::_internal_inline_code_block() const { return _internal_has_inline_code_block() ? *node_.inline_code_block_ : reinterpret_cast< ::pg_query::InlineCodeBlock&>(::pg_query::_InlineCodeBlock_default_instance_); } inline const ::pg_query::InlineCodeBlock& Node::inline_code_block() const { // @@protoc_insertion_point(field_get:pg_query.Node.inline_code_block) return _internal_inline_code_block(); } inline ::pg_query::InlineCodeBlock* Node::unsafe_arena_release_inline_code_block() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.inline_code_block) if (_internal_has_inline_code_block()) { clear_has_node(); ::pg_query::InlineCodeBlock* temp = node_.inline_code_block_; node_.inline_code_block_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_inline_code_block(::pg_query::InlineCodeBlock* inline_code_block) { clear_node(); if (inline_code_block) { set_has_inline_code_block(); node_.inline_code_block_ = inline_code_block; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.inline_code_block) } inline ::pg_query::InlineCodeBlock* Node::_internal_mutable_inline_code_block() { if (!_internal_has_inline_code_block()) { clear_node(); set_has_inline_code_block(); node_.inline_code_block_ = CreateMaybeMessage< ::pg_query::InlineCodeBlock >(GetArena()); } return node_.inline_code_block_; } inline ::pg_query::InlineCodeBlock* Node::mutable_inline_code_block() { // @@protoc_insertion_point(field_mutable:pg_query.Node.inline_code_block) return _internal_mutable_inline_code_block(); } // .pg_query.CallContext call_context = 220 [json_name = "CallContext"]; inline bool Node::_internal_has_call_context() const { return node_case() == kCallContext; } inline bool Node::has_call_context() const { return _internal_has_call_context(); } inline void Node::set_has_call_context() { _oneof_case_[0] = kCallContext; } inline void Node::clear_call_context() { if (_internal_has_call_context()) { if (GetArena() == nullptr) { delete node_.call_context_; } clear_has_node(); } } inline ::pg_query::CallContext* Node::release_call_context() { // @@protoc_insertion_point(field_release:pg_query.Node.call_context) if (_internal_has_call_context()) { clear_has_node(); ::pg_query::CallContext* temp = node_.call_context_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.call_context_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::CallContext& Node::_internal_call_context() const { return _internal_has_call_context() ? *node_.call_context_ : reinterpret_cast< ::pg_query::CallContext&>(::pg_query::_CallContext_default_instance_); } inline const ::pg_query::CallContext& Node::call_context() const { // @@protoc_insertion_point(field_get:pg_query.Node.call_context) return _internal_call_context(); } inline ::pg_query::CallContext* Node::unsafe_arena_release_call_context() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.call_context) if (_internal_has_call_context()) { clear_has_node(); ::pg_query::CallContext* temp = node_.call_context_; node_.call_context_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_call_context(::pg_query::CallContext* call_context) { clear_node(); if (call_context) { set_has_call_context(); node_.call_context_ = call_context; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.call_context) } inline ::pg_query::CallContext* Node::_internal_mutable_call_context() { if (!_internal_has_call_context()) { clear_node(); set_has_call_context(); node_.call_context_ = CreateMaybeMessage< ::pg_query::CallContext >(GetArena()); } return node_.call_context_; } inline ::pg_query::CallContext* Node::mutable_call_context() { // @@protoc_insertion_point(field_mutable:pg_query.Node.call_context) return _internal_mutable_call_context(); } // .pg_query.Integer integer = 221 [json_name = "Integer"]; inline bool Node::_internal_has_integer() const { return node_case() == kInteger; } inline bool Node::has_integer() const { return _internal_has_integer(); } inline void Node::set_has_integer() { _oneof_case_[0] = kInteger; } inline void Node::clear_integer() { if (_internal_has_integer()) { if (GetArena() == nullptr) { delete node_.integer_; } clear_has_node(); } } inline ::pg_query::Integer* Node::release_integer() { // @@protoc_insertion_point(field_release:pg_query.Node.integer) if (_internal_has_integer()) { clear_has_node(); ::pg_query::Integer* temp = node_.integer_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.integer_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Integer& Node::_internal_integer() const { return _internal_has_integer() ? *node_.integer_ : reinterpret_cast< ::pg_query::Integer&>(::pg_query::_Integer_default_instance_); } inline const ::pg_query::Integer& Node::integer() const { // @@protoc_insertion_point(field_get:pg_query.Node.integer) return _internal_integer(); } inline ::pg_query::Integer* Node::unsafe_arena_release_integer() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.integer) if (_internal_has_integer()) { clear_has_node(); ::pg_query::Integer* temp = node_.integer_; node_.integer_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_integer(::pg_query::Integer* integer) { clear_node(); if (integer) { set_has_integer(); node_.integer_ = integer; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.integer) } inline ::pg_query::Integer* Node::_internal_mutable_integer() { if (!_internal_has_integer()) { clear_node(); set_has_integer(); node_.integer_ = CreateMaybeMessage< ::pg_query::Integer >(GetArena()); } return node_.integer_; } inline ::pg_query::Integer* Node::mutable_integer() { // @@protoc_insertion_point(field_mutable:pg_query.Node.integer) return _internal_mutable_integer(); } // .pg_query.Float float = 222 [json_name = "Float"]; inline bool Node::_internal_has_float_() const { return node_case() == kFloat; } inline bool Node::has_float_() const { return _internal_has_float_(); } inline void Node::set_has_float_() { _oneof_case_[0] = kFloat; } inline void Node::clear_float_() { if (_internal_has_float_()) { if (GetArena() == nullptr) { delete node_.float__; } clear_has_node(); } } inline ::pg_query::Float* Node::release_float_() { // @@protoc_insertion_point(field_release:pg_query.Node.float) if (_internal_has_float_()) { clear_has_node(); ::pg_query::Float* temp = node_.float__; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.float__ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Float& Node::_internal_float_() const { return _internal_has_float_() ? *node_.float__ : reinterpret_cast< ::pg_query::Float&>(::pg_query::_Float_default_instance_); } inline const ::pg_query::Float& Node::float_() const { // @@protoc_insertion_point(field_get:pg_query.Node.float) return _internal_float_(); } inline ::pg_query::Float* Node::unsafe_arena_release_float_() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.float) if (_internal_has_float_()) { clear_has_node(); ::pg_query::Float* temp = node_.float__; node_.float__ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_float_(::pg_query::Float* float_) { clear_node(); if (float_) { set_has_float_(); node_.float__ = float_; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.float) } inline ::pg_query::Float* Node::_internal_mutable_float_() { if (!_internal_has_float_()) { clear_node(); set_has_float_(); node_.float__ = CreateMaybeMessage< ::pg_query::Float >(GetArena()); } return node_.float__; } inline ::pg_query::Float* Node::mutable_float_() { // @@protoc_insertion_point(field_mutable:pg_query.Node.float) return _internal_mutable_float_(); } // .pg_query.String string = 223 [json_name = "String"]; inline bool Node::_internal_has_string() const { return node_case() == kString; } inline bool Node::has_string() const { return _internal_has_string(); } inline void Node::set_has_string() { _oneof_case_[0] = kString; } inline void Node::clear_string() { if (_internal_has_string()) { if (GetArena() == nullptr) { delete node_.string_; } clear_has_node(); } } inline ::pg_query::String* Node::release_string() { // @@protoc_insertion_point(field_release:pg_query.Node.string) if (_internal_has_string()) { clear_has_node(); ::pg_query::String* temp = node_.string_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.string_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::String& Node::_internal_string() const { return _internal_has_string() ? *node_.string_ : reinterpret_cast< ::pg_query::String&>(::pg_query::_String_default_instance_); } inline const ::pg_query::String& Node::string() const { // @@protoc_insertion_point(field_get:pg_query.Node.string) return _internal_string(); } inline ::pg_query::String* Node::unsafe_arena_release_string() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.string) if (_internal_has_string()) { clear_has_node(); ::pg_query::String* temp = node_.string_; node_.string_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_string(::pg_query::String* string) { clear_node(); if (string) { set_has_string(); node_.string_ = string; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.string) } inline ::pg_query::String* Node::_internal_mutable_string() { if (!_internal_has_string()) { clear_node(); set_has_string(); node_.string_ = CreateMaybeMessage< ::pg_query::String >(GetArena()); } return node_.string_; } inline ::pg_query::String* Node::mutable_string() { // @@protoc_insertion_point(field_mutable:pg_query.Node.string) return _internal_mutable_string(); } // .pg_query.BitString bit_string = 224 [json_name = "BitString"]; inline bool Node::_internal_has_bit_string() const { return node_case() == kBitString; } inline bool Node::has_bit_string() const { return _internal_has_bit_string(); } inline void Node::set_has_bit_string() { _oneof_case_[0] = kBitString; } inline void Node::clear_bit_string() { if (_internal_has_bit_string()) { if (GetArena() == nullptr) { delete node_.bit_string_; } clear_has_node(); } } inline ::pg_query::BitString* Node::release_bit_string() { // @@protoc_insertion_point(field_release:pg_query.Node.bit_string) if (_internal_has_bit_string()) { clear_has_node(); ::pg_query::BitString* temp = node_.bit_string_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.bit_string_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::BitString& Node::_internal_bit_string() const { return _internal_has_bit_string() ? *node_.bit_string_ : reinterpret_cast< ::pg_query::BitString&>(::pg_query::_BitString_default_instance_); } inline const ::pg_query::BitString& Node::bit_string() const { // @@protoc_insertion_point(field_get:pg_query.Node.bit_string) return _internal_bit_string(); } inline ::pg_query::BitString* Node::unsafe_arena_release_bit_string() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.bit_string) if (_internal_has_bit_string()) { clear_has_node(); ::pg_query::BitString* temp = node_.bit_string_; node_.bit_string_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_bit_string(::pg_query::BitString* bit_string) { clear_node(); if (bit_string) { set_has_bit_string(); node_.bit_string_ = bit_string; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.bit_string) } inline ::pg_query::BitString* Node::_internal_mutable_bit_string() { if (!_internal_has_bit_string()) { clear_node(); set_has_bit_string(); node_.bit_string_ = CreateMaybeMessage< ::pg_query::BitString >(GetArena()); } return node_.bit_string_; } inline ::pg_query::BitString* Node::mutable_bit_string() { // @@protoc_insertion_point(field_mutable:pg_query.Node.bit_string) return _internal_mutable_bit_string(); } // .pg_query.Null null = 225 [json_name = "Null"]; inline bool Node::_internal_has_null() const { return node_case() == kNull; } inline bool Node::has_null() const { return _internal_has_null(); } inline void Node::set_has_null() { _oneof_case_[0] = kNull; } inline void Node::clear_null() { if (_internal_has_null()) { if (GetArena() == nullptr) { delete node_.null_; } clear_has_node(); } } inline ::pg_query::Null* Node::release_null() { // @@protoc_insertion_point(field_release:pg_query.Node.null) if (_internal_has_null()) { clear_has_node(); ::pg_query::Null* temp = node_.null_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.null_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::Null& Node::_internal_null() const { return _internal_has_null() ? *node_.null_ : reinterpret_cast< ::pg_query::Null&>(::pg_query::_Null_default_instance_); } inline const ::pg_query::Null& Node::null() const { // @@protoc_insertion_point(field_get:pg_query.Node.null) return _internal_null(); } inline ::pg_query::Null* Node::unsafe_arena_release_null() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.null) if (_internal_has_null()) { clear_has_node(); ::pg_query::Null* temp = node_.null_; node_.null_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_null(::pg_query::Null* null) { clear_node(); if (null) { set_has_null(); node_.null_ = null; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.null) } inline ::pg_query::Null* Node::_internal_mutable_null() { if (!_internal_has_null()) { clear_node(); set_has_null(); node_.null_ = CreateMaybeMessage< ::pg_query::Null >(GetArena()); } return node_.null_; } inline ::pg_query::Null* Node::mutable_null() { // @@protoc_insertion_point(field_mutable:pg_query.Node.null) return _internal_mutable_null(); } // .pg_query.List list = 226 [json_name = "List"]; inline bool Node::_internal_has_list() const { return node_case() == kList; } inline bool Node::has_list() const { return _internal_has_list(); } inline void Node::set_has_list() { _oneof_case_[0] = kList; } inline void Node::clear_list() { if (_internal_has_list()) { if (GetArena() == nullptr) { delete node_.list_; } clear_has_node(); } } inline ::pg_query::List* Node::release_list() { // @@protoc_insertion_point(field_release:pg_query.Node.list) if (_internal_has_list()) { clear_has_node(); ::pg_query::List* temp = node_.list_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.list_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::List& Node::_internal_list() const { return _internal_has_list() ? *node_.list_ : reinterpret_cast< ::pg_query::List&>(::pg_query::_List_default_instance_); } inline const ::pg_query::List& Node::list() const { // @@protoc_insertion_point(field_get:pg_query.Node.list) return _internal_list(); } inline ::pg_query::List* Node::unsafe_arena_release_list() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.list) if (_internal_has_list()) { clear_has_node(); ::pg_query::List* temp = node_.list_; node_.list_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_list(::pg_query::List* list) { clear_node(); if (list) { set_has_list(); node_.list_ = list; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.list) } inline ::pg_query::List* Node::_internal_mutable_list() { if (!_internal_has_list()) { clear_node(); set_has_list(); node_.list_ = CreateMaybeMessage< ::pg_query::List >(GetArena()); } return node_.list_; } inline ::pg_query::List* Node::mutable_list() { // @@protoc_insertion_point(field_mutable:pg_query.Node.list) return _internal_mutable_list(); } // .pg_query.IntList int_list = 227 [json_name = "IntList"]; inline bool Node::_internal_has_int_list() const { return node_case() == kIntList; } inline bool Node::has_int_list() const { return _internal_has_int_list(); } inline void Node::set_has_int_list() { _oneof_case_[0] = kIntList; } inline void Node::clear_int_list() { if (_internal_has_int_list()) { if (GetArena() == nullptr) { delete node_.int_list_; } clear_has_node(); } } inline ::pg_query::IntList* Node::release_int_list() { // @@protoc_insertion_point(field_release:pg_query.Node.int_list) if (_internal_has_int_list()) { clear_has_node(); ::pg_query::IntList* temp = node_.int_list_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.int_list_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::IntList& Node::_internal_int_list() const { return _internal_has_int_list() ? *node_.int_list_ : reinterpret_cast< ::pg_query::IntList&>(::pg_query::_IntList_default_instance_); } inline const ::pg_query::IntList& Node::int_list() const { // @@protoc_insertion_point(field_get:pg_query.Node.int_list) return _internal_int_list(); } inline ::pg_query::IntList* Node::unsafe_arena_release_int_list() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.int_list) if (_internal_has_int_list()) { clear_has_node(); ::pg_query::IntList* temp = node_.int_list_; node_.int_list_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_int_list(::pg_query::IntList* int_list) { clear_node(); if (int_list) { set_has_int_list(); node_.int_list_ = int_list; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.int_list) } inline ::pg_query::IntList* Node::_internal_mutable_int_list() { if (!_internal_has_int_list()) { clear_node(); set_has_int_list(); node_.int_list_ = CreateMaybeMessage< ::pg_query::IntList >(GetArena()); } return node_.int_list_; } inline ::pg_query::IntList* Node::mutable_int_list() { // @@protoc_insertion_point(field_mutable:pg_query.Node.int_list) return _internal_mutable_int_list(); } // .pg_query.OidList oid_list = 228 [json_name = "OidList"]; inline bool Node::_internal_has_oid_list() const { return node_case() == kOidList; } inline bool Node::has_oid_list() const { return _internal_has_oid_list(); } inline void Node::set_has_oid_list() { _oneof_case_[0] = kOidList; } inline void Node::clear_oid_list() { if (_internal_has_oid_list()) { if (GetArena() == nullptr) { delete node_.oid_list_; } clear_has_node(); } } inline ::pg_query::OidList* Node::release_oid_list() { // @@protoc_insertion_point(field_release:pg_query.Node.oid_list) if (_internal_has_oid_list()) { clear_has_node(); ::pg_query::OidList* temp = node_.oid_list_; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } node_.oid_list_ = nullptr; return temp; } else { return nullptr; } } inline const ::pg_query::OidList& Node::_internal_oid_list() const { return _internal_has_oid_list() ? *node_.oid_list_ : reinterpret_cast< ::pg_query::OidList&>(::pg_query::_OidList_default_instance_); } inline const ::pg_query::OidList& Node::oid_list() const { // @@protoc_insertion_point(field_get:pg_query.Node.oid_list) return _internal_oid_list(); } inline ::pg_query::OidList* Node::unsafe_arena_release_oid_list() { // @@protoc_insertion_point(field_unsafe_arena_release:pg_query.Node.oid_list) if (_internal_has_oid_list()) { clear_has_node(); ::pg_query::OidList* temp = node_.oid_list_; node_.oid_list_ = nullptr; return temp; } else { return nullptr; } } inline void Node::unsafe_arena_set_allocated_oid_list(::pg_query::OidList* oid_list) { clear_node(); if (oid_list) { set_has_oid_list(); node_.oid_list_ = oid_list; } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Node.oid_list) } inline ::pg_query::OidList* Node::_internal_mutable_oid_list() { if (!_internal_has_oid_list()) { clear_node(); set_has_oid_list(); node_.oid_list_ = CreateMaybeMessage< ::pg_query::OidList >(GetArena()); } return node_.oid_list_; } inline ::pg_query::OidList* Node::mutable_oid_list() { // @@protoc_insertion_point(field_mutable:pg_query.Node.oid_list) return _internal_mutable_oid_list(); } inline bool Node::has_node() const { return node_case() != NODE_NOT_SET; } inline void Node::clear_has_node() { _oneof_case_[0] = NODE_NOT_SET; } inline Node::NodeCase Node::node_case() const { return Node::NodeCase(_oneof_case_[0]); } // ------------------------------------------------------------------- // Integer // int32 ival = 1; inline void Integer::clear_ival() { ival_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Integer::_internal_ival() const { return ival_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Integer::ival() const { // @@protoc_insertion_point(field_get:pg_query.Integer.ival) return _internal_ival(); } inline void Integer::_internal_set_ival(::PROTOBUF_NAMESPACE_ID::int32 value) { ival_ = value; } inline void Integer::set_ival(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_ival(value); // @@protoc_insertion_point(field_set:pg_query.Integer.ival) } // ------------------------------------------------------------------- // Float // string str = 1; inline void Float::clear_str() { str_.ClearToEmpty(); } inline const std::string& Float::str() const { // @@protoc_insertion_point(field_get:pg_query.Float.str) return _internal_str(); } inline void Float::set_str(const std::string& value) { _internal_set_str(value); // @@protoc_insertion_point(field_set:pg_query.Float.str) } inline std::string* Float::mutable_str() { // @@protoc_insertion_point(field_mutable:pg_query.Float.str) return _internal_mutable_str(); } inline const std::string& Float::_internal_str() const { return str_.Get(); } inline void Float::_internal_set_str(const std::string& value) { str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Float::set_str(std::string&& value) { str_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Float.str) } inline void Float::set_str(const char* value) { GOOGLE_DCHECK(value != nullptr); str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Float.str) } inline void Float::set_str(const char* value, size_t size) { str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Float.str) } inline std::string* Float::_internal_mutable_str() { return str_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Float::release_str() { // @@protoc_insertion_point(field_release:pg_query.Float.str) return str_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Float::set_allocated_str(std::string* str) { if (str != nullptr) { } else { } str_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), str, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Float.str) } // ------------------------------------------------------------------- // String // string str = 1; inline void String::clear_str() { str_.ClearToEmpty(); } inline const std::string& String::str() const { // @@protoc_insertion_point(field_get:pg_query.String.str) return _internal_str(); } inline void String::set_str(const std::string& value) { _internal_set_str(value); // @@protoc_insertion_point(field_set:pg_query.String.str) } inline std::string* String::mutable_str() { // @@protoc_insertion_point(field_mutable:pg_query.String.str) return _internal_mutable_str(); } inline const std::string& String::_internal_str() const { return str_.Get(); } inline void String::_internal_set_str(const std::string& value) { str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void String::set_str(std::string&& value) { str_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.String.str) } inline void String::set_str(const char* value) { GOOGLE_DCHECK(value != nullptr); str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.String.str) } inline void String::set_str(const char* value, size_t size) { str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.String.str) } inline std::string* String::_internal_mutable_str() { return str_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* String::release_str() { // @@protoc_insertion_point(field_release:pg_query.String.str) return str_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void String::set_allocated_str(std::string* str) { if (str != nullptr) { } else { } str_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), str, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.String.str) } // ------------------------------------------------------------------- // BitString // string str = 1; inline void BitString::clear_str() { str_.ClearToEmpty(); } inline const std::string& BitString::str() const { // @@protoc_insertion_point(field_get:pg_query.BitString.str) return _internal_str(); } inline void BitString::set_str(const std::string& value) { _internal_set_str(value); // @@protoc_insertion_point(field_set:pg_query.BitString.str) } inline std::string* BitString::mutable_str() { // @@protoc_insertion_point(field_mutable:pg_query.BitString.str) return _internal_mutable_str(); } inline const std::string& BitString::_internal_str() const { return str_.Get(); } inline void BitString::_internal_set_str(const std::string& value) { str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void BitString::set_str(std::string&& value) { str_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.BitString.str) } inline void BitString::set_str(const char* value) { GOOGLE_DCHECK(value != nullptr); str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.BitString.str) } inline void BitString::set_str(const char* value, size_t size) { str_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.BitString.str) } inline std::string* BitString::_internal_mutable_str() { return str_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* BitString::release_str() { // @@protoc_insertion_point(field_release:pg_query.BitString.str) return str_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void BitString::set_allocated_str(std::string* str) { if (str != nullptr) { } else { } str_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), str, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.BitString.str) } // ------------------------------------------------------------------- // Null // ------------------------------------------------------------------- // List // repeated .pg_query.Node items = 1; inline int List::_internal_items_size() const { return items_.size(); } inline int List::items_size() const { return _internal_items_size(); } inline void List::clear_items() { items_.Clear(); } inline ::pg_query::Node* List::mutable_items(int index) { // @@protoc_insertion_point(field_mutable:pg_query.List.items) return items_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* List::mutable_items() { // @@protoc_insertion_point(field_mutable_list:pg_query.List.items) return &items_; } inline const ::pg_query::Node& List::_internal_items(int index) const { return items_.Get(index); } inline const ::pg_query::Node& List::items(int index) const { // @@protoc_insertion_point(field_get:pg_query.List.items) return _internal_items(index); } inline ::pg_query::Node* List::_internal_add_items() { return items_.Add(); } inline ::pg_query::Node* List::add_items() { // @@protoc_insertion_point(field_add:pg_query.List.items) return _internal_add_items(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& List::items() const { // @@protoc_insertion_point(field_list:pg_query.List.items) return items_; } // ------------------------------------------------------------------- // OidList // repeated .pg_query.Node items = 1; inline int OidList::_internal_items_size() const { return items_.size(); } inline int OidList::items_size() const { return _internal_items_size(); } inline void OidList::clear_items() { items_.Clear(); } inline ::pg_query::Node* OidList::mutable_items(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OidList.items) return items_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OidList::mutable_items() { // @@protoc_insertion_point(field_mutable_list:pg_query.OidList.items) return &items_; } inline const ::pg_query::Node& OidList::_internal_items(int index) const { return items_.Get(index); } inline const ::pg_query::Node& OidList::items(int index) const { // @@protoc_insertion_point(field_get:pg_query.OidList.items) return _internal_items(index); } inline ::pg_query::Node* OidList::_internal_add_items() { return items_.Add(); } inline ::pg_query::Node* OidList::add_items() { // @@protoc_insertion_point(field_add:pg_query.OidList.items) return _internal_add_items(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OidList::items() const { // @@protoc_insertion_point(field_list:pg_query.OidList.items) return items_; } // ------------------------------------------------------------------- // IntList // repeated .pg_query.Node items = 1; inline int IntList::_internal_items_size() const { return items_.size(); } inline int IntList::items_size() const { return _internal_items_size(); } inline void IntList::clear_items() { items_.Clear(); } inline ::pg_query::Node* IntList::mutable_items(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IntList.items) return items_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IntList::mutable_items() { // @@protoc_insertion_point(field_mutable_list:pg_query.IntList.items) return &items_; } inline const ::pg_query::Node& IntList::_internal_items(int index) const { return items_.Get(index); } inline const ::pg_query::Node& IntList::items(int index) const { // @@protoc_insertion_point(field_get:pg_query.IntList.items) return _internal_items(index); } inline ::pg_query::Node* IntList::_internal_add_items() { return items_.Add(); } inline ::pg_query::Node* IntList::add_items() { // @@protoc_insertion_point(field_add:pg_query.IntList.items) return _internal_add_items(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IntList::items() const { // @@protoc_insertion_point(field_list:pg_query.IntList.items) return items_; } // ------------------------------------------------------------------- // Bitmapset // repeated uint64 words = 1; inline int Bitmapset::_internal_words_size() const { return words_.size(); } inline int Bitmapset::words_size() const { return _internal_words_size(); } inline void Bitmapset::clear_words() { words_.Clear(); } inline ::PROTOBUF_NAMESPACE_ID::uint64 Bitmapset::_internal_words(int index) const { return words_.Get(index); } inline ::PROTOBUF_NAMESPACE_ID::uint64 Bitmapset::words(int index) const { // @@protoc_insertion_point(field_get:pg_query.Bitmapset.words) return _internal_words(index); } inline void Bitmapset::set_words(int index, ::PROTOBUF_NAMESPACE_ID::uint64 value) { words_.Set(index, value); // @@protoc_insertion_point(field_set:pg_query.Bitmapset.words) } inline void Bitmapset::_internal_add_words(::PROTOBUF_NAMESPACE_ID::uint64 value) { words_.Add(value); } inline void Bitmapset::add_words(::PROTOBUF_NAMESPACE_ID::uint64 value) { _internal_add_words(value); // @@protoc_insertion_point(field_add:pg_query.Bitmapset.words) } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >& Bitmapset::_internal_words() const { return words_; } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >& Bitmapset::words() const { // @@protoc_insertion_point(field_list:pg_query.Bitmapset.words) return _internal_words(); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >* Bitmapset::_internal_mutable_words() { return &words_; } inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::uint64 >* Bitmapset::mutable_words() { // @@protoc_insertion_point(field_mutable_list:pg_query.Bitmapset.words) return _internal_mutable_words(); } // ------------------------------------------------------------------- // Alias // string aliasname = 1 [json_name = "aliasname"]; inline void Alias::clear_aliasname() { aliasname_.ClearToEmpty(); } inline const std::string& Alias::aliasname() const { // @@protoc_insertion_point(field_get:pg_query.Alias.aliasname) return _internal_aliasname(); } inline void Alias::set_aliasname(const std::string& value) { _internal_set_aliasname(value); // @@protoc_insertion_point(field_set:pg_query.Alias.aliasname) } inline std::string* Alias::mutable_aliasname() { // @@protoc_insertion_point(field_mutable:pg_query.Alias.aliasname) return _internal_mutable_aliasname(); } inline const std::string& Alias::_internal_aliasname() const { return aliasname_.Get(); } inline void Alias::_internal_set_aliasname(const std::string& value) { aliasname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Alias::set_aliasname(std::string&& value) { aliasname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Alias.aliasname) } inline void Alias::set_aliasname(const char* value) { GOOGLE_DCHECK(value != nullptr); aliasname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Alias.aliasname) } inline void Alias::set_aliasname(const char* value, size_t size) { aliasname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Alias.aliasname) } inline std::string* Alias::_internal_mutable_aliasname() { return aliasname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Alias::release_aliasname() { // @@protoc_insertion_point(field_release:pg_query.Alias.aliasname) return aliasname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Alias::set_allocated_aliasname(std::string* aliasname) { if (aliasname != nullptr) { } else { } aliasname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), aliasname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Alias.aliasname) } // repeated .pg_query.Node colnames = 2 [json_name = "colnames"]; inline int Alias::_internal_colnames_size() const { return colnames_.size(); } inline int Alias::colnames_size() const { return _internal_colnames_size(); } inline void Alias::clear_colnames() { colnames_.Clear(); } inline ::pg_query::Node* Alias::mutable_colnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Alias.colnames) return colnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Alias::mutable_colnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.Alias.colnames) return &colnames_; } inline const ::pg_query::Node& Alias::_internal_colnames(int index) const { return colnames_.Get(index); } inline const ::pg_query::Node& Alias::colnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.Alias.colnames) return _internal_colnames(index); } inline ::pg_query::Node* Alias::_internal_add_colnames() { return colnames_.Add(); } inline ::pg_query::Node* Alias::add_colnames() { // @@protoc_insertion_point(field_add:pg_query.Alias.colnames) return _internal_add_colnames(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Alias::colnames() const { // @@protoc_insertion_point(field_list:pg_query.Alias.colnames) return colnames_; } // ------------------------------------------------------------------- // RangeVar // string catalogname = 1 [json_name = "catalogname"]; inline void RangeVar::clear_catalogname() { catalogname_.ClearToEmpty(); } inline const std::string& RangeVar::catalogname() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.catalogname) return _internal_catalogname(); } inline void RangeVar::set_catalogname(const std::string& value) { _internal_set_catalogname(value); // @@protoc_insertion_point(field_set:pg_query.RangeVar.catalogname) } inline std::string* RangeVar::mutable_catalogname() { // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.catalogname) return _internal_mutable_catalogname(); } inline const std::string& RangeVar::_internal_catalogname() const { return catalogname_.Get(); } inline void RangeVar::_internal_set_catalogname(const std::string& value) { catalogname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RangeVar::set_catalogname(std::string&& value) { catalogname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeVar.catalogname) } inline void RangeVar::set_catalogname(const char* value) { GOOGLE_DCHECK(value != nullptr); catalogname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RangeVar.catalogname) } inline void RangeVar::set_catalogname(const char* value, size_t size) { catalogname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RangeVar.catalogname) } inline std::string* RangeVar::_internal_mutable_catalogname() { return catalogname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RangeVar::release_catalogname() { // @@protoc_insertion_point(field_release:pg_query.RangeVar.catalogname) return catalogname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RangeVar::set_allocated_catalogname(std::string* catalogname) { if (catalogname != nullptr) { } else { } catalogname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), catalogname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.catalogname) } // string schemaname = 2 [json_name = "schemaname"]; inline void RangeVar::clear_schemaname() { schemaname_.ClearToEmpty(); } inline const std::string& RangeVar::schemaname() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.schemaname) return _internal_schemaname(); } inline void RangeVar::set_schemaname(const std::string& value) { _internal_set_schemaname(value); // @@protoc_insertion_point(field_set:pg_query.RangeVar.schemaname) } inline std::string* RangeVar::mutable_schemaname() { // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.schemaname) return _internal_mutable_schemaname(); } inline const std::string& RangeVar::_internal_schemaname() const { return schemaname_.Get(); } inline void RangeVar::_internal_set_schemaname(const std::string& value) { schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RangeVar::set_schemaname(std::string&& value) { schemaname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeVar.schemaname) } inline void RangeVar::set_schemaname(const char* value) { GOOGLE_DCHECK(value != nullptr); schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RangeVar.schemaname) } inline void RangeVar::set_schemaname(const char* value, size_t size) { schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RangeVar.schemaname) } inline std::string* RangeVar::_internal_mutable_schemaname() { return schemaname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RangeVar::release_schemaname() { // @@protoc_insertion_point(field_release:pg_query.RangeVar.schemaname) return schemaname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RangeVar::set_allocated_schemaname(std::string* schemaname) { if (schemaname != nullptr) { } else { } schemaname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), schemaname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.schemaname) } // string relname = 3 [json_name = "relname"]; inline void RangeVar::clear_relname() { relname_.ClearToEmpty(); } inline const std::string& RangeVar::relname() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.relname) return _internal_relname(); } inline void RangeVar::set_relname(const std::string& value) { _internal_set_relname(value); // @@protoc_insertion_point(field_set:pg_query.RangeVar.relname) } inline std::string* RangeVar::mutable_relname() { // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.relname) return _internal_mutable_relname(); } inline const std::string& RangeVar::_internal_relname() const { return relname_.Get(); } inline void RangeVar::_internal_set_relname(const std::string& value) { relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RangeVar::set_relname(std::string&& value) { relname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeVar.relname) } inline void RangeVar::set_relname(const char* value) { GOOGLE_DCHECK(value != nullptr); relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RangeVar.relname) } inline void RangeVar::set_relname(const char* value, size_t size) { relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RangeVar.relname) } inline std::string* RangeVar::_internal_mutable_relname() { return relname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RangeVar::release_relname() { // @@protoc_insertion_point(field_release:pg_query.RangeVar.relname) return relname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RangeVar::set_allocated_relname(std::string* relname) { if (relname != nullptr) { } else { } relname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), relname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.relname) } // bool inh = 4 [json_name = "inh"]; inline void RangeVar::clear_inh() { inh_ = false; } inline bool RangeVar::_internal_inh() const { return inh_; } inline bool RangeVar::inh() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.inh) return _internal_inh(); } inline void RangeVar::_internal_set_inh(bool value) { inh_ = value; } inline void RangeVar::set_inh(bool value) { _internal_set_inh(value); // @@protoc_insertion_point(field_set:pg_query.RangeVar.inh) } // string relpersistence = 5 [json_name = "relpersistence"]; inline void RangeVar::clear_relpersistence() { relpersistence_.ClearToEmpty(); } inline const std::string& RangeVar::relpersistence() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.relpersistence) return _internal_relpersistence(); } inline void RangeVar::set_relpersistence(const std::string& value) { _internal_set_relpersistence(value); // @@protoc_insertion_point(field_set:pg_query.RangeVar.relpersistence) } inline std::string* RangeVar::mutable_relpersistence() { // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.relpersistence) return _internal_mutable_relpersistence(); } inline const std::string& RangeVar::_internal_relpersistence() const { return relpersistence_.Get(); } inline void RangeVar::_internal_set_relpersistence(const std::string& value) { relpersistence_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RangeVar::set_relpersistence(std::string&& value) { relpersistence_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeVar.relpersistence) } inline void RangeVar::set_relpersistence(const char* value) { GOOGLE_DCHECK(value != nullptr); relpersistence_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RangeVar.relpersistence) } inline void RangeVar::set_relpersistence(const char* value, size_t size) { relpersistence_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RangeVar.relpersistence) } inline std::string* RangeVar::_internal_mutable_relpersistence() { return relpersistence_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RangeVar::release_relpersistence() { // @@protoc_insertion_point(field_release:pg_query.RangeVar.relpersistence) return relpersistence_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RangeVar::set_allocated_relpersistence(std::string* relpersistence) { if (relpersistence != nullptr) { } else { } relpersistence_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), relpersistence, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.relpersistence) } // .pg_query.Alias alias = 6 [json_name = "alias"]; inline bool RangeVar::_internal_has_alias() const { return this != internal_default_instance() && alias_ != nullptr; } inline bool RangeVar::has_alias() const { return _internal_has_alias(); } inline void RangeVar::clear_alias() { if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; } inline const ::pg_query::Alias& RangeVar::_internal_alias() const { const ::pg_query::Alias* p = alias_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeVar::alias() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.alias) return _internal_alias(); } inline void RangeVar::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); } alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeVar.alias) } inline ::pg_query::Alias* RangeVar::release_alias() { ::pg_query::Alias* temp = alias_; alias_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Alias* RangeVar::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeVar.alias) ::pg_query::Alias* temp = alias_; alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeVar::_internal_mutable_alias() { if (alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); alias_ = p; } return alias_; } inline ::pg_query::Alias* RangeVar::mutable_alias() { // @@protoc_insertion_point(field_mutable:pg_query.RangeVar.alias) return _internal_mutable_alias(); } inline void RangeVar::set_allocated_alias(::pg_query::Alias* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeVar.alias) } // int32 location = 7 [json_name = "location"]; inline void RangeVar::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeVar::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeVar::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeVar.location) return _internal_location(); } inline void RangeVar::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void RangeVar::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeVar.location) } // ------------------------------------------------------------------- // TableFunc // repeated .pg_query.Node ns_uris = 1 [json_name = "ns_uris"]; inline int TableFunc::_internal_ns_uris_size() const { return ns_uris_.size(); } inline int TableFunc::ns_uris_size() const { return _internal_ns_uris_size(); } inline void TableFunc::clear_ns_uris() { ns_uris_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_ns_uris(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.ns_uris) return ns_uris_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_ns_uris() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.ns_uris) return &ns_uris_; } inline const ::pg_query::Node& TableFunc::_internal_ns_uris(int index) const { return ns_uris_.Get(index); } inline const ::pg_query::Node& TableFunc::ns_uris(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.ns_uris) return _internal_ns_uris(index); } inline ::pg_query::Node* TableFunc::_internal_add_ns_uris() { return ns_uris_.Add(); } inline ::pg_query::Node* TableFunc::add_ns_uris() { // @@protoc_insertion_point(field_add:pg_query.TableFunc.ns_uris) return _internal_add_ns_uris(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::ns_uris() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.ns_uris) return ns_uris_; } // repeated .pg_query.Node ns_names = 2 [json_name = "ns_names"]; inline int TableFunc::_internal_ns_names_size() const { return ns_names_.size(); } inline int TableFunc::ns_names_size() const { return _internal_ns_names_size(); } inline void TableFunc::clear_ns_names() { ns_names_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_ns_names(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.ns_names) return ns_names_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_ns_names() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.ns_names) return &ns_names_; } inline const ::pg_query::Node& TableFunc::_internal_ns_names(int index) const { return ns_names_.Get(index); } inline const ::pg_query::Node& TableFunc::ns_names(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.ns_names) return _internal_ns_names(index); } inline ::pg_query::Node* TableFunc::_internal_add_ns_names() { return ns_names_.Add(); } inline ::pg_query::Node* TableFunc::add_ns_names() { // @@protoc_insertion_point(field_add:pg_query.TableFunc.ns_names) return _internal_add_ns_names(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::ns_names() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.ns_names) return ns_names_; } // .pg_query.Node docexpr = 3 [json_name = "docexpr"]; inline bool TableFunc::_internal_has_docexpr() const { return this != internal_default_instance() && docexpr_ != nullptr; } inline bool TableFunc::has_docexpr() const { return _internal_has_docexpr(); } inline void TableFunc::clear_docexpr() { if (GetArena() == nullptr && docexpr_ != nullptr) { delete docexpr_; } docexpr_ = nullptr; } inline const ::pg_query::Node& TableFunc::_internal_docexpr() const { const ::pg_query::Node* p = docexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TableFunc::docexpr() const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.docexpr) return _internal_docexpr(); } inline void TableFunc::unsafe_arena_set_allocated_docexpr( ::pg_query::Node* docexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(docexpr_); } docexpr_ = docexpr; if (docexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableFunc.docexpr) } inline ::pg_query::Node* TableFunc::release_docexpr() { ::pg_query::Node* temp = docexpr_; docexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* TableFunc::unsafe_arena_release_docexpr() { // @@protoc_insertion_point(field_release:pg_query.TableFunc.docexpr) ::pg_query::Node* temp = docexpr_; docexpr_ = nullptr; return temp; } inline ::pg_query::Node* TableFunc::_internal_mutable_docexpr() { if (docexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); docexpr_ = p; } return docexpr_; } inline ::pg_query::Node* TableFunc::mutable_docexpr() { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.docexpr) return _internal_mutable_docexpr(); } inline void TableFunc::set_allocated_docexpr(::pg_query::Node* docexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete docexpr_; } if (docexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(docexpr); if (message_arena != submessage_arena) { docexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, docexpr, submessage_arena); } } else { } docexpr_ = docexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.TableFunc.docexpr) } // .pg_query.Node rowexpr = 4 [json_name = "rowexpr"]; inline bool TableFunc::_internal_has_rowexpr() const { return this != internal_default_instance() && rowexpr_ != nullptr; } inline bool TableFunc::has_rowexpr() const { return _internal_has_rowexpr(); } inline void TableFunc::clear_rowexpr() { if (GetArena() == nullptr && rowexpr_ != nullptr) { delete rowexpr_; } rowexpr_ = nullptr; } inline const ::pg_query::Node& TableFunc::_internal_rowexpr() const { const ::pg_query::Node* p = rowexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TableFunc::rowexpr() const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.rowexpr) return _internal_rowexpr(); } inline void TableFunc::unsafe_arena_set_allocated_rowexpr( ::pg_query::Node* rowexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rowexpr_); } rowexpr_ = rowexpr; if (rowexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableFunc.rowexpr) } inline ::pg_query::Node* TableFunc::release_rowexpr() { ::pg_query::Node* temp = rowexpr_; rowexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* TableFunc::unsafe_arena_release_rowexpr() { // @@protoc_insertion_point(field_release:pg_query.TableFunc.rowexpr) ::pg_query::Node* temp = rowexpr_; rowexpr_ = nullptr; return temp; } inline ::pg_query::Node* TableFunc::_internal_mutable_rowexpr() { if (rowexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); rowexpr_ = p; } return rowexpr_; } inline ::pg_query::Node* TableFunc::mutable_rowexpr() { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.rowexpr) return _internal_mutable_rowexpr(); } inline void TableFunc::set_allocated_rowexpr(::pg_query::Node* rowexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete rowexpr_; } if (rowexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rowexpr); if (message_arena != submessage_arena) { rowexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rowexpr, submessage_arena); } } else { } rowexpr_ = rowexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.TableFunc.rowexpr) } // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; inline int TableFunc::_internal_colnames_size() const { return colnames_.size(); } inline int TableFunc::colnames_size() const { return _internal_colnames_size(); } inline void TableFunc::clear_colnames() { colnames_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_colnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colnames) return colnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_colnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colnames) return &colnames_; } inline const ::pg_query::Node& TableFunc::_internal_colnames(int index) const { return colnames_.Get(index); } inline const ::pg_query::Node& TableFunc::colnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.colnames) return _internal_colnames(index); } inline ::pg_query::Node* TableFunc::_internal_add_colnames() { return colnames_.Add(); } inline ::pg_query::Node* TableFunc::add_colnames() { // @@protoc_insertion_point(field_add:pg_query.TableFunc.colnames) return _internal_add_colnames(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::colnames() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.colnames) return colnames_; } // repeated .pg_query.Node coltypes = 6 [json_name = "coltypes"]; inline int TableFunc::_internal_coltypes_size() const { return coltypes_.size(); } inline int TableFunc::coltypes_size() const { return _internal_coltypes_size(); } inline void TableFunc::clear_coltypes() { coltypes_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_coltypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coltypes) return coltypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_coltypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coltypes) return &coltypes_; } inline const ::pg_query::Node& TableFunc::_internal_coltypes(int index) const { return coltypes_.Get(index); } inline const ::pg_query::Node& TableFunc::coltypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.coltypes) return _internal_coltypes(index); } inline ::pg_query::Node* TableFunc::_internal_add_coltypes() { return coltypes_.Add(); } inline ::pg_query::Node* TableFunc::add_coltypes() { // @@protoc_insertion_point(field_add:pg_query.TableFunc.coltypes) return _internal_add_coltypes(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::coltypes() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.coltypes) return coltypes_; } // repeated .pg_query.Node coltypmods = 7 [json_name = "coltypmods"]; inline int TableFunc::_internal_coltypmods_size() const { return coltypmods_.size(); } inline int TableFunc::coltypmods_size() const { return _internal_coltypmods_size(); } inline void TableFunc::clear_coltypmods() { coltypmods_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_coltypmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coltypmods) return coltypmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_coltypmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coltypmods) return &coltypmods_; } inline const ::pg_query::Node& TableFunc::_internal_coltypmods(int index) const { return coltypmods_.Get(index); } inline const ::pg_query::Node& TableFunc::coltypmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.coltypmods) return _internal_coltypmods(index); } inline ::pg_query::Node* TableFunc::_internal_add_coltypmods() { return coltypmods_.Add(); } inline ::pg_query::Node* TableFunc::add_coltypmods() { // @@protoc_insertion_point(field_add:pg_query.TableFunc.coltypmods) return _internal_add_coltypmods(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::coltypmods() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.coltypmods) return coltypmods_; } // repeated .pg_query.Node colcollations = 8 [json_name = "colcollations"]; inline int TableFunc::_internal_colcollations_size() const { return colcollations_.size(); } inline int TableFunc::colcollations_size() const { return _internal_colcollations_size(); } inline void TableFunc::clear_colcollations() { colcollations_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_colcollations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colcollations) return colcollations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_colcollations() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colcollations) return &colcollations_; } inline const ::pg_query::Node& TableFunc::_internal_colcollations(int index) const { return colcollations_.Get(index); } inline const ::pg_query::Node& TableFunc::colcollations(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.colcollations) return _internal_colcollations(index); } inline ::pg_query::Node* TableFunc::_internal_add_colcollations() { return colcollations_.Add(); } inline ::pg_query::Node* TableFunc::add_colcollations() { // @@protoc_insertion_point(field_add:pg_query.TableFunc.colcollations) return _internal_add_colcollations(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::colcollations() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.colcollations) return colcollations_; } // repeated .pg_query.Node colexprs = 9 [json_name = "colexprs"]; inline int TableFunc::_internal_colexprs_size() const { return colexprs_.size(); } inline int TableFunc::colexprs_size() const { return _internal_colexprs_size(); } inline void TableFunc::clear_colexprs() { colexprs_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_colexprs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.colexprs) return colexprs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_colexprs() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.colexprs) return &colexprs_; } inline const ::pg_query::Node& TableFunc::_internal_colexprs(int index) const { return colexprs_.Get(index); } inline const ::pg_query::Node& TableFunc::colexprs(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.colexprs) return _internal_colexprs(index); } inline ::pg_query::Node* TableFunc::_internal_add_colexprs() { return colexprs_.Add(); } inline ::pg_query::Node* TableFunc::add_colexprs() { // @@protoc_insertion_point(field_add:pg_query.TableFunc.colexprs) return _internal_add_colexprs(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::colexprs() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.colexprs) return colexprs_; } // repeated .pg_query.Node coldefexprs = 10 [json_name = "coldefexprs"]; inline int TableFunc::_internal_coldefexprs_size() const { return coldefexprs_.size(); } inline int TableFunc::coldefexprs_size() const { return _internal_coldefexprs_size(); } inline void TableFunc::clear_coldefexprs() { coldefexprs_.Clear(); } inline ::pg_query::Node* TableFunc::mutable_coldefexprs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableFunc.coldefexprs) return coldefexprs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableFunc::mutable_coldefexprs() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableFunc.coldefexprs) return &coldefexprs_; } inline const ::pg_query::Node& TableFunc::_internal_coldefexprs(int index) const { return coldefexprs_.Get(index); } inline const ::pg_query::Node& TableFunc::coldefexprs(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.coldefexprs) return _internal_coldefexprs(index); } inline ::pg_query::Node* TableFunc::_internal_add_coldefexprs() { return coldefexprs_.Add(); } inline ::pg_query::Node* TableFunc::add_coldefexprs() { // @@protoc_insertion_point(field_add:pg_query.TableFunc.coldefexprs) return _internal_add_coldefexprs(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableFunc::coldefexprs() const { // @@protoc_insertion_point(field_list:pg_query.TableFunc.coldefexprs) return coldefexprs_; } // int32 ordinalitycol = 11 [json_name = "ordinalitycol"]; inline void TableFunc::clear_ordinalitycol() { ordinalitycol_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 TableFunc::_internal_ordinalitycol() const { return ordinalitycol_; } inline ::PROTOBUF_NAMESPACE_ID::int32 TableFunc::ordinalitycol() const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.ordinalitycol) return _internal_ordinalitycol(); } inline void TableFunc::_internal_set_ordinalitycol(::PROTOBUF_NAMESPACE_ID::int32 value) { ordinalitycol_ = value; } inline void TableFunc::set_ordinalitycol(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_ordinalitycol(value); // @@protoc_insertion_point(field_set:pg_query.TableFunc.ordinalitycol) } // int32 location = 12 [json_name = "location"]; inline void TableFunc::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 TableFunc::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 TableFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.TableFunc.location) return _internal_location(); } inline void TableFunc::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void TableFunc::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.TableFunc.location) } // ------------------------------------------------------------------- // Expr // ------------------------------------------------------------------- // Var // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool Var::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool Var::has_xpr() const { return _internal_has_xpr(); } inline void Var::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& Var::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Var::xpr() const { // @@protoc_insertion_point(field_get:pg_query.Var.xpr) return _internal_xpr(); } inline void Var::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Var.xpr) } inline ::pg_query::Node* Var::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Var::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.Var.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* Var::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* Var::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.Var.xpr) return _internal_mutable_xpr(); } inline void Var::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.Var.xpr) } // uint32 varno = 2 [json_name = "varno"]; inline void Var::clear_varno() { varno_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::_internal_varno() const { return varno_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::varno() const { // @@protoc_insertion_point(field_get:pg_query.Var.varno) return _internal_varno(); } inline void Var::_internal_set_varno(::PROTOBUF_NAMESPACE_ID::uint32 value) { varno_ = value; } inline void Var::set_varno(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_varno(value); // @@protoc_insertion_point(field_set:pg_query.Var.varno) } // int32 varattno = 3 [json_name = "varattno"]; inline void Var::clear_varattno() { varattno_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Var::_internal_varattno() const { return varattno_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Var::varattno() const { // @@protoc_insertion_point(field_get:pg_query.Var.varattno) return _internal_varattno(); } inline void Var::_internal_set_varattno(::PROTOBUF_NAMESPACE_ID::int32 value) { varattno_ = value; } inline void Var::set_varattno(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_varattno(value); // @@protoc_insertion_point(field_set:pg_query.Var.varattno) } // uint32 vartype = 4 [json_name = "vartype"]; inline void Var::clear_vartype() { vartype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::_internal_vartype() const { return vartype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::vartype() const { // @@protoc_insertion_point(field_get:pg_query.Var.vartype) return _internal_vartype(); } inline void Var::_internal_set_vartype(::PROTOBUF_NAMESPACE_ID::uint32 value) { vartype_ = value; } inline void Var::set_vartype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_vartype(value); // @@protoc_insertion_point(field_set:pg_query.Var.vartype) } // int32 vartypmod = 5 [json_name = "vartypmod"]; inline void Var::clear_vartypmod() { vartypmod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Var::_internal_vartypmod() const { return vartypmod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Var::vartypmod() const { // @@protoc_insertion_point(field_get:pg_query.Var.vartypmod) return _internal_vartypmod(); } inline void Var::_internal_set_vartypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { vartypmod_ = value; } inline void Var::set_vartypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_vartypmod(value); // @@protoc_insertion_point(field_set:pg_query.Var.vartypmod) } // uint32 varcollid = 6 [json_name = "varcollid"]; inline void Var::clear_varcollid() { varcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::_internal_varcollid() const { return varcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::varcollid() const { // @@protoc_insertion_point(field_get:pg_query.Var.varcollid) return _internal_varcollid(); } inline void Var::_internal_set_varcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { varcollid_ = value; } inline void Var::set_varcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_varcollid(value); // @@protoc_insertion_point(field_set:pg_query.Var.varcollid) } // uint32 varlevelsup = 7 [json_name = "varlevelsup"]; inline void Var::clear_varlevelsup() { varlevelsup_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::_internal_varlevelsup() const { return varlevelsup_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::varlevelsup() const { // @@protoc_insertion_point(field_get:pg_query.Var.varlevelsup) return _internal_varlevelsup(); } inline void Var::_internal_set_varlevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { varlevelsup_ = value; } inline void Var::set_varlevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_varlevelsup(value); // @@protoc_insertion_point(field_set:pg_query.Var.varlevelsup) } // uint32 varnosyn = 8 [json_name = "varnosyn"]; inline void Var::clear_varnosyn() { varnosyn_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::_internal_varnosyn() const { return varnosyn_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Var::varnosyn() const { // @@protoc_insertion_point(field_get:pg_query.Var.varnosyn) return _internal_varnosyn(); } inline void Var::_internal_set_varnosyn(::PROTOBUF_NAMESPACE_ID::uint32 value) { varnosyn_ = value; } inline void Var::set_varnosyn(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_varnosyn(value); // @@protoc_insertion_point(field_set:pg_query.Var.varnosyn) } // int32 varattnosyn = 9 [json_name = "varattnosyn"]; inline void Var::clear_varattnosyn() { varattnosyn_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Var::_internal_varattnosyn() const { return varattnosyn_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Var::varattnosyn() const { // @@protoc_insertion_point(field_get:pg_query.Var.varattnosyn) return _internal_varattnosyn(); } inline void Var::_internal_set_varattnosyn(::PROTOBUF_NAMESPACE_ID::int32 value) { varattnosyn_ = value; } inline void Var::set_varattnosyn(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_varattnosyn(value); // @@protoc_insertion_point(field_set:pg_query.Var.varattnosyn) } // int32 location = 10 [json_name = "location"]; inline void Var::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Var::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Var::location() const { // @@protoc_insertion_point(field_get:pg_query.Var.location) return _internal_location(); } inline void Var::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void Var::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Var.location) } // ------------------------------------------------------------------- // Param // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool Param::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool Param::has_xpr() const { return _internal_has_xpr(); } inline void Param::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& Param::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Param::xpr() const { // @@protoc_insertion_point(field_get:pg_query.Param.xpr) return _internal_xpr(); } inline void Param::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Param.xpr) } inline ::pg_query::Node* Param::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Param::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.Param.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* Param::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* Param::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.Param.xpr) return _internal_mutable_xpr(); } inline void Param::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.Param.xpr) } // .pg_query.ParamKind paramkind = 2 [json_name = "paramkind"]; inline void Param::clear_paramkind() { paramkind_ = 0; } inline ::pg_query::ParamKind Param::_internal_paramkind() const { return static_cast< ::pg_query::ParamKind >(paramkind_); } inline ::pg_query::ParamKind Param::paramkind() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramkind) return _internal_paramkind(); } inline void Param::_internal_set_paramkind(::pg_query::ParamKind value) { paramkind_ = value; } inline void Param::set_paramkind(::pg_query::ParamKind value) { _internal_set_paramkind(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramkind) } // int32 paramid = 3 [json_name = "paramid"]; inline void Param::clear_paramid() { paramid_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Param::_internal_paramid() const { return paramid_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Param::paramid() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramid) return _internal_paramid(); } inline void Param::_internal_set_paramid(::PROTOBUF_NAMESPACE_ID::int32 value) { paramid_ = value; } inline void Param::set_paramid(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_paramid(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramid) } // uint32 paramtype = 4 [json_name = "paramtype"]; inline void Param::clear_paramtype() { paramtype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Param::_internal_paramtype() const { return paramtype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Param::paramtype() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramtype) return _internal_paramtype(); } inline void Param::_internal_set_paramtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { paramtype_ = value; } inline void Param::set_paramtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_paramtype(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramtype) } // int32 paramtypmod = 5 [json_name = "paramtypmod"]; inline void Param::clear_paramtypmod() { paramtypmod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Param::_internal_paramtypmod() const { return paramtypmod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Param::paramtypmod() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramtypmod) return _internal_paramtypmod(); } inline void Param::_internal_set_paramtypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { paramtypmod_ = value; } inline void Param::set_paramtypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_paramtypmod(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramtypmod) } // uint32 paramcollid = 6 [json_name = "paramcollid"]; inline void Param::clear_paramcollid() { paramcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Param::_internal_paramcollid() const { return paramcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Param::paramcollid() const { // @@protoc_insertion_point(field_get:pg_query.Param.paramcollid) return _internal_paramcollid(); } inline void Param::_internal_set_paramcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { paramcollid_ = value; } inline void Param::set_paramcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_paramcollid(value); // @@protoc_insertion_point(field_set:pg_query.Param.paramcollid) } // int32 location = 7 [json_name = "location"]; inline void Param::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Param::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Param::location() const { // @@protoc_insertion_point(field_get:pg_query.Param.location) return _internal_location(); } inline void Param::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void Param::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Param.location) } // ------------------------------------------------------------------- // Aggref // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool Aggref::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool Aggref::has_xpr() const { return _internal_has_xpr(); } inline void Aggref::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& Aggref::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Aggref::xpr() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.xpr) return _internal_xpr(); } inline void Aggref::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Aggref.xpr) } inline ::pg_query::Node* Aggref::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Aggref::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.Aggref.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* Aggref::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* Aggref::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.xpr) return _internal_mutable_xpr(); } inline void Aggref::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.xpr) } // uint32 aggfnoid = 2 [json_name = "aggfnoid"]; inline void Aggref::clear_aggfnoid() { aggfnoid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_aggfnoid() const { return aggfnoid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::aggfnoid() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggfnoid) return _internal_aggfnoid(); } inline void Aggref::_internal_set_aggfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value) { aggfnoid_ = value; } inline void Aggref::set_aggfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_aggfnoid(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggfnoid) } // uint32 aggtype = 3 [json_name = "aggtype"]; inline void Aggref::clear_aggtype() { aggtype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_aggtype() const { return aggtype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::aggtype() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggtype) return _internal_aggtype(); } inline void Aggref::_internal_set_aggtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { aggtype_ = value; } inline void Aggref::set_aggtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_aggtype(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggtype) } // uint32 aggcollid = 4 [json_name = "aggcollid"]; inline void Aggref::clear_aggcollid() { aggcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_aggcollid() const { return aggcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::aggcollid() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggcollid) return _internal_aggcollid(); } inline void Aggref::_internal_set_aggcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { aggcollid_ = value; } inline void Aggref::set_aggcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_aggcollid(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggcollid) } // uint32 inputcollid = 5 [json_name = "inputcollid"]; inline void Aggref::clear_inputcollid() { inputcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_inputcollid() const { return inputcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.inputcollid) return _internal_inputcollid(); } inline void Aggref::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { inputcollid_ = value; } inline void Aggref::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.inputcollid) } // uint32 aggtranstype = 6 [json_name = "aggtranstype"]; inline void Aggref::clear_aggtranstype() { aggtranstype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_aggtranstype() const { return aggtranstype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::aggtranstype() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggtranstype) return _internal_aggtranstype(); } inline void Aggref::_internal_set_aggtranstype(::PROTOBUF_NAMESPACE_ID::uint32 value) { aggtranstype_ = value; } inline void Aggref::set_aggtranstype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_aggtranstype(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggtranstype) } // repeated .pg_query.Node aggargtypes = 7 [json_name = "aggargtypes"]; inline int Aggref::_internal_aggargtypes_size() const { return aggargtypes_.size(); } inline int Aggref::aggargtypes_size() const { return _internal_aggargtypes_size(); } inline void Aggref::clear_aggargtypes() { aggargtypes_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggargtypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggargtypes) return aggargtypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Aggref::mutable_aggargtypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggargtypes) return &aggargtypes_; } inline const ::pg_query::Node& Aggref::_internal_aggargtypes(int index) const { return aggargtypes_.Get(index); } inline const ::pg_query::Node& Aggref::aggargtypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggargtypes) return _internal_aggargtypes(index); } inline ::pg_query::Node* Aggref::_internal_add_aggargtypes() { return aggargtypes_.Add(); } inline ::pg_query::Node* Aggref::add_aggargtypes() { // @@protoc_insertion_point(field_add:pg_query.Aggref.aggargtypes) return _internal_add_aggargtypes(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Aggref::aggargtypes() const { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggargtypes) return aggargtypes_; } // repeated .pg_query.Node aggdirectargs = 8 [json_name = "aggdirectargs"]; inline int Aggref::_internal_aggdirectargs_size() const { return aggdirectargs_.size(); } inline int Aggref::aggdirectargs_size() const { return _internal_aggdirectargs_size(); } inline void Aggref::clear_aggdirectargs() { aggdirectargs_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggdirectargs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggdirectargs) return aggdirectargs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Aggref::mutable_aggdirectargs() { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggdirectargs) return &aggdirectargs_; } inline const ::pg_query::Node& Aggref::_internal_aggdirectargs(int index) const { return aggdirectargs_.Get(index); } inline const ::pg_query::Node& Aggref::aggdirectargs(int index) const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggdirectargs) return _internal_aggdirectargs(index); } inline ::pg_query::Node* Aggref::_internal_add_aggdirectargs() { return aggdirectargs_.Add(); } inline ::pg_query::Node* Aggref::add_aggdirectargs() { // @@protoc_insertion_point(field_add:pg_query.Aggref.aggdirectargs) return _internal_add_aggdirectargs(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Aggref::aggdirectargs() const { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggdirectargs) return aggdirectargs_; } // repeated .pg_query.Node args = 9 [json_name = "args"]; inline int Aggref::_internal_args_size() const { return args_.size(); } inline int Aggref::args_size() const { return _internal_args_size(); } inline void Aggref::clear_args() { args_.Clear(); } inline ::pg_query::Node* Aggref::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Aggref::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.args) return &args_; } inline const ::pg_query::Node& Aggref::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& Aggref::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.Aggref.args) return _internal_args(index); } inline ::pg_query::Node* Aggref::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* Aggref::add_args() { // @@protoc_insertion_point(field_add:pg_query.Aggref.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Aggref::args() const { // @@protoc_insertion_point(field_list:pg_query.Aggref.args) return args_; } // repeated .pg_query.Node aggorder = 10 [json_name = "aggorder"]; inline int Aggref::_internal_aggorder_size() const { return aggorder_.size(); } inline int Aggref::aggorder_size() const { return _internal_aggorder_size(); } inline void Aggref::clear_aggorder() { aggorder_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggorder(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggorder) return aggorder_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Aggref::mutable_aggorder() { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggorder) return &aggorder_; } inline const ::pg_query::Node& Aggref::_internal_aggorder(int index) const { return aggorder_.Get(index); } inline const ::pg_query::Node& Aggref::aggorder(int index) const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggorder) return _internal_aggorder(index); } inline ::pg_query::Node* Aggref::_internal_add_aggorder() { return aggorder_.Add(); } inline ::pg_query::Node* Aggref::add_aggorder() { // @@protoc_insertion_point(field_add:pg_query.Aggref.aggorder) return _internal_add_aggorder(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Aggref::aggorder() const { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggorder) return aggorder_; } // repeated .pg_query.Node aggdistinct = 11 [json_name = "aggdistinct"]; inline int Aggref::_internal_aggdistinct_size() const { return aggdistinct_.size(); } inline int Aggref::aggdistinct_size() const { return _internal_aggdistinct_size(); } inline void Aggref::clear_aggdistinct() { aggdistinct_.Clear(); } inline ::pg_query::Node* Aggref::mutable_aggdistinct(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggdistinct) return aggdistinct_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Aggref::mutable_aggdistinct() { // @@protoc_insertion_point(field_mutable_list:pg_query.Aggref.aggdistinct) return &aggdistinct_; } inline const ::pg_query::Node& Aggref::_internal_aggdistinct(int index) const { return aggdistinct_.Get(index); } inline const ::pg_query::Node& Aggref::aggdistinct(int index) const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggdistinct) return _internal_aggdistinct(index); } inline ::pg_query::Node* Aggref::_internal_add_aggdistinct() { return aggdistinct_.Add(); } inline ::pg_query::Node* Aggref::add_aggdistinct() { // @@protoc_insertion_point(field_add:pg_query.Aggref.aggdistinct) return _internal_add_aggdistinct(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Aggref::aggdistinct() const { // @@protoc_insertion_point(field_list:pg_query.Aggref.aggdistinct) return aggdistinct_; } // .pg_query.Node aggfilter = 12 [json_name = "aggfilter"]; inline bool Aggref::_internal_has_aggfilter() const { return this != internal_default_instance() && aggfilter_ != nullptr; } inline bool Aggref::has_aggfilter() const { return _internal_has_aggfilter(); } inline void Aggref::clear_aggfilter() { if (GetArena() == nullptr && aggfilter_ != nullptr) { delete aggfilter_; } aggfilter_ = nullptr; } inline const ::pg_query::Node& Aggref::_internal_aggfilter() const { const ::pg_query::Node* p = aggfilter_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Aggref::aggfilter() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggfilter) return _internal_aggfilter(); } inline void Aggref::unsafe_arena_set_allocated_aggfilter( ::pg_query::Node* aggfilter) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(aggfilter_); } aggfilter_ = aggfilter; if (aggfilter) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Aggref.aggfilter) } inline ::pg_query::Node* Aggref::release_aggfilter() { ::pg_query::Node* temp = aggfilter_; aggfilter_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Aggref::unsafe_arena_release_aggfilter() { // @@protoc_insertion_point(field_release:pg_query.Aggref.aggfilter) ::pg_query::Node* temp = aggfilter_; aggfilter_ = nullptr; return temp; } inline ::pg_query::Node* Aggref::_internal_mutable_aggfilter() { if (aggfilter_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); aggfilter_ = p; } return aggfilter_; } inline ::pg_query::Node* Aggref::mutable_aggfilter() { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggfilter) return _internal_mutable_aggfilter(); } inline void Aggref::set_allocated_aggfilter(::pg_query::Node* aggfilter) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete aggfilter_; } if (aggfilter) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(aggfilter); if (message_arena != submessage_arena) { aggfilter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, aggfilter, submessage_arena); } } else { } aggfilter_ = aggfilter; // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.aggfilter) } // bool aggstar = 13 [json_name = "aggstar"]; inline void Aggref::clear_aggstar() { aggstar_ = false; } inline bool Aggref::_internal_aggstar() const { return aggstar_; } inline bool Aggref::aggstar() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggstar) return _internal_aggstar(); } inline void Aggref::_internal_set_aggstar(bool value) { aggstar_ = value; } inline void Aggref::set_aggstar(bool value) { _internal_set_aggstar(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggstar) } // bool aggvariadic = 14 [json_name = "aggvariadic"]; inline void Aggref::clear_aggvariadic() { aggvariadic_ = false; } inline bool Aggref::_internal_aggvariadic() const { return aggvariadic_; } inline bool Aggref::aggvariadic() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggvariadic) return _internal_aggvariadic(); } inline void Aggref::_internal_set_aggvariadic(bool value) { aggvariadic_ = value; } inline void Aggref::set_aggvariadic(bool value) { _internal_set_aggvariadic(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggvariadic) } // string aggkind = 15 [json_name = "aggkind"]; inline void Aggref::clear_aggkind() { aggkind_.ClearToEmpty(); } inline const std::string& Aggref::aggkind() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggkind) return _internal_aggkind(); } inline void Aggref::set_aggkind(const std::string& value) { _internal_set_aggkind(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggkind) } inline std::string* Aggref::mutable_aggkind() { // @@protoc_insertion_point(field_mutable:pg_query.Aggref.aggkind) return _internal_mutable_aggkind(); } inline const std::string& Aggref::_internal_aggkind() const { return aggkind_.Get(); } inline void Aggref::_internal_set_aggkind(const std::string& value) { aggkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Aggref::set_aggkind(std::string&& value) { aggkind_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Aggref.aggkind) } inline void Aggref::set_aggkind(const char* value) { GOOGLE_DCHECK(value != nullptr); aggkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Aggref.aggkind) } inline void Aggref::set_aggkind(const char* value, size_t size) { aggkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Aggref.aggkind) } inline std::string* Aggref::_internal_mutable_aggkind() { return aggkind_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Aggref::release_aggkind() { // @@protoc_insertion_point(field_release:pg_query.Aggref.aggkind) return aggkind_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Aggref::set_allocated_aggkind(std::string* aggkind) { if (aggkind != nullptr) { } else { } aggkind_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), aggkind, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Aggref.aggkind) } // uint32 agglevelsup = 16 [json_name = "agglevelsup"]; inline void Aggref::clear_agglevelsup() { agglevelsup_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::_internal_agglevelsup() const { return agglevelsup_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Aggref::agglevelsup() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.agglevelsup) return _internal_agglevelsup(); } inline void Aggref::_internal_set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { agglevelsup_ = value; } inline void Aggref::set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_agglevelsup(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.agglevelsup) } // .pg_query.AggSplit aggsplit = 17 [json_name = "aggsplit"]; inline void Aggref::clear_aggsplit() { aggsplit_ = 0; } inline ::pg_query::AggSplit Aggref::_internal_aggsplit() const { return static_cast< ::pg_query::AggSplit >(aggsplit_); } inline ::pg_query::AggSplit Aggref::aggsplit() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.aggsplit) return _internal_aggsplit(); } inline void Aggref::_internal_set_aggsplit(::pg_query::AggSplit value) { aggsplit_ = value; } inline void Aggref::set_aggsplit(::pg_query::AggSplit value) { _internal_set_aggsplit(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.aggsplit) } // int32 location = 18 [json_name = "location"]; inline void Aggref::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Aggref::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Aggref::location() const { // @@protoc_insertion_point(field_get:pg_query.Aggref.location) return _internal_location(); } inline void Aggref::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void Aggref::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Aggref.location) } // ------------------------------------------------------------------- // GroupingFunc // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool GroupingFunc::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool GroupingFunc::has_xpr() const { return _internal_has_xpr(); } inline void GroupingFunc::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& GroupingFunc::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& GroupingFunc::xpr() const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.xpr) return _internal_xpr(); } inline void GroupingFunc::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.GroupingFunc.xpr) } inline ::pg_query::Node* GroupingFunc::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* GroupingFunc::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.GroupingFunc.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* GroupingFunc::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* GroupingFunc::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.xpr) return _internal_mutable_xpr(); } inline void GroupingFunc::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.GroupingFunc.xpr) } // repeated .pg_query.Node args = 2 [json_name = "args"]; inline int GroupingFunc::_internal_args_size() const { return args_.size(); } inline int GroupingFunc::args_size() const { return _internal_args_size(); } inline void GroupingFunc::clear_args() { args_.Clear(); } inline ::pg_query::Node* GroupingFunc::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GroupingFunc::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.args) return &args_; } inline const ::pg_query::Node& GroupingFunc::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& GroupingFunc::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.args) return _internal_args(index); } inline ::pg_query::Node* GroupingFunc::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* GroupingFunc::add_args() { // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GroupingFunc::args() const { // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.args) return args_; } // repeated .pg_query.Node refs = 3 [json_name = "refs"]; inline int GroupingFunc::_internal_refs_size() const { return refs_.size(); } inline int GroupingFunc::refs_size() const { return _internal_refs_size(); } inline void GroupingFunc::clear_refs() { refs_.Clear(); } inline ::pg_query::Node* GroupingFunc::mutable_refs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.refs) return refs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GroupingFunc::mutable_refs() { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.refs) return &refs_; } inline const ::pg_query::Node& GroupingFunc::_internal_refs(int index) const { return refs_.Get(index); } inline const ::pg_query::Node& GroupingFunc::refs(int index) const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.refs) return _internal_refs(index); } inline ::pg_query::Node* GroupingFunc::_internal_add_refs() { return refs_.Add(); } inline ::pg_query::Node* GroupingFunc::add_refs() { // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.refs) return _internal_add_refs(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GroupingFunc::refs() const { // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.refs) return refs_; } // repeated .pg_query.Node cols = 4 [json_name = "cols"]; inline int GroupingFunc::_internal_cols_size() const { return cols_.size(); } inline int GroupingFunc::cols_size() const { return _internal_cols_size(); } inline void GroupingFunc::clear_cols() { cols_.Clear(); } inline ::pg_query::Node* GroupingFunc::mutable_cols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GroupingFunc.cols) return cols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GroupingFunc::mutable_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingFunc.cols) return &cols_; } inline const ::pg_query::Node& GroupingFunc::_internal_cols(int index) const { return cols_.Get(index); } inline const ::pg_query::Node& GroupingFunc::cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.cols) return _internal_cols(index); } inline ::pg_query::Node* GroupingFunc::_internal_add_cols() { return cols_.Add(); } inline ::pg_query::Node* GroupingFunc::add_cols() { // @@protoc_insertion_point(field_add:pg_query.GroupingFunc.cols) return _internal_add_cols(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GroupingFunc::cols() const { // @@protoc_insertion_point(field_list:pg_query.GroupingFunc.cols) return cols_; } // uint32 agglevelsup = 5 [json_name = "agglevelsup"]; inline void GroupingFunc::clear_agglevelsup() { agglevelsup_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 GroupingFunc::_internal_agglevelsup() const { return agglevelsup_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 GroupingFunc::agglevelsup() const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.agglevelsup) return _internal_agglevelsup(); } inline void GroupingFunc::_internal_set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { agglevelsup_ = value; } inline void GroupingFunc::set_agglevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_agglevelsup(value); // @@protoc_insertion_point(field_set:pg_query.GroupingFunc.agglevelsup) } // int32 location = 6 [json_name = "location"]; inline void GroupingFunc::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 GroupingFunc::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 GroupingFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.GroupingFunc.location) return _internal_location(); } inline void GroupingFunc::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void GroupingFunc::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.GroupingFunc.location) } // ------------------------------------------------------------------- // WindowFunc // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool WindowFunc::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool WindowFunc::has_xpr() const { return _internal_has_xpr(); } inline void WindowFunc::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& WindowFunc::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowFunc::xpr() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.xpr) return _internal_xpr(); } inline void WindowFunc::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowFunc.xpr) } inline ::pg_query::Node* WindowFunc::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* WindowFunc::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.WindowFunc.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* WindowFunc::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* WindowFunc::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.xpr) return _internal_mutable_xpr(); } inline void WindowFunc::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowFunc.xpr) } // uint32 winfnoid = 2 [json_name = "winfnoid"]; inline void WindowFunc::clear_winfnoid() { winfnoid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::_internal_winfnoid() const { return winfnoid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::winfnoid() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winfnoid) return _internal_winfnoid(); } inline void WindowFunc::_internal_set_winfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value) { winfnoid_ = value; } inline void WindowFunc::set_winfnoid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_winfnoid(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winfnoid) } // uint32 wintype = 3 [json_name = "wintype"]; inline void WindowFunc::clear_wintype() { wintype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::_internal_wintype() const { return wintype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::wintype() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.wintype) return _internal_wintype(); } inline void WindowFunc::_internal_set_wintype(::PROTOBUF_NAMESPACE_ID::uint32 value) { wintype_ = value; } inline void WindowFunc::set_wintype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_wintype(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.wintype) } // uint32 wincollid = 4 [json_name = "wincollid"]; inline void WindowFunc::clear_wincollid() { wincollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::_internal_wincollid() const { return wincollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::wincollid() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.wincollid) return _internal_wincollid(); } inline void WindowFunc::_internal_set_wincollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { wincollid_ = value; } inline void WindowFunc::set_wincollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_wincollid(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.wincollid) } // uint32 inputcollid = 5 [json_name = "inputcollid"]; inline void WindowFunc::clear_inputcollid() { inputcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::_internal_inputcollid() const { return inputcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.inputcollid) return _internal_inputcollid(); } inline void WindowFunc::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { inputcollid_ = value; } inline void WindowFunc::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.inputcollid) } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int WindowFunc::_internal_args_size() const { return args_.size(); } inline int WindowFunc::args_size() const { return _internal_args_size(); } inline void WindowFunc::clear_args() { args_.Clear(); } inline ::pg_query::Node* WindowFunc::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowFunc::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowFunc.args) return &args_; } inline const ::pg_query::Node& WindowFunc::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& WindowFunc::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.args) return _internal_args(index); } inline ::pg_query::Node* WindowFunc::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* WindowFunc::add_args() { // @@protoc_insertion_point(field_add:pg_query.WindowFunc.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowFunc::args() const { // @@protoc_insertion_point(field_list:pg_query.WindowFunc.args) return args_; } // .pg_query.Node aggfilter = 7 [json_name = "aggfilter"]; inline bool WindowFunc::_internal_has_aggfilter() const { return this != internal_default_instance() && aggfilter_ != nullptr; } inline bool WindowFunc::has_aggfilter() const { return _internal_has_aggfilter(); } inline void WindowFunc::clear_aggfilter() { if (GetArena() == nullptr && aggfilter_ != nullptr) { delete aggfilter_; } aggfilter_ = nullptr; } inline const ::pg_query::Node& WindowFunc::_internal_aggfilter() const { const ::pg_query::Node* p = aggfilter_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowFunc::aggfilter() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.aggfilter) return _internal_aggfilter(); } inline void WindowFunc::unsafe_arena_set_allocated_aggfilter( ::pg_query::Node* aggfilter) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(aggfilter_); } aggfilter_ = aggfilter; if (aggfilter) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowFunc.aggfilter) } inline ::pg_query::Node* WindowFunc::release_aggfilter() { ::pg_query::Node* temp = aggfilter_; aggfilter_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* WindowFunc::unsafe_arena_release_aggfilter() { // @@protoc_insertion_point(field_release:pg_query.WindowFunc.aggfilter) ::pg_query::Node* temp = aggfilter_; aggfilter_ = nullptr; return temp; } inline ::pg_query::Node* WindowFunc::_internal_mutable_aggfilter() { if (aggfilter_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); aggfilter_ = p; } return aggfilter_; } inline ::pg_query::Node* WindowFunc::mutable_aggfilter() { // @@protoc_insertion_point(field_mutable:pg_query.WindowFunc.aggfilter) return _internal_mutable_aggfilter(); } inline void WindowFunc::set_allocated_aggfilter(::pg_query::Node* aggfilter) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete aggfilter_; } if (aggfilter) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(aggfilter); if (message_arena != submessage_arena) { aggfilter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, aggfilter, submessage_arena); } } else { } aggfilter_ = aggfilter; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowFunc.aggfilter) } // uint32 winref = 8 [json_name = "winref"]; inline void WindowFunc::clear_winref() { winref_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::_internal_winref() const { return winref_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowFunc::winref() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winref) return _internal_winref(); } inline void WindowFunc::_internal_set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value) { winref_ = value; } inline void WindowFunc::set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_winref(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winref) } // bool winstar = 9 [json_name = "winstar"]; inline void WindowFunc::clear_winstar() { winstar_ = false; } inline bool WindowFunc::_internal_winstar() const { return winstar_; } inline bool WindowFunc::winstar() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winstar) return _internal_winstar(); } inline void WindowFunc::_internal_set_winstar(bool value) { winstar_ = value; } inline void WindowFunc::set_winstar(bool value) { _internal_set_winstar(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winstar) } // bool winagg = 10 [json_name = "winagg"]; inline void WindowFunc::clear_winagg() { winagg_ = false; } inline bool WindowFunc::_internal_winagg() const { return winagg_; } inline bool WindowFunc::winagg() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.winagg) return _internal_winagg(); } inline void WindowFunc::_internal_set_winagg(bool value) { winagg_ = value; } inline void WindowFunc::set_winagg(bool value) { _internal_set_winagg(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.winagg) } // int32 location = 11 [json_name = "location"]; inline void WindowFunc::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 WindowFunc::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 WindowFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.WindowFunc.location) return _internal_location(); } inline void WindowFunc::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void WindowFunc::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.WindowFunc.location) } // ------------------------------------------------------------------- // SubscriptingRef // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SubscriptingRef::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool SubscriptingRef::has_xpr() const { return _internal_has_xpr(); } inline void SubscriptingRef::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& SubscriptingRef::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubscriptingRef::xpr() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.xpr) return _internal_xpr(); } inline void SubscriptingRef::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.xpr) } inline ::pg_query::Node* SubscriptingRef::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* SubscriptingRef::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* SubscriptingRef::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.xpr) return _internal_mutable_xpr(); } inline void SubscriptingRef::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.xpr) } // uint32 refcontainertype = 2 [json_name = "refcontainertype"]; inline void SubscriptingRef::clear_refcontainertype() { refcontainertype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::_internal_refcontainertype() const { return refcontainertype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::refcontainertype() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refcontainertype) return _internal_refcontainertype(); } inline void SubscriptingRef::_internal_set_refcontainertype(::PROTOBUF_NAMESPACE_ID::uint32 value) { refcontainertype_ = value; } inline void SubscriptingRef::set_refcontainertype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_refcontainertype(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refcontainertype) } // uint32 refelemtype = 3 [json_name = "refelemtype"]; inline void SubscriptingRef::clear_refelemtype() { refelemtype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::_internal_refelemtype() const { return refelemtype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::refelemtype() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refelemtype) return _internal_refelemtype(); } inline void SubscriptingRef::_internal_set_refelemtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { refelemtype_ = value; } inline void SubscriptingRef::set_refelemtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_refelemtype(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refelemtype) } // int32 reftypmod = 4 [json_name = "reftypmod"]; inline void SubscriptingRef::clear_reftypmod() { reftypmod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 SubscriptingRef::_internal_reftypmod() const { return reftypmod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 SubscriptingRef::reftypmod() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.reftypmod) return _internal_reftypmod(); } inline void SubscriptingRef::_internal_set_reftypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { reftypmod_ = value; } inline void SubscriptingRef::set_reftypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_reftypmod(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.reftypmod) } // uint32 refcollid = 5 [json_name = "refcollid"]; inline void SubscriptingRef::clear_refcollid() { refcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::_internal_refcollid() const { return refcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SubscriptingRef::refcollid() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refcollid) return _internal_refcollid(); } inline void SubscriptingRef::_internal_set_refcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { refcollid_ = value; } inline void SubscriptingRef::set_refcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_refcollid(value); // @@protoc_insertion_point(field_set:pg_query.SubscriptingRef.refcollid) } // repeated .pg_query.Node refupperindexpr = 6 [json_name = "refupperindexpr"]; inline int SubscriptingRef::_internal_refupperindexpr_size() const { return refupperindexpr_.size(); } inline int SubscriptingRef::refupperindexpr_size() const { return _internal_refupperindexpr_size(); } inline void SubscriptingRef::clear_refupperindexpr() { refupperindexpr_.Clear(); } inline ::pg_query::Node* SubscriptingRef::mutable_refupperindexpr(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.refupperindexpr) return refupperindexpr_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubscriptingRef::mutable_refupperindexpr() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubscriptingRef.refupperindexpr) return &refupperindexpr_; } inline const ::pg_query::Node& SubscriptingRef::_internal_refupperindexpr(int index) const { return refupperindexpr_.Get(index); } inline const ::pg_query::Node& SubscriptingRef::refupperindexpr(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refupperindexpr) return _internal_refupperindexpr(index); } inline ::pg_query::Node* SubscriptingRef::_internal_add_refupperindexpr() { return refupperindexpr_.Add(); } inline ::pg_query::Node* SubscriptingRef::add_refupperindexpr() { // @@protoc_insertion_point(field_add:pg_query.SubscriptingRef.refupperindexpr) return _internal_add_refupperindexpr(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubscriptingRef::refupperindexpr() const { // @@protoc_insertion_point(field_list:pg_query.SubscriptingRef.refupperindexpr) return refupperindexpr_; } // repeated .pg_query.Node reflowerindexpr = 7 [json_name = "reflowerindexpr"]; inline int SubscriptingRef::_internal_reflowerindexpr_size() const { return reflowerindexpr_.size(); } inline int SubscriptingRef::reflowerindexpr_size() const { return _internal_reflowerindexpr_size(); } inline void SubscriptingRef::clear_reflowerindexpr() { reflowerindexpr_.Clear(); } inline ::pg_query::Node* SubscriptingRef::mutable_reflowerindexpr(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.reflowerindexpr) return reflowerindexpr_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubscriptingRef::mutable_reflowerindexpr() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubscriptingRef.reflowerindexpr) return &reflowerindexpr_; } inline const ::pg_query::Node& SubscriptingRef::_internal_reflowerindexpr(int index) const { return reflowerindexpr_.Get(index); } inline const ::pg_query::Node& SubscriptingRef::reflowerindexpr(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.reflowerindexpr) return _internal_reflowerindexpr(index); } inline ::pg_query::Node* SubscriptingRef::_internal_add_reflowerindexpr() { return reflowerindexpr_.Add(); } inline ::pg_query::Node* SubscriptingRef::add_reflowerindexpr() { // @@protoc_insertion_point(field_add:pg_query.SubscriptingRef.reflowerindexpr) return _internal_add_reflowerindexpr(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubscriptingRef::reflowerindexpr() const { // @@protoc_insertion_point(field_list:pg_query.SubscriptingRef.reflowerindexpr) return reflowerindexpr_; } // .pg_query.Node refexpr = 8 [json_name = "refexpr"]; inline bool SubscriptingRef::_internal_has_refexpr() const { return this != internal_default_instance() && refexpr_ != nullptr; } inline bool SubscriptingRef::has_refexpr() const { return _internal_has_refexpr(); } inline void SubscriptingRef::clear_refexpr() { if (GetArena() == nullptr && refexpr_ != nullptr) { delete refexpr_; } refexpr_ = nullptr; } inline const ::pg_query::Node& SubscriptingRef::_internal_refexpr() const { const ::pg_query::Node* p = refexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubscriptingRef::refexpr() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refexpr) return _internal_refexpr(); } inline void SubscriptingRef::unsafe_arena_set_allocated_refexpr( ::pg_query::Node* refexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(refexpr_); } refexpr_ = refexpr; if (refexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.refexpr) } inline ::pg_query::Node* SubscriptingRef::release_refexpr() { ::pg_query::Node* temp = refexpr_; refexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_refexpr() { // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.refexpr) ::pg_query::Node* temp = refexpr_; refexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubscriptingRef::_internal_mutable_refexpr() { if (refexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); refexpr_ = p; } return refexpr_; } inline ::pg_query::Node* SubscriptingRef::mutable_refexpr() { // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.refexpr) return _internal_mutable_refexpr(); } inline void SubscriptingRef::set_allocated_refexpr(::pg_query::Node* refexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete refexpr_; } if (refexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(refexpr); if (message_arena != submessage_arena) { refexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, refexpr, submessage_arena); } } else { } refexpr_ = refexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.refexpr) } // .pg_query.Node refassgnexpr = 9 [json_name = "refassgnexpr"]; inline bool SubscriptingRef::_internal_has_refassgnexpr() const { return this != internal_default_instance() && refassgnexpr_ != nullptr; } inline bool SubscriptingRef::has_refassgnexpr() const { return _internal_has_refassgnexpr(); } inline void SubscriptingRef::clear_refassgnexpr() { if (GetArena() == nullptr && refassgnexpr_ != nullptr) { delete refassgnexpr_; } refassgnexpr_ = nullptr; } inline const ::pg_query::Node& SubscriptingRef::_internal_refassgnexpr() const { const ::pg_query::Node* p = refassgnexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubscriptingRef::refassgnexpr() const { // @@protoc_insertion_point(field_get:pg_query.SubscriptingRef.refassgnexpr) return _internal_refassgnexpr(); } inline void SubscriptingRef::unsafe_arena_set_allocated_refassgnexpr( ::pg_query::Node* refassgnexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(refassgnexpr_); } refassgnexpr_ = refassgnexpr; if (refassgnexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubscriptingRef.refassgnexpr) } inline ::pg_query::Node* SubscriptingRef::release_refassgnexpr() { ::pg_query::Node* temp = refassgnexpr_; refassgnexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SubscriptingRef::unsafe_arena_release_refassgnexpr() { // @@protoc_insertion_point(field_release:pg_query.SubscriptingRef.refassgnexpr) ::pg_query::Node* temp = refassgnexpr_; refassgnexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubscriptingRef::_internal_mutable_refassgnexpr() { if (refassgnexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); refassgnexpr_ = p; } return refassgnexpr_; } inline ::pg_query::Node* SubscriptingRef::mutable_refassgnexpr() { // @@protoc_insertion_point(field_mutable:pg_query.SubscriptingRef.refassgnexpr) return _internal_mutable_refassgnexpr(); } inline void SubscriptingRef::set_allocated_refassgnexpr(::pg_query::Node* refassgnexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete refassgnexpr_; } if (refassgnexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(refassgnexpr); if (message_arena != submessage_arena) { refassgnexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, refassgnexpr, submessage_arena); } } else { } refassgnexpr_ = refassgnexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubscriptingRef.refassgnexpr) } // ------------------------------------------------------------------- // FuncExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool FuncExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool FuncExpr::has_xpr() const { return _internal_has_xpr(); } inline void FuncExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& FuncExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FuncExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.xpr) return _internal_xpr(); } inline void FuncExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncExpr.xpr) } inline ::pg_query::Node* FuncExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* FuncExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.FuncExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* FuncExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* FuncExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.FuncExpr.xpr) return _internal_mutable_xpr(); } inline void FuncExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.FuncExpr.xpr) } // uint32 funcid = 2 [json_name = "funcid"]; inline void FuncExpr::clear_funcid() { funcid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::_internal_funcid() const { return funcid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::funcid() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcid) return _internal_funcid(); } inline void FuncExpr::_internal_set_funcid(::PROTOBUF_NAMESPACE_ID::uint32 value) { funcid_ = value; } inline void FuncExpr::set_funcid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_funcid(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcid) } // uint32 funcresulttype = 3 [json_name = "funcresulttype"]; inline void FuncExpr::clear_funcresulttype() { funcresulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::_internal_funcresulttype() const { return funcresulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::funcresulttype() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcresulttype) return _internal_funcresulttype(); } inline void FuncExpr::_internal_set_funcresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { funcresulttype_ = value; } inline void FuncExpr::set_funcresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_funcresulttype(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcresulttype) } // bool funcretset = 4 [json_name = "funcretset"]; inline void FuncExpr::clear_funcretset() { funcretset_ = false; } inline bool FuncExpr::_internal_funcretset() const { return funcretset_; } inline bool FuncExpr::funcretset() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcretset) return _internal_funcretset(); } inline void FuncExpr::_internal_set_funcretset(bool value) { funcretset_ = value; } inline void FuncExpr::set_funcretset(bool value) { _internal_set_funcretset(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcretset) } // bool funcvariadic = 5 [json_name = "funcvariadic"]; inline void FuncExpr::clear_funcvariadic() { funcvariadic_ = false; } inline bool FuncExpr::_internal_funcvariadic() const { return funcvariadic_; } inline bool FuncExpr::funcvariadic() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcvariadic) return _internal_funcvariadic(); } inline void FuncExpr::_internal_set_funcvariadic(bool value) { funcvariadic_ = value; } inline void FuncExpr::set_funcvariadic(bool value) { _internal_set_funcvariadic(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcvariadic) } // .pg_query.CoercionForm funcformat = 6 [json_name = "funcformat"]; inline void FuncExpr::clear_funcformat() { funcformat_ = 0; } inline ::pg_query::CoercionForm FuncExpr::_internal_funcformat() const { return static_cast< ::pg_query::CoercionForm >(funcformat_); } inline ::pg_query::CoercionForm FuncExpr::funcformat() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funcformat) return _internal_funcformat(); } inline void FuncExpr::_internal_set_funcformat(::pg_query::CoercionForm value) { funcformat_ = value; } inline void FuncExpr::set_funcformat(::pg_query::CoercionForm value) { _internal_set_funcformat(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funcformat) } // uint32 funccollid = 7 [json_name = "funccollid"]; inline void FuncExpr::clear_funccollid() { funccollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::_internal_funccollid() const { return funccollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::funccollid() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.funccollid) return _internal_funccollid(); } inline void FuncExpr::_internal_set_funccollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { funccollid_ = value; } inline void FuncExpr::set_funccollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_funccollid(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.funccollid) } // uint32 inputcollid = 8 [json_name = "inputcollid"]; inline void FuncExpr::clear_inputcollid() { inputcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::_internal_inputcollid() const { return inputcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FuncExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.inputcollid) return _internal_inputcollid(); } inline void FuncExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { inputcollid_ = value; } inline void FuncExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.inputcollid) } // repeated .pg_query.Node args = 9 [json_name = "args"]; inline int FuncExpr::_internal_args_size() const { return args_.size(); } inline int FuncExpr::args_size() const { return _internal_args_size(); } inline void FuncExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* FuncExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FuncExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FuncExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncExpr.args) return &args_; } inline const ::pg_query::Node& FuncExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& FuncExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.args) return _internal_args(index); } inline ::pg_query::Node* FuncExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* FuncExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.FuncExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FuncExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.FuncExpr.args) return args_; } // int32 location = 10 [json_name = "location"]; inline void FuncExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 FuncExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 FuncExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.FuncExpr.location) return _internal_location(); } inline void FuncExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void FuncExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.FuncExpr.location) } // ------------------------------------------------------------------- // NamedArgExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NamedArgExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool NamedArgExpr::has_xpr() const { return _internal_has_xpr(); } inline void NamedArgExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& NamedArgExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NamedArgExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.xpr) return _internal_xpr(); } inline void NamedArgExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NamedArgExpr.xpr) } inline ::pg_query::Node* NamedArgExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* NamedArgExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* NamedArgExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* NamedArgExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.NamedArgExpr.xpr) return _internal_mutable_xpr(); } inline void NamedArgExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool NamedArgExpr::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool NamedArgExpr::has_arg() const { return _internal_has_arg(); } inline void NamedArgExpr::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& NamedArgExpr::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NamedArgExpr::arg() const { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.arg) return _internal_arg(); } inline void NamedArgExpr::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NamedArgExpr.arg) } inline ::pg_query::Node* NamedArgExpr::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* NamedArgExpr::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* NamedArgExpr::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* NamedArgExpr::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.NamedArgExpr.arg) return _internal_mutable_arg(); } inline void NamedArgExpr::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.arg) } // string name = 3 [json_name = "name"]; inline void NamedArgExpr::clear_name() { name_.ClearToEmpty(); } inline const std::string& NamedArgExpr::name() const { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.name) return _internal_name(); } inline void NamedArgExpr::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.name) } inline std::string* NamedArgExpr::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.NamedArgExpr.name) return _internal_mutable_name(); } inline const std::string& NamedArgExpr::_internal_name() const { return name_.Get(); } inline void NamedArgExpr::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void NamedArgExpr::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.NamedArgExpr.name) } inline void NamedArgExpr::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.NamedArgExpr.name) } inline void NamedArgExpr::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.NamedArgExpr.name) } inline std::string* NamedArgExpr::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* NamedArgExpr::release_name() { // @@protoc_insertion_point(field_release:pg_query.NamedArgExpr.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void NamedArgExpr::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.NamedArgExpr.name) } // int32 argnumber = 4 [json_name = "argnumber"]; inline void NamedArgExpr::clear_argnumber() { argnumber_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 NamedArgExpr::_internal_argnumber() const { return argnumber_; } inline ::PROTOBUF_NAMESPACE_ID::int32 NamedArgExpr::argnumber() const { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.argnumber) return _internal_argnumber(); } inline void NamedArgExpr::_internal_set_argnumber(::PROTOBUF_NAMESPACE_ID::int32 value) { argnumber_ = value; } inline void NamedArgExpr::set_argnumber(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_argnumber(value); // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.argnumber) } // int32 location = 5 [json_name = "location"]; inline void NamedArgExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 NamedArgExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 NamedArgExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.NamedArgExpr.location) return _internal_location(); } inline void NamedArgExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void NamedArgExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.NamedArgExpr.location) } // ------------------------------------------------------------------- // OpExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool OpExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool OpExpr::has_xpr() const { return _internal_has_xpr(); } inline void OpExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& OpExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& OpExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.xpr) return _internal_xpr(); } inline void OpExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OpExpr.xpr) } inline ::pg_query::Node* OpExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* OpExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.OpExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* OpExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* OpExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.OpExpr.xpr) return _internal_mutable_xpr(); } inline void OpExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.OpExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void OpExpr::clear_opno() { opno_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::_internal_opno() const { return opno_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opno) return _internal_opno(); } inline void OpExpr::_internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { opno_ = value; } inline void OpExpr::set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opno) } // uint32 opfuncid = 3 [json_name = "opfuncid"]; inline void OpExpr::clear_opfuncid() { opfuncid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::_internal_opfuncid() const { return opfuncid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::opfuncid() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opfuncid) return _internal_opfuncid(); } inline void OpExpr::_internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { opfuncid_ = value; } inline void OpExpr::set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opfuncid(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opfuncid) } // uint32 opresulttype = 4 [json_name = "opresulttype"]; inline void OpExpr::clear_opresulttype() { opresulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::_internal_opresulttype() const { return opresulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::opresulttype() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opresulttype) return _internal_opresulttype(); } inline void OpExpr::_internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { opresulttype_ = value; } inline void OpExpr::set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opresulttype(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opresulttype) } // bool opretset = 5 [json_name = "opretset"]; inline void OpExpr::clear_opretset() { opretset_ = false; } inline bool OpExpr::_internal_opretset() const { return opretset_; } inline bool OpExpr::opretset() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opretset) return _internal_opretset(); } inline void OpExpr::_internal_set_opretset(bool value) { opretset_ = value; } inline void OpExpr::set_opretset(bool value) { _internal_set_opretset(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opretset) } // uint32 opcollid = 6 [json_name = "opcollid"]; inline void OpExpr::clear_opcollid() { opcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::_internal_opcollid() const { return opcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::opcollid() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.opcollid) return _internal_opcollid(); } inline void OpExpr::_internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { opcollid_ = value; } inline void OpExpr::set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opcollid(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.opcollid) } // uint32 inputcollid = 7 [json_name = "inputcollid"]; inline void OpExpr::clear_inputcollid() { inputcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::_internal_inputcollid() const { return inputcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OpExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.inputcollid) return _internal_inputcollid(); } inline void OpExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { inputcollid_ = value; } inline void OpExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.inputcollid) } // repeated .pg_query.Node args = 8 [json_name = "args"]; inline int OpExpr::_internal_args_size() const { return args_.size(); } inline int OpExpr::args_size() const { return _internal_args_size(); } inline void OpExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* OpExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OpExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OpExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.OpExpr.args) return &args_; } inline const ::pg_query::Node& OpExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& OpExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.args) return _internal_args(index); } inline ::pg_query::Node* OpExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* OpExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.OpExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OpExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.OpExpr.args) return args_; } // int32 location = 9 [json_name = "location"]; inline void OpExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 OpExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 OpExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.OpExpr.location) return _internal_location(); } inline void OpExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void OpExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.OpExpr.location) } // ------------------------------------------------------------------- // DistinctExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool DistinctExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool DistinctExpr::has_xpr() const { return _internal_has_xpr(); } inline void DistinctExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& DistinctExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& DistinctExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.xpr) return _internal_xpr(); } inline void DistinctExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DistinctExpr.xpr) } inline ::pg_query::Node* DistinctExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* DistinctExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.DistinctExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* DistinctExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* DistinctExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.DistinctExpr.xpr) return _internal_mutable_xpr(); } inline void DistinctExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.DistinctExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void DistinctExpr::clear_opno() { opno_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::_internal_opno() const { return opno_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opno) return _internal_opno(); } inline void DistinctExpr::_internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { opno_ = value; } inline void DistinctExpr::set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opno) } // uint32 opfuncid = 3 [json_name = "opfuncid"]; inline void DistinctExpr::clear_opfuncid() { opfuncid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::_internal_opfuncid() const { return opfuncid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::opfuncid() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opfuncid) return _internal_opfuncid(); } inline void DistinctExpr::_internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { opfuncid_ = value; } inline void DistinctExpr::set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opfuncid(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opfuncid) } // uint32 opresulttype = 4 [json_name = "opresulttype"]; inline void DistinctExpr::clear_opresulttype() { opresulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::_internal_opresulttype() const { return opresulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::opresulttype() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opresulttype) return _internal_opresulttype(); } inline void DistinctExpr::_internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { opresulttype_ = value; } inline void DistinctExpr::set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opresulttype(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opresulttype) } // bool opretset = 5 [json_name = "opretset"]; inline void DistinctExpr::clear_opretset() { opretset_ = false; } inline bool DistinctExpr::_internal_opretset() const { return opretset_; } inline bool DistinctExpr::opretset() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opretset) return _internal_opretset(); } inline void DistinctExpr::_internal_set_opretset(bool value) { opretset_ = value; } inline void DistinctExpr::set_opretset(bool value) { _internal_set_opretset(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opretset) } // uint32 opcollid = 6 [json_name = "opcollid"]; inline void DistinctExpr::clear_opcollid() { opcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::_internal_opcollid() const { return opcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::opcollid() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.opcollid) return _internal_opcollid(); } inline void DistinctExpr::_internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { opcollid_ = value; } inline void DistinctExpr::set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opcollid(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.opcollid) } // uint32 inputcollid = 7 [json_name = "inputcollid"]; inline void DistinctExpr::clear_inputcollid() { inputcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::_internal_inputcollid() const { return inputcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 DistinctExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.inputcollid) return _internal_inputcollid(); } inline void DistinctExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { inputcollid_ = value; } inline void DistinctExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.inputcollid) } // repeated .pg_query.Node args = 8 [json_name = "args"]; inline int DistinctExpr::_internal_args_size() const { return args_.size(); } inline int DistinctExpr::args_size() const { return _internal_args_size(); } inline void DistinctExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* DistinctExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DistinctExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DistinctExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.DistinctExpr.args) return &args_; } inline const ::pg_query::Node& DistinctExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& DistinctExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.args) return _internal_args(index); } inline ::pg_query::Node* DistinctExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* DistinctExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.DistinctExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DistinctExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.DistinctExpr.args) return args_; } // int32 location = 9 [json_name = "location"]; inline void DistinctExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 DistinctExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 DistinctExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.DistinctExpr.location) return _internal_location(); } inline void DistinctExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void DistinctExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.DistinctExpr.location) } // ------------------------------------------------------------------- // NullIfExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NullIfExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool NullIfExpr::has_xpr() const { return _internal_has_xpr(); } inline void NullIfExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& NullIfExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NullIfExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.xpr) return _internal_xpr(); } inline void NullIfExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullIfExpr.xpr) } inline ::pg_query::Node* NullIfExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* NullIfExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.NullIfExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* NullIfExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* NullIfExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.NullIfExpr.xpr) return _internal_mutable_xpr(); } inline void NullIfExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.NullIfExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void NullIfExpr::clear_opno() { opno_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::_internal_opno() const { return opno_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opno) return _internal_opno(); } inline void NullIfExpr::_internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { opno_ = value; } inline void NullIfExpr::set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opno) } // uint32 opfuncid = 3 [json_name = "opfuncid"]; inline void NullIfExpr::clear_opfuncid() { opfuncid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::_internal_opfuncid() const { return opfuncid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::opfuncid() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opfuncid) return _internal_opfuncid(); } inline void NullIfExpr::_internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { opfuncid_ = value; } inline void NullIfExpr::set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opfuncid(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opfuncid) } // uint32 opresulttype = 4 [json_name = "opresulttype"]; inline void NullIfExpr::clear_opresulttype() { opresulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::_internal_opresulttype() const { return opresulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::opresulttype() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opresulttype) return _internal_opresulttype(); } inline void NullIfExpr::_internal_set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { opresulttype_ = value; } inline void NullIfExpr::set_opresulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opresulttype(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opresulttype) } // bool opretset = 5 [json_name = "opretset"]; inline void NullIfExpr::clear_opretset() { opretset_ = false; } inline bool NullIfExpr::_internal_opretset() const { return opretset_; } inline bool NullIfExpr::opretset() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opretset) return _internal_opretset(); } inline void NullIfExpr::_internal_set_opretset(bool value) { opretset_ = value; } inline void NullIfExpr::set_opretset(bool value) { _internal_set_opretset(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opretset) } // uint32 opcollid = 6 [json_name = "opcollid"]; inline void NullIfExpr::clear_opcollid() { opcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::_internal_opcollid() const { return opcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::opcollid() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.opcollid) return _internal_opcollid(); } inline void NullIfExpr::_internal_set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { opcollid_ = value; } inline void NullIfExpr::set_opcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opcollid(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.opcollid) } // uint32 inputcollid = 7 [json_name = "inputcollid"]; inline void NullIfExpr::clear_inputcollid() { inputcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::_internal_inputcollid() const { return inputcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NullIfExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.inputcollid) return _internal_inputcollid(); } inline void NullIfExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { inputcollid_ = value; } inline void NullIfExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.inputcollid) } // repeated .pg_query.Node args = 8 [json_name = "args"]; inline int NullIfExpr::_internal_args_size() const { return args_.size(); } inline int NullIfExpr::args_size() const { return _internal_args_size(); } inline void NullIfExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* NullIfExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.NullIfExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* NullIfExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.NullIfExpr.args) return &args_; } inline const ::pg_query::Node& NullIfExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& NullIfExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.args) return _internal_args(index); } inline ::pg_query::Node* NullIfExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* NullIfExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.NullIfExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& NullIfExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.NullIfExpr.args) return args_; } // int32 location = 9 [json_name = "location"]; inline void NullIfExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 NullIfExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 NullIfExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.NullIfExpr.location) return _internal_location(); } inline void NullIfExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void NullIfExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.NullIfExpr.location) } // ------------------------------------------------------------------- // ScalarArrayOpExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ScalarArrayOpExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool ScalarArrayOpExpr::has_xpr() const { return _internal_has_xpr(); } inline void ScalarArrayOpExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& ScalarArrayOpExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ScalarArrayOpExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.xpr) return _internal_xpr(); } inline void ScalarArrayOpExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ScalarArrayOpExpr.xpr) } inline ::pg_query::Node* ScalarArrayOpExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ScalarArrayOpExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.ScalarArrayOpExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* ScalarArrayOpExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* ScalarArrayOpExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.ScalarArrayOpExpr.xpr) return _internal_mutable_xpr(); } inline void ScalarArrayOpExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.ScalarArrayOpExpr.xpr) } // uint32 opno = 2 [json_name = "opno"]; inline void ScalarArrayOpExpr::clear_opno() { opno_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::_internal_opno() const { return opno_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::opno() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.opno) return _internal_opno(); } inline void ScalarArrayOpExpr::_internal_set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { opno_ = value; } inline void ScalarArrayOpExpr::set_opno(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opno(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.opno) } // uint32 opfuncid = 3 [json_name = "opfuncid"]; inline void ScalarArrayOpExpr::clear_opfuncid() { opfuncid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::_internal_opfuncid() const { return opfuncid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::opfuncid() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.opfuncid) return _internal_opfuncid(); } inline void ScalarArrayOpExpr::_internal_set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { opfuncid_ = value; } inline void ScalarArrayOpExpr::set_opfuncid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_opfuncid(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.opfuncid) } // bool use_or = 4 [json_name = "useOr"]; inline void ScalarArrayOpExpr::clear_use_or() { use_or_ = false; } inline bool ScalarArrayOpExpr::_internal_use_or() const { return use_or_; } inline bool ScalarArrayOpExpr::use_or() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.use_or) return _internal_use_or(); } inline void ScalarArrayOpExpr::_internal_set_use_or(bool value) { use_or_ = value; } inline void ScalarArrayOpExpr::set_use_or(bool value) { _internal_set_use_or(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.use_or) } // uint32 inputcollid = 5 [json_name = "inputcollid"]; inline void ScalarArrayOpExpr::clear_inputcollid() { inputcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::_internal_inputcollid() const { return inputcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ScalarArrayOpExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.inputcollid) return _internal_inputcollid(); } inline void ScalarArrayOpExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { inputcollid_ = value; } inline void ScalarArrayOpExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.inputcollid) } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int ScalarArrayOpExpr::_internal_args_size() const { return args_.size(); } inline int ScalarArrayOpExpr::args_size() const { return _internal_args_size(); } inline void ScalarArrayOpExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* ScalarArrayOpExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ScalarArrayOpExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ScalarArrayOpExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.ScalarArrayOpExpr.args) return &args_; } inline const ::pg_query::Node& ScalarArrayOpExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& ScalarArrayOpExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.args) return _internal_args(index); } inline ::pg_query::Node* ScalarArrayOpExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* ScalarArrayOpExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.ScalarArrayOpExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ScalarArrayOpExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.ScalarArrayOpExpr.args) return args_; } // int32 location = 7 [json_name = "location"]; inline void ScalarArrayOpExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ScalarArrayOpExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ScalarArrayOpExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ScalarArrayOpExpr.location) return _internal_location(); } inline void ScalarArrayOpExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void ScalarArrayOpExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ScalarArrayOpExpr.location) } // ------------------------------------------------------------------- // BoolExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool BoolExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool BoolExpr::has_xpr() const { return _internal_has_xpr(); } inline void BoolExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& BoolExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& BoolExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.xpr) return _internal_xpr(); } inline void BoolExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BoolExpr.xpr) } inline ::pg_query::Node* BoolExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* BoolExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.BoolExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* BoolExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* BoolExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.BoolExpr.xpr) return _internal_mutable_xpr(); } inline void BoolExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.BoolExpr.xpr) } // .pg_query.BoolExprType boolop = 2 [json_name = "boolop"]; inline void BoolExpr::clear_boolop() { boolop_ = 0; } inline ::pg_query::BoolExprType BoolExpr::_internal_boolop() const { return static_cast< ::pg_query::BoolExprType >(boolop_); } inline ::pg_query::BoolExprType BoolExpr::boolop() const { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.boolop) return _internal_boolop(); } inline void BoolExpr::_internal_set_boolop(::pg_query::BoolExprType value) { boolop_ = value; } inline void BoolExpr::set_boolop(::pg_query::BoolExprType value) { _internal_set_boolop(value); // @@protoc_insertion_point(field_set:pg_query.BoolExpr.boolop) } // repeated .pg_query.Node args = 3 [json_name = "args"]; inline int BoolExpr::_internal_args_size() const { return args_.size(); } inline int BoolExpr::args_size() const { return _internal_args_size(); } inline void BoolExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* BoolExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.BoolExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* BoolExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.BoolExpr.args) return &args_; } inline const ::pg_query::Node& BoolExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& BoolExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.args) return _internal_args(index); } inline ::pg_query::Node* BoolExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* BoolExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.BoolExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& BoolExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.BoolExpr.args) return args_; } // int32 location = 4 [json_name = "location"]; inline void BoolExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 BoolExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 BoolExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.BoolExpr.location) return _internal_location(); } inline void BoolExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void BoolExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.BoolExpr.location) } // ------------------------------------------------------------------- // SubLink // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SubLink::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool SubLink::has_xpr() const { return _internal_has_xpr(); } inline void SubLink::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& SubLink::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubLink::xpr() const { // @@protoc_insertion_point(field_get:pg_query.SubLink.xpr) return _internal_xpr(); } inline void SubLink::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.xpr) } inline ::pg_query::Node* SubLink::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SubLink::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.SubLink.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* SubLink::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* SubLink::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.SubLink.xpr) return _internal_mutable_xpr(); } inline void SubLink::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubLink.xpr) } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; inline void SubLink::clear_sub_link_type() { sub_link_type_ = 0; } inline ::pg_query::SubLinkType SubLink::_internal_sub_link_type() const { return static_cast< ::pg_query::SubLinkType >(sub_link_type_); } inline ::pg_query::SubLinkType SubLink::sub_link_type() const { // @@protoc_insertion_point(field_get:pg_query.SubLink.sub_link_type) return _internal_sub_link_type(); } inline void SubLink::_internal_set_sub_link_type(::pg_query::SubLinkType value) { sub_link_type_ = value; } inline void SubLink::set_sub_link_type(::pg_query::SubLinkType value) { _internal_set_sub_link_type(value); // @@protoc_insertion_point(field_set:pg_query.SubLink.sub_link_type) } // int32 sub_link_id = 3 [json_name = "subLinkId"]; inline void SubLink::clear_sub_link_id() { sub_link_id_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 SubLink::_internal_sub_link_id() const { return sub_link_id_; } inline ::PROTOBUF_NAMESPACE_ID::int32 SubLink::sub_link_id() const { // @@protoc_insertion_point(field_get:pg_query.SubLink.sub_link_id) return _internal_sub_link_id(); } inline void SubLink::_internal_set_sub_link_id(::PROTOBUF_NAMESPACE_ID::int32 value) { sub_link_id_ = value; } inline void SubLink::set_sub_link_id(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_sub_link_id(value); // @@protoc_insertion_point(field_set:pg_query.SubLink.sub_link_id) } // .pg_query.Node testexpr = 4 [json_name = "testexpr"]; inline bool SubLink::_internal_has_testexpr() const { return this != internal_default_instance() && testexpr_ != nullptr; } inline bool SubLink::has_testexpr() const { return _internal_has_testexpr(); } inline void SubLink::clear_testexpr() { if (GetArena() == nullptr && testexpr_ != nullptr) { delete testexpr_; } testexpr_ = nullptr; } inline const ::pg_query::Node& SubLink::_internal_testexpr() const { const ::pg_query::Node* p = testexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubLink::testexpr() const { // @@protoc_insertion_point(field_get:pg_query.SubLink.testexpr) return _internal_testexpr(); } inline void SubLink::unsafe_arena_set_allocated_testexpr( ::pg_query::Node* testexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(testexpr_); } testexpr_ = testexpr; if (testexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.testexpr) } inline ::pg_query::Node* SubLink::release_testexpr() { ::pg_query::Node* temp = testexpr_; testexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SubLink::unsafe_arena_release_testexpr() { // @@protoc_insertion_point(field_release:pg_query.SubLink.testexpr) ::pg_query::Node* temp = testexpr_; testexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubLink::_internal_mutable_testexpr() { if (testexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); testexpr_ = p; } return testexpr_; } inline ::pg_query::Node* SubLink::mutable_testexpr() { // @@protoc_insertion_point(field_mutable:pg_query.SubLink.testexpr) return _internal_mutable_testexpr(); } inline void SubLink::set_allocated_testexpr(::pg_query::Node* testexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete testexpr_; } if (testexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(testexpr); if (message_arena != submessage_arena) { testexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, testexpr, submessage_arena); } } else { } testexpr_ = testexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubLink.testexpr) } // repeated .pg_query.Node oper_name = 5 [json_name = "operName"]; inline int SubLink::_internal_oper_name_size() const { return oper_name_.size(); } inline int SubLink::oper_name_size() const { return _internal_oper_name_size(); } inline void SubLink::clear_oper_name() { oper_name_.Clear(); } inline ::pg_query::Node* SubLink::mutable_oper_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubLink.oper_name) return oper_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubLink::mutable_oper_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubLink.oper_name) return &oper_name_; } inline const ::pg_query::Node& SubLink::_internal_oper_name(int index) const { return oper_name_.Get(index); } inline const ::pg_query::Node& SubLink::oper_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubLink.oper_name) return _internal_oper_name(index); } inline ::pg_query::Node* SubLink::_internal_add_oper_name() { return oper_name_.Add(); } inline ::pg_query::Node* SubLink::add_oper_name() { // @@protoc_insertion_point(field_add:pg_query.SubLink.oper_name) return _internal_add_oper_name(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubLink::oper_name() const { // @@protoc_insertion_point(field_list:pg_query.SubLink.oper_name) return oper_name_; } // .pg_query.Node subselect = 6 [json_name = "subselect"]; inline bool SubLink::_internal_has_subselect() const { return this != internal_default_instance() && subselect_ != nullptr; } inline bool SubLink::has_subselect() const { return _internal_has_subselect(); } inline void SubLink::clear_subselect() { if (GetArena() == nullptr && subselect_ != nullptr) { delete subselect_; } subselect_ = nullptr; } inline const ::pg_query::Node& SubLink::_internal_subselect() const { const ::pg_query::Node* p = subselect_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubLink::subselect() const { // @@protoc_insertion_point(field_get:pg_query.SubLink.subselect) return _internal_subselect(); } inline void SubLink::unsafe_arena_set_allocated_subselect( ::pg_query::Node* subselect) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(subselect_); } subselect_ = subselect; if (subselect) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubLink.subselect) } inline ::pg_query::Node* SubLink::release_subselect() { ::pg_query::Node* temp = subselect_; subselect_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SubLink::unsafe_arena_release_subselect() { // @@protoc_insertion_point(field_release:pg_query.SubLink.subselect) ::pg_query::Node* temp = subselect_; subselect_ = nullptr; return temp; } inline ::pg_query::Node* SubLink::_internal_mutable_subselect() { if (subselect_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); subselect_ = p; } return subselect_; } inline ::pg_query::Node* SubLink::mutable_subselect() { // @@protoc_insertion_point(field_mutable:pg_query.SubLink.subselect) return _internal_mutable_subselect(); } inline void SubLink::set_allocated_subselect(::pg_query::Node* subselect) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete subselect_; } if (subselect) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(subselect); if (message_arena != submessage_arena) { subselect = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, subselect, submessage_arena); } } else { } subselect_ = subselect; // @@protoc_insertion_point(field_set_allocated:pg_query.SubLink.subselect) } // int32 location = 7 [json_name = "location"]; inline void SubLink::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 SubLink::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 SubLink::location() const { // @@protoc_insertion_point(field_get:pg_query.SubLink.location) return _internal_location(); } inline void SubLink::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void SubLink::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SubLink.location) } // ------------------------------------------------------------------- // SubPlan // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SubPlan::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool SubPlan::has_xpr() const { return _internal_has_xpr(); } inline void SubPlan::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& SubPlan::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubPlan::xpr() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.xpr) return _internal_xpr(); } inline void SubPlan::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubPlan.xpr) } inline ::pg_query::Node* SubPlan::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SubPlan::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.SubPlan.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* SubPlan::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* SubPlan::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.xpr) return _internal_mutable_xpr(); } inline void SubPlan::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubPlan.xpr) } // .pg_query.SubLinkType sub_link_type = 2 [json_name = "subLinkType"]; inline void SubPlan::clear_sub_link_type() { sub_link_type_ = 0; } inline ::pg_query::SubLinkType SubPlan::_internal_sub_link_type() const { return static_cast< ::pg_query::SubLinkType >(sub_link_type_); } inline ::pg_query::SubLinkType SubPlan::sub_link_type() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.sub_link_type) return _internal_sub_link_type(); } inline void SubPlan::_internal_set_sub_link_type(::pg_query::SubLinkType value) { sub_link_type_ = value; } inline void SubPlan::set_sub_link_type(::pg_query::SubLinkType value) { _internal_set_sub_link_type(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.sub_link_type) } // .pg_query.Node testexpr = 3 [json_name = "testexpr"]; inline bool SubPlan::_internal_has_testexpr() const { return this != internal_default_instance() && testexpr_ != nullptr; } inline bool SubPlan::has_testexpr() const { return _internal_has_testexpr(); } inline void SubPlan::clear_testexpr() { if (GetArena() == nullptr && testexpr_ != nullptr) { delete testexpr_; } testexpr_ = nullptr; } inline const ::pg_query::Node& SubPlan::_internal_testexpr() const { const ::pg_query::Node* p = testexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SubPlan::testexpr() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.testexpr) return _internal_testexpr(); } inline void SubPlan::unsafe_arena_set_allocated_testexpr( ::pg_query::Node* testexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(testexpr_); } testexpr_ = testexpr; if (testexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SubPlan.testexpr) } inline ::pg_query::Node* SubPlan::release_testexpr() { ::pg_query::Node* temp = testexpr_; testexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SubPlan::unsafe_arena_release_testexpr() { // @@protoc_insertion_point(field_release:pg_query.SubPlan.testexpr) ::pg_query::Node* temp = testexpr_; testexpr_ = nullptr; return temp; } inline ::pg_query::Node* SubPlan::_internal_mutable_testexpr() { if (testexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); testexpr_ = p; } return testexpr_; } inline ::pg_query::Node* SubPlan::mutable_testexpr() { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.testexpr) return _internal_mutable_testexpr(); } inline void SubPlan::set_allocated_testexpr(::pg_query::Node* testexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete testexpr_; } if (testexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(testexpr); if (message_arena != submessage_arena) { testexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, testexpr, submessage_arena); } } else { } testexpr_ = testexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SubPlan.testexpr) } // repeated .pg_query.Node param_ids = 4 [json_name = "paramIds"]; inline int SubPlan::_internal_param_ids_size() const { return param_ids_.size(); } inline int SubPlan::param_ids_size() const { return _internal_param_ids_size(); } inline void SubPlan::clear_param_ids() { param_ids_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_param_ids(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.param_ids) return param_ids_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubPlan::mutable_param_ids() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.param_ids) return ¶m_ids_; } inline const ::pg_query::Node& SubPlan::_internal_param_ids(int index) const { return param_ids_.Get(index); } inline const ::pg_query::Node& SubPlan::param_ids(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.param_ids) return _internal_param_ids(index); } inline ::pg_query::Node* SubPlan::_internal_add_param_ids() { return param_ids_.Add(); } inline ::pg_query::Node* SubPlan::add_param_ids() { // @@protoc_insertion_point(field_add:pg_query.SubPlan.param_ids) return _internal_add_param_ids(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubPlan::param_ids() const { // @@protoc_insertion_point(field_list:pg_query.SubPlan.param_ids) return param_ids_; } // int32 plan_id = 5 [json_name = "plan_id"]; inline void SubPlan::clear_plan_id() { plan_id_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 SubPlan::_internal_plan_id() const { return plan_id_; } inline ::PROTOBUF_NAMESPACE_ID::int32 SubPlan::plan_id() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.plan_id) return _internal_plan_id(); } inline void SubPlan::_internal_set_plan_id(::PROTOBUF_NAMESPACE_ID::int32 value) { plan_id_ = value; } inline void SubPlan::set_plan_id(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_plan_id(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.plan_id) } // string plan_name = 6 [json_name = "plan_name"]; inline void SubPlan::clear_plan_name() { plan_name_.ClearToEmpty(); } inline const std::string& SubPlan::plan_name() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.plan_name) return _internal_plan_name(); } inline void SubPlan::set_plan_name(const std::string& value) { _internal_set_plan_name(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.plan_name) } inline std::string* SubPlan::mutable_plan_name() { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.plan_name) return _internal_mutable_plan_name(); } inline const std::string& SubPlan::_internal_plan_name() const { return plan_name_.Get(); } inline void SubPlan::_internal_set_plan_name(const std::string& value) { plan_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void SubPlan::set_plan_name(std::string&& value) { plan_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.SubPlan.plan_name) } inline void SubPlan::set_plan_name(const char* value) { GOOGLE_DCHECK(value != nullptr); plan_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.SubPlan.plan_name) } inline void SubPlan::set_plan_name(const char* value, size_t size) { plan_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.SubPlan.plan_name) } inline std::string* SubPlan::_internal_mutable_plan_name() { return plan_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* SubPlan::release_plan_name() { // @@protoc_insertion_point(field_release:pg_query.SubPlan.plan_name) return plan_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void SubPlan::set_allocated_plan_name(std::string* plan_name) { if (plan_name != nullptr) { } else { } plan_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), plan_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.SubPlan.plan_name) } // uint32 first_col_type = 7 [json_name = "firstColType"]; inline void SubPlan::clear_first_col_type() { first_col_type_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SubPlan::_internal_first_col_type() const { return first_col_type_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SubPlan::first_col_type() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.first_col_type) return _internal_first_col_type(); } inline void SubPlan::_internal_set_first_col_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { first_col_type_ = value; } inline void SubPlan::set_first_col_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_first_col_type(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.first_col_type) } // int32 first_col_typmod = 8 [json_name = "firstColTypmod"]; inline void SubPlan::clear_first_col_typmod() { first_col_typmod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 SubPlan::_internal_first_col_typmod() const { return first_col_typmod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 SubPlan::first_col_typmod() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.first_col_typmod) return _internal_first_col_typmod(); } inline void SubPlan::_internal_set_first_col_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { first_col_typmod_ = value; } inline void SubPlan::set_first_col_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_first_col_typmod(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.first_col_typmod) } // uint32 first_col_collation = 9 [json_name = "firstColCollation"]; inline void SubPlan::clear_first_col_collation() { first_col_collation_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SubPlan::_internal_first_col_collation() const { return first_col_collation_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SubPlan::first_col_collation() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.first_col_collation) return _internal_first_col_collation(); } inline void SubPlan::_internal_set_first_col_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { first_col_collation_ = value; } inline void SubPlan::set_first_col_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_first_col_collation(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.first_col_collation) } // bool use_hash_table = 10 [json_name = "useHashTable"]; inline void SubPlan::clear_use_hash_table() { use_hash_table_ = false; } inline bool SubPlan::_internal_use_hash_table() const { return use_hash_table_; } inline bool SubPlan::use_hash_table() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.use_hash_table) return _internal_use_hash_table(); } inline void SubPlan::_internal_set_use_hash_table(bool value) { use_hash_table_ = value; } inline void SubPlan::set_use_hash_table(bool value) { _internal_set_use_hash_table(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.use_hash_table) } // bool unknown_eq_false = 11 [json_name = "unknownEqFalse"]; inline void SubPlan::clear_unknown_eq_false() { unknown_eq_false_ = false; } inline bool SubPlan::_internal_unknown_eq_false() const { return unknown_eq_false_; } inline bool SubPlan::unknown_eq_false() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.unknown_eq_false) return _internal_unknown_eq_false(); } inline void SubPlan::_internal_set_unknown_eq_false(bool value) { unknown_eq_false_ = value; } inline void SubPlan::set_unknown_eq_false(bool value) { _internal_set_unknown_eq_false(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.unknown_eq_false) } // bool parallel_safe = 12 [json_name = "parallel_safe"]; inline void SubPlan::clear_parallel_safe() { parallel_safe_ = false; } inline bool SubPlan::_internal_parallel_safe() const { return parallel_safe_; } inline bool SubPlan::parallel_safe() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.parallel_safe) return _internal_parallel_safe(); } inline void SubPlan::_internal_set_parallel_safe(bool value) { parallel_safe_ = value; } inline void SubPlan::set_parallel_safe(bool value) { _internal_set_parallel_safe(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.parallel_safe) } // repeated .pg_query.Node set_param = 13 [json_name = "setParam"]; inline int SubPlan::_internal_set_param_size() const { return set_param_.size(); } inline int SubPlan::set_param_size() const { return _internal_set_param_size(); } inline void SubPlan::clear_set_param() { set_param_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_set_param(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.set_param) return set_param_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubPlan::mutable_set_param() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.set_param) return &set_param_; } inline const ::pg_query::Node& SubPlan::_internal_set_param(int index) const { return set_param_.Get(index); } inline const ::pg_query::Node& SubPlan::set_param(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.set_param) return _internal_set_param(index); } inline ::pg_query::Node* SubPlan::_internal_add_set_param() { return set_param_.Add(); } inline ::pg_query::Node* SubPlan::add_set_param() { // @@protoc_insertion_point(field_add:pg_query.SubPlan.set_param) return _internal_add_set_param(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubPlan::set_param() const { // @@protoc_insertion_point(field_list:pg_query.SubPlan.set_param) return set_param_; } // repeated .pg_query.Node par_param = 14 [json_name = "parParam"]; inline int SubPlan::_internal_par_param_size() const { return par_param_.size(); } inline int SubPlan::par_param_size() const { return _internal_par_param_size(); } inline void SubPlan::clear_par_param() { par_param_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_par_param(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.par_param) return par_param_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubPlan::mutable_par_param() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.par_param) return &par_param_; } inline const ::pg_query::Node& SubPlan::_internal_par_param(int index) const { return par_param_.Get(index); } inline const ::pg_query::Node& SubPlan::par_param(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.par_param) return _internal_par_param(index); } inline ::pg_query::Node* SubPlan::_internal_add_par_param() { return par_param_.Add(); } inline ::pg_query::Node* SubPlan::add_par_param() { // @@protoc_insertion_point(field_add:pg_query.SubPlan.par_param) return _internal_add_par_param(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubPlan::par_param() const { // @@protoc_insertion_point(field_list:pg_query.SubPlan.par_param) return par_param_; } // repeated .pg_query.Node args = 15 [json_name = "args"]; inline int SubPlan::_internal_args_size() const { return args_.size(); } inline int SubPlan::args_size() const { return _internal_args_size(); } inline void SubPlan::clear_args() { args_.Clear(); } inline ::pg_query::Node* SubPlan::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SubPlan.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SubPlan::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.SubPlan.args) return &args_; } inline const ::pg_query::Node& SubPlan::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& SubPlan::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.args) return _internal_args(index); } inline ::pg_query::Node* SubPlan::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* SubPlan::add_args() { // @@protoc_insertion_point(field_add:pg_query.SubPlan.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SubPlan::args() const { // @@protoc_insertion_point(field_list:pg_query.SubPlan.args) return args_; } // double startup_cost = 16 [json_name = "startup_cost"]; inline void SubPlan::clear_startup_cost() { startup_cost_ = 0; } inline double SubPlan::_internal_startup_cost() const { return startup_cost_; } inline double SubPlan::startup_cost() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.startup_cost) return _internal_startup_cost(); } inline void SubPlan::_internal_set_startup_cost(double value) { startup_cost_ = value; } inline void SubPlan::set_startup_cost(double value) { _internal_set_startup_cost(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.startup_cost) } // double per_call_cost = 17 [json_name = "per_call_cost"]; inline void SubPlan::clear_per_call_cost() { per_call_cost_ = 0; } inline double SubPlan::_internal_per_call_cost() const { return per_call_cost_; } inline double SubPlan::per_call_cost() const { // @@protoc_insertion_point(field_get:pg_query.SubPlan.per_call_cost) return _internal_per_call_cost(); } inline void SubPlan::_internal_set_per_call_cost(double value) { per_call_cost_ = value; } inline void SubPlan::set_per_call_cost(double value) { _internal_set_per_call_cost(value); // @@protoc_insertion_point(field_set:pg_query.SubPlan.per_call_cost) } // ------------------------------------------------------------------- // AlternativeSubPlan // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool AlternativeSubPlan::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool AlternativeSubPlan::has_xpr() const { return _internal_has_xpr(); } inline void AlternativeSubPlan::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& AlternativeSubPlan::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlternativeSubPlan::xpr() const { // @@protoc_insertion_point(field_get:pg_query.AlternativeSubPlan.xpr) return _internal_xpr(); } inline void AlternativeSubPlan::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlternativeSubPlan.xpr) } inline ::pg_query::Node* AlternativeSubPlan::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* AlternativeSubPlan::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.AlternativeSubPlan.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* AlternativeSubPlan::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* AlternativeSubPlan::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.AlternativeSubPlan.xpr) return _internal_mutable_xpr(); } inline void AlternativeSubPlan::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.AlternativeSubPlan.xpr) } // repeated .pg_query.Node subplans = 2 [json_name = "subplans"]; inline int AlternativeSubPlan::_internal_subplans_size() const { return subplans_.size(); } inline int AlternativeSubPlan::subplans_size() const { return _internal_subplans_size(); } inline void AlternativeSubPlan::clear_subplans() { subplans_.Clear(); } inline ::pg_query::Node* AlternativeSubPlan::mutable_subplans(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlternativeSubPlan.subplans) return subplans_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlternativeSubPlan::mutable_subplans() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlternativeSubPlan.subplans) return &subplans_; } inline const ::pg_query::Node& AlternativeSubPlan::_internal_subplans(int index) const { return subplans_.Get(index); } inline const ::pg_query::Node& AlternativeSubPlan::subplans(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlternativeSubPlan.subplans) return _internal_subplans(index); } inline ::pg_query::Node* AlternativeSubPlan::_internal_add_subplans() { return subplans_.Add(); } inline ::pg_query::Node* AlternativeSubPlan::add_subplans() { // @@protoc_insertion_point(field_add:pg_query.AlternativeSubPlan.subplans) return _internal_add_subplans(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlternativeSubPlan::subplans() const { // @@protoc_insertion_point(field_list:pg_query.AlternativeSubPlan.subplans) return subplans_; } // ------------------------------------------------------------------- // FieldSelect // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool FieldSelect::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool FieldSelect::has_xpr() const { return _internal_has_xpr(); } inline void FieldSelect::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& FieldSelect::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FieldSelect::xpr() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.xpr) return _internal_xpr(); } inline void FieldSelect::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldSelect.xpr) } inline ::pg_query::Node* FieldSelect::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* FieldSelect::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.FieldSelect.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* FieldSelect::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* FieldSelect::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.FieldSelect.xpr) return _internal_mutable_xpr(); } inline void FieldSelect::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.FieldSelect.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool FieldSelect::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool FieldSelect::has_arg() const { return _internal_has_arg(); } inline void FieldSelect::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& FieldSelect::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FieldSelect::arg() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.arg) return _internal_arg(); } inline void FieldSelect::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldSelect.arg) } inline ::pg_query::Node* FieldSelect::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* FieldSelect::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.FieldSelect.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* FieldSelect::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* FieldSelect::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.FieldSelect.arg) return _internal_mutable_arg(); } inline void FieldSelect::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.FieldSelect.arg) } // int32 fieldnum = 3 [json_name = "fieldnum"]; inline void FieldSelect::clear_fieldnum() { fieldnum_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 FieldSelect::_internal_fieldnum() const { return fieldnum_; } inline ::PROTOBUF_NAMESPACE_ID::int32 FieldSelect::fieldnum() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.fieldnum) return _internal_fieldnum(); } inline void FieldSelect::_internal_set_fieldnum(::PROTOBUF_NAMESPACE_ID::int32 value) { fieldnum_ = value; } inline void FieldSelect::set_fieldnum(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_fieldnum(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.fieldnum) } // uint32 resulttype = 4 [json_name = "resulttype"]; inline void FieldSelect::clear_resulttype() { resulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldSelect::_internal_resulttype() const { return resulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldSelect::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resulttype) return _internal_resulttype(); } inline void FieldSelect::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { resulttype_ = value; } inline void FieldSelect::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resulttype) } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; inline void FieldSelect::clear_resulttypmod() { resulttypmod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 FieldSelect::_internal_resulttypmod() const { return resulttypmod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 FieldSelect::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resulttypmod) return _internal_resulttypmod(); } inline void FieldSelect::_internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { resulttypmod_ = value; } inline void FieldSelect::set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resulttypmod) } // uint32 resultcollid = 6 [json_name = "resultcollid"]; inline void FieldSelect::clear_resultcollid() { resultcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldSelect::_internal_resultcollid() const { return resultcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldSelect::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.FieldSelect.resultcollid) return _internal_resultcollid(); } inline void FieldSelect::_internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { resultcollid_ = value; } inline void FieldSelect::set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.FieldSelect.resultcollid) } // ------------------------------------------------------------------- // FieldStore // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool FieldStore::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool FieldStore::has_xpr() const { return _internal_has_xpr(); } inline void FieldStore::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& FieldStore::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FieldStore::xpr() const { // @@protoc_insertion_point(field_get:pg_query.FieldStore.xpr) return _internal_xpr(); } inline void FieldStore::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldStore.xpr) } inline ::pg_query::Node* FieldStore::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* FieldStore::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.FieldStore.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* FieldStore::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* FieldStore::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.xpr) return _internal_mutable_xpr(); } inline void FieldStore::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.FieldStore.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool FieldStore::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool FieldStore::has_arg() const { return _internal_has_arg(); } inline void FieldStore::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& FieldStore::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FieldStore::arg() const { // @@protoc_insertion_point(field_get:pg_query.FieldStore.arg) return _internal_arg(); } inline void FieldStore::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FieldStore.arg) } inline ::pg_query::Node* FieldStore::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* FieldStore::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.FieldStore.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* FieldStore::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* FieldStore::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.arg) return _internal_mutable_arg(); } inline void FieldStore::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.FieldStore.arg) } // repeated .pg_query.Node newvals = 3 [json_name = "newvals"]; inline int FieldStore::_internal_newvals_size() const { return newvals_.size(); } inline int FieldStore::newvals_size() const { return _internal_newvals_size(); } inline void FieldStore::clear_newvals() { newvals_.Clear(); } inline ::pg_query::Node* FieldStore::mutable_newvals(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.newvals) return newvals_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FieldStore::mutable_newvals() { // @@protoc_insertion_point(field_mutable_list:pg_query.FieldStore.newvals) return &newvals_; } inline const ::pg_query::Node& FieldStore::_internal_newvals(int index) const { return newvals_.Get(index); } inline const ::pg_query::Node& FieldStore::newvals(int index) const { // @@protoc_insertion_point(field_get:pg_query.FieldStore.newvals) return _internal_newvals(index); } inline ::pg_query::Node* FieldStore::_internal_add_newvals() { return newvals_.Add(); } inline ::pg_query::Node* FieldStore::add_newvals() { // @@protoc_insertion_point(field_add:pg_query.FieldStore.newvals) return _internal_add_newvals(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FieldStore::newvals() const { // @@protoc_insertion_point(field_list:pg_query.FieldStore.newvals) return newvals_; } // repeated .pg_query.Node fieldnums = 4 [json_name = "fieldnums"]; inline int FieldStore::_internal_fieldnums_size() const { return fieldnums_.size(); } inline int FieldStore::fieldnums_size() const { return _internal_fieldnums_size(); } inline void FieldStore::clear_fieldnums() { fieldnums_.Clear(); } inline ::pg_query::Node* FieldStore::mutable_fieldnums(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FieldStore.fieldnums) return fieldnums_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FieldStore::mutable_fieldnums() { // @@protoc_insertion_point(field_mutable_list:pg_query.FieldStore.fieldnums) return &fieldnums_; } inline const ::pg_query::Node& FieldStore::_internal_fieldnums(int index) const { return fieldnums_.Get(index); } inline const ::pg_query::Node& FieldStore::fieldnums(int index) const { // @@protoc_insertion_point(field_get:pg_query.FieldStore.fieldnums) return _internal_fieldnums(index); } inline ::pg_query::Node* FieldStore::_internal_add_fieldnums() { return fieldnums_.Add(); } inline ::pg_query::Node* FieldStore::add_fieldnums() { // @@protoc_insertion_point(field_add:pg_query.FieldStore.fieldnums) return _internal_add_fieldnums(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FieldStore::fieldnums() const { // @@protoc_insertion_point(field_list:pg_query.FieldStore.fieldnums) return fieldnums_; } // uint32 resulttype = 5 [json_name = "resulttype"]; inline void FieldStore::clear_resulttype() { resulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldStore::_internal_resulttype() const { return resulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 FieldStore::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.FieldStore.resulttype) return _internal_resulttype(); } inline void FieldStore::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { resulttype_ = value; } inline void FieldStore::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.FieldStore.resulttype) } // ------------------------------------------------------------------- // RelabelType // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool RelabelType::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool RelabelType::has_xpr() const { return _internal_has_xpr(); } inline void RelabelType::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& RelabelType::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RelabelType::xpr() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.xpr) return _internal_xpr(); } inline void RelabelType::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RelabelType.xpr) } inline ::pg_query::Node* RelabelType::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RelabelType::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.RelabelType.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* RelabelType::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* RelabelType::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.RelabelType.xpr) return _internal_mutable_xpr(); } inline void RelabelType::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RelabelType.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool RelabelType::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool RelabelType::has_arg() const { return _internal_has_arg(); } inline void RelabelType::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& RelabelType::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RelabelType::arg() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.arg) return _internal_arg(); } inline void RelabelType::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RelabelType.arg) } inline ::pg_query::Node* RelabelType::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RelabelType::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.RelabelType.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* RelabelType::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* RelabelType::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.RelabelType.arg) return _internal_mutable_arg(); } inline void RelabelType::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.RelabelType.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void RelabelType::clear_resulttype() { resulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RelabelType::_internal_resulttype() const { return resulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RelabelType::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.resulttype) return _internal_resulttype(); } inline void RelabelType::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { resulttype_ = value; } inline void RelabelType::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.resulttype) } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; inline void RelabelType::clear_resulttypmod() { resulttypmod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RelabelType::_internal_resulttypmod() const { return resulttypmod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RelabelType::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.resulttypmod) return _internal_resulttypmod(); } inline void RelabelType::_internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { resulttypmod_ = value; } inline void RelabelType::set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.resulttypmod) } // uint32 resultcollid = 5 [json_name = "resultcollid"]; inline void RelabelType::clear_resultcollid() { resultcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RelabelType::_internal_resultcollid() const { return resultcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RelabelType::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.resultcollid) return _internal_resultcollid(); } inline void RelabelType::_internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { resultcollid_ = value; } inline void RelabelType::set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.resultcollid) } // .pg_query.CoercionForm relabelformat = 6 [json_name = "relabelformat"]; inline void RelabelType::clear_relabelformat() { relabelformat_ = 0; } inline ::pg_query::CoercionForm RelabelType::_internal_relabelformat() const { return static_cast< ::pg_query::CoercionForm >(relabelformat_); } inline ::pg_query::CoercionForm RelabelType::relabelformat() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.relabelformat) return _internal_relabelformat(); } inline void RelabelType::_internal_set_relabelformat(::pg_query::CoercionForm value) { relabelformat_ = value; } inline void RelabelType::set_relabelformat(::pg_query::CoercionForm value) { _internal_set_relabelformat(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.relabelformat) } // int32 location = 7 [json_name = "location"]; inline void RelabelType::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RelabelType::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RelabelType::location() const { // @@protoc_insertion_point(field_get:pg_query.RelabelType.location) return _internal_location(); } inline void RelabelType::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void RelabelType::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RelabelType.location) } // ------------------------------------------------------------------- // CoerceViaIO // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoerceViaIO::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool CoerceViaIO::has_xpr() const { return _internal_has_xpr(); } inline void CoerceViaIO::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& CoerceViaIO::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoerceViaIO::xpr() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.xpr) return _internal_xpr(); } inline void CoerceViaIO::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceViaIO.xpr) } inline ::pg_query::Node* CoerceViaIO::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CoerceViaIO::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CoerceViaIO.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoerceViaIO::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* CoerceViaIO::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.CoerceViaIO.xpr) return _internal_mutable_xpr(); } inline void CoerceViaIO::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceViaIO.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool CoerceViaIO::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool CoerceViaIO::has_arg() const { return _internal_has_arg(); } inline void CoerceViaIO::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& CoerceViaIO::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoerceViaIO::arg() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.arg) return _internal_arg(); } inline void CoerceViaIO::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceViaIO.arg) } inline ::pg_query::Node* CoerceViaIO::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CoerceViaIO::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.CoerceViaIO.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* CoerceViaIO::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* CoerceViaIO::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.CoerceViaIO.arg) return _internal_mutable_arg(); } inline void CoerceViaIO::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceViaIO.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void CoerceViaIO::clear_resulttype() { resulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceViaIO::_internal_resulttype() const { return resulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceViaIO::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.resulttype) return _internal_resulttype(); } inline void CoerceViaIO::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { resulttype_ = value; } inline void CoerceViaIO::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.resulttype) } // uint32 resultcollid = 4 [json_name = "resultcollid"]; inline void CoerceViaIO::clear_resultcollid() { resultcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceViaIO::_internal_resultcollid() const { return resultcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceViaIO::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.resultcollid) return _internal_resultcollid(); } inline void CoerceViaIO::_internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { resultcollid_ = value; } inline void CoerceViaIO::set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.resultcollid) } // .pg_query.CoercionForm coerceformat = 5 [json_name = "coerceformat"]; inline void CoerceViaIO::clear_coerceformat() { coerceformat_ = 0; } inline ::pg_query::CoercionForm CoerceViaIO::_internal_coerceformat() const { return static_cast< ::pg_query::CoercionForm >(coerceformat_); } inline ::pg_query::CoercionForm CoerceViaIO::coerceformat() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.coerceformat) return _internal_coerceformat(); } inline void CoerceViaIO::_internal_set_coerceformat(::pg_query::CoercionForm value) { coerceformat_ = value; } inline void CoerceViaIO::set_coerceformat(::pg_query::CoercionForm value) { _internal_set_coerceformat(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.coerceformat) } // int32 location = 6 [json_name = "location"]; inline void CoerceViaIO::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceViaIO::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceViaIO::location() const { // @@protoc_insertion_point(field_get:pg_query.CoerceViaIO.location) return _internal_location(); } inline void CoerceViaIO::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void CoerceViaIO::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoerceViaIO.location) } // ------------------------------------------------------------------- // ArrayCoerceExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ArrayCoerceExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool ArrayCoerceExpr::has_xpr() const { return _internal_has_xpr(); } inline void ArrayCoerceExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& ArrayCoerceExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ArrayCoerceExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.xpr) return _internal_xpr(); } inline void ArrayCoerceExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.xpr) } inline ::pg_query::Node* ArrayCoerceExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* ArrayCoerceExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.ArrayCoerceExpr.xpr) return _internal_mutable_xpr(); } inline void ArrayCoerceExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool ArrayCoerceExpr::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool ArrayCoerceExpr::has_arg() const { return _internal_has_arg(); } inline void ArrayCoerceExpr::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& ArrayCoerceExpr::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ArrayCoerceExpr::arg() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.arg) return _internal_arg(); } inline void ArrayCoerceExpr::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.arg) } inline ::pg_query::Node* ArrayCoerceExpr::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* ArrayCoerceExpr::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.ArrayCoerceExpr.arg) return _internal_mutable_arg(); } inline void ArrayCoerceExpr::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.arg) } // .pg_query.Node elemexpr = 3 [json_name = "elemexpr"]; inline bool ArrayCoerceExpr::_internal_has_elemexpr() const { return this != internal_default_instance() && elemexpr_ != nullptr; } inline bool ArrayCoerceExpr::has_elemexpr() const { return _internal_has_elemexpr(); } inline void ArrayCoerceExpr::clear_elemexpr() { if (GetArena() == nullptr && elemexpr_ != nullptr) { delete elemexpr_; } elemexpr_ = nullptr; } inline const ::pg_query::Node& ArrayCoerceExpr::_internal_elemexpr() const { const ::pg_query::Node* p = elemexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ArrayCoerceExpr::elemexpr() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.elemexpr) return _internal_elemexpr(); } inline void ArrayCoerceExpr::unsafe_arena_set_allocated_elemexpr( ::pg_query::Node* elemexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(elemexpr_); } elemexpr_ = elemexpr; if (elemexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayCoerceExpr.elemexpr) } inline ::pg_query::Node* ArrayCoerceExpr::release_elemexpr() { ::pg_query::Node* temp = elemexpr_; elemexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ArrayCoerceExpr::unsafe_arena_release_elemexpr() { // @@protoc_insertion_point(field_release:pg_query.ArrayCoerceExpr.elemexpr) ::pg_query::Node* temp = elemexpr_; elemexpr_ = nullptr; return temp; } inline ::pg_query::Node* ArrayCoerceExpr::_internal_mutable_elemexpr() { if (elemexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); elemexpr_ = p; } return elemexpr_; } inline ::pg_query::Node* ArrayCoerceExpr::mutable_elemexpr() { // @@protoc_insertion_point(field_mutable:pg_query.ArrayCoerceExpr.elemexpr) return _internal_mutable_elemexpr(); } inline void ArrayCoerceExpr::set_allocated_elemexpr(::pg_query::Node* elemexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete elemexpr_; } if (elemexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(elemexpr); if (message_arena != submessage_arena) { elemexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, elemexpr, submessage_arena); } } else { } elemexpr_ = elemexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayCoerceExpr.elemexpr) } // uint32 resulttype = 4 [json_name = "resulttype"]; inline void ArrayCoerceExpr::clear_resulttype() { resulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayCoerceExpr::_internal_resulttype() const { return resulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayCoerceExpr::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resulttype) return _internal_resulttype(); } inline void ArrayCoerceExpr::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { resulttype_ = value; } inline void ArrayCoerceExpr::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resulttype) } // int32 resulttypmod = 5 [json_name = "resulttypmod"]; inline void ArrayCoerceExpr::clear_resulttypmod() { resulttypmod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayCoerceExpr::_internal_resulttypmod() const { return resulttypmod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayCoerceExpr::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resulttypmod) return _internal_resulttypmod(); } inline void ArrayCoerceExpr::_internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { resulttypmod_ = value; } inline void ArrayCoerceExpr::set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resulttypmod) } // uint32 resultcollid = 6 [json_name = "resultcollid"]; inline void ArrayCoerceExpr::clear_resultcollid() { resultcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayCoerceExpr::_internal_resultcollid() const { return resultcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayCoerceExpr::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.resultcollid) return _internal_resultcollid(); } inline void ArrayCoerceExpr::_internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { resultcollid_ = value; } inline void ArrayCoerceExpr::set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.resultcollid) } // .pg_query.CoercionForm coerceformat = 7 [json_name = "coerceformat"]; inline void ArrayCoerceExpr::clear_coerceformat() { coerceformat_ = 0; } inline ::pg_query::CoercionForm ArrayCoerceExpr::_internal_coerceformat() const { return static_cast< ::pg_query::CoercionForm >(coerceformat_); } inline ::pg_query::CoercionForm ArrayCoerceExpr::coerceformat() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.coerceformat) return _internal_coerceformat(); } inline void ArrayCoerceExpr::_internal_set_coerceformat(::pg_query::CoercionForm value) { coerceformat_ = value; } inline void ArrayCoerceExpr::set_coerceformat(::pg_query::CoercionForm value) { _internal_set_coerceformat(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.coerceformat) } // int32 location = 8 [json_name = "location"]; inline void ArrayCoerceExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayCoerceExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayCoerceExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ArrayCoerceExpr.location) return _internal_location(); } inline void ArrayCoerceExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void ArrayCoerceExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ArrayCoerceExpr.location) } // ------------------------------------------------------------------- // ConvertRowtypeExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ConvertRowtypeExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool ConvertRowtypeExpr::has_xpr() const { return _internal_has_xpr(); } inline void ConvertRowtypeExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& ConvertRowtypeExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ConvertRowtypeExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.xpr) return _internal_xpr(); } inline void ConvertRowtypeExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ConvertRowtypeExpr.xpr) } inline ::pg_query::Node* ConvertRowtypeExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ConvertRowtypeExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.ConvertRowtypeExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* ConvertRowtypeExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* ConvertRowtypeExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.ConvertRowtypeExpr.xpr) return _internal_mutable_xpr(); } inline void ConvertRowtypeExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.ConvertRowtypeExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool ConvertRowtypeExpr::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool ConvertRowtypeExpr::has_arg() const { return _internal_has_arg(); } inline void ConvertRowtypeExpr::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& ConvertRowtypeExpr::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ConvertRowtypeExpr::arg() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.arg) return _internal_arg(); } inline void ConvertRowtypeExpr::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ConvertRowtypeExpr.arg) } inline ::pg_query::Node* ConvertRowtypeExpr::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ConvertRowtypeExpr::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.ConvertRowtypeExpr.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* ConvertRowtypeExpr::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* ConvertRowtypeExpr::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.ConvertRowtypeExpr.arg) return _internal_mutable_arg(); } inline void ConvertRowtypeExpr::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.ConvertRowtypeExpr.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void ConvertRowtypeExpr::clear_resulttype() { resulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ConvertRowtypeExpr::_internal_resulttype() const { return resulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ConvertRowtypeExpr::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.resulttype) return _internal_resulttype(); } inline void ConvertRowtypeExpr::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { resulttype_ = value; } inline void ConvertRowtypeExpr::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.resulttype) } // .pg_query.CoercionForm convertformat = 4 [json_name = "convertformat"]; inline void ConvertRowtypeExpr::clear_convertformat() { convertformat_ = 0; } inline ::pg_query::CoercionForm ConvertRowtypeExpr::_internal_convertformat() const { return static_cast< ::pg_query::CoercionForm >(convertformat_); } inline ::pg_query::CoercionForm ConvertRowtypeExpr::convertformat() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.convertformat) return _internal_convertformat(); } inline void ConvertRowtypeExpr::_internal_set_convertformat(::pg_query::CoercionForm value) { convertformat_ = value; } inline void ConvertRowtypeExpr::set_convertformat(::pg_query::CoercionForm value) { _internal_set_convertformat(value); // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.convertformat) } // int32 location = 5 [json_name = "location"]; inline void ConvertRowtypeExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ConvertRowtypeExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ConvertRowtypeExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ConvertRowtypeExpr.location) return _internal_location(); } inline void ConvertRowtypeExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void ConvertRowtypeExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ConvertRowtypeExpr.location) } // ------------------------------------------------------------------- // CollateExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CollateExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool CollateExpr::has_xpr() const { return _internal_has_xpr(); } inline void CollateExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& CollateExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CollateExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.xpr) return _internal_xpr(); } inline void CollateExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateExpr.xpr) } inline ::pg_query::Node* CollateExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CollateExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CollateExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* CollateExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* CollateExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.CollateExpr.xpr) return _internal_mutable_xpr(); } inline void CollateExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CollateExpr.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool CollateExpr::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool CollateExpr::has_arg() const { return _internal_has_arg(); } inline void CollateExpr::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& CollateExpr::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CollateExpr::arg() const { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.arg) return _internal_arg(); } inline void CollateExpr::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateExpr.arg) } inline ::pg_query::Node* CollateExpr::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CollateExpr::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.CollateExpr.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* CollateExpr::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* CollateExpr::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.CollateExpr.arg) return _internal_mutable_arg(); } inline void CollateExpr::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.CollateExpr.arg) } // uint32 coll_oid = 3 [json_name = "collOid"]; inline void CollateExpr::clear_coll_oid() { coll_oid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CollateExpr::_internal_coll_oid() const { return coll_oid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CollateExpr::coll_oid() const { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.coll_oid) return _internal_coll_oid(); } inline void CollateExpr::_internal_set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { coll_oid_ = value; } inline void CollateExpr::set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_coll_oid(value); // @@protoc_insertion_point(field_set:pg_query.CollateExpr.coll_oid) } // int32 location = 4 [json_name = "location"]; inline void CollateExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CollateExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CollateExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CollateExpr.location) return _internal_location(); } inline void CollateExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void CollateExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CollateExpr.location) } // ------------------------------------------------------------------- // CaseExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CaseExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool CaseExpr::has_xpr() const { return _internal_has_xpr(); } inline void CaseExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& CaseExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.xpr) return _internal_xpr(); } inline void CaseExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.xpr) } inline ::pg_query::Node* CaseExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CaseExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CaseExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* CaseExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* CaseExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.xpr) return _internal_mutable_xpr(); } inline void CaseExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.xpr) } // uint32 casetype = 2 [json_name = "casetype"]; inline void CaseExpr::clear_casetype() { casetype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseExpr::_internal_casetype() const { return casetype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseExpr::casetype() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.casetype) return _internal_casetype(); } inline void CaseExpr::_internal_set_casetype(::PROTOBUF_NAMESPACE_ID::uint32 value) { casetype_ = value; } inline void CaseExpr::set_casetype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_casetype(value); // @@protoc_insertion_point(field_set:pg_query.CaseExpr.casetype) } // uint32 casecollid = 3 [json_name = "casecollid"]; inline void CaseExpr::clear_casecollid() { casecollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseExpr::_internal_casecollid() const { return casecollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseExpr::casecollid() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.casecollid) return _internal_casecollid(); } inline void CaseExpr::_internal_set_casecollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { casecollid_ = value; } inline void CaseExpr::set_casecollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_casecollid(value); // @@protoc_insertion_point(field_set:pg_query.CaseExpr.casecollid) } // .pg_query.Node arg = 4 [json_name = "arg"]; inline bool CaseExpr::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool CaseExpr::has_arg() const { return _internal_has_arg(); } inline void CaseExpr::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& CaseExpr::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseExpr::arg() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.arg) return _internal_arg(); } inline void CaseExpr::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.arg) } inline ::pg_query::Node* CaseExpr::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CaseExpr::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.CaseExpr.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* CaseExpr::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* CaseExpr::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.arg) return _internal_mutable_arg(); } inline void CaseExpr::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.arg) } // repeated .pg_query.Node args = 5 [json_name = "args"]; inline int CaseExpr::_internal_args_size() const { return args_.size(); } inline int CaseExpr::args_size() const { return _internal_args_size(); } inline void CaseExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* CaseExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CaseExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.CaseExpr.args) return &args_; } inline const ::pg_query::Node& CaseExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& CaseExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.args) return _internal_args(index); } inline ::pg_query::Node* CaseExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* CaseExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.CaseExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CaseExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.CaseExpr.args) return args_; } // .pg_query.Node defresult = 6 [json_name = "defresult"]; inline bool CaseExpr::_internal_has_defresult() const { return this != internal_default_instance() && defresult_ != nullptr; } inline bool CaseExpr::has_defresult() const { return _internal_has_defresult(); } inline void CaseExpr::clear_defresult() { if (GetArena() == nullptr && defresult_ != nullptr) { delete defresult_; } defresult_ = nullptr; } inline const ::pg_query::Node& CaseExpr::_internal_defresult() const { const ::pg_query::Node* p = defresult_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseExpr::defresult() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.defresult) return _internal_defresult(); } inline void CaseExpr::unsafe_arena_set_allocated_defresult( ::pg_query::Node* defresult) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(defresult_); } defresult_ = defresult; if (defresult) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseExpr.defresult) } inline ::pg_query::Node* CaseExpr::release_defresult() { ::pg_query::Node* temp = defresult_; defresult_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CaseExpr::unsafe_arena_release_defresult() { // @@protoc_insertion_point(field_release:pg_query.CaseExpr.defresult) ::pg_query::Node* temp = defresult_; defresult_ = nullptr; return temp; } inline ::pg_query::Node* CaseExpr::_internal_mutable_defresult() { if (defresult_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); defresult_ = p; } return defresult_; } inline ::pg_query::Node* CaseExpr::mutable_defresult() { // @@protoc_insertion_point(field_mutable:pg_query.CaseExpr.defresult) return _internal_mutable_defresult(); } inline void CaseExpr::set_allocated_defresult(::pg_query::Node* defresult) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete defresult_; } if (defresult) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(defresult); if (message_arena != submessage_arena) { defresult = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, defresult, submessage_arena); } } else { } defresult_ = defresult; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseExpr.defresult) } // int32 location = 7 [json_name = "location"]; inline void CaseExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CaseExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CaseExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CaseExpr.location) return _internal_location(); } inline void CaseExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void CaseExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CaseExpr.location) } // ------------------------------------------------------------------- // CaseWhen // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CaseWhen::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool CaseWhen::has_xpr() const { return _internal_has_xpr(); } inline void CaseWhen::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& CaseWhen::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseWhen::xpr() const { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.xpr) return _internal_xpr(); } inline void CaseWhen::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.xpr) } inline ::pg_query::Node* CaseWhen::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CaseWhen::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CaseWhen.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* CaseWhen::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* CaseWhen::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.CaseWhen.xpr) return _internal_mutable_xpr(); } inline void CaseWhen::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.xpr) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool CaseWhen::_internal_has_expr() const { return this != internal_default_instance() && expr_ != nullptr; } inline bool CaseWhen::has_expr() const { return _internal_has_expr(); } inline void CaseWhen::clear_expr() { if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; } inline const ::pg_query::Node& CaseWhen::_internal_expr() const { const ::pg_query::Node* p = expr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseWhen::expr() const { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.expr) return _internal_expr(); } inline void CaseWhen::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); } expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.expr) } inline ::pg_query::Node* CaseWhen::release_expr() { ::pg_query::Node* temp = expr_; expr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CaseWhen::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.CaseWhen.expr) ::pg_query::Node* temp = expr_; expr_ = nullptr; return temp; } inline ::pg_query::Node* CaseWhen::_internal_mutable_expr() { if (expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); expr_ = p; } return expr_; } inline ::pg_query::Node* CaseWhen::mutable_expr() { // @@protoc_insertion_point(field_mutable:pg_query.CaseWhen.expr) return _internal_mutable_expr(); } inline void CaseWhen::set_allocated_expr(::pg_query::Node* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.expr) } // .pg_query.Node result = 3 [json_name = "result"]; inline bool CaseWhen::_internal_has_result() const { return this != internal_default_instance() && result_ != nullptr; } inline bool CaseWhen::has_result() const { return _internal_has_result(); } inline void CaseWhen::clear_result() { if (GetArena() == nullptr && result_ != nullptr) { delete result_; } result_ = nullptr; } inline const ::pg_query::Node& CaseWhen::_internal_result() const { const ::pg_query::Node* p = result_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseWhen::result() const { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.result) return _internal_result(); } inline void CaseWhen::unsafe_arena_set_allocated_result( ::pg_query::Node* result) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(result_); } result_ = result; if (result) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseWhen.result) } inline ::pg_query::Node* CaseWhen::release_result() { ::pg_query::Node* temp = result_; result_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CaseWhen::unsafe_arena_release_result() { // @@protoc_insertion_point(field_release:pg_query.CaseWhen.result) ::pg_query::Node* temp = result_; result_ = nullptr; return temp; } inline ::pg_query::Node* CaseWhen::_internal_mutable_result() { if (result_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); result_ = p; } return result_; } inline ::pg_query::Node* CaseWhen::mutable_result() { // @@protoc_insertion_point(field_mutable:pg_query.CaseWhen.result) return _internal_mutable_result(); } inline void CaseWhen::set_allocated_result(::pg_query::Node* result) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete result_; } if (result) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(result); if (message_arena != submessage_arena) { result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, result, submessage_arena); } } else { } result_ = result; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseWhen.result) } // int32 location = 4 [json_name = "location"]; inline void CaseWhen::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CaseWhen::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CaseWhen::location() const { // @@protoc_insertion_point(field_get:pg_query.CaseWhen.location) return _internal_location(); } inline void CaseWhen::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void CaseWhen::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CaseWhen.location) } // ------------------------------------------------------------------- // CaseTestExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CaseTestExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool CaseTestExpr::has_xpr() const { return _internal_has_xpr(); } inline void CaseTestExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& CaseTestExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CaseTestExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.xpr) return _internal_xpr(); } inline void CaseTestExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CaseTestExpr.xpr) } inline ::pg_query::Node* CaseTestExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CaseTestExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CaseTestExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* CaseTestExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* CaseTestExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.CaseTestExpr.xpr) return _internal_mutable_xpr(); } inline void CaseTestExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CaseTestExpr.xpr) } // uint32 type_id = 2 [json_name = "typeId"]; inline void CaseTestExpr::clear_type_id() { type_id_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseTestExpr::_internal_type_id() const { return type_id_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseTestExpr::type_id() const { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.type_id) return _internal_type_id(); } inline void CaseTestExpr::_internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { type_id_ = value; } inline void CaseTestExpr::set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.type_id) } // int32 type_mod = 3 [json_name = "typeMod"]; inline void CaseTestExpr::clear_type_mod() { type_mod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CaseTestExpr::_internal_type_mod() const { return type_mod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CaseTestExpr::type_mod() const { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.type_mod) return _internal_type_mod(); } inline void CaseTestExpr::_internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { type_mod_ = value; } inline void CaseTestExpr::set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_type_mod(value); // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.type_mod) } // uint32 collation = 4 [json_name = "collation"]; inline void CaseTestExpr::clear_collation() { collation_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseTestExpr::_internal_collation() const { return collation_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CaseTestExpr::collation() const { // @@protoc_insertion_point(field_get:pg_query.CaseTestExpr.collation) return _internal_collation(); } inline void CaseTestExpr::_internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { collation_ = value; } inline void CaseTestExpr::set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_collation(value); // @@protoc_insertion_point(field_set:pg_query.CaseTestExpr.collation) } // ------------------------------------------------------------------- // ArrayExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool ArrayExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool ArrayExpr::has_xpr() const { return _internal_has_xpr(); } inline void ArrayExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& ArrayExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ArrayExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.xpr) return _internal_xpr(); } inline void ArrayExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ArrayExpr.xpr) } inline ::pg_query::Node* ArrayExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ArrayExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.ArrayExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* ArrayExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* ArrayExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.ArrayExpr.xpr) return _internal_mutable_xpr(); } inline void ArrayExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.ArrayExpr.xpr) } // uint32 array_typeid = 2 [json_name = "array_typeid"]; inline void ArrayExpr::clear_array_typeid() { array_typeid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::_internal_array_typeid() const { return array_typeid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::array_typeid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.array_typeid) return _internal_array_typeid(); } inline void ArrayExpr::_internal_set_array_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { array_typeid_ = value; } inline void ArrayExpr::set_array_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_array_typeid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.array_typeid) } // uint32 array_collid = 3 [json_name = "array_collid"]; inline void ArrayExpr::clear_array_collid() { array_collid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::_internal_array_collid() const { return array_collid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::array_collid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.array_collid) return _internal_array_collid(); } inline void ArrayExpr::_internal_set_array_collid(::PROTOBUF_NAMESPACE_ID::uint32 value) { array_collid_ = value; } inline void ArrayExpr::set_array_collid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_array_collid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.array_collid) } // uint32 element_typeid = 4 [json_name = "element_typeid"]; inline void ArrayExpr::clear_element_typeid() { element_typeid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::_internal_element_typeid() const { return element_typeid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ArrayExpr::element_typeid() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.element_typeid) return _internal_element_typeid(); } inline void ArrayExpr::_internal_set_element_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { element_typeid_ = value; } inline void ArrayExpr::set_element_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_element_typeid(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.element_typeid) } // repeated .pg_query.Node elements = 5 [json_name = "elements"]; inline int ArrayExpr::_internal_elements_size() const { return elements_.size(); } inline int ArrayExpr::elements_size() const { return _internal_elements_size(); } inline void ArrayExpr::clear_elements() { elements_.Clear(); } inline ::pg_query::Node* ArrayExpr::mutable_elements(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ArrayExpr.elements) return elements_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ArrayExpr::mutable_elements() { // @@protoc_insertion_point(field_mutable_list:pg_query.ArrayExpr.elements) return &elements_; } inline const ::pg_query::Node& ArrayExpr::_internal_elements(int index) const { return elements_.Get(index); } inline const ::pg_query::Node& ArrayExpr::elements(int index) const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.elements) return _internal_elements(index); } inline ::pg_query::Node* ArrayExpr::_internal_add_elements() { return elements_.Add(); } inline ::pg_query::Node* ArrayExpr::add_elements() { // @@protoc_insertion_point(field_add:pg_query.ArrayExpr.elements) return _internal_add_elements(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ArrayExpr::elements() const { // @@protoc_insertion_point(field_list:pg_query.ArrayExpr.elements) return elements_; } // bool multidims = 6 [json_name = "multidims"]; inline void ArrayExpr::clear_multidims() { multidims_ = false; } inline bool ArrayExpr::_internal_multidims() const { return multidims_; } inline bool ArrayExpr::multidims() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.multidims) return _internal_multidims(); } inline void ArrayExpr::_internal_set_multidims(bool value) { multidims_ = value; } inline void ArrayExpr::set_multidims(bool value) { _internal_set_multidims(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.multidims) } // int32 location = 7 [json_name = "location"]; inline void ArrayExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ArrayExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.ArrayExpr.location) return _internal_location(); } inline void ArrayExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void ArrayExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ArrayExpr.location) } // ------------------------------------------------------------------- // RowExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool RowExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool RowExpr::has_xpr() const { return _internal_has_xpr(); } inline void RowExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& RowExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RowExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.xpr) return _internal_xpr(); } inline void RowExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RowExpr.xpr) } inline ::pg_query::Node* RowExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RowExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.RowExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* RowExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* RowExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.xpr) return _internal_mutable_xpr(); } inline void RowExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RowExpr.xpr) } // repeated .pg_query.Node args = 2 [json_name = "args"]; inline int RowExpr::_internal_args_size() const { return args_.size(); } inline int RowExpr::args_size() const { return _internal_args_size(); } inline void RowExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* RowExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowExpr.args) return &args_; } inline const ::pg_query::Node& RowExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& RowExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.args) return _internal_args(index); } inline ::pg_query::Node* RowExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* RowExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.RowExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.RowExpr.args) return args_; } // uint32 row_typeid = 3 [json_name = "row_typeid"]; inline void RowExpr::clear_row_typeid() { row_typeid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RowExpr::_internal_row_typeid() const { return row_typeid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RowExpr::row_typeid() const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.row_typeid) return _internal_row_typeid(); } inline void RowExpr::_internal_set_row_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { row_typeid_ = value; } inline void RowExpr::set_row_typeid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_row_typeid(value); // @@protoc_insertion_point(field_set:pg_query.RowExpr.row_typeid) } // .pg_query.CoercionForm row_format = 4 [json_name = "row_format"]; inline void RowExpr::clear_row_format() { row_format_ = 0; } inline ::pg_query::CoercionForm RowExpr::_internal_row_format() const { return static_cast< ::pg_query::CoercionForm >(row_format_); } inline ::pg_query::CoercionForm RowExpr::row_format() const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.row_format) return _internal_row_format(); } inline void RowExpr::_internal_set_row_format(::pg_query::CoercionForm value) { row_format_ = value; } inline void RowExpr::set_row_format(::pg_query::CoercionForm value) { _internal_set_row_format(value); // @@protoc_insertion_point(field_set:pg_query.RowExpr.row_format) } // repeated .pg_query.Node colnames = 5 [json_name = "colnames"]; inline int RowExpr::_internal_colnames_size() const { return colnames_.size(); } inline int RowExpr::colnames_size() const { return _internal_colnames_size(); } inline void RowExpr::clear_colnames() { colnames_.Clear(); } inline ::pg_query::Node* RowExpr::mutable_colnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowExpr.colnames) return colnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowExpr::mutable_colnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowExpr.colnames) return &colnames_; } inline const ::pg_query::Node& RowExpr::_internal_colnames(int index) const { return colnames_.Get(index); } inline const ::pg_query::Node& RowExpr::colnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.colnames) return _internal_colnames(index); } inline ::pg_query::Node* RowExpr::_internal_add_colnames() { return colnames_.Add(); } inline ::pg_query::Node* RowExpr::add_colnames() { // @@protoc_insertion_point(field_add:pg_query.RowExpr.colnames) return _internal_add_colnames(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowExpr::colnames() const { // @@protoc_insertion_point(field_list:pg_query.RowExpr.colnames) return colnames_; } // int32 location = 6 [json_name = "location"]; inline void RowExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RowExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RowExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.RowExpr.location) return _internal_location(); } inline void RowExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void RowExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RowExpr.location) } // ------------------------------------------------------------------- // RowCompareExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool RowCompareExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool RowCompareExpr::has_xpr() const { return _internal_has_xpr(); } inline void RowCompareExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& RowCompareExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RowCompareExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.xpr) return _internal_xpr(); } inline void RowCompareExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RowCompareExpr.xpr) } inline ::pg_query::Node* RowCompareExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RowCompareExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.RowCompareExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* RowCompareExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* RowCompareExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.xpr) return _internal_mutable_xpr(); } inline void RowCompareExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RowCompareExpr.xpr) } // .pg_query.RowCompareType rctype = 2 [json_name = "rctype"]; inline void RowCompareExpr::clear_rctype() { rctype_ = 0; } inline ::pg_query::RowCompareType RowCompareExpr::_internal_rctype() const { return static_cast< ::pg_query::RowCompareType >(rctype_); } inline ::pg_query::RowCompareType RowCompareExpr::rctype() const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.rctype) return _internal_rctype(); } inline void RowCompareExpr::_internal_set_rctype(::pg_query::RowCompareType value) { rctype_ = value; } inline void RowCompareExpr::set_rctype(::pg_query::RowCompareType value) { _internal_set_rctype(value); // @@protoc_insertion_point(field_set:pg_query.RowCompareExpr.rctype) } // repeated .pg_query.Node opnos = 3 [json_name = "opnos"]; inline int RowCompareExpr::_internal_opnos_size() const { return opnos_.size(); } inline int RowCompareExpr::opnos_size() const { return _internal_opnos_size(); } inline void RowCompareExpr::clear_opnos() { opnos_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_opnos(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.opnos) return opnos_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowCompareExpr::mutable_opnos() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.opnos) return &opnos_; } inline const ::pg_query::Node& RowCompareExpr::_internal_opnos(int index) const { return opnos_.Get(index); } inline const ::pg_query::Node& RowCompareExpr::opnos(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.opnos) return _internal_opnos(index); } inline ::pg_query::Node* RowCompareExpr::_internal_add_opnos() { return opnos_.Add(); } inline ::pg_query::Node* RowCompareExpr::add_opnos() { // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.opnos) return _internal_add_opnos(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowCompareExpr::opnos() const { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.opnos) return opnos_; } // repeated .pg_query.Node opfamilies = 4 [json_name = "opfamilies"]; inline int RowCompareExpr::_internal_opfamilies_size() const { return opfamilies_.size(); } inline int RowCompareExpr::opfamilies_size() const { return _internal_opfamilies_size(); } inline void RowCompareExpr::clear_opfamilies() { opfamilies_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_opfamilies(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.opfamilies) return opfamilies_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowCompareExpr::mutable_opfamilies() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.opfamilies) return &opfamilies_; } inline const ::pg_query::Node& RowCompareExpr::_internal_opfamilies(int index) const { return opfamilies_.Get(index); } inline const ::pg_query::Node& RowCompareExpr::opfamilies(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.opfamilies) return _internal_opfamilies(index); } inline ::pg_query::Node* RowCompareExpr::_internal_add_opfamilies() { return opfamilies_.Add(); } inline ::pg_query::Node* RowCompareExpr::add_opfamilies() { // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.opfamilies) return _internal_add_opfamilies(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowCompareExpr::opfamilies() const { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.opfamilies) return opfamilies_; } // repeated .pg_query.Node inputcollids = 5 [json_name = "inputcollids"]; inline int RowCompareExpr::_internal_inputcollids_size() const { return inputcollids_.size(); } inline int RowCompareExpr::inputcollids_size() const { return _internal_inputcollids_size(); } inline void RowCompareExpr::clear_inputcollids() { inputcollids_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_inputcollids(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.inputcollids) return inputcollids_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowCompareExpr::mutable_inputcollids() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.inputcollids) return &inputcollids_; } inline const ::pg_query::Node& RowCompareExpr::_internal_inputcollids(int index) const { return inputcollids_.Get(index); } inline const ::pg_query::Node& RowCompareExpr::inputcollids(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.inputcollids) return _internal_inputcollids(index); } inline ::pg_query::Node* RowCompareExpr::_internal_add_inputcollids() { return inputcollids_.Add(); } inline ::pg_query::Node* RowCompareExpr::add_inputcollids() { // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.inputcollids) return _internal_add_inputcollids(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowCompareExpr::inputcollids() const { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.inputcollids) return inputcollids_; } // repeated .pg_query.Node largs = 6 [json_name = "largs"]; inline int RowCompareExpr::_internal_largs_size() const { return largs_.size(); } inline int RowCompareExpr::largs_size() const { return _internal_largs_size(); } inline void RowCompareExpr::clear_largs() { largs_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_largs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.largs) return largs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowCompareExpr::mutable_largs() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.largs) return &largs_; } inline const ::pg_query::Node& RowCompareExpr::_internal_largs(int index) const { return largs_.Get(index); } inline const ::pg_query::Node& RowCompareExpr::largs(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.largs) return _internal_largs(index); } inline ::pg_query::Node* RowCompareExpr::_internal_add_largs() { return largs_.Add(); } inline ::pg_query::Node* RowCompareExpr::add_largs() { // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.largs) return _internal_add_largs(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowCompareExpr::largs() const { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.largs) return largs_; } // repeated .pg_query.Node rargs = 7 [json_name = "rargs"]; inline int RowCompareExpr::_internal_rargs_size() const { return rargs_.size(); } inline int RowCompareExpr::rargs_size() const { return _internal_rargs_size(); } inline void RowCompareExpr::clear_rargs() { rargs_.Clear(); } inline ::pg_query::Node* RowCompareExpr::mutable_rargs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RowCompareExpr.rargs) return rargs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RowCompareExpr::mutable_rargs() { // @@protoc_insertion_point(field_mutable_list:pg_query.RowCompareExpr.rargs) return &rargs_; } inline const ::pg_query::Node& RowCompareExpr::_internal_rargs(int index) const { return rargs_.Get(index); } inline const ::pg_query::Node& RowCompareExpr::rargs(int index) const { // @@protoc_insertion_point(field_get:pg_query.RowCompareExpr.rargs) return _internal_rargs(index); } inline ::pg_query::Node* RowCompareExpr::_internal_add_rargs() { return rargs_.Add(); } inline ::pg_query::Node* RowCompareExpr::add_rargs() { // @@protoc_insertion_point(field_add:pg_query.RowCompareExpr.rargs) return _internal_add_rargs(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RowCompareExpr::rargs() const { // @@protoc_insertion_point(field_list:pg_query.RowCompareExpr.rargs) return rargs_; } // ------------------------------------------------------------------- // CoalesceExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoalesceExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool CoalesceExpr::has_xpr() const { return _internal_has_xpr(); } inline void CoalesceExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& CoalesceExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoalesceExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.xpr) return _internal_xpr(); } inline void CoalesceExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoalesceExpr.xpr) } inline ::pg_query::Node* CoalesceExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CoalesceExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CoalesceExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoalesceExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* CoalesceExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.CoalesceExpr.xpr) return _internal_mutable_xpr(); } inline void CoalesceExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CoalesceExpr.xpr) } // uint32 coalescetype = 2 [json_name = "coalescetype"]; inline void CoalesceExpr::clear_coalescetype() { coalescetype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoalesceExpr::_internal_coalescetype() const { return coalescetype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoalesceExpr::coalescetype() const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.coalescetype) return _internal_coalescetype(); } inline void CoalesceExpr::_internal_set_coalescetype(::PROTOBUF_NAMESPACE_ID::uint32 value) { coalescetype_ = value; } inline void CoalesceExpr::set_coalescetype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_coalescetype(value); // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.coalescetype) } // uint32 coalescecollid = 3 [json_name = "coalescecollid"]; inline void CoalesceExpr::clear_coalescecollid() { coalescecollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoalesceExpr::_internal_coalescecollid() const { return coalescecollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoalesceExpr::coalescecollid() const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.coalescecollid) return _internal_coalescecollid(); } inline void CoalesceExpr::_internal_set_coalescecollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { coalescecollid_ = value; } inline void CoalesceExpr::set_coalescecollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_coalescecollid(value); // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.coalescecollid) } // repeated .pg_query.Node args = 4 [json_name = "args"]; inline int CoalesceExpr::_internal_args_size() const { return args_.size(); } inline int CoalesceExpr::args_size() const { return _internal_args_size(); } inline void CoalesceExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* CoalesceExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CoalesceExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CoalesceExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.CoalesceExpr.args) return &args_; } inline const ::pg_query::Node& CoalesceExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& CoalesceExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.args) return _internal_args(index); } inline ::pg_query::Node* CoalesceExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* CoalesceExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.CoalesceExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CoalesceExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.CoalesceExpr.args) return args_; } // int32 location = 5 [json_name = "location"]; inline void CoalesceExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoalesceExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoalesceExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CoalesceExpr.location) return _internal_location(); } inline void CoalesceExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void CoalesceExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoalesceExpr.location) } // ------------------------------------------------------------------- // MinMaxExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool MinMaxExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool MinMaxExpr::has_xpr() const { return _internal_has_xpr(); } inline void MinMaxExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& MinMaxExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& MinMaxExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.xpr) return _internal_xpr(); } inline void MinMaxExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MinMaxExpr.xpr) } inline ::pg_query::Node* MinMaxExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* MinMaxExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.MinMaxExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* MinMaxExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* MinMaxExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.MinMaxExpr.xpr) return _internal_mutable_xpr(); } inline void MinMaxExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.MinMaxExpr.xpr) } // uint32 minmaxtype = 2 [json_name = "minmaxtype"]; inline void MinMaxExpr::clear_minmaxtype() { minmaxtype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::_internal_minmaxtype() const { return minmaxtype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::minmaxtype() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.minmaxtype) return _internal_minmaxtype(); } inline void MinMaxExpr::_internal_set_minmaxtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { minmaxtype_ = value; } inline void MinMaxExpr::set_minmaxtype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_minmaxtype(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.minmaxtype) } // uint32 minmaxcollid = 3 [json_name = "minmaxcollid"]; inline void MinMaxExpr::clear_minmaxcollid() { minmaxcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::_internal_minmaxcollid() const { return minmaxcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::minmaxcollid() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.minmaxcollid) return _internal_minmaxcollid(); } inline void MinMaxExpr::_internal_set_minmaxcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { minmaxcollid_ = value; } inline void MinMaxExpr::set_minmaxcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_minmaxcollid(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.minmaxcollid) } // uint32 inputcollid = 4 [json_name = "inputcollid"]; inline void MinMaxExpr::clear_inputcollid() { inputcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::_internal_inputcollid() const { return inputcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 MinMaxExpr::inputcollid() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.inputcollid) return _internal_inputcollid(); } inline void MinMaxExpr::_internal_set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { inputcollid_ = value; } inline void MinMaxExpr::set_inputcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_inputcollid(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.inputcollid) } // .pg_query.MinMaxOp op = 5 [json_name = "op"]; inline void MinMaxExpr::clear_op() { op_ = 0; } inline ::pg_query::MinMaxOp MinMaxExpr::_internal_op() const { return static_cast< ::pg_query::MinMaxOp >(op_); } inline ::pg_query::MinMaxOp MinMaxExpr::op() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.op) return _internal_op(); } inline void MinMaxExpr::_internal_set_op(::pg_query::MinMaxOp value) { op_ = value; } inline void MinMaxExpr::set_op(::pg_query::MinMaxOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.op) } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int MinMaxExpr::_internal_args_size() const { return args_.size(); } inline int MinMaxExpr::args_size() const { return _internal_args_size(); } inline void MinMaxExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* MinMaxExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.MinMaxExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* MinMaxExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.MinMaxExpr.args) return &args_; } inline const ::pg_query::Node& MinMaxExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& MinMaxExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.args) return _internal_args(index); } inline ::pg_query::Node* MinMaxExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* MinMaxExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.MinMaxExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& MinMaxExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.MinMaxExpr.args) return args_; } // int32 location = 7 [json_name = "location"]; inline void MinMaxExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 MinMaxExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 MinMaxExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.MinMaxExpr.location) return _internal_location(); } inline void MinMaxExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void MinMaxExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.MinMaxExpr.location) } // ------------------------------------------------------------------- // SQLValueFunction // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SQLValueFunction::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool SQLValueFunction::has_xpr() const { return _internal_has_xpr(); } inline void SQLValueFunction::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& SQLValueFunction::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SQLValueFunction::xpr() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.xpr) return _internal_xpr(); } inline void SQLValueFunction::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SQLValueFunction.xpr) } inline ::pg_query::Node* SQLValueFunction::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SQLValueFunction::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.SQLValueFunction.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* SQLValueFunction::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* SQLValueFunction::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.SQLValueFunction.xpr) return _internal_mutable_xpr(); } inline void SQLValueFunction::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SQLValueFunction.xpr) } // .pg_query.SQLValueFunctionOp op = 2 [json_name = "op"]; inline void SQLValueFunction::clear_op() { op_ = 0; } inline ::pg_query::SQLValueFunctionOp SQLValueFunction::_internal_op() const { return static_cast< ::pg_query::SQLValueFunctionOp >(op_); } inline ::pg_query::SQLValueFunctionOp SQLValueFunction::op() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.op) return _internal_op(); } inline void SQLValueFunction::_internal_set_op(::pg_query::SQLValueFunctionOp value) { op_ = value; } inline void SQLValueFunction::set_op(::pg_query::SQLValueFunctionOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.op) } // uint32 type = 3 [json_name = "type"]; inline void SQLValueFunction::clear_type() { type_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SQLValueFunction::_internal_type() const { return type_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SQLValueFunction::type() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.type) return _internal_type(); } inline void SQLValueFunction::_internal_set_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { type_ = value; } inline void SQLValueFunction::set_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_type(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.type) } // int32 typmod = 4 [json_name = "typmod"]; inline void SQLValueFunction::clear_typmod() { typmod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 SQLValueFunction::_internal_typmod() const { return typmod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 SQLValueFunction::typmod() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.typmod) return _internal_typmod(); } inline void SQLValueFunction::_internal_set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { typmod_ = value; } inline void SQLValueFunction::set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_typmod(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.typmod) } // int32 location = 5 [json_name = "location"]; inline void SQLValueFunction::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 SQLValueFunction::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 SQLValueFunction::location() const { // @@protoc_insertion_point(field_get:pg_query.SQLValueFunction.location) return _internal_location(); } inline void SQLValueFunction::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void SQLValueFunction::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SQLValueFunction.location) } // ------------------------------------------------------------------- // XmlExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool XmlExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool XmlExpr::has_xpr() const { return _internal_has_xpr(); } inline void XmlExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& XmlExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& XmlExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.xpr) return _internal_xpr(); } inline void XmlExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlExpr.xpr) } inline ::pg_query::Node* XmlExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* XmlExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.XmlExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* XmlExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* XmlExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.xpr) return _internal_mutable_xpr(); } inline void XmlExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.XmlExpr.xpr) } // .pg_query.XmlExprOp op = 2 [json_name = "op"]; inline void XmlExpr::clear_op() { op_ = 0; } inline ::pg_query::XmlExprOp XmlExpr::_internal_op() const { return static_cast< ::pg_query::XmlExprOp >(op_); } inline ::pg_query::XmlExprOp XmlExpr::op() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.op) return _internal_op(); } inline void XmlExpr::_internal_set_op(::pg_query::XmlExprOp value) { op_ = value; } inline void XmlExpr::set_op(::pg_query::XmlExprOp value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.op) } // string name = 3 [json_name = "name"]; inline void XmlExpr::clear_name() { name_.ClearToEmpty(); } inline const std::string& XmlExpr::name() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.name) return _internal_name(); } inline void XmlExpr::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.name) } inline std::string* XmlExpr::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.name) return _internal_mutable_name(); } inline const std::string& XmlExpr::_internal_name() const { return name_.Get(); } inline void XmlExpr::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void XmlExpr::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.XmlExpr.name) } inline void XmlExpr::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.XmlExpr.name) } inline void XmlExpr::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.XmlExpr.name) } inline std::string* XmlExpr::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* XmlExpr::release_name() { // @@protoc_insertion_point(field_release:pg_query.XmlExpr.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void XmlExpr::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.XmlExpr.name) } // repeated .pg_query.Node named_args = 4 [json_name = "named_args"]; inline int XmlExpr::_internal_named_args_size() const { return named_args_.size(); } inline int XmlExpr::named_args_size() const { return _internal_named_args_size(); } inline void XmlExpr::clear_named_args() { named_args_.Clear(); } inline ::pg_query::Node* XmlExpr::mutable_named_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.named_args) return named_args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* XmlExpr::mutable_named_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.named_args) return &named_args_; } inline const ::pg_query::Node& XmlExpr::_internal_named_args(int index) const { return named_args_.Get(index); } inline const ::pg_query::Node& XmlExpr::named_args(int index) const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.named_args) return _internal_named_args(index); } inline ::pg_query::Node* XmlExpr::_internal_add_named_args() { return named_args_.Add(); } inline ::pg_query::Node* XmlExpr::add_named_args() { // @@protoc_insertion_point(field_add:pg_query.XmlExpr.named_args) return _internal_add_named_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& XmlExpr::named_args() const { // @@protoc_insertion_point(field_list:pg_query.XmlExpr.named_args) return named_args_; } // repeated .pg_query.Node arg_names = 5 [json_name = "arg_names"]; inline int XmlExpr::_internal_arg_names_size() const { return arg_names_.size(); } inline int XmlExpr::arg_names_size() const { return _internal_arg_names_size(); } inline void XmlExpr::clear_arg_names() { arg_names_.Clear(); } inline ::pg_query::Node* XmlExpr::mutable_arg_names(int index) { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.arg_names) return arg_names_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* XmlExpr::mutable_arg_names() { // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.arg_names) return &arg_names_; } inline const ::pg_query::Node& XmlExpr::_internal_arg_names(int index) const { return arg_names_.Get(index); } inline const ::pg_query::Node& XmlExpr::arg_names(int index) const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.arg_names) return _internal_arg_names(index); } inline ::pg_query::Node* XmlExpr::_internal_add_arg_names() { return arg_names_.Add(); } inline ::pg_query::Node* XmlExpr::add_arg_names() { // @@protoc_insertion_point(field_add:pg_query.XmlExpr.arg_names) return _internal_add_arg_names(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& XmlExpr::arg_names() const { // @@protoc_insertion_point(field_list:pg_query.XmlExpr.arg_names) return arg_names_; } // repeated .pg_query.Node args = 6 [json_name = "args"]; inline int XmlExpr::_internal_args_size() const { return args_.size(); } inline int XmlExpr::args_size() const { return _internal_args_size(); } inline void XmlExpr::clear_args() { args_.Clear(); } inline ::pg_query::Node* XmlExpr::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.XmlExpr.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* XmlExpr::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.XmlExpr.args) return &args_; } inline const ::pg_query::Node& XmlExpr::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& XmlExpr::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.args) return _internal_args(index); } inline ::pg_query::Node* XmlExpr::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* XmlExpr::add_args() { // @@protoc_insertion_point(field_add:pg_query.XmlExpr.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& XmlExpr::args() const { // @@protoc_insertion_point(field_list:pg_query.XmlExpr.args) return args_; } // .pg_query.XmlOptionType xmloption = 7 [json_name = "xmloption"]; inline void XmlExpr::clear_xmloption() { xmloption_ = 0; } inline ::pg_query::XmlOptionType XmlExpr::_internal_xmloption() const { return static_cast< ::pg_query::XmlOptionType >(xmloption_); } inline ::pg_query::XmlOptionType XmlExpr::xmloption() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.xmloption) return _internal_xmloption(); } inline void XmlExpr::_internal_set_xmloption(::pg_query::XmlOptionType value) { xmloption_ = value; } inline void XmlExpr::set_xmloption(::pg_query::XmlOptionType value) { _internal_set_xmloption(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.xmloption) } // uint32 type = 8 [json_name = "type"]; inline void XmlExpr::clear_type() { type_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 XmlExpr::_internal_type() const { return type_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 XmlExpr::type() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.type) return _internal_type(); } inline void XmlExpr::_internal_set_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { type_ = value; } inline void XmlExpr::set_type(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_type(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.type) } // int32 typmod = 9 [json_name = "typmod"]; inline void XmlExpr::clear_typmod() { typmod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 XmlExpr::_internal_typmod() const { return typmod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 XmlExpr::typmod() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.typmod) return _internal_typmod(); } inline void XmlExpr::_internal_set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { typmod_ = value; } inline void XmlExpr::set_typmod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_typmod(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.typmod) } // int32 location = 10 [json_name = "location"]; inline void XmlExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 XmlExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 XmlExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.XmlExpr.location) return _internal_location(); } inline void XmlExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void XmlExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.XmlExpr.location) } // ------------------------------------------------------------------- // NullTest // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NullTest::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool NullTest::has_xpr() const { return _internal_has_xpr(); } inline void NullTest::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& NullTest::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NullTest::xpr() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.xpr) return _internal_xpr(); } inline void NullTest::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullTest.xpr) } inline ::pg_query::Node* NullTest::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* NullTest::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.NullTest.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* NullTest::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* NullTest::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.NullTest.xpr) return _internal_mutable_xpr(); } inline void NullTest::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.NullTest.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool NullTest::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool NullTest::has_arg() const { return _internal_has_arg(); } inline void NullTest::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& NullTest::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NullTest::arg() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.arg) return _internal_arg(); } inline void NullTest::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NullTest.arg) } inline ::pg_query::Node* NullTest::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* NullTest::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.NullTest.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* NullTest::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* NullTest::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.NullTest.arg) return _internal_mutable_arg(); } inline void NullTest::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.NullTest.arg) } // .pg_query.NullTestType nulltesttype = 3 [json_name = "nulltesttype"]; inline void NullTest::clear_nulltesttype() { nulltesttype_ = 0; } inline ::pg_query::NullTestType NullTest::_internal_nulltesttype() const { return static_cast< ::pg_query::NullTestType >(nulltesttype_); } inline ::pg_query::NullTestType NullTest::nulltesttype() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.nulltesttype) return _internal_nulltesttype(); } inline void NullTest::_internal_set_nulltesttype(::pg_query::NullTestType value) { nulltesttype_ = value; } inline void NullTest::set_nulltesttype(::pg_query::NullTestType value) { _internal_set_nulltesttype(value); // @@protoc_insertion_point(field_set:pg_query.NullTest.nulltesttype) } // bool argisrow = 4 [json_name = "argisrow"]; inline void NullTest::clear_argisrow() { argisrow_ = false; } inline bool NullTest::_internal_argisrow() const { return argisrow_; } inline bool NullTest::argisrow() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.argisrow) return _internal_argisrow(); } inline void NullTest::_internal_set_argisrow(bool value) { argisrow_ = value; } inline void NullTest::set_argisrow(bool value) { _internal_set_argisrow(value); // @@protoc_insertion_point(field_set:pg_query.NullTest.argisrow) } // int32 location = 5 [json_name = "location"]; inline void NullTest::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 NullTest::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 NullTest::location() const { // @@protoc_insertion_point(field_get:pg_query.NullTest.location) return _internal_location(); } inline void NullTest::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void NullTest::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.NullTest.location) } // ------------------------------------------------------------------- // BooleanTest // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool BooleanTest::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool BooleanTest::has_xpr() const { return _internal_has_xpr(); } inline void BooleanTest::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& BooleanTest::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& BooleanTest::xpr() const { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.xpr) return _internal_xpr(); } inline void BooleanTest::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BooleanTest.xpr) } inline ::pg_query::Node* BooleanTest::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* BooleanTest::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.BooleanTest.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* BooleanTest::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* BooleanTest::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.BooleanTest.xpr) return _internal_mutable_xpr(); } inline void BooleanTest::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.BooleanTest.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool BooleanTest::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool BooleanTest::has_arg() const { return _internal_has_arg(); } inline void BooleanTest::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& BooleanTest::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& BooleanTest::arg() const { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.arg) return _internal_arg(); } inline void BooleanTest::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.BooleanTest.arg) } inline ::pg_query::Node* BooleanTest::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* BooleanTest::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.BooleanTest.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* BooleanTest::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* BooleanTest::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.BooleanTest.arg) return _internal_mutable_arg(); } inline void BooleanTest::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.BooleanTest.arg) } // .pg_query.BoolTestType booltesttype = 3 [json_name = "booltesttype"]; inline void BooleanTest::clear_booltesttype() { booltesttype_ = 0; } inline ::pg_query::BoolTestType BooleanTest::_internal_booltesttype() const { return static_cast< ::pg_query::BoolTestType >(booltesttype_); } inline ::pg_query::BoolTestType BooleanTest::booltesttype() const { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.booltesttype) return _internal_booltesttype(); } inline void BooleanTest::_internal_set_booltesttype(::pg_query::BoolTestType value) { booltesttype_ = value; } inline void BooleanTest::set_booltesttype(::pg_query::BoolTestType value) { _internal_set_booltesttype(value); // @@protoc_insertion_point(field_set:pg_query.BooleanTest.booltesttype) } // int32 location = 4 [json_name = "location"]; inline void BooleanTest::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 BooleanTest::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 BooleanTest::location() const { // @@protoc_insertion_point(field_get:pg_query.BooleanTest.location) return _internal_location(); } inline void BooleanTest::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void BooleanTest::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.BooleanTest.location) } // ------------------------------------------------------------------- // CoerceToDomain // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoerceToDomain::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool CoerceToDomain::has_xpr() const { return _internal_has_xpr(); } inline void CoerceToDomain::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& CoerceToDomain::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoerceToDomain::xpr() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.xpr) return _internal_xpr(); } inline void CoerceToDomain::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomain.xpr) } inline ::pg_query::Node* CoerceToDomain::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CoerceToDomain::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CoerceToDomain.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoerceToDomain::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* CoerceToDomain::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.CoerceToDomain.xpr) return _internal_mutable_xpr(); } inline void CoerceToDomain::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomain.xpr) } // .pg_query.Node arg = 2 [json_name = "arg"]; inline bool CoerceToDomain::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool CoerceToDomain::has_arg() const { return _internal_has_arg(); } inline void CoerceToDomain::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& CoerceToDomain::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoerceToDomain::arg() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.arg) return _internal_arg(); } inline void CoerceToDomain::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomain.arg) } inline ::pg_query::Node* CoerceToDomain::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CoerceToDomain::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.CoerceToDomain.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* CoerceToDomain::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* CoerceToDomain::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.CoerceToDomain.arg) return _internal_mutable_arg(); } inline void CoerceToDomain::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomain.arg) } // uint32 resulttype = 3 [json_name = "resulttype"]; inline void CoerceToDomain::clear_resulttype() { resulttype_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomain::_internal_resulttype() const { return resulttype_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomain::resulttype() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resulttype) return _internal_resulttype(); } inline void CoerceToDomain::_internal_set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { resulttype_ = value; } inline void CoerceToDomain::set_resulttype(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resulttype(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resulttype) } // int32 resulttypmod = 4 [json_name = "resulttypmod"]; inline void CoerceToDomain::clear_resulttypmod() { resulttypmod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomain::_internal_resulttypmod() const { return resulttypmod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomain::resulttypmod() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resulttypmod) return _internal_resulttypmod(); } inline void CoerceToDomain::_internal_set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { resulttypmod_ = value; } inline void CoerceToDomain::set_resulttypmod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_resulttypmod(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resulttypmod) } // uint32 resultcollid = 5 [json_name = "resultcollid"]; inline void CoerceToDomain::clear_resultcollid() { resultcollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomain::_internal_resultcollid() const { return resultcollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomain::resultcollid() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.resultcollid) return _internal_resultcollid(); } inline void CoerceToDomain::_internal_set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { resultcollid_ = value; } inline void CoerceToDomain::set_resultcollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resultcollid(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.resultcollid) } // .pg_query.CoercionForm coercionformat = 6 [json_name = "coercionformat"]; inline void CoerceToDomain::clear_coercionformat() { coercionformat_ = 0; } inline ::pg_query::CoercionForm CoerceToDomain::_internal_coercionformat() const { return static_cast< ::pg_query::CoercionForm >(coercionformat_); } inline ::pg_query::CoercionForm CoerceToDomain::coercionformat() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.coercionformat) return _internal_coercionformat(); } inline void CoerceToDomain::_internal_set_coercionformat(::pg_query::CoercionForm value) { coercionformat_ = value; } inline void CoerceToDomain::set_coercionformat(::pg_query::CoercionForm value) { _internal_set_coercionformat(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.coercionformat) } // int32 location = 7 [json_name = "location"]; inline void CoerceToDomain::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomain::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomain::location() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomain.location) return _internal_location(); } inline void CoerceToDomain::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void CoerceToDomain::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomain.location) } // ------------------------------------------------------------------- // CoerceToDomainValue // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CoerceToDomainValue::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool CoerceToDomainValue::has_xpr() const { return _internal_has_xpr(); } inline void CoerceToDomainValue::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& CoerceToDomainValue::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CoerceToDomainValue::xpr() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.xpr) return _internal_xpr(); } inline void CoerceToDomainValue::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CoerceToDomainValue.xpr) } inline ::pg_query::Node* CoerceToDomainValue::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CoerceToDomainValue::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CoerceToDomainValue.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* CoerceToDomainValue::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* CoerceToDomainValue::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.CoerceToDomainValue.xpr) return _internal_mutable_xpr(); } inline void CoerceToDomainValue::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CoerceToDomainValue.xpr) } // uint32 type_id = 2 [json_name = "typeId"]; inline void CoerceToDomainValue::clear_type_id() { type_id_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomainValue::_internal_type_id() const { return type_id_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomainValue::type_id() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.type_id) return _internal_type_id(); } inline void CoerceToDomainValue::_internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { type_id_ = value; } inline void CoerceToDomainValue::set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.type_id) } // int32 type_mod = 3 [json_name = "typeMod"]; inline void CoerceToDomainValue::clear_type_mod() { type_mod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomainValue::_internal_type_mod() const { return type_mod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomainValue::type_mod() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.type_mod) return _internal_type_mod(); } inline void CoerceToDomainValue::_internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { type_mod_ = value; } inline void CoerceToDomainValue::set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_type_mod(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.type_mod) } // uint32 collation = 4 [json_name = "collation"]; inline void CoerceToDomainValue::clear_collation() { collation_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomainValue::_internal_collation() const { return collation_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CoerceToDomainValue::collation() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.collation) return _internal_collation(); } inline void CoerceToDomainValue::_internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { collation_ = value; } inline void CoerceToDomainValue::set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_collation(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.collation) } // int32 location = 5 [json_name = "location"]; inline void CoerceToDomainValue::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomainValue::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CoerceToDomainValue::location() const { // @@protoc_insertion_point(field_get:pg_query.CoerceToDomainValue.location) return _internal_location(); } inline void CoerceToDomainValue::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void CoerceToDomainValue::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CoerceToDomainValue.location) } // ------------------------------------------------------------------- // SetToDefault // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool SetToDefault::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool SetToDefault::has_xpr() const { return _internal_has_xpr(); } inline void SetToDefault::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& SetToDefault::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SetToDefault::xpr() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.xpr) return _internal_xpr(); } inline void SetToDefault::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetToDefault.xpr) } inline ::pg_query::Node* SetToDefault::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SetToDefault::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.SetToDefault.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* SetToDefault::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* SetToDefault::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.SetToDefault.xpr) return _internal_mutable_xpr(); } inline void SetToDefault::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.SetToDefault.xpr) } // uint32 type_id = 2 [json_name = "typeId"]; inline void SetToDefault::clear_type_id() { type_id_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SetToDefault::_internal_type_id() const { return type_id_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SetToDefault::type_id() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.type_id) return _internal_type_id(); } inline void SetToDefault::_internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { type_id_ = value; } inline void SetToDefault::set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.type_id) } // int32 type_mod = 3 [json_name = "typeMod"]; inline void SetToDefault::clear_type_mod() { type_mod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 SetToDefault::_internal_type_mod() const { return type_mod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 SetToDefault::type_mod() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.type_mod) return _internal_type_mod(); } inline void SetToDefault::_internal_set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { type_mod_ = value; } inline void SetToDefault::set_type_mod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_type_mod(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.type_mod) } // uint32 collation = 4 [json_name = "collation"]; inline void SetToDefault::clear_collation() { collation_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SetToDefault::_internal_collation() const { return collation_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SetToDefault::collation() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.collation) return _internal_collation(); } inline void SetToDefault::_internal_set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { collation_ = value; } inline void SetToDefault::set_collation(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_collation(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.collation) } // int32 location = 5 [json_name = "location"]; inline void SetToDefault::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 SetToDefault::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 SetToDefault::location() const { // @@protoc_insertion_point(field_get:pg_query.SetToDefault.location) return _internal_location(); } inline void SetToDefault::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void SetToDefault::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SetToDefault.location) } // ------------------------------------------------------------------- // CurrentOfExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool CurrentOfExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool CurrentOfExpr::has_xpr() const { return _internal_has_xpr(); } inline void CurrentOfExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& CurrentOfExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CurrentOfExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.xpr) return _internal_xpr(); } inline void CurrentOfExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CurrentOfExpr.xpr) } inline ::pg_query::Node* CurrentOfExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CurrentOfExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.CurrentOfExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* CurrentOfExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* CurrentOfExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.CurrentOfExpr.xpr) return _internal_mutable_xpr(); } inline void CurrentOfExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CurrentOfExpr.xpr) } // uint32 cvarno = 2 [json_name = "cvarno"]; inline void CurrentOfExpr::clear_cvarno() { cvarno_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CurrentOfExpr::_internal_cvarno() const { return cvarno_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CurrentOfExpr::cvarno() const { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cvarno) return _internal_cvarno(); } inline void CurrentOfExpr::_internal_set_cvarno(::PROTOBUF_NAMESPACE_ID::uint32 value) { cvarno_ = value; } inline void CurrentOfExpr::set_cvarno(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_cvarno(value); // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cvarno) } // string cursor_name = 3 [json_name = "cursor_name"]; inline void CurrentOfExpr::clear_cursor_name() { cursor_name_.ClearToEmpty(); } inline const std::string& CurrentOfExpr::cursor_name() const { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cursor_name) return _internal_cursor_name(); } inline void CurrentOfExpr::set_cursor_name(const std::string& value) { _internal_set_cursor_name(value); // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cursor_name) } inline std::string* CurrentOfExpr::mutable_cursor_name() { // @@protoc_insertion_point(field_mutable:pg_query.CurrentOfExpr.cursor_name) return _internal_mutable_cursor_name(); } inline const std::string& CurrentOfExpr::_internal_cursor_name() const { return cursor_name_.Get(); } inline void CurrentOfExpr::_internal_set_cursor_name(const std::string& value) { cursor_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CurrentOfExpr::set_cursor_name(std::string&& value) { cursor_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CurrentOfExpr.cursor_name) } inline void CurrentOfExpr::set_cursor_name(const char* value) { GOOGLE_DCHECK(value != nullptr); cursor_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CurrentOfExpr.cursor_name) } inline void CurrentOfExpr::set_cursor_name(const char* value, size_t size) { cursor_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CurrentOfExpr.cursor_name) } inline std::string* CurrentOfExpr::_internal_mutable_cursor_name() { return cursor_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CurrentOfExpr::release_cursor_name() { // @@protoc_insertion_point(field_release:pg_query.CurrentOfExpr.cursor_name) return cursor_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CurrentOfExpr::set_allocated_cursor_name(std::string* cursor_name) { if (cursor_name != nullptr) { } else { } cursor_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), cursor_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CurrentOfExpr.cursor_name) } // int32 cursor_param = 4 [json_name = "cursor_param"]; inline void CurrentOfExpr::clear_cursor_param() { cursor_param_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CurrentOfExpr::_internal_cursor_param() const { return cursor_param_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CurrentOfExpr::cursor_param() const { // @@protoc_insertion_point(field_get:pg_query.CurrentOfExpr.cursor_param) return _internal_cursor_param(); } inline void CurrentOfExpr::_internal_set_cursor_param(::PROTOBUF_NAMESPACE_ID::int32 value) { cursor_param_ = value; } inline void CurrentOfExpr::set_cursor_param(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_cursor_param(value); // @@protoc_insertion_point(field_set:pg_query.CurrentOfExpr.cursor_param) } // ------------------------------------------------------------------- // NextValueExpr // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool NextValueExpr::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool NextValueExpr::has_xpr() const { return _internal_has_xpr(); } inline void NextValueExpr::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& NextValueExpr::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& NextValueExpr::xpr() const { // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.xpr) return _internal_xpr(); } inline void NextValueExpr::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.NextValueExpr.xpr) } inline ::pg_query::Node* NextValueExpr::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* NextValueExpr::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.NextValueExpr.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* NextValueExpr::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* NextValueExpr::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.NextValueExpr.xpr) return _internal_mutable_xpr(); } inline void NextValueExpr::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.NextValueExpr.xpr) } // uint32 seqid = 2 [json_name = "seqid"]; inline void NextValueExpr::clear_seqid() { seqid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NextValueExpr::_internal_seqid() const { return seqid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NextValueExpr::seqid() const { // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.seqid) return _internal_seqid(); } inline void NextValueExpr::_internal_set_seqid(::PROTOBUF_NAMESPACE_ID::uint32 value) { seqid_ = value; } inline void NextValueExpr::set_seqid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_seqid(value); // @@protoc_insertion_point(field_set:pg_query.NextValueExpr.seqid) } // uint32 type_id = 3 [json_name = "typeId"]; inline void NextValueExpr::clear_type_id() { type_id_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NextValueExpr::_internal_type_id() const { return type_id_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 NextValueExpr::type_id() const { // @@protoc_insertion_point(field_get:pg_query.NextValueExpr.type_id) return _internal_type_id(); } inline void NextValueExpr::_internal_set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { type_id_ = value; } inline void NextValueExpr::set_type_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_type_id(value); // @@protoc_insertion_point(field_set:pg_query.NextValueExpr.type_id) } // ------------------------------------------------------------------- // InferenceElem // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool InferenceElem::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool InferenceElem::has_xpr() const { return _internal_has_xpr(); } inline void InferenceElem::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& InferenceElem::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& InferenceElem::xpr() const { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.xpr) return _internal_xpr(); } inline void InferenceElem::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferenceElem.xpr) } inline ::pg_query::Node* InferenceElem::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* InferenceElem::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.InferenceElem.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* InferenceElem::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* InferenceElem::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.InferenceElem.xpr) return _internal_mutable_xpr(); } inline void InferenceElem::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.InferenceElem.xpr) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool InferenceElem::_internal_has_expr() const { return this != internal_default_instance() && expr_ != nullptr; } inline bool InferenceElem::has_expr() const { return _internal_has_expr(); } inline void InferenceElem::clear_expr() { if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; } inline const ::pg_query::Node& InferenceElem::_internal_expr() const { const ::pg_query::Node* p = expr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& InferenceElem::expr() const { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.expr) return _internal_expr(); } inline void InferenceElem::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); } expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferenceElem.expr) } inline ::pg_query::Node* InferenceElem::release_expr() { ::pg_query::Node* temp = expr_; expr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* InferenceElem::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.InferenceElem.expr) ::pg_query::Node* temp = expr_; expr_ = nullptr; return temp; } inline ::pg_query::Node* InferenceElem::_internal_mutable_expr() { if (expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); expr_ = p; } return expr_; } inline ::pg_query::Node* InferenceElem::mutable_expr() { // @@protoc_insertion_point(field_mutable:pg_query.InferenceElem.expr) return _internal_mutable_expr(); } inline void InferenceElem::set_allocated_expr(::pg_query::Node* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.InferenceElem.expr) } // uint32 infercollid = 3 [json_name = "infercollid"]; inline void InferenceElem::clear_infercollid() { infercollid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 InferenceElem::_internal_infercollid() const { return infercollid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 InferenceElem::infercollid() const { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.infercollid) return _internal_infercollid(); } inline void InferenceElem::_internal_set_infercollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { infercollid_ = value; } inline void InferenceElem::set_infercollid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_infercollid(value); // @@protoc_insertion_point(field_set:pg_query.InferenceElem.infercollid) } // uint32 inferopclass = 4 [json_name = "inferopclass"]; inline void InferenceElem::clear_inferopclass() { inferopclass_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 InferenceElem::_internal_inferopclass() const { return inferopclass_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 InferenceElem::inferopclass() const { // @@protoc_insertion_point(field_get:pg_query.InferenceElem.inferopclass) return _internal_inferopclass(); } inline void InferenceElem::_internal_set_inferopclass(::PROTOBUF_NAMESPACE_ID::uint32 value) { inferopclass_ = value; } inline void InferenceElem::set_inferopclass(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_inferopclass(value); // @@protoc_insertion_point(field_set:pg_query.InferenceElem.inferopclass) } // ------------------------------------------------------------------- // TargetEntry // .pg_query.Node xpr = 1 [json_name = "xpr"]; inline bool TargetEntry::_internal_has_xpr() const { return this != internal_default_instance() && xpr_ != nullptr; } inline bool TargetEntry::has_xpr() const { return _internal_has_xpr(); } inline void TargetEntry::clear_xpr() { if (GetArena() == nullptr && xpr_ != nullptr) { delete xpr_; } xpr_ = nullptr; } inline const ::pg_query::Node& TargetEntry::_internal_xpr() const { const ::pg_query::Node* p = xpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TargetEntry::xpr() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.xpr) return _internal_xpr(); } inline void TargetEntry::unsafe_arena_set_allocated_xpr( ::pg_query::Node* xpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(xpr_); } xpr_ = xpr; if (xpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TargetEntry.xpr) } inline ::pg_query::Node* TargetEntry::release_xpr() { ::pg_query::Node* temp = xpr_; xpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* TargetEntry::unsafe_arena_release_xpr() { // @@protoc_insertion_point(field_release:pg_query.TargetEntry.xpr) ::pg_query::Node* temp = xpr_; xpr_ = nullptr; return temp; } inline ::pg_query::Node* TargetEntry::_internal_mutable_xpr() { if (xpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); xpr_ = p; } return xpr_; } inline ::pg_query::Node* TargetEntry::mutable_xpr() { // @@protoc_insertion_point(field_mutable:pg_query.TargetEntry.xpr) return _internal_mutable_xpr(); } inline void TargetEntry::set_allocated_xpr(::pg_query::Node* xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete xpr_; } if (xpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(xpr); if (message_arena != submessage_arena) { xpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, xpr, submessage_arena); } } else { } xpr_ = xpr; // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.xpr) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool TargetEntry::_internal_has_expr() const { return this != internal_default_instance() && expr_ != nullptr; } inline bool TargetEntry::has_expr() const { return _internal_has_expr(); } inline void TargetEntry::clear_expr() { if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; } inline const ::pg_query::Node& TargetEntry::_internal_expr() const { const ::pg_query::Node* p = expr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TargetEntry::expr() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.expr) return _internal_expr(); } inline void TargetEntry::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); } expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TargetEntry.expr) } inline ::pg_query::Node* TargetEntry::release_expr() { ::pg_query::Node* temp = expr_; expr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* TargetEntry::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.TargetEntry.expr) ::pg_query::Node* temp = expr_; expr_ = nullptr; return temp; } inline ::pg_query::Node* TargetEntry::_internal_mutable_expr() { if (expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); expr_ = p; } return expr_; } inline ::pg_query::Node* TargetEntry::mutable_expr() { // @@protoc_insertion_point(field_mutable:pg_query.TargetEntry.expr) return _internal_mutable_expr(); } inline void TargetEntry::set_allocated_expr(::pg_query::Node* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.expr) } // int32 resno = 3 [json_name = "resno"]; inline void TargetEntry::clear_resno() { resno_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 TargetEntry::_internal_resno() const { return resno_; } inline ::PROTOBUF_NAMESPACE_ID::int32 TargetEntry::resno() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resno) return _internal_resno(); } inline void TargetEntry::_internal_set_resno(::PROTOBUF_NAMESPACE_ID::int32 value) { resno_ = value; } inline void TargetEntry::set_resno(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_resno(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resno) } // string resname = 4 [json_name = "resname"]; inline void TargetEntry::clear_resname() { resname_.ClearToEmpty(); } inline const std::string& TargetEntry::resname() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resname) return _internal_resname(); } inline void TargetEntry::set_resname(const std::string& value) { _internal_set_resname(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resname) } inline std::string* TargetEntry::mutable_resname() { // @@protoc_insertion_point(field_mutable:pg_query.TargetEntry.resname) return _internal_mutable_resname(); } inline const std::string& TargetEntry::_internal_resname() const { return resname_.Get(); } inline void TargetEntry::_internal_set_resname(const std::string& value) { resname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void TargetEntry::set_resname(std::string&& value) { resname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.TargetEntry.resname) } inline void TargetEntry::set_resname(const char* value) { GOOGLE_DCHECK(value != nullptr); resname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.TargetEntry.resname) } inline void TargetEntry::set_resname(const char* value, size_t size) { resname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.TargetEntry.resname) } inline std::string* TargetEntry::_internal_mutable_resname() { return resname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* TargetEntry::release_resname() { // @@protoc_insertion_point(field_release:pg_query.TargetEntry.resname) return resname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void TargetEntry::set_allocated_resname(std::string* resname) { if (resname != nullptr) { } else { } resname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), resname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.TargetEntry.resname) } // uint32 ressortgroupref = 5 [json_name = "ressortgroupref"]; inline void TargetEntry::clear_ressortgroupref() { ressortgroupref_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 TargetEntry::_internal_ressortgroupref() const { return ressortgroupref_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 TargetEntry::ressortgroupref() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.ressortgroupref) return _internal_ressortgroupref(); } inline void TargetEntry::_internal_set_ressortgroupref(::PROTOBUF_NAMESPACE_ID::uint32 value) { ressortgroupref_ = value; } inline void TargetEntry::set_ressortgroupref(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_ressortgroupref(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.ressortgroupref) } // uint32 resorigtbl = 6 [json_name = "resorigtbl"]; inline void TargetEntry::clear_resorigtbl() { resorigtbl_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 TargetEntry::_internal_resorigtbl() const { return resorigtbl_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 TargetEntry::resorigtbl() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resorigtbl) return _internal_resorigtbl(); } inline void TargetEntry::_internal_set_resorigtbl(::PROTOBUF_NAMESPACE_ID::uint32 value) { resorigtbl_ = value; } inline void TargetEntry::set_resorigtbl(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_resorigtbl(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resorigtbl) } // int32 resorigcol = 7 [json_name = "resorigcol"]; inline void TargetEntry::clear_resorigcol() { resorigcol_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 TargetEntry::_internal_resorigcol() const { return resorigcol_; } inline ::PROTOBUF_NAMESPACE_ID::int32 TargetEntry::resorigcol() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resorigcol) return _internal_resorigcol(); } inline void TargetEntry::_internal_set_resorigcol(::PROTOBUF_NAMESPACE_ID::int32 value) { resorigcol_ = value; } inline void TargetEntry::set_resorigcol(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_resorigcol(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resorigcol) } // bool resjunk = 8 [json_name = "resjunk"]; inline void TargetEntry::clear_resjunk() { resjunk_ = false; } inline bool TargetEntry::_internal_resjunk() const { return resjunk_; } inline bool TargetEntry::resjunk() const { // @@protoc_insertion_point(field_get:pg_query.TargetEntry.resjunk) return _internal_resjunk(); } inline void TargetEntry::_internal_set_resjunk(bool value) { resjunk_ = value; } inline void TargetEntry::set_resjunk(bool value) { _internal_set_resjunk(value); // @@protoc_insertion_point(field_set:pg_query.TargetEntry.resjunk) } // ------------------------------------------------------------------- // RangeTblRef // int32 rtindex = 1 [json_name = "rtindex"]; inline void RangeTblRef::clear_rtindex() { rtindex_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblRef::_internal_rtindex() const { return rtindex_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblRef::rtindex() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblRef.rtindex) return _internal_rtindex(); } inline void RangeTblRef::_internal_set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value) { rtindex_ = value; } inline void RangeTblRef::set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_rtindex(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblRef.rtindex) } // ------------------------------------------------------------------- // JoinExpr // .pg_query.JoinType jointype = 1 [json_name = "jointype"]; inline void JoinExpr::clear_jointype() { jointype_ = 0; } inline ::pg_query::JoinType JoinExpr::_internal_jointype() const { return static_cast< ::pg_query::JoinType >(jointype_); } inline ::pg_query::JoinType JoinExpr::jointype() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.jointype) return _internal_jointype(); } inline void JoinExpr::_internal_set_jointype(::pg_query::JoinType value) { jointype_ = value; } inline void JoinExpr::set_jointype(::pg_query::JoinType value) { _internal_set_jointype(value); // @@protoc_insertion_point(field_set:pg_query.JoinExpr.jointype) } // bool is_natural = 2 [json_name = "isNatural"]; inline void JoinExpr::clear_is_natural() { is_natural_ = false; } inline bool JoinExpr::_internal_is_natural() const { return is_natural_; } inline bool JoinExpr::is_natural() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.is_natural) return _internal_is_natural(); } inline void JoinExpr::_internal_set_is_natural(bool value) { is_natural_ = value; } inline void JoinExpr::set_is_natural(bool value) { _internal_set_is_natural(value); // @@protoc_insertion_point(field_set:pg_query.JoinExpr.is_natural) } // .pg_query.Node larg = 3 [json_name = "larg"]; inline bool JoinExpr::_internal_has_larg() const { return this != internal_default_instance() && larg_ != nullptr; } inline bool JoinExpr::has_larg() const { return _internal_has_larg(); } inline void JoinExpr::clear_larg() { if (GetArena() == nullptr && larg_ != nullptr) { delete larg_; } larg_ = nullptr; } inline const ::pg_query::Node& JoinExpr::_internal_larg() const { const ::pg_query::Node* p = larg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JoinExpr::larg() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.larg) return _internal_larg(); } inline void JoinExpr::unsafe_arena_set_allocated_larg( ::pg_query::Node* larg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(larg_); } larg_ = larg; if (larg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.larg) } inline ::pg_query::Node* JoinExpr::release_larg() { ::pg_query::Node* temp = larg_; larg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* JoinExpr::unsafe_arena_release_larg() { // @@protoc_insertion_point(field_release:pg_query.JoinExpr.larg) ::pg_query::Node* temp = larg_; larg_ = nullptr; return temp; } inline ::pg_query::Node* JoinExpr::_internal_mutable_larg() { if (larg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); larg_ = p; } return larg_; } inline ::pg_query::Node* JoinExpr::mutable_larg() { // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.larg) return _internal_mutable_larg(); } inline void JoinExpr::set_allocated_larg(::pg_query::Node* larg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete larg_; } if (larg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(larg); if (message_arena != submessage_arena) { larg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, larg, submessage_arena); } } else { } larg_ = larg; // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.larg) } // .pg_query.Node rarg = 4 [json_name = "rarg"]; inline bool JoinExpr::_internal_has_rarg() const { return this != internal_default_instance() && rarg_ != nullptr; } inline bool JoinExpr::has_rarg() const { return _internal_has_rarg(); } inline void JoinExpr::clear_rarg() { if (GetArena() == nullptr && rarg_ != nullptr) { delete rarg_; } rarg_ = nullptr; } inline const ::pg_query::Node& JoinExpr::_internal_rarg() const { const ::pg_query::Node* p = rarg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JoinExpr::rarg() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.rarg) return _internal_rarg(); } inline void JoinExpr::unsafe_arena_set_allocated_rarg( ::pg_query::Node* rarg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rarg_); } rarg_ = rarg; if (rarg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.rarg) } inline ::pg_query::Node* JoinExpr::release_rarg() { ::pg_query::Node* temp = rarg_; rarg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* JoinExpr::unsafe_arena_release_rarg() { // @@protoc_insertion_point(field_release:pg_query.JoinExpr.rarg) ::pg_query::Node* temp = rarg_; rarg_ = nullptr; return temp; } inline ::pg_query::Node* JoinExpr::_internal_mutable_rarg() { if (rarg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); rarg_ = p; } return rarg_; } inline ::pg_query::Node* JoinExpr::mutable_rarg() { // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.rarg) return _internal_mutable_rarg(); } inline void JoinExpr::set_allocated_rarg(::pg_query::Node* rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete rarg_; } if (rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rarg); if (message_arena != submessage_arena) { rarg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rarg, submessage_arena); } } else { } rarg_ = rarg; // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.rarg) } // repeated .pg_query.Node using_clause = 5 [json_name = "usingClause"]; inline int JoinExpr::_internal_using_clause_size() const { return using_clause_.size(); } inline int JoinExpr::using_clause_size() const { return _internal_using_clause_size(); } inline void JoinExpr::clear_using_clause() { using_clause_.Clear(); } inline ::pg_query::Node* JoinExpr::mutable_using_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.using_clause) return using_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* JoinExpr::mutable_using_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.JoinExpr.using_clause) return &using_clause_; } inline const ::pg_query::Node& JoinExpr::_internal_using_clause(int index) const { return using_clause_.Get(index); } inline const ::pg_query::Node& JoinExpr::using_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.using_clause) return _internal_using_clause(index); } inline ::pg_query::Node* JoinExpr::_internal_add_using_clause() { return using_clause_.Add(); } inline ::pg_query::Node* JoinExpr::add_using_clause() { // @@protoc_insertion_point(field_add:pg_query.JoinExpr.using_clause) return _internal_add_using_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& JoinExpr::using_clause() const { // @@protoc_insertion_point(field_list:pg_query.JoinExpr.using_clause) return using_clause_; } // .pg_query.Node quals = 6 [json_name = "quals"]; inline bool JoinExpr::_internal_has_quals() const { return this != internal_default_instance() && quals_ != nullptr; } inline bool JoinExpr::has_quals() const { return _internal_has_quals(); } inline void JoinExpr::clear_quals() { if (GetArena() == nullptr && quals_ != nullptr) { delete quals_; } quals_ = nullptr; } inline const ::pg_query::Node& JoinExpr::_internal_quals() const { const ::pg_query::Node* p = quals_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& JoinExpr::quals() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.quals) return _internal_quals(); } inline void JoinExpr::unsafe_arena_set_allocated_quals( ::pg_query::Node* quals) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(quals_); } quals_ = quals; if (quals) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.quals) } inline ::pg_query::Node* JoinExpr::release_quals() { ::pg_query::Node* temp = quals_; quals_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* JoinExpr::unsafe_arena_release_quals() { // @@protoc_insertion_point(field_release:pg_query.JoinExpr.quals) ::pg_query::Node* temp = quals_; quals_ = nullptr; return temp; } inline ::pg_query::Node* JoinExpr::_internal_mutable_quals() { if (quals_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); quals_ = p; } return quals_; } inline ::pg_query::Node* JoinExpr::mutable_quals() { // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.quals) return _internal_mutable_quals(); } inline void JoinExpr::set_allocated_quals(::pg_query::Node* quals) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete quals_; } if (quals) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(quals); if (message_arena != submessage_arena) { quals = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, quals, submessage_arena); } } else { } quals_ = quals; // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.quals) } // .pg_query.Alias alias = 7 [json_name = "alias"]; inline bool JoinExpr::_internal_has_alias() const { return this != internal_default_instance() && alias_ != nullptr; } inline bool JoinExpr::has_alias() const { return _internal_has_alias(); } inline void JoinExpr::clear_alias() { if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; } inline const ::pg_query::Alias& JoinExpr::_internal_alias() const { const ::pg_query::Alias* p = alias_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& JoinExpr::alias() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.alias) return _internal_alias(); } inline void JoinExpr::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); } alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.JoinExpr.alias) } inline ::pg_query::Alias* JoinExpr::release_alias() { ::pg_query::Alias* temp = alias_; alias_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Alias* JoinExpr::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.JoinExpr.alias) ::pg_query::Alias* temp = alias_; alias_ = nullptr; return temp; } inline ::pg_query::Alias* JoinExpr::_internal_mutable_alias() { if (alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); alias_ = p; } return alias_; } inline ::pg_query::Alias* JoinExpr::mutable_alias() { // @@protoc_insertion_point(field_mutable:pg_query.JoinExpr.alias) return _internal_mutable_alias(); } inline void JoinExpr::set_allocated_alias(::pg_query::Alias* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.JoinExpr.alias) } // int32 rtindex = 8 [json_name = "rtindex"]; inline void JoinExpr::clear_rtindex() { rtindex_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 JoinExpr::_internal_rtindex() const { return rtindex_; } inline ::PROTOBUF_NAMESPACE_ID::int32 JoinExpr::rtindex() const { // @@protoc_insertion_point(field_get:pg_query.JoinExpr.rtindex) return _internal_rtindex(); } inline void JoinExpr::_internal_set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value) { rtindex_ = value; } inline void JoinExpr::set_rtindex(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_rtindex(value); // @@protoc_insertion_point(field_set:pg_query.JoinExpr.rtindex) } // ------------------------------------------------------------------- // FromExpr // repeated .pg_query.Node fromlist = 1 [json_name = "fromlist"]; inline int FromExpr::_internal_fromlist_size() const { return fromlist_.size(); } inline int FromExpr::fromlist_size() const { return _internal_fromlist_size(); } inline void FromExpr::clear_fromlist() { fromlist_.Clear(); } inline ::pg_query::Node* FromExpr::mutable_fromlist(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FromExpr.fromlist) return fromlist_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FromExpr::mutable_fromlist() { // @@protoc_insertion_point(field_mutable_list:pg_query.FromExpr.fromlist) return &fromlist_; } inline const ::pg_query::Node& FromExpr::_internal_fromlist(int index) const { return fromlist_.Get(index); } inline const ::pg_query::Node& FromExpr::fromlist(int index) const { // @@protoc_insertion_point(field_get:pg_query.FromExpr.fromlist) return _internal_fromlist(index); } inline ::pg_query::Node* FromExpr::_internal_add_fromlist() { return fromlist_.Add(); } inline ::pg_query::Node* FromExpr::add_fromlist() { // @@protoc_insertion_point(field_add:pg_query.FromExpr.fromlist) return _internal_add_fromlist(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FromExpr::fromlist() const { // @@protoc_insertion_point(field_list:pg_query.FromExpr.fromlist) return fromlist_; } // .pg_query.Node quals = 2 [json_name = "quals"]; inline bool FromExpr::_internal_has_quals() const { return this != internal_default_instance() && quals_ != nullptr; } inline bool FromExpr::has_quals() const { return _internal_has_quals(); } inline void FromExpr::clear_quals() { if (GetArena() == nullptr && quals_ != nullptr) { delete quals_; } quals_ = nullptr; } inline const ::pg_query::Node& FromExpr::_internal_quals() const { const ::pg_query::Node* p = quals_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FromExpr::quals() const { // @@protoc_insertion_point(field_get:pg_query.FromExpr.quals) return _internal_quals(); } inline void FromExpr::unsafe_arena_set_allocated_quals( ::pg_query::Node* quals) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(quals_); } quals_ = quals; if (quals) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FromExpr.quals) } inline ::pg_query::Node* FromExpr::release_quals() { ::pg_query::Node* temp = quals_; quals_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* FromExpr::unsafe_arena_release_quals() { // @@protoc_insertion_point(field_release:pg_query.FromExpr.quals) ::pg_query::Node* temp = quals_; quals_ = nullptr; return temp; } inline ::pg_query::Node* FromExpr::_internal_mutable_quals() { if (quals_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); quals_ = p; } return quals_; } inline ::pg_query::Node* FromExpr::mutable_quals() { // @@protoc_insertion_point(field_mutable:pg_query.FromExpr.quals) return _internal_mutable_quals(); } inline void FromExpr::set_allocated_quals(::pg_query::Node* quals) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete quals_; } if (quals) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(quals); if (message_arena != submessage_arena) { quals = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, quals, submessage_arena); } } else { } quals_ = quals; // @@protoc_insertion_point(field_set_allocated:pg_query.FromExpr.quals) } // ------------------------------------------------------------------- // OnConflictExpr // .pg_query.OnConflictAction action = 1 [json_name = "action"]; inline void OnConflictExpr::clear_action() { action_ = 0; } inline ::pg_query::OnConflictAction OnConflictExpr::_internal_action() const { return static_cast< ::pg_query::OnConflictAction >(action_); } inline ::pg_query::OnConflictAction OnConflictExpr::action() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.action) return _internal_action(); } inline void OnConflictExpr::_internal_set_action(::pg_query::OnConflictAction value) { action_ = value; } inline void OnConflictExpr::set_action(::pg_query::OnConflictAction value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.action) } // repeated .pg_query.Node arbiter_elems = 2 [json_name = "arbiterElems"]; inline int OnConflictExpr::_internal_arbiter_elems_size() const { return arbiter_elems_.size(); } inline int OnConflictExpr::arbiter_elems_size() const { return _internal_arbiter_elems_size(); } inline void OnConflictExpr::clear_arbiter_elems() { arbiter_elems_.Clear(); } inline ::pg_query::Node* OnConflictExpr::mutable_arbiter_elems(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.arbiter_elems) return arbiter_elems_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OnConflictExpr::mutable_arbiter_elems() { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.arbiter_elems) return &arbiter_elems_; } inline const ::pg_query::Node& OnConflictExpr::_internal_arbiter_elems(int index) const { return arbiter_elems_.Get(index); } inline const ::pg_query::Node& OnConflictExpr::arbiter_elems(int index) const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.arbiter_elems) return _internal_arbiter_elems(index); } inline ::pg_query::Node* OnConflictExpr::_internal_add_arbiter_elems() { return arbiter_elems_.Add(); } inline ::pg_query::Node* OnConflictExpr::add_arbiter_elems() { // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.arbiter_elems) return _internal_add_arbiter_elems(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OnConflictExpr::arbiter_elems() const { // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.arbiter_elems) return arbiter_elems_; } // .pg_query.Node arbiter_where = 3 [json_name = "arbiterWhere"]; inline bool OnConflictExpr::_internal_has_arbiter_where() const { return this != internal_default_instance() && arbiter_where_ != nullptr; } inline bool OnConflictExpr::has_arbiter_where() const { return _internal_has_arbiter_where(); } inline void OnConflictExpr::clear_arbiter_where() { if (GetArena() == nullptr && arbiter_where_ != nullptr) { delete arbiter_where_; } arbiter_where_ = nullptr; } inline const ::pg_query::Node& OnConflictExpr::_internal_arbiter_where() const { const ::pg_query::Node* p = arbiter_where_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& OnConflictExpr::arbiter_where() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.arbiter_where) return _internal_arbiter_where(); } inline void OnConflictExpr::unsafe_arena_set_allocated_arbiter_where( ::pg_query::Node* arbiter_where) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arbiter_where_); } arbiter_where_ = arbiter_where; if (arbiter_where) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictExpr.arbiter_where) } inline ::pg_query::Node* OnConflictExpr::release_arbiter_where() { ::pg_query::Node* temp = arbiter_where_; arbiter_where_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* OnConflictExpr::unsafe_arena_release_arbiter_where() { // @@protoc_insertion_point(field_release:pg_query.OnConflictExpr.arbiter_where) ::pg_query::Node* temp = arbiter_where_; arbiter_where_ = nullptr; return temp; } inline ::pg_query::Node* OnConflictExpr::_internal_mutable_arbiter_where() { if (arbiter_where_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arbiter_where_ = p; } return arbiter_where_; } inline ::pg_query::Node* OnConflictExpr::mutable_arbiter_where() { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.arbiter_where) return _internal_mutable_arbiter_where(); } inline void OnConflictExpr::set_allocated_arbiter_where(::pg_query::Node* arbiter_where) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arbiter_where_; } if (arbiter_where) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arbiter_where); if (message_arena != submessage_arena) { arbiter_where = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arbiter_where, submessage_arena); } } else { } arbiter_where_ = arbiter_where; // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictExpr.arbiter_where) } // uint32 constraint = 4 [json_name = "constraint"]; inline void OnConflictExpr::clear_constraint() { constraint_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OnConflictExpr::_internal_constraint() const { return constraint_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 OnConflictExpr::constraint() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.constraint) return _internal_constraint(); } inline void OnConflictExpr::_internal_set_constraint(::PROTOBUF_NAMESPACE_ID::uint32 value) { constraint_ = value; } inline void OnConflictExpr::set_constraint(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_constraint(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.constraint) } // repeated .pg_query.Node on_conflict_set = 5 [json_name = "onConflictSet"]; inline int OnConflictExpr::_internal_on_conflict_set_size() const { return on_conflict_set_.size(); } inline int OnConflictExpr::on_conflict_set_size() const { return _internal_on_conflict_set_size(); } inline void OnConflictExpr::clear_on_conflict_set() { on_conflict_set_.Clear(); } inline ::pg_query::Node* OnConflictExpr::mutable_on_conflict_set(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.on_conflict_set) return on_conflict_set_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OnConflictExpr::mutable_on_conflict_set() { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.on_conflict_set) return &on_conflict_set_; } inline const ::pg_query::Node& OnConflictExpr::_internal_on_conflict_set(int index) const { return on_conflict_set_.Get(index); } inline const ::pg_query::Node& OnConflictExpr::on_conflict_set(int index) const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.on_conflict_set) return _internal_on_conflict_set(index); } inline ::pg_query::Node* OnConflictExpr::_internal_add_on_conflict_set() { return on_conflict_set_.Add(); } inline ::pg_query::Node* OnConflictExpr::add_on_conflict_set() { // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.on_conflict_set) return _internal_add_on_conflict_set(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OnConflictExpr::on_conflict_set() const { // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.on_conflict_set) return on_conflict_set_; } // .pg_query.Node on_conflict_where = 6 [json_name = "onConflictWhere"]; inline bool OnConflictExpr::_internal_has_on_conflict_where() const { return this != internal_default_instance() && on_conflict_where_ != nullptr; } inline bool OnConflictExpr::has_on_conflict_where() const { return _internal_has_on_conflict_where(); } inline void OnConflictExpr::clear_on_conflict_where() { if (GetArena() == nullptr && on_conflict_where_ != nullptr) { delete on_conflict_where_; } on_conflict_where_ = nullptr; } inline const ::pg_query::Node& OnConflictExpr::_internal_on_conflict_where() const { const ::pg_query::Node* p = on_conflict_where_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& OnConflictExpr::on_conflict_where() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.on_conflict_where) return _internal_on_conflict_where(); } inline void OnConflictExpr::unsafe_arena_set_allocated_on_conflict_where( ::pg_query::Node* on_conflict_where) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(on_conflict_where_); } on_conflict_where_ = on_conflict_where; if (on_conflict_where) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictExpr.on_conflict_where) } inline ::pg_query::Node* OnConflictExpr::release_on_conflict_where() { ::pg_query::Node* temp = on_conflict_where_; on_conflict_where_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* OnConflictExpr::unsafe_arena_release_on_conflict_where() { // @@protoc_insertion_point(field_release:pg_query.OnConflictExpr.on_conflict_where) ::pg_query::Node* temp = on_conflict_where_; on_conflict_where_ = nullptr; return temp; } inline ::pg_query::Node* OnConflictExpr::_internal_mutable_on_conflict_where() { if (on_conflict_where_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); on_conflict_where_ = p; } return on_conflict_where_; } inline ::pg_query::Node* OnConflictExpr::mutable_on_conflict_where() { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.on_conflict_where) return _internal_mutable_on_conflict_where(); } inline void OnConflictExpr::set_allocated_on_conflict_where(::pg_query::Node* on_conflict_where) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete on_conflict_where_; } if (on_conflict_where) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(on_conflict_where); if (message_arena != submessage_arena) { on_conflict_where = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, on_conflict_where, submessage_arena); } } else { } on_conflict_where_ = on_conflict_where; // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictExpr.on_conflict_where) } // int32 excl_rel_index = 7 [json_name = "exclRelIndex"]; inline void OnConflictExpr::clear_excl_rel_index() { excl_rel_index_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 OnConflictExpr::_internal_excl_rel_index() const { return excl_rel_index_; } inline ::PROTOBUF_NAMESPACE_ID::int32 OnConflictExpr::excl_rel_index() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.excl_rel_index) return _internal_excl_rel_index(); } inline void OnConflictExpr::_internal_set_excl_rel_index(::PROTOBUF_NAMESPACE_ID::int32 value) { excl_rel_index_ = value; } inline void OnConflictExpr::set_excl_rel_index(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_excl_rel_index(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictExpr.excl_rel_index) } // repeated .pg_query.Node excl_rel_tlist = 8 [json_name = "exclRelTlist"]; inline int OnConflictExpr::_internal_excl_rel_tlist_size() const { return excl_rel_tlist_.size(); } inline int OnConflictExpr::excl_rel_tlist_size() const { return _internal_excl_rel_tlist_size(); } inline void OnConflictExpr::clear_excl_rel_tlist() { excl_rel_tlist_.Clear(); } inline ::pg_query::Node* OnConflictExpr::mutable_excl_rel_tlist(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictExpr.excl_rel_tlist) return excl_rel_tlist_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OnConflictExpr::mutable_excl_rel_tlist() { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictExpr.excl_rel_tlist) return &excl_rel_tlist_; } inline const ::pg_query::Node& OnConflictExpr::_internal_excl_rel_tlist(int index) const { return excl_rel_tlist_.Get(index); } inline const ::pg_query::Node& OnConflictExpr::excl_rel_tlist(int index) const { // @@protoc_insertion_point(field_get:pg_query.OnConflictExpr.excl_rel_tlist) return _internal_excl_rel_tlist(index); } inline ::pg_query::Node* OnConflictExpr::_internal_add_excl_rel_tlist() { return excl_rel_tlist_.Add(); } inline ::pg_query::Node* OnConflictExpr::add_excl_rel_tlist() { // @@protoc_insertion_point(field_add:pg_query.OnConflictExpr.excl_rel_tlist) return _internal_add_excl_rel_tlist(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OnConflictExpr::excl_rel_tlist() const { // @@protoc_insertion_point(field_list:pg_query.OnConflictExpr.excl_rel_tlist) return excl_rel_tlist_; } // ------------------------------------------------------------------- // IntoClause // .pg_query.RangeVar rel = 1 [json_name = "rel"]; inline bool IntoClause::_internal_has_rel() const { return this != internal_default_instance() && rel_ != nullptr; } inline bool IntoClause::has_rel() const { return _internal_has_rel(); } inline void IntoClause::clear_rel() { if (GetArena() == nullptr && rel_ != nullptr) { delete rel_; } rel_ = nullptr; } inline const ::pg_query::RangeVar& IntoClause::_internal_rel() const { const ::pg_query::RangeVar* p = rel_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& IntoClause::rel() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.rel) return _internal_rel(); } inline void IntoClause::unsafe_arena_set_allocated_rel( ::pg_query::RangeVar* rel) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rel_); } rel_ = rel; if (rel) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IntoClause.rel) } inline ::pg_query::RangeVar* IntoClause::release_rel() { ::pg_query::RangeVar* temp = rel_; rel_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* IntoClause::unsafe_arena_release_rel() { // @@protoc_insertion_point(field_release:pg_query.IntoClause.rel) ::pg_query::RangeVar* temp = rel_; rel_ = nullptr; return temp; } inline ::pg_query::RangeVar* IntoClause::_internal_mutable_rel() { if (rel_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); rel_ = p; } return rel_; } inline ::pg_query::RangeVar* IntoClause::mutable_rel() { // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.rel) return _internal_mutable_rel(); } inline void IntoClause::set_allocated_rel(::pg_query::RangeVar* rel) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete rel_; } if (rel) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rel); if (message_arena != submessage_arena) { rel = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rel, submessage_arena); } } else { } rel_ = rel; // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.rel) } // repeated .pg_query.Node col_names = 2 [json_name = "colNames"]; inline int IntoClause::_internal_col_names_size() const { return col_names_.size(); } inline int IntoClause::col_names_size() const { return _internal_col_names_size(); } inline void IntoClause::clear_col_names() { col_names_.Clear(); } inline ::pg_query::Node* IntoClause::mutable_col_names(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.col_names) return col_names_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IntoClause::mutable_col_names() { // @@protoc_insertion_point(field_mutable_list:pg_query.IntoClause.col_names) return &col_names_; } inline const ::pg_query::Node& IntoClause::_internal_col_names(int index) const { return col_names_.Get(index); } inline const ::pg_query::Node& IntoClause::col_names(int index) const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.col_names) return _internal_col_names(index); } inline ::pg_query::Node* IntoClause::_internal_add_col_names() { return col_names_.Add(); } inline ::pg_query::Node* IntoClause::add_col_names() { // @@protoc_insertion_point(field_add:pg_query.IntoClause.col_names) return _internal_add_col_names(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IntoClause::col_names() const { // @@protoc_insertion_point(field_list:pg_query.IntoClause.col_names) return col_names_; } // string access_method = 3 [json_name = "accessMethod"]; inline void IntoClause::clear_access_method() { access_method_.ClearToEmpty(); } inline const std::string& IntoClause::access_method() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.access_method) return _internal_access_method(); } inline void IntoClause::set_access_method(const std::string& value) { _internal_set_access_method(value); // @@protoc_insertion_point(field_set:pg_query.IntoClause.access_method) } inline std::string* IntoClause::mutable_access_method() { // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.access_method) return _internal_mutable_access_method(); } inline const std::string& IntoClause::_internal_access_method() const { return access_method_.Get(); } inline void IntoClause::_internal_set_access_method(const std::string& value) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void IntoClause::set_access_method(std::string&& value) { access_method_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.IntoClause.access_method) } inline void IntoClause::set_access_method(const char* value) { GOOGLE_DCHECK(value != nullptr); access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.IntoClause.access_method) } inline void IntoClause::set_access_method(const char* value, size_t size) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.IntoClause.access_method) } inline std::string* IntoClause::_internal_mutable_access_method() { return access_method_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* IntoClause::release_access_method() { // @@protoc_insertion_point(field_release:pg_query.IntoClause.access_method) return access_method_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void IntoClause::set_allocated_access_method(std::string* access_method) { if (access_method != nullptr) { } else { } access_method_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), access_method, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.access_method) } // repeated .pg_query.Node options = 4 [json_name = "options"]; inline int IntoClause::_internal_options_size() const { return options_.size(); } inline int IntoClause::options_size() const { return _internal_options_size(); } inline void IntoClause::clear_options() { options_.Clear(); } inline ::pg_query::Node* IntoClause::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IntoClause::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.IntoClause.options) return &options_; } inline const ::pg_query::Node& IntoClause::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& IntoClause::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.options) return _internal_options(index); } inline ::pg_query::Node* IntoClause::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* IntoClause::add_options() { // @@protoc_insertion_point(field_add:pg_query.IntoClause.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IntoClause::options() const { // @@protoc_insertion_point(field_list:pg_query.IntoClause.options) return options_; } // .pg_query.OnCommitAction on_commit = 5 [json_name = "onCommit"]; inline void IntoClause::clear_on_commit() { on_commit_ = 0; } inline ::pg_query::OnCommitAction IntoClause::_internal_on_commit() const { return static_cast< ::pg_query::OnCommitAction >(on_commit_); } inline ::pg_query::OnCommitAction IntoClause::on_commit() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.on_commit) return _internal_on_commit(); } inline void IntoClause::_internal_set_on_commit(::pg_query::OnCommitAction value) { on_commit_ = value; } inline void IntoClause::set_on_commit(::pg_query::OnCommitAction value) { _internal_set_on_commit(value); // @@protoc_insertion_point(field_set:pg_query.IntoClause.on_commit) } // string table_space_name = 6 [json_name = "tableSpaceName"]; inline void IntoClause::clear_table_space_name() { table_space_name_.ClearToEmpty(); } inline const std::string& IntoClause::table_space_name() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.table_space_name) return _internal_table_space_name(); } inline void IntoClause::set_table_space_name(const std::string& value) { _internal_set_table_space_name(value); // @@protoc_insertion_point(field_set:pg_query.IntoClause.table_space_name) } inline std::string* IntoClause::mutable_table_space_name() { // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.table_space_name) return _internal_mutable_table_space_name(); } inline const std::string& IntoClause::_internal_table_space_name() const { return table_space_name_.Get(); } inline void IntoClause::_internal_set_table_space_name(const std::string& value) { table_space_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void IntoClause::set_table_space_name(std::string&& value) { table_space_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.IntoClause.table_space_name) } inline void IntoClause::set_table_space_name(const char* value) { GOOGLE_DCHECK(value != nullptr); table_space_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.IntoClause.table_space_name) } inline void IntoClause::set_table_space_name(const char* value, size_t size) { table_space_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.IntoClause.table_space_name) } inline std::string* IntoClause::_internal_mutable_table_space_name() { return table_space_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* IntoClause::release_table_space_name() { // @@protoc_insertion_point(field_release:pg_query.IntoClause.table_space_name) return table_space_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void IntoClause::set_allocated_table_space_name(std::string* table_space_name) { if (table_space_name != nullptr) { } else { } table_space_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), table_space_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.table_space_name) } // .pg_query.Node view_query = 7 [json_name = "viewQuery"]; inline bool IntoClause::_internal_has_view_query() const { return this != internal_default_instance() && view_query_ != nullptr; } inline bool IntoClause::has_view_query() const { return _internal_has_view_query(); } inline void IntoClause::clear_view_query() { if (GetArena() == nullptr && view_query_ != nullptr) { delete view_query_; } view_query_ = nullptr; } inline const ::pg_query::Node& IntoClause::_internal_view_query() const { const ::pg_query::Node* p = view_query_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& IntoClause::view_query() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.view_query) return _internal_view_query(); } inline void IntoClause::unsafe_arena_set_allocated_view_query( ::pg_query::Node* view_query) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(view_query_); } view_query_ = view_query; if (view_query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IntoClause.view_query) } inline ::pg_query::Node* IntoClause::release_view_query() { ::pg_query::Node* temp = view_query_; view_query_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* IntoClause::unsafe_arena_release_view_query() { // @@protoc_insertion_point(field_release:pg_query.IntoClause.view_query) ::pg_query::Node* temp = view_query_; view_query_ = nullptr; return temp; } inline ::pg_query::Node* IntoClause::_internal_mutable_view_query() { if (view_query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); view_query_ = p; } return view_query_; } inline ::pg_query::Node* IntoClause::mutable_view_query() { // @@protoc_insertion_point(field_mutable:pg_query.IntoClause.view_query) return _internal_mutable_view_query(); } inline void IntoClause::set_allocated_view_query(::pg_query::Node* view_query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete view_query_; } if (view_query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(view_query); if (message_arena != submessage_arena) { view_query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, view_query, submessage_arena); } } else { } view_query_ = view_query; // @@protoc_insertion_point(field_set_allocated:pg_query.IntoClause.view_query) } // bool skip_data = 8 [json_name = "skipData"]; inline void IntoClause::clear_skip_data() { skip_data_ = false; } inline bool IntoClause::_internal_skip_data() const { return skip_data_; } inline bool IntoClause::skip_data() const { // @@protoc_insertion_point(field_get:pg_query.IntoClause.skip_data) return _internal_skip_data(); } inline void IntoClause::_internal_set_skip_data(bool value) { skip_data_ = value; } inline void IntoClause::set_skip_data(bool value) { _internal_set_skip_data(value); // @@protoc_insertion_point(field_set:pg_query.IntoClause.skip_data) } // ------------------------------------------------------------------- // RawStmt // .pg_query.Node stmt = 1 [json_name = "stmt"]; inline bool RawStmt::_internal_has_stmt() const { return this != internal_default_instance() && stmt_ != nullptr; } inline bool RawStmt::has_stmt() const { return _internal_has_stmt(); } inline void RawStmt::clear_stmt() { if (GetArena() == nullptr && stmt_ != nullptr) { delete stmt_; } stmt_ = nullptr; } inline const ::pg_query::Node& RawStmt::_internal_stmt() const { const ::pg_query::Node* p = stmt_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RawStmt::stmt() const { // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt) return _internal_stmt(); } inline void RawStmt::unsafe_arena_set_allocated_stmt( ::pg_query::Node* stmt) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(stmt_); } stmt_ = stmt; if (stmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RawStmt.stmt) } inline ::pg_query::Node* RawStmt::release_stmt() { ::pg_query::Node* temp = stmt_; stmt_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RawStmt::unsafe_arena_release_stmt() { // @@protoc_insertion_point(field_release:pg_query.RawStmt.stmt) ::pg_query::Node* temp = stmt_; stmt_ = nullptr; return temp; } inline ::pg_query::Node* RawStmt::_internal_mutable_stmt() { if (stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); stmt_ = p; } return stmt_; } inline ::pg_query::Node* RawStmt::mutable_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.RawStmt.stmt) return _internal_mutable_stmt(); } inline void RawStmt::set_allocated_stmt(::pg_query::Node* stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete stmt_; } if (stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(stmt); if (message_arena != submessage_arena) { stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, stmt, submessage_arena); } } else { } stmt_ = stmt; // @@protoc_insertion_point(field_set_allocated:pg_query.RawStmt.stmt) } // int32 stmt_location = 2 [json_name = "stmt_location"]; inline void RawStmt::clear_stmt_location() { stmt_location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RawStmt::_internal_stmt_location() const { return stmt_location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RawStmt::stmt_location() const { // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt_location) return _internal_stmt_location(); } inline void RawStmt::_internal_set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value) { stmt_location_ = value; } inline void RawStmt::set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_stmt_location(value); // @@protoc_insertion_point(field_set:pg_query.RawStmt.stmt_location) } // int32 stmt_len = 3 [json_name = "stmt_len"]; inline void RawStmt::clear_stmt_len() { stmt_len_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RawStmt::_internal_stmt_len() const { return stmt_len_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RawStmt::stmt_len() const { // @@protoc_insertion_point(field_get:pg_query.RawStmt.stmt_len) return _internal_stmt_len(); } inline void RawStmt::_internal_set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value) { stmt_len_ = value; } inline void RawStmt::set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_stmt_len(value); // @@protoc_insertion_point(field_set:pg_query.RawStmt.stmt_len) } // ------------------------------------------------------------------- // Query // .pg_query.CmdType command_type = 1 [json_name = "commandType"]; inline void Query::clear_command_type() { command_type_ = 0; } inline ::pg_query::CmdType Query::_internal_command_type() const { return static_cast< ::pg_query::CmdType >(command_type_); } inline ::pg_query::CmdType Query::command_type() const { // @@protoc_insertion_point(field_get:pg_query.Query.command_type) return _internal_command_type(); } inline void Query::_internal_set_command_type(::pg_query::CmdType value) { command_type_ = value; } inline void Query::set_command_type(::pg_query::CmdType value) { _internal_set_command_type(value); // @@protoc_insertion_point(field_set:pg_query.Query.command_type) } // .pg_query.QuerySource query_source = 2 [json_name = "querySource"]; inline void Query::clear_query_source() { query_source_ = 0; } inline ::pg_query::QuerySource Query::_internal_query_source() const { return static_cast< ::pg_query::QuerySource >(query_source_); } inline ::pg_query::QuerySource Query::query_source() const { // @@protoc_insertion_point(field_get:pg_query.Query.query_source) return _internal_query_source(); } inline void Query::_internal_set_query_source(::pg_query::QuerySource value) { query_source_ = value; } inline void Query::set_query_source(::pg_query::QuerySource value) { _internal_set_query_source(value); // @@protoc_insertion_point(field_set:pg_query.Query.query_source) } // bool can_set_tag = 3 [json_name = "canSetTag"]; inline void Query::clear_can_set_tag() { can_set_tag_ = false; } inline bool Query::_internal_can_set_tag() const { return can_set_tag_; } inline bool Query::can_set_tag() const { // @@protoc_insertion_point(field_get:pg_query.Query.can_set_tag) return _internal_can_set_tag(); } inline void Query::_internal_set_can_set_tag(bool value) { can_set_tag_ = value; } inline void Query::set_can_set_tag(bool value) { _internal_set_can_set_tag(value); // @@protoc_insertion_point(field_set:pg_query.Query.can_set_tag) } // .pg_query.Node utility_stmt = 4 [json_name = "utilityStmt"]; inline bool Query::_internal_has_utility_stmt() const { return this != internal_default_instance() && utility_stmt_ != nullptr; } inline bool Query::has_utility_stmt() const { return _internal_has_utility_stmt(); } inline void Query::clear_utility_stmt() { if (GetArena() == nullptr && utility_stmt_ != nullptr) { delete utility_stmt_; } utility_stmt_ = nullptr; } inline const ::pg_query::Node& Query::_internal_utility_stmt() const { const ::pg_query::Node* p = utility_stmt_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::utility_stmt() const { // @@protoc_insertion_point(field_get:pg_query.Query.utility_stmt) return _internal_utility_stmt(); } inline void Query::unsafe_arena_set_allocated_utility_stmt( ::pg_query::Node* utility_stmt) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(utility_stmt_); } utility_stmt_ = utility_stmt; if (utility_stmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.utility_stmt) } inline ::pg_query::Node* Query::release_utility_stmt() { ::pg_query::Node* temp = utility_stmt_; utility_stmt_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Query::unsafe_arena_release_utility_stmt() { // @@protoc_insertion_point(field_release:pg_query.Query.utility_stmt) ::pg_query::Node* temp = utility_stmt_; utility_stmt_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_utility_stmt() { if (utility_stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); utility_stmt_ = p; } return utility_stmt_; } inline ::pg_query::Node* Query::mutable_utility_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.Query.utility_stmt) return _internal_mutable_utility_stmt(); } inline void Query::set_allocated_utility_stmt(::pg_query::Node* utility_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete utility_stmt_; } if (utility_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(utility_stmt); if (message_arena != submessage_arena) { utility_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, utility_stmt, submessage_arena); } } else { } utility_stmt_ = utility_stmt; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.utility_stmt) } // int32 result_relation = 5 [json_name = "resultRelation"]; inline void Query::clear_result_relation() { result_relation_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Query::_internal_result_relation() const { return result_relation_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Query::result_relation() const { // @@protoc_insertion_point(field_get:pg_query.Query.result_relation) return _internal_result_relation(); } inline void Query::_internal_set_result_relation(::PROTOBUF_NAMESPACE_ID::int32 value) { result_relation_ = value; } inline void Query::set_result_relation(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_result_relation(value); // @@protoc_insertion_point(field_set:pg_query.Query.result_relation) } // bool has_aggs = 6 [json_name = "hasAggs"]; inline void Query::clear_has_aggs() { has_aggs_ = false; } inline bool Query::_internal_has_aggs() const { return has_aggs_; } inline bool Query::has_aggs() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_aggs) return _internal_has_aggs(); } inline void Query::_internal_set_has_aggs(bool value) { has_aggs_ = value; } inline void Query::set_has_aggs(bool value) { _internal_set_has_aggs(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_aggs) } // bool has_window_funcs = 7 [json_name = "hasWindowFuncs"]; inline void Query::clear_has_window_funcs() { has_window_funcs_ = false; } inline bool Query::_internal_has_window_funcs() const { return has_window_funcs_; } inline bool Query::has_window_funcs() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_window_funcs) return _internal_has_window_funcs(); } inline void Query::_internal_set_has_window_funcs(bool value) { has_window_funcs_ = value; } inline void Query::set_has_window_funcs(bool value) { _internal_set_has_window_funcs(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_window_funcs) } // bool has_target_srfs = 8 [json_name = "hasTargetSRFs"]; inline void Query::clear_has_target_srfs() { has_target_srfs_ = false; } inline bool Query::_internal_has_target_srfs() const { return has_target_srfs_; } inline bool Query::has_target_srfs() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_target_srfs) return _internal_has_target_srfs(); } inline void Query::_internal_set_has_target_srfs(bool value) { has_target_srfs_ = value; } inline void Query::set_has_target_srfs(bool value) { _internal_set_has_target_srfs(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_target_srfs) } // bool has_sub_links = 9 [json_name = "hasSubLinks"]; inline void Query::clear_has_sub_links() { has_sub_links_ = false; } inline bool Query::_internal_has_sub_links() const { return has_sub_links_; } inline bool Query::has_sub_links() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_sub_links) return _internal_has_sub_links(); } inline void Query::_internal_set_has_sub_links(bool value) { has_sub_links_ = value; } inline void Query::set_has_sub_links(bool value) { _internal_set_has_sub_links(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_sub_links) } // bool has_distinct_on = 10 [json_name = "hasDistinctOn"]; inline void Query::clear_has_distinct_on() { has_distinct_on_ = false; } inline bool Query::_internal_has_distinct_on() const { return has_distinct_on_; } inline bool Query::has_distinct_on() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_distinct_on) return _internal_has_distinct_on(); } inline void Query::_internal_set_has_distinct_on(bool value) { has_distinct_on_ = value; } inline void Query::set_has_distinct_on(bool value) { _internal_set_has_distinct_on(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_distinct_on) } // bool has_recursive = 11 [json_name = "hasRecursive"]; inline void Query::clear_has_recursive() { has_recursive_ = false; } inline bool Query::_internal_has_recursive() const { return has_recursive_; } inline bool Query::has_recursive() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_recursive) return _internal_has_recursive(); } inline void Query::_internal_set_has_recursive(bool value) { has_recursive_ = value; } inline void Query::set_has_recursive(bool value) { _internal_set_has_recursive(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_recursive) } // bool has_modifying_cte = 12 [json_name = "hasModifyingCTE"]; inline void Query::clear_has_modifying_cte() { has_modifying_cte_ = false; } inline bool Query::_internal_has_modifying_cte() const { return has_modifying_cte_; } inline bool Query::has_modifying_cte() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_modifying_cte) return _internal_has_modifying_cte(); } inline void Query::_internal_set_has_modifying_cte(bool value) { has_modifying_cte_ = value; } inline void Query::set_has_modifying_cte(bool value) { _internal_set_has_modifying_cte(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_modifying_cte) } // bool has_for_update = 13 [json_name = "hasForUpdate"]; inline void Query::clear_has_for_update() { has_for_update_ = false; } inline bool Query::_internal_has_for_update() const { return has_for_update_; } inline bool Query::has_for_update() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_for_update) return _internal_has_for_update(); } inline void Query::_internal_set_has_for_update(bool value) { has_for_update_ = value; } inline void Query::set_has_for_update(bool value) { _internal_set_has_for_update(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_for_update) } // bool has_row_security = 14 [json_name = "hasRowSecurity"]; inline void Query::clear_has_row_security() { has_row_security_ = false; } inline bool Query::_internal_has_row_security() const { return has_row_security_; } inline bool Query::has_row_security() const { // @@protoc_insertion_point(field_get:pg_query.Query.has_row_security) return _internal_has_row_security(); } inline void Query::_internal_set_has_row_security(bool value) { has_row_security_ = value; } inline void Query::set_has_row_security(bool value) { _internal_set_has_row_security(value); // @@protoc_insertion_point(field_set:pg_query.Query.has_row_security) } // repeated .pg_query.Node cte_list = 15 [json_name = "cteList"]; inline int Query::_internal_cte_list_size() const { return cte_list_.size(); } inline int Query::cte_list_size() const { return _internal_cte_list_size(); } inline void Query::clear_cte_list() { cte_list_.Clear(); } inline ::pg_query::Node* Query::mutable_cte_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.cte_list) return cte_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_cte_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.cte_list) return &cte_list_; } inline const ::pg_query::Node& Query::_internal_cte_list(int index) const { return cte_list_.Get(index); } inline const ::pg_query::Node& Query::cte_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.cte_list) return _internal_cte_list(index); } inline ::pg_query::Node* Query::_internal_add_cte_list() { return cte_list_.Add(); } inline ::pg_query::Node* Query::add_cte_list() { // @@protoc_insertion_point(field_add:pg_query.Query.cte_list) return _internal_add_cte_list(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::cte_list() const { // @@protoc_insertion_point(field_list:pg_query.Query.cte_list) return cte_list_; } // repeated .pg_query.Node rtable = 16 [json_name = "rtable"]; inline int Query::_internal_rtable_size() const { return rtable_.size(); } inline int Query::rtable_size() const { return _internal_rtable_size(); } inline void Query::clear_rtable() { rtable_.Clear(); } inline ::pg_query::Node* Query::mutable_rtable(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.rtable) return rtable_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_rtable() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.rtable) return &rtable_; } inline const ::pg_query::Node& Query::_internal_rtable(int index) const { return rtable_.Get(index); } inline const ::pg_query::Node& Query::rtable(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.rtable) return _internal_rtable(index); } inline ::pg_query::Node* Query::_internal_add_rtable() { return rtable_.Add(); } inline ::pg_query::Node* Query::add_rtable() { // @@protoc_insertion_point(field_add:pg_query.Query.rtable) return _internal_add_rtable(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::rtable() const { // @@protoc_insertion_point(field_list:pg_query.Query.rtable) return rtable_; } // .pg_query.FromExpr jointree = 17 [json_name = "jointree"]; inline bool Query::_internal_has_jointree() const { return this != internal_default_instance() && jointree_ != nullptr; } inline bool Query::has_jointree() const { return _internal_has_jointree(); } inline void Query::clear_jointree() { if (GetArena() == nullptr && jointree_ != nullptr) { delete jointree_; } jointree_ = nullptr; } inline const ::pg_query::FromExpr& Query::_internal_jointree() const { const ::pg_query::FromExpr* p = jointree_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_FromExpr_default_instance_); } inline const ::pg_query::FromExpr& Query::jointree() const { // @@protoc_insertion_point(field_get:pg_query.Query.jointree) return _internal_jointree(); } inline void Query::unsafe_arena_set_allocated_jointree( ::pg_query::FromExpr* jointree) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(jointree_); } jointree_ = jointree; if (jointree) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.jointree) } inline ::pg_query::FromExpr* Query::release_jointree() { ::pg_query::FromExpr* temp = jointree_; jointree_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::FromExpr* Query::unsafe_arena_release_jointree() { // @@protoc_insertion_point(field_release:pg_query.Query.jointree) ::pg_query::FromExpr* temp = jointree_; jointree_ = nullptr; return temp; } inline ::pg_query::FromExpr* Query::_internal_mutable_jointree() { if (jointree_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::FromExpr>(GetArena()); jointree_ = p; } return jointree_; } inline ::pg_query::FromExpr* Query::mutable_jointree() { // @@protoc_insertion_point(field_mutable:pg_query.Query.jointree) return _internal_mutable_jointree(); } inline void Query::set_allocated_jointree(::pg_query::FromExpr* jointree) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete jointree_; } if (jointree) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(jointree); if (message_arena != submessage_arena) { jointree = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, jointree, submessage_arena); } } else { } jointree_ = jointree; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.jointree) } // repeated .pg_query.Node target_list = 18 [json_name = "targetList"]; inline int Query::_internal_target_list_size() const { return target_list_.size(); } inline int Query::target_list_size() const { return _internal_target_list_size(); } inline void Query::clear_target_list() { target_list_.Clear(); } inline ::pg_query::Node* Query::mutable_target_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.target_list) return target_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_target_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.target_list) return &target_list_; } inline const ::pg_query::Node& Query::_internal_target_list(int index) const { return target_list_.Get(index); } inline const ::pg_query::Node& Query::target_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.target_list) return _internal_target_list(index); } inline ::pg_query::Node* Query::_internal_add_target_list() { return target_list_.Add(); } inline ::pg_query::Node* Query::add_target_list() { // @@protoc_insertion_point(field_add:pg_query.Query.target_list) return _internal_add_target_list(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::target_list() const { // @@protoc_insertion_point(field_list:pg_query.Query.target_list) return target_list_; } // .pg_query.OverridingKind override = 19 [json_name = "override"]; inline void Query::clear_override() { override_ = 0; } inline ::pg_query::OverridingKind Query::_internal_override() const { return static_cast< ::pg_query::OverridingKind >(override_); } inline ::pg_query::OverridingKind Query::override() const { // @@protoc_insertion_point(field_get:pg_query.Query.override) return _internal_override(); } inline void Query::_internal_set_override(::pg_query::OverridingKind value) { override_ = value; } inline void Query::set_override(::pg_query::OverridingKind value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.Query.override) } // .pg_query.OnConflictExpr on_conflict = 20 [json_name = "onConflict"]; inline bool Query::_internal_has_on_conflict() const { return this != internal_default_instance() && on_conflict_ != nullptr; } inline bool Query::has_on_conflict() const { return _internal_has_on_conflict(); } inline void Query::clear_on_conflict() { if (GetArena() == nullptr && on_conflict_ != nullptr) { delete on_conflict_; } on_conflict_ = nullptr; } inline const ::pg_query::OnConflictExpr& Query::_internal_on_conflict() const { const ::pg_query::OnConflictExpr* p = on_conflict_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_OnConflictExpr_default_instance_); } inline const ::pg_query::OnConflictExpr& Query::on_conflict() const { // @@protoc_insertion_point(field_get:pg_query.Query.on_conflict) return _internal_on_conflict(); } inline void Query::unsafe_arena_set_allocated_on_conflict( ::pg_query::OnConflictExpr* on_conflict) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(on_conflict_); } on_conflict_ = on_conflict; if (on_conflict) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.on_conflict) } inline ::pg_query::OnConflictExpr* Query::release_on_conflict() { ::pg_query::OnConflictExpr* temp = on_conflict_; on_conflict_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::OnConflictExpr* Query::unsafe_arena_release_on_conflict() { // @@protoc_insertion_point(field_release:pg_query.Query.on_conflict) ::pg_query::OnConflictExpr* temp = on_conflict_; on_conflict_ = nullptr; return temp; } inline ::pg_query::OnConflictExpr* Query::_internal_mutable_on_conflict() { if (on_conflict_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::OnConflictExpr>(GetArena()); on_conflict_ = p; } return on_conflict_; } inline ::pg_query::OnConflictExpr* Query::mutable_on_conflict() { // @@protoc_insertion_point(field_mutable:pg_query.Query.on_conflict) return _internal_mutable_on_conflict(); } inline void Query::set_allocated_on_conflict(::pg_query::OnConflictExpr* on_conflict) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete on_conflict_; } if (on_conflict) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(on_conflict); if (message_arena != submessage_arena) { on_conflict = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, on_conflict, submessage_arena); } } else { } on_conflict_ = on_conflict; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.on_conflict) } // repeated .pg_query.Node returning_list = 21 [json_name = "returningList"]; inline int Query::_internal_returning_list_size() const { return returning_list_.size(); } inline int Query::returning_list_size() const { return _internal_returning_list_size(); } inline void Query::clear_returning_list() { returning_list_.Clear(); } inline ::pg_query::Node* Query::mutable_returning_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.returning_list) return returning_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_returning_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.returning_list) return &returning_list_; } inline const ::pg_query::Node& Query::_internal_returning_list(int index) const { return returning_list_.Get(index); } inline const ::pg_query::Node& Query::returning_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.returning_list) return _internal_returning_list(index); } inline ::pg_query::Node* Query::_internal_add_returning_list() { return returning_list_.Add(); } inline ::pg_query::Node* Query::add_returning_list() { // @@protoc_insertion_point(field_add:pg_query.Query.returning_list) return _internal_add_returning_list(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::returning_list() const { // @@protoc_insertion_point(field_list:pg_query.Query.returning_list) return returning_list_; } // repeated .pg_query.Node group_clause = 22 [json_name = "groupClause"]; inline int Query::_internal_group_clause_size() const { return group_clause_.size(); } inline int Query::group_clause_size() const { return _internal_group_clause_size(); } inline void Query::clear_group_clause() { group_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_group_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.group_clause) return group_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_group_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.group_clause) return &group_clause_; } inline const ::pg_query::Node& Query::_internal_group_clause(int index) const { return group_clause_.Get(index); } inline const ::pg_query::Node& Query::group_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.group_clause) return _internal_group_clause(index); } inline ::pg_query::Node* Query::_internal_add_group_clause() { return group_clause_.Add(); } inline ::pg_query::Node* Query::add_group_clause() { // @@protoc_insertion_point(field_add:pg_query.Query.group_clause) return _internal_add_group_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::group_clause() const { // @@protoc_insertion_point(field_list:pg_query.Query.group_clause) return group_clause_; } // repeated .pg_query.Node grouping_sets = 23 [json_name = "groupingSets"]; inline int Query::_internal_grouping_sets_size() const { return grouping_sets_.size(); } inline int Query::grouping_sets_size() const { return _internal_grouping_sets_size(); } inline void Query::clear_grouping_sets() { grouping_sets_.Clear(); } inline ::pg_query::Node* Query::mutable_grouping_sets(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.grouping_sets) return grouping_sets_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_grouping_sets() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.grouping_sets) return &grouping_sets_; } inline const ::pg_query::Node& Query::_internal_grouping_sets(int index) const { return grouping_sets_.Get(index); } inline const ::pg_query::Node& Query::grouping_sets(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.grouping_sets) return _internal_grouping_sets(index); } inline ::pg_query::Node* Query::_internal_add_grouping_sets() { return grouping_sets_.Add(); } inline ::pg_query::Node* Query::add_grouping_sets() { // @@protoc_insertion_point(field_add:pg_query.Query.grouping_sets) return _internal_add_grouping_sets(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::grouping_sets() const { // @@protoc_insertion_point(field_list:pg_query.Query.grouping_sets) return grouping_sets_; } // .pg_query.Node having_qual = 24 [json_name = "havingQual"]; inline bool Query::_internal_has_having_qual() const { return this != internal_default_instance() && having_qual_ != nullptr; } inline bool Query::has_having_qual() const { return _internal_has_having_qual(); } inline void Query::clear_having_qual() { if (GetArena() == nullptr && having_qual_ != nullptr) { delete having_qual_; } having_qual_ = nullptr; } inline const ::pg_query::Node& Query::_internal_having_qual() const { const ::pg_query::Node* p = having_qual_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::having_qual() const { // @@protoc_insertion_point(field_get:pg_query.Query.having_qual) return _internal_having_qual(); } inline void Query::unsafe_arena_set_allocated_having_qual( ::pg_query::Node* having_qual) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(having_qual_); } having_qual_ = having_qual; if (having_qual) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.having_qual) } inline ::pg_query::Node* Query::release_having_qual() { ::pg_query::Node* temp = having_qual_; having_qual_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Query::unsafe_arena_release_having_qual() { // @@protoc_insertion_point(field_release:pg_query.Query.having_qual) ::pg_query::Node* temp = having_qual_; having_qual_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_having_qual() { if (having_qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); having_qual_ = p; } return having_qual_; } inline ::pg_query::Node* Query::mutable_having_qual() { // @@protoc_insertion_point(field_mutable:pg_query.Query.having_qual) return _internal_mutable_having_qual(); } inline void Query::set_allocated_having_qual(::pg_query::Node* having_qual) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete having_qual_; } if (having_qual) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(having_qual); if (message_arena != submessage_arena) { having_qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, having_qual, submessage_arena); } } else { } having_qual_ = having_qual; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.having_qual) } // repeated .pg_query.Node window_clause = 25 [json_name = "windowClause"]; inline int Query::_internal_window_clause_size() const { return window_clause_.size(); } inline int Query::window_clause_size() const { return _internal_window_clause_size(); } inline void Query::clear_window_clause() { window_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_window_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.window_clause) return window_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_window_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.window_clause) return &window_clause_; } inline const ::pg_query::Node& Query::_internal_window_clause(int index) const { return window_clause_.Get(index); } inline const ::pg_query::Node& Query::window_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.window_clause) return _internal_window_clause(index); } inline ::pg_query::Node* Query::_internal_add_window_clause() { return window_clause_.Add(); } inline ::pg_query::Node* Query::add_window_clause() { // @@protoc_insertion_point(field_add:pg_query.Query.window_clause) return _internal_add_window_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::window_clause() const { // @@protoc_insertion_point(field_list:pg_query.Query.window_clause) return window_clause_; } // repeated .pg_query.Node distinct_clause = 26 [json_name = "distinctClause"]; inline int Query::_internal_distinct_clause_size() const { return distinct_clause_.size(); } inline int Query::distinct_clause_size() const { return _internal_distinct_clause_size(); } inline void Query::clear_distinct_clause() { distinct_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_distinct_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.distinct_clause) return distinct_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_distinct_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.distinct_clause) return &distinct_clause_; } inline const ::pg_query::Node& Query::_internal_distinct_clause(int index) const { return distinct_clause_.Get(index); } inline const ::pg_query::Node& Query::distinct_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.distinct_clause) return _internal_distinct_clause(index); } inline ::pg_query::Node* Query::_internal_add_distinct_clause() { return distinct_clause_.Add(); } inline ::pg_query::Node* Query::add_distinct_clause() { // @@protoc_insertion_point(field_add:pg_query.Query.distinct_clause) return _internal_add_distinct_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::distinct_clause() const { // @@protoc_insertion_point(field_list:pg_query.Query.distinct_clause) return distinct_clause_; } // repeated .pg_query.Node sort_clause = 27 [json_name = "sortClause"]; inline int Query::_internal_sort_clause_size() const { return sort_clause_.size(); } inline int Query::sort_clause_size() const { return _internal_sort_clause_size(); } inline void Query::clear_sort_clause() { sort_clause_.Clear(); } inline ::pg_query::Node* Query::mutable_sort_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.sort_clause) return sort_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_sort_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.sort_clause) return &sort_clause_; } inline const ::pg_query::Node& Query::_internal_sort_clause(int index) const { return sort_clause_.Get(index); } inline const ::pg_query::Node& Query::sort_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.sort_clause) return _internal_sort_clause(index); } inline ::pg_query::Node* Query::_internal_add_sort_clause() { return sort_clause_.Add(); } inline ::pg_query::Node* Query::add_sort_clause() { // @@protoc_insertion_point(field_add:pg_query.Query.sort_clause) return _internal_add_sort_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::sort_clause() const { // @@protoc_insertion_point(field_list:pg_query.Query.sort_clause) return sort_clause_; } // .pg_query.Node limit_offset = 28 [json_name = "limitOffset"]; inline bool Query::_internal_has_limit_offset() const { return this != internal_default_instance() && limit_offset_ != nullptr; } inline bool Query::has_limit_offset() const { return _internal_has_limit_offset(); } inline void Query::clear_limit_offset() { if (GetArena() == nullptr && limit_offset_ != nullptr) { delete limit_offset_; } limit_offset_ = nullptr; } inline const ::pg_query::Node& Query::_internal_limit_offset() const { const ::pg_query::Node* p = limit_offset_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::limit_offset() const { // @@protoc_insertion_point(field_get:pg_query.Query.limit_offset) return _internal_limit_offset(); } inline void Query::unsafe_arena_set_allocated_limit_offset( ::pg_query::Node* limit_offset) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(limit_offset_); } limit_offset_ = limit_offset; if (limit_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.limit_offset) } inline ::pg_query::Node* Query::release_limit_offset() { ::pg_query::Node* temp = limit_offset_; limit_offset_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Query::unsafe_arena_release_limit_offset() { // @@protoc_insertion_point(field_release:pg_query.Query.limit_offset) ::pg_query::Node* temp = limit_offset_; limit_offset_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_limit_offset() { if (limit_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); limit_offset_ = p; } return limit_offset_; } inline ::pg_query::Node* Query::mutable_limit_offset() { // @@protoc_insertion_point(field_mutable:pg_query.Query.limit_offset) return _internal_mutable_limit_offset(); } inline void Query::set_allocated_limit_offset(::pg_query::Node* limit_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete limit_offset_; } if (limit_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(limit_offset); if (message_arena != submessage_arena) { limit_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, limit_offset, submessage_arena); } } else { } limit_offset_ = limit_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.limit_offset) } // .pg_query.Node limit_count = 29 [json_name = "limitCount"]; inline bool Query::_internal_has_limit_count() const { return this != internal_default_instance() && limit_count_ != nullptr; } inline bool Query::has_limit_count() const { return _internal_has_limit_count(); } inline void Query::clear_limit_count() { if (GetArena() == nullptr && limit_count_ != nullptr) { delete limit_count_; } limit_count_ = nullptr; } inline const ::pg_query::Node& Query::_internal_limit_count() const { const ::pg_query::Node* p = limit_count_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::limit_count() const { // @@protoc_insertion_point(field_get:pg_query.Query.limit_count) return _internal_limit_count(); } inline void Query::unsafe_arena_set_allocated_limit_count( ::pg_query::Node* limit_count) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(limit_count_); } limit_count_ = limit_count; if (limit_count) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.limit_count) } inline ::pg_query::Node* Query::release_limit_count() { ::pg_query::Node* temp = limit_count_; limit_count_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Query::unsafe_arena_release_limit_count() { // @@protoc_insertion_point(field_release:pg_query.Query.limit_count) ::pg_query::Node* temp = limit_count_; limit_count_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_limit_count() { if (limit_count_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); limit_count_ = p; } return limit_count_; } inline ::pg_query::Node* Query::mutable_limit_count() { // @@protoc_insertion_point(field_mutable:pg_query.Query.limit_count) return _internal_mutable_limit_count(); } inline void Query::set_allocated_limit_count(::pg_query::Node* limit_count) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete limit_count_; } if (limit_count) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(limit_count); if (message_arena != submessage_arena) { limit_count = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, limit_count, submessage_arena); } } else { } limit_count_ = limit_count; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.limit_count) } // .pg_query.LimitOption limit_option = 30 [json_name = "limitOption"]; inline void Query::clear_limit_option() { limit_option_ = 0; } inline ::pg_query::LimitOption Query::_internal_limit_option() const { return static_cast< ::pg_query::LimitOption >(limit_option_); } inline ::pg_query::LimitOption Query::limit_option() const { // @@protoc_insertion_point(field_get:pg_query.Query.limit_option) return _internal_limit_option(); } inline void Query::_internal_set_limit_option(::pg_query::LimitOption value) { limit_option_ = value; } inline void Query::set_limit_option(::pg_query::LimitOption value) { _internal_set_limit_option(value); // @@protoc_insertion_point(field_set:pg_query.Query.limit_option) } // repeated .pg_query.Node row_marks = 31 [json_name = "rowMarks"]; inline int Query::_internal_row_marks_size() const { return row_marks_.size(); } inline int Query::row_marks_size() const { return _internal_row_marks_size(); } inline void Query::clear_row_marks() { row_marks_.Clear(); } inline ::pg_query::Node* Query::mutable_row_marks(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.row_marks) return row_marks_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_row_marks() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.row_marks) return &row_marks_; } inline const ::pg_query::Node& Query::_internal_row_marks(int index) const { return row_marks_.Get(index); } inline const ::pg_query::Node& Query::row_marks(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.row_marks) return _internal_row_marks(index); } inline ::pg_query::Node* Query::_internal_add_row_marks() { return row_marks_.Add(); } inline ::pg_query::Node* Query::add_row_marks() { // @@protoc_insertion_point(field_add:pg_query.Query.row_marks) return _internal_add_row_marks(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::row_marks() const { // @@protoc_insertion_point(field_list:pg_query.Query.row_marks) return row_marks_; } // .pg_query.Node set_operations = 32 [json_name = "setOperations"]; inline bool Query::_internal_has_set_operations() const { return this != internal_default_instance() && set_operations_ != nullptr; } inline bool Query::has_set_operations() const { return _internal_has_set_operations(); } inline void Query::clear_set_operations() { if (GetArena() == nullptr && set_operations_ != nullptr) { delete set_operations_; } set_operations_ = nullptr; } inline const ::pg_query::Node& Query::_internal_set_operations() const { const ::pg_query::Node* p = set_operations_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Query::set_operations() const { // @@protoc_insertion_point(field_get:pg_query.Query.set_operations) return _internal_set_operations(); } inline void Query::unsafe_arena_set_allocated_set_operations( ::pg_query::Node* set_operations) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(set_operations_); } set_operations_ = set_operations; if (set_operations) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Query.set_operations) } inline ::pg_query::Node* Query::release_set_operations() { ::pg_query::Node* temp = set_operations_; set_operations_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Query::unsafe_arena_release_set_operations() { // @@protoc_insertion_point(field_release:pg_query.Query.set_operations) ::pg_query::Node* temp = set_operations_; set_operations_ = nullptr; return temp; } inline ::pg_query::Node* Query::_internal_mutable_set_operations() { if (set_operations_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); set_operations_ = p; } return set_operations_; } inline ::pg_query::Node* Query::mutable_set_operations() { // @@protoc_insertion_point(field_mutable:pg_query.Query.set_operations) return _internal_mutable_set_operations(); } inline void Query::set_allocated_set_operations(::pg_query::Node* set_operations) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete set_operations_; } if (set_operations) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(set_operations); if (message_arena != submessage_arena) { set_operations = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, set_operations, submessage_arena); } } else { } set_operations_ = set_operations; // @@protoc_insertion_point(field_set_allocated:pg_query.Query.set_operations) } // repeated .pg_query.Node constraint_deps = 33 [json_name = "constraintDeps"]; inline int Query::_internal_constraint_deps_size() const { return constraint_deps_.size(); } inline int Query::constraint_deps_size() const { return _internal_constraint_deps_size(); } inline void Query::clear_constraint_deps() { constraint_deps_.Clear(); } inline ::pg_query::Node* Query::mutable_constraint_deps(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.constraint_deps) return constraint_deps_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_constraint_deps() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.constraint_deps) return &constraint_deps_; } inline const ::pg_query::Node& Query::_internal_constraint_deps(int index) const { return constraint_deps_.Get(index); } inline const ::pg_query::Node& Query::constraint_deps(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.constraint_deps) return _internal_constraint_deps(index); } inline ::pg_query::Node* Query::_internal_add_constraint_deps() { return constraint_deps_.Add(); } inline ::pg_query::Node* Query::add_constraint_deps() { // @@protoc_insertion_point(field_add:pg_query.Query.constraint_deps) return _internal_add_constraint_deps(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::constraint_deps() const { // @@protoc_insertion_point(field_list:pg_query.Query.constraint_deps) return constraint_deps_; } // repeated .pg_query.Node with_check_options = 34 [json_name = "withCheckOptions"]; inline int Query::_internal_with_check_options_size() const { return with_check_options_.size(); } inline int Query::with_check_options_size() const { return _internal_with_check_options_size(); } inline void Query::clear_with_check_options() { with_check_options_.Clear(); } inline ::pg_query::Node* Query::mutable_with_check_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Query.with_check_options) return with_check_options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Query::mutable_with_check_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.Query.with_check_options) return &with_check_options_; } inline const ::pg_query::Node& Query::_internal_with_check_options(int index) const { return with_check_options_.Get(index); } inline const ::pg_query::Node& Query::with_check_options(int index) const { // @@protoc_insertion_point(field_get:pg_query.Query.with_check_options) return _internal_with_check_options(index); } inline ::pg_query::Node* Query::_internal_add_with_check_options() { return with_check_options_.Add(); } inline ::pg_query::Node* Query::add_with_check_options() { // @@protoc_insertion_point(field_add:pg_query.Query.with_check_options) return _internal_add_with_check_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Query::with_check_options() const { // @@protoc_insertion_point(field_list:pg_query.Query.with_check_options) return with_check_options_; } // int32 stmt_location = 35 [json_name = "stmt_location"]; inline void Query::clear_stmt_location() { stmt_location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Query::_internal_stmt_location() const { return stmt_location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Query::stmt_location() const { // @@protoc_insertion_point(field_get:pg_query.Query.stmt_location) return _internal_stmt_location(); } inline void Query::_internal_set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value) { stmt_location_ = value; } inline void Query::set_stmt_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_stmt_location(value); // @@protoc_insertion_point(field_set:pg_query.Query.stmt_location) } // int32 stmt_len = 36 [json_name = "stmt_len"]; inline void Query::clear_stmt_len() { stmt_len_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Query::_internal_stmt_len() const { return stmt_len_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Query::stmt_len() const { // @@protoc_insertion_point(field_get:pg_query.Query.stmt_len) return _internal_stmt_len(); } inline void Query::_internal_set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value) { stmt_len_ = value; } inline void Query::set_stmt_len(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_stmt_len(value); // @@protoc_insertion_point(field_set:pg_query.Query.stmt_len) } // ------------------------------------------------------------------- // InsertStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool InsertStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool InsertStmt::has_relation() const { return _internal_has_relation(); } inline void InsertStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& InsertStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& InsertStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.relation) return _internal_relation(); } inline void InsertStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.relation) } inline ::pg_query::RangeVar* InsertStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* InsertStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.InsertStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* InsertStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* InsertStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.relation) return _internal_mutable_relation(); } inline void InsertStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.relation) } // repeated .pg_query.Node cols = 2 [json_name = "cols"]; inline int InsertStmt::_internal_cols_size() const { return cols_.size(); } inline int InsertStmt::cols_size() const { return _internal_cols_size(); } inline void InsertStmt::clear_cols() { cols_.Clear(); } inline ::pg_query::Node* InsertStmt::mutable_cols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.cols) return cols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* InsertStmt::mutable_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.InsertStmt.cols) return &cols_; } inline const ::pg_query::Node& InsertStmt::_internal_cols(int index) const { return cols_.Get(index); } inline const ::pg_query::Node& InsertStmt::cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.cols) return _internal_cols(index); } inline ::pg_query::Node* InsertStmt::_internal_add_cols() { return cols_.Add(); } inline ::pg_query::Node* InsertStmt::add_cols() { // @@protoc_insertion_point(field_add:pg_query.InsertStmt.cols) return _internal_add_cols(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& InsertStmt::cols() const { // @@protoc_insertion_point(field_list:pg_query.InsertStmt.cols) return cols_; } // .pg_query.Node select_stmt = 3 [json_name = "selectStmt"]; inline bool InsertStmt::_internal_has_select_stmt() const { return this != internal_default_instance() && select_stmt_ != nullptr; } inline bool InsertStmt::has_select_stmt() const { return _internal_has_select_stmt(); } inline void InsertStmt::clear_select_stmt() { if (GetArena() == nullptr && select_stmt_ != nullptr) { delete select_stmt_; } select_stmt_ = nullptr; } inline const ::pg_query::Node& InsertStmt::_internal_select_stmt() const { const ::pg_query::Node* p = select_stmt_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& InsertStmt::select_stmt() const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.select_stmt) return _internal_select_stmt(); } inline void InsertStmt::unsafe_arena_set_allocated_select_stmt( ::pg_query::Node* select_stmt) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(select_stmt_); } select_stmt_ = select_stmt; if (select_stmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.select_stmt) } inline ::pg_query::Node* InsertStmt::release_select_stmt() { ::pg_query::Node* temp = select_stmt_; select_stmt_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* InsertStmt::unsafe_arena_release_select_stmt() { // @@protoc_insertion_point(field_release:pg_query.InsertStmt.select_stmt) ::pg_query::Node* temp = select_stmt_; select_stmt_ = nullptr; return temp; } inline ::pg_query::Node* InsertStmt::_internal_mutable_select_stmt() { if (select_stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); select_stmt_ = p; } return select_stmt_; } inline ::pg_query::Node* InsertStmt::mutable_select_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.select_stmt) return _internal_mutable_select_stmt(); } inline void InsertStmt::set_allocated_select_stmt(::pg_query::Node* select_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete select_stmt_; } if (select_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(select_stmt); if (message_arena != submessage_arena) { select_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, select_stmt, submessage_arena); } } else { } select_stmt_ = select_stmt; // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.select_stmt) } // .pg_query.OnConflictClause on_conflict_clause = 4 [json_name = "onConflictClause"]; inline bool InsertStmt::_internal_has_on_conflict_clause() const { return this != internal_default_instance() && on_conflict_clause_ != nullptr; } inline bool InsertStmt::has_on_conflict_clause() const { return _internal_has_on_conflict_clause(); } inline void InsertStmt::clear_on_conflict_clause() { if (GetArena() == nullptr && on_conflict_clause_ != nullptr) { delete on_conflict_clause_; } on_conflict_clause_ = nullptr; } inline const ::pg_query::OnConflictClause& InsertStmt::_internal_on_conflict_clause() const { const ::pg_query::OnConflictClause* p = on_conflict_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_OnConflictClause_default_instance_); } inline const ::pg_query::OnConflictClause& InsertStmt::on_conflict_clause() const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.on_conflict_clause) return _internal_on_conflict_clause(); } inline void InsertStmt::unsafe_arena_set_allocated_on_conflict_clause( ::pg_query::OnConflictClause* on_conflict_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(on_conflict_clause_); } on_conflict_clause_ = on_conflict_clause; if (on_conflict_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.on_conflict_clause) } inline ::pg_query::OnConflictClause* InsertStmt::release_on_conflict_clause() { ::pg_query::OnConflictClause* temp = on_conflict_clause_; on_conflict_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::OnConflictClause* InsertStmt::unsafe_arena_release_on_conflict_clause() { // @@protoc_insertion_point(field_release:pg_query.InsertStmt.on_conflict_clause) ::pg_query::OnConflictClause* temp = on_conflict_clause_; on_conflict_clause_ = nullptr; return temp; } inline ::pg_query::OnConflictClause* InsertStmt::_internal_mutable_on_conflict_clause() { if (on_conflict_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::OnConflictClause>(GetArena()); on_conflict_clause_ = p; } return on_conflict_clause_; } inline ::pg_query::OnConflictClause* InsertStmt::mutable_on_conflict_clause() { // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.on_conflict_clause) return _internal_mutable_on_conflict_clause(); } inline void InsertStmt::set_allocated_on_conflict_clause(::pg_query::OnConflictClause* on_conflict_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete on_conflict_clause_; } if (on_conflict_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(on_conflict_clause); if (message_arena != submessage_arena) { on_conflict_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, on_conflict_clause, submessage_arena); } } else { } on_conflict_clause_ = on_conflict_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.on_conflict_clause) } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; inline int InsertStmt::_internal_returning_list_size() const { return returning_list_.size(); } inline int InsertStmt::returning_list_size() const { return _internal_returning_list_size(); } inline void InsertStmt::clear_returning_list() { returning_list_.Clear(); } inline ::pg_query::Node* InsertStmt::mutable_returning_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.returning_list) return returning_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* InsertStmt::mutable_returning_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.InsertStmt.returning_list) return &returning_list_; } inline const ::pg_query::Node& InsertStmt::_internal_returning_list(int index) const { return returning_list_.Get(index); } inline const ::pg_query::Node& InsertStmt::returning_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.returning_list) return _internal_returning_list(index); } inline ::pg_query::Node* InsertStmt::_internal_add_returning_list() { return returning_list_.Add(); } inline ::pg_query::Node* InsertStmt::add_returning_list() { // @@protoc_insertion_point(field_add:pg_query.InsertStmt.returning_list) return _internal_add_returning_list(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& InsertStmt::returning_list() const { // @@protoc_insertion_point(field_list:pg_query.InsertStmt.returning_list) return returning_list_; } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; inline bool InsertStmt::_internal_has_with_clause() const { return this != internal_default_instance() && with_clause_ != nullptr; } inline bool InsertStmt::has_with_clause() const { return _internal_has_with_clause(); } inline void InsertStmt::clear_with_clause() { if (GetArena() == nullptr && with_clause_ != nullptr) { delete with_clause_; } with_clause_ = nullptr; } inline const ::pg_query::WithClause& InsertStmt::_internal_with_clause() const { const ::pg_query::WithClause* p = with_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& InsertStmt::with_clause() const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.with_clause) return _internal_with_clause(); } inline void InsertStmt::unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_clause_); } with_clause_ = with_clause; if (with_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InsertStmt.with_clause) } inline ::pg_query::WithClause* InsertStmt::release_with_clause() { ::pg_query::WithClause* temp = with_clause_; with_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::WithClause* InsertStmt::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_release:pg_query.InsertStmt.with_clause) ::pg_query::WithClause* temp = with_clause_; with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* InsertStmt::_internal_mutable_with_clause() { if (with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); with_clause_ = p; } return with_clause_; } inline ::pg_query::WithClause* InsertStmt::mutable_with_clause() { // @@protoc_insertion_point(field_mutable:pg_query.InsertStmt.with_clause) return _internal_mutable_with_clause(); } inline void InsertStmt::set_allocated_with_clause(::pg_query::WithClause* with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete with_clause_; } if (with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_clause); if (message_arena != submessage_arena) { with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_clause, submessage_arena); } } else { } with_clause_ = with_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.InsertStmt.with_clause) } // .pg_query.OverridingKind override = 7 [json_name = "override"]; inline void InsertStmt::clear_override() { override_ = 0; } inline ::pg_query::OverridingKind InsertStmt::_internal_override() const { return static_cast< ::pg_query::OverridingKind >(override_); } inline ::pg_query::OverridingKind InsertStmt::override() const { // @@protoc_insertion_point(field_get:pg_query.InsertStmt.override) return _internal_override(); } inline void InsertStmt::_internal_set_override(::pg_query::OverridingKind value) { override_ = value; } inline void InsertStmt::set_override(::pg_query::OverridingKind value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.InsertStmt.override) } // ------------------------------------------------------------------- // DeleteStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool DeleteStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool DeleteStmt::has_relation() const { return _internal_has_relation(); } inline void DeleteStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& DeleteStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& DeleteStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.relation) return _internal_relation(); } inline void DeleteStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.relation) } inline ::pg_query::RangeVar* DeleteStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* DeleteStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* DeleteStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* DeleteStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.relation) return _internal_mutable_relation(); } inline void DeleteStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.DeleteStmt.relation) } // repeated .pg_query.Node using_clause = 2 [json_name = "usingClause"]; inline int DeleteStmt::_internal_using_clause_size() const { return using_clause_.size(); } inline int DeleteStmt::using_clause_size() const { return _internal_using_clause_size(); } inline void DeleteStmt::clear_using_clause() { using_clause_.Clear(); } inline ::pg_query::Node* DeleteStmt::mutable_using_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.using_clause) return using_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DeleteStmt::mutable_using_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.DeleteStmt.using_clause) return &using_clause_; } inline const ::pg_query::Node& DeleteStmt::_internal_using_clause(int index) const { return using_clause_.Get(index); } inline const ::pg_query::Node& DeleteStmt::using_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.using_clause) return _internal_using_clause(index); } inline ::pg_query::Node* DeleteStmt::_internal_add_using_clause() { return using_clause_.Add(); } inline ::pg_query::Node* DeleteStmt::add_using_clause() { // @@protoc_insertion_point(field_add:pg_query.DeleteStmt.using_clause) return _internal_add_using_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DeleteStmt::using_clause() const { // @@protoc_insertion_point(field_list:pg_query.DeleteStmt.using_clause) return using_clause_; } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; inline bool DeleteStmt::_internal_has_where_clause() const { return this != internal_default_instance() && where_clause_ != nullptr; } inline bool DeleteStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void DeleteStmt::clear_where_clause() { if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; } inline const ::pg_query::Node& DeleteStmt::_internal_where_clause() const { const ::pg_query::Node* p = where_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& DeleteStmt::where_clause() const { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.where_clause) return _internal_where_clause(); } inline void DeleteStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); } where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.where_clause) } inline ::pg_query::Node* DeleteStmt::release_where_clause() { ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* DeleteStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.where_clause) ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; return temp; } inline ::pg_query::Node* DeleteStmt::_internal_mutable_where_clause() { if (where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); where_clause_ = p; } return where_clause_; } inline ::pg_query::Node* DeleteStmt::mutable_where_clause() { // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.where_clause) return _internal_mutable_where_clause(); } inline void DeleteStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.DeleteStmt.where_clause) } // repeated .pg_query.Node returning_list = 4 [json_name = "returningList"]; inline int DeleteStmt::_internal_returning_list_size() const { return returning_list_.size(); } inline int DeleteStmt::returning_list_size() const { return _internal_returning_list_size(); } inline void DeleteStmt::clear_returning_list() { returning_list_.Clear(); } inline ::pg_query::Node* DeleteStmt::mutable_returning_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.returning_list) return returning_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DeleteStmt::mutable_returning_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.DeleteStmt.returning_list) return &returning_list_; } inline const ::pg_query::Node& DeleteStmt::_internal_returning_list(int index) const { return returning_list_.Get(index); } inline const ::pg_query::Node& DeleteStmt::returning_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.returning_list) return _internal_returning_list(index); } inline ::pg_query::Node* DeleteStmt::_internal_add_returning_list() { return returning_list_.Add(); } inline ::pg_query::Node* DeleteStmt::add_returning_list() { // @@protoc_insertion_point(field_add:pg_query.DeleteStmt.returning_list) return _internal_add_returning_list(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DeleteStmt::returning_list() const { // @@protoc_insertion_point(field_list:pg_query.DeleteStmt.returning_list) return returning_list_; } // .pg_query.WithClause with_clause = 5 [json_name = "withClause"]; inline bool DeleteStmt::_internal_has_with_clause() const { return this != internal_default_instance() && with_clause_ != nullptr; } inline bool DeleteStmt::has_with_clause() const { return _internal_has_with_clause(); } inline void DeleteStmt::clear_with_clause() { if (GetArena() == nullptr && with_clause_ != nullptr) { delete with_clause_; } with_clause_ = nullptr; } inline const ::pg_query::WithClause& DeleteStmt::_internal_with_clause() const { const ::pg_query::WithClause* p = with_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& DeleteStmt::with_clause() const { // @@protoc_insertion_point(field_get:pg_query.DeleteStmt.with_clause) return _internal_with_clause(); } inline void DeleteStmt::unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_clause_); } with_clause_ = with_clause; if (with_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeleteStmt.with_clause) } inline ::pg_query::WithClause* DeleteStmt::release_with_clause() { ::pg_query::WithClause* temp = with_clause_; with_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::WithClause* DeleteStmt::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_release:pg_query.DeleteStmt.with_clause) ::pg_query::WithClause* temp = with_clause_; with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* DeleteStmt::_internal_mutable_with_clause() { if (with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); with_clause_ = p; } return with_clause_; } inline ::pg_query::WithClause* DeleteStmt::mutable_with_clause() { // @@protoc_insertion_point(field_mutable:pg_query.DeleteStmt.with_clause) return _internal_mutable_with_clause(); } inline void DeleteStmt::set_allocated_with_clause(::pg_query::WithClause* with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete with_clause_; } if (with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_clause); if (message_arena != submessage_arena) { with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_clause, submessage_arena); } } else { } with_clause_ = with_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.DeleteStmt.with_clause) } // ------------------------------------------------------------------- // UpdateStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool UpdateStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool UpdateStmt::has_relation() const { return _internal_has_relation(); } inline void UpdateStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& UpdateStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& UpdateStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.relation) return _internal_relation(); } inline void UpdateStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.relation) } inline ::pg_query::RangeVar* UpdateStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* UpdateStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* UpdateStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* UpdateStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.relation) return _internal_mutable_relation(); } inline void UpdateStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.UpdateStmt.relation) } // repeated .pg_query.Node target_list = 2 [json_name = "targetList"]; inline int UpdateStmt::_internal_target_list_size() const { return target_list_.size(); } inline int UpdateStmt::target_list_size() const { return _internal_target_list_size(); } inline void UpdateStmt::clear_target_list() { target_list_.Clear(); } inline ::pg_query::Node* UpdateStmt::mutable_target_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.target_list) return target_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* UpdateStmt::mutable_target_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.target_list) return &target_list_; } inline const ::pg_query::Node& UpdateStmt::_internal_target_list(int index) const { return target_list_.Get(index); } inline const ::pg_query::Node& UpdateStmt::target_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.target_list) return _internal_target_list(index); } inline ::pg_query::Node* UpdateStmt::_internal_add_target_list() { return target_list_.Add(); } inline ::pg_query::Node* UpdateStmt::add_target_list() { // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.target_list) return _internal_add_target_list(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& UpdateStmt::target_list() const { // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.target_list) return target_list_; } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; inline bool UpdateStmt::_internal_has_where_clause() const { return this != internal_default_instance() && where_clause_ != nullptr; } inline bool UpdateStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void UpdateStmt::clear_where_clause() { if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; } inline const ::pg_query::Node& UpdateStmt::_internal_where_clause() const { const ::pg_query::Node* p = where_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& UpdateStmt::where_clause() const { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.where_clause) return _internal_where_clause(); } inline void UpdateStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); } where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.where_clause) } inline ::pg_query::Node* UpdateStmt::release_where_clause() { ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* UpdateStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.where_clause) ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; return temp; } inline ::pg_query::Node* UpdateStmt::_internal_mutable_where_clause() { if (where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); where_clause_ = p; } return where_clause_; } inline ::pg_query::Node* UpdateStmt::mutable_where_clause() { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.where_clause) return _internal_mutable_where_clause(); } inline void UpdateStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.UpdateStmt.where_clause) } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; inline int UpdateStmt::_internal_from_clause_size() const { return from_clause_.size(); } inline int UpdateStmt::from_clause_size() const { return _internal_from_clause_size(); } inline void UpdateStmt::clear_from_clause() { from_clause_.Clear(); } inline ::pg_query::Node* UpdateStmt::mutable_from_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.from_clause) return from_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* UpdateStmt::mutable_from_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.from_clause) return &from_clause_; } inline const ::pg_query::Node& UpdateStmt::_internal_from_clause(int index) const { return from_clause_.Get(index); } inline const ::pg_query::Node& UpdateStmt::from_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.from_clause) return _internal_from_clause(index); } inline ::pg_query::Node* UpdateStmt::_internal_add_from_clause() { return from_clause_.Add(); } inline ::pg_query::Node* UpdateStmt::add_from_clause() { // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.from_clause) return _internal_add_from_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& UpdateStmt::from_clause() const { // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.from_clause) return from_clause_; } // repeated .pg_query.Node returning_list = 5 [json_name = "returningList"]; inline int UpdateStmt::_internal_returning_list_size() const { return returning_list_.size(); } inline int UpdateStmt::returning_list_size() const { return _internal_returning_list_size(); } inline void UpdateStmt::clear_returning_list() { returning_list_.Clear(); } inline ::pg_query::Node* UpdateStmt::mutable_returning_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.returning_list) return returning_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* UpdateStmt::mutable_returning_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.UpdateStmt.returning_list) return &returning_list_; } inline const ::pg_query::Node& UpdateStmt::_internal_returning_list(int index) const { return returning_list_.Get(index); } inline const ::pg_query::Node& UpdateStmt::returning_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.returning_list) return _internal_returning_list(index); } inline ::pg_query::Node* UpdateStmt::_internal_add_returning_list() { return returning_list_.Add(); } inline ::pg_query::Node* UpdateStmt::add_returning_list() { // @@protoc_insertion_point(field_add:pg_query.UpdateStmt.returning_list) return _internal_add_returning_list(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& UpdateStmt::returning_list() const { // @@protoc_insertion_point(field_list:pg_query.UpdateStmt.returning_list) return returning_list_; } // .pg_query.WithClause with_clause = 6 [json_name = "withClause"]; inline bool UpdateStmt::_internal_has_with_clause() const { return this != internal_default_instance() && with_clause_ != nullptr; } inline bool UpdateStmt::has_with_clause() const { return _internal_has_with_clause(); } inline void UpdateStmt::clear_with_clause() { if (GetArena() == nullptr && with_clause_ != nullptr) { delete with_clause_; } with_clause_ = nullptr; } inline const ::pg_query::WithClause& UpdateStmt::_internal_with_clause() const { const ::pg_query::WithClause* p = with_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& UpdateStmt::with_clause() const { // @@protoc_insertion_point(field_get:pg_query.UpdateStmt.with_clause) return _internal_with_clause(); } inline void UpdateStmt::unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_clause_); } with_clause_ = with_clause; if (with_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.UpdateStmt.with_clause) } inline ::pg_query::WithClause* UpdateStmt::release_with_clause() { ::pg_query::WithClause* temp = with_clause_; with_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::WithClause* UpdateStmt::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_release:pg_query.UpdateStmt.with_clause) ::pg_query::WithClause* temp = with_clause_; with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* UpdateStmt::_internal_mutable_with_clause() { if (with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); with_clause_ = p; } return with_clause_; } inline ::pg_query::WithClause* UpdateStmt::mutable_with_clause() { // @@protoc_insertion_point(field_mutable:pg_query.UpdateStmt.with_clause) return _internal_mutable_with_clause(); } inline void UpdateStmt::set_allocated_with_clause(::pg_query::WithClause* with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete with_clause_; } if (with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_clause); if (message_arena != submessage_arena) { with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_clause, submessage_arena); } } else { } with_clause_ = with_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.UpdateStmt.with_clause) } // ------------------------------------------------------------------- // SelectStmt // repeated .pg_query.Node distinct_clause = 1 [json_name = "distinctClause"]; inline int SelectStmt::_internal_distinct_clause_size() const { return distinct_clause_.size(); } inline int SelectStmt::distinct_clause_size() const { return _internal_distinct_clause_size(); } inline void SelectStmt::clear_distinct_clause() { distinct_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_distinct_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.distinct_clause) return distinct_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_distinct_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.distinct_clause) return &distinct_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_distinct_clause(int index) const { return distinct_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::distinct_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.distinct_clause) return _internal_distinct_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_distinct_clause() { return distinct_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_distinct_clause() { // @@protoc_insertion_point(field_add:pg_query.SelectStmt.distinct_clause) return _internal_add_distinct_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::distinct_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.distinct_clause) return distinct_clause_; } // .pg_query.IntoClause into_clause = 2 [json_name = "intoClause"]; inline bool SelectStmt::_internal_has_into_clause() const { return this != internal_default_instance() && into_clause_ != nullptr; } inline bool SelectStmt::has_into_clause() const { return _internal_has_into_clause(); } inline void SelectStmt::clear_into_clause() { if (GetArena() == nullptr && into_clause_ != nullptr) { delete into_clause_; } into_clause_ = nullptr; } inline const ::pg_query::IntoClause& SelectStmt::_internal_into_clause() const { const ::pg_query::IntoClause* p = into_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_IntoClause_default_instance_); } inline const ::pg_query::IntoClause& SelectStmt::into_clause() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.into_clause) return _internal_into_clause(); } inline void SelectStmt::unsafe_arena_set_allocated_into_clause( ::pg_query::IntoClause* into_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(into_clause_); } into_clause_ = into_clause; if (into_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.into_clause) } inline ::pg_query::IntoClause* SelectStmt::release_into_clause() { ::pg_query::IntoClause* temp = into_clause_; into_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::IntoClause* SelectStmt::unsafe_arena_release_into_clause() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.into_clause) ::pg_query::IntoClause* temp = into_clause_; into_clause_ = nullptr; return temp; } inline ::pg_query::IntoClause* SelectStmt::_internal_mutable_into_clause() { if (into_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::IntoClause>(GetArena()); into_clause_ = p; } return into_clause_; } inline ::pg_query::IntoClause* SelectStmt::mutable_into_clause() { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.into_clause) return _internal_mutable_into_clause(); } inline void SelectStmt::set_allocated_into_clause(::pg_query::IntoClause* into_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete into_clause_; } if (into_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(into_clause); if (message_arena != submessage_arena) { into_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, into_clause, submessage_arena); } } else { } into_clause_ = into_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.into_clause) } // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; inline int SelectStmt::_internal_target_list_size() const { return target_list_.size(); } inline int SelectStmt::target_list_size() const { return _internal_target_list_size(); } inline void SelectStmt::clear_target_list() { target_list_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_target_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.target_list) return target_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_target_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.target_list) return &target_list_; } inline const ::pg_query::Node& SelectStmt::_internal_target_list(int index) const { return target_list_.Get(index); } inline const ::pg_query::Node& SelectStmt::target_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.target_list) return _internal_target_list(index); } inline ::pg_query::Node* SelectStmt::_internal_add_target_list() { return target_list_.Add(); } inline ::pg_query::Node* SelectStmt::add_target_list() { // @@protoc_insertion_point(field_add:pg_query.SelectStmt.target_list) return _internal_add_target_list(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::target_list() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.target_list) return target_list_; } // repeated .pg_query.Node from_clause = 4 [json_name = "fromClause"]; inline int SelectStmt::_internal_from_clause_size() const { return from_clause_.size(); } inline int SelectStmt::from_clause_size() const { return _internal_from_clause_size(); } inline void SelectStmt::clear_from_clause() { from_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_from_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.from_clause) return from_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_from_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.from_clause) return &from_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_from_clause(int index) const { return from_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::from_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.from_clause) return _internal_from_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_from_clause() { return from_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_from_clause() { // @@protoc_insertion_point(field_add:pg_query.SelectStmt.from_clause) return _internal_add_from_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::from_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.from_clause) return from_clause_; } // .pg_query.Node where_clause = 5 [json_name = "whereClause"]; inline bool SelectStmt::_internal_has_where_clause() const { return this != internal_default_instance() && where_clause_ != nullptr; } inline bool SelectStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void SelectStmt::clear_where_clause() { if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; } inline const ::pg_query::Node& SelectStmt::_internal_where_clause() const { const ::pg_query::Node* p = where_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SelectStmt::where_clause() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.where_clause) return _internal_where_clause(); } inline void SelectStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); } where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.where_clause) } inline ::pg_query::Node* SelectStmt::release_where_clause() { ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.where_clause) ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_where_clause() { if (where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); where_clause_ = p; } return where_clause_; } inline ::pg_query::Node* SelectStmt::mutable_where_clause() { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.where_clause) return _internal_mutable_where_clause(); } inline void SelectStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.where_clause) } // repeated .pg_query.Node group_clause = 6 [json_name = "groupClause"]; inline int SelectStmt::_internal_group_clause_size() const { return group_clause_.size(); } inline int SelectStmt::group_clause_size() const { return _internal_group_clause_size(); } inline void SelectStmt::clear_group_clause() { group_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_group_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.group_clause) return group_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_group_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.group_clause) return &group_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_group_clause(int index) const { return group_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::group_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.group_clause) return _internal_group_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_group_clause() { return group_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_group_clause() { // @@protoc_insertion_point(field_add:pg_query.SelectStmt.group_clause) return _internal_add_group_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::group_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.group_clause) return group_clause_; } // .pg_query.Node having_clause = 7 [json_name = "havingClause"]; inline bool SelectStmt::_internal_has_having_clause() const { return this != internal_default_instance() && having_clause_ != nullptr; } inline bool SelectStmt::has_having_clause() const { return _internal_has_having_clause(); } inline void SelectStmt::clear_having_clause() { if (GetArena() == nullptr && having_clause_ != nullptr) { delete having_clause_; } having_clause_ = nullptr; } inline const ::pg_query::Node& SelectStmt::_internal_having_clause() const { const ::pg_query::Node* p = having_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SelectStmt::having_clause() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.having_clause) return _internal_having_clause(); } inline void SelectStmt::unsafe_arena_set_allocated_having_clause( ::pg_query::Node* having_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(having_clause_); } having_clause_ = having_clause; if (having_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.having_clause) } inline ::pg_query::Node* SelectStmt::release_having_clause() { ::pg_query::Node* temp = having_clause_; having_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_having_clause() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.having_clause) ::pg_query::Node* temp = having_clause_; having_clause_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_having_clause() { if (having_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); having_clause_ = p; } return having_clause_; } inline ::pg_query::Node* SelectStmt::mutable_having_clause() { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.having_clause) return _internal_mutable_having_clause(); } inline void SelectStmt::set_allocated_having_clause(::pg_query::Node* having_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete having_clause_; } if (having_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(having_clause); if (message_arena != submessage_arena) { having_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, having_clause, submessage_arena); } } else { } having_clause_ = having_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.having_clause) } // repeated .pg_query.Node window_clause = 8 [json_name = "windowClause"]; inline int SelectStmt::_internal_window_clause_size() const { return window_clause_.size(); } inline int SelectStmt::window_clause_size() const { return _internal_window_clause_size(); } inline void SelectStmt::clear_window_clause() { window_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_window_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.window_clause) return window_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_window_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.window_clause) return &window_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_window_clause(int index) const { return window_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::window_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.window_clause) return _internal_window_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_window_clause() { return window_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_window_clause() { // @@protoc_insertion_point(field_add:pg_query.SelectStmt.window_clause) return _internal_add_window_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::window_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.window_clause) return window_clause_; } // repeated .pg_query.Node values_lists = 9 [json_name = "valuesLists"]; inline int SelectStmt::_internal_values_lists_size() const { return values_lists_.size(); } inline int SelectStmt::values_lists_size() const { return _internal_values_lists_size(); } inline void SelectStmt::clear_values_lists() { values_lists_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_values_lists(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.values_lists) return values_lists_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_values_lists() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.values_lists) return &values_lists_; } inline const ::pg_query::Node& SelectStmt::_internal_values_lists(int index) const { return values_lists_.Get(index); } inline const ::pg_query::Node& SelectStmt::values_lists(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.values_lists) return _internal_values_lists(index); } inline ::pg_query::Node* SelectStmt::_internal_add_values_lists() { return values_lists_.Add(); } inline ::pg_query::Node* SelectStmt::add_values_lists() { // @@protoc_insertion_point(field_add:pg_query.SelectStmt.values_lists) return _internal_add_values_lists(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::values_lists() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.values_lists) return values_lists_; } // repeated .pg_query.Node sort_clause = 10 [json_name = "sortClause"]; inline int SelectStmt::_internal_sort_clause_size() const { return sort_clause_.size(); } inline int SelectStmt::sort_clause_size() const { return _internal_sort_clause_size(); } inline void SelectStmt::clear_sort_clause() { sort_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_sort_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.sort_clause) return sort_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_sort_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.sort_clause) return &sort_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_sort_clause(int index) const { return sort_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::sort_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.sort_clause) return _internal_sort_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_sort_clause() { return sort_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_sort_clause() { // @@protoc_insertion_point(field_add:pg_query.SelectStmt.sort_clause) return _internal_add_sort_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::sort_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.sort_clause) return sort_clause_; } // .pg_query.Node limit_offset = 11 [json_name = "limitOffset"]; inline bool SelectStmt::_internal_has_limit_offset() const { return this != internal_default_instance() && limit_offset_ != nullptr; } inline bool SelectStmt::has_limit_offset() const { return _internal_has_limit_offset(); } inline void SelectStmt::clear_limit_offset() { if (GetArena() == nullptr && limit_offset_ != nullptr) { delete limit_offset_; } limit_offset_ = nullptr; } inline const ::pg_query::Node& SelectStmt::_internal_limit_offset() const { const ::pg_query::Node* p = limit_offset_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SelectStmt::limit_offset() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.limit_offset) return _internal_limit_offset(); } inline void SelectStmt::unsafe_arena_set_allocated_limit_offset( ::pg_query::Node* limit_offset) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(limit_offset_); } limit_offset_ = limit_offset; if (limit_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.limit_offset) } inline ::pg_query::Node* SelectStmt::release_limit_offset() { ::pg_query::Node* temp = limit_offset_; limit_offset_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_limit_offset() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.limit_offset) ::pg_query::Node* temp = limit_offset_; limit_offset_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_limit_offset() { if (limit_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); limit_offset_ = p; } return limit_offset_; } inline ::pg_query::Node* SelectStmt::mutable_limit_offset() { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.limit_offset) return _internal_mutable_limit_offset(); } inline void SelectStmt::set_allocated_limit_offset(::pg_query::Node* limit_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete limit_offset_; } if (limit_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(limit_offset); if (message_arena != submessage_arena) { limit_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, limit_offset, submessage_arena); } } else { } limit_offset_ = limit_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.limit_offset) } // .pg_query.Node limit_count = 12 [json_name = "limitCount"]; inline bool SelectStmt::_internal_has_limit_count() const { return this != internal_default_instance() && limit_count_ != nullptr; } inline bool SelectStmt::has_limit_count() const { return _internal_has_limit_count(); } inline void SelectStmt::clear_limit_count() { if (GetArena() == nullptr && limit_count_ != nullptr) { delete limit_count_; } limit_count_ = nullptr; } inline const ::pg_query::Node& SelectStmt::_internal_limit_count() const { const ::pg_query::Node* p = limit_count_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SelectStmt::limit_count() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.limit_count) return _internal_limit_count(); } inline void SelectStmt::unsafe_arena_set_allocated_limit_count( ::pg_query::Node* limit_count) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(limit_count_); } limit_count_ = limit_count; if (limit_count) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.limit_count) } inline ::pg_query::Node* SelectStmt::release_limit_count() { ::pg_query::Node* temp = limit_count_; limit_count_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SelectStmt::unsafe_arena_release_limit_count() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.limit_count) ::pg_query::Node* temp = limit_count_; limit_count_ = nullptr; return temp; } inline ::pg_query::Node* SelectStmt::_internal_mutable_limit_count() { if (limit_count_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); limit_count_ = p; } return limit_count_; } inline ::pg_query::Node* SelectStmt::mutable_limit_count() { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.limit_count) return _internal_mutable_limit_count(); } inline void SelectStmt::set_allocated_limit_count(::pg_query::Node* limit_count) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete limit_count_; } if (limit_count) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(limit_count); if (message_arena != submessage_arena) { limit_count = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, limit_count, submessage_arena); } } else { } limit_count_ = limit_count; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.limit_count) } // .pg_query.LimitOption limit_option = 13 [json_name = "limitOption"]; inline void SelectStmt::clear_limit_option() { limit_option_ = 0; } inline ::pg_query::LimitOption SelectStmt::_internal_limit_option() const { return static_cast< ::pg_query::LimitOption >(limit_option_); } inline ::pg_query::LimitOption SelectStmt::limit_option() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.limit_option) return _internal_limit_option(); } inline void SelectStmt::_internal_set_limit_option(::pg_query::LimitOption value) { limit_option_ = value; } inline void SelectStmt::set_limit_option(::pg_query::LimitOption value) { _internal_set_limit_option(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.limit_option) } // repeated .pg_query.Node locking_clause = 14 [json_name = "lockingClause"]; inline int SelectStmt::_internal_locking_clause_size() const { return locking_clause_.size(); } inline int SelectStmt::locking_clause_size() const { return _internal_locking_clause_size(); } inline void SelectStmt::clear_locking_clause() { locking_clause_.Clear(); } inline ::pg_query::Node* SelectStmt::mutable_locking_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.locking_clause) return locking_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SelectStmt::mutable_locking_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.SelectStmt.locking_clause) return &locking_clause_; } inline const ::pg_query::Node& SelectStmt::_internal_locking_clause(int index) const { return locking_clause_.Get(index); } inline const ::pg_query::Node& SelectStmt::locking_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.locking_clause) return _internal_locking_clause(index); } inline ::pg_query::Node* SelectStmt::_internal_add_locking_clause() { return locking_clause_.Add(); } inline ::pg_query::Node* SelectStmt::add_locking_clause() { // @@protoc_insertion_point(field_add:pg_query.SelectStmt.locking_clause) return _internal_add_locking_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SelectStmt::locking_clause() const { // @@protoc_insertion_point(field_list:pg_query.SelectStmt.locking_clause) return locking_clause_; } // .pg_query.WithClause with_clause = 15 [json_name = "withClause"]; inline bool SelectStmt::_internal_has_with_clause() const { return this != internal_default_instance() && with_clause_ != nullptr; } inline bool SelectStmt::has_with_clause() const { return _internal_has_with_clause(); } inline void SelectStmt::clear_with_clause() { if (GetArena() == nullptr && with_clause_ != nullptr) { delete with_clause_; } with_clause_ = nullptr; } inline const ::pg_query::WithClause& SelectStmt::_internal_with_clause() const { const ::pg_query::WithClause* p = with_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_WithClause_default_instance_); } inline const ::pg_query::WithClause& SelectStmt::with_clause() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.with_clause) return _internal_with_clause(); } inline void SelectStmt::unsafe_arena_set_allocated_with_clause( ::pg_query::WithClause* with_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_clause_); } with_clause_ = with_clause; if (with_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.with_clause) } inline ::pg_query::WithClause* SelectStmt::release_with_clause() { ::pg_query::WithClause* temp = with_clause_; with_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::WithClause* SelectStmt::unsafe_arena_release_with_clause() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.with_clause) ::pg_query::WithClause* temp = with_clause_; with_clause_ = nullptr; return temp; } inline ::pg_query::WithClause* SelectStmt::_internal_mutable_with_clause() { if (with_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WithClause>(GetArena()); with_clause_ = p; } return with_clause_; } inline ::pg_query::WithClause* SelectStmt::mutable_with_clause() { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.with_clause) return _internal_mutable_with_clause(); } inline void SelectStmt::set_allocated_with_clause(::pg_query::WithClause* with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete with_clause_; } if (with_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_clause); if (message_arena != submessage_arena) { with_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_clause, submessage_arena); } } else { } with_clause_ = with_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.with_clause) } // .pg_query.SetOperation op = 16 [json_name = "op"]; inline void SelectStmt::clear_op() { op_ = 0; } inline ::pg_query::SetOperation SelectStmt::_internal_op() const { return static_cast< ::pg_query::SetOperation >(op_); } inline ::pg_query::SetOperation SelectStmt::op() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.op) return _internal_op(); } inline void SelectStmt::_internal_set_op(::pg_query::SetOperation value) { op_ = value; } inline void SelectStmt::set_op(::pg_query::SetOperation value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.op) } // bool all = 17 [json_name = "all"]; inline void SelectStmt::clear_all() { all_ = false; } inline bool SelectStmt::_internal_all() const { return all_; } inline bool SelectStmt::all() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.all) return _internal_all(); } inline void SelectStmt::_internal_set_all(bool value) { all_ = value; } inline void SelectStmt::set_all(bool value) { _internal_set_all(value); // @@protoc_insertion_point(field_set:pg_query.SelectStmt.all) } // .pg_query.SelectStmt larg = 18 [json_name = "larg"]; inline bool SelectStmt::_internal_has_larg() const { return this != internal_default_instance() && larg_ != nullptr; } inline bool SelectStmt::has_larg() const { return _internal_has_larg(); } inline void SelectStmt::clear_larg() { if (GetArena() == nullptr && larg_ != nullptr) { delete larg_; } larg_ = nullptr; } inline const ::pg_query::SelectStmt& SelectStmt::_internal_larg() const { const ::pg_query::SelectStmt* p = larg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_SelectStmt_default_instance_); } inline const ::pg_query::SelectStmt& SelectStmt::larg() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.larg) return _internal_larg(); } inline void SelectStmt::unsafe_arena_set_allocated_larg( ::pg_query::SelectStmt* larg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(larg_); } larg_ = larg; if (larg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.larg) } inline ::pg_query::SelectStmt* SelectStmt::release_larg() { ::pg_query::SelectStmt* temp = larg_; larg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::SelectStmt* SelectStmt::unsafe_arena_release_larg() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.larg) ::pg_query::SelectStmt* temp = larg_; larg_ = nullptr; return temp; } inline ::pg_query::SelectStmt* SelectStmt::_internal_mutable_larg() { if (larg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::SelectStmt>(GetArena()); larg_ = p; } return larg_; } inline ::pg_query::SelectStmt* SelectStmt::mutable_larg() { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.larg) return _internal_mutable_larg(); } inline void SelectStmt::set_allocated_larg(::pg_query::SelectStmt* larg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete larg_; } if (larg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(larg); if (message_arena != submessage_arena) { larg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, larg, submessage_arena); } } else { } larg_ = larg; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.larg) } // .pg_query.SelectStmt rarg = 19 [json_name = "rarg"]; inline bool SelectStmt::_internal_has_rarg() const { return this != internal_default_instance() && rarg_ != nullptr; } inline bool SelectStmt::has_rarg() const { return _internal_has_rarg(); } inline void SelectStmt::clear_rarg() { if (GetArena() == nullptr && rarg_ != nullptr) { delete rarg_; } rarg_ = nullptr; } inline const ::pg_query::SelectStmt& SelectStmt::_internal_rarg() const { const ::pg_query::SelectStmt* p = rarg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_SelectStmt_default_instance_); } inline const ::pg_query::SelectStmt& SelectStmt::rarg() const { // @@protoc_insertion_point(field_get:pg_query.SelectStmt.rarg) return _internal_rarg(); } inline void SelectStmt::unsafe_arena_set_allocated_rarg( ::pg_query::SelectStmt* rarg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rarg_); } rarg_ = rarg; if (rarg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SelectStmt.rarg) } inline ::pg_query::SelectStmt* SelectStmt::release_rarg() { ::pg_query::SelectStmt* temp = rarg_; rarg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::SelectStmt* SelectStmt::unsafe_arena_release_rarg() { // @@protoc_insertion_point(field_release:pg_query.SelectStmt.rarg) ::pg_query::SelectStmt* temp = rarg_; rarg_ = nullptr; return temp; } inline ::pg_query::SelectStmt* SelectStmt::_internal_mutable_rarg() { if (rarg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::SelectStmt>(GetArena()); rarg_ = p; } return rarg_; } inline ::pg_query::SelectStmt* SelectStmt::mutable_rarg() { // @@protoc_insertion_point(field_mutable:pg_query.SelectStmt.rarg) return _internal_mutable_rarg(); } inline void SelectStmt::set_allocated_rarg(::pg_query::SelectStmt* rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete rarg_; } if (rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rarg); if (message_arena != submessage_arena) { rarg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rarg, submessage_arena); } } else { } rarg_ = rarg; // @@protoc_insertion_point(field_set_allocated:pg_query.SelectStmt.rarg) } // ------------------------------------------------------------------- // AlterTableStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool AlterTableStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool AlterTableStmt::has_relation() const { return _internal_has_relation(); } inline void AlterTableStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& AlterTableStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterTableStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.relation) return _internal_relation(); } inline void AlterTableStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableStmt.relation) } inline ::pg_query::RangeVar* AlterTableStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* AlterTableStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.AlterTableStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterTableStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* AlterTableStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableStmt.relation) return _internal_mutable_relation(); } inline void AlterTableStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableStmt.relation) } // repeated .pg_query.Node cmds = 2 [json_name = "cmds"]; inline int AlterTableStmt::_internal_cmds_size() const { return cmds_.size(); } inline int AlterTableStmt::cmds_size() const { return _internal_cmds_size(); } inline void AlterTableStmt::clear_cmds() { cmds_.Clear(); } inline ::pg_query::Node* AlterTableStmt::mutable_cmds(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableStmt.cmds) return cmds_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTableStmt::mutable_cmds() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableStmt.cmds) return &cmds_; } inline const ::pg_query::Node& AlterTableStmt::_internal_cmds(int index) const { return cmds_.Get(index); } inline const ::pg_query::Node& AlterTableStmt::cmds(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.cmds) return _internal_cmds(index); } inline ::pg_query::Node* AlterTableStmt::_internal_add_cmds() { return cmds_.Add(); } inline ::pg_query::Node* AlterTableStmt::add_cmds() { // @@protoc_insertion_point(field_add:pg_query.AlterTableStmt.cmds) return _internal_add_cmds(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTableStmt::cmds() const { // @@protoc_insertion_point(field_list:pg_query.AlterTableStmt.cmds) return cmds_; } // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; inline void AlterTableStmt::clear_relkind() { relkind_ = 0; } inline ::pg_query::ObjectType AlterTableStmt::_internal_relkind() const { return static_cast< ::pg_query::ObjectType >(relkind_); } inline ::pg_query::ObjectType AlterTableStmt::relkind() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.relkind) return _internal_relkind(); } inline void AlterTableStmt::_internal_set_relkind(::pg_query::ObjectType value) { relkind_ = value; } inline void AlterTableStmt::set_relkind(::pg_query::ObjectType value) { _internal_set_relkind(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableStmt.relkind) } // bool missing_ok = 4 [json_name = "missing_ok"]; inline void AlterTableStmt::clear_missing_ok() { missing_ok_ = false; } inline bool AlterTableStmt::_internal_missing_ok() const { return missing_ok_; } inline bool AlterTableStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableStmt.missing_ok) return _internal_missing_ok(); } inline void AlterTableStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void AlterTableStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableStmt.missing_ok) } // ------------------------------------------------------------------- // AlterTableCmd // .pg_query.AlterTableType subtype = 1 [json_name = "subtype"]; inline void AlterTableCmd::clear_subtype() { subtype_ = 0; } inline ::pg_query::AlterTableType AlterTableCmd::_internal_subtype() const { return static_cast< ::pg_query::AlterTableType >(subtype_); } inline ::pg_query::AlterTableType AlterTableCmd::subtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.subtype) return _internal_subtype(); } inline void AlterTableCmd::_internal_set_subtype(::pg_query::AlterTableType value) { subtype_ = value; } inline void AlterTableCmd::set_subtype(::pg_query::AlterTableType value) { _internal_set_subtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.subtype) } // string name = 2 [json_name = "name"]; inline void AlterTableCmd::clear_name() { name_.ClearToEmpty(); } inline const std::string& AlterTableCmd::name() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.name) return _internal_name(); } inline void AlterTableCmd::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.name) } inline std::string* AlterTableCmd::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableCmd.name) return _internal_mutable_name(); } inline const std::string& AlterTableCmd::_internal_name() const { return name_.Get(); } inline void AlterTableCmd::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterTableCmd::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterTableCmd.name) } inline void AlterTableCmd::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterTableCmd.name) } inline void AlterTableCmd::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterTableCmd.name) } inline std::string* AlterTableCmd::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterTableCmd::release_name() { // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterTableCmd::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.name) } // int32 num = 3 [json_name = "num"]; inline void AlterTableCmd::clear_num() { num_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 AlterTableCmd::_internal_num() const { return num_; } inline ::PROTOBUF_NAMESPACE_ID::int32 AlterTableCmd::num() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.num) return _internal_num(); } inline void AlterTableCmd::_internal_set_num(::PROTOBUF_NAMESPACE_ID::int32 value) { num_ = value; } inline void AlterTableCmd::set_num(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_num(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.num) } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; inline bool AlterTableCmd::_internal_has_newowner() const { return this != internal_default_instance() && newowner_ != nullptr; } inline bool AlterTableCmd::has_newowner() const { return _internal_has_newowner(); } inline void AlterTableCmd::clear_newowner() { if (GetArena() == nullptr && newowner_ != nullptr) { delete newowner_; } newowner_ = nullptr; } inline const ::pg_query::RoleSpec& AlterTableCmd::_internal_newowner() const { const ::pg_query::RoleSpec* p = newowner_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& AlterTableCmd::newowner() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.newowner) return _internal_newowner(); } inline void AlterTableCmd::unsafe_arena_set_allocated_newowner( ::pg_query::RoleSpec* newowner) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(newowner_); } newowner_ = newowner; if (newowner) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableCmd.newowner) } inline ::pg_query::RoleSpec* AlterTableCmd::release_newowner() { ::pg_query::RoleSpec* temp = newowner_; newowner_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* AlterTableCmd::unsafe_arena_release_newowner() { // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.newowner) ::pg_query::RoleSpec* temp = newowner_; newowner_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterTableCmd::_internal_mutable_newowner() { if (newowner_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); newowner_ = p; } return newowner_; } inline ::pg_query::RoleSpec* AlterTableCmd::mutable_newowner() { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableCmd.newowner) return _internal_mutable_newowner(); } inline void AlterTableCmd::set_allocated_newowner(::pg_query::RoleSpec* newowner) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete newowner_; } if (newowner) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(newowner); if (message_arena != submessage_arena) { newowner = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, newowner, submessage_arena); } } else { } newowner_ = newowner; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.newowner) } // .pg_query.Node def = 5 [json_name = "def"]; inline bool AlterTableCmd::_internal_has_def() const { return this != internal_default_instance() && def_ != nullptr; } inline bool AlterTableCmd::has_def() const { return _internal_has_def(); } inline void AlterTableCmd::clear_def() { if (GetArena() == nullptr && def_ != nullptr) { delete def_; } def_ = nullptr; } inline const ::pg_query::Node& AlterTableCmd::_internal_def() const { const ::pg_query::Node* p = def_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterTableCmd::def() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.def) return _internal_def(); } inline void AlterTableCmd::unsafe_arena_set_allocated_def( ::pg_query::Node* def) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(def_); } def_ = def; if (def) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterTableCmd.def) } inline ::pg_query::Node* AlterTableCmd::release_def() { ::pg_query::Node* temp = def_; def_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* AlterTableCmd::unsafe_arena_release_def() { // @@protoc_insertion_point(field_release:pg_query.AlterTableCmd.def) ::pg_query::Node* temp = def_; def_ = nullptr; return temp; } inline ::pg_query::Node* AlterTableCmd::_internal_mutable_def() { if (def_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); def_ = p; } return def_; } inline ::pg_query::Node* AlterTableCmd::mutable_def() { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableCmd.def) return _internal_mutable_def(); } inline void AlterTableCmd::set_allocated_def(::pg_query::Node* def) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete def_; } if (def) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(def); if (message_arena != submessage_arena) { def = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, def, submessage_arena); } } else { } def_ = def; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableCmd.def) } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; inline void AlterTableCmd::clear_behavior() { behavior_ = 0; } inline ::pg_query::DropBehavior AlterTableCmd::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(behavior_); } inline ::pg_query::DropBehavior AlterTableCmd::behavior() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.behavior) return _internal_behavior(); } inline void AlterTableCmd::_internal_set_behavior(::pg_query::DropBehavior value) { behavior_ = value; } inline void AlterTableCmd::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.behavior) } // bool missing_ok = 7 [json_name = "missing_ok"]; inline void AlterTableCmd::clear_missing_ok() { missing_ok_ = false; } inline bool AlterTableCmd::_internal_missing_ok() const { return missing_ok_; } inline bool AlterTableCmd::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableCmd.missing_ok) return _internal_missing_ok(); } inline void AlterTableCmd::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void AlterTableCmd::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableCmd.missing_ok) } // ------------------------------------------------------------------- // AlterDomainStmt // string subtype = 1 [json_name = "subtype"]; inline void AlterDomainStmt::clear_subtype() { subtype_.ClearToEmpty(); } inline const std::string& AlterDomainStmt::subtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.subtype) return _internal_subtype(); } inline void AlterDomainStmt::set_subtype(const std::string& value) { _internal_set_subtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.subtype) } inline std::string* AlterDomainStmt::mutable_subtype() { // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.subtype) return _internal_mutable_subtype(); } inline const std::string& AlterDomainStmt::_internal_subtype() const { return subtype_.Get(); } inline void AlterDomainStmt::_internal_set_subtype(const std::string& value) { subtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterDomainStmt::set_subtype(std::string&& value) { subtype_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterDomainStmt.subtype) } inline void AlterDomainStmt::set_subtype(const char* value) { GOOGLE_DCHECK(value != nullptr); subtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterDomainStmt.subtype) } inline void AlterDomainStmt::set_subtype(const char* value, size_t size) { subtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterDomainStmt.subtype) } inline std::string* AlterDomainStmt::_internal_mutable_subtype() { return subtype_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterDomainStmt::release_subtype() { // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.subtype) return subtype_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterDomainStmt::set_allocated_subtype(std::string* subtype) { if (subtype != nullptr) { } else { } subtype_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), subtype, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDomainStmt.subtype) } // repeated .pg_query.Node type_name = 2 [json_name = "typeName"]; inline int AlterDomainStmt::_internal_type_name_size() const { return type_name_.size(); } inline int AlterDomainStmt::type_name_size() const { return _internal_type_name_size(); } inline void AlterDomainStmt::clear_type_name() { type_name_.Clear(); } inline ::pg_query::Node* AlterDomainStmt::mutable_type_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.type_name) return type_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterDomainStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDomainStmt.type_name) return &type_name_; } inline const ::pg_query::Node& AlterDomainStmt::_internal_type_name(int index) const { return type_name_.Get(index); } inline const ::pg_query::Node& AlterDomainStmt::type_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.type_name) return _internal_type_name(index); } inline ::pg_query::Node* AlterDomainStmt::_internal_add_type_name() { return type_name_.Add(); } inline ::pg_query::Node* AlterDomainStmt::add_type_name() { // @@protoc_insertion_point(field_add:pg_query.AlterDomainStmt.type_name) return _internal_add_type_name(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterDomainStmt::type_name() const { // @@protoc_insertion_point(field_list:pg_query.AlterDomainStmt.type_name) return type_name_; } // string name = 3 [json_name = "name"]; inline void AlterDomainStmt::clear_name() { name_.ClearToEmpty(); } inline const std::string& AlterDomainStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.name) return _internal_name(); } inline void AlterDomainStmt::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.name) } inline std::string* AlterDomainStmt::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.name) return _internal_mutable_name(); } inline const std::string& AlterDomainStmt::_internal_name() const { return name_.Get(); } inline void AlterDomainStmt::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterDomainStmt::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterDomainStmt.name) } inline void AlterDomainStmt::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterDomainStmt.name) } inline void AlterDomainStmt::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterDomainStmt.name) } inline std::string* AlterDomainStmt::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterDomainStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterDomainStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDomainStmt.name) } // .pg_query.Node def = 4 [json_name = "def"]; inline bool AlterDomainStmt::_internal_has_def() const { return this != internal_default_instance() && def_ != nullptr; } inline bool AlterDomainStmt::has_def() const { return _internal_has_def(); } inline void AlterDomainStmt::clear_def() { if (GetArena() == nullptr && def_ != nullptr) { delete def_; } def_ = nullptr; } inline const ::pg_query::Node& AlterDomainStmt::_internal_def() const { const ::pg_query::Node* p = def_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterDomainStmt::def() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.def) return _internal_def(); } inline void AlterDomainStmt::unsafe_arena_set_allocated_def( ::pg_query::Node* def) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(def_); } def_ = def; if (def) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDomainStmt.def) } inline ::pg_query::Node* AlterDomainStmt::release_def() { ::pg_query::Node* temp = def_; def_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* AlterDomainStmt::unsafe_arena_release_def() { // @@protoc_insertion_point(field_release:pg_query.AlterDomainStmt.def) ::pg_query::Node* temp = def_; def_ = nullptr; return temp; } inline ::pg_query::Node* AlterDomainStmt::_internal_mutable_def() { if (def_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); def_ = p; } return def_; } inline ::pg_query::Node* AlterDomainStmt::mutable_def() { // @@protoc_insertion_point(field_mutable:pg_query.AlterDomainStmt.def) return _internal_mutable_def(); } inline void AlterDomainStmt::set_allocated_def(::pg_query::Node* def) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete def_; } if (def) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(def); if (message_arena != submessage_arena) { def = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, def, submessage_arena); } } else { } def_ = def; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDomainStmt.def) } // .pg_query.DropBehavior behavior = 5 [json_name = "behavior"]; inline void AlterDomainStmt::clear_behavior() { behavior_ = 0; } inline ::pg_query::DropBehavior AlterDomainStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(behavior_); } inline ::pg_query::DropBehavior AlterDomainStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.behavior) return _internal_behavior(); } inline void AlterDomainStmt::_internal_set_behavior(::pg_query::DropBehavior value) { behavior_ = value; } inline void AlterDomainStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.behavior) } // bool missing_ok = 6 [json_name = "missing_ok"]; inline void AlterDomainStmt::clear_missing_ok() { missing_ok_ = false; } inline bool AlterDomainStmt::_internal_missing_ok() const { return missing_ok_; } inline bool AlterDomainStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterDomainStmt.missing_ok) return _internal_missing_ok(); } inline void AlterDomainStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void AlterDomainStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterDomainStmt.missing_ok) } // ------------------------------------------------------------------- // SetOperationStmt // .pg_query.SetOperation op = 1 [json_name = "op"]; inline void SetOperationStmt::clear_op() { op_ = 0; } inline ::pg_query::SetOperation SetOperationStmt::_internal_op() const { return static_cast< ::pg_query::SetOperation >(op_); } inline ::pg_query::SetOperation SetOperationStmt::op() const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.op) return _internal_op(); } inline void SetOperationStmt::_internal_set_op(::pg_query::SetOperation value) { op_ = value; } inline void SetOperationStmt::set_op(::pg_query::SetOperation value) { _internal_set_op(value); // @@protoc_insertion_point(field_set:pg_query.SetOperationStmt.op) } // bool all = 2 [json_name = "all"]; inline void SetOperationStmt::clear_all() { all_ = false; } inline bool SetOperationStmt::_internal_all() const { return all_; } inline bool SetOperationStmt::all() const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.all) return _internal_all(); } inline void SetOperationStmt::_internal_set_all(bool value) { all_ = value; } inline void SetOperationStmt::set_all(bool value) { _internal_set_all(value); // @@protoc_insertion_point(field_set:pg_query.SetOperationStmt.all) } // .pg_query.Node larg = 3 [json_name = "larg"]; inline bool SetOperationStmt::_internal_has_larg() const { return this != internal_default_instance() && larg_ != nullptr; } inline bool SetOperationStmt::has_larg() const { return _internal_has_larg(); } inline void SetOperationStmt::clear_larg() { if (GetArena() == nullptr && larg_ != nullptr) { delete larg_; } larg_ = nullptr; } inline const ::pg_query::Node& SetOperationStmt::_internal_larg() const { const ::pg_query::Node* p = larg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SetOperationStmt::larg() const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.larg) return _internal_larg(); } inline void SetOperationStmt::unsafe_arena_set_allocated_larg( ::pg_query::Node* larg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(larg_); } larg_ = larg; if (larg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetOperationStmt.larg) } inline ::pg_query::Node* SetOperationStmt::release_larg() { ::pg_query::Node* temp = larg_; larg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SetOperationStmt::unsafe_arena_release_larg() { // @@protoc_insertion_point(field_release:pg_query.SetOperationStmt.larg) ::pg_query::Node* temp = larg_; larg_ = nullptr; return temp; } inline ::pg_query::Node* SetOperationStmt::_internal_mutable_larg() { if (larg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); larg_ = p; } return larg_; } inline ::pg_query::Node* SetOperationStmt::mutable_larg() { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.larg) return _internal_mutable_larg(); } inline void SetOperationStmt::set_allocated_larg(::pg_query::Node* larg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete larg_; } if (larg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(larg); if (message_arena != submessage_arena) { larg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, larg, submessage_arena); } } else { } larg_ = larg; // @@protoc_insertion_point(field_set_allocated:pg_query.SetOperationStmt.larg) } // .pg_query.Node rarg = 4 [json_name = "rarg"]; inline bool SetOperationStmt::_internal_has_rarg() const { return this != internal_default_instance() && rarg_ != nullptr; } inline bool SetOperationStmt::has_rarg() const { return _internal_has_rarg(); } inline void SetOperationStmt::clear_rarg() { if (GetArena() == nullptr && rarg_ != nullptr) { delete rarg_; } rarg_ = nullptr; } inline const ::pg_query::Node& SetOperationStmt::_internal_rarg() const { const ::pg_query::Node* p = rarg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SetOperationStmt::rarg() const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.rarg) return _internal_rarg(); } inline void SetOperationStmt::unsafe_arena_set_allocated_rarg( ::pg_query::Node* rarg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rarg_); } rarg_ = rarg; if (rarg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SetOperationStmt.rarg) } inline ::pg_query::Node* SetOperationStmt::release_rarg() { ::pg_query::Node* temp = rarg_; rarg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SetOperationStmt::unsafe_arena_release_rarg() { // @@protoc_insertion_point(field_release:pg_query.SetOperationStmt.rarg) ::pg_query::Node* temp = rarg_; rarg_ = nullptr; return temp; } inline ::pg_query::Node* SetOperationStmt::_internal_mutable_rarg() { if (rarg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); rarg_ = p; } return rarg_; } inline ::pg_query::Node* SetOperationStmt::mutable_rarg() { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.rarg) return _internal_mutable_rarg(); } inline void SetOperationStmt::set_allocated_rarg(::pg_query::Node* rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete rarg_; } if (rarg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rarg); if (message_arena != submessage_arena) { rarg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rarg, submessage_arena); } } else { } rarg_ = rarg; // @@protoc_insertion_point(field_set_allocated:pg_query.SetOperationStmt.rarg) } // repeated .pg_query.Node col_types = 5 [json_name = "colTypes"]; inline int SetOperationStmt::_internal_col_types_size() const { return col_types_.size(); } inline int SetOperationStmt::col_types_size() const { return _internal_col_types_size(); } inline void SetOperationStmt::clear_col_types() { col_types_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_col_types(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_types) return col_types_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SetOperationStmt::mutable_col_types() { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_types) return &col_types_; } inline const ::pg_query::Node& SetOperationStmt::_internal_col_types(int index) const { return col_types_.Get(index); } inline const ::pg_query::Node& SetOperationStmt::col_types(int index) const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_types) return _internal_col_types(index); } inline ::pg_query::Node* SetOperationStmt::_internal_add_col_types() { return col_types_.Add(); } inline ::pg_query::Node* SetOperationStmt::add_col_types() { // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_types) return _internal_add_col_types(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SetOperationStmt::col_types() const { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_types) return col_types_; } // repeated .pg_query.Node col_typmods = 6 [json_name = "colTypmods"]; inline int SetOperationStmt::_internal_col_typmods_size() const { return col_typmods_.size(); } inline int SetOperationStmt::col_typmods_size() const { return _internal_col_typmods_size(); } inline void SetOperationStmt::clear_col_typmods() { col_typmods_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_col_typmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_typmods) return col_typmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SetOperationStmt::mutable_col_typmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_typmods) return &col_typmods_; } inline const ::pg_query::Node& SetOperationStmt::_internal_col_typmods(int index) const { return col_typmods_.Get(index); } inline const ::pg_query::Node& SetOperationStmt::col_typmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_typmods) return _internal_col_typmods(index); } inline ::pg_query::Node* SetOperationStmt::_internal_add_col_typmods() { return col_typmods_.Add(); } inline ::pg_query::Node* SetOperationStmt::add_col_typmods() { // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_typmods) return _internal_add_col_typmods(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SetOperationStmt::col_typmods() const { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_typmods) return col_typmods_; } // repeated .pg_query.Node col_collations = 7 [json_name = "colCollations"]; inline int SetOperationStmt::_internal_col_collations_size() const { return col_collations_.size(); } inline int SetOperationStmt::col_collations_size() const { return _internal_col_collations_size(); } inline void SetOperationStmt::clear_col_collations() { col_collations_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_col_collations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.col_collations) return col_collations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SetOperationStmt::mutable_col_collations() { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.col_collations) return &col_collations_; } inline const ::pg_query::Node& SetOperationStmt::_internal_col_collations(int index) const { return col_collations_.Get(index); } inline const ::pg_query::Node& SetOperationStmt::col_collations(int index) const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.col_collations) return _internal_col_collations(index); } inline ::pg_query::Node* SetOperationStmt::_internal_add_col_collations() { return col_collations_.Add(); } inline ::pg_query::Node* SetOperationStmt::add_col_collations() { // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.col_collations) return _internal_add_col_collations(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SetOperationStmt::col_collations() const { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.col_collations) return col_collations_; } // repeated .pg_query.Node group_clauses = 8 [json_name = "groupClauses"]; inline int SetOperationStmt::_internal_group_clauses_size() const { return group_clauses_.size(); } inline int SetOperationStmt::group_clauses_size() const { return _internal_group_clauses_size(); } inline void SetOperationStmt::clear_group_clauses() { group_clauses_.Clear(); } inline ::pg_query::Node* SetOperationStmt::mutable_group_clauses(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SetOperationStmt.group_clauses) return group_clauses_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SetOperationStmt::mutable_group_clauses() { // @@protoc_insertion_point(field_mutable_list:pg_query.SetOperationStmt.group_clauses) return &group_clauses_; } inline const ::pg_query::Node& SetOperationStmt::_internal_group_clauses(int index) const { return group_clauses_.Get(index); } inline const ::pg_query::Node& SetOperationStmt::group_clauses(int index) const { // @@protoc_insertion_point(field_get:pg_query.SetOperationStmt.group_clauses) return _internal_group_clauses(index); } inline ::pg_query::Node* SetOperationStmt::_internal_add_group_clauses() { return group_clauses_.Add(); } inline ::pg_query::Node* SetOperationStmt::add_group_clauses() { // @@protoc_insertion_point(field_add:pg_query.SetOperationStmt.group_clauses) return _internal_add_group_clauses(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SetOperationStmt::group_clauses() const { // @@protoc_insertion_point(field_list:pg_query.SetOperationStmt.group_clauses) return group_clauses_; } // ------------------------------------------------------------------- // GrantStmt // bool is_grant = 1 [json_name = "is_grant"]; inline void GrantStmt::clear_is_grant() { is_grant_ = false; } inline bool GrantStmt::_internal_is_grant() const { return is_grant_; } inline bool GrantStmt::is_grant() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.is_grant) return _internal_is_grant(); } inline void GrantStmt::_internal_set_is_grant(bool value) { is_grant_ = value; } inline void GrantStmt::set_is_grant(bool value) { _internal_set_is_grant(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.is_grant) } // .pg_query.GrantTargetType targtype = 2 [json_name = "targtype"]; inline void GrantStmt::clear_targtype() { targtype_ = 0; } inline ::pg_query::GrantTargetType GrantStmt::_internal_targtype() const { return static_cast< ::pg_query::GrantTargetType >(targtype_); } inline ::pg_query::GrantTargetType GrantStmt::targtype() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.targtype) return _internal_targtype(); } inline void GrantStmt::_internal_set_targtype(::pg_query::GrantTargetType value) { targtype_ = value; } inline void GrantStmt::set_targtype(::pg_query::GrantTargetType value) { _internal_set_targtype(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.targtype) } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; inline void GrantStmt::clear_objtype() { objtype_ = 0; } inline ::pg_query::ObjectType GrantStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(objtype_); } inline ::pg_query::ObjectType GrantStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.objtype) return _internal_objtype(); } inline void GrantStmt::_internal_set_objtype(::pg_query::ObjectType value) { objtype_ = value; } inline void GrantStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.objtype) } // repeated .pg_query.Node objects = 4 [json_name = "objects"]; inline int GrantStmt::_internal_objects_size() const { return objects_.size(); } inline int GrantStmt::objects_size() const { return _internal_objects_size(); } inline void GrantStmt::clear_objects() { objects_.Clear(); } inline ::pg_query::Node* GrantStmt::mutable_objects(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.objects) return objects_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GrantStmt::mutable_objects() { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.objects) return &objects_; } inline const ::pg_query::Node& GrantStmt::_internal_objects(int index) const { return objects_.Get(index); } inline const ::pg_query::Node& GrantStmt::objects(int index) const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.objects) return _internal_objects(index); } inline ::pg_query::Node* GrantStmt::_internal_add_objects() { return objects_.Add(); } inline ::pg_query::Node* GrantStmt::add_objects() { // @@protoc_insertion_point(field_add:pg_query.GrantStmt.objects) return _internal_add_objects(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GrantStmt::objects() const { // @@protoc_insertion_point(field_list:pg_query.GrantStmt.objects) return objects_; } // repeated .pg_query.Node privileges = 5 [json_name = "privileges"]; inline int GrantStmt::_internal_privileges_size() const { return privileges_.size(); } inline int GrantStmt::privileges_size() const { return _internal_privileges_size(); } inline void GrantStmt::clear_privileges() { privileges_.Clear(); } inline ::pg_query::Node* GrantStmt::mutable_privileges(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.privileges) return privileges_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GrantStmt::mutable_privileges() { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.privileges) return &privileges_; } inline const ::pg_query::Node& GrantStmt::_internal_privileges(int index) const { return privileges_.Get(index); } inline const ::pg_query::Node& GrantStmt::privileges(int index) const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.privileges) return _internal_privileges(index); } inline ::pg_query::Node* GrantStmt::_internal_add_privileges() { return privileges_.Add(); } inline ::pg_query::Node* GrantStmt::add_privileges() { // @@protoc_insertion_point(field_add:pg_query.GrantStmt.privileges) return _internal_add_privileges(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GrantStmt::privileges() const { // @@protoc_insertion_point(field_list:pg_query.GrantStmt.privileges) return privileges_; } // repeated .pg_query.Node grantees = 6 [json_name = "grantees"]; inline int GrantStmt::_internal_grantees_size() const { return grantees_.size(); } inline int GrantStmt::grantees_size() const { return _internal_grantees_size(); } inline void GrantStmt::clear_grantees() { grantees_.Clear(); } inline ::pg_query::Node* GrantStmt::mutable_grantees(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GrantStmt.grantees) return grantees_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GrantStmt::mutable_grantees() { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantStmt.grantees) return &grantees_; } inline const ::pg_query::Node& GrantStmt::_internal_grantees(int index) const { return grantees_.Get(index); } inline const ::pg_query::Node& GrantStmt::grantees(int index) const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.grantees) return _internal_grantees(index); } inline ::pg_query::Node* GrantStmt::_internal_add_grantees() { return grantees_.Add(); } inline ::pg_query::Node* GrantStmt::add_grantees() { // @@protoc_insertion_point(field_add:pg_query.GrantStmt.grantees) return _internal_add_grantees(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GrantStmt::grantees() const { // @@protoc_insertion_point(field_list:pg_query.GrantStmt.grantees) return grantees_; } // bool grant_option = 7 [json_name = "grant_option"]; inline void GrantStmt::clear_grant_option() { grant_option_ = false; } inline bool GrantStmt::_internal_grant_option() const { return grant_option_; } inline bool GrantStmt::grant_option() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.grant_option) return _internal_grant_option(); } inline void GrantStmt::_internal_set_grant_option(bool value) { grant_option_ = value; } inline void GrantStmt::set_grant_option(bool value) { _internal_set_grant_option(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.grant_option) } // .pg_query.DropBehavior behavior = 8 [json_name = "behavior"]; inline void GrantStmt::clear_behavior() { behavior_ = 0; } inline ::pg_query::DropBehavior GrantStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(behavior_); } inline ::pg_query::DropBehavior GrantStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.GrantStmt.behavior) return _internal_behavior(); } inline void GrantStmt::_internal_set_behavior(::pg_query::DropBehavior value) { behavior_ = value; } inline void GrantStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.GrantStmt.behavior) } // ------------------------------------------------------------------- // GrantRoleStmt // repeated .pg_query.Node granted_roles = 1 [json_name = "granted_roles"]; inline int GrantRoleStmt::_internal_granted_roles_size() const { return granted_roles_.size(); } inline int GrantRoleStmt::granted_roles_size() const { return _internal_granted_roles_size(); } inline void GrantRoleStmt::clear_granted_roles() { granted_roles_.Clear(); } inline ::pg_query::Node* GrantRoleStmt::mutable_granted_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.granted_roles) return granted_roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GrantRoleStmt::mutable_granted_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantRoleStmt.granted_roles) return &granted_roles_; } inline const ::pg_query::Node& GrantRoleStmt::_internal_granted_roles(int index) const { return granted_roles_.Get(index); } inline const ::pg_query::Node& GrantRoleStmt::granted_roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.granted_roles) return _internal_granted_roles(index); } inline ::pg_query::Node* GrantRoleStmt::_internal_add_granted_roles() { return granted_roles_.Add(); } inline ::pg_query::Node* GrantRoleStmt::add_granted_roles() { // @@protoc_insertion_point(field_add:pg_query.GrantRoleStmt.granted_roles) return _internal_add_granted_roles(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GrantRoleStmt::granted_roles() const { // @@protoc_insertion_point(field_list:pg_query.GrantRoleStmt.granted_roles) return granted_roles_; } // repeated .pg_query.Node grantee_roles = 2 [json_name = "grantee_roles"]; inline int GrantRoleStmt::_internal_grantee_roles_size() const { return grantee_roles_.size(); } inline int GrantRoleStmt::grantee_roles_size() const { return _internal_grantee_roles_size(); } inline void GrantRoleStmt::clear_grantee_roles() { grantee_roles_.Clear(); } inline ::pg_query::Node* GrantRoleStmt::mutable_grantee_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.grantee_roles) return grantee_roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GrantRoleStmt::mutable_grantee_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.GrantRoleStmt.grantee_roles) return &grantee_roles_; } inline const ::pg_query::Node& GrantRoleStmt::_internal_grantee_roles(int index) const { return grantee_roles_.Get(index); } inline const ::pg_query::Node& GrantRoleStmt::grantee_roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.grantee_roles) return _internal_grantee_roles(index); } inline ::pg_query::Node* GrantRoleStmt::_internal_add_grantee_roles() { return grantee_roles_.Add(); } inline ::pg_query::Node* GrantRoleStmt::add_grantee_roles() { // @@protoc_insertion_point(field_add:pg_query.GrantRoleStmt.grantee_roles) return _internal_add_grantee_roles(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GrantRoleStmt::grantee_roles() const { // @@protoc_insertion_point(field_list:pg_query.GrantRoleStmt.grantee_roles) return grantee_roles_; } // bool is_grant = 3 [json_name = "is_grant"]; inline void GrantRoleStmt::clear_is_grant() { is_grant_ = false; } inline bool GrantRoleStmt::_internal_is_grant() const { return is_grant_; } inline bool GrantRoleStmt::is_grant() const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.is_grant) return _internal_is_grant(); } inline void GrantRoleStmt::_internal_set_is_grant(bool value) { is_grant_ = value; } inline void GrantRoleStmt::set_is_grant(bool value) { _internal_set_is_grant(value); // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.is_grant) } // bool admin_opt = 4 [json_name = "admin_opt"]; inline void GrantRoleStmt::clear_admin_opt() { admin_opt_ = false; } inline bool GrantRoleStmt::_internal_admin_opt() const { return admin_opt_; } inline bool GrantRoleStmt::admin_opt() const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.admin_opt) return _internal_admin_opt(); } inline void GrantRoleStmt::_internal_set_admin_opt(bool value) { admin_opt_ = value; } inline void GrantRoleStmt::set_admin_opt(bool value) { _internal_set_admin_opt(value); // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.admin_opt) } // .pg_query.RoleSpec grantor = 5 [json_name = "grantor"]; inline bool GrantRoleStmt::_internal_has_grantor() const { return this != internal_default_instance() && grantor_ != nullptr; } inline bool GrantRoleStmt::has_grantor() const { return _internal_has_grantor(); } inline void GrantRoleStmt::clear_grantor() { if (GetArena() == nullptr && grantor_ != nullptr) { delete grantor_; } grantor_ = nullptr; } inline const ::pg_query::RoleSpec& GrantRoleStmt::_internal_grantor() const { const ::pg_query::RoleSpec* p = grantor_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& GrantRoleStmt::grantor() const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.grantor) return _internal_grantor(); } inline void GrantRoleStmt::unsafe_arena_set_allocated_grantor( ::pg_query::RoleSpec* grantor) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(grantor_); } grantor_ = grantor; if (grantor) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.GrantRoleStmt.grantor) } inline ::pg_query::RoleSpec* GrantRoleStmt::release_grantor() { ::pg_query::RoleSpec* temp = grantor_; grantor_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* GrantRoleStmt::unsafe_arena_release_grantor() { // @@protoc_insertion_point(field_release:pg_query.GrantRoleStmt.grantor) ::pg_query::RoleSpec* temp = grantor_; grantor_ = nullptr; return temp; } inline ::pg_query::RoleSpec* GrantRoleStmt::_internal_mutable_grantor() { if (grantor_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); grantor_ = p; } return grantor_; } inline ::pg_query::RoleSpec* GrantRoleStmt::mutable_grantor() { // @@protoc_insertion_point(field_mutable:pg_query.GrantRoleStmt.grantor) return _internal_mutable_grantor(); } inline void GrantRoleStmt::set_allocated_grantor(::pg_query::RoleSpec* grantor) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete grantor_; } if (grantor) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(grantor); if (message_arena != submessage_arena) { grantor = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, grantor, submessage_arena); } } else { } grantor_ = grantor; // @@protoc_insertion_point(field_set_allocated:pg_query.GrantRoleStmt.grantor) } // .pg_query.DropBehavior behavior = 6 [json_name = "behavior"]; inline void GrantRoleStmt::clear_behavior() { behavior_ = 0; } inline ::pg_query::DropBehavior GrantRoleStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(behavior_); } inline ::pg_query::DropBehavior GrantRoleStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.GrantRoleStmt.behavior) return _internal_behavior(); } inline void GrantRoleStmt::_internal_set_behavior(::pg_query::DropBehavior value) { behavior_ = value; } inline void GrantRoleStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.GrantRoleStmt.behavior) } // ------------------------------------------------------------------- // AlterDefaultPrivilegesStmt // repeated .pg_query.Node options = 1 [json_name = "options"]; inline int AlterDefaultPrivilegesStmt::_internal_options_size() const { return options_.size(); } inline int AlterDefaultPrivilegesStmt::options_size() const { return _internal_options_size(); } inline void AlterDefaultPrivilegesStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterDefaultPrivilegesStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterDefaultPrivilegesStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterDefaultPrivilegesStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDefaultPrivilegesStmt.options) return &options_; } inline const ::pg_query::Node& AlterDefaultPrivilegesStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterDefaultPrivilegesStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterDefaultPrivilegesStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterDefaultPrivilegesStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterDefaultPrivilegesStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterDefaultPrivilegesStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterDefaultPrivilegesStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterDefaultPrivilegesStmt.options) return options_; } // .pg_query.GrantStmt action = 2 [json_name = "action"]; inline bool AlterDefaultPrivilegesStmt::_internal_has_action() const { return this != internal_default_instance() && action_ != nullptr; } inline bool AlterDefaultPrivilegesStmt::has_action() const { return _internal_has_action(); } inline void AlterDefaultPrivilegesStmt::clear_action() { if (GetArena() == nullptr && action_ != nullptr) { delete action_; } action_ = nullptr; } inline const ::pg_query::GrantStmt& AlterDefaultPrivilegesStmt::_internal_action() const { const ::pg_query::GrantStmt* p = action_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_GrantStmt_default_instance_); } inline const ::pg_query::GrantStmt& AlterDefaultPrivilegesStmt::action() const { // @@protoc_insertion_point(field_get:pg_query.AlterDefaultPrivilegesStmt.action) return _internal_action(); } inline void AlterDefaultPrivilegesStmt::unsafe_arena_set_allocated_action( ::pg_query::GrantStmt* action) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_); } action_ = action; if (action) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDefaultPrivilegesStmt.action) } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::release_action() { ::pg_query::GrantStmt* temp = action_; action_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::unsafe_arena_release_action() { // @@protoc_insertion_point(field_release:pg_query.AlterDefaultPrivilegesStmt.action) ::pg_query::GrantStmt* temp = action_; action_ = nullptr; return temp; } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::_internal_mutable_action() { if (action_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::GrantStmt>(GetArena()); action_ = p; } return action_; } inline ::pg_query::GrantStmt* AlterDefaultPrivilegesStmt::mutable_action() { // @@protoc_insertion_point(field_mutable:pg_query.AlterDefaultPrivilegesStmt.action) return _internal_mutable_action(); } inline void AlterDefaultPrivilegesStmt::set_allocated_action(::pg_query::GrantStmt* action) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete action_; } if (action) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action); if (message_arena != submessage_arena) { action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, action, submessage_arena); } } else { } action_ = action; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDefaultPrivilegesStmt.action) } // ------------------------------------------------------------------- // ClosePortalStmt // string portalname = 1 [json_name = "portalname"]; inline void ClosePortalStmt::clear_portalname() { portalname_.ClearToEmpty(); } inline const std::string& ClosePortalStmt::portalname() const { // @@protoc_insertion_point(field_get:pg_query.ClosePortalStmt.portalname) return _internal_portalname(); } inline void ClosePortalStmt::set_portalname(const std::string& value) { _internal_set_portalname(value); // @@protoc_insertion_point(field_set:pg_query.ClosePortalStmt.portalname) } inline std::string* ClosePortalStmt::mutable_portalname() { // @@protoc_insertion_point(field_mutable:pg_query.ClosePortalStmt.portalname) return _internal_mutable_portalname(); } inline const std::string& ClosePortalStmt::_internal_portalname() const { return portalname_.Get(); } inline void ClosePortalStmt::_internal_set_portalname(const std::string& value) { portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ClosePortalStmt::set_portalname(std::string&& value) { portalname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ClosePortalStmt.portalname) } inline void ClosePortalStmt::set_portalname(const char* value) { GOOGLE_DCHECK(value != nullptr); portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ClosePortalStmt.portalname) } inline void ClosePortalStmt::set_portalname(const char* value, size_t size) { portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ClosePortalStmt.portalname) } inline std::string* ClosePortalStmt::_internal_mutable_portalname() { return portalname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ClosePortalStmt::release_portalname() { // @@protoc_insertion_point(field_release:pg_query.ClosePortalStmt.portalname) return portalname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ClosePortalStmt::set_allocated_portalname(std::string* portalname) { if (portalname != nullptr) { } else { } portalname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), portalname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ClosePortalStmt.portalname) } // ------------------------------------------------------------------- // ClusterStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool ClusterStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool ClusterStmt::has_relation() const { return _internal_has_relation(); } inline void ClusterStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& ClusterStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& ClusterStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.relation) return _internal_relation(); } inline void ClusterStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ClusterStmt.relation) } inline ::pg_query::RangeVar* ClusterStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* ClusterStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.ClusterStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* ClusterStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* ClusterStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.ClusterStmt.relation) return _internal_mutable_relation(); } inline void ClusterStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.ClusterStmt.relation) } // string indexname = 2 [json_name = "indexname"]; inline void ClusterStmt::clear_indexname() { indexname_.ClearToEmpty(); } inline const std::string& ClusterStmt::indexname() const { // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.indexname) return _internal_indexname(); } inline void ClusterStmt::set_indexname(const std::string& value) { _internal_set_indexname(value); // @@protoc_insertion_point(field_set:pg_query.ClusterStmt.indexname) } inline std::string* ClusterStmt::mutable_indexname() { // @@protoc_insertion_point(field_mutable:pg_query.ClusterStmt.indexname) return _internal_mutable_indexname(); } inline const std::string& ClusterStmt::_internal_indexname() const { return indexname_.Get(); } inline void ClusterStmt::_internal_set_indexname(const std::string& value) { indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ClusterStmt::set_indexname(std::string&& value) { indexname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ClusterStmt.indexname) } inline void ClusterStmt::set_indexname(const char* value) { GOOGLE_DCHECK(value != nullptr); indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ClusterStmt.indexname) } inline void ClusterStmt::set_indexname(const char* value, size_t size) { indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ClusterStmt.indexname) } inline std::string* ClusterStmt::_internal_mutable_indexname() { return indexname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ClusterStmt::release_indexname() { // @@protoc_insertion_point(field_release:pg_query.ClusterStmt.indexname) return indexname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ClusterStmt::set_allocated_indexname(std::string* indexname) { if (indexname != nullptr) { } else { } indexname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), indexname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ClusterStmt.indexname) } // int32 options = 3 [json_name = "options"]; inline void ClusterStmt::clear_options() { options_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ClusterStmt::_internal_options() const { return options_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ClusterStmt::options() const { // @@protoc_insertion_point(field_get:pg_query.ClusterStmt.options) return _internal_options(); } inline void ClusterStmt::_internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { options_ = value; } inline void ClusterStmt::set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_options(value); // @@protoc_insertion_point(field_set:pg_query.ClusterStmt.options) } // ------------------------------------------------------------------- // CopyStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool CopyStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool CopyStmt::has_relation() const { return _internal_has_relation(); } inline void CopyStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& CopyStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CopyStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.relation) return _internal_relation(); } inline void CopyStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.relation) } inline ::pg_query::RangeVar* CopyStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* CopyStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.CopyStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* CopyStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* CopyStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.relation) return _internal_mutable_relation(); } inline void CopyStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.relation) } // .pg_query.Node query = 2 [json_name = "query"]; inline bool CopyStmt::_internal_has_query() const { return this != internal_default_instance() && query_ != nullptr; } inline bool CopyStmt::has_query() const { return _internal_has_query(); } inline void CopyStmt::clear_query() { if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; } inline const ::pg_query::Node& CopyStmt::_internal_query() const { const ::pg_query::Node* p = query_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CopyStmt::query() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.query) return _internal_query(); } inline void CopyStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); } query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.query) } inline ::pg_query::Node* CopyStmt::release_query() { ::pg_query::Node* temp = query_; query_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CopyStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.CopyStmt.query) ::pg_query::Node* temp = query_; query_ = nullptr; return temp; } inline ::pg_query::Node* CopyStmt::_internal_mutable_query() { if (query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); query_ = p; } return query_; } inline ::pg_query::Node* CopyStmt::mutable_query() { // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.query) return _internal_mutable_query(); } inline void CopyStmt::set_allocated_query(::pg_query::Node* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.query) } // repeated .pg_query.Node attlist = 3 [json_name = "attlist"]; inline int CopyStmt::_internal_attlist_size() const { return attlist_.size(); } inline int CopyStmt::attlist_size() const { return _internal_attlist_size(); } inline void CopyStmt::clear_attlist() { attlist_.Clear(); } inline ::pg_query::Node* CopyStmt::mutable_attlist(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.attlist) return attlist_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CopyStmt::mutable_attlist() { // @@protoc_insertion_point(field_mutable_list:pg_query.CopyStmt.attlist) return &attlist_; } inline const ::pg_query::Node& CopyStmt::_internal_attlist(int index) const { return attlist_.Get(index); } inline const ::pg_query::Node& CopyStmt::attlist(int index) const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.attlist) return _internal_attlist(index); } inline ::pg_query::Node* CopyStmt::_internal_add_attlist() { return attlist_.Add(); } inline ::pg_query::Node* CopyStmt::add_attlist() { // @@protoc_insertion_point(field_add:pg_query.CopyStmt.attlist) return _internal_add_attlist(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CopyStmt::attlist() const { // @@protoc_insertion_point(field_list:pg_query.CopyStmt.attlist) return attlist_; } // bool is_from = 4 [json_name = "is_from"]; inline void CopyStmt::clear_is_from() { is_from_ = false; } inline bool CopyStmt::_internal_is_from() const { return is_from_; } inline bool CopyStmt::is_from() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.is_from) return _internal_is_from(); } inline void CopyStmt::_internal_set_is_from(bool value) { is_from_ = value; } inline void CopyStmt::set_is_from(bool value) { _internal_set_is_from(value); // @@protoc_insertion_point(field_set:pg_query.CopyStmt.is_from) } // bool is_program = 5 [json_name = "is_program"]; inline void CopyStmt::clear_is_program() { is_program_ = false; } inline bool CopyStmt::_internal_is_program() const { return is_program_; } inline bool CopyStmt::is_program() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.is_program) return _internal_is_program(); } inline void CopyStmt::_internal_set_is_program(bool value) { is_program_ = value; } inline void CopyStmt::set_is_program(bool value) { _internal_set_is_program(value); // @@protoc_insertion_point(field_set:pg_query.CopyStmt.is_program) } // string filename = 6 [json_name = "filename"]; inline void CopyStmt::clear_filename() { filename_.ClearToEmpty(); } inline const std::string& CopyStmt::filename() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.filename) return _internal_filename(); } inline void CopyStmt::set_filename(const std::string& value) { _internal_set_filename(value); // @@protoc_insertion_point(field_set:pg_query.CopyStmt.filename) } inline std::string* CopyStmt::mutable_filename() { // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.filename) return _internal_mutable_filename(); } inline const std::string& CopyStmt::_internal_filename() const { return filename_.Get(); } inline void CopyStmt::_internal_set_filename(const std::string& value) { filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CopyStmt::set_filename(std::string&& value) { filename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CopyStmt.filename) } inline void CopyStmt::set_filename(const char* value) { GOOGLE_DCHECK(value != nullptr); filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CopyStmt.filename) } inline void CopyStmt::set_filename(const char* value, size_t size) { filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CopyStmt.filename) } inline std::string* CopyStmt::_internal_mutable_filename() { return filename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CopyStmt::release_filename() { // @@protoc_insertion_point(field_release:pg_query.CopyStmt.filename) return filename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CopyStmt::set_allocated_filename(std::string* filename) { if (filename != nullptr) { } else { } filename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), filename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.filename) } // repeated .pg_query.Node options = 7 [json_name = "options"]; inline int CopyStmt::_internal_options_size() const { return options_.size(); } inline int CopyStmt::options_size() const { return _internal_options_size(); } inline void CopyStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CopyStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CopyStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CopyStmt.options) return &options_; } inline const ::pg_query::Node& CopyStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CopyStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.options) return _internal_options(index); } inline ::pg_query::Node* CopyStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CopyStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CopyStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CopyStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CopyStmt.options) return options_; } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; inline bool CopyStmt::_internal_has_where_clause() const { return this != internal_default_instance() && where_clause_ != nullptr; } inline bool CopyStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void CopyStmt::clear_where_clause() { if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; } inline const ::pg_query::Node& CopyStmt::_internal_where_clause() const { const ::pg_query::Node* p = where_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CopyStmt::where_clause() const { // @@protoc_insertion_point(field_get:pg_query.CopyStmt.where_clause) return _internal_where_clause(); } inline void CopyStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); } where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CopyStmt.where_clause) } inline ::pg_query::Node* CopyStmt::release_where_clause() { ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CopyStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.CopyStmt.where_clause) ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; return temp; } inline ::pg_query::Node* CopyStmt::_internal_mutable_where_clause() { if (where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); where_clause_ = p; } return where_clause_; } inline ::pg_query::Node* CopyStmt::mutable_where_clause() { // @@protoc_insertion_point(field_mutable:pg_query.CopyStmt.where_clause) return _internal_mutable_where_clause(); } inline void CopyStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.CopyStmt.where_clause) } // ------------------------------------------------------------------- // CreateStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool CreateStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool CreateStmt::has_relation() const { return _internal_has_relation(); } inline void CreateStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& CreateStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CreateStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.relation) return _internal_relation(); } inline void CreateStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.relation) } inline ::pg_query::RangeVar* CreateStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* CreateStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* CreateStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.relation) return _internal_mutable_relation(); } inline void CreateStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.relation) } // repeated .pg_query.Node table_elts = 2 [json_name = "tableElts"]; inline int CreateStmt::_internal_table_elts_size() const { return table_elts_.size(); } inline int CreateStmt::table_elts_size() const { return _internal_table_elts_size(); } inline void CreateStmt::clear_table_elts() { table_elts_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_table_elts(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.table_elts) return table_elts_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStmt::mutable_table_elts() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.table_elts) return &table_elts_; } inline const ::pg_query::Node& CreateStmt::_internal_table_elts(int index) const { return table_elts_.Get(index); } inline const ::pg_query::Node& CreateStmt::table_elts(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.table_elts) return _internal_table_elts(index); } inline ::pg_query::Node* CreateStmt::_internal_add_table_elts() { return table_elts_.Add(); } inline ::pg_query::Node* CreateStmt::add_table_elts() { // @@protoc_insertion_point(field_add:pg_query.CreateStmt.table_elts) return _internal_add_table_elts(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStmt::table_elts() const { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.table_elts) return table_elts_; } // repeated .pg_query.Node inh_relations = 3 [json_name = "inhRelations"]; inline int CreateStmt::_internal_inh_relations_size() const { return inh_relations_.size(); } inline int CreateStmt::inh_relations_size() const { return _internal_inh_relations_size(); } inline void CreateStmt::clear_inh_relations() { inh_relations_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_inh_relations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.inh_relations) return inh_relations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStmt::mutable_inh_relations() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.inh_relations) return &inh_relations_; } inline const ::pg_query::Node& CreateStmt::_internal_inh_relations(int index) const { return inh_relations_.Get(index); } inline const ::pg_query::Node& CreateStmt::inh_relations(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.inh_relations) return _internal_inh_relations(index); } inline ::pg_query::Node* CreateStmt::_internal_add_inh_relations() { return inh_relations_.Add(); } inline ::pg_query::Node* CreateStmt::add_inh_relations() { // @@protoc_insertion_point(field_add:pg_query.CreateStmt.inh_relations) return _internal_add_inh_relations(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStmt::inh_relations() const { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.inh_relations) return inh_relations_; } // .pg_query.PartitionBoundSpec partbound = 4 [json_name = "partbound"]; inline bool CreateStmt::_internal_has_partbound() const { return this != internal_default_instance() && partbound_ != nullptr; } inline bool CreateStmt::has_partbound() const { return _internal_has_partbound(); } inline void CreateStmt::clear_partbound() { if (GetArena() == nullptr && partbound_ != nullptr) { delete partbound_; } partbound_ = nullptr; } inline const ::pg_query::PartitionBoundSpec& CreateStmt::_internal_partbound() const { const ::pg_query::PartitionBoundSpec* p = partbound_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_PartitionBoundSpec_default_instance_); } inline const ::pg_query::PartitionBoundSpec& CreateStmt::partbound() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.partbound) return _internal_partbound(); } inline void CreateStmt::unsafe_arena_set_allocated_partbound( ::pg_query::PartitionBoundSpec* partbound) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(partbound_); } partbound_ = partbound; if (partbound) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.partbound) } inline ::pg_query::PartitionBoundSpec* CreateStmt::release_partbound() { ::pg_query::PartitionBoundSpec* temp = partbound_; partbound_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::PartitionBoundSpec* CreateStmt::unsafe_arena_release_partbound() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.partbound) ::pg_query::PartitionBoundSpec* temp = partbound_; partbound_ = nullptr; return temp; } inline ::pg_query::PartitionBoundSpec* CreateStmt::_internal_mutable_partbound() { if (partbound_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PartitionBoundSpec>(GetArena()); partbound_ = p; } return partbound_; } inline ::pg_query::PartitionBoundSpec* CreateStmt::mutable_partbound() { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.partbound) return _internal_mutable_partbound(); } inline void CreateStmt::set_allocated_partbound(::pg_query::PartitionBoundSpec* partbound) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete partbound_; } if (partbound) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(partbound); if (message_arena != submessage_arena) { partbound = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, partbound, submessage_arena); } } else { } partbound_ = partbound; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.partbound) } // .pg_query.PartitionSpec partspec = 5 [json_name = "partspec"]; inline bool CreateStmt::_internal_has_partspec() const { return this != internal_default_instance() && partspec_ != nullptr; } inline bool CreateStmt::has_partspec() const { return _internal_has_partspec(); } inline void CreateStmt::clear_partspec() { if (GetArena() == nullptr && partspec_ != nullptr) { delete partspec_; } partspec_ = nullptr; } inline const ::pg_query::PartitionSpec& CreateStmt::_internal_partspec() const { const ::pg_query::PartitionSpec* p = partspec_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_PartitionSpec_default_instance_); } inline const ::pg_query::PartitionSpec& CreateStmt::partspec() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.partspec) return _internal_partspec(); } inline void CreateStmt::unsafe_arena_set_allocated_partspec( ::pg_query::PartitionSpec* partspec) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(partspec_); } partspec_ = partspec; if (partspec) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.partspec) } inline ::pg_query::PartitionSpec* CreateStmt::release_partspec() { ::pg_query::PartitionSpec* temp = partspec_; partspec_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::PartitionSpec* CreateStmt::unsafe_arena_release_partspec() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.partspec) ::pg_query::PartitionSpec* temp = partspec_; partspec_ = nullptr; return temp; } inline ::pg_query::PartitionSpec* CreateStmt::_internal_mutable_partspec() { if (partspec_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PartitionSpec>(GetArena()); partspec_ = p; } return partspec_; } inline ::pg_query::PartitionSpec* CreateStmt::mutable_partspec() { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.partspec) return _internal_mutable_partspec(); } inline void CreateStmt::set_allocated_partspec(::pg_query::PartitionSpec* partspec) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete partspec_; } if (partspec) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(partspec); if (message_arena != submessage_arena) { partspec = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, partspec, submessage_arena); } } else { } partspec_ = partspec; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.partspec) } // .pg_query.TypeName of_typename = 6 [json_name = "ofTypename"]; inline bool CreateStmt::_internal_has_of_typename() const { return this != internal_default_instance() && of_typename_ != nullptr; } inline bool CreateStmt::has_of_typename() const { return _internal_has_of_typename(); } inline void CreateStmt::clear_of_typename() { if (GetArena() == nullptr && of_typename_ != nullptr) { delete of_typename_; } of_typename_ = nullptr; } inline const ::pg_query::TypeName& CreateStmt::_internal_of_typename() const { const ::pg_query::TypeName* p = of_typename_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateStmt::of_typename() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.of_typename) return _internal_of_typename(); } inline void CreateStmt::unsafe_arena_set_allocated_of_typename( ::pg_query::TypeName* of_typename) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(of_typename_); } of_typename_ = of_typename; if (of_typename) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateStmt.of_typename) } inline ::pg_query::TypeName* CreateStmt::release_of_typename() { ::pg_query::TypeName* temp = of_typename_; of_typename_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* CreateStmt::unsafe_arena_release_of_typename() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.of_typename) ::pg_query::TypeName* temp = of_typename_; of_typename_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateStmt::_internal_mutable_of_typename() { if (of_typename_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); of_typename_ = p; } return of_typename_; } inline ::pg_query::TypeName* CreateStmt::mutable_of_typename() { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.of_typename) return _internal_mutable_of_typename(); } inline void CreateStmt::set_allocated_of_typename(::pg_query::TypeName* of_typename) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete of_typename_; } if (of_typename) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(of_typename); if (message_arena != submessage_arena) { of_typename = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, of_typename, submessage_arena); } } else { } of_typename_ = of_typename; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.of_typename) } // repeated .pg_query.Node constraints = 7 [json_name = "constraints"]; inline int CreateStmt::_internal_constraints_size() const { return constraints_.size(); } inline int CreateStmt::constraints_size() const { return _internal_constraints_size(); } inline void CreateStmt::clear_constraints() { constraints_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_constraints(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.constraints) return constraints_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStmt::mutable_constraints() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.constraints) return &constraints_; } inline const ::pg_query::Node& CreateStmt::_internal_constraints(int index) const { return constraints_.Get(index); } inline const ::pg_query::Node& CreateStmt::constraints(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.constraints) return _internal_constraints(index); } inline ::pg_query::Node* CreateStmt::_internal_add_constraints() { return constraints_.Add(); } inline ::pg_query::Node* CreateStmt::add_constraints() { // @@protoc_insertion_point(field_add:pg_query.CreateStmt.constraints) return _internal_add_constraints(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStmt::constraints() const { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.constraints) return constraints_; } // repeated .pg_query.Node options = 8 [json_name = "options"]; inline int CreateStmt::_internal_options_size() const { return options_.size(); } inline int CreateStmt::options_size() const { return _internal_options_size(); } inline void CreateStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStmt.options) return &options_; } inline const ::pg_query::Node& CreateStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateStmt.options) return options_; } // .pg_query.OnCommitAction oncommit = 9 [json_name = "oncommit"]; inline void CreateStmt::clear_oncommit() { oncommit_ = 0; } inline ::pg_query::OnCommitAction CreateStmt::_internal_oncommit() const { return static_cast< ::pg_query::OnCommitAction >(oncommit_); } inline ::pg_query::OnCommitAction CreateStmt::oncommit() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.oncommit) return _internal_oncommit(); } inline void CreateStmt::_internal_set_oncommit(::pg_query::OnCommitAction value) { oncommit_ = value; } inline void CreateStmt::set_oncommit(::pg_query::OnCommitAction value) { _internal_set_oncommit(value); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.oncommit) } // string tablespacename = 10 [json_name = "tablespacename"]; inline void CreateStmt::clear_tablespacename() { tablespacename_.ClearToEmpty(); } inline const std::string& CreateStmt::tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.tablespacename) return _internal_tablespacename(); } inline void CreateStmt::set_tablespacename(const std::string& value) { _internal_set_tablespacename(value); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.tablespacename) } inline std::string* CreateStmt::mutable_tablespacename() { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.tablespacename) return _internal_mutable_tablespacename(); } inline const std::string& CreateStmt::_internal_tablespacename() const { return tablespacename_.Get(); } inline void CreateStmt::_internal_set_tablespacename(const std::string& value) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateStmt::set_tablespacename(std::string&& value) { tablespacename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateStmt.tablespacename) } inline void CreateStmt::set_tablespacename(const char* value) { GOOGLE_DCHECK(value != nullptr); tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateStmt.tablespacename) } inline void CreateStmt::set_tablespacename(const char* value, size_t size) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateStmt.tablespacename) } inline std::string* CreateStmt::_internal_mutable_tablespacename() { return tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateStmt::release_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.tablespacename) return tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateStmt::set_allocated_tablespacename(std::string* tablespacename) { if (tablespacename != nullptr) { } else { } tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tablespacename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.tablespacename) } // string access_method = 11 [json_name = "accessMethod"]; inline void CreateStmt::clear_access_method() { access_method_.ClearToEmpty(); } inline const std::string& CreateStmt::access_method() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.access_method) return _internal_access_method(); } inline void CreateStmt::set_access_method(const std::string& value) { _internal_set_access_method(value); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.access_method) } inline std::string* CreateStmt::mutable_access_method() { // @@protoc_insertion_point(field_mutable:pg_query.CreateStmt.access_method) return _internal_mutable_access_method(); } inline const std::string& CreateStmt::_internal_access_method() const { return access_method_.Get(); } inline void CreateStmt::_internal_set_access_method(const std::string& value) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateStmt::set_access_method(std::string&& value) { access_method_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateStmt.access_method) } inline void CreateStmt::set_access_method(const char* value) { GOOGLE_DCHECK(value != nullptr); access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateStmt.access_method) } inline void CreateStmt::set_access_method(const char* value, size_t size) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateStmt.access_method) } inline std::string* CreateStmt::_internal_mutable_access_method() { return access_method_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateStmt::release_access_method() { // @@protoc_insertion_point(field_release:pg_query.CreateStmt.access_method) return access_method_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateStmt::set_allocated_access_method(std::string* access_method) { if (access_method != nullptr) { } else { } access_method_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), access_method, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStmt.access_method) } // bool if_not_exists = 12 [json_name = "if_not_exists"]; inline void CreateStmt::clear_if_not_exists() { if_not_exists_ = false; } inline bool CreateStmt::_internal_if_not_exists() const { return if_not_exists_; } inline bool CreateStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateStmt::_internal_set_if_not_exists(bool value) { if_not_exists_ = value; } inline void CreateStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateStmt.if_not_exists) } // ------------------------------------------------------------------- // DefineStmt // .pg_query.ObjectType kind = 1 [json_name = "kind"]; inline void DefineStmt::clear_kind() { kind_ = 0; } inline ::pg_query::ObjectType DefineStmt::_internal_kind() const { return static_cast< ::pg_query::ObjectType >(kind_); } inline ::pg_query::ObjectType DefineStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.kind) return _internal_kind(); } inline void DefineStmt::_internal_set_kind(::pg_query::ObjectType value) { kind_ = value; } inline void DefineStmt::set_kind(::pg_query::ObjectType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.kind) } // bool oldstyle = 2 [json_name = "oldstyle"]; inline void DefineStmt::clear_oldstyle() { oldstyle_ = false; } inline bool DefineStmt::_internal_oldstyle() const { return oldstyle_; } inline bool DefineStmt::oldstyle() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.oldstyle) return _internal_oldstyle(); } inline void DefineStmt::_internal_set_oldstyle(bool value) { oldstyle_ = value; } inline void DefineStmt::set_oldstyle(bool value) { _internal_set_oldstyle(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.oldstyle) } // repeated .pg_query.Node defnames = 3 [json_name = "defnames"]; inline int DefineStmt::_internal_defnames_size() const { return defnames_.size(); } inline int DefineStmt::defnames_size() const { return _internal_defnames_size(); } inline void DefineStmt::clear_defnames() { defnames_.Clear(); } inline ::pg_query::Node* DefineStmt::mutable_defnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.defnames) return defnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DefineStmt::mutable_defnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.defnames) return &defnames_; } inline const ::pg_query::Node& DefineStmt::_internal_defnames(int index) const { return defnames_.Get(index); } inline const ::pg_query::Node& DefineStmt::defnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.defnames) return _internal_defnames(index); } inline ::pg_query::Node* DefineStmt::_internal_add_defnames() { return defnames_.Add(); } inline ::pg_query::Node* DefineStmt::add_defnames() { // @@protoc_insertion_point(field_add:pg_query.DefineStmt.defnames) return _internal_add_defnames(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DefineStmt::defnames() const { // @@protoc_insertion_point(field_list:pg_query.DefineStmt.defnames) return defnames_; } // repeated .pg_query.Node args = 4 [json_name = "args"]; inline int DefineStmt::_internal_args_size() const { return args_.size(); } inline int DefineStmt::args_size() const { return _internal_args_size(); } inline void DefineStmt::clear_args() { args_.Clear(); } inline ::pg_query::Node* DefineStmt::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DefineStmt::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.args) return &args_; } inline const ::pg_query::Node& DefineStmt::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& DefineStmt::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.args) return _internal_args(index); } inline ::pg_query::Node* DefineStmt::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* DefineStmt::add_args() { // @@protoc_insertion_point(field_add:pg_query.DefineStmt.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DefineStmt::args() const { // @@protoc_insertion_point(field_list:pg_query.DefineStmt.args) return args_; } // repeated .pg_query.Node definition = 5 [json_name = "definition"]; inline int DefineStmt::_internal_definition_size() const { return definition_.size(); } inline int DefineStmt::definition_size() const { return _internal_definition_size(); } inline void DefineStmt::clear_definition() { definition_.Clear(); } inline ::pg_query::Node* DefineStmt::mutable_definition(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DefineStmt.definition) return definition_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DefineStmt::mutable_definition() { // @@protoc_insertion_point(field_mutable_list:pg_query.DefineStmt.definition) return &definition_; } inline const ::pg_query::Node& DefineStmt::_internal_definition(int index) const { return definition_.Get(index); } inline const ::pg_query::Node& DefineStmt::definition(int index) const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.definition) return _internal_definition(index); } inline ::pg_query::Node* DefineStmt::_internal_add_definition() { return definition_.Add(); } inline ::pg_query::Node* DefineStmt::add_definition() { // @@protoc_insertion_point(field_add:pg_query.DefineStmt.definition) return _internal_add_definition(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DefineStmt::definition() const { // @@protoc_insertion_point(field_list:pg_query.DefineStmt.definition) return definition_; } // bool if_not_exists = 6 [json_name = "if_not_exists"]; inline void DefineStmt::clear_if_not_exists() { if_not_exists_ = false; } inline bool DefineStmt::_internal_if_not_exists() const { return if_not_exists_; } inline bool DefineStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.if_not_exists) return _internal_if_not_exists(); } inline void DefineStmt::_internal_set_if_not_exists(bool value) { if_not_exists_ = value; } inline void DefineStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.if_not_exists) } // bool replace = 7 [json_name = "replace"]; inline void DefineStmt::clear_replace() { replace_ = false; } inline bool DefineStmt::_internal_replace() const { return replace_; } inline bool DefineStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.DefineStmt.replace) return _internal_replace(); } inline void DefineStmt::_internal_set_replace(bool value) { replace_ = value; } inline void DefineStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.DefineStmt.replace) } // ------------------------------------------------------------------- // DropStmt // repeated .pg_query.Node objects = 1 [json_name = "objects"]; inline int DropStmt::_internal_objects_size() const { return objects_.size(); } inline int DropStmt::objects_size() const { return _internal_objects_size(); } inline void DropStmt::clear_objects() { objects_.Clear(); } inline ::pg_query::Node* DropStmt::mutable_objects(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DropStmt.objects) return objects_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DropStmt::mutable_objects() { // @@protoc_insertion_point(field_mutable_list:pg_query.DropStmt.objects) return &objects_; } inline const ::pg_query::Node& DropStmt::_internal_objects(int index) const { return objects_.Get(index); } inline const ::pg_query::Node& DropStmt::objects(int index) const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.objects) return _internal_objects(index); } inline ::pg_query::Node* DropStmt::_internal_add_objects() { return objects_.Add(); } inline ::pg_query::Node* DropStmt::add_objects() { // @@protoc_insertion_point(field_add:pg_query.DropStmt.objects) return _internal_add_objects(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DropStmt::objects() const { // @@protoc_insertion_point(field_list:pg_query.DropStmt.objects) return objects_; } // .pg_query.ObjectType remove_type = 2 [json_name = "removeType"]; inline void DropStmt::clear_remove_type() { remove_type_ = 0; } inline ::pg_query::ObjectType DropStmt::_internal_remove_type() const { return static_cast< ::pg_query::ObjectType >(remove_type_); } inline ::pg_query::ObjectType DropStmt::remove_type() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.remove_type) return _internal_remove_type(); } inline void DropStmt::_internal_set_remove_type(::pg_query::ObjectType value) { remove_type_ = value; } inline void DropStmt::set_remove_type(::pg_query::ObjectType value) { _internal_set_remove_type(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.remove_type) } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; inline void DropStmt::clear_behavior() { behavior_ = 0; } inline ::pg_query::DropBehavior DropStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(behavior_); } inline ::pg_query::DropBehavior DropStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.behavior) return _internal_behavior(); } inline void DropStmt::_internal_set_behavior(::pg_query::DropBehavior value) { behavior_ = value; } inline void DropStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.behavior) } // bool missing_ok = 4 [json_name = "missing_ok"]; inline void DropStmt::clear_missing_ok() { missing_ok_ = false; } inline bool DropStmt::_internal_missing_ok() const { return missing_ok_; } inline bool DropStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.missing_ok) return _internal_missing_ok(); } inline void DropStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void DropStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.missing_ok) } // bool concurrent = 5 [json_name = "concurrent"]; inline void DropStmt::clear_concurrent() { concurrent_ = false; } inline bool DropStmt::_internal_concurrent() const { return concurrent_; } inline bool DropStmt::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.DropStmt.concurrent) return _internal_concurrent(); } inline void DropStmt::_internal_set_concurrent(bool value) { concurrent_ = value; } inline void DropStmt::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.DropStmt.concurrent) } // ------------------------------------------------------------------- // TruncateStmt // repeated .pg_query.Node relations = 1 [json_name = "relations"]; inline int TruncateStmt::_internal_relations_size() const { return relations_.size(); } inline int TruncateStmt::relations_size() const { return _internal_relations_size(); } inline void TruncateStmt::clear_relations() { relations_.Clear(); } inline ::pg_query::Node* TruncateStmt::mutable_relations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TruncateStmt.relations) return relations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TruncateStmt::mutable_relations() { // @@protoc_insertion_point(field_mutable_list:pg_query.TruncateStmt.relations) return &relations_; } inline const ::pg_query::Node& TruncateStmt::_internal_relations(int index) const { return relations_.Get(index); } inline const ::pg_query::Node& TruncateStmt::relations(int index) const { // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.relations) return _internal_relations(index); } inline ::pg_query::Node* TruncateStmt::_internal_add_relations() { return relations_.Add(); } inline ::pg_query::Node* TruncateStmt::add_relations() { // @@protoc_insertion_point(field_add:pg_query.TruncateStmt.relations) return _internal_add_relations(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TruncateStmt::relations() const { // @@protoc_insertion_point(field_list:pg_query.TruncateStmt.relations) return relations_; } // bool restart_seqs = 2 [json_name = "restart_seqs"]; inline void TruncateStmt::clear_restart_seqs() { restart_seqs_ = false; } inline bool TruncateStmt::_internal_restart_seqs() const { return restart_seqs_; } inline bool TruncateStmt::restart_seqs() const { // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.restart_seqs) return _internal_restart_seqs(); } inline void TruncateStmt::_internal_set_restart_seqs(bool value) { restart_seqs_ = value; } inline void TruncateStmt::set_restart_seqs(bool value) { _internal_set_restart_seqs(value); // @@protoc_insertion_point(field_set:pg_query.TruncateStmt.restart_seqs) } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; inline void TruncateStmt::clear_behavior() { behavior_ = 0; } inline ::pg_query::DropBehavior TruncateStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(behavior_); } inline ::pg_query::DropBehavior TruncateStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.TruncateStmt.behavior) return _internal_behavior(); } inline void TruncateStmt::_internal_set_behavior(::pg_query::DropBehavior value) { behavior_ = value; } inline void TruncateStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.TruncateStmt.behavior) } // ------------------------------------------------------------------- // CommentStmt // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; inline void CommentStmt::clear_objtype() { objtype_ = 0; } inline ::pg_query::ObjectType CommentStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(objtype_); } inline ::pg_query::ObjectType CommentStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.CommentStmt.objtype) return _internal_objtype(); } inline void CommentStmt::_internal_set_objtype(::pg_query::ObjectType value) { objtype_ = value; } inline void CommentStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.CommentStmt.objtype) } // .pg_query.Node object = 2 [json_name = "object"]; inline bool CommentStmt::_internal_has_object() const { return this != internal_default_instance() && object_ != nullptr; } inline bool CommentStmt::has_object() const { return _internal_has_object(); } inline void CommentStmt::clear_object() { if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; } inline const ::pg_query::Node& CommentStmt::_internal_object() const { const ::pg_query::Node* p = object_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CommentStmt::object() const { // @@protoc_insertion_point(field_get:pg_query.CommentStmt.object) return _internal_object(); } inline void CommentStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); } object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommentStmt.object) } inline ::pg_query::Node* CommentStmt::release_object() { ::pg_query::Node* temp = object_; object_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CommentStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.CommentStmt.object) ::pg_query::Node* temp = object_; object_ = nullptr; return temp; } inline ::pg_query::Node* CommentStmt::_internal_mutable_object() { if (object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); object_ = p; } return object_; } inline ::pg_query::Node* CommentStmt::mutable_object() { // @@protoc_insertion_point(field_mutable:pg_query.CommentStmt.object) return _internal_mutable_object(); } inline void CommentStmt::set_allocated_object(::pg_query::Node* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.CommentStmt.object) } // string comment = 3 [json_name = "comment"]; inline void CommentStmt::clear_comment() { comment_.ClearToEmpty(); } inline const std::string& CommentStmt::comment() const { // @@protoc_insertion_point(field_get:pg_query.CommentStmt.comment) return _internal_comment(); } inline void CommentStmt::set_comment(const std::string& value) { _internal_set_comment(value); // @@protoc_insertion_point(field_set:pg_query.CommentStmt.comment) } inline std::string* CommentStmt::mutable_comment() { // @@protoc_insertion_point(field_mutable:pg_query.CommentStmt.comment) return _internal_mutable_comment(); } inline const std::string& CommentStmt::_internal_comment() const { return comment_.Get(); } inline void CommentStmt::_internal_set_comment(const std::string& value) { comment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CommentStmt::set_comment(std::string&& value) { comment_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CommentStmt.comment) } inline void CommentStmt::set_comment(const char* value) { GOOGLE_DCHECK(value != nullptr); comment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CommentStmt.comment) } inline void CommentStmt::set_comment(const char* value, size_t size) { comment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CommentStmt.comment) } inline std::string* CommentStmt::_internal_mutable_comment() { return comment_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CommentStmt::release_comment() { // @@protoc_insertion_point(field_release:pg_query.CommentStmt.comment) return comment_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CommentStmt::set_allocated_comment(std::string* comment) { if (comment != nullptr) { } else { } comment_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), comment, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CommentStmt.comment) } // ------------------------------------------------------------------- // FetchStmt // .pg_query.FetchDirection direction = 1 [json_name = "direction"]; inline void FetchStmt::clear_direction() { direction_ = 0; } inline ::pg_query::FetchDirection FetchStmt::_internal_direction() const { return static_cast< ::pg_query::FetchDirection >(direction_); } inline ::pg_query::FetchDirection FetchStmt::direction() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.direction) return _internal_direction(); } inline void FetchStmt::_internal_set_direction(::pg_query::FetchDirection value) { direction_ = value; } inline void FetchStmt::set_direction(::pg_query::FetchDirection value) { _internal_set_direction(value); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.direction) } // int64 how_many = 2 [json_name = "howMany"]; inline void FetchStmt::clear_how_many() { how_many_ = PROTOBUF_LONGLONG(0); } inline ::PROTOBUF_NAMESPACE_ID::int64 FetchStmt::_internal_how_many() const { return how_many_; } inline ::PROTOBUF_NAMESPACE_ID::int64 FetchStmt::how_many() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.how_many) return _internal_how_many(); } inline void FetchStmt::_internal_set_how_many(::PROTOBUF_NAMESPACE_ID::int64 value) { how_many_ = value; } inline void FetchStmt::set_how_many(::PROTOBUF_NAMESPACE_ID::int64 value) { _internal_set_how_many(value); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.how_many) } // string portalname = 3 [json_name = "portalname"]; inline void FetchStmt::clear_portalname() { portalname_.ClearToEmpty(); } inline const std::string& FetchStmt::portalname() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.portalname) return _internal_portalname(); } inline void FetchStmt::set_portalname(const std::string& value) { _internal_set_portalname(value); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.portalname) } inline std::string* FetchStmt::mutable_portalname() { // @@protoc_insertion_point(field_mutable:pg_query.FetchStmt.portalname) return _internal_mutable_portalname(); } inline const std::string& FetchStmt::_internal_portalname() const { return portalname_.Get(); } inline void FetchStmt::_internal_set_portalname(const std::string& value) { portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void FetchStmt::set_portalname(std::string&& value) { portalname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.FetchStmt.portalname) } inline void FetchStmt::set_portalname(const char* value) { GOOGLE_DCHECK(value != nullptr); portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.FetchStmt.portalname) } inline void FetchStmt::set_portalname(const char* value, size_t size) { portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.FetchStmt.portalname) } inline std::string* FetchStmt::_internal_mutable_portalname() { return portalname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* FetchStmt::release_portalname() { // @@protoc_insertion_point(field_release:pg_query.FetchStmt.portalname) return portalname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void FetchStmt::set_allocated_portalname(std::string* portalname) { if (portalname != nullptr) { } else { } portalname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), portalname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.FetchStmt.portalname) } // bool ismove = 4 [json_name = "ismove"]; inline void FetchStmt::clear_ismove() { ismove_ = false; } inline bool FetchStmt::_internal_ismove() const { return ismove_; } inline bool FetchStmt::ismove() const { // @@protoc_insertion_point(field_get:pg_query.FetchStmt.ismove) return _internal_ismove(); } inline void FetchStmt::_internal_set_ismove(bool value) { ismove_ = value; } inline void FetchStmt::set_ismove(bool value) { _internal_set_ismove(value); // @@protoc_insertion_point(field_set:pg_query.FetchStmt.ismove) } // ------------------------------------------------------------------- // IndexStmt // string idxname = 1 [json_name = "idxname"]; inline void IndexStmt::clear_idxname() { idxname_.ClearToEmpty(); } inline const std::string& IndexStmt::idxname() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.idxname) return _internal_idxname(); } inline void IndexStmt::set_idxname(const std::string& value) { _internal_set_idxname(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.idxname) } inline std::string* IndexStmt::mutable_idxname() { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.idxname) return _internal_mutable_idxname(); } inline const std::string& IndexStmt::_internal_idxname() const { return idxname_.Get(); } inline void IndexStmt::_internal_set_idxname(const std::string& value) { idxname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void IndexStmt::set_idxname(std::string&& value) { idxname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexStmt.idxname) } inline void IndexStmt::set_idxname(const char* value) { GOOGLE_DCHECK(value != nullptr); idxname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.IndexStmt.idxname) } inline void IndexStmt::set_idxname(const char* value, size_t size) { idxname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.IndexStmt.idxname) } inline std::string* IndexStmt::_internal_mutable_idxname() { return idxname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* IndexStmt::release_idxname() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.idxname) return idxname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void IndexStmt::set_allocated_idxname(std::string* idxname) { if (idxname != nullptr) { } else { } idxname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), idxname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.idxname) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool IndexStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool IndexStmt::has_relation() const { return _internal_has_relation(); } inline void IndexStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& IndexStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& IndexStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.relation) return _internal_relation(); } inline void IndexStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexStmt.relation) } inline ::pg_query::RangeVar* IndexStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* IndexStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* IndexStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* IndexStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.relation) return _internal_mutable_relation(); } inline void IndexStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.relation) } // string access_method = 3 [json_name = "accessMethod"]; inline void IndexStmt::clear_access_method() { access_method_.ClearToEmpty(); } inline const std::string& IndexStmt::access_method() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.access_method) return _internal_access_method(); } inline void IndexStmt::set_access_method(const std::string& value) { _internal_set_access_method(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.access_method) } inline std::string* IndexStmt::mutable_access_method() { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.access_method) return _internal_mutable_access_method(); } inline const std::string& IndexStmt::_internal_access_method() const { return access_method_.Get(); } inline void IndexStmt::_internal_set_access_method(const std::string& value) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void IndexStmt::set_access_method(std::string&& value) { access_method_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexStmt.access_method) } inline void IndexStmt::set_access_method(const char* value) { GOOGLE_DCHECK(value != nullptr); access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.IndexStmt.access_method) } inline void IndexStmt::set_access_method(const char* value, size_t size) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.IndexStmt.access_method) } inline std::string* IndexStmt::_internal_mutable_access_method() { return access_method_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* IndexStmt::release_access_method() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.access_method) return access_method_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void IndexStmt::set_allocated_access_method(std::string* access_method) { if (access_method != nullptr) { } else { } access_method_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), access_method, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.access_method) } // string table_space = 4 [json_name = "tableSpace"]; inline void IndexStmt::clear_table_space() { table_space_.ClearToEmpty(); } inline const std::string& IndexStmt::table_space() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.table_space) return _internal_table_space(); } inline void IndexStmt::set_table_space(const std::string& value) { _internal_set_table_space(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.table_space) } inline std::string* IndexStmt::mutable_table_space() { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.table_space) return _internal_mutable_table_space(); } inline const std::string& IndexStmt::_internal_table_space() const { return table_space_.Get(); } inline void IndexStmt::_internal_set_table_space(const std::string& value) { table_space_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void IndexStmt::set_table_space(std::string&& value) { table_space_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexStmt.table_space) } inline void IndexStmt::set_table_space(const char* value) { GOOGLE_DCHECK(value != nullptr); table_space_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.IndexStmt.table_space) } inline void IndexStmt::set_table_space(const char* value, size_t size) { table_space_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.IndexStmt.table_space) } inline std::string* IndexStmt::_internal_mutable_table_space() { return table_space_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* IndexStmt::release_table_space() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.table_space) return table_space_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void IndexStmt::set_allocated_table_space(std::string* table_space) { if (table_space != nullptr) { } else { } table_space_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), table_space, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.table_space) } // repeated .pg_query.Node index_params = 5 [json_name = "indexParams"]; inline int IndexStmt::_internal_index_params_size() const { return index_params_.size(); } inline int IndexStmt::index_params_size() const { return _internal_index_params_size(); } inline void IndexStmt::clear_index_params() { index_params_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_index_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.index_params) return index_params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexStmt::mutable_index_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.index_params) return &index_params_; } inline const ::pg_query::Node& IndexStmt::_internal_index_params(int index) const { return index_params_.Get(index); } inline const ::pg_query::Node& IndexStmt::index_params(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_params) return _internal_index_params(index); } inline ::pg_query::Node* IndexStmt::_internal_add_index_params() { return index_params_.Add(); } inline ::pg_query::Node* IndexStmt::add_index_params() { // @@protoc_insertion_point(field_add:pg_query.IndexStmt.index_params) return _internal_add_index_params(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexStmt::index_params() const { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.index_params) return index_params_; } // repeated .pg_query.Node index_including_params = 6 [json_name = "indexIncludingParams"]; inline int IndexStmt::_internal_index_including_params_size() const { return index_including_params_.size(); } inline int IndexStmt::index_including_params_size() const { return _internal_index_including_params_size(); } inline void IndexStmt::clear_index_including_params() { index_including_params_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_index_including_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.index_including_params) return index_including_params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexStmt::mutable_index_including_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.index_including_params) return &index_including_params_; } inline const ::pg_query::Node& IndexStmt::_internal_index_including_params(int index) const { return index_including_params_.Get(index); } inline const ::pg_query::Node& IndexStmt::index_including_params(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_including_params) return _internal_index_including_params(index); } inline ::pg_query::Node* IndexStmt::_internal_add_index_including_params() { return index_including_params_.Add(); } inline ::pg_query::Node* IndexStmt::add_index_including_params() { // @@protoc_insertion_point(field_add:pg_query.IndexStmt.index_including_params) return _internal_add_index_including_params(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexStmt::index_including_params() const { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.index_including_params) return index_including_params_; } // repeated .pg_query.Node options = 7 [json_name = "options"]; inline int IndexStmt::_internal_options_size() const { return options_.size(); } inline int IndexStmt::options_size() const { return _internal_options_size(); } inline void IndexStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.options) return &options_; } inline const ::pg_query::Node& IndexStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& IndexStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.options) return _internal_options(index); } inline ::pg_query::Node* IndexStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* IndexStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.IndexStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.options) return options_; } // .pg_query.Node where_clause = 8 [json_name = "whereClause"]; inline bool IndexStmt::_internal_has_where_clause() const { return this != internal_default_instance() && where_clause_ != nullptr; } inline bool IndexStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void IndexStmt::clear_where_clause() { if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; } inline const ::pg_query::Node& IndexStmt::_internal_where_clause() const { const ::pg_query::Node* p = where_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& IndexStmt::where_clause() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.where_clause) return _internal_where_clause(); } inline void IndexStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); } where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexStmt.where_clause) } inline ::pg_query::Node* IndexStmt::release_where_clause() { ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* IndexStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.where_clause) ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; return temp; } inline ::pg_query::Node* IndexStmt::_internal_mutable_where_clause() { if (where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); where_clause_ = p; } return where_clause_; } inline ::pg_query::Node* IndexStmt::mutable_where_clause() { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.where_clause) return _internal_mutable_where_clause(); } inline void IndexStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.where_clause) } // repeated .pg_query.Node exclude_op_names = 9 [json_name = "excludeOpNames"]; inline int IndexStmt::_internal_exclude_op_names_size() const { return exclude_op_names_.size(); } inline int IndexStmt::exclude_op_names_size() const { return _internal_exclude_op_names_size(); } inline void IndexStmt::clear_exclude_op_names() { exclude_op_names_.Clear(); } inline ::pg_query::Node* IndexStmt::mutable_exclude_op_names(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.exclude_op_names) return exclude_op_names_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexStmt::mutable_exclude_op_names() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexStmt.exclude_op_names) return &exclude_op_names_; } inline const ::pg_query::Node& IndexStmt::_internal_exclude_op_names(int index) const { return exclude_op_names_.Get(index); } inline const ::pg_query::Node& IndexStmt::exclude_op_names(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.exclude_op_names) return _internal_exclude_op_names(index); } inline ::pg_query::Node* IndexStmt::_internal_add_exclude_op_names() { return exclude_op_names_.Add(); } inline ::pg_query::Node* IndexStmt::add_exclude_op_names() { // @@protoc_insertion_point(field_add:pg_query.IndexStmt.exclude_op_names) return _internal_add_exclude_op_names(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexStmt::exclude_op_names() const { // @@protoc_insertion_point(field_list:pg_query.IndexStmt.exclude_op_names) return exclude_op_names_; } // string idxcomment = 10 [json_name = "idxcomment"]; inline void IndexStmt::clear_idxcomment() { idxcomment_.ClearToEmpty(); } inline const std::string& IndexStmt::idxcomment() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.idxcomment) return _internal_idxcomment(); } inline void IndexStmt::set_idxcomment(const std::string& value) { _internal_set_idxcomment(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.idxcomment) } inline std::string* IndexStmt::mutable_idxcomment() { // @@protoc_insertion_point(field_mutable:pg_query.IndexStmt.idxcomment) return _internal_mutable_idxcomment(); } inline const std::string& IndexStmt::_internal_idxcomment() const { return idxcomment_.Get(); } inline void IndexStmt::_internal_set_idxcomment(const std::string& value) { idxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void IndexStmt::set_idxcomment(std::string&& value) { idxcomment_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexStmt.idxcomment) } inline void IndexStmt::set_idxcomment(const char* value) { GOOGLE_DCHECK(value != nullptr); idxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.IndexStmt.idxcomment) } inline void IndexStmt::set_idxcomment(const char* value, size_t size) { idxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.IndexStmt.idxcomment) } inline std::string* IndexStmt::_internal_mutable_idxcomment() { return idxcomment_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* IndexStmt::release_idxcomment() { // @@protoc_insertion_point(field_release:pg_query.IndexStmt.idxcomment) return idxcomment_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void IndexStmt::set_allocated_idxcomment(std::string* idxcomment) { if (idxcomment != nullptr) { } else { } idxcomment_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), idxcomment, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.IndexStmt.idxcomment) } // uint32 index_oid = 11 [json_name = "indexOid"]; inline void IndexStmt::clear_index_oid() { index_oid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::_internal_index_oid() const { return index_oid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::index_oid() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.index_oid) return _internal_index_oid(); } inline void IndexStmt::_internal_set_index_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { index_oid_ = value; } inline void IndexStmt::set_index_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_index_oid(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.index_oid) } // uint32 old_node = 12 [json_name = "oldNode"]; inline void IndexStmt::clear_old_node() { old_node_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::_internal_old_node() const { return old_node_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::old_node() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_node) return _internal_old_node(); } inline void IndexStmt::_internal_set_old_node(::PROTOBUF_NAMESPACE_ID::uint32 value) { old_node_ = value; } inline void IndexStmt::set_old_node(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_old_node(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_node) } // uint32 old_create_subid = 13 [json_name = "oldCreateSubid"]; inline void IndexStmt::clear_old_create_subid() { old_create_subid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::_internal_old_create_subid() const { return old_create_subid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::old_create_subid() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_create_subid) return _internal_old_create_subid(); } inline void IndexStmt::_internal_set_old_create_subid(::PROTOBUF_NAMESPACE_ID::uint32 value) { old_create_subid_ = value; } inline void IndexStmt::set_old_create_subid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_old_create_subid(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_create_subid) } // uint32 old_first_relfilenode_subid = 14 [json_name = "oldFirstRelfilenodeSubid"]; inline void IndexStmt::clear_old_first_relfilenode_subid() { old_first_relfilenode_subid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::_internal_old_first_relfilenode_subid() const { return old_first_relfilenode_subid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 IndexStmt::old_first_relfilenode_subid() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.old_first_relfilenode_subid) return _internal_old_first_relfilenode_subid(); } inline void IndexStmt::_internal_set_old_first_relfilenode_subid(::PROTOBUF_NAMESPACE_ID::uint32 value) { old_first_relfilenode_subid_ = value; } inline void IndexStmt::set_old_first_relfilenode_subid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_old_first_relfilenode_subid(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.old_first_relfilenode_subid) } // bool unique = 15 [json_name = "unique"]; inline void IndexStmt::clear_unique() { unique_ = false; } inline bool IndexStmt::_internal_unique() const { return unique_; } inline bool IndexStmt::unique() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.unique) return _internal_unique(); } inline void IndexStmt::_internal_set_unique(bool value) { unique_ = value; } inline void IndexStmt::set_unique(bool value) { _internal_set_unique(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.unique) } // bool primary = 16 [json_name = "primary"]; inline void IndexStmt::clear_primary() { primary_ = false; } inline bool IndexStmt::_internal_primary() const { return primary_; } inline bool IndexStmt::primary() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.primary) return _internal_primary(); } inline void IndexStmt::_internal_set_primary(bool value) { primary_ = value; } inline void IndexStmt::set_primary(bool value) { _internal_set_primary(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.primary) } // bool isconstraint = 17 [json_name = "isconstraint"]; inline void IndexStmt::clear_isconstraint() { isconstraint_ = false; } inline bool IndexStmt::_internal_isconstraint() const { return isconstraint_; } inline bool IndexStmt::isconstraint() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.isconstraint) return _internal_isconstraint(); } inline void IndexStmt::_internal_set_isconstraint(bool value) { isconstraint_ = value; } inline void IndexStmt::set_isconstraint(bool value) { _internal_set_isconstraint(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.isconstraint) } // bool deferrable = 18 [json_name = "deferrable"]; inline void IndexStmt::clear_deferrable() { deferrable_ = false; } inline bool IndexStmt::_internal_deferrable() const { return deferrable_; } inline bool IndexStmt::deferrable() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.deferrable) return _internal_deferrable(); } inline void IndexStmt::_internal_set_deferrable(bool value) { deferrable_ = value; } inline void IndexStmt::set_deferrable(bool value) { _internal_set_deferrable(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.deferrable) } // bool initdeferred = 19 [json_name = "initdeferred"]; inline void IndexStmt::clear_initdeferred() { initdeferred_ = false; } inline bool IndexStmt::_internal_initdeferred() const { return initdeferred_; } inline bool IndexStmt::initdeferred() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.initdeferred) return _internal_initdeferred(); } inline void IndexStmt::_internal_set_initdeferred(bool value) { initdeferred_ = value; } inline void IndexStmt::set_initdeferred(bool value) { _internal_set_initdeferred(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.initdeferred) } // bool transformed = 20 [json_name = "transformed"]; inline void IndexStmt::clear_transformed() { transformed_ = false; } inline bool IndexStmt::_internal_transformed() const { return transformed_; } inline bool IndexStmt::transformed() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.transformed) return _internal_transformed(); } inline void IndexStmt::_internal_set_transformed(bool value) { transformed_ = value; } inline void IndexStmt::set_transformed(bool value) { _internal_set_transformed(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.transformed) } // bool concurrent = 21 [json_name = "concurrent"]; inline void IndexStmt::clear_concurrent() { concurrent_ = false; } inline bool IndexStmt::_internal_concurrent() const { return concurrent_; } inline bool IndexStmt::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.concurrent) return _internal_concurrent(); } inline void IndexStmt::_internal_set_concurrent(bool value) { concurrent_ = value; } inline void IndexStmt::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.concurrent) } // bool if_not_exists = 22 [json_name = "if_not_exists"]; inline void IndexStmt::clear_if_not_exists() { if_not_exists_ = false; } inline bool IndexStmt::_internal_if_not_exists() const { return if_not_exists_; } inline bool IndexStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.if_not_exists) return _internal_if_not_exists(); } inline void IndexStmt::_internal_set_if_not_exists(bool value) { if_not_exists_ = value; } inline void IndexStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.if_not_exists) } // bool reset_default_tblspc = 23 [json_name = "reset_default_tblspc"]; inline void IndexStmt::clear_reset_default_tblspc() { reset_default_tblspc_ = false; } inline bool IndexStmt::_internal_reset_default_tblspc() const { return reset_default_tblspc_; } inline bool IndexStmt::reset_default_tblspc() const { // @@protoc_insertion_point(field_get:pg_query.IndexStmt.reset_default_tblspc) return _internal_reset_default_tblspc(); } inline void IndexStmt::_internal_set_reset_default_tblspc(bool value) { reset_default_tblspc_ = value; } inline void IndexStmt::set_reset_default_tblspc(bool value) { _internal_set_reset_default_tblspc(value); // @@protoc_insertion_point(field_set:pg_query.IndexStmt.reset_default_tblspc) } // ------------------------------------------------------------------- // CreateFunctionStmt // bool is_procedure = 1 [json_name = "is_procedure"]; inline void CreateFunctionStmt::clear_is_procedure() { is_procedure_ = false; } inline bool CreateFunctionStmt::_internal_is_procedure() const { return is_procedure_; } inline bool CreateFunctionStmt::is_procedure() const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.is_procedure) return _internal_is_procedure(); } inline void CreateFunctionStmt::_internal_set_is_procedure(bool value) { is_procedure_ = value; } inline void CreateFunctionStmt::set_is_procedure(bool value) { _internal_set_is_procedure(value); // @@protoc_insertion_point(field_set:pg_query.CreateFunctionStmt.is_procedure) } // bool replace = 2 [json_name = "replace"]; inline void CreateFunctionStmt::clear_replace() { replace_ = false; } inline bool CreateFunctionStmt::_internal_replace() const { return replace_; } inline bool CreateFunctionStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.replace) return _internal_replace(); } inline void CreateFunctionStmt::_internal_set_replace(bool value) { replace_ = value; } inline void CreateFunctionStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreateFunctionStmt.replace) } // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; inline int CreateFunctionStmt::_internal_funcname_size() const { return funcname_.size(); } inline int CreateFunctionStmt::funcname_size() const { return _internal_funcname_size(); } inline void CreateFunctionStmt::clear_funcname() { funcname_.Clear(); } inline ::pg_query::Node* CreateFunctionStmt::mutable_funcname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.funcname) return funcname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateFunctionStmt::mutable_funcname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.funcname) return &funcname_; } inline const ::pg_query::Node& CreateFunctionStmt::_internal_funcname(int index) const { return funcname_.Get(index); } inline const ::pg_query::Node& CreateFunctionStmt::funcname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.funcname) return _internal_funcname(index); } inline ::pg_query::Node* CreateFunctionStmt::_internal_add_funcname() { return funcname_.Add(); } inline ::pg_query::Node* CreateFunctionStmt::add_funcname() { // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.funcname) return _internal_add_funcname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateFunctionStmt::funcname() const { // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.funcname) return funcname_; } // repeated .pg_query.Node parameters = 4 [json_name = "parameters"]; inline int CreateFunctionStmt::_internal_parameters_size() const { return parameters_.size(); } inline int CreateFunctionStmt::parameters_size() const { return _internal_parameters_size(); } inline void CreateFunctionStmt::clear_parameters() { parameters_.Clear(); } inline ::pg_query::Node* CreateFunctionStmt::mutable_parameters(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.parameters) return parameters_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateFunctionStmt::mutable_parameters() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.parameters) return ¶meters_; } inline const ::pg_query::Node& CreateFunctionStmt::_internal_parameters(int index) const { return parameters_.Get(index); } inline const ::pg_query::Node& CreateFunctionStmt::parameters(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.parameters) return _internal_parameters(index); } inline ::pg_query::Node* CreateFunctionStmt::_internal_add_parameters() { return parameters_.Add(); } inline ::pg_query::Node* CreateFunctionStmt::add_parameters() { // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.parameters) return _internal_add_parameters(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateFunctionStmt::parameters() const { // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.parameters) return parameters_; } // .pg_query.TypeName return_type = 5 [json_name = "returnType"]; inline bool CreateFunctionStmt::_internal_has_return_type() const { return this != internal_default_instance() && return_type_ != nullptr; } inline bool CreateFunctionStmt::has_return_type() const { return _internal_has_return_type(); } inline void CreateFunctionStmt::clear_return_type() { if (GetArena() == nullptr && return_type_ != nullptr) { delete return_type_; } return_type_ = nullptr; } inline const ::pg_query::TypeName& CreateFunctionStmt::_internal_return_type() const { const ::pg_query::TypeName* p = return_type_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateFunctionStmt::return_type() const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.return_type) return _internal_return_type(); } inline void CreateFunctionStmt::unsafe_arena_set_allocated_return_type( ::pg_query::TypeName* return_type) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(return_type_); } return_type_ = return_type; if (return_type) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateFunctionStmt.return_type) } inline ::pg_query::TypeName* CreateFunctionStmt::release_return_type() { ::pg_query::TypeName* temp = return_type_; return_type_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* CreateFunctionStmt::unsafe_arena_release_return_type() { // @@protoc_insertion_point(field_release:pg_query.CreateFunctionStmt.return_type) ::pg_query::TypeName* temp = return_type_; return_type_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateFunctionStmt::_internal_mutable_return_type() { if (return_type_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); return_type_ = p; } return return_type_; } inline ::pg_query::TypeName* CreateFunctionStmt::mutable_return_type() { // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.return_type) return _internal_mutable_return_type(); } inline void CreateFunctionStmt::set_allocated_return_type(::pg_query::TypeName* return_type) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete return_type_; } if (return_type) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(return_type); if (message_arena != submessage_arena) { return_type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, return_type, submessage_arena); } } else { } return_type_ = return_type; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateFunctionStmt.return_type) } // repeated .pg_query.Node options = 6 [json_name = "options"]; inline int CreateFunctionStmt::_internal_options_size() const { return options_.size(); } inline int CreateFunctionStmt::options_size() const { return _internal_options_size(); } inline void CreateFunctionStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateFunctionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateFunctionStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateFunctionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFunctionStmt.options) return &options_; } inline const ::pg_query::Node& CreateFunctionStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateFunctionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateFunctionStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateFunctionStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateFunctionStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateFunctionStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateFunctionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateFunctionStmt.options) return options_; } // ------------------------------------------------------------------- // AlterFunctionStmt // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; inline void AlterFunctionStmt::clear_objtype() { objtype_ = 0; } inline ::pg_query::ObjectType AlterFunctionStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(objtype_); } inline ::pg_query::ObjectType AlterFunctionStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.objtype) return _internal_objtype(); } inline void AlterFunctionStmt::_internal_set_objtype(::pg_query::ObjectType value) { objtype_ = value; } inline void AlterFunctionStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterFunctionStmt.objtype) } // .pg_query.ObjectWithArgs func = 2 [json_name = "func"]; inline bool AlterFunctionStmt::_internal_has_func() const { return this != internal_default_instance() && func_ != nullptr; } inline bool AlterFunctionStmt::has_func() const { return _internal_has_func(); } inline void AlterFunctionStmt::clear_func() { if (GetArena() == nullptr && func_ != nullptr) { delete func_; } func_ = nullptr; } inline const ::pg_query::ObjectWithArgs& AlterFunctionStmt::_internal_func() const { const ::pg_query::ObjectWithArgs* p = func_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& AlterFunctionStmt::func() const { // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.func) return _internal_func(); } inline void AlterFunctionStmt::unsafe_arena_set_allocated_func( ::pg_query::ObjectWithArgs* func) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(func_); } func_ = func; if (func) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterFunctionStmt.func) } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::release_func() { ::pg_query::ObjectWithArgs* temp = func_; func_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::unsafe_arena_release_func() { // @@protoc_insertion_point(field_release:pg_query.AlterFunctionStmt.func) ::pg_query::ObjectWithArgs* temp = func_; func_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::_internal_mutable_func() { if (func_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); func_ = p; } return func_; } inline ::pg_query::ObjectWithArgs* AlterFunctionStmt::mutable_func() { // @@protoc_insertion_point(field_mutable:pg_query.AlterFunctionStmt.func) return _internal_mutable_func(); } inline void AlterFunctionStmt::set_allocated_func(::pg_query::ObjectWithArgs* func) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete func_; } if (func) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(func); if (message_arena != submessage_arena) { func = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, func, submessage_arena); } } else { } func_ = func; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterFunctionStmt.func) } // repeated .pg_query.Node actions = 3 [json_name = "actions"]; inline int AlterFunctionStmt::_internal_actions_size() const { return actions_.size(); } inline int AlterFunctionStmt::actions_size() const { return _internal_actions_size(); } inline void AlterFunctionStmt::clear_actions() { actions_.Clear(); } inline ::pg_query::Node* AlterFunctionStmt::mutable_actions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterFunctionStmt.actions) return actions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterFunctionStmt::mutable_actions() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFunctionStmt.actions) return &actions_; } inline const ::pg_query::Node& AlterFunctionStmt::_internal_actions(int index) const { return actions_.Get(index); } inline const ::pg_query::Node& AlterFunctionStmt::actions(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterFunctionStmt.actions) return _internal_actions(index); } inline ::pg_query::Node* AlterFunctionStmt::_internal_add_actions() { return actions_.Add(); } inline ::pg_query::Node* AlterFunctionStmt::add_actions() { // @@protoc_insertion_point(field_add:pg_query.AlterFunctionStmt.actions) return _internal_add_actions(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterFunctionStmt::actions() const { // @@protoc_insertion_point(field_list:pg_query.AlterFunctionStmt.actions) return actions_; } // ------------------------------------------------------------------- // DoStmt // repeated .pg_query.Node args = 1 [json_name = "args"]; inline int DoStmt::_internal_args_size() const { return args_.size(); } inline int DoStmt::args_size() const { return _internal_args_size(); } inline void DoStmt::clear_args() { args_.Clear(); } inline ::pg_query::Node* DoStmt::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DoStmt.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DoStmt::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.DoStmt.args) return &args_; } inline const ::pg_query::Node& DoStmt::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& DoStmt::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.DoStmt.args) return _internal_args(index); } inline ::pg_query::Node* DoStmt::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* DoStmt::add_args() { // @@protoc_insertion_point(field_add:pg_query.DoStmt.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DoStmt::args() const { // @@protoc_insertion_point(field_list:pg_query.DoStmt.args) return args_; } // ------------------------------------------------------------------- // RenameStmt // .pg_query.ObjectType rename_type = 1 [json_name = "renameType"]; inline void RenameStmt::clear_rename_type() { rename_type_ = 0; } inline ::pg_query::ObjectType RenameStmt::_internal_rename_type() const { return static_cast< ::pg_query::ObjectType >(rename_type_); } inline ::pg_query::ObjectType RenameStmt::rename_type() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.rename_type) return _internal_rename_type(); } inline void RenameStmt::_internal_set_rename_type(::pg_query::ObjectType value) { rename_type_ = value; } inline void RenameStmt::set_rename_type(::pg_query::ObjectType value) { _internal_set_rename_type(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.rename_type) } // .pg_query.ObjectType relation_type = 2 [json_name = "relationType"]; inline void RenameStmt::clear_relation_type() { relation_type_ = 0; } inline ::pg_query::ObjectType RenameStmt::_internal_relation_type() const { return static_cast< ::pg_query::ObjectType >(relation_type_); } inline ::pg_query::ObjectType RenameStmt::relation_type() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.relation_type) return _internal_relation_type(); } inline void RenameStmt::_internal_set_relation_type(::pg_query::ObjectType value) { relation_type_ = value; } inline void RenameStmt::set_relation_type(::pg_query::ObjectType value) { _internal_set_relation_type(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.relation_type) } // .pg_query.RangeVar relation = 3 [json_name = "relation"]; inline bool RenameStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool RenameStmt::has_relation() const { return _internal_has_relation(); } inline void RenameStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& RenameStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& RenameStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.relation) return _internal_relation(); } inline void RenameStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RenameStmt.relation) } inline ::pg_query::RangeVar* RenameStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* RenameStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.RenameStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* RenameStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* RenameStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.relation) return _internal_mutable_relation(); } inline void RenameStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.relation) } // .pg_query.Node object = 4 [json_name = "object"]; inline bool RenameStmt::_internal_has_object() const { return this != internal_default_instance() && object_ != nullptr; } inline bool RenameStmt::has_object() const { return _internal_has_object(); } inline void RenameStmt::clear_object() { if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; } inline const ::pg_query::Node& RenameStmt::_internal_object() const { const ::pg_query::Node* p = object_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RenameStmt::object() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.object) return _internal_object(); } inline void RenameStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); } object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RenameStmt.object) } inline ::pg_query::Node* RenameStmt::release_object() { ::pg_query::Node* temp = object_; object_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RenameStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.RenameStmt.object) ::pg_query::Node* temp = object_; object_ = nullptr; return temp; } inline ::pg_query::Node* RenameStmt::_internal_mutable_object() { if (object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); object_ = p; } return object_; } inline ::pg_query::Node* RenameStmt::mutable_object() { // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.object) return _internal_mutable_object(); } inline void RenameStmt::set_allocated_object(::pg_query::Node* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.object) } // string subname = 5 [json_name = "subname"]; inline void RenameStmt::clear_subname() { subname_.ClearToEmpty(); } inline const std::string& RenameStmt::subname() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.subname) return _internal_subname(); } inline void RenameStmt::set_subname(const std::string& value) { _internal_set_subname(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.subname) } inline std::string* RenameStmt::mutable_subname() { // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.subname) return _internal_mutable_subname(); } inline const std::string& RenameStmt::_internal_subname() const { return subname_.Get(); } inline void RenameStmt::_internal_set_subname(const std::string& value) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RenameStmt::set_subname(std::string&& value) { subname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RenameStmt.subname) } inline void RenameStmt::set_subname(const char* value) { GOOGLE_DCHECK(value != nullptr); subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RenameStmt.subname) } inline void RenameStmt::set_subname(const char* value, size_t size) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RenameStmt.subname) } inline std::string* RenameStmt::_internal_mutable_subname() { return subname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RenameStmt::release_subname() { // @@protoc_insertion_point(field_release:pg_query.RenameStmt.subname) return subname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RenameStmt::set_allocated_subname(std::string* subname) { if (subname != nullptr) { } else { } subname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), subname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.subname) } // string newname = 6 [json_name = "newname"]; inline void RenameStmt::clear_newname() { newname_.ClearToEmpty(); } inline const std::string& RenameStmt::newname() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.newname) return _internal_newname(); } inline void RenameStmt::set_newname(const std::string& value) { _internal_set_newname(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.newname) } inline std::string* RenameStmt::mutable_newname() { // @@protoc_insertion_point(field_mutable:pg_query.RenameStmt.newname) return _internal_mutable_newname(); } inline const std::string& RenameStmt::_internal_newname() const { return newname_.Get(); } inline void RenameStmt::_internal_set_newname(const std::string& value) { newname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RenameStmt::set_newname(std::string&& value) { newname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RenameStmt.newname) } inline void RenameStmt::set_newname(const char* value) { GOOGLE_DCHECK(value != nullptr); newname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RenameStmt.newname) } inline void RenameStmt::set_newname(const char* value, size_t size) { newname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RenameStmt.newname) } inline std::string* RenameStmt::_internal_mutable_newname() { return newname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RenameStmt::release_newname() { // @@protoc_insertion_point(field_release:pg_query.RenameStmt.newname) return newname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RenameStmt::set_allocated_newname(std::string* newname) { if (newname != nullptr) { } else { } newname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), newname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RenameStmt.newname) } // .pg_query.DropBehavior behavior = 7 [json_name = "behavior"]; inline void RenameStmt::clear_behavior() { behavior_ = 0; } inline ::pg_query::DropBehavior RenameStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(behavior_); } inline ::pg_query::DropBehavior RenameStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.behavior) return _internal_behavior(); } inline void RenameStmt::_internal_set_behavior(::pg_query::DropBehavior value) { behavior_ = value; } inline void RenameStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.behavior) } // bool missing_ok = 8 [json_name = "missing_ok"]; inline void RenameStmt::clear_missing_ok() { missing_ok_ = false; } inline bool RenameStmt::_internal_missing_ok() const { return missing_ok_; } inline bool RenameStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.RenameStmt.missing_ok) return _internal_missing_ok(); } inline void RenameStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void RenameStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.RenameStmt.missing_ok) } // ------------------------------------------------------------------- // RuleStmt // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool RuleStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool RuleStmt::has_relation() const { return _internal_has_relation(); } inline void RuleStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& RuleStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& RuleStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.relation) return _internal_relation(); } inline void RuleStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RuleStmt.relation) } inline ::pg_query::RangeVar* RuleStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* RuleStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.RuleStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* RuleStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* RuleStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.relation) return _internal_mutable_relation(); } inline void RuleStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.relation) } // string rulename = 2 [json_name = "rulename"]; inline void RuleStmt::clear_rulename() { rulename_.ClearToEmpty(); } inline const std::string& RuleStmt::rulename() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.rulename) return _internal_rulename(); } inline void RuleStmt::set_rulename(const std::string& value) { _internal_set_rulename(value); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.rulename) } inline std::string* RuleStmt::mutable_rulename() { // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.rulename) return _internal_mutable_rulename(); } inline const std::string& RuleStmt::_internal_rulename() const { return rulename_.Get(); } inline void RuleStmt::_internal_set_rulename(const std::string& value) { rulename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RuleStmt::set_rulename(std::string&& value) { rulename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RuleStmt.rulename) } inline void RuleStmt::set_rulename(const char* value) { GOOGLE_DCHECK(value != nullptr); rulename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RuleStmt.rulename) } inline void RuleStmt::set_rulename(const char* value, size_t size) { rulename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RuleStmt.rulename) } inline std::string* RuleStmt::_internal_mutable_rulename() { return rulename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RuleStmt::release_rulename() { // @@protoc_insertion_point(field_release:pg_query.RuleStmt.rulename) return rulename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RuleStmt::set_allocated_rulename(std::string* rulename) { if (rulename != nullptr) { } else { } rulename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), rulename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.rulename) } // .pg_query.Node where_clause = 3 [json_name = "whereClause"]; inline bool RuleStmt::_internal_has_where_clause() const { return this != internal_default_instance() && where_clause_ != nullptr; } inline bool RuleStmt::has_where_clause() const { return _internal_has_where_clause(); } inline void RuleStmt::clear_where_clause() { if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; } inline const ::pg_query::Node& RuleStmt::_internal_where_clause() const { const ::pg_query::Node* p = where_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RuleStmt::where_clause() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.where_clause) return _internal_where_clause(); } inline void RuleStmt::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); } where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RuleStmt.where_clause) } inline ::pg_query::Node* RuleStmt::release_where_clause() { ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RuleStmt::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.RuleStmt.where_clause) ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; return temp; } inline ::pg_query::Node* RuleStmt::_internal_mutable_where_clause() { if (where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); where_clause_ = p; } return where_clause_; } inline ::pg_query::Node* RuleStmt::mutable_where_clause() { // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.where_clause) return _internal_mutable_where_clause(); } inline void RuleStmt::set_allocated_where_clause(::pg_query::Node* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.RuleStmt.where_clause) } // .pg_query.CmdType event = 4 [json_name = "event"]; inline void RuleStmt::clear_event() { event_ = 0; } inline ::pg_query::CmdType RuleStmt::_internal_event() const { return static_cast< ::pg_query::CmdType >(event_); } inline ::pg_query::CmdType RuleStmt::event() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.event) return _internal_event(); } inline void RuleStmt::_internal_set_event(::pg_query::CmdType value) { event_ = value; } inline void RuleStmt::set_event(::pg_query::CmdType value) { _internal_set_event(value); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.event) } // bool instead = 5 [json_name = "instead"]; inline void RuleStmt::clear_instead() { instead_ = false; } inline bool RuleStmt::_internal_instead() const { return instead_; } inline bool RuleStmt::instead() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.instead) return _internal_instead(); } inline void RuleStmt::_internal_set_instead(bool value) { instead_ = value; } inline void RuleStmt::set_instead(bool value) { _internal_set_instead(value); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.instead) } // repeated .pg_query.Node actions = 6 [json_name = "actions"]; inline int RuleStmt::_internal_actions_size() const { return actions_.size(); } inline int RuleStmt::actions_size() const { return _internal_actions_size(); } inline void RuleStmt::clear_actions() { actions_.Clear(); } inline ::pg_query::Node* RuleStmt::mutable_actions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RuleStmt.actions) return actions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RuleStmt::mutable_actions() { // @@protoc_insertion_point(field_mutable_list:pg_query.RuleStmt.actions) return &actions_; } inline const ::pg_query::Node& RuleStmt::_internal_actions(int index) const { return actions_.Get(index); } inline const ::pg_query::Node& RuleStmt::actions(int index) const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.actions) return _internal_actions(index); } inline ::pg_query::Node* RuleStmt::_internal_add_actions() { return actions_.Add(); } inline ::pg_query::Node* RuleStmt::add_actions() { // @@protoc_insertion_point(field_add:pg_query.RuleStmt.actions) return _internal_add_actions(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RuleStmt::actions() const { // @@protoc_insertion_point(field_list:pg_query.RuleStmt.actions) return actions_; } // bool replace = 7 [json_name = "replace"]; inline void RuleStmt::clear_replace() { replace_ = false; } inline bool RuleStmt::_internal_replace() const { return replace_; } inline bool RuleStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.RuleStmt.replace) return _internal_replace(); } inline void RuleStmt::_internal_set_replace(bool value) { replace_ = value; } inline void RuleStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.RuleStmt.replace) } // ------------------------------------------------------------------- // NotifyStmt // string conditionname = 1 [json_name = "conditionname"]; inline void NotifyStmt::clear_conditionname() { conditionname_.ClearToEmpty(); } inline const std::string& NotifyStmt::conditionname() const { // @@protoc_insertion_point(field_get:pg_query.NotifyStmt.conditionname) return _internal_conditionname(); } inline void NotifyStmt::set_conditionname(const std::string& value) { _internal_set_conditionname(value); // @@protoc_insertion_point(field_set:pg_query.NotifyStmt.conditionname) } inline std::string* NotifyStmt::mutable_conditionname() { // @@protoc_insertion_point(field_mutable:pg_query.NotifyStmt.conditionname) return _internal_mutable_conditionname(); } inline const std::string& NotifyStmt::_internal_conditionname() const { return conditionname_.Get(); } inline void NotifyStmt::_internal_set_conditionname(const std::string& value) { conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void NotifyStmt::set_conditionname(std::string&& value) { conditionname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.NotifyStmt.conditionname) } inline void NotifyStmt::set_conditionname(const char* value) { GOOGLE_DCHECK(value != nullptr); conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.NotifyStmt.conditionname) } inline void NotifyStmt::set_conditionname(const char* value, size_t size) { conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.NotifyStmt.conditionname) } inline std::string* NotifyStmt::_internal_mutable_conditionname() { return conditionname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* NotifyStmt::release_conditionname() { // @@protoc_insertion_point(field_release:pg_query.NotifyStmt.conditionname) return conditionname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void NotifyStmt::set_allocated_conditionname(std::string* conditionname) { if (conditionname != nullptr) { } else { } conditionname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conditionname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.NotifyStmt.conditionname) } // string payload = 2 [json_name = "payload"]; inline void NotifyStmt::clear_payload() { payload_.ClearToEmpty(); } inline const std::string& NotifyStmt::payload() const { // @@protoc_insertion_point(field_get:pg_query.NotifyStmt.payload) return _internal_payload(); } inline void NotifyStmt::set_payload(const std::string& value) { _internal_set_payload(value); // @@protoc_insertion_point(field_set:pg_query.NotifyStmt.payload) } inline std::string* NotifyStmt::mutable_payload() { // @@protoc_insertion_point(field_mutable:pg_query.NotifyStmt.payload) return _internal_mutable_payload(); } inline const std::string& NotifyStmt::_internal_payload() const { return payload_.Get(); } inline void NotifyStmt::_internal_set_payload(const std::string& value) { payload_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void NotifyStmt::set_payload(std::string&& value) { payload_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.NotifyStmt.payload) } inline void NotifyStmt::set_payload(const char* value) { GOOGLE_DCHECK(value != nullptr); payload_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.NotifyStmt.payload) } inline void NotifyStmt::set_payload(const char* value, size_t size) { payload_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.NotifyStmt.payload) } inline std::string* NotifyStmt::_internal_mutable_payload() { return payload_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* NotifyStmt::release_payload() { // @@protoc_insertion_point(field_release:pg_query.NotifyStmt.payload) return payload_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void NotifyStmt::set_allocated_payload(std::string* payload) { if (payload != nullptr) { } else { } payload_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), payload, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.NotifyStmt.payload) } // ------------------------------------------------------------------- // ListenStmt // string conditionname = 1 [json_name = "conditionname"]; inline void ListenStmt::clear_conditionname() { conditionname_.ClearToEmpty(); } inline const std::string& ListenStmt::conditionname() const { // @@protoc_insertion_point(field_get:pg_query.ListenStmt.conditionname) return _internal_conditionname(); } inline void ListenStmt::set_conditionname(const std::string& value) { _internal_set_conditionname(value); // @@protoc_insertion_point(field_set:pg_query.ListenStmt.conditionname) } inline std::string* ListenStmt::mutable_conditionname() { // @@protoc_insertion_point(field_mutable:pg_query.ListenStmt.conditionname) return _internal_mutable_conditionname(); } inline const std::string& ListenStmt::_internal_conditionname() const { return conditionname_.Get(); } inline void ListenStmt::_internal_set_conditionname(const std::string& value) { conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ListenStmt::set_conditionname(std::string&& value) { conditionname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ListenStmt.conditionname) } inline void ListenStmt::set_conditionname(const char* value) { GOOGLE_DCHECK(value != nullptr); conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ListenStmt.conditionname) } inline void ListenStmt::set_conditionname(const char* value, size_t size) { conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ListenStmt.conditionname) } inline std::string* ListenStmt::_internal_mutable_conditionname() { return conditionname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ListenStmt::release_conditionname() { // @@protoc_insertion_point(field_release:pg_query.ListenStmt.conditionname) return conditionname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ListenStmt::set_allocated_conditionname(std::string* conditionname) { if (conditionname != nullptr) { } else { } conditionname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conditionname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ListenStmt.conditionname) } // ------------------------------------------------------------------- // UnlistenStmt // string conditionname = 1 [json_name = "conditionname"]; inline void UnlistenStmt::clear_conditionname() { conditionname_.ClearToEmpty(); } inline const std::string& UnlistenStmt::conditionname() const { // @@protoc_insertion_point(field_get:pg_query.UnlistenStmt.conditionname) return _internal_conditionname(); } inline void UnlistenStmt::set_conditionname(const std::string& value) { _internal_set_conditionname(value); // @@protoc_insertion_point(field_set:pg_query.UnlistenStmt.conditionname) } inline std::string* UnlistenStmt::mutable_conditionname() { // @@protoc_insertion_point(field_mutable:pg_query.UnlistenStmt.conditionname) return _internal_mutable_conditionname(); } inline const std::string& UnlistenStmt::_internal_conditionname() const { return conditionname_.Get(); } inline void UnlistenStmt::_internal_set_conditionname(const std::string& value) { conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void UnlistenStmt::set_conditionname(std::string&& value) { conditionname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.UnlistenStmt.conditionname) } inline void UnlistenStmt::set_conditionname(const char* value) { GOOGLE_DCHECK(value != nullptr); conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.UnlistenStmt.conditionname) } inline void UnlistenStmt::set_conditionname(const char* value, size_t size) { conditionname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.UnlistenStmt.conditionname) } inline std::string* UnlistenStmt::_internal_mutable_conditionname() { return conditionname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* UnlistenStmt::release_conditionname() { // @@protoc_insertion_point(field_release:pg_query.UnlistenStmt.conditionname) return conditionname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void UnlistenStmt::set_allocated_conditionname(std::string* conditionname) { if (conditionname != nullptr) { } else { } conditionname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conditionname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.UnlistenStmt.conditionname) } // ------------------------------------------------------------------- // TransactionStmt // .pg_query.TransactionStmtKind kind = 1 [json_name = "kind"]; inline void TransactionStmt::clear_kind() { kind_ = 0; } inline ::pg_query::TransactionStmtKind TransactionStmt::_internal_kind() const { return static_cast< ::pg_query::TransactionStmtKind >(kind_); } inline ::pg_query::TransactionStmtKind TransactionStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.kind) return _internal_kind(); } inline void TransactionStmt::_internal_set_kind(::pg_query::TransactionStmtKind value) { kind_ = value; } inline void TransactionStmt::set_kind(::pg_query::TransactionStmtKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.kind) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int TransactionStmt::_internal_options_size() const { return options_.size(); } inline int TransactionStmt::options_size() const { return _internal_options_size(); } inline void TransactionStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* TransactionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TransactionStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TransactionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.TransactionStmt.options) return &options_; } inline const ::pg_query::Node& TransactionStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& TransactionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.options) return _internal_options(index); } inline ::pg_query::Node* TransactionStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* TransactionStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.TransactionStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TransactionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.TransactionStmt.options) return options_; } // string savepoint_name = 3 [json_name = "savepoint_name"]; inline void TransactionStmt::clear_savepoint_name() { savepoint_name_.ClearToEmpty(); } inline const std::string& TransactionStmt::savepoint_name() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.savepoint_name) return _internal_savepoint_name(); } inline void TransactionStmt::set_savepoint_name(const std::string& value) { _internal_set_savepoint_name(value); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.savepoint_name) } inline std::string* TransactionStmt::mutable_savepoint_name() { // @@protoc_insertion_point(field_mutable:pg_query.TransactionStmt.savepoint_name) return _internal_mutable_savepoint_name(); } inline const std::string& TransactionStmt::_internal_savepoint_name() const { return savepoint_name_.Get(); } inline void TransactionStmt::_internal_set_savepoint_name(const std::string& value) { savepoint_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void TransactionStmt::set_savepoint_name(std::string&& value) { savepoint_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.TransactionStmt.savepoint_name) } inline void TransactionStmt::set_savepoint_name(const char* value) { GOOGLE_DCHECK(value != nullptr); savepoint_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.TransactionStmt.savepoint_name) } inline void TransactionStmt::set_savepoint_name(const char* value, size_t size) { savepoint_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.TransactionStmt.savepoint_name) } inline std::string* TransactionStmt::_internal_mutable_savepoint_name() { return savepoint_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* TransactionStmt::release_savepoint_name() { // @@protoc_insertion_point(field_release:pg_query.TransactionStmt.savepoint_name) return savepoint_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void TransactionStmt::set_allocated_savepoint_name(std::string* savepoint_name) { if (savepoint_name != nullptr) { } else { } savepoint_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), savepoint_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.TransactionStmt.savepoint_name) } // string gid = 4 [json_name = "gid"]; inline void TransactionStmt::clear_gid() { gid_.ClearToEmpty(); } inline const std::string& TransactionStmt::gid() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.gid) return _internal_gid(); } inline void TransactionStmt::set_gid(const std::string& value) { _internal_set_gid(value); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.gid) } inline std::string* TransactionStmt::mutable_gid() { // @@protoc_insertion_point(field_mutable:pg_query.TransactionStmt.gid) return _internal_mutable_gid(); } inline const std::string& TransactionStmt::_internal_gid() const { return gid_.Get(); } inline void TransactionStmt::_internal_set_gid(const std::string& value) { gid_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void TransactionStmt::set_gid(std::string&& value) { gid_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.TransactionStmt.gid) } inline void TransactionStmt::set_gid(const char* value) { GOOGLE_DCHECK(value != nullptr); gid_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.TransactionStmt.gid) } inline void TransactionStmt::set_gid(const char* value, size_t size) { gid_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.TransactionStmt.gid) } inline std::string* TransactionStmt::_internal_mutable_gid() { return gid_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* TransactionStmt::release_gid() { // @@protoc_insertion_point(field_release:pg_query.TransactionStmt.gid) return gid_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void TransactionStmt::set_allocated_gid(std::string* gid) { if (gid != nullptr) { } else { } gid_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), gid, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.TransactionStmt.gid) } // bool chain = 5 [json_name = "chain"]; inline void TransactionStmt::clear_chain() { chain_ = false; } inline bool TransactionStmt::_internal_chain() const { return chain_; } inline bool TransactionStmt::chain() const { // @@protoc_insertion_point(field_get:pg_query.TransactionStmt.chain) return _internal_chain(); } inline void TransactionStmt::_internal_set_chain(bool value) { chain_ = value; } inline void TransactionStmt::set_chain(bool value) { _internal_set_chain(value); // @@protoc_insertion_point(field_set:pg_query.TransactionStmt.chain) } // ------------------------------------------------------------------- // ViewStmt // .pg_query.RangeVar view = 1 [json_name = "view"]; inline bool ViewStmt::_internal_has_view() const { return this != internal_default_instance() && view_ != nullptr; } inline bool ViewStmt::has_view() const { return _internal_has_view(); } inline void ViewStmt::clear_view() { if (GetArena() == nullptr && view_ != nullptr) { delete view_; } view_ = nullptr; } inline const ::pg_query::RangeVar& ViewStmt::_internal_view() const { const ::pg_query::RangeVar* p = view_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& ViewStmt::view() const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.view) return _internal_view(); } inline void ViewStmt::unsafe_arena_set_allocated_view( ::pg_query::RangeVar* view) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(view_); } view_ = view; if (view) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ViewStmt.view) } inline ::pg_query::RangeVar* ViewStmt::release_view() { ::pg_query::RangeVar* temp = view_; view_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* ViewStmt::unsafe_arena_release_view() { // @@protoc_insertion_point(field_release:pg_query.ViewStmt.view) ::pg_query::RangeVar* temp = view_; view_ = nullptr; return temp; } inline ::pg_query::RangeVar* ViewStmt::_internal_mutable_view() { if (view_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); view_ = p; } return view_; } inline ::pg_query::RangeVar* ViewStmt::mutable_view() { // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.view) return _internal_mutable_view(); } inline void ViewStmt::set_allocated_view(::pg_query::RangeVar* view) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete view_; } if (view) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(view); if (message_arena != submessage_arena) { view = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, view, submessage_arena); } } else { } view_ = view; // @@protoc_insertion_point(field_set_allocated:pg_query.ViewStmt.view) } // repeated .pg_query.Node aliases = 2 [json_name = "aliases"]; inline int ViewStmt::_internal_aliases_size() const { return aliases_.size(); } inline int ViewStmt::aliases_size() const { return _internal_aliases_size(); } inline void ViewStmt::clear_aliases() { aliases_.Clear(); } inline ::pg_query::Node* ViewStmt::mutable_aliases(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.aliases) return aliases_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ViewStmt::mutable_aliases() { // @@protoc_insertion_point(field_mutable_list:pg_query.ViewStmt.aliases) return &aliases_; } inline const ::pg_query::Node& ViewStmt::_internal_aliases(int index) const { return aliases_.Get(index); } inline const ::pg_query::Node& ViewStmt::aliases(int index) const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.aliases) return _internal_aliases(index); } inline ::pg_query::Node* ViewStmt::_internal_add_aliases() { return aliases_.Add(); } inline ::pg_query::Node* ViewStmt::add_aliases() { // @@protoc_insertion_point(field_add:pg_query.ViewStmt.aliases) return _internal_add_aliases(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ViewStmt::aliases() const { // @@protoc_insertion_point(field_list:pg_query.ViewStmt.aliases) return aliases_; } // .pg_query.Node query = 3 [json_name = "query"]; inline bool ViewStmt::_internal_has_query() const { return this != internal_default_instance() && query_ != nullptr; } inline bool ViewStmt::has_query() const { return _internal_has_query(); } inline void ViewStmt::clear_query() { if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; } inline const ::pg_query::Node& ViewStmt::_internal_query() const { const ::pg_query::Node* p = query_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ViewStmt::query() const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.query) return _internal_query(); } inline void ViewStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); } query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ViewStmt.query) } inline ::pg_query::Node* ViewStmt::release_query() { ::pg_query::Node* temp = query_; query_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ViewStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.ViewStmt.query) ::pg_query::Node* temp = query_; query_ = nullptr; return temp; } inline ::pg_query::Node* ViewStmt::_internal_mutable_query() { if (query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); query_ = p; } return query_; } inline ::pg_query::Node* ViewStmt::mutable_query() { // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.query) return _internal_mutable_query(); } inline void ViewStmt::set_allocated_query(::pg_query::Node* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.ViewStmt.query) } // bool replace = 4 [json_name = "replace"]; inline void ViewStmt::clear_replace() { replace_ = false; } inline bool ViewStmt::_internal_replace() const { return replace_; } inline bool ViewStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.replace) return _internal_replace(); } inline void ViewStmt::_internal_set_replace(bool value) { replace_ = value; } inline void ViewStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.ViewStmt.replace) } // repeated .pg_query.Node options = 5 [json_name = "options"]; inline int ViewStmt::_internal_options_size() const { return options_.size(); } inline int ViewStmt::options_size() const { return _internal_options_size(); } inline void ViewStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* ViewStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ViewStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ViewStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.ViewStmt.options) return &options_; } inline const ::pg_query::Node& ViewStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& ViewStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.options) return _internal_options(index); } inline ::pg_query::Node* ViewStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* ViewStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.ViewStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ViewStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.ViewStmt.options) return options_; } // .pg_query.ViewCheckOption with_check_option = 6 [json_name = "withCheckOption"]; inline void ViewStmt::clear_with_check_option() { with_check_option_ = 0; } inline ::pg_query::ViewCheckOption ViewStmt::_internal_with_check_option() const { return static_cast< ::pg_query::ViewCheckOption >(with_check_option_); } inline ::pg_query::ViewCheckOption ViewStmt::with_check_option() const { // @@protoc_insertion_point(field_get:pg_query.ViewStmt.with_check_option) return _internal_with_check_option(); } inline void ViewStmt::_internal_set_with_check_option(::pg_query::ViewCheckOption value) { with_check_option_ = value; } inline void ViewStmt::set_with_check_option(::pg_query::ViewCheckOption value) { _internal_set_with_check_option(value); // @@protoc_insertion_point(field_set:pg_query.ViewStmt.with_check_option) } // ------------------------------------------------------------------- // LoadStmt // string filename = 1 [json_name = "filename"]; inline void LoadStmt::clear_filename() { filename_.ClearToEmpty(); } inline const std::string& LoadStmt::filename() const { // @@protoc_insertion_point(field_get:pg_query.LoadStmt.filename) return _internal_filename(); } inline void LoadStmt::set_filename(const std::string& value) { _internal_set_filename(value); // @@protoc_insertion_point(field_set:pg_query.LoadStmt.filename) } inline std::string* LoadStmt::mutable_filename() { // @@protoc_insertion_point(field_mutable:pg_query.LoadStmt.filename) return _internal_mutable_filename(); } inline const std::string& LoadStmt::_internal_filename() const { return filename_.Get(); } inline void LoadStmt::_internal_set_filename(const std::string& value) { filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void LoadStmt::set_filename(std::string&& value) { filename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.LoadStmt.filename) } inline void LoadStmt::set_filename(const char* value) { GOOGLE_DCHECK(value != nullptr); filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.LoadStmt.filename) } inline void LoadStmt::set_filename(const char* value, size_t size) { filename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.LoadStmt.filename) } inline std::string* LoadStmt::_internal_mutable_filename() { return filename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* LoadStmt::release_filename() { // @@protoc_insertion_point(field_release:pg_query.LoadStmt.filename) return filename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void LoadStmt::set_allocated_filename(std::string* filename) { if (filename != nullptr) { } else { } filename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), filename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.LoadStmt.filename) } // ------------------------------------------------------------------- // CreateDomainStmt // repeated .pg_query.Node domainname = 1 [json_name = "domainname"]; inline int CreateDomainStmt::_internal_domainname_size() const { return domainname_.size(); } inline int CreateDomainStmt::domainname_size() const { return _internal_domainname_size(); } inline void CreateDomainStmt::clear_domainname() { domainname_.Clear(); } inline ::pg_query::Node* CreateDomainStmt::mutable_domainname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.domainname) return domainname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateDomainStmt::mutable_domainname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateDomainStmt.domainname) return &domainname_; } inline const ::pg_query::Node& CreateDomainStmt::_internal_domainname(int index) const { return domainname_.Get(index); } inline const ::pg_query::Node& CreateDomainStmt::domainname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.domainname) return _internal_domainname(index); } inline ::pg_query::Node* CreateDomainStmt::_internal_add_domainname() { return domainname_.Add(); } inline ::pg_query::Node* CreateDomainStmt::add_domainname() { // @@protoc_insertion_point(field_add:pg_query.CreateDomainStmt.domainname) return _internal_add_domainname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateDomainStmt::domainname() const { // @@protoc_insertion_point(field_list:pg_query.CreateDomainStmt.domainname) return domainname_; } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; inline bool CreateDomainStmt::_internal_has_type_name() const { return this != internal_default_instance() && type_name_ != nullptr; } inline bool CreateDomainStmt::has_type_name() const { return _internal_has_type_name(); } inline void CreateDomainStmt::clear_type_name() { if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; } inline const ::pg_query::TypeName& CreateDomainStmt::_internal_type_name() const { const ::pg_query::TypeName* p = type_name_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateDomainStmt::type_name() const { // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.type_name) return _internal_type_name(); } inline void CreateDomainStmt::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); } type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateDomainStmt.type_name) } inline ::pg_query::TypeName* CreateDomainStmt::release_type_name() { ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* CreateDomainStmt::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.CreateDomainStmt.type_name) ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateDomainStmt::_internal_mutable_type_name() { if (type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); type_name_ = p; } return type_name_; } inline ::pg_query::TypeName* CreateDomainStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.type_name) return _internal_mutable_type_name(); } inline void CreateDomainStmt::set_allocated_type_name(::pg_query::TypeName* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateDomainStmt.type_name) } // .pg_query.CollateClause coll_clause = 3 [json_name = "collClause"]; inline bool CreateDomainStmt::_internal_has_coll_clause() const { return this != internal_default_instance() && coll_clause_ != nullptr; } inline bool CreateDomainStmt::has_coll_clause() const { return _internal_has_coll_clause(); } inline void CreateDomainStmt::clear_coll_clause() { if (GetArena() == nullptr && coll_clause_ != nullptr) { delete coll_clause_; } coll_clause_ = nullptr; } inline const ::pg_query::CollateClause& CreateDomainStmt::_internal_coll_clause() const { const ::pg_query::CollateClause* p = coll_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_CollateClause_default_instance_); } inline const ::pg_query::CollateClause& CreateDomainStmt::coll_clause() const { // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.coll_clause) return _internal_coll_clause(); } inline void CreateDomainStmt::unsafe_arena_set_allocated_coll_clause( ::pg_query::CollateClause* coll_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(coll_clause_); } coll_clause_ = coll_clause; if (coll_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateDomainStmt.coll_clause) } inline ::pg_query::CollateClause* CreateDomainStmt::release_coll_clause() { ::pg_query::CollateClause* temp = coll_clause_; coll_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::CollateClause* CreateDomainStmt::unsafe_arena_release_coll_clause() { // @@protoc_insertion_point(field_release:pg_query.CreateDomainStmt.coll_clause) ::pg_query::CollateClause* temp = coll_clause_; coll_clause_ = nullptr; return temp; } inline ::pg_query::CollateClause* CreateDomainStmt::_internal_mutable_coll_clause() { if (coll_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CollateClause>(GetArena()); coll_clause_ = p; } return coll_clause_; } inline ::pg_query::CollateClause* CreateDomainStmt::mutable_coll_clause() { // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.coll_clause) return _internal_mutable_coll_clause(); } inline void CreateDomainStmt::set_allocated_coll_clause(::pg_query::CollateClause* coll_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete coll_clause_; } if (coll_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(coll_clause); if (message_arena != submessage_arena) { coll_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, coll_clause, submessage_arena); } } else { } coll_clause_ = coll_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateDomainStmt.coll_clause) } // repeated .pg_query.Node constraints = 4 [json_name = "constraints"]; inline int CreateDomainStmt::_internal_constraints_size() const { return constraints_.size(); } inline int CreateDomainStmt::constraints_size() const { return _internal_constraints_size(); } inline void CreateDomainStmt::clear_constraints() { constraints_.Clear(); } inline ::pg_query::Node* CreateDomainStmt::mutable_constraints(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateDomainStmt.constraints) return constraints_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateDomainStmt::mutable_constraints() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateDomainStmt.constraints) return &constraints_; } inline const ::pg_query::Node& CreateDomainStmt::_internal_constraints(int index) const { return constraints_.Get(index); } inline const ::pg_query::Node& CreateDomainStmt::constraints(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateDomainStmt.constraints) return _internal_constraints(index); } inline ::pg_query::Node* CreateDomainStmt::_internal_add_constraints() { return constraints_.Add(); } inline ::pg_query::Node* CreateDomainStmt::add_constraints() { // @@protoc_insertion_point(field_add:pg_query.CreateDomainStmt.constraints) return _internal_add_constraints(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateDomainStmt::constraints() const { // @@protoc_insertion_point(field_list:pg_query.CreateDomainStmt.constraints) return constraints_; } // ------------------------------------------------------------------- // CreatedbStmt // string dbname = 1 [json_name = "dbname"]; inline void CreatedbStmt::clear_dbname() { dbname_.ClearToEmpty(); } inline const std::string& CreatedbStmt::dbname() const { // @@protoc_insertion_point(field_get:pg_query.CreatedbStmt.dbname) return _internal_dbname(); } inline void CreatedbStmt::set_dbname(const std::string& value) { _internal_set_dbname(value); // @@protoc_insertion_point(field_set:pg_query.CreatedbStmt.dbname) } inline std::string* CreatedbStmt::mutable_dbname() { // @@protoc_insertion_point(field_mutable:pg_query.CreatedbStmt.dbname) return _internal_mutable_dbname(); } inline const std::string& CreatedbStmt::_internal_dbname() const { return dbname_.Get(); } inline void CreatedbStmt::_internal_set_dbname(const std::string& value) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreatedbStmt::set_dbname(std::string&& value) { dbname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreatedbStmt.dbname) } inline void CreatedbStmt::set_dbname(const char* value) { GOOGLE_DCHECK(value != nullptr); dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreatedbStmt.dbname) } inline void CreatedbStmt::set_dbname(const char* value, size_t size) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreatedbStmt.dbname) } inline std::string* CreatedbStmt::_internal_mutable_dbname() { return dbname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreatedbStmt::release_dbname() { // @@protoc_insertion_point(field_release:pg_query.CreatedbStmt.dbname) return dbname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreatedbStmt::set_allocated_dbname(std::string* dbname) { if (dbname != nullptr) { } else { } dbname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), dbname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreatedbStmt.dbname) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int CreatedbStmt::_internal_options_size() const { return options_.size(); } inline int CreatedbStmt::options_size() const { return _internal_options_size(); } inline void CreatedbStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreatedbStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatedbStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatedbStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatedbStmt.options) return &options_; } inline const ::pg_query::Node& CreatedbStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreatedbStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatedbStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreatedbStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreatedbStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreatedbStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatedbStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreatedbStmt.options) return options_; } // ------------------------------------------------------------------- // DropdbStmt // string dbname = 1 [json_name = "dbname"]; inline void DropdbStmt::clear_dbname() { dbname_.ClearToEmpty(); } inline const std::string& DropdbStmt::dbname() const { // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.dbname) return _internal_dbname(); } inline void DropdbStmt::set_dbname(const std::string& value) { _internal_set_dbname(value); // @@protoc_insertion_point(field_set:pg_query.DropdbStmt.dbname) } inline std::string* DropdbStmt::mutable_dbname() { // @@protoc_insertion_point(field_mutable:pg_query.DropdbStmt.dbname) return _internal_mutable_dbname(); } inline const std::string& DropdbStmt::_internal_dbname() const { return dbname_.Get(); } inline void DropdbStmt::_internal_set_dbname(const std::string& value) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void DropdbStmt::set_dbname(std::string&& value) { dbname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.DropdbStmt.dbname) } inline void DropdbStmt::set_dbname(const char* value) { GOOGLE_DCHECK(value != nullptr); dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.DropdbStmt.dbname) } inline void DropdbStmt::set_dbname(const char* value, size_t size) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.DropdbStmt.dbname) } inline std::string* DropdbStmt::_internal_mutable_dbname() { return dbname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* DropdbStmt::release_dbname() { // @@protoc_insertion_point(field_release:pg_query.DropdbStmt.dbname) return dbname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void DropdbStmt::set_allocated_dbname(std::string* dbname) { if (dbname != nullptr) { } else { } dbname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), dbname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.DropdbStmt.dbname) } // bool missing_ok = 2 [json_name = "missing_ok"]; inline void DropdbStmt::clear_missing_ok() { missing_ok_ = false; } inline bool DropdbStmt::_internal_missing_ok() const { return missing_ok_; } inline bool DropdbStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.missing_ok) return _internal_missing_ok(); } inline void DropdbStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void DropdbStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropdbStmt.missing_ok) } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int DropdbStmt::_internal_options_size() const { return options_.size(); } inline int DropdbStmt::options_size() const { return _internal_options_size(); } inline void DropdbStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* DropdbStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DropdbStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DropdbStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.DropdbStmt.options) return &options_; } inline const ::pg_query::Node& DropdbStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& DropdbStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.DropdbStmt.options) return _internal_options(index); } inline ::pg_query::Node* DropdbStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* DropdbStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.DropdbStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DropdbStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.DropdbStmt.options) return options_; } // ------------------------------------------------------------------- // VacuumStmt // repeated .pg_query.Node options = 1 [json_name = "options"]; inline int VacuumStmt::_internal_options_size() const { return options_.size(); } inline int VacuumStmt::options_size() const { return _internal_options_size(); } inline void VacuumStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* VacuumStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.VacuumStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* VacuumStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumStmt.options) return &options_; } inline const ::pg_query::Node& VacuumStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& VacuumStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.options) return _internal_options(index); } inline ::pg_query::Node* VacuumStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* VacuumStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.VacuumStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& VacuumStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.VacuumStmt.options) return options_; } // repeated .pg_query.Node rels = 2 [json_name = "rels"]; inline int VacuumStmt::_internal_rels_size() const { return rels_.size(); } inline int VacuumStmt::rels_size() const { return _internal_rels_size(); } inline void VacuumStmt::clear_rels() { rels_.Clear(); } inline ::pg_query::Node* VacuumStmt::mutable_rels(int index) { // @@protoc_insertion_point(field_mutable:pg_query.VacuumStmt.rels) return rels_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* VacuumStmt::mutable_rels() { // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumStmt.rels) return &rels_; } inline const ::pg_query::Node& VacuumStmt::_internal_rels(int index) const { return rels_.Get(index); } inline const ::pg_query::Node& VacuumStmt::rels(int index) const { // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.rels) return _internal_rels(index); } inline ::pg_query::Node* VacuumStmt::_internal_add_rels() { return rels_.Add(); } inline ::pg_query::Node* VacuumStmt::add_rels() { // @@protoc_insertion_point(field_add:pg_query.VacuumStmt.rels) return _internal_add_rels(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& VacuumStmt::rels() const { // @@protoc_insertion_point(field_list:pg_query.VacuumStmt.rels) return rels_; } // bool is_vacuumcmd = 3 [json_name = "is_vacuumcmd"]; inline void VacuumStmt::clear_is_vacuumcmd() { is_vacuumcmd_ = false; } inline bool VacuumStmt::_internal_is_vacuumcmd() const { return is_vacuumcmd_; } inline bool VacuumStmt::is_vacuumcmd() const { // @@protoc_insertion_point(field_get:pg_query.VacuumStmt.is_vacuumcmd) return _internal_is_vacuumcmd(); } inline void VacuumStmt::_internal_set_is_vacuumcmd(bool value) { is_vacuumcmd_ = value; } inline void VacuumStmt::set_is_vacuumcmd(bool value) { _internal_set_is_vacuumcmd(value); // @@protoc_insertion_point(field_set:pg_query.VacuumStmt.is_vacuumcmd) } // ------------------------------------------------------------------- // ExplainStmt // .pg_query.Node query = 1 [json_name = "query"]; inline bool ExplainStmt::_internal_has_query() const { return this != internal_default_instance() && query_ != nullptr; } inline bool ExplainStmt::has_query() const { return _internal_has_query(); } inline void ExplainStmt::clear_query() { if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; } inline const ::pg_query::Node& ExplainStmt::_internal_query() const { const ::pg_query::Node* p = query_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ExplainStmt::query() const { // @@protoc_insertion_point(field_get:pg_query.ExplainStmt.query) return _internal_query(); } inline void ExplainStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); } query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ExplainStmt.query) } inline ::pg_query::Node* ExplainStmt::release_query() { ::pg_query::Node* temp = query_; query_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ExplainStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.ExplainStmt.query) ::pg_query::Node* temp = query_; query_ = nullptr; return temp; } inline ::pg_query::Node* ExplainStmt::_internal_mutable_query() { if (query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); query_ = p; } return query_; } inline ::pg_query::Node* ExplainStmt::mutable_query() { // @@protoc_insertion_point(field_mutable:pg_query.ExplainStmt.query) return _internal_mutable_query(); } inline void ExplainStmt::set_allocated_query(::pg_query::Node* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.ExplainStmt.query) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int ExplainStmt::_internal_options_size() const { return options_.size(); } inline int ExplainStmt::options_size() const { return _internal_options_size(); } inline void ExplainStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* ExplainStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ExplainStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ExplainStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.ExplainStmt.options) return &options_; } inline const ::pg_query::Node& ExplainStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& ExplainStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.ExplainStmt.options) return _internal_options(index); } inline ::pg_query::Node* ExplainStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* ExplainStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.ExplainStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ExplainStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.ExplainStmt.options) return options_; } // ------------------------------------------------------------------- // CreateTableAsStmt // .pg_query.Node query = 1 [json_name = "query"]; inline bool CreateTableAsStmt::_internal_has_query() const { return this != internal_default_instance() && query_ != nullptr; } inline bool CreateTableAsStmt::has_query() const { return _internal_has_query(); } inline void CreateTableAsStmt::clear_query() { if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; } inline const ::pg_query::Node& CreateTableAsStmt::_internal_query() const { const ::pg_query::Node* p = query_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CreateTableAsStmt::query() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.query) return _internal_query(); } inline void CreateTableAsStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); } query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableAsStmt.query) } inline ::pg_query::Node* CreateTableAsStmt::release_query() { ::pg_query::Node* temp = query_; query_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CreateTableAsStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.CreateTableAsStmt.query) ::pg_query::Node* temp = query_; query_ = nullptr; return temp; } inline ::pg_query::Node* CreateTableAsStmt::_internal_mutable_query() { if (query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); query_ = p; } return query_; } inline ::pg_query::Node* CreateTableAsStmt::mutable_query() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTableAsStmt.query) return _internal_mutable_query(); } inline void CreateTableAsStmt::set_allocated_query(::pg_query::Node* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableAsStmt.query) } // .pg_query.IntoClause into = 2 [json_name = "into"]; inline bool CreateTableAsStmt::_internal_has_into() const { return this != internal_default_instance() && into_ != nullptr; } inline bool CreateTableAsStmt::has_into() const { return _internal_has_into(); } inline void CreateTableAsStmt::clear_into() { if (GetArena() == nullptr && into_ != nullptr) { delete into_; } into_ = nullptr; } inline const ::pg_query::IntoClause& CreateTableAsStmt::_internal_into() const { const ::pg_query::IntoClause* p = into_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_IntoClause_default_instance_); } inline const ::pg_query::IntoClause& CreateTableAsStmt::into() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.into) return _internal_into(); } inline void CreateTableAsStmt::unsafe_arena_set_allocated_into( ::pg_query::IntoClause* into) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(into_); } into_ = into; if (into) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableAsStmt.into) } inline ::pg_query::IntoClause* CreateTableAsStmt::release_into() { ::pg_query::IntoClause* temp = into_; into_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::IntoClause* CreateTableAsStmt::unsafe_arena_release_into() { // @@protoc_insertion_point(field_release:pg_query.CreateTableAsStmt.into) ::pg_query::IntoClause* temp = into_; into_ = nullptr; return temp; } inline ::pg_query::IntoClause* CreateTableAsStmt::_internal_mutable_into() { if (into_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::IntoClause>(GetArena()); into_ = p; } return into_; } inline ::pg_query::IntoClause* CreateTableAsStmt::mutable_into() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTableAsStmt.into) return _internal_mutable_into(); } inline void CreateTableAsStmt::set_allocated_into(::pg_query::IntoClause* into) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete into_; } if (into) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(into); if (message_arena != submessage_arena) { into = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, into, submessage_arena); } } else { } into_ = into; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableAsStmt.into) } // .pg_query.ObjectType relkind = 3 [json_name = "relkind"]; inline void CreateTableAsStmt::clear_relkind() { relkind_ = 0; } inline ::pg_query::ObjectType CreateTableAsStmt::_internal_relkind() const { return static_cast< ::pg_query::ObjectType >(relkind_); } inline ::pg_query::ObjectType CreateTableAsStmt::relkind() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.relkind) return _internal_relkind(); } inline void CreateTableAsStmt::_internal_set_relkind(::pg_query::ObjectType value) { relkind_ = value; } inline void CreateTableAsStmt::set_relkind(::pg_query::ObjectType value) { _internal_set_relkind(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.relkind) } // bool is_select_into = 4 [json_name = "is_select_into"]; inline void CreateTableAsStmt::clear_is_select_into() { is_select_into_ = false; } inline bool CreateTableAsStmt::_internal_is_select_into() const { return is_select_into_; } inline bool CreateTableAsStmt::is_select_into() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.is_select_into) return _internal_is_select_into(); } inline void CreateTableAsStmt::_internal_set_is_select_into(bool value) { is_select_into_ = value; } inline void CreateTableAsStmt::set_is_select_into(bool value) { _internal_set_is_select_into(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.is_select_into) } // bool if_not_exists = 5 [json_name = "if_not_exists"]; inline void CreateTableAsStmt::clear_if_not_exists() { if_not_exists_ = false; } inline bool CreateTableAsStmt::_internal_if_not_exists() const { return if_not_exists_; } inline bool CreateTableAsStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableAsStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateTableAsStmt::_internal_set_if_not_exists(bool value) { if_not_exists_ = value; } inline void CreateTableAsStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableAsStmt.if_not_exists) } // ------------------------------------------------------------------- // CreateSeqStmt // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; inline bool CreateSeqStmt::_internal_has_sequence() const { return this != internal_default_instance() && sequence_ != nullptr; } inline bool CreateSeqStmt::has_sequence() const { return _internal_has_sequence(); } inline void CreateSeqStmt::clear_sequence() { if (GetArena() == nullptr && sequence_ != nullptr) { delete sequence_; } sequence_ = nullptr; } inline const ::pg_query::RangeVar& CreateSeqStmt::_internal_sequence() const { const ::pg_query::RangeVar* p = sequence_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CreateSeqStmt::sequence() const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.sequence) return _internal_sequence(); } inline void CreateSeqStmt::unsafe_arena_set_allocated_sequence( ::pg_query::RangeVar* sequence) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(sequence_); } sequence_ = sequence; if (sequence) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateSeqStmt.sequence) } inline ::pg_query::RangeVar* CreateSeqStmt::release_sequence() { ::pg_query::RangeVar* temp = sequence_; sequence_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* CreateSeqStmt::unsafe_arena_release_sequence() { // @@protoc_insertion_point(field_release:pg_query.CreateSeqStmt.sequence) ::pg_query::RangeVar* temp = sequence_; sequence_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateSeqStmt::_internal_mutable_sequence() { if (sequence_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); sequence_ = p; } return sequence_; } inline ::pg_query::RangeVar* CreateSeqStmt::mutable_sequence() { // @@protoc_insertion_point(field_mutable:pg_query.CreateSeqStmt.sequence) return _internal_mutable_sequence(); } inline void CreateSeqStmt::set_allocated_sequence(::pg_query::RangeVar* sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete sequence_; } if (sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sequence); if (message_arena != submessage_arena) { sequence = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sequence, submessage_arena); } } else { } sequence_ = sequence; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSeqStmt.sequence) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int CreateSeqStmt::_internal_options_size() const { return options_.size(); } inline int CreateSeqStmt::options_size() const { return _internal_options_size(); } inline void CreateSeqStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateSeqStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateSeqStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateSeqStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSeqStmt.options) return &options_; } inline const ::pg_query::Node& CreateSeqStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateSeqStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateSeqStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateSeqStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateSeqStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateSeqStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateSeqStmt.options) return options_; } // uint32 owner_id = 3 [json_name = "ownerId"]; inline void CreateSeqStmt::clear_owner_id() { owner_id_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CreateSeqStmt::_internal_owner_id() const { return owner_id_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 CreateSeqStmt::owner_id() const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.owner_id) return _internal_owner_id(); } inline void CreateSeqStmt::_internal_set_owner_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { owner_id_ = value; } inline void CreateSeqStmt::set_owner_id(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_owner_id(value); // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.owner_id) } // bool for_identity = 4 [json_name = "for_identity"]; inline void CreateSeqStmt::clear_for_identity() { for_identity_ = false; } inline bool CreateSeqStmt::_internal_for_identity() const { return for_identity_; } inline bool CreateSeqStmt::for_identity() const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.for_identity) return _internal_for_identity(); } inline void CreateSeqStmt::_internal_set_for_identity(bool value) { for_identity_ = value; } inline void CreateSeqStmt::set_for_identity(bool value) { _internal_set_for_identity(value); // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.for_identity) } // bool if_not_exists = 5 [json_name = "if_not_exists"]; inline void CreateSeqStmt::clear_if_not_exists() { if_not_exists_ = false; } inline bool CreateSeqStmt::_internal_if_not_exists() const { return if_not_exists_; } inline bool CreateSeqStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateSeqStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateSeqStmt::_internal_set_if_not_exists(bool value) { if_not_exists_ = value; } inline void CreateSeqStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateSeqStmt.if_not_exists) } // ------------------------------------------------------------------- // AlterSeqStmt // .pg_query.RangeVar sequence = 1 [json_name = "sequence"]; inline bool AlterSeqStmt::_internal_has_sequence() const { return this != internal_default_instance() && sequence_ != nullptr; } inline bool AlterSeqStmt::has_sequence() const { return _internal_has_sequence(); } inline void AlterSeqStmt::clear_sequence() { if (GetArena() == nullptr && sequence_ != nullptr) { delete sequence_; } sequence_ = nullptr; } inline const ::pg_query::RangeVar& AlterSeqStmt::_internal_sequence() const { const ::pg_query::RangeVar* p = sequence_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterSeqStmt::sequence() const { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.sequence) return _internal_sequence(); } inline void AlterSeqStmt::unsafe_arena_set_allocated_sequence( ::pg_query::RangeVar* sequence) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(sequence_); } sequence_ = sequence; if (sequence) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterSeqStmt.sequence) } inline ::pg_query::RangeVar* AlterSeqStmt::release_sequence() { ::pg_query::RangeVar* temp = sequence_; sequence_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* AlterSeqStmt::unsafe_arena_release_sequence() { // @@protoc_insertion_point(field_release:pg_query.AlterSeqStmt.sequence) ::pg_query::RangeVar* temp = sequence_; sequence_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterSeqStmt::_internal_mutable_sequence() { if (sequence_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); sequence_ = p; } return sequence_; } inline ::pg_query::RangeVar* AlterSeqStmt::mutable_sequence() { // @@protoc_insertion_point(field_mutable:pg_query.AlterSeqStmt.sequence) return _internal_mutable_sequence(); } inline void AlterSeqStmt::set_allocated_sequence(::pg_query::RangeVar* sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete sequence_; } if (sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sequence); if (message_arena != submessage_arena) { sequence = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sequence, submessage_arena); } } else { } sequence_ = sequence; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSeqStmt.sequence) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterSeqStmt::_internal_options_size() const { return options_.size(); } inline int AlterSeqStmt::options_size() const { return _internal_options_size(); } inline void AlterSeqStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterSeqStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterSeqStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterSeqStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSeqStmt.options) return &options_; } inline const ::pg_query::Node& AlterSeqStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterSeqStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterSeqStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterSeqStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterSeqStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterSeqStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterSeqStmt.options) return options_; } // bool for_identity = 3 [json_name = "for_identity"]; inline void AlterSeqStmt::clear_for_identity() { for_identity_ = false; } inline bool AlterSeqStmt::_internal_for_identity() const { return for_identity_; } inline bool AlterSeqStmt::for_identity() const { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.for_identity) return _internal_for_identity(); } inline void AlterSeqStmt::_internal_set_for_identity(bool value) { for_identity_ = value; } inline void AlterSeqStmt::set_for_identity(bool value) { _internal_set_for_identity(value); // @@protoc_insertion_point(field_set:pg_query.AlterSeqStmt.for_identity) } // bool missing_ok = 4 [json_name = "missing_ok"]; inline void AlterSeqStmt::clear_missing_ok() { missing_ok_ = false; } inline bool AlterSeqStmt::_internal_missing_ok() const { return missing_ok_; } inline bool AlterSeqStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterSeqStmt.missing_ok) return _internal_missing_ok(); } inline void AlterSeqStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void AlterSeqStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterSeqStmt.missing_ok) } // ------------------------------------------------------------------- // VariableSetStmt // .pg_query.VariableSetKind kind = 1 [json_name = "kind"]; inline void VariableSetStmt::clear_kind() { kind_ = 0; } inline ::pg_query::VariableSetKind VariableSetStmt::_internal_kind() const { return static_cast< ::pg_query::VariableSetKind >(kind_); } inline ::pg_query::VariableSetKind VariableSetStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.kind) return _internal_kind(); } inline void VariableSetStmt::_internal_set_kind(::pg_query::VariableSetKind value) { kind_ = value; } inline void VariableSetStmt::set_kind(::pg_query::VariableSetKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.kind) } // string name = 2 [json_name = "name"]; inline void VariableSetStmt::clear_name() { name_.ClearToEmpty(); } inline const std::string& VariableSetStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.name) return _internal_name(); } inline void VariableSetStmt::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.name) } inline std::string* VariableSetStmt::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.VariableSetStmt.name) return _internal_mutable_name(); } inline const std::string& VariableSetStmt::_internal_name() const { return name_.Get(); } inline void VariableSetStmt::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void VariableSetStmt::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.VariableSetStmt.name) } inline void VariableSetStmt::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.VariableSetStmt.name) } inline void VariableSetStmt::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.VariableSetStmt.name) } inline std::string* VariableSetStmt::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* VariableSetStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.VariableSetStmt.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void VariableSetStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.VariableSetStmt.name) } // repeated .pg_query.Node args = 3 [json_name = "args"]; inline int VariableSetStmt::_internal_args_size() const { return args_.size(); } inline int VariableSetStmt::args_size() const { return _internal_args_size(); } inline void VariableSetStmt::clear_args() { args_.Clear(); } inline ::pg_query::Node* VariableSetStmt::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.VariableSetStmt.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* VariableSetStmt::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.VariableSetStmt.args) return &args_; } inline const ::pg_query::Node& VariableSetStmt::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& VariableSetStmt::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.args) return _internal_args(index); } inline ::pg_query::Node* VariableSetStmt::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* VariableSetStmt::add_args() { // @@protoc_insertion_point(field_add:pg_query.VariableSetStmt.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& VariableSetStmt::args() const { // @@protoc_insertion_point(field_list:pg_query.VariableSetStmt.args) return args_; } // bool is_local = 4 [json_name = "is_local"]; inline void VariableSetStmt::clear_is_local() { is_local_ = false; } inline bool VariableSetStmt::_internal_is_local() const { return is_local_; } inline bool VariableSetStmt::is_local() const { // @@protoc_insertion_point(field_get:pg_query.VariableSetStmt.is_local) return _internal_is_local(); } inline void VariableSetStmt::_internal_set_is_local(bool value) { is_local_ = value; } inline void VariableSetStmt::set_is_local(bool value) { _internal_set_is_local(value); // @@protoc_insertion_point(field_set:pg_query.VariableSetStmt.is_local) } // ------------------------------------------------------------------- // VariableShowStmt // string name = 1 [json_name = "name"]; inline void VariableShowStmt::clear_name() { name_.ClearToEmpty(); } inline const std::string& VariableShowStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.VariableShowStmt.name) return _internal_name(); } inline void VariableShowStmt::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.VariableShowStmt.name) } inline std::string* VariableShowStmt::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.VariableShowStmt.name) return _internal_mutable_name(); } inline const std::string& VariableShowStmt::_internal_name() const { return name_.Get(); } inline void VariableShowStmt::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void VariableShowStmt::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.VariableShowStmt.name) } inline void VariableShowStmt::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.VariableShowStmt.name) } inline void VariableShowStmt::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.VariableShowStmt.name) } inline std::string* VariableShowStmt::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* VariableShowStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.VariableShowStmt.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void VariableShowStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.VariableShowStmt.name) } // ------------------------------------------------------------------- // DiscardStmt // .pg_query.DiscardMode target = 1 [json_name = "target"]; inline void DiscardStmt::clear_target() { target_ = 0; } inline ::pg_query::DiscardMode DiscardStmt::_internal_target() const { return static_cast< ::pg_query::DiscardMode >(target_); } inline ::pg_query::DiscardMode DiscardStmt::target() const { // @@protoc_insertion_point(field_get:pg_query.DiscardStmt.target) return _internal_target(); } inline void DiscardStmt::_internal_set_target(::pg_query::DiscardMode value) { target_ = value; } inline void DiscardStmt::set_target(::pg_query::DiscardMode value) { _internal_set_target(value); // @@protoc_insertion_point(field_set:pg_query.DiscardStmt.target) } // ------------------------------------------------------------------- // CreateTrigStmt // string trigname = 1 [json_name = "trigname"]; inline void CreateTrigStmt::clear_trigname() { trigname_.ClearToEmpty(); } inline const std::string& CreateTrigStmt::trigname() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.trigname) return _internal_trigname(); } inline void CreateTrigStmt::set_trigname(const std::string& value) { _internal_set_trigname(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.trigname) } inline std::string* CreateTrigStmt::mutable_trigname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.trigname) return _internal_mutable_trigname(); } inline const std::string& CreateTrigStmt::_internal_trigname() const { return trigname_.Get(); } inline void CreateTrigStmt::_internal_set_trigname(const std::string& value) { trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateTrigStmt::set_trigname(std::string&& value) { trigname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateTrigStmt.trigname) } inline void CreateTrigStmt::set_trigname(const char* value) { GOOGLE_DCHECK(value != nullptr); trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateTrigStmt.trigname) } inline void CreateTrigStmt::set_trigname(const char* value, size_t size) { trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateTrigStmt.trigname) } inline std::string* CreateTrigStmt::_internal_mutable_trigname() { return trigname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateTrigStmt::release_trigname() { // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.trigname) return trigname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateTrigStmt::set_allocated_trigname(std::string* trigname) { if (trigname != nullptr) { } else { } trigname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), trigname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.trigname) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool CreateTrigStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool CreateTrigStmt::has_relation() const { return _internal_has_relation(); } inline void CreateTrigStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& CreateTrigStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CreateTrigStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.relation) return _internal_relation(); } inline void CreateTrigStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.relation) } inline ::pg_query::RangeVar* CreateTrigStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* CreateTrigStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateTrigStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* CreateTrigStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.relation) return _internal_mutable_relation(); } inline void CreateTrigStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.relation) } // repeated .pg_query.Node funcname = 3 [json_name = "funcname"]; inline int CreateTrigStmt::_internal_funcname_size() const { return funcname_.size(); } inline int CreateTrigStmt::funcname_size() const { return _internal_funcname_size(); } inline void CreateTrigStmt::clear_funcname() { funcname_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_funcname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.funcname) return funcname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateTrigStmt::mutable_funcname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.funcname) return &funcname_; } inline const ::pg_query::Node& CreateTrigStmt::_internal_funcname(int index) const { return funcname_.Get(index); } inline const ::pg_query::Node& CreateTrigStmt::funcname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.funcname) return _internal_funcname(index); } inline ::pg_query::Node* CreateTrigStmt::_internal_add_funcname() { return funcname_.Add(); } inline ::pg_query::Node* CreateTrigStmt::add_funcname() { // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.funcname) return _internal_add_funcname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateTrigStmt::funcname() const { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.funcname) return funcname_; } // repeated .pg_query.Node args = 4 [json_name = "args"]; inline int CreateTrigStmt::_internal_args_size() const { return args_.size(); } inline int CreateTrigStmt::args_size() const { return _internal_args_size(); } inline void CreateTrigStmt::clear_args() { args_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateTrigStmt::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.args) return &args_; } inline const ::pg_query::Node& CreateTrigStmt::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& CreateTrigStmt::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.args) return _internal_args(index); } inline ::pg_query::Node* CreateTrigStmt::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* CreateTrigStmt::add_args() { // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateTrigStmt::args() const { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.args) return args_; } // bool row = 5 [json_name = "row"]; inline void CreateTrigStmt::clear_row() { row_ = false; } inline bool CreateTrigStmt::_internal_row() const { return row_; } inline bool CreateTrigStmt::row() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.row) return _internal_row(); } inline void CreateTrigStmt::_internal_set_row(bool value) { row_ = value; } inline void CreateTrigStmt::set_row(bool value) { _internal_set_row(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.row) } // int32 timing = 6 [json_name = "timing"]; inline void CreateTrigStmt::clear_timing() { timing_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CreateTrigStmt::_internal_timing() const { return timing_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CreateTrigStmt::timing() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.timing) return _internal_timing(); } inline void CreateTrigStmt::_internal_set_timing(::PROTOBUF_NAMESPACE_ID::int32 value) { timing_ = value; } inline void CreateTrigStmt::set_timing(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_timing(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.timing) } // int32 events = 7 [json_name = "events"]; inline void CreateTrigStmt::clear_events() { events_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CreateTrigStmt::_internal_events() const { return events_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CreateTrigStmt::events() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.events) return _internal_events(); } inline void CreateTrigStmt::_internal_set_events(::PROTOBUF_NAMESPACE_ID::int32 value) { events_ = value; } inline void CreateTrigStmt::set_events(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_events(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.events) } // repeated .pg_query.Node columns = 8 [json_name = "columns"]; inline int CreateTrigStmt::_internal_columns_size() const { return columns_.size(); } inline int CreateTrigStmt::columns_size() const { return _internal_columns_size(); } inline void CreateTrigStmt::clear_columns() { columns_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_columns(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.columns) return columns_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateTrigStmt::mutable_columns() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.columns) return &columns_; } inline const ::pg_query::Node& CreateTrigStmt::_internal_columns(int index) const { return columns_.Get(index); } inline const ::pg_query::Node& CreateTrigStmt::columns(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.columns) return _internal_columns(index); } inline ::pg_query::Node* CreateTrigStmt::_internal_add_columns() { return columns_.Add(); } inline ::pg_query::Node* CreateTrigStmt::add_columns() { // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.columns) return _internal_add_columns(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateTrigStmt::columns() const { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.columns) return columns_; } // .pg_query.Node when_clause = 9 [json_name = "whenClause"]; inline bool CreateTrigStmt::_internal_has_when_clause() const { return this != internal_default_instance() && when_clause_ != nullptr; } inline bool CreateTrigStmt::has_when_clause() const { return _internal_has_when_clause(); } inline void CreateTrigStmt::clear_when_clause() { if (GetArena() == nullptr && when_clause_ != nullptr) { delete when_clause_; } when_clause_ = nullptr; } inline const ::pg_query::Node& CreateTrigStmt::_internal_when_clause() const { const ::pg_query::Node* p = when_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CreateTrigStmt::when_clause() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.when_clause) return _internal_when_clause(); } inline void CreateTrigStmt::unsafe_arena_set_allocated_when_clause( ::pg_query::Node* when_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(when_clause_); } when_clause_ = when_clause; if (when_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.when_clause) } inline ::pg_query::Node* CreateTrigStmt::release_when_clause() { ::pg_query::Node* temp = when_clause_; when_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CreateTrigStmt::unsafe_arena_release_when_clause() { // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.when_clause) ::pg_query::Node* temp = when_clause_; when_clause_ = nullptr; return temp; } inline ::pg_query::Node* CreateTrigStmt::_internal_mutable_when_clause() { if (when_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); when_clause_ = p; } return when_clause_; } inline ::pg_query::Node* CreateTrigStmt::mutable_when_clause() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.when_clause) return _internal_mutable_when_clause(); } inline void CreateTrigStmt::set_allocated_when_clause(::pg_query::Node* when_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete when_clause_; } if (when_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(when_clause); if (message_arena != submessage_arena) { when_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, when_clause, submessage_arena); } } else { } when_clause_ = when_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.when_clause) } // bool isconstraint = 10 [json_name = "isconstraint"]; inline void CreateTrigStmt::clear_isconstraint() { isconstraint_ = false; } inline bool CreateTrigStmt::_internal_isconstraint() const { return isconstraint_; } inline bool CreateTrigStmt::isconstraint() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.isconstraint) return _internal_isconstraint(); } inline void CreateTrigStmt::_internal_set_isconstraint(bool value) { isconstraint_ = value; } inline void CreateTrigStmt::set_isconstraint(bool value) { _internal_set_isconstraint(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.isconstraint) } // repeated .pg_query.Node transition_rels = 11 [json_name = "transitionRels"]; inline int CreateTrigStmt::_internal_transition_rels_size() const { return transition_rels_.size(); } inline int CreateTrigStmt::transition_rels_size() const { return _internal_transition_rels_size(); } inline void CreateTrigStmt::clear_transition_rels() { transition_rels_.Clear(); } inline ::pg_query::Node* CreateTrigStmt::mutable_transition_rels(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.transition_rels) return transition_rels_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateTrigStmt::mutable_transition_rels() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTrigStmt.transition_rels) return &transition_rels_; } inline const ::pg_query::Node& CreateTrigStmt::_internal_transition_rels(int index) const { return transition_rels_.Get(index); } inline const ::pg_query::Node& CreateTrigStmt::transition_rels(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.transition_rels) return _internal_transition_rels(index); } inline ::pg_query::Node* CreateTrigStmt::_internal_add_transition_rels() { return transition_rels_.Add(); } inline ::pg_query::Node* CreateTrigStmt::add_transition_rels() { // @@protoc_insertion_point(field_add:pg_query.CreateTrigStmt.transition_rels) return _internal_add_transition_rels(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateTrigStmt::transition_rels() const { // @@protoc_insertion_point(field_list:pg_query.CreateTrigStmt.transition_rels) return transition_rels_; } // bool deferrable = 12 [json_name = "deferrable"]; inline void CreateTrigStmt::clear_deferrable() { deferrable_ = false; } inline bool CreateTrigStmt::_internal_deferrable() const { return deferrable_; } inline bool CreateTrigStmt::deferrable() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.deferrable) return _internal_deferrable(); } inline void CreateTrigStmt::_internal_set_deferrable(bool value) { deferrable_ = value; } inline void CreateTrigStmt::set_deferrable(bool value) { _internal_set_deferrable(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.deferrable) } // bool initdeferred = 13 [json_name = "initdeferred"]; inline void CreateTrigStmt::clear_initdeferred() { initdeferred_ = false; } inline bool CreateTrigStmt::_internal_initdeferred() const { return initdeferred_; } inline bool CreateTrigStmt::initdeferred() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.initdeferred) return _internal_initdeferred(); } inline void CreateTrigStmt::_internal_set_initdeferred(bool value) { initdeferred_ = value; } inline void CreateTrigStmt::set_initdeferred(bool value) { _internal_set_initdeferred(value); // @@protoc_insertion_point(field_set:pg_query.CreateTrigStmt.initdeferred) } // .pg_query.RangeVar constrrel = 14 [json_name = "constrrel"]; inline bool CreateTrigStmt::_internal_has_constrrel() const { return this != internal_default_instance() && constrrel_ != nullptr; } inline bool CreateTrigStmt::has_constrrel() const { return _internal_has_constrrel(); } inline void CreateTrigStmt::clear_constrrel() { if (GetArena() == nullptr && constrrel_ != nullptr) { delete constrrel_; } constrrel_ = nullptr; } inline const ::pg_query::RangeVar& CreateTrigStmt::_internal_constrrel() const { const ::pg_query::RangeVar* p = constrrel_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CreateTrigStmt::constrrel() const { // @@protoc_insertion_point(field_get:pg_query.CreateTrigStmt.constrrel) return _internal_constrrel(); } inline void CreateTrigStmt::unsafe_arena_set_allocated_constrrel( ::pg_query::RangeVar* constrrel) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(constrrel_); } constrrel_ = constrrel; if (constrrel) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTrigStmt.constrrel) } inline ::pg_query::RangeVar* CreateTrigStmt::release_constrrel() { ::pg_query::RangeVar* temp = constrrel_; constrrel_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* CreateTrigStmt::unsafe_arena_release_constrrel() { // @@protoc_insertion_point(field_release:pg_query.CreateTrigStmt.constrrel) ::pg_query::RangeVar* temp = constrrel_; constrrel_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreateTrigStmt::_internal_mutable_constrrel() { if (constrrel_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); constrrel_ = p; } return constrrel_; } inline ::pg_query::RangeVar* CreateTrigStmt::mutable_constrrel() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTrigStmt.constrrel) return _internal_mutable_constrrel(); } inline void CreateTrigStmt::set_allocated_constrrel(::pg_query::RangeVar* constrrel) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete constrrel_; } if (constrrel) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(constrrel); if (message_arena != submessage_arena) { constrrel = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, constrrel, submessage_arena); } } else { } constrrel_ = constrrel; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTrigStmt.constrrel) } // ------------------------------------------------------------------- // CreatePLangStmt // bool replace = 1 [json_name = "replace"]; inline void CreatePLangStmt::clear_replace() { replace_ = false; } inline bool CreatePLangStmt::_internal_replace() const { return replace_; } inline bool CreatePLangStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.replace) return _internal_replace(); } inline void CreatePLangStmt::_internal_set_replace(bool value) { replace_ = value; } inline void CreatePLangStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.replace) } // string plname = 2 [json_name = "plname"]; inline void CreatePLangStmt::clear_plname() { plname_.ClearToEmpty(); } inline const std::string& CreatePLangStmt::plname() const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plname) return _internal_plname(); } inline void CreatePLangStmt::set_plname(const std::string& value) { _internal_set_plname(value); // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.plname) } inline std::string* CreatePLangStmt::mutable_plname() { // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plname) return _internal_mutable_plname(); } inline const std::string& CreatePLangStmt::_internal_plname() const { return plname_.Get(); } inline void CreatePLangStmt::_internal_set_plname(const std::string& value) { plname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreatePLangStmt::set_plname(std::string&& value) { plname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreatePLangStmt.plname) } inline void CreatePLangStmt::set_plname(const char* value) { GOOGLE_DCHECK(value != nullptr); plname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreatePLangStmt.plname) } inline void CreatePLangStmt::set_plname(const char* value, size_t size) { plname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreatePLangStmt.plname) } inline std::string* CreatePLangStmt::_internal_mutable_plname() { return plname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreatePLangStmt::release_plname() { // @@protoc_insertion_point(field_release:pg_query.CreatePLangStmt.plname) return plname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreatePLangStmt::set_allocated_plname(std::string* plname) { if (plname != nullptr) { } else { } plname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), plname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePLangStmt.plname) } // repeated .pg_query.Node plhandler = 3 [json_name = "plhandler"]; inline int CreatePLangStmt::_internal_plhandler_size() const { return plhandler_.size(); } inline int CreatePLangStmt::plhandler_size() const { return _internal_plhandler_size(); } inline void CreatePLangStmt::clear_plhandler() { plhandler_.Clear(); } inline ::pg_query::Node* CreatePLangStmt::mutable_plhandler(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plhandler) return plhandler_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePLangStmt::mutable_plhandler() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plhandler) return &plhandler_; } inline const ::pg_query::Node& CreatePLangStmt::_internal_plhandler(int index) const { return plhandler_.Get(index); } inline const ::pg_query::Node& CreatePLangStmt::plhandler(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plhandler) return _internal_plhandler(index); } inline ::pg_query::Node* CreatePLangStmt::_internal_add_plhandler() { return plhandler_.Add(); } inline ::pg_query::Node* CreatePLangStmt::add_plhandler() { // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plhandler) return _internal_add_plhandler(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePLangStmt::plhandler() const { // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plhandler) return plhandler_; } // repeated .pg_query.Node plinline = 4 [json_name = "plinline"]; inline int CreatePLangStmt::_internal_plinline_size() const { return plinline_.size(); } inline int CreatePLangStmt::plinline_size() const { return _internal_plinline_size(); } inline void CreatePLangStmt::clear_plinline() { plinline_.Clear(); } inline ::pg_query::Node* CreatePLangStmt::mutable_plinline(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plinline) return plinline_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePLangStmt::mutable_plinline() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plinline) return &plinline_; } inline const ::pg_query::Node& CreatePLangStmt::_internal_plinline(int index) const { return plinline_.Get(index); } inline const ::pg_query::Node& CreatePLangStmt::plinline(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plinline) return _internal_plinline(index); } inline ::pg_query::Node* CreatePLangStmt::_internal_add_plinline() { return plinline_.Add(); } inline ::pg_query::Node* CreatePLangStmt::add_plinline() { // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plinline) return _internal_add_plinline(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePLangStmt::plinline() const { // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plinline) return plinline_; } // repeated .pg_query.Node plvalidator = 5 [json_name = "plvalidator"]; inline int CreatePLangStmt::_internal_plvalidator_size() const { return plvalidator_.size(); } inline int CreatePLangStmt::plvalidator_size() const { return _internal_plvalidator_size(); } inline void CreatePLangStmt::clear_plvalidator() { plvalidator_.Clear(); } inline ::pg_query::Node* CreatePLangStmt::mutable_plvalidator(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePLangStmt.plvalidator) return plvalidator_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePLangStmt::mutable_plvalidator() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePLangStmt.plvalidator) return &plvalidator_; } inline const ::pg_query::Node& CreatePLangStmt::_internal_plvalidator(int index) const { return plvalidator_.Get(index); } inline const ::pg_query::Node& CreatePLangStmt::plvalidator(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.plvalidator) return _internal_plvalidator(index); } inline ::pg_query::Node* CreatePLangStmt::_internal_add_plvalidator() { return plvalidator_.Add(); } inline ::pg_query::Node* CreatePLangStmt::add_plvalidator() { // @@protoc_insertion_point(field_add:pg_query.CreatePLangStmt.plvalidator) return _internal_add_plvalidator(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePLangStmt::plvalidator() const { // @@protoc_insertion_point(field_list:pg_query.CreatePLangStmt.plvalidator) return plvalidator_; } // bool pltrusted = 6 [json_name = "pltrusted"]; inline void CreatePLangStmt::clear_pltrusted() { pltrusted_ = false; } inline bool CreatePLangStmt::_internal_pltrusted() const { return pltrusted_; } inline bool CreatePLangStmt::pltrusted() const { // @@protoc_insertion_point(field_get:pg_query.CreatePLangStmt.pltrusted) return _internal_pltrusted(); } inline void CreatePLangStmt::_internal_set_pltrusted(bool value) { pltrusted_ = value; } inline void CreatePLangStmt::set_pltrusted(bool value) { _internal_set_pltrusted(value); // @@protoc_insertion_point(field_set:pg_query.CreatePLangStmt.pltrusted) } // ------------------------------------------------------------------- // CreateRoleStmt // .pg_query.RoleStmtType stmt_type = 1 [json_name = "stmt_type"]; inline void CreateRoleStmt::clear_stmt_type() { stmt_type_ = 0; } inline ::pg_query::RoleStmtType CreateRoleStmt::_internal_stmt_type() const { return static_cast< ::pg_query::RoleStmtType >(stmt_type_); } inline ::pg_query::RoleStmtType CreateRoleStmt::stmt_type() const { // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.stmt_type) return _internal_stmt_type(); } inline void CreateRoleStmt::_internal_set_stmt_type(::pg_query::RoleStmtType value) { stmt_type_ = value; } inline void CreateRoleStmt::set_stmt_type(::pg_query::RoleStmtType value) { _internal_set_stmt_type(value); // @@protoc_insertion_point(field_set:pg_query.CreateRoleStmt.stmt_type) } // string role = 2 [json_name = "role"]; inline void CreateRoleStmt::clear_role() { role_.ClearToEmpty(); } inline const std::string& CreateRoleStmt::role() const { // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.role) return _internal_role(); } inline void CreateRoleStmt::set_role(const std::string& value) { _internal_set_role(value); // @@protoc_insertion_point(field_set:pg_query.CreateRoleStmt.role) } inline std::string* CreateRoleStmt::mutable_role() { // @@protoc_insertion_point(field_mutable:pg_query.CreateRoleStmt.role) return _internal_mutable_role(); } inline const std::string& CreateRoleStmt::_internal_role() const { return role_.Get(); } inline void CreateRoleStmt::_internal_set_role(const std::string& value) { role_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateRoleStmt::set_role(std::string&& value) { role_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateRoleStmt.role) } inline void CreateRoleStmt::set_role(const char* value) { GOOGLE_DCHECK(value != nullptr); role_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateRoleStmt.role) } inline void CreateRoleStmt::set_role(const char* value, size_t size) { role_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateRoleStmt.role) } inline std::string* CreateRoleStmt::_internal_mutable_role() { return role_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateRoleStmt::release_role() { // @@protoc_insertion_point(field_release:pg_query.CreateRoleStmt.role) return role_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateRoleStmt::set_allocated_role(std::string* role) { if (role != nullptr) { } else { } role_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), role, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateRoleStmt.role) } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int CreateRoleStmt::_internal_options_size() const { return options_.size(); } inline int CreateRoleStmt::options_size() const { return _internal_options_size(); } inline void CreateRoleStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateRoleStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateRoleStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateRoleStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRoleStmt.options) return &options_; } inline const ::pg_query::Node& CreateRoleStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateRoleStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateRoleStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateRoleStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateRoleStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateRoleStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateRoleStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateRoleStmt.options) return options_; } // ------------------------------------------------------------------- // AlterRoleStmt // .pg_query.RoleSpec role = 1 [json_name = "role"]; inline bool AlterRoleStmt::_internal_has_role() const { return this != internal_default_instance() && role_ != nullptr; } inline bool AlterRoleStmt::has_role() const { return _internal_has_role(); } inline void AlterRoleStmt::clear_role() { if (GetArena() == nullptr && role_ != nullptr) { delete role_; } role_ = nullptr; } inline const ::pg_query::RoleSpec& AlterRoleStmt::_internal_role() const { const ::pg_query::RoleSpec* p = role_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& AlterRoleStmt::role() const { // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.role) return _internal_role(); } inline void AlterRoleStmt::unsafe_arena_set_allocated_role( ::pg_query::RoleSpec* role) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(role_); } role_ = role; if (role) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleStmt.role) } inline ::pg_query::RoleSpec* AlterRoleStmt::release_role() { ::pg_query::RoleSpec* temp = role_; role_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* AlterRoleStmt::unsafe_arena_release_role() { // @@protoc_insertion_point(field_release:pg_query.AlterRoleStmt.role) ::pg_query::RoleSpec* temp = role_; role_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterRoleStmt::_internal_mutable_role() { if (role_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); role_ = p; } return role_; } inline ::pg_query::RoleSpec* AlterRoleStmt::mutable_role() { // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleStmt.role) return _internal_mutable_role(); } inline void AlterRoleStmt::set_allocated_role(::pg_query::RoleSpec* role) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete role_; } if (role) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(role); if (message_arena != submessage_arena) { role = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, role, submessage_arena); } } else { } role_ = role; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleStmt.role) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterRoleStmt::_internal_options_size() const { return options_.size(); } inline int AlterRoleStmt::options_size() const { return _internal_options_size(); } inline void AlterRoleStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterRoleStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterRoleStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterRoleStmt.options) return &options_; } inline const ::pg_query::Node& AlterRoleStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterRoleStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterRoleStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterRoleStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterRoleStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterRoleStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterRoleStmt.options) return options_; } // int32 action = 3 [json_name = "action"]; inline void AlterRoleStmt::clear_action() { action_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 AlterRoleStmt::_internal_action() const { return action_; } inline ::PROTOBUF_NAMESPACE_ID::int32 AlterRoleStmt::action() const { // @@protoc_insertion_point(field_get:pg_query.AlterRoleStmt.action) return _internal_action(); } inline void AlterRoleStmt::_internal_set_action(::PROTOBUF_NAMESPACE_ID::int32 value) { action_ = value; } inline void AlterRoleStmt::set_action(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.AlterRoleStmt.action) } // ------------------------------------------------------------------- // DropRoleStmt // repeated .pg_query.Node roles = 1 [json_name = "roles"]; inline int DropRoleStmt::_internal_roles_size() const { return roles_.size(); } inline int DropRoleStmt::roles_size() const { return _internal_roles_size(); } inline void DropRoleStmt::clear_roles() { roles_.Clear(); } inline ::pg_query::Node* DropRoleStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DropRoleStmt.roles) return roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DropRoleStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.DropRoleStmt.roles) return &roles_; } inline const ::pg_query::Node& DropRoleStmt::_internal_roles(int index) const { return roles_.Get(index); } inline const ::pg_query::Node& DropRoleStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.DropRoleStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* DropRoleStmt::_internal_add_roles() { return roles_.Add(); } inline ::pg_query::Node* DropRoleStmt::add_roles() { // @@protoc_insertion_point(field_add:pg_query.DropRoleStmt.roles) return _internal_add_roles(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DropRoleStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.DropRoleStmt.roles) return roles_; } // bool missing_ok = 2 [json_name = "missing_ok"]; inline void DropRoleStmt::clear_missing_ok() { missing_ok_ = false; } inline bool DropRoleStmt::_internal_missing_ok() const { return missing_ok_; } inline bool DropRoleStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropRoleStmt.missing_ok) return _internal_missing_ok(); } inline void DropRoleStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void DropRoleStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropRoleStmt.missing_ok) } // ------------------------------------------------------------------- // LockStmt // repeated .pg_query.Node relations = 1 [json_name = "relations"]; inline int LockStmt::_internal_relations_size() const { return relations_.size(); } inline int LockStmt::relations_size() const { return _internal_relations_size(); } inline void LockStmt::clear_relations() { relations_.Clear(); } inline ::pg_query::Node* LockStmt::mutable_relations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.LockStmt.relations) return relations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* LockStmt::mutable_relations() { // @@protoc_insertion_point(field_mutable_list:pg_query.LockStmt.relations) return &relations_; } inline const ::pg_query::Node& LockStmt::_internal_relations(int index) const { return relations_.Get(index); } inline const ::pg_query::Node& LockStmt::relations(int index) const { // @@protoc_insertion_point(field_get:pg_query.LockStmt.relations) return _internal_relations(index); } inline ::pg_query::Node* LockStmt::_internal_add_relations() { return relations_.Add(); } inline ::pg_query::Node* LockStmt::add_relations() { // @@protoc_insertion_point(field_add:pg_query.LockStmt.relations) return _internal_add_relations(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& LockStmt::relations() const { // @@protoc_insertion_point(field_list:pg_query.LockStmt.relations) return relations_; } // int32 mode = 2 [json_name = "mode"]; inline void LockStmt::clear_mode() { mode_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 LockStmt::_internal_mode() const { return mode_; } inline ::PROTOBUF_NAMESPACE_ID::int32 LockStmt::mode() const { // @@protoc_insertion_point(field_get:pg_query.LockStmt.mode) return _internal_mode(); } inline void LockStmt::_internal_set_mode(::PROTOBUF_NAMESPACE_ID::int32 value) { mode_ = value; } inline void LockStmt::set_mode(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_mode(value); // @@protoc_insertion_point(field_set:pg_query.LockStmt.mode) } // bool nowait = 3 [json_name = "nowait"]; inline void LockStmt::clear_nowait() { nowait_ = false; } inline bool LockStmt::_internal_nowait() const { return nowait_; } inline bool LockStmt::nowait() const { // @@protoc_insertion_point(field_get:pg_query.LockStmt.nowait) return _internal_nowait(); } inline void LockStmt::_internal_set_nowait(bool value) { nowait_ = value; } inline void LockStmt::set_nowait(bool value) { _internal_set_nowait(value); // @@protoc_insertion_point(field_set:pg_query.LockStmt.nowait) } // ------------------------------------------------------------------- // ConstraintsSetStmt // repeated .pg_query.Node constraints = 1 [json_name = "constraints"]; inline int ConstraintsSetStmt::_internal_constraints_size() const { return constraints_.size(); } inline int ConstraintsSetStmt::constraints_size() const { return _internal_constraints_size(); } inline void ConstraintsSetStmt::clear_constraints() { constraints_.Clear(); } inline ::pg_query::Node* ConstraintsSetStmt::mutable_constraints(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ConstraintsSetStmt.constraints) return constraints_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ConstraintsSetStmt::mutable_constraints() { // @@protoc_insertion_point(field_mutable_list:pg_query.ConstraintsSetStmt.constraints) return &constraints_; } inline const ::pg_query::Node& ConstraintsSetStmt::_internal_constraints(int index) const { return constraints_.Get(index); } inline const ::pg_query::Node& ConstraintsSetStmt::constraints(int index) const { // @@protoc_insertion_point(field_get:pg_query.ConstraintsSetStmt.constraints) return _internal_constraints(index); } inline ::pg_query::Node* ConstraintsSetStmt::_internal_add_constraints() { return constraints_.Add(); } inline ::pg_query::Node* ConstraintsSetStmt::add_constraints() { // @@protoc_insertion_point(field_add:pg_query.ConstraintsSetStmt.constraints) return _internal_add_constraints(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ConstraintsSetStmt::constraints() const { // @@protoc_insertion_point(field_list:pg_query.ConstraintsSetStmt.constraints) return constraints_; } // bool deferred = 2 [json_name = "deferred"]; inline void ConstraintsSetStmt::clear_deferred() { deferred_ = false; } inline bool ConstraintsSetStmt::_internal_deferred() const { return deferred_; } inline bool ConstraintsSetStmt::deferred() const { // @@protoc_insertion_point(field_get:pg_query.ConstraintsSetStmt.deferred) return _internal_deferred(); } inline void ConstraintsSetStmt::_internal_set_deferred(bool value) { deferred_ = value; } inline void ConstraintsSetStmt::set_deferred(bool value) { _internal_set_deferred(value); // @@protoc_insertion_point(field_set:pg_query.ConstraintsSetStmt.deferred) } // ------------------------------------------------------------------- // ReindexStmt // .pg_query.ReindexObjectType kind = 1 [json_name = "kind"]; inline void ReindexStmt::clear_kind() { kind_ = 0; } inline ::pg_query::ReindexObjectType ReindexStmt::_internal_kind() const { return static_cast< ::pg_query::ReindexObjectType >(kind_); } inline ::pg_query::ReindexObjectType ReindexStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.kind) return _internal_kind(); } inline void ReindexStmt::_internal_set_kind(::pg_query::ReindexObjectType value) { kind_ = value; } inline void ReindexStmt::set_kind(::pg_query::ReindexObjectType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.kind) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool ReindexStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool ReindexStmt::has_relation() const { return _internal_has_relation(); } inline void ReindexStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& ReindexStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& ReindexStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.relation) return _internal_relation(); } inline void ReindexStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ReindexStmt.relation) } inline ::pg_query::RangeVar* ReindexStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* ReindexStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.ReindexStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* ReindexStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* ReindexStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.ReindexStmt.relation) return _internal_mutable_relation(); } inline void ReindexStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.ReindexStmt.relation) } // string name = 3 [json_name = "name"]; inline void ReindexStmt::clear_name() { name_.ClearToEmpty(); } inline const std::string& ReindexStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.name) return _internal_name(); } inline void ReindexStmt::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.name) } inline std::string* ReindexStmt::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.ReindexStmt.name) return _internal_mutable_name(); } inline const std::string& ReindexStmt::_internal_name() const { return name_.Get(); } inline void ReindexStmt::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ReindexStmt::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ReindexStmt.name) } inline void ReindexStmt::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ReindexStmt.name) } inline void ReindexStmt::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ReindexStmt.name) } inline std::string* ReindexStmt::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ReindexStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.ReindexStmt.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ReindexStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ReindexStmt.name) } // int32 options = 4 [json_name = "options"]; inline void ReindexStmt::clear_options() { options_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ReindexStmt::_internal_options() const { return options_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ReindexStmt::options() const { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.options) return _internal_options(); } inline void ReindexStmt::_internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { options_ = value; } inline void ReindexStmt::set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_options(value); // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.options) } // bool concurrent = 5 [json_name = "concurrent"]; inline void ReindexStmt::clear_concurrent() { concurrent_ = false; } inline bool ReindexStmt::_internal_concurrent() const { return concurrent_; } inline bool ReindexStmt::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.ReindexStmt.concurrent) return _internal_concurrent(); } inline void ReindexStmt::_internal_set_concurrent(bool value) { concurrent_ = value; } inline void ReindexStmt::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.ReindexStmt.concurrent) } // ------------------------------------------------------------------- // CheckPointStmt // ------------------------------------------------------------------- // CreateSchemaStmt // string schemaname = 1 [json_name = "schemaname"]; inline void CreateSchemaStmt::clear_schemaname() { schemaname_.ClearToEmpty(); } inline const std::string& CreateSchemaStmt::schemaname() const { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.schemaname) return _internal_schemaname(); } inline void CreateSchemaStmt::set_schemaname(const std::string& value) { _internal_set_schemaname(value); // @@protoc_insertion_point(field_set:pg_query.CreateSchemaStmt.schemaname) } inline std::string* CreateSchemaStmt::mutable_schemaname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateSchemaStmt.schemaname) return _internal_mutable_schemaname(); } inline const std::string& CreateSchemaStmt::_internal_schemaname() const { return schemaname_.Get(); } inline void CreateSchemaStmt::_internal_set_schemaname(const std::string& value) { schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateSchemaStmt::set_schemaname(std::string&& value) { schemaname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateSchemaStmt.schemaname) } inline void CreateSchemaStmt::set_schemaname(const char* value) { GOOGLE_DCHECK(value != nullptr); schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateSchemaStmt.schemaname) } inline void CreateSchemaStmt::set_schemaname(const char* value, size_t size) { schemaname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateSchemaStmt.schemaname) } inline std::string* CreateSchemaStmt::_internal_mutable_schemaname() { return schemaname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateSchemaStmt::release_schemaname() { // @@protoc_insertion_point(field_release:pg_query.CreateSchemaStmt.schemaname) return schemaname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateSchemaStmt::set_allocated_schemaname(std::string* schemaname) { if (schemaname != nullptr) { } else { } schemaname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), schemaname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSchemaStmt.schemaname) } // .pg_query.RoleSpec authrole = 2 [json_name = "authrole"]; inline bool CreateSchemaStmt::_internal_has_authrole() const { return this != internal_default_instance() && authrole_ != nullptr; } inline bool CreateSchemaStmt::has_authrole() const { return _internal_has_authrole(); } inline void CreateSchemaStmt::clear_authrole() { if (GetArena() == nullptr && authrole_ != nullptr) { delete authrole_; } authrole_ = nullptr; } inline const ::pg_query::RoleSpec& CreateSchemaStmt::_internal_authrole() const { const ::pg_query::RoleSpec* p = authrole_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& CreateSchemaStmt::authrole() const { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.authrole) return _internal_authrole(); } inline void CreateSchemaStmt::unsafe_arena_set_allocated_authrole( ::pg_query::RoleSpec* authrole) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(authrole_); } authrole_ = authrole; if (authrole) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateSchemaStmt.authrole) } inline ::pg_query::RoleSpec* CreateSchemaStmt::release_authrole() { ::pg_query::RoleSpec* temp = authrole_; authrole_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* CreateSchemaStmt::unsafe_arena_release_authrole() { // @@protoc_insertion_point(field_release:pg_query.CreateSchemaStmt.authrole) ::pg_query::RoleSpec* temp = authrole_; authrole_ = nullptr; return temp; } inline ::pg_query::RoleSpec* CreateSchemaStmt::_internal_mutable_authrole() { if (authrole_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); authrole_ = p; } return authrole_; } inline ::pg_query::RoleSpec* CreateSchemaStmt::mutable_authrole() { // @@protoc_insertion_point(field_mutable:pg_query.CreateSchemaStmt.authrole) return _internal_mutable_authrole(); } inline void CreateSchemaStmt::set_allocated_authrole(::pg_query::RoleSpec* authrole) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete authrole_; } if (authrole) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(authrole); if (message_arena != submessage_arena) { authrole = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, authrole, submessage_arena); } } else { } authrole_ = authrole; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSchemaStmt.authrole) } // repeated .pg_query.Node schema_elts = 3 [json_name = "schemaElts"]; inline int CreateSchemaStmt::_internal_schema_elts_size() const { return schema_elts_.size(); } inline int CreateSchemaStmt::schema_elts_size() const { return _internal_schema_elts_size(); } inline void CreateSchemaStmt::clear_schema_elts() { schema_elts_.Clear(); } inline ::pg_query::Node* CreateSchemaStmt::mutable_schema_elts(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateSchemaStmt.schema_elts) return schema_elts_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateSchemaStmt::mutable_schema_elts() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSchemaStmt.schema_elts) return &schema_elts_; } inline const ::pg_query::Node& CreateSchemaStmt::_internal_schema_elts(int index) const { return schema_elts_.Get(index); } inline const ::pg_query::Node& CreateSchemaStmt::schema_elts(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.schema_elts) return _internal_schema_elts(index); } inline ::pg_query::Node* CreateSchemaStmt::_internal_add_schema_elts() { return schema_elts_.Add(); } inline ::pg_query::Node* CreateSchemaStmt::add_schema_elts() { // @@protoc_insertion_point(field_add:pg_query.CreateSchemaStmt.schema_elts) return _internal_add_schema_elts(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateSchemaStmt::schema_elts() const { // @@protoc_insertion_point(field_list:pg_query.CreateSchemaStmt.schema_elts) return schema_elts_; } // bool if_not_exists = 4 [json_name = "if_not_exists"]; inline void CreateSchemaStmt::clear_if_not_exists() { if_not_exists_ = false; } inline bool CreateSchemaStmt::_internal_if_not_exists() const { return if_not_exists_; } inline bool CreateSchemaStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateSchemaStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateSchemaStmt::_internal_set_if_not_exists(bool value) { if_not_exists_ = value; } inline void CreateSchemaStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateSchemaStmt.if_not_exists) } // ------------------------------------------------------------------- // AlterDatabaseStmt // string dbname = 1 [json_name = "dbname"]; inline void AlterDatabaseStmt::clear_dbname() { dbname_.ClearToEmpty(); } inline const std::string& AlterDatabaseStmt::dbname() const { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseStmt.dbname) return _internal_dbname(); } inline void AlterDatabaseStmt::set_dbname(const std::string& value) { _internal_set_dbname(value); // @@protoc_insertion_point(field_set:pg_query.AlterDatabaseStmt.dbname) } inline std::string* AlterDatabaseStmt::mutable_dbname() { // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseStmt.dbname) return _internal_mutable_dbname(); } inline const std::string& AlterDatabaseStmt::_internal_dbname() const { return dbname_.Get(); } inline void AlterDatabaseStmt::_internal_set_dbname(const std::string& value) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterDatabaseStmt::set_dbname(std::string&& value) { dbname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterDatabaseStmt.dbname) } inline void AlterDatabaseStmt::set_dbname(const char* value) { GOOGLE_DCHECK(value != nullptr); dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterDatabaseStmt.dbname) } inline void AlterDatabaseStmt::set_dbname(const char* value, size_t size) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterDatabaseStmt.dbname) } inline std::string* AlterDatabaseStmt::_internal_mutable_dbname() { return dbname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterDatabaseStmt::release_dbname() { // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseStmt.dbname) return dbname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterDatabaseStmt::set_allocated_dbname(std::string* dbname) { if (dbname != nullptr) { } else { } dbname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), dbname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDatabaseStmt.dbname) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterDatabaseStmt::_internal_options_size() const { return options_.size(); } inline int AlterDatabaseStmt::options_size() const { return _internal_options_size(); } inline void AlterDatabaseStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterDatabaseStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterDatabaseStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterDatabaseStmt.options) return &options_; } inline const ::pg_query::Node& AlterDatabaseStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterDatabaseStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterDatabaseStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterDatabaseStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterDatabaseStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterDatabaseStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterDatabaseStmt.options) return options_; } // ------------------------------------------------------------------- // AlterDatabaseSetStmt // string dbname = 1 [json_name = "dbname"]; inline void AlterDatabaseSetStmt::clear_dbname() { dbname_.ClearToEmpty(); } inline const std::string& AlterDatabaseSetStmt::dbname() const { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseSetStmt.dbname) return _internal_dbname(); } inline void AlterDatabaseSetStmt::set_dbname(const std::string& value) { _internal_set_dbname(value); // @@protoc_insertion_point(field_set:pg_query.AlterDatabaseSetStmt.dbname) } inline std::string* AlterDatabaseSetStmt::mutable_dbname() { // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseSetStmt.dbname) return _internal_mutable_dbname(); } inline const std::string& AlterDatabaseSetStmt::_internal_dbname() const { return dbname_.Get(); } inline void AlterDatabaseSetStmt::_internal_set_dbname(const std::string& value) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterDatabaseSetStmt::set_dbname(std::string&& value) { dbname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterDatabaseSetStmt.dbname) } inline void AlterDatabaseSetStmt::set_dbname(const char* value) { GOOGLE_DCHECK(value != nullptr); dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterDatabaseSetStmt.dbname) } inline void AlterDatabaseSetStmt::set_dbname(const char* value, size_t size) { dbname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterDatabaseSetStmt.dbname) } inline std::string* AlterDatabaseSetStmt::_internal_mutable_dbname() { return dbname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterDatabaseSetStmt::release_dbname() { // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseSetStmt.dbname) return dbname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterDatabaseSetStmt::set_allocated_dbname(std::string* dbname) { if (dbname != nullptr) { } else { } dbname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), dbname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDatabaseSetStmt.dbname) } // .pg_query.VariableSetStmt setstmt = 2 [json_name = "setstmt"]; inline bool AlterDatabaseSetStmt::_internal_has_setstmt() const { return this != internal_default_instance() && setstmt_ != nullptr; } inline bool AlterDatabaseSetStmt::has_setstmt() const { return _internal_has_setstmt(); } inline void AlterDatabaseSetStmt::clear_setstmt() { if (GetArena() == nullptr && setstmt_ != nullptr) { delete setstmt_; } setstmt_ = nullptr; } inline const ::pg_query::VariableSetStmt& AlterDatabaseSetStmt::_internal_setstmt() const { const ::pg_query::VariableSetStmt* p = setstmt_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_VariableSetStmt_default_instance_); } inline const ::pg_query::VariableSetStmt& AlterDatabaseSetStmt::setstmt() const { // @@protoc_insertion_point(field_get:pg_query.AlterDatabaseSetStmt.setstmt) return _internal_setstmt(); } inline void AlterDatabaseSetStmt::unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(setstmt_); } setstmt_ = setstmt; if (setstmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterDatabaseSetStmt.setstmt) } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::release_setstmt() { ::pg_query::VariableSetStmt* temp = setstmt_; setstmt_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::unsafe_arena_release_setstmt() { // @@protoc_insertion_point(field_release:pg_query.AlterDatabaseSetStmt.setstmt) ::pg_query::VariableSetStmt* temp = setstmt_; setstmt_ = nullptr; return temp; } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::_internal_mutable_setstmt() { if (setstmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArena()); setstmt_ = p; } return setstmt_; } inline ::pg_query::VariableSetStmt* AlterDatabaseSetStmt::mutable_setstmt() { // @@protoc_insertion_point(field_mutable:pg_query.AlterDatabaseSetStmt.setstmt) return _internal_mutable_setstmt(); } inline void AlterDatabaseSetStmt::set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete setstmt_; } if (setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(setstmt); if (message_arena != submessage_arena) { setstmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, setstmt, submessage_arena); } } else { } setstmt_ = setstmt; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterDatabaseSetStmt.setstmt) } // ------------------------------------------------------------------- // AlterRoleSetStmt // .pg_query.RoleSpec role = 1 [json_name = "role"]; inline bool AlterRoleSetStmt::_internal_has_role() const { return this != internal_default_instance() && role_ != nullptr; } inline bool AlterRoleSetStmt::has_role() const { return _internal_has_role(); } inline void AlterRoleSetStmt::clear_role() { if (GetArena() == nullptr && role_ != nullptr) { delete role_; } role_ = nullptr; } inline const ::pg_query::RoleSpec& AlterRoleSetStmt::_internal_role() const { const ::pg_query::RoleSpec* p = role_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& AlterRoleSetStmt::role() const { // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.role) return _internal_role(); } inline void AlterRoleSetStmt::unsafe_arena_set_allocated_role( ::pg_query::RoleSpec* role) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(role_); } role_ = role; if (role) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleSetStmt.role) } inline ::pg_query::RoleSpec* AlterRoleSetStmt::release_role() { ::pg_query::RoleSpec* temp = role_; role_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* AlterRoleSetStmt::unsafe_arena_release_role() { // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.role) ::pg_query::RoleSpec* temp = role_; role_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterRoleSetStmt::_internal_mutable_role() { if (role_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); role_ = p; } return role_; } inline ::pg_query::RoleSpec* AlterRoleSetStmt::mutable_role() { // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleSetStmt.role) return _internal_mutable_role(); } inline void AlterRoleSetStmt::set_allocated_role(::pg_query::RoleSpec* role) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete role_; } if (role) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(role); if (message_arena != submessage_arena) { role = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, role, submessage_arena); } } else { } role_ = role; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.role) } // string database = 2 [json_name = "database"]; inline void AlterRoleSetStmt::clear_database() { database_.ClearToEmpty(); } inline const std::string& AlterRoleSetStmt::database() const { // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.database) return _internal_database(); } inline void AlterRoleSetStmt::set_database(const std::string& value) { _internal_set_database(value); // @@protoc_insertion_point(field_set:pg_query.AlterRoleSetStmt.database) } inline std::string* AlterRoleSetStmt::mutable_database() { // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleSetStmt.database) return _internal_mutable_database(); } inline const std::string& AlterRoleSetStmt::_internal_database() const { return database_.Get(); } inline void AlterRoleSetStmt::_internal_set_database(const std::string& value) { database_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterRoleSetStmt::set_database(std::string&& value) { database_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterRoleSetStmt.database) } inline void AlterRoleSetStmt::set_database(const char* value) { GOOGLE_DCHECK(value != nullptr); database_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterRoleSetStmt.database) } inline void AlterRoleSetStmt::set_database(const char* value, size_t size) { database_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterRoleSetStmt.database) } inline std::string* AlterRoleSetStmt::_internal_mutable_database() { return database_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterRoleSetStmt::release_database() { // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.database) return database_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterRoleSetStmt::set_allocated_database(std::string* database) { if (database != nullptr) { } else { } database_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), database, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.database) } // .pg_query.VariableSetStmt setstmt = 3 [json_name = "setstmt"]; inline bool AlterRoleSetStmt::_internal_has_setstmt() const { return this != internal_default_instance() && setstmt_ != nullptr; } inline bool AlterRoleSetStmt::has_setstmt() const { return _internal_has_setstmt(); } inline void AlterRoleSetStmt::clear_setstmt() { if (GetArena() == nullptr && setstmt_ != nullptr) { delete setstmt_; } setstmt_ = nullptr; } inline const ::pg_query::VariableSetStmt& AlterRoleSetStmt::_internal_setstmt() const { const ::pg_query::VariableSetStmt* p = setstmt_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_VariableSetStmt_default_instance_); } inline const ::pg_query::VariableSetStmt& AlterRoleSetStmt::setstmt() const { // @@protoc_insertion_point(field_get:pg_query.AlterRoleSetStmt.setstmt) return _internal_setstmt(); } inline void AlterRoleSetStmt::unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(setstmt_); } setstmt_ = setstmt; if (setstmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterRoleSetStmt.setstmt) } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::release_setstmt() { ::pg_query::VariableSetStmt* temp = setstmt_; setstmt_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::unsafe_arena_release_setstmt() { // @@protoc_insertion_point(field_release:pg_query.AlterRoleSetStmt.setstmt) ::pg_query::VariableSetStmt* temp = setstmt_; setstmt_ = nullptr; return temp; } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::_internal_mutable_setstmt() { if (setstmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArena()); setstmt_ = p; } return setstmt_; } inline ::pg_query::VariableSetStmt* AlterRoleSetStmt::mutable_setstmt() { // @@protoc_insertion_point(field_mutable:pg_query.AlterRoleSetStmt.setstmt) return _internal_mutable_setstmt(); } inline void AlterRoleSetStmt::set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete setstmt_; } if (setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(setstmt); if (message_arena != submessage_arena) { setstmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, setstmt, submessage_arena); } } else { } setstmt_ = setstmt; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterRoleSetStmt.setstmt) } // ------------------------------------------------------------------- // CreateConversionStmt // repeated .pg_query.Node conversion_name = 1 [json_name = "conversion_name"]; inline int CreateConversionStmt::_internal_conversion_name_size() const { return conversion_name_.size(); } inline int CreateConversionStmt::conversion_name_size() const { return _internal_conversion_name_size(); } inline void CreateConversionStmt::clear_conversion_name() { conversion_name_.Clear(); } inline ::pg_query::Node* CreateConversionStmt::mutable_conversion_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.conversion_name) return conversion_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateConversionStmt::mutable_conversion_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateConversionStmt.conversion_name) return &conversion_name_; } inline const ::pg_query::Node& CreateConversionStmt::_internal_conversion_name(int index) const { return conversion_name_.Get(index); } inline const ::pg_query::Node& CreateConversionStmt::conversion_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.conversion_name) return _internal_conversion_name(index); } inline ::pg_query::Node* CreateConversionStmt::_internal_add_conversion_name() { return conversion_name_.Add(); } inline ::pg_query::Node* CreateConversionStmt::add_conversion_name() { // @@protoc_insertion_point(field_add:pg_query.CreateConversionStmt.conversion_name) return _internal_add_conversion_name(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateConversionStmt::conversion_name() const { // @@protoc_insertion_point(field_list:pg_query.CreateConversionStmt.conversion_name) return conversion_name_; } // string for_encoding_name = 2 [json_name = "for_encoding_name"]; inline void CreateConversionStmt::clear_for_encoding_name() { for_encoding_name_.ClearToEmpty(); } inline const std::string& CreateConversionStmt::for_encoding_name() const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.for_encoding_name) return _internal_for_encoding_name(); } inline void CreateConversionStmt::set_for_encoding_name(const std::string& value) { _internal_set_for_encoding_name(value); // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.for_encoding_name) } inline std::string* CreateConversionStmt::mutable_for_encoding_name() { // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.for_encoding_name) return _internal_mutable_for_encoding_name(); } inline const std::string& CreateConversionStmt::_internal_for_encoding_name() const { return for_encoding_name_.Get(); } inline void CreateConversionStmt::_internal_set_for_encoding_name(const std::string& value) { for_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateConversionStmt::set_for_encoding_name(std::string&& value) { for_encoding_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateConversionStmt.for_encoding_name) } inline void CreateConversionStmt::set_for_encoding_name(const char* value) { GOOGLE_DCHECK(value != nullptr); for_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateConversionStmt.for_encoding_name) } inline void CreateConversionStmt::set_for_encoding_name(const char* value, size_t size) { for_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateConversionStmt.for_encoding_name) } inline std::string* CreateConversionStmt::_internal_mutable_for_encoding_name() { return for_encoding_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateConversionStmt::release_for_encoding_name() { // @@protoc_insertion_point(field_release:pg_query.CreateConversionStmt.for_encoding_name) return for_encoding_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateConversionStmt::set_allocated_for_encoding_name(std::string* for_encoding_name) { if (for_encoding_name != nullptr) { } else { } for_encoding_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), for_encoding_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateConversionStmt.for_encoding_name) } // string to_encoding_name = 3 [json_name = "to_encoding_name"]; inline void CreateConversionStmt::clear_to_encoding_name() { to_encoding_name_.ClearToEmpty(); } inline const std::string& CreateConversionStmt::to_encoding_name() const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.to_encoding_name) return _internal_to_encoding_name(); } inline void CreateConversionStmt::set_to_encoding_name(const std::string& value) { _internal_set_to_encoding_name(value); // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.to_encoding_name) } inline std::string* CreateConversionStmt::mutable_to_encoding_name() { // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.to_encoding_name) return _internal_mutable_to_encoding_name(); } inline const std::string& CreateConversionStmt::_internal_to_encoding_name() const { return to_encoding_name_.Get(); } inline void CreateConversionStmt::_internal_set_to_encoding_name(const std::string& value) { to_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateConversionStmt::set_to_encoding_name(std::string&& value) { to_encoding_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateConversionStmt.to_encoding_name) } inline void CreateConversionStmt::set_to_encoding_name(const char* value) { GOOGLE_DCHECK(value != nullptr); to_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateConversionStmt.to_encoding_name) } inline void CreateConversionStmt::set_to_encoding_name(const char* value, size_t size) { to_encoding_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateConversionStmt.to_encoding_name) } inline std::string* CreateConversionStmt::_internal_mutable_to_encoding_name() { return to_encoding_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateConversionStmt::release_to_encoding_name() { // @@protoc_insertion_point(field_release:pg_query.CreateConversionStmt.to_encoding_name) return to_encoding_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateConversionStmt::set_allocated_to_encoding_name(std::string* to_encoding_name) { if (to_encoding_name != nullptr) { } else { } to_encoding_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), to_encoding_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateConversionStmt.to_encoding_name) } // repeated .pg_query.Node func_name = 4 [json_name = "func_name"]; inline int CreateConversionStmt::_internal_func_name_size() const { return func_name_.size(); } inline int CreateConversionStmt::func_name_size() const { return _internal_func_name_size(); } inline void CreateConversionStmt::clear_func_name() { func_name_.Clear(); } inline ::pg_query::Node* CreateConversionStmt::mutable_func_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateConversionStmt.func_name) return func_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateConversionStmt::mutable_func_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateConversionStmt.func_name) return &func_name_; } inline const ::pg_query::Node& CreateConversionStmt::_internal_func_name(int index) const { return func_name_.Get(index); } inline const ::pg_query::Node& CreateConversionStmt::func_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.func_name) return _internal_func_name(index); } inline ::pg_query::Node* CreateConversionStmt::_internal_add_func_name() { return func_name_.Add(); } inline ::pg_query::Node* CreateConversionStmt::add_func_name() { // @@protoc_insertion_point(field_add:pg_query.CreateConversionStmt.func_name) return _internal_add_func_name(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateConversionStmt::func_name() const { // @@protoc_insertion_point(field_list:pg_query.CreateConversionStmt.func_name) return func_name_; } // bool def = 5 [json_name = "def"]; inline void CreateConversionStmt::clear_def() { def_ = false; } inline bool CreateConversionStmt::_internal_def() const { return def_; } inline bool CreateConversionStmt::def() const { // @@protoc_insertion_point(field_get:pg_query.CreateConversionStmt.def) return _internal_def(); } inline void CreateConversionStmt::_internal_set_def(bool value) { def_ = value; } inline void CreateConversionStmt::set_def(bool value) { _internal_set_def(value); // @@protoc_insertion_point(field_set:pg_query.CreateConversionStmt.def) } // ------------------------------------------------------------------- // CreateCastStmt // .pg_query.TypeName sourcetype = 1 [json_name = "sourcetype"]; inline bool CreateCastStmt::_internal_has_sourcetype() const { return this != internal_default_instance() && sourcetype_ != nullptr; } inline bool CreateCastStmt::has_sourcetype() const { return _internal_has_sourcetype(); } inline void CreateCastStmt::clear_sourcetype() { if (GetArena() == nullptr && sourcetype_ != nullptr) { delete sourcetype_; } sourcetype_ = nullptr; } inline const ::pg_query::TypeName& CreateCastStmt::_internal_sourcetype() const { const ::pg_query::TypeName* p = sourcetype_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateCastStmt::sourcetype() const { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.sourcetype) return _internal_sourcetype(); } inline void CreateCastStmt::unsafe_arena_set_allocated_sourcetype( ::pg_query::TypeName* sourcetype) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(sourcetype_); } sourcetype_ = sourcetype; if (sourcetype) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.sourcetype) } inline ::pg_query::TypeName* CreateCastStmt::release_sourcetype() { ::pg_query::TypeName* temp = sourcetype_; sourcetype_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* CreateCastStmt::unsafe_arena_release_sourcetype() { // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.sourcetype) ::pg_query::TypeName* temp = sourcetype_; sourcetype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateCastStmt::_internal_mutable_sourcetype() { if (sourcetype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); sourcetype_ = p; } return sourcetype_; } inline ::pg_query::TypeName* CreateCastStmt::mutable_sourcetype() { // @@protoc_insertion_point(field_mutable:pg_query.CreateCastStmt.sourcetype) return _internal_mutable_sourcetype(); } inline void CreateCastStmt::set_allocated_sourcetype(::pg_query::TypeName* sourcetype) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete sourcetype_; } if (sourcetype) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(sourcetype); if (message_arena != submessage_arena) { sourcetype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, sourcetype, submessage_arena); } } else { } sourcetype_ = sourcetype; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.sourcetype) } // .pg_query.TypeName targettype = 2 [json_name = "targettype"]; inline bool CreateCastStmt::_internal_has_targettype() const { return this != internal_default_instance() && targettype_ != nullptr; } inline bool CreateCastStmt::has_targettype() const { return _internal_has_targettype(); } inline void CreateCastStmt::clear_targettype() { if (GetArena() == nullptr && targettype_ != nullptr) { delete targettype_; } targettype_ = nullptr; } inline const ::pg_query::TypeName& CreateCastStmt::_internal_targettype() const { const ::pg_query::TypeName* p = targettype_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateCastStmt::targettype() const { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.targettype) return _internal_targettype(); } inline void CreateCastStmt::unsafe_arena_set_allocated_targettype( ::pg_query::TypeName* targettype) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(targettype_); } targettype_ = targettype; if (targettype) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.targettype) } inline ::pg_query::TypeName* CreateCastStmt::release_targettype() { ::pg_query::TypeName* temp = targettype_; targettype_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* CreateCastStmt::unsafe_arena_release_targettype() { // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.targettype) ::pg_query::TypeName* temp = targettype_; targettype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateCastStmt::_internal_mutable_targettype() { if (targettype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); targettype_ = p; } return targettype_; } inline ::pg_query::TypeName* CreateCastStmt::mutable_targettype() { // @@protoc_insertion_point(field_mutable:pg_query.CreateCastStmt.targettype) return _internal_mutable_targettype(); } inline void CreateCastStmt::set_allocated_targettype(::pg_query::TypeName* targettype) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete targettype_; } if (targettype) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(targettype); if (message_arena != submessage_arena) { targettype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, targettype, submessage_arena); } } else { } targettype_ = targettype; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.targettype) } // .pg_query.ObjectWithArgs func = 3 [json_name = "func"]; inline bool CreateCastStmt::_internal_has_func() const { return this != internal_default_instance() && func_ != nullptr; } inline bool CreateCastStmt::has_func() const { return _internal_has_func(); } inline void CreateCastStmt::clear_func() { if (GetArena() == nullptr && func_ != nullptr) { delete func_; } func_ = nullptr; } inline const ::pg_query::ObjectWithArgs& CreateCastStmt::_internal_func() const { const ::pg_query::ObjectWithArgs* p = func_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& CreateCastStmt::func() const { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.func) return _internal_func(); } inline void CreateCastStmt::unsafe_arena_set_allocated_func( ::pg_query::ObjectWithArgs* func) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(func_); } func_ = func; if (func) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateCastStmt.func) } inline ::pg_query::ObjectWithArgs* CreateCastStmt::release_func() { ::pg_query::ObjectWithArgs* temp = func_; func_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::ObjectWithArgs* CreateCastStmt::unsafe_arena_release_func() { // @@protoc_insertion_point(field_release:pg_query.CreateCastStmt.func) ::pg_query::ObjectWithArgs* temp = func_; func_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateCastStmt::_internal_mutable_func() { if (func_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); func_ = p; } return func_; } inline ::pg_query::ObjectWithArgs* CreateCastStmt::mutable_func() { // @@protoc_insertion_point(field_mutable:pg_query.CreateCastStmt.func) return _internal_mutable_func(); } inline void CreateCastStmt::set_allocated_func(::pg_query::ObjectWithArgs* func) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete func_; } if (func) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(func); if (message_arena != submessage_arena) { func = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, func, submessage_arena); } } else { } func_ = func; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateCastStmt.func) } // .pg_query.CoercionContext context = 4 [json_name = "context"]; inline void CreateCastStmt::clear_context() { context_ = 0; } inline ::pg_query::CoercionContext CreateCastStmt::_internal_context() const { return static_cast< ::pg_query::CoercionContext >(context_); } inline ::pg_query::CoercionContext CreateCastStmt::context() const { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.context) return _internal_context(); } inline void CreateCastStmt::_internal_set_context(::pg_query::CoercionContext value) { context_ = value; } inline void CreateCastStmt::set_context(::pg_query::CoercionContext value) { _internal_set_context(value); // @@protoc_insertion_point(field_set:pg_query.CreateCastStmt.context) } // bool inout = 5 [json_name = "inout"]; inline void CreateCastStmt::clear_inout() { inout_ = false; } inline bool CreateCastStmt::_internal_inout() const { return inout_; } inline bool CreateCastStmt::inout() const { // @@protoc_insertion_point(field_get:pg_query.CreateCastStmt.inout) return _internal_inout(); } inline void CreateCastStmt::_internal_set_inout(bool value) { inout_ = value; } inline void CreateCastStmt::set_inout(bool value) { _internal_set_inout(value); // @@protoc_insertion_point(field_set:pg_query.CreateCastStmt.inout) } // ------------------------------------------------------------------- // CreateOpClassStmt // repeated .pg_query.Node opclassname = 1 [json_name = "opclassname"]; inline int CreateOpClassStmt::_internal_opclassname_size() const { return opclassname_.size(); } inline int CreateOpClassStmt::opclassname_size() const { return _internal_opclassname_size(); } inline void CreateOpClassStmt::clear_opclassname() { opclassname_.Clear(); } inline ::pg_query::Node* CreateOpClassStmt::mutable_opclassname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.opclassname) return opclassname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpClassStmt::mutable_opclassname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.opclassname) return &opclassname_; } inline const ::pg_query::Node& CreateOpClassStmt::_internal_opclassname(int index) const { return opclassname_.Get(index); } inline const ::pg_query::Node& CreateOpClassStmt::opclassname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.opclassname) return _internal_opclassname(index); } inline ::pg_query::Node* CreateOpClassStmt::_internal_add_opclassname() { return opclassname_.Add(); } inline ::pg_query::Node* CreateOpClassStmt::add_opclassname() { // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.opclassname) return _internal_add_opclassname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpClassStmt::opclassname() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.opclassname) return opclassname_; } // repeated .pg_query.Node opfamilyname = 2 [json_name = "opfamilyname"]; inline int CreateOpClassStmt::_internal_opfamilyname_size() const { return opfamilyname_.size(); } inline int CreateOpClassStmt::opfamilyname_size() const { return _internal_opfamilyname_size(); } inline void CreateOpClassStmt::clear_opfamilyname() { opfamilyname_.Clear(); } inline ::pg_query::Node* CreateOpClassStmt::mutable_opfamilyname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.opfamilyname) return opfamilyname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpClassStmt::mutable_opfamilyname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.opfamilyname) return &opfamilyname_; } inline const ::pg_query::Node& CreateOpClassStmt::_internal_opfamilyname(int index) const { return opfamilyname_.Get(index); } inline const ::pg_query::Node& CreateOpClassStmt::opfamilyname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.opfamilyname) return _internal_opfamilyname(index); } inline ::pg_query::Node* CreateOpClassStmt::_internal_add_opfamilyname() { return opfamilyname_.Add(); } inline ::pg_query::Node* CreateOpClassStmt::add_opfamilyname() { // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.opfamilyname) return _internal_add_opfamilyname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpClassStmt::opfamilyname() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.opfamilyname) return opfamilyname_; } // string amname = 3 [json_name = "amname"]; inline void CreateOpClassStmt::clear_amname() { amname_.ClearToEmpty(); } inline const std::string& CreateOpClassStmt::amname() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.amname) return _internal_amname(); } inline void CreateOpClassStmt::set_amname(const std::string& value) { _internal_set_amname(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassStmt.amname) } inline std::string* CreateOpClassStmt::mutable_amname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.amname) return _internal_mutable_amname(); } inline const std::string& CreateOpClassStmt::_internal_amname() const { return amname_.Get(); } inline void CreateOpClassStmt::_internal_set_amname(const std::string& value) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateOpClassStmt::set_amname(std::string&& value) { amname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateOpClassStmt.amname) } inline void CreateOpClassStmt::set_amname(const char* value) { GOOGLE_DCHECK(value != nullptr); amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateOpClassStmt.amname) } inline void CreateOpClassStmt::set_amname(const char* value, size_t size) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateOpClassStmt.amname) } inline std::string* CreateOpClassStmt::_internal_mutable_amname() { return amname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateOpClassStmt::release_amname() { // @@protoc_insertion_point(field_release:pg_query.CreateOpClassStmt.amname) return amname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateOpClassStmt::set_allocated_amname(std::string* amname) { if (amname != nullptr) { } else { } amname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), amname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassStmt.amname) } // .pg_query.TypeName datatype = 4 [json_name = "datatype"]; inline bool CreateOpClassStmt::_internal_has_datatype() const { return this != internal_default_instance() && datatype_ != nullptr; } inline bool CreateOpClassStmt::has_datatype() const { return _internal_has_datatype(); } inline void CreateOpClassStmt::clear_datatype() { if (GetArena() == nullptr && datatype_ != nullptr) { delete datatype_; } datatype_ = nullptr; } inline const ::pg_query::TypeName& CreateOpClassStmt::_internal_datatype() const { const ::pg_query::TypeName* p = datatype_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateOpClassStmt::datatype() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.datatype) return _internal_datatype(); } inline void CreateOpClassStmt::unsafe_arena_set_allocated_datatype( ::pg_query::TypeName* datatype) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(datatype_); } datatype_ = datatype; if (datatype) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassStmt.datatype) } inline ::pg_query::TypeName* CreateOpClassStmt::release_datatype() { ::pg_query::TypeName* temp = datatype_; datatype_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* CreateOpClassStmt::unsafe_arena_release_datatype() { // @@protoc_insertion_point(field_release:pg_query.CreateOpClassStmt.datatype) ::pg_query::TypeName* temp = datatype_; datatype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateOpClassStmt::_internal_mutable_datatype() { if (datatype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); datatype_ = p; } return datatype_; } inline ::pg_query::TypeName* CreateOpClassStmt::mutable_datatype() { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.datatype) return _internal_mutable_datatype(); } inline void CreateOpClassStmt::set_allocated_datatype(::pg_query::TypeName* datatype) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete datatype_; } if (datatype) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(datatype); if (message_arena != submessage_arena) { datatype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, datatype, submessage_arena); } } else { } datatype_ = datatype; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassStmt.datatype) } // repeated .pg_query.Node items = 5 [json_name = "items"]; inline int CreateOpClassStmt::_internal_items_size() const { return items_.size(); } inline int CreateOpClassStmt::items_size() const { return _internal_items_size(); } inline void CreateOpClassStmt::clear_items() { items_.Clear(); } inline ::pg_query::Node* CreateOpClassStmt::mutable_items(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassStmt.items) return items_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpClassStmt::mutable_items() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassStmt.items) return &items_; } inline const ::pg_query::Node& CreateOpClassStmt::_internal_items(int index) const { return items_.Get(index); } inline const ::pg_query::Node& CreateOpClassStmt::items(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.items) return _internal_items(index); } inline ::pg_query::Node* CreateOpClassStmt::_internal_add_items() { return items_.Add(); } inline ::pg_query::Node* CreateOpClassStmt::add_items() { // @@protoc_insertion_point(field_add:pg_query.CreateOpClassStmt.items) return _internal_add_items(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpClassStmt::items() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassStmt.items) return items_; } // bool is_default = 6 [json_name = "isDefault"]; inline void CreateOpClassStmt::clear_is_default() { is_default_ = false; } inline bool CreateOpClassStmt::_internal_is_default() const { return is_default_; } inline bool CreateOpClassStmt::is_default() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassStmt.is_default) return _internal_is_default(); } inline void CreateOpClassStmt::_internal_set_is_default(bool value) { is_default_ = value; } inline void CreateOpClassStmt::set_is_default(bool value) { _internal_set_is_default(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassStmt.is_default) } // ------------------------------------------------------------------- // CreateOpFamilyStmt // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; inline int CreateOpFamilyStmt::_internal_opfamilyname_size() const { return opfamilyname_.size(); } inline int CreateOpFamilyStmt::opfamilyname_size() const { return _internal_opfamilyname_size(); } inline void CreateOpFamilyStmt::clear_opfamilyname() { opfamilyname_.Clear(); } inline ::pg_query::Node* CreateOpFamilyStmt::mutable_opfamilyname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpFamilyStmt.opfamilyname) return opfamilyname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpFamilyStmt::mutable_opfamilyname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpFamilyStmt.opfamilyname) return &opfamilyname_; } inline const ::pg_query::Node& CreateOpFamilyStmt::_internal_opfamilyname(int index) const { return opfamilyname_.Get(index); } inline const ::pg_query::Node& CreateOpFamilyStmt::opfamilyname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpFamilyStmt.opfamilyname) return _internal_opfamilyname(index); } inline ::pg_query::Node* CreateOpFamilyStmt::_internal_add_opfamilyname() { return opfamilyname_.Add(); } inline ::pg_query::Node* CreateOpFamilyStmt::add_opfamilyname() { // @@protoc_insertion_point(field_add:pg_query.CreateOpFamilyStmt.opfamilyname) return _internal_add_opfamilyname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpFamilyStmt::opfamilyname() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpFamilyStmt.opfamilyname) return opfamilyname_; } // string amname = 2 [json_name = "amname"]; inline void CreateOpFamilyStmt::clear_amname() { amname_.ClearToEmpty(); } inline const std::string& CreateOpFamilyStmt::amname() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpFamilyStmt.amname) return _internal_amname(); } inline void CreateOpFamilyStmt::set_amname(const std::string& value) { _internal_set_amname(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpFamilyStmt.amname) } inline std::string* CreateOpFamilyStmt::mutable_amname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpFamilyStmt.amname) return _internal_mutable_amname(); } inline const std::string& CreateOpFamilyStmt::_internal_amname() const { return amname_.Get(); } inline void CreateOpFamilyStmt::_internal_set_amname(const std::string& value) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateOpFamilyStmt::set_amname(std::string&& value) { amname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateOpFamilyStmt.amname) } inline void CreateOpFamilyStmt::set_amname(const char* value) { GOOGLE_DCHECK(value != nullptr); amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateOpFamilyStmt.amname) } inline void CreateOpFamilyStmt::set_amname(const char* value, size_t size) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateOpFamilyStmt.amname) } inline std::string* CreateOpFamilyStmt::_internal_mutable_amname() { return amname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateOpFamilyStmt::release_amname() { // @@protoc_insertion_point(field_release:pg_query.CreateOpFamilyStmt.amname) return amname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateOpFamilyStmt::set_allocated_amname(std::string* amname) { if (amname != nullptr) { } else { } amname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), amname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpFamilyStmt.amname) } // ------------------------------------------------------------------- // AlterOpFamilyStmt // repeated .pg_query.Node opfamilyname = 1 [json_name = "opfamilyname"]; inline int AlterOpFamilyStmt::_internal_opfamilyname_size() const { return opfamilyname_.size(); } inline int AlterOpFamilyStmt::opfamilyname_size() const { return _internal_opfamilyname_size(); } inline void AlterOpFamilyStmt::clear_opfamilyname() { opfamilyname_.Clear(); } inline ::pg_query::Node* AlterOpFamilyStmt::mutable_opfamilyname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.opfamilyname) return opfamilyname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterOpFamilyStmt::mutable_opfamilyname() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOpFamilyStmt.opfamilyname) return &opfamilyname_; } inline const ::pg_query::Node& AlterOpFamilyStmt::_internal_opfamilyname(int index) const { return opfamilyname_.Get(index); } inline const ::pg_query::Node& AlterOpFamilyStmt::opfamilyname(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.opfamilyname) return _internal_opfamilyname(index); } inline ::pg_query::Node* AlterOpFamilyStmt::_internal_add_opfamilyname() { return opfamilyname_.Add(); } inline ::pg_query::Node* AlterOpFamilyStmt::add_opfamilyname() { // @@protoc_insertion_point(field_add:pg_query.AlterOpFamilyStmt.opfamilyname) return _internal_add_opfamilyname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterOpFamilyStmt::opfamilyname() const { // @@protoc_insertion_point(field_list:pg_query.AlterOpFamilyStmt.opfamilyname) return opfamilyname_; } // string amname = 2 [json_name = "amname"]; inline void AlterOpFamilyStmt::clear_amname() { amname_.ClearToEmpty(); } inline const std::string& AlterOpFamilyStmt::amname() const { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.amname) return _internal_amname(); } inline void AlterOpFamilyStmt::set_amname(const std::string& value) { _internal_set_amname(value); // @@protoc_insertion_point(field_set:pg_query.AlterOpFamilyStmt.amname) } inline std::string* AlterOpFamilyStmt::mutable_amname() { // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.amname) return _internal_mutable_amname(); } inline const std::string& AlterOpFamilyStmt::_internal_amname() const { return amname_.Get(); } inline void AlterOpFamilyStmt::_internal_set_amname(const std::string& value) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterOpFamilyStmt::set_amname(std::string&& value) { amname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterOpFamilyStmt.amname) } inline void AlterOpFamilyStmt::set_amname(const char* value) { GOOGLE_DCHECK(value != nullptr); amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterOpFamilyStmt.amname) } inline void AlterOpFamilyStmt::set_amname(const char* value, size_t size) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterOpFamilyStmt.amname) } inline std::string* AlterOpFamilyStmt::_internal_mutable_amname() { return amname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterOpFamilyStmt::release_amname() { // @@protoc_insertion_point(field_release:pg_query.AlterOpFamilyStmt.amname) return amname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterOpFamilyStmt::set_allocated_amname(std::string* amname) { if (amname != nullptr) { } else { } amname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), amname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOpFamilyStmt.amname) } // bool is_drop = 3 [json_name = "isDrop"]; inline void AlterOpFamilyStmt::clear_is_drop() { is_drop_ = false; } inline bool AlterOpFamilyStmt::_internal_is_drop() const { return is_drop_; } inline bool AlterOpFamilyStmt::is_drop() const { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.is_drop) return _internal_is_drop(); } inline void AlterOpFamilyStmt::_internal_set_is_drop(bool value) { is_drop_ = value; } inline void AlterOpFamilyStmt::set_is_drop(bool value) { _internal_set_is_drop(value); // @@protoc_insertion_point(field_set:pg_query.AlterOpFamilyStmt.is_drop) } // repeated .pg_query.Node items = 4 [json_name = "items"]; inline int AlterOpFamilyStmt::_internal_items_size() const { return items_.size(); } inline int AlterOpFamilyStmt::items_size() const { return _internal_items_size(); } inline void AlterOpFamilyStmt::clear_items() { items_.Clear(); } inline ::pg_query::Node* AlterOpFamilyStmt::mutable_items(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterOpFamilyStmt.items) return items_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterOpFamilyStmt::mutable_items() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOpFamilyStmt.items) return &items_; } inline const ::pg_query::Node& AlterOpFamilyStmt::_internal_items(int index) const { return items_.Get(index); } inline const ::pg_query::Node& AlterOpFamilyStmt::items(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterOpFamilyStmt.items) return _internal_items(index); } inline ::pg_query::Node* AlterOpFamilyStmt::_internal_add_items() { return items_.Add(); } inline ::pg_query::Node* AlterOpFamilyStmt::add_items() { // @@protoc_insertion_point(field_add:pg_query.AlterOpFamilyStmt.items) return _internal_add_items(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterOpFamilyStmt::items() const { // @@protoc_insertion_point(field_list:pg_query.AlterOpFamilyStmt.items) return items_; } // ------------------------------------------------------------------- // PrepareStmt // string name = 1 [json_name = "name"]; inline void PrepareStmt::clear_name() { name_.ClearToEmpty(); } inline const std::string& PrepareStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.name) return _internal_name(); } inline void PrepareStmt::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.PrepareStmt.name) } inline std::string* PrepareStmt::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.PrepareStmt.name) return _internal_mutable_name(); } inline const std::string& PrepareStmt::_internal_name() const { return name_.Get(); } inline void PrepareStmt::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void PrepareStmt::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.PrepareStmt.name) } inline void PrepareStmt::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.PrepareStmt.name) } inline void PrepareStmt::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.PrepareStmt.name) } inline std::string* PrepareStmt::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* PrepareStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.PrepareStmt.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void PrepareStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.PrepareStmt.name) } // repeated .pg_query.Node argtypes = 2 [json_name = "argtypes"]; inline int PrepareStmt::_internal_argtypes_size() const { return argtypes_.size(); } inline int PrepareStmt::argtypes_size() const { return _internal_argtypes_size(); } inline void PrepareStmt::clear_argtypes() { argtypes_.Clear(); } inline ::pg_query::Node* PrepareStmt::mutable_argtypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PrepareStmt.argtypes) return argtypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PrepareStmt::mutable_argtypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.PrepareStmt.argtypes) return &argtypes_; } inline const ::pg_query::Node& PrepareStmt::_internal_argtypes(int index) const { return argtypes_.Get(index); } inline const ::pg_query::Node& PrepareStmt::argtypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.argtypes) return _internal_argtypes(index); } inline ::pg_query::Node* PrepareStmt::_internal_add_argtypes() { return argtypes_.Add(); } inline ::pg_query::Node* PrepareStmt::add_argtypes() { // @@protoc_insertion_point(field_add:pg_query.PrepareStmt.argtypes) return _internal_add_argtypes(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PrepareStmt::argtypes() const { // @@protoc_insertion_point(field_list:pg_query.PrepareStmt.argtypes) return argtypes_; } // .pg_query.Node query = 3 [json_name = "query"]; inline bool PrepareStmt::_internal_has_query() const { return this != internal_default_instance() && query_ != nullptr; } inline bool PrepareStmt::has_query() const { return _internal_has_query(); } inline void PrepareStmt::clear_query() { if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; } inline const ::pg_query::Node& PrepareStmt::_internal_query() const { const ::pg_query::Node* p = query_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& PrepareStmt::query() const { // @@protoc_insertion_point(field_get:pg_query.PrepareStmt.query) return _internal_query(); } inline void PrepareStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); } query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PrepareStmt.query) } inline ::pg_query::Node* PrepareStmt::release_query() { ::pg_query::Node* temp = query_; query_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* PrepareStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.PrepareStmt.query) ::pg_query::Node* temp = query_; query_ = nullptr; return temp; } inline ::pg_query::Node* PrepareStmt::_internal_mutable_query() { if (query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); query_ = p; } return query_; } inline ::pg_query::Node* PrepareStmt::mutable_query() { // @@protoc_insertion_point(field_mutable:pg_query.PrepareStmt.query) return _internal_mutable_query(); } inline void PrepareStmt::set_allocated_query(::pg_query::Node* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.PrepareStmt.query) } // ------------------------------------------------------------------- // ExecuteStmt // string name = 1 [json_name = "name"]; inline void ExecuteStmt::clear_name() { name_.ClearToEmpty(); } inline const std::string& ExecuteStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.ExecuteStmt.name) return _internal_name(); } inline void ExecuteStmt::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.ExecuteStmt.name) } inline std::string* ExecuteStmt::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.ExecuteStmt.name) return _internal_mutable_name(); } inline const std::string& ExecuteStmt::_internal_name() const { return name_.Get(); } inline void ExecuteStmt::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ExecuteStmt::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ExecuteStmt.name) } inline void ExecuteStmt::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ExecuteStmt.name) } inline void ExecuteStmt::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ExecuteStmt.name) } inline std::string* ExecuteStmt::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ExecuteStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.ExecuteStmt.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ExecuteStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ExecuteStmt.name) } // repeated .pg_query.Node params = 2 [json_name = "params"]; inline int ExecuteStmt::_internal_params_size() const { return params_.size(); } inline int ExecuteStmt::params_size() const { return _internal_params_size(); } inline void ExecuteStmt::clear_params() { params_.Clear(); } inline ::pg_query::Node* ExecuteStmt::mutable_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ExecuteStmt.params) return params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ExecuteStmt::mutable_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.ExecuteStmt.params) return ¶ms_; } inline const ::pg_query::Node& ExecuteStmt::_internal_params(int index) const { return params_.Get(index); } inline const ::pg_query::Node& ExecuteStmt::params(int index) const { // @@protoc_insertion_point(field_get:pg_query.ExecuteStmt.params) return _internal_params(index); } inline ::pg_query::Node* ExecuteStmt::_internal_add_params() { return params_.Add(); } inline ::pg_query::Node* ExecuteStmt::add_params() { // @@protoc_insertion_point(field_add:pg_query.ExecuteStmt.params) return _internal_add_params(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ExecuteStmt::params() const { // @@protoc_insertion_point(field_list:pg_query.ExecuteStmt.params) return params_; } // ------------------------------------------------------------------- // DeallocateStmt // string name = 1 [json_name = "name"]; inline void DeallocateStmt::clear_name() { name_.ClearToEmpty(); } inline const std::string& DeallocateStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.DeallocateStmt.name) return _internal_name(); } inline void DeallocateStmt::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.DeallocateStmt.name) } inline std::string* DeallocateStmt::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.DeallocateStmt.name) return _internal_mutable_name(); } inline const std::string& DeallocateStmt::_internal_name() const { return name_.Get(); } inline void DeallocateStmt::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void DeallocateStmt::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.DeallocateStmt.name) } inline void DeallocateStmt::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.DeallocateStmt.name) } inline void DeallocateStmt::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.DeallocateStmt.name) } inline std::string* DeallocateStmt::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* DeallocateStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.DeallocateStmt.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void DeallocateStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.DeallocateStmt.name) } // ------------------------------------------------------------------- // DeclareCursorStmt // string portalname = 1 [json_name = "portalname"]; inline void DeclareCursorStmt::clear_portalname() { portalname_.ClearToEmpty(); } inline const std::string& DeclareCursorStmt::portalname() const { // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.portalname) return _internal_portalname(); } inline void DeclareCursorStmt::set_portalname(const std::string& value) { _internal_set_portalname(value); // @@protoc_insertion_point(field_set:pg_query.DeclareCursorStmt.portalname) } inline std::string* DeclareCursorStmt::mutable_portalname() { // @@protoc_insertion_point(field_mutable:pg_query.DeclareCursorStmt.portalname) return _internal_mutable_portalname(); } inline const std::string& DeclareCursorStmt::_internal_portalname() const { return portalname_.Get(); } inline void DeclareCursorStmt::_internal_set_portalname(const std::string& value) { portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void DeclareCursorStmt::set_portalname(std::string&& value) { portalname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.DeclareCursorStmt.portalname) } inline void DeclareCursorStmt::set_portalname(const char* value) { GOOGLE_DCHECK(value != nullptr); portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.DeclareCursorStmt.portalname) } inline void DeclareCursorStmt::set_portalname(const char* value, size_t size) { portalname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.DeclareCursorStmt.portalname) } inline std::string* DeclareCursorStmt::_internal_mutable_portalname() { return portalname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* DeclareCursorStmt::release_portalname() { // @@protoc_insertion_point(field_release:pg_query.DeclareCursorStmt.portalname) return portalname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void DeclareCursorStmt::set_allocated_portalname(std::string* portalname) { if (portalname != nullptr) { } else { } portalname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), portalname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.DeclareCursorStmt.portalname) } // int32 options = 2 [json_name = "options"]; inline void DeclareCursorStmt::clear_options() { options_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 DeclareCursorStmt::_internal_options() const { return options_; } inline ::PROTOBUF_NAMESPACE_ID::int32 DeclareCursorStmt::options() const { // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.options) return _internal_options(); } inline void DeclareCursorStmt::_internal_set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { options_ = value; } inline void DeclareCursorStmt::set_options(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_options(value); // @@protoc_insertion_point(field_set:pg_query.DeclareCursorStmt.options) } // .pg_query.Node query = 3 [json_name = "query"]; inline bool DeclareCursorStmt::_internal_has_query() const { return this != internal_default_instance() && query_ != nullptr; } inline bool DeclareCursorStmt::has_query() const { return _internal_has_query(); } inline void DeclareCursorStmt::clear_query() { if (GetArena() == nullptr && query_ != nullptr) { delete query_; } query_ = nullptr; } inline const ::pg_query::Node& DeclareCursorStmt::_internal_query() const { const ::pg_query::Node* p = query_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& DeclareCursorStmt::query() const { // @@protoc_insertion_point(field_get:pg_query.DeclareCursorStmt.query) return _internal_query(); } inline void DeclareCursorStmt::unsafe_arena_set_allocated_query( ::pg_query::Node* query) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(query_); } query_ = query; if (query) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DeclareCursorStmt.query) } inline ::pg_query::Node* DeclareCursorStmt::release_query() { ::pg_query::Node* temp = query_; query_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* DeclareCursorStmt::unsafe_arena_release_query() { // @@protoc_insertion_point(field_release:pg_query.DeclareCursorStmt.query) ::pg_query::Node* temp = query_; query_ = nullptr; return temp; } inline ::pg_query::Node* DeclareCursorStmt::_internal_mutable_query() { if (query_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); query_ = p; } return query_; } inline ::pg_query::Node* DeclareCursorStmt::mutable_query() { // @@protoc_insertion_point(field_mutable:pg_query.DeclareCursorStmt.query) return _internal_mutable_query(); } inline void DeclareCursorStmt::set_allocated_query(::pg_query::Node* query) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete query_; } if (query) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(query); if (message_arena != submessage_arena) { query = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, query, submessage_arena); } } else { } query_ = query; // @@protoc_insertion_point(field_set_allocated:pg_query.DeclareCursorStmt.query) } // ------------------------------------------------------------------- // CreateTableSpaceStmt // string tablespacename = 1 [json_name = "tablespacename"]; inline void CreateTableSpaceStmt::clear_tablespacename() { tablespacename_.ClearToEmpty(); } inline const std::string& CreateTableSpaceStmt::tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.tablespacename) return _internal_tablespacename(); } inline void CreateTableSpaceStmt::set_tablespacename(const std::string& value) { _internal_set_tablespacename(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableSpaceStmt.tablespacename) } inline std::string* CreateTableSpaceStmt::mutable_tablespacename() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.tablespacename) return _internal_mutable_tablespacename(); } inline const std::string& CreateTableSpaceStmt::_internal_tablespacename() const { return tablespacename_.Get(); } inline void CreateTableSpaceStmt::_internal_set_tablespacename(const std::string& value) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateTableSpaceStmt::set_tablespacename(std::string&& value) { tablespacename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateTableSpaceStmt.tablespacename) } inline void CreateTableSpaceStmt::set_tablespacename(const char* value) { GOOGLE_DCHECK(value != nullptr); tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateTableSpaceStmt.tablespacename) } inline void CreateTableSpaceStmt::set_tablespacename(const char* value, size_t size) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateTableSpaceStmt.tablespacename) } inline std::string* CreateTableSpaceStmt::_internal_mutable_tablespacename() { return tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateTableSpaceStmt::release_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.tablespacename) return tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateTableSpaceStmt::set_allocated_tablespacename(std::string* tablespacename) { if (tablespacename != nullptr) { } else { } tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tablespacename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableSpaceStmt.tablespacename) } // .pg_query.RoleSpec owner = 2 [json_name = "owner"]; inline bool CreateTableSpaceStmt::_internal_has_owner() const { return this != internal_default_instance() && owner_ != nullptr; } inline bool CreateTableSpaceStmt::has_owner() const { return _internal_has_owner(); } inline void CreateTableSpaceStmt::clear_owner() { if (GetArena() == nullptr && owner_ != nullptr) { delete owner_; } owner_ = nullptr; } inline const ::pg_query::RoleSpec& CreateTableSpaceStmt::_internal_owner() const { const ::pg_query::RoleSpec* p = owner_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& CreateTableSpaceStmt::owner() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.owner) return _internal_owner(); } inline void CreateTableSpaceStmt::unsafe_arena_set_allocated_owner( ::pg_query::RoleSpec* owner) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(owner_); } owner_ = owner; if (owner) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTableSpaceStmt.owner) } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::release_owner() { ::pg_query::RoleSpec* temp = owner_; owner_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::unsafe_arena_release_owner() { // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.owner) ::pg_query::RoleSpec* temp = owner_; owner_ = nullptr; return temp; } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::_internal_mutable_owner() { if (owner_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); owner_ = p; } return owner_; } inline ::pg_query::RoleSpec* CreateTableSpaceStmt::mutable_owner() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.owner) return _internal_mutable_owner(); } inline void CreateTableSpaceStmt::set_allocated_owner(::pg_query::RoleSpec* owner) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete owner_; } if (owner) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(owner); if (message_arena != submessage_arena) { owner = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, owner, submessage_arena); } } else { } owner_ = owner; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableSpaceStmt.owner) } // string location = 3 [json_name = "location"]; inline void CreateTableSpaceStmt::clear_location() { location_.ClearToEmpty(); } inline const std::string& CreateTableSpaceStmt::location() const { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.location) return _internal_location(); } inline void CreateTableSpaceStmt::set_location(const std::string& value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CreateTableSpaceStmt.location) } inline std::string* CreateTableSpaceStmt::mutable_location() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.location) return _internal_mutable_location(); } inline const std::string& CreateTableSpaceStmt::_internal_location() const { return location_.Get(); } inline void CreateTableSpaceStmt::_internal_set_location(const std::string& value) { location_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateTableSpaceStmt::set_location(std::string&& value) { location_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateTableSpaceStmt.location) } inline void CreateTableSpaceStmt::set_location(const char* value) { GOOGLE_DCHECK(value != nullptr); location_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateTableSpaceStmt.location) } inline void CreateTableSpaceStmt::set_location(const char* value, size_t size) { location_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateTableSpaceStmt.location) } inline std::string* CreateTableSpaceStmt::_internal_mutable_location() { return location_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateTableSpaceStmt::release_location() { // @@protoc_insertion_point(field_release:pg_query.CreateTableSpaceStmt.location) return location_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateTableSpaceStmt::set_allocated_location(std::string* location) { if (location != nullptr) { } else { } location_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), location, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTableSpaceStmt.location) } // repeated .pg_query.Node options = 4 [json_name = "options"]; inline int CreateTableSpaceStmt::_internal_options_size() const { return options_.size(); } inline int CreateTableSpaceStmt::options_size() const { return _internal_options_size(); } inline void CreateTableSpaceStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateTableSpaceStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateTableSpaceStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateTableSpaceStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateTableSpaceStmt.options) return &options_; } inline const ::pg_query::Node& CreateTableSpaceStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateTableSpaceStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateTableSpaceStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateTableSpaceStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateTableSpaceStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateTableSpaceStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateTableSpaceStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateTableSpaceStmt.options) return options_; } // ------------------------------------------------------------------- // DropTableSpaceStmt // string tablespacename = 1 [json_name = "tablespacename"]; inline void DropTableSpaceStmt::clear_tablespacename() { tablespacename_.ClearToEmpty(); } inline const std::string& DropTableSpaceStmt::tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.DropTableSpaceStmt.tablespacename) return _internal_tablespacename(); } inline void DropTableSpaceStmt::set_tablespacename(const std::string& value) { _internal_set_tablespacename(value); // @@protoc_insertion_point(field_set:pg_query.DropTableSpaceStmt.tablespacename) } inline std::string* DropTableSpaceStmt::mutable_tablespacename() { // @@protoc_insertion_point(field_mutable:pg_query.DropTableSpaceStmt.tablespacename) return _internal_mutable_tablespacename(); } inline const std::string& DropTableSpaceStmt::_internal_tablespacename() const { return tablespacename_.Get(); } inline void DropTableSpaceStmt::_internal_set_tablespacename(const std::string& value) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void DropTableSpaceStmt::set_tablespacename(std::string&& value) { tablespacename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.DropTableSpaceStmt.tablespacename) } inline void DropTableSpaceStmt::set_tablespacename(const char* value) { GOOGLE_DCHECK(value != nullptr); tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.DropTableSpaceStmt.tablespacename) } inline void DropTableSpaceStmt::set_tablespacename(const char* value, size_t size) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.DropTableSpaceStmt.tablespacename) } inline std::string* DropTableSpaceStmt::_internal_mutable_tablespacename() { return tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* DropTableSpaceStmt::release_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.DropTableSpaceStmt.tablespacename) return tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void DropTableSpaceStmt::set_allocated_tablespacename(std::string* tablespacename) { if (tablespacename != nullptr) { } else { } tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tablespacename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.DropTableSpaceStmt.tablespacename) } // bool missing_ok = 2 [json_name = "missing_ok"]; inline void DropTableSpaceStmt::clear_missing_ok() { missing_ok_ = false; } inline bool DropTableSpaceStmt::_internal_missing_ok() const { return missing_ok_; } inline bool DropTableSpaceStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropTableSpaceStmt.missing_ok) return _internal_missing_ok(); } inline void DropTableSpaceStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void DropTableSpaceStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropTableSpaceStmt.missing_ok) } // ------------------------------------------------------------------- // AlterObjectDependsStmt // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; inline void AlterObjectDependsStmt::clear_object_type() { object_type_ = 0; } inline ::pg_query::ObjectType AlterObjectDependsStmt::_internal_object_type() const { return static_cast< ::pg_query::ObjectType >(object_type_); } inline ::pg_query::ObjectType AlterObjectDependsStmt::object_type() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.object_type) return _internal_object_type(); } inline void AlterObjectDependsStmt::_internal_set_object_type(::pg_query::ObjectType value) { object_type_ = value; } inline void AlterObjectDependsStmt::set_object_type(::pg_query::ObjectType value) { _internal_set_object_type(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectDependsStmt.object_type) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool AlterObjectDependsStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool AlterObjectDependsStmt::has_relation() const { return _internal_has_relation(); } inline void AlterObjectDependsStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& AlterObjectDependsStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterObjectDependsStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.relation) return _internal_relation(); } inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.relation) } inline ::pg_query::RangeVar* AlterObjectDependsStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* AlterObjectDependsStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterObjectDependsStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* AlterObjectDependsStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectDependsStmt.relation) return _internal_mutable_relation(); } inline void AlterObjectDependsStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.relation) } // .pg_query.Node object = 3 [json_name = "object"]; inline bool AlterObjectDependsStmt::_internal_has_object() const { return this != internal_default_instance() && object_ != nullptr; } inline bool AlterObjectDependsStmt::has_object() const { return _internal_has_object(); } inline void AlterObjectDependsStmt::clear_object() { if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; } inline const ::pg_query::Node& AlterObjectDependsStmt::_internal_object() const { const ::pg_query::Node* p = object_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterObjectDependsStmt::object() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.object) return _internal_object(); } inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); } object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.object) } inline ::pg_query::Node* AlterObjectDependsStmt::release_object() { ::pg_query::Node* temp = object_; object_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* AlterObjectDependsStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.object) ::pg_query::Node* temp = object_; object_ = nullptr; return temp; } inline ::pg_query::Node* AlterObjectDependsStmt::_internal_mutable_object() { if (object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); object_ = p; } return object_; } inline ::pg_query::Node* AlterObjectDependsStmt::mutable_object() { // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectDependsStmt.object) return _internal_mutable_object(); } inline void AlterObjectDependsStmt::set_allocated_object(::pg_query::Node* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.object) } // .pg_query.Node extname = 4 [json_name = "extname"]; inline bool AlterObjectDependsStmt::_internal_has_extname() const { return this != internal_default_instance() && extname_ != nullptr; } inline bool AlterObjectDependsStmt::has_extname() const { return _internal_has_extname(); } inline void AlterObjectDependsStmt::clear_extname() { if (GetArena() == nullptr && extname_ != nullptr) { delete extname_; } extname_ = nullptr; } inline const ::pg_query::Node& AlterObjectDependsStmt::_internal_extname() const { const ::pg_query::Node* p = extname_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterObjectDependsStmt::extname() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.extname) return _internal_extname(); } inline void AlterObjectDependsStmt::unsafe_arena_set_allocated_extname( ::pg_query::Node* extname) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(extname_); } extname_ = extname; if (extname) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectDependsStmt.extname) } inline ::pg_query::Node* AlterObjectDependsStmt::release_extname() { ::pg_query::Node* temp = extname_; extname_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* AlterObjectDependsStmt::unsafe_arena_release_extname() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectDependsStmt.extname) ::pg_query::Node* temp = extname_; extname_ = nullptr; return temp; } inline ::pg_query::Node* AlterObjectDependsStmt::_internal_mutable_extname() { if (extname_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); extname_ = p; } return extname_; } inline ::pg_query::Node* AlterObjectDependsStmt::mutable_extname() { // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectDependsStmt.extname) return _internal_mutable_extname(); } inline void AlterObjectDependsStmt::set_allocated_extname(::pg_query::Node* extname) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete extname_; } if (extname) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(extname); if (message_arena != submessage_arena) { extname = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, extname, submessage_arena); } } else { } extname_ = extname; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectDependsStmt.extname) } // bool remove = 5 [json_name = "remove"]; inline void AlterObjectDependsStmt::clear_remove() { remove_ = false; } inline bool AlterObjectDependsStmt::_internal_remove() const { return remove_; } inline bool AlterObjectDependsStmt::remove() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectDependsStmt.remove) return _internal_remove(); } inline void AlterObjectDependsStmt::_internal_set_remove(bool value) { remove_ = value; } inline void AlterObjectDependsStmt::set_remove(bool value) { _internal_set_remove(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectDependsStmt.remove) } // ------------------------------------------------------------------- // AlterObjectSchemaStmt // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; inline void AlterObjectSchemaStmt::clear_object_type() { object_type_ = 0; } inline ::pg_query::ObjectType AlterObjectSchemaStmt::_internal_object_type() const { return static_cast< ::pg_query::ObjectType >(object_type_); } inline ::pg_query::ObjectType AlterObjectSchemaStmt::object_type() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.object_type) return _internal_object_type(); } inline void AlterObjectSchemaStmt::_internal_set_object_type(::pg_query::ObjectType value) { object_type_ = value; } inline void AlterObjectSchemaStmt::set_object_type(::pg_query::ObjectType value) { _internal_set_object_type(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.object_type) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool AlterObjectSchemaStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool AlterObjectSchemaStmt::has_relation() const { return _internal_has_relation(); } inline void AlterObjectSchemaStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& AlterObjectSchemaStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterObjectSchemaStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.relation) return _internal_relation(); } inline void AlterObjectSchemaStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectSchemaStmt.relation) } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* AlterObjectSchemaStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectSchemaStmt.relation) return _internal_mutable_relation(); } inline void AlterObjectSchemaStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.relation) } // .pg_query.Node object = 3 [json_name = "object"]; inline bool AlterObjectSchemaStmt::_internal_has_object() const { return this != internal_default_instance() && object_ != nullptr; } inline bool AlterObjectSchemaStmt::has_object() const { return _internal_has_object(); } inline void AlterObjectSchemaStmt::clear_object() { if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; } inline const ::pg_query::Node& AlterObjectSchemaStmt::_internal_object() const { const ::pg_query::Node* p = object_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterObjectSchemaStmt::object() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.object) return _internal_object(); } inline void AlterObjectSchemaStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); } object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterObjectSchemaStmt.object) } inline ::pg_query::Node* AlterObjectSchemaStmt::release_object() { ::pg_query::Node* temp = object_; object_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* AlterObjectSchemaStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.object) ::pg_query::Node* temp = object_; object_ = nullptr; return temp; } inline ::pg_query::Node* AlterObjectSchemaStmt::_internal_mutable_object() { if (object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); object_ = p; } return object_; } inline ::pg_query::Node* AlterObjectSchemaStmt::mutable_object() { // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectSchemaStmt.object) return _internal_mutable_object(); } inline void AlterObjectSchemaStmt::set_allocated_object(::pg_query::Node* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.object) } // string newschema = 4 [json_name = "newschema"]; inline void AlterObjectSchemaStmt::clear_newschema() { newschema_.ClearToEmpty(); } inline const std::string& AlterObjectSchemaStmt::newschema() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.newschema) return _internal_newschema(); } inline void AlterObjectSchemaStmt::set_newschema(const std::string& value) { _internal_set_newschema(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.newschema) } inline std::string* AlterObjectSchemaStmt::mutable_newschema() { // @@protoc_insertion_point(field_mutable:pg_query.AlterObjectSchemaStmt.newschema) return _internal_mutable_newschema(); } inline const std::string& AlterObjectSchemaStmt::_internal_newschema() const { return newschema_.Get(); } inline void AlterObjectSchemaStmt::_internal_set_newschema(const std::string& value) { newschema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterObjectSchemaStmt::set_newschema(std::string&& value) { newschema_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterObjectSchemaStmt.newschema) } inline void AlterObjectSchemaStmt::set_newschema(const char* value) { GOOGLE_DCHECK(value != nullptr); newschema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterObjectSchemaStmt.newschema) } inline void AlterObjectSchemaStmt::set_newschema(const char* value, size_t size) { newschema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterObjectSchemaStmt.newschema) } inline std::string* AlterObjectSchemaStmt::_internal_mutable_newschema() { return newschema_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterObjectSchemaStmt::release_newschema() { // @@protoc_insertion_point(field_release:pg_query.AlterObjectSchemaStmt.newschema) return newschema_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterObjectSchemaStmt::set_allocated_newschema(std::string* newschema) { if (newschema != nullptr) { } else { } newschema_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), newschema, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterObjectSchemaStmt.newschema) } // bool missing_ok = 5 [json_name = "missing_ok"]; inline void AlterObjectSchemaStmt::clear_missing_ok() { missing_ok_ = false; } inline bool AlterObjectSchemaStmt::_internal_missing_ok() const { return missing_ok_; } inline bool AlterObjectSchemaStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterObjectSchemaStmt.missing_ok) return _internal_missing_ok(); } inline void AlterObjectSchemaStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void AlterObjectSchemaStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterObjectSchemaStmt.missing_ok) } // ------------------------------------------------------------------- // AlterOwnerStmt // .pg_query.ObjectType object_type = 1 [json_name = "objectType"]; inline void AlterOwnerStmt::clear_object_type() { object_type_ = 0; } inline ::pg_query::ObjectType AlterOwnerStmt::_internal_object_type() const { return static_cast< ::pg_query::ObjectType >(object_type_); } inline ::pg_query::ObjectType AlterOwnerStmt::object_type() const { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.object_type) return _internal_object_type(); } inline void AlterOwnerStmt::_internal_set_object_type(::pg_query::ObjectType value) { object_type_ = value; } inline void AlterOwnerStmt::set_object_type(::pg_query::ObjectType value) { _internal_set_object_type(value); // @@protoc_insertion_point(field_set:pg_query.AlterOwnerStmt.object_type) } // .pg_query.RangeVar relation = 2 [json_name = "relation"]; inline bool AlterOwnerStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool AlterOwnerStmt::has_relation() const { return _internal_has_relation(); } inline void AlterOwnerStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& AlterOwnerStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterOwnerStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.relation) return _internal_relation(); } inline void AlterOwnerStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.relation) } inline ::pg_query::RangeVar* AlterOwnerStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* AlterOwnerStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterOwnerStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* AlterOwnerStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.AlterOwnerStmt.relation) return _internal_mutable_relation(); } inline void AlterOwnerStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.relation) } // .pg_query.Node object = 3 [json_name = "object"]; inline bool AlterOwnerStmt::_internal_has_object() const { return this != internal_default_instance() && object_ != nullptr; } inline bool AlterOwnerStmt::has_object() const { return _internal_has_object(); } inline void AlterOwnerStmt::clear_object() { if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; } inline const ::pg_query::Node& AlterOwnerStmt::_internal_object() const { const ::pg_query::Node* p = object_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterOwnerStmt::object() const { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.object) return _internal_object(); } inline void AlterOwnerStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); } object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.object) } inline ::pg_query::Node* AlterOwnerStmt::release_object() { ::pg_query::Node* temp = object_; object_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* AlterOwnerStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.object) ::pg_query::Node* temp = object_; object_ = nullptr; return temp; } inline ::pg_query::Node* AlterOwnerStmt::_internal_mutable_object() { if (object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); object_ = p; } return object_; } inline ::pg_query::Node* AlterOwnerStmt::mutable_object() { // @@protoc_insertion_point(field_mutable:pg_query.AlterOwnerStmt.object) return _internal_mutable_object(); } inline void AlterOwnerStmt::set_allocated_object(::pg_query::Node* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.object) } // .pg_query.RoleSpec newowner = 4 [json_name = "newowner"]; inline bool AlterOwnerStmt::_internal_has_newowner() const { return this != internal_default_instance() && newowner_ != nullptr; } inline bool AlterOwnerStmt::has_newowner() const { return _internal_has_newowner(); } inline void AlterOwnerStmt::clear_newowner() { if (GetArena() == nullptr && newowner_ != nullptr) { delete newowner_; } newowner_ = nullptr; } inline const ::pg_query::RoleSpec& AlterOwnerStmt::_internal_newowner() const { const ::pg_query::RoleSpec* p = newowner_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& AlterOwnerStmt::newowner() const { // @@protoc_insertion_point(field_get:pg_query.AlterOwnerStmt.newowner) return _internal_newowner(); } inline void AlterOwnerStmt::unsafe_arena_set_allocated_newowner( ::pg_query::RoleSpec* newowner) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(newowner_); } newowner_ = newowner; if (newowner) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOwnerStmt.newowner) } inline ::pg_query::RoleSpec* AlterOwnerStmt::release_newowner() { ::pg_query::RoleSpec* temp = newowner_; newowner_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* AlterOwnerStmt::unsafe_arena_release_newowner() { // @@protoc_insertion_point(field_release:pg_query.AlterOwnerStmt.newowner) ::pg_query::RoleSpec* temp = newowner_; newowner_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterOwnerStmt::_internal_mutable_newowner() { if (newowner_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); newowner_ = p; } return newowner_; } inline ::pg_query::RoleSpec* AlterOwnerStmt::mutable_newowner() { // @@protoc_insertion_point(field_mutable:pg_query.AlterOwnerStmt.newowner) return _internal_mutable_newowner(); } inline void AlterOwnerStmt::set_allocated_newowner(::pg_query::RoleSpec* newowner) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete newowner_; } if (newowner) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(newowner); if (message_arena != submessage_arena) { newowner = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, newowner, submessage_arena); } } else { } newowner_ = newowner; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOwnerStmt.newowner) } // ------------------------------------------------------------------- // AlterOperatorStmt // .pg_query.ObjectWithArgs opername = 1 [json_name = "opername"]; inline bool AlterOperatorStmt::_internal_has_opername() const { return this != internal_default_instance() && opername_ != nullptr; } inline bool AlterOperatorStmt::has_opername() const { return _internal_has_opername(); } inline void AlterOperatorStmt::clear_opername() { if (GetArena() == nullptr && opername_ != nullptr) { delete opername_; } opername_ = nullptr; } inline const ::pg_query::ObjectWithArgs& AlterOperatorStmt::_internal_opername() const { const ::pg_query::ObjectWithArgs* p = opername_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& AlterOperatorStmt::opername() const { // @@protoc_insertion_point(field_get:pg_query.AlterOperatorStmt.opername) return _internal_opername(); } inline void AlterOperatorStmt::unsafe_arena_set_allocated_opername( ::pg_query::ObjectWithArgs* opername) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(opername_); } opername_ = opername; if (opername) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterOperatorStmt.opername) } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::release_opername() { ::pg_query::ObjectWithArgs* temp = opername_; opername_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::unsafe_arena_release_opername() { // @@protoc_insertion_point(field_release:pg_query.AlterOperatorStmt.opername) ::pg_query::ObjectWithArgs* temp = opername_; opername_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::_internal_mutable_opername() { if (opername_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); opername_ = p; } return opername_; } inline ::pg_query::ObjectWithArgs* AlterOperatorStmt::mutable_opername() { // @@protoc_insertion_point(field_mutable:pg_query.AlterOperatorStmt.opername) return _internal_mutable_opername(); } inline void AlterOperatorStmt::set_allocated_opername(::pg_query::ObjectWithArgs* opername) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete opername_; } if (opername) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(opername); if (message_arena != submessage_arena) { opername = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, opername, submessage_arena); } } else { } opername_ = opername; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterOperatorStmt.opername) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterOperatorStmt::_internal_options_size() const { return options_.size(); } inline int AlterOperatorStmt::options_size() const { return _internal_options_size(); } inline void AlterOperatorStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterOperatorStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterOperatorStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterOperatorStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterOperatorStmt.options) return &options_; } inline const ::pg_query::Node& AlterOperatorStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterOperatorStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterOperatorStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterOperatorStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterOperatorStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterOperatorStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterOperatorStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterOperatorStmt.options) return options_; } // ------------------------------------------------------------------- // AlterTypeStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int AlterTypeStmt::_internal_type_name_size() const { return type_name_.size(); } inline int AlterTypeStmt::type_name_size() const { return _internal_type_name_size(); } inline void AlterTypeStmt::clear_type_name() { type_name_.Clear(); } inline ::pg_query::Node* AlterTypeStmt::mutable_type_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTypeStmt.type_name) return type_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTypeStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTypeStmt.type_name) return &type_name_; } inline const ::pg_query::Node& AlterTypeStmt::_internal_type_name(int index) const { return type_name_.Get(index); } inline const ::pg_query::Node& AlterTypeStmt::type_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTypeStmt.type_name) return _internal_type_name(index); } inline ::pg_query::Node* AlterTypeStmt::_internal_add_type_name() { return type_name_.Add(); } inline ::pg_query::Node* AlterTypeStmt::add_type_name() { // @@protoc_insertion_point(field_add:pg_query.AlterTypeStmt.type_name) return _internal_add_type_name(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTypeStmt::type_name() const { // @@protoc_insertion_point(field_list:pg_query.AlterTypeStmt.type_name) return type_name_; } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterTypeStmt::_internal_options_size() const { return options_.size(); } inline int AlterTypeStmt::options_size() const { return _internal_options_size(); } inline void AlterTypeStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterTypeStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTypeStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTypeStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTypeStmt.options) return &options_; } inline const ::pg_query::Node& AlterTypeStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterTypeStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTypeStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterTypeStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterTypeStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterTypeStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTypeStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterTypeStmt.options) return options_; } // ------------------------------------------------------------------- // DropOwnedStmt // repeated .pg_query.Node roles = 1 [json_name = "roles"]; inline int DropOwnedStmt::_internal_roles_size() const { return roles_.size(); } inline int DropOwnedStmt::roles_size() const { return _internal_roles_size(); } inline void DropOwnedStmt::clear_roles() { roles_.Clear(); } inline ::pg_query::Node* DropOwnedStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.DropOwnedStmt.roles) return roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* DropOwnedStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.DropOwnedStmt.roles) return &roles_; } inline const ::pg_query::Node& DropOwnedStmt::_internal_roles(int index) const { return roles_.Get(index); } inline const ::pg_query::Node& DropOwnedStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.DropOwnedStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* DropOwnedStmt::_internal_add_roles() { return roles_.Add(); } inline ::pg_query::Node* DropOwnedStmt::add_roles() { // @@protoc_insertion_point(field_add:pg_query.DropOwnedStmt.roles) return _internal_add_roles(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& DropOwnedStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.DropOwnedStmt.roles) return roles_; } // .pg_query.DropBehavior behavior = 2 [json_name = "behavior"]; inline void DropOwnedStmt::clear_behavior() { behavior_ = 0; } inline ::pg_query::DropBehavior DropOwnedStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(behavior_); } inline ::pg_query::DropBehavior DropOwnedStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.DropOwnedStmt.behavior) return _internal_behavior(); } inline void DropOwnedStmt::_internal_set_behavior(::pg_query::DropBehavior value) { behavior_ = value; } inline void DropOwnedStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.DropOwnedStmt.behavior) } // ------------------------------------------------------------------- // ReassignOwnedStmt // repeated .pg_query.Node roles = 1 [json_name = "roles"]; inline int ReassignOwnedStmt::_internal_roles_size() const { return roles_.size(); } inline int ReassignOwnedStmt::roles_size() const { return _internal_roles_size(); } inline void ReassignOwnedStmt::clear_roles() { roles_.Clear(); } inline ::pg_query::Node* ReassignOwnedStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ReassignOwnedStmt.roles) return roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ReassignOwnedStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.ReassignOwnedStmt.roles) return &roles_; } inline const ::pg_query::Node& ReassignOwnedStmt::_internal_roles(int index) const { return roles_.Get(index); } inline const ::pg_query::Node& ReassignOwnedStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.ReassignOwnedStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* ReassignOwnedStmt::_internal_add_roles() { return roles_.Add(); } inline ::pg_query::Node* ReassignOwnedStmt::add_roles() { // @@protoc_insertion_point(field_add:pg_query.ReassignOwnedStmt.roles) return _internal_add_roles(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ReassignOwnedStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.ReassignOwnedStmt.roles) return roles_; } // .pg_query.RoleSpec newrole = 2 [json_name = "newrole"]; inline bool ReassignOwnedStmt::_internal_has_newrole() const { return this != internal_default_instance() && newrole_ != nullptr; } inline bool ReassignOwnedStmt::has_newrole() const { return _internal_has_newrole(); } inline void ReassignOwnedStmt::clear_newrole() { if (GetArena() == nullptr && newrole_ != nullptr) { delete newrole_; } newrole_ = nullptr; } inline const ::pg_query::RoleSpec& ReassignOwnedStmt::_internal_newrole() const { const ::pg_query::RoleSpec* p = newrole_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& ReassignOwnedStmt::newrole() const { // @@protoc_insertion_point(field_get:pg_query.ReassignOwnedStmt.newrole) return _internal_newrole(); } inline void ReassignOwnedStmt::unsafe_arena_set_allocated_newrole( ::pg_query::RoleSpec* newrole) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(newrole_); } newrole_ = newrole; if (newrole) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ReassignOwnedStmt.newrole) } inline ::pg_query::RoleSpec* ReassignOwnedStmt::release_newrole() { ::pg_query::RoleSpec* temp = newrole_; newrole_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* ReassignOwnedStmt::unsafe_arena_release_newrole() { // @@protoc_insertion_point(field_release:pg_query.ReassignOwnedStmt.newrole) ::pg_query::RoleSpec* temp = newrole_; newrole_ = nullptr; return temp; } inline ::pg_query::RoleSpec* ReassignOwnedStmt::_internal_mutable_newrole() { if (newrole_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); newrole_ = p; } return newrole_; } inline ::pg_query::RoleSpec* ReassignOwnedStmt::mutable_newrole() { // @@protoc_insertion_point(field_mutable:pg_query.ReassignOwnedStmt.newrole) return _internal_mutable_newrole(); } inline void ReassignOwnedStmt::set_allocated_newrole(::pg_query::RoleSpec* newrole) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete newrole_; } if (newrole) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(newrole); if (message_arena != submessage_arena) { newrole = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, newrole, submessage_arena); } } else { } newrole_ = newrole; // @@protoc_insertion_point(field_set_allocated:pg_query.ReassignOwnedStmt.newrole) } // ------------------------------------------------------------------- // CompositeTypeStmt // .pg_query.RangeVar typevar = 1 [json_name = "typevar"]; inline bool CompositeTypeStmt::_internal_has_typevar() const { return this != internal_default_instance() && typevar_ != nullptr; } inline bool CompositeTypeStmt::has_typevar() const { return _internal_has_typevar(); } inline void CompositeTypeStmt::clear_typevar() { if (GetArena() == nullptr && typevar_ != nullptr) { delete typevar_; } typevar_ = nullptr; } inline const ::pg_query::RangeVar& CompositeTypeStmt::_internal_typevar() const { const ::pg_query::RangeVar* p = typevar_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CompositeTypeStmt::typevar() const { // @@protoc_insertion_point(field_get:pg_query.CompositeTypeStmt.typevar) return _internal_typevar(); } inline void CompositeTypeStmt::unsafe_arena_set_allocated_typevar( ::pg_query::RangeVar* typevar) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(typevar_); } typevar_ = typevar; if (typevar) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CompositeTypeStmt.typevar) } inline ::pg_query::RangeVar* CompositeTypeStmt::release_typevar() { ::pg_query::RangeVar* temp = typevar_; typevar_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* CompositeTypeStmt::unsafe_arena_release_typevar() { // @@protoc_insertion_point(field_release:pg_query.CompositeTypeStmt.typevar) ::pg_query::RangeVar* temp = typevar_; typevar_ = nullptr; return temp; } inline ::pg_query::RangeVar* CompositeTypeStmt::_internal_mutable_typevar() { if (typevar_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); typevar_ = p; } return typevar_; } inline ::pg_query::RangeVar* CompositeTypeStmt::mutable_typevar() { // @@protoc_insertion_point(field_mutable:pg_query.CompositeTypeStmt.typevar) return _internal_mutable_typevar(); } inline void CompositeTypeStmt::set_allocated_typevar(::pg_query::RangeVar* typevar) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete typevar_; } if (typevar) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(typevar); if (message_arena != submessage_arena) { typevar = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, typevar, submessage_arena); } } else { } typevar_ = typevar; // @@protoc_insertion_point(field_set_allocated:pg_query.CompositeTypeStmt.typevar) } // repeated .pg_query.Node coldeflist = 2 [json_name = "coldeflist"]; inline int CompositeTypeStmt::_internal_coldeflist_size() const { return coldeflist_.size(); } inline int CompositeTypeStmt::coldeflist_size() const { return _internal_coldeflist_size(); } inline void CompositeTypeStmt::clear_coldeflist() { coldeflist_.Clear(); } inline ::pg_query::Node* CompositeTypeStmt::mutable_coldeflist(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CompositeTypeStmt.coldeflist) return coldeflist_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CompositeTypeStmt::mutable_coldeflist() { // @@protoc_insertion_point(field_mutable_list:pg_query.CompositeTypeStmt.coldeflist) return &coldeflist_; } inline const ::pg_query::Node& CompositeTypeStmt::_internal_coldeflist(int index) const { return coldeflist_.Get(index); } inline const ::pg_query::Node& CompositeTypeStmt::coldeflist(int index) const { // @@protoc_insertion_point(field_get:pg_query.CompositeTypeStmt.coldeflist) return _internal_coldeflist(index); } inline ::pg_query::Node* CompositeTypeStmt::_internal_add_coldeflist() { return coldeflist_.Add(); } inline ::pg_query::Node* CompositeTypeStmt::add_coldeflist() { // @@protoc_insertion_point(field_add:pg_query.CompositeTypeStmt.coldeflist) return _internal_add_coldeflist(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CompositeTypeStmt::coldeflist() const { // @@protoc_insertion_point(field_list:pg_query.CompositeTypeStmt.coldeflist) return coldeflist_; } // ------------------------------------------------------------------- // CreateEnumStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int CreateEnumStmt::_internal_type_name_size() const { return type_name_.size(); } inline int CreateEnumStmt::type_name_size() const { return _internal_type_name_size(); } inline void CreateEnumStmt::clear_type_name() { type_name_.Clear(); } inline ::pg_query::Node* CreateEnumStmt::mutable_type_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateEnumStmt.type_name) return type_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateEnumStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEnumStmt.type_name) return &type_name_; } inline const ::pg_query::Node& CreateEnumStmt::_internal_type_name(int index) const { return type_name_.Get(index); } inline const ::pg_query::Node& CreateEnumStmt::type_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateEnumStmt.type_name) return _internal_type_name(index); } inline ::pg_query::Node* CreateEnumStmt::_internal_add_type_name() { return type_name_.Add(); } inline ::pg_query::Node* CreateEnumStmt::add_type_name() { // @@protoc_insertion_point(field_add:pg_query.CreateEnumStmt.type_name) return _internal_add_type_name(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateEnumStmt::type_name() const { // @@protoc_insertion_point(field_list:pg_query.CreateEnumStmt.type_name) return type_name_; } // repeated .pg_query.Node vals = 2 [json_name = "vals"]; inline int CreateEnumStmt::_internal_vals_size() const { return vals_.size(); } inline int CreateEnumStmt::vals_size() const { return _internal_vals_size(); } inline void CreateEnumStmt::clear_vals() { vals_.Clear(); } inline ::pg_query::Node* CreateEnumStmt::mutable_vals(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateEnumStmt.vals) return vals_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateEnumStmt::mutable_vals() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEnumStmt.vals) return &vals_; } inline const ::pg_query::Node& CreateEnumStmt::_internal_vals(int index) const { return vals_.Get(index); } inline const ::pg_query::Node& CreateEnumStmt::vals(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateEnumStmt.vals) return _internal_vals(index); } inline ::pg_query::Node* CreateEnumStmt::_internal_add_vals() { return vals_.Add(); } inline ::pg_query::Node* CreateEnumStmt::add_vals() { // @@protoc_insertion_point(field_add:pg_query.CreateEnumStmt.vals) return _internal_add_vals(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateEnumStmt::vals() const { // @@protoc_insertion_point(field_list:pg_query.CreateEnumStmt.vals) return vals_; } // ------------------------------------------------------------------- // CreateRangeStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int CreateRangeStmt::_internal_type_name_size() const { return type_name_.size(); } inline int CreateRangeStmt::type_name_size() const { return _internal_type_name_size(); } inline void CreateRangeStmt::clear_type_name() { type_name_.Clear(); } inline ::pg_query::Node* CreateRangeStmt::mutable_type_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateRangeStmt.type_name) return type_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateRangeStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRangeStmt.type_name) return &type_name_; } inline const ::pg_query::Node& CreateRangeStmt::_internal_type_name(int index) const { return type_name_.Get(index); } inline const ::pg_query::Node& CreateRangeStmt::type_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateRangeStmt.type_name) return _internal_type_name(index); } inline ::pg_query::Node* CreateRangeStmt::_internal_add_type_name() { return type_name_.Add(); } inline ::pg_query::Node* CreateRangeStmt::add_type_name() { // @@protoc_insertion_point(field_add:pg_query.CreateRangeStmt.type_name) return _internal_add_type_name(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateRangeStmt::type_name() const { // @@protoc_insertion_point(field_list:pg_query.CreateRangeStmt.type_name) return type_name_; } // repeated .pg_query.Node params = 2 [json_name = "params"]; inline int CreateRangeStmt::_internal_params_size() const { return params_.size(); } inline int CreateRangeStmt::params_size() const { return _internal_params_size(); } inline void CreateRangeStmt::clear_params() { params_.Clear(); } inline ::pg_query::Node* CreateRangeStmt::mutable_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateRangeStmt.params) return params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateRangeStmt::mutable_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateRangeStmt.params) return ¶ms_; } inline const ::pg_query::Node& CreateRangeStmt::_internal_params(int index) const { return params_.Get(index); } inline const ::pg_query::Node& CreateRangeStmt::params(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateRangeStmt.params) return _internal_params(index); } inline ::pg_query::Node* CreateRangeStmt::_internal_add_params() { return params_.Add(); } inline ::pg_query::Node* CreateRangeStmt::add_params() { // @@protoc_insertion_point(field_add:pg_query.CreateRangeStmt.params) return _internal_add_params(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateRangeStmt::params() const { // @@protoc_insertion_point(field_list:pg_query.CreateRangeStmt.params) return params_; } // ------------------------------------------------------------------- // AlterEnumStmt // repeated .pg_query.Node type_name = 1 [json_name = "typeName"]; inline int AlterEnumStmt::_internal_type_name_size() const { return type_name_.size(); } inline int AlterEnumStmt::type_name_size() const { return _internal_type_name_size(); } inline void AlterEnumStmt::clear_type_name() { type_name_.Clear(); } inline ::pg_query::Node* AlterEnumStmt::mutable_type_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.type_name) return type_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterEnumStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterEnumStmt.type_name) return &type_name_; } inline const ::pg_query::Node& AlterEnumStmt::_internal_type_name(int index) const { return type_name_.Get(index); } inline const ::pg_query::Node& AlterEnumStmt::type_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.type_name) return _internal_type_name(index); } inline ::pg_query::Node* AlterEnumStmt::_internal_add_type_name() { return type_name_.Add(); } inline ::pg_query::Node* AlterEnumStmt::add_type_name() { // @@protoc_insertion_point(field_add:pg_query.AlterEnumStmt.type_name) return _internal_add_type_name(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterEnumStmt::type_name() const { // @@protoc_insertion_point(field_list:pg_query.AlterEnumStmt.type_name) return type_name_; } // string old_val = 2 [json_name = "oldVal"]; inline void AlterEnumStmt::clear_old_val() { old_val_.ClearToEmpty(); } inline const std::string& AlterEnumStmt::old_val() const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.old_val) return _internal_old_val(); } inline void AlterEnumStmt::set_old_val(const std::string& value) { _internal_set_old_val(value); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.old_val) } inline std::string* AlterEnumStmt::mutable_old_val() { // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.old_val) return _internal_mutable_old_val(); } inline const std::string& AlterEnumStmt::_internal_old_val() const { return old_val_.Get(); } inline void AlterEnumStmt::_internal_set_old_val(const std::string& value) { old_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterEnumStmt::set_old_val(std::string&& value) { old_val_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterEnumStmt.old_val) } inline void AlterEnumStmt::set_old_val(const char* value) { GOOGLE_DCHECK(value != nullptr); old_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterEnumStmt.old_val) } inline void AlterEnumStmt::set_old_val(const char* value, size_t size) { old_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterEnumStmt.old_val) } inline std::string* AlterEnumStmt::_internal_mutable_old_val() { return old_val_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterEnumStmt::release_old_val() { // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.old_val) return old_val_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterEnumStmt::set_allocated_old_val(std::string* old_val) { if (old_val != nullptr) { } else { } old_val_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), old_val, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEnumStmt.old_val) } // string new_val = 3 [json_name = "newVal"]; inline void AlterEnumStmt::clear_new_val() { new_val_.ClearToEmpty(); } inline const std::string& AlterEnumStmt::new_val() const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val) return _internal_new_val(); } inline void AlterEnumStmt::set_new_val(const std::string& value) { _internal_set_new_val(value); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val) } inline std::string* AlterEnumStmt::mutable_new_val() { // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.new_val) return _internal_mutable_new_val(); } inline const std::string& AlterEnumStmt::_internal_new_val() const { return new_val_.Get(); } inline void AlterEnumStmt::_internal_set_new_val(const std::string& value) { new_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterEnumStmt::set_new_val(std::string&& value) { new_val_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterEnumStmt.new_val) } inline void AlterEnumStmt::set_new_val(const char* value) { GOOGLE_DCHECK(value != nullptr); new_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterEnumStmt.new_val) } inline void AlterEnumStmt::set_new_val(const char* value, size_t size) { new_val_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterEnumStmt.new_val) } inline std::string* AlterEnumStmt::_internal_mutable_new_val() { return new_val_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterEnumStmt::release_new_val() { // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.new_val) return new_val_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterEnumStmt::set_allocated_new_val(std::string* new_val) { if (new_val != nullptr) { } else { } new_val_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), new_val, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEnumStmt.new_val) } // string new_val_neighbor = 4 [json_name = "newValNeighbor"]; inline void AlterEnumStmt::clear_new_val_neighbor() { new_val_neighbor_.ClearToEmpty(); } inline const std::string& AlterEnumStmt::new_val_neighbor() const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val_neighbor) return _internal_new_val_neighbor(); } inline void AlterEnumStmt::set_new_val_neighbor(const std::string& value) { _internal_set_new_val_neighbor(value); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val_neighbor) } inline std::string* AlterEnumStmt::mutable_new_val_neighbor() { // @@protoc_insertion_point(field_mutable:pg_query.AlterEnumStmt.new_val_neighbor) return _internal_mutable_new_val_neighbor(); } inline const std::string& AlterEnumStmt::_internal_new_val_neighbor() const { return new_val_neighbor_.Get(); } inline void AlterEnumStmt::_internal_set_new_val_neighbor(const std::string& value) { new_val_neighbor_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterEnumStmt::set_new_val_neighbor(std::string&& value) { new_val_neighbor_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterEnumStmt.new_val_neighbor) } inline void AlterEnumStmt::set_new_val_neighbor(const char* value) { GOOGLE_DCHECK(value != nullptr); new_val_neighbor_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterEnumStmt.new_val_neighbor) } inline void AlterEnumStmt::set_new_val_neighbor(const char* value, size_t size) { new_val_neighbor_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterEnumStmt.new_val_neighbor) } inline std::string* AlterEnumStmt::_internal_mutable_new_val_neighbor() { return new_val_neighbor_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterEnumStmt::release_new_val_neighbor() { // @@protoc_insertion_point(field_release:pg_query.AlterEnumStmt.new_val_neighbor) return new_val_neighbor_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterEnumStmt::set_allocated_new_val_neighbor(std::string* new_val_neighbor) { if (new_val_neighbor != nullptr) { } else { } new_val_neighbor_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), new_val_neighbor, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEnumStmt.new_val_neighbor) } // bool new_val_is_after = 5 [json_name = "newValIsAfter"]; inline void AlterEnumStmt::clear_new_val_is_after() { new_val_is_after_ = false; } inline bool AlterEnumStmt::_internal_new_val_is_after() const { return new_val_is_after_; } inline bool AlterEnumStmt::new_val_is_after() const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.new_val_is_after) return _internal_new_val_is_after(); } inline void AlterEnumStmt::_internal_set_new_val_is_after(bool value) { new_val_is_after_ = value; } inline void AlterEnumStmt::set_new_val_is_after(bool value) { _internal_set_new_val_is_after(value); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.new_val_is_after) } // bool skip_if_new_val_exists = 6 [json_name = "skipIfNewValExists"]; inline void AlterEnumStmt::clear_skip_if_new_val_exists() { skip_if_new_val_exists_ = false; } inline bool AlterEnumStmt::_internal_skip_if_new_val_exists() const { return skip_if_new_val_exists_; } inline bool AlterEnumStmt::skip_if_new_val_exists() const { // @@protoc_insertion_point(field_get:pg_query.AlterEnumStmt.skip_if_new_val_exists) return _internal_skip_if_new_val_exists(); } inline void AlterEnumStmt::_internal_set_skip_if_new_val_exists(bool value) { skip_if_new_val_exists_ = value; } inline void AlterEnumStmt::set_skip_if_new_val_exists(bool value) { _internal_set_skip_if_new_val_exists(value); // @@protoc_insertion_point(field_set:pg_query.AlterEnumStmt.skip_if_new_val_exists) } // ------------------------------------------------------------------- // AlterTSDictionaryStmt // repeated .pg_query.Node dictname = 1 [json_name = "dictname"]; inline int AlterTSDictionaryStmt::_internal_dictname_size() const { return dictname_.size(); } inline int AlterTSDictionaryStmt::dictname_size() const { return _internal_dictname_size(); } inline void AlterTSDictionaryStmt::clear_dictname() { dictname_.Clear(); } inline ::pg_query::Node* AlterTSDictionaryStmt::mutable_dictname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSDictionaryStmt.dictname) return dictname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTSDictionaryStmt::mutable_dictname() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSDictionaryStmt.dictname) return &dictname_; } inline const ::pg_query::Node& AlterTSDictionaryStmt::_internal_dictname(int index) const { return dictname_.Get(index); } inline const ::pg_query::Node& AlterTSDictionaryStmt::dictname(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTSDictionaryStmt.dictname) return _internal_dictname(index); } inline ::pg_query::Node* AlterTSDictionaryStmt::_internal_add_dictname() { return dictname_.Add(); } inline ::pg_query::Node* AlterTSDictionaryStmt::add_dictname() { // @@protoc_insertion_point(field_add:pg_query.AlterTSDictionaryStmt.dictname) return _internal_add_dictname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTSDictionaryStmt::dictname() const { // @@protoc_insertion_point(field_list:pg_query.AlterTSDictionaryStmt.dictname) return dictname_; } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterTSDictionaryStmt::_internal_options_size() const { return options_.size(); } inline int AlterTSDictionaryStmt::options_size() const { return _internal_options_size(); } inline void AlterTSDictionaryStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterTSDictionaryStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSDictionaryStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTSDictionaryStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSDictionaryStmt.options) return &options_; } inline const ::pg_query::Node& AlterTSDictionaryStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterTSDictionaryStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTSDictionaryStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterTSDictionaryStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterTSDictionaryStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterTSDictionaryStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTSDictionaryStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterTSDictionaryStmt.options) return options_; } // ------------------------------------------------------------------- // AlterTSConfigurationStmt // .pg_query.AlterTSConfigType kind = 1 [json_name = "kind"]; inline void AlterTSConfigurationStmt::clear_kind() { kind_ = 0; } inline ::pg_query::AlterTSConfigType AlterTSConfigurationStmt::_internal_kind() const { return static_cast< ::pg_query::AlterTSConfigType >(kind_); } inline ::pg_query::AlterTSConfigType AlterTSConfigurationStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.kind) return _internal_kind(); } inline void AlterTSConfigurationStmt::_internal_set_kind(::pg_query::AlterTSConfigType value) { kind_ = value; } inline void AlterTSConfigurationStmt::set_kind(::pg_query::AlterTSConfigType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.kind) } // repeated .pg_query.Node cfgname = 2 [json_name = "cfgname"]; inline int AlterTSConfigurationStmt::_internal_cfgname_size() const { return cfgname_.size(); } inline int AlterTSConfigurationStmt::cfgname_size() const { return _internal_cfgname_size(); } inline void AlterTSConfigurationStmt::clear_cfgname() { cfgname_.Clear(); } inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_cfgname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.cfgname) return cfgname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTSConfigurationStmt::mutable_cfgname() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.cfgname) return &cfgname_; } inline const ::pg_query::Node& AlterTSConfigurationStmt::_internal_cfgname(int index) const { return cfgname_.Get(index); } inline const ::pg_query::Node& AlterTSConfigurationStmt::cfgname(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.cfgname) return _internal_cfgname(index); } inline ::pg_query::Node* AlterTSConfigurationStmt::_internal_add_cfgname() { return cfgname_.Add(); } inline ::pg_query::Node* AlterTSConfigurationStmt::add_cfgname() { // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.cfgname) return _internal_add_cfgname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTSConfigurationStmt::cfgname() const { // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.cfgname) return cfgname_; } // repeated .pg_query.Node tokentype = 3 [json_name = "tokentype"]; inline int AlterTSConfigurationStmt::_internal_tokentype_size() const { return tokentype_.size(); } inline int AlterTSConfigurationStmt::tokentype_size() const { return _internal_tokentype_size(); } inline void AlterTSConfigurationStmt::clear_tokentype() { tokentype_.Clear(); } inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_tokentype(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.tokentype) return tokentype_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTSConfigurationStmt::mutable_tokentype() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.tokentype) return &tokentype_; } inline const ::pg_query::Node& AlterTSConfigurationStmt::_internal_tokentype(int index) const { return tokentype_.Get(index); } inline const ::pg_query::Node& AlterTSConfigurationStmt::tokentype(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.tokentype) return _internal_tokentype(index); } inline ::pg_query::Node* AlterTSConfigurationStmt::_internal_add_tokentype() { return tokentype_.Add(); } inline ::pg_query::Node* AlterTSConfigurationStmt::add_tokentype() { // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.tokentype) return _internal_add_tokentype(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTSConfigurationStmt::tokentype() const { // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.tokentype) return tokentype_; } // repeated .pg_query.Node dicts = 4 [json_name = "dicts"]; inline int AlterTSConfigurationStmt::_internal_dicts_size() const { return dicts_.size(); } inline int AlterTSConfigurationStmt::dicts_size() const { return _internal_dicts_size(); } inline void AlterTSConfigurationStmt::clear_dicts() { dicts_.Clear(); } inline ::pg_query::Node* AlterTSConfigurationStmt::mutable_dicts(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTSConfigurationStmt.dicts) return dicts_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTSConfigurationStmt::mutable_dicts() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTSConfigurationStmt.dicts) return &dicts_; } inline const ::pg_query::Node& AlterTSConfigurationStmt::_internal_dicts(int index) const { return dicts_.Get(index); } inline const ::pg_query::Node& AlterTSConfigurationStmt::dicts(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.dicts) return _internal_dicts(index); } inline ::pg_query::Node* AlterTSConfigurationStmt::_internal_add_dicts() { return dicts_.Add(); } inline ::pg_query::Node* AlterTSConfigurationStmt::add_dicts() { // @@protoc_insertion_point(field_add:pg_query.AlterTSConfigurationStmt.dicts) return _internal_add_dicts(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTSConfigurationStmt::dicts() const { // @@protoc_insertion_point(field_list:pg_query.AlterTSConfigurationStmt.dicts) return dicts_; } // bool override = 5 [json_name = "override"]; inline void AlterTSConfigurationStmt::clear_override() { override_ = false; } inline bool AlterTSConfigurationStmt::_internal_override() const { return override_; } inline bool AlterTSConfigurationStmt::override() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.override) return _internal_override(); } inline void AlterTSConfigurationStmt::_internal_set_override(bool value) { override_ = value; } inline void AlterTSConfigurationStmt::set_override(bool value) { _internal_set_override(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.override) } // bool replace = 6 [json_name = "replace"]; inline void AlterTSConfigurationStmt::clear_replace() { replace_ = false; } inline bool AlterTSConfigurationStmt::_internal_replace() const { return replace_; } inline bool AlterTSConfigurationStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.replace) return _internal_replace(); } inline void AlterTSConfigurationStmt::_internal_set_replace(bool value) { replace_ = value; } inline void AlterTSConfigurationStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.replace) } // bool missing_ok = 7 [json_name = "missing_ok"]; inline void AlterTSConfigurationStmt::clear_missing_ok() { missing_ok_ = false; } inline bool AlterTSConfigurationStmt::_internal_missing_ok() const { return missing_ok_; } inline bool AlterTSConfigurationStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterTSConfigurationStmt.missing_ok) return _internal_missing_ok(); } inline void AlterTSConfigurationStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void AlterTSConfigurationStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterTSConfigurationStmt.missing_ok) } // ------------------------------------------------------------------- // CreateFdwStmt // string fdwname = 1 [json_name = "fdwname"]; inline void CreateFdwStmt::clear_fdwname() { fdwname_.ClearToEmpty(); } inline const std::string& CreateFdwStmt::fdwname() const { // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.fdwname) return _internal_fdwname(); } inline void CreateFdwStmt::set_fdwname(const std::string& value) { _internal_set_fdwname(value); // @@protoc_insertion_point(field_set:pg_query.CreateFdwStmt.fdwname) } inline std::string* CreateFdwStmt::mutable_fdwname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.fdwname) return _internal_mutable_fdwname(); } inline const std::string& CreateFdwStmt::_internal_fdwname() const { return fdwname_.Get(); } inline void CreateFdwStmt::_internal_set_fdwname(const std::string& value) { fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateFdwStmt::set_fdwname(std::string&& value) { fdwname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateFdwStmt.fdwname) } inline void CreateFdwStmt::set_fdwname(const char* value) { GOOGLE_DCHECK(value != nullptr); fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateFdwStmt.fdwname) } inline void CreateFdwStmt::set_fdwname(const char* value, size_t size) { fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateFdwStmt.fdwname) } inline std::string* CreateFdwStmt::_internal_mutable_fdwname() { return fdwname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateFdwStmt::release_fdwname() { // @@protoc_insertion_point(field_release:pg_query.CreateFdwStmt.fdwname) return fdwname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateFdwStmt::set_allocated_fdwname(std::string* fdwname) { if (fdwname != nullptr) { } else { } fdwname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fdwname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateFdwStmt.fdwname) } // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; inline int CreateFdwStmt::_internal_func_options_size() const { return func_options_.size(); } inline int CreateFdwStmt::func_options_size() const { return _internal_func_options_size(); } inline void CreateFdwStmt::clear_func_options() { func_options_.Clear(); } inline ::pg_query::Node* CreateFdwStmt::mutable_func_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.func_options) return func_options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateFdwStmt::mutable_func_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFdwStmt.func_options) return &func_options_; } inline const ::pg_query::Node& CreateFdwStmt::_internal_func_options(int index) const { return func_options_.Get(index); } inline const ::pg_query::Node& CreateFdwStmt::func_options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.func_options) return _internal_func_options(index); } inline ::pg_query::Node* CreateFdwStmt::_internal_add_func_options() { return func_options_.Add(); } inline ::pg_query::Node* CreateFdwStmt::add_func_options() { // @@protoc_insertion_point(field_add:pg_query.CreateFdwStmt.func_options) return _internal_add_func_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateFdwStmt::func_options() const { // @@protoc_insertion_point(field_list:pg_query.CreateFdwStmt.func_options) return func_options_; } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int CreateFdwStmt::_internal_options_size() const { return options_.size(); } inline int CreateFdwStmt::options_size() const { return _internal_options_size(); } inline void CreateFdwStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateFdwStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateFdwStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateFdwStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateFdwStmt.options) return &options_; } inline const ::pg_query::Node& CreateFdwStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateFdwStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateFdwStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateFdwStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateFdwStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateFdwStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateFdwStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateFdwStmt.options) return options_; } // ------------------------------------------------------------------- // AlterFdwStmt // string fdwname = 1 [json_name = "fdwname"]; inline void AlterFdwStmt::clear_fdwname() { fdwname_.ClearToEmpty(); } inline const std::string& AlterFdwStmt::fdwname() const { // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.fdwname) return _internal_fdwname(); } inline void AlterFdwStmt::set_fdwname(const std::string& value) { _internal_set_fdwname(value); // @@protoc_insertion_point(field_set:pg_query.AlterFdwStmt.fdwname) } inline std::string* AlterFdwStmt::mutable_fdwname() { // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.fdwname) return _internal_mutable_fdwname(); } inline const std::string& AlterFdwStmt::_internal_fdwname() const { return fdwname_.Get(); } inline void AlterFdwStmt::_internal_set_fdwname(const std::string& value) { fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterFdwStmt::set_fdwname(std::string&& value) { fdwname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterFdwStmt.fdwname) } inline void AlterFdwStmt::set_fdwname(const char* value) { GOOGLE_DCHECK(value != nullptr); fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterFdwStmt.fdwname) } inline void AlterFdwStmt::set_fdwname(const char* value, size_t size) { fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterFdwStmt.fdwname) } inline std::string* AlterFdwStmt::_internal_mutable_fdwname() { return fdwname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterFdwStmt::release_fdwname() { // @@protoc_insertion_point(field_release:pg_query.AlterFdwStmt.fdwname) return fdwname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterFdwStmt::set_allocated_fdwname(std::string* fdwname) { if (fdwname != nullptr) { } else { } fdwname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fdwname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterFdwStmt.fdwname) } // repeated .pg_query.Node func_options = 2 [json_name = "func_options"]; inline int AlterFdwStmt::_internal_func_options_size() const { return func_options_.size(); } inline int AlterFdwStmt::func_options_size() const { return _internal_func_options_size(); } inline void AlterFdwStmt::clear_func_options() { func_options_.Clear(); } inline ::pg_query::Node* AlterFdwStmt::mutable_func_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.func_options) return func_options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterFdwStmt::mutable_func_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFdwStmt.func_options) return &func_options_; } inline const ::pg_query::Node& AlterFdwStmt::_internal_func_options(int index) const { return func_options_.Get(index); } inline const ::pg_query::Node& AlterFdwStmt::func_options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.func_options) return _internal_func_options(index); } inline ::pg_query::Node* AlterFdwStmt::_internal_add_func_options() { return func_options_.Add(); } inline ::pg_query::Node* AlterFdwStmt::add_func_options() { // @@protoc_insertion_point(field_add:pg_query.AlterFdwStmt.func_options) return _internal_add_func_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterFdwStmt::func_options() const { // @@protoc_insertion_point(field_list:pg_query.AlterFdwStmt.func_options) return func_options_; } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int AlterFdwStmt::_internal_options_size() const { return options_.size(); } inline int AlterFdwStmt::options_size() const { return _internal_options_size(); } inline void AlterFdwStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterFdwStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterFdwStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterFdwStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterFdwStmt.options) return &options_; } inline const ::pg_query::Node& AlterFdwStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterFdwStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterFdwStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterFdwStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterFdwStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterFdwStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterFdwStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterFdwStmt.options) return options_; } // ------------------------------------------------------------------- // CreateForeignServerStmt // string servername = 1 [json_name = "servername"]; inline void CreateForeignServerStmt::clear_servername() { servername_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.servername) return _internal_servername(); } inline void CreateForeignServerStmt::set_servername(const std::string& value) { _internal_set_servername(value); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.servername) } inline std::string* CreateForeignServerStmt::mutable_servername() { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.servername) return _internal_mutable_servername(); } inline const std::string& CreateForeignServerStmt::_internal_servername() const { return servername_.Get(); } inline void CreateForeignServerStmt::_internal_set_servername(const std::string& value) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateForeignServerStmt::set_servername(std::string&& value) { servername_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateForeignServerStmt.servername) } inline void CreateForeignServerStmt::set_servername(const char* value) { GOOGLE_DCHECK(value != nullptr); servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateForeignServerStmt.servername) } inline void CreateForeignServerStmt::set_servername(const char* value, size_t size) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateForeignServerStmt.servername) } inline std::string* CreateForeignServerStmt::_internal_mutable_servername() { return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateForeignServerStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.servername) return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateForeignServerStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.servername) } // string servertype = 2 [json_name = "servertype"]; inline void CreateForeignServerStmt::clear_servertype() { servertype_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::servertype() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.servertype) return _internal_servertype(); } inline void CreateForeignServerStmt::set_servertype(const std::string& value) { _internal_set_servertype(value); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.servertype) } inline std::string* CreateForeignServerStmt::mutable_servertype() { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.servertype) return _internal_mutable_servertype(); } inline const std::string& CreateForeignServerStmt::_internal_servertype() const { return servertype_.Get(); } inline void CreateForeignServerStmt::_internal_set_servertype(const std::string& value) { servertype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateForeignServerStmt::set_servertype(std::string&& value) { servertype_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateForeignServerStmt.servertype) } inline void CreateForeignServerStmt::set_servertype(const char* value) { GOOGLE_DCHECK(value != nullptr); servertype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateForeignServerStmt.servertype) } inline void CreateForeignServerStmt::set_servertype(const char* value, size_t size) { servertype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateForeignServerStmt.servertype) } inline std::string* CreateForeignServerStmt::_internal_mutable_servertype() { return servertype_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateForeignServerStmt::release_servertype() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.servertype) return servertype_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateForeignServerStmt::set_allocated_servertype(std::string* servertype) { if (servertype != nullptr) { } else { } servertype_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servertype, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.servertype) } // string version = 3 [json_name = "version"]; inline void CreateForeignServerStmt::clear_version() { version_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::version() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.version) return _internal_version(); } inline void CreateForeignServerStmt::set_version(const std::string& value) { _internal_set_version(value); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.version) } inline std::string* CreateForeignServerStmt::mutable_version() { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.version) return _internal_mutable_version(); } inline const std::string& CreateForeignServerStmt::_internal_version() const { return version_.Get(); } inline void CreateForeignServerStmt::_internal_set_version(const std::string& value) { version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateForeignServerStmt::set_version(std::string&& value) { version_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateForeignServerStmt.version) } inline void CreateForeignServerStmt::set_version(const char* value) { GOOGLE_DCHECK(value != nullptr); version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateForeignServerStmt.version) } inline void CreateForeignServerStmt::set_version(const char* value, size_t size) { version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateForeignServerStmt.version) } inline std::string* CreateForeignServerStmt::_internal_mutable_version() { return version_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateForeignServerStmt::release_version() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.version) return version_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateForeignServerStmt::set_allocated_version(std::string* version) { if (version != nullptr) { } else { } version_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), version, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.version) } // string fdwname = 4 [json_name = "fdwname"]; inline void CreateForeignServerStmt::clear_fdwname() { fdwname_.ClearToEmpty(); } inline const std::string& CreateForeignServerStmt::fdwname() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.fdwname) return _internal_fdwname(); } inline void CreateForeignServerStmt::set_fdwname(const std::string& value) { _internal_set_fdwname(value); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.fdwname) } inline std::string* CreateForeignServerStmt::mutable_fdwname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.fdwname) return _internal_mutable_fdwname(); } inline const std::string& CreateForeignServerStmt::_internal_fdwname() const { return fdwname_.Get(); } inline void CreateForeignServerStmt::_internal_set_fdwname(const std::string& value) { fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateForeignServerStmt::set_fdwname(std::string&& value) { fdwname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateForeignServerStmt.fdwname) } inline void CreateForeignServerStmt::set_fdwname(const char* value) { GOOGLE_DCHECK(value != nullptr); fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateForeignServerStmt.fdwname) } inline void CreateForeignServerStmt::set_fdwname(const char* value, size_t size) { fdwname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateForeignServerStmt.fdwname) } inline std::string* CreateForeignServerStmt::_internal_mutable_fdwname() { return fdwname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateForeignServerStmt::release_fdwname() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignServerStmt.fdwname) return fdwname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateForeignServerStmt::set_allocated_fdwname(std::string* fdwname) { if (fdwname != nullptr) { } else { } fdwname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fdwname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignServerStmt.fdwname) } // bool if_not_exists = 5 [json_name = "if_not_exists"]; inline void CreateForeignServerStmt::clear_if_not_exists() { if_not_exists_ = false; } inline bool CreateForeignServerStmt::_internal_if_not_exists() const { return if_not_exists_; } inline bool CreateForeignServerStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateForeignServerStmt::_internal_set_if_not_exists(bool value) { if_not_exists_ = value; } inline void CreateForeignServerStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateForeignServerStmt.if_not_exists) } // repeated .pg_query.Node options = 6 [json_name = "options"]; inline int CreateForeignServerStmt::_internal_options_size() const { return options_.size(); } inline int CreateForeignServerStmt::options_size() const { return _internal_options_size(); } inline void CreateForeignServerStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateForeignServerStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignServerStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateForeignServerStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateForeignServerStmt.options) return &options_; } inline const ::pg_query::Node& CreateForeignServerStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateForeignServerStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignServerStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateForeignServerStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateForeignServerStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateForeignServerStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateForeignServerStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateForeignServerStmt.options) return options_; } // ------------------------------------------------------------------- // AlterForeignServerStmt // string servername = 1 [json_name = "servername"]; inline void AlterForeignServerStmt::clear_servername() { servername_.ClearToEmpty(); } inline const std::string& AlterForeignServerStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.servername) return _internal_servername(); } inline void AlterForeignServerStmt::set_servername(const std::string& value) { _internal_set_servername(value); // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.servername) } inline std::string* AlterForeignServerStmt::mutable_servername() { // @@protoc_insertion_point(field_mutable:pg_query.AlterForeignServerStmt.servername) return _internal_mutable_servername(); } inline const std::string& AlterForeignServerStmt::_internal_servername() const { return servername_.Get(); } inline void AlterForeignServerStmt::_internal_set_servername(const std::string& value) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterForeignServerStmt::set_servername(std::string&& value) { servername_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterForeignServerStmt.servername) } inline void AlterForeignServerStmt::set_servername(const char* value) { GOOGLE_DCHECK(value != nullptr); servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterForeignServerStmt.servername) } inline void AlterForeignServerStmt::set_servername(const char* value, size_t size) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterForeignServerStmt.servername) } inline std::string* AlterForeignServerStmt::_internal_mutable_servername() { return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterForeignServerStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.AlterForeignServerStmt.servername) return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterForeignServerStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterForeignServerStmt.servername) } // string version = 2 [json_name = "version"]; inline void AlterForeignServerStmt::clear_version() { version_.ClearToEmpty(); } inline const std::string& AlterForeignServerStmt::version() const { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.version) return _internal_version(); } inline void AlterForeignServerStmt::set_version(const std::string& value) { _internal_set_version(value); // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.version) } inline std::string* AlterForeignServerStmt::mutable_version() { // @@protoc_insertion_point(field_mutable:pg_query.AlterForeignServerStmt.version) return _internal_mutable_version(); } inline const std::string& AlterForeignServerStmt::_internal_version() const { return version_.Get(); } inline void AlterForeignServerStmt::_internal_set_version(const std::string& value) { version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterForeignServerStmt::set_version(std::string&& value) { version_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterForeignServerStmt.version) } inline void AlterForeignServerStmt::set_version(const char* value) { GOOGLE_DCHECK(value != nullptr); version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterForeignServerStmt.version) } inline void AlterForeignServerStmt::set_version(const char* value, size_t size) { version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterForeignServerStmt.version) } inline std::string* AlterForeignServerStmt::_internal_mutable_version() { return version_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterForeignServerStmt::release_version() { // @@protoc_insertion_point(field_release:pg_query.AlterForeignServerStmt.version) return version_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterForeignServerStmt::set_allocated_version(std::string* version) { if (version != nullptr) { } else { } version_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), version, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterForeignServerStmt.version) } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int AlterForeignServerStmt::_internal_options_size() const { return options_.size(); } inline int AlterForeignServerStmt::options_size() const { return _internal_options_size(); } inline void AlterForeignServerStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterForeignServerStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterForeignServerStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterForeignServerStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterForeignServerStmt.options) return &options_; } inline const ::pg_query::Node& AlterForeignServerStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterForeignServerStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterForeignServerStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterForeignServerStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterForeignServerStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterForeignServerStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterForeignServerStmt.options) return options_; } // bool has_version = 4 [json_name = "has_version"]; inline void AlterForeignServerStmt::clear_has_version() { has_version_ = false; } inline bool AlterForeignServerStmt::_internal_has_version() const { return has_version_; } inline bool AlterForeignServerStmt::has_version() const { // @@protoc_insertion_point(field_get:pg_query.AlterForeignServerStmt.has_version) return _internal_has_version(); } inline void AlterForeignServerStmt::_internal_set_has_version(bool value) { has_version_ = value; } inline void AlterForeignServerStmt::set_has_version(bool value) { _internal_set_has_version(value); // @@protoc_insertion_point(field_set:pg_query.AlterForeignServerStmt.has_version) } // ------------------------------------------------------------------- // CreateUserMappingStmt // .pg_query.RoleSpec user = 1 [json_name = "user"]; inline bool CreateUserMappingStmt::_internal_has_user() const { return this != internal_default_instance() && user_ != nullptr; } inline bool CreateUserMappingStmt::has_user() const { return _internal_has_user(); } inline void CreateUserMappingStmt::clear_user() { if (GetArena() == nullptr && user_ != nullptr) { delete user_; } user_ = nullptr; } inline const ::pg_query::RoleSpec& CreateUserMappingStmt::_internal_user() const { const ::pg_query::RoleSpec* p = user_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& CreateUserMappingStmt::user() const { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.user) return _internal_user(); } inline void CreateUserMappingStmt::unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(user_); } user_ = user; if (user) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateUserMappingStmt.user) } inline ::pg_query::RoleSpec* CreateUserMappingStmt::release_user() { ::pg_query::RoleSpec* temp = user_; user_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* CreateUserMappingStmt::unsafe_arena_release_user() { // @@protoc_insertion_point(field_release:pg_query.CreateUserMappingStmt.user) ::pg_query::RoleSpec* temp = user_; user_ = nullptr; return temp; } inline ::pg_query::RoleSpec* CreateUserMappingStmt::_internal_mutable_user() { if (user_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); user_ = p; } return user_; } inline ::pg_query::RoleSpec* CreateUserMappingStmt::mutable_user() { // @@protoc_insertion_point(field_mutable:pg_query.CreateUserMappingStmt.user) return _internal_mutable_user(); } inline void CreateUserMappingStmt::set_allocated_user(::pg_query::RoleSpec* user) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete user_; } if (user) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(user); if (message_arena != submessage_arena) { user = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, user, submessage_arena); } } else { } user_ = user; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateUserMappingStmt.user) } // string servername = 2 [json_name = "servername"]; inline void CreateUserMappingStmt::clear_servername() { servername_.ClearToEmpty(); } inline const std::string& CreateUserMappingStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.servername) return _internal_servername(); } inline void CreateUserMappingStmt::set_servername(const std::string& value) { _internal_set_servername(value); // @@protoc_insertion_point(field_set:pg_query.CreateUserMappingStmt.servername) } inline std::string* CreateUserMappingStmt::mutable_servername() { // @@protoc_insertion_point(field_mutable:pg_query.CreateUserMappingStmt.servername) return _internal_mutable_servername(); } inline const std::string& CreateUserMappingStmt::_internal_servername() const { return servername_.Get(); } inline void CreateUserMappingStmt::_internal_set_servername(const std::string& value) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateUserMappingStmt::set_servername(std::string&& value) { servername_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateUserMappingStmt.servername) } inline void CreateUserMappingStmt::set_servername(const char* value) { GOOGLE_DCHECK(value != nullptr); servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateUserMappingStmt.servername) } inline void CreateUserMappingStmt::set_servername(const char* value, size_t size) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateUserMappingStmt.servername) } inline std::string* CreateUserMappingStmt::_internal_mutable_servername() { return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateUserMappingStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.CreateUserMappingStmt.servername) return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateUserMappingStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateUserMappingStmt.servername) } // bool if_not_exists = 3 [json_name = "if_not_exists"]; inline void CreateUserMappingStmt::clear_if_not_exists() { if_not_exists_ = false; } inline bool CreateUserMappingStmt::_internal_if_not_exists() const { return if_not_exists_; } inline bool CreateUserMappingStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateUserMappingStmt::_internal_set_if_not_exists(bool value) { if_not_exists_ = value; } inline void CreateUserMappingStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateUserMappingStmt.if_not_exists) } // repeated .pg_query.Node options = 4 [json_name = "options"]; inline int CreateUserMappingStmt::_internal_options_size() const { return options_.size(); } inline int CreateUserMappingStmt::options_size() const { return _internal_options_size(); } inline void CreateUserMappingStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateUserMappingStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateUserMappingStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateUserMappingStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateUserMappingStmt.options) return &options_; } inline const ::pg_query::Node& CreateUserMappingStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateUserMappingStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateUserMappingStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateUserMappingStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateUserMappingStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateUserMappingStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateUserMappingStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateUserMappingStmt.options) return options_; } // ------------------------------------------------------------------- // AlterUserMappingStmt // .pg_query.RoleSpec user = 1 [json_name = "user"]; inline bool AlterUserMappingStmt::_internal_has_user() const { return this != internal_default_instance() && user_ != nullptr; } inline bool AlterUserMappingStmt::has_user() const { return _internal_has_user(); } inline void AlterUserMappingStmt::clear_user() { if (GetArena() == nullptr && user_ != nullptr) { delete user_; } user_ = nullptr; } inline const ::pg_query::RoleSpec& AlterUserMappingStmt::_internal_user() const { const ::pg_query::RoleSpec* p = user_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& AlterUserMappingStmt::user() const { // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.user) return _internal_user(); } inline void AlterUserMappingStmt::unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(user_); } user_ = user; if (user) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterUserMappingStmt.user) } inline ::pg_query::RoleSpec* AlterUserMappingStmt::release_user() { ::pg_query::RoleSpec* temp = user_; user_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* AlterUserMappingStmt::unsafe_arena_release_user() { // @@protoc_insertion_point(field_release:pg_query.AlterUserMappingStmt.user) ::pg_query::RoleSpec* temp = user_; user_ = nullptr; return temp; } inline ::pg_query::RoleSpec* AlterUserMappingStmt::_internal_mutable_user() { if (user_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); user_ = p; } return user_; } inline ::pg_query::RoleSpec* AlterUserMappingStmt::mutable_user() { // @@protoc_insertion_point(field_mutable:pg_query.AlterUserMappingStmt.user) return _internal_mutable_user(); } inline void AlterUserMappingStmt::set_allocated_user(::pg_query::RoleSpec* user) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete user_; } if (user) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(user); if (message_arena != submessage_arena) { user = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, user, submessage_arena); } } else { } user_ = user; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterUserMappingStmt.user) } // string servername = 2 [json_name = "servername"]; inline void AlterUserMappingStmt::clear_servername() { servername_.ClearToEmpty(); } inline const std::string& AlterUserMappingStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.servername) return _internal_servername(); } inline void AlterUserMappingStmt::set_servername(const std::string& value) { _internal_set_servername(value); // @@protoc_insertion_point(field_set:pg_query.AlterUserMappingStmt.servername) } inline std::string* AlterUserMappingStmt::mutable_servername() { // @@protoc_insertion_point(field_mutable:pg_query.AlterUserMappingStmt.servername) return _internal_mutable_servername(); } inline const std::string& AlterUserMappingStmt::_internal_servername() const { return servername_.Get(); } inline void AlterUserMappingStmt::_internal_set_servername(const std::string& value) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterUserMappingStmt::set_servername(std::string&& value) { servername_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterUserMappingStmt.servername) } inline void AlterUserMappingStmt::set_servername(const char* value) { GOOGLE_DCHECK(value != nullptr); servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterUserMappingStmt.servername) } inline void AlterUserMappingStmt::set_servername(const char* value, size_t size) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterUserMappingStmt.servername) } inline std::string* AlterUserMappingStmt::_internal_mutable_servername() { return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterUserMappingStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.AlterUserMappingStmt.servername) return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterUserMappingStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterUserMappingStmt.servername) } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int AlterUserMappingStmt::_internal_options_size() const { return options_.size(); } inline int AlterUserMappingStmt::options_size() const { return _internal_options_size(); } inline void AlterUserMappingStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterUserMappingStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterUserMappingStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterUserMappingStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterUserMappingStmt.options) return &options_; } inline const ::pg_query::Node& AlterUserMappingStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterUserMappingStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterUserMappingStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterUserMappingStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterUserMappingStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterUserMappingStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterUserMappingStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterUserMappingStmt.options) return options_; } // ------------------------------------------------------------------- // DropUserMappingStmt // .pg_query.RoleSpec user = 1 [json_name = "user"]; inline bool DropUserMappingStmt::_internal_has_user() const { return this != internal_default_instance() && user_ != nullptr; } inline bool DropUserMappingStmt::has_user() const { return _internal_has_user(); } inline void DropUserMappingStmt::clear_user() { if (GetArena() == nullptr && user_ != nullptr) { delete user_; } user_ = nullptr; } inline const ::pg_query::RoleSpec& DropUserMappingStmt::_internal_user() const { const ::pg_query::RoleSpec* p = user_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RoleSpec_default_instance_); } inline const ::pg_query::RoleSpec& DropUserMappingStmt::user() const { // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.user) return _internal_user(); } inline void DropUserMappingStmt::unsafe_arena_set_allocated_user( ::pg_query::RoleSpec* user) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(user_); } user_ = user; if (user) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DropUserMappingStmt.user) } inline ::pg_query::RoleSpec* DropUserMappingStmt::release_user() { ::pg_query::RoleSpec* temp = user_; user_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RoleSpec* DropUserMappingStmt::unsafe_arena_release_user() { // @@protoc_insertion_point(field_release:pg_query.DropUserMappingStmt.user) ::pg_query::RoleSpec* temp = user_; user_ = nullptr; return temp; } inline ::pg_query::RoleSpec* DropUserMappingStmt::_internal_mutable_user() { if (user_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RoleSpec>(GetArena()); user_ = p; } return user_; } inline ::pg_query::RoleSpec* DropUserMappingStmt::mutable_user() { // @@protoc_insertion_point(field_mutable:pg_query.DropUserMappingStmt.user) return _internal_mutable_user(); } inline void DropUserMappingStmt::set_allocated_user(::pg_query::RoleSpec* user) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete user_; } if (user) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(user); if (message_arena != submessage_arena) { user = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, user, submessage_arena); } } else { } user_ = user; // @@protoc_insertion_point(field_set_allocated:pg_query.DropUserMappingStmt.user) } // string servername = 2 [json_name = "servername"]; inline void DropUserMappingStmt::clear_servername() { servername_.ClearToEmpty(); } inline const std::string& DropUserMappingStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.servername) return _internal_servername(); } inline void DropUserMappingStmt::set_servername(const std::string& value) { _internal_set_servername(value); // @@protoc_insertion_point(field_set:pg_query.DropUserMappingStmt.servername) } inline std::string* DropUserMappingStmt::mutable_servername() { // @@protoc_insertion_point(field_mutable:pg_query.DropUserMappingStmt.servername) return _internal_mutable_servername(); } inline const std::string& DropUserMappingStmt::_internal_servername() const { return servername_.Get(); } inline void DropUserMappingStmt::_internal_set_servername(const std::string& value) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void DropUserMappingStmt::set_servername(std::string&& value) { servername_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.DropUserMappingStmt.servername) } inline void DropUserMappingStmt::set_servername(const char* value) { GOOGLE_DCHECK(value != nullptr); servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.DropUserMappingStmt.servername) } inline void DropUserMappingStmt::set_servername(const char* value, size_t size) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.DropUserMappingStmt.servername) } inline std::string* DropUserMappingStmt::_internal_mutable_servername() { return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* DropUserMappingStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.DropUserMappingStmt.servername) return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void DropUserMappingStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.DropUserMappingStmt.servername) } // bool missing_ok = 3 [json_name = "missing_ok"]; inline void DropUserMappingStmt::clear_missing_ok() { missing_ok_ = false; } inline bool DropUserMappingStmt::_internal_missing_ok() const { return missing_ok_; } inline bool DropUserMappingStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropUserMappingStmt.missing_ok) return _internal_missing_ok(); } inline void DropUserMappingStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void DropUserMappingStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropUserMappingStmt.missing_ok) } // ------------------------------------------------------------------- // AlterTableSpaceOptionsStmt // string tablespacename = 1 [json_name = "tablespacename"]; inline void AlterTableSpaceOptionsStmt::clear_tablespacename() { tablespacename_.ClearToEmpty(); } inline const std::string& AlterTableSpaceOptionsStmt::tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.tablespacename) return _internal_tablespacename(); } inline void AlterTableSpaceOptionsStmt::set_tablespacename(const std::string& value) { _internal_set_tablespacename(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableSpaceOptionsStmt.tablespacename) } inline std::string* AlterTableSpaceOptionsStmt::mutable_tablespacename() { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableSpaceOptionsStmt.tablespacename) return _internal_mutable_tablespacename(); } inline const std::string& AlterTableSpaceOptionsStmt::_internal_tablespacename() const { return tablespacename_.Get(); } inline void AlterTableSpaceOptionsStmt::_internal_set_tablespacename(const std::string& value) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterTableSpaceOptionsStmt::set_tablespacename(std::string&& value) { tablespacename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterTableSpaceOptionsStmt.tablespacename) } inline void AlterTableSpaceOptionsStmt::set_tablespacename(const char* value) { GOOGLE_DCHECK(value != nullptr); tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterTableSpaceOptionsStmt.tablespacename) } inline void AlterTableSpaceOptionsStmt::set_tablespacename(const char* value, size_t size) { tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterTableSpaceOptionsStmt.tablespacename) } inline std::string* AlterTableSpaceOptionsStmt::_internal_mutable_tablespacename() { return tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterTableSpaceOptionsStmt::release_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.AlterTableSpaceOptionsStmt.tablespacename) return tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterTableSpaceOptionsStmt::set_allocated_tablespacename(std::string* tablespacename) { if (tablespacename != nullptr) { } else { } tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tablespacename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableSpaceOptionsStmt.tablespacename) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterTableSpaceOptionsStmt::_internal_options_size() const { return options_.size(); } inline int AlterTableSpaceOptionsStmt::options_size() const { return _internal_options_size(); } inline void AlterTableSpaceOptionsStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterTableSpaceOptionsStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableSpaceOptionsStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTableSpaceOptionsStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableSpaceOptionsStmt.options) return &options_; } inline const ::pg_query::Node& AlterTableSpaceOptionsStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterTableSpaceOptionsStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterTableSpaceOptionsStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterTableSpaceOptionsStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterTableSpaceOptionsStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTableSpaceOptionsStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterTableSpaceOptionsStmt.options) return options_; } // bool is_reset = 3 [json_name = "isReset"]; inline void AlterTableSpaceOptionsStmt::clear_is_reset() { is_reset_ = false; } inline bool AlterTableSpaceOptionsStmt::_internal_is_reset() const { return is_reset_; } inline bool AlterTableSpaceOptionsStmt::is_reset() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableSpaceOptionsStmt.is_reset) return _internal_is_reset(); } inline void AlterTableSpaceOptionsStmt::_internal_set_is_reset(bool value) { is_reset_ = value; } inline void AlterTableSpaceOptionsStmt::set_is_reset(bool value) { _internal_set_is_reset(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableSpaceOptionsStmt.is_reset) } // ------------------------------------------------------------------- // AlterTableMoveAllStmt // string orig_tablespacename = 1 [json_name = "orig_tablespacename"]; inline void AlterTableMoveAllStmt::clear_orig_tablespacename() { orig_tablespacename_.ClearToEmpty(); } inline const std::string& AlterTableMoveAllStmt::orig_tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.orig_tablespacename) return _internal_orig_tablespacename(); } inline void AlterTableMoveAllStmt::set_orig_tablespacename(const std::string& value) { _internal_set_orig_tablespacename(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.orig_tablespacename) } inline std::string* AlterTableMoveAllStmt::mutable_orig_tablespacename() { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableMoveAllStmt.orig_tablespacename) return _internal_mutable_orig_tablespacename(); } inline const std::string& AlterTableMoveAllStmt::_internal_orig_tablespacename() const { return orig_tablespacename_.Get(); } inline void AlterTableMoveAllStmt::_internal_set_orig_tablespacename(const std::string& value) { orig_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterTableMoveAllStmt::set_orig_tablespacename(std::string&& value) { orig_tablespacename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterTableMoveAllStmt.orig_tablespacename) } inline void AlterTableMoveAllStmt::set_orig_tablespacename(const char* value) { GOOGLE_DCHECK(value != nullptr); orig_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterTableMoveAllStmt.orig_tablespacename) } inline void AlterTableMoveAllStmt::set_orig_tablespacename(const char* value, size_t size) { orig_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterTableMoveAllStmt.orig_tablespacename) } inline std::string* AlterTableMoveAllStmt::_internal_mutable_orig_tablespacename() { return orig_tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterTableMoveAllStmt::release_orig_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.AlterTableMoveAllStmt.orig_tablespacename) return orig_tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterTableMoveAllStmt::set_allocated_orig_tablespacename(std::string* orig_tablespacename) { if (orig_tablespacename != nullptr) { } else { } orig_tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), orig_tablespacename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableMoveAllStmt.orig_tablespacename) } // .pg_query.ObjectType objtype = 2 [json_name = "objtype"]; inline void AlterTableMoveAllStmt::clear_objtype() { objtype_ = 0; } inline ::pg_query::ObjectType AlterTableMoveAllStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(objtype_); } inline ::pg_query::ObjectType AlterTableMoveAllStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.objtype) return _internal_objtype(); } inline void AlterTableMoveAllStmt::_internal_set_objtype(::pg_query::ObjectType value) { objtype_ = value; } inline void AlterTableMoveAllStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.objtype) } // repeated .pg_query.Node roles = 3 [json_name = "roles"]; inline int AlterTableMoveAllStmt::_internal_roles_size() const { return roles_.size(); } inline int AlterTableMoveAllStmt::roles_size() const { return _internal_roles_size(); } inline void AlterTableMoveAllStmt::clear_roles() { roles_.Clear(); } inline ::pg_query::Node* AlterTableMoveAllStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableMoveAllStmt.roles) return roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterTableMoveAllStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterTableMoveAllStmt.roles) return &roles_; } inline const ::pg_query::Node& AlterTableMoveAllStmt::_internal_roles(int index) const { return roles_.Get(index); } inline const ::pg_query::Node& AlterTableMoveAllStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* AlterTableMoveAllStmt::_internal_add_roles() { return roles_.Add(); } inline ::pg_query::Node* AlterTableMoveAllStmt::add_roles() { // @@protoc_insertion_point(field_add:pg_query.AlterTableMoveAllStmt.roles) return _internal_add_roles(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterTableMoveAllStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.AlterTableMoveAllStmt.roles) return roles_; } // string new_tablespacename = 4 [json_name = "new_tablespacename"]; inline void AlterTableMoveAllStmt::clear_new_tablespacename() { new_tablespacename_.ClearToEmpty(); } inline const std::string& AlterTableMoveAllStmt::new_tablespacename() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.new_tablespacename) return _internal_new_tablespacename(); } inline void AlterTableMoveAllStmt::set_new_tablespacename(const std::string& value) { _internal_set_new_tablespacename(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.new_tablespacename) } inline std::string* AlterTableMoveAllStmt::mutable_new_tablespacename() { // @@protoc_insertion_point(field_mutable:pg_query.AlterTableMoveAllStmt.new_tablespacename) return _internal_mutable_new_tablespacename(); } inline const std::string& AlterTableMoveAllStmt::_internal_new_tablespacename() const { return new_tablespacename_.Get(); } inline void AlterTableMoveAllStmt::_internal_set_new_tablespacename(const std::string& value) { new_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterTableMoveAllStmt::set_new_tablespacename(std::string&& value) { new_tablespacename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterTableMoveAllStmt.new_tablespacename) } inline void AlterTableMoveAllStmt::set_new_tablespacename(const char* value) { GOOGLE_DCHECK(value != nullptr); new_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterTableMoveAllStmt.new_tablespacename) } inline void AlterTableMoveAllStmt::set_new_tablespacename(const char* value, size_t size) { new_tablespacename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterTableMoveAllStmt.new_tablespacename) } inline std::string* AlterTableMoveAllStmt::_internal_mutable_new_tablespacename() { return new_tablespacename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterTableMoveAllStmt::release_new_tablespacename() { // @@protoc_insertion_point(field_release:pg_query.AlterTableMoveAllStmt.new_tablespacename) return new_tablespacename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterTableMoveAllStmt::set_allocated_new_tablespacename(std::string* new_tablespacename) { if (new_tablespacename != nullptr) { } else { } new_tablespacename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), new_tablespacename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterTableMoveAllStmt.new_tablespacename) } // bool nowait = 5 [json_name = "nowait"]; inline void AlterTableMoveAllStmt::clear_nowait() { nowait_ = false; } inline bool AlterTableMoveAllStmt::_internal_nowait() const { return nowait_; } inline bool AlterTableMoveAllStmt::nowait() const { // @@protoc_insertion_point(field_get:pg_query.AlterTableMoveAllStmt.nowait) return _internal_nowait(); } inline void AlterTableMoveAllStmt::_internal_set_nowait(bool value) { nowait_ = value; } inline void AlterTableMoveAllStmt::set_nowait(bool value) { _internal_set_nowait(value); // @@protoc_insertion_point(field_set:pg_query.AlterTableMoveAllStmt.nowait) } // ------------------------------------------------------------------- // SecLabelStmt // .pg_query.ObjectType objtype = 1 [json_name = "objtype"]; inline void SecLabelStmt::clear_objtype() { objtype_ = 0; } inline ::pg_query::ObjectType SecLabelStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(objtype_); } inline ::pg_query::ObjectType SecLabelStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.objtype) return _internal_objtype(); } inline void SecLabelStmt::_internal_set_objtype(::pg_query::ObjectType value) { objtype_ = value; } inline void SecLabelStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.objtype) } // .pg_query.Node object = 2 [json_name = "object"]; inline bool SecLabelStmt::_internal_has_object() const { return this != internal_default_instance() && object_ != nullptr; } inline bool SecLabelStmt::has_object() const { return _internal_has_object(); } inline void SecLabelStmt::clear_object() { if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; } inline const ::pg_query::Node& SecLabelStmt::_internal_object() const { const ::pg_query::Node* p = object_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SecLabelStmt::object() const { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.object) return _internal_object(); } inline void SecLabelStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); } object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SecLabelStmt.object) } inline ::pg_query::Node* SecLabelStmt::release_object() { ::pg_query::Node* temp = object_; object_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SecLabelStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.object) ::pg_query::Node* temp = object_; object_ = nullptr; return temp; } inline ::pg_query::Node* SecLabelStmt::_internal_mutable_object() { if (object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); object_ = p; } return object_; } inline ::pg_query::Node* SecLabelStmt::mutable_object() { // @@protoc_insertion_point(field_mutable:pg_query.SecLabelStmt.object) return _internal_mutable_object(); } inline void SecLabelStmt::set_allocated_object(::pg_query::Node* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.object) } // string provider = 3 [json_name = "provider"]; inline void SecLabelStmt::clear_provider() { provider_.ClearToEmpty(); } inline const std::string& SecLabelStmt::provider() const { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.provider) return _internal_provider(); } inline void SecLabelStmt::set_provider(const std::string& value) { _internal_set_provider(value); // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.provider) } inline std::string* SecLabelStmt::mutable_provider() { // @@protoc_insertion_point(field_mutable:pg_query.SecLabelStmt.provider) return _internal_mutable_provider(); } inline const std::string& SecLabelStmt::_internal_provider() const { return provider_.Get(); } inline void SecLabelStmt::_internal_set_provider(const std::string& value) { provider_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void SecLabelStmt::set_provider(std::string&& value) { provider_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.SecLabelStmt.provider) } inline void SecLabelStmt::set_provider(const char* value) { GOOGLE_DCHECK(value != nullptr); provider_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.SecLabelStmt.provider) } inline void SecLabelStmt::set_provider(const char* value, size_t size) { provider_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.SecLabelStmt.provider) } inline std::string* SecLabelStmt::_internal_mutable_provider() { return provider_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* SecLabelStmt::release_provider() { // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.provider) return provider_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void SecLabelStmt::set_allocated_provider(std::string* provider) { if (provider != nullptr) { } else { } provider_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), provider, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.provider) } // string label = 4 [json_name = "label"]; inline void SecLabelStmt::clear_label() { label_.ClearToEmpty(); } inline const std::string& SecLabelStmt::label() const { // @@protoc_insertion_point(field_get:pg_query.SecLabelStmt.label) return _internal_label(); } inline void SecLabelStmt::set_label(const std::string& value) { _internal_set_label(value); // @@protoc_insertion_point(field_set:pg_query.SecLabelStmt.label) } inline std::string* SecLabelStmt::mutable_label() { // @@protoc_insertion_point(field_mutable:pg_query.SecLabelStmt.label) return _internal_mutable_label(); } inline const std::string& SecLabelStmt::_internal_label() const { return label_.Get(); } inline void SecLabelStmt::_internal_set_label(const std::string& value) { label_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void SecLabelStmt::set_label(std::string&& value) { label_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.SecLabelStmt.label) } inline void SecLabelStmt::set_label(const char* value) { GOOGLE_DCHECK(value != nullptr); label_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.SecLabelStmt.label) } inline void SecLabelStmt::set_label(const char* value, size_t size) { label_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.SecLabelStmt.label) } inline std::string* SecLabelStmt::_internal_mutable_label() { return label_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* SecLabelStmt::release_label() { // @@protoc_insertion_point(field_release:pg_query.SecLabelStmt.label) return label_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void SecLabelStmt::set_allocated_label(std::string* label) { if (label != nullptr) { } else { } label_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), label, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.SecLabelStmt.label) } // ------------------------------------------------------------------- // CreateForeignTableStmt // .pg_query.CreateStmt base_stmt = 1 [json_name = "base"]; inline bool CreateForeignTableStmt::_internal_has_base_stmt() const { return this != internal_default_instance() && base_stmt_ != nullptr; } inline bool CreateForeignTableStmt::has_base_stmt() const { return _internal_has_base_stmt(); } inline void CreateForeignTableStmt::clear_base_stmt() { if (GetArena() == nullptr && base_stmt_ != nullptr) { delete base_stmt_; } base_stmt_ = nullptr; } inline const ::pg_query::CreateStmt& CreateForeignTableStmt::_internal_base_stmt() const { const ::pg_query::CreateStmt* p = base_stmt_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_CreateStmt_default_instance_); } inline const ::pg_query::CreateStmt& CreateForeignTableStmt::base_stmt() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.base_stmt) return _internal_base_stmt(); } inline void CreateForeignTableStmt::unsafe_arena_set_allocated_base_stmt( ::pg_query::CreateStmt* base_stmt) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(base_stmt_); } base_stmt_ = base_stmt; if (base_stmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateForeignTableStmt.base_stmt) } inline ::pg_query::CreateStmt* CreateForeignTableStmt::release_base_stmt() { ::pg_query::CreateStmt* temp = base_stmt_; base_stmt_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::CreateStmt* CreateForeignTableStmt::unsafe_arena_release_base_stmt() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignTableStmt.base_stmt) ::pg_query::CreateStmt* temp = base_stmt_; base_stmt_ = nullptr; return temp; } inline ::pg_query::CreateStmt* CreateForeignTableStmt::_internal_mutable_base_stmt() { if (base_stmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CreateStmt>(GetArena()); base_stmt_ = p; } return base_stmt_; } inline ::pg_query::CreateStmt* CreateForeignTableStmt::mutable_base_stmt() { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignTableStmt.base_stmt) return _internal_mutable_base_stmt(); } inline void CreateForeignTableStmt::set_allocated_base_stmt(::pg_query::CreateStmt* base_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete base_stmt_; } if (base_stmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(base_stmt); if (message_arena != submessage_arena) { base_stmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, base_stmt, submessage_arena); } } else { } base_stmt_ = base_stmt; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignTableStmt.base_stmt) } // string servername = 2 [json_name = "servername"]; inline void CreateForeignTableStmt::clear_servername() { servername_.ClearToEmpty(); } inline const std::string& CreateForeignTableStmt::servername() const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.servername) return _internal_servername(); } inline void CreateForeignTableStmt::set_servername(const std::string& value) { _internal_set_servername(value); // @@protoc_insertion_point(field_set:pg_query.CreateForeignTableStmt.servername) } inline std::string* CreateForeignTableStmt::mutable_servername() { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignTableStmt.servername) return _internal_mutable_servername(); } inline const std::string& CreateForeignTableStmt::_internal_servername() const { return servername_.Get(); } inline void CreateForeignTableStmt::_internal_set_servername(const std::string& value) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateForeignTableStmt::set_servername(std::string&& value) { servername_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateForeignTableStmt.servername) } inline void CreateForeignTableStmt::set_servername(const char* value) { GOOGLE_DCHECK(value != nullptr); servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateForeignTableStmt.servername) } inline void CreateForeignTableStmt::set_servername(const char* value, size_t size) { servername_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateForeignTableStmt.servername) } inline std::string* CreateForeignTableStmt::_internal_mutable_servername() { return servername_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateForeignTableStmt::release_servername() { // @@protoc_insertion_point(field_release:pg_query.CreateForeignTableStmt.servername) return servername_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateForeignTableStmt::set_allocated_servername(std::string* servername) { if (servername != nullptr) { } else { } servername_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), servername, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateForeignTableStmt.servername) } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int CreateForeignTableStmt::_internal_options_size() const { return options_.size(); } inline int CreateForeignTableStmt::options_size() const { return _internal_options_size(); } inline void CreateForeignTableStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateForeignTableStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateForeignTableStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateForeignTableStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateForeignTableStmt.options) return &options_; } inline const ::pg_query::Node& CreateForeignTableStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateForeignTableStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateForeignTableStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateForeignTableStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateForeignTableStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateForeignTableStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateForeignTableStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateForeignTableStmt.options) return options_; } // ------------------------------------------------------------------- // ImportForeignSchemaStmt // string server_name = 1 [json_name = "server_name"]; inline void ImportForeignSchemaStmt::clear_server_name() { server_name_.ClearToEmpty(); } inline const std::string& ImportForeignSchemaStmt::server_name() const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.server_name) return _internal_server_name(); } inline void ImportForeignSchemaStmt::set_server_name(const std::string& value) { _internal_set_server_name(value); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.server_name) } inline std::string* ImportForeignSchemaStmt::mutable_server_name() { // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.server_name) return _internal_mutable_server_name(); } inline const std::string& ImportForeignSchemaStmt::_internal_server_name() const { return server_name_.Get(); } inline void ImportForeignSchemaStmt::_internal_set_server_name(const std::string& value) { server_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ImportForeignSchemaStmt::set_server_name(std::string&& value) { server_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ImportForeignSchemaStmt.server_name) } inline void ImportForeignSchemaStmt::set_server_name(const char* value) { GOOGLE_DCHECK(value != nullptr); server_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ImportForeignSchemaStmt.server_name) } inline void ImportForeignSchemaStmt::set_server_name(const char* value, size_t size) { server_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ImportForeignSchemaStmt.server_name) } inline std::string* ImportForeignSchemaStmt::_internal_mutable_server_name() { return server_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ImportForeignSchemaStmt::release_server_name() { // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.server_name) return server_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ImportForeignSchemaStmt::set_allocated_server_name(std::string* server_name) { if (server_name != nullptr) { } else { } server_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), server_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ImportForeignSchemaStmt.server_name) } // string remote_schema = 2 [json_name = "remote_schema"]; inline void ImportForeignSchemaStmt::clear_remote_schema() { remote_schema_.ClearToEmpty(); } inline const std::string& ImportForeignSchemaStmt::remote_schema() const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.remote_schema) return _internal_remote_schema(); } inline void ImportForeignSchemaStmt::set_remote_schema(const std::string& value) { _internal_set_remote_schema(value); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.remote_schema) } inline std::string* ImportForeignSchemaStmt::mutable_remote_schema() { // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.remote_schema) return _internal_mutable_remote_schema(); } inline const std::string& ImportForeignSchemaStmt::_internal_remote_schema() const { return remote_schema_.Get(); } inline void ImportForeignSchemaStmt::_internal_set_remote_schema(const std::string& value) { remote_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ImportForeignSchemaStmt::set_remote_schema(std::string&& value) { remote_schema_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ImportForeignSchemaStmt.remote_schema) } inline void ImportForeignSchemaStmt::set_remote_schema(const char* value) { GOOGLE_DCHECK(value != nullptr); remote_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ImportForeignSchemaStmt.remote_schema) } inline void ImportForeignSchemaStmt::set_remote_schema(const char* value, size_t size) { remote_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ImportForeignSchemaStmt.remote_schema) } inline std::string* ImportForeignSchemaStmt::_internal_mutable_remote_schema() { return remote_schema_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ImportForeignSchemaStmt::release_remote_schema() { // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.remote_schema) return remote_schema_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ImportForeignSchemaStmt::set_allocated_remote_schema(std::string* remote_schema) { if (remote_schema != nullptr) { } else { } remote_schema_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), remote_schema, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ImportForeignSchemaStmt.remote_schema) } // string local_schema = 3 [json_name = "local_schema"]; inline void ImportForeignSchemaStmt::clear_local_schema() { local_schema_.ClearToEmpty(); } inline const std::string& ImportForeignSchemaStmt::local_schema() const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.local_schema) return _internal_local_schema(); } inline void ImportForeignSchemaStmt::set_local_schema(const std::string& value) { _internal_set_local_schema(value); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.local_schema) } inline std::string* ImportForeignSchemaStmt::mutable_local_schema() { // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.local_schema) return _internal_mutable_local_schema(); } inline const std::string& ImportForeignSchemaStmt::_internal_local_schema() const { return local_schema_.Get(); } inline void ImportForeignSchemaStmt::_internal_set_local_schema(const std::string& value) { local_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ImportForeignSchemaStmt::set_local_schema(std::string&& value) { local_schema_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ImportForeignSchemaStmt.local_schema) } inline void ImportForeignSchemaStmt::set_local_schema(const char* value) { GOOGLE_DCHECK(value != nullptr); local_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ImportForeignSchemaStmt.local_schema) } inline void ImportForeignSchemaStmt::set_local_schema(const char* value, size_t size) { local_schema_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ImportForeignSchemaStmt.local_schema) } inline std::string* ImportForeignSchemaStmt::_internal_mutable_local_schema() { return local_schema_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ImportForeignSchemaStmt::release_local_schema() { // @@protoc_insertion_point(field_release:pg_query.ImportForeignSchemaStmt.local_schema) return local_schema_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ImportForeignSchemaStmt::set_allocated_local_schema(std::string* local_schema) { if (local_schema != nullptr) { } else { } local_schema_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), local_schema, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ImportForeignSchemaStmt.local_schema) } // .pg_query.ImportForeignSchemaType list_type = 4 [json_name = "list_type"]; inline void ImportForeignSchemaStmt::clear_list_type() { list_type_ = 0; } inline ::pg_query::ImportForeignSchemaType ImportForeignSchemaStmt::_internal_list_type() const { return static_cast< ::pg_query::ImportForeignSchemaType >(list_type_); } inline ::pg_query::ImportForeignSchemaType ImportForeignSchemaStmt::list_type() const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.list_type) return _internal_list_type(); } inline void ImportForeignSchemaStmt::_internal_set_list_type(::pg_query::ImportForeignSchemaType value) { list_type_ = value; } inline void ImportForeignSchemaStmt::set_list_type(::pg_query::ImportForeignSchemaType value) { _internal_set_list_type(value); // @@protoc_insertion_point(field_set:pg_query.ImportForeignSchemaStmt.list_type) } // repeated .pg_query.Node table_list = 5 [json_name = "table_list"]; inline int ImportForeignSchemaStmt::_internal_table_list_size() const { return table_list_.size(); } inline int ImportForeignSchemaStmt::table_list_size() const { return _internal_table_list_size(); } inline void ImportForeignSchemaStmt::clear_table_list() { table_list_.Clear(); } inline ::pg_query::Node* ImportForeignSchemaStmt::mutable_table_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.table_list) return table_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ImportForeignSchemaStmt::mutable_table_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.ImportForeignSchemaStmt.table_list) return &table_list_; } inline const ::pg_query::Node& ImportForeignSchemaStmt::_internal_table_list(int index) const { return table_list_.Get(index); } inline const ::pg_query::Node& ImportForeignSchemaStmt::table_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.table_list) return _internal_table_list(index); } inline ::pg_query::Node* ImportForeignSchemaStmt::_internal_add_table_list() { return table_list_.Add(); } inline ::pg_query::Node* ImportForeignSchemaStmt::add_table_list() { // @@protoc_insertion_point(field_add:pg_query.ImportForeignSchemaStmt.table_list) return _internal_add_table_list(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ImportForeignSchemaStmt::table_list() const { // @@protoc_insertion_point(field_list:pg_query.ImportForeignSchemaStmt.table_list) return table_list_; } // repeated .pg_query.Node options = 6 [json_name = "options"]; inline int ImportForeignSchemaStmt::_internal_options_size() const { return options_.size(); } inline int ImportForeignSchemaStmt::options_size() const { return _internal_options_size(); } inline void ImportForeignSchemaStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* ImportForeignSchemaStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ImportForeignSchemaStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ImportForeignSchemaStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.ImportForeignSchemaStmt.options) return &options_; } inline const ::pg_query::Node& ImportForeignSchemaStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& ImportForeignSchemaStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.ImportForeignSchemaStmt.options) return _internal_options(index); } inline ::pg_query::Node* ImportForeignSchemaStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* ImportForeignSchemaStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.ImportForeignSchemaStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ImportForeignSchemaStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.ImportForeignSchemaStmt.options) return options_; } // ------------------------------------------------------------------- // CreateExtensionStmt // string extname = 1 [json_name = "extname"]; inline void CreateExtensionStmt::clear_extname() { extname_.ClearToEmpty(); } inline const std::string& CreateExtensionStmt::extname() const { // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.extname) return _internal_extname(); } inline void CreateExtensionStmt::set_extname(const std::string& value) { _internal_set_extname(value); // @@protoc_insertion_point(field_set:pg_query.CreateExtensionStmt.extname) } inline std::string* CreateExtensionStmt::mutable_extname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateExtensionStmt.extname) return _internal_mutable_extname(); } inline const std::string& CreateExtensionStmt::_internal_extname() const { return extname_.Get(); } inline void CreateExtensionStmt::_internal_set_extname(const std::string& value) { extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateExtensionStmt::set_extname(std::string&& value) { extname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateExtensionStmt.extname) } inline void CreateExtensionStmt::set_extname(const char* value) { GOOGLE_DCHECK(value != nullptr); extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateExtensionStmt.extname) } inline void CreateExtensionStmt::set_extname(const char* value, size_t size) { extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateExtensionStmt.extname) } inline std::string* CreateExtensionStmt::_internal_mutable_extname() { return extname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateExtensionStmt::release_extname() { // @@protoc_insertion_point(field_release:pg_query.CreateExtensionStmt.extname) return extname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateExtensionStmt::set_allocated_extname(std::string* extname) { if (extname != nullptr) { } else { } extname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), extname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateExtensionStmt.extname) } // bool if_not_exists = 2 [json_name = "if_not_exists"]; inline void CreateExtensionStmt::clear_if_not_exists() { if_not_exists_ = false; } inline bool CreateExtensionStmt::_internal_if_not_exists() const { return if_not_exists_; } inline bool CreateExtensionStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateExtensionStmt::_internal_set_if_not_exists(bool value) { if_not_exists_ = value; } inline void CreateExtensionStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateExtensionStmt.if_not_exists) } // repeated .pg_query.Node options = 3 [json_name = "options"]; inline int CreateExtensionStmt::_internal_options_size() const { return options_.size(); } inline int CreateExtensionStmt::options_size() const { return _internal_options_size(); } inline void CreateExtensionStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateExtensionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateExtensionStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateExtensionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateExtensionStmt.options) return &options_; } inline const ::pg_query::Node& CreateExtensionStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateExtensionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateExtensionStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateExtensionStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateExtensionStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateExtensionStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateExtensionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateExtensionStmt.options) return options_; } // ------------------------------------------------------------------- // AlterExtensionStmt // string extname = 1 [json_name = "extname"]; inline void AlterExtensionStmt::clear_extname() { extname_.ClearToEmpty(); } inline const std::string& AlterExtensionStmt::extname() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionStmt.extname) return _internal_extname(); } inline void AlterExtensionStmt::set_extname(const std::string& value) { _internal_set_extname(value); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionStmt.extname) } inline std::string* AlterExtensionStmt::mutable_extname() { // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionStmt.extname) return _internal_mutable_extname(); } inline const std::string& AlterExtensionStmt::_internal_extname() const { return extname_.Get(); } inline void AlterExtensionStmt::_internal_set_extname(const std::string& value) { extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterExtensionStmt::set_extname(std::string&& value) { extname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterExtensionStmt.extname) } inline void AlterExtensionStmt::set_extname(const char* value) { GOOGLE_DCHECK(value != nullptr); extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterExtensionStmt.extname) } inline void AlterExtensionStmt::set_extname(const char* value, size_t size) { extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterExtensionStmt.extname) } inline std::string* AlterExtensionStmt::_internal_mutable_extname() { return extname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterExtensionStmt::release_extname() { // @@protoc_insertion_point(field_release:pg_query.AlterExtensionStmt.extname) return extname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterExtensionStmt::set_allocated_extname(std::string* extname) { if (extname != nullptr) { } else { } extname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), extname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterExtensionStmt.extname) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterExtensionStmt::_internal_options_size() const { return options_.size(); } inline int AlterExtensionStmt::options_size() const { return _internal_options_size(); } inline void AlterExtensionStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterExtensionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterExtensionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterExtensionStmt.options) return &options_; } inline const ::pg_query::Node& AlterExtensionStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterExtensionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterExtensionStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterExtensionStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterExtensionStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterExtensionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterExtensionStmt.options) return options_; } // ------------------------------------------------------------------- // AlterExtensionContentsStmt // string extname = 1 [json_name = "extname"]; inline void AlterExtensionContentsStmt::clear_extname() { extname_.ClearToEmpty(); } inline const std::string& AlterExtensionContentsStmt::extname() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.extname) return _internal_extname(); } inline void AlterExtensionContentsStmt::set_extname(const std::string& value) { _internal_set_extname(value); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.extname) } inline std::string* AlterExtensionContentsStmt::mutable_extname() { // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionContentsStmt.extname) return _internal_mutable_extname(); } inline const std::string& AlterExtensionContentsStmt::_internal_extname() const { return extname_.Get(); } inline void AlterExtensionContentsStmt::_internal_set_extname(const std::string& value) { extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterExtensionContentsStmt::set_extname(std::string&& value) { extname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterExtensionContentsStmt.extname) } inline void AlterExtensionContentsStmt::set_extname(const char* value) { GOOGLE_DCHECK(value != nullptr); extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterExtensionContentsStmt.extname) } inline void AlterExtensionContentsStmt::set_extname(const char* value, size_t size) { extname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterExtensionContentsStmt.extname) } inline std::string* AlterExtensionContentsStmt::_internal_mutable_extname() { return extname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterExtensionContentsStmt::release_extname() { // @@protoc_insertion_point(field_release:pg_query.AlterExtensionContentsStmt.extname) return extname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterExtensionContentsStmt::set_allocated_extname(std::string* extname) { if (extname != nullptr) { } else { } extname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), extname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterExtensionContentsStmt.extname) } // int32 action = 2 [json_name = "action"]; inline void AlterExtensionContentsStmt::clear_action() { action_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 AlterExtensionContentsStmt::_internal_action() const { return action_; } inline ::PROTOBUF_NAMESPACE_ID::int32 AlterExtensionContentsStmt::action() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.action) return _internal_action(); } inline void AlterExtensionContentsStmt::_internal_set_action(::PROTOBUF_NAMESPACE_ID::int32 value) { action_ = value; } inline void AlterExtensionContentsStmt::set_action(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.action) } // .pg_query.ObjectType objtype = 3 [json_name = "objtype"]; inline void AlterExtensionContentsStmt::clear_objtype() { objtype_ = 0; } inline ::pg_query::ObjectType AlterExtensionContentsStmt::_internal_objtype() const { return static_cast< ::pg_query::ObjectType >(objtype_); } inline ::pg_query::ObjectType AlterExtensionContentsStmt::objtype() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.objtype) return _internal_objtype(); } inline void AlterExtensionContentsStmt::_internal_set_objtype(::pg_query::ObjectType value) { objtype_ = value; } inline void AlterExtensionContentsStmt::set_objtype(::pg_query::ObjectType value) { _internal_set_objtype(value); // @@protoc_insertion_point(field_set:pg_query.AlterExtensionContentsStmt.objtype) } // .pg_query.Node object = 4 [json_name = "object"]; inline bool AlterExtensionContentsStmt::_internal_has_object() const { return this != internal_default_instance() && object_ != nullptr; } inline bool AlterExtensionContentsStmt::has_object() const { return _internal_has_object(); } inline void AlterExtensionContentsStmt::clear_object() { if (GetArena() == nullptr && object_ != nullptr) { delete object_; } object_ = nullptr; } inline const ::pg_query::Node& AlterExtensionContentsStmt::_internal_object() const { const ::pg_query::Node* p = object_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterExtensionContentsStmt::object() const { // @@protoc_insertion_point(field_get:pg_query.AlterExtensionContentsStmt.object) return _internal_object(); } inline void AlterExtensionContentsStmt::unsafe_arena_set_allocated_object( ::pg_query::Node* object) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(object_); } object_ = object; if (object) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterExtensionContentsStmt.object) } inline ::pg_query::Node* AlterExtensionContentsStmt::release_object() { ::pg_query::Node* temp = object_; object_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* AlterExtensionContentsStmt::unsafe_arena_release_object() { // @@protoc_insertion_point(field_release:pg_query.AlterExtensionContentsStmt.object) ::pg_query::Node* temp = object_; object_ = nullptr; return temp; } inline ::pg_query::Node* AlterExtensionContentsStmt::_internal_mutable_object() { if (object_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); object_ = p; } return object_; } inline ::pg_query::Node* AlterExtensionContentsStmt::mutable_object() { // @@protoc_insertion_point(field_mutable:pg_query.AlterExtensionContentsStmt.object) return _internal_mutable_object(); } inline void AlterExtensionContentsStmt::set_allocated_object(::pg_query::Node* object) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete object_; } if (object) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(object); if (message_arena != submessage_arena) { object = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, object, submessage_arena); } } else { } object_ = object; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterExtensionContentsStmt.object) } // ------------------------------------------------------------------- // CreateEventTrigStmt // string trigname = 1 [json_name = "trigname"]; inline void CreateEventTrigStmt::clear_trigname() { trigname_.ClearToEmpty(); } inline const std::string& CreateEventTrigStmt::trigname() const { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.trigname) return _internal_trigname(); } inline void CreateEventTrigStmt::set_trigname(const std::string& value) { _internal_set_trigname(value); // @@protoc_insertion_point(field_set:pg_query.CreateEventTrigStmt.trigname) } inline std::string* CreateEventTrigStmt::mutable_trigname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.trigname) return _internal_mutable_trigname(); } inline const std::string& CreateEventTrigStmt::_internal_trigname() const { return trigname_.Get(); } inline void CreateEventTrigStmt::_internal_set_trigname(const std::string& value) { trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateEventTrigStmt::set_trigname(std::string&& value) { trigname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateEventTrigStmt.trigname) } inline void CreateEventTrigStmt::set_trigname(const char* value) { GOOGLE_DCHECK(value != nullptr); trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateEventTrigStmt.trigname) } inline void CreateEventTrigStmt::set_trigname(const char* value, size_t size) { trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateEventTrigStmt.trigname) } inline std::string* CreateEventTrigStmt::_internal_mutable_trigname() { return trigname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateEventTrigStmt::release_trigname() { // @@protoc_insertion_point(field_release:pg_query.CreateEventTrigStmt.trigname) return trigname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateEventTrigStmt::set_allocated_trigname(std::string* trigname) { if (trigname != nullptr) { } else { } trigname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), trigname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateEventTrigStmt.trigname) } // string eventname = 2 [json_name = "eventname"]; inline void CreateEventTrigStmt::clear_eventname() { eventname_.ClearToEmpty(); } inline const std::string& CreateEventTrigStmt::eventname() const { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.eventname) return _internal_eventname(); } inline void CreateEventTrigStmt::set_eventname(const std::string& value) { _internal_set_eventname(value); // @@protoc_insertion_point(field_set:pg_query.CreateEventTrigStmt.eventname) } inline std::string* CreateEventTrigStmt::mutable_eventname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.eventname) return _internal_mutable_eventname(); } inline const std::string& CreateEventTrigStmt::_internal_eventname() const { return eventname_.Get(); } inline void CreateEventTrigStmt::_internal_set_eventname(const std::string& value) { eventname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateEventTrigStmt::set_eventname(std::string&& value) { eventname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateEventTrigStmt.eventname) } inline void CreateEventTrigStmt::set_eventname(const char* value) { GOOGLE_DCHECK(value != nullptr); eventname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateEventTrigStmt.eventname) } inline void CreateEventTrigStmt::set_eventname(const char* value, size_t size) { eventname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateEventTrigStmt.eventname) } inline std::string* CreateEventTrigStmt::_internal_mutable_eventname() { return eventname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateEventTrigStmt::release_eventname() { // @@protoc_insertion_point(field_release:pg_query.CreateEventTrigStmt.eventname) return eventname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateEventTrigStmt::set_allocated_eventname(std::string* eventname) { if (eventname != nullptr) { } else { } eventname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), eventname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateEventTrigStmt.eventname) } // repeated .pg_query.Node whenclause = 3 [json_name = "whenclause"]; inline int CreateEventTrigStmt::_internal_whenclause_size() const { return whenclause_.size(); } inline int CreateEventTrigStmt::whenclause_size() const { return _internal_whenclause_size(); } inline void CreateEventTrigStmt::clear_whenclause() { whenclause_.Clear(); } inline ::pg_query::Node* CreateEventTrigStmt::mutable_whenclause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.whenclause) return whenclause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateEventTrigStmt::mutable_whenclause() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEventTrigStmt.whenclause) return &whenclause_; } inline const ::pg_query::Node& CreateEventTrigStmt::_internal_whenclause(int index) const { return whenclause_.Get(index); } inline const ::pg_query::Node& CreateEventTrigStmt::whenclause(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.whenclause) return _internal_whenclause(index); } inline ::pg_query::Node* CreateEventTrigStmt::_internal_add_whenclause() { return whenclause_.Add(); } inline ::pg_query::Node* CreateEventTrigStmt::add_whenclause() { // @@protoc_insertion_point(field_add:pg_query.CreateEventTrigStmt.whenclause) return _internal_add_whenclause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateEventTrigStmt::whenclause() const { // @@protoc_insertion_point(field_list:pg_query.CreateEventTrigStmt.whenclause) return whenclause_; } // repeated .pg_query.Node funcname = 4 [json_name = "funcname"]; inline int CreateEventTrigStmt::_internal_funcname_size() const { return funcname_.size(); } inline int CreateEventTrigStmt::funcname_size() const { return _internal_funcname_size(); } inline void CreateEventTrigStmt::clear_funcname() { funcname_.Clear(); } inline ::pg_query::Node* CreateEventTrigStmt::mutable_funcname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateEventTrigStmt.funcname) return funcname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateEventTrigStmt::mutable_funcname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateEventTrigStmt.funcname) return &funcname_; } inline const ::pg_query::Node& CreateEventTrigStmt::_internal_funcname(int index) const { return funcname_.Get(index); } inline const ::pg_query::Node& CreateEventTrigStmt::funcname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateEventTrigStmt.funcname) return _internal_funcname(index); } inline ::pg_query::Node* CreateEventTrigStmt::_internal_add_funcname() { return funcname_.Add(); } inline ::pg_query::Node* CreateEventTrigStmt::add_funcname() { // @@protoc_insertion_point(field_add:pg_query.CreateEventTrigStmt.funcname) return _internal_add_funcname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateEventTrigStmt::funcname() const { // @@protoc_insertion_point(field_list:pg_query.CreateEventTrigStmt.funcname) return funcname_; } // ------------------------------------------------------------------- // AlterEventTrigStmt // string trigname = 1 [json_name = "trigname"]; inline void AlterEventTrigStmt::clear_trigname() { trigname_.ClearToEmpty(); } inline const std::string& AlterEventTrigStmt::trigname() const { // @@protoc_insertion_point(field_get:pg_query.AlterEventTrigStmt.trigname) return _internal_trigname(); } inline void AlterEventTrigStmt::set_trigname(const std::string& value) { _internal_set_trigname(value); // @@protoc_insertion_point(field_set:pg_query.AlterEventTrigStmt.trigname) } inline std::string* AlterEventTrigStmt::mutable_trigname() { // @@protoc_insertion_point(field_mutable:pg_query.AlterEventTrigStmt.trigname) return _internal_mutable_trigname(); } inline const std::string& AlterEventTrigStmt::_internal_trigname() const { return trigname_.Get(); } inline void AlterEventTrigStmt::_internal_set_trigname(const std::string& value) { trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterEventTrigStmt::set_trigname(std::string&& value) { trigname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterEventTrigStmt.trigname) } inline void AlterEventTrigStmt::set_trigname(const char* value) { GOOGLE_DCHECK(value != nullptr); trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterEventTrigStmt.trigname) } inline void AlterEventTrigStmt::set_trigname(const char* value, size_t size) { trigname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterEventTrigStmt.trigname) } inline std::string* AlterEventTrigStmt::_internal_mutable_trigname() { return trigname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterEventTrigStmt::release_trigname() { // @@protoc_insertion_point(field_release:pg_query.AlterEventTrigStmt.trigname) return trigname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterEventTrigStmt::set_allocated_trigname(std::string* trigname) { if (trigname != nullptr) { } else { } trigname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), trigname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEventTrigStmt.trigname) } // string tgenabled = 2 [json_name = "tgenabled"]; inline void AlterEventTrigStmt::clear_tgenabled() { tgenabled_.ClearToEmpty(); } inline const std::string& AlterEventTrigStmt::tgenabled() const { // @@protoc_insertion_point(field_get:pg_query.AlterEventTrigStmt.tgenabled) return _internal_tgenabled(); } inline void AlterEventTrigStmt::set_tgenabled(const std::string& value) { _internal_set_tgenabled(value); // @@protoc_insertion_point(field_set:pg_query.AlterEventTrigStmt.tgenabled) } inline std::string* AlterEventTrigStmt::mutable_tgenabled() { // @@protoc_insertion_point(field_mutable:pg_query.AlterEventTrigStmt.tgenabled) return _internal_mutable_tgenabled(); } inline const std::string& AlterEventTrigStmt::_internal_tgenabled() const { return tgenabled_.Get(); } inline void AlterEventTrigStmt::_internal_set_tgenabled(const std::string& value) { tgenabled_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterEventTrigStmt::set_tgenabled(std::string&& value) { tgenabled_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterEventTrigStmt.tgenabled) } inline void AlterEventTrigStmt::set_tgenabled(const char* value) { GOOGLE_DCHECK(value != nullptr); tgenabled_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterEventTrigStmt.tgenabled) } inline void AlterEventTrigStmt::set_tgenabled(const char* value, size_t size) { tgenabled_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterEventTrigStmt.tgenabled) } inline std::string* AlterEventTrigStmt::_internal_mutable_tgenabled() { return tgenabled_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterEventTrigStmt::release_tgenabled() { // @@protoc_insertion_point(field_release:pg_query.AlterEventTrigStmt.tgenabled) return tgenabled_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterEventTrigStmt::set_allocated_tgenabled(std::string* tgenabled) { if (tgenabled != nullptr) { } else { } tgenabled_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tgenabled, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterEventTrigStmt.tgenabled) } // ------------------------------------------------------------------- // RefreshMatViewStmt // bool concurrent = 1 [json_name = "concurrent"]; inline void RefreshMatViewStmt::clear_concurrent() { concurrent_ = false; } inline bool RefreshMatViewStmt::_internal_concurrent() const { return concurrent_; } inline bool RefreshMatViewStmt::concurrent() const { // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.concurrent) return _internal_concurrent(); } inline void RefreshMatViewStmt::_internal_set_concurrent(bool value) { concurrent_ = value; } inline void RefreshMatViewStmt::set_concurrent(bool value) { _internal_set_concurrent(value); // @@protoc_insertion_point(field_set:pg_query.RefreshMatViewStmt.concurrent) } // bool skip_data = 2 [json_name = "skipData"]; inline void RefreshMatViewStmt::clear_skip_data() { skip_data_ = false; } inline bool RefreshMatViewStmt::_internal_skip_data() const { return skip_data_; } inline bool RefreshMatViewStmt::skip_data() const { // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.skip_data) return _internal_skip_data(); } inline void RefreshMatViewStmt::_internal_set_skip_data(bool value) { skip_data_ = value; } inline void RefreshMatViewStmt::set_skip_data(bool value) { _internal_set_skip_data(value); // @@protoc_insertion_point(field_set:pg_query.RefreshMatViewStmt.skip_data) } // .pg_query.RangeVar relation = 3 [json_name = "relation"]; inline bool RefreshMatViewStmt::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool RefreshMatViewStmt::has_relation() const { return _internal_has_relation(); } inline void RefreshMatViewStmt::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& RefreshMatViewStmt::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& RefreshMatViewStmt::relation() const { // @@protoc_insertion_point(field_get:pg_query.RefreshMatViewStmt.relation) return _internal_relation(); } inline void RefreshMatViewStmt::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RefreshMatViewStmt.relation) } inline ::pg_query::RangeVar* RefreshMatViewStmt::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* RefreshMatViewStmt::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.RefreshMatViewStmt.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* RefreshMatViewStmt::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* RefreshMatViewStmt::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.RefreshMatViewStmt.relation) return _internal_mutable_relation(); } inline void RefreshMatViewStmt::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.RefreshMatViewStmt.relation) } // ------------------------------------------------------------------- // ReplicaIdentityStmt // string identity_type = 1 [json_name = "identity_type"]; inline void ReplicaIdentityStmt::clear_identity_type() { identity_type_.ClearToEmpty(); } inline const std::string& ReplicaIdentityStmt::identity_type() const { // @@protoc_insertion_point(field_get:pg_query.ReplicaIdentityStmt.identity_type) return _internal_identity_type(); } inline void ReplicaIdentityStmt::set_identity_type(const std::string& value) { _internal_set_identity_type(value); // @@protoc_insertion_point(field_set:pg_query.ReplicaIdentityStmt.identity_type) } inline std::string* ReplicaIdentityStmt::mutable_identity_type() { // @@protoc_insertion_point(field_mutable:pg_query.ReplicaIdentityStmt.identity_type) return _internal_mutable_identity_type(); } inline const std::string& ReplicaIdentityStmt::_internal_identity_type() const { return identity_type_.Get(); } inline void ReplicaIdentityStmt::_internal_set_identity_type(const std::string& value) { identity_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ReplicaIdentityStmt::set_identity_type(std::string&& value) { identity_type_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ReplicaIdentityStmt.identity_type) } inline void ReplicaIdentityStmt::set_identity_type(const char* value) { GOOGLE_DCHECK(value != nullptr); identity_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ReplicaIdentityStmt.identity_type) } inline void ReplicaIdentityStmt::set_identity_type(const char* value, size_t size) { identity_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ReplicaIdentityStmt.identity_type) } inline std::string* ReplicaIdentityStmt::_internal_mutable_identity_type() { return identity_type_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ReplicaIdentityStmt::release_identity_type() { // @@protoc_insertion_point(field_release:pg_query.ReplicaIdentityStmt.identity_type) return identity_type_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ReplicaIdentityStmt::set_allocated_identity_type(std::string* identity_type) { if (identity_type != nullptr) { } else { } identity_type_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), identity_type, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ReplicaIdentityStmt.identity_type) } // string name = 2 [json_name = "name"]; inline void ReplicaIdentityStmt::clear_name() { name_.ClearToEmpty(); } inline const std::string& ReplicaIdentityStmt::name() const { // @@protoc_insertion_point(field_get:pg_query.ReplicaIdentityStmt.name) return _internal_name(); } inline void ReplicaIdentityStmt::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.ReplicaIdentityStmt.name) } inline std::string* ReplicaIdentityStmt::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.ReplicaIdentityStmt.name) return _internal_mutable_name(); } inline const std::string& ReplicaIdentityStmt::_internal_name() const { return name_.Get(); } inline void ReplicaIdentityStmt::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ReplicaIdentityStmt::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ReplicaIdentityStmt.name) } inline void ReplicaIdentityStmt::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ReplicaIdentityStmt.name) } inline void ReplicaIdentityStmt::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ReplicaIdentityStmt.name) } inline std::string* ReplicaIdentityStmt::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ReplicaIdentityStmt::release_name() { // @@protoc_insertion_point(field_release:pg_query.ReplicaIdentityStmt.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ReplicaIdentityStmt::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ReplicaIdentityStmt.name) } // ------------------------------------------------------------------- // AlterSystemStmt // .pg_query.VariableSetStmt setstmt = 1 [json_name = "setstmt"]; inline bool AlterSystemStmt::_internal_has_setstmt() const { return this != internal_default_instance() && setstmt_ != nullptr; } inline bool AlterSystemStmt::has_setstmt() const { return _internal_has_setstmt(); } inline void AlterSystemStmt::clear_setstmt() { if (GetArena() == nullptr && setstmt_ != nullptr) { delete setstmt_; } setstmt_ = nullptr; } inline const ::pg_query::VariableSetStmt& AlterSystemStmt::_internal_setstmt() const { const ::pg_query::VariableSetStmt* p = setstmt_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_VariableSetStmt_default_instance_); } inline const ::pg_query::VariableSetStmt& AlterSystemStmt::setstmt() const { // @@protoc_insertion_point(field_get:pg_query.AlterSystemStmt.setstmt) return _internal_setstmt(); } inline void AlterSystemStmt::unsafe_arena_set_allocated_setstmt( ::pg_query::VariableSetStmt* setstmt) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(setstmt_); } setstmt_ = setstmt; if (setstmt) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterSystemStmt.setstmt) } inline ::pg_query::VariableSetStmt* AlterSystemStmt::release_setstmt() { ::pg_query::VariableSetStmt* temp = setstmt_; setstmt_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::VariableSetStmt* AlterSystemStmt::unsafe_arena_release_setstmt() { // @@protoc_insertion_point(field_release:pg_query.AlterSystemStmt.setstmt) ::pg_query::VariableSetStmt* temp = setstmt_; setstmt_ = nullptr; return temp; } inline ::pg_query::VariableSetStmt* AlterSystemStmt::_internal_mutable_setstmt() { if (setstmt_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::VariableSetStmt>(GetArena()); setstmt_ = p; } return setstmt_; } inline ::pg_query::VariableSetStmt* AlterSystemStmt::mutable_setstmt() { // @@protoc_insertion_point(field_mutable:pg_query.AlterSystemStmt.setstmt) return _internal_mutable_setstmt(); } inline void AlterSystemStmt::set_allocated_setstmt(::pg_query::VariableSetStmt* setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete setstmt_; } if (setstmt) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(setstmt); if (message_arena != submessage_arena) { setstmt = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, setstmt, submessage_arena); } } else { } setstmt_ = setstmt; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSystemStmt.setstmt) } // ------------------------------------------------------------------- // CreatePolicyStmt // string policy_name = 1 [json_name = "policy_name"]; inline void CreatePolicyStmt::clear_policy_name() { policy_name_.ClearToEmpty(); } inline const std::string& CreatePolicyStmt::policy_name() const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.policy_name) return _internal_policy_name(); } inline void CreatePolicyStmt::set_policy_name(const std::string& value) { _internal_set_policy_name(value); // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.policy_name) } inline std::string* CreatePolicyStmt::mutable_policy_name() { // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.policy_name) return _internal_mutable_policy_name(); } inline const std::string& CreatePolicyStmt::_internal_policy_name() const { return policy_name_.Get(); } inline void CreatePolicyStmt::_internal_set_policy_name(const std::string& value) { policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreatePolicyStmt::set_policy_name(std::string&& value) { policy_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreatePolicyStmt.policy_name) } inline void CreatePolicyStmt::set_policy_name(const char* value) { GOOGLE_DCHECK(value != nullptr); policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreatePolicyStmt.policy_name) } inline void CreatePolicyStmt::set_policy_name(const char* value, size_t size) { policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreatePolicyStmt.policy_name) } inline std::string* CreatePolicyStmt::_internal_mutable_policy_name() { return policy_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreatePolicyStmt::release_policy_name() { // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.policy_name) return policy_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreatePolicyStmt::set_allocated_policy_name(std::string* policy_name) { if (policy_name != nullptr) { } else { } policy_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), policy_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.policy_name) } // .pg_query.RangeVar table = 2 [json_name = "table"]; inline bool CreatePolicyStmt::_internal_has_table() const { return this != internal_default_instance() && table_ != nullptr; } inline bool CreatePolicyStmt::has_table() const { return _internal_has_table(); } inline void CreatePolicyStmt::clear_table() { if (GetArena() == nullptr && table_ != nullptr) { delete table_; } table_ = nullptr; } inline const ::pg_query::RangeVar& CreatePolicyStmt::_internal_table() const { const ::pg_query::RangeVar* p = table_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& CreatePolicyStmt::table() const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.table) return _internal_table(); } inline void CreatePolicyStmt::unsafe_arena_set_allocated_table( ::pg_query::RangeVar* table) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(table_); } table_ = table; if (table) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.table) } inline ::pg_query::RangeVar* CreatePolicyStmt::release_table() { ::pg_query::RangeVar* temp = table_; table_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* CreatePolicyStmt::unsafe_arena_release_table() { // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.table) ::pg_query::RangeVar* temp = table_; table_ = nullptr; return temp; } inline ::pg_query::RangeVar* CreatePolicyStmt::_internal_mutable_table() { if (table_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); table_ = p; } return table_; } inline ::pg_query::RangeVar* CreatePolicyStmt::mutable_table() { // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.table) return _internal_mutable_table(); } inline void CreatePolicyStmt::set_allocated_table(::pg_query::RangeVar* table) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete table_; } if (table) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(table); if (message_arena != submessage_arena) { table = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, table, submessage_arena); } } else { } table_ = table; // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.table) } // string cmd_name = 3 [json_name = "cmd_name"]; inline void CreatePolicyStmt::clear_cmd_name() { cmd_name_.ClearToEmpty(); } inline const std::string& CreatePolicyStmt::cmd_name() const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.cmd_name) return _internal_cmd_name(); } inline void CreatePolicyStmt::set_cmd_name(const std::string& value) { _internal_set_cmd_name(value); // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.cmd_name) } inline std::string* CreatePolicyStmt::mutable_cmd_name() { // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.cmd_name) return _internal_mutable_cmd_name(); } inline const std::string& CreatePolicyStmt::_internal_cmd_name() const { return cmd_name_.Get(); } inline void CreatePolicyStmt::_internal_set_cmd_name(const std::string& value) { cmd_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreatePolicyStmt::set_cmd_name(std::string&& value) { cmd_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreatePolicyStmt.cmd_name) } inline void CreatePolicyStmt::set_cmd_name(const char* value) { GOOGLE_DCHECK(value != nullptr); cmd_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreatePolicyStmt.cmd_name) } inline void CreatePolicyStmt::set_cmd_name(const char* value, size_t size) { cmd_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreatePolicyStmt.cmd_name) } inline std::string* CreatePolicyStmt::_internal_mutable_cmd_name() { return cmd_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreatePolicyStmt::release_cmd_name() { // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.cmd_name) return cmd_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreatePolicyStmt::set_allocated_cmd_name(std::string* cmd_name) { if (cmd_name != nullptr) { } else { } cmd_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), cmd_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.cmd_name) } // bool permissive = 4 [json_name = "permissive"]; inline void CreatePolicyStmt::clear_permissive() { permissive_ = false; } inline bool CreatePolicyStmt::_internal_permissive() const { return permissive_; } inline bool CreatePolicyStmt::permissive() const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.permissive) return _internal_permissive(); } inline void CreatePolicyStmt::_internal_set_permissive(bool value) { permissive_ = value; } inline void CreatePolicyStmt::set_permissive(bool value) { _internal_set_permissive(value); // @@protoc_insertion_point(field_set:pg_query.CreatePolicyStmt.permissive) } // repeated .pg_query.Node roles = 5 [json_name = "roles"]; inline int CreatePolicyStmt::_internal_roles_size() const { return roles_.size(); } inline int CreatePolicyStmt::roles_size() const { return _internal_roles_size(); } inline void CreatePolicyStmt::clear_roles() { roles_.Clear(); } inline ::pg_query::Node* CreatePolicyStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.roles) return roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePolicyStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePolicyStmt.roles) return &roles_; } inline const ::pg_query::Node& CreatePolicyStmt::_internal_roles(int index) const { return roles_.Get(index); } inline const ::pg_query::Node& CreatePolicyStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* CreatePolicyStmt::_internal_add_roles() { return roles_.Add(); } inline ::pg_query::Node* CreatePolicyStmt::add_roles() { // @@protoc_insertion_point(field_add:pg_query.CreatePolicyStmt.roles) return _internal_add_roles(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePolicyStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.CreatePolicyStmt.roles) return roles_; } // .pg_query.Node qual = 6 [json_name = "qual"]; inline bool CreatePolicyStmt::_internal_has_qual() const { return this != internal_default_instance() && qual_ != nullptr; } inline bool CreatePolicyStmt::has_qual() const { return _internal_has_qual(); } inline void CreatePolicyStmt::clear_qual() { if (GetArena() == nullptr && qual_ != nullptr) { delete qual_; } qual_ = nullptr; } inline const ::pg_query::Node& CreatePolicyStmt::_internal_qual() const { const ::pg_query::Node* p = qual_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CreatePolicyStmt::qual() const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.qual) return _internal_qual(); } inline void CreatePolicyStmt::unsafe_arena_set_allocated_qual( ::pg_query::Node* qual) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(qual_); } qual_ = qual; if (qual) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.qual) } inline ::pg_query::Node* CreatePolicyStmt::release_qual() { ::pg_query::Node* temp = qual_; qual_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CreatePolicyStmt::unsafe_arena_release_qual() { // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.qual) ::pg_query::Node* temp = qual_; qual_ = nullptr; return temp; } inline ::pg_query::Node* CreatePolicyStmt::_internal_mutable_qual() { if (qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); qual_ = p; } return qual_; } inline ::pg_query::Node* CreatePolicyStmt::mutable_qual() { // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.qual) return _internal_mutable_qual(); } inline void CreatePolicyStmt::set_allocated_qual(::pg_query::Node* qual) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete qual_; } if (qual) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(qual); if (message_arena != submessage_arena) { qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, qual, submessage_arena); } } else { } qual_ = qual; // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.qual) } // .pg_query.Node with_check = 7 [json_name = "with_check"]; inline bool CreatePolicyStmt::_internal_has_with_check() const { return this != internal_default_instance() && with_check_ != nullptr; } inline bool CreatePolicyStmt::has_with_check() const { return _internal_has_with_check(); } inline void CreatePolicyStmt::clear_with_check() { if (GetArena() == nullptr && with_check_ != nullptr) { delete with_check_; } with_check_ = nullptr; } inline const ::pg_query::Node& CreatePolicyStmt::_internal_with_check() const { const ::pg_query::Node* p = with_check_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CreatePolicyStmt::with_check() const { // @@protoc_insertion_point(field_get:pg_query.CreatePolicyStmt.with_check) return _internal_with_check(); } inline void CreatePolicyStmt::unsafe_arena_set_allocated_with_check( ::pg_query::Node* with_check) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_check_); } with_check_ = with_check; if (with_check) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreatePolicyStmt.with_check) } inline ::pg_query::Node* CreatePolicyStmt::release_with_check() { ::pg_query::Node* temp = with_check_; with_check_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CreatePolicyStmt::unsafe_arena_release_with_check() { // @@protoc_insertion_point(field_release:pg_query.CreatePolicyStmt.with_check) ::pg_query::Node* temp = with_check_; with_check_ = nullptr; return temp; } inline ::pg_query::Node* CreatePolicyStmt::_internal_mutable_with_check() { if (with_check_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); with_check_ = p; } return with_check_; } inline ::pg_query::Node* CreatePolicyStmt::mutable_with_check() { // @@protoc_insertion_point(field_mutable:pg_query.CreatePolicyStmt.with_check) return _internal_mutable_with_check(); } inline void CreatePolicyStmt::set_allocated_with_check(::pg_query::Node* with_check) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete with_check_; } if (with_check) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_check); if (message_arena != submessage_arena) { with_check = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_check, submessage_arena); } } else { } with_check_ = with_check; // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePolicyStmt.with_check) } // ------------------------------------------------------------------- // AlterPolicyStmt // string policy_name = 1 [json_name = "policy_name"]; inline void AlterPolicyStmt::clear_policy_name() { policy_name_.ClearToEmpty(); } inline const std::string& AlterPolicyStmt::policy_name() const { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.policy_name) return _internal_policy_name(); } inline void AlterPolicyStmt::set_policy_name(const std::string& value) { _internal_set_policy_name(value); // @@protoc_insertion_point(field_set:pg_query.AlterPolicyStmt.policy_name) } inline std::string* AlterPolicyStmt::mutable_policy_name() { // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.policy_name) return _internal_mutable_policy_name(); } inline const std::string& AlterPolicyStmt::_internal_policy_name() const { return policy_name_.Get(); } inline void AlterPolicyStmt::_internal_set_policy_name(const std::string& value) { policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterPolicyStmt::set_policy_name(std::string&& value) { policy_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterPolicyStmt.policy_name) } inline void AlterPolicyStmt::set_policy_name(const char* value) { GOOGLE_DCHECK(value != nullptr); policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterPolicyStmt.policy_name) } inline void AlterPolicyStmt::set_policy_name(const char* value, size_t size) { policy_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterPolicyStmt.policy_name) } inline std::string* AlterPolicyStmt::_internal_mutable_policy_name() { return policy_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterPolicyStmt::release_policy_name() { // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.policy_name) return policy_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterPolicyStmt::set_allocated_policy_name(std::string* policy_name) { if (policy_name != nullptr) { } else { } policy_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), policy_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.policy_name) } // .pg_query.RangeVar table = 2 [json_name = "table"]; inline bool AlterPolicyStmt::_internal_has_table() const { return this != internal_default_instance() && table_ != nullptr; } inline bool AlterPolicyStmt::has_table() const { return _internal_has_table(); } inline void AlterPolicyStmt::clear_table() { if (GetArena() == nullptr && table_ != nullptr) { delete table_; } table_ = nullptr; } inline const ::pg_query::RangeVar& AlterPolicyStmt::_internal_table() const { const ::pg_query::RangeVar* p = table_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& AlterPolicyStmt::table() const { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.table) return _internal_table(); } inline void AlterPolicyStmt::unsafe_arena_set_allocated_table( ::pg_query::RangeVar* table) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(table_); } table_ = table; if (table) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.table) } inline ::pg_query::RangeVar* AlterPolicyStmt::release_table() { ::pg_query::RangeVar* temp = table_; table_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* AlterPolicyStmt::unsafe_arena_release_table() { // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.table) ::pg_query::RangeVar* temp = table_; table_ = nullptr; return temp; } inline ::pg_query::RangeVar* AlterPolicyStmt::_internal_mutable_table() { if (table_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); table_ = p; } return table_; } inline ::pg_query::RangeVar* AlterPolicyStmt::mutable_table() { // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.table) return _internal_mutable_table(); } inline void AlterPolicyStmt::set_allocated_table(::pg_query::RangeVar* table) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete table_; } if (table) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(table); if (message_arena != submessage_arena) { table = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, table, submessage_arena); } } else { } table_ = table; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.table) } // repeated .pg_query.Node roles = 3 [json_name = "roles"]; inline int AlterPolicyStmt::_internal_roles_size() const { return roles_.size(); } inline int AlterPolicyStmt::roles_size() const { return _internal_roles_size(); } inline void AlterPolicyStmt::clear_roles() { roles_.Clear(); } inline ::pg_query::Node* AlterPolicyStmt::mutable_roles(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.roles) return roles_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterPolicyStmt::mutable_roles() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPolicyStmt.roles) return &roles_; } inline const ::pg_query::Node& AlterPolicyStmt::_internal_roles(int index) const { return roles_.Get(index); } inline const ::pg_query::Node& AlterPolicyStmt::roles(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.roles) return _internal_roles(index); } inline ::pg_query::Node* AlterPolicyStmt::_internal_add_roles() { return roles_.Add(); } inline ::pg_query::Node* AlterPolicyStmt::add_roles() { // @@protoc_insertion_point(field_add:pg_query.AlterPolicyStmt.roles) return _internal_add_roles(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterPolicyStmt::roles() const { // @@protoc_insertion_point(field_list:pg_query.AlterPolicyStmt.roles) return roles_; } // .pg_query.Node qual = 4 [json_name = "qual"]; inline bool AlterPolicyStmt::_internal_has_qual() const { return this != internal_default_instance() && qual_ != nullptr; } inline bool AlterPolicyStmt::has_qual() const { return _internal_has_qual(); } inline void AlterPolicyStmt::clear_qual() { if (GetArena() == nullptr && qual_ != nullptr) { delete qual_; } qual_ = nullptr; } inline const ::pg_query::Node& AlterPolicyStmt::_internal_qual() const { const ::pg_query::Node* p = qual_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterPolicyStmt::qual() const { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.qual) return _internal_qual(); } inline void AlterPolicyStmt::unsafe_arena_set_allocated_qual( ::pg_query::Node* qual) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(qual_); } qual_ = qual; if (qual) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.qual) } inline ::pg_query::Node* AlterPolicyStmt::release_qual() { ::pg_query::Node* temp = qual_; qual_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* AlterPolicyStmt::unsafe_arena_release_qual() { // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.qual) ::pg_query::Node* temp = qual_; qual_ = nullptr; return temp; } inline ::pg_query::Node* AlterPolicyStmt::_internal_mutable_qual() { if (qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); qual_ = p; } return qual_; } inline ::pg_query::Node* AlterPolicyStmt::mutable_qual() { // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.qual) return _internal_mutable_qual(); } inline void AlterPolicyStmt::set_allocated_qual(::pg_query::Node* qual) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete qual_; } if (qual) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(qual); if (message_arena != submessage_arena) { qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, qual, submessage_arena); } } else { } qual_ = qual; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.qual) } // .pg_query.Node with_check = 5 [json_name = "with_check"]; inline bool AlterPolicyStmt::_internal_has_with_check() const { return this != internal_default_instance() && with_check_ != nullptr; } inline bool AlterPolicyStmt::has_with_check() const { return _internal_has_with_check(); } inline void AlterPolicyStmt::clear_with_check() { if (GetArena() == nullptr && with_check_ != nullptr) { delete with_check_; } with_check_ = nullptr; } inline const ::pg_query::Node& AlterPolicyStmt::_internal_with_check() const { const ::pg_query::Node* p = with_check_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& AlterPolicyStmt::with_check() const { // @@protoc_insertion_point(field_get:pg_query.AlterPolicyStmt.with_check) return _internal_with_check(); } inline void AlterPolicyStmt::unsafe_arena_set_allocated_with_check( ::pg_query::Node* with_check) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(with_check_); } with_check_ = with_check; if (with_check) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.AlterPolicyStmt.with_check) } inline ::pg_query::Node* AlterPolicyStmt::release_with_check() { ::pg_query::Node* temp = with_check_; with_check_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* AlterPolicyStmt::unsafe_arena_release_with_check() { // @@protoc_insertion_point(field_release:pg_query.AlterPolicyStmt.with_check) ::pg_query::Node* temp = with_check_; with_check_ = nullptr; return temp; } inline ::pg_query::Node* AlterPolicyStmt::_internal_mutable_with_check() { if (with_check_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); with_check_ = p; } return with_check_; } inline ::pg_query::Node* AlterPolicyStmt::mutable_with_check() { // @@protoc_insertion_point(field_mutable:pg_query.AlterPolicyStmt.with_check) return _internal_mutable_with_check(); } inline void AlterPolicyStmt::set_allocated_with_check(::pg_query::Node* with_check) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete with_check_; } if (with_check) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(with_check); if (message_arena != submessage_arena) { with_check = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, with_check, submessage_arena); } } else { } with_check_ = with_check; // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPolicyStmt.with_check) } // ------------------------------------------------------------------- // CreateTransformStmt // bool replace = 1 [json_name = "replace"]; inline void CreateTransformStmt::clear_replace() { replace_ = false; } inline bool CreateTransformStmt::_internal_replace() const { return replace_; } inline bool CreateTransformStmt::replace() const { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.replace) return _internal_replace(); } inline void CreateTransformStmt::_internal_set_replace(bool value) { replace_ = value; } inline void CreateTransformStmt::set_replace(bool value) { _internal_set_replace(value); // @@protoc_insertion_point(field_set:pg_query.CreateTransformStmt.replace) } // .pg_query.TypeName type_name = 2 [json_name = "type_name"]; inline bool CreateTransformStmt::_internal_has_type_name() const { return this != internal_default_instance() && type_name_ != nullptr; } inline bool CreateTransformStmt::has_type_name() const { return _internal_has_type_name(); } inline void CreateTransformStmt::clear_type_name() { if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; } inline const ::pg_query::TypeName& CreateTransformStmt::_internal_type_name() const { const ::pg_query::TypeName* p = type_name_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateTransformStmt::type_name() const { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.type_name) return _internal_type_name(); } inline void CreateTransformStmt::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); } type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.type_name) } inline ::pg_query::TypeName* CreateTransformStmt::release_type_name() { ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* CreateTransformStmt::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.type_name) ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateTransformStmt::_internal_mutable_type_name() { if (type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); type_name_ = p; } return type_name_; } inline ::pg_query::TypeName* CreateTransformStmt::mutable_type_name() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.type_name) return _internal_mutable_type_name(); } inline void CreateTransformStmt::set_allocated_type_name(::pg_query::TypeName* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.type_name) } // string lang = 3 [json_name = "lang"]; inline void CreateTransformStmt::clear_lang() { lang_.ClearToEmpty(); } inline const std::string& CreateTransformStmt::lang() const { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.lang) return _internal_lang(); } inline void CreateTransformStmt::set_lang(const std::string& value) { _internal_set_lang(value); // @@protoc_insertion_point(field_set:pg_query.CreateTransformStmt.lang) } inline std::string* CreateTransformStmt::mutable_lang() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.lang) return _internal_mutable_lang(); } inline const std::string& CreateTransformStmt::_internal_lang() const { return lang_.Get(); } inline void CreateTransformStmt::_internal_set_lang(const std::string& value) { lang_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateTransformStmt::set_lang(std::string&& value) { lang_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateTransformStmt.lang) } inline void CreateTransformStmt::set_lang(const char* value) { GOOGLE_DCHECK(value != nullptr); lang_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateTransformStmt.lang) } inline void CreateTransformStmt::set_lang(const char* value, size_t size) { lang_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateTransformStmt.lang) } inline std::string* CreateTransformStmt::_internal_mutable_lang() { return lang_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateTransformStmt::release_lang() { // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.lang) return lang_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateTransformStmt::set_allocated_lang(std::string* lang) { if (lang != nullptr) { } else { } lang_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), lang, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.lang) } // .pg_query.ObjectWithArgs fromsql = 4 [json_name = "fromsql"]; inline bool CreateTransformStmt::_internal_has_fromsql() const { return this != internal_default_instance() && fromsql_ != nullptr; } inline bool CreateTransformStmt::has_fromsql() const { return _internal_has_fromsql(); } inline void CreateTransformStmt::clear_fromsql() { if (GetArena() == nullptr && fromsql_ != nullptr) { delete fromsql_; } fromsql_ = nullptr; } inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::_internal_fromsql() const { const ::pg_query::ObjectWithArgs* p = fromsql_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::fromsql() const { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.fromsql) return _internal_fromsql(); } inline void CreateTransformStmt::unsafe_arena_set_allocated_fromsql( ::pg_query::ObjectWithArgs* fromsql) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(fromsql_); } fromsql_ = fromsql; if (fromsql) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.fromsql) } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::release_fromsql() { ::pg_query::ObjectWithArgs* temp = fromsql_; fromsql_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::unsafe_arena_release_fromsql() { // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.fromsql) ::pg_query::ObjectWithArgs* temp = fromsql_; fromsql_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::_internal_mutable_fromsql() { if (fromsql_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); fromsql_ = p; } return fromsql_; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::mutable_fromsql() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.fromsql) return _internal_mutable_fromsql(); } inline void CreateTransformStmt::set_allocated_fromsql(::pg_query::ObjectWithArgs* fromsql) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete fromsql_; } if (fromsql) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(fromsql); if (message_arena != submessage_arena) { fromsql = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, fromsql, submessage_arena); } } else { } fromsql_ = fromsql; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.fromsql) } // .pg_query.ObjectWithArgs tosql = 5 [json_name = "tosql"]; inline bool CreateTransformStmt::_internal_has_tosql() const { return this != internal_default_instance() && tosql_ != nullptr; } inline bool CreateTransformStmt::has_tosql() const { return _internal_has_tosql(); } inline void CreateTransformStmt::clear_tosql() { if (GetArena() == nullptr && tosql_ != nullptr) { delete tosql_; } tosql_ = nullptr; } inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::_internal_tosql() const { const ::pg_query::ObjectWithArgs* p = tosql_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& CreateTransformStmt::tosql() const { // @@protoc_insertion_point(field_get:pg_query.CreateTransformStmt.tosql) return _internal_tosql(); } inline void CreateTransformStmt::unsafe_arena_set_allocated_tosql( ::pg_query::ObjectWithArgs* tosql) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(tosql_); } tosql_ = tosql; if (tosql) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateTransformStmt.tosql) } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::release_tosql() { ::pg_query::ObjectWithArgs* temp = tosql_; tosql_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::unsafe_arena_release_tosql() { // @@protoc_insertion_point(field_release:pg_query.CreateTransformStmt.tosql) ::pg_query::ObjectWithArgs* temp = tosql_; tosql_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::_internal_mutable_tosql() { if (tosql_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); tosql_ = p; } return tosql_; } inline ::pg_query::ObjectWithArgs* CreateTransformStmt::mutable_tosql() { // @@protoc_insertion_point(field_mutable:pg_query.CreateTransformStmt.tosql) return _internal_mutable_tosql(); } inline void CreateTransformStmt::set_allocated_tosql(::pg_query::ObjectWithArgs* tosql) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete tosql_; } if (tosql) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(tosql); if (message_arena != submessage_arena) { tosql = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, tosql, submessage_arena); } } else { } tosql_ = tosql; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateTransformStmt.tosql) } // ------------------------------------------------------------------- // CreateAmStmt // string amname = 1 [json_name = "amname"]; inline void CreateAmStmt::clear_amname() { amname_.ClearToEmpty(); } inline const std::string& CreateAmStmt::amname() const { // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.amname) return _internal_amname(); } inline void CreateAmStmt::set_amname(const std::string& value) { _internal_set_amname(value); // @@protoc_insertion_point(field_set:pg_query.CreateAmStmt.amname) } inline std::string* CreateAmStmt::mutable_amname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateAmStmt.amname) return _internal_mutable_amname(); } inline const std::string& CreateAmStmt::_internal_amname() const { return amname_.Get(); } inline void CreateAmStmt::_internal_set_amname(const std::string& value) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateAmStmt::set_amname(std::string&& value) { amname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateAmStmt.amname) } inline void CreateAmStmt::set_amname(const char* value) { GOOGLE_DCHECK(value != nullptr); amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateAmStmt.amname) } inline void CreateAmStmt::set_amname(const char* value, size_t size) { amname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateAmStmt.amname) } inline std::string* CreateAmStmt::_internal_mutable_amname() { return amname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateAmStmt::release_amname() { // @@protoc_insertion_point(field_release:pg_query.CreateAmStmt.amname) return amname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateAmStmt::set_allocated_amname(std::string* amname) { if (amname != nullptr) { } else { } amname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), amname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateAmStmt.amname) } // repeated .pg_query.Node handler_name = 2 [json_name = "handler_name"]; inline int CreateAmStmt::_internal_handler_name_size() const { return handler_name_.size(); } inline int CreateAmStmt::handler_name_size() const { return _internal_handler_name_size(); } inline void CreateAmStmt::clear_handler_name() { handler_name_.Clear(); } inline ::pg_query::Node* CreateAmStmt::mutable_handler_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateAmStmt.handler_name) return handler_name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateAmStmt::mutable_handler_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateAmStmt.handler_name) return &handler_name_; } inline const ::pg_query::Node& CreateAmStmt::_internal_handler_name(int index) const { return handler_name_.Get(index); } inline const ::pg_query::Node& CreateAmStmt::handler_name(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.handler_name) return _internal_handler_name(index); } inline ::pg_query::Node* CreateAmStmt::_internal_add_handler_name() { return handler_name_.Add(); } inline ::pg_query::Node* CreateAmStmt::add_handler_name() { // @@protoc_insertion_point(field_add:pg_query.CreateAmStmt.handler_name) return _internal_add_handler_name(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateAmStmt::handler_name() const { // @@protoc_insertion_point(field_list:pg_query.CreateAmStmt.handler_name) return handler_name_; } // string amtype = 3 [json_name = "amtype"]; inline void CreateAmStmt::clear_amtype() { amtype_.ClearToEmpty(); } inline const std::string& CreateAmStmt::amtype() const { // @@protoc_insertion_point(field_get:pg_query.CreateAmStmt.amtype) return _internal_amtype(); } inline void CreateAmStmt::set_amtype(const std::string& value) { _internal_set_amtype(value); // @@protoc_insertion_point(field_set:pg_query.CreateAmStmt.amtype) } inline std::string* CreateAmStmt::mutable_amtype() { // @@protoc_insertion_point(field_mutable:pg_query.CreateAmStmt.amtype) return _internal_mutable_amtype(); } inline const std::string& CreateAmStmt::_internal_amtype() const { return amtype_.Get(); } inline void CreateAmStmt::_internal_set_amtype(const std::string& value) { amtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateAmStmt::set_amtype(std::string&& value) { amtype_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateAmStmt.amtype) } inline void CreateAmStmt::set_amtype(const char* value) { GOOGLE_DCHECK(value != nullptr); amtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateAmStmt.amtype) } inline void CreateAmStmt::set_amtype(const char* value, size_t size) { amtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateAmStmt.amtype) } inline std::string* CreateAmStmt::_internal_mutable_amtype() { return amtype_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateAmStmt::release_amtype() { // @@protoc_insertion_point(field_release:pg_query.CreateAmStmt.amtype) return amtype_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateAmStmt::set_allocated_amtype(std::string* amtype) { if (amtype != nullptr) { } else { } amtype_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), amtype, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateAmStmt.amtype) } // ------------------------------------------------------------------- // CreatePublicationStmt // string pubname = 1 [json_name = "pubname"]; inline void CreatePublicationStmt::clear_pubname() { pubname_.ClearToEmpty(); } inline const std::string& CreatePublicationStmt::pubname() const { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.pubname) return _internal_pubname(); } inline void CreatePublicationStmt::set_pubname(const std::string& value) { _internal_set_pubname(value); // @@protoc_insertion_point(field_set:pg_query.CreatePublicationStmt.pubname) } inline std::string* CreatePublicationStmt::mutable_pubname() { // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.pubname) return _internal_mutable_pubname(); } inline const std::string& CreatePublicationStmt::_internal_pubname() const { return pubname_.Get(); } inline void CreatePublicationStmt::_internal_set_pubname(const std::string& value) { pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreatePublicationStmt::set_pubname(std::string&& value) { pubname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreatePublicationStmt.pubname) } inline void CreatePublicationStmt::set_pubname(const char* value) { GOOGLE_DCHECK(value != nullptr); pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreatePublicationStmt.pubname) } inline void CreatePublicationStmt::set_pubname(const char* value, size_t size) { pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreatePublicationStmt.pubname) } inline std::string* CreatePublicationStmt::_internal_mutable_pubname() { return pubname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreatePublicationStmt::release_pubname() { // @@protoc_insertion_point(field_release:pg_query.CreatePublicationStmt.pubname) return pubname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreatePublicationStmt::set_allocated_pubname(std::string* pubname) { if (pubname != nullptr) { } else { } pubname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), pubname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreatePublicationStmt.pubname) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int CreatePublicationStmt::_internal_options_size() const { return options_.size(); } inline int CreatePublicationStmt::options_size() const { return _internal_options_size(); } inline void CreatePublicationStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreatePublicationStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePublicationStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePublicationStmt.options) return &options_; } inline const ::pg_query::Node& CreatePublicationStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreatePublicationStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreatePublicationStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreatePublicationStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreatePublicationStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePublicationStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreatePublicationStmt.options) return options_; } // repeated .pg_query.Node tables = 3 [json_name = "tables"]; inline int CreatePublicationStmt::_internal_tables_size() const { return tables_.size(); } inline int CreatePublicationStmt::tables_size() const { return _internal_tables_size(); } inline void CreatePublicationStmt::clear_tables() { tables_.Clear(); } inline ::pg_query::Node* CreatePublicationStmt::mutable_tables(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreatePublicationStmt.tables) return tables_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreatePublicationStmt::mutable_tables() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreatePublicationStmt.tables) return &tables_; } inline const ::pg_query::Node& CreatePublicationStmt::_internal_tables(int index) const { return tables_.Get(index); } inline const ::pg_query::Node& CreatePublicationStmt::tables(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.tables) return _internal_tables(index); } inline ::pg_query::Node* CreatePublicationStmt::_internal_add_tables() { return tables_.Add(); } inline ::pg_query::Node* CreatePublicationStmt::add_tables() { // @@protoc_insertion_point(field_add:pg_query.CreatePublicationStmt.tables) return _internal_add_tables(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreatePublicationStmt::tables() const { // @@protoc_insertion_point(field_list:pg_query.CreatePublicationStmt.tables) return tables_; } // bool for_all_tables = 4 [json_name = "for_all_tables"]; inline void CreatePublicationStmt::clear_for_all_tables() { for_all_tables_ = false; } inline bool CreatePublicationStmt::_internal_for_all_tables() const { return for_all_tables_; } inline bool CreatePublicationStmt::for_all_tables() const { // @@protoc_insertion_point(field_get:pg_query.CreatePublicationStmt.for_all_tables) return _internal_for_all_tables(); } inline void CreatePublicationStmt::_internal_set_for_all_tables(bool value) { for_all_tables_ = value; } inline void CreatePublicationStmt::set_for_all_tables(bool value) { _internal_set_for_all_tables(value); // @@protoc_insertion_point(field_set:pg_query.CreatePublicationStmt.for_all_tables) } // ------------------------------------------------------------------- // AlterPublicationStmt // string pubname = 1 [json_name = "pubname"]; inline void AlterPublicationStmt::clear_pubname() { pubname_.ClearToEmpty(); } inline const std::string& AlterPublicationStmt::pubname() const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.pubname) return _internal_pubname(); } inline void AlterPublicationStmt::set_pubname(const std::string& value) { _internal_set_pubname(value); // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.pubname) } inline std::string* AlterPublicationStmt::mutable_pubname() { // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.pubname) return _internal_mutable_pubname(); } inline const std::string& AlterPublicationStmt::_internal_pubname() const { return pubname_.Get(); } inline void AlterPublicationStmt::_internal_set_pubname(const std::string& value) { pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterPublicationStmt::set_pubname(std::string&& value) { pubname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterPublicationStmt.pubname) } inline void AlterPublicationStmt::set_pubname(const char* value) { GOOGLE_DCHECK(value != nullptr); pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterPublicationStmt.pubname) } inline void AlterPublicationStmt::set_pubname(const char* value, size_t size) { pubname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterPublicationStmt.pubname) } inline std::string* AlterPublicationStmt::_internal_mutable_pubname() { return pubname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterPublicationStmt::release_pubname() { // @@protoc_insertion_point(field_release:pg_query.AlterPublicationStmt.pubname) return pubname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterPublicationStmt::set_allocated_pubname(std::string* pubname) { if (pubname != nullptr) { } else { } pubname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), pubname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterPublicationStmt.pubname) } // repeated .pg_query.Node options = 2 [json_name = "options"]; inline int AlterPublicationStmt::_internal_options_size() const { return options_.size(); } inline int AlterPublicationStmt::options_size() const { return _internal_options_size(); } inline void AlterPublicationStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterPublicationStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterPublicationStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPublicationStmt.options) return &options_; } inline const ::pg_query::Node& AlterPublicationStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterPublicationStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterPublicationStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterPublicationStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterPublicationStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterPublicationStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterPublicationStmt.options) return options_; } // repeated .pg_query.Node tables = 3 [json_name = "tables"]; inline int AlterPublicationStmt::_internal_tables_size() const { return tables_.size(); } inline int AlterPublicationStmt::tables_size() const { return _internal_tables_size(); } inline void AlterPublicationStmt::clear_tables() { tables_.Clear(); } inline ::pg_query::Node* AlterPublicationStmt::mutable_tables(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterPublicationStmt.tables) return tables_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterPublicationStmt::mutable_tables() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterPublicationStmt.tables) return &tables_; } inline const ::pg_query::Node& AlterPublicationStmt::_internal_tables(int index) const { return tables_.Get(index); } inline const ::pg_query::Node& AlterPublicationStmt::tables(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.tables) return _internal_tables(index); } inline ::pg_query::Node* AlterPublicationStmt::_internal_add_tables() { return tables_.Add(); } inline ::pg_query::Node* AlterPublicationStmt::add_tables() { // @@protoc_insertion_point(field_add:pg_query.AlterPublicationStmt.tables) return _internal_add_tables(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterPublicationStmt::tables() const { // @@protoc_insertion_point(field_list:pg_query.AlterPublicationStmt.tables) return tables_; } // bool for_all_tables = 4 [json_name = "for_all_tables"]; inline void AlterPublicationStmt::clear_for_all_tables() { for_all_tables_ = false; } inline bool AlterPublicationStmt::_internal_for_all_tables() const { return for_all_tables_; } inline bool AlterPublicationStmt::for_all_tables() const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.for_all_tables) return _internal_for_all_tables(); } inline void AlterPublicationStmt::_internal_set_for_all_tables(bool value) { for_all_tables_ = value; } inline void AlterPublicationStmt::set_for_all_tables(bool value) { _internal_set_for_all_tables(value); // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.for_all_tables) } // .pg_query.DefElemAction table_action = 5 [json_name = "tableAction"]; inline void AlterPublicationStmt::clear_table_action() { table_action_ = 0; } inline ::pg_query::DefElemAction AlterPublicationStmt::_internal_table_action() const { return static_cast< ::pg_query::DefElemAction >(table_action_); } inline ::pg_query::DefElemAction AlterPublicationStmt::table_action() const { // @@protoc_insertion_point(field_get:pg_query.AlterPublicationStmt.table_action) return _internal_table_action(); } inline void AlterPublicationStmt::_internal_set_table_action(::pg_query::DefElemAction value) { table_action_ = value; } inline void AlterPublicationStmt::set_table_action(::pg_query::DefElemAction value) { _internal_set_table_action(value); // @@protoc_insertion_point(field_set:pg_query.AlterPublicationStmt.table_action) } // ------------------------------------------------------------------- // CreateSubscriptionStmt // string subname = 1 [json_name = "subname"]; inline void CreateSubscriptionStmt::clear_subname() { subname_.ClearToEmpty(); } inline const std::string& CreateSubscriptionStmt::subname() const { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.subname) return _internal_subname(); } inline void CreateSubscriptionStmt::set_subname(const std::string& value) { _internal_set_subname(value); // @@protoc_insertion_point(field_set:pg_query.CreateSubscriptionStmt.subname) } inline std::string* CreateSubscriptionStmt::mutable_subname() { // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.subname) return _internal_mutable_subname(); } inline const std::string& CreateSubscriptionStmt::_internal_subname() const { return subname_.Get(); } inline void CreateSubscriptionStmt::_internal_set_subname(const std::string& value) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateSubscriptionStmt::set_subname(std::string&& value) { subname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateSubscriptionStmt.subname) } inline void CreateSubscriptionStmt::set_subname(const char* value) { GOOGLE_DCHECK(value != nullptr); subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateSubscriptionStmt.subname) } inline void CreateSubscriptionStmt::set_subname(const char* value, size_t size) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateSubscriptionStmt.subname) } inline std::string* CreateSubscriptionStmt::_internal_mutable_subname() { return subname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateSubscriptionStmt::release_subname() { // @@protoc_insertion_point(field_release:pg_query.CreateSubscriptionStmt.subname) return subname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateSubscriptionStmt::set_allocated_subname(std::string* subname) { if (subname != nullptr) { } else { } subname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), subname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSubscriptionStmt.subname) } // string conninfo = 2 [json_name = "conninfo"]; inline void CreateSubscriptionStmt::clear_conninfo() { conninfo_.ClearToEmpty(); } inline const std::string& CreateSubscriptionStmt::conninfo() const { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.conninfo) return _internal_conninfo(); } inline void CreateSubscriptionStmt::set_conninfo(const std::string& value) { _internal_set_conninfo(value); // @@protoc_insertion_point(field_set:pg_query.CreateSubscriptionStmt.conninfo) } inline std::string* CreateSubscriptionStmt::mutable_conninfo() { // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.conninfo) return _internal_mutable_conninfo(); } inline const std::string& CreateSubscriptionStmt::_internal_conninfo() const { return conninfo_.Get(); } inline void CreateSubscriptionStmt::_internal_set_conninfo(const std::string& value) { conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateSubscriptionStmt::set_conninfo(std::string&& value) { conninfo_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateSubscriptionStmt.conninfo) } inline void CreateSubscriptionStmt::set_conninfo(const char* value) { GOOGLE_DCHECK(value != nullptr); conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateSubscriptionStmt.conninfo) } inline void CreateSubscriptionStmt::set_conninfo(const char* value, size_t size) { conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateSubscriptionStmt.conninfo) } inline std::string* CreateSubscriptionStmt::_internal_mutable_conninfo() { return conninfo_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateSubscriptionStmt::release_conninfo() { // @@protoc_insertion_point(field_release:pg_query.CreateSubscriptionStmt.conninfo) return conninfo_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateSubscriptionStmt::set_allocated_conninfo(std::string* conninfo) { if (conninfo != nullptr) { } else { } conninfo_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conninfo, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateSubscriptionStmt.conninfo) } // repeated .pg_query.Node publication = 3 [json_name = "publication"]; inline int CreateSubscriptionStmt::_internal_publication_size() const { return publication_.size(); } inline int CreateSubscriptionStmt::publication_size() const { return _internal_publication_size(); } inline void CreateSubscriptionStmt::clear_publication() { publication_.Clear(); } inline ::pg_query::Node* CreateSubscriptionStmt::mutable_publication(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.publication) return publication_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateSubscriptionStmt::mutable_publication() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSubscriptionStmt.publication) return &publication_; } inline const ::pg_query::Node& CreateSubscriptionStmt::_internal_publication(int index) const { return publication_.Get(index); } inline const ::pg_query::Node& CreateSubscriptionStmt::publication(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.publication) return _internal_publication(index); } inline ::pg_query::Node* CreateSubscriptionStmt::_internal_add_publication() { return publication_.Add(); } inline ::pg_query::Node* CreateSubscriptionStmt::add_publication() { // @@protoc_insertion_point(field_add:pg_query.CreateSubscriptionStmt.publication) return _internal_add_publication(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateSubscriptionStmt::publication() const { // @@protoc_insertion_point(field_list:pg_query.CreateSubscriptionStmt.publication) return publication_; } // repeated .pg_query.Node options = 4 [json_name = "options"]; inline int CreateSubscriptionStmt::_internal_options_size() const { return options_.size(); } inline int CreateSubscriptionStmt::options_size() const { return _internal_options_size(); } inline void CreateSubscriptionStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* CreateSubscriptionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateSubscriptionStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateSubscriptionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateSubscriptionStmt.options) return &options_; } inline const ::pg_query::Node& CreateSubscriptionStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& CreateSubscriptionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateSubscriptionStmt.options) return _internal_options(index); } inline ::pg_query::Node* CreateSubscriptionStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* CreateSubscriptionStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.CreateSubscriptionStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateSubscriptionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.CreateSubscriptionStmt.options) return options_; } // ------------------------------------------------------------------- // AlterSubscriptionStmt // .pg_query.AlterSubscriptionType kind = 1 [json_name = "kind"]; inline void AlterSubscriptionStmt::clear_kind() { kind_ = 0; } inline ::pg_query::AlterSubscriptionType AlterSubscriptionStmt::_internal_kind() const { return static_cast< ::pg_query::AlterSubscriptionType >(kind_); } inline ::pg_query::AlterSubscriptionType AlterSubscriptionStmt::kind() const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.kind) return _internal_kind(); } inline void AlterSubscriptionStmt::_internal_set_kind(::pg_query::AlterSubscriptionType value) { kind_ = value; } inline void AlterSubscriptionStmt::set_kind(::pg_query::AlterSubscriptionType value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.kind) } // string subname = 2 [json_name = "subname"]; inline void AlterSubscriptionStmt::clear_subname() { subname_.ClearToEmpty(); } inline const std::string& AlterSubscriptionStmt::subname() const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.subname) return _internal_subname(); } inline void AlterSubscriptionStmt::set_subname(const std::string& value) { _internal_set_subname(value); // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.subname) } inline std::string* AlterSubscriptionStmt::mutable_subname() { // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.subname) return _internal_mutable_subname(); } inline const std::string& AlterSubscriptionStmt::_internal_subname() const { return subname_.Get(); } inline void AlterSubscriptionStmt::_internal_set_subname(const std::string& value) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterSubscriptionStmt::set_subname(std::string&& value) { subname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterSubscriptionStmt.subname) } inline void AlterSubscriptionStmt::set_subname(const char* value) { GOOGLE_DCHECK(value != nullptr); subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterSubscriptionStmt.subname) } inline void AlterSubscriptionStmt::set_subname(const char* value, size_t size) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterSubscriptionStmt.subname) } inline std::string* AlterSubscriptionStmt::_internal_mutable_subname() { return subname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterSubscriptionStmt::release_subname() { // @@protoc_insertion_point(field_release:pg_query.AlterSubscriptionStmt.subname) return subname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterSubscriptionStmt::set_allocated_subname(std::string* subname) { if (subname != nullptr) { } else { } subname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), subname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSubscriptionStmt.subname) } // string conninfo = 3 [json_name = "conninfo"]; inline void AlterSubscriptionStmt::clear_conninfo() { conninfo_.ClearToEmpty(); } inline const std::string& AlterSubscriptionStmt::conninfo() const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.conninfo) return _internal_conninfo(); } inline void AlterSubscriptionStmt::set_conninfo(const std::string& value) { _internal_set_conninfo(value); // @@protoc_insertion_point(field_set:pg_query.AlterSubscriptionStmt.conninfo) } inline std::string* AlterSubscriptionStmt::mutable_conninfo() { // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.conninfo) return _internal_mutable_conninfo(); } inline const std::string& AlterSubscriptionStmt::_internal_conninfo() const { return conninfo_.Get(); } inline void AlterSubscriptionStmt::_internal_set_conninfo(const std::string& value) { conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AlterSubscriptionStmt::set_conninfo(std::string&& value) { conninfo_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AlterSubscriptionStmt.conninfo) } inline void AlterSubscriptionStmt::set_conninfo(const char* value) { GOOGLE_DCHECK(value != nullptr); conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AlterSubscriptionStmt.conninfo) } inline void AlterSubscriptionStmt::set_conninfo(const char* value, size_t size) { conninfo_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AlterSubscriptionStmt.conninfo) } inline std::string* AlterSubscriptionStmt::_internal_mutable_conninfo() { return conninfo_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AlterSubscriptionStmt::release_conninfo() { // @@protoc_insertion_point(field_release:pg_query.AlterSubscriptionStmt.conninfo) return conninfo_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AlterSubscriptionStmt::set_allocated_conninfo(std::string* conninfo) { if (conninfo != nullptr) { } else { } conninfo_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conninfo, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AlterSubscriptionStmt.conninfo) } // repeated .pg_query.Node publication = 4 [json_name = "publication"]; inline int AlterSubscriptionStmt::_internal_publication_size() const { return publication_.size(); } inline int AlterSubscriptionStmt::publication_size() const { return _internal_publication_size(); } inline void AlterSubscriptionStmt::clear_publication() { publication_.Clear(); } inline ::pg_query::Node* AlterSubscriptionStmt::mutable_publication(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.publication) return publication_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterSubscriptionStmt::mutable_publication() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSubscriptionStmt.publication) return &publication_; } inline const ::pg_query::Node& AlterSubscriptionStmt::_internal_publication(int index) const { return publication_.Get(index); } inline const ::pg_query::Node& AlterSubscriptionStmt::publication(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.publication) return _internal_publication(index); } inline ::pg_query::Node* AlterSubscriptionStmt::_internal_add_publication() { return publication_.Add(); } inline ::pg_query::Node* AlterSubscriptionStmt::add_publication() { // @@protoc_insertion_point(field_add:pg_query.AlterSubscriptionStmt.publication) return _internal_add_publication(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterSubscriptionStmt::publication() const { // @@protoc_insertion_point(field_list:pg_query.AlterSubscriptionStmt.publication) return publication_; } // repeated .pg_query.Node options = 5 [json_name = "options"]; inline int AlterSubscriptionStmt::_internal_options_size() const { return options_.size(); } inline int AlterSubscriptionStmt::options_size() const { return _internal_options_size(); } inline void AlterSubscriptionStmt::clear_options() { options_.Clear(); } inline ::pg_query::Node* AlterSubscriptionStmt::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterSubscriptionStmt.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterSubscriptionStmt::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterSubscriptionStmt.options) return &options_; } inline const ::pg_query::Node& AlterSubscriptionStmt::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& AlterSubscriptionStmt::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterSubscriptionStmt.options) return _internal_options(index); } inline ::pg_query::Node* AlterSubscriptionStmt::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* AlterSubscriptionStmt::add_options() { // @@protoc_insertion_point(field_add:pg_query.AlterSubscriptionStmt.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterSubscriptionStmt::options() const { // @@protoc_insertion_point(field_list:pg_query.AlterSubscriptionStmt.options) return options_; } // ------------------------------------------------------------------- // DropSubscriptionStmt // string subname = 1 [json_name = "subname"]; inline void DropSubscriptionStmt::clear_subname() { subname_.ClearToEmpty(); } inline const std::string& DropSubscriptionStmt::subname() const { // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.subname) return _internal_subname(); } inline void DropSubscriptionStmt::set_subname(const std::string& value) { _internal_set_subname(value); // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.subname) } inline std::string* DropSubscriptionStmt::mutable_subname() { // @@protoc_insertion_point(field_mutable:pg_query.DropSubscriptionStmt.subname) return _internal_mutable_subname(); } inline const std::string& DropSubscriptionStmt::_internal_subname() const { return subname_.Get(); } inline void DropSubscriptionStmt::_internal_set_subname(const std::string& value) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void DropSubscriptionStmt::set_subname(std::string&& value) { subname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.DropSubscriptionStmt.subname) } inline void DropSubscriptionStmt::set_subname(const char* value) { GOOGLE_DCHECK(value != nullptr); subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.DropSubscriptionStmt.subname) } inline void DropSubscriptionStmt::set_subname(const char* value, size_t size) { subname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.DropSubscriptionStmt.subname) } inline std::string* DropSubscriptionStmt::_internal_mutable_subname() { return subname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* DropSubscriptionStmt::release_subname() { // @@protoc_insertion_point(field_release:pg_query.DropSubscriptionStmt.subname) return subname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void DropSubscriptionStmt::set_allocated_subname(std::string* subname) { if (subname != nullptr) { } else { } subname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), subname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.DropSubscriptionStmt.subname) } // bool missing_ok = 2 [json_name = "missing_ok"]; inline void DropSubscriptionStmt::clear_missing_ok() { missing_ok_ = false; } inline bool DropSubscriptionStmt::_internal_missing_ok() const { return missing_ok_; } inline bool DropSubscriptionStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.missing_ok) return _internal_missing_ok(); } inline void DropSubscriptionStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void DropSubscriptionStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.missing_ok) } // .pg_query.DropBehavior behavior = 3 [json_name = "behavior"]; inline void DropSubscriptionStmt::clear_behavior() { behavior_ = 0; } inline ::pg_query::DropBehavior DropSubscriptionStmt::_internal_behavior() const { return static_cast< ::pg_query::DropBehavior >(behavior_); } inline ::pg_query::DropBehavior DropSubscriptionStmt::behavior() const { // @@protoc_insertion_point(field_get:pg_query.DropSubscriptionStmt.behavior) return _internal_behavior(); } inline void DropSubscriptionStmt::_internal_set_behavior(::pg_query::DropBehavior value) { behavior_ = value; } inline void DropSubscriptionStmt::set_behavior(::pg_query::DropBehavior value) { _internal_set_behavior(value); // @@protoc_insertion_point(field_set:pg_query.DropSubscriptionStmt.behavior) } // ------------------------------------------------------------------- // CreateStatsStmt // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; inline int CreateStatsStmt::_internal_defnames_size() const { return defnames_.size(); } inline int CreateStatsStmt::defnames_size() const { return _internal_defnames_size(); } inline void CreateStatsStmt::clear_defnames() { defnames_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_defnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.defnames) return defnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStatsStmt::mutable_defnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.defnames) return &defnames_; } inline const ::pg_query::Node& CreateStatsStmt::_internal_defnames(int index) const { return defnames_.Get(index); } inline const ::pg_query::Node& CreateStatsStmt::defnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.defnames) return _internal_defnames(index); } inline ::pg_query::Node* CreateStatsStmt::_internal_add_defnames() { return defnames_.Add(); } inline ::pg_query::Node* CreateStatsStmt::add_defnames() { // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.defnames) return _internal_add_defnames(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStatsStmt::defnames() const { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.defnames) return defnames_; } // repeated .pg_query.Node stat_types = 2 [json_name = "stat_types"]; inline int CreateStatsStmt::_internal_stat_types_size() const { return stat_types_.size(); } inline int CreateStatsStmt::stat_types_size() const { return _internal_stat_types_size(); } inline void CreateStatsStmt::clear_stat_types() { stat_types_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_stat_types(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.stat_types) return stat_types_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStatsStmt::mutable_stat_types() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.stat_types) return &stat_types_; } inline const ::pg_query::Node& CreateStatsStmt::_internal_stat_types(int index) const { return stat_types_.Get(index); } inline const ::pg_query::Node& CreateStatsStmt::stat_types(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.stat_types) return _internal_stat_types(index); } inline ::pg_query::Node* CreateStatsStmt::_internal_add_stat_types() { return stat_types_.Add(); } inline ::pg_query::Node* CreateStatsStmt::add_stat_types() { // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.stat_types) return _internal_add_stat_types(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStatsStmt::stat_types() const { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.stat_types) return stat_types_; } // repeated .pg_query.Node exprs = 3 [json_name = "exprs"]; inline int CreateStatsStmt::_internal_exprs_size() const { return exprs_.size(); } inline int CreateStatsStmt::exprs_size() const { return _internal_exprs_size(); } inline void CreateStatsStmt::clear_exprs() { exprs_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_exprs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.exprs) return exprs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStatsStmt::mutable_exprs() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.exprs) return &exprs_; } inline const ::pg_query::Node& CreateStatsStmt::_internal_exprs(int index) const { return exprs_.Get(index); } inline const ::pg_query::Node& CreateStatsStmt::exprs(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.exprs) return _internal_exprs(index); } inline ::pg_query::Node* CreateStatsStmt::_internal_add_exprs() { return exprs_.Add(); } inline ::pg_query::Node* CreateStatsStmt::add_exprs() { // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.exprs) return _internal_add_exprs(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStatsStmt::exprs() const { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.exprs) return exprs_; } // repeated .pg_query.Node relations = 4 [json_name = "relations"]; inline int CreateStatsStmt::_internal_relations_size() const { return relations_.size(); } inline int CreateStatsStmt::relations_size() const { return _internal_relations_size(); } inline void CreateStatsStmt::clear_relations() { relations_.Clear(); } inline ::pg_query::Node* CreateStatsStmt::mutable_relations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.relations) return relations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateStatsStmt::mutable_relations() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateStatsStmt.relations) return &relations_; } inline const ::pg_query::Node& CreateStatsStmt::_internal_relations(int index) const { return relations_.Get(index); } inline const ::pg_query::Node& CreateStatsStmt::relations(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.relations) return _internal_relations(index); } inline ::pg_query::Node* CreateStatsStmt::_internal_add_relations() { return relations_.Add(); } inline ::pg_query::Node* CreateStatsStmt::add_relations() { // @@protoc_insertion_point(field_add:pg_query.CreateStatsStmt.relations) return _internal_add_relations(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateStatsStmt::relations() const { // @@protoc_insertion_point(field_list:pg_query.CreateStatsStmt.relations) return relations_; } // string stxcomment = 5 [json_name = "stxcomment"]; inline void CreateStatsStmt::clear_stxcomment() { stxcomment_.ClearToEmpty(); } inline const std::string& CreateStatsStmt::stxcomment() const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.stxcomment) return _internal_stxcomment(); } inline void CreateStatsStmt::set_stxcomment(const std::string& value) { _internal_set_stxcomment(value); // @@protoc_insertion_point(field_set:pg_query.CreateStatsStmt.stxcomment) } inline std::string* CreateStatsStmt::mutable_stxcomment() { // @@protoc_insertion_point(field_mutable:pg_query.CreateStatsStmt.stxcomment) return _internal_mutable_stxcomment(); } inline const std::string& CreateStatsStmt::_internal_stxcomment() const { return stxcomment_.Get(); } inline void CreateStatsStmt::_internal_set_stxcomment(const std::string& value) { stxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CreateStatsStmt::set_stxcomment(std::string&& value) { stxcomment_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CreateStatsStmt.stxcomment) } inline void CreateStatsStmt::set_stxcomment(const char* value) { GOOGLE_DCHECK(value != nullptr); stxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CreateStatsStmt.stxcomment) } inline void CreateStatsStmt::set_stxcomment(const char* value, size_t size) { stxcomment_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CreateStatsStmt.stxcomment) } inline std::string* CreateStatsStmt::_internal_mutable_stxcomment() { return stxcomment_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CreateStatsStmt::release_stxcomment() { // @@protoc_insertion_point(field_release:pg_query.CreateStatsStmt.stxcomment) return stxcomment_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CreateStatsStmt::set_allocated_stxcomment(std::string* stxcomment) { if (stxcomment != nullptr) { } else { } stxcomment_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), stxcomment, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CreateStatsStmt.stxcomment) } // bool if_not_exists = 6 [json_name = "if_not_exists"]; inline void CreateStatsStmt::clear_if_not_exists() { if_not_exists_ = false; } inline bool CreateStatsStmt::_internal_if_not_exists() const { return if_not_exists_; } inline bool CreateStatsStmt::if_not_exists() const { // @@protoc_insertion_point(field_get:pg_query.CreateStatsStmt.if_not_exists) return _internal_if_not_exists(); } inline void CreateStatsStmt::_internal_set_if_not_exists(bool value) { if_not_exists_ = value; } inline void CreateStatsStmt::set_if_not_exists(bool value) { _internal_set_if_not_exists(value); // @@protoc_insertion_point(field_set:pg_query.CreateStatsStmt.if_not_exists) } // ------------------------------------------------------------------- // AlterCollationStmt // repeated .pg_query.Node collname = 1 [json_name = "collname"]; inline int AlterCollationStmt::_internal_collname_size() const { return collname_.size(); } inline int AlterCollationStmt::collname_size() const { return _internal_collname_size(); } inline void AlterCollationStmt::clear_collname() { collname_.Clear(); } inline ::pg_query::Node* AlterCollationStmt::mutable_collname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterCollationStmt.collname) return collname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterCollationStmt::mutable_collname() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterCollationStmt.collname) return &collname_; } inline const ::pg_query::Node& AlterCollationStmt::_internal_collname(int index) const { return collname_.Get(index); } inline const ::pg_query::Node& AlterCollationStmt::collname(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterCollationStmt.collname) return _internal_collname(index); } inline ::pg_query::Node* AlterCollationStmt::_internal_add_collname() { return collname_.Add(); } inline ::pg_query::Node* AlterCollationStmt::add_collname() { // @@protoc_insertion_point(field_add:pg_query.AlterCollationStmt.collname) return _internal_add_collname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterCollationStmt::collname() const { // @@protoc_insertion_point(field_list:pg_query.AlterCollationStmt.collname) return collname_; } // ------------------------------------------------------------------- // CallStmt // .pg_query.FuncCall funccall = 1 [json_name = "funccall"]; inline bool CallStmt::_internal_has_funccall() const { return this != internal_default_instance() && funccall_ != nullptr; } inline bool CallStmt::has_funccall() const { return _internal_has_funccall(); } inline void CallStmt::clear_funccall() { if (GetArena() == nullptr && funccall_ != nullptr) { delete funccall_; } funccall_ = nullptr; } inline const ::pg_query::FuncCall& CallStmt::_internal_funccall() const { const ::pg_query::FuncCall* p = funccall_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_FuncCall_default_instance_); } inline const ::pg_query::FuncCall& CallStmt::funccall() const { // @@protoc_insertion_point(field_get:pg_query.CallStmt.funccall) return _internal_funccall(); } inline void CallStmt::unsafe_arena_set_allocated_funccall( ::pg_query::FuncCall* funccall) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(funccall_); } funccall_ = funccall; if (funccall) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CallStmt.funccall) } inline ::pg_query::FuncCall* CallStmt::release_funccall() { ::pg_query::FuncCall* temp = funccall_; funccall_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::FuncCall* CallStmt::unsafe_arena_release_funccall() { // @@protoc_insertion_point(field_release:pg_query.CallStmt.funccall) ::pg_query::FuncCall* temp = funccall_; funccall_ = nullptr; return temp; } inline ::pg_query::FuncCall* CallStmt::_internal_mutable_funccall() { if (funccall_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::FuncCall>(GetArena()); funccall_ = p; } return funccall_; } inline ::pg_query::FuncCall* CallStmt::mutable_funccall() { // @@protoc_insertion_point(field_mutable:pg_query.CallStmt.funccall) return _internal_mutable_funccall(); } inline void CallStmt::set_allocated_funccall(::pg_query::FuncCall* funccall) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete funccall_; } if (funccall) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(funccall); if (message_arena != submessage_arena) { funccall = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, funccall, submessage_arena); } } else { } funccall_ = funccall; // @@protoc_insertion_point(field_set_allocated:pg_query.CallStmt.funccall) } // .pg_query.FuncExpr funcexpr = 2 [json_name = "funcexpr"]; inline bool CallStmt::_internal_has_funcexpr() const { return this != internal_default_instance() && funcexpr_ != nullptr; } inline bool CallStmt::has_funcexpr() const { return _internal_has_funcexpr(); } inline void CallStmt::clear_funcexpr() { if (GetArena() == nullptr && funcexpr_ != nullptr) { delete funcexpr_; } funcexpr_ = nullptr; } inline const ::pg_query::FuncExpr& CallStmt::_internal_funcexpr() const { const ::pg_query::FuncExpr* p = funcexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_FuncExpr_default_instance_); } inline const ::pg_query::FuncExpr& CallStmt::funcexpr() const { // @@protoc_insertion_point(field_get:pg_query.CallStmt.funcexpr) return _internal_funcexpr(); } inline void CallStmt::unsafe_arena_set_allocated_funcexpr( ::pg_query::FuncExpr* funcexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(funcexpr_); } funcexpr_ = funcexpr; if (funcexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CallStmt.funcexpr) } inline ::pg_query::FuncExpr* CallStmt::release_funcexpr() { ::pg_query::FuncExpr* temp = funcexpr_; funcexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::FuncExpr* CallStmt::unsafe_arena_release_funcexpr() { // @@protoc_insertion_point(field_release:pg_query.CallStmt.funcexpr) ::pg_query::FuncExpr* temp = funcexpr_; funcexpr_ = nullptr; return temp; } inline ::pg_query::FuncExpr* CallStmt::_internal_mutable_funcexpr() { if (funcexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::FuncExpr>(GetArena()); funcexpr_ = p; } return funcexpr_; } inline ::pg_query::FuncExpr* CallStmt::mutable_funcexpr() { // @@protoc_insertion_point(field_mutable:pg_query.CallStmt.funcexpr) return _internal_mutable_funcexpr(); } inline void CallStmt::set_allocated_funcexpr(::pg_query::FuncExpr* funcexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete funcexpr_; } if (funcexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(funcexpr); if (message_arena != submessage_arena) { funcexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, funcexpr, submessage_arena); } } else { } funcexpr_ = funcexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.CallStmt.funcexpr) } // ------------------------------------------------------------------- // AlterStatsStmt // repeated .pg_query.Node defnames = 1 [json_name = "defnames"]; inline int AlterStatsStmt::_internal_defnames_size() const { return defnames_.size(); } inline int AlterStatsStmt::defnames_size() const { return _internal_defnames_size(); } inline void AlterStatsStmt::clear_defnames() { defnames_.Clear(); } inline ::pg_query::Node* AlterStatsStmt::mutable_defnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AlterStatsStmt.defnames) return defnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AlterStatsStmt::mutable_defnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.AlterStatsStmt.defnames) return &defnames_; } inline const ::pg_query::Node& AlterStatsStmt::_internal_defnames(int index) const { return defnames_.Get(index); } inline const ::pg_query::Node& AlterStatsStmt::defnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.defnames) return _internal_defnames(index); } inline ::pg_query::Node* AlterStatsStmt::_internal_add_defnames() { return defnames_.Add(); } inline ::pg_query::Node* AlterStatsStmt::add_defnames() { // @@protoc_insertion_point(field_add:pg_query.AlterStatsStmt.defnames) return _internal_add_defnames(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AlterStatsStmt::defnames() const { // @@protoc_insertion_point(field_list:pg_query.AlterStatsStmt.defnames) return defnames_; } // int32 stxstattarget = 2 [json_name = "stxstattarget"]; inline void AlterStatsStmt::clear_stxstattarget() { stxstattarget_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 AlterStatsStmt::_internal_stxstattarget() const { return stxstattarget_; } inline ::PROTOBUF_NAMESPACE_ID::int32 AlterStatsStmt::stxstattarget() const { // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.stxstattarget) return _internal_stxstattarget(); } inline void AlterStatsStmt::_internal_set_stxstattarget(::PROTOBUF_NAMESPACE_ID::int32 value) { stxstattarget_ = value; } inline void AlterStatsStmt::set_stxstattarget(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_stxstattarget(value); // @@protoc_insertion_point(field_set:pg_query.AlterStatsStmt.stxstattarget) } // bool missing_ok = 3 [json_name = "missing_ok"]; inline void AlterStatsStmt::clear_missing_ok() { missing_ok_ = false; } inline bool AlterStatsStmt::_internal_missing_ok() const { return missing_ok_; } inline bool AlterStatsStmt::missing_ok() const { // @@protoc_insertion_point(field_get:pg_query.AlterStatsStmt.missing_ok) return _internal_missing_ok(); } inline void AlterStatsStmt::_internal_set_missing_ok(bool value) { missing_ok_ = value; } inline void AlterStatsStmt::set_missing_ok(bool value) { _internal_set_missing_ok(value); // @@protoc_insertion_point(field_set:pg_query.AlterStatsStmt.missing_ok) } // ------------------------------------------------------------------- // A_Expr // .pg_query.A_Expr_Kind kind = 1 [json_name = "kind"]; inline void A_Expr::clear_kind() { kind_ = 0; } inline ::pg_query::A_Expr_Kind A_Expr::_internal_kind() const { return static_cast< ::pg_query::A_Expr_Kind >(kind_); } inline ::pg_query::A_Expr_Kind A_Expr::kind() const { // @@protoc_insertion_point(field_get:pg_query.A_Expr.kind) return _internal_kind(); } inline void A_Expr::_internal_set_kind(::pg_query::A_Expr_Kind value) { kind_ = value; } inline void A_Expr::set_kind(::pg_query::A_Expr_Kind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.A_Expr.kind) } // repeated .pg_query.Node name = 2 [json_name = "name"]; inline int A_Expr::_internal_name_size() const { return name_.size(); } inline int A_Expr::name_size() const { return _internal_name_size(); } inline void A_Expr::clear_name() { name_.Clear(); } inline ::pg_query::Node* A_Expr::mutable_name(int index) { // @@protoc_insertion_point(field_mutable:pg_query.A_Expr.name) return name_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* A_Expr::mutable_name() { // @@protoc_insertion_point(field_mutable_list:pg_query.A_Expr.name) return &name_; } inline const ::pg_query::Node& A_Expr::_internal_name(int index) const { return name_.Get(index); } inline const ::pg_query::Node& A_Expr::name(int index) const { // @@protoc_insertion_point(field_get:pg_query.A_Expr.name) return _internal_name(index); } inline ::pg_query::Node* A_Expr::_internal_add_name() { return name_.Add(); } inline ::pg_query::Node* A_Expr::add_name() { // @@protoc_insertion_point(field_add:pg_query.A_Expr.name) return _internal_add_name(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& A_Expr::name() const { // @@protoc_insertion_point(field_list:pg_query.A_Expr.name) return name_; } // .pg_query.Node lexpr = 3 [json_name = "lexpr"]; inline bool A_Expr::_internal_has_lexpr() const { return this != internal_default_instance() && lexpr_ != nullptr; } inline bool A_Expr::has_lexpr() const { return _internal_has_lexpr(); } inline void A_Expr::clear_lexpr() { if (GetArena() == nullptr && lexpr_ != nullptr) { delete lexpr_; } lexpr_ = nullptr; } inline const ::pg_query::Node& A_Expr::_internal_lexpr() const { const ::pg_query::Node* p = lexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Expr::lexpr() const { // @@protoc_insertion_point(field_get:pg_query.A_Expr.lexpr) return _internal_lexpr(); } inline void A_Expr::unsafe_arena_set_allocated_lexpr( ::pg_query::Node* lexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(lexpr_); } lexpr_ = lexpr; if (lexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Expr.lexpr) } inline ::pg_query::Node* A_Expr::release_lexpr() { ::pg_query::Node* temp = lexpr_; lexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* A_Expr::unsafe_arena_release_lexpr() { // @@protoc_insertion_point(field_release:pg_query.A_Expr.lexpr) ::pg_query::Node* temp = lexpr_; lexpr_ = nullptr; return temp; } inline ::pg_query::Node* A_Expr::_internal_mutable_lexpr() { if (lexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); lexpr_ = p; } return lexpr_; } inline ::pg_query::Node* A_Expr::mutable_lexpr() { // @@protoc_insertion_point(field_mutable:pg_query.A_Expr.lexpr) return _internal_mutable_lexpr(); } inline void A_Expr::set_allocated_lexpr(::pg_query::Node* lexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete lexpr_; } if (lexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(lexpr); if (message_arena != submessage_arena) { lexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, lexpr, submessage_arena); } } else { } lexpr_ = lexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Expr.lexpr) } // .pg_query.Node rexpr = 4 [json_name = "rexpr"]; inline bool A_Expr::_internal_has_rexpr() const { return this != internal_default_instance() && rexpr_ != nullptr; } inline bool A_Expr::has_rexpr() const { return _internal_has_rexpr(); } inline void A_Expr::clear_rexpr() { if (GetArena() == nullptr && rexpr_ != nullptr) { delete rexpr_; } rexpr_ = nullptr; } inline const ::pg_query::Node& A_Expr::_internal_rexpr() const { const ::pg_query::Node* p = rexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Expr::rexpr() const { // @@protoc_insertion_point(field_get:pg_query.A_Expr.rexpr) return _internal_rexpr(); } inline void A_Expr::unsafe_arena_set_allocated_rexpr( ::pg_query::Node* rexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rexpr_); } rexpr_ = rexpr; if (rexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Expr.rexpr) } inline ::pg_query::Node* A_Expr::release_rexpr() { ::pg_query::Node* temp = rexpr_; rexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* A_Expr::unsafe_arena_release_rexpr() { // @@protoc_insertion_point(field_release:pg_query.A_Expr.rexpr) ::pg_query::Node* temp = rexpr_; rexpr_ = nullptr; return temp; } inline ::pg_query::Node* A_Expr::_internal_mutable_rexpr() { if (rexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); rexpr_ = p; } return rexpr_; } inline ::pg_query::Node* A_Expr::mutable_rexpr() { // @@protoc_insertion_point(field_mutable:pg_query.A_Expr.rexpr) return _internal_mutable_rexpr(); } inline void A_Expr::set_allocated_rexpr(::pg_query::Node* rexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete rexpr_; } if (rexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rexpr); if (message_arena != submessage_arena) { rexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rexpr, submessage_arena); } } else { } rexpr_ = rexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Expr.rexpr) } // int32 location = 5 [json_name = "location"]; inline void A_Expr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 A_Expr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 A_Expr::location() const { // @@protoc_insertion_point(field_get:pg_query.A_Expr.location) return _internal_location(); } inline void A_Expr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void A_Expr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.A_Expr.location) } // ------------------------------------------------------------------- // ColumnRef // repeated .pg_query.Node fields = 1 [json_name = "fields"]; inline int ColumnRef::_internal_fields_size() const { return fields_.size(); } inline int ColumnRef::fields_size() const { return _internal_fields_size(); } inline void ColumnRef::clear_fields() { fields_.Clear(); } inline ::pg_query::Node* ColumnRef::mutable_fields(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ColumnRef.fields) return fields_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ColumnRef::mutable_fields() { // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnRef.fields) return &fields_; } inline const ::pg_query::Node& ColumnRef::_internal_fields(int index) const { return fields_.Get(index); } inline const ::pg_query::Node& ColumnRef::fields(int index) const { // @@protoc_insertion_point(field_get:pg_query.ColumnRef.fields) return _internal_fields(index); } inline ::pg_query::Node* ColumnRef::_internal_add_fields() { return fields_.Add(); } inline ::pg_query::Node* ColumnRef::add_fields() { // @@protoc_insertion_point(field_add:pg_query.ColumnRef.fields) return _internal_add_fields(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ColumnRef::fields() const { // @@protoc_insertion_point(field_list:pg_query.ColumnRef.fields) return fields_; } // int32 location = 2 [json_name = "location"]; inline void ColumnRef::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnRef::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnRef::location() const { // @@protoc_insertion_point(field_get:pg_query.ColumnRef.location) return _internal_location(); } inline void ColumnRef::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void ColumnRef::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ColumnRef.location) } // ------------------------------------------------------------------- // ParamRef // int32 number = 1 [json_name = "number"]; inline void ParamRef::clear_number() { number_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ParamRef::_internal_number() const { return number_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ParamRef::number() const { // @@protoc_insertion_point(field_get:pg_query.ParamRef.number) return _internal_number(); } inline void ParamRef::_internal_set_number(::PROTOBUF_NAMESPACE_ID::int32 value) { number_ = value; } inline void ParamRef::set_number(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_number(value); // @@protoc_insertion_point(field_set:pg_query.ParamRef.number) } // int32 location = 2 [json_name = "location"]; inline void ParamRef::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ParamRef::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ParamRef::location() const { // @@protoc_insertion_point(field_get:pg_query.ParamRef.location) return _internal_location(); } inline void ParamRef::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void ParamRef::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ParamRef.location) } // ------------------------------------------------------------------- // A_Const // .pg_query.Node val = 1 [json_name = "val"]; inline bool A_Const::_internal_has_val() const { return this != internal_default_instance() && val_ != nullptr; } inline bool A_Const::has_val() const { return _internal_has_val(); } inline void A_Const::clear_val() { if (GetArena() == nullptr && val_ != nullptr) { delete val_; } val_ = nullptr; } inline const ::pg_query::Node& A_Const::_internal_val() const { const ::pg_query::Node* p = val_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Const::val() const { // @@protoc_insertion_point(field_get:pg_query.A_Const.val) return _internal_val(); } inline void A_Const::unsafe_arena_set_allocated_val( ::pg_query::Node* val) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(val_); } val_ = val; if (val) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Const.val) } inline ::pg_query::Node* A_Const::release_val() { ::pg_query::Node* temp = val_; val_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* A_Const::unsafe_arena_release_val() { // @@protoc_insertion_point(field_release:pg_query.A_Const.val) ::pg_query::Node* temp = val_; val_ = nullptr; return temp; } inline ::pg_query::Node* A_Const::_internal_mutable_val() { if (val_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); val_ = p; } return val_; } inline ::pg_query::Node* A_Const::mutable_val() { // @@protoc_insertion_point(field_mutable:pg_query.A_Const.val) return _internal_mutable_val(); } inline void A_Const::set_allocated_val(::pg_query::Node* val) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete val_; } if (val) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(val); if (message_arena != submessage_arena) { val = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, val, submessage_arena); } } else { } val_ = val; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Const.val) } // int32 location = 2 [json_name = "location"]; inline void A_Const::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 A_Const::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 A_Const::location() const { // @@protoc_insertion_point(field_get:pg_query.A_Const.location) return _internal_location(); } inline void A_Const::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void A_Const::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.A_Const.location) } // ------------------------------------------------------------------- // FuncCall // repeated .pg_query.Node funcname = 1 [json_name = "funcname"]; inline int FuncCall::_internal_funcname_size() const { return funcname_.size(); } inline int FuncCall::funcname_size() const { return _internal_funcname_size(); } inline void FuncCall::clear_funcname() { funcname_.Clear(); } inline ::pg_query::Node* FuncCall::mutable_funcname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.funcname) return funcname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FuncCall::mutable_funcname() { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.funcname) return &funcname_; } inline const ::pg_query::Node& FuncCall::_internal_funcname(int index) const { return funcname_.Get(index); } inline const ::pg_query::Node& FuncCall::funcname(int index) const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.funcname) return _internal_funcname(index); } inline ::pg_query::Node* FuncCall::_internal_add_funcname() { return funcname_.Add(); } inline ::pg_query::Node* FuncCall::add_funcname() { // @@protoc_insertion_point(field_add:pg_query.FuncCall.funcname) return _internal_add_funcname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FuncCall::funcname() const { // @@protoc_insertion_point(field_list:pg_query.FuncCall.funcname) return funcname_; } // repeated .pg_query.Node args = 2 [json_name = "args"]; inline int FuncCall::_internal_args_size() const { return args_.size(); } inline int FuncCall::args_size() const { return _internal_args_size(); } inline void FuncCall::clear_args() { args_.Clear(); } inline ::pg_query::Node* FuncCall::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FuncCall::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.args) return &args_; } inline const ::pg_query::Node& FuncCall::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& FuncCall::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.args) return _internal_args(index); } inline ::pg_query::Node* FuncCall::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* FuncCall::add_args() { // @@protoc_insertion_point(field_add:pg_query.FuncCall.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FuncCall::args() const { // @@protoc_insertion_point(field_list:pg_query.FuncCall.args) return args_; } // repeated .pg_query.Node agg_order = 3 [json_name = "agg_order"]; inline int FuncCall::_internal_agg_order_size() const { return agg_order_.size(); } inline int FuncCall::agg_order_size() const { return _internal_agg_order_size(); } inline void FuncCall::clear_agg_order() { agg_order_.Clear(); } inline ::pg_query::Node* FuncCall::mutable_agg_order(int index) { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.agg_order) return agg_order_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* FuncCall::mutable_agg_order() { // @@protoc_insertion_point(field_mutable_list:pg_query.FuncCall.agg_order) return &agg_order_; } inline const ::pg_query::Node& FuncCall::_internal_agg_order(int index) const { return agg_order_.Get(index); } inline const ::pg_query::Node& FuncCall::agg_order(int index) const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_order) return _internal_agg_order(index); } inline ::pg_query::Node* FuncCall::_internal_add_agg_order() { return agg_order_.Add(); } inline ::pg_query::Node* FuncCall::add_agg_order() { // @@protoc_insertion_point(field_add:pg_query.FuncCall.agg_order) return _internal_add_agg_order(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& FuncCall::agg_order() const { // @@protoc_insertion_point(field_list:pg_query.FuncCall.agg_order) return agg_order_; } // .pg_query.Node agg_filter = 4 [json_name = "agg_filter"]; inline bool FuncCall::_internal_has_agg_filter() const { return this != internal_default_instance() && agg_filter_ != nullptr; } inline bool FuncCall::has_agg_filter() const { return _internal_has_agg_filter(); } inline void FuncCall::clear_agg_filter() { if (GetArena() == nullptr && agg_filter_ != nullptr) { delete agg_filter_; } agg_filter_ = nullptr; } inline const ::pg_query::Node& FuncCall::_internal_agg_filter() const { const ::pg_query::Node* p = agg_filter_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FuncCall::agg_filter() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_filter) return _internal_agg_filter(); } inline void FuncCall::unsafe_arena_set_allocated_agg_filter( ::pg_query::Node* agg_filter) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(agg_filter_); } agg_filter_ = agg_filter; if (agg_filter) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncCall.agg_filter) } inline ::pg_query::Node* FuncCall::release_agg_filter() { ::pg_query::Node* temp = agg_filter_; agg_filter_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* FuncCall::unsafe_arena_release_agg_filter() { // @@protoc_insertion_point(field_release:pg_query.FuncCall.agg_filter) ::pg_query::Node* temp = agg_filter_; agg_filter_ = nullptr; return temp; } inline ::pg_query::Node* FuncCall::_internal_mutable_agg_filter() { if (agg_filter_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); agg_filter_ = p; } return agg_filter_; } inline ::pg_query::Node* FuncCall::mutable_agg_filter() { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.agg_filter) return _internal_mutable_agg_filter(); } inline void FuncCall::set_allocated_agg_filter(::pg_query::Node* agg_filter) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete agg_filter_; } if (agg_filter) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(agg_filter); if (message_arena != submessage_arena) { agg_filter = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, agg_filter, submessage_arena); } } else { } agg_filter_ = agg_filter; // @@protoc_insertion_point(field_set_allocated:pg_query.FuncCall.agg_filter) } // bool agg_within_group = 5 [json_name = "agg_within_group"]; inline void FuncCall::clear_agg_within_group() { agg_within_group_ = false; } inline bool FuncCall::_internal_agg_within_group() const { return agg_within_group_; } inline bool FuncCall::agg_within_group() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_within_group) return _internal_agg_within_group(); } inline void FuncCall::_internal_set_agg_within_group(bool value) { agg_within_group_ = value; } inline void FuncCall::set_agg_within_group(bool value) { _internal_set_agg_within_group(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_within_group) } // bool agg_star = 6 [json_name = "agg_star"]; inline void FuncCall::clear_agg_star() { agg_star_ = false; } inline bool FuncCall::_internal_agg_star() const { return agg_star_; } inline bool FuncCall::agg_star() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_star) return _internal_agg_star(); } inline void FuncCall::_internal_set_agg_star(bool value) { agg_star_ = value; } inline void FuncCall::set_agg_star(bool value) { _internal_set_agg_star(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_star) } // bool agg_distinct = 7 [json_name = "agg_distinct"]; inline void FuncCall::clear_agg_distinct() { agg_distinct_ = false; } inline bool FuncCall::_internal_agg_distinct() const { return agg_distinct_; } inline bool FuncCall::agg_distinct() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.agg_distinct) return _internal_agg_distinct(); } inline void FuncCall::_internal_set_agg_distinct(bool value) { agg_distinct_ = value; } inline void FuncCall::set_agg_distinct(bool value) { _internal_set_agg_distinct(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.agg_distinct) } // bool func_variadic = 8 [json_name = "func_variadic"]; inline void FuncCall::clear_func_variadic() { func_variadic_ = false; } inline bool FuncCall::_internal_func_variadic() const { return func_variadic_; } inline bool FuncCall::func_variadic() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.func_variadic) return _internal_func_variadic(); } inline void FuncCall::_internal_set_func_variadic(bool value) { func_variadic_ = value; } inline void FuncCall::set_func_variadic(bool value) { _internal_set_func_variadic(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.func_variadic) } // .pg_query.WindowDef over = 9 [json_name = "over"]; inline bool FuncCall::_internal_has_over() const { return this != internal_default_instance() && over_ != nullptr; } inline bool FuncCall::has_over() const { return _internal_has_over(); } inline void FuncCall::clear_over() { if (GetArena() == nullptr && over_ != nullptr) { delete over_; } over_ = nullptr; } inline const ::pg_query::WindowDef& FuncCall::_internal_over() const { const ::pg_query::WindowDef* p = over_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_WindowDef_default_instance_); } inline const ::pg_query::WindowDef& FuncCall::over() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.over) return _internal_over(); } inline void FuncCall::unsafe_arena_set_allocated_over( ::pg_query::WindowDef* over) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(over_); } over_ = over; if (over) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FuncCall.over) } inline ::pg_query::WindowDef* FuncCall::release_over() { ::pg_query::WindowDef* temp = over_; over_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::WindowDef* FuncCall::unsafe_arena_release_over() { // @@protoc_insertion_point(field_release:pg_query.FuncCall.over) ::pg_query::WindowDef* temp = over_; over_ = nullptr; return temp; } inline ::pg_query::WindowDef* FuncCall::_internal_mutable_over() { if (over_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::WindowDef>(GetArena()); over_ = p; } return over_; } inline ::pg_query::WindowDef* FuncCall::mutable_over() { // @@protoc_insertion_point(field_mutable:pg_query.FuncCall.over) return _internal_mutable_over(); } inline void FuncCall::set_allocated_over(::pg_query::WindowDef* over) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete over_; } if (over) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(over); if (message_arena != submessage_arena) { over = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, over, submessage_arena); } } else { } over_ = over; // @@protoc_insertion_point(field_set_allocated:pg_query.FuncCall.over) } // int32 location = 10 [json_name = "location"]; inline void FuncCall::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 FuncCall::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 FuncCall::location() const { // @@protoc_insertion_point(field_get:pg_query.FuncCall.location) return _internal_location(); } inline void FuncCall::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void FuncCall::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.FuncCall.location) } // ------------------------------------------------------------------- // A_Star // ------------------------------------------------------------------- // A_Indices // bool is_slice = 1 [json_name = "is_slice"]; inline void A_Indices::clear_is_slice() { is_slice_ = false; } inline bool A_Indices::_internal_is_slice() const { return is_slice_; } inline bool A_Indices::is_slice() const { // @@protoc_insertion_point(field_get:pg_query.A_Indices.is_slice) return _internal_is_slice(); } inline void A_Indices::_internal_set_is_slice(bool value) { is_slice_ = value; } inline void A_Indices::set_is_slice(bool value) { _internal_set_is_slice(value); // @@protoc_insertion_point(field_set:pg_query.A_Indices.is_slice) } // .pg_query.Node lidx = 2 [json_name = "lidx"]; inline bool A_Indices::_internal_has_lidx() const { return this != internal_default_instance() && lidx_ != nullptr; } inline bool A_Indices::has_lidx() const { return _internal_has_lidx(); } inline void A_Indices::clear_lidx() { if (GetArena() == nullptr && lidx_ != nullptr) { delete lidx_; } lidx_ = nullptr; } inline const ::pg_query::Node& A_Indices::_internal_lidx() const { const ::pg_query::Node* p = lidx_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Indices::lidx() const { // @@protoc_insertion_point(field_get:pg_query.A_Indices.lidx) return _internal_lidx(); } inline void A_Indices::unsafe_arena_set_allocated_lidx( ::pg_query::Node* lidx) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(lidx_); } lidx_ = lidx; if (lidx) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indices.lidx) } inline ::pg_query::Node* A_Indices::release_lidx() { ::pg_query::Node* temp = lidx_; lidx_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* A_Indices::unsafe_arena_release_lidx() { // @@protoc_insertion_point(field_release:pg_query.A_Indices.lidx) ::pg_query::Node* temp = lidx_; lidx_ = nullptr; return temp; } inline ::pg_query::Node* A_Indices::_internal_mutable_lidx() { if (lidx_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); lidx_ = p; } return lidx_; } inline ::pg_query::Node* A_Indices::mutable_lidx() { // @@protoc_insertion_point(field_mutable:pg_query.A_Indices.lidx) return _internal_mutable_lidx(); } inline void A_Indices::set_allocated_lidx(::pg_query::Node* lidx) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete lidx_; } if (lidx) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(lidx); if (message_arena != submessage_arena) { lidx = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, lidx, submessage_arena); } } else { } lidx_ = lidx; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Indices.lidx) } // .pg_query.Node uidx = 3 [json_name = "uidx"]; inline bool A_Indices::_internal_has_uidx() const { return this != internal_default_instance() && uidx_ != nullptr; } inline bool A_Indices::has_uidx() const { return _internal_has_uidx(); } inline void A_Indices::clear_uidx() { if (GetArena() == nullptr && uidx_ != nullptr) { delete uidx_; } uidx_ = nullptr; } inline const ::pg_query::Node& A_Indices::_internal_uidx() const { const ::pg_query::Node* p = uidx_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Indices::uidx() const { // @@protoc_insertion_point(field_get:pg_query.A_Indices.uidx) return _internal_uidx(); } inline void A_Indices::unsafe_arena_set_allocated_uidx( ::pg_query::Node* uidx) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(uidx_); } uidx_ = uidx; if (uidx) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indices.uidx) } inline ::pg_query::Node* A_Indices::release_uidx() { ::pg_query::Node* temp = uidx_; uidx_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* A_Indices::unsafe_arena_release_uidx() { // @@protoc_insertion_point(field_release:pg_query.A_Indices.uidx) ::pg_query::Node* temp = uidx_; uidx_ = nullptr; return temp; } inline ::pg_query::Node* A_Indices::_internal_mutable_uidx() { if (uidx_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); uidx_ = p; } return uidx_; } inline ::pg_query::Node* A_Indices::mutable_uidx() { // @@protoc_insertion_point(field_mutable:pg_query.A_Indices.uidx) return _internal_mutable_uidx(); } inline void A_Indices::set_allocated_uidx(::pg_query::Node* uidx) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete uidx_; } if (uidx) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(uidx); if (message_arena != submessage_arena) { uidx = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, uidx, submessage_arena); } } else { } uidx_ = uidx; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Indices.uidx) } // ------------------------------------------------------------------- // A_Indirection // .pg_query.Node arg = 1 [json_name = "arg"]; inline bool A_Indirection::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool A_Indirection::has_arg() const { return _internal_has_arg(); } inline void A_Indirection::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& A_Indirection::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& A_Indirection::arg() const { // @@protoc_insertion_point(field_get:pg_query.A_Indirection.arg) return _internal_arg(); } inline void A_Indirection::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.A_Indirection.arg) } inline ::pg_query::Node* A_Indirection::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* A_Indirection::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.A_Indirection.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* A_Indirection::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* A_Indirection::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.A_Indirection.arg) return _internal_mutable_arg(); } inline void A_Indirection::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.A_Indirection.arg) } // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; inline int A_Indirection::_internal_indirection_size() const { return indirection_.size(); } inline int A_Indirection::indirection_size() const { return _internal_indirection_size(); } inline void A_Indirection::clear_indirection() { indirection_.Clear(); } inline ::pg_query::Node* A_Indirection::mutable_indirection(int index) { // @@protoc_insertion_point(field_mutable:pg_query.A_Indirection.indirection) return indirection_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* A_Indirection::mutable_indirection() { // @@protoc_insertion_point(field_mutable_list:pg_query.A_Indirection.indirection) return &indirection_; } inline const ::pg_query::Node& A_Indirection::_internal_indirection(int index) const { return indirection_.Get(index); } inline const ::pg_query::Node& A_Indirection::indirection(int index) const { // @@protoc_insertion_point(field_get:pg_query.A_Indirection.indirection) return _internal_indirection(index); } inline ::pg_query::Node* A_Indirection::_internal_add_indirection() { return indirection_.Add(); } inline ::pg_query::Node* A_Indirection::add_indirection() { // @@protoc_insertion_point(field_add:pg_query.A_Indirection.indirection) return _internal_add_indirection(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& A_Indirection::indirection() const { // @@protoc_insertion_point(field_list:pg_query.A_Indirection.indirection) return indirection_; } // ------------------------------------------------------------------- // A_ArrayExpr // repeated .pg_query.Node elements = 1 [json_name = "elements"]; inline int A_ArrayExpr::_internal_elements_size() const { return elements_.size(); } inline int A_ArrayExpr::elements_size() const { return _internal_elements_size(); } inline void A_ArrayExpr::clear_elements() { elements_.Clear(); } inline ::pg_query::Node* A_ArrayExpr::mutable_elements(int index) { // @@protoc_insertion_point(field_mutable:pg_query.A_ArrayExpr.elements) return elements_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* A_ArrayExpr::mutable_elements() { // @@protoc_insertion_point(field_mutable_list:pg_query.A_ArrayExpr.elements) return &elements_; } inline const ::pg_query::Node& A_ArrayExpr::_internal_elements(int index) const { return elements_.Get(index); } inline const ::pg_query::Node& A_ArrayExpr::elements(int index) const { // @@protoc_insertion_point(field_get:pg_query.A_ArrayExpr.elements) return _internal_elements(index); } inline ::pg_query::Node* A_ArrayExpr::_internal_add_elements() { return elements_.Add(); } inline ::pg_query::Node* A_ArrayExpr::add_elements() { // @@protoc_insertion_point(field_add:pg_query.A_ArrayExpr.elements) return _internal_add_elements(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& A_ArrayExpr::elements() const { // @@protoc_insertion_point(field_list:pg_query.A_ArrayExpr.elements) return elements_; } // int32 location = 2 [json_name = "location"]; inline void A_ArrayExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 A_ArrayExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 A_ArrayExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.A_ArrayExpr.location) return _internal_location(); } inline void A_ArrayExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void A_ArrayExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.A_ArrayExpr.location) } // ------------------------------------------------------------------- // ResTarget // string name = 1 [json_name = "name"]; inline void ResTarget::clear_name() { name_.ClearToEmpty(); } inline const std::string& ResTarget::name() const { // @@protoc_insertion_point(field_get:pg_query.ResTarget.name) return _internal_name(); } inline void ResTarget::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.ResTarget.name) } inline std::string* ResTarget::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.ResTarget.name) return _internal_mutable_name(); } inline const std::string& ResTarget::_internal_name() const { return name_.Get(); } inline void ResTarget::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ResTarget::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ResTarget.name) } inline void ResTarget::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ResTarget.name) } inline void ResTarget::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ResTarget.name) } inline std::string* ResTarget::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ResTarget::release_name() { // @@protoc_insertion_point(field_release:pg_query.ResTarget.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ResTarget::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ResTarget.name) } // repeated .pg_query.Node indirection = 2 [json_name = "indirection"]; inline int ResTarget::_internal_indirection_size() const { return indirection_.size(); } inline int ResTarget::indirection_size() const { return _internal_indirection_size(); } inline void ResTarget::clear_indirection() { indirection_.Clear(); } inline ::pg_query::Node* ResTarget::mutable_indirection(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ResTarget.indirection) return indirection_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ResTarget::mutable_indirection() { // @@protoc_insertion_point(field_mutable_list:pg_query.ResTarget.indirection) return &indirection_; } inline const ::pg_query::Node& ResTarget::_internal_indirection(int index) const { return indirection_.Get(index); } inline const ::pg_query::Node& ResTarget::indirection(int index) const { // @@protoc_insertion_point(field_get:pg_query.ResTarget.indirection) return _internal_indirection(index); } inline ::pg_query::Node* ResTarget::_internal_add_indirection() { return indirection_.Add(); } inline ::pg_query::Node* ResTarget::add_indirection() { // @@protoc_insertion_point(field_add:pg_query.ResTarget.indirection) return _internal_add_indirection(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ResTarget::indirection() const { // @@protoc_insertion_point(field_list:pg_query.ResTarget.indirection) return indirection_; } // .pg_query.Node val = 3 [json_name = "val"]; inline bool ResTarget::_internal_has_val() const { return this != internal_default_instance() && val_ != nullptr; } inline bool ResTarget::has_val() const { return _internal_has_val(); } inline void ResTarget::clear_val() { if (GetArena() == nullptr && val_ != nullptr) { delete val_; } val_ = nullptr; } inline const ::pg_query::Node& ResTarget::_internal_val() const { const ::pg_query::Node* p = val_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ResTarget::val() const { // @@protoc_insertion_point(field_get:pg_query.ResTarget.val) return _internal_val(); } inline void ResTarget::unsafe_arena_set_allocated_val( ::pg_query::Node* val) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(val_); } val_ = val; if (val) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ResTarget.val) } inline ::pg_query::Node* ResTarget::release_val() { ::pg_query::Node* temp = val_; val_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ResTarget::unsafe_arena_release_val() { // @@protoc_insertion_point(field_release:pg_query.ResTarget.val) ::pg_query::Node* temp = val_; val_ = nullptr; return temp; } inline ::pg_query::Node* ResTarget::_internal_mutable_val() { if (val_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); val_ = p; } return val_; } inline ::pg_query::Node* ResTarget::mutable_val() { // @@protoc_insertion_point(field_mutable:pg_query.ResTarget.val) return _internal_mutable_val(); } inline void ResTarget::set_allocated_val(::pg_query::Node* val) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete val_; } if (val) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(val); if (message_arena != submessage_arena) { val = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, val, submessage_arena); } } else { } val_ = val; // @@protoc_insertion_point(field_set_allocated:pg_query.ResTarget.val) } // int32 location = 4 [json_name = "location"]; inline void ResTarget::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ResTarget::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ResTarget::location() const { // @@protoc_insertion_point(field_get:pg_query.ResTarget.location) return _internal_location(); } inline void ResTarget::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void ResTarget::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ResTarget.location) } // ------------------------------------------------------------------- // MultiAssignRef // .pg_query.Node source = 1 [json_name = "source"]; inline bool MultiAssignRef::_internal_has_source() const { return this != internal_default_instance() && source_ != nullptr; } inline bool MultiAssignRef::has_source() const { return _internal_has_source(); } inline void MultiAssignRef::clear_source() { if (GetArena() == nullptr && source_ != nullptr) { delete source_; } source_ = nullptr; } inline const ::pg_query::Node& MultiAssignRef::_internal_source() const { const ::pg_query::Node* p = source_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& MultiAssignRef::source() const { // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.source) return _internal_source(); } inline void MultiAssignRef::unsafe_arena_set_allocated_source( ::pg_query::Node* source) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(source_); } source_ = source; if (source) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.MultiAssignRef.source) } inline ::pg_query::Node* MultiAssignRef::release_source() { ::pg_query::Node* temp = source_; source_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* MultiAssignRef::unsafe_arena_release_source() { // @@protoc_insertion_point(field_release:pg_query.MultiAssignRef.source) ::pg_query::Node* temp = source_; source_ = nullptr; return temp; } inline ::pg_query::Node* MultiAssignRef::_internal_mutable_source() { if (source_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); source_ = p; } return source_; } inline ::pg_query::Node* MultiAssignRef::mutable_source() { // @@protoc_insertion_point(field_mutable:pg_query.MultiAssignRef.source) return _internal_mutable_source(); } inline void MultiAssignRef::set_allocated_source(::pg_query::Node* source) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete source_; } if (source) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(source); if (message_arena != submessage_arena) { source = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, source, submessage_arena); } } else { } source_ = source; // @@protoc_insertion_point(field_set_allocated:pg_query.MultiAssignRef.source) } // int32 colno = 2 [json_name = "colno"]; inline void MultiAssignRef::clear_colno() { colno_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 MultiAssignRef::_internal_colno() const { return colno_; } inline ::PROTOBUF_NAMESPACE_ID::int32 MultiAssignRef::colno() const { // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.colno) return _internal_colno(); } inline void MultiAssignRef::_internal_set_colno(::PROTOBUF_NAMESPACE_ID::int32 value) { colno_ = value; } inline void MultiAssignRef::set_colno(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_colno(value); // @@protoc_insertion_point(field_set:pg_query.MultiAssignRef.colno) } // int32 ncolumns = 3 [json_name = "ncolumns"]; inline void MultiAssignRef::clear_ncolumns() { ncolumns_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 MultiAssignRef::_internal_ncolumns() const { return ncolumns_; } inline ::PROTOBUF_NAMESPACE_ID::int32 MultiAssignRef::ncolumns() const { // @@protoc_insertion_point(field_get:pg_query.MultiAssignRef.ncolumns) return _internal_ncolumns(); } inline void MultiAssignRef::_internal_set_ncolumns(::PROTOBUF_NAMESPACE_ID::int32 value) { ncolumns_ = value; } inline void MultiAssignRef::set_ncolumns(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_ncolumns(value); // @@protoc_insertion_point(field_set:pg_query.MultiAssignRef.ncolumns) } // ------------------------------------------------------------------- // TypeCast // .pg_query.Node arg = 1 [json_name = "arg"]; inline bool TypeCast::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool TypeCast::has_arg() const { return _internal_has_arg(); } inline void TypeCast::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& TypeCast::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TypeCast::arg() const { // @@protoc_insertion_point(field_get:pg_query.TypeCast.arg) return _internal_arg(); } inline void TypeCast::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TypeCast.arg) } inline ::pg_query::Node* TypeCast::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* TypeCast::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.TypeCast.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* TypeCast::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* TypeCast::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.TypeCast.arg) return _internal_mutable_arg(); } inline void TypeCast::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.TypeCast.arg) } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; inline bool TypeCast::_internal_has_type_name() const { return this != internal_default_instance() && type_name_ != nullptr; } inline bool TypeCast::has_type_name() const { return _internal_has_type_name(); } inline void TypeCast::clear_type_name() { if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; } inline const ::pg_query::TypeName& TypeCast::_internal_type_name() const { const ::pg_query::TypeName* p = type_name_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& TypeCast::type_name() const { // @@protoc_insertion_point(field_get:pg_query.TypeCast.type_name) return _internal_type_name(); } inline void TypeCast::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); } type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TypeCast.type_name) } inline ::pg_query::TypeName* TypeCast::release_type_name() { ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* TypeCast::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.TypeCast.type_name) ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* TypeCast::_internal_mutable_type_name() { if (type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); type_name_ = p; } return type_name_; } inline ::pg_query::TypeName* TypeCast::mutable_type_name() { // @@protoc_insertion_point(field_mutable:pg_query.TypeCast.type_name) return _internal_mutable_type_name(); } inline void TypeCast::set_allocated_type_name(::pg_query::TypeName* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.TypeCast.type_name) } // int32 location = 3 [json_name = "location"]; inline void TypeCast::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 TypeCast::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 TypeCast::location() const { // @@protoc_insertion_point(field_get:pg_query.TypeCast.location) return _internal_location(); } inline void TypeCast::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void TypeCast::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.TypeCast.location) } // ------------------------------------------------------------------- // CollateClause // .pg_query.Node arg = 1 [json_name = "arg"]; inline bool CollateClause::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool CollateClause::has_arg() const { return _internal_has_arg(); } inline void CollateClause::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& CollateClause::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CollateClause::arg() const { // @@protoc_insertion_point(field_get:pg_query.CollateClause.arg) return _internal_arg(); } inline void CollateClause::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CollateClause.arg) } inline ::pg_query::Node* CollateClause::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CollateClause::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.CollateClause.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* CollateClause::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* CollateClause::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.CollateClause.arg) return _internal_mutable_arg(); } inline void CollateClause::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.CollateClause.arg) } // repeated .pg_query.Node collname = 2 [json_name = "collname"]; inline int CollateClause::_internal_collname_size() const { return collname_.size(); } inline int CollateClause::collname_size() const { return _internal_collname_size(); } inline void CollateClause::clear_collname() { collname_.Clear(); } inline ::pg_query::Node* CollateClause::mutable_collname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CollateClause.collname) return collname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CollateClause::mutable_collname() { // @@protoc_insertion_point(field_mutable_list:pg_query.CollateClause.collname) return &collname_; } inline const ::pg_query::Node& CollateClause::_internal_collname(int index) const { return collname_.Get(index); } inline const ::pg_query::Node& CollateClause::collname(int index) const { // @@protoc_insertion_point(field_get:pg_query.CollateClause.collname) return _internal_collname(index); } inline ::pg_query::Node* CollateClause::_internal_add_collname() { return collname_.Add(); } inline ::pg_query::Node* CollateClause::add_collname() { // @@protoc_insertion_point(field_add:pg_query.CollateClause.collname) return _internal_add_collname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CollateClause::collname() const { // @@protoc_insertion_point(field_list:pg_query.CollateClause.collname) return collname_; } // int32 location = 3 [json_name = "location"]; inline void CollateClause::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CollateClause::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CollateClause::location() const { // @@protoc_insertion_point(field_get:pg_query.CollateClause.location) return _internal_location(); } inline void CollateClause::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void CollateClause::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CollateClause.location) } // ------------------------------------------------------------------- // SortBy // .pg_query.Node node = 1 [json_name = "node"]; inline bool SortBy::_internal_has_node() const { return this != internal_default_instance() && node_ != nullptr; } inline bool SortBy::has_node() const { return _internal_has_node(); } inline void SortBy::clear_node() { if (GetArena() == nullptr && node_ != nullptr) { delete node_; } node_ = nullptr; } inline const ::pg_query::Node& SortBy::_internal_node() const { const ::pg_query::Node* p = node_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& SortBy::node() const { // @@protoc_insertion_point(field_get:pg_query.SortBy.node) return _internal_node(); } inline void SortBy::unsafe_arena_set_allocated_node( ::pg_query::Node* node) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(node_); } node_ = node; if (node) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.SortBy.node) } inline ::pg_query::Node* SortBy::release_node() { ::pg_query::Node* temp = node_; node_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* SortBy::unsafe_arena_release_node() { // @@protoc_insertion_point(field_release:pg_query.SortBy.node) ::pg_query::Node* temp = node_; node_ = nullptr; return temp; } inline ::pg_query::Node* SortBy::_internal_mutable_node() { if (node_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); node_ = p; } return node_; } inline ::pg_query::Node* SortBy::mutable_node() { // @@protoc_insertion_point(field_mutable:pg_query.SortBy.node) return _internal_mutable_node(); } inline void SortBy::set_allocated_node(::pg_query::Node* node) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete node_; } if (node) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(node); if (message_arena != submessage_arena) { node = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, node, submessage_arena); } } else { } node_ = node; // @@protoc_insertion_point(field_set_allocated:pg_query.SortBy.node) } // .pg_query.SortByDir sortby_dir = 2 [json_name = "sortby_dir"]; inline void SortBy::clear_sortby_dir() { sortby_dir_ = 0; } inline ::pg_query::SortByDir SortBy::_internal_sortby_dir() const { return static_cast< ::pg_query::SortByDir >(sortby_dir_); } inline ::pg_query::SortByDir SortBy::sortby_dir() const { // @@protoc_insertion_point(field_get:pg_query.SortBy.sortby_dir) return _internal_sortby_dir(); } inline void SortBy::_internal_set_sortby_dir(::pg_query::SortByDir value) { sortby_dir_ = value; } inline void SortBy::set_sortby_dir(::pg_query::SortByDir value) { _internal_set_sortby_dir(value); // @@protoc_insertion_point(field_set:pg_query.SortBy.sortby_dir) } // .pg_query.SortByNulls sortby_nulls = 3 [json_name = "sortby_nulls"]; inline void SortBy::clear_sortby_nulls() { sortby_nulls_ = 0; } inline ::pg_query::SortByNulls SortBy::_internal_sortby_nulls() const { return static_cast< ::pg_query::SortByNulls >(sortby_nulls_); } inline ::pg_query::SortByNulls SortBy::sortby_nulls() const { // @@protoc_insertion_point(field_get:pg_query.SortBy.sortby_nulls) return _internal_sortby_nulls(); } inline void SortBy::_internal_set_sortby_nulls(::pg_query::SortByNulls value) { sortby_nulls_ = value; } inline void SortBy::set_sortby_nulls(::pg_query::SortByNulls value) { _internal_set_sortby_nulls(value); // @@protoc_insertion_point(field_set:pg_query.SortBy.sortby_nulls) } // repeated .pg_query.Node use_op = 4 [json_name = "useOp"]; inline int SortBy::_internal_use_op_size() const { return use_op_.size(); } inline int SortBy::use_op_size() const { return _internal_use_op_size(); } inline void SortBy::clear_use_op() { use_op_.Clear(); } inline ::pg_query::Node* SortBy::mutable_use_op(int index) { // @@protoc_insertion_point(field_mutable:pg_query.SortBy.use_op) return use_op_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* SortBy::mutable_use_op() { // @@protoc_insertion_point(field_mutable_list:pg_query.SortBy.use_op) return &use_op_; } inline const ::pg_query::Node& SortBy::_internal_use_op(int index) const { return use_op_.Get(index); } inline const ::pg_query::Node& SortBy::use_op(int index) const { // @@protoc_insertion_point(field_get:pg_query.SortBy.use_op) return _internal_use_op(index); } inline ::pg_query::Node* SortBy::_internal_add_use_op() { return use_op_.Add(); } inline ::pg_query::Node* SortBy::add_use_op() { // @@protoc_insertion_point(field_add:pg_query.SortBy.use_op) return _internal_add_use_op(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& SortBy::use_op() const { // @@protoc_insertion_point(field_list:pg_query.SortBy.use_op) return use_op_; } // int32 location = 5 [json_name = "location"]; inline void SortBy::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 SortBy::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 SortBy::location() const { // @@protoc_insertion_point(field_get:pg_query.SortBy.location) return _internal_location(); } inline void SortBy::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void SortBy::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.SortBy.location) } // ------------------------------------------------------------------- // WindowDef // string name = 1 [json_name = "name"]; inline void WindowDef::clear_name() { name_.ClearToEmpty(); } inline const std::string& WindowDef::name() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.name) return _internal_name(); } inline void WindowDef::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.WindowDef.name) } inline std::string* WindowDef::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.name) return _internal_mutable_name(); } inline const std::string& WindowDef::_internal_name() const { return name_.Get(); } inline void WindowDef::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void WindowDef::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.WindowDef.name) } inline void WindowDef::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.WindowDef.name) } inline void WindowDef::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.WindowDef.name) } inline std::string* WindowDef::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* WindowDef::release_name() { // @@protoc_insertion_point(field_release:pg_query.WindowDef.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void WindowDef::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.name) } // string refname = 2 [json_name = "refname"]; inline void WindowDef::clear_refname() { refname_.ClearToEmpty(); } inline const std::string& WindowDef::refname() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.refname) return _internal_refname(); } inline void WindowDef::set_refname(const std::string& value) { _internal_set_refname(value); // @@protoc_insertion_point(field_set:pg_query.WindowDef.refname) } inline std::string* WindowDef::mutable_refname() { // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.refname) return _internal_mutable_refname(); } inline const std::string& WindowDef::_internal_refname() const { return refname_.Get(); } inline void WindowDef::_internal_set_refname(const std::string& value) { refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void WindowDef::set_refname(std::string&& value) { refname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.WindowDef.refname) } inline void WindowDef::set_refname(const char* value) { GOOGLE_DCHECK(value != nullptr); refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.WindowDef.refname) } inline void WindowDef::set_refname(const char* value, size_t size) { refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.WindowDef.refname) } inline std::string* WindowDef::_internal_mutable_refname() { return refname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* WindowDef::release_refname() { // @@protoc_insertion_point(field_release:pg_query.WindowDef.refname) return refname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void WindowDef::set_allocated_refname(std::string* refname) { if (refname != nullptr) { } else { } refname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), refname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.refname) } // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; inline int WindowDef::_internal_partition_clause_size() const { return partition_clause_.size(); } inline int WindowDef::partition_clause_size() const { return _internal_partition_clause_size(); } inline void WindowDef::clear_partition_clause() { partition_clause_.Clear(); } inline ::pg_query::Node* WindowDef::mutable_partition_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.partition_clause) return partition_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowDef::mutable_partition_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowDef.partition_clause) return &partition_clause_; } inline const ::pg_query::Node& WindowDef::_internal_partition_clause(int index) const { return partition_clause_.Get(index); } inline const ::pg_query::Node& WindowDef::partition_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.partition_clause) return _internal_partition_clause(index); } inline ::pg_query::Node* WindowDef::_internal_add_partition_clause() { return partition_clause_.Add(); } inline ::pg_query::Node* WindowDef::add_partition_clause() { // @@protoc_insertion_point(field_add:pg_query.WindowDef.partition_clause) return _internal_add_partition_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowDef::partition_clause() const { // @@protoc_insertion_point(field_list:pg_query.WindowDef.partition_clause) return partition_clause_; } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; inline int WindowDef::_internal_order_clause_size() const { return order_clause_.size(); } inline int WindowDef::order_clause_size() const { return _internal_order_clause_size(); } inline void WindowDef::clear_order_clause() { order_clause_.Clear(); } inline ::pg_query::Node* WindowDef::mutable_order_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.order_clause) return order_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowDef::mutable_order_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowDef.order_clause) return &order_clause_; } inline const ::pg_query::Node& WindowDef::_internal_order_clause(int index) const { return order_clause_.Get(index); } inline const ::pg_query::Node& WindowDef::order_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.order_clause) return _internal_order_clause(index); } inline ::pg_query::Node* WindowDef::_internal_add_order_clause() { return order_clause_.Add(); } inline ::pg_query::Node* WindowDef::add_order_clause() { // @@protoc_insertion_point(field_add:pg_query.WindowDef.order_clause) return _internal_add_order_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowDef::order_clause() const { // @@protoc_insertion_point(field_list:pg_query.WindowDef.order_clause) return order_clause_; } // int32 frame_options = 5 [json_name = "frameOptions"]; inline void WindowDef::clear_frame_options() { frame_options_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 WindowDef::_internal_frame_options() const { return frame_options_; } inline ::PROTOBUF_NAMESPACE_ID::int32 WindowDef::frame_options() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.frame_options) return _internal_frame_options(); } inline void WindowDef::_internal_set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value) { frame_options_ = value; } inline void WindowDef::set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_frame_options(value); // @@protoc_insertion_point(field_set:pg_query.WindowDef.frame_options) } // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; inline bool WindowDef::_internal_has_start_offset() const { return this != internal_default_instance() && start_offset_ != nullptr; } inline bool WindowDef::has_start_offset() const { return _internal_has_start_offset(); } inline void WindowDef::clear_start_offset() { if (GetArena() == nullptr && start_offset_ != nullptr) { delete start_offset_; } start_offset_ = nullptr; } inline const ::pg_query::Node& WindowDef::_internal_start_offset() const { const ::pg_query::Node* p = start_offset_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowDef::start_offset() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.start_offset) return _internal_start_offset(); } inline void WindowDef::unsafe_arena_set_allocated_start_offset( ::pg_query::Node* start_offset) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(start_offset_); } start_offset_ = start_offset; if (start_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowDef.start_offset) } inline ::pg_query::Node* WindowDef::release_start_offset() { ::pg_query::Node* temp = start_offset_; start_offset_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* WindowDef::unsafe_arena_release_start_offset() { // @@protoc_insertion_point(field_release:pg_query.WindowDef.start_offset) ::pg_query::Node* temp = start_offset_; start_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowDef::_internal_mutable_start_offset() { if (start_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); start_offset_ = p; } return start_offset_; } inline ::pg_query::Node* WindowDef::mutable_start_offset() { // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.start_offset) return _internal_mutable_start_offset(); } inline void WindowDef::set_allocated_start_offset(::pg_query::Node* start_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete start_offset_; } if (start_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(start_offset); if (message_arena != submessage_arena) { start_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, start_offset, submessage_arena); } } else { } start_offset_ = start_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.start_offset) } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; inline bool WindowDef::_internal_has_end_offset() const { return this != internal_default_instance() && end_offset_ != nullptr; } inline bool WindowDef::has_end_offset() const { return _internal_has_end_offset(); } inline void WindowDef::clear_end_offset() { if (GetArena() == nullptr && end_offset_ != nullptr) { delete end_offset_; } end_offset_ = nullptr; } inline const ::pg_query::Node& WindowDef::_internal_end_offset() const { const ::pg_query::Node* p = end_offset_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowDef::end_offset() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.end_offset) return _internal_end_offset(); } inline void WindowDef::unsafe_arena_set_allocated_end_offset( ::pg_query::Node* end_offset) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(end_offset_); } end_offset_ = end_offset; if (end_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowDef.end_offset) } inline ::pg_query::Node* WindowDef::release_end_offset() { ::pg_query::Node* temp = end_offset_; end_offset_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* WindowDef::unsafe_arena_release_end_offset() { // @@protoc_insertion_point(field_release:pg_query.WindowDef.end_offset) ::pg_query::Node* temp = end_offset_; end_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowDef::_internal_mutable_end_offset() { if (end_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); end_offset_ = p; } return end_offset_; } inline ::pg_query::Node* WindowDef::mutable_end_offset() { // @@protoc_insertion_point(field_mutable:pg_query.WindowDef.end_offset) return _internal_mutable_end_offset(); } inline void WindowDef::set_allocated_end_offset(::pg_query::Node* end_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete end_offset_; } if (end_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(end_offset); if (message_arena != submessage_arena) { end_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, end_offset, submessage_arena); } } else { } end_offset_ = end_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowDef.end_offset) } // int32 location = 8 [json_name = "location"]; inline void WindowDef::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 WindowDef::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 WindowDef::location() const { // @@protoc_insertion_point(field_get:pg_query.WindowDef.location) return _internal_location(); } inline void WindowDef::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void WindowDef::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.WindowDef.location) } // ------------------------------------------------------------------- // RangeSubselect // bool lateral = 1 [json_name = "lateral"]; inline void RangeSubselect::clear_lateral() { lateral_ = false; } inline bool RangeSubselect::_internal_lateral() const { return lateral_; } inline bool RangeSubselect::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.lateral) return _internal_lateral(); } inline void RangeSubselect::_internal_set_lateral(bool value) { lateral_ = value; } inline void RangeSubselect::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeSubselect.lateral) } // .pg_query.Node subquery = 2 [json_name = "subquery"]; inline bool RangeSubselect::_internal_has_subquery() const { return this != internal_default_instance() && subquery_ != nullptr; } inline bool RangeSubselect::has_subquery() const { return _internal_has_subquery(); } inline void RangeSubselect::clear_subquery() { if (GetArena() == nullptr && subquery_ != nullptr) { delete subquery_; } subquery_ = nullptr; } inline const ::pg_query::Node& RangeSubselect::_internal_subquery() const { const ::pg_query::Node* p = subquery_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeSubselect::subquery() const { // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.subquery) return _internal_subquery(); } inline void RangeSubselect::unsafe_arena_set_allocated_subquery( ::pg_query::Node* subquery) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(subquery_); } subquery_ = subquery; if (subquery) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeSubselect.subquery) } inline ::pg_query::Node* RangeSubselect::release_subquery() { ::pg_query::Node* temp = subquery_; subquery_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RangeSubselect::unsafe_arena_release_subquery() { // @@protoc_insertion_point(field_release:pg_query.RangeSubselect.subquery) ::pg_query::Node* temp = subquery_; subquery_ = nullptr; return temp; } inline ::pg_query::Node* RangeSubselect::_internal_mutable_subquery() { if (subquery_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); subquery_ = p; } return subquery_; } inline ::pg_query::Node* RangeSubselect::mutable_subquery() { // @@protoc_insertion_point(field_mutable:pg_query.RangeSubselect.subquery) return _internal_mutable_subquery(); } inline void RangeSubselect::set_allocated_subquery(::pg_query::Node* subquery) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete subquery_; } if (subquery) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(subquery); if (message_arena != submessage_arena) { subquery = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, subquery, submessage_arena); } } else { } subquery_ = subquery; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeSubselect.subquery) } // .pg_query.Alias alias = 3 [json_name = "alias"]; inline bool RangeSubselect::_internal_has_alias() const { return this != internal_default_instance() && alias_ != nullptr; } inline bool RangeSubselect::has_alias() const { return _internal_has_alias(); } inline void RangeSubselect::clear_alias() { if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; } inline const ::pg_query::Alias& RangeSubselect::_internal_alias() const { const ::pg_query::Alias* p = alias_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeSubselect::alias() const { // @@protoc_insertion_point(field_get:pg_query.RangeSubselect.alias) return _internal_alias(); } inline void RangeSubselect::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); } alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeSubselect.alias) } inline ::pg_query::Alias* RangeSubselect::release_alias() { ::pg_query::Alias* temp = alias_; alias_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Alias* RangeSubselect::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeSubselect.alias) ::pg_query::Alias* temp = alias_; alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeSubselect::_internal_mutable_alias() { if (alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); alias_ = p; } return alias_; } inline ::pg_query::Alias* RangeSubselect::mutable_alias() { // @@protoc_insertion_point(field_mutable:pg_query.RangeSubselect.alias) return _internal_mutable_alias(); } inline void RangeSubselect::set_allocated_alias(::pg_query::Alias* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeSubselect.alias) } // ------------------------------------------------------------------- // RangeFunction // bool lateral = 1 [json_name = "lateral"]; inline void RangeFunction::clear_lateral() { lateral_ = false; } inline bool RangeFunction::_internal_lateral() const { return lateral_; } inline bool RangeFunction::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.lateral) return _internal_lateral(); } inline void RangeFunction::_internal_set_lateral(bool value) { lateral_ = value; } inline void RangeFunction::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeFunction.lateral) } // bool ordinality = 2 [json_name = "ordinality"]; inline void RangeFunction::clear_ordinality() { ordinality_ = false; } inline bool RangeFunction::_internal_ordinality() const { return ordinality_; } inline bool RangeFunction::ordinality() const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.ordinality) return _internal_ordinality(); } inline void RangeFunction::_internal_set_ordinality(bool value) { ordinality_ = value; } inline void RangeFunction::set_ordinality(bool value) { _internal_set_ordinality(value); // @@protoc_insertion_point(field_set:pg_query.RangeFunction.ordinality) } // bool is_rowsfrom = 3 [json_name = "is_rowsfrom"]; inline void RangeFunction::clear_is_rowsfrom() { is_rowsfrom_ = false; } inline bool RangeFunction::_internal_is_rowsfrom() const { return is_rowsfrom_; } inline bool RangeFunction::is_rowsfrom() const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.is_rowsfrom) return _internal_is_rowsfrom(); } inline void RangeFunction::_internal_set_is_rowsfrom(bool value) { is_rowsfrom_ = value; } inline void RangeFunction::set_is_rowsfrom(bool value) { _internal_set_is_rowsfrom(value); // @@protoc_insertion_point(field_set:pg_query.RangeFunction.is_rowsfrom) } // repeated .pg_query.Node functions = 4 [json_name = "functions"]; inline int RangeFunction::_internal_functions_size() const { return functions_.size(); } inline int RangeFunction::functions_size() const { return _internal_functions_size(); } inline void RangeFunction::clear_functions() { functions_.Clear(); } inline ::pg_query::Node* RangeFunction::mutable_functions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.functions) return functions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeFunction::mutable_functions() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeFunction.functions) return &functions_; } inline const ::pg_query::Node& RangeFunction::_internal_functions(int index) const { return functions_.Get(index); } inline const ::pg_query::Node& RangeFunction::functions(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.functions) return _internal_functions(index); } inline ::pg_query::Node* RangeFunction::_internal_add_functions() { return functions_.Add(); } inline ::pg_query::Node* RangeFunction::add_functions() { // @@protoc_insertion_point(field_add:pg_query.RangeFunction.functions) return _internal_add_functions(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeFunction::functions() const { // @@protoc_insertion_point(field_list:pg_query.RangeFunction.functions) return functions_; } // .pg_query.Alias alias = 5 [json_name = "alias"]; inline bool RangeFunction::_internal_has_alias() const { return this != internal_default_instance() && alias_ != nullptr; } inline bool RangeFunction::has_alias() const { return _internal_has_alias(); } inline void RangeFunction::clear_alias() { if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; } inline const ::pg_query::Alias& RangeFunction::_internal_alias() const { const ::pg_query::Alias* p = alias_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeFunction::alias() const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.alias) return _internal_alias(); } inline void RangeFunction::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); } alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeFunction.alias) } inline ::pg_query::Alias* RangeFunction::release_alias() { ::pg_query::Alias* temp = alias_; alias_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Alias* RangeFunction::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeFunction.alias) ::pg_query::Alias* temp = alias_; alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeFunction::_internal_mutable_alias() { if (alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); alias_ = p; } return alias_; } inline ::pg_query::Alias* RangeFunction::mutable_alias() { // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.alias) return _internal_mutable_alias(); } inline void RangeFunction::set_allocated_alias(::pg_query::Alias* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeFunction.alias) } // repeated .pg_query.Node coldeflist = 6 [json_name = "coldeflist"]; inline int RangeFunction::_internal_coldeflist_size() const { return coldeflist_.size(); } inline int RangeFunction::coldeflist_size() const { return _internal_coldeflist_size(); } inline void RangeFunction::clear_coldeflist() { coldeflist_.Clear(); } inline ::pg_query::Node* RangeFunction::mutable_coldeflist(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeFunction.coldeflist) return coldeflist_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeFunction::mutable_coldeflist() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeFunction.coldeflist) return &coldeflist_; } inline const ::pg_query::Node& RangeFunction::_internal_coldeflist(int index) const { return coldeflist_.Get(index); } inline const ::pg_query::Node& RangeFunction::coldeflist(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeFunction.coldeflist) return _internal_coldeflist(index); } inline ::pg_query::Node* RangeFunction::_internal_add_coldeflist() { return coldeflist_.Add(); } inline ::pg_query::Node* RangeFunction::add_coldeflist() { // @@protoc_insertion_point(field_add:pg_query.RangeFunction.coldeflist) return _internal_add_coldeflist(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeFunction::coldeflist() const { // @@protoc_insertion_point(field_list:pg_query.RangeFunction.coldeflist) return coldeflist_; } // ------------------------------------------------------------------- // RangeTableSample // .pg_query.Node relation = 1 [json_name = "relation"]; inline bool RangeTableSample::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool RangeTableSample::has_relation() const { return _internal_has_relation(); } inline void RangeTableSample::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::Node& RangeTableSample::_internal_relation() const { const ::pg_query::Node* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableSample::relation() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.relation) return _internal_relation(); } inline void RangeTableSample::unsafe_arena_set_allocated_relation( ::pg_query::Node* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableSample.relation) } inline ::pg_query::Node* RangeTableSample::release_relation() { ::pg_query::Node* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RangeTableSample::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.RangeTableSample.relation) ::pg_query::Node* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableSample::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::Node* RangeTableSample::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.relation) return _internal_mutable_relation(); } inline void RangeTableSample::set_allocated_relation(::pg_query::Node* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableSample.relation) } // repeated .pg_query.Node method = 2 [json_name = "method"]; inline int RangeTableSample::_internal_method_size() const { return method_.size(); } inline int RangeTableSample::method_size() const { return _internal_method_size(); } inline void RangeTableSample::clear_method() { method_.Clear(); } inline ::pg_query::Node* RangeTableSample::mutable_method(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.method) return method_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTableSample::mutable_method() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableSample.method) return &method_; } inline const ::pg_query::Node& RangeTableSample::_internal_method(int index) const { return method_.Get(index); } inline const ::pg_query::Node& RangeTableSample::method(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.method) return _internal_method(index); } inline ::pg_query::Node* RangeTableSample::_internal_add_method() { return method_.Add(); } inline ::pg_query::Node* RangeTableSample::add_method() { // @@protoc_insertion_point(field_add:pg_query.RangeTableSample.method) return _internal_add_method(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTableSample::method() const { // @@protoc_insertion_point(field_list:pg_query.RangeTableSample.method) return method_; } // repeated .pg_query.Node args = 3 [json_name = "args"]; inline int RangeTableSample::_internal_args_size() const { return args_.size(); } inline int RangeTableSample::args_size() const { return _internal_args_size(); } inline void RangeTableSample::clear_args() { args_.Clear(); } inline ::pg_query::Node* RangeTableSample::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTableSample::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableSample.args) return &args_; } inline const ::pg_query::Node& RangeTableSample::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& RangeTableSample::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.args) return _internal_args(index); } inline ::pg_query::Node* RangeTableSample::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* RangeTableSample::add_args() { // @@protoc_insertion_point(field_add:pg_query.RangeTableSample.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTableSample::args() const { // @@protoc_insertion_point(field_list:pg_query.RangeTableSample.args) return args_; } // .pg_query.Node repeatable = 4 [json_name = "repeatable"]; inline bool RangeTableSample::_internal_has_repeatable() const { return this != internal_default_instance() && repeatable_ != nullptr; } inline bool RangeTableSample::has_repeatable() const { return _internal_has_repeatable(); } inline void RangeTableSample::clear_repeatable() { if (GetArena() == nullptr && repeatable_ != nullptr) { delete repeatable_; } repeatable_ = nullptr; } inline const ::pg_query::Node& RangeTableSample::_internal_repeatable() const { const ::pg_query::Node* p = repeatable_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableSample::repeatable() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.repeatable) return _internal_repeatable(); } inline void RangeTableSample::unsafe_arena_set_allocated_repeatable( ::pg_query::Node* repeatable) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(repeatable_); } repeatable_ = repeatable; if (repeatable) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableSample.repeatable) } inline ::pg_query::Node* RangeTableSample::release_repeatable() { ::pg_query::Node* temp = repeatable_; repeatable_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RangeTableSample::unsafe_arena_release_repeatable() { // @@protoc_insertion_point(field_release:pg_query.RangeTableSample.repeatable) ::pg_query::Node* temp = repeatable_; repeatable_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableSample::_internal_mutable_repeatable() { if (repeatable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); repeatable_ = p; } return repeatable_; } inline ::pg_query::Node* RangeTableSample::mutable_repeatable() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableSample.repeatable) return _internal_mutable_repeatable(); } inline void RangeTableSample::set_allocated_repeatable(::pg_query::Node* repeatable) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete repeatable_; } if (repeatable) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(repeatable); if (message_arena != submessage_arena) { repeatable = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, repeatable, submessage_arena); } } else { } repeatable_ = repeatable; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableSample.repeatable) } // int32 location = 5 [json_name = "location"]; inline void RangeTableSample::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableSample::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableSample::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableSample.location) return _internal_location(); } inline void RangeTableSample::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void RangeTableSample::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableSample.location) } // ------------------------------------------------------------------- // RangeTableFunc // bool lateral = 1 [json_name = "lateral"]; inline void RangeTableFunc::clear_lateral() { lateral_ = false; } inline bool RangeTableFunc::_internal_lateral() const { return lateral_; } inline bool RangeTableFunc::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.lateral) return _internal_lateral(); } inline void RangeTableFunc::_internal_set_lateral(bool value) { lateral_ = value; } inline void RangeTableFunc::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFunc.lateral) } // .pg_query.Node docexpr = 2 [json_name = "docexpr"]; inline bool RangeTableFunc::_internal_has_docexpr() const { return this != internal_default_instance() && docexpr_ != nullptr; } inline bool RangeTableFunc::has_docexpr() const { return _internal_has_docexpr(); } inline void RangeTableFunc::clear_docexpr() { if (GetArena() == nullptr && docexpr_ != nullptr) { delete docexpr_; } docexpr_ = nullptr; } inline const ::pg_query::Node& RangeTableFunc::_internal_docexpr() const { const ::pg_query::Node* p = docexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableFunc::docexpr() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.docexpr) return _internal_docexpr(); } inline void RangeTableFunc::unsafe_arena_set_allocated_docexpr( ::pg_query::Node* docexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(docexpr_); } docexpr_ = docexpr; if (docexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.docexpr) } inline ::pg_query::Node* RangeTableFunc::release_docexpr() { ::pg_query::Node* temp = docexpr_; docexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RangeTableFunc::unsafe_arena_release_docexpr() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.docexpr) ::pg_query::Node* temp = docexpr_; docexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFunc::_internal_mutable_docexpr() { if (docexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); docexpr_ = p; } return docexpr_; } inline ::pg_query::Node* RangeTableFunc::mutable_docexpr() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.docexpr) return _internal_mutable_docexpr(); } inline void RangeTableFunc::set_allocated_docexpr(::pg_query::Node* docexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete docexpr_; } if (docexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(docexpr); if (message_arena != submessage_arena) { docexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, docexpr, submessage_arena); } } else { } docexpr_ = docexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.docexpr) } // .pg_query.Node rowexpr = 3 [json_name = "rowexpr"]; inline bool RangeTableFunc::_internal_has_rowexpr() const { return this != internal_default_instance() && rowexpr_ != nullptr; } inline bool RangeTableFunc::has_rowexpr() const { return _internal_has_rowexpr(); } inline void RangeTableFunc::clear_rowexpr() { if (GetArena() == nullptr && rowexpr_ != nullptr) { delete rowexpr_; } rowexpr_ = nullptr; } inline const ::pg_query::Node& RangeTableFunc::_internal_rowexpr() const { const ::pg_query::Node* p = rowexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableFunc::rowexpr() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.rowexpr) return _internal_rowexpr(); } inline void RangeTableFunc::unsafe_arena_set_allocated_rowexpr( ::pg_query::Node* rowexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(rowexpr_); } rowexpr_ = rowexpr; if (rowexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.rowexpr) } inline ::pg_query::Node* RangeTableFunc::release_rowexpr() { ::pg_query::Node* temp = rowexpr_; rowexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RangeTableFunc::unsafe_arena_release_rowexpr() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.rowexpr) ::pg_query::Node* temp = rowexpr_; rowexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFunc::_internal_mutable_rowexpr() { if (rowexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); rowexpr_ = p; } return rowexpr_; } inline ::pg_query::Node* RangeTableFunc::mutable_rowexpr() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.rowexpr) return _internal_mutable_rowexpr(); } inline void RangeTableFunc::set_allocated_rowexpr(::pg_query::Node* rowexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete rowexpr_; } if (rowexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(rowexpr); if (message_arena != submessage_arena) { rowexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, rowexpr, submessage_arena); } } else { } rowexpr_ = rowexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.rowexpr) } // repeated .pg_query.Node namespaces = 4 [json_name = "namespaces"]; inline int RangeTableFunc::_internal_namespaces_size() const { return namespaces_.size(); } inline int RangeTableFunc::namespaces_size() const { return _internal_namespaces_size(); } inline void RangeTableFunc::clear_namespaces() { namespaces_.Clear(); } inline ::pg_query::Node* RangeTableFunc::mutable_namespaces(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.namespaces) return namespaces_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTableFunc::mutable_namespaces() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableFunc.namespaces) return &namespaces_; } inline const ::pg_query::Node& RangeTableFunc::_internal_namespaces(int index) const { return namespaces_.Get(index); } inline const ::pg_query::Node& RangeTableFunc::namespaces(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.namespaces) return _internal_namespaces(index); } inline ::pg_query::Node* RangeTableFunc::_internal_add_namespaces() { return namespaces_.Add(); } inline ::pg_query::Node* RangeTableFunc::add_namespaces() { // @@protoc_insertion_point(field_add:pg_query.RangeTableFunc.namespaces) return _internal_add_namespaces(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTableFunc::namespaces() const { // @@protoc_insertion_point(field_list:pg_query.RangeTableFunc.namespaces) return namespaces_; } // repeated .pg_query.Node columns = 5 [json_name = "columns"]; inline int RangeTableFunc::_internal_columns_size() const { return columns_.size(); } inline int RangeTableFunc::columns_size() const { return _internal_columns_size(); } inline void RangeTableFunc::clear_columns() { columns_.Clear(); } inline ::pg_query::Node* RangeTableFunc::mutable_columns(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.columns) return columns_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTableFunc::mutable_columns() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTableFunc.columns) return &columns_; } inline const ::pg_query::Node& RangeTableFunc::_internal_columns(int index) const { return columns_.Get(index); } inline const ::pg_query::Node& RangeTableFunc::columns(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.columns) return _internal_columns(index); } inline ::pg_query::Node* RangeTableFunc::_internal_add_columns() { return columns_.Add(); } inline ::pg_query::Node* RangeTableFunc::add_columns() { // @@protoc_insertion_point(field_add:pg_query.RangeTableFunc.columns) return _internal_add_columns(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTableFunc::columns() const { // @@protoc_insertion_point(field_list:pg_query.RangeTableFunc.columns) return columns_; } // .pg_query.Alias alias = 6 [json_name = "alias"]; inline bool RangeTableFunc::_internal_has_alias() const { return this != internal_default_instance() && alias_ != nullptr; } inline bool RangeTableFunc::has_alias() const { return _internal_has_alias(); } inline void RangeTableFunc::clear_alias() { if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; } inline const ::pg_query::Alias& RangeTableFunc::_internal_alias() const { const ::pg_query::Alias* p = alias_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeTableFunc::alias() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.alias) return _internal_alias(); } inline void RangeTableFunc::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); } alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFunc.alias) } inline ::pg_query::Alias* RangeTableFunc::release_alias() { ::pg_query::Alias* temp = alias_; alias_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Alias* RangeTableFunc::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFunc.alias) ::pg_query::Alias* temp = alias_; alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeTableFunc::_internal_mutable_alias() { if (alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); alias_ = p; } return alias_; } inline ::pg_query::Alias* RangeTableFunc::mutable_alias() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFunc.alias) return _internal_mutable_alias(); } inline void RangeTableFunc::set_allocated_alias(::pg_query::Alias* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFunc.alias) } // int32 location = 7 [json_name = "location"]; inline void RangeTableFunc::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableFunc::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableFunc::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFunc.location) return _internal_location(); } inline void RangeTableFunc::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void RangeTableFunc::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFunc.location) } // ------------------------------------------------------------------- // RangeTableFuncCol // string colname = 1 [json_name = "colname"]; inline void RangeTableFuncCol::clear_colname() { colname_.ClearToEmpty(); } inline const std::string& RangeTableFuncCol::colname() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.colname) return _internal_colname(); } inline void RangeTableFuncCol::set_colname(const std::string& value) { _internal_set_colname(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.colname) } inline std::string* RangeTableFuncCol::mutable_colname() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.colname) return _internal_mutable_colname(); } inline const std::string& RangeTableFuncCol::_internal_colname() const { return colname_.Get(); } inline void RangeTableFuncCol::_internal_set_colname(const std::string& value) { colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RangeTableFuncCol::set_colname(std::string&& value) { colname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeTableFuncCol.colname) } inline void RangeTableFuncCol::set_colname(const char* value) { GOOGLE_DCHECK(value != nullptr); colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RangeTableFuncCol.colname) } inline void RangeTableFuncCol::set_colname(const char* value, size_t size) { colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RangeTableFuncCol.colname) } inline std::string* RangeTableFuncCol::_internal_mutable_colname() { return colname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RangeTableFuncCol::release_colname() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.colname) return colname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RangeTableFuncCol::set_allocated_colname(std::string* colname) { if (colname != nullptr) { } else { } colname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), colname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.colname) } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; inline bool RangeTableFuncCol::_internal_has_type_name() const { return this != internal_default_instance() && type_name_ != nullptr; } inline bool RangeTableFuncCol::has_type_name() const { return _internal_has_type_name(); } inline void RangeTableFuncCol::clear_type_name() { if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; } inline const ::pg_query::TypeName& RangeTableFuncCol::_internal_type_name() const { const ::pg_query::TypeName* p = type_name_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& RangeTableFuncCol::type_name() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.type_name) return _internal_type_name(); } inline void RangeTableFuncCol::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); } type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.type_name) } inline ::pg_query::TypeName* RangeTableFuncCol::release_type_name() { ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* RangeTableFuncCol::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.type_name) ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* RangeTableFuncCol::_internal_mutable_type_name() { if (type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); type_name_ = p; } return type_name_; } inline ::pg_query::TypeName* RangeTableFuncCol::mutable_type_name() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.type_name) return _internal_mutable_type_name(); } inline void RangeTableFuncCol::set_allocated_type_name(::pg_query::TypeName* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.type_name) } // bool for_ordinality = 3 [json_name = "for_ordinality"]; inline void RangeTableFuncCol::clear_for_ordinality() { for_ordinality_ = false; } inline bool RangeTableFuncCol::_internal_for_ordinality() const { return for_ordinality_; } inline bool RangeTableFuncCol::for_ordinality() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.for_ordinality) return _internal_for_ordinality(); } inline void RangeTableFuncCol::_internal_set_for_ordinality(bool value) { for_ordinality_ = value; } inline void RangeTableFuncCol::set_for_ordinality(bool value) { _internal_set_for_ordinality(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.for_ordinality) } // bool is_not_null = 4 [json_name = "is_not_null"]; inline void RangeTableFuncCol::clear_is_not_null() { is_not_null_ = false; } inline bool RangeTableFuncCol::_internal_is_not_null() const { return is_not_null_; } inline bool RangeTableFuncCol::is_not_null() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.is_not_null) return _internal_is_not_null(); } inline void RangeTableFuncCol::_internal_set_is_not_null(bool value) { is_not_null_ = value; } inline void RangeTableFuncCol::set_is_not_null(bool value) { _internal_set_is_not_null(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.is_not_null) } // .pg_query.Node colexpr = 5 [json_name = "colexpr"]; inline bool RangeTableFuncCol::_internal_has_colexpr() const { return this != internal_default_instance() && colexpr_ != nullptr; } inline bool RangeTableFuncCol::has_colexpr() const { return _internal_has_colexpr(); } inline void RangeTableFuncCol::clear_colexpr() { if (GetArena() == nullptr && colexpr_ != nullptr) { delete colexpr_; } colexpr_ = nullptr; } inline const ::pg_query::Node& RangeTableFuncCol::_internal_colexpr() const { const ::pg_query::Node* p = colexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableFuncCol::colexpr() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.colexpr) return _internal_colexpr(); } inline void RangeTableFuncCol::unsafe_arena_set_allocated_colexpr( ::pg_query::Node* colexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(colexpr_); } colexpr_ = colexpr; if (colexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.colexpr) } inline ::pg_query::Node* RangeTableFuncCol::release_colexpr() { ::pg_query::Node* temp = colexpr_; colexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RangeTableFuncCol::unsafe_arena_release_colexpr() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.colexpr) ::pg_query::Node* temp = colexpr_; colexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFuncCol::_internal_mutable_colexpr() { if (colexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); colexpr_ = p; } return colexpr_; } inline ::pg_query::Node* RangeTableFuncCol::mutable_colexpr() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.colexpr) return _internal_mutable_colexpr(); } inline void RangeTableFuncCol::set_allocated_colexpr(::pg_query::Node* colexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete colexpr_; } if (colexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(colexpr); if (message_arena != submessage_arena) { colexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, colexpr, submessage_arena); } } else { } colexpr_ = colexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.colexpr) } // .pg_query.Node coldefexpr = 6 [json_name = "coldefexpr"]; inline bool RangeTableFuncCol::_internal_has_coldefexpr() const { return this != internal_default_instance() && coldefexpr_ != nullptr; } inline bool RangeTableFuncCol::has_coldefexpr() const { return _internal_has_coldefexpr(); } inline void RangeTableFuncCol::clear_coldefexpr() { if (GetArena() == nullptr && coldefexpr_ != nullptr) { delete coldefexpr_; } coldefexpr_ = nullptr; } inline const ::pg_query::Node& RangeTableFuncCol::_internal_coldefexpr() const { const ::pg_query::Node* p = coldefexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTableFuncCol::coldefexpr() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.coldefexpr) return _internal_coldefexpr(); } inline void RangeTableFuncCol::unsafe_arena_set_allocated_coldefexpr( ::pg_query::Node* coldefexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(coldefexpr_); } coldefexpr_ = coldefexpr; if (coldefexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTableFuncCol.coldefexpr) } inline ::pg_query::Node* RangeTableFuncCol::release_coldefexpr() { ::pg_query::Node* temp = coldefexpr_; coldefexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RangeTableFuncCol::unsafe_arena_release_coldefexpr() { // @@protoc_insertion_point(field_release:pg_query.RangeTableFuncCol.coldefexpr) ::pg_query::Node* temp = coldefexpr_; coldefexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTableFuncCol::_internal_mutable_coldefexpr() { if (coldefexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); coldefexpr_ = p; } return coldefexpr_; } inline ::pg_query::Node* RangeTableFuncCol::mutable_coldefexpr() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTableFuncCol.coldefexpr) return _internal_mutable_coldefexpr(); } inline void RangeTableFuncCol::set_allocated_coldefexpr(::pg_query::Node* coldefexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete coldefexpr_; } if (coldefexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(coldefexpr); if (message_arena != submessage_arena) { coldefexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, coldefexpr, submessage_arena); } } else { } coldefexpr_ = coldefexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTableFuncCol.coldefexpr) } // int32 location = 7 [json_name = "location"]; inline void RangeTableFuncCol::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableFuncCol::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTableFuncCol::location() const { // @@protoc_insertion_point(field_get:pg_query.RangeTableFuncCol.location) return _internal_location(); } inline void RangeTableFuncCol::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void RangeTableFuncCol::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RangeTableFuncCol.location) } // ------------------------------------------------------------------- // TypeName // repeated .pg_query.Node names = 1 [json_name = "names"]; inline int TypeName::_internal_names_size() const { return names_.size(); } inline int TypeName::names_size() const { return _internal_names_size(); } inline void TypeName::clear_names() { names_.Clear(); } inline ::pg_query::Node* TypeName::mutable_names(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TypeName.names) return names_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TypeName::mutable_names() { // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.names) return &names_; } inline const ::pg_query::Node& TypeName::_internal_names(int index) const { return names_.Get(index); } inline const ::pg_query::Node& TypeName::names(int index) const { // @@protoc_insertion_point(field_get:pg_query.TypeName.names) return _internal_names(index); } inline ::pg_query::Node* TypeName::_internal_add_names() { return names_.Add(); } inline ::pg_query::Node* TypeName::add_names() { // @@protoc_insertion_point(field_add:pg_query.TypeName.names) return _internal_add_names(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TypeName::names() const { // @@protoc_insertion_point(field_list:pg_query.TypeName.names) return names_; } // uint32 type_oid = 2 [json_name = "typeOid"]; inline void TypeName::clear_type_oid() { type_oid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 TypeName::_internal_type_oid() const { return type_oid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 TypeName::type_oid() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.type_oid) return _internal_type_oid(); } inline void TypeName::_internal_set_type_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { type_oid_ = value; } inline void TypeName::set_type_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_type_oid(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.type_oid) } // bool setof = 3 [json_name = "setof"]; inline void TypeName::clear_setof() { setof_ = false; } inline bool TypeName::_internal_setof() const { return setof_; } inline bool TypeName::setof() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.setof) return _internal_setof(); } inline void TypeName::_internal_set_setof(bool value) { setof_ = value; } inline void TypeName::set_setof(bool value) { _internal_set_setof(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.setof) } // bool pct_type = 4 [json_name = "pct_type"]; inline void TypeName::clear_pct_type() { pct_type_ = false; } inline bool TypeName::_internal_pct_type() const { return pct_type_; } inline bool TypeName::pct_type() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.pct_type) return _internal_pct_type(); } inline void TypeName::_internal_set_pct_type(bool value) { pct_type_ = value; } inline void TypeName::set_pct_type(bool value) { _internal_set_pct_type(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.pct_type) } // repeated .pg_query.Node typmods = 5 [json_name = "typmods"]; inline int TypeName::_internal_typmods_size() const { return typmods_.size(); } inline int TypeName::typmods_size() const { return _internal_typmods_size(); } inline void TypeName::clear_typmods() { typmods_.Clear(); } inline ::pg_query::Node* TypeName::mutable_typmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TypeName.typmods) return typmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TypeName::mutable_typmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.typmods) return &typmods_; } inline const ::pg_query::Node& TypeName::_internal_typmods(int index) const { return typmods_.Get(index); } inline const ::pg_query::Node& TypeName::typmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.TypeName.typmods) return _internal_typmods(index); } inline ::pg_query::Node* TypeName::_internal_add_typmods() { return typmods_.Add(); } inline ::pg_query::Node* TypeName::add_typmods() { // @@protoc_insertion_point(field_add:pg_query.TypeName.typmods) return _internal_add_typmods(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TypeName::typmods() const { // @@protoc_insertion_point(field_list:pg_query.TypeName.typmods) return typmods_; } // int32 typemod = 6 [json_name = "typemod"]; inline void TypeName::clear_typemod() { typemod_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 TypeName::_internal_typemod() const { return typemod_; } inline ::PROTOBUF_NAMESPACE_ID::int32 TypeName::typemod() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.typemod) return _internal_typemod(); } inline void TypeName::_internal_set_typemod(::PROTOBUF_NAMESPACE_ID::int32 value) { typemod_ = value; } inline void TypeName::set_typemod(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_typemod(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.typemod) } // repeated .pg_query.Node array_bounds = 7 [json_name = "arrayBounds"]; inline int TypeName::_internal_array_bounds_size() const { return array_bounds_.size(); } inline int TypeName::array_bounds_size() const { return _internal_array_bounds_size(); } inline void TypeName::clear_array_bounds() { array_bounds_.Clear(); } inline ::pg_query::Node* TypeName::mutable_array_bounds(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TypeName.array_bounds) return array_bounds_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TypeName::mutable_array_bounds() { // @@protoc_insertion_point(field_mutable_list:pg_query.TypeName.array_bounds) return &array_bounds_; } inline const ::pg_query::Node& TypeName::_internal_array_bounds(int index) const { return array_bounds_.Get(index); } inline const ::pg_query::Node& TypeName::array_bounds(int index) const { // @@protoc_insertion_point(field_get:pg_query.TypeName.array_bounds) return _internal_array_bounds(index); } inline ::pg_query::Node* TypeName::_internal_add_array_bounds() { return array_bounds_.Add(); } inline ::pg_query::Node* TypeName::add_array_bounds() { // @@protoc_insertion_point(field_add:pg_query.TypeName.array_bounds) return _internal_add_array_bounds(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TypeName::array_bounds() const { // @@protoc_insertion_point(field_list:pg_query.TypeName.array_bounds) return array_bounds_; } // int32 location = 8 [json_name = "location"]; inline void TypeName::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 TypeName::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 TypeName::location() const { // @@protoc_insertion_point(field_get:pg_query.TypeName.location) return _internal_location(); } inline void TypeName::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void TypeName::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.TypeName.location) } // ------------------------------------------------------------------- // ColumnDef // string colname = 1 [json_name = "colname"]; inline void ColumnDef::clear_colname() { colname_.ClearToEmpty(); } inline const std::string& ColumnDef::colname() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.colname) return _internal_colname(); } inline void ColumnDef::set_colname(const std::string& value) { _internal_set_colname(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.colname) } inline std::string* ColumnDef::mutable_colname() { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.colname) return _internal_mutable_colname(); } inline const std::string& ColumnDef::_internal_colname() const { return colname_.Get(); } inline void ColumnDef::_internal_set_colname(const std::string& value) { colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ColumnDef::set_colname(std::string&& value) { colname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ColumnDef.colname) } inline void ColumnDef::set_colname(const char* value) { GOOGLE_DCHECK(value != nullptr); colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ColumnDef.colname) } inline void ColumnDef::set_colname(const char* value, size_t size) { colname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ColumnDef.colname) } inline std::string* ColumnDef::_internal_mutable_colname() { return colname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ColumnDef::release_colname() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.colname) return colname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ColumnDef::set_allocated_colname(std::string* colname) { if (colname != nullptr) { } else { } colname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), colname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.colname) } // .pg_query.TypeName type_name = 2 [json_name = "typeName"]; inline bool ColumnDef::_internal_has_type_name() const { return this != internal_default_instance() && type_name_ != nullptr; } inline bool ColumnDef::has_type_name() const { return _internal_has_type_name(); } inline void ColumnDef::clear_type_name() { if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; } inline const ::pg_query::TypeName& ColumnDef::_internal_type_name() const { const ::pg_query::TypeName* p = type_name_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& ColumnDef::type_name() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.type_name) return _internal_type_name(); } inline void ColumnDef::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); } type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.type_name) } inline ::pg_query::TypeName* ColumnDef::release_type_name() { ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* ColumnDef::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.type_name) ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* ColumnDef::_internal_mutable_type_name() { if (type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); type_name_ = p; } return type_name_; } inline ::pg_query::TypeName* ColumnDef::mutable_type_name() { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.type_name) return _internal_mutable_type_name(); } inline void ColumnDef::set_allocated_type_name(::pg_query::TypeName* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.type_name) } // int32 inhcount = 3 [json_name = "inhcount"]; inline void ColumnDef::clear_inhcount() { inhcount_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnDef::_internal_inhcount() const { return inhcount_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnDef::inhcount() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.inhcount) return _internal_inhcount(); } inline void ColumnDef::_internal_set_inhcount(::PROTOBUF_NAMESPACE_ID::int32 value) { inhcount_ = value; } inline void ColumnDef::set_inhcount(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_inhcount(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.inhcount) } // bool is_local = 4 [json_name = "is_local"]; inline void ColumnDef::clear_is_local() { is_local_ = false; } inline bool ColumnDef::_internal_is_local() const { return is_local_; } inline bool ColumnDef::is_local() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.is_local) return _internal_is_local(); } inline void ColumnDef::_internal_set_is_local(bool value) { is_local_ = value; } inline void ColumnDef::set_is_local(bool value) { _internal_set_is_local(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_local) } // bool is_not_null = 5 [json_name = "is_not_null"]; inline void ColumnDef::clear_is_not_null() { is_not_null_ = false; } inline bool ColumnDef::_internal_is_not_null() const { return is_not_null_; } inline bool ColumnDef::is_not_null() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.is_not_null) return _internal_is_not_null(); } inline void ColumnDef::_internal_set_is_not_null(bool value) { is_not_null_ = value; } inline void ColumnDef::set_is_not_null(bool value) { _internal_set_is_not_null(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_not_null) } // bool is_from_type = 6 [json_name = "is_from_type"]; inline void ColumnDef::clear_is_from_type() { is_from_type_ = false; } inline bool ColumnDef::_internal_is_from_type() const { return is_from_type_; } inline bool ColumnDef::is_from_type() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.is_from_type) return _internal_is_from_type(); } inline void ColumnDef::_internal_set_is_from_type(bool value) { is_from_type_ = value; } inline void ColumnDef::set_is_from_type(bool value) { _internal_set_is_from_type(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.is_from_type) } // string storage = 7 [json_name = "storage"]; inline void ColumnDef::clear_storage() { storage_.ClearToEmpty(); } inline const std::string& ColumnDef::storage() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.storage) return _internal_storage(); } inline void ColumnDef::set_storage(const std::string& value) { _internal_set_storage(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.storage) } inline std::string* ColumnDef::mutable_storage() { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.storage) return _internal_mutable_storage(); } inline const std::string& ColumnDef::_internal_storage() const { return storage_.Get(); } inline void ColumnDef::_internal_set_storage(const std::string& value) { storage_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ColumnDef::set_storage(std::string&& value) { storage_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ColumnDef.storage) } inline void ColumnDef::set_storage(const char* value) { GOOGLE_DCHECK(value != nullptr); storage_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ColumnDef.storage) } inline void ColumnDef::set_storage(const char* value, size_t size) { storage_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ColumnDef.storage) } inline std::string* ColumnDef::_internal_mutable_storage() { return storage_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ColumnDef::release_storage() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.storage) return storage_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ColumnDef::set_allocated_storage(std::string* storage) { if (storage != nullptr) { } else { } storage_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), storage, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.storage) } // .pg_query.Node raw_default = 8 [json_name = "raw_default"]; inline bool ColumnDef::_internal_has_raw_default() const { return this != internal_default_instance() && raw_default_ != nullptr; } inline bool ColumnDef::has_raw_default() const { return _internal_has_raw_default(); } inline void ColumnDef::clear_raw_default() { if (GetArena() == nullptr && raw_default_ != nullptr) { delete raw_default_; } raw_default_ = nullptr; } inline const ::pg_query::Node& ColumnDef::_internal_raw_default() const { const ::pg_query::Node* p = raw_default_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ColumnDef::raw_default() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.raw_default) return _internal_raw_default(); } inline void ColumnDef::unsafe_arena_set_allocated_raw_default( ::pg_query::Node* raw_default) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(raw_default_); } raw_default_ = raw_default; if (raw_default) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.raw_default) } inline ::pg_query::Node* ColumnDef::release_raw_default() { ::pg_query::Node* temp = raw_default_; raw_default_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ColumnDef::unsafe_arena_release_raw_default() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.raw_default) ::pg_query::Node* temp = raw_default_; raw_default_ = nullptr; return temp; } inline ::pg_query::Node* ColumnDef::_internal_mutable_raw_default() { if (raw_default_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); raw_default_ = p; } return raw_default_; } inline ::pg_query::Node* ColumnDef::mutable_raw_default() { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.raw_default) return _internal_mutable_raw_default(); } inline void ColumnDef::set_allocated_raw_default(::pg_query::Node* raw_default) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete raw_default_; } if (raw_default) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(raw_default); if (message_arena != submessage_arena) { raw_default = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, raw_default, submessage_arena); } } else { } raw_default_ = raw_default; // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.raw_default) } // .pg_query.Node cooked_default = 9 [json_name = "cooked_default"]; inline bool ColumnDef::_internal_has_cooked_default() const { return this != internal_default_instance() && cooked_default_ != nullptr; } inline bool ColumnDef::has_cooked_default() const { return _internal_has_cooked_default(); } inline void ColumnDef::clear_cooked_default() { if (GetArena() == nullptr && cooked_default_ != nullptr) { delete cooked_default_; } cooked_default_ = nullptr; } inline const ::pg_query::Node& ColumnDef::_internal_cooked_default() const { const ::pg_query::Node* p = cooked_default_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& ColumnDef::cooked_default() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.cooked_default) return _internal_cooked_default(); } inline void ColumnDef::unsafe_arena_set_allocated_cooked_default( ::pg_query::Node* cooked_default) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(cooked_default_); } cooked_default_ = cooked_default; if (cooked_default) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.cooked_default) } inline ::pg_query::Node* ColumnDef::release_cooked_default() { ::pg_query::Node* temp = cooked_default_; cooked_default_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* ColumnDef::unsafe_arena_release_cooked_default() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.cooked_default) ::pg_query::Node* temp = cooked_default_; cooked_default_ = nullptr; return temp; } inline ::pg_query::Node* ColumnDef::_internal_mutable_cooked_default() { if (cooked_default_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); cooked_default_ = p; } return cooked_default_; } inline ::pg_query::Node* ColumnDef::mutable_cooked_default() { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.cooked_default) return _internal_mutable_cooked_default(); } inline void ColumnDef::set_allocated_cooked_default(::pg_query::Node* cooked_default) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete cooked_default_; } if (cooked_default) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(cooked_default); if (message_arena != submessage_arena) { cooked_default = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, cooked_default, submessage_arena); } } else { } cooked_default_ = cooked_default; // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.cooked_default) } // string identity = 10 [json_name = "identity"]; inline void ColumnDef::clear_identity() { identity_.ClearToEmpty(); } inline const std::string& ColumnDef::identity() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.identity) return _internal_identity(); } inline void ColumnDef::set_identity(const std::string& value) { _internal_set_identity(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.identity) } inline std::string* ColumnDef::mutable_identity() { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.identity) return _internal_mutable_identity(); } inline const std::string& ColumnDef::_internal_identity() const { return identity_.Get(); } inline void ColumnDef::_internal_set_identity(const std::string& value) { identity_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ColumnDef::set_identity(std::string&& value) { identity_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ColumnDef.identity) } inline void ColumnDef::set_identity(const char* value) { GOOGLE_DCHECK(value != nullptr); identity_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ColumnDef.identity) } inline void ColumnDef::set_identity(const char* value, size_t size) { identity_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ColumnDef.identity) } inline std::string* ColumnDef::_internal_mutable_identity() { return identity_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ColumnDef::release_identity() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.identity) return identity_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ColumnDef::set_allocated_identity(std::string* identity) { if (identity != nullptr) { } else { } identity_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), identity, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.identity) } // .pg_query.RangeVar identity_sequence = 11 [json_name = "identitySequence"]; inline bool ColumnDef::_internal_has_identity_sequence() const { return this != internal_default_instance() && identity_sequence_ != nullptr; } inline bool ColumnDef::has_identity_sequence() const { return _internal_has_identity_sequence(); } inline void ColumnDef::clear_identity_sequence() { if (GetArena() == nullptr && identity_sequence_ != nullptr) { delete identity_sequence_; } identity_sequence_ = nullptr; } inline const ::pg_query::RangeVar& ColumnDef::_internal_identity_sequence() const { const ::pg_query::RangeVar* p = identity_sequence_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& ColumnDef::identity_sequence() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.identity_sequence) return _internal_identity_sequence(); } inline void ColumnDef::unsafe_arena_set_allocated_identity_sequence( ::pg_query::RangeVar* identity_sequence) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(identity_sequence_); } identity_sequence_ = identity_sequence; if (identity_sequence) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.identity_sequence) } inline ::pg_query::RangeVar* ColumnDef::release_identity_sequence() { ::pg_query::RangeVar* temp = identity_sequence_; identity_sequence_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* ColumnDef::unsafe_arena_release_identity_sequence() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.identity_sequence) ::pg_query::RangeVar* temp = identity_sequence_; identity_sequence_ = nullptr; return temp; } inline ::pg_query::RangeVar* ColumnDef::_internal_mutable_identity_sequence() { if (identity_sequence_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); identity_sequence_ = p; } return identity_sequence_; } inline ::pg_query::RangeVar* ColumnDef::mutable_identity_sequence() { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.identity_sequence) return _internal_mutable_identity_sequence(); } inline void ColumnDef::set_allocated_identity_sequence(::pg_query::RangeVar* identity_sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete identity_sequence_; } if (identity_sequence) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(identity_sequence); if (message_arena != submessage_arena) { identity_sequence = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, identity_sequence, submessage_arena); } } else { } identity_sequence_ = identity_sequence; // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.identity_sequence) } // string generated = 12 [json_name = "generated"]; inline void ColumnDef::clear_generated() { generated_.ClearToEmpty(); } inline const std::string& ColumnDef::generated() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.generated) return _internal_generated(); } inline void ColumnDef::set_generated(const std::string& value) { _internal_set_generated(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.generated) } inline std::string* ColumnDef::mutable_generated() { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.generated) return _internal_mutable_generated(); } inline const std::string& ColumnDef::_internal_generated() const { return generated_.Get(); } inline void ColumnDef::_internal_set_generated(const std::string& value) { generated_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void ColumnDef::set_generated(std::string&& value) { generated_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.ColumnDef.generated) } inline void ColumnDef::set_generated(const char* value) { GOOGLE_DCHECK(value != nullptr); generated_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.ColumnDef.generated) } inline void ColumnDef::set_generated(const char* value, size_t size) { generated_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.ColumnDef.generated) } inline std::string* ColumnDef::_internal_mutable_generated() { return generated_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* ColumnDef::release_generated() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.generated) return generated_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void ColumnDef::set_allocated_generated(std::string* generated) { if (generated != nullptr) { } else { } generated_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), generated, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.generated) } // .pg_query.CollateClause coll_clause = 13 [json_name = "collClause"]; inline bool ColumnDef::_internal_has_coll_clause() const { return this != internal_default_instance() && coll_clause_ != nullptr; } inline bool ColumnDef::has_coll_clause() const { return _internal_has_coll_clause(); } inline void ColumnDef::clear_coll_clause() { if (GetArena() == nullptr && coll_clause_ != nullptr) { delete coll_clause_; } coll_clause_ = nullptr; } inline const ::pg_query::CollateClause& ColumnDef::_internal_coll_clause() const { const ::pg_query::CollateClause* p = coll_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_CollateClause_default_instance_); } inline const ::pg_query::CollateClause& ColumnDef::coll_clause() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.coll_clause) return _internal_coll_clause(); } inline void ColumnDef::unsafe_arena_set_allocated_coll_clause( ::pg_query::CollateClause* coll_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(coll_clause_); } coll_clause_ = coll_clause; if (coll_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.ColumnDef.coll_clause) } inline ::pg_query::CollateClause* ColumnDef::release_coll_clause() { ::pg_query::CollateClause* temp = coll_clause_; coll_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::CollateClause* ColumnDef::unsafe_arena_release_coll_clause() { // @@protoc_insertion_point(field_release:pg_query.ColumnDef.coll_clause) ::pg_query::CollateClause* temp = coll_clause_; coll_clause_ = nullptr; return temp; } inline ::pg_query::CollateClause* ColumnDef::_internal_mutable_coll_clause() { if (coll_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::CollateClause>(GetArena()); coll_clause_ = p; } return coll_clause_; } inline ::pg_query::CollateClause* ColumnDef::mutable_coll_clause() { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.coll_clause) return _internal_mutable_coll_clause(); } inline void ColumnDef::set_allocated_coll_clause(::pg_query::CollateClause* coll_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete coll_clause_; } if (coll_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(coll_clause); if (message_arena != submessage_arena) { coll_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, coll_clause, submessage_arena); } } else { } coll_clause_ = coll_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.ColumnDef.coll_clause) } // uint32 coll_oid = 14 [json_name = "collOid"]; inline void ColumnDef::clear_coll_oid() { coll_oid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ColumnDef::_internal_coll_oid() const { return coll_oid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 ColumnDef::coll_oid() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.coll_oid) return _internal_coll_oid(); } inline void ColumnDef::_internal_set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { coll_oid_ = value; } inline void ColumnDef::set_coll_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_coll_oid(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.coll_oid) } // repeated .pg_query.Node constraints = 15 [json_name = "constraints"]; inline int ColumnDef::_internal_constraints_size() const { return constraints_.size(); } inline int ColumnDef::constraints_size() const { return _internal_constraints_size(); } inline void ColumnDef::clear_constraints() { constraints_.Clear(); } inline ::pg_query::Node* ColumnDef::mutable_constraints(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.constraints) return constraints_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ColumnDef::mutable_constraints() { // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnDef.constraints) return &constraints_; } inline const ::pg_query::Node& ColumnDef::_internal_constraints(int index) const { return constraints_.Get(index); } inline const ::pg_query::Node& ColumnDef::constraints(int index) const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.constraints) return _internal_constraints(index); } inline ::pg_query::Node* ColumnDef::_internal_add_constraints() { return constraints_.Add(); } inline ::pg_query::Node* ColumnDef::add_constraints() { // @@protoc_insertion_point(field_add:pg_query.ColumnDef.constraints) return _internal_add_constraints(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ColumnDef::constraints() const { // @@protoc_insertion_point(field_list:pg_query.ColumnDef.constraints) return constraints_; } // repeated .pg_query.Node fdwoptions = 16 [json_name = "fdwoptions"]; inline int ColumnDef::_internal_fdwoptions_size() const { return fdwoptions_.size(); } inline int ColumnDef::fdwoptions_size() const { return _internal_fdwoptions_size(); } inline void ColumnDef::clear_fdwoptions() { fdwoptions_.Clear(); } inline ::pg_query::Node* ColumnDef::mutable_fdwoptions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ColumnDef.fdwoptions) return fdwoptions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ColumnDef::mutable_fdwoptions() { // @@protoc_insertion_point(field_mutable_list:pg_query.ColumnDef.fdwoptions) return &fdwoptions_; } inline const ::pg_query::Node& ColumnDef::_internal_fdwoptions(int index) const { return fdwoptions_.Get(index); } inline const ::pg_query::Node& ColumnDef::fdwoptions(int index) const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.fdwoptions) return _internal_fdwoptions(index); } inline ::pg_query::Node* ColumnDef::_internal_add_fdwoptions() { return fdwoptions_.Add(); } inline ::pg_query::Node* ColumnDef::add_fdwoptions() { // @@protoc_insertion_point(field_add:pg_query.ColumnDef.fdwoptions) return _internal_add_fdwoptions(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ColumnDef::fdwoptions() const { // @@protoc_insertion_point(field_list:pg_query.ColumnDef.fdwoptions) return fdwoptions_; } // int32 location = 17 [json_name = "location"]; inline void ColumnDef::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnDef::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ColumnDef::location() const { // @@protoc_insertion_point(field_get:pg_query.ColumnDef.location) return _internal_location(); } inline void ColumnDef::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void ColumnDef::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.ColumnDef.location) } // ------------------------------------------------------------------- // IndexElem // string name = 1 [json_name = "name"]; inline void IndexElem::clear_name() { name_.ClearToEmpty(); } inline const std::string& IndexElem::name() const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.name) return _internal_name(); } inline void IndexElem::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.IndexElem.name) } inline std::string* IndexElem::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.name) return _internal_mutable_name(); } inline const std::string& IndexElem::_internal_name() const { return name_.Get(); } inline void IndexElem::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void IndexElem::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexElem.name) } inline void IndexElem::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.IndexElem.name) } inline void IndexElem::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.IndexElem.name) } inline std::string* IndexElem::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* IndexElem::release_name() { // @@protoc_insertion_point(field_release:pg_query.IndexElem.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void IndexElem::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.IndexElem.name) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool IndexElem::_internal_has_expr() const { return this != internal_default_instance() && expr_ != nullptr; } inline bool IndexElem::has_expr() const { return _internal_has_expr(); } inline void IndexElem::clear_expr() { if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; } inline const ::pg_query::Node& IndexElem::_internal_expr() const { const ::pg_query::Node* p = expr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& IndexElem::expr() const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.expr) return _internal_expr(); } inline void IndexElem::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); } expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.IndexElem.expr) } inline ::pg_query::Node* IndexElem::release_expr() { ::pg_query::Node* temp = expr_; expr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* IndexElem::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.IndexElem.expr) ::pg_query::Node* temp = expr_; expr_ = nullptr; return temp; } inline ::pg_query::Node* IndexElem::_internal_mutable_expr() { if (expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); expr_ = p; } return expr_; } inline ::pg_query::Node* IndexElem::mutable_expr() { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.expr) return _internal_mutable_expr(); } inline void IndexElem::set_allocated_expr(::pg_query::Node* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.IndexElem.expr) } // string indexcolname = 3 [json_name = "indexcolname"]; inline void IndexElem::clear_indexcolname() { indexcolname_.ClearToEmpty(); } inline const std::string& IndexElem::indexcolname() const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.indexcolname) return _internal_indexcolname(); } inline void IndexElem::set_indexcolname(const std::string& value) { _internal_set_indexcolname(value); // @@protoc_insertion_point(field_set:pg_query.IndexElem.indexcolname) } inline std::string* IndexElem::mutable_indexcolname() { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.indexcolname) return _internal_mutable_indexcolname(); } inline const std::string& IndexElem::_internal_indexcolname() const { return indexcolname_.Get(); } inline void IndexElem::_internal_set_indexcolname(const std::string& value) { indexcolname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void IndexElem::set_indexcolname(std::string&& value) { indexcolname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.IndexElem.indexcolname) } inline void IndexElem::set_indexcolname(const char* value) { GOOGLE_DCHECK(value != nullptr); indexcolname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.IndexElem.indexcolname) } inline void IndexElem::set_indexcolname(const char* value, size_t size) { indexcolname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.IndexElem.indexcolname) } inline std::string* IndexElem::_internal_mutable_indexcolname() { return indexcolname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* IndexElem::release_indexcolname() { // @@protoc_insertion_point(field_release:pg_query.IndexElem.indexcolname) return indexcolname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void IndexElem::set_allocated_indexcolname(std::string* indexcolname) { if (indexcolname != nullptr) { } else { } indexcolname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), indexcolname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.IndexElem.indexcolname) } // repeated .pg_query.Node collation = 4 [json_name = "collation"]; inline int IndexElem::_internal_collation_size() const { return collation_.size(); } inline int IndexElem::collation_size() const { return _internal_collation_size(); } inline void IndexElem::clear_collation() { collation_.Clear(); } inline ::pg_query::Node* IndexElem::mutable_collation(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.collation) return collation_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexElem::mutable_collation() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.collation) return &collation_; } inline const ::pg_query::Node& IndexElem::_internal_collation(int index) const { return collation_.Get(index); } inline const ::pg_query::Node& IndexElem::collation(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.collation) return _internal_collation(index); } inline ::pg_query::Node* IndexElem::_internal_add_collation() { return collation_.Add(); } inline ::pg_query::Node* IndexElem::add_collation() { // @@protoc_insertion_point(field_add:pg_query.IndexElem.collation) return _internal_add_collation(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexElem::collation() const { // @@protoc_insertion_point(field_list:pg_query.IndexElem.collation) return collation_; } // repeated .pg_query.Node opclass = 5 [json_name = "opclass"]; inline int IndexElem::_internal_opclass_size() const { return opclass_.size(); } inline int IndexElem::opclass_size() const { return _internal_opclass_size(); } inline void IndexElem::clear_opclass() { opclass_.Clear(); } inline ::pg_query::Node* IndexElem::mutable_opclass(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.opclass) return opclass_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexElem::mutable_opclass() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.opclass) return &opclass_; } inline const ::pg_query::Node& IndexElem::_internal_opclass(int index) const { return opclass_.Get(index); } inline const ::pg_query::Node& IndexElem::opclass(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.opclass) return _internal_opclass(index); } inline ::pg_query::Node* IndexElem::_internal_add_opclass() { return opclass_.Add(); } inline ::pg_query::Node* IndexElem::add_opclass() { // @@protoc_insertion_point(field_add:pg_query.IndexElem.opclass) return _internal_add_opclass(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexElem::opclass() const { // @@protoc_insertion_point(field_list:pg_query.IndexElem.opclass) return opclass_; } // repeated .pg_query.Node opclassopts = 6 [json_name = "opclassopts"]; inline int IndexElem::_internal_opclassopts_size() const { return opclassopts_.size(); } inline int IndexElem::opclassopts_size() const { return _internal_opclassopts_size(); } inline void IndexElem::clear_opclassopts() { opclassopts_.Clear(); } inline ::pg_query::Node* IndexElem::mutable_opclassopts(int index) { // @@protoc_insertion_point(field_mutable:pg_query.IndexElem.opclassopts) return opclassopts_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* IndexElem::mutable_opclassopts() { // @@protoc_insertion_point(field_mutable_list:pg_query.IndexElem.opclassopts) return &opclassopts_; } inline const ::pg_query::Node& IndexElem::_internal_opclassopts(int index) const { return opclassopts_.Get(index); } inline const ::pg_query::Node& IndexElem::opclassopts(int index) const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.opclassopts) return _internal_opclassopts(index); } inline ::pg_query::Node* IndexElem::_internal_add_opclassopts() { return opclassopts_.Add(); } inline ::pg_query::Node* IndexElem::add_opclassopts() { // @@protoc_insertion_point(field_add:pg_query.IndexElem.opclassopts) return _internal_add_opclassopts(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& IndexElem::opclassopts() const { // @@protoc_insertion_point(field_list:pg_query.IndexElem.opclassopts) return opclassopts_; } // .pg_query.SortByDir ordering = 7 [json_name = "ordering"]; inline void IndexElem::clear_ordering() { ordering_ = 0; } inline ::pg_query::SortByDir IndexElem::_internal_ordering() const { return static_cast< ::pg_query::SortByDir >(ordering_); } inline ::pg_query::SortByDir IndexElem::ordering() const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.ordering) return _internal_ordering(); } inline void IndexElem::_internal_set_ordering(::pg_query::SortByDir value) { ordering_ = value; } inline void IndexElem::set_ordering(::pg_query::SortByDir value) { _internal_set_ordering(value); // @@protoc_insertion_point(field_set:pg_query.IndexElem.ordering) } // .pg_query.SortByNulls nulls_ordering = 8 [json_name = "nulls_ordering"]; inline void IndexElem::clear_nulls_ordering() { nulls_ordering_ = 0; } inline ::pg_query::SortByNulls IndexElem::_internal_nulls_ordering() const { return static_cast< ::pg_query::SortByNulls >(nulls_ordering_); } inline ::pg_query::SortByNulls IndexElem::nulls_ordering() const { // @@protoc_insertion_point(field_get:pg_query.IndexElem.nulls_ordering) return _internal_nulls_ordering(); } inline void IndexElem::_internal_set_nulls_ordering(::pg_query::SortByNulls value) { nulls_ordering_ = value; } inline void IndexElem::set_nulls_ordering(::pg_query::SortByNulls value) { _internal_set_nulls_ordering(value); // @@protoc_insertion_point(field_set:pg_query.IndexElem.nulls_ordering) } // ------------------------------------------------------------------- // Constraint // .pg_query.ConstrType contype = 1 [json_name = "contype"]; inline void Constraint::clear_contype() { contype_ = 0; } inline ::pg_query::ConstrType Constraint::_internal_contype() const { return static_cast< ::pg_query::ConstrType >(contype_); } inline ::pg_query::ConstrType Constraint::contype() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.contype) return _internal_contype(); } inline void Constraint::_internal_set_contype(::pg_query::ConstrType value) { contype_ = value; } inline void Constraint::set_contype(::pg_query::ConstrType value) { _internal_set_contype(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.contype) } // string conname = 2 [json_name = "conname"]; inline void Constraint::clear_conname() { conname_.ClearToEmpty(); } inline const std::string& Constraint::conname() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.conname) return _internal_conname(); } inline void Constraint::set_conname(const std::string& value) { _internal_set_conname(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.conname) } inline std::string* Constraint::mutable_conname() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.conname) return _internal_mutable_conname(); } inline const std::string& Constraint::_internal_conname() const { return conname_.Get(); } inline void Constraint::_internal_set_conname(const std::string& value) { conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Constraint::set_conname(std::string&& value) { conname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.conname) } inline void Constraint::set_conname(const char* value) { GOOGLE_DCHECK(value != nullptr); conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Constraint.conname) } inline void Constraint::set_conname(const char* value, size_t size) { conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.conname) } inline std::string* Constraint::_internal_mutable_conname() { return conname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Constraint::release_conname() { // @@protoc_insertion_point(field_release:pg_query.Constraint.conname) return conname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Constraint::set_allocated_conname(std::string* conname) { if (conname != nullptr) { } else { } conname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.conname) } // bool deferrable = 3 [json_name = "deferrable"]; inline void Constraint::clear_deferrable() { deferrable_ = false; } inline bool Constraint::_internal_deferrable() const { return deferrable_; } inline bool Constraint::deferrable() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.deferrable) return _internal_deferrable(); } inline void Constraint::_internal_set_deferrable(bool value) { deferrable_ = value; } inline void Constraint::set_deferrable(bool value) { _internal_set_deferrable(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.deferrable) } // bool initdeferred = 4 [json_name = "initdeferred"]; inline void Constraint::clear_initdeferred() { initdeferred_ = false; } inline bool Constraint::_internal_initdeferred() const { return initdeferred_; } inline bool Constraint::initdeferred() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.initdeferred) return _internal_initdeferred(); } inline void Constraint::_internal_set_initdeferred(bool value) { initdeferred_ = value; } inline void Constraint::set_initdeferred(bool value) { _internal_set_initdeferred(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.initdeferred) } // int32 location = 5 [json_name = "location"]; inline void Constraint::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 Constraint::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 Constraint::location() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.location) return _internal_location(); } inline void Constraint::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void Constraint::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.location) } // bool is_no_inherit = 6 [json_name = "is_no_inherit"]; inline void Constraint::clear_is_no_inherit() { is_no_inherit_ = false; } inline bool Constraint::_internal_is_no_inherit() const { return is_no_inherit_; } inline bool Constraint::is_no_inherit() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.is_no_inherit) return _internal_is_no_inherit(); } inline void Constraint::_internal_set_is_no_inherit(bool value) { is_no_inherit_ = value; } inline void Constraint::set_is_no_inherit(bool value) { _internal_set_is_no_inherit(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.is_no_inherit) } // .pg_query.Node raw_expr = 7 [json_name = "raw_expr"]; inline bool Constraint::_internal_has_raw_expr() const { return this != internal_default_instance() && raw_expr_ != nullptr; } inline bool Constraint::has_raw_expr() const { return _internal_has_raw_expr(); } inline void Constraint::clear_raw_expr() { if (GetArena() == nullptr && raw_expr_ != nullptr) { delete raw_expr_; } raw_expr_ = nullptr; } inline const ::pg_query::Node& Constraint::_internal_raw_expr() const { const ::pg_query::Node* p = raw_expr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Constraint::raw_expr() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.raw_expr) return _internal_raw_expr(); } inline void Constraint::unsafe_arena_set_allocated_raw_expr( ::pg_query::Node* raw_expr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(raw_expr_); } raw_expr_ = raw_expr; if (raw_expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.raw_expr) } inline ::pg_query::Node* Constraint::release_raw_expr() { ::pg_query::Node* temp = raw_expr_; raw_expr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Constraint::unsafe_arena_release_raw_expr() { // @@protoc_insertion_point(field_release:pg_query.Constraint.raw_expr) ::pg_query::Node* temp = raw_expr_; raw_expr_ = nullptr; return temp; } inline ::pg_query::Node* Constraint::_internal_mutable_raw_expr() { if (raw_expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); raw_expr_ = p; } return raw_expr_; } inline ::pg_query::Node* Constraint::mutable_raw_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.raw_expr) return _internal_mutable_raw_expr(); } inline void Constraint::set_allocated_raw_expr(::pg_query::Node* raw_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete raw_expr_; } if (raw_expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(raw_expr); if (message_arena != submessage_arena) { raw_expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, raw_expr, submessage_arena); } } else { } raw_expr_ = raw_expr; // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.raw_expr) } // string cooked_expr = 8 [json_name = "cooked_expr"]; inline void Constraint::clear_cooked_expr() { cooked_expr_.ClearToEmpty(); } inline const std::string& Constraint::cooked_expr() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.cooked_expr) return _internal_cooked_expr(); } inline void Constraint::set_cooked_expr(const std::string& value) { _internal_set_cooked_expr(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.cooked_expr) } inline std::string* Constraint::mutable_cooked_expr() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.cooked_expr) return _internal_mutable_cooked_expr(); } inline const std::string& Constraint::_internal_cooked_expr() const { return cooked_expr_.Get(); } inline void Constraint::_internal_set_cooked_expr(const std::string& value) { cooked_expr_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Constraint::set_cooked_expr(std::string&& value) { cooked_expr_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.cooked_expr) } inline void Constraint::set_cooked_expr(const char* value) { GOOGLE_DCHECK(value != nullptr); cooked_expr_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Constraint.cooked_expr) } inline void Constraint::set_cooked_expr(const char* value, size_t size) { cooked_expr_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.cooked_expr) } inline std::string* Constraint::_internal_mutable_cooked_expr() { return cooked_expr_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Constraint::release_cooked_expr() { // @@protoc_insertion_point(field_release:pg_query.Constraint.cooked_expr) return cooked_expr_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Constraint::set_allocated_cooked_expr(std::string* cooked_expr) { if (cooked_expr != nullptr) { } else { } cooked_expr_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), cooked_expr, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.cooked_expr) } // string generated_when = 9 [json_name = "generated_when"]; inline void Constraint::clear_generated_when() { generated_when_.ClearToEmpty(); } inline const std::string& Constraint::generated_when() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.generated_when) return _internal_generated_when(); } inline void Constraint::set_generated_when(const std::string& value) { _internal_set_generated_when(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.generated_when) } inline std::string* Constraint::mutable_generated_when() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.generated_when) return _internal_mutable_generated_when(); } inline const std::string& Constraint::_internal_generated_when() const { return generated_when_.Get(); } inline void Constraint::_internal_set_generated_when(const std::string& value) { generated_when_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Constraint::set_generated_when(std::string&& value) { generated_when_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.generated_when) } inline void Constraint::set_generated_when(const char* value) { GOOGLE_DCHECK(value != nullptr); generated_when_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Constraint.generated_when) } inline void Constraint::set_generated_when(const char* value, size_t size) { generated_when_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.generated_when) } inline std::string* Constraint::_internal_mutable_generated_when() { return generated_when_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Constraint::release_generated_when() { // @@protoc_insertion_point(field_release:pg_query.Constraint.generated_when) return generated_when_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Constraint::set_allocated_generated_when(std::string* generated_when) { if (generated_when != nullptr) { } else { } generated_when_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), generated_when, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.generated_when) } // repeated .pg_query.Node keys = 10 [json_name = "keys"]; inline int Constraint::_internal_keys_size() const { return keys_.size(); } inline int Constraint::keys_size() const { return _internal_keys_size(); } inline void Constraint::clear_keys() { keys_.Clear(); } inline ::pg_query::Node* Constraint::mutable_keys(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.keys) return keys_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_keys() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.keys) return &keys_; } inline const ::pg_query::Node& Constraint::_internal_keys(int index) const { return keys_.Get(index); } inline const ::pg_query::Node& Constraint::keys(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.keys) return _internal_keys(index); } inline ::pg_query::Node* Constraint::_internal_add_keys() { return keys_.Add(); } inline ::pg_query::Node* Constraint::add_keys() { // @@protoc_insertion_point(field_add:pg_query.Constraint.keys) return _internal_add_keys(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::keys() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.keys) return keys_; } // repeated .pg_query.Node including = 11 [json_name = "including"]; inline int Constraint::_internal_including_size() const { return including_.size(); } inline int Constraint::including_size() const { return _internal_including_size(); } inline void Constraint::clear_including() { including_.Clear(); } inline ::pg_query::Node* Constraint::mutable_including(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.including) return including_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_including() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.including) return &including_; } inline const ::pg_query::Node& Constraint::_internal_including(int index) const { return including_.Get(index); } inline const ::pg_query::Node& Constraint::including(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.including) return _internal_including(index); } inline ::pg_query::Node* Constraint::_internal_add_including() { return including_.Add(); } inline ::pg_query::Node* Constraint::add_including() { // @@protoc_insertion_point(field_add:pg_query.Constraint.including) return _internal_add_including(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::including() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.including) return including_; } // repeated .pg_query.Node exclusions = 12 [json_name = "exclusions"]; inline int Constraint::_internal_exclusions_size() const { return exclusions_.size(); } inline int Constraint::exclusions_size() const { return _internal_exclusions_size(); } inline void Constraint::clear_exclusions() { exclusions_.Clear(); } inline ::pg_query::Node* Constraint::mutable_exclusions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.exclusions) return exclusions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_exclusions() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.exclusions) return &exclusions_; } inline const ::pg_query::Node& Constraint::_internal_exclusions(int index) const { return exclusions_.Get(index); } inline const ::pg_query::Node& Constraint::exclusions(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.exclusions) return _internal_exclusions(index); } inline ::pg_query::Node* Constraint::_internal_add_exclusions() { return exclusions_.Add(); } inline ::pg_query::Node* Constraint::add_exclusions() { // @@protoc_insertion_point(field_add:pg_query.Constraint.exclusions) return _internal_add_exclusions(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::exclusions() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.exclusions) return exclusions_; } // repeated .pg_query.Node options = 13 [json_name = "options"]; inline int Constraint::_internal_options_size() const { return options_.size(); } inline int Constraint::options_size() const { return _internal_options_size(); } inline void Constraint::clear_options() { options_.Clear(); } inline ::pg_query::Node* Constraint::mutable_options(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.options) return options_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_options() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.options) return &options_; } inline const ::pg_query::Node& Constraint::_internal_options(int index) const { return options_.Get(index); } inline const ::pg_query::Node& Constraint::options(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.options) return _internal_options(index); } inline ::pg_query::Node* Constraint::_internal_add_options() { return options_.Add(); } inline ::pg_query::Node* Constraint::add_options() { // @@protoc_insertion_point(field_add:pg_query.Constraint.options) return _internal_add_options(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::options() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.options) return options_; } // string indexname = 14 [json_name = "indexname"]; inline void Constraint::clear_indexname() { indexname_.ClearToEmpty(); } inline const std::string& Constraint::indexname() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.indexname) return _internal_indexname(); } inline void Constraint::set_indexname(const std::string& value) { _internal_set_indexname(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.indexname) } inline std::string* Constraint::mutable_indexname() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.indexname) return _internal_mutable_indexname(); } inline const std::string& Constraint::_internal_indexname() const { return indexname_.Get(); } inline void Constraint::_internal_set_indexname(const std::string& value) { indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Constraint::set_indexname(std::string&& value) { indexname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.indexname) } inline void Constraint::set_indexname(const char* value) { GOOGLE_DCHECK(value != nullptr); indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Constraint.indexname) } inline void Constraint::set_indexname(const char* value, size_t size) { indexname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.indexname) } inline std::string* Constraint::_internal_mutable_indexname() { return indexname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Constraint::release_indexname() { // @@protoc_insertion_point(field_release:pg_query.Constraint.indexname) return indexname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Constraint::set_allocated_indexname(std::string* indexname) { if (indexname != nullptr) { } else { } indexname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), indexname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.indexname) } // string indexspace = 15 [json_name = "indexspace"]; inline void Constraint::clear_indexspace() { indexspace_.ClearToEmpty(); } inline const std::string& Constraint::indexspace() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.indexspace) return _internal_indexspace(); } inline void Constraint::set_indexspace(const std::string& value) { _internal_set_indexspace(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.indexspace) } inline std::string* Constraint::mutable_indexspace() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.indexspace) return _internal_mutable_indexspace(); } inline const std::string& Constraint::_internal_indexspace() const { return indexspace_.Get(); } inline void Constraint::_internal_set_indexspace(const std::string& value) { indexspace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Constraint::set_indexspace(std::string&& value) { indexspace_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.indexspace) } inline void Constraint::set_indexspace(const char* value) { GOOGLE_DCHECK(value != nullptr); indexspace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Constraint.indexspace) } inline void Constraint::set_indexspace(const char* value, size_t size) { indexspace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.indexspace) } inline std::string* Constraint::_internal_mutable_indexspace() { return indexspace_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Constraint::release_indexspace() { // @@protoc_insertion_point(field_release:pg_query.Constraint.indexspace) return indexspace_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Constraint::set_allocated_indexspace(std::string* indexspace) { if (indexspace != nullptr) { } else { } indexspace_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), indexspace, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.indexspace) } // bool reset_default_tblspc = 16 [json_name = "reset_default_tblspc"]; inline void Constraint::clear_reset_default_tblspc() { reset_default_tblspc_ = false; } inline bool Constraint::_internal_reset_default_tblspc() const { return reset_default_tblspc_; } inline bool Constraint::reset_default_tblspc() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.reset_default_tblspc) return _internal_reset_default_tblspc(); } inline void Constraint::_internal_set_reset_default_tblspc(bool value) { reset_default_tblspc_ = value; } inline void Constraint::set_reset_default_tblspc(bool value) { _internal_set_reset_default_tblspc(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.reset_default_tblspc) } // string access_method = 17 [json_name = "access_method"]; inline void Constraint::clear_access_method() { access_method_.ClearToEmpty(); } inline const std::string& Constraint::access_method() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.access_method) return _internal_access_method(); } inline void Constraint::set_access_method(const std::string& value) { _internal_set_access_method(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.access_method) } inline std::string* Constraint::mutable_access_method() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.access_method) return _internal_mutable_access_method(); } inline const std::string& Constraint::_internal_access_method() const { return access_method_.Get(); } inline void Constraint::_internal_set_access_method(const std::string& value) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Constraint::set_access_method(std::string&& value) { access_method_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.access_method) } inline void Constraint::set_access_method(const char* value) { GOOGLE_DCHECK(value != nullptr); access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Constraint.access_method) } inline void Constraint::set_access_method(const char* value, size_t size) { access_method_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.access_method) } inline std::string* Constraint::_internal_mutable_access_method() { return access_method_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Constraint::release_access_method() { // @@protoc_insertion_point(field_release:pg_query.Constraint.access_method) return access_method_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Constraint::set_allocated_access_method(std::string* access_method) { if (access_method != nullptr) { } else { } access_method_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), access_method, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.access_method) } // .pg_query.Node where_clause = 18 [json_name = "where_clause"]; inline bool Constraint::_internal_has_where_clause() const { return this != internal_default_instance() && where_clause_ != nullptr; } inline bool Constraint::has_where_clause() const { return _internal_has_where_clause(); } inline void Constraint::clear_where_clause() { if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; } inline const ::pg_query::Node& Constraint::_internal_where_clause() const { const ::pg_query::Node* p = where_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& Constraint::where_clause() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.where_clause) return _internal_where_clause(); } inline void Constraint::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); } where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.where_clause) } inline ::pg_query::Node* Constraint::release_where_clause() { ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* Constraint::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.Constraint.where_clause) ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; return temp; } inline ::pg_query::Node* Constraint::_internal_mutable_where_clause() { if (where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); where_clause_ = p; } return where_clause_; } inline ::pg_query::Node* Constraint::mutable_where_clause() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.where_clause) return _internal_mutable_where_clause(); } inline void Constraint::set_allocated_where_clause(::pg_query::Node* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.where_clause) } // .pg_query.RangeVar pktable = 19 [json_name = "pktable"]; inline bool Constraint::_internal_has_pktable() const { return this != internal_default_instance() && pktable_ != nullptr; } inline bool Constraint::has_pktable() const { return _internal_has_pktable(); } inline void Constraint::clear_pktable() { if (GetArena() == nullptr && pktable_ != nullptr) { delete pktable_; } pktable_ = nullptr; } inline const ::pg_query::RangeVar& Constraint::_internal_pktable() const { const ::pg_query::RangeVar* p = pktable_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& Constraint::pktable() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.pktable) return _internal_pktable(); } inline void Constraint::unsafe_arena_set_allocated_pktable( ::pg_query::RangeVar* pktable) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(pktable_); } pktable_ = pktable; if (pktable) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.Constraint.pktable) } inline ::pg_query::RangeVar* Constraint::release_pktable() { ::pg_query::RangeVar* temp = pktable_; pktable_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* Constraint::unsafe_arena_release_pktable() { // @@protoc_insertion_point(field_release:pg_query.Constraint.pktable) ::pg_query::RangeVar* temp = pktable_; pktable_ = nullptr; return temp; } inline ::pg_query::RangeVar* Constraint::_internal_mutable_pktable() { if (pktable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); pktable_ = p; } return pktable_; } inline ::pg_query::RangeVar* Constraint::mutable_pktable() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.pktable) return _internal_mutable_pktable(); } inline void Constraint::set_allocated_pktable(::pg_query::RangeVar* pktable) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete pktable_; } if (pktable) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(pktable); if (message_arena != submessage_arena) { pktable = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, pktable, submessage_arena); } } else { } pktable_ = pktable; // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.pktable) } // repeated .pg_query.Node fk_attrs = 20 [json_name = "fk_attrs"]; inline int Constraint::_internal_fk_attrs_size() const { return fk_attrs_.size(); } inline int Constraint::fk_attrs_size() const { return _internal_fk_attrs_size(); } inline void Constraint::clear_fk_attrs() { fk_attrs_.Clear(); } inline ::pg_query::Node* Constraint::mutable_fk_attrs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_attrs) return fk_attrs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_fk_attrs() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.fk_attrs) return &fk_attrs_; } inline const ::pg_query::Node& Constraint::_internal_fk_attrs(int index) const { return fk_attrs_.Get(index); } inline const ::pg_query::Node& Constraint::fk_attrs(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_attrs) return _internal_fk_attrs(index); } inline ::pg_query::Node* Constraint::_internal_add_fk_attrs() { return fk_attrs_.Add(); } inline ::pg_query::Node* Constraint::add_fk_attrs() { // @@protoc_insertion_point(field_add:pg_query.Constraint.fk_attrs) return _internal_add_fk_attrs(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::fk_attrs() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.fk_attrs) return fk_attrs_; } // repeated .pg_query.Node pk_attrs = 21 [json_name = "pk_attrs"]; inline int Constraint::_internal_pk_attrs_size() const { return pk_attrs_.size(); } inline int Constraint::pk_attrs_size() const { return _internal_pk_attrs_size(); } inline void Constraint::clear_pk_attrs() { pk_attrs_.Clear(); } inline ::pg_query::Node* Constraint::mutable_pk_attrs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.pk_attrs) return pk_attrs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_pk_attrs() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.pk_attrs) return &pk_attrs_; } inline const ::pg_query::Node& Constraint::_internal_pk_attrs(int index) const { return pk_attrs_.Get(index); } inline const ::pg_query::Node& Constraint::pk_attrs(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.pk_attrs) return _internal_pk_attrs(index); } inline ::pg_query::Node* Constraint::_internal_add_pk_attrs() { return pk_attrs_.Add(); } inline ::pg_query::Node* Constraint::add_pk_attrs() { // @@protoc_insertion_point(field_add:pg_query.Constraint.pk_attrs) return _internal_add_pk_attrs(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::pk_attrs() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.pk_attrs) return pk_attrs_; } // string fk_matchtype = 22 [json_name = "fk_matchtype"]; inline void Constraint::clear_fk_matchtype() { fk_matchtype_.ClearToEmpty(); } inline const std::string& Constraint::fk_matchtype() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_matchtype) return _internal_fk_matchtype(); } inline void Constraint::set_fk_matchtype(const std::string& value) { _internal_set_fk_matchtype(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_matchtype) } inline std::string* Constraint::mutable_fk_matchtype() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_matchtype) return _internal_mutable_fk_matchtype(); } inline const std::string& Constraint::_internal_fk_matchtype() const { return fk_matchtype_.Get(); } inline void Constraint::_internal_set_fk_matchtype(const std::string& value) { fk_matchtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Constraint::set_fk_matchtype(std::string&& value) { fk_matchtype_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.fk_matchtype) } inline void Constraint::set_fk_matchtype(const char* value) { GOOGLE_DCHECK(value != nullptr); fk_matchtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Constraint.fk_matchtype) } inline void Constraint::set_fk_matchtype(const char* value, size_t size) { fk_matchtype_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.fk_matchtype) } inline std::string* Constraint::_internal_mutable_fk_matchtype() { return fk_matchtype_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Constraint::release_fk_matchtype() { // @@protoc_insertion_point(field_release:pg_query.Constraint.fk_matchtype) return fk_matchtype_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Constraint::set_allocated_fk_matchtype(std::string* fk_matchtype) { if (fk_matchtype != nullptr) { } else { } fk_matchtype_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fk_matchtype, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_matchtype) } // string fk_upd_action = 23 [json_name = "fk_upd_action"]; inline void Constraint::clear_fk_upd_action() { fk_upd_action_.ClearToEmpty(); } inline const std::string& Constraint::fk_upd_action() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_upd_action) return _internal_fk_upd_action(); } inline void Constraint::set_fk_upd_action(const std::string& value) { _internal_set_fk_upd_action(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_upd_action) } inline std::string* Constraint::mutable_fk_upd_action() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_upd_action) return _internal_mutable_fk_upd_action(); } inline const std::string& Constraint::_internal_fk_upd_action() const { return fk_upd_action_.Get(); } inline void Constraint::_internal_set_fk_upd_action(const std::string& value) { fk_upd_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Constraint::set_fk_upd_action(std::string&& value) { fk_upd_action_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.fk_upd_action) } inline void Constraint::set_fk_upd_action(const char* value) { GOOGLE_DCHECK(value != nullptr); fk_upd_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Constraint.fk_upd_action) } inline void Constraint::set_fk_upd_action(const char* value, size_t size) { fk_upd_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.fk_upd_action) } inline std::string* Constraint::_internal_mutable_fk_upd_action() { return fk_upd_action_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Constraint::release_fk_upd_action() { // @@protoc_insertion_point(field_release:pg_query.Constraint.fk_upd_action) return fk_upd_action_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Constraint::set_allocated_fk_upd_action(std::string* fk_upd_action) { if (fk_upd_action != nullptr) { } else { } fk_upd_action_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fk_upd_action, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_upd_action) } // string fk_del_action = 24 [json_name = "fk_del_action"]; inline void Constraint::clear_fk_del_action() { fk_del_action_.ClearToEmpty(); } inline const std::string& Constraint::fk_del_action() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.fk_del_action) return _internal_fk_del_action(); } inline void Constraint::set_fk_del_action(const std::string& value) { _internal_set_fk_del_action(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.fk_del_action) } inline std::string* Constraint::mutable_fk_del_action() { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.fk_del_action) return _internal_mutable_fk_del_action(); } inline const std::string& Constraint::_internal_fk_del_action() const { return fk_del_action_.Get(); } inline void Constraint::_internal_set_fk_del_action(const std::string& value) { fk_del_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void Constraint::set_fk_del_action(std::string&& value) { fk_del_action_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.Constraint.fk_del_action) } inline void Constraint::set_fk_del_action(const char* value) { GOOGLE_DCHECK(value != nullptr); fk_del_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.Constraint.fk_del_action) } inline void Constraint::set_fk_del_action(const char* value, size_t size) { fk_del_action_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.Constraint.fk_del_action) } inline std::string* Constraint::_internal_mutable_fk_del_action() { return fk_del_action_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* Constraint::release_fk_del_action() { // @@protoc_insertion_point(field_release:pg_query.Constraint.fk_del_action) return fk_del_action_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void Constraint::set_allocated_fk_del_action(std::string* fk_del_action) { if (fk_del_action != nullptr) { } else { } fk_del_action_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), fk_del_action, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.Constraint.fk_del_action) } // repeated .pg_query.Node old_conpfeqop = 25 [json_name = "old_conpfeqop"]; inline int Constraint::_internal_old_conpfeqop_size() const { return old_conpfeqop_.size(); } inline int Constraint::old_conpfeqop_size() const { return _internal_old_conpfeqop_size(); } inline void Constraint::clear_old_conpfeqop() { old_conpfeqop_.Clear(); } inline ::pg_query::Node* Constraint::mutable_old_conpfeqop(int index) { // @@protoc_insertion_point(field_mutable:pg_query.Constraint.old_conpfeqop) return old_conpfeqop_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* Constraint::mutable_old_conpfeqop() { // @@protoc_insertion_point(field_mutable_list:pg_query.Constraint.old_conpfeqop) return &old_conpfeqop_; } inline const ::pg_query::Node& Constraint::_internal_old_conpfeqop(int index) const { return old_conpfeqop_.Get(index); } inline const ::pg_query::Node& Constraint::old_conpfeqop(int index) const { // @@protoc_insertion_point(field_get:pg_query.Constraint.old_conpfeqop) return _internal_old_conpfeqop(index); } inline ::pg_query::Node* Constraint::_internal_add_old_conpfeqop() { return old_conpfeqop_.Add(); } inline ::pg_query::Node* Constraint::add_old_conpfeqop() { // @@protoc_insertion_point(field_add:pg_query.Constraint.old_conpfeqop) return _internal_add_old_conpfeqop(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& Constraint::old_conpfeqop() const { // @@protoc_insertion_point(field_list:pg_query.Constraint.old_conpfeqop) return old_conpfeqop_; } // uint32 old_pktable_oid = 26 [json_name = "old_pktable_oid"]; inline void Constraint::clear_old_pktable_oid() { old_pktable_oid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Constraint::_internal_old_pktable_oid() const { return old_pktable_oid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 Constraint::old_pktable_oid() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.old_pktable_oid) return _internal_old_pktable_oid(); } inline void Constraint::_internal_set_old_pktable_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { old_pktable_oid_ = value; } inline void Constraint::set_old_pktable_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_old_pktable_oid(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.old_pktable_oid) } // bool skip_validation = 27 [json_name = "skip_validation"]; inline void Constraint::clear_skip_validation() { skip_validation_ = false; } inline bool Constraint::_internal_skip_validation() const { return skip_validation_; } inline bool Constraint::skip_validation() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.skip_validation) return _internal_skip_validation(); } inline void Constraint::_internal_set_skip_validation(bool value) { skip_validation_ = value; } inline void Constraint::set_skip_validation(bool value) { _internal_set_skip_validation(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.skip_validation) } // bool initially_valid = 28 [json_name = "initially_valid"]; inline void Constraint::clear_initially_valid() { initially_valid_ = false; } inline bool Constraint::_internal_initially_valid() const { return initially_valid_; } inline bool Constraint::initially_valid() const { // @@protoc_insertion_point(field_get:pg_query.Constraint.initially_valid) return _internal_initially_valid(); } inline void Constraint::_internal_set_initially_valid(bool value) { initially_valid_ = value; } inline void Constraint::set_initially_valid(bool value) { _internal_set_initially_valid(value); // @@protoc_insertion_point(field_set:pg_query.Constraint.initially_valid) } // ------------------------------------------------------------------- // DefElem // string defnamespace = 1 [json_name = "defnamespace"]; inline void DefElem::clear_defnamespace() { defnamespace_.ClearToEmpty(); } inline const std::string& DefElem::defnamespace() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.defnamespace) return _internal_defnamespace(); } inline void DefElem::set_defnamespace(const std::string& value) { _internal_set_defnamespace(value); // @@protoc_insertion_point(field_set:pg_query.DefElem.defnamespace) } inline std::string* DefElem::mutable_defnamespace() { // @@protoc_insertion_point(field_mutable:pg_query.DefElem.defnamespace) return _internal_mutable_defnamespace(); } inline const std::string& DefElem::_internal_defnamespace() const { return defnamespace_.Get(); } inline void DefElem::_internal_set_defnamespace(const std::string& value) { defnamespace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void DefElem::set_defnamespace(std::string&& value) { defnamespace_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.DefElem.defnamespace) } inline void DefElem::set_defnamespace(const char* value) { GOOGLE_DCHECK(value != nullptr); defnamespace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.DefElem.defnamespace) } inline void DefElem::set_defnamespace(const char* value, size_t size) { defnamespace_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.DefElem.defnamespace) } inline std::string* DefElem::_internal_mutable_defnamespace() { return defnamespace_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* DefElem::release_defnamespace() { // @@protoc_insertion_point(field_release:pg_query.DefElem.defnamespace) return defnamespace_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void DefElem::set_allocated_defnamespace(std::string* defnamespace) { if (defnamespace != nullptr) { } else { } defnamespace_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), defnamespace, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.DefElem.defnamespace) } // string defname = 2 [json_name = "defname"]; inline void DefElem::clear_defname() { defname_.ClearToEmpty(); } inline const std::string& DefElem::defname() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.defname) return _internal_defname(); } inline void DefElem::set_defname(const std::string& value) { _internal_set_defname(value); // @@protoc_insertion_point(field_set:pg_query.DefElem.defname) } inline std::string* DefElem::mutable_defname() { // @@protoc_insertion_point(field_mutable:pg_query.DefElem.defname) return _internal_mutable_defname(); } inline const std::string& DefElem::_internal_defname() const { return defname_.Get(); } inline void DefElem::_internal_set_defname(const std::string& value) { defname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void DefElem::set_defname(std::string&& value) { defname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.DefElem.defname) } inline void DefElem::set_defname(const char* value) { GOOGLE_DCHECK(value != nullptr); defname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.DefElem.defname) } inline void DefElem::set_defname(const char* value, size_t size) { defname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.DefElem.defname) } inline std::string* DefElem::_internal_mutable_defname() { return defname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* DefElem::release_defname() { // @@protoc_insertion_point(field_release:pg_query.DefElem.defname) return defname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void DefElem::set_allocated_defname(std::string* defname) { if (defname != nullptr) { } else { } defname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), defname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.DefElem.defname) } // .pg_query.Node arg = 3 [json_name = "arg"]; inline bool DefElem::_internal_has_arg() const { return this != internal_default_instance() && arg_ != nullptr; } inline bool DefElem::has_arg() const { return _internal_has_arg(); } inline void DefElem::clear_arg() { if (GetArena() == nullptr && arg_ != nullptr) { delete arg_; } arg_ = nullptr; } inline const ::pg_query::Node& DefElem::_internal_arg() const { const ::pg_query::Node* p = arg_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& DefElem::arg() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.arg) return _internal_arg(); } inline void DefElem::unsafe_arena_set_allocated_arg( ::pg_query::Node* arg) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_); } arg_ = arg; if (arg) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.DefElem.arg) } inline ::pg_query::Node* DefElem::release_arg() { ::pg_query::Node* temp = arg_; arg_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* DefElem::unsafe_arena_release_arg() { // @@protoc_insertion_point(field_release:pg_query.DefElem.arg) ::pg_query::Node* temp = arg_; arg_ = nullptr; return temp; } inline ::pg_query::Node* DefElem::_internal_mutable_arg() { if (arg_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); arg_ = p; } return arg_; } inline ::pg_query::Node* DefElem::mutable_arg() { // @@protoc_insertion_point(field_mutable:pg_query.DefElem.arg) return _internal_mutable_arg(); } inline void DefElem::set_allocated_arg(::pg_query::Node* arg) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_; } if (arg) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg); if (message_arena != submessage_arena) { arg = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg, submessage_arena); } } else { } arg_ = arg; // @@protoc_insertion_point(field_set_allocated:pg_query.DefElem.arg) } // .pg_query.DefElemAction defaction = 4 [json_name = "defaction"]; inline void DefElem::clear_defaction() { defaction_ = 0; } inline ::pg_query::DefElemAction DefElem::_internal_defaction() const { return static_cast< ::pg_query::DefElemAction >(defaction_); } inline ::pg_query::DefElemAction DefElem::defaction() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.defaction) return _internal_defaction(); } inline void DefElem::_internal_set_defaction(::pg_query::DefElemAction value) { defaction_ = value; } inline void DefElem::set_defaction(::pg_query::DefElemAction value) { _internal_set_defaction(value); // @@protoc_insertion_point(field_set:pg_query.DefElem.defaction) } // int32 location = 5 [json_name = "location"]; inline void DefElem::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 DefElem::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 DefElem::location() const { // @@protoc_insertion_point(field_get:pg_query.DefElem.location) return _internal_location(); } inline void DefElem::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void DefElem::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.DefElem.location) } // ------------------------------------------------------------------- // RangeTblEntry // .pg_query.RTEKind rtekind = 1 [json_name = "rtekind"]; inline void RangeTblEntry::clear_rtekind() { rtekind_ = 0; } inline ::pg_query::RTEKind RangeTblEntry::_internal_rtekind() const { return static_cast< ::pg_query::RTEKind >(rtekind_); } inline ::pg_query::RTEKind RangeTblEntry::rtekind() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.rtekind) return _internal_rtekind(); } inline void RangeTblEntry::_internal_set_rtekind(::pg_query::RTEKind value) { rtekind_ = value; } inline void RangeTblEntry::set_rtekind(::pg_query::RTEKind value) { _internal_set_rtekind(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.rtekind) } // uint32 relid = 2 [json_name = "relid"]; inline void RangeTblEntry::clear_relid() { relid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::_internal_relid() const { return relid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::relid() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.relid) return _internal_relid(); } inline void RangeTblEntry::_internal_set_relid(::PROTOBUF_NAMESPACE_ID::uint32 value) { relid_ = value; } inline void RangeTblEntry::set_relid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_relid(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.relid) } // string relkind = 3 [json_name = "relkind"]; inline void RangeTblEntry::clear_relkind() { relkind_.ClearToEmpty(); } inline const std::string& RangeTblEntry::relkind() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.relkind) return _internal_relkind(); } inline void RangeTblEntry::set_relkind(const std::string& value) { _internal_set_relkind(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.relkind) } inline std::string* RangeTblEntry::mutable_relkind() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.relkind) return _internal_mutable_relkind(); } inline const std::string& RangeTblEntry::_internal_relkind() const { return relkind_.Get(); } inline void RangeTblEntry::_internal_set_relkind(const std::string& value) { relkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RangeTblEntry::set_relkind(std::string&& value) { relkind_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeTblEntry.relkind) } inline void RangeTblEntry::set_relkind(const char* value) { GOOGLE_DCHECK(value != nullptr); relkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RangeTblEntry.relkind) } inline void RangeTblEntry::set_relkind(const char* value, size_t size) { relkind_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RangeTblEntry.relkind) } inline std::string* RangeTblEntry::_internal_mutable_relkind() { return relkind_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RangeTblEntry::release_relkind() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.relkind) return relkind_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RangeTblEntry::set_allocated_relkind(std::string* relkind) { if (relkind != nullptr) { } else { } relkind_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), relkind, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.relkind) } // int32 rellockmode = 4 [json_name = "rellockmode"]; inline void RangeTblEntry::clear_rellockmode() { rellockmode_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblEntry::_internal_rellockmode() const { return rellockmode_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblEntry::rellockmode() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.rellockmode) return _internal_rellockmode(); } inline void RangeTblEntry::_internal_set_rellockmode(::PROTOBUF_NAMESPACE_ID::int32 value) { rellockmode_ = value; } inline void RangeTblEntry::set_rellockmode(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_rellockmode(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.rellockmode) } // .pg_query.TableSampleClause tablesample = 5 [json_name = "tablesample"]; inline bool RangeTblEntry::_internal_has_tablesample() const { return this != internal_default_instance() && tablesample_ != nullptr; } inline bool RangeTblEntry::has_tablesample() const { return _internal_has_tablesample(); } inline void RangeTblEntry::clear_tablesample() { if (GetArena() == nullptr && tablesample_ != nullptr) { delete tablesample_; } tablesample_ = nullptr; } inline const ::pg_query::TableSampleClause& RangeTblEntry::_internal_tablesample() const { const ::pg_query::TableSampleClause* p = tablesample_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TableSampleClause_default_instance_); } inline const ::pg_query::TableSampleClause& RangeTblEntry::tablesample() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.tablesample) return _internal_tablesample(); } inline void RangeTblEntry::unsafe_arena_set_allocated_tablesample( ::pg_query::TableSampleClause* tablesample) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(tablesample_); } tablesample_ = tablesample; if (tablesample) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.tablesample) } inline ::pg_query::TableSampleClause* RangeTblEntry::release_tablesample() { ::pg_query::TableSampleClause* temp = tablesample_; tablesample_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TableSampleClause* RangeTblEntry::unsafe_arena_release_tablesample() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.tablesample) ::pg_query::TableSampleClause* temp = tablesample_; tablesample_ = nullptr; return temp; } inline ::pg_query::TableSampleClause* RangeTblEntry::_internal_mutable_tablesample() { if (tablesample_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TableSampleClause>(GetArena()); tablesample_ = p; } return tablesample_; } inline ::pg_query::TableSampleClause* RangeTblEntry::mutable_tablesample() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.tablesample) return _internal_mutable_tablesample(); } inline void RangeTblEntry::set_allocated_tablesample(::pg_query::TableSampleClause* tablesample) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete tablesample_; } if (tablesample) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(tablesample); if (message_arena != submessage_arena) { tablesample = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, tablesample, submessage_arena); } } else { } tablesample_ = tablesample; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.tablesample) } // .pg_query.Query subquery = 6 [json_name = "subquery"]; inline bool RangeTblEntry::_internal_has_subquery() const { return this != internal_default_instance() && subquery_ != nullptr; } inline bool RangeTblEntry::has_subquery() const { return _internal_has_subquery(); } inline void RangeTblEntry::clear_subquery() { if (GetArena() == nullptr && subquery_ != nullptr) { delete subquery_; } subquery_ = nullptr; } inline const ::pg_query::Query& RangeTblEntry::_internal_subquery() const { const ::pg_query::Query* p = subquery_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Query_default_instance_); } inline const ::pg_query::Query& RangeTblEntry::subquery() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.subquery) return _internal_subquery(); } inline void RangeTblEntry::unsafe_arena_set_allocated_subquery( ::pg_query::Query* subquery) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(subquery_); } subquery_ = subquery; if (subquery) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.subquery) } inline ::pg_query::Query* RangeTblEntry::release_subquery() { ::pg_query::Query* temp = subquery_; subquery_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Query* RangeTblEntry::unsafe_arena_release_subquery() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.subquery) ::pg_query::Query* temp = subquery_; subquery_ = nullptr; return temp; } inline ::pg_query::Query* RangeTblEntry::_internal_mutable_subquery() { if (subquery_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Query>(GetArena()); subquery_ = p; } return subquery_; } inline ::pg_query::Query* RangeTblEntry::mutable_subquery() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.subquery) return _internal_mutable_subquery(); } inline void RangeTblEntry::set_allocated_subquery(::pg_query::Query* subquery) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete subquery_; } if (subquery) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(subquery); if (message_arena != submessage_arena) { subquery = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, subquery, submessage_arena); } } else { } subquery_ = subquery; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.subquery) } // bool security_barrier = 7 [json_name = "security_barrier"]; inline void RangeTblEntry::clear_security_barrier() { security_barrier_ = false; } inline bool RangeTblEntry::_internal_security_barrier() const { return security_barrier_; } inline bool RangeTblEntry::security_barrier() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.security_barrier) return _internal_security_barrier(); } inline void RangeTblEntry::_internal_set_security_barrier(bool value) { security_barrier_ = value; } inline void RangeTblEntry::set_security_barrier(bool value) { _internal_set_security_barrier(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.security_barrier) } // .pg_query.JoinType jointype = 8 [json_name = "jointype"]; inline void RangeTblEntry::clear_jointype() { jointype_ = 0; } inline ::pg_query::JoinType RangeTblEntry::_internal_jointype() const { return static_cast< ::pg_query::JoinType >(jointype_); } inline ::pg_query::JoinType RangeTblEntry::jointype() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.jointype) return _internal_jointype(); } inline void RangeTblEntry::_internal_set_jointype(::pg_query::JoinType value) { jointype_ = value; } inline void RangeTblEntry::set_jointype(::pg_query::JoinType value) { _internal_set_jointype(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.jointype) } // int32 joinmergedcols = 9 [json_name = "joinmergedcols"]; inline void RangeTblEntry::clear_joinmergedcols() { joinmergedcols_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblEntry::_internal_joinmergedcols() const { return joinmergedcols_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblEntry::joinmergedcols() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinmergedcols) return _internal_joinmergedcols(); } inline void RangeTblEntry::_internal_set_joinmergedcols(::PROTOBUF_NAMESPACE_ID::int32 value) { joinmergedcols_ = value; } inline void RangeTblEntry::set_joinmergedcols(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_joinmergedcols(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.joinmergedcols) } // repeated .pg_query.Node joinaliasvars = 10 [json_name = "joinaliasvars"]; inline int RangeTblEntry::_internal_joinaliasvars_size() const { return joinaliasvars_.size(); } inline int RangeTblEntry::joinaliasvars_size() const { return _internal_joinaliasvars_size(); } inline void RangeTblEntry::clear_joinaliasvars() { joinaliasvars_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_joinaliasvars(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinaliasvars) return joinaliasvars_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_joinaliasvars() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinaliasvars) return &joinaliasvars_; } inline const ::pg_query::Node& RangeTblEntry::_internal_joinaliasvars(int index) const { return joinaliasvars_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::joinaliasvars(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinaliasvars) return _internal_joinaliasvars(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_joinaliasvars() { return joinaliasvars_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_joinaliasvars() { // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinaliasvars) return _internal_add_joinaliasvars(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::joinaliasvars() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinaliasvars) return joinaliasvars_; } // repeated .pg_query.Node joinleftcols = 11 [json_name = "joinleftcols"]; inline int RangeTblEntry::_internal_joinleftcols_size() const { return joinleftcols_.size(); } inline int RangeTblEntry::joinleftcols_size() const { return _internal_joinleftcols_size(); } inline void RangeTblEntry::clear_joinleftcols() { joinleftcols_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_joinleftcols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinleftcols) return joinleftcols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_joinleftcols() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinleftcols) return &joinleftcols_; } inline const ::pg_query::Node& RangeTblEntry::_internal_joinleftcols(int index) const { return joinleftcols_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::joinleftcols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinleftcols) return _internal_joinleftcols(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_joinleftcols() { return joinleftcols_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_joinleftcols() { // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinleftcols) return _internal_add_joinleftcols(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::joinleftcols() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinleftcols) return joinleftcols_; } // repeated .pg_query.Node joinrightcols = 12 [json_name = "joinrightcols"]; inline int RangeTblEntry::_internal_joinrightcols_size() const { return joinrightcols_.size(); } inline int RangeTblEntry::joinrightcols_size() const { return _internal_joinrightcols_size(); } inline void RangeTblEntry::clear_joinrightcols() { joinrightcols_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_joinrightcols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.joinrightcols) return joinrightcols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_joinrightcols() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.joinrightcols) return &joinrightcols_; } inline const ::pg_query::Node& RangeTblEntry::_internal_joinrightcols(int index) const { return joinrightcols_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::joinrightcols(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.joinrightcols) return _internal_joinrightcols(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_joinrightcols() { return joinrightcols_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_joinrightcols() { // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.joinrightcols) return _internal_add_joinrightcols(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::joinrightcols() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.joinrightcols) return joinrightcols_; } // repeated .pg_query.Node functions = 13 [json_name = "functions"]; inline int RangeTblEntry::_internal_functions_size() const { return functions_.size(); } inline int RangeTblEntry::functions_size() const { return _internal_functions_size(); } inline void RangeTblEntry::clear_functions() { functions_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_functions(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.functions) return functions_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_functions() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.functions) return &functions_; } inline const ::pg_query::Node& RangeTblEntry::_internal_functions(int index) const { return functions_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::functions(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.functions) return _internal_functions(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_functions() { return functions_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_functions() { // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.functions) return _internal_add_functions(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::functions() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.functions) return functions_; } // bool funcordinality = 14 [json_name = "funcordinality"]; inline void RangeTblEntry::clear_funcordinality() { funcordinality_ = false; } inline bool RangeTblEntry::_internal_funcordinality() const { return funcordinality_; } inline bool RangeTblEntry::funcordinality() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.funcordinality) return _internal_funcordinality(); } inline void RangeTblEntry::_internal_set_funcordinality(bool value) { funcordinality_ = value; } inline void RangeTblEntry::set_funcordinality(bool value) { _internal_set_funcordinality(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.funcordinality) } // .pg_query.TableFunc tablefunc = 15 [json_name = "tablefunc"]; inline bool RangeTblEntry::_internal_has_tablefunc() const { return this != internal_default_instance() && tablefunc_ != nullptr; } inline bool RangeTblEntry::has_tablefunc() const { return _internal_has_tablefunc(); } inline void RangeTblEntry::clear_tablefunc() { if (GetArena() == nullptr && tablefunc_ != nullptr) { delete tablefunc_; } tablefunc_ = nullptr; } inline const ::pg_query::TableFunc& RangeTblEntry::_internal_tablefunc() const { const ::pg_query::TableFunc* p = tablefunc_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TableFunc_default_instance_); } inline const ::pg_query::TableFunc& RangeTblEntry::tablefunc() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.tablefunc) return _internal_tablefunc(); } inline void RangeTblEntry::unsafe_arena_set_allocated_tablefunc( ::pg_query::TableFunc* tablefunc) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(tablefunc_); } tablefunc_ = tablefunc; if (tablefunc) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.tablefunc) } inline ::pg_query::TableFunc* RangeTblEntry::release_tablefunc() { ::pg_query::TableFunc* temp = tablefunc_; tablefunc_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TableFunc* RangeTblEntry::unsafe_arena_release_tablefunc() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.tablefunc) ::pg_query::TableFunc* temp = tablefunc_; tablefunc_ = nullptr; return temp; } inline ::pg_query::TableFunc* RangeTblEntry::_internal_mutable_tablefunc() { if (tablefunc_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TableFunc>(GetArena()); tablefunc_ = p; } return tablefunc_; } inline ::pg_query::TableFunc* RangeTblEntry::mutable_tablefunc() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.tablefunc) return _internal_mutable_tablefunc(); } inline void RangeTblEntry::set_allocated_tablefunc(::pg_query::TableFunc* tablefunc) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete tablefunc_; } if (tablefunc) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(tablefunc); if (message_arena != submessage_arena) { tablefunc = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, tablefunc, submessage_arena); } } else { } tablefunc_ = tablefunc; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.tablefunc) } // repeated .pg_query.Node values_lists = 16 [json_name = "values_lists"]; inline int RangeTblEntry::_internal_values_lists_size() const { return values_lists_.size(); } inline int RangeTblEntry::values_lists_size() const { return _internal_values_lists_size(); } inline void RangeTblEntry::clear_values_lists() { values_lists_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_values_lists(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.values_lists) return values_lists_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_values_lists() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.values_lists) return &values_lists_; } inline const ::pg_query::Node& RangeTblEntry::_internal_values_lists(int index) const { return values_lists_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::values_lists(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.values_lists) return _internal_values_lists(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_values_lists() { return values_lists_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_values_lists() { // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.values_lists) return _internal_add_values_lists(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::values_lists() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.values_lists) return values_lists_; } // string ctename = 17 [json_name = "ctename"]; inline void RangeTblEntry::clear_ctename() { ctename_.ClearToEmpty(); } inline const std::string& RangeTblEntry::ctename() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.ctename) return _internal_ctename(); } inline void RangeTblEntry::set_ctename(const std::string& value) { _internal_set_ctename(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.ctename) } inline std::string* RangeTblEntry::mutable_ctename() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.ctename) return _internal_mutable_ctename(); } inline const std::string& RangeTblEntry::_internal_ctename() const { return ctename_.Get(); } inline void RangeTblEntry::_internal_set_ctename(const std::string& value) { ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RangeTblEntry::set_ctename(std::string&& value) { ctename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeTblEntry.ctename) } inline void RangeTblEntry::set_ctename(const char* value) { GOOGLE_DCHECK(value != nullptr); ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RangeTblEntry.ctename) } inline void RangeTblEntry::set_ctename(const char* value, size_t size) { ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RangeTblEntry.ctename) } inline std::string* RangeTblEntry::_internal_mutable_ctename() { return ctename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RangeTblEntry::release_ctename() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.ctename) return ctename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RangeTblEntry::set_allocated_ctename(std::string* ctename) { if (ctename != nullptr) { } else { } ctename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ctename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.ctename) } // uint32 ctelevelsup = 18 [json_name = "ctelevelsup"]; inline void RangeTblEntry::clear_ctelevelsup() { ctelevelsup_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::_internal_ctelevelsup() const { return ctelevelsup_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::ctelevelsup() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.ctelevelsup) return _internal_ctelevelsup(); } inline void RangeTblEntry::_internal_set_ctelevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { ctelevelsup_ = value; } inline void RangeTblEntry::set_ctelevelsup(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_ctelevelsup(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.ctelevelsup) } // bool self_reference = 19 [json_name = "self_reference"]; inline void RangeTblEntry::clear_self_reference() { self_reference_ = false; } inline bool RangeTblEntry::_internal_self_reference() const { return self_reference_; } inline bool RangeTblEntry::self_reference() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.self_reference) return _internal_self_reference(); } inline void RangeTblEntry::_internal_set_self_reference(bool value) { self_reference_ = value; } inline void RangeTblEntry::set_self_reference(bool value) { _internal_set_self_reference(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.self_reference) } // repeated .pg_query.Node coltypes = 20 [json_name = "coltypes"]; inline int RangeTblEntry::_internal_coltypes_size() const { return coltypes_.size(); } inline int RangeTblEntry::coltypes_size() const { return _internal_coltypes_size(); } inline void RangeTblEntry::clear_coltypes() { coltypes_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_coltypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.coltypes) return coltypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_coltypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.coltypes) return &coltypes_; } inline const ::pg_query::Node& RangeTblEntry::_internal_coltypes(int index) const { return coltypes_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::coltypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.coltypes) return _internal_coltypes(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_coltypes() { return coltypes_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_coltypes() { // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.coltypes) return _internal_add_coltypes(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::coltypes() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.coltypes) return coltypes_; } // repeated .pg_query.Node coltypmods = 21 [json_name = "coltypmods"]; inline int RangeTblEntry::_internal_coltypmods_size() const { return coltypmods_.size(); } inline int RangeTblEntry::coltypmods_size() const { return _internal_coltypmods_size(); } inline void RangeTblEntry::clear_coltypmods() { coltypmods_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_coltypmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.coltypmods) return coltypmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_coltypmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.coltypmods) return &coltypmods_; } inline const ::pg_query::Node& RangeTblEntry::_internal_coltypmods(int index) const { return coltypmods_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::coltypmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.coltypmods) return _internal_coltypmods(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_coltypmods() { return coltypmods_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_coltypmods() { // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.coltypmods) return _internal_add_coltypmods(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::coltypmods() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.coltypmods) return coltypmods_; } // repeated .pg_query.Node colcollations = 22 [json_name = "colcollations"]; inline int RangeTblEntry::_internal_colcollations_size() const { return colcollations_.size(); } inline int RangeTblEntry::colcollations_size() const { return _internal_colcollations_size(); } inline void RangeTblEntry::clear_colcollations() { colcollations_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_colcollations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.colcollations) return colcollations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_colcollations() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.colcollations) return &colcollations_; } inline const ::pg_query::Node& RangeTblEntry::_internal_colcollations(int index) const { return colcollations_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::colcollations(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.colcollations) return _internal_colcollations(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_colcollations() { return colcollations_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_colcollations() { // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.colcollations) return _internal_add_colcollations(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::colcollations() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.colcollations) return colcollations_; } // string enrname = 23 [json_name = "enrname"]; inline void RangeTblEntry::clear_enrname() { enrname_.ClearToEmpty(); } inline const std::string& RangeTblEntry::enrname() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.enrname) return _internal_enrname(); } inline void RangeTblEntry::set_enrname(const std::string& value) { _internal_set_enrname(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.enrname) } inline std::string* RangeTblEntry::mutable_enrname() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.enrname) return _internal_mutable_enrname(); } inline const std::string& RangeTblEntry::_internal_enrname() const { return enrname_.Get(); } inline void RangeTblEntry::_internal_set_enrname(const std::string& value) { enrname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RangeTblEntry::set_enrname(std::string&& value) { enrname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RangeTblEntry.enrname) } inline void RangeTblEntry::set_enrname(const char* value) { GOOGLE_DCHECK(value != nullptr); enrname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RangeTblEntry.enrname) } inline void RangeTblEntry::set_enrname(const char* value, size_t size) { enrname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RangeTblEntry.enrname) } inline std::string* RangeTblEntry::_internal_mutable_enrname() { return enrname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RangeTblEntry::release_enrname() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.enrname) return enrname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RangeTblEntry::set_allocated_enrname(std::string* enrname) { if (enrname != nullptr) { } else { } enrname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), enrname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.enrname) } // double enrtuples = 24 [json_name = "enrtuples"]; inline void RangeTblEntry::clear_enrtuples() { enrtuples_ = 0; } inline double RangeTblEntry::_internal_enrtuples() const { return enrtuples_; } inline double RangeTblEntry::enrtuples() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.enrtuples) return _internal_enrtuples(); } inline void RangeTblEntry::_internal_set_enrtuples(double value) { enrtuples_ = value; } inline void RangeTblEntry::set_enrtuples(double value) { _internal_set_enrtuples(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.enrtuples) } // .pg_query.Alias alias = 25 [json_name = "alias"]; inline bool RangeTblEntry::_internal_has_alias() const { return this != internal_default_instance() && alias_ != nullptr; } inline bool RangeTblEntry::has_alias() const { return _internal_has_alias(); } inline void RangeTblEntry::clear_alias() { if (GetArena() == nullptr && alias_ != nullptr) { delete alias_; } alias_ = nullptr; } inline const ::pg_query::Alias& RangeTblEntry::_internal_alias() const { const ::pg_query::Alias* p = alias_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeTblEntry::alias() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.alias) return _internal_alias(); } inline void RangeTblEntry::unsafe_arena_set_allocated_alias( ::pg_query::Alias* alias) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(alias_); } alias_ = alias; if (alias) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.alias) } inline ::pg_query::Alias* RangeTblEntry::release_alias() { ::pg_query::Alias* temp = alias_; alias_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Alias* RangeTblEntry::unsafe_arena_release_alias() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.alias) ::pg_query::Alias* temp = alias_; alias_ = nullptr; return temp; } inline ::pg_query::Alias* RangeTblEntry::_internal_mutable_alias() { if (alias_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); alias_ = p; } return alias_; } inline ::pg_query::Alias* RangeTblEntry::mutable_alias() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.alias) return _internal_mutable_alias(); } inline void RangeTblEntry::set_allocated_alias(::pg_query::Alias* alias) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete alias_; } if (alias) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(alias); if (message_arena != submessage_arena) { alias = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, alias, submessage_arena); } } else { } alias_ = alias; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.alias) } // .pg_query.Alias eref = 26 [json_name = "eref"]; inline bool RangeTblEntry::_internal_has_eref() const { return this != internal_default_instance() && eref_ != nullptr; } inline bool RangeTblEntry::has_eref() const { return _internal_has_eref(); } inline void RangeTblEntry::clear_eref() { if (GetArena() == nullptr && eref_ != nullptr) { delete eref_; } eref_ = nullptr; } inline const ::pg_query::Alias& RangeTblEntry::_internal_eref() const { const ::pg_query::Alias* p = eref_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Alias_default_instance_); } inline const ::pg_query::Alias& RangeTblEntry::eref() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.eref) return _internal_eref(); } inline void RangeTblEntry::unsafe_arena_set_allocated_eref( ::pg_query::Alias* eref) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(eref_); } eref_ = eref; if (eref) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblEntry.eref) } inline ::pg_query::Alias* RangeTblEntry::release_eref() { ::pg_query::Alias* temp = eref_; eref_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Alias* RangeTblEntry::unsafe_arena_release_eref() { // @@protoc_insertion_point(field_release:pg_query.RangeTblEntry.eref) ::pg_query::Alias* temp = eref_; eref_ = nullptr; return temp; } inline ::pg_query::Alias* RangeTblEntry::_internal_mutable_eref() { if (eref_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Alias>(GetArena()); eref_ = p; } return eref_; } inline ::pg_query::Alias* RangeTblEntry::mutable_eref() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.eref) return _internal_mutable_eref(); } inline void RangeTblEntry::set_allocated_eref(::pg_query::Alias* eref) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete eref_; } if (eref) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(eref); if (message_arena != submessage_arena) { eref = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, eref, submessage_arena); } } else { } eref_ = eref; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblEntry.eref) } // bool lateral = 27 [json_name = "lateral"]; inline void RangeTblEntry::clear_lateral() { lateral_ = false; } inline bool RangeTblEntry::_internal_lateral() const { return lateral_; } inline bool RangeTblEntry::lateral() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.lateral) return _internal_lateral(); } inline void RangeTblEntry::_internal_set_lateral(bool value) { lateral_ = value; } inline void RangeTblEntry::set_lateral(bool value) { _internal_set_lateral(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.lateral) } // bool inh = 28 [json_name = "inh"]; inline void RangeTblEntry::clear_inh() { inh_ = false; } inline bool RangeTblEntry::_internal_inh() const { return inh_; } inline bool RangeTblEntry::inh() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.inh) return _internal_inh(); } inline void RangeTblEntry::_internal_set_inh(bool value) { inh_ = value; } inline void RangeTblEntry::set_inh(bool value) { _internal_set_inh(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.inh) } // bool in_from_cl = 29 [json_name = "inFromCl"]; inline void RangeTblEntry::clear_in_from_cl() { in_from_cl_ = false; } inline bool RangeTblEntry::_internal_in_from_cl() const { return in_from_cl_; } inline bool RangeTblEntry::in_from_cl() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.in_from_cl) return _internal_in_from_cl(); } inline void RangeTblEntry::_internal_set_in_from_cl(bool value) { in_from_cl_ = value; } inline void RangeTblEntry::set_in_from_cl(bool value) { _internal_set_in_from_cl(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.in_from_cl) } // uint32 required_perms = 30 [json_name = "requiredPerms"]; inline void RangeTblEntry::clear_required_perms() { required_perms_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::_internal_required_perms() const { return required_perms_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::required_perms() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.required_perms) return _internal_required_perms(); } inline void RangeTblEntry::_internal_set_required_perms(::PROTOBUF_NAMESPACE_ID::uint32 value) { required_perms_ = value; } inline void RangeTblEntry::set_required_perms(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_required_perms(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.required_perms) } // uint32 check_as_user = 31 [json_name = "checkAsUser"]; inline void RangeTblEntry::clear_check_as_user() { check_as_user_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::_internal_check_as_user() const { return check_as_user_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RangeTblEntry::check_as_user() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.check_as_user) return _internal_check_as_user(); } inline void RangeTblEntry::_internal_set_check_as_user(::PROTOBUF_NAMESPACE_ID::uint32 value) { check_as_user_ = value; } inline void RangeTblEntry::set_check_as_user(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_check_as_user(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblEntry.check_as_user) } // repeated .pg_query.Node security_quals = 32 [json_name = "securityQuals"]; inline int RangeTblEntry::_internal_security_quals_size() const { return security_quals_.size(); } inline int RangeTblEntry::security_quals_size() const { return _internal_security_quals_size(); } inline void RangeTblEntry::clear_security_quals() { security_quals_.Clear(); } inline ::pg_query::Node* RangeTblEntry::mutable_security_quals(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblEntry.security_quals) return security_quals_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblEntry::mutable_security_quals() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblEntry.security_quals) return &security_quals_; } inline const ::pg_query::Node& RangeTblEntry::_internal_security_quals(int index) const { return security_quals_.Get(index); } inline const ::pg_query::Node& RangeTblEntry::security_quals(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblEntry.security_quals) return _internal_security_quals(index); } inline ::pg_query::Node* RangeTblEntry::_internal_add_security_quals() { return security_quals_.Add(); } inline ::pg_query::Node* RangeTblEntry::add_security_quals() { // @@protoc_insertion_point(field_add:pg_query.RangeTblEntry.security_quals) return _internal_add_security_quals(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblEntry::security_quals() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblEntry.security_quals) return security_quals_; } // ------------------------------------------------------------------- // RangeTblFunction // .pg_query.Node funcexpr = 1 [json_name = "funcexpr"]; inline bool RangeTblFunction::_internal_has_funcexpr() const { return this != internal_default_instance() && funcexpr_ != nullptr; } inline bool RangeTblFunction::has_funcexpr() const { return _internal_has_funcexpr(); } inline void RangeTblFunction::clear_funcexpr() { if (GetArena() == nullptr && funcexpr_ != nullptr) { delete funcexpr_; } funcexpr_ = nullptr; } inline const ::pg_query::Node& RangeTblFunction::_internal_funcexpr() const { const ::pg_query::Node* p = funcexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& RangeTblFunction::funcexpr() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funcexpr) return _internal_funcexpr(); } inline void RangeTblFunction::unsafe_arena_set_allocated_funcexpr( ::pg_query::Node* funcexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(funcexpr_); } funcexpr_ = funcexpr; if (funcexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.RangeTblFunction.funcexpr) } inline ::pg_query::Node* RangeTblFunction::release_funcexpr() { ::pg_query::Node* temp = funcexpr_; funcexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* RangeTblFunction::unsafe_arena_release_funcexpr() { // @@protoc_insertion_point(field_release:pg_query.RangeTblFunction.funcexpr) ::pg_query::Node* temp = funcexpr_; funcexpr_ = nullptr; return temp; } inline ::pg_query::Node* RangeTblFunction::_internal_mutable_funcexpr() { if (funcexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); funcexpr_ = p; } return funcexpr_; } inline ::pg_query::Node* RangeTblFunction::mutable_funcexpr() { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funcexpr) return _internal_mutable_funcexpr(); } inline void RangeTblFunction::set_allocated_funcexpr(::pg_query::Node* funcexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete funcexpr_; } if (funcexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(funcexpr); if (message_arena != submessage_arena) { funcexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, funcexpr, submessage_arena); } } else { } funcexpr_ = funcexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.RangeTblFunction.funcexpr) } // int32 funccolcount = 2 [json_name = "funccolcount"]; inline void RangeTblFunction::clear_funccolcount() { funccolcount_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblFunction::_internal_funccolcount() const { return funccolcount_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RangeTblFunction::funccolcount() const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolcount) return _internal_funccolcount(); } inline void RangeTblFunction::_internal_set_funccolcount(::PROTOBUF_NAMESPACE_ID::int32 value) { funccolcount_ = value; } inline void RangeTblFunction::set_funccolcount(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_funccolcount(value); // @@protoc_insertion_point(field_set:pg_query.RangeTblFunction.funccolcount) } // repeated .pg_query.Node funccolnames = 3 [json_name = "funccolnames"]; inline int RangeTblFunction::_internal_funccolnames_size() const { return funccolnames_.size(); } inline int RangeTblFunction::funccolnames_size() const { return _internal_funccolnames_size(); } inline void RangeTblFunction::clear_funccolnames() { funccolnames_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccolnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccolnames) return funccolnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblFunction::mutable_funccolnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccolnames) return &funccolnames_; } inline const ::pg_query::Node& RangeTblFunction::_internal_funccolnames(int index) const { return funccolnames_.Get(index); } inline const ::pg_query::Node& RangeTblFunction::funccolnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolnames) return _internal_funccolnames(index); } inline ::pg_query::Node* RangeTblFunction::_internal_add_funccolnames() { return funccolnames_.Add(); } inline ::pg_query::Node* RangeTblFunction::add_funccolnames() { // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccolnames) return _internal_add_funccolnames(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblFunction::funccolnames() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccolnames) return funccolnames_; } // repeated .pg_query.Node funccoltypes = 4 [json_name = "funccoltypes"]; inline int RangeTblFunction::_internal_funccoltypes_size() const { return funccoltypes_.size(); } inline int RangeTblFunction::funccoltypes_size() const { return _internal_funccoltypes_size(); } inline void RangeTblFunction::clear_funccoltypes() { funccoltypes_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccoltypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccoltypes) return funccoltypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblFunction::mutable_funccoltypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccoltypes) return &funccoltypes_; } inline const ::pg_query::Node& RangeTblFunction::_internal_funccoltypes(int index) const { return funccoltypes_.Get(index); } inline const ::pg_query::Node& RangeTblFunction::funccoltypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccoltypes) return _internal_funccoltypes(index); } inline ::pg_query::Node* RangeTblFunction::_internal_add_funccoltypes() { return funccoltypes_.Add(); } inline ::pg_query::Node* RangeTblFunction::add_funccoltypes() { // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccoltypes) return _internal_add_funccoltypes(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblFunction::funccoltypes() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccoltypes) return funccoltypes_; } // repeated .pg_query.Node funccoltypmods = 5 [json_name = "funccoltypmods"]; inline int RangeTblFunction::_internal_funccoltypmods_size() const { return funccoltypmods_.size(); } inline int RangeTblFunction::funccoltypmods_size() const { return _internal_funccoltypmods_size(); } inline void RangeTblFunction::clear_funccoltypmods() { funccoltypmods_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccoltypmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccoltypmods) return funccoltypmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblFunction::mutable_funccoltypmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccoltypmods) return &funccoltypmods_; } inline const ::pg_query::Node& RangeTblFunction::_internal_funccoltypmods(int index) const { return funccoltypmods_.Get(index); } inline const ::pg_query::Node& RangeTblFunction::funccoltypmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccoltypmods) return _internal_funccoltypmods(index); } inline ::pg_query::Node* RangeTblFunction::_internal_add_funccoltypmods() { return funccoltypmods_.Add(); } inline ::pg_query::Node* RangeTblFunction::add_funccoltypmods() { // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccoltypmods) return _internal_add_funccoltypmods(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblFunction::funccoltypmods() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccoltypmods) return funccoltypmods_; } // repeated .pg_query.Node funccolcollations = 6 [json_name = "funccolcollations"]; inline int RangeTblFunction::_internal_funccolcollations_size() const { return funccolcollations_.size(); } inline int RangeTblFunction::funccolcollations_size() const { return _internal_funccolcollations_size(); } inline void RangeTblFunction::clear_funccolcollations() { funccolcollations_.Clear(); } inline ::pg_query::Node* RangeTblFunction::mutable_funccolcollations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.RangeTblFunction.funccolcollations) return funccolcollations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* RangeTblFunction::mutable_funccolcollations() { // @@protoc_insertion_point(field_mutable_list:pg_query.RangeTblFunction.funccolcollations) return &funccolcollations_; } inline const ::pg_query::Node& RangeTblFunction::_internal_funccolcollations(int index) const { return funccolcollations_.Get(index); } inline const ::pg_query::Node& RangeTblFunction::funccolcollations(int index) const { // @@protoc_insertion_point(field_get:pg_query.RangeTblFunction.funccolcollations) return _internal_funccolcollations(index); } inline ::pg_query::Node* RangeTblFunction::_internal_add_funccolcollations() { return funccolcollations_.Add(); } inline ::pg_query::Node* RangeTblFunction::add_funccolcollations() { // @@protoc_insertion_point(field_add:pg_query.RangeTblFunction.funccolcollations) return _internal_add_funccolcollations(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& RangeTblFunction::funccolcollations() const { // @@protoc_insertion_point(field_list:pg_query.RangeTblFunction.funccolcollations) return funccolcollations_; } // ------------------------------------------------------------------- // TableSampleClause // uint32 tsmhandler = 1 [json_name = "tsmhandler"]; inline void TableSampleClause::clear_tsmhandler() { tsmhandler_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 TableSampleClause::_internal_tsmhandler() const { return tsmhandler_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 TableSampleClause::tsmhandler() const { // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.tsmhandler) return _internal_tsmhandler(); } inline void TableSampleClause::_internal_set_tsmhandler(::PROTOBUF_NAMESPACE_ID::uint32 value) { tsmhandler_ = value; } inline void TableSampleClause::set_tsmhandler(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_tsmhandler(value); // @@protoc_insertion_point(field_set:pg_query.TableSampleClause.tsmhandler) } // repeated .pg_query.Node args = 2 [json_name = "args"]; inline int TableSampleClause::_internal_args_size() const { return args_.size(); } inline int TableSampleClause::args_size() const { return _internal_args_size(); } inline void TableSampleClause::clear_args() { args_.Clear(); } inline ::pg_query::Node* TableSampleClause::mutable_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.TableSampleClause.args) return args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* TableSampleClause::mutable_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.TableSampleClause.args) return &args_; } inline const ::pg_query::Node& TableSampleClause::_internal_args(int index) const { return args_.Get(index); } inline const ::pg_query::Node& TableSampleClause::args(int index) const { // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.args) return _internal_args(index); } inline ::pg_query::Node* TableSampleClause::_internal_add_args() { return args_.Add(); } inline ::pg_query::Node* TableSampleClause::add_args() { // @@protoc_insertion_point(field_add:pg_query.TableSampleClause.args) return _internal_add_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& TableSampleClause::args() const { // @@protoc_insertion_point(field_list:pg_query.TableSampleClause.args) return args_; } // .pg_query.Node repeatable = 3 [json_name = "repeatable"]; inline bool TableSampleClause::_internal_has_repeatable() const { return this != internal_default_instance() && repeatable_ != nullptr; } inline bool TableSampleClause::has_repeatable() const { return _internal_has_repeatable(); } inline void TableSampleClause::clear_repeatable() { if (GetArena() == nullptr && repeatable_ != nullptr) { delete repeatable_; } repeatable_ = nullptr; } inline const ::pg_query::Node& TableSampleClause::_internal_repeatable() const { const ::pg_query::Node* p = repeatable_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& TableSampleClause::repeatable() const { // @@protoc_insertion_point(field_get:pg_query.TableSampleClause.repeatable) return _internal_repeatable(); } inline void TableSampleClause::unsafe_arena_set_allocated_repeatable( ::pg_query::Node* repeatable) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(repeatable_); } repeatable_ = repeatable; if (repeatable) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableSampleClause.repeatable) } inline ::pg_query::Node* TableSampleClause::release_repeatable() { ::pg_query::Node* temp = repeatable_; repeatable_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* TableSampleClause::unsafe_arena_release_repeatable() { // @@protoc_insertion_point(field_release:pg_query.TableSampleClause.repeatable) ::pg_query::Node* temp = repeatable_; repeatable_ = nullptr; return temp; } inline ::pg_query::Node* TableSampleClause::_internal_mutable_repeatable() { if (repeatable_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); repeatable_ = p; } return repeatable_; } inline ::pg_query::Node* TableSampleClause::mutable_repeatable() { // @@protoc_insertion_point(field_mutable:pg_query.TableSampleClause.repeatable) return _internal_mutable_repeatable(); } inline void TableSampleClause::set_allocated_repeatable(::pg_query::Node* repeatable) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete repeatable_; } if (repeatable) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(repeatable); if (message_arena != submessage_arena) { repeatable = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, repeatable, submessage_arena); } } else { } repeatable_ = repeatable; // @@protoc_insertion_point(field_set_allocated:pg_query.TableSampleClause.repeatable) } // ------------------------------------------------------------------- // WithCheckOption // .pg_query.WCOKind kind = 1 [json_name = "kind"]; inline void WithCheckOption::clear_kind() { kind_ = 0; } inline ::pg_query::WCOKind WithCheckOption::_internal_kind() const { return static_cast< ::pg_query::WCOKind >(kind_); } inline ::pg_query::WCOKind WithCheckOption::kind() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.kind) return _internal_kind(); } inline void WithCheckOption::_internal_set_kind(::pg_query::WCOKind value) { kind_ = value; } inline void WithCheckOption::set_kind(::pg_query::WCOKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.kind) } // string relname = 2 [json_name = "relname"]; inline void WithCheckOption::clear_relname() { relname_.ClearToEmpty(); } inline const std::string& WithCheckOption::relname() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.relname) return _internal_relname(); } inline void WithCheckOption::set_relname(const std::string& value) { _internal_set_relname(value); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.relname) } inline std::string* WithCheckOption::mutable_relname() { // @@protoc_insertion_point(field_mutable:pg_query.WithCheckOption.relname) return _internal_mutable_relname(); } inline const std::string& WithCheckOption::_internal_relname() const { return relname_.Get(); } inline void WithCheckOption::_internal_set_relname(const std::string& value) { relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void WithCheckOption::set_relname(std::string&& value) { relname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.WithCheckOption.relname) } inline void WithCheckOption::set_relname(const char* value) { GOOGLE_DCHECK(value != nullptr); relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.WithCheckOption.relname) } inline void WithCheckOption::set_relname(const char* value, size_t size) { relname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.WithCheckOption.relname) } inline std::string* WithCheckOption::_internal_mutable_relname() { return relname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* WithCheckOption::release_relname() { // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.relname) return relname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void WithCheckOption::set_allocated_relname(std::string* relname) { if (relname != nullptr) { } else { } relname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), relname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.WithCheckOption.relname) } // string polname = 3 [json_name = "polname"]; inline void WithCheckOption::clear_polname() { polname_.ClearToEmpty(); } inline const std::string& WithCheckOption::polname() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.polname) return _internal_polname(); } inline void WithCheckOption::set_polname(const std::string& value) { _internal_set_polname(value); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.polname) } inline std::string* WithCheckOption::mutable_polname() { // @@protoc_insertion_point(field_mutable:pg_query.WithCheckOption.polname) return _internal_mutable_polname(); } inline const std::string& WithCheckOption::_internal_polname() const { return polname_.Get(); } inline void WithCheckOption::_internal_set_polname(const std::string& value) { polname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void WithCheckOption::set_polname(std::string&& value) { polname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.WithCheckOption.polname) } inline void WithCheckOption::set_polname(const char* value) { GOOGLE_DCHECK(value != nullptr); polname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.WithCheckOption.polname) } inline void WithCheckOption::set_polname(const char* value, size_t size) { polname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.WithCheckOption.polname) } inline std::string* WithCheckOption::_internal_mutable_polname() { return polname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* WithCheckOption::release_polname() { // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.polname) return polname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void WithCheckOption::set_allocated_polname(std::string* polname) { if (polname != nullptr) { } else { } polname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), polname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.WithCheckOption.polname) } // .pg_query.Node qual = 4 [json_name = "qual"]; inline bool WithCheckOption::_internal_has_qual() const { return this != internal_default_instance() && qual_ != nullptr; } inline bool WithCheckOption::has_qual() const { return _internal_has_qual(); } inline void WithCheckOption::clear_qual() { if (GetArena() == nullptr && qual_ != nullptr) { delete qual_; } qual_ = nullptr; } inline const ::pg_query::Node& WithCheckOption::_internal_qual() const { const ::pg_query::Node* p = qual_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WithCheckOption::qual() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.qual) return _internal_qual(); } inline void WithCheckOption::unsafe_arena_set_allocated_qual( ::pg_query::Node* qual) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(qual_); } qual_ = qual; if (qual) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WithCheckOption.qual) } inline ::pg_query::Node* WithCheckOption::release_qual() { ::pg_query::Node* temp = qual_; qual_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* WithCheckOption::unsafe_arena_release_qual() { // @@protoc_insertion_point(field_release:pg_query.WithCheckOption.qual) ::pg_query::Node* temp = qual_; qual_ = nullptr; return temp; } inline ::pg_query::Node* WithCheckOption::_internal_mutable_qual() { if (qual_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); qual_ = p; } return qual_; } inline ::pg_query::Node* WithCheckOption::mutable_qual() { // @@protoc_insertion_point(field_mutable:pg_query.WithCheckOption.qual) return _internal_mutable_qual(); } inline void WithCheckOption::set_allocated_qual(::pg_query::Node* qual) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete qual_; } if (qual) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(qual); if (message_arena != submessage_arena) { qual = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, qual, submessage_arena); } } else { } qual_ = qual; // @@protoc_insertion_point(field_set_allocated:pg_query.WithCheckOption.qual) } // bool cascaded = 5 [json_name = "cascaded"]; inline void WithCheckOption::clear_cascaded() { cascaded_ = false; } inline bool WithCheckOption::_internal_cascaded() const { return cascaded_; } inline bool WithCheckOption::cascaded() const { // @@protoc_insertion_point(field_get:pg_query.WithCheckOption.cascaded) return _internal_cascaded(); } inline void WithCheckOption::_internal_set_cascaded(bool value) { cascaded_ = value; } inline void WithCheckOption::set_cascaded(bool value) { _internal_set_cascaded(value); // @@protoc_insertion_point(field_set:pg_query.WithCheckOption.cascaded) } // ------------------------------------------------------------------- // SortGroupClause // uint32 tle_sort_group_ref = 1 [json_name = "tleSortGroupRef"]; inline void SortGroupClause::clear_tle_sort_group_ref() { tle_sort_group_ref_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::_internal_tle_sort_group_ref() const { return tle_sort_group_ref_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::tle_sort_group_ref() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.tle_sort_group_ref) return _internal_tle_sort_group_ref(); } inline void SortGroupClause::_internal_set_tle_sort_group_ref(::PROTOBUF_NAMESPACE_ID::uint32 value) { tle_sort_group_ref_ = value; } inline void SortGroupClause::set_tle_sort_group_ref(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_tle_sort_group_ref(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.tle_sort_group_ref) } // uint32 eqop = 2 [json_name = "eqop"]; inline void SortGroupClause::clear_eqop() { eqop_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::_internal_eqop() const { return eqop_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::eqop() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.eqop) return _internal_eqop(); } inline void SortGroupClause::_internal_set_eqop(::PROTOBUF_NAMESPACE_ID::uint32 value) { eqop_ = value; } inline void SortGroupClause::set_eqop(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_eqop(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.eqop) } // uint32 sortop = 3 [json_name = "sortop"]; inline void SortGroupClause::clear_sortop() { sortop_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::_internal_sortop() const { return sortop_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 SortGroupClause::sortop() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.sortop) return _internal_sortop(); } inline void SortGroupClause::_internal_set_sortop(::PROTOBUF_NAMESPACE_ID::uint32 value) { sortop_ = value; } inline void SortGroupClause::set_sortop(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_sortop(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.sortop) } // bool nulls_first = 4 [json_name = "nulls_first"]; inline void SortGroupClause::clear_nulls_first() { nulls_first_ = false; } inline bool SortGroupClause::_internal_nulls_first() const { return nulls_first_; } inline bool SortGroupClause::nulls_first() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.nulls_first) return _internal_nulls_first(); } inline void SortGroupClause::_internal_set_nulls_first(bool value) { nulls_first_ = value; } inline void SortGroupClause::set_nulls_first(bool value) { _internal_set_nulls_first(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.nulls_first) } // bool hashable = 5 [json_name = "hashable"]; inline void SortGroupClause::clear_hashable() { hashable_ = false; } inline bool SortGroupClause::_internal_hashable() const { return hashable_; } inline bool SortGroupClause::hashable() const { // @@protoc_insertion_point(field_get:pg_query.SortGroupClause.hashable) return _internal_hashable(); } inline void SortGroupClause::_internal_set_hashable(bool value) { hashable_ = value; } inline void SortGroupClause::set_hashable(bool value) { _internal_set_hashable(value); // @@protoc_insertion_point(field_set:pg_query.SortGroupClause.hashable) } // ------------------------------------------------------------------- // GroupingSet // .pg_query.GroupingSetKind kind = 1 [json_name = "kind"]; inline void GroupingSet::clear_kind() { kind_ = 0; } inline ::pg_query::GroupingSetKind GroupingSet::_internal_kind() const { return static_cast< ::pg_query::GroupingSetKind >(kind_); } inline ::pg_query::GroupingSetKind GroupingSet::kind() const { // @@protoc_insertion_point(field_get:pg_query.GroupingSet.kind) return _internal_kind(); } inline void GroupingSet::_internal_set_kind(::pg_query::GroupingSetKind value) { kind_ = value; } inline void GroupingSet::set_kind(::pg_query::GroupingSetKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.GroupingSet.kind) } // repeated .pg_query.Node content = 2 [json_name = "content"]; inline int GroupingSet::_internal_content_size() const { return content_.size(); } inline int GroupingSet::content_size() const { return _internal_content_size(); } inline void GroupingSet::clear_content() { content_.Clear(); } inline ::pg_query::Node* GroupingSet::mutable_content(int index) { // @@protoc_insertion_point(field_mutable:pg_query.GroupingSet.content) return content_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* GroupingSet::mutable_content() { // @@protoc_insertion_point(field_mutable_list:pg_query.GroupingSet.content) return &content_; } inline const ::pg_query::Node& GroupingSet::_internal_content(int index) const { return content_.Get(index); } inline const ::pg_query::Node& GroupingSet::content(int index) const { // @@protoc_insertion_point(field_get:pg_query.GroupingSet.content) return _internal_content(index); } inline ::pg_query::Node* GroupingSet::_internal_add_content() { return content_.Add(); } inline ::pg_query::Node* GroupingSet::add_content() { // @@protoc_insertion_point(field_add:pg_query.GroupingSet.content) return _internal_add_content(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& GroupingSet::content() const { // @@protoc_insertion_point(field_list:pg_query.GroupingSet.content) return content_; } // int32 location = 3 [json_name = "location"]; inline void GroupingSet::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 GroupingSet::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 GroupingSet::location() const { // @@protoc_insertion_point(field_get:pg_query.GroupingSet.location) return _internal_location(); } inline void GroupingSet::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void GroupingSet::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.GroupingSet.location) } // ------------------------------------------------------------------- // WindowClause // string name = 1 [json_name = "name"]; inline void WindowClause::clear_name() { name_.ClearToEmpty(); } inline const std::string& WindowClause::name() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.name) return _internal_name(); } inline void WindowClause::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.name) } inline std::string* WindowClause::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.name) return _internal_mutable_name(); } inline const std::string& WindowClause::_internal_name() const { return name_.Get(); } inline void WindowClause::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void WindowClause::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.WindowClause.name) } inline void WindowClause::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.WindowClause.name) } inline void WindowClause::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.WindowClause.name) } inline std::string* WindowClause::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* WindowClause::release_name() { // @@protoc_insertion_point(field_release:pg_query.WindowClause.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void WindowClause::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.name) } // string refname = 2 [json_name = "refname"]; inline void WindowClause::clear_refname() { refname_.ClearToEmpty(); } inline const std::string& WindowClause::refname() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.refname) return _internal_refname(); } inline void WindowClause::set_refname(const std::string& value) { _internal_set_refname(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.refname) } inline std::string* WindowClause::mutable_refname() { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.refname) return _internal_mutable_refname(); } inline const std::string& WindowClause::_internal_refname() const { return refname_.Get(); } inline void WindowClause::_internal_set_refname(const std::string& value) { refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void WindowClause::set_refname(std::string&& value) { refname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.WindowClause.refname) } inline void WindowClause::set_refname(const char* value) { GOOGLE_DCHECK(value != nullptr); refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.WindowClause.refname) } inline void WindowClause::set_refname(const char* value, size_t size) { refname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.WindowClause.refname) } inline std::string* WindowClause::_internal_mutable_refname() { return refname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* WindowClause::release_refname() { // @@protoc_insertion_point(field_release:pg_query.WindowClause.refname) return refname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void WindowClause::set_allocated_refname(std::string* refname) { if (refname != nullptr) { } else { } refname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), refname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.refname) } // repeated .pg_query.Node partition_clause = 3 [json_name = "partitionClause"]; inline int WindowClause::_internal_partition_clause_size() const { return partition_clause_.size(); } inline int WindowClause::partition_clause_size() const { return _internal_partition_clause_size(); } inline void WindowClause::clear_partition_clause() { partition_clause_.Clear(); } inline ::pg_query::Node* WindowClause::mutable_partition_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.partition_clause) return partition_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowClause::mutable_partition_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowClause.partition_clause) return &partition_clause_; } inline const ::pg_query::Node& WindowClause::_internal_partition_clause(int index) const { return partition_clause_.Get(index); } inline const ::pg_query::Node& WindowClause::partition_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.partition_clause) return _internal_partition_clause(index); } inline ::pg_query::Node* WindowClause::_internal_add_partition_clause() { return partition_clause_.Add(); } inline ::pg_query::Node* WindowClause::add_partition_clause() { // @@protoc_insertion_point(field_add:pg_query.WindowClause.partition_clause) return _internal_add_partition_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowClause::partition_clause() const { // @@protoc_insertion_point(field_list:pg_query.WindowClause.partition_clause) return partition_clause_; } // repeated .pg_query.Node order_clause = 4 [json_name = "orderClause"]; inline int WindowClause::_internal_order_clause_size() const { return order_clause_.size(); } inline int WindowClause::order_clause_size() const { return _internal_order_clause_size(); } inline void WindowClause::clear_order_clause() { order_clause_.Clear(); } inline ::pg_query::Node* WindowClause::mutable_order_clause(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.order_clause) return order_clause_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WindowClause::mutable_order_clause() { // @@protoc_insertion_point(field_mutable_list:pg_query.WindowClause.order_clause) return &order_clause_; } inline const ::pg_query::Node& WindowClause::_internal_order_clause(int index) const { return order_clause_.Get(index); } inline const ::pg_query::Node& WindowClause::order_clause(int index) const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.order_clause) return _internal_order_clause(index); } inline ::pg_query::Node* WindowClause::_internal_add_order_clause() { return order_clause_.Add(); } inline ::pg_query::Node* WindowClause::add_order_clause() { // @@protoc_insertion_point(field_add:pg_query.WindowClause.order_clause) return _internal_add_order_clause(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WindowClause::order_clause() const { // @@protoc_insertion_point(field_list:pg_query.WindowClause.order_clause) return order_clause_; } // int32 frame_options = 5 [json_name = "frameOptions"]; inline void WindowClause::clear_frame_options() { frame_options_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 WindowClause::_internal_frame_options() const { return frame_options_; } inline ::PROTOBUF_NAMESPACE_ID::int32 WindowClause::frame_options() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.frame_options) return _internal_frame_options(); } inline void WindowClause::_internal_set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value) { frame_options_ = value; } inline void WindowClause::set_frame_options(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_frame_options(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.frame_options) } // .pg_query.Node start_offset = 6 [json_name = "startOffset"]; inline bool WindowClause::_internal_has_start_offset() const { return this != internal_default_instance() && start_offset_ != nullptr; } inline bool WindowClause::has_start_offset() const { return _internal_has_start_offset(); } inline void WindowClause::clear_start_offset() { if (GetArena() == nullptr && start_offset_ != nullptr) { delete start_offset_; } start_offset_ = nullptr; } inline const ::pg_query::Node& WindowClause::_internal_start_offset() const { const ::pg_query::Node* p = start_offset_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowClause::start_offset() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.start_offset) return _internal_start_offset(); } inline void WindowClause::unsafe_arena_set_allocated_start_offset( ::pg_query::Node* start_offset) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(start_offset_); } start_offset_ = start_offset; if (start_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowClause.start_offset) } inline ::pg_query::Node* WindowClause::release_start_offset() { ::pg_query::Node* temp = start_offset_; start_offset_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* WindowClause::unsafe_arena_release_start_offset() { // @@protoc_insertion_point(field_release:pg_query.WindowClause.start_offset) ::pg_query::Node* temp = start_offset_; start_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowClause::_internal_mutable_start_offset() { if (start_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); start_offset_ = p; } return start_offset_; } inline ::pg_query::Node* WindowClause::mutable_start_offset() { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.start_offset) return _internal_mutable_start_offset(); } inline void WindowClause::set_allocated_start_offset(::pg_query::Node* start_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete start_offset_; } if (start_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(start_offset); if (message_arena != submessage_arena) { start_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, start_offset, submessage_arena); } } else { } start_offset_ = start_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.start_offset) } // .pg_query.Node end_offset = 7 [json_name = "endOffset"]; inline bool WindowClause::_internal_has_end_offset() const { return this != internal_default_instance() && end_offset_ != nullptr; } inline bool WindowClause::has_end_offset() const { return _internal_has_end_offset(); } inline void WindowClause::clear_end_offset() { if (GetArena() == nullptr && end_offset_ != nullptr) { delete end_offset_; } end_offset_ = nullptr; } inline const ::pg_query::Node& WindowClause::_internal_end_offset() const { const ::pg_query::Node* p = end_offset_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& WindowClause::end_offset() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.end_offset) return _internal_end_offset(); } inline void WindowClause::unsafe_arena_set_allocated_end_offset( ::pg_query::Node* end_offset) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(end_offset_); } end_offset_ = end_offset; if (end_offset) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.WindowClause.end_offset) } inline ::pg_query::Node* WindowClause::release_end_offset() { ::pg_query::Node* temp = end_offset_; end_offset_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* WindowClause::unsafe_arena_release_end_offset() { // @@protoc_insertion_point(field_release:pg_query.WindowClause.end_offset) ::pg_query::Node* temp = end_offset_; end_offset_ = nullptr; return temp; } inline ::pg_query::Node* WindowClause::_internal_mutable_end_offset() { if (end_offset_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); end_offset_ = p; } return end_offset_; } inline ::pg_query::Node* WindowClause::mutable_end_offset() { // @@protoc_insertion_point(field_mutable:pg_query.WindowClause.end_offset) return _internal_mutable_end_offset(); } inline void WindowClause::set_allocated_end_offset(::pg_query::Node* end_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete end_offset_; } if (end_offset) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(end_offset); if (message_arena != submessage_arena) { end_offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, end_offset, submessage_arena); } } else { } end_offset_ = end_offset; // @@protoc_insertion_point(field_set_allocated:pg_query.WindowClause.end_offset) } // uint32 start_in_range_func = 8 [json_name = "startInRangeFunc"]; inline void WindowClause::clear_start_in_range_func() { start_in_range_func_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::_internal_start_in_range_func() const { return start_in_range_func_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::start_in_range_func() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.start_in_range_func) return _internal_start_in_range_func(); } inline void WindowClause::_internal_set_start_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value) { start_in_range_func_ = value; } inline void WindowClause::set_start_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_start_in_range_func(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.start_in_range_func) } // uint32 end_in_range_func = 9 [json_name = "endInRangeFunc"]; inline void WindowClause::clear_end_in_range_func() { end_in_range_func_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::_internal_end_in_range_func() const { return end_in_range_func_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::end_in_range_func() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.end_in_range_func) return _internal_end_in_range_func(); } inline void WindowClause::_internal_set_end_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value) { end_in_range_func_ = value; } inline void WindowClause::set_end_in_range_func(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_end_in_range_func(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.end_in_range_func) } // uint32 in_range_coll = 10 [json_name = "inRangeColl"]; inline void WindowClause::clear_in_range_coll() { in_range_coll_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::_internal_in_range_coll() const { return in_range_coll_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::in_range_coll() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.in_range_coll) return _internal_in_range_coll(); } inline void WindowClause::_internal_set_in_range_coll(::PROTOBUF_NAMESPACE_ID::uint32 value) { in_range_coll_ = value; } inline void WindowClause::set_in_range_coll(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_in_range_coll(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.in_range_coll) } // bool in_range_asc = 11 [json_name = "inRangeAsc"]; inline void WindowClause::clear_in_range_asc() { in_range_asc_ = false; } inline bool WindowClause::_internal_in_range_asc() const { return in_range_asc_; } inline bool WindowClause::in_range_asc() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.in_range_asc) return _internal_in_range_asc(); } inline void WindowClause::_internal_set_in_range_asc(bool value) { in_range_asc_ = value; } inline void WindowClause::set_in_range_asc(bool value) { _internal_set_in_range_asc(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.in_range_asc) } // bool in_range_nulls_first = 12 [json_name = "inRangeNullsFirst"]; inline void WindowClause::clear_in_range_nulls_first() { in_range_nulls_first_ = false; } inline bool WindowClause::_internal_in_range_nulls_first() const { return in_range_nulls_first_; } inline bool WindowClause::in_range_nulls_first() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.in_range_nulls_first) return _internal_in_range_nulls_first(); } inline void WindowClause::_internal_set_in_range_nulls_first(bool value) { in_range_nulls_first_ = value; } inline void WindowClause::set_in_range_nulls_first(bool value) { _internal_set_in_range_nulls_first(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.in_range_nulls_first) } // uint32 winref = 13 [json_name = "winref"]; inline void WindowClause::clear_winref() { winref_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::_internal_winref() const { return winref_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 WindowClause::winref() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.winref) return _internal_winref(); } inline void WindowClause::_internal_set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value) { winref_ = value; } inline void WindowClause::set_winref(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_winref(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.winref) } // bool copied_order = 14 [json_name = "copiedOrder"]; inline void WindowClause::clear_copied_order() { copied_order_ = false; } inline bool WindowClause::_internal_copied_order() const { return copied_order_; } inline bool WindowClause::copied_order() const { // @@protoc_insertion_point(field_get:pg_query.WindowClause.copied_order) return _internal_copied_order(); } inline void WindowClause::_internal_set_copied_order(bool value) { copied_order_ = value; } inline void WindowClause::set_copied_order(bool value) { _internal_set_copied_order(value); // @@protoc_insertion_point(field_set:pg_query.WindowClause.copied_order) } // ------------------------------------------------------------------- // ObjectWithArgs // repeated .pg_query.Node objname = 1 [json_name = "objname"]; inline int ObjectWithArgs::_internal_objname_size() const { return objname_.size(); } inline int ObjectWithArgs::objname_size() const { return _internal_objname_size(); } inline void ObjectWithArgs::clear_objname() { objname_.Clear(); } inline ::pg_query::Node* ObjectWithArgs::mutable_objname(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ObjectWithArgs.objname) return objname_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ObjectWithArgs::mutable_objname() { // @@protoc_insertion_point(field_mutable_list:pg_query.ObjectWithArgs.objname) return &objname_; } inline const ::pg_query::Node& ObjectWithArgs::_internal_objname(int index) const { return objname_.Get(index); } inline const ::pg_query::Node& ObjectWithArgs::objname(int index) const { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.objname) return _internal_objname(index); } inline ::pg_query::Node* ObjectWithArgs::_internal_add_objname() { return objname_.Add(); } inline ::pg_query::Node* ObjectWithArgs::add_objname() { // @@protoc_insertion_point(field_add:pg_query.ObjectWithArgs.objname) return _internal_add_objname(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ObjectWithArgs::objname() const { // @@protoc_insertion_point(field_list:pg_query.ObjectWithArgs.objname) return objname_; } // repeated .pg_query.Node objargs = 2 [json_name = "objargs"]; inline int ObjectWithArgs::_internal_objargs_size() const { return objargs_.size(); } inline int ObjectWithArgs::objargs_size() const { return _internal_objargs_size(); } inline void ObjectWithArgs::clear_objargs() { objargs_.Clear(); } inline ::pg_query::Node* ObjectWithArgs::mutable_objargs(int index) { // @@protoc_insertion_point(field_mutable:pg_query.ObjectWithArgs.objargs) return objargs_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* ObjectWithArgs::mutable_objargs() { // @@protoc_insertion_point(field_mutable_list:pg_query.ObjectWithArgs.objargs) return &objargs_; } inline const ::pg_query::Node& ObjectWithArgs::_internal_objargs(int index) const { return objargs_.Get(index); } inline const ::pg_query::Node& ObjectWithArgs::objargs(int index) const { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.objargs) return _internal_objargs(index); } inline ::pg_query::Node* ObjectWithArgs::_internal_add_objargs() { return objargs_.Add(); } inline ::pg_query::Node* ObjectWithArgs::add_objargs() { // @@protoc_insertion_point(field_add:pg_query.ObjectWithArgs.objargs) return _internal_add_objargs(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& ObjectWithArgs::objargs() const { // @@protoc_insertion_point(field_list:pg_query.ObjectWithArgs.objargs) return objargs_; } // bool args_unspecified = 3 [json_name = "args_unspecified"]; inline void ObjectWithArgs::clear_args_unspecified() { args_unspecified_ = false; } inline bool ObjectWithArgs::_internal_args_unspecified() const { return args_unspecified_; } inline bool ObjectWithArgs::args_unspecified() const { // @@protoc_insertion_point(field_get:pg_query.ObjectWithArgs.args_unspecified) return _internal_args_unspecified(); } inline void ObjectWithArgs::_internal_set_args_unspecified(bool value) { args_unspecified_ = value; } inline void ObjectWithArgs::set_args_unspecified(bool value) { _internal_set_args_unspecified(value); // @@protoc_insertion_point(field_set:pg_query.ObjectWithArgs.args_unspecified) } // ------------------------------------------------------------------- // AccessPriv // string priv_name = 1 [json_name = "priv_name"]; inline void AccessPriv::clear_priv_name() { priv_name_.ClearToEmpty(); } inline const std::string& AccessPriv::priv_name() const { // @@protoc_insertion_point(field_get:pg_query.AccessPriv.priv_name) return _internal_priv_name(); } inline void AccessPriv::set_priv_name(const std::string& value) { _internal_set_priv_name(value); // @@protoc_insertion_point(field_set:pg_query.AccessPriv.priv_name) } inline std::string* AccessPriv::mutable_priv_name() { // @@protoc_insertion_point(field_mutable:pg_query.AccessPriv.priv_name) return _internal_mutable_priv_name(); } inline const std::string& AccessPriv::_internal_priv_name() const { return priv_name_.Get(); } inline void AccessPriv::_internal_set_priv_name(const std::string& value) { priv_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void AccessPriv::set_priv_name(std::string&& value) { priv_name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.AccessPriv.priv_name) } inline void AccessPriv::set_priv_name(const char* value) { GOOGLE_DCHECK(value != nullptr); priv_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.AccessPriv.priv_name) } inline void AccessPriv::set_priv_name(const char* value, size_t size) { priv_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.AccessPriv.priv_name) } inline std::string* AccessPriv::_internal_mutable_priv_name() { return priv_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* AccessPriv::release_priv_name() { // @@protoc_insertion_point(field_release:pg_query.AccessPriv.priv_name) return priv_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void AccessPriv::set_allocated_priv_name(std::string* priv_name) { if (priv_name != nullptr) { } else { } priv_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), priv_name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.AccessPriv.priv_name) } // repeated .pg_query.Node cols = 2 [json_name = "cols"]; inline int AccessPriv::_internal_cols_size() const { return cols_.size(); } inline int AccessPriv::cols_size() const { return _internal_cols_size(); } inline void AccessPriv::clear_cols() { cols_.Clear(); } inline ::pg_query::Node* AccessPriv::mutable_cols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.AccessPriv.cols) return cols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* AccessPriv::mutable_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.AccessPriv.cols) return &cols_; } inline const ::pg_query::Node& AccessPriv::_internal_cols(int index) const { return cols_.Get(index); } inline const ::pg_query::Node& AccessPriv::cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.AccessPriv.cols) return _internal_cols(index); } inline ::pg_query::Node* AccessPriv::_internal_add_cols() { return cols_.Add(); } inline ::pg_query::Node* AccessPriv::add_cols() { // @@protoc_insertion_point(field_add:pg_query.AccessPriv.cols) return _internal_add_cols(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& AccessPriv::cols() const { // @@protoc_insertion_point(field_list:pg_query.AccessPriv.cols) return cols_; } // ------------------------------------------------------------------- // CreateOpClassItem // int32 itemtype = 1 [json_name = "itemtype"]; inline void CreateOpClassItem::clear_itemtype() { itemtype_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CreateOpClassItem::_internal_itemtype() const { return itemtype_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CreateOpClassItem::itemtype() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.itemtype) return _internal_itemtype(); } inline void CreateOpClassItem::_internal_set_itemtype(::PROTOBUF_NAMESPACE_ID::int32 value) { itemtype_ = value; } inline void CreateOpClassItem::set_itemtype(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_itemtype(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassItem.itemtype) } // .pg_query.ObjectWithArgs name = 2 [json_name = "name"]; inline bool CreateOpClassItem::_internal_has_name() const { return this != internal_default_instance() && name_ != nullptr; } inline bool CreateOpClassItem::has_name() const { return _internal_has_name(); } inline void CreateOpClassItem::clear_name() { if (GetArena() == nullptr && name_ != nullptr) { delete name_; } name_ = nullptr; } inline const ::pg_query::ObjectWithArgs& CreateOpClassItem::_internal_name() const { const ::pg_query::ObjectWithArgs* p = name_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_ObjectWithArgs_default_instance_); } inline const ::pg_query::ObjectWithArgs& CreateOpClassItem::name() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.name) return _internal_name(); } inline void CreateOpClassItem::unsafe_arena_set_allocated_name( ::pg_query::ObjectWithArgs* name) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(name_); } name_ = name; if (name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassItem.name) } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::release_name() { ::pg_query::ObjectWithArgs* temp = name_; name_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::unsafe_arena_release_name() { // @@protoc_insertion_point(field_release:pg_query.CreateOpClassItem.name) ::pg_query::ObjectWithArgs* temp = name_; name_ = nullptr; return temp; } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::_internal_mutable_name() { if (name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::ObjectWithArgs>(GetArena()); name_ = p; } return name_; } inline ::pg_query::ObjectWithArgs* CreateOpClassItem::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.name) return _internal_mutable_name(); } inline void CreateOpClassItem::set_allocated_name(::pg_query::ObjectWithArgs* name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete name_; } if (name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(name); if (message_arena != submessage_arena) { name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, name, submessage_arena); } } else { } name_ = name; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassItem.name) } // int32 number = 3 [json_name = "number"]; inline void CreateOpClassItem::clear_number() { number_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CreateOpClassItem::_internal_number() const { return number_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CreateOpClassItem::number() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.number) return _internal_number(); } inline void CreateOpClassItem::_internal_set_number(::PROTOBUF_NAMESPACE_ID::int32 value) { number_ = value; } inline void CreateOpClassItem::set_number(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_number(value); // @@protoc_insertion_point(field_set:pg_query.CreateOpClassItem.number) } // repeated .pg_query.Node order_family = 4 [json_name = "order_family"]; inline int CreateOpClassItem::_internal_order_family_size() const { return order_family_.size(); } inline int CreateOpClassItem::order_family_size() const { return _internal_order_family_size(); } inline void CreateOpClassItem::clear_order_family() { order_family_.Clear(); } inline ::pg_query::Node* CreateOpClassItem::mutable_order_family(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.order_family) return order_family_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpClassItem::mutable_order_family() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassItem.order_family) return &order_family_; } inline const ::pg_query::Node& CreateOpClassItem::_internal_order_family(int index) const { return order_family_.Get(index); } inline const ::pg_query::Node& CreateOpClassItem::order_family(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.order_family) return _internal_order_family(index); } inline ::pg_query::Node* CreateOpClassItem::_internal_add_order_family() { return order_family_.Add(); } inline ::pg_query::Node* CreateOpClassItem::add_order_family() { // @@protoc_insertion_point(field_add:pg_query.CreateOpClassItem.order_family) return _internal_add_order_family(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpClassItem::order_family() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassItem.order_family) return order_family_; } // repeated .pg_query.Node class_args = 5 [json_name = "class_args"]; inline int CreateOpClassItem::_internal_class_args_size() const { return class_args_.size(); } inline int CreateOpClassItem::class_args_size() const { return _internal_class_args_size(); } inline void CreateOpClassItem::clear_class_args() { class_args_.Clear(); } inline ::pg_query::Node* CreateOpClassItem::mutable_class_args(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.class_args) return class_args_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CreateOpClassItem::mutable_class_args() { // @@protoc_insertion_point(field_mutable_list:pg_query.CreateOpClassItem.class_args) return &class_args_; } inline const ::pg_query::Node& CreateOpClassItem::_internal_class_args(int index) const { return class_args_.Get(index); } inline const ::pg_query::Node& CreateOpClassItem::class_args(int index) const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.class_args) return _internal_class_args(index); } inline ::pg_query::Node* CreateOpClassItem::_internal_add_class_args() { return class_args_.Add(); } inline ::pg_query::Node* CreateOpClassItem::add_class_args() { // @@protoc_insertion_point(field_add:pg_query.CreateOpClassItem.class_args) return _internal_add_class_args(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CreateOpClassItem::class_args() const { // @@protoc_insertion_point(field_list:pg_query.CreateOpClassItem.class_args) return class_args_; } // .pg_query.TypeName storedtype = 6 [json_name = "storedtype"]; inline bool CreateOpClassItem::_internal_has_storedtype() const { return this != internal_default_instance() && storedtype_ != nullptr; } inline bool CreateOpClassItem::has_storedtype() const { return _internal_has_storedtype(); } inline void CreateOpClassItem::clear_storedtype() { if (GetArena() == nullptr && storedtype_ != nullptr) { delete storedtype_; } storedtype_ = nullptr; } inline const ::pg_query::TypeName& CreateOpClassItem::_internal_storedtype() const { const ::pg_query::TypeName* p = storedtype_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& CreateOpClassItem::storedtype() const { // @@protoc_insertion_point(field_get:pg_query.CreateOpClassItem.storedtype) return _internal_storedtype(); } inline void CreateOpClassItem::unsafe_arena_set_allocated_storedtype( ::pg_query::TypeName* storedtype) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(storedtype_); } storedtype_ = storedtype; if (storedtype) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CreateOpClassItem.storedtype) } inline ::pg_query::TypeName* CreateOpClassItem::release_storedtype() { ::pg_query::TypeName* temp = storedtype_; storedtype_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* CreateOpClassItem::unsafe_arena_release_storedtype() { // @@protoc_insertion_point(field_release:pg_query.CreateOpClassItem.storedtype) ::pg_query::TypeName* temp = storedtype_; storedtype_ = nullptr; return temp; } inline ::pg_query::TypeName* CreateOpClassItem::_internal_mutable_storedtype() { if (storedtype_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); storedtype_ = p; } return storedtype_; } inline ::pg_query::TypeName* CreateOpClassItem::mutable_storedtype() { // @@protoc_insertion_point(field_mutable:pg_query.CreateOpClassItem.storedtype) return _internal_mutable_storedtype(); } inline void CreateOpClassItem::set_allocated_storedtype(::pg_query::TypeName* storedtype) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete storedtype_; } if (storedtype) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(storedtype); if (message_arena != submessage_arena) { storedtype = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, storedtype, submessage_arena); } } else { } storedtype_ = storedtype; // @@protoc_insertion_point(field_set_allocated:pg_query.CreateOpClassItem.storedtype) } // ------------------------------------------------------------------- // TableLikeClause // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool TableLikeClause::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool TableLikeClause::has_relation() const { return _internal_has_relation(); } inline void TableLikeClause::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& TableLikeClause::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& TableLikeClause::relation() const { // @@protoc_insertion_point(field_get:pg_query.TableLikeClause.relation) return _internal_relation(); } inline void TableLikeClause::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.TableLikeClause.relation) } inline ::pg_query::RangeVar* TableLikeClause::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* TableLikeClause::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.TableLikeClause.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* TableLikeClause::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* TableLikeClause::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.TableLikeClause.relation) return _internal_mutable_relation(); } inline void TableLikeClause::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.TableLikeClause.relation) } // uint32 options = 2 [json_name = "options"]; inline void TableLikeClause::clear_options() { options_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 TableLikeClause::_internal_options() const { return options_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 TableLikeClause::options() const { // @@protoc_insertion_point(field_get:pg_query.TableLikeClause.options) return _internal_options(); } inline void TableLikeClause::_internal_set_options(::PROTOBUF_NAMESPACE_ID::uint32 value) { options_ = value; } inline void TableLikeClause::set_options(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_options(value); // @@protoc_insertion_point(field_set:pg_query.TableLikeClause.options) } // ------------------------------------------------------------------- // FunctionParameter // string name = 1 [json_name = "name"]; inline void FunctionParameter::clear_name() { name_.ClearToEmpty(); } inline const std::string& FunctionParameter::name() const { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.name) return _internal_name(); } inline void FunctionParameter::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.FunctionParameter.name) } inline std::string* FunctionParameter::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.FunctionParameter.name) return _internal_mutable_name(); } inline const std::string& FunctionParameter::_internal_name() const { return name_.Get(); } inline void FunctionParameter::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void FunctionParameter::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.FunctionParameter.name) } inline void FunctionParameter::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.FunctionParameter.name) } inline void FunctionParameter::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.FunctionParameter.name) } inline std::string* FunctionParameter::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* FunctionParameter::release_name() { // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void FunctionParameter::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.name) } // .pg_query.TypeName arg_type = 2 [json_name = "argType"]; inline bool FunctionParameter::_internal_has_arg_type() const { return this != internal_default_instance() && arg_type_ != nullptr; } inline bool FunctionParameter::has_arg_type() const { return _internal_has_arg_type(); } inline void FunctionParameter::clear_arg_type() { if (GetArena() == nullptr && arg_type_ != nullptr) { delete arg_type_; } arg_type_ = nullptr; } inline const ::pg_query::TypeName& FunctionParameter::_internal_arg_type() const { const ::pg_query::TypeName* p = arg_type_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& FunctionParameter::arg_type() const { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.arg_type) return _internal_arg_type(); } inline void FunctionParameter::unsafe_arena_set_allocated_arg_type( ::pg_query::TypeName* arg_type) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(arg_type_); } arg_type_ = arg_type; if (arg_type) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FunctionParameter.arg_type) } inline ::pg_query::TypeName* FunctionParameter::release_arg_type() { ::pg_query::TypeName* temp = arg_type_; arg_type_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* FunctionParameter::unsafe_arena_release_arg_type() { // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.arg_type) ::pg_query::TypeName* temp = arg_type_; arg_type_ = nullptr; return temp; } inline ::pg_query::TypeName* FunctionParameter::_internal_mutable_arg_type() { if (arg_type_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); arg_type_ = p; } return arg_type_; } inline ::pg_query::TypeName* FunctionParameter::mutable_arg_type() { // @@protoc_insertion_point(field_mutable:pg_query.FunctionParameter.arg_type) return _internal_mutable_arg_type(); } inline void FunctionParameter::set_allocated_arg_type(::pg_query::TypeName* arg_type) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete arg_type_; } if (arg_type) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(arg_type); if (message_arena != submessage_arena) { arg_type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, arg_type, submessage_arena); } } else { } arg_type_ = arg_type; // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.arg_type) } // .pg_query.FunctionParameterMode mode = 3 [json_name = "mode"]; inline void FunctionParameter::clear_mode() { mode_ = 0; } inline ::pg_query::FunctionParameterMode FunctionParameter::_internal_mode() const { return static_cast< ::pg_query::FunctionParameterMode >(mode_); } inline ::pg_query::FunctionParameterMode FunctionParameter::mode() const { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.mode) return _internal_mode(); } inline void FunctionParameter::_internal_set_mode(::pg_query::FunctionParameterMode value) { mode_ = value; } inline void FunctionParameter::set_mode(::pg_query::FunctionParameterMode value) { _internal_set_mode(value); // @@protoc_insertion_point(field_set:pg_query.FunctionParameter.mode) } // .pg_query.Node defexpr = 4 [json_name = "defexpr"]; inline bool FunctionParameter::_internal_has_defexpr() const { return this != internal_default_instance() && defexpr_ != nullptr; } inline bool FunctionParameter::has_defexpr() const { return _internal_has_defexpr(); } inline void FunctionParameter::clear_defexpr() { if (GetArena() == nullptr && defexpr_ != nullptr) { delete defexpr_; } defexpr_ = nullptr; } inline const ::pg_query::Node& FunctionParameter::_internal_defexpr() const { const ::pg_query::Node* p = defexpr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& FunctionParameter::defexpr() const { // @@protoc_insertion_point(field_get:pg_query.FunctionParameter.defexpr) return _internal_defexpr(); } inline void FunctionParameter::unsafe_arena_set_allocated_defexpr( ::pg_query::Node* defexpr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(defexpr_); } defexpr_ = defexpr; if (defexpr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.FunctionParameter.defexpr) } inline ::pg_query::Node* FunctionParameter::release_defexpr() { ::pg_query::Node* temp = defexpr_; defexpr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* FunctionParameter::unsafe_arena_release_defexpr() { // @@protoc_insertion_point(field_release:pg_query.FunctionParameter.defexpr) ::pg_query::Node* temp = defexpr_; defexpr_ = nullptr; return temp; } inline ::pg_query::Node* FunctionParameter::_internal_mutable_defexpr() { if (defexpr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); defexpr_ = p; } return defexpr_; } inline ::pg_query::Node* FunctionParameter::mutable_defexpr() { // @@protoc_insertion_point(field_mutable:pg_query.FunctionParameter.defexpr) return _internal_mutable_defexpr(); } inline void FunctionParameter::set_allocated_defexpr(::pg_query::Node* defexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete defexpr_; } if (defexpr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(defexpr); if (message_arena != submessage_arena) { defexpr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, defexpr, submessage_arena); } } else { } defexpr_ = defexpr; // @@protoc_insertion_point(field_set_allocated:pg_query.FunctionParameter.defexpr) } // ------------------------------------------------------------------- // LockingClause // repeated .pg_query.Node locked_rels = 1 [json_name = "lockedRels"]; inline int LockingClause::_internal_locked_rels_size() const { return locked_rels_.size(); } inline int LockingClause::locked_rels_size() const { return _internal_locked_rels_size(); } inline void LockingClause::clear_locked_rels() { locked_rels_.Clear(); } inline ::pg_query::Node* LockingClause::mutable_locked_rels(int index) { // @@protoc_insertion_point(field_mutable:pg_query.LockingClause.locked_rels) return locked_rels_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* LockingClause::mutable_locked_rels() { // @@protoc_insertion_point(field_mutable_list:pg_query.LockingClause.locked_rels) return &locked_rels_; } inline const ::pg_query::Node& LockingClause::_internal_locked_rels(int index) const { return locked_rels_.Get(index); } inline const ::pg_query::Node& LockingClause::locked_rels(int index) const { // @@protoc_insertion_point(field_get:pg_query.LockingClause.locked_rels) return _internal_locked_rels(index); } inline ::pg_query::Node* LockingClause::_internal_add_locked_rels() { return locked_rels_.Add(); } inline ::pg_query::Node* LockingClause::add_locked_rels() { // @@protoc_insertion_point(field_add:pg_query.LockingClause.locked_rels) return _internal_add_locked_rels(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& LockingClause::locked_rels() const { // @@protoc_insertion_point(field_list:pg_query.LockingClause.locked_rels) return locked_rels_; } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; inline void LockingClause::clear_strength() { strength_ = 0; } inline ::pg_query::LockClauseStrength LockingClause::_internal_strength() const { return static_cast< ::pg_query::LockClauseStrength >(strength_); } inline ::pg_query::LockClauseStrength LockingClause::strength() const { // @@protoc_insertion_point(field_get:pg_query.LockingClause.strength) return _internal_strength(); } inline void LockingClause::_internal_set_strength(::pg_query::LockClauseStrength value) { strength_ = value; } inline void LockingClause::set_strength(::pg_query::LockClauseStrength value) { _internal_set_strength(value); // @@protoc_insertion_point(field_set:pg_query.LockingClause.strength) } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; inline void LockingClause::clear_wait_policy() { wait_policy_ = 0; } inline ::pg_query::LockWaitPolicy LockingClause::_internal_wait_policy() const { return static_cast< ::pg_query::LockWaitPolicy >(wait_policy_); } inline ::pg_query::LockWaitPolicy LockingClause::wait_policy() const { // @@protoc_insertion_point(field_get:pg_query.LockingClause.wait_policy) return _internal_wait_policy(); } inline void LockingClause::_internal_set_wait_policy(::pg_query::LockWaitPolicy value) { wait_policy_ = value; } inline void LockingClause::set_wait_policy(::pg_query::LockWaitPolicy value) { _internal_set_wait_policy(value); // @@protoc_insertion_point(field_set:pg_query.LockingClause.wait_policy) } // ------------------------------------------------------------------- // RowMarkClause // uint32 rti = 1 [json_name = "rti"]; inline void RowMarkClause::clear_rti() { rti_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RowMarkClause::_internal_rti() const { return rti_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 RowMarkClause::rti() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.rti) return _internal_rti(); } inline void RowMarkClause::_internal_set_rti(::PROTOBUF_NAMESPACE_ID::uint32 value) { rti_ = value; } inline void RowMarkClause::set_rti(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_rti(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.rti) } // .pg_query.LockClauseStrength strength = 2 [json_name = "strength"]; inline void RowMarkClause::clear_strength() { strength_ = 0; } inline ::pg_query::LockClauseStrength RowMarkClause::_internal_strength() const { return static_cast< ::pg_query::LockClauseStrength >(strength_); } inline ::pg_query::LockClauseStrength RowMarkClause::strength() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.strength) return _internal_strength(); } inline void RowMarkClause::_internal_set_strength(::pg_query::LockClauseStrength value) { strength_ = value; } inline void RowMarkClause::set_strength(::pg_query::LockClauseStrength value) { _internal_set_strength(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.strength) } // .pg_query.LockWaitPolicy wait_policy = 3 [json_name = "waitPolicy"]; inline void RowMarkClause::clear_wait_policy() { wait_policy_ = 0; } inline ::pg_query::LockWaitPolicy RowMarkClause::_internal_wait_policy() const { return static_cast< ::pg_query::LockWaitPolicy >(wait_policy_); } inline ::pg_query::LockWaitPolicy RowMarkClause::wait_policy() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.wait_policy) return _internal_wait_policy(); } inline void RowMarkClause::_internal_set_wait_policy(::pg_query::LockWaitPolicy value) { wait_policy_ = value; } inline void RowMarkClause::set_wait_policy(::pg_query::LockWaitPolicy value) { _internal_set_wait_policy(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.wait_policy) } // bool pushed_down = 4 [json_name = "pushedDown"]; inline void RowMarkClause::clear_pushed_down() { pushed_down_ = false; } inline bool RowMarkClause::_internal_pushed_down() const { return pushed_down_; } inline bool RowMarkClause::pushed_down() const { // @@protoc_insertion_point(field_get:pg_query.RowMarkClause.pushed_down) return _internal_pushed_down(); } inline void RowMarkClause::_internal_set_pushed_down(bool value) { pushed_down_ = value; } inline void RowMarkClause::set_pushed_down(bool value) { _internal_set_pushed_down(value); // @@protoc_insertion_point(field_set:pg_query.RowMarkClause.pushed_down) } // ------------------------------------------------------------------- // XmlSerialize // .pg_query.XmlOptionType xmloption = 1 [json_name = "xmloption"]; inline void XmlSerialize::clear_xmloption() { xmloption_ = 0; } inline ::pg_query::XmlOptionType XmlSerialize::_internal_xmloption() const { return static_cast< ::pg_query::XmlOptionType >(xmloption_); } inline ::pg_query::XmlOptionType XmlSerialize::xmloption() const { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.xmloption) return _internal_xmloption(); } inline void XmlSerialize::_internal_set_xmloption(::pg_query::XmlOptionType value) { xmloption_ = value; } inline void XmlSerialize::set_xmloption(::pg_query::XmlOptionType value) { _internal_set_xmloption(value); // @@protoc_insertion_point(field_set:pg_query.XmlSerialize.xmloption) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool XmlSerialize::_internal_has_expr() const { return this != internal_default_instance() && expr_ != nullptr; } inline bool XmlSerialize::has_expr() const { return _internal_has_expr(); } inline void XmlSerialize::clear_expr() { if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; } inline const ::pg_query::Node& XmlSerialize::_internal_expr() const { const ::pg_query::Node* p = expr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& XmlSerialize::expr() const { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.expr) return _internal_expr(); } inline void XmlSerialize::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); } expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlSerialize.expr) } inline ::pg_query::Node* XmlSerialize::release_expr() { ::pg_query::Node* temp = expr_; expr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* XmlSerialize::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.XmlSerialize.expr) ::pg_query::Node* temp = expr_; expr_ = nullptr; return temp; } inline ::pg_query::Node* XmlSerialize::_internal_mutable_expr() { if (expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); expr_ = p; } return expr_; } inline ::pg_query::Node* XmlSerialize::mutable_expr() { // @@protoc_insertion_point(field_mutable:pg_query.XmlSerialize.expr) return _internal_mutable_expr(); } inline void XmlSerialize::set_allocated_expr(::pg_query::Node* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.XmlSerialize.expr) } // .pg_query.TypeName type_name = 3 [json_name = "typeName"]; inline bool XmlSerialize::_internal_has_type_name() const { return this != internal_default_instance() && type_name_ != nullptr; } inline bool XmlSerialize::has_type_name() const { return _internal_has_type_name(); } inline void XmlSerialize::clear_type_name() { if (GetArena() == nullptr && type_name_ != nullptr) { delete type_name_; } type_name_ = nullptr; } inline const ::pg_query::TypeName& XmlSerialize::_internal_type_name() const { const ::pg_query::TypeName* p = type_name_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_TypeName_default_instance_); } inline const ::pg_query::TypeName& XmlSerialize::type_name() const { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.type_name) return _internal_type_name(); } inline void XmlSerialize::unsafe_arena_set_allocated_type_name( ::pg_query::TypeName* type_name) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_name_); } type_name_ = type_name; if (type_name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.XmlSerialize.type_name) } inline ::pg_query::TypeName* XmlSerialize::release_type_name() { ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::TypeName* XmlSerialize::unsafe_arena_release_type_name() { // @@protoc_insertion_point(field_release:pg_query.XmlSerialize.type_name) ::pg_query::TypeName* temp = type_name_; type_name_ = nullptr; return temp; } inline ::pg_query::TypeName* XmlSerialize::_internal_mutable_type_name() { if (type_name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::TypeName>(GetArena()); type_name_ = p; } return type_name_; } inline ::pg_query::TypeName* XmlSerialize::mutable_type_name() { // @@protoc_insertion_point(field_mutable:pg_query.XmlSerialize.type_name) return _internal_mutable_type_name(); } inline void XmlSerialize::set_allocated_type_name(::pg_query::TypeName* type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete type_name_; } if (type_name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(type_name); if (message_arena != submessage_arena) { type_name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, type_name, submessage_arena); } } else { } type_name_ = type_name; // @@protoc_insertion_point(field_set_allocated:pg_query.XmlSerialize.type_name) } // int32 location = 4 [json_name = "location"]; inline void XmlSerialize::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 XmlSerialize::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 XmlSerialize::location() const { // @@protoc_insertion_point(field_get:pg_query.XmlSerialize.location) return _internal_location(); } inline void XmlSerialize::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void XmlSerialize::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.XmlSerialize.location) } // ------------------------------------------------------------------- // WithClause // repeated .pg_query.Node ctes = 1 [json_name = "ctes"]; inline int WithClause::_internal_ctes_size() const { return ctes_.size(); } inline int WithClause::ctes_size() const { return _internal_ctes_size(); } inline void WithClause::clear_ctes() { ctes_.Clear(); } inline ::pg_query::Node* WithClause::mutable_ctes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.WithClause.ctes) return ctes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* WithClause::mutable_ctes() { // @@protoc_insertion_point(field_mutable_list:pg_query.WithClause.ctes) return &ctes_; } inline const ::pg_query::Node& WithClause::_internal_ctes(int index) const { return ctes_.Get(index); } inline const ::pg_query::Node& WithClause::ctes(int index) const { // @@protoc_insertion_point(field_get:pg_query.WithClause.ctes) return _internal_ctes(index); } inline ::pg_query::Node* WithClause::_internal_add_ctes() { return ctes_.Add(); } inline ::pg_query::Node* WithClause::add_ctes() { // @@protoc_insertion_point(field_add:pg_query.WithClause.ctes) return _internal_add_ctes(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& WithClause::ctes() const { // @@protoc_insertion_point(field_list:pg_query.WithClause.ctes) return ctes_; } // bool recursive = 2 [json_name = "recursive"]; inline void WithClause::clear_recursive() { recursive_ = false; } inline bool WithClause::_internal_recursive() const { return recursive_; } inline bool WithClause::recursive() const { // @@protoc_insertion_point(field_get:pg_query.WithClause.recursive) return _internal_recursive(); } inline void WithClause::_internal_set_recursive(bool value) { recursive_ = value; } inline void WithClause::set_recursive(bool value) { _internal_set_recursive(value); // @@protoc_insertion_point(field_set:pg_query.WithClause.recursive) } // int32 location = 3 [json_name = "location"]; inline void WithClause::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 WithClause::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 WithClause::location() const { // @@protoc_insertion_point(field_get:pg_query.WithClause.location) return _internal_location(); } inline void WithClause::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void WithClause::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.WithClause.location) } // ------------------------------------------------------------------- // InferClause // repeated .pg_query.Node index_elems = 1 [json_name = "indexElems"]; inline int InferClause::_internal_index_elems_size() const { return index_elems_.size(); } inline int InferClause::index_elems_size() const { return _internal_index_elems_size(); } inline void InferClause::clear_index_elems() { index_elems_.Clear(); } inline ::pg_query::Node* InferClause::mutable_index_elems(int index) { // @@protoc_insertion_point(field_mutable:pg_query.InferClause.index_elems) return index_elems_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* InferClause::mutable_index_elems() { // @@protoc_insertion_point(field_mutable_list:pg_query.InferClause.index_elems) return &index_elems_; } inline const ::pg_query::Node& InferClause::_internal_index_elems(int index) const { return index_elems_.Get(index); } inline const ::pg_query::Node& InferClause::index_elems(int index) const { // @@protoc_insertion_point(field_get:pg_query.InferClause.index_elems) return _internal_index_elems(index); } inline ::pg_query::Node* InferClause::_internal_add_index_elems() { return index_elems_.Add(); } inline ::pg_query::Node* InferClause::add_index_elems() { // @@protoc_insertion_point(field_add:pg_query.InferClause.index_elems) return _internal_add_index_elems(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& InferClause::index_elems() const { // @@protoc_insertion_point(field_list:pg_query.InferClause.index_elems) return index_elems_; } // .pg_query.Node where_clause = 2 [json_name = "whereClause"]; inline bool InferClause::_internal_has_where_clause() const { return this != internal_default_instance() && where_clause_ != nullptr; } inline bool InferClause::has_where_clause() const { return _internal_has_where_clause(); } inline void InferClause::clear_where_clause() { if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; } inline const ::pg_query::Node& InferClause::_internal_where_clause() const { const ::pg_query::Node* p = where_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& InferClause::where_clause() const { // @@protoc_insertion_point(field_get:pg_query.InferClause.where_clause) return _internal_where_clause(); } inline void InferClause::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); } where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.InferClause.where_clause) } inline ::pg_query::Node* InferClause::release_where_clause() { ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* InferClause::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.InferClause.where_clause) ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; return temp; } inline ::pg_query::Node* InferClause::_internal_mutable_where_clause() { if (where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); where_clause_ = p; } return where_clause_; } inline ::pg_query::Node* InferClause::mutable_where_clause() { // @@protoc_insertion_point(field_mutable:pg_query.InferClause.where_clause) return _internal_mutable_where_clause(); } inline void InferClause::set_allocated_where_clause(::pg_query::Node* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.InferClause.where_clause) } // string conname = 3 [json_name = "conname"]; inline void InferClause::clear_conname() { conname_.ClearToEmpty(); } inline const std::string& InferClause::conname() const { // @@protoc_insertion_point(field_get:pg_query.InferClause.conname) return _internal_conname(); } inline void InferClause::set_conname(const std::string& value) { _internal_set_conname(value); // @@protoc_insertion_point(field_set:pg_query.InferClause.conname) } inline std::string* InferClause::mutable_conname() { // @@protoc_insertion_point(field_mutable:pg_query.InferClause.conname) return _internal_mutable_conname(); } inline const std::string& InferClause::_internal_conname() const { return conname_.Get(); } inline void InferClause::_internal_set_conname(const std::string& value) { conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void InferClause::set_conname(std::string&& value) { conname_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.InferClause.conname) } inline void InferClause::set_conname(const char* value) { GOOGLE_DCHECK(value != nullptr); conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.InferClause.conname) } inline void InferClause::set_conname(const char* value, size_t size) { conname_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.InferClause.conname) } inline std::string* InferClause::_internal_mutable_conname() { return conname_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* InferClause::release_conname() { // @@protoc_insertion_point(field_release:pg_query.InferClause.conname) return conname_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void InferClause::set_allocated_conname(std::string* conname) { if (conname != nullptr) { } else { } conname_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), conname, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.InferClause.conname) } // int32 location = 4 [json_name = "location"]; inline void InferClause::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 InferClause::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 InferClause::location() const { // @@protoc_insertion_point(field_get:pg_query.InferClause.location) return _internal_location(); } inline void InferClause::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void InferClause::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.InferClause.location) } // ------------------------------------------------------------------- // OnConflictClause // .pg_query.OnConflictAction action = 1 [json_name = "action"]; inline void OnConflictClause::clear_action() { action_ = 0; } inline ::pg_query::OnConflictAction OnConflictClause::_internal_action() const { return static_cast< ::pg_query::OnConflictAction >(action_); } inline ::pg_query::OnConflictAction OnConflictClause::action() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.action) return _internal_action(); } inline void OnConflictClause::_internal_set_action(::pg_query::OnConflictAction value) { action_ = value; } inline void OnConflictClause::set_action(::pg_query::OnConflictAction value) { _internal_set_action(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictClause.action) } // .pg_query.InferClause infer = 2 [json_name = "infer"]; inline bool OnConflictClause::_internal_has_infer() const { return this != internal_default_instance() && infer_ != nullptr; } inline bool OnConflictClause::has_infer() const { return _internal_has_infer(); } inline void OnConflictClause::clear_infer() { if (GetArena() == nullptr && infer_ != nullptr) { delete infer_; } infer_ = nullptr; } inline const ::pg_query::InferClause& OnConflictClause::_internal_infer() const { const ::pg_query::InferClause* p = infer_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_InferClause_default_instance_); } inline const ::pg_query::InferClause& OnConflictClause::infer() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.infer) return _internal_infer(); } inline void OnConflictClause::unsafe_arena_set_allocated_infer( ::pg_query::InferClause* infer) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(infer_); } infer_ = infer; if (infer) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictClause.infer) } inline ::pg_query::InferClause* OnConflictClause::release_infer() { ::pg_query::InferClause* temp = infer_; infer_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::InferClause* OnConflictClause::unsafe_arena_release_infer() { // @@protoc_insertion_point(field_release:pg_query.OnConflictClause.infer) ::pg_query::InferClause* temp = infer_; infer_ = nullptr; return temp; } inline ::pg_query::InferClause* OnConflictClause::_internal_mutable_infer() { if (infer_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::InferClause>(GetArena()); infer_ = p; } return infer_; } inline ::pg_query::InferClause* OnConflictClause::mutable_infer() { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictClause.infer) return _internal_mutable_infer(); } inline void OnConflictClause::set_allocated_infer(::pg_query::InferClause* infer) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete infer_; } if (infer) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(infer); if (message_arena != submessage_arena) { infer = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, infer, submessage_arena); } } else { } infer_ = infer; // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictClause.infer) } // repeated .pg_query.Node target_list = 3 [json_name = "targetList"]; inline int OnConflictClause::_internal_target_list_size() const { return target_list_.size(); } inline int OnConflictClause::target_list_size() const { return _internal_target_list_size(); } inline void OnConflictClause::clear_target_list() { target_list_.Clear(); } inline ::pg_query::Node* OnConflictClause::mutable_target_list(int index) { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictClause.target_list) return target_list_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* OnConflictClause::mutable_target_list() { // @@protoc_insertion_point(field_mutable_list:pg_query.OnConflictClause.target_list) return &target_list_; } inline const ::pg_query::Node& OnConflictClause::_internal_target_list(int index) const { return target_list_.Get(index); } inline const ::pg_query::Node& OnConflictClause::target_list(int index) const { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.target_list) return _internal_target_list(index); } inline ::pg_query::Node* OnConflictClause::_internal_add_target_list() { return target_list_.Add(); } inline ::pg_query::Node* OnConflictClause::add_target_list() { // @@protoc_insertion_point(field_add:pg_query.OnConflictClause.target_list) return _internal_add_target_list(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& OnConflictClause::target_list() const { // @@protoc_insertion_point(field_list:pg_query.OnConflictClause.target_list) return target_list_; } // .pg_query.Node where_clause = 4 [json_name = "whereClause"]; inline bool OnConflictClause::_internal_has_where_clause() const { return this != internal_default_instance() && where_clause_ != nullptr; } inline bool OnConflictClause::has_where_clause() const { return _internal_has_where_clause(); } inline void OnConflictClause::clear_where_clause() { if (GetArena() == nullptr && where_clause_ != nullptr) { delete where_clause_; } where_clause_ = nullptr; } inline const ::pg_query::Node& OnConflictClause::_internal_where_clause() const { const ::pg_query::Node* p = where_clause_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& OnConflictClause::where_clause() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.where_clause) return _internal_where_clause(); } inline void OnConflictClause::unsafe_arena_set_allocated_where_clause( ::pg_query::Node* where_clause) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(where_clause_); } where_clause_ = where_clause; if (where_clause) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.OnConflictClause.where_clause) } inline ::pg_query::Node* OnConflictClause::release_where_clause() { ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* OnConflictClause::unsafe_arena_release_where_clause() { // @@protoc_insertion_point(field_release:pg_query.OnConflictClause.where_clause) ::pg_query::Node* temp = where_clause_; where_clause_ = nullptr; return temp; } inline ::pg_query::Node* OnConflictClause::_internal_mutable_where_clause() { if (where_clause_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); where_clause_ = p; } return where_clause_; } inline ::pg_query::Node* OnConflictClause::mutable_where_clause() { // @@protoc_insertion_point(field_mutable:pg_query.OnConflictClause.where_clause) return _internal_mutable_where_clause(); } inline void OnConflictClause::set_allocated_where_clause(::pg_query::Node* where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete where_clause_; } if (where_clause) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(where_clause); if (message_arena != submessage_arena) { where_clause = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, where_clause, submessage_arena); } } else { } where_clause_ = where_clause; // @@protoc_insertion_point(field_set_allocated:pg_query.OnConflictClause.where_clause) } // int32 location = 5 [json_name = "location"]; inline void OnConflictClause::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 OnConflictClause::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 OnConflictClause::location() const { // @@protoc_insertion_point(field_get:pg_query.OnConflictClause.location) return _internal_location(); } inline void OnConflictClause::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void OnConflictClause::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.OnConflictClause.location) } // ------------------------------------------------------------------- // CommonTableExpr // string ctename = 1 [json_name = "ctename"]; inline void CommonTableExpr::clear_ctename() { ctename_.ClearToEmpty(); } inline const std::string& CommonTableExpr::ctename() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctename) return _internal_ctename(); } inline void CommonTableExpr::set_ctename(const std::string& value) { _internal_set_ctename(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.ctename) } inline std::string* CommonTableExpr::mutable_ctename() { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctename) return _internal_mutable_ctename(); } inline const std::string& CommonTableExpr::_internal_ctename() const { return ctename_.Get(); } inline void CommonTableExpr::_internal_set_ctename(const std::string& value) { ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void CommonTableExpr::set_ctename(std::string&& value) { ctename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.CommonTableExpr.ctename) } inline void CommonTableExpr::set_ctename(const char* value) { GOOGLE_DCHECK(value != nullptr); ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.CommonTableExpr.ctename) } inline void CommonTableExpr::set_ctename(const char* value, size_t size) { ctename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.CommonTableExpr.ctename) } inline std::string* CommonTableExpr::_internal_mutable_ctename() { return ctename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* CommonTableExpr::release_ctename() { // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.ctename) return ctename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void CommonTableExpr::set_allocated_ctename(std::string* ctename) { if (ctename != nullptr) { } else { } ctename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ctename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.CommonTableExpr.ctename) } // repeated .pg_query.Node aliascolnames = 2 [json_name = "aliascolnames"]; inline int CommonTableExpr::_internal_aliascolnames_size() const { return aliascolnames_.size(); } inline int CommonTableExpr::aliascolnames_size() const { return _internal_aliascolnames_size(); } inline void CommonTableExpr::clear_aliascolnames() { aliascolnames_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_aliascolnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.aliascolnames) return aliascolnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CommonTableExpr::mutable_aliascolnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.aliascolnames) return &aliascolnames_; } inline const ::pg_query::Node& CommonTableExpr::_internal_aliascolnames(int index) const { return aliascolnames_.Get(index); } inline const ::pg_query::Node& CommonTableExpr::aliascolnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.aliascolnames) return _internal_aliascolnames(index); } inline ::pg_query::Node* CommonTableExpr::_internal_add_aliascolnames() { return aliascolnames_.Add(); } inline ::pg_query::Node* CommonTableExpr::add_aliascolnames() { // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.aliascolnames) return _internal_add_aliascolnames(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CommonTableExpr::aliascolnames() const { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.aliascolnames) return aliascolnames_; } // .pg_query.CTEMaterialize ctematerialized = 3 [json_name = "ctematerialized"]; inline void CommonTableExpr::clear_ctematerialized() { ctematerialized_ = 0; } inline ::pg_query::CTEMaterialize CommonTableExpr::_internal_ctematerialized() const { return static_cast< ::pg_query::CTEMaterialize >(ctematerialized_); } inline ::pg_query::CTEMaterialize CommonTableExpr::ctematerialized() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctematerialized) return _internal_ctematerialized(); } inline void CommonTableExpr::_internal_set_ctematerialized(::pg_query::CTEMaterialize value) { ctematerialized_ = value; } inline void CommonTableExpr::set_ctematerialized(::pg_query::CTEMaterialize value) { _internal_set_ctematerialized(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.ctematerialized) } // .pg_query.Node ctequery = 4 [json_name = "ctequery"]; inline bool CommonTableExpr::_internal_has_ctequery() const { return this != internal_default_instance() && ctequery_ != nullptr; } inline bool CommonTableExpr::has_ctequery() const { return _internal_has_ctequery(); } inline void CommonTableExpr::clear_ctequery() { if (GetArena() == nullptr && ctequery_ != nullptr) { delete ctequery_; } ctequery_ = nullptr; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctequery() const { const ::pg_query::Node* p = ctequery_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& CommonTableExpr::ctequery() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctequery) return _internal_ctequery(); } inline void CommonTableExpr::unsafe_arena_set_allocated_ctequery( ::pg_query::Node* ctequery) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(ctequery_); } ctequery_ = ctequery; if (ctequery) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.CommonTableExpr.ctequery) } inline ::pg_query::Node* CommonTableExpr::release_ctequery() { ::pg_query::Node* temp = ctequery_; ctequery_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* CommonTableExpr::unsafe_arena_release_ctequery() { // @@protoc_insertion_point(field_release:pg_query.CommonTableExpr.ctequery) ::pg_query::Node* temp = ctequery_; ctequery_ = nullptr; return temp; } inline ::pg_query::Node* CommonTableExpr::_internal_mutable_ctequery() { if (ctequery_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); ctequery_ = p; } return ctequery_; } inline ::pg_query::Node* CommonTableExpr::mutable_ctequery() { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctequery) return _internal_mutable_ctequery(); } inline void CommonTableExpr::set_allocated_ctequery(::pg_query::Node* ctequery) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete ctequery_; } if (ctequery) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(ctequery); if (message_arena != submessage_arena) { ctequery = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, ctequery, submessage_arena); } } else { } ctequery_ = ctequery; // @@protoc_insertion_point(field_set_allocated:pg_query.CommonTableExpr.ctequery) } // int32 location = 5 [json_name = "location"]; inline void CommonTableExpr::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CommonTableExpr::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CommonTableExpr::location() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.location) return _internal_location(); } inline void CommonTableExpr::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void CommonTableExpr::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.location) } // bool cterecursive = 6 [json_name = "cterecursive"]; inline void CommonTableExpr::clear_cterecursive() { cterecursive_ = false; } inline bool CommonTableExpr::_internal_cterecursive() const { return cterecursive_; } inline bool CommonTableExpr::cterecursive() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.cterecursive) return _internal_cterecursive(); } inline void CommonTableExpr::_internal_set_cterecursive(bool value) { cterecursive_ = value; } inline void CommonTableExpr::set_cterecursive(bool value) { _internal_set_cterecursive(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.cterecursive) } // int32 cterefcount = 7 [json_name = "cterefcount"]; inline void CommonTableExpr::clear_cterefcount() { cterefcount_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 CommonTableExpr::_internal_cterefcount() const { return cterefcount_; } inline ::PROTOBUF_NAMESPACE_ID::int32 CommonTableExpr::cterefcount() const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.cterefcount) return _internal_cterefcount(); } inline void CommonTableExpr::_internal_set_cterefcount(::PROTOBUF_NAMESPACE_ID::int32 value) { cterefcount_ = value; } inline void CommonTableExpr::set_cterefcount(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_cterefcount(value); // @@protoc_insertion_point(field_set:pg_query.CommonTableExpr.cterefcount) } // repeated .pg_query.Node ctecolnames = 8 [json_name = "ctecolnames"]; inline int CommonTableExpr::_internal_ctecolnames_size() const { return ctecolnames_.size(); } inline int CommonTableExpr::ctecolnames_size() const { return _internal_ctecolnames_size(); } inline void CommonTableExpr::clear_ctecolnames() { ctecolnames_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecolnames(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecolnames) return ctecolnames_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CommonTableExpr::mutable_ctecolnames() { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecolnames) return &ctecolnames_; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctecolnames(int index) const { return ctecolnames_.Get(index); } inline const ::pg_query::Node& CommonTableExpr::ctecolnames(int index) const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecolnames) return _internal_ctecolnames(index); } inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecolnames() { return ctecolnames_.Add(); } inline ::pg_query::Node* CommonTableExpr::add_ctecolnames() { // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecolnames) return _internal_add_ctecolnames(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CommonTableExpr::ctecolnames() const { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecolnames) return ctecolnames_; } // repeated .pg_query.Node ctecoltypes = 9 [json_name = "ctecoltypes"]; inline int CommonTableExpr::_internal_ctecoltypes_size() const { return ctecoltypes_.size(); } inline int CommonTableExpr::ctecoltypes_size() const { return _internal_ctecoltypes_size(); } inline void CommonTableExpr::clear_ctecoltypes() { ctecoltypes_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecoltypes(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecoltypes) return ctecoltypes_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CommonTableExpr::mutable_ctecoltypes() { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecoltypes) return &ctecoltypes_; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctecoltypes(int index) const { return ctecoltypes_.Get(index); } inline const ::pg_query::Node& CommonTableExpr::ctecoltypes(int index) const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecoltypes) return _internal_ctecoltypes(index); } inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecoltypes() { return ctecoltypes_.Add(); } inline ::pg_query::Node* CommonTableExpr::add_ctecoltypes() { // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecoltypes) return _internal_add_ctecoltypes(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CommonTableExpr::ctecoltypes() const { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecoltypes) return ctecoltypes_; } // repeated .pg_query.Node ctecoltypmods = 10 [json_name = "ctecoltypmods"]; inline int CommonTableExpr::_internal_ctecoltypmods_size() const { return ctecoltypmods_.size(); } inline int CommonTableExpr::ctecoltypmods_size() const { return _internal_ctecoltypmods_size(); } inline void CommonTableExpr::clear_ctecoltypmods() { ctecoltypmods_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecoltypmods(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecoltypmods) return ctecoltypmods_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CommonTableExpr::mutable_ctecoltypmods() { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecoltypmods) return &ctecoltypmods_; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctecoltypmods(int index) const { return ctecoltypmods_.Get(index); } inline const ::pg_query::Node& CommonTableExpr::ctecoltypmods(int index) const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecoltypmods) return _internal_ctecoltypmods(index); } inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecoltypmods() { return ctecoltypmods_.Add(); } inline ::pg_query::Node* CommonTableExpr::add_ctecoltypmods() { // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecoltypmods) return _internal_add_ctecoltypmods(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CommonTableExpr::ctecoltypmods() const { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecoltypmods) return ctecoltypmods_; } // repeated .pg_query.Node ctecolcollations = 11 [json_name = "ctecolcollations"]; inline int CommonTableExpr::_internal_ctecolcollations_size() const { return ctecolcollations_.size(); } inline int CommonTableExpr::ctecolcollations_size() const { return _internal_ctecolcollations_size(); } inline void CommonTableExpr::clear_ctecolcollations() { ctecolcollations_.Clear(); } inline ::pg_query::Node* CommonTableExpr::mutable_ctecolcollations(int index) { // @@protoc_insertion_point(field_mutable:pg_query.CommonTableExpr.ctecolcollations) return ctecolcollations_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* CommonTableExpr::mutable_ctecolcollations() { // @@protoc_insertion_point(field_mutable_list:pg_query.CommonTableExpr.ctecolcollations) return &ctecolcollations_; } inline const ::pg_query::Node& CommonTableExpr::_internal_ctecolcollations(int index) const { return ctecolcollations_.Get(index); } inline const ::pg_query::Node& CommonTableExpr::ctecolcollations(int index) const { // @@protoc_insertion_point(field_get:pg_query.CommonTableExpr.ctecolcollations) return _internal_ctecolcollations(index); } inline ::pg_query::Node* CommonTableExpr::_internal_add_ctecolcollations() { return ctecolcollations_.Add(); } inline ::pg_query::Node* CommonTableExpr::add_ctecolcollations() { // @@protoc_insertion_point(field_add:pg_query.CommonTableExpr.ctecolcollations) return _internal_add_ctecolcollations(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& CommonTableExpr::ctecolcollations() const { // @@protoc_insertion_point(field_list:pg_query.CommonTableExpr.ctecolcollations) return ctecolcollations_; } // ------------------------------------------------------------------- // RoleSpec // .pg_query.RoleSpecType roletype = 1 [json_name = "roletype"]; inline void RoleSpec::clear_roletype() { roletype_ = 0; } inline ::pg_query::RoleSpecType RoleSpec::_internal_roletype() const { return static_cast< ::pg_query::RoleSpecType >(roletype_); } inline ::pg_query::RoleSpecType RoleSpec::roletype() const { // @@protoc_insertion_point(field_get:pg_query.RoleSpec.roletype) return _internal_roletype(); } inline void RoleSpec::_internal_set_roletype(::pg_query::RoleSpecType value) { roletype_ = value; } inline void RoleSpec::set_roletype(::pg_query::RoleSpecType value) { _internal_set_roletype(value); // @@protoc_insertion_point(field_set:pg_query.RoleSpec.roletype) } // string rolename = 2 [json_name = "rolename"]; inline void RoleSpec::clear_rolename() { rolename_.ClearToEmpty(); } inline const std::string& RoleSpec::rolename() const { // @@protoc_insertion_point(field_get:pg_query.RoleSpec.rolename) return _internal_rolename(); } inline void RoleSpec::set_rolename(const std::string& value) { _internal_set_rolename(value); // @@protoc_insertion_point(field_set:pg_query.RoleSpec.rolename) } inline std::string* RoleSpec::mutable_rolename() { // @@protoc_insertion_point(field_mutable:pg_query.RoleSpec.rolename) return _internal_mutable_rolename(); } inline const std::string& RoleSpec::_internal_rolename() const { return rolename_.Get(); } inline void RoleSpec::_internal_set_rolename(const std::string& value) { rolename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void RoleSpec::set_rolename(std::string&& value) { rolename_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.RoleSpec.rolename) } inline void RoleSpec::set_rolename(const char* value) { GOOGLE_DCHECK(value != nullptr); rolename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.RoleSpec.rolename) } inline void RoleSpec::set_rolename(const char* value, size_t size) { rolename_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.RoleSpec.rolename) } inline std::string* RoleSpec::_internal_mutable_rolename() { return rolename_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* RoleSpec::release_rolename() { // @@protoc_insertion_point(field_release:pg_query.RoleSpec.rolename) return rolename_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void RoleSpec::set_allocated_rolename(std::string* rolename) { if (rolename != nullptr) { } else { } rolename_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), rolename, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.RoleSpec.rolename) } // int32 location = 3 [json_name = "location"]; inline void RoleSpec::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 RoleSpec::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 RoleSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.RoleSpec.location) return _internal_location(); } inline void RoleSpec::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void RoleSpec::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.RoleSpec.location) } // ------------------------------------------------------------------- // TriggerTransition // string name = 1 [json_name = "name"]; inline void TriggerTransition::clear_name() { name_.ClearToEmpty(); } inline const std::string& TriggerTransition::name() const { // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.name) return _internal_name(); } inline void TriggerTransition::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.name) } inline std::string* TriggerTransition::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.TriggerTransition.name) return _internal_mutable_name(); } inline const std::string& TriggerTransition::_internal_name() const { return name_.Get(); } inline void TriggerTransition::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void TriggerTransition::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.TriggerTransition.name) } inline void TriggerTransition::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.TriggerTransition.name) } inline void TriggerTransition::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.TriggerTransition.name) } inline std::string* TriggerTransition::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* TriggerTransition::release_name() { // @@protoc_insertion_point(field_release:pg_query.TriggerTransition.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void TriggerTransition::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.TriggerTransition.name) } // bool is_new = 2 [json_name = "isNew"]; inline void TriggerTransition::clear_is_new() { is_new_ = false; } inline bool TriggerTransition::_internal_is_new() const { return is_new_; } inline bool TriggerTransition::is_new() const { // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.is_new) return _internal_is_new(); } inline void TriggerTransition::_internal_set_is_new(bool value) { is_new_ = value; } inline void TriggerTransition::set_is_new(bool value) { _internal_set_is_new(value); // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.is_new) } // bool is_table = 3 [json_name = "isTable"]; inline void TriggerTransition::clear_is_table() { is_table_ = false; } inline bool TriggerTransition::_internal_is_table() const { return is_table_; } inline bool TriggerTransition::is_table() const { // @@protoc_insertion_point(field_get:pg_query.TriggerTransition.is_table) return _internal_is_table(); } inline void TriggerTransition::_internal_set_is_table(bool value) { is_table_ = value; } inline void TriggerTransition::set_is_table(bool value) { _internal_set_is_table(value); // @@protoc_insertion_point(field_set:pg_query.TriggerTransition.is_table) } // ------------------------------------------------------------------- // PartitionElem // string name = 1 [json_name = "name"]; inline void PartitionElem::clear_name() { name_.ClearToEmpty(); } inline const std::string& PartitionElem::name() const { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.name) return _internal_name(); } inline void PartitionElem::set_name(const std::string& value) { _internal_set_name(value); // @@protoc_insertion_point(field_set:pg_query.PartitionElem.name) } inline std::string* PartitionElem::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.name) return _internal_mutable_name(); } inline const std::string& PartitionElem::_internal_name() const { return name_.Get(); } inline void PartitionElem::_internal_set_name(const std::string& value) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void PartitionElem::set_name(std::string&& value) { name_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.PartitionElem.name) } inline void PartitionElem::set_name(const char* value) { GOOGLE_DCHECK(value != nullptr); name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.PartitionElem.name) } inline void PartitionElem::set_name(const char* value, size_t size) { name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.PartitionElem.name) } inline std::string* PartitionElem::_internal_mutable_name() { return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* PartitionElem::release_name() { // @@protoc_insertion_point(field_release:pg_query.PartitionElem.name) return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void PartitionElem::set_allocated_name(std::string* name) { if (name != nullptr) { } else { } name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionElem.name) } // .pg_query.Node expr = 2 [json_name = "expr"]; inline bool PartitionElem::_internal_has_expr() const { return this != internal_default_instance() && expr_ != nullptr; } inline bool PartitionElem::has_expr() const { return _internal_has_expr(); } inline void PartitionElem::clear_expr() { if (GetArena() == nullptr && expr_ != nullptr) { delete expr_; } expr_ = nullptr; } inline const ::pg_query::Node& PartitionElem::_internal_expr() const { const ::pg_query::Node* p = expr_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& PartitionElem::expr() const { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.expr) return _internal_expr(); } inline void PartitionElem::unsafe_arena_set_allocated_expr( ::pg_query::Node* expr) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(expr_); } expr_ = expr; if (expr) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionElem.expr) } inline ::pg_query::Node* PartitionElem::release_expr() { ::pg_query::Node* temp = expr_; expr_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* PartitionElem::unsafe_arena_release_expr() { // @@protoc_insertion_point(field_release:pg_query.PartitionElem.expr) ::pg_query::Node* temp = expr_; expr_ = nullptr; return temp; } inline ::pg_query::Node* PartitionElem::_internal_mutable_expr() { if (expr_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); expr_ = p; } return expr_; } inline ::pg_query::Node* PartitionElem::mutable_expr() { // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.expr) return _internal_mutable_expr(); } inline void PartitionElem::set_allocated_expr(::pg_query::Node* expr) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete expr_; } if (expr) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(expr); if (message_arena != submessage_arena) { expr = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, expr, submessage_arena); } } else { } expr_ = expr; // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionElem.expr) } // repeated .pg_query.Node collation = 3 [json_name = "collation"]; inline int PartitionElem::_internal_collation_size() const { return collation_.size(); } inline int PartitionElem::collation_size() const { return _internal_collation_size(); } inline void PartitionElem::clear_collation() { collation_.Clear(); } inline ::pg_query::Node* PartitionElem::mutable_collation(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.collation) return collation_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionElem::mutable_collation() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionElem.collation) return &collation_; } inline const ::pg_query::Node& PartitionElem::_internal_collation(int index) const { return collation_.Get(index); } inline const ::pg_query::Node& PartitionElem::collation(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.collation) return _internal_collation(index); } inline ::pg_query::Node* PartitionElem::_internal_add_collation() { return collation_.Add(); } inline ::pg_query::Node* PartitionElem::add_collation() { // @@protoc_insertion_point(field_add:pg_query.PartitionElem.collation) return _internal_add_collation(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionElem::collation() const { // @@protoc_insertion_point(field_list:pg_query.PartitionElem.collation) return collation_; } // repeated .pg_query.Node opclass = 4 [json_name = "opclass"]; inline int PartitionElem::_internal_opclass_size() const { return opclass_.size(); } inline int PartitionElem::opclass_size() const { return _internal_opclass_size(); } inline void PartitionElem::clear_opclass() { opclass_.Clear(); } inline ::pg_query::Node* PartitionElem::mutable_opclass(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionElem.opclass) return opclass_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionElem::mutable_opclass() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionElem.opclass) return &opclass_; } inline const ::pg_query::Node& PartitionElem::_internal_opclass(int index) const { return opclass_.Get(index); } inline const ::pg_query::Node& PartitionElem::opclass(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.opclass) return _internal_opclass(index); } inline ::pg_query::Node* PartitionElem::_internal_add_opclass() { return opclass_.Add(); } inline ::pg_query::Node* PartitionElem::add_opclass() { // @@protoc_insertion_point(field_add:pg_query.PartitionElem.opclass) return _internal_add_opclass(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionElem::opclass() const { // @@protoc_insertion_point(field_list:pg_query.PartitionElem.opclass) return opclass_; } // int32 location = 5 [json_name = "location"]; inline void PartitionElem::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionElem::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionElem::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionElem.location) return _internal_location(); } inline void PartitionElem::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void PartitionElem::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionElem.location) } // ------------------------------------------------------------------- // PartitionSpec // string strategy = 1 [json_name = "strategy"]; inline void PartitionSpec::clear_strategy() { strategy_.ClearToEmpty(); } inline const std::string& PartitionSpec::strategy() const { // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.strategy) return _internal_strategy(); } inline void PartitionSpec::set_strategy(const std::string& value) { _internal_set_strategy(value); // @@protoc_insertion_point(field_set:pg_query.PartitionSpec.strategy) } inline std::string* PartitionSpec::mutable_strategy() { // @@protoc_insertion_point(field_mutable:pg_query.PartitionSpec.strategy) return _internal_mutable_strategy(); } inline const std::string& PartitionSpec::_internal_strategy() const { return strategy_.Get(); } inline void PartitionSpec::_internal_set_strategy(const std::string& value) { strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void PartitionSpec::set_strategy(std::string&& value) { strategy_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.PartitionSpec.strategy) } inline void PartitionSpec::set_strategy(const char* value) { GOOGLE_DCHECK(value != nullptr); strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.PartitionSpec.strategy) } inline void PartitionSpec::set_strategy(const char* value, size_t size) { strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.PartitionSpec.strategy) } inline std::string* PartitionSpec::_internal_mutable_strategy() { return strategy_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* PartitionSpec::release_strategy() { // @@protoc_insertion_point(field_release:pg_query.PartitionSpec.strategy) return strategy_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void PartitionSpec::set_allocated_strategy(std::string* strategy) { if (strategy != nullptr) { } else { } strategy_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), strategy, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionSpec.strategy) } // repeated .pg_query.Node part_params = 2 [json_name = "partParams"]; inline int PartitionSpec::_internal_part_params_size() const { return part_params_.size(); } inline int PartitionSpec::part_params_size() const { return _internal_part_params_size(); } inline void PartitionSpec::clear_part_params() { part_params_.Clear(); } inline ::pg_query::Node* PartitionSpec::mutable_part_params(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionSpec.part_params) return part_params_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionSpec::mutable_part_params() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionSpec.part_params) return &part_params_; } inline const ::pg_query::Node& PartitionSpec::_internal_part_params(int index) const { return part_params_.Get(index); } inline const ::pg_query::Node& PartitionSpec::part_params(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.part_params) return _internal_part_params(index); } inline ::pg_query::Node* PartitionSpec::_internal_add_part_params() { return part_params_.Add(); } inline ::pg_query::Node* PartitionSpec::add_part_params() { // @@protoc_insertion_point(field_add:pg_query.PartitionSpec.part_params) return _internal_add_part_params(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionSpec::part_params() const { // @@protoc_insertion_point(field_list:pg_query.PartitionSpec.part_params) return part_params_; } // int32 location = 3 [json_name = "location"]; inline void PartitionSpec::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionSpec::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionSpec.location) return _internal_location(); } inline void PartitionSpec::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void PartitionSpec::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionSpec.location) } // ------------------------------------------------------------------- // PartitionBoundSpec // string strategy = 1 [json_name = "strategy"]; inline void PartitionBoundSpec::clear_strategy() { strategy_.ClearToEmpty(); } inline const std::string& PartitionBoundSpec::strategy() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.strategy) return _internal_strategy(); } inline void PartitionBoundSpec::set_strategy(const std::string& value) { _internal_set_strategy(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.strategy) } inline std::string* PartitionBoundSpec::mutable_strategy() { // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.strategy) return _internal_mutable_strategy(); } inline const std::string& PartitionBoundSpec::_internal_strategy() const { return strategy_.Get(); } inline void PartitionBoundSpec::_internal_set_strategy(const std::string& value) { strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void PartitionBoundSpec::set_strategy(std::string&& value) { strategy_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.PartitionBoundSpec.strategy) } inline void PartitionBoundSpec::set_strategy(const char* value) { GOOGLE_DCHECK(value != nullptr); strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.PartitionBoundSpec.strategy) } inline void PartitionBoundSpec::set_strategy(const char* value, size_t size) { strategy_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.PartitionBoundSpec.strategy) } inline std::string* PartitionBoundSpec::_internal_mutable_strategy() { return strategy_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* PartitionBoundSpec::release_strategy() { // @@protoc_insertion_point(field_release:pg_query.PartitionBoundSpec.strategy) return strategy_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void PartitionBoundSpec::set_allocated_strategy(std::string* strategy) { if (strategy != nullptr) { } else { } strategy_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), strategy, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionBoundSpec.strategy) } // bool is_default = 2 [json_name = "is_default"]; inline void PartitionBoundSpec::clear_is_default() { is_default_ = false; } inline bool PartitionBoundSpec::_internal_is_default() const { return is_default_; } inline bool PartitionBoundSpec::is_default() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.is_default) return _internal_is_default(); } inline void PartitionBoundSpec::_internal_set_is_default(bool value) { is_default_ = value; } inline void PartitionBoundSpec::set_is_default(bool value) { _internal_set_is_default(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.is_default) } // int32 modulus = 3 [json_name = "modulus"]; inline void PartitionBoundSpec::clear_modulus() { modulus_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::_internal_modulus() const { return modulus_; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::modulus() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.modulus) return _internal_modulus(); } inline void PartitionBoundSpec::_internal_set_modulus(::PROTOBUF_NAMESPACE_ID::int32 value) { modulus_ = value; } inline void PartitionBoundSpec::set_modulus(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_modulus(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.modulus) } // int32 remainder = 4 [json_name = "remainder"]; inline void PartitionBoundSpec::clear_remainder() { remainder_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::_internal_remainder() const { return remainder_; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::remainder() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.remainder) return _internal_remainder(); } inline void PartitionBoundSpec::_internal_set_remainder(::PROTOBUF_NAMESPACE_ID::int32 value) { remainder_ = value; } inline void PartitionBoundSpec::set_remainder(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_remainder(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.remainder) } // repeated .pg_query.Node listdatums = 5 [json_name = "listdatums"]; inline int PartitionBoundSpec::_internal_listdatums_size() const { return listdatums_.size(); } inline int PartitionBoundSpec::listdatums_size() const { return _internal_listdatums_size(); } inline void PartitionBoundSpec::clear_listdatums() { listdatums_.Clear(); } inline ::pg_query::Node* PartitionBoundSpec::mutable_listdatums(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.listdatums) return listdatums_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionBoundSpec::mutable_listdatums() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.listdatums) return &listdatums_; } inline const ::pg_query::Node& PartitionBoundSpec::_internal_listdatums(int index) const { return listdatums_.Get(index); } inline const ::pg_query::Node& PartitionBoundSpec::listdatums(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.listdatums) return _internal_listdatums(index); } inline ::pg_query::Node* PartitionBoundSpec::_internal_add_listdatums() { return listdatums_.Add(); } inline ::pg_query::Node* PartitionBoundSpec::add_listdatums() { // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.listdatums) return _internal_add_listdatums(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionBoundSpec::listdatums() const { // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.listdatums) return listdatums_; } // repeated .pg_query.Node lowerdatums = 6 [json_name = "lowerdatums"]; inline int PartitionBoundSpec::_internal_lowerdatums_size() const { return lowerdatums_.size(); } inline int PartitionBoundSpec::lowerdatums_size() const { return _internal_lowerdatums_size(); } inline void PartitionBoundSpec::clear_lowerdatums() { lowerdatums_.Clear(); } inline ::pg_query::Node* PartitionBoundSpec::mutable_lowerdatums(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.lowerdatums) return lowerdatums_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionBoundSpec::mutable_lowerdatums() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.lowerdatums) return &lowerdatums_; } inline const ::pg_query::Node& PartitionBoundSpec::_internal_lowerdatums(int index) const { return lowerdatums_.Get(index); } inline const ::pg_query::Node& PartitionBoundSpec::lowerdatums(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.lowerdatums) return _internal_lowerdatums(index); } inline ::pg_query::Node* PartitionBoundSpec::_internal_add_lowerdatums() { return lowerdatums_.Add(); } inline ::pg_query::Node* PartitionBoundSpec::add_lowerdatums() { // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.lowerdatums) return _internal_add_lowerdatums(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionBoundSpec::lowerdatums() const { // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.lowerdatums) return lowerdatums_; } // repeated .pg_query.Node upperdatums = 7 [json_name = "upperdatums"]; inline int PartitionBoundSpec::_internal_upperdatums_size() const { return upperdatums_.size(); } inline int PartitionBoundSpec::upperdatums_size() const { return _internal_upperdatums_size(); } inline void PartitionBoundSpec::clear_upperdatums() { upperdatums_.Clear(); } inline ::pg_query::Node* PartitionBoundSpec::mutable_upperdatums(int index) { // @@protoc_insertion_point(field_mutable:pg_query.PartitionBoundSpec.upperdatums) return upperdatums_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* PartitionBoundSpec::mutable_upperdatums() { // @@protoc_insertion_point(field_mutable_list:pg_query.PartitionBoundSpec.upperdatums) return &upperdatums_; } inline const ::pg_query::Node& PartitionBoundSpec::_internal_upperdatums(int index) const { return upperdatums_.Get(index); } inline const ::pg_query::Node& PartitionBoundSpec::upperdatums(int index) const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.upperdatums) return _internal_upperdatums(index); } inline ::pg_query::Node* PartitionBoundSpec::_internal_add_upperdatums() { return upperdatums_.Add(); } inline ::pg_query::Node* PartitionBoundSpec::add_upperdatums() { // @@protoc_insertion_point(field_add:pg_query.PartitionBoundSpec.upperdatums) return _internal_add_upperdatums(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& PartitionBoundSpec::upperdatums() const { // @@protoc_insertion_point(field_list:pg_query.PartitionBoundSpec.upperdatums) return upperdatums_; } // int32 location = 8 [json_name = "location"]; inline void PartitionBoundSpec::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionBoundSpec::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionBoundSpec.location) return _internal_location(); } inline void PartitionBoundSpec::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void PartitionBoundSpec::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionBoundSpec.location) } // ------------------------------------------------------------------- // PartitionRangeDatum // .pg_query.PartitionRangeDatumKind kind = 1 [json_name = "kind"]; inline void PartitionRangeDatum::clear_kind() { kind_ = 0; } inline ::pg_query::PartitionRangeDatumKind PartitionRangeDatum::_internal_kind() const { return static_cast< ::pg_query::PartitionRangeDatumKind >(kind_); } inline ::pg_query::PartitionRangeDatumKind PartitionRangeDatum::kind() const { // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.kind) return _internal_kind(); } inline void PartitionRangeDatum::_internal_set_kind(::pg_query::PartitionRangeDatumKind value) { kind_ = value; } inline void PartitionRangeDatum::set_kind(::pg_query::PartitionRangeDatumKind value) { _internal_set_kind(value); // @@protoc_insertion_point(field_set:pg_query.PartitionRangeDatum.kind) } // .pg_query.Node value = 2 [json_name = "value"]; inline bool PartitionRangeDatum::_internal_has_value() const { return this != internal_default_instance() && value_ != nullptr; } inline bool PartitionRangeDatum::has_value() const { return _internal_has_value(); } inline void PartitionRangeDatum::clear_value() { if (GetArena() == nullptr && value_ != nullptr) { delete value_; } value_ = nullptr; } inline const ::pg_query::Node& PartitionRangeDatum::_internal_value() const { const ::pg_query::Node* p = value_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_Node_default_instance_); } inline const ::pg_query::Node& PartitionRangeDatum::value() const { // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.value) return _internal_value(); } inline void PartitionRangeDatum::unsafe_arena_set_allocated_value( ::pg_query::Node* value) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(value_); } value_ = value; if (value) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionRangeDatum.value) } inline ::pg_query::Node* PartitionRangeDatum::release_value() { ::pg_query::Node* temp = value_; value_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::Node* PartitionRangeDatum::unsafe_arena_release_value() { // @@protoc_insertion_point(field_release:pg_query.PartitionRangeDatum.value) ::pg_query::Node* temp = value_; value_ = nullptr; return temp; } inline ::pg_query::Node* PartitionRangeDatum::_internal_mutable_value() { if (value_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::Node>(GetArena()); value_ = p; } return value_; } inline ::pg_query::Node* PartitionRangeDatum::mutable_value() { // @@protoc_insertion_point(field_mutable:pg_query.PartitionRangeDatum.value) return _internal_mutable_value(); } inline void PartitionRangeDatum::set_allocated_value(::pg_query::Node* value) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete value_; } if (value) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(value); if (message_arena != submessage_arena) { value = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, value, submessage_arena); } } else { } value_ = value; // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionRangeDatum.value) } // int32 location = 3 [json_name = "location"]; inline void PartitionRangeDatum::clear_location() { location_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionRangeDatum::_internal_location() const { return location_; } inline ::PROTOBUF_NAMESPACE_ID::int32 PartitionRangeDatum::location() const { // @@protoc_insertion_point(field_get:pg_query.PartitionRangeDatum.location) return _internal_location(); } inline void PartitionRangeDatum::_internal_set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { location_ = value; } inline void PartitionRangeDatum::set_location(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_location(value); // @@protoc_insertion_point(field_set:pg_query.PartitionRangeDatum.location) } // ------------------------------------------------------------------- // PartitionCmd // .pg_query.RangeVar name = 1 [json_name = "name"]; inline bool PartitionCmd::_internal_has_name() const { return this != internal_default_instance() && name_ != nullptr; } inline bool PartitionCmd::has_name() const { return _internal_has_name(); } inline void PartitionCmd::clear_name() { if (GetArena() == nullptr && name_ != nullptr) { delete name_; } name_ = nullptr; } inline const ::pg_query::RangeVar& PartitionCmd::_internal_name() const { const ::pg_query::RangeVar* p = name_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& PartitionCmd::name() const { // @@protoc_insertion_point(field_get:pg_query.PartitionCmd.name) return _internal_name(); } inline void PartitionCmd::unsafe_arena_set_allocated_name( ::pg_query::RangeVar* name) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(name_); } name_ = name; if (name) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionCmd.name) } inline ::pg_query::RangeVar* PartitionCmd::release_name() { ::pg_query::RangeVar* temp = name_; name_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* PartitionCmd::unsafe_arena_release_name() { // @@protoc_insertion_point(field_release:pg_query.PartitionCmd.name) ::pg_query::RangeVar* temp = name_; name_ = nullptr; return temp; } inline ::pg_query::RangeVar* PartitionCmd::_internal_mutable_name() { if (name_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); name_ = p; } return name_; } inline ::pg_query::RangeVar* PartitionCmd::mutable_name() { // @@protoc_insertion_point(field_mutable:pg_query.PartitionCmd.name) return _internal_mutable_name(); } inline void PartitionCmd::set_allocated_name(::pg_query::RangeVar* name) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete name_; } if (name) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(name); if (message_arena != submessage_arena) { name = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, name, submessage_arena); } } else { } name_ = name; // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionCmd.name) } // .pg_query.PartitionBoundSpec bound = 2 [json_name = "bound"]; inline bool PartitionCmd::_internal_has_bound() const { return this != internal_default_instance() && bound_ != nullptr; } inline bool PartitionCmd::has_bound() const { return _internal_has_bound(); } inline void PartitionCmd::clear_bound() { if (GetArena() == nullptr && bound_ != nullptr) { delete bound_; } bound_ = nullptr; } inline const ::pg_query::PartitionBoundSpec& PartitionCmd::_internal_bound() const { const ::pg_query::PartitionBoundSpec* p = bound_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_PartitionBoundSpec_default_instance_); } inline const ::pg_query::PartitionBoundSpec& PartitionCmd::bound() const { // @@protoc_insertion_point(field_get:pg_query.PartitionCmd.bound) return _internal_bound(); } inline void PartitionCmd::unsafe_arena_set_allocated_bound( ::pg_query::PartitionBoundSpec* bound) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bound_); } bound_ = bound; if (bound) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.PartitionCmd.bound) } inline ::pg_query::PartitionBoundSpec* PartitionCmd::release_bound() { ::pg_query::PartitionBoundSpec* temp = bound_; bound_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::PartitionBoundSpec* PartitionCmd::unsafe_arena_release_bound() { // @@protoc_insertion_point(field_release:pg_query.PartitionCmd.bound) ::pg_query::PartitionBoundSpec* temp = bound_; bound_ = nullptr; return temp; } inline ::pg_query::PartitionBoundSpec* PartitionCmd::_internal_mutable_bound() { if (bound_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::PartitionBoundSpec>(GetArena()); bound_ = p; } return bound_; } inline ::pg_query::PartitionBoundSpec* PartitionCmd::mutable_bound() { // @@protoc_insertion_point(field_mutable:pg_query.PartitionCmd.bound) return _internal_mutable_bound(); } inline void PartitionCmd::set_allocated_bound(::pg_query::PartitionBoundSpec* bound) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete bound_; } if (bound) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(bound); if (message_arena != submessage_arena) { bound = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, bound, submessage_arena); } } else { } bound_ = bound; // @@protoc_insertion_point(field_set_allocated:pg_query.PartitionCmd.bound) } // ------------------------------------------------------------------- // VacuumRelation // .pg_query.RangeVar relation = 1 [json_name = "relation"]; inline bool VacuumRelation::_internal_has_relation() const { return this != internal_default_instance() && relation_ != nullptr; } inline bool VacuumRelation::has_relation() const { return _internal_has_relation(); } inline void VacuumRelation::clear_relation() { if (GetArena() == nullptr && relation_ != nullptr) { delete relation_; } relation_ = nullptr; } inline const ::pg_query::RangeVar& VacuumRelation::_internal_relation() const { const ::pg_query::RangeVar* p = relation_; return p != nullptr ? *p : reinterpret_cast( ::pg_query::_RangeVar_default_instance_); } inline const ::pg_query::RangeVar& VacuumRelation::relation() const { // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.relation) return _internal_relation(); } inline void VacuumRelation::unsafe_arena_set_allocated_relation( ::pg_query::RangeVar* relation) { if (GetArena() == nullptr) { delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(relation_); } relation_ = relation; if (relation) { } else { } // @@protoc_insertion_point(field_unsafe_arena_set_allocated:pg_query.VacuumRelation.relation) } inline ::pg_query::RangeVar* VacuumRelation::release_relation() { ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; if (GetArena() != nullptr) { temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); } return temp; } inline ::pg_query::RangeVar* VacuumRelation::unsafe_arena_release_relation() { // @@protoc_insertion_point(field_release:pg_query.VacuumRelation.relation) ::pg_query::RangeVar* temp = relation_; relation_ = nullptr; return temp; } inline ::pg_query::RangeVar* VacuumRelation::_internal_mutable_relation() { if (relation_ == nullptr) { auto* p = CreateMaybeMessage<::pg_query::RangeVar>(GetArena()); relation_ = p; } return relation_; } inline ::pg_query::RangeVar* VacuumRelation::mutable_relation() { // @@protoc_insertion_point(field_mutable:pg_query.VacuumRelation.relation) return _internal_mutable_relation(); } inline void VacuumRelation::set_allocated_relation(::pg_query::RangeVar* relation) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena(); if (message_arena == nullptr) { delete relation_; } if (relation) { ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(relation); if (message_arena != submessage_arena) { relation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( message_arena, relation, submessage_arena); } } else { } relation_ = relation; // @@protoc_insertion_point(field_set_allocated:pg_query.VacuumRelation.relation) } // uint32 oid = 2 [json_name = "oid"]; inline void VacuumRelation::clear_oid() { oid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 VacuumRelation::_internal_oid() const { return oid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 VacuumRelation::oid() const { // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.oid) return _internal_oid(); } inline void VacuumRelation::_internal_set_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { oid_ = value; } inline void VacuumRelation::set_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_oid(value); // @@protoc_insertion_point(field_set:pg_query.VacuumRelation.oid) } // repeated .pg_query.Node va_cols = 3 [json_name = "va_cols"]; inline int VacuumRelation::_internal_va_cols_size() const { return va_cols_.size(); } inline int VacuumRelation::va_cols_size() const { return _internal_va_cols_size(); } inline void VacuumRelation::clear_va_cols() { va_cols_.Clear(); } inline ::pg_query::Node* VacuumRelation::mutable_va_cols(int index) { // @@protoc_insertion_point(field_mutable:pg_query.VacuumRelation.va_cols) return va_cols_.Mutable(index); } inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >* VacuumRelation::mutable_va_cols() { // @@protoc_insertion_point(field_mutable_list:pg_query.VacuumRelation.va_cols) return &va_cols_; } inline const ::pg_query::Node& VacuumRelation::_internal_va_cols(int index) const { return va_cols_.Get(index); } inline const ::pg_query::Node& VacuumRelation::va_cols(int index) const { // @@protoc_insertion_point(field_get:pg_query.VacuumRelation.va_cols) return _internal_va_cols(index); } inline ::pg_query::Node* VacuumRelation::_internal_add_va_cols() { return va_cols_.Add(); } inline ::pg_query::Node* VacuumRelation::add_va_cols() { // @@protoc_insertion_point(field_add:pg_query.VacuumRelation.va_cols) return _internal_add_va_cols(); } inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::pg_query::Node >& VacuumRelation::va_cols() const { // @@protoc_insertion_point(field_list:pg_query.VacuumRelation.va_cols) return va_cols_; } // ------------------------------------------------------------------- // InlineCodeBlock // string source_text = 1 [json_name = "source_text"]; inline void InlineCodeBlock::clear_source_text() { source_text_.ClearToEmpty(); } inline const std::string& InlineCodeBlock::source_text() const { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.source_text) return _internal_source_text(); } inline void InlineCodeBlock::set_source_text(const std::string& value) { _internal_set_source_text(value); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.source_text) } inline std::string* InlineCodeBlock::mutable_source_text() { // @@protoc_insertion_point(field_mutable:pg_query.InlineCodeBlock.source_text) return _internal_mutable_source_text(); } inline const std::string& InlineCodeBlock::_internal_source_text() const { return source_text_.Get(); } inline void InlineCodeBlock::_internal_set_source_text(const std::string& value) { source_text_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena()); } inline void InlineCodeBlock::set_source_text(std::string&& value) { source_text_.Set( ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena()); // @@protoc_insertion_point(field_set_rvalue:pg_query.InlineCodeBlock.source_text) } inline void InlineCodeBlock::set_source_text(const char* value) { GOOGLE_DCHECK(value != nullptr); source_text_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena()); // @@protoc_insertion_point(field_set_char:pg_query.InlineCodeBlock.source_text) } inline void InlineCodeBlock::set_source_text(const char* value, size_t size) { source_text_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string( reinterpret_cast(value), size), GetArena()); // @@protoc_insertion_point(field_set_pointer:pg_query.InlineCodeBlock.source_text) } inline std::string* InlineCodeBlock::_internal_mutable_source_text() { return source_text_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena()); } inline std::string* InlineCodeBlock::release_source_text() { // @@protoc_insertion_point(field_release:pg_query.InlineCodeBlock.source_text) return source_text_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena()); } inline void InlineCodeBlock::set_allocated_source_text(std::string* source_text) { if (source_text != nullptr) { } else { } source_text_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), source_text, GetArena()); // @@protoc_insertion_point(field_set_allocated:pg_query.InlineCodeBlock.source_text) } // uint32 lang_oid = 2 [json_name = "langOid"]; inline void InlineCodeBlock::clear_lang_oid() { lang_oid_ = 0u; } inline ::PROTOBUF_NAMESPACE_ID::uint32 InlineCodeBlock::_internal_lang_oid() const { return lang_oid_; } inline ::PROTOBUF_NAMESPACE_ID::uint32 InlineCodeBlock::lang_oid() const { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.lang_oid) return _internal_lang_oid(); } inline void InlineCodeBlock::_internal_set_lang_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { lang_oid_ = value; } inline void InlineCodeBlock::set_lang_oid(::PROTOBUF_NAMESPACE_ID::uint32 value) { _internal_set_lang_oid(value); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.lang_oid) } // bool lang_is_trusted = 3 [json_name = "langIsTrusted"]; inline void InlineCodeBlock::clear_lang_is_trusted() { lang_is_trusted_ = false; } inline bool InlineCodeBlock::_internal_lang_is_trusted() const { return lang_is_trusted_; } inline bool InlineCodeBlock::lang_is_trusted() const { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.lang_is_trusted) return _internal_lang_is_trusted(); } inline void InlineCodeBlock::_internal_set_lang_is_trusted(bool value) { lang_is_trusted_ = value; } inline void InlineCodeBlock::set_lang_is_trusted(bool value) { _internal_set_lang_is_trusted(value); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.lang_is_trusted) } // bool atomic = 4 [json_name = "atomic"]; inline void InlineCodeBlock::clear_atomic() { atomic_ = false; } inline bool InlineCodeBlock::_internal_atomic() const { return atomic_; } inline bool InlineCodeBlock::atomic() const { // @@protoc_insertion_point(field_get:pg_query.InlineCodeBlock.atomic) return _internal_atomic(); } inline void InlineCodeBlock::_internal_set_atomic(bool value) { atomic_ = value; } inline void InlineCodeBlock::set_atomic(bool value) { _internal_set_atomic(value); // @@protoc_insertion_point(field_set:pg_query.InlineCodeBlock.atomic) } // ------------------------------------------------------------------- // CallContext // bool atomic = 1 [json_name = "atomic"]; inline void CallContext::clear_atomic() { atomic_ = false; } inline bool CallContext::_internal_atomic() const { return atomic_; } inline bool CallContext::atomic() const { // @@protoc_insertion_point(field_get:pg_query.CallContext.atomic) return _internal_atomic(); } inline void CallContext::_internal_set_atomic(bool value) { atomic_ = value; } inline void CallContext::set_atomic(bool value) { _internal_set_atomic(value); // @@protoc_insertion_point(field_set:pg_query.CallContext.atomic) } // ------------------------------------------------------------------- // ScanToken // int32 start = 1; inline void ScanToken::clear_start() { start_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ScanToken::_internal_start() const { return start_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ScanToken::start() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.start) return _internal_start(); } inline void ScanToken::_internal_set_start(::PROTOBUF_NAMESPACE_ID::int32 value) { start_ = value; } inline void ScanToken::set_start(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_start(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.start) } // int32 end = 2; inline void ScanToken::clear_end() { end_ = 0; } inline ::PROTOBUF_NAMESPACE_ID::int32 ScanToken::_internal_end() const { return end_; } inline ::PROTOBUF_NAMESPACE_ID::int32 ScanToken::end() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.end) return _internal_end(); } inline void ScanToken::_internal_set_end(::PROTOBUF_NAMESPACE_ID::int32 value) { end_ = value; } inline void ScanToken::set_end(::PROTOBUF_NAMESPACE_ID::int32 value) { _internal_set_end(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.end) } // .pg_query.Token token = 4; inline void ScanToken::clear_token() { token_ = 0; } inline ::pg_query::Token ScanToken::_internal_token() const { return static_cast< ::pg_query::Token >(token_); } inline ::pg_query::Token ScanToken::token() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.token) return _internal_token(); } inline void ScanToken::_internal_set_token(::pg_query::Token value) { token_ = value; } inline void ScanToken::set_token(::pg_query::Token value) { _internal_set_token(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.token) } // .pg_query.KeywordKind keyword_kind = 5; inline void ScanToken::clear_keyword_kind() { keyword_kind_ = 0; } inline ::pg_query::KeywordKind ScanToken::_internal_keyword_kind() const { return static_cast< ::pg_query::KeywordKind >(keyword_kind_); } inline ::pg_query::KeywordKind ScanToken::keyword_kind() const { // @@protoc_insertion_point(field_get:pg_query.ScanToken.keyword_kind) return _internal_keyword_kind(); } inline void ScanToken::_internal_set_keyword_kind(::pg_query::KeywordKind value) { keyword_kind_ = value; } inline void ScanToken::set_keyword_kind(::pg_query::KeywordKind value) { _internal_set_keyword_kind(value); // @@protoc_insertion_point(field_set:pg_query.ScanToken.keyword_kind) } #ifdef __GNUC__ #pragma GCC diagnostic pop #endif // __GNUC__ // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // ------------------------------------------------------------------- // @@protoc_insertion_point(namespace_scope) } // namespace pg_query PROTOBUF_NAMESPACE_OPEN template <> struct is_proto_enum< ::pg_query::OverridingKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::OverridingKind>() { return ::pg_query::OverridingKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::QuerySource> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::QuerySource>() { return ::pg_query::QuerySource_descriptor(); } template <> struct is_proto_enum< ::pg_query::SortByDir> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SortByDir>() { return ::pg_query::SortByDir_descriptor(); } template <> struct is_proto_enum< ::pg_query::SortByNulls> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SortByNulls>() { return ::pg_query::SortByNulls_descriptor(); } template <> struct is_proto_enum< ::pg_query::A_Expr_Kind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::A_Expr_Kind>() { return ::pg_query::A_Expr_Kind_descriptor(); } template <> struct is_proto_enum< ::pg_query::RoleSpecType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RoleSpecType>() { return ::pg_query::RoleSpecType_descriptor(); } template <> struct is_proto_enum< ::pg_query::TableLikeOption> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::TableLikeOption>() { return ::pg_query::TableLikeOption_descriptor(); } template <> struct is_proto_enum< ::pg_query::DefElemAction> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::DefElemAction>() { return ::pg_query::DefElemAction_descriptor(); } template <> struct is_proto_enum< ::pg_query::PartitionRangeDatumKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::PartitionRangeDatumKind>() { return ::pg_query::PartitionRangeDatumKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::RTEKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RTEKind>() { return ::pg_query::RTEKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::WCOKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::WCOKind>() { return ::pg_query::WCOKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::GroupingSetKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::GroupingSetKind>() { return ::pg_query::GroupingSetKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::CTEMaterialize> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CTEMaterialize>() { return ::pg_query::CTEMaterialize_descriptor(); } template <> struct is_proto_enum< ::pg_query::SetOperation> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SetOperation>() { return ::pg_query::SetOperation_descriptor(); } template <> struct is_proto_enum< ::pg_query::ObjectType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ObjectType>() { return ::pg_query::ObjectType_descriptor(); } template <> struct is_proto_enum< ::pg_query::DropBehavior> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::DropBehavior>() { return ::pg_query::DropBehavior_descriptor(); } template <> struct is_proto_enum< ::pg_query::AlterTableType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AlterTableType>() { return ::pg_query::AlterTableType_descriptor(); } template <> struct is_proto_enum< ::pg_query::GrantTargetType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::GrantTargetType>() { return ::pg_query::GrantTargetType_descriptor(); } template <> struct is_proto_enum< ::pg_query::VariableSetKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::VariableSetKind>() { return ::pg_query::VariableSetKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::ConstrType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ConstrType>() { return ::pg_query::ConstrType_descriptor(); } template <> struct is_proto_enum< ::pg_query::ImportForeignSchemaType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ImportForeignSchemaType>() { return ::pg_query::ImportForeignSchemaType_descriptor(); } template <> struct is_proto_enum< ::pg_query::RoleStmtType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RoleStmtType>() { return ::pg_query::RoleStmtType_descriptor(); } template <> struct is_proto_enum< ::pg_query::FetchDirection> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::FetchDirection>() { return ::pg_query::FetchDirection_descriptor(); } template <> struct is_proto_enum< ::pg_query::FunctionParameterMode> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::FunctionParameterMode>() { return ::pg_query::FunctionParameterMode_descriptor(); } template <> struct is_proto_enum< ::pg_query::TransactionStmtKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::TransactionStmtKind>() { return ::pg_query::TransactionStmtKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::ViewCheckOption> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ViewCheckOption>() { return ::pg_query::ViewCheckOption_descriptor(); } template <> struct is_proto_enum< ::pg_query::ClusterOption> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ClusterOption>() { return ::pg_query::ClusterOption_descriptor(); } template <> struct is_proto_enum< ::pg_query::DiscardMode> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::DiscardMode>() { return ::pg_query::DiscardMode_descriptor(); } template <> struct is_proto_enum< ::pg_query::ReindexObjectType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ReindexObjectType>() { return ::pg_query::ReindexObjectType_descriptor(); } template <> struct is_proto_enum< ::pg_query::AlterTSConfigType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AlterTSConfigType>() { return ::pg_query::AlterTSConfigType_descriptor(); } template <> struct is_proto_enum< ::pg_query::AlterSubscriptionType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AlterSubscriptionType>() { return ::pg_query::AlterSubscriptionType_descriptor(); } template <> struct is_proto_enum< ::pg_query::OnCommitAction> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::OnCommitAction>() { return ::pg_query::OnCommitAction_descriptor(); } template <> struct is_proto_enum< ::pg_query::ParamKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::ParamKind>() { return ::pg_query::ParamKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::CoercionContext> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CoercionContext>() { return ::pg_query::CoercionContext_descriptor(); } template <> struct is_proto_enum< ::pg_query::CoercionForm> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CoercionForm>() { return ::pg_query::CoercionForm_descriptor(); } template <> struct is_proto_enum< ::pg_query::BoolExprType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::BoolExprType>() { return ::pg_query::BoolExprType_descriptor(); } template <> struct is_proto_enum< ::pg_query::SubLinkType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SubLinkType>() { return ::pg_query::SubLinkType_descriptor(); } template <> struct is_proto_enum< ::pg_query::RowCompareType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::RowCompareType>() { return ::pg_query::RowCompareType_descriptor(); } template <> struct is_proto_enum< ::pg_query::MinMaxOp> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::MinMaxOp>() { return ::pg_query::MinMaxOp_descriptor(); } template <> struct is_proto_enum< ::pg_query::SQLValueFunctionOp> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SQLValueFunctionOp>() { return ::pg_query::SQLValueFunctionOp_descriptor(); } template <> struct is_proto_enum< ::pg_query::XmlExprOp> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::XmlExprOp>() { return ::pg_query::XmlExprOp_descriptor(); } template <> struct is_proto_enum< ::pg_query::XmlOptionType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::XmlOptionType>() { return ::pg_query::XmlOptionType_descriptor(); } template <> struct is_proto_enum< ::pg_query::NullTestType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::NullTestType>() { return ::pg_query::NullTestType_descriptor(); } template <> struct is_proto_enum< ::pg_query::BoolTestType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::BoolTestType>() { return ::pg_query::BoolTestType_descriptor(); } template <> struct is_proto_enum< ::pg_query::CmdType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::CmdType>() { return ::pg_query::CmdType_descriptor(); } template <> struct is_proto_enum< ::pg_query::JoinType> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::JoinType>() { return ::pg_query::JoinType_descriptor(); } template <> struct is_proto_enum< ::pg_query::AggStrategy> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AggStrategy>() { return ::pg_query::AggStrategy_descriptor(); } template <> struct is_proto_enum< ::pg_query::AggSplit> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::AggSplit>() { return ::pg_query::AggSplit_descriptor(); } template <> struct is_proto_enum< ::pg_query::SetOpCmd> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SetOpCmd>() { return ::pg_query::SetOpCmd_descriptor(); } template <> struct is_proto_enum< ::pg_query::SetOpStrategy> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::SetOpStrategy>() { return ::pg_query::SetOpStrategy_descriptor(); } template <> struct is_proto_enum< ::pg_query::OnConflictAction> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::OnConflictAction>() { return ::pg_query::OnConflictAction_descriptor(); } template <> struct is_proto_enum< ::pg_query::LimitOption> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LimitOption>() { return ::pg_query::LimitOption_descriptor(); } template <> struct is_proto_enum< ::pg_query::LockClauseStrength> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LockClauseStrength>() { return ::pg_query::LockClauseStrength_descriptor(); } template <> struct is_proto_enum< ::pg_query::LockWaitPolicy> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LockWaitPolicy>() { return ::pg_query::LockWaitPolicy_descriptor(); } template <> struct is_proto_enum< ::pg_query::LockTupleMode> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::LockTupleMode>() { return ::pg_query::LockTupleMode_descriptor(); } template <> struct is_proto_enum< ::pg_query::KeywordKind> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::KeywordKind>() { return ::pg_query::KeywordKind_descriptor(); } template <> struct is_proto_enum< ::pg_query::Token> : ::std::true_type {}; template <> inline const EnumDescriptor* GetEnumDescriptor< ::pg_query::Token>() { return ::pg_query::Token_descriptor(); } PROTOBUF_NAMESPACE_CLOSE // @@protoc_insertion_point(global_scope) #include #endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_protobuf_2fpg_5fquery_2eproto libpg_query-13-2.1.0/protobuf/pg_query.proto000066400000000000000000003035501413137616400210510ustar00rootroot00000000000000// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb syntax = "proto3"; package pg_query; message ParseResult { int32 version = 1; repeated RawStmt stmts = 2; } message ScanResult { int32 version = 1; repeated ScanToken tokens = 2; } message Node { oneof node { Alias alias = 1 [json_name="Alias"]; RangeVar range_var = 2 [json_name="RangeVar"]; TableFunc table_func = 3 [json_name="TableFunc"]; Expr expr = 4 [json_name="Expr"]; Var var = 5 [json_name="Var"]; Param param = 6 [json_name="Param"]; Aggref aggref = 7 [json_name="Aggref"]; GroupingFunc grouping_func = 8 [json_name="GroupingFunc"]; WindowFunc window_func = 9 [json_name="WindowFunc"]; SubscriptingRef subscripting_ref = 10 [json_name="SubscriptingRef"]; FuncExpr func_expr = 11 [json_name="FuncExpr"]; NamedArgExpr named_arg_expr = 12 [json_name="NamedArgExpr"]; OpExpr op_expr = 13 [json_name="OpExpr"]; DistinctExpr distinct_expr = 14 [json_name="DistinctExpr"]; NullIfExpr null_if_expr = 15 [json_name="NullIfExpr"]; ScalarArrayOpExpr scalar_array_op_expr = 16 [json_name="ScalarArrayOpExpr"]; BoolExpr bool_expr = 17 [json_name="BoolExpr"]; SubLink sub_link = 18 [json_name="SubLink"]; SubPlan sub_plan = 19 [json_name="SubPlan"]; AlternativeSubPlan alternative_sub_plan = 20 [json_name="AlternativeSubPlan"]; FieldSelect field_select = 21 [json_name="FieldSelect"]; FieldStore field_store = 22 [json_name="FieldStore"]; RelabelType relabel_type = 23 [json_name="RelabelType"]; CoerceViaIO coerce_via_io = 24 [json_name="CoerceViaIO"]; ArrayCoerceExpr array_coerce_expr = 25 [json_name="ArrayCoerceExpr"]; ConvertRowtypeExpr convert_rowtype_expr = 26 [json_name="ConvertRowtypeExpr"]; CollateExpr collate_expr = 27 [json_name="CollateExpr"]; CaseExpr case_expr = 28 [json_name="CaseExpr"]; CaseWhen case_when = 29 [json_name="CaseWhen"]; CaseTestExpr case_test_expr = 30 [json_name="CaseTestExpr"]; ArrayExpr array_expr = 31 [json_name="ArrayExpr"]; RowExpr row_expr = 32 [json_name="RowExpr"]; RowCompareExpr row_compare_expr = 33 [json_name="RowCompareExpr"]; CoalesceExpr coalesce_expr = 34 [json_name="CoalesceExpr"]; MinMaxExpr min_max_expr = 35 [json_name="MinMaxExpr"]; SQLValueFunction sqlvalue_function = 36 [json_name="SQLValueFunction"]; XmlExpr xml_expr = 37 [json_name="XmlExpr"]; NullTest null_test = 38 [json_name="NullTest"]; BooleanTest boolean_test = 39 [json_name="BooleanTest"]; CoerceToDomain coerce_to_domain = 40 [json_name="CoerceToDomain"]; CoerceToDomainValue coerce_to_domain_value = 41 [json_name="CoerceToDomainValue"]; SetToDefault set_to_default = 42 [json_name="SetToDefault"]; CurrentOfExpr current_of_expr = 43 [json_name="CurrentOfExpr"]; NextValueExpr next_value_expr = 44 [json_name="NextValueExpr"]; InferenceElem inference_elem = 45 [json_name="InferenceElem"]; TargetEntry target_entry = 46 [json_name="TargetEntry"]; RangeTblRef range_tbl_ref = 47 [json_name="RangeTblRef"]; JoinExpr join_expr = 48 [json_name="JoinExpr"]; FromExpr from_expr = 49 [json_name="FromExpr"]; OnConflictExpr on_conflict_expr = 50 [json_name="OnConflictExpr"]; IntoClause into_clause = 51 [json_name="IntoClause"]; RawStmt raw_stmt = 52 [json_name="RawStmt"]; Query query = 53 [json_name="Query"]; InsertStmt insert_stmt = 54 [json_name="InsertStmt"]; DeleteStmt delete_stmt = 55 [json_name="DeleteStmt"]; UpdateStmt update_stmt = 56 [json_name="UpdateStmt"]; SelectStmt select_stmt = 57 [json_name="SelectStmt"]; AlterTableStmt alter_table_stmt = 58 [json_name="AlterTableStmt"]; AlterTableCmd alter_table_cmd = 59 [json_name="AlterTableCmd"]; AlterDomainStmt alter_domain_stmt = 60 [json_name="AlterDomainStmt"]; SetOperationStmt set_operation_stmt = 61 [json_name="SetOperationStmt"]; GrantStmt grant_stmt = 62 [json_name="GrantStmt"]; GrantRoleStmt grant_role_stmt = 63 [json_name="GrantRoleStmt"]; AlterDefaultPrivilegesStmt alter_default_privileges_stmt = 64 [json_name="AlterDefaultPrivilegesStmt"]; ClosePortalStmt close_portal_stmt = 65 [json_name="ClosePortalStmt"]; ClusterStmt cluster_stmt = 66 [json_name="ClusterStmt"]; CopyStmt copy_stmt = 67 [json_name="CopyStmt"]; CreateStmt create_stmt = 68 [json_name="CreateStmt"]; DefineStmt define_stmt = 69 [json_name="DefineStmt"]; DropStmt drop_stmt = 70 [json_name="DropStmt"]; TruncateStmt truncate_stmt = 71 [json_name="TruncateStmt"]; CommentStmt comment_stmt = 72 [json_name="CommentStmt"]; FetchStmt fetch_stmt = 73 [json_name="FetchStmt"]; IndexStmt index_stmt = 74 [json_name="IndexStmt"]; CreateFunctionStmt create_function_stmt = 75 [json_name="CreateFunctionStmt"]; AlterFunctionStmt alter_function_stmt = 76 [json_name="AlterFunctionStmt"]; DoStmt do_stmt = 77 [json_name="DoStmt"]; RenameStmt rename_stmt = 78 [json_name="RenameStmt"]; RuleStmt rule_stmt = 79 [json_name="RuleStmt"]; NotifyStmt notify_stmt = 80 [json_name="NotifyStmt"]; ListenStmt listen_stmt = 81 [json_name="ListenStmt"]; UnlistenStmt unlisten_stmt = 82 [json_name="UnlistenStmt"]; TransactionStmt transaction_stmt = 83 [json_name="TransactionStmt"]; ViewStmt view_stmt = 84 [json_name="ViewStmt"]; LoadStmt load_stmt = 85 [json_name="LoadStmt"]; CreateDomainStmt create_domain_stmt = 86 [json_name="CreateDomainStmt"]; CreatedbStmt createdb_stmt = 87 [json_name="CreatedbStmt"]; DropdbStmt dropdb_stmt = 88 [json_name="DropdbStmt"]; VacuumStmt vacuum_stmt = 89 [json_name="VacuumStmt"]; ExplainStmt explain_stmt = 90 [json_name="ExplainStmt"]; CreateTableAsStmt create_table_as_stmt = 91 [json_name="CreateTableAsStmt"]; CreateSeqStmt create_seq_stmt = 92 [json_name="CreateSeqStmt"]; AlterSeqStmt alter_seq_stmt = 93 [json_name="AlterSeqStmt"]; VariableSetStmt variable_set_stmt = 94 [json_name="VariableSetStmt"]; VariableShowStmt variable_show_stmt = 95 [json_name="VariableShowStmt"]; DiscardStmt discard_stmt = 96 [json_name="DiscardStmt"]; CreateTrigStmt create_trig_stmt = 97 [json_name="CreateTrigStmt"]; CreatePLangStmt create_plang_stmt = 98 [json_name="CreatePLangStmt"]; CreateRoleStmt create_role_stmt = 99 [json_name="CreateRoleStmt"]; AlterRoleStmt alter_role_stmt = 100 [json_name="AlterRoleStmt"]; DropRoleStmt drop_role_stmt = 101 [json_name="DropRoleStmt"]; LockStmt lock_stmt = 102 [json_name="LockStmt"]; ConstraintsSetStmt constraints_set_stmt = 103 [json_name="ConstraintsSetStmt"]; ReindexStmt reindex_stmt = 104 [json_name="ReindexStmt"]; CheckPointStmt check_point_stmt = 105 [json_name="CheckPointStmt"]; CreateSchemaStmt create_schema_stmt = 106 [json_name="CreateSchemaStmt"]; AlterDatabaseStmt alter_database_stmt = 107 [json_name="AlterDatabaseStmt"]; AlterDatabaseSetStmt alter_database_set_stmt = 108 [json_name="AlterDatabaseSetStmt"]; AlterRoleSetStmt alter_role_set_stmt = 109 [json_name="AlterRoleSetStmt"]; CreateConversionStmt create_conversion_stmt = 110 [json_name="CreateConversionStmt"]; CreateCastStmt create_cast_stmt = 111 [json_name="CreateCastStmt"]; CreateOpClassStmt create_op_class_stmt = 112 [json_name="CreateOpClassStmt"]; CreateOpFamilyStmt create_op_family_stmt = 113 [json_name="CreateOpFamilyStmt"]; AlterOpFamilyStmt alter_op_family_stmt = 114 [json_name="AlterOpFamilyStmt"]; PrepareStmt prepare_stmt = 115 [json_name="PrepareStmt"]; ExecuteStmt execute_stmt = 116 [json_name="ExecuteStmt"]; DeallocateStmt deallocate_stmt = 117 [json_name="DeallocateStmt"]; DeclareCursorStmt declare_cursor_stmt = 118 [json_name="DeclareCursorStmt"]; CreateTableSpaceStmt create_table_space_stmt = 119 [json_name="CreateTableSpaceStmt"]; DropTableSpaceStmt drop_table_space_stmt = 120 [json_name="DropTableSpaceStmt"]; AlterObjectDependsStmt alter_object_depends_stmt = 121 [json_name="AlterObjectDependsStmt"]; AlterObjectSchemaStmt alter_object_schema_stmt = 122 [json_name="AlterObjectSchemaStmt"]; AlterOwnerStmt alter_owner_stmt = 123 [json_name="AlterOwnerStmt"]; AlterOperatorStmt alter_operator_stmt = 124 [json_name="AlterOperatorStmt"]; AlterTypeStmt alter_type_stmt = 125 [json_name="AlterTypeStmt"]; DropOwnedStmt drop_owned_stmt = 126 [json_name="DropOwnedStmt"]; ReassignOwnedStmt reassign_owned_stmt = 127 [json_name="ReassignOwnedStmt"]; CompositeTypeStmt composite_type_stmt = 128 [json_name="CompositeTypeStmt"]; CreateEnumStmt create_enum_stmt = 129 [json_name="CreateEnumStmt"]; CreateRangeStmt create_range_stmt = 130 [json_name="CreateRangeStmt"]; AlterEnumStmt alter_enum_stmt = 131 [json_name="AlterEnumStmt"]; AlterTSDictionaryStmt alter_tsdictionary_stmt = 132 [json_name="AlterTSDictionaryStmt"]; AlterTSConfigurationStmt alter_tsconfiguration_stmt = 133 [json_name="AlterTSConfigurationStmt"]; CreateFdwStmt create_fdw_stmt = 134 [json_name="CreateFdwStmt"]; AlterFdwStmt alter_fdw_stmt = 135 [json_name="AlterFdwStmt"]; CreateForeignServerStmt create_foreign_server_stmt = 136 [json_name="CreateForeignServerStmt"]; AlterForeignServerStmt alter_foreign_server_stmt = 137 [json_name="AlterForeignServerStmt"]; CreateUserMappingStmt create_user_mapping_stmt = 138 [json_name="CreateUserMappingStmt"]; AlterUserMappingStmt alter_user_mapping_stmt = 139 [json_name="AlterUserMappingStmt"]; DropUserMappingStmt drop_user_mapping_stmt = 140 [json_name="DropUserMappingStmt"]; AlterTableSpaceOptionsStmt alter_table_space_options_stmt = 141 [json_name="AlterTableSpaceOptionsStmt"]; AlterTableMoveAllStmt alter_table_move_all_stmt = 142 [json_name="AlterTableMoveAllStmt"]; SecLabelStmt sec_label_stmt = 143 [json_name="SecLabelStmt"]; CreateForeignTableStmt create_foreign_table_stmt = 144 [json_name="CreateForeignTableStmt"]; ImportForeignSchemaStmt import_foreign_schema_stmt = 145 [json_name="ImportForeignSchemaStmt"]; CreateExtensionStmt create_extension_stmt = 146 [json_name="CreateExtensionStmt"]; AlterExtensionStmt alter_extension_stmt = 147 [json_name="AlterExtensionStmt"]; AlterExtensionContentsStmt alter_extension_contents_stmt = 148 [json_name="AlterExtensionContentsStmt"]; CreateEventTrigStmt create_event_trig_stmt = 149 [json_name="CreateEventTrigStmt"]; AlterEventTrigStmt alter_event_trig_stmt = 150 [json_name="AlterEventTrigStmt"]; RefreshMatViewStmt refresh_mat_view_stmt = 151 [json_name="RefreshMatViewStmt"]; ReplicaIdentityStmt replica_identity_stmt = 152 [json_name="ReplicaIdentityStmt"]; AlterSystemStmt alter_system_stmt = 153 [json_name="AlterSystemStmt"]; CreatePolicyStmt create_policy_stmt = 154 [json_name="CreatePolicyStmt"]; AlterPolicyStmt alter_policy_stmt = 155 [json_name="AlterPolicyStmt"]; CreateTransformStmt create_transform_stmt = 156 [json_name="CreateTransformStmt"]; CreateAmStmt create_am_stmt = 157 [json_name="CreateAmStmt"]; CreatePublicationStmt create_publication_stmt = 158 [json_name="CreatePublicationStmt"]; AlterPublicationStmt alter_publication_stmt = 159 [json_name="AlterPublicationStmt"]; CreateSubscriptionStmt create_subscription_stmt = 160 [json_name="CreateSubscriptionStmt"]; AlterSubscriptionStmt alter_subscription_stmt = 161 [json_name="AlterSubscriptionStmt"]; DropSubscriptionStmt drop_subscription_stmt = 162 [json_name="DropSubscriptionStmt"]; CreateStatsStmt create_stats_stmt = 163 [json_name="CreateStatsStmt"]; AlterCollationStmt alter_collation_stmt = 164 [json_name="AlterCollationStmt"]; CallStmt call_stmt = 165 [json_name="CallStmt"]; AlterStatsStmt alter_stats_stmt = 166 [json_name="AlterStatsStmt"]; A_Expr a_expr = 167 [json_name="A_Expr"]; ColumnRef column_ref = 168 [json_name="ColumnRef"]; ParamRef param_ref = 169 [json_name="ParamRef"]; A_Const a_const = 170 [json_name="A_Const"]; FuncCall func_call = 171 [json_name="FuncCall"]; A_Star a_star = 172 [json_name="A_Star"]; A_Indices a_indices = 173 [json_name="A_Indices"]; A_Indirection a_indirection = 174 [json_name="A_Indirection"]; A_ArrayExpr a_array_expr = 175 [json_name="A_ArrayExpr"]; ResTarget res_target = 176 [json_name="ResTarget"]; MultiAssignRef multi_assign_ref = 177 [json_name="MultiAssignRef"]; TypeCast type_cast = 178 [json_name="TypeCast"]; CollateClause collate_clause = 179 [json_name="CollateClause"]; SortBy sort_by = 180 [json_name="SortBy"]; WindowDef window_def = 181 [json_name="WindowDef"]; RangeSubselect range_subselect = 182 [json_name="RangeSubselect"]; RangeFunction range_function = 183 [json_name="RangeFunction"]; RangeTableSample range_table_sample = 184 [json_name="RangeTableSample"]; RangeTableFunc range_table_func = 185 [json_name="RangeTableFunc"]; RangeTableFuncCol range_table_func_col = 186 [json_name="RangeTableFuncCol"]; TypeName type_name = 187 [json_name="TypeName"]; ColumnDef column_def = 188 [json_name="ColumnDef"]; IndexElem index_elem = 189 [json_name="IndexElem"]; Constraint constraint = 190 [json_name="Constraint"]; DefElem def_elem = 191 [json_name="DefElem"]; RangeTblEntry range_tbl_entry = 192 [json_name="RangeTblEntry"]; RangeTblFunction range_tbl_function = 193 [json_name="RangeTblFunction"]; TableSampleClause table_sample_clause = 194 [json_name="TableSampleClause"]; WithCheckOption with_check_option = 195 [json_name="WithCheckOption"]; SortGroupClause sort_group_clause = 196 [json_name="SortGroupClause"]; GroupingSet grouping_set = 197 [json_name="GroupingSet"]; WindowClause window_clause = 198 [json_name="WindowClause"]; ObjectWithArgs object_with_args = 199 [json_name="ObjectWithArgs"]; AccessPriv access_priv = 200 [json_name="AccessPriv"]; CreateOpClassItem create_op_class_item = 201 [json_name="CreateOpClassItem"]; TableLikeClause table_like_clause = 202 [json_name="TableLikeClause"]; FunctionParameter function_parameter = 203 [json_name="FunctionParameter"]; LockingClause locking_clause = 204 [json_name="LockingClause"]; RowMarkClause row_mark_clause = 205 [json_name="RowMarkClause"]; XmlSerialize xml_serialize = 206 [json_name="XmlSerialize"]; WithClause with_clause = 207 [json_name="WithClause"]; InferClause infer_clause = 208 [json_name="InferClause"]; OnConflictClause on_conflict_clause = 209 [json_name="OnConflictClause"]; CommonTableExpr common_table_expr = 210 [json_name="CommonTableExpr"]; RoleSpec role_spec = 211 [json_name="RoleSpec"]; TriggerTransition trigger_transition = 212 [json_name="TriggerTransition"]; PartitionElem partition_elem = 213 [json_name="PartitionElem"]; PartitionSpec partition_spec = 214 [json_name="PartitionSpec"]; PartitionBoundSpec partition_bound_spec = 215 [json_name="PartitionBoundSpec"]; PartitionRangeDatum partition_range_datum = 216 [json_name="PartitionRangeDatum"]; PartitionCmd partition_cmd = 217 [json_name="PartitionCmd"]; VacuumRelation vacuum_relation = 218 [json_name="VacuumRelation"]; InlineCodeBlock inline_code_block = 219 [json_name="InlineCodeBlock"]; CallContext call_context = 220 [json_name="CallContext"]; Integer integer = 221 [json_name="Integer"]; Float float = 222 [json_name="Float"]; String string = 223 [json_name="String"]; BitString bit_string = 224 [json_name="BitString"]; Null null = 225 [json_name="Null"]; List list = 226 [json_name="List"]; IntList int_list = 227 [json_name="IntList"]; OidList oid_list = 228 [json_name="OidList"]; } } message Integer { int32 ival = 1; /* machine integer */ } message Float { string str = 1; /* string */ } message String { string str = 1; /* string */ } message BitString { string str = 1; /* string */ } message Null { // intentionally empty } message List { repeated Node items = 1; } message OidList { repeated Node items = 1; } message IntList { repeated Node items = 1; } message Alias { string aliasname = 1 [json_name="aliasname"]; repeated Node colnames = 2 [json_name="colnames"]; } message RangeVar { string catalogname = 1 [json_name="catalogname"]; string schemaname = 2 [json_name="schemaname"]; string relname = 3 [json_name="relname"]; bool inh = 4 [json_name="inh"]; string relpersistence = 5 [json_name="relpersistence"]; Alias alias = 6 [json_name="alias"]; int32 location = 7 [json_name="location"]; } message TableFunc { repeated Node ns_uris = 1 [json_name="ns_uris"]; repeated Node ns_names = 2 [json_name="ns_names"]; Node docexpr = 3 [json_name="docexpr"]; Node rowexpr = 4 [json_name="rowexpr"]; repeated Node colnames = 5 [json_name="colnames"]; repeated Node coltypes = 6 [json_name="coltypes"]; repeated Node coltypmods = 7 [json_name="coltypmods"]; repeated Node colcollations = 8 [json_name="colcollations"]; repeated Node colexprs = 9 [json_name="colexprs"]; repeated Node coldefexprs = 10 [json_name="coldefexprs"]; repeated uint64 notnulls = 11 [json_name="notnulls"]; int32 ordinalitycol = 12 [json_name="ordinalitycol"]; int32 location = 13 [json_name="location"]; } message Expr { } message Var { Node xpr = 1 [json_name="xpr"]; uint32 varno = 2 [json_name="varno"]; int32 varattno = 3 [json_name="varattno"]; uint32 vartype = 4 [json_name="vartype"]; int32 vartypmod = 5 [json_name="vartypmod"]; uint32 varcollid = 6 [json_name="varcollid"]; uint32 varlevelsup = 7 [json_name="varlevelsup"]; uint32 varnosyn = 8 [json_name="varnosyn"]; int32 varattnosyn = 9 [json_name="varattnosyn"]; int32 location = 10 [json_name="location"]; } message Param { Node xpr = 1 [json_name="xpr"]; ParamKind paramkind = 2 [json_name="paramkind"]; int32 paramid = 3 [json_name="paramid"]; uint32 paramtype = 4 [json_name="paramtype"]; int32 paramtypmod = 5 [json_name="paramtypmod"]; uint32 paramcollid = 6 [json_name="paramcollid"]; int32 location = 7 [json_name="location"]; } message Aggref { Node xpr = 1 [json_name="xpr"]; uint32 aggfnoid = 2 [json_name="aggfnoid"]; uint32 aggtype = 3 [json_name="aggtype"]; uint32 aggcollid = 4 [json_name="aggcollid"]; uint32 inputcollid = 5 [json_name="inputcollid"]; uint32 aggtranstype = 6 [json_name="aggtranstype"]; repeated Node aggargtypes = 7 [json_name="aggargtypes"]; repeated Node aggdirectargs = 8 [json_name="aggdirectargs"]; repeated Node args = 9 [json_name="args"]; repeated Node aggorder = 10 [json_name="aggorder"]; repeated Node aggdistinct = 11 [json_name="aggdistinct"]; Node aggfilter = 12 [json_name="aggfilter"]; bool aggstar = 13 [json_name="aggstar"]; bool aggvariadic = 14 [json_name="aggvariadic"]; string aggkind = 15 [json_name="aggkind"]; uint32 agglevelsup = 16 [json_name="agglevelsup"]; AggSplit aggsplit = 17 [json_name="aggsplit"]; int32 location = 18 [json_name="location"]; } message GroupingFunc { Node xpr = 1 [json_name="xpr"]; repeated Node args = 2 [json_name="args"]; repeated Node refs = 3 [json_name="refs"]; repeated Node cols = 4 [json_name="cols"]; uint32 agglevelsup = 5 [json_name="agglevelsup"]; int32 location = 6 [json_name="location"]; } message WindowFunc { Node xpr = 1 [json_name="xpr"]; uint32 winfnoid = 2 [json_name="winfnoid"]; uint32 wintype = 3 [json_name="wintype"]; uint32 wincollid = 4 [json_name="wincollid"]; uint32 inputcollid = 5 [json_name="inputcollid"]; repeated Node args = 6 [json_name="args"]; Node aggfilter = 7 [json_name="aggfilter"]; uint32 winref = 8 [json_name="winref"]; bool winstar = 9 [json_name="winstar"]; bool winagg = 10 [json_name="winagg"]; int32 location = 11 [json_name="location"]; } message SubscriptingRef { Node xpr = 1 [json_name="xpr"]; uint32 refcontainertype = 2 [json_name="refcontainertype"]; uint32 refelemtype = 3 [json_name="refelemtype"]; int32 reftypmod = 4 [json_name="reftypmod"]; uint32 refcollid = 5 [json_name="refcollid"]; repeated Node refupperindexpr = 6 [json_name="refupperindexpr"]; repeated Node reflowerindexpr = 7 [json_name="reflowerindexpr"]; Node refexpr = 8 [json_name="refexpr"]; Node refassgnexpr = 9 [json_name="refassgnexpr"]; } message FuncExpr { Node xpr = 1 [json_name="xpr"]; uint32 funcid = 2 [json_name="funcid"]; uint32 funcresulttype = 3 [json_name="funcresulttype"]; bool funcretset = 4 [json_name="funcretset"]; bool funcvariadic = 5 [json_name="funcvariadic"]; CoercionForm funcformat = 6 [json_name="funcformat"]; uint32 funccollid = 7 [json_name="funccollid"]; uint32 inputcollid = 8 [json_name="inputcollid"]; repeated Node args = 9 [json_name="args"]; int32 location = 10 [json_name="location"]; } message NamedArgExpr { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; string name = 3 [json_name="name"]; int32 argnumber = 4 [json_name="argnumber"]; int32 location = 5 [json_name="location"]; } message OpExpr { Node xpr = 1 [json_name="xpr"]; uint32 opno = 2 [json_name="opno"]; uint32 opfuncid = 3 [json_name="opfuncid"]; uint32 opresulttype = 4 [json_name="opresulttype"]; bool opretset = 5 [json_name="opretset"]; uint32 opcollid = 6 [json_name="opcollid"]; uint32 inputcollid = 7 [json_name="inputcollid"]; repeated Node args = 8 [json_name="args"]; int32 location = 9 [json_name="location"]; } message DistinctExpr { Node xpr = 1 [json_name="xpr"]; uint32 opno = 2 [json_name="opno"]; uint32 opfuncid = 3 [json_name="opfuncid"]; uint32 opresulttype = 4 [json_name="opresulttype"]; bool opretset = 5 [json_name="opretset"]; uint32 opcollid = 6 [json_name="opcollid"]; uint32 inputcollid = 7 [json_name="inputcollid"]; repeated Node args = 8 [json_name="args"]; int32 location = 9 [json_name="location"]; } message NullIfExpr { Node xpr = 1 [json_name="xpr"]; uint32 opno = 2 [json_name="opno"]; uint32 opfuncid = 3 [json_name="opfuncid"]; uint32 opresulttype = 4 [json_name="opresulttype"]; bool opretset = 5 [json_name="opretset"]; uint32 opcollid = 6 [json_name="opcollid"]; uint32 inputcollid = 7 [json_name="inputcollid"]; repeated Node args = 8 [json_name="args"]; int32 location = 9 [json_name="location"]; } message ScalarArrayOpExpr { Node xpr = 1 [json_name="xpr"]; uint32 opno = 2 [json_name="opno"]; uint32 opfuncid = 3 [json_name="opfuncid"]; bool use_or = 4 [json_name="useOr"]; uint32 inputcollid = 5 [json_name="inputcollid"]; repeated Node args = 6 [json_name="args"]; int32 location = 7 [json_name="location"]; } message BoolExpr { Node xpr = 1 [json_name="xpr"]; BoolExprType boolop = 2 [json_name="boolop"]; repeated Node args = 3 [json_name="args"]; int32 location = 4 [json_name="location"]; } message SubLink { Node xpr = 1 [json_name="xpr"]; SubLinkType sub_link_type = 2 [json_name="subLinkType"]; int32 sub_link_id = 3 [json_name="subLinkId"]; Node testexpr = 4 [json_name="testexpr"]; repeated Node oper_name = 5 [json_name="operName"]; Node subselect = 6 [json_name="subselect"]; int32 location = 7 [json_name="location"]; } message SubPlan { Node xpr = 1 [json_name="xpr"]; SubLinkType sub_link_type = 2 [json_name="subLinkType"]; Node testexpr = 3 [json_name="testexpr"]; repeated Node param_ids = 4 [json_name="paramIds"]; int32 plan_id = 5 [json_name="plan_id"]; string plan_name = 6 [json_name="plan_name"]; uint32 first_col_type = 7 [json_name="firstColType"]; int32 first_col_typmod = 8 [json_name="firstColTypmod"]; uint32 first_col_collation = 9 [json_name="firstColCollation"]; bool use_hash_table = 10 [json_name="useHashTable"]; bool unknown_eq_false = 11 [json_name="unknownEqFalse"]; bool parallel_safe = 12 [json_name="parallel_safe"]; repeated Node set_param = 13 [json_name="setParam"]; repeated Node par_param = 14 [json_name="parParam"]; repeated Node args = 15 [json_name="args"]; double startup_cost = 16 [json_name="startup_cost"]; double per_call_cost = 17 [json_name="per_call_cost"]; } message AlternativeSubPlan { Node xpr = 1 [json_name="xpr"]; repeated Node subplans = 2 [json_name="subplans"]; } message FieldSelect { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; int32 fieldnum = 3 [json_name="fieldnum"]; uint32 resulttype = 4 [json_name="resulttype"]; int32 resulttypmod = 5 [json_name="resulttypmod"]; uint32 resultcollid = 6 [json_name="resultcollid"]; } message FieldStore { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; repeated Node newvals = 3 [json_name="newvals"]; repeated Node fieldnums = 4 [json_name="fieldnums"]; uint32 resulttype = 5 [json_name="resulttype"]; } message RelabelType { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; uint32 resulttype = 3 [json_name="resulttype"]; int32 resulttypmod = 4 [json_name="resulttypmod"]; uint32 resultcollid = 5 [json_name="resultcollid"]; CoercionForm relabelformat = 6 [json_name="relabelformat"]; int32 location = 7 [json_name="location"]; } message CoerceViaIO { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; uint32 resulttype = 3 [json_name="resulttype"]; uint32 resultcollid = 4 [json_name="resultcollid"]; CoercionForm coerceformat = 5 [json_name="coerceformat"]; int32 location = 6 [json_name="location"]; } message ArrayCoerceExpr { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; Node elemexpr = 3 [json_name="elemexpr"]; uint32 resulttype = 4 [json_name="resulttype"]; int32 resulttypmod = 5 [json_name="resulttypmod"]; uint32 resultcollid = 6 [json_name="resultcollid"]; CoercionForm coerceformat = 7 [json_name="coerceformat"]; int32 location = 8 [json_name="location"]; } message ConvertRowtypeExpr { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; uint32 resulttype = 3 [json_name="resulttype"]; CoercionForm convertformat = 4 [json_name="convertformat"]; int32 location = 5 [json_name="location"]; } message CollateExpr { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; uint32 coll_oid = 3 [json_name="collOid"]; int32 location = 4 [json_name="location"]; } message CaseExpr { Node xpr = 1 [json_name="xpr"]; uint32 casetype = 2 [json_name="casetype"]; uint32 casecollid = 3 [json_name="casecollid"]; Node arg = 4 [json_name="arg"]; repeated Node args = 5 [json_name="args"]; Node defresult = 6 [json_name="defresult"]; int32 location = 7 [json_name="location"]; } message CaseWhen { Node xpr = 1 [json_name="xpr"]; Node expr = 2 [json_name="expr"]; Node result = 3 [json_name="result"]; int32 location = 4 [json_name="location"]; } message CaseTestExpr { Node xpr = 1 [json_name="xpr"]; uint32 type_id = 2 [json_name="typeId"]; int32 type_mod = 3 [json_name="typeMod"]; uint32 collation = 4 [json_name="collation"]; } message ArrayExpr { Node xpr = 1 [json_name="xpr"]; uint32 array_typeid = 2 [json_name="array_typeid"]; uint32 array_collid = 3 [json_name="array_collid"]; uint32 element_typeid = 4 [json_name="element_typeid"]; repeated Node elements = 5 [json_name="elements"]; bool multidims = 6 [json_name="multidims"]; int32 location = 7 [json_name="location"]; } message RowExpr { Node xpr = 1 [json_name="xpr"]; repeated Node args = 2 [json_name="args"]; uint32 row_typeid = 3 [json_name="row_typeid"]; CoercionForm row_format = 4 [json_name="row_format"]; repeated Node colnames = 5 [json_name="colnames"]; int32 location = 6 [json_name="location"]; } message RowCompareExpr { Node xpr = 1 [json_name="xpr"]; RowCompareType rctype = 2 [json_name="rctype"]; repeated Node opnos = 3 [json_name="opnos"]; repeated Node opfamilies = 4 [json_name="opfamilies"]; repeated Node inputcollids = 5 [json_name="inputcollids"]; repeated Node largs = 6 [json_name="largs"]; repeated Node rargs = 7 [json_name="rargs"]; } message CoalesceExpr { Node xpr = 1 [json_name="xpr"]; uint32 coalescetype = 2 [json_name="coalescetype"]; uint32 coalescecollid = 3 [json_name="coalescecollid"]; repeated Node args = 4 [json_name="args"]; int32 location = 5 [json_name="location"]; } message MinMaxExpr { Node xpr = 1 [json_name="xpr"]; uint32 minmaxtype = 2 [json_name="minmaxtype"]; uint32 minmaxcollid = 3 [json_name="minmaxcollid"]; uint32 inputcollid = 4 [json_name="inputcollid"]; MinMaxOp op = 5 [json_name="op"]; repeated Node args = 6 [json_name="args"]; int32 location = 7 [json_name="location"]; } message SQLValueFunction { Node xpr = 1 [json_name="xpr"]; SQLValueFunctionOp op = 2 [json_name="op"]; uint32 type = 3 [json_name="type"]; int32 typmod = 4 [json_name="typmod"]; int32 location = 5 [json_name="location"]; } message XmlExpr { Node xpr = 1 [json_name="xpr"]; XmlExprOp op = 2 [json_name="op"]; string name = 3 [json_name="name"]; repeated Node named_args = 4 [json_name="named_args"]; repeated Node arg_names = 5 [json_name="arg_names"]; repeated Node args = 6 [json_name="args"]; XmlOptionType xmloption = 7 [json_name="xmloption"]; uint32 type = 8 [json_name="type"]; int32 typmod = 9 [json_name="typmod"]; int32 location = 10 [json_name="location"]; } message NullTest { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; NullTestType nulltesttype = 3 [json_name="nulltesttype"]; bool argisrow = 4 [json_name="argisrow"]; int32 location = 5 [json_name="location"]; } message BooleanTest { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; BoolTestType booltesttype = 3 [json_name="booltesttype"]; int32 location = 4 [json_name="location"]; } message CoerceToDomain { Node xpr = 1 [json_name="xpr"]; Node arg = 2 [json_name="arg"]; uint32 resulttype = 3 [json_name="resulttype"]; int32 resulttypmod = 4 [json_name="resulttypmod"]; uint32 resultcollid = 5 [json_name="resultcollid"]; CoercionForm coercionformat = 6 [json_name="coercionformat"]; int32 location = 7 [json_name="location"]; } message CoerceToDomainValue { Node xpr = 1 [json_name="xpr"]; uint32 type_id = 2 [json_name="typeId"]; int32 type_mod = 3 [json_name="typeMod"]; uint32 collation = 4 [json_name="collation"]; int32 location = 5 [json_name="location"]; } message SetToDefault { Node xpr = 1 [json_name="xpr"]; uint32 type_id = 2 [json_name="typeId"]; int32 type_mod = 3 [json_name="typeMod"]; uint32 collation = 4 [json_name="collation"]; int32 location = 5 [json_name="location"]; } message CurrentOfExpr { Node xpr = 1 [json_name="xpr"]; uint32 cvarno = 2 [json_name="cvarno"]; string cursor_name = 3 [json_name="cursor_name"]; int32 cursor_param = 4 [json_name="cursor_param"]; } message NextValueExpr { Node xpr = 1 [json_name="xpr"]; uint32 seqid = 2 [json_name="seqid"]; uint32 type_id = 3 [json_name="typeId"]; } message InferenceElem { Node xpr = 1 [json_name="xpr"]; Node expr = 2 [json_name="expr"]; uint32 infercollid = 3 [json_name="infercollid"]; uint32 inferopclass = 4 [json_name="inferopclass"]; } message TargetEntry { Node xpr = 1 [json_name="xpr"]; Node expr = 2 [json_name="expr"]; int32 resno = 3 [json_name="resno"]; string resname = 4 [json_name="resname"]; uint32 ressortgroupref = 5 [json_name="ressortgroupref"]; uint32 resorigtbl = 6 [json_name="resorigtbl"]; int32 resorigcol = 7 [json_name="resorigcol"]; bool resjunk = 8 [json_name="resjunk"]; } message RangeTblRef { int32 rtindex = 1 [json_name="rtindex"]; } message JoinExpr { JoinType jointype = 1 [json_name="jointype"]; bool is_natural = 2 [json_name="isNatural"]; Node larg = 3 [json_name="larg"]; Node rarg = 4 [json_name="rarg"]; repeated Node using_clause = 5 [json_name="usingClause"]; Node quals = 6 [json_name="quals"]; Alias alias = 7 [json_name="alias"]; int32 rtindex = 8 [json_name="rtindex"]; } message FromExpr { repeated Node fromlist = 1 [json_name="fromlist"]; Node quals = 2 [json_name="quals"]; } message OnConflictExpr { OnConflictAction action = 1 [json_name="action"]; repeated Node arbiter_elems = 2 [json_name="arbiterElems"]; Node arbiter_where = 3 [json_name="arbiterWhere"]; uint32 constraint = 4 [json_name="constraint"]; repeated Node on_conflict_set = 5 [json_name="onConflictSet"]; Node on_conflict_where = 6 [json_name="onConflictWhere"]; int32 excl_rel_index = 7 [json_name="exclRelIndex"]; repeated Node excl_rel_tlist = 8 [json_name="exclRelTlist"]; } message IntoClause { RangeVar rel = 1 [json_name="rel"]; repeated Node col_names = 2 [json_name="colNames"]; string access_method = 3 [json_name="accessMethod"]; repeated Node options = 4 [json_name="options"]; OnCommitAction on_commit = 5 [json_name="onCommit"]; string table_space_name = 6 [json_name="tableSpaceName"]; Node view_query = 7 [json_name="viewQuery"]; bool skip_data = 8 [json_name="skipData"]; } message RawStmt { Node stmt = 1 [json_name="stmt"]; int32 stmt_location = 2 [json_name="stmt_location"]; int32 stmt_len = 3 [json_name="stmt_len"]; } message Query { CmdType command_type = 1 [json_name="commandType"]; QuerySource query_source = 2 [json_name="querySource"]; bool can_set_tag = 3 [json_name="canSetTag"]; Node utility_stmt = 4 [json_name="utilityStmt"]; int32 result_relation = 5 [json_name="resultRelation"]; bool has_aggs = 6 [json_name="hasAggs"]; bool has_window_funcs = 7 [json_name="hasWindowFuncs"]; bool has_target_srfs = 8 [json_name="hasTargetSRFs"]; bool has_sub_links = 9 [json_name="hasSubLinks"]; bool has_distinct_on = 10 [json_name="hasDistinctOn"]; bool has_recursive = 11 [json_name="hasRecursive"]; bool has_modifying_cte = 12 [json_name="hasModifyingCTE"]; bool has_for_update = 13 [json_name="hasForUpdate"]; bool has_row_security = 14 [json_name="hasRowSecurity"]; repeated Node cte_list = 15 [json_name="cteList"]; repeated Node rtable = 16 [json_name="rtable"]; FromExpr jointree = 17 [json_name="jointree"]; repeated Node target_list = 18 [json_name="targetList"]; OverridingKind override = 19 [json_name="override"]; OnConflictExpr on_conflict = 20 [json_name="onConflict"]; repeated Node returning_list = 21 [json_name="returningList"]; repeated Node group_clause = 22 [json_name="groupClause"]; repeated Node grouping_sets = 23 [json_name="groupingSets"]; Node having_qual = 24 [json_name="havingQual"]; repeated Node window_clause = 25 [json_name="windowClause"]; repeated Node distinct_clause = 26 [json_name="distinctClause"]; repeated Node sort_clause = 27 [json_name="sortClause"]; Node limit_offset = 28 [json_name="limitOffset"]; Node limit_count = 29 [json_name="limitCount"]; LimitOption limit_option = 30 [json_name="limitOption"]; repeated Node row_marks = 31 [json_name="rowMarks"]; Node set_operations = 32 [json_name="setOperations"]; repeated Node constraint_deps = 33 [json_name="constraintDeps"]; repeated Node with_check_options = 34 [json_name="withCheckOptions"]; int32 stmt_location = 35 [json_name="stmt_location"]; int32 stmt_len = 36 [json_name="stmt_len"]; } message InsertStmt { RangeVar relation = 1 [json_name="relation"]; repeated Node cols = 2 [json_name="cols"]; Node select_stmt = 3 [json_name="selectStmt"]; OnConflictClause on_conflict_clause = 4 [json_name="onConflictClause"]; repeated Node returning_list = 5 [json_name="returningList"]; WithClause with_clause = 6 [json_name="withClause"]; OverridingKind override = 7 [json_name="override"]; } message DeleteStmt { RangeVar relation = 1 [json_name="relation"]; repeated Node using_clause = 2 [json_name="usingClause"]; Node where_clause = 3 [json_name="whereClause"]; repeated Node returning_list = 4 [json_name="returningList"]; WithClause with_clause = 5 [json_name="withClause"]; } message UpdateStmt { RangeVar relation = 1 [json_name="relation"]; repeated Node target_list = 2 [json_name="targetList"]; Node where_clause = 3 [json_name="whereClause"]; repeated Node from_clause = 4 [json_name="fromClause"]; repeated Node returning_list = 5 [json_name="returningList"]; WithClause with_clause = 6 [json_name="withClause"]; } message SelectStmt { repeated Node distinct_clause = 1 [json_name="distinctClause"]; IntoClause into_clause = 2 [json_name="intoClause"]; repeated Node target_list = 3 [json_name="targetList"]; repeated Node from_clause = 4 [json_name="fromClause"]; Node where_clause = 5 [json_name="whereClause"]; repeated Node group_clause = 6 [json_name="groupClause"]; Node having_clause = 7 [json_name="havingClause"]; repeated Node window_clause = 8 [json_name="windowClause"]; repeated Node values_lists = 9 [json_name="valuesLists"]; repeated Node sort_clause = 10 [json_name="sortClause"]; Node limit_offset = 11 [json_name="limitOffset"]; Node limit_count = 12 [json_name="limitCount"]; LimitOption limit_option = 13 [json_name="limitOption"]; repeated Node locking_clause = 14 [json_name="lockingClause"]; WithClause with_clause = 15 [json_name="withClause"]; SetOperation op = 16 [json_name="op"]; bool all = 17 [json_name="all"]; SelectStmt larg = 18 [json_name="larg"]; SelectStmt rarg = 19 [json_name="rarg"]; } message AlterTableStmt { RangeVar relation = 1 [json_name="relation"]; repeated Node cmds = 2 [json_name="cmds"]; ObjectType relkind = 3 [json_name="relkind"]; bool missing_ok = 4 [json_name="missing_ok"]; } message AlterTableCmd { AlterTableType subtype = 1 [json_name="subtype"]; string name = 2 [json_name="name"]; int32 num = 3 [json_name="num"]; RoleSpec newowner = 4 [json_name="newowner"]; Node def = 5 [json_name="def"]; DropBehavior behavior = 6 [json_name="behavior"]; bool missing_ok = 7 [json_name="missing_ok"]; } message AlterDomainStmt { string subtype = 1 [json_name="subtype"]; repeated Node type_name = 2 [json_name="typeName"]; string name = 3 [json_name="name"]; Node def = 4 [json_name="def"]; DropBehavior behavior = 5 [json_name="behavior"]; bool missing_ok = 6 [json_name="missing_ok"]; } message SetOperationStmt { SetOperation op = 1 [json_name="op"]; bool all = 2 [json_name="all"]; Node larg = 3 [json_name="larg"]; Node rarg = 4 [json_name="rarg"]; repeated Node col_types = 5 [json_name="colTypes"]; repeated Node col_typmods = 6 [json_name="colTypmods"]; repeated Node col_collations = 7 [json_name="colCollations"]; repeated Node group_clauses = 8 [json_name="groupClauses"]; } message GrantStmt { bool is_grant = 1 [json_name="is_grant"]; GrantTargetType targtype = 2 [json_name="targtype"]; ObjectType objtype = 3 [json_name="objtype"]; repeated Node objects = 4 [json_name="objects"]; repeated Node privileges = 5 [json_name="privileges"]; repeated Node grantees = 6 [json_name="grantees"]; bool grant_option = 7 [json_name="grant_option"]; DropBehavior behavior = 8 [json_name="behavior"]; } message GrantRoleStmt { repeated Node granted_roles = 1 [json_name="granted_roles"]; repeated Node grantee_roles = 2 [json_name="grantee_roles"]; bool is_grant = 3 [json_name="is_grant"]; bool admin_opt = 4 [json_name="admin_opt"]; RoleSpec grantor = 5 [json_name="grantor"]; DropBehavior behavior = 6 [json_name="behavior"]; } message AlterDefaultPrivilegesStmt { repeated Node options = 1 [json_name="options"]; GrantStmt action = 2 [json_name="action"]; } message ClosePortalStmt { string portalname = 1 [json_name="portalname"]; } message ClusterStmt { RangeVar relation = 1 [json_name="relation"]; string indexname = 2 [json_name="indexname"]; int32 options = 3 [json_name="options"]; } message CopyStmt { RangeVar relation = 1 [json_name="relation"]; Node query = 2 [json_name="query"]; repeated Node attlist = 3 [json_name="attlist"]; bool is_from = 4 [json_name="is_from"]; bool is_program = 5 [json_name="is_program"]; string filename = 6 [json_name="filename"]; repeated Node options = 7 [json_name="options"]; Node where_clause = 8 [json_name="whereClause"]; } message CreateStmt { RangeVar relation = 1 [json_name="relation"]; repeated Node table_elts = 2 [json_name="tableElts"]; repeated Node inh_relations = 3 [json_name="inhRelations"]; PartitionBoundSpec partbound = 4 [json_name="partbound"]; PartitionSpec partspec = 5 [json_name="partspec"]; TypeName of_typename = 6 [json_name="ofTypename"]; repeated Node constraints = 7 [json_name="constraints"]; repeated Node options = 8 [json_name="options"]; OnCommitAction oncommit = 9 [json_name="oncommit"]; string tablespacename = 10 [json_name="tablespacename"]; string access_method = 11 [json_name="accessMethod"]; bool if_not_exists = 12 [json_name="if_not_exists"]; } message DefineStmt { ObjectType kind = 1 [json_name="kind"]; bool oldstyle = 2 [json_name="oldstyle"]; repeated Node defnames = 3 [json_name="defnames"]; repeated Node args = 4 [json_name="args"]; repeated Node definition = 5 [json_name="definition"]; bool if_not_exists = 6 [json_name="if_not_exists"]; bool replace = 7 [json_name="replace"]; } message DropStmt { repeated Node objects = 1 [json_name="objects"]; ObjectType remove_type = 2 [json_name="removeType"]; DropBehavior behavior = 3 [json_name="behavior"]; bool missing_ok = 4 [json_name="missing_ok"]; bool concurrent = 5 [json_name="concurrent"]; } message TruncateStmt { repeated Node relations = 1 [json_name="relations"]; bool restart_seqs = 2 [json_name="restart_seqs"]; DropBehavior behavior = 3 [json_name="behavior"]; } message CommentStmt { ObjectType objtype = 1 [json_name="objtype"]; Node object = 2 [json_name="object"]; string comment = 3 [json_name="comment"]; } message FetchStmt { FetchDirection direction = 1 [json_name="direction"]; int64 how_many = 2 [json_name="howMany"]; string portalname = 3 [json_name="portalname"]; bool ismove = 4 [json_name="ismove"]; } message IndexStmt { string idxname = 1 [json_name="idxname"]; RangeVar relation = 2 [json_name="relation"]; string access_method = 3 [json_name="accessMethod"]; string table_space = 4 [json_name="tableSpace"]; repeated Node index_params = 5 [json_name="indexParams"]; repeated Node index_including_params = 6 [json_name="indexIncludingParams"]; repeated Node options = 7 [json_name="options"]; Node where_clause = 8 [json_name="whereClause"]; repeated Node exclude_op_names = 9 [json_name="excludeOpNames"]; string idxcomment = 10 [json_name="idxcomment"]; uint32 index_oid = 11 [json_name="indexOid"]; uint32 old_node = 12 [json_name="oldNode"]; uint32 old_create_subid = 13 [json_name="oldCreateSubid"]; uint32 old_first_relfilenode_subid = 14 [json_name="oldFirstRelfilenodeSubid"]; bool unique = 15 [json_name="unique"]; bool primary = 16 [json_name="primary"]; bool isconstraint = 17 [json_name="isconstraint"]; bool deferrable = 18 [json_name="deferrable"]; bool initdeferred = 19 [json_name="initdeferred"]; bool transformed = 20 [json_name="transformed"]; bool concurrent = 21 [json_name="concurrent"]; bool if_not_exists = 22 [json_name="if_not_exists"]; bool reset_default_tblspc = 23 [json_name="reset_default_tblspc"]; } message CreateFunctionStmt { bool is_procedure = 1 [json_name="is_procedure"]; bool replace = 2 [json_name="replace"]; repeated Node funcname = 3 [json_name="funcname"]; repeated Node parameters = 4 [json_name="parameters"]; TypeName return_type = 5 [json_name="returnType"]; repeated Node options = 6 [json_name="options"]; } message AlterFunctionStmt { ObjectType objtype = 1 [json_name="objtype"]; ObjectWithArgs func = 2 [json_name="func"]; repeated Node actions = 3 [json_name="actions"]; } message DoStmt { repeated Node args = 1 [json_name="args"]; } message RenameStmt { ObjectType rename_type = 1 [json_name="renameType"]; ObjectType relation_type = 2 [json_name="relationType"]; RangeVar relation = 3 [json_name="relation"]; Node object = 4 [json_name="object"]; string subname = 5 [json_name="subname"]; string newname = 6 [json_name="newname"]; DropBehavior behavior = 7 [json_name="behavior"]; bool missing_ok = 8 [json_name="missing_ok"]; } message RuleStmt { RangeVar relation = 1 [json_name="relation"]; string rulename = 2 [json_name="rulename"]; Node where_clause = 3 [json_name="whereClause"]; CmdType event = 4 [json_name="event"]; bool instead = 5 [json_name="instead"]; repeated Node actions = 6 [json_name="actions"]; bool replace = 7 [json_name="replace"]; } message NotifyStmt { string conditionname = 1 [json_name="conditionname"]; string payload = 2 [json_name="payload"]; } message ListenStmt { string conditionname = 1 [json_name="conditionname"]; } message UnlistenStmt { string conditionname = 1 [json_name="conditionname"]; } message TransactionStmt { TransactionStmtKind kind = 1 [json_name="kind"]; repeated Node options = 2 [json_name="options"]; string savepoint_name = 3 [json_name="savepoint_name"]; string gid = 4 [json_name="gid"]; bool chain = 5 [json_name="chain"]; } message ViewStmt { RangeVar view = 1 [json_name="view"]; repeated Node aliases = 2 [json_name="aliases"]; Node query = 3 [json_name="query"]; bool replace = 4 [json_name="replace"]; repeated Node options = 5 [json_name="options"]; ViewCheckOption with_check_option = 6 [json_name="withCheckOption"]; } message LoadStmt { string filename = 1 [json_name="filename"]; } message CreateDomainStmt { repeated Node domainname = 1 [json_name="domainname"]; TypeName type_name = 2 [json_name="typeName"]; CollateClause coll_clause = 3 [json_name="collClause"]; repeated Node constraints = 4 [json_name="constraints"]; } message CreatedbStmt { string dbname = 1 [json_name="dbname"]; repeated Node options = 2 [json_name="options"]; } message DropdbStmt { string dbname = 1 [json_name="dbname"]; bool missing_ok = 2 [json_name="missing_ok"]; repeated Node options = 3 [json_name="options"]; } message VacuumStmt { repeated Node options = 1 [json_name="options"]; repeated Node rels = 2 [json_name="rels"]; bool is_vacuumcmd = 3 [json_name="is_vacuumcmd"]; } message ExplainStmt { Node query = 1 [json_name="query"]; repeated Node options = 2 [json_name="options"]; } message CreateTableAsStmt { Node query = 1 [json_name="query"]; IntoClause into = 2 [json_name="into"]; ObjectType relkind = 3 [json_name="relkind"]; bool is_select_into = 4 [json_name="is_select_into"]; bool if_not_exists = 5 [json_name="if_not_exists"]; } message CreateSeqStmt { RangeVar sequence = 1 [json_name="sequence"]; repeated Node options = 2 [json_name="options"]; uint32 owner_id = 3 [json_name="ownerId"]; bool for_identity = 4 [json_name="for_identity"]; bool if_not_exists = 5 [json_name="if_not_exists"]; } message AlterSeqStmt { RangeVar sequence = 1 [json_name="sequence"]; repeated Node options = 2 [json_name="options"]; bool for_identity = 3 [json_name="for_identity"]; bool missing_ok = 4 [json_name="missing_ok"]; } message VariableSetStmt { VariableSetKind kind = 1 [json_name="kind"]; string name = 2 [json_name="name"]; repeated Node args = 3 [json_name="args"]; bool is_local = 4 [json_name="is_local"]; } message VariableShowStmt { string name = 1 [json_name="name"]; } message DiscardStmt { DiscardMode target = 1 [json_name="target"]; } message CreateTrigStmt { string trigname = 1 [json_name="trigname"]; RangeVar relation = 2 [json_name="relation"]; repeated Node funcname = 3 [json_name="funcname"]; repeated Node args = 4 [json_name="args"]; bool row = 5 [json_name="row"]; int32 timing = 6 [json_name="timing"]; int32 events = 7 [json_name="events"]; repeated Node columns = 8 [json_name="columns"]; Node when_clause = 9 [json_name="whenClause"]; bool isconstraint = 10 [json_name="isconstraint"]; repeated Node transition_rels = 11 [json_name="transitionRels"]; bool deferrable = 12 [json_name="deferrable"]; bool initdeferred = 13 [json_name="initdeferred"]; RangeVar constrrel = 14 [json_name="constrrel"]; } message CreatePLangStmt { bool replace = 1 [json_name="replace"]; string plname = 2 [json_name="plname"]; repeated Node plhandler = 3 [json_name="plhandler"]; repeated Node plinline = 4 [json_name="plinline"]; repeated Node plvalidator = 5 [json_name="plvalidator"]; bool pltrusted = 6 [json_name="pltrusted"]; } message CreateRoleStmt { RoleStmtType stmt_type = 1 [json_name="stmt_type"]; string role = 2 [json_name="role"]; repeated Node options = 3 [json_name="options"]; } message AlterRoleStmt { RoleSpec role = 1 [json_name="role"]; repeated Node options = 2 [json_name="options"]; int32 action = 3 [json_name="action"]; } message DropRoleStmt { repeated Node roles = 1 [json_name="roles"]; bool missing_ok = 2 [json_name="missing_ok"]; } message LockStmt { repeated Node relations = 1 [json_name="relations"]; int32 mode = 2 [json_name="mode"]; bool nowait = 3 [json_name="nowait"]; } message ConstraintsSetStmt { repeated Node constraints = 1 [json_name="constraints"]; bool deferred = 2 [json_name="deferred"]; } message ReindexStmt { ReindexObjectType kind = 1 [json_name="kind"]; RangeVar relation = 2 [json_name="relation"]; string name = 3 [json_name="name"]; int32 options = 4 [json_name="options"]; bool concurrent = 5 [json_name="concurrent"]; } message CheckPointStmt { } message CreateSchemaStmt { string schemaname = 1 [json_name="schemaname"]; RoleSpec authrole = 2 [json_name="authrole"]; repeated Node schema_elts = 3 [json_name="schemaElts"]; bool if_not_exists = 4 [json_name="if_not_exists"]; } message AlterDatabaseStmt { string dbname = 1 [json_name="dbname"]; repeated Node options = 2 [json_name="options"]; } message AlterDatabaseSetStmt { string dbname = 1 [json_name="dbname"]; VariableSetStmt setstmt = 2 [json_name="setstmt"]; } message AlterRoleSetStmt { RoleSpec role = 1 [json_name="role"]; string database = 2 [json_name="database"]; VariableSetStmt setstmt = 3 [json_name="setstmt"]; } message CreateConversionStmt { repeated Node conversion_name = 1 [json_name="conversion_name"]; string for_encoding_name = 2 [json_name="for_encoding_name"]; string to_encoding_name = 3 [json_name="to_encoding_name"]; repeated Node func_name = 4 [json_name="func_name"]; bool def = 5 [json_name="def"]; } message CreateCastStmt { TypeName sourcetype = 1 [json_name="sourcetype"]; TypeName targettype = 2 [json_name="targettype"]; ObjectWithArgs func = 3 [json_name="func"]; CoercionContext context = 4 [json_name="context"]; bool inout = 5 [json_name="inout"]; } message CreateOpClassStmt { repeated Node opclassname = 1 [json_name="opclassname"]; repeated Node opfamilyname = 2 [json_name="opfamilyname"]; string amname = 3 [json_name="amname"]; TypeName datatype = 4 [json_name="datatype"]; repeated Node items = 5 [json_name="items"]; bool is_default = 6 [json_name="isDefault"]; } message CreateOpFamilyStmt { repeated Node opfamilyname = 1 [json_name="opfamilyname"]; string amname = 2 [json_name="amname"]; } message AlterOpFamilyStmt { repeated Node opfamilyname = 1 [json_name="opfamilyname"]; string amname = 2 [json_name="amname"]; bool is_drop = 3 [json_name="isDrop"]; repeated Node items = 4 [json_name="items"]; } message PrepareStmt { string name = 1 [json_name="name"]; repeated Node argtypes = 2 [json_name="argtypes"]; Node query = 3 [json_name="query"]; } message ExecuteStmt { string name = 1 [json_name="name"]; repeated Node params = 2 [json_name="params"]; } message DeallocateStmt { string name = 1 [json_name="name"]; } message DeclareCursorStmt { string portalname = 1 [json_name="portalname"]; int32 options = 2 [json_name="options"]; Node query = 3 [json_name="query"]; } message CreateTableSpaceStmt { string tablespacename = 1 [json_name="tablespacename"]; RoleSpec owner = 2 [json_name="owner"]; string location = 3 [json_name="location"]; repeated Node options = 4 [json_name="options"]; } message DropTableSpaceStmt { string tablespacename = 1 [json_name="tablespacename"]; bool missing_ok = 2 [json_name="missing_ok"]; } message AlterObjectDependsStmt { ObjectType object_type = 1 [json_name="objectType"]; RangeVar relation = 2 [json_name="relation"]; Node object = 3 [json_name="object"]; Node extname = 4 [json_name="extname"]; bool remove = 5 [json_name="remove"]; } message AlterObjectSchemaStmt { ObjectType object_type = 1 [json_name="objectType"]; RangeVar relation = 2 [json_name="relation"]; Node object = 3 [json_name="object"]; string newschema = 4 [json_name="newschema"]; bool missing_ok = 5 [json_name="missing_ok"]; } message AlterOwnerStmt { ObjectType object_type = 1 [json_name="objectType"]; RangeVar relation = 2 [json_name="relation"]; Node object = 3 [json_name="object"]; RoleSpec newowner = 4 [json_name="newowner"]; } message AlterOperatorStmt { ObjectWithArgs opername = 1 [json_name="opername"]; repeated Node options = 2 [json_name="options"]; } message AlterTypeStmt { repeated Node type_name = 1 [json_name="typeName"]; repeated Node options = 2 [json_name="options"]; } message DropOwnedStmt { repeated Node roles = 1 [json_name="roles"]; DropBehavior behavior = 2 [json_name="behavior"]; } message ReassignOwnedStmt { repeated Node roles = 1 [json_name="roles"]; RoleSpec newrole = 2 [json_name="newrole"]; } message CompositeTypeStmt { RangeVar typevar = 1 [json_name="typevar"]; repeated Node coldeflist = 2 [json_name="coldeflist"]; } message CreateEnumStmt { repeated Node type_name = 1 [json_name="typeName"]; repeated Node vals = 2 [json_name="vals"]; } message CreateRangeStmt { repeated Node type_name = 1 [json_name="typeName"]; repeated Node params = 2 [json_name="params"]; } message AlterEnumStmt { repeated Node type_name = 1 [json_name="typeName"]; string old_val = 2 [json_name="oldVal"]; string new_val = 3 [json_name="newVal"]; string new_val_neighbor = 4 [json_name="newValNeighbor"]; bool new_val_is_after = 5 [json_name="newValIsAfter"]; bool skip_if_new_val_exists = 6 [json_name="skipIfNewValExists"]; } message AlterTSDictionaryStmt { repeated Node dictname = 1 [json_name="dictname"]; repeated Node options = 2 [json_name="options"]; } message AlterTSConfigurationStmt { AlterTSConfigType kind = 1 [json_name="kind"]; repeated Node cfgname = 2 [json_name="cfgname"]; repeated Node tokentype = 3 [json_name="tokentype"]; repeated Node dicts = 4 [json_name="dicts"]; bool override = 5 [json_name="override"]; bool replace = 6 [json_name="replace"]; bool missing_ok = 7 [json_name="missing_ok"]; } message CreateFdwStmt { string fdwname = 1 [json_name="fdwname"]; repeated Node func_options = 2 [json_name="func_options"]; repeated Node options = 3 [json_name="options"]; } message AlterFdwStmt { string fdwname = 1 [json_name="fdwname"]; repeated Node func_options = 2 [json_name="func_options"]; repeated Node options = 3 [json_name="options"]; } message CreateForeignServerStmt { string servername = 1 [json_name="servername"]; string servertype = 2 [json_name="servertype"]; string version = 3 [json_name="version"]; string fdwname = 4 [json_name="fdwname"]; bool if_not_exists = 5 [json_name="if_not_exists"]; repeated Node options = 6 [json_name="options"]; } message AlterForeignServerStmt { string servername = 1 [json_name="servername"]; string version = 2 [json_name="version"]; repeated Node options = 3 [json_name="options"]; bool has_version = 4 [json_name="has_version"]; } message CreateUserMappingStmt { RoleSpec user = 1 [json_name="user"]; string servername = 2 [json_name="servername"]; bool if_not_exists = 3 [json_name="if_not_exists"]; repeated Node options = 4 [json_name="options"]; } message AlterUserMappingStmt { RoleSpec user = 1 [json_name="user"]; string servername = 2 [json_name="servername"]; repeated Node options = 3 [json_name="options"]; } message DropUserMappingStmt { RoleSpec user = 1 [json_name="user"]; string servername = 2 [json_name="servername"]; bool missing_ok = 3 [json_name="missing_ok"]; } message AlterTableSpaceOptionsStmt { string tablespacename = 1 [json_name="tablespacename"]; repeated Node options = 2 [json_name="options"]; bool is_reset = 3 [json_name="isReset"]; } message AlterTableMoveAllStmt { string orig_tablespacename = 1 [json_name="orig_tablespacename"]; ObjectType objtype = 2 [json_name="objtype"]; repeated Node roles = 3 [json_name="roles"]; string new_tablespacename = 4 [json_name="new_tablespacename"]; bool nowait = 5 [json_name="nowait"]; } message SecLabelStmt { ObjectType objtype = 1 [json_name="objtype"]; Node object = 2 [json_name="object"]; string provider = 3 [json_name="provider"]; string label = 4 [json_name="label"]; } message CreateForeignTableStmt { CreateStmt base_stmt = 1 [json_name="base"]; string servername = 2 [json_name="servername"]; repeated Node options = 3 [json_name="options"]; } message ImportForeignSchemaStmt { string server_name = 1 [json_name="server_name"]; string remote_schema = 2 [json_name="remote_schema"]; string local_schema = 3 [json_name="local_schema"]; ImportForeignSchemaType list_type = 4 [json_name="list_type"]; repeated Node table_list = 5 [json_name="table_list"]; repeated Node options = 6 [json_name="options"]; } message CreateExtensionStmt { string extname = 1 [json_name="extname"]; bool if_not_exists = 2 [json_name="if_not_exists"]; repeated Node options = 3 [json_name="options"]; } message AlterExtensionStmt { string extname = 1 [json_name="extname"]; repeated Node options = 2 [json_name="options"]; } message AlterExtensionContentsStmt { string extname = 1 [json_name="extname"]; int32 action = 2 [json_name="action"]; ObjectType objtype = 3 [json_name="objtype"]; Node object = 4 [json_name="object"]; } message CreateEventTrigStmt { string trigname = 1 [json_name="trigname"]; string eventname = 2 [json_name="eventname"]; repeated Node whenclause = 3 [json_name="whenclause"]; repeated Node funcname = 4 [json_name="funcname"]; } message AlterEventTrigStmt { string trigname = 1 [json_name="trigname"]; string tgenabled = 2 [json_name="tgenabled"]; } message RefreshMatViewStmt { bool concurrent = 1 [json_name="concurrent"]; bool skip_data = 2 [json_name="skipData"]; RangeVar relation = 3 [json_name="relation"]; } message ReplicaIdentityStmt { string identity_type = 1 [json_name="identity_type"]; string name = 2 [json_name="name"]; } message AlterSystemStmt { VariableSetStmt setstmt = 1 [json_name="setstmt"]; } message CreatePolicyStmt { string policy_name = 1 [json_name="policy_name"]; RangeVar table = 2 [json_name="table"]; string cmd_name = 3 [json_name="cmd_name"]; bool permissive = 4 [json_name="permissive"]; repeated Node roles = 5 [json_name="roles"]; Node qual = 6 [json_name="qual"]; Node with_check = 7 [json_name="with_check"]; } message AlterPolicyStmt { string policy_name = 1 [json_name="policy_name"]; RangeVar table = 2 [json_name="table"]; repeated Node roles = 3 [json_name="roles"]; Node qual = 4 [json_name="qual"]; Node with_check = 5 [json_name="with_check"]; } message CreateTransformStmt { bool replace = 1 [json_name="replace"]; TypeName type_name = 2 [json_name="type_name"]; string lang = 3 [json_name="lang"]; ObjectWithArgs fromsql = 4 [json_name="fromsql"]; ObjectWithArgs tosql = 5 [json_name="tosql"]; } message CreateAmStmt { string amname = 1 [json_name="amname"]; repeated Node handler_name = 2 [json_name="handler_name"]; string amtype = 3 [json_name="amtype"]; } message CreatePublicationStmt { string pubname = 1 [json_name="pubname"]; repeated Node options = 2 [json_name="options"]; repeated Node tables = 3 [json_name="tables"]; bool for_all_tables = 4 [json_name="for_all_tables"]; } message AlterPublicationStmt { string pubname = 1 [json_name="pubname"]; repeated Node options = 2 [json_name="options"]; repeated Node tables = 3 [json_name="tables"]; bool for_all_tables = 4 [json_name="for_all_tables"]; DefElemAction table_action = 5 [json_name="tableAction"]; } message CreateSubscriptionStmt { string subname = 1 [json_name="subname"]; string conninfo = 2 [json_name="conninfo"]; repeated Node publication = 3 [json_name="publication"]; repeated Node options = 4 [json_name="options"]; } message AlterSubscriptionStmt { AlterSubscriptionType kind = 1 [json_name="kind"]; string subname = 2 [json_name="subname"]; string conninfo = 3 [json_name="conninfo"]; repeated Node publication = 4 [json_name="publication"]; repeated Node options = 5 [json_name="options"]; } message DropSubscriptionStmt { string subname = 1 [json_name="subname"]; bool missing_ok = 2 [json_name="missing_ok"]; DropBehavior behavior = 3 [json_name="behavior"]; } message CreateStatsStmt { repeated Node defnames = 1 [json_name="defnames"]; repeated Node stat_types = 2 [json_name="stat_types"]; repeated Node exprs = 3 [json_name="exprs"]; repeated Node relations = 4 [json_name="relations"]; string stxcomment = 5 [json_name="stxcomment"]; bool if_not_exists = 6 [json_name="if_not_exists"]; } message AlterCollationStmt { repeated Node collname = 1 [json_name="collname"]; } message CallStmt { FuncCall funccall = 1 [json_name="funccall"]; FuncExpr funcexpr = 2 [json_name="funcexpr"]; } message AlterStatsStmt { repeated Node defnames = 1 [json_name="defnames"]; int32 stxstattarget = 2 [json_name="stxstattarget"]; bool missing_ok = 3 [json_name="missing_ok"]; } message A_Expr { A_Expr_Kind kind = 1 [json_name="kind"]; repeated Node name = 2 [json_name="name"]; Node lexpr = 3 [json_name="lexpr"]; Node rexpr = 4 [json_name="rexpr"]; int32 location = 5 [json_name="location"]; } message ColumnRef { repeated Node fields = 1 [json_name="fields"]; int32 location = 2 [json_name="location"]; } message ParamRef { int32 number = 1 [json_name="number"]; int32 location = 2 [json_name="location"]; } message A_Const { Node val = 1 [json_name="val"]; int32 location = 2 [json_name="location"]; } message FuncCall { repeated Node funcname = 1 [json_name="funcname"]; repeated Node args = 2 [json_name="args"]; repeated Node agg_order = 3 [json_name="agg_order"]; Node agg_filter = 4 [json_name="agg_filter"]; bool agg_within_group = 5 [json_name="agg_within_group"]; bool agg_star = 6 [json_name="agg_star"]; bool agg_distinct = 7 [json_name="agg_distinct"]; bool func_variadic = 8 [json_name="func_variadic"]; WindowDef over = 9 [json_name="over"]; int32 location = 10 [json_name="location"]; } message A_Star { } message A_Indices { bool is_slice = 1 [json_name="is_slice"]; Node lidx = 2 [json_name="lidx"]; Node uidx = 3 [json_name="uidx"]; } message A_Indirection { Node arg = 1 [json_name="arg"]; repeated Node indirection = 2 [json_name="indirection"]; } message A_ArrayExpr { repeated Node elements = 1 [json_name="elements"]; int32 location = 2 [json_name="location"]; } message ResTarget { string name = 1 [json_name="name"]; repeated Node indirection = 2 [json_name="indirection"]; Node val = 3 [json_name="val"]; int32 location = 4 [json_name="location"]; } message MultiAssignRef { Node source = 1 [json_name="source"]; int32 colno = 2 [json_name="colno"]; int32 ncolumns = 3 [json_name="ncolumns"]; } message TypeCast { Node arg = 1 [json_name="arg"]; TypeName type_name = 2 [json_name="typeName"]; int32 location = 3 [json_name="location"]; } message CollateClause { Node arg = 1 [json_name="arg"]; repeated Node collname = 2 [json_name="collname"]; int32 location = 3 [json_name="location"]; } message SortBy { Node node = 1 [json_name="node"]; SortByDir sortby_dir = 2 [json_name="sortby_dir"]; SortByNulls sortby_nulls = 3 [json_name="sortby_nulls"]; repeated Node use_op = 4 [json_name="useOp"]; int32 location = 5 [json_name="location"]; } message WindowDef { string name = 1 [json_name="name"]; string refname = 2 [json_name="refname"]; repeated Node partition_clause = 3 [json_name="partitionClause"]; repeated Node order_clause = 4 [json_name="orderClause"]; int32 frame_options = 5 [json_name="frameOptions"]; Node start_offset = 6 [json_name="startOffset"]; Node end_offset = 7 [json_name="endOffset"]; int32 location = 8 [json_name="location"]; } message RangeSubselect { bool lateral = 1 [json_name="lateral"]; Node subquery = 2 [json_name="subquery"]; Alias alias = 3 [json_name="alias"]; } message RangeFunction { bool lateral = 1 [json_name="lateral"]; bool ordinality = 2 [json_name="ordinality"]; bool is_rowsfrom = 3 [json_name="is_rowsfrom"]; repeated Node functions = 4 [json_name="functions"]; Alias alias = 5 [json_name="alias"]; repeated Node coldeflist = 6 [json_name="coldeflist"]; } message RangeTableSample { Node relation = 1 [json_name="relation"]; repeated Node method = 2 [json_name="method"]; repeated Node args = 3 [json_name="args"]; Node repeatable = 4 [json_name="repeatable"]; int32 location = 5 [json_name="location"]; } message RangeTableFunc { bool lateral = 1 [json_name="lateral"]; Node docexpr = 2 [json_name="docexpr"]; Node rowexpr = 3 [json_name="rowexpr"]; repeated Node namespaces = 4 [json_name="namespaces"]; repeated Node columns = 5 [json_name="columns"]; Alias alias = 6 [json_name="alias"]; int32 location = 7 [json_name="location"]; } message RangeTableFuncCol { string colname = 1 [json_name="colname"]; TypeName type_name = 2 [json_name="typeName"]; bool for_ordinality = 3 [json_name="for_ordinality"]; bool is_not_null = 4 [json_name="is_not_null"]; Node colexpr = 5 [json_name="colexpr"]; Node coldefexpr = 6 [json_name="coldefexpr"]; int32 location = 7 [json_name="location"]; } message TypeName { repeated Node names = 1 [json_name="names"]; uint32 type_oid = 2 [json_name="typeOid"]; bool setof = 3 [json_name="setof"]; bool pct_type = 4 [json_name="pct_type"]; repeated Node typmods = 5 [json_name="typmods"]; int32 typemod = 6 [json_name="typemod"]; repeated Node array_bounds = 7 [json_name="arrayBounds"]; int32 location = 8 [json_name="location"]; } message ColumnDef { string colname = 1 [json_name="colname"]; TypeName type_name = 2 [json_name="typeName"]; int32 inhcount = 3 [json_name="inhcount"]; bool is_local = 4 [json_name="is_local"]; bool is_not_null = 5 [json_name="is_not_null"]; bool is_from_type = 6 [json_name="is_from_type"]; string storage = 7 [json_name="storage"]; Node raw_default = 8 [json_name="raw_default"]; Node cooked_default = 9 [json_name="cooked_default"]; string identity = 10 [json_name="identity"]; RangeVar identity_sequence = 11 [json_name="identitySequence"]; string generated = 12 [json_name="generated"]; CollateClause coll_clause = 13 [json_name="collClause"]; uint32 coll_oid = 14 [json_name="collOid"]; repeated Node constraints = 15 [json_name="constraints"]; repeated Node fdwoptions = 16 [json_name="fdwoptions"]; int32 location = 17 [json_name="location"]; } message IndexElem { string name = 1 [json_name="name"]; Node expr = 2 [json_name="expr"]; string indexcolname = 3 [json_name="indexcolname"]; repeated Node collation = 4 [json_name="collation"]; repeated Node opclass = 5 [json_name="opclass"]; repeated Node opclassopts = 6 [json_name="opclassopts"]; SortByDir ordering = 7 [json_name="ordering"]; SortByNulls nulls_ordering = 8 [json_name="nulls_ordering"]; } message Constraint { ConstrType contype = 1 [json_name="contype"]; string conname = 2 [json_name="conname"]; bool deferrable = 3 [json_name="deferrable"]; bool initdeferred = 4 [json_name="initdeferred"]; int32 location = 5 [json_name="location"]; bool is_no_inherit = 6 [json_name="is_no_inherit"]; Node raw_expr = 7 [json_name="raw_expr"]; string cooked_expr = 8 [json_name="cooked_expr"]; string generated_when = 9 [json_name="generated_when"]; repeated Node keys = 10 [json_name="keys"]; repeated Node including = 11 [json_name="including"]; repeated Node exclusions = 12 [json_name="exclusions"]; repeated Node options = 13 [json_name="options"]; string indexname = 14 [json_name="indexname"]; string indexspace = 15 [json_name="indexspace"]; bool reset_default_tblspc = 16 [json_name="reset_default_tblspc"]; string access_method = 17 [json_name="access_method"]; Node where_clause = 18 [json_name="where_clause"]; RangeVar pktable = 19 [json_name="pktable"]; repeated Node fk_attrs = 20 [json_name="fk_attrs"]; repeated Node pk_attrs = 21 [json_name="pk_attrs"]; string fk_matchtype = 22 [json_name="fk_matchtype"]; string fk_upd_action = 23 [json_name="fk_upd_action"]; string fk_del_action = 24 [json_name="fk_del_action"]; repeated Node old_conpfeqop = 25 [json_name="old_conpfeqop"]; uint32 old_pktable_oid = 26 [json_name="old_pktable_oid"]; bool skip_validation = 27 [json_name="skip_validation"]; bool initially_valid = 28 [json_name="initially_valid"]; } message DefElem { string defnamespace = 1 [json_name="defnamespace"]; string defname = 2 [json_name="defname"]; Node arg = 3 [json_name="arg"]; DefElemAction defaction = 4 [json_name="defaction"]; int32 location = 5 [json_name="location"]; } message RangeTblEntry { RTEKind rtekind = 1 [json_name="rtekind"]; uint32 relid = 2 [json_name="relid"]; string relkind = 3 [json_name="relkind"]; int32 rellockmode = 4 [json_name="rellockmode"]; TableSampleClause tablesample = 5 [json_name="tablesample"]; Query subquery = 6 [json_name="subquery"]; bool security_barrier = 7 [json_name="security_barrier"]; JoinType jointype = 8 [json_name="jointype"]; int32 joinmergedcols = 9 [json_name="joinmergedcols"]; repeated Node joinaliasvars = 10 [json_name="joinaliasvars"]; repeated Node joinleftcols = 11 [json_name="joinleftcols"]; repeated Node joinrightcols = 12 [json_name="joinrightcols"]; repeated Node functions = 13 [json_name="functions"]; bool funcordinality = 14 [json_name="funcordinality"]; TableFunc tablefunc = 15 [json_name="tablefunc"]; repeated Node values_lists = 16 [json_name="values_lists"]; string ctename = 17 [json_name="ctename"]; uint32 ctelevelsup = 18 [json_name="ctelevelsup"]; bool self_reference = 19 [json_name="self_reference"]; repeated Node coltypes = 20 [json_name="coltypes"]; repeated Node coltypmods = 21 [json_name="coltypmods"]; repeated Node colcollations = 22 [json_name="colcollations"]; string enrname = 23 [json_name="enrname"]; double enrtuples = 24 [json_name="enrtuples"]; Alias alias = 25 [json_name="alias"]; Alias eref = 26 [json_name="eref"]; bool lateral = 27 [json_name="lateral"]; bool inh = 28 [json_name="inh"]; bool in_from_cl = 29 [json_name="inFromCl"]; uint32 required_perms = 30 [json_name="requiredPerms"]; uint32 check_as_user = 31 [json_name="checkAsUser"]; repeated uint64 selected_cols = 32 [json_name="selectedCols"]; repeated uint64 inserted_cols = 33 [json_name="insertedCols"]; repeated uint64 updated_cols = 34 [json_name="updatedCols"]; repeated uint64 extra_updated_cols = 35 [json_name="extraUpdatedCols"]; repeated Node security_quals = 36 [json_name="securityQuals"]; } message RangeTblFunction { Node funcexpr = 1 [json_name="funcexpr"]; int32 funccolcount = 2 [json_name="funccolcount"]; repeated Node funccolnames = 3 [json_name="funccolnames"]; repeated Node funccoltypes = 4 [json_name="funccoltypes"]; repeated Node funccoltypmods = 5 [json_name="funccoltypmods"]; repeated Node funccolcollations = 6 [json_name="funccolcollations"]; repeated uint64 funcparams = 7 [json_name="funcparams"]; } message TableSampleClause { uint32 tsmhandler = 1 [json_name="tsmhandler"]; repeated Node args = 2 [json_name="args"]; Node repeatable = 3 [json_name="repeatable"]; } message WithCheckOption { WCOKind kind = 1 [json_name="kind"]; string relname = 2 [json_name="relname"]; string polname = 3 [json_name="polname"]; Node qual = 4 [json_name="qual"]; bool cascaded = 5 [json_name="cascaded"]; } message SortGroupClause { uint32 tle_sort_group_ref = 1 [json_name="tleSortGroupRef"]; uint32 eqop = 2 [json_name="eqop"]; uint32 sortop = 3 [json_name="sortop"]; bool nulls_first = 4 [json_name="nulls_first"]; bool hashable = 5 [json_name="hashable"]; } message GroupingSet { GroupingSetKind kind = 1 [json_name="kind"]; repeated Node content = 2 [json_name="content"]; int32 location = 3 [json_name="location"]; } message WindowClause { string name = 1 [json_name="name"]; string refname = 2 [json_name="refname"]; repeated Node partition_clause = 3 [json_name="partitionClause"]; repeated Node order_clause = 4 [json_name="orderClause"]; int32 frame_options = 5 [json_name="frameOptions"]; Node start_offset = 6 [json_name="startOffset"]; Node end_offset = 7 [json_name="endOffset"]; uint32 start_in_range_func = 8 [json_name="startInRangeFunc"]; uint32 end_in_range_func = 9 [json_name="endInRangeFunc"]; uint32 in_range_coll = 10 [json_name="inRangeColl"]; bool in_range_asc = 11 [json_name="inRangeAsc"]; bool in_range_nulls_first = 12 [json_name="inRangeNullsFirst"]; uint32 winref = 13 [json_name="winref"]; bool copied_order = 14 [json_name="copiedOrder"]; } message ObjectWithArgs { repeated Node objname = 1 [json_name="objname"]; repeated Node objargs = 2 [json_name="objargs"]; bool args_unspecified = 3 [json_name="args_unspecified"]; } message AccessPriv { string priv_name = 1 [json_name="priv_name"]; repeated Node cols = 2 [json_name="cols"]; } message CreateOpClassItem { int32 itemtype = 1 [json_name="itemtype"]; ObjectWithArgs name = 2 [json_name="name"]; int32 number = 3 [json_name="number"]; repeated Node order_family = 4 [json_name="order_family"]; repeated Node class_args = 5 [json_name="class_args"]; TypeName storedtype = 6 [json_name="storedtype"]; } message TableLikeClause { RangeVar relation = 1 [json_name="relation"]; uint32 options = 2 [json_name="options"]; uint32 relation_oid = 3 [json_name="relationOid"]; } message FunctionParameter { string name = 1 [json_name="name"]; TypeName arg_type = 2 [json_name="argType"]; FunctionParameterMode mode = 3 [json_name="mode"]; Node defexpr = 4 [json_name="defexpr"]; } message LockingClause { repeated Node locked_rels = 1 [json_name="lockedRels"]; LockClauseStrength strength = 2 [json_name="strength"]; LockWaitPolicy wait_policy = 3 [json_name="waitPolicy"]; } message RowMarkClause { uint32 rti = 1 [json_name="rti"]; LockClauseStrength strength = 2 [json_name="strength"]; LockWaitPolicy wait_policy = 3 [json_name="waitPolicy"]; bool pushed_down = 4 [json_name="pushedDown"]; } message XmlSerialize { XmlOptionType xmloption = 1 [json_name="xmloption"]; Node expr = 2 [json_name="expr"]; TypeName type_name = 3 [json_name="typeName"]; int32 location = 4 [json_name="location"]; } message WithClause { repeated Node ctes = 1 [json_name="ctes"]; bool recursive = 2 [json_name="recursive"]; int32 location = 3 [json_name="location"]; } message InferClause { repeated Node index_elems = 1 [json_name="indexElems"]; Node where_clause = 2 [json_name="whereClause"]; string conname = 3 [json_name="conname"]; int32 location = 4 [json_name="location"]; } message OnConflictClause { OnConflictAction action = 1 [json_name="action"]; InferClause infer = 2 [json_name="infer"]; repeated Node target_list = 3 [json_name="targetList"]; Node where_clause = 4 [json_name="whereClause"]; int32 location = 5 [json_name="location"]; } message CommonTableExpr { string ctename = 1 [json_name="ctename"]; repeated Node aliascolnames = 2 [json_name="aliascolnames"]; CTEMaterialize ctematerialized = 3 [json_name="ctematerialized"]; Node ctequery = 4 [json_name="ctequery"]; int32 location = 5 [json_name="location"]; bool cterecursive = 6 [json_name="cterecursive"]; int32 cterefcount = 7 [json_name="cterefcount"]; repeated Node ctecolnames = 8 [json_name="ctecolnames"]; repeated Node ctecoltypes = 9 [json_name="ctecoltypes"]; repeated Node ctecoltypmods = 10 [json_name="ctecoltypmods"]; repeated Node ctecolcollations = 11 [json_name="ctecolcollations"]; } message RoleSpec { RoleSpecType roletype = 1 [json_name="roletype"]; string rolename = 2 [json_name="rolename"]; int32 location = 3 [json_name="location"]; } message TriggerTransition { string name = 1 [json_name="name"]; bool is_new = 2 [json_name="isNew"]; bool is_table = 3 [json_name="isTable"]; } message PartitionElem { string name = 1 [json_name="name"]; Node expr = 2 [json_name="expr"]; repeated Node collation = 3 [json_name="collation"]; repeated Node opclass = 4 [json_name="opclass"]; int32 location = 5 [json_name="location"]; } message PartitionSpec { string strategy = 1 [json_name="strategy"]; repeated Node part_params = 2 [json_name="partParams"]; int32 location = 3 [json_name="location"]; } message PartitionBoundSpec { string strategy = 1 [json_name="strategy"]; bool is_default = 2 [json_name="is_default"]; int32 modulus = 3 [json_name="modulus"]; int32 remainder = 4 [json_name="remainder"]; repeated Node listdatums = 5 [json_name="listdatums"]; repeated Node lowerdatums = 6 [json_name="lowerdatums"]; repeated Node upperdatums = 7 [json_name="upperdatums"]; int32 location = 8 [json_name="location"]; } message PartitionRangeDatum { PartitionRangeDatumKind kind = 1 [json_name="kind"]; Node value = 2 [json_name="value"]; int32 location = 3 [json_name="location"]; } message PartitionCmd { RangeVar name = 1 [json_name="name"]; PartitionBoundSpec bound = 2 [json_name="bound"]; } message VacuumRelation { RangeVar relation = 1 [json_name="relation"]; uint32 oid = 2 [json_name="oid"]; repeated Node va_cols = 3 [json_name="va_cols"]; } message InlineCodeBlock { string source_text = 1 [json_name="source_text"]; uint32 lang_oid = 2 [json_name="langOid"]; bool lang_is_trusted = 3 [json_name="langIsTrusted"]; bool atomic = 4 [json_name="atomic"]; } message CallContext { bool atomic = 1 [json_name="atomic"]; } enum OverridingKind { OVERRIDING_KIND_UNDEFINED = 0; OVERRIDING_NOT_SET = 1; OVERRIDING_USER_VALUE = 2; OVERRIDING_SYSTEM_VALUE = 3; } enum QuerySource { QUERY_SOURCE_UNDEFINED = 0; QSRC_ORIGINAL = 1; QSRC_PARSER = 2; QSRC_INSTEAD_RULE = 3; QSRC_QUAL_INSTEAD_RULE = 4; QSRC_NON_INSTEAD_RULE = 5; } enum SortByDir { SORT_BY_DIR_UNDEFINED = 0; SORTBY_DEFAULT = 1; SORTBY_ASC = 2; SORTBY_DESC = 3; SORTBY_USING = 4; } enum SortByNulls { SORT_BY_NULLS_UNDEFINED = 0; SORTBY_NULLS_DEFAULT = 1; SORTBY_NULLS_FIRST = 2; SORTBY_NULLS_LAST = 3; } enum A_Expr_Kind { A_EXPR_KIND_UNDEFINED = 0; AEXPR_OP = 1; AEXPR_OP_ANY = 2; AEXPR_OP_ALL = 3; AEXPR_DISTINCT = 4; AEXPR_NOT_DISTINCT = 5; AEXPR_NULLIF = 6; AEXPR_OF = 7; AEXPR_IN = 8; AEXPR_LIKE = 9; AEXPR_ILIKE = 10; AEXPR_SIMILAR = 11; AEXPR_BETWEEN = 12; AEXPR_NOT_BETWEEN = 13; AEXPR_BETWEEN_SYM = 14; AEXPR_NOT_BETWEEN_SYM = 15; AEXPR_PAREN = 16; } enum RoleSpecType { ROLE_SPEC_TYPE_UNDEFINED = 0; ROLESPEC_CSTRING = 1; ROLESPEC_CURRENT_USER = 2; ROLESPEC_SESSION_USER = 3; ROLESPEC_PUBLIC = 4; } enum TableLikeOption { TABLE_LIKE_OPTION_UNDEFINED = 0; CREATE_TABLE_LIKE_COMMENTS = 1; CREATE_TABLE_LIKE_CONSTRAINTS = 2; CREATE_TABLE_LIKE_DEFAULTS = 3; CREATE_TABLE_LIKE_GENERATED = 4; CREATE_TABLE_LIKE_IDENTITY = 5; CREATE_TABLE_LIKE_INDEXES = 6; CREATE_TABLE_LIKE_STATISTICS = 7; CREATE_TABLE_LIKE_STORAGE = 8; CREATE_TABLE_LIKE_ALL = 9; } enum DefElemAction { DEF_ELEM_ACTION_UNDEFINED = 0; DEFELEM_UNSPEC = 1; DEFELEM_SET = 2; DEFELEM_ADD = 3; DEFELEM_DROP = 4; } enum PartitionRangeDatumKind { PARTITION_RANGE_DATUM_KIND_UNDEFINED = 0; PARTITION_RANGE_DATUM_MINVALUE = 1; PARTITION_RANGE_DATUM_VALUE = 2; PARTITION_RANGE_DATUM_MAXVALUE = 3; } enum RTEKind { RTEKIND_UNDEFINED = 0; RTE_RELATION = 1; RTE_SUBQUERY = 2; RTE_JOIN = 3; RTE_FUNCTION = 4; RTE_TABLEFUNC = 5; RTE_VALUES = 6; RTE_CTE = 7; RTE_NAMEDTUPLESTORE = 8; RTE_RESULT = 9; } enum WCOKind { WCOKIND_UNDEFINED = 0; WCO_VIEW_CHECK = 1; WCO_RLS_INSERT_CHECK = 2; WCO_RLS_UPDATE_CHECK = 3; WCO_RLS_CONFLICT_CHECK = 4; } enum GroupingSetKind { GROUPING_SET_KIND_UNDEFINED = 0; GROUPING_SET_EMPTY = 1; GROUPING_SET_SIMPLE = 2; GROUPING_SET_ROLLUP = 3; GROUPING_SET_CUBE = 4; GROUPING_SET_SETS = 5; } enum CTEMaterialize { CTEMATERIALIZE_UNDEFINED = 0; CTEMaterializeDefault = 1; CTEMaterializeAlways = 2; CTEMaterializeNever = 3; } enum SetOperation { SET_OPERATION_UNDEFINED = 0; SETOP_NONE = 1; SETOP_UNION = 2; SETOP_INTERSECT = 3; SETOP_EXCEPT = 4; } enum ObjectType { OBJECT_TYPE_UNDEFINED = 0; OBJECT_ACCESS_METHOD = 1; OBJECT_AGGREGATE = 2; OBJECT_AMOP = 3; OBJECT_AMPROC = 4; OBJECT_ATTRIBUTE = 5; OBJECT_CAST = 6; OBJECT_COLUMN = 7; OBJECT_COLLATION = 8; OBJECT_CONVERSION = 9; OBJECT_DATABASE = 10; OBJECT_DEFAULT = 11; OBJECT_DEFACL = 12; OBJECT_DOMAIN = 13; OBJECT_DOMCONSTRAINT = 14; OBJECT_EVENT_TRIGGER = 15; OBJECT_EXTENSION = 16; OBJECT_FDW = 17; OBJECT_FOREIGN_SERVER = 18; OBJECT_FOREIGN_TABLE = 19; OBJECT_FUNCTION = 20; OBJECT_INDEX = 21; OBJECT_LANGUAGE = 22; OBJECT_LARGEOBJECT = 23; OBJECT_MATVIEW = 24; OBJECT_OPCLASS = 25; OBJECT_OPERATOR = 26; OBJECT_OPFAMILY = 27; OBJECT_POLICY = 28; OBJECT_PROCEDURE = 29; OBJECT_PUBLICATION = 30; OBJECT_PUBLICATION_REL = 31; OBJECT_ROLE = 32; OBJECT_ROUTINE = 33; OBJECT_RULE = 34; OBJECT_SCHEMA = 35; OBJECT_SEQUENCE = 36; OBJECT_SUBSCRIPTION = 37; OBJECT_STATISTIC_EXT = 38; OBJECT_TABCONSTRAINT = 39; OBJECT_TABLE = 40; OBJECT_TABLESPACE = 41; OBJECT_TRANSFORM = 42; OBJECT_TRIGGER = 43; OBJECT_TSCONFIGURATION = 44; OBJECT_TSDICTIONARY = 45; OBJECT_TSPARSER = 46; OBJECT_TSTEMPLATE = 47; OBJECT_TYPE = 48; OBJECT_USER_MAPPING = 49; OBJECT_VIEW = 50; } enum DropBehavior { DROP_BEHAVIOR_UNDEFINED = 0; DROP_RESTRICT = 1; DROP_CASCADE = 2; } enum AlterTableType { ALTER_TABLE_TYPE_UNDEFINED = 0; AT_AddColumn = 1; AT_AddColumnRecurse = 2; AT_AddColumnToView = 3; AT_ColumnDefault = 4; AT_CookedColumnDefault = 5; AT_DropNotNull = 6; AT_SetNotNull = 7; AT_DropExpression = 8; AT_CheckNotNull = 9; AT_SetStatistics = 10; AT_SetOptions = 11; AT_ResetOptions = 12; AT_SetStorage = 13; AT_DropColumn = 14; AT_DropColumnRecurse = 15; AT_AddIndex = 16; AT_ReAddIndex = 17; AT_AddConstraint = 18; AT_AddConstraintRecurse = 19; AT_ReAddConstraint = 20; AT_ReAddDomainConstraint = 21; AT_AlterConstraint = 22; AT_ValidateConstraint = 23; AT_ValidateConstraintRecurse = 24; AT_AddIndexConstraint = 25; AT_DropConstraint = 26; AT_DropConstraintRecurse = 27; AT_ReAddComment = 28; AT_AlterColumnType = 29; AT_AlterColumnGenericOptions = 30; AT_ChangeOwner = 31; AT_ClusterOn = 32; AT_DropCluster = 33; AT_SetLogged = 34; AT_SetUnLogged = 35; AT_DropOids = 36; AT_SetTableSpace = 37; AT_SetRelOptions = 38; AT_ResetRelOptions = 39; AT_ReplaceRelOptions = 40; AT_EnableTrig = 41; AT_EnableAlwaysTrig = 42; AT_EnableReplicaTrig = 43; AT_DisableTrig = 44; AT_EnableTrigAll = 45; AT_DisableTrigAll = 46; AT_EnableTrigUser = 47; AT_DisableTrigUser = 48; AT_EnableRule = 49; AT_EnableAlwaysRule = 50; AT_EnableReplicaRule = 51; AT_DisableRule = 52; AT_AddInherit = 53; AT_DropInherit = 54; AT_AddOf = 55; AT_DropOf = 56; AT_ReplicaIdentity = 57; AT_EnableRowSecurity = 58; AT_DisableRowSecurity = 59; AT_ForceRowSecurity = 60; AT_NoForceRowSecurity = 61; AT_GenericOptions = 62; AT_AttachPartition = 63; AT_DetachPartition = 64; AT_AddIdentity = 65; AT_SetIdentity = 66; AT_DropIdentity = 67; } enum GrantTargetType { GRANT_TARGET_TYPE_UNDEFINED = 0; ACL_TARGET_OBJECT = 1; ACL_TARGET_ALL_IN_SCHEMA = 2; ACL_TARGET_DEFAULTS = 3; } enum VariableSetKind { VARIABLE_SET_KIND_UNDEFINED = 0; VAR_SET_VALUE = 1; VAR_SET_DEFAULT = 2; VAR_SET_CURRENT = 3; VAR_SET_MULTI = 4; VAR_RESET = 5; VAR_RESET_ALL = 6; } enum ConstrType { CONSTR_TYPE_UNDEFINED = 0; CONSTR_NULL = 1; CONSTR_NOTNULL = 2; CONSTR_DEFAULT = 3; CONSTR_IDENTITY = 4; CONSTR_GENERATED = 5; CONSTR_CHECK = 6; CONSTR_PRIMARY = 7; CONSTR_UNIQUE = 8; CONSTR_EXCLUSION = 9; CONSTR_FOREIGN = 10; CONSTR_ATTR_DEFERRABLE = 11; CONSTR_ATTR_NOT_DEFERRABLE = 12; CONSTR_ATTR_DEFERRED = 13; CONSTR_ATTR_IMMEDIATE = 14; } enum ImportForeignSchemaType { IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED = 0; FDW_IMPORT_SCHEMA_ALL = 1; FDW_IMPORT_SCHEMA_LIMIT_TO = 2; FDW_IMPORT_SCHEMA_EXCEPT = 3; } enum RoleStmtType { ROLE_STMT_TYPE_UNDEFINED = 0; ROLESTMT_ROLE = 1; ROLESTMT_USER = 2; ROLESTMT_GROUP = 3; } enum FetchDirection { FETCH_DIRECTION_UNDEFINED = 0; FETCH_FORWARD = 1; FETCH_BACKWARD = 2; FETCH_ABSOLUTE = 3; FETCH_RELATIVE = 4; } enum FunctionParameterMode { FUNCTION_PARAMETER_MODE_UNDEFINED = 0; FUNC_PARAM_IN = 1; FUNC_PARAM_OUT = 2; FUNC_PARAM_INOUT = 3; FUNC_PARAM_VARIADIC = 4; FUNC_PARAM_TABLE = 5; } enum TransactionStmtKind { TRANSACTION_STMT_KIND_UNDEFINED = 0; TRANS_STMT_BEGIN = 1; TRANS_STMT_START = 2; TRANS_STMT_COMMIT = 3; TRANS_STMT_ROLLBACK = 4; TRANS_STMT_SAVEPOINT = 5; TRANS_STMT_RELEASE = 6; TRANS_STMT_ROLLBACK_TO = 7; TRANS_STMT_PREPARE = 8; TRANS_STMT_COMMIT_PREPARED = 9; TRANS_STMT_ROLLBACK_PREPARED = 10; } enum ViewCheckOption { VIEW_CHECK_OPTION_UNDEFINED = 0; NO_CHECK_OPTION = 1; LOCAL_CHECK_OPTION = 2; CASCADED_CHECK_OPTION = 3; } enum ClusterOption { CLUSTER_OPTION_UNDEFINED = 0; CLUOPT_RECHECK = 1; CLUOPT_VERBOSE = 2; } enum DiscardMode { DISCARD_MODE_UNDEFINED = 0; DISCARD_ALL = 1; DISCARD_PLANS = 2; DISCARD_SEQUENCES = 3; DISCARD_TEMP = 4; } enum ReindexObjectType { REINDEX_OBJECT_TYPE_UNDEFINED = 0; REINDEX_OBJECT_INDEX = 1; REINDEX_OBJECT_TABLE = 2; REINDEX_OBJECT_SCHEMA = 3; REINDEX_OBJECT_SYSTEM = 4; REINDEX_OBJECT_DATABASE = 5; } enum AlterTSConfigType { ALTER_TSCONFIG_TYPE_UNDEFINED = 0; ALTER_TSCONFIG_ADD_MAPPING = 1; ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN = 2; ALTER_TSCONFIG_REPLACE_DICT = 3; ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN = 4; ALTER_TSCONFIG_DROP_MAPPING = 5; } enum AlterSubscriptionType { ALTER_SUBSCRIPTION_TYPE_UNDEFINED = 0; ALTER_SUBSCRIPTION_OPTIONS = 1; ALTER_SUBSCRIPTION_CONNECTION = 2; ALTER_SUBSCRIPTION_PUBLICATION = 3; ALTER_SUBSCRIPTION_REFRESH = 4; ALTER_SUBSCRIPTION_ENABLED = 5; } enum OnCommitAction { ON_COMMIT_ACTION_UNDEFINED = 0; ONCOMMIT_NOOP = 1; ONCOMMIT_PRESERVE_ROWS = 2; ONCOMMIT_DELETE_ROWS = 3; ONCOMMIT_DROP = 4; } enum ParamKind { PARAM_KIND_UNDEFINED = 0; PARAM_EXTERN = 1; PARAM_EXEC = 2; PARAM_SUBLINK = 3; PARAM_MULTIEXPR = 4; } enum CoercionContext { COERCION_CONTEXT_UNDEFINED = 0; COERCION_IMPLICIT = 1; COERCION_ASSIGNMENT = 2; COERCION_EXPLICIT = 3; } enum CoercionForm { COERCION_FORM_UNDEFINED = 0; COERCE_EXPLICIT_CALL = 1; COERCE_EXPLICIT_CAST = 2; COERCE_IMPLICIT_CAST = 3; } enum BoolExprType { BOOL_EXPR_TYPE_UNDEFINED = 0; AND_EXPR = 1; OR_EXPR = 2; NOT_EXPR = 3; } enum SubLinkType { SUB_LINK_TYPE_UNDEFINED = 0; EXISTS_SUBLINK = 1; ALL_SUBLINK = 2; ANY_SUBLINK = 3; ROWCOMPARE_SUBLINK = 4; EXPR_SUBLINK = 5; MULTIEXPR_SUBLINK = 6; ARRAY_SUBLINK = 7; CTE_SUBLINK = 8; } enum RowCompareType { ROW_COMPARE_TYPE_UNDEFINED = 0; ROWCOMPARE_LT = 1; ROWCOMPARE_LE = 2; ROWCOMPARE_EQ = 3; ROWCOMPARE_GE = 4; ROWCOMPARE_GT = 5; ROWCOMPARE_NE = 6; } enum MinMaxOp { MIN_MAX_OP_UNDEFINED = 0; IS_GREATEST = 1; IS_LEAST = 2; } enum SQLValueFunctionOp { SQLVALUE_FUNCTION_OP_UNDEFINED = 0; SVFOP_CURRENT_DATE = 1; SVFOP_CURRENT_TIME = 2; SVFOP_CURRENT_TIME_N = 3; SVFOP_CURRENT_TIMESTAMP = 4; SVFOP_CURRENT_TIMESTAMP_N = 5; SVFOP_LOCALTIME = 6; SVFOP_LOCALTIME_N = 7; SVFOP_LOCALTIMESTAMP = 8; SVFOP_LOCALTIMESTAMP_N = 9; SVFOP_CURRENT_ROLE = 10; SVFOP_CURRENT_USER = 11; SVFOP_USER = 12; SVFOP_SESSION_USER = 13; SVFOP_CURRENT_CATALOG = 14; SVFOP_CURRENT_SCHEMA = 15; } enum XmlExprOp { XML_EXPR_OP_UNDEFINED = 0; IS_XMLCONCAT = 1; IS_XMLELEMENT = 2; IS_XMLFOREST = 3; IS_XMLPARSE = 4; IS_XMLPI = 5; IS_XMLROOT = 6; IS_XMLSERIALIZE = 7; IS_DOCUMENT = 8; } enum XmlOptionType { XML_OPTION_TYPE_UNDEFINED = 0; XMLOPTION_DOCUMENT = 1; XMLOPTION_CONTENT = 2; } enum NullTestType { NULL_TEST_TYPE_UNDEFINED = 0; IS_NULL = 1; IS_NOT_NULL = 2; } enum BoolTestType { BOOL_TEST_TYPE_UNDEFINED = 0; IS_TRUE = 1; IS_NOT_TRUE = 2; IS_FALSE = 3; IS_NOT_FALSE = 4; IS_UNKNOWN = 5; IS_NOT_UNKNOWN = 6; } enum CmdType { CMD_TYPE_UNDEFINED = 0; CMD_UNKNOWN = 1; CMD_SELECT = 2; CMD_UPDATE = 3; CMD_INSERT = 4; CMD_DELETE = 5; CMD_UTILITY = 6; CMD_NOTHING = 7; } enum JoinType { JOIN_TYPE_UNDEFINED = 0; JOIN_INNER = 1; JOIN_LEFT = 2; JOIN_FULL = 3; JOIN_RIGHT = 4; JOIN_SEMI = 5; JOIN_ANTI = 6; JOIN_UNIQUE_OUTER = 7; JOIN_UNIQUE_INNER = 8; } enum AggStrategy { AGG_STRATEGY_UNDEFINED = 0; AGG_PLAIN = 1; AGG_SORTED = 2; AGG_HASHED = 3; AGG_MIXED = 4; } enum AggSplit { AGG_SPLIT_UNDEFINED = 0; AGGSPLIT_SIMPLE = 1; AGGSPLIT_INITIAL_SERIAL = 2; AGGSPLIT_FINAL_DESERIAL = 3; } enum SetOpCmd { SET_OP_CMD_UNDEFINED = 0; SETOPCMD_INTERSECT = 1; SETOPCMD_INTERSECT_ALL = 2; SETOPCMD_EXCEPT = 3; SETOPCMD_EXCEPT_ALL = 4; } enum SetOpStrategy { SET_OP_STRATEGY_UNDEFINED = 0; SETOP_SORTED = 1; SETOP_HASHED = 2; } enum OnConflictAction { ON_CONFLICT_ACTION_UNDEFINED = 0; ONCONFLICT_NONE = 1; ONCONFLICT_NOTHING = 2; ONCONFLICT_UPDATE = 3; } enum LimitOption { LIMIT_OPTION_UNDEFINED = 0; LIMIT_OPTION_DEFAULT = 1; LIMIT_OPTION_COUNT = 2; LIMIT_OPTION_WITH_TIES = 3; } enum LockClauseStrength { LOCK_CLAUSE_STRENGTH_UNDEFINED = 0; LCS_NONE = 1; LCS_FORKEYSHARE = 2; LCS_FORSHARE = 3; LCS_FORNOKEYUPDATE = 4; LCS_FORUPDATE = 5; } enum LockWaitPolicy { LOCK_WAIT_POLICY_UNDEFINED = 0; LockWaitBlock = 1; LockWaitSkip = 2; LockWaitError = 3; } enum LockTupleMode { LOCK_TUPLE_MODE_UNDEFINED = 0; LockTupleKeyShare = 1; LockTupleShare = 2; LockTupleNoKeyExclusive = 3; LockTupleExclusive = 4; } message ScanToken { int32 start = 1; int32 end = 2; Token token = 4; KeywordKind keyword_kind = 5; } enum KeywordKind { NO_KEYWORD = 0; UNRESERVED_KEYWORD = 1; COL_NAME_KEYWORD = 2; TYPE_FUNC_NAME_KEYWORD = 3; RESERVED_KEYWORD = 4; } enum Token { NUL = 0; // Single-character tokens that are returned 1:1 (identical with "self" list in scan.l) // Either supporting syntax, or single-character operators (some can be both) // Also see https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-SYNTAX-SPECIAL-CHARS ASCII_37 = 37; // "%" ASCII_40 = 40; // "(" ASCII_41 = 41; // ")" ASCII_42 = 42; // "*" ASCII_43 = 43; // "+" ASCII_44 = 44; // "," ASCII_45 = 45; // "-" ASCII_46 = 46; // "." ASCII_47 = 47; // "/" ASCII_58 = 58; // ":" ASCII_59 = 59; // ";" ASCII_60 = 60; // "<" ASCII_61 = 61; // "=" ASCII_62 = 62; // ">" ASCII_63 = 63; // "?" ASCII_91 = 91; // "[" ASCII_92 = 92; // "\" ASCII_93 = 93; // "]" ASCII_94 = 94; // "^" // Named tokens in scan.l IDENT = 258; UIDENT = 259; FCONST = 260; SCONST = 261; USCONST = 262; BCONST = 263; XCONST = 264; Op = 265; ICONST = 266; PARAM = 267; TYPECAST = 268; DOT_DOT = 269; COLON_EQUALS = 270; EQUALS_GREATER = 271; LESS_EQUALS = 272; GREATER_EQUALS = 273; NOT_EQUALS = 274; SQL_COMMENT = 275; C_COMMENT = 276; ABORT_P = 277; ABSOLUTE_P = 278; ACCESS = 279; ACTION = 280; ADD_P = 281; ADMIN = 282; AFTER = 283; AGGREGATE = 284; ALL = 285; ALSO = 286; ALTER = 287; ALWAYS = 288; ANALYSE = 289; ANALYZE = 290; AND = 291; ANY = 292; ARRAY = 293; AS = 294; ASC = 295; ASSERTION = 296; ASSIGNMENT = 297; ASYMMETRIC = 298; AT = 299; ATTACH = 300; ATTRIBUTE = 301; AUTHORIZATION = 302; BACKWARD = 303; BEFORE = 304; BEGIN_P = 305; BETWEEN = 306; BIGINT = 307; BINARY = 308; BIT = 309; BOOLEAN_P = 310; BOTH = 311; BY = 312; CACHE = 313; CALL = 314; CALLED = 315; CASCADE = 316; CASCADED = 317; CASE = 318; CAST = 319; CATALOG_P = 320; CHAIN = 321; CHAR_P = 322; CHARACTER = 323; CHARACTERISTICS = 324; CHECK = 325; CHECKPOINT = 326; CLASS = 327; CLOSE = 328; CLUSTER = 329; COALESCE = 330; COLLATE = 331; COLLATION = 332; COLUMN = 333; COLUMNS = 334; COMMENT = 335; COMMENTS = 336; COMMIT = 337; COMMITTED = 338; CONCURRENTLY = 339; CONFIGURATION = 340; CONFLICT = 341; CONNECTION = 342; CONSTRAINT = 343; CONSTRAINTS = 344; CONTENT_P = 345; CONTINUE_P = 346; CONVERSION_P = 347; COPY = 348; COST = 349; CREATE = 350; CROSS = 351; CSV = 352; CUBE = 353; CURRENT_P = 354; CURRENT_CATALOG = 355; CURRENT_DATE = 356; CURRENT_ROLE = 357; CURRENT_SCHEMA = 358; CURRENT_TIME = 359; CURRENT_TIMESTAMP = 360; CURRENT_USER = 361; CURSOR = 362; CYCLE = 363; DATA_P = 364; DATABASE = 365; DAY_P = 366; DEALLOCATE = 367; DEC = 368; DECIMAL_P = 369; DECLARE = 370; DEFAULT = 371; DEFAULTS = 372; DEFERRABLE = 373; DEFERRED = 374; DEFINER = 375; DELETE_P = 376; DELIMITER = 377; DELIMITERS = 378; DEPENDS = 379; DESC = 380; DETACH = 381; DICTIONARY = 382; DISABLE_P = 383; DISCARD = 384; DISTINCT = 385; DO = 386; DOCUMENT_P = 387; DOMAIN_P = 388; DOUBLE_P = 389; DROP = 390; EACH = 391; ELSE = 392; ENABLE_P = 393; ENCODING = 394; ENCRYPTED = 395; END_P = 396; ENUM_P = 397; ESCAPE = 398; EVENT = 399; EXCEPT = 400; EXCLUDE = 401; EXCLUDING = 402; EXCLUSIVE = 403; EXECUTE = 404; EXISTS = 405; EXPLAIN = 406; EXPRESSION = 407; EXTENSION = 408; EXTERNAL = 409; EXTRACT = 410; FALSE_P = 411; FAMILY = 412; FETCH = 413; FILTER = 414; FIRST_P = 415; FLOAT_P = 416; FOLLOWING = 417; FOR = 418; FORCE = 419; FOREIGN = 420; FORWARD = 421; FREEZE = 422; FROM = 423; FULL = 424; FUNCTION = 425; FUNCTIONS = 426; GENERATED = 427; GLOBAL = 428; GRANT = 429; GRANTED = 430; GREATEST = 431; GROUP_P = 432; GROUPING = 433; GROUPS = 434; HANDLER = 435; HAVING = 436; HEADER_P = 437; HOLD = 438; HOUR_P = 439; IDENTITY_P = 440; IF_P = 441; ILIKE = 442; IMMEDIATE = 443; IMMUTABLE = 444; IMPLICIT_P = 445; IMPORT_P = 446; IN_P = 447; INCLUDE = 448; INCLUDING = 449; INCREMENT = 450; INDEX = 451; INDEXES = 452; INHERIT = 453; INHERITS = 454; INITIALLY = 455; INLINE_P = 456; INNER_P = 457; INOUT = 458; INPUT_P = 459; INSENSITIVE = 460; INSERT = 461; INSTEAD = 462; INT_P = 463; INTEGER = 464; INTERSECT = 465; INTERVAL = 466; INTO = 467; INVOKER = 468; IS = 469; ISNULL = 470; ISOLATION = 471; JOIN = 472; KEY = 473; LABEL = 474; LANGUAGE = 475; LARGE_P = 476; LAST_P = 477; LATERAL_P = 478; LEADING = 479; LEAKPROOF = 480; LEAST = 481; LEFT = 482; LEVEL = 483; LIKE = 484; LIMIT = 485; LISTEN = 486; LOAD = 487; LOCAL = 488; LOCALTIME = 489; LOCALTIMESTAMP = 490; LOCATION = 491; LOCK_P = 492; LOCKED = 493; LOGGED = 494; MAPPING = 495; MATCH = 496; MATERIALIZED = 497; MAXVALUE = 498; METHOD = 499; MINUTE_P = 500; MINVALUE = 501; MODE = 502; MONTH_P = 503; MOVE = 504; NAME_P = 505; NAMES = 506; NATIONAL = 507; NATURAL = 508; NCHAR = 509; NEW = 510; NEXT = 511; NFC = 512; NFD = 513; NFKC = 514; NFKD = 515; NO = 516; NONE = 517; NORMALIZE = 518; NORMALIZED = 519; NOT = 520; NOTHING = 521; NOTIFY = 522; NOTNULL = 523; NOWAIT = 524; NULL_P = 525; NULLIF = 526; NULLS_P = 527; NUMERIC = 528; OBJECT_P = 529; OF = 530; OFF = 531; OFFSET = 532; OIDS = 533; OLD = 534; ON = 535; ONLY = 536; OPERATOR = 537; OPTION = 538; OPTIONS = 539; OR = 540; ORDER = 541; ORDINALITY = 542; OTHERS = 543; OUT_P = 544; OUTER_P = 545; OVER = 546; OVERLAPS = 547; OVERLAY = 548; OVERRIDING = 549; OWNED = 550; OWNER = 551; PARALLEL = 552; PARSER = 553; PARTIAL = 554; PARTITION = 555; PASSING = 556; PASSWORD = 557; PLACING = 558; PLANS = 559; POLICY = 560; POSITION = 561; PRECEDING = 562; PRECISION = 563; PRESERVE = 564; PREPARE = 565; PREPARED = 566; PRIMARY = 567; PRIOR = 568; PRIVILEGES = 569; PROCEDURAL = 570; PROCEDURE = 571; PROCEDURES = 572; PROGRAM = 573; PUBLICATION = 574; QUOTE = 575; RANGE = 576; READ = 577; REAL = 578; REASSIGN = 579; RECHECK = 580; RECURSIVE = 581; REF = 582; REFERENCES = 583; REFERENCING = 584; REFRESH = 585; REINDEX = 586; RELATIVE_P = 587; RELEASE = 588; RENAME = 589; REPEATABLE = 590; REPLACE = 591; REPLICA = 592; RESET = 593; RESTART = 594; RESTRICT = 595; RETURNING = 596; RETURNS = 597; REVOKE = 598; RIGHT = 599; ROLE = 600; ROLLBACK = 601; ROLLUP = 602; ROUTINE = 603; ROUTINES = 604; ROW = 605; ROWS = 606; RULE = 607; SAVEPOINT = 608; SCHEMA = 609; SCHEMAS = 610; SCROLL = 611; SEARCH = 612; SECOND_P = 613; SECURITY = 614; SELECT = 615; SEQUENCE = 616; SEQUENCES = 617; SERIALIZABLE = 618; SERVER = 619; SESSION = 620; SESSION_USER = 621; SET = 622; SETS = 623; SETOF = 624; SHARE = 625; SHOW = 626; SIMILAR = 627; SIMPLE = 628; SKIP = 629; SMALLINT = 630; SNAPSHOT = 631; SOME = 632; SQL_P = 633; STABLE = 634; STANDALONE_P = 635; START = 636; STATEMENT = 637; STATISTICS = 638; STDIN = 639; STDOUT = 640; STORAGE = 641; STORED = 642; STRICT_P = 643; STRIP_P = 644; SUBSCRIPTION = 645; SUBSTRING = 646; SUPPORT = 647; SYMMETRIC = 648; SYSID = 649; SYSTEM_P = 650; TABLE = 651; TABLES = 652; TABLESAMPLE = 653; TABLESPACE = 654; TEMP = 655; TEMPLATE = 656; TEMPORARY = 657; TEXT_P = 658; THEN = 659; TIES = 660; TIME = 661; TIMESTAMP = 662; TO = 663; TRAILING = 664; TRANSACTION = 665; TRANSFORM = 666; TREAT = 667; TRIGGER = 668; TRIM = 669; TRUE_P = 670; TRUNCATE = 671; TRUSTED = 672; TYPE_P = 673; TYPES_P = 674; UESCAPE = 675; UNBOUNDED = 676; UNCOMMITTED = 677; UNENCRYPTED = 678; UNION = 679; UNIQUE = 680; UNKNOWN = 681; UNLISTEN = 682; UNLOGGED = 683; UNTIL = 684; UPDATE = 685; USER = 686; USING = 687; VACUUM = 688; VALID = 689; VALIDATE = 690; VALIDATOR = 691; VALUE_P = 692; VALUES = 693; VARCHAR = 694; VARIADIC = 695; VARYING = 696; VERBOSE = 697; VERSION_P = 698; VIEW = 699; VIEWS = 700; VOLATILE = 701; WHEN = 702; WHERE = 703; WHITESPACE_P = 704; WINDOW = 705; WITH = 706; WITHIN = 707; WITHOUT = 708; WORK = 709; WRAPPER = 710; WRITE = 711; XML_P = 712; XMLATTRIBUTES = 713; XMLCONCAT = 714; XMLELEMENT = 715; XMLEXISTS = 716; XMLFOREST = 717; XMLNAMESPACES = 718; XMLPARSE = 719; XMLPI = 720; XMLROOT = 721; XMLSERIALIZE = 722; XMLTABLE = 723; YEAR_P = 724; YES_P = 725; ZONE = 726; NOT_LA = 727; NULLS_LA = 728; WITH_LA = 729; POSTFIXOP = 730; UMINUS = 731; } libpg_query-13-2.1.0/scripts/000077500000000000000000000000001413137616400157525ustar00rootroot00000000000000libpg_query-13-2.1.0/scripts/extract_headers.rb000077500000000000000000000230611413137616400214510ustar00rootroot00000000000000#!/usr/bin/env ruby # You need to call this with the PostgreSQL source directory as the first commandline agument # ./scripts/extract_headers.rb ./my_postgres_src_dir # rubocop:disable Style/PerlBackrefs, Metrics/AbcSize, Metrics/LineLength, Metrics/MethodLength, Style/WordArray, Metrics/ClassLength, Style/Documentation, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Style/TrailingComma, Style/RegexpLiteral require 'bundler' require 'json' def underscore(str) str .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .tr('-', '_') .gsub(/\s/, '_') .gsub(/__+/, '_') .downcase end def classify(str) str .gsub(/([A-Z]+)/, '_\1') .split('_').collect(&:capitalize).join end class Extractor def initialize(pgdir) @pgdir = pgdir end def generate_nodetypes! inside = false @nodetypes = [] lines = File.read(File.join(@pgdir, '/src/include/nodes/nodes.h')) lines.each_line do |line| if inside if line[/T_([A-z_]+)(\s+=\s+\d+)?,/] @nodetypes << $1 elsif line == "} NodeTag;\n" inside = false end elsif line == "typedef enum NodeTag\n" inside = true end end end IGNORE_LIST = [ 'Node', 'varlena', 'IntArray', 'nameData', 'bool', 'sig_atomic_t', 'size_t', 'varatt_indirect', ] def generate_defs! @target_struct = nil @open_comment = false @all_known_enums = [] @enum_defs = {} @struct_defs = {} @typedefs = [] ['nodes/parsenodes', 'nodes/primnodes', 'nodes/lockoptions', 'nodes/nodes', 'nodes/params', 'access/attnum', 'c', 'postgres', 'postgres_ext', 'commands/vacuum', 'storage/block', 'access/sdir', 'mb/pg_wchar', '../backend/parser/gram'].each do |group| @target_group = group @struct_defs[@target_group] = {} @enum_defs[@target_group] = {} @comment_text = nil lines = File.read(File.join(@pgdir, format('/src/include/%s.h', @target_group))) lines.each_line do |line| if !@current_struct_def.nil? handle_struct(line) elsif !@current_enum_def.nil? handle_enum(line) elsif line[/^(?:typedef )?struct ([A-z]+)\s*(\/\*.+)?$/] next if IGNORE_LIST.include?($1) @current_struct_def = { name: $1, fields: [], comment: @open_comment_text } @open_comment_text = nil elsif line[/^\s*(?:typedef )?enum\s*([A-z]+)?\s*(\/\*.+)?(?: {)?$/] next if IGNORE_LIST.include?($1) @current_enum_def = { name: $1, values: [], comment: @open_comment_text } @open_comment_text = nil elsif line[/^typedef( struct)? ([A-z0-9\s_]+) \*?([A-z]+);/] next if IGNORE_LIST.include?($2) || IGNORE_LIST.include?($3) @typedefs << { new_type_name: $3, source_type: $2, comment: @open_comment_text } @open_comment_text = nil elsif line.strip.start_with?('/*') @open_comment_text = line @open_comment = !line.include?('*/') elsif @open_comment @open_comment_text += "\n" unless @open_comment_text.end_with?("\n") @open_comment_text += line @open_comment = !line.include?('*/') end end end end def handle_struct(line) if line[/^\s+(struct |const )?([A-z0-9]+)\s+(\*){0,2}([A-z_]+);\s*(\/\*.+)?/] name = $4 c_type = $2 + $3.to_s comment = $5 @current_struct_def[:fields] << { name: name, c_type: c_type, comment: comment } @open_comment = line.include?('/*') && !line.include?('*/') elsif line[/^\}(\s+([A-z]+))?;/] name = @current_struct_def.delete(:name) @struct_defs[@target_group][name] = @current_struct_def @current_struct_def = nil elsif line.strip.start_with?('/*') @current_struct_def[:fields] << { comment: line } @open_comment = !line.include?('*/') elsif @open_comment @current_struct_def[:fields].last[:comment] += "\n" unless @current_struct_def[:fields].last[:comment].end_with?("\n") @current_struct_def[:fields].last[:comment] += line @open_comment = !line.include?('*/') elsif !@current_struct_def[:fields].empty? @current_struct_def[:fields] << { comment: '' } end end def handle_enum(line) if line[/^\s+([A-z0-9_]+)(?: = (?:(\d+)(?: << (\d+))?|(PG_INT32_MAX)|(?:'(\w)')))?,?\s*((?:[A-z0-9_]+,?\s*)+)?(\/\*.+)?/] primary_value = { name: $1 } previous_line_values = @current_enum_def[:values].map {|v| v[:value] }.compact primary_value[:value] = if $2 ($3 ? ($2.to_i << $3.to_i) : $2.to_i) elsif $4 == 'PG_INT32_MAX' 0x7FFFFFFF elsif $5 $5.ord elsif previous_line_values.size > 0 previous_line_values[-1] + 1 else 0 end primary_value[:comment] = $7 if $7 @current_enum_def[:values] << primary_value if $6 $6.split(',').map(&:strip).each do |name| secondary_value = { name: name } secondary_value[:comment] = $7 if $7 @current_enum_def[:values] << secondary_value end end @open_comment = line.include?('/*') && !line.include?('*/') elsif line[/^\s*\}\s*([A-z]+)?;/] name = @current_enum_def.delete(:name) || $1 @all_known_enums << name @enum_defs[@target_group][name] = @current_enum_def @current_enum_def = nil elsif line.strip.start_with?('/*') @current_enum_def[:values] << { comment: line } @open_comment = !line.include?('*/') elsif @open_comment @current_enum_def[:values].last[:comment] += "\n" unless @current_enum_def[:values].last[:comment].end_with?("\n") @current_enum_def[:values].last[:comment] += line @open_comment = !line.include?('*/') elsif !@current_enum_def.empty? @current_enum_def[:values] << { comment: '' } end end # Top-of-struct comment special cases - we might want to merge these into the same output files at some point COMMENT_ENUM_TO_STRUCT = { 'nodes/parsenodes' => { 'SelectStmt' => 'SetOperation', 'CreateRoleStmt' => 'RoleStmtType', 'AlterRoleStmt' => 'RoleStmtType', 'AlterRoleSetStmt' => 'RoleStmtType', 'DropRoleStmt' => 'RoleStmtType', 'A_Expr' => 'A_Expr_Kind', 'DefElem' => 'DefElemAction', 'DiscardStmt' => 'DiscardMode', 'FetchStmt' => 'FetchDirection', 'GrantStmt' => 'GrantTargetType', 'RangeTblEntry' => 'RTEKind', 'TransactionStmt' => 'TransactionStmtKind', 'ViewStmt' => 'ViewCheckOption', }, 'nodes/primnodes' => { 'MinMaxExpr' => 'MinMaxOp', 'Param' => 'ParamKind', 'RowCompareExpr' => 'RowCompareType', 'SubLink' => 'SubLinkType', 'BooleanTest' => 'BoolTestType', 'NullTest' => 'NullTestType', } } COMMENT_STRUCT_TO_STRUCT = { 'nodes/parsenodes' => { 'AlterDatabaseSetStmt' => 'AlterDatabaseStmt', # 'AlterExtensionStmt' => 'CreateExtensionStmt', # FIXME: This overrides an existing sub-comment 'AlterExtensionContentsStmt' => 'CreateExtensionStmt', 'AlterFdwStmt' => 'CreateFdwStmt', 'AlterForeignServerStmt' => 'CreateForeignServerStmt', 'AlterFunctionStmt' => 'CreateFunctionStmt', 'AlterSeqStmt' => 'CreateSeqStmt', 'AlterTableCmd' => 'AlterTableStmt', 'ReplicaIdentityStmt' => 'AlterTableStmt', 'AlterUserMappingStmt' => 'CreateUserMappingStmt', 'DropUserMappingStmt' => 'CreateUserMappingStmt', 'CreateOpClassItem' => 'CreateOpClassStmt', 'DropTableSpaceStmt' => 'CreateTableSpaceStmt', 'FunctionParameter' => 'CreateFunctionStmt', 'InlineCodeBlock' => 'DoStmt', }, 'nodes/params' => { 'ParamListInfoData' => 'ParamExternData', }, } def transform_toplevel_comments! COMMENT_ENUM_TO_STRUCT.each do |file, mapping| mapping.each do |target, source| @struct_defs[file][target][:comment] = @enum_defs[file][source][:comment] end end COMMENT_STRUCT_TO_STRUCT.each do |file, mapping| mapping.each do |target, source| @struct_defs[file][target][:comment] = @struct_defs[file][source][:comment] end end end def extract! generate_nodetypes! generate_defs! transform_toplevel_comments! @struct_defs['nodes/value'] = {} @struct_defs['nodes/value']['Integer'] = { fields: [{ name: 'ival', c_type: 'long' }] } @struct_defs['nodes/value']['Float'] = { fields: [{ name: 'str', c_type: 'char*' }] } @struct_defs['nodes/value']['String'] = { fields: [{ name: 'str', c_type: 'char*' }] } @struct_defs['nodes/value']['BitString'] = { fields: [{ name: 'str', c_type: 'char*' }] } @struct_defs['nodes/pg_list'] = { 'List' => { fields: [{ name: 'items', c_type: '[]Node' }] } } @struct_defs['nodes/value']['Null'] = { fields: [] } @struct_defs['nodes/params']['ParamListInfoData'][:fields].reject! { |f| f[:c_type] == 'ParamExternData' } File.write('./srcdata/nodetypes.json', JSON.pretty_generate(@nodetypes)) File.write('./srcdata/all_known_enums.json', JSON.pretty_generate(@all_known_enums)) File.write('./srcdata/struct_defs.json', JSON.pretty_generate(@struct_defs)) File.write('./srcdata/enum_defs.json', JSON.pretty_generate(@enum_defs)) File.write('./srcdata/typedefs.json', JSON.pretty_generate(@typedefs)) end end if !ARGV[0] puts 'ERROR: You need to specify Postgres source directory as the first argument' return end Extractor.new(ARGV[0]).extract! libpg_query-13-2.1.0/scripts/extract_source.rb000066400000000000000000000546601413137616400213440ustar00rootroot00000000000000# rubocop:disable all # You need to call this with the PostgreSQL source directory as the first commandline agument, and the output dir as the second # ./scripts/extract_source.rb ./tmp/postgres ./src/postgres require 'ffi/clang' require 'json' module FFI::Clang::Lib enum :storage_class, [ :invalid, 0, :none, 1, :extern, 2, :static, 3, :private_extern, 4, :opencl_workgroup_local, 5, :auto, 6, :register, 7, ] attach_function :get_storage_class, :clang_Cursor_getStorageClass, [FFI::Clang::Lib::CXCursor.by_value], :storage_class end module FFI::Clang class Cursor def storage_class Lib.get_storage_class(@cursor) end # Copy of clang::VarDecl::hasExternalStorage http://clang.llvm.org/doxygen/Decl_8h_source.html#l00982 def has_external_storage storage_class == :extern || storage_class == :private_extern end end end class Runner attr_reader :unresolved attr_reader :code_for_resolve def initialize @file_analysis = {} @global_method_to_base_filename = {} @file_to_method_and_pos = {} @external_variables = [] @resolved_static_by_base_filename = {} @resolved_global = [] @symbols_to_output = {} @include_files_to_output = [] @unresolved = [] @blocklist = [] @mock = {} @basepath = File.absolute_path(ARGV[0]) + '/' @out_path = File.absolute_path(ARGV[1]) + '/' end def blocklist(symbol) @blocklist << symbol end def mock(symbol, code) @mock[symbol] = code end def run files = Dir.glob(@basepath + 'src/backend/**/*.c') + Dir.glob(@basepath + 'src/common/**/*.c') + Dir.glob(@basepath + 'src/port/**/*.c') + Dir.glob(@basepath + 'src/timezone/**/*.c') + Dir.glob(@basepath + 'src/pl/plpgsql/src/*.c') + Dir.glob(@basepath + 'contrib/pgcrypto/*.c') - [ # blocklist @basepath + 'src/backend/libpq/be-secure-openssl.c', # OpenSSL include error @basepath + 'src/backend/utils/adt/levenshtein.c', # Built through varlena.c @basepath + 'src/backend/utils/adt/like_match.c', # Built through like.c @basepath + 'src/backend/utils/adt/jsonpath_scan.c', # Built through jsonpath.c @basepath + 'src/backend/utils/misc/guc-file.c', # Built through guc.c @basepath + 'src/backend/utils/sort/qsort_tuple.c', # Built through tuplesort.c @basepath + 'src/backend/bootstrap/bootscanner.c', # Built through bootparse.c @basepath + 'src/backend/regex/regc_color.c', # Built through regcomp.c @basepath + 'src/backend/regex/regc_cvec.c', # Built through regcomp.c @basepath + 'src/backend/regex/regc_lex.c', # Built through regcomp.c @basepath + 'src/backend/regex/regc_pg_locale.c', # Built through regcomp.c @basepath + 'src/backend/regex/regc_locale.c', # Built through regcomp.c @basepath + 'src/backend/regex/regc_nfa.c', # Built through regcomp.c @basepath + 'src/backend/regex/rege_dfa.c', # Built through regexec.c @basepath + 'src/backend/replication/repl_scanner.c', # Built through repl_gram.c @basepath + 'src/backend/replication/libpqwalreceiver/libpqwalreceiver.c', # Dynamic module @basepath + 'src/backend/replication/syncrep_scanner.c', # Built through syncrep.c @basepath + 'src/backend/port/posix_sema.c', # Linux only @basepath + 'src/common/fe_memutils.c', # This file is not expected to be compiled for backend code @basepath + 'src/common/restricted_token.c', # This file is not expected to be compiled for backend code @basepath + 'src/common/unicode/norm_test.c', # This file is not expected to be compiled for backend code @basepath + 'src/backend/utils/mb/win866.c', # Win32 only @basepath + 'src/backend/utils/mb/win1251.c', # Win32 only @basepath + 'src/backend/utils/mb/iso.c', # Win32 only @basepath + 'src/port/dirent.c', # Win32 only @basepath + 'src/port/win32error.c', # Win32 only @basepath + 'src/port/win32env.c', # Win32 only @basepath + 'src/port/win32security.c', # Win32 only @basepath + 'src/port/gettimeofday.c', # Win32 only @basepath + 'src/port/strlcpy.c', # Not needed and conflicts with available function @basepath + 'src/port/strlcat.c', # Not needed and conflicts with available function @basepath + 'src/port/unsetenv.c', # Not needed and conflicts with available function @basepath + 'src/port/getaddrinfo.c', # Not needed and conflicts with available function @basepath + 'src/port/getrusage.c', # Not needed and conflicts with available function @basepath + 'src/port/pg_crc32c_armv8.c', # Can't be parsed outside of ARMv8 compatible environments @basepath + 'src/port/pg_crc32c_armv8_choose.c', # Can't be parsed outside of ARMv8 compatible environments @basepath + 'src/backend/jit/llvm/llvmjit_expr.c', # Requires LLVM-C library (which we don't want to require) @basepath + 'src/backend/jit/llvm/llvmjit_deform.c', # Requires LLVM-C library (which we don't want to require) @basepath + 'src/backend/jit/llvm/llvmjit.c', # Requires LLVM-C library (which we don't want to require) @basepath + 'src/backend/libpq/be-secure-gssapi.c', # Requires GSSAPI (which we don't want to require) @basepath + 'src/common/protocol_openssl.c', # Requires OpenSSL (which we don't want to require) ] - Dir.glob(@basepath + 'src/backend/port/dynloader/*.c') - Dir.glob(@basepath + 'src/backend/port/win32/*.c') - Dir.glob(@basepath + 'src/backend/port/win32_*.c') - Dir.glob(@basepath + 'src/backend/snowball/**/*.c') #files = [@basepath + 'src/backend/parser/keywords.c'] files.each do |file| if files == [file] puts format('Analysing single file: %s', file) analysis = analyze_file(file) analysis_file = analysis.save puts format('Result: %s', analysis_file) exit 1 end print '.' analysis = FileAnalysis.restore(file, @basepath) || analyze_file(file) analysis.save @file_analysis[file] = analysis analysis.symbol_to_file.each do |symbol, _| next if analysis.static_symbols.include?(symbol) if @global_method_to_base_filename[symbol] && !['main', 'Pg_magic_func', 'pg_open_tzfile', '_PG_init'].include?(symbol) && !@global_method_to_base_filename[symbol].end_with?('c') puts format('Error processing %s, symbol %s already defined by %s', file, symbol, @global_method_to_base_filename[symbol]) end @global_method_to_base_filename[symbol] = file end analysis.file_to_symbol_positions.each do |file, method_and_pos| @file_to_method_and_pos[file] = method_and_pos end analysis.external_variables.each do |symbol| @external_variables << symbol end end #puts @caller_to_static_callees['/Users/lfittl/Code/libpg_query/postgres/src/backend/regex/regc_locale.c']['cclass'].inspect puts "\nFinished parsing" end class FileAnalysis attr_accessor :references, :static_symbols, :symbol_to_file, :file_to_symbol_positions, :external_variables, :included_files def initialize(filename, basepath, references = {}, static_symbols = [], symbol_to_file = {}, file_to_symbol_positions = {}, external_variables = [], included_files = []) @filename = filename @basepath = basepath @references = references @static_symbols = static_symbols @symbol_to_file = symbol_to_file @file_to_symbol_positions = file_to_symbol_positions @external_variables = external_variables @included_files = included_files end def save json = JSON.pretty_generate({ references: @references, static_symbols: @static_symbols, symbol_to_file: @symbol_to_file, file_to_symbol_positions: @file_to_symbol_positions, external_variables: @external_variables, included_files: @included_files, }) file = self.class.analysis_filename(@filename, @basepath) FileUtils.mkdir_p(File.dirname(file)) File.write(file, json) file end def self.restore(filename, basepath) json = File.read(analysis_filename(filename, basepath)) hsh = JSON.parse(json) new(filename, basepath, hsh['references'], hsh['static_symbols'], hsh['symbol_to_file'], hsh['file_to_symbol_positions'], hsh['external_variables'], hsh['included_files']) rescue Errno::ENOENT nil end private def self.analysis_filename(filename, basepath) File.absolute_path('./tmp/analysis') + '/' + filename.gsub(%r{^#{basepath}}, '').gsub(/.c$/, '.json') end end def analyze_file(file) index = FFI::Clang::Index.new(true, true) translation_unit = index.parse_translation_unit(file, ['-I', @basepath + 'src/include', '-I', '/usr/local/opt/openssl/include', '-I', `xcrun --sdk macosx --show-sdk-path`.strip + '/usr/include', '-DDLSUFFIX=".bundle"', '-msse4.2', '-g', '-DUSE_ASSERT_CHECKING']) cursor = translation_unit.cursor func_cursor = nil analysis = FileAnalysis.new(file, @basepath) included_files = [] translation_unit.inclusions do |included_file, _inclusions| next if !included_file.start_with?(@basepath) || included_file == file included_files << included_file end analysis.included_files = included_files.uniq.sort cursor.visit_children do |cursor, parent| if cursor.location.file && (File.dirname(file) == File.dirname(cursor.location.file) || cursor.location.file.end_with?('_impl.h')) if parent.kind == :cursor_translation_unit if (cursor.kind == :cursor_function && cursor.definition?) || (cursor.kind == :cursor_variable && !cursor.has_external_storage) analysis.symbol_to_file[cursor.spelling] = cursor.location.file if cursor.linkage == :external # Nothing special elsif cursor.linkage == :internal (analysis.static_symbols << cursor.spelling).uniq! else fail format('Unknown linkage: %s', cursor.linkage.inspect) end start_offset = cursor.extent.start.offset end_offset = cursor.extent.end.offset end_offset += 1 if cursor.kind == :cursor_variable # The ";" isn't counted correctly by clang if cursor.kind == :cursor_variable && (cursor.linkage == :external || cursor.linkage == :internal) && !cursor.type.const_qualified? && !cursor.type.array_element_type.const_qualified? && cursor.type.pointee.kind != :type_function_proto analysis.external_variables << cursor.spelling end analysis.file_to_symbol_positions[cursor.location.file] ||= {} analysis.file_to_symbol_positions[cursor.location.file][cursor.spelling] = [start_offset, end_offset] cursor.visit_children do |child_cursor, parent| # Ignore variable definitions from the local scope next :recurse if child_cursor.definition.semantic_parent == cursor if child_cursor.kind == :cursor_decl_ref_expr || child_cursor.kind == :cursor_call_expr analysis.references[cursor.spelling] ||= [] (analysis.references[cursor.spelling] << child_cursor.spelling).uniq! end :recurse end end end end next :recurse end analysis end RESOLVE_MAX_DEPTH = 100 def deep_resolve(method_name, depth: 0, trail: [], global_resolved_by_parent: [], static_resolved_by_parent: [], static_base_filename: nil) if @blocklist.include?(method_name) puts 'ERROR: Hit blocklist entry ' + method_name puts 'Trail: ' + trail.inspect exit 1 end if depth > RESOLVE_MAX_DEPTH puts 'ERROR: Exceeded max depth' puts method_name.inspect puts trail.inspect exit 1 end base_filename = static_base_filename || @global_method_to_base_filename[method_name] if !base_filename (@unresolved << method_name).uniq! return end analysis = @file_analysis[base_filename] fail "could not find analysis data for #{base_filename}" if analysis.nil? # We need to determine if we can lookup the place where the method lives implementation_filename = analysis.symbol_to_file[method_name] if !implementation_filename (@unresolved << method_name).uniq! return end @symbols_to_output[implementation_filename] ||= [] @symbols_to_output[implementation_filename] << method_name (@include_files_to_output += analysis.included_files).uniq! if @mock.key?(method_name) # Code will be overwritten at output time, no need to investigate dependents return end # Now we need to resolve all symbols called by this one dependents = (analysis.references[method_name] || []) global_dependents = dependents.select { |c| !analysis.static_symbols.include?(c) } - global_resolved_by_parent static_dependents = dependents.select { |c| analysis.static_symbols.include?(c) } - static_resolved_by_parent # First, make sure we exclude all that have been visited before @resolved_static_by_base_filename[base_filename] ||= [] global_dependents.delete_if { |s| @resolved_global.include?(s) } static_dependents.delete_if { |s| @resolved_static_by_base_filename[base_filename].include?(s) } # Second, make sure we never visit any of the dependents again global_dependents.each { |s| @resolved_global << s } static_dependents.each { |s| @resolved_static_by_base_filename[base_filename] << s } # Third, actually traverse into the remaining, non-visited, dependents global_dependents.each do |symbol| deep_resolve( symbol, depth: depth + 1, trail: trail + [method_name], global_resolved_by_parent: global_resolved_by_parent + global_dependents ) end static_dependents.each do |symbol| deep_resolve( symbol, depth: depth + 1, trail: trail + [method_name], global_resolved_by_parent: global_resolved_by_parent + global_dependents, static_resolved_by_parent: static_resolved_by_parent + static_dependents, static_base_filename: base_filename ) end end def special_include_file?(filename) filename[/\/(reg(c|e)_[\w_]+|guc-file|qsort_tuple|repl_scanner|levenshtein|bootscanner|like_match)\.c$/] || filename[/\/[\w_]+_impl.h$/] end def write_out all_thread_local_variables = [] @symbols_to_output.each do |filename, symbols| file_thread_local_variables = [] dead_positions = (@file_to_method_and_pos[filename] || {}).dup symbols.each do |symbol| next if @mock.key?(symbol) next if @external_variables.include?(symbol) alive_pos = dead_positions[symbol] # In some cases there are other symbols at the same location (macros), so delete by position instead of name dead_positions.delete_if { |_,pos| pos == alive_pos } end full_code = File.read(filename) str = "/*--------------------------------------------------------------------\n" str += " * Symbols referenced in this file:\n" symbols.each do |symbol| str += format(" * - %s\n", symbol) end str += " *--------------------------------------------------------------------\n" str += " */\n\n" next_start_pos = 0 dead_positions.each do |symbol, pos| fail format("Position overrun for %s in %s, next_start_pos (%d) > file length (%d)", symbol, filename, next_start_pos, full_code.size) if next_start_pos > full_code.size fail format("Position overrun for %s in %s, dead position pos[0]-1 (%d) > file length (%d)", symbol, filename, pos[0]-1, full_code.size) if pos[0]-1 > full_code.size str += full_code[next_start_pos...(pos[0]-1)] skipped_code = full_code[(pos[0]-1)...pos[1]] if @mock.key?(symbol) str += "\n" + @mock[symbol] + "\n" elsif @external_variables.include?(symbol) && symbols.include?(symbol) file_thread_local_variables << symbol if skipped_code.include?('static') str += "\n" + skipped_code.strip.gsub('static', 'static __thread') + "\n" else str += "\n__thread " + skipped_code.strip + "\n" end else # In the off chance that part of a macro is before a symbol (e.g. ifdef), # but the closing part is inside (e.g. endif) we need to output all macros inside skipped parts str += "\n" + skipped_code.scan(/^(#\s*(?:include|define|undef|if|ifdef|ifndef|else|endif))((?:[^\n]*\\\s*\n)*)([^\n]*)$/m).map { |m| m.compact.join }.join("\n") end next_start_pos = pos[1] end str += full_code[next_start_pos..-1] # In some cases we also need to take care of definitions in the same file file_thread_local_variables.each do |variable| str.gsub!(/(PGDLLIMPORT|extern)\s+(const|volatile)?\s*(\w+)\s+(\*{0,2})#{variable}(\[\])?;/, "\\1 __thread \\2 \\3 \\4#{variable}\\5;") end all_thread_local_variables += file_thread_local_variables if special_include_file?(filename) out_name = File.basename(filename) else out_name = filename.gsub(%r{^#{@basepath}}, '').gsub('/', '_') end File.write(@out_path + out_name, str) end #return @include_files_to_output.each do |include_file| next if special_include_file?(include_file) if include_file.start_with?(@basepath + 'src/include') out_file = @out_path + include_file.gsub(%r{^#{@basepath}src/}, '') else out_file = @out_path + 'include/' + File.basename(include_file) end code = File.read(include_file) all_thread_local_variables.each do |variable| code.gsub!(/(PGDLLIMPORT|extern)\s+(const|volatile)?\s*(\w+)\s+(\*{0,2})#{variable}(\[\])?;/, "\\1 __thread \\2 \\3 \\4#{variable}\\5;") end FileUtils.mkdir_p File.dirname(out_file) File.write(out_file, code) end end end runner = Runner.new runner.run runner.blocklist('SearchSysCache') runner.blocklist('heap_open') runner.blocklist('relation_open') runner.blocklist('RelnameGetRelid') runner.blocklist('ProcessClientWriteInterrupt') runner.blocklist('typeStringToTypeName') runner.blocklist('LWLockAcquire') runner.blocklist('SPI_freeplan') runner.blocklist('get_ps_display') runner.blocklist('pq_beginmessage') # Mocks REQUIRED for basic operations (error handling, memory management) runner.mock('ProcessInterrupts', 'void ProcessInterrupts(void) {}') # Required by errfinish runner.mock('PqCommMethods', 'const PQcommMethods *PqCommMethods = NULL;') # Required by errfinish runner.mock('proc_exit', 'void proc_exit(int code) { printf("Terminating process due to FATAL error\n"); exit(1); }') # Required by errfinish (we use PG_TRY/PG_CATCH, so this should never be reached in practice) runner.mock('send_message_to_server_log', 'static void send_message_to_server_log(ErrorData *edata) {}') runner.mock('send_message_to_frontend', 'static void send_message_to_frontend(ErrorData *edata) {}') # Mocks REQUIRED for PL/pgSQL parsing runner.mock('format_type_be', 'char * format_type_be(Oid type_oid) { return pstrdup("-"); }') runner.mock('build_row_from_class', 'static PLpgSQL_row *build_row_from_class(Oid classOid) { return NULL; }') runner.mock('plpgsql_build_datatype', 'PLpgSQL_type * plpgsql_build_datatype(Oid typeOid, int32 typmod, Oid collation, TypeName *origtypname) { PLpgSQL_type *typ; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup("UNKNOWN"); typ->ttype = PLPGSQL_TTYPE_SCALAR; return typ; }') runner.mock('parse_datatype', 'static PLpgSQL_type * parse_datatype(const char *string, int location) { PLpgSQL_type *typ; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup(string); typ->ttype = strcmp(string, "RECORD") == 0 ? PLPGSQL_TTYPE_REC : PLPGSQL_TTYPE_SCALAR; return typ; }') runner.mock('get_collation_oid', 'Oid get_collation_oid(List *name, bool missing_ok) { return -1; }') runner.mock('plpgsql_parse_wordtype', 'PLpgSQL_type * plpgsql_parse_wordtype(char *ident) { return NULL; }') runner.mock('plpgsql_parse_wordrowtype', 'PLpgSQL_type * plpgsql_parse_wordrowtype(char *ident) { return NULL; }') runner.mock('plpgsql_parse_cwordtype', 'PLpgSQL_type * plpgsql_parse_cwordtype(List *idents) { return NULL; }') runner.mock('plpgsql_parse_cwordrowtype', 'PLpgSQL_type * plpgsql_parse_cwordrowtype(List *idents) { return NULL; }') runner.mock('function_parse_error_transpose', 'bool function_parse_error_transpose(const char *prosrc) { return false; }') runner.mock('free_expr', "static void free_expr(PLpgSQL_expr *expr) {}") # This would free a cached plan, which does not apply to us runner.mock('make_return_stmt', %( static PLpgSQL_stmt * make_return_stmt(int location) { PLpgSQL_stmt_return *new; Assert(plpgsql_curr_compile->fn_rettype == VOIDOID); new = palloc0(sizeof(PLpgSQL_stmt_return)); new->cmd_type = PLPGSQL_STMT_RETURN; new->lineno = plpgsql_location_to_lineno(location); new->expr = NULL; new->retvarno = -1; int tok = yylex(); if (tok != ';') { plpgsql_push_back_token(tok); new->expr = read_sql_expression(';', ";"); } return (PLpgSQL_stmt *) new; } )) # We're always working with fn_rettype = VOIDOID, due to our use of plpgsql_compile_inline ## --- # SQL Parsing runner.deep_resolve('raw_parser') # PL/pgSQL Parsing runner.deep_resolve('plpgsql_compile_inline') runner.deep_resolve('plpgsql_free_function_memory') # Basic Postgres needed to call parser runner.deep_resolve('SetDatabaseEncoding') # Memory management needed to call parser runner.deep_resolve('MemoryContextInit') runner.deep_resolve('AllocSetContextCreate') runner.deep_resolve('MemoryContextSwitchTo') runner.deep_resolve('CurrentMemoryContext') runner.deep_resolve('MemoryContextDelete') runner.deep_resolve('AllocSetDeleteFreeList') runner.deep_resolve('palloc0') # Error handling needed to call parser runner.deep_resolve('CopyErrorData') runner.deep_resolve('FlushErrorState') # Needed for output funcs runner.deep_resolve('bms_first_member') runner.deep_resolve('bms_free') runner.deep_resolve('bms_next_member') runner.deep_resolve('bms_num_members') runner.deep_resolve('makeBitString') # Needed for deparse runner.deep_resolve('pg_toupper') # Needed for normalize runner.deep_resolve('pg_qsort') runner.deep_resolve('raw_expression_tree_walker') # Needed to work with simplehash (in fingerprinting logic) runner.deep_resolve('hash_bytes') runner.deep_resolve('MemoryContextAllocExtended') # Other required functions runner.deep_resolve('pg_printf') runner.write_out #puts runner.unresolved.inspect # Debugging: # clang -Xclang -ast-dump -fsyntax-only -I src/include/ src/backend/utils/init/globals.c libpg_query-13-2.1.0/scripts/generate_fingerprint_outfuncs.rb000077500000000000000000000300431413137616400244310ustar00rootroot00000000000000#!/usr/bin/env ruby # rubocop:disable Metrics/AbcSize, Metrics/LineLength, Metrics/MethodLength, Style/WordArray, Metrics/ClassLength, Style/Documentation, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Style/MutableConstant, Style/TrailingCommaInLiteral require 'bundler' require 'json' class Generator def initialize @nodetypes = JSON.parse(File.read('./srcdata/nodetypes.json')) @struct_defs = JSON.parse(File.read('./srcdata/struct_defs.json')) @enum_defs = JSON.parse(File.read('./srcdata/enum_defs.json')) @typedefs = JSON.parse(File.read('./srcdata/typedefs.json')) @all_known_enums = JSON.parse(File.read('./srcdata/all_known_enums.json')) end FINGERPRINT_RES_TARGET_NAME = <<-EOL if (node->name != NULL && (field_name == NULL || parent == NULL || !IsA(parent, SelectStmt) || strcmp(field_name, "targetList") != 0)) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } EOL FINGERPRINT_RANGE_VAR_RELNAME = <<-EOL if (node->relname != NULL && node->relpersistence != 't') { int len = strlen(node->relname); char *r = palloc0((len + 1) * sizeof(char)); char *p = r; for (int i = 0; i < len; i++) { if (node->relname[i] >= '0' && node->relname[i] <= '9' && ((i + 1 < len && node->relname[i + 1] >= '0' && node->relname[i + 1] <= '9') || (i > 0 && node->relname[i - 1] >= '0' && node->relname[i - 1] <= '9'))) { // Skip } else { *p = node->relname[i]; p++; } } *p = 0; _fingerprintString(ctx, "relname"); _fingerprintString(ctx, r); pfree(r); } EOL FINGERPRINT_A_EXPR_KIND = <<-EOL if (true) { _fingerprintString(ctx, "kind"); if (node->kind == AEXPR_OP_ANY || node->kind == AEXPR_IN) _fingerprintString(ctx, "AEXPR_OP"); else _fingerprintString(ctx, _enumToStringA_Expr_Kind(node->kind)); } EOL FINGERPRINT_NODE = <<-EOL if (true) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "%s"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, &node->%s, node, "%s", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } EOL FINGERPRINT_NODE_PTR = <<-EOL if (node->%s != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "%s"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->%s, node, "%s", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } EOL FINGERPRINT_SPECIFIC_NODE_PTR = <<-EOL if (node->%s != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "%s"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprint%s(ctx, node->%s, node, "%s", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } EOL FINGERPRINT_LIST = <<-EOL if (node->%s != NULL && node->%s->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "%s"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->%s, node, "%s", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } EOL FINGERPRINT_INT = <<-EOL if (node->%s != 0) { char buffer[50]; sprintf(buffer, "%%d", node->%s); _fingerprintString(ctx, "%s"); _fingerprintString(ctx, buffer); } EOL FINGERPRINT_LONG_INT = <<-EOL if (node->%s != 0) { char buffer[50]; sprintf(buffer, "%%ld", node->%s); _fingerprintString(ctx, "%s"); _fingerprintString(ctx, buffer); } EOL FINGERPRINT_FLOAT = <<-EOL if (node->%s != 0) { char buffer[50]; sprintf(buffer, "%%f", node->%s); _fingerprintString(ctx, "%s"); _fingerprintString(ctx, buffer); } EOL FINGERPRINT_CHAR = <<-EOL if (node->%s != 0) { char buffer[2] = {node->%s, '\\0'}; _fingerprintString(ctx, "%s"); _fingerprintString(ctx, buffer); } EOL FINGERPRINT_CHAR_PTR = <<-EOL if (node->%s != NULL) { _fingerprintString(ctx, "%s"); _fingerprintString(ctx, node->%s); } EOL FINGERPRINT_STRING = <<-EOL if (strlen(node->%s) > 0) { _fingerprintString(ctx, "%s"); _fingerprintString(ctx, node->%s); } EOL FINGERPRINT_BOOL = <<-EOL if (node->%s) { _fingerprintString(ctx, "%s"); _fingerprintString(ctx, "true"); } EOL FINGERPRINT_INT_ARRAY = <<-EOL if (true) { int x; Bitmapset *bms = bms_copy(node->%s); _fingerprintString(ctx, "%s"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } EOL FINGERPRINT_ENUM = <<-EOL if (true) { _fingerprintString(ctx, "%s"); _fingerprintString(ctx, _enumToString%s(node->%s)); } EOL # Fingerprinting additional code to be inserted FINGERPRINT_SKIP_NODES = [ 'A_Const', 'Alias', 'ParamRef', 'SetToDefault', 'IntList', 'OidList', 'Null', ] FINGERPRINT_OVERRIDE_FIELDS = { [nil, 'location'] => :skip, ['ResTarget', 'name'] => FINGERPRINT_RES_TARGET_NAME, ['RangeVar', 'relname'] => FINGERPRINT_RANGE_VAR_RELNAME, ['A_Expr', 'kind'] => FINGERPRINT_A_EXPR_KIND, ['PrepareStmt', 'name'] => :skip, ['ExecuteStmt', 'name'] => :skip, ['DeallocateStmt', 'name'] => :skip, ['TransactionStmt', 'options'] => :skip, ['TransactionStmt', 'gid'] => :skip, ['TransactionStmt', 'savepoint_name'] => :skip, ['DeclareCursorStmt', 'portalname'] => :skip, ['FetchStmt', 'portalname'] => :skip, ['ClosePortalStmt', 'portalname'] => :skip, ['RawStmt', 'stmt_len'] => :skip, ['RawStmt', 'stmt_location'] => :skip, } INT_TYPES = ['bits32', 'uint32', 'int', 'int32', 'uint16', 'int16', 'Oid', 'Index', 'AclMode', 'AttrNumber', 'SubTransactionId'] LONG_INT_TYPES = ['long', 'uint64'] INT_ARRAY_TYPES = ['Bitmapset*', 'Bitmapset', 'Relids'] FLOAT_TYPES = ['Cost', 'double'] IGNORE_FOR_GENERATOR = ['Integer', 'Float', 'String', 'BitString', 'List'] def generate_fingerprint_defs! @fingerprint_defs = {} ['nodes/parsenodes', 'nodes/primnodes'].each do |group| @struct_defs[group].each do |type, struct_def| next if struct_def['fields'].nil? next if IGNORE_FOR_GENERATOR.include?(type) if FINGERPRINT_SKIP_NODES.include?(type) fingerprint_def = " // Intentionally ignoring all fields for fingerprinting\n" else fingerprint_def = '' struct_def['fields'].reject { |f| f['name'].nil? }.sort_by { |f| f['name'] }.each do |field| name = field['name'] field_type = field['c_type'] fp_override = FINGERPRINT_OVERRIDE_FIELDS[[type, field['name']]] || FINGERPRINT_OVERRIDE_FIELDS[[nil, field['name']]] if fp_override if fp_override == :skip fp_override = format(" // Intentionally ignoring node->%s for fingerprinting\n\n", name) end fingerprint_def += fp_override next end case field_type # when '[][]Node' # fingerprint_def += format(FINGERPRINT_NODE_ARRAY_ARRAY, name: name) # when '[]Node' # fingerprint_def += format(FINGERPRINT_NODE_ARRAY, name: name) when 'Node' fingerprint_def += format(FINGERPRINT_NODE, name: name) when 'Node*', 'Expr*' fingerprint_def += format(FINGERPRINT_NODE_PTR, name: name) when 'List*' fingerprint_def += format(FINGERPRINT_LIST, name: name) when 'CreateStmt' fingerprint_def += format(" _fingerprintString(ctx, \"%s\");\n", name) fingerprint_def += format(" _fingerprintCreateStmt(ctx, (const CreateStmt*) &node->%s, node, \"%s\", depth);\n", name, name) when 'char' fingerprint_def += format(FINGERPRINT_CHAR, name: name) when 'char*' fingerprint_def += format(FINGERPRINT_CHAR_PTR, name: name) when 'string' fingerprint_def += format(FINGERPRINT_STRING, name: name) when 'bool' fingerprint_def += format(FINGERPRINT_BOOL, name: name) when 'Datum', 'void*', 'Expr', 'NodeTag' # Ignore when *INT_TYPES fingerprint_def += format(FINGERPRINT_INT, name: name) when *LONG_INT_TYPES fingerprint_def += format(FINGERPRINT_LONG_INT, name: name) when *INT_ARRAY_TYPES fingerprint_def += format(FINGERPRINT_INT_ARRAY, name: name) when *FLOAT_TYPES fingerprint_def += format(FINGERPRINT_FLOAT, name: name) else if field_type.end_with?('*') && @nodetypes.include?(field_type[0..-2]) typename = field_type[0..-2] typename = 'Node' if typename == 'Value' fingerprint_def += format(FINGERPRINT_SPECIFIC_NODE_PTR, name: name, typename: typename) elsif @all_known_enums.include?(field_type) fingerprint_def += format(FINGERPRINT_ENUM, name: name, typename: field_type) else # This shouldn't happen - if it does the above is missing something :-) puts type puts name puts field_type raise type end end end end @fingerprint_defs[type] = fingerprint_def end end end def generate! generate_fingerprint_defs! defs = '' conds = '' @nodetypes.each do |type| fingerprint_def = @fingerprint_defs[type] next unless fingerprint_def defs += format("static void _fingerprint%s(FingerprintContext *ctx, const %s *node, const void *parent, const char *field_name, unsigned int depth);\n", type, type) end defs += "\n\n" @nodetypes.each do |type| # next if IGNORE_LIST.include?(type) fingerprint_def = @fingerprint_defs[type] next unless fingerprint_def defs += "static void\n" defs += format("_fingerprint%s(FingerprintContext *ctx, const %s *node, const void *parent, const char *field_name, unsigned int depth)\n", type, type) defs += "{\n" defs += fingerprint_def defs += "}\n" defs += "\n" conds += format("case T_%s:\n", type) if FINGERPRINT_SKIP_NODES.include?(type) conds += format(" // Intentionally ignoring for fingerprinting\n") else conds += format(" if (!IsA(castNode(TypeCast, (void*) obj)->arg, A_Const) && !IsA(castNode(TypeCast, (void*) obj)->arg, ParamRef))\n {\n") if type == 'TypeCast' conds += format(" _fingerprintString(ctx, \"%s\");\n", type) conds += format(" _fingerprint%s(ctx, obj, parent, field_name, depth);\n", type) conds += " }\n" if type == 'TypeCast' end conds += " break;\n" end File.write('./src/pg_query_fingerprint_defs.c', defs) File.write('./src/pg_query_fingerprint_conds.c', conds) end end Generator.new.generate! libpg_query-13-2.1.0/scripts/generate_fingerprint_tests.rb000077500000000000000000000011021413137616400237170ustar00rootroot00000000000000#!/usr/bin/env ruby require 'bundler' require 'json' class Generator def initialize @fingerprint_tests = JSON.parse(File.read('./testdata/fingerprint.json')) end def generate! test_lines = [] @fingerprint_tests.each do |test_def| test_lines << test_def['input'] test_lines << test_def['expectedHash'] end File.write './test/fingerprint_tests.c', <<-EOF const char* tests[] = { #{test_lines.map { |test_line| format(' %s,', test_line.inspect) }.join("\n")} }; size_t testsLength = __LINE__ - 4; EOF end end Generator.new.generate! libpg_query-13-2.1.0/scripts/generate_protobuf_and_funcs.rb000077500000000000000000000443171413137616400240450ustar00rootroot00000000000000#!/usr/bin/env ruby # rubocop:disable Metrics/MethodLength, Style/WordArray, Metrics/LineLength, Style/Documentation, Style/PerlBackrefs, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity require 'bundler' require 'json' class Generator def initialize @nodetypes = JSON.parse(File.read('./srcdata/nodetypes.json')) @struct_defs = JSON.parse(File.read('./srcdata/struct_defs.json')) @enum_defs = JSON.parse(File.read('./srcdata/enum_defs.json')) @typedefs = JSON.parse(File.read('./srcdata/typedefs.json')) end def underscore(camel_cased_word) return camel_cased_word unless /[A-Z-]|::/.match?(camel_cased_word) word = camel_cased_word.to_s.gsub("::", "/") word.gsub!(/^([A-Z\d])([A-Z][a-z])/, '\1__\2') word.gsub!(/([A-Z\d]+[a-z]+)([A-Z][a-z])/, '\1_\2') word.gsub!(/([a-z\d])([A-Z])/, '\1_\2') word.tr!("-", "_") word.downcase! word end TYPE_OVERRIDES = { ['Query', 'queryId'] => :skip, # we intentionally do not print the queryId field } OUTNAME_OVERRIDES = { ['CreateForeignTableStmt', 'base'] => 'base_stmt', } def generate_outmethods! @outmethods = {} @readmethods = {} @protobuf_messages = {} @protobuf_enums = {} @scan_protobuf_tokens = [] @enum_to_strings = {} @enum_to_ints = {} @int_to_enums = {} ['nodes/parsenodes', 'nodes/primnodes'].each do |group| @struct_defs[group].each do |node_type, struct_def| @outmethods[node_type] = '' @readmethods[node_type] = '' @protobuf_messages[node_type] = '' protobuf_field_count = 1 struct_def['fields'].each do |field_def| name = field_def['name'] orig_type = field_def['c_type'] # TODO: Add comments to protobuf definitions next unless name && orig_type type = TYPE_OVERRIDES[[node_type, name]] || orig_type outname = OUTNAME_OVERRIDES[[node_type, name]] || underscore(name) outname_json = name if type == :skip # Ignore elsif type == 'NodeTag' # Nothing elsif ['char'].include?(type) @outmethods[node_type] += format(" WRITE_CHAR_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_CHAR_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" string %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['bool'].include?(type) @outmethods[node_type] += format(" WRITE_BOOL_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_BOOL_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" bool %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['long'].include?(type) @outmethods[node_type] += format(" WRITE_LONG_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_LONG_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" int64 %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['int', 'int16', 'int32', 'AttrNumber'].include?(type) @outmethods[node_type] += format(" WRITE_INT_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_INT_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" int32 %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['uint', 'uint16', 'uint32', 'Index', 'bits32', 'Oid', 'AclMode', 'SubTransactionId'].include?(type) @outmethods[node_type] += format(" WRITE_UINT_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_UINT_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" uint32 %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif type == 'char*' @outmethods[node_type] += format(" WRITE_STRING_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_STRING_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" string %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['float', 'double', 'Cost', 'Selectivity'].include?(type) @outmethods[node_type] += format(" WRITE_FLOAT_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_FLOAT_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" double %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['Bitmapset*', 'Relids'].include?(type) @outmethods[node_type] += format(" WRITE_BITMAPSET_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_BITMAPSET_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" repeated uint64 %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['Value'].include?(type) @outmethods[node_type] += format(" WRITE_NODE_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_VALUE_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" Node %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['Value*'].include?(type) @outmethods[node_type] += format(" WRITE_NODE_PTR_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_VALUE_PTR_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" Node %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['List*'].include?(type) @outmethods[node_type] += format(" WRITE_LIST_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_LIST_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" repeated Node %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['Node*'].include?(type) @outmethods[node_type] += format(" WRITE_NODE_PTR_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_NODE_PTR_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" Node %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['Expr*'].include?(type) @outmethods[node_type] += format(" WRITE_NODE_PTR_FIELD(%s, %s, %s);\n", outname, outname_json, name) @readmethods[node_type] += format(" READ_EXPR_PTR_FIELD(%s, %s, %s);\n", outname, outname_json, name) @protobuf_messages[node_type] += format(" Node %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['Expr'].include?(type) # FIXME @protobuf_messages[node_type] += format(" Node %s = %d [json_name=\"%s\"];\n", outname, protobuf_field_count, name) protobuf_field_count += 1 elsif ['CreateStmt'].include?(type) @outmethods[node_type] += format(" WRITE_SPECIFIC_NODE_FIELD(%s, %s, %s, %s, %s);\n", type.gsub('*', ''), underscore(type.gsub('*', '')).downcase, outname, outname_json, name) @readmethods[node_type] += format(" READ_SPECIFIC_NODE_FIELD(%s, %s, %s, %s, %s);\n", type.gsub('*', ''), underscore(type.gsub('*', '')).downcase, outname, outname_json, name) @protobuf_messages[node_type] += format(" %s %s = %d [json_name=\"%s\"];\n", type.gsub('*', ''), outname, protobuf_field_count, name) protobuf_field_count += 1 elsif @nodetypes.include?(type[0..-2]) @outmethods[node_type] += format(" WRITE_SPECIFIC_NODE_PTR_FIELD(%s, %s, %s, %s, %s);\n", type.gsub('*', ''), underscore(type.gsub('*', '')).downcase, outname, outname_json, name) @readmethods[node_type] += format(" READ_SPECIFIC_NODE_PTR_FIELD(%s, %s, %s, %s, %s);\n", type.gsub('*', ''), underscore(type.gsub('*', '')).downcase, outname, outname_json, name) @protobuf_messages[node_type] += format(" %s %s = %d [json_name=\"%s\"];\n", type.gsub('*', ''), outname, protobuf_field_count, name) protobuf_field_count += 1 elsif type.end_with?('*') puts format('ERR: %s %s', name, type) else # Enum @outmethods[node_type] += format(" WRITE_ENUM_FIELD(%s, %s, %s, %s);\n", type, outname, outname_json, name) @readmethods[node_type] += format(" READ_ENUM_FIELD(%s, %s, %s, %s);\n", type, outname, outname_json, name) @protobuf_messages[node_type] += format(" %s %s = %d [json_name=\"%s\"];\n", type, outname, protobuf_field_count, name) protobuf_field_count += 1 end end end end ['nodes/parsenodes', 'nodes/primnodes', 'nodes/nodes', 'nodes/lockoptions'].each do |group| @enum_defs[group].each do |enum_type, enum_def| next if enum_type == 'NodeTag' @protobuf_enums[enum_type] = format("enum %s\n{\n", enum_type) @enum_to_strings[enum_type] = format("static const char*\n_enumToString%s(%s value) {\n switch(value) {\n", enum_type, enum_type) @enum_to_ints[enum_type] = format("static int\n_enumToInt%s(%s value) {\n switch(value) {\n", enum_type, enum_type) @int_to_enums[enum_type] = format("static %s\n_intToEnum%s(int value) {\n switch(value) {\n", enum_type, enum_type) # We intentionally add a dummy field for the zero value, that actually is not used in practice # - this ensures that the JSON output always includes the enum value (and doesn't skip it because its the zero value) @protobuf_enums[enum_type] += format(" %s_UNDEFINED = 0;\n", underscore(enum_type).upcase) protobuf_field = 1 enum_def['values'].each do |value| next unless value['name'] @protobuf_enums[enum_type] += format(" %s = %d;\n", value['name'], protobuf_field) @enum_to_strings[enum_type] += format(" case %s: return \"%s\";\n", value['name'], value['name']) @enum_to_ints[enum_type] += format(" case %s: return %d;\n", value['name'], protobuf_field) @int_to_enums[enum_type] += format(" case %d: return %s;\n", protobuf_field, value['name']) protobuf_field += 1 end @protobuf_enums[enum_type] += "}" @enum_to_strings[enum_type] += " }\n Assert(false);\n return NULL;\n}" @enum_to_ints[enum_type] += " }\n Assert(false);\n return -1;\n}" @int_to_enums[enum_type] += format(" }\n Assert(false);\n return %s;\n}", enum_def['values'].map { |v| v['name'] }.compact.first) end end scan_values = @enum_defs['../backend/parser/gram']['yytokentype']['values'] scan_values.each do |value| next unless value['name'] @scan_protobuf_tokens << format('%s = %d;', value['name'], value['value']) end @typedefs.each do |typedef| next unless @outmethods[typedef['source_type']] @outmethods[typedef['new_type_name']] = @outmethods[typedef['source_type']] @readmethods[typedef['new_type_name']] = @readmethods[typedef['source_type']] @protobuf_messages[typedef['new_type_name']] = @protobuf_messages[typedef['source_type']] end end IGNORE_LIST = [ 'Value', # Special case 'Const', # Only needed in post-parse analysis (and it introduces Datums, which we can't output) ] EXPLICT_TAG_SETS = [ # These nodes need an explicit NodeSetTag during read funcs because they are a superset of another node 'CreateForeignTableStmt', ] def generate! generate_outmethods! out_defs = '' out_impls = '' out_conds = "case T_Integer: OUT_NODE(Integer, Integer, integer, INTEGER, Value, integer); break; case T_Float: OUT_NODE(Float, Float, float, FLOAT, Value, float_); break; case T_String: OUT_NODE(String, String, string, STRING, Value, string); break; case T_BitString: OUT_NODE(BitString, BitString, bit_string, BIT_STRING, Value, bit_string); break; case T_Null: OUT_NODE(Null, Null, null, NULL, Value, null); break; case T_List: OUT_NODE(List, List, list, LIST, List, list); break; case T_IntList: OUT_NODE(IntList, IntList, int_list, INT_LIST, List, int_list); break; case T_OidList: OUT_NODE(OidList, OidList, oid_list, OID_LIST, List, oid_list); break; " read_defs = '' read_impls = '' read_conds = '' protobuf_messages = '' protobuf_nodes = [] @nodetypes.each do |type| next if IGNORE_LIST.include?(type) outmethod = @outmethods[type] readmethod = @readmethods[type] next unless outmethod && readmethod c_type = type.gsub(/_/, '') out_defs += format("static void _out%s(OUT_TYPE(%s, %s) out_node, const %s *node);\n", c_type, type, c_type, type) out_impls += "static void\n" out_impls += format("_out%s(OUT_TYPE(%s, %s) out, const %s *node)\n", c_type, type, c_type, type) out_impls += "{\n" out_impls += outmethod out_impls += "}\n" out_impls += "\n" out_conds += format("case T_%s:\n", type) out_conds += format(" OUT_NODE(%s, %s, %s, %s, %s, %s);\n", type, c_type, underscore(c_type), underscore(c_type).upcase.gsub('__', '_'), type, underscore(type)) out_conds += " break;\n" read_defs += format("static %s * _read%s(OUT_TYPE(%s, %s) msg);\n", type, c_type, type, c_type) read_impls += format("static %s *\n", type) read_impls += format("_read%s(OUT_TYPE(%s, %s) msg)\n", c_type, type, c_type) read_impls += "{\n" read_impls += format(" %s *node = makeNode(%s);\n", type, type) read_impls += readmethod read_impls += format(" NodeSetTag(node, T_%s);\n", type) if EXPLICT_TAG_SETS.include?(type) read_impls += " return node;\n" read_impls += "}\n" read_impls += "\n" read_conds += format(" READ_COND(%s, %s, %s, %s, %s, %s);\n", type, c_type, underscore(c_type), underscore(c_type).upcase.gsub('__', '_'), type, underscore(type)) protobuf_messages += format("message %s\n{\n", type) protobuf_messages += @protobuf_messages[type] || '' protobuf_messages += "}\n\n" protobuf_nodes << format("%s %s = %d [json_name=\"%s\"];", type, underscore(type), protobuf_nodes.size + 1, type) end ['Integer', 'Float', 'String', 'BitString', 'Null', 'List', 'IntList', 'OidList'].each do |type| protobuf_nodes << format("%s %s = %d [json_name=\"%s\"];", type, underscore(type), protobuf_nodes.size + 1, type) end protobuf_messages += @protobuf_enums.values.join("\n\n") File.write('./src/pg_query_enum_defs.c', "// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb\n\n" + @enum_to_strings.values.join("\n\n") + @enum_to_ints.values.join("\n\n") + @int_to_enums.values.join("\n\n")) File.write('./src/pg_query_outfuncs_defs.c', "// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb\n\n" + out_defs + "\n\n" + out_impls) File.write('./src/pg_query_outfuncs_conds.c', "// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb\n\n" + out_conds) File.write('./src/pg_query_readfuncs_defs.c', "// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb\n\n" + read_defs + "\n\n" + read_impls) File.write('./src/pg_query_readfuncs_conds.c', "// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb\n\n" + read_conds) protobuf = "// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb syntax = \"proto3\"; package pg_query; message ParseResult { int32 version = 1; repeated RawStmt stmts = 2; } message ScanResult { int32 version = 1; repeated ScanToken tokens = 2; } message Node { oneof node { #{protobuf_nodes.join("\n ")} } } message Integer { int32 ival = 1; /* machine integer */ } message Float { string str = 1; /* string */ } message String { string str = 1; /* string */ } message BitString { string str = 1; /* string */ } message Null { // intentionally empty } message List { repeated Node items = 1; } message OidList { repeated Node items = 1; } message IntList { repeated Node items = 1; } #{protobuf_messages} message ScanToken { int32 start = 1; int32 end = 2; Token token = 4; KeywordKind keyword_kind = 5; } enum KeywordKind { NO_KEYWORD = 0; UNRESERVED_KEYWORD = 1; COL_NAME_KEYWORD = 2; TYPE_FUNC_NAME_KEYWORD = 3; RESERVED_KEYWORD = 4; } enum Token { NUL = 0; // Single-character tokens that are returned 1:1 (identical with \"self\" list in scan.l) // Either supporting syntax, or single-character operators (some can be both) // Also see https://www.postgresql.org/docs/12/sql-syntax-lexical.html#SQL-SYNTAX-SPECIAL-CHARS ASCII_37 = 37; // \"%\" ASCII_40 = 40; // \"\(\" ASCII_41 = 41; // \")\" ASCII_42 = 42; // \"*\" ASCII_43 = 43; // \"+\" ASCII_44 = 44; // \",\" ASCII_45 = 45; // \"-\" ASCII_46 = 46; // \".\" ASCII_47 = 47; // \"/\" ASCII_58 = 58; // \":\" ASCII_59 = 59; // \";\" ASCII_60 = 60; // \"<\" ASCII_61 = 61; // \"=\" ASCII_62 = 62; // \">\" ASCII_63 = 63; // \"?\" ASCII_91 = 91; // \"[\" ASCII_92 = 92; // \"\\\" ASCII_93 = 93; // \"]\" ASCII_94 = 94; // \"^\" // Named tokens in scan.l #{@scan_protobuf_tokens.join("\n ")} } " File.write('./protobuf/pg_query.proto', protobuf) end end Generator.new.generate! libpg_query-13-2.1.0/src/000077500000000000000000000000001413137616400150525ustar00rootroot00000000000000libpg_query-13-2.1.0/src/pg_query.c000066400000000000000000000042461413137616400170570ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_internal.h" #include #include #include #include #include const char* progname = "pg_query"; __thread sig_atomic_t pg_query_initialized = 0; static pthread_key_t pg_query_thread_exit_key; static void pg_query_thread_exit(void *key); void pg_query_init(void) { if (pg_query_initialized != 0) return; pg_query_initialized = 1; MemoryContextInit(); SetDatabaseEncoding(PG_UTF8); pthread_key_create(&pg_query_thread_exit_key, pg_query_thread_exit); pthread_setspecific(pg_query_thread_exit_key, TopMemoryContext); } void pg_query_free_top_memory_context(MemoryContext context) { AssertArg(MemoryContextIsValid(context)); /* * After this, no memory contexts are valid anymore, so ensure that * the current context is the top-level context. */ Assert(TopMemoryContext == CurrentMemoryContext); MemoryContextDeleteChildren(context); /* Clean up the aset.c freelist, to leave no unused context behind */ AllocSetDeleteFreeList(context); context->methods->delete_context(context); VALGRIND_DESTROY_MEMPOOL(context); /* Without this, Valgrind will complain */ free(context); /* Reset pointers */ TopMemoryContext = NULL; CurrentMemoryContext = NULL; ErrorContext = NULL; } static void pg_query_thread_exit(void *key) { MemoryContext context = (MemoryContext) key; pg_query_free_top_memory_context(context); } void pg_query_exit(void) { pg_query_free_top_memory_context(TopMemoryContext); } MemoryContext pg_query_enter_memory_context() { MemoryContext ctx = NULL; pg_query_init(); Assert(CurrentMemoryContext == TopMemoryContext); ctx = AllocSetContextCreate(TopMemoryContext, "pg_query", ALLOCSET_DEFAULT_SIZES); MemoryContextSwitchTo(ctx); return ctx; } void pg_query_exit_memory_context(MemoryContext ctx) { // Return to previous PostgreSQL memory context MemoryContextSwitchTo(TopMemoryContext); MemoryContextDelete(ctx); ctx = NULL; } void pg_query_free_error(PgQueryError *error) { free(error->message); free(error->funcname); free(error->filename); if (error->context) { free(error->context); } free(error); } libpg_query-13-2.1.0/src/pg_query_deparse.c000066400000000000000000010475331413137616400205710ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_internal.h" #include "pg_query_readfuncs.h" #include "catalog/index.h" #include "catalog/pg_am.h" #include "catalog/pg_attribute.h" #include "catalog/pg_class.h" #include "catalog/pg_trigger.h" #include "commands/trigger.h" #include "common/keywords.h" #include "common/kwlookup.h" #include "lib/stringinfo.h" #include "limits.h" #include "nodes/nodes.h" #include "nodes/parsenodes.h" #include "nodes/pg_list.h" #include "utils/builtins.h" #include "utils/datetime.h" #include "utils/timestamp.h" #include "utils/xml.h" typedef enum DeparseNodeContext { DEPARSE_NODE_CONTEXT_NONE, // Parent node type (and sometimes field) DEPARSE_NODE_CONTEXT_INSERT_RELATION, DEPARSE_NODE_CONTEXT_INSERT_ON_CONFLICT, DEPARSE_NODE_CONTEXT_UPDATE, DEPARSE_NODE_CONTEXT_RETURNING, DEPARSE_NODE_CONTEXT_A_EXPR, DEPARSE_NODE_CONTEXT_XMLATTRIBUTES, DEPARSE_NODE_CONTEXT_XMLNAMESPACES, DEPARSE_NODE_CONTEXT_CREATE_TYPE, DEPARSE_NODE_CONTEXT_ALTER_TYPE, // Identifier vs constant context DEPARSE_NODE_CONTEXT_IDENTIFIER, DEPARSE_NODE_CONTEXT_CONSTANT } DeparseNodeContext; static void removeTrailingSpace(StringInfo str) { if (str->len >= 1 && str->data[str->len - 1] == ' ') { str->len -= 1; str->data[str->len] = '\0'; } } /* * Append a SQL string literal representing "val" to buf. * * Copied here from postgres_fdw/deparse.c to avoid adding * many additional dependencies. */ static void deparseStringLiteral(StringInfo buf, const char *val) { const char *valptr; /* * Rather than making assumptions about the remote server's value of * standard_conforming_strings, always use E'foo' syntax if there are any * backslashes. This will fail on remote servers before 8.1, but those * are long out of support. */ if (strchr(val, '\\') != NULL) appendStringInfoChar(buf, ESCAPE_STRING_SYNTAX); appendStringInfoChar(buf, '\''); for (valptr = val; *valptr; valptr++) { char ch = *valptr; if (SQL_STR_DOUBLE(ch, true)) appendStringInfoChar(buf, ch); appendStringInfoChar(buf, ch); } appendStringInfoChar(buf, '\''); } // Check whether the value is a reserved keyword, to determine escaping for output // // Note that since the parser lowercases all keywords, this does *not* match when the // value is not all-lowercase and a reserved keyword. static bool isReservedKeyword(const char *val) { int kwnum = ScanKeywordLookup(val, &ScanKeywords); bool all_lower_case = true; const char *cp; for (cp = val; *cp; cp++) { if (!( (*cp >= 'a' && *cp <= 'z') || (*cp >= '0' && *cp <= '9') || (*cp == '_'))) { all_lower_case = false; break; } } return all_lower_case && kwnum >= 0 && ScanKeywordCategories[kwnum] == RESERVED_KEYWORD; } // Returns whether the given value consists only of operator characters static bool isOp(const char *val) { const char *cp; Assert(strlen(val) > 0); for (cp = val; *cp; cp++) { if (!( *cp == '~' || *cp == '!' || *cp == '@' || *cp == '#' || *cp == '^' || *cp == '&' || *cp == '|' || *cp == '`' || *cp == '?' || *cp == '+' || *cp == '-' || *cp == '*' || *cp == '/' || *cp == '%' || *cp == '<' || *cp == '>' || *cp == '=')) return false; } return true; } static void deparseSelectStmt(StringInfo str, SelectStmt *stmt); static void deparseIntoClause(StringInfo str, IntoClause *into_clause); static void deparseRangeVar(StringInfo str, RangeVar *range_var, DeparseNodeContext context); static void deparseResTarget(StringInfo str, ResTarget *res_target, DeparseNodeContext context); static void deparseRawStmt(StringInfo str, RawStmt *raw_stmt); static void deparseAlias(StringInfo str, Alias *alias); static void deparseWindowDef(StringInfo str, WindowDef* window_def); static void deparseColumnRef(StringInfo str, ColumnRef* column_ref); static void deparseSubLink(StringInfo str, SubLink* sub_link); static void deparseAExpr(StringInfo str, A_Expr* a_expr, DeparseNodeContext context); static void deparseBoolExpr(StringInfo str, BoolExpr *bool_expr); static void deparseAStar(StringInfo str, A_Star* a_star); static void deparseCollateClause(StringInfo str, CollateClause* collate_clause); static void deparseSortBy(StringInfo str, SortBy* sort_by); static void deparseParamRef(StringInfo str, ParamRef* param_ref); static void deparseSQLValueFunction(StringInfo str, SQLValueFunction* sql_value_function); static void deparseWithClause(StringInfo str, WithClause *with_clause); static void deparseJoinExpr(StringInfo str, JoinExpr *join_expr); static void deparseCommonTableExpr(StringInfo str, CommonTableExpr *cte); static void deparseRangeSubselect(StringInfo str, RangeSubselect *range_subselect); static void deparseRangeFunction(StringInfo str, RangeFunction *range_func); static void deparseAArrayExpr(StringInfo str, A_ArrayExpr * array_expr); static void deparseRowExpr(StringInfo str, RowExpr *row_expr); static void deparseTypeCast(StringInfo str, TypeCast *type_cast); static void deparseTypeName(StringInfo str, TypeName *type_name); static void deparseNullTest(StringInfo str, NullTest *null_test); static void deparseCaseExpr(StringInfo str, CaseExpr *case_expr); static void deparseCaseWhen(StringInfo str, CaseWhen *case_when); static void deparseAIndirection(StringInfo str, A_Indirection *a_indirection); static void deparseAIndices(StringInfo str, A_Indices *a_indices); static void deparseCoalesceExpr(StringInfo str, CoalesceExpr *coalesce_expr); static void deparseBooleanTest(StringInfo str, BooleanTest *boolean_test); static void deparseColumnDef(StringInfo str, ColumnDef *column_def); static void deparseInsertStmt(StringInfo str, InsertStmt *insert_stmt); static void deparseOnConflictClause(StringInfo str, OnConflictClause *on_conflict_clause); static void deparseIndexElem(StringInfo str, IndexElem* index_elem); static void deparseUpdateStmt(StringInfo str, UpdateStmt *update_stmt); static void deparseDeleteStmt(StringInfo str, DeleteStmt *delete_stmt); static void deparseLockingClause(StringInfo str, LockingClause *locking_clause); static void deparseSetToDefault(StringInfo str, SetToDefault *set_to_default); static void deparseCreateCastStmt(StringInfo str, CreateCastStmt *create_cast_stmt); static void deparseCreateDomainStmt(StringInfo str, CreateDomainStmt *create_domain_stmt); static void deparseFunctionParameter(StringInfo str, FunctionParameter *function_parameter); static void deparseRoleSpec(StringInfo str, RoleSpec *role_spec); static void deparseViewStmt(StringInfo str, ViewStmt *view_stmt); static void deparseVariableSetStmt(StringInfo str, VariableSetStmt* variable_set_stmt); static void deparseReplicaIdentityStmt(StringInfo str, ReplicaIdentityStmt *replica_identity_stmt); static void deparseRangeTableSample(StringInfo str, RangeTableSample *range_table_sample); static void deparseRangeTableFunc(StringInfo str, RangeTableFunc* range_table_func); static void deparseGroupingSet(StringInfo str, GroupingSet *grouping_set); static void deparseFuncCall(StringInfo str, FuncCall *func_call); static void deparseMinMaxExpr(StringInfo str, MinMaxExpr *min_max_expr); static void deparseXmlExpr(StringInfo str, XmlExpr* xml_expr); static void deparseXmlSerialize(StringInfo str, XmlSerialize *xml_serialize); static void deparseConstraint(StringInfo str, Constraint *constraint); static void deparseSchemaStmt(StringInfo str, Node *node); static void deparseExecuteStmt(StringInfo str, ExecuteStmt *execute_stmt); static void deparseTriggerTransition(StringInfo str, TriggerTransition *trigger_transition); static void deparseCreateOpClassItem(StringInfo str, CreateOpClassItem *create_op_class_item); static void deparseAConst(StringInfo str, A_Const *a_const); static void deparseCurrentOfExpr(StringInfo str, CurrentOfExpr *current_of_expr); static void deparseGroupingFunc(StringInfo str, GroupingFunc *grouping_func); static void deparsePreparableStmt(StringInfo str, Node *node); static void deparseRuleActionStmt(StringInfo str, Node *node); static void deparseExplainableStmt(StringInfo str, Node *node); static void deparseStmt(StringInfo str, Node *node); static void deparseValue(StringInfo str, Value *value, DeparseNodeContext context); // "any_name" in gram.y static void deparseAnyName(StringInfo str, List *parts) { ListCell *lc = NULL; foreach(lc, parts) { Assert(IsA(lfirst(lc), String)); appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); if (lnext(parts, lc)) appendStringInfoChar(str, '.'); } } static void deparseAnyNameSkipFirst(StringInfo str, List *parts) { ListCell *lc = NULL; for_each_from(lc, parts, 1) { Assert(IsA(lfirst(lc), String)); appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); if (lnext(parts, lc)) appendStringInfoChar(str, '.'); } } static void deparseAnyNameSkipLast(StringInfo str, List *parts) { ListCell *lc = NULL; foreach (lc, parts) { if (lnext(parts, lc)) { appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); if (foreach_current_index(lc) < list_length(parts) - 2) appendStringInfoChar(str, '.'); } } } // "a_expr" / "b_expr" in gram.y static void deparseExpr(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_FuncCall: deparseFuncCall(str, castNode(FuncCall, node)); break; case T_XmlExpr: deparseXmlExpr(str, castNode(XmlExpr, node)); break; case T_TypeCast: deparseTypeCast(str, castNode(TypeCast, node)); break; case T_A_Const: deparseAConst(str, castNode(A_Const, node)); break; case T_ColumnRef: deparseColumnRef(str, castNode(ColumnRef, node)); break; case T_A_Expr: deparseAExpr(str, castNode(A_Expr, node), DEPARSE_NODE_CONTEXT_NONE); break; case T_CaseExpr: deparseCaseExpr(str, castNode(CaseExpr, node)); break; case T_A_ArrayExpr: deparseAArrayExpr(str, castNode(A_ArrayExpr, node)); break; case T_NullTest: deparseNullTest(str, castNode(NullTest, node)); break; case T_XmlSerialize: deparseXmlSerialize(str, castNode(XmlSerialize, node)); break; case T_ParamRef: deparseParamRef(str, castNode(ParamRef, node)); break; case T_BoolExpr: deparseBoolExpr(str, castNode(BoolExpr, node)); break; case T_SubLink: deparseSubLink(str, castNode(SubLink, node)); break; case T_RowExpr: deparseRowExpr(str, castNode(RowExpr, node)); break; case T_CoalesceExpr: deparseCoalesceExpr(str, castNode(CoalesceExpr, node)); break; case T_SetToDefault: deparseSetToDefault(str, castNode(SetToDefault, node)); break; case T_A_Indirection: deparseAIndirection(str, castNode(A_Indirection, node)); break; case T_CollateClause: deparseCollateClause(str, castNode(CollateClause, node)); break; case T_CurrentOfExpr: deparseCurrentOfExpr(str, castNode(CurrentOfExpr, node)); break; case T_SQLValueFunction: deparseSQLValueFunction(str, castNode(SQLValueFunction, node)); break; case T_MinMaxExpr: deparseMinMaxExpr(str, castNode(MinMaxExpr, node)); break; case T_BooleanTest: deparseBooleanTest(str, castNode(BooleanTest, node)); break; case T_GroupingFunc: deparseGroupingFunc(str, castNode(GroupingFunc, node)); break; default: Assert(false); elog(ERROR, "unpermitted node type in a_expr/b_expr: %d", (int) nodeTag(node)); break; } } // "c_expr" in gram.y static void deparseCExpr(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_ColumnRef: deparseColumnRef(str, castNode(ColumnRef, node)); break; case T_A_Const: deparseAConst(str, castNode(A_Const, node)); break; case T_TypeCast: deparseTypeCast(str, castNode(TypeCast, node)); break; case T_A_Expr: appendStringInfoChar(str, '('); deparseAExpr(str, castNode(A_Expr, node), DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ')'); break; case T_ParamRef: deparseParamRef(str, castNode(ParamRef, node)); break; case T_A_Indirection: deparseAIndirection(str, castNode(A_Indirection, node)); break; case T_CaseExpr: deparseCaseExpr(str, castNode(CaseExpr, node)); break; case T_FuncCall: deparseFuncCall(str, castNode(FuncCall, node)); break; case T_SubLink: deparseSubLink(str, castNode(SubLink, node)); break; case T_A_ArrayExpr: deparseAArrayExpr(str, castNode(A_ArrayExpr, node)); break; case T_RowExpr: deparseRowExpr(str, castNode(RowExpr, node)); break; case T_GroupingFunc: deparseGroupingFunc(str, castNode(GroupingFunc, node)); break; default: Assert(false); elog(ERROR, "unpermitted node type in c_expr: %d", (int) nodeTag(node)); break; } } // "expr_list" in gram.y static void deparseExprList(StringInfo str, List *exprs) { ListCell *lc; foreach(lc, exprs) { deparseExpr(str, lfirst(lc)); if (lnext(exprs, lc)) appendStringInfoString(str, ", "); } } // "ColId", "name", "database_name", "access_method" and "index_name" in gram.y static void deparseColId(StringInfo str, char *s) { appendStringInfoString(str, quote_identifier(s)); } // "ColLabel", "attr_name" // // Note this is kept separate from ColId in case we ever want to be more // specific on how to handle keywords here static void deparseColLabel(StringInfo str, char *s) { appendStringInfoString(str, quote_identifier(s)); } // "SignedIconst" and "Iconst" in gram.y static void deparseSignedIconst(StringInfo str, Node *node) { appendStringInfo(str, "%d", intVal(node)); } // "indirection" and "opt_indirection" in gram.y static void deparseOptIndirection(StringInfo str, List *indirection, int N) { ListCell *lc = NULL; for_each_from(lc, indirection, N) { if (IsA(lfirst(lc), String)) { appendStringInfoChar(str, '.'); deparseColLabel(str, strVal(lfirst(lc))); } else if (IsA(lfirst(lc), A_Star)) { appendStringInfoString(str, ".*"); } else if (IsA(lfirst(lc), A_Indices)) { deparseAIndices(str, castNode(A_Indices, lfirst(lc))); } else { // No other nodes should appear here Assert(false); } } } // "role_list" in gram.y static void deparseRoleList(StringInfo str, List *roles) { ListCell *lc; foreach(lc, roles) { RoleSpec *role_spec = castNode(RoleSpec, lfirst(lc)); deparseRoleSpec(str, role_spec); if (lnext(roles, lc)) appendStringInfoString(str, ", "); } } // "SimpleTypename" in gram.y static void deparseSimpleTypename(StringInfo str, Node *node) { deparseTypeName(str, castNode(TypeName, node)); } // "NumericOnly" in gram.y static void deparseNumericOnly(StringInfo str, Value *value) { switch (nodeTag(value)) { case T_Integer: appendStringInfo(str, "%d", value->val.ival); break; case T_Float: appendStringInfoString(str, value->val.str); break; default: Assert(false); } } // "NumericOnly_list" in gram.y static void deparseNumericOnlyList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { deparseNumericOnly(str, (Value *) lfirst(lc)); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "SeqOptElem" in gram.y static void deparseSeqOptElem(StringInfo str, DefElem *def_elem) { ListCell *lc; if (strcmp(def_elem->defname, "as") == 0) { appendStringInfoString(str, "AS "); deparseSimpleTypename(str, def_elem->arg); } else if (strcmp(def_elem->defname, "cache") == 0) { appendStringInfoString(str, "CACHE "); deparseNumericOnly(str, (Value *) def_elem->arg); } else if (strcmp(def_elem->defname, "cycle") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "CYCLE"); } else if (strcmp(def_elem->defname, "cycle") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "NO CYCLE"); } else if (strcmp(def_elem->defname, "increment") == 0) { appendStringInfoString(str, "INCREMENT "); deparseNumericOnly(str, (Value *) def_elem->arg); } else if (strcmp(def_elem->defname, "maxvalue") == 0 && def_elem->arg != NULL) { appendStringInfoString(str, "MAXVALUE "); deparseNumericOnly(str, (Value *) def_elem->arg); } else if (strcmp(def_elem->defname, "maxvalue") == 0 && def_elem->arg == NULL) { appendStringInfoString(str, "NO MAXVALUE"); } else if (strcmp(def_elem->defname, "minvalue") == 0 && def_elem->arg != NULL) { appendStringInfoString(str, "MINVALUE "); deparseNumericOnly(str, (Value *) def_elem->arg); } else if (strcmp(def_elem->defname, "minvalue") == 0 && def_elem->arg == NULL) { appendStringInfoString(str, "NO MINVALUE"); } else if (strcmp(def_elem->defname, "owned_by") == 0) { appendStringInfoString(str, "OWNED BY "); deparseAnyName(str, castNode(List, def_elem->arg)); } else if (strcmp(def_elem->defname, "sequence_name") == 0) { appendStringInfoString(str, "SEQUENCE NAME "); deparseAnyName(str, castNode(List, def_elem->arg)); } else if (strcmp(def_elem->defname, "start") == 0) { appendStringInfoString(str, "START "); deparseNumericOnly(str, (Value *) def_elem->arg); } else if (strcmp(def_elem->defname, "restart") == 0 && def_elem->arg == NULL) { appendStringInfoString(str, "RESTART"); } else if (strcmp(def_elem->defname, "restart") == 0 && def_elem->arg != NULL) { appendStringInfoString(str, "RESTART "); deparseNumericOnly(str, (Value *) def_elem->arg); } else { Assert(false); } } // "SeqOptList" in gram.y static void deparseSeqOptList(StringInfo str, List *options) { ListCell *lc; Assert(list_length(options) > 0); foreach (lc, options) { deparseSeqOptElem(str, castNode(DefElem, lfirst(lc))); appendStringInfoChar(str, ' '); } } // "OptSeqOptList" in gram.y static void deparseOptSeqOptList(StringInfo str, List *options) { if (list_length(options) > 0) deparseSeqOptList(str, options); } // "OptParenthesizedSeqOptList" in gram.y static void deparseOptParenthesizedSeqOptList(StringInfo str, List *options) { if (list_length(options) > 0) { appendStringInfoChar(str, '('); deparseSeqOptList(str, options); appendStringInfoChar(str, ')'); } } // "opt_drop_behavior" in gram.y static void deparseOptDropBehavior(StringInfo str, DropBehavior behavior) { switch (behavior) { case DROP_RESTRICT: // Default break; case DROP_CASCADE: appendStringInfoString(str, "CASCADE "); break; } } // "any_operator" in gram.y static void deparseAnyOperator(StringInfo str, List *op) { Assert(isOp(strVal(llast(op)))); if (list_length(op) == 2) { appendStringInfoString(str, quote_identifier(strVal(linitial(op)))); appendStringInfoChar(str, '.'); appendStringInfoString(str, strVal(llast(op))); } else if (list_length(op) == 1) { appendStringInfoString(str, strVal(llast(op))); } else { Assert(false); } } // "qual_Op" and "qual_all_Op" in gram.y static void deparseQualOp(StringInfo str, List *op) { if (list_length(op) == 1 && isOp(strVal(linitial(op)))) { appendStringInfoString(str, strVal(linitial(op))); } else { appendStringInfoString(str, "OPERATOR("); deparseAnyOperator(str, op); appendStringInfoString(str, ")"); } } // "subquery_Op" in gram.y static void deparseSubqueryOp(StringInfo str, List *op) { if (list_length(op) == 1 && strcmp(strVal(linitial(op)), "~~") == 0) { appendStringInfoString(str, "LIKE"); } else if (list_length(op) == 1 && strcmp(strVal(linitial(op)), "!~~") == 0) { appendStringInfoString(str, "NOT LIKE"); } else if (list_length(op) == 1 && strcmp(strVal(linitial(op)), "~~*") == 0) { appendStringInfoString(str, "ILIKE"); } else if (list_length(op) == 1 && strcmp(strVal(linitial(op)), "!~~*") == 0) { appendStringInfoString(str, "NOT ILIKE"); } else if (list_length(op) == 1 && isOp(strVal(linitial(op)))) { appendStringInfoString(str, strVal(linitial(op))); } else { appendStringInfoString(str, "OPERATOR("); deparseAnyOperator(str, op); appendStringInfoString(str, ")"); } } // Not present directly in gram.y (usually matched by ColLabel) static void deparseGenericDefElemName(StringInfo str, const char *in) { Assert(in != NULL); char *val = pstrdup(in); for (unsigned char *p = (unsigned char *) val; *p; p++) *p = pg_toupper(*p); appendStringInfoString(str, val); pfree(val); } // "def_arg" and "operator_def_arg" in gram.y static void deparseDefArg(StringInfo str, Node *arg, bool is_operator_def_arg) { if (IsA(arg, TypeName)) // func_type { deparseTypeName(str, castNode(TypeName, arg)); } else if (IsA(arg, List)) // qual_all_Op { List *l = castNode(List, arg); Assert(list_length(l) == 1 || list_length(l) == 2); // Schema qualified operator if (list_length(l) == 2) { appendStringInfoString(str, "OPERATOR("); deparseAnyOperator(str, l); appendStringInfoChar(str, ')'); } else if (list_length(l) == 1) { appendStringInfoString(str, strVal(linitial(l))); } } else if (IsA(arg, Float) || IsA(arg, Integer)) // NumericOnly { deparseValue(str, (Value *) arg, DEPARSE_NODE_CONTEXT_NONE); } else if (IsA(arg, String)) { char *s = strVal(arg); if (!is_operator_def_arg && IsA(arg, String) && strcmp(s, "none") == 0) // NONE { appendStringInfoString(str, "NONE"); } else if (isReservedKeyword(s)) // reserved_keyword { appendStringInfoString(str, s); } else // Sconst { deparseStringLiteral(str, s); } } else { Assert(false); } } // "definition" in gram.y static void deparseDefinition(StringInfo str, List *options) { ListCell *lc = NULL; appendStringInfoChar(str, '('); foreach (lc, options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); appendStringInfoString(str, quote_identifier(def_elem->defname)); if (def_elem->arg != NULL) { appendStringInfoString(str, " = "); deparseDefArg(str, def_elem->arg, false); } if (lnext(options, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } // "opt_definition" in gram.y // // Note this method adds a trailing space if a value is output static void deparseOptDefinition(StringInfo str, List *options) { if (list_length(options) > 0) { appendStringInfoString(str, "WITH "); deparseDefinition(str, options); } } // "create_generic_options" in gram.y static void deparseCreateGenericOptions(StringInfo str, List *options) { ListCell *lc = NULL; if (options == NULL) return; appendStringInfoString(str, "OPTIONS ("); foreach(lc, options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); appendStringInfoString(str, quote_identifier(def_elem->defname)); appendStringInfoChar(str, ' '); deparseStringLiteral(str, strVal(def_elem->arg)); if (lnext(options, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); } // "common_func_opt_item" in gram.y static void deparseCommonFuncOptItem(StringInfo str, DefElem *def_elem) { if (strcmp(def_elem->defname, "strict") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "RETURNS NULL ON NULL INPUT"); } else if (strcmp(def_elem->defname, "strict") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "CALLED ON NULL INPUT"); } else if (strcmp(def_elem->defname, "volatility") == 0 && strcmp(strVal(def_elem->arg), "immutable") == 0) { appendStringInfoString(str, "IMMUTABLE"); } else if (strcmp(def_elem->defname, "volatility") == 0 && strcmp(strVal(def_elem->arg), "stable") == 0) { appendStringInfoString(str, "STABLE"); } else if (strcmp(def_elem->defname, "volatility") == 0 && strcmp(strVal(def_elem->arg), "volatile") == 0) { appendStringInfoString(str, "VOLATILE"); } else if (strcmp(def_elem->defname, "security") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "SECURITY DEFINER"); } else if (strcmp(def_elem->defname, "security") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "SECURITY INVOKER"); } else if (strcmp(def_elem->defname, "leakproof") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "LEAKPROOF"); } else if (strcmp(def_elem->defname, "leakproof") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "NOT LEAKPROOF"); } else if (strcmp(def_elem->defname, "cost") == 0) { appendStringInfoString(str, "COST "); deparseValue(str, (Value *) def_elem->arg, DEPARSE_NODE_CONTEXT_NONE); } else if (strcmp(def_elem->defname, "rows") == 0) { appendStringInfoString(str, "ROWS "); deparseValue(str, (Value *) def_elem->arg, DEPARSE_NODE_CONTEXT_NONE); } else if (strcmp(def_elem->defname, "support") == 0) { appendStringInfoString(str, "SUPPORT "); deparseAnyName(str, castNode(List, def_elem->arg)); } else if (strcmp(def_elem->defname, "set") == 0 && IsA(def_elem->arg, VariableSetStmt)) // FunctionSetResetClause { deparseVariableSetStmt(str, castNode(VariableSetStmt, def_elem->arg)); } else if (strcmp(def_elem->defname, "parallel") == 0) { appendStringInfoString(str, "PARALLEL "); appendStringInfoString(str, quote_identifier(strVal(def_elem->arg))); } else { Assert(false); } } // "NonReservedWord_or_Sconst" in gram.y // // Note since both identifiers and string constants are allowed here, we // currently always return an identifier, except: // // 1) when the string is empty (since an empty identifier can't be scanned) // 2) when the value is equal or larger than NAMEDATALEN (64+ characters) static void deparseNonReservedWordOrSconst(StringInfo str, const char *val) { if (strlen(val) == 0) appendStringInfoString(str, "''"); else if (strlen(val) >= NAMEDATALEN) deparseStringLiteral(str, val); else appendStringInfoString(str, quote_identifier(val)); } // "func_as" in gram.y static void deparseFuncAs(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { char *strval = strVal(lfirst(lc)); if (strstr(strval, "$$") == NULL) { appendStringInfoString(str, "$$"); appendStringInfoString(str, strval); appendStringInfoString(str, "$$"); } else { deparseStringLiteral(str, strval); } if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "createfunc_opt_item" in gram.y static void deparseCreateFuncOptItem(StringInfo str, DefElem *def_elem) { ListCell *lc = NULL; if (strcmp(def_elem->defname, "as") == 0) { appendStringInfoString(str, "AS "); deparseFuncAs(str, castNode(List, def_elem->arg)); } else if (strcmp(def_elem->defname, "language") == 0) { appendStringInfoString(str, "LANGUAGE "); deparseNonReservedWordOrSconst(str, strVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "transform") == 0) { List *l = castNode(List, def_elem->arg); appendStringInfoString(str, "TRANSFORM "); foreach (lc, l) { appendStringInfoString(str, "FOR TYPE "); deparseTypeName(str, castNode(TypeName, lfirst(lc))); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } else if (strcmp(def_elem->defname, "window") == 0) { appendStringInfoString(str, "WINDOW"); } else { deparseCommonFuncOptItem(str, def_elem); } } // "alter_generic_options" in gram.y static void deparseAlterGenericOptions(StringInfo str, List *options) { ListCell *lc = NULL; appendStringInfoString(str, "OPTIONS ("); foreach(lc, options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); switch (def_elem->defaction) { case DEFELEM_UNSPEC: appendStringInfoString(str, quote_identifier(def_elem->defname)); appendStringInfoChar(str, ' '); deparseStringLiteral(str, strVal(def_elem->arg)); break; case DEFELEM_SET: appendStringInfoString(str, "SET "); appendStringInfoString(str, quote_identifier(def_elem->defname)); appendStringInfoChar(str, ' '); deparseStringLiteral(str, strVal(def_elem->arg)); break; case DEFELEM_ADD: appendStringInfoString(str, "ADD "); appendStringInfoString(str, quote_identifier(def_elem->defname)); appendStringInfoChar(str, ' '); deparseStringLiteral(str, strVal(def_elem->arg)); break; case DEFELEM_DROP: appendStringInfoString(str, "DROP "); appendStringInfoString(str, quote_identifier(def_elem->defname)); break; } if (lnext(options, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); } // "func_name" in gram.y static void deparseFuncName(StringInfo str, List *func_name) { ListCell *lc = NULL; foreach(lc, func_name) { appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); if (lnext(func_name, lc)) appendStringInfoChar(str, '.'); } } // "function_with_argtypes" in gram.y static void deparseFunctionWithArgtypes(StringInfo str, ObjectWithArgs *object_with_args) { ListCell *lc; deparseFuncName(str, object_with_args->objname); if (!object_with_args->args_unspecified) { appendStringInfoChar(str, '('); foreach(lc, object_with_args->objargs) { if (IsA(lfirst(lc), TypeName)) deparseTypeName(str, castNode(TypeName, lfirst(lc))); else deparseFunctionParameter(str, castNode(FunctionParameter, lfirst(lc))); if (lnext(object_with_args->objargs, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } } // "function_with_argtypes_list" in gram.y static void deparseFunctionWithArgtypesList(StringInfo str, List *l) { ListCell *lc; foreach(lc, l) { deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, lfirst(lc))); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "operator_with_argtypes" in gram.y static void deparseOperatorWithArgtypes(StringInfo str, ObjectWithArgs *object_with_args) { deparseAnyOperator(str, object_with_args->objname); Assert(list_length(object_with_args->objargs) == 2); appendStringInfoChar(str, '('); if (linitial(object_with_args->objargs) == NULL) appendStringInfoString(str, "NONE"); else deparseTypeName(str, castNode(TypeName, linitial(object_with_args->objargs))); appendStringInfoString(str, ", "); if (lsecond(object_with_args->objargs) == NULL) appendStringInfoString(str, "NONE"); else deparseTypeName(str, castNode(TypeName, lsecond(object_with_args->objargs))); appendStringInfoChar(str, ')'); } // "aggr_args" in gram.y static void deparseAggrArgs(StringInfo str, List *aggr_args) { Assert(list_length(aggr_args) == 2); ListCell *lc = NULL; List *args = linitial(aggr_args); int order_by_pos = intVal(lsecond(aggr_args)); appendStringInfoChar(str, '('); if (args == NULL) { appendStringInfoChar(str, '*'); } else { foreach(lc, args) { if (foreach_current_index(lc) == order_by_pos) { if (foreach_current_index(lc) > 0) appendStringInfoChar(str, ' '); appendStringInfoString(str, "ORDER BY "); } else if (foreach_current_index(lc) > 0) { appendStringInfoString(str, ", "); } deparseFunctionParameter(str, castNode(FunctionParameter, lfirst(lc))); } // Repeat the last direct arg as a ordered arg to handle the // simplification done by makeOrderedSetArgs in gram.y if (order_by_pos == list_length(args)) { appendStringInfoString(str, " ORDER BY "); deparseFunctionParameter(str, castNode(FunctionParameter, llast(args))); } } appendStringInfoChar(str, ')'); } // "aggregate_with_argtypes" in gram.y static void deparseAggregateWithArgtypes(StringInfo str, ObjectWithArgs *object_with_args) { ListCell *lc = NULL; deparseFuncName(str, object_with_args->objname); appendStringInfoChar(str, '('); if (object_with_args->objargs == NULL) { appendStringInfoChar(str, '*'); } else { foreach(lc, object_with_args->objargs) { deparseTypeName(str, castNode(TypeName, lfirst(lc))); if (lnext(object_with_args->objargs, lc)) appendStringInfoString(str, ", "); } } appendStringInfoChar(str, ')'); } // "columnList" in gram.y static void deparseColumnList(StringInfo str, List *columns) { ListCell *lc = NULL; foreach(lc, columns) { appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); if (lnext(columns, lc)) appendStringInfoString(str, ", "); } } // "OptTemp" in gram.y // // Note this method adds a trailing space if a value is output static void deparseOptTemp(StringInfo str, char relpersistence) { switch (relpersistence) { case RELPERSISTENCE_PERMANENT: // Default break; case RELPERSISTENCE_UNLOGGED: appendStringInfoString(str, "UNLOGGED "); break; case RELPERSISTENCE_TEMP: appendStringInfoString(str, "TEMPORARY "); break; default: Assert(false); break; } } // "relation_expr_list" in gram.y static void deparseRelationExprList(StringInfo str, List *relation_exprs) { ListCell *lc = NULL; foreach(lc, relation_exprs) { deparseRangeVar(str, castNode(RangeVar, lfirst(lc)), DEPARSE_NODE_CONTEXT_NONE); if (lnext(relation_exprs, lc)) appendStringInfoString(str, ", "); } } // "handler_name" in gram.y static void deparseHandlerName(StringInfo str, List *handler_name) { ListCell *lc = NULL; foreach(lc, handler_name) { appendStringInfoString(str, quote_identifier(strVal(lfirst(lc)))); if (lnext(handler_name, lc)) appendStringInfoChar(str, '.'); } } // "fdw_options" in gram.y static void deparseFdwOptions(StringInfo str, List *fdw_options) { ListCell *lc = NULL; foreach (lc, fdw_options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "handler") == 0 && def_elem->arg != NULL) { appendStringInfoString(str, "HANDLER "); deparseHandlerName(str, castNode(List, def_elem->arg)); } else if (strcmp(def_elem->defname, "handler") == 0 && def_elem->arg == NULL) { appendStringInfoString(str, "NO HANDLER "); } else if (strcmp(def_elem->defname, "validator") == 0 && def_elem->arg != NULL) { appendStringInfoString(str, "VALIDATOR "); deparseHandlerName(str, castNode(List, def_elem->arg)); } else if (strcmp(def_elem->defname, "validator") == 0 && def_elem->arg == NULL) { appendStringInfoString(str, "NO VALIDATOR "); } else { Assert(false); } if (lnext(fdw_options, lc)) appendStringInfoChar(str, ' '); } } // "type_list" in gram.y static void deparseTypeList(StringInfo str, List *type_list) { ListCell *lc = NULL; foreach(lc, type_list) { deparseTypeName(str, castNode(TypeName, lfirst(lc))); if (lnext(type_list, lc)) appendStringInfoString(str, ", "); } } // "opt_boolean_or_string" in gram.y static void deparseOptBooleanOrString(StringInfo str, char *s) { if (s == NULL) return; // No value set else if (strcmp(s, "true") == 0) appendStringInfoString(str, "TRUE"); else if (strcmp(s, "false") == 0) appendStringInfoString(str, "FALSE"); else if (strcmp(s, "on") == 0) appendStringInfoString(str, "ON"); else if (strcmp(s, "off") == 0) appendStringInfoString(str, "OFF"); else deparseNonReservedWordOrSconst(str, s); } // "var_name" // // Note this is kept separate from ColId in case we want to improve the // output of namespaced variable names static void deparseVarName(StringInfo str, char *s) { deparseColId(str, s); } // "var_list" static void deparseVarList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { if (IsA(lfirst(lc), ParamRef)) { deparseParamRef(str, castNode(ParamRef, lfirst(lc))); } else if (IsA(lfirst(lc), A_Const)) { A_Const *a_const = castNode(A_Const, lfirst(lc)); if (IsA(&a_const->val, Integer) || IsA(&a_const->val, Float)) deparseNumericOnly(str, (Value *) &a_const->val); else if (IsA(&a_const->val, String)) deparseOptBooleanOrString(str, strVal(&a_const->val)); else Assert(false); } else { Assert(false); } if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "transaction_mode_list" in gram.y static void deparseTransactionModeList(StringInfo str, List *l) { ListCell *lc = NULL; foreach (lc, l) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "transaction_isolation") == 0) { char *s = strVal(&castNode(A_Const, def_elem->arg)->val); appendStringInfoString(str, "ISOLATION LEVEL "); if (strcmp(s, "read uncommitted") == 0) appendStringInfoString(str, "READ UNCOMMITTED"); else if (strcmp(s, "read committed") == 0) appendStringInfoString(str, "READ COMMITTED"); else if (strcmp(s, "repeatable read") == 0) appendStringInfoString(str, "REPEATABLE READ"); else if (strcmp(s, "serializable") == 0) appendStringInfoString(str, "SERIALIZABLE"); else Assert(false); } else if (strcmp(def_elem->defname, "transaction_read_only") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 1) { appendStringInfoString(str, "READ ONLY"); } else if (strcmp(def_elem->defname, "transaction_read_only") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 0) { appendStringInfoString(str, "READ WRITE"); } else if (strcmp(def_elem->defname, "transaction_deferrable") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 1) { appendStringInfoString(str, "DEFERRABLE"); } else if (strcmp(def_elem->defname, "transaction_deferrable") == 0 && intVal(&castNode(A_Const, def_elem->arg)->val) == 0) { appendStringInfoString(str, "NOT DEFERRABLE"); } else { Assert(false); } if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "alter_identity_column_option_list" in gram.y static void deparseAlterIdentityColumnOptionList(StringInfo str, List *l) { ListCell *lc = NULL; foreach (lc, l) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "restart") == 0 && def_elem->arg == NULL) { appendStringInfoString(str, "RESTART"); } else if (strcmp(def_elem->defname, "restart") == 0 && def_elem->arg != NULL) { appendStringInfoString(str, "RESTART "); deparseNumericOnly(str, (Value *) def_elem->arg); } else if (strcmp(def_elem->defname, "generated") == 0) { appendStringInfoString(str, "SET GENERATED "); if (intVal(def_elem->arg) == ATTRIBUTE_IDENTITY_ALWAYS) appendStringInfoString(str, "ALWAYS"); else if (intVal(def_elem->arg) == ATTRIBUTE_IDENTITY_BY_DEFAULT) appendStringInfoString(str, "BY DEFAULT"); else Assert(false); } else { appendStringInfoString(str, "SET "); deparseSeqOptElem(str, def_elem); } if (lnext(l, lc)) appendStringInfoChar(str, ' '); } } // "reloptions" in gram.y static void deparseRelOptions(StringInfo str, List *l) { ListCell *lc = NULL; appendStringInfoChar(str, '('); foreach(lc, l) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (def_elem->defnamespace != NULL) { appendStringInfoString(str, quote_identifier(def_elem->defnamespace)); appendStringInfoChar(str, '.'); } if (def_elem->defname != NULL) appendStringInfoString(str, quote_identifier(def_elem->defname)); if (def_elem->defname != NULL && def_elem->arg != NULL) appendStringInfoChar(str, '='); if (def_elem->arg != NULL) deparseDefArg(str, def_elem->arg, false); if (lnext(l, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } // "OptWith" and "opt_reloptions" in gram.y // // Note this method adds a trailing space if a value is output static void deparseOptWith(StringInfo str, List *l) { ListCell *lc = NULL; if (list_length(l) > 0) { appendStringInfoString(str, "WITH "); deparseRelOptions(str, l); appendStringInfoChar(str, ' '); } } // "target_list" and "opt_target_list" in gram.y static void deparseTargetList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { ResTarget *res_target = castNode(ResTarget, lfirst(lc)); if (res_target->val == NULL) elog(ERROR, "deparse error in deparseTargetList: ResTarget without val"); else if (IsA(res_target->val, ColumnRef)) deparseColumnRef(str, castNode(ColumnRef, res_target->val)); else deparseExpr(str, res_target->val); if (res_target->name != NULL) { appendStringInfoString(str, " AS "); appendStringInfoString(str, quote_identifier(res_target->name)); } if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "insert_column_list" in gram.y static void deparseInsertColumnList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { ResTarget *res_target = castNode(ResTarget, lfirst(lc)); Assert(res_target->name != NULL); appendStringInfoString(str, quote_identifier(res_target->name)); deparseOptIndirection(str, res_target->indirection, 0); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "xml_attribute_list" in gram.y static void deparseXmlAttributeList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { ResTarget *res_target = castNode(ResTarget, lfirst(lc)); Assert(res_target->val != NULL); deparseExpr(str, res_target->val); if (res_target->name != NULL) { appendStringInfoString(str, " AS "); appendStringInfoString(str, quote_identifier(res_target->name)); } if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "xml_namespace_list" in gram.y static void deparseXmlNamespaceList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { ResTarget *res_target = castNode(ResTarget, lfirst(lc)); Assert(res_target->val != NULL); if (res_target->name == NULL) appendStringInfoString(str, "DEFAULT "); deparseExpr(str, res_target->val); if (res_target->name != NULL) { appendStringInfoString(str, " AS "); appendStringInfoString(str, quote_identifier(res_target->name)); } if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "table_ref" in gram.y static void deparseTableRef(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_RangeVar: deparseRangeVar(str, castNode(RangeVar, node), DEPARSE_NODE_CONTEXT_NONE); break; case T_RangeTableSample: deparseRangeTableSample(str, castNode(RangeTableSample, node)); break; case T_RangeFunction: deparseRangeFunction(str, castNode(RangeFunction, node)); break; case T_RangeTableFunc: deparseRangeTableFunc(str, castNode(RangeTableFunc, node)); break; case T_RangeSubselect: deparseRangeSubselect(str, castNode(RangeSubselect, node)); break; case T_JoinExpr: deparseJoinExpr(str, castNode(JoinExpr, node)); break; default: Assert(false); } } // "from_list" in gram.y static void deparseFromList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { deparseTableRef(str, lfirst(lc)); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "from_clause" in gram.y // // Note this method adds a trailing space if a value is output static void deparseFromClause(StringInfo str, List *l) { if (list_length(l) > 0) { appendStringInfoString(str, "FROM "); deparseFromList(str, l); appendStringInfoChar(str, ' '); } } // "where_clause" in gram.y // // Note this method adds a trailing space if a value is output static void deparseWhereClause(StringInfo str, Node *node) { if (node != NULL) { appendStringInfoString(str, "WHERE "); deparseExpr(str, node); appendStringInfoChar(str, ' '); } } // "group_by_list" in gram.y static void deparseGroupByList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { if (IsA(lfirst(lc), GroupingSet)) deparseGroupingSet(str, castNode(GroupingSet, lfirst(lc))); else deparseExpr(str, lfirst(lc)); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "set_target" in gram.y static void deparseSetTarget(StringInfo str, ResTarget *res_target) { Assert(res_target->name != NULL); deparseColId(str, res_target->name); deparseOptIndirection(str, res_target->indirection, 0); } // "any_name_list" in gram.y static void deparseAnyNameList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { deparseAnyName(str, castNode(List, lfirst(lc))); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "name_list" in gram.y static void deparseNameList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { deparseColId(str, strVal(lfirst(lc))); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "opt_sort_clause" in gram.y // // Note this method adds a trailing space if a value is output static void deparseOptSortClause(StringInfo str, List *l) { ListCell *lc = NULL; if (list_length(l) > 0) { appendStringInfoString(str, "ORDER BY "); foreach(lc, l) { deparseSortBy(str, castNode(SortBy, lfirst(lc))); if (lnext(l, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); } } // "func_arg_expr" in gram.y static void deparseFuncArgExpr(StringInfo str, Node *node) { if (IsA(node, NamedArgExpr)) { NamedArgExpr *named_arg_expr = castNode(NamedArgExpr, node); appendStringInfoString(str, named_arg_expr->name); appendStringInfoString(str, " := "); deparseExpr(str, (Node *) named_arg_expr->arg); } else { deparseExpr(str, node); } } // "set_clause_list" in gram.y static void deparseSetClauseList(StringInfo str, List *target_list) { ListCell *lc; ListCell *lc2; int skip_next_n_elems = 0; Assert(list_length(target_list) > 0); foreach(lc, target_list) { if (skip_next_n_elems > 0) { skip_next_n_elems--; continue; } if (foreach_current_index(lc) != 0) appendStringInfoString(str, ", "); ResTarget *res_target = castNode(ResTarget, lfirst(lc)); Assert(res_target->val != NULL); if (IsA(res_target->val, MultiAssignRef)) { MultiAssignRef *r = castNode(MultiAssignRef, res_target->val); appendStringInfoString(str, "("); for_each_cell(lc2, target_list, lc) { deparseSetTarget(str, castNode(ResTarget, lfirst(lc2))); if (foreach_current_index(lc2) == r->ncolumns - 1) // Last element in this multi-assign break; else if (lnext(target_list, lc2)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") = "); deparseExpr(str, r->source); skip_next_n_elems = r->ncolumns - 1; } else { deparseSetTarget(str, res_target); appendStringInfoString(str, " = "); deparseExpr(str, res_target->val); } } } // "func_expr_windowless" in gram.y static void deparseFuncExprWindowless(StringInfo str, Node* node) { switch (nodeTag(node)) { case T_FuncCall: deparseFuncCall(str, castNode(FuncCall, node)); break; case T_SQLValueFunction: deparseSQLValueFunction(str, castNode(SQLValueFunction, node)); break; case T_TypeCast: deparseTypeCast(str, castNode(TypeCast, node)); break; case T_CoalesceExpr: deparseCoalesceExpr(str, castNode(CoalesceExpr, node)); break; case T_MinMaxExpr: deparseMinMaxExpr(str, castNode(MinMaxExpr, node)); break; case T_XmlExpr: deparseXmlExpr(str, castNode(XmlExpr, node)); break; case T_XmlSerialize: deparseXmlSerialize(str, castNode(XmlSerialize, node)); break; default: Assert(false); } } // "opt_collate" in gram.y // // Note this method adds a trailing space if a value is output static void deparseOptCollate(StringInfo str, List *l) { if (list_length(l) > 0) { appendStringInfoString(str, "COLLATE "); deparseAnyName(str, l); appendStringInfoChar(str, ' '); } } // "index_elem" in gram.y static void deparseIndexElem(StringInfo str, IndexElem* index_elem) { if (index_elem->name != NULL) { deparseColId(str, index_elem->name); appendStringInfoChar(str, ' '); } else if (index_elem->expr != NULL) { switch (nodeTag(index_elem->expr)) { case T_FuncCall: case T_SQLValueFunction: case T_TypeCast: case T_CoalesceExpr: case T_MinMaxExpr: case T_XmlExpr: case T_XmlSerialize: deparseFuncExprWindowless(str, index_elem->expr); break; default: appendStringInfoChar(str, '('); deparseExpr(str, index_elem->expr); appendStringInfoString(str, ") "); } } else { Assert(false); } deparseOptCollate(str, index_elem->collation); if (list_length(index_elem->opclass) > 0) { deparseAnyName(str, index_elem->opclass); if (list_length(index_elem->opclassopts) > 0) deparseRelOptions(str, index_elem->opclassopts); appendStringInfoChar(str, ' '); } switch (index_elem->ordering) { case SORTBY_DEFAULT: // Default break; case SORTBY_ASC: appendStringInfoString(str, "ASC "); break; case SORTBY_DESC: appendStringInfoString(str, "DESC "); break; case SORTBY_USING: // Not allowed in CREATE INDEX Assert(false); break; } switch (index_elem->nulls_ordering) { case SORTBY_NULLS_DEFAULT: // Default break; case SORTBY_NULLS_FIRST: appendStringInfoString(str, "NULLS FIRST "); break; case SORTBY_NULLS_LAST: appendStringInfoString(str, "NULLS LAST "); break; } removeTrailingSpace(str); } // "qualified_name_list" in gram.y static void deparseQualifiedNameList(StringInfo str, List *l) { ListCell *lc = NULL; foreach(lc, l) { deparseRangeVar(str, castNode(RangeVar, lfirst(lc)), DEPARSE_NODE_CONTEXT_NONE); if (lnext(l, lc)) appendStringInfoString(str, ", "); } } // "OptInherit" in gram.y // // Note this method adds a trailing space if a value is output static void deparseOptInherit(StringInfo str, List *l) { if (list_length(l) > 0) { appendStringInfoString(str, "INHERITS ("); deparseQualifiedNameList(str, l); appendStringInfoString(str, ") "); } } // "privilege_target" in gram.y static void deparsePrivilegeTarget(StringInfo str, GrantTargetType targtype, ObjectType objtype, List *objs) { switch (targtype) { case ACL_TARGET_OBJECT: switch (objtype) { case OBJECT_TABLE: deparseQualifiedNameList(str, objs); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCE "); deparseQualifiedNameList(str, objs); break; case OBJECT_FDW: appendStringInfoString(str, "FOREIGN DATA WRAPPER "); deparseNameList(str, objs); break; case OBJECT_FOREIGN_SERVER: appendStringInfoString(str, "FOREIGN SERVER "); deparseNameList(str, objs); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); deparseFunctionWithArgtypesList(str, objs); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); deparseFunctionWithArgtypesList(str, objs); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); deparseFunctionWithArgtypesList(str, objs); break; case OBJECT_DATABASE: appendStringInfoString(str, "DATABASE "); deparseNameList(str, objs); break; case OBJECT_DOMAIN: appendStringInfoString(str, "DOMAIN "); deparseAnyNameList(str, objs); break; case OBJECT_LANGUAGE: appendStringInfoString(str, "LANGUAGE "); deparseNameList(str, objs); break; case OBJECT_LARGEOBJECT: appendStringInfoString(str, "LARGE OBJECT "); deparseNumericOnlyList(str, objs); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMA "); deparseNameList(str, objs); break; case OBJECT_TABLESPACE: appendStringInfoString(str, "TABLESPACE "); deparseNameList(str, objs); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPE "); deparseAnyNameList(str, objs); break; default: // Other types are not supported here Assert(false); break; } break; case ACL_TARGET_ALL_IN_SCHEMA: switch (objtype) { case OBJECT_TABLE: appendStringInfoString(str, "ALL TABLES IN SCHEMA "); deparseNameList(str, objs); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "ALL SEQUENCES IN SCHEMA "); deparseNameList(str, objs); break; case OBJECT_FUNCTION: appendStringInfoString(str, "ALL FUNCTIONS IN SCHEMA "); deparseNameList(str, objs); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "ALL PROCEDURES IN SCHEMA "); deparseNameList(str, objs); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ALL ROUTINES IN SCHEMA "); deparseNameList(str, objs); break; default: // Other types are not supported here Assert(false); break; } break; case ACL_TARGET_DEFAULTS: // defacl_privilege_target switch (objtype) { case OBJECT_TABLE: appendStringInfoString(str, "TABLES"); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTIONS"); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCES"); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPES"); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMAS"); break; default: // Other types are not supported here Assert(false); break; } break; } } // "opclass_item_list" in gram.y static void deparseOpclassItemList(StringInfo str, List *items) { ListCell *lc = NULL; foreach (lc, items) { deparseCreateOpClassItem(str, castNode(CreateOpClassItem, lfirst(lc))); if (lnext(items, lc)) appendStringInfoString(str, ", "); } } // "createdb_opt_list" in gram.y static void deparseCreatedbOptList(StringInfo str, List *l) { ListCell *lc = NULL; foreach (lc, l) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "connection_limit") == 0) appendStringInfoString(str, "CONNECTION LIMIT"); else deparseGenericDefElemName(str, def_elem->defname); appendStringInfoChar(str, ' '); if (def_elem->arg == NULL) appendStringInfoString(str, "DEFAULT"); else if (IsA(def_elem->arg, Integer)) deparseSignedIconst(str, def_elem->arg); else if (IsA(def_elem->arg, String)) deparseOptBooleanOrString(str, strVal(def_elem->arg)); if (lnext(l, lc)) appendStringInfoChar(str, ' '); } } static void deparseSelectStmt(StringInfo str, SelectStmt *stmt) { const ListCell *lc = NULL; const ListCell *lc2 = NULL; if (stmt->withClause) { deparseWithClause(str, stmt->withClause); appendStringInfoChar(str, ' '); } switch (stmt->op) { case SETOP_NONE: if (list_length(stmt->valuesLists) > 0) { const ListCell *lc; appendStringInfoString(str, "VALUES "); foreach(lc, stmt->valuesLists) { appendStringInfoChar(str, '('); deparseExprList(str, lfirst(lc)); appendStringInfoChar(str, ')'); if (lnext(stmt->valuesLists, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); break; } appendStringInfoString(str, "SELECT "); if (list_length(stmt->targetList) > 0) { if (stmt->distinctClause != NULL) { appendStringInfoString(str, "DISTINCT "); if (list_length(stmt->distinctClause) > 0 && linitial(stmt->distinctClause) != NULL) { appendStringInfoString(str, "ON ("); deparseExprList(str, stmt->distinctClause); appendStringInfoString(str, ") "); } } deparseTargetList(str, stmt->targetList); appendStringInfoChar(str, ' '); } if (stmt->intoClause != NULL) { appendStringInfoString(str, "INTO "); deparseOptTemp(str, stmt->intoClause->rel->relpersistence); deparseIntoClause(str, stmt->intoClause); appendStringInfoChar(str, ' '); } deparseFromClause(str, stmt->fromClause); deparseWhereClause(str, stmt->whereClause); if (list_length(stmt->groupClause) > 0) { appendStringInfoString(str, "GROUP BY "); deparseGroupByList(str, stmt->groupClause); appendStringInfoChar(str, ' '); } if (stmt->havingClause != NULL) { appendStringInfoString(str, "HAVING "); deparseExpr(str, stmt->havingClause); appendStringInfoChar(str, ' '); } if (stmt->windowClause != NULL) { appendStringInfoString(str, "WINDOW "); foreach(lc, stmt->windowClause) { WindowDef *window_def = castNode(WindowDef, lfirst(lc)); Assert(window_def->name != NULL); appendStringInfoString(str, window_def->name); appendStringInfoString(str, " AS "); deparseWindowDef(str, window_def); if (lnext(stmt->windowClause, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); } break; case SETOP_UNION: case SETOP_INTERSECT: case SETOP_EXCEPT: { bool need_larg_parens = list_length(stmt->larg->sortClause) > 0 || stmt->larg->limitOffset != NULL || stmt->larg->limitCount != NULL || list_length(stmt->larg->lockingClause) > 0 || stmt->larg->withClause != NULL || stmt->larg->op != SETOP_NONE; bool need_rarg_parens = list_length(stmt->rarg->sortClause) > 0 || stmt->rarg->limitOffset != NULL || stmt->rarg->limitCount != NULL || list_length(stmt->rarg->lockingClause) > 0 || stmt->rarg->withClause != NULL || stmt->rarg->op != SETOP_NONE; if (need_larg_parens) appendStringInfoChar(str, '('); deparseSelectStmt(str, stmt->larg); if (need_larg_parens) appendStringInfoChar(str, ')'); switch (stmt->op) { case SETOP_UNION: appendStringInfoString(str, " UNION "); break; case SETOP_INTERSECT: appendStringInfoString(str, " INTERSECT "); break; case SETOP_EXCEPT: appendStringInfoString(str, " EXCEPT "); break; default: Assert(false); } if (stmt->all) appendStringInfoString(str, "ALL "); if (need_rarg_parens) appendStringInfoChar(str, '('); deparseSelectStmt(str, stmt->rarg); if (need_rarg_parens) appendStringInfoChar(str, ')'); appendStringInfoChar(str, ' '); } break; } deparseOptSortClause(str, stmt->sortClause); if (stmt->limitCount != NULL) { if (stmt->limitOption == LIMIT_OPTION_COUNT) appendStringInfoString(str, "LIMIT "); else if (stmt->limitOption == LIMIT_OPTION_WITH_TIES) appendStringInfoString(str, "FETCH FIRST "); if (IsA(stmt->limitCount, A_Const) && IsA(&castNode(A_Const, stmt->limitCount)->val, Null)) appendStringInfoString(str, "ALL"); else deparseCExpr(str, stmt->limitCount); appendStringInfoChar(str, ' '); if (stmt->limitOption == LIMIT_OPTION_WITH_TIES) appendStringInfoString(str, "ROWS WITH TIES "); } if (stmt->limitOffset != NULL) { appendStringInfoString(str, "OFFSET "); deparseExpr(str, stmt->limitOffset); appendStringInfoChar(str, ' '); } if (list_length(stmt->lockingClause) > 0) { foreach(lc, stmt->lockingClause) { deparseLockingClause(str, castNode(LockingClause, lfirst(lc))); if (lnext(stmt->lockingClause, lc)) appendStringInfoString(str, " "); } appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseIntoClause(StringInfo str, IntoClause *into_clause) { ListCell *lc; deparseRangeVar(str, into_clause->rel, DEPARSE_NODE_CONTEXT_NONE); /* target relation name */ if (list_length(into_clause->colNames) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, into_clause->colNames); appendStringInfoChar(str, ')'); } appendStringInfoChar(str, ' '); if (into_clause->accessMethod != NULL) { appendStringInfoString(str, "USING "); appendStringInfoString(str, quote_identifier(into_clause->accessMethod)); appendStringInfoChar(str, ' '); } deparseOptWith(str, into_clause->options); switch (into_clause->onCommit) { case ONCOMMIT_NOOP: // No clause break; case ONCOMMIT_PRESERVE_ROWS: appendStringInfoString(str, "ON COMMIT PRESERVE ROWS "); break; case ONCOMMIT_DELETE_ROWS: appendStringInfoString(str, "ON COMMIT DELETE ROWS "); break; case ONCOMMIT_DROP: appendStringInfoString(str, "ON COMMIT DROP "); break; } if (into_clause->tableSpaceName != NULL) { appendStringInfoString(str, "TABLESPACE "); appendStringInfoString(str, quote_identifier(into_clause->tableSpaceName)); appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseRangeVar(StringInfo str, RangeVar *range_var, DeparseNodeContext context) { if (!range_var->inh && context != DEPARSE_NODE_CONTEXT_CREATE_TYPE && context != DEPARSE_NODE_CONTEXT_ALTER_TYPE) appendStringInfoString(str, "ONLY "); if (range_var->catalogname != NULL) { appendStringInfoString(str, quote_identifier(range_var->catalogname)); appendStringInfoChar(str, '.'); } if (range_var->schemaname != NULL) { appendStringInfoString(str, quote_identifier(range_var->schemaname)); appendStringInfoChar(str, '.'); } Assert(range_var->relname != NULL); appendStringInfoString(str, quote_identifier(range_var->relname)); appendStringInfoChar(str, ' '); if (range_var->alias != NULL) { if (context == DEPARSE_NODE_CONTEXT_INSERT_RELATION) appendStringInfoString(str, "AS "); deparseAlias(str, range_var->alias); appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseRawStmt(StringInfo str, RawStmt *raw_stmt) { deparseStmt(str, raw_stmt->stmt); } static void deparseAlias(StringInfo str, Alias *alias) { appendStringInfoString(str, quote_identifier(alias->aliasname)); if (list_length(alias->colnames) > 0) { const ListCell *lc = NULL; appendStringInfoChar(str, '('); deparseNameList(str, alias->colnames); appendStringInfoChar(str, ')'); } } static void deparseAConst(StringInfo str, A_Const *a_const) { deparseValue(str, &a_const->val, DEPARSE_NODE_CONTEXT_CONSTANT); } static void deparseFuncCall(StringInfo str, FuncCall *func_call) { const ListCell *lc = NULL; Assert(list_length(func_call->funcname) > 0); if (list_length(func_call->funcname) == 2 && strcmp(strVal(linitial(func_call->funcname)), "pg_catalog") == 0 && strcmp(strVal(lsecond(func_call->funcname)), "overlay") == 0 && list_length(func_call->args) == 4) { /* * Note that this is a bit odd, but "OVERLAY" is a keyword on its own merit, and only accepts the * keyword parameter style when its called as a keyword, not as a regular function (i.e. pg_catalog.overlay) */ appendStringInfoString(str, "OVERLAY("); deparseExpr(str, linitial(func_call->args)); appendStringInfoString(str, " PLACING "); deparseExpr(str, lsecond(func_call->args)); appendStringInfoString(str, " FROM "); deparseExpr(str, lthird(func_call->args)); appendStringInfoString(str, " FOR "); deparseExpr(str, lfourth(func_call->args)); appendStringInfoChar(str, ')'); return; } deparseFuncName(str, func_call->funcname); appendStringInfoChar(str, '('); if (func_call->agg_distinct) appendStringInfoString(str, "DISTINCT "); if (func_call->agg_star) { appendStringInfoChar(str, '*'); } else if (list_length(func_call->args) > 0) { foreach(lc, func_call->args) { if (func_call->func_variadic && !lnext(func_call->args, lc)) appendStringInfoString(str, "VARIADIC "); deparseFuncArgExpr(str, lfirst(lc)); if (lnext(func_call->args, lc)) appendStringInfoString(str, ", "); } } appendStringInfoChar(str, ' '); if (func_call->agg_order != NULL && !func_call->agg_within_group) { deparseOptSortClause(str, func_call->agg_order); } removeTrailingSpace(str); appendStringInfoString(str, ") "); if (func_call->agg_order != NULL && func_call->agg_within_group) { appendStringInfoString(str, "WITHIN GROUP ("); deparseOptSortClause(str, func_call->agg_order); removeTrailingSpace(str); appendStringInfoString(str, ") "); } if (func_call->agg_filter) { appendStringInfoString(str, "FILTER (WHERE "); deparseExpr(str, func_call->agg_filter); appendStringInfoString(str, ") "); } if (func_call->over) { appendStringInfoString(str, "OVER "); if (func_call->over->name) appendStringInfoString(str, func_call->over->name); else deparseWindowDef(str, func_call->over); } removeTrailingSpace(str); } static void deparseWindowDef(StringInfo str, WindowDef* window_def) { ListCell *lc; // The parent node is responsible for outputting window_def->name appendStringInfoChar(str, '('); if (window_def->refname != NULL) { appendStringInfoString(str, quote_identifier(window_def->refname)); appendStringInfoChar(str, ' '); } if (list_length(window_def->partitionClause) > 0) { appendStringInfoString(str, "PARTITION BY "); deparseExprList(str, window_def->partitionClause); appendStringInfoChar(str, ' '); } deparseOptSortClause(str, window_def->orderClause); if (window_def->frameOptions & FRAMEOPTION_NONDEFAULT) { if (window_def->frameOptions & FRAMEOPTION_RANGE) appendStringInfoString(str, "RANGE "); else if (window_def->frameOptions & FRAMEOPTION_ROWS) appendStringInfoString(str, "ROWS "); else if (window_def->frameOptions & FRAMEOPTION_GROUPS) appendStringInfoString(str, "GROUPS "); if (window_def->frameOptions & FRAMEOPTION_BETWEEN) appendStringInfoString(str, "BETWEEN "); // frame_start if (window_def->frameOptions & FRAMEOPTION_START_UNBOUNDED_PRECEDING) { appendStringInfoString(str, "UNBOUNDED PRECEDING "); } else if (window_def->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) { Assert(false); // disallowed } else if (window_def->frameOptions & FRAMEOPTION_START_CURRENT_ROW) { appendStringInfoString(str, "CURRENT ROW "); } else if (window_def->frameOptions & FRAMEOPTION_START_OFFSET_PRECEDING) { Assert(window_def->startOffset != NULL); deparseExpr(str, window_def->startOffset); appendStringInfoString(str, " PRECEDING "); } else if (window_def->frameOptions & FRAMEOPTION_START_OFFSET_FOLLOWING) { Assert(window_def->startOffset != NULL); deparseExpr(str, window_def->startOffset); appendStringInfoString(str, " FOLLOWING "); } if (window_def->frameOptions & FRAMEOPTION_BETWEEN) { appendStringInfoString(str, "AND "); // frame_end if (window_def->frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) { Assert(false); // disallowed } else if (window_def->frameOptions & FRAMEOPTION_END_UNBOUNDED_FOLLOWING) { appendStringInfoString(str, "UNBOUNDED FOLLOWING "); } else if (window_def->frameOptions & FRAMEOPTION_END_CURRENT_ROW) { appendStringInfoString(str, "CURRENT ROW "); } else if (window_def->frameOptions & FRAMEOPTION_END_OFFSET_PRECEDING) { Assert(window_def->endOffset != NULL); deparseExpr(str, window_def->endOffset); appendStringInfoString(str, " PRECEDING "); } else if (window_def->frameOptions & FRAMEOPTION_END_OFFSET_FOLLOWING) { Assert(window_def->endOffset != NULL); deparseExpr(str, window_def->endOffset); appendStringInfoString(str, " FOLLOWING "); } } if (window_def->frameOptions & FRAMEOPTION_EXCLUDE_CURRENT_ROW) appendStringInfoString(str, "EXCLUDE CURRENT ROW "); else if (window_def->frameOptions & FRAMEOPTION_EXCLUDE_GROUP) appendStringInfoString(str, "EXCLUDE GROUP "); else if (window_def->frameOptions & FRAMEOPTION_EXCLUDE_TIES) appendStringInfoString(str, "EXCLUDE TIES "); } removeTrailingSpace(str); appendStringInfoChar(str, ')'); } static void deparseColumnRef(StringInfo str, ColumnRef* column_ref) { Assert(list_length(column_ref->fields) >= 1); if (IsA(linitial(column_ref->fields), A_Star)) deparseAStar(str, castNode(A_Star, linitial(column_ref->fields))); else if (IsA(linitial(column_ref->fields), String)) deparseColLabel(str, strVal(linitial(column_ref->fields))); deparseOptIndirection(str, column_ref->fields, 1); } static void deparseSubLink(StringInfo str, SubLink* sub_link) { switch (sub_link->subLinkType) { case EXISTS_SUBLINK: appendStringInfoString(str, "EXISTS ("); deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); appendStringInfoChar(str, ')'); return; case ALL_SUBLINK: deparseExpr(str, sub_link->testexpr); appendStringInfoChar(str, ' '); deparseSubqueryOp(str, sub_link->operName); appendStringInfoString(str, " ALL ("); deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); appendStringInfoChar(str, ')'); return; case ANY_SUBLINK: deparseExpr(str, sub_link->testexpr); if (list_length(sub_link->operName) > 0) { appendStringInfoChar(str, ' '); deparseSubqueryOp(str, sub_link->operName); appendStringInfoString(str, " ANY "); } else { appendStringInfoString(str, " IN "); } appendStringInfoChar(str, '('); deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); appendStringInfoChar(str, ')'); return; case ROWCOMPARE_SUBLINK: // Not present in raw parse trees Assert(false); return; case EXPR_SUBLINK: appendStringInfoString(str, "("); deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); appendStringInfoChar(str, ')'); return; case MULTIEXPR_SUBLINK: // Not present in raw parse trees Assert(false); return; case ARRAY_SUBLINK: appendStringInfoString(str, "ARRAY("); deparseSelectStmt(str, castNode(SelectStmt, sub_link->subselect)); appendStringInfoChar(str, ')'); return; case CTE_SUBLINK: /* for SubPlans only */ // Not present in raw parse trees Assert(false); return; } } static void deparseAExpr(StringInfo str, A_Expr* a_expr, DeparseNodeContext context) { ListCell *lc; char *name; bool need_lexpr_parens = a_expr->lexpr != NULL && (IsA(a_expr->lexpr, BoolExpr) || IsA(a_expr->lexpr, NullTest) || IsA(a_expr->lexpr, A_Expr)); bool need_rexpr_parens = a_expr->rexpr != NULL && (IsA(a_expr->rexpr, BoolExpr) || IsA(a_expr->rexpr, NullTest) || IsA(a_expr->rexpr, A_Expr)); switch (a_expr->kind) { case AEXPR_OP: /* normal operator */ { bool need_outer_parens = context == DEPARSE_NODE_CONTEXT_A_EXPR; if (need_outer_parens) appendStringInfoChar(str, '('); if (a_expr->lexpr != NULL) { if (need_lexpr_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_expr->lexpr); if (need_lexpr_parens) appendStringInfoChar(str, ')'); appendStringInfoChar(str, ' '); } deparseQualOp(str, a_expr->name); if (a_expr->rexpr != NULL) { appendStringInfoChar(str, ' '); if (need_rexpr_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_expr->rexpr); if (need_rexpr_parens) appendStringInfoChar(str, ')'); } if (need_outer_parens) appendStringInfoChar(str, ')'); } return; case AEXPR_OP_ANY: /* scalar op ANY (array) */ deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); deparseSubqueryOp(str, a_expr->name); appendStringInfoString(str, " ANY("); deparseExpr(str, a_expr->rexpr); appendStringInfoChar(str, ')'); return; case AEXPR_OP_ALL: /* scalar op ALL (array) */ deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); deparseSubqueryOp(str, a_expr->name); appendStringInfoString(str, " ALL("); deparseExpr(str, a_expr->rexpr); appendStringInfoChar(str, ')'); return; case AEXPR_DISTINCT: /* IS DISTINCT FROM - name must be "=" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(strcmp(strVal(linitial(a_expr->name)), "=") == 0); if (need_lexpr_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_expr->lexpr); if (need_lexpr_parens) appendStringInfoChar(str, ')'); appendStringInfoString(str, " IS DISTINCT FROM "); if (need_rexpr_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_expr->rexpr); if (need_rexpr_parens) appendStringInfoChar(str, ')'); return; case AEXPR_NOT_DISTINCT: /* IS NOT DISTINCT FROM - name must be "=" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(strcmp(strVal(linitial(a_expr->name)), "=") == 0); deparseExpr(str, a_expr->lexpr); appendStringInfoString(str, " IS NOT DISTINCT FROM "); deparseExpr(str, a_expr->rexpr); return; case AEXPR_NULLIF: /* NULLIF - name must be "=" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(strcmp(strVal(linitial(a_expr->name)), "=") == 0); appendStringInfoString(str, "NULLIF("); deparseExpr(str, a_expr->lexpr); appendStringInfoString(str, ", "); deparseExpr(str, a_expr->rexpr); appendStringInfoChar(str, ')'); return; case AEXPR_OF: /* IS [NOT] OF - name must be "=" or "<>" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(IsA(a_expr->rexpr, List)); deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); name = ((Value *) linitial(a_expr->name))->val.str; if (strcmp(name, "=") == 0) { appendStringInfoString(str, "IS OF "); } else if (strcmp(name, "<>") == 0) { appendStringInfoString(str, "IS NOT OF "); } else { Assert(false); } appendStringInfoChar(str, '('); deparseTypeList(str, castNode(List, a_expr->rexpr)); appendStringInfoChar(str, ')'); return; case AEXPR_IN: /* [NOT] IN - name must be "=" or "<>" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(IsA(a_expr->rexpr, List)); deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); name = ((Value *) linitial(a_expr->name))->val.str; if (strcmp(name, "=") == 0) { appendStringInfoString(str, "IN "); } else if (strcmp(name, "<>") == 0) { appendStringInfoString(str, "NOT IN "); } else { Assert(false); } appendStringInfoChar(str, '('); if (IsA(a_expr->rexpr, SubLink)) deparseSubLink(str, castNode(SubLink, a_expr->rexpr)); else deparseExprList(str, castNode(List, a_expr->rexpr)); appendStringInfoChar(str, ')'); return; case AEXPR_LIKE: /* [NOT] LIKE - name must be "~~" or "!~~" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); name = ((Value *) linitial(a_expr->name))->val.str; if (strcmp(name, "~~") == 0) { appendStringInfoString(str, "LIKE "); } else if (strcmp(name, "!~~") == 0) { appendStringInfoString(str, "NOT LIKE "); } else { Assert(false); } deparseExpr(str, a_expr->rexpr); return; case AEXPR_ILIKE: /* [NOT] ILIKE - name must be "~~*" or "!~~*" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); name = ((Value *) linitial(a_expr->name))->val.str; if (strcmp(name, "~~*") == 0) { appendStringInfoString(str, "ILIKE "); } else if (strcmp(name, "!~~*") == 0) { appendStringInfoString(str, "NOT ILIKE "); } else { Assert(false); } deparseExpr(str, a_expr->rexpr); return; case AEXPR_SIMILAR: /* [NOT] SIMILAR - name must be "~" or "!~" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); name = ((Value *) linitial(a_expr->name))->val.str; if (strcmp(name, "~") == 0) { appendStringInfoString(str, "SIMILAR TO "); } else if (strcmp(name, "!~") == 0) { appendStringInfoString(str, "NOT SIMILAR TO "); } else { Assert(false); } FuncCall *n = castNode(FuncCall, a_expr->rexpr); Assert(list_length(n->funcname) == 2); Assert(strcmp(strVal(linitial(n->funcname)), "pg_catalog") == 0); Assert(strcmp(strVal(lsecond(n->funcname)), "similar_to_escape") == 0); Assert(list_length(n->args) == 1 || list_length(n->args) == 2); deparseExpr(str, linitial(n->args)); if (list_length(n->args) == 2) { appendStringInfoString(str, " ESCAPE "); deparseExpr(str, lsecond(n->args)); } return; case AEXPR_BETWEEN: /* name must be "BETWEEN" */ case AEXPR_NOT_BETWEEN: /* name must be "NOT BETWEEN" */ case AEXPR_BETWEEN_SYM: /* name must be "BETWEEN SYMMETRIC" */ case AEXPR_NOT_BETWEEN_SYM: /* name must be "NOT BETWEEN SYMMETRIC" */ Assert(list_length(a_expr->name) == 1); Assert(IsA(linitial(a_expr->name), String)); Assert(IsA(a_expr->rexpr, List)); deparseExpr(str, a_expr->lexpr); appendStringInfoChar(str, ' '); appendStringInfoString(str, strVal(linitial(a_expr->name))); appendStringInfoChar(str, ' '); foreach(lc, castNode(List, a_expr->rexpr)) { deparseExpr(str, lfirst(lc)); if (lnext(castNode(List, a_expr->rexpr), lc)) appendStringInfoString(str, " AND "); } return; case AEXPR_PAREN: /* nameless dummy node for parentheses */ // Not present in parse trees when operator_precedence_warning is turned off Assert(false); return; } } static void deparseBoolExpr(StringInfo str, BoolExpr *bool_expr) { const ListCell *lc = NULL; switch (bool_expr->boolop) { case AND_EXPR: foreach(lc, bool_expr->args) { // Put parantheses around AND + OR nodes that are inside bool need_parens = IsA(lfirst(lc), BoolExpr) && (castNode(BoolExpr, lfirst(lc))->boolop == AND_EXPR || castNode(BoolExpr, lfirst(lc))->boolop == OR_EXPR); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, lfirst(lc)); if (need_parens) appendStringInfoChar(str, ')'); if (lnext(bool_expr->args, lc)) appendStringInfoString(str, " AND "); } return; case OR_EXPR: foreach(lc, bool_expr->args) { // Put parantheses around AND + OR nodes that are inside bool need_parens = IsA(lfirst(lc), BoolExpr) && (castNode(BoolExpr, lfirst(lc))->boolop == AND_EXPR || castNode(BoolExpr, lfirst(lc))->boolop == OR_EXPR); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, lfirst(lc)); if (need_parens) appendStringInfoChar(str, ')'); if (lnext(bool_expr->args, lc)) appendStringInfoString(str, " OR "); } return; case NOT_EXPR: Assert(list_length(bool_expr->args) == 1); bool need_parens = IsA(linitial(bool_expr->args), BoolExpr) && (castNode(BoolExpr, linitial(bool_expr->args))->boolop == AND_EXPR || castNode(BoolExpr, linitial(bool_expr->args))->boolop == OR_EXPR); appendStringInfoString(str, "NOT "); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, linitial(bool_expr->args)); if (need_parens) appendStringInfoChar(str, ')'); return; } } static void deparseAStar(StringInfo str, A_Star *a_star) { appendStringInfoChar(str, '*'); } static void deparseCollateClause(StringInfo str, CollateClause* collate_clause) { ListCell *lc; if (collate_clause->arg != NULL) { bool need_parens = IsA(collate_clause->arg, A_Expr); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, collate_clause->arg); if (need_parens) appendStringInfoChar(str, ')'); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "COLLATE "); deparseAnyName(str, collate_clause->collname); } static void deparseSortBy(StringInfo str, SortBy* sort_by) { deparseExpr(str, sort_by->node); appendStringInfoChar(str, ' '); switch (sort_by->sortby_dir) { case SORTBY_DEFAULT: break; case SORTBY_ASC: appendStringInfoString(str, "ASC "); break; case SORTBY_DESC: appendStringInfoString(str, "DESC "); break; case SORTBY_USING: appendStringInfoString(str, "USING "); deparseQualOp(str, sort_by->useOp); break; } switch (sort_by->sortby_nulls) { case SORTBY_NULLS_DEFAULT: break; case SORTBY_NULLS_FIRST: appendStringInfoString(str, "NULLS FIRST "); break; case SORTBY_NULLS_LAST: appendStringInfoString(str, "NULLS LAST "); break; } removeTrailingSpace(str); } static void deparseParamRef(StringInfo str, ParamRef* param_ref) { if (param_ref->number == 0) { appendStringInfoChar(str, '?'); } else { appendStringInfo(str, "$%d", param_ref->number); } } static void deparseSQLValueFunction(StringInfo str, SQLValueFunction* sql_value_function) { switch (sql_value_function->op) { case SVFOP_CURRENT_DATE: appendStringInfoString(str, "current_date"); break; case SVFOP_CURRENT_TIME: appendStringInfoString(str, "current_time"); break; case SVFOP_CURRENT_TIME_N: appendStringInfoString(str, "current_time"); // with precision break; case SVFOP_CURRENT_TIMESTAMP: appendStringInfoString(str, "current_timestamp"); break; case SVFOP_CURRENT_TIMESTAMP_N: appendStringInfoString(str, "current_timestamp"); // with precision break; case SVFOP_LOCALTIME: appendStringInfoString(str, "localtime"); break; case SVFOP_LOCALTIME_N: appendStringInfoString(str, "localtime"); // with precision break; case SVFOP_LOCALTIMESTAMP: appendStringInfoString(str, "localtimestamp"); break; case SVFOP_LOCALTIMESTAMP_N: appendStringInfoString(str, "localtimestamp"); // with precision break; case SVFOP_CURRENT_ROLE: appendStringInfoString(str, "current_role"); break; case SVFOP_CURRENT_USER: appendStringInfoString(str, "current_user"); break; case SVFOP_USER: appendStringInfoString(str, "user"); break; case SVFOP_SESSION_USER: appendStringInfoString(str, "session_user"); break; case SVFOP_CURRENT_CATALOG: appendStringInfoString(str, "current_catalog"); break; case SVFOP_CURRENT_SCHEMA: appendStringInfoString(str, "current_schema"); break; } if (sql_value_function->typmod != -1) { appendStringInfo(str, "(%d)", sql_value_function->typmod); } } static void deparseWithClause(StringInfo str, WithClause *with_clause) { ListCell *lc; appendStringInfoString(str, "WITH "); if (with_clause->recursive) appendStringInfoString(str, "RECURSIVE "); foreach(lc, with_clause->ctes) { deparseCommonTableExpr(str, castNode(CommonTableExpr, lfirst(lc))); if (lnext(with_clause->ctes, lc)) appendStringInfoString(str, ", "); } removeTrailingSpace(str); } static void deparseJoinExpr(StringInfo str, JoinExpr *join_expr) { ListCell *lc; bool need_alias_parens = join_expr->alias != NULL; bool need_rarg_parens = IsA(join_expr->rarg, JoinExpr) && castNode(JoinExpr, join_expr->rarg)->alias == NULL; if (need_alias_parens) appendStringInfoChar(str, '('); deparseTableRef(str, join_expr->larg); appendStringInfoChar(str, ' '); if (join_expr->isNatural) appendStringInfoString(str, "NATURAL "); switch (join_expr->jointype) { case JOIN_INNER: /* matching tuple pairs only */ if (!join_expr->isNatural && join_expr->quals == NULL && list_length(join_expr->usingClause) == 0) appendStringInfoString(str, "CROSS "); break; case JOIN_LEFT: /* pairs + unmatched LHS tuples */ appendStringInfoString(str, "LEFT "); break; case JOIN_FULL: /* pairs + unmatched LHS + unmatched RHS */ appendStringInfoString(str, "FULL "); break; case JOIN_RIGHT: /* pairs + unmatched RHS tuples */ appendStringInfoString(str, "RIGHT "); break; case JOIN_SEMI: case JOIN_ANTI: case JOIN_UNIQUE_OUTER: case JOIN_UNIQUE_INNER: // Only used by the planner/executor, not seen in parser output Assert(false); break; } appendStringInfoString(str, "JOIN "); if (need_rarg_parens) appendStringInfoChar(str, '('); deparseTableRef(str, join_expr->rarg); if (need_rarg_parens) appendStringInfoChar(str, ')'); appendStringInfoChar(str, ' '); if (join_expr->quals != NULL) { appendStringInfoString(str, "ON "); deparseExpr(str, join_expr->quals); appendStringInfoChar(str, ' '); } if (list_length(join_expr->usingClause) > 0) { appendStringInfoString(str, "USING ("); deparseNameList(str, join_expr->usingClause); appendStringInfoString(str, ") "); } if (need_alias_parens) appendStringInfoString(str, ") "); if (join_expr->alias != NULL) deparseAlias(str, join_expr->alias); removeTrailingSpace(str); } static void deparseCommonTableExpr(StringInfo str, CommonTableExpr *cte) { deparseColId(str, cte->ctename); if (list_length(cte->aliascolnames) > 0) { appendStringInfoChar(str, '('); deparseNameList(str, cte->aliascolnames); appendStringInfoChar(str, ')'); } appendStringInfoChar(str, ' '); appendStringInfoString(str, "AS "); switch (cte->ctematerialized) { case CTEMaterializeDefault: /* no option specified */ break; case CTEMaterializeAlways: appendStringInfoString(str, "MATERIALIZED "); break; case CTEMaterializeNever: appendStringInfoString(str, "NOT MATERIALIZED "); break; } appendStringInfoChar(str, '('); deparsePreparableStmt(str, cte->ctequery); appendStringInfoChar(str, ')'); } static void deparseRangeSubselect(StringInfo str, RangeSubselect *range_subselect) { if (range_subselect->lateral) appendStringInfoString(str, "LATERAL "); appendStringInfoChar(str, '('); deparseSelectStmt(str, castNode(SelectStmt, range_subselect->subquery)); appendStringInfoChar(str, ')'); if (range_subselect->alias != NULL) { appendStringInfoChar(str, ' '); deparseAlias(str, range_subselect->alias); } } static void deparseRangeFunction(StringInfo str, RangeFunction *range_func) { ListCell *lc; ListCell *lc2; if (range_func->lateral) appendStringInfoString(str, "LATERAL "); if (range_func->is_rowsfrom) { appendStringInfoString(str, "ROWS FROM "); appendStringInfoChar(str, '('); foreach(lc, range_func->functions) { List *lfunc = castNode(List, lfirst(lc)); Assert(list_length(lfunc) == 2); deparseFuncExprWindowless(str, linitial(lfunc)); appendStringInfoChar(str, ' '); List *coldeflist = castNode(List, lsecond(lfunc)); if (list_length(coldeflist) > 0) { appendStringInfoString(str, "AS ("); foreach(lc2, coldeflist) { deparseColumnDef(str, castNode(ColumnDef, lfirst(lc2))); if (lnext(coldeflist, lc2)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } if (lnext(range_func->functions, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } else { Assert(list_length(linitial(range_func->functions)) == 2); deparseFuncExprWindowless(str, linitial(linitial(range_func->functions))); } appendStringInfoChar(str, ' '); if (range_func->ordinality) appendStringInfoString(str, "WITH ORDINALITY "); if (range_func->alias != NULL) { deparseAlias(str, range_func->alias); appendStringInfoChar(str, ' '); } if (list_length(range_func->coldeflist) > 0) { if (range_func->alias == NULL) appendStringInfoString(str, "AS "); appendStringInfoChar(str, '('); foreach(lc, range_func->coldeflist) { deparseColumnDef(str, castNode(ColumnDef, lfirst(lc))); if (lnext(range_func->coldeflist, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } removeTrailingSpace(str); } static void deparseAArrayExpr(StringInfo str, A_ArrayExpr *array_expr) { ListCell *lc; appendStringInfoString(str, "ARRAY["); deparseExprList(str, array_expr->elements); appendStringInfoChar(str, ']'); } static void deparseRowExpr(StringInfo str, RowExpr *row_expr) { ListCell *lc; switch (row_expr->row_format) { case COERCE_EXPLICIT_CALL: appendStringInfoString(str, "ROW"); break; case COERCE_EXPLICIT_CAST: // Not present in raw parser output Assert(false); break; case COERCE_IMPLICIT_CAST: // No prefix break; } appendStringInfoString(str, "("); deparseExprList(str, row_expr->args); appendStringInfoChar(str, ')'); } static void deparseTypeCast(StringInfo str, TypeCast *type_cast) { bool need_parens = false; Assert(type_cast->typeName != NULL); if (IsA(type_cast->arg, A_Expr)) { appendStringInfoString(str, "CAST("); deparseExpr(str, type_cast->arg); appendStringInfoString(str, " AS "); deparseTypeName(str, type_cast->typeName); appendStringInfoChar(str, ')'); return; } if (IsA(type_cast->arg, A_Const)) { A_Const *a_const = castNode(A_Const, type_cast->arg); if (list_length(type_cast->typeName->names) == 2 && strcmp(strVal(linitial(type_cast->typeName->names)), "pg_catalog") == 0) { char *typename = strVal(lsecond(type_cast->typeName->names)); if (strcmp(typename, "bpchar") == 0 && type_cast->typeName->typmods == NULL) { appendStringInfoString(str, "char "); deparseAConst(str, a_const); return; } else if (strcmp(typename, "bool") == 0 && IsA(&a_const->val, String)) { /* * Handle "bool" or "false" in the statement, which is represented as a typecast * (other boolean casts should be represented as a cast, i.e. don't need special handling) */ char *const_val = strVal(&a_const->val); if (strcmp(const_val, "t") == 0) { appendStringInfoString(str, "true"); return; } if (strcmp(const_val, "f") == 0) { appendStringInfoString(str, "false"); return; } } } // Ensure negative values have wrapping parentheses if (IsA(&a_const->val, Float) || (IsA(&a_const->val, Integer) && intVal(&a_const->val) < 0)) { need_parens = true; } } if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, type_cast->arg); if (need_parens) appendStringInfoChar(str, ')'); appendStringInfoString(str, "::"); deparseTypeName(str, type_cast->typeName); } static void deparseTypeName(StringInfo str, TypeName *type_name) { ListCell *lc; bool skip_typmods = false; if (type_name->setof) appendStringInfoString(str, "SETOF "); if (list_length(type_name->names) == 2 && strcmp(strVal(linitial(type_name->names)), "pg_catalog") == 0) { const char *name = strVal(lsecond(type_name->names)); if (strcmp(name, "bpchar") == 0) { appendStringInfoString(str, "char"); } else if (strcmp(name, "varchar") == 0) { appendStringInfoString(str, "varchar"); } else if (strcmp(name, "numeric") == 0) { appendStringInfoString(str, "numeric"); } else if (strcmp(name, "bool") == 0) { appendStringInfoString(str, "boolean"); } else if (strcmp(name, "int2") == 0) { appendStringInfoString(str, "smallint"); } else if (strcmp(name, "int4") == 0) { appendStringInfoString(str, "int"); } else if (strcmp(name, "int8") == 0) { appendStringInfoString(str, "bigint"); } else if (strcmp(name, "real") == 0 || strcmp(name, "float4") == 0) { appendStringInfoString(str, "real"); } else if (strcmp(name, "float8") == 0) { appendStringInfoString(str, "double precision"); } else if (strcmp(name, "time") == 0) { appendStringInfoString(str, "time"); } else if (strcmp(name, "timetz") == 0) { appendStringInfoString(str, "time "); if (list_length(type_name->typmods) > 0) { appendStringInfoChar(str, '('); foreach(lc, type_name->typmods) { deparseSignedIconst(str, (Node *) &castNode(A_Const, lfirst(lc))->val); if (lnext(type_name->typmods, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); } appendStringInfoString(str, "with time zone"); skip_typmods = true; } else if (strcmp(name, "timestamp") == 0) { appendStringInfoString(str, "timestamp"); } else if (strcmp(name, "timestamptz") == 0) { appendStringInfoString(str, "timestamp "); if (list_length(type_name->typmods) > 0) { appendStringInfoChar(str, '('); foreach(lc, type_name->typmods) { deparseSignedIconst(str, (Node *) &castNode(A_Const, lfirst(lc))->val); if (lnext(type_name->typmods, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); } appendStringInfoString(str, "with time zone"); skip_typmods = true; } else if (strcmp(name, "interval") == 0 && list_length(type_name->typmods) == 0) { appendStringInfoString(str, "interval"); } else if (strcmp(name, "interval") == 0 && list_length(type_name->typmods) >= 1) { Assert(IsA(linitial(type_name->typmods), A_Const)); Assert(IsA(&castNode(A_Const, linitial(type_name->typmods))->val, Integer)); int fields = intVal(&castNode(A_Const, linitial(type_name->typmods))->val); appendStringInfoString(str, "interval"); // This logic is based on intervaltypmodout in timestamp.c switch (fields) { case INTERVAL_MASK(YEAR): appendStringInfoString(str, " year"); break; case INTERVAL_MASK(MONTH): appendStringInfoString(str, " month"); break; case INTERVAL_MASK(DAY): appendStringInfoString(str, " day"); break; case INTERVAL_MASK(HOUR): appendStringInfoString(str, " hour"); break; case INTERVAL_MASK(MINUTE): appendStringInfoString(str, " minute"); break; case INTERVAL_MASK(SECOND): appendStringInfoString(str, " second"); break; case INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH): appendStringInfoString(str, " year to month"); break; case INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR): appendStringInfoString(str, " day to hour"); break; case INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE): appendStringInfoString(str, " day to minute"); break; case INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND): appendStringInfoString(str, " day to second"); break; case INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE): appendStringInfoString(str, " hour to minute"); break; case INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND): appendStringInfoString(str, " hour to second"); break; case INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND): appendStringInfoString(str, " minute to second"); break; case INTERVAL_FULL_RANGE: // Nothing break; default: Assert(false); break; } if (list_length(type_name->typmods) == 2) { int precision = intVal(&castNode(A_Const, lsecond(type_name->typmods))->val); if (precision != INTERVAL_FULL_PRECISION) appendStringInfo(str, "(%d)", precision); } skip_typmods = true; } else { appendStringInfoString(str, "pg_catalog."); appendStringInfoString(str, name); } } else { deparseAnyName(str, type_name->names); } if (list_length(type_name->typmods) > 0 && !skip_typmods) { appendStringInfoChar(str, '('); foreach(lc, type_name->typmods) { if (IsA(lfirst(lc), A_Const)) deparseAConst(str, lfirst(lc)); else if (IsA(lfirst(lc), ParamRef)) deparseParamRef(str, lfirst(lc)); else if (IsA(lfirst(lc), ColumnRef)) deparseColumnRef(str, lfirst(lc)); else Assert(false); if (lnext(type_name->typmods, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } foreach(lc, type_name->arrayBounds) { appendStringInfoChar(str, '['); if (IsA(lfirst(lc), Integer) && intVal(lfirst(lc)) != -1) deparseSignedIconst(str, lfirst(lc)); appendStringInfoChar(str, ']'); } if (type_name->pct_type) appendStringInfoString(str, "%type"); } static void deparseNullTest(StringInfo str, NullTest *null_test) { // argisrow is always false in raw parser output Assert(null_test->argisrow == false); deparseExpr(str, (Node *) null_test->arg); switch (null_test->nulltesttype) { case IS_NULL: appendStringInfoString(str, " IS NULL"); break; case IS_NOT_NULL: appendStringInfoString(str, " IS NOT NULL"); break; } } static void deparseCaseExpr(StringInfo str, CaseExpr *case_expr) { ListCell *lc; appendStringInfoString(str, "CASE "); if (case_expr->arg != NULL) { deparseExpr(str, (Node *) case_expr->arg); appendStringInfoChar(str, ' '); } foreach(lc, case_expr->args) { deparseCaseWhen(str, castNode(CaseWhen, lfirst(lc))); appendStringInfoChar(str, ' '); } if (case_expr->defresult != NULL) { appendStringInfoString(str, "ELSE "); deparseExpr(str, (Node *) case_expr->defresult); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "END"); } static void deparseCaseWhen(StringInfo str, CaseWhen *case_when) { appendStringInfoString(str, "WHEN "); deparseExpr(str, (Node *) case_when->expr); appendStringInfoString(str, " THEN "); deparseExpr(str, (Node *) case_when->result); } static void deparseAIndirection(StringInfo str, A_Indirection *a_indirection) { ListCell *lc; bool need_parens = IsA(a_indirection->arg, A_Indirection) || IsA(a_indirection->arg, FuncCall) || IsA(a_indirection->arg, A_Expr) || IsA(a_indirection->arg, TypeCast) || IsA(a_indirection->arg, RowExpr) || (IsA(a_indirection->arg, ColumnRef) && !IsA(linitial(a_indirection->indirection), A_Indices)); if (need_parens) appendStringInfoChar(str, '('); deparseExpr(str, a_indirection->arg); if (need_parens) appendStringInfoChar(str, ')'); deparseOptIndirection(str, a_indirection->indirection, 0); } static void deparseAIndices(StringInfo str, A_Indices *a_indices) { appendStringInfoChar(str, '['); if (a_indices->lidx != NULL) deparseExpr(str, a_indices->lidx); if (a_indices->is_slice) appendStringInfoChar(str, ':'); if (a_indices->uidx != NULL) deparseExpr(str, a_indices->uidx); appendStringInfoChar(str, ']'); } static void deparseCoalesceExpr(StringInfo str, CoalesceExpr *coalesce_expr) { appendStringInfoString(str, "COALESCE("); deparseExprList(str, coalesce_expr->args); appendStringInfoChar(str, ')'); } static void deparseMinMaxExpr(StringInfo str, MinMaxExpr *min_max_expr) { switch (min_max_expr->op) { case IS_GREATEST: appendStringInfoString(str, "GREATEST("); break; case IS_LEAST: appendStringInfoString(str, "LEAST("); break; } deparseExprList(str, min_max_expr->args); appendStringInfoChar(str, ')'); } static void deparseBooleanTest(StringInfo str, BooleanTest *boolean_test) { deparseExpr(str, (Node *) boolean_test->arg); switch (boolean_test->booltesttype) { case IS_TRUE: appendStringInfoString(str, " IS TRUE"); break; case IS_NOT_TRUE: appendStringInfoString(str, " IS NOT TRUE"); break; case IS_FALSE: appendStringInfoString(str, " IS FALSE"); break; case IS_NOT_FALSE: appendStringInfoString(str, " IS NOT FALSE"); break; case IS_UNKNOWN: appendStringInfoString(str, " IS UNKNOWN"); break; case IS_NOT_UNKNOWN: appendStringInfoString(str, " IS NOT UNKNOWN"); break; default: Assert(false); } } static void deparseColumnDef(StringInfo str, ColumnDef *column_def) { ListCell *lc; if (column_def->colname != NULL) { appendStringInfoString(str, column_def->colname); appendStringInfoChar(str, ' '); } if (column_def->typeName != NULL) { deparseTypeName(str, column_def->typeName); appendStringInfoChar(str, ' '); } if (column_def->raw_default != NULL) { appendStringInfoString(str, "USING "); deparseExpr(str, column_def->raw_default); appendStringInfoChar(str, ' '); } if (column_def->fdwoptions != NULL) { deparseCreateGenericOptions(str, column_def->fdwoptions); appendStringInfoChar(str, ' '); } foreach(lc, column_def->constraints) { deparseConstraint(str, castNode(Constraint, lfirst(lc))); appendStringInfoChar(str, ' '); } if (column_def->collClause != NULL) { deparseCollateClause(str, column_def->collClause); } removeTrailingSpace(str); } static void deparseInsertStmt(StringInfo str, InsertStmt *insert_stmt) { ListCell *lc; ListCell *lc2; if (insert_stmt->withClause != NULL) { deparseWithClause(str, insert_stmt->withClause); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "INSERT INTO "); deparseRangeVar(str, insert_stmt->relation, DEPARSE_NODE_CONTEXT_INSERT_RELATION); appendStringInfoChar(str, ' '); if (list_length(insert_stmt->cols) > 0) { appendStringInfoChar(str, '('); deparseInsertColumnList(str, insert_stmt->cols); appendStringInfoString(str, ") "); } switch (insert_stmt->override) { case OVERRIDING_NOT_SET: // Do nothing break; case OVERRIDING_USER_VALUE: appendStringInfoString(str, "OVERRIDING USER VALUE "); break; case OVERRIDING_SYSTEM_VALUE: appendStringInfoString(str, "OVERRIDING SYSTEM VALUE "); break; } if (insert_stmt->selectStmt != NULL) { deparseSelectStmt(str, castNode(SelectStmt, insert_stmt->selectStmt)); appendStringInfoChar(str, ' '); } else { appendStringInfoString(str, "DEFAULT VALUES "); } if (insert_stmt->onConflictClause != NULL) { deparseOnConflictClause(str, insert_stmt->onConflictClause); appendStringInfoChar(str, ' '); } if (list_length(insert_stmt->returningList) > 0) { appendStringInfoString(str, "RETURNING "); deparseTargetList(str, insert_stmt->returningList); } removeTrailingSpace(str); } static void deparseInferClause(StringInfo str, InferClause *infer_clause) { ListCell *lc; if (list_length(infer_clause->indexElems) > 0) { appendStringInfoChar(str, '('); foreach(lc, infer_clause->indexElems) { deparseIndexElem(str, lfirst(lc)); if (lnext(infer_clause->indexElems, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); } if (infer_clause->conname != NULL) { appendStringInfoString(str, "ON CONSTRAINT "); appendStringInfoString(str, quote_identifier(infer_clause->conname)); appendStringInfoChar(str, ' '); } deparseWhereClause(str, infer_clause->whereClause); removeTrailingSpace(str); } static void deparseOnConflictClause(StringInfo str, OnConflictClause *on_conflict_clause) { ListCell *lc; appendStringInfoString(str, "ON CONFLICT "); if (on_conflict_clause->infer != NULL) { deparseInferClause(str, on_conflict_clause->infer); appendStringInfoChar(str, ' '); } switch (on_conflict_clause->action) { case ONCONFLICT_NONE: Assert(false); break; case ONCONFLICT_NOTHING: appendStringInfoString(str, "DO NOTHING "); break; case ONCONFLICT_UPDATE: appendStringInfoString(str, "DO UPDATE "); break; } if (list_length(on_conflict_clause->targetList) > 0) { appendStringInfoString(str, "SET "); deparseSetClauseList(str, on_conflict_clause->targetList); appendStringInfoChar(str, ' '); } deparseWhereClause(str, on_conflict_clause->whereClause); removeTrailingSpace(str); } static void deparseUpdateStmt(StringInfo str, UpdateStmt *update_stmt) { ListCell* lc; ListCell* lc2; ListCell* lc3; if (update_stmt->withClause != NULL) { deparseWithClause(str, update_stmt->withClause); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "UPDATE "); deparseRangeVar(str, update_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (list_length(update_stmt->targetList) > 0) { appendStringInfoString(str, "SET "); deparseSetClauseList(str, update_stmt->targetList); appendStringInfoChar(str, ' '); } deparseFromClause(str, update_stmt->fromClause); deparseWhereClause(str, update_stmt->whereClause); if (list_length(update_stmt->returningList) > 0) { appendStringInfoString(str, "RETURNING "); deparseTargetList(str, update_stmt->returningList); } removeTrailingSpace(str); } static void deparseDeleteStmt(StringInfo str, DeleteStmt *delete_stmt) { if (delete_stmt->withClause != NULL) { deparseWithClause(str, delete_stmt->withClause); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "DELETE FROM "); deparseRangeVar(str, delete_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (delete_stmt->usingClause != NULL) { appendStringInfoString(str, "USING "); deparseFromList(str, delete_stmt->usingClause); appendStringInfoChar(str, ' '); } deparseWhereClause(str, delete_stmt->whereClause); if (list_length(delete_stmt->returningList) > 0) { appendStringInfoString(str, "RETURNING "); deparseTargetList(str, delete_stmt->returningList); } removeTrailingSpace(str); } static void deparseLockingClause(StringInfo str, LockingClause *locking_clause) { ListCell *lc; switch (locking_clause->strength) { case LCS_NONE: /* no such clause - only used in PlanRowMark */ Assert(false); break; case LCS_FORKEYSHARE: appendStringInfoString(str, "FOR KEY SHARE "); break; case LCS_FORSHARE: appendStringInfoString(str, "FOR SHARE "); break; case LCS_FORNOKEYUPDATE: appendStringInfoString(str, "FOR NO KEY UPDATE "); break; case LCS_FORUPDATE: appendStringInfoString(str, "FOR UPDATE "); break; } if (list_length(locking_clause->lockedRels) > 0) { appendStringInfoString(str, "OF "); deparseQualifiedNameList(str, locking_clause->lockedRels); } switch (locking_clause->waitPolicy) { case LockWaitError: appendStringInfoString(str, "NOWAIT"); break; case LockWaitSkip: appendStringInfoString(str, "SKIP LOCKED"); break; case LockWaitBlock: // Default break; } removeTrailingSpace(str); } static void deparseSetToDefault(StringInfo str, SetToDefault *set_to_default) { appendStringInfoString(str, "DEFAULT"); } static void deparseCreateCastStmt(StringInfo str, CreateCastStmt *create_cast_stmt) { ListCell *lc; ListCell *lc2; appendStringInfoString(str, "CREATE CAST ("); deparseTypeName(str, create_cast_stmt->sourcetype); appendStringInfoString(str, " AS "); deparseTypeName(str, create_cast_stmt->targettype); appendStringInfoString(str, ") "); if (create_cast_stmt->func != NULL) { appendStringInfoString(str, "WITH FUNCTION "); deparseFunctionWithArgtypes(str, create_cast_stmt->func); appendStringInfoChar(str, ' '); } else if (create_cast_stmt->inout) { appendStringInfoString(str, "WITH INOUT "); } else { appendStringInfoString(str, "WITHOUT FUNCTION "); } switch (create_cast_stmt->context) { case COERCION_IMPLICIT: appendStringInfoString(str, "AS IMPLICIT"); break; case COERCION_ASSIGNMENT: appendStringInfoString(str, "AS ASSIGNMENT"); break; case COERCION_EXPLICIT: // Default break; } } static void deparseCreateOpClassStmt(StringInfo str, CreateOpClassStmt *create_op_class_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "CREATE OPERATOR CLASS "); deparseAnyName(str, create_op_class_stmt->opclassname); appendStringInfoChar(str, ' '); if (create_op_class_stmt->isDefault) appendStringInfoString(str, "DEFAULT "); appendStringInfoString(str, "FOR TYPE "); deparseTypeName(str, create_op_class_stmt->datatype); appendStringInfoChar(str, ' '); appendStringInfoString(str, "USING "); appendStringInfoString(str, quote_identifier(create_op_class_stmt->amname)); appendStringInfoChar(str, ' '); if (create_op_class_stmt->opfamilyname != NULL) { appendStringInfoString(str, "FAMILY "); deparseAnyName(str, create_op_class_stmt->opfamilyname); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "AS "); deparseOpclassItemList(str, create_op_class_stmt->items); } static void deparseCreateOpFamilyStmt(StringInfo str, CreateOpFamilyStmt *create_op_family_stmt) { appendStringInfoString(str, "CREATE OPERATOR FAMILY "); deparseAnyName(str, create_op_family_stmt->opfamilyname); appendStringInfoChar(str, ' '); appendStringInfoString(str, "USING "); appendStringInfoString(str, quote_identifier(create_op_family_stmt->amname)); } static void deparseCreateOpClassItem(StringInfo str, CreateOpClassItem *create_op_class_item) { ListCell *lc = NULL; switch (create_op_class_item->itemtype) { case OPCLASS_ITEM_OPERATOR: appendStringInfoString(str, "OPERATOR "); appendStringInfo(str, "%d ", create_op_class_item->number); if (create_op_class_item->name != NULL) { if (create_op_class_item->name->objargs != NULL) deparseOperatorWithArgtypes(str, create_op_class_item->name); else deparseAnyOperator(str, create_op_class_item->name->objname); appendStringInfoChar(str, ' '); } if (create_op_class_item->order_family != NULL) { appendStringInfoString(str, "FOR ORDER BY "); deparseAnyName(str, create_op_class_item->order_family); } if (create_op_class_item->class_args != NULL) { appendStringInfoChar(str, '('); deparseTypeList(str, create_op_class_item->class_args); appendStringInfoChar(str, ')'); } removeTrailingSpace(str); break; case OPCLASS_ITEM_FUNCTION: appendStringInfoString(str, "FUNCTION "); appendStringInfo(str, "%d ", create_op_class_item->number); if (create_op_class_item->class_args != NULL) { appendStringInfoChar(str, '('); deparseTypeList(str, create_op_class_item->class_args); appendStringInfoString(str, ") "); } if (create_op_class_item->name != NULL) deparseFunctionWithArgtypes(str, create_op_class_item->name); removeTrailingSpace(str); break; case OPCLASS_ITEM_STORAGETYPE: appendStringInfoString(str, "STORAGE "); deparseTypeName(str, create_op_class_item->storedtype); break; default: Assert(false); } } static void deparseTableLikeClause(StringInfo str, TableLikeClause *table_like_clause) { appendStringInfoString(str, "LIKE "); deparseRangeVar(str, table_like_clause->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (table_like_clause->options == CREATE_TABLE_LIKE_ALL) appendStringInfoString(str, "INCLUDING ALL "); else { if (table_like_clause->options & CREATE_TABLE_LIKE_COMMENTS) appendStringInfoString(str, "INCLUDING COMMENTS "); if (table_like_clause->options & CREATE_TABLE_LIKE_CONSTRAINTS) appendStringInfoString(str, "INCLUDING CONSTRAINTS "); if (table_like_clause->options & CREATE_TABLE_LIKE_DEFAULTS) appendStringInfoString(str, "INCLUDING DEFAULTS "); if (table_like_clause->options & CREATE_TABLE_LIKE_IDENTITY) appendStringInfoString(str, "INCLUDING IDENTITY "); if (table_like_clause->options & CREATE_TABLE_LIKE_GENERATED) appendStringInfoString(str, "INCLUDING GENERATED "); if (table_like_clause->options & CREATE_TABLE_LIKE_INDEXES) appendStringInfoString(str, "INCLUDING INDEXES "); if (table_like_clause->options & CREATE_TABLE_LIKE_STATISTICS) appendStringInfoString(str, "INCLUDING STATISTICS "); if (table_like_clause->options & CREATE_TABLE_LIKE_STORAGE) appendStringInfoString(str, "INCLUDING STORAGE "); } removeTrailingSpace(str); } static void deparseCreateDomainStmt(StringInfo str, CreateDomainStmt *create_domain_stmt) { ListCell *lc; Assert(create_domain_stmt->typeName != NULL); appendStringInfoString(str, "CREATE DOMAIN "); deparseAnyName(str, create_domain_stmt->domainname); appendStringInfoString(str, " AS "); deparseTypeName(str, create_domain_stmt->typeName); appendStringInfoChar(str, ' '); if (create_domain_stmt->collClause != NULL) { deparseCollateClause(str, create_domain_stmt->collClause); appendStringInfoChar(str, ' '); } foreach(lc, create_domain_stmt->constraints) { deparseConstraint(str, castNode(Constraint, lfirst(lc))); appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseCreateExtensionStmt(StringInfo str, CreateExtensionStmt *create_extension_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "CREATE EXTENSION "); if (create_extension_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); deparseColId(str, create_extension_stmt->extname); appendStringInfoChar(str, ' '); foreach (lc, create_extension_stmt->options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "schema") == 0) { appendStringInfoString(str, "SCHEMA "); deparseColId(str, strVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "new_version") == 0) { appendStringInfoString(str, "VERSION "); deparseNonReservedWordOrSconst(str, strVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "cascade") == 0) { appendStringInfoString(str, "CASCADE"); } else { Assert(false); } appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseConstraint(StringInfo str, Constraint *constraint) { ListCell *lc; if (constraint->conname != NULL) { appendStringInfoString(str, "CONSTRAINT "); appendStringInfoString(str, constraint->conname); appendStringInfoChar(str, ' '); } switch (constraint->contype) { case CONSTR_NULL: appendStringInfoString(str, "NULL "); break; case CONSTR_NOTNULL: appendStringInfoString(str, "NOT NULL "); break; case CONSTR_DEFAULT: appendStringInfoString(str, "DEFAULT "); deparseExpr(str, constraint->raw_expr); break; case CONSTR_IDENTITY: appendStringInfoString(str, "GENERATED "); switch (constraint->generated_when) { case ATTRIBUTE_IDENTITY_ALWAYS: appendStringInfoString(str, "ALWAYS "); break; case ATTRIBUTE_IDENTITY_BY_DEFAULT: appendStringInfoString(str, "BY DEFAULT "); break; default: Assert(false); } appendStringInfoString(str, "AS IDENTITY "); deparseOptParenthesizedSeqOptList(str, constraint->options); break; case CONSTR_GENERATED: Assert(constraint->generated_when == ATTRIBUTE_IDENTITY_ALWAYS); appendStringInfoString(str, "GENERATED ALWAYS AS ("); deparseExpr(str, constraint->raw_expr); appendStringInfoString(str, ") STORED "); break; case CONSTR_CHECK: appendStringInfoString(str, "CHECK ("); deparseExpr(str, constraint->raw_expr); appendStringInfoString(str, ") "); break; case CONSTR_PRIMARY: appendStringInfoString(str, "PRIMARY KEY "); break; case CONSTR_UNIQUE: appendStringInfoString(str, "UNIQUE "); break; case CONSTR_EXCLUSION: appendStringInfoString(str, "EXCLUDE "); if (strcmp(constraint->access_method, DEFAULT_INDEX_TYPE) != 0) { appendStringInfoString(str, "USING "); appendStringInfoString(str, quote_identifier(constraint->access_method)); appendStringInfoChar(str, ' '); } appendStringInfoChar(str, '('); foreach(lc, constraint->exclusions) { List *exclusion = castNode(List, lfirst(lc)); Assert(list_length(exclusion) == 2); deparseIndexElem(str, castNode(IndexElem, linitial(exclusion))); appendStringInfoString(str, " WITH "); deparseAnyOperator(str, castNode(List, lsecond(exclusion))); if (lnext(constraint->exclusions, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); if (constraint->where_clause != NULL) { appendStringInfoString(str, "WHERE ("); deparseExpr(str, constraint->where_clause); appendStringInfoString(str, ") "); } break; case CONSTR_FOREIGN: if (list_length(constraint->fk_attrs) > 0) appendStringInfoString(str, "FOREIGN KEY "); break; case CONSTR_ATTR_DEFERRABLE: appendStringInfoString(str, "DEFERRABLE "); break; case CONSTR_ATTR_NOT_DEFERRABLE: appendStringInfoString(str, "NOT DEFERRABLE "); break; case CONSTR_ATTR_DEFERRED: appendStringInfoString(str, "INITIALLY DEFERRED "); break; case CONSTR_ATTR_IMMEDIATE: appendStringInfoString(str, "INITIALLY IMMEDIATE "); break; } if (list_length(constraint->keys) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, constraint->keys); appendStringInfoString(str, ") "); } if (list_length(constraint->fk_attrs) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, constraint->fk_attrs); appendStringInfoString(str, ") "); } if (constraint->pktable != NULL) { appendStringInfoString(str, "REFERENCES "); deparseRangeVar(str, constraint->pktable, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (list_length(constraint->pk_attrs) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, constraint->pk_attrs); appendStringInfoString(str, ") "); } } switch (constraint->fk_matchtype) { case FKCONSTR_MATCH_SIMPLE: // Default break; case FKCONSTR_MATCH_FULL: appendStringInfoString(str, "MATCH FULL "); break; case FKCONSTR_MATCH_PARTIAL: // Not implemented in Postgres Assert(false); break; default: // Not specified break; } switch (constraint->fk_upd_action) { case FKCONSTR_ACTION_NOACTION: // Default break; case FKCONSTR_ACTION_RESTRICT: appendStringInfoString(str, "ON UPDATE RESTRICT "); break; case FKCONSTR_ACTION_CASCADE: appendStringInfoString(str, "ON UPDATE CASCADE "); break; case FKCONSTR_ACTION_SETNULL: appendStringInfoString(str, "ON UPDATE SET NULL "); break; case FKCONSTR_ACTION_SETDEFAULT: appendStringInfoString(str, "ON UPDATE SET DEFAULT "); break; default: // Not specified break; } switch (constraint->fk_del_action) { case FKCONSTR_ACTION_NOACTION: // Default break; case FKCONSTR_ACTION_RESTRICT: appendStringInfoString(str, "ON DELETE RESTRICT "); break; case FKCONSTR_ACTION_CASCADE: appendStringInfoString(str, "ON DELETE CASCADE "); break; case FKCONSTR_ACTION_SETNULL: appendStringInfoString(str, "ON DELETE SET NULL "); break; case FKCONSTR_ACTION_SETDEFAULT: appendStringInfoString(str, "ON DELETE SET DEFAULT "); break; default: // Not specified break; } if (list_length(constraint->including) > 0) { appendStringInfoString(str, "INCLUDE ("); deparseColumnList(str, constraint->including); appendStringInfoString(str, ") "); } if (constraint->indexname != NULL) appendStringInfo(str, "USING INDEX %s ", quote_identifier(constraint->indexname)); if (constraint->indexspace != NULL) appendStringInfo(str, "USING INDEX TABLESPACE %s ", quote_identifier(constraint->indexspace)); if (constraint->deferrable) appendStringInfoString(str, "DEFERRABLE "); if (constraint->initdeferred) appendStringInfoString(str, "INITIALLY DEFERRED "); if (constraint->is_no_inherit) appendStringInfoString(str, "NO INHERIT "); if (constraint->skip_validation) appendStringInfoString(str, "NOT VALID "); removeTrailingSpace(str); } static void deparseCreateFunctionStmt(StringInfo str, CreateFunctionStmt *create_function_stmt) { ListCell *lc; bool tableFunc = false; appendStringInfoString(str, "CREATE "); if (create_function_stmt->replace) appendStringInfoString(str, "OR REPLACE "); if (create_function_stmt->is_procedure) appendStringInfoString(str, "PROCEDURE "); else appendStringInfoString(str, "FUNCTION "); deparseFuncName(str, create_function_stmt->funcname); appendStringInfoChar(str, '('); foreach(lc, create_function_stmt->parameters) { FunctionParameter *function_parameter = castNode(FunctionParameter, lfirst(lc)); if (function_parameter->mode != FUNC_PARAM_TABLE) { deparseFunctionParameter(str, function_parameter); if (lnext(create_function_stmt->parameters, lc) && castNode(FunctionParameter, lfirst(lnext(create_function_stmt->parameters, lc)))->mode != FUNC_PARAM_TABLE) appendStringInfoString(str, ", "); } else { tableFunc = true; } } appendStringInfoString(str, ") "); if (tableFunc) { appendStringInfoString(str, "RETURNS TABLE ("); foreach(lc, create_function_stmt->parameters) { FunctionParameter *function_parameter = castNode(FunctionParameter, lfirst(lc)); if (function_parameter->mode == FUNC_PARAM_TABLE) { deparseFunctionParameter(str, function_parameter); if (lnext(create_function_stmt->parameters, lc)) appendStringInfoString(str, ", "); } } appendStringInfoString(str, ") "); } else if (create_function_stmt->returnType != NULL) { appendStringInfoString(str, "RETURNS "); deparseTypeName(str, create_function_stmt->returnType); appendStringInfoChar(str, ' '); } foreach(lc, create_function_stmt->options) { deparseCreateFuncOptItem(str, castNode(DefElem, lfirst(lc))); appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseFunctionParameter(StringInfo str, FunctionParameter *function_parameter) { switch (function_parameter->mode) { case FUNC_PARAM_IN: /* input only */ // Default break; case FUNC_PARAM_OUT: /* output only */ appendStringInfoString(str, "OUT "); break; case FUNC_PARAM_INOUT: /* both */ appendStringInfoString(str, "INOUT "); break; case FUNC_PARAM_VARIADIC: /* variadic (always input) */ appendStringInfoString(str, "VARIADIC "); break; case FUNC_PARAM_TABLE: /* table function output column */ // No special annotation, the caller is expected to correctly put // this into the RETURNS part of the CREATE FUNCTION statement break; default: Assert(false); break; } if (function_parameter->name != NULL) { appendStringInfoString(str, function_parameter->name); appendStringInfoChar(str, ' '); } deparseTypeName(str, function_parameter->argType); appendStringInfoChar(str, ' '); if (function_parameter->defexpr != NULL) { appendStringInfoString(str, "= "); deparseExpr(str, function_parameter->defexpr); } removeTrailingSpace(str); } static void deparseCheckPointStmt(StringInfo str, CheckPointStmt *check_point_stmt) { appendStringInfoString(str, "CHECKPOINT"); } static void deparseCreateSchemaStmt(StringInfo str, CreateSchemaStmt *create_schema_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE SCHEMA "); if (create_schema_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); if (create_schema_stmt->schemaname) { deparseColId(str, create_schema_stmt->schemaname); appendStringInfoChar(str, ' '); } if (create_schema_stmt->authrole != NULL) { appendStringInfoString(str, "AUTHORIZATION "); deparseRoleSpec(str, create_schema_stmt->authrole); appendStringInfoChar(str, ' '); } foreach(lc, create_schema_stmt->schemaElts) { deparseSchemaStmt(str, lfirst(lc)); if (lnext(create_schema_stmt->schemaElts, lc)) appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseAlterRoleSetStmt(StringInfo str, AlterRoleSetStmt *alter_role_set_stmt) { appendStringInfoString(str, "ALTER ROLE "); if (alter_role_set_stmt->role == NULL) appendStringInfoString(str, "ALL"); else deparseRoleSpec(str, alter_role_set_stmt->role); appendStringInfoChar(str, ' '); if (alter_role_set_stmt->database != NULL) { appendStringInfoString(str, "IN DATABASE "); appendStringInfoString(str, quote_identifier(alter_role_set_stmt->database)); appendStringInfoChar(str, ' '); } deparseVariableSetStmt(str, alter_role_set_stmt->setstmt); } static void deparseCreateConversionStmt(StringInfo str, CreateConversionStmt *create_conversion_stmt) { appendStringInfoString(str, "CREATE "); if (create_conversion_stmt->def) appendStringInfoString(str, "DEFAULT "); appendStringInfoString(str, "CONVERSION "); deparseAnyName(str, create_conversion_stmt->conversion_name); appendStringInfoChar(str, ' '); appendStringInfoString(str, "FOR "); deparseStringLiteral(str, create_conversion_stmt->for_encoding_name); appendStringInfoString(str, " TO "); deparseStringLiteral(str, create_conversion_stmt->to_encoding_name); appendStringInfoString(str, "FROM "); deparseAnyName(str, create_conversion_stmt->func_name); } static void deparseRoleSpec(StringInfo str, RoleSpec *role_spec) { switch (role_spec->roletype) { case ROLESPEC_CSTRING: Assert(role_spec->rolename != NULL); appendStringInfoString(str, quote_identifier(role_spec->rolename)); break; case ROLESPEC_CURRENT_USER: appendStringInfoString(str, "CURRENT_USER"); break; case ROLESPEC_SESSION_USER: appendStringInfoString(str, "SESSION_USER"); break; case ROLESPEC_PUBLIC: appendStringInfoString(str, "public"); break; } } // "part_elem" in gram.y static void deparsePartitionElem(StringInfo str, PartitionElem *partition_elem) { ListCell *lc; if (partition_elem->name != NULL) { deparseColId(str, partition_elem->name); appendStringInfoChar(str, ' '); } else if (partition_elem->expr != NULL) { appendStringInfoChar(str, '('); deparseExpr(str, partition_elem->expr); appendStringInfoString(str, ") "); } deparseOptCollate(str, partition_elem->collation); deparseAnyName(str, partition_elem->opclass); removeTrailingSpace(str); } static void deparsePartitionSpec(StringInfo str, PartitionSpec *partition_spec) { ListCell *lc; appendStringInfoString(str, "PARTITION BY "); appendStringInfoString(str, partition_spec->strategy); appendStringInfoChar(str, '('); foreach(lc, partition_spec->partParams) { deparsePartitionElem(str, castNode(PartitionElem, lfirst(lc))); if (lnext(partition_spec->partParams, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } static void deparsePartitionBoundSpec(StringInfo str, PartitionBoundSpec *partition_bound_spec) { ListCell *lc; if (partition_bound_spec->is_default) { appendStringInfoString(str, "DEFAULT"); return; } appendStringInfoString(str, "FOR VALUES "); switch (partition_bound_spec->strategy) { case PARTITION_STRATEGY_HASH: appendStringInfo(str, "WITH (MODULUS %d, REMAINDER %d)", partition_bound_spec->modulus, partition_bound_spec->remainder); break; case PARTITION_STRATEGY_LIST: appendStringInfoString(str, "IN ("); deparseExprList(str, partition_bound_spec->listdatums); appendStringInfoChar(str, ')'); break; case PARTITION_STRATEGY_RANGE: appendStringInfoString(str, "FROM ("); deparseExprList(str, partition_bound_spec->lowerdatums); appendStringInfoString(str, ") TO ("); deparseExprList(str, partition_bound_spec->upperdatums); appendStringInfoChar(str, ')'); break; default: Assert(false); break; } } static void deparsePartitionCmd(StringInfo str, PartitionCmd *partition_cmd) { deparseRangeVar(str, partition_cmd->name, DEPARSE_NODE_CONTEXT_NONE); if (partition_cmd->bound != NULL) { appendStringInfoChar(str, ' '); deparsePartitionBoundSpec(str, partition_cmd->bound); } } // "TableElement" in gram.y static void deparseTableElement(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_ColumnDef: deparseColumnDef(str, castNode(ColumnDef, node)); break; case T_TableLikeClause: deparseTableLikeClause(str, castNode(TableLikeClause, node)); break; case T_Constraint: deparseConstraint(str, castNode(Constraint, node)); break; default: Assert(false); } } static void deparseCreateStmt(StringInfo str, CreateStmt *create_stmt, bool is_foreign_table) { ListCell *lc; appendStringInfoString(str, "CREATE "); if (is_foreign_table) appendStringInfoString(str, "FOREIGN "); deparseOptTemp(str, create_stmt->relation->relpersistence); appendStringInfoString(str, "TABLE "); if (create_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); deparseRangeVar(str, create_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (create_stmt->ofTypename != NULL) { appendStringInfoString(str, "OF "); deparseTypeName(str, create_stmt->ofTypename); appendStringInfoChar(str, ' '); } if (create_stmt->partbound != NULL) { Assert(list_length(create_stmt->inhRelations) == 1); appendStringInfoString(str, "PARTITION OF "); deparseRangeVar(str, castNode(RangeVar, linitial(create_stmt->inhRelations)), DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); } if (list_length(create_stmt->tableElts) > 0) { // In raw parse output tableElts contains both columns and constraints // (and the constraints field is NIL) appendStringInfoChar(str, '('); foreach(lc, create_stmt->tableElts) { deparseTableElement(str, lfirst(lc)); if (lnext(create_stmt->tableElts, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); } else if (create_stmt->partbound == NULL && create_stmt->ofTypename == NULL) { appendStringInfoString(str, "() "); } if (create_stmt->partbound != NULL) { deparsePartitionBoundSpec(str, create_stmt->partbound); appendStringInfoChar(str, ' '); } else { deparseOptInherit(str, create_stmt->inhRelations); } if (create_stmt->partspec != NULL) { deparsePartitionSpec(str, create_stmt->partspec); appendStringInfoChar(str, ' '); } if (create_stmt->accessMethod != NULL) { appendStringInfoString(str, "USING "); appendStringInfoString(str, quote_identifier(create_stmt->accessMethod)); } deparseOptWith(str, create_stmt->options); switch (create_stmt->oncommit) { case ONCOMMIT_NOOP: // No ON COMMIT clause break; case ONCOMMIT_PRESERVE_ROWS: appendStringInfoString(str, "ON COMMIT PRESERVE ROWS "); break; case ONCOMMIT_DELETE_ROWS: appendStringInfoString(str, "ON COMMIT DELETE ROWS "); break; case ONCOMMIT_DROP: appendStringInfoString(str, "ON COMMIT DROP "); break; } if (create_stmt->tablespacename != NULL) { appendStringInfoString(str, "TABLESPACE "); appendStringInfoString(str, quote_identifier(create_stmt->tablespacename)); } removeTrailingSpace(str); } static void deparseCreateFdwStmt(StringInfo str, CreateFdwStmt *create_fdw_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE FOREIGN DATA WRAPPER "); appendStringInfoString(str, quote_identifier(create_fdw_stmt->fdwname)); appendStringInfoChar(str, ' '); if (list_length(create_fdw_stmt->func_options) > 0) { deparseFdwOptions(str, create_fdw_stmt->func_options); appendStringInfoChar(str, ' '); } deparseCreateGenericOptions(str, create_fdw_stmt->options); removeTrailingSpace(str); } static void deparseAlterFdwStmt(StringInfo str, AlterFdwStmt *alter_fdw_stmt) { appendStringInfoString(str, "ALTER FOREIGN DATA WRAPPER "); appendStringInfoString(str, quote_identifier(alter_fdw_stmt->fdwname)); appendStringInfoChar(str, ' '); if (list_length(alter_fdw_stmt->func_options) > 0) { deparseFdwOptions(str, alter_fdw_stmt->func_options); appendStringInfoChar(str, ' '); } if (list_length(alter_fdw_stmt->options) > 0) deparseAlterGenericOptions(str, alter_fdw_stmt->options); removeTrailingSpace(str); } static void deparseCreateForeignServerStmt(StringInfo str, CreateForeignServerStmt *create_foreign_server_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE SERVER "); if (create_foreign_server_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); appendStringInfoString(str, quote_identifier(create_foreign_server_stmt->servername)); appendStringInfoChar(str, ' '); if (create_foreign_server_stmt->servertype != NULL) { appendStringInfoString(str, "TYPE "); deparseStringLiteral(str, create_foreign_server_stmt->servertype); appendStringInfoChar(str, ' '); } if (create_foreign_server_stmt->version != NULL) { appendStringInfoString(str, "VERSION "); deparseStringLiteral(str, create_foreign_server_stmt->version); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "FOREIGN DATA WRAPPER "); appendStringInfoString(str, quote_identifier(create_foreign_server_stmt->fdwname)); appendStringInfoChar(str, ' '); deparseCreateGenericOptions(str, create_foreign_server_stmt->options); removeTrailingSpace(str); } static void deparseAlterForeignServerStmt(StringInfo str, AlterForeignServerStmt *alter_foreign_server_stmt) { appendStringInfoString(str, "ALTER SERVER "); appendStringInfoString(str, quote_identifier(alter_foreign_server_stmt->servername)); appendStringInfoChar(str, ' '); if (alter_foreign_server_stmt->has_version) { appendStringInfoString(str, "VERSION "); if (alter_foreign_server_stmt->version != NULL) deparseStringLiteral(str, alter_foreign_server_stmt->version); else appendStringInfoString(str, "NULL"); appendStringInfoChar(str, ' '); } if (list_length(alter_foreign_server_stmt->options) > 0) deparseAlterGenericOptions(str, alter_foreign_server_stmt->options); removeTrailingSpace(str); } static void deparseCreateUserMappingStmt(StringInfo str, CreateUserMappingStmt *create_user_mapping_stmt) { appendStringInfoString(str, "CREATE USER MAPPING "); if (create_user_mapping_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); appendStringInfoString(str, "FOR "); deparseRoleSpec(str, create_user_mapping_stmt->user); appendStringInfoChar(str, ' '); appendStringInfoString(str, "SERVER "); appendStringInfoString(str, quote_identifier(create_user_mapping_stmt->servername)); appendStringInfoChar(str, ' '); deparseCreateGenericOptions(str, create_user_mapping_stmt->options); removeTrailingSpace(str); } static void deparseCreatedbStmt(StringInfo str, CreatedbStmt *createdb_stmt) { appendStringInfoString(str, "CREATE DATABASE "); deparseColId(str, createdb_stmt->dbname); appendStringInfoChar(str, ' '); deparseCreatedbOptList(str, createdb_stmt->options); removeTrailingSpace(str); } static void deparseAlterUserMappingStmt(StringInfo str, AlterUserMappingStmt *alter_user_mapping_stmt) { appendStringInfoString(str, "ALTER USER MAPPING FOR "); deparseRoleSpec(str, alter_user_mapping_stmt->user); appendStringInfoChar(str, ' '); appendStringInfoString(str, "SERVER "); appendStringInfoString(str, quote_identifier(alter_user_mapping_stmt->servername)); appendStringInfoChar(str, ' '); deparseAlterGenericOptions(str, alter_user_mapping_stmt->options); removeTrailingSpace(str); } static void deparseDropUserMappingStmt(StringInfo str, DropUserMappingStmt *drop_user_mapping_stmt) { appendStringInfoString(str, "DROP USER MAPPING "); if (drop_user_mapping_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); appendStringInfoString(str, "FOR "); deparseRoleSpec(str, drop_user_mapping_stmt->user); appendStringInfoChar(str, ' '); appendStringInfoString(str, "SERVER "); appendStringInfoString(str, quote_identifier(drop_user_mapping_stmt->servername)); } static void deparseSecLabelStmt(StringInfo str, SecLabelStmt *sec_label_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "SECURITY LABEL "); if (sec_label_stmt->provider != NULL) { appendStringInfoString(str, "FOR "); appendStringInfoString(str, quote_identifier(sec_label_stmt->provider)); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "ON "); switch (sec_label_stmt->objtype) { case OBJECT_COLUMN: appendStringInfoString(str, "COLUMN "); deparseAnyName(str, castNode(List, sec_label_stmt->object)); break; case OBJECT_FOREIGN_TABLE: appendStringInfoString(str, "FOREIGN TABLE "); deparseAnyName(str, castNode(List, sec_label_stmt->object)); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCE "); deparseAnyName(str, castNode(List, sec_label_stmt->object)); break; case OBJECT_TABLE: appendStringInfoString(str, "TABLE "); deparseAnyName(str, castNode(List, sec_label_stmt->object)); break; case OBJECT_VIEW: appendStringInfoString(str, "VIEW "); deparseAnyName(str, castNode(List, sec_label_stmt->object)); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); deparseAnyName(str, castNode(List, sec_label_stmt->object)); break; case OBJECT_DATABASE: appendStringInfoString(str, "DATABASE "); appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); break; case OBJECT_EVENT_TRIGGER: appendStringInfoString(str, "EVENT TRIGGER "); appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); break; case OBJECT_LANGUAGE: appendStringInfoString(str, "LANGUAGE "); appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); break; case OBJECT_PUBLICATION: appendStringInfoString(str, "PUBLICATION "); appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); break; case OBJECT_ROLE: appendStringInfoString(str, "ROLE "); appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMA "); appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); break; case OBJECT_SUBSCRIPTION: appendStringInfoString(str, "SUBSCRIPTION "); appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); break; case OBJECT_TABLESPACE: appendStringInfoString(str, "TABLESPACE "); appendStringInfoString(str, quote_identifier(strVal(sec_label_stmt->object))); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPE "); deparseTypeName(str, castNode(TypeName, sec_label_stmt->object)); break; case OBJECT_DOMAIN: appendStringInfoString(str, "DOMAIN "); deparseTypeName(str, castNode(TypeName, sec_label_stmt->object)); break; case OBJECT_AGGREGATE: appendStringInfoString(str, "AGGREGATE "); deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, sec_label_stmt->object)); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, sec_label_stmt->object)); break; case OBJECT_LARGEOBJECT: appendStringInfoString(str, "LARGE OBJECT "); deparseValue(str, (Value *) sec_label_stmt->object, DEPARSE_NODE_CONTEXT_CONSTANT); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, sec_label_stmt->object)); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, sec_label_stmt->object)); break; default: // Not supported in the parser Assert(false); break; } appendStringInfoString(str, " IS "); if (sec_label_stmt->label != NULL) deparseStringLiteral(str, sec_label_stmt->label); else appendStringInfoString(str, "NULL"); } static void deparseCreateForeignTableStmt(StringInfo str, CreateForeignTableStmt *create_foreign_table_stmt) { ListCell *lc; deparseCreateStmt(str, &create_foreign_table_stmt->base, true); appendStringInfoString(str, " SERVER "); appendStringInfoString(str, quote_identifier(create_foreign_table_stmt->servername)); appendStringInfoChar(str, ' '); if (list_length(create_foreign_table_stmt->options) > 0) deparseAlterGenericOptions(str, create_foreign_table_stmt->options); removeTrailingSpace(str); } static void deparseImportForeignSchemaStmt(StringInfo str, ImportForeignSchemaStmt *import_foreign_schema_stmt) { appendStringInfoString(str, "IMPORT FOREIGN SCHEMA "); appendStringInfoString(str, import_foreign_schema_stmt->remote_schema); appendStringInfoChar(str, ' '); switch (import_foreign_schema_stmt->list_type) { case FDW_IMPORT_SCHEMA_ALL: // Default break; case FDW_IMPORT_SCHEMA_LIMIT_TO: appendStringInfoString(str, "LIMIT TO ("); deparseRelationExprList(str, import_foreign_schema_stmt->table_list); appendStringInfoString(str, ") "); break; case FDW_IMPORT_SCHEMA_EXCEPT: appendStringInfoString(str, "EXCEPT ("); deparseRelationExprList(str, import_foreign_schema_stmt->table_list); appendStringInfoString(str, ") "); break; } appendStringInfoString(str, "FROM SERVER "); appendStringInfoString(str, quote_identifier(import_foreign_schema_stmt->server_name)); appendStringInfoChar(str, ' '); appendStringInfoString(str, "INTO "); appendStringInfoString(str, quote_identifier(import_foreign_schema_stmt->local_schema)); appendStringInfoChar(str, ' '); deparseCreateGenericOptions(str, import_foreign_schema_stmt->options); removeTrailingSpace(str); } static void deparseCreateTableAsStmt(StringInfo str, CreateTableAsStmt *create_table_as_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE "); deparseOptTemp(str, create_table_as_stmt->into->rel->relpersistence); switch (create_table_as_stmt->relkind) { case OBJECT_TABLE: appendStringInfoString(str, "TABLE "); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); break; default: // Not supported here Assert(false); break; } if (create_table_as_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); deparseIntoClause(str, create_table_as_stmt->into); appendStringInfoChar(str, ' '); appendStringInfoString(str, "AS "); if (IsA(create_table_as_stmt->query, ExecuteStmt)) deparseExecuteStmt(str, castNode(ExecuteStmt, create_table_as_stmt->query)); else deparseSelectStmt(str, castNode(SelectStmt, create_table_as_stmt->query)); appendStringInfoChar(str, ' '); if (create_table_as_stmt->into->skipData) appendStringInfoString(str, "WITH NO DATA "); removeTrailingSpace(str); } static void deparseViewStmt(StringInfo str, ViewStmt *view_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE "); if (view_stmt->replace) appendStringInfoString(str, "OR REPLACE "); deparseOptTemp(str, view_stmt->view->relpersistence); appendStringInfoString(str, "VIEW "); deparseRangeVar(str, view_stmt->view, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (list_length(view_stmt->aliases) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, view_stmt->aliases); appendStringInfoString(str, ") "); } deparseOptWith(str, view_stmt->options); appendStringInfoString(str, "AS "); deparseSelectStmt(str, castNode(SelectStmt, view_stmt->query)); appendStringInfoChar(str, ' '); switch (view_stmt->withCheckOption) { case NO_CHECK_OPTION: // Default break; case LOCAL_CHECK_OPTION: appendStringInfoString(str, "WITH LOCAL CHECK OPTION "); break; case CASCADED_CHECK_OPTION: appendStringInfoString(str, "WITH CHECK OPTION "); break; } removeTrailingSpace(str); } static void deparseDropStmt(StringInfo str, DropStmt *drop_stmt) { ListCell *lc; List *l; appendStringInfoString(str, "DROP "); switch (drop_stmt->removeType) { case OBJECT_ACCESS_METHOD: appendStringInfoString(str, "ACCESS METHOD "); break; case OBJECT_AGGREGATE: appendStringInfoString(str, "AGGREGATE "); break; case OBJECT_CAST: appendStringInfoString(str, "CAST "); break; case OBJECT_COLLATION: appendStringInfoString(str, "COLLATION "); break; case OBJECT_CONVERSION: appendStringInfoString(str, "CONVERSION "); break; case OBJECT_DOMAIN: appendStringInfoString(str, "DOMAIN "); break; case OBJECT_EVENT_TRIGGER: appendStringInfoString(str, "EVENT TRIGGER "); break; case OBJECT_EXTENSION: appendStringInfoString(str, "EXTENSION "); break; case OBJECT_FDW: appendStringInfoString(str, "FOREIGN DATA WRAPPER "); break; case OBJECT_FOREIGN_SERVER: appendStringInfoString(str, "SERVER "); break; case OBJECT_FOREIGN_TABLE: appendStringInfoString(str, "FOREIGN TABLE "); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); break; case OBJECT_INDEX: appendStringInfoString(str, "INDEX "); break; case OBJECT_LANGUAGE: appendStringInfoString(str, "LANGUAGE "); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); break; case OBJECT_OPCLASS: appendStringInfoString(str, "OPERATOR CLASS "); break; case OBJECT_OPERATOR: appendStringInfoString(str, "OPERATOR "); break; case OBJECT_OPFAMILY: appendStringInfoString(str, "OPERATOR FAMILY "); break; case OBJECT_POLICY: appendStringInfoString(str, "POLICY "); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); break; case OBJECT_PUBLICATION: appendStringInfoString(str, "PUBLICATION "); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); break; case OBJECT_RULE: appendStringInfoString(str, "RULE "); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMA "); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCE "); break; case OBJECT_STATISTIC_EXT: appendStringInfoString(str, "STATISTICS "); break; case OBJECT_TABLE: appendStringInfoString(str, "TABLE "); break; case OBJECT_TRANSFORM: appendStringInfoString(str, "TRANSFORM "); break; case OBJECT_TRIGGER: appendStringInfoString(str, "TRIGGER "); break; case OBJECT_TSCONFIGURATION: appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); break; case OBJECT_TSDICTIONARY: appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); break; case OBJECT_TSPARSER: appendStringInfoString(str, "TEXT SEARCH PARSER "); break; case OBJECT_TSTEMPLATE: appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPE "); break; case OBJECT_VIEW: appendStringInfoString(str, "VIEW "); break; default: // Other object types are not supported here in the parser Assert(false); } if (drop_stmt->concurrent) appendStringInfoString(str, "CONCURRENTLY "); if (drop_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); switch (drop_stmt->removeType) { // drop_type_any_name case OBJECT_TABLE: case OBJECT_SEQUENCE: case OBJECT_VIEW: case OBJECT_MATVIEW: case OBJECT_INDEX: case OBJECT_FOREIGN_TABLE: case OBJECT_COLLATION: case OBJECT_CONVERSION: case OBJECT_STATISTIC_EXT: case OBJECT_TSPARSER: case OBJECT_TSDICTIONARY: case OBJECT_TSTEMPLATE: case OBJECT_TSCONFIGURATION: deparseAnyNameList(str, drop_stmt->objects); appendStringInfoChar(str, ' '); break; // drop_type_name case OBJECT_ACCESS_METHOD: case OBJECT_EVENT_TRIGGER: case OBJECT_EXTENSION: case OBJECT_FDW: case OBJECT_PUBLICATION: case OBJECT_SCHEMA: case OBJECT_FOREIGN_SERVER: deparseNameList(str, drop_stmt->objects); appendStringInfoChar(str, ' '); break; // drop_type_name_on_any_name case OBJECT_POLICY: case OBJECT_RULE: case OBJECT_TRIGGER: Assert(list_length(drop_stmt->objects) == 1); l = linitial(drop_stmt->objects); deparseColId(str, strVal(llast(l))); appendStringInfoString(str, " ON "); deparseAnyNameSkipLast(str, l); appendStringInfoChar(str, ' '); break; case OBJECT_CAST: Assert(list_length(drop_stmt->objects) == 1); l = linitial(drop_stmt->objects); Assert(list_length(l) == 2); appendStringInfoChar(str, '('); deparseTypeName(str, castNode(TypeName, linitial(l))); appendStringInfoString(str, " AS "); deparseTypeName(str, castNode(TypeName, lsecond(l))); appendStringInfoChar(str, ')'); appendStringInfoChar(str, ' '); break; case OBJECT_OPFAMILY: case OBJECT_OPCLASS: Assert(list_length(drop_stmt->objects) == 1); l = linitial(drop_stmt->objects); deparseAnyNameSkipFirst(str, l); appendStringInfoString(str, " USING "); deparseColId(str, strVal(linitial(l))); appendStringInfoChar(str, ' '); break; case OBJECT_TRANSFORM: Assert(list_length(drop_stmt->objects) == 1); l = linitial(drop_stmt->objects); appendStringInfoString(str, "FOR "); deparseTypeName(str, castNode(TypeName, linitial(l))); appendStringInfoString(str, " LANGUAGE "); deparseColId(str, strVal(lsecond(l))); appendStringInfoChar(str, ' '); break; case OBJECT_LANGUAGE: deparseStringLiteral(str, strVal(linitial(drop_stmt->objects))); appendStringInfoChar(str, ' '); break; case OBJECT_TYPE: case OBJECT_DOMAIN: foreach(lc, drop_stmt->objects) { deparseTypeName(str, castNode(TypeName, lfirst(lc))); if (lnext(drop_stmt->objects, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); break; case OBJECT_AGGREGATE: foreach(lc, drop_stmt->objects) { deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, lfirst(lc))); if (lnext(drop_stmt->objects, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); break; case OBJECT_FUNCTION: case OBJECT_PROCEDURE: case OBJECT_ROUTINE: foreach(lc, drop_stmt->objects) { deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, lfirst(lc))); if (lnext(drop_stmt->objects, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); break; case OBJECT_OPERATOR: foreach(lc, drop_stmt->objects) { deparseOperatorWithArgtypes(str, castNode(ObjectWithArgs, lfirst(lc))); if (lnext(drop_stmt->objects, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); break; default: Assert(false); } deparseOptDropBehavior(str, drop_stmt->behavior); removeTrailingSpace(str); } static void deparseGroupingSet(StringInfo str, GroupingSet *grouping_set) { switch(grouping_set->kind) { case GROUPING_SET_EMPTY: appendStringInfoString(str, "()"); break; case GROUPING_SET_SIMPLE: // Not present in raw parse trees Assert(false); break; case GROUPING_SET_ROLLUP: appendStringInfoString(str, "ROLLUP ("); deparseExprList(str, grouping_set->content); appendStringInfoChar(str, ')'); break; case GROUPING_SET_CUBE: appendStringInfoString(str, "CUBE ("); deparseExprList(str, grouping_set->content); appendStringInfoChar(str, ')'); break; case GROUPING_SET_SETS: appendStringInfoString(str, "GROUPING SETS ("); deparseGroupByList(str, grouping_set->content); appendStringInfoChar(str, ')'); break; } } static void deparseDropTableSpaceStmt(StringInfo str, DropTableSpaceStmt *drop_table_space_stmt) { appendStringInfoString(str, "DROP TABLESPACE "); if (drop_table_space_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); appendStringInfoString(str, drop_table_space_stmt->tablespacename); } static void deparseAlterObjectDependsStmt(StringInfo str, AlterObjectDependsStmt *alter_object_depends_stmt) { appendStringInfoString(str, "ALTER "); switch (alter_object_depends_stmt->objectType) { case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_depends_stmt->object)); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_depends_stmt->object)); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_depends_stmt->object)); break; case OBJECT_TRIGGER: appendStringInfoString(str, "TRIGGER "); deparseColId(str, strVal(linitial(castNode(List, alter_object_depends_stmt->object)))); appendStringInfoString(str, " ON "); deparseRangeVar(str, alter_object_depends_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); deparseRangeVar(str, alter_object_depends_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); break; case OBJECT_INDEX: appendStringInfoString(str, "INDEX "); deparseRangeVar(str, alter_object_depends_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); break; default: // No other object types supported here Assert(false); } appendStringInfoChar(str, ' '); if (alter_object_depends_stmt->remove) appendStringInfoString(str, "NO "); appendStringInfoString(str, "DEPENDS ON EXTENSION "); deparseColId(str, strVal(alter_object_depends_stmt->extname)); } static void deparseAlterObjectSchemaStmt(StringInfo str, AlterObjectSchemaStmt *alter_object_schema_stmt) { List *l = NULL; ListCell *lc = NULL; appendStringInfoString(str, "ALTER "); switch (alter_object_schema_stmt->objectType) { case OBJECT_AGGREGATE: appendStringInfoString(str, "AGGREGATE "); deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, alter_object_schema_stmt->object)); break; case OBJECT_COLLATION: appendStringInfoString(str, "COLLATION "); deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); break; case OBJECT_CONVERSION: appendStringInfoString(str, "CONVERSION "); deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); break; case OBJECT_DOMAIN: appendStringInfoString(str, "DOMAIN "); deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); break; case OBJECT_EXTENSION: appendStringInfoString(str, "EXTENSION "); appendStringInfoString(str, quote_identifier(strVal(alter_object_schema_stmt->object))); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_schema_stmt->object)); break; case OBJECT_OPERATOR: appendStringInfoString(str, "OPERATOR "); deparseOperatorWithArgtypes(str, castNode(ObjectWithArgs, alter_object_schema_stmt->object)); break; case OBJECT_OPCLASS: l = castNode(List, alter_object_schema_stmt->object); appendStringInfoString(str, "OPERATOR CLASS "); deparseAnyNameSkipFirst(str, l); appendStringInfoString(str, " USING "); appendStringInfoString(str, quote_identifier(strVal(linitial(l)))); break; case OBJECT_OPFAMILY: l = castNode(List, alter_object_schema_stmt->object); appendStringInfoString(str, "OPERATOR FAMILY "); deparseAnyNameSkipFirst(str, l); appendStringInfoString(str, " USING "); appendStringInfoString(str, quote_identifier(strVal(linitial(l)))); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_schema_stmt->object)); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_object_schema_stmt->object)); break; case OBJECT_TABLE: appendStringInfoString(str, "TABLE "); if (alter_object_schema_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); deparseRangeVar(str, alter_object_schema_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); break; case OBJECT_STATISTIC_EXT: appendStringInfoString(str, "STATISTICS "); deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); break; case OBJECT_TSPARSER: appendStringInfoString(str, "TEXT SEARCH PARSER "); deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); break; case OBJECT_TSDICTIONARY: appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); break; case OBJECT_TSTEMPLATE: appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); break; case OBJECT_TSCONFIGURATION: appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCE "); if (alter_object_schema_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); deparseRangeVar(str, alter_object_schema_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); break; case OBJECT_VIEW: appendStringInfoString(str, "VIEW "); if (alter_object_schema_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); deparseRangeVar(str, alter_object_schema_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); if (alter_object_schema_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); deparseRangeVar(str, alter_object_schema_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); break; case OBJECT_FOREIGN_TABLE: appendStringInfoString(str, "FOREIGN TABLE "); if (alter_object_schema_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); deparseRangeVar(str, alter_object_schema_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPE "); deparseAnyName(str, castNode(List, alter_object_schema_stmt->object)); break; default: Assert(false); break; } appendStringInfoString(str, " SET SCHEMA "); appendStringInfoString(str, quote_identifier(alter_object_schema_stmt->newschema)); } static void deparseAlterTableCmd(StringInfo str, AlterTableCmd *alter_table_cmd, DeparseNodeContext context) { ListCell *lc = NULL; const char *options = NULL; bool trailing_missing_ok = false; switch (alter_table_cmd->subtype) { case AT_AddColumn: /* add column */ if (context == DEPARSE_NODE_CONTEXT_ALTER_TYPE) appendStringInfoString(str, "ADD ATTRIBUTE "); else appendStringInfoString(str, "ADD COLUMN "); break; case AT_AddColumnRecurse: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AddColumnToView: /* implicitly via CREATE OR REPLACE VIEW */ // Not present in raw parser output Assert(false); break; case AT_ColumnDefault: /* alter column default */ appendStringInfoString(str, "ALTER COLUMN "); if (alter_table_cmd->def != NULL) options = "SET DEFAULT"; else options = "DROP DEFAULT"; break; case AT_CookedColumnDefault: /* add a pre-cooked column default */ // Not present in raw parser output Assert(false); break; case AT_DropNotNull: /* alter column drop not null */ appendStringInfoString(str, "ALTER COLUMN "); options = "DROP NOT NULL"; break; case AT_SetNotNull: /* alter column set not null */ appendStringInfoString(str, "ALTER COLUMN "); options = "SET NOT NULL"; break; case AT_DropExpression: /* alter column drop expression */ appendStringInfoString(str, "ALTER COLUMN "); options = "DROP EXPRESSION"; trailing_missing_ok = true; break; case AT_CheckNotNull: /* check column is already marked not null */ // Not present in raw parser output Assert(false); break; case AT_SetStatistics: /* alter column set statistics */ appendStringInfoString(str, "ALTER COLUMN "); options = "SET STATISTICS"; break; case AT_SetOptions: /* alter column set ( options ) */ appendStringInfoString(str, "ALTER COLUMN "); options = "SET"; break; case AT_ResetOptions: /* alter column reset ( options ) */ appendStringInfoString(str, "ALTER COLUMN "); options = "RESET"; break; case AT_SetStorage: /* alter column set storage */ appendStringInfoString(str, "ALTER COLUMN "); options = "SET STORAGE"; break; case AT_DropColumn: /* drop column */ if (context == DEPARSE_NODE_CONTEXT_ALTER_TYPE) appendStringInfoString(str, "DROP ATTRIBUTE "); else appendStringInfoString(str, "DROP "); break; case AT_DropColumnRecurse: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AddIndex: /* add index */ appendStringInfoString(str, "ADD INDEX "); break; case AT_ReAddIndex: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AddConstraint: /* add constraint */ appendStringInfoString(str, "ADD "); break; case AT_AddConstraintRecurse: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_ReAddConstraint: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_ReAddDomainConstraint: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AlterConstraint: /* alter constraint */ appendStringInfoString(str, "ALTER "); // CONSTRAINT keyword gets added by the Constraint itself (when deparsing def) break; case AT_ValidateConstraint: /* validate constraint */ appendStringInfoString(str, "VALIDATE CONSTRAINT "); break; case AT_ValidateConstraintRecurse: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AddIndexConstraint: /* add constraint using existing index */ // Not present in raw parser output Assert(false); break; case AT_DropConstraint: /* drop constraint */ appendStringInfoString(str, "DROP CONSTRAINT "); break; case AT_DropConstraintRecurse: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_ReAddComment: /* internal to commands/tablecmds.c */ Assert(false); break; case AT_AlterColumnType: /* alter column type */ if (context == DEPARSE_NODE_CONTEXT_ALTER_TYPE) appendStringInfoString(str, "ALTER ATTRIBUTE "); else appendStringInfoString(str, "ALTER COLUMN "); options = "TYPE"; break; case AT_AlterColumnGenericOptions: /* alter column OPTIONS (...) */ appendStringInfoString(str, "ALTER COLUMN "); // Handled via special case in def handling break; case AT_ChangeOwner: /* change owner */ appendStringInfoString(str, "OWNER TO "); deparseRoleSpec(str, alter_table_cmd->newowner); break; case AT_ClusterOn: /* CLUSTER ON */ appendStringInfoString(str, "CLUSTER ON "); break; case AT_DropCluster: /* SET WITHOUT CLUSTER */ appendStringInfoString(str, "SET WITHOUT CLUSTER "); break; case AT_SetLogged: /* SET LOGGED */ appendStringInfoString(str, "SET LOGGED "); break; case AT_SetUnLogged: /* SET UNLOGGED */ appendStringInfoString(str, "SET UNLOGGED "); break; case AT_DropOids: /* SET WITHOUT OIDS */ appendStringInfoString(str, "SET WITHOUT OIDS "); break; case AT_SetTableSpace: /* SET TABLESPACE */ appendStringInfoString(str, "SET TABLESPACE "); break; case AT_SetRelOptions: /* SET (...) -- AM specific parameters */ appendStringInfoString(str, "SET "); break; case AT_ResetRelOptions: /* RESET (...) -- AM specific parameters */ appendStringInfoString(str, "RESET "); break; case AT_ReplaceRelOptions: /* replace reloption list in its entirety */ // Not present in raw parser output Assert(false); break; case AT_EnableTrig: /* ENABLE TRIGGER name */ appendStringInfoString(str, "ENABLE TRIGGER "); break; case AT_EnableAlwaysTrig: /* ENABLE ALWAYS TRIGGER name */ appendStringInfoString(str, "ENABLE ALWAYS TRIGGER "); break; case AT_EnableReplicaTrig: /* ENABLE REPLICA TRIGGER name */ appendStringInfoString(str, "ENABLE REPLICA TRIGGER "); break; case AT_DisableTrig: /* DISABLE TRIGGER name */ appendStringInfoString(str, "DISABLE TRIGGER "); break; case AT_EnableTrigAll: /* ENABLE TRIGGER ALL */ appendStringInfoString(str, "ENABLE TRIGGER "); break; case AT_DisableTrigAll: /* DISABLE TRIGGER ALL */ appendStringInfoString(str, "DISABLE TRIGGER ALL "); break; case AT_EnableTrigUser: /* ENABLE TRIGGER USER */ appendStringInfoString(str, "ENABLE TRIGGER USER "); break; case AT_DisableTrigUser: /* DISABLE TRIGGER USER */ appendStringInfoString(str, "DISABLE TRIGGER USER "); break; case AT_EnableRule: /* ENABLE RULE name */ appendStringInfoString(str, "ENABLE RULE "); break; case AT_EnableAlwaysRule: /* ENABLE ALWAYS RULE name */ appendStringInfoString(str, "ENABLE ALWAYS RULE "); break; case AT_EnableReplicaRule: /* ENABLE REPLICA RULE name */ appendStringInfoString(str, "ENABLE REPLICA RULE "); break; case AT_DisableRule: /* DISABLE RULE name */ appendStringInfoString(str, "DISABLE RULE "); break; case AT_AddInherit: /* INHERIT parent */ appendStringInfoString(str, "INHERIT "); break; case AT_DropInherit: /* NO INHERIT parent */ appendStringInfoString(str, "NO INHERIT "); break; case AT_AddOf: /* OF */ appendStringInfoString(str, "OF "); break; case AT_DropOf: /* NOT OF */ appendStringInfoString(str, "NOT OF "); break; case AT_ReplicaIdentity: /* REPLICA IDENTITY */ appendStringInfoString(str, "REPLICA IDENTITY "); break; case AT_EnableRowSecurity: /* ENABLE ROW SECURITY */ appendStringInfoString(str, "ENABLE ROW LEVEL SECURITY "); break; case AT_DisableRowSecurity: /* DISABLE ROW SECURITY */ appendStringInfoString(str, "DISABLE ROW LEVEL SECURITY "); break; case AT_ForceRowSecurity: /* FORCE ROW SECURITY */ appendStringInfoString(str, "FORCE ROW LEVEL SECURITY "); break; case AT_NoForceRowSecurity: /* NO FORCE ROW SECURITY */ appendStringInfoString(str, "NO FORCE ROW LEVEL SECURITY "); break; case AT_GenericOptions: /* OPTIONS (...) */ // Handled in def field handling break; case AT_AttachPartition: /* ATTACH PARTITION */ appendStringInfoString(str, "ATTACH PARTITION "); break; case AT_DetachPartition: /* DETACH PARTITION */ appendStringInfoString(str, "DETACH PARTITION "); break; case AT_AddIdentity: /* ADD IDENTITY */ appendStringInfoString(str, "ALTER "); options = "ADD"; // Other details are output via the constraint node (in def field) break; case AT_SetIdentity: /* SET identity column options */ appendStringInfoString(str, "ALTER "); break; case AT_DropIdentity: /* DROP IDENTITY */ appendStringInfoString(str, "ALTER COLUMN "); options = "DROP IDENTITY"; trailing_missing_ok = true; break; } if (alter_table_cmd->missing_ok && !trailing_missing_ok) { if (alter_table_cmd->subtype == AT_AddColumn) appendStringInfoString(str, "IF NOT EXISTS "); else appendStringInfoString(str, "IF EXISTS "); } if (alter_table_cmd->name != NULL) { appendStringInfoString(str, quote_identifier(alter_table_cmd->name)); appendStringInfoChar(str, ' '); } if (alter_table_cmd->num > 0) appendStringInfo(str, "%d ", alter_table_cmd->num); if (options != NULL) { appendStringInfoString(str, options); appendStringInfoChar(str, ' '); } if (alter_table_cmd->missing_ok && trailing_missing_ok) appendStringInfoString(str, "IF EXISTS "); switch (alter_table_cmd->subtype) { case AT_AttachPartition: case AT_DetachPartition: deparsePartitionCmd(str, castNode(PartitionCmd, alter_table_cmd->def)); appendStringInfoChar(str, ' '); break; case AT_AddColumn: case AT_AlterColumnType: deparseColumnDef(str, castNode(ColumnDef, alter_table_cmd->def)); appendStringInfoChar(str, ' '); break; case AT_ColumnDefault: if (alter_table_cmd->def != NULL) { deparseExpr(str, alter_table_cmd->def); appendStringInfoChar(str, ' '); } break; case AT_SetStatistics: deparseSignedIconst(str, alter_table_cmd->def); appendStringInfoChar(str, ' '); break; case AT_SetOptions: case AT_ResetOptions: case AT_SetRelOptions: case AT_ResetRelOptions: deparseRelOptions(str, castNode(List, alter_table_cmd->def)); appendStringInfoChar(str, ' '); break; case AT_SetStorage: deparseColId(str, strVal(alter_table_cmd->def)); appendStringInfoChar(str, ' '); break; case AT_AddIdentity: case AT_AddConstraint: case AT_AlterConstraint: deparseConstraint(str, castNode(Constraint, alter_table_cmd->def)); appendStringInfoChar(str, ' '); break; case AT_SetIdentity: deparseAlterIdentityColumnOptionList(str, castNode(List, alter_table_cmd->def)); appendStringInfoChar(str, ' '); break; case AT_AlterColumnGenericOptions: case AT_GenericOptions: deparseAlterGenericOptions(str, castNode(List, alter_table_cmd->def)); appendStringInfoChar(str, ' '); break; case AT_AddInherit: case AT_DropInherit: deparseRangeVar(str, castNode(RangeVar, alter_table_cmd->def), DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); break; case AT_AddOf: deparseTypeName(str, castNode(TypeName, alter_table_cmd->def)); appendStringInfoChar(str, ' '); break; case AT_ReplicaIdentity: deparseReplicaIdentityStmt(str, castNode(ReplicaIdentityStmt, alter_table_cmd->def)); appendStringInfoChar(str, ' '); break; default: Assert(alter_table_cmd->def == NULL); break; } deparseOptDropBehavior(str, alter_table_cmd->behavior); removeTrailingSpace(str); } static void deparseAlterTableStmt(StringInfo str, AlterTableStmt *alter_table_stmt) { ListCell *lc; DeparseNodeContext context = DEPARSE_NODE_CONTEXT_NONE; appendStringInfoString(str, "ALTER "); switch (alter_table_stmt->relkind) { case OBJECT_TABLE: appendStringInfoString(str, "TABLE "); break; case OBJECT_FOREIGN_TABLE: appendStringInfoString(str, "FOREIGN TABLE "); break; case OBJECT_INDEX: appendStringInfoString(str, "INDEX "); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCE "); break; case OBJECT_VIEW: appendStringInfoString(str, "VIEW "); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPE "); context = DEPARSE_NODE_CONTEXT_ALTER_TYPE; break; default: Assert(false); break; } if (alter_table_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); deparseRangeVar(str, alter_table_stmt->relation, context); appendStringInfoChar(str, ' '); foreach(lc, alter_table_stmt->cmds) { deparseAlterTableCmd(str, castNode(AlterTableCmd, lfirst(lc)), context); if (lnext(alter_table_stmt->cmds, lc)) appendStringInfoString(str, ", "); } } static void deparseAlterTableSpaceOptionsStmt(StringInfo str, AlterTableSpaceOptionsStmt *alter_table_space_options_stmt) { appendStringInfoString(str, "ALTER TABLESPACE "); deparseColId(str, alter_table_space_options_stmt->tablespacename); appendStringInfoChar(str, ' '); if (alter_table_space_options_stmt->isReset) appendStringInfoString(str, "RESET "); else appendStringInfoString(str, "SET "); deparseRelOptions(str, alter_table_space_options_stmt->options); } static void deparseAlterDomainStmt(StringInfo str, AlterDomainStmt *alter_domain_stmt) { appendStringInfoString(str, "ALTER DOMAIN "); deparseAnyName(str, alter_domain_stmt->typeName); appendStringInfoChar(str, ' '); switch (alter_domain_stmt->subtype) { case 'T': if (alter_domain_stmt->def != NULL) { appendStringInfoString(str, "SET DEFAULT "); deparseExpr(str, alter_domain_stmt->def); } else { appendStringInfoString(str, "DROP DEFAULT"); } break; case 'N': appendStringInfoString(str, "DROP NOT NULL"); break; case 'O': appendStringInfoString(str, "SET NOT NULL"); break; case 'C': appendStringInfoString(str, "ADD "); deparseConstraint(str, castNode(Constraint, alter_domain_stmt->def)); break; case 'X': appendStringInfoString(str, "DROP CONSTRAINT "); if (alter_domain_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); appendStringInfoString(str, quote_identifier(alter_domain_stmt->name)); if (alter_domain_stmt->behavior == DROP_CASCADE) appendStringInfoString(str, " CASCADE"); break; case 'V': appendStringInfoString(str, "VALIDATE CONSTRAINT "); appendStringInfoString(str, quote_identifier(alter_domain_stmt->name)); break; default: // No other subtypes supported by the parser Assert(false); } } static void deparseRenameStmt(StringInfo str, RenameStmt *rename_stmt) { List *l = NULL; appendStringInfoString(str, "ALTER "); switch (rename_stmt->renameType) { case OBJECT_AGGREGATE: appendStringInfoString(str, "AGGREGATE "); break; case OBJECT_COLLATION: appendStringInfoString(str, "COLLATION "); break; case OBJECT_CONVERSION: appendStringInfoString(str, "CONVERSION "); break; case OBJECT_DATABASE: appendStringInfoString(str, "DATABASE "); break; case OBJECT_DOMAIN: case OBJECT_DOMCONSTRAINT: appendStringInfoString(str, "DOMAIN "); break; case OBJECT_FDW: appendStringInfoString(str, "FOREIGN DATA WRAPPER "); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); break; case OBJECT_ROLE: appendStringInfoString(str, "ROLE "); break; case OBJECT_LANGUAGE: appendStringInfoString(str, "LANGUAGE "); break; case OBJECT_OPCLASS: appendStringInfoString(str, "OPERATOR CLASS "); break; case OBJECT_OPFAMILY: appendStringInfoString(str, "OPERATOR FAMILY "); break; case OBJECT_POLICY: appendStringInfoString(str, "POLICY "); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); break; case OBJECT_PUBLICATION: appendStringInfoString(str, "PUBLICATION "); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMA "); break; case OBJECT_FOREIGN_SERVER: appendStringInfoString(str, "SERVER "); break; case OBJECT_SUBSCRIPTION: appendStringInfoString(str, "SUBSCRIPTION "); break; case OBJECT_TABLE: case OBJECT_TABCONSTRAINT: appendStringInfoString(str, "TABLE "); break; case OBJECT_COLUMN: switch (rename_stmt->relationType) { case OBJECT_TABLE: appendStringInfoString(str, "TABLE "); break; case OBJECT_FOREIGN_TABLE: appendStringInfoString(str, "FOREIGN TABLE "); break; case OBJECT_VIEW: appendStringInfoString(str, "VIEW "); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); break; default: Assert(false); } break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCE "); break; case OBJECT_VIEW: appendStringInfoString(str, "VIEW "); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); break; case OBJECT_INDEX: appendStringInfoString(str, "INDEX "); break; case OBJECT_FOREIGN_TABLE: appendStringInfoString(str, "FOREIGN TABLE "); break; case OBJECT_RULE: appendStringInfoString(str, "RULE "); break; case OBJECT_TRIGGER: appendStringInfoString(str, "TRIGGER "); break; case OBJECT_EVENT_TRIGGER: appendStringInfoString(str, "EVENT TRIGGER "); break; case OBJECT_TABLESPACE: appendStringInfoString(str, "TABLESPACE "); break; case OBJECT_STATISTIC_EXT: appendStringInfoString(str, "STATISTICS "); break; case OBJECT_TSPARSER: appendStringInfoString(str, "TEXT SEARCH PARSER "); break; case OBJECT_TSDICTIONARY: appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); break; case OBJECT_TSTEMPLATE: appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); break; case OBJECT_TSCONFIGURATION: appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); break; case OBJECT_TYPE: case OBJECT_ATTRIBUTE: appendStringInfoString(str, "TYPE "); break; default: Assert(false); break; } if (rename_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); switch (rename_stmt->renameType) { case OBJECT_AGGREGATE: deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, rename_stmt->object)); appendStringInfoString(str, " RENAME "); break; case OBJECT_DOMCONSTRAINT: deparseAnyName(str, castNode(List, rename_stmt->object)); appendStringInfoString(str, " RENAME CONSTRAINT "); appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoChar(str, ' '); break; case OBJECT_OPCLASS: case OBJECT_OPFAMILY: l = castNode(List, rename_stmt->object); deparseAnyNameSkipFirst(str, l); appendStringInfoString(str, " USING "); appendStringInfoString(str, quote_identifier(strVal(linitial(l)))); appendStringInfoString(str, " RENAME "); break; case OBJECT_POLICY: appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoString(str, " ON "); deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " RENAME "); break; case OBJECT_FUNCTION: case OBJECT_PROCEDURE: case OBJECT_ROUTINE: deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, rename_stmt->object)); appendStringInfoString(str, " RENAME "); break; case OBJECT_SUBSCRIPTION: deparseColId(str, strVal(rename_stmt->object)); appendStringInfoString(str, " RENAME "); break; case OBJECT_TABLE: case OBJECT_SEQUENCE: case OBJECT_VIEW: case OBJECT_MATVIEW: case OBJECT_INDEX: case OBJECT_FOREIGN_TABLE: deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " RENAME "); break; case OBJECT_COLUMN: deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " RENAME COLUMN "); appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoChar(str, ' '); break; case OBJECT_TABCONSTRAINT: deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " RENAME CONSTRAINT "); appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoChar(str, ' '); break; case OBJECT_RULE: case OBJECT_TRIGGER: appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoString(str, " ON "); deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " RENAME "); break; case OBJECT_FDW: case OBJECT_LANGUAGE: case OBJECT_PUBLICATION: case OBJECT_FOREIGN_SERVER: case OBJECT_EVENT_TRIGGER: appendStringInfoString(str, quote_identifier(strVal(rename_stmt->object))); appendStringInfoString(str, " RENAME "); break; case OBJECT_DATABASE: case OBJECT_ROLE: case OBJECT_SCHEMA: case OBJECT_TABLESPACE: appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoString(str, " RENAME "); break; case OBJECT_COLLATION: case OBJECT_CONVERSION: case OBJECT_DOMAIN: case OBJECT_STATISTIC_EXT: case OBJECT_TSPARSER: case OBJECT_TSDICTIONARY: case OBJECT_TSTEMPLATE: case OBJECT_TSCONFIGURATION: case OBJECT_TYPE: deparseAnyName(str, castNode(List, rename_stmt->object)); appendStringInfoString(str, " RENAME "); break; case OBJECT_ATTRIBUTE: deparseRangeVar(str, rename_stmt->relation, DEPARSE_NODE_CONTEXT_ALTER_TYPE); appendStringInfoString(str, " RENAME ATTRIBUTE "); appendStringInfoString(str, quote_identifier(rename_stmt->subname)); appendStringInfoChar(str, ' '); break; default: Assert(false); break; } appendStringInfoString(str, "TO "); appendStringInfoString(str, quote_identifier(rename_stmt->newname)); appendStringInfoChar(str, ' '); deparseOptDropBehavior(str, rename_stmt->behavior); removeTrailingSpace(str); } static void deparseTransactionStmt(StringInfo str, TransactionStmt *transaction_stmt) { ListCell *lc; switch (transaction_stmt->kind) { case TRANS_STMT_BEGIN: appendStringInfoString(str, "BEGIN "); deparseTransactionModeList(str, transaction_stmt->options); break; case TRANS_STMT_START: appendStringInfoString(str, "START TRANSACTION "); deparseTransactionModeList(str, transaction_stmt->options); break; case TRANS_STMT_COMMIT: appendStringInfoString(str, "COMMIT "); if (transaction_stmt->chain) appendStringInfoString(str, "AND CHAIN "); break; case TRANS_STMT_ROLLBACK: appendStringInfoString(str, "ROLLBACK "); if (transaction_stmt->chain) appendStringInfoString(str, "AND CHAIN "); break; case TRANS_STMT_SAVEPOINT: appendStringInfoString(str, "SAVEPOINT "); appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name)); break; case TRANS_STMT_RELEASE: appendStringInfoString(str, "RELEASE "); appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name)); break; case TRANS_STMT_ROLLBACK_TO: appendStringInfoString(str, "ROLLBACK "); appendStringInfoString(str, "TO SAVEPOINT "); appendStringInfoString(str, quote_identifier(transaction_stmt->savepoint_name)); break; case TRANS_STMT_PREPARE: appendStringInfoString(str, "PREPARE TRANSACTION "); deparseStringLiteral(str, transaction_stmt->gid); break; case TRANS_STMT_COMMIT_PREPARED: appendStringInfoString(str, "COMMIT PREPARED "); deparseStringLiteral(str, transaction_stmt->gid); break; case TRANS_STMT_ROLLBACK_PREPARED: appendStringInfoString(str, "ROLLBACK PREPARED "); deparseStringLiteral(str, transaction_stmt->gid); break; } removeTrailingSpace(str); } static void deparseVariableSetStmt(StringInfo str, VariableSetStmt* variable_set_stmt) { ListCell *lc; switch (variable_set_stmt->kind) { case VAR_SET_VALUE: /* SET var = value */ appendStringInfoString(str, "SET "); if (variable_set_stmt->is_local) appendStringInfoString(str, "LOCAL "); deparseVarName(str, variable_set_stmt->name); appendStringInfoString(str, " TO "); deparseVarList(str, variable_set_stmt->args); break; case VAR_SET_DEFAULT: /* SET var TO DEFAULT */ appendStringInfoString(str, "SET "); if (variable_set_stmt->is_local) appendStringInfoString(str, "LOCAL "); deparseVarName(str, variable_set_stmt->name); appendStringInfoString(str, " TO DEFAULT"); break; case VAR_SET_CURRENT: /* SET var FROM CURRENT */ appendStringInfoString(str, "SET "); if (variable_set_stmt->is_local) appendStringInfoString(str, "LOCAL "); deparseVarName(str, variable_set_stmt->name); appendStringInfoString(str, " FROM CURRENT"); break; case VAR_SET_MULTI: /* special case for SET TRANSACTION ... */ Assert(variable_set_stmt->name != NULL); appendStringInfoString(str, "SET "); if (variable_set_stmt->is_local) appendStringInfoString(str, "LOCAL "); if (strcmp(variable_set_stmt->name, "TRANSACTION") == 0) { appendStringInfoString(str, "TRANSACTION "); deparseTransactionModeList(str, variable_set_stmt->args); } else if (strcmp(variable_set_stmt->name, "SESSION CHARACTERISTICS") == 0) { appendStringInfoString(str, "SESSION CHARACTERISTICS AS TRANSACTION "); deparseTransactionModeList(str, variable_set_stmt->args); } else if (strcmp(variable_set_stmt->name, "TRANSACTION SNAPSHOT") == 0) { appendStringInfoString(str, "TRANSACTION SNAPSHOT "); deparseStringLiteral(str, strVal(&castNode(A_Const, linitial(variable_set_stmt->args))->val)); } else { Assert(false); } break; case VAR_RESET: /* RESET var */ appendStringInfoString(str, "RESET "); deparseVarName(str, variable_set_stmt->name); break; case VAR_RESET_ALL: /* RESET ALL */ appendStringInfoString(str, "RESET ALL"); break; } } static void deparseDropdbStmt(StringInfo str, DropdbStmt *dropdb_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "DROP DATABASE "); if (dropdb_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); appendStringInfoString(str, quote_identifier(dropdb_stmt->dbname)); appendStringInfoChar(str, ' '); if (list_length(dropdb_stmt->options) > 0) { appendStringInfoChar(str, '('); foreach(lc, dropdb_stmt->options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "force") == 0) appendStringInfoString(str, "FORCE"); else Assert(false); // Currently there are other supported values if (lnext(dropdb_stmt->options, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } removeTrailingSpace(str); } static void deparseVacuumStmt(StringInfo str, VacuumStmt *vacuum_stmt) { ListCell *lc = NULL; ListCell *lc2 = NULL; if (vacuum_stmt->is_vacuumcmd) appendStringInfoString(str, "VACUUM "); else appendStringInfoString(str, "ANALYZE "); if (list_length(vacuum_stmt->options) > 0) { appendStringInfoChar(str, '('); foreach(lc, vacuum_stmt->options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); deparseGenericDefElemName(str, def_elem->defname); if (def_elem->arg != NULL) { appendStringInfoChar(str, ' '); if (IsA(def_elem->arg, Integer) || IsA(def_elem->arg, Float)) deparseNumericOnly(str, (Value *) def_elem->arg); else if (IsA(def_elem->arg, String)) deparseOptBooleanOrString(str, strVal(def_elem->arg)); else Assert(false); } if (lnext(vacuum_stmt->options, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); } foreach(lc, vacuum_stmt->rels) { Assert(IsA(lfirst(lc), VacuumRelation)); VacuumRelation *rel = castNode(VacuumRelation, lfirst(lc)); deparseRangeVar(str, rel->relation, DEPARSE_NODE_CONTEXT_NONE); if (list_length(rel->va_cols) > 0) { appendStringInfoChar(str, '('); foreach(lc2, rel->va_cols) { appendStringInfoString(str, quote_identifier(strVal(lfirst(lc2)))); if (lnext(rel->va_cols, lc2)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } if (lnext(vacuum_stmt->rels, lc)) appendStringInfoString(str, ", "); } removeTrailingSpace(str); } static void deparseLoadStmt(StringInfo str, LoadStmt *load_stmt) { appendStringInfoString(str, "LOAD "); deparseStringLiteral(str, load_stmt->filename); } static void deparseLockStmt(StringInfo str, LockStmt *lock_stmt) { ListCell *lc; appendStringInfoString(str, "LOCK TABLE "); deparseRelationExprList(str, lock_stmt->relations); appendStringInfoChar(str, ' '); if (lock_stmt->mode != AccessExclusiveLock) { appendStringInfoString(str, "IN "); switch (lock_stmt->mode) { case AccessShareLock: appendStringInfoString(str, "ACCESS SHARE "); break; case RowShareLock: appendStringInfoString(str, "ROW SHARE "); break; case RowExclusiveLock: appendStringInfoString(str, "ROW EXCLUSIVE "); break; case ShareUpdateExclusiveLock: appendStringInfoString(str, "SHARE UPDATE EXCLUSIVE "); break; case ShareLock: appendStringInfoString(str, "SHARE "); break; case ShareRowExclusiveLock: appendStringInfoString(str, "SHARE ROW EXCLUSIVE "); break; case ExclusiveLock: appendStringInfoString(str, "EXCLUSIVE "); break; case AccessExclusiveLock: appendStringInfoString(str, "ACCESS EXCLUSIVE "); break; default: Assert(false); break; } appendStringInfoString(str, "MODE "); } if (lock_stmt->nowait) appendStringInfoString(str, "NOWAIT "); removeTrailingSpace(str); } static void deparseConstraintsSetStmt(StringInfo str, ConstraintsSetStmt *constraints_set_stmt) { appendStringInfoString(str, "SET CONSTRAINTS "); if (list_length(constraints_set_stmt->constraints) > 0) { deparseQualifiedNameList(str, constraints_set_stmt->constraints); appendStringInfoChar(str, ' '); } else { appendStringInfoString(str, "ALL "); } if (constraints_set_stmt->deferred) appendStringInfoString(str, "DEFERRED"); else appendStringInfoString(str, "IMMEDIATE"); } static void deparseExplainStmt(StringInfo str, ExplainStmt *explain_stmt) { ListCell *lc = NULL; char *defname = NULL; appendStringInfoString(str, "EXPLAIN "); if (list_length(explain_stmt->options) > 0) { appendStringInfoChar(str, '('); foreach(lc, explain_stmt->options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); deparseGenericDefElemName(str, def_elem->defname); if (def_elem->arg != NULL && IsA(def_elem->arg, String)) { appendStringInfoChar(str, ' '); deparseOptBooleanOrString(str, strVal(def_elem->arg)); } else if (def_elem->arg != NULL && (IsA(def_elem->arg, Integer) || IsA(def_elem->arg, Float))) { appendStringInfoChar(str, ' '); deparseNumericOnly(str, (Value *) def_elem->arg); } if (lnext(explain_stmt->options, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); } deparseExplainableStmt(str, explain_stmt->query); } static void deparseCopyStmt(StringInfo str, CopyStmt *copy_stmt) { ListCell *lc = NULL; ListCell *lc2 = NULL; appendStringInfoString(str, "COPY "); if (copy_stmt->relation != NULL) { deparseRangeVar(str, copy_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); if (list_length(copy_stmt->attlist) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, copy_stmt->attlist); appendStringInfoChar(str, ')'); } appendStringInfoChar(str, ' '); } if (copy_stmt->query != NULL) { appendStringInfoChar(str, '('); deparsePreparableStmt(str, copy_stmt->query); appendStringInfoString(str, ") "); } if (copy_stmt->is_from) appendStringInfoString(str, "FROM "); else appendStringInfoString(str, "TO "); if (copy_stmt->is_program) appendStringInfoString(str, "PROGRAM "); if (copy_stmt->filename != NULL) { deparseStringLiteral(str, copy_stmt->filename); appendStringInfoChar(str, ' '); } else { if (copy_stmt->is_from) appendStringInfoString(str, "STDIN "); else appendStringInfoString(str, "STDOUT "); } if (list_length(copy_stmt->options) > 0) { appendStringInfoString(str, "WITH ("); foreach(lc, copy_stmt->options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "format") == 0) { appendStringInfoString(str, "FORMAT "); char *format = strVal(def_elem->arg); if (strcmp(format, "binary") == 0) appendStringInfoString(str, "BINARY"); else if (strcmp(format, "csv") == 0) appendStringInfoString(str, "CSV"); else Assert(false); } else if (strcmp(def_elem->defname, "freeze") == 0 && (def_elem->arg == NULL || intVal(def_elem->arg) == 1)) { appendStringInfoString(str, "FREEZE"); if (def_elem->arg != NULL && intVal(def_elem->arg) == 1) appendStringInfoString(str, " 1"); } else if (strcmp(def_elem->defname, "delimiter") == 0) { appendStringInfoString(str, "DELIMITER "); deparseStringLiteral(str, strVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "null") == 0) { appendStringInfoString(str, "NULL "); deparseStringLiteral(str, strVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "header") == 0 && (def_elem->arg == NULL || intVal(def_elem->arg) == 1)) { appendStringInfoString(str, "HEADER"); if (def_elem->arg != NULL && intVal(def_elem->arg) == 1) appendStringInfoString(str, " 1"); } else if (strcmp(def_elem->defname, "quote") == 0) { appendStringInfoString(str, "QUOTE "); deparseStringLiteral(str, strVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "escape") == 0) { appendStringInfoString(str, "ESCAPE "); deparseStringLiteral(str, strVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "force_quote") == 0) { appendStringInfoString(str, "FORCE_QUOTE "); if (IsA(def_elem->arg, A_Star)) { appendStringInfoChar(str, '*'); } else if (IsA(def_elem->arg, List)) { appendStringInfoChar(str, '('); deparseColumnList(str, castNode(List, def_elem->arg)); appendStringInfoChar(str, ')'); } else { Assert(false); } } else if (strcmp(def_elem->defname, "force_not_null") == 0) { appendStringInfoString(str, "FORCE_NOT_NULL ("); deparseColumnList(str, castNode(List, def_elem->arg)); appendStringInfoChar(str, ')'); } else if (strcmp(def_elem->defname, "force_null") == 0) { appendStringInfoString(str, "FORCE_NULL ("); deparseColumnList(str, castNode(List, def_elem->arg)); appendStringInfoChar(str, ')'); } else if (strcmp(def_elem->defname, "encoding") == 0) { appendStringInfoString(str, "ENCODING "); deparseStringLiteral(str, strVal(def_elem->arg)); } else { appendStringInfoString(str, quote_identifier(def_elem->defname)); if (def_elem->arg != NULL) appendStringInfoChar(str, ' '); if (def_elem->arg == NULL) { // Nothing } else if (IsA(def_elem->arg, String)) { deparseOptBooleanOrString(str, strVal(def_elem->arg)); } else if (IsA(def_elem->arg, Integer) || IsA(def_elem->arg, Float)) { deparseNumericOnly(str, (Value *) def_elem->arg); } else if (IsA(def_elem->arg, A_Star)) { deparseAStar(str, castNode(A_Star, def_elem->arg)); } else if (IsA(def_elem->arg, List)) { List *l = castNode(List, def_elem->arg); appendStringInfoChar(str, '('); foreach(lc2, l) { deparseOptBooleanOrString(str, strVal(lfirst(lc2))); if (lnext(l, lc2)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } } if (lnext(copy_stmt->options, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); } deparseWhereClause(str, copy_stmt->whereClause); removeTrailingSpace(str); } static void deparseDoStmt(StringInfo str, DoStmt *do_stmt) { ListCell *lc; appendStringInfoString(str, "DO "); foreach (lc, do_stmt->args) { DefElem *defel = castNode(DefElem, lfirst(lc)); if (strcmp(defel->defname, "language") == 0) { appendStringInfoString(str, "LANGUAGE "); appendStringInfoString(str, quote_identifier(strVal(defel->arg))); appendStringInfoChar(str, ' '); } else if (strcmp(defel->defname, "as") == 0) { char *strval = strVal(defel->arg); const char *delim = "$$"; if (strstr(strval, "$$") != NULL) delim = "$outer$"; appendStringInfoString(str, delim); appendStringInfoString(str, strval); appendStringInfoString(str, delim); appendStringInfoChar(str, ' '); } } removeTrailingSpace(str); } static void deparseDiscardStmt(StringInfo str, DiscardStmt *discard_stmt) { appendStringInfoString(str, "DISCARD "); switch (discard_stmt->target) { case DISCARD_ALL: appendStringInfoString(str, "ALL"); break; case DISCARD_PLANS: appendStringInfoString(str, "PLANS"); break; case DISCARD_SEQUENCES: appendStringInfoString(str, "SEQUENCES"); break; case DISCARD_TEMP: appendStringInfoString(str, "TEMP"); break; } } static void deparseDefineStmt(StringInfo str, DefineStmt *define_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE "); if (define_stmt->replace) appendStringInfoString(str, "OR REPLACE "); switch (define_stmt->kind) { case OBJECT_AGGREGATE: appendStringInfoString(str, "AGGREGATE "); break; case OBJECT_OPERATOR: appendStringInfoString(str, "OPERATOR "); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPE "); break; case OBJECT_TSPARSER: appendStringInfoString(str, "TEXT SEARCH PARSER "); break; case OBJECT_TSDICTIONARY: appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); break; case OBJECT_TSTEMPLATE: appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); break; case OBJECT_TSCONFIGURATION: appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); break; case OBJECT_COLLATION: appendStringInfoString(str, "COLLATION "); break; default: // This shouldn't happen Assert(false); break; } if (define_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); switch (define_stmt->kind) { case OBJECT_AGGREGATE: deparseFuncName(str, define_stmt->defnames); break; case OBJECT_OPERATOR: deparseAnyOperator(str, define_stmt->defnames); break; case OBJECT_TYPE: case OBJECT_TSPARSER: case OBJECT_TSDICTIONARY: case OBJECT_TSTEMPLATE: case OBJECT_TSCONFIGURATION: case OBJECT_COLLATION: deparseAnyName(str, define_stmt->defnames); break; default: Assert(false); } appendStringInfoChar(str, ' '); if (!define_stmt->oldstyle && define_stmt->kind == OBJECT_AGGREGATE) { deparseAggrArgs(str, define_stmt->args); appendStringInfoChar(str, ' '); } if (define_stmt->kind == OBJECT_COLLATION && list_length(define_stmt->definition) == 1 && strcmp(castNode(DefElem, linitial(define_stmt->definition))->defname, "from") == 0) { appendStringInfoString(str, "FROM "); deparseAnyName(str, castNode(List, castNode(DefElem, linitial(define_stmt->definition))->arg)); } else if (list_length(define_stmt->definition) > 0) { deparseDefinition(str, define_stmt->definition); } removeTrailingSpace(str); } static void deparseCompositeTypeStmt(StringInfo str, CompositeTypeStmt *composite_type_stmt) { ListCell *lc; RangeVar *typevar; appendStringInfoString(str, "CREATE TYPE "); deparseRangeVar(str, composite_type_stmt->typevar, DEPARSE_NODE_CONTEXT_CREATE_TYPE); appendStringInfoString(str, " AS ("); foreach(lc, composite_type_stmt->coldeflist) { deparseColumnDef(str, castNode(ColumnDef, lfirst(lc))); if (lnext(composite_type_stmt->coldeflist, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } static void deparseCreateEnumStmt(StringInfo str, CreateEnumStmt *create_enum_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE TYPE "); deparseAnyName(str, create_enum_stmt->typeName); appendStringInfoString(str, " AS ENUM ("); foreach(lc, create_enum_stmt->vals) { deparseStringLiteral(str, strVal(lfirst(lc))); if (lnext(create_enum_stmt->vals, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } static void deparseCreateRangeStmt(StringInfo str, CreateRangeStmt *create_range_stmt) { appendStringInfoString(str, "CREATE TYPE "); deparseAnyName(str, create_range_stmt->typeName); appendStringInfoString(str, " AS RANGE "); deparseDefinition(str, create_range_stmt->params); } static void deparseAlterEnumStmt(StringInfo str, AlterEnumStmt *alter_enum_stmt) { appendStringInfoString(str, "ALTER TYPE "); deparseAnyName(str, alter_enum_stmt->typeName); appendStringInfoChar(str, ' '); if (alter_enum_stmt->oldVal == NULL) { appendStringInfoString(str, "ADD VALUE "); if (alter_enum_stmt->skipIfNewValExists) appendStringInfoString(str, "IF NOT EXISTS "); deparseStringLiteral(str, alter_enum_stmt->newVal); appendStringInfoChar(str, ' '); if (alter_enum_stmt->newValNeighbor) { if (alter_enum_stmt->newValIsAfter) appendStringInfoString(str, "AFTER "); else appendStringInfoString(str, "BEFORE "); deparseStringLiteral(str, alter_enum_stmt->newValNeighbor); } } else { appendStringInfoString(str, "RENAME VALUE "); deparseStringLiteral(str, alter_enum_stmt->oldVal); appendStringInfoString(str, " TO "); deparseStringLiteral(str, alter_enum_stmt->newVal); } removeTrailingSpace(str); } static void deparseAlterExtensionStmt(StringInfo str, AlterExtensionStmt *alter_extension_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "ALTER EXTENSION "); deparseColId(str, alter_extension_stmt->extname); appendStringInfoString(str, " UPDATE "); foreach (lc, alter_extension_stmt->options) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); if (strcmp(def_elem->defname, "new_version") == 0) { appendStringInfoString(str, "TO "); deparseNonReservedWordOrSconst(str, strVal(def_elem->arg)); } else { Assert(false); } appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseAlterExtensionContentsStmt(StringInfo str, AlterExtensionContentsStmt *alter_extension_contents_stmt) { List *l = NULL; appendStringInfoString(str, "ALTER EXTENSION "); deparseColId(str, alter_extension_contents_stmt->extname); appendStringInfoChar(str, ' '); if (alter_extension_contents_stmt->action == 1) appendStringInfoString(str, "ADD "); else if (alter_extension_contents_stmt->action == -1) appendStringInfoString(str, "DROP "); else Assert(false); switch (alter_extension_contents_stmt->objtype) { case OBJECT_ACCESS_METHOD: appendStringInfoString(str, "ACCESS METHOD "); break; case OBJECT_AGGREGATE: appendStringInfoString(str, "AGGREGATE "); break; case OBJECT_CAST: appendStringInfoString(str, "CAST "); break; case OBJECT_COLLATION: appendStringInfoString(str, "COLLATION "); break; case OBJECT_CONVERSION: appendStringInfoString(str, "CONVERSION "); break; case OBJECT_DOMAIN: appendStringInfoString(str, "DOMAIN "); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); break; case OBJECT_LANGUAGE: appendStringInfoString(str, "LANGUAGE "); break; case OBJECT_OPERATOR: appendStringInfoString(str, "OPERATOR "); break; case OBJECT_OPCLASS: appendStringInfoString(str, "OPERATOR CLASS "); break; case OBJECT_OPFAMILY: appendStringInfoString(str, "OPERATOR FAMILY "); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMA "); break; case OBJECT_EVENT_TRIGGER: appendStringInfoString(str, "EVENT TRIGGER "); break; case OBJECT_TABLE: appendStringInfoString(str, "TABLE "); break; case OBJECT_TSPARSER: appendStringInfoString(str, "TEXT SEARCH PARSER "); break; case OBJECT_TSDICTIONARY: appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); break; case OBJECT_TSTEMPLATE: appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); break; case OBJECT_TSCONFIGURATION: appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCE "); break; case OBJECT_VIEW: appendStringInfoString(str, "VIEW "); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); break; case OBJECT_FOREIGN_TABLE: appendStringInfoString(str, "FOREIGN TABLE "); break; case OBJECT_FDW: appendStringInfoString(str, "FOREIGN DATA WRAPPER "); break; case OBJECT_FOREIGN_SERVER: appendStringInfoString(str, "SERVER "); break; case OBJECT_TRANSFORM: appendStringInfoString(str, "TRANSFORM "); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPE "); break; default: // No other object types are supported here in the parser Assert(false); break; } switch (alter_extension_contents_stmt->objtype) { // any_name case OBJECT_COLLATION: case OBJECT_CONVERSION: case OBJECT_TABLE: case OBJECT_TSPARSER: case OBJECT_TSDICTIONARY: case OBJECT_TSTEMPLATE: case OBJECT_TSCONFIGURATION: case OBJECT_SEQUENCE: case OBJECT_VIEW: case OBJECT_MATVIEW: case OBJECT_FOREIGN_TABLE: deparseAnyName(str, castNode(List, alter_extension_contents_stmt->object)); break; // name case OBJECT_ACCESS_METHOD: case OBJECT_LANGUAGE: case OBJECT_SCHEMA: case OBJECT_EVENT_TRIGGER: case OBJECT_FDW: case OBJECT_FOREIGN_SERVER: deparseColId(str, strVal(alter_extension_contents_stmt->object)); break; case OBJECT_AGGREGATE: deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, alter_extension_contents_stmt->object)); break; case OBJECT_CAST: l = castNode(List, alter_extension_contents_stmt->object); Assert(list_length(l) == 2); appendStringInfoChar(str, '('); deparseTypeName(str, castNode(TypeName, linitial(l))); appendStringInfoString(str, " AS "); deparseTypeName(str, castNode(TypeName, lsecond(l))); appendStringInfoChar(str, ')'); break; case OBJECT_DOMAIN: case OBJECT_TYPE: deparseTypeName(str, castNode(TypeName, alter_extension_contents_stmt->object)); break; case OBJECT_FUNCTION: case OBJECT_PROCEDURE: case OBJECT_ROUTINE: deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_extension_contents_stmt->object)); break; case OBJECT_OPERATOR: deparseOperatorWithArgtypes(str, castNode(ObjectWithArgs, alter_extension_contents_stmt->object)); break; case OBJECT_OPFAMILY: case OBJECT_OPCLASS: l = castNode(List, alter_extension_contents_stmt->object); Assert(list_length(l) == 2); deparseAnyNameSkipFirst(str, l); appendStringInfoString(str, " USING "); deparseColId(str, strVal(linitial(l))); break; case OBJECT_TRANSFORM: l = castNode(List, alter_extension_contents_stmt->object); appendStringInfoString(str, "FOR "); deparseTypeName(str, castNode(TypeName, linitial(l))); appendStringInfoString(str, " LANGUAGE "); deparseColId(str, strVal(lsecond(l))); break; default: Assert(false); break; } } static void deparseAccessPriv(StringInfo str, AccessPriv *access_priv) { ListCell *lc; if (access_priv->priv_name != NULL) { if (strcmp(access_priv->priv_name, "select") == 0) appendStringInfoString(str, "select"); else if (strcmp(access_priv->priv_name, "references") == 0) appendStringInfoString(str, "references"); else if (strcmp(access_priv->priv_name, "create") == 0) appendStringInfoString(str, "create"); else appendStringInfoString(str, quote_identifier(access_priv->priv_name)); } else { appendStringInfoString(str, "ALL"); } appendStringInfoChar(str, ' '); if (list_length(access_priv->cols) > 0) { appendStringInfoChar(str, '('); deparseColumnList(str, access_priv->cols); appendStringInfoChar(str, ')'); } removeTrailingSpace(str); } static void deparseGrantStmt(StringInfo str, GrantStmt *grant_stmt) { ListCell *lc; if (grant_stmt->is_grant) appendStringInfoString(str, "GRANT "); else appendStringInfoString(str, "REVOKE "); if (!grant_stmt->is_grant && grant_stmt->grant_option) appendStringInfoString(str, "GRANT OPTION FOR "); if (list_length(grant_stmt->privileges) > 0) { foreach(lc, grant_stmt->privileges) { deparseAccessPriv(str, castNode(AccessPriv, lfirst(lc))); if (lnext(grant_stmt->privileges, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); } else { appendStringInfoString(str, "ALL "); } appendStringInfoString(str, "ON "); deparsePrivilegeTarget(str, grant_stmt->targtype, grant_stmt->objtype, grant_stmt->objects); appendStringInfoChar(str, ' '); if (grant_stmt->is_grant) appendStringInfoString(str, "TO "); else appendStringInfoString(str, "FROM "); foreach(lc, grant_stmt->grantees) { deparseRoleSpec(str, castNode(RoleSpec, lfirst(lc))); if (lnext(grant_stmt->grantees, lc)) appendStringInfoChar(str, ','); appendStringInfoChar(str, ' '); } if (grant_stmt->is_grant && grant_stmt->grant_option) appendStringInfoString(str, "WITH GRANT OPTION "); deparseOptDropBehavior(str, grant_stmt->behavior); removeTrailingSpace(str); } static void deparseGrantRoleStmt(StringInfo str, GrantRoleStmt *grant_role_stmt) { ListCell *lc; if (grant_role_stmt->is_grant) appendStringInfoString(str, "GRANT "); else appendStringInfoString(str, "REVOKE "); foreach(lc, grant_role_stmt->granted_roles) { deparseAccessPriv(str, castNode(AccessPriv, lfirst(lc))); if (lnext(grant_role_stmt->granted_roles, lc)) appendStringInfoChar(str, ','); appendStringInfoChar(str, ' '); } if (grant_role_stmt->is_grant) appendStringInfoString(str, "TO "); else appendStringInfoString(str, "FROM "); deparseRoleList(str, grant_role_stmt->grantee_roles); appendStringInfoChar(str, ' '); if (grant_role_stmt->admin_opt) appendStringInfoString(str, "WITH ADMIN OPTION "); removeTrailingSpace(str); } static void deparseDropRoleStmt(StringInfo str, DropRoleStmt *drop_role_stmt) { ListCell *lc; appendStringInfoString(str, "DROP ROLE "); if (drop_role_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); deparseRoleList(str, drop_role_stmt->roles); } static void deparseIndexStmt(StringInfo str, IndexStmt *index_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE "); if (index_stmt->unique) appendStringInfoString(str, "UNIQUE "); appendStringInfoString(str, "INDEX "); if (index_stmt->concurrent) appendStringInfoString(str, "CONCURRENTLY "); if (index_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); if (index_stmt->idxname != NULL) { appendStringInfoString(str, index_stmt->idxname); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "ON "); deparseRangeVar(str, index_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (index_stmt->accessMethod != NULL) { appendStringInfoString(str, "USING "); appendStringInfoString(str, quote_identifier(index_stmt->accessMethod)); appendStringInfoChar(str, ' '); } appendStringInfoChar(str, '('); foreach (lc, index_stmt->indexParams) { deparseIndexElem(str, castNode(IndexElem, lfirst(lc))); if (lnext(index_stmt->indexParams, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); if (list_length(index_stmt->indexIncludingParams) > 0) { appendStringInfoString(str, "INCLUDE ("); foreach (lc, index_stmt->indexIncludingParams) { deparseIndexElem(str, castNode(IndexElem, lfirst(lc))); if (lnext(index_stmt->indexIncludingParams, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); } deparseOptWith(str, index_stmt->options); if (index_stmt->tableSpace != NULL) { appendStringInfoString(str, "TABLESPACE "); appendStringInfoString(str, quote_identifier(index_stmt->tableSpace)); appendStringInfoChar(str, ' '); } deparseWhereClause(str, index_stmt->whereClause); removeTrailingSpace(str); } static void deparseAlterOpFamilyStmt(StringInfo str, AlterOpFamilyStmt *alter_op_family_stmt) { appendStringInfoString(str, "ALTER OPERATOR FAMILY "); deparseAnyName(str, alter_op_family_stmt->opfamilyname); appendStringInfoChar(str, ' '); appendStringInfoString(str, "USING "); appendStringInfoString(str, quote_identifier(alter_op_family_stmt->amname)); appendStringInfoChar(str, ' '); if (alter_op_family_stmt->isDrop) appendStringInfoString(str, "DROP "); else appendStringInfoString(str, "ADD "); deparseOpclassItemList(str, alter_op_family_stmt->items); } static void deparsePrepareStmt(StringInfo str, PrepareStmt *prepare_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "PREPARE "); deparseColId(str, prepare_stmt->name); if (list_length(prepare_stmt->argtypes) > 0) { appendStringInfoChar(str, '('); deparseTypeList(str, prepare_stmt->argtypes); appendStringInfoChar(str, ')'); } appendStringInfoString(str, " AS "); deparsePreparableStmt(str, prepare_stmt->query); } static void deparseExecuteStmt(StringInfo str, ExecuteStmt *execute_stmt) { ListCell *lc; appendStringInfoString(str, "EXECUTE "); appendStringInfoString(str, quote_identifier(execute_stmt->name)); if (list_length(execute_stmt->params) > 0) { appendStringInfoChar(str, '('); deparseExprList(str, execute_stmt->params); appendStringInfoChar(str, ')'); } } static void deparseDeallocateStmt(StringInfo str, DeallocateStmt *deallocate_stmt) { appendStringInfoString(str, "DEALLOCATE "); if (deallocate_stmt->name != NULL) appendStringInfoString(str, quote_identifier(deallocate_stmt->name)); else appendStringInfoString(str, "ALL"); } // "AlterOptRoleElem" in gram.y static void deparseAlterRoleElem(StringInfo str, DefElem *def_elem) { if (strcmp(def_elem->defname, "password") == 0) { appendStringInfoString(str, "PASSWORD "); if (def_elem->arg == NULL) { appendStringInfoString(str, "NULL"); } else if (IsA(def_elem->arg, ParamRef)) { deparseParamRef(str, castNode(ParamRef, def_elem->arg)); } else if (IsA(def_elem->arg, String)) { deparseStringLiteral(str, strVal(def_elem->arg)); } else { Assert(false); } } else if (strcmp(def_elem->defname, "connectionlimit") == 0) { appendStringInfo(str, "CONNECTION LIMIT %d", intVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "validUntil") == 0) { appendStringInfoString(str, "VALID UNTIL "); deparseStringLiteral(str, strVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "superuser") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "SUPERUSER"); } else if (strcmp(def_elem->defname, "superuser") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "NOSUPERUSER"); } else if (strcmp(def_elem->defname, "createrole") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "CREATEROLE"); } else if (strcmp(def_elem->defname, "createrole") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "NOCREATEROLE"); } else if (strcmp(def_elem->defname, "isreplication") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "REPLICATION"); } else if (strcmp(def_elem->defname, "isreplication") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "NOREPLICATION"); } else if (strcmp(def_elem->defname, "createdb") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "CREATEDB"); } else if (strcmp(def_elem->defname, "createdb") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "NOCREATEDB"); } else if (strcmp(def_elem->defname, "canlogin") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "LOGIN"); } else if (strcmp(def_elem->defname, "canlogin") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "NOLOGIN"); } else if (strcmp(def_elem->defname, "bypassrls") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "BYPASSRLS"); } else if (strcmp(def_elem->defname, "bypassrls") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "NOBYPASSRLS"); } else if (strcmp(def_elem->defname, "inherit") == 0 && intVal(def_elem->arg) == 1) { appendStringInfoString(str, "INHERIT"); } else if (strcmp(def_elem->defname, "inherit") == 0 && intVal(def_elem->arg) == 0) { appendStringInfoString(str, "NOINHERIT"); } else { Assert(false); } } // "CreateOptRoleElem" in gram.y static void deparseCreateRoleElem(StringInfo str, DefElem *def_elem) { if (strcmp(def_elem->defname, "sysid") == 0) { appendStringInfo(str, "SYSID %d", intVal(def_elem->arg)); } else if (strcmp(def_elem->defname, "adminmembers") == 0) { appendStringInfoString(str, "ADMIN "); deparseRoleList(str, castNode(List, def_elem->arg)); } else if (strcmp(def_elem->defname, "rolemembers") == 0) { appendStringInfoString(str, "ROLE "); deparseRoleList(str, castNode(List, def_elem->arg)); } else if (strcmp(def_elem->defname, "addroleto") == 0) { appendStringInfoString(str, "IN ROLE "); deparseRoleList(str, castNode(List, def_elem->arg)); } else { deparseAlterRoleElem(str, def_elem); } } static void deparseCreatePLangStmt(StringInfo str, CreatePLangStmt *create_p_lang_stmt) { appendStringInfoString(str, "CREATE "); if (create_p_lang_stmt->replace) appendStringInfoString(str, "OR REPLACE "); if (create_p_lang_stmt->pltrusted) appendStringInfoString(str, "TRUSTED "); appendStringInfoString(str, "LANGUAGE "); deparseNonReservedWordOrSconst(str, create_p_lang_stmt->plname); appendStringInfoChar(str, ' '); appendStringInfoString(str, "HANDLER "); deparseHandlerName(str, create_p_lang_stmt->plhandler); appendStringInfoChar(str, ' '); if (create_p_lang_stmt->plinline) { appendStringInfoString(str, "INLINE "); deparseHandlerName(str, create_p_lang_stmt->plinline); appendStringInfoChar(str, ' '); } if (create_p_lang_stmt->plvalidator) { appendStringInfoString(str, "VALIDATOR "); deparseHandlerName(str, create_p_lang_stmt->plvalidator); appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseCreateRoleStmt(StringInfo str, CreateRoleStmt *create_role_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE "); switch (create_role_stmt->stmt_type) { case ROLESTMT_ROLE: appendStringInfoString(str, "ROLE "); break; case ROLESTMT_USER: appendStringInfoString(str, "USER "); break; case ROLESTMT_GROUP: appendStringInfoString(str, "GROUP "); break; } appendStringInfoString(str, quote_identifier(create_role_stmt->role)); appendStringInfoChar(str, ' '); if (create_role_stmt->options != NULL) { appendStringInfoString(str, "WITH "); foreach (lc, create_role_stmt->options) { deparseCreateRoleElem(str, castNode(DefElem, lfirst(lc))); appendStringInfoChar(str, ' '); } } removeTrailingSpace(str); } static void deparseAlterRoleStmt(StringInfo str, AlterRoleStmt *alter_role_stmt) { ListCell *lc; appendStringInfoString(str, "ALTER "); if (list_length(alter_role_stmt->options) == 1 && strcmp(castNode(DefElem, linitial(alter_role_stmt->options))->defname, "rolemembers") == 0) { appendStringInfoString(str, "GROUP "); deparseRoleSpec(str, alter_role_stmt->role); appendStringInfoChar(str, ' '); if (alter_role_stmt->action == 1) { appendStringInfoString(str, "ADD USER "); } else if (alter_role_stmt->action == -1) { appendStringInfoString(str, "DROP USER "); } else { Assert(false); } deparseRoleList(str, castNode(List, castNode(DefElem, linitial(alter_role_stmt->options))->arg)); } else { appendStringInfoString(str, "ROLE "); deparseRoleSpec(str, alter_role_stmt->role); appendStringInfoChar(str, ' '); appendStringInfoString(str, "WITH "); foreach (lc, alter_role_stmt->options) { deparseAlterRoleElem(str, castNode(DefElem, lfirst(lc))); appendStringInfoChar(str, ' '); } } removeTrailingSpace(str); } static void deparseDeclareCursorStmt(StringInfo str, DeclareCursorStmt *declare_cursor_stmt) { appendStringInfoString(str, "DECLARE "); appendStringInfoString(str, quote_identifier(declare_cursor_stmt->portalname)); appendStringInfoChar(str, ' '); if (declare_cursor_stmt->options & CURSOR_OPT_BINARY) appendStringInfoString(str, "BINARY "); if (declare_cursor_stmt->options & CURSOR_OPT_SCROLL) appendStringInfoString(str, "SCROLL "); if (declare_cursor_stmt->options & CURSOR_OPT_NO_SCROLL) appendStringInfoString(str, "NO SCROLL "); if (declare_cursor_stmt->options & CURSOR_OPT_INSENSITIVE) appendStringInfoString(str, "INSENSITIVE "); appendStringInfoString(str, "CURSOR "); if (declare_cursor_stmt->options & CURSOR_OPT_HOLD) appendStringInfoString(str, "WITH HOLD "); appendStringInfoString(str, "FOR "); deparseSelectStmt(str, castNode(SelectStmt, declare_cursor_stmt->query)); } static void deparseFetchStmt(StringInfo str, FetchStmt *fetch_stmt) { if (fetch_stmt->ismove) appendStringInfoString(str, "MOVE "); else appendStringInfoString(str, "FETCH "); switch (fetch_stmt->direction) { case FETCH_FORWARD: if (fetch_stmt->howMany == 1) { // Default } else if (fetch_stmt->howMany == FETCH_ALL) { appendStringInfoString(str, "ALL "); } else { appendStringInfo(str, "FORWARD %ld ", fetch_stmt->howMany); } break; case FETCH_BACKWARD: if (fetch_stmt->howMany == 1) { appendStringInfoString(str, "PRIOR "); } else if (fetch_stmt->howMany == FETCH_ALL) { appendStringInfoString(str, "BACKWARD ALL "); } else { appendStringInfo(str, "BACKWARD %ld ", fetch_stmt->howMany); } break; case FETCH_ABSOLUTE: if (fetch_stmt->howMany == 1) { appendStringInfoString(str, "FIRST "); } else if (fetch_stmt->howMany == -1) { appendStringInfoString(str, "LAST "); } else { appendStringInfo(str, "ABSOLUTE %ld ", fetch_stmt->howMany); } break; case FETCH_RELATIVE: appendStringInfo(str, "RELATIVE %ld ", fetch_stmt->howMany); } appendStringInfoString(str, fetch_stmt->portalname); } static void deparseAlterDefaultPrivilegesStmt(StringInfo str, AlterDefaultPrivilegesStmt *alter_default_privileges_stmt) { ListCell *lc; appendStringInfoString(str, "ALTER DEFAULT PRIVILEGES "); foreach (lc, alter_default_privileges_stmt->options) { DefElem *defelem = castNode(DefElem, lfirst(lc)); if (strcmp(defelem->defname, "schemas") == 0) { appendStringInfoString(str, "IN SCHEMA "); deparseNameList(str, castNode(List, defelem->arg)); appendStringInfoChar(str, ' '); } else if (strcmp(defelem->defname, "roles") == 0) { appendStringInfoString(str, "FOR ROLE "); deparseRoleList(str, castNode(List, defelem->arg)); appendStringInfoChar(str, ' '); } else { // No other DefElems are supported Assert(false); } } deparseGrantStmt(str, alter_default_privileges_stmt->action); } static void deparseReindexStmt(StringInfo str, ReindexStmt *reindex_stmt) { appendStringInfoString(str, "REINDEX "); if (reindex_stmt->options & REINDEXOPT_VERBOSE) appendStringInfoString(str, "(VERBOSE) "); switch (reindex_stmt->kind) { case REINDEX_OBJECT_INDEX: appendStringInfoString(str, "INDEX "); break; case REINDEX_OBJECT_TABLE: appendStringInfoString(str, "TABLE "); break; case REINDEX_OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMA "); break; case REINDEX_OBJECT_SYSTEM: appendStringInfoString(str, "SYSTEM "); break; case REINDEX_OBJECT_DATABASE: appendStringInfoString(str, "DATABASE "); break; } if (reindex_stmt->concurrent) appendStringInfoString(str, "CONCURRENTLY "); if (reindex_stmt->relation != NULL) { deparseRangeVar(str, reindex_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); } else if (reindex_stmt->name != NULL) { appendStringInfoString(str, quote_identifier(reindex_stmt->name)); } } static void deparseRuleStmt(StringInfo str, RuleStmt* rule_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE "); if (rule_stmt->replace) appendStringInfoString(str, "OR REPLACE "); appendStringInfoString(str, "RULE "); appendStringInfoString(str, quote_identifier(rule_stmt->rulename)); appendStringInfoString(str, " AS ON "); switch (rule_stmt->event) { case CMD_UNKNOWN: case CMD_UTILITY: case CMD_NOTHING: // Not supported here Assert(false); break; case CMD_SELECT: appendStringInfoString(str, "SELECT "); break; case CMD_UPDATE: appendStringInfoString(str, "UPDATE "); break; case CMD_INSERT: appendStringInfoString(str, "INSERT "); break; case CMD_DELETE: appendStringInfoString(str, "DELETE "); break; } appendStringInfoString(str, "TO "); deparseRangeVar(str, rule_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); deparseWhereClause(str, rule_stmt->whereClause); appendStringInfoString(str, "DO "); if (rule_stmt->instead) appendStringInfoString(str, "INSTEAD "); if (list_length(rule_stmt->actions) == 0) { appendStringInfoString(str, "NOTHING"); } else if (list_length(rule_stmt->actions) == 1) { deparseRuleActionStmt(str, linitial(rule_stmt->actions)); } else { appendStringInfoChar(str, '('); foreach (lc, rule_stmt->actions) { deparseRuleActionStmt(str, lfirst(lc)); if (lnext(rule_stmt->actions, lc)) appendStringInfoString(str, "; "); } appendStringInfoChar(str, ')'); } } static void deparseNotifyStmt(StringInfo str, NotifyStmt *notify_stmt) { appendStringInfoString(str, "NOTIFY "); appendStringInfoString(str, quote_identifier(notify_stmt->conditionname)); if (notify_stmt->payload != NULL) { appendStringInfoString(str, ", "); deparseStringLiteral(str, notify_stmt->payload); } } static void deparseListenStmt(StringInfo str, ListenStmt *listen_stmt) { appendStringInfoString(str, "LISTEN "); appendStringInfoString(str, quote_identifier(listen_stmt->conditionname)); } static void deparseUnlistenStmt(StringInfo str, UnlistenStmt *unlisten_stmt) { appendStringInfoString(str, "UNLISTEN "); if (unlisten_stmt->conditionname == NULL) appendStringInfoString(str, "*"); else appendStringInfoString(str, quote_identifier(unlisten_stmt->conditionname)); } static void deparseCreateSeqStmt(StringInfo str, CreateSeqStmt *create_seq_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE "); deparseOptTemp(str, create_seq_stmt->sequence->relpersistence); appendStringInfoString(str, "SEQUENCE "); if (create_seq_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); deparseRangeVar(str, create_seq_stmt->sequence, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); deparseOptSeqOptList(str, create_seq_stmt->options); removeTrailingSpace(str); } static void deparseAlterFunctionStmt(StringInfo str, AlterFunctionStmt *alter_function_stmt) { ListCell *lc; appendStringInfoString(str, "ALTER "); switch (alter_function_stmt->objtype) { case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); break; default: // Not supported here Assert(false); break; } deparseFunctionWithArgtypes(str, alter_function_stmt->func); appendStringInfoChar(str, ' '); foreach (lc, alter_function_stmt->actions) { deparseCommonFuncOptItem(str, castNode(DefElem, lfirst(lc))); if (lnext(alter_function_stmt->actions, lc)) appendStringInfoChar(str, ' '); } } static void deparseTruncateStmt(StringInfo str, TruncateStmt *truncate_stmt) { appendStringInfoString(str, "TRUNCATE "); deparseRelationExprList(str, truncate_stmt->relations); appendStringInfoChar(str, ' '); if (truncate_stmt->restart_seqs) appendStringInfoString(str, "RESTART IDENTITY "); deparseOptDropBehavior(str, truncate_stmt->behavior); removeTrailingSpace(str); } static void deparseCreateEventTrigStmt(StringInfo str, CreateEventTrigStmt *create_event_trig_stmt) { ListCell *lc = NULL; ListCell *lc2 = NULL; appendStringInfoString(str, "CREATE EVENT TRIGGER "); appendStringInfoString(str, quote_identifier(create_event_trig_stmt->trigname)); appendStringInfoChar(str, ' '); appendStringInfoString(str, "ON "); appendStringInfoString(str, quote_identifier(create_event_trig_stmt->eventname)); appendStringInfoChar(str, ' '); if (create_event_trig_stmt->whenclause) { appendStringInfoString(str, "WHEN "); foreach (lc, create_event_trig_stmt->whenclause) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); List *l = castNode(List, def_elem->arg); appendStringInfoString(str, quote_identifier(def_elem->defname)); appendStringInfoString(str, " IN ("); foreach (lc2, l) { deparseStringLiteral(str, strVal(lfirst(lc2))); if (lnext(l, lc2)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); if (lnext(create_event_trig_stmt->whenclause, lc)) appendStringInfoString(str, " AND "); } appendStringInfoChar(str, ' '); } appendStringInfoString(str, "EXECUTE FUNCTION "); deparseFuncName(str, create_event_trig_stmt->funcname); appendStringInfoString(str, "()"); } static void deparseAlterEventTrigStmt(StringInfo str, AlterEventTrigStmt *alter_event_trig_stmt) { appendStringInfoString(str, "ALTER EVENT TRIGGER "); appendStringInfoString(str, quote_identifier(alter_event_trig_stmt->trigname)); appendStringInfoChar(str, ' '); switch (alter_event_trig_stmt->tgenabled) { case TRIGGER_FIRES_ON_ORIGIN: appendStringInfoString(str, "ENABLE"); break; case TRIGGER_FIRES_ON_REPLICA: appendStringInfoString(str, "ENABLE REPLICA"); break; case TRIGGER_FIRES_ALWAYS: appendStringInfoString(str, "ENABLE ALWAYS"); break; case TRIGGER_DISABLED: appendStringInfoString(str, "DISABLE"); break; } } static void deparseRefreshMatViewStmt(StringInfo str, RefreshMatViewStmt *refresh_mat_view_stmt) { appendStringInfoString(str, "REFRESH MATERIALIZED VIEW "); if (refresh_mat_view_stmt->concurrent) appendStringInfoString(str, "CONCURRENTLY "); deparseRangeVar(str, refresh_mat_view_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (refresh_mat_view_stmt->skipData) appendStringInfoString(str, "WITH NO DATA "); removeTrailingSpace(str); } static void deparseReplicaIdentityStmt(StringInfo str, ReplicaIdentityStmt *replica_identity_stmt) { switch (replica_identity_stmt->identity_type) { case REPLICA_IDENTITY_NOTHING: appendStringInfoString(str, "NOTHING "); break; case REPLICA_IDENTITY_FULL: appendStringInfoString(str, "FULL "); break; case REPLICA_IDENTITY_DEFAULT: appendStringInfoString(str, "DEFAULT "); break; case REPLICA_IDENTITY_INDEX: Assert(replica_identity_stmt->name != NULL); appendStringInfoString(str, "USING INDEX "); appendStringInfoString(str, quote_identifier(replica_identity_stmt->name)); break; } } static void deparseCreatePolicyStmt(StringInfo str, CreatePolicyStmt *create_policy_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "CREATE POLICY "); deparseColId(str, create_policy_stmt->policy_name); appendStringInfoString(str, " ON "); deparseRangeVar(str, create_policy_stmt->table, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (!create_policy_stmt->permissive) appendStringInfoString(str, "AS RESTRICTIVE "); if (strcmp(create_policy_stmt->cmd_name, "all") == 0) Assert(true); // Default else if (strcmp(create_policy_stmt->cmd_name, "select") == 0) appendStringInfoString(str, "FOR SELECT "); else if (strcmp(create_policy_stmt->cmd_name, "insert") == 0) appendStringInfoString(str, "FOR INSERT "); else if (strcmp(create_policy_stmt->cmd_name, "update") == 0) appendStringInfoString(str, "FOR UPDATE "); else if (strcmp(create_policy_stmt->cmd_name, "delete") == 0) appendStringInfoString(str, "FOR DELETE "); else Assert(false); appendStringInfoString(str, "TO "); deparseRoleList(str, create_policy_stmt->roles); appendStringInfoChar(str, ' '); if (create_policy_stmt->qual != NULL) { appendStringInfoString(str, "USING ("); deparseExpr(str, create_policy_stmt->qual); appendStringInfoString(str, ") "); } if (create_policy_stmt->with_check != NULL) { appendStringInfoString(str, "WITH CHECK ("); deparseExpr(str, create_policy_stmt->with_check); appendStringInfoString(str, ") "); } } static void deparseAlterPolicyStmt(StringInfo str, AlterPolicyStmt *alter_policy_stmt) { appendStringInfoString(str, "ALTER POLICY "); appendStringInfoString(str, quote_identifier(alter_policy_stmt->policy_name)); appendStringInfoString(str, " ON "); deparseRangeVar(str, alter_policy_stmt->table, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (list_length(alter_policy_stmt->roles) > 0) { appendStringInfoString(str, "TO "); deparseRoleList(str, alter_policy_stmt->roles); appendStringInfoChar(str, ' '); } if (alter_policy_stmt->qual != NULL) { appendStringInfoString(str, "USING ("); deparseExpr(str, alter_policy_stmt->qual); appendStringInfoString(str, ") "); } if (alter_policy_stmt->with_check != NULL) { appendStringInfoString(str, "WITH CHECK ("); deparseExpr(str, alter_policy_stmt->with_check); appendStringInfoString(str, ") "); } } static void deparseCreateTableSpaceStmt(StringInfo str, CreateTableSpaceStmt *create_table_space_stmt) { appendStringInfoString(str, "CREATE TABLESPACE "); deparseColId(str, create_table_space_stmt->tablespacename); appendStringInfoChar(str, ' '); if (create_table_space_stmt->owner != NULL) { appendStringInfoString(str, "OWNER "); deparseRoleSpec(str, create_table_space_stmt->owner); appendStringInfoChar(str, ' '); } appendStringInfoString(str, "LOCATION "); deparseStringLiteral(str, create_table_space_stmt->location); appendStringInfoChar(str, ' '); deparseOptWith(str, create_table_space_stmt->options); removeTrailingSpace(str); } static void deparseCreateTransformStmt(StringInfo str, CreateTransformStmt *create_transform_stmt) { appendStringInfoString(str, "CREATE "); if (create_transform_stmt->replace) appendStringInfoString(str, "OR REPLACE "); appendStringInfoString(str, "TRANSFORM FOR "); deparseTypeName(str, create_transform_stmt->type_name); appendStringInfoChar(str, ' '); appendStringInfoString(str, "LANGUAGE "); appendStringInfoString(str, quote_identifier(create_transform_stmt->lang)); appendStringInfoChar(str, ' '); appendStringInfoChar(str, '('); if (create_transform_stmt->fromsql) { appendStringInfoString(str, "FROM SQL WITH FUNCTION "); deparseFunctionWithArgtypes(str, create_transform_stmt->fromsql); } if (create_transform_stmt->fromsql && create_transform_stmt->tosql) appendStringInfoString(str, ", "); if (create_transform_stmt->tosql) { appendStringInfoString(str, "TO SQL WITH FUNCTION "); deparseFunctionWithArgtypes(str, create_transform_stmt->tosql); } appendStringInfoChar(str, ')'); } static void deparseCreateAmStmt(StringInfo str, CreateAmStmt *create_am_stmt) { appendStringInfoString(str, "CREATE ACCESS METHOD "); appendStringInfoString(str, quote_identifier(create_am_stmt->amname)); appendStringInfoChar(str, ' '); appendStringInfoString(str, "TYPE "); switch (create_am_stmt->amtype) { case AMTYPE_INDEX: appendStringInfoString(str, "INDEX "); break; case AMTYPE_TABLE: appendStringInfoString(str, "TABLE "); break; } appendStringInfoString(str, "HANDLER "); deparseHandlerName(str, create_am_stmt->handler_name); } static void deparseCreatePublicationStmt(StringInfo str, CreatePublicationStmt *create_publication_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "CREATE PUBLICATION "); appendStringInfoString(str, quote_identifier(create_publication_stmt->pubname)); appendStringInfoChar(str, ' '); if (list_length(create_publication_stmt->tables) > 0) { appendStringInfoString(str, "FOR TABLE "); deparseRelationExprList(str, create_publication_stmt->tables); appendStringInfoChar(str, ' '); } else if (create_publication_stmt->for_all_tables) { appendStringInfoString(str, "FOR ALL TABLES "); } deparseOptDefinition(str, create_publication_stmt->options); removeTrailingSpace(str); } static void deparseAlterPublicationStmt(StringInfo str, AlterPublicationStmt *alter_publication_stmt) { appendStringInfoString(str, "ALTER PUBLICATION "); deparseColId(str, alter_publication_stmt->pubname); appendStringInfoChar(str, ' '); if (list_length(alter_publication_stmt->tables) > 0) { switch (alter_publication_stmt->tableAction) { case DEFELEM_SET: appendStringInfoString(str, "SET TABLE "); break; case DEFELEM_ADD: appendStringInfoString(str, "ADD TABLE "); break; case DEFELEM_DROP: appendStringInfoString(str, "DROP TABLE "); break; case DEFELEM_UNSPEC: Assert(false); break; } deparseRelationExprList(str, alter_publication_stmt->tables); } else if (list_length(alter_publication_stmt->options) > 0) { appendStringInfoString(str, "SET "); deparseDefinition(str, alter_publication_stmt->options); } else { Assert(false); } } static void deparseAlterSeqStmt(StringInfo str, AlterSeqStmt *alter_seq_stmt) { ListCell *lc; appendStringInfoString(str, "ALTER SEQUENCE "); if (alter_seq_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); deparseRangeVar(str, alter_seq_stmt->sequence, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); deparseSeqOptList(str, alter_seq_stmt->options); removeTrailingSpace(str); } static void deparseAlterSystemStmt(StringInfo str, AlterSystemStmt *alter_system_stmt) { appendStringInfoString(str, "ALTER SYSTEM "); deparseVariableSetStmt(str, alter_system_stmt->setstmt); } static void deparseCommentStmt(StringInfo str, CommentStmt *comment_stmt) { ListCell *lc; List *l; appendStringInfoString(str, "COMMENT ON "); switch (comment_stmt->objtype) { case OBJECT_COLUMN: appendStringInfoString(str, "COLUMN "); break; case OBJECT_INDEX: appendStringInfoString(str, "INDEX "); break; case OBJECT_SEQUENCE: appendStringInfoString(str, "SEQUENCE "); break; case OBJECT_STATISTIC_EXT: appendStringInfoString(str, "STATISTICS "); break; case OBJECT_TABLE: appendStringInfoString(str, "TABLE "); break; case OBJECT_VIEW: appendStringInfoString(str, "VIEW "); break; case OBJECT_MATVIEW: appendStringInfoString(str, "MATERIALIZED VIEW "); break; case OBJECT_COLLATION: appendStringInfoString(str, "COLLATION "); break; case OBJECT_CONVERSION: appendStringInfoString(str, "CONVERSION "); break; case OBJECT_FOREIGN_TABLE: appendStringInfoString(str, "FOREIGN TABLE "); break; case OBJECT_TSCONFIGURATION: appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); break; case OBJECT_TSDICTIONARY: appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); break; case OBJECT_TSPARSER: appendStringInfoString(str, "TEXT SEARCH PARSER "); break; case OBJECT_TSTEMPLATE: appendStringInfoString(str, "TEXT SEARCH TEMPLATE "); break; case OBJECT_ACCESS_METHOD: appendStringInfoString(str, "ACCESS METHOD "); break; case OBJECT_DATABASE: appendStringInfoString(str, "DATABASE "); break; case OBJECT_EVENT_TRIGGER: appendStringInfoString(str, "EVENT TRIGGER "); break; case OBJECT_EXTENSION: appendStringInfoString(str, "EXTENSION "); break; case OBJECT_FDW: appendStringInfoString(str, "FOREIGN DATA WRAPPER "); break; case OBJECT_LANGUAGE: appendStringInfoString(str, "LANGUAGE "); break; case OBJECT_PUBLICATION: appendStringInfoString(str, "PUBLICATION "); break; case OBJECT_ROLE: appendStringInfoString(str, "ROLE "); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMA "); break; case OBJECT_FOREIGN_SERVER: appendStringInfoString(str, "SERVER "); break; case OBJECT_SUBSCRIPTION: appendStringInfoString(str, "SUBSCRIPTION "); break; case OBJECT_TABLESPACE: appendStringInfoString(str, "TABLESPACE "); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPE "); break; case OBJECT_DOMAIN: appendStringInfoString(str, "DOMAIN "); break; case OBJECT_AGGREGATE: appendStringInfoString(str, "AGGREGATE "); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); break; case OBJECT_OPERATOR: appendStringInfoString(str, "OPERATOR "); break; case OBJECT_TABCONSTRAINT: appendStringInfoString(str, "CONSTRAINT "); break; case OBJECT_DOMCONSTRAINT: appendStringInfoString(str, "CONSTRAINT "); break; case OBJECT_POLICY: appendStringInfoString(str, "POLICY "); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); break; case OBJECT_RULE: appendStringInfoString(str, "RULE "); break; case OBJECT_TRANSFORM: appendStringInfoString(str, "TRANSFORM "); break; case OBJECT_TRIGGER: appendStringInfoString(str, "TRIGGER "); break; case OBJECT_OPCLASS: appendStringInfoString(str, "OPERATOR CLASS "); break; case OBJECT_OPFAMILY: appendStringInfoString(str, "OPERATOR FAMILY "); break; case OBJECT_LARGEOBJECT: appendStringInfoString(str, "LARGE OBJECT "); break; case OBJECT_CAST: appendStringInfoString(str, "CAST "); break; default: // No other cases are supported in the parser Assert(false); break; } switch (comment_stmt->objtype) { case OBJECT_COLUMN: case OBJECT_INDEX: case OBJECT_SEQUENCE: case OBJECT_STATISTIC_EXT: case OBJECT_TABLE: case OBJECT_VIEW: case OBJECT_MATVIEW: case OBJECT_COLLATION: case OBJECT_CONVERSION: case OBJECT_FOREIGN_TABLE: case OBJECT_TSCONFIGURATION: case OBJECT_TSDICTIONARY: case OBJECT_TSPARSER: case OBJECT_TSTEMPLATE: deparseAnyName(str, castNode(List, comment_stmt->object)); break; case OBJECT_ACCESS_METHOD: case OBJECT_DATABASE: case OBJECT_EVENT_TRIGGER: case OBJECT_EXTENSION: case OBJECT_FDW: case OBJECT_LANGUAGE: case OBJECT_PUBLICATION: case OBJECT_ROLE: case OBJECT_SCHEMA: case OBJECT_FOREIGN_SERVER: case OBJECT_SUBSCRIPTION: case OBJECT_TABLESPACE: appendStringInfoString(str, quote_identifier(strVal(comment_stmt->object))); break; case OBJECT_TYPE: case OBJECT_DOMAIN: deparseTypeName(str, castNode(TypeName, comment_stmt->object)); break; case OBJECT_AGGREGATE: deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, comment_stmt->object)); break; case OBJECT_FUNCTION: case OBJECT_PROCEDURE: case OBJECT_ROUTINE: deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, comment_stmt->object)); break; case OBJECT_OPERATOR: deparseOperatorWithArgtypes(str, castNode(ObjectWithArgs, comment_stmt->object)); break; case OBJECT_TABCONSTRAINT: case OBJECT_POLICY: case OBJECT_RULE: case OBJECT_TRIGGER: l = castNode(List, comment_stmt->object); appendStringInfoString(str, quote_identifier(strVal(llast(l)))); appendStringInfoString(str, " ON "); deparseAnyNameSkipLast(str, l); break; case OBJECT_DOMCONSTRAINT: l = castNode(List, comment_stmt->object); appendStringInfoString(str, quote_identifier(strVal(llast(l)))); appendStringInfoString(str, " ON DOMAIN "); deparseTypeName(str, linitial(l)); break; case OBJECT_TRANSFORM: l = castNode(List, comment_stmt->object); appendStringInfoString(str, "FOR "); deparseTypeName(str, castNode(TypeName, linitial(l))); appendStringInfoString(str, " LANGUAGE "); appendStringInfoString(str, quote_identifier(strVal(lsecond(l)))); break; case OBJECT_OPCLASS: case OBJECT_OPFAMILY: l = castNode(List, comment_stmt->object); deparseAnyNameSkipFirst(str, l); appendStringInfoString(str, " USING "); appendStringInfoString(str, quote_identifier(strVal(linitial(l)))); break; case OBJECT_LARGEOBJECT: deparseValue(str, (Value *) comment_stmt->object, DEPARSE_NODE_CONTEXT_NONE); break; case OBJECT_CAST: l = castNode(List, comment_stmt->object); appendStringInfoChar(str, '('); deparseTypeName(str, castNode(TypeName, linitial(l))); appendStringInfoString(str, " AS "); deparseTypeName(str, castNode(TypeName, lsecond(l))); appendStringInfoChar(str, ')'); break; default: // No other cases are supported in the parser Assert(false); break; } appendStringInfoString(str, " IS "); if (comment_stmt->comment != NULL) deparseStringLiteral(str, comment_stmt->comment); else appendStringInfoString(str, "NULL"); } static void deparseCreateStatsStmt(StringInfo str, CreateStatsStmt *create_stats_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE STATISTICS "); if (create_stats_stmt->if_not_exists) appendStringInfoString(str, "IF NOT EXISTS "); deparseAnyName(str, create_stats_stmt->defnames); appendStringInfoChar(str, ' '); if (list_length(create_stats_stmt->stat_types) > 0) { appendStringInfoChar(str, '('); deparseNameList(str, create_stats_stmt->stat_types); appendStringInfoString(str, ") "); } appendStringInfoString(str, "ON "); deparseExprList(str, create_stats_stmt->exprs); appendStringInfoString(str, " FROM "); deparseFromList(str, create_stats_stmt->relations); } static void deparseAlterCollationStmt(StringInfo str, AlterCollationStmt *alter_collation_stmt) { appendStringInfoString(str, "ALTER COLLATION "); deparseAnyName(str, alter_collation_stmt->collname); appendStringInfoString(str, " REFRESH VERSION"); } static void deparseAlterDatabaseStmt(StringInfo str, AlterDatabaseStmt *alter_database_stmt) { appendStringInfoString(str, "ALTER DATABASE "); deparseColId(str, alter_database_stmt->dbname); appendStringInfoChar(str, ' '); deparseCreatedbOptList(str, alter_database_stmt->options); removeTrailingSpace(str); } static void deparseAlterDatabaseSetStmt(StringInfo str, AlterDatabaseSetStmt *alter_database_set_stmt) { appendStringInfoString(str, "ALTER DATABASE "); deparseColId(str, alter_database_set_stmt->dbname); appendStringInfoChar(str, ' '); deparseVariableSetStmt(str, alter_database_set_stmt->setstmt); } static void deparseAlterStatsStmt(StringInfo str, AlterStatsStmt *alter_stats_stmt) { appendStringInfoString(str, "ALTER STATISTICS "); if (alter_stats_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); deparseAnyName(str, alter_stats_stmt->defnames); appendStringInfoChar(str, ' '); appendStringInfo(str, "SET STATISTICS %d", alter_stats_stmt->stxstattarget); } static void deparseAlterTSDictionaryStmt(StringInfo str, AlterTSDictionaryStmt *alter_ts_dictionary_stmt) { appendStringInfoString(str, "ALTER TEXT SEARCH DICTIONARY "); deparseAnyName(str, alter_ts_dictionary_stmt->dictname); appendStringInfoChar(str, ' '); deparseDefinition(str, alter_ts_dictionary_stmt->options); } static void deparseAlterTSConfigurationStmt(StringInfo str, AlterTSConfigurationStmt *alter_ts_configuration_stmt) { ListCell *lc = NULL; appendStringInfoString(str, "ALTER TEXT SEARCH CONFIGURATION "); deparseAnyName(str, alter_ts_configuration_stmt->cfgname); appendStringInfoChar(str, ' '); switch (alter_ts_configuration_stmt->kind) { case ALTER_TSCONFIG_ADD_MAPPING: appendStringInfoString(str, "ADD MAPPING FOR "); deparseNameList(str, alter_ts_configuration_stmt->tokentype); appendStringInfoString(str, " WITH "); deparseAnyNameList(str, alter_ts_configuration_stmt->dicts); break; case ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN: appendStringInfoString(str, "ALTER MAPPING FOR "); deparseNameList(str, alter_ts_configuration_stmt->tokentype); appendStringInfoString(str, " WITH "); deparseAnyNameList(str, alter_ts_configuration_stmt->dicts); break; case ALTER_TSCONFIG_REPLACE_DICT: appendStringInfoString(str, "ALTER MAPPING REPLACE "); deparseAnyName(str, linitial(alter_ts_configuration_stmt->dicts)); appendStringInfoString(str, " WITH "); deparseAnyName(str, lsecond(alter_ts_configuration_stmt->dicts)); break; case ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN: appendStringInfoString(str, "ALTER MAPPING FOR "); deparseNameList(str, alter_ts_configuration_stmt->tokentype); appendStringInfoString(str, " REPLACE "); deparseAnyName(str, linitial(alter_ts_configuration_stmt->dicts)); appendStringInfoString(str, " WITH "); deparseAnyName(str, lsecond(alter_ts_configuration_stmt->dicts)); break; case ALTER_TSCONFIG_DROP_MAPPING: appendStringInfoString(str, "DROP MAPPING "); if (alter_ts_configuration_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); appendStringInfoString(str, "FOR "); deparseNameList(str, alter_ts_configuration_stmt->tokentype); break; } } static void deparseVariableShowStmt(StringInfo str, VariableShowStmt *variable_show_stmt) { appendStringInfoString(str, "SHOW "); if (strcmp(variable_show_stmt->name, "timezone") == 0) appendStringInfoString(str, "TIME ZONE"); else if (strcmp(variable_show_stmt->name, "transaction_isolation") == 0) appendStringInfoString(str, "TRANSACTION ISOLATION LEVEL"); else if (strcmp(variable_show_stmt->name, "session_authorization") == 0) appendStringInfoString(str, "SESSION AUTHORIZATION"); else if (strcmp(variable_show_stmt->name, "all") == 0) appendStringInfoString(str, "SESSION ALL"); else appendStringInfoString(str, variable_show_stmt->name); } static void deparseRangeTableSample(StringInfo str, RangeTableSample *range_table_sample) { deparseRangeVar(str, castNode(RangeVar, range_table_sample->relation), DEPARSE_NODE_CONTEXT_NONE); appendStringInfoString(str, " TABLESAMPLE "); deparseFuncName(str, range_table_sample->method); appendStringInfoChar(str, '('); deparseExprList(str, range_table_sample->args); appendStringInfoString(str, ") "); if (range_table_sample->repeatable != NULL) { appendStringInfoString(str, "REPEATABLE ("); deparseExpr(str, range_table_sample->repeatable); appendStringInfoString(str, ") "); } removeTrailingSpace(str); } static void deparseCreateSubscriptionStmt(StringInfo str, CreateSubscriptionStmt *create_subscription_stmt) { ListCell *lc; appendStringInfoString(str, "CREATE SUBSCRIPTION "); appendStringInfoString(str, quote_identifier(create_subscription_stmt->subname)); appendStringInfoString(str, " CONNECTION "); if (create_subscription_stmt->conninfo != NULL) deparseStringLiteral(str, create_subscription_stmt->conninfo); else appendStringInfoString(str, "''"); appendStringInfoString(str, " PUBLICATION "); foreach(lc, create_subscription_stmt->publication) { deparseColLabel(str, strVal(lfirst(lc))); if (lnext(create_subscription_stmt->publication, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); deparseOptDefinition(str, create_subscription_stmt->options); removeTrailingSpace(str); } static void deparseAlterSubscriptionStmt(StringInfo str, AlterSubscriptionStmt *alter_subscription_stmt) { ListCell *lc; appendStringInfoString(str, "ALTER SUBSCRIPTION "); appendStringInfoString(str, quote_identifier(alter_subscription_stmt->subname)); appendStringInfoChar(str, ' '); switch (alter_subscription_stmt->kind) { case ALTER_SUBSCRIPTION_OPTIONS: appendStringInfoString(str, "SET "); deparseDefinition(str, alter_subscription_stmt->options); break; case ALTER_SUBSCRIPTION_CONNECTION: appendStringInfoString(str, "CONNECTION "); deparseStringLiteral(str, alter_subscription_stmt->conninfo); appendStringInfoChar(str, ' '); break; case ALTER_SUBSCRIPTION_REFRESH: appendStringInfoString(str, "REFRESH PUBLICATION "); deparseOptDefinition(str, alter_subscription_stmt->options); break; case ALTER_SUBSCRIPTION_PUBLICATION: appendStringInfoString(str, "SET PUBLICATION "); foreach(lc, alter_subscription_stmt->publication) { deparseColLabel(str, strVal(lfirst(lc))); if (lnext(alter_subscription_stmt->publication, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ' '); deparseOptDefinition(str, alter_subscription_stmt->options); break; case ALTER_SUBSCRIPTION_ENABLED: Assert(list_length(alter_subscription_stmt->options) == 1); DefElem *defelem = castNode(DefElem, linitial(alter_subscription_stmt->options)); Assert(strcmp(defelem->defname, "enabled") == 0); if (intVal(defelem->arg) == 1) { appendStringInfoString(str, " ENABLE "); } else if (intVal(defelem->arg) == 0) { appendStringInfoString(str, " DISABLE "); } else { Assert(false); } break; } removeTrailingSpace(str); } static void deparseDropSubscriptionStmt(StringInfo str, DropSubscriptionStmt *drop_subscription_stmt) { appendStringInfoString(str, "DROP SUBSCRIPTION "); if (drop_subscription_stmt->missing_ok) appendStringInfoString(str, "IF EXISTS "); appendStringInfoString(str, drop_subscription_stmt->subname); } static void deparseCallStmt(StringInfo str, CallStmt *call_stmt) { appendStringInfoString(str, "CALL "); deparseFuncCall(str, call_stmt->funccall); } static void deparseAlterOwnerStmt(StringInfo str, AlterOwnerStmt *alter_owner_stmt) { List *l = NULL; appendStringInfoString(str, "ALTER "); switch (alter_owner_stmt->objectType) { case OBJECT_AGGREGATE: appendStringInfoString(str, "AGGREGATE "); deparseAggregateWithArgtypes(str, castNode(ObjectWithArgs, alter_owner_stmt->object)); break; case OBJECT_COLLATION: appendStringInfoString(str, "COLLATION "); deparseAnyName(str, castNode(List, alter_owner_stmt->object)); break; case OBJECT_CONVERSION: appendStringInfoString(str, "CONVERSION "); deparseAnyName(str, castNode(List, alter_owner_stmt->object)); break; case OBJECT_DATABASE: appendStringInfoString(str, "DATABASE "); deparseColId(str, strVal(alter_owner_stmt->object)); break; case OBJECT_DOMAIN: appendStringInfoString(str, "DOMAIN "); deparseAnyName(str, castNode(List, alter_owner_stmt->object)); break; case OBJECT_FUNCTION: appendStringInfoString(str, "FUNCTION "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_owner_stmt->object)); break; case OBJECT_LANGUAGE: appendStringInfoString(str, "LANGUAGE "); deparseColId(str, strVal(alter_owner_stmt->object)); break; case OBJECT_LARGEOBJECT: appendStringInfoString(str, "LARGE OBJECT "); deparseNumericOnly(str, (Value *) alter_owner_stmt->object); break; case OBJECT_OPERATOR: appendStringInfoString(str, "OPERATOR "); deparseOperatorWithArgtypes(str, castNode(ObjectWithArgs, alter_owner_stmt->object)); break; case OBJECT_OPCLASS: l = castNode(List, alter_owner_stmt->object); appendStringInfoString(str, "OPERATOR CLASS "); deparseAnyNameSkipFirst(str, l); appendStringInfoString(str, " USING "); deparseColId(str, strVal(linitial(l))); break; case OBJECT_OPFAMILY: l = castNode(List, alter_owner_stmt->object); appendStringInfoString(str, "OPERATOR FAMILY "); deparseAnyNameSkipFirst(str, l); appendStringInfoString(str, " USING "); deparseColId(str, strVal(linitial(l))); break; case OBJECT_PROCEDURE: appendStringInfoString(str, "PROCEDURE "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_owner_stmt->object)); break; case OBJECT_ROUTINE: appendStringInfoString(str, "ROUTINE "); deparseFunctionWithArgtypes(str, castNode(ObjectWithArgs, alter_owner_stmt->object)); break; case OBJECT_SCHEMA: appendStringInfoString(str, "SCHEMA "); deparseColId(str, strVal(alter_owner_stmt->object)); break; case OBJECT_TYPE: appendStringInfoString(str, "TYPE "); deparseAnyName(str, castNode(List, alter_owner_stmt->object)); break; case OBJECT_TABLESPACE: appendStringInfoString(str, "TABLESPACE "); deparseColId(str, strVal(alter_owner_stmt->object)); break; case OBJECT_STATISTIC_EXT: appendStringInfoString(str, "STATISTICS "); deparseAnyName(str, castNode(List, alter_owner_stmt->object)); break; case OBJECT_TSDICTIONARY: appendStringInfoString(str, "TEXT SEARCH DICTIONARY "); deparseAnyName(str, castNode(List, alter_owner_stmt->object)); break; case OBJECT_TSCONFIGURATION: appendStringInfoString(str, "TEXT SEARCH CONFIGURATION "); deparseAnyName(str, castNode(List, alter_owner_stmt->object)); break; case OBJECT_FDW: appendStringInfoString(str, "FOREIGN DATA WRAPPER "); deparseColId(str, strVal(alter_owner_stmt->object)); break; case OBJECT_FOREIGN_SERVER: appendStringInfoString(str, "SERVER "); deparseColId(str, strVal(alter_owner_stmt->object)); break; case OBJECT_EVENT_TRIGGER: appendStringInfoString(str, "EVENT TRIGGER "); deparseColId(str, strVal(alter_owner_stmt->object)); break; case OBJECT_PUBLICATION: appendStringInfoString(str, "PUBLICATION "); deparseColId(str, strVal(alter_owner_stmt->object)); break; case OBJECT_SUBSCRIPTION: appendStringInfoString(str, "SUBSCRIPTION "); deparseColId(str, strVal(alter_owner_stmt->object)); break; default: Assert(false); } appendStringInfoString(str, " OWNER TO "); deparseRoleSpec(str, alter_owner_stmt->newowner); } // "operator_def_list" in gram.y static void deparseOperatorDefList(StringInfo str, List *defs) { ListCell *lc = NULL; foreach (lc, defs) { DefElem *def_elem = castNode(DefElem, lfirst(lc)); appendStringInfoString(str, quote_identifier(def_elem->defname)); appendStringInfoString(str, " = "); if (def_elem->arg != NULL) deparseDefArg(str, def_elem->arg, true); else appendStringInfoString(str, "NONE"); if (lnext(defs, lc)) appendStringInfoString(str, ", "); } } static void deparseAlterOperatorStmt(StringInfo str, AlterOperatorStmt *alter_operator_stmt) { appendStringInfoString(str, "ALTER OPERATOR "); deparseOperatorWithArgtypes(str, alter_operator_stmt->opername); appendStringInfoString(str, " SET ("); deparseOperatorDefList(str, alter_operator_stmt->options); appendStringInfoChar(str, ')'); } static void deparseAlterTypeStmt(StringInfo str, AlterTypeStmt *alter_type_stmt) { appendStringInfoString(str, "ALTER TYPE "); deparseAnyName(str, alter_type_stmt->typeName); appendStringInfoString(str, " SET ("); deparseOperatorDefList(str, alter_type_stmt->options); appendStringInfoChar(str, ')'); } static void deparseDropOwnedStmt(StringInfo str, DropOwnedStmt *drop_owned_stmt) { appendStringInfoString(str, "DROP OWNED BY "); deparseRoleList(str, drop_owned_stmt->roles); appendStringInfoChar(str, ' '); deparseOptDropBehavior(str, drop_owned_stmt->behavior); removeTrailingSpace(str); } static void deparseReassignOwnedStmt(StringInfo str, ReassignOwnedStmt *reassigned_owned_stmt) { appendStringInfoString(str, "REASSIGN OWNED BY "); deparseRoleList(str, reassigned_owned_stmt->roles); appendStringInfoChar(str, ' '); appendStringInfoString(str, "TO "); deparseRoleSpec(str, reassigned_owned_stmt->newrole); } static void deparseClosePortalStmt(StringInfo str, ClosePortalStmt *close_portal_stmt) { appendStringInfoString(str, "CLOSE "); if (close_portal_stmt->portalname != NULL) { appendStringInfoString(str, quote_identifier(close_portal_stmt->portalname)); } else { appendStringInfoString(str, "ALL"); } } static void deparseCurrentOfExpr(StringInfo str, CurrentOfExpr *current_of_expr) { appendStringInfoString(str, "CURRENT OF "); appendStringInfoString(str, quote_identifier(current_of_expr->cursor_name)); } static void deparseCreateTrigStmt(StringInfo str, CreateTrigStmt *create_trig_stmt) { ListCell *lc; bool skip_events_or = true; appendStringInfoString(str, "CREATE "); if (create_trig_stmt->isconstraint) appendStringInfoString(str, "CONSTRAINT "); appendStringInfoString(str, "TRIGGER "); appendStringInfoString(str, quote_identifier(create_trig_stmt->trigname)); appendStringInfoChar(str, ' '); switch (create_trig_stmt->timing) { case TRIGGER_TYPE_BEFORE: appendStringInfoString(str, "BEFORE "); break; case TRIGGER_TYPE_AFTER: appendStringInfoString(str, "AFTER "); break; case TRIGGER_TYPE_INSTEAD: appendStringInfoString(str, "INSTEAD OF "); break; default: Assert(false); } if (TRIGGER_FOR_INSERT(create_trig_stmt->events)) { appendStringInfoString(str, "INSERT "); skip_events_or = false; } if (TRIGGER_FOR_DELETE(create_trig_stmt->events)) { if (!skip_events_or) appendStringInfoString(str, "OR "); appendStringInfoString(str, "DELETE "); skip_events_or = false; } if (TRIGGER_FOR_UPDATE(create_trig_stmt->events)) { if (!skip_events_or) appendStringInfoString(str, "OR "); appendStringInfoString(str, "UPDATE "); if (list_length(create_trig_stmt->columns) > 0) { appendStringInfoString(str, "OF "); deparseColumnList(str, create_trig_stmt->columns); appendStringInfoChar(str, ' '); } skip_events_or = false; } if (TRIGGER_FOR_TRUNCATE(create_trig_stmt->events)) { if (!skip_events_or) appendStringInfoString(str, "OR "); appendStringInfoString(str, "TRUNCATE "); } appendStringInfoString(str, "ON "); deparseRangeVar(str, create_trig_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); if (create_trig_stmt->transitionRels != NULL) { appendStringInfoString(str, "REFERENCING "); foreach(lc, create_trig_stmt->transitionRels) { deparseTriggerTransition(str, castNode(TriggerTransition, lfirst(lc))); appendStringInfoChar(str, ' '); } } if (create_trig_stmt->constrrel != NULL) { appendStringInfoString(str, "FROM "); deparseRangeVar(str, create_trig_stmt->constrrel, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); } if (create_trig_stmt->deferrable) appendStringInfoString(str, "DEFERRABLE "); if (create_trig_stmt->initdeferred) appendStringInfoString(str, "INITIALLY DEFERRED "); if (create_trig_stmt->row) appendStringInfoString(str, "FOR EACH ROW "); if (create_trig_stmt->whenClause) { appendStringInfoString(str, "WHEN ("); deparseExpr(str, create_trig_stmt->whenClause); appendStringInfoString(str, ") "); } appendStringInfoString(str, "EXECUTE FUNCTION "); deparseFuncName(str, create_trig_stmt->funcname); appendStringInfoChar(str, '('); foreach(lc, create_trig_stmt->args) { deparseStringLiteral(str, strVal(lfirst(lc))); if (lnext(create_trig_stmt->args, lc)) appendStringInfoString(str, ", "); } appendStringInfoChar(str, ')'); } static void deparseTriggerTransition(StringInfo str, TriggerTransition *trigger_transition) { if (trigger_transition->isNew) appendStringInfoString(str, "NEW "); else appendStringInfoString(str, "OLD "); if (trigger_transition->isTable) appendStringInfoString(str, "TABLE "); else appendStringInfoString(str, "ROW "); appendStringInfoString(str, quote_identifier(trigger_transition->name)); } static void deparseXmlExpr(StringInfo str, XmlExpr* xml_expr) { switch (xml_expr->op) { case IS_XMLCONCAT: /* XMLCONCAT(args) */ appendStringInfoString(str, "xmlconcat("); deparseExprList(str, xml_expr->args); appendStringInfoChar(str, ')'); break; case IS_XMLELEMENT: /* XMLELEMENT(name, xml_attributes, args) */ appendStringInfoString(str, "xmlelement(name "); appendStringInfoString(str, quote_identifier(xml_expr->name)); if (xml_expr->named_args != NULL) { appendStringInfoString(str, ", xmlattributes("); deparseXmlAttributeList(str, xml_expr->named_args); appendStringInfoString(str, ")"); } if (xml_expr->args != NULL) { appendStringInfoString(str, ", "); deparseExprList(str, xml_expr->args); } appendStringInfoString(str, ")"); break; case IS_XMLFOREST: /* XMLFOREST(xml_attributes) */ appendStringInfoString(str, "xmlforest("); deparseXmlAttributeList(str, xml_expr->named_args); appendStringInfoChar(str, ')'); break; case IS_XMLPARSE: /* XMLPARSE(text, is_doc, preserve_ws) */ Assert(list_length(xml_expr->args) == 2); appendStringInfoString(str, "xmlparse("); switch (xml_expr->xmloption) { case XMLOPTION_DOCUMENT: appendStringInfoString(str, "document "); break; case XMLOPTION_CONTENT: appendStringInfoString(str, "content "); break; default: Assert(false); } deparseExpr(str, linitial(xml_expr->args)); if (strcmp(strVal(&castNode(A_Const, castNode(TypeCast, lsecond(xml_expr->args))->arg)->val), "t") == 0) appendStringInfoString(str, " PRESERVE WHITESPACE"); appendStringInfoChar(str, ')'); break; case IS_XMLPI: /* XMLPI(name [, args]) */ appendStringInfoString(str, "xmlpi(name "); appendStringInfoString(str, quote_identifier(xml_expr->name)); if (xml_expr->args != NULL) { appendStringInfoString(str, ", "); deparseExpr(str, linitial(xml_expr->args)); } appendStringInfoChar(str, ')'); break; case IS_XMLROOT: /* XMLROOT(xml, version, standalone) */ appendStringInfoString(str, "xmlroot("); deparseExpr(str, linitial(xml_expr->args)); appendStringInfoString(str, ", version "); if (nodeTag(&castNode(A_Const, lsecond(xml_expr->args))->val) == T_Null) appendStringInfoString(str, "NO VALUE"); else deparseExpr(str, lsecond(xml_expr->args)); if (intVal(&castNode(A_Const, lthird(xml_expr->args))->val) == XML_STANDALONE_YES) appendStringInfoString(str, ", STANDALONE YES"); else if (intVal(&castNode(A_Const, lthird(xml_expr->args))->val) == XML_STANDALONE_NO) appendStringInfoString(str, ", STANDALONE NO"); else if (intVal(&castNode(A_Const, lthird(xml_expr->args))->val) == XML_STANDALONE_NO_VALUE) appendStringInfoString(str, ", STANDALONE NO VALUE"); appendStringInfoChar(str, ')'); break; case IS_XMLSERIALIZE: /* XMLSERIALIZE(is_document, xmlval) */ // These are represented as XmlSerialize in raw parse trees Assert(false); break; case IS_DOCUMENT: /* xmlval IS DOCUMENT */ Assert(list_length(xml_expr->args) == 1); deparseExpr(str, linitial(xml_expr->args)); appendStringInfoString(str, " IS DOCUMENT"); break; } } static void deparseRangeTableFuncCol(StringInfo str, RangeTableFuncCol* range_table_func_col) { appendStringInfoString(str, quote_identifier(range_table_func_col->colname)); appendStringInfoChar(str, ' '); if (range_table_func_col->for_ordinality) { appendStringInfoString(str, "FOR ORDINALITY "); } else { deparseTypeName(str, range_table_func_col->typeName); appendStringInfoChar(str, ' '); if (range_table_func_col->colexpr) { appendStringInfoString(str, "PATH "); deparseExpr(str, range_table_func_col->colexpr); appendStringInfoChar(str, ' '); } if (range_table_func_col->coldefexpr) { appendStringInfoString(str, "DEFAULT "); deparseExpr(str, range_table_func_col->coldefexpr); appendStringInfoChar(str, ' '); } if (range_table_func_col->is_not_null) appendStringInfoString(str, "NOT NULL "); } removeTrailingSpace(str); } static void deparseRangeTableFunc(StringInfo str, RangeTableFunc* range_table_func) { ListCell *lc; if (range_table_func->lateral) appendStringInfoString(str, "LATERAL "); appendStringInfoString(str, "xmltable("); if (range_table_func->namespaces) { appendStringInfoString(str, "xmlnamespaces("); deparseXmlNamespaceList(str, range_table_func->namespaces); appendStringInfoString(str, "), "); } appendStringInfoChar(str, '('); deparseExpr(str, range_table_func->rowexpr); appendStringInfoChar(str, ')'); appendStringInfoString(str, " PASSING "); deparseExpr(str, range_table_func->docexpr); appendStringInfoString(str, " COLUMNS "); foreach(lc, range_table_func->columns) { deparseRangeTableFuncCol(str, castNode(RangeTableFuncCol, lfirst(lc))); if (lnext(range_table_func->columns, lc)) appendStringInfoString(str, ", "); } appendStringInfoString(str, ") "); if (range_table_func->alias) { appendStringInfoString(str, "AS "); deparseAlias(str, range_table_func->alias); } removeTrailingSpace(str); } static void deparseXmlSerialize(StringInfo str, XmlSerialize *xml_serialize) { appendStringInfoString(str, "xmlserialize("); switch (xml_serialize->xmloption) { case XMLOPTION_DOCUMENT: appendStringInfoString(str, "document "); break; case XMLOPTION_CONTENT: appendStringInfoString(str, "content "); break; default: Assert(false); } deparseExpr(str, xml_serialize->expr); appendStringInfoString(str, " AS "); deparseTypeName(str, xml_serialize->typeName); appendStringInfoString(str, ")"); } static void deparseGroupingFunc(StringInfo str, GroupingFunc *grouping_func) { appendStringInfoString(str, "GROUPING("); deparseExprList(str, grouping_func->args); appendStringInfoChar(str, ')'); } static void deparseClusterStmt(StringInfo str, ClusterStmt *cluster_stmt) { appendStringInfoString(str, "CLUSTER "); if (cluster_stmt->options & CLUOPT_VERBOSE) appendStringInfoString(str, "VERBOSE "); if (cluster_stmt->relation != NULL) { deparseRangeVar(str, cluster_stmt->relation, DEPARSE_NODE_CONTEXT_NONE); appendStringInfoChar(str, ' '); } if (cluster_stmt->indexname != NULL) { appendStringInfoString(str, "USING "); appendStringInfoString(str, quote_identifier(cluster_stmt->indexname)); appendStringInfoChar(str, ' '); } removeTrailingSpace(str); } static void deparseValue(StringInfo str, Value *value, DeparseNodeContext context) { switch (nodeTag(value)) { case T_Integer: case T_Float: deparseNumericOnly(str, value); break; case T_String: if (context == DEPARSE_NODE_CONTEXT_IDENTIFIER) { appendStringInfoString(str, quote_identifier(value->val.str)); } else if (context == DEPARSE_NODE_CONTEXT_CONSTANT) { deparseStringLiteral(str, value->val.str); } else { appendStringInfoString(str, value->val.str); } break; case T_BitString: if (strlen(value->val.str) >= 1 && value->val.str[0] == 'x') { appendStringInfoChar(str, 'x'); deparseStringLiteral(str, value->val.str + 1); } else if (strlen(value->val.str) >= 1 && value->val.str[0] == 'b') { appendStringInfoChar(str, 'b'); deparseStringLiteral(str, value->val.str + 1); } else { Assert(false); } break; case T_Null: appendStringInfoString(str, "NULL"); break; default: elog(ERROR, "unrecognized value node type: %d", (int) nodeTag(value)); break; } } // "PrepareableStmt" in gram.y static void deparsePreparableStmt(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_SelectStmt: deparseSelectStmt(str, castNode(SelectStmt, node)); break; case T_InsertStmt: deparseInsertStmt(str, castNode(InsertStmt, node)); break; case T_UpdateStmt: deparseUpdateStmt(str, castNode(UpdateStmt, node)); break; case T_DeleteStmt: deparseDeleteStmt(str, castNode(DeleteStmt, node)); break; default: Assert(false); } } // "RuleActionStmt" in gram.y static void deparseRuleActionStmt(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_SelectStmt: deparseSelectStmt(str, castNode(SelectStmt, node)); break; case T_InsertStmt: deparseInsertStmt(str, castNode(InsertStmt, node)); break; case T_UpdateStmt: deparseUpdateStmt(str, castNode(UpdateStmt, node)); break; case T_DeleteStmt: deparseDeleteStmt(str, castNode(DeleteStmt, node)); break; case T_NotifyStmt: deparseNotifyStmt(str, castNode(NotifyStmt, node)); break; default: Assert(false); } } // "ExplainableStmt" in gram.y static void deparseExplainableStmt(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_SelectStmt: deparseSelectStmt(str, castNode(SelectStmt, node)); break; case T_InsertStmt: deparseInsertStmt(str, castNode(InsertStmt, node)); break; case T_UpdateStmt: deparseUpdateStmt(str, castNode(UpdateStmt, node)); break; case T_DeleteStmt: deparseDeleteStmt(str, castNode(DeleteStmt, node)); break; case T_DeclareCursorStmt: deparseDeclareCursorStmt(str, castNode(DeclareCursorStmt, node)); break; case T_CreateTableAsStmt: deparseCreateTableAsStmt(str, castNode(CreateTableAsStmt, node)); break; case T_RefreshMatViewStmt: deparseRefreshMatViewStmt(str, castNode(RefreshMatViewStmt, node)); break; case T_ExecuteStmt: deparseExecuteStmt(str, castNode(ExecuteStmt, node)); break; default: Assert(false); } } // "schema_stmt" in gram.y static void deparseSchemaStmt(StringInfo str, Node *node) { switch (nodeTag(node)) { case T_CreateStmt: deparseCreateStmt(str, castNode(CreateStmt, node), false); break; case T_IndexStmt: deparseIndexStmt(str, castNode(IndexStmt, node)); break; case T_CreateSeqStmt: deparseCreateSeqStmt(str, castNode(CreateSeqStmt, node)); break; case T_CreateTrigStmt: deparseCreateTrigStmt(str, castNode(CreateTrigStmt, node)); break; case T_GrantStmt: deparseGrantStmt(str, castNode(GrantStmt, node)); break; case T_ViewStmt: deparseViewStmt(str, castNode(ViewStmt, node)); break; default: Assert(false); } } // "stmt" in gram.y static void deparseStmt(StringInfo str, Node *node) { // Note the following grammar names are missing in the list, because they // get mapped to other node types: // // - AlterForeignTableStmt (=> AlterTableStmt) // - AlterGroupStmt (=> AlterRoleStmt) // - AlterCompositeTypeStmt (=> AlterTableStmt) // - AnalyzeStmt (=> VacuumStmt) // - CreateGroupStmt (=> CreateRoleStmt) // - CreateMatViewStmt (=> CreateTableAsStmt) // - CreateUserStmt (=> CreateRoleStmt) // - DropCastStmt (=> DropStmt) // - DropOpClassStmt (=> DropStmt) // - DropOpFamilyStmt (=> DropStmt) // - DropPLangStmt (=> DropPLangStmt) // - DropTransformStmt (=> DropStmt) // - RemoveAggrStmt (=> DropStmt) // - RemoveFuncStmt (=> DropStmt) // - RemoveOperStmt (=> DropStmt) // - RevokeStmt (=> GrantStmt) // - RevokeRoleStmt (=> GrantRoleStmt) // - VariableResetStmt (=> VariableSetStmt) // // And the following grammar names error out in the parser: // - CreateAssertionStmt (not supported yet) switch (nodeTag(node)) { case T_AlterEventTrigStmt: deparseAlterEventTrigStmt(str, castNode(AlterEventTrigStmt, node)); break; case T_AlterCollationStmt: deparseAlterCollationStmt(str, castNode(AlterCollationStmt, node)); break; case T_AlterDatabaseStmt: deparseAlterDatabaseStmt(str, castNode(AlterDatabaseStmt, node)); break; case T_AlterDatabaseSetStmt: deparseAlterDatabaseSetStmt(str, castNode(AlterDatabaseSetStmt, node)); break; case T_AlterDefaultPrivilegesStmt: deparseAlterDefaultPrivilegesStmt(str, castNode(AlterDefaultPrivilegesStmt, node)); break; case T_AlterDomainStmt: deparseAlterDomainStmt(str, castNode(AlterDomainStmt, node)); break; case T_AlterEnumStmt: deparseAlterEnumStmt(str, castNode(AlterEnumStmt, node)); break; case T_AlterExtensionStmt: deparseAlterExtensionStmt(str, castNode(AlterExtensionStmt, node)); break; case T_AlterExtensionContentsStmt: deparseAlterExtensionContentsStmt(str, castNode(AlterExtensionContentsStmt, node)); break; case T_AlterFdwStmt: deparseAlterFdwStmt(str, castNode(AlterFdwStmt, node)); break; case T_AlterForeignServerStmt: deparseAlterForeignServerStmt(str, castNode(AlterForeignServerStmt, node)); break; case T_AlterFunctionStmt: deparseAlterFunctionStmt(str, castNode(AlterFunctionStmt, node)); break; case T_AlterObjectDependsStmt: deparseAlterObjectDependsStmt(str, castNode(AlterObjectDependsStmt, node)); break; case T_AlterObjectSchemaStmt: deparseAlterObjectSchemaStmt(str, castNode(AlterObjectSchemaStmt, node)); break; case T_AlterOwnerStmt: deparseAlterOwnerStmt(str, castNode(AlterOwnerStmt, node)); break; case T_AlterOperatorStmt: deparseAlterOperatorStmt(str, castNode(AlterOperatorStmt, node)); break; case T_AlterTypeStmt: deparseAlterTypeStmt(str, castNode(AlterTypeStmt, node)); break; case T_AlterPolicyStmt: deparseAlterPolicyStmt(str, castNode(AlterPolicyStmt, node)); break; case T_AlterSeqStmt: deparseAlterSeqStmt(str, castNode(AlterSeqStmt, node)); break; case T_AlterSystemStmt: deparseAlterSystemStmt(str, castNode(AlterSystemStmt, node)); break; case T_AlterTableStmt: deparseAlterTableStmt(str, castNode(AlterTableStmt, node)); break; case T_AlterTableSpaceOptionsStmt: // "AlterTblSpcStmt" in gram.y deparseAlterTableSpaceOptionsStmt(str, castNode(AlterTableSpaceOptionsStmt, node)); break; case T_AlterPublicationStmt: deparseAlterPublicationStmt(str, castNode(AlterPublicationStmt, node)); break; case T_AlterRoleSetStmt: deparseAlterRoleSetStmt(str, castNode(AlterRoleSetStmt, node)); break; case T_AlterRoleStmt: deparseAlterRoleStmt(str, castNode(AlterRoleStmt, node)); break; case T_AlterSubscriptionStmt: deparseAlterSubscriptionStmt(str, castNode(AlterSubscriptionStmt, node)); break; case T_AlterStatsStmt: deparseAlterStatsStmt(str, castNode(AlterStatsStmt, node)); break; case T_AlterTSConfigurationStmt: deparseAlterTSConfigurationStmt(str, castNode(AlterTSConfigurationStmt, node)); break; case T_AlterTSDictionaryStmt: deparseAlterTSDictionaryStmt(str, castNode(AlterTSDictionaryStmt, node)); break; case T_AlterUserMappingStmt: deparseAlterUserMappingStmt(str, castNode(AlterUserMappingStmt, node)); break; case T_CallStmt: deparseCallStmt(str, castNode(CallStmt, node)); break; case T_CheckPointStmt: deparseCheckPointStmt(str, castNode(CheckPointStmt, node)); break; case T_ClosePortalStmt: deparseClosePortalStmt(str, castNode(ClosePortalStmt, node)); break; case T_ClusterStmt: deparseClusterStmt(str, castNode(ClusterStmt, node)); break; case T_CommentStmt: deparseCommentStmt(str, castNode(CommentStmt, node)); break; case T_ConstraintsSetStmt: deparseConstraintsSetStmt(str, castNode(ConstraintsSetStmt, node)); break; case T_CopyStmt: deparseCopyStmt(str, castNode(CopyStmt, node)); break; case T_CreateAmStmt: deparseCreateAmStmt(str, castNode(CreateAmStmt, node)); break; case T_CreateTableAsStmt: // "CreateAsStmt" in gram.y deparseCreateTableAsStmt(str, castNode(CreateTableAsStmt, node)); break; case T_CreateCastStmt: deparseCreateCastStmt(str, castNode(CreateCastStmt, node)); break; case T_CreateConversionStmt: deparseCreateConversionStmt(str, castNode(CreateConversionStmt, node)); break; case T_CreateDomainStmt: deparseCreateDomainStmt(str, castNode(CreateDomainStmt, node)); break; case T_CreateExtensionStmt: deparseCreateExtensionStmt(str, castNode(CreateExtensionStmt, node)); break; case T_CreateFdwStmt: deparseCreateFdwStmt(str, castNode(CreateFdwStmt, node)); break; case T_CreateForeignServerStmt: deparseCreateForeignServerStmt(str, castNode(CreateForeignServerStmt, node)); break; case T_CreateForeignTableStmt: deparseCreateForeignTableStmt(str, castNode(CreateForeignTableStmt, node)); break; case T_CreateFunctionStmt: deparseCreateFunctionStmt(str, castNode(CreateFunctionStmt, node)); break; case T_CreateOpClassStmt: deparseCreateOpClassStmt(str, castNode(CreateOpClassStmt, node)); break; case T_CreateOpFamilyStmt: deparseCreateOpFamilyStmt(str, castNode(CreateOpFamilyStmt, node)); break; case T_CreatePublicationStmt: deparseCreatePublicationStmt(str, castNode(CreatePublicationStmt, node)); break; case T_AlterOpFamilyStmt: deparseAlterOpFamilyStmt(str, castNode(AlterOpFamilyStmt, node)); break; case T_CreatePolicyStmt: deparseCreatePolicyStmt(str, castNode(CreatePolicyStmt, node)); break; case T_CreatePLangStmt: deparseCreatePLangStmt(str, castNode(CreatePLangStmt, node)); break; case T_CreateSchemaStmt: deparseCreateSchemaStmt(str, castNode(CreateSchemaStmt, node)); break; case T_CreateSeqStmt: deparseCreateSeqStmt(str, castNode(CreateSeqStmt, node)); break; case T_CreateStmt: deparseCreateStmt(str, castNode(CreateStmt, node), false); break; case T_CreateSubscriptionStmt: deparseCreateSubscriptionStmt(str, castNode(CreateSubscriptionStmt, node)); break; case T_CreateStatsStmt: deparseCreateStatsStmt(str, castNode(CreateStatsStmt, node)); break; case T_CreateTableSpaceStmt: deparseCreateTableSpaceStmt(str, castNode(CreateTableSpaceStmt, node)); break; case T_CreateTransformStmt: deparseCreateTransformStmt(str, castNode(CreateTransformStmt, node)); break; case T_CreateTrigStmt: deparseCreateTrigStmt(str, castNode(CreateTrigStmt, node)); break; case T_CreateEventTrigStmt: deparseCreateEventTrigStmt(str, castNode(CreateEventTrigStmt, node)); break; case T_CreateRoleStmt: deparseCreateRoleStmt(str, castNode(CreateRoleStmt, node)); break; case T_CreateUserMappingStmt: deparseCreateUserMappingStmt(str, castNode(CreateUserMappingStmt, node)); break; case T_CreatedbStmt: deparseCreatedbStmt(str, castNode(CreatedbStmt, node)); break; case T_DeallocateStmt: deparseDeallocateStmt(str, castNode(DeallocateStmt, node)); break; case T_DeclareCursorStmt: deparseDeclareCursorStmt(str, castNode(DeclareCursorStmt, node)); break; case T_DefineStmt: deparseDefineStmt(str, castNode(DefineStmt, node)); break; case T_DeleteStmt: deparseDeleteStmt(str, castNode(DeleteStmt, node)); break; case T_DiscardStmt: deparseDiscardStmt(str, castNode(DiscardStmt, node)); break; case T_DoStmt: deparseDoStmt(str, castNode(DoStmt, node)); break; case T_DropOwnedStmt: deparseDropOwnedStmt(str, castNode(DropOwnedStmt, node)); break; case T_DropStmt: deparseDropStmt(str, castNode(DropStmt, node)); break; case T_DropSubscriptionStmt: deparseDropSubscriptionStmt(str, castNode(DropSubscriptionStmt, node)); break; case T_DropTableSpaceStmt: deparseDropTableSpaceStmt(str, castNode(DropTableSpaceStmt, node)); break; case T_DropRoleStmt: deparseDropRoleStmt(str, castNode(DropRoleStmt, node)); break; case T_DropUserMappingStmt: deparseDropUserMappingStmt(str, castNode(DropUserMappingStmt, node)); break; case T_DropdbStmt: deparseDropdbStmt(str, castNode(DropdbStmt, node)); break; case T_ExecuteStmt: deparseExecuteStmt(str, castNode(ExecuteStmt, node)); break; case T_ExplainStmt: deparseExplainStmt(str, castNode(ExplainStmt, node)); break; case T_FetchStmt: deparseFetchStmt(str, castNode(FetchStmt, node)); break; case T_GrantStmt: deparseGrantStmt(str, castNode(GrantStmt, node)); break; case T_GrantRoleStmt: deparseGrantRoleStmt(str, castNode(GrantRoleStmt, node)); break; case T_ImportForeignSchemaStmt: deparseImportForeignSchemaStmt(str, castNode(ImportForeignSchemaStmt, node)); break; case T_IndexStmt: deparseIndexStmt(str, castNode(IndexStmt, node)); break; case T_InsertStmt: deparseInsertStmt(str, castNode(InsertStmt, node)); break; case T_ListenStmt: deparseListenStmt(str, castNode(ListenStmt, node)); break; case T_RefreshMatViewStmt: deparseRefreshMatViewStmt(str, castNode(RefreshMatViewStmt, node)); break; case T_LoadStmt: deparseLoadStmt(str, castNode(LoadStmt, node)); break; case T_LockStmt: deparseLockStmt(str, castNode(LockStmt, node)); break; case T_NotifyStmt: deparseNotifyStmt(str, castNode(NotifyStmt, node)); break; case T_PrepareStmt: deparsePrepareStmt(str, castNode(PrepareStmt, node)); break; case T_ReassignOwnedStmt: deparseReassignOwnedStmt(str, castNode(ReassignOwnedStmt, node)); break; case T_ReindexStmt: deparseReindexStmt(str, castNode(ReindexStmt, node)); break; case T_RenameStmt: deparseRenameStmt(str, castNode(RenameStmt, node)); break; case T_RuleStmt: deparseRuleStmt(str, castNode(RuleStmt, node)); break; case T_SecLabelStmt: deparseSecLabelStmt(str, castNode(SecLabelStmt, node)); break; case T_SelectStmt: deparseSelectStmt(str, castNode(SelectStmt, node)); break; case T_TransactionStmt: deparseTransactionStmt(str, castNode(TransactionStmt, node)); break; case T_TruncateStmt: deparseTruncateStmt(str, castNode(TruncateStmt, node)); break; case T_UnlistenStmt: deparseUnlistenStmt(str, castNode(UnlistenStmt, node)); break; case T_UpdateStmt: deparseUpdateStmt(str, castNode(UpdateStmt, node)); break; case T_VacuumStmt: deparseVacuumStmt(str, castNode(VacuumStmt, node)); break; case T_VariableSetStmt: deparseVariableSetStmt(str, castNode(VariableSetStmt, node)); break; case T_VariableShowStmt: deparseVariableShowStmt(str, castNode(VariableShowStmt, node)); break; case T_ViewStmt: deparseViewStmt(str, castNode(ViewStmt, node)); break; // These node types are created by DefineStmt grammar for CREATE TYPE in some cases case T_CompositeTypeStmt: deparseCompositeTypeStmt(str, castNode(CompositeTypeStmt, node)); break; case T_CreateEnumStmt: deparseCreateEnumStmt(str, castNode(CreateEnumStmt, node)); break; case T_CreateRangeStmt: deparseCreateRangeStmt(str, castNode(CreateRangeStmt, node)); break; default: // No other node types are supported at the top-level Assert(false); } } PgQueryDeparseResult pg_query_deparse_protobuf(PgQueryProtobuf parse_tree) { PgQueryDeparseResult result = {0}; StringInfoData str; MemoryContext ctx; List *stmts; ListCell *lc; ctx = pg_query_enter_memory_context(); PG_TRY(); { stmts = pg_query_protobuf_to_nodes(parse_tree); initStringInfo(&str); foreach(lc, stmts) { deparseRawStmt(&str, castNode(RawStmt, lfirst(lc))); if (lnext(stmts, lc)) appendStringInfoString(&str, "; "); } result.query = strdup(str.data); } PG_CATCH(); { ErrorData* error_data; PgQueryError* error; MemoryContextSwitchTo(ctx); error_data = CopyErrorData(); // Note: This is intentionally malloc so exiting the memory context doesn't free this error = malloc(sizeof(PgQueryError)); error->message = strdup(error_data->message); error->filename = strdup(error_data->filename); error->funcname = strdup(error_data->funcname); error->context = NULL; error->lineno = error_data->lineno; error->cursorpos = error_data->cursorpos; result.error = error; FlushErrorState(); } PG_END_TRY(); pg_query_exit_memory_context(ctx); return result; } void pg_query_free_deparse_result(PgQueryDeparseResult result) { if (result.error) { pg_query_free_error(result.error); } free(result.query); } libpg_query-13-2.1.0/src/pg_query_enum_defs.c000066400000000000000000002070611413137616400211040ustar00rootroot00000000000000// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb static const char* _enumToStringOverridingKind(OverridingKind value) { switch(value) { case OVERRIDING_NOT_SET: return "OVERRIDING_NOT_SET"; case OVERRIDING_USER_VALUE: return "OVERRIDING_USER_VALUE"; case OVERRIDING_SYSTEM_VALUE: return "OVERRIDING_SYSTEM_VALUE"; } Assert(false); return NULL; } static const char* _enumToStringQuerySource(QuerySource value) { switch(value) { case QSRC_ORIGINAL: return "QSRC_ORIGINAL"; case QSRC_PARSER: return "QSRC_PARSER"; case QSRC_INSTEAD_RULE: return "QSRC_INSTEAD_RULE"; case QSRC_QUAL_INSTEAD_RULE: return "QSRC_QUAL_INSTEAD_RULE"; case QSRC_NON_INSTEAD_RULE: return "QSRC_NON_INSTEAD_RULE"; } Assert(false); return NULL; } static const char* _enumToStringSortByDir(SortByDir value) { switch(value) { case SORTBY_DEFAULT: return "SORTBY_DEFAULT"; case SORTBY_ASC: return "SORTBY_ASC"; case SORTBY_DESC: return "SORTBY_DESC"; case SORTBY_USING: return "SORTBY_USING"; } Assert(false); return NULL; } static const char* _enumToStringSortByNulls(SortByNulls value) { switch(value) { case SORTBY_NULLS_DEFAULT: return "SORTBY_NULLS_DEFAULT"; case SORTBY_NULLS_FIRST: return "SORTBY_NULLS_FIRST"; case SORTBY_NULLS_LAST: return "SORTBY_NULLS_LAST"; } Assert(false); return NULL; } static const char* _enumToStringA_Expr_Kind(A_Expr_Kind value) { switch(value) { case AEXPR_OP: return "AEXPR_OP"; case AEXPR_OP_ANY: return "AEXPR_OP_ANY"; case AEXPR_OP_ALL: return "AEXPR_OP_ALL"; case AEXPR_DISTINCT: return "AEXPR_DISTINCT"; case AEXPR_NOT_DISTINCT: return "AEXPR_NOT_DISTINCT"; case AEXPR_NULLIF: return "AEXPR_NULLIF"; case AEXPR_OF: return "AEXPR_OF"; case AEXPR_IN: return "AEXPR_IN"; case AEXPR_LIKE: return "AEXPR_LIKE"; case AEXPR_ILIKE: return "AEXPR_ILIKE"; case AEXPR_SIMILAR: return "AEXPR_SIMILAR"; case AEXPR_BETWEEN: return "AEXPR_BETWEEN"; case AEXPR_NOT_BETWEEN: return "AEXPR_NOT_BETWEEN"; case AEXPR_BETWEEN_SYM: return "AEXPR_BETWEEN_SYM"; case AEXPR_NOT_BETWEEN_SYM: return "AEXPR_NOT_BETWEEN_SYM"; case AEXPR_PAREN: return "AEXPR_PAREN"; } Assert(false); return NULL; } static const char* _enumToStringRoleSpecType(RoleSpecType value) { switch(value) { case ROLESPEC_CSTRING: return "ROLESPEC_CSTRING"; case ROLESPEC_CURRENT_USER: return "ROLESPEC_CURRENT_USER"; case ROLESPEC_SESSION_USER: return "ROLESPEC_SESSION_USER"; case ROLESPEC_PUBLIC: return "ROLESPEC_PUBLIC"; } Assert(false); return NULL; } static const char* _enumToStringTableLikeOption(TableLikeOption value) { switch(value) { case CREATE_TABLE_LIKE_COMMENTS: return "CREATE_TABLE_LIKE_COMMENTS"; case CREATE_TABLE_LIKE_CONSTRAINTS: return "CREATE_TABLE_LIKE_CONSTRAINTS"; case CREATE_TABLE_LIKE_DEFAULTS: return "CREATE_TABLE_LIKE_DEFAULTS"; case CREATE_TABLE_LIKE_GENERATED: return "CREATE_TABLE_LIKE_GENERATED"; case CREATE_TABLE_LIKE_IDENTITY: return "CREATE_TABLE_LIKE_IDENTITY"; case CREATE_TABLE_LIKE_INDEXES: return "CREATE_TABLE_LIKE_INDEXES"; case CREATE_TABLE_LIKE_STATISTICS: return "CREATE_TABLE_LIKE_STATISTICS"; case CREATE_TABLE_LIKE_STORAGE: return "CREATE_TABLE_LIKE_STORAGE"; case CREATE_TABLE_LIKE_ALL: return "CREATE_TABLE_LIKE_ALL"; } Assert(false); return NULL; } static const char* _enumToStringDefElemAction(DefElemAction value) { switch(value) { case DEFELEM_UNSPEC: return "DEFELEM_UNSPEC"; case DEFELEM_SET: return "DEFELEM_SET"; case DEFELEM_ADD: return "DEFELEM_ADD"; case DEFELEM_DROP: return "DEFELEM_DROP"; } Assert(false); return NULL; } static const char* _enumToStringPartitionRangeDatumKind(PartitionRangeDatumKind value) { switch(value) { case PARTITION_RANGE_DATUM_MINVALUE: return "PARTITION_RANGE_DATUM_MINVALUE"; case PARTITION_RANGE_DATUM_VALUE: return "PARTITION_RANGE_DATUM_VALUE"; case PARTITION_RANGE_DATUM_MAXVALUE: return "PARTITION_RANGE_DATUM_MAXVALUE"; } Assert(false); return NULL; } static const char* _enumToStringRTEKind(RTEKind value) { switch(value) { case RTE_RELATION: return "RTE_RELATION"; case RTE_SUBQUERY: return "RTE_SUBQUERY"; case RTE_JOIN: return "RTE_JOIN"; case RTE_FUNCTION: return "RTE_FUNCTION"; case RTE_TABLEFUNC: return "RTE_TABLEFUNC"; case RTE_VALUES: return "RTE_VALUES"; case RTE_CTE: return "RTE_CTE"; case RTE_NAMEDTUPLESTORE: return "RTE_NAMEDTUPLESTORE"; case RTE_RESULT: return "RTE_RESULT"; } Assert(false); return NULL; } static const char* _enumToStringWCOKind(WCOKind value) { switch(value) { case WCO_VIEW_CHECK: return "WCO_VIEW_CHECK"; case WCO_RLS_INSERT_CHECK: return "WCO_RLS_INSERT_CHECK"; case WCO_RLS_UPDATE_CHECK: return "WCO_RLS_UPDATE_CHECK"; case WCO_RLS_CONFLICT_CHECK: return "WCO_RLS_CONFLICT_CHECK"; } Assert(false); return NULL; } static const char* _enumToStringGroupingSetKind(GroupingSetKind value) { switch(value) { case GROUPING_SET_EMPTY: return "GROUPING_SET_EMPTY"; case GROUPING_SET_SIMPLE: return "GROUPING_SET_SIMPLE"; case GROUPING_SET_ROLLUP: return "GROUPING_SET_ROLLUP"; case GROUPING_SET_CUBE: return "GROUPING_SET_CUBE"; case GROUPING_SET_SETS: return "GROUPING_SET_SETS"; } Assert(false); return NULL; } static const char* _enumToStringCTEMaterialize(CTEMaterialize value) { switch(value) { case CTEMaterializeDefault: return "CTEMaterializeDefault"; case CTEMaterializeAlways: return "CTEMaterializeAlways"; case CTEMaterializeNever: return "CTEMaterializeNever"; } Assert(false); return NULL; } static const char* _enumToStringSetOperation(SetOperation value) { switch(value) { case SETOP_NONE: return "SETOP_NONE"; case SETOP_UNION: return "SETOP_UNION"; case SETOP_INTERSECT: return "SETOP_INTERSECT"; case SETOP_EXCEPT: return "SETOP_EXCEPT"; } Assert(false); return NULL; } static const char* _enumToStringObjectType(ObjectType value) { switch(value) { case OBJECT_ACCESS_METHOD: return "OBJECT_ACCESS_METHOD"; case OBJECT_AGGREGATE: return "OBJECT_AGGREGATE"; case OBJECT_AMOP: return "OBJECT_AMOP"; case OBJECT_AMPROC: return "OBJECT_AMPROC"; case OBJECT_ATTRIBUTE: return "OBJECT_ATTRIBUTE"; case OBJECT_CAST: return "OBJECT_CAST"; case OBJECT_COLUMN: return "OBJECT_COLUMN"; case OBJECT_COLLATION: return "OBJECT_COLLATION"; case OBJECT_CONVERSION: return "OBJECT_CONVERSION"; case OBJECT_DATABASE: return "OBJECT_DATABASE"; case OBJECT_DEFAULT: return "OBJECT_DEFAULT"; case OBJECT_DEFACL: return "OBJECT_DEFACL"; case OBJECT_DOMAIN: return "OBJECT_DOMAIN"; case OBJECT_DOMCONSTRAINT: return "OBJECT_DOMCONSTRAINT"; case OBJECT_EVENT_TRIGGER: return "OBJECT_EVENT_TRIGGER"; case OBJECT_EXTENSION: return "OBJECT_EXTENSION"; case OBJECT_FDW: return "OBJECT_FDW"; case OBJECT_FOREIGN_SERVER: return "OBJECT_FOREIGN_SERVER"; case OBJECT_FOREIGN_TABLE: return "OBJECT_FOREIGN_TABLE"; case OBJECT_FUNCTION: return "OBJECT_FUNCTION"; case OBJECT_INDEX: return "OBJECT_INDEX"; case OBJECT_LANGUAGE: return "OBJECT_LANGUAGE"; case OBJECT_LARGEOBJECT: return "OBJECT_LARGEOBJECT"; case OBJECT_MATVIEW: return "OBJECT_MATVIEW"; case OBJECT_OPCLASS: return "OBJECT_OPCLASS"; case OBJECT_OPERATOR: return "OBJECT_OPERATOR"; case OBJECT_OPFAMILY: return "OBJECT_OPFAMILY"; case OBJECT_POLICY: return "OBJECT_POLICY"; case OBJECT_PROCEDURE: return "OBJECT_PROCEDURE"; case OBJECT_PUBLICATION: return "OBJECT_PUBLICATION"; case OBJECT_PUBLICATION_REL: return "OBJECT_PUBLICATION_REL"; case OBJECT_ROLE: return "OBJECT_ROLE"; case OBJECT_ROUTINE: return "OBJECT_ROUTINE"; case OBJECT_RULE: return "OBJECT_RULE"; case OBJECT_SCHEMA: return "OBJECT_SCHEMA"; case OBJECT_SEQUENCE: return "OBJECT_SEQUENCE"; case OBJECT_SUBSCRIPTION: return "OBJECT_SUBSCRIPTION"; case OBJECT_STATISTIC_EXT: return "OBJECT_STATISTIC_EXT"; case OBJECT_TABCONSTRAINT: return "OBJECT_TABCONSTRAINT"; case OBJECT_TABLE: return "OBJECT_TABLE"; case OBJECT_TABLESPACE: return "OBJECT_TABLESPACE"; case OBJECT_TRANSFORM: return "OBJECT_TRANSFORM"; case OBJECT_TRIGGER: return "OBJECT_TRIGGER"; case OBJECT_TSCONFIGURATION: return "OBJECT_TSCONFIGURATION"; case OBJECT_TSDICTIONARY: return "OBJECT_TSDICTIONARY"; case OBJECT_TSPARSER: return "OBJECT_TSPARSER"; case OBJECT_TSTEMPLATE: return "OBJECT_TSTEMPLATE"; case OBJECT_TYPE: return "OBJECT_TYPE"; case OBJECT_USER_MAPPING: return "OBJECT_USER_MAPPING"; case OBJECT_VIEW: return "OBJECT_VIEW"; } Assert(false); return NULL; } static const char* _enumToStringDropBehavior(DropBehavior value) { switch(value) { case DROP_RESTRICT: return "DROP_RESTRICT"; case DROP_CASCADE: return "DROP_CASCADE"; } Assert(false); return NULL; } static const char* _enumToStringAlterTableType(AlterTableType value) { switch(value) { case AT_AddColumn: return "AT_AddColumn"; case AT_AddColumnRecurse: return "AT_AddColumnRecurse"; case AT_AddColumnToView: return "AT_AddColumnToView"; case AT_ColumnDefault: return "AT_ColumnDefault"; case AT_CookedColumnDefault: return "AT_CookedColumnDefault"; case AT_DropNotNull: return "AT_DropNotNull"; case AT_SetNotNull: return "AT_SetNotNull"; case AT_DropExpression: return "AT_DropExpression"; case AT_CheckNotNull: return "AT_CheckNotNull"; case AT_SetStatistics: return "AT_SetStatistics"; case AT_SetOptions: return "AT_SetOptions"; case AT_ResetOptions: return "AT_ResetOptions"; case AT_SetStorage: return "AT_SetStorage"; case AT_DropColumn: return "AT_DropColumn"; case AT_DropColumnRecurse: return "AT_DropColumnRecurse"; case AT_AddIndex: return "AT_AddIndex"; case AT_ReAddIndex: return "AT_ReAddIndex"; case AT_AddConstraint: return "AT_AddConstraint"; case AT_AddConstraintRecurse: return "AT_AddConstraintRecurse"; case AT_ReAddConstraint: return "AT_ReAddConstraint"; case AT_ReAddDomainConstraint: return "AT_ReAddDomainConstraint"; case AT_AlterConstraint: return "AT_AlterConstraint"; case AT_ValidateConstraint: return "AT_ValidateConstraint"; case AT_ValidateConstraintRecurse: return "AT_ValidateConstraintRecurse"; case AT_AddIndexConstraint: return "AT_AddIndexConstraint"; case AT_DropConstraint: return "AT_DropConstraint"; case AT_DropConstraintRecurse: return "AT_DropConstraintRecurse"; case AT_ReAddComment: return "AT_ReAddComment"; case AT_AlterColumnType: return "AT_AlterColumnType"; case AT_AlterColumnGenericOptions: return "AT_AlterColumnGenericOptions"; case AT_ChangeOwner: return "AT_ChangeOwner"; case AT_ClusterOn: return "AT_ClusterOn"; case AT_DropCluster: return "AT_DropCluster"; case AT_SetLogged: return "AT_SetLogged"; case AT_SetUnLogged: return "AT_SetUnLogged"; case AT_DropOids: return "AT_DropOids"; case AT_SetTableSpace: return "AT_SetTableSpace"; case AT_SetRelOptions: return "AT_SetRelOptions"; case AT_ResetRelOptions: return "AT_ResetRelOptions"; case AT_ReplaceRelOptions: return "AT_ReplaceRelOptions"; case AT_EnableTrig: return "AT_EnableTrig"; case AT_EnableAlwaysTrig: return "AT_EnableAlwaysTrig"; case AT_EnableReplicaTrig: return "AT_EnableReplicaTrig"; case AT_DisableTrig: return "AT_DisableTrig"; case AT_EnableTrigAll: return "AT_EnableTrigAll"; case AT_DisableTrigAll: return "AT_DisableTrigAll"; case AT_EnableTrigUser: return "AT_EnableTrigUser"; case AT_DisableTrigUser: return "AT_DisableTrigUser"; case AT_EnableRule: return "AT_EnableRule"; case AT_EnableAlwaysRule: return "AT_EnableAlwaysRule"; case AT_EnableReplicaRule: return "AT_EnableReplicaRule"; case AT_DisableRule: return "AT_DisableRule"; case AT_AddInherit: return "AT_AddInherit"; case AT_DropInherit: return "AT_DropInherit"; case AT_AddOf: return "AT_AddOf"; case AT_DropOf: return "AT_DropOf"; case AT_ReplicaIdentity: return "AT_ReplicaIdentity"; case AT_EnableRowSecurity: return "AT_EnableRowSecurity"; case AT_DisableRowSecurity: return "AT_DisableRowSecurity"; case AT_ForceRowSecurity: return "AT_ForceRowSecurity"; case AT_NoForceRowSecurity: return "AT_NoForceRowSecurity"; case AT_GenericOptions: return "AT_GenericOptions"; case AT_AttachPartition: return "AT_AttachPartition"; case AT_DetachPartition: return "AT_DetachPartition"; case AT_AddIdentity: return "AT_AddIdentity"; case AT_SetIdentity: return "AT_SetIdentity"; case AT_DropIdentity: return "AT_DropIdentity"; } Assert(false); return NULL; } static const char* _enumToStringGrantTargetType(GrantTargetType value) { switch(value) { case ACL_TARGET_OBJECT: return "ACL_TARGET_OBJECT"; case ACL_TARGET_ALL_IN_SCHEMA: return "ACL_TARGET_ALL_IN_SCHEMA"; case ACL_TARGET_DEFAULTS: return "ACL_TARGET_DEFAULTS"; } Assert(false); return NULL; } static const char* _enumToStringVariableSetKind(VariableSetKind value) { switch(value) { case VAR_SET_VALUE: return "VAR_SET_VALUE"; case VAR_SET_DEFAULT: return "VAR_SET_DEFAULT"; case VAR_SET_CURRENT: return "VAR_SET_CURRENT"; case VAR_SET_MULTI: return "VAR_SET_MULTI"; case VAR_RESET: return "VAR_RESET"; case VAR_RESET_ALL: return "VAR_RESET_ALL"; } Assert(false); return NULL; } static const char* _enumToStringConstrType(ConstrType value) { switch(value) { case CONSTR_NULL: return "CONSTR_NULL"; case CONSTR_NOTNULL: return "CONSTR_NOTNULL"; case CONSTR_DEFAULT: return "CONSTR_DEFAULT"; case CONSTR_IDENTITY: return "CONSTR_IDENTITY"; case CONSTR_GENERATED: return "CONSTR_GENERATED"; case CONSTR_CHECK: return "CONSTR_CHECK"; case CONSTR_PRIMARY: return "CONSTR_PRIMARY"; case CONSTR_UNIQUE: return "CONSTR_UNIQUE"; case CONSTR_EXCLUSION: return "CONSTR_EXCLUSION"; case CONSTR_FOREIGN: return "CONSTR_FOREIGN"; case CONSTR_ATTR_DEFERRABLE: return "CONSTR_ATTR_DEFERRABLE"; case CONSTR_ATTR_NOT_DEFERRABLE: return "CONSTR_ATTR_NOT_DEFERRABLE"; case CONSTR_ATTR_DEFERRED: return "CONSTR_ATTR_DEFERRED"; case CONSTR_ATTR_IMMEDIATE: return "CONSTR_ATTR_IMMEDIATE"; } Assert(false); return NULL; } static const char* _enumToStringImportForeignSchemaType(ImportForeignSchemaType value) { switch(value) { case FDW_IMPORT_SCHEMA_ALL: return "FDW_IMPORT_SCHEMA_ALL"; case FDW_IMPORT_SCHEMA_LIMIT_TO: return "FDW_IMPORT_SCHEMA_LIMIT_TO"; case FDW_IMPORT_SCHEMA_EXCEPT: return "FDW_IMPORT_SCHEMA_EXCEPT"; } Assert(false); return NULL; } static const char* _enumToStringRoleStmtType(RoleStmtType value) { switch(value) { case ROLESTMT_ROLE: return "ROLESTMT_ROLE"; case ROLESTMT_USER: return "ROLESTMT_USER"; case ROLESTMT_GROUP: return "ROLESTMT_GROUP"; } Assert(false); return NULL; } static const char* _enumToStringFetchDirection(FetchDirection value) { switch(value) { case FETCH_FORWARD: return "FETCH_FORWARD"; case FETCH_BACKWARD: return "FETCH_BACKWARD"; case FETCH_ABSOLUTE: return "FETCH_ABSOLUTE"; case FETCH_RELATIVE: return "FETCH_RELATIVE"; } Assert(false); return NULL; } static const char* _enumToStringFunctionParameterMode(FunctionParameterMode value) { switch(value) { case FUNC_PARAM_IN: return "FUNC_PARAM_IN"; case FUNC_PARAM_OUT: return "FUNC_PARAM_OUT"; case FUNC_PARAM_INOUT: return "FUNC_PARAM_INOUT"; case FUNC_PARAM_VARIADIC: return "FUNC_PARAM_VARIADIC"; case FUNC_PARAM_TABLE: return "FUNC_PARAM_TABLE"; } Assert(false); return NULL; } static const char* _enumToStringTransactionStmtKind(TransactionStmtKind value) { switch(value) { case TRANS_STMT_BEGIN: return "TRANS_STMT_BEGIN"; case TRANS_STMT_START: return "TRANS_STMT_START"; case TRANS_STMT_COMMIT: return "TRANS_STMT_COMMIT"; case TRANS_STMT_ROLLBACK: return "TRANS_STMT_ROLLBACK"; case TRANS_STMT_SAVEPOINT: return "TRANS_STMT_SAVEPOINT"; case TRANS_STMT_RELEASE: return "TRANS_STMT_RELEASE"; case TRANS_STMT_ROLLBACK_TO: return "TRANS_STMT_ROLLBACK_TO"; case TRANS_STMT_PREPARE: return "TRANS_STMT_PREPARE"; case TRANS_STMT_COMMIT_PREPARED: return "TRANS_STMT_COMMIT_PREPARED"; case TRANS_STMT_ROLLBACK_PREPARED: return "TRANS_STMT_ROLLBACK_PREPARED"; } Assert(false); return NULL; } static const char* _enumToStringViewCheckOption(ViewCheckOption value) { switch(value) { case NO_CHECK_OPTION: return "NO_CHECK_OPTION"; case LOCAL_CHECK_OPTION: return "LOCAL_CHECK_OPTION"; case CASCADED_CHECK_OPTION: return "CASCADED_CHECK_OPTION"; } Assert(false); return NULL; } static const char* _enumToStringClusterOption(ClusterOption value) { switch(value) { case CLUOPT_RECHECK: return "CLUOPT_RECHECK"; case CLUOPT_VERBOSE: return "CLUOPT_VERBOSE"; } Assert(false); return NULL; } static const char* _enumToStringDiscardMode(DiscardMode value) { switch(value) { case DISCARD_ALL: return "DISCARD_ALL"; case DISCARD_PLANS: return "DISCARD_PLANS"; case DISCARD_SEQUENCES: return "DISCARD_SEQUENCES"; case DISCARD_TEMP: return "DISCARD_TEMP"; } Assert(false); return NULL; } static const char* _enumToStringReindexObjectType(ReindexObjectType value) { switch(value) { case REINDEX_OBJECT_INDEX: return "REINDEX_OBJECT_INDEX"; case REINDEX_OBJECT_TABLE: return "REINDEX_OBJECT_TABLE"; case REINDEX_OBJECT_SCHEMA: return "REINDEX_OBJECT_SCHEMA"; case REINDEX_OBJECT_SYSTEM: return "REINDEX_OBJECT_SYSTEM"; case REINDEX_OBJECT_DATABASE: return "REINDEX_OBJECT_DATABASE"; } Assert(false); return NULL; } static const char* _enumToStringAlterTSConfigType(AlterTSConfigType value) { switch(value) { case ALTER_TSCONFIG_ADD_MAPPING: return "ALTER_TSCONFIG_ADD_MAPPING"; case ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN: return "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN"; case ALTER_TSCONFIG_REPLACE_DICT: return "ALTER_TSCONFIG_REPLACE_DICT"; case ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN: return "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN"; case ALTER_TSCONFIG_DROP_MAPPING: return "ALTER_TSCONFIG_DROP_MAPPING"; } Assert(false); return NULL; } static const char* _enumToStringAlterSubscriptionType(AlterSubscriptionType value) { switch(value) { case ALTER_SUBSCRIPTION_OPTIONS: return "ALTER_SUBSCRIPTION_OPTIONS"; case ALTER_SUBSCRIPTION_CONNECTION: return "ALTER_SUBSCRIPTION_CONNECTION"; case ALTER_SUBSCRIPTION_PUBLICATION: return "ALTER_SUBSCRIPTION_PUBLICATION"; case ALTER_SUBSCRIPTION_REFRESH: return "ALTER_SUBSCRIPTION_REFRESH"; case ALTER_SUBSCRIPTION_ENABLED: return "ALTER_SUBSCRIPTION_ENABLED"; } Assert(false); return NULL; } static const char* _enumToStringOnCommitAction(OnCommitAction value) { switch(value) { case ONCOMMIT_NOOP: return "ONCOMMIT_NOOP"; case ONCOMMIT_PRESERVE_ROWS: return "ONCOMMIT_PRESERVE_ROWS"; case ONCOMMIT_DELETE_ROWS: return "ONCOMMIT_DELETE_ROWS"; case ONCOMMIT_DROP: return "ONCOMMIT_DROP"; } Assert(false); return NULL; } static const char* _enumToStringParamKind(ParamKind value) { switch(value) { case PARAM_EXTERN: return "PARAM_EXTERN"; case PARAM_EXEC: return "PARAM_EXEC"; case PARAM_SUBLINK: return "PARAM_SUBLINK"; case PARAM_MULTIEXPR: return "PARAM_MULTIEXPR"; } Assert(false); return NULL; } static const char* _enumToStringCoercionContext(CoercionContext value) { switch(value) { case COERCION_IMPLICIT: return "COERCION_IMPLICIT"; case COERCION_ASSIGNMENT: return "COERCION_ASSIGNMENT"; case COERCION_EXPLICIT: return "COERCION_EXPLICIT"; } Assert(false); return NULL; } static const char* _enumToStringCoercionForm(CoercionForm value) { switch(value) { case COERCE_EXPLICIT_CALL: return "COERCE_EXPLICIT_CALL"; case COERCE_EXPLICIT_CAST: return "COERCE_EXPLICIT_CAST"; case COERCE_IMPLICIT_CAST: return "COERCE_IMPLICIT_CAST"; } Assert(false); return NULL; } static const char* _enumToStringBoolExprType(BoolExprType value) { switch(value) { case AND_EXPR: return "AND_EXPR"; case OR_EXPR: return "OR_EXPR"; case NOT_EXPR: return "NOT_EXPR"; } Assert(false); return NULL; } static const char* _enumToStringSubLinkType(SubLinkType value) { switch(value) { case EXISTS_SUBLINK: return "EXISTS_SUBLINK"; case ALL_SUBLINK: return "ALL_SUBLINK"; case ANY_SUBLINK: return "ANY_SUBLINK"; case ROWCOMPARE_SUBLINK: return "ROWCOMPARE_SUBLINK"; case EXPR_SUBLINK: return "EXPR_SUBLINK"; case MULTIEXPR_SUBLINK: return "MULTIEXPR_SUBLINK"; case ARRAY_SUBLINK: return "ARRAY_SUBLINK"; case CTE_SUBLINK: return "CTE_SUBLINK"; } Assert(false); return NULL; } static const char* _enumToStringRowCompareType(RowCompareType value) { switch(value) { case ROWCOMPARE_LT: return "ROWCOMPARE_LT"; case ROWCOMPARE_LE: return "ROWCOMPARE_LE"; case ROWCOMPARE_EQ: return "ROWCOMPARE_EQ"; case ROWCOMPARE_GE: return "ROWCOMPARE_GE"; case ROWCOMPARE_GT: return "ROWCOMPARE_GT"; case ROWCOMPARE_NE: return "ROWCOMPARE_NE"; } Assert(false); return NULL; } static const char* _enumToStringMinMaxOp(MinMaxOp value) { switch(value) { case IS_GREATEST: return "IS_GREATEST"; case IS_LEAST: return "IS_LEAST"; } Assert(false); return NULL; } static const char* _enumToStringSQLValueFunctionOp(SQLValueFunctionOp value) { switch(value) { case SVFOP_CURRENT_DATE: return "SVFOP_CURRENT_DATE"; case SVFOP_CURRENT_TIME: return "SVFOP_CURRENT_TIME"; case SVFOP_CURRENT_TIME_N: return "SVFOP_CURRENT_TIME_N"; case SVFOP_CURRENT_TIMESTAMP: return "SVFOP_CURRENT_TIMESTAMP"; case SVFOP_CURRENT_TIMESTAMP_N: return "SVFOP_CURRENT_TIMESTAMP_N"; case SVFOP_LOCALTIME: return "SVFOP_LOCALTIME"; case SVFOP_LOCALTIME_N: return "SVFOP_LOCALTIME_N"; case SVFOP_LOCALTIMESTAMP: return "SVFOP_LOCALTIMESTAMP"; case SVFOP_LOCALTIMESTAMP_N: return "SVFOP_LOCALTIMESTAMP_N"; case SVFOP_CURRENT_ROLE: return "SVFOP_CURRENT_ROLE"; case SVFOP_CURRENT_USER: return "SVFOP_CURRENT_USER"; case SVFOP_USER: return "SVFOP_USER"; case SVFOP_SESSION_USER: return "SVFOP_SESSION_USER"; case SVFOP_CURRENT_CATALOG: return "SVFOP_CURRENT_CATALOG"; case SVFOP_CURRENT_SCHEMA: return "SVFOP_CURRENT_SCHEMA"; } Assert(false); return NULL; } static const char* _enumToStringXmlExprOp(XmlExprOp value) { switch(value) { case IS_XMLCONCAT: return "IS_XMLCONCAT"; case IS_XMLELEMENT: return "IS_XMLELEMENT"; case IS_XMLFOREST: return "IS_XMLFOREST"; case IS_XMLPARSE: return "IS_XMLPARSE"; case IS_XMLPI: return "IS_XMLPI"; case IS_XMLROOT: return "IS_XMLROOT"; case IS_XMLSERIALIZE: return "IS_XMLSERIALIZE"; case IS_DOCUMENT: return "IS_DOCUMENT"; } Assert(false); return NULL; } static const char* _enumToStringXmlOptionType(XmlOptionType value) { switch(value) { case XMLOPTION_DOCUMENT: return "XMLOPTION_DOCUMENT"; case XMLOPTION_CONTENT: return "XMLOPTION_CONTENT"; } Assert(false); return NULL; } static const char* _enumToStringNullTestType(NullTestType value) { switch(value) { case IS_NULL: return "IS_NULL"; case IS_NOT_NULL: return "IS_NOT_NULL"; } Assert(false); return NULL; } static const char* _enumToStringBoolTestType(BoolTestType value) { switch(value) { case IS_TRUE: return "IS_TRUE"; case IS_NOT_TRUE: return "IS_NOT_TRUE"; case IS_FALSE: return "IS_FALSE"; case IS_NOT_FALSE: return "IS_NOT_FALSE"; case IS_UNKNOWN: return "IS_UNKNOWN"; case IS_NOT_UNKNOWN: return "IS_NOT_UNKNOWN"; } Assert(false); return NULL; } static const char* _enumToStringCmdType(CmdType value) { switch(value) { case CMD_UNKNOWN: return "CMD_UNKNOWN"; case CMD_SELECT: return "CMD_SELECT"; case CMD_UPDATE: return "CMD_UPDATE"; case CMD_INSERT: return "CMD_INSERT"; case CMD_DELETE: return "CMD_DELETE"; case CMD_UTILITY: return "CMD_UTILITY"; case CMD_NOTHING: return "CMD_NOTHING"; } Assert(false); return NULL; } static const char* _enumToStringJoinType(JoinType value) { switch(value) { case JOIN_INNER: return "JOIN_INNER"; case JOIN_LEFT: return "JOIN_LEFT"; case JOIN_FULL: return "JOIN_FULL"; case JOIN_RIGHT: return "JOIN_RIGHT"; case JOIN_SEMI: return "JOIN_SEMI"; case JOIN_ANTI: return "JOIN_ANTI"; case JOIN_UNIQUE_OUTER: return "JOIN_UNIQUE_OUTER"; case JOIN_UNIQUE_INNER: return "JOIN_UNIQUE_INNER"; } Assert(false); return NULL; } static const char* _enumToStringAggStrategy(AggStrategy value) { switch(value) { case AGG_PLAIN: return "AGG_PLAIN"; case AGG_SORTED: return "AGG_SORTED"; case AGG_HASHED: return "AGG_HASHED"; case AGG_MIXED: return "AGG_MIXED"; } Assert(false); return NULL; } static const char* _enumToStringAggSplit(AggSplit value) { switch(value) { case AGGSPLIT_SIMPLE: return "AGGSPLIT_SIMPLE"; case AGGSPLIT_INITIAL_SERIAL: return "AGGSPLIT_INITIAL_SERIAL"; case AGGSPLIT_FINAL_DESERIAL: return "AGGSPLIT_FINAL_DESERIAL"; } Assert(false); return NULL; } static const char* _enumToStringSetOpCmd(SetOpCmd value) { switch(value) { case SETOPCMD_INTERSECT: return "SETOPCMD_INTERSECT"; case SETOPCMD_INTERSECT_ALL: return "SETOPCMD_INTERSECT_ALL"; case SETOPCMD_EXCEPT: return "SETOPCMD_EXCEPT"; case SETOPCMD_EXCEPT_ALL: return "SETOPCMD_EXCEPT_ALL"; } Assert(false); return NULL; } static const char* _enumToStringSetOpStrategy(SetOpStrategy value) { switch(value) { case SETOP_SORTED: return "SETOP_SORTED"; case SETOP_HASHED: return "SETOP_HASHED"; } Assert(false); return NULL; } static const char* _enumToStringOnConflictAction(OnConflictAction value) { switch(value) { case ONCONFLICT_NONE: return "ONCONFLICT_NONE"; case ONCONFLICT_NOTHING: return "ONCONFLICT_NOTHING"; case ONCONFLICT_UPDATE: return "ONCONFLICT_UPDATE"; } Assert(false); return NULL; } static const char* _enumToStringLimitOption(LimitOption value) { switch(value) { case LIMIT_OPTION_DEFAULT: return "LIMIT_OPTION_DEFAULT"; case LIMIT_OPTION_COUNT: return "LIMIT_OPTION_COUNT"; case LIMIT_OPTION_WITH_TIES: return "LIMIT_OPTION_WITH_TIES"; } Assert(false); return NULL; } static const char* _enumToStringLockClauseStrength(LockClauseStrength value) { switch(value) { case LCS_NONE: return "LCS_NONE"; case LCS_FORKEYSHARE: return "LCS_FORKEYSHARE"; case LCS_FORSHARE: return "LCS_FORSHARE"; case LCS_FORNOKEYUPDATE: return "LCS_FORNOKEYUPDATE"; case LCS_FORUPDATE: return "LCS_FORUPDATE"; } Assert(false); return NULL; } static const char* _enumToStringLockWaitPolicy(LockWaitPolicy value) { switch(value) { case LockWaitBlock: return "LockWaitBlock"; case LockWaitSkip: return "LockWaitSkip"; case LockWaitError: return "LockWaitError"; } Assert(false); return NULL; } static const char* _enumToStringLockTupleMode(LockTupleMode value) { switch(value) { case LockTupleKeyShare: return "LockTupleKeyShare"; case LockTupleShare: return "LockTupleShare"; case LockTupleNoKeyExclusive: return "LockTupleNoKeyExclusive"; case LockTupleExclusive: return "LockTupleExclusive"; } Assert(false); return NULL; }static int _enumToIntOverridingKind(OverridingKind value) { switch(value) { case OVERRIDING_NOT_SET: return 1; case OVERRIDING_USER_VALUE: return 2; case OVERRIDING_SYSTEM_VALUE: return 3; } Assert(false); return -1; } static int _enumToIntQuerySource(QuerySource value) { switch(value) { case QSRC_ORIGINAL: return 1; case QSRC_PARSER: return 2; case QSRC_INSTEAD_RULE: return 3; case QSRC_QUAL_INSTEAD_RULE: return 4; case QSRC_NON_INSTEAD_RULE: return 5; } Assert(false); return -1; } static int _enumToIntSortByDir(SortByDir value) { switch(value) { case SORTBY_DEFAULT: return 1; case SORTBY_ASC: return 2; case SORTBY_DESC: return 3; case SORTBY_USING: return 4; } Assert(false); return -1; } static int _enumToIntSortByNulls(SortByNulls value) { switch(value) { case SORTBY_NULLS_DEFAULT: return 1; case SORTBY_NULLS_FIRST: return 2; case SORTBY_NULLS_LAST: return 3; } Assert(false); return -1; } static int _enumToIntA_Expr_Kind(A_Expr_Kind value) { switch(value) { case AEXPR_OP: return 1; case AEXPR_OP_ANY: return 2; case AEXPR_OP_ALL: return 3; case AEXPR_DISTINCT: return 4; case AEXPR_NOT_DISTINCT: return 5; case AEXPR_NULLIF: return 6; case AEXPR_OF: return 7; case AEXPR_IN: return 8; case AEXPR_LIKE: return 9; case AEXPR_ILIKE: return 10; case AEXPR_SIMILAR: return 11; case AEXPR_BETWEEN: return 12; case AEXPR_NOT_BETWEEN: return 13; case AEXPR_BETWEEN_SYM: return 14; case AEXPR_NOT_BETWEEN_SYM: return 15; case AEXPR_PAREN: return 16; } Assert(false); return -1; } static int _enumToIntRoleSpecType(RoleSpecType value) { switch(value) { case ROLESPEC_CSTRING: return 1; case ROLESPEC_CURRENT_USER: return 2; case ROLESPEC_SESSION_USER: return 3; case ROLESPEC_PUBLIC: return 4; } Assert(false); return -1; } static int _enumToIntTableLikeOption(TableLikeOption value) { switch(value) { case CREATE_TABLE_LIKE_COMMENTS: return 1; case CREATE_TABLE_LIKE_CONSTRAINTS: return 2; case CREATE_TABLE_LIKE_DEFAULTS: return 3; case CREATE_TABLE_LIKE_GENERATED: return 4; case CREATE_TABLE_LIKE_IDENTITY: return 5; case CREATE_TABLE_LIKE_INDEXES: return 6; case CREATE_TABLE_LIKE_STATISTICS: return 7; case CREATE_TABLE_LIKE_STORAGE: return 8; case CREATE_TABLE_LIKE_ALL: return 9; } Assert(false); return -1; } static int _enumToIntDefElemAction(DefElemAction value) { switch(value) { case DEFELEM_UNSPEC: return 1; case DEFELEM_SET: return 2; case DEFELEM_ADD: return 3; case DEFELEM_DROP: return 4; } Assert(false); return -1; } static int _enumToIntPartitionRangeDatumKind(PartitionRangeDatumKind value) { switch(value) { case PARTITION_RANGE_DATUM_MINVALUE: return 1; case PARTITION_RANGE_DATUM_VALUE: return 2; case PARTITION_RANGE_DATUM_MAXVALUE: return 3; } Assert(false); return -1; } static int _enumToIntRTEKind(RTEKind value) { switch(value) { case RTE_RELATION: return 1; case RTE_SUBQUERY: return 2; case RTE_JOIN: return 3; case RTE_FUNCTION: return 4; case RTE_TABLEFUNC: return 5; case RTE_VALUES: return 6; case RTE_CTE: return 7; case RTE_NAMEDTUPLESTORE: return 8; case RTE_RESULT: return 9; } Assert(false); return -1; } static int _enumToIntWCOKind(WCOKind value) { switch(value) { case WCO_VIEW_CHECK: return 1; case WCO_RLS_INSERT_CHECK: return 2; case WCO_RLS_UPDATE_CHECK: return 3; case WCO_RLS_CONFLICT_CHECK: return 4; } Assert(false); return -1; } static int _enumToIntGroupingSetKind(GroupingSetKind value) { switch(value) { case GROUPING_SET_EMPTY: return 1; case GROUPING_SET_SIMPLE: return 2; case GROUPING_SET_ROLLUP: return 3; case GROUPING_SET_CUBE: return 4; case GROUPING_SET_SETS: return 5; } Assert(false); return -1; } static int _enumToIntCTEMaterialize(CTEMaterialize value) { switch(value) { case CTEMaterializeDefault: return 1; case CTEMaterializeAlways: return 2; case CTEMaterializeNever: return 3; } Assert(false); return -1; } static int _enumToIntSetOperation(SetOperation value) { switch(value) { case SETOP_NONE: return 1; case SETOP_UNION: return 2; case SETOP_INTERSECT: return 3; case SETOP_EXCEPT: return 4; } Assert(false); return -1; } static int _enumToIntObjectType(ObjectType value) { switch(value) { case OBJECT_ACCESS_METHOD: return 1; case OBJECT_AGGREGATE: return 2; case OBJECT_AMOP: return 3; case OBJECT_AMPROC: return 4; case OBJECT_ATTRIBUTE: return 5; case OBJECT_CAST: return 6; case OBJECT_COLUMN: return 7; case OBJECT_COLLATION: return 8; case OBJECT_CONVERSION: return 9; case OBJECT_DATABASE: return 10; case OBJECT_DEFAULT: return 11; case OBJECT_DEFACL: return 12; case OBJECT_DOMAIN: return 13; case OBJECT_DOMCONSTRAINT: return 14; case OBJECT_EVENT_TRIGGER: return 15; case OBJECT_EXTENSION: return 16; case OBJECT_FDW: return 17; case OBJECT_FOREIGN_SERVER: return 18; case OBJECT_FOREIGN_TABLE: return 19; case OBJECT_FUNCTION: return 20; case OBJECT_INDEX: return 21; case OBJECT_LANGUAGE: return 22; case OBJECT_LARGEOBJECT: return 23; case OBJECT_MATVIEW: return 24; case OBJECT_OPCLASS: return 25; case OBJECT_OPERATOR: return 26; case OBJECT_OPFAMILY: return 27; case OBJECT_POLICY: return 28; case OBJECT_PROCEDURE: return 29; case OBJECT_PUBLICATION: return 30; case OBJECT_PUBLICATION_REL: return 31; case OBJECT_ROLE: return 32; case OBJECT_ROUTINE: return 33; case OBJECT_RULE: return 34; case OBJECT_SCHEMA: return 35; case OBJECT_SEQUENCE: return 36; case OBJECT_SUBSCRIPTION: return 37; case OBJECT_STATISTIC_EXT: return 38; case OBJECT_TABCONSTRAINT: return 39; case OBJECT_TABLE: return 40; case OBJECT_TABLESPACE: return 41; case OBJECT_TRANSFORM: return 42; case OBJECT_TRIGGER: return 43; case OBJECT_TSCONFIGURATION: return 44; case OBJECT_TSDICTIONARY: return 45; case OBJECT_TSPARSER: return 46; case OBJECT_TSTEMPLATE: return 47; case OBJECT_TYPE: return 48; case OBJECT_USER_MAPPING: return 49; case OBJECT_VIEW: return 50; } Assert(false); return -1; } static int _enumToIntDropBehavior(DropBehavior value) { switch(value) { case DROP_RESTRICT: return 1; case DROP_CASCADE: return 2; } Assert(false); return -1; } static int _enumToIntAlterTableType(AlterTableType value) { switch(value) { case AT_AddColumn: return 1; case AT_AddColumnRecurse: return 2; case AT_AddColumnToView: return 3; case AT_ColumnDefault: return 4; case AT_CookedColumnDefault: return 5; case AT_DropNotNull: return 6; case AT_SetNotNull: return 7; case AT_DropExpression: return 8; case AT_CheckNotNull: return 9; case AT_SetStatistics: return 10; case AT_SetOptions: return 11; case AT_ResetOptions: return 12; case AT_SetStorage: return 13; case AT_DropColumn: return 14; case AT_DropColumnRecurse: return 15; case AT_AddIndex: return 16; case AT_ReAddIndex: return 17; case AT_AddConstraint: return 18; case AT_AddConstraintRecurse: return 19; case AT_ReAddConstraint: return 20; case AT_ReAddDomainConstraint: return 21; case AT_AlterConstraint: return 22; case AT_ValidateConstraint: return 23; case AT_ValidateConstraintRecurse: return 24; case AT_AddIndexConstraint: return 25; case AT_DropConstraint: return 26; case AT_DropConstraintRecurse: return 27; case AT_ReAddComment: return 28; case AT_AlterColumnType: return 29; case AT_AlterColumnGenericOptions: return 30; case AT_ChangeOwner: return 31; case AT_ClusterOn: return 32; case AT_DropCluster: return 33; case AT_SetLogged: return 34; case AT_SetUnLogged: return 35; case AT_DropOids: return 36; case AT_SetTableSpace: return 37; case AT_SetRelOptions: return 38; case AT_ResetRelOptions: return 39; case AT_ReplaceRelOptions: return 40; case AT_EnableTrig: return 41; case AT_EnableAlwaysTrig: return 42; case AT_EnableReplicaTrig: return 43; case AT_DisableTrig: return 44; case AT_EnableTrigAll: return 45; case AT_DisableTrigAll: return 46; case AT_EnableTrigUser: return 47; case AT_DisableTrigUser: return 48; case AT_EnableRule: return 49; case AT_EnableAlwaysRule: return 50; case AT_EnableReplicaRule: return 51; case AT_DisableRule: return 52; case AT_AddInherit: return 53; case AT_DropInherit: return 54; case AT_AddOf: return 55; case AT_DropOf: return 56; case AT_ReplicaIdentity: return 57; case AT_EnableRowSecurity: return 58; case AT_DisableRowSecurity: return 59; case AT_ForceRowSecurity: return 60; case AT_NoForceRowSecurity: return 61; case AT_GenericOptions: return 62; case AT_AttachPartition: return 63; case AT_DetachPartition: return 64; case AT_AddIdentity: return 65; case AT_SetIdentity: return 66; case AT_DropIdentity: return 67; } Assert(false); return -1; } static int _enumToIntGrantTargetType(GrantTargetType value) { switch(value) { case ACL_TARGET_OBJECT: return 1; case ACL_TARGET_ALL_IN_SCHEMA: return 2; case ACL_TARGET_DEFAULTS: return 3; } Assert(false); return -1; } static int _enumToIntVariableSetKind(VariableSetKind value) { switch(value) { case VAR_SET_VALUE: return 1; case VAR_SET_DEFAULT: return 2; case VAR_SET_CURRENT: return 3; case VAR_SET_MULTI: return 4; case VAR_RESET: return 5; case VAR_RESET_ALL: return 6; } Assert(false); return -1; } static int _enumToIntConstrType(ConstrType value) { switch(value) { case CONSTR_NULL: return 1; case CONSTR_NOTNULL: return 2; case CONSTR_DEFAULT: return 3; case CONSTR_IDENTITY: return 4; case CONSTR_GENERATED: return 5; case CONSTR_CHECK: return 6; case CONSTR_PRIMARY: return 7; case CONSTR_UNIQUE: return 8; case CONSTR_EXCLUSION: return 9; case CONSTR_FOREIGN: return 10; case CONSTR_ATTR_DEFERRABLE: return 11; case CONSTR_ATTR_NOT_DEFERRABLE: return 12; case CONSTR_ATTR_DEFERRED: return 13; case CONSTR_ATTR_IMMEDIATE: return 14; } Assert(false); return -1; } static int _enumToIntImportForeignSchemaType(ImportForeignSchemaType value) { switch(value) { case FDW_IMPORT_SCHEMA_ALL: return 1; case FDW_IMPORT_SCHEMA_LIMIT_TO: return 2; case FDW_IMPORT_SCHEMA_EXCEPT: return 3; } Assert(false); return -1; } static int _enumToIntRoleStmtType(RoleStmtType value) { switch(value) { case ROLESTMT_ROLE: return 1; case ROLESTMT_USER: return 2; case ROLESTMT_GROUP: return 3; } Assert(false); return -1; } static int _enumToIntFetchDirection(FetchDirection value) { switch(value) { case FETCH_FORWARD: return 1; case FETCH_BACKWARD: return 2; case FETCH_ABSOLUTE: return 3; case FETCH_RELATIVE: return 4; } Assert(false); return -1; } static int _enumToIntFunctionParameterMode(FunctionParameterMode value) { switch(value) { case FUNC_PARAM_IN: return 1; case FUNC_PARAM_OUT: return 2; case FUNC_PARAM_INOUT: return 3; case FUNC_PARAM_VARIADIC: return 4; case FUNC_PARAM_TABLE: return 5; } Assert(false); return -1; } static int _enumToIntTransactionStmtKind(TransactionStmtKind value) { switch(value) { case TRANS_STMT_BEGIN: return 1; case TRANS_STMT_START: return 2; case TRANS_STMT_COMMIT: return 3; case TRANS_STMT_ROLLBACK: return 4; case TRANS_STMT_SAVEPOINT: return 5; case TRANS_STMT_RELEASE: return 6; case TRANS_STMT_ROLLBACK_TO: return 7; case TRANS_STMT_PREPARE: return 8; case TRANS_STMT_COMMIT_PREPARED: return 9; case TRANS_STMT_ROLLBACK_PREPARED: return 10; } Assert(false); return -1; } static int _enumToIntViewCheckOption(ViewCheckOption value) { switch(value) { case NO_CHECK_OPTION: return 1; case LOCAL_CHECK_OPTION: return 2; case CASCADED_CHECK_OPTION: return 3; } Assert(false); return -1; } static int _enumToIntClusterOption(ClusterOption value) { switch(value) { case CLUOPT_RECHECK: return 1; case CLUOPT_VERBOSE: return 2; } Assert(false); return -1; } static int _enumToIntDiscardMode(DiscardMode value) { switch(value) { case DISCARD_ALL: return 1; case DISCARD_PLANS: return 2; case DISCARD_SEQUENCES: return 3; case DISCARD_TEMP: return 4; } Assert(false); return -1; } static int _enumToIntReindexObjectType(ReindexObjectType value) { switch(value) { case REINDEX_OBJECT_INDEX: return 1; case REINDEX_OBJECT_TABLE: return 2; case REINDEX_OBJECT_SCHEMA: return 3; case REINDEX_OBJECT_SYSTEM: return 4; case REINDEX_OBJECT_DATABASE: return 5; } Assert(false); return -1; } static int _enumToIntAlterTSConfigType(AlterTSConfigType value) { switch(value) { case ALTER_TSCONFIG_ADD_MAPPING: return 1; case ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN: return 2; case ALTER_TSCONFIG_REPLACE_DICT: return 3; case ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN: return 4; case ALTER_TSCONFIG_DROP_MAPPING: return 5; } Assert(false); return -1; } static int _enumToIntAlterSubscriptionType(AlterSubscriptionType value) { switch(value) { case ALTER_SUBSCRIPTION_OPTIONS: return 1; case ALTER_SUBSCRIPTION_CONNECTION: return 2; case ALTER_SUBSCRIPTION_PUBLICATION: return 3; case ALTER_SUBSCRIPTION_REFRESH: return 4; case ALTER_SUBSCRIPTION_ENABLED: return 5; } Assert(false); return -1; } static int _enumToIntOnCommitAction(OnCommitAction value) { switch(value) { case ONCOMMIT_NOOP: return 1; case ONCOMMIT_PRESERVE_ROWS: return 2; case ONCOMMIT_DELETE_ROWS: return 3; case ONCOMMIT_DROP: return 4; } Assert(false); return -1; } static int _enumToIntParamKind(ParamKind value) { switch(value) { case PARAM_EXTERN: return 1; case PARAM_EXEC: return 2; case PARAM_SUBLINK: return 3; case PARAM_MULTIEXPR: return 4; } Assert(false); return -1; } static int _enumToIntCoercionContext(CoercionContext value) { switch(value) { case COERCION_IMPLICIT: return 1; case COERCION_ASSIGNMENT: return 2; case COERCION_EXPLICIT: return 3; } Assert(false); return -1; } static int _enumToIntCoercionForm(CoercionForm value) { switch(value) { case COERCE_EXPLICIT_CALL: return 1; case COERCE_EXPLICIT_CAST: return 2; case COERCE_IMPLICIT_CAST: return 3; } Assert(false); return -1; } static int _enumToIntBoolExprType(BoolExprType value) { switch(value) { case AND_EXPR: return 1; case OR_EXPR: return 2; case NOT_EXPR: return 3; } Assert(false); return -1; } static int _enumToIntSubLinkType(SubLinkType value) { switch(value) { case EXISTS_SUBLINK: return 1; case ALL_SUBLINK: return 2; case ANY_SUBLINK: return 3; case ROWCOMPARE_SUBLINK: return 4; case EXPR_SUBLINK: return 5; case MULTIEXPR_SUBLINK: return 6; case ARRAY_SUBLINK: return 7; case CTE_SUBLINK: return 8; } Assert(false); return -1; } static int _enumToIntRowCompareType(RowCompareType value) { switch(value) { case ROWCOMPARE_LT: return 1; case ROWCOMPARE_LE: return 2; case ROWCOMPARE_EQ: return 3; case ROWCOMPARE_GE: return 4; case ROWCOMPARE_GT: return 5; case ROWCOMPARE_NE: return 6; } Assert(false); return -1; } static int _enumToIntMinMaxOp(MinMaxOp value) { switch(value) { case IS_GREATEST: return 1; case IS_LEAST: return 2; } Assert(false); return -1; } static int _enumToIntSQLValueFunctionOp(SQLValueFunctionOp value) { switch(value) { case SVFOP_CURRENT_DATE: return 1; case SVFOP_CURRENT_TIME: return 2; case SVFOP_CURRENT_TIME_N: return 3; case SVFOP_CURRENT_TIMESTAMP: return 4; case SVFOP_CURRENT_TIMESTAMP_N: return 5; case SVFOP_LOCALTIME: return 6; case SVFOP_LOCALTIME_N: return 7; case SVFOP_LOCALTIMESTAMP: return 8; case SVFOP_LOCALTIMESTAMP_N: return 9; case SVFOP_CURRENT_ROLE: return 10; case SVFOP_CURRENT_USER: return 11; case SVFOP_USER: return 12; case SVFOP_SESSION_USER: return 13; case SVFOP_CURRENT_CATALOG: return 14; case SVFOP_CURRENT_SCHEMA: return 15; } Assert(false); return -1; } static int _enumToIntXmlExprOp(XmlExprOp value) { switch(value) { case IS_XMLCONCAT: return 1; case IS_XMLELEMENT: return 2; case IS_XMLFOREST: return 3; case IS_XMLPARSE: return 4; case IS_XMLPI: return 5; case IS_XMLROOT: return 6; case IS_XMLSERIALIZE: return 7; case IS_DOCUMENT: return 8; } Assert(false); return -1; } static int _enumToIntXmlOptionType(XmlOptionType value) { switch(value) { case XMLOPTION_DOCUMENT: return 1; case XMLOPTION_CONTENT: return 2; } Assert(false); return -1; } static int _enumToIntNullTestType(NullTestType value) { switch(value) { case IS_NULL: return 1; case IS_NOT_NULL: return 2; } Assert(false); return -1; } static int _enumToIntBoolTestType(BoolTestType value) { switch(value) { case IS_TRUE: return 1; case IS_NOT_TRUE: return 2; case IS_FALSE: return 3; case IS_NOT_FALSE: return 4; case IS_UNKNOWN: return 5; case IS_NOT_UNKNOWN: return 6; } Assert(false); return -1; } static int _enumToIntCmdType(CmdType value) { switch(value) { case CMD_UNKNOWN: return 1; case CMD_SELECT: return 2; case CMD_UPDATE: return 3; case CMD_INSERT: return 4; case CMD_DELETE: return 5; case CMD_UTILITY: return 6; case CMD_NOTHING: return 7; } Assert(false); return -1; } static int _enumToIntJoinType(JoinType value) { switch(value) { case JOIN_INNER: return 1; case JOIN_LEFT: return 2; case JOIN_FULL: return 3; case JOIN_RIGHT: return 4; case JOIN_SEMI: return 5; case JOIN_ANTI: return 6; case JOIN_UNIQUE_OUTER: return 7; case JOIN_UNIQUE_INNER: return 8; } Assert(false); return -1; } static int _enumToIntAggStrategy(AggStrategy value) { switch(value) { case AGG_PLAIN: return 1; case AGG_SORTED: return 2; case AGG_HASHED: return 3; case AGG_MIXED: return 4; } Assert(false); return -1; } static int _enumToIntAggSplit(AggSplit value) { switch(value) { case AGGSPLIT_SIMPLE: return 1; case AGGSPLIT_INITIAL_SERIAL: return 2; case AGGSPLIT_FINAL_DESERIAL: return 3; } Assert(false); return -1; } static int _enumToIntSetOpCmd(SetOpCmd value) { switch(value) { case SETOPCMD_INTERSECT: return 1; case SETOPCMD_INTERSECT_ALL: return 2; case SETOPCMD_EXCEPT: return 3; case SETOPCMD_EXCEPT_ALL: return 4; } Assert(false); return -1; } static int _enumToIntSetOpStrategy(SetOpStrategy value) { switch(value) { case SETOP_SORTED: return 1; case SETOP_HASHED: return 2; } Assert(false); return -1; } static int _enumToIntOnConflictAction(OnConflictAction value) { switch(value) { case ONCONFLICT_NONE: return 1; case ONCONFLICT_NOTHING: return 2; case ONCONFLICT_UPDATE: return 3; } Assert(false); return -1; } static int _enumToIntLimitOption(LimitOption value) { switch(value) { case LIMIT_OPTION_DEFAULT: return 1; case LIMIT_OPTION_COUNT: return 2; case LIMIT_OPTION_WITH_TIES: return 3; } Assert(false); return -1; } static int _enumToIntLockClauseStrength(LockClauseStrength value) { switch(value) { case LCS_NONE: return 1; case LCS_FORKEYSHARE: return 2; case LCS_FORSHARE: return 3; case LCS_FORNOKEYUPDATE: return 4; case LCS_FORUPDATE: return 5; } Assert(false); return -1; } static int _enumToIntLockWaitPolicy(LockWaitPolicy value) { switch(value) { case LockWaitBlock: return 1; case LockWaitSkip: return 2; case LockWaitError: return 3; } Assert(false); return -1; } static int _enumToIntLockTupleMode(LockTupleMode value) { switch(value) { case LockTupleKeyShare: return 1; case LockTupleShare: return 2; case LockTupleNoKeyExclusive: return 3; case LockTupleExclusive: return 4; } Assert(false); return -1; }static OverridingKind _intToEnumOverridingKind(int value) { switch(value) { case 1: return OVERRIDING_NOT_SET; case 2: return OVERRIDING_USER_VALUE; case 3: return OVERRIDING_SYSTEM_VALUE; } Assert(false); return OVERRIDING_NOT_SET; } static QuerySource _intToEnumQuerySource(int value) { switch(value) { case 1: return QSRC_ORIGINAL; case 2: return QSRC_PARSER; case 3: return QSRC_INSTEAD_RULE; case 4: return QSRC_QUAL_INSTEAD_RULE; case 5: return QSRC_NON_INSTEAD_RULE; } Assert(false); return QSRC_ORIGINAL; } static SortByDir _intToEnumSortByDir(int value) { switch(value) { case 1: return SORTBY_DEFAULT; case 2: return SORTBY_ASC; case 3: return SORTBY_DESC; case 4: return SORTBY_USING; } Assert(false); return SORTBY_DEFAULT; } static SortByNulls _intToEnumSortByNulls(int value) { switch(value) { case 1: return SORTBY_NULLS_DEFAULT; case 2: return SORTBY_NULLS_FIRST; case 3: return SORTBY_NULLS_LAST; } Assert(false); return SORTBY_NULLS_DEFAULT; } static A_Expr_Kind _intToEnumA_Expr_Kind(int value) { switch(value) { case 1: return AEXPR_OP; case 2: return AEXPR_OP_ANY; case 3: return AEXPR_OP_ALL; case 4: return AEXPR_DISTINCT; case 5: return AEXPR_NOT_DISTINCT; case 6: return AEXPR_NULLIF; case 7: return AEXPR_OF; case 8: return AEXPR_IN; case 9: return AEXPR_LIKE; case 10: return AEXPR_ILIKE; case 11: return AEXPR_SIMILAR; case 12: return AEXPR_BETWEEN; case 13: return AEXPR_NOT_BETWEEN; case 14: return AEXPR_BETWEEN_SYM; case 15: return AEXPR_NOT_BETWEEN_SYM; case 16: return AEXPR_PAREN; } Assert(false); return AEXPR_OP; } static RoleSpecType _intToEnumRoleSpecType(int value) { switch(value) { case 1: return ROLESPEC_CSTRING; case 2: return ROLESPEC_CURRENT_USER; case 3: return ROLESPEC_SESSION_USER; case 4: return ROLESPEC_PUBLIC; } Assert(false); return ROLESPEC_CSTRING; } static TableLikeOption _intToEnumTableLikeOption(int value) { switch(value) { case 1: return CREATE_TABLE_LIKE_COMMENTS; case 2: return CREATE_TABLE_LIKE_CONSTRAINTS; case 3: return CREATE_TABLE_LIKE_DEFAULTS; case 4: return CREATE_TABLE_LIKE_GENERATED; case 5: return CREATE_TABLE_LIKE_IDENTITY; case 6: return CREATE_TABLE_LIKE_INDEXES; case 7: return CREATE_TABLE_LIKE_STATISTICS; case 8: return CREATE_TABLE_LIKE_STORAGE; case 9: return CREATE_TABLE_LIKE_ALL; } Assert(false); return CREATE_TABLE_LIKE_COMMENTS; } static DefElemAction _intToEnumDefElemAction(int value) { switch(value) { case 1: return DEFELEM_UNSPEC; case 2: return DEFELEM_SET; case 3: return DEFELEM_ADD; case 4: return DEFELEM_DROP; } Assert(false); return DEFELEM_UNSPEC; } static PartitionRangeDatumKind _intToEnumPartitionRangeDatumKind(int value) { switch(value) { case 1: return PARTITION_RANGE_DATUM_MINVALUE; case 2: return PARTITION_RANGE_DATUM_VALUE; case 3: return PARTITION_RANGE_DATUM_MAXVALUE; } Assert(false); return PARTITION_RANGE_DATUM_MINVALUE; } static RTEKind _intToEnumRTEKind(int value) { switch(value) { case 1: return RTE_RELATION; case 2: return RTE_SUBQUERY; case 3: return RTE_JOIN; case 4: return RTE_FUNCTION; case 5: return RTE_TABLEFUNC; case 6: return RTE_VALUES; case 7: return RTE_CTE; case 8: return RTE_NAMEDTUPLESTORE; case 9: return RTE_RESULT; } Assert(false); return RTE_RELATION; } static WCOKind _intToEnumWCOKind(int value) { switch(value) { case 1: return WCO_VIEW_CHECK; case 2: return WCO_RLS_INSERT_CHECK; case 3: return WCO_RLS_UPDATE_CHECK; case 4: return WCO_RLS_CONFLICT_CHECK; } Assert(false); return WCO_VIEW_CHECK; } static GroupingSetKind _intToEnumGroupingSetKind(int value) { switch(value) { case 1: return GROUPING_SET_EMPTY; case 2: return GROUPING_SET_SIMPLE; case 3: return GROUPING_SET_ROLLUP; case 4: return GROUPING_SET_CUBE; case 5: return GROUPING_SET_SETS; } Assert(false); return GROUPING_SET_EMPTY; } static CTEMaterialize _intToEnumCTEMaterialize(int value) { switch(value) { case 1: return CTEMaterializeDefault; case 2: return CTEMaterializeAlways; case 3: return CTEMaterializeNever; } Assert(false); return CTEMaterializeDefault; } static SetOperation _intToEnumSetOperation(int value) { switch(value) { case 1: return SETOP_NONE; case 2: return SETOP_UNION; case 3: return SETOP_INTERSECT; case 4: return SETOP_EXCEPT; } Assert(false); return SETOP_NONE; } static ObjectType _intToEnumObjectType(int value) { switch(value) { case 1: return OBJECT_ACCESS_METHOD; case 2: return OBJECT_AGGREGATE; case 3: return OBJECT_AMOP; case 4: return OBJECT_AMPROC; case 5: return OBJECT_ATTRIBUTE; case 6: return OBJECT_CAST; case 7: return OBJECT_COLUMN; case 8: return OBJECT_COLLATION; case 9: return OBJECT_CONVERSION; case 10: return OBJECT_DATABASE; case 11: return OBJECT_DEFAULT; case 12: return OBJECT_DEFACL; case 13: return OBJECT_DOMAIN; case 14: return OBJECT_DOMCONSTRAINT; case 15: return OBJECT_EVENT_TRIGGER; case 16: return OBJECT_EXTENSION; case 17: return OBJECT_FDW; case 18: return OBJECT_FOREIGN_SERVER; case 19: return OBJECT_FOREIGN_TABLE; case 20: return OBJECT_FUNCTION; case 21: return OBJECT_INDEX; case 22: return OBJECT_LANGUAGE; case 23: return OBJECT_LARGEOBJECT; case 24: return OBJECT_MATVIEW; case 25: return OBJECT_OPCLASS; case 26: return OBJECT_OPERATOR; case 27: return OBJECT_OPFAMILY; case 28: return OBJECT_POLICY; case 29: return OBJECT_PROCEDURE; case 30: return OBJECT_PUBLICATION; case 31: return OBJECT_PUBLICATION_REL; case 32: return OBJECT_ROLE; case 33: return OBJECT_ROUTINE; case 34: return OBJECT_RULE; case 35: return OBJECT_SCHEMA; case 36: return OBJECT_SEQUENCE; case 37: return OBJECT_SUBSCRIPTION; case 38: return OBJECT_STATISTIC_EXT; case 39: return OBJECT_TABCONSTRAINT; case 40: return OBJECT_TABLE; case 41: return OBJECT_TABLESPACE; case 42: return OBJECT_TRANSFORM; case 43: return OBJECT_TRIGGER; case 44: return OBJECT_TSCONFIGURATION; case 45: return OBJECT_TSDICTIONARY; case 46: return OBJECT_TSPARSER; case 47: return OBJECT_TSTEMPLATE; case 48: return OBJECT_TYPE; case 49: return OBJECT_USER_MAPPING; case 50: return OBJECT_VIEW; } Assert(false); return OBJECT_ACCESS_METHOD; } static DropBehavior _intToEnumDropBehavior(int value) { switch(value) { case 1: return DROP_RESTRICT; case 2: return DROP_CASCADE; } Assert(false); return DROP_RESTRICT; } static AlterTableType _intToEnumAlterTableType(int value) { switch(value) { case 1: return AT_AddColumn; case 2: return AT_AddColumnRecurse; case 3: return AT_AddColumnToView; case 4: return AT_ColumnDefault; case 5: return AT_CookedColumnDefault; case 6: return AT_DropNotNull; case 7: return AT_SetNotNull; case 8: return AT_DropExpression; case 9: return AT_CheckNotNull; case 10: return AT_SetStatistics; case 11: return AT_SetOptions; case 12: return AT_ResetOptions; case 13: return AT_SetStorage; case 14: return AT_DropColumn; case 15: return AT_DropColumnRecurse; case 16: return AT_AddIndex; case 17: return AT_ReAddIndex; case 18: return AT_AddConstraint; case 19: return AT_AddConstraintRecurse; case 20: return AT_ReAddConstraint; case 21: return AT_ReAddDomainConstraint; case 22: return AT_AlterConstraint; case 23: return AT_ValidateConstraint; case 24: return AT_ValidateConstraintRecurse; case 25: return AT_AddIndexConstraint; case 26: return AT_DropConstraint; case 27: return AT_DropConstraintRecurse; case 28: return AT_ReAddComment; case 29: return AT_AlterColumnType; case 30: return AT_AlterColumnGenericOptions; case 31: return AT_ChangeOwner; case 32: return AT_ClusterOn; case 33: return AT_DropCluster; case 34: return AT_SetLogged; case 35: return AT_SetUnLogged; case 36: return AT_DropOids; case 37: return AT_SetTableSpace; case 38: return AT_SetRelOptions; case 39: return AT_ResetRelOptions; case 40: return AT_ReplaceRelOptions; case 41: return AT_EnableTrig; case 42: return AT_EnableAlwaysTrig; case 43: return AT_EnableReplicaTrig; case 44: return AT_DisableTrig; case 45: return AT_EnableTrigAll; case 46: return AT_DisableTrigAll; case 47: return AT_EnableTrigUser; case 48: return AT_DisableTrigUser; case 49: return AT_EnableRule; case 50: return AT_EnableAlwaysRule; case 51: return AT_EnableReplicaRule; case 52: return AT_DisableRule; case 53: return AT_AddInherit; case 54: return AT_DropInherit; case 55: return AT_AddOf; case 56: return AT_DropOf; case 57: return AT_ReplicaIdentity; case 58: return AT_EnableRowSecurity; case 59: return AT_DisableRowSecurity; case 60: return AT_ForceRowSecurity; case 61: return AT_NoForceRowSecurity; case 62: return AT_GenericOptions; case 63: return AT_AttachPartition; case 64: return AT_DetachPartition; case 65: return AT_AddIdentity; case 66: return AT_SetIdentity; case 67: return AT_DropIdentity; } Assert(false); return AT_AddColumn; } static GrantTargetType _intToEnumGrantTargetType(int value) { switch(value) { case 1: return ACL_TARGET_OBJECT; case 2: return ACL_TARGET_ALL_IN_SCHEMA; case 3: return ACL_TARGET_DEFAULTS; } Assert(false); return ACL_TARGET_OBJECT; } static VariableSetKind _intToEnumVariableSetKind(int value) { switch(value) { case 1: return VAR_SET_VALUE; case 2: return VAR_SET_DEFAULT; case 3: return VAR_SET_CURRENT; case 4: return VAR_SET_MULTI; case 5: return VAR_RESET; case 6: return VAR_RESET_ALL; } Assert(false); return VAR_SET_VALUE; } static ConstrType _intToEnumConstrType(int value) { switch(value) { case 1: return CONSTR_NULL; case 2: return CONSTR_NOTNULL; case 3: return CONSTR_DEFAULT; case 4: return CONSTR_IDENTITY; case 5: return CONSTR_GENERATED; case 6: return CONSTR_CHECK; case 7: return CONSTR_PRIMARY; case 8: return CONSTR_UNIQUE; case 9: return CONSTR_EXCLUSION; case 10: return CONSTR_FOREIGN; case 11: return CONSTR_ATTR_DEFERRABLE; case 12: return CONSTR_ATTR_NOT_DEFERRABLE; case 13: return CONSTR_ATTR_DEFERRED; case 14: return CONSTR_ATTR_IMMEDIATE; } Assert(false); return CONSTR_NULL; } static ImportForeignSchemaType _intToEnumImportForeignSchemaType(int value) { switch(value) { case 1: return FDW_IMPORT_SCHEMA_ALL; case 2: return FDW_IMPORT_SCHEMA_LIMIT_TO; case 3: return FDW_IMPORT_SCHEMA_EXCEPT; } Assert(false); return FDW_IMPORT_SCHEMA_ALL; } static RoleStmtType _intToEnumRoleStmtType(int value) { switch(value) { case 1: return ROLESTMT_ROLE; case 2: return ROLESTMT_USER; case 3: return ROLESTMT_GROUP; } Assert(false); return ROLESTMT_ROLE; } static FetchDirection _intToEnumFetchDirection(int value) { switch(value) { case 1: return FETCH_FORWARD; case 2: return FETCH_BACKWARD; case 3: return FETCH_ABSOLUTE; case 4: return FETCH_RELATIVE; } Assert(false); return FETCH_FORWARD; } static FunctionParameterMode _intToEnumFunctionParameterMode(int value) { switch(value) { case 1: return FUNC_PARAM_IN; case 2: return FUNC_PARAM_OUT; case 3: return FUNC_PARAM_INOUT; case 4: return FUNC_PARAM_VARIADIC; case 5: return FUNC_PARAM_TABLE; } Assert(false); return FUNC_PARAM_IN; } static TransactionStmtKind _intToEnumTransactionStmtKind(int value) { switch(value) { case 1: return TRANS_STMT_BEGIN; case 2: return TRANS_STMT_START; case 3: return TRANS_STMT_COMMIT; case 4: return TRANS_STMT_ROLLBACK; case 5: return TRANS_STMT_SAVEPOINT; case 6: return TRANS_STMT_RELEASE; case 7: return TRANS_STMT_ROLLBACK_TO; case 8: return TRANS_STMT_PREPARE; case 9: return TRANS_STMT_COMMIT_PREPARED; case 10: return TRANS_STMT_ROLLBACK_PREPARED; } Assert(false); return TRANS_STMT_BEGIN; } static ViewCheckOption _intToEnumViewCheckOption(int value) { switch(value) { case 1: return NO_CHECK_OPTION; case 2: return LOCAL_CHECK_OPTION; case 3: return CASCADED_CHECK_OPTION; } Assert(false); return NO_CHECK_OPTION; } static ClusterOption _intToEnumClusterOption(int value) { switch(value) { case 1: return CLUOPT_RECHECK; case 2: return CLUOPT_VERBOSE; } Assert(false); return CLUOPT_RECHECK; } static DiscardMode _intToEnumDiscardMode(int value) { switch(value) { case 1: return DISCARD_ALL; case 2: return DISCARD_PLANS; case 3: return DISCARD_SEQUENCES; case 4: return DISCARD_TEMP; } Assert(false); return DISCARD_ALL; } static ReindexObjectType _intToEnumReindexObjectType(int value) { switch(value) { case 1: return REINDEX_OBJECT_INDEX; case 2: return REINDEX_OBJECT_TABLE; case 3: return REINDEX_OBJECT_SCHEMA; case 4: return REINDEX_OBJECT_SYSTEM; case 5: return REINDEX_OBJECT_DATABASE; } Assert(false); return REINDEX_OBJECT_INDEX; } static AlterTSConfigType _intToEnumAlterTSConfigType(int value) { switch(value) { case 1: return ALTER_TSCONFIG_ADD_MAPPING; case 2: return ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN; case 3: return ALTER_TSCONFIG_REPLACE_DICT; case 4: return ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN; case 5: return ALTER_TSCONFIG_DROP_MAPPING; } Assert(false); return ALTER_TSCONFIG_ADD_MAPPING; } static AlterSubscriptionType _intToEnumAlterSubscriptionType(int value) { switch(value) { case 1: return ALTER_SUBSCRIPTION_OPTIONS; case 2: return ALTER_SUBSCRIPTION_CONNECTION; case 3: return ALTER_SUBSCRIPTION_PUBLICATION; case 4: return ALTER_SUBSCRIPTION_REFRESH; case 5: return ALTER_SUBSCRIPTION_ENABLED; } Assert(false); return ALTER_SUBSCRIPTION_OPTIONS; } static OnCommitAction _intToEnumOnCommitAction(int value) { switch(value) { case 1: return ONCOMMIT_NOOP; case 2: return ONCOMMIT_PRESERVE_ROWS; case 3: return ONCOMMIT_DELETE_ROWS; case 4: return ONCOMMIT_DROP; } Assert(false); return ONCOMMIT_NOOP; } static ParamKind _intToEnumParamKind(int value) { switch(value) { case 1: return PARAM_EXTERN; case 2: return PARAM_EXEC; case 3: return PARAM_SUBLINK; case 4: return PARAM_MULTIEXPR; } Assert(false); return PARAM_EXTERN; } static CoercionContext _intToEnumCoercionContext(int value) { switch(value) { case 1: return COERCION_IMPLICIT; case 2: return COERCION_ASSIGNMENT; case 3: return COERCION_EXPLICIT; } Assert(false); return COERCION_IMPLICIT; } static CoercionForm _intToEnumCoercionForm(int value) { switch(value) { case 1: return COERCE_EXPLICIT_CALL; case 2: return COERCE_EXPLICIT_CAST; case 3: return COERCE_IMPLICIT_CAST; } Assert(false); return COERCE_EXPLICIT_CALL; } static BoolExprType _intToEnumBoolExprType(int value) { switch(value) { case 1: return AND_EXPR; case 2: return OR_EXPR; case 3: return NOT_EXPR; } Assert(false); return AND_EXPR; } static SubLinkType _intToEnumSubLinkType(int value) { switch(value) { case 1: return EXISTS_SUBLINK; case 2: return ALL_SUBLINK; case 3: return ANY_SUBLINK; case 4: return ROWCOMPARE_SUBLINK; case 5: return EXPR_SUBLINK; case 6: return MULTIEXPR_SUBLINK; case 7: return ARRAY_SUBLINK; case 8: return CTE_SUBLINK; } Assert(false); return EXISTS_SUBLINK; } static RowCompareType _intToEnumRowCompareType(int value) { switch(value) { case 1: return ROWCOMPARE_LT; case 2: return ROWCOMPARE_LE; case 3: return ROWCOMPARE_EQ; case 4: return ROWCOMPARE_GE; case 5: return ROWCOMPARE_GT; case 6: return ROWCOMPARE_NE; } Assert(false); return ROWCOMPARE_LT; } static MinMaxOp _intToEnumMinMaxOp(int value) { switch(value) { case 1: return IS_GREATEST; case 2: return IS_LEAST; } Assert(false); return IS_GREATEST; } static SQLValueFunctionOp _intToEnumSQLValueFunctionOp(int value) { switch(value) { case 1: return SVFOP_CURRENT_DATE; case 2: return SVFOP_CURRENT_TIME; case 3: return SVFOP_CURRENT_TIME_N; case 4: return SVFOP_CURRENT_TIMESTAMP; case 5: return SVFOP_CURRENT_TIMESTAMP_N; case 6: return SVFOP_LOCALTIME; case 7: return SVFOP_LOCALTIME_N; case 8: return SVFOP_LOCALTIMESTAMP; case 9: return SVFOP_LOCALTIMESTAMP_N; case 10: return SVFOP_CURRENT_ROLE; case 11: return SVFOP_CURRENT_USER; case 12: return SVFOP_USER; case 13: return SVFOP_SESSION_USER; case 14: return SVFOP_CURRENT_CATALOG; case 15: return SVFOP_CURRENT_SCHEMA; } Assert(false); return SVFOP_CURRENT_DATE; } static XmlExprOp _intToEnumXmlExprOp(int value) { switch(value) { case 1: return IS_XMLCONCAT; case 2: return IS_XMLELEMENT; case 3: return IS_XMLFOREST; case 4: return IS_XMLPARSE; case 5: return IS_XMLPI; case 6: return IS_XMLROOT; case 7: return IS_XMLSERIALIZE; case 8: return IS_DOCUMENT; } Assert(false); return IS_XMLCONCAT; } static XmlOptionType _intToEnumXmlOptionType(int value) { switch(value) { case 1: return XMLOPTION_DOCUMENT; case 2: return XMLOPTION_CONTENT; } Assert(false); return XMLOPTION_DOCUMENT; } static NullTestType _intToEnumNullTestType(int value) { switch(value) { case 1: return IS_NULL; case 2: return IS_NOT_NULL; } Assert(false); return IS_NULL; } static BoolTestType _intToEnumBoolTestType(int value) { switch(value) { case 1: return IS_TRUE; case 2: return IS_NOT_TRUE; case 3: return IS_FALSE; case 4: return IS_NOT_FALSE; case 5: return IS_UNKNOWN; case 6: return IS_NOT_UNKNOWN; } Assert(false); return IS_TRUE; } static CmdType _intToEnumCmdType(int value) { switch(value) { case 1: return CMD_UNKNOWN; case 2: return CMD_SELECT; case 3: return CMD_UPDATE; case 4: return CMD_INSERT; case 5: return CMD_DELETE; case 6: return CMD_UTILITY; case 7: return CMD_NOTHING; } Assert(false); return CMD_UNKNOWN; } static JoinType _intToEnumJoinType(int value) { switch(value) { case 1: return JOIN_INNER; case 2: return JOIN_LEFT; case 3: return JOIN_FULL; case 4: return JOIN_RIGHT; case 5: return JOIN_SEMI; case 6: return JOIN_ANTI; case 7: return JOIN_UNIQUE_OUTER; case 8: return JOIN_UNIQUE_INNER; } Assert(false); return JOIN_INNER; } static AggStrategy _intToEnumAggStrategy(int value) { switch(value) { case 1: return AGG_PLAIN; case 2: return AGG_SORTED; case 3: return AGG_HASHED; case 4: return AGG_MIXED; } Assert(false); return AGG_PLAIN; } static AggSplit _intToEnumAggSplit(int value) { switch(value) { case 1: return AGGSPLIT_SIMPLE; case 2: return AGGSPLIT_INITIAL_SERIAL; case 3: return AGGSPLIT_FINAL_DESERIAL; } Assert(false); return AGGSPLIT_SIMPLE; } static SetOpCmd _intToEnumSetOpCmd(int value) { switch(value) { case 1: return SETOPCMD_INTERSECT; case 2: return SETOPCMD_INTERSECT_ALL; case 3: return SETOPCMD_EXCEPT; case 4: return SETOPCMD_EXCEPT_ALL; } Assert(false); return SETOPCMD_INTERSECT; } static SetOpStrategy _intToEnumSetOpStrategy(int value) { switch(value) { case 1: return SETOP_SORTED; case 2: return SETOP_HASHED; } Assert(false); return SETOP_SORTED; } static OnConflictAction _intToEnumOnConflictAction(int value) { switch(value) { case 1: return ONCONFLICT_NONE; case 2: return ONCONFLICT_NOTHING; case 3: return ONCONFLICT_UPDATE; } Assert(false); return ONCONFLICT_NONE; } static LimitOption _intToEnumLimitOption(int value) { switch(value) { case 1: return LIMIT_OPTION_DEFAULT; case 2: return LIMIT_OPTION_COUNT; case 3: return LIMIT_OPTION_WITH_TIES; } Assert(false); return LIMIT_OPTION_DEFAULT; } static LockClauseStrength _intToEnumLockClauseStrength(int value) { switch(value) { case 1: return LCS_NONE; case 2: return LCS_FORKEYSHARE; case 3: return LCS_FORSHARE; case 4: return LCS_FORNOKEYUPDATE; case 5: return LCS_FORUPDATE; } Assert(false); return LCS_NONE; } static LockWaitPolicy _intToEnumLockWaitPolicy(int value) { switch(value) { case 1: return LockWaitBlock; case 2: return LockWaitSkip; case 3: return LockWaitError; } Assert(false); return LockWaitBlock; } static LockTupleMode _intToEnumLockTupleMode(int value) { switch(value) { case 1: return LockTupleKeyShare; case 2: return LockTupleShare; case 3: return LockTupleNoKeyExclusive; case 4: return LockTupleExclusive; } Assert(false); return LockTupleKeyShare; }libpg_query-13-2.1.0/src/pg_query_fingerprint.c000066400000000000000000000233351413137616400214660ustar00rootroot00000000000000// Ensure we have asprintf's definition on glibc-based platforms to avoid compiler warnings #define _GNU_SOURCE #include #include "pg_query.h" #include "pg_query_internal.h" #include "pg_query_fingerprint.h" #include "postgres.h" #include "xxhash/xxhash.h" #include "lib/ilist.h" #include "parser/parser.h" #include "parser/scanner.h" #include "parser/scansup.h" #include "nodes/parsenodes.h" #include "nodes/value.h" #include "common/hashfn.h" #include #include // Definitions typedef struct FingerprintContext { XXH3_state_t *xxh_state; struct listsort_cache_hash *listsort_cache; bool write_tokens; dlist_head tokens; } FingerprintContext; typedef struct FingerprintListsortItem { XXH64_hash_t hash; size_t list_pos; } FingerprintListsortItem; typedef struct FingerprintListsortItemCacheEntry { /* List node this cache entry is for */ uintptr_t node; /* Hashes of all list items -- this is expensive to calculate */ FingerprintListsortItem **listsort_items; size_t listsort_items_size; /* hash entry status */ char status; } FingerprintListsortItemCacheEntry; #define SH_PREFIX listsort_cache #define SH_ELEMENT_TYPE FingerprintListsortItemCacheEntry #define SH_KEY_TYPE uintptr_t #define SH_KEY node #define SH_HASH_KEY(tb, key) hash_bytes((const unsigned char *) &key, sizeof(uintptr_t)) #define SH_EQUAL(tb, a, b) a == b #define SH_SCOPE static inline #define SH_DEFINE #define SH_DECLARE #include "lib/simplehash.h" typedef struct FingerprintToken { char *str; dlist_node list_node; } FingerprintToken; static void _fingerprintNode(FingerprintContext *ctx, const void *obj, const void *parent, char *parent_field_name, unsigned int depth); static void _fingerprintInitContext(FingerprintContext *ctx, FingerprintContext *parent, bool write_tokens); static void _fingerprintFreeContext(FingerprintContext *ctx); #define PG_QUERY_FINGERPRINT_VERSION 3 // Implementations static void _fingerprintString(FingerprintContext *ctx, const char *str) { if (ctx->xxh_state != NULL) { XXH3_64bits_update(ctx->xxh_state, str, strlen(str)); } if (ctx->write_tokens) { FingerprintToken *token = palloc0(sizeof(FingerprintToken)); token->str = pstrdup(str); dlist_push_tail(&ctx->tokens, &token->list_node); } } static void _fingerprintInteger(FingerprintContext *ctx, const Value *node) { if (node->val.ival != 0) { _fingerprintString(ctx, "Integer"); _fingerprintString(ctx, "ival"); char buffer[50]; sprintf(buffer, "%d", node->val.ival); _fingerprintString(ctx, buffer); } } static void _fingerprintFloat(FingerprintContext *ctx, const Value *node) { if (node->val.str != NULL) { _fingerprintString(ctx, "Float"); _fingerprintString(ctx, "str"); _fingerprintString(ctx, node->val.str); } } static void _fingerprintBitString(FingerprintContext *ctx, const Value *node) { if (node->val.str != NULL) { _fingerprintString(ctx, "BitString"); _fingerprintString(ctx, "str"); _fingerprintString(ctx, node->val.str); } } static int compareFingerprintListsortItem(const void *a, const void *b) { FingerprintListsortItem *ca = *(FingerprintListsortItem**) a; FingerprintListsortItem *cb = *(FingerprintListsortItem**) b; if (ca->hash > cb->hash) return 1; else if (ca->hash < cb->hash) return -1; return 0; } static void _fingerprintList(FingerprintContext *ctx, const List *node, const void *parent, char *field_name, unsigned int depth) { if (field_name != NULL && (strcmp(field_name, "fromClause") == 0 || strcmp(field_name, "targetList") == 0 || strcmp(field_name, "cols") == 0 || strcmp(field_name, "rexpr") == 0 || strcmp(field_name, "valuesLists") == 0 || strcmp(field_name, "args") == 0)) { /* * Check for cached values for the hashes of subnodes * * Note this cache is important so we avoid exponential runtime behavior, * which would be the case if we fingerprinted each node twice, which * then would also again have to fingerprint each of its subnodes twice, * etc., leading to deep nodes to be fingerprinted many many times over. * * We have seen real-world problems with this logic here without * a cache in place. */ FingerprintListsortItem** listsort_items = NULL; size_t listsort_items_size = 0; FingerprintListsortItemCacheEntry *entry = listsort_cache_lookup(ctx->listsort_cache, (uintptr_t) node); if (entry != NULL) { listsort_items = entry->listsort_items; listsort_items_size = entry->listsort_items_size; } else { listsort_items = palloc0(node->length * sizeof(FingerprintListsortItem*)); listsort_items_size = 0; ListCell *lc; bool found; foreach(lc, node) { FingerprintContext fctx; FingerprintListsortItem* lctx = palloc0(sizeof(FingerprintListsortItem)); _fingerprintInitContext(&fctx, ctx, false); _fingerprintNode(&fctx, lfirst(lc), parent, field_name, depth + 1); lctx->hash = XXH3_64bits_digest(fctx.xxh_state); lctx->list_pos = listsort_items_size; _fingerprintFreeContext(&fctx); listsort_items[listsort_items_size] = lctx; listsort_items_size += 1; } pg_qsort(listsort_items, listsort_items_size, sizeof(FingerprintListsortItem*), compareFingerprintListsortItem); FingerprintListsortItemCacheEntry *entry = listsort_cache_insert(ctx->listsort_cache, (uintptr_t) node, &found); Assert(!found); entry->listsort_items = listsort_items; entry->listsort_items_size = listsort_items_size; } for (size_t i = 0; i < listsort_items_size; i++) { if (i > 0 && listsort_items[i - 1]->hash == listsort_items[i]->hash) continue; // Ignore duplicates _fingerprintNode(ctx, lfirst(list_nth_cell(node, listsort_items[i]->list_pos)), parent, field_name, depth + 1); } } else { const ListCell *lc; foreach(lc, node) { _fingerprintNode(ctx, lfirst(lc), parent, field_name, depth + 1); lnext(node, lc); } } } static void _fingerprintInitContext(FingerprintContext *ctx, FingerprintContext *parent, bool write_tokens) { ctx->xxh_state = XXH3_createState(); if (ctx->xxh_state == NULL) abort(); if (XXH3_64bits_reset_withSeed(ctx->xxh_state, PG_QUERY_FINGERPRINT_VERSION) == XXH_ERROR) abort(); if (parent != NULL) { ctx->listsort_cache = parent->listsort_cache; } else { ctx->listsort_cache = listsort_cache_create(CurrentMemoryContext, 128, NULL); } if (write_tokens) { ctx->write_tokens = true; dlist_init(&ctx->tokens); } else { ctx->write_tokens = false; } } static void _fingerprintFreeContext(FingerprintContext *ctx) { XXH3_freeState(ctx->xxh_state); } #include "pg_query_enum_defs.c" #include "pg_query_fingerprint_defs.c" void _fingerprintNode(FingerprintContext *ctx, const void *obj, const void *parent, char *field_name, unsigned int depth) { // Some queries are overly complex in their parsetree - lets consistently cut them off at 100 nodes deep if (depth >= 100) { return; } if (obj == NULL) { return; // Ignore } switch (nodeTag(obj)) { case T_List: _fingerprintList(ctx, obj, parent, field_name, depth); break; case T_Integer: _fingerprintInteger(ctx, obj); break; case T_Float: _fingerprintFloat(ctx, obj); break; case T_String: _fingerprintString(ctx, "String"); _fingerprintString(ctx, "str"); _fingerprintString(ctx, ((Value*) obj)->val.str); break; case T_BitString: _fingerprintBitString(ctx, obj); break; #include "pg_query_fingerprint_conds.c" default: elog(WARNING, "could not fingerprint unrecognized node type: %d", (int) nodeTag(obj)); return; } } uint64_t pg_query_fingerprint_node(const void *node) { FingerprintContext ctx; uint64 result; _fingerprintInitContext(&ctx, NULL, false); _fingerprintNode(&ctx, node, NULL, NULL, 0); result = XXH3_64bits_digest(ctx.xxh_state); _fingerprintFreeContext(&ctx); return result; } PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool printTokens) { MemoryContext ctx = NULL; PgQueryInternalParsetreeAndError parsetree_and_error; PgQueryFingerprintResult result = {0}; ctx = pg_query_enter_memory_context(); parsetree_and_error = pg_query_raw_parse(input); // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now result.stderr_buffer = parsetree_and_error.stderr_buffer; result.error = parsetree_and_error.error; if (parsetree_and_error.tree != NULL || result.error == NULL) { FingerprintContext ctx; XXH64_canonical_t chash; _fingerprintInitContext(&ctx, NULL, printTokens); if (parsetree_and_error.tree != NULL) { _fingerprintNode(&ctx, parsetree_and_error.tree, NULL, NULL, 0); } if (printTokens) { dlist_iter iter; printf("["); dlist_foreach(iter, &ctx.tokens) { FingerprintToken *token = dlist_container(FingerprintToken, list_node, iter.cur); printf("\"%s\", ", token->str); } printf("]\n"); } result.fingerprint = XXH3_64bits_digest(ctx.xxh_state); _fingerprintFreeContext(&ctx); XXH64_canonicalFromHash(&chash, result.fingerprint); int err = asprintf(&result.fingerprint_str, "%02x%02x%02x%02x%02x%02x%02x%02x", chash.digest[0], chash.digest[1], chash.digest[2], chash.digest[3], chash.digest[4], chash.digest[5], chash.digest[6], chash.digest[7]); if (err == -1) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to output fingerprint string due to asprintf failure"); result.error = error; } } pg_query_exit_memory_context(ctx); return result; } PgQueryFingerprintResult pg_query_fingerprint(const char* input) { return pg_query_fingerprint_with_opts(input, false); } void pg_query_free_fingerprint_result(PgQueryFingerprintResult result) { if (result.error) { free(result.error->message); free(result.error->filename); free(result.error); } free(result.fingerprint_str); free(result.stderr_buffer); } libpg_query-13-2.1.0/src/pg_query_fingerprint.h000066400000000000000000000004011413137616400214600ustar00rootroot00000000000000#ifndef PG_QUERY_FINGERPRINT_H #define PG_QUERY_FINGERPRINT_H #include extern PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool printTokens); extern uint64_t pg_query_fingerprint_node(const void * node); #endif libpg_query-13-2.1.0/src/pg_query_fingerprint_conds.c000066400000000000000000000743231413137616400226570ustar00rootroot00000000000000case T_Alias: // Intentionally ignoring for fingerprinting break; case T_RangeVar: _fingerprintString(ctx, "RangeVar"); _fingerprintRangeVar(ctx, obj, parent, field_name, depth); break; case T_TableFunc: _fingerprintString(ctx, "TableFunc"); _fingerprintTableFunc(ctx, obj, parent, field_name, depth); break; case T_Expr: _fingerprintString(ctx, "Expr"); _fingerprintExpr(ctx, obj, parent, field_name, depth); break; case T_Var: _fingerprintString(ctx, "Var"); _fingerprintVar(ctx, obj, parent, field_name, depth); break; case T_Const: _fingerprintString(ctx, "Const"); _fingerprintConst(ctx, obj, parent, field_name, depth); break; case T_Param: _fingerprintString(ctx, "Param"); _fingerprintParam(ctx, obj, parent, field_name, depth); break; case T_Aggref: _fingerprintString(ctx, "Aggref"); _fingerprintAggref(ctx, obj, parent, field_name, depth); break; case T_GroupingFunc: _fingerprintString(ctx, "GroupingFunc"); _fingerprintGroupingFunc(ctx, obj, parent, field_name, depth); break; case T_WindowFunc: _fingerprintString(ctx, "WindowFunc"); _fingerprintWindowFunc(ctx, obj, parent, field_name, depth); break; case T_SubscriptingRef: _fingerprintString(ctx, "SubscriptingRef"); _fingerprintSubscriptingRef(ctx, obj, parent, field_name, depth); break; case T_FuncExpr: _fingerprintString(ctx, "FuncExpr"); _fingerprintFuncExpr(ctx, obj, parent, field_name, depth); break; case T_NamedArgExpr: _fingerprintString(ctx, "NamedArgExpr"); _fingerprintNamedArgExpr(ctx, obj, parent, field_name, depth); break; case T_OpExpr: _fingerprintString(ctx, "OpExpr"); _fingerprintOpExpr(ctx, obj, parent, field_name, depth); break; case T_ScalarArrayOpExpr: _fingerprintString(ctx, "ScalarArrayOpExpr"); _fingerprintScalarArrayOpExpr(ctx, obj, parent, field_name, depth); break; case T_BoolExpr: _fingerprintString(ctx, "BoolExpr"); _fingerprintBoolExpr(ctx, obj, parent, field_name, depth); break; case T_SubLink: _fingerprintString(ctx, "SubLink"); _fingerprintSubLink(ctx, obj, parent, field_name, depth); break; case T_SubPlan: _fingerprintString(ctx, "SubPlan"); _fingerprintSubPlan(ctx, obj, parent, field_name, depth); break; case T_AlternativeSubPlan: _fingerprintString(ctx, "AlternativeSubPlan"); _fingerprintAlternativeSubPlan(ctx, obj, parent, field_name, depth); break; case T_FieldSelect: _fingerprintString(ctx, "FieldSelect"); _fingerprintFieldSelect(ctx, obj, parent, field_name, depth); break; case T_FieldStore: _fingerprintString(ctx, "FieldStore"); _fingerprintFieldStore(ctx, obj, parent, field_name, depth); break; case T_RelabelType: _fingerprintString(ctx, "RelabelType"); _fingerprintRelabelType(ctx, obj, parent, field_name, depth); break; case T_CoerceViaIO: _fingerprintString(ctx, "CoerceViaIO"); _fingerprintCoerceViaIO(ctx, obj, parent, field_name, depth); break; case T_ArrayCoerceExpr: _fingerprintString(ctx, "ArrayCoerceExpr"); _fingerprintArrayCoerceExpr(ctx, obj, parent, field_name, depth); break; case T_ConvertRowtypeExpr: _fingerprintString(ctx, "ConvertRowtypeExpr"); _fingerprintConvertRowtypeExpr(ctx, obj, parent, field_name, depth); break; case T_CollateExpr: _fingerprintString(ctx, "CollateExpr"); _fingerprintCollateExpr(ctx, obj, parent, field_name, depth); break; case T_CaseExpr: _fingerprintString(ctx, "CaseExpr"); _fingerprintCaseExpr(ctx, obj, parent, field_name, depth); break; case T_CaseWhen: _fingerprintString(ctx, "CaseWhen"); _fingerprintCaseWhen(ctx, obj, parent, field_name, depth); break; case T_CaseTestExpr: _fingerprintString(ctx, "CaseTestExpr"); _fingerprintCaseTestExpr(ctx, obj, parent, field_name, depth); break; case T_ArrayExpr: _fingerprintString(ctx, "ArrayExpr"); _fingerprintArrayExpr(ctx, obj, parent, field_name, depth); break; case T_RowExpr: _fingerprintString(ctx, "RowExpr"); _fingerprintRowExpr(ctx, obj, parent, field_name, depth); break; case T_RowCompareExpr: _fingerprintString(ctx, "RowCompareExpr"); _fingerprintRowCompareExpr(ctx, obj, parent, field_name, depth); break; case T_CoalesceExpr: _fingerprintString(ctx, "CoalesceExpr"); _fingerprintCoalesceExpr(ctx, obj, parent, field_name, depth); break; case T_MinMaxExpr: _fingerprintString(ctx, "MinMaxExpr"); _fingerprintMinMaxExpr(ctx, obj, parent, field_name, depth); break; case T_SQLValueFunction: _fingerprintString(ctx, "SQLValueFunction"); _fingerprintSQLValueFunction(ctx, obj, parent, field_name, depth); break; case T_XmlExpr: _fingerprintString(ctx, "XmlExpr"); _fingerprintXmlExpr(ctx, obj, parent, field_name, depth); break; case T_NullTest: _fingerprintString(ctx, "NullTest"); _fingerprintNullTest(ctx, obj, parent, field_name, depth); break; case T_BooleanTest: _fingerprintString(ctx, "BooleanTest"); _fingerprintBooleanTest(ctx, obj, parent, field_name, depth); break; case T_CoerceToDomain: _fingerprintString(ctx, "CoerceToDomain"); _fingerprintCoerceToDomain(ctx, obj, parent, field_name, depth); break; case T_CoerceToDomainValue: _fingerprintString(ctx, "CoerceToDomainValue"); _fingerprintCoerceToDomainValue(ctx, obj, parent, field_name, depth); break; case T_SetToDefault: // Intentionally ignoring for fingerprinting break; case T_CurrentOfExpr: _fingerprintString(ctx, "CurrentOfExpr"); _fingerprintCurrentOfExpr(ctx, obj, parent, field_name, depth); break; case T_NextValueExpr: _fingerprintString(ctx, "NextValueExpr"); _fingerprintNextValueExpr(ctx, obj, parent, field_name, depth); break; case T_InferenceElem: _fingerprintString(ctx, "InferenceElem"); _fingerprintInferenceElem(ctx, obj, parent, field_name, depth); break; case T_TargetEntry: _fingerprintString(ctx, "TargetEntry"); _fingerprintTargetEntry(ctx, obj, parent, field_name, depth); break; case T_RangeTblRef: _fingerprintString(ctx, "RangeTblRef"); _fingerprintRangeTblRef(ctx, obj, parent, field_name, depth); break; case T_JoinExpr: _fingerprintString(ctx, "JoinExpr"); _fingerprintJoinExpr(ctx, obj, parent, field_name, depth); break; case T_FromExpr: _fingerprintString(ctx, "FromExpr"); _fingerprintFromExpr(ctx, obj, parent, field_name, depth); break; case T_OnConflictExpr: _fingerprintString(ctx, "OnConflictExpr"); _fingerprintOnConflictExpr(ctx, obj, parent, field_name, depth); break; case T_IntoClause: _fingerprintString(ctx, "IntoClause"); _fingerprintIntoClause(ctx, obj, parent, field_name, depth); break; case T_RawStmt: _fingerprintString(ctx, "RawStmt"); _fingerprintRawStmt(ctx, obj, parent, field_name, depth); break; case T_Query: _fingerprintString(ctx, "Query"); _fingerprintQuery(ctx, obj, parent, field_name, depth); break; case T_InsertStmt: _fingerprintString(ctx, "InsertStmt"); _fingerprintInsertStmt(ctx, obj, parent, field_name, depth); break; case T_DeleteStmt: _fingerprintString(ctx, "DeleteStmt"); _fingerprintDeleteStmt(ctx, obj, parent, field_name, depth); break; case T_UpdateStmt: _fingerprintString(ctx, "UpdateStmt"); _fingerprintUpdateStmt(ctx, obj, parent, field_name, depth); break; case T_SelectStmt: _fingerprintString(ctx, "SelectStmt"); _fingerprintSelectStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableStmt: _fingerprintString(ctx, "AlterTableStmt"); _fingerprintAlterTableStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableCmd: _fingerprintString(ctx, "AlterTableCmd"); _fingerprintAlterTableCmd(ctx, obj, parent, field_name, depth); break; case T_AlterDomainStmt: _fingerprintString(ctx, "AlterDomainStmt"); _fingerprintAlterDomainStmt(ctx, obj, parent, field_name, depth); break; case T_SetOperationStmt: _fingerprintString(ctx, "SetOperationStmt"); _fingerprintSetOperationStmt(ctx, obj, parent, field_name, depth); break; case T_GrantStmt: _fingerprintString(ctx, "GrantStmt"); _fingerprintGrantStmt(ctx, obj, parent, field_name, depth); break; case T_GrantRoleStmt: _fingerprintString(ctx, "GrantRoleStmt"); _fingerprintGrantRoleStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDefaultPrivilegesStmt: _fingerprintString(ctx, "AlterDefaultPrivilegesStmt"); _fingerprintAlterDefaultPrivilegesStmt(ctx, obj, parent, field_name, depth); break; case T_ClosePortalStmt: _fingerprintString(ctx, "ClosePortalStmt"); _fingerprintClosePortalStmt(ctx, obj, parent, field_name, depth); break; case T_ClusterStmt: _fingerprintString(ctx, "ClusterStmt"); _fingerprintClusterStmt(ctx, obj, parent, field_name, depth); break; case T_CopyStmt: _fingerprintString(ctx, "CopyStmt"); _fingerprintCopyStmt(ctx, obj, parent, field_name, depth); break; case T_CreateStmt: _fingerprintString(ctx, "CreateStmt"); _fingerprintCreateStmt(ctx, obj, parent, field_name, depth); break; case T_DefineStmt: _fingerprintString(ctx, "DefineStmt"); _fingerprintDefineStmt(ctx, obj, parent, field_name, depth); break; case T_DropStmt: _fingerprintString(ctx, "DropStmt"); _fingerprintDropStmt(ctx, obj, parent, field_name, depth); break; case T_TruncateStmt: _fingerprintString(ctx, "TruncateStmt"); _fingerprintTruncateStmt(ctx, obj, parent, field_name, depth); break; case T_CommentStmt: _fingerprintString(ctx, "CommentStmt"); _fingerprintCommentStmt(ctx, obj, parent, field_name, depth); break; case T_FetchStmt: _fingerprintString(ctx, "FetchStmt"); _fingerprintFetchStmt(ctx, obj, parent, field_name, depth); break; case T_IndexStmt: _fingerprintString(ctx, "IndexStmt"); _fingerprintIndexStmt(ctx, obj, parent, field_name, depth); break; case T_CreateFunctionStmt: _fingerprintString(ctx, "CreateFunctionStmt"); _fingerprintCreateFunctionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterFunctionStmt: _fingerprintString(ctx, "AlterFunctionStmt"); _fingerprintAlterFunctionStmt(ctx, obj, parent, field_name, depth); break; case T_DoStmt: _fingerprintString(ctx, "DoStmt"); _fingerprintDoStmt(ctx, obj, parent, field_name, depth); break; case T_RenameStmt: _fingerprintString(ctx, "RenameStmt"); _fingerprintRenameStmt(ctx, obj, parent, field_name, depth); break; case T_RuleStmt: _fingerprintString(ctx, "RuleStmt"); _fingerprintRuleStmt(ctx, obj, parent, field_name, depth); break; case T_NotifyStmt: _fingerprintString(ctx, "NotifyStmt"); _fingerprintNotifyStmt(ctx, obj, parent, field_name, depth); break; case T_ListenStmt: _fingerprintString(ctx, "ListenStmt"); _fingerprintListenStmt(ctx, obj, parent, field_name, depth); break; case T_UnlistenStmt: _fingerprintString(ctx, "UnlistenStmt"); _fingerprintUnlistenStmt(ctx, obj, parent, field_name, depth); break; case T_TransactionStmt: _fingerprintString(ctx, "TransactionStmt"); _fingerprintTransactionStmt(ctx, obj, parent, field_name, depth); break; case T_ViewStmt: _fingerprintString(ctx, "ViewStmt"); _fingerprintViewStmt(ctx, obj, parent, field_name, depth); break; case T_LoadStmt: _fingerprintString(ctx, "LoadStmt"); _fingerprintLoadStmt(ctx, obj, parent, field_name, depth); break; case T_CreateDomainStmt: _fingerprintString(ctx, "CreateDomainStmt"); _fingerprintCreateDomainStmt(ctx, obj, parent, field_name, depth); break; case T_CreatedbStmt: _fingerprintString(ctx, "CreatedbStmt"); _fingerprintCreatedbStmt(ctx, obj, parent, field_name, depth); break; case T_DropdbStmt: _fingerprintString(ctx, "DropdbStmt"); _fingerprintDropdbStmt(ctx, obj, parent, field_name, depth); break; case T_VacuumStmt: _fingerprintString(ctx, "VacuumStmt"); _fingerprintVacuumStmt(ctx, obj, parent, field_name, depth); break; case T_ExplainStmt: _fingerprintString(ctx, "ExplainStmt"); _fingerprintExplainStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTableAsStmt: _fingerprintString(ctx, "CreateTableAsStmt"); _fingerprintCreateTableAsStmt(ctx, obj, parent, field_name, depth); break; case T_CreateSeqStmt: _fingerprintString(ctx, "CreateSeqStmt"); _fingerprintCreateSeqStmt(ctx, obj, parent, field_name, depth); break; case T_AlterSeqStmt: _fingerprintString(ctx, "AlterSeqStmt"); _fingerprintAlterSeqStmt(ctx, obj, parent, field_name, depth); break; case T_VariableSetStmt: _fingerprintString(ctx, "VariableSetStmt"); _fingerprintVariableSetStmt(ctx, obj, parent, field_name, depth); break; case T_VariableShowStmt: _fingerprintString(ctx, "VariableShowStmt"); _fingerprintVariableShowStmt(ctx, obj, parent, field_name, depth); break; case T_DiscardStmt: _fingerprintString(ctx, "DiscardStmt"); _fingerprintDiscardStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTrigStmt: _fingerprintString(ctx, "CreateTrigStmt"); _fingerprintCreateTrigStmt(ctx, obj, parent, field_name, depth); break; case T_CreatePLangStmt: _fingerprintString(ctx, "CreatePLangStmt"); _fingerprintCreatePLangStmt(ctx, obj, parent, field_name, depth); break; case T_CreateRoleStmt: _fingerprintString(ctx, "CreateRoleStmt"); _fingerprintCreateRoleStmt(ctx, obj, parent, field_name, depth); break; case T_AlterRoleStmt: _fingerprintString(ctx, "AlterRoleStmt"); _fingerprintAlterRoleStmt(ctx, obj, parent, field_name, depth); break; case T_DropRoleStmt: _fingerprintString(ctx, "DropRoleStmt"); _fingerprintDropRoleStmt(ctx, obj, parent, field_name, depth); break; case T_LockStmt: _fingerprintString(ctx, "LockStmt"); _fingerprintLockStmt(ctx, obj, parent, field_name, depth); break; case T_ConstraintsSetStmt: _fingerprintString(ctx, "ConstraintsSetStmt"); _fingerprintConstraintsSetStmt(ctx, obj, parent, field_name, depth); break; case T_ReindexStmt: _fingerprintString(ctx, "ReindexStmt"); _fingerprintReindexStmt(ctx, obj, parent, field_name, depth); break; case T_CheckPointStmt: _fingerprintString(ctx, "CheckPointStmt"); _fingerprintCheckPointStmt(ctx, obj, parent, field_name, depth); break; case T_CreateSchemaStmt: _fingerprintString(ctx, "CreateSchemaStmt"); _fingerprintCreateSchemaStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDatabaseStmt: _fingerprintString(ctx, "AlterDatabaseStmt"); _fingerprintAlterDatabaseStmt(ctx, obj, parent, field_name, depth); break; case T_AlterDatabaseSetStmt: _fingerprintString(ctx, "AlterDatabaseSetStmt"); _fingerprintAlterDatabaseSetStmt(ctx, obj, parent, field_name, depth); break; case T_AlterRoleSetStmt: _fingerprintString(ctx, "AlterRoleSetStmt"); _fingerprintAlterRoleSetStmt(ctx, obj, parent, field_name, depth); break; case T_CreateConversionStmt: _fingerprintString(ctx, "CreateConversionStmt"); _fingerprintCreateConversionStmt(ctx, obj, parent, field_name, depth); break; case T_CreateCastStmt: _fingerprintString(ctx, "CreateCastStmt"); _fingerprintCreateCastStmt(ctx, obj, parent, field_name, depth); break; case T_CreateOpClassStmt: _fingerprintString(ctx, "CreateOpClassStmt"); _fingerprintCreateOpClassStmt(ctx, obj, parent, field_name, depth); break; case T_CreateOpFamilyStmt: _fingerprintString(ctx, "CreateOpFamilyStmt"); _fingerprintCreateOpFamilyStmt(ctx, obj, parent, field_name, depth); break; case T_AlterOpFamilyStmt: _fingerprintString(ctx, "AlterOpFamilyStmt"); _fingerprintAlterOpFamilyStmt(ctx, obj, parent, field_name, depth); break; case T_PrepareStmt: _fingerprintString(ctx, "PrepareStmt"); _fingerprintPrepareStmt(ctx, obj, parent, field_name, depth); break; case T_ExecuteStmt: _fingerprintString(ctx, "ExecuteStmt"); _fingerprintExecuteStmt(ctx, obj, parent, field_name, depth); break; case T_DeallocateStmt: _fingerprintString(ctx, "DeallocateStmt"); _fingerprintDeallocateStmt(ctx, obj, parent, field_name, depth); break; case T_DeclareCursorStmt: _fingerprintString(ctx, "DeclareCursorStmt"); _fingerprintDeclareCursorStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTableSpaceStmt: _fingerprintString(ctx, "CreateTableSpaceStmt"); _fingerprintCreateTableSpaceStmt(ctx, obj, parent, field_name, depth); break; case T_DropTableSpaceStmt: _fingerprintString(ctx, "DropTableSpaceStmt"); _fingerprintDropTableSpaceStmt(ctx, obj, parent, field_name, depth); break; case T_AlterObjectDependsStmt: _fingerprintString(ctx, "AlterObjectDependsStmt"); _fingerprintAlterObjectDependsStmt(ctx, obj, parent, field_name, depth); break; case T_AlterObjectSchemaStmt: _fingerprintString(ctx, "AlterObjectSchemaStmt"); _fingerprintAlterObjectSchemaStmt(ctx, obj, parent, field_name, depth); break; case T_AlterOwnerStmt: _fingerprintString(ctx, "AlterOwnerStmt"); _fingerprintAlterOwnerStmt(ctx, obj, parent, field_name, depth); break; case T_AlterOperatorStmt: _fingerprintString(ctx, "AlterOperatorStmt"); _fingerprintAlterOperatorStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTypeStmt: _fingerprintString(ctx, "AlterTypeStmt"); _fingerprintAlterTypeStmt(ctx, obj, parent, field_name, depth); break; case T_DropOwnedStmt: _fingerprintString(ctx, "DropOwnedStmt"); _fingerprintDropOwnedStmt(ctx, obj, parent, field_name, depth); break; case T_ReassignOwnedStmt: _fingerprintString(ctx, "ReassignOwnedStmt"); _fingerprintReassignOwnedStmt(ctx, obj, parent, field_name, depth); break; case T_CompositeTypeStmt: _fingerprintString(ctx, "CompositeTypeStmt"); _fingerprintCompositeTypeStmt(ctx, obj, parent, field_name, depth); break; case T_CreateEnumStmt: _fingerprintString(ctx, "CreateEnumStmt"); _fingerprintCreateEnumStmt(ctx, obj, parent, field_name, depth); break; case T_CreateRangeStmt: _fingerprintString(ctx, "CreateRangeStmt"); _fingerprintCreateRangeStmt(ctx, obj, parent, field_name, depth); break; case T_AlterEnumStmt: _fingerprintString(ctx, "AlterEnumStmt"); _fingerprintAlterEnumStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTSDictionaryStmt: _fingerprintString(ctx, "AlterTSDictionaryStmt"); _fingerprintAlterTSDictionaryStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTSConfigurationStmt: _fingerprintString(ctx, "AlterTSConfigurationStmt"); _fingerprintAlterTSConfigurationStmt(ctx, obj, parent, field_name, depth); break; case T_CreateFdwStmt: _fingerprintString(ctx, "CreateFdwStmt"); _fingerprintCreateFdwStmt(ctx, obj, parent, field_name, depth); break; case T_AlterFdwStmt: _fingerprintString(ctx, "AlterFdwStmt"); _fingerprintAlterFdwStmt(ctx, obj, parent, field_name, depth); break; case T_CreateForeignServerStmt: _fingerprintString(ctx, "CreateForeignServerStmt"); _fingerprintCreateForeignServerStmt(ctx, obj, parent, field_name, depth); break; case T_AlterForeignServerStmt: _fingerprintString(ctx, "AlterForeignServerStmt"); _fingerprintAlterForeignServerStmt(ctx, obj, parent, field_name, depth); break; case T_CreateUserMappingStmt: _fingerprintString(ctx, "CreateUserMappingStmt"); _fingerprintCreateUserMappingStmt(ctx, obj, parent, field_name, depth); break; case T_AlterUserMappingStmt: _fingerprintString(ctx, "AlterUserMappingStmt"); _fingerprintAlterUserMappingStmt(ctx, obj, parent, field_name, depth); break; case T_DropUserMappingStmt: _fingerprintString(ctx, "DropUserMappingStmt"); _fingerprintDropUserMappingStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableSpaceOptionsStmt: _fingerprintString(ctx, "AlterTableSpaceOptionsStmt"); _fingerprintAlterTableSpaceOptionsStmt(ctx, obj, parent, field_name, depth); break; case T_AlterTableMoveAllStmt: _fingerprintString(ctx, "AlterTableMoveAllStmt"); _fingerprintAlterTableMoveAllStmt(ctx, obj, parent, field_name, depth); break; case T_SecLabelStmt: _fingerprintString(ctx, "SecLabelStmt"); _fingerprintSecLabelStmt(ctx, obj, parent, field_name, depth); break; case T_CreateForeignTableStmt: _fingerprintString(ctx, "CreateForeignTableStmt"); _fingerprintCreateForeignTableStmt(ctx, obj, parent, field_name, depth); break; case T_ImportForeignSchemaStmt: _fingerprintString(ctx, "ImportForeignSchemaStmt"); _fingerprintImportForeignSchemaStmt(ctx, obj, parent, field_name, depth); break; case T_CreateExtensionStmt: _fingerprintString(ctx, "CreateExtensionStmt"); _fingerprintCreateExtensionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterExtensionStmt: _fingerprintString(ctx, "AlterExtensionStmt"); _fingerprintAlterExtensionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterExtensionContentsStmt: _fingerprintString(ctx, "AlterExtensionContentsStmt"); _fingerprintAlterExtensionContentsStmt(ctx, obj, parent, field_name, depth); break; case T_CreateEventTrigStmt: _fingerprintString(ctx, "CreateEventTrigStmt"); _fingerprintCreateEventTrigStmt(ctx, obj, parent, field_name, depth); break; case T_AlterEventTrigStmt: _fingerprintString(ctx, "AlterEventTrigStmt"); _fingerprintAlterEventTrigStmt(ctx, obj, parent, field_name, depth); break; case T_RefreshMatViewStmt: _fingerprintString(ctx, "RefreshMatViewStmt"); _fingerprintRefreshMatViewStmt(ctx, obj, parent, field_name, depth); break; case T_ReplicaIdentityStmt: _fingerprintString(ctx, "ReplicaIdentityStmt"); _fingerprintReplicaIdentityStmt(ctx, obj, parent, field_name, depth); break; case T_AlterSystemStmt: _fingerprintString(ctx, "AlterSystemStmt"); _fingerprintAlterSystemStmt(ctx, obj, parent, field_name, depth); break; case T_CreatePolicyStmt: _fingerprintString(ctx, "CreatePolicyStmt"); _fingerprintCreatePolicyStmt(ctx, obj, parent, field_name, depth); break; case T_AlterPolicyStmt: _fingerprintString(ctx, "AlterPolicyStmt"); _fingerprintAlterPolicyStmt(ctx, obj, parent, field_name, depth); break; case T_CreateTransformStmt: _fingerprintString(ctx, "CreateTransformStmt"); _fingerprintCreateTransformStmt(ctx, obj, parent, field_name, depth); break; case T_CreateAmStmt: _fingerprintString(ctx, "CreateAmStmt"); _fingerprintCreateAmStmt(ctx, obj, parent, field_name, depth); break; case T_CreatePublicationStmt: _fingerprintString(ctx, "CreatePublicationStmt"); _fingerprintCreatePublicationStmt(ctx, obj, parent, field_name, depth); break; case T_AlterPublicationStmt: _fingerprintString(ctx, "AlterPublicationStmt"); _fingerprintAlterPublicationStmt(ctx, obj, parent, field_name, depth); break; case T_CreateSubscriptionStmt: _fingerprintString(ctx, "CreateSubscriptionStmt"); _fingerprintCreateSubscriptionStmt(ctx, obj, parent, field_name, depth); break; case T_AlterSubscriptionStmt: _fingerprintString(ctx, "AlterSubscriptionStmt"); _fingerprintAlterSubscriptionStmt(ctx, obj, parent, field_name, depth); break; case T_DropSubscriptionStmt: _fingerprintString(ctx, "DropSubscriptionStmt"); _fingerprintDropSubscriptionStmt(ctx, obj, parent, field_name, depth); break; case T_CreateStatsStmt: _fingerprintString(ctx, "CreateStatsStmt"); _fingerprintCreateStatsStmt(ctx, obj, parent, field_name, depth); break; case T_AlterCollationStmt: _fingerprintString(ctx, "AlterCollationStmt"); _fingerprintAlterCollationStmt(ctx, obj, parent, field_name, depth); break; case T_CallStmt: _fingerprintString(ctx, "CallStmt"); _fingerprintCallStmt(ctx, obj, parent, field_name, depth); break; case T_AlterStatsStmt: _fingerprintString(ctx, "AlterStatsStmt"); _fingerprintAlterStatsStmt(ctx, obj, parent, field_name, depth); break; case T_A_Expr: _fingerprintString(ctx, "A_Expr"); _fingerprintA_Expr(ctx, obj, parent, field_name, depth); break; case T_ColumnRef: _fingerprintString(ctx, "ColumnRef"); _fingerprintColumnRef(ctx, obj, parent, field_name, depth); break; case T_ParamRef: // Intentionally ignoring for fingerprinting break; case T_A_Const: // Intentionally ignoring for fingerprinting break; case T_FuncCall: _fingerprintString(ctx, "FuncCall"); _fingerprintFuncCall(ctx, obj, parent, field_name, depth); break; case T_A_Star: _fingerprintString(ctx, "A_Star"); _fingerprintA_Star(ctx, obj, parent, field_name, depth); break; case T_A_Indices: _fingerprintString(ctx, "A_Indices"); _fingerprintA_Indices(ctx, obj, parent, field_name, depth); break; case T_A_Indirection: _fingerprintString(ctx, "A_Indirection"); _fingerprintA_Indirection(ctx, obj, parent, field_name, depth); break; case T_A_ArrayExpr: _fingerprintString(ctx, "A_ArrayExpr"); _fingerprintA_ArrayExpr(ctx, obj, parent, field_name, depth); break; case T_ResTarget: _fingerprintString(ctx, "ResTarget"); _fingerprintResTarget(ctx, obj, parent, field_name, depth); break; case T_MultiAssignRef: _fingerprintString(ctx, "MultiAssignRef"); _fingerprintMultiAssignRef(ctx, obj, parent, field_name, depth); break; case T_TypeCast: if (!IsA(castNode(TypeCast, (void*) obj)->arg, A_Const) && !IsA(castNode(TypeCast, (void*) obj)->arg, ParamRef)) { _fingerprintString(ctx, "TypeCast"); _fingerprintTypeCast(ctx, obj, parent, field_name, depth); } break; case T_CollateClause: _fingerprintString(ctx, "CollateClause"); _fingerprintCollateClause(ctx, obj, parent, field_name, depth); break; case T_SortBy: _fingerprintString(ctx, "SortBy"); _fingerprintSortBy(ctx, obj, parent, field_name, depth); break; case T_WindowDef: _fingerprintString(ctx, "WindowDef"); _fingerprintWindowDef(ctx, obj, parent, field_name, depth); break; case T_RangeSubselect: _fingerprintString(ctx, "RangeSubselect"); _fingerprintRangeSubselect(ctx, obj, parent, field_name, depth); break; case T_RangeFunction: _fingerprintString(ctx, "RangeFunction"); _fingerprintRangeFunction(ctx, obj, parent, field_name, depth); break; case T_RangeTableSample: _fingerprintString(ctx, "RangeTableSample"); _fingerprintRangeTableSample(ctx, obj, parent, field_name, depth); break; case T_RangeTableFunc: _fingerprintString(ctx, "RangeTableFunc"); _fingerprintRangeTableFunc(ctx, obj, parent, field_name, depth); break; case T_RangeTableFuncCol: _fingerprintString(ctx, "RangeTableFuncCol"); _fingerprintRangeTableFuncCol(ctx, obj, parent, field_name, depth); break; case T_TypeName: _fingerprintString(ctx, "TypeName"); _fingerprintTypeName(ctx, obj, parent, field_name, depth); break; case T_ColumnDef: _fingerprintString(ctx, "ColumnDef"); _fingerprintColumnDef(ctx, obj, parent, field_name, depth); break; case T_IndexElem: _fingerprintString(ctx, "IndexElem"); _fingerprintIndexElem(ctx, obj, parent, field_name, depth); break; case T_Constraint: _fingerprintString(ctx, "Constraint"); _fingerprintConstraint(ctx, obj, parent, field_name, depth); break; case T_DefElem: _fingerprintString(ctx, "DefElem"); _fingerprintDefElem(ctx, obj, parent, field_name, depth); break; case T_RangeTblEntry: _fingerprintString(ctx, "RangeTblEntry"); _fingerprintRangeTblEntry(ctx, obj, parent, field_name, depth); break; case T_RangeTblFunction: _fingerprintString(ctx, "RangeTblFunction"); _fingerprintRangeTblFunction(ctx, obj, parent, field_name, depth); break; case T_TableSampleClause: _fingerprintString(ctx, "TableSampleClause"); _fingerprintTableSampleClause(ctx, obj, parent, field_name, depth); break; case T_WithCheckOption: _fingerprintString(ctx, "WithCheckOption"); _fingerprintWithCheckOption(ctx, obj, parent, field_name, depth); break; case T_SortGroupClause: _fingerprintString(ctx, "SortGroupClause"); _fingerprintSortGroupClause(ctx, obj, parent, field_name, depth); break; case T_GroupingSet: _fingerprintString(ctx, "GroupingSet"); _fingerprintGroupingSet(ctx, obj, parent, field_name, depth); break; case T_WindowClause: _fingerprintString(ctx, "WindowClause"); _fingerprintWindowClause(ctx, obj, parent, field_name, depth); break; case T_ObjectWithArgs: _fingerprintString(ctx, "ObjectWithArgs"); _fingerprintObjectWithArgs(ctx, obj, parent, field_name, depth); break; case T_AccessPriv: _fingerprintString(ctx, "AccessPriv"); _fingerprintAccessPriv(ctx, obj, parent, field_name, depth); break; case T_CreateOpClassItem: _fingerprintString(ctx, "CreateOpClassItem"); _fingerprintCreateOpClassItem(ctx, obj, parent, field_name, depth); break; case T_TableLikeClause: _fingerprintString(ctx, "TableLikeClause"); _fingerprintTableLikeClause(ctx, obj, parent, field_name, depth); break; case T_FunctionParameter: _fingerprintString(ctx, "FunctionParameter"); _fingerprintFunctionParameter(ctx, obj, parent, field_name, depth); break; case T_LockingClause: _fingerprintString(ctx, "LockingClause"); _fingerprintLockingClause(ctx, obj, parent, field_name, depth); break; case T_RowMarkClause: _fingerprintString(ctx, "RowMarkClause"); _fingerprintRowMarkClause(ctx, obj, parent, field_name, depth); break; case T_XmlSerialize: _fingerprintString(ctx, "XmlSerialize"); _fingerprintXmlSerialize(ctx, obj, parent, field_name, depth); break; case T_WithClause: _fingerprintString(ctx, "WithClause"); _fingerprintWithClause(ctx, obj, parent, field_name, depth); break; case T_InferClause: _fingerprintString(ctx, "InferClause"); _fingerprintInferClause(ctx, obj, parent, field_name, depth); break; case T_OnConflictClause: _fingerprintString(ctx, "OnConflictClause"); _fingerprintOnConflictClause(ctx, obj, parent, field_name, depth); break; case T_CommonTableExpr: _fingerprintString(ctx, "CommonTableExpr"); _fingerprintCommonTableExpr(ctx, obj, parent, field_name, depth); break; case T_RoleSpec: _fingerprintString(ctx, "RoleSpec"); _fingerprintRoleSpec(ctx, obj, parent, field_name, depth); break; case T_TriggerTransition: _fingerprintString(ctx, "TriggerTransition"); _fingerprintTriggerTransition(ctx, obj, parent, field_name, depth); break; case T_PartitionElem: _fingerprintString(ctx, "PartitionElem"); _fingerprintPartitionElem(ctx, obj, parent, field_name, depth); break; case T_PartitionSpec: _fingerprintString(ctx, "PartitionSpec"); _fingerprintPartitionSpec(ctx, obj, parent, field_name, depth); break; case T_PartitionBoundSpec: _fingerprintString(ctx, "PartitionBoundSpec"); _fingerprintPartitionBoundSpec(ctx, obj, parent, field_name, depth); break; case T_PartitionRangeDatum: _fingerprintString(ctx, "PartitionRangeDatum"); _fingerprintPartitionRangeDatum(ctx, obj, parent, field_name, depth); break; case T_PartitionCmd: _fingerprintString(ctx, "PartitionCmd"); _fingerprintPartitionCmd(ctx, obj, parent, field_name, depth); break; case T_VacuumRelation: _fingerprintString(ctx, "VacuumRelation"); _fingerprintVacuumRelation(ctx, obj, parent, field_name, depth); break; case T_InlineCodeBlock: _fingerprintString(ctx, "InlineCodeBlock"); _fingerprintInlineCodeBlock(ctx, obj, parent, field_name, depth); break; case T_CallContext: _fingerprintString(ctx, "CallContext"); _fingerprintCallContext(ctx, obj, parent, field_name, depth); break; libpg_query-13-2.1.0/src/pg_query_fingerprint_defs.c000066400000000000000000014340001413137616400224630ustar00rootroot00000000000000static void _fingerprintAlias(FingerprintContext *ctx, const Alias *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeVar(FingerprintContext *ctx, const RangeVar *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTableFunc(FingerprintContext *ctx, const TableFunc *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintExpr(FingerprintContext *ctx, const Expr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintVar(FingerprintContext *ctx, const Var *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintConst(FingerprintContext *ctx, const Const *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintParam(FingerprintContext *ctx, const Param *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAggref(FingerprintContext *ctx, const Aggref *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintGroupingFunc(FingerprintContext *ctx, const GroupingFunc *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintWindowFunc(FingerprintContext *ctx, const WindowFunc *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSubscriptingRef(FingerprintContext *ctx, const SubscriptingRef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFuncExpr(FingerprintContext *ctx, const FuncExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintNamedArgExpr(FingerprintContext *ctx, const NamedArgExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintOpExpr(FingerprintContext *ctx, const OpExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintScalarArrayOpExpr(FingerprintContext *ctx, const ScalarArrayOpExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintBoolExpr(FingerprintContext *ctx, const BoolExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSubLink(FingerprintContext *ctx, const SubLink *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSubPlan(FingerprintContext *ctx, const SubPlan *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlternativeSubPlan(FingerprintContext *ctx, const AlternativeSubPlan *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFieldSelect(FingerprintContext *ctx, const FieldSelect *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFieldStore(FingerprintContext *ctx, const FieldStore *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRelabelType(FingerprintContext *ctx, const RelabelType *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCoerceViaIO(FingerprintContext *ctx, const CoerceViaIO *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintArrayCoerceExpr(FingerprintContext *ctx, const ArrayCoerceExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintConvertRowtypeExpr(FingerprintContext *ctx, const ConvertRowtypeExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCollateExpr(FingerprintContext *ctx, const CollateExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCaseExpr(FingerprintContext *ctx, const CaseExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCaseWhen(FingerprintContext *ctx, const CaseWhen *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCaseTestExpr(FingerprintContext *ctx, const CaseTestExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintArrayExpr(FingerprintContext *ctx, const ArrayExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRowExpr(FingerprintContext *ctx, const RowExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRowCompareExpr(FingerprintContext *ctx, const RowCompareExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCoalesceExpr(FingerprintContext *ctx, const CoalesceExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintMinMaxExpr(FingerprintContext *ctx, const MinMaxExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSQLValueFunction(FingerprintContext *ctx, const SQLValueFunction *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintXmlExpr(FingerprintContext *ctx, const XmlExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintNullTest(FingerprintContext *ctx, const NullTest *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintBooleanTest(FingerprintContext *ctx, const BooleanTest *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCoerceToDomain(FingerprintContext *ctx, const CoerceToDomain *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCoerceToDomainValue(FingerprintContext *ctx, const CoerceToDomainValue *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSetToDefault(FingerprintContext *ctx, const SetToDefault *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCurrentOfExpr(FingerprintContext *ctx, const CurrentOfExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintNextValueExpr(FingerprintContext *ctx, const NextValueExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintInferenceElem(FingerprintContext *ctx, const InferenceElem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTargetEntry(FingerprintContext *ctx, const TargetEntry *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTblRef(FingerprintContext *ctx, const RangeTblRef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintJoinExpr(FingerprintContext *ctx, const JoinExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFromExpr(FingerprintContext *ctx, const FromExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintOnConflictExpr(FingerprintContext *ctx, const OnConflictExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintIntoClause(FingerprintContext *ctx, const IntoClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRawStmt(FingerprintContext *ctx, const RawStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintQuery(FingerprintContext *ctx, const Query *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintInsertStmt(FingerprintContext *ctx, const InsertStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDeleteStmt(FingerprintContext *ctx, const DeleteStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintUpdateStmt(FingerprintContext *ctx, const UpdateStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSelectStmt(FingerprintContext *ctx, const SelectStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTableStmt(FingerprintContext *ctx, const AlterTableStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTableCmd(FingerprintContext *ctx, const AlterTableCmd *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterDomainStmt(FingerprintContext *ctx, const AlterDomainStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSetOperationStmt(FingerprintContext *ctx, const SetOperationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintGrantStmt(FingerprintContext *ctx, const GrantStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintGrantRoleStmt(FingerprintContext *ctx, const GrantRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterDefaultPrivilegesStmt(FingerprintContext *ctx, const AlterDefaultPrivilegesStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintClosePortalStmt(FingerprintContext *ctx, const ClosePortalStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintClusterStmt(FingerprintContext *ctx, const ClusterStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCopyStmt(FingerprintContext *ctx, const CopyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateStmt(FingerprintContext *ctx, const CreateStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDefineStmt(FingerprintContext *ctx, const DefineStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropStmt(FingerprintContext *ctx, const DropStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTruncateStmt(FingerprintContext *ctx, const TruncateStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCommentStmt(FingerprintContext *ctx, const CommentStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFetchStmt(FingerprintContext *ctx, const FetchStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateFunctionStmt(FingerprintContext *ctx, const CreateFunctionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterFunctionStmt(FingerprintContext *ctx, const AlterFunctionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDoStmt(FingerprintContext *ctx, const DoStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRenameStmt(FingerprintContext *ctx, const RenameStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRuleStmt(FingerprintContext *ctx, const RuleStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintNotifyStmt(FingerprintContext *ctx, const NotifyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintListenStmt(FingerprintContext *ctx, const ListenStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintUnlistenStmt(FingerprintContext *ctx, const UnlistenStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTransactionStmt(FingerprintContext *ctx, const TransactionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintViewStmt(FingerprintContext *ctx, const ViewStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintLoadStmt(FingerprintContext *ctx, const LoadStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateDomainStmt(FingerprintContext *ctx, const CreateDomainStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreatedbStmt(FingerprintContext *ctx, const CreatedbStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropdbStmt(FingerprintContext *ctx, const DropdbStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintVacuumStmt(FingerprintContext *ctx, const VacuumStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintExplainStmt(FingerprintContext *ctx, const ExplainStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateTableAsStmt(FingerprintContext *ctx, const CreateTableAsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateSeqStmt(FingerprintContext *ctx, const CreateSeqStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterSeqStmt(FingerprintContext *ctx, const AlterSeqStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintVariableSetStmt(FingerprintContext *ctx, const VariableSetStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintVariableShowStmt(FingerprintContext *ctx, const VariableShowStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDiscardStmt(FingerprintContext *ctx, const DiscardStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreatePLangStmt(FingerprintContext *ctx, const CreatePLangStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateRoleStmt(FingerprintContext *ctx, const CreateRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterRoleStmt(FingerprintContext *ctx, const AlterRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropRoleStmt(FingerprintContext *ctx, const DropRoleStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintLockStmt(FingerprintContext *ctx, const LockStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintConstraintsSetStmt(FingerprintContext *ctx, const ConstraintsSetStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintReindexStmt(FingerprintContext *ctx, const ReindexStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCheckPointStmt(FingerprintContext *ctx, const CheckPointStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateSchemaStmt(FingerprintContext *ctx, const CreateSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterDatabaseStmt(FingerprintContext *ctx, const AlterDatabaseStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterDatabaseSetStmt(FingerprintContext *ctx, const AlterDatabaseSetStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterRoleSetStmt(FingerprintContext *ctx, const AlterRoleSetStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateConversionStmt(FingerprintContext *ctx, const CreateConversionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateCastStmt(FingerprintContext *ctx, const CreateCastStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateOpClassStmt(FingerprintContext *ctx, const CreateOpClassStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateOpFamilyStmt(FingerprintContext *ctx, const CreateOpFamilyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterOpFamilyStmt(FingerprintContext *ctx, const AlterOpFamilyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPrepareStmt(FingerprintContext *ctx, const PrepareStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintExecuteStmt(FingerprintContext *ctx, const ExecuteStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDeallocateStmt(FingerprintContext *ctx, const DeallocateStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDeclareCursorStmt(FingerprintContext *ctx, const DeclareCursorStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateTableSpaceStmt(FingerprintContext *ctx, const CreateTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropTableSpaceStmt(FingerprintContext *ctx, const DropTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterObjectDependsStmt(FingerprintContext *ctx, const AlterObjectDependsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterObjectSchemaStmt(FingerprintContext *ctx, const AlterObjectSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterOwnerStmt(FingerprintContext *ctx, const AlterOwnerStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterOperatorStmt(FingerprintContext *ctx, const AlterOperatorStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTypeStmt(FingerprintContext *ctx, const AlterTypeStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropOwnedStmt(FingerprintContext *ctx, const DropOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintReassignOwnedStmt(FingerprintContext *ctx, const ReassignOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCompositeTypeStmt(FingerprintContext *ctx, const CompositeTypeStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateEnumStmt(FingerprintContext *ctx, const CreateEnumStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateRangeStmt(FingerprintContext *ctx, const CreateRangeStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterEnumStmt(FingerprintContext *ctx, const AlterEnumStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTSDictionaryStmt(FingerprintContext *ctx, const AlterTSDictionaryStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTSConfigurationStmt(FingerprintContext *ctx, const AlterTSConfigurationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateFdwStmt(FingerprintContext *ctx, const CreateFdwStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterFdwStmt(FingerprintContext *ctx, const AlterFdwStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateForeignServerStmt(FingerprintContext *ctx, const CreateForeignServerStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterForeignServerStmt(FingerprintContext *ctx, const AlterForeignServerStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateUserMappingStmt(FingerprintContext *ctx, const CreateUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterUserMappingStmt(FingerprintContext *ctx, const AlterUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropUserMappingStmt(FingerprintContext *ctx, const DropUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTableSpaceOptionsStmt(FingerprintContext *ctx, const AlterTableSpaceOptionsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterTableMoveAllStmt(FingerprintContext *ctx, const AlterTableMoveAllStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSecLabelStmt(FingerprintContext *ctx, const SecLabelStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateForeignTableStmt(FingerprintContext *ctx, const CreateForeignTableStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintImportForeignSchemaStmt(FingerprintContext *ctx, const ImportForeignSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateExtensionStmt(FingerprintContext *ctx, const CreateExtensionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterExtensionStmt(FingerprintContext *ctx, const AlterExtensionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterExtensionContentsStmt(FingerprintContext *ctx, const AlterExtensionContentsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateEventTrigStmt(FingerprintContext *ctx, const CreateEventTrigStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterEventTrigStmt(FingerprintContext *ctx, const AlterEventTrigStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRefreshMatViewStmt(FingerprintContext *ctx, const RefreshMatViewStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintReplicaIdentityStmt(FingerprintContext *ctx, const ReplicaIdentityStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterSystemStmt(FingerprintContext *ctx, const AlterSystemStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreatePolicyStmt(FingerprintContext *ctx, const CreatePolicyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterPolicyStmt(FingerprintContext *ctx, const AlterPolicyStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateTransformStmt(FingerprintContext *ctx, const CreateTransformStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateAmStmt(FingerprintContext *ctx, const CreateAmStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreatePublicationStmt(FingerprintContext *ctx, const CreatePublicationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterPublicationStmt(FingerprintContext *ctx, const AlterPublicationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateSubscriptionStmt(FingerprintContext *ctx, const CreateSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterSubscriptionStmt(FingerprintContext *ctx, const AlterSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDropSubscriptionStmt(FingerprintContext *ctx, const DropSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateStatsStmt(FingerprintContext *ctx, const CreateStatsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterCollationStmt(FingerprintContext *ctx, const AlterCollationStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCallStmt(FingerprintContext *ctx, const CallStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlterStatsStmt(FingerprintContext *ctx, const AlterStatsStmt *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_Expr(FingerprintContext *ctx, const A_Expr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintColumnRef(FingerprintContext *ctx, const ColumnRef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintParamRef(FingerprintContext *ctx, const ParamRef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_Const(FingerprintContext *ctx, const A_Const *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFuncCall(FingerprintContext *ctx, const FuncCall *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_Star(FingerprintContext *ctx, const A_Star *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_Indices(FingerprintContext *ctx, const A_Indices *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_Indirection(FingerprintContext *ctx, const A_Indirection *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintA_ArrayExpr(FingerprintContext *ctx, const A_ArrayExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintResTarget(FingerprintContext *ctx, const ResTarget *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintMultiAssignRef(FingerprintContext *ctx, const MultiAssignRef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTypeCast(FingerprintContext *ctx, const TypeCast *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCollateClause(FingerprintContext *ctx, const CollateClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSortBy(FingerprintContext *ctx, const SortBy *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintWindowDef(FingerprintContext *ctx, const WindowDef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeSubselect(FingerprintContext *ctx, const RangeSubselect *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeFunction(FingerprintContext *ctx, const RangeFunction *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTableSample(FingerprintContext *ctx, const RangeTableSample *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTableFunc(FingerprintContext *ctx, const RangeTableFunc *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTableFuncCol(FingerprintContext *ctx, const RangeTableFuncCol *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTypeName(FingerprintContext *ctx, const TypeName *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintColumnDef(FingerprintContext *ctx, const ColumnDef *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintIndexElem(FingerprintContext *ctx, const IndexElem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintDefElem(FingerprintContext *ctx, const DefElem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRangeTblFunction(FingerprintContext *ctx, const RangeTblFunction *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTableSampleClause(FingerprintContext *ctx, const TableSampleClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintWithCheckOption(FingerprintContext *ctx, const WithCheckOption *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintSortGroupClause(FingerprintContext *ctx, const SortGroupClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintGroupingSet(FingerprintContext *ctx, const GroupingSet *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintWindowClause(FingerprintContext *ctx, const WindowClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintObjectWithArgs(FingerprintContext *ctx, const ObjectWithArgs *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAccessPriv(FingerprintContext *ctx, const AccessPriv *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCreateOpClassItem(FingerprintContext *ctx, const CreateOpClassItem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTableLikeClause(FingerprintContext *ctx, const TableLikeClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintFunctionParameter(FingerprintContext *ctx, const FunctionParameter *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintLockingClause(FingerprintContext *ctx, const LockingClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRowMarkClause(FingerprintContext *ctx, const RowMarkClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintXmlSerialize(FingerprintContext *ctx, const XmlSerialize *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintWithClause(FingerprintContext *ctx, const WithClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintInferClause(FingerprintContext *ctx, const InferClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintOnConflictClause(FingerprintContext *ctx, const OnConflictClause *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCommonTableExpr(FingerprintContext *ctx, const CommonTableExpr *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintRoleSpec(FingerprintContext *ctx, const RoleSpec *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintTriggerTransition(FingerprintContext *ctx, const TriggerTransition *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPartitionElem(FingerprintContext *ctx, const PartitionElem *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPartitionSpec(FingerprintContext *ctx, const PartitionSpec *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPartitionBoundSpec(FingerprintContext *ctx, const PartitionBoundSpec *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPartitionRangeDatum(FingerprintContext *ctx, const PartitionRangeDatum *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintPartitionCmd(FingerprintContext *ctx, const PartitionCmd *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintVacuumRelation(FingerprintContext *ctx, const VacuumRelation *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintInlineCodeBlock(FingerprintContext *ctx, const InlineCodeBlock *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintCallContext(FingerprintContext *ctx, const CallContext *node, const void *parent, const char *field_name, unsigned int depth); static void _fingerprintAlias(FingerprintContext *ctx, const Alias *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring all fields for fingerprinting } static void _fingerprintRangeVar(FingerprintContext *ctx, const RangeVar *node, const void *parent, const char *field_name, unsigned int depth) { if (node->alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->catalogname != NULL) { _fingerprintString(ctx, "catalogname"); _fingerprintString(ctx, node->catalogname); } if (node->inh) { _fingerprintString(ctx, "inh"); _fingerprintString(ctx, "true"); } // Intentionally ignoring node->location for fingerprinting if (node->relname != NULL && node->relpersistence != 't') { int len = strlen(node->relname); char *r = palloc0((len + 1) * sizeof(char)); char *p = r; for (int i = 0; i < len; i++) { if (node->relname[i] >= '0' && node->relname[i] <= '9' && ((i + 1 < len && node->relname[i + 1] >= '0' && node->relname[i + 1] <= '9') || (i > 0 && node->relname[i - 1] >= '0' && node->relname[i - 1] <= '9'))) { // Skip } else { *p = node->relname[i]; p++; } } *p = 0; _fingerprintString(ctx, "relname"); _fingerprintString(ctx, r); pfree(r); } if (node->relpersistence != 0) { char buffer[2] = {node->relpersistence, '\0'}; _fingerprintString(ctx, "relpersistence"); _fingerprintString(ctx, buffer); } if (node->schemaname != NULL) { _fingerprintString(ctx, "schemaname"); _fingerprintString(ctx, node->schemaname); } } static void _fingerprintTableFunc(FingerprintContext *ctx, const TableFunc *node, const void *parent, const char *field_name, unsigned int depth) { if (node->colcollations != NULL && node->colcollations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colcollations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colcollations, node, "colcollations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->coldefexprs != NULL && node->coldefexprs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "coldefexprs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->coldefexprs, node, "coldefexprs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->colexprs != NULL && node->colexprs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colexprs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colexprs, node, "colexprs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->colnames != NULL && node->colnames->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colnames"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colnames, node, "colnames", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->coltypes != NULL && node->coltypes->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "coltypes"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->coltypes, node, "coltypes", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->coltypmods != NULL && node->coltypmods->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "coltypmods"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->coltypmods, node, "coltypmods", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->docexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "docexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->docexpr, node, "docexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (true) { int x; Bitmapset *bms = bms_copy(node->notnulls); _fingerprintString(ctx, "notnulls"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->ns_names != NULL && node->ns_names->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ns_names"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->ns_names, node, "ns_names", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->ns_uris != NULL && node->ns_uris->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ns_uris"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->ns_uris, node, "ns_uris", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->ordinalitycol != 0) { char buffer[50]; sprintf(buffer, "%d", node->ordinalitycol); _fingerprintString(ctx, "ordinalitycol"); _fingerprintString(ctx, buffer); } if (node->rowexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rowexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->rowexpr, node, "rowexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintExpr(FingerprintContext *ctx, const Expr *node, const void *parent, const char *field_name, unsigned int depth) { } static void _fingerprintVar(FingerprintContext *ctx, const Var *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->varattno != 0) { char buffer[50]; sprintf(buffer, "%d", node->varattno); _fingerprintString(ctx, "varattno"); _fingerprintString(ctx, buffer); } if (node->varattnosyn != 0) { char buffer[50]; sprintf(buffer, "%d", node->varattnosyn); _fingerprintString(ctx, "varattnosyn"); _fingerprintString(ctx, buffer); } if (node->varcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->varcollid); _fingerprintString(ctx, "varcollid"); _fingerprintString(ctx, buffer); } if (node->varlevelsup != 0) { char buffer[50]; sprintf(buffer, "%d", node->varlevelsup); _fingerprintString(ctx, "varlevelsup"); _fingerprintString(ctx, buffer); } if (node->varno != 0) { char buffer[50]; sprintf(buffer, "%d", node->varno); _fingerprintString(ctx, "varno"); _fingerprintString(ctx, buffer); } if (node->varnosyn != 0) { char buffer[50]; sprintf(buffer, "%d", node->varnosyn); _fingerprintString(ctx, "varnosyn"); _fingerprintString(ctx, buffer); } if (node->vartype != 0) { char buffer[50]; sprintf(buffer, "%d", node->vartype); _fingerprintString(ctx, "vartype"); _fingerprintString(ctx, buffer); } if (node->vartypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->vartypmod); _fingerprintString(ctx, "vartypmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintConst(FingerprintContext *ctx, const Const *node, const void *parent, const char *field_name, unsigned int depth) { if (node->constbyval) { _fingerprintString(ctx, "constbyval"); _fingerprintString(ctx, "true"); } if (node->constcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->constcollid); _fingerprintString(ctx, "constcollid"); _fingerprintString(ctx, buffer); } if (node->constisnull) { _fingerprintString(ctx, "constisnull"); _fingerprintString(ctx, "true"); } if (node->constlen != 0) { char buffer[50]; sprintf(buffer, "%d", node->constlen); _fingerprintString(ctx, "constlen"); _fingerprintString(ctx, buffer); } if (node->consttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->consttype); _fingerprintString(ctx, "consttype"); _fingerprintString(ctx, buffer); } if (node->consttypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->consttypmod); _fingerprintString(ctx, "consttypmod"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintParam(FingerprintContext *ctx, const Param *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->paramcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->paramcollid); _fingerprintString(ctx, "paramcollid"); _fingerprintString(ctx, buffer); } if (node->paramid != 0) { char buffer[50]; sprintf(buffer, "%d", node->paramid); _fingerprintString(ctx, "paramid"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "paramkind"); _fingerprintString(ctx, _enumToStringParamKind(node->paramkind)); } if (node->paramtype != 0) { char buffer[50]; sprintf(buffer, "%d", node->paramtype); _fingerprintString(ctx, "paramtype"); _fingerprintString(ctx, buffer); } if (node->paramtypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->paramtypmod); _fingerprintString(ctx, "paramtypmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintAggref(FingerprintContext *ctx, const Aggref *node, const void *parent, const char *field_name, unsigned int depth) { if (node->aggargtypes != NULL && node->aggargtypes->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "aggargtypes"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->aggargtypes, node, "aggargtypes", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->aggcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->aggcollid); _fingerprintString(ctx, "aggcollid"); _fingerprintString(ctx, buffer); } if (node->aggdirectargs != NULL && node->aggdirectargs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "aggdirectargs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->aggdirectargs, node, "aggdirectargs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->aggdistinct != NULL && node->aggdistinct->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "aggdistinct"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->aggdistinct, node, "aggdistinct", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->aggfilter != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "aggfilter"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->aggfilter, node, "aggfilter", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->aggfnoid != 0) { char buffer[50]; sprintf(buffer, "%d", node->aggfnoid); _fingerprintString(ctx, "aggfnoid"); _fingerprintString(ctx, buffer); } if (node->aggkind != 0) { char buffer[2] = {node->aggkind, '\0'}; _fingerprintString(ctx, "aggkind"); _fingerprintString(ctx, buffer); } if (node->agglevelsup != 0) { char buffer[50]; sprintf(buffer, "%d", node->agglevelsup); _fingerprintString(ctx, "agglevelsup"); _fingerprintString(ctx, buffer); } if (node->aggorder != NULL && node->aggorder->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "aggorder"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->aggorder, node, "aggorder", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "aggsplit"); _fingerprintString(ctx, _enumToStringAggSplit(node->aggsplit)); } if (node->aggstar) { _fingerprintString(ctx, "aggstar"); _fingerprintString(ctx, "true"); } if (node->aggtranstype != 0) { char buffer[50]; sprintf(buffer, "%d", node->aggtranstype); _fingerprintString(ctx, "aggtranstype"); _fingerprintString(ctx, buffer); } if (node->aggtype != 0) { char buffer[50]; sprintf(buffer, "%d", node->aggtype); _fingerprintString(ctx, "aggtype"); _fingerprintString(ctx, buffer); } if (node->aggvariadic) { _fingerprintString(ctx, "aggvariadic"); _fingerprintString(ctx, "true"); } if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->inputcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->inputcollid); _fingerprintString(ctx, "inputcollid"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintGroupingFunc(FingerprintContext *ctx, const GroupingFunc *node, const void *parent, const char *field_name, unsigned int depth) { if (node->agglevelsup != 0) { char buffer[50]; sprintf(buffer, "%d", node->agglevelsup); _fingerprintString(ctx, "agglevelsup"); _fingerprintString(ctx, buffer); } if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->cols != NULL && node->cols->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cols"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->cols, node, "cols", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->refs != NULL && node->refs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "refs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->refs, node, "refs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintWindowFunc(FingerprintContext *ctx, const WindowFunc *node, const void *parent, const char *field_name, unsigned int depth) { if (node->aggfilter != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "aggfilter"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->aggfilter, node, "aggfilter", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->inputcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->inputcollid); _fingerprintString(ctx, "inputcollid"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting if (node->winagg) { _fingerprintString(ctx, "winagg"); _fingerprintString(ctx, "true"); } if (node->wincollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->wincollid); _fingerprintString(ctx, "wincollid"); _fingerprintString(ctx, buffer); } if (node->winfnoid != 0) { char buffer[50]; sprintf(buffer, "%d", node->winfnoid); _fingerprintString(ctx, "winfnoid"); _fingerprintString(ctx, buffer); } if (node->winref != 0) { char buffer[50]; sprintf(buffer, "%d", node->winref); _fingerprintString(ctx, "winref"); _fingerprintString(ctx, buffer); } if (node->winstar) { _fingerprintString(ctx, "winstar"); _fingerprintString(ctx, "true"); } if (node->wintype != 0) { char buffer[50]; sprintf(buffer, "%d", node->wintype); _fingerprintString(ctx, "wintype"); _fingerprintString(ctx, buffer); } } static void _fingerprintSubscriptingRef(FingerprintContext *ctx, const SubscriptingRef *node, const void *parent, const char *field_name, unsigned int depth) { if (node->refassgnexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "refassgnexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->refassgnexpr, node, "refassgnexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->refcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->refcollid); _fingerprintString(ctx, "refcollid"); _fingerprintString(ctx, buffer); } if (node->refcontainertype != 0) { char buffer[50]; sprintf(buffer, "%d", node->refcontainertype); _fingerprintString(ctx, "refcontainertype"); _fingerprintString(ctx, buffer); } if (node->refelemtype != 0) { char buffer[50]; sprintf(buffer, "%d", node->refelemtype); _fingerprintString(ctx, "refelemtype"); _fingerprintString(ctx, buffer); } if (node->refexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "refexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->refexpr, node, "refexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->reflowerindexpr != NULL && node->reflowerindexpr->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "reflowerindexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->reflowerindexpr, node, "reflowerindexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->reftypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->reftypmod); _fingerprintString(ctx, "reftypmod"); _fingerprintString(ctx, buffer); } if (node->refupperindexpr != NULL && node->refupperindexpr->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "refupperindexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->refupperindexpr, node, "refupperindexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintFuncExpr(FingerprintContext *ctx, const FuncExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->funccollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->funccollid); _fingerprintString(ctx, "funccollid"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "funcformat"); _fingerprintString(ctx, _enumToStringCoercionForm(node->funcformat)); } if (node->funcid != 0) { char buffer[50]; sprintf(buffer, "%d", node->funcid); _fingerprintString(ctx, "funcid"); _fingerprintString(ctx, buffer); } if (node->funcresulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->funcresulttype); _fingerprintString(ctx, "funcresulttype"); _fingerprintString(ctx, buffer); } if (node->funcretset) { _fingerprintString(ctx, "funcretset"); _fingerprintString(ctx, "true"); } if (node->funcvariadic) { _fingerprintString(ctx, "funcvariadic"); _fingerprintString(ctx, "true"); } if (node->inputcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->inputcollid); _fingerprintString(ctx, "inputcollid"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintNamedArgExpr(FingerprintContext *ctx, const NamedArgExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->argnumber != 0) { char buffer[50]; sprintf(buffer, "%d", node->argnumber); _fingerprintString(ctx, "argnumber"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } } static void _fingerprintOpExpr(FingerprintContext *ctx, const OpExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->inputcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->inputcollid); _fingerprintString(ctx, "inputcollid"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting if (node->opcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->opcollid); _fingerprintString(ctx, "opcollid"); _fingerprintString(ctx, buffer); } if (node->opfuncid != 0) { char buffer[50]; sprintf(buffer, "%d", node->opfuncid); _fingerprintString(ctx, "opfuncid"); _fingerprintString(ctx, buffer); } if (node->opno != 0) { char buffer[50]; sprintf(buffer, "%d", node->opno); _fingerprintString(ctx, "opno"); _fingerprintString(ctx, buffer); } if (node->opresulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->opresulttype); _fingerprintString(ctx, "opresulttype"); _fingerprintString(ctx, buffer); } if (node->opretset) { _fingerprintString(ctx, "opretset"); _fingerprintString(ctx, "true"); } } static void _fingerprintScalarArrayOpExpr(FingerprintContext *ctx, const ScalarArrayOpExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->inputcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->inputcollid); _fingerprintString(ctx, "inputcollid"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting if (node->opfuncid != 0) { char buffer[50]; sprintf(buffer, "%d", node->opfuncid); _fingerprintString(ctx, "opfuncid"); _fingerprintString(ctx, buffer); } if (node->opno != 0) { char buffer[50]; sprintf(buffer, "%d", node->opno); _fingerprintString(ctx, "opno"); _fingerprintString(ctx, buffer); } if (node->useOr) { _fingerprintString(ctx, "useOr"); _fingerprintString(ctx, "true"); } } static void _fingerprintBoolExpr(FingerprintContext *ctx, const BoolExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "boolop"); _fingerprintString(ctx, _enumToStringBoolExprType(node->boolop)); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintSubLink(FingerprintContext *ctx, const SubLink *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->operName != NULL && node->operName->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "operName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->operName, node, "operName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->subLinkId != 0) { char buffer[50]; sprintf(buffer, "%d", node->subLinkId); _fingerprintString(ctx, "subLinkId"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "subLinkType"); _fingerprintString(ctx, _enumToStringSubLinkType(node->subLinkType)); } if (node->subselect != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "subselect"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->subselect, node, "subselect", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->testexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "testexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->testexpr, node, "testexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintSubPlan(FingerprintContext *ctx, const SubPlan *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->firstColCollation != 0) { char buffer[50]; sprintf(buffer, "%d", node->firstColCollation); _fingerprintString(ctx, "firstColCollation"); _fingerprintString(ctx, buffer); } if (node->firstColType != 0) { char buffer[50]; sprintf(buffer, "%d", node->firstColType); _fingerprintString(ctx, "firstColType"); _fingerprintString(ctx, buffer); } if (node->firstColTypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->firstColTypmod); _fingerprintString(ctx, "firstColTypmod"); _fingerprintString(ctx, buffer); } if (node->parParam != NULL && node->parParam->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "parParam"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->parParam, node, "parParam", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->parallel_safe) { _fingerprintString(ctx, "parallel_safe"); _fingerprintString(ctx, "true"); } if (node->paramIds != NULL && node->paramIds->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "paramIds"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->paramIds, node, "paramIds", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->per_call_cost != 0) { char buffer[50]; sprintf(buffer, "%f", node->per_call_cost); _fingerprintString(ctx, "per_call_cost"); _fingerprintString(ctx, buffer); } if (node->plan_id != 0) { char buffer[50]; sprintf(buffer, "%d", node->plan_id); _fingerprintString(ctx, "plan_id"); _fingerprintString(ctx, buffer); } if (node->plan_name != NULL) { _fingerprintString(ctx, "plan_name"); _fingerprintString(ctx, node->plan_name); } if (node->setParam != NULL && node->setParam->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "setParam"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->setParam, node, "setParam", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->startup_cost != 0) { char buffer[50]; sprintf(buffer, "%f", node->startup_cost); _fingerprintString(ctx, "startup_cost"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "subLinkType"); _fingerprintString(ctx, _enumToStringSubLinkType(node->subLinkType)); } if (node->testexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "testexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->testexpr, node, "testexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->unknownEqFalse) { _fingerprintString(ctx, "unknownEqFalse"); _fingerprintString(ctx, "true"); } if (node->useHashTable) { _fingerprintString(ctx, "useHashTable"); _fingerprintString(ctx, "true"); } } static void _fingerprintAlternativeSubPlan(FingerprintContext *ctx, const AlternativeSubPlan *node, const void *parent, const char *field_name, unsigned int depth) { if (node->subplans != NULL && node->subplans->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "subplans"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->subplans, node, "subplans", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintFieldSelect(FingerprintContext *ctx, const FieldSelect *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->fieldnum != 0) { char buffer[50]; sprintf(buffer, "%d", node->fieldnum); _fingerprintString(ctx, "fieldnum"); _fingerprintString(ctx, buffer); } if (node->resultcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->resultcollid); _fingerprintString(ctx, "resultcollid"); _fingerprintString(ctx, buffer); } if (node->resulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttype); _fingerprintString(ctx, "resulttype"); _fingerprintString(ctx, buffer); } if (node->resulttypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttypmod); _fingerprintString(ctx, "resulttypmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintFieldStore(FingerprintContext *ctx, const FieldStore *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->fieldnums != NULL && node->fieldnums->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "fieldnums"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->fieldnums, node, "fieldnums", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->newvals != NULL && node->newvals->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "newvals"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->newvals, node, "newvals", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->resulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttype); _fingerprintString(ctx, "resulttype"); _fingerprintString(ctx, buffer); } } static void _fingerprintRelabelType(FingerprintContext *ctx, const RelabelType *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (true) { _fingerprintString(ctx, "relabelformat"); _fingerprintString(ctx, _enumToStringCoercionForm(node->relabelformat)); } if (node->resultcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->resultcollid); _fingerprintString(ctx, "resultcollid"); _fingerprintString(ctx, buffer); } if (node->resulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttype); _fingerprintString(ctx, "resulttype"); _fingerprintString(ctx, buffer); } if (node->resulttypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttypmod); _fingerprintString(ctx, "resulttypmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintCoerceViaIO(FingerprintContext *ctx, const CoerceViaIO *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "coerceformat"); _fingerprintString(ctx, _enumToStringCoercionForm(node->coerceformat)); } // Intentionally ignoring node->location for fingerprinting if (node->resultcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->resultcollid); _fingerprintString(ctx, "resultcollid"); _fingerprintString(ctx, buffer); } if (node->resulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttype); _fingerprintString(ctx, "resulttype"); _fingerprintString(ctx, buffer); } } static void _fingerprintArrayCoerceExpr(FingerprintContext *ctx, const ArrayCoerceExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "coerceformat"); _fingerprintString(ctx, _enumToStringCoercionForm(node->coerceformat)); } if (node->elemexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "elemexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->elemexpr, node, "elemexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->resultcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->resultcollid); _fingerprintString(ctx, "resultcollid"); _fingerprintString(ctx, buffer); } if (node->resulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttype); _fingerprintString(ctx, "resulttype"); _fingerprintString(ctx, buffer); } if (node->resulttypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttypmod); _fingerprintString(ctx, "resulttypmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintConvertRowtypeExpr(FingerprintContext *ctx, const ConvertRowtypeExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "convertformat"); _fingerprintString(ctx, _enumToStringCoercionForm(node->convertformat)); } // Intentionally ignoring node->location for fingerprinting if (node->resulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttype); _fingerprintString(ctx, "resulttype"); _fingerprintString(ctx, buffer); } } static void _fingerprintCollateExpr(FingerprintContext *ctx, const CollateExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->collOid != 0) { char buffer[50]; sprintf(buffer, "%d", node->collOid); _fingerprintString(ctx, "collOid"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintCaseExpr(FingerprintContext *ctx, const CaseExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->casecollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->casecollid); _fingerprintString(ctx, "casecollid"); _fingerprintString(ctx, buffer); } if (node->casetype != 0) { char buffer[50]; sprintf(buffer, "%d", node->casetype); _fingerprintString(ctx, "casetype"); _fingerprintString(ctx, buffer); } if (node->defresult != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "defresult"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->defresult, node, "defresult", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintCaseWhen(FingerprintContext *ctx, const CaseWhen *node, const void *parent, const char *field_name, unsigned int depth) { if (node->expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->result != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "result"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->result, node, "result", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCaseTestExpr(FingerprintContext *ctx, const CaseTestExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->collation != 0) { char buffer[50]; sprintf(buffer, "%d", node->collation); _fingerprintString(ctx, "collation"); _fingerprintString(ctx, buffer); } if (node->typeId != 0) { char buffer[50]; sprintf(buffer, "%d", node->typeId); _fingerprintString(ctx, "typeId"); _fingerprintString(ctx, buffer); } if (node->typeMod != 0) { char buffer[50]; sprintf(buffer, "%d", node->typeMod); _fingerprintString(ctx, "typeMod"); _fingerprintString(ctx, buffer); } } static void _fingerprintArrayExpr(FingerprintContext *ctx, const ArrayExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->array_collid != 0) { char buffer[50]; sprintf(buffer, "%d", node->array_collid); _fingerprintString(ctx, "array_collid"); _fingerprintString(ctx, buffer); } if (node->array_typeid != 0) { char buffer[50]; sprintf(buffer, "%d", node->array_typeid); _fingerprintString(ctx, "array_typeid"); _fingerprintString(ctx, buffer); } if (node->element_typeid != 0) { char buffer[50]; sprintf(buffer, "%d", node->element_typeid); _fingerprintString(ctx, "element_typeid"); _fingerprintString(ctx, buffer); } if (node->elements != NULL && node->elements->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "elements"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->elements, node, "elements", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->multidims) { _fingerprintString(ctx, "multidims"); _fingerprintString(ctx, "true"); } } static void _fingerprintRowExpr(FingerprintContext *ctx, const RowExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->colnames != NULL && node->colnames->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colnames"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colnames, node, "colnames", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (true) { _fingerprintString(ctx, "row_format"); _fingerprintString(ctx, _enumToStringCoercionForm(node->row_format)); } if (node->row_typeid != 0) { char buffer[50]; sprintf(buffer, "%d", node->row_typeid); _fingerprintString(ctx, "row_typeid"); _fingerprintString(ctx, buffer); } } static void _fingerprintRowCompareExpr(FingerprintContext *ctx, const RowCompareExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->inputcollids != NULL && node->inputcollids->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "inputcollids"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->inputcollids, node, "inputcollids", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->largs != NULL && node->largs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "largs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->largs, node, "largs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->opfamilies != NULL && node->opfamilies->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opfamilies"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->opfamilies, node, "opfamilies", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->opnos != NULL && node->opnos->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opnos"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->opnos, node, "opnos", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rargs != NULL && node->rargs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rargs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->rargs, node, "rargs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "rctype"); _fingerprintString(ctx, _enumToStringRowCompareType(node->rctype)); } } static void _fingerprintCoalesceExpr(FingerprintContext *ctx, const CoalesceExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->coalescecollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->coalescecollid); _fingerprintString(ctx, "coalescecollid"); _fingerprintString(ctx, buffer); } if (node->coalescetype != 0) { char buffer[50]; sprintf(buffer, "%d", node->coalescetype); _fingerprintString(ctx, "coalescetype"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintMinMaxExpr(FingerprintContext *ctx, const MinMaxExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->inputcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->inputcollid); _fingerprintString(ctx, "inputcollid"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting if (node->minmaxcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->minmaxcollid); _fingerprintString(ctx, "minmaxcollid"); _fingerprintString(ctx, buffer); } if (node->minmaxtype != 0) { char buffer[50]; sprintf(buffer, "%d", node->minmaxtype); _fingerprintString(ctx, "minmaxtype"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "op"); _fingerprintString(ctx, _enumToStringMinMaxOp(node->op)); } } static void _fingerprintSQLValueFunction(FingerprintContext *ctx, const SQLValueFunction *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (true) { _fingerprintString(ctx, "op"); _fingerprintString(ctx, _enumToStringSQLValueFunctionOp(node->op)); } if (node->type != 0) { char buffer[50]; sprintf(buffer, "%d", node->type); _fingerprintString(ctx, "type"); _fingerprintString(ctx, buffer); } if (node->typmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->typmod); _fingerprintString(ctx, "typmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintXmlExpr(FingerprintContext *ctx, const XmlExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg_names != NULL && node->arg_names->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg_names"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg_names, node, "arg_names", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (node->named_args != NULL && node->named_args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "named_args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->named_args, node, "named_args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "op"); _fingerprintString(ctx, _enumToStringXmlExprOp(node->op)); } if (node->type != 0) { char buffer[50]; sprintf(buffer, "%d", node->type); _fingerprintString(ctx, "type"); _fingerprintString(ctx, buffer); } if (node->typmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->typmod); _fingerprintString(ctx, "typmod"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "xmloption"); _fingerprintString(ctx, _enumToStringXmlOptionType(node->xmloption)); } } static void _fingerprintNullTest(FingerprintContext *ctx, const NullTest *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->argisrow) { _fingerprintString(ctx, "argisrow"); _fingerprintString(ctx, "true"); } // Intentionally ignoring node->location for fingerprinting if (true) { _fingerprintString(ctx, "nulltesttype"); _fingerprintString(ctx, _enumToStringNullTestType(node->nulltesttype)); } } static void _fingerprintBooleanTest(FingerprintContext *ctx, const BooleanTest *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "booltesttype"); _fingerprintString(ctx, _enumToStringBoolTestType(node->booltesttype)); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintCoerceToDomain(FingerprintContext *ctx, const CoerceToDomain *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "coercionformat"); _fingerprintString(ctx, _enumToStringCoercionForm(node->coercionformat)); } // Intentionally ignoring node->location for fingerprinting if (node->resultcollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->resultcollid); _fingerprintString(ctx, "resultcollid"); _fingerprintString(ctx, buffer); } if (node->resulttype != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttype); _fingerprintString(ctx, "resulttype"); _fingerprintString(ctx, buffer); } if (node->resulttypmod != 0) { char buffer[50]; sprintf(buffer, "%d", node->resulttypmod); _fingerprintString(ctx, "resulttypmod"); _fingerprintString(ctx, buffer); } } static void _fingerprintCoerceToDomainValue(FingerprintContext *ctx, const CoerceToDomainValue *node, const void *parent, const char *field_name, unsigned int depth) { if (node->collation != 0) { char buffer[50]; sprintf(buffer, "%d", node->collation); _fingerprintString(ctx, "collation"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting if (node->typeId != 0) { char buffer[50]; sprintf(buffer, "%d", node->typeId); _fingerprintString(ctx, "typeId"); _fingerprintString(ctx, buffer); } if (node->typeMod != 0) { char buffer[50]; sprintf(buffer, "%d", node->typeMod); _fingerprintString(ctx, "typeMod"); _fingerprintString(ctx, buffer); } } static void _fingerprintSetToDefault(FingerprintContext *ctx, const SetToDefault *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring all fields for fingerprinting } static void _fingerprintCurrentOfExpr(FingerprintContext *ctx, const CurrentOfExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->cursor_name != NULL) { _fingerprintString(ctx, "cursor_name"); _fingerprintString(ctx, node->cursor_name); } if (node->cursor_param != 0) { char buffer[50]; sprintf(buffer, "%d", node->cursor_param); _fingerprintString(ctx, "cursor_param"); _fingerprintString(ctx, buffer); } if (node->cvarno != 0) { char buffer[50]; sprintf(buffer, "%d", node->cvarno); _fingerprintString(ctx, "cvarno"); _fingerprintString(ctx, buffer); } } static void _fingerprintNextValueExpr(FingerprintContext *ctx, const NextValueExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->seqid != 0) { char buffer[50]; sprintf(buffer, "%d", node->seqid); _fingerprintString(ctx, "seqid"); _fingerprintString(ctx, buffer); } if (node->typeId != 0) { char buffer[50]; sprintf(buffer, "%d", node->typeId); _fingerprintString(ctx, "typeId"); _fingerprintString(ctx, buffer); } } static void _fingerprintInferenceElem(FingerprintContext *ctx, const InferenceElem *node, const void *parent, const char *field_name, unsigned int depth) { if (node->expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->infercollid != 0) { char buffer[50]; sprintf(buffer, "%d", node->infercollid); _fingerprintString(ctx, "infercollid"); _fingerprintString(ctx, buffer); } if (node->inferopclass != 0) { char buffer[50]; sprintf(buffer, "%d", node->inferopclass); _fingerprintString(ctx, "inferopclass"); _fingerprintString(ctx, buffer); } } static void _fingerprintTargetEntry(FingerprintContext *ctx, const TargetEntry *node, const void *parent, const char *field_name, unsigned int depth) { if (node->expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->resjunk) { _fingerprintString(ctx, "resjunk"); _fingerprintString(ctx, "true"); } if (node->resname != NULL) { _fingerprintString(ctx, "resname"); _fingerprintString(ctx, node->resname); } if (node->resno != 0) { char buffer[50]; sprintf(buffer, "%d", node->resno); _fingerprintString(ctx, "resno"); _fingerprintString(ctx, buffer); } if (node->resorigcol != 0) { char buffer[50]; sprintf(buffer, "%d", node->resorigcol); _fingerprintString(ctx, "resorigcol"); _fingerprintString(ctx, buffer); } if (node->resorigtbl != 0) { char buffer[50]; sprintf(buffer, "%d", node->resorigtbl); _fingerprintString(ctx, "resorigtbl"); _fingerprintString(ctx, buffer); } if (node->ressortgroupref != 0) { char buffer[50]; sprintf(buffer, "%d", node->ressortgroupref); _fingerprintString(ctx, "ressortgroupref"); _fingerprintString(ctx, buffer); } } static void _fingerprintRangeTblRef(FingerprintContext *ctx, const RangeTblRef *node, const void *parent, const char *field_name, unsigned int depth) { if (node->rtindex != 0) { char buffer[50]; sprintf(buffer, "%d", node->rtindex); _fingerprintString(ctx, "rtindex"); _fingerprintString(ctx, buffer); } } static void _fingerprintJoinExpr(FingerprintContext *ctx, const JoinExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->isNatural) { _fingerprintString(ctx, "isNatural"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "jointype"); _fingerprintString(ctx, _enumToStringJoinType(node->jointype)); } if (node->larg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "larg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->larg, node, "larg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->quals != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "quals"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->quals, node, "quals", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rarg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rarg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->rarg, node, "rarg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rtindex != 0) { char buffer[50]; sprintf(buffer, "%d", node->rtindex); _fingerprintString(ctx, "rtindex"); _fingerprintString(ctx, buffer); } if (node->usingClause != NULL && node->usingClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "usingClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->usingClause, node, "usingClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintFromExpr(FingerprintContext *ctx, const FromExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->fromlist != NULL && node->fromlist->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "fromlist"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->fromlist, node, "fromlist", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->quals != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "quals"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->quals, node, "quals", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintOnConflictExpr(FingerprintContext *ctx, const OnConflictExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "action"); _fingerprintString(ctx, _enumToStringOnConflictAction(node->action)); } if (node->arbiterElems != NULL && node->arbiterElems->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arbiterElems"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arbiterElems, node, "arbiterElems", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->arbiterWhere != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arbiterWhere"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arbiterWhere, node, "arbiterWhere", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->constraint != 0) { char buffer[50]; sprintf(buffer, "%d", node->constraint); _fingerprintString(ctx, "constraint"); _fingerprintString(ctx, buffer); } if (node->exclRelIndex != 0) { char buffer[50]; sprintf(buffer, "%d", node->exclRelIndex); _fingerprintString(ctx, "exclRelIndex"); _fingerprintString(ctx, buffer); } if (node->exclRelTlist != NULL && node->exclRelTlist->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "exclRelTlist"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->exclRelTlist, node, "exclRelTlist", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->onConflictSet != NULL && node->onConflictSet->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "onConflictSet"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->onConflictSet, node, "onConflictSet", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->onConflictWhere != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "onConflictWhere"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->onConflictWhere, node, "onConflictWhere", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintIntoClause(FingerprintContext *ctx, const IntoClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->accessMethod != NULL) { _fingerprintString(ctx, "accessMethod"); _fingerprintString(ctx, node->accessMethod); } if (node->colNames != NULL && node->colNames->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colNames"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colNames, node, "colNames", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "onCommit"); _fingerprintString(ctx, _enumToStringOnCommitAction(node->onCommit)); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rel != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rel"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->rel, node, "rel", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->skipData) { _fingerprintString(ctx, "skipData"); _fingerprintString(ctx, "true"); } if (node->tableSpaceName != NULL) { _fingerprintString(ctx, "tableSpaceName"); _fingerprintString(ctx, node->tableSpaceName); } if (node->viewQuery != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "viewQuery"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->viewQuery, node, "viewQuery", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintRawStmt(FingerprintContext *ctx, const RawStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->stmt != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "stmt"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->stmt, node, "stmt", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->stmt_len for fingerprinting // Intentionally ignoring node->stmt_location for fingerprinting } static void _fingerprintQuery(FingerprintContext *ctx, const Query *node, const void *parent, const char *field_name, unsigned int depth) { if (node->canSetTag) { _fingerprintString(ctx, "canSetTag"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "commandType"); _fingerprintString(ctx, _enumToStringCmdType(node->commandType)); } if (node->constraintDeps != NULL && node->constraintDeps->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "constraintDeps"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->constraintDeps, node, "constraintDeps", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->cteList != NULL && node->cteList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cteList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->cteList, node, "cteList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->distinctClause != NULL && node->distinctClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "distinctClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->distinctClause, node, "distinctClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->groupClause != NULL && node->groupClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "groupClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->groupClause, node, "groupClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->groupingSets != NULL && node->groupingSets->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "groupingSets"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->groupingSets, node, "groupingSets", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->hasAggs) { _fingerprintString(ctx, "hasAggs"); _fingerprintString(ctx, "true"); } if (node->hasDistinctOn) { _fingerprintString(ctx, "hasDistinctOn"); _fingerprintString(ctx, "true"); } if (node->hasForUpdate) { _fingerprintString(ctx, "hasForUpdate"); _fingerprintString(ctx, "true"); } if (node->hasModifyingCTE) { _fingerprintString(ctx, "hasModifyingCTE"); _fingerprintString(ctx, "true"); } if (node->hasRecursive) { _fingerprintString(ctx, "hasRecursive"); _fingerprintString(ctx, "true"); } if (node->hasRowSecurity) { _fingerprintString(ctx, "hasRowSecurity"); _fingerprintString(ctx, "true"); } if (node->hasSubLinks) { _fingerprintString(ctx, "hasSubLinks"); _fingerprintString(ctx, "true"); } if (node->hasTargetSRFs) { _fingerprintString(ctx, "hasTargetSRFs"); _fingerprintString(ctx, "true"); } if (node->hasWindowFuncs) { _fingerprintString(ctx, "hasWindowFuncs"); _fingerprintString(ctx, "true"); } if (node->havingQual != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "havingQual"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->havingQual, node, "havingQual", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->jointree != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "jointree"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintFromExpr(ctx, node->jointree, node, "jointree", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->limitCount != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "limitCount"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->limitCount, node, "limitCount", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->limitOffset != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "limitOffset"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->limitOffset, node, "limitOffset", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "limitOption"); _fingerprintString(ctx, _enumToStringLimitOption(node->limitOption)); } if (node->onConflict != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "onConflict"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintOnConflictExpr(ctx, node->onConflict, node, "onConflict", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "override"); _fingerprintString(ctx, _enumToStringOverridingKind(node->override)); } if (node->queryId != 0) { char buffer[50]; sprintf(buffer, "%ld", node->queryId); _fingerprintString(ctx, "queryId"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "querySource"); _fingerprintString(ctx, _enumToStringQuerySource(node->querySource)); } if (node->resultRelation != 0) { char buffer[50]; sprintf(buffer, "%d", node->resultRelation); _fingerprintString(ctx, "resultRelation"); _fingerprintString(ctx, buffer); } if (node->returningList != NULL && node->returningList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "returningList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->returningList, node, "returningList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rowMarks != NULL && node->rowMarks->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rowMarks"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->rowMarks, node, "rowMarks", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rtable != NULL && node->rtable->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rtable"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->rtable, node, "rtable", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->setOperations != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "setOperations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->setOperations, node, "setOperations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->sortClause != NULL && node->sortClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "sortClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->sortClause, node, "sortClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->stmt_len != 0) { char buffer[50]; sprintf(buffer, "%d", node->stmt_len); _fingerprintString(ctx, "stmt_len"); _fingerprintString(ctx, buffer); } if (node->stmt_location != 0) { char buffer[50]; sprintf(buffer, "%d", node->stmt_location); _fingerprintString(ctx, "stmt_location"); _fingerprintString(ctx, buffer); } if (node->targetList != NULL && node->targetList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "targetList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->targetList, node, "targetList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->utilityStmt != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "utilityStmt"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->utilityStmt, node, "utilityStmt", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->windowClause != NULL && node->windowClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "windowClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->windowClause, node, "windowClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->withCheckOptions != NULL && node->withCheckOptions->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "withCheckOptions"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->withCheckOptions, node, "withCheckOptions", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintInsertStmt(FingerprintContext *ctx, const InsertStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->cols != NULL && node->cols->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cols"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->cols, node, "cols", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->onConflictClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "onConflictClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintOnConflictClause(ctx, node->onConflictClause, node, "onConflictClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "override"); _fingerprintString(ctx, _enumToStringOverridingKind(node->override)); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->returningList != NULL && node->returningList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "returningList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->returningList, node, "returningList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->selectStmt != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "selectStmt"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->selectStmt, node, "selectStmt", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->withClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "withClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintWithClause(ctx, node->withClause, node, "withClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintDeleteStmt(FingerprintContext *ctx, const DeleteStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->returningList != NULL && node->returningList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "returningList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->returningList, node, "returningList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->usingClause != NULL && node->usingClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "usingClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->usingClause, node, "usingClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->whereClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "whereClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->withClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "withClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintWithClause(ctx, node->withClause, node, "withClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintUpdateStmt(FingerprintContext *ctx, const UpdateStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->fromClause != NULL && node->fromClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "fromClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->fromClause, node, "fromClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->returningList != NULL && node->returningList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "returningList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->returningList, node, "returningList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->targetList != NULL && node->targetList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "targetList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->targetList, node, "targetList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->whereClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "whereClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->withClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "withClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintWithClause(ctx, node->withClause, node, "withClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintSelectStmt(FingerprintContext *ctx, const SelectStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->all) { _fingerprintString(ctx, "all"); _fingerprintString(ctx, "true"); } if (node->distinctClause != NULL && node->distinctClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "distinctClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->distinctClause, node, "distinctClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->fromClause != NULL && node->fromClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "fromClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->fromClause, node, "fromClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->groupClause != NULL && node->groupClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "groupClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->groupClause, node, "groupClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->havingClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "havingClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->havingClause, node, "havingClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->intoClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "intoClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintIntoClause(ctx, node->intoClause, node, "intoClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->larg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "larg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintSelectStmt(ctx, node->larg, node, "larg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->limitCount != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "limitCount"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->limitCount, node, "limitCount", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->limitOffset != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "limitOffset"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->limitOffset, node, "limitOffset", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "limitOption"); _fingerprintString(ctx, _enumToStringLimitOption(node->limitOption)); } if (node->lockingClause != NULL && node->lockingClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "lockingClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->lockingClause, node, "lockingClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "op"); _fingerprintString(ctx, _enumToStringSetOperation(node->op)); } if (node->rarg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rarg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintSelectStmt(ctx, node->rarg, node, "rarg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->sortClause != NULL && node->sortClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "sortClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->sortClause, node, "sortClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->targetList != NULL && node->targetList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "targetList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->targetList, node, "targetList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->valuesLists != NULL && node->valuesLists->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "valuesLists"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->valuesLists, node, "valuesLists", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->whereClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "whereClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->windowClause != NULL && node->windowClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "windowClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->windowClause, node, "windowClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->withClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "withClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintWithClause(ctx, node->withClause, node, "withClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterTableStmt(FingerprintContext *ctx, const AlterTableStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->cmds != NULL && node->cmds->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cmds"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->cmds, node, "cmds", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "relkind"); _fingerprintString(ctx, _enumToStringObjectType(node->relkind)); } } static void _fingerprintAlterTableCmd(FingerprintContext *ctx, const AlterTableCmd *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->def != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "def"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->def, node, "def", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (node->newowner != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "newowner"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->newowner, node, "newowner", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->num != 0) { char buffer[50]; sprintf(buffer, "%d", node->num); _fingerprintString(ctx, "num"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "subtype"); _fingerprintString(ctx, _enumToStringAlterTableType(node->subtype)); } } static void _fingerprintAlterDomainStmt(FingerprintContext *ctx, const AlterDomainStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->def != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "def"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->def, node, "def", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (node->subtype != 0) { char buffer[2] = {node->subtype, '\0'}; _fingerprintString(ctx, "subtype"); _fingerprintString(ctx, buffer); } if (node->typeName != NULL && node->typeName->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintSetOperationStmt(FingerprintContext *ctx, const SetOperationStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->all) { _fingerprintString(ctx, "all"); _fingerprintString(ctx, "true"); } if (node->colCollations != NULL && node->colCollations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colCollations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colCollations, node, "colCollations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->colTypes != NULL && node->colTypes->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colTypes"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colTypes, node, "colTypes", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->colTypmods != NULL && node->colTypmods->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colTypmods"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colTypmods, node, "colTypmods", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->groupClauses != NULL && node->groupClauses->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "groupClauses"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->groupClauses, node, "groupClauses", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->larg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "larg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->larg, node, "larg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "op"); _fingerprintString(ctx, _enumToStringSetOperation(node->op)); } if (node->rarg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rarg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->rarg, node, "rarg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintGrantStmt(FingerprintContext *ctx, const GrantStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->grant_option) { _fingerprintString(ctx, "grant_option"); _fingerprintString(ctx, "true"); } if (node->grantees != NULL && node->grantees->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "grantees"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->grantees, node, "grantees", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->is_grant) { _fingerprintString(ctx, "is_grant"); _fingerprintString(ctx, "true"); } if (node->objects != NULL && node->objects->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "objects"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->objects, node, "objects", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "objtype"); _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } if (node->privileges != NULL && node->privileges->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "privileges"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->privileges, node, "privileges", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "targtype"); _fingerprintString(ctx, _enumToStringGrantTargetType(node->targtype)); } } static void _fingerprintGrantRoleStmt(FingerprintContext *ctx, const GrantRoleStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->admin_opt) { _fingerprintString(ctx, "admin_opt"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->granted_roles != NULL && node->granted_roles->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "granted_roles"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->granted_roles, node, "granted_roles", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->grantee_roles != NULL && node->grantee_roles->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "grantee_roles"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->grantee_roles, node, "grantee_roles", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->grantor != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "grantor"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->grantor, node, "grantor", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->is_grant) { _fingerprintString(ctx, "is_grant"); _fingerprintString(ctx, "true"); } } static void _fingerprintAlterDefaultPrivilegesStmt(FingerprintContext *ctx, const AlterDefaultPrivilegesStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->action != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "action"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintGrantStmt(ctx, node->action, node, "action", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintClosePortalStmt(FingerprintContext *ctx, const ClosePortalStmt *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->portalname for fingerprinting } static void _fingerprintClusterStmt(FingerprintContext *ctx, const ClusterStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->indexname != NULL) { _fingerprintString(ctx, "indexname"); _fingerprintString(ctx, node->indexname); } if (node->options != 0) { char buffer[50]; sprintf(buffer, "%d", node->options); _fingerprintString(ctx, "options"); _fingerprintString(ctx, buffer); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCopyStmt(FingerprintContext *ctx, const CopyStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->attlist != NULL && node->attlist->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "attlist"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->attlist, node, "attlist", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->filename != NULL) { _fingerprintString(ctx, "filename"); _fingerprintString(ctx, node->filename); } if (node->is_from) { _fingerprintString(ctx, "is_from"); _fingerprintString(ctx, "true"); } if (node->is_program) { _fingerprintString(ctx, "is_program"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->query != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "query"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->query, node, "query", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->whereClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "whereClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateStmt(FingerprintContext *ctx, const CreateStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->accessMethod != NULL) { _fingerprintString(ctx, "accessMethod"); _fingerprintString(ctx, node->accessMethod); } if (node->constraints != NULL && node->constraints->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "constraints"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->constraints, node, "constraints", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->inhRelations != NULL && node->inhRelations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "inhRelations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->inhRelations, node, "inhRelations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->ofTypename != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ofTypename"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->ofTypename, node, "ofTypename", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "oncommit"); _fingerprintString(ctx, _enumToStringOnCommitAction(node->oncommit)); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->partbound != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "partbound"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintPartitionBoundSpec(ctx, node->partbound, node, "partbound", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->partspec != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "partspec"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintPartitionSpec(ctx, node->partspec, node, "partspec", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->tableElts != NULL && node->tableElts->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "tableElts"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->tableElts, node, "tableElts", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->tablespacename != NULL) { _fingerprintString(ctx, "tablespacename"); _fingerprintString(ctx, node->tablespacename); } } static void _fingerprintDefineStmt(FingerprintContext *ctx, const DefineStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->definition != NULL && node->definition->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "definition"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->definition, node, "definition", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->defnames != NULL && node->defnames->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "defnames"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->defnames, node, "defnames", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "kind"); _fingerprintString(ctx, _enumToStringObjectType(node->kind)); } if (node->oldstyle) { _fingerprintString(ctx, "oldstyle"); _fingerprintString(ctx, "true"); } if (node->replace) { _fingerprintString(ctx, "replace"); _fingerprintString(ctx, "true"); } } static void _fingerprintDropStmt(FingerprintContext *ctx, const DropStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->concurrent) { _fingerprintString(ctx, "concurrent"); _fingerprintString(ctx, "true"); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->objects != NULL && node->objects->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "objects"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->objects, node, "objects", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "removeType"); _fingerprintString(ctx, _enumToStringObjectType(node->removeType)); } } static void _fingerprintTruncateStmt(FingerprintContext *ctx, const TruncateStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->relations != NULL && node->relations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->relations, node, "relations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->restart_seqs) { _fingerprintString(ctx, "restart_seqs"); _fingerprintString(ctx, "true"); } } static void _fingerprintCommentStmt(FingerprintContext *ctx, const CommentStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->comment != NULL) { _fingerprintString(ctx, "comment"); _fingerprintString(ctx, node->comment); } if (node->object != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "object"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->object, node, "object", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "objtype"); _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } } static void _fingerprintFetchStmt(FingerprintContext *ctx, const FetchStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "direction"); _fingerprintString(ctx, _enumToStringFetchDirection(node->direction)); } if (node->howMany != 0) { char buffer[50]; sprintf(buffer, "%ld", node->howMany); _fingerprintString(ctx, "howMany"); _fingerprintString(ctx, buffer); } if (node->ismove) { _fingerprintString(ctx, "ismove"); _fingerprintString(ctx, "true"); } // Intentionally ignoring node->portalname for fingerprinting } static void _fingerprintIndexStmt(FingerprintContext *ctx, const IndexStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->accessMethod != NULL) { _fingerprintString(ctx, "accessMethod"); _fingerprintString(ctx, node->accessMethod); } if (node->concurrent) { _fingerprintString(ctx, "concurrent"); _fingerprintString(ctx, "true"); } if (node->deferrable) { _fingerprintString(ctx, "deferrable"); _fingerprintString(ctx, "true"); } if (node->excludeOpNames != NULL && node->excludeOpNames->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "excludeOpNames"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->excludeOpNames, node, "excludeOpNames", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->idxcomment != NULL) { _fingerprintString(ctx, "idxcomment"); _fingerprintString(ctx, node->idxcomment); } if (node->idxname != NULL) { _fingerprintString(ctx, "idxname"); _fingerprintString(ctx, node->idxname); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->indexIncludingParams != NULL && node->indexIncludingParams->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "indexIncludingParams"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->indexIncludingParams, node, "indexIncludingParams", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->indexOid != 0) { char buffer[50]; sprintf(buffer, "%d", node->indexOid); _fingerprintString(ctx, "indexOid"); _fingerprintString(ctx, buffer); } if (node->indexParams != NULL && node->indexParams->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "indexParams"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->indexParams, node, "indexParams", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->initdeferred) { _fingerprintString(ctx, "initdeferred"); _fingerprintString(ctx, "true"); } if (node->isconstraint) { _fingerprintString(ctx, "isconstraint"); _fingerprintString(ctx, "true"); } if (node->oldCreateSubid != 0) { char buffer[50]; sprintf(buffer, "%d", node->oldCreateSubid); _fingerprintString(ctx, "oldCreateSubid"); _fingerprintString(ctx, buffer); } if (node->oldFirstRelfilenodeSubid != 0) { char buffer[50]; sprintf(buffer, "%d", node->oldFirstRelfilenodeSubid); _fingerprintString(ctx, "oldFirstRelfilenodeSubid"); _fingerprintString(ctx, buffer); } if (node->oldNode != 0) { char buffer[50]; sprintf(buffer, "%d", node->oldNode); _fingerprintString(ctx, "oldNode"); _fingerprintString(ctx, buffer); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->primary) { _fingerprintString(ctx, "primary"); _fingerprintString(ctx, "true"); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->reset_default_tblspc) { _fingerprintString(ctx, "reset_default_tblspc"); _fingerprintString(ctx, "true"); } if (node->tableSpace != NULL) { _fingerprintString(ctx, "tableSpace"); _fingerprintString(ctx, node->tableSpace); } if (node->transformed) { _fingerprintString(ctx, "transformed"); _fingerprintString(ctx, "true"); } if (node->unique) { _fingerprintString(ctx, "unique"); _fingerprintString(ctx, "true"); } if (node->whereClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "whereClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateFunctionStmt(FingerprintContext *ctx, const CreateFunctionStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->funcname != NULL && node->funcname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funcname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->funcname, node, "funcname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->is_procedure) { _fingerprintString(ctx, "is_procedure"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->parameters != NULL && node->parameters->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "parameters"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->parameters, node, "parameters", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->replace) { _fingerprintString(ctx, "replace"); _fingerprintString(ctx, "true"); } if (node->returnType != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "returnType"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->returnType, node, "returnType", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterFunctionStmt(FingerprintContext *ctx, const AlterFunctionStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->actions != NULL && node->actions->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "actions"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->actions, node, "actions", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->func != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "func"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintObjectWithArgs(ctx, node->func, node, "func", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "objtype"); _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } } static void _fingerprintDoStmt(FingerprintContext *ctx, const DoStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintRenameStmt(FingerprintContext *ctx, const RenameStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->newname != NULL) { _fingerprintString(ctx, "newname"); _fingerprintString(ctx, node->newname); } if (node->object != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "object"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->object, node, "object", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "relationType"); _fingerprintString(ctx, _enumToStringObjectType(node->relationType)); } if (true) { _fingerprintString(ctx, "renameType"); _fingerprintString(ctx, _enumToStringObjectType(node->renameType)); } if (node->subname != NULL) { _fingerprintString(ctx, "subname"); _fingerprintString(ctx, node->subname); } } static void _fingerprintRuleStmt(FingerprintContext *ctx, const RuleStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->actions != NULL && node->actions->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "actions"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->actions, node, "actions", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "event"); _fingerprintString(ctx, _enumToStringCmdType(node->event)); } if (node->instead) { _fingerprintString(ctx, "instead"); _fingerprintString(ctx, "true"); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->replace) { _fingerprintString(ctx, "replace"); _fingerprintString(ctx, "true"); } if (node->rulename != NULL) { _fingerprintString(ctx, "rulename"); _fingerprintString(ctx, node->rulename); } if (node->whereClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "whereClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintNotifyStmt(FingerprintContext *ctx, const NotifyStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->conditionname != NULL) { _fingerprintString(ctx, "conditionname"); _fingerprintString(ctx, node->conditionname); } if (node->payload != NULL) { _fingerprintString(ctx, "payload"); _fingerprintString(ctx, node->payload); } } static void _fingerprintListenStmt(FingerprintContext *ctx, const ListenStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->conditionname != NULL) { _fingerprintString(ctx, "conditionname"); _fingerprintString(ctx, node->conditionname); } } static void _fingerprintUnlistenStmt(FingerprintContext *ctx, const UnlistenStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->conditionname != NULL) { _fingerprintString(ctx, "conditionname"); _fingerprintString(ctx, node->conditionname); } } static void _fingerprintTransactionStmt(FingerprintContext *ctx, const TransactionStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->chain) { _fingerprintString(ctx, "chain"); _fingerprintString(ctx, "true"); } // Intentionally ignoring node->gid for fingerprinting if (true) { _fingerprintString(ctx, "kind"); _fingerprintString(ctx, _enumToStringTransactionStmtKind(node->kind)); } // Intentionally ignoring node->options for fingerprinting // Intentionally ignoring node->savepoint_name for fingerprinting } static void _fingerprintViewStmt(FingerprintContext *ctx, const ViewStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->aliases != NULL && node->aliases->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "aliases"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->aliases, node, "aliases", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->query != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "query"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->query, node, "query", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->replace) { _fingerprintString(ctx, "replace"); _fingerprintString(ctx, "true"); } if (node->view != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "view"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->view, node, "view", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "withCheckOption"); _fingerprintString(ctx, _enumToStringViewCheckOption(node->withCheckOption)); } } static void _fingerprintLoadStmt(FingerprintContext *ctx, const LoadStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->filename != NULL) { _fingerprintString(ctx, "filename"); _fingerprintString(ctx, node->filename); } } static void _fingerprintCreateDomainStmt(FingerprintContext *ctx, const CreateDomainStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->collClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "collClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintCollateClause(ctx, node->collClause, node, "collClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->constraints != NULL && node->constraints->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "constraints"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->constraints, node, "constraints", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->domainname != NULL && node->domainname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "domainname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->domainname, node, "domainname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->typeName != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreatedbStmt(FingerprintContext *ctx, const CreatedbStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->dbname != NULL) { _fingerprintString(ctx, "dbname"); _fingerprintString(ctx, node->dbname); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintDropdbStmt(FingerprintContext *ctx, const DropdbStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->dbname != NULL) { _fingerprintString(ctx, "dbname"); _fingerprintString(ctx, node->dbname); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintVacuumStmt(FingerprintContext *ctx, const VacuumStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->is_vacuumcmd) { _fingerprintString(ctx, "is_vacuumcmd"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rels != NULL && node->rels->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rels"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->rels, node, "rels", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintExplainStmt(FingerprintContext *ctx, const ExplainStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->query != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "query"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->query, node, "query", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateTableAsStmt(FingerprintContext *ctx, const CreateTableAsStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->into != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "into"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintIntoClause(ctx, node->into, node, "into", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->is_select_into) { _fingerprintString(ctx, "is_select_into"); _fingerprintString(ctx, "true"); } if (node->query != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "query"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->query, node, "query", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "relkind"); _fingerprintString(ctx, _enumToStringObjectType(node->relkind)); } } static void _fingerprintCreateSeqStmt(FingerprintContext *ctx, const CreateSeqStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->for_identity) { _fingerprintString(ctx, "for_identity"); _fingerprintString(ctx, "true"); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->ownerId != 0) { char buffer[50]; sprintf(buffer, "%d", node->ownerId); _fingerprintString(ctx, "ownerId"); _fingerprintString(ctx, buffer); } if (node->sequence != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "sequence"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->sequence, node, "sequence", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterSeqStmt(FingerprintContext *ctx, const AlterSeqStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->for_identity) { _fingerprintString(ctx, "for_identity"); _fingerprintString(ctx, "true"); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->sequence != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "sequence"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->sequence, node, "sequence", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintVariableSetStmt(FingerprintContext *ctx, const VariableSetStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->is_local) { _fingerprintString(ctx, "is_local"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "kind"); _fingerprintString(ctx, _enumToStringVariableSetKind(node->kind)); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } } static void _fingerprintVariableShowStmt(FingerprintContext *ctx, const VariableShowStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } } static void _fingerprintDiscardStmt(FingerprintContext *ctx, const DiscardStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "target"); _fingerprintString(ctx, _enumToStringDiscardMode(node->target)); } } static void _fingerprintCreateTrigStmt(FingerprintContext *ctx, const CreateTrigStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->columns != NULL && node->columns->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "columns"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->columns, node, "columns", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->constrrel != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "constrrel"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->constrrel, node, "constrrel", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->deferrable) { _fingerprintString(ctx, "deferrable"); _fingerprintString(ctx, "true"); } if (node->events != 0) { char buffer[50]; sprintf(buffer, "%d", node->events); _fingerprintString(ctx, "events"); _fingerprintString(ctx, buffer); } if (node->funcname != NULL && node->funcname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funcname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->funcname, node, "funcname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->initdeferred) { _fingerprintString(ctx, "initdeferred"); _fingerprintString(ctx, "true"); } if (node->isconstraint) { _fingerprintString(ctx, "isconstraint"); _fingerprintString(ctx, "true"); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->row) { _fingerprintString(ctx, "row"); _fingerprintString(ctx, "true"); } if (node->timing != 0) { char buffer[50]; sprintf(buffer, "%d", node->timing); _fingerprintString(ctx, "timing"); _fingerprintString(ctx, buffer); } if (node->transitionRels != NULL && node->transitionRels->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "transitionRels"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->transitionRels, node, "transitionRels", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->trigname != NULL) { _fingerprintString(ctx, "trigname"); _fingerprintString(ctx, node->trigname); } if (node->whenClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "whenClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->whenClause, node, "whenClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreatePLangStmt(FingerprintContext *ctx, const CreatePLangStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->plhandler != NULL && node->plhandler->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "plhandler"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->plhandler, node, "plhandler", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->plinline != NULL && node->plinline->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "plinline"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->plinline, node, "plinline", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->plname != NULL) { _fingerprintString(ctx, "plname"); _fingerprintString(ctx, node->plname); } if (node->pltrusted) { _fingerprintString(ctx, "pltrusted"); _fingerprintString(ctx, "true"); } if (node->plvalidator != NULL && node->plvalidator->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "plvalidator"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->plvalidator, node, "plvalidator", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->replace) { _fingerprintString(ctx, "replace"); _fingerprintString(ctx, "true"); } } static void _fingerprintCreateRoleStmt(FingerprintContext *ctx, const CreateRoleStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->role != NULL) { _fingerprintString(ctx, "role"); _fingerprintString(ctx, node->role); } if (true) { _fingerprintString(ctx, "stmt_type"); _fingerprintString(ctx, _enumToStringRoleStmtType(node->stmt_type)); } } static void _fingerprintAlterRoleStmt(FingerprintContext *ctx, const AlterRoleStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->action != 0) { char buffer[50]; sprintf(buffer, "%d", node->action); _fingerprintString(ctx, "action"); _fingerprintString(ctx, buffer); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->role != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "role"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->role, node, "role", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintDropRoleStmt(FingerprintContext *ctx, const DropRoleStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->roles != NULL && node->roles->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "roles"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintLockStmt(FingerprintContext *ctx, const LockStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->mode != 0) { char buffer[50]; sprintf(buffer, "%d", node->mode); _fingerprintString(ctx, "mode"); _fingerprintString(ctx, buffer); } if (node->nowait) { _fingerprintString(ctx, "nowait"); _fingerprintString(ctx, "true"); } if (node->relations != NULL && node->relations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->relations, node, "relations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintConstraintsSetStmt(FingerprintContext *ctx, const ConstraintsSetStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->constraints != NULL && node->constraints->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "constraints"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->constraints, node, "constraints", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->deferred) { _fingerprintString(ctx, "deferred"); _fingerprintString(ctx, "true"); } } static void _fingerprintReindexStmt(FingerprintContext *ctx, const ReindexStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->concurrent) { _fingerprintString(ctx, "concurrent"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "kind"); _fingerprintString(ctx, _enumToStringReindexObjectType(node->kind)); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (node->options != 0) { char buffer[50]; sprintf(buffer, "%d", node->options); _fingerprintString(ctx, "options"); _fingerprintString(ctx, buffer); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCheckPointStmt(FingerprintContext *ctx, const CheckPointStmt *node, const void *parent, const char *field_name, unsigned int depth) { } static void _fingerprintCreateSchemaStmt(FingerprintContext *ctx, const CreateSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->authrole != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "authrole"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->authrole, node, "authrole", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->schemaElts != NULL && node->schemaElts->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "schemaElts"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->schemaElts, node, "schemaElts", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->schemaname != NULL) { _fingerprintString(ctx, "schemaname"); _fingerprintString(ctx, node->schemaname); } } static void _fingerprintAlterDatabaseStmt(FingerprintContext *ctx, const AlterDatabaseStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->dbname != NULL) { _fingerprintString(ctx, "dbname"); _fingerprintString(ctx, node->dbname); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterDatabaseSetStmt(FingerprintContext *ctx, const AlterDatabaseSetStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->dbname != NULL) { _fingerprintString(ctx, "dbname"); _fingerprintString(ctx, node->dbname); } if (node->setstmt != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "setstmt"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintVariableSetStmt(ctx, node->setstmt, node, "setstmt", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterRoleSetStmt(FingerprintContext *ctx, const AlterRoleSetStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->database != NULL) { _fingerprintString(ctx, "database"); _fingerprintString(ctx, node->database); } if (node->role != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "role"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->role, node, "role", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->setstmt != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "setstmt"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintVariableSetStmt(ctx, node->setstmt, node, "setstmt", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateConversionStmt(FingerprintContext *ctx, const CreateConversionStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->conversion_name != NULL && node->conversion_name->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "conversion_name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->conversion_name, node, "conversion_name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->def) { _fingerprintString(ctx, "def"); _fingerprintString(ctx, "true"); } if (node->for_encoding_name != NULL) { _fingerprintString(ctx, "for_encoding_name"); _fingerprintString(ctx, node->for_encoding_name); } if (node->func_name != NULL && node->func_name->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "func_name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->func_name, node, "func_name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->to_encoding_name != NULL) { _fingerprintString(ctx, "to_encoding_name"); _fingerprintString(ctx, node->to_encoding_name); } } static void _fingerprintCreateCastStmt(FingerprintContext *ctx, const CreateCastStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "context"); _fingerprintString(ctx, _enumToStringCoercionContext(node->context)); } if (node->func != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "func"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintObjectWithArgs(ctx, node->func, node, "func", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->inout) { _fingerprintString(ctx, "inout"); _fingerprintString(ctx, "true"); } if (node->sourcetype != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "sourcetype"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->sourcetype, node, "sourcetype", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->targettype != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "targettype"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->targettype, node, "targettype", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateOpClassStmt(FingerprintContext *ctx, const CreateOpClassStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->amname != NULL) { _fingerprintString(ctx, "amname"); _fingerprintString(ctx, node->amname); } if (node->datatype != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "datatype"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->datatype, node, "datatype", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->isDefault) { _fingerprintString(ctx, "isDefault"); _fingerprintString(ctx, "true"); } if (node->items != NULL && node->items->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "items"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->items, node, "items", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->opclassname != NULL && node->opclassname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opclassname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->opclassname, node, "opclassname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->opfamilyname != NULL && node->opfamilyname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opfamilyname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->opfamilyname, node, "opfamilyname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateOpFamilyStmt(FingerprintContext *ctx, const CreateOpFamilyStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->amname != NULL) { _fingerprintString(ctx, "amname"); _fingerprintString(ctx, node->amname); } if (node->opfamilyname != NULL && node->opfamilyname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opfamilyname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->opfamilyname, node, "opfamilyname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterOpFamilyStmt(FingerprintContext *ctx, const AlterOpFamilyStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->amname != NULL) { _fingerprintString(ctx, "amname"); _fingerprintString(ctx, node->amname); } if (node->isDrop) { _fingerprintString(ctx, "isDrop"); _fingerprintString(ctx, "true"); } if (node->items != NULL && node->items->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "items"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->items, node, "items", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->opfamilyname != NULL && node->opfamilyname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opfamilyname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->opfamilyname, node, "opfamilyname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintPrepareStmt(FingerprintContext *ctx, const PrepareStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->argtypes != NULL && node->argtypes->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "argtypes"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->argtypes, node, "argtypes", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->name for fingerprinting if (node->query != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "query"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->query, node, "query", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintExecuteStmt(FingerprintContext *ctx, const ExecuteStmt *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->name for fingerprinting if (node->params != NULL && node->params->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "params"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->params, node, "params", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintDeallocateStmt(FingerprintContext *ctx, const DeallocateStmt *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->name for fingerprinting } static void _fingerprintDeclareCursorStmt(FingerprintContext *ctx, const DeclareCursorStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->options != 0) { char buffer[50]; sprintf(buffer, "%d", node->options); _fingerprintString(ctx, "options"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->portalname for fingerprinting if (node->query != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "query"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->query, node, "query", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateTableSpaceStmt(FingerprintContext *ctx, const CreateTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->owner != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "owner"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->owner, node, "owner", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->tablespacename != NULL) { _fingerprintString(ctx, "tablespacename"); _fingerprintString(ctx, node->tablespacename); } } static void _fingerprintDropTableSpaceStmt(FingerprintContext *ctx, const DropTableSpaceStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->tablespacename != NULL) { _fingerprintString(ctx, "tablespacename"); _fingerprintString(ctx, node->tablespacename); } } static void _fingerprintAlterObjectDependsStmt(FingerprintContext *ctx, const AlterObjectDependsStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->extname != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "extname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->extname, node, "extname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->object != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "object"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->object, node, "object", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "objectType"); _fingerprintString(ctx, _enumToStringObjectType(node->objectType)); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->remove) { _fingerprintString(ctx, "remove"); _fingerprintString(ctx, "true"); } } static void _fingerprintAlterObjectSchemaStmt(FingerprintContext *ctx, const AlterObjectSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->newschema != NULL) { _fingerprintString(ctx, "newschema"); _fingerprintString(ctx, node->newschema); } if (node->object != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "object"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->object, node, "object", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "objectType"); _fingerprintString(ctx, _enumToStringObjectType(node->objectType)); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterOwnerStmt(FingerprintContext *ctx, const AlterOwnerStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->newowner != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "newowner"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->newowner, node, "newowner", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->object != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "object"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->object, node, "object", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "objectType"); _fingerprintString(ctx, _enumToStringObjectType(node->objectType)); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterOperatorStmt(FingerprintContext *ctx, const AlterOperatorStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->opername != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opername"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintObjectWithArgs(ctx, node->opername, node, "opername", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterTypeStmt(FingerprintContext *ctx, const AlterTypeStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->typeName != NULL && node->typeName->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintDropOwnedStmt(FingerprintContext *ctx, const DropOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->roles != NULL && node->roles->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "roles"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintReassignOwnedStmt(FingerprintContext *ctx, const ReassignOwnedStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->newrole != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "newrole"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->newrole, node, "newrole", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->roles != NULL && node->roles->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "roles"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCompositeTypeStmt(FingerprintContext *ctx, const CompositeTypeStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->coldeflist != NULL && node->coldeflist->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "coldeflist"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->coldeflist, node, "coldeflist", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->typevar != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typevar"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->typevar, node, "typevar", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateEnumStmt(FingerprintContext *ctx, const CreateEnumStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->typeName != NULL && node->typeName->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->vals != NULL && node->vals->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "vals"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->vals, node, "vals", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateRangeStmt(FingerprintContext *ctx, const CreateRangeStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->params != NULL && node->params->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "params"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->params, node, "params", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->typeName != NULL && node->typeName->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterEnumStmt(FingerprintContext *ctx, const AlterEnumStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->newVal != NULL) { _fingerprintString(ctx, "newVal"); _fingerprintString(ctx, node->newVal); } if (node->newValIsAfter) { _fingerprintString(ctx, "newValIsAfter"); _fingerprintString(ctx, "true"); } if (node->newValNeighbor != NULL) { _fingerprintString(ctx, "newValNeighbor"); _fingerprintString(ctx, node->newValNeighbor); } if (node->oldVal != NULL) { _fingerprintString(ctx, "oldVal"); _fingerprintString(ctx, node->oldVal); } if (node->skipIfNewValExists) { _fingerprintString(ctx, "skipIfNewValExists"); _fingerprintString(ctx, "true"); } if (node->typeName != NULL && node->typeName->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterTSDictionaryStmt(FingerprintContext *ctx, const AlterTSDictionaryStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->dictname != NULL && node->dictname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "dictname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->dictname, node, "dictname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterTSConfigurationStmt(FingerprintContext *ctx, const AlterTSConfigurationStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->cfgname != NULL && node->cfgname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cfgname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->cfgname, node, "cfgname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->dicts != NULL && node->dicts->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "dicts"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->dicts, node, "dicts", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "kind"); _fingerprintString(ctx, _enumToStringAlterTSConfigType(node->kind)); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->override) { _fingerprintString(ctx, "override"); _fingerprintString(ctx, "true"); } if (node->replace) { _fingerprintString(ctx, "replace"); _fingerprintString(ctx, "true"); } if (node->tokentype != NULL && node->tokentype->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "tokentype"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->tokentype, node, "tokentype", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateFdwStmt(FingerprintContext *ctx, const CreateFdwStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->fdwname != NULL) { _fingerprintString(ctx, "fdwname"); _fingerprintString(ctx, node->fdwname); } if (node->func_options != NULL && node->func_options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "func_options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->func_options, node, "func_options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterFdwStmt(FingerprintContext *ctx, const AlterFdwStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->fdwname != NULL) { _fingerprintString(ctx, "fdwname"); _fingerprintString(ctx, node->fdwname); } if (node->func_options != NULL && node->func_options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "func_options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->func_options, node, "func_options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateForeignServerStmt(FingerprintContext *ctx, const CreateForeignServerStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->fdwname != NULL) { _fingerprintString(ctx, "fdwname"); _fingerprintString(ctx, node->fdwname); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); _fingerprintString(ctx, node->servername); } if (node->servertype != NULL) { _fingerprintString(ctx, "servertype"); _fingerprintString(ctx, node->servertype); } if (node->version != NULL) { _fingerprintString(ctx, "version"); _fingerprintString(ctx, node->version); } } static void _fingerprintAlterForeignServerStmt(FingerprintContext *ctx, const AlterForeignServerStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->has_version) { _fingerprintString(ctx, "has_version"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); _fingerprintString(ctx, node->servername); } if (node->version != NULL) { _fingerprintString(ctx, "version"); _fingerprintString(ctx, node->version); } } static void _fingerprintCreateUserMappingStmt(FingerprintContext *ctx, const CreateUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); _fingerprintString(ctx, node->servername); } if (node->user != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "user"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->user, node, "user", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterUserMappingStmt(FingerprintContext *ctx, const AlterUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); _fingerprintString(ctx, node->servername); } if (node->user != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "user"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->user, node, "user", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintDropUserMappingStmt(FingerprintContext *ctx, const DropUserMappingStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); _fingerprintString(ctx, node->servername); } if (node->user != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "user"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRoleSpec(ctx, node->user, node, "user", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterTableSpaceOptionsStmt(FingerprintContext *ctx, const AlterTableSpaceOptionsStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->isReset) { _fingerprintString(ctx, "isReset"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->tablespacename != NULL) { _fingerprintString(ctx, "tablespacename"); _fingerprintString(ctx, node->tablespacename); } } static void _fingerprintAlterTableMoveAllStmt(FingerprintContext *ctx, const AlterTableMoveAllStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->new_tablespacename != NULL) { _fingerprintString(ctx, "new_tablespacename"); _fingerprintString(ctx, node->new_tablespacename); } if (node->nowait) { _fingerprintString(ctx, "nowait"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "objtype"); _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } if (node->orig_tablespacename != NULL) { _fingerprintString(ctx, "orig_tablespacename"); _fingerprintString(ctx, node->orig_tablespacename); } if (node->roles != NULL && node->roles->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "roles"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintSecLabelStmt(FingerprintContext *ctx, const SecLabelStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->label != NULL) { _fingerprintString(ctx, "label"); _fingerprintString(ctx, node->label); } if (node->object != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "object"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->object, node, "object", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "objtype"); _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } if (node->provider != NULL) { _fingerprintString(ctx, "provider"); _fingerprintString(ctx, node->provider); } } static void _fingerprintCreateForeignTableStmt(FingerprintContext *ctx, const CreateForeignTableStmt *node, const void *parent, const char *field_name, unsigned int depth) { _fingerprintString(ctx, "base"); _fingerprintCreateStmt(ctx, (const CreateStmt*) &node->base, node, "base", depth); if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->servername != NULL) { _fingerprintString(ctx, "servername"); _fingerprintString(ctx, node->servername); } } static void _fingerprintImportForeignSchemaStmt(FingerprintContext *ctx, const ImportForeignSchemaStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "list_type"); _fingerprintString(ctx, _enumToStringImportForeignSchemaType(node->list_type)); } if (node->local_schema != NULL) { _fingerprintString(ctx, "local_schema"); _fingerprintString(ctx, node->local_schema); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->remote_schema != NULL) { _fingerprintString(ctx, "remote_schema"); _fingerprintString(ctx, node->remote_schema); } if (node->server_name != NULL) { _fingerprintString(ctx, "server_name"); _fingerprintString(ctx, node->server_name); } if (node->table_list != NULL && node->table_list->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "table_list"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->table_list, node, "table_list", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateExtensionStmt(FingerprintContext *ctx, const CreateExtensionStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->extname != NULL) { _fingerprintString(ctx, "extname"); _fingerprintString(ctx, node->extname); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterExtensionStmt(FingerprintContext *ctx, const AlterExtensionStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->extname != NULL) { _fingerprintString(ctx, "extname"); _fingerprintString(ctx, node->extname); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterExtensionContentsStmt(FingerprintContext *ctx, const AlterExtensionContentsStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->action != 0) { char buffer[50]; sprintf(buffer, "%d", node->action); _fingerprintString(ctx, "action"); _fingerprintString(ctx, buffer); } if (node->extname != NULL) { _fingerprintString(ctx, "extname"); _fingerprintString(ctx, node->extname); } if (node->object != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "object"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->object, node, "object", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "objtype"); _fingerprintString(ctx, _enumToStringObjectType(node->objtype)); } } static void _fingerprintCreateEventTrigStmt(FingerprintContext *ctx, const CreateEventTrigStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->eventname != NULL) { _fingerprintString(ctx, "eventname"); _fingerprintString(ctx, node->eventname); } if (node->funcname != NULL && node->funcname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funcname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->funcname, node, "funcname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->trigname != NULL) { _fingerprintString(ctx, "trigname"); _fingerprintString(ctx, node->trigname); } if (node->whenclause != NULL && node->whenclause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "whenclause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->whenclause, node, "whenclause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterEventTrigStmt(FingerprintContext *ctx, const AlterEventTrigStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->tgenabled != 0) { char buffer[2] = {node->tgenabled, '\0'}; _fingerprintString(ctx, "tgenabled"); _fingerprintString(ctx, buffer); } if (node->trigname != NULL) { _fingerprintString(ctx, "trigname"); _fingerprintString(ctx, node->trigname); } } static void _fingerprintRefreshMatViewStmt(FingerprintContext *ctx, const RefreshMatViewStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->concurrent) { _fingerprintString(ctx, "concurrent"); _fingerprintString(ctx, "true"); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->skipData) { _fingerprintString(ctx, "skipData"); _fingerprintString(ctx, "true"); } } static void _fingerprintReplicaIdentityStmt(FingerprintContext *ctx, const ReplicaIdentityStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->identity_type != 0) { char buffer[2] = {node->identity_type, '\0'}; _fingerprintString(ctx, "identity_type"); _fingerprintString(ctx, buffer); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } } static void _fingerprintAlterSystemStmt(FingerprintContext *ctx, const AlterSystemStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->setstmt != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "setstmt"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintVariableSetStmt(ctx, node->setstmt, node, "setstmt", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreatePolicyStmt(FingerprintContext *ctx, const CreatePolicyStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->cmd_name != NULL) { _fingerprintString(ctx, "cmd_name"); _fingerprintString(ctx, node->cmd_name); } if (node->permissive) { _fingerprintString(ctx, "permissive"); _fingerprintString(ctx, "true"); } if (node->policy_name != NULL) { _fingerprintString(ctx, "policy_name"); _fingerprintString(ctx, node->policy_name); } if (node->qual != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "qual"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->qual, node, "qual", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->roles != NULL && node->roles->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "roles"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->table != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "table"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->table, node, "table", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->with_check != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "with_check"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->with_check, node, "with_check", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterPolicyStmt(FingerprintContext *ctx, const AlterPolicyStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->policy_name != NULL) { _fingerprintString(ctx, "policy_name"); _fingerprintString(ctx, node->policy_name); } if (node->qual != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "qual"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->qual, node, "qual", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->roles != NULL && node->roles->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "roles"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->roles, node, "roles", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->table != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "table"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->table, node, "table", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->with_check != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "with_check"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->with_check, node, "with_check", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateTransformStmt(FingerprintContext *ctx, const CreateTransformStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->fromsql != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "fromsql"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintObjectWithArgs(ctx, node->fromsql, node, "fromsql", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->lang != NULL) { _fingerprintString(ctx, "lang"); _fingerprintString(ctx, node->lang); } if (node->replace) { _fingerprintString(ctx, "replace"); _fingerprintString(ctx, "true"); } if (node->tosql != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "tosql"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintObjectWithArgs(ctx, node->tosql, node, "tosql", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->type_name != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "type_name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->type_name, node, "type_name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateAmStmt(FingerprintContext *ctx, const CreateAmStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->amname != NULL) { _fingerprintString(ctx, "amname"); _fingerprintString(ctx, node->amname); } if (node->amtype != 0) { char buffer[2] = {node->amtype, '\0'}; _fingerprintString(ctx, "amtype"); _fingerprintString(ctx, buffer); } if (node->handler_name != NULL && node->handler_name->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "handler_name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->handler_name, node, "handler_name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreatePublicationStmt(FingerprintContext *ctx, const CreatePublicationStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->for_all_tables) { _fingerprintString(ctx, "for_all_tables"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->pubname != NULL) { _fingerprintString(ctx, "pubname"); _fingerprintString(ctx, node->pubname); } if (node->tables != NULL && node->tables->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "tables"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->tables, node, "tables", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterPublicationStmt(FingerprintContext *ctx, const AlterPublicationStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->for_all_tables) { _fingerprintString(ctx, "for_all_tables"); _fingerprintString(ctx, "true"); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->pubname != NULL) { _fingerprintString(ctx, "pubname"); _fingerprintString(ctx, node->pubname); } if (true) { _fingerprintString(ctx, "tableAction"); _fingerprintString(ctx, _enumToStringDefElemAction(node->tableAction)); } if (node->tables != NULL && node->tables->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "tables"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->tables, node, "tables", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCreateSubscriptionStmt(FingerprintContext *ctx, const CreateSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->conninfo != NULL) { _fingerprintString(ctx, "conninfo"); _fingerprintString(ctx, node->conninfo); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->publication != NULL && node->publication->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "publication"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->publication, node, "publication", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->subname != NULL) { _fingerprintString(ctx, "subname"); _fingerprintString(ctx, node->subname); } } static void _fingerprintAlterSubscriptionStmt(FingerprintContext *ctx, const AlterSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->conninfo != NULL) { _fingerprintString(ctx, "conninfo"); _fingerprintString(ctx, node->conninfo); } if (true) { _fingerprintString(ctx, "kind"); _fingerprintString(ctx, _enumToStringAlterSubscriptionType(node->kind)); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->publication != NULL && node->publication->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "publication"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->publication, node, "publication", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->subname != NULL) { _fingerprintString(ctx, "subname"); _fingerprintString(ctx, node->subname); } } static void _fingerprintDropSubscriptionStmt(FingerprintContext *ctx, const DropSubscriptionStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "behavior"); _fingerprintString(ctx, _enumToStringDropBehavior(node->behavior)); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->subname != NULL) { _fingerprintString(ctx, "subname"); _fingerprintString(ctx, node->subname); } } static void _fingerprintCreateStatsStmt(FingerprintContext *ctx, const CreateStatsStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->defnames != NULL && node->defnames->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "defnames"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->defnames, node, "defnames", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->exprs != NULL && node->exprs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "exprs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->exprs, node, "exprs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->if_not_exists) { _fingerprintString(ctx, "if_not_exists"); _fingerprintString(ctx, "true"); } if (node->relations != NULL && node->relations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->relations, node, "relations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->stat_types != NULL && node->stat_types->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "stat_types"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->stat_types, node, "stat_types", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->stxcomment != NULL) { _fingerprintString(ctx, "stxcomment"); _fingerprintString(ctx, node->stxcomment); } } static void _fingerprintAlterCollationStmt(FingerprintContext *ctx, const AlterCollationStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->collname != NULL && node->collname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "collname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->collname, node, "collname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCallStmt(FingerprintContext *ctx, const CallStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->funccall != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funccall"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintFuncCall(ctx, node->funccall, node, "funccall", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->funcexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funcexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintFuncExpr(ctx, node->funcexpr, node, "funcexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAlterStatsStmt(FingerprintContext *ctx, const AlterStatsStmt *node, const void *parent, const char *field_name, unsigned int depth) { if (node->defnames != NULL && node->defnames->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "defnames"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->defnames, node, "defnames", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->missing_ok) { _fingerprintString(ctx, "missing_ok"); _fingerprintString(ctx, "true"); } if (node->stxstattarget != 0) { char buffer[50]; sprintf(buffer, "%d", node->stxstattarget); _fingerprintString(ctx, "stxstattarget"); _fingerprintString(ctx, buffer); } } static void _fingerprintA_Expr(FingerprintContext *ctx, const A_Expr *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "kind"); if (node->kind == AEXPR_OP_ANY || node->kind == AEXPR_IN) _fingerprintString(ctx, "AEXPR_OP"); else _fingerprintString(ctx, _enumToStringA_Expr_Kind(node->kind)); } if (node->lexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "lexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->lexpr, node, "lexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->name != NULL && node->name->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->name, node, "name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->rexpr, node, "rexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintColumnRef(FingerprintContext *ctx, const ColumnRef *node, const void *parent, const char *field_name, unsigned int depth) { if (node->fields != NULL && node->fields->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "fields"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->fields, node, "fields", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintParamRef(FingerprintContext *ctx, const ParamRef *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring all fields for fingerprinting } static void _fingerprintA_Const(FingerprintContext *ctx, const A_Const *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring all fields for fingerprinting } static void _fingerprintFuncCall(FingerprintContext *ctx, const FuncCall *node, const void *parent, const char *field_name, unsigned int depth) { if (node->agg_distinct) { _fingerprintString(ctx, "agg_distinct"); _fingerprintString(ctx, "true"); } if (node->agg_filter != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "agg_filter"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->agg_filter, node, "agg_filter", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->agg_order != NULL && node->agg_order->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "agg_order"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->agg_order, node, "agg_order", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->agg_star) { _fingerprintString(ctx, "agg_star"); _fingerprintString(ctx, "true"); } if (node->agg_within_group) { _fingerprintString(ctx, "agg_within_group"); _fingerprintString(ctx, "true"); } if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->func_variadic) { _fingerprintString(ctx, "func_variadic"); _fingerprintString(ctx, "true"); } if (node->funcname != NULL && node->funcname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funcname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->funcname, node, "funcname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->over != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "over"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintWindowDef(ctx, node->over, node, "over", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintA_Star(FingerprintContext *ctx, const A_Star *node, const void *parent, const char *field_name, unsigned int depth) { } static void _fingerprintA_Indices(FingerprintContext *ctx, const A_Indices *node, const void *parent, const char *field_name, unsigned int depth) { if (node->is_slice) { _fingerprintString(ctx, "is_slice"); _fingerprintString(ctx, "true"); } if (node->lidx != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "lidx"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->lidx, node, "lidx", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->uidx != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "uidx"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->uidx, node, "uidx", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintA_Indirection(FingerprintContext *ctx, const A_Indirection *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->indirection != NULL && node->indirection->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "indirection"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->indirection, node, "indirection", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintA_ArrayExpr(FingerprintContext *ctx, const A_ArrayExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->elements != NULL && node->elements->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "elements"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->elements, node, "elements", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintResTarget(FingerprintContext *ctx, const ResTarget *node, const void *parent, const char *field_name, unsigned int depth) { if (node->indirection != NULL && node->indirection->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "indirection"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->indirection, node, "indirection", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->name != NULL && (field_name == NULL || parent == NULL || !IsA(parent, SelectStmt) || strcmp(field_name, "targetList") != 0)) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (node->val != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "val"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->val, node, "val", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintMultiAssignRef(FingerprintContext *ctx, const MultiAssignRef *node, const void *parent, const char *field_name, unsigned int depth) { if (node->colno != 0) { char buffer[50]; sprintf(buffer, "%d", node->colno); _fingerprintString(ctx, "colno"); _fingerprintString(ctx, buffer); } if (node->ncolumns != 0) { char buffer[50]; sprintf(buffer, "%d", node->ncolumns); _fingerprintString(ctx, "ncolumns"); _fingerprintString(ctx, buffer); } if (node->source != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "source"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->source, node, "source", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintTypeCast(FingerprintContext *ctx, const TypeCast *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->typeName != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCollateClause(FingerprintContext *ctx, const CollateClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->collname != NULL && node->collname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "collname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->collname, node, "collname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintSortBy(FingerprintContext *ctx, const SortBy *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->node != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "node"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->node, node, "node", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "sortby_dir"); _fingerprintString(ctx, _enumToStringSortByDir(node->sortby_dir)); } if (true) { _fingerprintString(ctx, "sortby_nulls"); _fingerprintString(ctx, _enumToStringSortByNulls(node->sortby_nulls)); } if (node->useOp != NULL && node->useOp->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "useOp"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->useOp, node, "useOp", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintWindowDef(FingerprintContext *ctx, const WindowDef *node, const void *parent, const char *field_name, unsigned int depth) { if (node->endOffset != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "endOffset"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->endOffset, node, "endOffset", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->frameOptions != 0) { char buffer[50]; sprintf(buffer, "%d", node->frameOptions); _fingerprintString(ctx, "frameOptions"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (node->orderClause != NULL && node->orderClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "orderClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->orderClause, node, "orderClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->partitionClause != NULL && node->partitionClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "partitionClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->partitionClause, node, "partitionClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->refname != NULL) { _fingerprintString(ctx, "refname"); _fingerprintString(ctx, node->refname); } if (node->startOffset != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "startOffset"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->startOffset, node, "startOffset", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintRangeSubselect(FingerprintContext *ctx, const RangeSubselect *node, const void *parent, const char *field_name, unsigned int depth) { if (node->alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->lateral) { _fingerprintString(ctx, "lateral"); _fingerprintString(ctx, "true"); } if (node->subquery != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "subquery"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->subquery, node, "subquery", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintRangeFunction(FingerprintContext *ctx, const RangeFunction *node, const void *parent, const char *field_name, unsigned int depth) { if (node->alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->coldeflist != NULL && node->coldeflist->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "coldeflist"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->coldeflist, node, "coldeflist", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->functions != NULL && node->functions->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "functions"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->functions, node, "functions", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->is_rowsfrom) { _fingerprintString(ctx, "is_rowsfrom"); _fingerprintString(ctx, "true"); } if (node->lateral) { _fingerprintString(ctx, "lateral"); _fingerprintString(ctx, "true"); } if (node->ordinality) { _fingerprintString(ctx, "ordinality"); _fingerprintString(ctx, "true"); } } static void _fingerprintRangeTableSample(FingerprintContext *ctx, const RangeTableSample *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->method != NULL && node->method->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "method"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->method, node, "method", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->repeatable != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "repeatable"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->repeatable, node, "repeatable", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintRangeTableFunc(FingerprintContext *ctx, const RangeTableFunc *node, const void *parent, const char *field_name, unsigned int depth) { if (node->alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->columns != NULL && node->columns->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "columns"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->columns, node, "columns", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->docexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "docexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->docexpr, node, "docexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->lateral) { _fingerprintString(ctx, "lateral"); _fingerprintString(ctx, "true"); } // Intentionally ignoring node->location for fingerprinting if (node->namespaces != NULL && node->namespaces->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "namespaces"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->namespaces, node, "namespaces", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->rowexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "rowexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->rowexpr, node, "rowexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintRangeTableFuncCol(FingerprintContext *ctx, const RangeTableFuncCol *node, const void *parent, const char *field_name, unsigned int depth) { if (node->coldefexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "coldefexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->coldefexpr, node, "coldefexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->colexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colexpr, node, "colexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->colname != NULL) { _fingerprintString(ctx, "colname"); _fingerprintString(ctx, node->colname); } if (node->for_ordinality) { _fingerprintString(ctx, "for_ordinality"); _fingerprintString(ctx, "true"); } if (node->is_not_null) { _fingerprintString(ctx, "is_not_null"); _fingerprintString(ctx, "true"); } // Intentionally ignoring node->location for fingerprinting if (node->typeName != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintTypeName(FingerprintContext *ctx, const TypeName *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arrayBounds != NULL && node->arrayBounds->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arrayBounds"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arrayBounds, node, "arrayBounds", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->names != NULL && node->names->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "names"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->names, node, "names", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->pct_type) { _fingerprintString(ctx, "pct_type"); _fingerprintString(ctx, "true"); } if (node->setof) { _fingerprintString(ctx, "setof"); _fingerprintString(ctx, "true"); } if (node->typeOid != 0) { char buffer[50]; sprintf(buffer, "%d", node->typeOid); _fingerprintString(ctx, "typeOid"); _fingerprintString(ctx, buffer); } if (node->typemod != 0) { char buffer[50]; sprintf(buffer, "%d", node->typemod); _fingerprintString(ctx, "typemod"); _fingerprintString(ctx, buffer); } if (node->typmods != NULL && node->typmods->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typmods"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->typmods, node, "typmods", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintColumnDef(FingerprintContext *ctx, const ColumnDef *node, const void *parent, const char *field_name, unsigned int depth) { if (node->collClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "collClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintCollateClause(ctx, node->collClause, node, "collClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->collOid != 0) { char buffer[50]; sprintf(buffer, "%d", node->collOid); _fingerprintString(ctx, "collOid"); _fingerprintString(ctx, buffer); } if (node->colname != NULL) { _fingerprintString(ctx, "colname"); _fingerprintString(ctx, node->colname); } if (node->constraints != NULL && node->constraints->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "constraints"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->constraints, node, "constraints", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->cooked_default != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cooked_default"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->cooked_default, node, "cooked_default", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->fdwoptions != NULL && node->fdwoptions->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "fdwoptions"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->fdwoptions, node, "fdwoptions", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->generated != 0) { char buffer[2] = {node->generated, '\0'}; _fingerprintString(ctx, "generated"); _fingerprintString(ctx, buffer); } if (node->identity != 0) { char buffer[2] = {node->identity, '\0'}; _fingerprintString(ctx, "identity"); _fingerprintString(ctx, buffer); } if (node->identitySequence != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "identitySequence"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->identitySequence, node, "identitySequence", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->inhcount != 0) { char buffer[50]; sprintf(buffer, "%d", node->inhcount); _fingerprintString(ctx, "inhcount"); _fingerprintString(ctx, buffer); } if (node->is_from_type) { _fingerprintString(ctx, "is_from_type"); _fingerprintString(ctx, "true"); } if (node->is_local) { _fingerprintString(ctx, "is_local"); _fingerprintString(ctx, "true"); } if (node->is_not_null) { _fingerprintString(ctx, "is_not_null"); _fingerprintString(ctx, "true"); } // Intentionally ignoring node->location for fingerprinting if (node->raw_default != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "raw_default"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->raw_default, node, "raw_default", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->storage != 0) { char buffer[2] = {node->storage, '\0'}; _fingerprintString(ctx, "storage"); _fingerprintString(ctx, buffer); } if (node->typeName != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintIndexElem(FingerprintContext *ctx, const IndexElem *node, const void *parent, const char *field_name, unsigned int depth) { if (node->collation != NULL && node->collation->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "collation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->collation, node, "collation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->indexcolname != NULL) { _fingerprintString(ctx, "indexcolname"); _fingerprintString(ctx, node->indexcolname); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (true) { _fingerprintString(ctx, "nulls_ordering"); _fingerprintString(ctx, _enumToStringSortByNulls(node->nulls_ordering)); } if (node->opclass != NULL && node->opclass->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opclass"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->opclass, node, "opclass", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->opclassopts != NULL && node->opclassopts->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opclassopts"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->opclassopts, node, "opclassopts", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "ordering"); _fingerprintString(ctx, _enumToStringSortByDir(node->ordering)); } } static void _fingerprintConstraint(FingerprintContext *ctx, const Constraint *node, const void *parent, const char *field_name, unsigned int depth) { if (node->access_method != NULL) { _fingerprintString(ctx, "access_method"); _fingerprintString(ctx, node->access_method); } if (node->conname != NULL) { _fingerprintString(ctx, "conname"); _fingerprintString(ctx, node->conname); } if (true) { _fingerprintString(ctx, "contype"); _fingerprintString(ctx, _enumToStringConstrType(node->contype)); } if (node->cooked_expr != NULL) { _fingerprintString(ctx, "cooked_expr"); _fingerprintString(ctx, node->cooked_expr); } if (node->deferrable) { _fingerprintString(ctx, "deferrable"); _fingerprintString(ctx, "true"); } if (node->exclusions != NULL && node->exclusions->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "exclusions"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->exclusions, node, "exclusions", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->fk_attrs != NULL && node->fk_attrs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "fk_attrs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->fk_attrs, node, "fk_attrs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->fk_del_action != 0) { char buffer[2] = {node->fk_del_action, '\0'}; _fingerprintString(ctx, "fk_del_action"); _fingerprintString(ctx, buffer); } if (node->fk_matchtype != 0) { char buffer[2] = {node->fk_matchtype, '\0'}; _fingerprintString(ctx, "fk_matchtype"); _fingerprintString(ctx, buffer); } if (node->fk_upd_action != 0) { char buffer[2] = {node->fk_upd_action, '\0'}; _fingerprintString(ctx, "fk_upd_action"); _fingerprintString(ctx, buffer); } if (node->generated_when != 0) { char buffer[2] = {node->generated_when, '\0'}; _fingerprintString(ctx, "generated_when"); _fingerprintString(ctx, buffer); } if (node->including != NULL && node->including->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "including"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->including, node, "including", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->indexname != NULL) { _fingerprintString(ctx, "indexname"); _fingerprintString(ctx, node->indexname); } if (node->indexspace != NULL) { _fingerprintString(ctx, "indexspace"); _fingerprintString(ctx, node->indexspace); } if (node->initdeferred) { _fingerprintString(ctx, "initdeferred"); _fingerprintString(ctx, "true"); } if (node->initially_valid) { _fingerprintString(ctx, "initially_valid"); _fingerprintString(ctx, "true"); } if (node->is_no_inherit) { _fingerprintString(ctx, "is_no_inherit"); _fingerprintString(ctx, "true"); } if (node->keys != NULL && node->keys->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "keys"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->keys, node, "keys", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->old_conpfeqop != NULL && node->old_conpfeqop->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "old_conpfeqop"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->old_conpfeqop, node, "old_conpfeqop", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->old_pktable_oid != 0) { char buffer[50]; sprintf(buffer, "%d", node->old_pktable_oid); _fingerprintString(ctx, "old_pktable_oid"); _fingerprintString(ctx, buffer); } if (node->options != NULL && node->options->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "options"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->options, node, "options", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->pk_attrs != NULL && node->pk_attrs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "pk_attrs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->pk_attrs, node, "pk_attrs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->pktable != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "pktable"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->pktable, node, "pktable", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->raw_expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "raw_expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->raw_expr, node, "raw_expr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->reset_default_tblspc) { _fingerprintString(ctx, "reset_default_tblspc"); _fingerprintString(ctx, "true"); } if (node->skip_validation) { _fingerprintString(ctx, "skip_validation"); _fingerprintString(ctx, "true"); } if (node->where_clause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "where_clause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->where_clause, node, "where_clause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintDefElem(FingerprintContext *ctx, const DefElem *node, const void *parent, const char *field_name, unsigned int depth) { if (node->arg != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "arg"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->arg, node, "arg", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "defaction"); _fingerprintString(ctx, _enumToStringDefElemAction(node->defaction)); } if (node->defname != NULL) { _fingerprintString(ctx, "defname"); _fingerprintString(ctx, node->defname); } if (node->defnamespace != NULL) { _fingerprintString(ctx, "defnamespace"); _fingerprintString(ctx, node->defnamespace); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintRangeTblEntry(FingerprintContext *ctx, const RangeTblEntry *node, const void *parent, const char *field_name, unsigned int depth) { if (node->alias != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "alias"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->alias, node, "alias", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->checkAsUser != 0) { char buffer[50]; sprintf(buffer, "%d", node->checkAsUser); _fingerprintString(ctx, "checkAsUser"); _fingerprintString(ctx, buffer); } if (node->colcollations != NULL && node->colcollations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "colcollations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->colcollations, node, "colcollations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->coltypes != NULL && node->coltypes->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "coltypes"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->coltypes, node, "coltypes", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->coltypmods != NULL && node->coltypmods->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "coltypmods"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->coltypmods, node, "coltypmods", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->ctelevelsup != 0) { char buffer[50]; sprintf(buffer, "%d", node->ctelevelsup); _fingerprintString(ctx, "ctelevelsup"); _fingerprintString(ctx, buffer); } if (node->ctename != NULL) { _fingerprintString(ctx, "ctename"); _fingerprintString(ctx, node->ctename); } if (node->enrname != NULL) { _fingerprintString(ctx, "enrname"); _fingerprintString(ctx, node->enrname); } if (node->enrtuples != 0) { char buffer[50]; sprintf(buffer, "%f", node->enrtuples); _fingerprintString(ctx, "enrtuples"); _fingerprintString(ctx, buffer); } if (node->eref != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "eref"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintAlias(ctx, node->eref, node, "eref", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { int x; Bitmapset *bms = bms_copy(node->extraUpdatedCols); _fingerprintString(ctx, "extraUpdatedCols"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->funcordinality) { _fingerprintString(ctx, "funcordinality"); _fingerprintString(ctx, "true"); } if (node->functions != NULL && node->functions->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "functions"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->functions, node, "functions", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->inFromCl) { _fingerprintString(ctx, "inFromCl"); _fingerprintString(ctx, "true"); } if (node->inh) { _fingerprintString(ctx, "inh"); _fingerprintString(ctx, "true"); } if (true) { int x; Bitmapset *bms = bms_copy(node->insertedCols); _fingerprintString(ctx, "insertedCols"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->joinaliasvars != NULL && node->joinaliasvars->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "joinaliasvars"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->joinaliasvars, node, "joinaliasvars", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->joinleftcols != NULL && node->joinleftcols->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "joinleftcols"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->joinleftcols, node, "joinleftcols", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->joinmergedcols != 0) { char buffer[50]; sprintf(buffer, "%d", node->joinmergedcols); _fingerprintString(ctx, "joinmergedcols"); _fingerprintString(ctx, buffer); } if (node->joinrightcols != NULL && node->joinrightcols->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "joinrightcols"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->joinrightcols, node, "joinrightcols", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "jointype"); _fingerprintString(ctx, _enumToStringJoinType(node->jointype)); } if (node->lateral) { _fingerprintString(ctx, "lateral"); _fingerprintString(ctx, "true"); } if (node->relid != 0) { char buffer[50]; sprintf(buffer, "%d", node->relid); _fingerprintString(ctx, "relid"); _fingerprintString(ctx, buffer); } if (node->relkind != 0) { char buffer[2] = {node->relkind, '\0'}; _fingerprintString(ctx, "relkind"); _fingerprintString(ctx, buffer); } if (node->rellockmode != 0) { char buffer[50]; sprintf(buffer, "%d", node->rellockmode); _fingerprintString(ctx, "rellockmode"); _fingerprintString(ctx, buffer); } if (node->requiredPerms != 0) { char buffer[50]; sprintf(buffer, "%d", node->requiredPerms); _fingerprintString(ctx, "requiredPerms"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "rtekind"); _fingerprintString(ctx, _enumToStringRTEKind(node->rtekind)); } if (node->securityQuals != NULL && node->securityQuals->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "securityQuals"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->securityQuals, node, "securityQuals", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->security_barrier) { _fingerprintString(ctx, "security_barrier"); _fingerprintString(ctx, "true"); } if (true) { int x; Bitmapset *bms = bms_copy(node->selectedCols); _fingerprintString(ctx, "selectedCols"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->self_reference) { _fingerprintString(ctx, "self_reference"); _fingerprintString(ctx, "true"); } if (node->subquery != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "subquery"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintQuery(ctx, node->subquery, node, "subquery", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->tablefunc != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "tablefunc"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTableFunc(ctx, node->tablefunc, node, "tablefunc", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->tablesample != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "tablesample"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTableSampleClause(ctx, node->tablesample, node, "tablesample", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { int x; Bitmapset *bms = bms_copy(node->updatedCols); _fingerprintString(ctx, "updatedCols"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } if (node->values_lists != NULL && node->values_lists->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "values_lists"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->values_lists, node, "values_lists", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintRangeTblFunction(FingerprintContext *ctx, const RangeTblFunction *node, const void *parent, const char *field_name, unsigned int depth) { if (node->funccolcollations != NULL && node->funccolcollations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funccolcollations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->funccolcollations, node, "funccolcollations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->funccolcount != 0) { char buffer[50]; sprintf(buffer, "%d", node->funccolcount); _fingerprintString(ctx, "funccolcount"); _fingerprintString(ctx, buffer); } if (node->funccolnames != NULL && node->funccolnames->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funccolnames"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->funccolnames, node, "funccolnames", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->funccoltypes != NULL && node->funccoltypes->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funccoltypes"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->funccoltypes, node, "funccoltypes", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->funccoltypmods != NULL && node->funccoltypmods->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funccoltypmods"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->funccoltypmods, node, "funccoltypmods", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->funcexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "funcexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->funcexpr, node, "funcexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { int x; Bitmapset *bms = bms_copy(node->funcparams); _fingerprintString(ctx, "funcparams"); while ((x = bms_first_member(bms)) >= 0) { char buffer[50]; sprintf(buffer, "%d", x); _fingerprintString(ctx, buffer); } bms_free(bms); } } static void _fingerprintTableSampleClause(FingerprintContext *ctx, const TableSampleClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args != NULL && node->args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->args, node, "args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->repeatable != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "repeatable"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->repeatable, node, "repeatable", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->tsmhandler != 0) { char buffer[50]; sprintf(buffer, "%d", node->tsmhandler); _fingerprintString(ctx, "tsmhandler"); _fingerprintString(ctx, buffer); } } static void _fingerprintWithCheckOption(FingerprintContext *ctx, const WithCheckOption *node, const void *parent, const char *field_name, unsigned int depth) { if (node->cascaded) { _fingerprintString(ctx, "cascaded"); _fingerprintString(ctx, "true"); } if (true) { _fingerprintString(ctx, "kind"); _fingerprintString(ctx, _enumToStringWCOKind(node->kind)); } if (node->polname != NULL) { _fingerprintString(ctx, "polname"); _fingerprintString(ctx, node->polname); } if (node->qual != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "qual"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->qual, node, "qual", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->relname != NULL) { _fingerprintString(ctx, "relname"); _fingerprintString(ctx, node->relname); } } static void _fingerprintSortGroupClause(FingerprintContext *ctx, const SortGroupClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->eqop != 0) { char buffer[50]; sprintf(buffer, "%d", node->eqop); _fingerprintString(ctx, "eqop"); _fingerprintString(ctx, buffer); } if (node->hashable) { _fingerprintString(ctx, "hashable"); _fingerprintString(ctx, "true"); } if (node->nulls_first) { _fingerprintString(ctx, "nulls_first"); _fingerprintString(ctx, "true"); } if (node->sortop != 0) { char buffer[50]; sprintf(buffer, "%d", node->sortop); _fingerprintString(ctx, "sortop"); _fingerprintString(ctx, buffer); } if (node->tleSortGroupRef != 0) { char buffer[50]; sprintf(buffer, "%d", node->tleSortGroupRef); _fingerprintString(ctx, "tleSortGroupRef"); _fingerprintString(ctx, buffer); } } static void _fingerprintGroupingSet(FingerprintContext *ctx, const GroupingSet *node, const void *parent, const char *field_name, unsigned int depth) { if (node->content != NULL && node->content->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "content"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->content, node, "content", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "kind"); _fingerprintString(ctx, _enumToStringGroupingSetKind(node->kind)); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintWindowClause(FingerprintContext *ctx, const WindowClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->copiedOrder) { _fingerprintString(ctx, "copiedOrder"); _fingerprintString(ctx, "true"); } if (node->endInRangeFunc != 0) { char buffer[50]; sprintf(buffer, "%d", node->endInRangeFunc); _fingerprintString(ctx, "endInRangeFunc"); _fingerprintString(ctx, buffer); } if (node->endOffset != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "endOffset"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->endOffset, node, "endOffset", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->frameOptions != 0) { char buffer[50]; sprintf(buffer, "%d", node->frameOptions); _fingerprintString(ctx, "frameOptions"); _fingerprintString(ctx, buffer); } if (node->inRangeAsc) { _fingerprintString(ctx, "inRangeAsc"); _fingerprintString(ctx, "true"); } if (node->inRangeColl != 0) { char buffer[50]; sprintf(buffer, "%d", node->inRangeColl); _fingerprintString(ctx, "inRangeColl"); _fingerprintString(ctx, buffer); } if (node->inRangeNullsFirst) { _fingerprintString(ctx, "inRangeNullsFirst"); _fingerprintString(ctx, "true"); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (node->orderClause != NULL && node->orderClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "orderClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->orderClause, node, "orderClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->partitionClause != NULL && node->partitionClause->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "partitionClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->partitionClause, node, "partitionClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->refname != NULL) { _fingerprintString(ctx, "refname"); _fingerprintString(ctx, node->refname); } if (node->startInRangeFunc != 0) { char buffer[50]; sprintf(buffer, "%d", node->startInRangeFunc); _fingerprintString(ctx, "startInRangeFunc"); _fingerprintString(ctx, buffer); } if (node->startOffset != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "startOffset"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->startOffset, node, "startOffset", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->winref != 0) { char buffer[50]; sprintf(buffer, "%d", node->winref); _fingerprintString(ctx, "winref"); _fingerprintString(ctx, buffer); } } static void _fingerprintObjectWithArgs(FingerprintContext *ctx, const ObjectWithArgs *node, const void *parent, const char *field_name, unsigned int depth) { if (node->args_unspecified) { _fingerprintString(ctx, "args_unspecified"); _fingerprintString(ctx, "true"); } if (node->objargs != NULL && node->objargs->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "objargs"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->objargs, node, "objargs", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->objname != NULL && node->objname->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "objname"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->objname, node, "objname", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintAccessPriv(FingerprintContext *ctx, const AccessPriv *node, const void *parent, const char *field_name, unsigned int depth) { if (node->cols != NULL && node->cols->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "cols"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->cols, node, "cols", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->priv_name != NULL) { _fingerprintString(ctx, "priv_name"); _fingerprintString(ctx, node->priv_name); } } static void _fingerprintCreateOpClassItem(FingerprintContext *ctx, const CreateOpClassItem *node, const void *parent, const char *field_name, unsigned int depth) { if (node->class_args != NULL && node->class_args->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "class_args"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->class_args, node, "class_args", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->itemtype != 0) { char buffer[50]; sprintf(buffer, "%d", node->itemtype); _fingerprintString(ctx, "itemtype"); _fingerprintString(ctx, buffer); } if (node->name != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintObjectWithArgs(ctx, node->name, node, "name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->number != 0) { char buffer[50]; sprintf(buffer, "%d", node->number); _fingerprintString(ctx, "number"); _fingerprintString(ctx, buffer); } if (node->order_family != NULL && node->order_family->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "order_family"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->order_family, node, "order_family", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->storedtype != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "storedtype"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->storedtype, node, "storedtype", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintTableLikeClause(FingerprintContext *ctx, const TableLikeClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->options != 0) { char buffer[50]; sprintf(buffer, "%d", node->options); _fingerprintString(ctx, "options"); _fingerprintString(ctx, buffer); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintFunctionParameter(FingerprintContext *ctx, const FunctionParameter *node, const void *parent, const char *field_name, unsigned int depth) { if (node->argType != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "argType"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->argType, node, "argType", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->defexpr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "defexpr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->defexpr, node, "defexpr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "mode"); _fingerprintString(ctx, _enumToStringFunctionParameterMode(node->mode)); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } } static void _fingerprintLockingClause(FingerprintContext *ctx, const LockingClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->lockedRels != NULL && node->lockedRels->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "lockedRels"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->lockedRels, node, "lockedRels", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "strength"); _fingerprintString(ctx, _enumToStringLockClauseStrength(node->strength)); } if (true) { _fingerprintString(ctx, "waitPolicy"); _fingerprintString(ctx, _enumToStringLockWaitPolicy(node->waitPolicy)); } } static void _fingerprintRowMarkClause(FingerprintContext *ctx, const RowMarkClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->pushedDown) { _fingerprintString(ctx, "pushedDown"); _fingerprintString(ctx, "true"); } if (node->rti != 0) { char buffer[50]; sprintf(buffer, "%d", node->rti); _fingerprintString(ctx, "rti"); _fingerprintString(ctx, buffer); } if (true) { _fingerprintString(ctx, "strength"); _fingerprintString(ctx, _enumToStringLockClauseStrength(node->strength)); } if (true) { _fingerprintString(ctx, "waitPolicy"); _fingerprintString(ctx, _enumToStringLockWaitPolicy(node->waitPolicy)); } } static void _fingerprintXmlSerialize(FingerprintContext *ctx, const XmlSerialize *node, const void *parent, const char *field_name, unsigned int depth) { if (node->expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->typeName != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "typeName"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintTypeName(ctx, node->typeName, node, "typeName", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "xmloption"); _fingerprintString(ctx, _enumToStringXmlOptionType(node->xmloption)); } } static void _fingerprintWithClause(FingerprintContext *ctx, const WithClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->ctes != NULL && node->ctes->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ctes"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->ctes, node, "ctes", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->recursive) { _fingerprintString(ctx, "recursive"); _fingerprintString(ctx, "true"); } } static void _fingerprintInferClause(FingerprintContext *ctx, const InferClause *node, const void *parent, const char *field_name, unsigned int depth) { if (node->conname != NULL) { _fingerprintString(ctx, "conname"); _fingerprintString(ctx, node->conname); } if (node->indexElems != NULL && node->indexElems->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "indexElems"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->indexElems, node, "indexElems", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->whereClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "whereClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintOnConflictClause(FingerprintContext *ctx, const OnConflictClause *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "action"); _fingerprintString(ctx, _enumToStringOnConflictAction(node->action)); } if (node->infer != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "infer"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintInferClause(ctx, node->infer, node, "infer", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->targetList != NULL && node->targetList->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "targetList"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->targetList, node, "targetList", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->whereClause != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "whereClause"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->whereClause, node, "whereClause", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintCommonTableExpr(FingerprintContext *ctx, const CommonTableExpr *node, const void *parent, const char *field_name, unsigned int depth) { if (node->aliascolnames != NULL && node->aliascolnames->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "aliascolnames"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->aliascolnames, node, "aliascolnames", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->ctecolcollations != NULL && node->ctecolcollations->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ctecolcollations"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->ctecolcollations, node, "ctecolcollations", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->ctecolnames != NULL && node->ctecolnames->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ctecolnames"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->ctecolnames, node, "ctecolnames", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->ctecoltypes != NULL && node->ctecoltypes->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ctecoltypes"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->ctecoltypes, node, "ctecoltypes", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->ctecoltypmods != NULL && node->ctecoltypmods->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ctecoltypmods"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->ctecoltypmods, node, "ctecoltypmods", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (true) { _fingerprintString(ctx, "ctematerialized"); _fingerprintString(ctx, _enumToStringCTEMaterialize(node->ctematerialized)); } if (node->ctename != NULL) { _fingerprintString(ctx, "ctename"); _fingerprintString(ctx, node->ctename); } if (node->ctequery != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "ctequery"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->ctequery, node, "ctequery", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->cterecursive) { _fingerprintString(ctx, "cterecursive"); _fingerprintString(ctx, "true"); } if (node->cterefcount != 0) { char buffer[50]; sprintf(buffer, "%d", node->cterefcount); _fingerprintString(ctx, "cterefcount"); _fingerprintString(ctx, buffer); } // Intentionally ignoring node->location for fingerprinting } static void _fingerprintRoleSpec(FingerprintContext *ctx, const RoleSpec *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->rolename != NULL) { _fingerprintString(ctx, "rolename"); _fingerprintString(ctx, node->rolename); } if (true) { _fingerprintString(ctx, "roletype"); _fingerprintString(ctx, _enumToStringRoleSpecType(node->roletype)); } } static void _fingerprintTriggerTransition(FingerprintContext *ctx, const TriggerTransition *node, const void *parent, const char *field_name, unsigned int depth) { if (node->isNew) { _fingerprintString(ctx, "isNew"); _fingerprintString(ctx, "true"); } if (node->isTable) { _fingerprintString(ctx, "isTable"); _fingerprintString(ctx, "true"); } if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } } static void _fingerprintPartitionElem(FingerprintContext *ctx, const PartitionElem *node, const void *parent, const char *field_name, unsigned int depth) { if (node->collation != NULL && node->collation->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "collation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->collation, node, "collation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->expr != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "expr"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->expr, node, "expr", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->name != NULL) { _fingerprintString(ctx, "name"); _fingerprintString(ctx, node->name); } if (node->opclass != NULL && node->opclass->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "opclass"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->opclass, node, "opclass", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintPartitionSpec(FingerprintContext *ctx, const PartitionSpec *node, const void *parent, const char *field_name, unsigned int depth) { // Intentionally ignoring node->location for fingerprinting if (node->partParams != NULL && node->partParams->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "partParams"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->partParams, node, "partParams", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->strategy != NULL) { _fingerprintString(ctx, "strategy"); _fingerprintString(ctx, node->strategy); } } static void _fingerprintPartitionBoundSpec(FingerprintContext *ctx, const PartitionBoundSpec *node, const void *parent, const char *field_name, unsigned int depth) { if (node->is_default) { _fingerprintString(ctx, "is_default"); _fingerprintString(ctx, "true"); } if (node->listdatums != NULL && node->listdatums->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "listdatums"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->listdatums, node, "listdatums", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } // Intentionally ignoring node->location for fingerprinting if (node->lowerdatums != NULL && node->lowerdatums->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "lowerdatums"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->lowerdatums, node, "lowerdatums", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->modulus != 0) { char buffer[50]; sprintf(buffer, "%d", node->modulus); _fingerprintString(ctx, "modulus"); _fingerprintString(ctx, buffer); } if (node->remainder != 0) { char buffer[50]; sprintf(buffer, "%d", node->remainder); _fingerprintString(ctx, "remainder"); _fingerprintString(ctx, buffer); } if (node->strategy != 0) { char buffer[2] = {node->strategy, '\0'}; _fingerprintString(ctx, "strategy"); _fingerprintString(ctx, buffer); } if (node->upperdatums != NULL && node->upperdatums->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "upperdatums"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->upperdatums, node, "upperdatums", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintPartitionRangeDatum(FingerprintContext *ctx, const PartitionRangeDatum *node, const void *parent, const char *field_name, unsigned int depth) { if (true) { _fingerprintString(ctx, "kind"); _fingerprintString(ctx, _enumToStringPartitionRangeDatumKind(node->kind)); } // Intentionally ignoring node->location for fingerprinting if (node->value != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "value"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->value, node, "value", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintPartitionCmd(FingerprintContext *ctx, const PartitionCmd *node, const void *parent, const char *field_name, unsigned int depth) { if (node->bound != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "bound"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintPartitionBoundSpec(ctx, node->bound, node, "bound", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->name != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "name"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->name, node, "name", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintVacuumRelation(FingerprintContext *ctx, const VacuumRelation *node, const void *parent, const char *field_name, unsigned int depth) { if (node->oid != 0) { char buffer[50]; sprintf(buffer, "%d", node->oid); _fingerprintString(ctx, "oid"); _fingerprintString(ctx, buffer); } if (node->relation != NULL) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "relation"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintRangeVar(ctx, node->relation, node, "relation", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } if (node->va_cols != NULL && node->va_cols->length > 0) { XXH3_state_t* prev = XXH3_createState(); XXH64_hash_t hash; XXH3_copyState(prev, ctx->xxh_state); _fingerprintString(ctx, "va_cols"); hash = XXH3_64bits_digest(ctx->xxh_state); _fingerprintNode(ctx, node->va_cols, node, "va_cols", depth + 1); if (hash == XXH3_64bits_digest(ctx->xxh_state)) { XXH3_copyState(ctx->xxh_state, prev); if (ctx->write_tokens) dlist_delete(dlist_tail_node(&ctx->tokens)); } XXH3_freeState(prev); } } static void _fingerprintInlineCodeBlock(FingerprintContext *ctx, const InlineCodeBlock *node, const void *parent, const char *field_name, unsigned int depth) { if (node->atomic) { _fingerprintString(ctx, "atomic"); _fingerprintString(ctx, "true"); } if (node->langIsTrusted) { _fingerprintString(ctx, "langIsTrusted"); _fingerprintString(ctx, "true"); } if (node->langOid != 0) { char buffer[50]; sprintf(buffer, "%d", node->langOid); _fingerprintString(ctx, "langOid"); _fingerprintString(ctx, buffer); } if (node->source_text != NULL) { _fingerprintString(ctx, "source_text"); _fingerprintString(ctx, node->source_text); } } static void _fingerprintCallContext(FingerprintContext *ctx, const CallContext *node, const void *parent, const char *field_name, unsigned int depth) { if (node->atomic) { _fingerprintString(ctx, "atomic"); _fingerprintString(ctx, "true"); } } libpg_query-13-2.1.0/src/pg_query_internal.h000066400000000000000000000010151413137616400207470ustar00rootroot00000000000000#ifndef PG_QUERY_INTERNAL_H #define PG_QUERY_INTERNAL_H #include "postgres.h" #include "utils/memutils.h" #include "nodes/pg_list.h" #define STDERR_BUFFER_LEN 4096 #define DEBUG typedef struct { List *tree; char* stderr_buffer; PgQueryError* error; } PgQueryInternalParsetreeAndError; PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input); void pg_query_free_error(PgQueryError *error); MemoryContext pg_query_enter_memory_context(); void pg_query_exit_memory_context(MemoryContext ctx); #endif libpg_query-13-2.1.0/src/pg_query_json_helper.c000066400000000000000000000023601413137616400214420ustar00rootroot00000000000000#include "lib/stringinfo.h" #define booltostr(x) ((x) ? "true" : "false") static void removeTrailingDelimiter(StringInfo str) { if (str->len >= 1 && str->data[str->len - 1] == ',') { str->len -= 1; str->data[str->len] = '\0'; } } static void _outToken(StringInfo buf, const char *str) { if (str == NULL) { appendStringInfoString(buf, "null"); return; } // copied directly from https://github.com/postgres/postgres/blob/master/src/backend/utils/adt/json.c#L2428 const char *p; appendStringInfoCharMacro(buf, '"'); for (p = str; *p; p++) { switch (*p) { case '\b': appendStringInfoString(buf, "\\b"); break; case '\f': appendStringInfoString(buf, "\\f"); break; case '\n': appendStringInfoString(buf, "\\n"); break; case '\r': appendStringInfoString(buf, "\\r"); break; case '\t': appendStringInfoString(buf, "\\t"); break; case '"': appendStringInfoString(buf, "\\\""); break; case '\\': appendStringInfoString(buf, "\\\\"); break; default: if ((unsigned char) *p < ' ' || *p == '<' || *p == '>') appendStringInfo(buf, "\\u%04x", (int) *p); else appendStringInfoCharMacro(buf, *p); break; } } appendStringInfoCharMacro(buf, '"'); } libpg_query-13-2.1.0/src/pg_query_json_plpgsql.c000066400000000000000000000505511413137616400216520ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_json_plpgsql.h" #include "pg_query_json_helper.c" /* Write the label for the node type */ #define WRITE_NODE_TYPE(nodelabel) \ appendStringInfoString(out, "\"" nodelabel "\":{") /* Write an integer field */ #define WRITE_INT_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%d,", node->fldname); \ } /* Write a long-integer field */ #define WRITE_LONG_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%ld,", node->fldname); \ } /* Write an enumerated-type field as an integer code */ #define WRITE_ENUM_FIELD(outname, outname_json, fldname) \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%d,", \ (int) node->fldname) /* Write a boolean field */ #define WRITE_BOOL_FIELD(outname, outname_json, fldname) \ if (node->fldname) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%s,", \ booltostr(node->fldname)); \ } /* Write a character-string (possibly NULL) field */ #define WRITE_STRING_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ _outToken(out, node->fldname); \ appendStringInfo(out, ","); \ } #define WRITE_INT_VALUE(fldname, value) \ if (value != 0) { \ appendStringInfo(out, "\"" CppAsString(fldname) "\":%d,", value); \ } #define WRITE_STRING_VALUE(fldname, value) \ if (true) { \ appendStringInfo(out, "\"" CppAsString(fldname) "\":"); \ _outToken(out, value); \ appendStringInfo(out, ","); \ } #define WRITE_OBJ_FIELD(fldname, outfunc) \ if (node->fldname != NULL) { \ appendStringInfo(out, "\"" CppAsString(fldname) "\":{"); \ outfunc(out, node->fldname); \ removeTrailingDelimiter(out); \ appendStringInfo(out, "}},"); \ } #define WRITE_LIST_FIELD(fldname, fldtype, outfunc) \ if (node->fldname != NULL) { \ ListCell *lc; \ appendStringInfo(out, "\"" CppAsString(fldname) "\":["); \ foreach(lc, node->fldname) { \ appendStringInfoString(out, "{"); \ outfunc(out, (fldtype *) lfirst(lc)); \ removeTrailingDelimiter(out); \ appendStringInfoString(out, "}},"); \ } \ removeTrailingDelimiter(out); \ appendStringInfoString(out, "],"); \ } #define WRITE_STATEMENTS_FIELD(fldname) \ if (node->fldname != NULL) { \ ListCell *lc; \ appendStringInfo(out, "\"" CppAsString(fldname) "\":["); \ foreach(lc, node->fldname) { \ dump_stmt(out, (PLpgSQL_stmt *) lfirst(lc)); \ } \ removeTrailingDelimiter(out); \ appendStringInfoString(out, "],"); \ } #define WRITE_EXPR_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_expr) #define WRITE_BLOCK_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_block) #define WRITE_RECORD_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_record) #define WRITE_ROW_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_row) #define WRITE_VAR_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_var) #define WRITE_VARIABLE_FIELD(fldname) WRITE_OBJ_FIELD(fldname, dump_variable); static void dump_record(StringInfo out, PLpgSQL_rec *stmt); static void dump_row(StringInfo out, PLpgSQL_row *stmt); static void dump_var(StringInfo out, PLpgSQL_var *stmt); static void dump_variable(StringInfo out, PLpgSQL_variable *stmt); static void dump_record_field(StringInfo out, PLpgSQL_recfield *node); static void dump_array_elem(StringInfo out, PLpgSQL_arrayelem *node); static void dump_stmt(StringInfo out, PLpgSQL_stmt *stmt); static void dump_block(StringInfo out, PLpgSQL_stmt_block *block); static void dump_exception_block(StringInfo out, PLpgSQL_exception_block *node); static void dump_assign(StringInfo out, PLpgSQL_stmt_assign *stmt); static void dump_if(StringInfo out, PLpgSQL_stmt_if *stmt); static void dump_if_elsif(StringInfo out, PLpgSQL_if_elsif *node); static void dump_case(StringInfo out, PLpgSQL_stmt_case *stmt); static void dump_case_when(StringInfo out, PLpgSQL_case_when *node); static void dump_loop(StringInfo out, PLpgSQL_stmt_loop *stmt); static void dump_while(StringInfo out, PLpgSQL_stmt_while *stmt); static void dump_fori(StringInfo out, PLpgSQL_stmt_fori *stmt); static void dump_fors(StringInfo out, PLpgSQL_stmt_fors *stmt); static void dump_forc(StringInfo out, PLpgSQL_stmt_forc *stmt); static void dump_foreach_a(StringInfo out, PLpgSQL_stmt_foreach_a *stmt); static void dump_exit(StringInfo out, PLpgSQL_stmt_exit *stmt); static void dump_return(StringInfo out, PLpgSQL_stmt_return *stmt); static void dump_return_next(StringInfo out, PLpgSQL_stmt_return_next *stmt); static void dump_return_query(StringInfo out, PLpgSQL_stmt_return_query *stmt); static void dump_raise(StringInfo out, PLpgSQL_stmt_raise *stmt); static void dump_raise_option(StringInfo out, PLpgSQL_raise_option *node); static void dump_execsql(StringInfo out, PLpgSQL_stmt_execsql *stmt); static void dump_dynexecute(StringInfo out, PLpgSQL_stmt_dynexecute *stmt); static void dump_dynfors(StringInfo out, PLpgSQL_stmt_dynfors *stmt); static void dump_getdiag(StringInfo out, PLpgSQL_stmt_getdiag *stmt); static void dump_getdiag_item(StringInfo out, PLpgSQL_diag_item *node); static void dump_open(StringInfo out, PLpgSQL_stmt_open *stmt); static void dump_fetch(StringInfo out, PLpgSQL_stmt_fetch *stmt); static void dump_close(StringInfo out, PLpgSQL_stmt_close *stmt); static void dump_perform(StringInfo out, PLpgSQL_stmt_perform *stmt); static void dump_expr(StringInfo out, PLpgSQL_expr *expr); static void dump_function(StringInfo out, PLpgSQL_function *func); static void dump_exception(StringInfo out, PLpgSQL_exception *node); static void dump_condition(StringInfo out, PLpgSQL_condition *node); static void dump_type(StringInfo out, PLpgSQL_type *node); static void dump_stmt(StringInfo out, PLpgSQL_stmt *node) { appendStringInfoChar(out, '{'); switch (node->cmd_type) { case PLPGSQL_STMT_BLOCK: dump_block(out, (PLpgSQL_stmt_block *) node); break; case PLPGSQL_STMT_ASSIGN: dump_assign(out, (PLpgSQL_stmt_assign *) node); break; case PLPGSQL_STMT_IF: dump_if(out, (PLpgSQL_stmt_if *) node); break; case PLPGSQL_STMT_CASE: dump_case(out, (PLpgSQL_stmt_case *) node); break; case PLPGSQL_STMT_LOOP: dump_loop(out, (PLpgSQL_stmt_loop *) node); break; case PLPGSQL_STMT_WHILE: dump_while(out, (PLpgSQL_stmt_while *) node); break; case PLPGSQL_STMT_FORI: dump_fori(out, (PLpgSQL_stmt_fori *) node); break; case PLPGSQL_STMT_FORS: dump_fors(out, (PLpgSQL_stmt_fors *) node); break; case PLPGSQL_STMT_FORC: dump_forc(out, (PLpgSQL_stmt_forc *) node); break; case PLPGSQL_STMT_FOREACH_A: dump_foreach_a(out, (PLpgSQL_stmt_foreach_a *) node); break; case PLPGSQL_STMT_EXIT: dump_exit(out, (PLpgSQL_stmt_exit *) node); break; case PLPGSQL_STMT_RETURN: dump_return(out, (PLpgSQL_stmt_return *) node); break; case PLPGSQL_STMT_RETURN_NEXT: dump_return_next(out, (PLpgSQL_stmt_return_next *) node); break; case PLPGSQL_STMT_RETURN_QUERY: dump_return_query(out, (PLpgSQL_stmt_return_query *) node); break; case PLPGSQL_STMT_RAISE: dump_raise(out, (PLpgSQL_stmt_raise *) node); break; case PLPGSQL_STMT_EXECSQL: dump_execsql(out, (PLpgSQL_stmt_execsql *) node); break; case PLPGSQL_STMT_DYNEXECUTE: dump_dynexecute(out, (PLpgSQL_stmt_dynexecute *) node); break; case PLPGSQL_STMT_DYNFORS: dump_dynfors(out, (PLpgSQL_stmt_dynfors *) node); break; case PLPGSQL_STMT_GETDIAG: dump_getdiag(out, (PLpgSQL_stmt_getdiag *) node); break; case PLPGSQL_STMT_OPEN: dump_open(out, (PLpgSQL_stmt_open *) node); break; case PLPGSQL_STMT_FETCH: dump_fetch(out, (PLpgSQL_stmt_fetch *) node); break; case PLPGSQL_STMT_CLOSE: dump_close(out, (PLpgSQL_stmt_close *) node); break; case PLPGSQL_STMT_PERFORM: dump_perform(out, (PLpgSQL_stmt_perform *) node); break; default: elog(ERROR, "unrecognized cmd_type: %d", node->cmd_type); break; } removeTrailingDelimiter(out); appendStringInfoString(out, "}},"); } static void dump_block(StringInfo out, PLpgSQL_stmt_block *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_block"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_STRING_FIELD(label, label, label); WRITE_STATEMENTS_FIELD(body); WRITE_OBJ_FIELD(exceptions, dump_exception_block); removeTrailingDelimiter(out); } static void dump_exception_block(StringInfo out, PLpgSQL_exception_block *node) { WRITE_NODE_TYPE("PLpgSQL_exception_block"); WRITE_LIST_FIELD(exc_list, PLpgSQL_exception, dump_exception); } static void dump_exception(StringInfo out, PLpgSQL_exception *node) { PLpgSQL_condition *cond; WRITE_NODE_TYPE("PLpgSQL_exception"); appendStringInfo(out, "\"conditions\":["); for (cond = node->conditions; cond; cond = cond->next) { appendStringInfoString(out, "{"); dump_condition(out, cond); removeTrailingDelimiter(out); appendStringInfoString(out, "}},"); } removeTrailingDelimiter(out); appendStringInfoString(out, "],"); WRITE_STATEMENTS_FIELD(action); } static void dump_condition(StringInfo out, PLpgSQL_condition *node) { WRITE_NODE_TYPE("PLpgSQL_condition"); WRITE_STRING_FIELD(condname, condname, condname); } static void dump_assign(StringInfo out, PLpgSQL_stmt_assign *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_assign"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_INT_FIELD(varno, varno, varno); WRITE_EXPR_FIELD(expr); } static void dump_if(StringInfo out, PLpgSQL_stmt_if *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_if"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(cond); WRITE_STATEMENTS_FIELD(then_body); WRITE_LIST_FIELD(elsif_list, PLpgSQL_if_elsif, dump_if_elsif); WRITE_STATEMENTS_FIELD(else_body); } static void dump_if_elsif(StringInfo out, PLpgSQL_if_elsif *node) { WRITE_NODE_TYPE("PLpgSQL_if_elsif"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(cond); WRITE_STATEMENTS_FIELD(stmts); } static void dump_case(StringInfo out, PLpgSQL_stmt_case *node) { ListCell *l; WRITE_NODE_TYPE("PLpgSQL_stmt_case"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(t_expr); WRITE_INT_FIELD(t_varno, t_varno, t_varno); WRITE_LIST_FIELD(case_when_list, PLpgSQL_case_when, dump_case_when); WRITE_BOOL_FIELD(have_else, have_else, have_else); WRITE_STATEMENTS_FIELD(else_stmts); } static void dump_case_when(StringInfo out, PLpgSQL_case_when *node) { WRITE_NODE_TYPE("PLpgSQL_case_when"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(expr); WRITE_STATEMENTS_FIELD(stmts); } static void dump_loop(StringInfo out, PLpgSQL_stmt_loop *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_loop"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_STRING_FIELD(label, label, label); WRITE_STATEMENTS_FIELD(body); } static void dump_while(StringInfo out, PLpgSQL_stmt_while *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_while"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_STRING_FIELD(label, label, label); WRITE_EXPR_FIELD(cond); WRITE_STATEMENTS_FIELD(body); } /* FOR statement with integer loopvar */ static void dump_fori(StringInfo out, PLpgSQL_stmt_fori *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_fori"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_STRING_FIELD(label, label, label); WRITE_VAR_FIELD(var); WRITE_EXPR_FIELD(lower); WRITE_EXPR_FIELD(upper); WRITE_EXPR_FIELD(step); WRITE_BOOL_FIELD(reverse, reverse, reverse); WRITE_STATEMENTS_FIELD(body); } static void dump_fors(StringInfo out, PLpgSQL_stmt_fors *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_fors"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_STRING_FIELD(label, label, label); WRITE_VARIABLE_FIELD(var); WRITE_STATEMENTS_FIELD(body); WRITE_EXPR_FIELD(query); } static void dump_forc(StringInfo out, PLpgSQL_stmt_forc *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_forc"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_STRING_FIELD(label, label, label); WRITE_VARIABLE_FIELD(var); WRITE_STATEMENTS_FIELD(body); WRITE_INT_FIELD(curvar, curvar, curvar); WRITE_EXPR_FIELD(argquery); } static void dump_foreach_a(StringInfo out, PLpgSQL_stmt_foreach_a *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_foreach_a"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_STRING_FIELD(label, label, label); WRITE_INT_FIELD(varno, varno, varno); WRITE_INT_FIELD(slice, slice, slice); WRITE_EXPR_FIELD(expr); WRITE_STATEMENTS_FIELD(body); } static void dump_open(StringInfo out, PLpgSQL_stmt_open *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_open"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_INT_FIELD(curvar, curvar, curvar); WRITE_INT_FIELD(cursor_options, cursor_options, cursor_options); WRITE_EXPR_FIELD(argquery); WRITE_EXPR_FIELD(query); WRITE_EXPR_FIELD(dynquery); WRITE_LIST_FIELD(params, PLpgSQL_expr, dump_expr); } static void dump_fetch(StringInfo out, PLpgSQL_stmt_fetch *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_fetch"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_VARIABLE_FIELD(target); WRITE_INT_FIELD(curvar, curvar, curvar); WRITE_ENUM_FIELD(direction, direction, direction); WRITE_LONG_FIELD(how_many, how_many, how_many); WRITE_EXPR_FIELD(expr); WRITE_BOOL_FIELD(is_move, is_move, is_move); WRITE_BOOL_FIELD(returns_multiple_rows, returns_multiple_rows, returns_multiple_rows); } static void dump_close(StringInfo out, PLpgSQL_stmt_close *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_close"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_INT_FIELD(curvar, curvar, curvar); } static void dump_perform(StringInfo out, PLpgSQL_stmt_perform *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_perform"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(expr); } static void dump_exit(StringInfo out, PLpgSQL_stmt_exit *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_exit"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_BOOL_FIELD(is_exit, is_exit, is_exit); WRITE_STRING_FIELD(label, label, label); WRITE_EXPR_FIELD(cond); } static void dump_return(StringInfo out, PLpgSQL_stmt_return *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_return"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(expr); //WRITE_INT_FIELD(retvarno); } static void dump_return_next(StringInfo out, PLpgSQL_stmt_return_next *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_return_next"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(expr); //WRITE_INT_FIELD(retvarno); } static void dump_return_query(StringInfo out, PLpgSQL_stmt_return_query *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_return_query"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(query); WRITE_EXPR_FIELD(dynquery); WRITE_LIST_FIELD(params, PLpgSQL_expr, dump_expr); } static void dump_raise(StringInfo out, PLpgSQL_stmt_raise *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_raise"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_INT_FIELD(elog_level, elog_level, elog_level); WRITE_STRING_FIELD(condname, condname, condname); WRITE_STRING_FIELD(message, message, message); WRITE_LIST_FIELD(params, PLpgSQL_expr, dump_expr); WRITE_LIST_FIELD(options, PLpgSQL_raise_option, dump_raise_option); } static void dump_raise_option(StringInfo out, PLpgSQL_raise_option *node) { WRITE_NODE_TYPE("PLpgSQL_raise_option"); WRITE_ENUM_FIELD(opt_type, opt_type, opt_type); WRITE_EXPR_FIELD(expr); } static void dump_execsql(StringInfo out, PLpgSQL_stmt_execsql *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_execsql"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(sqlstmt); //WRITE_BOOL_FIELD(mod_stmt); // This is only populated when executing the function WRITE_BOOL_FIELD(into, into, into); WRITE_BOOL_FIELD(strict, strict, strict); WRITE_VARIABLE_FIELD(target); } static void dump_dynexecute(StringInfo out, PLpgSQL_stmt_dynexecute *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_dynexecute"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_EXPR_FIELD(query); WRITE_BOOL_FIELD(into, into, into); WRITE_BOOL_FIELD(strict, strict, strict); WRITE_VARIABLE_FIELD(target); WRITE_LIST_FIELD(params, PLpgSQL_expr, dump_expr); } static void dump_dynfors(StringInfo out, PLpgSQL_stmt_dynfors *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_dynfors"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_STRING_FIELD(label, label, label); WRITE_VARIABLE_FIELD(var); WRITE_STATEMENTS_FIELD(body); WRITE_EXPR_FIELD(query); WRITE_LIST_FIELD(params, PLpgSQL_expr, dump_expr); } static void dump_getdiag(StringInfo out, PLpgSQL_stmt_getdiag *node) { WRITE_NODE_TYPE("PLpgSQL_stmt_getdiag"); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_BOOL_FIELD(is_stacked, is_stacked, is_stacked); WRITE_LIST_FIELD(diag_items, PLpgSQL_diag_item, dump_getdiag_item); } static void dump_getdiag_item(StringInfo out, PLpgSQL_diag_item *node) { WRITE_NODE_TYPE("PLpgSQL_diag_item"); WRITE_STRING_VALUE(kind, plpgsql_getdiag_kindname(node->kind)); WRITE_INT_FIELD(target, target, target); } static void dump_expr(StringInfo out, PLpgSQL_expr *node) { WRITE_NODE_TYPE("PLpgSQL_expr"); WRITE_STRING_FIELD(query, query, query); } static void dump_function(StringInfo out, PLpgSQL_function *node) { int i; PLpgSQL_datum *d; WRITE_NODE_TYPE("PLpgSQL_function"); WRITE_INT_FIELD(new_varno, new_varno, new_varno); WRITE_INT_FIELD(old_varno, old_varno, old_varno); appendStringInfoString(out, "\"datums\":"); appendStringInfoChar(out, '['); for (i = 0; i < node->ndatums; i++) { appendStringInfoChar(out, '{'); d = node->datums[i]; switch (d->dtype) { case PLPGSQL_DTYPE_VAR: dump_var(out, (PLpgSQL_var *) d); break; case PLPGSQL_DTYPE_ROW: dump_row(out, (PLpgSQL_row *) d); break; case PLPGSQL_DTYPE_REC: dump_record(out, (PLpgSQL_rec *) d); break; case PLPGSQL_DTYPE_RECFIELD: dump_record_field(out, (PLpgSQL_recfield *) d); break; case PLPGSQL_DTYPE_ARRAYELEM: dump_array_elem(out, (PLpgSQL_arrayelem *) d); break; default: elog(WARNING, "could not dump unrecognized dtype: %d", (int) d->dtype); } removeTrailingDelimiter(out); appendStringInfoString(out, "}},"); } removeTrailingDelimiter(out); appendStringInfoString(out, "],"); WRITE_BLOCK_FIELD(action); } static void dump_var(StringInfo out, PLpgSQL_var *node) { WRITE_NODE_TYPE("PLpgSQL_var"); WRITE_STRING_FIELD(refname, refname, refname); WRITE_INT_FIELD(lineno, lineno, lineno); WRITE_OBJ_FIELD(datatype, dump_type); WRITE_BOOL_FIELD(isconst, isconst, isconst); WRITE_BOOL_FIELD(notnull, notnull, notnull); WRITE_EXPR_FIELD(default_val); WRITE_EXPR_FIELD(cursor_explicit_expr); WRITE_INT_FIELD(cursor_explicit_argrow, cursor_explicit_argrow, cursor_explicit_argrow); WRITE_INT_FIELD(cursor_options, cursor_options, cursor_options); } static void dump_variable(StringInfo out, PLpgSQL_variable *node) { switch (node->dtype) { case PLPGSQL_DTYPE_REC: dump_record(out, (PLpgSQL_rec *) node); break; case PLPGSQL_DTYPE_VAR: dump_var(out, (PLpgSQL_var *) node); break; case PLPGSQL_DTYPE_ROW: dump_row(out, (PLpgSQL_row *) node); break; default: elog(ERROR, "unrecognized variable type: %d", node->dtype); break; } } static void dump_type(StringInfo out, PLpgSQL_type *node) { WRITE_NODE_TYPE("PLpgSQL_type"); WRITE_STRING_FIELD(typname, typname, typname); } static void dump_row(StringInfo out, PLpgSQL_row *node) { int i = 0; WRITE_NODE_TYPE("PLpgSQL_row"); WRITE_STRING_FIELD(refname, refname, refname); WRITE_INT_FIELD(lineno, lineno, lineno); appendStringInfoString(out, "\"fields\":"); appendStringInfoChar(out, '['); for (i = 0; i < node->nfields; i++) { if (node->fieldnames[i]) { appendStringInfoChar(out, '{'); WRITE_STRING_VALUE(name, node->fieldnames[i]); WRITE_INT_VALUE(varno, node->varnos[i]); removeTrailingDelimiter(out); appendStringInfoString(out, "},"); } else { appendStringInfoString(out, "null,"); } } removeTrailingDelimiter(out); appendStringInfoString(out, "],"); } static void dump_record(StringInfo out, PLpgSQL_rec *node) { WRITE_NODE_TYPE("PLpgSQL_rec"); WRITE_STRING_FIELD(refname, refname, refname); WRITE_INT_FIELD(dno, dno, dno); WRITE_INT_FIELD(lineno, lineno, lineno); } static void dump_record_field(StringInfo out, PLpgSQL_recfield *node) { WRITE_NODE_TYPE("PLpgSQL_recfield"); WRITE_STRING_FIELD(fieldname, fieldname, fieldname); WRITE_INT_FIELD(recparentno, recparentno, recparentno); } static void dump_array_elem(StringInfo out, PLpgSQL_arrayelem *node) { WRITE_NODE_TYPE("PLpgSQL_arrayelem"); WRITE_EXPR_FIELD(subscript); WRITE_INT_FIELD(arrayparentno, arrayparentno, arrayparentno); } char * plpgsqlToJSON(PLpgSQL_function *func) { StringInfoData str; initStringInfo(&str); appendStringInfoChar(&str, '{'); dump_function(&str, func); removeTrailingDelimiter(&str); appendStringInfoString(&str, "}}"); return str.data; } libpg_query-13-2.1.0/src/pg_query_json_plpgsql.h000066400000000000000000000002421413137616400216470ustar00rootroot00000000000000#ifndef PG_QUERY_JSON_PLPGSQL_H #define PG_QUERY_JSON_PLPGSQL_H #include "postgres.h" #include "plpgsql.h" char* plpgsqlToJSON(PLpgSQL_function* func); #endif libpg_query-13-2.1.0/src/pg_query_normalize.c000066400000000000000000000450721413137616400211410ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_internal.h" #include "pg_query_fingerprint.h" #include "parser/parser.h" #include "parser/scanner.h" #include "parser/scansup.h" #include "mb/pg_wchar.h" #include "nodes/nodeFuncs.h" /* * Struct for tracking locations/lengths of constants during normalization */ typedef struct pgssLocationLen { int location; /* start offset in query text */ int length; /* length in bytes, or -1 to ignore */ int param_id; /* Param id to use - if negative prefix, need to abs(..) and add highest_extern_param_id */ } pgssLocationLen; /* * Working state for constant tree walker */ typedef struct pgssConstLocations { /* Array of locations of constants that should be removed */ pgssLocationLen *clocations; /* Allocated length of clocations array */ int clocations_buf_size; /* Current number of valid entries in clocations array */ int clocations_count; /* highest Param id we have assigned, not yet taking into account external param refs */ int highest_normalize_param_id; /* highest Param id we've seen, in order to start normalization correctly */ int highest_extern_param_id; /* query text */ const char * query; int query_len; /* optional recording of assigned or discovered param refs, only active if param_refs is not NULL */ int *param_refs; int param_refs_buf_size; int param_refs_count; } pgssConstLocations; /* * Intermediate working state struct to remember param refs for individual target list elements */ typedef struct FpAndParamRefs { uint64_t fp; int* param_refs; int param_refs_count; } FpAndParamRefs; /* * comp_location: comparator for qsorting pgssLocationLen structs by location */ static int comp_location(const void *a, const void *b) { int l = ((const pgssLocationLen *) a)->location; int r = ((const pgssLocationLen *) b)->location; if (l < r) return -1; else if (l > r) return +1; else return 0; } /* * Given a valid SQL string and an array of constant-location records, * fill in the textual lengths of those constants. * * The constants may use any allowed constant syntax, such as float literals, * bit-strings, single-quoted strings and dollar-quoted strings. This is * accomplished by using the public API for the core scanner. * * It is the caller's job to ensure that the string is a valid SQL statement * with constants at the indicated locations. Since in practice the string * has already been parsed, and the locations that the caller provides will * have originated from within the authoritative parser, this should not be * a problem. * * Duplicate constant pointers are possible, and will have their lengths * marked as '-1', so that they are later ignored. (Actually, we assume the * lengths were initialized as -1 to start with, and don't change them here.) * * N.B. There is an assumption that a '-' character at a Const location begins * a negative numeric constant. This precludes there ever being another * reason for a constant to start with a '-'. */ static void fill_in_constant_lengths(pgssConstLocations *jstate, const char *query) { pgssLocationLen *locs; core_yyscan_t yyscanner; core_yy_extra_type yyextra; core_YYSTYPE yylval; YYLTYPE yylloc; int last_loc = -1; int i; /* * Sort the records by location so that we can process them in order while * scanning the query text. */ if (jstate->clocations_count > 1) qsort(jstate->clocations, jstate->clocations_count, sizeof(pgssLocationLen), comp_location); locs = jstate->clocations; /* initialize the flex scanner --- should match raw_parser() */ yyscanner = scanner_init(query, &yyextra, &ScanKeywords, ScanKeywordTokens); /* Search for each constant, in sequence */ for (i = 0; i < jstate->clocations_count; i++) { int loc = locs[i].location; int tok; Assert(loc >= 0); if (loc <= last_loc) continue; /* Duplicate constant, ignore */ /* Lex tokens until we find the desired constant */ for (;;) { tok = core_yylex(&yylval, &yylloc, yyscanner); /* We should not hit end-of-string, but if we do, behave sanely */ if (tok == 0) break; /* out of inner for-loop */ /* * We should find the token position exactly, but if we somehow * run past it, work with that. */ if (yylloc >= loc) { if (query[loc] == '-') { /* * It's a negative value - this is the one and only case * where we replace more than a single token. * * Do not compensate for the core system's special-case * adjustment of location to that of the leading '-' * operator in the event of a negative constant. It is * also useful for our purposes to start from the minus * symbol. In this way, queries like "select * from foo * where bar = 1" and "select * from foo where bar = -2" * will have identical normalized query strings. */ tok = core_yylex(&yylval, &yylloc, yyscanner); if (tok == 0) break; /* out of inner for-loop */ } /* * We now rely on the assumption that flex has placed a zero * byte after the text of the current token in scanbuf. */ locs[i].length = (int) strlen(yyextra.scanbuf + loc); /* Quoted string with Unicode escapes * * The lexer consumes trailing whitespace in order to find UESCAPE, but if there * is no UESCAPE it has still consumed it - don't include it in constant length. */ if (locs[i].length > 4 && /* U&'' */ (yyextra.scanbuf[loc] == 'u' || yyextra.scanbuf[loc] == 'U') && yyextra.scanbuf[loc + 1] == '&' && yyextra.scanbuf[loc + 2] == '\'') { int j = locs[i].length - 1; /* Skip the \0 */ for (; j >= 0 && scanner_isspace(yyextra.scanbuf[loc + j]); j--) {} locs[i].length = j + 1; /* Count the \0 */ } break; /* out of inner for-loop */ } } /* If we hit end-of-string, give up, leaving remaining lengths -1 */ if (tok == 0) break; last_loc = loc; } scanner_finish(yyscanner); } /* * Generate a normalized version of the query string that will be used to * represent all similar queries. * * Note that the normalized representation may well vary depending on * just which "equivalent" query is used to create the hashtable entry. * We assume this is OK. * * *query_len_p contains the input string length, and is updated with * the result string length (which cannot be longer) on exit. * * Returns a palloc'd string. */ static char * generate_normalized_query(pgssConstLocations *jstate, int query_loc, int* query_len_p, int encoding) { char *norm_query; const char *query = jstate->query; int query_len = *query_len_p; int i, norm_query_buflen, /* Space allowed for norm_query */ len_to_wrt, /* Length (in bytes) to write */ quer_loc = 0, /* Source query byte location */ n_quer_loc = 0, /* Normalized query byte location */ last_off = 0, /* Offset from start for previous tok */ last_tok_len = 0; /* Length (in bytes) of that tok */ /* * Get constants' lengths (core system only gives us locations). Note * this also ensures the items are sorted by location. */ fill_in_constant_lengths(jstate, query); /* * Allow for $n symbols to be longer than the constants they replace. * Constants must take at least one byte in text form, while a $n symbol * certainly isn't more than 11 bytes, even if n reaches INT_MAX. We * could refine that limit based on the max value of n for the current * query, but it hardly seems worth any extra effort to do so. */ norm_query_buflen = query_len + jstate->clocations_count * 10; /* Allocate result buffer */ norm_query = palloc(norm_query_buflen + 1); for (i = 0; i < jstate->clocations_count; i++) { int off, /* Offset from start for cur tok */ tok_len, /* Length (in bytes) of that tok */ param_id; /* Param ID to be assigned */ off = jstate->clocations[i].location; /* Adjust recorded location if we're dealing with partial string */ off -= query_loc; tok_len = jstate->clocations[i].length; if (tok_len < 0) continue; /* ignore any duplicates */ /* Copy next chunk (what precedes the next constant) */ len_to_wrt = off - last_off; len_to_wrt -= last_tok_len; Assert(len_to_wrt >= 0); memcpy(norm_query + n_quer_loc, query + quer_loc, len_to_wrt); n_quer_loc += len_to_wrt; /* And insert a param symbol in place of the constant token */ param_id = (jstate->clocations[i].param_id < 0) ? jstate->highest_extern_param_id + abs(jstate->clocations[i].param_id) : jstate->clocations[i].param_id; n_quer_loc += sprintf(norm_query + n_quer_loc, "$%d", param_id); quer_loc = off + tok_len; last_off = off; last_tok_len = tok_len; } /* * We've copied up until the last ignorable constant. Copy over the * remaining bytes of the original query string. */ len_to_wrt = query_len - quer_loc; Assert(len_to_wrt >= 0); memcpy(norm_query + n_quer_loc, query + quer_loc, len_to_wrt); n_quer_loc += len_to_wrt; Assert(n_quer_loc <= norm_query_buflen); norm_query[n_quer_loc] = '\0'; *query_len_p = n_quer_loc; return norm_query; } static void RecordConstLocation(pgssConstLocations *jstate, int location) { /* -1 indicates unknown or undefined location */ if (location >= 0) { /* enlarge array if needed */ if (jstate->clocations_count >= jstate->clocations_buf_size) { jstate->clocations_buf_size *= 2; jstate->clocations = (pgssLocationLen *) repalloc(jstate->clocations, jstate->clocations_buf_size * sizeof(pgssLocationLen)); } jstate->clocations[jstate->clocations_count].location = location; /* initialize lengths to -1 to simplify fill_in_constant_lengths */ jstate->clocations[jstate->clocations_count].length = -1; /* by default we assume that we need a new param ref */ jstate->clocations[jstate->clocations_count].param_id = - jstate->highest_normalize_param_id; jstate->highest_normalize_param_id++; /* record param ref number if requested */ if (jstate->param_refs != NULL) { jstate->param_refs[jstate->param_refs_count] = jstate->clocations[jstate->clocations_count].param_id; jstate->param_refs_count++; if (jstate->param_refs_count >= jstate->param_refs_buf_size) { jstate->param_refs_buf_size *= 2; jstate->param_refs = (int *) repalloc(jstate->param_refs, jstate->param_refs_buf_size * sizeof(int)); } } jstate->clocations_count++; } } static bool const_record_walker(Node *node, pgssConstLocations *jstate) { bool result; MemoryContext normalize_context = CurrentMemoryContext; if (node == NULL) return false; switch (nodeTag(node)) { case T_A_Const: RecordConstLocation(jstate, castNode(A_Const, node)->location); break; case T_ParamRef: { /* Track the highest ParamRef number */ if (((ParamRef *) node)->number > jstate->highest_extern_param_id) jstate->highest_extern_param_id = castNode(ParamRef, node)->number; if (jstate->param_refs != NULL) { jstate->param_refs[jstate->param_refs_count] = ((ParamRef *) node)->number; jstate->param_refs_count++; if (jstate->param_refs_count >= jstate->param_refs_buf_size) { jstate->param_refs_buf_size *= 2; jstate->param_refs = (int *) repalloc(jstate->param_refs, jstate->param_refs_buf_size * sizeof(int)); } } } break; case T_DefElem: { DefElem * defElem = (DefElem *) node; if (defElem->arg != NULL && IsA(defElem->arg, String)) { for (int i = defElem->location; i < jstate->query_len; i++) { if (jstate->query[i] == '\'') { RecordConstLocation(jstate, i); break; } } } return const_record_walker((Node *) ((DefElem *) node)->arg, jstate); } break; case T_RawStmt: return const_record_walker((Node *) ((RawStmt *) node)->stmt, jstate); case T_VariableSetStmt: return const_record_walker((Node *) ((VariableSetStmt *) node)->args, jstate); case T_CopyStmt: return const_record_walker((Node *) ((CopyStmt *) node)->query, jstate); case T_ExplainStmt: return const_record_walker((Node *) ((ExplainStmt *) node)->query, jstate); case T_CreateRoleStmt: return const_record_walker((Node *) ((CreateRoleStmt *) node)->options, jstate); case T_AlterRoleStmt: return const_record_walker((Node *) ((AlterRoleStmt *) node)->options, jstate); case T_DeclareCursorStmt: return const_record_walker((Node *) ((DeclareCursorStmt *) node)->query, jstate); case T_TypeName: /* Don't normalize constants in typmods or arrayBounds */ return false; case T_SelectStmt: { SelectStmt *stmt = (SelectStmt *) node; ListCell *lc; List *fp_and_param_refs_list = NIL; if (const_record_walker((Node *) stmt->distinctClause, jstate)) return true; if (const_record_walker((Node *) stmt->intoClause, jstate)) return true; foreach(lc, stmt->targetList) { ResTarget *res_target = lfirst_node(ResTarget, lc); FpAndParamRefs *fp_and_param_refs = palloc0(sizeof(FpAndParamRefs)); /* Save all param refs we encounter or assign */ jstate->param_refs = palloc0(1 * sizeof(int)); jstate->param_refs_buf_size = 1; jstate->param_refs_count = 0; /* Walk the element */ if (const_record_walker((Node *) res_target, jstate)) return true; /* Remember fingerprint and param refs for later */ fp_and_param_refs->fp = pg_query_fingerprint_node(res_target->val); fp_and_param_refs->param_refs = jstate->param_refs; fp_and_param_refs->param_refs_count = jstate->param_refs_count; fp_and_param_refs_list = lappend(fp_and_param_refs_list, fp_and_param_refs); /* Reset for next element, or stop recording if this is the last element */ jstate->param_refs = NULL; jstate->param_refs_buf_size = 0; jstate->param_refs_count = 0; } if (const_record_walker((Node *) stmt->fromClause, jstate)) return true; if (const_record_walker((Node *) stmt->whereClause, jstate)) return true; /* * Instead of walking all of groupClause (like raw_expression_tree_walker does), * only walk certain items. */ foreach(lc, stmt->groupClause) { /* * Do not walk A_Const values that are simple integers, this avoids * turning "GROUP BY 1" into "GROUP BY $n", which obscures an important * semantic meaning. This matches how pg_stat_statements handles the * GROUP BY clause (i.e. it doesn't touch these constants) */ if (IsA(lfirst(lc), A_Const) && IsA(&castNode(A_Const, lfirst(lc))->val, Integer)) continue; /* * Match up GROUP BY clauses against the target list, to assign the same * param refs as used in the target list - this ensures the query is valid, * instead of throwing a bogus "columns ... must appear in the GROUP BY * clause or be used in an aggregate function" error */ uint64_t fp = pg_query_fingerprint_node(lfirst(lc)); FpAndParamRefs *fppr = NULL; ListCell *lc2; foreach(lc2, fp_and_param_refs_list) { if (fp == ((FpAndParamRefs *) lfirst(lc2))->fp) { fppr = (FpAndParamRefs *) lfirst(lc2); foreach_delete_current(fp_and_param_refs_list, lc2); break; } } int prev_cloc_count = jstate->clocations_count; if (const_record_walker((Node *) lfirst(lc), jstate)) return true; if (fppr != NULL && fppr->param_refs_count == jstate->clocations_count - prev_cloc_count) { for (int i = prev_cloc_count; i < jstate->clocations_count; i++) { jstate->clocations[i].param_id = fppr->param_refs[i - prev_cloc_count]; } jstate->highest_normalize_param_id -= fppr->param_refs_count; } } foreach(lc, stmt->sortClause) { /* Similarly, don't turn "ORDER BY 1" into "ORDER BY $n" */ if (IsA(lfirst(lc), SortBy) && IsA(castNode(SortBy, lfirst(lc))->node, A_Const) && IsA(&castNode(A_Const, castNode(SortBy, lfirst(lc))->node)->val, Integer)) continue; if (const_record_walker((Node *) lfirst(lc), jstate)) return true; } if (const_record_walker((Node *) stmt->havingClause, jstate)) return true; if (const_record_walker((Node *) stmt->windowClause, jstate)) return true; if (const_record_walker((Node *) stmt->valuesLists, jstate)) return true; if (const_record_walker((Node *) stmt->limitOffset, jstate)) return true; if (const_record_walker((Node *) stmt->limitCount, jstate)) return true; if (const_record_walker((Node *) stmt->lockingClause, jstate)) return true; if (const_record_walker((Node *) stmt->withClause, jstate)) return true; if (const_record_walker((Node *) stmt->larg, jstate)) return true; if (const_record_walker((Node *) stmt->rarg, jstate)) return true; return false; } default: { PG_TRY(); { return raw_expression_tree_walker(node, const_record_walker, (void*) jstate); } PG_CATCH(); { MemoryContextSwitchTo(normalize_context); FlushErrorState(); } PG_END_TRY(); } } return false; } PgQueryNormalizeResult pg_query_normalize(const char* input) { MemoryContext ctx = NULL; PgQueryNormalizeResult result = {0}; ctx = pg_query_enter_memory_context(); PG_TRY(); { List *tree; pgssConstLocations jstate; int query_len; /* Parse query */ tree = raw_parser(input); query_len = (int) strlen(input); /* Set up workspace for constant recording */ jstate.clocations_buf_size = 32; jstate.clocations = (pgssLocationLen *) palloc(jstate.clocations_buf_size * sizeof(pgssLocationLen)); jstate.clocations_count = 0; jstate.highest_normalize_param_id = 1; jstate.highest_extern_param_id = 0; jstate.query = input; jstate.query_len = query_len; jstate.param_refs = NULL; jstate.param_refs_buf_size = 0; jstate.param_refs_count = 0; /* Walk tree and record const locations */ const_record_walker((Node *) tree, &jstate); /* Normalize query */ result.normalized_query = strdup(generate_normalized_query(&jstate, 0, &query_len, PG_UTF8)); } PG_CATCH(); { ErrorData* error_data; PgQueryError* error; MemoryContextSwitchTo(ctx); error_data = CopyErrorData(); error = malloc(sizeof(PgQueryError)); error->message = strdup(error_data->message); error->filename = strdup(error_data->filename); error->funcname = strdup(error_data->funcname); error->context = NULL; error->lineno = error_data->lineno; error->cursorpos = error_data->cursorpos; result.error = error; FlushErrorState(); } PG_END_TRY(); pg_query_exit_memory_context(ctx); return result; } void pg_query_free_normalize_result(PgQueryNormalizeResult result) { if (result.error) { free(result.error->message); free(result.error->filename); free(result.error->funcname); free(result.error); } free(result.normalized_query); } libpg_query-13-2.1.0/src/pg_query_outfuncs.h000066400000000000000000000003051413137616400210020ustar00rootroot00000000000000#ifndef PG_QUERY_OUTFUNCS_H #define PG_QUERY_OUTFUNCS_H #include "pg_query.h" PgQueryProtobuf pg_query_nodes_to_protobuf(const void *obj); char *pg_query_nodes_to_json(const void *obj); #endif libpg_query-13-2.1.0/src/pg_query_outfuncs_conds.c000066400000000000000000000753011413137616400221730ustar00rootroot00000000000000// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb case T_Integer: OUT_NODE(Integer, Integer, integer, INTEGER, Value, integer); break; case T_Float: OUT_NODE(Float, Float, float, FLOAT, Value, float_); break; case T_String: OUT_NODE(String, String, string, STRING, Value, string); break; case T_BitString: OUT_NODE(BitString, BitString, bit_string, BIT_STRING, Value, bit_string); break; case T_Null: OUT_NODE(Null, Null, null, NULL, Value, null); break; case T_List: OUT_NODE(List, List, list, LIST, List, list); break; case T_IntList: OUT_NODE(IntList, IntList, int_list, INT_LIST, List, int_list); break; case T_OidList: OUT_NODE(OidList, OidList, oid_list, OID_LIST, List, oid_list); break; case T_Alias: OUT_NODE(Alias, Alias, alias, ALIAS, Alias, alias); break; case T_RangeVar: OUT_NODE(RangeVar, RangeVar, range_var, RANGE_VAR, RangeVar, range_var); break; case T_TableFunc: OUT_NODE(TableFunc, TableFunc, table_func, TABLE_FUNC, TableFunc, table_func); break; case T_Expr: OUT_NODE(Expr, Expr, expr, EXPR, Expr, expr); break; case T_Var: OUT_NODE(Var, Var, var, VAR, Var, var); break; case T_Param: OUT_NODE(Param, Param, param, PARAM, Param, param); break; case T_Aggref: OUT_NODE(Aggref, Aggref, aggref, AGGREF, Aggref, aggref); break; case T_GroupingFunc: OUT_NODE(GroupingFunc, GroupingFunc, grouping_func, GROUPING_FUNC, GroupingFunc, grouping_func); break; case T_WindowFunc: OUT_NODE(WindowFunc, WindowFunc, window_func, WINDOW_FUNC, WindowFunc, window_func); break; case T_SubscriptingRef: OUT_NODE(SubscriptingRef, SubscriptingRef, subscripting_ref, SUBSCRIPTING_REF, SubscriptingRef, subscripting_ref); break; case T_FuncExpr: OUT_NODE(FuncExpr, FuncExpr, func_expr, FUNC_EXPR, FuncExpr, func_expr); break; case T_NamedArgExpr: OUT_NODE(NamedArgExpr, NamedArgExpr, named_arg_expr, NAMED_ARG_EXPR, NamedArgExpr, named_arg_expr); break; case T_OpExpr: OUT_NODE(OpExpr, OpExpr, op_expr, OP_EXPR, OpExpr, op_expr); break; case T_DistinctExpr: OUT_NODE(DistinctExpr, DistinctExpr, distinct_expr, DISTINCT_EXPR, DistinctExpr, distinct_expr); break; case T_NullIfExpr: OUT_NODE(NullIfExpr, NullIfExpr, null_if_expr, NULL_IF_EXPR, NullIfExpr, null_if_expr); break; case T_ScalarArrayOpExpr: OUT_NODE(ScalarArrayOpExpr, ScalarArrayOpExpr, scalar_array_op_expr, SCALAR_ARRAY_OP_EXPR, ScalarArrayOpExpr, scalar_array_op_expr); break; case T_BoolExpr: OUT_NODE(BoolExpr, BoolExpr, bool_expr, BOOL_EXPR, BoolExpr, bool_expr); break; case T_SubLink: OUT_NODE(SubLink, SubLink, sub_link, SUB_LINK, SubLink, sub_link); break; case T_SubPlan: OUT_NODE(SubPlan, SubPlan, sub_plan, SUB_PLAN, SubPlan, sub_plan); break; case T_AlternativeSubPlan: OUT_NODE(AlternativeSubPlan, AlternativeSubPlan, alternative_sub_plan, ALTERNATIVE_SUB_PLAN, AlternativeSubPlan, alternative_sub_plan); break; case T_FieldSelect: OUT_NODE(FieldSelect, FieldSelect, field_select, FIELD_SELECT, FieldSelect, field_select); break; case T_FieldStore: OUT_NODE(FieldStore, FieldStore, field_store, FIELD_STORE, FieldStore, field_store); break; case T_RelabelType: OUT_NODE(RelabelType, RelabelType, relabel_type, RELABEL_TYPE, RelabelType, relabel_type); break; case T_CoerceViaIO: OUT_NODE(CoerceViaIO, CoerceViaIO, coerce_via_io, COERCE_VIA_IO, CoerceViaIO, coerce_via_io); break; case T_ArrayCoerceExpr: OUT_NODE(ArrayCoerceExpr, ArrayCoerceExpr, array_coerce_expr, ARRAY_COERCE_EXPR, ArrayCoerceExpr, array_coerce_expr); break; case T_ConvertRowtypeExpr: OUT_NODE(ConvertRowtypeExpr, ConvertRowtypeExpr, convert_rowtype_expr, CONVERT_ROWTYPE_EXPR, ConvertRowtypeExpr, convert_rowtype_expr); break; case T_CollateExpr: OUT_NODE(CollateExpr, CollateExpr, collate_expr, COLLATE_EXPR, CollateExpr, collate_expr); break; case T_CaseExpr: OUT_NODE(CaseExpr, CaseExpr, case_expr, CASE_EXPR, CaseExpr, case_expr); break; case T_CaseWhen: OUT_NODE(CaseWhen, CaseWhen, case_when, CASE_WHEN, CaseWhen, case_when); break; case T_CaseTestExpr: OUT_NODE(CaseTestExpr, CaseTestExpr, case_test_expr, CASE_TEST_EXPR, CaseTestExpr, case_test_expr); break; case T_ArrayExpr: OUT_NODE(ArrayExpr, ArrayExpr, array_expr, ARRAY_EXPR, ArrayExpr, array_expr); break; case T_RowExpr: OUT_NODE(RowExpr, RowExpr, row_expr, ROW_EXPR, RowExpr, row_expr); break; case T_RowCompareExpr: OUT_NODE(RowCompareExpr, RowCompareExpr, row_compare_expr, ROW_COMPARE_EXPR, RowCompareExpr, row_compare_expr); break; case T_CoalesceExpr: OUT_NODE(CoalesceExpr, CoalesceExpr, coalesce_expr, COALESCE_EXPR, CoalesceExpr, coalesce_expr); break; case T_MinMaxExpr: OUT_NODE(MinMaxExpr, MinMaxExpr, min_max_expr, MIN_MAX_EXPR, MinMaxExpr, min_max_expr); break; case T_SQLValueFunction: OUT_NODE(SQLValueFunction, SQLValueFunction, sqlvalue_function, SQLVALUE_FUNCTION, SQLValueFunction, sqlvalue_function); break; case T_XmlExpr: OUT_NODE(XmlExpr, XmlExpr, xml_expr, XML_EXPR, XmlExpr, xml_expr); break; case T_NullTest: OUT_NODE(NullTest, NullTest, null_test, NULL_TEST, NullTest, null_test); break; case T_BooleanTest: OUT_NODE(BooleanTest, BooleanTest, boolean_test, BOOLEAN_TEST, BooleanTest, boolean_test); break; case T_CoerceToDomain: OUT_NODE(CoerceToDomain, CoerceToDomain, coerce_to_domain, COERCE_TO_DOMAIN, CoerceToDomain, coerce_to_domain); break; case T_CoerceToDomainValue: OUT_NODE(CoerceToDomainValue, CoerceToDomainValue, coerce_to_domain_value, COERCE_TO_DOMAIN_VALUE, CoerceToDomainValue, coerce_to_domain_value); break; case T_SetToDefault: OUT_NODE(SetToDefault, SetToDefault, set_to_default, SET_TO_DEFAULT, SetToDefault, set_to_default); break; case T_CurrentOfExpr: OUT_NODE(CurrentOfExpr, CurrentOfExpr, current_of_expr, CURRENT_OF_EXPR, CurrentOfExpr, current_of_expr); break; case T_NextValueExpr: OUT_NODE(NextValueExpr, NextValueExpr, next_value_expr, NEXT_VALUE_EXPR, NextValueExpr, next_value_expr); break; case T_InferenceElem: OUT_NODE(InferenceElem, InferenceElem, inference_elem, INFERENCE_ELEM, InferenceElem, inference_elem); break; case T_TargetEntry: OUT_NODE(TargetEntry, TargetEntry, target_entry, TARGET_ENTRY, TargetEntry, target_entry); break; case T_RangeTblRef: OUT_NODE(RangeTblRef, RangeTblRef, range_tbl_ref, RANGE_TBL_REF, RangeTblRef, range_tbl_ref); break; case T_JoinExpr: OUT_NODE(JoinExpr, JoinExpr, join_expr, JOIN_EXPR, JoinExpr, join_expr); break; case T_FromExpr: OUT_NODE(FromExpr, FromExpr, from_expr, FROM_EXPR, FromExpr, from_expr); break; case T_OnConflictExpr: OUT_NODE(OnConflictExpr, OnConflictExpr, on_conflict_expr, ON_CONFLICT_EXPR, OnConflictExpr, on_conflict_expr); break; case T_IntoClause: OUT_NODE(IntoClause, IntoClause, into_clause, INTO_CLAUSE, IntoClause, into_clause); break; case T_RawStmt: OUT_NODE(RawStmt, RawStmt, raw_stmt, RAW_STMT, RawStmt, raw_stmt); break; case T_Query: OUT_NODE(Query, Query, query, QUERY, Query, query); break; case T_InsertStmt: OUT_NODE(InsertStmt, InsertStmt, insert_stmt, INSERT_STMT, InsertStmt, insert_stmt); break; case T_DeleteStmt: OUT_NODE(DeleteStmt, DeleteStmt, delete_stmt, DELETE_STMT, DeleteStmt, delete_stmt); break; case T_UpdateStmt: OUT_NODE(UpdateStmt, UpdateStmt, update_stmt, UPDATE_STMT, UpdateStmt, update_stmt); break; case T_SelectStmt: OUT_NODE(SelectStmt, SelectStmt, select_stmt, SELECT_STMT, SelectStmt, select_stmt); break; case T_AlterTableStmt: OUT_NODE(AlterTableStmt, AlterTableStmt, alter_table_stmt, ALTER_TABLE_STMT, AlterTableStmt, alter_table_stmt); break; case T_AlterTableCmd: OUT_NODE(AlterTableCmd, AlterTableCmd, alter_table_cmd, ALTER_TABLE_CMD, AlterTableCmd, alter_table_cmd); break; case T_AlterDomainStmt: OUT_NODE(AlterDomainStmt, AlterDomainStmt, alter_domain_stmt, ALTER_DOMAIN_STMT, AlterDomainStmt, alter_domain_stmt); break; case T_SetOperationStmt: OUT_NODE(SetOperationStmt, SetOperationStmt, set_operation_stmt, SET_OPERATION_STMT, SetOperationStmt, set_operation_stmt); break; case T_GrantStmt: OUT_NODE(GrantStmt, GrantStmt, grant_stmt, GRANT_STMT, GrantStmt, grant_stmt); break; case T_GrantRoleStmt: OUT_NODE(GrantRoleStmt, GrantRoleStmt, grant_role_stmt, GRANT_ROLE_STMT, GrantRoleStmt, grant_role_stmt); break; case T_AlterDefaultPrivilegesStmt: OUT_NODE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt, ALTER_DEFAULT_PRIVILEGES_STMT, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt); break; case T_ClosePortalStmt: OUT_NODE(ClosePortalStmt, ClosePortalStmt, close_portal_stmt, CLOSE_PORTAL_STMT, ClosePortalStmt, close_portal_stmt); break; case T_ClusterStmt: OUT_NODE(ClusterStmt, ClusterStmt, cluster_stmt, CLUSTER_STMT, ClusterStmt, cluster_stmt); break; case T_CopyStmt: OUT_NODE(CopyStmt, CopyStmt, copy_stmt, COPY_STMT, CopyStmt, copy_stmt); break; case T_CreateStmt: OUT_NODE(CreateStmt, CreateStmt, create_stmt, CREATE_STMT, CreateStmt, create_stmt); break; case T_DefineStmt: OUT_NODE(DefineStmt, DefineStmt, define_stmt, DEFINE_STMT, DefineStmt, define_stmt); break; case T_DropStmt: OUT_NODE(DropStmt, DropStmt, drop_stmt, DROP_STMT, DropStmt, drop_stmt); break; case T_TruncateStmt: OUT_NODE(TruncateStmt, TruncateStmt, truncate_stmt, TRUNCATE_STMT, TruncateStmt, truncate_stmt); break; case T_CommentStmt: OUT_NODE(CommentStmt, CommentStmt, comment_stmt, COMMENT_STMT, CommentStmt, comment_stmt); break; case T_FetchStmt: OUT_NODE(FetchStmt, FetchStmt, fetch_stmt, FETCH_STMT, FetchStmt, fetch_stmt); break; case T_IndexStmt: OUT_NODE(IndexStmt, IndexStmt, index_stmt, INDEX_STMT, IndexStmt, index_stmt); break; case T_CreateFunctionStmt: OUT_NODE(CreateFunctionStmt, CreateFunctionStmt, create_function_stmt, CREATE_FUNCTION_STMT, CreateFunctionStmt, create_function_stmt); break; case T_AlterFunctionStmt: OUT_NODE(AlterFunctionStmt, AlterFunctionStmt, alter_function_stmt, ALTER_FUNCTION_STMT, AlterFunctionStmt, alter_function_stmt); break; case T_DoStmt: OUT_NODE(DoStmt, DoStmt, do_stmt, DO_STMT, DoStmt, do_stmt); break; case T_RenameStmt: OUT_NODE(RenameStmt, RenameStmt, rename_stmt, RENAME_STMT, RenameStmt, rename_stmt); break; case T_RuleStmt: OUT_NODE(RuleStmt, RuleStmt, rule_stmt, RULE_STMT, RuleStmt, rule_stmt); break; case T_NotifyStmt: OUT_NODE(NotifyStmt, NotifyStmt, notify_stmt, NOTIFY_STMT, NotifyStmt, notify_stmt); break; case T_ListenStmt: OUT_NODE(ListenStmt, ListenStmt, listen_stmt, LISTEN_STMT, ListenStmt, listen_stmt); break; case T_UnlistenStmt: OUT_NODE(UnlistenStmt, UnlistenStmt, unlisten_stmt, UNLISTEN_STMT, UnlistenStmt, unlisten_stmt); break; case T_TransactionStmt: OUT_NODE(TransactionStmt, TransactionStmt, transaction_stmt, TRANSACTION_STMT, TransactionStmt, transaction_stmt); break; case T_ViewStmt: OUT_NODE(ViewStmt, ViewStmt, view_stmt, VIEW_STMT, ViewStmt, view_stmt); break; case T_LoadStmt: OUT_NODE(LoadStmt, LoadStmt, load_stmt, LOAD_STMT, LoadStmt, load_stmt); break; case T_CreateDomainStmt: OUT_NODE(CreateDomainStmt, CreateDomainStmt, create_domain_stmt, CREATE_DOMAIN_STMT, CreateDomainStmt, create_domain_stmt); break; case T_CreatedbStmt: OUT_NODE(CreatedbStmt, CreatedbStmt, createdb_stmt, CREATEDB_STMT, CreatedbStmt, createdb_stmt); break; case T_DropdbStmt: OUT_NODE(DropdbStmt, DropdbStmt, dropdb_stmt, DROPDB_STMT, DropdbStmt, dropdb_stmt); break; case T_VacuumStmt: OUT_NODE(VacuumStmt, VacuumStmt, vacuum_stmt, VACUUM_STMT, VacuumStmt, vacuum_stmt); break; case T_ExplainStmt: OUT_NODE(ExplainStmt, ExplainStmt, explain_stmt, EXPLAIN_STMT, ExplainStmt, explain_stmt); break; case T_CreateTableAsStmt: OUT_NODE(CreateTableAsStmt, CreateTableAsStmt, create_table_as_stmt, CREATE_TABLE_AS_STMT, CreateTableAsStmt, create_table_as_stmt); break; case T_CreateSeqStmt: OUT_NODE(CreateSeqStmt, CreateSeqStmt, create_seq_stmt, CREATE_SEQ_STMT, CreateSeqStmt, create_seq_stmt); break; case T_AlterSeqStmt: OUT_NODE(AlterSeqStmt, AlterSeqStmt, alter_seq_stmt, ALTER_SEQ_STMT, AlterSeqStmt, alter_seq_stmt); break; case T_VariableSetStmt: OUT_NODE(VariableSetStmt, VariableSetStmt, variable_set_stmt, VARIABLE_SET_STMT, VariableSetStmt, variable_set_stmt); break; case T_VariableShowStmt: OUT_NODE(VariableShowStmt, VariableShowStmt, variable_show_stmt, VARIABLE_SHOW_STMT, VariableShowStmt, variable_show_stmt); break; case T_DiscardStmt: OUT_NODE(DiscardStmt, DiscardStmt, discard_stmt, DISCARD_STMT, DiscardStmt, discard_stmt); break; case T_CreateTrigStmt: OUT_NODE(CreateTrigStmt, CreateTrigStmt, create_trig_stmt, CREATE_TRIG_STMT, CreateTrigStmt, create_trig_stmt); break; case T_CreatePLangStmt: OUT_NODE(CreatePLangStmt, CreatePLangStmt, create_plang_stmt, CREATE_PLANG_STMT, CreatePLangStmt, create_plang_stmt); break; case T_CreateRoleStmt: OUT_NODE(CreateRoleStmt, CreateRoleStmt, create_role_stmt, CREATE_ROLE_STMT, CreateRoleStmt, create_role_stmt); break; case T_AlterRoleStmt: OUT_NODE(AlterRoleStmt, AlterRoleStmt, alter_role_stmt, ALTER_ROLE_STMT, AlterRoleStmt, alter_role_stmt); break; case T_DropRoleStmt: OUT_NODE(DropRoleStmt, DropRoleStmt, drop_role_stmt, DROP_ROLE_STMT, DropRoleStmt, drop_role_stmt); break; case T_LockStmt: OUT_NODE(LockStmt, LockStmt, lock_stmt, LOCK_STMT, LockStmt, lock_stmt); break; case T_ConstraintsSetStmt: OUT_NODE(ConstraintsSetStmt, ConstraintsSetStmt, constraints_set_stmt, CONSTRAINTS_SET_STMT, ConstraintsSetStmt, constraints_set_stmt); break; case T_ReindexStmt: OUT_NODE(ReindexStmt, ReindexStmt, reindex_stmt, REINDEX_STMT, ReindexStmt, reindex_stmt); break; case T_CheckPointStmt: OUT_NODE(CheckPointStmt, CheckPointStmt, check_point_stmt, CHECK_POINT_STMT, CheckPointStmt, check_point_stmt); break; case T_CreateSchemaStmt: OUT_NODE(CreateSchemaStmt, CreateSchemaStmt, create_schema_stmt, CREATE_SCHEMA_STMT, CreateSchemaStmt, create_schema_stmt); break; case T_AlterDatabaseStmt: OUT_NODE(AlterDatabaseStmt, AlterDatabaseStmt, alter_database_stmt, ALTER_DATABASE_STMT, AlterDatabaseStmt, alter_database_stmt); break; case T_AlterDatabaseSetStmt: OUT_NODE(AlterDatabaseSetStmt, AlterDatabaseSetStmt, alter_database_set_stmt, ALTER_DATABASE_SET_STMT, AlterDatabaseSetStmt, alter_database_set_stmt); break; case T_AlterRoleSetStmt: OUT_NODE(AlterRoleSetStmt, AlterRoleSetStmt, alter_role_set_stmt, ALTER_ROLE_SET_STMT, AlterRoleSetStmt, alter_role_set_stmt); break; case T_CreateConversionStmt: OUT_NODE(CreateConversionStmt, CreateConversionStmt, create_conversion_stmt, CREATE_CONVERSION_STMT, CreateConversionStmt, create_conversion_stmt); break; case T_CreateCastStmt: OUT_NODE(CreateCastStmt, CreateCastStmt, create_cast_stmt, CREATE_CAST_STMT, CreateCastStmt, create_cast_stmt); break; case T_CreateOpClassStmt: OUT_NODE(CreateOpClassStmt, CreateOpClassStmt, create_op_class_stmt, CREATE_OP_CLASS_STMT, CreateOpClassStmt, create_op_class_stmt); break; case T_CreateOpFamilyStmt: OUT_NODE(CreateOpFamilyStmt, CreateOpFamilyStmt, create_op_family_stmt, CREATE_OP_FAMILY_STMT, CreateOpFamilyStmt, create_op_family_stmt); break; case T_AlterOpFamilyStmt: OUT_NODE(AlterOpFamilyStmt, AlterOpFamilyStmt, alter_op_family_stmt, ALTER_OP_FAMILY_STMT, AlterOpFamilyStmt, alter_op_family_stmt); break; case T_PrepareStmt: OUT_NODE(PrepareStmt, PrepareStmt, prepare_stmt, PREPARE_STMT, PrepareStmt, prepare_stmt); break; case T_ExecuteStmt: OUT_NODE(ExecuteStmt, ExecuteStmt, execute_stmt, EXECUTE_STMT, ExecuteStmt, execute_stmt); break; case T_DeallocateStmt: OUT_NODE(DeallocateStmt, DeallocateStmt, deallocate_stmt, DEALLOCATE_STMT, DeallocateStmt, deallocate_stmt); break; case T_DeclareCursorStmt: OUT_NODE(DeclareCursorStmt, DeclareCursorStmt, declare_cursor_stmt, DECLARE_CURSOR_STMT, DeclareCursorStmt, declare_cursor_stmt); break; case T_CreateTableSpaceStmt: OUT_NODE(CreateTableSpaceStmt, CreateTableSpaceStmt, create_table_space_stmt, CREATE_TABLE_SPACE_STMT, CreateTableSpaceStmt, create_table_space_stmt); break; case T_DropTableSpaceStmt: OUT_NODE(DropTableSpaceStmt, DropTableSpaceStmt, drop_table_space_stmt, DROP_TABLE_SPACE_STMT, DropTableSpaceStmt, drop_table_space_stmt); break; case T_AlterObjectDependsStmt: OUT_NODE(AlterObjectDependsStmt, AlterObjectDependsStmt, alter_object_depends_stmt, ALTER_OBJECT_DEPENDS_STMT, AlterObjectDependsStmt, alter_object_depends_stmt); break; case T_AlterObjectSchemaStmt: OUT_NODE(AlterObjectSchemaStmt, AlterObjectSchemaStmt, alter_object_schema_stmt, ALTER_OBJECT_SCHEMA_STMT, AlterObjectSchemaStmt, alter_object_schema_stmt); break; case T_AlterOwnerStmt: OUT_NODE(AlterOwnerStmt, AlterOwnerStmt, alter_owner_stmt, ALTER_OWNER_STMT, AlterOwnerStmt, alter_owner_stmt); break; case T_AlterOperatorStmt: OUT_NODE(AlterOperatorStmt, AlterOperatorStmt, alter_operator_stmt, ALTER_OPERATOR_STMT, AlterOperatorStmt, alter_operator_stmt); break; case T_AlterTypeStmt: OUT_NODE(AlterTypeStmt, AlterTypeStmt, alter_type_stmt, ALTER_TYPE_STMT, AlterTypeStmt, alter_type_stmt); break; case T_DropOwnedStmt: OUT_NODE(DropOwnedStmt, DropOwnedStmt, drop_owned_stmt, DROP_OWNED_STMT, DropOwnedStmt, drop_owned_stmt); break; case T_ReassignOwnedStmt: OUT_NODE(ReassignOwnedStmt, ReassignOwnedStmt, reassign_owned_stmt, REASSIGN_OWNED_STMT, ReassignOwnedStmt, reassign_owned_stmt); break; case T_CompositeTypeStmt: OUT_NODE(CompositeTypeStmt, CompositeTypeStmt, composite_type_stmt, COMPOSITE_TYPE_STMT, CompositeTypeStmt, composite_type_stmt); break; case T_CreateEnumStmt: OUT_NODE(CreateEnumStmt, CreateEnumStmt, create_enum_stmt, CREATE_ENUM_STMT, CreateEnumStmt, create_enum_stmt); break; case T_CreateRangeStmt: OUT_NODE(CreateRangeStmt, CreateRangeStmt, create_range_stmt, CREATE_RANGE_STMT, CreateRangeStmt, create_range_stmt); break; case T_AlterEnumStmt: OUT_NODE(AlterEnumStmt, AlterEnumStmt, alter_enum_stmt, ALTER_ENUM_STMT, AlterEnumStmt, alter_enum_stmt); break; case T_AlterTSDictionaryStmt: OUT_NODE(AlterTSDictionaryStmt, AlterTSDictionaryStmt, alter_tsdictionary_stmt, ALTER_TSDICTIONARY_STMT, AlterTSDictionaryStmt, alter_tsdictionary_stmt); break; case T_AlterTSConfigurationStmt: OUT_NODE(AlterTSConfigurationStmt, AlterTSConfigurationStmt, alter_tsconfiguration_stmt, ALTER_TSCONFIGURATION_STMT, AlterTSConfigurationStmt, alter_tsconfiguration_stmt); break; case T_CreateFdwStmt: OUT_NODE(CreateFdwStmt, CreateFdwStmt, create_fdw_stmt, CREATE_FDW_STMT, CreateFdwStmt, create_fdw_stmt); break; case T_AlterFdwStmt: OUT_NODE(AlterFdwStmt, AlterFdwStmt, alter_fdw_stmt, ALTER_FDW_STMT, AlterFdwStmt, alter_fdw_stmt); break; case T_CreateForeignServerStmt: OUT_NODE(CreateForeignServerStmt, CreateForeignServerStmt, create_foreign_server_stmt, CREATE_FOREIGN_SERVER_STMT, CreateForeignServerStmt, create_foreign_server_stmt); break; case T_AlterForeignServerStmt: OUT_NODE(AlterForeignServerStmt, AlterForeignServerStmt, alter_foreign_server_stmt, ALTER_FOREIGN_SERVER_STMT, AlterForeignServerStmt, alter_foreign_server_stmt); break; case T_CreateUserMappingStmt: OUT_NODE(CreateUserMappingStmt, CreateUserMappingStmt, create_user_mapping_stmt, CREATE_USER_MAPPING_STMT, CreateUserMappingStmt, create_user_mapping_stmt); break; case T_AlterUserMappingStmt: OUT_NODE(AlterUserMappingStmt, AlterUserMappingStmt, alter_user_mapping_stmt, ALTER_USER_MAPPING_STMT, AlterUserMappingStmt, alter_user_mapping_stmt); break; case T_DropUserMappingStmt: OUT_NODE(DropUserMappingStmt, DropUserMappingStmt, drop_user_mapping_stmt, DROP_USER_MAPPING_STMT, DropUserMappingStmt, drop_user_mapping_stmt); break; case T_AlterTableSpaceOptionsStmt: OUT_NODE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt, ALTER_TABLE_SPACE_OPTIONS_STMT, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt); break; case T_AlterTableMoveAllStmt: OUT_NODE(AlterTableMoveAllStmt, AlterTableMoveAllStmt, alter_table_move_all_stmt, ALTER_TABLE_MOVE_ALL_STMT, AlterTableMoveAllStmt, alter_table_move_all_stmt); break; case T_SecLabelStmt: OUT_NODE(SecLabelStmt, SecLabelStmt, sec_label_stmt, SEC_LABEL_STMT, SecLabelStmt, sec_label_stmt); break; case T_CreateForeignTableStmt: OUT_NODE(CreateForeignTableStmt, CreateForeignTableStmt, create_foreign_table_stmt, CREATE_FOREIGN_TABLE_STMT, CreateForeignTableStmt, create_foreign_table_stmt); break; case T_ImportForeignSchemaStmt: OUT_NODE(ImportForeignSchemaStmt, ImportForeignSchemaStmt, import_foreign_schema_stmt, IMPORT_FOREIGN_SCHEMA_STMT, ImportForeignSchemaStmt, import_foreign_schema_stmt); break; case T_CreateExtensionStmt: OUT_NODE(CreateExtensionStmt, CreateExtensionStmt, create_extension_stmt, CREATE_EXTENSION_STMT, CreateExtensionStmt, create_extension_stmt); break; case T_AlterExtensionStmt: OUT_NODE(AlterExtensionStmt, AlterExtensionStmt, alter_extension_stmt, ALTER_EXTENSION_STMT, AlterExtensionStmt, alter_extension_stmt); break; case T_AlterExtensionContentsStmt: OUT_NODE(AlterExtensionContentsStmt, AlterExtensionContentsStmt, alter_extension_contents_stmt, ALTER_EXTENSION_CONTENTS_STMT, AlterExtensionContentsStmt, alter_extension_contents_stmt); break; case T_CreateEventTrigStmt: OUT_NODE(CreateEventTrigStmt, CreateEventTrigStmt, create_event_trig_stmt, CREATE_EVENT_TRIG_STMT, CreateEventTrigStmt, create_event_trig_stmt); break; case T_AlterEventTrigStmt: OUT_NODE(AlterEventTrigStmt, AlterEventTrigStmt, alter_event_trig_stmt, ALTER_EVENT_TRIG_STMT, AlterEventTrigStmt, alter_event_trig_stmt); break; case T_RefreshMatViewStmt: OUT_NODE(RefreshMatViewStmt, RefreshMatViewStmt, refresh_mat_view_stmt, REFRESH_MAT_VIEW_STMT, RefreshMatViewStmt, refresh_mat_view_stmt); break; case T_ReplicaIdentityStmt: OUT_NODE(ReplicaIdentityStmt, ReplicaIdentityStmt, replica_identity_stmt, REPLICA_IDENTITY_STMT, ReplicaIdentityStmt, replica_identity_stmt); break; case T_AlterSystemStmt: OUT_NODE(AlterSystemStmt, AlterSystemStmt, alter_system_stmt, ALTER_SYSTEM_STMT, AlterSystemStmt, alter_system_stmt); break; case T_CreatePolicyStmt: OUT_NODE(CreatePolicyStmt, CreatePolicyStmt, create_policy_stmt, CREATE_POLICY_STMT, CreatePolicyStmt, create_policy_stmt); break; case T_AlterPolicyStmt: OUT_NODE(AlterPolicyStmt, AlterPolicyStmt, alter_policy_stmt, ALTER_POLICY_STMT, AlterPolicyStmt, alter_policy_stmt); break; case T_CreateTransformStmt: OUT_NODE(CreateTransformStmt, CreateTransformStmt, create_transform_stmt, CREATE_TRANSFORM_STMT, CreateTransformStmt, create_transform_stmt); break; case T_CreateAmStmt: OUT_NODE(CreateAmStmt, CreateAmStmt, create_am_stmt, CREATE_AM_STMT, CreateAmStmt, create_am_stmt); break; case T_CreatePublicationStmt: OUT_NODE(CreatePublicationStmt, CreatePublicationStmt, create_publication_stmt, CREATE_PUBLICATION_STMT, CreatePublicationStmt, create_publication_stmt); break; case T_AlterPublicationStmt: OUT_NODE(AlterPublicationStmt, AlterPublicationStmt, alter_publication_stmt, ALTER_PUBLICATION_STMT, AlterPublicationStmt, alter_publication_stmt); break; case T_CreateSubscriptionStmt: OUT_NODE(CreateSubscriptionStmt, CreateSubscriptionStmt, create_subscription_stmt, CREATE_SUBSCRIPTION_STMT, CreateSubscriptionStmt, create_subscription_stmt); break; case T_AlterSubscriptionStmt: OUT_NODE(AlterSubscriptionStmt, AlterSubscriptionStmt, alter_subscription_stmt, ALTER_SUBSCRIPTION_STMT, AlterSubscriptionStmt, alter_subscription_stmt); break; case T_DropSubscriptionStmt: OUT_NODE(DropSubscriptionStmt, DropSubscriptionStmt, drop_subscription_stmt, DROP_SUBSCRIPTION_STMT, DropSubscriptionStmt, drop_subscription_stmt); break; case T_CreateStatsStmt: OUT_NODE(CreateStatsStmt, CreateStatsStmt, create_stats_stmt, CREATE_STATS_STMT, CreateStatsStmt, create_stats_stmt); break; case T_AlterCollationStmt: OUT_NODE(AlterCollationStmt, AlterCollationStmt, alter_collation_stmt, ALTER_COLLATION_STMT, AlterCollationStmt, alter_collation_stmt); break; case T_CallStmt: OUT_NODE(CallStmt, CallStmt, call_stmt, CALL_STMT, CallStmt, call_stmt); break; case T_AlterStatsStmt: OUT_NODE(AlterStatsStmt, AlterStatsStmt, alter_stats_stmt, ALTER_STATS_STMT, AlterStatsStmt, alter_stats_stmt); break; case T_A_Expr: OUT_NODE(A_Expr, AExpr, a__expr, A_EXPR, A_Expr, a_expr); break; case T_ColumnRef: OUT_NODE(ColumnRef, ColumnRef, column_ref, COLUMN_REF, ColumnRef, column_ref); break; case T_ParamRef: OUT_NODE(ParamRef, ParamRef, param_ref, PARAM_REF, ParamRef, param_ref); break; case T_A_Const: OUT_NODE(A_Const, AConst, a__const, A_CONST, A_Const, a_const); break; case T_FuncCall: OUT_NODE(FuncCall, FuncCall, func_call, FUNC_CALL, FuncCall, func_call); break; case T_A_Star: OUT_NODE(A_Star, AStar, a__star, A_STAR, A_Star, a_star); break; case T_A_Indices: OUT_NODE(A_Indices, AIndices, a__indices, A_INDICES, A_Indices, a_indices); break; case T_A_Indirection: OUT_NODE(A_Indirection, AIndirection, a__indirection, A_INDIRECTION, A_Indirection, a_indirection); break; case T_A_ArrayExpr: OUT_NODE(A_ArrayExpr, AArrayExpr, a__array_expr, A_ARRAY_EXPR, A_ArrayExpr, a_array_expr); break; case T_ResTarget: OUT_NODE(ResTarget, ResTarget, res_target, RES_TARGET, ResTarget, res_target); break; case T_MultiAssignRef: OUT_NODE(MultiAssignRef, MultiAssignRef, multi_assign_ref, MULTI_ASSIGN_REF, MultiAssignRef, multi_assign_ref); break; case T_TypeCast: OUT_NODE(TypeCast, TypeCast, type_cast, TYPE_CAST, TypeCast, type_cast); break; case T_CollateClause: OUT_NODE(CollateClause, CollateClause, collate_clause, COLLATE_CLAUSE, CollateClause, collate_clause); break; case T_SortBy: OUT_NODE(SortBy, SortBy, sort_by, SORT_BY, SortBy, sort_by); break; case T_WindowDef: OUT_NODE(WindowDef, WindowDef, window_def, WINDOW_DEF, WindowDef, window_def); break; case T_RangeSubselect: OUT_NODE(RangeSubselect, RangeSubselect, range_subselect, RANGE_SUBSELECT, RangeSubselect, range_subselect); break; case T_RangeFunction: OUT_NODE(RangeFunction, RangeFunction, range_function, RANGE_FUNCTION, RangeFunction, range_function); break; case T_RangeTableSample: OUT_NODE(RangeTableSample, RangeTableSample, range_table_sample, RANGE_TABLE_SAMPLE, RangeTableSample, range_table_sample); break; case T_RangeTableFunc: OUT_NODE(RangeTableFunc, RangeTableFunc, range_table_func, RANGE_TABLE_FUNC, RangeTableFunc, range_table_func); break; case T_RangeTableFuncCol: OUT_NODE(RangeTableFuncCol, RangeTableFuncCol, range_table_func_col, RANGE_TABLE_FUNC_COL, RangeTableFuncCol, range_table_func_col); break; case T_TypeName: OUT_NODE(TypeName, TypeName, type_name, TYPE_NAME, TypeName, type_name); break; case T_ColumnDef: OUT_NODE(ColumnDef, ColumnDef, column_def, COLUMN_DEF, ColumnDef, column_def); break; case T_IndexElem: OUT_NODE(IndexElem, IndexElem, index_elem, INDEX_ELEM, IndexElem, index_elem); break; case T_Constraint: OUT_NODE(Constraint, Constraint, constraint, CONSTRAINT, Constraint, constraint); break; case T_DefElem: OUT_NODE(DefElem, DefElem, def_elem, DEF_ELEM, DefElem, def_elem); break; case T_RangeTblEntry: OUT_NODE(RangeTblEntry, RangeTblEntry, range_tbl_entry, RANGE_TBL_ENTRY, RangeTblEntry, range_tbl_entry); break; case T_RangeTblFunction: OUT_NODE(RangeTblFunction, RangeTblFunction, range_tbl_function, RANGE_TBL_FUNCTION, RangeTblFunction, range_tbl_function); break; case T_TableSampleClause: OUT_NODE(TableSampleClause, TableSampleClause, table_sample_clause, TABLE_SAMPLE_CLAUSE, TableSampleClause, table_sample_clause); break; case T_WithCheckOption: OUT_NODE(WithCheckOption, WithCheckOption, with_check_option, WITH_CHECK_OPTION, WithCheckOption, with_check_option); break; case T_SortGroupClause: OUT_NODE(SortGroupClause, SortGroupClause, sort_group_clause, SORT_GROUP_CLAUSE, SortGroupClause, sort_group_clause); break; case T_GroupingSet: OUT_NODE(GroupingSet, GroupingSet, grouping_set, GROUPING_SET, GroupingSet, grouping_set); break; case T_WindowClause: OUT_NODE(WindowClause, WindowClause, window_clause, WINDOW_CLAUSE, WindowClause, window_clause); break; case T_ObjectWithArgs: OUT_NODE(ObjectWithArgs, ObjectWithArgs, object_with_args, OBJECT_WITH_ARGS, ObjectWithArgs, object_with_args); break; case T_AccessPriv: OUT_NODE(AccessPriv, AccessPriv, access_priv, ACCESS_PRIV, AccessPriv, access_priv); break; case T_CreateOpClassItem: OUT_NODE(CreateOpClassItem, CreateOpClassItem, create_op_class_item, CREATE_OP_CLASS_ITEM, CreateOpClassItem, create_op_class_item); break; case T_TableLikeClause: OUT_NODE(TableLikeClause, TableLikeClause, table_like_clause, TABLE_LIKE_CLAUSE, TableLikeClause, table_like_clause); break; case T_FunctionParameter: OUT_NODE(FunctionParameter, FunctionParameter, function_parameter, FUNCTION_PARAMETER, FunctionParameter, function_parameter); break; case T_LockingClause: OUT_NODE(LockingClause, LockingClause, locking_clause, LOCKING_CLAUSE, LockingClause, locking_clause); break; case T_RowMarkClause: OUT_NODE(RowMarkClause, RowMarkClause, row_mark_clause, ROW_MARK_CLAUSE, RowMarkClause, row_mark_clause); break; case T_XmlSerialize: OUT_NODE(XmlSerialize, XmlSerialize, xml_serialize, XML_SERIALIZE, XmlSerialize, xml_serialize); break; case T_WithClause: OUT_NODE(WithClause, WithClause, with_clause, WITH_CLAUSE, WithClause, with_clause); break; case T_InferClause: OUT_NODE(InferClause, InferClause, infer_clause, INFER_CLAUSE, InferClause, infer_clause); break; case T_OnConflictClause: OUT_NODE(OnConflictClause, OnConflictClause, on_conflict_clause, ON_CONFLICT_CLAUSE, OnConflictClause, on_conflict_clause); break; case T_CommonTableExpr: OUT_NODE(CommonTableExpr, CommonTableExpr, common_table_expr, COMMON_TABLE_EXPR, CommonTableExpr, common_table_expr); break; case T_RoleSpec: OUT_NODE(RoleSpec, RoleSpec, role_spec, ROLE_SPEC, RoleSpec, role_spec); break; case T_TriggerTransition: OUT_NODE(TriggerTransition, TriggerTransition, trigger_transition, TRIGGER_TRANSITION, TriggerTransition, trigger_transition); break; case T_PartitionElem: OUT_NODE(PartitionElem, PartitionElem, partition_elem, PARTITION_ELEM, PartitionElem, partition_elem); break; case T_PartitionSpec: OUT_NODE(PartitionSpec, PartitionSpec, partition_spec, PARTITION_SPEC, PartitionSpec, partition_spec); break; case T_PartitionBoundSpec: OUT_NODE(PartitionBoundSpec, PartitionBoundSpec, partition_bound_spec, PARTITION_BOUND_SPEC, PartitionBoundSpec, partition_bound_spec); break; case T_PartitionRangeDatum: OUT_NODE(PartitionRangeDatum, PartitionRangeDatum, partition_range_datum, PARTITION_RANGE_DATUM, PartitionRangeDatum, partition_range_datum); break; case T_PartitionCmd: OUT_NODE(PartitionCmd, PartitionCmd, partition_cmd, PARTITION_CMD, PartitionCmd, partition_cmd); break; case T_VacuumRelation: OUT_NODE(VacuumRelation, VacuumRelation, vacuum_relation, VACUUM_RELATION, VacuumRelation, vacuum_relation); break; case T_InlineCodeBlock: OUT_NODE(InlineCodeBlock, InlineCodeBlock, inline_code_block, INLINE_CODE_BLOCK, InlineCodeBlock, inline_code_block); break; case T_CallContext: OUT_NODE(CallContext, CallContext, call_context, CALL_CONTEXT, CallContext, call_context); break; libpg_query-13-2.1.0/src/pg_query_outfuncs_defs.c000066400000000000000000003277231413137616400220160ustar00rootroot00000000000000// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb static void _outAlias(OUT_TYPE(Alias, Alias) out_node, const Alias *node); static void _outRangeVar(OUT_TYPE(RangeVar, RangeVar) out_node, const RangeVar *node); static void _outTableFunc(OUT_TYPE(TableFunc, TableFunc) out_node, const TableFunc *node); static void _outExpr(OUT_TYPE(Expr, Expr) out_node, const Expr *node); static void _outVar(OUT_TYPE(Var, Var) out_node, const Var *node); static void _outParam(OUT_TYPE(Param, Param) out_node, const Param *node); static void _outAggref(OUT_TYPE(Aggref, Aggref) out_node, const Aggref *node); static void _outGroupingFunc(OUT_TYPE(GroupingFunc, GroupingFunc) out_node, const GroupingFunc *node); static void _outWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) out_node, const WindowFunc *node); static void _outSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) out_node, const SubscriptingRef *node); static void _outFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) out_node, const FuncExpr *node); static void _outNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) out_node, const NamedArgExpr *node); static void _outOpExpr(OUT_TYPE(OpExpr, OpExpr) out_node, const OpExpr *node); static void _outDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) out_node, const DistinctExpr *node); static void _outNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) out_node, const NullIfExpr *node); static void _outScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) out_node, const ScalarArrayOpExpr *node); static void _outBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) out_node, const BoolExpr *node); static void _outSubLink(OUT_TYPE(SubLink, SubLink) out_node, const SubLink *node); static void _outSubPlan(OUT_TYPE(SubPlan, SubPlan) out_node, const SubPlan *node); static void _outAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) out_node, const AlternativeSubPlan *node); static void _outFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) out_node, const FieldSelect *node); static void _outFieldStore(OUT_TYPE(FieldStore, FieldStore) out_node, const FieldStore *node); static void _outRelabelType(OUT_TYPE(RelabelType, RelabelType) out_node, const RelabelType *node); static void _outCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) out_node, const CoerceViaIO *node); static void _outArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) out_node, const ArrayCoerceExpr *node); static void _outConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) out_node, const ConvertRowtypeExpr *node); static void _outCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) out_node, const CollateExpr *node); static void _outCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) out_node, const CaseExpr *node); static void _outCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) out_node, const CaseWhen *node); static void _outCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) out_node, const CaseTestExpr *node); static void _outArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) out_node, const ArrayExpr *node); static void _outRowExpr(OUT_TYPE(RowExpr, RowExpr) out_node, const RowExpr *node); static void _outRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) out_node, const RowCompareExpr *node); static void _outCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) out_node, const CoalesceExpr *node); static void _outMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) out_node, const MinMaxExpr *node); static void _outSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) out_node, const SQLValueFunction *node); static void _outXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) out_node, const XmlExpr *node); static void _outNullTest(OUT_TYPE(NullTest, NullTest) out_node, const NullTest *node); static void _outBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) out_node, const BooleanTest *node); static void _outCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) out_node, const CoerceToDomain *node); static void _outCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) out_node, const CoerceToDomainValue *node); static void _outSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) out_node, const SetToDefault *node); static void _outCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) out_node, const CurrentOfExpr *node); static void _outNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) out_node, const NextValueExpr *node); static void _outInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) out_node, const InferenceElem *node); static void _outTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) out_node, const TargetEntry *node); static void _outRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) out_node, const RangeTblRef *node); static void _outJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) out_node, const JoinExpr *node); static void _outFromExpr(OUT_TYPE(FromExpr, FromExpr) out_node, const FromExpr *node); static void _outOnConflictExpr(OUT_TYPE(OnConflictExpr, OnConflictExpr) out_node, const OnConflictExpr *node); static void _outIntoClause(OUT_TYPE(IntoClause, IntoClause) out_node, const IntoClause *node); static void _outRawStmt(OUT_TYPE(RawStmt, RawStmt) out_node, const RawStmt *node); static void _outQuery(OUT_TYPE(Query, Query) out_node, const Query *node); static void _outInsertStmt(OUT_TYPE(InsertStmt, InsertStmt) out_node, const InsertStmt *node); static void _outDeleteStmt(OUT_TYPE(DeleteStmt, DeleteStmt) out_node, const DeleteStmt *node); static void _outUpdateStmt(OUT_TYPE(UpdateStmt, UpdateStmt) out_node, const UpdateStmt *node); static void _outSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) out_node, const SelectStmt *node); static void _outAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) out_node, const AlterTableStmt *node); static void _outAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) out_node, const AlterTableCmd *node); static void _outAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) out_node, const AlterDomainStmt *node); static void _outSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) out_node, const SetOperationStmt *node); static void _outGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) out_node, const GrantStmt *node); static void _outGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) out_node, const GrantRoleStmt *node); static void _outAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) out_node, const AlterDefaultPrivilegesStmt *node); static void _outClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) out_node, const ClosePortalStmt *node); static void _outClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) out_node, const ClusterStmt *node); static void _outCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) out_node, const CopyStmt *node); static void _outCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) out_node, const CreateStmt *node); static void _outDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) out_node, const DefineStmt *node); static void _outDropStmt(OUT_TYPE(DropStmt, DropStmt) out_node, const DropStmt *node); static void _outTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) out_node, const TruncateStmt *node); static void _outCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) out_node, const CommentStmt *node); static void _outFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) out_node, const FetchStmt *node); static void _outIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) out_node, const IndexStmt *node); static void _outCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) out_node, const CreateFunctionStmt *node); static void _outAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) out_node, const AlterFunctionStmt *node); static void _outDoStmt(OUT_TYPE(DoStmt, DoStmt) out_node, const DoStmt *node); static void _outRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) out_node, const RenameStmt *node); static void _outRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) out_node, const RuleStmt *node); static void _outNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) out_node, const NotifyStmt *node); static void _outListenStmt(OUT_TYPE(ListenStmt, ListenStmt) out_node, const ListenStmt *node); static void _outUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) out_node, const UnlistenStmt *node); static void _outTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) out_node, const TransactionStmt *node); static void _outViewStmt(OUT_TYPE(ViewStmt, ViewStmt) out_node, const ViewStmt *node); static void _outLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) out_node, const LoadStmt *node); static void _outCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) out_node, const CreateDomainStmt *node); static void _outCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) out_node, const CreatedbStmt *node); static void _outDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) out_node, const DropdbStmt *node); static void _outVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) out_node, const VacuumStmt *node); static void _outExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) out_node, const ExplainStmt *node); static void _outCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) out_node, const CreateTableAsStmt *node); static void _outCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) out_node, const CreateSeqStmt *node); static void _outAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) out_node, const AlterSeqStmt *node); static void _outVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) out_node, const VariableSetStmt *node); static void _outVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) out_node, const VariableShowStmt *node); static void _outDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) out_node, const DiscardStmt *node); static void _outCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) out_node, const CreateTrigStmt *node); static void _outCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) out_node, const CreatePLangStmt *node); static void _outCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) out_node, const CreateRoleStmt *node); static void _outAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) out_node, const AlterRoleStmt *node); static void _outDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) out_node, const DropRoleStmt *node); static void _outLockStmt(OUT_TYPE(LockStmt, LockStmt) out_node, const LockStmt *node); static void _outConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) out_node, const ConstraintsSetStmt *node); static void _outReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) out_node, const ReindexStmt *node); static void _outCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) out_node, const CheckPointStmt *node); static void _outCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) out_node, const CreateSchemaStmt *node); static void _outAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) out_node, const AlterDatabaseStmt *node); static void _outAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) out_node, const AlterDatabaseSetStmt *node); static void _outAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) out_node, const AlterRoleSetStmt *node); static void _outCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) out_node, const CreateConversionStmt *node); static void _outCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) out_node, const CreateCastStmt *node); static void _outCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) out_node, const CreateOpClassStmt *node); static void _outCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) out_node, const CreateOpFamilyStmt *node); static void _outAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) out_node, const AlterOpFamilyStmt *node); static void _outPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) out_node, const PrepareStmt *node); static void _outExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) out_node, const ExecuteStmt *node); static void _outDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) out_node, const DeallocateStmt *node); static void _outDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) out_node, const DeclareCursorStmt *node); static void _outCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) out_node, const CreateTableSpaceStmt *node); static void _outDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) out_node, const DropTableSpaceStmt *node); static void _outAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) out_node, const AlterObjectDependsStmt *node); static void _outAlterObjectSchemaStmt(OUT_TYPE(AlterObjectSchemaStmt, AlterObjectSchemaStmt) out_node, const AlterObjectSchemaStmt *node); static void _outAlterOwnerStmt(OUT_TYPE(AlterOwnerStmt, AlterOwnerStmt) out_node, const AlterOwnerStmt *node); static void _outAlterOperatorStmt(OUT_TYPE(AlterOperatorStmt, AlterOperatorStmt) out_node, const AlterOperatorStmt *node); static void _outAlterTypeStmt(OUT_TYPE(AlterTypeStmt, AlterTypeStmt) out_node, const AlterTypeStmt *node); static void _outDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) out_node, const DropOwnedStmt *node); static void _outReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) out_node, const ReassignOwnedStmt *node); static void _outCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) out_node, const CompositeTypeStmt *node); static void _outCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) out_node, const CreateEnumStmt *node); static void _outCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) out_node, const CreateRangeStmt *node); static void _outAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) out_node, const AlterEnumStmt *node); static void _outAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) out_node, const AlterTSDictionaryStmt *node); static void _outAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) out_node, const AlterTSConfigurationStmt *node); static void _outCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) out_node, const CreateFdwStmt *node); static void _outAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) out_node, const AlterFdwStmt *node); static void _outCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) out_node, const CreateForeignServerStmt *node); static void _outAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) out_node, const AlterForeignServerStmt *node); static void _outCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) out_node, const CreateUserMappingStmt *node); static void _outAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) out_node, const AlterUserMappingStmt *node); static void _outDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) out_node, const DropUserMappingStmt *node); static void _outAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) out_node, const AlterTableSpaceOptionsStmt *node); static void _outAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) out_node, const AlterTableMoveAllStmt *node); static void _outSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) out_node, const SecLabelStmt *node); static void _outCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) out_node, const CreateForeignTableStmt *node); static void _outImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) out_node, const ImportForeignSchemaStmt *node); static void _outCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) out_node, const CreateExtensionStmt *node); static void _outAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) out_node, const AlterExtensionStmt *node); static void _outAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) out_node, const AlterExtensionContentsStmt *node); static void _outCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) out_node, const CreateEventTrigStmt *node); static void _outAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) out_node, const AlterEventTrigStmt *node); static void _outRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) out_node, const RefreshMatViewStmt *node); static void _outReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) out_node, const ReplicaIdentityStmt *node); static void _outAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) out_node, const AlterSystemStmt *node); static void _outCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) out_node, const CreatePolicyStmt *node); static void _outAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) out_node, const AlterPolicyStmt *node); static void _outCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) out_node, const CreateTransformStmt *node); static void _outCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) out_node, const CreateAmStmt *node); static void _outCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) out_node, const CreatePublicationStmt *node); static void _outAlterPublicationStmt(OUT_TYPE(AlterPublicationStmt, AlterPublicationStmt) out_node, const AlterPublicationStmt *node); static void _outCreateSubscriptionStmt(OUT_TYPE(CreateSubscriptionStmt, CreateSubscriptionStmt) out_node, const CreateSubscriptionStmt *node); static void _outAlterSubscriptionStmt(OUT_TYPE(AlterSubscriptionStmt, AlterSubscriptionStmt) out_node, const AlterSubscriptionStmt *node); static void _outDropSubscriptionStmt(OUT_TYPE(DropSubscriptionStmt, DropSubscriptionStmt) out_node, const DropSubscriptionStmt *node); static void _outCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) out_node, const CreateStatsStmt *node); static void _outAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) out_node, const AlterCollationStmt *node); static void _outCallStmt(OUT_TYPE(CallStmt, CallStmt) out_node, const CallStmt *node); static void _outAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) out_node, const AlterStatsStmt *node); static void _outAExpr(OUT_TYPE(A_Expr, AExpr) out_node, const A_Expr *node); static void _outColumnRef(OUT_TYPE(ColumnRef, ColumnRef) out_node, const ColumnRef *node); static void _outParamRef(OUT_TYPE(ParamRef, ParamRef) out_node, const ParamRef *node); static void _outAConst(OUT_TYPE(A_Const, AConst) out_node, const A_Const *node); static void _outFuncCall(OUT_TYPE(FuncCall, FuncCall) out_node, const FuncCall *node); static void _outAStar(OUT_TYPE(A_Star, AStar) out_node, const A_Star *node); static void _outAIndices(OUT_TYPE(A_Indices, AIndices) out_node, const A_Indices *node); static void _outAIndirection(OUT_TYPE(A_Indirection, AIndirection) out_node, const A_Indirection *node); static void _outAArrayExpr(OUT_TYPE(A_ArrayExpr, AArrayExpr) out_node, const A_ArrayExpr *node); static void _outResTarget(OUT_TYPE(ResTarget, ResTarget) out_node, const ResTarget *node); static void _outMultiAssignRef(OUT_TYPE(MultiAssignRef, MultiAssignRef) out_node, const MultiAssignRef *node); static void _outTypeCast(OUT_TYPE(TypeCast, TypeCast) out_node, const TypeCast *node); static void _outCollateClause(OUT_TYPE(CollateClause, CollateClause) out_node, const CollateClause *node); static void _outSortBy(OUT_TYPE(SortBy, SortBy) out_node, const SortBy *node); static void _outWindowDef(OUT_TYPE(WindowDef, WindowDef) out_node, const WindowDef *node); static void _outRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) out_node, const RangeSubselect *node); static void _outRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) out_node, const RangeFunction *node); static void _outRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) out_node, const RangeTableSample *node); static void _outRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) out_node, const RangeTableFunc *node); static void _outRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) out_node, const RangeTableFuncCol *node); static void _outTypeName(OUT_TYPE(TypeName, TypeName) out_node, const TypeName *node); static void _outColumnDef(OUT_TYPE(ColumnDef, ColumnDef) out_node, const ColumnDef *node); static void _outIndexElem(OUT_TYPE(IndexElem, IndexElem) out_node, const IndexElem *node); static void _outConstraint(OUT_TYPE(Constraint, Constraint) out_node, const Constraint *node); static void _outDefElem(OUT_TYPE(DefElem, DefElem) out_node, const DefElem *node); static void _outRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) out_node, const RangeTblEntry *node); static void _outRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) out_node, const RangeTblFunction *node); static void _outTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) out_node, const TableSampleClause *node); static void _outWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) out_node, const WithCheckOption *node); static void _outSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) out_node, const SortGroupClause *node); static void _outGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) out_node, const GroupingSet *node); static void _outWindowClause(OUT_TYPE(WindowClause, WindowClause) out_node, const WindowClause *node); static void _outObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) out_node, const ObjectWithArgs *node); static void _outAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) out_node, const AccessPriv *node); static void _outCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) out_node, const CreateOpClassItem *node); static void _outTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) out_node, const TableLikeClause *node); static void _outFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) out_node, const FunctionParameter *node); static void _outLockingClause(OUT_TYPE(LockingClause, LockingClause) out_node, const LockingClause *node); static void _outRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) out_node, const RowMarkClause *node); static void _outXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) out_node, const XmlSerialize *node); static void _outWithClause(OUT_TYPE(WithClause, WithClause) out_node, const WithClause *node); static void _outInferClause(OUT_TYPE(InferClause, InferClause) out_node, const InferClause *node); static void _outOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) out_node, const OnConflictClause *node); static void _outCommonTableExpr(OUT_TYPE(CommonTableExpr, CommonTableExpr) out_node, const CommonTableExpr *node); static void _outRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) out_node, const RoleSpec *node); static void _outTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) out_node, const TriggerTransition *node); static void _outPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) out_node, const PartitionElem *node); static void _outPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) out_node, const PartitionSpec *node); static void _outPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) out_node, const PartitionBoundSpec *node); static void _outPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) out_node, const PartitionRangeDatum *node); static void _outPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) out_node, const PartitionCmd *node); static void _outVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) out_node, const VacuumRelation *node); static void _outInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) out_node, const InlineCodeBlock *node); static void _outCallContext(OUT_TYPE(CallContext, CallContext) out_node, const CallContext *node); static void _outAlias(OUT_TYPE(Alias, Alias) out, const Alias *node) { WRITE_STRING_FIELD(aliasname, aliasname, aliasname); WRITE_LIST_FIELD(colnames, colnames, colnames); } static void _outRangeVar(OUT_TYPE(RangeVar, RangeVar) out, const RangeVar *node) { WRITE_STRING_FIELD(catalogname, catalogname, catalogname); WRITE_STRING_FIELD(schemaname, schemaname, schemaname); WRITE_STRING_FIELD(relname, relname, relname); WRITE_BOOL_FIELD(inh, inh, inh); WRITE_CHAR_FIELD(relpersistence, relpersistence, relpersistence); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_INT_FIELD(location, location, location); } static void _outTableFunc(OUT_TYPE(TableFunc, TableFunc) out, const TableFunc *node) { WRITE_LIST_FIELD(ns_uris, ns_uris, ns_uris); WRITE_LIST_FIELD(ns_names, ns_names, ns_names); WRITE_NODE_PTR_FIELD(docexpr, docexpr, docexpr); WRITE_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); WRITE_LIST_FIELD(colnames, colnames, colnames); WRITE_LIST_FIELD(coltypes, coltypes, coltypes); WRITE_LIST_FIELD(coltypmods, coltypmods, coltypmods); WRITE_LIST_FIELD(colcollations, colcollations, colcollations); WRITE_LIST_FIELD(colexprs, colexprs, colexprs); WRITE_LIST_FIELD(coldefexprs, coldefexprs, coldefexprs); WRITE_BITMAPSET_FIELD(notnulls, notnulls, notnulls); WRITE_INT_FIELD(ordinalitycol, ordinalitycol, ordinalitycol); WRITE_INT_FIELD(location, location, location); } static void _outExpr(OUT_TYPE(Expr, Expr) out, const Expr *node) { } static void _outVar(OUT_TYPE(Var, Var) out, const Var *node) { WRITE_UINT_FIELD(varno, varno, varno); WRITE_INT_FIELD(varattno, varattno, varattno); WRITE_UINT_FIELD(vartype, vartype, vartype); WRITE_INT_FIELD(vartypmod, vartypmod, vartypmod); WRITE_UINT_FIELD(varcollid, varcollid, varcollid); WRITE_UINT_FIELD(varlevelsup, varlevelsup, varlevelsup); WRITE_UINT_FIELD(varnosyn, varnosyn, varnosyn); WRITE_INT_FIELD(varattnosyn, varattnosyn, varattnosyn); WRITE_INT_FIELD(location, location, location); } static void _outParam(OUT_TYPE(Param, Param) out, const Param *node) { WRITE_ENUM_FIELD(ParamKind, paramkind, paramkind, paramkind); WRITE_INT_FIELD(paramid, paramid, paramid); WRITE_UINT_FIELD(paramtype, paramtype, paramtype); WRITE_INT_FIELD(paramtypmod, paramtypmod, paramtypmod); WRITE_UINT_FIELD(paramcollid, paramcollid, paramcollid); WRITE_INT_FIELD(location, location, location); } static void _outAggref(OUT_TYPE(Aggref, Aggref) out, const Aggref *node) { WRITE_UINT_FIELD(aggfnoid, aggfnoid, aggfnoid); WRITE_UINT_FIELD(aggtype, aggtype, aggtype); WRITE_UINT_FIELD(aggcollid, aggcollid, aggcollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_UINT_FIELD(aggtranstype, aggtranstype, aggtranstype); WRITE_LIST_FIELD(aggargtypes, aggargtypes, aggargtypes); WRITE_LIST_FIELD(aggdirectargs, aggdirectargs, aggdirectargs); WRITE_LIST_FIELD(args, args, args); WRITE_LIST_FIELD(aggorder, aggorder, aggorder); WRITE_LIST_FIELD(aggdistinct, aggdistinct, aggdistinct); WRITE_NODE_PTR_FIELD(aggfilter, aggfilter, aggfilter); WRITE_BOOL_FIELD(aggstar, aggstar, aggstar); WRITE_BOOL_FIELD(aggvariadic, aggvariadic, aggvariadic); WRITE_CHAR_FIELD(aggkind, aggkind, aggkind); WRITE_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); WRITE_ENUM_FIELD(AggSplit, aggsplit, aggsplit, aggsplit); WRITE_INT_FIELD(location, location, location); } static void _outGroupingFunc(OUT_TYPE(GroupingFunc, GroupingFunc) out, const GroupingFunc *node) { WRITE_LIST_FIELD(args, args, args); WRITE_LIST_FIELD(refs, refs, refs); WRITE_LIST_FIELD(cols, cols, cols); WRITE_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); WRITE_INT_FIELD(location, location, location); } static void _outWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) out, const WindowFunc *node) { WRITE_UINT_FIELD(winfnoid, winfnoid, winfnoid); WRITE_UINT_FIELD(wintype, wintype, wintype); WRITE_UINT_FIELD(wincollid, wincollid, wincollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_NODE_PTR_FIELD(aggfilter, aggfilter, aggfilter); WRITE_UINT_FIELD(winref, winref, winref); WRITE_BOOL_FIELD(winstar, winstar, winstar); WRITE_BOOL_FIELD(winagg, winagg, winagg); WRITE_INT_FIELD(location, location, location); } static void _outSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) out, const SubscriptingRef *node) { WRITE_UINT_FIELD(refcontainertype, refcontainertype, refcontainertype); WRITE_UINT_FIELD(refelemtype, refelemtype, refelemtype); WRITE_INT_FIELD(reftypmod, reftypmod, reftypmod); WRITE_UINT_FIELD(refcollid, refcollid, refcollid); WRITE_LIST_FIELD(refupperindexpr, refupperindexpr, refupperindexpr); WRITE_LIST_FIELD(reflowerindexpr, reflowerindexpr, reflowerindexpr); WRITE_NODE_PTR_FIELD(refexpr, refexpr, refexpr); WRITE_NODE_PTR_FIELD(refassgnexpr, refassgnexpr, refassgnexpr); } static void _outFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) out, const FuncExpr *node) { WRITE_UINT_FIELD(funcid, funcid, funcid); WRITE_UINT_FIELD(funcresulttype, funcresulttype, funcresulttype); WRITE_BOOL_FIELD(funcretset, funcretset, funcretset); WRITE_BOOL_FIELD(funcvariadic, funcvariadic, funcvariadic); WRITE_ENUM_FIELD(CoercionForm, funcformat, funcformat, funcformat); WRITE_UINT_FIELD(funccollid, funccollid, funccollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) out, const NamedArgExpr *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_STRING_FIELD(name, name, name); WRITE_INT_FIELD(argnumber, argnumber, argnumber); WRITE_INT_FIELD(location, location, location); } static void _outOpExpr(OUT_TYPE(OpExpr, OpExpr) out, const OpExpr *node) { WRITE_UINT_FIELD(opno, opno, opno); WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); WRITE_UINT_FIELD(opresulttype, opresulttype, opresulttype); WRITE_BOOL_FIELD(opretset, opretset, opretset); WRITE_UINT_FIELD(opcollid, opcollid, opcollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) out, const DistinctExpr *node) { WRITE_UINT_FIELD(opno, opno, opno); WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); WRITE_UINT_FIELD(opresulttype, opresulttype, opresulttype); WRITE_BOOL_FIELD(opretset, opretset, opretset); WRITE_UINT_FIELD(opcollid, opcollid, opcollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) out, const NullIfExpr *node) { WRITE_UINT_FIELD(opno, opno, opno); WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); WRITE_UINT_FIELD(opresulttype, opresulttype, opresulttype); WRITE_BOOL_FIELD(opretset, opretset, opretset); WRITE_UINT_FIELD(opcollid, opcollid, opcollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) out, const ScalarArrayOpExpr *node) { WRITE_UINT_FIELD(opno, opno, opno); WRITE_UINT_FIELD(opfuncid, opfuncid, opfuncid); WRITE_BOOL_FIELD(use_or, useOr, useOr); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) out, const BoolExpr *node) { WRITE_ENUM_FIELD(BoolExprType, boolop, boolop, boolop); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outSubLink(OUT_TYPE(SubLink, SubLink) out, const SubLink *node) { WRITE_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); WRITE_INT_FIELD(sub_link_id, subLinkId, subLinkId); WRITE_NODE_PTR_FIELD(testexpr, testexpr, testexpr); WRITE_LIST_FIELD(oper_name, operName, operName); WRITE_NODE_PTR_FIELD(subselect, subselect, subselect); WRITE_INT_FIELD(location, location, location); } static void _outSubPlan(OUT_TYPE(SubPlan, SubPlan) out, const SubPlan *node) { WRITE_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); WRITE_NODE_PTR_FIELD(testexpr, testexpr, testexpr); WRITE_LIST_FIELD(param_ids, paramIds, paramIds); WRITE_INT_FIELD(plan_id, plan_id, plan_id); WRITE_STRING_FIELD(plan_name, plan_name, plan_name); WRITE_UINT_FIELD(first_col_type, firstColType, firstColType); WRITE_INT_FIELD(first_col_typmod, firstColTypmod, firstColTypmod); WRITE_UINT_FIELD(first_col_collation, firstColCollation, firstColCollation); WRITE_BOOL_FIELD(use_hash_table, useHashTable, useHashTable); WRITE_BOOL_FIELD(unknown_eq_false, unknownEqFalse, unknownEqFalse); WRITE_BOOL_FIELD(parallel_safe, parallel_safe, parallel_safe); WRITE_LIST_FIELD(set_param, setParam, setParam); WRITE_LIST_FIELD(par_param, parParam, parParam); WRITE_LIST_FIELD(args, args, args); WRITE_FLOAT_FIELD(startup_cost, startup_cost, startup_cost); WRITE_FLOAT_FIELD(per_call_cost, per_call_cost, per_call_cost); } static void _outAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) out, const AlternativeSubPlan *node) { WRITE_LIST_FIELD(subplans, subplans, subplans); } static void _outFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) out, const FieldSelect *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_INT_FIELD(fieldnum, fieldnum, fieldnum); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); } static void _outFieldStore(OUT_TYPE(FieldStore, FieldStore) out, const FieldStore *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_LIST_FIELD(newvals, newvals, newvals); WRITE_LIST_FIELD(fieldnums, fieldnums, fieldnums); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); } static void _outRelabelType(OUT_TYPE(RelabelType, RelabelType) out, const RelabelType *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); WRITE_ENUM_FIELD(CoercionForm, relabelformat, relabelformat, relabelformat); WRITE_INT_FIELD(location, location, location); } static void _outCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) out, const CoerceViaIO *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); WRITE_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); WRITE_INT_FIELD(location, location, location); } static void _outArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) out, const ArrayCoerceExpr *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_NODE_PTR_FIELD(elemexpr, elemexpr, elemexpr); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); WRITE_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); WRITE_INT_FIELD(location, location, location); } static void _outConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) out, const ConvertRowtypeExpr *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_ENUM_FIELD(CoercionForm, convertformat, convertformat, convertformat); WRITE_INT_FIELD(location, location, location); } static void _outCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) out, const CollateExpr *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_UINT_FIELD(coll_oid, collOid, collOid); WRITE_INT_FIELD(location, location, location); } static void _outCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) out, const CaseExpr *node) { WRITE_UINT_FIELD(casetype, casetype, casetype); WRITE_UINT_FIELD(casecollid, casecollid, casecollid); WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_LIST_FIELD(args, args, args); WRITE_NODE_PTR_FIELD(defresult, defresult, defresult); WRITE_INT_FIELD(location, location, location); } static void _outCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) out, const CaseWhen *node) { WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_NODE_PTR_FIELD(result, result, result); WRITE_INT_FIELD(location, location, location); } static void _outCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) out, const CaseTestExpr *node) { WRITE_UINT_FIELD(type_id, typeId, typeId); WRITE_INT_FIELD(type_mod, typeMod, typeMod); WRITE_UINT_FIELD(collation, collation, collation); } static void _outArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) out, const ArrayExpr *node) { WRITE_UINT_FIELD(array_typeid, array_typeid, array_typeid); WRITE_UINT_FIELD(array_collid, array_collid, array_collid); WRITE_UINT_FIELD(element_typeid, element_typeid, element_typeid); WRITE_LIST_FIELD(elements, elements, elements); WRITE_BOOL_FIELD(multidims, multidims, multidims); WRITE_INT_FIELD(location, location, location); } static void _outRowExpr(OUT_TYPE(RowExpr, RowExpr) out, const RowExpr *node) { WRITE_LIST_FIELD(args, args, args); WRITE_UINT_FIELD(row_typeid, row_typeid, row_typeid); WRITE_ENUM_FIELD(CoercionForm, row_format, row_format, row_format); WRITE_LIST_FIELD(colnames, colnames, colnames); WRITE_INT_FIELD(location, location, location); } static void _outRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) out, const RowCompareExpr *node) { WRITE_ENUM_FIELD(RowCompareType, rctype, rctype, rctype); WRITE_LIST_FIELD(opnos, opnos, opnos); WRITE_LIST_FIELD(opfamilies, opfamilies, opfamilies); WRITE_LIST_FIELD(inputcollids, inputcollids, inputcollids); WRITE_LIST_FIELD(largs, largs, largs); WRITE_LIST_FIELD(rargs, rargs, rargs); } static void _outCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) out, const CoalesceExpr *node) { WRITE_UINT_FIELD(coalescetype, coalescetype, coalescetype); WRITE_UINT_FIELD(coalescecollid, coalescecollid, coalescecollid); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) out, const MinMaxExpr *node) { WRITE_UINT_FIELD(minmaxtype, minmaxtype, minmaxtype); WRITE_UINT_FIELD(minmaxcollid, minmaxcollid, minmaxcollid); WRITE_UINT_FIELD(inputcollid, inputcollid, inputcollid); WRITE_ENUM_FIELD(MinMaxOp, op, op, op); WRITE_LIST_FIELD(args, args, args); WRITE_INT_FIELD(location, location, location); } static void _outSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) out, const SQLValueFunction *node) { WRITE_ENUM_FIELD(SQLValueFunctionOp, op, op, op); WRITE_UINT_FIELD(type, type, type); WRITE_INT_FIELD(typmod, typmod, typmod); WRITE_INT_FIELD(location, location, location); } static void _outXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) out, const XmlExpr *node) { WRITE_ENUM_FIELD(XmlExprOp, op, op, op); WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(named_args, named_args, named_args); WRITE_LIST_FIELD(arg_names, arg_names, arg_names); WRITE_LIST_FIELD(args, args, args); WRITE_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); WRITE_UINT_FIELD(type, type, type); WRITE_INT_FIELD(typmod, typmod, typmod); WRITE_INT_FIELD(location, location, location); } static void _outNullTest(OUT_TYPE(NullTest, NullTest) out, const NullTest *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_ENUM_FIELD(NullTestType, nulltesttype, nulltesttype, nulltesttype); WRITE_BOOL_FIELD(argisrow, argisrow, argisrow); WRITE_INT_FIELD(location, location, location); } static void _outBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) out, const BooleanTest *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_ENUM_FIELD(BoolTestType, booltesttype, booltesttype, booltesttype); WRITE_INT_FIELD(location, location, location); } static void _outCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) out, const CoerceToDomain *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_UINT_FIELD(resulttype, resulttype, resulttype); WRITE_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); WRITE_UINT_FIELD(resultcollid, resultcollid, resultcollid); WRITE_ENUM_FIELD(CoercionForm, coercionformat, coercionformat, coercionformat); WRITE_INT_FIELD(location, location, location); } static void _outCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) out, const CoerceToDomainValue *node) { WRITE_UINT_FIELD(type_id, typeId, typeId); WRITE_INT_FIELD(type_mod, typeMod, typeMod); WRITE_UINT_FIELD(collation, collation, collation); WRITE_INT_FIELD(location, location, location); } static void _outSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) out, const SetToDefault *node) { WRITE_UINT_FIELD(type_id, typeId, typeId); WRITE_INT_FIELD(type_mod, typeMod, typeMod); WRITE_UINT_FIELD(collation, collation, collation); WRITE_INT_FIELD(location, location, location); } static void _outCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) out, const CurrentOfExpr *node) { WRITE_UINT_FIELD(cvarno, cvarno, cvarno); WRITE_STRING_FIELD(cursor_name, cursor_name, cursor_name); WRITE_INT_FIELD(cursor_param, cursor_param, cursor_param); } static void _outNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) out, const NextValueExpr *node) { WRITE_UINT_FIELD(seqid, seqid, seqid); WRITE_UINT_FIELD(type_id, typeId, typeId); } static void _outInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) out, const InferenceElem *node) { WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_UINT_FIELD(infercollid, infercollid, infercollid); WRITE_UINT_FIELD(inferopclass, inferopclass, inferopclass); } static void _outTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) out, const TargetEntry *node) { WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_INT_FIELD(resno, resno, resno); WRITE_STRING_FIELD(resname, resname, resname); WRITE_UINT_FIELD(ressortgroupref, ressortgroupref, ressortgroupref); WRITE_UINT_FIELD(resorigtbl, resorigtbl, resorigtbl); WRITE_INT_FIELD(resorigcol, resorigcol, resorigcol); WRITE_BOOL_FIELD(resjunk, resjunk, resjunk); } static void _outRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) out, const RangeTblRef *node) { WRITE_INT_FIELD(rtindex, rtindex, rtindex); } static void _outJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) out, const JoinExpr *node) { WRITE_ENUM_FIELD(JoinType, jointype, jointype, jointype); WRITE_BOOL_FIELD(is_natural, isNatural, isNatural); WRITE_NODE_PTR_FIELD(larg, larg, larg); WRITE_NODE_PTR_FIELD(rarg, rarg, rarg); WRITE_LIST_FIELD(using_clause, usingClause, usingClause); WRITE_NODE_PTR_FIELD(quals, quals, quals); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_INT_FIELD(rtindex, rtindex, rtindex); } static void _outFromExpr(OUT_TYPE(FromExpr, FromExpr) out, const FromExpr *node) { WRITE_LIST_FIELD(fromlist, fromlist, fromlist); WRITE_NODE_PTR_FIELD(quals, quals, quals); } static void _outOnConflictExpr(OUT_TYPE(OnConflictExpr, OnConflictExpr) out, const OnConflictExpr *node) { WRITE_ENUM_FIELD(OnConflictAction, action, action, action); WRITE_LIST_FIELD(arbiter_elems, arbiterElems, arbiterElems); WRITE_NODE_PTR_FIELD(arbiter_where, arbiterWhere, arbiterWhere); WRITE_UINT_FIELD(constraint, constraint, constraint); WRITE_LIST_FIELD(on_conflict_set, onConflictSet, onConflictSet); WRITE_NODE_PTR_FIELD(on_conflict_where, onConflictWhere, onConflictWhere); WRITE_INT_FIELD(excl_rel_index, exclRelIndex, exclRelIndex); WRITE_LIST_FIELD(excl_rel_tlist, exclRelTlist, exclRelTlist); } static void _outIntoClause(OUT_TYPE(IntoClause, IntoClause) out, const IntoClause *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, rel, rel, rel); WRITE_LIST_FIELD(col_names, colNames, colNames); WRITE_STRING_FIELD(access_method, accessMethod, accessMethod); WRITE_LIST_FIELD(options, options, options); WRITE_ENUM_FIELD(OnCommitAction, on_commit, onCommit, onCommit); WRITE_STRING_FIELD(table_space_name, tableSpaceName, tableSpaceName); WRITE_NODE_PTR_FIELD(view_query, viewQuery, viewQuery); WRITE_BOOL_FIELD(skip_data, skipData, skipData); } static void _outRawStmt(OUT_TYPE(RawStmt, RawStmt) out, const RawStmt *node) { WRITE_NODE_PTR_FIELD(stmt, stmt, stmt); WRITE_INT_FIELD(stmt_location, stmt_location, stmt_location); WRITE_INT_FIELD(stmt_len, stmt_len, stmt_len); } static void _outQuery(OUT_TYPE(Query, Query) out, const Query *node) { WRITE_ENUM_FIELD(CmdType, command_type, commandType, commandType); WRITE_ENUM_FIELD(QuerySource, query_source, querySource, querySource); WRITE_BOOL_FIELD(can_set_tag, canSetTag, canSetTag); WRITE_NODE_PTR_FIELD(utility_stmt, utilityStmt, utilityStmt); WRITE_INT_FIELD(result_relation, resultRelation, resultRelation); WRITE_BOOL_FIELD(has_aggs, hasAggs, hasAggs); WRITE_BOOL_FIELD(has_window_funcs, hasWindowFuncs, hasWindowFuncs); WRITE_BOOL_FIELD(has_target_srfs, hasTargetSRFs, hasTargetSRFs); WRITE_BOOL_FIELD(has_sub_links, hasSubLinks, hasSubLinks); WRITE_BOOL_FIELD(has_distinct_on, hasDistinctOn, hasDistinctOn); WRITE_BOOL_FIELD(has_recursive, hasRecursive, hasRecursive); WRITE_BOOL_FIELD(has_modifying_cte, hasModifyingCTE, hasModifyingCTE); WRITE_BOOL_FIELD(has_for_update, hasForUpdate, hasForUpdate); WRITE_BOOL_FIELD(has_row_security, hasRowSecurity, hasRowSecurity); WRITE_LIST_FIELD(cte_list, cteList, cteList); WRITE_LIST_FIELD(rtable, rtable, rtable); WRITE_SPECIFIC_NODE_PTR_FIELD(FromExpr, from_expr, jointree, jointree, jointree); WRITE_LIST_FIELD(target_list, targetList, targetList); WRITE_ENUM_FIELD(OverridingKind, override, override, override); WRITE_SPECIFIC_NODE_PTR_FIELD(OnConflictExpr, on_conflict_expr, on_conflict, onConflict, onConflict); WRITE_LIST_FIELD(returning_list, returningList, returningList); WRITE_LIST_FIELD(group_clause, groupClause, groupClause); WRITE_LIST_FIELD(grouping_sets, groupingSets, groupingSets); WRITE_NODE_PTR_FIELD(having_qual, havingQual, havingQual); WRITE_LIST_FIELD(window_clause, windowClause, windowClause); WRITE_LIST_FIELD(distinct_clause, distinctClause, distinctClause); WRITE_LIST_FIELD(sort_clause, sortClause, sortClause); WRITE_NODE_PTR_FIELD(limit_offset, limitOffset, limitOffset); WRITE_NODE_PTR_FIELD(limit_count, limitCount, limitCount); WRITE_ENUM_FIELD(LimitOption, limit_option, limitOption, limitOption); WRITE_LIST_FIELD(row_marks, rowMarks, rowMarks); WRITE_NODE_PTR_FIELD(set_operations, setOperations, setOperations); WRITE_LIST_FIELD(constraint_deps, constraintDeps, constraintDeps); WRITE_LIST_FIELD(with_check_options, withCheckOptions, withCheckOptions); WRITE_INT_FIELD(stmt_location, stmt_location, stmt_location); WRITE_INT_FIELD(stmt_len, stmt_len, stmt_len); } static void _outInsertStmt(OUT_TYPE(InsertStmt, InsertStmt) out, const InsertStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_LIST_FIELD(cols, cols, cols); WRITE_NODE_PTR_FIELD(select_stmt, selectStmt, selectStmt); WRITE_SPECIFIC_NODE_PTR_FIELD(OnConflictClause, on_conflict_clause, on_conflict_clause, onConflictClause, onConflictClause); WRITE_LIST_FIELD(returning_list, returningList, returningList); WRITE_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); WRITE_ENUM_FIELD(OverridingKind, override, override, override); } static void _outDeleteStmt(OUT_TYPE(DeleteStmt, DeleteStmt) out, const DeleteStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_LIST_FIELD(using_clause, usingClause, usingClause); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_LIST_FIELD(returning_list, returningList, returningList); WRITE_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); } static void _outUpdateStmt(OUT_TYPE(UpdateStmt, UpdateStmt) out, const UpdateStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_LIST_FIELD(target_list, targetList, targetList); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_LIST_FIELD(from_clause, fromClause, fromClause); WRITE_LIST_FIELD(returning_list, returningList, returningList); WRITE_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); } static void _outSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) out, const SelectStmt *node) { WRITE_LIST_FIELD(distinct_clause, distinctClause, distinctClause); WRITE_SPECIFIC_NODE_PTR_FIELD(IntoClause, into_clause, into_clause, intoClause, intoClause); WRITE_LIST_FIELD(target_list, targetList, targetList); WRITE_LIST_FIELD(from_clause, fromClause, fromClause); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_LIST_FIELD(group_clause, groupClause, groupClause); WRITE_NODE_PTR_FIELD(having_clause, havingClause, havingClause); WRITE_LIST_FIELD(window_clause, windowClause, windowClause); WRITE_LIST_FIELD(values_lists, valuesLists, valuesLists); WRITE_LIST_FIELD(sort_clause, sortClause, sortClause); WRITE_NODE_PTR_FIELD(limit_offset, limitOffset, limitOffset); WRITE_NODE_PTR_FIELD(limit_count, limitCount, limitCount); WRITE_ENUM_FIELD(LimitOption, limit_option, limitOption, limitOption); WRITE_LIST_FIELD(locking_clause, lockingClause, lockingClause); WRITE_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); WRITE_ENUM_FIELD(SetOperation, op, op, op); WRITE_BOOL_FIELD(all, all, all); WRITE_SPECIFIC_NODE_PTR_FIELD(SelectStmt, select_stmt, larg, larg, larg); WRITE_SPECIFIC_NODE_PTR_FIELD(SelectStmt, select_stmt, rarg, rarg, rarg); } static void _outAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) out, const AlterTableStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_LIST_FIELD(cmds, cmds, cmds); WRITE_ENUM_FIELD(ObjectType, relkind, relkind, relkind); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) out, const AlterTableCmd *node) { WRITE_ENUM_FIELD(AlterTableType, subtype, subtype, subtype); WRITE_STRING_FIELD(name, name, name); WRITE_INT_FIELD(num, num, num); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newowner, newowner, newowner); WRITE_NODE_PTR_FIELD(def, def, def); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) out, const AlterDomainStmt *node) { WRITE_CHAR_FIELD(subtype, subtype, subtype); WRITE_LIST_FIELD(type_name, typeName, typeName); WRITE_STRING_FIELD(name, name, name); WRITE_NODE_PTR_FIELD(def, def, def); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) out, const SetOperationStmt *node) { WRITE_ENUM_FIELD(SetOperation, op, op, op); WRITE_BOOL_FIELD(all, all, all); WRITE_NODE_PTR_FIELD(larg, larg, larg); WRITE_NODE_PTR_FIELD(rarg, rarg, rarg); WRITE_LIST_FIELD(col_types, colTypes, colTypes); WRITE_LIST_FIELD(col_typmods, colTypmods, colTypmods); WRITE_LIST_FIELD(col_collations, colCollations, colCollations); WRITE_LIST_FIELD(group_clauses, groupClauses, groupClauses); } static void _outGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) out, const GrantStmt *node) { WRITE_BOOL_FIELD(is_grant, is_grant, is_grant); WRITE_ENUM_FIELD(GrantTargetType, targtype, targtype, targtype); WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_LIST_FIELD(objects, objects, objects); WRITE_LIST_FIELD(privileges, privileges, privileges); WRITE_LIST_FIELD(grantees, grantees, grantees); WRITE_BOOL_FIELD(grant_option, grant_option, grant_option); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); } static void _outGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) out, const GrantRoleStmt *node) { WRITE_LIST_FIELD(granted_roles, granted_roles, granted_roles); WRITE_LIST_FIELD(grantee_roles, grantee_roles, grantee_roles); WRITE_BOOL_FIELD(is_grant, is_grant, is_grant); WRITE_BOOL_FIELD(admin_opt, admin_opt, admin_opt); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, grantor, grantor, grantor); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); } static void _outAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) out, const AlterDefaultPrivilegesStmt *node) { WRITE_LIST_FIELD(options, options, options); WRITE_SPECIFIC_NODE_PTR_FIELD(GrantStmt, grant_stmt, action, action, action); } static void _outClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) out, const ClosePortalStmt *node) { WRITE_STRING_FIELD(portalname, portalname, portalname); } static void _outClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) out, const ClusterStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_STRING_FIELD(indexname, indexname, indexname); WRITE_INT_FIELD(options, options, options); } static void _outCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) out, const CopyStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_NODE_PTR_FIELD(query, query, query); WRITE_LIST_FIELD(attlist, attlist, attlist); WRITE_BOOL_FIELD(is_from, is_from, is_from); WRITE_BOOL_FIELD(is_program, is_program, is_program); WRITE_STRING_FIELD(filename, filename, filename); WRITE_LIST_FIELD(options, options, options); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); } static void _outCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) out, const CreateStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_LIST_FIELD(table_elts, tableElts, tableElts); WRITE_LIST_FIELD(inh_relations, inhRelations, inhRelations); WRITE_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, partbound, partbound, partbound); WRITE_SPECIFIC_NODE_PTR_FIELD(PartitionSpec, partition_spec, partspec, partspec, partspec); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, of_typename, ofTypename, ofTypename); WRITE_LIST_FIELD(constraints, constraints, constraints); WRITE_LIST_FIELD(options, options, options); WRITE_ENUM_FIELD(OnCommitAction, oncommit, oncommit, oncommit); WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); WRITE_STRING_FIELD(access_method, accessMethod, accessMethod); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); } static void _outDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) out, const DefineStmt *node) { WRITE_ENUM_FIELD(ObjectType, kind, kind, kind); WRITE_BOOL_FIELD(oldstyle, oldstyle, oldstyle); WRITE_LIST_FIELD(defnames, defnames, defnames); WRITE_LIST_FIELD(args, args, args); WRITE_LIST_FIELD(definition, definition, definition); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); WRITE_BOOL_FIELD(replace, replace, replace); } static void _outDropStmt(OUT_TYPE(DropStmt, DropStmt) out, const DropStmt *node) { WRITE_LIST_FIELD(objects, objects, objects); WRITE_ENUM_FIELD(ObjectType, remove_type, removeType, removeType); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); } static void _outTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) out, const TruncateStmt *node) { WRITE_LIST_FIELD(relations, relations, relations); WRITE_BOOL_FIELD(restart_seqs, restart_seqs, restart_seqs); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); } static void _outCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) out, const CommentStmt *node) { WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_NODE_PTR_FIELD(object, object, object); WRITE_STRING_FIELD(comment, comment, comment); } static void _outFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) out, const FetchStmt *node) { WRITE_ENUM_FIELD(FetchDirection, direction, direction, direction); WRITE_LONG_FIELD(how_many, howMany, howMany); WRITE_STRING_FIELD(portalname, portalname, portalname); WRITE_BOOL_FIELD(ismove, ismove, ismove); } static void _outIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) out, const IndexStmt *node) { WRITE_STRING_FIELD(idxname, idxname, idxname); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_STRING_FIELD(access_method, accessMethod, accessMethod); WRITE_STRING_FIELD(table_space, tableSpace, tableSpace); WRITE_LIST_FIELD(index_params, indexParams, indexParams); WRITE_LIST_FIELD(index_including_params, indexIncludingParams, indexIncludingParams); WRITE_LIST_FIELD(options, options, options); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_LIST_FIELD(exclude_op_names, excludeOpNames, excludeOpNames); WRITE_STRING_FIELD(idxcomment, idxcomment, idxcomment); WRITE_UINT_FIELD(index_oid, indexOid, indexOid); WRITE_UINT_FIELD(old_node, oldNode, oldNode); WRITE_UINT_FIELD(old_create_subid, oldCreateSubid, oldCreateSubid); WRITE_UINT_FIELD(old_first_relfilenode_subid, oldFirstRelfilenodeSubid, oldFirstRelfilenodeSubid); WRITE_BOOL_FIELD(unique, unique, unique); WRITE_BOOL_FIELD(primary, primary, primary); WRITE_BOOL_FIELD(isconstraint, isconstraint, isconstraint); WRITE_BOOL_FIELD(deferrable, deferrable, deferrable); WRITE_BOOL_FIELD(initdeferred, initdeferred, initdeferred); WRITE_BOOL_FIELD(transformed, transformed, transformed); WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); WRITE_BOOL_FIELD(reset_default_tblspc, reset_default_tblspc, reset_default_tblspc); } static void _outCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) out, const CreateFunctionStmt *node) { WRITE_BOOL_FIELD(is_procedure, is_procedure, is_procedure); WRITE_BOOL_FIELD(replace, replace, replace); WRITE_LIST_FIELD(funcname, funcname, funcname); WRITE_LIST_FIELD(parameters, parameters, parameters); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, return_type, returnType, returnType); WRITE_LIST_FIELD(options, options, options); } static void _outAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) out, const AlterFunctionStmt *node) { WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); WRITE_LIST_FIELD(actions, actions, actions); } static void _outDoStmt(OUT_TYPE(DoStmt, DoStmt) out, const DoStmt *node) { WRITE_LIST_FIELD(args, args, args); } static void _outRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) out, const RenameStmt *node) { WRITE_ENUM_FIELD(ObjectType, rename_type, renameType, renameType); WRITE_ENUM_FIELD(ObjectType, relation_type, relationType, relationType); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_NODE_PTR_FIELD(object, object, object); WRITE_STRING_FIELD(subname, subname, subname); WRITE_STRING_FIELD(newname, newname, newname); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) out, const RuleStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_STRING_FIELD(rulename, rulename, rulename); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_ENUM_FIELD(CmdType, event, event, event); WRITE_BOOL_FIELD(instead, instead, instead); WRITE_LIST_FIELD(actions, actions, actions); WRITE_BOOL_FIELD(replace, replace, replace); } static void _outNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) out, const NotifyStmt *node) { WRITE_STRING_FIELD(conditionname, conditionname, conditionname); WRITE_STRING_FIELD(payload, payload, payload); } static void _outListenStmt(OUT_TYPE(ListenStmt, ListenStmt) out, const ListenStmt *node) { WRITE_STRING_FIELD(conditionname, conditionname, conditionname); } static void _outUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) out, const UnlistenStmt *node) { WRITE_STRING_FIELD(conditionname, conditionname, conditionname); } static void _outTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) out, const TransactionStmt *node) { WRITE_ENUM_FIELD(TransactionStmtKind, kind, kind, kind); WRITE_LIST_FIELD(options, options, options); WRITE_STRING_FIELD(savepoint_name, savepoint_name, savepoint_name); WRITE_STRING_FIELD(gid, gid, gid); WRITE_BOOL_FIELD(chain, chain, chain); } static void _outViewStmt(OUT_TYPE(ViewStmt, ViewStmt) out, const ViewStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, view, view, view); WRITE_LIST_FIELD(aliases, aliases, aliases); WRITE_NODE_PTR_FIELD(query, query, query); WRITE_BOOL_FIELD(replace, replace, replace); WRITE_LIST_FIELD(options, options, options); WRITE_ENUM_FIELD(ViewCheckOption, with_check_option, withCheckOption, withCheckOption); } static void _outLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) out, const LoadStmt *node) { WRITE_STRING_FIELD(filename, filename, filename); } static void _outCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) out, const CreateDomainStmt *node) { WRITE_LIST_FIELD(domainname, domainname, domainname); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); WRITE_LIST_FIELD(constraints, constraints, constraints); } static void _outCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) out, const CreatedbStmt *node) { WRITE_STRING_FIELD(dbname, dbname, dbname); WRITE_LIST_FIELD(options, options, options); } static void _outDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) out, const DropdbStmt *node) { WRITE_STRING_FIELD(dbname, dbname, dbname); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); WRITE_LIST_FIELD(options, options, options); } static void _outVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) out, const VacuumStmt *node) { WRITE_LIST_FIELD(options, options, options); WRITE_LIST_FIELD(rels, rels, rels); WRITE_BOOL_FIELD(is_vacuumcmd, is_vacuumcmd, is_vacuumcmd); } static void _outExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) out, const ExplainStmt *node) { WRITE_NODE_PTR_FIELD(query, query, query); WRITE_LIST_FIELD(options, options, options); } static void _outCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) out, const CreateTableAsStmt *node) { WRITE_NODE_PTR_FIELD(query, query, query); WRITE_SPECIFIC_NODE_PTR_FIELD(IntoClause, into_clause, into, into, into); WRITE_ENUM_FIELD(ObjectType, relkind, relkind, relkind); WRITE_BOOL_FIELD(is_select_into, is_select_into, is_select_into); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); } static void _outCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) out, const CreateSeqStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); WRITE_LIST_FIELD(options, options, options); WRITE_UINT_FIELD(owner_id, ownerId, ownerId); WRITE_BOOL_FIELD(for_identity, for_identity, for_identity); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); } static void _outAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) out, const AlterSeqStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); WRITE_LIST_FIELD(options, options, options); WRITE_BOOL_FIELD(for_identity, for_identity, for_identity); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) out, const VariableSetStmt *node) { WRITE_ENUM_FIELD(VariableSetKind, kind, kind, kind); WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(args, args, args); WRITE_BOOL_FIELD(is_local, is_local, is_local); } static void _outVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) out, const VariableShowStmt *node) { WRITE_STRING_FIELD(name, name, name); } static void _outDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) out, const DiscardStmt *node) { WRITE_ENUM_FIELD(DiscardMode, target, target, target); } static void _outCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) out, const CreateTrigStmt *node) { WRITE_STRING_FIELD(trigname, trigname, trigname); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_LIST_FIELD(funcname, funcname, funcname); WRITE_LIST_FIELD(args, args, args); WRITE_BOOL_FIELD(row, row, row); WRITE_INT_FIELD(timing, timing, timing); WRITE_INT_FIELD(events, events, events); WRITE_LIST_FIELD(columns, columns, columns); WRITE_NODE_PTR_FIELD(when_clause, whenClause, whenClause); WRITE_BOOL_FIELD(isconstraint, isconstraint, isconstraint); WRITE_LIST_FIELD(transition_rels, transitionRels, transitionRels); WRITE_BOOL_FIELD(deferrable, deferrable, deferrable); WRITE_BOOL_FIELD(initdeferred, initdeferred, initdeferred); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, constrrel, constrrel, constrrel); } static void _outCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) out, const CreatePLangStmt *node) { WRITE_BOOL_FIELD(replace, replace, replace); WRITE_STRING_FIELD(plname, plname, plname); WRITE_LIST_FIELD(plhandler, plhandler, plhandler); WRITE_LIST_FIELD(plinline, plinline, plinline); WRITE_LIST_FIELD(plvalidator, plvalidator, plvalidator); WRITE_BOOL_FIELD(pltrusted, pltrusted, pltrusted); } static void _outCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) out, const CreateRoleStmt *node) { WRITE_ENUM_FIELD(RoleStmtType, stmt_type, stmt_type, stmt_type); WRITE_STRING_FIELD(role, role, role); WRITE_LIST_FIELD(options, options, options); } static void _outAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) out, const AlterRoleStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); WRITE_LIST_FIELD(options, options, options); WRITE_INT_FIELD(action, action, action); } static void _outDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) out, const DropRoleStmt *node) { WRITE_LIST_FIELD(roles, roles, roles); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outLockStmt(OUT_TYPE(LockStmt, LockStmt) out, const LockStmt *node) { WRITE_LIST_FIELD(relations, relations, relations); WRITE_INT_FIELD(mode, mode, mode); WRITE_BOOL_FIELD(nowait, nowait, nowait); } static void _outConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) out, const ConstraintsSetStmt *node) { WRITE_LIST_FIELD(constraints, constraints, constraints); WRITE_BOOL_FIELD(deferred, deferred, deferred); } static void _outReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) out, const ReindexStmt *node) { WRITE_ENUM_FIELD(ReindexObjectType, kind, kind, kind); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_STRING_FIELD(name, name, name); WRITE_INT_FIELD(options, options, options); WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); } static void _outCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) out, const CheckPointStmt *node) { } static void _outCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) out, const CreateSchemaStmt *node) { WRITE_STRING_FIELD(schemaname, schemaname, schemaname); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, authrole, authrole, authrole); WRITE_LIST_FIELD(schema_elts, schemaElts, schemaElts); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); } static void _outAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) out, const AlterDatabaseStmt *node) { WRITE_STRING_FIELD(dbname, dbname, dbname); WRITE_LIST_FIELD(options, options, options); } static void _outAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) out, const AlterDatabaseSetStmt *node) { WRITE_STRING_FIELD(dbname, dbname, dbname); WRITE_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); } static void _outAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) out, const AlterRoleSetStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); WRITE_STRING_FIELD(database, database, database); WRITE_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); } static void _outCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) out, const CreateConversionStmt *node) { WRITE_LIST_FIELD(conversion_name, conversion_name, conversion_name); WRITE_STRING_FIELD(for_encoding_name, for_encoding_name, for_encoding_name); WRITE_STRING_FIELD(to_encoding_name, to_encoding_name, to_encoding_name); WRITE_LIST_FIELD(func_name, func_name, func_name); WRITE_BOOL_FIELD(def, def, def); } static void _outCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) out, const CreateCastStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, sourcetype, sourcetype, sourcetype); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, targettype, targettype, targettype); WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); WRITE_ENUM_FIELD(CoercionContext, context, context, context); WRITE_BOOL_FIELD(inout, inout, inout); } static void _outCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) out, const CreateOpClassStmt *node) { WRITE_LIST_FIELD(opclassname, opclassname, opclassname); WRITE_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); WRITE_STRING_FIELD(amname, amname, amname); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, datatype, datatype, datatype); WRITE_LIST_FIELD(items, items, items); WRITE_BOOL_FIELD(is_default, isDefault, isDefault); } static void _outCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) out, const CreateOpFamilyStmt *node) { WRITE_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); WRITE_STRING_FIELD(amname, amname, amname); } static void _outAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) out, const AlterOpFamilyStmt *node) { WRITE_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); WRITE_STRING_FIELD(amname, amname, amname); WRITE_BOOL_FIELD(is_drop, isDrop, isDrop); WRITE_LIST_FIELD(items, items, items); } static void _outPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) out, const PrepareStmt *node) { WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(argtypes, argtypes, argtypes); WRITE_NODE_PTR_FIELD(query, query, query); } static void _outExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) out, const ExecuteStmt *node) { WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(params, params, params); } static void _outDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) out, const DeallocateStmt *node) { WRITE_STRING_FIELD(name, name, name); } static void _outDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) out, const DeclareCursorStmt *node) { WRITE_STRING_FIELD(portalname, portalname, portalname); WRITE_INT_FIELD(options, options, options); WRITE_NODE_PTR_FIELD(query, query, query); } static void _outCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) out, const CreateTableSpaceStmt *node) { WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, owner, owner, owner); WRITE_STRING_FIELD(location, location, location); WRITE_LIST_FIELD(options, options, options); } static void _outDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) out, const DropTableSpaceStmt *node) { WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) out, const AlterObjectDependsStmt *node) { WRITE_ENUM_FIELD(ObjectType, object_type, objectType, objectType); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_NODE_PTR_FIELD(object, object, object); WRITE_NODE_PTR_FIELD(extname, extname, extname); WRITE_BOOL_FIELD(remove, remove, remove); } static void _outAlterObjectSchemaStmt(OUT_TYPE(AlterObjectSchemaStmt, AlterObjectSchemaStmt) out, const AlterObjectSchemaStmt *node) { WRITE_ENUM_FIELD(ObjectType, object_type, objectType, objectType); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_NODE_PTR_FIELD(object, object, object); WRITE_STRING_FIELD(newschema, newschema, newschema); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outAlterOwnerStmt(OUT_TYPE(AlterOwnerStmt, AlterOwnerStmt) out, const AlterOwnerStmt *node) { WRITE_ENUM_FIELD(ObjectType, object_type, objectType, objectType); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_NODE_PTR_FIELD(object, object, object); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newowner, newowner, newowner); } static void _outAlterOperatorStmt(OUT_TYPE(AlterOperatorStmt, AlterOperatorStmt) out, const AlterOperatorStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, opername, opername, opername); WRITE_LIST_FIELD(options, options, options); } static void _outAlterTypeStmt(OUT_TYPE(AlterTypeStmt, AlterTypeStmt) out, const AlterTypeStmt *node) { WRITE_LIST_FIELD(type_name, typeName, typeName); WRITE_LIST_FIELD(options, options, options); } static void _outDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) out, const DropOwnedStmt *node) { WRITE_LIST_FIELD(roles, roles, roles); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); } static void _outReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) out, const ReassignOwnedStmt *node) { WRITE_LIST_FIELD(roles, roles, roles); WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newrole, newrole, newrole); } static void _outCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) out, const CompositeTypeStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, typevar, typevar, typevar); WRITE_LIST_FIELD(coldeflist, coldeflist, coldeflist); } static void _outCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) out, const CreateEnumStmt *node) { WRITE_LIST_FIELD(type_name, typeName, typeName); WRITE_LIST_FIELD(vals, vals, vals); } static void _outCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) out, const CreateRangeStmt *node) { WRITE_LIST_FIELD(type_name, typeName, typeName); WRITE_LIST_FIELD(params, params, params); } static void _outAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) out, const AlterEnumStmt *node) { WRITE_LIST_FIELD(type_name, typeName, typeName); WRITE_STRING_FIELD(old_val, oldVal, oldVal); WRITE_STRING_FIELD(new_val, newVal, newVal); WRITE_STRING_FIELD(new_val_neighbor, newValNeighbor, newValNeighbor); WRITE_BOOL_FIELD(new_val_is_after, newValIsAfter, newValIsAfter); WRITE_BOOL_FIELD(skip_if_new_val_exists, skipIfNewValExists, skipIfNewValExists); } static void _outAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) out, const AlterTSDictionaryStmt *node) { WRITE_LIST_FIELD(dictname, dictname, dictname); WRITE_LIST_FIELD(options, options, options); } static void _outAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) out, const AlterTSConfigurationStmt *node) { WRITE_ENUM_FIELD(AlterTSConfigType, kind, kind, kind); WRITE_LIST_FIELD(cfgname, cfgname, cfgname); WRITE_LIST_FIELD(tokentype, tokentype, tokentype); WRITE_LIST_FIELD(dicts, dicts, dicts); WRITE_BOOL_FIELD(override, override, override); WRITE_BOOL_FIELD(replace, replace, replace); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) out, const CreateFdwStmt *node) { WRITE_STRING_FIELD(fdwname, fdwname, fdwname); WRITE_LIST_FIELD(func_options, func_options, func_options); WRITE_LIST_FIELD(options, options, options); } static void _outAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) out, const AlterFdwStmt *node) { WRITE_STRING_FIELD(fdwname, fdwname, fdwname); WRITE_LIST_FIELD(func_options, func_options, func_options); WRITE_LIST_FIELD(options, options, options); } static void _outCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) out, const CreateForeignServerStmt *node) { WRITE_STRING_FIELD(servername, servername, servername); WRITE_STRING_FIELD(servertype, servertype, servertype); WRITE_STRING_FIELD(version, version, version); WRITE_STRING_FIELD(fdwname, fdwname, fdwname); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); WRITE_LIST_FIELD(options, options, options); } static void _outAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) out, const AlterForeignServerStmt *node) { WRITE_STRING_FIELD(servername, servername, servername); WRITE_STRING_FIELD(version, version, version); WRITE_LIST_FIELD(options, options, options); WRITE_BOOL_FIELD(has_version, has_version, has_version); } static void _outCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) out, const CreateUserMappingStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); WRITE_STRING_FIELD(servername, servername, servername); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); WRITE_LIST_FIELD(options, options, options); } static void _outAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) out, const AlterUserMappingStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); WRITE_STRING_FIELD(servername, servername, servername); WRITE_LIST_FIELD(options, options, options); } static void _outDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) out, const DropUserMappingStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); WRITE_STRING_FIELD(servername, servername, servername); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) out, const AlterTableSpaceOptionsStmt *node) { WRITE_STRING_FIELD(tablespacename, tablespacename, tablespacename); WRITE_LIST_FIELD(options, options, options); WRITE_BOOL_FIELD(is_reset, isReset, isReset); } static void _outAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) out, const AlterTableMoveAllStmt *node) { WRITE_STRING_FIELD(orig_tablespacename, orig_tablespacename, orig_tablespacename); WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_LIST_FIELD(roles, roles, roles); WRITE_STRING_FIELD(new_tablespacename, new_tablespacename, new_tablespacename); WRITE_BOOL_FIELD(nowait, nowait, nowait); } static void _outSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) out, const SecLabelStmt *node) { WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_NODE_PTR_FIELD(object, object, object); WRITE_STRING_FIELD(provider, provider, provider); WRITE_STRING_FIELD(label, label, label); } static void _outCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) out, const CreateForeignTableStmt *node) { WRITE_SPECIFIC_NODE_FIELD(CreateStmt, create_stmt, base_stmt, base, base); WRITE_STRING_FIELD(servername, servername, servername); WRITE_LIST_FIELD(options, options, options); } static void _outImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) out, const ImportForeignSchemaStmt *node) { WRITE_STRING_FIELD(server_name, server_name, server_name); WRITE_STRING_FIELD(remote_schema, remote_schema, remote_schema); WRITE_STRING_FIELD(local_schema, local_schema, local_schema); WRITE_ENUM_FIELD(ImportForeignSchemaType, list_type, list_type, list_type); WRITE_LIST_FIELD(table_list, table_list, table_list); WRITE_LIST_FIELD(options, options, options); } static void _outCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) out, const CreateExtensionStmt *node) { WRITE_STRING_FIELD(extname, extname, extname); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); WRITE_LIST_FIELD(options, options, options); } static void _outAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) out, const AlterExtensionStmt *node) { WRITE_STRING_FIELD(extname, extname, extname); WRITE_LIST_FIELD(options, options, options); } static void _outAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) out, const AlterExtensionContentsStmt *node) { WRITE_STRING_FIELD(extname, extname, extname); WRITE_INT_FIELD(action, action, action); WRITE_ENUM_FIELD(ObjectType, objtype, objtype, objtype); WRITE_NODE_PTR_FIELD(object, object, object); } static void _outCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) out, const CreateEventTrigStmt *node) { WRITE_STRING_FIELD(trigname, trigname, trigname); WRITE_STRING_FIELD(eventname, eventname, eventname); WRITE_LIST_FIELD(whenclause, whenclause, whenclause); WRITE_LIST_FIELD(funcname, funcname, funcname); } static void _outAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) out, const AlterEventTrigStmt *node) { WRITE_STRING_FIELD(trigname, trigname, trigname); WRITE_CHAR_FIELD(tgenabled, tgenabled, tgenabled); } static void _outRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) out, const RefreshMatViewStmt *node) { WRITE_BOOL_FIELD(concurrent, concurrent, concurrent); WRITE_BOOL_FIELD(skip_data, skipData, skipData); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); } static void _outReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) out, const ReplicaIdentityStmt *node) { WRITE_CHAR_FIELD(identity_type, identity_type, identity_type); WRITE_STRING_FIELD(name, name, name); } static void _outAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) out, const AlterSystemStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); } static void _outCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) out, const CreatePolicyStmt *node) { WRITE_STRING_FIELD(policy_name, policy_name, policy_name); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); WRITE_STRING_FIELD(cmd_name, cmd_name, cmd_name); WRITE_BOOL_FIELD(permissive, permissive, permissive); WRITE_LIST_FIELD(roles, roles, roles); WRITE_NODE_PTR_FIELD(qual, qual, qual); WRITE_NODE_PTR_FIELD(with_check, with_check, with_check); } static void _outAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) out, const AlterPolicyStmt *node) { WRITE_STRING_FIELD(policy_name, policy_name, policy_name); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); WRITE_LIST_FIELD(roles, roles, roles); WRITE_NODE_PTR_FIELD(qual, qual, qual); WRITE_NODE_PTR_FIELD(with_check, with_check, with_check); } static void _outCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) out, const CreateTransformStmt *node) { WRITE_BOOL_FIELD(replace, replace, replace); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, type_name, type_name); WRITE_STRING_FIELD(lang, lang, lang); WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, fromsql, fromsql, fromsql); WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, tosql, tosql, tosql); } static void _outCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) out, const CreateAmStmt *node) { WRITE_STRING_FIELD(amname, amname, amname); WRITE_LIST_FIELD(handler_name, handler_name, handler_name); WRITE_CHAR_FIELD(amtype, amtype, amtype); } static void _outCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) out, const CreatePublicationStmt *node) { WRITE_STRING_FIELD(pubname, pubname, pubname); WRITE_LIST_FIELD(options, options, options); WRITE_LIST_FIELD(tables, tables, tables); WRITE_BOOL_FIELD(for_all_tables, for_all_tables, for_all_tables); } static void _outAlterPublicationStmt(OUT_TYPE(AlterPublicationStmt, AlterPublicationStmt) out, const AlterPublicationStmt *node) { WRITE_STRING_FIELD(pubname, pubname, pubname); WRITE_LIST_FIELD(options, options, options); WRITE_LIST_FIELD(tables, tables, tables); WRITE_BOOL_FIELD(for_all_tables, for_all_tables, for_all_tables); WRITE_ENUM_FIELD(DefElemAction, table_action, tableAction, tableAction); } static void _outCreateSubscriptionStmt(OUT_TYPE(CreateSubscriptionStmt, CreateSubscriptionStmt) out, const CreateSubscriptionStmt *node) { WRITE_STRING_FIELD(subname, subname, subname); WRITE_STRING_FIELD(conninfo, conninfo, conninfo); WRITE_LIST_FIELD(publication, publication, publication); WRITE_LIST_FIELD(options, options, options); } static void _outAlterSubscriptionStmt(OUT_TYPE(AlterSubscriptionStmt, AlterSubscriptionStmt) out, const AlterSubscriptionStmt *node) { WRITE_ENUM_FIELD(AlterSubscriptionType, kind, kind, kind); WRITE_STRING_FIELD(subname, subname, subname); WRITE_STRING_FIELD(conninfo, conninfo, conninfo); WRITE_LIST_FIELD(publication, publication, publication); WRITE_LIST_FIELD(options, options, options); } static void _outDropSubscriptionStmt(OUT_TYPE(DropSubscriptionStmt, DropSubscriptionStmt) out, const DropSubscriptionStmt *node) { WRITE_STRING_FIELD(subname, subname, subname); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); WRITE_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); } static void _outCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) out, const CreateStatsStmt *node) { WRITE_LIST_FIELD(defnames, defnames, defnames); WRITE_LIST_FIELD(stat_types, stat_types, stat_types); WRITE_LIST_FIELD(exprs, exprs, exprs); WRITE_LIST_FIELD(relations, relations, relations); WRITE_STRING_FIELD(stxcomment, stxcomment, stxcomment); WRITE_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); } static void _outAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) out, const AlterCollationStmt *node) { WRITE_LIST_FIELD(collname, collname, collname); } static void _outCallStmt(OUT_TYPE(CallStmt, CallStmt) out, const CallStmt *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(FuncCall, func_call, funccall, funccall, funccall); WRITE_SPECIFIC_NODE_PTR_FIELD(FuncExpr, func_expr, funcexpr, funcexpr, funcexpr); } static void _outAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) out, const AlterStatsStmt *node) { WRITE_LIST_FIELD(defnames, defnames, defnames); WRITE_INT_FIELD(stxstattarget, stxstattarget, stxstattarget); WRITE_BOOL_FIELD(missing_ok, missing_ok, missing_ok); } static void _outAExpr(OUT_TYPE(A_Expr, AExpr) out, const A_Expr *node) { WRITE_ENUM_FIELD(A_Expr_Kind, kind, kind, kind); WRITE_LIST_FIELD(name, name, name); WRITE_NODE_PTR_FIELD(lexpr, lexpr, lexpr); WRITE_NODE_PTR_FIELD(rexpr, rexpr, rexpr); WRITE_INT_FIELD(location, location, location); } static void _outColumnRef(OUT_TYPE(ColumnRef, ColumnRef) out, const ColumnRef *node) { WRITE_LIST_FIELD(fields, fields, fields); WRITE_INT_FIELD(location, location, location); } static void _outParamRef(OUT_TYPE(ParamRef, ParamRef) out, const ParamRef *node) { WRITE_INT_FIELD(number, number, number); WRITE_INT_FIELD(location, location, location); } static void _outAConst(OUT_TYPE(A_Const, AConst) out, const A_Const *node) { WRITE_NODE_FIELD(val, val, val); WRITE_INT_FIELD(location, location, location); } static void _outFuncCall(OUT_TYPE(FuncCall, FuncCall) out, const FuncCall *node) { WRITE_LIST_FIELD(funcname, funcname, funcname); WRITE_LIST_FIELD(args, args, args); WRITE_LIST_FIELD(agg_order, agg_order, agg_order); WRITE_NODE_PTR_FIELD(agg_filter, agg_filter, agg_filter); WRITE_BOOL_FIELD(agg_within_group, agg_within_group, agg_within_group); WRITE_BOOL_FIELD(agg_star, agg_star, agg_star); WRITE_BOOL_FIELD(agg_distinct, agg_distinct, agg_distinct); WRITE_BOOL_FIELD(func_variadic, func_variadic, func_variadic); WRITE_SPECIFIC_NODE_PTR_FIELD(WindowDef, window_def, over, over, over); WRITE_INT_FIELD(location, location, location); } static void _outAStar(OUT_TYPE(A_Star, AStar) out, const A_Star *node) { } static void _outAIndices(OUT_TYPE(A_Indices, AIndices) out, const A_Indices *node) { WRITE_BOOL_FIELD(is_slice, is_slice, is_slice); WRITE_NODE_PTR_FIELD(lidx, lidx, lidx); WRITE_NODE_PTR_FIELD(uidx, uidx, uidx); } static void _outAIndirection(OUT_TYPE(A_Indirection, AIndirection) out, const A_Indirection *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_LIST_FIELD(indirection, indirection, indirection); } static void _outAArrayExpr(OUT_TYPE(A_ArrayExpr, AArrayExpr) out, const A_ArrayExpr *node) { WRITE_LIST_FIELD(elements, elements, elements); WRITE_INT_FIELD(location, location, location); } static void _outResTarget(OUT_TYPE(ResTarget, ResTarget) out, const ResTarget *node) { WRITE_STRING_FIELD(name, name, name); WRITE_LIST_FIELD(indirection, indirection, indirection); WRITE_NODE_PTR_FIELD(val, val, val); WRITE_INT_FIELD(location, location, location); } static void _outMultiAssignRef(OUT_TYPE(MultiAssignRef, MultiAssignRef) out, const MultiAssignRef *node) { WRITE_NODE_PTR_FIELD(source, source, source); WRITE_INT_FIELD(colno, colno, colno); WRITE_INT_FIELD(ncolumns, ncolumns, ncolumns); } static void _outTypeCast(OUT_TYPE(TypeCast, TypeCast) out, const TypeCast *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_INT_FIELD(location, location, location); } static void _outCollateClause(OUT_TYPE(CollateClause, CollateClause) out, const CollateClause *node) { WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_LIST_FIELD(collname, collname, collname); WRITE_INT_FIELD(location, location, location); } static void _outSortBy(OUT_TYPE(SortBy, SortBy) out, const SortBy *node) { WRITE_NODE_PTR_FIELD(node, node, node); WRITE_ENUM_FIELD(SortByDir, sortby_dir, sortby_dir, sortby_dir); WRITE_ENUM_FIELD(SortByNulls, sortby_nulls, sortby_nulls, sortby_nulls); WRITE_LIST_FIELD(use_op, useOp, useOp); WRITE_INT_FIELD(location, location, location); } static void _outWindowDef(OUT_TYPE(WindowDef, WindowDef) out, const WindowDef *node) { WRITE_STRING_FIELD(name, name, name); WRITE_STRING_FIELD(refname, refname, refname); WRITE_LIST_FIELD(partition_clause, partitionClause, partitionClause); WRITE_LIST_FIELD(order_clause, orderClause, orderClause); WRITE_INT_FIELD(frame_options, frameOptions, frameOptions); WRITE_NODE_PTR_FIELD(start_offset, startOffset, startOffset); WRITE_NODE_PTR_FIELD(end_offset, endOffset, endOffset); WRITE_INT_FIELD(location, location, location); } static void _outRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) out, const RangeSubselect *node) { WRITE_BOOL_FIELD(lateral, lateral, lateral); WRITE_NODE_PTR_FIELD(subquery, subquery, subquery); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); } static void _outRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) out, const RangeFunction *node) { WRITE_BOOL_FIELD(lateral, lateral, lateral); WRITE_BOOL_FIELD(ordinality, ordinality, ordinality); WRITE_BOOL_FIELD(is_rowsfrom, is_rowsfrom, is_rowsfrom); WRITE_LIST_FIELD(functions, functions, functions); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_LIST_FIELD(coldeflist, coldeflist, coldeflist); } static void _outRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) out, const RangeTableSample *node) { WRITE_NODE_PTR_FIELD(relation, relation, relation); WRITE_LIST_FIELD(method, method, method); WRITE_LIST_FIELD(args, args, args); WRITE_NODE_PTR_FIELD(repeatable, repeatable, repeatable); WRITE_INT_FIELD(location, location, location); } static void _outRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) out, const RangeTableFunc *node) { WRITE_BOOL_FIELD(lateral, lateral, lateral); WRITE_NODE_PTR_FIELD(docexpr, docexpr, docexpr); WRITE_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); WRITE_LIST_FIELD(namespaces, namespaces, namespaces); WRITE_LIST_FIELD(columns, columns, columns); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_INT_FIELD(location, location, location); } static void _outRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) out, const RangeTableFuncCol *node) { WRITE_STRING_FIELD(colname, colname, colname); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_BOOL_FIELD(for_ordinality, for_ordinality, for_ordinality); WRITE_BOOL_FIELD(is_not_null, is_not_null, is_not_null); WRITE_NODE_PTR_FIELD(colexpr, colexpr, colexpr); WRITE_NODE_PTR_FIELD(coldefexpr, coldefexpr, coldefexpr); WRITE_INT_FIELD(location, location, location); } static void _outTypeName(OUT_TYPE(TypeName, TypeName) out, const TypeName *node) { WRITE_LIST_FIELD(names, names, names); WRITE_UINT_FIELD(type_oid, typeOid, typeOid); WRITE_BOOL_FIELD(setof, setof, setof); WRITE_BOOL_FIELD(pct_type, pct_type, pct_type); WRITE_LIST_FIELD(typmods, typmods, typmods); WRITE_INT_FIELD(typemod, typemod, typemod); WRITE_LIST_FIELD(array_bounds, arrayBounds, arrayBounds); WRITE_INT_FIELD(location, location, location); } static void _outColumnDef(OUT_TYPE(ColumnDef, ColumnDef) out, const ColumnDef *node) { WRITE_STRING_FIELD(colname, colname, colname); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_INT_FIELD(inhcount, inhcount, inhcount); WRITE_BOOL_FIELD(is_local, is_local, is_local); WRITE_BOOL_FIELD(is_not_null, is_not_null, is_not_null); WRITE_BOOL_FIELD(is_from_type, is_from_type, is_from_type); WRITE_CHAR_FIELD(storage, storage, storage); WRITE_NODE_PTR_FIELD(raw_default, raw_default, raw_default); WRITE_NODE_PTR_FIELD(cooked_default, cooked_default, cooked_default); WRITE_CHAR_FIELD(identity, identity, identity); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, identity_sequence, identitySequence, identitySequence); WRITE_CHAR_FIELD(generated, generated, generated); WRITE_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); WRITE_UINT_FIELD(coll_oid, collOid, collOid); WRITE_LIST_FIELD(constraints, constraints, constraints); WRITE_LIST_FIELD(fdwoptions, fdwoptions, fdwoptions); WRITE_INT_FIELD(location, location, location); } static void _outIndexElem(OUT_TYPE(IndexElem, IndexElem) out, const IndexElem *node) { WRITE_STRING_FIELD(name, name, name); WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_STRING_FIELD(indexcolname, indexcolname, indexcolname); WRITE_LIST_FIELD(collation, collation, collation); WRITE_LIST_FIELD(opclass, opclass, opclass); WRITE_LIST_FIELD(opclassopts, opclassopts, opclassopts); WRITE_ENUM_FIELD(SortByDir, ordering, ordering, ordering); WRITE_ENUM_FIELD(SortByNulls, nulls_ordering, nulls_ordering, nulls_ordering); } static void _outConstraint(OUT_TYPE(Constraint, Constraint) out, const Constraint *node) { WRITE_ENUM_FIELD(ConstrType, contype, contype, contype); WRITE_STRING_FIELD(conname, conname, conname); WRITE_BOOL_FIELD(deferrable, deferrable, deferrable); WRITE_BOOL_FIELD(initdeferred, initdeferred, initdeferred); WRITE_INT_FIELD(location, location, location); WRITE_BOOL_FIELD(is_no_inherit, is_no_inherit, is_no_inherit); WRITE_NODE_PTR_FIELD(raw_expr, raw_expr, raw_expr); WRITE_STRING_FIELD(cooked_expr, cooked_expr, cooked_expr); WRITE_CHAR_FIELD(generated_when, generated_when, generated_when); WRITE_LIST_FIELD(keys, keys, keys); WRITE_LIST_FIELD(including, including, including); WRITE_LIST_FIELD(exclusions, exclusions, exclusions); WRITE_LIST_FIELD(options, options, options); WRITE_STRING_FIELD(indexname, indexname, indexname); WRITE_STRING_FIELD(indexspace, indexspace, indexspace); WRITE_BOOL_FIELD(reset_default_tblspc, reset_default_tblspc, reset_default_tblspc); WRITE_STRING_FIELD(access_method, access_method, access_method); WRITE_NODE_PTR_FIELD(where_clause, where_clause, where_clause); WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, pktable, pktable, pktable); WRITE_LIST_FIELD(fk_attrs, fk_attrs, fk_attrs); WRITE_LIST_FIELD(pk_attrs, pk_attrs, pk_attrs); WRITE_CHAR_FIELD(fk_matchtype, fk_matchtype, fk_matchtype); WRITE_CHAR_FIELD(fk_upd_action, fk_upd_action, fk_upd_action); WRITE_CHAR_FIELD(fk_del_action, fk_del_action, fk_del_action); WRITE_LIST_FIELD(old_conpfeqop, old_conpfeqop, old_conpfeqop); WRITE_UINT_FIELD(old_pktable_oid, old_pktable_oid, old_pktable_oid); WRITE_BOOL_FIELD(skip_validation, skip_validation, skip_validation); WRITE_BOOL_FIELD(initially_valid, initially_valid, initially_valid); } static void _outDefElem(OUT_TYPE(DefElem, DefElem) out, const DefElem *node) { WRITE_STRING_FIELD(defnamespace, defnamespace, defnamespace); WRITE_STRING_FIELD(defname, defname, defname); WRITE_NODE_PTR_FIELD(arg, arg, arg); WRITE_ENUM_FIELD(DefElemAction, defaction, defaction, defaction); WRITE_INT_FIELD(location, location, location); } static void _outRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) out, const RangeTblEntry *node) { WRITE_ENUM_FIELD(RTEKind, rtekind, rtekind, rtekind); WRITE_UINT_FIELD(relid, relid, relid); WRITE_CHAR_FIELD(relkind, relkind, relkind); WRITE_INT_FIELD(rellockmode, rellockmode, rellockmode); WRITE_SPECIFIC_NODE_PTR_FIELD(TableSampleClause, table_sample_clause, tablesample, tablesample, tablesample); WRITE_SPECIFIC_NODE_PTR_FIELD(Query, query, subquery, subquery, subquery); WRITE_BOOL_FIELD(security_barrier, security_barrier, security_barrier); WRITE_ENUM_FIELD(JoinType, jointype, jointype, jointype); WRITE_INT_FIELD(joinmergedcols, joinmergedcols, joinmergedcols); WRITE_LIST_FIELD(joinaliasvars, joinaliasvars, joinaliasvars); WRITE_LIST_FIELD(joinleftcols, joinleftcols, joinleftcols); WRITE_LIST_FIELD(joinrightcols, joinrightcols, joinrightcols); WRITE_LIST_FIELD(functions, functions, functions); WRITE_BOOL_FIELD(funcordinality, funcordinality, funcordinality); WRITE_SPECIFIC_NODE_PTR_FIELD(TableFunc, table_func, tablefunc, tablefunc, tablefunc); WRITE_LIST_FIELD(values_lists, values_lists, values_lists); WRITE_STRING_FIELD(ctename, ctename, ctename); WRITE_UINT_FIELD(ctelevelsup, ctelevelsup, ctelevelsup); WRITE_BOOL_FIELD(self_reference, self_reference, self_reference); WRITE_LIST_FIELD(coltypes, coltypes, coltypes); WRITE_LIST_FIELD(coltypmods, coltypmods, coltypmods); WRITE_LIST_FIELD(colcollations, colcollations, colcollations); WRITE_STRING_FIELD(enrname, enrname, enrname); WRITE_FLOAT_FIELD(enrtuples, enrtuples, enrtuples); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); WRITE_SPECIFIC_NODE_PTR_FIELD(Alias, alias, eref, eref, eref); WRITE_BOOL_FIELD(lateral, lateral, lateral); WRITE_BOOL_FIELD(inh, inh, inh); WRITE_BOOL_FIELD(in_from_cl, inFromCl, inFromCl); WRITE_UINT_FIELD(required_perms, requiredPerms, requiredPerms); WRITE_UINT_FIELD(check_as_user, checkAsUser, checkAsUser); WRITE_BITMAPSET_FIELD(selected_cols, selectedCols, selectedCols); WRITE_BITMAPSET_FIELD(inserted_cols, insertedCols, insertedCols); WRITE_BITMAPSET_FIELD(updated_cols, updatedCols, updatedCols); WRITE_BITMAPSET_FIELD(extra_updated_cols, extraUpdatedCols, extraUpdatedCols); WRITE_LIST_FIELD(security_quals, securityQuals, securityQuals); } static void _outRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) out, const RangeTblFunction *node) { WRITE_NODE_PTR_FIELD(funcexpr, funcexpr, funcexpr); WRITE_INT_FIELD(funccolcount, funccolcount, funccolcount); WRITE_LIST_FIELD(funccolnames, funccolnames, funccolnames); WRITE_LIST_FIELD(funccoltypes, funccoltypes, funccoltypes); WRITE_LIST_FIELD(funccoltypmods, funccoltypmods, funccoltypmods); WRITE_LIST_FIELD(funccolcollations, funccolcollations, funccolcollations); WRITE_BITMAPSET_FIELD(funcparams, funcparams, funcparams); } static void _outTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) out, const TableSampleClause *node) { WRITE_UINT_FIELD(tsmhandler, tsmhandler, tsmhandler); WRITE_LIST_FIELD(args, args, args); WRITE_NODE_PTR_FIELD(repeatable, repeatable, repeatable); } static void _outWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) out, const WithCheckOption *node) { WRITE_ENUM_FIELD(WCOKind, kind, kind, kind); WRITE_STRING_FIELD(relname, relname, relname); WRITE_STRING_FIELD(polname, polname, polname); WRITE_NODE_PTR_FIELD(qual, qual, qual); WRITE_BOOL_FIELD(cascaded, cascaded, cascaded); } static void _outSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) out, const SortGroupClause *node) { WRITE_UINT_FIELD(tle_sort_group_ref, tleSortGroupRef, tleSortGroupRef); WRITE_UINT_FIELD(eqop, eqop, eqop); WRITE_UINT_FIELD(sortop, sortop, sortop); WRITE_BOOL_FIELD(nulls_first, nulls_first, nulls_first); WRITE_BOOL_FIELD(hashable, hashable, hashable); } static void _outGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) out, const GroupingSet *node) { WRITE_ENUM_FIELD(GroupingSetKind, kind, kind, kind); WRITE_LIST_FIELD(content, content, content); WRITE_INT_FIELD(location, location, location); } static void _outWindowClause(OUT_TYPE(WindowClause, WindowClause) out, const WindowClause *node) { WRITE_STRING_FIELD(name, name, name); WRITE_STRING_FIELD(refname, refname, refname); WRITE_LIST_FIELD(partition_clause, partitionClause, partitionClause); WRITE_LIST_FIELD(order_clause, orderClause, orderClause); WRITE_INT_FIELD(frame_options, frameOptions, frameOptions); WRITE_NODE_PTR_FIELD(start_offset, startOffset, startOffset); WRITE_NODE_PTR_FIELD(end_offset, endOffset, endOffset); WRITE_UINT_FIELD(start_in_range_func, startInRangeFunc, startInRangeFunc); WRITE_UINT_FIELD(end_in_range_func, endInRangeFunc, endInRangeFunc); WRITE_UINT_FIELD(in_range_coll, inRangeColl, inRangeColl); WRITE_BOOL_FIELD(in_range_asc, inRangeAsc, inRangeAsc); WRITE_BOOL_FIELD(in_range_nulls_first, inRangeNullsFirst, inRangeNullsFirst); WRITE_UINT_FIELD(winref, winref, winref); WRITE_BOOL_FIELD(copied_order, copiedOrder, copiedOrder); } static void _outObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) out, const ObjectWithArgs *node) { WRITE_LIST_FIELD(objname, objname, objname); WRITE_LIST_FIELD(objargs, objargs, objargs); WRITE_BOOL_FIELD(args_unspecified, args_unspecified, args_unspecified); } static void _outAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) out, const AccessPriv *node) { WRITE_STRING_FIELD(priv_name, priv_name, priv_name); WRITE_LIST_FIELD(cols, cols, cols); } static void _outCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) out, const CreateOpClassItem *node) { WRITE_INT_FIELD(itemtype, itemtype, itemtype); WRITE_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, name, name, name); WRITE_INT_FIELD(number, number, number); WRITE_LIST_FIELD(order_family, order_family, order_family); WRITE_LIST_FIELD(class_args, class_args, class_args); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, storedtype, storedtype, storedtype); } static void _outTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) out, const TableLikeClause *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_UINT_FIELD(options, options, options); WRITE_UINT_FIELD(relation_oid, relationOid, relationOid); } static void _outFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) out, const FunctionParameter *node) { WRITE_STRING_FIELD(name, name, name); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, arg_type, argType, argType); WRITE_ENUM_FIELD(FunctionParameterMode, mode, mode, mode); WRITE_NODE_PTR_FIELD(defexpr, defexpr, defexpr); } static void _outLockingClause(OUT_TYPE(LockingClause, LockingClause) out, const LockingClause *node) { WRITE_LIST_FIELD(locked_rels, lockedRels, lockedRels); WRITE_ENUM_FIELD(LockClauseStrength, strength, strength, strength); WRITE_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); } static void _outRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) out, const RowMarkClause *node) { WRITE_UINT_FIELD(rti, rti, rti); WRITE_ENUM_FIELD(LockClauseStrength, strength, strength, strength); WRITE_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); WRITE_BOOL_FIELD(pushed_down, pushedDown, pushedDown); } static void _outXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) out, const XmlSerialize *node) { WRITE_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); WRITE_INT_FIELD(location, location, location); } static void _outWithClause(OUT_TYPE(WithClause, WithClause) out, const WithClause *node) { WRITE_LIST_FIELD(ctes, ctes, ctes); WRITE_BOOL_FIELD(recursive, recursive, recursive); WRITE_INT_FIELD(location, location, location); } static void _outInferClause(OUT_TYPE(InferClause, InferClause) out, const InferClause *node) { WRITE_LIST_FIELD(index_elems, indexElems, indexElems); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_STRING_FIELD(conname, conname, conname); WRITE_INT_FIELD(location, location, location); } static void _outOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) out, const OnConflictClause *node) { WRITE_ENUM_FIELD(OnConflictAction, action, action, action); WRITE_SPECIFIC_NODE_PTR_FIELD(InferClause, infer_clause, infer, infer, infer); WRITE_LIST_FIELD(target_list, targetList, targetList); WRITE_NODE_PTR_FIELD(where_clause, whereClause, whereClause); WRITE_INT_FIELD(location, location, location); } static void _outCommonTableExpr(OUT_TYPE(CommonTableExpr, CommonTableExpr) out, const CommonTableExpr *node) { WRITE_STRING_FIELD(ctename, ctename, ctename); WRITE_LIST_FIELD(aliascolnames, aliascolnames, aliascolnames); WRITE_ENUM_FIELD(CTEMaterialize, ctematerialized, ctematerialized, ctematerialized); WRITE_NODE_PTR_FIELD(ctequery, ctequery, ctequery); WRITE_INT_FIELD(location, location, location); WRITE_BOOL_FIELD(cterecursive, cterecursive, cterecursive); WRITE_INT_FIELD(cterefcount, cterefcount, cterefcount); WRITE_LIST_FIELD(ctecolnames, ctecolnames, ctecolnames); WRITE_LIST_FIELD(ctecoltypes, ctecoltypes, ctecoltypes); WRITE_LIST_FIELD(ctecoltypmods, ctecoltypmods, ctecoltypmods); WRITE_LIST_FIELD(ctecolcollations, ctecolcollations, ctecolcollations); } static void _outRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) out, const RoleSpec *node) { WRITE_ENUM_FIELD(RoleSpecType, roletype, roletype, roletype); WRITE_STRING_FIELD(rolename, rolename, rolename); WRITE_INT_FIELD(location, location, location); } static void _outTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) out, const TriggerTransition *node) { WRITE_STRING_FIELD(name, name, name); WRITE_BOOL_FIELD(is_new, isNew, isNew); WRITE_BOOL_FIELD(is_table, isTable, isTable); } static void _outPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) out, const PartitionElem *node) { WRITE_STRING_FIELD(name, name, name); WRITE_NODE_PTR_FIELD(expr, expr, expr); WRITE_LIST_FIELD(collation, collation, collation); WRITE_LIST_FIELD(opclass, opclass, opclass); WRITE_INT_FIELD(location, location, location); } static void _outPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) out, const PartitionSpec *node) { WRITE_STRING_FIELD(strategy, strategy, strategy); WRITE_LIST_FIELD(part_params, partParams, partParams); WRITE_INT_FIELD(location, location, location); } static void _outPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) out, const PartitionBoundSpec *node) { WRITE_CHAR_FIELD(strategy, strategy, strategy); WRITE_BOOL_FIELD(is_default, is_default, is_default); WRITE_INT_FIELD(modulus, modulus, modulus); WRITE_INT_FIELD(remainder, remainder, remainder); WRITE_LIST_FIELD(listdatums, listdatums, listdatums); WRITE_LIST_FIELD(lowerdatums, lowerdatums, lowerdatums); WRITE_LIST_FIELD(upperdatums, upperdatums, upperdatums); WRITE_INT_FIELD(location, location, location); } static void _outPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) out, const PartitionRangeDatum *node) { WRITE_ENUM_FIELD(PartitionRangeDatumKind, kind, kind, kind); WRITE_NODE_PTR_FIELD(value, value, value); WRITE_INT_FIELD(location, location, location); } static void _outPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) out, const PartitionCmd *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, name, name, name); WRITE_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, bound, bound, bound); } static void _outVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) out, const VacuumRelation *node) { WRITE_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); WRITE_UINT_FIELD(oid, oid, oid); WRITE_LIST_FIELD(va_cols, va_cols, va_cols); } static void _outInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) out, const InlineCodeBlock *node) { WRITE_STRING_FIELD(source_text, source_text, source_text); WRITE_UINT_FIELD(lang_oid, langOid, langOid); WRITE_BOOL_FIELD(lang_is_trusted, langIsTrusted, langIsTrusted); WRITE_BOOL_FIELD(atomic, atomic, atomic); } static void _outCallContext(OUT_TYPE(CallContext, CallContext) out, const CallContext *node) { WRITE_BOOL_FIELD(atomic, atomic, atomic); } libpg_query-13-2.1.0/src/pg_query_outfuncs_json.c000066400000000000000000000164401413137616400220350ustar00rootroot00000000000000#include "pg_query_outfuncs.h" #include "postgres.h" #include #include "access/relation.h" #include "nodes/parsenodes.h" #include "nodes/plannodes.h" #include "nodes/value.h" #include "utils/datum.h" #include "pg_query_json_helper.c" #define OUT_TYPE(typename, typename_c) StringInfo #define OUT_NODE(typename, typename_c, typename_underscore, typename_underscore_upcase, typename_cast, fldname) \ { \ WRITE_NODE_TYPE(CppAsString(typename)); \ _out##typename_c(out, (const typename_cast *) obj); \ } /* Write the label for the node type */ #define WRITE_NODE_TYPE(nodelabel) \ appendStringInfoString(out, "\"" nodelabel "\":{") /* Write an integer field */ #define WRITE_INT_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%d,", node->fldname); \ } /* Write an unsigned integer field */ #define WRITE_UINT_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%u,", node->fldname); \ } /* Write a long-integer field */ #define WRITE_LONG_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%ld,", node->fldname); \ } /* Write a char field (ie, one ascii character) */ #define WRITE_CHAR_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":\"%c\",", node->fldname); \ } /* Write an enumerated-type field */ #define WRITE_ENUM_FIELD(typename, outname, outname_json, fldname) \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":\"%s\",", \ _enumToString##typename(node->fldname)); /* Write a float field */ #define WRITE_FLOAT_FIELD(outname, outname_json, fldname) \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%f,", node->fldname) /* Write a boolean field */ #define WRITE_BOOL_FIELD(outname, outname_json, fldname) \ if (node->fldname) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":%s,", \ booltostr(node->fldname)); \ } /* Write a character-string (possibly NULL) field */ #define WRITE_STRING_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ _outToken(out, node->fldname); \ appendStringInfo(out, ","); \ } #define WRITE_LIST_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ const ListCell *lc; \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ appendStringInfoChar(out, '['); \ foreach(lc, node->fldname) { \ if (lfirst(lc) == NULL) \ appendStringInfoString(out, "{}"); \ else \ _outNode(out, lfirst(lc)); \ if (lnext(node->fldname, lc)) \ appendStringInfoString(out, ","); \ } \ appendStringInfo(out, "],"); \ } #define WRITE_NODE_FIELD(outname, outname_json, fldname) \ if (true) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ _outNode(out, &node->fldname); \ appendStringInfo(out, ","); \ } #define WRITE_NODE_PTR_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":"); \ _outNode(out, node->fldname); \ appendStringInfo(out, ","); \ } #define WRITE_SPECIFIC_NODE_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":{"); \ _out##typename(out, &node->fldname); \ removeTrailingDelimiter(out); \ appendStringInfo(out, "},"); \ } #define WRITE_SPECIFIC_NODE_PTR_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ if (node->fldname != NULL) { \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":{"); \ _out##typename(out, node->fldname); \ removeTrailingDelimiter(out); \ appendStringInfo(out, "},"); \ } #define WRITE_BITMAPSET_FIELD(outname, outname_json, fldname) \ if (!bms_is_empty(node->fldname)) \ { \ int x = 0; \ appendStringInfo(out, "\"" CppAsString(outname_json) "\":["); \ while ((x = bms_next_member(node->fldname, x)) >= 0) \ appendStringInfo(out, "%d,", x); \ removeTrailingDelimiter(out); \ appendStringInfo(out, "],"); \ } static void _outNode(StringInfo out, const void *obj); static void _outList(StringInfo out, const List *node) { const ListCell *lc; appendStringInfo(out, "\"items\":"); appendStringInfoChar(out, '['); foreach(lc, node) { if (lfirst(lc) == NULL) appendStringInfoString(out, "{}"); else _outNode(out, lfirst(lc)); if (lnext(node, lc)) appendStringInfoString(out, ","); } appendStringInfoChar(out, ']'); appendStringInfo(out, ","); } static void _outIntList(StringInfo out, const List *node) { const ListCell *lc; appendStringInfo(out, "\"items\":"); appendStringInfoChar(out, '['); foreach(lc, node) { appendStringInfo(out, "%d", lfirst_int(lc)); if (lnext(node, lc)) appendStringInfoString(out, ","); } appendStringInfoChar(out, ']'); appendStringInfo(out, ","); } static void _outOidList(StringInfo out, const List *node) { const ListCell *lc; appendStringInfo(out, "\"items\":"); appendStringInfoChar(out, '['); foreach(lc, node) { appendStringInfo(out, "%u", lfirst_oid(lc)); if (lnext(node, lc)) appendStringInfoString(out, ","); } appendStringInfoChar(out, ']'); appendStringInfo(out, ","); } static void _outInteger(StringInfo out, const Value *node) { appendStringInfo(out, "\"ival\":%d,", node->val.ival); } static void _outFloat(StringInfo out, const Value *node) { appendStringInfo(out, "\"str\":"); _outToken(out, node->val.str); appendStringInfo(out, ","); } static void _outString(StringInfo out, const Value *node) { appendStringInfo(out, "\"str\":"); _outToken(out, node->val.str); appendStringInfo(out, ","); } static void _outBitString(StringInfo out, const Value *node) { appendStringInfo(out, "\"str\":"); _outToken(out, node->val.str); appendStringInfo(out, ","); } static void _outNull(StringInfo out, const Value *node) { // No fields } #include "pg_query_enum_defs.c" #include "pg_query_outfuncs_defs.c" static void _outNode(StringInfo out, const void *obj) { if (obj == NULL) { appendStringInfoString(out, "null"); } else { appendStringInfoChar(out, '{'); switch (nodeTag(obj)) { #include "pg_query_outfuncs_conds.c" default: elog(WARNING, "could not dump unrecognized node type: %d", (int) nodeTag(obj)); appendStringInfo(out, "}"); return; } removeTrailingDelimiter(out); appendStringInfo(out, "}}"); } } char * pg_query_nodes_to_json(const void *obj) { StringInfoData out; const ListCell *lc; initStringInfo(&out); if (obj == NULL) /* Make sure we generate valid JSON for empty queries */ { appendStringInfo(&out, "{\"version\":%d,\"stmts\":[]}", PG_VERSION_NUM); } else { appendStringInfoString(&out, "{"); appendStringInfo(&out, "\"version\":%d,", PG_VERSION_NUM); appendStringInfoString(&out, "\"stmts\":"); appendStringInfoChar(&out, '['); foreach(lc, obj) { appendStringInfoChar(&out, '{'); _outRawStmt(&out, lfirst(lc)); removeTrailingDelimiter(&out); appendStringInfoChar(&out, '}'); if (lnext(obj, lc)) appendStringInfoString(&out, ","); } appendStringInfoChar(&out, ']'); appendStringInfoString(&out, "}"); } return out.data; } libpg_query-13-2.1.0/src/pg_query_outfuncs_protobuf.c000066400000000000000000000147711413137616400227310ustar00rootroot00000000000000#include "pg_query_outfuncs.h" #include "postgres.h" #include #include "access/relation.h" #include "nodes/parsenodes.h" #include "nodes/plannodes.h" #include "nodes/value.h" #include "utils/datum.h" #include "protobuf/pg_query.pb-c.h" #define OUT_TYPE(typename, typename_c) PgQuery__##typename_c* #define OUT_NODE(typename, typename_c, typename_underscore, typename_underscore_upcase, typename_cast, fldname) \ { \ PgQuery__##typename_c *__node = palloc(sizeof(PgQuery__##typename_c)); \ pg_query__##typename_underscore##__init(__node); \ _out##typename_c(__node, (const typename_cast *) obj); \ out->fldname = __node; \ out->node_case = PG_QUERY__NODE__NODE_##typename_underscore_upcase; \ } #define WRITE_INT_FIELD(outname, outname_json, fldname) out->outname = node->fldname; #define WRITE_UINT_FIELD(outname, outname_json, fldname) out->outname = node->fldname; #define WRITE_LONG_FIELD(outname, outname_json, fldname) out->outname = node->fldname; #define WRITE_FLOAT_FIELD(outname, outname_json, fldname) out->outname = node->fldname; #define WRITE_BOOL_FIELD(outname, outname_json, fldname) out->outname = node->fldname; #define WRITE_CHAR_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ out->outname = palloc(sizeof(char) * 2); \ out->outname[0] = node->fldname; \ out->outname[1] = '\0'; \ } #define WRITE_STRING_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ out->outname = pstrdup(node->fldname); \ } #define WRITE_ENUM_FIELD(typename, outname, outname_json, fldname) \ out->outname = _enumToInt##typename(node->fldname); #define WRITE_LIST_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ out->n_##outname = list_length(node->fldname); \ out->outname = palloc(sizeof(PgQuery__Node*) * out->n_##outname); \ for (int i = 0; i < out->n_##outname; i++) \ { \ PgQuery__Node *__node = palloc(sizeof(PgQuery__Node)); \ pg_query__node__init(__node); \ out->outname[i] = __node; \ _outNode(out->outname[i], list_nth(node->fldname, i)); \ } \ } #define WRITE_BITMAPSET_FIELD(outname, outname_json, fldname) \ if (!bms_is_empty(node->fldname)) \ { \ int x = 0; \ int i = 0; \ out->n_##outname = bms_num_members(node->fldname); \ out->outname = palloc(sizeof(PgQuery__Node*) * out->n_##outname); \ while ((x = bms_first_member(node->fldname)) >= 0) \ out->outname[i++] = x; \ } #define WRITE_NODE_FIELD(outname, outname_json, fldname) \ { \ PgQuery__Node *__node = palloc(sizeof(PgQuery__Node)); \ pg_query__node__init(__node); \ out->outname = __node; \ _outNode(out->outname, &node->fldname); \ } #define WRITE_NODE_PTR_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ PgQuery__Node *__node = palloc(sizeof(PgQuery__Node)); \ pg_query__node__init(__node); \ out->outname = __node; \ _outNode(out->outname, node->fldname); \ } #define WRITE_SPECIFIC_NODE_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ { \ PgQuery__##typename *__node = palloc(sizeof(PgQuery__##typename)); \ pg_query__##typename_underscore##__init(__node); \ _out##typename(__node, &node->fldname); \ out->outname = __node; \ } #define WRITE_SPECIFIC_NODE_PTR_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ if (node->fldname != NULL) { \ PgQuery__##typename *__node = palloc(sizeof(PgQuery__##typename)); \ pg_query__##typename_underscore##__init(__node); \ _out##typename(__node, node->fldname); \ out->outname = __node; \ } static void _outNode(PgQuery__Node* out, const void *obj); static void _outList(PgQuery__List* out, const List *node) { const ListCell *lc; int i = 0; out->n_items = list_length(node); out->items = palloc(sizeof(PgQuery__Node*) * out->n_items); foreach(lc, node) { out->items[i] = palloc(sizeof(PgQuery__Node)); pg_query__node__init(out->items[i]); _outNode(out->items[i], lfirst(lc)); i++; } } static void _outIntList(PgQuery__IntList* out, const List *node) { const ListCell *lc; int i = 0; out->n_items = list_length(node); out->items = palloc(sizeof(PgQuery__Node*) * out->n_items); foreach(lc, node) { out->items[i] = palloc(sizeof(PgQuery__Node)); pg_query__node__init(out->items[i]); _outNode(out->items[i], lfirst(lc)); i++; } } static void _outOidList(PgQuery__OidList* out, const List *node) { const ListCell *lc; int i = 0; out->n_items = list_length(node); out->items = palloc(sizeof(PgQuery__Node*) * out->n_items); foreach(lc, node) { out->items[i] = palloc(sizeof(PgQuery__Node)); pg_query__node__init(out->items[i]); _outNode(out->items[i], lfirst(lc)); i++; } } // TODO: Add Bitmapset static void _outInteger(PgQuery__Integer* out, const Value *node) { out->ival = node->val.ival; } static void _outFloat(PgQuery__Float* out, const Value *node) { out->str = node->val.str; } static void _outString(PgQuery__String* out, const Value *node) { out->str = node->val.str; } static void _outBitString(PgQuery__BitString* out, const Value *node) { out->str = node->val.str; } static void _outNull(PgQuery__Null* out, const Value *node) { // Null has no fields } #include "pg_query_enum_defs.c" #include "pg_query_outfuncs_defs.c" static void _outNode(PgQuery__Node* out, const void *obj) { if (obj == NULL) return; // Keep out as NULL switch (nodeTag(obj)) { #include "pg_query_outfuncs_conds.c" default: printf("could not dump unrecognized node type: %d", (int) nodeTag(obj)); elog(WARNING, "could not dump unrecognized node type: %d", (int) nodeTag(obj)); return; } } PgQueryProtobuf pg_query_nodes_to_protobuf(const void *obj) { PgQueryProtobuf protobuf; const ListCell *lc; int i = 0; PgQuery__ParseResult parse_result = PG_QUERY__PARSE_RESULT__INIT; parse_result.version = PG_VERSION_NUM; if (obj == NULL) { parse_result.n_stmts = 0; parse_result.stmts = NULL; } else { parse_result.n_stmts = list_length(obj); parse_result.stmts = palloc(sizeof(PgQuery__RawStmt*) * parse_result.n_stmts); foreach(lc, obj) { parse_result.stmts[i] = palloc(sizeof(PgQuery__RawStmt)); pg_query__raw_stmt__init(parse_result.stmts[i]); _outRawStmt(parse_result.stmts[i], lfirst(lc)); i++; } } protobuf.len = pg_query__parse_result__get_packed_size(&parse_result); // Note: This is intentionally malloc so exiting the memory context doesn't free this protobuf.data = malloc(sizeof(char) * protobuf.len); pg_query__parse_result__pack(&parse_result, (void*) protobuf.data); return protobuf; } libpg_query-13-2.1.0/src/pg_query_outfuncs_protobuf_cpp.cc000066400000000000000000000125241413137616400237300ustar00rootroot00000000000000 #include #include #include #include #include #include #include extern "C" { #include "pg_query_outfuncs.h" #include "postgres.h" #include #include "access/relation.h" #include "nodes/parsenodes.h" #include "nodes/plannodes.h" #include "nodes/value.h" #include "utils/datum.h" } #define OUT_TYPE(typename, typename_c) pg_query::typename* #define OUT_NODE(typename, typename_c, typename_underscore, typename_underscore_upcase, typename_cast, fldname) \ { \ pg_query::typename *fldname = new pg_query::typename(); \ out->set_allocated_##fldname(fldname); \ _out##typename_c(fldname, (const typename_cast *) obj); \ } #define WRITE_INT_FIELD(outname, outname_json, fldname) out->set_##outname(node->fldname); #define WRITE_UINT_FIELD(outname, outname_json, fldname) out->set_##outname(node->fldname); #define WRITE_LONG_FIELD(outname, outname_json, fldname) out->set_##outname(node->fldname); #define WRITE_FLOAT_FIELD(outname, outname_json, fldname) out->set_##outname(node->fldname); #define WRITE_BOOL_FIELD(outname, outname_json, fldname) out->set_##outname(node->fldname); #define WRITE_CHAR_FIELD(outname, outname_json, fldname) \ if (node->fldname != 0) { \ out->set_##outname({node->fldname}); \ } #define WRITE_STRING_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ out->set_##outname(node->fldname); \ } #define WRITE_ENUM_FIELD(typename, outname, outname_json, fldname) \ out->set_##outname((pg_query::typename) _enumToInt##typename(node->fldname)); #define WRITE_LIST_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ const ListCell *lc; \ foreach(lc, node->fldname) \ { \ _outNode(out->add_##outname(), lfirst(lc)); \ } \ } #define WRITE_BITMAPSET_FIELD(outname, outname_json, fldname) // FIXME #define WRITE_NODE_FIELD(outname, outname_json, fldname) \ { \ out->set_allocated_##fldname(new pg_query::Node()); \ _outNode(out->mutable_##outname(), &node->fldname); \ } #define WRITE_NODE_PTR_FIELD(outname, outname_json, fldname) \ if (node->fldname != NULL) { \ out->set_allocated_##outname(new pg_query::Node()); \ _outNode(out->mutable_##outname(), node->fldname); \ } #define WRITE_SPECIFIC_NODE_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ { \ out->set_allocated_##outname(new pg_query::typename()); \ _out##typename(out->mutable_##outname(), &node->fldname); \ } #define WRITE_SPECIFIC_NODE_PTR_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ if (node->fldname != NULL) { \ out->set_allocated_##outname(new pg_query::typename()); \ _out##typename(out->mutable_##outname(), node->fldname); \ } static void _outNode(pg_query::Node* out, const void *obj); static void _outList(pg_query::List* out_node, const List *node) { const ListCell *lc; foreach(lc, node) { _outNode(out_node->add_items(), lfirst(lc)); } } static void _outIntList(pg_query::IntList* out_node, const List *node) { const ListCell *lc; foreach(lc, node) { _outNode(out_node->add_items(), lfirst(lc)); } } static void _outOidList(pg_query::OidList* out_node, const List *node) { const ListCell *lc; foreach(lc, node) { _outNode(out_node->add_items(), lfirst(lc)); } } // TODO: Add Bitmapset static void _outInteger(pg_query::Integer* out_node, const Value *node) { out_node->set_ival(node->val.ival); } static void _outFloat(pg_query::Float* out_node, const Value *node) { out_node->set_str(node->val.str); } static void _outString(pg_query::String* out_node, const Value *node) { out_node->set_str(node->val.str); } static void _outBitString(pg_query::BitString* out_node, const Value *node) { out_node->set_str(node->val.str); } static void _outNull(pg_query::Null* out_node, const Value *node) { // Null has no fields } #include "pg_query_enum_defs.c" #include "pg_query_outfuncs_defs.c" static void _outNode(pg_query::Node* out, const void *obj) { if (obj == NULL) return; // Keep out as NULL switch (nodeTag(obj)) { #include "pg_query_outfuncs_conds.c" default: printf("could not dump unrecognized node type: %d", (int) nodeTag(obj)); elog(WARNING, "could not dump unrecognized node type: %d", (int) nodeTag(obj)); return; } } extern "C" PgQueryProtobuf pg_query_nodes_to_protobuf(const void *obj) { PgQueryProtobuf protobuf; const ListCell *lc; pg_query::ParseResult parse_result; if (obj == NULL) { protobuf.data = strdup(""); protobuf.len = 0; return protobuf; } parse_result.set_version(PG_VERSION_NUM); foreach(lc, (List*) obj) { _outRawStmt(parse_result.add_stmts(), (const RawStmt*) lfirst(lc)); } std::string output; parse_result.SerializeToString(&output); protobuf.data = (char*) calloc(output.size(), sizeof(char)); memcpy(protobuf.data, output.data(), output.size()); protobuf.len = output.size(); return protobuf; } extern "C" char * pg_query_nodes_to_json(const void *obj) { const ListCell *lc; pg_query::ParseResult parse_result; if (obj == NULL) return pstrdup("{}"); parse_result.set_version(PG_VERSION_NUM); foreach(lc, (List*) obj) { _outRawStmt(parse_result.add_stmts(), (const RawStmt*) lfirst(lc)); } std::string output; google::protobuf::util::MessageToJsonString(parse_result, &output); return pstrdup(output.c_str()); } libpg_query-13-2.1.0/src/pg_query_parse.c000066400000000000000000000071011413137616400202420ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_internal.h" #include "pg_query_outfuncs.h" #include "parser/parser.h" #include "parser/scanner.h" #include "parser/scansup.h" #include #include PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input) { PgQueryInternalParsetreeAndError result = {0}; MemoryContext parse_context = CurrentMemoryContext; char stderr_buffer[STDERR_BUFFER_LEN + 1] = {0}; #ifndef DEBUG int stderr_global; int stderr_pipe[2]; #endif #ifndef DEBUG // Setup pipe for stderr redirection if (pipe(stderr_pipe) != 0) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to open pipe, too many open file descriptors") result.error = error; return result; } fcntl(stderr_pipe[0], F_SETFL, fcntl(stderr_pipe[0], F_GETFL) | O_NONBLOCK); // Redirect stderr to the pipe stderr_global = dup(STDERR_FILENO); dup2(stderr_pipe[1], STDERR_FILENO); close(stderr_pipe[1]); #endif PG_TRY(); { result.tree = raw_parser(input); #ifndef DEBUG // Save stderr for result read(stderr_pipe[0], stderr_buffer, STDERR_BUFFER_LEN); #endif result.stderr_buffer = strdup(stderr_buffer); } PG_CATCH(); { ErrorData* error_data; PgQueryError* error; MemoryContextSwitchTo(parse_context); error_data = CopyErrorData(); // Note: This is intentionally malloc so exiting the memory context doesn't free this error = malloc(sizeof(PgQueryError)); error->message = strdup(error_data->message); error->filename = strdup(error_data->filename); error->funcname = strdup(error_data->funcname); error->context = NULL; error->lineno = error_data->lineno; error->cursorpos = error_data->cursorpos; result.error = error; FlushErrorState(); } PG_END_TRY(); #ifndef DEBUG // Restore stderr, close pipe dup2(stderr_global, STDERR_FILENO); close(stderr_pipe[0]); close(stderr_global); #endif return result; } PgQueryParseResult pg_query_parse(const char* input) { MemoryContext ctx = NULL; PgQueryInternalParsetreeAndError parsetree_and_error; PgQueryParseResult result = {0}; char *tree_json = NULL; ctx = pg_query_enter_memory_context(); parsetree_and_error = pg_query_raw_parse(input); // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now result.stderr_buffer = parsetree_and_error.stderr_buffer; result.error = parsetree_and_error.error; tree_json = pg_query_nodes_to_json(parsetree_and_error.tree); result.parse_tree = strdup(tree_json); pfree(tree_json); pg_query_exit_memory_context(ctx); return result; } PgQueryProtobufParseResult pg_query_parse_protobuf(const char* input) { MemoryContext ctx = NULL; PgQueryInternalParsetreeAndError parsetree_and_error; PgQueryProtobufParseResult result = {}; ctx = pg_query_enter_memory_context(); parsetree_and_error = pg_query_raw_parse(input); // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now result.stderr_buffer = parsetree_and_error.stderr_buffer; result.error = parsetree_and_error.error; result.parse_tree = pg_query_nodes_to_protobuf(parsetree_and_error.tree); pg_query_exit_memory_context(ctx); return result; } void pg_query_free_parse_result(PgQueryParseResult result) { if (result.error) { pg_query_free_error(result.error); } free(result.parse_tree); free(result.stderr_buffer); } void pg_query_free_protobuf_parse_result(PgQueryProtobufParseResult result) { if (result.error) { pg_query_free_error(result.error); } free(result.parse_tree.data); free(result.stderr_buffer); } libpg_query-13-2.1.0/src/pg_query_parse_plpgsql.c000066400000000000000000000303341413137616400220100ustar00rootroot00000000000000#define _GNU_SOURCE // Necessary to get asprintf (which is a GNU extension) #include #include "pg_query.h" #include "pg_query_internal.h" #include "pg_query_json_plpgsql.h" #include #include #include #include #include #include typedef struct { PLpgSQL_function *func; PgQueryError* error; } PgQueryInternalPlpgsqlFuncAndError; static PgQueryInternalPlpgsqlFuncAndError pg_query_raw_parse_plpgsql(CreateFunctionStmt* stmt); static void add_dummy_return(PLpgSQL_function *function) { /* * If the outer block has an EXCEPTION clause, we need to make a new outer * block, since the added RETURN shouldn't act like it is inside the * EXCEPTION clause. */ if (function->action->exceptions != NULL) { PLpgSQL_stmt_block *new; new = palloc0(sizeof(PLpgSQL_stmt_block)); new->cmd_type = PLPGSQL_STMT_BLOCK; new->body = list_make1(function->action); function->action = new; } if (function->action->body == NIL || ((PLpgSQL_stmt *) llast(function->action->body))->cmd_type != PLPGSQL_STMT_RETURN) { PLpgSQL_stmt_return *new; new = palloc0(sizeof(PLpgSQL_stmt_return)); new->cmd_type = PLPGSQL_STMT_RETURN; new->expr = NULL; new->retvarno = function->out_param_varno; function->action->body = lappend(function->action->body, new); } } static void plpgsql_compile_error_callback(void *arg) { if (arg) { /* * Try to convert syntax error position to reference text of original * CREATE FUNCTION or DO command. */ if (function_parse_error_transpose((const char *) arg)) return; /* * Done if a syntax error position was reported; otherwise we have to * fall back to a "near line N" report. */ } if (plpgsql_error_funcname) errcontext("compilation of PL/pgSQL function \"%s\" near line %d", plpgsql_error_funcname, plpgsql_latest_lineno()); } static PLpgSQL_function *compile_create_function_stmt(CreateFunctionStmt* stmt) { char *func_name; char *proc_source = NULL; PLpgSQL_function *function; ErrorContextCallback plerrcontext; PLpgSQL_variable *var; int parse_rc; MemoryContext func_cxt; int i; PLpgSQL_rec *rec; const ListCell *lc, *lc2, *lc3; bool is_trigger = false; bool is_setof = false; assert(IsA(stmt, CreateFunctionStmt)); func_name = strVal(linitial(stmt->funcname)); foreach(lc, stmt->options) { DefElem* elem = (DefElem*) lfirst(lc); if (strcmp(elem->defname, "as") == 0) { const ListCell *lc2; assert(IsA(elem->arg, List)); foreach(lc2, (List*) elem->arg) { proc_source = strVal(lfirst(lc2)); } } } assert(proc_source != NULL); if (stmt->returnType != NULL) { foreach(lc3, stmt->returnType->names) { char* val = strVal(lfirst(lc3)); if (strcmp(val, "trigger") == 0) { is_trigger = true; } } if (stmt->returnType->setof) { is_setof = true; } } /* * Setup the scanner input and error info. We assume that this function * cannot be invoked recursively, so there's no need to save and restore * the static variables used here. */ plpgsql_scanner_init(proc_source); plpgsql_error_funcname = func_name; /* * Setup error traceback support for ereport() */ plerrcontext.callback = plpgsql_compile_error_callback; plerrcontext.arg = proc_source; plerrcontext.previous = error_context_stack; error_context_stack = &plerrcontext; /* Do extra syntax checking if check_function_bodies is on */ plpgsql_check_syntax = true; /* Function struct does not live past current statement */ function = (PLpgSQL_function *) palloc0(sizeof(PLpgSQL_function)); plpgsql_curr_compile = function; /* * All the rest of the compile-time storage (e.g. parse tree) is kept in * its own memory context, so it can be reclaimed easily. */ func_cxt = AllocSetContextCreate(CurrentMemoryContext, "PL/pgSQL pg_query context", ALLOCSET_DEFAULT_SIZES); plpgsql_compile_tmp_cxt = MemoryContextSwitchTo(func_cxt); function->fn_signature = pstrdup(func_name); function->fn_is_trigger = PLPGSQL_NOT_TRIGGER; function->fn_input_collation = InvalidOid; function->fn_cxt = func_cxt; function->out_param_varno = -1; /* set up for no OUT param */ function->resolve_option = plpgsql_variable_conflict; function->print_strict_params = plpgsql_print_strict_params; /* * don't do extra validation for inline code as we don't want to add spam * at runtime */ function->extra_warnings = 0; function->extra_errors = 0; plpgsql_ns_init(); plpgsql_ns_push(func_name, PLPGSQL_LABEL_BLOCK); plpgsql_DumpExecTree = false; plpgsql_start_datums(); /* Setup parameter names */ foreach(lc, stmt->parameters) { FunctionParameter *param = lfirst_node(FunctionParameter, lc); if (param->name != NULL) { char buf[32]; PLpgSQL_type *argdtype; PLpgSQL_variable *argvariable; PLpgSQL_nsitem_type argitemtype; snprintf(buf, sizeof(buf), "$%d", foreach_current_index(lc) + 1); argdtype = plpgsql_build_datatype(UNKNOWNOID, -1, InvalidOid, NULL); argvariable = plpgsql_build_variable(param->name ? param->name : buf, 0, argdtype, false); argitemtype = argvariable->dtype == PLPGSQL_DTYPE_VAR ? PLPGSQL_NSTYPE_VAR : PLPGSQL_NSTYPE_REC; plpgsql_ns_additem(argitemtype, argvariable->dno, buf); if (param->name != NULL) plpgsql_ns_additem(argitemtype, argvariable->dno, param->name); } } /* Set up as though in a function returning VOID */ function->fn_rettype = VOIDOID; function->fn_retset = is_setof; function->fn_retistuple = false; function->fn_retisdomain = false; function->fn_prokind = PROKIND_FUNCTION; /* a bit of hardwired knowledge about type VOID here */ function->fn_retbyval = true; function->fn_rettyplen = sizeof(int32); /* * Remember if function is STABLE/IMMUTABLE. XXX would it be better to * set this TRUE inside a read-only transaction? Not clear. */ function->fn_readonly = false; /* * Create the magic FOUND variable. */ var = plpgsql_build_variable("found", 0, plpgsql_build_datatype(BOOLOID, -1, InvalidOid, NULL), true); function->found_varno = var->dno; if (is_trigger) { /* Add the record for referencing NEW */ rec = plpgsql_build_record("new", 0, NULL, RECORDOID, true); function->new_varno = rec->dno; /* Add the record for referencing OLD */ rec = plpgsql_build_record("old", 0, NULL, RECORDOID, true); function->old_varno = rec->dno; } /* * Now parse the function's text */ parse_rc = plpgsql_yyparse(); if (parse_rc != 0) elog(ERROR, "plpgsql parser returned %d", parse_rc); function->action = plpgsql_parse_result; plpgsql_scanner_finish(); /* * If it returns VOID (always true at the moment), we allow control to * fall off the end without an explicit RETURN statement. */ if (function->fn_rettype == VOIDOID) add_dummy_return(function); /* * Complete the function's info */ function->fn_nargs = 0; plpgsql_finish_datums(function); /* * Pop the error context stack */ error_context_stack = plerrcontext.previous; plpgsql_error_funcname = NULL; plpgsql_check_syntax = false; MemoryContextSwitchTo(plpgsql_compile_tmp_cxt); plpgsql_compile_tmp_cxt = NULL; return function; } PgQueryInternalPlpgsqlFuncAndError pg_query_raw_parse_plpgsql(CreateFunctionStmt* stmt) { PgQueryInternalPlpgsqlFuncAndError result = {0}; MemoryContext cctx = CurrentMemoryContext; char stderr_buffer[STDERR_BUFFER_LEN + 1] = {0}; #ifndef DEBUG int stderr_global; int stderr_pipe[2]; #endif #ifndef DEBUG // Setup pipe for stderr redirection if (pipe(stderr_pipe) != 0) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to open pipe, too many open file descriptors") result.error = error; return result; } fcntl(stderr_pipe[0], F_SETFL, fcntl(stderr_pipe[0], F_GETFL) | O_NONBLOCK); // Redirect stderr to the pipe stderr_global = dup(STDERR_FILENO); dup2(stderr_pipe[1], STDERR_FILENO); close(stderr_pipe[1]); #endif PG_TRY(); { result.func = compile_create_function_stmt(stmt); #ifndef DEBUG // Save stderr for result read(stderr_pipe[0], stderr_buffer, STDERR_BUFFER_LEN); #endif if (strlen(stderr_buffer) > 0) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup(stderr_buffer); error->filename = ""; error->funcname = ""; error->context = ""; result.error = error; } } PG_CATCH(); { ErrorData* error_data; PgQueryError* error; MemoryContextSwitchTo(cctx); error_data = CopyErrorData(); // Note: This is intentionally malloc so exiting the memory context doesn't free this error = malloc(sizeof(PgQueryError)); error->message = strdup(error_data->message); error->filename = strdup(error_data->filename); error->funcname = strdup(error_data->funcname); error->context = strdup(error_data->context); error->lineno = error_data->lineno; error->cursorpos = error_data->cursorpos; result.error = error; FlushErrorState(); } PG_END_TRY(); #ifndef DEBUG // Restore stderr, close pipe dup2(stderr_global, STDERR_FILENO); close(stderr_pipe[0]); close(stderr_global); #endif return result; } typedef struct createFunctionStmts { CreateFunctionStmt **stmts; int stmts_buf_size; int stmts_count; } createFunctionStmts; static bool create_function_stmts_walker(Node *node, createFunctionStmts *state) { bool result; MemoryContext ccxt = CurrentMemoryContext; if (node == NULL) return false; if (IsA(node, CreateFunctionStmt)) { if (state->stmts_count >= state->stmts_buf_size) { state->stmts_buf_size *= 2; state->stmts = (CreateFunctionStmt**) repalloc(state->stmts, state->stmts_buf_size * sizeof(CreateFunctionStmt*)); } state->stmts[state->stmts_count] = (CreateFunctionStmt *) node; state->stmts_count++; } else if (IsA(node, RawStmt)) { return create_function_stmts_walker((Node *) ((RawStmt *) node)->stmt, state); } PG_TRY(); { result = raw_expression_tree_walker(node, create_function_stmts_walker, (void*) state); } PG_CATCH(); { MemoryContextSwitchTo(ccxt); FlushErrorState(); result = false; } PG_END_TRY(); return result; } PgQueryPlpgsqlParseResult pg_query_parse_plpgsql(const char* input) { MemoryContext ctx = NULL; PgQueryPlpgsqlParseResult result = {0}; PgQueryInternalParsetreeAndError parse_result; createFunctionStmts statements; size_t i; ctx = pg_query_enter_memory_context(); parse_result = pg_query_raw_parse(input); result.error = parse_result.error; if (result.error != NULL) { pg_query_exit_memory_context(ctx); return result; } statements.stmts_buf_size = 100; statements.stmts = (CreateFunctionStmt**) palloc(statements.stmts_buf_size * sizeof(CreateFunctionStmt*)); statements.stmts_count = 0; create_function_stmts_walker((Node*) parse_result.tree, &statements); if (statements.stmts_count == 0) { result.plpgsql_funcs = strdup("[]"); pg_query_exit_memory_context(ctx); return result; } result.plpgsql_funcs = strdup("[\n"); for (i = 0; i < statements.stmts_count; i++) { PgQueryInternalPlpgsqlFuncAndError func_and_error; func_and_error = pg_query_raw_parse_plpgsql(statements.stmts[i]); // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now result.error = func_and_error.error; if (result.error != NULL) { pg_query_exit_memory_context(ctx); return result; } if (func_and_error.func != NULL) { char *func_json; char *new_out; func_json = plpgsqlToJSON(func_and_error.func); plpgsql_free_function_memory(func_and_error.func); int err = asprintf(&new_out, "%s%s,\n", result.plpgsql_funcs, func_json); if (err == -1) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to output PL/pgSQL functions due to asprintf failure"); result.error = error; } else { free(result.plpgsql_funcs); result.plpgsql_funcs = new_out; } pfree(func_json); } } result.plpgsql_funcs[strlen(result.plpgsql_funcs) - 2] = '\n'; result.plpgsql_funcs[strlen(result.plpgsql_funcs) - 1] = ']'; free(parse_result.stderr_buffer); pg_query_exit_memory_context(ctx); return result; } void pg_query_free_plpgsql_parse_result(PgQueryPlpgsqlParseResult result) { if (result.error) { pg_query_free_error(result.error); } free(result.plpgsql_funcs); } libpg_query-13-2.1.0/src/pg_query_readfuncs.h000066400000000000000000000003111413137616400211030ustar00rootroot00000000000000#ifndef PG_QUERY_READFUNCS_H #define PG_QUERY_READFUNCS_H #include "pg_query.h" #include "postgres.h" #include "nodes/pg_list.h" List * pg_query_protobuf_to_nodes(PgQueryProtobuf protobuf); #endif libpg_query-13-2.1.0/src/pg_query_readfuncs_conds.c000066400000000000000000000570411413137616400223000ustar00rootroot00000000000000// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb READ_COND(Alias, Alias, alias, ALIAS, Alias, alias); READ_COND(RangeVar, RangeVar, range_var, RANGE_VAR, RangeVar, range_var); READ_COND(TableFunc, TableFunc, table_func, TABLE_FUNC, TableFunc, table_func); READ_COND(Expr, Expr, expr, EXPR, Expr, expr); READ_COND(Var, Var, var, VAR, Var, var); READ_COND(Param, Param, param, PARAM, Param, param); READ_COND(Aggref, Aggref, aggref, AGGREF, Aggref, aggref); READ_COND(GroupingFunc, GroupingFunc, grouping_func, GROUPING_FUNC, GroupingFunc, grouping_func); READ_COND(WindowFunc, WindowFunc, window_func, WINDOW_FUNC, WindowFunc, window_func); READ_COND(SubscriptingRef, SubscriptingRef, subscripting_ref, SUBSCRIPTING_REF, SubscriptingRef, subscripting_ref); READ_COND(FuncExpr, FuncExpr, func_expr, FUNC_EXPR, FuncExpr, func_expr); READ_COND(NamedArgExpr, NamedArgExpr, named_arg_expr, NAMED_ARG_EXPR, NamedArgExpr, named_arg_expr); READ_COND(OpExpr, OpExpr, op_expr, OP_EXPR, OpExpr, op_expr); READ_COND(DistinctExpr, DistinctExpr, distinct_expr, DISTINCT_EXPR, DistinctExpr, distinct_expr); READ_COND(NullIfExpr, NullIfExpr, null_if_expr, NULL_IF_EXPR, NullIfExpr, null_if_expr); READ_COND(ScalarArrayOpExpr, ScalarArrayOpExpr, scalar_array_op_expr, SCALAR_ARRAY_OP_EXPR, ScalarArrayOpExpr, scalar_array_op_expr); READ_COND(BoolExpr, BoolExpr, bool_expr, BOOL_EXPR, BoolExpr, bool_expr); READ_COND(SubLink, SubLink, sub_link, SUB_LINK, SubLink, sub_link); READ_COND(SubPlan, SubPlan, sub_plan, SUB_PLAN, SubPlan, sub_plan); READ_COND(AlternativeSubPlan, AlternativeSubPlan, alternative_sub_plan, ALTERNATIVE_SUB_PLAN, AlternativeSubPlan, alternative_sub_plan); READ_COND(FieldSelect, FieldSelect, field_select, FIELD_SELECT, FieldSelect, field_select); READ_COND(FieldStore, FieldStore, field_store, FIELD_STORE, FieldStore, field_store); READ_COND(RelabelType, RelabelType, relabel_type, RELABEL_TYPE, RelabelType, relabel_type); READ_COND(CoerceViaIO, CoerceViaIO, coerce_via_io, COERCE_VIA_IO, CoerceViaIO, coerce_via_io); READ_COND(ArrayCoerceExpr, ArrayCoerceExpr, array_coerce_expr, ARRAY_COERCE_EXPR, ArrayCoerceExpr, array_coerce_expr); READ_COND(ConvertRowtypeExpr, ConvertRowtypeExpr, convert_rowtype_expr, CONVERT_ROWTYPE_EXPR, ConvertRowtypeExpr, convert_rowtype_expr); READ_COND(CollateExpr, CollateExpr, collate_expr, COLLATE_EXPR, CollateExpr, collate_expr); READ_COND(CaseExpr, CaseExpr, case_expr, CASE_EXPR, CaseExpr, case_expr); READ_COND(CaseWhen, CaseWhen, case_when, CASE_WHEN, CaseWhen, case_when); READ_COND(CaseTestExpr, CaseTestExpr, case_test_expr, CASE_TEST_EXPR, CaseTestExpr, case_test_expr); READ_COND(ArrayExpr, ArrayExpr, array_expr, ARRAY_EXPR, ArrayExpr, array_expr); READ_COND(RowExpr, RowExpr, row_expr, ROW_EXPR, RowExpr, row_expr); READ_COND(RowCompareExpr, RowCompareExpr, row_compare_expr, ROW_COMPARE_EXPR, RowCompareExpr, row_compare_expr); READ_COND(CoalesceExpr, CoalesceExpr, coalesce_expr, COALESCE_EXPR, CoalesceExpr, coalesce_expr); READ_COND(MinMaxExpr, MinMaxExpr, min_max_expr, MIN_MAX_EXPR, MinMaxExpr, min_max_expr); READ_COND(SQLValueFunction, SQLValueFunction, sqlvalue_function, SQLVALUE_FUNCTION, SQLValueFunction, sqlvalue_function); READ_COND(XmlExpr, XmlExpr, xml_expr, XML_EXPR, XmlExpr, xml_expr); READ_COND(NullTest, NullTest, null_test, NULL_TEST, NullTest, null_test); READ_COND(BooleanTest, BooleanTest, boolean_test, BOOLEAN_TEST, BooleanTest, boolean_test); READ_COND(CoerceToDomain, CoerceToDomain, coerce_to_domain, COERCE_TO_DOMAIN, CoerceToDomain, coerce_to_domain); READ_COND(CoerceToDomainValue, CoerceToDomainValue, coerce_to_domain_value, COERCE_TO_DOMAIN_VALUE, CoerceToDomainValue, coerce_to_domain_value); READ_COND(SetToDefault, SetToDefault, set_to_default, SET_TO_DEFAULT, SetToDefault, set_to_default); READ_COND(CurrentOfExpr, CurrentOfExpr, current_of_expr, CURRENT_OF_EXPR, CurrentOfExpr, current_of_expr); READ_COND(NextValueExpr, NextValueExpr, next_value_expr, NEXT_VALUE_EXPR, NextValueExpr, next_value_expr); READ_COND(InferenceElem, InferenceElem, inference_elem, INFERENCE_ELEM, InferenceElem, inference_elem); READ_COND(TargetEntry, TargetEntry, target_entry, TARGET_ENTRY, TargetEntry, target_entry); READ_COND(RangeTblRef, RangeTblRef, range_tbl_ref, RANGE_TBL_REF, RangeTblRef, range_tbl_ref); READ_COND(JoinExpr, JoinExpr, join_expr, JOIN_EXPR, JoinExpr, join_expr); READ_COND(FromExpr, FromExpr, from_expr, FROM_EXPR, FromExpr, from_expr); READ_COND(OnConflictExpr, OnConflictExpr, on_conflict_expr, ON_CONFLICT_EXPR, OnConflictExpr, on_conflict_expr); READ_COND(IntoClause, IntoClause, into_clause, INTO_CLAUSE, IntoClause, into_clause); READ_COND(RawStmt, RawStmt, raw_stmt, RAW_STMT, RawStmt, raw_stmt); READ_COND(Query, Query, query, QUERY, Query, query); READ_COND(InsertStmt, InsertStmt, insert_stmt, INSERT_STMT, InsertStmt, insert_stmt); READ_COND(DeleteStmt, DeleteStmt, delete_stmt, DELETE_STMT, DeleteStmt, delete_stmt); READ_COND(UpdateStmt, UpdateStmt, update_stmt, UPDATE_STMT, UpdateStmt, update_stmt); READ_COND(SelectStmt, SelectStmt, select_stmt, SELECT_STMT, SelectStmt, select_stmt); READ_COND(AlterTableStmt, AlterTableStmt, alter_table_stmt, ALTER_TABLE_STMT, AlterTableStmt, alter_table_stmt); READ_COND(AlterTableCmd, AlterTableCmd, alter_table_cmd, ALTER_TABLE_CMD, AlterTableCmd, alter_table_cmd); READ_COND(AlterDomainStmt, AlterDomainStmt, alter_domain_stmt, ALTER_DOMAIN_STMT, AlterDomainStmt, alter_domain_stmt); READ_COND(SetOperationStmt, SetOperationStmt, set_operation_stmt, SET_OPERATION_STMT, SetOperationStmt, set_operation_stmt); READ_COND(GrantStmt, GrantStmt, grant_stmt, GRANT_STMT, GrantStmt, grant_stmt); READ_COND(GrantRoleStmt, GrantRoleStmt, grant_role_stmt, GRANT_ROLE_STMT, GrantRoleStmt, grant_role_stmt); READ_COND(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt, ALTER_DEFAULT_PRIVILEGES_STMT, AlterDefaultPrivilegesStmt, alter_default_privileges_stmt); READ_COND(ClosePortalStmt, ClosePortalStmt, close_portal_stmt, CLOSE_PORTAL_STMT, ClosePortalStmt, close_portal_stmt); READ_COND(ClusterStmt, ClusterStmt, cluster_stmt, CLUSTER_STMT, ClusterStmt, cluster_stmt); READ_COND(CopyStmt, CopyStmt, copy_stmt, COPY_STMT, CopyStmt, copy_stmt); READ_COND(CreateStmt, CreateStmt, create_stmt, CREATE_STMT, CreateStmt, create_stmt); READ_COND(DefineStmt, DefineStmt, define_stmt, DEFINE_STMT, DefineStmt, define_stmt); READ_COND(DropStmt, DropStmt, drop_stmt, DROP_STMT, DropStmt, drop_stmt); READ_COND(TruncateStmt, TruncateStmt, truncate_stmt, TRUNCATE_STMT, TruncateStmt, truncate_stmt); READ_COND(CommentStmt, CommentStmt, comment_stmt, COMMENT_STMT, CommentStmt, comment_stmt); READ_COND(FetchStmt, FetchStmt, fetch_stmt, FETCH_STMT, FetchStmt, fetch_stmt); READ_COND(IndexStmt, IndexStmt, index_stmt, INDEX_STMT, IndexStmt, index_stmt); READ_COND(CreateFunctionStmt, CreateFunctionStmt, create_function_stmt, CREATE_FUNCTION_STMT, CreateFunctionStmt, create_function_stmt); READ_COND(AlterFunctionStmt, AlterFunctionStmt, alter_function_stmt, ALTER_FUNCTION_STMT, AlterFunctionStmt, alter_function_stmt); READ_COND(DoStmt, DoStmt, do_stmt, DO_STMT, DoStmt, do_stmt); READ_COND(RenameStmt, RenameStmt, rename_stmt, RENAME_STMT, RenameStmt, rename_stmt); READ_COND(RuleStmt, RuleStmt, rule_stmt, RULE_STMT, RuleStmt, rule_stmt); READ_COND(NotifyStmt, NotifyStmt, notify_stmt, NOTIFY_STMT, NotifyStmt, notify_stmt); READ_COND(ListenStmt, ListenStmt, listen_stmt, LISTEN_STMT, ListenStmt, listen_stmt); READ_COND(UnlistenStmt, UnlistenStmt, unlisten_stmt, UNLISTEN_STMT, UnlistenStmt, unlisten_stmt); READ_COND(TransactionStmt, TransactionStmt, transaction_stmt, TRANSACTION_STMT, TransactionStmt, transaction_stmt); READ_COND(ViewStmt, ViewStmt, view_stmt, VIEW_STMT, ViewStmt, view_stmt); READ_COND(LoadStmt, LoadStmt, load_stmt, LOAD_STMT, LoadStmt, load_stmt); READ_COND(CreateDomainStmt, CreateDomainStmt, create_domain_stmt, CREATE_DOMAIN_STMT, CreateDomainStmt, create_domain_stmt); READ_COND(CreatedbStmt, CreatedbStmt, createdb_stmt, CREATEDB_STMT, CreatedbStmt, createdb_stmt); READ_COND(DropdbStmt, DropdbStmt, dropdb_stmt, DROPDB_STMT, DropdbStmt, dropdb_stmt); READ_COND(VacuumStmt, VacuumStmt, vacuum_stmt, VACUUM_STMT, VacuumStmt, vacuum_stmt); READ_COND(ExplainStmt, ExplainStmt, explain_stmt, EXPLAIN_STMT, ExplainStmt, explain_stmt); READ_COND(CreateTableAsStmt, CreateTableAsStmt, create_table_as_stmt, CREATE_TABLE_AS_STMT, CreateTableAsStmt, create_table_as_stmt); READ_COND(CreateSeqStmt, CreateSeqStmt, create_seq_stmt, CREATE_SEQ_STMT, CreateSeqStmt, create_seq_stmt); READ_COND(AlterSeqStmt, AlterSeqStmt, alter_seq_stmt, ALTER_SEQ_STMT, AlterSeqStmt, alter_seq_stmt); READ_COND(VariableSetStmt, VariableSetStmt, variable_set_stmt, VARIABLE_SET_STMT, VariableSetStmt, variable_set_stmt); READ_COND(VariableShowStmt, VariableShowStmt, variable_show_stmt, VARIABLE_SHOW_STMT, VariableShowStmt, variable_show_stmt); READ_COND(DiscardStmt, DiscardStmt, discard_stmt, DISCARD_STMT, DiscardStmt, discard_stmt); READ_COND(CreateTrigStmt, CreateTrigStmt, create_trig_stmt, CREATE_TRIG_STMT, CreateTrigStmt, create_trig_stmt); READ_COND(CreatePLangStmt, CreatePLangStmt, create_plang_stmt, CREATE_PLANG_STMT, CreatePLangStmt, create_plang_stmt); READ_COND(CreateRoleStmt, CreateRoleStmt, create_role_stmt, CREATE_ROLE_STMT, CreateRoleStmt, create_role_stmt); READ_COND(AlterRoleStmt, AlterRoleStmt, alter_role_stmt, ALTER_ROLE_STMT, AlterRoleStmt, alter_role_stmt); READ_COND(DropRoleStmt, DropRoleStmt, drop_role_stmt, DROP_ROLE_STMT, DropRoleStmt, drop_role_stmt); READ_COND(LockStmt, LockStmt, lock_stmt, LOCK_STMT, LockStmt, lock_stmt); READ_COND(ConstraintsSetStmt, ConstraintsSetStmt, constraints_set_stmt, CONSTRAINTS_SET_STMT, ConstraintsSetStmt, constraints_set_stmt); READ_COND(ReindexStmt, ReindexStmt, reindex_stmt, REINDEX_STMT, ReindexStmt, reindex_stmt); READ_COND(CheckPointStmt, CheckPointStmt, check_point_stmt, CHECK_POINT_STMT, CheckPointStmt, check_point_stmt); READ_COND(CreateSchemaStmt, CreateSchemaStmt, create_schema_stmt, CREATE_SCHEMA_STMT, CreateSchemaStmt, create_schema_stmt); READ_COND(AlterDatabaseStmt, AlterDatabaseStmt, alter_database_stmt, ALTER_DATABASE_STMT, AlterDatabaseStmt, alter_database_stmt); READ_COND(AlterDatabaseSetStmt, AlterDatabaseSetStmt, alter_database_set_stmt, ALTER_DATABASE_SET_STMT, AlterDatabaseSetStmt, alter_database_set_stmt); READ_COND(AlterRoleSetStmt, AlterRoleSetStmt, alter_role_set_stmt, ALTER_ROLE_SET_STMT, AlterRoleSetStmt, alter_role_set_stmt); READ_COND(CreateConversionStmt, CreateConversionStmt, create_conversion_stmt, CREATE_CONVERSION_STMT, CreateConversionStmt, create_conversion_stmt); READ_COND(CreateCastStmt, CreateCastStmt, create_cast_stmt, CREATE_CAST_STMT, CreateCastStmt, create_cast_stmt); READ_COND(CreateOpClassStmt, CreateOpClassStmt, create_op_class_stmt, CREATE_OP_CLASS_STMT, CreateOpClassStmt, create_op_class_stmt); READ_COND(CreateOpFamilyStmt, CreateOpFamilyStmt, create_op_family_stmt, CREATE_OP_FAMILY_STMT, CreateOpFamilyStmt, create_op_family_stmt); READ_COND(AlterOpFamilyStmt, AlterOpFamilyStmt, alter_op_family_stmt, ALTER_OP_FAMILY_STMT, AlterOpFamilyStmt, alter_op_family_stmt); READ_COND(PrepareStmt, PrepareStmt, prepare_stmt, PREPARE_STMT, PrepareStmt, prepare_stmt); READ_COND(ExecuteStmt, ExecuteStmt, execute_stmt, EXECUTE_STMT, ExecuteStmt, execute_stmt); READ_COND(DeallocateStmt, DeallocateStmt, deallocate_stmt, DEALLOCATE_STMT, DeallocateStmt, deallocate_stmt); READ_COND(DeclareCursorStmt, DeclareCursorStmt, declare_cursor_stmt, DECLARE_CURSOR_STMT, DeclareCursorStmt, declare_cursor_stmt); READ_COND(CreateTableSpaceStmt, CreateTableSpaceStmt, create_table_space_stmt, CREATE_TABLE_SPACE_STMT, CreateTableSpaceStmt, create_table_space_stmt); READ_COND(DropTableSpaceStmt, DropTableSpaceStmt, drop_table_space_stmt, DROP_TABLE_SPACE_STMT, DropTableSpaceStmt, drop_table_space_stmt); READ_COND(AlterObjectDependsStmt, AlterObjectDependsStmt, alter_object_depends_stmt, ALTER_OBJECT_DEPENDS_STMT, AlterObjectDependsStmt, alter_object_depends_stmt); READ_COND(AlterObjectSchemaStmt, AlterObjectSchemaStmt, alter_object_schema_stmt, ALTER_OBJECT_SCHEMA_STMT, AlterObjectSchemaStmt, alter_object_schema_stmt); READ_COND(AlterOwnerStmt, AlterOwnerStmt, alter_owner_stmt, ALTER_OWNER_STMT, AlterOwnerStmt, alter_owner_stmt); READ_COND(AlterOperatorStmt, AlterOperatorStmt, alter_operator_stmt, ALTER_OPERATOR_STMT, AlterOperatorStmt, alter_operator_stmt); READ_COND(AlterTypeStmt, AlterTypeStmt, alter_type_stmt, ALTER_TYPE_STMT, AlterTypeStmt, alter_type_stmt); READ_COND(DropOwnedStmt, DropOwnedStmt, drop_owned_stmt, DROP_OWNED_STMT, DropOwnedStmt, drop_owned_stmt); READ_COND(ReassignOwnedStmt, ReassignOwnedStmt, reassign_owned_stmt, REASSIGN_OWNED_STMT, ReassignOwnedStmt, reassign_owned_stmt); READ_COND(CompositeTypeStmt, CompositeTypeStmt, composite_type_stmt, COMPOSITE_TYPE_STMT, CompositeTypeStmt, composite_type_stmt); READ_COND(CreateEnumStmt, CreateEnumStmt, create_enum_stmt, CREATE_ENUM_STMT, CreateEnumStmt, create_enum_stmt); READ_COND(CreateRangeStmt, CreateRangeStmt, create_range_stmt, CREATE_RANGE_STMT, CreateRangeStmt, create_range_stmt); READ_COND(AlterEnumStmt, AlterEnumStmt, alter_enum_stmt, ALTER_ENUM_STMT, AlterEnumStmt, alter_enum_stmt); READ_COND(AlterTSDictionaryStmt, AlterTSDictionaryStmt, alter_tsdictionary_stmt, ALTER_TSDICTIONARY_STMT, AlterTSDictionaryStmt, alter_tsdictionary_stmt); READ_COND(AlterTSConfigurationStmt, AlterTSConfigurationStmt, alter_tsconfiguration_stmt, ALTER_TSCONFIGURATION_STMT, AlterTSConfigurationStmt, alter_tsconfiguration_stmt); READ_COND(CreateFdwStmt, CreateFdwStmt, create_fdw_stmt, CREATE_FDW_STMT, CreateFdwStmt, create_fdw_stmt); READ_COND(AlterFdwStmt, AlterFdwStmt, alter_fdw_stmt, ALTER_FDW_STMT, AlterFdwStmt, alter_fdw_stmt); READ_COND(CreateForeignServerStmt, CreateForeignServerStmt, create_foreign_server_stmt, CREATE_FOREIGN_SERVER_STMT, CreateForeignServerStmt, create_foreign_server_stmt); READ_COND(AlterForeignServerStmt, AlterForeignServerStmt, alter_foreign_server_stmt, ALTER_FOREIGN_SERVER_STMT, AlterForeignServerStmt, alter_foreign_server_stmt); READ_COND(CreateUserMappingStmt, CreateUserMappingStmt, create_user_mapping_stmt, CREATE_USER_MAPPING_STMT, CreateUserMappingStmt, create_user_mapping_stmt); READ_COND(AlterUserMappingStmt, AlterUserMappingStmt, alter_user_mapping_stmt, ALTER_USER_MAPPING_STMT, AlterUserMappingStmt, alter_user_mapping_stmt); READ_COND(DropUserMappingStmt, DropUserMappingStmt, drop_user_mapping_stmt, DROP_USER_MAPPING_STMT, DropUserMappingStmt, drop_user_mapping_stmt); READ_COND(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt, ALTER_TABLE_SPACE_OPTIONS_STMT, AlterTableSpaceOptionsStmt, alter_table_space_options_stmt); READ_COND(AlterTableMoveAllStmt, AlterTableMoveAllStmt, alter_table_move_all_stmt, ALTER_TABLE_MOVE_ALL_STMT, AlterTableMoveAllStmt, alter_table_move_all_stmt); READ_COND(SecLabelStmt, SecLabelStmt, sec_label_stmt, SEC_LABEL_STMT, SecLabelStmt, sec_label_stmt); READ_COND(CreateForeignTableStmt, CreateForeignTableStmt, create_foreign_table_stmt, CREATE_FOREIGN_TABLE_STMT, CreateForeignTableStmt, create_foreign_table_stmt); READ_COND(ImportForeignSchemaStmt, ImportForeignSchemaStmt, import_foreign_schema_stmt, IMPORT_FOREIGN_SCHEMA_STMT, ImportForeignSchemaStmt, import_foreign_schema_stmt); READ_COND(CreateExtensionStmt, CreateExtensionStmt, create_extension_stmt, CREATE_EXTENSION_STMT, CreateExtensionStmt, create_extension_stmt); READ_COND(AlterExtensionStmt, AlterExtensionStmt, alter_extension_stmt, ALTER_EXTENSION_STMT, AlterExtensionStmt, alter_extension_stmt); READ_COND(AlterExtensionContentsStmt, AlterExtensionContentsStmt, alter_extension_contents_stmt, ALTER_EXTENSION_CONTENTS_STMT, AlterExtensionContentsStmt, alter_extension_contents_stmt); READ_COND(CreateEventTrigStmt, CreateEventTrigStmt, create_event_trig_stmt, CREATE_EVENT_TRIG_STMT, CreateEventTrigStmt, create_event_trig_stmt); READ_COND(AlterEventTrigStmt, AlterEventTrigStmt, alter_event_trig_stmt, ALTER_EVENT_TRIG_STMT, AlterEventTrigStmt, alter_event_trig_stmt); READ_COND(RefreshMatViewStmt, RefreshMatViewStmt, refresh_mat_view_stmt, REFRESH_MAT_VIEW_STMT, RefreshMatViewStmt, refresh_mat_view_stmt); READ_COND(ReplicaIdentityStmt, ReplicaIdentityStmt, replica_identity_stmt, REPLICA_IDENTITY_STMT, ReplicaIdentityStmt, replica_identity_stmt); READ_COND(AlterSystemStmt, AlterSystemStmt, alter_system_stmt, ALTER_SYSTEM_STMT, AlterSystemStmt, alter_system_stmt); READ_COND(CreatePolicyStmt, CreatePolicyStmt, create_policy_stmt, CREATE_POLICY_STMT, CreatePolicyStmt, create_policy_stmt); READ_COND(AlterPolicyStmt, AlterPolicyStmt, alter_policy_stmt, ALTER_POLICY_STMT, AlterPolicyStmt, alter_policy_stmt); READ_COND(CreateTransformStmt, CreateTransformStmt, create_transform_stmt, CREATE_TRANSFORM_STMT, CreateTransformStmt, create_transform_stmt); READ_COND(CreateAmStmt, CreateAmStmt, create_am_stmt, CREATE_AM_STMT, CreateAmStmt, create_am_stmt); READ_COND(CreatePublicationStmt, CreatePublicationStmt, create_publication_stmt, CREATE_PUBLICATION_STMT, CreatePublicationStmt, create_publication_stmt); READ_COND(AlterPublicationStmt, AlterPublicationStmt, alter_publication_stmt, ALTER_PUBLICATION_STMT, AlterPublicationStmt, alter_publication_stmt); READ_COND(CreateSubscriptionStmt, CreateSubscriptionStmt, create_subscription_stmt, CREATE_SUBSCRIPTION_STMT, CreateSubscriptionStmt, create_subscription_stmt); READ_COND(AlterSubscriptionStmt, AlterSubscriptionStmt, alter_subscription_stmt, ALTER_SUBSCRIPTION_STMT, AlterSubscriptionStmt, alter_subscription_stmt); READ_COND(DropSubscriptionStmt, DropSubscriptionStmt, drop_subscription_stmt, DROP_SUBSCRIPTION_STMT, DropSubscriptionStmt, drop_subscription_stmt); READ_COND(CreateStatsStmt, CreateStatsStmt, create_stats_stmt, CREATE_STATS_STMT, CreateStatsStmt, create_stats_stmt); READ_COND(AlterCollationStmt, AlterCollationStmt, alter_collation_stmt, ALTER_COLLATION_STMT, AlterCollationStmt, alter_collation_stmt); READ_COND(CallStmt, CallStmt, call_stmt, CALL_STMT, CallStmt, call_stmt); READ_COND(AlterStatsStmt, AlterStatsStmt, alter_stats_stmt, ALTER_STATS_STMT, AlterStatsStmt, alter_stats_stmt); READ_COND(A_Expr, AExpr, a__expr, A_EXPR, A_Expr, a_expr); READ_COND(ColumnRef, ColumnRef, column_ref, COLUMN_REF, ColumnRef, column_ref); READ_COND(ParamRef, ParamRef, param_ref, PARAM_REF, ParamRef, param_ref); READ_COND(A_Const, AConst, a__const, A_CONST, A_Const, a_const); READ_COND(FuncCall, FuncCall, func_call, FUNC_CALL, FuncCall, func_call); READ_COND(A_Star, AStar, a__star, A_STAR, A_Star, a_star); READ_COND(A_Indices, AIndices, a__indices, A_INDICES, A_Indices, a_indices); READ_COND(A_Indirection, AIndirection, a__indirection, A_INDIRECTION, A_Indirection, a_indirection); READ_COND(A_ArrayExpr, AArrayExpr, a__array_expr, A_ARRAY_EXPR, A_ArrayExpr, a_array_expr); READ_COND(ResTarget, ResTarget, res_target, RES_TARGET, ResTarget, res_target); READ_COND(MultiAssignRef, MultiAssignRef, multi_assign_ref, MULTI_ASSIGN_REF, MultiAssignRef, multi_assign_ref); READ_COND(TypeCast, TypeCast, type_cast, TYPE_CAST, TypeCast, type_cast); READ_COND(CollateClause, CollateClause, collate_clause, COLLATE_CLAUSE, CollateClause, collate_clause); READ_COND(SortBy, SortBy, sort_by, SORT_BY, SortBy, sort_by); READ_COND(WindowDef, WindowDef, window_def, WINDOW_DEF, WindowDef, window_def); READ_COND(RangeSubselect, RangeSubselect, range_subselect, RANGE_SUBSELECT, RangeSubselect, range_subselect); READ_COND(RangeFunction, RangeFunction, range_function, RANGE_FUNCTION, RangeFunction, range_function); READ_COND(RangeTableSample, RangeTableSample, range_table_sample, RANGE_TABLE_SAMPLE, RangeTableSample, range_table_sample); READ_COND(RangeTableFunc, RangeTableFunc, range_table_func, RANGE_TABLE_FUNC, RangeTableFunc, range_table_func); READ_COND(RangeTableFuncCol, RangeTableFuncCol, range_table_func_col, RANGE_TABLE_FUNC_COL, RangeTableFuncCol, range_table_func_col); READ_COND(TypeName, TypeName, type_name, TYPE_NAME, TypeName, type_name); READ_COND(ColumnDef, ColumnDef, column_def, COLUMN_DEF, ColumnDef, column_def); READ_COND(IndexElem, IndexElem, index_elem, INDEX_ELEM, IndexElem, index_elem); READ_COND(Constraint, Constraint, constraint, CONSTRAINT, Constraint, constraint); READ_COND(DefElem, DefElem, def_elem, DEF_ELEM, DefElem, def_elem); READ_COND(RangeTblEntry, RangeTblEntry, range_tbl_entry, RANGE_TBL_ENTRY, RangeTblEntry, range_tbl_entry); READ_COND(RangeTblFunction, RangeTblFunction, range_tbl_function, RANGE_TBL_FUNCTION, RangeTblFunction, range_tbl_function); READ_COND(TableSampleClause, TableSampleClause, table_sample_clause, TABLE_SAMPLE_CLAUSE, TableSampleClause, table_sample_clause); READ_COND(WithCheckOption, WithCheckOption, with_check_option, WITH_CHECK_OPTION, WithCheckOption, with_check_option); READ_COND(SortGroupClause, SortGroupClause, sort_group_clause, SORT_GROUP_CLAUSE, SortGroupClause, sort_group_clause); READ_COND(GroupingSet, GroupingSet, grouping_set, GROUPING_SET, GroupingSet, grouping_set); READ_COND(WindowClause, WindowClause, window_clause, WINDOW_CLAUSE, WindowClause, window_clause); READ_COND(ObjectWithArgs, ObjectWithArgs, object_with_args, OBJECT_WITH_ARGS, ObjectWithArgs, object_with_args); READ_COND(AccessPriv, AccessPriv, access_priv, ACCESS_PRIV, AccessPriv, access_priv); READ_COND(CreateOpClassItem, CreateOpClassItem, create_op_class_item, CREATE_OP_CLASS_ITEM, CreateOpClassItem, create_op_class_item); READ_COND(TableLikeClause, TableLikeClause, table_like_clause, TABLE_LIKE_CLAUSE, TableLikeClause, table_like_clause); READ_COND(FunctionParameter, FunctionParameter, function_parameter, FUNCTION_PARAMETER, FunctionParameter, function_parameter); READ_COND(LockingClause, LockingClause, locking_clause, LOCKING_CLAUSE, LockingClause, locking_clause); READ_COND(RowMarkClause, RowMarkClause, row_mark_clause, ROW_MARK_CLAUSE, RowMarkClause, row_mark_clause); READ_COND(XmlSerialize, XmlSerialize, xml_serialize, XML_SERIALIZE, XmlSerialize, xml_serialize); READ_COND(WithClause, WithClause, with_clause, WITH_CLAUSE, WithClause, with_clause); READ_COND(InferClause, InferClause, infer_clause, INFER_CLAUSE, InferClause, infer_clause); READ_COND(OnConflictClause, OnConflictClause, on_conflict_clause, ON_CONFLICT_CLAUSE, OnConflictClause, on_conflict_clause); READ_COND(CommonTableExpr, CommonTableExpr, common_table_expr, COMMON_TABLE_EXPR, CommonTableExpr, common_table_expr); READ_COND(RoleSpec, RoleSpec, role_spec, ROLE_SPEC, RoleSpec, role_spec); READ_COND(TriggerTransition, TriggerTransition, trigger_transition, TRIGGER_TRANSITION, TriggerTransition, trigger_transition); READ_COND(PartitionElem, PartitionElem, partition_elem, PARTITION_ELEM, PartitionElem, partition_elem); READ_COND(PartitionSpec, PartitionSpec, partition_spec, PARTITION_SPEC, PartitionSpec, partition_spec); READ_COND(PartitionBoundSpec, PartitionBoundSpec, partition_bound_spec, PARTITION_BOUND_SPEC, PartitionBoundSpec, partition_bound_spec); READ_COND(PartitionRangeDatum, PartitionRangeDatum, partition_range_datum, PARTITION_RANGE_DATUM, PartitionRangeDatum, partition_range_datum); READ_COND(PartitionCmd, PartitionCmd, partition_cmd, PARTITION_CMD, PartitionCmd, partition_cmd); READ_COND(VacuumRelation, VacuumRelation, vacuum_relation, VACUUM_RELATION, VacuumRelation, vacuum_relation); READ_COND(InlineCodeBlock, InlineCodeBlock, inline_code_block, INLINE_CODE_BLOCK, InlineCodeBlock, inline_code_block); READ_COND(CallContext, CallContext, call_context, CALL_CONTEXT, CallContext, call_context); libpg_query-13-2.1.0/src/pg_query_readfuncs_defs.c000066400000000000000000003423731413137616400221200ustar00rootroot00000000000000// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb static Alias * _readAlias(OUT_TYPE(Alias, Alias) msg); static RangeVar * _readRangeVar(OUT_TYPE(RangeVar, RangeVar) msg); static TableFunc * _readTableFunc(OUT_TYPE(TableFunc, TableFunc) msg); static Expr * _readExpr(OUT_TYPE(Expr, Expr) msg); static Var * _readVar(OUT_TYPE(Var, Var) msg); static Param * _readParam(OUT_TYPE(Param, Param) msg); static Aggref * _readAggref(OUT_TYPE(Aggref, Aggref) msg); static GroupingFunc * _readGroupingFunc(OUT_TYPE(GroupingFunc, GroupingFunc) msg); static WindowFunc * _readWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) msg); static SubscriptingRef * _readSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) msg); static FuncExpr * _readFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) msg); static NamedArgExpr * _readNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) msg); static OpExpr * _readOpExpr(OUT_TYPE(OpExpr, OpExpr) msg); static DistinctExpr * _readDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) msg); static NullIfExpr * _readNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) msg); static ScalarArrayOpExpr * _readScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) msg); static BoolExpr * _readBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) msg); static SubLink * _readSubLink(OUT_TYPE(SubLink, SubLink) msg); static SubPlan * _readSubPlan(OUT_TYPE(SubPlan, SubPlan) msg); static AlternativeSubPlan * _readAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) msg); static FieldSelect * _readFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) msg); static FieldStore * _readFieldStore(OUT_TYPE(FieldStore, FieldStore) msg); static RelabelType * _readRelabelType(OUT_TYPE(RelabelType, RelabelType) msg); static CoerceViaIO * _readCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) msg); static ArrayCoerceExpr * _readArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) msg); static ConvertRowtypeExpr * _readConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) msg); static CollateExpr * _readCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) msg); static CaseExpr * _readCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) msg); static CaseWhen * _readCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) msg); static CaseTestExpr * _readCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) msg); static ArrayExpr * _readArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) msg); static RowExpr * _readRowExpr(OUT_TYPE(RowExpr, RowExpr) msg); static RowCompareExpr * _readRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) msg); static CoalesceExpr * _readCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) msg); static MinMaxExpr * _readMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) msg); static SQLValueFunction * _readSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) msg); static XmlExpr * _readXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) msg); static NullTest * _readNullTest(OUT_TYPE(NullTest, NullTest) msg); static BooleanTest * _readBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) msg); static CoerceToDomain * _readCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) msg); static CoerceToDomainValue * _readCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) msg); static SetToDefault * _readSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) msg); static CurrentOfExpr * _readCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) msg); static NextValueExpr * _readNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) msg); static InferenceElem * _readInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) msg); static TargetEntry * _readTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) msg); static RangeTblRef * _readRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) msg); static JoinExpr * _readJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) msg); static FromExpr * _readFromExpr(OUT_TYPE(FromExpr, FromExpr) msg); static OnConflictExpr * _readOnConflictExpr(OUT_TYPE(OnConflictExpr, OnConflictExpr) msg); static IntoClause * _readIntoClause(OUT_TYPE(IntoClause, IntoClause) msg); static RawStmt * _readRawStmt(OUT_TYPE(RawStmt, RawStmt) msg); static Query * _readQuery(OUT_TYPE(Query, Query) msg); static InsertStmt * _readInsertStmt(OUT_TYPE(InsertStmt, InsertStmt) msg); static DeleteStmt * _readDeleteStmt(OUT_TYPE(DeleteStmt, DeleteStmt) msg); static UpdateStmt * _readUpdateStmt(OUT_TYPE(UpdateStmt, UpdateStmt) msg); static SelectStmt * _readSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) msg); static AlterTableStmt * _readAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) msg); static AlterTableCmd * _readAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) msg); static AlterDomainStmt * _readAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) msg); static SetOperationStmt * _readSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) msg); static GrantStmt * _readGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) msg); static GrantRoleStmt * _readGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) msg); static AlterDefaultPrivilegesStmt * _readAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) msg); static ClosePortalStmt * _readClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) msg); static ClusterStmt * _readClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) msg); static CopyStmt * _readCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) msg); static CreateStmt * _readCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) msg); static DefineStmt * _readDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) msg); static DropStmt * _readDropStmt(OUT_TYPE(DropStmt, DropStmt) msg); static TruncateStmt * _readTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) msg); static CommentStmt * _readCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) msg); static FetchStmt * _readFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) msg); static IndexStmt * _readIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) msg); static CreateFunctionStmt * _readCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) msg); static AlterFunctionStmt * _readAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) msg); static DoStmt * _readDoStmt(OUT_TYPE(DoStmt, DoStmt) msg); static RenameStmt * _readRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) msg); static RuleStmt * _readRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) msg); static NotifyStmt * _readNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) msg); static ListenStmt * _readListenStmt(OUT_TYPE(ListenStmt, ListenStmt) msg); static UnlistenStmt * _readUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) msg); static TransactionStmt * _readTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) msg); static ViewStmt * _readViewStmt(OUT_TYPE(ViewStmt, ViewStmt) msg); static LoadStmt * _readLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) msg); static CreateDomainStmt * _readCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) msg); static CreatedbStmt * _readCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) msg); static DropdbStmt * _readDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) msg); static VacuumStmt * _readVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) msg); static ExplainStmt * _readExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) msg); static CreateTableAsStmt * _readCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) msg); static CreateSeqStmt * _readCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) msg); static AlterSeqStmt * _readAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) msg); static VariableSetStmt * _readVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) msg); static VariableShowStmt * _readVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) msg); static DiscardStmt * _readDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) msg); static CreateTrigStmt * _readCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) msg); static CreatePLangStmt * _readCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) msg); static CreateRoleStmt * _readCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) msg); static AlterRoleStmt * _readAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) msg); static DropRoleStmt * _readDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) msg); static LockStmt * _readLockStmt(OUT_TYPE(LockStmt, LockStmt) msg); static ConstraintsSetStmt * _readConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) msg); static ReindexStmt * _readReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) msg); static CheckPointStmt * _readCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) msg); static CreateSchemaStmt * _readCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) msg); static AlterDatabaseStmt * _readAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) msg); static AlterDatabaseSetStmt * _readAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) msg); static AlterRoleSetStmt * _readAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) msg); static CreateConversionStmt * _readCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) msg); static CreateCastStmt * _readCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) msg); static CreateOpClassStmt * _readCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) msg); static CreateOpFamilyStmt * _readCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) msg); static AlterOpFamilyStmt * _readAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) msg); static PrepareStmt * _readPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) msg); static ExecuteStmt * _readExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) msg); static DeallocateStmt * _readDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) msg); static DeclareCursorStmt * _readDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) msg); static CreateTableSpaceStmt * _readCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) msg); static DropTableSpaceStmt * _readDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) msg); static AlterObjectDependsStmt * _readAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) msg); static AlterObjectSchemaStmt * _readAlterObjectSchemaStmt(OUT_TYPE(AlterObjectSchemaStmt, AlterObjectSchemaStmt) msg); static AlterOwnerStmt * _readAlterOwnerStmt(OUT_TYPE(AlterOwnerStmt, AlterOwnerStmt) msg); static AlterOperatorStmt * _readAlterOperatorStmt(OUT_TYPE(AlterOperatorStmt, AlterOperatorStmt) msg); static AlterTypeStmt * _readAlterTypeStmt(OUT_TYPE(AlterTypeStmt, AlterTypeStmt) msg); static DropOwnedStmt * _readDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) msg); static ReassignOwnedStmt * _readReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) msg); static CompositeTypeStmt * _readCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) msg); static CreateEnumStmt * _readCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) msg); static CreateRangeStmt * _readCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) msg); static AlterEnumStmt * _readAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) msg); static AlterTSDictionaryStmt * _readAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) msg); static AlterTSConfigurationStmt * _readAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) msg); static CreateFdwStmt * _readCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) msg); static AlterFdwStmt * _readAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) msg); static CreateForeignServerStmt * _readCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) msg); static AlterForeignServerStmt * _readAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) msg); static CreateUserMappingStmt * _readCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) msg); static AlterUserMappingStmt * _readAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) msg); static DropUserMappingStmt * _readDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) msg); static AlterTableSpaceOptionsStmt * _readAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) msg); static AlterTableMoveAllStmt * _readAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) msg); static SecLabelStmt * _readSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) msg); static CreateForeignTableStmt * _readCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) msg); static ImportForeignSchemaStmt * _readImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) msg); static CreateExtensionStmt * _readCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) msg); static AlterExtensionStmt * _readAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) msg); static AlterExtensionContentsStmt * _readAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) msg); static CreateEventTrigStmt * _readCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) msg); static AlterEventTrigStmt * _readAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) msg); static RefreshMatViewStmt * _readRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) msg); static ReplicaIdentityStmt * _readReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) msg); static AlterSystemStmt * _readAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) msg); static CreatePolicyStmt * _readCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) msg); static AlterPolicyStmt * _readAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) msg); static CreateTransformStmt * _readCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) msg); static CreateAmStmt * _readCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) msg); static CreatePublicationStmt * _readCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) msg); static AlterPublicationStmt * _readAlterPublicationStmt(OUT_TYPE(AlterPublicationStmt, AlterPublicationStmt) msg); static CreateSubscriptionStmt * _readCreateSubscriptionStmt(OUT_TYPE(CreateSubscriptionStmt, CreateSubscriptionStmt) msg); static AlterSubscriptionStmt * _readAlterSubscriptionStmt(OUT_TYPE(AlterSubscriptionStmt, AlterSubscriptionStmt) msg); static DropSubscriptionStmt * _readDropSubscriptionStmt(OUT_TYPE(DropSubscriptionStmt, DropSubscriptionStmt) msg); static CreateStatsStmt * _readCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) msg); static AlterCollationStmt * _readAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) msg); static CallStmt * _readCallStmt(OUT_TYPE(CallStmt, CallStmt) msg); static AlterStatsStmt * _readAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) msg); static A_Expr * _readAExpr(OUT_TYPE(A_Expr, AExpr) msg); static ColumnRef * _readColumnRef(OUT_TYPE(ColumnRef, ColumnRef) msg); static ParamRef * _readParamRef(OUT_TYPE(ParamRef, ParamRef) msg); static A_Const * _readAConst(OUT_TYPE(A_Const, AConst) msg); static FuncCall * _readFuncCall(OUT_TYPE(FuncCall, FuncCall) msg); static A_Star * _readAStar(OUT_TYPE(A_Star, AStar) msg); static A_Indices * _readAIndices(OUT_TYPE(A_Indices, AIndices) msg); static A_Indirection * _readAIndirection(OUT_TYPE(A_Indirection, AIndirection) msg); static A_ArrayExpr * _readAArrayExpr(OUT_TYPE(A_ArrayExpr, AArrayExpr) msg); static ResTarget * _readResTarget(OUT_TYPE(ResTarget, ResTarget) msg); static MultiAssignRef * _readMultiAssignRef(OUT_TYPE(MultiAssignRef, MultiAssignRef) msg); static TypeCast * _readTypeCast(OUT_TYPE(TypeCast, TypeCast) msg); static CollateClause * _readCollateClause(OUT_TYPE(CollateClause, CollateClause) msg); static SortBy * _readSortBy(OUT_TYPE(SortBy, SortBy) msg); static WindowDef * _readWindowDef(OUT_TYPE(WindowDef, WindowDef) msg); static RangeSubselect * _readRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) msg); static RangeFunction * _readRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) msg); static RangeTableSample * _readRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) msg); static RangeTableFunc * _readRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) msg); static RangeTableFuncCol * _readRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) msg); static TypeName * _readTypeName(OUT_TYPE(TypeName, TypeName) msg); static ColumnDef * _readColumnDef(OUT_TYPE(ColumnDef, ColumnDef) msg); static IndexElem * _readIndexElem(OUT_TYPE(IndexElem, IndexElem) msg); static Constraint * _readConstraint(OUT_TYPE(Constraint, Constraint) msg); static DefElem * _readDefElem(OUT_TYPE(DefElem, DefElem) msg); static RangeTblEntry * _readRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) msg); static RangeTblFunction * _readRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) msg); static TableSampleClause * _readTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) msg); static WithCheckOption * _readWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) msg); static SortGroupClause * _readSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) msg); static GroupingSet * _readGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) msg); static WindowClause * _readWindowClause(OUT_TYPE(WindowClause, WindowClause) msg); static ObjectWithArgs * _readObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) msg); static AccessPriv * _readAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) msg); static CreateOpClassItem * _readCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) msg); static TableLikeClause * _readTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) msg); static FunctionParameter * _readFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) msg); static LockingClause * _readLockingClause(OUT_TYPE(LockingClause, LockingClause) msg); static RowMarkClause * _readRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) msg); static XmlSerialize * _readXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) msg); static WithClause * _readWithClause(OUT_TYPE(WithClause, WithClause) msg); static InferClause * _readInferClause(OUT_TYPE(InferClause, InferClause) msg); static OnConflictClause * _readOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) msg); static CommonTableExpr * _readCommonTableExpr(OUT_TYPE(CommonTableExpr, CommonTableExpr) msg); static RoleSpec * _readRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) msg); static TriggerTransition * _readTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) msg); static PartitionElem * _readPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) msg); static PartitionSpec * _readPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) msg); static PartitionBoundSpec * _readPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) msg); static PartitionRangeDatum * _readPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) msg); static PartitionCmd * _readPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) msg); static VacuumRelation * _readVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) msg); static InlineCodeBlock * _readInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) msg); static CallContext * _readCallContext(OUT_TYPE(CallContext, CallContext) msg); static Alias * _readAlias(OUT_TYPE(Alias, Alias) msg) { Alias *node = makeNode(Alias); READ_STRING_FIELD(aliasname, aliasname, aliasname); READ_LIST_FIELD(colnames, colnames, colnames); return node; } static RangeVar * _readRangeVar(OUT_TYPE(RangeVar, RangeVar) msg) { RangeVar *node = makeNode(RangeVar); READ_STRING_FIELD(catalogname, catalogname, catalogname); READ_STRING_FIELD(schemaname, schemaname, schemaname); READ_STRING_FIELD(relname, relname, relname); READ_BOOL_FIELD(inh, inh, inh); READ_CHAR_FIELD(relpersistence, relpersistence, relpersistence); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_INT_FIELD(location, location, location); return node; } static TableFunc * _readTableFunc(OUT_TYPE(TableFunc, TableFunc) msg) { TableFunc *node = makeNode(TableFunc); READ_LIST_FIELD(ns_uris, ns_uris, ns_uris); READ_LIST_FIELD(ns_names, ns_names, ns_names); READ_NODE_PTR_FIELD(docexpr, docexpr, docexpr); READ_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); READ_LIST_FIELD(colnames, colnames, colnames); READ_LIST_FIELD(coltypes, coltypes, coltypes); READ_LIST_FIELD(coltypmods, coltypmods, coltypmods); READ_LIST_FIELD(colcollations, colcollations, colcollations); READ_LIST_FIELD(colexprs, colexprs, colexprs); READ_LIST_FIELD(coldefexprs, coldefexprs, coldefexprs); READ_BITMAPSET_FIELD(notnulls, notnulls, notnulls); READ_INT_FIELD(ordinalitycol, ordinalitycol, ordinalitycol); READ_INT_FIELD(location, location, location); return node; } static Expr * _readExpr(OUT_TYPE(Expr, Expr) msg) { Expr *node = makeNode(Expr); return node; } static Var * _readVar(OUT_TYPE(Var, Var) msg) { Var *node = makeNode(Var); READ_UINT_FIELD(varno, varno, varno); READ_INT_FIELD(varattno, varattno, varattno); READ_UINT_FIELD(vartype, vartype, vartype); READ_INT_FIELD(vartypmod, vartypmod, vartypmod); READ_UINT_FIELD(varcollid, varcollid, varcollid); READ_UINT_FIELD(varlevelsup, varlevelsup, varlevelsup); READ_UINT_FIELD(varnosyn, varnosyn, varnosyn); READ_INT_FIELD(varattnosyn, varattnosyn, varattnosyn); READ_INT_FIELD(location, location, location); return node; } static Param * _readParam(OUT_TYPE(Param, Param) msg) { Param *node = makeNode(Param); READ_ENUM_FIELD(ParamKind, paramkind, paramkind, paramkind); READ_INT_FIELD(paramid, paramid, paramid); READ_UINT_FIELD(paramtype, paramtype, paramtype); READ_INT_FIELD(paramtypmod, paramtypmod, paramtypmod); READ_UINT_FIELD(paramcollid, paramcollid, paramcollid); READ_INT_FIELD(location, location, location); return node; } static Aggref * _readAggref(OUT_TYPE(Aggref, Aggref) msg) { Aggref *node = makeNode(Aggref); READ_UINT_FIELD(aggfnoid, aggfnoid, aggfnoid); READ_UINT_FIELD(aggtype, aggtype, aggtype); READ_UINT_FIELD(aggcollid, aggcollid, aggcollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_UINT_FIELD(aggtranstype, aggtranstype, aggtranstype); READ_LIST_FIELD(aggargtypes, aggargtypes, aggargtypes); READ_LIST_FIELD(aggdirectargs, aggdirectargs, aggdirectargs); READ_LIST_FIELD(args, args, args); READ_LIST_FIELD(aggorder, aggorder, aggorder); READ_LIST_FIELD(aggdistinct, aggdistinct, aggdistinct); READ_EXPR_PTR_FIELD(aggfilter, aggfilter, aggfilter); READ_BOOL_FIELD(aggstar, aggstar, aggstar); READ_BOOL_FIELD(aggvariadic, aggvariadic, aggvariadic); READ_CHAR_FIELD(aggkind, aggkind, aggkind); READ_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); READ_ENUM_FIELD(AggSplit, aggsplit, aggsplit, aggsplit); READ_INT_FIELD(location, location, location); return node; } static GroupingFunc * _readGroupingFunc(OUT_TYPE(GroupingFunc, GroupingFunc) msg) { GroupingFunc *node = makeNode(GroupingFunc); READ_LIST_FIELD(args, args, args); READ_LIST_FIELD(refs, refs, refs); READ_LIST_FIELD(cols, cols, cols); READ_UINT_FIELD(agglevelsup, agglevelsup, agglevelsup); READ_INT_FIELD(location, location, location); return node; } static WindowFunc * _readWindowFunc(OUT_TYPE(WindowFunc, WindowFunc) msg) { WindowFunc *node = makeNode(WindowFunc); READ_UINT_FIELD(winfnoid, winfnoid, winfnoid); READ_UINT_FIELD(wintype, wintype, wintype); READ_UINT_FIELD(wincollid, wincollid, wincollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_EXPR_PTR_FIELD(aggfilter, aggfilter, aggfilter); READ_UINT_FIELD(winref, winref, winref); READ_BOOL_FIELD(winstar, winstar, winstar); READ_BOOL_FIELD(winagg, winagg, winagg); READ_INT_FIELD(location, location, location); return node; } static SubscriptingRef * _readSubscriptingRef(OUT_TYPE(SubscriptingRef, SubscriptingRef) msg) { SubscriptingRef *node = makeNode(SubscriptingRef); READ_UINT_FIELD(refcontainertype, refcontainertype, refcontainertype); READ_UINT_FIELD(refelemtype, refelemtype, refelemtype); READ_INT_FIELD(reftypmod, reftypmod, reftypmod); READ_UINT_FIELD(refcollid, refcollid, refcollid); READ_LIST_FIELD(refupperindexpr, refupperindexpr, refupperindexpr); READ_LIST_FIELD(reflowerindexpr, reflowerindexpr, reflowerindexpr); READ_EXPR_PTR_FIELD(refexpr, refexpr, refexpr); READ_EXPR_PTR_FIELD(refassgnexpr, refassgnexpr, refassgnexpr); return node; } static FuncExpr * _readFuncExpr(OUT_TYPE(FuncExpr, FuncExpr) msg) { FuncExpr *node = makeNode(FuncExpr); READ_UINT_FIELD(funcid, funcid, funcid); READ_UINT_FIELD(funcresulttype, funcresulttype, funcresulttype); READ_BOOL_FIELD(funcretset, funcretset, funcretset); READ_BOOL_FIELD(funcvariadic, funcvariadic, funcvariadic); READ_ENUM_FIELD(CoercionForm, funcformat, funcformat, funcformat); READ_UINT_FIELD(funccollid, funccollid, funccollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static NamedArgExpr * _readNamedArgExpr(OUT_TYPE(NamedArgExpr, NamedArgExpr) msg) { NamedArgExpr *node = makeNode(NamedArgExpr); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_STRING_FIELD(name, name, name); READ_INT_FIELD(argnumber, argnumber, argnumber); READ_INT_FIELD(location, location, location); return node; } static OpExpr * _readOpExpr(OUT_TYPE(OpExpr, OpExpr) msg) { OpExpr *node = makeNode(OpExpr); READ_UINT_FIELD(opno, opno, opno); READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); READ_UINT_FIELD(opresulttype, opresulttype, opresulttype); READ_BOOL_FIELD(opretset, opretset, opretset); READ_UINT_FIELD(opcollid, opcollid, opcollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static DistinctExpr * _readDistinctExpr(OUT_TYPE(DistinctExpr, DistinctExpr) msg) { DistinctExpr *node = makeNode(DistinctExpr); READ_UINT_FIELD(opno, opno, opno); READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); READ_UINT_FIELD(opresulttype, opresulttype, opresulttype); READ_BOOL_FIELD(opretset, opretset, opretset); READ_UINT_FIELD(opcollid, opcollid, opcollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static NullIfExpr * _readNullIfExpr(OUT_TYPE(NullIfExpr, NullIfExpr) msg) { NullIfExpr *node = makeNode(NullIfExpr); READ_UINT_FIELD(opno, opno, opno); READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); READ_UINT_FIELD(opresulttype, opresulttype, opresulttype); READ_BOOL_FIELD(opretset, opretset, opretset); READ_UINT_FIELD(opcollid, opcollid, opcollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static ScalarArrayOpExpr * _readScalarArrayOpExpr(OUT_TYPE(ScalarArrayOpExpr, ScalarArrayOpExpr) msg) { ScalarArrayOpExpr *node = makeNode(ScalarArrayOpExpr); READ_UINT_FIELD(opno, opno, opno); READ_UINT_FIELD(opfuncid, opfuncid, opfuncid); READ_BOOL_FIELD(use_or, useOr, useOr); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static BoolExpr * _readBoolExpr(OUT_TYPE(BoolExpr, BoolExpr) msg) { BoolExpr *node = makeNode(BoolExpr); READ_ENUM_FIELD(BoolExprType, boolop, boolop, boolop); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static SubLink * _readSubLink(OUT_TYPE(SubLink, SubLink) msg) { SubLink *node = makeNode(SubLink); READ_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); READ_INT_FIELD(sub_link_id, subLinkId, subLinkId); READ_NODE_PTR_FIELD(testexpr, testexpr, testexpr); READ_LIST_FIELD(oper_name, operName, operName); READ_NODE_PTR_FIELD(subselect, subselect, subselect); READ_INT_FIELD(location, location, location); return node; } static SubPlan * _readSubPlan(OUT_TYPE(SubPlan, SubPlan) msg) { SubPlan *node = makeNode(SubPlan); READ_ENUM_FIELD(SubLinkType, sub_link_type, subLinkType, subLinkType); READ_NODE_PTR_FIELD(testexpr, testexpr, testexpr); READ_LIST_FIELD(param_ids, paramIds, paramIds); READ_INT_FIELD(plan_id, plan_id, plan_id); READ_STRING_FIELD(plan_name, plan_name, plan_name); READ_UINT_FIELD(first_col_type, firstColType, firstColType); READ_INT_FIELD(first_col_typmod, firstColTypmod, firstColTypmod); READ_UINT_FIELD(first_col_collation, firstColCollation, firstColCollation); READ_BOOL_FIELD(use_hash_table, useHashTable, useHashTable); READ_BOOL_FIELD(unknown_eq_false, unknownEqFalse, unknownEqFalse); READ_BOOL_FIELD(parallel_safe, parallel_safe, parallel_safe); READ_LIST_FIELD(set_param, setParam, setParam); READ_LIST_FIELD(par_param, parParam, parParam); READ_LIST_FIELD(args, args, args); READ_FLOAT_FIELD(startup_cost, startup_cost, startup_cost); READ_FLOAT_FIELD(per_call_cost, per_call_cost, per_call_cost); return node; } static AlternativeSubPlan * _readAlternativeSubPlan(OUT_TYPE(AlternativeSubPlan, AlternativeSubPlan) msg) { AlternativeSubPlan *node = makeNode(AlternativeSubPlan); READ_LIST_FIELD(subplans, subplans, subplans); return node; } static FieldSelect * _readFieldSelect(OUT_TYPE(FieldSelect, FieldSelect) msg) { FieldSelect *node = makeNode(FieldSelect); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_INT_FIELD(fieldnum, fieldnum, fieldnum); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); return node; } static FieldStore * _readFieldStore(OUT_TYPE(FieldStore, FieldStore) msg) { FieldStore *node = makeNode(FieldStore); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_LIST_FIELD(newvals, newvals, newvals); READ_LIST_FIELD(fieldnums, fieldnums, fieldnums); READ_UINT_FIELD(resulttype, resulttype, resulttype); return node; } static RelabelType * _readRelabelType(OUT_TYPE(RelabelType, RelabelType) msg) { RelabelType *node = makeNode(RelabelType); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); READ_ENUM_FIELD(CoercionForm, relabelformat, relabelformat, relabelformat); READ_INT_FIELD(location, location, location); return node; } static CoerceViaIO * _readCoerceViaIO(OUT_TYPE(CoerceViaIO, CoerceViaIO) msg) { CoerceViaIO *node = makeNode(CoerceViaIO); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); READ_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); READ_INT_FIELD(location, location, location); return node; } static ArrayCoerceExpr * _readArrayCoerceExpr(OUT_TYPE(ArrayCoerceExpr, ArrayCoerceExpr) msg) { ArrayCoerceExpr *node = makeNode(ArrayCoerceExpr); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_EXPR_PTR_FIELD(elemexpr, elemexpr, elemexpr); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); READ_ENUM_FIELD(CoercionForm, coerceformat, coerceformat, coerceformat); READ_INT_FIELD(location, location, location); return node; } static ConvertRowtypeExpr * _readConvertRowtypeExpr(OUT_TYPE(ConvertRowtypeExpr, ConvertRowtypeExpr) msg) { ConvertRowtypeExpr *node = makeNode(ConvertRowtypeExpr); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_ENUM_FIELD(CoercionForm, convertformat, convertformat, convertformat); READ_INT_FIELD(location, location, location); return node; } static CollateExpr * _readCollateExpr(OUT_TYPE(CollateExpr, CollateExpr) msg) { CollateExpr *node = makeNode(CollateExpr); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_UINT_FIELD(coll_oid, collOid, collOid); READ_INT_FIELD(location, location, location); return node; } static CaseExpr * _readCaseExpr(OUT_TYPE(CaseExpr, CaseExpr) msg) { CaseExpr *node = makeNode(CaseExpr); READ_UINT_FIELD(casetype, casetype, casetype); READ_UINT_FIELD(casecollid, casecollid, casecollid); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_LIST_FIELD(args, args, args); READ_EXPR_PTR_FIELD(defresult, defresult, defresult); READ_INT_FIELD(location, location, location); return node; } static CaseWhen * _readCaseWhen(OUT_TYPE(CaseWhen, CaseWhen) msg) { CaseWhen *node = makeNode(CaseWhen); READ_EXPR_PTR_FIELD(expr, expr, expr); READ_EXPR_PTR_FIELD(result, result, result); READ_INT_FIELD(location, location, location); return node; } static CaseTestExpr * _readCaseTestExpr(OUT_TYPE(CaseTestExpr, CaseTestExpr) msg) { CaseTestExpr *node = makeNode(CaseTestExpr); READ_UINT_FIELD(type_id, typeId, typeId); READ_INT_FIELD(type_mod, typeMod, typeMod); READ_UINT_FIELD(collation, collation, collation); return node; } static ArrayExpr * _readArrayExpr(OUT_TYPE(ArrayExpr, ArrayExpr) msg) { ArrayExpr *node = makeNode(ArrayExpr); READ_UINT_FIELD(array_typeid, array_typeid, array_typeid); READ_UINT_FIELD(array_collid, array_collid, array_collid); READ_UINT_FIELD(element_typeid, element_typeid, element_typeid); READ_LIST_FIELD(elements, elements, elements); READ_BOOL_FIELD(multidims, multidims, multidims); READ_INT_FIELD(location, location, location); return node; } static RowExpr * _readRowExpr(OUT_TYPE(RowExpr, RowExpr) msg) { RowExpr *node = makeNode(RowExpr); READ_LIST_FIELD(args, args, args); READ_UINT_FIELD(row_typeid, row_typeid, row_typeid); READ_ENUM_FIELD(CoercionForm, row_format, row_format, row_format); READ_LIST_FIELD(colnames, colnames, colnames); READ_INT_FIELD(location, location, location); return node; } static RowCompareExpr * _readRowCompareExpr(OUT_TYPE(RowCompareExpr, RowCompareExpr) msg) { RowCompareExpr *node = makeNode(RowCompareExpr); READ_ENUM_FIELD(RowCompareType, rctype, rctype, rctype); READ_LIST_FIELD(opnos, opnos, opnos); READ_LIST_FIELD(opfamilies, opfamilies, opfamilies); READ_LIST_FIELD(inputcollids, inputcollids, inputcollids); READ_LIST_FIELD(largs, largs, largs); READ_LIST_FIELD(rargs, rargs, rargs); return node; } static CoalesceExpr * _readCoalesceExpr(OUT_TYPE(CoalesceExpr, CoalesceExpr) msg) { CoalesceExpr *node = makeNode(CoalesceExpr); READ_UINT_FIELD(coalescetype, coalescetype, coalescetype); READ_UINT_FIELD(coalescecollid, coalescecollid, coalescecollid); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static MinMaxExpr * _readMinMaxExpr(OUT_TYPE(MinMaxExpr, MinMaxExpr) msg) { MinMaxExpr *node = makeNode(MinMaxExpr); READ_UINT_FIELD(minmaxtype, minmaxtype, minmaxtype); READ_UINT_FIELD(minmaxcollid, minmaxcollid, minmaxcollid); READ_UINT_FIELD(inputcollid, inputcollid, inputcollid); READ_ENUM_FIELD(MinMaxOp, op, op, op); READ_LIST_FIELD(args, args, args); READ_INT_FIELD(location, location, location); return node; } static SQLValueFunction * _readSQLValueFunction(OUT_TYPE(SQLValueFunction, SQLValueFunction) msg) { SQLValueFunction *node = makeNode(SQLValueFunction); READ_ENUM_FIELD(SQLValueFunctionOp, op, op, op); READ_UINT_FIELD(type, type, type); READ_INT_FIELD(typmod, typmod, typmod); READ_INT_FIELD(location, location, location); return node; } static XmlExpr * _readXmlExpr(OUT_TYPE(XmlExpr, XmlExpr) msg) { XmlExpr *node = makeNode(XmlExpr); READ_ENUM_FIELD(XmlExprOp, op, op, op); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(named_args, named_args, named_args); READ_LIST_FIELD(arg_names, arg_names, arg_names); READ_LIST_FIELD(args, args, args); READ_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); READ_UINT_FIELD(type, type, type); READ_INT_FIELD(typmod, typmod, typmod); READ_INT_FIELD(location, location, location); return node; } static NullTest * _readNullTest(OUT_TYPE(NullTest, NullTest) msg) { NullTest *node = makeNode(NullTest); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_ENUM_FIELD(NullTestType, nulltesttype, nulltesttype, nulltesttype); READ_BOOL_FIELD(argisrow, argisrow, argisrow); READ_INT_FIELD(location, location, location); return node; } static BooleanTest * _readBooleanTest(OUT_TYPE(BooleanTest, BooleanTest) msg) { BooleanTest *node = makeNode(BooleanTest); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_ENUM_FIELD(BoolTestType, booltesttype, booltesttype, booltesttype); READ_INT_FIELD(location, location, location); return node; } static CoerceToDomain * _readCoerceToDomain(OUT_TYPE(CoerceToDomain, CoerceToDomain) msg) { CoerceToDomain *node = makeNode(CoerceToDomain); READ_EXPR_PTR_FIELD(arg, arg, arg); READ_UINT_FIELD(resulttype, resulttype, resulttype); READ_INT_FIELD(resulttypmod, resulttypmod, resulttypmod); READ_UINT_FIELD(resultcollid, resultcollid, resultcollid); READ_ENUM_FIELD(CoercionForm, coercionformat, coercionformat, coercionformat); READ_INT_FIELD(location, location, location); return node; } static CoerceToDomainValue * _readCoerceToDomainValue(OUT_TYPE(CoerceToDomainValue, CoerceToDomainValue) msg) { CoerceToDomainValue *node = makeNode(CoerceToDomainValue); READ_UINT_FIELD(type_id, typeId, typeId); READ_INT_FIELD(type_mod, typeMod, typeMod); READ_UINT_FIELD(collation, collation, collation); READ_INT_FIELD(location, location, location); return node; } static SetToDefault * _readSetToDefault(OUT_TYPE(SetToDefault, SetToDefault) msg) { SetToDefault *node = makeNode(SetToDefault); READ_UINT_FIELD(type_id, typeId, typeId); READ_INT_FIELD(type_mod, typeMod, typeMod); READ_UINT_FIELD(collation, collation, collation); READ_INT_FIELD(location, location, location); return node; } static CurrentOfExpr * _readCurrentOfExpr(OUT_TYPE(CurrentOfExpr, CurrentOfExpr) msg) { CurrentOfExpr *node = makeNode(CurrentOfExpr); READ_UINT_FIELD(cvarno, cvarno, cvarno); READ_STRING_FIELD(cursor_name, cursor_name, cursor_name); READ_INT_FIELD(cursor_param, cursor_param, cursor_param); return node; } static NextValueExpr * _readNextValueExpr(OUT_TYPE(NextValueExpr, NextValueExpr) msg) { NextValueExpr *node = makeNode(NextValueExpr); READ_UINT_FIELD(seqid, seqid, seqid); READ_UINT_FIELD(type_id, typeId, typeId); return node; } static InferenceElem * _readInferenceElem(OUT_TYPE(InferenceElem, InferenceElem) msg) { InferenceElem *node = makeNode(InferenceElem); READ_NODE_PTR_FIELD(expr, expr, expr); READ_UINT_FIELD(infercollid, infercollid, infercollid); READ_UINT_FIELD(inferopclass, inferopclass, inferopclass); return node; } static TargetEntry * _readTargetEntry(OUT_TYPE(TargetEntry, TargetEntry) msg) { TargetEntry *node = makeNode(TargetEntry); READ_EXPR_PTR_FIELD(expr, expr, expr); READ_INT_FIELD(resno, resno, resno); READ_STRING_FIELD(resname, resname, resname); READ_UINT_FIELD(ressortgroupref, ressortgroupref, ressortgroupref); READ_UINT_FIELD(resorigtbl, resorigtbl, resorigtbl); READ_INT_FIELD(resorigcol, resorigcol, resorigcol); READ_BOOL_FIELD(resjunk, resjunk, resjunk); return node; } static RangeTblRef * _readRangeTblRef(OUT_TYPE(RangeTblRef, RangeTblRef) msg) { RangeTblRef *node = makeNode(RangeTblRef); READ_INT_FIELD(rtindex, rtindex, rtindex); return node; } static JoinExpr * _readJoinExpr(OUT_TYPE(JoinExpr, JoinExpr) msg) { JoinExpr *node = makeNode(JoinExpr); READ_ENUM_FIELD(JoinType, jointype, jointype, jointype); READ_BOOL_FIELD(is_natural, isNatural, isNatural); READ_NODE_PTR_FIELD(larg, larg, larg); READ_NODE_PTR_FIELD(rarg, rarg, rarg); READ_LIST_FIELD(using_clause, usingClause, usingClause); READ_NODE_PTR_FIELD(quals, quals, quals); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_INT_FIELD(rtindex, rtindex, rtindex); return node; } static FromExpr * _readFromExpr(OUT_TYPE(FromExpr, FromExpr) msg) { FromExpr *node = makeNode(FromExpr); READ_LIST_FIELD(fromlist, fromlist, fromlist); READ_NODE_PTR_FIELD(quals, quals, quals); return node; } static OnConflictExpr * _readOnConflictExpr(OUT_TYPE(OnConflictExpr, OnConflictExpr) msg) { OnConflictExpr *node = makeNode(OnConflictExpr); READ_ENUM_FIELD(OnConflictAction, action, action, action); READ_LIST_FIELD(arbiter_elems, arbiterElems, arbiterElems); READ_NODE_PTR_FIELD(arbiter_where, arbiterWhere, arbiterWhere); READ_UINT_FIELD(constraint, constraint, constraint); READ_LIST_FIELD(on_conflict_set, onConflictSet, onConflictSet); READ_NODE_PTR_FIELD(on_conflict_where, onConflictWhere, onConflictWhere); READ_INT_FIELD(excl_rel_index, exclRelIndex, exclRelIndex); READ_LIST_FIELD(excl_rel_tlist, exclRelTlist, exclRelTlist); return node; } static IntoClause * _readIntoClause(OUT_TYPE(IntoClause, IntoClause) msg) { IntoClause *node = makeNode(IntoClause); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, rel, rel, rel); READ_LIST_FIELD(col_names, colNames, colNames); READ_STRING_FIELD(access_method, accessMethod, accessMethod); READ_LIST_FIELD(options, options, options); READ_ENUM_FIELD(OnCommitAction, on_commit, onCommit, onCommit); READ_STRING_FIELD(table_space_name, tableSpaceName, tableSpaceName); READ_NODE_PTR_FIELD(view_query, viewQuery, viewQuery); READ_BOOL_FIELD(skip_data, skipData, skipData); return node; } static RawStmt * _readRawStmt(OUT_TYPE(RawStmt, RawStmt) msg) { RawStmt *node = makeNode(RawStmt); READ_NODE_PTR_FIELD(stmt, stmt, stmt); READ_INT_FIELD(stmt_location, stmt_location, stmt_location); READ_INT_FIELD(stmt_len, stmt_len, stmt_len); return node; } static Query * _readQuery(OUT_TYPE(Query, Query) msg) { Query *node = makeNode(Query); READ_ENUM_FIELD(CmdType, command_type, commandType, commandType); READ_ENUM_FIELD(QuerySource, query_source, querySource, querySource); READ_BOOL_FIELD(can_set_tag, canSetTag, canSetTag); READ_NODE_PTR_FIELD(utility_stmt, utilityStmt, utilityStmt); READ_INT_FIELD(result_relation, resultRelation, resultRelation); READ_BOOL_FIELD(has_aggs, hasAggs, hasAggs); READ_BOOL_FIELD(has_window_funcs, hasWindowFuncs, hasWindowFuncs); READ_BOOL_FIELD(has_target_srfs, hasTargetSRFs, hasTargetSRFs); READ_BOOL_FIELD(has_sub_links, hasSubLinks, hasSubLinks); READ_BOOL_FIELD(has_distinct_on, hasDistinctOn, hasDistinctOn); READ_BOOL_FIELD(has_recursive, hasRecursive, hasRecursive); READ_BOOL_FIELD(has_modifying_cte, hasModifyingCTE, hasModifyingCTE); READ_BOOL_FIELD(has_for_update, hasForUpdate, hasForUpdate); READ_BOOL_FIELD(has_row_security, hasRowSecurity, hasRowSecurity); READ_LIST_FIELD(cte_list, cteList, cteList); READ_LIST_FIELD(rtable, rtable, rtable); READ_SPECIFIC_NODE_PTR_FIELD(FromExpr, from_expr, jointree, jointree, jointree); READ_LIST_FIELD(target_list, targetList, targetList); READ_ENUM_FIELD(OverridingKind, override, override, override); READ_SPECIFIC_NODE_PTR_FIELD(OnConflictExpr, on_conflict_expr, on_conflict, onConflict, onConflict); READ_LIST_FIELD(returning_list, returningList, returningList); READ_LIST_FIELD(group_clause, groupClause, groupClause); READ_LIST_FIELD(grouping_sets, groupingSets, groupingSets); READ_NODE_PTR_FIELD(having_qual, havingQual, havingQual); READ_LIST_FIELD(window_clause, windowClause, windowClause); READ_LIST_FIELD(distinct_clause, distinctClause, distinctClause); READ_LIST_FIELD(sort_clause, sortClause, sortClause); READ_NODE_PTR_FIELD(limit_offset, limitOffset, limitOffset); READ_NODE_PTR_FIELD(limit_count, limitCount, limitCount); READ_ENUM_FIELD(LimitOption, limit_option, limitOption, limitOption); READ_LIST_FIELD(row_marks, rowMarks, rowMarks); READ_NODE_PTR_FIELD(set_operations, setOperations, setOperations); READ_LIST_FIELD(constraint_deps, constraintDeps, constraintDeps); READ_LIST_FIELD(with_check_options, withCheckOptions, withCheckOptions); READ_INT_FIELD(stmt_location, stmt_location, stmt_location); READ_INT_FIELD(stmt_len, stmt_len, stmt_len); return node; } static InsertStmt * _readInsertStmt(OUT_TYPE(InsertStmt, InsertStmt) msg) { InsertStmt *node = makeNode(InsertStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_LIST_FIELD(cols, cols, cols); READ_NODE_PTR_FIELD(select_stmt, selectStmt, selectStmt); READ_SPECIFIC_NODE_PTR_FIELD(OnConflictClause, on_conflict_clause, on_conflict_clause, onConflictClause, onConflictClause); READ_LIST_FIELD(returning_list, returningList, returningList); READ_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); READ_ENUM_FIELD(OverridingKind, override, override, override); return node; } static DeleteStmt * _readDeleteStmt(OUT_TYPE(DeleteStmt, DeleteStmt) msg) { DeleteStmt *node = makeNode(DeleteStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_LIST_FIELD(using_clause, usingClause, usingClause); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_LIST_FIELD(returning_list, returningList, returningList); READ_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); return node; } static UpdateStmt * _readUpdateStmt(OUT_TYPE(UpdateStmt, UpdateStmt) msg) { UpdateStmt *node = makeNode(UpdateStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_LIST_FIELD(target_list, targetList, targetList); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_LIST_FIELD(from_clause, fromClause, fromClause); READ_LIST_FIELD(returning_list, returningList, returningList); READ_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); return node; } static SelectStmt * _readSelectStmt(OUT_TYPE(SelectStmt, SelectStmt) msg) { SelectStmt *node = makeNode(SelectStmt); READ_LIST_FIELD(distinct_clause, distinctClause, distinctClause); READ_SPECIFIC_NODE_PTR_FIELD(IntoClause, into_clause, into_clause, intoClause, intoClause); READ_LIST_FIELD(target_list, targetList, targetList); READ_LIST_FIELD(from_clause, fromClause, fromClause); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_LIST_FIELD(group_clause, groupClause, groupClause); READ_NODE_PTR_FIELD(having_clause, havingClause, havingClause); READ_LIST_FIELD(window_clause, windowClause, windowClause); READ_LIST_FIELD(values_lists, valuesLists, valuesLists); READ_LIST_FIELD(sort_clause, sortClause, sortClause); READ_NODE_PTR_FIELD(limit_offset, limitOffset, limitOffset); READ_NODE_PTR_FIELD(limit_count, limitCount, limitCount); READ_ENUM_FIELD(LimitOption, limit_option, limitOption, limitOption); READ_LIST_FIELD(locking_clause, lockingClause, lockingClause); READ_SPECIFIC_NODE_PTR_FIELD(WithClause, with_clause, with_clause, withClause, withClause); READ_ENUM_FIELD(SetOperation, op, op, op); READ_BOOL_FIELD(all, all, all); READ_SPECIFIC_NODE_PTR_FIELD(SelectStmt, select_stmt, larg, larg, larg); READ_SPECIFIC_NODE_PTR_FIELD(SelectStmt, select_stmt, rarg, rarg, rarg); return node; } static AlterTableStmt * _readAlterTableStmt(OUT_TYPE(AlterTableStmt, AlterTableStmt) msg) { AlterTableStmt *node = makeNode(AlterTableStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_LIST_FIELD(cmds, cmds, cmds); READ_ENUM_FIELD(ObjectType, relkind, relkind, relkind); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static AlterTableCmd * _readAlterTableCmd(OUT_TYPE(AlterTableCmd, AlterTableCmd) msg) { AlterTableCmd *node = makeNode(AlterTableCmd); READ_ENUM_FIELD(AlterTableType, subtype, subtype, subtype); READ_STRING_FIELD(name, name, name); READ_INT_FIELD(num, num, num); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newowner, newowner, newowner); READ_NODE_PTR_FIELD(def, def, def); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static AlterDomainStmt * _readAlterDomainStmt(OUT_TYPE(AlterDomainStmt, AlterDomainStmt) msg) { AlterDomainStmt *node = makeNode(AlterDomainStmt); READ_CHAR_FIELD(subtype, subtype, subtype); READ_LIST_FIELD(type_name, typeName, typeName); READ_STRING_FIELD(name, name, name); READ_NODE_PTR_FIELD(def, def, def); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static SetOperationStmt * _readSetOperationStmt(OUT_TYPE(SetOperationStmt, SetOperationStmt) msg) { SetOperationStmt *node = makeNode(SetOperationStmt); READ_ENUM_FIELD(SetOperation, op, op, op); READ_BOOL_FIELD(all, all, all); READ_NODE_PTR_FIELD(larg, larg, larg); READ_NODE_PTR_FIELD(rarg, rarg, rarg); READ_LIST_FIELD(col_types, colTypes, colTypes); READ_LIST_FIELD(col_typmods, colTypmods, colTypmods); READ_LIST_FIELD(col_collations, colCollations, colCollations); READ_LIST_FIELD(group_clauses, groupClauses, groupClauses); return node; } static GrantStmt * _readGrantStmt(OUT_TYPE(GrantStmt, GrantStmt) msg) { GrantStmt *node = makeNode(GrantStmt); READ_BOOL_FIELD(is_grant, is_grant, is_grant); READ_ENUM_FIELD(GrantTargetType, targtype, targtype, targtype); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_LIST_FIELD(objects, objects, objects); READ_LIST_FIELD(privileges, privileges, privileges); READ_LIST_FIELD(grantees, grantees, grantees); READ_BOOL_FIELD(grant_option, grant_option, grant_option); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); return node; } static GrantRoleStmt * _readGrantRoleStmt(OUT_TYPE(GrantRoleStmt, GrantRoleStmt) msg) { GrantRoleStmt *node = makeNode(GrantRoleStmt); READ_LIST_FIELD(granted_roles, granted_roles, granted_roles); READ_LIST_FIELD(grantee_roles, grantee_roles, grantee_roles); READ_BOOL_FIELD(is_grant, is_grant, is_grant); READ_BOOL_FIELD(admin_opt, admin_opt, admin_opt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, grantor, grantor, grantor); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); return node; } static AlterDefaultPrivilegesStmt * _readAlterDefaultPrivilegesStmt(OUT_TYPE(AlterDefaultPrivilegesStmt, AlterDefaultPrivilegesStmt) msg) { AlterDefaultPrivilegesStmt *node = makeNode(AlterDefaultPrivilegesStmt); READ_LIST_FIELD(options, options, options); READ_SPECIFIC_NODE_PTR_FIELD(GrantStmt, grant_stmt, action, action, action); return node; } static ClosePortalStmt * _readClosePortalStmt(OUT_TYPE(ClosePortalStmt, ClosePortalStmt) msg) { ClosePortalStmt *node = makeNode(ClosePortalStmt); READ_STRING_FIELD(portalname, portalname, portalname); return node; } static ClusterStmt * _readClusterStmt(OUT_TYPE(ClusterStmt, ClusterStmt) msg) { ClusterStmt *node = makeNode(ClusterStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_STRING_FIELD(indexname, indexname, indexname); READ_INT_FIELD(options, options, options); return node; } static CopyStmt * _readCopyStmt(OUT_TYPE(CopyStmt, CopyStmt) msg) { CopyStmt *node = makeNode(CopyStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_NODE_PTR_FIELD(query, query, query); READ_LIST_FIELD(attlist, attlist, attlist); READ_BOOL_FIELD(is_from, is_from, is_from); READ_BOOL_FIELD(is_program, is_program, is_program); READ_STRING_FIELD(filename, filename, filename); READ_LIST_FIELD(options, options, options); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); return node; } static CreateStmt * _readCreateStmt(OUT_TYPE(CreateStmt, CreateStmt) msg) { CreateStmt *node = makeNode(CreateStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_LIST_FIELD(table_elts, tableElts, tableElts); READ_LIST_FIELD(inh_relations, inhRelations, inhRelations); READ_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, partbound, partbound, partbound); READ_SPECIFIC_NODE_PTR_FIELD(PartitionSpec, partition_spec, partspec, partspec, partspec); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, of_typename, ofTypename, ofTypename); READ_LIST_FIELD(constraints, constraints, constraints); READ_LIST_FIELD(options, options, options); READ_ENUM_FIELD(OnCommitAction, oncommit, oncommit, oncommit); READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); READ_STRING_FIELD(access_method, accessMethod, accessMethod); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); return node; } static DefineStmt * _readDefineStmt(OUT_TYPE(DefineStmt, DefineStmt) msg) { DefineStmt *node = makeNode(DefineStmt); READ_ENUM_FIELD(ObjectType, kind, kind, kind); READ_BOOL_FIELD(oldstyle, oldstyle, oldstyle); READ_LIST_FIELD(defnames, defnames, defnames); READ_LIST_FIELD(args, args, args); READ_LIST_FIELD(definition, definition, definition); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); READ_BOOL_FIELD(replace, replace, replace); return node; } static DropStmt * _readDropStmt(OUT_TYPE(DropStmt, DropStmt) msg) { DropStmt *node = makeNode(DropStmt); READ_LIST_FIELD(objects, objects, objects); READ_ENUM_FIELD(ObjectType, remove_type, removeType, removeType); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); READ_BOOL_FIELD(concurrent, concurrent, concurrent); return node; } static TruncateStmt * _readTruncateStmt(OUT_TYPE(TruncateStmt, TruncateStmt) msg) { TruncateStmt *node = makeNode(TruncateStmt); READ_LIST_FIELD(relations, relations, relations); READ_BOOL_FIELD(restart_seqs, restart_seqs, restart_seqs); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); return node; } static CommentStmt * _readCommentStmt(OUT_TYPE(CommentStmt, CommentStmt) msg) { CommentStmt *node = makeNode(CommentStmt); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_NODE_PTR_FIELD(object, object, object); READ_STRING_FIELD(comment, comment, comment); return node; } static FetchStmt * _readFetchStmt(OUT_TYPE(FetchStmt, FetchStmt) msg) { FetchStmt *node = makeNode(FetchStmt); READ_ENUM_FIELD(FetchDirection, direction, direction, direction); READ_LONG_FIELD(how_many, howMany, howMany); READ_STRING_FIELD(portalname, portalname, portalname); READ_BOOL_FIELD(ismove, ismove, ismove); return node; } static IndexStmt * _readIndexStmt(OUT_TYPE(IndexStmt, IndexStmt) msg) { IndexStmt *node = makeNode(IndexStmt); READ_STRING_FIELD(idxname, idxname, idxname); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_STRING_FIELD(access_method, accessMethod, accessMethod); READ_STRING_FIELD(table_space, tableSpace, tableSpace); READ_LIST_FIELD(index_params, indexParams, indexParams); READ_LIST_FIELD(index_including_params, indexIncludingParams, indexIncludingParams); READ_LIST_FIELD(options, options, options); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_LIST_FIELD(exclude_op_names, excludeOpNames, excludeOpNames); READ_STRING_FIELD(idxcomment, idxcomment, idxcomment); READ_UINT_FIELD(index_oid, indexOid, indexOid); READ_UINT_FIELD(old_node, oldNode, oldNode); READ_UINT_FIELD(old_create_subid, oldCreateSubid, oldCreateSubid); READ_UINT_FIELD(old_first_relfilenode_subid, oldFirstRelfilenodeSubid, oldFirstRelfilenodeSubid); READ_BOOL_FIELD(unique, unique, unique); READ_BOOL_FIELD(primary, primary, primary); READ_BOOL_FIELD(isconstraint, isconstraint, isconstraint); READ_BOOL_FIELD(deferrable, deferrable, deferrable); READ_BOOL_FIELD(initdeferred, initdeferred, initdeferred); READ_BOOL_FIELD(transformed, transformed, transformed); READ_BOOL_FIELD(concurrent, concurrent, concurrent); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); READ_BOOL_FIELD(reset_default_tblspc, reset_default_tblspc, reset_default_tblspc); return node; } static CreateFunctionStmt * _readCreateFunctionStmt(OUT_TYPE(CreateFunctionStmt, CreateFunctionStmt) msg) { CreateFunctionStmt *node = makeNode(CreateFunctionStmt); READ_BOOL_FIELD(is_procedure, is_procedure, is_procedure); READ_BOOL_FIELD(replace, replace, replace); READ_LIST_FIELD(funcname, funcname, funcname); READ_LIST_FIELD(parameters, parameters, parameters); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, return_type, returnType, returnType); READ_LIST_FIELD(options, options, options); return node; } static AlterFunctionStmt * _readAlterFunctionStmt(OUT_TYPE(AlterFunctionStmt, AlterFunctionStmt) msg) { AlterFunctionStmt *node = makeNode(AlterFunctionStmt); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); READ_LIST_FIELD(actions, actions, actions); return node; } static DoStmt * _readDoStmt(OUT_TYPE(DoStmt, DoStmt) msg) { DoStmt *node = makeNode(DoStmt); READ_LIST_FIELD(args, args, args); return node; } static RenameStmt * _readRenameStmt(OUT_TYPE(RenameStmt, RenameStmt) msg) { RenameStmt *node = makeNode(RenameStmt); READ_ENUM_FIELD(ObjectType, rename_type, renameType, renameType); READ_ENUM_FIELD(ObjectType, relation_type, relationType, relationType); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_NODE_PTR_FIELD(object, object, object); READ_STRING_FIELD(subname, subname, subname); READ_STRING_FIELD(newname, newname, newname); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static RuleStmt * _readRuleStmt(OUT_TYPE(RuleStmt, RuleStmt) msg) { RuleStmt *node = makeNode(RuleStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_STRING_FIELD(rulename, rulename, rulename); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_ENUM_FIELD(CmdType, event, event, event); READ_BOOL_FIELD(instead, instead, instead); READ_LIST_FIELD(actions, actions, actions); READ_BOOL_FIELD(replace, replace, replace); return node; } static NotifyStmt * _readNotifyStmt(OUT_TYPE(NotifyStmt, NotifyStmt) msg) { NotifyStmt *node = makeNode(NotifyStmt); READ_STRING_FIELD(conditionname, conditionname, conditionname); READ_STRING_FIELD(payload, payload, payload); return node; } static ListenStmt * _readListenStmt(OUT_TYPE(ListenStmt, ListenStmt) msg) { ListenStmt *node = makeNode(ListenStmt); READ_STRING_FIELD(conditionname, conditionname, conditionname); return node; } static UnlistenStmt * _readUnlistenStmt(OUT_TYPE(UnlistenStmt, UnlistenStmt) msg) { UnlistenStmt *node = makeNode(UnlistenStmt); READ_STRING_FIELD(conditionname, conditionname, conditionname); return node; } static TransactionStmt * _readTransactionStmt(OUT_TYPE(TransactionStmt, TransactionStmt) msg) { TransactionStmt *node = makeNode(TransactionStmt); READ_ENUM_FIELD(TransactionStmtKind, kind, kind, kind); READ_LIST_FIELD(options, options, options); READ_STRING_FIELD(savepoint_name, savepoint_name, savepoint_name); READ_STRING_FIELD(gid, gid, gid); READ_BOOL_FIELD(chain, chain, chain); return node; } static ViewStmt * _readViewStmt(OUT_TYPE(ViewStmt, ViewStmt) msg) { ViewStmt *node = makeNode(ViewStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, view, view, view); READ_LIST_FIELD(aliases, aliases, aliases); READ_NODE_PTR_FIELD(query, query, query); READ_BOOL_FIELD(replace, replace, replace); READ_LIST_FIELD(options, options, options); READ_ENUM_FIELD(ViewCheckOption, with_check_option, withCheckOption, withCheckOption); return node; } static LoadStmt * _readLoadStmt(OUT_TYPE(LoadStmt, LoadStmt) msg) { LoadStmt *node = makeNode(LoadStmt); READ_STRING_FIELD(filename, filename, filename); return node; } static CreateDomainStmt * _readCreateDomainStmt(OUT_TYPE(CreateDomainStmt, CreateDomainStmt) msg) { CreateDomainStmt *node = makeNode(CreateDomainStmt); READ_LIST_FIELD(domainname, domainname, domainname); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); READ_LIST_FIELD(constraints, constraints, constraints); return node; } static CreatedbStmt * _readCreatedbStmt(OUT_TYPE(CreatedbStmt, CreatedbStmt) msg) { CreatedbStmt *node = makeNode(CreatedbStmt); READ_STRING_FIELD(dbname, dbname, dbname); READ_LIST_FIELD(options, options, options); return node; } static DropdbStmt * _readDropdbStmt(OUT_TYPE(DropdbStmt, DropdbStmt) msg) { DropdbStmt *node = makeNode(DropdbStmt); READ_STRING_FIELD(dbname, dbname, dbname); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); READ_LIST_FIELD(options, options, options); return node; } static VacuumStmt * _readVacuumStmt(OUT_TYPE(VacuumStmt, VacuumStmt) msg) { VacuumStmt *node = makeNode(VacuumStmt); READ_LIST_FIELD(options, options, options); READ_LIST_FIELD(rels, rels, rels); READ_BOOL_FIELD(is_vacuumcmd, is_vacuumcmd, is_vacuumcmd); return node; } static ExplainStmt * _readExplainStmt(OUT_TYPE(ExplainStmt, ExplainStmt) msg) { ExplainStmt *node = makeNode(ExplainStmt); READ_NODE_PTR_FIELD(query, query, query); READ_LIST_FIELD(options, options, options); return node; } static CreateTableAsStmt * _readCreateTableAsStmt(OUT_TYPE(CreateTableAsStmt, CreateTableAsStmt) msg) { CreateTableAsStmt *node = makeNode(CreateTableAsStmt); READ_NODE_PTR_FIELD(query, query, query); READ_SPECIFIC_NODE_PTR_FIELD(IntoClause, into_clause, into, into, into); READ_ENUM_FIELD(ObjectType, relkind, relkind, relkind); READ_BOOL_FIELD(is_select_into, is_select_into, is_select_into); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); return node; } static CreateSeqStmt * _readCreateSeqStmt(OUT_TYPE(CreateSeqStmt, CreateSeqStmt) msg) { CreateSeqStmt *node = makeNode(CreateSeqStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); READ_LIST_FIELD(options, options, options); READ_UINT_FIELD(owner_id, ownerId, ownerId); READ_BOOL_FIELD(for_identity, for_identity, for_identity); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); return node; } static AlterSeqStmt * _readAlterSeqStmt(OUT_TYPE(AlterSeqStmt, AlterSeqStmt) msg) { AlterSeqStmt *node = makeNode(AlterSeqStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, sequence, sequence, sequence); READ_LIST_FIELD(options, options, options); READ_BOOL_FIELD(for_identity, for_identity, for_identity); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static VariableSetStmt * _readVariableSetStmt(OUT_TYPE(VariableSetStmt, VariableSetStmt) msg) { VariableSetStmt *node = makeNode(VariableSetStmt); READ_ENUM_FIELD(VariableSetKind, kind, kind, kind); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(args, args, args); READ_BOOL_FIELD(is_local, is_local, is_local); return node; } static VariableShowStmt * _readVariableShowStmt(OUT_TYPE(VariableShowStmt, VariableShowStmt) msg) { VariableShowStmt *node = makeNode(VariableShowStmt); READ_STRING_FIELD(name, name, name); return node; } static DiscardStmt * _readDiscardStmt(OUT_TYPE(DiscardStmt, DiscardStmt) msg) { DiscardStmt *node = makeNode(DiscardStmt); READ_ENUM_FIELD(DiscardMode, target, target, target); return node; } static CreateTrigStmt * _readCreateTrigStmt(OUT_TYPE(CreateTrigStmt, CreateTrigStmt) msg) { CreateTrigStmt *node = makeNode(CreateTrigStmt); READ_STRING_FIELD(trigname, trigname, trigname); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_LIST_FIELD(funcname, funcname, funcname); READ_LIST_FIELD(args, args, args); READ_BOOL_FIELD(row, row, row); READ_INT_FIELD(timing, timing, timing); READ_INT_FIELD(events, events, events); READ_LIST_FIELD(columns, columns, columns); READ_NODE_PTR_FIELD(when_clause, whenClause, whenClause); READ_BOOL_FIELD(isconstraint, isconstraint, isconstraint); READ_LIST_FIELD(transition_rels, transitionRels, transitionRels); READ_BOOL_FIELD(deferrable, deferrable, deferrable); READ_BOOL_FIELD(initdeferred, initdeferred, initdeferred); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, constrrel, constrrel, constrrel); return node; } static CreatePLangStmt * _readCreatePLangStmt(OUT_TYPE(CreatePLangStmt, CreatePLangStmt) msg) { CreatePLangStmt *node = makeNode(CreatePLangStmt); READ_BOOL_FIELD(replace, replace, replace); READ_STRING_FIELD(plname, plname, plname); READ_LIST_FIELD(plhandler, plhandler, plhandler); READ_LIST_FIELD(plinline, plinline, plinline); READ_LIST_FIELD(plvalidator, plvalidator, plvalidator); READ_BOOL_FIELD(pltrusted, pltrusted, pltrusted); return node; } static CreateRoleStmt * _readCreateRoleStmt(OUT_TYPE(CreateRoleStmt, CreateRoleStmt) msg) { CreateRoleStmt *node = makeNode(CreateRoleStmt); READ_ENUM_FIELD(RoleStmtType, stmt_type, stmt_type, stmt_type); READ_STRING_FIELD(role, role, role); READ_LIST_FIELD(options, options, options); return node; } static AlterRoleStmt * _readAlterRoleStmt(OUT_TYPE(AlterRoleStmt, AlterRoleStmt) msg) { AlterRoleStmt *node = makeNode(AlterRoleStmt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); READ_LIST_FIELD(options, options, options); READ_INT_FIELD(action, action, action); return node; } static DropRoleStmt * _readDropRoleStmt(OUT_TYPE(DropRoleStmt, DropRoleStmt) msg) { DropRoleStmt *node = makeNode(DropRoleStmt); READ_LIST_FIELD(roles, roles, roles); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static LockStmt * _readLockStmt(OUT_TYPE(LockStmt, LockStmt) msg) { LockStmt *node = makeNode(LockStmt); READ_LIST_FIELD(relations, relations, relations); READ_INT_FIELD(mode, mode, mode); READ_BOOL_FIELD(nowait, nowait, nowait); return node; } static ConstraintsSetStmt * _readConstraintsSetStmt(OUT_TYPE(ConstraintsSetStmt, ConstraintsSetStmt) msg) { ConstraintsSetStmt *node = makeNode(ConstraintsSetStmt); READ_LIST_FIELD(constraints, constraints, constraints); READ_BOOL_FIELD(deferred, deferred, deferred); return node; } static ReindexStmt * _readReindexStmt(OUT_TYPE(ReindexStmt, ReindexStmt) msg) { ReindexStmt *node = makeNode(ReindexStmt); READ_ENUM_FIELD(ReindexObjectType, kind, kind, kind); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_STRING_FIELD(name, name, name); READ_INT_FIELD(options, options, options); READ_BOOL_FIELD(concurrent, concurrent, concurrent); return node; } static CheckPointStmt * _readCheckPointStmt(OUT_TYPE(CheckPointStmt, CheckPointStmt) msg) { CheckPointStmt *node = makeNode(CheckPointStmt); return node; } static CreateSchemaStmt * _readCreateSchemaStmt(OUT_TYPE(CreateSchemaStmt, CreateSchemaStmt) msg) { CreateSchemaStmt *node = makeNode(CreateSchemaStmt); READ_STRING_FIELD(schemaname, schemaname, schemaname); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, authrole, authrole, authrole); READ_LIST_FIELD(schema_elts, schemaElts, schemaElts); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); return node; } static AlterDatabaseStmt * _readAlterDatabaseStmt(OUT_TYPE(AlterDatabaseStmt, AlterDatabaseStmt) msg) { AlterDatabaseStmt *node = makeNode(AlterDatabaseStmt); READ_STRING_FIELD(dbname, dbname, dbname); READ_LIST_FIELD(options, options, options); return node; } static AlterDatabaseSetStmt * _readAlterDatabaseSetStmt(OUT_TYPE(AlterDatabaseSetStmt, AlterDatabaseSetStmt) msg) { AlterDatabaseSetStmt *node = makeNode(AlterDatabaseSetStmt); READ_STRING_FIELD(dbname, dbname, dbname); READ_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); return node; } static AlterRoleSetStmt * _readAlterRoleSetStmt(OUT_TYPE(AlterRoleSetStmt, AlterRoleSetStmt) msg) { AlterRoleSetStmt *node = makeNode(AlterRoleSetStmt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, role, role, role); READ_STRING_FIELD(database, database, database); READ_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); return node; } static CreateConversionStmt * _readCreateConversionStmt(OUT_TYPE(CreateConversionStmt, CreateConversionStmt) msg) { CreateConversionStmt *node = makeNode(CreateConversionStmt); READ_LIST_FIELD(conversion_name, conversion_name, conversion_name); READ_STRING_FIELD(for_encoding_name, for_encoding_name, for_encoding_name); READ_STRING_FIELD(to_encoding_name, to_encoding_name, to_encoding_name); READ_LIST_FIELD(func_name, func_name, func_name); READ_BOOL_FIELD(def, def, def); return node; } static CreateCastStmt * _readCreateCastStmt(OUT_TYPE(CreateCastStmt, CreateCastStmt) msg) { CreateCastStmt *node = makeNode(CreateCastStmt); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, sourcetype, sourcetype, sourcetype); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, targettype, targettype, targettype); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, func, func, func); READ_ENUM_FIELD(CoercionContext, context, context, context); READ_BOOL_FIELD(inout, inout, inout); return node; } static CreateOpClassStmt * _readCreateOpClassStmt(OUT_TYPE(CreateOpClassStmt, CreateOpClassStmt) msg) { CreateOpClassStmt *node = makeNode(CreateOpClassStmt); READ_LIST_FIELD(opclassname, opclassname, opclassname); READ_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); READ_STRING_FIELD(amname, amname, amname); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, datatype, datatype, datatype); READ_LIST_FIELD(items, items, items); READ_BOOL_FIELD(is_default, isDefault, isDefault); return node; } static CreateOpFamilyStmt * _readCreateOpFamilyStmt(OUT_TYPE(CreateOpFamilyStmt, CreateOpFamilyStmt) msg) { CreateOpFamilyStmt *node = makeNode(CreateOpFamilyStmt); READ_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); READ_STRING_FIELD(amname, amname, amname); return node; } static AlterOpFamilyStmt * _readAlterOpFamilyStmt(OUT_TYPE(AlterOpFamilyStmt, AlterOpFamilyStmt) msg) { AlterOpFamilyStmt *node = makeNode(AlterOpFamilyStmt); READ_LIST_FIELD(opfamilyname, opfamilyname, opfamilyname); READ_STRING_FIELD(amname, amname, amname); READ_BOOL_FIELD(is_drop, isDrop, isDrop); READ_LIST_FIELD(items, items, items); return node; } static PrepareStmt * _readPrepareStmt(OUT_TYPE(PrepareStmt, PrepareStmt) msg) { PrepareStmt *node = makeNode(PrepareStmt); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(argtypes, argtypes, argtypes); READ_NODE_PTR_FIELD(query, query, query); return node; } static ExecuteStmt * _readExecuteStmt(OUT_TYPE(ExecuteStmt, ExecuteStmt) msg) { ExecuteStmt *node = makeNode(ExecuteStmt); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(params, params, params); return node; } static DeallocateStmt * _readDeallocateStmt(OUT_TYPE(DeallocateStmt, DeallocateStmt) msg) { DeallocateStmt *node = makeNode(DeallocateStmt); READ_STRING_FIELD(name, name, name); return node; } static DeclareCursorStmt * _readDeclareCursorStmt(OUT_TYPE(DeclareCursorStmt, DeclareCursorStmt) msg) { DeclareCursorStmt *node = makeNode(DeclareCursorStmt); READ_STRING_FIELD(portalname, portalname, portalname); READ_INT_FIELD(options, options, options); READ_NODE_PTR_FIELD(query, query, query); return node; } static CreateTableSpaceStmt * _readCreateTableSpaceStmt(OUT_TYPE(CreateTableSpaceStmt, CreateTableSpaceStmt) msg) { CreateTableSpaceStmt *node = makeNode(CreateTableSpaceStmt); READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, owner, owner, owner); READ_STRING_FIELD(location, location, location); READ_LIST_FIELD(options, options, options); return node; } static DropTableSpaceStmt * _readDropTableSpaceStmt(OUT_TYPE(DropTableSpaceStmt, DropTableSpaceStmt) msg) { DropTableSpaceStmt *node = makeNode(DropTableSpaceStmt); READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static AlterObjectDependsStmt * _readAlterObjectDependsStmt(OUT_TYPE(AlterObjectDependsStmt, AlterObjectDependsStmt) msg) { AlterObjectDependsStmt *node = makeNode(AlterObjectDependsStmt); READ_ENUM_FIELD(ObjectType, object_type, objectType, objectType); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_NODE_PTR_FIELD(object, object, object); READ_VALUE_PTR_FIELD(extname, extname, extname); READ_BOOL_FIELD(remove, remove, remove); return node; } static AlterObjectSchemaStmt * _readAlterObjectSchemaStmt(OUT_TYPE(AlterObjectSchemaStmt, AlterObjectSchemaStmt) msg) { AlterObjectSchemaStmt *node = makeNode(AlterObjectSchemaStmt); READ_ENUM_FIELD(ObjectType, object_type, objectType, objectType); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_NODE_PTR_FIELD(object, object, object); READ_STRING_FIELD(newschema, newschema, newschema); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static AlterOwnerStmt * _readAlterOwnerStmt(OUT_TYPE(AlterOwnerStmt, AlterOwnerStmt) msg) { AlterOwnerStmt *node = makeNode(AlterOwnerStmt); READ_ENUM_FIELD(ObjectType, object_type, objectType, objectType); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_NODE_PTR_FIELD(object, object, object); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newowner, newowner, newowner); return node; } static AlterOperatorStmt * _readAlterOperatorStmt(OUT_TYPE(AlterOperatorStmt, AlterOperatorStmt) msg) { AlterOperatorStmt *node = makeNode(AlterOperatorStmt); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, opername, opername, opername); READ_LIST_FIELD(options, options, options); return node; } static AlterTypeStmt * _readAlterTypeStmt(OUT_TYPE(AlterTypeStmt, AlterTypeStmt) msg) { AlterTypeStmt *node = makeNode(AlterTypeStmt); READ_LIST_FIELD(type_name, typeName, typeName); READ_LIST_FIELD(options, options, options); return node; } static DropOwnedStmt * _readDropOwnedStmt(OUT_TYPE(DropOwnedStmt, DropOwnedStmt) msg) { DropOwnedStmt *node = makeNode(DropOwnedStmt); READ_LIST_FIELD(roles, roles, roles); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); return node; } static ReassignOwnedStmt * _readReassignOwnedStmt(OUT_TYPE(ReassignOwnedStmt, ReassignOwnedStmt) msg) { ReassignOwnedStmt *node = makeNode(ReassignOwnedStmt); READ_LIST_FIELD(roles, roles, roles); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, newrole, newrole, newrole); return node; } static CompositeTypeStmt * _readCompositeTypeStmt(OUT_TYPE(CompositeTypeStmt, CompositeTypeStmt) msg) { CompositeTypeStmt *node = makeNode(CompositeTypeStmt); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, typevar, typevar, typevar); READ_LIST_FIELD(coldeflist, coldeflist, coldeflist); return node; } static CreateEnumStmt * _readCreateEnumStmt(OUT_TYPE(CreateEnumStmt, CreateEnumStmt) msg) { CreateEnumStmt *node = makeNode(CreateEnumStmt); READ_LIST_FIELD(type_name, typeName, typeName); READ_LIST_FIELD(vals, vals, vals); return node; } static CreateRangeStmt * _readCreateRangeStmt(OUT_TYPE(CreateRangeStmt, CreateRangeStmt) msg) { CreateRangeStmt *node = makeNode(CreateRangeStmt); READ_LIST_FIELD(type_name, typeName, typeName); READ_LIST_FIELD(params, params, params); return node; } static AlterEnumStmt * _readAlterEnumStmt(OUT_TYPE(AlterEnumStmt, AlterEnumStmt) msg) { AlterEnumStmt *node = makeNode(AlterEnumStmt); READ_LIST_FIELD(type_name, typeName, typeName); READ_STRING_FIELD(old_val, oldVal, oldVal); READ_STRING_FIELD(new_val, newVal, newVal); READ_STRING_FIELD(new_val_neighbor, newValNeighbor, newValNeighbor); READ_BOOL_FIELD(new_val_is_after, newValIsAfter, newValIsAfter); READ_BOOL_FIELD(skip_if_new_val_exists, skipIfNewValExists, skipIfNewValExists); return node; } static AlterTSDictionaryStmt * _readAlterTSDictionaryStmt(OUT_TYPE(AlterTSDictionaryStmt, AlterTSDictionaryStmt) msg) { AlterTSDictionaryStmt *node = makeNode(AlterTSDictionaryStmt); READ_LIST_FIELD(dictname, dictname, dictname); READ_LIST_FIELD(options, options, options); return node; } static AlterTSConfigurationStmt * _readAlterTSConfigurationStmt(OUT_TYPE(AlterTSConfigurationStmt, AlterTSConfigurationStmt) msg) { AlterTSConfigurationStmt *node = makeNode(AlterTSConfigurationStmt); READ_ENUM_FIELD(AlterTSConfigType, kind, kind, kind); READ_LIST_FIELD(cfgname, cfgname, cfgname); READ_LIST_FIELD(tokentype, tokentype, tokentype); READ_LIST_FIELD(dicts, dicts, dicts); READ_BOOL_FIELD(override, override, override); READ_BOOL_FIELD(replace, replace, replace); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static CreateFdwStmt * _readCreateFdwStmt(OUT_TYPE(CreateFdwStmt, CreateFdwStmt) msg) { CreateFdwStmt *node = makeNode(CreateFdwStmt); READ_STRING_FIELD(fdwname, fdwname, fdwname); READ_LIST_FIELD(func_options, func_options, func_options); READ_LIST_FIELD(options, options, options); return node; } static AlterFdwStmt * _readAlterFdwStmt(OUT_TYPE(AlterFdwStmt, AlterFdwStmt) msg) { AlterFdwStmt *node = makeNode(AlterFdwStmt); READ_STRING_FIELD(fdwname, fdwname, fdwname); READ_LIST_FIELD(func_options, func_options, func_options); READ_LIST_FIELD(options, options, options); return node; } static CreateForeignServerStmt * _readCreateForeignServerStmt(OUT_TYPE(CreateForeignServerStmt, CreateForeignServerStmt) msg) { CreateForeignServerStmt *node = makeNode(CreateForeignServerStmt); READ_STRING_FIELD(servername, servername, servername); READ_STRING_FIELD(servertype, servertype, servertype); READ_STRING_FIELD(version, version, version); READ_STRING_FIELD(fdwname, fdwname, fdwname); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); READ_LIST_FIELD(options, options, options); return node; } static AlterForeignServerStmt * _readAlterForeignServerStmt(OUT_TYPE(AlterForeignServerStmt, AlterForeignServerStmt) msg) { AlterForeignServerStmt *node = makeNode(AlterForeignServerStmt); READ_STRING_FIELD(servername, servername, servername); READ_STRING_FIELD(version, version, version); READ_LIST_FIELD(options, options, options); READ_BOOL_FIELD(has_version, has_version, has_version); return node; } static CreateUserMappingStmt * _readCreateUserMappingStmt(OUT_TYPE(CreateUserMappingStmt, CreateUserMappingStmt) msg) { CreateUserMappingStmt *node = makeNode(CreateUserMappingStmt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); READ_STRING_FIELD(servername, servername, servername); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); READ_LIST_FIELD(options, options, options); return node; } static AlterUserMappingStmt * _readAlterUserMappingStmt(OUT_TYPE(AlterUserMappingStmt, AlterUserMappingStmt) msg) { AlterUserMappingStmt *node = makeNode(AlterUserMappingStmt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); READ_STRING_FIELD(servername, servername, servername); READ_LIST_FIELD(options, options, options); return node; } static DropUserMappingStmt * _readDropUserMappingStmt(OUT_TYPE(DropUserMappingStmt, DropUserMappingStmt) msg) { DropUserMappingStmt *node = makeNode(DropUserMappingStmt); READ_SPECIFIC_NODE_PTR_FIELD(RoleSpec, role_spec, user, user, user); READ_STRING_FIELD(servername, servername, servername); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static AlterTableSpaceOptionsStmt * _readAlterTableSpaceOptionsStmt(OUT_TYPE(AlterTableSpaceOptionsStmt, AlterTableSpaceOptionsStmt) msg) { AlterTableSpaceOptionsStmt *node = makeNode(AlterTableSpaceOptionsStmt); READ_STRING_FIELD(tablespacename, tablespacename, tablespacename); READ_LIST_FIELD(options, options, options); READ_BOOL_FIELD(is_reset, isReset, isReset); return node; } static AlterTableMoveAllStmt * _readAlterTableMoveAllStmt(OUT_TYPE(AlterTableMoveAllStmt, AlterTableMoveAllStmt) msg) { AlterTableMoveAllStmt *node = makeNode(AlterTableMoveAllStmt); READ_STRING_FIELD(orig_tablespacename, orig_tablespacename, orig_tablespacename); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_LIST_FIELD(roles, roles, roles); READ_STRING_FIELD(new_tablespacename, new_tablespacename, new_tablespacename); READ_BOOL_FIELD(nowait, nowait, nowait); return node; } static SecLabelStmt * _readSecLabelStmt(OUT_TYPE(SecLabelStmt, SecLabelStmt) msg) { SecLabelStmt *node = makeNode(SecLabelStmt); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_NODE_PTR_FIELD(object, object, object); READ_STRING_FIELD(provider, provider, provider); READ_STRING_FIELD(label, label, label); return node; } static CreateForeignTableStmt * _readCreateForeignTableStmt(OUT_TYPE(CreateForeignTableStmt, CreateForeignTableStmt) msg) { CreateForeignTableStmt *node = makeNode(CreateForeignTableStmt); READ_SPECIFIC_NODE_FIELD(CreateStmt, create_stmt, base_stmt, base, base); READ_STRING_FIELD(servername, servername, servername); READ_LIST_FIELD(options, options, options); NodeSetTag(node, T_CreateForeignTableStmt); return node; } static ImportForeignSchemaStmt * _readImportForeignSchemaStmt(OUT_TYPE(ImportForeignSchemaStmt, ImportForeignSchemaStmt) msg) { ImportForeignSchemaStmt *node = makeNode(ImportForeignSchemaStmt); READ_STRING_FIELD(server_name, server_name, server_name); READ_STRING_FIELD(remote_schema, remote_schema, remote_schema); READ_STRING_FIELD(local_schema, local_schema, local_schema); READ_ENUM_FIELD(ImportForeignSchemaType, list_type, list_type, list_type); READ_LIST_FIELD(table_list, table_list, table_list); READ_LIST_FIELD(options, options, options); return node; } static CreateExtensionStmt * _readCreateExtensionStmt(OUT_TYPE(CreateExtensionStmt, CreateExtensionStmt) msg) { CreateExtensionStmt *node = makeNode(CreateExtensionStmt); READ_STRING_FIELD(extname, extname, extname); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); READ_LIST_FIELD(options, options, options); return node; } static AlterExtensionStmt * _readAlterExtensionStmt(OUT_TYPE(AlterExtensionStmt, AlterExtensionStmt) msg) { AlterExtensionStmt *node = makeNode(AlterExtensionStmt); READ_STRING_FIELD(extname, extname, extname); READ_LIST_FIELD(options, options, options); return node; } static AlterExtensionContentsStmt * _readAlterExtensionContentsStmt(OUT_TYPE(AlterExtensionContentsStmt, AlterExtensionContentsStmt) msg) { AlterExtensionContentsStmt *node = makeNode(AlterExtensionContentsStmt); READ_STRING_FIELD(extname, extname, extname); READ_INT_FIELD(action, action, action); READ_ENUM_FIELD(ObjectType, objtype, objtype, objtype); READ_NODE_PTR_FIELD(object, object, object); return node; } static CreateEventTrigStmt * _readCreateEventTrigStmt(OUT_TYPE(CreateEventTrigStmt, CreateEventTrigStmt) msg) { CreateEventTrigStmt *node = makeNode(CreateEventTrigStmt); READ_STRING_FIELD(trigname, trigname, trigname); READ_STRING_FIELD(eventname, eventname, eventname); READ_LIST_FIELD(whenclause, whenclause, whenclause); READ_LIST_FIELD(funcname, funcname, funcname); return node; } static AlterEventTrigStmt * _readAlterEventTrigStmt(OUT_TYPE(AlterEventTrigStmt, AlterEventTrigStmt) msg) { AlterEventTrigStmt *node = makeNode(AlterEventTrigStmt); READ_STRING_FIELD(trigname, trigname, trigname); READ_CHAR_FIELD(tgenabled, tgenabled, tgenabled); return node; } static RefreshMatViewStmt * _readRefreshMatViewStmt(OUT_TYPE(RefreshMatViewStmt, RefreshMatViewStmt) msg) { RefreshMatViewStmt *node = makeNode(RefreshMatViewStmt); READ_BOOL_FIELD(concurrent, concurrent, concurrent); READ_BOOL_FIELD(skip_data, skipData, skipData); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); return node; } static ReplicaIdentityStmt * _readReplicaIdentityStmt(OUT_TYPE(ReplicaIdentityStmt, ReplicaIdentityStmt) msg) { ReplicaIdentityStmt *node = makeNode(ReplicaIdentityStmt); READ_CHAR_FIELD(identity_type, identity_type, identity_type); READ_STRING_FIELD(name, name, name); return node; } static AlterSystemStmt * _readAlterSystemStmt(OUT_TYPE(AlterSystemStmt, AlterSystemStmt) msg) { AlterSystemStmt *node = makeNode(AlterSystemStmt); READ_SPECIFIC_NODE_PTR_FIELD(VariableSetStmt, variable_set_stmt, setstmt, setstmt, setstmt); return node; } static CreatePolicyStmt * _readCreatePolicyStmt(OUT_TYPE(CreatePolicyStmt, CreatePolicyStmt) msg) { CreatePolicyStmt *node = makeNode(CreatePolicyStmt); READ_STRING_FIELD(policy_name, policy_name, policy_name); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); READ_STRING_FIELD(cmd_name, cmd_name, cmd_name); READ_BOOL_FIELD(permissive, permissive, permissive); READ_LIST_FIELD(roles, roles, roles); READ_NODE_PTR_FIELD(qual, qual, qual); READ_NODE_PTR_FIELD(with_check, with_check, with_check); return node; } static AlterPolicyStmt * _readAlterPolicyStmt(OUT_TYPE(AlterPolicyStmt, AlterPolicyStmt) msg) { AlterPolicyStmt *node = makeNode(AlterPolicyStmt); READ_STRING_FIELD(policy_name, policy_name, policy_name); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, table, table, table); READ_LIST_FIELD(roles, roles, roles); READ_NODE_PTR_FIELD(qual, qual, qual); READ_NODE_PTR_FIELD(with_check, with_check, with_check); return node; } static CreateTransformStmt * _readCreateTransformStmt(OUT_TYPE(CreateTransformStmt, CreateTransformStmt) msg) { CreateTransformStmt *node = makeNode(CreateTransformStmt); READ_BOOL_FIELD(replace, replace, replace); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, type_name, type_name); READ_STRING_FIELD(lang, lang, lang); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, fromsql, fromsql, fromsql); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, tosql, tosql, tosql); return node; } static CreateAmStmt * _readCreateAmStmt(OUT_TYPE(CreateAmStmt, CreateAmStmt) msg) { CreateAmStmt *node = makeNode(CreateAmStmt); READ_STRING_FIELD(amname, amname, amname); READ_LIST_FIELD(handler_name, handler_name, handler_name); READ_CHAR_FIELD(amtype, amtype, amtype); return node; } static CreatePublicationStmt * _readCreatePublicationStmt(OUT_TYPE(CreatePublicationStmt, CreatePublicationStmt) msg) { CreatePublicationStmt *node = makeNode(CreatePublicationStmt); READ_STRING_FIELD(pubname, pubname, pubname); READ_LIST_FIELD(options, options, options); READ_LIST_FIELD(tables, tables, tables); READ_BOOL_FIELD(for_all_tables, for_all_tables, for_all_tables); return node; } static AlterPublicationStmt * _readAlterPublicationStmt(OUT_TYPE(AlterPublicationStmt, AlterPublicationStmt) msg) { AlterPublicationStmt *node = makeNode(AlterPublicationStmt); READ_STRING_FIELD(pubname, pubname, pubname); READ_LIST_FIELD(options, options, options); READ_LIST_FIELD(tables, tables, tables); READ_BOOL_FIELD(for_all_tables, for_all_tables, for_all_tables); READ_ENUM_FIELD(DefElemAction, table_action, tableAction, tableAction); return node; } static CreateSubscriptionStmt * _readCreateSubscriptionStmt(OUT_TYPE(CreateSubscriptionStmt, CreateSubscriptionStmt) msg) { CreateSubscriptionStmt *node = makeNode(CreateSubscriptionStmt); READ_STRING_FIELD(subname, subname, subname); READ_STRING_FIELD(conninfo, conninfo, conninfo); READ_LIST_FIELD(publication, publication, publication); READ_LIST_FIELD(options, options, options); return node; } static AlterSubscriptionStmt * _readAlterSubscriptionStmt(OUT_TYPE(AlterSubscriptionStmt, AlterSubscriptionStmt) msg) { AlterSubscriptionStmt *node = makeNode(AlterSubscriptionStmt); READ_ENUM_FIELD(AlterSubscriptionType, kind, kind, kind); READ_STRING_FIELD(subname, subname, subname); READ_STRING_FIELD(conninfo, conninfo, conninfo); READ_LIST_FIELD(publication, publication, publication); READ_LIST_FIELD(options, options, options); return node; } static DropSubscriptionStmt * _readDropSubscriptionStmt(OUT_TYPE(DropSubscriptionStmt, DropSubscriptionStmt) msg) { DropSubscriptionStmt *node = makeNode(DropSubscriptionStmt); READ_STRING_FIELD(subname, subname, subname); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); READ_ENUM_FIELD(DropBehavior, behavior, behavior, behavior); return node; } static CreateStatsStmt * _readCreateStatsStmt(OUT_TYPE(CreateStatsStmt, CreateStatsStmt) msg) { CreateStatsStmt *node = makeNode(CreateStatsStmt); READ_LIST_FIELD(defnames, defnames, defnames); READ_LIST_FIELD(stat_types, stat_types, stat_types); READ_LIST_FIELD(exprs, exprs, exprs); READ_LIST_FIELD(relations, relations, relations); READ_STRING_FIELD(stxcomment, stxcomment, stxcomment); READ_BOOL_FIELD(if_not_exists, if_not_exists, if_not_exists); return node; } static AlterCollationStmt * _readAlterCollationStmt(OUT_TYPE(AlterCollationStmt, AlterCollationStmt) msg) { AlterCollationStmt *node = makeNode(AlterCollationStmt); READ_LIST_FIELD(collname, collname, collname); return node; } static CallStmt * _readCallStmt(OUT_TYPE(CallStmt, CallStmt) msg) { CallStmt *node = makeNode(CallStmt); READ_SPECIFIC_NODE_PTR_FIELD(FuncCall, func_call, funccall, funccall, funccall); READ_SPECIFIC_NODE_PTR_FIELD(FuncExpr, func_expr, funcexpr, funcexpr, funcexpr); return node; } static AlterStatsStmt * _readAlterStatsStmt(OUT_TYPE(AlterStatsStmt, AlterStatsStmt) msg) { AlterStatsStmt *node = makeNode(AlterStatsStmt); READ_LIST_FIELD(defnames, defnames, defnames); READ_INT_FIELD(stxstattarget, stxstattarget, stxstattarget); READ_BOOL_FIELD(missing_ok, missing_ok, missing_ok); return node; } static A_Expr * _readAExpr(OUT_TYPE(A_Expr, AExpr) msg) { A_Expr *node = makeNode(A_Expr); READ_ENUM_FIELD(A_Expr_Kind, kind, kind, kind); READ_LIST_FIELD(name, name, name); READ_NODE_PTR_FIELD(lexpr, lexpr, lexpr); READ_NODE_PTR_FIELD(rexpr, rexpr, rexpr); READ_INT_FIELD(location, location, location); return node; } static ColumnRef * _readColumnRef(OUT_TYPE(ColumnRef, ColumnRef) msg) { ColumnRef *node = makeNode(ColumnRef); READ_LIST_FIELD(fields, fields, fields); READ_INT_FIELD(location, location, location); return node; } static ParamRef * _readParamRef(OUT_TYPE(ParamRef, ParamRef) msg) { ParamRef *node = makeNode(ParamRef); READ_INT_FIELD(number, number, number); READ_INT_FIELD(location, location, location); return node; } static A_Const * _readAConst(OUT_TYPE(A_Const, AConst) msg) { A_Const *node = makeNode(A_Const); READ_VALUE_FIELD(val, val, val); READ_INT_FIELD(location, location, location); return node; } static FuncCall * _readFuncCall(OUT_TYPE(FuncCall, FuncCall) msg) { FuncCall *node = makeNode(FuncCall); READ_LIST_FIELD(funcname, funcname, funcname); READ_LIST_FIELD(args, args, args); READ_LIST_FIELD(agg_order, agg_order, agg_order); READ_NODE_PTR_FIELD(agg_filter, agg_filter, agg_filter); READ_BOOL_FIELD(agg_within_group, agg_within_group, agg_within_group); READ_BOOL_FIELD(agg_star, agg_star, agg_star); READ_BOOL_FIELD(agg_distinct, agg_distinct, agg_distinct); READ_BOOL_FIELD(func_variadic, func_variadic, func_variadic); READ_SPECIFIC_NODE_PTR_FIELD(WindowDef, window_def, over, over, over); READ_INT_FIELD(location, location, location); return node; } static A_Star * _readAStar(OUT_TYPE(A_Star, AStar) msg) { A_Star *node = makeNode(A_Star); return node; } static A_Indices * _readAIndices(OUT_TYPE(A_Indices, AIndices) msg) { A_Indices *node = makeNode(A_Indices); READ_BOOL_FIELD(is_slice, is_slice, is_slice); READ_NODE_PTR_FIELD(lidx, lidx, lidx); READ_NODE_PTR_FIELD(uidx, uidx, uidx); return node; } static A_Indirection * _readAIndirection(OUT_TYPE(A_Indirection, AIndirection) msg) { A_Indirection *node = makeNode(A_Indirection); READ_NODE_PTR_FIELD(arg, arg, arg); READ_LIST_FIELD(indirection, indirection, indirection); return node; } static A_ArrayExpr * _readAArrayExpr(OUT_TYPE(A_ArrayExpr, AArrayExpr) msg) { A_ArrayExpr *node = makeNode(A_ArrayExpr); READ_LIST_FIELD(elements, elements, elements); READ_INT_FIELD(location, location, location); return node; } static ResTarget * _readResTarget(OUT_TYPE(ResTarget, ResTarget) msg) { ResTarget *node = makeNode(ResTarget); READ_STRING_FIELD(name, name, name); READ_LIST_FIELD(indirection, indirection, indirection); READ_NODE_PTR_FIELD(val, val, val); READ_INT_FIELD(location, location, location); return node; } static MultiAssignRef * _readMultiAssignRef(OUT_TYPE(MultiAssignRef, MultiAssignRef) msg) { MultiAssignRef *node = makeNode(MultiAssignRef); READ_NODE_PTR_FIELD(source, source, source); READ_INT_FIELD(colno, colno, colno); READ_INT_FIELD(ncolumns, ncolumns, ncolumns); return node; } static TypeCast * _readTypeCast(OUT_TYPE(TypeCast, TypeCast) msg) { TypeCast *node = makeNode(TypeCast); READ_NODE_PTR_FIELD(arg, arg, arg); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_INT_FIELD(location, location, location); return node; } static CollateClause * _readCollateClause(OUT_TYPE(CollateClause, CollateClause) msg) { CollateClause *node = makeNode(CollateClause); READ_NODE_PTR_FIELD(arg, arg, arg); READ_LIST_FIELD(collname, collname, collname); READ_INT_FIELD(location, location, location); return node; } static SortBy * _readSortBy(OUT_TYPE(SortBy, SortBy) msg) { SortBy *node = makeNode(SortBy); READ_NODE_PTR_FIELD(node, node, node); READ_ENUM_FIELD(SortByDir, sortby_dir, sortby_dir, sortby_dir); READ_ENUM_FIELD(SortByNulls, sortby_nulls, sortby_nulls, sortby_nulls); READ_LIST_FIELD(use_op, useOp, useOp); READ_INT_FIELD(location, location, location); return node; } static WindowDef * _readWindowDef(OUT_TYPE(WindowDef, WindowDef) msg) { WindowDef *node = makeNode(WindowDef); READ_STRING_FIELD(name, name, name); READ_STRING_FIELD(refname, refname, refname); READ_LIST_FIELD(partition_clause, partitionClause, partitionClause); READ_LIST_FIELD(order_clause, orderClause, orderClause); READ_INT_FIELD(frame_options, frameOptions, frameOptions); READ_NODE_PTR_FIELD(start_offset, startOffset, startOffset); READ_NODE_PTR_FIELD(end_offset, endOffset, endOffset); READ_INT_FIELD(location, location, location); return node; } static RangeSubselect * _readRangeSubselect(OUT_TYPE(RangeSubselect, RangeSubselect) msg) { RangeSubselect *node = makeNode(RangeSubselect); READ_BOOL_FIELD(lateral, lateral, lateral); READ_NODE_PTR_FIELD(subquery, subquery, subquery); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); return node; } static RangeFunction * _readRangeFunction(OUT_TYPE(RangeFunction, RangeFunction) msg) { RangeFunction *node = makeNode(RangeFunction); READ_BOOL_FIELD(lateral, lateral, lateral); READ_BOOL_FIELD(ordinality, ordinality, ordinality); READ_BOOL_FIELD(is_rowsfrom, is_rowsfrom, is_rowsfrom); READ_LIST_FIELD(functions, functions, functions); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_LIST_FIELD(coldeflist, coldeflist, coldeflist); return node; } static RangeTableSample * _readRangeTableSample(OUT_TYPE(RangeTableSample, RangeTableSample) msg) { RangeTableSample *node = makeNode(RangeTableSample); READ_NODE_PTR_FIELD(relation, relation, relation); READ_LIST_FIELD(method, method, method); READ_LIST_FIELD(args, args, args); READ_NODE_PTR_FIELD(repeatable, repeatable, repeatable); READ_INT_FIELD(location, location, location); return node; } static RangeTableFunc * _readRangeTableFunc(OUT_TYPE(RangeTableFunc, RangeTableFunc) msg) { RangeTableFunc *node = makeNode(RangeTableFunc); READ_BOOL_FIELD(lateral, lateral, lateral); READ_NODE_PTR_FIELD(docexpr, docexpr, docexpr); READ_NODE_PTR_FIELD(rowexpr, rowexpr, rowexpr); READ_LIST_FIELD(namespaces, namespaces, namespaces); READ_LIST_FIELD(columns, columns, columns); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_INT_FIELD(location, location, location); return node; } static RangeTableFuncCol * _readRangeTableFuncCol(OUT_TYPE(RangeTableFuncCol, RangeTableFuncCol) msg) { RangeTableFuncCol *node = makeNode(RangeTableFuncCol); READ_STRING_FIELD(colname, colname, colname); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_BOOL_FIELD(for_ordinality, for_ordinality, for_ordinality); READ_BOOL_FIELD(is_not_null, is_not_null, is_not_null); READ_NODE_PTR_FIELD(colexpr, colexpr, colexpr); READ_NODE_PTR_FIELD(coldefexpr, coldefexpr, coldefexpr); READ_INT_FIELD(location, location, location); return node; } static TypeName * _readTypeName(OUT_TYPE(TypeName, TypeName) msg) { TypeName *node = makeNode(TypeName); READ_LIST_FIELD(names, names, names); READ_UINT_FIELD(type_oid, typeOid, typeOid); READ_BOOL_FIELD(setof, setof, setof); READ_BOOL_FIELD(pct_type, pct_type, pct_type); READ_LIST_FIELD(typmods, typmods, typmods); READ_INT_FIELD(typemod, typemod, typemod); READ_LIST_FIELD(array_bounds, arrayBounds, arrayBounds); READ_INT_FIELD(location, location, location); return node; } static ColumnDef * _readColumnDef(OUT_TYPE(ColumnDef, ColumnDef) msg) { ColumnDef *node = makeNode(ColumnDef); READ_STRING_FIELD(colname, colname, colname); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_INT_FIELD(inhcount, inhcount, inhcount); READ_BOOL_FIELD(is_local, is_local, is_local); READ_BOOL_FIELD(is_not_null, is_not_null, is_not_null); READ_BOOL_FIELD(is_from_type, is_from_type, is_from_type); READ_CHAR_FIELD(storage, storage, storage); READ_NODE_PTR_FIELD(raw_default, raw_default, raw_default); READ_NODE_PTR_FIELD(cooked_default, cooked_default, cooked_default); READ_CHAR_FIELD(identity, identity, identity); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, identity_sequence, identitySequence, identitySequence); READ_CHAR_FIELD(generated, generated, generated); READ_SPECIFIC_NODE_PTR_FIELD(CollateClause, collate_clause, coll_clause, collClause, collClause); READ_UINT_FIELD(coll_oid, collOid, collOid); READ_LIST_FIELD(constraints, constraints, constraints); READ_LIST_FIELD(fdwoptions, fdwoptions, fdwoptions); READ_INT_FIELD(location, location, location); return node; } static IndexElem * _readIndexElem(OUT_TYPE(IndexElem, IndexElem) msg) { IndexElem *node = makeNode(IndexElem); READ_STRING_FIELD(name, name, name); READ_NODE_PTR_FIELD(expr, expr, expr); READ_STRING_FIELD(indexcolname, indexcolname, indexcolname); READ_LIST_FIELD(collation, collation, collation); READ_LIST_FIELD(opclass, opclass, opclass); READ_LIST_FIELD(opclassopts, opclassopts, opclassopts); READ_ENUM_FIELD(SortByDir, ordering, ordering, ordering); READ_ENUM_FIELD(SortByNulls, nulls_ordering, nulls_ordering, nulls_ordering); return node; } static Constraint * _readConstraint(OUT_TYPE(Constraint, Constraint) msg) { Constraint *node = makeNode(Constraint); READ_ENUM_FIELD(ConstrType, contype, contype, contype); READ_STRING_FIELD(conname, conname, conname); READ_BOOL_FIELD(deferrable, deferrable, deferrable); READ_BOOL_FIELD(initdeferred, initdeferred, initdeferred); READ_INT_FIELD(location, location, location); READ_BOOL_FIELD(is_no_inherit, is_no_inherit, is_no_inherit); READ_NODE_PTR_FIELD(raw_expr, raw_expr, raw_expr); READ_STRING_FIELD(cooked_expr, cooked_expr, cooked_expr); READ_CHAR_FIELD(generated_when, generated_when, generated_when); READ_LIST_FIELD(keys, keys, keys); READ_LIST_FIELD(including, including, including); READ_LIST_FIELD(exclusions, exclusions, exclusions); READ_LIST_FIELD(options, options, options); READ_STRING_FIELD(indexname, indexname, indexname); READ_STRING_FIELD(indexspace, indexspace, indexspace); READ_BOOL_FIELD(reset_default_tblspc, reset_default_tblspc, reset_default_tblspc); READ_STRING_FIELD(access_method, access_method, access_method); READ_NODE_PTR_FIELD(where_clause, where_clause, where_clause); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, pktable, pktable, pktable); READ_LIST_FIELD(fk_attrs, fk_attrs, fk_attrs); READ_LIST_FIELD(pk_attrs, pk_attrs, pk_attrs); READ_CHAR_FIELD(fk_matchtype, fk_matchtype, fk_matchtype); READ_CHAR_FIELD(fk_upd_action, fk_upd_action, fk_upd_action); READ_CHAR_FIELD(fk_del_action, fk_del_action, fk_del_action); READ_LIST_FIELD(old_conpfeqop, old_conpfeqop, old_conpfeqop); READ_UINT_FIELD(old_pktable_oid, old_pktable_oid, old_pktable_oid); READ_BOOL_FIELD(skip_validation, skip_validation, skip_validation); READ_BOOL_FIELD(initially_valid, initially_valid, initially_valid); return node; } static DefElem * _readDefElem(OUT_TYPE(DefElem, DefElem) msg) { DefElem *node = makeNode(DefElem); READ_STRING_FIELD(defnamespace, defnamespace, defnamespace); READ_STRING_FIELD(defname, defname, defname); READ_NODE_PTR_FIELD(arg, arg, arg); READ_ENUM_FIELD(DefElemAction, defaction, defaction, defaction); READ_INT_FIELD(location, location, location); return node; } static RangeTblEntry * _readRangeTblEntry(OUT_TYPE(RangeTblEntry, RangeTblEntry) msg) { RangeTblEntry *node = makeNode(RangeTblEntry); READ_ENUM_FIELD(RTEKind, rtekind, rtekind, rtekind); READ_UINT_FIELD(relid, relid, relid); READ_CHAR_FIELD(relkind, relkind, relkind); READ_INT_FIELD(rellockmode, rellockmode, rellockmode); READ_SPECIFIC_NODE_PTR_FIELD(TableSampleClause, table_sample_clause, tablesample, tablesample, tablesample); READ_SPECIFIC_NODE_PTR_FIELD(Query, query, subquery, subquery, subquery); READ_BOOL_FIELD(security_barrier, security_barrier, security_barrier); READ_ENUM_FIELD(JoinType, jointype, jointype, jointype); READ_INT_FIELD(joinmergedcols, joinmergedcols, joinmergedcols); READ_LIST_FIELD(joinaliasvars, joinaliasvars, joinaliasvars); READ_LIST_FIELD(joinleftcols, joinleftcols, joinleftcols); READ_LIST_FIELD(joinrightcols, joinrightcols, joinrightcols); READ_LIST_FIELD(functions, functions, functions); READ_BOOL_FIELD(funcordinality, funcordinality, funcordinality); READ_SPECIFIC_NODE_PTR_FIELD(TableFunc, table_func, tablefunc, tablefunc, tablefunc); READ_LIST_FIELD(values_lists, values_lists, values_lists); READ_STRING_FIELD(ctename, ctename, ctename); READ_UINT_FIELD(ctelevelsup, ctelevelsup, ctelevelsup); READ_BOOL_FIELD(self_reference, self_reference, self_reference); READ_LIST_FIELD(coltypes, coltypes, coltypes); READ_LIST_FIELD(coltypmods, coltypmods, coltypmods); READ_LIST_FIELD(colcollations, colcollations, colcollations); READ_STRING_FIELD(enrname, enrname, enrname); READ_FLOAT_FIELD(enrtuples, enrtuples, enrtuples); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, alias, alias, alias); READ_SPECIFIC_NODE_PTR_FIELD(Alias, alias, eref, eref, eref); READ_BOOL_FIELD(lateral, lateral, lateral); READ_BOOL_FIELD(inh, inh, inh); READ_BOOL_FIELD(in_from_cl, inFromCl, inFromCl); READ_UINT_FIELD(required_perms, requiredPerms, requiredPerms); READ_UINT_FIELD(check_as_user, checkAsUser, checkAsUser); READ_BITMAPSET_FIELD(selected_cols, selectedCols, selectedCols); READ_BITMAPSET_FIELD(inserted_cols, insertedCols, insertedCols); READ_BITMAPSET_FIELD(updated_cols, updatedCols, updatedCols); READ_BITMAPSET_FIELD(extra_updated_cols, extraUpdatedCols, extraUpdatedCols); READ_LIST_FIELD(security_quals, securityQuals, securityQuals); return node; } static RangeTblFunction * _readRangeTblFunction(OUT_TYPE(RangeTblFunction, RangeTblFunction) msg) { RangeTblFunction *node = makeNode(RangeTblFunction); READ_NODE_PTR_FIELD(funcexpr, funcexpr, funcexpr); READ_INT_FIELD(funccolcount, funccolcount, funccolcount); READ_LIST_FIELD(funccolnames, funccolnames, funccolnames); READ_LIST_FIELD(funccoltypes, funccoltypes, funccoltypes); READ_LIST_FIELD(funccoltypmods, funccoltypmods, funccoltypmods); READ_LIST_FIELD(funccolcollations, funccolcollations, funccolcollations); READ_BITMAPSET_FIELD(funcparams, funcparams, funcparams); return node; } static TableSampleClause * _readTableSampleClause(OUT_TYPE(TableSampleClause, TableSampleClause) msg) { TableSampleClause *node = makeNode(TableSampleClause); READ_UINT_FIELD(tsmhandler, tsmhandler, tsmhandler); READ_LIST_FIELD(args, args, args); READ_EXPR_PTR_FIELD(repeatable, repeatable, repeatable); return node; } static WithCheckOption * _readWithCheckOption(OUT_TYPE(WithCheckOption, WithCheckOption) msg) { WithCheckOption *node = makeNode(WithCheckOption); READ_ENUM_FIELD(WCOKind, kind, kind, kind); READ_STRING_FIELD(relname, relname, relname); READ_STRING_FIELD(polname, polname, polname); READ_NODE_PTR_FIELD(qual, qual, qual); READ_BOOL_FIELD(cascaded, cascaded, cascaded); return node; } static SortGroupClause * _readSortGroupClause(OUT_TYPE(SortGroupClause, SortGroupClause) msg) { SortGroupClause *node = makeNode(SortGroupClause); READ_UINT_FIELD(tle_sort_group_ref, tleSortGroupRef, tleSortGroupRef); READ_UINT_FIELD(eqop, eqop, eqop); READ_UINT_FIELD(sortop, sortop, sortop); READ_BOOL_FIELD(nulls_first, nulls_first, nulls_first); READ_BOOL_FIELD(hashable, hashable, hashable); return node; } static GroupingSet * _readGroupingSet(OUT_TYPE(GroupingSet, GroupingSet) msg) { GroupingSet *node = makeNode(GroupingSet); READ_ENUM_FIELD(GroupingSetKind, kind, kind, kind); READ_LIST_FIELD(content, content, content); READ_INT_FIELD(location, location, location); return node; } static WindowClause * _readWindowClause(OUT_TYPE(WindowClause, WindowClause) msg) { WindowClause *node = makeNode(WindowClause); READ_STRING_FIELD(name, name, name); READ_STRING_FIELD(refname, refname, refname); READ_LIST_FIELD(partition_clause, partitionClause, partitionClause); READ_LIST_FIELD(order_clause, orderClause, orderClause); READ_INT_FIELD(frame_options, frameOptions, frameOptions); READ_NODE_PTR_FIELD(start_offset, startOffset, startOffset); READ_NODE_PTR_FIELD(end_offset, endOffset, endOffset); READ_UINT_FIELD(start_in_range_func, startInRangeFunc, startInRangeFunc); READ_UINT_FIELD(end_in_range_func, endInRangeFunc, endInRangeFunc); READ_UINT_FIELD(in_range_coll, inRangeColl, inRangeColl); READ_BOOL_FIELD(in_range_asc, inRangeAsc, inRangeAsc); READ_BOOL_FIELD(in_range_nulls_first, inRangeNullsFirst, inRangeNullsFirst); READ_UINT_FIELD(winref, winref, winref); READ_BOOL_FIELD(copied_order, copiedOrder, copiedOrder); return node; } static ObjectWithArgs * _readObjectWithArgs(OUT_TYPE(ObjectWithArgs, ObjectWithArgs) msg) { ObjectWithArgs *node = makeNode(ObjectWithArgs); READ_LIST_FIELD(objname, objname, objname); READ_LIST_FIELD(objargs, objargs, objargs); READ_BOOL_FIELD(args_unspecified, args_unspecified, args_unspecified); return node; } static AccessPriv * _readAccessPriv(OUT_TYPE(AccessPriv, AccessPriv) msg) { AccessPriv *node = makeNode(AccessPriv); READ_STRING_FIELD(priv_name, priv_name, priv_name); READ_LIST_FIELD(cols, cols, cols); return node; } static CreateOpClassItem * _readCreateOpClassItem(OUT_TYPE(CreateOpClassItem, CreateOpClassItem) msg) { CreateOpClassItem *node = makeNode(CreateOpClassItem); READ_INT_FIELD(itemtype, itemtype, itemtype); READ_SPECIFIC_NODE_PTR_FIELD(ObjectWithArgs, object_with_args, name, name, name); READ_INT_FIELD(number, number, number); READ_LIST_FIELD(order_family, order_family, order_family); READ_LIST_FIELD(class_args, class_args, class_args); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, storedtype, storedtype, storedtype); return node; } static TableLikeClause * _readTableLikeClause(OUT_TYPE(TableLikeClause, TableLikeClause) msg) { TableLikeClause *node = makeNode(TableLikeClause); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_UINT_FIELD(options, options, options); READ_UINT_FIELD(relation_oid, relationOid, relationOid); return node; } static FunctionParameter * _readFunctionParameter(OUT_TYPE(FunctionParameter, FunctionParameter) msg) { FunctionParameter *node = makeNode(FunctionParameter); READ_STRING_FIELD(name, name, name); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, arg_type, argType, argType); READ_ENUM_FIELD(FunctionParameterMode, mode, mode, mode); READ_NODE_PTR_FIELD(defexpr, defexpr, defexpr); return node; } static LockingClause * _readLockingClause(OUT_TYPE(LockingClause, LockingClause) msg) { LockingClause *node = makeNode(LockingClause); READ_LIST_FIELD(locked_rels, lockedRels, lockedRels); READ_ENUM_FIELD(LockClauseStrength, strength, strength, strength); READ_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); return node; } static RowMarkClause * _readRowMarkClause(OUT_TYPE(RowMarkClause, RowMarkClause) msg) { RowMarkClause *node = makeNode(RowMarkClause); READ_UINT_FIELD(rti, rti, rti); READ_ENUM_FIELD(LockClauseStrength, strength, strength, strength); READ_ENUM_FIELD(LockWaitPolicy, wait_policy, waitPolicy, waitPolicy); READ_BOOL_FIELD(pushed_down, pushedDown, pushedDown); return node; } static XmlSerialize * _readXmlSerialize(OUT_TYPE(XmlSerialize, XmlSerialize) msg) { XmlSerialize *node = makeNode(XmlSerialize); READ_ENUM_FIELD(XmlOptionType, xmloption, xmloption, xmloption); READ_NODE_PTR_FIELD(expr, expr, expr); READ_SPECIFIC_NODE_PTR_FIELD(TypeName, type_name, type_name, typeName, typeName); READ_INT_FIELD(location, location, location); return node; } static WithClause * _readWithClause(OUT_TYPE(WithClause, WithClause) msg) { WithClause *node = makeNode(WithClause); READ_LIST_FIELD(ctes, ctes, ctes); READ_BOOL_FIELD(recursive, recursive, recursive); READ_INT_FIELD(location, location, location); return node; } static InferClause * _readInferClause(OUT_TYPE(InferClause, InferClause) msg) { InferClause *node = makeNode(InferClause); READ_LIST_FIELD(index_elems, indexElems, indexElems); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_STRING_FIELD(conname, conname, conname); READ_INT_FIELD(location, location, location); return node; } static OnConflictClause * _readOnConflictClause(OUT_TYPE(OnConflictClause, OnConflictClause) msg) { OnConflictClause *node = makeNode(OnConflictClause); READ_ENUM_FIELD(OnConflictAction, action, action, action); READ_SPECIFIC_NODE_PTR_FIELD(InferClause, infer_clause, infer, infer, infer); READ_LIST_FIELD(target_list, targetList, targetList); READ_NODE_PTR_FIELD(where_clause, whereClause, whereClause); READ_INT_FIELD(location, location, location); return node; } static CommonTableExpr * _readCommonTableExpr(OUT_TYPE(CommonTableExpr, CommonTableExpr) msg) { CommonTableExpr *node = makeNode(CommonTableExpr); READ_STRING_FIELD(ctename, ctename, ctename); READ_LIST_FIELD(aliascolnames, aliascolnames, aliascolnames); READ_ENUM_FIELD(CTEMaterialize, ctematerialized, ctematerialized, ctematerialized); READ_NODE_PTR_FIELD(ctequery, ctequery, ctequery); READ_INT_FIELD(location, location, location); READ_BOOL_FIELD(cterecursive, cterecursive, cterecursive); READ_INT_FIELD(cterefcount, cterefcount, cterefcount); READ_LIST_FIELD(ctecolnames, ctecolnames, ctecolnames); READ_LIST_FIELD(ctecoltypes, ctecoltypes, ctecoltypes); READ_LIST_FIELD(ctecoltypmods, ctecoltypmods, ctecoltypmods); READ_LIST_FIELD(ctecolcollations, ctecolcollations, ctecolcollations); return node; } static RoleSpec * _readRoleSpec(OUT_TYPE(RoleSpec, RoleSpec) msg) { RoleSpec *node = makeNode(RoleSpec); READ_ENUM_FIELD(RoleSpecType, roletype, roletype, roletype); READ_STRING_FIELD(rolename, rolename, rolename); READ_INT_FIELD(location, location, location); return node; } static TriggerTransition * _readTriggerTransition(OUT_TYPE(TriggerTransition, TriggerTransition) msg) { TriggerTransition *node = makeNode(TriggerTransition); READ_STRING_FIELD(name, name, name); READ_BOOL_FIELD(is_new, isNew, isNew); READ_BOOL_FIELD(is_table, isTable, isTable); return node; } static PartitionElem * _readPartitionElem(OUT_TYPE(PartitionElem, PartitionElem) msg) { PartitionElem *node = makeNode(PartitionElem); READ_STRING_FIELD(name, name, name); READ_NODE_PTR_FIELD(expr, expr, expr); READ_LIST_FIELD(collation, collation, collation); READ_LIST_FIELD(opclass, opclass, opclass); READ_INT_FIELD(location, location, location); return node; } static PartitionSpec * _readPartitionSpec(OUT_TYPE(PartitionSpec, PartitionSpec) msg) { PartitionSpec *node = makeNode(PartitionSpec); READ_STRING_FIELD(strategy, strategy, strategy); READ_LIST_FIELD(part_params, partParams, partParams); READ_INT_FIELD(location, location, location); return node; } static PartitionBoundSpec * _readPartitionBoundSpec(OUT_TYPE(PartitionBoundSpec, PartitionBoundSpec) msg) { PartitionBoundSpec *node = makeNode(PartitionBoundSpec); READ_CHAR_FIELD(strategy, strategy, strategy); READ_BOOL_FIELD(is_default, is_default, is_default); READ_INT_FIELD(modulus, modulus, modulus); READ_INT_FIELD(remainder, remainder, remainder); READ_LIST_FIELD(listdatums, listdatums, listdatums); READ_LIST_FIELD(lowerdatums, lowerdatums, lowerdatums); READ_LIST_FIELD(upperdatums, upperdatums, upperdatums); READ_INT_FIELD(location, location, location); return node; } static PartitionRangeDatum * _readPartitionRangeDatum(OUT_TYPE(PartitionRangeDatum, PartitionRangeDatum) msg) { PartitionRangeDatum *node = makeNode(PartitionRangeDatum); READ_ENUM_FIELD(PartitionRangeDatumKind, kind, kind, kind); READ_NODE_PTR_FIELD(value, value, value); READ_INT_FIELD(location, location, location); return node; } static PartitionCmd * _readPartitionCmd(OUT_TYPE(PartitionCmd, PartitionCmd) msg) { PartitionCmd *node = makeNode(PartitionCmd); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, name, name, name); READ_SPECIFIC_NODE_PTR_FIELD(PartitionBoundSpec, partition_bound_spec, bound, bound, bound); return node; } static VacuumRelation * _readVacuumRelation(OUT_TYPE(VacuumRelation, VacuumRelation) msg) { VacuumRelation *node = makeNode(VacuumRelation); READ_SPECIFIC_NODE_PTR_FIELD(RangeVar, range_var, relation, relation, relation); READ_UINT_FIELD(oid, oid, oid); READ_LIST_FIELD(va_cols, va_cols, va_cols); return node; } static InlineCodeBlock * _readInlineCodeBlock(OUT_TYPE(InlineCodeBlock, InlineCodeBlock) msg) { InlineCodeBlock *node = makeNode(InlineCodeBlock); READ_STRING_FIELD(source_text, source_text, source_text); READ_UINT_FIELD(lang_oid, langOid, langOid); READ_BOOL_FIELD(lang_is_trusted, langIsTrusted, langIsTrusted); READ_BOOL_FIELD(atomic, atomic, atomic); return node; } static CallContext * _readCallContext(OUT_TYPE(CallContext, CallContext) msg) { CallContext *node = makeNode(CallContext); READ_BOOL_FIELD(atomic, atomic, atomic); return node; } libpg_query-13-2.1.0/src/pg_query_readfuncs_protobuf.c000066400000000000000000000107261413137616400230310ustar00rootroot00000000000000#include "pg_query_readfuncs.h" #include "nodes/nodes.h" #include "nodes/parsenodes.h" #include "nodes/pg_list.h" #include "protobuf/pg_query.pb-c.h" #define OUT_TYPE(typename, typename_c) PgQuery__##typename_c* #define READ_COND(typename, typename_c, typename_underscore, typename_underscore_upcase, typename_cast, outname) \ case PG_QUERY__NODE__NODE_##typename_underscore_upcase: \ return (Node *) _read##typename_c(msg->outname); #define READ_INT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; #define READ_UINT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; #define READ_LONG_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; #define READ_FLOAT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; #define READ_BOOL_FIELD(outname, outname_json, fldname) node->fldname = msg->outname; #define READ_CHAR_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL && strlen(msg->outname) > 0) { \ node->fldname = msg->outname[0]; \ } #define READ_STRING_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL && strlen(msg->outname) > 0) { \ node->fldname = pstrdup(msg->outname); \ } #define READ_ENUM_FIELD(typename, outname, outname_json, fldname) \ node->fldname = _intToEnum##typename(msg->outname); #define READ_LIST_FIELD(outname, outname_json, fldname) \ { \ if (msg->n_##outname > 0) \ node->fldname = list_make1(_readNode(msg->outname[0])); \ for (int i = 1; i < msg->n_##outname; i++) \ node->fldname = lappend(node->fldname, _readNode(msg->outname[i])); \ } #define READ_BITMAPSET_FIELD(outname, outname_json, fldname) // FIXME #define READ_NODE_FIELD(outname, outname_json, fldname) \ node->fldname = *_readNode(msg->outname); #define READ_NODE_PTR_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL) { \ node->fldname = _readNode(msg->outname); \ } #define READ_EXPR_PTR_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL) { \ node->fldname = (Expr *) _readNode(msg->outname); \ } #define READ_VALUE_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL) { \ node->fldname = *((Value *) _readNode(msg->outname)); \ } #define READ_VALUE_PTR_FIELD(outname, outname_json, fldname) \ if (msg->outname != NULL) { \ node->fldname = (Value *) _readNode(msg->outname); \ } #define READ_SPECIFIC_NODE_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ node->fldname = *_read##typename(msg->outname); #define READ_SPECIFIC_NODE_PTR_FIELD(typename, typename_underscore, outname, outname_json, fldname) \ if (msg->outname != NULL) { \ node->fldname = _read##typename(msg->outname); \ } static Node * _readNode(PgQuery__Node *msg); #include "pg_query_enum_defs.c" #include "pg_query_readfuncs_defs.c" static List * _readList(PgQuery__List *msg) { List *node = NULL; if (msg->n_items > 0) node = list_make1(_readNode(msg->items[0])); for (int i = 1; i < msg->n_items; i++) node = lappend(node, _readNode(msg->items[i])); return node; } static Node * _readNode(PgQuery__Node *msg) { switch (msg->node_case) { #include "pg_query_readfuncs_conds.c" case PG_QUERY__NODE__NODE_INTEGER: return (Node *) makeInteger(msg->integer->ival); case PG_QUERY__NODE__NODE_FLOAT: return (Node *) makeFloat(pstrdup(msg->float_->str)); case PG_QUERY__NODE__NODE_STRING: return (Node *) makeString(pstrdup(msg->string->str)); case PG_QUERY__NODE__NODE_BIT_STRING: return (Node *) makeBitString(pstrdup(msg->bit_string->str)); case PG_QUERY__NODE__NODE_NULL: { Value *v = makeNode(Value); v->type = T_Null; return (Node *) v; } case PG_QUERY__NODE__NODE_LIST: return (Node *) _readList(msg->list); case PG_QUERY__NODE__NODE__NOT_SET: return NULL; default: elog(ERROR, "unsupported protobuf node type: %d", (int) msg->node_case); } } List * pg_query_protobuf_to_nodes(PgQueryProtobuf protobuf) { PgQuery__ParseResult *result = NULL; List * list = NULL; size_t i = 0; result = pg_query__parse_result__unpack(NULL, protobuf.len, (const uint8_t *) protobuf.data); // TODO: Handle this by returning an error instead Assert(result != NULL); // TODO: Handle this by returning an error instead Assert(result->version == PG_VERSION_NUM); if (result->n_stmts > 0) list = list_make1(_readRawStmt(result->stmts[0])); for (i = 1; i < result->n_stmts; i++) list = lappend(list, _readRawStmt(result->stmts[i])); pg_query__parse_result__free_unpacked(result, NULL); return list; } libpg_query-13-2.1.0/src/pg_query_scan.c000066400000000000000000000111621413137616400200560ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_internal.h" #include "parser/gramparse.h" #include "lib/stringinfo.h" #include "protobuf/pg_query.pb-c.h" #include #include /* This is ugly. We need to access yyleng outside of scan.l, and casting yyscanner to this internal struct seemed like one way to do it... */ struct yyguts_t { void *yyextra_r; FILE *yyin_r, *yyout_r; size_t yy_buffer_stack_top; /**< index of top of stack. */ size_t yy_buffer_stack_max; /**< capacity of stack. */ struct yy_buffer_state *yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; size_t yy_n_chars; size_t yyleng_r; }; PgQueryScanResult pg_query_scan(const char* input) { MemoryContext ctx = NULL; PgQueryScanResult result = {0}; core_yyscan_t yyscanner; core_yy_extra_type yyextra; core_YYSTYPE yylval; YYLTYPE yylloc; PgQuery__ScanResult scan_result = PG_QUERY__SCAN_RESULT__INIT; PgQuery__ScanToken **output_tokens; size_t token_count = 0; size_t i; ctx = pg_query_enter_memory_context(); MemoryContext parse_context = CurrentMemoryContext; char stderr_buffer[STDERR_BUFFER_LEN + 1] = {0}; #ifndef DEBUG int stderr_global; int stderr_pipe[2]; #endif #ifndef DEBUG // Setup pipe for stderr redirection if (pipe(stderr_pipe) != 0) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to open pipe, too many open file descriptors") result.error = error; return result; } fcntl(stderr_pipe[0], F_SETFL, fcntl(stderr_pipe[0], F_GETFL) | O_NONBLOCK); // Redirect stderr to the pipe stderr_global = dup(STDERR_FILENO); dup2(stderr_pipe[1], STDERR_FILENO); close(stderr_pipe[1]); #endif PG_TRY(); { // Really this is stupid, we only run twice so we can pre-allocate the output array correctly yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); for (;; token_count++) { if (core_yylex(&yylval, &yylloc, yyscanner) == 0) break; } scanner_finish(yyscanner); output_tokens = malloc(sizeof(PgQuery__ScanToken *) * token_count); /* initialize the flex scanner --- should match raw_parser() */ yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); /* Lex tokens */ for (i = 0; ; i++) { int tok; int keyword; tok = core_yylex(&yylval, &yylloc, yyscanner); if (tok == 0) break; output_tokens[i] = malloc(sizeof(PgQuery__ScanToken)); pg_query__scan_token__init(output_tokens[i]); output_tokens[i]->start = yylloc; if (tok == SCONST || tok == BCONST || tok == XCONST || tok == IDENT || tok == C_COMMENT) { output_tokens[i]->end = yyextra.yyllocend; } else { output_tokens[i]->end = yylloc + ((struct yyguts_t*) yyscanner)->yyleng_r; } output_tokens[i]->token = tok; switch (tok) { #define PG_KEYWORD(a,b,c) case b: output_tokens[i]->keyword_kind = c + 1; break; #include "parser/kwlist.h" default: output_tokens[i]->keyword_kind = 0; } } scanner_finish(yyscanner); scan_result.version = PG_VERSION_NUM; scan_result.n_tokens = token_count; scan_result.tokens = output_tokens; result.pbuf.len = pg_query__scan_result__get_packed_size(&scan_result); result.pbuf.data = malloc(result.pbuf.len); pg_query__scan_result__pack(&scan_result, (void*) result.pbuf.data); for (i = 0; i < token_count; i++) { free(output_tokens[i]); } free(output_tokens); #ifndef DEBUG // Save stderr for result read(stderr_pipe[0], stderr_buffer, STDERR_BUFFER_LEN); #endif result.stderr_buffer = strdup(stderr_buffer); } PG_CATCH(); { ErrorData* error_data; PgQueryError* error; MemoryContextSwitchTo(parse_context); error_data = CopyErrorData(); // Note: This is intentionally malloc so exiting the memory context doesn't free this error = malloc(sizeof(PgQueryError)); error->message = strdup(error_data->message); error->filename = strdup(error_data->filename); error->funcname = strdup(error_data->funcname); error->context = NULL; error->lineno = error_data->lineno; error->cursorpos = error_data->cursorpos; result.error = error; FlushErrorState(); } PG_END_TRY(); #ifndef DEBUG // Restore stderr, close pipe dup2(stderr_global, STDERR_FILENO); close(stderr_pipe[0]); close(stderr_global); #endif pg_query_exit_memory_context(ctx); return result; } void pg_query_free_scan_result(PgQueryScanResult result) { if (result.error) { pg_query_free_error(result.error); } free(result.pbuf.data); free(result.stderr_buffer); } libpg_query-13-2.1.0/src/pg_query_split.c000066400000000000000000000135221413137616400202670ustar00rootroot00000000000000#include "pg_query.h" #include "pg_query_internal.h" #include "parser/gramparse.h" #include "lib/stringinfo.h" #include #include PgQuerySplitResult pg_query_split_with_scanner(const char* input) { MemoryContext ctx = NULL; PgQuerySplitResult result = {0}; core_yyscan_t yyscanner; core_yy_extra_type yyextra; core_YYSTYPE yylval; YYLTYPE yylloc; size_t curstmt = 0; bool keyword_before_terminator = false; int stmtstart = 0; bool is_keyword = false; size_t open_parens = 0; ctx = pg_query_enter_memory_context(); MemoryContext parse_context = CurrentMemoryContext; char stderr_buffer[STDERR_BUFFER_LEN + 1] = {0}; #ifndef DEBUG int stderr_global; int stderr_pipe[2]; #endif #ifndef DEBUG // Setup pipe for stderr redirection if (pipe(stderr_pipe) != 0) { PgQueryError* error = malloc(sizeof(PgQueryError)); error->message = strdup("Failed to open pipe, too many open file descriptors") result.error = error; return result; } fcntl(stderr_pipe[0], F_SETFL, fcntl(stderr_pipe[0], F_GETFL) | O_NONBLOCK); // Redirect stderr to the pipe stderr_global = dup(STDERR_FILENO); dup2(stderr_pipe[1], STDERR_FILENO); close(stderr_pipe[1]); #endif PG_TRY(); { // Really this is stupid, we only run twice so we can pre-allocate the output array correctly yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); while (true) { int tok = core_yylex(&yylval, &yylloc, yyscanner); switch (tok) { #define PG_KEYWORD(a,b,c) case b: is_keyword = true; break; #include "parser/kwlist.h" default: is_keyword = false; } if (is_keyword) keyword_before_terminator = true; else if (tok == '(') open_parens++; else if (tok == ')') open_parens--; else if (keyword_before_terminator && open_parens == 0 && (tok == ';' || tok == 0)) { result.n_stmts++; keyword_before_terminator = false; } if (tok == 0) break; } scanner_finish(yyscanner); result.stmts = malloc(sizeof(PgQuerySplitStmt *) * result.n_stmts); // Now actually set the output values keyword_before_terminator = false; open_parens = 0; yyscanner = scanner_init(input, &yyextra, &ScanKeywords, ScanKeywordTokens); while (true) { int tok = core_yylex(&yylval, &yylloc, yyscanner); switch (tok) { #define PG_KEYWORD(a,b,c) case b: is_keyword = true; break; #include "parser/kwlist.h" default: is_keyword = false; } if (is_keyword) keyword_before_terminator = true; else if (tok == '(') open_parens++; else if (tok == ')') open_parens--; else if (keyword_before_terminator && open_parens == 0 && (tok == ';' || tok == 0)) { // Add statement up to the current position result.stmts[curstmt] = malloc(sizeof(PgQuerySplitStmt)); result.stmts[curstmt]->stmt_location = stmtstart; result.stmts[curstmt]->stmt_len = yylloc - stmtstart; stmtstart = yylloc + 1; keyword_before_terminator = false; curstmt++; } else if (open_parens == 0 && tok == ';') // Advance statement start in case we skip an empty statement { stmtstart = yylloc + 1; } if (tok == 0) break; } scanner_finish(yyscanner); #ifndef DEBUG // Save stderr for result read(stderr_pipe[0], stderr_buffer, STDERR_BUFFER_LEN); #endif result.stderr_buffer = strdup(stderr_buffer); } PG_CATCH(); { ErrorData* error_data; PgQueryError* error; MemoryContextSwitchTo(parse_context); error_data = CopyErrorData(); // Note: This is intentionally malloc so exiting the memory context doesn't free this error = malloc(sizeof(PgQueryError)); error->message = strdup(error_data->message); error->filename = strdup(error_data->filename); error->funcname = strdup(error_data->funcname); error->context = NULL; error->lineno = error_data->lineno; error->cursorpos = error_data->cursorpos; result.error = error; FlushErrorState(); } PG_END_TRY(); #ifndef DEBUG // Restore stderr, close pipe dup2(stderr_global, STDERR_FILENO); close(stderr_pipe[0]); close(stderr_global); #endif pg_query_exit_memory_context(ctx); return result; } PgQuerySplitResult pg_query_split_with_parser(const char* input) { MemoryContext ctx = NULL; PgQueryInternalParsetreeAndError parsetree_and_error; PgQuerySplitResult result = {}; ctx = pg_query_enter_memory_context(); parsetree_and_error = pg_query_raw_parse(input); // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now result.stderr_buffer = parsetree_and_error.stderr_buffer; result.error = parsetree_and_error.error; if (parsetree_and_error.tree != NULL) { ListCell *lc; result.n_stmts = list_length(parsetree_and_error.tree); result.stmts = malloc(sizeof(PgQuerySplitStmt*) * result.n_stmts); foreach (lc, parsetree_and_error.tree) { RawStmt *raw_stmt = castNode(RawStmt, lfirst(lc)); result.stmts[foreach_current_index(lc)] = malloc(sizeof(PgQuerySplitStmt)); result.stmts[foreach_current_index(lc)]->stmt_location = raw_stmt->stmt_location; if (raw_stmt->stmt_len == 0) result.stmts[foreach_current_index(lc)]->stmt_len = strlen(input) - raw_stmt->stmt_location; else result.stmts[foreach_current_index(lc)]->stmt_len = raw_stmt->stmt_len; } } else { result.n_stmts = 0; result.stmts = NULL; } pg_query_exit_memory_context(ctx); return result; } void pg_query_free_split_result(PgQuerySplitResult result) { if (result.error) { pg_query_free_error(result.error); } free(result.stderr_buffer); if (result.stmts != NULL) { for (int i = 0; i < result.n_stmts; ++i) { free(result.stmts[i]); } free(result.stmts); } } libpg_query-13-2.1.0/src/postgres/000077500000000000000000000000001413137616400167205ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/guc-file.c000066400000000000000000000000001413137616400205450ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/000077500000000000000000000000001413137616400203435ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/access/000077500000000000000000000000001413137616400216045ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/access/amapi.h000066400000000000000000000172741413137616400230570ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * amapi.h * API for Postgres index access methods. * * Copyright (c) 2015-2020, PostgreSQL Global Development Group * * src/include/access/amapi.h * *------------------------------------------------------------------------- */ #ifndef AMAPI_H #define AMAPI_H #include "access/genam.h" /* * We don't wish to include planner header files here, since most of an index * AM's implementation isn't concerned with those data structures. To allow * declaring amcostestimate_function here, use forward struct references. */ struct PlannerInfo; struct IndexPath; /* Likewise, this file shouldn't depend on execnodes.h. */ struct IndexInfo; /* * Properties for amproperty API. This list covers properties known to the * core code, but an index AM can define its own properties, by matching the * string property name. */ typedef enum IndexAMProperty { AMPROP_UNKNOWN = 0, /* anything not known to core code */ AMPROP_ASC, /* column properties */ AMPROP_DESC, AMPROP_NULLS_FIRST, AMPROP_NULLS_LAST, AMPROP_ORDERABLE, AMPROP_DISTANCE_ORDERABLE, AMPROP_RETURNABLE, AMPROP_SEARCH_ARRAY, AMPROP_SEARCH_NULLS, AMPROP_CLUSTERABLE, /* index properties */ AMPROP_INDEX_SCAN, AMPROP_BITMAP_SCAN, AMPROP_BACKWARD_SCAN, AMPROP_CAN_ORDER, /* AM properties */ AMPROP_CAN_UNIQUE, AMPROP_CAN_MULTI_COL, AMPROP_CAN_EXCLUDE, AMPROP_CAN_INCLUDE } IndexAMProperty; /* * Callback function signatures --- see indexam.sgml for more info. */ /* build new index */ typedef IndexBuildResult *(*ambuild_function) (Relation heapRelation, Relation indexRelation, struct IndexInfo *indexInfo); /* build empty index */ typedef void (*ambuildempty_function) (Relation indexRelation); /* insert this tuple */ typedef bool (*aminsert_function) (Relation indexRelation, Datum *values, bool *isnull, ItemPointer heap_tid, Relation heapRelation, IndexUniqueCheck checkUnique, struct IndexInfo *indexInfo); /* bulk delete */ typedef IndexBulkDeleteResult *(*ambulkdelete_function) (IndexVacuumInfo *info, IndexBulkDeleteResult *stats, IndexBulkDeleteCallback callback, void *callback_state); /* post-VACUUM cleanup */ typedef IndexBulkDeleteResult *(*amvacuumcleanup_function) (IndexVacuumInfo *info, IndexBulkDeleteResult *stats); /* can indexscan return IndexTuples? */ typedef bool (*amcanreturn_function) (Relation indexRelation, int attno); /* estimate cost of an indexscan */ typedef void (*amcostestimate_function) (struct PlannerInfo *root, struct IndexPath *path, double loop_count, Cost *indexStartupCost, Cost *indexTotalCost, Selectivity *indexSelectivity, double *indexCorrelation, double *indexPages); /* parse index reloptions */ typedef bytea *(*amoptions_function) (Datum reloptions, bool validate); /* report AM, index, or index column property */ typedef bool (*amproperty_function) (Oid index_oid, int attno, IndexAMProperty prop, const char *propname, bool *res, bool *isnull); /* name of phase as used in progress reporting */ typedef char *(*ambuildphasename_function) (int64 phasenum); /* validate definition of an opclass for this AM */ typedef bool (*amvalidate_function) (Oid opclassoid); /* prepare for index scan */ typedef IndexScanDesc (*ambeginscan_function) (Relation indexRelation, int nkeys, int norderbys); /* (re)start index scan */ typedef void (*amrescan_function) (IndexScanDesc scan, ScanKey keys, int nkeys, ScanKey orderbys, int norderbys); /* next valid tuple */ typedef bool (*amgettuple_function) (IndexScanDesc scan, ScanDirection direction); /* fetch all valid tuples */ typedef int64 (*amgetbitmap_function) (IndexScanDesc scan, TIDBitmap *tbm); /* end index scan */ typedef void (*amendscan_function) (IndexScanDesc scan); /* mark current scan position */ typedef void (*ammarkpos_function) (IndexScanDesc scan); /* restore marked scan position */ typedef void (*amrestrpos_function) (IndexScanDesc scan); /* * Callback function signatures - for parallel index scans. */ /* estimate size of parallel scan descriptor */ typedef Size (*amestimateparallelscan_function) (void); /* prepare for parallel index scan */ typedef void (*aminitparallelscan_function) (void *target); /* (re)start parallel index scan */ typedef void (*amparallelrescan_function) (IndexScanDesc scan); /* * API struct for an index AM. Note this must be stored in a single palloc'd * chunk of memory. */ typedef struct IndexAmRoutine { NodeTag type; /* * Total number of strategies (operators) by which we can traverse/search * this AM. Zero if AM does not have a fixed set of strategy assignments. */ uint16 amstrategies; /* total number of support functions that this AM uses */ uint16 amsupport; /* opclass options support function number or 0 */ uint16 amoptsprocnum; /* does AM support ORDER BY indexed column's value? */ bool amcanorder; /* does AM support ORDER BY result of an operator on indexed column? */ bool amcanorderbyop; /* does AM support backward scanning? */ bool amcanbackward; /* does AM support UNIQUE indexes? */ bool amcanunique; /* does AM support multi-column indexes? */ bool amcanmulticol; /* does AM require scans to have a constraint on the first index column? */ bool amoptionalkey; /* does AM handle ScalarArrayOpExpr quals? */ bool amsearcharray; /* does AM handle IS NULL/IS NOT NULL quals? */ bool amsearchnulls; /* can index storage data type differ from column data type? */ bool amstorage; /* can an index of this type be clustered on? */ bool amclusterable; /* does AM handle predicate locks? */ bool ampredlocks; /* does AM support parallel scan? */ bool amcanparallel; /* does AM support columns included with clause INCLUDE? */ bool amcaninclude; /* does AM use maintenance_work_mem? */ bool amusemaintenanceworkmem; /* OR of parallel vacuum flags. See vacuum.h for flags. */ uint8 amparallelvacuumoptions; /* type of data stored in index, or InvalidOid if variable */ Oid amkeytype; /* * If you add new properties to either the above or the below lists, then * they should also (usually) be exposed via the property API (see * IndexAMProperty at the top of the file, and utils/adt/amutils.c). */ /* interface functions */ ambuild_function ambuild; ambuildempty_function ambuildempty; aminsert_function aminsert; ambulkdelete_function ambulkdelete; amvacuumcleanup_function amvacuumcleanup; amcanreturn_function amcanreturn; /* can be NULL */ amcostestimate_function amcostestimate; amoptions_function amoptions; amproperty_function amproperty; /* can be NULL */ ambuildphasename_function ambuildphasename; /* can be NULL */ amvalidate_function amvalidate; ambeginscan_function ambeginscan; amrescan_function amrescan; amgettuple_function amgettuple; /* can be NULL */ amgetbitmap_function amgetbitmap; /* can be NULL */ amendscan_function amendscan; ammarkpos_function ammarkpos; /* can be NULL */ amrestrpos_function amrestrpos; /* can be NULL */ /* interface functions to support parallel index scans */ amestimateparallelscan_function amestimateparallelscan; /* can be NULL */ aminitparallelscan_function aminitparallelscan; /* can be NULL */ amparallelrescan_function amparallelrescan; /* can be NULL */ } IndexAmRoutine; /* Functions in access/index/amapi.c */ extern IndexAmRoutine *GetIndexAmRoutine(Oid amhandler); extern IndexAmRoutine *GetIndexAmRoutineByAmId(Oid amoid, bool noerror); #endif /* AMAPI_H */ libpg_query-13-2.1.0/src/postgres/include/access/attmap.h000066400000000000000000000031701413137616400232440ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * attmap.h * Definitions for PostgreSQL attribute mappings * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/attmap.h * *------------------------------------------------------------------------- */ #ifndef ATTMAP_H #define ATTMAP_H #include "access/attnum.h" #include "access/tupdesc.h" /* * Attribute mapping structure * * This maps attribute numbers between a pair of relations, designated * 'input' and 'output' (most typically inheritance parent and child * relations), whose common columns may have different attribute numbers. * Such difference may arise due to the columns being ordered differently * in the two relations or the two relations having dropped columns at * different positions. * * 'maplen' is set to the number of attributes of the 'output' relation, * taking into account any of its dropped attributes, with the corresponding * elements of the 'attnums' array set to 0. */ typedef struct AttrMap { AttrNumber *attnums; int maplen; } AttrMap; extern AttrMap *make_attrmap(int maplen); extern void free_attrmap(AttrMap *map); /* Conversion routines to build mappings */ extern AttrMap *build_attrmap_by_name(TupleDesc indesc, TupleDesc outdesc); extern AttrMap *build_attrmap_by_name_if_req(TupleDesc indesc, TupleDesc outdesc); extern AttrMap *build_attrmap_by_position(TupleDesc indesc, TupleDesc outdesc, const char *msg); #endif /* ATTMAP_H */ libpg_query-13-2.1.0/src/postgres/include/access/attnum.h000066400000000000000000000030141413137616400232630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * attnum.h * POSTGRES attribute number definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/attnum.h * *------------------------------------------------------------------------- */ #ifndef ATTNUM_H #define ATTNUM_H /* * user defined attribute numbers start at 1. -ay 2/95 */ typedef int16 AttrNumber; #define InvalidAttrNumber 0 #define MaxAttrNumber 32767 /* ---------------- * support macros * ---------------- */ /* * AttributeNumberIsValid * True iff the attribute number is valid. */ #define AttributeNumberIsValid(attributeNumber) \ ((bool) ((attributeNumber) != InvalidAttrNumber)) /* * AttrNumberIsForUserDefinedAttr * True iff the attribute number corresponds to an user defined attribute. */ #define AttrNumberIsForUserDefinedAttr(attributeNumber) \ ((bool) ((attributeNumber) > 0)) /* * AttrNumberGetAttrOffset * Returns the attribute offset for an attribute number. * * Note: * Assumes the attribute number is for a user defined attribute. */ #define AttrNumberGetAttrOffset(attNum) \ ( \ AssertMacro(AttrNumberIsForUserDefinedAttr(attNum)), \ ((attNum) - 1) \ ) /* * AttrOffsetGetAttrNumber * Returns the attribute number for an attribute offset. */ #define AttrOffsetGetAttrNumber(attributeOffset) \ ((AttrNumber) (1 + (attributeOffset))) #endif /* ATTNUM_H */ libpg_query-13-2.1.0/src/postgres/include/access/clog.h000066400000000000000000000032741413137616400227070ustar00rootroot00000000000000/* * clog.h * * PostgreSQL transaction-commit-log manager * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/clog.h */ #ifndef CLOG_H #define CLOG_H #include "access/xlogreader.h" #include "lib/stringinfo.h" /* * Possible transaction statuses --- note that all-zeroes is the initial * state. * * A "subcommitted" transaction is a committed subtransaction whose parent * hasn't committed or aborted yet. */ typedef int XidStatus; #define TRANSACTION_STATUS_IN_PROGRESS 0x00 #define TRANSACTION_STATUS_COMMITTED 0x01 #define TRANSACTION_STATUS_ABORTED 0x02 #define TRANSACTION_STATUS_SUB_COMMITTED 0x03 typedef struct xl_clog_truncate { int pageno; TransactionId oldestXact; Oid oldestXactDb; } xl_clog_truncate; extern void TransactionIdSetTreeStatus(TransactionId xid, int nsubxids, TransactionId *subxids, XidStatus status, XLogRecPtr lsn); extern XidStatus TransactionIdGetStatus(TransactionId xid, XLogRecPtr *lsn); extern Size CLOGShmemBuffers(void); extern Size CLOGShmemSize(void); extern void CLOGShmemInit(void); extern void BootStrapCLOG(void); extern void StartupCLOG(void); extern void TrimCLOG(void); extern void ShutdownCLOG(void); extern void CheckPointCLOG(void); extern void ExtendCLOG(TransactionId newestXact); extern void TruncateCLOG(TransactionId oldestXact, Oid oldestxid_datoid); /* XLOG stuff */ #define CLOG_ZEROPAGE 0x00 #define CLOG_TRUNCATE 0x10 extern void clog_redo(XLogReaderState *record); extern void clog_desc(StringInfo buf, XLogReaderState *record); extern const char *clog_identify(uint8 info); #endif /* CLOG_H */ libpg_query-13-2.1.0/src/postgres/include/access/commit_ts.h000066400000000000000000000045101413137616400237530ustar00rootroot00000000000000/* * commit_ts.h * * PostgreSQL commit timestamp manager * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/commit_ts.h */ #ifndef COMMIT_TS_H #define COMMIT_TS_H #include "access/xlog.h" #include "datatype/timestamp.h" #include "replication/origin.h" #include "utils/guc.h" extern PGDLLIMPORT bool track_commit_timestamp; extern bool check_track_commit_timestamp(bool *newval, void **extra, GucSource source); extern void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids, TransactionId *subxids, TimestampTz timestamp, RepOriginId nodeid, bool write_xlog); extern bool TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts, RepOriginId *nodeid); extern TransactionId GetLatestCommitTsData(TimestampTz *ts, RepOriginId *nodeid); extern Size CommitTsShmemBuffers(void); extern Size CommitTsShmemSize(void); extern void CommitTsShmemInit(void); extern void BootStrapCommitTs(void); extern void StartupCommitTs(void); extern void CommitTsParameterChange(bool newvalue, bool oldvalue); extern void CompleteCommitTsInitialization(void); extern void ShutdownCommitTs(void); extern void CheckPointCommitTs(void); extern void ExtendCommitTs(TransactionId newestXact); extern void TruncateCommitTs(TransactionId oldestXact); extern void SetCommitTsLimit(TransactionId oldestXact, TransactionId newestXact); extern void AdvanceOldestCommitTsXid(TransactionId oldestXact); /* XLOG stuff */ #define COMMIT_TS_ZEROPAGE 0x00 #define COMMIT_TS_TRUNCATE 0x10 #define COMMIT_TS_SETTS 0x20 typedef struct xl_commit_ts_set { TimestampTz timestamp; RepOriginId nodeid; TransactionId mainxid; /* subxact Xids follow */ } xl_commit_ts_set; #define SizeOfCommitTsSet (offsetof(xl_commit_ts_set, mainxid) + \ sizeof(TransactionId)) typedef struct xl_commit_ts_truncate { int pageno; TransactionId oldestXid; } xl_commit_ts_truncate; #define SizeOfCommitTsTruncate (offsetof(xl_commit_ts_truncate, oldestXid) + \ sizeof(TransactionId)) extern void commit_ts_redo(XLogReaderState *record); extern void commit_ts_desc(StringInfo buf, XLogReaderState *record); extern const char *commit_ts_identify(uint8 info); #endif /* COMMIT_TS_H */ libpg_query-13-2.1.0/src/postgres/include/access/detoast.h000066400000000000000000000055661413137616400234340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * detoast.h * Access to compressed and external varlena values. * * Copyright (c) 2000-2020, PostgreSQL Global Development Group * * src/include/access/detoast.h * *------------------------------------------------------------------------- */ #ifndef DETOAST_H #define DETOAST_H /* * Testing whether an externally-stored value is compressed now requires * comparing extsize (the actual length of the external data) to rawsize * (the original uncompressed datum's size). The latter includes VARHDRSZ * overhead, the former doesn't. We never use compression unless it actually * saves space, so we expect either equality or less-than. */ #define VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer) \ ((toast_pointer).va_extsize < (toast_pointer).va_rawsize - VARHDRSZ) /* * Macro to fetch the possibly-unaligned contents of an EXTERNAL datum * into a local "struct varatt_external" toast pointer. This should be * just a memcpy, but some versions of gcc seem to produce broken code * that assumes the datum contents are aligned. Introducing an explicit * intermediate "varattrib_1b_e *" variable seems to fix it. */ #define VARATT_EXTERNAL_GET_POINTER(toast_pointer, attr) \ do { \ varattrib_1b_e *attre = (varattrib_1b_e *) (attr); \ Assert(VARATT_IS_EXTERNAL(attre)); \ Assert(VARSIZE_EXTERNAL(attre) == sizeof(toast_pointer) + VARHDRSZ_EXTERNAL); \ memcpy(&(toast_pointer), VARDATA_EXTERNAL(attre), sizeof(toast_pointer)); \ } while (0) /* Size of an EXTERNAL datum that contains a standard TOAST pointer */ #define TOAST_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_external)) /* Size of an EXTERNAL datum that contains an indirection pointer */ #define INDIRECT_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_indirect)) /* ---------- * detoast_external_attr() - * * Fetches an external stored attribute from the toast * relation. Does NOT decompress it, if stored external * in compressed format. * ---------- */ extern struct varlena *detoast_external_attr(struct varlena *attr); /* ---------- * detoast_attr() - * * Fully detoasts one attribute, fetching and/or decompressing * it as needed. * ---------- */ extern struct varlena *detoast_attr(struct varlena *attr); /* ---------- * detoast_attr_slice() - * * Fetches only the specified portion of an attribute. * (Handles all cases for attribute storage) * ---------- */ extern struct varlena *detoast_attr_slice(struct varlena *attr, int32 sliceoffset, int32 slicelength); /* ---------- * toast_raw_datum_size - * * Return the raw (detoasted) size of a varlena datum * ---------- */ extern Size toast_raw_datum_size(Datum value); /* ---------- * toast_datum_size - * * Return the storage size of a varlena datum * ---------- */ extern Size toast_datum_size(Datum value); #endif /* DETOAST_H */ libpg_query-13-2.1.0/src/postgres/include/access/genam.h000066400000000000000000000214721413137616400230520ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * genam.h * POSTGRES generalized index access method definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/genam.h * *------------------------------------------------------------------------- */ #ifndef GENAM_H #define GENAM_H #include "access/sdir.h" #include "access/skey.h" #include "nodes/tidbitmap.h" #include "storage/lockdefs.h" #include "utils/relcache.h" #include "utils/snapshot.h" /* We don't want this file to depend on execnodes.h. */ struct IndexInfo; /* * Struct for statistics returned by ambuild */ typedef struct IndexBuildResult { double heap_tuples; /* # of tuples seen in parent table */ double index_tuples; /* # of tuples inserted into index */ } IndexBuildResult; /* * Struct for input arguments passed to ambulkdelete and amvacuumcleanup * * num_heap_tuples is accurate only when estimated_count is false; * otherwise it's just an estimate (currently, the estimate is the * prior value of the relation's pg_class.reltuples field). It will * always just be an estimate during ambulkdelete. */ typedef struct IndexVacuumInfo { Relation index; /* the index being vacuumed */ bool analyze_only; /* ANALYZE (without any actual vacuum) */ bool report_progress; /* emit progress.h status reports */ bool estimated_count; /* num_heap_tuples is an estimate */ int message_level; /* ereport level for progress messages */ double num_heap_tuples; /* tuples remaining in heap */ BufferAccessStrategy strategy; /* access strategy for reads */ } IndexVacuumInfo; /* * Struct for statistics returned by ambulkdelete and amvacuumcleanup * * This struct is normally allocated by the first ambulkdelete call and then * passed along through subsequent ones until amvacuumcleanup; however, * amvacuumcleanup must be prepared to allocate it in the case where no * ambulkdelete calls were made (because no tuples needed deletion). * Note that an index AM could choose to return a larger struct * of which this is just the first field; this provides a way for ambulkdelete * to communicate additional private data to amvacuumcleanup. * * Note: pages_removed is the amount by which the index physically shrank, * if any (ie the change in its total size on disk). pages_deleted and * pages_free refer to free space within the index file. Some index AMs * may compute num_index_tuples by reference to num_heap_tuples, in which * case they should copy the estimated_count field from IndexVacuumInfo. */ typedef struct IndexBulkDeleteResult { BlockNumber num_pages; /* pages remaining in index */ BlockNumber pages_removed; /* # removed during vacuum operation */ bool estimated_count; /* num_index_tuples is an estimate */ double num_index_tuples; /* tuples remaining */ double tuples_removed; /* # removed during vacuum operation */ BlockNumber pages_deleted; /* # unused pages in index */ BlockNumber pages_free; /* # pages available for reuse */ } IndexBulkDeleteResult; /* Typedef for callback function to determine if a tuple is bulk-deletable */ typedef bool (*IndexBulkDeleteCallback) (ItemPointer itemptr, void *state); /* struct definitions appear in relscan.h */ typedef struct IndexScanDescData *IndexScanDesc; typedef struct SysScanDescData *SysScanDesc; typedef struct ParallelIndexScanDescData *ParallelIndexScanDesc; /* * Enumeration specifying the type of uniqueness check to perform in * index_insert(). * * UNIQUE_CHECK_YES is the traditional Postgres immediate check, possibly * blocking to see if a conflicting transaction commits. * * For deferrable unique constraints, UNIQUE_CHECK_PARTIAL is specified at * insertion time. The index AM should test if the tuple is unique, but * should not throw error, block, or prevent the insertion if the tuple * appears not to be unique. We'll recheck later when it is time for the * constraint to be enforced. The AM must return true if the tuple is * known unique, false if it is possibly non-unique. In the "true" case * it is safe to omit the later recheck. * * When it is time to recheck the deferred constraint, a pseudo-insertion * call is made with UNIQUE_CHECK_EXISTING. The tuple is already in the * index in this case, so it should not be inserted again. Rather, just * check for conflicting live tuples (possibly blocking). */ typedef enum IndexUniqueCheck { UNIQUE_CHECK_NO, /* Don't do any uniqueness checking */ UNIQUE_CHECK_YES, /* Enforce uniqueness at insertion time */ UNIQUE_CHECK_PARTIAL, /* Test uniqueness, but no error */ UNIQUE_CHECK_EXISTING /* Check if existing tuple is unique */ } IndexUniqueCheck; /* Nullable "ORDER BY col op const" distance */ typedef struct IndexOrderByDistance { double value; bool isnull; } IndexOrderByDistance; /* * generalized index_ interface routines (in indexam.c) */ /* * IndexScanIsValid * True iff the index scan is valid. */ #define IndexScanIsValid(scan) PointerIsValid(scan) extern Relation index_open(Oid relationId, LOCKMODE lockmode); extern void index_close(Relation relation, LOCKMODE lockmode); extern bool index_insert(Relation indexRelation, Datum *values, bool *isnull, ItemPointer heap_t_ctid, Relation heapRelation, IndexUniqueCheck checkUnique, struct IndexInfo *indexInfo); extern IndexScanDesc index_beginscan(Relation heapRelation, Relation indexRelation, Snapshot snapshot, int nkeys, int norderbys); extern IndexScanDesc index_beginscan_bitmap(Relation indexRelation, Snapshot snapshot, int nkeys); extern void index_rescan(IndexScanDesc scan, ScanKey keys, int nkeys, ScanKey orderbys, int norderbys); extern void index_endscan(IndexScanDesc scan); extern void index_markpos(IndexScanDesc scan); extern void index_restrpos(IndexScanDesc scan); extern Size index_parallelscan_estimate(Relation indexrel, Snapshot snapshot); extern void index_parallelscan_initialize(Relation heaprel, Relation indexrel, Snapshot snapshot, ParallelIndexScanDesc target); extern void index_parallelrescan(IndexScanDesc scan); extern IndexScanDesc index_beginscan_parallel(Relation heaprel, Relation indexrel, int nkeys, int norderbys, ParallelIndexScanDesc pscan); extern ItemPointer index_getnext_tid(IndexScanDesc scan, ScanDirection direction); struct TupleTableSlot; extern bool index_fetch_heap(IndexScanDesc scan, struct TupleTableSlot *slot); extern bool index_getnext_slot(IndexScanDesc scan, ScanDirection direction, struct TupleTableSlot *slot); extern int64 index_getbitmap(IndexScanDesc scan, TIDBitmap *bitmap); extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, IndexBulkDeleteCallback callback, void *callback_state); extern IndexBulkDeleteResult *index_vacuum_cleanup(IndexVacuumInfo *info, IndexBulkDeleteResult *stats); extern bool index_can_return(Relation indexRelation, int attno); extern RegProcedure index_getprocid(Relation irel, AttrNumber attnum, uint16 procnum); extern FmgrInfo *index_getprocinfo(Relation irel, AttrNumber attnum, uint16 procnum); extern void index_store_float8_orderby_distances(IndexScanDesc scan, Oid *orderByTypes, IndexOrderByDistance *distances, bool recheckOrderBy); extern bytea *index_opclass_options(Relation relation, AttrNumber attnum, Datum attoptions, bool validate); /* * index access method support routines (in genam.c) */ extern IndexScanDesc RelationGetIndexScan(Relation indexRelation, int nkeys, int norderbys); extern void IndexScanEnd(IndexScanDesc scan); extern char *BuildIndexValueDescription(Relation indexRelation, Datum *values, bool *isnull); extern TransactionId index_compute_xid_horizon_for_tuples(Relation irel, Relation hrel, Buffer ibuf, OffsetNumber *itemnos, int nitems); /* * heap-or-index access to system catalogs (in genam.c) */ extern SysScanDesc systable_beginscan(Relation heapRelation, Oid indexId, bool indexOK, Snapshot snapshot, int nkeys, ScanKey key); extern HeapTuple systable_getnext(SysScanDesc sysscan); extern bool systable_recheck_tuple(SysScanDesc sysscan, HeapTuple tup); extern void systable_endscan(SysScanDesc sysscan); extern SysScanDesc systable_beginscan_ordered(Relation heapRelation, Relation indexRelation, Snapshot snapshot, int nkeys, ScanKey key); extern HeapTuple systable_getnext_ordered(SysScanDesc sysscan, ScanDirection direction); extern void systable_endscan_ordered(SysScanDesc sysscan); #endif /* GENAM_H */ libpg_query-13-2.1.0/src/postgres/include/access/gin.h000066400000000000000000000042171413137616400225360ustar00rootroot00000000000000/*-------------------------------------------------------------------------- * gin.h * Public header file for Generalized Inverted Index access method. * * Copyright (c) 2006-2020, PostgreSQL Global Development Group * * src/include/access/gin.h *-------------------------------------------------------------------------- */ #ifndef GIN_H #define GIN_H #include "access/xlogreader.h" #include "lib/stringinfo.h" #include "storage/block.h" #include "utils/relcache.h" /* * amproc indexes for inverted indexes. */ #define GIN_COMPARE_PROC 1 #define GIN_EXTRACTVALUE_PROC 2 #define GIN_EXTRACTQUERY_PROC 3 #define GIN_CONSISTENT_PROC 4 #define GIN_COMPARE_PARTIAL_PROC 5 #define GIN_TRICONSISTENT_PROC 6 #define GIN_OPTIONS_PROC 7 #define GINNProcs 7 /* * searchMode settings for extractQueryFn. */ #define GIN_SEARCH_MODE_DEFAULT 0 #define GIN_SEARCH_MODE_INCLUDE_EMPTY 1 #define GIN_SEARCH_MODE_ALL 2 #define GIN_SEARCH_MODE_EVERYTHING 3 /* for internal use only */ /* * GinStatsData represents stats data for planner use */ typedef struct GinStatsData { BlockNumber nPendingPages; BlockNumber nTotalPages; BlockNumber nEntryPages; BlockNumber nDataPages; int64 nEntries; int32 ginVersion; } GinStatsData; /* * A ternary value used by tri-consistent functions. * * This must be of the same size as a bool because some code will cast a * pointer to a bool to a pointer to a GinTernaryValue. */ typedef char GinTernaryValue; #define GIN_FALSE 0 /* item is not present / does not match */ #define GIN_TRUE 1 /* item is present / matches */ #define GIN_MAYBE 2 /* don't know if item is present / don't know * if matches */ #define DatumGetGinTernaryValue(X) ((GinTernaryValue)(X)) #define GinTernaryValueGetDatum(X) ((Datum)(X)) #define PG_RETURN_GIN_TERNARY_VALUE(x) return GinTernaryValueGetDatum(x) /* GUC parameters */ extern PGDLLIMPORT int GinFuzzySearchLimit; extern int gin_pending_list_limit; /* ginutil.c */ extern void ginGetStats(Relation index, GinStatsData *stats); extern void ginUpdateStats(Relation index, const GinStatsData *stats, bool is_build); #endif /* GIN_H */ libpg_query-13-2.1.0/src/postgres/include/access/htup.h000066400000000000000000000063141413137616400227410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * htup.h * POSTGRES heap tuple definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/htup.h * *------------------------------------------------------------------------- */ #ifndef HTUP_H #define HTUP_H #include "storage/itemptr.h" /* typedefs and forward declarations for structs defined in htup_details.h */ typedef struct HeapTupleHeaderData HeapTupleHeaderData; typedef HeapTupleHeaderData *HeapTupleHeader; typedef struct MinimalTupleData MinimalTupleData; typedef MinimalTupleData *MinimalTuple; /* * HeapTupleData is an in-memory data structure that points to a tuple. * * There are several ways in which this data structure is used: * * * Pointer to a tuple in a disk buffer: t_data points directly into the * buffer (which the code had better be holding a pin on, but this is not * reflected in HeapTupleData itself). * * * Pointer to nothing: t_data is NULL. This is used as a failure indication * in some functions. * * * Part of a palloc'd tuple: the HeapTupleData itself and the tuple * form a single palloc'd chunk. t_data points to the memory location * immediately following the HeapTupleData struct (at offset HEAPTUPLESIZE). * This is the output format of heap_form_tuple and related routines. * * * Separately allocated tuple: t_data points to a palloc'd chunk that * is not adjacent to the HeapTupleData. (This case is deprecated since * it's difficult to tell apart from case #1. It should be used only in * limited contexts where the code knows that case #1 will never apply.) * * * Separately allocated minimal tuple: t_data points MINIMAL_TUPLE_OFFSET * bytes before the start of a MinimalTuple. As with the previous case, * this can't be told apart from case #1 by inspection; code setting up * or destroying this representation has to know what it's doing. * * t_len should always be valid, except in the pointer-to-nothing case. * t_self and t_tableOid should be valid if the HeapTupleData points to * a disk buffer, or if it represents a copy of a tuple on disk. They * should be explicitly set invalid in manufactured tuples. */ typedef struct HeapTupleData { uint32 t_len; /* length of *t_data */ ItemPointerData t_self; /* SelfItemPointer */ Oid t_tableOid; /* table the tuple came from */ #define FIELDNO_HEAPTUPLEDATA_DATA 3 HeapTupleHeader t_data; /* -> tuple header and data */ } HeapTupleData; typedef HeapTupleData *HeapTuple; #define HEAPTUPLESIZE MAXALIGN(sizeof(HeapTupleData)) /* * Accessor macros to be used with HeapTuple pointers. */ #define HeapTupleIsValid(tuple) PointerIsValid(tuple) /* HeapTupleHeader functions implemented in utils/time/combocid.c */ extern CommandId HeapTupleHeaderGetCmin(HeapTupleHeader tup); extern CommandId HeapTupleHeaderGetCmax(HeapTupleHeader tup); extern void HeapTupleHeaderAdjustCmax(HeapTupleHeader tup, CommandId *cmax, bool *iscombo); /* Prototype for HeapTupleHeader accessors in heapam.c */ extern TransactionId HeapTupleGetUpdateXid(HeapTupleHeader tuple); #endif /* HTUP_H */ libpg_query-13-2.1.0/src/postgres/include/access/htup_details.h000066400000000000000000000723461413137616400244560ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * htup_details.h * POSTGRES heap tuple header definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/htup_details.h * *------------------------------------------------------------------------- */ #ifndef HTUP_DETAILS_H #define HTUP_DETAILS_H #include "access/htup.h" #include "access/transam.h" #include "access/tupdesc.h" #include "access/tupmacs.h" #include "storage/bufpage.h" /* * MaxTupleAttributeNumber limits the number of (user) columns in a tuple. * The key limit on this value is that the size of the fixed overhead for * a tuple, plus the size of the null-values bitmap (at 1 bit per column), * plus MAXALIGN alignment, must fit into t_hoff which is uint8. On most * machines the upper limit without making t_hoff wider would be a little * over 1700. We use round numbers here and for MaxHeapAttributeNumber * so that alterations in HeapTupleHeaderData layout won't change the * supported max number of columns. */ #define MaxTupleAttributeNumber 1664 /* 8 * 208 */ /* * MaxHeapAttributeNumber limits the number of (user) columns in a table. * This should be somewhat less than MaxTupleAttributeNumber. It must be * at least one less, else we will fail to do UPDATEs on a maximal-width * table (because UPDATE has to form working tuples that include CTID). * In practice we want some additional daylight so that we can gracefully * support operations that add hidden "resjunk" columns, for example * SELECT * FROM wide_table ORDER BY foo, bar, baz. * In any case, depending on column data types you will likely be running * into the disk-block-based limit on overall tuple size if you have more * than a thousand or so columns. TOAST won't help. */ #define MaxHeapAttributeNumber 1600 /* 8 * 200 */ /* * Heap tuple header. To avoid wasting space, the fields should be * laid out in such a way as to avoid structure padding. * * Datums of composite types (row types) share the same general structure * as on-disk tuples, so that the same routines can be used to build and * examine them. However the requirements are slightly different: a Datum * does not need any transaction visibility information, and it does need * a length word and some embedded type information. We can achieve this * by overlaying the xmin/cmin/xmax/cmax/xvac fields of a heap tuple * with the fields needed in the Datum case. Typically, all tuples built * in-memory will be initialized with the Datum fields; but when a tuple is * about to be inserted in a table, the transaction fields will be filled, * overwriting the datum fields. * * The overall structure of a heap tuple looks like: * fixed fields (HeapTupleHeaderData struct) * nulls bitmap (if HEAP_HASNULL is set in t_infomask) * alignment padding (as needed to make user data MAXALIGN'd) * object ID (if HEAP_HASOID_OLD is set in t_infomask, not created * anymore) * user data fields * * We store five "virtual" fields Xmin, Cmin, Xmax, Cmax, and Xvac in three * physical fields. Xmin and Xmax are always really stored, but Cmin, Cmax * and Xvac share a field. This works because we know that Cmin and Cmax * are only interesting for the lifetime of the inserting and deleting * transaction respectively. If a tuple is inserted and deleted in the same * transaction, we store a "combo" command id that can be mapped to the real * cmin and cmax, but only by use of local state within the originating * backend. See combocid.c for more details. Meanwhile, Xvac is only set by * old-style VACUUM FULL, which does not have any command sub-structure and so * does not need either Cmin or Cmax. (This requires that old-style VACUUM * FULL never try to move a tuple whose Cmin or Cmax is still interesting, * ie, an insert-in-progress or delete-in-progress tuple.) * * A word about t_ctid: whenever a new tuple is stored on disk, its t_ctid * is initialized with its own TID (location). If the tuple is ever updated, * its t_ctid is changed to point to the replacement version of the tuple. Or * if the tuple is moved from one partition to another, due to an update of * the partition key, t_ctid is set to a special value to indicate that * (see ItemPointerSetMovedPartitions). Thus, a tuple is the latest version * of its row iff XMAX is invalid or * t_ctid points to itself (in which case, if XMAX is valid, the tuple is * either locked or deleted). One can follow the chain of t_ctid links * to find the newest version of the row, unless it was moved to a different * partition. Beware however that VACUUM might * erase the pointed-to (newer) tuple before erasing the pointing (older) * tuple. Hence, when following a t_ctid link, it is necessary to check * to see if the referenced slot is empty or contains an unrelated tuple. * Check that the referenced tuple has XMIN equal to the referencing tuple's * XMAX to verify that it is actually the descendant version and not an * unrelated tuple stored into a slot recently freed by VACUUM. If either * check fails, one may assume that there is no live descendant version. * * t_ctid is sometimes used to store a speculative insertion token, instead * of a real TID. A speculative token is set on a tuple that's being * inserted, until the inserter is sure that it wants to go ahead with the * insertion. Hence a token should only be seen on a tuple with an XMAX * that's still in-progress, or invalid/aborted. The token is replaced with * the tuple's real TID when the insertion is confirmed. One should never * see a speculative insertion token while following a chain of t_ctid links, * because they are not used on updates, only insertions. * * Following the fixed header fields, the nulls bitmap is stored (beginning * at t_bits). The bitmap is *not* stored if t_infomask shows that there * are no nulls in the tuple. If an OID field is present (as indicated by * t_infomask), then it is stored just before the user data, which begins at * the offset shown by t_hoff. Note that t_hoff must be a multiple of * MAXALIGN. */ typedef struct HeapTupleFields { TransactionId t_xmin; /* inserting xact ID */ TransactionId t_xmax; /* deleting or locking xact ID */ union { CommandId t_cid; /* inserting or deleting command ID, or both */ TransactionId t_xvac; /* old-style VACUUM FULL xact ID */ } t_field3; } HeapTupleFields; typedef struct DatumTupleFields { int32 datum_len_; /* varlena header (do not touch directly!) */ int32 datum_typmod; /* -1, or identifier of a record type */ Oid datum_typeid; /* composite type OID, or RECORDOID */ /* * datum_typeid cannot be a domain over composite, only plain composite, * even if the datum is meant as a value of a domain-over-composite type. * This is in line with the general principle that CoerceToDomain does not * change the physical representation of the base type value. * * Note: field ordering is chosen with thought that Oid might someday * widen to 64 bits. */ } DatumTupleFields; struct HeapTupleHeaderData { union { HeapTupleFields t_heap; DatumTupleFields t_datum; } t_choice; ItemPointerData t_ctid; /* current TID of this or newer tuple (or a * speculative insertion token) */ /* Fields below here must match MinimalTupleData! */ #define FIELDNO_HEAPTUPLEHEADERDATA_INFOMASK2 2 uint16 t_infomask2; /* number of attributes + various flags */ #define FIELDNO_HEAPTUPLEHEADERDATA_INFOMASK 3 uint16 t_infomask; /* various flag bits, see below */ #define FIELDNO_HEAPTUPLEHEADERDATA_HOFF 4 uint8 t_hoff; /* sizeof header incl. bitmap, padding */ /* ^ - 23 bytes - ^ */ #define FIELDNO_HEAPTUPLEHEADERDATA_BITS 5 bits8 t_bits[FLEXIBLE_ARRAY_MEMBER]; /* bitmap of NULLs */ /* MORE DATA FOLLOWS AT END OF STRUCT */ }; /* typedef appears in htup.h */ #define SizeofHeapTupleHeader offsetof(HeapTupleHeaderData, t_bits) /* * information stored in t_infomask: */ #define HEAP_HASNULL 0x0001 /* has null attribute(s) */ #define HEAP_HASVARWIDTH 0x0002 /* has variable-width attribute(s) */ #define HEAP_HASEXTERNAL 0x0004 /* has external stored attribute(s) */ #define HEAP_HASOID_OLD 0x0008 /* has an object-id field */ #define HEAP_XMAX_KEYSHR_LOCK 0x0010 /* xmax is a key-shared locker */ #define HEAP_COMBOCID 0x0020 /* t_cid is a combo cid */ #define HEAP_XMAX_EXCL_LOCK 0x0040 /* xmax is exclusive locker */ #define HEAP_XMAX_LOCK_ONLY 0x0080 /* xmax, if valid, is only a locker */ /* xmax is a shared locker */ #define HEAP_XMAX_SHR_LOCK (HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_KEYSHR_LOCK) #define HEAP_LOCK_MASK (HEAP_XMAX_SHR_LOCK | HEAP_XMAX_EXCL_LOCK | \ HEAP_XMAX_KEYSHR_LOCK) #define HEAP_XMIN_COMMITTED 0x0100 /* t_xmin committed */ #define HEAP_XMIN_INVALID 0x0200 /* t_xmin invalid/aborted */ #define HEAP_XMIN_FROZEN (HEAP_XMIN_COMMITTED|HEAP_XMIN_INVALID) #define HEAP_XMAX_COMMITTED 0x0400 /* t_xmax committed */ #define HEAP_XMAX_INVALID 0x0800 /* t_xmax invalid/aborted */ #define HEAP_XMAX_IS_MULTI 0x1000 /* t_xmax is a MultiXactId */ #define HEAP_UPDATED 0x2000 /* this is UPDATEd version of row */ #define HEAP_MOVED_OFF 0x4000 /* moved to another place by pre-9.0 * VACUUM FULL; kept for binary * upgrade support */ #define HEAP_MOVED_IN 0x8000 /* moved from another place by pre-9.0 * VACUUM FULL; kept for binary * upgrade support */ #define HEAP_MOVED (HEAP_MOVED_OFF | HEAP_MOVED_IN) #define HEAP_XACT_MASK 0xFFF0 /* visibility-related bits */ /* * A tuple is only locked (i.e. not updated by its Xmax) if the * HEAP_XMAX_LOCK_ONLY bit is set; or, for pg_upgrade's sake, if the Xmax is * not a multi and the EXCL_LOCK bit is set. * * See also HeapTupleHeaderIsOnlyLocked, which also checks for a possible * aborted updater transaction. * * Beware of multiple evaluations of the argument. */ #define HEAP_XMAX_IS_LOCKED_ONLY(infomask) \ (((infomask) & HEAP_XMAX_LOCK_ONLY) || \ (((infomask) & (HEAP_XMAX_IS_MULTI | HEAP_LOCK_MASK)) == HEAP_XMAX_EXCL_LOCK)) /* * A tuple that has HEAP_XMAX_IS_MULTI and HEAP_XMAX_LOCK_ONLY but neither of * HEAP_XMAX_EXCL_LOCK and HEAP_XMAX_KEYSHR_LOCK must come from a tuple that was * share-locked in 9.2 or earlier and then pg_upgrade'd. * * In 9.2 and prior, HEAP_XMAX_IS_MULTI was only set when there were multiple * FOR SHARE lockers of that tuple. That set HEAP_XMAX_LOCK_ONLY (with a * different name back then) but neither of HEAP_XMAX_EXCL_LOCK and * HEAP_XMAX_KEYSHR_LOCK. That combination is no longer possible in 9.3 and * up, so if we see that combination we know for certain that the tuple was * locked in an earlier release; since all such lockers are gone (they cannot * survive through pg_upgrade), such tuples can safely be considered not * locked. * * We must not resolve such multixacts locally, because the result would be * bogus, regardless of where they stand with respect to the current valid * multixact range. */ #define HEAP_LOCKED_UPGRADED(infomask) \ ( \ ((infomask) & HEAP_XMAX_IS_MULTI) != 0 && \ ((infomask) & HEAP_XMAX_LOCK_ONLY) != 0 && \ (((infomask) & (HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_KEYSHR_LOCK)) == 0) \ ) /* * Use these to test whether a particular lock is applied to a tuple */ #define HEAP_XMAX_IS_SHR_LOCKED(infomask) \ (((infomask) & HEAP_LOCK_MASK) == HEAP_XMAX_SHR_LOCK) #define HEAP_XMAX_IS_EXCL_LOCKED(infomask) \ (((infomask) & HEAP_LOCK_MASK) == HEAP_XMAX_EXCL_LOCK) #define HEAP_XMAX_IS_KEYSHR_LOCKED(infomask) \ (((infomask) & HEAP_LOCK_MASK) == HEAP_XMAX_KEYSHR_LOCK) /* turn these all off when Xmax is to change */ #define HEAP_XMAX_BITS (HEAP_XMAX_COMMITTED | HEAP_XMAX_INVALID | \ HEAP_XMAX_IS_MULTI | HEAP_LOCK_MASK | HEAP_XMAX_LOCK_ONLY) /* * information stored in t_infomask2: */ #define HEAP_NATTS_MASK 0x07FF /* 11 bits for number of attributes */ /* bits 0x1800 are available */ #define HEAP_KEYS_UPDATED 0x2000 /* tuple was updated and key cols * modified, or tuple deleted */ #define HEAP_HOT_UPDATED 0x4000 /* tuple was HOT-updated */ #define HEAP_ONLY_TUPLE 0x8000 /* this is heap-only tuple */ #define HEAP2_XACT_MASK 0xE000 /* visibility-related bits */ /* * HEAP_TUPLE_HAS_MATCH is a temporary flag used during hash joins. It is * only used in tuples that are in the hash table, and those don't need * any visibility information, so we can overlay it on a visibility flag * instead of using up a dedicated bit. */ #define HEAP_TUPLE_HAS_MATCH HEAP_ONLY_TUPLE /* tuple has a join match */ /* * HeapTupleHeader accessor macros * * Note: beware of multiple evaluations of "tup" argument. But the Set * macros evaluate their other argument only once. */ /* * HeapTupleHeaderGetRawXmin returns the "raw" xmin field, which is the xid * originally used to insert the tuple. However, the tuple might actually * be frozen (via HeapTupleHeaderSetXminFrozen) in which case the tuple's xmin * is visible to every snapshot. Prior to PostgreSQL 9.4, we actually changed * the xmin to FrozenTransactionId, and that value may still be encountered * on disk. */ #define HeapTupleHeaderGetRawXmin(tup) \ ( \ (tup)->t_choice.t_heap.t_xmin \ ) #define HeapTupleHeaderGetXmin(tup) \ ( \ HeapTupleHeaderXminFrozen(tup) ? \ FrozenTransactionId : HeapTupleHeaderGetRawXmin(tup) \ ) #define HeapTupleHeaderSetXmin(tup, xid) \ ( \ (tup)->t_choice.t_heap.t_xmin = (xid) \ ) #define HeapTupleHeaderXminCommitted(tup) \ ( \ ((tup)->t_infomask & HEAP_XMIN_COMMITTED) != 0 \ ) #define HeapTupleHeaderXminInvalid(tup) \ ( \ ((tup)->t_infomask & (HEAP_XMIN_COMMITTED|HEAP_XMIN_INVALID)) == \ HEAP_XMIN_INVALID \ ) #define HeapTupleHeaderXminFrozen(tup) \ ( \ ((tup)->t_infomask & (HEAP_XMIN_FROZEN)) == HEAP_XMIN_FROZEN \ ) #define HeapTupleHeaderSetXminCommitted(tup) \ ( \ AssertMacro(!HeapTupleHeaderXminInvalid(tup)), \ ((tup)->t_infomask |= HEAP_XMIN_COMMITTED) \ ) #define HeapTupleHeaderSetXminInvalid(tup) \ ( \ AssertMacro(!HeapTupleHeaderXminCommitted(tup)), \ ((tup)->t_infomask |= HEAP_XMIN_INVALID) \ ) #define HeapTupleHeaderSetXminFrozen(tup) \ ( \ AssertMacro(!HeapTupleHeaderXminInvalid(tup)), \ ((tup)->t_infomask |= HEAP_XMIN_FROZEN) \ ) /* * HeapTupleHeaderGetRawXmax gets you the raw Xmax field. To find out the Xid * that updated a tuple, you might need to resolve the MultiXactId if certain * bits are set. HeapTupleHeaderGetUpdateXid checks those bits and takes care * to resolve the MultiXactId if necessary. This might involve multixact I/O, * so it should only be used if absolutely necessary. */ #define HeapTupleHeaderGetUpdateXid(tup) \ ( \ (!((tup)->t_infomask & HEAP_XMAX_INVALID) && \ ((tup)->t_infomask & HEAP_XMAX_IS_MULTI) && \ !((tup)->t_infomask & HEAP_XMAX_LOCK_ONLY)) ? \ HeapTupleGetUpdateXid(tup) \ : \ HeapTupleHeaderGetRawXmax(tup) \ ) #define HeapTupleHeaderGetRawXmax(tup) \ ( \ (tup)->t_choice.t_heap.t_xmax \ ) #define HeapTupleHeaderSetXmax(tup, xid) \ ( \ (tup)->t_choice.t_heap.t_xmax = (xid) \ ) /* * HeapTupleHeaderGetRawCommandId will give you what's in the header whether * it is useful or not. Most code should use HeapTupleHeaderGetCmin or * HeapTupleHeaderGetCmax instead, but note that those Assert that you can * get a legitimate result, ie you are in the originating transaction! */ #define HeapTupleHeaderGetRawCommandId(tup) \ ( \ (tup)->t_choice.t_heap.t_field3.t_cid \ ) /* SetCmin is reasonably simple since we never need a combo CID */ #define HeapTupleHeaderSetCmin(tup, cid) \ do { \ Assert(!((tup)->t_infomask & HEAP_MOVED)); \ (tup)->t_choice.t_heap.t_field3.t_cid = (cid); \ (tup)->t_infomask &= ~HEAP_COMBOCID; \ } while (0) /* SetCmax must be used after HeapTupleHeaderAdjustCmax; see combocid.c */ #define HeapTupleHeaderSetCmax(tup, cid, iscombo) \ do { \ Assert(!((tup)->t_infomask & HEAP_MOVED)); \ (tup)->t_choice.t_heap.t_field3.t_cid = (cid); \ if (iscombo) \ (tup)->t_infomask |= HEAP_COMBOCID; \ else \ (tup)->t_infomask &= ~HEAP_COMBOCID; \ } while (0) #define HeapTupleHeaderGetXvac(tup) \ ( \ ((tup)->t_infomask & HEAP_MOVED) ? \ (tup)->t_choice.t_heap.t_field3.t_xvac \ : \ InvalidTransactionId \ ) #define HeapTupleHeaderSetXvac(tup, xid) \ do { \ Assert((tup)->t_infomask & HEAP_MOVED); \ (tup)->t_choice.t_heap.t_field3.t_xvac = (xid); \ } while (0) #define HeapTupleHeaderIsSpeculative(tup) \ ( \ (ItemPointerGetOffsetNumberNoCheck(&(tup)->t_ctid) == SpecTokenOffsetNumber) \ ) #define HeapTupleHeaderGetSpeculativeToken(tup) \ ( \ AssertMacro(HeapTupleHeaderIsSpeculative(tup)), \ ItemPointerGetBlockNumber(&(tup)->t_ctid) \ ) #define HeapTupleHeaderSetSpeculativeToken(tup, token) \ ( \ ItemPointerSet(&(tup)->t_ctid, token, SpecTokenOffsetNumber) \ ) #define HeapTupleHeaderIndicatesMovedPartitions(tup) \ (ItemPointerGetOffsetNumber(&(tup)->t_ctid) == MovedPartitionsOffsetNumber && \ ItemPointerGetBlockNumberNoCheck(&(tup)->t_ctid) == MovedPartitionsBlockNumber) #define HeapTupleHeaderSetMovedPartitions(tup) \ ItemPointerSet(&(tup)->t_ctid, MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber) #define HeapTupleHeaderGetDatumLength(tup) \ VARSIZE(tup) #define HeapTupleHeaderSetDatumLength(tup, len) \ SET_VARSIZE(tup, len) #define HeapTupleHeaderGetTypeId(tup) \ ( \ (tup)->t_choice.t_datum.datum_typeid \ ) #define HeapTupleHeaderSetTypeId(tup, typeid) \ ( \ (tup)->t_choice.t_datum.datum_typeid = (typeid) \ ) #define HeapTupleHeaderGetTypMod(tup) \ ( \ (tup)->t_choice.t_datum.datum_typmod \ ) #define HeapTupleHeaderSetTypMod(tup, typmod) \ ( \ (tup)->t_choice.t_datum.datum_typmod = (typmod) \ ) /* * Note that we stop considering a tuple HOT-updated as soon as it is known * aborted or the would-be updating transaction is known aborted. For best * efficiency, check tuple visibility before using this macro, so that the * INVALID bits will be as up to date as possible. */ #define HeapTupleHeaderIsHotUpdated(tup) \ ( \ ((tup)->t_infomask2 & HEAP_HOT_UPDATED) != 0 && \ ((tup)->t_infomask & HEAP_XMAX_INVALID) == 0 && \ !HeapTupleHeaderXminInvalid(tup) \ ) #define HeapTupleHeaderSetHotUpdated(tup) \ ( \ (tup)->t_infomask2 |= HEAP_HOT_UPDATED \ ) #define HeapTupleHeaderClearHotUpdated(tup) \ ( \ (tup)->t_infomask2 &= ~HEAP_HOT_UPDATED \ ) #define HeapTupleHeaderIsHeapOnly(tup) \ ( \ ((tup)->t_infomask2 & HEAP_ONLY_TUPLE) != 0 \ ) #define HeapTupleHeaderSetHeapOnly(tup) \ ( \ (tup)->t_infomask2 |= HEAP_ONLY_TUPLE \ ) #define HeapTupleHeaderClearHeapOnly(tup) \ ( \ (tup)->t_infomask2 &= ~HEAP_ONLY_TUPLE \ ) #define HeapTupleHeaderHasMatch(tup) \ ( \ ((tup)->t_infomask2 & HEAP_TUPLE_HAS_MATCH) != 0 \ ) #define HeapTupleHeaderSetMatch(tup) \ ( \ (tup)->t_infomask2 |= HEAP_TUPLE_HAS_MATCH \ ) #define HeapTupleHeaderClearMatch(tup) \ ( \ (tup)->t_infomask2 &= ~HEAP_TUPLE_HAS_MATCH \ ) #define HeapTupleHeaderGetNatts(tup) \ ((tup)->t_infomask2 & HEAP_NATTS_MASK) #define HeapTupleHeaderSetNatts(tup, natts) \ ( \ (tup)->t_infomask2 = ((tup)->t_infomask2 & ~HEAP_NATTS_MASK) | (natts) \ ) #define HeapTupleHeaderHasExternal(tup) \ (((tup)->t_infomask & HEAP_HASEXTERNAL) != 0) /* * BITMAPLEN(NATTS) - * Computes size of null bitmap given number of data columns. */ #define BITMAPLEN(NATTS) (((int)(NATTS) + 7) / 8) /* * MaxHeapTupleSize is the maximum allowed size of a heap tuple, including * header and MAXALIGN alignment padding. Basically it's BLCKSZ minus the * other stuff that has to be on a disk page. Since heap pages use no * "special space", there's no deduction for that. * * NOTE: we allow for the ItemId that must point to the tuple, ensuring that * an otherwise-empty page can indeed hold a tuple of this size. Because * ItemIds and tuples have different alignment requirements, don't assume that * you can, say, fit 2 tuples of size MaxHeapTupleSize/2 on the same page. */ #define MaxHeapTupleSize (BLCKSZ - MAXALIGN(SizeOfPageHeaderData + sizeof(ItemIdData))) #define MinHeapTupleSize MAXALIGN(SizeofHeapTupleHeader) /* * MaxHeapTuplesPerPage is an upper bound on the number of tuples that can * fit on one heap page. (Note that indexes could have more, because they * use a smaller tuple header.) We arrive at the divisor because each tuple * must be maxaligned, and it must have an associated line pointer. * * Note: with HOT, there could theoretically be more line pointers (not actual * tuples) than this on a heap page. However we constrain the number of line * pointers to this anyway, to avoid excessive line-pointer bloat and not * require increases in the size of work arrays. */ #define MaxHeapTuplesPerPage \ ((int) ((BLCKSZ - SizeOfPageHeaderData) / \ (MAXALIGN(SizeofHeapTupleHeader) + sizeof(ItemIdData)))) /* * MaxAttrSize is a somewhat arbitrary upper limit on the declared size of * data fields of char(n) and similar types. It need not have anything * directly to do with the *actual* upper limit of varlena values, which * is currently 1Gb (see TOAST structures in postgres.h). I've set it * at 10Mb which seems like a reasonable number --- tgl 8/6/00. */ #define MaxAttrSize (10 * 1024 * 1024) /* * MinimalTuple is an alternative representation that is used for transient * tuples inside the executor, in places where transaction status information * is not required, the tuple rowtype is known, and shaving off a few bytes * is worthwhile because we need to store many tuples. The representation * is chosen so that tuple access routines can work with either full or * minimal tuples via a HeapTupleData pointer structure. The access routines * see no difference, except that they must not access the transaction status * or t_ctid fields because those aren't there. * * For the most part, MinimalTuples should be accessed via TupleTableSlot * routines. These routines will prevent access to the "system columns" * and thereby prevent accidental use of the nonexistent fields. * * MinimalTupleData contains a length word, some padding, and fields matching * HeapTupleHeaderData beginning with t_infomask2. The padding is chosen so * that offsetof(t_infomask2) is the same modulo MAXIMUM_ALIGNOF in both * structs. This makes data alignment rules equivalent in both cases. * * When a minimal tuple is accessed via a HeapTupleData pointer, t_data is * set to point MINIMAL_TUPLE_OFFSET bytes before the actual start of the * minimal tuple --- that is, where a full tuple matching the minimal tuple's * data would start. This trick is what makes the structs seem equivalent. * * Note that t_hoff is computed the same as in a full tuple, hence it includes * the MINIMAL_TUPLE_OFFSET distance. t_len does not include that, however. * * MINIMAL_TUPLE_DATA_OFFSET is the offset to the first useful (non-pad) data * other than the length word. tuplesort.c and tuplestore.c use this to avoid * writing the padding to disk. */ #define MINIMAL_TUPLE_OFFSET \ ((offsetof(HeapTupleHeaderData, t_infomask2) - sizeof(uint32)) / MAXIMUM_ALIGNOF * MAXIMUM_ALIGNOF) #define MINIMAL_TUPLE_PADDING \ ((offsetof(HeapTupleHeaderData, t_infomask2) - sizeof(uint32)) % MAXIMUM_ALIGNOF) #define MINIMAL_TUPLE_DATA_OFFSET \ offsetof(MinimalTupleData, t_infomask2) struct MinimalTupleData { uint32 t_len; /* actual length of minimal tuple */ char mt_padding[MINIMAL_TUPLE_PADDING]; /* Fields below here must match HeapTupleHeaderData! */ uint16 t_infomask2; /* number of attributes + various flags */ uint16 t_infomask; /* various flag bits, see below */ uint8 t_hoff; /* sizeof header incl. bitmap, padding */ /* ^ - 23 bytes - ^ */ bits8 t_bits[FLEXIBLE_ARRAY_MEMBER]; /* bitmap of NULLs */ /* MORE DATA FOLLOWS AT END OF STRUCT */ }; /* typedef appears in htup.h */ #define SizeofMinimalTupleHeader offsetof(MinimalTupleData, t_bits) /* * GETSTRUCT - given a HeapTuple pointer, return address of the user data */ #define GETSTRUCT(TUP) ((char *) ((TUP)->t_data) + (TUP)->t_data->t_hoff) /* * Accessor macros to be used with HeapTuple pointers. */ #define HeapTupleHasNulls(tuple) \ (((tuple)->t_data->t_infomask & HEAP_HASNULL) != 0) #define HeapTupleNoNulls(tuple) \ (!((tuple)->t_data->t_infomask & HEAP_HASNULL)) #define HeapTupleHasVarWidth(tuple) \ (((tuple)->t_data->t_infomask & HEAP_HASVARWIDTH) != 0) #define HeapTupleAllFixed(tuple) \ (!((tuple)->t_data->t_infomask & HEAP_HASVARWIDTH)) #define HeapTupleHasExternal(tuple) \ (((tuple)->t_data->t_infomask & HEAP_HASEXTERNAL) != 0) #define HeapTupleIsHotUpdated(tuple) \ HeapTupleHeaderIsHotUpdated((tuple)->t_data) #define HeapTupleSetHotUpdated(tuple) \ HeapTupleHeaderSetHotUpdated((tuple)->t_data) #define HeapTupleClearHotUpdated(tuple) \ HeapTupleHeaderClearHotUpdated((tuple)->t_data) #define HeapTupleIsHeapOnly(tuple) \ HeapTupleHeaderIsHeapOnly((tuple)->t_data) #define HeapTupleSetHeapOnly(tuple) \ HeapTupleHeaderSetHeapOnly((tuple)->t_data) #define HeapTupleClearHeapOnly(tuple) \ HeapTupleHeaderClearHeapOnly((tuple)->t_data) /* ---------------- * fastgetattr * * Fetch a user attribute's value as a Datum (might be either a * value, or a pointer into the data area of the tuple). * * This must not be used when a system attribute might be requested. * Furthermore, the passed attnum MUST be valid. Use heap_getattr() * instead, if in doubt. * * This gets called many times, so we macro the cacheable and NULL * lookups, and call nocachegetattr() for the rest. * ---------------- */ #if !defined(DISABLE_COMPLEX_MACRO) #define fastgetattr(tup, attnum, tupleDesc, isnull) \ ( \ AssertMacro((attnum) > 0), \ (*(isnull) = false), \ HeapTupleNoNulls(tup) ? \ ( \ TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff >= 0 ? \ ( \ fetchatt(TupleDescAttr((tupleDesc), (attnum)-1), \ (char *) (tup)->t_data + (tup)->t_data->t_hoff + \ TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff)\ ) \ : \ nocachegetattr((tup), (attnum), (tupleDesc)) \ ) \ : \ ( \ att_isnull((attnum)-1, (tup)->t_data->t_bits) ? \ ( \ (*(isnull) = true), \ (Datum)NULL \ ) \ : \ ( \ nocachegetattr((tup), (attnum), (tupleDesc)) \ ) \ ) \ ) #else /* defined(DISABLE_COMPLEX_MACRO) */ extern Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull); #endif /* defined(DISABLE_COMPLEX_MACRO) */ /* ---------------- * heap_getattr * * Extract an attribute of a heap tuple and return it as a Datum. * This works for either system or user attributes. The given attnum * is properly range-checked. * * If the field in question has a NULL value, we return a zero Datum * and set *isnull == true. Otherwise, we set *isnull == false. * * is the pointer to the heap tuple. is the attribute * number of the column (field) caller wants. is a * pointer to the structure describing the row and all its fields. * ---------------- */ #define heap_getattr(tup, attnum, tupleDesc, isnull) \ ( \ ((attnum) > 0) ? \ ( \ ((attnum) > (int) HeapTupleHeaderGetNatts((tup)->t_data)) ? \ getmissingattr((tupleDesc), (attnum), (isnull)) \ : \ fastgetattr((tup), (attnum), (tupleDesc), (isnull)) \ ) \ : \ heap_getsysattr((tup), (attnum), (tupleDesc), (isnull)) \ ) /* prototypes for functions in common/heaptuple.c */ extern Size heap_compute_data_size(TupleDesc tupleDesc, Datum *values, bool *isnull); extern void heap_fill_tuple(TupleDesc tupleDesc, Datum *values, bool *isnull, char *data, Size data_size, uint16 *infomask, bits8 *bit); extern bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc); extern Datum nocachegetattr(HeapTuple tup, int attnum, TupleDesc att); extern Datum heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull); extern Datum getmissingattr(TupleDesc tupleDesc, int attnum, bool *isnull); extern HeapTuple heap_copytuple(HeapTuple tuple); extern void heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest); extern Datum heap_copy_tuple_as_datum(HeapTuple tuple, TupleDesc tupleDesc); extern HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, Datum *values, bool *isnull); extern HeapTuple heap_modify_tuple(HeapTuple tuple, TupleDesc tupleDesc, Datum *replValues, bool *replIsnull, bool *doReplace); extern HeapTuple heap_modify_tuple_by_cols(HeapTuple tuple, TupleDesc tupleDesc, int nCols, int *replCols, Datum *replValues, bool *replIsnull); extern void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc, Datum *values, bool *isnull); extern void heap_freetuple(HeapTuple htup); extern MinimalTuple heap_form_minimal_tuple(TupleDesc tupleDescriptor, Datum *values, bool *isnull); extern void heap_free_minimal_tuple(MinimalTuple mtup); extern MinimalTuple heap_copy_minimal_tuple(MinimalTuple mtup); extern HeapTuple heap_tuple_from_minimal_tuple(MinimalTuple mtup); extern MinimalTuple minimal_tuple_from_heap_tuple(HeapTuple htup); extern size_t varsize_any(void *p); extern HeapTuple heap_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc); extern MinimalTuple minimal_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc); #endif /* HTUP_DETAILS_H */ libpg_query-13-2.1.0/src/postgres/include/access/itup.h000066400000000000000000000116661413137616400227500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * itup.h * POSTGRES index tuple definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/itup.h * *------------------------------------------------------------------------- */ #ifndef ITUP_H #define ITUP_H #include "access/tupdesc.h" #include "access/tupmacs.h" #include "storage/bufpage.h" #include "storage/itemptr.h" /* * Index tuple header structure * * All index tuples start with IndexTupleData. If the HasNulls bit is set, * this is followed by an IndexAttributeBitMapData. The index attribute * values follow, beginning at a MAXALIGN boundary. * * Note that the space allocated for the bitmap does not vary with the number * of attributes; that is because we don't have room to store the number of * attributes in the header. Given the MAXALIGN constraint there's no space * savings to be had anyway, for usual values of INDEX_MAX_KEYS. */ typedef struct IndexTupleData { ItemPointerData t_tid; /* reference TID to heap tuple */ /* --------------- * t_info is laid out in the following fashion: * * 15th (high) bit: has nulls * 14th bit: has var-width attributes * 13th bit: AM-defined meaning * 12-0 bit: size of tuple * --------------- */ unsigned short t_info; /* various info about tuple */ } IndexTupleData; /* MORE DATA FOLLOWS AT END OF STRUCT */ typedef IndexTupleData *IndexTuple; typedef struct IndexAttributeBitMapData { bits8 bits[(INDEX_MAX_KEYS + 8 - 1) / 8]; } IndexAttributeBitMapData; typedef IndexAttributeBitMapData * IndexAttributeBitMap; /* * t_info manipulation macros */ #define INDEX_SIZE_MASK 0x1FFF #define INDEX_AM_RESERVED_BIT 0x2000 /* reserved for index-AM specific * usage */ #define INDEX_VAR_MASK 0x4000 #define INDEX_NULL_MASK 0x8000 #define IndexTupleSize(itup) ((Size) ((itup)->t_info & INDEX_SIZE_MASK)) #define IndexTupleHasNulls(itup) ((((IndexTuple) (itup))->t_info & INDEX_NULL_MASK)) #define IndexTupleHasVarwidths(itup) ((((IndexTuple) (itup))->t_info & INDEX_VAR_MASK)) /* * Takes an infomask as argument (primarily because this needs to be usable * at index_form_tuple time so enough space is allocated). */ #define IndexInfoFindDataOffset(t_info) \ ( \ (!((t_info) & INDEX_NULL_MASK)) ? \ ( \ (Size)MAXALIGN(sizeof(IndexTupleData)) \ ) \ : \ ( \ (Size)MAXALIGN(sizeof(IndexTupleData) + sizeof(IndexAttributeBitMapData)) \ ) \ ) /* ---------------- * index_getattr * * This gets called many times, so we macro the cacheable and NULL * lookups, and call nocache_index_getattr() for the rest. * * ---------------- */ #define index_getattr(tup, attnum, tupleDesc, isnull) \ ( \ AssertMacro(PointerIsValid(isnull) && (attnum) > 0), \ *(isnull) = false, \ !IndexTupleHasNulls(tup) ? \ ( \ TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff >= 0 ? \ ( \ fetchatt(TupleDescAttr((tupleDesc), (attnum)-1), \ (char *) (tup) + IndexInfoFindDataOffset((tup)->t_info) \ + TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff) \ ) \ : \ nocache_index_getattr((tup), (attnum), (tupleDesc)) \ ) \ : \ ( \ (att_isnull((attnum)-1, (char *)(tup) + sizeof(IndexTupleData))) ? \ ( \ *(isnull) = true, \ (Datum)NULL \ ) \ : \ ( \ nocache_index_getattr((tup), (attnum), (tupleDesc)) \ ) \ ) \ ) /* * MaxIndexTuplesPerPage is an upper bound on the number of tuples that can * fit on one index page. An index tuple must have either data or a null * bitmap, so we can safely assume it's at least 1 byte bigger than a bare * IndexTupleData struct. We arrive at the divisor because each tuple * must be maxaligned, and it must have an associated line pointer. * * To be index-type-independent, this does not account for any special space * on the page, and is thus conservative. * * Note: in btree non-leaf pages, the first tuple has no key (it's implicitly * minus infinity), thus breaking the "at least 1 byte bigger" assumption. * On such a page, N tuples could take one MAXALIGN quantum less space than * estimated here, seemingly allowing one more tuple than estimated here. * But such a page always has at least MAXALIGN special space, so we're safe. */ #define MaxIndexTuplesPerPage \ ((int) ((BLCKSZ - SizeOfPageHeaderData) / \ (MAXALIGN(sizeof(IndexTupleData) + 1) + sizeof(ItemIdData)))) /* routines in indextuple.c */ extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor, Datum *values, bool *isnull); extern Datum nocache_index_getattr(IndexTuple tup, int attnum, TupleDesc tupleDesc); extern void index_deform_tuple(IndexTuple tup, TupleDesc tupleDescriptor, Datum *values, bool *isnull); extern IndexTuple CopyIndexTuple(IndexTuple source); extern IndexTuple index_truncate_tuple(TupleDesc sourceDescriptor, IndexTuple source, int leavenatts); #endif /* ITUP_H */ libpg_query-13-2.1.0/src/postgres/include/access/parallel.h000066400000000000000000000051051413137616400235520ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parallel.h * Infrastructure for launching parallel workers * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/parallel.h * *------------------------------------------------------------------------- */ #ifndef PARALLEL_H #define PARALLEL_H #include "access/xlogdefs.h" #include "lib/ilist.h" #include "postmaster/bgworker.h" #include "storage/shm_mq.h" #include "storage/shm_toc.h" typedef void (*parallel_worker_main_type) (dsm_segment *seg, shm_toc *toc); typedef struct ParallelWorkerInfo { BackgroundWorkerHandle *bgwhandle; shm_mq_handle *error_mqh; int32 pid; } ParallelWorkerInfo; typedef struct ParallelContext { dlist_node node; SubTransactionId subid; int nworkers; /* Maximum number of workers to launch */ int nworkers_to_launch; /* Actual number of workers to launch */ int nworkers_launched; char *library_name; char *function_name; ErrorContextCallback *error_context_stack; shm_toc_estimator estimator; dsm_segment *seg; void *private_memory; shm_toc *toc; ParallelWorkerInfo *worker; int nknown_attached_workers; bool *known_attached_workers; } ParallelContext; typedef struct ParallelWorkerContext { dsm_segment *seg; shm_toc *toc; } ParallelWorkerContext; extern volatile bool ParallelMessagePending; extern PGDLLIMPORT int ParallelWorkerNumber; extern PGDLLIMPORT bool InitializingParallelWorker; #define IsParallelWorker() (ParallelWorkerNumber >= 0) extern ParallelContext *CreateParallelContext(const char *library_name, const char *function_name, int nworkers); extern void InitializeParallelDSM(ParallelContext *pcxt); extern void ReinitializeParallelDSM(ParallelContext *pcxt); extern void ReinitializeParallelWorkers(ParallelContext *pcxt, int nworkers_to_launch); extern void LaunchParallelWorkers(ParallelContext *pcxt); extern void WaitForParallelWorkersToAttach(ParallelContext *pcxt); extern void WaitForParallelWorkersToFinish(ParallelContext *pcxt); extern void DestroyParallelContext(ParallelContext *pcxt); extern bool ParallelContextActive(void); extern void HandleParallelMessageInterrupt(void); extern void HandleParallelMessages(void); extern void AtEOXact_Parallel(bool isCommit); extern void AtEOSubXact_Parallel(bool isCommit, SubTransactionId mySubId); extern void ParallelWorkerReportLastRecEnd(XLogRecPtr last_xlog_end); extern void ParallelWorkerMain(Datum main_arg); #endif /* PARALLEL_H */ libpg_query-13-2.1.0/src/postgres/include/access/printtup.h000066400000000000000000000020701413137616400236410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * printtup.h * * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/printtup.h * *------------------------------------------------------------------------- */ #ifndef PRINTTUP_H #define PRINTTUP_H #include "utils/portal.h" extern DestReceiver *printtup_create_DR(CommandDest dest); extern void SetRemoteDestReceiverParams(DestReceiver *self, Portal portal); extern void SendRowDescriptionMessage(StringInfo buf, TupleDesc typeinfo, List *targetlist, int16 *formats); extern void debugStartup(DestReceiver *self, int operation, TupleDesc typeinfo); extern bool debugtup(TupleTableSlot *slot, DestReceiver *self); /* XXX these are really in executor/spi.c */ extern void spi_dest_startup(DestReceiver *self, int operation, TupleDesc typeinfo); extern bool spi_printtup(TupleTableSlot *slot, DestReceiver *self); #endif /* PRINTTUP_H */ libpg_query-13-2.1.0/src/postgres/include/access/relation.h000066400000000000000000000017211413137616400235730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * relation.h * Generic relation related routines. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/relation.h * *------------------------------------------------------------------------- */ #ifndef ACCESS_RELATION_H #define ACCESS_RELATION_H #include "nodes/primnodes.h" #include "storage/lockdefs.h" #include "utils/relcache.h" extern Relation relation_open(Oid relationId, LOCKMODE lockmode); extern Relation try_relation_open(Oid relationId, LOCKMODE lockmode); extern Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode); extern Relation relation_openrv_extended(const RangeVar *relation, LOCKMODE lockmode, bool missing_ok); extern void relation_close(Relation relation, LOCKMODE lockmode); #endif /* ACCESS_RELATION_H */ libpg_query-13-2.1.0/src/postgres/include/access/relscan.h000066400000000000000000000141031413137616400234030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * relscan.h * POSTGRES relation scan descriptor definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/relscan.h * *------------------------------------------------------------------------- */ #ifndef RELSCAN_H #define RELSCAN_H #include "access/htup_details.h" #include "access/itup.h" #include "port/atomics.h" #include "storage/buf.h" #include "storage/spin.h" #include "utils/relcache.h" struct ParallelTableScanDescData; /* * Generic descriptor for table scans. This is the base-class for table scans, * which needs to be embedded in the scans of individual AMs. */ typedef struct TableScanDescData { /* scan parameters */ Relation rs_rd; /* heap relation descriptor */ struct SnapshotData *rs_snapshot; /* snapshot to see */ int rs_nkeys; /* number of scan keys */ struct ScanKeyData *rs_key; /* array of scan key descriptors */ /* * Information about type and behaviour of the scan, a bitmask of members * of the ScanOptions enum (see tableam.h). */ uint32 rs_flags; struct ParallelTableScanDescData *rs_parallel; /* parallel scan * information */ } TableScanDescData; typedef struct TableScanDescData *TableScanDesc; /* * Shared state for parallel table scan. * * Each backend participating in a parallel table scan has its own * TableScanDesc in backend-private memory, and those objects all contain a * pointer to this structure. The information here must be sufficient to * properly initialize each new TableScanDesc as workers join the scan, and it * must act as a information what to scan for those workers. */ typedef struct ParallelTableScanDescData { Oid phs_relid; /* OID of relation to scan */ bool phs_syncscan; /* report location to syncscan logic? */ bool phs_snapshot_any; /* SnapshotAny, not phs_snapshot_data? */ Size phs_snapshot_off; /* data for snapshot */ } ParallelTableScanDescData; typedef struct ParallelTableScanDescData *ParallelTableScanDesc; /* * Shared state for parallel table scans, for block oriented storage. */ typedef struct ParallelBlockTableScanDescData { ParallelTableScanDescData base; BlockNumber phs_nblocks; /* # blocks in relation at start of scan */ slock_t phs_mutex; /* mutual exclusion for setting startblock */ BlockNumber phs_startblock; /* starting block number */ pg_atomic_uint64 phs_nallocated; /* number of blocks allocated to * workers so far. */ } ParallelBlockTableScanDescData; typedef struct ParallelBlockTableScanDescData *ParallelBlockTableScanDesc; /* * Base class for fetches from a table via an index. This is the base-class * for such scans, which needs to be embedded in the respective struct for * individual AMs. */ typedef struct IndexFetchTableData { Relation rel; } IndexFetchTableData; /* * We use the same IndexScanDescData structure for both amgettuple-based * and amgetbitmap-based index scans. Some fields are only relevant in * amgettuple-based scans. */ typedef struct IndexScanDescData { /* scan parameters */ Relation heapRelation; /* heap relation descriptor, or NULL */ Relation indexRelation; /* index relation descriptor */ struct SnapshotData *xs_snapshot; /* snapshot to see */ int numberOfKeys; /* number of index qualifier conditions */ int numberOfOrderBys; /* number of ordering operators */ struct ScanKeyData *keyData; /* array of index qualifier descriptors */ struct ScanKeyData *orderByData; /* array of ordering op descriptors */ bool xs_want_itup; /* caller requests index tuples */ bool xs_temp_snap; /* unregister snapshot at scan end? */ /* signaling to index AM about killing index tuples */ bool kill_prior_tuple; /* last-returned tuple is dead */ bool ignore_killed_tuples; /* do not return killed entries */ bool xactStartedInRecovery; /* prevents killing/seeing killed * tuples */ /* index access method's private state */ void *opaque; /* access-method-specific info */ /* * In an index-only scan, a successful amgettuple call must fill either * xs_itup (and xs_itupdesc) or xs_hitup (and xs_hitupdesc) to provide the * data returned by the scan. It can fill both, in which case the heap * format will be used. */ IndexTuple xs_itup; /* index tuple returned by AM */ struct TupleDescData *xs_itupdesc; /* rowtype descriptor of xs_itup */ HeapTuple xs_hitup; /* index data returned by AM, as HeapTuple */ struct TupleDescData *xs_hitupdesc; /* rowtype descriptor of xs_hitup */ ItemPointerData xs_heaptid; /* result */ bool xs_heap_continue; /* T if must keep walking, potential * further results */ IndexFetchTableData *xs_heapfetch; bool xs_recheck; /* T means scan keys must be rechecked */ /* * When fetching with an ordering operator, the values of the ORDER BY * expressions of the last returned tuple, according to the index. If * xs_recheckorderby is true, these need to be rechecked just like the * scan keys, and the values returned here are a lower-bound on the actual * values. */ Datum *xs_orderbyvals; bool *xs_orderbynulls; bool xs_recheckorderby; /* parallel index scan information, in shared memory */ struct ParallelIndexScanDescData *parallel_scan; } IndexScanDescData; /* Generic structure for parallel scans */ typedef struct ParallelIndexScanDescData { Oid ps_relid; Oid ps_indexid; Size ps_offset; /* Offset in bytes of am specific structure */ char ps_snapshot_data[FLEXIBLE_ARRAY_MEMBER]; } ParallelIndexScanDescData; struct TupleTableSlot; /* Struct for storage-or-index scans of system tables */ typedef struct SysScanDescData { Relation heap_rel; /* catalog being scanned */ Relation irel; /* NULL if doing heap scan */ struct TableScanDescData *scan; /* only valid in storage-scan case */ struct IndexScanDescData *iscan; /* only valid in index-scan case */ struct SnapshotData *snapshot; /* snapshot to unregister at end of scan */ struct TupleTableSlot *slot; } SysScanDescData; #endif /* RELSCAN_H */ libpg_query-13-2.1.0/src/postgres/include/access/rmgr.h000066400000000000000000000011521413137616400227230ustar00rootroot00000000000000/* * rmgr.h * * Resource managers definition * * src/include/access/rmgr.h */ #ifndef RMGR_H #define RMGR_H typedef uint8 RmgrId; /* * Built-in resource managers * * The actual numerical values for each rmgr ID are defined by the order * of entries in rmgrlist.h. * * Note: RM_MAX_ID must fit in RmgrId; widening that type will affect the XLOG * file format. */ #define PG_RMGR(symname,name,redo,desc,identify,startup,cleanup,mask) \ symname, typedef enum RmgrIds { #include "access/rmgrlist.h" RM_NEXT_ID } RmgrIds; #undef PG_RMGR #define RM_MAX_ID (RM_NEXT_ID - 1) #endif /* RMGR_H */ libpg_query-13-2.1.0/src/postgres/include/access/rmgrlist.h000066400000000000000000000062621413137616400236260ustar00rootroot00000000000000/*--------------------------------------------------------------------------- * rmgrlist.h * * The resource manager list is kept in its own source file for possible * use by automatic tools. The exact representation of a rmgr is determined * by the PG_RMGR macro, which is not defined in this file; it can be * defined by the caller for special purposes. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/rmgrlist.h *--------------------------------------------------------------------------- */ /* there is deliberately not an #ifndef RMGRLIST_H here */ /* * List of resource manager entries. Note that order of entries defines the * numerical values of each rmgr's ID, which is stored in WAL records. New * entries should be added at the end, to avoid changing IDs of existing * entries. * * Changes to this list possibly need an XLOG_PAGE_MAGIC bump. */ /* symbol name, textual name, redo, desc, identify, startup, cleanup */ PG_RMGR(RM_XLOG_ID, "XLOG", xlog_redo, xlog_desc, xlog_identify, NULL, NULL, NULL) PG_RMGR(RM_XACT_ID, "Transaction", xact_redo, xact_desc, xact_identify, NULL, NULL, NULL) PG_RMGR(RM_SMGR_ID, "Storage", smgr_redo, smgr_desc, smgr_identify, NULL, NULL, NULL) PG_RMGR(RM_CLOG_ID, "CLOG", clog_redo, clog_desc, clog_identify, NULL, NULL, NULL) PG_RMGR(RM_DBASE_ID, "Database", dbase_redo, dbase_desc, dbase_identify, NULL, NULL, NULL) PG_RMGR(RM_TBLSPC_ID, "Tablespace", tblspc_redo, tblspc_desc, tblspc_identify, NULL, NULL, NULL) PG_RMGR(RM_MULTIXACT_ID, "MultiXact", multixact_redo, multixact_desc, multixact_identify, NULL, NULL, NULL) PG_RMGR(RM_RELMAP_ID, "RelMap", relmap_redo, relmap_desc, relmap_identify, NULL, NULL, NULL) PG_RMGR(RM_STANDBY_ID, "Standby", standby_redo, standby_desc, standby_identify, NULL, NULL, NULL) PG_RMGR(RM_HEAP2_ID, "Heap2", heap2_redo, heap2_desc, heap2_identify, NULL, NULL, heap_mask) PG_RMGR(RM_HEAP_ID, "Heap", heap_redo, heap_desc, heap_identify, NULL, NULL, heap_mask) PG_RMGR(RM_BTREE_ID, "Btree", btree_redo, btree_desc, btree_identify, btree_xlog_startup, btree_xlog_cleanup, btree_mask) PG_RMGR(RM_HASH_ID, "Hash", hash_redo, hash_desc, hash_identify, NULL, NULL, hash_mask) PG_RMGR(RM_GIN_ID, "Gin", gin_redo, gin_desc, gin_identify, gin_xlog_startup, gin_xlog_cleanup, gin_mask) PG_RMGR(RM_GIST_ID, "Gist", gist_redo, gist_desc, gist_identify, gist_xlog_startup, gist_xlog_cleanup, gist_mask) PG_RMGR(RM_SEQ_ID, "Sequence", seq_redo, seq_desc, seq_identify, NULL, NULL, seq_mask) PG_RMGR(RM_SPGIST_ID, "SPGist", spg_redo, spg_desc, spg_identify, spg_xlog_startup, spg_xlog_cleanup, spg_mask) PG_RMGR(RM_BRIN_ID, "BRIN", brin_redo, brin_desc, brin_identify, NULL, NULL, brin_mask) PG_RMGR(RM_COMMIT_TS_ID, "CommitTs", commit_ts_redo, commit_ts_desc, commit_ts_identify, NULL, NULL, NULL) PG_RMGR(RM_REPLORIGIN_ID, "ReplicationOrigin", replorigin_redo, replorigin_desc, replorigin_identify, NULL, NULL, NULL) PG_RMGR(RM_GENERIC_ID, "Generic", generic_redo, generic_desc, generic_identify, NULL, NULL, generic_mask) PG_RMGR(RM_LOGICALMSG_ID, "LogicalMessage", logicalmsg_redo, logicalmsg_desc, logicalmsg_identify, NULL, NULL, NULL) libpg_query-13-2.1.0/src/postgres/include/access/sdir.h000066400000000000000000000026761413137616400227310ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sdir.h * POSTGRES scan direction definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/sdir.h * *------------------------------------------------------------------------- */ #ifndef SDIR_H #define SDIR_H /* * ScanDirection was an int8 for no apparent reason. I kept the original * values because I'm not sure if I'll break anything otherwise. -ay 2/95 */ typedef enum ScanDirection { BackwardScanDirection = -1, NoMovementScanDirection = 0, ForwardScanDirection = 1 } ScanDirection; /* * ScanDirectionIsValid * True iff scan direction is valid. */ #define ScanDirectionIsValid(direction) \ ((bool) (BackwardScanDirection <= (direction) && \ (direction) <= ForwardScanDirection)) /* * ScanDirectionIsBackward * True iff scan direction is backward. */ #define ScanDirectionIsBackward(direction) \ ((bool) ((direction) == BackwardScanDirection)) /* * ScanDirectionIsNoMovement * True iff scan direction indicates no movement. */ #define ScanDirectionIsNoMovement(direction) \ ((bool) ((direction) == NoMovementScanDirection)) /* * ScanDirectionIsForward * True iff scan direction is forward. */ #define ScanDirectionIsForward(direction) \ ((bool) ((direction) == ForwardScanDirection)) #endif /* SDIR_H */ libpg_query-13-2.1.0/src/postgres/include/access/skey.h000066400000000000000000000144541413137616400227400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * skey.h * POSTGRES scan key definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/skey.h * *------------------------------------------------------------------------- */ #ifndef SKEY_H #define SKEY_H #include "access/attnum.h" #include "access/stratnum.h" #include "fmgr.h" /* * A ScanKey represents the application of a comparison operator between * a table or index column and a constant. When it's part of an array of * ScanKeys, the comparison conditions are implicitly ANDed. The index * column is the left argument of the operator, if it's a binary operator. * (The data structure can support unary indexable operators too; in that * case sk_argument would go unused. This is not currently implemented.) * * For an index scan, sk_strategy and sk_subtype must be set correctly for * the operator. When using a ScanKey in a heap scan, these fields are not * used and may be set to InvalidStrategy/InvalidOid. * * If the operator is collation-sensitive, sk_collation must be set * correctly as well. * * A ScanKey can also represent a ScalarArrayOpExpr, that is a condition * "column op ANY(ARRAY[...])". This is signaled by the SK_SEARCHARRAY * flag bit. The sk_argument is not a value of the operator's right-hand * argument type, but rather an array of such values, and the per-element * comparisons are to be ORed together. * * A ScanKey can also represent a condition "column IS NULL" or "column * IS NOT NULL"; these cases are signaled by the SK_SEARCHNULL and * SK_SEARCHNOTNULL flag bits respectively. The argument is always NULL, * and the sk_strategy, sk_subtype, sk_collation, and sk_func fields are * not used (unless set by the index AM). * * SK_SEARCHARRAY, SK_SEARCHNULL and SK_SEARCHNOTNULL are supported only * for index scans, not heap scans; and not all index AMs support them, * only those that set amsearcharray or amsearchnulls respectively. * * A ScanKey can also represent an ordering operator invocation, that is * an ordering requirement "ORDER BY indexedcol op constant". This looks * the same as a comparison operator, except that the operator doesn't * (usually) yield boolean. We mark such ScanKeys with SK_ORDER_BY. * SK_SEARCHARRAY, SK_SEARCHNULL, SK_SEARCHNOTNULL cannot be used here. * * Note: in some places, ScanKeys are used as a convenient representation * for the invocation of an access method support procedure. In this case * sk_strategy/sk_subtype are not meaningful (but sk_collation can be); and * sk_func may refer to a function that returns something other than boolean. */ typedef struct ScanKeyData { int sk_flags; /* flags, see below */ AttrNumber sk_attno; /* table or index column number */ StrategyNumber sk_strategy; /* operator strategy number */ Oid sk_subtype; /* strategy subtype */ Oid sk_collation; /* collation to use, if needed */ FmgrInfo sk_func; /* lookup info for function to call */ Datum sk_argument; /* data to compare */ } ScanKeyData; typedef ScanKeyData *ScanKey; /* * About row comparisons: * * The ScanKey data structure also supports row comparisons, that is ordered * tuple comparisons like (x, y) > (c1, c2), having the SQL-spec semantics * "x > c1 OR (x = c1 AND y > c2)". Note that this is currently only * implemented for btree index searches, not for heapscans or any other index * type. A row comparison is represented by a "header" ScanKey entry plus * a separate array of ScanKeys, one for each column of the row comparison. * The header entry has these properties: * sk_flags = SK_ROW_HEADER * sk_attno = index column number for leading column of row comparison * sk_strategy = btree strategy code for semantics of row comparison * (ie, < <= > or >=) * sk_subtype, sk_collation, sk_func: not used * sk_argument: pointer to subsidiary ScanKey array * If the header is part of a ScanKey array that's sorted by attno, it * must be sorted according to the leading column number. * * The subsidiary ScanKey array appears in logical column order of the row * comparison, which may be different from index column order. The array * elements are like a normal ScanKey array except that: * sk_flags must include SK_ROW_MEMBER, plus SK_ROW_END in the last * element (needed since row header does not include a count) * sk_func points to the btree comparison support function for the * opclass, NOT the operator's implementation function. * sk_strategy must be the same in all elements of the subsidiary array, * that is, the same as in the header entry. * SK_SEARCHARRAY, SK_SEARCHNULL, SK_SEARCHNOTNULL cannot be used here. */ /* * ScanKeyData sk_flags * * sk_flags bits 0-15 are reserved for system-wide use (symbols for those * bits should be defined here). Bits 16-31 are reserved for use within * individual index access methods. */ #define SK_ISNULL 0x0001 /* sk_argument is NULL */ #define SK_UNARY 0x0002 /* unary operator (not supported!) */ #define SK_ROW_HEADER 0x0004 /* row comparison header (see above) */ #define SK_ROW_MEMBER 0x0008 /* row comparison member (see above) */ #define SK_ROW_END 0x0010 /* last row comparison member */ #define SK_SEARCHARRAY 0x0020 /* scankey represents ScalarArrayOp */ #define SK_SEARCHNULL 0x0040 /* scankey represents "col IS NULL" */ #define SK_SEARCHNOTNULL 0x0080 /* scankey represents "col IS NOT NULL" */ #define SK_ORDER_BY 0x0100 /* scankey is for ORDER BY op */ /* * prototypes for functions in access/common/scankey.c */ extern void ScanKeyInit(ScanKey entry, AttrNumber attributeNumber, StrategyNumber strategy, RegProcedure procedure, Datum argument); extern void ScanKeyEntryInitialize(ScanKey entry, int flags, AttrNumber attributeNumber, StrategyNumber strategy, Oid subtype, Oid collation, RegProcedure procedure, Datum argument); extern void ScanKeyEntryInitializeWithInfo(ScanKey entry, int flags, AttrNumber attributeNumber, StrategyNumber strategy, Oid subtype, Oid collation, FmgrInfo *finfo, Datum argument); #endif /* SKEY_H */ libpg_query-13-2.1.0/src/postgres/include/access/stratnum.h000066400000000000000000000055751413137616400236460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * stratnum.h * POSTGRES strategy number definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/stratnum.h * *------------------------------------------------------------------------- */ #ifndef STRATNUM_H #define STRATNUM_H /* * Strategy numbers identify the semantics that particular operators have * with respect to particular operator classes. In some cases a strategy * subtype (an OID) is used as further information. */ typedef uint16 StrategyNumber; #define InvalidStrategy ((StrategyNumber) 0) /* * Strategy numbers for B-tree indexes. */ #define BTLessStrategyNumber 1 #define BTLessEqualStrategyNumber 2 #define BTEqualStrategyNumber 3 #define BTGreaterEqualStrategyNumber 4 #define BTGreaterStrategyNumber 5 #define BTMaxStrategyNumber 5 /* * Strategy numbers for hash indexes. There's only one valid strategy for * hashing: equality. */ #define HTEqualStrategyNumber 1 #define HTMaxStrategyNumber 1 /* * Strategy numbers common to (some) GiST, SP-GiST and BRIN opclasses. * * The first few of these come from the R-Tree indexing method (hence the * names); the others have been added over time as they have been needed. */ #define RTLeftStrategyNumber 1 /* for << */ #define RTOverLeftStrategyNumber 2 /* for &< */ #define RTOverlapStrategyNumber 3 /* for && */ #define RTOverRightStrategyNumber 4 /* for &> */ #define RTRightStrategyNumber 5 /* for >> */ #define RTSameStrategyNumber 6 /* for ~= */ #define RTContainsStrategyNumber 7 /* for @> */ #define RTContainedByStrategyNumber 8 /* for <@ */ #define RTOverBelowStrategyNumber 9 /* for &<| */ #define RTBelowStrategyNumber 10 /* for <<| */ #define RTAboveStrategyNumber 11 /* for |>> */ #define RTOverAboveStrategyNumber 12 /* for |&> */ #define RTOldContainsStrategyNumber 13 /* for old spelling of @> */ #define RTOldContainedByStrategyNumber 14 /* for old spelling of <@ */ #define RTKNNSearchStrategyNumber 15 /* for <-> (distance) */ #define RTContainsElemStrategyNumber 16 /* for range types @> elem */ #define RTAdjacentStrategyNumber 17 /* for -|- */ #define RTEqualStrategyNumber 18 /* for = */ #define RTNotEqualStrategyNumber 19 /* for != */ #define RTLessStrategyNumber 20 /* for < */ #define RTLessEqualStrategyNumber 21 /* for <= */ #define RTGreaterStrategyNumber 22 /* for > */ #define RTGreaterEqualStrategyNumber 23 /* for >= */ #define RTSubStrategyNumber 24 /* for inet >> */ #define RTSubEqualStrategyNumber 25 /* for inet <<= */ #define RTSuperStrategyNumber 26 /* for inet << */ #define RTSuperEqualStrategyNumber 27 /* for inet >>= */ #define RTPrefixStrategyNumber 28 /* for text ^@ */ #define RTMaxStrategyNumber 28 #endif /* STRATNUM_H */ libpg_query-13-2.1.0/src/postgres/include/access/sysattr.h000066400000000000000000000015251413137616400234710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sysattr.h * POSTGRES system attribute definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/sysattr.h * *------------------------------------------------------------------------- */ #ifndef SYSATTR_H #define SYSATTR_H /* * Attribute numbers for the system-defined attributes */ #define SelfItemPointerAttributeNumber (-1) #define MinTransactionIdAttributeNumber (-2) #define MinCommandIdAttributeNumber (-3) #define MaxTransactionIdAttributeNumber (-4) #define MaxCommandIdAttributeNumber (-5) #define TableOidAttributeNumber (-6) #define FirstLowInvalidHeapAttributeNumber (-7) #endif /* SYSATTR_H */ libpg_query-13-2.1.0/src/postgres/include/access/table.h000066400000000000000000000015411413137616400230450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * table.h * Generic routines for table related code. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/table.h * *------------------------------------------------------------------------- */ #ifndef TABLE_H #define TABLE_H #include "nodes/primnodes.h" #include "storage/lockdefs.h" #include "utils/relcache.h" extern Relation table_open(Oid relationId, LOCKMODE lockmode); extern Relation table_openrv(const RangeVar *relation, LOCKMODE lockmode); extern Relation table_openrv_extended(const RangeVar *relation, LOCKMODE lockmode, bool missing_ok); extern void table_close(Relation relation, LOCKMODE lockmode); #endif /* TABLE_H */ libpg_query-13-2.1.0/src/postgres/include/access/tableam.h000066400000000000000000001764751413137616400234060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tableam.h * POSTGRES table access method definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tableam.h * * NOTES * See tableam.sgml for higher level documentation. * *------------------------------------------------------------------------- */ #ifndef TABLEAM_H #define TABLEAM_H #include "access/relscan.h" #include "access/sdir.h" #include "utils/guc.h" #include "utils/rel.h" #include "utils/snapshot.h" #define DEFAULT_TABLE_ACCESS_METHOD "heap" /* GUCs */ extern char *default_table_access_method; extern bool synchronize_seqscans; struct BulkInsertStateData; struct IndexInfo; struct SampleScanState; struct TBMIterateResult; struct VacuumParams; struct ValidateIndexState; /* * Bitmask values for the flags argument to the scan_begin callback. */ typedef enum ScanOptions { /* one of SO_TYPE_* may be specified */ SO_TYPE_SEQSCAN = 1 << 0, SO_TYPE_BITMAPSCAN = 1 << 1, SO_TYPE_SAMPLESCAN = 1 << 2, SO_TYPE_TIDSCAN = 1 << 3, SO_TYPE_ANALYZE = 1 << 4, /* several of SO_ALLOW_* may be specified */ /* allow or disallow use of access strategy */ SO_ALLOW_STRAT = 1 << 5, /* report location to syncscan logic? */ SO_ALLOW_SYNC = 1 << 6, /* verify visibility page-at-a-time? */ SO_ALLOW_PAGEMODE = 1 << 7, /* unregister snapshot at scan end? */ SO_TEMP_SNAPSHOT = 1 << 8 } ScanOptions; /* * Result codes for table_{update,delete,lock_tuple}, and for visibility * routines inside table AMs. */ typedef enum TM_Result { /* * Signals that the action succeeded (i.e. update/delete performed, lock * was acquired) */ TM_Ok, /* The affected tuple wasn't visible to the relevant snapshot */ TM_Invisible, /* The affected tuple was already modified by the calling backend */ TM_SelfModified, /* * The affected tuple was updated by another transaction. This includes * the case where tuple was moved to another partition. */ TM_Updated, /* The affected tuple was deleted by another transaction */ TM_Deleted, /* * The affected tuple is currently being modified by another session. This * will only be returned if table_(update/delete/lock_tuple) are * instructed not to wait. */ TM_BeingModified, /* lock couldn't be acquired, action skipped. Only used by lock_tuple */ TM_WouldBlock } TM_Result; /* * When table_tuple_update, table_tuple_delete, or table_tuple_lock fail * because the target tuple is already outdated, they fill in this struct to * provide information to the caller about what happened. * * ctid is the target's ctid link: it is the same as the target's TID if the * target was deleted, or the location of the replacement tuple if the target * was updated. * * xmax is the outdating transaction's XID. If the caller wants to visit the * replacement tuple, it must check that this matches before believing the * replacement is really a match. * * cmax is the outdating command's CID, but only when the failure code is * TM_SelfModified (i.e., something in the current transaction outdated the * tuple); otherwise cmax is zero. (We make this restriction because * HeapTupleHeaderGetCmax doesn't work for tuples outdated in other * transactions.) */ typedef struct TM_FailureData { ItemPointerData ctid; TransactionId xmax; CommandId cmax; bool traversed; } TM_FailureData; /* "options" flag bits for table_tuple_insert */ /* TABLE_INSERT_SKIP_WAL was 0x0001; RelationNeedsWAL() now governs */ #define TABLE_INSERT_SKIP_FSM 0x0002 #define TABLE_INSERT_FROZEN 0x0004 #define TABLE_INSERT_NO_LOGICAL 0x0008 /* flag bits for table_tuple_lock */ /* Follow tuples whose update is in progress if lock modes don't conflict */ #define TUPLE_LOCK_FLAG_LOCK_UPDATE_IN_PROGRESS (1 << 0) /* Follow update chain and lock latest version of tuple */ #define TUPLE_LOCK_FLAG_FIND_LAST_VERSION (1 << 1) /* Typedef for callback function for table_index_build_scan */ typedef void (*IndexBuildCallback) (Relation index, ItemPointer tid, Datum *values, bool *isnull, bool tupleIsAlive, void *state); /* * API struct for a table AM. Note this must be allocated in a * server-lifetime manner, typically as a static const struct, which then gets * returned by FormData_pg_am.amhandler. * * In most cases it's not appropriate to call the callbacks directly, use the * table_* wrapper functions instead. * * GetTableAmRoutine() asserts that required callbacks are filled in, remember * to update when adding a callback. */ typedef struct TableAmRoutine { /* this must be set to T_TableAmRoutine */ NodeTag type; /* ------------------------------------------------------------------------ * Slot related callbacks. * ------------------------------------------------------------------------ */ /* * Return slot implementation suitable for storing a tuple of this AM. */ const TupleTableSlotOps *(*slot_callbacks) (Relation rel); /* ------------------------------------------------------------------------ * Table scan callbacks. * ------------------------------------------------------------------------ */ /* * Start a scan of `rel`. The callback has to return a TableScanDesc, * which will typically be embedded in a larger, AM specific, struct. * * If nkeys != 0, the results need to be filtered by those scan keys. * * pscan, if not NULL, will have already been initialized with * parallelscan_initialize(), and has to be for the same relation. Will * only be set coming from table_beginscan_parallel(). * * `flags` is a bitmask indicating the type of scan (ScanOptions's * SO_TYPE_*, currently only one may be specified), options controlling * the scan's behaviour (ScanOptions's SO_ALLOW_*, several may be * specified, an AM may ignore unsupported ones) and whether the snapshot * needs to be deallocated at scan_end (ScanOptions's SO_TEMP_SNAPSHOT). */ TableScanDesc (*scan_begin) (Relation rel, Snapshot snapshot, int nkeys, struct ScanKeyData *key, ParallelTableScanDesc pscan, uint32 flags); /* * Release resources and deallocate scan. If TableScanDesc.temp_snap, * TableScanDesc.rs_snapshot needs to be unregistered. */ void (*scan_end) (TableScanDesc scan); /* * Restart relation scan. If set_params is set to true, allow_{strat, * sync, pagemode} (see scan_begin) changes should be taken into account. */ void (*scan_rescan) (TableScanDesc scan, struct ScanKeyData *key, bool set_params, bool allow_strat, bool allow_sync, bool allow_pagemode); /* * Return next tuple from `scan`, store in slot. */ bool (*scan_getnextslot) (TableScanDesc scan, ScanDirection direction, TupleTableSlot *slot); /* ------------------------------------------------------------------------ * Parallel table scan related functions. * ------------------------------------------------------------------------ */ /* * Estimate the size of shared memory needed for a parallel scan of this * relation. The snapshot does not need to be accounted for. */ Size (*parallelscan_estimate) (Relation rel); /* * Initialize ParallelTableScanDesc for a parallel scan of this relation. * `pscan` will be sized according to parallelscan_estimate() for the same * relation. */ Size (*parallelscan_initialize) (Relation rel, ParallelTableScanDesc pscan); /* * Reinitialize `pscan` for a new scan. `rel` will be the same relation as * when `pscan` was initialized by parallelscan_initialize. */ void (*parallelscan_reinitialize) (Relation rel, ParallelTableScanDesc pscan); /* ------------------------------------------------------------------------ * Index Scan Callbacks * ------------------------------------------------------------------------ */ /* * Prepare to fetch tuples from the relation, as needed when fetching * tuples for an index scan. The callback has to return an * IndexFetchTableData, which the AM will typically embed in a larger * structure with additional information. * * Tuples for an index scan can then be fetched via index_fetch_tuple. */ struct IndexFetchTableData *(*index_fetch_begin) (Relation rel); /* * Reset index fetch. Typically this will release cross index fetch * resources held in IndexFetchTableData. */ void (*index_fetch_reset) (struct IndexFetchTableData *data); /* * Release resources and deallocate index fetch. */ void (*index_fetch_end) (struct IndexFetchTableData *data); /* * Fetch tuple at `tid` into `slot`, after doing a visibility test * according to `snapshot`. If a tuple was found and passed the visibility * test, return true, false otherwise. * * Note that AMs that do not necessarily update indexes when indexed * columns do not change, need to return the current/correct version of * the tuple that is visible to the snapshot, even if the tid points to an * older version of the tuple. * * *call_again is false on the first call to index_fetch_tuple for a tid. * If there potentially is another tuple matching the tid, *call_again * needs to be set to true by index_fetch_tuple, signaling to the caller * that index_fetch_tuple should be called again for the same tid. * * *all_dead, if all_dead is not NULL, should be set to true by * index_fetch_tuple iff it is guaranteed that no backend needs to see * that tuple. Index AMs can use that to avoid returning that tid in * future searches. */ bool (*index_fetch_tuple) (struct IndexFetchTableData *scan, ItemPointer tid, Snapshot snapshot, TupleTableSlot *slot, bool *call_again, bool *all_dead); /* ------------------------------------------------------------------------ * Callbacks for non-modifying operations on individual tuples * ------------------------------------------------------------------------ */ /* * Fetch tuple at `tid` into `slot`, after doing a visibility test * according to `snapshot`. If a tuple was found and passed the visibility * test, returns true, false otherwise. */ bool (*tuple_fetch_row_version) (Relation rel, ItemPointer tid, Snapshot snapshot, TupleTableSlot *slot); /* * Is tid valid for a scan of this relation. */ bool (*tuple_tid_valid) (TableScanDesc scan, ItemPointer tid); /* * Return the latest version of the tuple at `tid`, by updating `tid` to * point at the newest version. */ void (*tuple_get_latest_tid) (TableScanDesc scan, ItemPointer tid); /* * Does the tuple in `slot` satisfy `snapshot`? The slot needs to be of * the appropriate type for the AM. */ bool (*tuple_satisfies_snapshot) (Relation rel, TupleTableSlot *slot, Snapshot snapshot); /* see table_compute_xid_horizon_for_tuples() */ TransactionId (*compute_xid_horizon_for_tuples) (Relation rel, ItemPointerData *items, int nitems); /* ------------------------------------------------------------------------ * Manipulations of physical tuples. * ------------------------------------------------------------------------ */ /* see table_tuple_insert() for reference about parameters */ void (*tuple_insert) (Relation rel, TupleTableSlot *slot, CommandId cid, int options, struct BulkInsertStateData *bistate); /* see table_tuple_insert_speculative() for reference about parameters */ void (*tuple_insert_speculative) (Relation rel, TupleTableSlot *slot, CommandId cid, int options, struct BulkInsertStateData *bistate, uint32 specToken); /* see table_tuple_complete_speculative() for reference about parameters */ void (*tuple_complete_speculative) (Relation rel, TupleTableSlot *slot, uint32 specToken, bool succeeded); /* see table_multi_insert() for reference about parameters */ void (*multi_insert) (Relation rel, TupleTableSlot **slots, int nslots, CommandId cid, int options, struct BulkInsertStateData *bistate); /* see table_tuple_delete() for reference about parameters */ TM_Result (*tuple_delete) (Relation rel, ItemPointer tid, CommandId cid, Snapshot snapshot, Snapshot crosscheck, bool wait, TM_FailureData *tmfd, bool changingPart); /* see table_tuple_update() for reference about parameters */ TM_Result (*tuple_update) (Relation rel, ItemPointer otid, TupleTableSlot *slot, CommandId cid, Snapshot snapshot, Snapshot crosscheck, bool wait, TM_FailureData *tmfd, LockTupleMode *lockmode, bool *update_indexes); /* see table_tuple_lock() for reference about parameters */ TM_Result (*tuple_lock) (Relation rel, ItemPointer tid, Snapshot snapshot, TupleTableSlot *slot, CommandId cid, LockTupleMode mode, LockWaitPolicy wait_policy, uint8 flags, TM_FailureData *tmfd); /* * Perform operations necessary to complete insertions made via * tuple_insert and multi_insert with a BulkInsertState specified. In-tree * access methods ceased to use this. * * Typically callers of tuple_insert and multi_insert will just pass all * the flags that apply to them, and each AM has to decide which of them * make sense for it, and then only take actions in finish_bulk_insert for * those flags, and ignore others. * * Optional callback. */ void (*finish_bulk_insert) (Relation rel, int options); /* ------------------------------------------------------------------------ * DDL related functionality. * ------------------------------------------------------------------------ */ /* * This callback needs to create a new relation filenode for `rel`, with * appropriate durability behaviour for `persistence`. * * Note that only the subset of the relcache filled by * RelationBuildLocalRelation() can be relied upon and that the relation's * catalog entries will either not yet exist (new relation), or will still * reference the old relfilenode. * * As output *freezeXid, *minmulti must be set to the values appropriate * for pg_class.{relfrozenxid, relminmxid}. For AMs that don't need those * fields to be filled they can be set to InvalidTransactionId and * InvalidMultiXactId, respectively. * * See also table_relation_set_new_filenode(). */ void (*relation_set_new_filenode) (Relation rel, const RelFileNode *newrnode, char persistence, TransactionId *freezeXid, MultiXactId *minmulti); /* * This callback needs to remove all contents from `rel`'s current * relfilenode. No provisions for transactional behaviour need to be made. * Often this can be implemented by truncating the underlying storage to * its minimal size. * * See also table_relation_nontransactional_truncate(). */ void (*relation_nontransactional_truncate) (Relation rel); /* * See table_relation_copy_data(). * * This can typically be implemented by directly copying the underlying * storage, unless it contains references to the tablespace internally. */ void (*relation_copy_data) (Relation rel, const RelFileNode *newrnode); /* See table_relation_copy_for_cluster() */ void (*relation_copy_for_cluster) (Relation NewTable, Relation OldTable, Relation OldIndex, bool use_sort, TransactionId OldestXmin, TransactionId *xid_cutoff, MultiXactId *multi_cutoff, double *num_tuples, double *tups_vacuumed, double *tups_recently_dead); /* * React to VACUUM command on the relation. The VACUUM can be triggered by * a user or by autovacuum. The specific actions performed by the AM will * depend heavily on the individual AM. * * On entry a transaction is already established, and the relation is * locked with a ShareUpdateExclusive lock. * * Note that neither VACUUM FULL (and CLUSTER), nor ANALYZE go through * this routine, even if (for ANALYZE) it is part of the same VACUUM * command. * * There probably, in the future, needs to be a separate callback to * integrate with autovacuum's scheduling. */ void (*relation_vacuum) (Relation onerel, struct VacuumParams *params, BufferAccessStrategy bstrategy); /* * Prepare to analyze block `blockno` of `scan`. The scan has been started * with table_beginscan_analyze(). See also * table_scan_analyze_next_block(). * * The callback may acquire resources like locks that are held until * table_scan_analyze_next_tuple() returns false. It e.g. can make sense * to hold a lock until all tuples on a block have been analyzed by * scan_analyze_next_tuple. * * The callback can return false if the block is not suitable for * sampling, e.g. because it's a metapage that could never contain tuples. * * XXX: This obviously is primarily suited for block-based AMs. It's not * clear what a good interface for non block based AMs would be, so there * isn't one yet. */ bool (*scan_analyze_next_block) (TableScanDesc scan, BlockNumber blockno, BufferAccessStrategy bstrategy); /* * See table_scan_analyze_next_tuple(). * * Not every AM might have a meaningful concept of dead rows, in which * case it's OK to not increment *deadrows - but note that that may * influence autovacuum scheduling (see comment for relation_vacuum * callback). */ bool (*scan_analyze_next_tuple) (TableScanDesc scan, TransactionId OldestXmin, double *liverows, double *deadrows, TupleTableSlot *slot); /* see table_index_build_range_scan for reference about parameters */ double (*index_build_range_scan) (Relation table_rel, Relation index_rel, struct IndexInfo *index_info, bool allow_sync, bool anyvisible, bool progress, BlockNumber start_blockno, BlockNumber numblocks, IndexBuildCallback callback, void *callback_state, TableScanDesc scan); /* see table_index_validate_scan for reference about parameters */ void (*index_validate_scan) (Relation table_rel, Relation index_rel, struct IndexInfo *index_info, Snapshot snapshot, struct ValidateIndexState *state); /* ------------------------------------------------------------------------ * Miscellaneous functions. * ------------------------------------------------------------------------ */ /* * See table_relation_size(). * * Note that currently a few callers use the MAIN_FORKNUM size to figure * out the range of potentially interesting blocks (brin, analyze). It's * probable that we'll need to revise the interface for those at some * point. */ uint64 (*relation_size) (Relation rel, ForkNumber forkNumber); /* * This callback should return true if the relation requires a TOAST table * and false if it does not. It may wish to examine the relation's tuple * descriptor before making a decision, but if it uses some other method * of storing large values (or if it does not support them) it can simply * return false. */ bool (*relation_needs_toast_table) (Relation rel); /* * This callback should return the OID of the table AM that implements * TOAST tables for this AM. If the relation_needs_toast_table callback * always returns false, this callback is not required. */ Oid (*relation_toast_am) (Relation rel); /* * This callback is invoked when detoasting a value stored in a toast * table implemented by this AM. See table_relation_fetch_toast_slice() * for more details. */ void (*relation_fetch_toast_slice) (Relation toastrel, Oid valueid, int32 attrsize, int32 sliceoffset, int32 slicelength, struct varlena *result); /* ------------------------------------------------------------------------ * Planner related functions. * ------------------------------------------------------------------------ */ /* * See table_relation_estimate_size(). * * While block oriented, it shouldn't be too hard for an AM that doesn't * internally use blocks to convert into a usable representation. * * This differs from the relation_size callback by returning size * estimates (both relation size and tuple count) for planning purposes, * rather than returning a currently correct estimate. */ void (*relation_estimate_size) (Relation rel, int32 *attr_widths, BlockNumber *pages, double *tuples, double *allvisfrac); /* ------------------------------------------------------------------------ * Executor related functions. * ------------------------------------------------------------------------ */ /* * Prepare to fetch / check / return tuples from `tbmres->blockno` as part * of a bitmap table scan. `scan` was started via table_beginscan_bm(). * Return false if there are no tuples to be found on the page, true * otherwise. * * This will typically read and pin the target block, and do the necessary * work to allow scan_bitmap_next_tuple() to return tuples (e.g. it might * make sense to perform tuple visibility checks at this time). For some * AMs it will make more sense to do all the work referencing `tbmres` * contents here, for others it might be better to defer more work to * scan_bitmap_next_tuple. * * If `tbmres->blockno` is -1, this is a lossy scan and all visible tuples * on the page have to be returned, otherwise the tuples at offsets in * `tbmres->offsets` need to be returned. * * XXX: Currently this may only be implemented if the AM uses md.c as its * storage manager, and uses ItemPointer->ip_blkid in a manner that maps * blockids directly to the underlying storage. nodeBitmapHeapscan.c * performs prefetching directly using that interface. This probably * needs to be rectified at a later point. * * XXX: Currently this may only be implemented if the AM uses the * visibilitymap, as nodeBitmapHeapscan.c unconditionally accesses it to * perform prefetching. This probably needs to be rectified at a later * point. * * Optional callback, but either both scan_bitmap_next_block and * scan_bitmap_next_tuple need to exist, or neither. */ bool (*scan_bitmap_next_block) (TableScanDesc scan, struct TBMIterateResult *tbmres); /* * Fetch the next tuple of a bitmap table scan into `slot` and return true * if a visible tuple was found, false otherwise. * * For some AMs it will make more sense to do all the work referencing * `tbmres` contents in scan_bitmap_next_block, for others it might be * better to defer more work to this callback. * * Optional callback, but either both scan_bitmap_next_block and * scan_bitmap_next_tuple need to exist, or neither. */ bool (*scan_bitmap_next_tuple) (TableScanDesc scan, struct TBMIterateResult *tbmres, TupleTableSlot *slot); /* * Prepare to fetch tuples from the next block in a sample scan. Return * false if the sample scan is finished, true otherwise. `scan` was * started via table_beginscan_sampling(). * * Typically this will first determine the target block by calling the * TsmRoutine's NextSampleBlock() callback if not NULL, or alternatively * perform a sequential scan over all blocks. The determined block is * then typically read and pinned. * * As the TsmRoutine interface is block based, a block needs to be passed * to NextSampleBlock(). If that's not appropriate for an AM, it * internally needs to perform mapping between the internal and a block * based representation. * * Note that it's not acceptable to hold deadlock prone resources such as * lwlocks until scan_sample_next_tuple() has exhausted the tuples on the * block - the tuple is likely to be returned to an upper query node, and * the next call could be off a long while. Holding buffer pins and such * is obviously OK. * * Currently it is required to implement this interface, as there's no * alternative way (contrary e.g. to bitmap scans) to implement sample * scans. If infeasible to implement, the AM may raise an error. */ bool (*scan_sample_next_block) (TableScanDesc scan, struct SampleScanState *scanstate); /* * This callback, only called after scan_sample_next_block has returned * true, should determine the next tuple to be returned from the selected * block using the TsmRoutine's NextSampleTuple() callback. * * The callback needs to perform visibility checks, and only return * visible tuples. That obviously can mean calling NextSampleTuple() * multiple times. * * The TsmRoutine interface assumes that there's a maximum offset on a * given page, so if that doesn't apply to an AM, it needs to emulate that * assumption somehow. */ bool (*scan_sample_next_tuple) (TableScanDesc scan, struct SampleScanState *scanstate, TupleTableSlot *slot); } TableAmRoutine; /* ---------------------------------------------------------------------------- * Slot functions. * ---------------------------------------------------------------------------- */ /* * Returns slot callbacks suitable for holding tuples of the appropriate type * for the relation. Works for tables, views, foreign tables and partitioned * tables. */ extern const TupleTableSlotOps *table_slot_callbacks(Relation rel); /* * Returns slot using the callbacks returned by table_slot_callbacks(), and * registers it on *reglist. */ extern TupleTableSlot *table_slot_create(Relation rel, List **reglist); /* ---------------------------------------------------------------------------- * Table scan functions. * ---------------------------------------------------------------------------- */ /* * Start a scan of `rel`. Returned tuples pass a visibility test of * `snapshot`, and if nkeys != 0, the results are filtered by those scan keys. */ static inline TableScanDesc table_beginscan(Relation rel, Snapshot snapshot, int nkeys, struct ScanKeyData *key) { uint32 flags = SO_TYPE_SEQSCAN | SO_ALLOW_STRAT | SO_ALLOW_SYNC | SO_ALLOW_PAGEMODE; return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); } /* * Like table_beginscan(), but for scanning catalog. It'll automatically use a * snapshot appropriate for scanning catalog relations. */ extern TableScanDesc table_beginscan_catalog(Relation rel, int nkeys, struct ScanKeyData *key); /* * Like table_beginscan(), but table_beginscan_strat() offers an extended API * that lets the caller control whether a nondefault buffer access strategy * can be used, and whether syncscan can be chosen (possibly resulting in the * scan not starting from block zero). Both of these default to true with * plain table_beginscan. */ static inline TableScanDesc table_beginscan_strat(Relation rel, Snapshot snapshot, int nkeys, struct ScanKeyData *key, bool allow_strat, bool allow_sync) { uint32 flags = SO_TYPE_SEQSCAN | SO_ALLOW_PAGEMODE; if (allow_strat) flags |= SO_ALLOW_STRAT; if (allow_sync) flags |= SO_ALLOW_SYNC; return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); } /* * table_beginscan_bm is an alternative entry point for setting up a * TableScanDesc for a bitmap heap scan. Although that scan technology is * really quite unlike a standard seqscan, there is just enough commonality to * make it worth using the same data structure. */ static inline TableScanDesc table_beginscan_bm(Relation rel, Snapshot snapshot, int nkeys, struct ScanKeyData *key) { uint32 flags = SO_TYPE_BITMAPSCAN | SO_ALLOW_PAGEMODE; return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); } /* * table_beginscan_sampling is an alternative entry point for setting up a * TableScanDesc for a TABLESAMPLE scan. As with bitmap scans, it's worth * using the same data structure although the behavior is rather different. * In addition to the options offered by table_beginscan_strat, this call * also allows control of whether page-mode visibility checking is used. */ static inline TableScanDesc table_beginscan_sampling(Relation rel, Snapshot snapshot, int nkeys, struct ScanKeyData *key, bool allow_strat, bool allow_sync, bool allow_pagemode) { uint32 flags = SO_TYPE_SAMPLESCAN; if (allow_strat) flags |= SO_ALLOW_STRAT; if (allow_sync) flags |= SO_ALLOW_SYNC; if (allow_pagemode) flags |= SO_ALLOW_PAGEMODE; return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); } /* * table_beginscan_tid is an alternative entry point for setting up a * TableScanDesc for a Tid scan. As with bitmap scans, it's worth using * the same data structure although the behavior is rather different. */ static inline TableScanDesc table_beginscan_tid(Relation rel, Snapshot snapshot) { uint32 flags = SO_TYPE_TIDSCAN; return rel->rd_tableam->scan_begin(rel, snapshot, 0, NULL, NULL, flags); } /* * table_beginscan_analyze is an alternative entry point for setting up a * TableScanDesc for an ANALYZE scan. As with bitmap scans, it's worth using * the same data structure although the behavior is rather different. */ static inline TableScanDesc table_beginscan_analyze(Relation rel) { uint32 flags = SO_TYPE_ANALYZE; return rel->rd_tableam->scan_begin(rel, NULL, 0, NULL, NULL, flags); } /* * End relation scan. */ static inline void table_endscan(TableScanDesc scan) { scan->rs_rd->rd_tableam->scan_end(scan); } /* * Restart a relation scan. */ static inline void table_rescan(TableScanDesc scan, struct ScanKeyData *key) { scan->rs_rd->rd_tableam->scan_rescan(scan, key, false, false, false, false); } /* * Restart a relation scan after changing params. * * This call allows changing the buffer strategy, syncscan, and pagemode * options before starting a fresh scan. Note that although the actual use of * syncscan might change (effectively, enabling or disabling reporting), the * previously selected startblock will be kept. */ static inline void table_rescan_set_params(TableScanDesc scan, struct ScanKeyData *key, bool allow_strat, bool allow_sync, bool allow_pagemode) { scan->rs_rd->rd_tableam->scan_rescan(scan, key, true, allow_strat, allow_sync, allow_pagemode); } /* * Update snapshot used by the scan. */ extern void table_scan_update_snapshot(TableScanDesc scan, Snapshot snapshot); /* * Return next tuple from `scan`, store in slot. */ static inline bool table_scan_getnextslot(TableScanDesc sscan, ScanDirection direction, TupleTableSlot *slot) { slot->tts_tableOid = RelationGetRelid(sscan->rs_rd); return sscan->rs_rd->rd_tableam->scan_getnextslot(sscan, direction, slot); } /* ---------------------------------------------------------------------------- * Parallel table scan related functions. * ---------------------------------------------------------------------------- */ /* * Estimate the size of shared memory needed for a parallel scan of this * relation. */ extern Size table_parallelscan_estimate(Relation rel, Snapshot snapshot); /* * Initialize ParallelTableScanDesc for a parallel scan of this * relation. `pscan` needs to be sized according to parallelscan_estimate() * for the same relation. Call this just once in the leader process; then, * individual workers attach via table_beginscan_parallel. */ extern void table_parallelscan_initialize(Relation rel, ParallelTableScanDesc pscan, Snapshot snapshot); /* * Begin a parallel scan. `pscan` needs to have been initialized with * table_parallelscan_initialize(), for the same relation. The initialization * does not need to have happened in this backend. * * Caller must hold a suitable lock on the relation. */ extern TableScanDesc table_beginscan_parallel(Relation rel, ParallelTableScanDesc pscan); /* * Restart a parallel scan. Call this in the leader process. Caller is * responsible for making sure that all workers have finished the scan * beforehand. */ static inline void table_parallelscan_reinitialize(Relation rel, ParallelTableScanDesc pscan) { rel->rd_tableam->parallelscan_reinitialize(rel, pscan); } /* ---------------------------------------------------------------------------- * Index scan related functions. * ---------------------------------------------------------------------------- */ /* * Prepare to fetch tuples from the relation, as needed when fetching tuples * for an index scan. * * Tuples for an index scan can then be fetched via table_index_fetch_tuple(). */ static inline IndexFetchTableData * table_index_fetch_begin(Relation rel) { return rel->rd_tableam->index_fetch_begin(rel); } /* * Reset index fetch. Typically this will release cross index fetch resources * held in IndexFetchTableData. */ static inline void table_index_fetch_reset(struct IndexFetchTableData *scan) { scan->rel->rd_tableam->index_fetch_reset(scan); } /* * Release resources and deallocate index fetch. */ static inline void table_index_fetch_end(struct IndexFetchTableData *scan) { scan->rel->rd_tableam->index_fetch_end(scan); } /* * Fetches, as part of an index scan, tuple at `tid` into `slot`, after doing * a visibility test according to `snapshot`. If a tuple was found and passed * the visibility test, returns true, false otherwise. Note that *tid may be * modified when we return true (see later remarks on multiple row versions * reachable via a single index entry). * * *call_again needs to be false on the first call to table_index_fetch_tuple() for * a tid. If there potentially is another tuple matching the tid, *call_again * will be set to true, signaling that table_index_fetch_tuple() should be called * again for the same tid. * * *all_dead, if all_dead is not NULL, will be set to true by * table_index_fetch_tuple() iff it is guaranteed that no backend needs to see * that tuple. Index AMs can use that to avoid returning that tid in future * searches. * * The difference between this function and table_tuple_fetch_row_version() * is that this function returns the currently visible version of a row if * the AM supports storing multiple row versions reachable via a single index * entry (like heap's HOT). Whereas table_tuple_fetch_row_version() only * evaluates the tuple exactly at `tid`. Outside of index entry ->table tuple * lookups, table_tuple_fetch_row_version() is what's usually needed. */ static inline bool table_index_fetch_tuple(struct IndexFetchTableData *scan, ItemPointer tid, Snapshot snapshot, TupleTableSlot *slot, bool *call_again, bool *all_dead) { return scan->rel->rd_tableam->index_fetch_tuple(scan, tid, snapshot, slot, call_again, all_dead); } /* * This is a convenience wrapper around table_index_fetch_tuple() which * returns whether there are table tuple items corresponding to an index * entry. This likely is only useful to verify if there's a conflict in a * unique index. */ extern bool table_index_fetch_tuple_check(Relation rel, ItemPointer tid, Snapshot snapshot, bool *all_dead); /* ------------------------------------------------------------------------ * Functions for non-modifying operations on individual tuples * ------------------------------------------------------------------------ */ /* * Fetch tuple at `tid` into `slot`, after doing a visibility test according to * `snapshot`. If a tuple was found and passed the visibility test, returns * true, false otherwise. * * See table_index_fetch_tuple's comment about what the difference between * these functions is. It is correct to use this function outside of index * entry->table tuple lookups. */ static inline bool table_tuple_fetch_row_version(Relation rel, ItemPointer tid, Snapshot snapshot, TupleTableSlot *slot) { return rel->rd_tableam->tuple_fetch_row_version(rel, tid, snapshot, slot); } /* * Verify that `tid` is a potentially valid tuple identifier. That doesn't * mean that the pointed to row needs to exist or be visible, but that * attempting to fetch the row (e.g. with table_tuple_get_latest_tid() or * table_tuple_fetch_row_version()) should not error out if called with that * tid. * * `scan` needs to have been started via table_beginscan(). */ static inline bool table_tuple_tid_valid(TableScanDesc scan, ItemPointer tid) { return scan->rs_rd->rd_tableam->tuple_tid_valid(scan, tid); } /* * Return the latest version of the tuple at `tid`, by updating `tid` to * point at the newest version. */ extern void table_tuple_get_latest_tid(TableScanDesc scan, ItemPointer tid); /* * Return true iff tuple in slot satisfies the snapshot. * * This assumes the slot's tuple is valid, and of the appropriate type for the * AM. * * Some AMs might modify the data underlying the tuple as a side-effect. If so * they ought to mark the relevant buffer dirty. */ static inline bool table_tuple_satisfies_snapshot(Relation rel, TupleTableSlot *slot, Snapshot snapshot) { return rel->rd_tableam->tuple_satisfies_snapshot(rel, slot, snapshot); } /* * Compute the newest xid among the tuples pointed to by items. This is used * to compute what snapshots to conflict with when replaying WAL records for * page-level index vacuums. */ static inline TransactionId table_compute_xid_horizon_for_tuples(Relation rel, ItemPointerData *items, int nitems) { return rel->rd_tableam->compute_xid_horizon_for_tuples(rel, items, nitems); } /* ---------------------------------------------------------------------------- * Functions for manipulations of physical tuples. * ---------------------------------------------------------------------------- */ /* * Insert a tuple from a slot into table AM routine. * * The options bitmask allows the caller to specify options that may change the * behaviour of the AM. The AM will ignore options that it does not support. * * If the TABLE_INSERT_SKIP_FSM option is specified, AMs are free to not reuse * free space in the relation. This can save some cycles when we know the * relation is new and doesn't contain useful amounts of free space. * TABLE_INSERT_SKIP_FSM is commonly passed directly to * RelationGetBufferForTuple. See that method for more information. * * TABLE_INSERT_FROZEN should only be specified for inserts into * relfilenodes created during the current subtransaction and when * there are no prior snapshots or pre-existing portals open. * This causes rows to be frozen, which is an MVCC violation and * requires explicit options chosen by user. * * TABLE_INSERT_NO_LOGICAL force-disables the emitting of logical decoding * information for the tuple. This should solely be used during table rewrites * where RelationIsLogicallyLogged(relation) is not yet accurate for the new * relation. * * Note that most of these options will be applied when inserting into the * heap's TOAST table, too, if the tuple requires any out-of-line data. * * The BulkInsertState object (if any; bistate can be NULL for default * behavior) is also just passed through to RelationGetBufferForTuple. If * `bistate` is provided, table_finish_bulk_insert() needs to be called. * * On return the slot's tts_tid and tts_tableOid are updated to reflect the * insertion. But note that any toasting of fields within the slot is NOT * reflected in the slots contents. */ static inline void table_tuple_insert(Relation rel, TupleTableSlot *slot, CommandId cid, int options, struct BulkInsertStateData *bistate) { rel->rd_tableam->tuple_insert(rel, slot, cid, options, bistate); } /* * Perform a "speculative insertion". These can be backed out afterwards * without aborting the whole transaction. Other sessions can wait for the * speculative insertion to be confirmed, turning it into a regular tuple, or * aborted, as if it never existed. Speculatively inserted tuples behave as * "value locks" of short duration, used to implement INSERT .. ON CONFLICT. * * A transaction having performed a speculative insertion has to either abort, * or finish the speculative insertion with * table_tuple_complete_speculative(succeeded = ...). */ static inline void table_tuple_insert_speculative(Relation rel, TupleTableSlot *slot, CommandId cid, int options, struct BulkInsertStateData *bistate, uint32 specToken) { rel->rd_tableam->tuple_insert_speculative(rel, slot, cid, options, bistate, specToken); } /* * Complete "speculative insertion" started in the same transaction. If * succeeded is true, the tuple is fully inserted, if false, it's removed. */ static inline void table_tuple_complete_speculative(Relation rel, TupleTableSlot *slot, uint32 specToken, bool succeeded) { rel->rd_tableam->tuple_complete_speculative(rel, slot, specToken, succeeded); } /* * Insert multiple tuples into a table. * * This is like table_tuple_insert(), but inserts multiple tuples in one * operation. That's often faster than calling table_tuple_insert() in a loop, * because e.g. the AM can reduce WAL logging and page locking overhead. * * Except for taking `nslots` tuples as input, and an array of TupleTableSlots * in `slots`, the parameters for table_multi_insert() are the same as for * table_tuple_insert(). * * Note: this leaks memory into the current memory context. You can create a * temporary context before calling this, if that's a problem. */ static inline void table_multi_insert(Relation rel, TupleTableSlot **slots, int nslots, CommandId cid, int options, struct BulkInsertStateData *bistate) { rel->rd_tableam->multi_insert(rel, slots, nslots, cid, options, bistate); } /* * Delete a tuple. * * NB: do not call this directly unless prepared to deal with * concurrent-update conditions. Use simple_table_tuple_delete instead. * * Input parameters: * relation - table to be modified (caller must hold suitable lock) * tid - TID of tuple to be deleted * cid - delete command ID (used for visibility test, and stored into * cmax if successful) * crosscheck - if not InvalidSnapshot, also check tuple against this * wait - true if should wait for any conflicting update to commit/abort * Output parameters: * tmfd - filled in failure cases (see below) * changingPart - true iff the tuple is being moved to another partition * table due to an update of the partition key. Otherwise, false. * * Normal, successful return value is TM_Ok, which means we did actually * delete it. Failure return codes are TM_SelfModified, TM_Updated, and * TM_BeingModified (the last only possible if wait == false). * * In the failure cases, the routine fills *tmfd with the tuple's t_ctid, * t_xmax, and, if possible, and, if possible, t_cmax. See comments for * struct TM_FailureData for additional info. */ static inline TM_Result table_tuple_delete(Relation rel, ItemPointer tid, CommandId cid, Snapshot snapshot, Snapshot crosscheck, bool wait, TM_FailureData *tmfd, bool changingPart) { return rel->rd_tableam->tuple_delete(rel, tid, cid, snapshot, crosscheck, wait, tmfd, changingPart); } /* * Update a tuple. * * NB: do not call this directly unless you are prepared to deal with * concurrent-update conditions. Use simple_table_tuple_update instead. * * Input parameters: * relation - table to be modified (caller must hold suitable lock) * otid - TID of old tuple to be replaced * slot - newly constructed tuple data to store * cid - update command ID (used for visibility test, and stored into * cmax/cmin if successful) * crosscheck - if not InvalidSnapshot, also check old tuple against this * wait - true if should wait for any conflicting update to commit/abort * Output parameters: * tmfd - filled in failure cases (see below) * lockmode - filled with lock mode acquired on tuple * update_indexes - in success cases this is set to true if new index entries * are required for this tuple * * Normal, successful return value is TM_Ok, which means we did actually * update it. Failure return codes are TM_SelfModified, TM_Updated, and * TM_BeingModified (the last only possible if wait == false). * * On success, the slot's tts_tid and tts_tableOid are updated to match the new * stored tuple; in particular, slot->tts_tid is set to the TID where the * new tuple was inserted, and its HEAP_ONLY_TUPLE flag is set iff a HOT * update was done. However, any TOAST changes in the new tuple's * data are not reflected into *newtup. * * In the failure cases, the routine fills *tmfd with the tuple's t_ctid, * t_xmax, and, if possible, t_cmax. See comments for struct TM_FailureData * for additional info. */ static inline TM_Result table_tuple_update(Relation rel, ItemPointer otid, TupleTableSlot *slot, CommandId cid, Snapshot snapshot, Snapshot crosscheck, bool wait, TM_FailureData *tmfd, LockTupleMode *lockmode, bool *update_indexes) { return rel->rd_tableam->tuple_update(rel, otid, slot, cid, snapshot, crosscheck, wait, tmfd, lockmode, update_indexes); } /* * Lock a tuple in the specified mode. * * Input parameters: * relation: relation containing tuple (caller must hold suitable lock) * tid: TID of tuple to lock * snapshot: snapshot to use for visibility determinations * cid: current command ID (used for visibility test, and stored into * tuple's cmax if lock is successful) * mode: lock mode desired * wait_policy: what to do if tuple lock is not available * flags: * If TUPLE_LOCK_FLAG_LOCK_UPDATE_IN_PROGRESS, follow the update chain to * also lock descendant tuples if lock modes don't conflict. * If TUPLE_LOCK_FLAG_FIND_LAST_VERSION, follow the update chain and lock * latest version. * * Output parameters: * *slot: contains the target tuple * *tmfd: filled in failure cases (see below) * * Function result may be: * TM_Ok: lock was successfully acquired * TM_Invisible: lock failed because tuple was never visible to us * TM_SelfModified: lock failed because tuple updated by self * TM_Updated: lock failed because tuple updated by other xact * TM_Deleted: lock failed because tuple deleted by other xact * TM_WouldBlock: lock couldn't be acquired and wait_policy is skip * * In the failure cases other than TM_Invisible and TM_Deleted, the routine * fills *tmfd with the tuple's t_ctid, t_xmax, and, if possible, t_cmax. See * comments for struct TM_FailureData for additional info. */ static inline TM_Result table_tuple_lock(Relation rel, ItemPointer tid, Snapshot snapshot, TupleTableSlot *slot, CommandId cid, LockTupleMode mode, LockWaitPolicy wait_policy, uint8 flags, TM_FailureData *tmfd) { return rel->rd_tableam->tuple_lock(rel, tid, snapshot, slot, cid, mode, wait_policy, flags, tmfd); } /* * Perform operations necessary to complete insertions made via * tuple_insert and multi_insert with a BulkInsertState specified. */ static inline void table_finish_bulk_insert(Relation rel, int options) { /* optional callback */ if (rel->rd_tableam && rel->rd_tableam->finish_bulk_insert) rel->rd_tableam->finish_bulk_insert(rel, options); } /* ------------------------------------------------------------------------ * DDL related functionality. * ------------------------------------------------------------------------ */ /* * Create storage for `rel` in `newrnode`, with persistence set to * `persistence`. * * This is used both during relation creation and various DDL operations to * create a new relfilenode that can be filled from scratch. When creating * new storage for an existing relfilenode, this should be called before the * relcache entry has been updated. * * *freezeXid, *minmulti are set to the xid / multixact horizon for the table * that pg_class.{relfrozenxid, relminmxid} have to be set to. */ static inline void table_relation_set_new_filenode(Relation rel, const RelFileNode *newrnode, char persistence, TransactionId *freezeXid, MultiXactId *minmulti) { rel->rd_tableam->relation_set_new_filenode(rel, newrnode, persistence, freezeXid, minmulti); } /* * Remove all table contents from `rel`, in a non-transactional manner. * Non-transactional meaning that there's no need to support rollbacks. This * commonly only is used to perform truncations for relfilenodes created in the * current transaction. */ static inline void table_relation_nontransactional_truncate(Relation rel) { rel->rd_tableam->relation_nontransactional_truncate(rel); } /* * Copy data from `rel` into the new relfilenode `newrnode`. The new * relfilenode may not have storage associated before this function is * called. This is only supposed to be used for low level operations like * changing a relation's tablespace. */ static inline void table_relation_copy_data(Relation rel, const RelFileNode *newrnode) { rel->rd_tableam->relation_copy_data(rel, newrnode); } /* * Copy data from `OldTable` into `NewTable`, as part of a CLUSTER or VACUUM * FULL. * * Additional Input parameters: * - use_sort - if true, the table contents are sorted appropriate for * `OldIndex`; if false and OldIndex is not InvalidOid, the data is copied * in that index's order; if false and OldIndex is InvalidOid, no sorting is * performed * - OldIndex - see use_sort * - OldestXmin - computed by vacuum_set_xid_limits(), even when * not needed for the relation's AM * - *xid_cutoff - ditto * - *multi_cutoff - ditto * * Output parameters: * - *xid_cutoff - rel's new relfrozenxid value, may be invalid * - *multi_cutoff - rel's new relminmxid value, may be invalid * - *tups_vacuumed - stats, for logging, if appropriate for AM * - *tups_recently_dead - stats, for logging, if appropriate for AM */ static inline void table_relation_copy_for_cluster(Relation OldTable, Relation NewTable, Relation OldIndex, bool use_sort, TransactionId OldestXmin, TransactionId *xid_cutoff, MultiXactId *multi_cutoff, double *num_tuples, double *tups_vacuumed, double *tups_recently_dead) { OldTable->rd_tableam->relation_copy_for_cluster(OldTable, NewTable, OldIndex, use_sort, OldestXmin, xid_cutoff, multi_cutoff, num_tuples, tups_vacuumed, tups_recently_dead); } /* * Perform VACUUM on the relation. The VACUUM can be triggered by a user or by * autovacuum. The specific actions performed by the AM will depend heavily on * the individual AM. * * On entry a transaction needs to already been established, and the * table is locked with a ShareUpdateExclusive lock. * * Note that neither VACUUM FULL (and CLUSTER), nor ANALYZE go through this * routine, even if (for ANALYZE) it is part of the same VACUUM command. */ static inline void table_relation_vacuum(Relation rel, struct VacuumParams *params, BufferAccessStrategy bstrategy) { rel->rd_tableam->relation_vacuum(rel, params, bstrategy); } /* * Prepare to analyze block `blockno` of `scan`. The scan needs to have been * started with table_beginscan_analyze(). Note that this routine might * acquire resources like locks that are held until * table_scan_analyze_next_tuple() returns false. * * Returns false if block is unsuitable for sampling, true otherwise. */ static inline bool table_scan_analyze_next_block(TableScanDesc scan, BlockNumber blockno, BufferAccessStrategy bstrategy) { return scan->rs_rd->rd_tableam->scan_analyze_next_block(scan, blockno, bstrategy); } /* * Iterate over tuples in the block selected with * table_scan_analyze_next_block() (which needs to have returned true, and * this routine may not have returned false for the same block before). If a * tuple that's suitable for sampling is found, true is returned and a tuple * is stored in `slot`. * * *liverows and *deadrows are incremented according to the encountered * tuples. */ static inline bool table_scan_analyze_next_tuple(TableScanDesc scan, TransactionId OldestXmin, double *liverows, double *deadrows, TupleTableSlot *slot) { return scan->rs_rd->rd_tableam->scan_analyze_next_tuple(scan, OldestXmin, liverows, deadrows, slot); } /* * table_index_build_scan - scan the table to find tuples to be indexed * * This is called back from an access-method-specific index build procedure * after the AM has done whatever setup it needs. The parent table relation * is scanned to find tuples that should be entered into the index. Each * such tuple is passed to the AM's callback routine, which does the right * things to add it to the new index. After we return, the AM's index * build procedure does whatever cleanup it needs. * * The total count of live tuples is returned. This is for updating pg_class * statistics. (It's annoying not to be able to do that here, but we want to * merge that update with others; see index_update_stats.) Note that the * index AM itself must keep track of the number of index tuples; we don't do * so here because the AM might reject some of the tuples for its own reasons, * such as being unable to store NULLs. * * If 'progress', the PROGRESS_SCAN_BLOCKS_TOTAL counter is updated when * starting the scan, and PROGRESS_SCAN_BLOCKS_DONE is updated as we go along. * * A side effect is to set indexInfo->ii_BrokenHotChain to true if we detect * any potentially broken HOT chains. Currently, we set this if there are any * RECENTLY_DEAD or DELETE_IN_PROGRESS entries in a HOT chain, without trying * very hard to detect whether they're really incompatible with the chain tip. * This only really makes sense for heap AM, it might need to be generalized * for other AMs later. */ static inline double table_index_build_scan(Relation table_rel, Relation index_rel, struct IndexInfo *index_info, bool allow_sync, bool progress, IndexBuildCallback callback, void *callback_state, TableScanDesc scan) { return table_rel->rd_tableam->index_build_range_scan(table_rel, index_rel, index_info, allow_sync, false, progress, 0, InvalidBlockNumber, callback, callback_state, scan); } /* * As table_index_build_scan(), except that instead of scanning the complete * table, only the given number of blocks are scanned. Scan to end-of-rel can * be signaled by passing InvalidBlockNumber as numblocks. Note that * restricting the range to scan cannot be done when requesting syncscan. * * When "anyvisible" mode is requested, all tuples visible to any transaction * are indexed and counted as live, including those inserted or deleted by * transactions that are still in progress. */ static inline double table_index_build_range_scan(Relation table_rel, Relation index_rel, struct IndexInfo *index_info, bool allow_sync, bool anyvisible, bool progress, BlockNumber start_blockno, BlockNumber numblocks, IndexBuildCallback callback, void *callback_state, TableScanDesc scan) { return table_rel->rd_tableam->index_build_range_scan(table_rel, index_rel, index_info, allow_sync, anyvisible, progress, start_blockno, numblocks, callback, callback_state, scan); } /* * table_index_validate_scan - second table scan for concurrent index build * * See validate_index() for an explanation. */ static inline void table_index_validate_scan(Relation table_rel, Relation index_rel, struct IndexInfo *index_info, Snapshot snapshot, struct ValidateIndexState *state) { table_rel->rd_tableam->index_validate_scan(table_rel, index_rel, index_info, snapshot, state); } /* ---------------------------------------------------------------------------- * Miscellaneous functionality * ---------------------------------------------------------------------------- */ /* * Return the current size of `rel` in bytes. If `forkNumber` is * InvalidForkNumber, return the relation's overall size, otherwise the size * for the indicated fork. * * Note that the overall size might not be the equivalent of the sum of sizes * for the individual forks for some AMs, e.g. because the AMs storage does * not neatly map onto the builtin types of forks. */ static inline uint64 table_relation_size(Relation rel, ForkNumber forkNumber) { return rel->rd_tableam->relation_size(rel, forkNumber); } /* * table_relation_needs_toast_table - does this relation need a toast table? */ static inline bool table_relation_needs_toast_table(Relation rel) { return rel->rd_tableam->relation_needs_toast_table(rel); } /* * Return the OID of the AM that should be used to implement the TOAST table * for this relation. */ static inline Oid table_relation_toast_am(Relation rel) { return rel->rd_tableam->relation_toast_am(rel); } /* * Fetch all or part of a TOAST value from a TOAST table. * * If this AM is never used to implement a TOAST table, then this callback * is not needed. But, if toasted values are ever stored in a table of this * type, then you will need this callback. * * toastrel is the relation in which the toasted value is stored. * * valueid identifes which toast value is to be fetched. For the heap, * this corresponds to the values stored in the chunk_id column. * * attrsize is the total size of the toast value to be fetched. * * sliceoffset is the offset within the toast value of the first byte that * should be fetched. * * slicelength is the number of bytes from the toast value that should be * fetched. * * result is caller-allocated space into which the fetched bytes should be * stored. */ static inline void table_relation_fetch_toast_slice(Relation toastrel, Oid valueid, int32 attrsize, int32 sliceoffset, int32 slicelength, struct varlena *result) { toastrel->rd_tableam->relation_fetch_toast_slice(toastrel, valueid, attrsize, sliceoffset, slicelength, result); } /* ---------------------------------------------------------------------------- * Planner related functionality * ---------------------------------------------------------------------------- */ /* * Estimate the current size of the relation, as an AM specific workhorse for * estimate_rel_size(). Look there for an explanation of the parameters. */ static inline void table_relation_estimate_size(Relation rel, int32 *attr_widths, BlockNumber *pages, double *tuples, double *allvisfrac) { rel->rd_tableam->relation_estimate_size(rel, attr_widths, pages, tuples, allvisfrac); } /* ---------------------------------------------------------------------------- * Executor related functionality * ---------------------------------------------------------------------------- */ /* * Prepare to fetch / check / return tuples from `tbmres->blockno` as part of * a bitmap table scan. `scan` needs to have been started via * table_beginscan_bm(). Returns false if there are no tuples to be found on * the page, true otherwise. * * Note, this is an optionally implemented function, therefore should only be * used after verifying the presence (at plan time or such). */ static inline bool table_scan_bitmap_next_block(TableScanDesc scan, struct TBMIterateResult *tbmres) { return scan->rs_rd->rd_tableam->scan_bitmap_next_block(scan, tbmres); } /* * Fetch the next tuple of a bitmap table scan into `slot` and return true if * a visible tuple was found, false otherwise. * table_scan_bitmap_next_block() needs to previously have selected a * block (i.e. returned true), and no previous * table_scan_bitmap_next_tuple() for the same block may have * returned false. */ static inline bool table_scan_bitmap_next_tuple(TableScanDesc scan, struct TBMIterateResult *tbmres, TupleTableSlot *slot) { return scan->rs_rd->rd_tableam->scan_bitmap_next_tuple(scan, tbmres, slot); } /* * Prepare to fetch tuples from the next block in a sample scan. Returns false * if the sample scan is finished, true otherwise. `scan` needs to have been * started via table_beginscan_sampling(). * * This will call the TsmRoutine's NextSampleBlock() callback if necessary * (i.e. NextSampleBlock is not NULL), or perform a sequential scan over the * underlying relation. */ static inline bool table_scan_sample_next_block(TableScanDesc scan, struct SampleScanState *scanstate) { return scan->rs_rd->rd_tableam->scan_sample_next_block(scan, scanstate); } /* * Fetch the next sample tuple into `slot` and return true if a visible tuple * was found, false otherwise. table_scan_sample_next_block() needs to * previously have selected a block (i.e. returned true), and no previous * table_scan_sample_next_tuple() for the same block may have returned false. * * This will call the TsmRoutine's NextSampleTuple() callback. */ static inline bool table_scan_sample_next_tuple(TableScanDesc scan, struct SampleScanState *scanstate, TupleTableSlot *slot) { return scan->rs_rd->rd_tableam->scan_sample_next_tuple(scan, scanstate, slot); } /* ---------------------------------------------------------------------------- * Functions to make modifications a bit simpler. * ---------------------------------------------------------------------------- */ extern void simple_table_tuple_insert(Relation rel, TupleTableSlot *slot); extern void simple_table_tuple_delete(Relation rel, ItemPointer tid, Snapshot snapshot); extern void simple_table_tuple_update(Relation rel, ItemPointer otid, TupleTableSlot *slot, Snapshot snapshot, bool *update_indexes); /* ---------------------------------------------------------------------------- * Helper functions to implement parallel scans for block oriented AMs. * ---------------------------------------------------------------------------- */ extern Size table_block_parallelscan_estimate(Relation rel); extern Size table_block_parallelscan_initialize(Relation rel, ParallelTableScanDesc pscan); extern void table_block_parallelscan_reinitialize(Relation rel, ParallelTableScanDesc pscan); extern BlockNumber table_block_parallelscan_nextpage(Relation rel, ParallelBlockTableScanDesc pbscan); extern void table_block_parallelscan_startblock_init(Relation rel, ParallelBlockTableScanDesc pbscan); /* ---------------------------------------------------------------------------- * Helper functions to implement relation sizing for block oriented AMs. * ---------------------------------------------------------------------------- */ extern uint64 table_block_relation_size(Relation rel, ForkNumber forkNumber); extern void table_block_relation_estimate_size(Relation rel, int32 *attr_widths, BlockNumber *pages, double *tuples, double *allvisfrac, Size overhead_bytes_per_tuple, Size usable_bytes_per_page); /* ---------------------------------------------------------------------------- * Functions in tableamapi.c * ---------------------------------------------------------------------------- */ extern const TableAmRoutine *GetTableAmRoutine(Oid amhandler); extern const TableAmRoutine *GetHeapamTableAmRoutine(void); extern bool check_default_table_access_method(char **newval, void **extra, GucSource source); #endif /* TABLEAM_H */ libpg_query-13-2.1.0/src/postgres/include/access/transam.h000066400000000000000000000223041413137616400234230ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * transam.h * postgres transaction access method support code * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/transam.h * *------------------------------------------------------------------------- */ #ifndef TRANSAM_H #define TRANSAM_H #include "access/xlogdefs.h" /* ---------------- * Special transaction ID values * * BootstrapTransactionId is the XID for "bootstrap" operations, and * FrozenTransactionId is used for very old tuples. Both should * always be considered valid. * * FirstNormalTransactionId is the first "normal" transaction id. * Note: if you need to change it, you must change pg_class.h as well. * ---------------- */ #define InvalidTransactionId ((TransactionId) 0) #define BootstrapTransactionId ((TransactionId) 1) #define FrozenTransactionId ((TransactionId) 2) #define FirstNormalTransactionId ((TransactionId) 3) #define MaxTransactionId ((TransactionId) 0xFFFFFFFF) /* ---------------- * transaction ID manipulation macros * ---------------- */ #define TransactionIdIsValid(xid) ((xid) != InvalidTransactionId) #define TransactionIdIsNormal(xid) ((xid) >= FirstNormalTransactionId) #define TransactionIdEquals(id1, id2) ((id1) == (id2)) #define TransactionIdStore(xid, dest) (*(dest) = (xid)) #define StoreInvalidTransactionId(dest) (*(dest) = InvalidTransactionId) #define EpochFromFullTransactionId(x) ((uint32) ((x).value >> 32)) #define XidFromFullTransactionId(x) ((uint32) (x).value) #define U64FromFullTransactionId(x) ((x).value) #define FullTransactionIdEquals(a, b) ((a).value == (b).value) #define FullTransactionIdPrecedes(a, b) ((a).value < (b).value) #define FullTransactionIdPrecedesOrEquals(a, b) ((a).value <= (b).value) #define FullTransactionIdFollows(a, b) ((a).value > (b).value) #define FullTransactionIdFollowsOrEquals(a, b) ((a).value >= (b).value) #define FullTransactionIdIsValid(x) TransactionIdIsValid(XidFromFullTransactionId(x)) #define InvalidFullTransactionId FullTransactionIdFromEpochAndXid(0, InvalidTransactionId) /* * A 64 bit value that contains an epoch and a TransactionId. This is * wrapped in a struct to prevent implicit conversion to/from TransactionId. * Not all values represent valid normal XIDs. */ typedef struct FullTransactionId { uint64 value; } FullTransactionId; static inline FullTransactionId FullTransactionIdFromEpochAndXid(uint32 epoch, TransactionId xid) { FullTransactionId result; result.value = ((uint64) epoch) << 32 | xid; return result; } static inline FullTransactionId FullTransactionIdFromU64(uint64 value) { FullTransactionId result; result.value = value; return result; } /* advance a transaction ID variable, handling wraparound correctly */ #define TransactionIdAdvance(dest) \ do { \ (dest)++; \ if ((dest) < FirstNormalTransactionId) \ (dest) = FirstNormalTransactionId; \ } while(0) /* advance a FullTransactionId variable, stepping over special XIDs */ static inline void FullTransactionIdAdvance(FullTransactionId *dest) { dest->value++; while (XidFromFullTransactionId(*dest) < FirstNormalTransactionId) dest->value++; } /* back up a transaction ID variable, handling wraparound correctly */ #define TransactionIdRetreat(dest) \ do { \ (dest)--; \ } while ((dest) < FirstNormalTransactionId) /* compare two XIDs already known to be normal; this is a macro for speed */ #define NormalTransactionIdPrecedes(id1, id2) \ (AssertMacro(TransactionIdIsNormal(id1) && TransactionIdIsNormal(id2)), \ (int32) ((id1) - (id2)) < 0) /* compare two XIDs already known to be normal; this is a macro for speed */ #define NormalTransactionIdFollows(id1, id2) \ (AssertMacro(TransactionIdIsNormal(id1) && TransactionIdIsNormal(id2)), \ (int32) ((id1) - (id2)) > 0) /* ---------- * Object ID (OID) zero is InvalidOid. * * OIDs 1-9999 are reserved for manual assignment (see .dat files in * src/include/catalog/). Of these, 8000-9999 are reserved for * development purposes (such as in-progress patches and forks); * they should not appear in released versions. * * OIDs 10000-11999 are reserved for assignment by genbki.pl, for use * when the .dat files in src/include/catalog/ do not specify an OID * for a catalog entry that requires one. * * OIDS 12000-16383 are reserved for assignment during initdb * using the OID generator. (We start the generator at 12000.) * * OIDs beginning at 16384 are assigned from the OID generator * during normal multiuser operation. (We force the generator up to * 16384 as soon as we are in normal operation.) * * The choices of 8000, 10000 and 12000 are completely arbitrary, and can be * moved if we run low on OIDs in any category. Changing the macros below, * and updating relevant documentation (see bki.sgml and RELEASE_CHANGES), * should be sufficient to do this. Moving the 16384 boundary between * initdb-assigned OIDs and user-defined objects would be substantially * more painful, however, since some user-defined OIDs will appear in * on-disk data; such a change would probably break pg_upgrade. * * NOTE: if the OID generator wraps around, we skip over OIDs 0-16383 * and resume with 16384. This minimizes the odds of OID conflict, by not * reassigning OIDs that might have been assigned during initdb. * ---------- */ #define FirstGenbkiObjectId 10000 #define FirstBootstrapObjectId 12000 #define FirstNormalObjectId 16384 /* * VariableCache is a data structure in shared memory that is used to track * OID and XID assignment state. For largely historical reasons, there is * just one struct with different fields that are protected by different * LWLocks. * * Note: xidWrapLimit and oldestXidDB are not "active" values, but are * used just to generate useful messages when xidWarnLimit or xidStopLimit * are exceeded. */ typedef struct VariableCacheData { /* * These fields are protected by OidGenLock. */ Oid nextOid; /* next OID to assign */ uint32 oidCount; /* OIDs available before must do XLOG work */ /* * These fields are protected by XidGenLock. */ FullTransactionId nextFullXid; /* next full XID to assign */ TransactionId oldestXid; /* cluster-wide minimum datfrozenxid */ TransactionId xidVacLimit; /* start forcing autovacuums here */ TransactionId xidWarnLimit; /* start complaining here */ TransactionId xidStopLimit; /* refuse to advance nextFullXid beyond here */ TransactionId xidWrapLimit; /* where the world ends */ Oid oldestXidDB; /* database with minimum datfrozenxid */ /* * These fields are protected by CommitTsLock */ TransactionId oldestCommitTsXid; TransactionId newestCommitTsXid; /* * These fields are protected by ProcArrayLock. */ TransactionId latestCompletedXid; /* newest XID that has committed or * aborted */ /* * These fields are protected by XactTruncationLock */ TransactionId oldestClogXid; /* oldest it's safe to look up in clog */ } VariableCacheData; typedef VariableCacheData *VariableCache; /* ---------------- * extern declarations * ---------------- */ /* in transam/xact.c */ extern bool TransactionStartedDuringRecovery(void); /* in transam/varsup.c */ extern PGDLLIMPORT VariableCache ShmemVariableCache; /* * prototypes for functions in transam/transam.c */ extern bool TransactionIdDidCommit(TransactionId transactionId); extern bool TransactionIdDidAbort(TransactionId transactionId); extern bool TransactionIdIsKnownCompleted(TransactionId transactionId); extern void TransactionIdCommitTree(TransactionId xid, int nxids, TransactionId *xids); extern void TransactionIdAsyncCommitTree(TransactionId xid, int nxids, TransactionId *xids, XLogRecPtr lsn); extern void TransactionIdAbortTree(TransactionId xid, int nxids, TransactionId *xids); extern bool TransactionIdPrecedes(TransactionId id1, TransactionId id2); extern bool TransactionIdPrecedesOrEquals(TransactionId id1, TransactionId id2); extern bool TransactionIdFollows(TransactionId id1, TransactionId id2); extern bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2); extern TransactionId TransactionIdLatest(TransactionId mainxid, int nxids, const TransactionId *xids); extern XLogRecPtr TransactionIdGetCommitLSN(TransactionId xid); /* in transam/varsup.c */ extern FullTransactionId GetNewTransactionId(bool isSubXact); extern void AdvanceNextFullTransactionIdPastXid(TransactionId xid); extern FullTransactionId ReadNextFullTransactionId(void); extern void SetTransactionIdLimit(TransactionId oldest_datfrozenxid, Oid oldest_datoid); extern void AdvanceOldestClogXid(TransactionId oldest_datfrozenxid); extern bool ForceTransactionIdLimitUpdate(void); extern Oid GetNewObjectId(void); /* * Some frontend programs include this header. For compilers that emit static * inline functions even when they're unused, that leads to unsatisfied * external references; hence hide them with #ifndef FRONTEND. */ #ifndef FRONTEND /* * For callers that just need the XID part of the next transaction ID. */ static inline TransactionId ReadNewTransactionId(void) { return XidFromFullTransactionId(ReadNextFullTransactionId()); } #endif /* FRONTEND */ #endif /* TRANSAM_H */ libpg_query-13-2.1.0/src/postgres/include/access/tupconvert.h000066400000000000000000000031301413137616400241630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tupconvert.h * Tuple conversion support. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tupconvert.h * *------------------------------------------------------------------------- */ #ifndef TUPCONVERT_H #define TUPCONVERT_H #include "access/attmap.h" #include "access/htup.h" #include "access/tupdesc.h" #include "executor/tuptable.h" #include "nodes/bitmapset.h" typedef struct TupleConversionMap { TupleDesc indesc; /* tupdesc for source rowtype */ TupleDesc outdesc; /* tupdesc for result rowtype */ AttrMap *attrMap; /* indexes of input fields, or 0 for null */ Datum *invalues; /* workspace for deconstructing source */ bool *inisnull; Datum *outvalues; /* workspace for constructing result */ bool *outisnull; } TupleConversionMap; extern TupleConversionMap *convert_tuples_by_position(TupleDesc indesc, TupleDesc outdesc, const char *msg); extern TupleConversionMap *convert_tuples_by_name(TupleDesc indesc, TupleDesc outdesc); extern HeapTuple execute_attr_map_tuple(HeapTuple tuple, TupleConversionMap *map); extern TupleTableSlot *execute_attr_map_slot(AttrMap *attrMap, TupleTableSlot *in_slot, TupleTableSlot *out_slot); extern Bitmapset *execute_attr_map_cols(AttrMap *attrMap, Bitmapset *inbitmap); extern void free_conversion_map(TupleConversionMap *map); #endif /* TUPCONVERT_H */ libpg_query-13-2.1.0/src/postgres/include/access/tupdesc.h000066400000000000000000000122701413137616400234260ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tupdesc.h * POSTGRES tuple descriptor definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tupdesc.h * *------------------------------------------------------------------------- */ #ifndef TUPDESC_H #define TUPDESC_H #include "access/attnum.h" #include "catalog/pg_attribute.h" #include "nodes/pg_list.h" typedef struct AttrDefault { AttrNumber adnum; char *adbin; /* nodeToString representation of expr */ } AttrDefault; typedef struct ConstrCheck { char *ccname; char *ccbin; /* nodeToString representation of expr */ bool ccvalid; bool ccnoinherit; /* this is a non-inheritable constraint */ } ConstrCheck; /* This structure contains constraints of a tuple */ typedef struct TupleConstr { AttrDefault *defval; /* array */ ConstrCheck *check; /* array */ struct AttrMissing *missing; /* missing attributes values, NULL if none */ uint16 num_defval; uint16 num_check; bool has_not_null; bool has_generated_stored; } TupleConstr; /* * This struct is passed around within the backend to describe the structure * of tuples. For tuples coming from on-disk relations, the information is * collected from the pg_attribute, pg_attrdef, and pg_constraint catalogs. * Transient row types (such as the result of a join query) have anonymous * TupleDesc structs that generally omit any constraint info; therefore the * structure is designed to let the constraints be omitted efficiently. * * Note that only user attributes, not system attributes, are mentioned in * TupleDesc. * * If the tupdesc is known to correspond to a named rowtype (such as a table's * rowtype) then tdtypeid identifies that type and tdtypmod is -1. Otherwise * tdtypeid is RECORDOID, and tdtypmod can be either -1 for a fully anonymous * row type, or a value >= 0 to allow the rowtype to be looked up in the * typcache.c type cache. * * Note that tdtypeid is never the OID of a domain over composite, even if * we are dealing with values that are known (at some higher level) to be of * a domain-over-composite type. This is because tdtypeid/tdtypmod need to * match up with the type labeling of composite Datums, and those are never * explicitly marked as being of a domain type, either. * * Tuple descriptors that live in caches (relcache or typcache, at present) * are reference-counted: they can be deleted when their reference count goes * to zero. Tuple descriptors created by the executor need no reference * counting, however: they are simply created in the appropriate memory * context and go away when the context is freed. We set the tdrefcount * field of such a descriptor to -1, while reference-counted descriptors * always have tdrefcount >= 0. */ typedef struct TupleDescData { int natts; /* number of attributes in the tuple */ Oid tdtypeid; /* composite type ID for tuple type */ int32 tdtypmod; /* typmod for tuple type */ int tdrefcount; /* reference count, or -1 if not counting */ TupleConstr *constr; /* constraints, or NULL if none */ /* attrs[N] is the description of Attribute Number N+1 */ FormData_pg_attribute attrs[FLEXIBLE_ARRAY_MEMBER]; } TupleDescData; typedef struct TupleDescData *TupleDesc; /* Accessor for the i'th attribute of tupdesc. */ #define TupleDescAttr(tupdesc, i) (&(tupdesc)->attrs[(i)]) extern TupleDesc CreateTemplateTupleDesc(int natts); extern TupleDesc CreateTupleDesc(int natts, Form_pg_attribute *attrs); extern TupleDesc CreateTupleDescCopy(TupleDesc tupdesc); extern TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc); #define TupleDescSize(src) \ (offsetof(struct TupleDescData, attrs) + \ (src)->natts * sizeof(FormData_pg_attribute)) extern void TupleDescCopy(TupleDesc dst, TupleDesc src); extern void TupleDescCopyEntry(TupleDesc dst, AttrNumber dstAttno, TupleDesc src, AttrNumber srcAttno); extern void FreeTupleDesc(TupleDesc tupdesc); extern void IncrTupleDescRefCount(TupleDesc tupdesc); extern void DecrTupleDescRefCount(TupleDesc tupdesc); #define PinTupleDesc(tupdesc) \ do { \ if ((tupdesc)->tdrefcount >= 0) \ IncrTupleDescRefCount(tupdesc); \ } while (0) #define ReleaseTupleDesc(tupdesc) \ do { \ if ((tupdesc)->tdrefcount >= 0) \ DecrTupleDescRefCount(tupdesc); \ } while (0) extern bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2); extern uint32 hashTupleDesc(TupleDesc tupdesc); extern void TupleDescInitEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim); extern void TupleDescInitBuiltinEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim); extern void TupleDescInitEntryCollation(TupleDesc desc, AttrNumber attributeNumber, Oid collationid); extern TupleDesc BuildDescForRelation(List *schema); extern TupleDesc BuildDescFromLists(List *names, List *types, List *typmods, List *collations); #endif /* TUPDESC_H */ libpg_query-13-2.1.0/src/postgres/include/access/tupmacs.h000066400000000000000000000165531413137616400234430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tupmacs.h * Tuple macros used by both index tuples and heap tuples. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tupmacs.h * *------------------------------------------------------------------------- */ #ifndef TUPMACS_H #define TUPMACS_H #include "catalog/pg_type_d.h" /* for TYPALIGN macros */ /* * Check a tuple's null bitmap to determine whether the attribute is null. * Note that a 0 in the null bitmap indicates a null, while 1 indicates * non-null. */ #define att_isnull(ATT, BITS) (!((BITS)[(ATT) >> 3] & (1 << ((ATT) & 0x07)))) /* * Given a Form_pg_attribute and a pointer into a tuple's data area, * return the correct value or pointer. * * We return a Datum value in all cases. If the attribute has "byval" false, * we return the same pointer into the tuple data area that we're passed. * Otherwise, we return the correct number of bytes fetched from the data * area and extended to Datum form. * * On machines where Datum is 8 bytes, we support fetching 8-byte byval * attributes; otherwise, only 1, 2, and 4-byte values are supported. * * Note that T must already be properly aligned for this to work correctly. */ #define fetchatt(A,T) fetch_att(T, (A)->attbyval, (A)->attlen) /* * Same, but work from byval/len parameters rather than Form_pg_attribute. */ #if SIZEOF_DATUM == 8 #define fetch_att(T,attbyval,attlen) \ ( \ (attbyval) ? \ ( \ (attlen) == (int) sizeof(Datum) ? \ *((Datum *)(T)) \ : \ ( \ (attlen) == (int) sizeof(int32) ? \ Int32GetDatum(*((int32 *)(T))) \ : \ ( \ (attlen) == (int) sizeof(int16) ? \ Int16GetDatum(*((int16 *)(T))) \ : \ ( \ AssertMacro((attlen) == 1), \ CharGetDatum(*((char *)(T))) \ ) \ ) \ ) \ ) \ : \ PointerGetDatum((char *) (T)) \ ) #else /* SIZEOF_DATUM != 8 */ #define fetch_att(T,attbyval,attlen) \ ( \ (attbyval) ? \ ( \ (attlen) == (int) sizeof(int32) ? \ Int32GetDatum(*((int32 *)(T))) \ : \ ( \ (attlen) == (int) sizeof(int16) ? \ Int16GetDatum(*((int16 *)(T))) \ : \ ( \ AssertMacro((attlen) == 1), \ CharGetDatum(*((char *)(T))) \ ) \ ) \ ) \ : \ PointerGetDatum((char *) (T)) \ ) #endif /* SIZEOF_DATUM == 8 */ /* * att_align_datum aligns the given offset as needed for a datum of alignment * requirement attalign and typlen attlen. attdatum is the Datum variable * we intend to pack into a tuple (it's only accessed if we are dealing with * a varlena type). Note that this assumes the Datum will be stored as-is; * callers that are intending to convert non-short varlena datums to short * format have to account for that themselves. */ #define att_align_datum(cur_offset, attalign, attlen, attdatum) \ ( \ ((attlen) == -1 && VARATT_IS_SHORT(DatumGetPointer(attdatum))) ? \ (uintptr_t) (cur_offset) : \ att_align_nominal(cur_offset, attalign) \ ) /* * att_align_pointer performs the same calculation as att_align_datum, * but is used when walking a tuple. attptr is the current actual data * pointer; when accessing a varlena field we have to "peek" to see if we * are looking at a pad byte or the first byte of a 1-byte-header datum. * (A zero byte must be either a pad byte, or the first byte of a correctly * aligned 4-byte length word; in either case we can align safely. A non-zero * byte must be either a 1-byte length word, or the first byte of a correctly * aligned 4-byte length word; in either case we need not align.) * * Note: some callers pass a "char *" pointer for cur_offset. This is * a bit of a hack but should work all right as long as uintptr_t is the * correct width. */ #define att_align_pointer(cur_offset, attalign, attlen, attptr) \ ( \ ((attlen) == -1 && VARATT_NOT_PAD_BYTE(attptr)) ? \ (uintptr_t) (cur_offset) : \ att_align_nominal(cur_offset, attalign) \ ) /* * att_align_nominal aligns the given offset as needed for a datum of alignment * requirement attalign, ignoring any consideration of packed varlena datums. * There are three main use cases for using this macro directly: * * we know that the att in question is not varlena (attlen != -1); * in this case it is cheaper than the above macros and just as good. * * we need to estimate alignment padding cost abstractly, ie without * reference to a real tuple. We must assume the worst case that * all varlenas are aligned. * * within arrays, we unconditionally align varlenas (XXX this should be * revisited, probably). * * The attalign cases are tested in what is hopefully something like their * frequency of occurrence. */ #define att_align_nominal(cur_offset, attalign) \ ( \ ((attalign) == TYPALIGN_INT) ? INTALIGN(cur_offset) : \ (((attalign) == TYPALIGN_CHAR) ? (uintptr_t) (cur_offset) : \ (((attalign) == TYPALIGN_DOUBLE) ? DOUBLEALIGN(cur_offset) : \ ( \ AssertMacro((attalign) == TYPALIGN_SHORT), \ SHORTALIGN(cur_offset) \ ))) \ ) /* * att_addlength_datum increments the given offset by the space needed for * the given Datum variable. attdatum is only accessed if we are dealing * with a variable-length attribute. */ #define att_addlength_datum(cur_offset, attlen, attdatum) \ att_addlength_pointer(cur_offset, attlen, DatumGetPointer(attdatum)) /* * att_addlength_pointer performs the same calculation as att_addlength_datum, * but is used when walking a tuple --- attptr is the pointer to the field * within the tuple. * * Note: some callers pass a "char *" pointer for cur_offset. This is * actually perfectly OK, but probably should be cleaned up along with * the same practice for att_align_pointer. */ #define att_addlength_pointer(cur_offset, attlen, attptr) \ ( \ ((attlen) > 0) ? \ ( \ (cur_offset) + (attlen) \ ) \ : (((attlen) == -1) ? \ ( \ (cur_offset) + VARSIZE_ANY(attptr) \ ) \ : \ ( \ AssertMacro((attlen) == -2), \ (cur_offset) + (strlen((char *) (attptr)) + 1) \ )) \ ) /* * store_att_byval is a partial inverse of fetch_att: store a given Datum * value into a tuple data area at the specified address. However, it only * handles the byval case, because in typical usage the caller needs to * distinguish by-val and by-ref cases anyway, and so a do-it-all macro * wouldn't be convenient. */ #if SIZEOF_DATUM == 8 #define store_att_byval(T,newdatum,attlen) \ do { \ switch (attlen) \ { \ case sizeof(char): \ *(char *) (T) = DatumGetChar(newdatum); \ break; \ case sizeof(int16): \ *(int16 *) (T) = DatumGetInt16(newdatum); \ break; \ case sizeof(int32): \ *(int32 *) (T) = DatumGetInt32(newdatum); \ break; \ case sizeof(Datum): \ *(Datum *) (T) = (newdatum); \ break; \ default: \ elog(ERROR, "unsupported byval length: %d", \ (int) (attlen)); \ break; \ } \ } while (0) #else /* SIZEOF_DATUM != 8 */ #define store_att_byval(T,newdatum,attlen) \ do { \ switch (attlen) \ { \ case sizeof(char): \ *(char *) (T) = DatumGetChar(newdatum); \ break; \ case sizeof(int16): \ *(int16 *) (T) = DatumGetInt16(newdatum); \ break; \ case sizeof(int32): \ *(int32 *) (T) = DatumGetInt32(newdatum); \ break; \ default: \ elog(ERROR, "unsupported byval length: %d", \ (int) (attlen)); \ break; \ } \ } while (0) #endif /* SIZEOF_DATUM == 8 */ #endif libpg_query-13-2.1.0/src/postgres/include/access/twophase.h000066400000000000000000000037301413137616400236120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * twophase.h * Two-phase-commit related declarations. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/twophase.h * *------------------------------------------------------------------------- */ #ifndef TWOPHASE_H #define TWOPHASE_H #include "access/xact.h" #include "access/xlogdefs.h" #include "datatype/timestamp.h" #include "storage/lock.h" /* * GlobalTransactionData is defined in twophase.c; other places have no * business knowing the internal definition. */ typedef struct GlobalTransactionData *GlobalTransaction; /* GUC variable */ extern PGDLLIMPORT int max_prepared_xacts; extern Size TwoPhaseShmemSize(void); extern void TwoPhaseShmemInit(void); extern void AtAbort_Twophase(void); extern void PostPrepare_Twophase(void); extern PGPROC *TwoPhaseGetDummyProc(TransactionId xid, bool lock_held); extern BackendId TwoPhaseGetDummyBackendId(TransactionId xid, bool lock_held); extern GlobalTransaction MarkAsPreparing(TransactionId xid, const char *gid, TimestampTz prepared_at, Oid owner, Oid databaseid); extern void StartPrepare(GlobalTransaction gxact); extern void EndPrepare(GlobalTransaction gxact); extern bool StandbyTransactionIdIsPrepared(TransactionId xid); extern TransactionId PrescanPreparedTransactions(TransactionId **xids_p, int *nxids_p); extern void StandbyRecoverPreparedTransactions(void); extern void RecoverPreparedTransactions(void); extern void CheckPointTwoPhase(XLogRecPtr redo_horizon); extern void FinishPreparedTransaction(const char *gid, bool isCommit); extern void PrepareRedoAdd(char *buf, XLogRecPtr start_lsn, XLogRecPtr end_lsn, RepOriginId origin_id); extern void PrepareRedoRemove(TransactionId xid, bool giveWarning); extern void restoreTwoPhaseData(void); #endif /* TWOPHASE_H */ libpg_query-13-2.1.0/src/postgres/include/access/xact.h000066400000000000000000000371061413137616400227230ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * xact.h * postgres transaction system definitions * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xact.h * *------------------------------------------------------------------------- */ #ifndef XACT_H #define XACT_H #include "access/transam.h" #include "access/xlogreader.h" #include "lib/stringinfo.h" #include "nodes/pg_list.h" #include "storage/relfilenode.h" #include "storage/sinval.h" #include "utils/datetime.h" /* * Maximum size of Global Transaction ID (including '\0'). * * Note that the max value of GIDSIZE must fit in the uint16 gidlen, * specified in TwoPhaseFileHeader. */ #define GIDSIZE 200 /* * Xact isolation levels */ #define XACT_READ_UNCOMMITTED 0 #define XACT_READ_COMMITTED 1 #define XACT_REPEATABLE_READ 2 #define XACT_SERIALIZABLE 3 extern int DefaultXactIsoLevel; extern PGDLLIMPORT int XactIsoLevel; /* * We implement three isolation levels internally. * The two stronger ones use one snapshot per database transaction; * the others use one snapshot per statement. * Serializable uses predicate locks in addition to snapshots. * These macros should be used to check which isolation level is selected. */ #define IsolationUsesXactSnapshot() (XactIsoLevel >= XACT_REPEATABLE_READ) #define IsolationIsSerializable() (XactIsoLevel == XACT_SERIALIZABLE) /* Xact read-only state */ extern bool DefaultXactReadOnly; extern bool XactReadOnly; /* flag for logging statements in this transaction */ extern bool xact_is_sampled; /* * Xact is deferrable -- only meaningful (currently) for read only * SERIALIZABLE transactions */ extern bool DefaultXactDeferrable; extern bool XactDeferrable; typedef enum { SYNCHRONOUS_COMMIT_OFF, /* asynchronous commit */ SYNCHRONOUS_COMMIT_LOCAL_FLUSH, /* wait for local flush only */ SYNCHRONOUS_COMMIT_REMOTE_WRITE, /* wait for local flush and remote * write */ SYNCHRONOUS_COMMIT_REMOTE_FLUSH, /* wait for local and remote flush */ SYNCHRONOUS_COMMIT_REMOTE_APPLY /* wait for local and remote flush and remote apply */ } SyncCommitLevel; /* Define the default setting for synchronous_commit */ #define SYNCHRONOUS_COMMIT_ON SYNCHRONOUS_COMMIT_REMOTE_FLUSH /* Synchronous commit level */ extern int synchronous_commit; /* * Miscellaneous flag bits to record events which occur on the top level * transaction. These flags are only persisted in MyXactFlags and are intended * so we remember to do certain things later in the transaction. This is * globally accessible, so can be set from anywhere in the code which requires * recording flags. */ extern int MyXactFlags; /* * XACT_FLAGS_ACCESSEDTEMPNAMESPACE - set when a temporary object is accessed. * We don't allow PREPARE TRANSACTION in that case. */ #define XACT_FLAGS_ACCESSEDTEMPNAMESPACE (1U << 0) /* * XACT_FLAGS_ACQUIREDACCESSEXCLUSIVELOCK - records whether the top level xact * logged any Access Exclusive Locks. */ #define XACT_FLAGS_ACQUIREDACCESSEXCLUSIVELOCK (1U << 1) /* * start- and end-of-transaction callbacks for dynamically loaded modules */ typedef enum { XACT_EVENT_COMMIT, XACT_EVENT_PARALLEL_COMMIT, XACT_EVENT_ABORT, XACT_EVENT_PARALLEL_ABORT, XACT_EVENT_PREPARE, XACT_EVENT_PRE_COMMIT, XACT_EVENT_PARALLEL_PRE_COMMIT, XACT_EVENT_PRE_PREPARE } XactEvent; typedef void (*XactCallback) (XactEvent event, void *arg); typedef enum { SUBXACT_EVENT_START_SUB, SUBXACT_EVENT_COMMIT_SUB, SUBXACT_EVENT_ABORT_SUB, SUBXACT_EVENT_PRE_COMMIT_SUB } SubXactEvent; typedef void (*SubXactCallback) (SubXactEvent event, SubTransactionId mySubid, SubTransactionId parentSubid, void *arg); /* ---------------- * transaction-related XLOG entries * ---------------- */ /* * XLOG allows to store some information in high 4 bits of log record xl_info * field. We use 3 for the opcode, and one about an optional flag variable. */ #define XLOG_XACT_COMMIT 0x00 #define XLOG_XACT_PREPARE 0x10 #define XLOG_XACT_ABORT 0x20 #define XLOG_XACT_COMMIT_PREPARED 0x30 #define XLOG_XACT_ABORT_PREPARED 0x40 #define XLOG_XACT_ASSIGNMENT 0x50 /* free opcode 0x60 */ /* free opcode 0x70 */ /* mask for filtering opcodes out of xl_info */ #define XLOG_XACT_OPMASK 0x70 /* does this record have a 'xinfo' field or not */ #define XLOG_XACT_HAS_INFO 0x80 /* * The following flags, stored in xinfo, determine which information is * contained in commit/abort records. */ #define XACT_XINFO_HAS_DBINFO (1U << 0) #define XACT_XINFO_HAS_SUBXACTS (1U << 1) #define XACT_XINFO_HAS_RELFILENODES (1U << 2) #define XACT_XINFO_HAS_INVALS (1U << 3) #define XACT_XINFO_HAS_TWOPHASE (1U << 4) #define XACT_XINFO_HAS_ORIGIN (1U << 5) #define XACT_XINFO_HAS_AE_LOCKS (1U << 6) #define XACT_XINFO_HAS_GID (1U << 7) /* * Also stored in xinfo, these indicating a variety of additional actions that * need to occur when emulating transaction effects during recovery. * * They are named XactCompletion... to differentiate them from * EOXact... routines which run at the end of the original transaction * completion. */ #define XACT_COMPLETION_APPLY_FEEDBACK (1U << 29) #define XACT_COMPLETION_UPDATE_RELCACHE_FILE (1U << 30) #define XACT_COMPLETION_FORCE_SYNC_COMMIT (1U << 31) /* Access macros for above flags */ #define XactCompletionApplyFeedback(xinfo) \ ((xinfo & XACT_COMPLETION_APPLY_FEEDBACK) != 0) #define XactCompletionRelcacheInitFileInval(xinfo) \ ((xinfo & XACT_COMPLETION_UPDATE_RELCACHE_FILE) != 0) #define XactCompletionForceSyncCommit(xinfo) \ ((xinfo & XACT_COMPLETION_FORCE_SYNC_COMMIT) != 0) typedef struct xl_xact_assignment { TransactionId xtop; /* assigned XID's top-level XID */ int nsubxacts; /* number of subtransaction XIDs */ TransactionId xsub[FLEXIBLE_ARRAY_MEMBER]; /* assigned subxids */ } xl_xact_assignment; #define MinSizeOfXactAssignment offsetof(xl_xact_assignment, xsub) /* * Commit and abort records can contain a lot of information. But a large * portion of the records won't need all possible pieces of information. So we * only include what's needed. * * A minimal commit/abort record only consists of a xl_xact_commit/abort * struct. The presence of additional information is indicated by bits set in * 'xl_xact_xinfo->xinfo'. The presence of the xinfo field itself is signaled * by a set XLOG_XACT_HAS_INFO bit in the xl_info field. * * NB: All the individual data chunks should be sized to multiples of * sizeof(int) and only require int32 alignment. If they require bigger * alignment, they need to be copied upon reading. */ /* sub-records for commit/abort */ typedef struct xl_xact_xinfo { /* * Even though we right now only require 1 byte of space in xinfo we use * four so following records don't have to care about alignment. Commit * records can be large, so copying large portions isn't attractive. */ uint32 xinfo; } xl_xact_xinfo; typedef struct xl_xact_dbinfo { Oid dbId; /* MyDatabaseId */ Oid tsId; /* MyDatabaseTableSpace */ } xl_xact_dbinfo; typedef struct xl_xact_subxacts { int nsubxacts; /* number of subtransaction XIDs */ TransactionId subxacts[FLEXIBLE_ARRAY_MEMBER]; } xl_xact_subxacts; #define MinSizeOfXactSubxacts offsetof(xl_xact_subxacts, subxacts) typedef struct xl_xact_relfilenodes { int nrels; /* number of relations */ RelFileNode xnodes[FLEXIBLE_ARRAY_MEMBER]; } xl_xact_relfilenodes; #define MinSizeOfXactRelfilenodes offsetof(xl_xact_relfilenodes, xnodes) typedef struct xl_xact_invals { int nmsgs; /* number of shared inval msgs */ SharedInvalidationMessage msgs[FLEXIBLE_ARRAY_MEMBER]; } xl_xact_invals; #define MinSizeOfXactInvals offsetof(xl_xact_invals, msgs) typedef struct xl_xact_twophase { TransactionId xid; } xl_xact_twophase; typedef struct xl_xact_origin { XLogRecPtr origin_lsn; TimestampTz origin_timestamp; } xl_xact_origin; typedef struct xl_xact_commit { TimestampTz xact_time; /* time of commit */ /* xl_xact_xinfo follows if XLOG_XACT_HAS_INFO */ /* xl_xact_dbinfo follows if XINFO_HAS_DBINFO */ /* xl_xact_subxacts follows if XINFO_HAS_SUBXACT */ /* xl_xact_relfilenodes follows if XINFO_HAS_RELFILENODES */ /* xl_xact_invals follows if XINFO_HAS_INVALS */ /* xl_xact_twophase follows if XINFO_HAS_TWOPHASE */ /* twophase_gid follows if XINFO_HAS_GID. As a null-terminated string. */ /* xl_xact_origin follows if XINFO_HAS_ORIGIN, stored unaligned! */ } xl_xact_commit; #define MinSizeOfXactCommit (offsetof(xl_xact_commit, xact_time) + sizeof(TimestampTz)) typedef struct xl_xact_abort { TimestampTz xact_time; /* time of abort */ /* xl_xact_xinfo follows if XLOG_XACT_HAS_INFO */ /* xl_xact_dbinfo follows if XINFO_HAS_DBINFO */ /* xl_xact_subxacts follows if XINFO_HAS_SUBXACT */ /* xl_xact_relfilenodes follows if XINFO_HAS_RELFILENODES */ /* No invalidation messages needed. */ /* xl_xact_twophase follows if XINFO_HAS_TWOPHASE */ /* twophase_gid follows if XINFO_HAS_GID. As a null-terminated string. */ /* xl_xact_origin follows if XINFO_HAS_ORIGIN, stored unaligned! */ } xl_xact_abort; #define MinSizeOfXactAbort sizeof(xl_xact_abort) typedef struct xl_xact_prepare { uint32 magic; /* format identifier */ uint32 total_len; /* actual file length */ TransactionId xid; /* original transaction XID */ Oid database; /* OID of database it was in */ TimestampTz prepared_at; /* time of preparation */ Oid owner; /* user running the transaction */ int32 nsubxacts; /* number of following subxact XIDs */ int32 ncommitrels; /* number of delete-on-commit rels */ int32 nabortrels; /* number of delete-on-abort rels */ int32 ninvalmsgs; /* number of cache invalidation messages */ bool initfileinval; /* does relcache init file need invalidation? */ uint16 gidlen; /* length of the GID - GID follows the header */ XLogRecPtr origin_lsn; /* lsn of this record at origin node */ TimestampTz origin_timestamp; /* time of prepare at origin node */ } xl_xact_prepare; /* * Commit/Abort records in the above form are a bit verbose to parse, so * there's a deconstructed versions generated by ParseCommit/AbortRecord() for * easier consumption. */ typedef struct xl_xact_parsed_commit { TimestampTz xact_time; uint32 xinfo; Oid dbId; /* MyDatabaseId */ Oid tsId; /* MyDatabaseTableSpace */ int nsubxacts; TransactionId *subxacts; int nrels; RelFileNode *xnodes; int nmsgs; SharedInvalidationMessage *msgs; TransactionId twophase_xid; /* only for 2PC */ char twophase_gid[GIDSIZE]; /* only for 2PC */ int nabortrels; /* only for 2PC */ RelFileNode *abortnodes; /* only for 2PC */ XLogRecPtr origin_lsn; TimestampTz origin_timestamp; } xl_xact_parsed_commit; typedef xl_xact_parsed_commit xl_xact_parsed_prepare; typedef struct xl_xact_parsed_abort { TimestampTz xact_time; uint32 xinfo; Oid dbId; /* MyDatabaseId */ Oid tsId; /* MyDatabaseTableSpace */ int nsubxacts; TransactionId *subxacts; int nrels; RelFileNode *xnodes; TransactionId twophase_xid; /* only for 2PC */ char twophase_gid[GIDSIZE]; /* only for 2PC */ XLogRecPtr origin_lsn; TimestampTz origin_timestamp; } xl_xact_parsed_abort; /* ---------------- * extern definitions * ---------------- */ extern bool IsTransactionState(void); extern bool IsAbortedTransactionBlockState(void); extern TransactionId GetTopTransactionId(void); extern TransactionId GetTopTransactionIdIfAny(void); extern TransactionId GetCurrentTransactionId(void); extern TransactionId GetCurrentTransactionIdIfAny(void); extern TransactionId GetStableLatestTransactionId(void); extern SubTransactionId GetCurrentSubTransactionId(void); extern FullTransactionId GetTopFullTransactionId(void); extern FullTransactionId GetTopFullTransactionIdIfAny(void); extern FullTransactionId GetCurrentFullTransactionId(void); extern FullTransactionId GetCurrentFullTransactionIdIfAny(void); extern void MarkCurrentTransactionIdLoggedIfAny(void); extern bool SubTransactionIsActive(SubTransactionId subxid); extern CommandId GetCurrentCommandId(bool used); extern void SetParallelStartTimestamps(TimestampTz xact_ts, TimestampTz stmt_ts); extern TimestampTz GetCurrentTransactionStartTimestamp(void); extern TimestampTz GetCurrentStatementStartTimestamp(void); extern TimestampTz GetCurrentTransactionStopTimestamp(void); extern void SetCurrentStatementStartTimestamp(void); extern int GetCurrentTransactionNestLevel(void); extern bool TransactionIdIsCurrentTransactionId(TransactionId xid); extern void CommandCounterIncrement(void); extern void ForceSyncCommit(void); extern void StartTransactionCommand(void); extern void SaveTransactionCharacteristics(void); extern void RestoreTransactionCharacteristics(void); extern void CommitTransactionCommand(void); extern void AbortCurrentTransaction(void); extern void BeginTransactionBlock(void); extern bool EndTransactionBlock(bool chain); extern bool PrepareTransactionBlock(const char *gid); extern void UserAbortTransactionBlock(bool chain); extern void BeginImplicitTransactionBlock(void); extern void EndImplicitTransactionBlock(void); extern void ReleaseSavepoint(const char *name); extern void DefineSavepoint(const char *name); extern void RollbackToSavepoint(const char *name); extern void BeginInternalSubTransaction(const char *name); extern void ReleaseCurrentSubTransaction(void); extern void RollbackAndReleaseCurrentSubTransaction(void); extern bool IsSubTransaction(void); extern Size EstimateTransactionStateSpace(void); extern void SerializeTransactionState(Size maxsize, char *start_address); extern void StartParallelWorkerTransaction(char *tstatespace); extern void EndParallelWorkerTransaction(void); extern bool IsTransactionBlock(void); extern bool IsTransactionOrTransactionBlock(void); extern char TransactionBlockStatusCode(void); extern void AbortOutOfAnyTransaction(void); extern void PreventInTransactionBlock(bool isTopLevel, const char *stmtType); extern void RequireTransactionBlock(bool isTopLevel, const char *stmtType); extern void WarnNoTransactionBlock(bool isTopLevel, const char *stmtType); extern bool IsInTransactionBlock(bool isTopLevel); extern void RegisterXactCallback(XactCallback callback, void *arg); extern void UnregisterXactCallback(XactCallback callback, void *arg); extern void RegisterSubXactCallback(SubXactCallback callback, void *arg); extern void UnregisterSubXactCallback(SubXactCallback callback, void *arg); extern int xactGetCommittedChildren(TransactionId **ptr); extern XLogRecPtr XactLogCommitRecord(TimestampTz commit_time, int nsubxacts, TransactionId *subxacts, int nrels, RelFileNode *rels, int nmsgs, SharedInvalidationMessage *msgs, bool relcacheInval, bool forceSync, int xactflags, TransactionId twophase_xid, const char *twophase_gid); extern XLogRecPtr XactLogAbortRecord(TimestampTz abort_time, int nsubxacts, TransactionId *subxacts, int nrels, RelFileNode *rels, int xactflags, TransactionId twophase_xid, const char *twophase_gid); extern void xact_redo(XLogReaderState *record); /* xactdesc.c */ extern void xact_desc(StringInfo buf, XLogReaderState *record); extern const char *xact_identify(uint8 info); /* also in xactdesc.c, so they can be shared between front/backend code */ extern void ParseCommitRecord(uint8 info, xl_xact_commit *xlrec, xl_xact_parsed_commit *parsed); extern void ParseAbortRecord(uint8 info, xl_xact_abort *xlrec, xl_xact_parsed_abort *parsed); extern void ParsePrepareRecord(uint8 info, xl_xact_prepare *xlrec, xl_xact_parsed_prepare *parsed); extern void EnterParallelMode(void); extern void ExitParallelMode(void); extern bool IsInParallelMode(void); #endif /* XACT_H */ libpg_query-13-2.1.0/src/postgres/include/access/xlog.h000066400000000000000000000332671413137616400227410ustar00rootroot00000000000000/* * xlog.h * * PostgreSQL write-ahead log manager * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlog.h */ #ifndef XLOG_H #define XLOG_H #include "access/rmgr.h" #include "access/xlogdefs.h" #include "access/xloginsert.h" #include "access/xlogreader.h" #include "datatype/timestamp.h" #include "lib/stringinfo.h" #include "nodes/pg_list.h" #include "storage/fd.h" /* Sync methods */ #define SYNC_METHOD_FSYNC 0 #define SYNC_METHOD_FDATASYNC 1 #define SYNC_METHOD_OPEN 2 /* for O_SYNC */ #define SYNC_METHOD_FSYNC_WRITETHROUGH 3 #define SYNC_METHOD_OPEN_DSYNC 4 /* for O_DSYNC */ extern int sync_method; extern PGDLLIMPORT TimeLineID ThisTimeLineID; /* current TLI */ /* * Prior to 8.4, all activity during recovery was carried out by the startup * process. This local variable continues to be used in many parts of the * code to indicate actions taken by RecoveryManagers. Other processes that * potentially perform work during recovery should check RecoveryInProgress(). * See XLogCtl notes in xlog.c. */ extern bool InRecovery; /* * Like InRecovery, standbyState is only valid in the startup process. * In all other processes it will have the value STANDBY_DISABLED (so * InHotStandby will read as false). * * In DISABLED state, we're performing crash recovery or hot standby was * disabled in postgresql.conf. * * In INITIALIZED state, we've run InitRecoveryTransactionEnvironment, but * we haven't yet processed a RUNNING_XACTS or shutdown-checkpoint WAL record * to initialize our master-transaction tracking system. * * When the transaction tracking is initialized, we enter the SNAPSHOT_PENDING * state. The tracked information might still be incomplete, so we can't allow * connections yet, but redo functions must update the in-memory state when * appropriate. * * In SNAPSHOT_READY mode, we have full knowledge of transactions that are * (or were) running in the master at the current WAL location. Snapshots * can be taken, and read-only queries can be run. */ typedef enum { STANDBY_DISABLED, STANDBY_INITIALIZED, STANDBY_SNAPSHOT_PENDING, STANDBY_SNAPSHOT_READY } HotStandbyState; extern HotStandbyState standbyState; #define InHotStandby (standbyState >= STANDBY_SNAPSHOT_PENDING) /* * Recovery target type. * Only set during a Point in Time recovery, not when in standby mode. */ typedef enum { RECOVERY_TARGET_UNSET, RECOVERY_TARGET_XID, RECOVERY_TARGET_TIME, RECOVERY_TARGET_NAME, RECOVERY_TARGET_LSN, RECOVERY_TARGET_IMMEDIATE } RecoveryTargetType; /* * Recovery target TimeLine goal */ typedef enum { RECOVERY_TARGET_TIMELINE_CONTROLFILE, RECOVERY_TARGET_TIMELINE_LATEST, RECOVERY_TARGET_TIMELINE_NUMERIC } RecoveryTargetTimeLineGoal; extern XLogRecPtr ProcLastRecPtr; extern XLogRecPtr XactLastRecEnd; extern PGDLLIMPORT XLogRecPtr XactLastCommitEnd; extern bool reachedConsistency; /* these variables are GUC parameters related to XLOG */ extern int wal_segment_size; extern int min_wal_size_mb; extern int max_wal_size_mb; extern int wal_keep_size_mb; extern int max_slot_wal_keep_size_mb; extern int XLOGbuffers; extern int XLogArchiveTimeout; extern int wal_retrieve_retry_interval; extern char *XLogArchiveCommand; extern bool EnableHotStandby; extern bool fullPageWrites; extern bool wal_log_hints; extern bool wal_compression; extern bool wal_init_zero; extern bool wal_recycle; extern bool *wal_consistency_checking; extern char *wal_consistency_checking_string; extern bool log_checkpoints; extern char *recoveryRestoreCommand; extern char *recoveryEndCommand; extern char *archiveCleanupCommand; extern bool recoveryTargetInclusive; extern int recoveryTargetAction; extern int recovery_min_apply_delay; extern char *PrimaryConnInfo; extern char *PrimarySlotName; extern bool wal_receiver_create_temp_slot; /* indirectly set via GUC system */ extern TransactionId recoveryTargetXid; extern char *recovery_target_time_string; extern const char *recoveryTargetName; extern XLogRecPtr recoveryTargetLSN; extern RecoveryTargetType recoveryTarget; extern char *PromoteTriggerFile; extern RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal; extern TimeLineID recoveryTargetTLIRequested; extern TimeLineID recoveryTargetTLI; extern int CheckPointSegments; /* option set locally in startup process only when signal files exist */ extern bool StandbyModeRequested; extern bool StandbyMode; /* Archive modes */ typedef enum ArchiveMode { ARCHIVE_MODE_OFF = 0, /* disabled */ ARCHIVE_MODE_ON, /* enabled while server is running normally */ ARCHIVE_MODE_ALWAYS /* enabled always (even during recovery) */ } ArchiveMode; extern int XLogArchiveMode; /* WAL levels */ typedef enum WalLevel { WAL_LEVEL_MINIMAL = 0, WAL_LEVEL_REPLICA, WAL_LEVEL_LOGICAL } WalLevel; /* Recovery states */ typedef enum RecoveryState { RECOVERY_STATE_CRASH = 0, /* crash recovery */ RECOVERY_STATE_ARCHIVE, /* archive recovery */ RECOVERY_STATE_DONE /* currently in production */ } RecoveryState; extern PGDLLIMPORT int wal_level; /* Is WAL archiving enabled (always or only while server is running normally)? */ #define XLogArchivingActive() \ (AssertMacro(XLogArchiveMode == ARCHIVE_MODE_OFF || wal_level >= WAL_LEVEL_REPLICA), XLogArchiveMode > ARCHIVE_MODE_OFF) /* Is WAL archiving enabled always (even during recovery)? */ #define XLogArchivingAlways() \ (AssertMacro(XLogArchiveMode == ARCHIVE_MODE_OFF || wal_level >= WAL_LEVEL_REPLICA), XLogArchiveMode == ARCHIVE_MODE_ALWAYS) #define XLogArchiveCommandSet() (XLogArchiveCommand[0] != '\0') /* * Is WAL-logging necessary for archival or log-shipping, or can we skip * WAL-logging if we fsync() the data before committing instead? */ #define XLogIsNeeded() (wal_level >= WAL_LEVEL_REPLICA) /* * Is a full-page image needed for hint bit updates? * * Normally, we don't WAL-log hint bit updates, but if checksums are enabled, * we have to protect them against torn page writes. When you only set * individual bits on a page, it's still consistent no matter what combination * of the bits make it to disk, but the checksum wouldn't match. Also WAL-log * them if forced by wal_log_hints=on. */ #define XLogHintBitIsNeeded() (DataChecksumsEnabled() || wal_log_hints) /* Do we need to WAL-log information required only for Hot Standby and logical replication? */ #define XLogStandbyInfoActive() (wal_level >= WAL_LEVEL_REPLICA) /* Do we need to WAL-log information required only for logical replication? */ #define XLogLogicalInfoActive() (wal_level >= WAL_LEVEL_LOGICAL) #ifdef WAL_DEBUG extern bool XLOG_DEBUG; #endif /* * OR-able request flag bits for checkpoints. The "cause" bits are used only * for logging purposes. Note: the flags must be defined so that it's * sensible to OR together request flags arising from different requestors. */ /* These directly affect the behavior of CreateCheckPoint and subsidiaries */ #define CHECKPOINT_IS_SHUTDOWN 0x0001 /* Checkpoint is for shutdown */ #define CHECKPOINT_END_OF_RECOVERY 0x0002 /* Like shutdown checkpoint, but * issued at end of WAL recovery */ #define CHECKPOINT_IMMEDIATE 0x0004 /* Do it without delays */ #define CHECKPOINT_FORCE 0x0008 /* Force even if no activity */ #define CHECKPOINT_FLUSH_ALL 0x0010 /* Flush all pages, including those * belonging to unlogged tables */ /* These are important to RequestCheckpoint */ #define CHECKPOINT_WAIT 0x0020 /* Wait for completion */ #define CHECKPOINT_REQUESTED 0x0040 /* Checkpoint request has been made */ /* These indicate the cause of a checkpoint request */ #define CHECKPOINT_CAUSE_XLOG 0x0080 /* XLOG consumption */ #define CHECKPOINT_CAUSE_TIME 0x0100 /* Elapsed time */ /* * Flag bits for the record being inserted, set using XLogSetRecordFlags(). */ #define XLOG_INCLUDE_ORIGIN 0x01 /* include the replication origin */ #define XLOG_MARK_UNIMPORTANT 0x02 /* record not important for durability */ /* Checkpoint statistics */ typedef struct CheckpointStatsData { TimestampTz ckpt_start_t; /* start of checkpoint */ TimestampTz ckpt_write_t; /* start of flushing buffers */ TimestampTz ckpt_sync_t; /* start of fsyncs */ TimestampTz ckpt_sync_end_t; /* end of fsyncs */ TimestampTz ckpt_end_t; /* end of checkpoint */ int ckpt_bufs_written; /* # of buffers written */ int ckpt_segs_added; /* # of new xlog segments created */ int ckpt_segs_removed; /* # of xlog segments deleted */ int ckpt_segs_recycled; /* # of xlog segments recycled */ int ckpt_sync_rels; /* # of relations synced */ uint64 ckpt_longest_sync; /* Longest sync for one relation */ uint64 ckpt_agg_sync_time; /* The sum of all the individual sync * times, which is not necessarily the * same as the total elapsed time for the * entire sync phase. */ } CheckpointStatsData; extern CheckpointStatsData CheckpointStats; /* * GetWALAvailability return codes */ typedef enum WALAvailability { WALAVAIL_INVALID_LSN, /* parameter error */ WALAVAIL_RESERVED, /* WAL segment is within max_wal_size */ WALAVAIL_EXTENDED, /* WAL segment is reserved by a slot or * wal_keep_size */ WALAVAIL_UNRESERVED, /* no longer reserved, but not removed yet */ WALAVAIL_REMOVED /* WAL segment has been removed */ } WALAvailability; struct XLogRecData; extern XLogRecPtr XLogInsertRecord(struct XLogRecData *rdata, XLogRecPtr fpw_lsn, uint8 flags, int num_fpi); extern void XLogFlush(XLogRecPtr RecPtr); extern bool XLogBackgroundFlush(void); extern bool XLogNeedsFlush(XLogRecPtr RecPtr); extern int XLogFileInit(XLogSegNo segno, bool *use_existent, bool use_lock); extern int XLogFileOpen(XLogSegNo segno); extern void CheckXLogRemoved(XLogSegNo segno, TimeLineID tli); extern XLogSegNo XLogGetLastRemovedSegno(void); extern void XLogSetAsyncXactLSN(XLogRecPtr record); extern void XLogSetReplicationSlotMinimumLSN(XLogRecPtr lsn); extern void xlog_redo(XLogReaderState *record); extern void xlog_desc(StringInfo buf, XLogReaderState *record); extern const char *xlog_identify(uint8 info); extern void issue_xlog_fsync(int fd, XLogSegNo segno); extern bool RecoveryInProgress(void); extern RecoveryState GetRecoveryState(void); extern bool HotStandbyActive(void); extern bool HotStandbyActiveInReplay(void); extern bool XLogInsertAllowed(void); extern void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream); extern XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI); extern XLogRecPtr GetXLogInsertRecPtr(void); extern XLogRecPtr GetXLogWriteRecPtr(void); extern bool RecoveryIsPaused(void); extern void SetRecoveryPause(bool recoveryPause); extern TimestampTz GetLatestXTime(void); extern TimestampTz GetCurrentChunkReplayStartTime(void); extern void UpdateControlFile(void); extern uint64 GetSystemIdentifier(void); extern char *GetMockAuthenticationNonce(void); extern bool DataChecksumsEnabled(void); extern XLogRecPtr GetFakeLSNForUnloggedRel(void); extern Size XLOGShmemSize(void); extern void XLOGShmemInit(void); extern void BootStrapXLOG(void); extern void LocalProcessControlFile(bool reset); extern void StartupXLOG(void); extern void ShutdownXLOG(int code, Datum arg); extern void InitXLOGAccess(void); extern void CreateCheckPoint(int flags); extern bool CreateRestartPoint(int flags); extern WALAvailability GetWALAvailability(XLogRecPtr targetLSN); extern XLogRecPtr CalculateMaxmumSafeLSN(void); extern void XLogPutNextOid(Oid nextOid); extern XLogRecPtr XLogRestorePoint(const char *rpName); extern void UpdateFullPageWrites(void); extern void GetFullPageWriteInfo(XLogRecPtr *RedoRecPtr_p, bool *doPageWrites_p); extern XLogRecPtr GetRedoRecPtr(void); extern XLogRecPtr GetInsertRecPtr(void); extern XLogRecPtr GetFlushRecPtr(void); extern XLogRecPtr GetLastImportantRecPtr(void); extern void RemovePromoteSignalFiles(void); extern bool PromoteIsTriggered(void); extern bool CheckPromoteSignal(void); extern void WakeupRecovery(void); extern void SetWalWriterSleeping(bool sleeping); extern void StartupRequestWalReceiverRestart(void); extern void XLogRequestWalReceiverReply(void); extern void assign_max_wal_size(int newval, void *extra); extern void assign_checkpoint_completion_target(double newval, void *extra); /* * Routines to start, stop, and get status of a base backup. */ /* * Session-level status of base backups * * This is used in parallel with the shared memory status to control parallel * execution of base backup functions for a given session, be it a backend * dedicated to replication or a normal backend connected to a database. The * update of the session-level status happens at the same time as the shared * memory counters to keep a consistent global and local state of the backups * running. */ typedef enum SessionBackupState { SESSION_BACKUP_NONE, SESSION_BACKUP_EXCLUSIVE, SESSION_BACKUP_NON_EXCLUSIVE } SessionBackupState; extern XLogRecPtr do_pg_start_backup(const char *backupidstr, bool fast, TimeLineID *starttli_p, StringInfo labelfile, List **tablespaces, StringInfo tblspcmapfile, bool infotbssize, bool needtblspcmapfile); extern XLogRecPtr do_pg_stop_backup(char *labelfile, bool waitforarchive, TimeLineID *stoptli_p); extern void do_pg_abort_backup(int code, Datum arg); extern void register_persistent_abort_backup_handler(void); extern SessionBackupState get_backup_status(void); /* File path names (all relative to $PGDATA) */ #define RECOVERY_SIGNAL_FILE "recovery.signal" #define STANDBY_SIGNAL_FILE "standby.signal" #define BACKUP_LABEL_FILE "backup_label" #define BACKUP_LABEL_OLD "backup_label.old" #define TABLESPACE_MAP "tablespace_map" #define TABLESPACE_MAP_OLD "tablespace_map.old" /* files to signal promotion to primary */ #define PROMOTE_SIGNAL_FILE "promote" #define FALLBACK_PROMOTE_SIGNAL_FILE "fallback_promote" #endif /* XLOG_H */ libpg_query-13-2.1.0/src/postgres/include/access/xlog_internal.h000066400000000000000000000257631413137616400246370ustar00rootroot00000000000000/* * xlog_internal.h * * PostgreSQL write-ahead log internal declarations * * NOTE: this file is intended to contain declarations useful for * manipulating the XLOG files directly, but it is not supposed to be * needed by rmgr routines (redo support for individual record types). * So the XLogRecord typedef and associated stuff appear in xlogrecord.h. * * Note: This file must be includable in both frontend and backend contexts, * to allow stand-alone tools like pg_receivewal to deal with WAL files. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlog_internal.h */ #ifndef XLOG_INTERNAL_H #define XLOG_INTERNAL_H #include "access/xlogdefs.h" #include "access/xlogreader.h" #include "datatype/timestamp.h" #include "lib/stringinfo.h" #include "pgtime.h" #include "storage/block.h" #include "storage/relfilenode.h" /* * Each page of XLOG file has a header like this: */ #define XLOG_PAGE_MAGIC 0xD106 /* can be used as WAL version indicator */ typedef struct XLogPageHeaderData { uint16 xlp_magic; /* magic value for correctness checks */ uint16 xlp_info; /* flag bits, see below */ TimeLineID xlp_tli; /* TimeLineID of first record on page */ XLogRecPtr xlp_pageaddr; /* XLOG address of this page */ /* * When there is not enough space on current page for whole record, we * continue on the next page. xlp_rem_len is the number of bytes * remaining from a previous page. * * Note that xlp_rem_len includes backup-block data; that is, it tracks * xl_tot_len not xl_len in the initial header. Also note that the * continuation data isn't necessarily aligned. */ uint32 xlp_rem_len; /* total len of remaining data for record */ } XLogPageHeaderData; #define SizeOfXLogShortPHD MAXALIGN(sizeof(XLogPageHeaderData)) typedef XLogPageHeaderData *XLogPageHeader; /* * When the XLP_LONG_HEADER flag is set, we store additional fields in the * page header. (This is ordinarily done just in the first page of an * XLOG file.) The additional fields serve to identify the file accurately. */ typedef struct XLogLongPageHeaderData { XLogPageHeaderData std; /* standard header fields */ uint64 xlp_sysid; /* system identifier from pg_control */ uint32 xlp_seg_size; /* just as a cross-check */ uint32 xlp_xlog_blcksz; /* just as a cross-check */ } XLogLongPageHeaderData; #define SizeOfXLogLongPHD MAXALIGN(sizeof(XLogLongPageHeaderData)) typedef XLogLongPageHeaderData *XLogLongPageHeader; /* When record crosses page boundary, set this flag in new page's header */ #define XLP_FIRST_IS_CONTRECORD 0x0001 /* This flag indicates a "long" page header */ #define XLP_LONG_HEADER 0x0002 /* This flag indicates backup blocks starting in this page are optional */ #define XLP_BKP_REMOVABLE 0x0004 /* All defined flag bits in xlp_info (used for validity checking of header) */ #define XLP_ALL_FLAGS 0x0007 #define XLogPageHeaderSize(hdr) \ (((hdr)->xlp_info & XLP_LONG_HEADER) ? SizeOfXLogLongPHD : SizeOfXLogShortPHD) /* wal_segment_size can range from 1MB to 1GB */ #define WalSegMinSize 1024 * 1024 #define WalSegMaxSize 1024 * 1024 * 1024 /* default number of min and max wal segments */ #define DEFAULT_MIN_WAL_SEGS 5 #define DEFAULT_MAX_WAL_SEGS 64 /* check that the given size is a valid wal_segment_size */ #define IsPowerOf2(x) (x > 0 && ((x) & ((x)-1)) == 0) #define IsValidWalSegSize(size) \ (IsPowerOf2(size) && \ ((size) >= WalSegMinSize && (size) <= WalSegMaxSize)) #define XLogSegmentsPerXLogId(wal_segsz_bytes) \ (UINT64CONST(0x100000000) / (wal_segsz_bytes)) #define XLogSegNoOffsetToRecPtr(segno, offset, wal_segsz_bytes, dest) \ (dest) = (segno) * (wal_segsz_bytes) + (offset) #define XLogSegmentOffset(xlogptr, wal_segsz_bytes) \ ((xlogptr) & ((wal_segsz_bytes) - 1)) /* * Compute a segment number from an XLogRecPtr. * * For XLByteToSeg, do the computation at face value. For XLByteToPrevSeg, * a boundary byte is taken to be in the previous segment. This is suitable * for deciding which segment to write given a pointer to a record end, * for example. */ #define XLByteToSeg(xlrp, logSegNo, wal_segsz_bytes) \ logSegNo = (xlrp) / (wal_segsz_bytes) #define XLByteToPrevSeg(xlrp, logSegNo, wal_segsz_bytes) \ logSegNo = ((xlrp) - 1) / (wal_segsz_bytes) /* * Convert values of GUCs measured in megabytes to equiv. segment count. * Rounds down. */ #define XLogMBVarToSegs(mbvar, wal_segsz_bytes) \ ((mbvar) / ((wal_segsz_bytes) / (1024 * 1024))) /* * Is an XLogRecPtr within a particular XLOG segment? * * For XLByteInSeg, do the computation at face value. For XLByteInPrevSeg, * a boundary byte is taken to be in the previous segment. */ #define XLByteInSeg(xlrp, logSegNo, wal_segsz_bytes) \ (((xlrp) / (wal_segsz_bytes)) == (logSegNo)) #define XLByteInPrevSeg(xlrp, logSegNo, wal_segsz_bytes) \ ((((xlrp) - 1) / (wal_segsz_bytes)) == (logSegNo)) /* Check if an XLogRecPtr value is in a plausible range */ #define XRecOffIsValid(xlrp) \ ((xlrp) % XLOG_BLCKSZ >= SizeOfXLogShortPHD) /* * The XLog directory and control file (relative to $PGDATA) */ #define XLOGDIR "pg_wal" #define XLOG_CONTROL_FILE "global/pg_control" /* * These macros encapsulate knowledge about the exact layout of XLog file * names, timeline history file names, and archive-status file names. */ #define MAXFNAMELEN 64 /* Length of XLog file name */ #define XLOG_FNAME_LEN 24 /* * Generate a WAL segment file name. Do not use this macro in a helper * function allocating the result generated. */ #define XLogFileName(fname, tli, logSegNo, wal_segsz_bytes) \ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, \ (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes))) #define XLogFileNameById(fname, tli, log, seg) \ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, log, seg) #define IsXLogFileName(fname) \ (strlen(fname) == XLOG_FNAME_LEN && \ strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN) /* * XLOG segment with .partial suffix. Used by pg_receivewal and at end of * archive recovery, when we want to archive a WAL segment but it might not * be complete yet. */ #define IsPartialXLogFileName(fname) \ (strlen(fname) == XLOG_FNAME_LEN + strlen(".partial") && \ strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN && \ strcmp((fname) + XLOG_FNAME_LEN, ".partial") == 0) #define XLogFromFileName(fname, tli, logSegNo, wal_segsz_bytes) \ do { \ uint32 log; \ uint32 seg; \ sscanf(fname, "%08X%08X%08X", tli, &log, &seg); \ *logSegNo = (uint64) log * XLogSegmentsPerXLogId(wal_segsz_bytes) + seg; \ } while (0) #define XLogFilePath(path, tli, logSegNo, wal_segsz_bytes) \ snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X", tli, \ (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes))) #define TLHistoryFileName(fname, tli) \ snprintf(fname, MAXFNAMELEN, "%08X.history", tli) #define IsTLHistoryFileName(fname) \ (strlen(fname) == 8 + strlen(".history") && \ strspn(fname, "0123456789ABCDEF") == 8 && \ strcmp((fname) + 8, ".history") == 0) #define TLHistoryFilePath(path, tli) \ snprintf(path, MAXPGPATH, XLOGDIR "/%08X.history", tli) #define StatusFilePath(path, xlog, suffix) \ snprintf(path, MAXPGPATH, XLOGDIR "/archive_status/%s%s", xlog, suffix) #define BackupHistoryFileName(fname, tli, logSegNo, startpoint, wal_segsz_bytes) \ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X.%08X.backup", tli, \ (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) (XLogSegmentOffset(startpoint, wal_segsz_bytes))) #define IsBackupHistoryFileName(fname) \ (strlen(fname) > XLOG_FNAME_LEN && \ strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN && \ strcmp((fname) + strlen(fname) - strlen(".backup"), ".backup") == 0) #define BackupHistoryFilePath(path, tli, logSegNo, startpoint, wal_segsz_bytes) \ snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X.%08X.backup", tli, \ (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes)), \ (uint32) (XLogSegmentOffset((startpoint), wal_segsz_bytes))) /* * Information logged when we detect a change in one of the parameters * important for Hot Standby. */ typedef struct xl_parameter_change { int MaxConnections; int max_worker_processes; int max_wal_senders; int max_prepared_xacts; int max_locks_per_xact; int wal_level; bool wal_log_hints; bool track_commit_timestamp; } xl_parameter_change; /* logs restore point */ typedef struct xl_restore_point { TimestampTz rp_time; char rp_name[MAXFNAMELEN]; } xl_restore_point; /* End of recovery mark, when we don't do an END_OF_RECOVERY checkpoint */ typedef struct xl_end_of_recovery { TimestampTz end_time; TimeLineID ThisTimeLineID; /* new TLI */ TimeLineID PrevTimeLineID; /* previous TLI we forked off from */ } xl_end_of_recovery; /* * The functions in xloginsert.c construct a chain of XLogRecData structs * to represent the final WAL record. */ typedef struct XLogRecData { struct XLogRecData *next; /* next struct in chain, or NULL */ char *data; /* start of rmgr data to include */ uint32 len; /* length of rmgr data to include */ } XLogRecData; /* * Recovery target action. */ typedef enum { RECOVERY_TARGET_ACTION_PAUSE, RECOVERY_TARGET_ACTION_PROMOTE, RECOVERY_TARGET_ACTION_SHUTDOWN } RecoveryTargetAction; /* * Method table for resource managers. * * This struct must be kept in sync with the PG_RMGR definition in * rmgr.c. * * rm_identify must return a name for the record based on xl_info (without * reference to the rmid). For example, XLOG_BTREE_VACUUM would be named * "VACUUM". rm_desc can then be called to obtain additional detail for the * record, if available (e.g. the last block). * * rm_mask takes as input a page modified by the resource manager and masks * out bits that shouldn't be flagged by wal_consistency_checking. * * RmgrTable[] is indexed by RmgrId values (see rmgrlist.h). */ typedef struct RmgrData { const char *rm_name; void (*rm_redo) (XLogReaderState *record); void (*rm_desc) (StringInfo buf, XLogReaderState *record); const char *(*rm_identify) (uint8 info); void (*rm_startup) (void); void (*rm_cleanup) (void); void (*rm_mask) (char *pagedata, BlockNumber blkno); } RmgrData; extern const RmgrData RmgrTable[]; /* * Exported to support xlog switching from checkpointer */ extern pg_time_t GetLastSegSwitchData(XLogRecPtr *lastSwitchLSN); extern XLogRecPtr RequestXLogSwitch(bool mark_unimportant); extern void GetOldestRestartPoint(XLogRecPtr *oldrecptr, TimeLineID *oldtli); /* * Exported for the functions in timeline.c and xlogarchive.c. Only valid * in the startup process. */ extern bool ArchiveRecoveryRequested; extern bool InArchiveRecovery; extern bool StandbyMode; extern char *recoveryRestoreCommand; #endif /* XLOG_INTERNAL_H */ libpg_query-13-2.1.0/src/postgres/include/access/xlogdefs.h000066400000000000000000000064371413137616400236020ustar00rootroot00000000000000/* * xlogdefs.h * * Postgres write-ahead log manager record pointer and * timeline number definitions * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlogdefs.h */ #ifndef XLOG_DEFS_H #define XLOG_DEFS_H #include /* need open() flags */ /* * Pointer to a location in the XLOG. These pointers are 64 bits wide, * because we don't want them ever to overflow. */ typedef uint64 XLogRecPtr; /* * Zero is used indicate an invalid pointer. Bootstrap skips the first possible * WAL segment, initializing the first WAL page at WAL segment size, so no XLOG * record can begin at zero. */ #define InvalidXLogRecPtr 0 #define XLogRecPtrIsInvalid(r) ((r) == InvalidXLogRecPtr) /* * First LSN to use for "fake" LSNs. * * Values smaller than this can be used for special per-AM purposes. */ #define FirstNormalUnloggedLSN ((XLogRecPtr) 1000) /* * XLogSegNo - physical log file sequence number. */ typedef uint64 XLogSegNo; /* * TimeLineID (TLI) - identifies different database histories to prevent * confusion after restoring a prior state of a database installation. * TLI does not change in a normal stop/restart of the database (including * crash-and-recover cases); but we must assign a new TLI after doing * a recovery to a prior state, a/k/a point-in-time recovery. This makes * the new WAL logfile sequence we generate distinguishable from the * sequence that was generated in the previous incarnation. */ typedef uint32 TimeLineID; /* * Replication origin id - this is located in this file to avoid having to * include origin.h in a bunch of xlog related places. */ typedef uint16 RepOriginId; /* * Because O_DIRECT bypasses the kernel buffers, and because we never * read those buffers except during crash recovery or if wal_level != minimal, * it is a win to use it in all cases where we sync on each write(). We could * allow O_DIRECT with fsync(), but it is unclear if fsync() could process * writes not buffered in the kernel. Also, O_DIRECT is never enough to force * data to the drives, it merely tries to bypass the kernel cache, so we still * need O_SYNC/O_DSYNC. */ #ifdef O_DIRECT #define PG_O_DIRECT O_DIRECT #else #define PG_O_DIRECT 0 #endif /* * This chunk of hackery attempts to determine which file sync methods * are available on the current platform, and to choose an appropriate * default method. We assume that fsync() is always available, and that * configure determined whether fdatasync() is. */ #if defined(O_SYNC) #define OPEN_SYNC_FLAG O_SYNC #elif defined(O_FSYNC) #define OPEN_SYNC_FLAG O_FSYNC #endif #if defined(O_DSYNC) #if defined(OPEN_SYNC_FLAG) /* O_DSYNC is distinct? */ #if O_DSYNC != OPEN_SYNC_FLAG #define OPEN_DATASYNC_FLAG O_DSYNC #endif #else /* !defined(OPEN_SYNC_FLAG) */ /* Win32 only has O_DSYNC */ #define OPEN_DATASYNC_FLAG O_DSYNC #endif #endif #if defined(PLATFORM_DEFAULT_SYNC_METHOD) #define DEFAULT_SYNC_METHOD PLATFORM_DEFAULT_SYNC_METHOD #elif defined(OPEN_DATASYNC_FLAG) #define DEFAULT_SYNC_METHOD SYNC_METHOD_OPEN_DSYNC #elif defined(HAVE_FDATASYNC) #define DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC #else #define DEFAULT_SYNC_METHOD SYNC_METHOD_FSYNC #endif #endif /* XLOG_DEFS_H */ libpg_query-13-2.1.0/src/postgres/include/access/xloginsert.h000066400000000000000000000047211413137616400241570ustar00rootroot00000000000000/* * xloginsert.h * * Functions for generating WAL records * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xloginsert.h */ #ifndef XLOGINSERT_H #define XLOGINSERT_H #include "access/rmgr.h" #include "access/xlogdefs.h" #include "storage/block.h" #include "storage/buf.h" #include "storage/relfilenode.h" #include "utils/relcache.h" /* * The minimum size of the WAL construction working area. If you need to * register more than XLR_NORMAL_MAX_BLOCK_ID block references or have more * than XLR_NORMAL_RDATAS data chunks in a single WAL record, you must call * XLogEnsureRecordSpace() first to allocate more working memory. */ #define XLR_NORMAL_MAX_BLOCK_ID 4 #define XLR_NORMAL_RDATAS 20 /* flags for XLogRegisterBuffer */ #define REGBUF_FORCE_IMAGE 0x01 /* force a full-page image */ #define REGBUF_NO_IMAGE 0x02 /* don't take a full-page image */ #define REGBUF_WILL_INIT (0x04 | 0x02) /* page will be re-initialized at * replay (implies NO_IMAGE) */ #define REGBUF_STANDARD 0x08 /* page follows "standard" page layout, * (data between pd_lower and pd_upper * will be skipped) */ #define REGBUF_KEEP_DATA 0x10 /* include data even if a full-page image * is taken */ /* prototypes for public functions in xloginsert.c: */ extern void XLogBeginInsert(void); extern void XLogSetRecordFlags(uint8 flags); extern XLogRecPtr XLogInsert(RmgrId rmid, uint8 info); extern void XLogEnsureRecordSpace(int max_block_id, int ndatas); extern void XLogRegisterData(char *data, int len); extern void XLogRegisterBuffer(uint8 block_id, Buffer buffer, uint8 flags); extern void XLogRegisterBlock(uint8 block_id, RelFileNode *rnode, ForkNumber forknum, BlockNumber blknum, char *page, uint8 flags); extern void XLogRegisterBufData(uint8 block_id, char *data, int len); extern void XLogResetInsertion(void); extern bool XLogCheckBufferNeedsBackup(Buffer buffer); extern XLogRecPtr log_newpage(RelFileNode *rnode, ForkNumber forkNum, BlockNumber blk, char *page, bool page_std); extern XLogRecPtr log_newpage_buffer(Buffer buffer, bool page_std); extern void log_newpage_range(Relation rel, ForkNumber forkNum, BlockNumber startblk, BlockNumber endblk, bool page_std); extern XLogRecPtr XLogSaveBufferForHint(Buffer buffer, bool buffer_std); extern void InitXLogInsert(void); #endif /* XLOGINSERT_H */ libpg_query-13-2.1.0/src/postgres/include/access/xlogreader.h000066400000000000000000000252241413137616400241160ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * xlogreader.h * Definitions for the generic XLog reading facility * * Portions Copyright (c) 2013-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/access/xlogreader.h * * NOTES * See the definition of the XLogReaderState struct for instructions on * how to use the XLogReader infrastructure. * * The basic idea is to allocate an XLogReaderState via * XLogReaderAllocate(), position the reader to the first record with * XLogBeginRead() or XLogFindNextRecord(), and call XLogReadRecord() * until it returns NULL. * * Callers supply a page_read callback if they want to to call * XLogReadRecord or XLogFindNextRecord; it can be passed in as NULL * otherwise. The WALRead function can be used as a helper to write * page_read callbacks, but it is not mandatory; callers that use it, * must supply segment_open callbacks. The segment_close callback * must always be supplied. * * After reading a record with XLogReadRecord(), it's decomposed into * the per-block and main data parts, and the parts can be accessed * with the XLogRec* macros and functions. You can also decode a * record that's already constructed in memory, without reading from * disk, by calling the DecodeXLogRecord() function. *------------------------------------------------------------------------- */ #ifndef XLOGREADER_H #define XLOGREADER_H #ifndef FRONTEND #include "access/transam.h" #endif #include "access/xlogrecord.h" /* WALOpenSegment represents a WAL segment being read. */ typedef struct WALOpenSegment { int ws_file; /* segment file descriptor */ XLogSegNo ws_segno; /* segment number */ TimeLineID ws_tli; /* timeline ID of the currently open file */ } WALOpenSegment; /* WALSegmentContext carries context information about WAL segments to read */ typedef struct WALSegmentContext { char ws_dir[MAXPGPATH]; int ws_segsize; } WALSegmentContext; typedef struct XLogReaderState XLogReaderState; /* Function type definitions for various xlogreader interactions */ typedef int (*XLogPageReadCB) (XLogReaderState *xlogreader, XLogRecPtr targetPagePtr, int reqLen, XLogRecPtr targetRecPtr, char *readBuf); typedef void (*WALSegmentOpenCB) (XLogReaderState *xlogreader, XLogSegNo nextSegNo, TimeLineID *tli_p); typedef void (*WALSegmentCloseCB) (XLogReaderState *xlogreader); typedef struct XLogReaderRoutine { /* * Data input callback * * This callback shall read at least reqLen valid bytes of the xlog page * starting at targetPagePtr, and store them in readBuf. The callback * shall return the number of bytes read (never more than XLOG_BLCKSZ), or * -1 on failure. The callback shall sleep, if necessary, to wait for the * requested bytes to become available. The callback will not be invoked * again for the same page unless more than the returned number of bytes * are needed. * * targetRecPtr is the position of the WAL record we're reading. Usually * it is equal to targetPagePtr + reqLen, but sometimes xlogreader needs * to read and verify the page or segment header, before it reads the * actual WAL record it's interested in. In that case, targetRecPtr can * be used to determine which timeline to read the page from. * * The callback shall set ->seg.ws_tli to the TLI of the file the page was * read from. */ XLogPageReadCB page_read; /* * Callback to open the specified WAL segment for reading. ->seg.ws_file * shall be set to the file descriptor of the opened segment. In case of * failure, an error shall be raised by the callback and it shall not * return. * * "nextSegNo" is the number of the segment to be opened. * * "tli_p" is an input/output argument. WALRead() uses it to pass the * timeline in which the new segment should be found, but the callback can * use it to return the TLI that it actually opened. */ WALSegmentOpenCB segment_open; /* * WAL segment close callback. ->seg.ws_file shall be set to a negative * number. */ WALSegmentCloseCB segment_close; } XLogReaderRoutine; #define XL_ROUTINE(...) &(XLogReaderRoutine){__VA_ARGS__} typedef struct { /* Is this block ref in use? */ bool in_use; /* Identify the block this refers to */ RelFileNode rnode; ForkNumber forknum; BlockNumber blkno; /* copy of the fork_flags field from the XLogRecordBlockHeader */ uint8 flags; /* Information on full-page image, if any */ bool has_image; /* has image, even for consistency checking */ bool apply_image; /* has image that should be restored */ char *bkp_image; uint16 hole_offset; uint16 hole_length; uint16 bimg_len; uint8 bimg_info; /* Buffer holding the rmgr-specific data associated with this block */ bool has_data; char *data; uint16 data_len; uint16 data_bufsz; } DecodedBkpBlock; struct XLogReaderState { /* * Operational callbacks */ XLogReaderRoutine routine; /* ---------------------------------------- * Public parameters * ---------------------------------------- */ /* * System identifier of the xlog files we're about to read. Set to zero * (the default value) if unknown or unimportant. */ uint64 system_identifier; /* * Opaque data for callbacks to use. Not used by XLogReader. */ void *private_data; /* * Start and end point of last record read. EndRecPtr is also used as the * position to read next. Calling XLogBeginRead() sets EndRecPtr to the * starting position and ReadRecPtr to invalid. */ XLogRecPtr ReadRecPtr; /* start of last record read */ XLogRecPtr EndRecPtr; /* end+1 of last record read */ /* ---------------------------------------- * Decoded representation of current record * * Use XLogRecGet* functions to investigate the record; these fields * should not be accessed directly. * ---------------------------------------- */ XLogRecord *decoded_record; /* currently decoded record */ char *main_data; /* record's main data portion */ uint32 main_data_len; /* main data portion's length */ uint32 main_data_bufsz; /* allocated size of the buffer */ RepOriginId record_origin; /* information about blocks referenced by the record. */ DecodedBkpBlock blocks[XLR_MAX_BLOCK_ID + 1]; int max_block_id; /* highest block_id in use (-1 if none) */ /* ---------------------------------------- * private/internal state * ---------------------------------------- */ /* * Buffer for currently read page (XLOG_BLCKSZ bytes, valid up to at least * readLen bytes) */ char *readBuf; uint32 readLen; /* last read XLOG position for data currently in readBuf */ WALSegmentContext segcxt; WALOpenSegment seg; uint32 segoff; /* * beginning of prior page read, and its TLI. Doesn't necessarily * correspond to what's in readBuf; used for timeline sanity checks. */ XLogRecPtr latestPagePtr; TimeLineID latestPageTLI; /* beginning of the WAL record being read. */ XLogRecPtr currRecPtr; /* timeline to read it from, 0 if a lookup is required */ TimeLineID currTLI; /* * Safe point to read to in currTLI if current TLI is historical * (tliSwitchPoint) or InvalidXLogRecPtr if on current timeline. * * Actually set to the start of the segment containing the timeline switch * that ends currTLI's validity, not the LSN of the switch its self, since * we can't assume the old segment will be present. */ XLogRecPtr currTLIValidUntil; /* * If currTLI is not the most recent known timeline, the next timeline to * read from when currTLIValidUntil is reached. */ TimeLineID nextTLI; /* * Buffer for current ReadRecord result (expandable), used when a record * crosses a page boundary. */ char *readRecordBuf; uint32 readRecordBufSize; /* Buffer to hold error message */ char *errormsg_buf; }; /* Get a new XLogReader */ extern XLogReaderState *XLogReaderAllocate(int wal_segment_size, const char *waldir, XLogReaderRoutine *routine, void *private_data); extern XLogReaderRoutine *LocalXLogReaderRoutine(void); /* Free an XLogReader */ extern void XLogReaderFree(XLogReaderState *state); /* Position the XLogReader to given record */ extern void XLogBeginRead(XLogReaderState *state, XLogRecPtr RecPtr); #ifdef FRONTEND extern XLogRecPtr XLogFindNextRecord(XLogReaderState *state, XLogRecPtr RecPtr); #endif /* FRONTEND */ /* Read the next XLog record. Returns NULL on end-of-WAL or failure */ extern struct XLogRecord *XLogReadRecord(XLogReaderState *state, char **errormsg); /* Validate a page */ extern bool XLogReaderValidatePageHeader(XLogReaderState *state, XLogRecPtr recptr, char *phdr); /* * Error information from WALRead that both backend and frontend caller can * process. Currently only errors from pg_pread can be reported. */ typedef struct WALReadError { int wre_errno; /* errno set by the last pg_pread() */ int wre_off; /* Offset we tried to read from. */ int wre_req; /* Bytes requested to be read. */ int wre_read; /* Bytes read by the last read(). */ WALOpenSegment wre_seg; /* Segment we tried to read from. */ } WALReadError; extern bool WALRead(XLogReaderState *state, char *buf, XLogRecPtr startptr, Size count, TimeLineID tli, WALReadError *errinfo); /* Functions for decoding an XLogRecord */ extern bool DecodeXLogRecord(XLogReaderState *state, XLogRecord *record, char **errmsg); #define XLogRecGetTotalLen(decoder) ((decoder)->decoded_record->xl_tot_len) #define XLogRecGetPrev(decoder) ((decoder)->decoded_record->xl_prev) #define XLogRecGetInfo(decoder) ((decoder)->decoded_record->xl_info) #define XLogRecGetRmid(decoder) ((decoder)->decoded_record->xl_rmid) #define XLogRecGetXid(decoder) ((decoder)->decoded_record->xl_xid) #define XLogRecGetOrigin(decoder) ((decoder)->record_origin) #define XLogRecGetData(decoder) ((decoder)->main_data) #define XLogRecGetDataLen(decoder) ((decoder)->main_data_len) #define XLogRecHasAnyBlockRefs(decoder) ((decoder)->max_block_id >= 0) #define XLogRecHasBlockRef(decoder, block_id) \ ((decoder)->blocks[block_id].in_use) #define XLogRecHasBlockImage(decoder, block_id) \ ((decoder)->blocks[block_id].has_image) #define XLogRecBlockImageApply(decoder, block_id) \ ((decoder)->blocks[block_id].apply_image) #ifndef FRONTEND extern FullTransactionId XLogRecGetFullXid(XLogReaderState *record); #endif extern bool RestoreBlockImage(XLogReaderState *record, uint8 block_id, char *page); extern char *XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len); extern bool XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id, RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blknum); #endif /* XLOGREADER_H */ libpg_query-13-2.1.0/src/postgres/include/access/xlogrecord.h000066400000000000000000000203711413137616400241300ustar00rootroot00000000000000/* * xlogrecord.h * * Definitions for the WAL record format. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/xlogrecord.h */ #ifndef XLOGRECORD_H #define XLOGRECORD_H #include "access/rmgr.h" #include "access/xlogdefs.h" #include "port/pg_crc32c.h" #include "storage/block.h" #include "storage/relfilenode.h" /* * The overall layout of an XLOG record is: * Fixed-size header (XLogRecord struct) * XLogRecordBlockHeader struct * XLogRecordBlockHeader struct * ... * XLogRecordDataHeader[Short|Long] struct * block data * block data * ... * main data * * There can be zero or more XLogRecordBlockHeaders, and 0 or more bytes of * rmgr-specific data not associated with a block. XLogRecord structs * always start on MAXALIGN boundaries in the WAL files, but the rest of * the fields are not aligned. * * The XLogRecordBlockHeader, XLogRecordDataHeaderShort and * XLogRecordDataHeaderLong structs all begin with a single 'id' byte. It's * used to distinguish between block references, and the main data structs. */ typedef struct XLogRecord { uint32 xl_tot_len; /* total len of entire record */ TransactionId xl_xid; /* xact id */ XLogRecPtr xl_prev; /* ptr to previous record in log */ uint8 xl_info; /* flag bits, see below */ RmgrId xl_rmid; /* resource manager for this record */ /* 2 bytes of padding here, initialize to zero */ pg_crc32c xl_crc; /* CRC for this record */ /* XLogRecordBlockHeaders and XLogRecordDataHeader follow, no padding */ } XLogRecord; #define SizeOfXLogRecord (offsetof(XLogRecord, xl_crc) + sizeof(pg_crc32c)) /* * The high 4 bits in xl_info may be used freely by rmgr. The * XLR_SPECIAL_REL_UPDATE and XLR_CHECK_CONSISTENCY bits can be passed by * XLogInsert caller. The rest are set internally by XLogInsert. */ #define XLR_INFO_MASK 0x0F #define XLR_RMGR_INFO_MASK 0xF0 /* * If a WAL record modifies any relation files, in ways not covered by the * usual block references, this flag is set. This is not used for anything * by PostgreSQL itself, but it allows external tools that read WAL and keep * track of modified blocks to recognize such special record types. */ #define XLR_SPECIAL_REL_UPDATE 0x01 /* * Enforces consistency checks of replayed WAL at recovery. If enabled, * each record will log a full-page write for each block modified by the * record and will reuse it afterwards for consistency checks. The caller * of XLogInsert can use this value if necessary, but if * wal_consistency_checking is enabled for a rmgr this is set unconditionally. */ #define XLR_CHECK_CONSISTENCY 0x02 /* * Header info for block data appended to an XLOG record. * * 'data_length' is the length of the rmgr-specific payload data associated * with this block. It does not include the possible full page image, nor * XLogRecordBlockHeader struct itself. * * Note that we don't attempt to align the XLogRecordBlockHeader struct! * So, the struct must be copied to aligned local storage before use. */ typedef struct XLogRecordBlockHeader { uint8 id; /* block reference ID */ uint8 fork_flags; /* fork within the relation, and flags */ uint16 data_length; /* number of payload bytes (not including page * image) */ /* If BKPBLOCK_HAS_IMAGE, an XLogRecordBlockImageHeader struct follows */ /* If BKPBLOCK_SAME_REL is not set, a RelFileNode follows */ /* BlockNumber follows */ } XLogRecordBlockHeader; #define SizeOfXLogRecordBlockHeader (offsetof(XLogRecordBlockHeader, data_length) + sizeof(uint16)) /* * Additional header information when a full-page image is included * (i.e. when BKPBLOCK_HAS_IMAGE is set). * * The XLOG code is aware that PG data pages usually contain an unused "hole" * in the middle, which contains only zero bytes. Since we know that the * "hole" is all zeros, we remove it from the stored data (and it's not counted * in the XLOG record's CRC, either). Hence, the amount of block data actually * present is (BLCKSZ - ). * * Additionally, when wal_compression is enabled, we will try to compress full * page images using the PGLZ compression algorithm, after removing the "hole". * This can reduce the WAL volume, but at some extra cost of CPU spent * on the compression during WAL logging. In this case, since the "hole" * length cannot be calculated by subtracting the number of page image bytes * from BLCKSZ, basically it needs to be stored as an extra information. * But when no "hole" exists, we can assume that the "hole" length is zero * and no such an extra information needs to be stored. Note that * the original version of page image is stored in WAL instead of the * compressed one if the number of bytes saved by compression is less than * the length of extra information. Hence, when a page image is successfully * compressed, the amount of block data actually present is less than * BLCKSZ - the length of "hole" bytes - the length of extra information. */ typedef struct XLogRecordBlockImageHeader { uint16 length; /* number of page image bytes */ uint16 hole_offset; /* number of bytes before "hole" */ uint8 bimg_info; /* flag bits, see below */ /* * If BKPIMAGE_HAS_HOLE and BKPIMAGE_IS_COMPRESSED, an * XLogRecordBlockCompressHeader struct follows. */ } XLogRecordBlockImageHeader; #define SizeOfXLogRecordBlockImageHeader \ (offsetof(XLogRecordBlockImageHeader, bimg_info) + sizeof(uint8)) /* Information stored in bimg_info */ #define BKPIMAGE_HAS_HOLE 0x01 /* page image has "hole" */ #define BKPIMAGE_IS_COMPRESSED 0x02 /* page image is compressed */ #define BKPIMAGE_APPLY 0x04 /* page image should be restored during * replay */ /* * Extra header information used when page image has "hole" and * is compressed. */ typedef struct XLogRecordBlockCompressHeader { uint16 hole_length; /* number of bytes in "hole" */ } XLogRecordBlockCompressHeader; #define SizeOfXLogRecordBlockCompressHeader \ sizeof(XLogRecordBlockCompressHeader) /* * Maximum size of the header for a block reference. This is used to size a * temporary buffer for constructing the header. */ #define MaxSizeOfXLogRecordBlockHeader \ (SizeOfXLogRecordBlockHeader + \ SizeOfXLogRecordBlockImageHeader + \ SizeOfXLogRecordBlockCompressHeader + \ sizeof(RelFileNode) + \ sizeof(BlockNumber)) /* * The fork number fits in the lower 4 bits in the fork_flags field. The upper * bits are used for flags. */ #define BKPBLOCK_FORK_MASK 0x0F #define BKPBLOCK_FLAG_MASK 0xF0 #define BKPBLOCK_HAS_IMAGE 0x10 /* block data is an XLogRecordBlockImage */ #define BKPBLOCK_HAS_DATA 0x20 #define BKPBLOCK_WILL_INIT 0x40 /* redo will re-init the page */ #define BKPBLOCK_SAME_REL 0x80 /* RelFileNode omitted, same as previous */ /* * XLogRecordDataHeaderShort/Long are used for the "main data" portion of * the record. If the length of the data is less than 256 bytes, the short * form is used, with a single byte to hold the length. Otherwise the long * form is used. * * (These structs are currently not used in the code, they are here just for * documentation purposes). */ typedef struct XLogRecordDataHeaderShort { uint8 id; /* XLR_BLOCK_ID_DATA_SHORT */ uint8 data_length; /* number of payload bytes */ } XLogRecordDataHeaderShort; #define SizeOfXLogRecordDataHeaderShort (sizeof(uint8) * 2) typedef struct XLogRecordDataHeaderLong { uint8 id; /* XLR_BLOCK_ID_DATA_LONG */ /* followed by uint32 data_length, unaligned */ } XLogRecordDataHeaderLong; #define SizeOfXLogRecordDataHeaderLong (sizeof(uint8) + sizeof(uint32)) /* * Block IDs used to distinguish different kinds of record fragments. Block * references are numbered from 0 to XLR_MAX_BLOCK_ID. A rmgr is free to use * any ID number in that range (although you should stick to small numbers, * because the WAL machinery is optimized for that case). A couple of ID * numbers are reserved to denote the "main" data portion of the record. * * The maximum is currently set at 32, quite arbitrarily. Most records only * need a handful of block references, but there are a few exceptions that * need more. */ #define XLR_MAX_BLOCK_ID 32 #define XLR_BLOCK_ID_DATA_SHORT 255 #define XLR_BLOCK_ID_DATA_LONG 254 #define XLR_BLOCK_ID_ORIGIN 253 #endif /* XLOGRECORD_H */ libpg_query-13-2.1.0/src/postgres/include/bootstrap/000077500000000000000000000000001413137616400223605ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/bootstrap/bootstrap.h000066400000000000000000000032271413137616400245520ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * bootstrap.h * include file for the bootstrapping code * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/bootstrap/bootstrap.h * *------------------------------------------------------------------------- */ #ifndef BOOTSTRAP_H #define BOOTSTRAP_H #include "nodes/execnodes.h" /* * MAXATTR is the maximum number of attributes in a relation supported * at bootstrap time (i.e., the max possible in a system table). */ #define MAXATTR 40 #define BOOTCOL_NULL_AUTO 1 #define BOOTCOL_NULL_FORCE_NULL 2 #define BOOTCOL_NULL_FORCE_NOT_NULL 3 extern Relation boot_reldesc; extern Form_pg_attribute attrtypes[MAXATTR]; extern int numattr; extern void AuxiliaryProcessMain(int argc, char *argv[]) pg_attribute_noreturn(); extern void closerel(char *name); extern void boot_openrel(char *name); extern void DefineAttr(char *name, char *type, int attnum, int nullness); extern void InsertOneTuple(void); extern void InsertOneValue(char *value, int i); extern void InsertOneNull(int i); extern void index_register(Oid heap, Oid ind, IndexInfo *indexInfo); extern void build_indices(void); extern void boot_get_type_io_data(Oid typid, int16 *typlen, bool *typbyval, char *typalign, char *typdelim, Oid *typioparam, Oid *typinput, Oid *typoutput); extern int boot_yyparse(void); extern int boot_yylex(void); extern void boot_yyerror(const char *str) pg_attribute_noreturn(); #endif /* BOOTSTRAP_H */ libpg_query-13-2.1.0/src/postgres/include/c.h000066400000000000000000001245141413137616400207450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * c.h * Fundamental C definitions. This is included by every .c file in * PostgreSQL (via either postgres.h or postgres_fe.h, as appropriate). * * Note that the definitions here are not intended to be exposed to clients * of the frontend interface libraries --- so we don't worry much about * polluting the namespace with lots of stuff... * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/c.h * *------------------------------------------------------------------------- */ /* *---------------------------------------------------------------- * TABLE OF CONTENTS * * When adding stuff to this file, please try to put stuff * into the relevant section, or add new sections as appropriate. * * section description * ------- ------------------------------------------------ * 0) pg_config.h and standard system headers * 1) compiler characteristics * 2) bool, true, false * 3) standard system types * 4) IsValid macros for system types * 5) offsetof, lengthof, alignment * 6) assertions * 7) widely useful macros * 8) random stuff * 9) system-specific hacks * * NOTE: since this file is included by both frontend and backend modules, * it's usually wrong to put an "extern" declaration here, unless it's * ifdef'd so that it's seen in only one case or the other. * typedefs and macros are the kind of thing that might go here. * *---------------------------------------------------------------- */ #ifndef C_H #define C_H #include "postgres_ext.h" /* Must undef pg_config_ext.h symbols before including pg_config.h */ #undef PG_INT64_TYPE #include "pg_config.h" #include "pg_config_manual.h" /* must be after pg_config.h */ #include "pg_config_os.h" /* must be before any system header files */ /* System header files that should be available everywhere in Postgres */ #include #include #include #include #include #ifdef HAVE_STRINGS_H #include #endif #include #include #include #if defined(WIN32) || defined(__CYGWIN__) #include /* ensure O_BINARY is available */ #endif #include #ifdef ENABLE_NLS #include #endif /* ---------------------------------------------------------------- * Section 1: compiler characteristics * * type prefixes (const, signed, volatile, inline) are handled in pg_config.h. * ---------------------------------------------------------------- */ /* * Disable "inline" if PG_FORCE_DISABLE_INLINE is defined. * This is used to work around compiler bugs and might also be useful for * investigatory purposes. */ #ifdef PG_FORCE_DISABLE_INLINE #undef inline #define inline #endif /* * Attribute macros * * GCC: https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html * GCC: https://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html * Sunpro: https://docs.oracle.com/cd/E18659_01/html/821-1384/gjzke.html * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/function_attributes.html * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/type_attrib.html */ /* only GCC supports the unused attribute */ #ifdef __GNUC__ #define pg_attribute_unused() __attribute__((unused)) #else #define pg_attribute_unused() #endif /* * Place this macro before functions that should be allowed to make misaligned * accesses. Think twice before using it on non-x86-specific code! * Testing can be done with "-fsanitize=alignment -fsanitize-trap=alignment" * on clang, or "-fsanitize=alignment -fno-sanitize-recover=alignment" on gcc. */ #if __clang_major__ >= 7 || __GNUC__ >= 8 #define pg_attribute_no_sanitize_alignment() __attribute__((no_sanitize("alignment"))) #else #define pg_attribute_no_sanitize_alignment() #endif /* * Append PG_USED_FOR_ASSERTS_ONLY to definitions of variables that are only * used in assert-enabled builds, to avoid compiler warnings about unused * variables in assert-disabled builds. */ #ifdef USE_ASSERT_CHECKING #define PG_USED_FOR_ASSERTS_ONLY #else #define PG_USED_FOR_ASSERTS_ONLY pg_attribute_unused() #endif /* GCC and XLC support format attributes */ #if defined(__GNUC__) || defined(__IBMC__) #define pg_attribute_format_arg(a) __attribute__((format_arg(a))) #define pg_attribute_printf(f,a) __attribute__((format(PG_PRINTF_ATTRIBUTE, f, a))) #else #define pg_attribute_format_arg(a) #define pg_attribute_printf(f,a) #endif /* GCC, Sunpro and XLC support aligned, packed and noreturn */ #if defined(__GNUC__) || defined(__SUNPRO_C) || defined(__IBMC__) #define pg_attribute_aligned(a) __attribute__((aligned(a))) #define pg_attribute_noreturn() __attribute__((noreturn)) #define pg_attribute_packed() __attribute__((packed)) #define HAVE_PG_ATTRIBUTE_NORETURN 1 #else /* * NB: aligned and packed are not given default definitions because they * affect code functionality; they *must* be implemented by the compiler * if they are to be used. */ #define pg_attribute_noreturn() #endif /* * Use "pg_attribute_always_inline" in place of "inline" for functions that * we wish to force inlining of, even when the compiler's heuristics would * choose not to. But, if possible, don't force inlining in unoptimized * debug builds. */ #if (defined(__GNUC__) && __GNUC__ > 3 && defined(__OPTIMIZE__)) || defined(__SUNPRO_C) || defined(__IBMC__) /* GCC > 3, Sunpro and XLC support always_inline via __attribute__ */ #define pg_attribute_always_inline __attribute__((always_inline)) inline #elif defined(_MSC_VER) /* MSVC has a special keyword for this */ #define pg_attribute_always_inline __forceinline #else /* Otherwise, the best we can do is to say "inline" */ #define pg_attribute_always_inline inline #endif /* * Forcing a function not to be inlined can be useful if it's the slow path of * a performance-critical function, or should be visible in profiles to allow * for proper cost attribution. Note that unlike the pg_attribute_XXX macros * above, this should be placed before the function's return type and name. */ /* GCC, Sunpro and XLC support noinline via __attribute__ */ #if (defined(__GNUC__) && __GNUC__ > 2) || defined(__SUNPRO_C) || defined(__IBMC__) #define pg_noinline __attribute__((noinline)) /* msvc via declspec */ #elif defined(_MSC_VER) #define pg_noinline __declspec(noinline) #else #define pg_noinline #endif /* * Mark a point as unreachable in a portable fashion. This should preferably * be something that the compiler understands, to aid code generation. * In assert-enabled builds, we prefer abort() for debugging reasons. */ #if defined(HAVE__BUILTIN_UNREACHABLE) && !defined(USE_ASSERT_CHECKING) #define pg_unreachable() __builtin_unreachable() #elif defined(_MSC_VER) && !defined(USE_ASSERT_CHECKING) #define pg_unreachable() __assume(0) #else #define pg_unreachable() abort() #endif /* * Hints to the compiler about the likelihood of a branch. Both likely() and * unlikely() return the boolean value of the contained expression. * * These should only be used sparingly, in very hot code paths. It's very easy * to mis-estimate likelihoods. */ #if __GNUC__ >= 3 #define likely(x) __builtin_expect((x) != 0, 1) #define unlikely(x) __builtin_expect((x) != 0, 0) #else #define likely(x) ((x) != 0) #define unlikely(x) ((x) != 0) #endif /* * CppAsString * Convert the argument to a string, using the C preprocessor. * CppAsString2 * Convert the argument to a string, after one round of macro expansion. * CppConcat * Concatenate two arguments together, using the C preprocessor. * * Note: There used to be support here for pre-ANSI C compilers that didn't * support # and ##. Nowadays, these macros are just for clarity and/or * backward compatibility with existing PostgreSQL code. */ #define CppAsString(identifier) #identifier #define CppAsString2(x) CppAsString(x) #define CppConcat(x, y) x##y /* * VA_ARGS_NARGS * Returns the number of macro arguments it is passed. * * An empty argument still counts as an argument, so effectively, this is * "one more than the number of commas in the argument list". * * This works for up to 63 arguments. Internally, VA_ARGS_NARGS_() is passed * 64+N arguments, and the C99 standard only requires macros to allow up to * 127 arguments, so we can't portably go higher. The implementation is * pretty trivial: VA_ARGS_NARGS_() returns its 64th argument, and we set up * the call so that that is the appropriate one of the list of constants. * This idea is due to Laurent Deniau. */ #define VA_ARGS_NARGS(...) \ VA_ARGS_NARGS_(__VA_ARGS__, \ 63,62,61,60, \ 59,58,57,56,55,54,53,52,51,50, \ 49,48,47,46,45,44,43,42,41,40, \ 39,38,37,36,35,34,33,32,31,30, \ 29,28,27,26,25,24,23,22,21,20, \ 19,18,17,16,15,14,13,12,11,10, \ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) #define VA_ARGS_NARGS_( \ _01,_02,_03,_04,_05,_06,_07,_08,_09,_10, \ _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \ _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \ _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \ _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \ _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \ _61,_62,_63, N, ...) \ (N) /* * dummyret is used to set return values in macros that use ?: to make * assignments. gcc wants these to be void, other compilers like char */ #ifdef __GNUC__ /* GNU cc */ #define dummyret void #else #define dummyret char #endif /* * We require C99, hence the compiler should understand flexible array * members. However, for documentation purposes we still consider it to be * project style to write "field[FLEXIBLE_ARRAY_MEMBER]" not just "field[]". * When computing the size of such an object, use "offsetof(struct s, f)" * for portability. Don't use "offsetof(struct s, f[0])", as this doesn't * work with MSVC and with C++ compilers. */ #define FLEXIBLE_ARRAY_MEMBER /* empty */ /* Which __func__ symbol do we have, if any? */ #ifdef HAVE_FUNCNAME__FUNC #define PG_FUNCNAME_MACRO __func__ #else #ifdef HAVE_FUNCNAME__FUNCTION #define PG_FUNCNAME_MACRO __FUNCTION__ #else #define PG_FUNCNAME_MACRO NULL #endif #endif /* ---------------------------------------------------------------- * Section 2: bool, true, false * ---------------------------------------------------------------- */ /* * bool * Boolean value, either true or false. * * We use stdbool.h if available and its bool has size 1. That's useful for * better compiler and debugger output and for compatibility with third-party * libraries. But PostgreSQL currently cannot deal with bool of other sizes; * there are static assertions around the code to prevent that. * * For C++ compilers, we assume the compiler has a compatible built-in * definition of bool. * * See also the version of this code in src/interfaces/ecpg/include/ecpglib.h. */ #ifndef __cplusplus #ifdef PG_USE_STDBOOL #include #else #ifndef bool typedef unsigned char bool; #endif #ifndef true #define true ((bool) 1) #endif #ifndef false #define false ((bool) 0) #endif #endif /* not PG_USE_STDBOOL */ #endif /* not C++ */ /* ---------------------------------------------------------------- * Section 3: standard system types * ---------------------------------------------------------------- */ /* * Pointer * Variable holding address of any memory resident object. * * XXX Pointer arithmetic is done with this, so it can't be void * * under "true" ANSI compilers. */ typedef char *Pointer; /* * intN * Signed integer, EXACTLY N BITS IN SIZE, * used for numerical computations and the * frontend/backend protocol. */ #ifndef HAVE_INT8 typedef signed char int8; /* == 8 bits */ typedef signed short int16; /* == 16 bits */ typedef signed int int32; /* == 32 bits */ #endif /* not HAVE_INT8 */ /* * uintN * Unsigned integer, EXACTLY N BITS IN SIZE, * used for numerical computations and the * frontend/backend protocol. */ #ifndef HAVE_UINT8 typedef unsigned char uint8; /* == 8 bits */ typedef unsigned short uint16; /* == 16 bits */ typedef unsigned int uint32; /* == 32 bits */ #endif /* not HAVE_UINT8 */ /* * bitsN * Unit of bitwise operation, AT LEAST N BITS IN SIZE. */ typedef uint8 bits8; /* >= 8 bits */ typedef uint16 bits16; /* >= 16 bits */ typedef uint32 bits32; /* >= 32 bits */ /* * 64-bit integers */ #ifdef HAVE_LONG_INT_64 /* Plain "long int" fits, use it */ #ifndef HAVE_INT64 typedef long int int64; #endif #ifndef HAVE_UINT64 typedef unsigned long int uint64; #endif #define INT64CONST(x) (x##L) #define UINT64CONST(x) (x##UL) #elif defined(HAVE_LONG_LONG_INT_64) /* We have working support for "long long int", use that */ #ifndef HAVE_INT64 typedef long long int int64; #endif #ifndef HAVE_UINT64 typedef unsigned long long int uint64; #endif #define INT64CONST(x) (x##LL) #define UINT64CONST(x) (x##ULL) #else /* neither HAVE_LONG_INT_64 nor HAVE_LONG_LONG_INT_64 */ #error must have a working 64-bit integer datatype #endif /* snprintf format strings to use for 64-bit integers */ #define INT64_FORMAT "%" INT64_MODIFIER "d" #define UINT64_FORMAT "%" INT64_MODIFIER "u" /* * 128-bit signed and unsigned integers * There currently is only limited support for such types. * E.g. 128bit literals and snprintf are not supported; but math is. * Also, because we exclude such types when choosing MAXIMUM_ALIGNOF, * it must be possible to coerce the compiler to allocate them on no * more than MAXALIGN boundaries. */ #if defined(PG_INT128_TYPE) #if defined(pg_attribute_aligned) || ALIGNOF_PG_INT128_TYPE <= MAXIMUM_ALIGNOF #define HAVE_INT128 1 typedef PG_INT128_TYPE int128 #if defined(pg_attribute_aligned) pg_attribute_aligned(MAXIMUM_ALIGNOF) #endif ; typedef unsigned PG_INT128_TYPE uint128 #if defined(pg_attribute_aligned) pg_attribute_aligned(MAXIMUM_ALIGNOF) #endif ; #endif #endif /* * stdint.h limits aren't guaranteed to have compatible types with our fixed * width types. So just define our own. */ #define PG_INT8_MIN (-0x7F-1) #define PG_INT8_MAX (0x7F) #define PG_UINT8_MAX (0xFF) #define PG_INT16_MIN (-0x7FFF-1) #define PG_INT16_MAX (0x7FFF) #define PG_UINT16_MAX (0xFFFF) #define PG_INT32_MIN (-0x7FFFFFFF-1) #define PG_INT32_MAX (0x7FFFFFFF) #define PG_UINT32_MAX (0xFFFFFFFFU) #define PG_INT64_MIN (-INT64CONST(0x7FFFFFFFFFFFFFFF) - 1) #define PG_INT64_MAX INT64CONST(0x7FFFFFFFFFFFFFFF) #define PG_UINT64_MAX UINT64CONST(0xFFFFFFFFFFFFFFFF) /* * We now always use int64 timestamps, but keep this symbol defined for the * benefit of external code that might test it. */ #define HAVE_INT64_TIMESTAMP /* * Size * Size of any memory resident object, as returned by sizeof. */ typedef size_t Size; /* * Index * Index into any memory resident array. * * Note: * Indices are non negative. */ typedef unsigned int Index; /* * Offset * Offset into any memory resident array. * * Note: * This differs from an Index in that an Index is always * non negative, whereas Offset may be negative. */ typedef signed int Offset; /* * Common Postgres datatype names (as used in the catalogs) */ typedef float float4; typedef double float8; #ifdef USE_FLOAT8_BYVAL #define FLOAT8PASSBYVAL true #else #define FLOAT8PASSBYVAL false #endif /* * Oid, RegProcedure, TransactionId, SubTransactionId, MultiXactId, * CommandId */ /* typedef Oid is in postgres_ext.h */ /* * regproc is the type name used in the include/catalog headers, but * RegProcedure is the preferred name in C code. */ typedef Oid regproc; typedef regproc RegProcedure; typedef uint32 TransactionId; typedef uint32 LocalTransactionId; typedef uint32 SubTransactionId; #define InvalidSubTransactionId ((SubTransactionId) 0) #define TopSubTransactionId ((SubTransactionId) 1) /* MultiXactId must be equivalent to TransactionId, to fit in t_xmax */ typedef TransactionId MultiXactId; typedef uint32 MultiXactOffset; typedef uint32 CommandId; #define FirstCommandId ((CommandId) 0) #define InvalidCommandId (~(CommandId)0) /* * Array indexing support */ #define MAXDIM 6 typedef struct { int indx[MAXDIM]; } IntArray; /* ---------------- * Variable-length datatypes all share the 'struct varlena' header. * * NOTE: for TOASTable types, this is an oversimplification, since the value * may be compressed or moved out-of-line. However datatype-specific routines * are mostly content to deal with de-TOASTed values only, and of course * client-side routines should never see a TOASTed value. But even in a * de-TOASTed value, beware of touching vl_len_ directly, as its * representation is no longer convenient. It's recommended that code always * use macros VARDATA_ANY, VARSIZE_ANY, VARSIZE_ANY_EXHDR, VARDATA, VARSIZE, * and SET_VARSIZE instead of relying on direct mentions of the struct fields. * See postgres.h for details of the TOASTed form. * ---------------- */ struct varlena { char vl_len_[4]; /* Do not touch this field directly! */ char vl_dat[FLEXIBLE_ARRAY_MEMBER]; /* Data content is here */ }; #define VARHDRSZ ((int32) sizeof(int32)) /* * These widely-used datatypes are just a varlena header and the data bytes. * There is no terminating null or anything like that --- the data length is * always VARSIZE_ANY_EXHDR(ptr). */ typedef struct varlena bytea; typedef struct varlena text; typedef struct varlena BpChar; /* blank-padded char, ie SQL char(n) */ typedef struct varlena VarChar; /* var-length char, ie SQL varchar(n) */ /* * Specialized array types. These are physically laid out just the same * as regular arrays (so that the regular array subscripting code works * with them). They exist as distinct types mostly for historical reasons: * they have nonstandard I/O behavior which we don't want to change for fear * of breaking applications that look at the system catalogs. There is also * an implementation issue for oidvector: it's part of the primary key for * pg_proc, and we can't use the normal btree array support routines for that * without circularity. */ typedef struct { int32 vl_len_; /* these fields must match ArrayType! */ int ndim; /* always 1 for int2vector */ int32 dataoffset; /* always 0 for int2vector */ Oid elemtype; int dim1; int lbound1; int16 values[FLEXIBLE_ARRAY_MEMBER]; } int2vector; typedef struct { int32 vl_len_; /* these fields must match ArrayType! */ int ndim; /* always 1 for oidvector */ int32 dataoffset; /* always 0 for oidvector */ Oid elemtype; int dim1; int lbound1; Oid values[FLEXIBLE_ARRAY_MEMBER]; } oidvector; /* * Representation of a Name: effectively just a C string, but null-padded to * exactly NAMEDATALEN bytes. The use of a struct is historical. */ typedef struct nameData { char data[NAMEDATALEN]; } NameData; typedef NameData *Name; #define NameStr(name) ((name).data) /* ---------------------------------------------------------------- * Section 4: IsValid macros for system types * ---------------------------------------------------------------- */ /* * BoolIsValid * True iff bool is valid. */ #define BoolIsValid(boolean) ((boolean) == false || (boolean) == true) /* * PointerIsValid * True iff pointer is valid. */ #define PointerIsValid(pointer) ((const void*)(pointer) != NULL) /* * PointerIsAligned * True iff pointer is properly aligned to point to the given type. */ #define PointerIsAligned(pointer, type) \ (((uintptr_t)(pointer) % (sizeof (type))) == 0) #define OffsetToPointer(base, offset) \ ((void *)((char *) base + offset)) #define OidIsValid(objectId) ((bool) ((objectId) != InvalidOid)) #define RegProcedureIsValid(p) OidIsValid(p) /* ---------------------------------------------------------------- * Section 5: offsetof, lengthof, alignment * ---------------------------------------------------------------- */ /* * offsetof * Offset of a structure/union field within that structure/union. * * XXX This is supposed to be part of stddef.h, but isn't on * some systems (like SunOS 4). */ #ifndef offsetof #define offsetof(type, field) ((long) &((type *)0)->field) #endif /* offsetof */ /* * lengthof * Number of elements in an array. */ #define lengthof(array) (sizeof (array) / sizeof ((array)[0])) /* ---------------- * Alignment macros: align a length or address appropriately for a given type. * The fooALIGN() macros round up to a multiple of the required alignment, * while the fooALIGN_DOWN() macros round down. The latter are more useful * for problems like "how many X-sized structures will fit in a page?". * * NOTE: TYPEALIGN[_DOWN] will not work if ALIGNVAL is not a power of 2. * That case seems extremely unlikely to be needed in practice, however. * * NOTE: MAXIMUM_ALIGNOF, and hence MAXALIGN(), intentionally exclude any * larger-than-8-byte types the compiler might have. * ---------------- */ #define TYPEALIGN(ALIGNVAL,LEN) \ (((uintptr_t) (LEN) + ((ALIGNVAL) - 1)) & ~((uintptr_t) ((ALIGNVAL) - 1))) #define SHORTALIGN(LEN) TYPEALIGN(ALIGNOF_SHORT, (LEN)) #define INTALIGN(LEN) TYPEALIGN(ALIGNOF_INT, (LEN)) #define LONGALIGN(LEN) TYPEALIGN(ALIGNOF_LONG, (LEN)) #define DOUBLEALIGN(LEN) TYPEALIGN(ALIGNOF_DOUBLE, (LEN)) #define MAXALIGN(LEN) TYPEALIGN(MAXIMUM_ALIGNOF, (LEN)) /* MAXALIGN covers only built-in types, not buffers */ #define BUFFERALIGN(LEN) TYPEALIGN(ALIGNOF_BUFFER, (LEN)) #define CACHELINEALIGN(LEN) TYPEALIGN(PG_CACHE_LINE_SIZE, (LEN)) #define TYPEALIGN_DOWN(ALIGNVAL,LEN) \ (((uintptr_t) (LEN)) & ~((uintptr_t) ((ALIGNVAL) - 1))) #define SHORTALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_SHORT, (LEN)) #define INTALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_INT, (LEN)) #define LONGALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_LONG, (LEN)) #define DOUBLEALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_DOUBLE, (LEN)) #define MAXALIGN_DOWN(LEN) TYPEALIGN_DOWN(MAXIMUM_ALIGNOF, (LEN)) #define BUFFERALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_BUFFER, (LEN)) /* * The above macros will not work with types wider than uintptr_t, like with * uint64 on 32-bit platforms. That's not problem for the usual use where a * pointer or a length is aligned, but for the odd case that you need to * align something (potentially) wider, use TYPEALIGN64. */ #define TYPEALIGN64(ALIGNVAL,LEN) \ (((uint64) (LEN) + ((ALIGNVAL) - 1)) & ~((uint64) ((ALIGNVAL) - 1))) /* we don't currently need wider versions of the other ALIGN macros */ #define MAXALIGN64(LEN) TYPEALIGN64(MAXIMUM_ALIGNOF, (LEN)) /* ---------------------------------------------------------------- * Section 6: assertions * ---------------------------------------------------------------- */ /* * USE_ASSERT_CHECKING, if defined, turns on all the assertions. * - plai 9/5/90 * * It should _NOT_ be defined in releases or in benchmark copies */ /* * Assert() can be used in both frontend and backend code. In frontend code it * just calls the standard assert, if it's available. If use of assertions is * not configured, it does nothing. */ #ifndef USE_ASSERT_CHECKING #define Assert(condition) ((void)true) #define AssertMacro(condition) ((void)true) #define AssertArg(condition) ((void)true) #define AssertState(condition) ((void)true) #define AssertPointerAlignment(ptr, bndr) ((void)true) #define Trap(condition, errorType) ((void)true) #define TrapMacro(condition, errorType) (true) #elif defined(FRONTEND) #include #define Assert(p) assert(p) #define AssertMacro(p) ((void) assert(p)) #define AssertArg(condition) assert(condition) #define AssertState(condition) assert(condition) #define AssertPointerAlignment(ptr, bndr) ((void)true) #else /* USE_ASSERT_CHECKING && !FRONTEND */ /* * Trap * Generates an exception if the given condition is true. */ #define Trap(condition, errorType) \ do { \ if (condition) \ ExceptionalCondition(#condition, (errorType), \ __FILE__, __LINE__); \ } while (0) /* * TrapMacro is the same as Trap but it's intended for use in macros: * * #define foo(x) (AssertMacro(x != 0), bar(x)) * * Isn't CPP fun? */ #define TrapMacro(condition, errorType) \ ((bool) (! (condition) || \ (ExceptionalCondition(#condition, (errorType), \ __FILE__, __LINE__), 0))) #define Assert(condition) \ do { \ if (!(condition)) \ ExceptionalCondition(#condition, "FailedAssertion", \ __FILE__, __LINE__); \ } while (0) #define AssertMacro(condition) \ ((void) ((condition) || \ (ExceptionalCondition(#condition, "FailedAssertion", \ __FILE__, __LINE__), 0))) #define AssertArg(condition) \ do { \ if (!(condition)) \ ExceptionalCondition(#condition, "BadArgument", \ __FILE__, __LINE__); \ } while (0) #define AssertState(condition) \ do { \ if (!(condition)) \ ExceptionalCondition(#condition, "BadState", \ __FILE__, __LINE__); \ } while (0) /* * Check that `ptr' is `bndr' aligned. */ #define AssertPointerAlignment(ptr, bndr) \ Trap(TYPEALIGN(bndr, (uintptr_t)(ptr)) != (uintptr_t)(ptr), \ "UnalignedPointer") #endif /* USE_ASSERT_CHECKING && !FRONTEND */ /* * ExceptionalCondition is compiled into the backend whether or not * USE_ASSERT_CHECKING is defined, so as to support use of extensions * that are built with that #define with a backend that isn't. Hence, * we should declare it as long as !FRONTEND. */ #ifndef FRONTEND extern void ExceptionalCondition(const char *conditionName, const char *errorType, const char *fileName, int lineNumber) pg_attribute_noreturn(); #endif /* * Macros to support compile-time assertion checks. * * If the "condition" (a compile-time-constant expression) evaluates to false, * throw a compile error using the "errmessage" (a string literal). * * gcc 4.6 and up supports _Static_assert(), but there are bizarre syntactic * placement restrictions. Macros StaticAssertStmt() and StaticAssertExpr() * make it safe to use as a statement or in an expression, respectively. * The macro StaticAssertDecl() is suitable for use at file scope (outside of * any function). * * Otherwise we fall back on a kluge that assumes the compiler will complain * about a negative width for a struct bit-field. This will not include a * helpful error message, but it beats not getting an error at all. */ #ifndef __cplusplus #ifdef HAVE__STATIC_ASSERT #define StaticAssertStmt(condition, errmessage) \ do { _Static_assert(condition, errmessage); } while(0) #define StaticAssertExpr(condition, errmessage) \ ((void) ({ StaticAssertStmt(condition, errmessage); true; })) #define StaticAssertDecl(condition, errmessage) \ _Static_assert(condition, errmessage) #else /* !HAVE__STATIC_ASSERT */ #define StaticAssertStmt(condition, errmessage) \ ((void) sizeof(struct { int static_assert_failure : (condition) ? 1 : -1; })) #define StaticAssertExpr(condition, errmessage) \ StaticAssertStmt(condition, errmessage) #define StaticAssertDecl(condition, errmessage) \ extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1]) #endif /* HAVE__STATIC_ASSERT */ #else /* C++ */ #if defined(__cpp_static_assert) && __cpp_static_assert >= 200410 #define StaticAssertStmt(condition, errmessage) \ static_assert(condition, errmessage) #define StaticAssertExpr(condition, errmessage) \ ({ static_assert(condition, errmessage); }) #define StaticAssertDecl(condition, errmessage) \ static_assert(condition, errmessage) #else /* !__cpp_static_assert */ #define StaticAssertStmt(condition, errmessage) \ do { struct static_assert_struct { int static_assert_failure : (condition) ? 1 : -1; }; } while(0) #define StaticAssertExpr(condition, errmessage) \ ((void) ({ StaticAssertStmt(condition, errmessage); })) #define StaticAssertDecl(condition, errmessage) \ extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1]) #endif /* __cpp_static_assert */ #endif /* C++ */ /* * Compile-time checks that a variable (or expression) has the specified type. * * AssertVariableIsOfType() can be used as a statement. * AssertVariableIsOfTypeMacro() is intended for use in macros, eg * #define foo(x) (AssertVariableIsOfTypeMacro(x, int), bar(x)) * * If we don't have __builtin_types_compatible_p, we can still assert that * the types have the same size. This is far from ideal (especially on 32-bit * platforms) but it provides at least some coverage. */ #ifdef HAVE__BUILTIN_TYPES_COMPATIBLE_P #define AssertVariableIsOfType(varname, typename) \ StaticAssertStmt(__builtin_types_compatible_p(__typeof__(varname), typename), \ CppAsString(varname) " does not have type " CppAsString(typename)) #define AssertVariableIsOfTypeMacro(varname, typename) \ (StaticAssertExpr(__builtin_types_compatible_p(__typeof__(varname), typename), \ CppAsString(varname) " does not have type " CppAsString(typename))) #else /* !HAVE__BUILTIN_TYPES_COMPATIBLE_P */ #define AssertVariableIsOfType(varname, typename) \ StaticAssertStmt(sizeof(varname) == sizeof(typename), \ CppAsString(varname) " does not have type " CppAsString(typename)) #define AssertVariableIsOfTypeMacro(varname, typename) \ (StaticAssertExpr(sizeof(varname) == sizeof(typename), \ CppAsString(varname) " does not have type " CppAsString(typename))) #endif /* HAVE__BUILTIN_TYPES_COMPATIBLE_P */ /* ---------------------------------------------------------------- * Section 7: widely useful macros * ---------------------------------------------------------------- */ /* * Max * Return the maximum of two numbers. */ #define Max(x, y) ((x) > (y) ? (x) : (y)) /* * Min * Return the minimum of two numbers. */ #define Min(x, y) ((x) < (y) ? (x) : (y)) /* * Abs * Return the absolute value of the argument. */ #define Abs(x) ((x) >= 0 ? (x) : -(x)) /* * StrNCpy * Like standard library function strncpy(), except that result string * is guaranteed to be null-terminated --- that is, at most N-1 bytes * of the source string will be kept. * Also, the macro returns no result (too hard to do that without * evaluating the arguments multiple times, which seems worse). * * BTW: when you need to copy a non-null-terminated string (like a text * datum) and add a null, do not do it with StrNCpy(..., len+1). That * might seem to work, but it fetches one byte more than there is in the * text object. One fine day you'll have a SIGSEGV because there isn't * another byte before the end of memory. Don't laugh, we've had real * live bug reports from real live users over exactly this mistake. * Do it honestly with "memcpy(dst,src,len); dst[len] = '\0';", instead. */ #define StrNCpy(dst,src,len) \ do \ { \ char * _dst = (dst); \ Size _len = (len); \ \ if (_len > 0) \ { \ strncpy(_dst, (src), _len); \ _dst[_len-1] = '\0'; \ } \ } while (0) /* Get a bit mask of the bits set in non-long aligned addresses */ #define LONG_ALIGN_MASK (sizeof(long) - 1) /* * MemSet * Exactly the same as standard library function memset(), but considerably * faster for zeroing small word-aligned structures (such as parsetree nodes). * This has to be a macro because the main point is to avoid function-call * overhead. However, we have also found that the loop is faster than * native libc memset() on some platforms, even those with assembler * memset() functions. More research needs to be done, perhaps with * MEMSET_LOOP_LIMIT tests in configure. */ #define MemSet(start, val, len) \ do \ { \ /* must be void* because we don't know if it is integer aligned yet */ \ void *_vstart = (void *) (start); \ int _val = (val); \ Size _len = (len); \ \ if ((((uintptr_t) _vstart) & LONG_ALIGN_MASK) == 0 && \ (_len & LONG_ALIGN_MASK) == 0 && \ _val == 0 && \ _len <= MEMSET_LOOP_LIMIT && \ /* \ * If MEMSET_LOOP_LIMIT == 0, optimizer should find \ * the whole "if" false at compile time. \ */ \ MEMSET_LOOP_LIMIT != 0) \ { \ long *_start = (long *) _vstart; \ long *_stop = (long *) ((char *) _start + _len); \ while (_start < _stop) \ *_start++ = 0; \ } \ else \ memset(_vstart, _val, _len); \ } while (0) /* * MemSetAligned is the same as MemSet except it omits the test to see if * "start" is word-aligned. This is okay to use if the caller knows a-priori * that the pointer is suitably aligned (typically, because he just got it * from palloc(), which always delivers a max-aligned pointer). */ #define MemSetAligned(start, val, len) \ do \ { \ long *_start = (long *) (start); \ int _val = (val); \ Size _len = (len); \ \ if ((_len & LONG_ALIGN_MASK) == 0 && \ _val == 0 && \ _len <= MEMSET_LOOP_LIMIT && \ MEMSET_LOOP_LIMIT != 0) \ { \ long *_stop = (long *) ((char *) _start + _len); \ while (_start < _stop) \ *_start++ = 0; \ } \ else \ memset(_start, _val, _len); \ } while (0) /* * MemSetTest/MemSetLoop are a variant version that allow all the tests in * MemSet to be done at compile time in cases where "val" and "len" are * constants *and* we know the "start" pointer must be word-aligned. * If MemSetTest succeeds, then it is okay to use MemSetLoop, otherwise use * MemSetAligned. Beware of multiple evaluations of the arguments when using * this approach. */ #define MemSetTest(val, len) \ ( ((len) & LONG_ALIGN_MASK) == 0 && \ (len) <= MEMSET_LOOP_LIMIT && \ MEMSET_LOOP_LIMIT != 0 && \ (val) == 0 ) #define MemSetLoop(start, val, len) \ do \ { \ long * _start = (long *) (start); \ long * _stop = (long *) ((char *) _start + (Size) (len)); \ \ while (_start < _stop) \ *_start++ = 0; \ } while (0) /* * Macros for range-checking float values before converting to integer. * We must be careful here that the boundary values are expressed exactly * in the float domain. PG_INTnn_MIN is an exact power of 2, so it will * be represented exactly; but PG_INTnn_MAX isn't, and might get rounded * off, so avoid using that. * The input must be rounded to an integer beforehand, typically with rint(), * else we might draw the wrong conclusion about close-to-the-limit values. * These macros will do the right thing for Inf, but not necessarily for NaN, * so check isnan(num) first if that's a possibility. */ #define FLOAT4_FITS_IN_INT16(num) \ ((num) >= (float4) PG_INT16_MIN && (num) < -((float4) PG_INT16_MIN)) #define FLOAT4_FITS_IN_INT32(num) \ ((num) >= (float4) PG_INT32_MIN && (num) < -((float4) PG_INT32_MIN)) #define FLOAT4_FITS_IN_INT64(num) \ ((num) >= (float4) PG_INT64_MIN && (num) < -((float4) PG_INT64_MIN)) #define FLOAT8_FITS_IN_INT16(num) \ ((num) >= (float8) PG_INT16_MIN && (num) < -((float8) PG_INT16_MIN)) #define FLOAT8_FITS_IN_INT32(num) \ ((num) >= (float8) PG_INT32_MIN && (num) < -((float8) PG_INT32_MIN)) #define FLOAT8_FITS_IN_INT64(num) \ ((num) >= (float8) PG_INT64_MIN && (num) < -((float8) PG_INT64_MIN)) /* ---------------------------------------------------------------- * Section 8: random stuff * ---------------------------------------------------------------- */ #ifdef HAVE_STRUCT_SOCKADDR_UN #define HAVE_UNIX_SOCKETS 1 #endif /* * Invert the sign of a qsort-style comparison result, ie, exchange negative * and positive integer values, being careful not to get the wrong answer * for INT_MIN. The argument should be an integral variable. */ #define INVERT_COMPARE_RESULT(var) \ ((var) = ((var) < 0) ? 1 : -(var)) /* * Use this, not "char buf[BLCKSZ]", to declare a field or local variable * holding a page buffer, if that page might be accessed as a page and not * just a string of bytes. Otherwise the variable might be under-aligned, * causing problems on alignment-picky hardware. (In some places, we use * this to declare buffers even though we only pass them to read() and * write(), because copying to/from aligned buffers is usually faster than * using unaligned buffers.) We include both "double" and "int64" in the * union to ensure that the compiler knows the value must be MAXALIGN'ed * (cf. configure's computation of MAXIMUM_ALIGNOF). */ typedef union PGAlignedBlock { char data[BLCKSZ]; double force_align_d; int64 force_align_i64; } PGAlignedBlock; /* Same, but for an XLOG_BLCKSZ-sized buffer */ typedef union PGAlignedXLogBlock { char data[XLOG_BLCKSZ]; double force_align_d; int64 force_align_i64; } PGAlignedXLogBlock; /* msb for char */ #define HIGHBIT (0x80) #define IS_HIGHBIT_SET(ch) ((unsigned char)(ch) & HIGHBIT) /* * Support macros for escaping strings. escape_backslash should be true * if generating a non-standard-conforming string. Prefixing a string * with ESCAPE_STRING_SYNTAX guarantees it is non-standard-conforming. * Beware of multiple evaluation of the "ch" argument! */ #define SQL_STR_DOUBLE(ch, escape_backslash) \ ((ch) == '\'' || ((ch) == '\\' && (escape_backslash))) #define ESCAPE_STRING_SYNTAX 'E' #define STATUS_OK (0) #define STATUS_ERROR (-1) #define STATUS_EOF (-2) #define STATUS_WAITING (2) /* * gettext support */ #ifndef ENABLE_NLS /* stuff we'd otherwise get from */ #define gettext(x) (x) #define dgettext(d,x) (x) #define ngettext(s,p,n) ((n) == 1 ? (s) : (p)) #define dngettext(d,s,p,n) ((n) == 1 ? (s) : (p)) #endif #define _(x) gettext(x) /* * Use this to mark string constants as needing translation at some later * time, rather than immediately. This is useful for cases where you need * access to the original string and translated string, and for cases where * immediate translation is not possible, like when initializing global * variables. * http://www.gnu.org/software/autoconf/manual/gettext/Special-cases.html */ #define gettext_noop(x) (x) /* * To better support parallel installations of major PostgreSQL * versions as well as parallel installations of major library soname * versions, we mangle the gettext domain name by appending those * version numbers. The coding rule ought to be that wherever the * domain name is mentioned as a literal, it must be wrapped into * PG_TEXTDOMAIN(). The macros below do not work on non-literals; but * that is somewhat intentional because it avoids having to worry * about multiple states of premangling and postmangling as the values * are being passed around. * * Make sure this matches the installation rules in nls-global.mk. */ #ifdef SO_MAJOR_VERSION #define PG_TEXTDOMAIN(domain) (domain CppAsString2(SO_MAJOR_VERSION) "-" PG_MAJORVERSION) #else #define PG_TEXTDOMAIN(domain) (domain "-" PG_MAJORVERSION) #endif /* * Macro that allows to cast constness and volatile away from an expression, but doesn't * allow changing the underlying type. Enforcement of the latter * currently only works for gcc like compilers. * * Please note IT IS NOT SAFE to cast constness away if the result will ever * be modified (it would be undefined behaviour). Doing so anyway can cause * compiler misoptimizations or runtime crashes (modifying readonly memory). * It is only safe to use when the result will not be modified, but API * design or language restrictions prevent you from declaring that * (e.g. because a function returns both const and non-const variables). * * Note that this only works in function scope, not for global variables (it'd * be nice, but not trivial, to improve that). */ #if defined(HAVE__BUILTIN_TYPES_COMPATIBLE_P) #define unconstify(underlying_type, expr) \ (StaticAssertExpr(__builtin_types_compatible_p(__typeof(expr), const underlying_type), \ "wrong cast"), \ (underlying_type) (expr)) #define unvolatize(underlying_type, expr) \ (StaticAssertExpr(__builtin_types_compatible_p(__typeof(expr), volatile underlying_type), \ "wrong cast"), \ (underlying_type) (expr)) #else #define unconstify(underlying_type, expr) \ ((underlying_type) (expr)) #define unvolatize(underlying_type, expr) \ ((underlying_type) (expr)) #endif /* ---------------------------------------------------------------- * Section 9: system-specific hacks * * This should be limited to things that absolutely have to be * included in every source file. The port-specific header file * is usually a better place for this sort of thing. * ---------------------------------------------------------------- */ /* * NOTE: this is also used for opening text files. * WIN32 treats Control-Z as EOF in files opened in text mode. * Therefore, we open files in binary mode on Win32 so we can read * literal control-Z. The other affect is that we see CRLF, but * that is OK because we can already handle those cleanly. */ #if defined(WIN32) || defined(__CYGWIN__) #define PG_BINARY O_BINARY #define PG_BINARY_A "ab" #define PG_BINARY_R "rb" #define PG_BINARY_W "wb" #else #define PG_BINARY 0 #define PG_BINARY_A "a" #define PG_BINARY_R "r" #define PG_BINARY_W "w" #endif /* * Provide prototypes for routines not present in a particular machine's * standard C library. */ #if defined(HAVE_FDATASYNC) && !HAVE_DECL_FDATASYNC extern int fdatasync(int fildes); #endif /* Older platforms may provide strto[u]ll functionality under other names */ #if !defined(HAVE_STRTOLL) && defined(HAVE___STRTOLL) #define strtoll __strtoll #define HAVE_STRTOLL 1 #endif #if !defined(HAVE_STRTOLL) && defined(HAVE_STRTOQ) #define strtoll strtoq #define HAVE_STRTOLL 1 #endif #if !defined(HAVE_STRTOULL) && defined(HAVE___STRTOULL) #define strtoull __strtoull #define HAVE_STRTOULL 1 #endif #if !defined(HAVE_STRTOULL) && defined(HAVE_STRTOUQ) #define strtoull strtouq #define HAVE_STRTOULL 1 #endif #if defined(HAVE_STRTOLL) && !HAVE_DECL_STRTOLL extern long long strtoll(const char *str, char **endptr, int base); #endif #if defined(HAVE_STRTOULL) && !HAVE_DECL_STRTOULL extern unsigned long long strtoull(const char *str, char **endptr, int base); #endif /* no special DLL markers on most ports */ #ifndef PGDLLIMPORT #define PGDLLIMPORT #endif #ifndef PGDLLEXPORT #define PGDLLEXPORT #endif /* * The following is used as the arg list for signal handlers. Any ports * that take something other than an int argument should override this in * their pg_config_os.h file. Note that variable names are required * because it is used in both the prototypes as well as the definitions. * Note also the long name. We expect that this won't collide with * other names causing compiler warnings. */ #ifndef SIGNAL_ARGS #define SIGNAL_ARGS int postgres_signal_arg #endif /* * When there is no sigsetjmp, its functionality is provided by plain * setjmp. Incidentally, nothing provides setjmp's functionality in * that case. We now support the case only on Windows. */ #ifdef WIN32 #define sigjmp_buf jmp_buf #define sigsetjmp(x,y) setjmp(x) #define siglongjmp longjmp #endif /* EXEC_BACKEND defines */ #ifdef EXEC_BACKEND #define NON_EXEC_STATIC #else #define NON_EXEC_STATIC static #endif /* /port compatibility functions */ #include "port.h" #endif /* C_H */ #undef StaticAssertDecl #define StaticAssertDecl(condition, errmessage) libpg_query-13-2.1.0/src/postgres/include/catalog/000077500000000000000000000000001413137616400217555ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/catalog/catalog.h000066400000000000000000000023271413137616400235440ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * catalog.h * prototypes for functions in backend/catalog/catalog.c * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/catalog.h * *------------------------------------------------------------------------- */ #ifndef CATALOG_H #define CATALOG_H #include "catalog/pg_class.h" #include "utils/relcache.h" extern bool IsSystemRelation(Relation relation); extern bool IsToastRelation(Relation relation); extern bool IsCatalogRelation(Relation relation); extern bool IsSystemClass(Oid relid, Form_pg_class reltuple); extern bool IsToastClass(Form_pg_class reltuple); extern bool IsCatalogRelationOid(Oid relid); extern bool IsCatalogNamespace(Oid namespaceId); extern bool IsToastNamespace(Oid namespaceId); extern bool IsReservedName(const char *name); extern bool IsSharedRelation(Oid relationId); extern Oid GetNewOidWithIndex(Relation relation, Oid indexId, AttrNumber oidcolumn); extern Oid GetNewRelFileNode(Oid reltablespace, Relation pg_class, char relpersistence); #endif /* CATALOG_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/catversion.h000066400000000000000000000050371413137616400243100ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * catversion.h * "Catalog version number" for PostgreSQL. * * The catalog version number is used to flag incompatible changes in * the PostgreSQL system catalogs. Whenever anyone changes the format of * a system catalog relation, or adds, deletes, or modifies standard * catalog entries in such a way that an updated backend wouldn't work * with an old database (or vice versa), the catalog version number * should be changed. The version number stored in pg_control by initdb * is checked against the version number compiled into the backend at * startup time, so that a backend can refuse to run in an incompatible * database. * * The point of this feature is to provide a finer grain of compatibility * checking than is possible from looking at the major version number * stored in PG_VERSION. It shouldn't matter to end users, but during * development cycles we usually make quite a few incompatible changes * to the contents of the system catalogs, and we don't want to bump the * major version number for each one. What we can do instead is bump * this internal version number. This should save some grief for * developers who might otherwise waste time tracking down "bugs" that * are really just code-vs-database incompatibilities. * * The rule for developers is: if you commit a change that requires * an initdb, you should update the catalog version number (as well as * notifying the pgsql-hackers mailing list, which has been the * informal practice for a long time). * * The catalog version number is placed here since modifying files in * include/catalog is the most common kind of initdb-forcing change. * But it could be used to protect any kind of incompatible change in * database contents or layout, such as altering tuple headers. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/catversion.h * *------------------------------------------------------------------------- */ #ifndef CATVERSION_H #define CATVERSION_H /* * We could use anything we wanted for version numbers, but I recommend * following the "YYYYMMDDN" style often used for DNS zone serial numbers. * YYYYMMDD are the date of the change, and N is the number of the change * on that day. (Hopefully we'll never commit ten independent sets of * catalog changes on the same day...) */ /* yyyymmddN */ #define CATALOG_VERSION_NO 202007201 #endif libpg_query-13-2.1.0/src/postgres/include/catalog/dependency.h000066400000000000000000000233741413137616400242550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dependency.h * Routines to support inter-object dependencies. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/dependency.h * *------------------------------------------------------------------------- */ #ifndef DEPENDENCY_H #define DEPENDENCY_H #include "catalog/objectaddress.h" /* * Precise semantics of a dependency relationship are specified by the * DependencyType code (which is stored in a "char" field in pg_depend, * so we assign ASCII-code values to the enumeration members). * * In all cases, a dependency relationship indicates that the referenced * object may not be dropped without also dropping the dependent object. * However, there are several subflavors; see the description of pg_depend * in catalogs.sgml for details. */ typedef enum DependencyType { DEPENDENCY_NORMAL = 'n', DEPENDENCY_AUTO = 'a', DEPENDENCY_INTERNAL = 'i', DEPENDENCY_PARTITION_PRI = 'P', DEPENDENCY_PARTITION_SEC = 'S', DEPENDENCY_EXTENSION = 'e', DEPENDENCY_AUTO_EXTENSION = 'x', DEPENDENCY_PIN = 'p' } DependencyType; /* * There is also a SharedDependencyType enum type that determines the exact * semantics of an entry in pg_shdepend. Just like regular dependency entries, * any pg_shdepend entry means that the referenced object cannot be dropped * unless the dependent object is dropped at the same time. There are some * additional rules however: * * (a) For a SHARED_DEPENDENCY_PIN entry, there is no dependent object -- * rather, the referenced object is an essential part of the system. This * applies to the initdb-created superuser. Entries of this type are only * created by initdb; objects in this category don't need further pg_shdepend * entries if more objects come to depend on them. * * (b) a SHARED_DEPENDENCY_OWNER entry means that the referenced object is * the role owning the dependent object. The referenced object must be * a pg_authid entry. * * (c) a SHARED_DEPENDENCY_ACL entry means that the referenced object is * a role mentioned in the ACL field of the dependent object. The referenced * object must be a pg_authid entry. (SHARED_DEPENDENCY_ACL entries are not * created for the owner of an object; hence two objects may be linked by * one or the other, but not both, of these dependency types.) * * (d) a SHARED_DEPENDENCY_POLICY entry means that the referenced object is * a role mentioned in a policy object. The referenced object must be a * pg_authid entry. * * (e) a SHARED_DEPENDENCY_TABLESPACE entry means that the referenced * object is a tablespace mentioned in a relation without storage. The * referenced object must be a pg_tablespace entry. (Relations that have * storage don't need this: they are protected by the existence of a physical * file in the tablespace.) * * SHARED_DEPENDENCY_INVALID is a value used as a parameter in internal * routines, and is not valid in the catalog itself. */ typedef enum SharedDependencyType { SHARED_DEPENDENCY_PIN = 'p', SHARED_DEPENDENCY_OWNER = 'o', SHARED_DEPENDENCY_ACL = 'a', SHARED_DEPENDENCY_POLICY = 'r', SHARED_DEPENDENCY_TABLESPACE = 't', SHARED_DEPENDENCY_INVALID = 0 } SharedDependencyType; /* expansible list of ObjectAddresses (private in dependency.c) */ typedef struct ObjectAddresses ObjectAddresses; /* * This enum covers all system catalogs whose OIDs can appear in * pg_depend.classId or pg_shdepend.classId. Keep object_classes[] in sync. */ typedef enum ObjectClass { OCLASS_CLASS, /* pg_class */ OCLASS_PROC, /* pg_proc */ OCLASS_TYPE, /* pg_type */ OCLASS_CAST, /* pg_cast */ OCLASS_COLLATION, /* pg_collation */ OCLASS_CONSTRAINT, /* pg_constraint */ OCLASS_CONVERSION, /* pg_conversion */ OCLASS_DEFAULT, /* pg_attrdef */ OCLASS_LANGUAGE, /* pg_language */ OCLASS_LARGEOBJECT, /* pg_largeobject */ OCLASS_OPERATOR, /* pg_operator */ OCLASS_OPCLASS, /* pg_opclass */ OCLASS_OPFAMILY, /* pg_opfamily */ OCLASS_AM, /* pg_am */ OCLASS_AMOP, /* pg_amop */ OCLASS_AMPROC, /* pg_amproc */ OCLASS_REWRITE, /* pg_rewrite */ OCLASS_TRIGGER, /* pg_trigger */ OCLASS_SCHEMA, /* pg_namespace */ OCLASS_STATISTIC_EXT, /* pg_statistic_ext */ OCLASS_TSPARSER, /* pg_ts_parser */ OCLASS_TSDICT, /* pg_ts_dict */ OCLASS_TSTEMPLATE, /* pg_ts_template */ OCLASS_TSCONFIG, /* pg_ts_config */ OCLASS_ROLE, /* pg_authid */ OCLASS_DATABASE, /* pg_database */ OCLASS_TBLSPACE, /* pg_tablespace */ OCLASS_FDW, /* pg_foreign_data_wrapper */ OCLASS_FOREIGN_SERVER, /* pg_foreign_server */ OCLASS_USER_MAPPING, /* pg_user_mapping */ OCLASS_DEFACL, /* pg_default_acl */ OCLASS_EXTENSION, /* pg_extension */ OCLASS_EVENT_TRIGGER, /* pg_event_trigger */ OCLASS_POLICY, /* pg_policy */ OCLASS_PUBLICATION, /* pg_publication */ OCLASS_PUBLICATION_REL, /* pg_publication_rel */ OCLASS_SUBSCRIPTION, /* pg_subscription */ OCLASS_TRANSFORM /* pg_transform */ } ObjectClass; #define LAST_OCLASS OCLASS_TRANSFORM /* flag bits for performDeletion/performMultipleDeletions: */ #define PERFORM_DELETION_INTERNAL 0x0001 /* internal action */ #define PERFORM_DELETION_CONCURRENTLY 0x0002 /* concurrent drop */ #define PERFORM_DELETION_QUIETLY 0x0004 /* suppress notices */ #define PERFORM_DELETION_SKIP_ORIGINAL 0x0008 /* keep original obj */ #define PERFORM_DELETION_SKIP_EXTENSIONS 0x0010 /* keep extensions */ #define PERFORM_DELETION_CONCURRENT_LOCK 0x0020 /* normal drop with * concurrent lock mode */ /* in dependency.c */ extern void AcquireDeletionLock(const ObjectAddress *object, int flags); extern void ReleaseDeletionLock(const ObjectAddress *object); extern void performDeletion(const ObjectAddress *object, DropBehavior behavior, int flags); extern void performMultipleDeletions(const ObjectAddresses *objects, DropBehavior behavior, int flags); extern void recordDependencyOnExpr(const ObjectAddress *depender, Node *expr, List *rtable, DependencyType behavior); extern void recordDependencyOnSingleRelExpr(const ObjectAddress *depender, Node *expr, Oid relId, DependencyType behavior, DependencyType self_behavior, bool reverse_self); extern ObjectClass getObjectClass(const ObjectAddress *object); extern ObjectAddresses *new_object_addresses(void); extern void add_exact_object_address(const ObjectAddress *object, ObjectAddresses *addrs); extern bool object_address_present(const ObjectAddress *object, const ObjectAddresses *addrs); extern void record_object_address_dependencies(const ObjectAddress *depender, ObjectAddresses *referenced, DependencyType behavior); extern void sort_object_addresses(ObjectAddresses *addrs); extern void free_object_addresses(ObjectAddresses *addrs); /* in pg_depend.c */ extern void recordDependencyOn(const ObjectAddress *depender, const ObjectAddress *referenced, DependencyType behavior); extern void recordMultipleDependencies(const ObjectAddress *depender, const ObjectAddress *referenced, int nreferenced, DependencyType behavior); extern void recordDependencyOnCurrentExtension(const ObjectAddress *object, bool isReplace); extern long deleteDependencyRecordsFor(Oid classId, Oid objectId, bool skipExtensionDeps); extern long deleteDependencyRecordsForClass(Oid classId, Oid objectId, Oid refclassId, char deptype); extern long deleteDependencyRecordsForSpecific(Oid classId, Oid objectId, char deptype, Oid refclassId, Oid refobjectId); extern long changeDependencyFor(Oid classId, Oid objectId, Oid refClassId, Oid oldRefObjectId, Oid newRefObjectId); extern long changeDependenciesOf(Oid classId, Oid oldObjectId, Oid newObjectId); extern long changeDependenciesOn(Oid refClassId, Oid oldRefObjectId, Oid newRefObjectId); extern Oid getExtensionOfObject(Oid classId, Oid objectId); extern List *getAutoExtensionsOfObject(Oid classId, Oid objectId); extern bool sequenceIsOwned(Oid seqId, char deptype, Oid *tableId, int32 *colId); extern List *getOwnedSequences(Oid relid); extern Oid getIdentitySequence(Oid relid, AttrNumber attnum, bool missing_ok); extern Oid get_constraint_index(Oid constraintId); extern Oid get_index_constraint(Oid indexId); extern List *get_index_ref_constraints(Oid indexId); /* in pg_shdepend.c */ extern void recordSharedDependencyOn(ObjectAddress *depender, ObjectAddress *referenced, SharedDependencyType deptype); extern void deleteSharedDependencyRecordsFor(Oid classId, Oid objectId, int32 objectSubId); extern void recordDependencyOnOwner(Oid classId, Oid objectId, Oid owner); extern void changeDependencyOnOwner(Oid classId, Oid objectId, Oid newOwnerId); extern void recordDependencyOnTablespace(Oid classId, Oid objectId, Oid tablespace); extern void changeDependencyOnTablespace(Oid classId, Oid objectId, Oid newTablespaceId); extern void updateAclDependencies(Oid classId, Oid objectId, int32 objectSubId, Oid ownerId, int noldmembers, Oid *oldmembers, int nnewmembers, Oid *newmembers); extern bool checkSharedDependencies(Oid classId, Oid objectId, char **detail_msg, char **detail_log_msg); extern void shdepLockAndCheckObject(Oid classId, Oid objectId); extern void copyTemplateDependencies(Oid templateDbId, Oid newDbId); extern void dropDatabaseDependencies(Oid databaseId); extern void shdepDropOwned(List *relids, DropBehavior behavior); extern void shdepReassignOwned(List *relids, Oid newrole); #endif /* DEPENDENCY_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/genbki.h000066400000000000000000000043721413137616400233730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * genbki.h * Required include file for all POSTGRES catalog header files * * genbki.h defines CATALOG(), BKI_BOOTSTRAP and related macros * so that the catalog header files can be read by the C compiler. * (These same words are recognized by genbki.pl to build the BKI * bootstrap file from these header files.) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/genbki.h * *------------------------------------------------------------------------- */ #ifndef GENBKI_H #define GENBKI_H /* Introduces a catalog's structure definition */ #define CATALOG(name,oid,oidmacro) typedef struct CppConcat(FormData_,name) /* Options that may appear after CATALOG (on the same line) */ #define BKI_BOOTSTRAP #define BKI_SHARED_RELATION #define BKI_ROWTYPE_OID(oid,oidmacro) #define BKI_SCHEMA_MACRO /* Options that may appear after an attribute (on the same line) */ #define BKI_FORCE_NULL #define BKI_FORCE_NOT_NULL /* Specifies a default value for a catalog field */ #define BKI_DEFAULT(value) /* Specifies a default value for auto-generated array types */ #define BKI_ARRAY_DEFAULT(value) /* * Indicates how to perform name lookups, typically for an OID or * OID-array field */ #define BKI_LOOKUP(catalog) /* The following are never defined; they are here only for documentation. */ /* * Variable-length catalog fields (except possibly the first not nullable one) * should not be visible in C structures, so they are made invisible by #ifdefs * of an undefined symbol. See also MARKNOTNULL in bootstrap.c for how this is * handled. */ #undef CATALOG_VARLEN /* * There is code in some catalog headers that needs to be visible to clients, * but we don't want clients to include the full header because of safety * issues with other code in the header. To handle that, surround code that * should be visible to clients with "#ifdef EXPOSE_TO_CLIENT_CODE". That * instructs genbki.pl to copy the section when generating the corresponding * "_d" header, which can be included by both client and backend code. */ #undef EXPOSE_TO_CLIENT_CODE #endif /* GENBKI_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/index.h000066400000000000000000000135671413137616400232510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * index.h * prototypes for catalog/index.c. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/index.h * *------------------------------------------------------------------------- */ #ifndef INDEX_H #define INDEX_H #include "catalog/objectaddress.h" #include "nodes/execnodes.h" #define DEFAULT_INDEX_TYPE "btree" /* Action code for index_set_state_flags */ typedef enum { INDEX_CREATE_SET_READY, INDEX_CREATE_SET_VALID, INDEX_DROP_CLEAR_VALID, INDEX_DROP_SET_DEAD } IndexStateFlagsAction; /* state info for validate_index bulkdelete callback */ typedef struct ValidateIndexState { Tuplesortstate *tuplesort; /* for sorting the index TIDs */ /* statistics (for debug purposes only): */ double htups, itups, tups_inserted; } ValidateIndexState; extern void index_check_primary_key(Relation heapRel, IndexInfo *indexInfo, bool is_alter_table, IndexStmt *stmt); #define INDEX_CREATE_IS_PRIMARY (1 << 0) #define INDEX_CREATE_ADD_CONSTRAINT (1 << 1) #define INDEX_CREATE_SKIP_BUILD (1 << 2) #define INDEX_CREATE_CONCURRENT (1 << 3) #define INDEX_CREATE_IF_NOT_EXISTS (1 << 4) #define INDEX_CREATE_PARTITIONED (1 << 5) #define INDEX_CREATE_INVALID (1 << 6) extern Oid index_create(Relation heapRelation, const char *indexRelationName, Oid indexRelationId, Oid parentIndexRelid, Oid parentConstraintId, Oid relFileNode, IndexInfo *indexInfo, List *indexColNames, Oid accessMethodObjectId, Oid tableSpaceId, Oid *collationObjectId, Oid *classObjectId, int16 *coloptions, Datum reloptions, bits16 flags, bits16 constr_flags, bool allow_system_table_mods, bool is_internal, Oid *constraintId); #define INDEX_CONSTR_CREATE_MARK_AS_PRIMARY (1 << 0) #define INDEX_CONSTR_CREATE_DEFERRABLE (1 << 1) #define INDEX_CONSTR_CREATE_INIT_DEFERRED (1 << 2) #define INDEX_CONSTR_CREATE_UPDATE_INDEX (1 << 3) #define INDEX_CONSTR_CREATE_REMOVE_OLD_DEPS (1 << 4) extern Oid index_concurrently_create_copy(Relation heapRelation, Oid oldIndexId, const char *newName); extern void index_concurrently_build(Oid heapRelationId, Oid indexRelationId); extern void index_concurrently_swap(Oid newIndexId, Oid oldIndexId, const char *oldName); extern void index_concurrently_set_dead(Oid heapId, Oid indexId); extern ObjectAddress index_constraint_create(Relation heapRelation, Oid indexRelationId, Oid parentConstraintId, IndexInfo *indexInfo, const char *constraintName, char constraintType, bits16 constr_flags, bool allow_system_table_mods, bool is_internal); extern void index_drop(Oid indexId, bool concurrent, bool concurrent_lock_mode); extern IndexInfo *BuildIndexInfo(Relation index); extern IndexInfo *BuildDummyIndexInfo(Relation index); extern bool CompareIndexInfo(IndexInfo *info1, IndexInfo *info2, Oid *collations1, Oid *collations2, Oid *opfamilies1, Oid *opfamilies2, AttrMap *attmap); extern void BuildSpeculativeIndexInfo(Relation index, IndexInfo *ii); extern void FormIndexDatum(IndexInfo *indexInfo, TupleTableSlot *slot, EState *estate, Datum *values, bool *isnull); extern void index_build(Relation heapRelation, Relation indexRelation, IndexInfo *indexInfo, bool isreindex, bool parallel); extern void validate_index(Oid heapId, Oid indexId, Snapshot snapshot); extern void index_set_state_flags(Oid indexId, IndexStateFlagsAction action); extern Oid IndexGetRelation(Oid indexId, bool missing_ok); extern void reindex_index(Oid indexId, bool skip_constraint_checks, char relpersistence, int options); /* Flag bits for reindex_relation(): */ #define REINDEX_REL_PROCESS_TOAST 0x01 #define REINDEX_REL_SUPPRESS_INDEX_USE 0x02 #define REINDEX_REL_CHECK_CONSTRAINTS 0x04 #define REINDEX_REL_FORCE_INDEXES_UNLOGGED 0x08 #define REINDEX_REL_FORCE_INDEXES_PERMANENT 0x10 extern bool reindex_relation(Oid relid, int flags, int options); extern bool ReindexIsProcessingHeap(Oid heapOid); extern bool ReindexIsProcessingIndex(Oid indexOid); extern void ResetReindexState(int nestLevel); extern Size EstimateReindexStateSpace(void); extern void SerializeReindexState(Size maxsize, char *start_address); extern void RestoreReindexState(void *reindexstate); extern void IndexSetParentIndex(Relation idx, Oid parentOid); /* * itemptr_encode - Encode ItemPointer as int64/int8 * * This representation must produce values encoded as int64 that sort in the * same order as their corresponding original TID values would (using the * default int8 opclass to produce a result equivalent to the default TID * opclass). * * As noted in validate_index(), this can be significantly faster. */ static inline int64 itemptr_encode(ItemPointer itemptr) { BlockNumber block = ItemPointerGetBlockNumber(itemptr); OffsetNumber offset = ItemPointerGetOffsetNumber(itemptr); int64 encoded; /* * Use the 16 least significant bits for the offset. 32 adjacent bits are * used for the block number. Since remaining bits are unused, there * cannot be negative encoded values (We assume a two's complement * representation). */ encoded = ((uint64) block << 16) | (uint16) offset; return encoded; } /* * itemptr_decode - Decode int64/int8 representation back to ItemPointer */ static inline void itemptr_decode(ItemPointer itemptr, int64 encoded) { BlockNumber block = (BlockNumber) (encoded >> 16); OffsetNumber offset = (OffsetNumber) (encoded & 0xFFFF); ItemPointerSet(itemptr, block, offset); } #endif /* INDEX_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/indexing.h000066400000000000000000000470111413137616400237360ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * indexing.h * This file provides some definitions to support indexing * on system catalogs * * Caution: all #define's with numeric values in this file had better be * object OIDs, else renumber_oids.pl might change them inappropriately. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/indexing.h * *------------------------------------------------------------------------- */ #ifndef INDEXING_H #define INDEXING_H #include "access/htup.h" #include "utils/relcache.h" /* * The state object used by CatalogOpenIndexes and friends is actually the * same as the executor's ResultRelInfo, but we give it another type name * to decouple callers from that fact. */ typedef struct ResultRelInfo *CatalogIndexState; /* * indexing.c prototypes */ extern CatalogIndexState CatalogOpenIndexes(Relation heapRel); extern void CatalogCloseIndexes(CatalogIndexState indstate); extern void CatalogTupleInsert(Relation heapRel, HeapTuple tup); extern void CatalogTupleInsertWithInfo(Relation heapRel, HeapTuple tup, CatalogIndexState indstate); extern void CatalogTupleUpdate(Relation heapRel, ItemPointer otid, HeapTuple tup); extern void CatalogTupleUpdateWithInfo(Relation heapRel, ItemPointer otid, HeapTuple tup, CatalogIndexState indstate); extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid); /* * These macros are just to keep the C compiler from spitting up on the * upcoming commands for Catalog.pm. */ #define DECLARE_INDEX(name,oid,decl) extern int no_such_variable #define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable /* * What follows are lines processed by genbki.pl to create the statements * the bootstrap parser will turn into DefineIndex calls. * * The keyword is DECLARE_INDEX or DECLARE_UNIQUE_INDEX. The first two * arguments are the index name and OID, the rest is much like a standard * 'create index' SQL command. * * For each index, we also provide a #define for its OID. References to * the index in the C code should always use these #defines, not the actual * index name (much less the numeric OID). */ DECLARE_UNIQUE_INDEX(pg_aggregate_fnoid_index, 2650, on pg_aggregate using btree(aggfnoid oid_ops)); #define AggregateFnoidIndexId 2650 DECLARE_UNIQUE_INDEX(pg_am_name_index, 2651, on pg_am using btree(amname name_ops)); #define AmNameIndexId 2651 DECLARE_UNIQUE_INDEX(pg_am_oid_index, 2652, on pg_am using btree(oid oid_ops)); #define AmOidIndexId 2652 DECLARE_UNIQUE_INDEX(pg_amop_fam_strat_index, 2653, on pg_amop using btree(amopfamily oid_ops, amoplefttype oid_ops, amoprighttype oid_ops, amopstrategy int2_ops)); #define AccessMethodStrategyIndexId 2653 DECLARE_UNIQUE_INDEX(pg_amop_opr_fam_index, 2654, on pg_amop using btree(amopopr oid_ops, amoppurpose char_ops, amopfamily oid_ops)); #define AccessMethodOperatorIndexId 2654 DECLARE_UNIQUE_INDEX(pg_amop_oid_index, 2756, on pg_amop using btree(oid oid_ops)); #define AccessMethodOperatorOidIndexId 2756 DECLARE_UNIQUE_INDEX(pg_amproc_fam_proc_index, 2655, on pg_amproc using btree(amprocfamily oid_ops, amproclefttype oid_ops, amprocrighttype oid_ops, amprocnum int2_ops)); #define AccessMethodProcedureIndexId 2655 DECLARE_UNIQUE_INDEX(pg_amproc_oid_index, 2757, on pg_amproc using btree(oid oid_ops)); #define AccessMethodProcedureOidIndexId 2757 DECLARE_UNIQUE_INDEX(pg_attrdef_adrelid_adnum_index, 2656, on pg_attrdef using btree(adrelid oid_ops, adnum int2_ops)); #define AttrDefaultIndexId 2656 DECLARE_UNIQUE_INDEX(pg_attrdef_oid_index, 2657, on pg_attrdef using btree(oid oid_ops)); #define AttrDefaultOidIndexId 2657 DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, on pg_attribute using btree(attrelid oid_ops, attname name_ops)); #define AttributeRelidNameIndexId 2658 DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnum_index, 2659, on pg_attribute using btree(attrelid oid_ops, attnum int2_ops)); #define AttributeRelidNumIndexId 2659 DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, on pg_authid using btree(rolname name_ops)); #define AuthIdRolnameIndexId 2676 DECLARE_UNIQUE_INDEX(pg_authid_oid_index, 2677, on pg_authid using btree(oid oid_ops)); #define AuthIdOidIndexId 2677 DECLARE_UNIQUE_INDEX(pg_auth_members_role_member_index, 2694, on pg_auth_members using btree(roleid oid_ops, member oid_ops)); #define AuthMemRoleMemIndexId 2694 DECLARE_UNIQUE_INDEX(pg_auth_members_member_role_index, 2695, on pg_auth_members using btree(member oid_ops, roleid oid_ops)); #define AuthMemMemRoleIndexId 2695 DECLARE_UNIQUE_INDEX(pg_cast_oid_index, 2660, on pg_cast using btree(oid oid_ops)); #define CastOidIndexId 2660 DECLARE_UNIQUE_INDEX(pg_cast_source_target_index, 2661, on pg_cast using btree(castsource oid_ops, casttarget oid_ops)); #define CastSourceTargetIndexId 2661 DECLARE_UNIQUE_INDEX(pg_class_oid_index, 2662, on pg_class using btree(oid oid_ops)); #define ClassOidIndexId 2662 DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, on pg_class using btree(relname name_ops, relnamespace oid_ops)); #define ClassNameNspIndexId 2663 DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, on pg_class using btree(reltablespace oid_ops, relfilenode oid_ops)); #define ClassTblspcRelfilenodeIndexId 3455 DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, on pg_collation using btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops)); #define CollationNameEncNspIndexId 3164 DECLARE_UNIQUE_INDEX(pg_collation_oid_index, 3085, on pg_collation using btree(oid oid_ops)); #define CollationOidIndexId 3085 DECLARE_INDEX(pg_constraint_conname_nsp_index, 2664, on pg_constraint using btree(conname name_ops, connamespace oid_ops)); #define ConstraintNameNspIndexId 2664 DECLARE_UNIQUE_INDEX(pg_constraint_conrelid_contypid_conname_index, 2665, on pg_constraint using btree(conrelid oid_ops, contypid oid_ops, conname name_ops)); #define ConstraintRelidTypidNameIndexId 2665 DECLARE_INDEX(pg_constraint_contypid_index, 2666, on pg_constraint using btree(contypid oid_ops)); #define ConstraintTypidIndexId 2666 DECLARE_UNIQUE_INDEX(pg_constraint_oid_index, 2667, on pg_constraint using btree(oid oid_ops)); #define ConstraintOidIndexId 2667 DECLARE_INDEX(pg_constraint_conparentid_index, 2579, on pg_constraint using btree(conparentid oid_ops)); #define ConstraintParentIndexId 2579 DECLARE_UNIQUE_INDEX(pg_conversion_default_index, 2668, on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops)); #define ConversionDefaultIndexId 2668 DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index, 2669, on pg_conversion using btree(conname name_ops, connamespace oid_ops)); #define ConversionNameNspIndexId 2669 DECLARE_UNIQUE_INDEX(pg_conversion_oid_index, 2670, on pg_conversion using btree(oid oid_ops)); #define ConversionOidIndexId 2670 DECLARE_UNIQUE_INDEX(pg_database_datname_index, 2671, on pg_database using btree(datname name_ops)); #define DatabaseNameIndexId 2671 DECLARE_UNIQUE_INDEX(pg_database_oid_index, 2672, on pg_database using btree(oid oid_ops)); #define DatabaseOidIndexId 2672 DECLARE_INDEX(pg_depend_depender_index, 2673, on pg_depend using btree(classid oid_ops, objid oid_ops, objsubid int4_ops)); #define DependDependerIndexId 2673 DECLARE_INDEX(pg_depend_reference_index, 2674, on pg_depend using btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops)); #define DependReferenceIndexId 2674 DECLARE_UNIQUE_INDEX(pg_description_o_c_o_index, 2675, on pg_description using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops)); #define DescriptionObjIndexId 2675 DECLARE_UNIQUE_INDEX(pg_shdescription_o_c_index, 2397, on pg_shdescription using btree(objoid oid_ops, classoid oid_ops)); #define SharedDescriptionObjIndexId 2397 DECLARE_UNIQUE_INDEX(pg_enum_oid_index, 3502, on pg_enum using btree(oid oid_ops)); #define EnumOidIndexId 3502 DECLARE_UNIQUE_INDEX(pg_enum_typid_label_index, 3503, on pg_enum using btree(enumtypid oid_ops, enumlabel name_ops)); #define EnumTypIdLabelIndexId 3503 DECLARE_UNIQUE_INDEX(pg_enum_typid_sortorder_index, 3534, on pg_enum using btree(enumtypid oid_ops, enumsortorder float4_ops)); #define EnumTypIdSortOrderIndexId 3534 DECLARE_INDEX(pg_index_indrelid_index, 2678, on pg_index using btree(indrelid oid_ops)); #define IndexIndrelidIndexId 2678 DECLARE_UNIQUE_INDEX(pg_index_indexrelid_index, 2679, on pg_index using btree(indexrelid oid_ops)); #define IndexRelidIndexId 2679 DECLARE_UNIQUE_INDEX(pg_inherits_relid_seqno_index, 2680, on pg_inherits using btree(inhrelid oid_ops, inhseqno int4_ops)); #define InheritsRelidSeqnoIndexId 2680 DECLARE_INDEX(pg_inherits_parent_index, 2187, on pg_inherits using btree(inhparent oid_ops)); #define InheritsParentIndexId 2187 DECLARE_UNIQUE_INDEX(pg_init_privs_o_c_o_index, 3395, on pg_init_privs using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops)); #define InitPrivsObjIndexId 3395 DECLARE_UNIQUE_INDEX(pg_language_name_index, 2681, on pg_language using btree(lanname name_ops)); #define LanguageNameIndexId 2681 DECLARE_UNIQUE_INDEX(pg_language_oid_index, 2682, on pg_language using btree(oid oid_ops)); #define LanguageOidIndexId 2682 DECLARE_UNIQUE_INDEX(pg_largeobject_loid_pn_index, 2683, on pg_largeobject using btree(loid oid_ops, pageno int4_ops)); #define LargeObjectLOidPNIndexId 2683 DECLARE_UNIQUE_INDEX(pg_largeobject_metadata_oid_index, 2996, on pg_largeobject_metadata using btree(oid oid_ops)); #define LargeObjectMetadataOidIndexId 2996 DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, on pg_namespace using btree(nspname name_ops)); #define NamespaceNameIndexId 2684 DECLARE_UNIQUE_INDEX(pg_namespace_oid_index, 2685, on pg_namespace using btree(oid oid_ops)); #define NamespaceOidIndexId 2685 DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index, 2686, on pg_opclass using btree(opcmethod oid_ops, opcname name_ops, opcnamespace oid_ops)); #define OpclassAmNameNspIndexId 2686 DECLARE_UNIQUE_INDEX(pg_opclass_oid_index, 2687, on pg_opclass using btree(oid oid_ops)); #define OpclassOidIndexId 2687 DECLARE_UNIQUE_INDEX(pg_operator_oid_index, 2688, on pg_operator using btree(oid oid_ops)); #define OperatorOidIndexId 2688 DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index, 2689, on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops)); #define OperatorNameNspIndexId 2689 DECLARE_UNIQUE_INDEX(pg_opfamily_am_name_nsp_index, 2754, on pg_opfamily using btree(opfmethod oid_ops, opfname name_ops, opfnamespace oid_ops)); #define OpfamilyAmNameNspIndexId 2754 DECLARE_UNIQUE_INDEX(pg_opfamily_oid_index, 2755, on pg_opfamily using btree(oid oid_ops)); #define OpfamilyOidIndexId 2755 DECLARE_UNIQUE_INDEX(pg_proc_oid_index, 2690, on pg_proc using btree(oid oid_ops)); #define ProcedureOidIndexId 2690 DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops)); #define ProcedureNameArgsNspIndexId 2691 DECLARE_UNIQUE_INDEX(pg_rewrite_oid_index, 2692, on pg_rewrite using btree(oid oid_ops)); #define RewriteOidIndexId 2692 DECLARE_UNIQUE_INDEX(pg_rewrite_rel_rulename_index, 2693, on pg_rewrite using btree(ev_class oid_ops, rulename name_ops)); #define RewriteRelRulenameIndexId 2693 DECLARE_UNIQUE_INDEX(pg_sequence_seqrelid_index, 5002, on pg_sequence using btree(seqrelid oid_ops)); #define SequenceRelidIndexId 5002 DECLARE_INDEX(pg_shdepend_depender_index, 1232, on pg_shdepend using btree(dbid oid_ops, classid oid_ops, objid oid_ops, objsubid int4_ops)); #define SharedDependDependerIndexId 1232 DECLARE_INDEX(pg_shdepend_reference_index, 1233, on pg_shdepend using btree(refclassid oid_ops, refobjid oid_ops)); #define SharedDependReferenceIndexId 1233 DECLARE_UNIQUE_INDEX(pg_statistic_relid_att_inh_index, 2696, on pg_statistic using btree(starelid oid_ops, staattnum int2_ops, stainherit bool_ops)); #define StatisticRelidAttnumInhIndexId 2696 DECLARE_UNIQUE_INDEX(pg_statistic_ext_oid_index, 3380, on pg_statistic_ext using btree(oid oid_ops)); #define StatisticExtOidIndexId 3380 DECLARE_UNIQUE_INDEX(pg_statistic_ext_name_index, 3997, on pg_statistic_ext using btree(stxname name_ops, stxnamespace oid_ops)); #define StatisticExtNameIndexId 3997 DECLARE_INDEX(pg_statistic_ext_relid_index, 3379, on pg_statistic_ext using btree(stxrelid oid_ops)); #define StatisticExtRelidIndexId 3379 DECLARE_UNIQUE_INDEX(pg_statistic_ext_data_stxoid_index, 3433, on pg_statistic_ext_data using btree(stxoid oid_ops)); #define StatisticExtDataStxoidIndexId 3433 DECLARE_UNIQUE_INDEX(pg_tablespace_oid_index, 2697, on pg_tablespace using btree(oid oid_ops)); #define TablespaceOidIndexId 2697 DECLARE_UNIQUE_INDEX(pg_tablespace_spcname_index, 2698, on pg_tablespace using btree(spcname name_ops)); #define TablespaceNameIndexId 2698 DECLARE_UNIQUE_INDEX(pg_transform_oid_index, 3574, on pg_transform using btree(oid oid_ops)); #define TransformOidIndexId 3574 DECLARE_UNIQUE_INDEX(pg_transform_type_lang_index, 3575, on pg_transform using btree(trftype oid_ops, trflang oid_ops)); #define TransformTypeLangIndexId 3575 DECLARE_INDEX(pg_trigger_tgconstraint_index, 2699, on pg_trigger using btree(tgconstraint oid_ops)); #define TriggerConstraintIndexId 2699 DECLARE_UNIQUE_INDEX(pg_trigger_tgrelid_tgname_index, 2701, on pg_trigger using btree(tgrelid oid_ops, tgname name_ops)); #define TriggerRelidNameIndexId 2701 DECLARE_UNIQUE_INDEX(pg_trigger_oid_index, 2702, on pg_trigger using btree(oid oid_ops)); #define TriggerOidIndexId 2702 DECLARE_UNIQUE_INDEX(pg_event_trigger_evtname_index, 3467, on pg_event_trigger using btree(evtname name_ops)); #define EventTriggerNameIndexId 3467 DECLARE_UNIQUE_INDEX(pg_event_trigger_oid_index, 3468, on pg_event_trigger using btree(oid oid_ops)); #define EventTriggerOidIndexId 3468 DECLARE_UNIQUE_INDEX(pg_ts_config_cfgname_index, 3608, on pg_ts_config using btree(cfgname name_ops, cfgnamespace oid_ops)); #define TSConfigNameNspIndexId 3608 DECLARE_UNIQUE_INDEX(pg_ts_config_oid_index, 3712, on pg_ts_config using btree(oid oid_ops)); #define TSConfigOidIndexId 3712 DECLARE_UNIQUE_INDEX(pg_ts_config_map_index, 3609, on pg_ts_config_map using btree(mapcfg oid_ops, maptokentype int4_ops, mapseqno int4_ops)); #define TSConfigMapIndexId 3609 DECLARE_UNIQUE_INDEX(pg_ts_dict_dictname_index, 3604, on pg_ts_dict using btree(dictname name_ops, dictnamespace oid_ops)); #define TSDictionaryNameNspIndexId 3604 DECLARE_UNIQUE_INDEX(pg_ts_dict_oid_index, 3605, on pg_ts_dict using btree(oid oid_ops)); #define TSDictionaryOidIndexId 3605 DECLARE_UNIQUE_INDEX(pg_ts_parser_prsname_index, 3606, on pg_ts_parser using btree(prsname name_ops, prsnamespace oid_ops)); #define TSParserNameNspIndexId 3606 DECLARE_UNIQUE_INDEX(pg_ts_parser_oid_index, 3607, on pg_ts_parser using btree(oid oid_ops)); #define TSParserOidIndexId 3607 DECLARE_UNIQUE_INDEX(pg_ts_template_tmplname_index, 3766, on pg_ts_template using btree(tmplname name_ops, tmplnamespace oid_ops)); #define TSTemplateNameNspIndexId 3766 DECLARE_UNIQUE_INDEX(pg_ts_template_oid_index, 3767, on pg_ts_template using btree(oid oid_ops)); #define TSTemplateOidIndexId 3767 DECLARE_UNIQUE_INDEX(pg_type_oid_index, 2703, on pg_type using btree(oid oid_ops)); #define TypeOidIndexId 2703 DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index, 2704, on pg_type using btree(typname name_ops, typnamespace oid_ops)); #define TypeNameNspIndexId 2704 DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_oid_index, 112, on pg_foreign_data_wrapper using btree(oid oid_ops)); #define ForeignDataWrapperOidIndexId 112 DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_name_index, 548, on pg_foreign_data_wrapper using btree(fdwname name_ops)); #define ForeignDataWrapperNameIndexId 548 DECLARE_UNIQUE_INDEX(pg_foreign_server_oid_index, 113, on pg_foreign_server using btree(oid oid_ops)); #define ForeignServerOidIndexId 113 DECLARE_UNIQUE_INDEX(pg_foreign_server_name_index, 549, on pg_foreign_server using btree(srvname name_ops)); #define ForeignServerNameIndexId 549 DECLARE_UNIQUE_INDEX(pg_user_mapping_oid_index, 174, on pg_user_mapping using btree(oid oid_ops)); #define UserMappingOidIndexId 174 DECLARE_UNIQUE_INDEX(pg_user_mapping_user_server_index, 175, on pg_user_mapping using btree(umuser oid_ops, umserver oid_ops)); #define UserMappingUserServerIndexId 175 DECLARE_UNIQUE_INDEX(pg_foreign_table_relid_index, 3119, on pg_foreign_table using btree(ftrelid oid_ops)); #define ForeignTableRelidIndexId 3119 DECLARE_UNIQUE_INDEX(pg_default_acl_role_nsp_obj_index, 827, on pg_default_acl using btree(defaclrole oid_ops, defaclnamespace oid_ops, defaclobjtype char_ops)); #define DefaultAclRoleNspObjIndexId 827 DECLARE_UNIQUE_INDEX(pg_default_acl_oid_index, 828, on pg_default_acl using btree(oid oid_ops)); #define DefaultAclOidIndexId 828 DECLARE_UNIQUE_INDEX(pg_db_role_setting_databaseid_rol_index, 2965, on pg_db_role_setting using btree(setdatabase oid_ops, setrole oid_ops)); #define DbRoleSettingDatidRolidIndexId 2965 DECLARE_UNIQUE_INDEX(pg_seclabel_object_index, 3597, on pg_seclabel using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops, provider text_ops)); #define SecLabelObjectIndexId 3597 DECLARE_UNIQUE_INDEX(pg_shseclabel_object_index, 3593, on pg_shseclabel using btree(objoid oid_ops, classoid oid_ops, provider text_ops)); #define SharedSecLabelObjectIndexId 3593 DECLARE_UNIQUE_INDEX(pg_extension_oid_index, 3080, on pg_extension using btree(oid oid_ops)); #define ExtensionOidIndexId 3080 DECLARE_UNIQUE_INDEX(pg_extension_name_index, 3081, on pg_extension using btree(extname name_ops)); #define ExtensionNameIndexId 3081 DECLARE_UNIQUE_INDEX(pg_range_rngtypid_index, 3542, on pg_range using btree(rngtypid oid_ops)); #define RangeTypidIndexId 3542 DECLARE_UNIQUE_INDEX(pg_policy_oid_index, 3257, on pg_policy using btree(oid oid_ops)); #define PolicyOidIndexId 3257 DECLARE_UNIQUE_INDEX(pg_policy_polrelid_polname_index, 3258, on pg_policy using btree(polrelid oid_ops, polname name_ops)); #define PolicyPolrelidPolnameIndexId 3258 DECLARE_UNIQUE_INDEX(pg_replication_origin_roiident_index, 6001, on pg_replication_origin using btree(roident oid_ops)); #define ReplicationOriginIdentIndex 6001 DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, on pg_replication_origin using btree(roname text_ops)); #define ReplicationOriginNameIndex 6002 DECLARE_UNIQUE_INDEX(pg_partitioned_table_partrelid_index, 3351, on pg_partitioned_table using btree(partrelid oid_ops)); #define PartitionedRelidIndexId 3351 DECLARE_UNIQUE_INDEX(pg_publication_oid_index, 6110, on pg_publication using btree(oid oid_ops)); #define PublicationObjectIndexId 6110 DECLARE_UNIQUE_INDEX(pg_publication_pubname_index, 6111, on pg_publication using btree(pubname name_ops)); #define PublicationNameIndexId 6111 DECLARE_UNIQUE_INDEX(pg_publication_rel_oid_index, 6112, on pg_publication_rel using btree(oid oid_ops)); #define PublicationRelObjectIndexId 6112 DECLARE_UNIQUE_INDEX(pg_publication_rel_prrelid_prpubid_index, 6113, on pg_publication_rel using btree(prrelid oid_ops, prpubid oid_ops)); #define PublicationRelPrrelidPrpubidIndexId 6113 DECLARE_UNIQUE_INDEX(pg_subscription_oid_index, 6114, on pg_subscription using btree(oid oid_ops)); #define SubscriptionObjectIndexId 6114 DECLARE_UNIQUE_INDEX(pg_subscription_subname_index, 6115, on pg_subscription using btree(subdbid oid_ops, subname name_ops)); #define SubscriptionNameIndexId 6115 DECLARE_UNIQUE_INDEX(pg_subscription_rel_srrelid_srsubid_index, 6117, on pg_subscription_rel using btree(srrelid oid_ops, srsubid oid_ops)); #define SubscriptionRelSrrelidSrsubidIndexId 6117 #endif /* INDEXING_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/namespace.h000066400000000000000000000161341413137616400240670ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * namespace.h * prototypes for functions in backend/catalog/namespace.c * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/namespace.h * *------------------------------------------------------------------------- */ #ifndef NAMESPACE_H #define NAMESPACE_H #include "nodes/primnodes.h" #include "storage/lock.h" /* * This structure holds a list of possible functions or operators * found by namespace lookup. Each function/operator is identified * by OID and by argument types; the list must be pruned by type * resolution rules that are embodied in the parser, not here. * See FuncnameGetCandidates's comments for more info. */ typedef struct _FuncCandidateList { struct _FuncCandidateList *next; int pathpos; /* for internal use of namespace lookup */ Oid oid; /* the function or operator's OID */ int nargs; /* number of arg types returned */ int nvargs; /* number of args to become variadic array */ int ndargs; /* number of defaulted args */ int *argnumbers; /* args' positional indexes, if named call */ Oid args[FLEXIBLE_ARRAY_MEMBER]; /* arg types */ } *FuncCandidateList; /* * Result of checkTempNamespaceStatus */ typedef enum TempNamespaceStatus { TEMP_NAMESPACE_NOT_TEMP, /* nonexistent, or non-temp namespace */ TEMP_NAMESPACE_IDLE, /* exists, belongs to no active session */ TEMP_NAMESPACE_IN_USE /* belongs to some active session */ } TempNamespaceStatus; /* * Structure for xxxOverrideSearchPath functions * * The generation counter is private to namespace.c and shouldn't be touched * by other code. It can be initialized to zero if necessary (that means * "not known equal to the current active path"). */ typedef struct OverrideSearchPath { List *schemas; /* OIDs of explicitly named schemas */ bool addCatalog; /* implicitly prepend pg_catalog? */ bool addTemp; /* implicitly prepend temp schema? */ uint64 generation; /* for quick detection of equality to active */ } OverrideSearchPath; /* * Option flag bits for RangeVarGetRelidExtended(). */ typedef enum RVROption { RVR_MISSING_OK = 1 << 0, /* don't error if relation doesn't exist */ RVR_NOWAIT = 1 << 1, /* error if relation cannot be locked */ RVR_SKIP_LOCKED = 1 << 2 /* skip if relation cannot be locked */ } RVROption; typedef void (*RangeVarGetRelidCallback) (const RangeVar *relation, Oid relId, Oid oldRelId, void *callback_arg); #define RangeVarGetRelid(relation, lockmode, missing_ok) \ RangeVarGetRelidExtended(relation, lockmode, \ (missing_ok) ? RVR_MISSING_OK : 0, NULL, NULL) extern Oid RangeVarGetRelidExtended(const RangeVar *relation, LOCKMODE lockmode, uint32 flags, RangeVarGetRelidCallback callback, void *callback_arg); extern Oid RangeVarGetCreationNamespace(const RangeVar *newRelation); extern Oid RangeVarGetAndCheckCreationNamespace(RangeVar *newRelation, LOCKMODE lockmode, Oid *existing_relation_id); extern void RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid); extern Oid RelnameGetRelid(const char *relname); extern bool RelationIsVisible(Oid relid); extern Oid TypenameGetTypid(const char *typname); extern Oid TypenameGetTypidExtended(const char *typname, bool temp_ok); extern bool TypeIsVisible(Oid typid); extern FuncCandidateList FuncnameGetCandidates(List *names, int nargs, List *argnames, bool expand_variadic, bool expand_defaults, bool missing_ok); extern bool FunctionIsVisible(Oid funcid); extern Oid OpernameGetOprid(List *names, Oid oprleft, Oid oprright); extern FuncCandidateList OpernameGetCandidates(List *names, char oprkind, bool missing_schema_ok); extern bool OperatorIsVisible(Oid oprid); extern Oid OpclassnameGetOpcid(Oid amid, const char *opcname); extern bool OpclassIsVisible(Oid opcid); extern Oid OpfamilynameGetOpfid(Oid amid, const char *opfname); extern bool OpfamilyIsVisible(Oid opfid); extern Oid CollationGetCollid(const char *collname); extern bool CollationIsVisible(Oid collid); extern Oid ConversionGetConid(const char *conname); extern bool ConversionIsVisible(Oid conid); extern Oid get_statistics_object_oid(List *names, bool missing_ok); extern bool StatisticsObjIsVisible(Oid relid); extern Oid get_ts_parser_oid(List *names, bool missing_ok); extern bool TSParserIsVisible(Oid prsId); extern Oid get_ts_dict_oid(List *names, bool missing_ok); extern bool TSDictionaryIsVisible(Oid dictId); extern Oid get_ts_template_oid(List *names, bool missing_ok); extern bool TSTemplateIsVisible(Oid tmplId); extern Oid get_ts_config_oid(List *names, bool missing_ok); extern bool TSConfigIsVisible(Oid cfgid); extern void DeconstructQualifiedName(List *names, char **nspname_p, char **objname_p); extern Oid LookupNamespaceNoError(const char *nspname); extern Oid LookupExplicitNamespace(const char *nspname, bool missing_ok); extern Oid get_namespace_oid(const char *nspname, bool missing_ok); extern Oid LookupCreationNamespace(const char *nspname); extern void CheckSetNamespace(Oid oldNspOid, Oid nspOid); extern Oid QualifiedNameGetCreationNamespace(List *names, char **objname_p); extern RangeVar *makeRangeVarFromNameList(List *names); extern char *NameListToString(List *names); extern char *NameListToQuotedString(List *names); extern bool isTempNamespace(Oid namespaceId); extern bool isTempToastNamespace(Oid namespaceId); extern bool isTempOrTempToastNamespace(Oid namespaceId); extern bool isAnyTempNamespace(Oid namespaceId); extern bool isOtherTempNamespace(Oid namespaceId); extern TempNamespaceStatus checkTempNamespaceStatus(Oid namespaceId); extern int GetTempNamespaceBackendId(Oid namespaceId); extern Oid GetTempToastNamespace(void); extern void GetTempNamespaceState(Oid *tempNamespaceId, Oid *tempToastNamespaceId); extern void SetTempNamespaceState(Oid tempNamespaceId, Oid tempToastNamespaceId); extern void ResetTempTableNamespace(void); extern OverrideSearchPath *GetOverrideSearchPath(MemoryContext context); extern OverrideSearchPath *CopyOverrideSearchPath(OverrideSearchPath *path); extern bool OverrideSearchPathMatchesCurrent(OverrideSearchPath *path); extern void PushOverrideSearchPath(OverrideSearchPath *newpath); extern void PopOverrideSearchPath(void); extern Oid get_collation_oid(List *collname, bool missing_ok); extern Oid get_conversion_oid(List *conname, bool missing_ok); extern Oid FindDefaultConversionProc(int32 for_encoding, int32 to_encoding); /* initialization & transaction cleanup code */ extern void InitializeSearchPath(void); extern void AtEOXact_Namespace(bool isCommit, bool parallel); extern void AtEOSubXact_Namespace(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid); /* stuff for search_path GUC variable */ extern char *namespace_search_path; extern List *fetch_search_path(bool includeImplicit); extern int fetch_search_path_array(Oid *sarray, int sarray_len); #endif /* NAMESPACE_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/objectaccess.h000066400000000000000000000146741413137616400245720ustar00rootroot00000000000000/* * objectaccess.h * * Object access hooks. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California */ #ifndef OBJECTACCESS_H #define OBJECTACCESS_H /* * Object access hooks are intended to be called just before or just after * performing certain actions on a SQL object. This is intended as * infrastructure for security or logging plugins. * * OAT_POST_CREATE should be invoked just after the object is created. * Typically, this is done after inserting the primary catalog records and * associated dependencies. * * OAT_DROP should be invoked just before deletion of objects; typically * deleteOneObject(). Its arguments are packed within ObjectAccessDrop. * * OAT_POST_ALTER should be invoked just after the object is altered, * but before the command counter is incremented. An extension using the * hook can use a current MVCC snapshot to get the old version of the tuple, * and can use SnapshotSelf to get the new version of the tuple. * * OAT_NAMESPACE_SEARCH should be invoked prior to object name lookup under * a particular namespace. This event is equivalent to usage permission * on a schema under the default access control mechanism. * * OAT_FUNCTION_EXECUTE should be invoked prior to function execution. * This event is almost equivalent to execute permission on functions, * except for the case when execute permission is checked during object * creation or altering, because OAT_POST_CREATE or OAT_POST_ALTER are * sufficient for extensions to track these kind of checks. * * OAT_TRUNCATE should be invoked just before truncation of objects. This * event is equivalent to truncate permission on a relation under the * default access control mechanism. * * Other types may be added in the future. */ typedef enum ObjectAccessType { OAT_POST_CREATE, OAT_DROP, OAT_POST_ALTER, OAT_NAMESPACE_SEARCH, OAT_FUNCTION_EXECUTE, OAT_TRUNCATE } ObjectAccessType; /* * Arguments of OAT_POST_CREATE event */ typedef struct { /* * This flag informs extensions whether the context of this creation is * invoked by user's operations, or not. E.g, it shall be dealt as * internal stuff on toast tables or indexes due to type changes. */ bool is_internal; } ObjectAccessPostCreate; /* * Arguments of OAT_DROP event */ typedef struct { /* * Flags to inform extensions the context of this deletion. Also see * PERFORM_DELETION_* in dependency.h */ int dropflags; } ObjectAccessDrop; /* * Arguments of OAT_POST_ALTER event */ typedef struct { /* * This identifier is used when system catalog takes two IDs to identify a * particular tuple of the catalog. It is only used when the caller want * to identify an entry of pg_inherits, pg_db_role_setting or * pg_user_mapping. Elsewhere, InvalidOid should be set. */ Oid auxiliary_id; /* * If this flag is set, the user hasn't requested that the object be * altered, but we're doing it anyway for some internal reason. * Permissions-checking hooks may want to skip checks if, say, we're alter * the constraints of a temporary heap during CLUSTER. */ bool is_internal; } ObjectAccessPostAlter; /* * Arguments of OAT_NAMESPACE_SEARCH */ typedef struct { /* * If true, hook should report an error when permission to search this * schema is denied. */ bool ereport_on_violation; /* * This is, in essence, an out parameter. Core code should initialize * this to true, and any extension that wants to deny access should reset * it to false. But an extension should be careful never to store a true * value here, so that in case there are multiple extensions access is * only allowed if all extensions agree. */ bool result; } ObjectAccessNamespaceSearch; /* Plugin provides a hook function matching this signature. */ typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg); /* Plugin sets this variable to a suitable hook function. */ extern PGDLLIMPORT object_access_hook_type object_access_hook; /* Core code uses these functions to call the hook (see macros below). */ extern void RunObjectPostCreateHook(Oid classId, Oid objectId, int subId, bool is_internal); extern void RunObjectDropHook(Oid classId, Oid objectId, int subId, int dropflags); extern void RunObjectTruncateHook(Oid objectId); extern void RunObjectPostAlterHook(Oid classId, Oid objectId, int subId, Oid auxiliaryId, bool is_internal); extern bool RunNamespaceSearchHook(Oid objectId, bool ereport_on_violation); extern void RunFunctionExecuteHook(Oid objectId); /* * The following macros are wrappers around the functions above; these should * normally be used to invoke the hook in lieu of calling the above functions * directly. */ #define InvokeObjectPostCreateHook(classId,objectId,subId) \ InvokeObjectPostCreateHookArg((classId),(objectId),(subId),false) #define InvokeObjectPostCreateHookArg(classId,objectId,subId,is_internal) \ do { \ if (object_access_hook) \ RunObjectPostCreateHook((classId),(objectId),(subId), \ (is_internal)); \ } while(0) #define InvokeObjectDropHook(classId,objectId,subId) \ InvokeObjectDropHookArg((classId),(objectId),(subId),0) #define InvokeObjectDropHookArg(classId,objectId,subId,dropflags) \ do { \ if (object_access_hook) \ RunObjectDropHook((classId),(objectId),(subId), \ (dropflags)); \ } while(0) #define InvokeObjectTruncateHook(objectId) \ do { \ if (object_access_hook) \ RunObjectTruncateHook(objectId); \ } while(0) #define InvokeObjectPostAlterHook(classId,objectId,subId) \ InvokeObjectPostAlterHookArg((classId),(objectId),(subId), \ InvalidOid,false) #define InvokeObjectPostAlterHookArg(classId,objectId,subId, \ auxiliaryId,is_internal) \ do { \ if (object_access_hook) \ RunObjectPostAlterHook((classId),(objectId),(subId), \ (auxiliaryId),(is_internal)); \ } while(0) #define InvokeNamespaceSearchHook(objectId, ereport_on_violation) \ (!object_access_hook \ ? true \ : RunNamespaceSearchHook((objectId), (ereport_on_violation))) #define InvokeFunctionExecuteHook(objectId) \ do { \ if (object_access_hook) \ RunFunctionExecuteHook(objectId); \ } while(0) #endif /* OBJECTACCESS_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/objectaddress.h000066400000000000000000000057271413137616400247550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * objectaddress.h * functions for working with object addresses * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/objectaddress.h * *------------------------------------------------------------------------- */ #ifndef OBJECTADDRESS_H #define OBJECTADDRESS_H #include "access/htup.h" #include "nodes/parsenodes.h" #include "storage/lockdefs.h" #include "utils/relcache.h" /* * An ObjectAddress represents a database object of any type. */ typedef struct ObjectAddress { Oid classId; /* Class Id from pg_class */ Oid objectId; /* OID of the object */ int32 objectSubId; /* Subitem within object (eg column), or 0 */ } ObjectAddress; extern const ObjectAddress InvalidObjectAddress; #define ObjectAddressSubSet(addr, class_id, object_id, object_sub_id) \ do { \ (addr).classId = (class_id); \ (addr).objectId = (object_id); \ (addr).objectSubId = (object_sub_id); \ } while (0) #define ObjectAddressSet(addr, class_id, object_id) \ ObjectAddressSubSet(addr, class_id, object_id, 0) extern ObjectAddress get_object_address(ObjectType objtype, Node *object, Relation *relp, LOCKMODE lockmode, bool missing_ok); extern ObjectAddress get_object_address_rv(ObjectType objtype, RangeVar *rel, List *object, Relation *relp, LOCKMODE lockmode, bool missing_ok); extern void check_object_ownership(Oid roleid, ObjectType objtype, ObjectAddress address, Node *object, Relation relation); extern Oid get_object_namespace(const ObjectAddress *address); extern bool is_objectclass_supported(Oid class_id); extern Oid get_object_oid_index(Oid class_id); extern int get_object_catcache_oid(Oid class_id); extern int get_object_catcache_name(Oid class_id); extern AttrNumber get_object_attnum_oid(Oid class_id); extern AttrNumber get_object_attnum_name(Oid class_id); extern AttrNumber get_object_attnum_namespace(Oid class_id); extern AttrNumber get_object_attnum_owner(Oid class_id); extern AttrNumber get_object_attnum_acl(Oid class_id); extern ObjectType get_object_type(Oid class_id, Oid object_id); extern bool get_object_namensp_unique(Oid class_id); extern HeapTuple get_catalog_object_by_oid(Relation catalog, AttrNumber oidcol, Oid objectId); extern char *getObjectDescription(const ObjectAddress *object); extern char *getObjectDescriptionOids(Oid classid, Oid objid); extern int read_objtype_from_string(const char *objtype); extern char *getObjectTypeDescription(const ObjectAddress *object); extern char *getObjectIdentity(const ObjectAddress *address); extern char *getObjectIdentityParts(const ObjectAddress *address, List **objname, List **objargs); extern struct ArrayType *strlist_to_textarray(List *list); extern ObjectType get_relkind_objtype(char relkind); #endif /* OBJECTADDRESS_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_aggregate.h000066400000000000000000000132461413137616400245500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_aggregate.h * definition of the "aggregate" system catalog (pg_aggregate) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_aggregate.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_AGGREGATE_H #define PG_AGGREGATE_H #include "catalog/genbki.h" #include "catalog/pg_aggregate_d.h" #include "catalog/objectaddress.h" #include "nodes/pg_list.h" /* ---------------------------------------------------------------- * pg_aggregate definition. * cpp turns this into typedef struct FormData_pg_aggregate * ---------------------------------------------------------------- */ CATALOG(pg_aggregate,2600,AggregateRelationId) { /* pg_proc OID of the aggregate itself */ regproc aggfnoid BKI_LOOKUP(pg_proc); /* aggregate kind, see AGGKIND_ categories below */ char aggkind BKI_DEFAULT(n); /* number of arguments that are "direct" arguments */ int16 aggnumdirectargs BKI_DEFAULT(0); /* transition function */ regproc aggtransfn BKI_LOOKUP(pg_proc); /* final function (0 if none) */ regproc aggfinalfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* combine function (0 if none) */ regproc aggcombinefn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* function to convert transtype to bytea (0 if none) */ regproc aggserialfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* function to convert bytea to transtype (0 if none) */ regproc aggdeserialfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* forward function for moving-aggregate mode (0 if none) */ regproc aggmtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* inverse function for moving-aggregate mode (0 if none) */ regproc aggminvtransfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* final function for moving-aggregate mode (0 if none) */ regproc aggmfinalfn BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* true to pass extra dummy arguments to aggfinalfn */ bool aggfinalextra BKI_DEFAULT(f); /* true to pass extra dummy arguments to aggmfinalfn */ bool aggmfinalextra BKI_DEFAULT(f); /* tells whether aggfinalfn modifies transition state */ char aggfinalmodify BKI_DEFAULT(r); /* tells whether aggmfinalfn modifies transition state */ char aggmfinalmodify BKI_DEFAULT(r); /* associated sort operator (0 if none) */ Oid aggsortop BKI_DEFAULT(0) BKI_LOOKUP(pg_operator); /* type of aggregate's transition (state) data */ Oid aggtranstype BKI_LOOKUP(pg_type); /* estimated size of state data (0 for default estimate) */ int32 aggtransspace BKI_DEFAULT(0); /* type of moving-aggregate state data (0 if none) */ Oid aggmtranstype BKI_DEFAULT(0) BKI_LOOKUP(pg_type); /* estimated size of moving-agg state (0 for default est) */ int32 aggmtransspace BKI_DEFAULT(0); #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* initial value for transition state (can be NULL) */ text agginitval BKI_DEFAULT(_null_); /* initial value for moving-agg state (can be NULL) */ text aggminitval BKI_DEFAULT(_null_); #endif } FormData_pg_aggregate; /* ---------------- * Form_pg_aggregate corresponds to a pointer to a tuple with * the format of pg_aggregate relation. * ---------------- */ typedef FormData_pg_aggregate *Form_pg_aggregate; #ifdef EXPOSE_TO_CLIENT_CODE /* * Symbolic values for aggkind column. We distinguish normal aggregates * from ordered-set aggregates (which have two sets of arguments, namely * direct and aggregated arguments) and from hypothetical-set aggregates * (which are a subclass of ordered-set aggregates in which the last * direct arguments have to match up in number and datatypes with the * aggregated arguments). */ #define AGGKIND_NORMAL 'n' #define AGGKIND_ORDERED_SET 'o' #define AGGKIND_HYPOTHETICAL 'h' /* Use this macro to test for "ordered-set agg including hypothetical case" */ #define AGGKIND_IS_ORDERED_SET(kind) ((kind) != AGGKIND_NORMAL) /* * Symbolic values for aggfinalmodify and aggmfinalmodify columns. * Preferably, finalfns do not modify the transition state value at all, * but in some cases that would cost too much performance. We distinguish * "pure read only" and "trashes it arbitrarily" cases, as well as the * intermediate case where multiple finalfn calls are allowed but the * transfn cannot be applied anymore after the first finalfn call. */ #define AGGMODIFY_READ_ONLY 'r' #define AGGMODIFY_SHAREABLE 's' #define AGGMODIFY_READ_WRITE 'w' #endif /* EXPOSE_TO_CLIENT_CODE */ extern ObjectAddress AggregateCreate(const char *aggName, Oid aggNamespace, bool replace, char aggKind, int numArgs, int numDirectArgs, oidvector *parameterTypes, Datum allParameterTypes, Datum parameterModes, Datum parameterNames, List *parameterDefaults, Oid variadicArgType, List *aggtransfnName, List *aggfinalfnName, List *aggcombinefnName, List *aggserialfnName, List *aggdeserialfnName, List *aggmtransfnName, List *aggminvtransfnName, List *aggmfinalfnName, bool finalfnExtraArgs, bool mfinalfnExtraArgs, char finalfnModify, char mfinalfnModify, List *aggsortopName, Oid aggTransType, int32 aggTransSpace, Oid aggmTransType, int32 aggmTransSpace, const char *agginitval, const char *aggminitval, char proparallel); #endif /* PG_AGGREGATE_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_aggregate_d.h000066400000000000000000000053361413137616400250540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_aggregate_d.h * Macro definitions for pg_aggregate * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_AGGREGATE_D_H #define PG_AGGREGATE_D_H #define AggregateRelationId 2600 #define Anum_pg_aggregate_aggfnoid 1 #define Anum_pg_aggregate_aggkind 2 #define Anum_pg_aggregate_aggnumdirectargs 3 #define Anum_pg_aggregate_aggtransfn 4 #define Anum_pg_aggregate_aggfinalfn 5 #define Anum_pg_aggregate_aggcombinefn 6 #define Anum_pg_aggregate_aggserialfn 7 #define Anum_pg_aggregate_aggdeserialfn 8 #define Anum_pg_aggregate_aggmtransfn 9 #define Anum_pg_aggregate_aggminvtransfn 10 #define Anum_pg_aggregate_aggmfinalfn 11 #define Anum_pg_aggregate_aggfinalextra 12 #define Anum_pg_aggregate_aggmfinalextra 13 #define Anum_pg_aggregate_aggfinalmodify 14 #define Anum_pg_aggregate_aggmfinalmodify 15 #define Anum_pg_aggregate_aggsortop 16 #define Anum_pg_aggregate_aggtranstype 17 #define Anum_pg_aggregate_aggtransspace 18 #define Anum_pg_aggregate_aggmtranstype 19 #define Anum_pg_aggregate_aggmtransspace 20 #define Anum_pg_aggregate_agginitval 21 #define Anum_pg_aggregate_aggminitval 22 #define Natts_pg_aggregate 22 /* * Symbolic values for aggkind column. We distinguish normal aggregates * from ordered-set aggregates (which have two sets of arguments, namely * direct and aggregated arguments) and from hypothetical-set aggregates * (which are a subclass of ordered-set aggregates in which the last * direct arguments have to match up in number and datatypes with the * aggregated arguments). */ #define AGGKIND_NORMAL 'n' #define AGGKIND_ORDERED_SET 'o' #define AGGKIND_HYPOTHETICAL 'h' /* Use this macro to test for "ordered-set agg including hypothetical case" */ #define AGGKIND_IS_ORDERED_SET(kind) ((kind) != AGGKIND_NORMAL) /* * Symbolic values for aggfinalmodify and aggmfinalmodify columns. * Preferably, finalfns do not modify the transition state value at all, * but in some cases that would cost too much performance. We distinguish * "pure read only" and "trashes it arbitrarily" cases, as well as the * intermediate case where multiple finalfn calls are allowed but the * transfn cannot be applied anymore after the first finalfn call. */ #define AGGMODIFY_READ_ONLY 'r' #define AGGMODIFY_SHAREABLE 's' #define AGGMODIFY_READ_WRITE 'w' #endif /* PG_AGGREGATE_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_am.h000066400000000000000000000025621413137616400232160ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_am.h * definition of the "access method" system catalog (pg_am) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_am.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_AM_H #define PG_AM_H #include "catalog/genbki.h" #include "catalog/pg_am_d.h" /* ---------------- * pg_am definition. cpp turns this into * typedef struct FormData_pg_am * ---------------- */ CATALOG(pg_am,2601,AccessMethodRelationId) { Oid oid; /* oid */ /* access method name */ NameData amname; /* handler function */ regproc amhandler BKI_LOOKUP(pg_proc); /* see AMTYPE_xxx constants below */ char amtype; } FormData_pg_am; /* ---------------- * Form_pg_am corresponds to a pointer to a tuple with * the format of pg_am relation. * ---------------- */ typedef FormData_pg_am *Form_pg_am; #ifdef EXPOSE_TO_CLIENT_CODE /* * Allowed values for amtype */ #define AMTYPE_INDEX 'i' /* index access method */ #define AMTYPE_TABLE 't' /* table access method */ #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_AM_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_am_d.h000066400000000000000000000021151413137616400235130ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_am_d.h * Macro definitions for pg_am * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_AM_D_H #define PG_AM_D_H #define AccessMethodRelationId 2601 #define Anum_pg_am_oid 1 #define Anum_pg_am_amname 2 #define Anum_pg_am_amhandler 3 #define Anum_pg_am_amtype 4 #define Natts_pg_am 4 /* * Allowed values for amtype */ #define AMTYPE_INDEX 'i' /* index access method */ #define AMTYPE_TABLE 't' /* table access method */ #define HEAP_TABLE_AM_OID 2 #define BTREE_AM_OID 403 #define HASH_AM_OID 405 #define GIST_AM_OID 783 #define GIN_AM_OID 2742 #define SPGIST_AM_OID 4000 #define BRIN_AM_OID 3580 #endif /* PG_AM_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_attribute.h000066400000000000000000000151641413137616400246260ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_attribute.h * definition of the "attribute" system catalog (pg_attribute) * * The initial contents of pg_attribute are generated at compile time by * genbki.pl, so there is no pg_attribute.dat file. Only "bootstrapped" * relations need be included. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_attribute.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_ATTRIBUTE_H #define PG_ATTRIBUTE_H #include "catalog/genbki.h" #include "catalog/pg_attribute_d.h" /* ---------------- * pg_attribute definition. cpp turns this into * typedef struct FormData_pg_attribute * * If you change the following, make sure you change the structs for * system attributes in catalog/heap.c also. * You may need to change catalog/genbki.pl as well. * ---------------- */ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,AttributeRelation_Rowtype_Id) BKI_SCHEMA_MACRO { Oid attrelid; /* OID of relation containing this attribute */ NameData attname; /* name of attribute */ /* * atttypid is the OID of the instance in Catalog Class pg_type that * defines the data type of this attribute (e.g. int4). Information in * that instance is redundant with the attlen, attbyval, and attalign * attributes of this instance, so they had better match or Postgres will * fail. */ Oid atttypid; /* * attstattarget is the target number of statistics datapoints to collect * during VACUUM ANALYZE of this column. A zero here indicates that we do * not wish to collect any stats about this column. A "-1" here indicates * that no value has been explicitly set for this column, so ANALYZE * should use the default setting. */ int32 attstattarget BKI_DEFAULT(-1); /* * attlen is a copy of the typlen field from pg_type for this attribute. * See atttypid comments above. */ int16 attlen; /* * attnum is the "attribute number" for the attribute: A value that * uniquely identifies this attribute within its class. For user * attributes, Attribute numbers are greater than 0 and not greater than * the number of attributes in the class. I.e. if the Class pg_class says * that Class XYZ has 10 attributes, then the user attribute numbers in * Class pg_attribute must be 1-10. * * System attributes have attribute numbers less than 0 that are unique * within the class, but not constrained to any particular range. * * Note that (attnum - 1) is often used as the index to an array. */ int16 attnum; /* * attndims is the declared number of dimensions, if an array type, * otherwise zero. */ int32 attndims; /* * fastgetattr() uses attcacheoff to cache byte offsets of attributes in * heap tuples. The value actually stored in pg_attribute (-1) indicates * no cached value. But when we copy these tuples into a tuple * descriptor, we may then update attcacheoff in the copies. This speeds * up the attribute walking process. */ int32 attcacheoff BKI_DEFAULT(-1); /* * atttypmod records type-specific data supplied at table creation time * (for example, the max length of a varchar field). It is passed to * type-specific input and output functions as the third argument. The * value will generally be -1 for types that do not need typmod. */ int32 atttypmod BKI_DEFAULT(-1); /* * attbyval is a copy of the typbyval field from pg_type for this * attribute. See atttypid comments above. */ bool attbyval; /*---------- * attstorage tells for VARLENA attributes, what the heap access * methods can do to it if a given tuple doesn't fit into a page. * Possible values are as for pg_type.typstorage (see TYPSTORAGE macros). *---------- */ char attstorage; /* * attalign is a copy of the typalign field from pg_type for this * attribute. See atttypid comments above. */ char attalign; /* This flag represents the "NOT NULL" constraint */ bool attnotnull; /* Has DEFAULT value or not */ bool atthasdef BKI_DEFAULT(f); /* Has a missing value or not */ bool atthasmissing BKI_DEFAULT(f); /* One of the ATTRIBUTE_IDENTITY_* constants below, or '\0' */ char attidentity BKI_DEFAULT('\0'); /* One of the ATTRIBUTE_GENERATED_* constants below, or '\0' */ char attgenerated BKI_DEFAULT('\0'); /* Is dropped (ie, logically invisible) or not */ bool attisdropped BKI_DEFAULT(f); /* * This flag specifies whether this column has ever had a local * definition. It is set for normal non-inherited columns, but also for * columns that are inherited from parents if also explicitly listed in * CREATE TABLE INHERITS. It is also set when inheritance is removed from * a table with ALTER TABLE NO INHERIT. If the flag is set, the column is * not dropped by a parent's DROP COLUMN even if this causes the column's * attinhcount to become zero. */ bool attislocal BKI_DEFAULT(t); /* Number of times inherited from direct parent relation(s) */ int32 attinhcount BKI_DEFAULT(0); /* attribute's collation */ Oid attcollation; #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* NOTE: The following fields are not present in tuple descriptors. */ /* Column-level access permissions */ aclitem attacl[1] BKI_DEFAULT(_null_); /* Column-level options */ text attoptions[1] BKI_DEFAULT(_null_); /* Column-level FDW options */ text attfdwoptions[1] BKI_DEFAULT(_null_); /* * Missing value for added columns. This is a one element array which lets * us store a value of the attribute type here. */ anyarray attmissingval BKI_DEFAULT(_null_); #endif } FormData_pg_attribute; /* * ATTRIBUTE_FIXED_PART_SIZE is the size of the fixed-layout, * guaranteed-not-null part of a pg_attribute row. This is in fact as much * of the row as gets copied into tuple descriptors, so don't expect you * can access fields beyond attcollation except in a real tuple! */ #define ATTRIBUTE_FIXED_PART_SIZE \ (offsetof(FormData_pg_attribute,attcollation) + sizeof(Oid)) /* ---------------- * Form_pg_attribute corresponds to a pointer to a tuple with * the format of pg_attribute relation. * ---------------- */ typedef FormData_pg_attribute *Form_pg_attribute; #ifdef EXPOSE_TO_CLIENT_CODE #define ATTRIBUTE_IDENTITY_ALWAYS 'a' #define ATTRIBUTE_IDENTITY_BY_DEFAULT 'd' #define ATTRIBUTE_GENERATED_STORED 's' #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_ATTRIBUTE_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_attribute_d.h000066400000000000000000000035051413137616400251250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_attribute_d.h * Macro definitions for pg_attribute * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_ATTRIBUTE_D_H #define PG_ATTRIBUTE_D_H #define AttributeRelationId 1249 #define AttributeRelation_Rowtype_Id 75 #define Anum_pg_attribute_attrelid 1 #define Anum_pg_attribute_attname 2 #define Anum_pg_attribute_atttypid 3 #define Anum_pg_attribute_attstattarget 4 #define Anum_pg_attribute_attlen 5 #define Anum_pg_attribute_attnum 6 #define Anum_pg_attribute_attndims 7 #define Anum_pg_attribute_attcacheoff 8 #define Anum_pg_attribute_atttypmod 9 #define Anum_pg_attribute_attbyval 10 #define Anum_pg_attribute_attstorage 11 #define Anum_pg_attribute_attalign 12 #define Anum_pg_attribute_attnotnull 13 #define Anum_pg_attribute_atthasdef 14 #define Anum_pg_attribute_atthasmissing 15 #define Anum_pg_attribute_attidentity 16 #define Anum_pg_attribute_attgenerated 17 #define Anum_pg_attribute_attisdropped 18 #define Anum_pg_attribute_attislocal 19 #define Anum_pg_attribute_attinhcount 20 #define Anum_pg_attribute_attcollation 21 #define Anum_pg_attribute_attacl 22 #define Anum_pg_attribute_attoptions 23 #define Anum_pg_attribute_attfdwoptions 24 #define Anum_pg_attribute_attmissingval 25 #define Natts_pg_attribute 25 #define ATTRIBUTE_IDENTITY_ALWAYS 'a' #define ATTRIBUTE_IDENTITY_BY_DEFAULT 'd' #define ATTRIBUTE_GENERATED_STORED 's' #endif /* PG_ATTRIBUTE_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_authid.h000066400000000000000000000037361413137616400241030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_authid.h * definition of the "authorization identifier" system catalog (pg_authid) * * pg_shadow and pg_group are now publicly accessible views on pg_authid. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_authid.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_AUTHID_H #define PG_AUTHID_H #include "catalog/genbki.h" #include "catalog/pg_authid_d.h" /* ---------------- * pg_authid definition. cpp turns this into * typedef struct FormData_pg_authid * ---------------- */ CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842,AuthIdRelation_Rowtype_Id) BKI_SCHEMA_MACRO { Oid oid; /* oid */ NameData rolname; /* name of role */ bool rolsuper; /* read this field via superuser() only! */ bool rolinherit; /* inherit privileges from other roles? */ bool rolcreaterole; /* allowed to create more roles? */ bool rolcreatedb; /* allowed to create databases? */ bool rolcanlogin; /* allowed to log in as session user? */ bool rolreplication; /* role used for streaming replication */ bool rolbypassrls; /* bypasses row level security? */ int32 rolconnlimit; /* max connections allowed (-1=no limit) */ /* remaining fields may be null; use heap_getattr to read them! */ #ifdef CATALOG_VARLEN /* variable-length fields start here */ text rolpassword; /* password, if any */ timestamptz rolvaliduntil; /* password expiration time, if any */ #endif } FormData_pg_authid; /* ---------------- * Form_pg_authid corresponds to a pointer to a tuple with * the format of pg_authid relation. * ---------------- */ typedef FormData_pg_authid *Form_pg_authid; #endif /* PG_AUTHID_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_authid_d.h000066400000000000000000000030021413137616400243700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_authid_d.h * Macro definitions for pg_authid * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_AUTHID_D_H #define PG_AUTHID_D_H #define AuthIdRelationId 1260 #define AuthIdRelation_Rowtype_Id 2842 #define Anum_pg_authid_oid 1 #define Anum_pg_authid_rolname 2 #define Anum_pg_authid_rolsuper 3 #define Anum_pg_authid_rolinherit 4 #define Anum_pg_authid_rolcreaterole 5 #define Anum_pg_authid_rolcreatedb 6 #define Anum_pg_authid_rolcanlogin 7 #define Anum_pg_authid_rolreplication 8 #define Anum_pg_authid_rolbypassrls 9 #define Anum_pg_authid_rolconnlimit 10 #define Anum_pg_authid_rolpassword 11 #define Anum_pg_authid_rolvaliduntil 12 #define Natts_pg_authid 12 #define BOOTSTRAP_SUPERUSERID 10 #define DEFAULT_ROLE_MONITOR 3373 #define DEFAULT_ROLE_READ_ALL_SETTINGS 3374 #define DEFAULT_ROLE_READ_ALL_STATS 3375 #define DEFAULT_ROLE_STAT_SCAN_TABLES 3377 #define DEFAULT_ROLE_READ_SERVER_FILES 4569 #define DEFAULT_ROLE_WRITE_SERVER_FILES 4570 #define DEFAULT_ROLE_EXECUTE_SERVER_PROGRAM 4571 #define DEFAULT_ROLE_SIGNAL_BACKENDID 4200 #endif /* PG_AUTHID_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_class.h000066400000000000000000000143611413137616400237260ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_class.h * definition of the "relation" system catalog (pg_class) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_class.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_CLASS_H #define PG_CLASS_H #include "catalog/genbki.h" #include "catalog/pg_class_d.h" /* ---------------- * pg_class definition. cpp turns this into * typedef struct FormData_pg_class * * Note that the BKI_DEFAULT values below are only used for rows describing * BKI_BOOTSTRAP catalogs, since only those rows appear in pg_class.dat. * ---------------- */ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,RelationRelation_Rowtype_Id) BKI_SCHEMA_MACRO { /* oid */ Oid oid; /* class name */ NameData relname; /* OID of namespace containing this class */ Oid relnamespace BKI_DEFAULT(PGNSP); /* OID of entry in pg_type for table's implicit row type */ Oid reltype BKI_LOOKUP(pg_type); /* OID of entry in pg_type for underlying composite type */ Oid reloftype BKI_DEFAULT(0) BKI_LOOKUP(pg_type); /* class owner */ Oid relowner BKI_DEFAULT(PGUID); /* access method; 0 if not a table / index */ Oid relam BKI_DEFAULT(heap) BKI_LOOKUP(pg_am); /* identifier of physical storage file */ /* relfilenode == 0 means it is a "mapped" relation, see relmapper.c */ Oid relfilenode BKI_DEFAULT(0); /* identifier of table space for relation (0 means default for database) */ Oid reltablespace BKI_DEFAULT(0) BKI_LOOKUP(pg_tablespace); /* # of blocks (not always up-to-date) */ int32 relpages BKI_DEFAULT(0); /* # of tuples (not always up-to-date) */ float4 reltuples BKI_DEFAULT(0); /* # of all-visible blocks (not always up-to-date) */ int32 relallvisible BKI_DEFAULT(0); /* OID of toast table; 0 if none */ Oid reltoastrelid BKI_DEFAULT(0); /* T if has (or has had) any indexes */ bool relhasindex BKI_DEFAULT(f); /* T if shared across databases */ bool relisshared BKI_DEFAULT(f); /* see RELPERSISTENCE_xxx constants below */ char relpersistence BKI_DEFAULT(p); /* see RELKIND_xxx constants below */ char relkind BKI_DEFAULT(r); /* number of user attributes */ int16 relnatts BKI_DEFAULT(0); /* genbki.pl will fill this in */ /* * Class pg_attribute must contain exactly "relnatts" user attributes * (with attnums ranging from 1 to relnatts) for this class. It may also * contain entries with negative attnums for system attributes. */ /* # of CHECK constraints for class */ int16 relchecks BKI_DEFAULT(0); /* has (or has had) any rules */ bool relhasrules BKI_DEFAULT(f); /* has (or has had) any TRIGGERs */ bool relhastriggers BKI_DEFAULT(f); /* has (or has had) child tables or indexes */ bool relhassubclass BKI_DEFAULT(f); /* row security is enabled or not */ bool relrowsecurity BKI_DEFAULT(f); /* row security forced for owners or not */ bool relforcerowsecurity BKI_DEFAULT(f); /* matview currently holds query results */ bool relispopulated BKI_DEFAULT(t); /* see REPLICA_IDENTITY_xxx constants */ char relreplident BKI_DEFAULT(n); /* is relation a partition? */ bool relispartition BKI_DEFAULT(f); /* heap for rewrite during DDL, link to original rel */ Oid relrewrite BKI_DEFAULT(0); /* all Xids < this are frozen in this rel */ TransactionId relfrozenxid BKI_DEFAULT(3); /* FirstNormalTransactionId */ /* all multixacts in this rel are >= this; it is really a MultiXactId */ TransactionId relminmxid BKI_DEFAULT(1); /* FirstMultiXactId */ #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* NOTE: These fields are not present in a relcache entry's rd_rel field. */ /* access permissions */ aclitem relacl[1] BKI_DEFAULT(_null_); /* access-method-specific options */ text reloptions[1] BKI_DEFAULT(_null_); /* partition bound node tree */ pg_node_tree relpartbound BKI_DEFAULT(_null_); #endif } FormData_pg_class; /* Size of fixed part of pg_class tuples, not counting var-length fields */ #define CLASS_TUPLE_SIZE \ (offsetof(FormData_pg_class,relminmxid) + sizeof(TransactionId)) /* ---------------- * Form_pg_class corresponds to a pointer to a tuple with * the format of pg_class relation. * ---------------- */ typedef FormData_pg_class *Form_pg_class; #ifdef EXPOSE_TO_CLIENT_CODE #define RELKIND_RELATION 'r' /* ordinary table */ #define RELKIND_INDEX 'i' /* secondary index */ #define RELKIND_SEQUENCE 'S' /* sequence object */ #define RELKIND_TOASTVALUE 't' /* for out-of-line values */ #define RELKIND_VIEW 'v' /* view */ #define RELKIND_MATVIEW 'm' /* materialized view */ #define RELKIND_COMPOSITE_TYPE 'c' /* composite type */ #define RELKIND_FOREIGN_TABLE 'f' /* foreign table */ #define RELKIND_PARTITIONED_TABLE 'p' /* partitioned table */ #define RELKIND_PARTITIONED_INDEX 'I' /* partitioned index */ #define RELPERSISTENCE_PERMANENT 'p' /* regular table */ #define RELPERSISTENCE_UNLOGGED 'u' /* unlogged permanent table */ #define RELPERSISTENCE_TEMP 't' /* temporary table */ /* default selection for replica identity (primary key or nothing) */ #define REPLICA_IDENTITY_DEFAULT 'd' /* no replica identity is logged for this relation */ #define REPLICA_IDENTITY_NOTHING 'n' /* all columns are logged as replica identity */ #define REPLICA_IDENTITY_FULL 'f' /* * an explicitly chosen candidate key's columns are used as replica identity. * Note this will still be set if the index has been dropped; in that case it * has the same meaning as 'd'. */ #define REPLICA_IDENTITY_INDEX 'i' /* * Relation kinds that have physical storage. These relations normally have * relfilenode set to non-zero, but it can also be zero if the relation is * mapped. */ #define RELKIND_HAS_STORAGE(relkind) \ ((relkind) == RELKIND_RELATION || \ (relkind) == RELKIND_INDEX || \ (relkind) == RELKIND_SEQUENCE || \ (relkind) == RELKIND_TOASTVALUE || \ (relkind) == RELKIND_MATVIEW) #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_CLASS_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_class_d.h000066400000000000000000000070251413137616400242300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_class_d.h * Macro definitions for pg_class * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_CLASS_D_H #define PG_CLASS_D_H #define RelationRelationId 1259 #define RelationRelation_Rowtype_Id 83 #define Anum_pg_class_oid 1 #define Anum_pg_class_relname 2 #define Anum_pg_class_relnamespace 3 #define Anum_pg_class_reltype 4 #define Anum_pg_class_reloftype 5 #define Anum_pg_class_relowner 6 #define Anum_pg_class_relam 7 #define Anum_pg_class_relfilenode 8 #define Anum_pg_class_reltablespace 9 #define Anum_pg_class_relpages 10 #define Anum_pg_class_reltuples 11 #define Anum_pg_class_relallvisible 12 #define Anum_pg_class_reltoastrelid 13 #define Anum_pg_class_relhasindex 14 #define Anum_pg_class_relisshared 15 #define Anum_pg_class_relpersistence 16 #define Anum_pg_class_relkind 17 #define Anum_pg_class_relnatts 18 #define Anum_pg_class_relchecks 19 #define Anum_pg_class_relhasrules 20 #define Anum_pg_class_relhastriggers 21 #define Anum_pg_class_relhassubclass 22 #define Anum_pg_class_relrowsecurity 23 #define Anum_pg_class_relforcerowsecurity 24 #define Anum_pg_class_relispopulated 25 #define Anum_pg_class_relreplident 26 #define Anum_pg_class_relispartition 27 #define Anum_pg_class_relrewrite 28 #define Anum_pg_class_relfrozenxid 29 #define Anum_pg_class_relminmxid 30 #define Anum_pg_class_relacl 31 #define Anum_pg_class_reloptions 32 #define Anum_pg_class_relpartbound 33 #define Natts_pg_class 33 #define RELKIND_RELATION 'r' /* ordinary table */ #define RELKIND_INDEX 'i' /* secondary index */ #define RELKIND_SEQUENCE 'S' /* sequence object */ #define RELKIND_TOASTVALUE 't' /* for out-of-line values */ #define RELKIND_VIEW 'v' /* view */ #define RELKIND_MATVIEW 'm' /* materialized view */ #define RELKIND_COMPOSITE_TYPE 'c' /* composite type */ #define RELKIND_FOREIGN_TABLE 'f' /* foreign table */ #define RELKIND_PARTITIONED_TABLE 'p' /* partitioned table */ #define RELKIND_PARTITIONED_INDEX 'I' /* partitioned index */ #define RELPERSISTENCE_PERMANENT 'p' /* regular table */ #define RELPERSISTENCE_UNLOGGED 'u' /* unlogged permanent table */ #define RELPERSISTENCE_TEMP 't' /* temporary table */ /* default selection for replica identity (primary key or nothing) */ #define REPLICA_IDENTITY_DEFAULT 'd' /* no replica identity is logged for this relation */ #define REPLICA_IDENTITY_NOTHING 'n' /* all columns are logged as replica identity */ #define REPLICA_IDENTITY_FULL 'f' /* * an explicitly chosen candidate key's columns are used as replica identity. * Note this will still be set if the index has been dropped; in that case it * has the same meaning as 'd'. */ #define REPLICA_IDENTITY_INDEX 'i' /* * Relation kinds that have physical storage. These relations normally have * relfilenode set to non-zero, but it can also be zero if the relation is * mapped. */ #define RELKIND_HAS_STORAGE(relkind) \ ((relkind) == RELKIND_RELATION || \ (relkind) == RELKIND_INDEX || \ (relkind) == RELKIND_SEQUENCE || \ (relkind) == RELKIND_TOASTVALUE || \ (relkind) == RELKIND_MATVIEW) #endif /* PG_CLASS_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_collation.h000066400000000000000000000042201413137616400245760ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_collation.h * definition of the "collation" system catalog (pg_collation) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_collation.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_COLLATION_H #define PG_COLLATION_H #include "catalog/genbki.h" #include "catalog/pg_collation_d.h" /* ---------------- * pg_collation definition. cpp turns this into * typedef struct FormData_pg_collation * ---------------- */ CATALOG(pg_collation,3456,CollationRelationId) { Oid oid; /* oid */ NameData collname; /* collation name */ Oid collnamespace; /* OID of namespace containing collation */ Oid collowner; /* owner of collation */ char collprovider; /* see constants below */ bool collisdeterministic BKI_DEFAULT(t); int32 collencoding; /* encoding for this collation; -1 = "all" */ NameData collcollate; /* LC_COLLATE setting */ NameData collctype; /* LC_CTYPE setting */ #ifdef CATALOG_VARLEN /* variable-length fields start here */ text collversion; /* provider-dependent version of collation * data */ #endif } FormData_pg_collation; /* ---------------- * Form_pg_collation corresponds to a pointer to a row with * the format of pg_collation relation. * ---------------- */ typedef FormData_pg_collation *Form_pg_collation; #ifdef EXPOSE_TO_CLIENT_CODE #define COLLPROVIDER_DEFAULT 'd' #define COLLPROVIDER_ICU 'i' #define COLLPROVIDER_LIBC 'c' #endif /* EXPOSE_TO_CLIENT_CODE */ extern Oid CollationCreate(const char *collname, Oid collnamespace, Oid collowner, char collprovider, bool collisdeterministic, int32 collencoding, const char *collcollate, const char *collctype, const char *collversion, bool if_not_exists, bool quiet); extern void RemoveCollationById(Oid collationOid); #endif /* PG_COLLATION_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_collation_d.h000066400000000000000000000024141413137616400251040ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_collation_d.h * Macro definitions for pg_collation * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_COLLATION_D_H #define PG_COLLATION_D_H #define CollationRelationId 3456 #define Anum_pg_collation_oid 1 #define Anum_pg_collation_collname 2 #define Anum_pg_collation_collnamespace 3 #define Anum_pg_collation_collowner 4 #define Anum_pg_collation_collprovider 5 #define Anum_pg_collation_collisdeterministic 6 #define Anum_pg_collation_collencoding 7 #define Anum_pg_collation_collcollate 8 #define Anum_pg_collation_collctype 9 #define Anum_pg_collation_collversion 10 #define Natts_pg_collation 10 #define COLLPROVIDER_DEFAULT 'd' #define COLLPROVIDER_ICU 'i' #define COLLPROVIDER_LIBC 'c' #define DEFAULT_COLLATION_OID 100 #define C_COLLATION_OID 950 #define POSIX_COLLATION_OID 951 #endif /* PG_COLLATION_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_constraint.h000066400000000000000000000177301413137616400250100ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_constraint.h * definition of the "constraint" system catalog (pg_constraint) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_constraint.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_CONSTRAINT_H #define PG_CONSTRAINT_H #include "catalog/dependency.h" #include "catalog/genbki.h" #include "catalog/pg_constraint_d.h" #include "nodes/pg_list.h" /* ---------------- * pg_constraint definition. cpp turns this into * typedef struct FormData_pg_constraint * ---------------- */ CATALOG(pg_constraint,2606,ConstraintRelationId) { Oid oid; /* oid */ /* * conname + connamespace is deliberately not unique; we allow, for * example, the same name to be used for constraints of different * relations. This is partly for backwards compatibility with past * Postgres practice, and partly because we don't want to have to obtain a * global lock to generate a globally unique name for a nameless * constraint. We associate a namespace with constraint names only for * SQL-spec compatibility. * * However, we do require conname to be unique among the constraints of a * single relation or domain. This is enforced by a unique index on * conrelid + contypid + conname. */ NameData conname; /* name of this constraint */ Oid connamespace; /* OID of namespace containing constraint */ char contype; /* constraint type; see codes below */ bool condeferrable; /* deferrable constraint? */ bool condeferred; /* deferred by default? */ bool convalidated; /* constraint has been validated? */ /* * conrelid and conkey are only meaningful if the constraint applies to a * specific relation (this excludes domain constraints and assertions). * Otherwise conrelid is 0 and conkey is NULL. */ Oid conrelid; /* relation this constraint constrains */ /* * contypid links to the pg_type row for a domain if this is a domain * constraint. Otherwise it's 0. * * For SQL-style global ASSERTIONs, both conrelid and contypid would be * zero. This is not presently supported, however. */ Oid contypid; /* domain this constraint constrains */ /* * conindid links to the index supporting the constraint, if any; * otherwise it's 0. This is used for unique, primary-key, and exclusion * constraints, and less obviously for foreign-key constraints (where the * index is a unique index on the referenced relation's referenced * columns). Notice that the index is on conrelid in the first case but * confrelid in the second. */ Oid conindid; /* index supporting this constraint */ /* * If this constraint is on a partition inherited from a partitioned * table, this is the OID of the corresponding constraint in the parent. */ Oid conparentid; /* * These fields, plus confkey, are only meaningful for a foreign-key * constraint. Otherwise confrelid is 0 and the char fields are spaces. */ Oid confrelid; /* relation referenced by foreign key */ char confupdtype; /* foreign key's ON UPDATE action */ char confdeltype; /* foreign key's ON DELETE action */ char confmatchtype; /* foreign key's match type */ /* Has a local definition (hence, do not drop when coninhcount is 0) */ bool conislocal; /* Number of times inherited from direct parent relation(s) */ int32 coninhcount; /* Has a local definition and cannot be inherited */ bool connoinherit; #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* * Columns of conrelid that the constraint applies to, if known (this is * NULL for trigger constraints) */ int16 conkey[1]; /* * If a foreign key, the referenced columns of confrelid */ int16 confkey[1]; /* * If a foreign key, the OIDs of the PK = FK equality operators for each * column of the constraint */ Oid conpfeqop[1]; /* * If a foreign key, the OIDs of the PK = PK equality operators for each * column of the constraint (i.e., equality for the referenced columns) */ Oid conppeqop[1]; /* * If a foreign key, the OIDs of the FK = FK equality operators for each * column of the constraint (i.e., equality for the referencing columns) */ Oid conffeqop[1]; /* * If an exclusion constraint, the OIDs of the exclusion operators for * each column of the constraint */ Oid conexclop[1]; /* * If a check constraint, nodeToString representation of expression */ pg_node_tree conbin; #endif } FormData_pg_constraint; /* ---------------- * Form_pg_constraint corresponds to a pointer to a tuple with * the format of pg_constraint relation. * ---------------- */ typedef FormData_pg_constraint *Form_pg_constraint; #ifdef EXPOSE_TO_CLIENT_CODE /* Valid values for contype */ #define CONSTRAINT_CHECK 'c' #define CONSTRAINT_FOREIGN 'f' #define CONSTRAINT_PRIMARY 'p' #define CONSTRAINT_UNIQUE 'u' #define CONSTRAINT_TRIGGER 't' #define CONSTRAINT_EXCLUSION 'x' /* * Valid values for confupdtype and confdeltype are the FKCONSTR_ACTION_xxx * constants defined in parsenodes.h. Valid values for confmatchtype are * the FKCONSTR_MATCH_xxx constants defined in parsenodes.h. */ #endif /* EXPOSE_TO_CLIENT_CODE */ /* * Identify constraint type for lookup purposes */ typedef enum ConstraintCategory { CONSTRAINT_RELATION, CONSTRAINT_DOMAIN, CONSTRAINT_ASSERTION /* for future expansion */ } ConstraintCategory; extern Oid CreateConstraintEntry(const char *constraintName, Oid constraintNamespace, char constraintType, bool isDeferrable, bool isDeferred, bool isValidated, Oid parentConstrId, Oid relId, const int16 *constraintKey, int constraintNKeys, int constraintNTotalKeys, Oid domainId, Oid indexRelId, Oid foreignRelId, const int16 *foreignKey, const Oid *pfEqOp, const Oid *ppEqOp, const Oid *ffEqOp, int foreignNKeys, char foreignUpdateType, char foreignDeleteType, char foreignMatchType, const Oid *exclOp, Node *conExpr, const char *conBin, bool conIsLocal, int conInhCount, bool conNoInherit, bool is_internal); extern void RemoveConstraintById(Oid conId); extern void RenameConstraintById(Oid conId, const char *newname); extern bool ConstraintNameIsUsed(ConstraintCategory conCat, Oid objId, const char *conname); extern bool ConstraintNameExists(const char *conname, Oid namespaceid); extern char *ChooseConstraintName(const char *name1, const char *name2, const char *label, Oid namespaceid, List *others); extern void AlterConstraintNamespaces(Oid ownerId, Oid oldNspId, Oid newNspId, bool isType, ObjectAddresses *objsMoved); extern void ConstraintSetParentConstraint(Oid childConstrId, Oid parentConstrId, Oid childTableId); extern Oid get_relation_constraint_oid(Oid relid, const char *conname, bool missing_ok); extern Bitmapset *get_relation_constraint_attnos(Oid relid, const char *conname, bool missing_ok, Oid *constraintOid); extern Oid get_domain_constraint_oid(Oid typid, const char *conname, bool missing_ok); extern Oid get_relation_idx_constraint_oid(Oid relationId, Oid indexId); extern Bitmapset *get_primary_key_attnos(Oid relid, bool deferrableOk, Oid *constraintOid); extern void DeconstructFkConstraintRow(HeapTuple tuple, int *numfks, AttrNumber *conkey, AttrNumber *confkey, Oid *pf_eq_oprs, Oid *pp_eq_oprs, Oid *ff_eq_oprs); extern bool check_functional_grouping(Oid relid, Index varno, Index varlevelsup, List *grouping_columns, List **constraintDeps); #endif /* PG_CONSTRAINT_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_constraint_d.h000066400000000000000000000041551413137616400253100ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_constraint_d.h * Macro definitions for pg_constraint * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_CONSTRAINT_D_H #define PG_CONSTRAINT_D_H #define ConstraintRelationId 2606 #define Anum_pg_constraint_oid 1 #define Anum_pg_constraint_conname 2 #define Anum_pg_constraint_connamespace 3 #define Anum_pg_constraint_contype 4 #define Anum_pg_constraint_condeferrable 5 #define Anum_pg_constraint_condeferred 6 #define Anum_pg_constraint_convalidated 7 #define Anum_pg_constraint_conrelid 8 #define Anum_pg_constraint_contypid 9 #define Anum_pg_constraint_conindid 10 #define Anum_pg_constraint_conparentid 11 #define Anum_pg_constraint_confrelid 12 #define Anum_pg_constraint_confupdtype 13 #define Anum_pg_constraint_confdeltype 14 #define Anum_pg_constraint_confmatchtype 15 #define Anum_pg_constraint_conislocal 16 #define Anum_pg_constraint_coninhcount 17 #define Anum_pg_constraint_connoinherit 18 #define Anum_pg_constraint_conkey 19 #define Anum_pg_constraint_confkey 20 #define Anum_pg_constraint_conpfeqop 21 #define Anum_pg_constraint_conppeqop 22 #define Anum_pg_constraint_conffeqop 23 #define Anum_pg_constraint_conexclop 24 #define Anum_pg_constraint_conbin 25 #define Natts_pg_constraint 25 /* Valid values for contype */ #define CONSTRAINT_CHECK 'c' #define CONSTRAINT_FOREIGN 'f' #define CONSTRAINT_PRIMARY 'p' #define CONSTRAINT_UNIQUE 'u' #define CONSTRAINT_TRIGGER 't' #define CONSTRAINT_EXCLUSION 'x' /* * Valid values for confupdtype and confdeltype are the FKCONSTR_ACTION_xxx * constants defined in parsenodes.h. Valid values for confmatchtype are * the FKCONSTR_MATCH_xxx constants defined in parsenodes.h. */ #endif /* PG_CONSTRAINT_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_control.h000066400000000000000000000220151413137616400242740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_control.h * The system control file "pg_control" is not a heap relation. * However, we define it here so that the format is documented. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_control.h * *------------------------------------------------------------------------- */ #ifndef PG_CONTROL_H #define PG_CONTROL_H #include "access/transam.h" #include "access/xlogdefs.h" #include "pgtime.h" /* for pg_time_t */ #include "port/pg_crc32c.h" /* Version identifier for this pg_control format */ #define PG_CONTROL_VERSION 1300 /* Nonce key length, see below */ #define MOCK_AUTH_NONCE_LEN 32 /* * Body of CheckPoint XLOG records. This is declared here because we keep * a copy of the latest one in pg_control for possible disaster recovery. * Changing this struct requires a PG_CONTROL_VERSION bump. */ typedef struct CheckPoint { XLogRecPtr redo; /* next RecPtr available when we began to * create CheckPoint (i.e. REDO start point) */ TimeLineID ThisTimeLineID; /* current TLI */ TimeLineID PrevTimeLineID; /* previous TLI, if this record begins a new * timeline (equals ThisTimeLineID otherwise) */ bool fullPageWrites; /* current full_page_writes */ FullTransactionId nextFullXid; /* next free full transaction ID */ Oid nextOid; /* next free OID */ MultiXactId nextMulti; /* next free MultiXactId */ MultiXactOffset nextMultiOffset; /* next free MultiXact offset */ TransactionId oldestXid; /* cluster-wide minimum datfrozenxid */ Oid oldestXidDB; /* database with minimum datfrozenxid */ MultiXactId oldestMulti; /* cluster-wide minimum datminmxid */ Oid oldestMultiDB; /* database with minimum datminmxid */ pg_time_t time; /* time stamp of checkpoint */ TransactionId oldestCommitTsXid; /* oldest Xid with valid commit * timestamp */ TransactionId newestCommitTsXid; /* newest Xid with valid commit * timestamp */ /* * Oldest XID still running. This is only needed to initialize hot standby * mode from an online checkpoint, so we only bother calculating this for * online checkpoints and only when wal_level is replica. Otherwise it's * set to InvalidTransactionId. */ TransactionId oldestActiveXid; } CheckPoint; /* XLOG info values for XLOG rmgr */ #define XLOG_CHECKPOINT_SHUTDOWN 0x00 #define XLOG_CHECKPOINT_ONLINE 0x10 #define XLOG_NOOP 0x20 #define XLOG_NEXTOID 0x30 #define XLOG_SWITCH 0x40 #define XLOG_BACKUP_END 0x50 #define XLOG_PARAMETER_CHANGE 0x60 #define XLOG_RESTORE_POINT 0x70 #define XLOG_FPW_CHANGE 0x80 #define XLOG_END_OF_RECOVERY 0x90 #define XLOG_FPI_FOR_HINT 0xA0 #define XLOG_FPI 0xB0 /* * System status indicator. Note this is stored in pg_control; if you change * it, you must bump PG_CONTROL_VERSION */ typedef enum DBState { DB_STARTUP = 0, DB_SHUTDOWNED, DB_SHUTDOWNED_IN_RECOVERY, DB_SHUTDOWNING, DB_IN_CRASH_RECOVERY, DB_IN_ARCHIVE_RECOVERY, DB_IN_PRODUCTION } DBState; /* * Contents of pg_control. */ typedef struct ControlFileData { /* * Unique system identifier --- to ensure we match up xlog files with the * installation that produced them. */ uint64 system_identifier; /* * Version identifier information. Keep these fields at the same offset, * especially pg_control_version; they won't be real useful if they move * around. (For historical reasons they must be 8 bytes into the file * rather than immediately at the front.) * * pg_control_version identifies the format of pg_control itself. * catalog_version_no identifies the format of the system catalogs. * * There are additional version identifiers in individual files; for * example, WAL logs contain per-page magic numbers that can serve as * version cues for the WAL log. */ uint32 pg_control_version; /* PG_CONTROL_VERSION */ uint32 catalog_version_no; /* see catversion.h */ /* * System status data */ DBState state; /* see enum above */ pg_time_t time; /* time stamp of last pg_control update */ XLogRecPtr checkPoint; /* last check point record ptr */ CheckPoint checkPointCopy; /* copy of last check point record */ XLogRecPtr unloggedLSN; /* current fake LSN value, for unlogged rels */ /* * These two values determine the minimum point we must recover up to * before starting up: * * minRecoveryPoint is updated to the latest replayed LSN whenever we * flush a data change during archive recovery. That guards against * starting archive recovery, aborting it, and restarting with an earlier * stop location. If we've already flushed data changes from WAL record X * to disk, we mustn't start up until we reach X again. Zero when not * doing archive recovery. * * backupStartPoint is the redo pointer of the backup start checkpoint, if * we are recovering from an online backup and haven't reached the end of * backup yet. It is reset to zero when the end of backup is reached, and * we mustn't start up before that. A boolean would suffice otherwise, but * we use the redo pointer as a cross-check when we see an end-of-backup * record, to make sure the end-of-backup record corresponds the base * backup we're recovering from. * * backupEndPoint is the backup end location, if we are recovering from an * online backup which was taken from the standby and haven't reached the * end of backup yet. It is initialized to the minimum recovery point in * pg_control which was backed up last. It is reset to zero when the end * of backup is reached, and we mustn't start up before that. * * If backupEndRequired is true, we know for sure that we're restoring * from a backup, and must see a backup-end record before we can safely * start up. If it's false, but backupStartPoint is set, a backup_label * file was found at startup but it may have been a leftover from a stray * pg_start_backup() call, not accompanied by pg_stop_backup(). */ XLogRecPtr minRecoveryPoint; TimeLineID minRecoveryPointTLI; XLogRecPtr backupStartPoint; XLogRecPtr backupEndPoint; bool backupEndRequired; /* * Parameter settings that determine if the WAL can be used for archival * or hot standby. */ int wal_level; bool wal_log_hints; int MaxConnections; int max_worker_processes; int max_wal_senders; int max_prepared_xacts; int max_locks_per_xact; bool track_commit_timestamp; /* * This data is used to check for hardware-architecture compatibility of * the database and the backend executable. We need not check endianness * explicitly, since the pg_control version will surely look wrong to a * machine of different endianness, but we do need to worry about MAXALIGN * and floating-point format. (Note: storage layout nominally also * depends on SHORTALIGN and INTALIGN, but in practice these are the same * on all architectures of interest.) * * Testing just one double value is not a very bulletproof test for * floating-point compatibility, but it will catch most cases. */ uint32 maxAlign; /* alignment requirement for tuples */ double floatFormat; /* constant 1234567.0 */ #define FLOATFORMAT_VALUE 1234567.0 /* * This data is used to make sure that configuration of this database is * compatible with the backend executable. */ uint32 blcksz; /* data block size for this DB */ uint32 relseg_size; /* blocks per segment of large relation */ uint32 xlog_blcksz; /* block size within WAL files */ uint32 xlog_seg_size; /* size of each WAL segment */ uint32 nameDataLen; /* catalog name field width */ uint32 indexMaxKeys; /* max number of columns in an index */ uint32 toast_max_chunk_size; /* chunk size in TOAST tables */ uint32 loblksize; /* chunk size in pg_largeobject */ bool float8ByVal; /* float8, int8, etc pass-by-value? */ /* Are data pages protected by checksums? Zero if no checksum version */ uint32 data_checksum_version; /* * Random nonce, used in authentication requests that need to proceed * based on values that are cluster-unique, like a SASL exchange that * failed at an early stage. */ char mock_authentication_nonce[MOCK_AUTH_NONCE_LEN]; /* CRC of all above ... MUST BE LAST! */ pg_crc32c crc; } ControlFileData; /* * Maximum safe value of sizeof(ControlFileData). For reliability's sake, * it's critical that pg_control updates be atomic writes. That generally * means the active data can't be more than one disk sector, which is 512 * bytes on common hardware. Be very careful about raising this limit. */ #define PG_CONTROL_MAX_SAFE_SIZE 512 /* * Physical size of the pg_control file. Note that this is considerably * bigger than the actually used size (ie, sizeof(ControlFileData)). * The idea is to keep the physical size constant independent of format * changes, so that ReadControlFile will deliver a suitable wrong-version * message instead of a read error if it's looking at an incompatible file. */ #define PG_CONTROL_FILE_SIZE 8192 #endif /* PG_CONTROL_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_conversion.h000066400000000000000000000037171413137616400250110ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_conversion.h * definition of the "conversion" system catalog (pg_conversion) * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_conversion.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_CONVERSION_H #define PG_CONVERSION_H #include "catalog/genbki.h" #include "catalog/objectaddress.h" #include "catalog/pg_conversion_d.h" /* ---------------- * pg_conversion definition. cpp turns this into * typedef struct FormData_pg_conversion * ---------------- */ CATALOG(pg_conversion,2607,ConversionRelationId) { /* oid */ Oid oid; /* name of the conversion */ NameData conname; /* namespace that the conversion belongs to */ Oid connamespace BKI_DEFAULT(PGNSP); /* owner of the conversion */ Oid conowner BKI_DEFAULT(PGUID); /* FOR encoding id */ int32 conforencoding BKI_LOOKUP(encoding); /* TO encoding id */ int32 contoencoding BKI_LOOKUP(encoding); /* OID of the conversion proc */ regproc conproc BKI_LOOKUP(pg_proc); /* true if this is a default conversion */ bool condefault BKI_DEFAULT(t); } FormData_pg_conversion; /* ---------------- * Form_pg_conversion corresponds to a pointer to a tuple with * the format of pg_conversion relation. * ---------------- */ typedef FormData_pg_conversion *Form_pg_conversion; extern ObjectAddress ConversionCreate(const char *conname, Oid connamespace, Oid conowner, int32 conforencoding, int32 contoencoding, Oid conproc, bool def); extern void RemoveConversionById(Oid conversionOid); extern Oid FindDefaultConversion(Oid connamespace, int32 for_encoding, int32 to_encoding); #endif /* PG_CONVERSION_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_conversion_d.h000066400000000000000000000020001413137616400252740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_conversion_d.h * Macro definitions for pg_conversion * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_CONVERSION_D_H #define PG_CONVERSION_D_H #define ConversionRelationId 2607 #define Anum_pg_conversion_oid 1 #define Anum_pg_conversion_conname 2 #define Anum_pg_conversion_connamespace 3 #define Anum_pg_conversion_conowner 4 #define Anum_pg_conversion_conforencoding 5 #define Anum_pg_conversion_contoencoding 6 #define Anum_pg_conversion_conproc 7 #define Anum_pg_conversion_condefault 8 #define Natts_pg_conversion 8 #endif /* PG_CONVERSION_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_depend.h000066400000000000000000000045451413137616400240630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_depend.h * definition of the "dependency" system catalog (pg_depend) * * pg_depend has no preloaded contents, so there is no pg_depend.dat * file; system-defined dependencies are loaded into it during a late stage * of the initdb process. * * NOTE: we do not represent all possible dependency pairs in pg_depend; * for example, there's not much value in creating an explicit dependency * from an attribute to its relation. Usually we make a dependency for * cases where the relationship is conditional rather than essential * (for example, not all triggers are dependent on constraints, but all * attributes are dependent on relations) or where the dependency is not * convenient to find from the contents of other catalogs. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_depend.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_DEPEND_H #define PG_DEPEND_H #include "catalog/genbki.h" #include "catalog/pg_depend_d.h" /* ---------------- * pg_depend definition. cpp turns this into * typedef struct FormData_pg_depend * ---------------- */ CATALOG(pg_depend,2608,DependRelationId) { /* * Identification of the dependent (referencing) object. * * These fields are all zeroes for a DEPENDENCY_PIN entry. */ Oid classid; /* OID of table containing object */ Oid objid; /* OID of object itself */ int32 objsubid; /* column number, or 0 if not used */ /* * Identification of the independent (referenced) object. */ Oid refclassid; /* OID of table containing object */ Oid refobjid; /* OID of object itself */ int32 refobjsubid; /* column number, or 0 if not used */ /* * Precise semantics of the relationship are specified by the deptype * field. See DependencyType in catalog/dependency.h. */ char deptype; /* see codes in dependency.h */ } FormData_pg_depend; /* ---------------- * Form_pg_depend corresponds to a pointer to a row with * the format of pg_depend relation. * ---------------- */ typedef FormData_pg_depend *Form_pg_depend; #endif /* PG_DEPEND_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_depend_d.h000066400000000000000000000016301413137616400243560ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_depend_d.h * Macro definitions for pg_depend * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_DEPEND_D_H #define PG_DEPEND_D_H #define DependRelationId 2608 #define Anum_pg_depend_classid 1 #define Anum_pg_depend_objid 2 #define Anum_pg_depend_objsubid 3 #define Anum_pg_depend_refclassid 4 #define Anum_pg_depend_refobjid 5 #define Anum_pg_depend_refobjsubid 6 #define Anum_pg_depend_deptype 7 #define Natts_pg_depend 7 #endif /* PG_DEPEND_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_event_trigger.h000066400000000000000000000030121413137616400254540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_event_trigger.h * definition of the "event trigger" system catalog (pg_event_trigger) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_event_trigger.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_EVENT_TRIGGER_H #define PG_EVENT_TRIGGER_H #include "catalog/genbki.h" #include "catalog/pg_event_trigger_d.h" /* ---------------- * pg_event_trigger definition. cpp turns this into * typedef struct FormData_pg_event_trigger * ---------------- */ CATALOG(pg_event_trigger,3466,EventTriggerRelationId) { Oid oid; /* oid */ NameData evtname; /* trigger's name */ NameData evtevent; /* trigger's event */ Oid evtowner; /* trigger's owner */ Oid evtfoid; /* OID of function to be called */ char evtenabled; /* trigger's firing configuration WRT * session_replication_role */ #ifdef CATALOG_VARLEN text evttags[1]; /* command TAGs this event trigger targets */ #endif } FormData_pg_event_trigger; /* ---------------- * Form_pg_event_trigger corresponds to a pointer to a tuple with * the format of pg_event_trigger relation. * ---------------- */ typedef FormData_pg_event_trigger *Form_pg_event_trigger; #endif /* PG_EVENT_TRIGGER_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_event_trigger_d.h000066400000000000000000000017631413137616400257720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_event_trigger_d.h * Macro definitions for pg_event_trigger * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_EVENT_TRIGGER_D_H #define PG_EVENT_TRIGGER_D_H #define EventTriggerRelationId 3466 #define Anum_pg_event_trigger_oid 1 #define Anum_pg_event_trigger_evtname 2 #define Anum_pg_event_trigger_evtevent 3 #define Anum_pg_event_trigger_evtowner 4 #define Anum_pg_event_trigger_evtfoid 5 #define Anum_pg_event_trigger_evtenabled 6 #define Anum_pg_event_trigger_evttags 7 #define Natts_pg_event_trigger 7 #endif /* PG_EVENT_TRIGGER_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_index.h000066400000000000000000000054731413137616400237340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_index.h * definition of the "index" system catalog (pg_index) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_index.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_INDEX_H #define PG_INDEX_H #include "catalog/genbki.h" #include "catalog/pg_index_d.h" /* ---------------- * pg_index definition. cpp turns this into * typedef struct FormData_pg_index. * ---------------- */ CATALOG(pg_index,2610,IndexRelationId) BKI_SCHEMA_MACRO { Oid indexrelid; /* OID of the index */ Oid indrelid; /* OID of the relation it indexes */ int16 indnatts; /* total number of columns in index */ int16 indnkeyatts; /* number of key columns in index */ bool indisunique; /* is this a unique index? */ bool indisprimary; /* is this index for primary key? */ bool indisexclusion; /* is this index for exclusion constraint? */ bool indimmediate; /* is uniqueness enforced immediately? */ bool indisclustered; /* is this the index last clustered by? */ bool indisvalid; /* is this index valid for use by queries? */ bool indcheckxmin; /* must we wait for xmin to be old? */ bool indisready; /* is this index ready for inserts? */ bool indislive; /* is this index alive at all? */ bool indisreplident; /* is this index the identity for replication? */ /* variable-length fields start here, but we allow direct access to indkey */ int2vector indkey; /* column numbers of indexed cols, or 0 */ #ifdef CATALOG_VARLEN oidvector indcollation; /* collation identifiers */ oidvector indclass; /* opclass identifiers */ int2vector indoption; /* per-column flags (AM-specific meanings) */ pg_node_tree indexprs; /* expression trees for index attributes that * are not simple column references; one for * each zero entry in indkey[] */ pg_node_tree indpred; /* expression tree for predicate, if a partial * index; else NULL */ #endif } FormData_pg_index; /* ---------------- * Form_pg_index corresponds to a pointer to a tuple with * the format of pg_index relation. * ---------------- */ typedef FormData_pg_index *Form_pg_index; #ifdef EXPOSE_TO_CLIENT_CODE /* * Index AMs that support ordered scans must support these two indoption * bits. Otherwise, the content of the per-column indoption fields is * open for future definition. */ #define INDOPTION_DESC 0x0001 /* values are in reverse order */ #define INDOPTION_NULLS_FIRST 0x0002 /* NULLs are first instead of last */ #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_INDEX_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_index_d.h000066400000000000000000000032651413137616400242340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_index_d.h * Macro definitions for pg_index * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_INDEX_D_H #define PG_INDEX_D_H #define IndexRelationId 2610 #define Anum_pg_index_indexrelid 1 #define Anum_pg_index_indrelid 2 #define Anum_pg_index_indnatts 3 #define Anum_pg_index_indnkeyatts 4 #define Anum_pg_index_indisunique 5 #define Anum_pg_index_indisprimary 6 #define Anum_pg_index_indisexclusion 7 #define Anum_pg_index_indimmediate 8 #define Anum_pg_index_indisclustered 9 #define Anum_pg_index_indisvalid 10 #define Anum_pg_index_indcheckxmin 11 #define Anum_pg_index_indisready 12 #define Anum_pg_index_indislive 13 #define Anum_pg_index_indisreplident 14 #define Anum_pg_index_indkey 15 #define Anum_pg_index_indcollation 16 #define Anum_pg_index_indclass 17 #define Anum_pg_index_indoption 18 #define Anum_pg_index_indexprs 19 #define Anum_pg_index_indpred 20 #define Natts_pg_index 20 /* * Index AMs that support ordered scans must support these two indoption * bits. Otherwise, the content of the per-column indoption fields is * open for future definition. */ #define INDOPTION_DESC 0x0001 /* values are in reverse order */ #define INDOPTION_NULLS_FIRST 0x0002 /* NULLs are first instead of last */ #endif /* PG_INDEX_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_language.h000066400000000000000000000033151413137616400244010ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_language.h * definition of the "language" system catalog (pg_language) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_language.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_LANGUAGE_H #define PG_LANGUAGE_H #include "catalog/genbki.h" #include "catalog/pg_language_d.h" /* ---------------- * pg_language definition. cpp turns this into * typedef struct FormData_pg_language * ---------------- */ CATALOG(pg_language,2612,LanguageRelationId) { Oid oid; /* oid */ /* Language name */ NameData lanname; /* Language's owner */ Oid lanowner BKI_DEFAULT(PGUID); /* Is a procedural language */ bool lanispl BKI_DEFAULT(f); /* PL is trusted */ bool lanpltrusted BKI_DEFAULT(f); /* Call handler, if it's a PL */ Oid lanplcallfoid BKI_DEFAULT(0) BKI_LOOKUP(pg_proc); /* Optional anonymous-block handler function */ Oid laninline BKI_DEFAULT(0) BKI_LOOKUP(pg_proc); /* Optional validation function */ Oid lanvalidator BKI_DEFAULT(0) BKI_LOOKUP(pg_proc); #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* Access privileges */ aclitem lanacl[1] BKI_DEFAULT(_null_); #endif } FormData_pg_language; /* ---------------- * Form_pg_language corresponds to a pointer to a tuple with * the format of pg_language relation. * ---------------- */ typedef FormData_pg_language *Form_pg_language; #endif /* PG_LANGUAGE_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_language_d.h000066400000000000000000000021171413137616400247030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_language_d.h * Macro definitions for pg_language * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_LANGUAGE_D_H #define PG_LANGUAGE_D_H #define LanguageRelationId 2612 #define Anum_pg_language_oid 1 #define Anum_pg_language_lanname 2 #define Anum_pg_language_lanowner 3 #define Anum_pg_language_lanispl 4 #define Anum_pg_language_lanpltrusted 5 #define Anum_pg_language_lanplcallfoid 6 #define Anum_pg_language_laninline 7 #define Anum_pg_language_lanvalidator 8 #define Anum_pg_language_lanacl 9 #define Natts_pg_language 9 #define INTERNALlanguageId 12 #define ClanguageId 13 #define SQLlanguageId 14 #endif /* PG_LANGUAGE_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_namespace.h000066400000000000000000000031111413137616400245440ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_namespace.h * definition of the "namespace" system catalog (pg_namespace) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_namespace.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_NAMESPACE_H #define PG_NAMESPACE_H #include "catalog/genbki.h" #include "catalog/pg_namespace_d.h" #include "utils/acl.h" /* ---------------------------------------------------------------- * pg_namespace definition. * * cpp turns this into typedef struct FormData_pg_namespace * * nspname name of the namespace * nspowner owner (creator) of the namespace * nspacl access privilege list * ---------------------------------------------------------------- */ CATALOG(pg_namespace,2615,NamespaceRelationId) { Oid oid; /* oid */ NameData nspname; Oid nspowner; #ifdef CATALOG_VARLEN /* variable-length fields start here */ aclitem nspacl[1]; #endif } FormData_pg_namespace; /* ---------------- * Form_pg_namespace corresponds to a pointer to a tuple with * the format of pg_namespace relation. * ---------------- */ typedef FormData_pg_namespace *Form_pg_namespace; /* * prototypes for functions in pg_namespace.c */ extern Oid NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp); #endif /* PG_NAMESPACE_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_namespace_d.h000066400000000000000000000016521413137616400250570ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_namespace_d.h * Macro definitions for pg_namespace * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_NAMESPACE_D_H #define PG_NAMESPACE_D_H #define NamespaceRelationId 2615 #define Anum_pg_namespace_oid 1 #define Anum_pg_namespace_nspname 2 #define Anum_pg_namespace_nspowner 3 #define Anum_pg_namespace_nspacl 4 #define Natts_pg_namespace 4 #define PG_CATALOG_NAMESPACE 11 #define PG_TOAST_NAMESPACE 99 #define PG_PUBLIC_NAMESPACE 2200 #endif /* PG_NAMESPACE_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_opclass.h000066400000000000000000000054661413137616400242730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_opclass.h * definition of the "operator class" system catalog (pg_opclass) * * The primary key for this table is --- * that is, there is a row for each valid combination of opclass name and * index access method type. This row specifies the expected input data type * for the opclass (the type of the heap column, or the expression output type * in the case of an index expression). Note that types binary-coercible to * the specified type will be accepted too. * * For a given pair, there can be at most one row that * has opcdefault = true; this row is the default opclass for such data in * such an index. (This is not currently enforced by an index, because we * don't support partial indexes on system catalogs.) * * Normally opckeytype = InvalidOid (zero), indicating that the data stored * in the index is the same as the data in the indexed column. If opckeytype * is nonzero then it indicates that a conversion step is needed to produce * the stored index data, which will be of type opckeytype (which might be * the same or different from the input datatype). Performing such a * conversion is the responsibility of the index access method --- not all * AMs support this. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_opclass.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_OPCLASS_H #define PG_OPCLASS_H #include "catalog/genbki.h" #include "catalog/pg_opclass_d.h" /* ---------------- * pg_opclass definition. cpp turns this into * typedef struct FormData_pg_opclass * ---------------- */ CATALOG(pg_opclass,2616,OperatorClassRelationId) { Oid oid; /* oid */ /* index access method opclass is for */ Oid opcmethod BKI_LOOKUP(pg_am); /* name of this opclass */ NameData opcname; /* namespace of this opclass */ Oid opcnamespace BKI_DEFAULT(PGNSP); /* opclass owner */ Oid opcowner BKI_DEFAULT(PGUID); /* containing operator family */ Oid opcfamily BKI_LOOKUP(pg_opfamily); /* type of data indexed by opclass */ Oid opcintype BKI_LOOKUP(pg_type); /* T if opclass is default for opcintype */ bool opcdefault BKI_DEFAULT(t); /* type of data in index, or InvalidOid */ Oid opckeytype BKI_DEFAULT(0) BKI_LOOKUP(pg_type); } FormData_pg_opclass; /* ---------------- * Form_pg_opclass corresponds to a pointer to a tuple with * the format of pg_opclass relation. * ---------------- */ typedef FormData_pg_opclass *Form_pg_opclass; #endif /* PG_OPCLASS_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_opclass_d.h000066400000000000000000000027041413137616400245660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_opclass_d.h * Macro definitions for pg_opclass * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_OPCLASS_D_H #define PG_OPCLASS_D_H #define OperatorClassRelationId 2616 #define Anum_pg_opclass_oid 1 #define Anum_pg_opclass_opcmethod 2 #define Anum_pg_opclass_opcname 3 #define Anum_pg_opclass_opcnamespace 4 #define Anum_pg_opclass_opcowner 5 #define Anum_pg_opclass_opcfamily 6 #define Anum_pg_opclass_opcintype 7 #define Anum_pg_opclass_opcdefault 8 #define Anum_pg_opclass_opckeytype 9 #define Natts_pg_opclass 9 #define DATE_BTREE_OPS_OID 3122 #define FLOAT8_BTREE_OPS_OID 3123 #define INT2_BTREE_OPS_OID 1979 #define INT4_BTREE_OPS_OID 1978 #define INT8_BTREE_OPS_OID 3124 #define NUMERIC_BTREE_OPS_OID 3125 #define OID_BTREE_OPS_OID 1981 #define TEXT_BTREE_OPS_OID 3126 #define TIMESTAMPTZ_BTREE_OPS_OID 3127 #define TIMESTAMP_BTREE_OPS_OID 3128 #define TEXT_BTREE_PATTERN_OPS_OID 4217 #define VARCHAR_BTREE_PATTERN_OPS_OID 4218 #define BPCHAR_BTREE_PATTERN_OPS_OID 4219 #endif /* PG_OPCLASS_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_operator.h000066400000000000000000000052161413137616400244530ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_operator.h * definition of the "operator" system catalog (pg_operator) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_operator.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_OPERATOR_H #define PG_OPERATOR_H #include "catalog/genbki.h" #include "catalog/objectaddress.h" #include "catalog/pg_operator_d.h" #include "nodes/pg_list.h" /* ---------------- * pg_operator definition. cpp turns this into * typedef struct FormData_pg_operator * ---------------- */ CATALOG(pg_operator,2617,OperatorRelationId) { Oid oid; /* oid */ /* name of operator */ NameData oprname; /* OID of namespace containing this oper */ Oid oprnamespace BKI_DEFAULT(PGNSP); /* operator owner */ Oid oprowner BKI_DEFAULT(PGUID); /* 'l', 'r', or 'b' */ char oprkind BKI_DEFAULT(b); /* can be used in merge join? */ bool oprcanmerge BKI_DEFAULT(f); /* can be used in hash join? */ bool oprcanhash BKI_DEFAULT(f); /* left arg type, or 0 if 'l' oprkind */ Oid oprleft BKI_LOOKUP(pg_type); /* right arg type, or 0 if 'r' oprkind */ Oid oprright BKI_LOOKUP(pg_type); /* result datatype */ Oid oprresult BKI_LOOKUP(pg_type); /* OID of commutator oper, or 0 if none */ Oid oprcom BKI_DEFAULT(0) BKI_LOOKUP(pg_operator); /* OID of negator oper, or 0 if none */ Oid oprnegate BKI_DEFAULT(0) BKI_LOOKUP(pg_operator); /* OID of underlying function */ regproc oprcode BKI_LOOKUP(pg_proc); /* OID of restriction estimator, or 0 */ regproc oprrest BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* OID of join estimator, or 0 */ regproc oprjoin BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); } FormData_pg_operator; /* ---------------- * Form_pg_operator corresponds to a pointer to a tuple with * the format of pg_operator relation. * ---------------- */ typedef FormData_pg_operator *Form_pg_operator; extern ObjectAddress OperatorCreate(const char *operatorName, Oid operatorNamespace, Oid leftTypeId, Oid rightTypeId, Oid procedureId, List *commutatorName, List *negatorName, Oid restrictionId, Oid joinId, bool canMerge, bool canHash); extern ObjectAddress makeOperatorDependencies(HeapTuple tuple, bool isUpdate); extern void OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete); #endif /* PG_OPERATOR_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_operator_d.h000066400000000000000000000064471413137616400247650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_operator_d.h * Macro definitions for pg_operator * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_OPERATOR_D_H #define PG_OPERATOR_D_H #define OperatorRelationId 2617 #define Anum_pg_operator_oid 1 #define Anum_pg_operator_oprname 2 #define Anum_pg_operator_oprnamespace 3 #define Anum_pg_operator_oprowner 4 #define Anum_pg_operator_oprkind 5 #define Anum_pg_operator_oprcanmerge 6 #define Anum_pg_operator_oprcanhash 7 #define Anum_pg_operator_oprleft 8 #define Anum_pg_operator_oprright 9 #define Anum_pg_operator_oprresult 10 #define Anum_pg_operator_oprcom 11 #define Anum_pg_operator_oprnegate 12 #define Anum_pg_operator_oprcode 13 #define Anum_pg_operator_oprrest 14 #define Anum_pg_operator_oprjoin 15 #define Natts_pg_operator 15 #define BooleanNotEqualOperator 85 #define BooleanEqualOperator 91 #define Int4EqualOperator 96 #define Int4LessOperator 97 #define TextEqualOperator 98 #define NameEqualTextOperator 254 #define NameLessTextOperator 255 #define NameGreaterEqualTextOperator 257 #define TIDEqualOperator 387 #define TIDLessOperator 2799 #define Int8LessOperator 412 #define OID_NAME_REGEXEQ_OP 639 #define OID_TEXT_REGEXEQ_OP 641 #define TextLessOperator 664 #define TextGreaterEqualOperator 667 #define Float8LessOperator 672 #define BpcharEqualOperator 1054 #define OID_BPCHAR_REGEXEQ_OP 1055 #define BpcharLessOperator 1058 #define BpcharGreaterEqualOperator 1061 #define ARRAY_EQ_OP 1070 #define ARRAY_LT_OP 1072 #define ARRAY_GT_OP 1073 #define OID_NAME_LIKE_OP 1207 #define OID_TEXT_LIKE_OP 1209 #define OID_BPCHAR_LIKE_OP 1211 #define OID_NAME_ICREGEXEQ_OP 1226 #define OID_TEXT_ICREGEXEQ_OP 1228 #define OID_BPCHAR_ICREGEXEQ_OP 1234 #define OID_INET_SUB_OP 931 #define OID_INET_SUBEQ_OP 932 #define OID_INET_SUP_OP 933 #define OID_INET_SUPEQ_OP 934 #define OID_INET_OVERLAP_OP 3552 #define OID_NAME_ICLIKE_OP 1625 #define OID_TEXT_ICLIKE_OP 1627 #define OID_BPCHAR_ICLIKE_OP 1629 #define ByteaEqualOperator 1955 #define ByteaLessOperator 1957 #define ByteaGreaterEqualOperator 1960 #define OID_BYTEA_LIKE_OP 2016 #define TextPatternLessOperator 2314 #define TextPatternGreaterEqualOperator 2317 #define BpcharPatternLessOperator 2326 #define BpcharPatternGreaterEqualOperator 2329 #define OID_ARRAY_OVERLAP_OP 2750 #define OID_ARRAY_CONTAINS_OP 2751 #define OID_ARRAY_CONTAINED_OP 2752 #define RECORD_EQ_OP 2988 #define RECORD_LT_OP 2990 #define RECORD_GT_OP 2991 #define OID_RANGE_LESS_OP 3884 #define OID_RANGE_LESS_EQUAL_OP 3885 #define OID_RANGE_GREATER_EQUAL_OP 3886 #define OID_RANGE_GREATER_OP 3887 #define OID_RANGE_OVERLAP_OP 3888 #define OID_RANGE_CONTAINS_ELEM_OP 3889 #define OID_RANGE_CONTAINS_OP 3890 #define OID_RANGE_ELEM_CONTAINED_OP 3891 #define OID_RANGE_CONTAINED_OP 3892 #define OID_RANGE_LEFT_OP 3893 #define OID_RANGE_RIGHT_OP 3894 #define OID_RANGE_OVERLAPS_LEFT_OP 3895 #define OID_RANGE_OVERLAPS_RIGHT_OP 3896 #endif /* PG_OPERATOR_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_opfamily.h000066400000000000000000000030141413137616400244320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_opfamily.h * definition of the "operator family" system catalog (pg_opfamily) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_opfamily.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_OPFAMILY_H #define PG_OPFAMILY_H #include "catalog/genbki.h" #include "catalog/pg_opfamily_d.h" /* ---------------- * pg_opfamily definition. cpp turns this into * typedef struct FormData_pg_opfamily * ---------------- */ CATALOG(pg_opfamily,2753,OperatorFamilyRelationId) { Oid oid; /* oid */ /* index access method opfamily is for */ Oid opfmethod BKI_LOOKUP(pg_am); /* name of this opfamily */ NameData opfname; /* namespace of this opfamily */ Oid opfnamespace BKI_DEFAULT(PGNSP); /* opfamily owner */ Oid opfowner BKI_DEFAULT(PGUID); } FormData_pg_opfamily; /* ---------------- * Form_pg_opfamily corresponds to a pointer to a tuple with * the format of pg_opfamily relation. * ---------------- */ typedef FormData_pg_opfamily *Form_pg_opfamily; #ifdef EXPOSE_TO_CLIENT_CODE #define IsBooleanOpfamily(opfamily) \ ((opfamily) == BOOL_BTREE_FAM_OID || (opfamily) == BOOL_HASH_FAM_OID) #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_OPFAMILY_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_opfamily_d.h000066400000000000000000000025271413137616400247450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_opfamily_d.h * Macro definitions for pg_opfamily * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_OPFAMILY_D_H #define PG_OPFAMILY_D_H #define OperatorFamilyRelationId 2753 #define Anum_pg_opfamily_oid 1 #define Anum_pg_opfamily_opfmethod 2 #define Anum_pg_opfamily_opfname 3 #define Anum_pg_opfamily_opfnamespace 4 #define Anum_pg_opfamily_opfowner 5 #define Natts_pg_opfamily 5 #define IsBooleanOpfamily(opfamily) \ ((opfamily) == BOOL_BTREE_FAM_OID || (opfamily) == BOOL_HASH_FAM_OID) #define BOOL_BTREE_FAM_OID 424 #define BPCHAR_BTREE_FAM_OID 426 #define BYTEA_BTREE_FAM_OID 428 #define NETWORK_BTREE_FAM_OID 1974 #define INTEGER_BTREE_FAM_OID 1976 #define OID_BTREE_FAM_OID 1989 #define TEXT_BTREE_FAM_OID 1994 #define TEXT_PATTERN_BTREE_FAM_OID 2095 #define BPCHAR_PATTERN_BTREE_FAM_OID 2097 #define BOOL_HASH_FAM_OID 2222 #define TEXT_SPGIST_FAM_OID 4017 #endif /* PG_OPFAMILY_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_partitioned_table.h000066400000000000000000000042461413137616400263130ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_partitioned_table.h * definition of the "partitioned table" system catalog * (pg_partitioned_table) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_partitioned_table.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_PARTITIONED_TABLE_H #define PG_PARTITIONED_TABLE_H #include "catalog/genbki.h" #include "catalog/pg_partitioned_table_d.h" /* ---------------- * pg_partitioned_table definition. cpp turns this into * typedef struct FormData_pg_partitioned_table * ---------------- */ CATALOG(pg_partitioned_table,3350,PartitionedRelationId) { Oid partrelid; /* partitioned table oid */ char partstrat; /* partitioning strategy */ int16 partnatts; /* number of partition key columns */ Oid partdefid; /* default partition oid; InvalidOid if there * isn't one */ /* * variable-length fields start here, but we allow direct access to * partattrs via the C struct. That's because the first variable-length * field of a heap tuple can be reliably accessed using its C struct * offset, as previous fields are all non-nullable fixed-length fields. */ int2vector partattrs; /* each member of the array is the attribute * number of a partition key column, or 0 if * the column is actually an expression */ #ifdef CATALOG_VARLEN oidvector partclass; /* operator class to compare keys */ oidvector partcollation; /* user-specified collation for keys */ pg_node_tree partexprs; /* list of expressions in the partition key; * one item for each zero entry in partattrs[] */ #endif } FormData_pg_partitioned_table; /* ---------------- * Form_pg_partitioned_table corresponds to a pointer to a tuple with * the format of pg_partitioned_table relation. * ---------------- */ typedef FormData_pg_partitioned_table *Form_pg_partitioned_table; #endif /* PG_PARTITIONED_TABLE_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_partitioned_table_d.h000066400000000000000000000021451413137616400266120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_partitioned_table_d.h * Macro definitions for pg_partitioned_table * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_PARTITIONED_TABLE_D_H #define PG_PARTITIONED_TABLE_D_H #define PartitionedRelationId 3350 #define Anum_pg_partitioned_table_partrelid 1 #define Anum_pg_partitioned_table_partstrat 2 #define Anum_pg_partitioned_table_partnatts 3 #define Anum_pg_partitioned_table_partdefid 4 #define Anum_pg_partitioned_table_partattrs 5 #define Anum_pg_partitioned_table_partclass 6 #define Anum_pg_partitioned_table_partcollation 7 #define Anum_pg_partitioned_table_partexprs 8 #define Natts_pg_partitioned_table 8 #endif /* PG_PARTITIONED_TABLE_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_proc.h000066400000000000000000000137261413137616400235700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_proc.h * definition of the "procedure" system catalog (pg_proc) * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_proc.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_PROC_H #define PG_PROC_H #include "catalog/genbki.h" #include "catalog/objectaddress.h" #include "catalog/pg_proc_d.h" #include "nodes/pg_list.h" /* ---------------- * pg_proc definition. cpp turns this into * typedef struct FormData_pg_proc * ---------------- */ CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,ProcedureRelation_Rowtype_Id) BKI_SCHEMA_MACRO { Oid oid; /* oid */ /* procedure name */ NameData proname; /* OID of namespace containing this proc */ Oid pronamespace BKI_DEFAULT(PGNSP); /* procedure owner */ Oid proowner BKI_DEFAULT(PGUID); /* OID of pg_language entry */ Oid prolang BKI_DEFAULT(internal) BKI_LOOKUP(pg_language); /* estimated execution cost */ float4 procost BKI_DEFAULT(1); /* estimated # of rows out (if proretset) */ float4 prorows BKI_DEFAULT(0); /* element type of variadic array, or 0 */ Oid provariadic BKI_DEFAULT(0) BKI_LOOKUP(pg_type); /* planner support function for this function, or 0 if none */ regproc prosupport BKI_DEFAULT(0) BKI_LOOKUP(pg_proc); /* see PROKIND_ categories below */ char prokind BKI_DEFAULT(f); /* security definer */ bool prosecdef BKI_DEFAULT(f); /* is it a leak-proof function? */ bool proleakproof BKI_DEFAULT(f); /* strict with respect to NULLs? */ bool proisstrict BKI_DEFAULT(t); /* returns a set? */ bool proretset BKI_DEFAULT(f); /* see PROVOLATILE_ categories below */ char provolatile BKI_DEFAULT(i); /* see PROPARALLEL_ categories below */ char proparallel BKI_DEFAULT(s); /* number of arguments */ /* Note: need not be given in pg_proc.dat; genbki.pl will compute it */ int16 pronargs; /* number of arguments with defaults */ int16 pronargdefaults BKI_DEFAULT(0); /* OID of result type */ Oid prorettype BKI_LOOKUP(pg_type); /* * variable-length fields start here, but we allow direct access to * proargtypes */ /* parameter types (excludes OUT params) */ oidvector proargtypes BKI_LOOKUP(pg_type); #ifdef CATALOG_VARLEN /* all param types (NULL if IN only) */ Oid proallargtypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type); /* parameter modes (NULL if IN only) */ char proargmodes[1] BKI_DEFAULT(_null_); /* parameter names (NULL if no names) */ text proargnames[1] BKI_DEFAULT(_null_); /* list of expression trees for argument defaults (NULL if none) */ pg_node_tree proargdefaults BKI_DEFAULT(_null_); /* types for which to apply transforms */ Oid protrftypes[1] BKI_DEFAULT(_null_); /* procedure source text */ text prosrc BKI_FORCE_NOT_NULL; /* secondary procedure info (can be NULL) */ text probin BKI_DEFAULT(_null_); /* procedure-local GUC settings */ text proconfig[1] BKI_DEFAULT(_null_); /* access permissions */ aclitem proacl[1] BKI_DEFAULT(_null_); #endif } FormData_pg_proc; /* ---------------- * Form_pg_proc corresponds to a pointer to a tuple with * the format of pg_proc relation. * ---------------- */ typedef FormData_pg_proc *Form_pg_proc; #ifdef EXPOSE_TO_CLIENT_CODE /* * Symbolic values for prokind column */ #define PROKIND_FUNCTION 'f' #define PROKIND_AGGREGATE 'a' #define PROKIND_WINDOW 'w' #define PROKIND_PROCEDURE 'p' /* * Symbolic values for provolatile column: these indicate whether the result * of a function is dependent *only* on the values of its explicit arguments, * or can change due to outside factors (such as parameter variables or * table contents). NOTE: functions having side-effects, such as setval(), * must be labeled volatile to ensure they will not get optimized away, * even if the actual return value is not changeable. */ #define PROVOLATILE_IMMUTABLE 'i' /* never changes for given input */ #define PROVOLATILE_STABLE 's' /* does not change within a scan */ #define PROVOLATILE_VOLATILE 'v' /* can change even within a scan */ /* * Symbolic values for proparallel column: these indicate whether a function * can be safely be run in a parallel backend, during parallelism but * necessarily in the master, or only in non-parallel mode. */ #define PROPARALLEL_SAFE 's' /* can run in worker or master */ #define PROPARALLEL_RESTRICTED 'r' /* can run in parallel master only */ #define PROPARALLEL_UNSAFE 'u' /* banned while in parallel mode */ /* * Symbolic values for proargmodes column. Note that these must agree with * the FunctionParameterMode enum in parsenodes.h; we declare them here to * be accessible from either header. */ #define PROARGMODE_IN 'i' #define PROARGMODE_OUT 'o' #define PROARGMODE_INOUT 'b' #define PROARGMODE_VARIADIC 'v' #define PROARGMODE_TABLE 't' #endif /* EXPOSE_TO_CLIENT_CODE */ extern ObjectAddress ProcedureCreate(const char *procedureName, Oid procNamespace, bool replace, bool returnsSet, Oid returnType, Oid proowner, Oid languageObjectId, Oid languageValidator, const char *prosrc, const char *probin, char prokind, bool security_definer, bool isLeakProof, bool isStrict, char volatility, char parallel, oidvector *parameterTypes, Datum allParameterTypes, Datum parameterModes, Datum parameterNames, List *parameterDefaults, Datum trftypes, Datum proconfig, Oid prosupport, float4 procost, float4 prorows); extern bool function_parse_error_transpose(const char *prosrc); extern List *oid_array_to_list(Datum datum); #endif /* PG_PROC_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_proc_d.h000066400000000000000000000063541413137616400240720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_proc_d.h * Macro definitions for pg_proc * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_PROC_D_H #define PG_PROC_D_H #define ProcedureRelationId 1255 #define ProcedureRelation_Rowtype_Id 81 #define Anum_pg_proc_oid 1 #define Anum_pg_proc_proname 2 #define Anum_pg_proc_pronamespace 3 #define Anum_pg_proc_proowner 4 #define Anum_pg_proc_prolang 5 #define Anum_pg_proc_procost 6 #define Anum_pg_proc_prorows 7 #define Anum_pg_proc_provariadic 8 #define Anum_pg_proc_prosupport 9 #define Anum_pg_proc_prokind 10 #define Anum_pg_proc_prosecdef 11 #define Anum_pg_proc_proleakproof 12 #define Anum_pg_proc_proisstrict 13 #define Anum_pg_proc_proretset 14 #define Anum_pg_proc_provolatile 15 #define Anum_pg_proc_proparallel 16 #define Anum_pg_proc_pronargs 17 #define Anum_pg_proc_pronargdefaults 18 #define Anum_pg_proc_prorettype 19 #define Anum_pg_proc_proargtypes 20 #define Anum_pg_proc_proallargtypes 21 #define Anum_pg_proc_proargmodes 22 #define Anum_pg_proc_proargnames 23 #define Anum_pg_proc_proargdefaults 24 #define Anum_pg_proc_protrftypes 25 #define Anum_pg_proc_prosrc 26 #define Anum_pg_proc_probin 27 #define Anum_pg_proc_proconfig 28 #define Anum_pg_proc_proacl 29 #define Natts_pg_proc 29 /* * Symbolic values for prokind column */ #define PROKIND_FUNCTION 'f' #define PROKIND_AGGREGATE 'a' #define PROKIND_WINDOW 'w' #define PROKIND_PROCEDURE 'p' /* * Symbolic values for provolatile column: these indicate whether the result * of a function is dependent *only* on the values of its explicit arguments, * or can change due to outside factors (such as parameter variables or * table contents). NOTE: functions having side-effects, such as setval(), * must be labeled volatile to ensure they will not get optimized away, * even if the actual return value is not changeable. */ #define PROVOLATILE_IMMUTABLE 'i' /* never changes for given input */ #define PROVOLATILE_STABLE 's' /* does not change within a scan */ #define PROVOLATILE_VOLATILE 'v' /* can change even within a scan */ /* * Symbolic values for proparallel column: these indicate whether a function * can be safely be run in a parallel backend, during parallelism but * necessarily in the master, or only in non-parallel mode. */ #define PROPARALLEL_SAFE 's' /* can run in worker or master */ #define PROPARALLEL_RESTRICTED 'r' /* can run in parallel master only */ #define PROPARALLEL_UNSAFE 'u' /* banned while in parallel mode */ /* * Symbolic values for proargmodes column. Note that these must agree with * the FunctionParameterMode enum in parsenodes.h; we declare them here to * be accessible from either header. */ #define PROARGMODE_IN 'i' #define PROARGMODE_OUT 'o' #define PROARGMODE_INOUT 'b' #define PROARGMODE_VARIADIC 'v' #define PROARGMODE_TABLE 't' #define HEAP_TABLE_AM_HANDLER_OID 3 #endif /* PG_PROC_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_publication.h000066400000000000000000000061631413137616400251330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_publication.h * definition of the "publication" system catalog (pg_publication) * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_publication.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_PUBLICATION_H #define PG_PUBLICATION_H #include "catalog/genbki.h" #include "catalog/objectaddress.h" #include "catalog/pg_publication_d.h" /* ---------------- * pg_publication definition. cpp turns this into * typedef struct FormData_pg_publication * ---------------- */ CATALOG(pg_publication,6104,PublicationRelationId) { Oid oid; /* oid */ NameData pubname; /* name of the publication */ Oid pubowner; /* publication owner */ /* * indicates that this is special publication which should encompass all * tables in the database (except for the unlogged and temp ones) */ bool puballtables; /* true if inserts are published */ bool pubinsert; /* true if updates are published */ bool pubupdate; /* true if deletes are published */ bool pubdelete; /* true if truncates are published */ bool pubtruncate; /* true if partition changes are published using root schema */ bool pubviaroot; } FormData_pg_publication; /* ---------------- * Form_pg_publication corresponds to a pointer to a tuple with * the format of pg_publication relation. * ---------------- */ typedef FormData_pg_publication *Form_pg_publication; typedef struct PublicationActions { bool pubinsert; bool pubupdate; bool pubdelete; bool pubtruncate; } PublicationActions; typedef struct Publication { Oid oid; char *name; bool alltables; bool pubviaroot; PublicationActions pubactions; } Publication; extern Publication *GetPublication(Oid pubid); extern Publication *GetPublicationByName(const char *pubname, bool missing_ok); extern List *GetRelationPublications(Oid relid); /*--------- * Expected values for pub_partopt parameter of GetRelationPublications(), * which allows callers to specify which partitions of partitioned tables * mentioned in the publication they expect to see. * * ROOT: only the table explicitly mentioned in the publication * LEAF: only leaf partitions in given tree * ALL: all partitions in given tree */ typedef enum PublicationPartOpt { PUBLICATION_PART_ROOT, PUBLICATION_PART_LEAF, PUBLICATION_PART_ALL, } PublicationPartOpt; extern List *GetPublicationRelations(Oid pubid, PublicationPartOpt pub_partopt); extern List *GetAllTablesPublications(void); extern List *GetAllTablesPublicationRelations(bool pubviaroot); extern bool is_publishable_relation(Relation rel); extern ObjectAddress publication_add_relation(Oid pubid, Relation targetrel, bool if_not_exists); extern Oid get_publication_oid(const char *pubname, bool missing_ok); extern char *get_publication_name(Oid pubid, bool missing_ok); #endif /* PG_PUBLICATION_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_publication_d.h000066400000000000000000000020621413137616400254300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_publication_d.h * Macro definitions for pg_publication * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_PUBLICATION_D_H #define PG_PUBLICATION_D_H #define PublicationRelationId 6104 #define Anum_pg_publication_oid 1 #define Anum_pg_publication_pubname 2 #define Anum_pg_publication_pubowner 3 #define Anum_pg_publication_puballtables 4 #define Anum_pg_publication_pubinsert 5 #define Anum_pg_publication_pubupdate 6 #define Anum_pg_publication_pubdelete 7 #define Anum_pg_publication_pubtruncate 8 #define Anum_pg_publication_pubviaroot 9 #define Natts_pg_publication 9 #endif /* PG_PUBLICATION_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_replication_origin.h000066400000000000000000000032021413137616400264710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_replication_origin.h * definition of the "replication origin" system catalog * (pg_replication_origin) * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_replication_origin.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_REPLICATION_ORIGIN_H #define PG_REPLICATION_ORIGIN_H #include "access/xlogdefs.h" #include "catalog/genbki.h" #include "catalog/pg_replication_origin_d.h" /* ---------------- * pg_replication_origin. cpp turns this into * typedef struct FormData_pg_replication_origin * ---------------- */ CATALOG(pg_replication_origin,6000,ReplicationOriginRelationId) BKI_SHARED_RELATION { /* * Locally known id that get included into WAL. * * This should never leave the system. * * Needs to fit into an uint16, so we don't waste too much space in WAL * records. For this reason we don't use a normal Oid column here, since * we need to handle allocation of new values manually. */ Oid roident; /* * Variable-length fields start here, but we allow direct access to * roname. */ /* external, free-format, name */ text roname BKI_FORCE_NOT_NULL; #ifdef CATALOG_VARLEN /* further variable-length fields */ #endif } FormData_pg_replication_origin; typedef FormData_pg_replication_origin *Form_pg_replication_origin; #endif /* PG_REPLICATION_ORIGIN_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_replication_origin_d.h000066400000000000000000000015261413137616400270030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_replication_origin_d.h * Macro definitions for pg_replication_origin * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_REPLICATION_ORIGIN_D_H #define PG_REPLICATION_ORIGIN_D_H #define ReplicationOriginRelationId 6000 #define Anum_pg_replication_origin_roident 1 #define Anum_pg_replication_origin_roname 2 #define Natts_pg_replication_origin 2 #endif /* PG_REPLICATION_ORIGIN_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_statistic.h000066400000000000000000000271721413137616400246340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_statistic.h * definition of the "statistics" system catalog (pg_statistic) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_statistic.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_STATISTIC_H #define PG_STATISTIC_H #include "catalog/genbki.h" #include "catalog/pg_statistic_d.h" /* ---------------- * pg_statistic definition. cpp turns this into * typedef struct FormData_pg_statistic * ---------------- */ CATALOG(pg_statistic,2619,StatisticRelationId) { /* These fields form the unique key for the entry: */ Oid starelid; /* relation containing attribute */ int16 staattnum; /* attribute (column) stats are for */ bool stainherit; /* true if inheritance children are included */ /* the fraction of the column's entries that are NULL: */ float4 stanullfrac; /* * stawidth is the average width in bytes of non-null entries. For * fixed-width datatypes this is of course the same as the typlen, but for * var-width types it is more useful. Note that this is the average width * of the data as actually stored, post-TOASTing (eg, for a * moved-out-of-line value, only the size of the pointer object is * counted). This is the appropriate definition for the primary use of * the statistic, which is to estimate sizes of in-memory hash tables of * tuples. */ int32 stawidth; /* ---------------- * stadistinct indicates the (approximate) number of distinct non-null * data values in the column. The interpretation is: * 0 unknown or not computed * > 0 actual number of distinct values * < 0 negative of multiplier for number of rows * The special negative case allows us to cope with columns that are * unique (stadistinct = -1) or nearly so (for example, a column in which * non-null values appear about twice on the average could be represented * by stadistinct = -0.5 if there are no nulls, or -0.4 if 20% of the * column is nulls). Because the number-of-rows statistic in pg_class may * be updated more frequently than pg_statistic is, it's important to be * able to describe such situations as a multiple of the number of rows, * rather than a fixed number of distinct values. But in other cases a * fixed number is correct (eg, a boolean column). * ---------------- */ float4 stadistinct; /* ---------------- * To allow keeping statistics on different kinds of datatypes, * we do not hard-wire any particular meaning for the remaining * statistical fields. Instead, we provide several "slots" in which * statistical data can be placed. Each slot includes: * kind integer code identifying kind of data (see below) * op OID of associated operator, if needed * coll OID of relevant collation, or 0 if none * numbers float4 array (for statistical values) * values anyarray (for representations of data values) * The ID, operator, and collation fields are never NULL; they are zeroes * in an unused slot. The numbers and values fields are NULL in an * unused slot, and might also be NULL in a used slot if the slot kind * has no need for one or the other. * ---------------- */ int16 stakind1; int16 stakind2; int16 stakind3; int16 stakind4; int16 stakind5; Oid staop1; Oid staop2; Oid staop3; Oid staop4; Oid staop5; Oid stacoll1; Oid stacoll2; Oid stacoll3; Oid stacoll4; Oid stacoll5; #ifdef CATALOG_VARLEN /* variable-length fields start here */ float4 stanumbers1[1]; float4 stanumbers2[1]; float4 stanumbers3[1]; float4 stanumbers4[1]; float4 stanumbers5[1]; /* * Values in these arrays are values of the column's data type, or of some * related type such as an array element type. We presently have to cheat * quite a bit to allow polymorphic arrays of this kind, but perhaps * someday it'll be a less bogus facility. */ anyarray stavalues1; anyarray stavalues2; anyarray stavalues3; anyarray stavalues4; anyarray stavalues5; #endif } FormData_pg_statistic; #define STATISTIC_NUM_SLOTS 5 /* ---------------- * Form_pg_statistic corresponds to a pointer to a tuple with * the format of pg_statistic relation. * ---------------- */ typedef FormData_pg_statistic *Form_pg_statistic; #ifdef EXPOSE_TO_CLIENT_CODE /* * Several statistical slot "kinds" are defined by core PostgreSQL, as * documented below. Also, custom data types can define their own "kind" * codes by mutual agreement between a custom typanalyze routine and the * selectivity estimation functions of the type's operators. * * Code reading the pg_statistic relation should not assume that a particular * data "kind" will appear in any particular slot. Instead, search the * stakind fields to see if the desired data is available. (The standard * function get_attstatsslot() may be used for this.) */ /* * The present allocation of "kind" codes is: * * 1-99: reserved for assignment by the core PostgreSQL project * (values in this range will be documented in this file) * 100-199: reserved for assignment by the PostGIS project * (values to be documented in PostGIS documentation) * 200-299: reserved for assignment by the ESRI ST_Geometry project * (values to be documented in ESRI ST_Geometry documentation) * 300-9999: reserved for future public assignments * * For private use you may choose a "kind" code at random in the range * 10000-30000. However, for code that is to be widely disseminated it is * better to obtain a publicly defined "kind" code by request from the * PostgreSQL Global Development Group. */ /* * In a "most common values" slot, staop is the OID of the "=" operator * used to decide whether values are the same or not, and stacoll is the * collation used (same as column's collation). stavalues contains * the K most common non-null values appearing in the column, and stanumbers * contains their frequencies (fractions of total row count). The values * shall be ordered in decreasing frequency. Note that since the arrays are * variable-size, K may be chosen by the statistics collector. Values should * not appear in MCV unless they have been observed to occur more than once; * a unique column will have no MCV slot. */ #define STATISTIC_KIND_MCV 1 /* * A "histogram" slot describes the distribution of scalar data. staop is * the OID of the "<" operator that describes the sort ordering, and stacoll * is the relevant collation. (In theory more than one histogram could appear, * if a datatype has more than one useful sort operator or we care about more * than one collation. Currently the collation will always be that of the * underlying column.) stavalues contains M (>=2) non-null values that * divide the non-null column data values into M-1 bins of approximately equal * population. The first stavalues item is the MIN and the last is the MAX. * stanumbers is not used and should be NULL. IMPORTANT POINT: if an MCV * slot is also provided, then the histogram describes the data distribution * *after removing the values listed in MCV* (thus, it's a "compressed * histogram" in the technical parlance). This allows a more accurate * representation of the distribution of a column with some very-common * values. In a column with only a few distinct values, it's possible that * the MCV list describes the entire data population; in this case the * histogram reduces to empty and should be omitted. */ #define STATISTIC_KIND_HISTOGRAM 2 /* * A "correlation" slot describes the correlation between the physical order * of table tuples and the ordering of data values of this column, as seen * by the "<" operator identified by staop with the collation identified by * stacoll. (As with the histogram, more than one entry could theoretically * appear.) stavalues is not used and should be NULL. stanumbers contains * a single entry, the correlation coefficient between the sequence of data * values and the sequence of their actual tuple positions. The coefficient * ranges from +1 to -1. */ #define STATISTIC_KIND_CORRELATION 3 /* * A "most common elements" slot is similar to a "most common values" slot, * except that it stores the most common non-null *elements* of the column * values. This is useful when the column datatype is an array or some other * type with identifiable elements (for instance, tsvector). staop contains * the equality operator appropriate to the element type, and stacoll * contains the collation to use with it. stavalues contains * the most common element values, and stanumbers their frequencies. Unlike * MCV slots, frequencies are measured as the fraction of non-null rows the * element value appears in, not the frequency of all rows. Also unlike * MCV slots, the values are sorted into the element type's default order * (to support binary search for a particular value). Since this puts the * minimum and maximum frequencies at unpredictable spots in stanumbers, * there are two extra members of stanumbers, holding copies of the minimum * and maximum frequencies. Optionally, there can be a third extra member, * which holds the frequency of null elements (expressed in the same terms: * the fraction of non-null rows that contain at least one null element). If * this member is omitted, the column is presumed to contain no null elements. * * Note: in current usage for tsvector columns, the stavalues elements are of * type text, even though their representation within tsvector is not * exactly text. */ #define STATISTIC_KIND_MCELEM 4 /* * A "distinct elements count histogram" slot describes the distribution of * the number of distinct element values present in each row of an array-type * column. Only non-null rows are considered, and only non-null elements. * staop contains the equality operator appropriate to the element type, * and stacoll contains the collation to use with it. * stavalues is not used and should be NULL. The last member of stanumbers is * the average count of distinct element values over all non-null rows. The * preceding M (>=2) members form a histogram that divides the population of * distinct-elements counts into M-1 bins of approximately equal population. * The first of these is the minimum observed count, and the last the maximum. */ #define STATISTIC_KIND_DECHIST 5 /* * A "length histogram" slot describes the distribution of range lengths in * rows of a range-type column. stanumbers contains a single entry, the * fraction of empty ranges. stavalues is a histogram of non-empty lengths, in * a format similar to STATISTIC_KIND_HISTOGRAM: it contains M (>=2) range * values that divide the column data values into M-1 bins of approximately * equal population. The lengths are stored as float8s, as measured by the * range type's subdiff function. Only non-null rows are considered. */ #define STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM 6 /* * A "bounds histogram" slot is similar to STATISTIC_KIND_HISTOGRAM, but for * a range-type column. stavalues contains M (>=2) range values that divide * the column data values into M-1 bins of approximately equal population. * Unlike a regular scalar histogram, this is actually two histograms combined * into a single array, with the lower bounds of each value forming a * histogram of lower bounds, and the upper bounds a histogram of upper * bounds. Only non-NULL, non-empty ranges are included. */ #define STATISTIC_KIND_BOUNDS_HISTOGRAM 7 #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_STATISTIC_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_statistic_d.h000066400000000000000000000216341413137616400251340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_statistic_d.h * Macro definitions for pg_statistic * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_STATISTIC_D_H #define PG_STATISTIC_D_H #define StatisticRelationId 2619 #define Anum_pg_statistic_starelid 1 #define Anum_pg_statistic_staattnum 2 #define Anum_pg_statistic_stainherit 3 #define Anum_pg_statistic_stanullfrac 4 #define Anum_pg_statistic_stawidth 5 #define Anum_pg_statistic_stadistinct 6 #define Anum_pg_statistic_stakind1 7 #define Anum_pg_statistic_stakind2 8 #define Anum_pg_statistic_stakind3 9 #define Anum_pg_statistic_stakind4 10 #define Anum_pg_statistic_stakind5 11 #define Anum_pg_statistic_staop1 12 #define Anum_pg_statistic_staop2 13 #define Anum_pg_statistic_staop3 14 #define Anum_pg_statistic_staop4 15 #define Anum_pg_statistic_staop5 16 #define Anum_pg_statistic_stacoll1 17 #define Anum_pg_statistic_stacoll2 18 #define Anum_pg_statistic_stacoll3 19 #define Anum_pg_statistic_stacoll4 20 #define Anum_pg_statistic_stacoll5 21 #define Anum_pg_statistic_stanumbers1 22 #define Anum_pg_statistic_stanumbers2 23 #define Anum_pg_statistic_stanumbers3 24 #define Anum_pg_statistic_stanumbers4 25 #define Anum_pg_statistic_stanumbers5 26 #define Anum_pg_statistic_stavalues1 27 #define Anum_pg_statistic_stavalues2 28 #define Anum_pg_statistic_stavalues3 29 #define Anum_pg_statistic_stavalues4 30 #define Anum_pg_statistic_stavalues5 31 #define Natts_pg_statistic 31 /* * Several statistical slot "kinds" are defined by core PostgreSQL, as * documented below. Also, custom data types can define their own "kind" * codes by mutual agreement between a custom typanalyze routine and the * selectivity estimation functions of the type's operators. * * Code reading the pg_statistic relation should not assume that a particular * data "kind" will appear in any particular slot. Instead, search the * stakind fields to see if the desired data is available. (The standard * function get_attstatsslot() may be used for this.) */ /* * The present allocation of "kind" codes is: * * 1-99: reserved for assignment by the core PostgreSQL project * (values in this range will be documented in this file) * 100-199: reserved for assignment by the PostGIS project * (values to be documented in PostGIS documentation) * 200-299: reserved for assignment by the ESRI ST_Geometry project * (values to be documented in ESRI ST_Geometry documentation) * 300-9999: reserved for future public assignments * * For private use you may choose a "kind" code at random in the range * 10000-30000. However, for code that is to be widely disseminated it is * better to obtain a publicly defined "kind" code by request from the * PostgreSQL Global Development Group. */ /* * In a "most common values" slot, staop is the OID of the "=" operator * used to decide whether values are the same or not, and stacoll is the * collation used (same as column's collation). stavalues contains * the K most common non-null values appearing in the column, and stanumbers * contains their frequencies (fractions of total row count). The values * shall be ordered in decreasing frequency. Note that since the arrays are * variable-size, K may be chosen by the statistics collector. Values should * not appear in MCV unless they have been observed to occur more than once; * a unique column will have no MCV slot. */ #define STATISTIC_KIND_MCV 1 /* * A "histogram" slot describes the distribution of scalar data. staop is * the OID of the "<" operator that describes the sort ordering, and stacoll * is the relevant collation. (In theory more than one histogram could appear, * if a datatype has more than one useful sort operator or we care about more * than one collation. Currently the collation will always be that of the * underlying column.) stavalues contains M (>=2) non-null values that * divide the non-null column data values into M-1 bins of approximately equal * population. The first stavalues item is the MIN and the last is the MAX. * stanumbers is not used and should be NULL. IMPORTANT POINT: if an MCV * slot is also provided, then the histogram describes the data distribution * *after removing the values listed in MCV* (thus, it's a "compressed * histogram" in the technical parlance). This allows a more accurate * representation of the distribution of a column with some very-common * values. In a column with only a few distinct values, it's possible that * the MCV list describes the entire data population; in this case the * histogram reduces to empty and should be omitted. */ #define STATISTIC_KIND_HISTOGRAM 2 /* * A "correlation" slot describes the correlation between the physical order * of table tuples and the ordering of data values of this column, as seen * by the "<" operator identified by staop with the collation identified by * stacoll. (As with the histogram, more than one entry could theoretically * appear.) stavalues is not used and should be NULL. stanumbers contains * a single entry, the correlation coefficient between the sequence of data * values and the sequence of their actual tuple positions. The coefficient * ranges from +1 to -1. */ #define STATISTIC_KIND_CORRELATION 3 /* * A "most common elements" slot is similar to a "most common values" slot, * except that it stores the most common non-null *elements* of the column * values. This is useful when the column datatype is an array or some other * type with identifiable elements (for instance, tsvector). staop contains * the equality operator appropriate to the element type, and stacoll * contains the collation to use with it. stavalues contains * the most common element values, and stanumbers their frequencies. Unlike * MCV slots, frequencies are measured as the fraction of non-null rows the * element value appears in, not the frequency of all rows. Also unlike * MCV slots, the values are sorted into the element type's default order * (to support binary search for a particular value). Since this puts the * minimum and maximum frequencies at unpredictable spots in stanumbers, * there are two extra members of stanumbers, holding copies of the minimum * and maximum frequencies. Optionally, there can be a third extra member, * which holds the frequency of null elements (expressed in the same terms: * the fraction of non-null rows that contain at least one null element). If * this member is omitted, the column is presumed to contain no null elements. * * Note: in current usage for tsvector columns, the stavalues elements are of * type text, even though their representation within tsvector is not * exactly text. */ #define STATISTIC_KIND_MCELEM 4 /* * A "distinct elements count histogram" slot describes the distribution of * the number of distinct element values present in each row of an array-type * column. Only non-null rows are considered, and only non-null elements. * staop contains the equality operator appropriate to the element type, * and stacoll contains the collation to use with it. * stavalues is not used and should be NULL. The last member of stanumbers is * the average count of distinct element values over all non-null rows. The * preceding M (>=2) members form a histogram that divides the population of * distinct-elements counts into M-1 bins of approximately equal population. * The first of these is the minimum observed count, and the last the maximum. */ #define STATISTIC_KIND_DECHIST 5 /* * A "length histogram" slot describes the distribution of range lengths in * rows of a range-type column. stanumbers contains a single entry, the * fraction of empty ranges. stavalues is a histogram of non-empty lengths, in * a format similar to STATISTIC_KIND_HISTOGRAM: it contains M (>=2) range * values that divide the column data values into M-1 bins of approximately * equal population. The lengths are stored as float8s, as measured by the * range type's subdiff function. Only non-null rows are considered. */ #define STATISTIC_KIND_RANGE_LENGTH_HISTOGRAM 6 /* * A "bounds histogram" slot is similar to STATISTIC_KIND_HISTOGRAM, but for * a range-type column. stavalues contains M (>=2) range values that divide * the column data values into M-1 bins of approximately equal population. * Unlike a regular scalar histogram, this is actually two histograms combined * into a single array, with the lower bounds of each value forming a * histogram of lower bounds, and the upper bounds a histogram of upper * bounds. Only non-NULL, non-empty ranges are included. */ #define STATISTIC_KIND_BOUNDS_HISTOGRAM 7 #endif /* PG_STATISTIC_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_statistic_ext.h000066400000000000000000000041531413137616400255060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_statistic_ext.h * definition of the "extended statistics" system catalog * (pg_statistic_ext) * * Note that pg_statistic_ext contains the definitions of extended statistics * objects, created by CREATE STATISTICS, but not the actual statistical data, * created by running ANALYZE. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_statistic_ext.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_STATISTIC_EXT_H #define PG_STATISTIC_EXT_H #include "catalog/genbki.h" #include "catalog/pg_statistic_ext_d.h" /* ---------------- * pg_statistic_ext definition. cpp turns this into * typedef struct FormData_pg_statistic_ext * ---------------- */ CATALOG(pg_statistic_ext,3381,StatisticExtRelationId) { Oid oid; /* oid */ Oid stxrelid; /* relation containing attributes */ /* These two fields form the unique key for the entry: */ NameData stxname; /* statistics object name */ Oid stxnamespace; /* OID of statistics object's namespace */ Oid stxowner; /* statistics object's owner */ int32 stxstattarget BKI_DEFAULT(-1); /* statistics target */ /* * variable-length fields start here, but we allow direct access to * stxkeys */ int2vector stxkeys; /* array of column keys */ #ifdef CATALOG_VARLEN char stxkind[1] BKI_FORCE_NOT_NULL; /* statistics kinds requested * to build */ #endif } FormData_pg_statistic_ext; /* ---------------- * Form_pg_statistic_ext corresponds to a pointer to a tuple with * the format of pg_statistic_ext relation. * ---------------- */ typedef FormData_pg_statistic_ext *Form_pg_statistic_ext; #ifdef EXPOSE_TO_CLIENT_CODE #define STATS_EXT_NDISTINCT 'd' #define STATS_EXT_DEPENDENCIES 'f' #define STATS_EXT_MCV 'm' #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_STATISTIC_EXT_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_statistic_ext_d.h000066400000000000000000000022101413137616400260010ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_statistic_ext_d.h * Macro definitions for pg_statistic_ext * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_STATISTIC_EXT_D_H #define PG_STATISTIC_EXT_D_H #define StatisticExtRelationId 3381 #define Anum_pg_statistic_ext_oid 1 #define Anum_pg_statistic_ext_stxrelid 2 #define Anum_pg_statistic_ext_stxname 3 #define Anum_pg_statistic_ext_stxnamespace 4 #define Anum_pg_statistic_ext_stxowner 5 #define Anum_pg_statistic_ext_stxstattarget 6 #define Anum_pg_statistic_ext_stxkeys 7 #define Anum_pg_statistic_ext_stxkind 8 #define Natts_pg_statistic_ext 8 #define STATS_EXT_NDISTINCT 'd' #define STATS_EXT_DEPENDENCIES 'f' #define STATS_EXT_MCV 'm' #endif /* PG_STATISTIC_EXT_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_transform.h000066400000000000000000000022361413137616400246320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_transform.h * definition of the "transform" system catalog (pg_transform) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_transform.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_TRANSFORM_H #define PG_TRANSFORM_H #include "catalog/genbki.h" #include "catalog/pg_transform_d.h" /* ---------------- * pg_transform definition. cpp turns this into * typedef struct FormData_pg_transform * ---------------- */ CATALOG(pg_transform,3576,TransformRelationId) { Oid oid; /* oid */ Oid trftype; Oid trflang; regproc trffromsql; regproc trftosql; } FormData_pg_transform; /* ---------------- * Form_pg_transform corresponds to a pointer to a tuple with * the format of pg_transform relation. * ---------------- */ typedef FormData_pg_transform *Form_pg_transform; #endif /* PG_TRANSFORM_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_transform_d.h000066400000000000000000000015631413137616400251370ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_transform_d.h * Macro definitions for pg_transform * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_TRANSFORM_D_H #define PG_TRANSFORM_D_H #define TransformRelationId 3576 #define Anum_pg_transform_oid 1 #define Anum_pg_transform_trftype 2 #define Anum_pg_transform_trflang 3 #define Anum_pg_transform_trffromsql 4 #define Anum_pg_transform_trftosql 5 #define Natts_pg_transform 5 #endif /* PG_TRANSFORM_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_trigger.h000066400000000000000000000126051413137616400242630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_trigger.h * definition of the "trigger" system catalog (pg_trigger) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_trigger.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_TRIGGER_H #define PG_TRIGGER_H #include "catalog/genbki.h" #include "catalog/pg_trigger_d.h" /* ---------------- * pg_trigger definition. cpp turns this into * typedef struct FormData_pg_trigger * * Note: when tgconstraint is nonzero, tgconstrrelid, tgconstrindid, * tgdeferrable, and tginitdeferred are largely redundant with the referenced * pg_constraint entry. However, it is possible for a non-deferrable trigger * to be associated with a deferrable constraint. * ---------------- */ CATALOG(pg_trigger,2620,TriggerRelationId) { Oid oid; /* oid */ Oid tgrelid; /* relation trigger is attached to */ Oid tgparentid; /* OID of parent trigger, if any */ NameData tgname; /* trigger's name */ Oid tgfoid; /* OID of function to be called */ int16 tgtype; /* BEFORE/AFTER/INSTEAD, UPDATE/DELETE/INSERT, * ROW/STATEMENT; see below */ char tgenabled; /* trigger's firing configuration WRT * session_replication_role */ bool tgisinternal; /* trigger is system-generated */ Oid tgconstrrelid; /* constraint's FROM table, if any */ Oid tgconstrindid; /* constraint's supporting index, if any */ Oid tgconstraint; /* associated pg_constraint entry, if any */ bool tgdeferrable; /* constraint trigger is deferrable */ bool tginitdeferred; /* constraint trigger is deferred initially */ int16 tgnargs; /* # of extra arguments in tgargs */ /* * Variable-length fields start here, but we allow direct access to * tgattr. Note: tgattr and tgargs must not be null. */ int2vector tgattr; /* column numbers, if trigger is on columns */ #ifdef CATALOG_VARLEN bytea tgargs BKI_FORCE_NOT_NULL; /* first\000second\000tgnargs\000 */ pg_node_tree tgqual; /* WHEN expression, or NULL if none */ NameData tgoldtable; /* old transition table, or NULL if none */ NameData tgnewtable; /* new transition table, or NULL if none */ #endif } FormData_pg_trigger; /* ---------------- * Form_pg_trigger corresponds to a pointer to a tuple with * the format of pg_trigger relation. * ---------------- */ typedef FormData_pg_trigger *Form_pg_trigger; #ifdef EXPOSE_TO_CLIENT_CODE /* Bits within tgtype */ #define TRIGGER_TYPE_ROW (1 << 0) #define TRIGGER_TYPE_BEFORE (1 << 1) #define TRIGGER_TYPE_INSERT (1 << 2) #define TRIGGER_TYPE_DELETE (1 << 3) #define TRIGGER_TYPE_UPDATE (1 << 4) #define TRIGGER_TYPE_TRUNCATE (1 << 5) #define TRIGGER_TYPE_INSTEAD (1 << 6) #define TRIGGER_TYPE_LEVEL_MASK (TRIGGER_TYPE_ROW) #define TRIGGER_TYPE_STATEMENT 0 /* Note bits within TRIGGER_TYPE_TIMING_MASK aren't adjacent */ #define TRIGGER_TYPE_TIMING_MASK \ (TRIGGER_TYPE_BEFORE | TRIGGER_TYPE_INSTEAD) #define TRIGGER_TYPE_AFTER 0 #define TRIGGER_TYPE_EVENT_MASK \ (TRIGGER_TYPE_INSERT | TRIGGER_TYPE_DELETE | TRIGGER_TYPE_UPDATE | TRIGGER_TYPE_TRUNCATE) /* Macros for manipulating tgtype */ #define TRIGGER_CLEAR_TYPE(type) ((type) = 0) #define TRIGGER_SETT_ROW(type) ((type) |= TRIGGER_TYPE_ROW) #define TRIGGER_SETT_STATEMENT(type) ((type) |= TRIGGER_TYPE_STATEMENT) #define TRIGGER_SETT_BEFORE(type) ((type) |= TRIGGER_TYPE_BEFORE) #define TRIGGER_SETT_AFTER(type) ((type) |= TRIGGER_TYPE_AFTER) #define TRIGGER_SETT_INSTEAD(type) ((type) |= TRIGGER_TYPE_INSTEAD) #define TRIGGER_SETT_INSERT(type) ((type) |= TRIGGER_TYPE_INSERT) #define TRIGGER_SETT_DELETE(type) ((type) |= TRIGGER_TYPE_DELETE) #define TRIGGER_SETT_UPDATE(type) ((type) |= TRIGGER_TYPE_UPDATE) #define TRIGGER_SETT_TRUNCATE(type) ((type) |= TRIGGER_TYPE_TRUNCATE) #define TRIGGER_FOR_ROW(type) ((type) & TRIGGER_TYPE_ROW) #define TRIGGER_FOR_BEFORE(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_BEFORE) #define TRIGGER_FOR_AFTER(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_AFTER) #define TRIGGER_FOR_INSTEAD(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_INSTEAD) #define TRIGGER_FOR_INSERT(type) ((type) & TRIGGER_TYPE_INSERT) #define TRIGGER_FOR_DELETE(type) ((type) & TRIGGER_TYPE_DELETE) #define TRIGGER_FOR_UPDATE(type) ((type) & TRIGGER_TYPE_UPDATE) #define TRIGGER_FOR_TRUNCATE(type) ((type) & TRIGGER_TYPE_TRUNCATE) /* * Efficient macro for checking if tgtype matches a particular level * (TRIGGER_TYPE_ROW or TRIGGER_TYPE_STATEMENT), timing (TRIGGER_TYPE_BEFORE, * TRIGGER_TYPE_AFTER or TRIGGER_TYPE_INSTEAD), and event (TRIGGER_TYPE_INSERT, * TRIGGER_TYPE_DELETE, TRIGGER_TYPE_UPDATE, or TRIGGER_TYPE_TRUNCATE). Note * that a tgtype can match more than one event, but only one level or timing. */ #define TRIGGER_TYPE_MATCHES(type, level, timing, event) \ (((type) & (TRIGGER_TYPE_LEVEL_MASK | TRIGGER_TYPE_TIMING_MASK | (event))) == ((level) | (timing) | (event))) /* * Macro to determine whether tgnewtable or tgoldtable has been specified for * a trigger. */ #define TRIGGER_USES_TRANSITION_TABLE(namepointer) \ ((namepointer) != (char *) NULL) #endif /* EXPOSE_TO_CLIENT_CODE */ #endif /* PG_TRIGGER_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_trigger_d.h000066400000000000000000000100431413137616400245600ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_trigger_d.h * Macro definitions for pg_trigger * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_TRIGGER_D_H #define PG_TRIGGER_D_H #define TriggerRelationId 2620 #define Anum_pg_trigger_oid 1 #define Anum_pg_trigger_tgrelid 2 #define Anum_pg_trigger_tgparentid 3 #define Anum_pg_trigger_tgname 4 #define Anum_pg_trigger_tgfoid 5 #define Anum_pg_trigger_tgtype 6 #define Anum_pg_trigger_tgenabled 7 #define Anum_pg_trigger_tgisinternal 8 #define Anum_pg_trigger_tgconstrrelid 9 #define Anum_pg_trigger_tgconstrindid 10 #define Anum_pg_trigger_tgconstraint 11 #define Anum_pg_trigger_tgdeferrable 12 #define Anum_pg_trigger_tginitdeferred 13 #define Anum_pg_trigger_tgnargs 14 #define Anum_pg_trigger_tgattr 15 #define Anum_pg_trigger_tgargs 16 #define Anum_pg_trigger_tgqual 17 #define Anum_pg_trigger_tgoldtable 18 #define Anum_pg_trigger_tgnewtable 19 #define Natts_pg_trigger 19 /* Bits within tgtype */ #define TRIGGER_TYPE_ROW (1 << 0) #define TRIGGER_TYPE_BEFORE (1 << 1) #define TRIGGER_TYPE_INSERT (1 << 2) #define TRIGGER_TYPE_DELETE (1 << 3) #define TRIGGER_TYPE_UPDATE (1 << 4) #define TRIGGER_TYPE_TRUNCATE (1 << 5) #define TRIGGER_TYPE_INSTEAD (1 << 6) #define TRIGGER_TYPE_LEVEL_MASK (TRIGGER_TYPE_ROW) #define TRIGGER_TYPE_STATEMENT 0 /* Note bits within TRIGGER_TYPE_TIMING_MASK aren't adjacent */ #define TRIGGER_TYPE_TIMING_MASK \ (TRIGGER_TYPE_BEFORE | TRIGGER_TYPE_INSTEAD) #define TRIGGER_TYPE_AFTER 0 #define TRIGGER_TYPE_EVENT_MASK \ (TRIGGER_TYPE_INSERT | TRIGGER_TYPE_DELETE | TRIGGER_TYPE_UPDATE | TRIGGER_TYPE_TRUNCATE) /* Macros for manipulating tgtype */ #define TRIGGER_CLEAR_TYPE(type) ((type) = 0) #define TRIGGER_SETT_ROW(type) ((type) |= TRIGGER_TYPE_ROW) #define TRIGGER_SETT_STATEMENT(type) ((type) |= TRIGGER_TYPE_STATEMENT) #define TRIGGER_SETT_BEFORE(type) ((type) |= TRIGGER_TYPE_BEFORE) #define TRIGGER_SETT_AFTER(type) ((type) |= TRIGGER_TYPE_AFTER) #define TRIGGER_SETT_INSTEAD(type) ((type) |= TRIGGER_TYPE_INSTEAD) #define TRIGGER_SETT_INSERT(type) ((type) |= TRIGGER_TYPE_INSERT) #define TRIGGER_SETT_DELETE(type) ((type) |= TRIGGER_TYPE_DELETE) #define TRIGGER_SETT_UPDATE(type) ((type) |= TRIGGER_TYPE_UPDATE) #define TRIGGER_SETT_TRUNCATE(type) ((type) |= TRIGGER_TYPE_TRUNCATE) #define TRIGGER_FOR_ROW(type) ((type) & TRIGGER_TYPE_ROW) #define TRIGGER_FOR_BEFORE(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_BEFORE) #define TRIGGER_FOR_AFTER(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_AFTER) #define TRIGGER_FOR_INSTEAD(type) (((type) & TRIGGER_TYPE_TIMING_MASK) == TRIGGER_TYPE_INSTEAD) #define TRIGGER_FOR_INSERT(type) ((type) & TRIGGER_TYPE_INSERT) #define TRIGGER_FOR_DELETE(type) ((type) & TRIGGER_TYPE_DELETE) #define TRIGGER_FOR_UPDATE(type) ((type) & TRIGGER_TYPE_UPDATE) #define TRIGGER_FOR_TRUNCATE(type) ((type) & TRIGGER_TYPE_TRUNCATE) /* * Efficient macro for checking if tgtype matches a particular level * (TRIGGER_TYPE_ROW or TRIGGER_TYPE_STATEMENT), timing (TRIGGER_TYPE_BEFORE, * TRIGGER_TYPE_AFTER or TRIGGER_TYPE_INSTEAD), and event (TRIGGER_TYPE_INSERT, * TRIGGER_TYPE_DELETE, TRIGGER_TYPE_UPDATE, or TRIGGER_TYPE_TRUNCATE). Note * that a tgtype can match more than one event, but only one level or timing. */ #define TRIGGER_TYPE_MATCHES(type, level, timing, event) \ (((type) & (TRIGGER_TYPE_LEVEL_MASK | TRIGGER_TYPE_TIMING_MASK | (event))) == ((level) | (timing) | (event))) /* * Macro to determine whether tgnewtable or tgoldtable has been specified for * a trigger. */ #define TRIGGER_USES_TRANSITION_TABLE(namepointer) \ ((namepointer) != (char *) NULL) #endif /* PG_TRIGGER_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_ts_config.h000066400000000000000000000022621413137616400245710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_config.h * definition of the "text search configuration" system catalog * (pg_ts_config) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_ts_config.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_TS_CONFIG_H #define PG_TS_CONFIG_H #include "catalog/genbki.h" #include "catalog/pg_ts_config_d.h" /* ---------------- * pg_ts_config definition. cpp turns this into * typedef struct FormData_pg_ts_config * ---------------- */ CATALOG(pg_ts_config,3602,TSConfigRelationId) { /* oid */ Oid oid; /* name of configuration */ NameData cfgname; /* name space */ Oid cfgnamespace BKI_DEFAULT(PGNSP); /* owner */ Oid cfgowner BKI_DEFAULT(PGUID); /* OID of parser */ Oid cfgparser BKI_LOOKUP(pg_ts_parser); } FormData_pg_ts_config; typedef FormData_pg_ts_config *Form_pg_ts_config; #endif /* PG_TS_CONFIG_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_ts_config_d.h000066400000000000000000000015661413137616400251020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_config_d.h * Macro definitions for pg_ts_config * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_TS_CONFIG_D_H #define PG_TS_CONFIG_D_H #define TSConfigRelationId 3602 #define Anum_pg_ts_config_oid 1 #define Anum_pg_ts_config_cfgname 2 #define Anum_pg_ts_config_cfgnamespace 3 #define Anum_pg_ts_config_cfgowner 4 #define Anum_pg_ts_config_cfgparser 5 #define Natts_pg_ts_config 5 #endif /* PG_TS_CONFIG_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_ts_dict.h000066400000000000000000000024421413137616400242470ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_dict.h * definition of the "text search dictionary" system catalog (pg_ts_dict) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_ts_dict.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_TS_DICT_H #define PG_TS_DICT_H #include "catalog/genbki.h" #include "catalog/pg_ts_dict_d.h" /* ---------------- * pg_ts_dict definition. cpp turns this into * typedef struct FormData_pg_ts_dict * ---------------- */ CATALOG(pg_ts_dict,3600,TSDictionaryRelationId) { /* oid */ Oid oid; /* dictionary name */ NameData dictname; /* name space */ Oid dictnamespace BKI_DEFAULT(PGNSP); /* owner */ Oid dictowner BKI_DEFAULT(PGUID); /* dictionary's template */ Oid dicttemplate BKI_LOOKUP(pg_ts_template); #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* options passed to dict_init() */ text dictinitoption; #endif } FormData_pg_ts_dict; typedef FormData_pg_ts_dict *Form_pg_ts_dict; #endif /* PG_TS_DICT_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_ts_dict_d.h000066400000000000000000000016231413137616400245520ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_dict_d.h * Macro definitions for pg_ts_dict * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_TS_DICT_D_H #define PG_TS_DICT_D_H #define TSDictionaryRelationId 3600 #define Anum_pg_ts_dict_oid 1 #define Anum_pg_ts_dict_dictname 2 #define Anum_pg_ts_dict_dictnamespace 3 #define Anum_pg_ts_dict_dictowner 4 #define Anum_pg_ts_dict_dicttemplate 5 #define Anum_pg_ts_dict_dictinitoption 6 #define Natts_pg_ts_dict 6 #endif /* PG_TS_DICT_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_ts_parser.h000066400000000000000000000026471413137616400246270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_parser.h * definition of the "text search parser" system catalog (pg_ts_parser) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_ts_parser.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_TS_PARSER_H #define PG_TS_PARSER_H #include "catalog/genbki.h" #include "catalog/pg_ts_parser_d.h" /* ---------------- * pg_ts_parser definition. cpp turns this into * typedef struct FormData_pg_ts_parser * ---------------- */ CATALOG(pg_ts_parser,3601,TSParserRelationId) { Oid oid; /* oid */ /* parser's name */ NameData prsname; /* name space */ Oid prsnamespace BKI_DEFAULT(PGNSP); /* init parsing session */ regproc prsstart BKI_LOOKUP(pg_proc); /* return next token */ regproc prstoken BKI_LOOKUP(pg_proc); /* finalize parsing session */ regproc prsend BKI_LOOKUP(pg_proc); /* return data for headline creation */ regproc prsheadline BKI_LOOKUP(pg_proc); /* return descriptions of lexeme's types */ regproc prslextype BKI_LOOKUP(pg_proc); } FormData_pg_ts_parser; typedef FormData_pg_ts_parser *Form_pg_ts_parser; #endif /* PG_TS_PARSER_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_ts_parser_d.h000066400000000000000000000017471413137616400251320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_parser_d.h * Macro definitions for pg_ts_parser * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_TS_PARSER_D_H #define PG_TS_PARSER_D_H #define TSParserRelationId 3601 #define Anum_pg_ts_parser_oid 1 #define Anum_pg_ts_parser_prsname 2 #define Anum_pg_ts_parser_prsnamespace 3 #define Anum_pg_ts_parser_prsstart 4 #define Anum_pg_ts_parser_prstoken 5 #define Anum_pg_ts_parser_prsend 6 #define Anum_pg_ts_parser_prsheadline 7 #define Anum_pg_ts_parser_prslextype 8 #define Natts_pg_ts_parser 8 #endif /* PG_TS_PARSER_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_ts_template.h000066400000000000000000000023611413137616400251370ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_template.h * definition of the "text search template" system catalog (pg_ts_template) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_ts_template.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_TS_TEMPLATE_H #define PG_TS_TEMPLATE_H #include "catalog/genbki.h" #include "catalog/pg_ts_template_d.h" /* ---------------- * pg_ts_template definition. cpp turns this into * typedef struct FormData_pg_ts_template * ---------------- */ CATALOG(pg_ts_template,3764,TSTemplateRelationId) { Oid oid; /* oid */ /* template name */ NameData tmplname; /* name space */ Oid tmplnamespace BKI_DEFAULT(PGNSP); /* initialization method of dict (may be 0) */ regproc tmplinit BKI_LOOKUP(pg_proc); /* base method of dictionary */ regproc tmpllexize BKI_LOOKUP(pg_proc); } FormData_pg_ts_template; typedef FormData_pg_ts_template *Form_pg_ts_template; #endif /* PG_TS_TEMPLATE_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_ts_template_d.h000066400000000000000000000016211413137616400254400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_ts_template_d.h * Macro definitions for pg_ts_template * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_TS_TEMPLATE_D_H #define PG_TS_TEMPLATE_D_H #define TSTemplateRelationId 3764 #define Anum_pg_ts_template_oid 1 #define Anum_pg_ts_template_tmplname 2 #define Anum_pg_ts_template_tmplnamespace 3 #define Anum_pg_ts_template_tmplinit 4 #define Anum_pg_ts_template_tmpllexize 5 #define Natts_pg_ts_template 5 #endif /* PG_TS_TEMPLATE_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_type.h000066400000000000000000000312631413137616400236020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_type.h * definition of the "type" system catalog (pg_type) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/pg_type.h * * NOTES * The Catalog.pm module reads this file and derives schema * information. * *------------------------------------------------------------------------- */ #ifndef PG_TYPE_H #define PG_TYPE_H #include "catalog/genbki.h" #include "catalog/objectaddress.h" #include "catalog/pg_type_d.h" #include "nodes/nodes.h" /* ---------------- * pg_type definition. cpp turns this into * typedef struct FormData_pg_type * * Some of the values in a pg_type instance are copied into * pg_attribute instances. Some parts of Postgres use the pg_type copy, * while others use the pg_attribute copy, so they must match. * See struct FormData_pg_attribute for details. * ---------------- */ CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelation_Rowtype_Id) BKI_SCHEMA_MACRO { Oid oid; /* oid */ /* type name */ NameData typname; /* OID of namespace containing this type */ Oid typnamespace BKI_DEFAULT(PGNSP); /* type owner */ Oid typowner BKI_DEFAULT(PGUID); /* * For a fixed-size type, typlen is the number of bytes we use to * represent a value of this type, e.g. 4 for an int4. But for a * variable-length type, typlen is negative. We use -1 to indicate a * "varlena" type (one that has a length word), -2 to indicate a * null-terminated C string. */ int16 typlen BKI_ARRAY_DEFAULT(-1); /* * typbyval determines whether internal Postgres routines pass a value of * this type by value or by reference. typbyval had better be false if * the length is not 1, 2, or 4 (or 8 on 8-byte-Datum machines). * Variable-length types are always passed by reference. Note that * typbyval can be false even if the length would allow pass-by-value; for * example, type macaddr8 is pass-by-ref even when Datum is 8 bytes. */ bool typbyval BKI_ARRAY_DEFAULT(f); /* * typtype is 'b' for a base type, 'c' for a composite type (e.g., a * table's rowtype), 'd' for a domain, 'e' for an enum type, 'p' for a * pseudo-type, or 'r' for a range type. (Use the TYPTYPE macros below.) * * If typtype is 'c', typrelid is the OID of the class' entry in pg_class. */ char typtype BKI_DEFAULT(b) BKI_ARRAY_DEFAULT(b); /* * typcategory and typispreferred help the parser distinguish preferred * and non-preferred coercions. The category can be any single ASCII * character (but not \0). The categories used for built-in types are * identified by the TYPCATEGORY macros below. */ /* arbitrary type classification */ char typcategory BKI_ARRAY_DEFAULT(A); /* is type "preferred" within its category? */ bool typispreferred BKI_DEFAULT(f) BKI_ARRAY_DEFAULT(f); /* * If typisdefined is false, the entry is only a placeholder (forward * reference). We know the type's name and owner, but not yet anything * else about it. */ bool typisdefined BKI_DEFAULT(t); /* delimiter for arrays of this type */ char typdelim BKI_DEFAULT(','); /* associated pg_class OID if a composite type, else 0 */ Oid typrelid BKI_DEFAULT(0) BKI_ARRAY_DEFAULT(0) BKI_LOOKUP(pg_class); /* * If typelem is not 0 then it identifies another row in pg_type. The * current type can then be subscripted like an array yielding values of * type typelem. A non-zero typelem does not guarantee this type to be a * "real" array type; some ordinary fixed-length types can also be * subscripted (e.g., name, point). Variable-length types can *not* be * turned into pseudo-arrays like that. Hence, the way to determine * whether a type is a "true" array type is if: * * typelem != 0 and typlen == -1. */ Oid typelem BKI_DEFAULT(0) BKI_LOOKUP(pg_type); /* * If there is a "true" array type having this type as element type, * typarray links to it. Zero if no associated "true" array type. */ Oid typarray BKI_DEFAULT(0) BKI_ARRAY_DEFAULT(0) BKI_LOOKUP(pg_type); /* * I/O conversion procedures for the datatype. */ /* text format (required) */ regproc typinput BKI_ARRAY_DEFAULT(array_in) BKI_LOOKUP(pg_proc); regproc typoutput BKI_ARRAY_DEFAULT(array_out) BKI_LOOKUP(pg_proc); /* binary format (optional) */ regproc typreceive BKI_ARRAY_DEFAULT(array_recv) BKI_LOOKUP(pg_proc); regproc typsend BKI_ARRAY_DEFAULT(array_send) BKI_LOOKUP(pg_proc); /* * I/O functions for optional type modifiers. */ regproc typmodin BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); regproc typmodout BKI_DEFAULT(-) BKI_LOOKUP(pg_proc); /* * Custom ANALYZE procedure for the datatype (0 selects the default). */ regproc typanalyze BKI_DEFAULT(-) BKI_ARRAY_DEFAULT(array_typanalyze) BKI_LOOKUP(pg_proc); /* ---------------- * typalign is the alignment required when storing a value of this * type. It applies to storage on disk as well as most * representations of the value inside Postgres. When multiple values * are stored consecutively, such as in the representation of a * complete row on disk, padding is inserted before a datum of this * type so that it begins on the specified boundary. The alignment * reference is the beginning of the first datum in the sequence. * * 'c' = CHAR alignment, ie no alignment needed. * 's' = SHORT alignment (2 bytes on most machines). * 'i' = INT alignment (4 bytes on most machines). * 'd' = DOUBLE alignment (8 bytes on many machines, but by no means all). * (Use the TYPALIGN macros below for these.) * * See include/access/tupmacs.h for the macros that compute these * alignment requirements. Note also that we allow the nominal alignment * to be violated when storing "packed" varlenas; the TOAST mechanism * takes care of hiding that from most code. * * NOTE: for types used in system tables, it is critical that the * size and alignment defined in pg_type agree with the way that the * compiler will lay out the field in a struct representing a table row. * ---------------- */ char typalign; /* ---------------- * typstorage tells if the type is prepared for toasting and what * the default strategy for attributes of this type should be. * * 'p' PLAIN type not prepared for toasting * 'e' EXTERNAL external storage possible, don't try to compress * 'x' EXTENDED try to compress and store external if required * 'm' MAIN like 'x' but try to keep in main tuple * (Use the TYPSTORAGE macros below for these.) * * Note that 'm' fields can also be moved out to secondary storage, * but only as a last resort ('e' and 'x' fields are moved first). * ---------------- */ char typstorage BKI_DEFAULT(p) BKI_ARRAY_DEFAULT(x); /* * This flag represents a "NOT NULL" constraint against this datatype. * * If true, the attnotnull column for a corresponding table column using * this datatype will always enforce the NOT NULL constraint. * * Used primarily for domain types. */ bool typnotnull BKI_DEFAULT(f); /* * Domains use typbasetype to show the base (or domain) type that the * domain is based on. Zero if the type is not a domain. */ Oid typbasetype BKI_DEFAULT(0); /* * Domains use typtypmod to record the typmod to be applied to their base * type (-1 if base type does not use a typmod). -1 if this type is not a * domain. */ int32 typtypmod BKI_DEFAULT(-1); /* * typndims is the declared number of dimensions for an array domain type * (i.e., typbasetype is an array type). Otherwise zero. */ int32 typndims BKI_DEFAULT(0); /* * Collation: 0 if type cannot use collations, nonzero (typically * DEFAULT_COLLATION_OID) for collatable base types, possibly some other * OID for domains over collatable types */ Oid typcollation BKI_DEFAULT(0) BKI_LOOKUP(pg_collation); #ifdef CATALOG_VARLEN /* variable-length fields start here */ /* * If typdefaultbin is not NULL, it is the nodeToString representation of * a default expression for the type. Currently this is only used for * domains. */ pg_node_tree typdefaultbin BKI_DEFAULT(_null_) BKI_ARRAY_DEFAULT(_null_); /* * typdefault is NULL if the type has no associated default value. If * typdefaultbin is not NULL, typdefault must contain a human-readable * version of the default expression represented by typdefaultbin. If * typdefaultbin is NULL and typdefault is not, then typdefault is the * external representation of the type's default value, which may be fed * to the type's input converter to produce a constant. */ text typdefault BKI_DEFAULT(_null_) BKI_ARRAY_DEFAULT(_null_); /* * Access permissions */ aclitem typacl[1] BKI_DEFAULT(_null_); #endif } FormData_pg_type; /* ---------------- * Form_pg_type corresponds to a pointer to a row with * the format of pg_type relation. * ---------------- */ typedef FormData_pg_type *Form_pg_type; #ifdef EXPOSE_TO_CLIENT_CODE /* * macros for values of poor-mans-enumerated-type columns */ #define TYPTYPE_BASE 'b' /* base type (ordinary scalar type) */ #define TYPTYPE_COMPOSITE 'c' /* composite (e.g., table's rowtype) */ #define TYPTYPE_DOMAIN 'd' /* domain over another type */ #define TYPTYPE_ENUM 'e' /* enumerated type */ #define TYPTYPE_PSEUDO 'p' /* pseudo-type */ #define TYPTYPE_RANGE 'r' /* range type */ #define TYPCATEGORY_INVALID '\0' /* not an allowed category */ #define TYPCATEGORY_ARRAY 'A' #define TYPCATEGORY_BOOLEAN 'B' #define TYPCATEGORY_COMPOSITE 'C' #define TYPCATEGORY_DATETIME 'D' #define TYPCATEGORY_ENUM 'E' #define TYPCATEGORY_GEOMETRIC 'G' #define TYPCATEGORY_NETWORK 'I' /* think INET */ #define TYPCATEGORY_NUMERIC 'N' #define TYPCATEGORY_PSEUDOTYPE 'P' #define TYPCATEGORY_RANGE 'R' #define TYPCATEGORY_STRING 'S' #define TYPCATEGORY_TIMESPAN 'T' #define TYPCATEGORY_USER 'U' #define TYPCATEGORY_BITSTRING 'V' /* er ... "varbit"? */ #define TYPCATEGORY_UNKNOWN 'X' #define TYPALIGN_CHAR 'c' /* char alignment (i.e. unaligned) */ #define TYPALIGN_SHORT 's' /* short alignment (typically 2 bytes) */ #define TYPALIGN_INT 'i' /* int alignment (typically 4 bytes) */ #define TYPALIGN_DOUBLE 'd' /* double alignment (often 8 bytes) */ #define TYPSTORAGE_PLAIN 'p' /* type not prepared for toasting */ #define TYPSTORAGE_EXTERNAL 'e' /* toastable, don't try to compress */ #define TYPSTORAGE_EXTENDED 'x' /* fully toastable */ #define TYPSTORAGE_MAIN 'm' /* like 'x' but try to store inline */ /* Is a type OID a polymorphic pseudotype? (Beware of multiple evaluation) */ #define IsPolymorphicType(typid) \ (IsPolymorphicTypeFamily1(typid) || \ IsPolymorphicTypeFamily2(typid)) /* Code not part of polymorphic type resolution should not use these macros: */ #define IsPolymorphicTypeFamily1(typid) \ ((typid) == ANYELEMENTOID || \ (typid) == ANYARRAYOID || \ (typid) == ANYNONARRAYOID || \ (typid) == ANYENUMOID || \ (typid) == ANYRANGEOID) #define IsPolymorphicTypeFamily2(typid) \ ((typid) == ANYCOMPATIBLEOID || \ (typid) == ANYCOMPATIBLEARRAYOID || \ (typid) == ANYCOMPATIBLENONARRAYOID || \ (typid) == ANYCOMPATIBLERANGEOID) #endif /* EXPOSE_TO_CLIENT_CODE */ extern ObjectAddress TypeShellMake(const char *typeName, Oid typeNamespace, Oid ownerId); extern ObjectAddress TypeCreate(Oid newTypeOid, const char *typeName, Oid typeNamespace, Oid relationOid, char relationKind, Oid ownerId, int16 internalSize, char typeType, char typeCategory, bool typePreferred, char typDelim, Oid inputProcedure, Oid outputProcedure, Oid receiveProcedure, Oid sendProcedure, Oid typmodinProcedure, Oid typmodoutProcedure, Oid analyzeProcedure, Oid elementType, bool isImplicitArray, Oid arrayType, Oid baseType, const char *defaultTypeValue, char *defaultTypeBin, bool passedByValue, char alignment, char storage, int32 typeMod, int32 typNDims, bool typeNotNull, Oid typeCollation); extern void GenerateTypeDependencies(HeapTuple typeTuple, Relation typeCatalog, Node *defaultExpr, void *typacl, char relationKind, /* only for relation * rowtypes */ bool isImplicitArray, bool isDependentType, bool rebuild); extern void RenameTypeInternal(Oid typeOid, const char *newTypeName, Oid typeNamespace); extern char *makeArrayTypeName(const char *typeName, Oid typeNamespace); extern bool moveArrayTypeName(Oid typeOid, const char *typeName, Oid typeNamespace); #endif /* PG_TYPE_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/pg_type_d.h000066400000000000000000000202461413137616400241040ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_type_d.h * Macro definitions for pg_type * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/catalog/genbki.pl * *------------------------------------------------------------------------- */ #ifndef PG_TYPE_D_H #define PG_TYPE_D_H #define TypeRelationId 1247 #define TypeRelation_Rowtype_Id 71 #define Anum_pg_type_oid 1 #define Anum_pg_type_typname 2 #define Anum_pg_type_typnamespace 3 #define Anum_pg_type_typowner 4 #define Anum_pg_type_typlen 5 #define Anum_pg_type_typbyval 6 #define Anum_pg_type_typtype 7 #define Anum_pg_type_typcategory 8 #define Anum_pg_type_typispreferred 9 #define Anum_pg_type_typisdefined 10 #define Anum_pg_type_typdelim 11 #define Anum_pg_type_typrelid 12 #define Anum_pg_type_typelem 13 #define Anum_pg_type_typarray 14 #define Anum_pg_type_typinput 15 #define Anum_pg_type_typoutput 16 #define Anum_pg_type_typreceive 17 #define Anum_pg_type_typsend 18 #define Anum_pg_type_typmodin 19 #define Anum_pg_type_typmodout 20 #define Anum_pg_type_typanalyze 21 #define Anum_pg_type_typalign 22 #define Anum_pg_type_typstorage 23 #define Anum_pg_type_typnotnull 24 #define Anum_pg_type_typbasetype 25 #define Anum_pg_type_typtypmod 26 #define Anum_pg_type_typndims 27 #define Anum_pg_type_typcollation 28 #define Anum_pg_type_typdefaultbin 29 #define Anum_pg_type_typdefault 30 #define Anum_pg_type_typacl 31 #define Natts_pg_type 31 /* * macros for values of poor-mans-enumerated-type columns */ #define TYPTYPE_BASE 'b' /* base type (ordinary scalar type) */ #define TYPTYPE_COMPOSITE 'c' /* composite (e.g., table's rowtype) */ #define TYPTYPE_DOMAIN 'd' /* domain over another type */ #define TYPTYPE_ENUM 'e' /* enumerated type */ #define TYPTYPE_PSEUDO 'p' /* pseudo-type */ #define TYPTYPE_RANGE 'r' /* range type */ #define TYPCATEGORY_INVALID '\0' /* not an allowed category */ #define TYPCATEGORY_ARRAY 'A' #define TYPCATEGORY_BOOLEAN 'B' #define TYPCATEGORY_COMPOSITE 'C' #define TYPCATEGORY_DATETIME 'D' #define TYPCATEGORY_ENUM 'E' #define TYPCATEGORY_GEOMETRIC 'G' #define TYPCATEGORY_NETWORK 'I' /* think INET */ #define TYPCATEGORY_NUMERIC 'N' #define TYPCATEGORY_PSEUDOTYPE 'P' #define TYPCATEGORY_RANGE 'R' #define TYPCATEGORY_STRING 'S' #define TYPCATEGORY_TIMESPAN 'T' #define TYPCATEGORY_USER 'U' #define TYPCATEGORY_BITSTRING 'V' /* er ... "varbit"? */ #define TYPCATEGORY_UNKNOWN 'X' #define TYPALIGN_CHAR 'c' /* char alignment (i.e. unaligned) */ #define TYPALIGN_SHORT 's' /* short alignment (typically 2 bytes) */ #define TYPALIGN_INT 'i' /* int alignment (typically 4 bytes) */ #define TYPALIGN_DOUBLE 'd' /* double alignment (often 8 bytes) */ #define TYPSTORAGE_PLAIN 'p' /* type not prepared for toasting */ #define TYPSTORAGE_EXTERNAL 'e' /* toastable, don't try to compress */ #define TYPSTORAGE_EXTENDED 'x' /* fully toastable */ #define TYPSTORAGE_MAIN 'm' /* like 'x' but try to store inline */ /* Is a type OID a polymorphic pseudotype? (Beware of multiple evaluation) */ #define IsPolymorphicType(typid) \ (IsPolymorphicTypeFamily1(typid) || \ IsPolymorphicTypeFamily2(typid)) /* Code not part of polymorphic type resolution should not use these macros: */ #define IsPolymorphicTypeFamily1(typid) \ ((typid) == ANYELEMENTOID || \ (typid) == ANYARRAYOID || \ (typid) == ANYNONARRAYOID || \ (typid) == ANYENUMOID || \ (typid) == ANYRANGEOID) #define IsPolymorphicTypeFamily2(typid) \ ((typid) == ANYCOMPATIBLEOID || \ (typid) == ANYCOMPATIBLEARRAYOID || \ (typid) == ANYCOMPATIBLENONARRAYOID || \ (typid) == ANYCOMPATIBLERANGEOID) #define BOOLOID 16 #define BYTEAOID 17 #define CHAROID 18 #define NAMEOID 19 #define INT8OID 20 #define INT2OID 21 #define INT2VECTOROID 22 #define INT4OID 23 #define REGPROCOID 24 #define TEXTOID 25 #define OIDOID 26 #define TIDOID 27 #define XIDOID 28 #define CIDOID 29 #define OIDVECTOROID 30 #define JSONOID 114 #define XMLOID 142 #define PGNODETREEOID 194 #define PGNDISTINCTOID 3361 #define PGDEPENDENCIESOID 3402 #define PGMCVLISTOID 5017 #define PGDDLCOMMANDOID 32 #define XID8OID 5069 #define POINTOID 600 #define LSEGOID 601 #define PATHOID 602 #define BOXOID 603 #define POLYGONOID 604 #define LINEOID 628 #define FLOAT4OID 700 #define FLOAT8OID 701 #define UNKNOWNOID 705 #define CIRCLEOID 718 #define CASHOID 790 #define MACADDROID 829 #define INETOID 869 #define CIDROID 650 #define MACADDR8OID 774 #define ACLITEMOID 1033 #define BPCHAROID 1042 #define VARCHAROID 1043 #define DATEOID 1082 #define TIMEOID 1083 #define TIMESTAMPOID 1114 #define TIMESTAMPTZOID 1184 #define INTERVALOID 1186 #define TIMETZOID 1266 #define BITOID 1560 #define VARBITOID 1562 #define NUMERICOID 1700 #define REFCURSOROID 1790 #define REGPROCEDUREOID 2202 #define REGOPEROID 2203 #define REGOPERATOROID 2204 #define REGCLASSOID 2205 #define REGCOLLATIONOID 4191 #define REGTYPEOID 2206 #define REGROLEOID 4096 #define REGNAMESPACEOID 4089 #define UUIDOID 2950 #define LSNOID 3220 #define TSVECTOROID 3614 #define GTSVECTOROID 3642 #define TSQUERYOID 3615 #define REGCONFIGOID 3734 #define REGDICTIONARYOID 3769 #define JSONBOID 3802 #define JSONPATHOID 4072 #define TXID_SNAPSHOTOID 2970 #define PG_SNAPSHOTOID 5038 #define INT4RANGEOID 3904 #define NUMRANGEOID 3906 #define TSRANGEOID 3908 #define TSTZRANGEOID 3910 #define DATERANGEOID 3912 #define INT8RANGEOID 3926 #define RECORDOID 2249 #define RECORDARRAYOID 2287 #define CSTRINGOID 2275 #define ANYOID 2276 #define ANYARRAYOID 2277 #define VOIDOID 2278 #define TRIGGEROID 2279 #define EVTTRIGGEROID 3838 #define LANGUAGE_HANDLEROID 2280 #define INTERNALOID 2281 #define ANYELEMENTOID 2283 #define ANYNONARRAYOID 2776 #define ANYENUMOID 3500 #define FDW_HANDLEROID 3115 #define INDEX_AM_HANDLEROID 325 #define TSM_HANDLEROID 3310 #define TABLE_AM_HANDLEROID 269 #define ANYRANGEOID 3831 #define ANYCOMPATIBLEOID 5077 #define ANYCOMPATIBLEARRAYOID 5078 #define ANYCOMPATIBLENONARRAYOID 5079 #define ANYCOMPATIBLERANGEOID 5080 #define BOOLARRAYOID 1000 #define BYTEAARRAYOID 1001 #define CHARARRAYOID 1002 #define NAMEARRAYOID 1003 #define INT8ARRAYOID 1016 #define INT2ARRAYOID 1005 #define INT2VECTORARRAYOID 1006 #define INT4ARRAYOID 1007 #define REGPROCARRAYOID 1008 #define TEXTARRAYOID 1009 #define OIDARRAYOID 1028 #define TIDARRAYOID 1010 #define XIDARRAYOID 1011 #define CIDARRAYOID 1012 #define OIDVECTORARRAYOID 1013 #define JSONARRAYOID 199 #define XMLARRAYOID 143 #define XID8ARRAYOID 271 #define POINTARRAYOID 1017 #define LSEGARRAYOID 1018 #define PATHARRAYOID 1019 #define BOXARRAYOID 1020 #define POLYGONARRAYOID 1027 #define LINEARRAYOID 629 #define FLOAT4ARRAYOID 1021 #define FLOAT8ARRAYOID 1022 #define CIRCLEARRAYOID 719 #define MONEYARRAYOID 791 #define MACADDRARRAYOID 1040 #define INETARRAYOID 1041 #define CIDRARRAYOID 651 #define MACADDR8ARRAYOID 775 #define ACLITEMARRAYOID 1034 #define BPCHARARRAYOID 1014 #define VARCHARARRAYOID 1015 #define DATEARRAYOID 1182 #define TIMEARRAYOID 1183 #define TIMESTAMPARRAYOID 1115 #define TIMESTAMPTZARRAYOID 1185 #define INTERVALARRAYOID 1187 #define TIMETZARRAYOID 1270 #define BITARRAYOID 1561 #define VARBITARRAYOID 1563 #define NUMERICARRAYOID 1231 #define REFCURSORARRAYOID 2201 #define REGPROCEDUREARRAYOID 2207 #define REGOPERARRAYOID 2208 #define REGOPERATORARRAYOID 2209 #define REGCLASSARRAYOID 2210 #define REGCOLLATIONARRAYOID 4192 #define REGTYPEARRAYOID 2211 #define REGROLEARRAYOID 4097 #define REGNAMESPACEARRAYOID 4090 #define UUIDARRAYOID 2951 #define PG_LSNARRAYOID 3221 #define TSVECTORARRAYOID 3643 #define GTSVECTORARRAYOID 3644 #define TSQUERYARRAYOID 3645 #define REGCONFIGARRAYOID 3735 #define REGDICTIONARYARRAYOID 3770 #define JSONBARRAYOID 3807 #define JSONPATHARRAYOID 4073 #define TXID_SNAPSHOTARRAYOID 2949 #define PG_SNAPSHOTARRAYOID 5039 #define INT4RANGEARRAYOID 3905 #define NUMRANGEARRAYOID 3907 #define TSRANGEARRAYOID 3909 #define TSTZRANGEARRAYOID 3911 #define DATERANGEARRAYOID 3913 #define INT8RANGEARRAYOID 3927 #define CSTRINGARRAYOID 1263 #endif /* PG_TYPE_D_H */ libpg_query-13-2.1.0/src/postgres/include/catalog/storage.h000066400000000000000000000032361413137616400235760ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * storage.h * prototypes for functions in backend/catalog/storage.c * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/catalog/storage.h * *------------------------------------------------------------------------- */ #ifndef STORAGE_H #define STORAGE_H #include "storage/block.h" #include "storage/relfilenode.h" #include "storage/smgr.h" #include "utils/relcache.h" /* GUC variables */ extern int wal_skip_threshold; extern SMgrRelation RelationCreateStorage(RelFileNode rnode, char relpersistence); extern void RelationDropStorage(Relation rel); extern void RelationPreserveStorage(RelFileNode rnode, bool atCommit); extern void RelationPreTruncate(Relation rel); extern void RelationTruncate(Relation rel, BlockNumber nblocks); extern void RelationCopyStorage(SMgrRelation src, SMgrRelation dst, ForkNumber forkNum, char relpersistence); extern bool RelFileNodeSkippingWAL(RelFileNode rnode); extern Size EstimatePendingSyncsSpace(void); extern void SerializePendingSyncs(Size maxSize, char *startAddress); extern void RestorePendingSyncs(char *startAddress); /* * These functions used to be in storage/smgr/smgr.c, which explains the * naming */ extern void smgrDoPendingDeletes(bool isCommit); extern void smgrDoPendingSyncs(bool isCommit, bool isParallelWorker); extern int smgrGetPendingDeletes(bool forCommit, RelFileNode **ptr); extern void AtSubCommit_smgr(void); extern void AtSubAbort_smgr(void); extern void PostPrepare_smgr(void); #endif /* STORAGE_H */ libpg_query-13-2.1.0/src/postgres/include/commands/000077500000000000000000000000001413137616400221445ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/commands/async.h000066400000000000000000000031061413137616400234320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * async.h * Asynchronous notification: NOTIFY, LISTEN, UNLISTEN * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/async.h * *------------------------------------------------------------------------- */ #ifndef ASYNC_H #define ASYNC_H #include /* * The number of SLRU page buffers we use for the notification queue. */ #define NUM_NOTIFY_BUFFERS 8 extern bool Trace_notify; extern volatile sig_atomic_t notifyInterruptPending; extern Size AsyncShmemSize(void); extern void AsyncShmemInit(void); extern void NotifyMyFrontEnd(const char *channel, const char *payload, int32 srcPid); /* notify-related SQL statements */ extern void Async_Notify(const char *channel, const char *payload); extern void Async_Listen(const char *channel); extern void Async_Unlisten(const char *channel); extern void Async_UnlistenAll(void); /* perform (or cancel) outbound notify processing at transaction commit */ extern void PreCommit_Notify(void); extern void AtCommit_Notify(void); extern void AtAbort_Notify(void); extern void AtSubCommit_Notify(void); extern void AtSubAbort_Notify(void); extern void AtPrepare_Notify(void); extern void ProcessCompletedNotifies(void); /* signal handler for inbound notifies (PROCSIG_NOTIFY_INTERRUPT) */ extern void HandleNotifyInterrupt(void); /* process interrupts */ extern void ProcessNotifyInterrupt(void); #endif /* ASYNC_H */ libpg_query-13-2.1.0/src/postgres/include/commands/dbcommands.h000066400000000000000000000024701413137616400244270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dbcommands.h * Database management commands (create/drop database). * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/dbcommands.h * *------------------------------------------------------------------------- */ #ifndef DBCOMMANDS_H #define DBCOMMANDS_H #include "access/xlogreader.h" #include "catalog/objectaddress.h" #include "lib/stringinfo.h" #include "parser/parse_node.h" extern Oid createdb(ParseState *pstate, const CreatedbStmt *stmt); extern void dropdb(const char *dbname, bool missing_ok, bool force); extern void DropDatabase(ParseState *pstate, DropdbStmt *stmt); extern ObjectAddress RenameDatabase(const char *oldname, const char *newname); extern Oid AlterDatabase(ParseState *pstate, AlterDatabaseStmt *stmt, bool isTopLevel); extern Oid AlterDatabaseSet(AlterDatabaseSetStmt *stmt); extern ObjectAddress AlterDatabaseOwner(const char *dbname, Oid newOwnerId); extern Oid get_database_oid(const char *dbname, bool missing_ok); extern char *get_database_name(Oid dbid); extern void check_encoding_locale_matches(int encoding, const char *collate, const char *ctype); #endif /* DBCOMMANDS_H */ libpg_query-13-2.1.0/src/postgres/include/commands/defrem.h000066400000000000000000000163721413137616400235700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * defrem.h * POSTGRES define and remove utility definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/defrem.h * *------------------------------------------------------------------------- */ #ifndef DEFREM_H #define DEFREM_H #include "catalog/objectaddress.h" #include "nodes/params.h" #include "parser/parse_node.h" #include "tcop/dest.h" #include "utils/array.h" /* commands/dropcmds.c */ extern void RemoveObjects(DropStmt *stmt); /* commands/indexcmds.c */ extern ObjectAddress DefineIndex(Oid relationId, IndexStmt *stmt, Oid indexRelationId, Oid parentIndexId, Oid parentConstraintId, bool is_alter_table, bool check_rights, bool check_not_in_use, bool skip_build, bool quiet); extern void ReindexIndex(RangeVar *indexRelation, int options, bool concurrent); extern Oid ReindexTable(RangeVar *relation, int options, bool concurrent); extern void ReindexMultipleTables(const char *objectName, ReindexObjectType objectKind, int options, bool concurrent); extern char *makeObjectName(const char *name1, const char *name2, const char *label); extern char *ChooseRelationName(const char *name1, const char *name2, const char *label, Oid namespaceid, bool isconstraint); extern bool CheckIndexCompatible(Oid oldId, const char *accessMethodName, List *attributeList, List *exclusionOpNames); extern Oid GetDefaultOpClass(Oid type_id, Oid am_id); extern Oid ResolveOpClass(List *opclass, Oid attrType, const char *accessMethodName, Oid accessMethodId); /* commands/functioncmds.c */ extern ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt); extern void RemoveFunctionById(Oid funcOid); extern ObjectAddress AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt); extern ObjectAddress CreateCast(CreateCastStmt *stmt); extern void DropCastById(Oid castOid); extern ObjectAddress CreateTransform(CreateTransformStmt *stmt); extern void DropTransformById(Oid transformOid); extern void IsThereFunctionInNamespace(const char *proname, int pronargs, oidvector *proargtypes, Oid nspOid); extern void ExecuteDoStmt(DoStmt *stmt, bool atomic); extern void ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver *dest); extern TupleDesc CallStmtResultDesc(CallStmt *stmt); extern Oid get_transform_oid(Oid type_id, Oid lang_id, bool missing_ok); extern void interpret_function_parameter_list(ParseState *pstate, List *parameters, Oid languageOid, ObjectType objtype, oidvector **parameterTypes, ArrayType **allParameterTypes, ArrayType **parameterModes, ArrayType **parameterNames, List **parameterDefaults, Oid *variadicArgType, Oid *requiredResultType); /* commands/operatorcmds.c */ extern ObjectAddress DefineOperator(List *names, List *parameters); extern void RemoveOperatorById(Oid operOid); extern ObjectAddress AlterOperator(AlterOperatorStmt *stmt); /* commands/statscmds.c */ extern ObjectAddress CreateStatistics(CreateStatsStmt *stmt); extern ObjectAddress AlterStatistics(AlterStatsStmt *stmt); extern void RemoveStatisticsById(Oid statsOid); extern void UpdateStatisticsForTypeChange(Oid statsOid, Oid relationOid, int attnum, Oid oldColumnType, Oid newColumnType); /* commands/aggregatecmds.c */ extern ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle, List *parameters, bool replace); /* commands/opclasscmds.c */ extern ObjectAddress DefineOpClass(CreateOpClassStmt *stmt); extern ObjectAddress DefineOpFamily(CreateOpFamilyStmt *stmt); extern Oid AlterOpFamily(AlterOpFamilyStmt *stmt); extern void RemoveOpClassById(Oid opclassOid); extern void RemoveOpFamilyById(Oid opfamilyOid); extern void RemoveAmOpEntryById(Oid entryOid); extern void RemoveAmProcEntryById(Oid entryOid); extern void IsThereOpClassInNamespace(const char *opcname, Oid opcmethod, Oid opcnamespace); extern void IsThereOpFamilyInNamespace(const char *opfname, Oid opfmethod, Oid opfnamespace); extern Oid get_opclass_oid(Oid amID, List *opclassname, bool missing_ok); extern Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok); /* commands/tsearchcmds.c */ extern ObjectAddress DefineTSParser(List *names, List *parameters); extern void RemoveTSParserById(Oid prsId); extern ObjectAddress DefineTSDictionary(List *names, List *parameters); extern void RemoveTSDictionaryById(Oid dictId); extern ObjectAddress AlterTSDictionary(AlterTSDictionaryStmt *stmt); extern ObjectAddress DefineTSTemplate(List *names, List *parameters); extern void RemoveTSTemplateById(Oid tmplId); extern ObjectAddress DefineTSConfiguration(List *names, List *parameters, ObjectAddress *copied); extern void RemoveTSConfigurationById(Oid cfgId); extern ObjectAddress AlterTSConfiguration(AlterTSConfigurationStmt *stmt); extern text *serialize_deflist(List *deflist); extern List *deserialize_deflist(Datum txt); /* commands/foreigncmds.c */ extern ObjectAddress AlterForeignServerOwner(const char *name, Oid newOwnerId); extern void AlterForeignServerOwner_oid(Oid, Oid newOwnerId); extern ObjectAddress AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId); extern void AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId); extern ObjectAddress CreateForeignDataWrapper(CreateFdwStmt *stmt); extern ObjectAddress AlterForeignDataWrapper(AlterFdwStmt *stmt); extern void RemoveForeignDataWrapperById(Oid fdwId); extern ObjectAddress CreateForeignServer(CreateForeignServerStmt *stmt); extern ObjectAddress AlterForeignServer(AlterForeignServerStmt *stmt); extern void RemoveForeignServerById(Oid srvId); extern ObjectAddress CreateUserMapping(CreateUserMappingStmt *stmt); extern ObjectAddress AlterUserMapping(AlterUserMappingStmt *stmt); extern Oid RemoveUserMapping(DropUserMappingStmt *stmt); extern void RemoveUserMappingById(Oid umId); extern void CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid); extern void ImportForeignSchema(ImportForeignSchemaStmt *stmt); extern Datum transformGenericOptions(Oid catalogId, Datum oldOptions, List *options, Oid fdwvalidator); /* commands/amcmds.c */ extern ObjectAddress CreateAccessMethod(CreateAmStmt *stmt); extern void RemoveAccessMethodById(Oid amOid); extern Oid get_index_am_oid(const char *amname, bool missing_ok); extern Oid get_table_am_oid(const char *amname, bool missing_ok); extern Oid get_am_oid(const char *amname, bool missing_ok); extern char *get_am_name(Oid amOid); /* support routines in commands/define.c */ extern char *defGetString(DefElem *def); extern double defGetNumeric(DefElem *def); extern bool defGetBoolean(DefElem *def); extern int32 defGetInt32(DefElem *def); extern int64 defGetInt64(DefElem *def); extern List *defGetQualifiedName(DefElem *def); extern TypeName *defGetTypeName(DefElem *def); extern int defGetTypeLength(DefElem *def); extern List *defGetStringList(DefElem *def); #endif /* DEFREM_H */ libpg_query-13-2.1.0/src/postgres/include/commands/event_trigger.h000066400000000000000000000064311413137616400251650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * event_trigger.h * Declarations for command trigger handling. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/event_trigger.h * *------------------------------------------------------------------------- */ #ifndef EVENT_TRIGGER_H #define EVENT_TRIGGER_H #include "catalog/dependency.h" #include "catalog/objectaddress.h" #include "catalog/pg_event_trigger.h" #include "nodes/parsenodes.h" #include "tcop/cmdtag.h" #include "tcop/deparse_utility.h" #include "utils/aclchk_internal.h" typedef struct EventTriggerData { NodeTag type; const char *event; /* event name */ Node *parsetree; /* parse tree */ CommandTag tag; } EventTriggerData; #define AT_REWRITE_ALTER_PERSISTENCE 0x01 #define AT_REWRITE_DEFAULT_VAL 0x02 #define AT_REWRITE_COLUMN_REWRITE 0x04 /* * EventTriggerData is the node type that is passed as fmgr "context" info * when a function is called by the event trigger manager. */ #define CALLED_AS_EVENT_TRIGGER(fcinfo) \ ((fcinfo)->context != NULL && IsA((fcinfo)->context, EventTriggerData)) extern Oid CreateEventTrigger(CreateEventTrigStmt *stmt); extern void RemoveEventTriggerById(Oid trigOid); extern Oid get_event_trigger_oid(const char *trigname, bool missing_ok); extern Oid AlterEventTrigger(AlterEventTrigStmt *stmt); extern ObjectAddress AlterEventTriggerOwner(const char *name, Oid newOwnerId); extern void AlterEventTriggerOwner_oid(Oid, Oid newOwnerId); extern bool EventTriggerSupportsObjectType(ObjectType obtype); extern bool EventTriggerSupportsObjectClass(ObjectClass objclass); extern void EventTriggerDDLCommandStart(Node *parsetree); extern void EventTriggerDDLCommandEnd(Node *parsetree); extern void EventTriggerSQLDrop(Node *parsetree); extern void EventTriggerTableRewrite(Node *parsetree, Oid tableOid, int reason); extern bool EventTriggerBeginCompleteQuery(void); extern void EventTriggerEndCompleteQuery(void); extern bool trackDroppedObjectsNeeded(void); extern void EventTriggerSQLDropAddObject(const ObjectAddress *object, bool original, bool normal); extern void EventTriggerInhibitCommandCollection(void); extern void EventTriggerUndoInhibitCommandCollection(void); extern void EventTriggerCollectSimpleCommand(ObjectAddress address, ObjectAddress secondaryObject, Node *parsetree); extern void EventTriggerAlterTableStart(Node *parsetree); extern void EventTriggerAlterTableRelid(Oid objectId); extern void EventTriggerCollectAlterTableSubcmd(Node *subcmd, ObjectAddress address); extern void EventTriggerAlterTableEnd(void); extern void EventTriggerCollectGrant(InternalGrant *istmt); extern void EventTriggerCollectAlterOpFam(AlterOpFamilyStmt *stmt, Oid opfamoid, List *operators, List *procedures); extern void EventTriggerCollectCreateOpClass(CreateOpClassStmt *stmt, Oid opcoid, List *operators, List *procedures); extern void EventTriggerCollectAlterTSConfig(AlterTSConfigurationStmt *stmt, Oid cfgId, Oid *dictIds, int ndicts); extern void EventTriggerCollectAlterDefPrivs(AlterDefaultPrivilegesStmt *stmt); #endif /* EVENT_TRIGGER_H */ libpg_query-13-2.1.0/src/postgres/include/commands/explain.h000066400000000000000000000115541413137616400237630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * explain.h * prototypes for explain.c * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994-5, Regents of the University of California * * src/include/commands/explain.h * *------------------------------------------------------------------------- */ #ifndef EXPLAIN_H #define EXPLAIN_H #include "executor/executor.h" #include "lib/stringinfo.h" #include "parser/parse_node.h" typedef enum ExplainFormat { EXPLAIN_FORMAT_TEXT, EXPLAIN_FORMAT_XML, EXPLAIN_FORMAT_JSON, EXPLAIN_FORMAT_YAML } ExplainFormat; typedef struct ExplainWorkersState { int num_workers; /* # of worker processes the plan used */ bool *worker_inited; /* per-worker state-initialized flags */ StringInfoData *worker_str; /* per-worker transient output buffers */ int *worker_state_save; /* per-worker grouping state save areas */ StringInfo prev_str; /* saved output buffer while redirecting */ } ExplainWorkersState; typedef struct ExplainState { StringInfo str; /* output buffer */ /* options */ bool verbose; /* be verbose */ bool analyze; /* print actual times */ bool costs; /* print estimated costs */ bool buffers; /* print buffer usage */ bool wal; /* print WAL usage */ bool timing; /* print detailed node timing */ bool summary; /* print total planning and execution timing */ bool settings; /* print modified settings */ ExplainFormat format; /* output format */ /* state for output formatting --- not reset for each new plan tree */ int indent; /* current indentation level */ List *grouping_stack; /* format-specific grouping state */ /* state related to the current plan tree (filled by ExplainPrintPlan) */ PlannedStmt *pstmt; /* top of plan */ List *rtable; /* range table */ List *rtable_names; /* alias names for RTEs */ List *deparse_cxt; /* context list for deparsing expressions */ Bitmapset *printed_subplans; /* ids of SubPlans we've printed */ bool hide_workers; /* set if we find an invisible Gather */ /* state related to the current plan node */ ExplainWorkersState *workers_state; /* needed if parallel plan */ } ExplainState; /* Hook for plugins to get control in ExplainOneQuery() */ typedef void (*ExplainOneQuery_hook_type) (Query *query, int cursorOptions, IntoClause *into, ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv); extern PGDLLIMPORT ExplainOneQuery_hook_type ExplainOneQuery_hook; /* Hook for plugins to get control in explain_get_index_name() */ typedef const char *(*explain_get_index_name_hook_type) (Oid indexId); extern PGDLLIMPORT explain_get_index_name_hook_type explain_get_index_name_hook; extern void ExplainQuery(ParseState *pstate, ExplainStmt *stmt, ParamListInfo params, DestReceiver *dest); extern ExplainState *NewExplainState(void); extern TupleDesc ExplainResultDesc(ExplainStmt *stmt); extern void ExplainOneUtility(Node *utilityStmt, IntoClause *into, ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv); extern void ExplainOnePlan(PlannedStmt *plannedstmt, IntoClause *into, ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv, const instr_time *planduration, const BufferUsage *bufusage); extern void ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc); extern void ExplainPrintTriggers(ExplainState *es, QueryDesc *queryDesc); extern void ExplainPrintJITSummary(ExplainState *es, QueryDesc *queryDesc); extern void ExplainQueryText(ExplainState *es, QueryDesc *queryDesc); extern void ExplainBeginOutput(ExplainState *es); extern void ExplainEndOutput(ExplainState *es); extern void ExplainSeparatePlans(ExplainState *es); extern void ExplainPropertyList(const char *qlabel, List *data, ExplainState *es); extern void ExplainPropertyListNested(const char *qlabel, List *data, ExplainState *es); extern void ExplainPropertyText(const char *qlabel, const char *value, ExplainState *es); extern void ExplainPropertyInteger(const char *qlabel, const char *unit, int64 value, ExplainState *es); extern void ExplainPropertyUInteger(const char *qlabel, const char *unit, uint64 value, ExplainState *es); extern void ExplainPropertyFloat(const char *qlabel, const char *unit, double value, int ndigits, ExplainState *es); extern void ExplainPropertyBool(const char *qlabel, bool value, ExplainState *es); extern void ExplainOpenGroup(const char *objtype, const char *labelname, bool labeled, ExplainState *es); extern void ExplainCloseGroup(const char *objtype, const char *labelname, bool labeled, ExplainState *es); #endif /* EXPLAIN_H */ libpg_query-13-2.1.0/src/postgres/include/commands/prepare.h000066400000000000000000000042311413137616400237530ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * prepare.h * PREPARE, EXECUTE and DEALLOCATE commands, and prepared-stmt storage * * * Copyright (c) 2002-2020, PostgreSQL Global Development Group * * src/include/commands/prepare.h * *------------------------------------------------------------------------- */ #ifndef PREPARE_H #define PREPARE_H #include "commands/explain.h" #include "datatype/timestamp.h" #include "utils/plancache.h" /* * The data structure representing a prepared statement. This is now just * a thin veneer over a plancache entry --- the main addition is that of * a name. * * Note: all subsidiary storage lives in the referenced plancache entry. */ typedef struct { /* dynahash.c requires key to be first field */ char stmt_name[NAMEDATALEN]; CachedPlanSource *plansource; /* the actual cached plan */ bool from_sql; /* prepared via SQL, not FE/BE protocol? */ TimestampTz prepare_time; /* the time when the stmt was prepared */ } PreparedStatement; /* Utility statements PREPARE, EXECUTE, DEALLOCATE, EXPLAIN EXECUTE */ extern void PrepareQuery(ParseState *pstate, PrepareStmt *stmt, int stmt_location, int stmt_len); extern void ExecuteQuery(ParseState *pstate, ExecuteStmt *stmt, IntoClause *intoClause, ParamListInfo params, DestReceiver *dest, QueryCompletion *qc); extern void DeallocateQuery(DeallocateStmt *stmt); extern void ExplainExecuteQuery(ExecuteStmt *execstmt, IntoClause *into, ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv); /* Low-level access to stored prepared statements */ extern void StorePreparedStatement(const char *stmt_name, CachedPlanSource *plansource, bool from_sql); extern PreparedStatement *FetchPreparedStatement(const char *stmt_name, bool throwError); extern void DropPreparedStatement(const char *stmt_name, bool showError); extern TupleDesc FetchPreparedStatementResultDesc(PreparedStatement *stmt); extern List *FetchPreparedStatementTargetList(PreparedStatement *stmt); extern void DropAllPreparedStatements(void); #endif /* PREPARE_H */ libpg_query-13-2.1.0/src/postgres/include/commands/tablespace.h000066400000000000000000000037361413137616400244310ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tablespace.h * Tablespace management commands (create/drop tablespace). * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/tablespace.h * *------------------------------------------------------------------------- */ #ifndef TABLESPACE_H #define TABLESPACE_H #include "access/xlogreader.h" #include "catalog/objectaddress.h" #include "lib/stringinfo.h" #include "nodes/parsenodes.h" /* XLOG stuff */ #define XLOG_TBLSPC_CREATE 0x00 #define XLOG_TBLSPC_DROP 0x10 typedef struct xl_tblspc_create_rec { Oid ts_id; char ts_path[FLEXIBLE_ARRAY_MEMBER]; /* null-terminated string */ } xl_tblspc_create_rec; typedef struct xl_tblspc_drop_rec { Oid ts_id; } xl_tblspc_drop_rec; typedef struct TableSpaceOpts { int32 vl_len_; /* varlena header (do not touch directly!) */ float8 random_page_cost; float8 seq_page_cost; int effective_io_concurrency; int maintenance_io_concurrency; } TableSpaceOpts; extern Oid CreateTableSpace(CreateTableSpaceStmt *stmt); extern void DropTableSpace(DropTableSpaceStmt *stmt); extern ObjectAddress RenameTableSpace(const char *oldname, const char *newname); extern Oid AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt); extern void TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo); extern Oid GetDefaultTablespace(char relpersistence, bool partitioned); extern void PrepareTempTablespaces(void); extern Oid get_tablespace_oid(const char *tablespacename, bool missing_ok); extern char *get_tablespace_name(Oid spc_oid); extern bool directory_is_empty(const char *path); extern void remove_tablespace_symlink(const char *linkloc); extern void tblspc_redo(XLogReaderState *rptr); extern void tblspc_desc(StringInfo buf, XLogReaderState *rptr); extern const char *tblspc_identify(uint8 info); #endif /* TABLESPACE_H */ libpg_query-13-2.1.0/src/postgres/include/commands/trigger.h000066400000000000000000000227171413137616400237710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * trigger.h * Declarations for trigger handling. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/trigger.h * *------------------------------------------------------------------------- */ #ifndef TRIGGER_H #define TRIGGER_H #include "catalog/objectaddress.h" #include "nodes/execnodes.h" #include "nodes/parsenodes.h" /* * TriggerData is the node type that is passed as fmgr "context" info * when a function is called by the trigger manager. */ #define CALLED_AS_TRIGGER(fcinfo) \ ((fcinfo)->context != NULL && IsA((fcinfo)->context, TriggerData)) typedef uint32 TriggerEvent; typedef struct TriggerData { NodeTag type; TriggerEvent tg_event; Relation tg_relation; HeapTuple tg_trigtuple; HeapTuple tg_newtuple; Trigger *tg_trigger; TupleTableSlot *tg_trigslot; TupleTableSlot *tg_newslot; Tuplestorestate *tg_oldtable; Tuplestorestate *tg_newtable; const Bitmapset *tg_updatedcols; } TriggerData; /* * The state for capturing old and new tuples into transition tables for a * single ModifyTable node (or other operation source, e.g. copy.c). * * This is per-caller to avoid conflicts in setting tcs_map or * tcs_original_insert_tuple. Note, however, that the pointed-to * private data may be shared across multiple callers. */ struct AfterTriggersTableData; /* private in trigger.c */ typedef struct TransitionCaptureState { /* * Is there at least one trigger specifying each transition relation on * the relation explicitly named in the DML statement or COPY command? * Note: in current usage, these flags could be part of the private state, * but it seems possibly useful to let callers see them. */ bool tcs_delete_old_table; bool tcs_update_old_table; bool tcs_update_new_table; bool tcs_insert_new_table; /* * For UPDATE and DELETE, AfterTriggerSaveEvent may need to convert the * new and old tuples from a child table's format to the format of the * relation named in a query so that it is compatible with the transition * tuplestores. The caller must store the conversion map here if so. */ TupleConversionMap *tcs_map; /* * For INSERT and COPY, it would be wasteful to convert tuples from child * format to parent format after they have already been converted in the * opposite direction during routing. In that case we bypass conversion * and allow the inserting code (copy.c and nodeModifyTable.c) to provide * a slot containing the original tuple directly. */ TupleTableSlot *tcs_original_insert_tuple; /* * Private data including the tuplestore(s) into which to insert tuples. */ struct AfterTriggersTableData *tcs_private; } TransitionCaptureState; /* * TriggerEvent bit flags * * Note that we assume different event types (INSERT/DELETE/UPDATE/TRUNCATE) * can't be OR'd together in a single TriggerEvent. This is unlike the * situation for pg_trigger rows, so pg_trigger.tgtype uses a different * representation! */ #define TRIGGER_EVENT_INSERT 0x00000000 #define TRIGGER_EVENT_DELETE 0x00000001 #define TRIGGER_EVENT_UPDATE 0x00000002 #define TRIGGER_EVENT_TRUNCATE 0x00000003 #define TRIGGER_EVENT_OPMASK 0x00000003 #define TRIGGER_EVENT_ROW 0x00000004 #define TRIGGER_EVENT_BEFORE 0x00000008 #define TRIGGER_EVENT_AFTER 0x00000000 #define TRIGGER_EVENT_INSTEAD 0x00000010 #define TRIGGER_EVENT_TIMINGMASK 0x00000018 /* More TriggerEvent flags, used only within trigger.c */ #define AFTER_TRIGGER_DEFERRABLE 0x00000020 #define AFTER_TRIGGER_INITDEFERRED 0x00000040 #define TRIGGER_FIRED_BY_INSERT(event) \ (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_INSERT) #define TRIGGER_FIRED_BY_DELETE(event) \ (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_DELETE) #define TRIGGER_FIRED_BY_UPDATE(event) \ (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_UPDATE) #define TRIGGER_FIRED_BY_TRUNCATE(event) \ (((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_TRUNCATE) #define TRIGGER_FIRED_FOR_ROW(event) \ ((event) & TRIGGER_EVENT_ROW) #define TRIGGER_FIRED_FOR_STATEMENT(event) \ (!TRIGGER_FIRED_FOR_ROW(event)) #define TRIGGER_FIRED_BEFORE(event) \ (((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_BEFORE) #define TRIGGER_FIRED_AFTER(event) \ (((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_AFTER) #define TRIGGER_FIRED_INSTEAD(event) \ (((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_INSTEAD) /* * Definitions for replication role based firing. */ #define SESSION_REPLICATION_ROLE_ORIGIN 0 #define SESSION_REPLICATION_ROLE_REPLICA 1 #define SESSION_REPLICATION_ROLE_LOCAL 2 extern PGDLLIMPORT int SessionReplicationRole; /* * States at which a trigger can be fired. These are the * possible values for pg_trigger.tgenabled. */ #define TRIGGER_FIRES_ON_ORIGIN 'O' #define TRIGGER_FIRES_ALWAYS 'A' #define TRIGGER_FIRES_ON_REPLICA 'R' #define TRIGGER_DISABLED 'D' extern ObjectAddress CreateTrigger(CreateTrigStmt *stmt, const char *queryString, Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid, Oid funcoid, Oid parentTriggerOid, Node *whenClause, bool isInternal, bool in_partition); extern void RemoveTriggerById(Oid trigOid); extern Oid get_trigger_oid(Oid relid, const char *name, bool missing_ok); extern ObjectAddress renametrig(RenameStmt *stmt); extern void EnableDisableTrigger(Relation rel, const char *tgname, char fires_when, bool skip_system, LOCKMODE lockmode); extern void RelationBuildTriggers(Relation relation); extern TriggerDesc *CopyTriggerDesc(TriggerDesc *trigdesc); extern const char *FindTriggerIncompatibleWithInheritance(TriggerDesc *trigdesc); extern TransitionCaptureState *MakeTransitionCaptureState(TriggerDesc *trigdesc, Oid relid, CmdType cmdType); extern void FreeTriggerDesc(TriggerDesc *trigdesc); extern void ExecBSInsertTriggers(EState *estate, ResultRelInfo *relinfo); extern void ExecASInsertTriggers(EState *estate, ResultRelInfo *relinfo, TransitionCaptureState *transition_capture); extern bool ExecBRInsertTriggers(EState *estate, ResultRelInfo *relinfo, TupleTableSlot *slot); extern void ExecARInsertTriggers(EState *estate, ResultRelInfo *relinfo, TupleTableSlot *slot, List *recheckIndexes, TransitionCaptureState *transition_capture); extern bool ExecIRInsertTriggers(EState *estate, ResultRelInfo *relinfo, TupleTableSlot *slot); extern void ExecBSDeleteTriggers(EState *estate, ResultRelInfo *relinfo); extern void ExecASDeleteTriggers(EState *estate, ResultRelInfo *relinfo, TransitionCaptureState *transition_capture); extern bool ExecBRDeleteTriggers(EState *estate, EPQState *epqstate, ResultRelInfo *relinfo, ItemPointer tupleid, HeapTuple fdw_trigtuple, TupleTableSlot **epqslot); extern void ExecARDeleteTriggers(EState *estate, ResultRelInfo *relinfo, ItemPointer tupleid, HeapTuple fdw_trigtuple, TransitionCaptureState *transition_capture); extern bool ExecIRDeleteTriggers(EState *estate, ResultRelInfo *relinfo, HeapTuple trigtuple); extern void ExecBSUpdateTriggers(EState *estate, ResultRelInfo *relinfo); extern void ExecASUpdateTriggers(EState *estate, ResultRelInfo *relinfo, TransitionCaptureState *transition_capture); extern bool ExecBRUpdateTriggers(EState *estate, EPQState *epqstate, ResultRelInfo *relinfo, ItemPointer tupleid, HeapTuple fdw_trigtuple, TupleTableSlot *slot); extern void ExecARUpdateTriggers(EState *estate, ResultRelInfo *relinfo, ItemPointer tupleid, HeapTuple fdw_trigtuple, TupleTableSlot *slot, List *recheckIndexes, TransitionCaptureState *transition_capture); extern bool ExecIRUpdateTriggers(EState *estate, ResultRelInfo *relinfo, HeapTuple trigtuple, TupleTableSlot *slot); extern void ExecBSTruncateTriggers(EState *estate, ResultRelInfo *relinfo); extern void ExecASTruncateTriggers(EState *estate, ResultRelInfo *relinfo); extern void AfterTriggerBeginXact(void); extern void AfterTriggerBeginQuery(void); extern void AfterTriggerEndQuery(EState *estate); extern void AfterTriggerFireDeferred(void); extern void AfterTriggerEndXact(bool isCommit); extern void AfterTriggerBeginSubXact(void); extern void AfterTriggerEndSubXact(bool isCommit); extern void AfterTriggerSetState(ConstraintsSetStmt *stmt); extern bool AfterTriggerPendingOnRel(Oid relid); /* * in utils/adt/ri_triggers.c */ extern bool RI_FKey_pk_upd_check_required(Trigger *trigger, Relation pk_rel, TupleTableSlot *old_slot, TupleTableSlot *new_slot); extern bool RI_FKey_fk_upd_check_required(Trigger *trigger, Relation fk_rel, TupleTableSlot *old_slot, TupleTableSlot *new_slot); extern bool RI_Initial_Check(Trigger *trigger, Relation fk_rel, Relation pk_rel); extern void RI_PartitionRemove_Check(Trigger *trigger, Relation fk_rel, Relation pk_rel); /* result values for RI_FKey_trigger_type: */ #define RI_TRIGGER_PK 1 /* is a trigger on the PK relation */ #define RI_TRIGGER_FK 2 /* is a trigger on the FK relation */ #define RI_TRIGGER_NONE 0 /* is not an RI trigger function */ extern int RI_FKey_trigger_type(Oid tgfoid); #endif /* TRIGGER_H */ libpg_query-13-2.1.0/src/postgres/include/commands/user.h000066400000000000000000000024211413137616400232720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * user.h * Commands for manipulating roles (formerly called users). * * * src/include/commands/user.h * *------------------------------------------------------------------------- */ #ifndef USER_H #define USER_H #include "catalog/objectaddress.h" #include "libpq/crypt.h" #include "nodes/parsenodes.h" #include "parser/parse_node.h" /* GUC. Is actually of type PasswordType. */ extern int Password_encryption; /* Hook to check passwords in CreateRole() and AlterRole() */ typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null); extern PGDLLIMPORT check_password_hook_type check_password_hook; extern Oid CreateRole(ParseState *pstate, CreateRoleStmt *stmt); extern Oid AlterRole(AlterRoleStmt *stmt); extern Oid AlterRoleSet(AlterRoleSetStmt *stmt); extern void DropRole(DropRoleStmt *stmt); extern void GrantRole(GrantRoleStmt *stmt); extern ObjectAddress RenameRole(const char *oldname, const char *newname); extern void DropOwnedObjects(DropOwnedStmt *stmt); extern void ReassignOwnedObjects(ReassignOwnedStmt *stmt); extern List *roleSpecsToIds(List *memberNames); #endif /* USER_H */ libpg_query-13-2.1.0/src/postgres/include/commands/vacuum.h000066400000000000000000000261471413137616400236270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * vacuum.h * header file for postgres vacuum cleaner and statistics analyzer * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/vacuum.h * *------------------------------------------------------------------------- */ #ifndef VACUUM_H #define VACUUM_H #include "access/htup.h" #include "catalog/pg_class.h" #include "catalog/pg_statistic.h" #include "catalog/pg_type.h" #include "parser/parse_node.h" #include "storage/buf.h" #include "storage/lock.h" #include "utils/relcache.h" /* * Flags for amparallelvacuumoptions to control the participation of bulkdelete * and vacuumcleanup in parallel vacuum. */ /* * Both bulkdelete and vacuumcleanup are disabled by default. This will be * used by IndexAM's that don't want to or cannot participate in parallel * vacuum. For example, if an index AM doesn't have a way to communicate the * index statistics allocated by the first ambulkdelete call to the subsequent * ones until amvacuumcleanup, the index AM cannot participate in parallel * vacuum. */ #define VACUUM_OPTION_NO_PARALLEL 0 /* * bulkdelete can be performed in parallel. This option can be used by * IndexAm's that need to scan the index to delete the tuples. */ #define VACUUM_OPTION_PARALLEL_BULKDEL (1 << 0) /* * vacuumcleanup can be performed in parallel if bulkdelete is not performed * yet. This will be used by IndexAM's that can scan the index if the * bulkdelete is not performed. */ #define VACUUM_OPTION_PARALLEL_COND_CLEANUP (1 << 1) /* * vacuumcleanup can be performed in parallel even if bulkdelete has already * processed the index. This will be used by IndexAM's that scan the index * during the cleanup phase of index irrespective of whether the index is * already scanned or not during bulkdelete phase. */ #define VACUUM_OPTION_PARALLEL_CLEANUP (1 << 2) /* value for checking vacuum flags */ #define VACUUM_OPTION_MAX_VALID_VALUE ((1 << 3) - 1) /*---------- * ANALYZE builds one of these structs for each attribute (column) that is * to be analyzed. The struct and subsidiary data are in anl_context, * so they live until the end of the ANALYZE operation. * * The type-specific typanalyze function is passed a pointer to this struct * and must return true to continue analysis, false to skip analysis of this * column. In the true case it must set the compute_stats and minrows fields, * and can optionally set extra_data to pass additional info to compute_stats. * minrows is its request for the minimum number of sample rows to be gathered * (but note this request might not be honored, eg if there are fewer rows * than that in the table). * * The compute_stats routine will be called after sample rows have been * gathered. Aside from this struct, it is passed: * fetchfunc: a function for accessing the column values from the * sample rows * samplerows: the number of sample tuples * totalrows: estimated total number of rows in relation * The fetchfunc may be called with rownum running from 0 to samplerows-1. * It returns a Datum and an isNull flag. * * compute_stats should set stats_valid true if it is able to compute * any useful statistics. If it does, the remainder of the struct holds * the information to be stored in a pg_statistic row for the column. Be * careful to allocate any pointed-to data in anl_context, which will NOT * be CurrentMemoryContext when compute_stats is called. * * Note: all comparisons done for statistical purposes should use the * underlying column's collation (attcollation), except in situations * where a noncollatable container type contains a collatable type; * in that case use the type's default collation. Be sure to record * the appropriate collation in stacoll. *---------- */ typedef struct VacAttrStats *VacAttrStatsP; typedef Datum (*AnalyzeAttrFetchFunc) (VacAttrStatsP stats, int rownum, bool *isNull); typedef void (*AnalyzeAttrComputeStatsFunc) (VacAttrStatsP stats, AnalyzeAttrFetchFunc fetchfunc, int samplerows, double totalrows); typedef struct VacAttrStats { /* * These fields are set up by the main ANALYZE code before invoking the * type-specific typanalyze function. * * Note: do not assume that the data being analyzed has the same datatype * shown in attr, ie do not trust attr->atttypid, attlen, etc. This is * because some index opclasses store a different type than the underlying * column/expression. Instead use attrtypid, attrtypmod, and attrtype for * information about the datatype being fed to the typanalyze function. * Likewise, use attrcollid not attr->attcollation. */ Form_pg_attribute attr; /* copy of pg_attribute row for column */ Oid attrtypid; /* type of data being analyzed */ int32 attrtypmod; /* typmod of data being analyzed */ Form_pg_type attrtype; /* copy of pg_type row for attrtypid */ Oid attrcollid; /* collation of data being analyzed */ MemoryContext anl_context; /* where to save long-lived data */ /* * These fields must be filled in by the typanalyze routine, unless it * returns false. */ AnalyzeAttrComputeStatsFunc compute_stats; /* function pointer */ int minrows; /* Minimum # of rows wanted for stats */ void *extra_data; /* for extra type-specific data */ /* * These fields are to be filled in by the compute_stats routine. (They * are initialized to zero when the struct is created.) */ bool stats_valid; float4 stanullfrac; /* fraction of entries that are NULL */ int32 stawidth; /* average width of column values */ float4 stadistinct; /* # distinct values */ int16 stakind[STATISTIC_NUM_SLOTS]; Oid staop[STATISTIC_NUM_SLOTS]; Oid stacoll[STATISTIC_NUM_SLOTS]; int numnumbers[STATISTIC_NUM_SLOTS]; float4 *stanumbers[STATISTIC_NUM_SLOTS]; int numvalues[STATISTIC_NUM_SLOTS]; Datum *stavalues[STATISTIC_NUM_SLOTS]; /* * These fields describe the stavalues[n] element types. They will be * initialized to match attrtypid, but a custom typanalyze function might * want to store an array of something other than the analyzed column's * elements. It should then overwrite these fields. */ Oid statypid[STATISTIC_NUM_SLOTS]; int16 statyplen[STATISTIC_NUM_SLOTS]; bool statypbyval[STATISTIC_NUM_SLOTS]; char statypalign[STATISTIC_NUM_SLOTS]; /* * These fields are private to the main ANALYZE code and should not be * looked at by type-specific functions. */ int tupattnum; /* attribute number within tuples */ HeapTuple *rows; /* access info for std fetch function */ TupleDesc tupDesc; Datum *exprvals; /* access info for index fetch function */ bool *exprnulls; int rowstride; } VacAttrStats; typedef enum VacuumOption { VACOPT_VACUUM = 1 << 0, /* do VACUUM */ VACOPT_ANALYZE = 1 << 1, /* do ANALYZE */ VACOPT_VERBOSE = 1 << 2, /* print progress info */ VACOPT_FREEZE = 1 << 3, /* FREEZE option */ VACOPT_FULL = 1 << 4, /* FULL (non-concurrent) vacuum */ VACOPT_SKIP_LOCKED = 1 << 5, /* skip if cannot get lock */ VACOPT_SKIPTOAST = 1 << 6, /* don't process the TOAST table, if any */ VACOPT_DISABLE_PAGE_SKIPPING = 1 << 7 /* don't skip any pages */ } VacuumOption; /* * A ternary value used by vacuum parameters. * * DEFAULT value is used to determine the value based on other * configurations, e.g. reloptions. */ typedef enum VacOptTernaryValue { VACOPT_TERNARY_DEFAULT = 0, VACOPT_TERNARY_DISABLED, VACOPT_TERNARY_ENABLED, } VacOptTernaryValue; /* * Parameters customizing behavior of VACUUM and ANALYZE. * * Note that at least one of VACOPT_VACUUM and VACOPT_ANALYZE must be set * in options. */ typedef struct VacuumParams { int options; /* bitmask of VacuumOption */ int freeze_min_age; /* min freeze age, -1 to use default */ int freeze_table_age; /* age at which to scan whole table */ int multixact_freeze_min_age; /* min multixact freeze age, -1 to * use default */ int multixact_freeze_table_age; /* multixact age at which to scan * whole table */ bool is_wraparound; /* force a for-wraparound vacuum */ int log_min_duration; /* minimum execution threshold in ms at * which verbose logs are activated, -1 * to use default */ VacOptTernaryValue index_cleanup; /* Do index vacuum and cleanup, * default value depends on reloptions */ VacOptTernaryValue truncate; /* Truncate empty pages at the end, * default value depends on reloptions */ /* * The number of parallel vacuum workers. 0 by default which means choose * based on the number of indexes. -1 indicates parallel vacuum is * disabled. */ int nworkers; } VacuumParams; /* GUC parameters */ extern PGDLLIMPORT int default_statistics_target; /* PGDLLIMPORT for PostGIS */ extern int vacuum_freeze_min_age; extern int vacuum_freeze_table_age; extern int vacuum_multixact_freeze_min_age; extern int vacuum_multixact_freeze_table_age; /* Variables for cost-based parallel vacuum */ extern pg_atomic_uint32 *VacuumSharedCostBalance; extern pg_atomic_uint32 *VacuumActiveNWorkers; extern int VacuumCostBalanceLocal; /* in commands/vacuum.c */ extern void ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel); extern void vacuum(List *relations, VacuumParams *params, BufferAccessStrategy bstrategy, bool isTopLevel); extern void vac_open_indexes(Relation relation, LOCKMODE lockmode, int *nindexes, Relation **Irel); extern void vac_close_indexes(int nindexes, Relation *Irel, LOCKMODE lockmode); extern double vac_estimate_reltuples(Relation relation, BlockNumber total_pages, BlockNumber scanned_pages, double scanned_tuples); extern void vac_update_relstats(Relation relation, BlockNumber num_pages, double num_tuples, BlockNumber num_all_visible_pages, bool hasindex, TransactionId frozenxid, MultiXactId minmulti, bool in_outer_xact); extern void vacuum_set_xid_limits(Relation rel, int freeze_min_age, int freeze_table_age, int multixact_freeze_min_age, int multixact_freeze_table_age, TransactionId *oldestXmin, TransactionId *freezeLimit, TransactionId *xidFullScanLimit, MultiXactId *multiXactCutoff, MultiXactId *mxactFullScanLimit); extern void vac_update_datfrozenxid(void); extern void vacuum_delay_point(void); extern bool vacuum_is_relation_owner(Oid relid, Form_pg_class reltuple, int options); extern Relation vacuum_open_relation(Oid relid, RangeVar *relation, int options, bool verbose, LOCKMODE lmode); /* in commands/analyze.c */ extern void analyze_rel(Oid relid, RangeVar *relation, VacuumParams *params, List *va_cols, bool in_outer_xact, BufferAccessStrategy bstrategy); extern bool std_typanalyze(VacAttrStats *stats); /* in utils/misc/sampling.c --- duplicate of declarations in utils/sampling.h */ extern double anl_random_fract(void); extern double anl_init_selection_state(int n); extern double anl_get_next_S(double t, int n, double *stateptr); #endif /* VACUUM_H */ libpg_query-13-2.1.0/src/postgres/include/commands/variable.h000066400000000000000000000033551413137616400241100ustar00rootroot00000000000000/* * variable.h * Routines for handling specialized SET variables. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/commands/variable.h */ #ifndef VARIABLE_H #define VARIABLE_H #include "utils/guc.h" extern bool check_datestyle(char **newval, void **extra, GucSource source); extern void assign_datestyle(const char *newval, void *extra); extern bool check_timezone(char **newval, void **extra, GucSource source); extern void assign_timezone(const char *newval, void *extra); extern const char *show_timezone(void); extern bool check_log_timezone(char **newval, void **extra, GucSource source); extern void assign_log_timezone(const char *newval, void *extra); extern const char *show_log_timezone(void); extern bool check_transaction_read_only(bool *newval, void **extra, GucSource source); extern bool check_XactIsoLevel(int *newval, void **extra, GucSource source); extern bool check_transaction_deferrable(bool *newval, void **extra, GucSource source); extern bool check_random_seed(double *newval, void **extra, GucSource source); extern void assign_random_seed(double newval, void *extra); extern const char *show_random_seed(void); extern bool check_client_encoding(char **newval, void **extra, GucSource source); extern void assign_client_encoding(const char *newval, void *extra); extern bool check_session_authorization(char **newval, void **extra, GucSource source); extern void assign_session_authorization(const char *newval, void *extra); extern bool check_role(char **newval, void **extra, GucSource source); extern void assign_role(const char *newval, void *extra); extern const char *show_role(void); #endif /* VARIABLE_H */ libpg_query-13-2.1.0/src/postgres/include/common/000077500000000000000000000000001413137616400216335ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/common/file_perm.h000066400000000000000000000032201413137616400237430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * File and directory permission definitions * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/file_perm.h * *------------------------------------------------------------------------- */ #ifndef FILE_PERM_H #define FILE_PERM_H #include /* * Mode mask for data directory permissions that only allows the owner to * read/write directories and files. * * This is the default. */ #define PG_MODE_MASK_OWNER (S_IRWXG | S_IRWXO) /* * Mode mask for data directory permissions that also allows group read/execute. */ #define PG_MODE_MASK_GROUP (S_IWGRP | S_IRWXO) /* Default mode for creating directories */ #define PG_DIR_MODE_OWNER S_IRWXU /* Mode for creating directories that allows group read/execute */ #define PG_DIR_MODE_GROUP (S_IRWXU | S_IRGRP | S_IXGRP) /* Default mode for creating files */ #define PG_FILE_MODE_OWNER (S_IRUSR | S_IWUSR) /* Mode for creating files that allows group read */ #define PG_FILE_MODE_GROUP (S_IRUSR | S_IWUSR | S_IRGRP) /* Modes for creating directories and files in the data directory */ extern int pg_dir_create_mode; extern int pg_file_create_mode; /* Mode mask to pass to umask() */ extern int pg_mode_mask; /* Set permissions and mask based on the provided mode */ extern void SetDataDirectoryCreatePerm(int dataDirMode); /* Set permissions and mask based on the mode of the data directory */ extern bool GetDataDirectoryCreatePerm(const char *dataDir); #endif /* FILE_PERM_H */ libpg_query-13-2.1.0/src/postgres/include/common/hashfn.h000066400000000000000000000047761413137616400232710ustar00rootroot00000000000000/* * Utilities for working with hash values. * * Portions Copyright (c) 2017-2020, PostgreSQL Global Development Group */ #ifndef HASHFN_H #define HASHFN_H /* * Rotate the high 32 bits and the low 32 bits separately. The standard * hash function sometimes rotates the low 32 bits by one bit when * combining elements. We want extended hash functions to be compatible with * that algorithm when the seed is 0, so we can't just do a normal rotation. * This works, though. */ #define ROTATE_HIGH_AND_LOW_32BITS(v) \ ((((v) << 1) & UINT64CONST(0xfffffffefffffffe)) | \ (((v) >> 31) & UINT64CONST(0x100000001))) extern uint32 hash_bytes(const unsigned char *k, int keylen); extern uint64 hash_bytes_extended(const unsigned char *k, int keylen, uint64 seed); extern uint32 hash_bytes_uint32(uint32 k); extern uint64 hash_bytes_uint32_extended(uint32 k, uint64 seed); #ifndef FRONTEND static inline Datum hash_any(const unsigned char *k, int keylen) { return UInt32GetDatum(hash_bytes(k, keylen)); } static inline Datum hash_any_extended(const unsigned char *k, int keylen, uint64 seed) { return UInt64GetDatum(hash_bytes_extended(k, keylen, seed)); } static inline Datum hash_uint32(uint32 k) { return UInt32GetDatum(hash_bytes_uint32(k)); } static inline Datum hash_uint32_extended(uint32 k, uint64 seed) { return UInt64GetDatum(hash_bytes_uint32_extended(k, seed)); } #endif extern uint32 string_hash(const void *key, Size keysize); extern uint32 tag_hash(const void *key, Size keysize); extern uint32 uint32_hash(const void *key, Size keysize); #define oid_hash uint32_hash /* Remove me eventually */ /* * Combine two 32-bit hash values, resulting in another hash value, with * decent bit mixing. * * Similar to boost's hash_combine(). */ static inline uint32 hash_combine(uint32 a, uint32 b) { a ^= b + 0x9e3779b9 + (a << 6) + (a >> 2); return a; } /* * Combine two 64-bit hash values, resulting in another hash value, using the * same kind of technique as hash_combine(). Testing shows that this also * produces good bit mixing. */ static inline uint64 hash_combine64(uint64 a, uint64 b) { /* 0x49a0f4dd15e5a8e3 is 64bit random data */ a ^= b + UINT64CONST(0x49a0f4dd15e5a8e3) + (a << 54) + (a >> 7); return a; } /* * Simple inline murmur hash implementation hashing a 32 bit integer, for * performance. */ static inline uint32 murmurhash32(uint32 data) { uint32 h = data; h ^= h >> 16; h *= 0x85ebca6b; h ^= h >> 13; h *= 0xc2b2ae35; h ^= h >> 16; return h; } #endif /* HASHFN_H */ libpg_query-13-2.1.0/src/postgres/include/common/ip.h000066400000000000000000000020341413137616400224130ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * ip.h * Definitions for IPv6-aware network access. * * These definitions are used by both frontend and backend code. * * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/common/ip.h * *------------------------------------------------------------------------- */ #ifndef IP_H #define IP_H #include "getaddrinfo.h" /* pgrminclude ignore */ #include "libpq/pqcomm.h" /* pgrminclude ignore */ #ifdef HAVE_UNIX_SOCKETS #define IS_AF_UNIX(fam) ((fam) == AF_UNIX) #else #define IS_AF_UNIX(fam) (0) #endif extern int pg_getaddrinfo_all(const char *hostname, const char *servname, const struct addrinfo *hintp, struct addrinfo **result); extern void pg_freeaddrinfo_all(int hint_ai_family, struct addrinfo *ai); extern int pg_getnameinfo_all(const struct sockaddr_storage *addr, int salen, char *node, int nodelen, char *service, int servicelen, int flags); #endif /* IP_H */ libpg_query-13-2.1.0/src/postgres/include/common/keywords.h000066400000000000000000000016141413137616400236550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * keywords.h * PostgreSQL's list of SQL keywords * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/keywords.h * *------------------------------------------------------------------------- */ #ifndef KEYWORDS_H #define KEYWORDS_H #include "common/kwlookup.h" /* Keyword categories --- should match lists in gram.y */ #define UNRESERVED_KEYWORD 0 #define COL_NAME_KEYWORD 1 #define TYPE_FUNC_NAME_KEYWORD 2 #define RESERVED_KEYWORD 3 #ifndef FRONTEND extern PGDLLIMPORT const ScanKeywordList ScanKeywords; extern PGDLLIMPORT const uint8 ScanKeywordCategories[]; #else extern const ScanKeywordList ScanKeywords; extern const uint8 ScanKeywordCategories[]; #endif #endif /* KEYWORDS_H */ libpg_query-13-2.1.0/src/postgres/include/common/kwlookup.h000066400000000000000000000027121413137616400236610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * kwlookup.h * Key word lookup for PostgreSQL * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/kwlookup.h * *------------------------------------------------------------------------- */ #ifndef KWLOOKUP_H #define KWLOOKUP_H /* Hash function used by ScanKeywordLookup */ typedef int (*ScanKeywordHashFunc) (const void *key, size_t keylen); /* * This struct contains the data needed by ScanKeywordLookup to perform a * search within a set of keywords. The contents are typically generated by * src/tools/gen_keywordlist.pl from a header containing PG_KEYWORD macros. */ typedef struct ScanKeywordList { const char *kw_string; /* all keywords in order, separated by \0 */ const uint16 *kw_offsets; /* offsets to the start of each keyword */ ScanKeywordHashFunc hash; /* perfect hash function for keywords */ int num_keywords; /* number of keywords */ int max_kw_len; /* length of longest keyword */ } ScanKeywordList; extern int ScanKeywordLookup(const char *text, const ScanKeywordList *keywords); /* Code that wants to retrieve the text of the N'th keyword should use this. */ static inline const char * GetScanKeyword(int n, const ScanKeywordList *keywords) { return keywords->kw_string + keywords->kw_offsets[n]; } #endif /* KWLOOKUP_H */ libpg_query-13-2.1.0/src/postgres/include/common/relpath.h000066400000000000000000000050621413137616400234460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * relpath.h * Declarations for GetRelationPath() and friends * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/relpath.h * *------------------------------------------------------------------------- */ #ifndef RELPATH_H #define RELPATH_H /* * 'pgrminclude ignore' needed here because CppAsString2() does not throw * an error if the symbol is not defined. */ #include "catalog/catversion.h" /* pgrminclude ignore */ /* * Name of major-version-specific tablespace subdirectories */ #define TABLESPACE_VERSION_DIRECTORY "PG_" PG_MAJORVERSION "_" \ CppAsString2(CATALOG_VERSION_NO) /* Characters to allow for an OID in a relation path */ #define OIDCHARS 10 /* max chars printed by %u */ /* * Stuff for fork names. * * The physical storage of a relation consists of one or more forks. * The main fork is always created, but in addition to that there can be * additional forks for storing various metadata. ForkNumber is used when * we need to refer to a specific fork in a relation. */ typedef enum ForkNumber { InvalidForkNumber = -1, MAIN_FORKNUM = 0, FSM_FORKNUM, VISIBILITYMAP_FORKNUM, INIT_FORKNUM /* * NOTE: if you add a new fork, change MAX_FORKNUM and possibly * FORKNAMECHARS below, and update the forkNames array in * src/common/relpath.c */ } ForkNumber; #define MAX_FORKNUM INIT_FORKNUM #define FORKNAMECHARS 4 /* max chars for a fork name */ extern const char *const forkNames[]; extern ForkNumber forkname_to_number(const char *forkName); extern int forkname_chars(const char *str, ForkNumber *fork); /* * Stuff for computing filesystem pathnames for relations. */ extern char *GetDatabasePath(Oid dbNode, Oid spcNode); extern char *GetRelationPath(Oid dbNode, Oid spcNode, Oid relNode, int backendId, ForkNumber forkNumber); /* * Wrapper macros for GetRelationPath. Beware of multiple * evaluation of the RelFileNode or RelFileNodeBackend argument! */ /* First argument is a RelFileNode */ #define relpathbackend(rnode, backend, forknum) \ GetRelationPath((rnode).dbNode, (rnode).spcNode, (rnode).relNode, \ backend, forknum) /* First argument is a RelFileNode */ #define relpathperm(rnode, forknum) \ relpathbackend(rnode, InvalidBackendId, forknum) /* First argument is a RelFileNodeBackend */ #define relpath(rnode, forknum) \ relpathbackend((rnode).node, (rnode).backend, forknum) #endif /* RELPATH_H */ libpg_query-13-2.1.0/src/postgres/include/common/string.h000066400000000000000000000010421413137616400233070ustar00rootroot00000000000000/* * string.h * string handling helpers * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/common/string.h */ #ifndef COMMON_STRING_H #define COMMON_STRING_H extern bool pg_str_endswith(const char *str, const char *end); extern int strtoint(const char *pg_restrict str, char **pg_restrict endptr, int base); extern void pg_clean_ascii(char *str); extern int pg_strip_crlf(char *str); #endif /* COMMON_STRING_H */ libpg_query-13-2.1.0/src/postgres/include/common/unicode_combining_table.h000066400000000000000000000073121413137616400266310ustar00rootroot00000000000000/* generated by src/common/unicode/generate-unicode_combining_table.pl, do not edit */ static const struct mbinterval combining[] = { {0x0300, 0x036F}, {0x0483, 0x0489}, {0x0591, 0x05BD}, {0x05BF, 0x05BF}, {0x05C1, 0x05C2}, {0x05C4, 0x05C5}, {0x05C7, 0x05C7}, {0x0610, 0x061A}, {0x064B, 0x065F}, {0x0670, 0x0670}, {0x06D6, 0x06DC}, {0x06DF, 0x06E4}, {0x06E7, 0x06E8}, {0x06EA, 0x06ED}, {0x0711, 0x0711}, {0x0730, 0x074A}, {0x07A6, 0x07B0}, {0x07EB, 0x07F3}, {0x07FD, 0x07FD}, {0x0816, 0x0819}, {0x081B, 0x0823}, {0x0825, 0x0827}, {0x0829, 0x082D}, {0x0859, 0x085B}, {0x08D3, 0x08E1}, {0x08E3, 0x0902}, {0x093A, 0x093A}, {0x093C, 0x093C}, {0x0941, 0x0948}, {0x094D, 0x094D}, {0x0951, 0x0957}, {0x0962, 0x0963}, {0x0981, 0x0981}, {0x09BC, 0x09BC}, {0x09C1, 0x09C4}, {0x09CD, 0x09CD}, {0x09E2, 0x09E3}, {0x09FE, 0x0A02}, {0x0A3C, 0x0A3C}, {0x0A41, 0x0A51}, {0x0A70, 0x0A71}, {0x0A75, 0x0A75}, {0x0A81, 0x0A82}, {0x0ABC, 0x0ABC}, {0x0AC1, 0x0AC8}, {0x0ACD, 0x0ACD}, {0x0AE2, 0x0AE3}, {0x0AFA, 0x0B01}, {0x0B3C, 0x0B3C}, {0x0B3F, 0x0B3F}, {0x0B41, 0x0B44}, {0x0B4D, 0x0B56}, {0x0B62, 0x0B63}, {0x0B82, 0x0B82}, {0x0BC0, 0x0BC0}, {0x0BCD, 0x0BCD}, {0x0C00, 0x0C00}, {0x0C04, 0x0C04}, {0x0C3E, 0x0C40}, {0x0C46, 0x0C56}, {0x0C62, 0x0C63}, {0x0C81, 0x0C81}, {0x0CBC, 0x0CBC}, {0x0CBF, 0x0CBF}, {0x0CC6, 0x0CC6}, {0x0CCC, 0x0CCD}, {0x0CE2, 0x0CE3}, {0x0D00, 0x0D01}, {0x0D3B, 0x0D3C}, {0x0D41, 0x0D44}, {0x0D4D, 0x0D4D}, {0x0D62, 0x0D63}, {0x0D81, 0x0D81}, {0x0DCA, 0x0DCA}, {0x0DD2, 0x0DD6}, {0x0E31, 0x0E31}, {0x0E34, 0x0E3A}, {0x0E47, 0x0E4E}, {0x0EB1, 0x0EB1}, {0x0EB4, 0x0EBC}, {0x0EC8, 0x0ECD}, {0x0F18, 0x0F19}, {0x0F35, 0x0F35}, {0x0F37, 0x0F37}, {0x0F39, 0x0F39}, {0x0F71, 0x0F7E}, {0x0F80, 0x0F84}, {0x0F86, 0x0F87}, {0x0F8D, 0x0FBC}, {0x0FC6, 0x0FC6}, {0x102D, 0x1030}, {0x1032, 0x1037}, {0x1039, 0x103A}, {0x103D, 0x103E}, {0x1058, 0x1059}, {0x105E, 0x1060}, {0x1071, 0x1074}, {0x1082, 0x1082}, {0x1085, 0x1086}, {0x108D, 0x108D}, {0x109D, 0x109D}, {0x135D, 0x135F}, {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, {0x1772, 0x1773}, {0x17B4, 0x17B5}, {0x17B7, 0x17BD}, {0x17C6, 0x17C6}, {0x17C9, 0x17D3}, {0x17DD, 0x17DD}, {0x180B, 0x180D}, {0x1885, 0x1886}, {0x18A9, 0x18A9}, {0x1920, 0x1922}, {0x1927, 0x1928}, {0x1932, 0x1932}, {0x1939, 0x193B}, {0x1A17, 0x1A18}, {0x1A1B, 0x1A1B}, {0x1A56, 0x1A56}, {0x1A58, 0x1A60}, {0x1A62, 0x1A62}, {0x1A65, 0x1A6C}, {0x1A73, 0x1A7F}, {0x1AB0, 0x1B03}, {0x1B34, 0x1B34}, {0x1B36, 0x1B3A}, {0x1B3C, 0x1B3C}, {0x1B42, 0x1B42}, {0x1B6B, 0x1B73}, {0x1B80, 0x1B81}, {0x1BA2, 0x1BA5}, {0x1BA8, 0x1BA9}, {0x1BAB, 0x1BAD}, {0x1BE6, 0x1BE6}, {0x1BE8, 0x1BE9}, {0x1BED, 0x1BED}, {0x1BEF, 0x1BF1}, {0x1C2C, 0x1C33}, {0x1C36, 0x1C37}, {0x1CD0, 0x1CD2}, {0x1CD4, 0x1CE0}, {0x1CE2, 0x1CE8}, {0x1CED, 0x1CED}, {0x1CF4, 0x1CF4}, {0x1CF8, 0x1CF9}, {0x1DC0, 0x1DFF}, {0x20D0, 0x20F0}, {0x2CEF, 0x2CF1}, {0x2D7F, 0x2D7F}, {0x2DE0, 0x2DFF}, {0x302A, 0x302D}, {0x3099, 0x309A}, {0xA66F, 0xA672}, {0xA674, 0xA67D}, {0xA69E, 0xA69F}, {0xA6F0, 0xA6F1}, {0xA802, 0xA802}, {0xA806, 0xA806}, {0xA80B, 0xA80B}, {0xA825, 0xA826}, {0xA82C, 0xA82C}, {0xA8C4, 0xA8C5}, {0xA8E0, 0xA8F1}, {0xA8FF, 0xA8FF}, {0xA926, 0xA92D}, {0xA947, 0xA951}, {0xA980, 0xA982}, {0xA9B3, 0xA9B3}, {0xA9B6, 0xA9B9}, {0xA9BC, 0xA9BD}, {0xA9E5, 0xA9E5}, {0xAA29, 0xAA2E}, {0xAA31, 0xAA32}, {0xAA35, 0xAA36}, {0xAA43, 0xAA43}, {0xAA4C, 0xAA4C}, {0xAA7C, 0xAA7C}, {0xAAB0, 0xAAB0}, {0xAAB2, 0xAAB4}, {0xAAB7, 0xAAB8}, {0xAABE, 0xAABF}, {0xAAC1, 0xAAC1}, {0xAAEC, 0xAAED}, {0xAAF6, 0xAAF6}, {0xABE5, 0xABE5}, {0xABE8, 0xABE8}, {0xABED, 0xABED}, {0xFB1E, 0xFB1E}, {0xFE00, 0xFE0F}, {0xFE20, 0xFE2F}, }; libpg_query-13-2.1.0/src/postgres/include/datatype/000077500000000000000000000000001413137616400221565ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/datatype/timestamp.h000066400000000000000000000165451413137616400243450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * timestamp.h * Timestamp and Interval typedefs and related macros. * * Note: this file must be includable in both frontend and backend contexts. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/datatype/timestamp.h * *------------------------------------------------------------------------- */ #ifndef DATATYPE_TIMESTAMP_H #define DATATYPE_TIMESTAMP_H /* * Timestamp represents absolute time. * * Interval represents delta time. Keep track of months (and years), days, * and hours/minutes/seconds separately since the elapsed time spanned is * unknown until instantiated relative to an absolute time. * * Note that Postgres uses "time interval" to mean a bounded interval, * consisting of a beginning and ending time, not a time span - thomas 97/03/20 * * Timestamps, as well as the h/m/s fields of intervals, are stored as * int64 values with units of microseconds. (Once upon a time they were * double values with units of seconds.) * * TimeOffset and fsec_t are convenience typedefs for temporary variables. * Do not use fsec_t in values stored on-disk. * Also, fsec_t is only meant for *fractional* seconds; beware of overflow * if the value you need to store could be many seconds. */ typedef int64 Timestamp; typedef int64 TimestampTz; typedef int64 TimeOffset; typedef int32 fsec_t; /* fractional seconds (in microseconds) */ typedef struct { TimeOffset time; /* all time units other than days, months and * years */ int32 day; /* days, after time for alignment */ int32 month; /* months and years, after time for alignment */ } Interval; /* Limits on the "precision" option (typmod) for these data types */ #define MAX_TIMESTAMP_PRECISION 6 #define MAX_INTERVAL_PRECISION 6 /* * Round off to MAX_TIMESTAMP_PRECISION decimal places. * Note: this is also used for rounding off intervals. */ #define TS_PREC_INV 1000000.0 #define TSROUND(j) (rint(((double) (j)) * TS_PREC_INV) / TS_PREC_INV) /* * Assorted constants for datetime-related calculations */ #define DAYS_PER_YEAR 365.25 /* assumes leap year every four years */ #define MONTHS_PER_YEAR 12 /* * DAYS_PER_MONTH is very imprecise. The more accurate value is * 365.2425/12 = 30.436875, or '30 days 10:29:06'. Right now we only * return an integral number of days, but someday perhaps we should * also return a 'time' value to be used as well. ISO 8601 suggests * 30 days. */ #define DAYS_PER_MONTH 30 /* assumes exactly 30 days per month */ #define HOURS_PER_DAY 24 /* assume no daylight savings time changes */ /* * This doesn't adjust for uneven daylight savings time intervals or leap * seconds, and it crudely estimates leap years. A more accurate value * for days per years is 365.2422. */ #define SECS_PER_YEAR (36525 * 864) /* avoid floating-point computation */ #define SECS_PER_DAY 86400 #define SECS_PER_HOUR 3600 #define SECS_PER_MINUTE 60 #define MINS_PER_HOUR 60 #define USECS_PER_DAY INT64CONST(86400000000) #define USECS_PER_HOUR INT64CONST(3600000000) #define USECS_PER_MINUTE INT64CONST(60000000) #define USECS_PER_SEC INT64CONST(1000000) /* * We allow numeric timezone offsets up to 15:59:59 either way from Greenwich. * Currently, the record holders for wackiest offsets in actual use are zones * Asia/Manila, at -15:56:00 until 1844, and America/Metlakatla, at +15:13:42 * until 1867. If we were to reject such values we would fail to dump and * restore old timestamptz values with these zone settings. */ #define MAX_TZDISP_HOUR 15 /* maximum allowed hour part */ #define TZDISP_LIMIT ((MAX_TZDISP_HOUR + 1) * SECS_PER_HOUR) /* * DT_NOBEGIN represents timestamp -infinity; DT_NOEND represents +infinity */ #define DT_NOBEGIN PG_INT64_MIN #define DT_NOEND PG_INT64_MAX #define TIMESTAMP_NOBEGIN(j) \ do {(j) = DT_NOBEGIN;} while (0) #define TIMESTAMP_IS_NOBEGIN(j) ((j) == DT_NOBEGIN) #define TIMESTAMP_NOEND(j) \ do {(j) = DT_NOEND;} while (0) #define TIMESTAMP_IS_NOEND(j) ((j) == DT_NOEND) #define TIMESTAMP_NOT_FINITE(j) (TIMESTAMP_IS_NOBEGIN(j) || TIMESTAMP_IS_NOEND(j)) /* * Julian date support. * * date2j() and j2date() nominally handle the Julian date range 0..INT_MAX, * or 4714-11-24 BC to 5874898-06-03 AD. In practice, date2j() will work and * give correct negative Julian dates for dates before 4714-11-24 BC as well. * We rely on it to do so back to 4714-11-01 BC. Allowing at least one day's * slop is necessary so that timestamp rotation doesn't produce dates that * would be rejected on input. For example, '4714-11-24 00:00 GMT BC' is a * legal timestamptz value, but in zones east of Greenwich it would print as * sometime in the afternoon of 4714-11-23 BC; if we couldn't process such a * date we'd have a dump/reload failure. So the idea is for IS_VALID_JULIAN * to accept a slightly wider range of dates than we really support, and * then we apply the exact checks in IS_VALID_DATE or IS_VALID_TIMESTAMP, * after timezone rotation if any. To save a few cycles, we can make * IS_VALID_JULIAN check only to the month boundary, since its exact cutoffs * are not very critical in this scheme. * * It is correct that JULIAN_MINYEAR is -4713, not -4714; it is defined to * allow easy comparison to tm_year values, in which we follow the convention * that tm_year <= 0 represents abs(tm_year)+1 BC. */ #define JULIAN_MINYEAR (-4713) #define JULIAN_MINMONTH (11) #define JULIAN_MINDAY (24) #define JULIAN_MAXYEAR (5874898) #define JULIAN_MAXMONTH (6) #define JULIAN_MAXDAY (3) #define IS_VALID_JULIAN(y,m,d) \ (((y) > JULIAN_MINYEAR || \ ((y) == JULIAN_MINYEAR && ((m) >= JULIAN_MINMONTH))) && \ ((y) < JULIAN_MAXYEAR || \ ((y) == JULIAN_MAXYEAR && ((m) < JULIAN_MAXMONTH)))) /* Julian-date equivalents of Day 0 in Unix and Postgres reckoning */ #define UNIX_EPOCH_JDATE 2440588 /* == date2j(1970, 1, 1) */ #define POSTGRES_EPOCH_JDATE 2451545 /* == date2j(2000, 1, 1) */ /* * Range limits for dates and timestamps. * * We have traditionally allowed Julian day zero as a valid datetime value, * so that is the lower bound for both dates and timestamps. * * The upper limit for dates is 5874897-12-31, which is a bit less than what * the Julian-date code can allow. For timestamps, the upper limit is * 294276-12-31. The int64 overflow limit would be a few days later; again, * leaving some slop avoids worries about corner-case overflow, and provides * a simpler user-visible definition. */ /* First allowed date, and first disallowed date, in Julian-date form */ #define DATETIME_MIN_JULIAN (0) #define DATE_END_JULIAN (2147483494) /* == date2j(JULIAN_MAXYEAR, 1, 1) */ #define TIMESTAMP_END_JULIAN (109203528) /* == date2j(294277, 1, 1) */ /* Timestamp limits */ #define MIN_TIMESTAMP INT64CONST(-211813488000000000) /* == (DATETIME_MIN_JULIAN - POSTGRES_EPOCH_JDATE) * USECS_PER_DAY */ #define END_TIMESTAMP INT64CONST(9223371331200000000) /* == (TIMESTAMP_END_JULIAN - POSTGRES_EPOCH_JDATE) * USECS_PER_DAY */ /* Range-check a date (given in Postgres, not Julian, numbering) */ #define IS_VALID_DATE(d) \ ((DATETIME_MIN_JULIAN - POSTGRES_EPOCH_JDATE) <= (d) && \ (d) < (DATE_END_JULIAN - POSTGRES_EPOCH_JDATE)) /* Range-check a timestamp */ #define IS_VALID_TIMESTAMP(t) (MIN_TIMESTAMP <= (t) && (t) < END_TIMESTAMP) #endif /* DATATYPE_TIMESTAMP_H */ libpg_query-13-2.1.0/src/postgres/include/executor/000077500000000000000000000000001413137616400222015ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/executor/execdesc.h000066400000000000000000000045311413137616400241400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * execdesc.h * plan and query descriptor accessor macros used by the executor * and related modules. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/execdesc.h * *------------------------------------------------------------------------- */ #ifndef EXECDESC_H #define EXECDESC_H #include "nodes/execnodes.h" #include "tcop/dest.h" /* ---------------- * query descriptor: * * a QueryDesc encapsulates everything that the executor * needs to execute the query. * * For the convenience of SQL-language functions, we also support QueryDescs * containing utility statements; these must not be passed to the executor * however. * --------------------- */ typedef struct QueryDesc { /* These fields are provided by CreateQueryDesc */ CmdType operation; /* CMD_SELECT, CMD_UPDATE, etc. */ PlannedStmt *plannedstmt; /* planner's output (could be utility, too) */ const char *sourceText; /* source text of the query */ Snapshot snapshot; /* snapshot to use for query */ Snapshot crosscheck_snapshot; /* crosscheck for RI update/delete */ DestReceiver *dest; /* the destination for tuple output */ ParamListInfo params; /* param values being passed in */ QueryEnvironment *queryEnv; /* query environment passed in */ int instrument_options; /* OR of InstrumentOption flags */ /* These fields are set by ExecutorStart */ TupleDesc tupDesc; /* descriptor for result tuples */ EState *estate; /* executor's query-wide state */ PlanState *planstate; /* tree of per-plan-node state */ /* This field is set by ExecutorRun */ bool already_executed; /* true if previously executed */ /* This is always set NULL by the core system, but plugins can change it */ struct Instrumentation *totaltime; /* total time spent in ExecutorRun */ } QueryDesc; /* in pquery.c */ extern QueryDesc *CreateQueryDesc(PlannedStmt *plannedstmt, const char *sourceText, Snapshot snapshot, Snapshot crosscheck_snapshot, DestReceiver *dest, ParamListInfo params, QueryEnvironment *queryEnv, int instrument_options); extern void FreeQueryDesc(QueryDesc *qdesc); #endif /* EXECDESC_H */ libpg_query-13-2.1.0/src/postgres/include/executor/executor.h000066400000000000000000000567221413137616400242240ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * executor.h * support for the POSTGRES executor module * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/executor.h * *------------------------------------------------------------------------- */ #ifndef EXECUTOR_H #define EXECUTOR_H #include "executor/execdesc.h" #include "fmgr.h" #include "nodes/lockoptions.h" #include "nodes/parsenodes.h" #include "utils/memutils.h" /* * The "eflags" argument to ExecutorStart and the various ExecInitNode * routines is a bitwise OR of the following flag bits, which tell the * called plan node what to expect. Note that the flags will get modified * as they are passed down the plan tree, since an upper node may require * functionality in its subnode not demanded of the plan as a whole * (example: MergeJoin requires mark/restore capability in its inner input), * or an upper node may shield its input from some functionality requirement * (example: Materialize shields its input from needing to do backward scan). * * EXPLAIN_ONLY indicates that the plan tree is being initialized just so * EXPLAIN can print it out; it will not be run. Hence, no side-effects * of startup should occur. However, error checks (such as permission checks) * should be performed. * * REWIND indicates that the plan node should try to efficiently support * rescans without parameter changes. (Nodes must support ExecReScan calls * in any case, but if this flag was not given, they are at liberty to do it * through complete recalculation. Note that a parameter change forces a * full recalculation in any case.) * * BACKWARD indicates that the plan node must respect the es_direction flag. * When this is not passed, the plan node will only be run forwards. * * MARK indicates that the plan node must support Mark/Restore calls. * When this is not passed, no Mark/Restore will occur. * * SKIP_TRIGGERS tells ExecutorStart/ExecutorFinish to skip calling * AfterTriggerBeginQuery/AfterTriggerEndQuery. This does not necessarily * mean that the plan can't queue any AFTER triggers; just that the caller * is responsible for there being a trigger context for them to be queued in. */ #define EXEC_FLAG_EXPLAIN_ONLY 0x0001 /* EXPLAIN, no ANALYZE */ #define EXEC_FLAG_REWIND 0x0002 /* need efficient rescan */ #define EXEC_FLAG_BACKWARD 0x0004 /* need backward scan */ #define EXEC_FLAG_MARK 0x0008 /* need mark/restore */ #define EXEC_FLAG_SKIP_TRIGGERS 0x0010 /* skip AfterTrigger calls */ #define EXEC_FLAG_WITH_NO_DATA 0x0020 /* rel scannability doesn't matter */ /* Hook for plugins to get control in ExecutorStart() */ typedef void (*ExecutorStart_hook_type) (QueryDesc *queryDesc, int eflags); extern PGDLLIMPORT ExecutorStart_hook_type ExecutorStart_hook; /* Hook for plugins to get control in ExecutorRun() */ typedef void (*ExecutorRun_hook_type) (QueryDesc *queryDesc, ScanDirection direction, uint64 count, bool execute_once); extern PGDLLIMPORT ExecutorRun_hook_type ExecutorRun_hook; /* Hook for plugins to get control in ExecutorFinish() */ typedef void (*ExecutorFinish_hook_type) (QueryDesc *queryDesc); extern PGDLLIMPORT ExecutorFinish_hook_type ExecutorFinish_hook; /* Hook for plugins to get control in ExecutorEnd() */ typedef void (*ExecutorEnd_hook_type) (QueryDesc *queryDesc); extern PGDLLIMPORT ExecutorEnd_hook_type ExecutorEnd_hook; /* Hook for plugins to get control in ExecCheckRTPerms() */ typedef bool (*ExecutorCheckPerms_hook_type) (List *, bool); extern PGDLLIMPORT ExecutorCheckPerms_hook_type ExecutorCheckPerms_hook; /* * prototypes from functions in execAmi.c */ struct Path; /* avoid including pathnodes.h here */ extern void ExecReScan(PlanState *node); extern void ExecMarkPos(PlanState *node); extern void ExecRestrPos(PlanState *node); extern bool ExecSupportsMarkRestore(struct Path *pathnode); extern bool ExecSupportsBackwardScan(Plan *node); extern bool ExecMaterializesOutput(NodeTag plantype); /* * prototypes from functions in execCurrent.c */ extern bool execCurrentOf(CurrentOfExpr *cexpr, ExprContext *econtext, Oid table_oid, ItemPointer current_tid); /* * prototypes from functions in execGrouping.c */ extern ExprState *execTuplesMatchPrepare(TupleDesc desc, int numCols, const AttrNumber *keyColIdx, const Oid *eqOperators, const Oid *collations, PlanState *parent); extern void execTuplesHashPrepare(int numCols, const Oid *eqOperators, Oid **eqFuncOids, FmgrInfo **hashFunctions); extern TupleHashTable BuildTupleHashTable(PlanState *parent, TupleDesc inputDesc, int numCols, AttrNumber *keyColIdx, const Oid *eqfuncoids, FmgrInfo *hashfunctions, Oid *collations, long nbuckets, Size additionalsize, MemoryContext tablecxt, MemoryContext tempcxt, bool use_variable_hash_iv); extern TupleHashTable BuildTupleHashTableExt(PlanState *parent, TupleDesc inputDesc, int numCols, AttrNumber *keyColIdx, const Oid *eqfuncoids, FmgrInfo *hashfunctions, Oid *collations, long nbuckets, Size additionalsize, MemoryContext metacxt, MemoryContext tablecxt, MemoryContext tempcxt, bool use_variable_hash_iv); extern TupleHashEntry LookupTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, bool *isnew, uint32 *hash); extern uint32 TupleHashTableHash(TupleHashTable hashtable, TupleTableSlot *slot); extern TupleHashEntry LookupTupleHashEntryHash(TupleHashTable hashtable, TupleTableSlot *slot, bool *isnew, uint32 hash); extern TupleHashEntry FindTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot, ExprState *eqcomp, FmgrInfo *hashfunctions); extern void ResetTupleHashTable(TupleHashTable hashtable); /* * prototypes from functions in execJunk.c */ extern JunkFilter *ExecInitJunkFilter(List *targetList, TupleTableSlot *slot); extern JunkFilter *ExecInitJunkFilterInsertion(List *targetList, TupleDesc cleanTupType, TupleTableSlot *slot); extern JunkFilter *ExecInitJunkFilterConversion(List *targetList, TupleDesc cleanTupType, TupleTableSlot *slot); extern AttrNumber ExecFindJunkAttribute(JunkFilter *junkfilter, const char *attrName); extern AttrNumber ExecFindJunkAttributeInTlist(List *targetlist, const char *attrName); extern Datum ExecGetJunkAttribute(TupleTableSlot *slot, AttrNumber attno, bool *isNull); extern TupleTableSlot *ExecFilterJunk(JunkFilter *junkfilter, TupleTableSlot *slot); /* * prototypes from functions in execMain.c */ extern void ExecutorStart(QueryDesc *queryDesc, int eflags); extern void standard_ExecutorStart(QueryDesc *queryDesc, int eflags); extern void ExecutorRun(QueryDesc *queryDesc, ScanDirection direction, uint64 count, bool execute_once); extern void standard_ExecutorRun(QueryDesc *queryDesc, ScanDirection direction, uint64 count, bool execute_once); extern void ExecutorFinish(QueryDesc *queryDesc); extern void standard_ExecutorFinish(QueryDesc *queryDesc); extern void ExecutorEnd(QueryDesc *queryDesc); extern void standard_ExecutorEnd(QueryDesc *queryDesc); extern void ExecutorRewind(QueryDesc *queryDesc); extern bool ExecCheckRTPerms(List *rangeTable, bool ereport_on_violation); extern void CheckValidResultRel(ResultRelInfo *resultRelInfo, CmdType operation); extern void InitResultRelInfo(ResultRelInfo *resultRelInfo, Relation resultRelationDesc, Index resultRelationIndex, ResultRelInfo *partition_root_rri, int instrument_options); extern ResultRelInfo *ExecGetTriggerResultRel(EState *estate, Oid relid); extern void ExecCleanUpTriggerState(EState *estate); extern void ExecConstraints(ResultRelInfo *resultRelInfo, TupleTableSlot *slot, EState *estate); extern bool ExecPartitionCheck(ResultRelInfo *resultRelInfo, TupleTableSlot *slot, EState *estate, bool emitError); extern void ExecPartitionCheckEmitError(ResultRelInfo *resultRelInfo, TupleTableSlot *slot, EState *estate); extern void ExecWithCheckOptions(WCOKind kind, ResultRelInfo *resultRelInfo, TupleTableSlot *slot, EState *estate); extern LockTupleMode ExecUpdateLockMode(EState *estate, ResultRelInfo *relinfo); extern ExecRowMark *ExecFindRowMark(EState *estate, Index rti, bool missing_ok); extern ExecAuxRowMark *ExecBuildAuxRowMark(ExecRowMark *erm, List *targetlist); extern TupleTableSlot *EvalPlanQual(EPQState *epqstate, Relation relation, Index rti, TupleTableSlot *testslot); extern void EvalPlanQualInit(EPQState *epqstate, EState *parentestate, Plan *subplan, List *auxrowmarks, int epqParam); extern void EvalPlanQualSetPlan(EPQState *epqstate, Plan *subplan, List *auxrowmarks); extern TupleTableSlot *EvalPlanQualSlot(EPQState *epqstate, Relation relation, Index rti); #define EvalPlanQualSetSlot(epqstate, slot) ((epqstate)->origslot = (slot)) extern bool EvalPlanQualFetchRowMark(EPQState *epqstate, Index rti, TupleTableSlot *slot); extern TupleTableSlot *EvalPlanQualNext(EPQState *epqstate); extern void EvalPlanQualBegin(EPQState *epqstate); extern void EvalPlanQualEnd(EPQState *epqstate); /* * functions in execProcnode.c */ extern PlanState *ExecInitNode(Plan *node, EState *estate, int eflags); extern void ExecSetExecProcNode(PlanState *node, ExecProcNodeMtd function); extern Node *MultiExecProcNode(PlanState *node); extern void ExecEndNode(PlanState *node); extern bool ExecShutdownNode(PlanState *node); extern void ExecSetTupleBound(int64 tuples_needed, PlanState *child_node); /* ---------------------------------------------------------------- * ExecProcNode * * Execute the given node to return a(nother) tuple. * ---------------------------------------------------------------- */ #ifndef FRONTEND static inline TupleTableSlot * ExecProcNode(PlanState *node) { if (node->chgParam != NULL) /* something changed? */ ExecReScan(node); /* let ReScan handle this */ return node->ExecProcNode(node); } #endif /* * prototypes from functions in execExpr.c */ extern ExprState *ExecInitExpr(Expr *node, PlanState *parent); extern ExprState *ExecInitExprWithParams(Expr *node, ParamListInfo ext_params); extern ExprState *ExecInitQual(List *qual, PlanState *parent); extern ExprState *ExecInitCheck(List *qual, PlanState *parent); extern List *ExecInitExprList(List *nodes, PlanState *parent); extern ExprState *ExecBuildAggTrans(AggState *aggstate, struct AggStatePerPhaseData *phase, bool doSort, bool doHash, bool nullcheck); extern ExprState *ExecBuildGroupingEqual(TupleDesc ldesc, TupleDesc rdesc, const TupleTableSlotOps *lops, const TupleTableSlotOps *rops, int numCols, const AttrNumber *keyColIdx, const Oid *eqfunctions, const Oid *collations, PlanState *parent); extern ProjectionInfo *ExecBuildProjectionInfo(List *targetList, ExprContext *econtext, TupleTableSlot *slot, PlanState *parent, TupleDesc inputDesc); extern ProjectionInfo *ExecBuildProjectionInfoExt(List *targetList, ExprContext *econtext, TupleTableSlot *slot, bool assignJunkEntries, PlanState *parent, TupleDesc inputDesc); extern ExprState *ExecPrepareExpr(Expr *node, EState *estate); extern ExprState *ExecPrepareQual(List *qual, EState *estate); extern ExprState *ExecPrepareCheck(List *qual, EState *estate); extern List *ExecPrepareExprList(List *nodes, EState *estate); /* * ExecEvalExpr * * Evaluate expression identified by "state" in the execution context * given by "econtext". *isNull is set to the is-null flag for the result, * and the Datum value is the function result. * * The caller should already have switched into the temporary memory * context econtext->ecxt_per_tuple_memory. The convenience entry point * ExecEvalExprSwitchContext() is provided for callers who don't prefer to * do the switch in an outer loop. */ #ifndef FRONTEND static inline Datum ExecEvalExpr(ExprState *state, ExprContext *econtext, bool *isNull) { return state->evalfunc(state, econtext, isNull); } #endif /* * ExecEvalExprSwitchContext * * Same as ExecEvalExpr, but get into the right allocation context explicitly. */ #ifndef FRONTEND static inline Datum ExecEvalExprSwitchContext(ExprState *state, ExprContext *econtext, bool *isNull) { Datum retDatum; MemoryContext oldContext; oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); retDatum = state->evalfunc(state, econtext, isNull); MemoryContextSwitchTo(oldContext); return retDatum; } #endif /* * ExecProject * * Projects a tuple based on projection info and stores it in the slot passed * to ExecBuildProjectionInfo(). * * Note: the result is always a virtual tuple; therefore it may reference * the contents of the exprContext's scan tuples and/or temporary results * constructed in the exprContext. If the caller wishes the result to be * valid longer than that data will be valid, he must call ExecMaterializeSlot * on the result slot. */ #ifndef FRONTEND static inline TupleTableSlot * ExecProject(ProjectionInfo *projInfo) { ExprContext *econtext = projInfo->pi_exprContext; ExprState *state = &projInfo->pi_state; TupleTableSlot *slot = state->resultslot; bool isnull; /* * Clear any former contents of the result slot. This makes it safe for * us to use the slot's Datum/isnull arrays as workspace. */ ExecClearTuple(slot); /* Run the expression, discarding scalar result from the last column. */ (void) ExecEvalExprSwitchContext(state, econtext, &isnull); /* * Successfully formed a result row. Mark the result slot as containing a * valid virtual tuple (inlined version of ExecStoreVirtualTuple()). */ slot->tts_flags &= ~TTS_FLAG_EMPTY; slot->tts_nvalid = slot->tts_tupleDescriptor->natts; return slot; } #endif /* * ExecQual - evaluate a qual prepared with ExecInitQual (possibly via * ExecPrepareQual). Returns true if qual is satisfied, else false. * * Note: ExecQual used to have a third argument "resultForNull". The * behavior of this function now corresponds to resultForNull == false. * If you want the resultForNull == true behavior, see ExecCheck. */ #ifndef FRONTEND static inline bool ExecQual(ExprState *state, ExprContext *econtext) { Datum ret; bool isnull; /* short-circuit (here and in ExecInitQual) for empty restriction list */ if (state == NULL) return true; /* verify that expression was compiled using ExecInitQual */ Assert(state->flags & EEO_FLAG_IS_QUAL); ret = ExecEvalExprSwitchContext(state, econtext, &isnull); /* EEOP_QUAL should never return NULL */ Assert(!isnull); return DatumGetBool(ret); } #endif /* * ExecQualAndReset() - evaluate qual with ExecQual() and reset expression * context. */ #ifndef FRONTEND static inline bool ExecQualAndReset(ExprState *state, ExprContext *econtext) { bool ret = ExecQual(state, econtext); /* inline ResetExprContext, to avoid ordering issue in this file */ MemoryContextReset(econtext->ecxt_per_tuple_memory); return ret; } #endif extern bool ExecCheck(ExprState *state, ExprContext *context); /* * prototypes from functions in execSRF.c */ extern SetExprState *ExecInitTableFunctionResult(Expr *expr, ExprContext *econtext, PlanState *parent); extern Tuplestorestate *ExecMakeTableFunctionResult(SetExprState *setexpr, ExprContext *econtext, MemoryContext argContext, TupleDesc expectedDesc, bool randomAccess); extern SetExprState *ExecInitFunctionResultSet(Expr *expr, ExprContext *econtext, PlanState *parent); extern Datum ExecMakeFunctionResultSet(SetExprState *fcache, ExprContext *econtext, MemoryContext argContext, bool *isNull, ExprDoneCond *isDone); /* * prototypes from functions in execScan.c */ typedef TupleTableSlot *(*ExecScanAccessMtd) (ScanState *node); typedef bool (*ExecScanRecheckMtd) (ScanState *node, TupleTableSlot *slot); extern TupleTableSlot *ExecScan(ScanState *node, ExecScanAccessMtd accessMtd, ExecScanRecheckMtd recheckMtd); extern void ExecAssignScanProjectionInfo(ScanState *node); extern void ExecAssignScanProjectionInfoWithVarno(ScanState *node, Index varno); extern void ExecScanReScan(ScanState *node); /* * prototypes from functions in execTuples.c */ extern void ExecInitResultTypeTL(PlanState *planstate); extern void ExecInitResultSlot(PlanState *planstate, const TupleTableSlotOps *tts_ops); extern void ExecInitResultTupleSlotTL(PlanState *planstate, const TupleTableSlotOps *tts_ops); extern void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate, TupleDesc tupleDesc, const TupleTableSlotOps *tts_ops); extern TupleTableSlot *ExecInitExtraTupleSlot(EState *estate, TupleDesc tupledesc, const TupleTableSlotOps *tts_ops); extern TupleTableSlot *ExecInitNullTupleSlot(EState *estate, TupleDesc tupType, const TupleTableSlotOps *tts_ops); extern TupleDesc ExecTypeFromTL(List *targetList); extern TupleDesc ExecCleanTypeFromTL(List *targetList); extern TupleDesc ExecTypeFromExprList(List *exprList); extern void ExecTypeSetColNames(TupleDesc typeInfo, List *namesList); extern void UpdateChangedParamSet(PlanState *node, Bitmapset *newchg); typedef struct TupOutputState { TupleTableSlot *slot; DestReceiver *dest; } TupOutputState; extern TupOutputState *begin_tup_output_tupdesc(DestReceiver *dest, TupleDesc tupdesc, const TupleTableSlotOps *tts_ops); extern void do_tup_output(TupOutputState *tstate, Datum *values, bool *isnull); extern void do_text_output_multiline(TupOutputState *tstate, const char *txt); extern void end_tup_output(TupOutputState *tstate); /* * Write a single line of text given as a C string. * * Should only be used with a single-TEXT-attribute tupdesc. */ #define do_text_output_oneline(tstate, str_to_emit) \ do { \ Datum values_[1]; \ bool isnull_[1]; \ values_[0] = PointerGetDatum(cstring_to_text(str_to_emit)); \ isnull_[0] = false; \ do_tup_output(tstate, values_, isnull_); \ pfree(DatumGetPointer(values_[0])); \ } while (0) /* * prototypes from functions in execUtils.c */ extern EState *CreateExecutorState(void); extern void FreeExecutorState(EState *estate); extern ExprContext *CreateExprContext(EState *estate); extern ExprContext *CreateWorkExprContext(EState *estate); extern ExprContext *CreateStandaloneExprContext(void); extern void FreeExprContext(ExprContext *econtext, bool isCommit); extern void ReScanExprContext(ExprContext *econtext); #define ResetExprContext(econtext) \ MemoryContextReset((econtext)->ecxt_per_tuple_memory) extern ExprContext *MakePerTupleExprContext(EState *estate); /* Get an EState's per-output-tuple exprcontext, making it if first use */ #define GetPerTupleExprContext(estate) \ ((estate)->es_per_tuple_exprcontext ? \ (estate)->es_per_tuple_exprcontext : \ MakePerTupleExprContext(estate)) #define GetPerTupleMemoryContext(estate) \ (GetPerTupleExprContext(estate)->ecxt_per_tuple_memory) /* Reset an EState's per-output-tuple exprcontext, if one's been created */ #define ResetPerTupleExprContext(estate) \ do { \ if ((estate)->es_per_tuple_exprcontext) \ ResetExprContext((estate)->es_per_tuple_exprcontext); \ } while (0) extern void ExecAssignExprContext(EState *estate, PlanState *planstate); extern TupleDesc ExecGetResultType(PlanState *planstate); extern const TupleTableSlotOps *ExecGetResultSlotOps(PlanState *planstate, bool *isfixed); extern void ExecAssignProjectionInfo(PlanState *planstate, TupleDesc inputDesc); extern void ExecConditionalAssignProjectionInfo(PlanState *planstate, TupleDesc inputDesc, Index varno); extern void ExecFreeExprContext(PlanState *planstate); extern void ExecAssignScanType(ScanState *scanstate, TupleDesc tupDesc); extern void ExecCreateScanSlotFromOuterPlan(EState *estate, ScanState *scanstate, const TupleTableSlotOps *tts_ops); extern bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid); extern Relation ExecOpenScanRelation(EState *estate, Index scanrelid, int eflags); extern void ExecInitRangeTable(EState *estate, List *rangeTable); static inline RangeTblEntry * exec_rt_fetch(Index rti, EState *estate) { return (RangeTblEntry *) list_nth(estate->es_range_table, rti - 1); } extern Relation ExecGetRangeTableRelation(EState *estate, Index rti); extern int executor_errposition(EState *estate, int location); extern void RegisterExprContextCallback(ExprContext *econtext, ExprContextCallbackFunction function, Datum arg); extern void UnregisterExprContextCallback(ExprContext *econtext, ExprContextCallbackFunction function, Datum arg); extern Datum GetAttributeByName(HeapTupleHeader tuple, const char *attname, bool *isNull); extern Datum GetAttributeByNum(HeapTupleHeader tuple, AttrNumber attrno, bool *isNull); extern int ExecTargetListLength(List *targetlist); extern int ExecCleanTargetListLength(List *targetlist); extern TupleTableSlot *ExecGetTriggerOldSlot(EState *estate, ResultRelInfo *relInfo); extern TupleTableSlot *ExecGetTriggerNewSlot(EState *estate, ResultRelInfo *relInfo); extern TupleTableSlot *ExecGetReturningSlot(EState *estate, ResultRelInfo *relInfo); extern Bitmapset *ExecGetInsertedCols(ResultRelInfo *relinfo, EState *estate); extern Bitmapset *ExecGetUpdatedCols(ResultRelInfo *relinfo, EState *estate); extern Bitmapset *ExecGetExtraUpdatedCols(ResultRelInfo *relinfo, EState *estate); extern Bitmapset *ExecGetAllUpdatedCols(ResultRelInfo *relinfo, EState *estate); /* * prototypes from functions in execIndexing.c */ extern void ExecOpenIndices(ResultRelInfo *resultRelInfo, bool speculative); extern void ExecCloseIndices(ResultRelInfo *resultRelInfo); extern List *ExecInsertIndexTuples(TupleTableSlot *slot, EState *estate, bool noDupErr, bool *specConflict, List *arbiterIndexes); extern bool ExecCheckIndexConstraints(TupleTableSlot *slot, EState *estate, ItemPointer conflictTid, List *arbiterIndexes); extern void check_exclusion_constraint(Relation heap, Relation index, IndexInfo *indexInfo, ItemPointer tupleid, Datum *values, bool *isnull, EState *estate, bool newIndex); /* * prototypes from functions in execReplication.c */ extern bool RelationFindReplTupleByIndex(Relation rel, Oid idxoid, LockTupleMode lockmode, TupleTableSlot *searchslot, TupleTableSlot *outslot); extern bool RelationFindReplTupleSeq(Relation rel, LockTupleMode lockmode, TupleTableSlot *searchslot, TupleTableSlot *outslot); extern void ExecSimpleRelationInsert(EState *estate, TupleTableSlot *slot); extern void ExecSimpleRelationUpdate(EState *estate, EPQState *epqstate, TupleTableSlot *searchslot, TupleTableSlot *slot); extern void ExecSimpleRelationDelete(EState *estate, EPQState *epqstate, TupleTableSlot *searchslot); extern void CheckCmdReplicaIdentity(Relation rel, CmdType cmd); extern void CheckSubscriptionRelkind(char relkind, const char *nspname, const char *relname); #endif /* EXECUTOR_H */ libpg_query-13-2.1.0/src/postgres/include/executor/functions.h000066400000000000000000000023421413137616400243630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * functions.h * Declarations for execution of SQL-language functions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/functions.h * *------------------------------------------------------------------------- */ #ifndef FUNCTIONS_H #define FUNCTIONS_H #include "nodes/execnodes.h" #include "tcop/dest.h" /* This struct is known only within executor/functions.c */ typedef struct SQLFunctionParseInfo *SQLFunctionParseInfoPtr; extern Datum fmgr_sql(PG_FUNCTION_ARGS); extern SQLFunctionParseInfoPtr prepare_sql_fn_parse_info(HeapTuple procedureTuple, Node *call_expr, Oid inputCollation); extern void sql_fn_parser_setup(struct ParseState *pstate, SQLFunctionParseInfoPtr pinfo); extern void check_sql_fn_statements(List *queryTreeLists); extern bool check_sql_fn_retval(List *queryTreeLists, Oid rettype, TupleDesc rettupdesc, bool insertDroppedCols, List **resultTargetList); extern DestReceiver *CreateSQLFunctionDestReceiver(void); #endif /* FUNCTIONS_H */ libpg_query-13-2.1.0/src/postgres/include/executor/instrument.h000066400000000000000000000077751413137616400246020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * instrument.h * definitions for run-time statistics collection * * * Copyright (c) 2001-2020, PostgreSQL Global Development Group * * src/include/executor/instrument.h * *------------------------------------------------------------------------- */ #ifndef INSTRUMENT_H #define INSTRUMENT_H #include "portability/instr_time.h" typedef struct BufferUsage { long shared_blks_hit; /* # of shared buffer hits */ long shared_blks_read; /* # of shared disk blocks read */ long shared_blks_dirtied; /* # of shared blocks dirtied */ long shared_blks_written; /* # of shared disk blocks written */ long local_blks_hit; /* # of local buffer hits */ long local_blks_read; /* # of local disk blocks read */ long local_blks_dirtied; /* # of shared blocks dirtied */ long local_blks_written; /* # of local disk blocks written */ long temp_blks_read; /* # of temp blocks read */ long temp_blks_written; /* # of temp blocks written */ instr_time blk_read_time; /* time spent reading */ instr_time blk_write_time; /* time spent writing */ } BufferUsage; typedef struct WalUsage { long wal_records; /* # of WAL records produced */ long wal_fpi; /* # of WAL full page images produced */ uint64 wal_bytes; /* size of WAL records produced */ } WalUsage; /* Flag bits included in InstrAlloc's instrument_options bitmask */ typedef enum InstrumentOption { INSTRUMENT_TIMER = 1 << 0, /* needs timer (and row counts) */ INSTRUMENT_BUFFERS = 1 << 1, /* needs buffer usage */ INSTRUMENT_ROWS = 1 << 2, /* needs row count */ INSTRUMENT_WAL = 1 << 3, /* needs WAL usage */ INSTRUMENT_ALL = PG_INT32_MAX } InstrumentOption; typedef struct Instrumentation { /* Parameters set at node creation: */ bool need_timer; /* true if we need timer data */ bool need_bufusage; /* true if we need buffer usage data */ bool need_walusage; /* true if we need WAL usage data */ /* Info about current plan cycle: */ bool running; /* true if we've completed first tuple */ instr_time starttime; /* start time of current iteration of node */ instr_time counter; /* accumulated runtime for this node */ double firsttuple; /* time for first tuple of this cycle */ double tuplecount; /* # of tuples emitted so far this cycle */ BufferUsage bufusage_start; /* buffer usage at start */ WalUsage walusage_start; /* WAL usage at start */ /* Accumulated statistics across all completed cycles: */ double startup; /* total startup time (in seconds) */ double total; /* total time (in seconds) */ double ntuples; /* total tuples produced */ double ntuples2; /* secondary node-specific tuple counter */ double nloops; /* # of run cycles for this node */ double nfiltered1; /* # of tuples removed by scanqual or joinqual */ double nfiltered2; /* # of tuples removed by "other" quals */ BufferUsage bufusage; /* total buffer usage */ WalUsage walusage; /* total WAL usage */ } Instrumentation; typedef struct WorkerInstrumentation { int num_workers; /* # of structures that follow */ Instrumentation instrument[FLEXIBLE_ARRAY_MEMBER]; } WorkerInstrumentation; extern PGDLLIMPORT BufferUsage pgBufferUsage; extern PGDLLIMPORT WalUsage pgWalUsage; extern Instrumentation *InstrAlloc(int n, int instrument_options); extern void InstrInit(Instrumentation *instr, int instrument_options); extern void InstrStartNode(Instrumentation *instr); extern void InstrStopNode(Instrumentation *instr, double nTuples); extern void InstrEndLoop(Instrumentation *instr); extern void InstrAggNode(Instrumentation *dst, Instrumentation *add); extern void InstrStartParallelQuery(void); extern void InstrEndParallelQuery(BufferUsage *bufusage, WalUsage *walusage); extern void InstrAccumParallelQuery(BufferUsage *bufusage, WalUsage *walusage); extern void BufferUsageAccumDiff(BufferUsage *dst, const BufferUsage *add, const BufferUsage *sub); extern void WalUsageAccumDiff(WalUsage *dst, const WalUsage *add, const WalUsage *sub); #endif /* INSTRUMENT_H */ libpg_query-13-2.1.0/src/postgres/include/executor/spi.h000066400000000000000000000152601413137616400231510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * spi.h * Server Programming Interface public declarations * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/spi.h * *------------------------------------------------------------------------- */ #ifndef SPI_H #define SPI_H #include "commands/trigger.h" #include "lib/ilist.h" #include "nodes/parsenodes.h" #include "utils/portal.h" typedef struct SPITupleTable { /* Public members */ TupleDesc tupdesc; /* tuple descriptor */ HeapTuple *vals; /* array of tuples */ uint64 numvals; /* number of valid tuples */ /* Private members, not intended for external callers */ uint64 alloced; /* allocated length of vals array */ MemoryContext tuptabcxt; /* memory context of result table */ slist_node next; /* link for internal bookkeeping */ SubTransactionId subid; /* subxact in which tuptable was created */ } SPITupleTable; /* Plans are opaque structs for standard users of SPI */ typedef struct _SPI_plan *SPIPlanPtr; #define SPI_ERROR_CONNECT (-1) #define SPI_ERROR_COPY (-2) #define SPI_ERROR_OPUNKNOWN (-3) #define SPI_ERROR_UNCONNECTED (-4) #define SPI_ERROR_CURSOR (-5) /* not used anymore */ #define SPI_ERROR_ARGUMENT (-6) #define SPI_ERROR_PARAM (-7) #define SPI_ERROR_TRANSACTION (-8) #define SPI_ERROR_NOATTRIBUTE (-9) #define SPI_ERROR_NOOUTFUNC (-10) #define SPI_ERROR_TYPUNKNOWN (-11) #define SPI_ERROR_REL_DUPLICATE (-12) #define SPI_ERROR_REL_NOT_FOUND (-13) #define SPI_OK_CONNECT 1 #define SPI_OK_FINISH 2 #define SPI_OK_FETCH 3 #define SPI_OK_UTILITY 4 #define SPI_OK_SELECT 5 #define SPI_OK_SELINTO 6 #define SPI_OK_INSERT 7 #define SPI_OK_DELETE 8 #define SPI_OK_UPDATE 9 #define SPI_OK_CURSOR 10 #define SPI_OK_INSERT_RETURNING 11 #define SPI_OK_DELETE_RETURNING 12 #define SPI_OK_UPDATE_RETURNING 13 #define SPI_OK_REWRITTEN 14 #define SPI_OK_REL_REGISTER 15 #define SPI_OK_REL_UNREGISTER 16 #define SPI_OK_TD_REGISTER 17 #define SPI_OPT_NONATOMIC (1 << 0) /* These used to be functions, now just no-ops for backwards compatibility */ #define SPI_push() ((void) 0) #define SPI_pop() ((void) 0) #define SPI_push_conditional() false #define SPI_pop_conditional(pushed) ((void) 0) #define SPI_restore_connection() ((void) 0) extern PGDLLIMPORT uint64 SPI_processed; extern PGDLLIMPORT SPITupleTable *SPI_tuptable; extern PGDLLIMPORT int SPI_result; extern int SPI_connect(void); extern int SPI_connect_ext(int options); extern int SPI_finish(void); extern int SPI_execute(const char *src, bool read_only, long tcount); extern int SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls, bool read_only, long tcount); extern int SPI_execute_plan_with_paramlist(SPIPlanPtr plan, ParamListInfo params, bool read_only, long tcount); extern int SPI_exec(const char *src, long tcount); extern int SPI_execp(SPIPlanPtr plan, Datum *Values, const char *Nulls, long tcount); extern int SPI_execute_snapshot(SPIPlanPtr plan, Datum *Values, const char *Nulls, Snapshot snapshot, Snapshot crosscheck_snapshot, bool read_only, bool fire_triggers, long tcount); extern int SPI_execute_with_args(const char *src, int nargs, Oid *argtypes, Datum *Values, const char *Nulls, bool read_only, long tcount); extern SPIPlanPtr SPI_prepare(const char *src, int nargs, Oid *argtypes); extern SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, Oid *argtypes, int cursorOptions); extern SPIPlanPtr SPI_prepare_params(const char *src, ParserSetupHook parserSetup, void *parserSetupArg, int cursorOptions); extern int SPI_keepplan(SPIPlanPtr plan); extern SPIPlanPtr SPI_saveplan(SPIPlanPtr plan); extern int SPI_freeplan(SPIPlanPtr plan); extern Oid SPI_getargtypeid(SPIPlanPtr plan, int argIndex); extern int SPI_getargcount(SPIPlanPtr plan); extern bool SPI_is_cursor_plan(SPIPlanPtr plan); extern bool SPI_plan_is_valid(SPIPlanPtr plan); extern const char *SPI_result_code_string(int code); extern List *SPI_plan_get_plan_sources(SPIPlanPtr plan); extern CachedPlan *SPI_plan_get_cached_plan(SPIPlanPtr plan); extern HeapTuple SPI_copytuple(HeapTuple tuple); extern HeapTupleHeader SPI_returntuple(HeapTuple tuple, TupleDesc tupdesc); extern HeapTuple SPI_modifytuple(Relation rel, HeapTuple tuple, int natts, int *attnum, Datum *Values, const char *Nulls); extern int SPI_fnumber(TupleDesc tupdesc, const char *fname); extern char *SPI_fname(TupleDesc tupdesc, int fnumber); extern char *SPI_getvalue(HeapTuple tuple, TupleDesc tupdesc, int fnumber); extern Datum SPI_getbinval(HeapTuple tuple, TupleDesc tupdesc, int fnumber, bool *isnull); extern char *SPI_gettype(TupleDesc tupdesc, int fnumber); extern Oid SPI_gettypeid(TupleDesc tupdesc, int fnumber); extern char *SPI_getrelname(Relation rel); extern char *SPI_getnspname(Relation rel); extern void *SPI_palloc(Size size); extern void *SPI_repalloc(void *pointer, Size size); extern void SPI_pfree(void *pointer); extern Datum SPI_datumTransfer(Datum value, bool typByVal, int typLen); extern void SPI_freetuple(HeapTuple pointer); extern void SPI_freetuptable(SPITupleTable *tuptable); extern Portal SPI_cursor_open(const char *name, SPIPlanPtr plan, Datum *Values, const char *Nulls, bool read_only); extern Portal SPI_cursor_open_with_args(const char *name, const char *src, int nargs, Oid *argtypes, Datum *Values, const char *Nulls, bool read_only, int cursorOptions); extern Portal SPI_cursor_open_with_paramlist(const char *name, SPIPlanPtr plan, ParamListInfo params, bool read_only); extern Portal SPI_cursor_find(const char *name); extern void SPI_cursor_fetch(Portal portal, bool forward, long count); extern void SPI_cursor_move(Portal portal, bool forward, long count); extern void SPI_scroll_cursor_fetch(Portal, FetchDirection direction, long count); extern void SPI_scroll_cursor_move(Portal, FetchDirection direction, long count); extern void SPI_cursor_close(Portal portal); extern int SPI_register_relation(EphemeralNamedRelation enr); extern int SPI_unregister_relation(const char *name); extern int SPI_register_trigger_data(TriggerData *tdata); extern void SPI_start_transaction(void); extern void SPI_commit(void); extern void SPI_commit_and_chain(void); extern void SPI_rollback(void); extern void SPI_rollback_and_chain(void); extern void SPICleanup(void); extern void AtEOXact_SPI(bool isCommit); extern void AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid); extern bool SPI_inside_nonatomic_context(void); #endif /* SPI_H */ libpg_query-13-2.1.0/src/postgres/include/executor/tablefunc.h000066400000000000000000000054421413137616400243220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tablefunc.h * interface for TableFunc executor node * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/tablefunc.h * *------------------------------------------------------------------------- */ #ifndef _TABLEFUNC_H #define _TABLEFUNC_H /* Forward-declare this to avoid including execnodes.h here */ struct TableFuncScanState; /* * TableFuncRoutine holds function pointers used for generating content of * table-producer functions, such as XMLTABLE. * * InitOpaque initializes table builder private objects. The output tuple * descriptor, input functions for the columns, and typioparams are passed * from executor state. * * SetDocument is called to define the input document. The table builder may * apply additional transformations not exposed outside the table builder * context. * * SetNamespace is called to pass namespace declarations from the table * expression. This function may be NULL if namespaces are not supported by * the table builder. Namespaces must be given before setting the row and * column filters. If the name is given as NULL, the entry shall be for the * default namespace. * * SetRowFilter is called do define the row-generating filter, which shall be * used to extract each row from the input document. * * SetColumnFilter is called once for each column, to define the column- * generating filter for the given column. * * FetchRow shall be called repeatedly until it returns that no more rows are * found in the document. On each invocation it shall set state in the table * builder context such that each subsequent GetValue call returns the values * for the indicated column for the row being processed. * * DestroyOpaque shall release all resources associated with a table builder * context. It may be called either because all rows have been consumed, or * because an error occurred while processing the table expression. */ typedef struct TableFuncRoutine { void (*InitOpaque) (struct TableFuncScanState *state, int natts); void (*SetDocument) (struct TableFuncScanState *state, Datum value); void (*SetNamespace) (struct TableFuncScanState *state, const char *name, const char *uri); void (*SetRowFilter) (struct TableFuncScanState *state, const char *path); void (*SetColumnFilter) (struct TableFuncScanState *state, const char *path, int colnum); bool (*FetchRow) (struct TableFuncScanState *state); Datum (*GetValue) (struct TableFuncScanState *state, int colnum, Oid typid, int32 typmod, bool *isnull); void (*DestroyOpaque) (struct TableFuncScanState *state); } TableFuncRoutine; #endif /* _TABLEFUNC_H */ libpg_query-13-2.1.0/src/postgres/include/executor/tuptable.h000066400000000000000000000416661413137616400242070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tuptable.h * tuple table support stuff * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/executor/tuptable.h * *------------------------------------------------------------------------- */ #ifndef TUPTABLE_H #define TUPTABLE_H #include "access/htup.h" #include "access/htup_details.h" #include "access/sysattr.h" #include "access/tupdesc.h" #include "storage/buf.h" /*---------- * The executor stores tuples in a "tuple table" which is a List of * independent TupleTableSlots. * * There's various different types of tuple table slots, each being able to * store different types of tuples. Additional types of slots can be added * without modifying core code. The type of a slot is determined by the * TupleTableSlotOps* passed to the slot creation routine. The builtin types * of slots are * * 1. physical tuple in a disk buffer page (TTSOpsBufferHeapTuple) * 2. physical tuple constructed in palloc'ed memory (TTSOpsHeapTuple) * 3. "minimal" physical tuple constructed in palloc'ed memory * (TTSOpsMinimalTuple) * 4. "virtual" tuple consisting of Datum/isnull arrays (TTSOpsVirtual) * * * The first two cases are similar in that they both deal with "materialized" * tuples, but resource management is different. For a tuple in a disk page * we need to hold a pin on the buffer until the TupleTableSlot's reference * to the tuple is dropped; while for a palloc'd tuple we usually want the * tuple pfree'd when the TupleTableSlot's reference is dropped. * * A "minimal" tuple is handled similarly to a palloc'd regular tuple. * At present, minimal tuples never are stored in buffers, so there is no * parallel to case 1. Note that a minimal tuple has no "system columns". * (Actually, it could have an OID, but we have no need to access the OID.) * * A "virtual" tuple is an optimization used to minimize physical data copying * in a nest of plan nodes. Until materialized pass-by-reference Datums in * the slot point to storage that is not directly associated with the * TupleTableSlot; generally they will point to part of a tuple stored in a * lower plan node's output TupleTableSlot, or to a function result * constructed in a plan node's per-tuple econtext. It is the responsibility * of the generating plan node to be sure these resources are not released for * as long as the virtual tuple needs to be valid or is materialized. Note * also that a virtual tuple does not have any "system columns". * * The Datum/isnull arrays of a TupleTableSlot serve double duty. For virtual * slots they are the authoritative data. For the other builtin slots, * the arrays contain data extracted from the tuple. (In this state, any * pass-by-reference Datums point into the physical tuple.) The extracted * information is built "lazily", ie, only as needed. This serves to avoid * repeated extraction of data from the physical tuple. * * A TupleTableSlot can also be "empty", indicated by flag TTS_FLAG_EMPTY set * in tts_flags, holding no valid data. This is the only valid state for a * freshly-created slot that has not yet had a tuple descriptor assigned to * it. In this state, TTS_SHOULDFREE should not be set in tts_flags, tts_tuple * must be NULL and tts_nvalid zero. * * The tupleDescriptor is simply referenced, not copied, by the TupleTableSlot * code. The caller of ExecSetSlotDescriptor() is responsible for providing * a descriptor that will live as long as the slot does. (Typically, both * slots and descriptors are in per-query memory and are freed by memory * context deallocation at query end; so it's not worth providing any extra * mechanism to do more. However, the slot will increment the tupdesc * reference count if a reference-counted tupdesc is supplied.) * * When TTS_SHOULDFREE is set in tts_flags, the physical tuple is "owned" by * the slot and should be freed when the slot's reference to the tuple is * dropped. * * tts_values/tts_isnull are allocated either when the slot is created (when * the descriptor is provided), or when a descriptor is assigned to the slot; * they are of length equal to the descriptor's natts. * * The TTS_FLAG_SLOW flag is saved state for * slot_deform_heap_tuple, and should not be touched by any other code. *---------- */ /* true = slot is empty */ #define TTS_FLAG_EMPTY (1 << 1) #define TTS_EMPTY(slot) (((slot)->tts_flags & TTS_FLAG_EMPTY) != 0) /* should pfree tuple "owned" by the slot? */ #define TTS_FLAG_SHOULDFREE (1 << 2) #define TTS_SHOULDFREE(slot) (((slot)->tts_flags & TTS_FLAG_SHOULDFREE) != 0) /* saved state for slot_deform_heap_tuple */ #define TTS_FLAG_SLOW (1 << 3) #define TTS_SLOW(slot) (((slot)->tts_flags & TTS_FLAG_SLOW) != 0) /* fixed tuple descriptor */ #define TTS_FLAG_FIXED (1 << 4) #define TTS_FIXED(slot) (((slot)->tts_flags & TTS_FLAG_FIXED) != 0) struct TupleTableSlotOps; typedef struct TupleTableSlotOps TupleTableSlotOps; /* base tuple table slot type */ typedef struct TupleTableSlot { NodeTag type; #define FIELDNO_TUPLETABLESLOT_FLAGS 1 uint16 tts_flags; /* Boolean states */ #define FIELDNO_TUPLETABLESLOT_NVALID 2 AttrNumber tts_nvalid; /* # of valid values in tts_values */ const TupleTableSlotOps *const tts_ops; /* implementation of slot */ #define FIELDNO_TUPLETABLESLOT_TUPLEDESCRIPTOR 4 TupleDesc tts_tupleDescriptor; /* slot's tuple descriptor */ #define FIELDNO_TUPLETABLESLOT_VALUES 5 Datum *tts_values; /* current per-attribute values */ #define FIELDNO_TUPLETABLESLOT_ISNULL 6 bool *tts_isnull; /* current per-attribute isnull flags */ MemoryContext tts_mcxt; /* slot itself is in this context */ ItemPointerData tts_tid; /* stored tuple's tid */ Oid tts_tableOid; /* table oid of tuple */ } TupleTableSlot; /* routines for a TupleTableSlot implementation */ struct TupleTableSlotOps { /* Minimum size of the slot */ size_t base_slot_size; /* Initialization. */ void (*init) (TupleTableSlot *slot); /* Destruction. */ void (*release) (TupleTableSlot *slot); /* * Clear the contents of the slot. Only the contents are expected to be * cleared and not the tuple descriptor. Typically an implementation of * this callback should free the memory allocated for the tuple contained * in the slot. */ void (*clear) (TupleTableSlot *slot); /* * Fill up first natts entries of tts_values and tts_isnull arrays with * values from the tuple contained in the slot. The function may be called * with natts more than the number of attributes available in the tuple, * in which case it should set tts_nvalid to the number of returned * columns. */ void (*getsomeattrs) (TupleTableSlot *slot, int natts); /* * Returns value of the given system attribute as a datum and sets isnull * to false, if it's not NULL. Throws an error if the slot type does not * support system attributes. */ Datum (*getsysattr) (TupleTableSlot *slot, int attnum, bool *isnull); /* * Make the contents of the slot solely depend on the slot, and not on * underlying resources (like another memory context, buffers, etc). */ void (*materialize) (TupleTableSlot *slot); /* * Copy the contents of the source slot into the destination slot's own * context. Invoked using callback of the destination slot. */ void (*copyslot) (TupleTableSlot *dstslot, TupleTableSlot *srcslot); /* * Return a heap tuple "owned" by the slot. It is slot's responsibility to * free the memory consumed by the heap tuple. If the slot can not "own" a * heap tuple, it should not implement this callback and should set it as * NULL. */ HeapTuple (*get_heap_tuple) (TupleTableSlot *slot); /* * Return a minimal tuple "owned" by the slot. It is slot's responsibility * to free the memory consumed by the minimal tuple. If the slot can not * "own" a minimal tuple, it should not implement this callback and should * set it as NULL. */ MinimalTuple (*get_minimal_tuple) (TupleTableSlot *slot); /* * Return a copy of heap tuple representing the contents of the slot. The * copy needs to be palloc'd in the current memory context. The slot * itself is expected to remain unaffected. It is *not* expected to have * meaningful "system columns" in the copy. The copy is not be "owned" by * the slot i.e. the caller has to take responsibility to free memory * consumed by the slot. */ HeapTuple (*copy_heap_tuple) (TupleTableSlot *slot); /* * Return a copy of minimal tuple representing the contents of the slot. * The copy needs to be palloc'd in the current memory context. The slot * itself is expected to remain unaffected. It is *not* expected to have * meaningful "system columns" in the copy. The copy is not be "owned" by * the slot i.e. the caller has to take responsibility to free memory * consumed by the slot. */ MinimalTuple (*copy_minimal_tuple) (TupleTableSlot *slot); }; /* * Predefined TupleTableSlotOps for various types of TupleTableSlotOps. The * same are used to identify the type of a given slot. */ extern PGDLLIMPORT const TupleTableSlotOps TTSOpsVirtual; extern PGDLLIMPORT const TupleTableSlotOps TTSOpsHeapTuple; extern PGDLLIMPORT const TupleTableSlotOps TTSOpsMinimalTuple; extern PGDLLIMPORT const TupleTableSlotOps TTSOpsBufferHeapTuple; #define TTS_IS_VIRTUAL(slot) ((slot)->tts_ops == &TTSOpsVirtual) #define TTS_IS_HEAPTUPLE(slot) ((slot)->tts_ops == &TTSOpsHeapTuple) #define TTS_IS_MINIMALTUPLE(slot) ((slot)->tts_ops == &TTSOpsMinimalTuple) #define TTS_IS_BUFFERTUPLE(slot) ((slot)->tts_ops == &TTSOpsBufferHeapTuple) /* * Tuple table slot implementations. */ typedef struct VirtualTupleTableSlot { TupleTableSlot base; char *data; /* data for materialized slots */ } VirtualTupleTableSlot; typedef struct HeapTupleTableSlot { TupleTableSlot base; #define FIELDNO_HEAPTUPLETABLESLOT_TUPLE 1 HeapTuple tuple; /* physical tuple */ #define FIELDNO_HEAPTUPLETABLESLOT_OFF 2 uint32 off; /* saved state for slot_deform_heap_tuple */ HeapTupleData tupdata; /* optional workspace for storing tuple */ } HeapTupleTableSlot; /* heap tuple residing in a buffer */ typedef struct BufferHeapTupleTableSlot { HeapTupleTableSlot base; /* * If buffer is not InvalidBuffer, then the slot is holding a pin on the * indicated buffer page; drop the pin when we release the slot's * reference to that buffer. (TTS_FLAG_SHOULDFREE should not be set in * such a case, since presumably tts_tuple is pointing into the buffer.) */ Buffer buffer; /* tuple's buffer, or InvalidBuffer */ } BufferHeapTupleTableSlot; typedef struct MinimalTupleTableSlot { TupleTableSlot base; /* * In a minimal slot tuple points at minhdr and the fields of that struct * are set correctly for access to the minimal tuple; in particular, * minhdr.t_data points MINIMAL_TUPLE_OFFSET bytes before mintuple. This * allows column extraction to treat the case identically to regular * physical tuples. */ #define FIELDNO_MINIMALTUPLETABLESLOT_TUPLE 1 HeapTuple tuple; /* tuple wrapper */ MinimalTuple mintuple; /* minimal tuple, or NULL if none */ HeapTupleData minhdr; /* workspace for minimal-tuple-only case */ #define FIELDNO_MINIMALTUPLETABLESLOT_OFF 4 uint32 off; /* saved state for slot_deform_heap_tuple */ } MinimalTupleTableSlot; /* * TupIsNull -- is a TupleTableSlot empty? */ #define TupIsNull(slot) \ ((slot) == NULL || TTS_EMPTY(slot)) /* in executor/execTuples.c */ extern TupleTableSlot *MakeTupleTableSlot(TupleDesc tupleDesc, const TupleTableSlotOps *tts_ops); extern TupleTableSlot *ExecAllocTableSlot(List **tupleTable, TupleDesc desc, const TupleTableSlotOps *tts_ops); extern void ExecResetTupleTable(List *tupleTable, bool shouldFree); extern TupleTableSlot *MakeSingleTupleTableSlot(TupleDesc tupdesc, const TupleTableSlotOps *tts_ops); extern void ExecDropSingleTupleTableSlot(TupleTableSlot *slot); extern void ExecSetSlotDescriptor(TupleTableSlot *slot, TupleDesc tupdesc); extern TupleTableSlot *ExecStoreHeapTuple(HeapTuple tuple, TupleTableSlot *slot, bool shouldFree); extern void ExecForceStoreHeapTuple(HeapTuple tuple, TupleTableSlot *slot, bool shouldFree); extern TupleTableSlot *ExecStoreBufferHeapTuple(HeapTuple tuple, TupleTableSlot *slot, Buffer buffer); extern TupleTableSlot *ExecStorePinnedBufferHeapTuple(HeapTuple tuple, TupleTableSlot *slot, Buffer buffer); extern TupleTableSlot *ExecStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, bool shouldFree); extern void ExecForceStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, bool shouldFree); extern TupleTableSlot *ExecStoreVirtualTuple(TupleTableSlot *slot); extern TupleTableSlot *ExecStoreAllNullTuple(TupleTableSlot *slot); extern void ExecStoreHeapTupleDatum(Datum data, TupleTableSlot *slot); extern HeapTuple ExecFetchSlotHeapTuple(TupleTableSlot *slot, bool materialize, bool *shouldFree); extern MinimalTuple ExecFetchSlotMinimalTuple(TupleTableSlot *slot, bool *shouldFree); extern Datum ExecFetchSlotHeapTupleDatum(TupleTableSlot *slot); extern void slot_getmissingattrs(TupleTableSlot *slot, int startAttNum, int lastAttNum); extern void slot_getsomeattrs_int(TupleTableSlot *slot, int attnum); #ifndef FRONTEND /* * This function forces the entries of the slot's Datum/isnull arrays to be * valid at least up through the attnum'th entry. */ static inline void slot_getsomeattrs(TupleTableSlot *slot, int attnum) { if (slot->tts_nvalid < attnum) slot_getsomeattrs_int(slot, attnum); } /* * slot_getallattrs * This function forces all the entries of the slot's Datum/isnull * arrays to be valid. The caller may then extract data directly * from those arrays instead of using slot_getattr. */ static inline void slot_getallattrs(TupleTableSlot *slot) { slot_getsomeattrs(slot, slot->tts_tupleDescriptor->natts); } /* * slot_attisnull * * Detect whether an attribute of the slot is null, without actually fetching * it. */ static inline bool slot_attisnull(TupleTableSlot *slot, int attnum) { AssertArg(attnum > 0); if (attnum > slot->tts_nvalid) slot_getsomeattrs(slot, attnum); return slot->tts_isnull[attnum - 1]; } /* * slot_getattr - fetch one attribute of the slot's contents. */ static inline Datum slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull) { AssertArg(attnum > 0); if (attnum > slot->tts_nvalid) slot_getsomeattrs(slot, attnum); *isnull = slot->tts_isnull[attnum - 1]; return slot->tts_values[attnum - 1]; } /* * slot_getsysattr - fetch a system attribute of the slot's current tuple. * * If the slot type does not contain system attributes, this will throw an * error. Hence before calling this function, callers should make sure that * the slot type is the one that supports system attributes. */ static inline Datum slot_getsysattr(TupleTableSlot *slot, int attnum, bool *isnull) { AssertArg(attnum < 0); /* caller error */ if (attnum == TableOidAttributeNumber) { *isnull = false; return ObjectIdGetDatum(slot->tts_tableOid); } else if (attnum == SelfItemPointerAttributeNumber) { *isnull = false; return PointerGetDatum(&slot->tts_tid); } /* Fetch the system attribute from the underlying tuple. */ return slot->tts_ops->getsysattr(slot, attnum, isnull); } /* * ExecClearTuple - clear the slot's contents */ static inline TupleTableSlot * ExecClearTuple(TupleTableSlot *slot) { slot->tts_ops->clear(slot); return slot; } /* ExecMaterializeSlot - force a slot into the "materialized" state. * * This causes the slot's tuple to be a local copy not dependent on any * external storage (i.e. pointing into a Buffer, or having allocations in * another memory context). * * A typical use for this operation is to prepare a computed tuple for being * stored on disk. The original data may or may not be virtual, but in any * case we need a private copy for heap_insert to scribble on. */ static inline void ExecMaterializeSlot(TupleTableSlot *slot) { slot->tts_ops->materialize(slot); } /* * ExecCopySlotHeapTuple - return HeapTuple allocated in caller's context */ static inline HeapTuple ExecCopySlotHeapTuple(TupleTableSlot *slot) { Assert(!TTS_EMPTY(slot)); return slot->tts_ops->copy_heap_tuple(slot); } /* * ExecCopySlotMinimalTuple - return MinimalTuple allocated in caller's context */ static inline MinimalTuple ExecCopySlotMinimalTuple(TupleTableSlot *slot) { return slot->tts_ops->copy_minimal_tuple(slot); } /* * ExecCopySlot - copy one slot's contents into another. * * If a source's system attributes are supposed to be accessed in the target * slot, the target slot and source slot types need to match. */ static inline TupleTableSlot * ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot) { Assert(!TTS_EMPTY(srcslot)); AssertArg(srcslot != dstslot); dstslot->tts_ops->copyslot(dstslot, srcslot); return dstslot; } #endif /* FRONTEND */ #endif /* TUPTABLE_H */ libpg_query-13-2.1.0/src/postgres/include/fmgr.h000066400000000000000000001034161413137616400214540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fmgr.h * Definitions for the Postgres function manager and function-call * interface. * * This file must be included by all Postgres modules that either define * or call fmgr-callable functions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/fmgr.h * *------------------------------------------------------------------------- */ #ifndef FMGR_H #define FMGR_H /* We don't want to include primnodes.h here, so make some stub references */ typedef struct Node *fmNodePtr; typedef struct Aggref *fmAggrefPtr; /* Likewise, avoid including execnodes.h here */ typedef void (*fmExprContextCallbackFunction) (Datum arg); /* Likewise, avoid including stringinfo.h here */ typedef struct StringInfoData *fmStringInfo; /* * All functions that can be called directly by fmgr must have this signature. * (Other functions can be called by using a handler that does have this * signature.) */ typedef struct FunctionCallInfoBaseData *FunctionCallInfo; typedef Datum (*PGFunction) (FunctionCallInfo fcinfo); /* * This struct holds the system-catalog information that must be looked up * before a function can be called through fmgr. If the same function is * to be called multiple times, the lookup need be done only once and the * info struct saved for re-use. * * Note that fn_expr really is parse-time-determined information about the * arguments, rather than about the function itself. But it's convenient to * store it here rather than in FunctionCallInfoBaseData, where it might more * logically belong. * * fn_extra is available for use by the called function; all other fields * should be treated as read-only after the struct is created. */ typedef struct FmgrInfo { PGFunction fn_addr; /* pointer to function or handler to be called */ Oid fn_oid; /* OID of function (NOT of handler, if any) */ short fn_nargs; /* number of input args (0..FUNC_MAX_ARGS) */ bool fn_strict; /* function is "strict" (NULL in => NULL out) */ bool fn_retset; /* function returns a set */ unsigned char fn_stats; /* collect stats if track_functions > this */ void *fn_extra; /* extra space for use by handler */ MemoryContext fn_mcxt; /* memory context to store fn_extra in */ fmNodePtr fn_expr; /* expression parse tree for call, or NULL */ } FmgrInfo; /* * This struct is the data actually passed to an fmgr-called function. * * The called function is expected to set isnull, and possibly resultinfo or * fields in whatever resultinfo points to. It should not change any other * fields. (In particular, scribbling on the argument arrays is a bad idea, * since some callers assume they can re-call with the same arguments.) * * Note that enough space for arguments needs to be provided, either by using * SizeForFunctionCallInfo() in dynamic allocations, or by using * LOCAL_FCINFO() for on-stack allocations. * * This struct is named *BaseData, rather than *Data, to break pre v12 code * that allocated FunctionCallInfoData itself, as it'd often silently break * old code due to no space for arguments being provided. */ typedef struct FunctionCallInfoBaseData { FmgrInfo *flinfo; /* ptr to lookup info used for this call */ fmNodePtr context; /* pass info about context of call */ fmNodePtr resultinfo; /* pass or return extra info about result */ Oid fncollation; /* collation for function to use */ #define FIELDNO_FUNCTIONCALLINFODATA_ISNULL 4 bool isnull; /* function must set true if result is NULL */ short nargs; /* # arguments actually passed */ #define FIELDNO_FUNCTIONCALLINFODATA_ARGS 6 NullableDatum args[FLEXIBLE_ARRAY_MEMBER]; } FunctionCallInfoBaseData; /* * Space needed for a FunctionCallInfoBaseData struct with sufficient space * for `nargs` arguments. */ #define SizeForFunctionCallInfo(nargs) \ (offsetof(FunctionCallInfoBaseData, args) + \ sizeof(NullableDatum) * (nargs)) /* * This macro ensures that `name` points to a stack-allocated * FunctionCallInfoBaseData struct with sufficient space for `nargs` arguments. */ #define LOCAL_FCINFO(name, nargs) \ /* use union with FunctionCallInfoBaseData to guarantee alignment */ \ union \ { \ FunctionCallInfoBaseData fcinfo; \ /* ensure enough space for nargs args is available */ \ char fcinfo_data[SizeForFunctionCallInfo(nargs)]; \ } name##data; \ FunctionCallInfo name = &name##data.fcinfo /* * This routine fills a FmgrInfo struct, given the OID * of the function to be called. */ extern void fmgr_info(Oid functionId, FmgrInfo *finfo); /* * Same, when the FmgrInfo struct is in a memory context longer-lived than * CurrentMemoryContext. The specified context will be set as fn_mcxt * and used to hold all subsidiary data of finfo. */ extern void fmgr_info_cxt(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt); /* Convenience macro for setting the fn_expr field */ #define fmgr_info_set_expr(expr, finfo) \ ((finfo)->fn_expr = (expr)) /* * Copy an FmgrInfo struct */ extern void fmgr_info_copy(FmgrInfo *dstinfo, FmgrInfo *srcinfo, MemoryContext destcxt); extern void fmgr_symbol(Oid functionId, char **mod, char **fn); /* * This macro initializes all the fields of a FunctionCallInfoBaseData except * for the args[] array. */ #define InitFunctionCallInfoData(Fcinfo, Flinfo, Nargs, Collation, Context, Resultinfo) \ do { \ (Fcinfo).flinfo = (Flinfo); \ (Fcinfo).context = (Context); \ (Fcinfo).resultinfo = (Resultinfo); \ (Fcinfo).fncollation = (Collation); \ (Fcinfo).isnull = false; \ (Fcinfo).nargs = (Nargs); \ } while (0) /* * This macro invokes a function given a filled-in FunctionCallInfoBaseData * struct. The macro result is the returned Datum --- but note that * caller must still check fcinfo->isnull! Also, if function is strict, * it is caller's responsibility to verify that no null arguments are present * before calling. * * Some code performs multiple calls without redoing InitFunctionCallInfoData, * possibly altering the argument values. This is okay, but be sure to reset * the fcinfo->isnull flag before each call, since callees are permitted to * assume that starts out false. */ #define FunctionCallInvoke(fcinfo) ((* (fcinfo)->flinfo->fn_addr) (fcinfo)) /*------------------------------------------------------------------------- * Support macros to ease writing fmgr-compatible functions * * A C-coded fmgr-compatible function should be declared as * * Datum * function_name(PG_FUNCTION_ARGS) * { * ... * } * * It should access its arguments using appropriate PG_GETARG_xxx macros * and should return its result using PG_RETURN_xxx. * *------------------------------------------------------------------------- */ /* Standard parameter list for fmgr-compatible functions */ #define PG_FUNCTION_ARGS FunctionCallInfo fcinfo /* * Get collation function should use. */ #define PG_GET_COLLATION() (fcinfo->fncollation) /* * Get number of arguments passed to function. */ #define PG_NARGS() (fcinfo->nargs) /* * If function is not marked "proisstrict" in pg_proc, it must check for * null arguments using this macro. Do not try to GETARG a null argument! */ #define PG_ARGISNULL(n) (fcinfo->args[n].isnull) /* * Support for fetching detoasted copies of toastable datatypes (all of * which are varlena types). pg_detoast_datum() gives you either the input * datum (if not toasted) or a detoasted copy allocated with palloc(). * pg_detoast_datum_copy() always gives you a palloc'd copy --- use it * if you need a modifiable copy of the input. Caller is expected to have * checked for null inputs first, if necessary. * * pg_detoast_datum_packed() will return packed (1-byte header) datums * unmodified. It will still expand an externally toasted or compressed datum. * The resulting datum can be accessed using VARSIZE_ANY() and VARDATA_ANY() * (beware of multiple evaluations in those macros!) * * In consumers oblivious to data alignment, call PG_DETOAST_DATUM_PACKED(), * VARDATA_ANY(), VARSIZE_ANY() and VARSIZE_ANY_EXHDR(). Elsewhere, call * PG_DETOAST_DATUM(), VARDATA() and VARSIZE(). Directly fetching an int16, * int32 or wider field in the struct representing the datum layout requires * aligned data. memcpy() is alignment-oblivious, as are most operations on * datatypes, such as text, whose layout struct contains only char fields. * * Note: it'd be nice if these could be macros, but I see no way to do that * without evaluating the arguments multiple times, which is NOT acceptable. */ extern struct varlena *pg_detoast_datum(struct varlena *datum); extern struct varlena *pg_detoast_datum_copy(struct varlena *datum); extern struct varlena *pg_detoast_datum_slice(struct varlena *datum, int32 first, int32 count); extern struct varlena *pg_detoast_datum_packed(struct varlena *datum); #define PG_DETOAST_DATUM(datum) \ pg_detoast_datum((struct varlena *) DatumGetPointer(datum)) #define PG_DETOAST_DATUM_COPY(datum) \ pg_detoast_datum_copy((struct varlena *) DatumGetPointer(datum)) #define PG_DETOAST_DATUM_SLICE(datum,f,c) \ pg_detoast_datum_slice((struct varlena *) DatumGetPointer(datum), \ (int32) (f), (int32) (c)) /* WARNING -- unaligned pointer */ #define PG_DETOAST_DATUM_PACKED(datum) \ pg_detoast_datum_packed((struct varlena *) DatumGetPointer(datum)) /* * Support for cleaning up detoasted copies of inputs. This must only * be used for pass-by-ref datatypes, and normally would only be used * for toastable types. If the given pointer is different from the * original argument, assume it's a palloc'd detoasted copy, and pfree it. * NOTE: most functions on toastable types do not have to worry about this, * but we currently require that support functions for indexes not leak * memory. */ #define PG_FREE_IF_COPY(ptr,n) \ do { \ if ((Pointer) (ptr) != PG_GETARG_POINTER(n)) \ pfree(ptr); \ } while (0) /* Macros for fetching arguments of standard types */ #define PG_GETARG_DATUM(n) (fcinfo->args[n].value) #define PG_GETARG_INT32(n) DatumGetInt32(PG_GETARG_DATUM(n)) #define PG_GETARG_UINT32(n) DatumGetUInt32(PG_GETARG_DATUM(n)) #define PG_GETARG_INT16(n) DatumGetInt16(PG_GETARG_DATUM(n)) #define PG_GETARG_UINT16(n) DatumGetUInt16(PG_GETARG_DATUM(n)) #define PG_GETARG_CHAR(n) DatumGetChar(PG_GETARG_DATUM(n)) #define PG_GETARG_BOOL(n) DatumGetBool(PG_GETARG_DATUM(n)) #define PG_GETARG_OID(n) DatumGetObjectId(PG_GETARG_DATUM(n)) #define PG_GETARG_POINTER(n) DatumGetPointer(PG_GETARG_DATUM(n)) #define PG_GETARG_CSTRING(n) DatumGetCString(PG_GETARG_DATUM(n)) #define PG_GETARG_NAME(n) DatumGetName(PG_GETARG_DATUM(n)) /* these macros hide the pass-by-reference-ness of the datatype: */ #define PG_GETARG_FLOAT4(n) DatumGetFloat4(PG_GETARG_DATUM(n)) #define PG_GETARG_FLOAT8(n) DatumGetFloat8(PG_GETARG_DATUM(n)) #define PG_GETARG_INT64(n) DatumGetInt64(PG_GETARG_DATUM(n)) /* use this if you want the raw, possibly-toasted input datum: */ #define PG_GETARG_RAW_VARLENA_P(n) ((struct varlena *) PG_GETARG_POINTER(n)) /* use this if you want the input datum de-toasted: */ #define PG_GETARG_VARLENA_P(n) PG_DETOAST_DATUM(PG_GETARG_DATUM(n)) /* and this if you can handle 1-byte-header datums: */ #define PG_GETARG_VARLENA_PP(n) PG_DETOAST_DATUM_PACKED(PG_GETARG_DATUM(n)) /* DatumGetFoo macros for varlena types will typically look like this: */ #define DatumGetByteaPP(X) ((bytea *) PG_DETOAST_DATUM_PACKED(X)) #define DatumGetTextPP(X) ((text *) PG_DETOAST_DATUM_PACKED(X)) #define DatumGetBpCharPP(X) ((BpChar *) PG_DETOAST_DATUM_PACKED(X)) #define DatumGetVarCharPP(X) ((VarChar *) PG_DETOAST_DATUM_PACKED(X)) #define DatumGetHeapTupleHeader(X) ((HeapTupleHeader) PG_DETOAST_DATUM(X)) /* And we also offer variants that return an OK-to-write copy */ #define DatumGetByteaPCopy(X) ((bytea *) PG_DETOAST_DATUM_COPY(X)) #define DatumGetTextPCopy(X) ((text *) PG_DETOAST_DATUM_COPY(X)) #define DatumGetBpCharPCopy(X) ((BpChar *) PG_DETOAST_DATUM_COPY(X)) #define DatumGetVarCharPCopy(X) ((VarChar *) PG_DETOAST_DATUM_COPY(X)) #define DatumGetHeapTupleHeaderCopy(X) ((HeapTupleHeader) PG_DETOAST_DATUM_COPY(X)) /* Variants which return n bytes starting at pos. m */ #define DatumGetByteaPSlice(X,m,n) ((bytea *) PG_DETOAST_DATUM_SLICE(X,m,n)) #define DatumGetTextPSlice(X,m,n) ((text *) PG_DETOAST_DATUM_SLICE(X,m,n)) #define DatumGetBpCharPSlice(X,m,n) ((BpChar *) PG_DETOAST_DATUM_SLICE(X,m,n)) #define DatumGetVarCharPSlice(X,m,n) ((VarChar *) PG_DETOAST_DATUM_SLICE(X,m,n)) /* GETARG macros for varlena types will typically look like this: */ #define PG_GETARG_BYTEA_PP(n) DatumGetByteaPP(PG_GETARG_DATUM(n)) #define PG_GETARG_TEXT_PP(n) DatumGetTextPP(PG_GETARG_DATUM(n)) #define PG_GETARG_BPCHAR_PP(n) DatumGetBpCharPP(PG_GETARG_DATUM(n)) #define PG_GETARG_VARCHAR_PP(n) DatumGetVarCharPP(PG_GETARG_DATUM(n)) #define PG_GETARG_HEAPTUPLEHEADER(n) DatumGetHeapTupleHeader(PG_GETARG_DATUM(n)) /* And we also offer variants that return an OK-to-write copy */ #define PG_GETARG_BYTEA_P_COPY(n) DatumGetByteaPCopy(PG_GETARG_DATUM(n)) #define PG_GETARG_TEXT_P_COPY(n) DatumGetTextPCopy(PG_GETARG_DATUM(n)) #define PG_GETARG_BPCHAR_P_COPY(n) DatumGetBpCharPCopy(PG_GETARG_DATUM(n)) #define PG_GETARG_VARCHAR_P_COPY(n) DatumGetVarCharPCopy(PG_GETARG_DATUM(n)) #define PG_GETARG_HEAPTUPLEHEADER_COPY(n) DatumGetHeapTupleHeaderCopy(PG_GETARG_DATUM(n)) /* And a b-byte slice from position a -also OK to write */ #define PG_GETARG_BYTEA_P_SLICE(n,a,b) DatumGetByteaPSlice(PG_GETARG_DATUM(n),a,b) #define PG_GETARG_TEXT_P_SLICE(n,a,b) DatumGetTextPSlice(PG_GETARG_DATUM(n),a,b) #define PG_GETARG_BPCHAR_P_SLICE(n,a,b) DatumGetBpCharPSlice(PG_GETARG_DATUM(n),a,b) #define PG_GETARG_VARCHAR_P_SLICE(n,a,b) DatumGetVarCharPSlice(PG_GETARG_DATUM(n),a,b) /* * Obsolescent variants that guarantee INT alignment for the return value. * Few operations on these particular types need alignment, mainly operations * that cast the VARDATA pointer to a type like int16[]. Most code should use * the ...PP(X) counterpart. Nonetheless, these appear frequently in code * predating the PostgreSQL 8.3 introduction of the ...PP(X) variants. */ #define DatumGetByteaP(X) ((bytea *) PG_DETOAST_DATUM(X)) #define DatumGetTextP(X) ((text *) PG_DETOAST_DATUM(X)) #define DatumGetBpCharP(X) ((BpChar *) PG_DETOAST_DATUM(X)) #define DatumGetVarCharP(X) ((VarChar *) PG_DETOAST_DATUM(X)) #define PG_GETARG_BYTEA_P(n) DatumGetByteaP(PG_GETARG_DATUM(n)) #define PG_GETARG_TEXT_P(n) DatumGetTextP(PG_GETARG_DATUM(n)) #define PG_GETARG_BPCHAR_P(n) DatumGetBpCharP(PG_GETARG_DATUM(n)) #define PG_GETARG_VARCHAR_P(n) DatumGetVarCharP(PG_GETARG_DATUM(n)) /* To access options from opclass support functions use this: */ #define PG_HAS_OPCLASS_OPTIONS() has_fn_opclass_options(fcinfo->flinfo) #define PG_GET_OPCLASS_OPTIONS() get_fn_opclass_options(fcinfo->flinfo) /* To return a NULL do this: */ #define PG_RETURN_NULL() \ do { fcinfo->isnull = true; return (Datum) 0; } while (0) /* A few internal functions return void (which is not the same as NULL!) */ #define PG_RETURN_VOID() return (Datum) 0 /* Macros for returning results of standard types */ #define PG_RETURN_DATUM(x) return (x) #define PG_RETURN_INT32(x) return Int32GetDatum(x) #define PG_RETURN_UINT32(x) return UInt32GetDatum(x) #define PG_RETURN_INT16(x) return Int16GetDatum(x) #define PG_RETURN_UINT16(x) return UInt16GetDatum(x) #define PG_RETURN_CHAR(x) return CharGetDatum(x) #define PG_RETURN_BOOL(x) return BoolGetDatum(x) #define PG_RETURN_OID(x) return ObjectIdGetDatum(x) #define PG_RETURN_POINTER(x) return PointerGetDatum(x) #define PG_RETURN_CSTRING(x) return CStringGetDatum(x) #define PG_RETURN_NAME(x) return NameGetDatum(x) /* these macros hide the pass-by-reference-ness of the datatype: */ #define PG_RETURN_FLOAT4(x) return Float4GetDatum(x) #define PG_RETURN_FLOAT8(x) return Float8GetDatum(x) #define PG_RETURN_INT64(x) return Int64GetDatum(x) #define PG_RETURN_UINT64(x) return UInt64GetDatum(x) /* RETURN macros for other pass-by-ref types will typically look like this: */ #define PG_RETURN_BYTEA_P(x) PG_RETURN_POINTER(x) #define PG_RETURN_TEXT_P(x) PG_RETURN_POINTER(x) #define PG_RETURN_BPCHAR_P(x) PG_RETURN_POINTER(x) #define PG_RETURN_VARCHAR_P(x) PG_RETURN_POINTER(x) #define PG_RETURN_HEAPTUPLEHEADER(x) return HeapTupleHeaderGetDatum(x) /*------------------------------------------------------------------------- * Support for detecting call convention of dynamically-loaded functions * * Dynamically loaded functions currently can only use the version-1 ("new * style") calling convention. Version-0 ("old style") is not supported * anymore. Version 1 is the call convention defined in this header file, and * must be accompanied by the macro call * * PG_FUNCTION_INFO_V1(function_name); * * Note that internal functions do not need this decoration since they are * assumed to be version-1. * *------------------------------------------------------------------------- */ typedef struct { int api_version; /* specifies call convention version number */ /* More fields may be added later, for version numbers > 1. */ } Pg_finfo_record; /* Expected signature of an info function */ typedef const Pg_finfo_record *(*PGFInfoFunction) (void); /* * Macro to build an info function associated with the given function name. * * As a convenience, also provide an "extern" declaration for the given * function name, so that writers of C functions need not write that too. * * On Windows, the function and info function must be exported. Our normal * build processes take care of that via .DEF files or --export-all-symbols. * Module authors using a different build process might need to manually * declare the function PGDLLEXPORT. We do that automatically here for the * info function, since authors shouldn't need to be explicitly aware of it. */ #define PG_FUNCTION_INFO_V1(funcname) \ extern Datum funcname(PG_FUNCTION_ARGS); \ extern PGDLLEXPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \ const Pg_finfo_record * \ CppConcat(pg_finfo_,funcname) (void) \ { \ static const Pg_finfo_record my_finfo = { 1 }; \ return &my_finfo; \ } \ extern int no_such_variable /*------------------------------------------------------------------------- * Support for verifying backend compatibility of loaded modules * * We require dynamically-loaded modules to include the macro call * PG_MODULE_MAGIC; * so that we can check for obvious incompatibility, such as being compiled * for a different major PostgreSQL version. * * To compile with versions of PostgreSQL that do not support this, * you may put an #ifdef/#endif test around it. Note that in a multiple- * source-file module, the macro call should only appear once. * * The specific items included in the magic block are intended to be ones that * are custom-configurable and especially likely to break dynamically loaded * modules if they were compiled with other values. Also, the length field * can be used to detect definition changes. * * Note: we compare magic blocks with memcmp(), so there had better not be * any alignment pad bytes in them. * * Note: when changing the contents of magic blocks, be sure to adjust the * incompatible_module_error() function in dfmgr.c. *------------------------------------------------------------------------- */ /* Definition of the magic block structure */ typedef struct { int len; /* sizeof(this struct) */ int version; /* PostgreSQL major version */ int funcmaxargs; /* FUNC_MAX_ARGS */ int indexmaxkeys; /* INDEX_MAX_KEYS */ int namedatalen; /* NAMEDATALEN */ int float8byval; /* FLOAT8PASSBYVAL */ } Pg_magic_struct; /* The actual data block contents */ #define PG_MODULE_MAGIC_DATA \ { \ sizeof(Pg_magic_struct), \ PG_VERSION_NUM / 100, \ FUNC_MAX_ARGS, \ INDEX_MAX_KEYS, \ NAMEDATALEN, \ FLOAT8PASSBYVAL \ } /* * Declare the module magic function. It needs to be a function as the dlsym * in the backend is only guaranteed to work on functions, not data */ typedef const Pg_magic_struct *(*PGModuleMagicFunction) (void); #define PG_MAGIC_FUNCTION_NAME Pg_magic_func #define PG_MAGIC_FUNCTION_NAME_STRING "Pg_magic_func" #define PG_MODULE_MAGIC \ extern PGDLLEXPORT const Pg_magic_struct *PG_MAGIC_FUNCTION_NAME(void); \ const Pg_magic_struct * \ PG_MAGIC_FUNCTION_NAME(void) \ { \ static const Pg_magic_struct Pg_magic_data = PG_MODULE_MAGIC_DATA; \ return &Pg_magic_data; \ } \ extern int no_such_variable /*------------------------------------------------------------------------- * Support routines and macros for callers of fmgr-compatible functions *------------------------------------------------------------------------- */ /* These are for invocation of a specifically named function with a * directly-computed parameter list. Note that neither arguments nor result * are allowed to be NULL. Also, the function cannot be one that needs to * look at FmgrInfo, since there won't be any. */ extern Datum DirectFunctionCall1Coll(PGFunction func, Oid collation, Datum arg1); extern Datum DirectFunctionCall2Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2); extern Datum DirectFunctionCall3Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3); extern Datum DirectFunctionCall4Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4); extern Datum DirectFunctionCall5Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5); extern Datum DirectFunctionCall6Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6); extern Datum DirectFunctionCall7Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7); extern Datum DirectFunctionCall8Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8); extern Datum DirectFunctionCall9Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9); /* * These functions work like the DirectFunctionCall functions except that * they use the flinfo parameter to initialise the fcinfo for the call. * It's recommended that the callee only use the fn_extra and fn_mcxt * fields, as other fields will typically describe the calling function * not the callee. Conversely, the calling function should not have * used fn_extra, unless its use is known to be compatible with the callee's. */ extern Datum CallerFInfoFunctionCall1(PGFunction func, FmgrInfo *flinfo, Oid collation, Datum arg1); extern Datum CallerFInfoFunctionCall2(PGFunction func, FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2); /* These are for invocation of a previously-looked-up function with a * directly-computed parameter list. Note that neither arguments nor result * are allowed to be NULL. */ extern Datum FunctionCall0Coll(FmgrInfo *flinfo, Oid collation); extern Datum FunctionCall1Coll(FmgrInfo *flinfo, Oid collation, Datum arg1); extern Datum FunctionCall2Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2); extern Datum FunctionCall3Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3); extern Datum FunctionCall4Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4); extern Datum FunctionCall5Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5); extern Datum FunctionCall6Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6); extern Datum FunctionCall7Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7); extern Datum FunctionCall8Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8); extern Datum FunctionCall9Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9); /* These are for invocation of a function identified by OID with a * directly-computed parameter list. Note that neither arguments nor result * are allowed to be NULL. These are essentially fmgr_info() followed by * FunctionCallN(). If the same function is to be invoked repeatedly, do the * fmgr_info() once and then use FunctionCallN(). */ extern Datum OidFunctionCall0Coll(Oid functionId, Oid collation); extern Datum OidFunctionCall1Coll(Oid functionId, Oid collation, Datum arg1); extern Datum OidFunctionCall2Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2); extern Datum OidFunctionCall3Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3); extern Datum OidFunctionCall4Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4); extern Datum OidFunctionCall5Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5); extern Datum OidFunctionCall6Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6); extern Datum OidFunctionCall7Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7); extern Datum OidFunctionCall8Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8); extern Datum OidFunctionCall9Coll(Oid functionId, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9); /* These macros allow the collation argument to be omitted (with a default of * InvalidOid, ie, no collation). They exist mostly for backwards * compatibility of source code. */ #define DirectFunctionCall1(func, arg1) \ DirectFunctionCall1Coll(func, InvalidOid, arg1) #define DirectFunctionCall2(func, arg1, arg2) \ DirectFunctionCall2Coll(func, InvalidOid, arg1, arg2) #define DirectFunctionCall3(func, arg1, arg2, arg3) \ DirectFunctionCall3Coll(func, InvalidOid, arg1, arg2, arg3) #define DirectFunctionCall4(func, arg1, arg2, arg3, arg4) \ DirectFunctionCall4Coll(func, InvalidOid, arg1, arg2, arg3, arg4) #define DirectFunctionCall5(func, arg1, arg2, arg3, arg4, arg5) \ DirectFunctionCall5Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5) #define DirectFunctionCall6(func, arg1, arg2, arg3, arg4, arg5, arg6) \ DirectFunctionCall6Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6) #define DirectFunctionCall7(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ DirectFunctionCall7Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7) #define DirectFunctionCall8(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ DirectFunctionCall8Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) #define DirectFunctionCall9(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ DirectFunctionCall9Coll(func, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) #define FunctionCall1(flinfo, arg1) \ FunctionCall1Coll(flinfo, InvalidOid, arg1) #define FunctionCall2(flinfo, arg1, arg2) \ FunctionCall2Coll(flinfo, InvalidOid, arg1, arg2) #define FunctionCall3(flinfo, arg1, arg2, arg3) \ FunctionCall3Coll(flinfo, InvalidOid, arg1, arg2, arg3) #define FunctionCall4(flinfo, arg1, arg2, arg3, arg4) \ FunctionCall4Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4) #define FunctionCall5(flinfo, arg1, arg2, arg3, arg4, arg5) \ FunctionCall5Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5) #define FunctionCall6(flinfo, arg1, arg2, arg3, arg4, arg5, arg6) \ FunctionCall6Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6) #define FunctionCall7(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ FunctionCall7Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7) #define FunctionCall8(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ FunctionCall8Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) #define FunctionCall9(flinfo, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ FunctionCall9Coll(flinfo, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) #define OidFunctionCall0(functionId) \ OidFunctionCall0Coll(functionId, InvalidOid) #define OidFunctionCall1(functionId, arg1) \ OidFunctionCall1Coll(functionId, InvalidOid, arg1) #define OidFunctionCall2(functionId, arg1, arg2) \ OidFunctionCall2Coll(functionId, InvalidOid, arg1, arg2) #define OidFunctionCall3(functionId, arg1, arg2, arg3) \ OidFunctionCall3Coll(functionId, InvalidOid, arg1, arg2, arg3) #define OidFunctionCall4(functionId, arg1, arg2, arg3, arg4) \ OidFunctionCall4Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4) #define OidFunctionCall5(functionId, arg1, arg2, arg3, arg4, arg5) \ OidFunctionCall5Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5) #define OidFunctionCall6(functionId, arg1, arg2, arg3, arg4, arg5, arg6) \ OidFunctionCall6Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6) #define OidFunctionCall7(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \ OidFunctionCall7Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7) #define OidFunctionCall8(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \ OidFunctionCall8Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) #define OidFunctionCall9(functionId, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ OidFunctionCall9Coll(functionId, InvalidOid, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) /* Special cases for convenient invocation of datatype I/O functions. */ extern Datum InputFunctionCall(FmgrInfo *flinfo, char *str, Oid typioparam, int32 typmod); extern Datum OidInputFunctionCall(Oid functionId, char *str, Oid typioparam, int32 typmod); extern char *OutputFunctionCall(FmgrInfo *flinfo, Datum val); extern char *OidOutputFunctionCall(Oid functionId, Datum val); extern Datum ReceiveFunctionCall(FmgrInfo *flinfo, fmStringInfo buf, Oid typioparam, int32 typmod); extern Datum OidReceiveFunctionCall(Oid functionId, fmStringInfo buf, Oid typioparam, int32 typmod); extern bytea *SendFunctionCall(FmgrInfo *flinfo, Datum val); extern bytea *OidSendFunctionCall(Oid functionId, Datum val); /* * Routines in fmgr.c */ extern const Pg_finfo_record *fetch_finfo_record(void *filehandle, const char *funcname); extern void clear_external_function_hash(void *filehandle); extern Oid fmgr_internal_function(const char *proname); extern Oid get_fn_expr_rettype(FmgrInfo *flinfo); extern Oid get_fn_expr_argtype(FmgrInfo *flinfo, int argnum); extern Oid get_call_expr_argtype(fmNodePtr expr, int argnum); extern bool get_fn_expr_arg_stable(FmgrInfo *flinfo, int argnum); extern bool get_call_expr_arg_stable(fmNodePtr expr, int argnum); extern bool get_fn_expr_variadic(FmgrInfo *flinfo); extern bytea *get_fn_opclass_options(FmgrInfo *flinfo); extern bool has_fn_opclass_options(FmgrInfo *flinfo); extern void set_fn_opclass_options(FmgrInfo *flinfo, bytea *options); extern bool CheckFunctionValidatorAccess(Oid validatorOid, Oid functionOid); /* * Routines in dfmgr.c */ extern char *Dynamic_library_path; extern PGFunction load_external_function(const char *filename, const char *funcname, bool signalNotFound, void **filehandle); extern PGFunction lookup_external_function(void *filehandle, const char *funcname); extern void load_file(const char *filename, bool restricted); extern void **find_rendezvous_variable(const char *varName); extern Size EstimateLibraryStateSpace(void); extern void SerializeLibraryState(Size maxsize, char *start_address); extern void RestoreLibraryState(char *start_address); /* * Support for aggregate functions * * These are actually in executor/nodeAgg.c, but we declare them here since * the whole point is for callers to not be overly friendly with nodeAgg. */ /* AggCheckCallContext can return one of the following codes, or 0: */ #define AGG_CONTEXT_AGGREGATE 1 /* regular aggregate */ #define AGG_CONTEXT_WINDOW 2 /* window function */ extern int AggCheckCallContext(FunctionCallInfo fcinfo, MemoryContext *aggcontext); extern fmAggrefPtr AggGetAggref(FunctionCallInfo fcinfo); extern MemoryContext AggGetTempMemoryContext(FunctionCallInfo fcinfo); extern bool AggStateIsShared(FunctionCallInfo fcinfo); extern void AggRegisterCallback(FunctionCallInfo fcinfo, fmExprContextCallbackFunction func, Datum arg); /* * We allow plugin modules to hook function entry/exit. This is intended * as support for loadable security policy modules, which may want to * perform additional privilege checks on function entry or exit, or to do * other internal bookkeeping. To make this possible, such modules must be * able not only to support normal function entry and exit, but also to trap * the case where we bail out due to an error; and they must also be able to * prevent inlining. */ typedef enum FmgrHookEventType { FHET_START, FHET_END, FHET_ABORT } FmgrHookEventType; typedef bool (*needs_fmgr_hook_type) (Oid fn_oid); typedef void (*fmgr_hook_type) (FmgrHookEventType event, FmgrInfo *flinfo, Datum *arg); extern PGDLLIMPORT needs_fmgr_hook_type needs_fmgr_hook; extern PGDLLIMPORT fmgr_hook_type fmgr_hook; #define FmgrHookIsNeeded(fn_oid) \ (!needs_fmgr_hook ? false : (*needs_fmgr_hook)(fn_oid)) #endif /* FMGR_H */ libpg_query-13-2.1.0/src/postgres/include/funcapi.h000066400000000000000000000302501413137616400221410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * funcapi.h * Definitions for functions which return composite type and/or sets * or work on VARIADIC inputs. * * This file must be included by all Postgres modules that either define * or call FUNCAPI-callable functions or macros. * * * Copyright (c) 2002-2020, PostgreSQL Global Development Group * * src/include/funcapi.h * *------------------------------------------------------------------------- */ #ifndef FUNCAPI_H #define FUNCAPI_H #include "access/tupdesc.h" #include "executor/executor.h" #include "executor/tuptable.h" #include "fmgr.h" /*------------------------------------------------------------------------- * Support to ease writing Functions returning composite types *------------------------------------------------------------------------- * * This struct holds arrays of individual attribute information * needed to create a tuple from raw C strings. It also requires * a copy of the TupleDesc. The information carried here * is derived from the TupleDesc, but it is stored here to * avoid redundant cpu cycles on each call to an SRF. */ typedef struct AttInMetadata { /* full TupleDesc */ TupleDesc tupdesc; /* array of attribute type input function finfo */ FmgrInfo *attinfuncs; /* array of attribute type i/o parameter OIDs */ Oid *attioparams; /* array of attribute typmod */ int32 *atttypmods; } AttInMetadata; /*------------------------------------------------------------------------- * Support struct to ease writing Set Returning Functions (SRFs) *------------------------------------------------------------------------- * * This struct holds function context for Set Returning Functions. * Use fn_extra to hold a pointer to it across calls */ typedef struct FuncCallContext { /* * Number of times we've been called before * * call_cntr is initialized to 0 for you by SRF_FIRSTCALL_INIT(), and * incremented for you every time SRF_RETURN_NEXT() is called. */ uint64 call_cntr; /* * OPTIONAL maximum number of calls * * max_calls is here for convenience only and setting it is optional. If * not set, you must provide alternative means to know when the function * is done. */ uint64 max_calls; /* * OPTIONAL pointer to miscellaneous user-provided context information * * user_fctx is for use as a pointer to your own struct to retain * arbitrary context information between calls of your function. */ void *user_fctx; /* * OPTIONAL pointer to struct containing attribute type input metadata * * attinmeta is for use when returning tuples (i.e. composite data types) * and is not used when returning base data types. It is only needed if * you intend to use BuildTupleFromCStrings() to create the return tuple. */ AttInMetadata *attinmeta; /* * memory context used for structures that must live for multiple calls * * multi_call_memory_ctx is set by SRF_FIRSTCALL_INIT() for you, and used * by SRF_RETURN_DONE() for cleanup. It is the most appropriate memory * context for any memory that is to be reused across multiple calls of * the SRF. */ MemoryContext multi_call_memory_ctx; /* * OPTIONAL pointer to struct containing tuple description * * tuple_desc is for use when returning tuples (i.e. composite data types) * and is only needed if you are going to build the tuples with * heap_form_tuple() rather than with BuildTupleFromCStrings(). Note that * the TupleDesc pointer stored here should usually have been run through * BlessTupleDesc() first. */ TupleDesc tuple_desc; } FuncCallContext; /*---------- * Support to ease writing functions returning composite types * * External declarations: * get_call_result_type: * Given a function's call info record, determine the kind of datatype * it is supposed to return. If resultTypeId isn't NULL, *resultTypeId * receives the actual datatype OID (this is mainly useful for scalar * result types). If resultTupleDesc isn't NULL, *resultTupleDesc * receives a pointer to a TupleDesc when the result is of a composite * type, or NULL when it's a scalar result or the rowtype could not be * determined. NB: the tupledesc should be copied if it is to be * accessed over a long period. * get_expr_result_type: * Given an expression node, return the same info as for * get_call_result_type. Note: the cases in which rowtypes cannot be * determined are different from the cases for get_call_result_type. * get_func_result_type: * Given only a function's OID, return the same info as for * get_call_result_type. Note: the cases in which rowtypes cannot be * determined are different from the cases for get_call_result_type. * Do *not* use this if you can use one of the others. * * See also get_expr_result_tupdesc(), which is a convenient wrapper around * get_expr_result_type() for use when the caller only cares about * determinable-rowtype cases. *---------- */ /* Type categories for get_call_result_type and siblings */ typedef enum TypeFuncClass { TYPEFUNC_SCALAR, /* scalar result type */ TYPEFUNC_COMPOSITE, /* determinable rowtype result */ TYPEFUNC_COMPOSITE_DOMAIN, /* domain over determinable rowtype result */ TYPEFUNC_RECORD, /* indeterminate rowtype result */ TYPEFUNC_OTHER /* bogus type, eg pseudotype */ } TypeFuncClass; extern TypeFuncClass get_call_result_type(FunctionCallInfo fcinfo, Oid *resultTypeId, TupleDesc *resultTupleDesc); extern TypeFuncClass get_expr_result_type(Node *expr, Oid *resultTypeId, TupleDesc *resultTupleDesc); extern TypeFuncClass get_func_result_type(Oid functionId, Oid *resultTypeId, TupleDesc *resultTupleDesc); extern TupleDesc get_expr_result_tupdesc(Node *expr, bool noError); extern bool resolve_polymorphic_argtypes(int numargs, Oid *argtypes, char *argmodes, Node *call_expr); extern int get_func_arg_info(HeapTuple procTup, Oid **p_argtypes, char ***p_argnames, char **p_argmodes); extern int get_func_input_arg_names(Datum proargnames, Datum proargmodes, char ***arg_names); extern int get_func_trftypes(HeapTuple procTup, Oid **p_trftypes); extern char *get_func_result_name(Oid functionId); extern TupleDesc build_function_result_tupdesc_d(char prokind, Datum proallargtypes, Datum proargmodes, Datum proargnames); extern TupleDesc build_function_result_tupdesc_t(HeapTuple procTuple); /*---------- * Support to ease writing functions returning composite types * * External declarations: * TupleDesc BlessTupleDesc(TupleDesc tupdesc) - "Bless" a completed tuple * descriptor so that it can be used to return properly labeled tuples. * You need to call this if you are going to use heap_form_tuple directly. * TupleDescGetAttInMetadata does it for you, however, so no need to call * it if you call TupleDescGetAttInMetadata. * AttInMetadata *TupleDescGetAttInMetadata(TupleDesc tupdesc) - Build an * AttInMetadata struct based on the given TupleDesc. AttInMetadata can * be used in conjunction with C strings to produce a properly formed * tuple. * HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values) - * build a HeapTuple given user data in C string form. values is an array * of C strings, one for each attribute of the return tuple. * Datum HeapTupleHeaderGetDatum(HeapTupleHeader tuple) - convert a * HeapTupleHeader to a Datum. * * Macro declarations: * HeapTupleGetDatum(HeapTuple tuple) - convert a HeapTuple to a Datum. * * Obsolete routines and macros: * TupleDesc RelationNameGetTupleDesc(const char *relname) - Use to get a * TupleDesc based on a named relation. * TupleDesc TypeGetTupleDesc(Oid typeoid, List *colaliases) - Use to get a * TupleDesc based on a type OID. * TupleGetDatum(TupleTableSlot *slot, HeapTuple tuple) - get a Datum * given a tuple and a slot. *---------- */ #define HeapTupleGetDatum(tuple) HeapTupleHeaderGetDatum((tuple)->t_data) /* obsolete version of above */ #define TupleGetDatum(_slot, _tuple) HeapTupleGetDatum(_tuple) extern TupleDesc RelationNameGetTupleDesc(const char *relname); extern TupleDesc TypeGetTupleDesc(Oid typeoid, List *colaliases); /* from execTuples.c */ extern TupleDesc BlessTupleDesc(TupleDesc tupdesc); extern AttInMetadata *TupleDescGetAttInMetadata(TupleDesc tupdesc); extern HeapTuple BuildTupleFromCStrings(AttInMetadata *attinmeta, char **values); extern Datum HeapTupleHeaderGetDatum(HeapTupleHeader tuple); /*---------- * Support for Set Returning Functions (SRFs) * * The basic API for SRFs using ValuePerCall mode looks something like this: * * Datum * my_Set_Returning_Function(PG_FUNCTION_ARGS) * { * FuncCallContext *funcctx; * Datum result; * MemoryContext oldcontext; * * * if (SRF_IS_FIRSTCALL()) * { * funcctx = SRF_FIRSTCALL_INIT(); * // switch context when allocating stuff to be used in later calls * oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); * * * * * * // return to original context when allocating transient memory * MemoryContextSwitchTo(oldcontext); * } * * funcctx = SRF_PERCALL_SETUP(); * * * if (funcctx->call_cntr < funcctx->max_calls) * { * * * SRF_RETURN_NEXT(funcctx, result); * } * else * SRF_RETURN_DONE(funcctx); * } * * NOTE: there is no guarantee that a SRF using ValuePerCall mode will be * run to completion; for example, a query with LIMIT might stop short of * fetching all the rows. Therefore, do not expect that you can do resource * cleanup just before SRF_RETURN_DONE(). You need not worry about releasing * memory allocated in multi_call_memory_ctx, but holding file descriptors or * other non-memory resources open across calls is a bug. SRFs that need * such resources should not use these macros, but instead populate a * tuplestore during a single call, and return that using SFRM_Materialize * mode (see fmgr/README). Alternatively, set up a callback to release * resources at query shutdown, using RegisterExprContextCallback(). * *---------- */ /* from funcapi.c */ extern FuncCallContext *init_MultiFuncCall(PG_FUNCTION_ARGS); extern FuncCallContext *per_MultiFuncCall(PG_FUNCTION_ARGS); extern void end_MultiFuncCall(PG_FUNCTION_ARGS, FuncCallContext *funcctx); #define SRF_IS_FIRSTCALL() (fcinfo->flinfo->fn_extra == NULL) #define SRF_FIRSTCALL_INIT() init_MultiFuncCall(fcinfo) #define SRF_PERCALL_SETUP() per_MultiFuncCall(fcinfo) #define SRF_RETURN_NEXT(_funcctx, _result) \ do { \ ReturnSetInfo *rsi; \ (_funcctx)->call_cntr++; \ rsi = (ReturnSetInfo *) fcinfo->resultinfo; \ rsi->isDone = ExprMultipleResult; \ PG_RETURN_DATUM(_result); \ } while (0) #define SRF_RETURN_NEXT_NULL(_funcctx) \ do { \ ReturnSetInfo *rsi; \ (_funcctx)->call_cntr++; \ rsi = (ReturnSetInfo *) fcinfo->resultinfo; \ rsi->isDone = ExprMultipleResult; \ PG_RETURN_NULL(); \ } while (0) #define SRF_RETURN_DONE(_funcctx) \ do { \ ReturnSetInfo *rsi; \ end_MultiFuncCall(fcinfo, _funcctx); \ rsi = (ReturnSetInfo *) fcinfo->resultinfo; \ rsi->isDone = ExprEndResult; \ PG_RETURN_NULL(); \ } while (0) /*---------- * Support to ease writing of functions dealing with VARIADIC inputs *---------- * * This function extracts a set of argument values, types and NULL markers * for a given input function. This returns a set of data: * - **values includes the set of Datum values extracted. * - **types the data type OID for each element. * - **nulls tracks if an element is NULL. * * variadic_start indicates the argument number where the VARIADIC argument * starts. * convert_unknown set to true will enforce the conversion of arguments * with unknown data type to text. * * The return result is the number of elements stored, or -1 in the case of * "VARIADIC NULL". */ extern int extract_variadic_args(FunctionCallInfo fcinfo, int variadic_start, bool convert_unknown, Datum **values, Oid **types, bool **nulls); #endif /* FUNCAPI_H */ libpg_query-13-2.1.0/src/postgres/include/getaddrinfo.h000066400000000000000000000076041413137616400230110ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * getaddrinfo.h * Support getaddrinfo() on platforms that don't have it. * * Note: we use our own routines on platforms that don't HAVE_STRUCT_ADDRINFO, * whether or not the library routine getaddrinfo() can be found. This * policy is needed because on some platforms a manually installed libbind.a * may provide getaddrinfo(), yet the system headers may not provide the * struct definitions needed to call it. To avoid conflict with the libbind * definition in such cases, we rename our routines to pg_xxx() via macros. * * This code will also work on platforms where struct addrinfo is defined * in the system headers but no getaddrinfo() can be located. * * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/getaddrinfo.h * *------------------------------------------------------------------------- */ #ifndef GETADDRINFO_H #define GETADDRINFO_H #include #include /* Various macros that ought to be in , but might not be */ #ifndef EAI_FAIL #ifndef WIN32 #define EAI_BADFLAGS (-1) #define EAI_NONAME (-2) #define EAI_AGAIN (-3) #define EAI_FAIL (-4) #define EAI_FAMILY (-6) #define EAI_SOCKTYPE (-7) #define EAI_SERVICE (-8) #define EAI_MEMORY (-10) #define EAI_SYSTEM (-11) #else /* WIN32 */ #ifdef _MSC_VER #ifndef WSA_NOT_ENOUGH_MEMORY #define WSA_NOT_ENOUGH_MEMORY (WSAENOBUFS) #endif #define WSATYPE_NOT_FOUND (WSABASEERR+109) #endif #define EAI_AGAIN WSATRY_AGAIN #define EAI_BADFLAGS WSAEINVAL #define EAI_FAIL WSANO_RECOVERY #define EAI_FAMILY WSAEAFNOSUPPORT #define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY #define EAI_NODATA WSANO_DATA #define EAI_NONAME WSAHOST_NOT_FOUND #define EAI_SERVICE WSATYPE_NOT_FOUND #define EAI_SOCKTYPE WSAESOCKTNOSUPPORT #endif /* !WIN32 */ #endif /* !EAI_FAIL */ #ifndef AI_PASSIVE #define AI_PASSIVE 0x0001 #endif #ifndef AI_NUMERICHOST /* * some platforms don't support AI_NUMERICHOST; define as zero if using * the system version of getaddrinfo... */ #if defined(HAVE_STRUCT_ADDRINFO) && defined(HAVE_GETADDRINFO) #define AI_NUMERICHOST 0 #else #define AI_NUMERICHOST 0x0004 #endif #endif #ifndef NI_NUMERICHOST #define NI_NUMERICHOST 1 #endif #ifndef NI_NUMERICSERV #define NI_NUMERICSERV 2 #endif #ifndef NI_NAMEREQD #define NI_NAMEREQD 4 #endif #ifndef NI_MAXHOST #define NI_MAXHOST 1025 #endif #ifndef NI_MAXSERV #define NI_MAXSERV 32 #endif #ifndef HAVE_STRUCT_ADDRINFO #ifndef WIN32 struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; size_t ai_addrlen; struct sockaddr *ai_addr; char *ai_canonname; struct addrinfo *ai_next; }; #else /* * The order of the structure elements on Win32 doesn't match the * order specified in the standard, but we have to match it for * IPv6 to work. */ struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; size_t ai_addrlen; char *ai_canonname; struct sockaddr *ai_addr; struct addrinfo *ai_next; }; #endif #endif /* HAVE_STRUCT_ADDRINFO */ #ifndef HAVE_GETADDRINFO /* Rename private copies per comments above */ #ifdef getaddrinfo #undef getaddrinfo #endif #define getaddrinfo pg_getaddrinfo #ifdef freeaddrinfo #undef freeaddrinfo #endif #define freeaddrinfo pg_freeaddrinfo #ifdef gai_strerror #undef gai_strerror #endif #define gai_strerror pg_gai_strerror #ifdef getnameinfo #undef getnameinfo #endif #define getnameinfo pg_getnameinfo extern int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); extern void freeaddrinfo(struct addrinfo *res); extern const char *gai_strerror(int errcode); extern int getnameinfo(const struct sockaddr *sa, int salen, char *node, int nodelen, char *service, int servicelen, int flags); #endif /* HAVE_GETADDRINFO */ #endif /* GETADDRINFO_H */ libpg_query-13-2.1.0/src/postgres/include/jit/000077500000000000000000000000001413137616400211315ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/jit/jit.h000066400000000000000000000052141413137616400220720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * jit.h * Provider independent JIT infrastructure. * * Copyright (c) 2016-2020, PostgreSQL Global Development Group * * src/include/jit/jit.h * *------------------------------------------------------------------------- */ #ifndef JIT_H #define JIT_H #include "executor/instrument.h" #include "utils/resowner.h" /* Flags determining what kind of JIT operations to perform */ #define PGJIT_NONE 0 #define PGJIT_PERFORM (1 << 0) #define PGJIT_OPT3 (1 << 1) #define PGJIT_INLINE (1 << 2) #define PGJIT_EXPR (1 << 3) #define PGJIT_DEFORM (1 << 4) typedef struct JitInstrumentation { /* number of emitted functions */ size_t created_functions; /* accumulated time to generate code */ instr_time generation_counter; /* accumulated time for inlining */ instr_time inlining_counter; /* accumulated time for optimization */ instr_time optimization_counter; /* accumulated time for code emission */ instr_time emission_counter; } JitInstrumentation; /* * DSM structure for accumulating jit instrumentation of all workers. */ typedef struct SharedJitInstrumentation { int num_workers; JitInstrumentation jit_instr[FLEXIBLE_ARRAY_MEMBER]; } SharedJitInstrumentation; typedef struct JitContext { /* see PGJIT_* above */ int flags; ResourceOwner resowner; JitInstrumentation instr; } JitContext; typedef struct JitProviderCallbacks JitProviderCallbacks; extern void _PG_jit_provider_init(JitProviderCallbacks *cb); typedef void (*JitProviderInit) (JitProviderCallbacks *cb); typedef void (*JitProviderResetAfterErrorCB) (void); typedef void (*JitProviderReleaseContextCB) (JitContext *context); struct ExprState; typedef bool (*JitProviderCompileExprCB) (struct ExprState *state); struct JitProviderCallbacks { JitProviderResetAfterErrorCB reset_after_error; JitProviderReleaseContextCB release_context; JitProviderCompileExprCB compile_expr; }; /* GUCs */ extern bool jit_enabled; extern char *jit_provider; extern bool jit_debugging_support; extern bool jit_dump_bitcode; extern bool jit_expressions; extern bool jit_profiling_support; extern bool jit_tuple_deforming; extern double jit_above_cost; extern double jit_inline_above_cost; extern double jit_optimize_above_cost; extern void jit_reset_after_error(void); extern void jit_release_context(JitContext *context); /* * Functions for attempting to JIT code. Callers must accept that these might * not be able to perform JIT (i.e. return false). */ extern bool jit_compile_expr(struct ExprState *state); extern void InstrJitAgg(JitInstrumentation *dst, JitInstrumentation *add); #endif /* JIT_H */ libpg_query-13-2.1.0/src/postgres/include/kwlist_d.h000066400000000000000000000417341413137616400223450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/tools/gen_keywordlist.pl * *------------------------------------------------------------------------- */ #ifndef KWLIST_D_H #define KWLIST_D_H #include "common/kwlookup.h" static const char ScanKeywords_kw_string[] = "abort\0" "absolute\0" "access\0" "action\0" "add\0" "admin\0" "after\0" "aggregate\0" "all\0" "also\0" "alter\0" "always\0" "analyse\0" "analyze\0" "and\0" "any\0" "array\0" "as\0" "asc\0" "assertion\0" "assignment\0" "asymmetric\0" "at\0" "attach\0" "attribute\0" "authorization\0" "backward\0" "before\0" "begin\0" "between\0" "bigint\0" "binary\0" "bit\0" "boolean\0" "both\0" "by\0" "cache\0" "call\0" "called\0" "cascade\0" "cascaded\0" "case\0" "cast\0" "catalog\0" "chain\0" "char\0" "character\0" "characteristics\0" "check\0" "checkpoint\0" "class\0" "close\0" "cluster\0" "coalesce\0" "collate\0" "collation\0" "column\0" "columns\0" "comment\0" "comments\0" "commit\0" "committed\0" "concurrently\0" "configuration\0" "conflict\0" "connection\0" "constraint\0" "constraints\0" "content\0" "continue\0" "conversion\0" "copy\0" "cost\0" "create\0" "cross\0" "csv\0" "cube\0" "current\0" "current_catalog\0" "current_date\0" "current_role\0" "current_schema\0" "current_time\0" "current_timestamp\0" "current_user\0" "cursor\0" "cycle\0" "data\0" "database\0" "day\0" "deallocate\0" "dec\0" "decimal\0" "declare\0" "default\0" "defaults\0" "deferrable\0" "deferred\0" "definer\0" "delete\0" "delimiter\0" "delimiters\0" "depends\0" "desc\0" "detach\0" "dictionary\0" "disable\0" "discard\0" "distinct\0" "do\0" "document\0" "domain\0" "double\0" "drop\0" "each\0" "else\0" "enable\0" "encoding\0" "encrypted\0" "end\0" "enum\0" "escape\0" "event\0" "except\0" "exclude\0" "excluding\0" "exclusive\0" "execute\0" "exists\0" "explain\0" "expression\0" "extension\0" "external\0" "extract\0" "false\0" "family\0" "fetch\0" "filter\0" "first\0" "float\0" "following\0" "for\0" "force\0" "foreign\0" "forward\0" "freeze\0" "from\0" "full\0" "function\0" "functions\0" "generated\0" "global\0" "grant\0" "granted\0" "greatest\0" "group\0" "grouping\0" "groups\0" "handler\0" "having\0" "header\0" "hold\0" "hour\0" "identity\0" "if\0" "ilike\0" "immediate\0" "immutable\0" "implicit\0" "import\0" "in\0" "include\0" "including\0" "increment\0" "index\0" "indexes\0" "inherit\0" "inherits\0" "initially\0" "inline\0" "inner\0" "inout\0" "input\0" "insensitive\0" "insert\0" "instead\0" "int\0" "integer\0" "intersect\0" "interval\0" "into\0" "invoker\0" "is\0" "isnull\0" "isolation\0" "join\0" "key\0" "label\0" "language\0" "large\0" "last\0" "lateral\0" "leading\0" "leakproof\0" "least\0" "left\0" "level\0" "like\0" "limit\0" "listen\0" "load\0" "local\0" "localtime\0" "localtimestamp\0" "location\0" "lock\0" "locked\0" "logged\0" "mapping\0" "match\0" "materialized\0" "maxvalue\0" "method\0" "minute\0" "minvalue\0" "mode\0" "month\0" "move\0" "name\0" "names\0" "national\0" "natural\0" "nchar\0" "new\0" "next\0" "nfc\0" "nfd\0" "nfkc\0" "nfkd\0" "no\0" "none\0" "normalize\0" "normalized\0" "not\0" "nothing\0" "notify\0" "notnull\0" "nowait\0" "null\0" "nullif\0" "nulls\0" "numeric\0" "object\0" "of\0" "off\0" "offset\0" "oids\0" "old\0" "on\0" "only\0" "operator\0" "option\0" "options\0" "or\0" "order\0" "ordinality\0" "others\0" "out\0" "outer\0" "over\0" "overlaps\0" "overlay\0" "overriding\0" "owned\0" "owner\0" "parallel\0" "parser\0" "partial\0" "partition\0" "passing\0" "password\0" "placing\0" "plans\0" "policy\0" "position\0" "preceding\0" "precision\0" "prepare\0" "prepared\0" "preserve\0" "primary\0" "prior\0" "privileges\0" "procedural\0" "procedure\0" "procedures\0" "program\0" "publication\0" "quote\0" "range\0" "read\0" "real\0" "reassign\0" "recheck\0" "recursive\0" "ref\0" "references\0" "referencing\0" "refresh\0" "reindex\0" "relative\0" "release\0" "rename\0" "repeatable\0" "replace\0" "replica\0" "reset\0" "restart\0" "restrict\0" "returning\0" "returns\0" "revoke\0" "right\0" "role\0" "rollback\0" "rollup\0" "routine\0" "routines\0" "row\0" "rows\0" "rule\0" "savepoint\0" "schema\0" "schemas\0" "scroll\0" "search\0" "second\0" "security\0" "select\0" "sequence\0" "sequences\0" "serializable\0" "server\0" "session\0" "session_user\0" "set\0" "setof\0" "sets\0" "share\0" "show\0" "similar\0" "simple\0" "skip\0" "smallint\0" "snapshot\0" "some\0" "sql\0" "stable\0" "standalone\0" "start\0" "statement\0" "statistics\0" "stdin\0" "stdout\0" "storage\0" "stored\0" "strict\0" "strip\0" "subscription\0" "substring\0" "support\0" "symmetric\0" "sysid\0" "system\0" "table\0" "tables\0" "tablesample\0" "tablespace\0" "temp\0" "template\0" "temporary\0" "text\0" "then\0" "ties\0" "time\0" "timestamp\0" "to\0" "trailing\0" "transaction\0" "transform\0" "treat\0" "trigger\0" "trim\0" "true\0" "truncate\0" "trusted\0" "type\0" "types\0" "uescape\0" "unbounded\0" "uncommitted\0" "unencrypted\0" "union\0" "unique\0" "unknown\0" "unlisten\0" "unlogged\0" "until\0" "update\0" "user\0" "using\0" "vacuum\0" "valid\0" "validate\0" "validator\0" "value\0" "values\0" "varchar\0" "variadic\0" "varying\0" "verbose\0" "version\0" "view\0" "views\0" "volatile\0" "when\0" "where\0" "whitespace\0" "window\0" "with\0" "within\0" "without\0" "work\0" "wrapper\0" "write\0" "xml\0" "xmlattributes\0" "xmlconcat\0" "xmlelement\0" "xmlexists\0" "xmlforest\0" "xmlnamespaces\0" "xmlparse\0" "xmlpi\0" "xmlroot\0" "xmlserialize\0" "xmltable\0" "year\0" "yes\0" "zone"; static const uint16 ScanKeywords_kw_offsets[] = { 0, 6, 15, 22, 29, 33, 39, 45, 55, 59, 64, 70, 77, 85, 93, 97, 101, 107, 110, 114, 124, 135, 146, 149, 156, 166, 180, 189, 196, 202, 210, 217, 224, 228, 236, 241, 244, 250, 255, 262, 270, 279, 284, 289, 297, 303, 308, 318, 334, 340, 351, 357, 363, 371, 380, 388, 398, 405, 413, 421, 430, 437, 447, 460, 474, 483, 494, 505, 517, 525, 534, 545, 550, 555, 562, 568, 572, 577, 585, 601, 614, 627, 642, 655, 673, 686, 693, 699, 704, 713, 717, 728, 732, 740, 748, 756, 765, 776, 785, 793, 800, 810, 821, 829, 834, 841, 852, 860, 868, 877, 880, 889, 896, 903, 908, 913, 918, 925, 934, 944, 948, 953, 960, 966, 973, 981, 991, 1001, 1009, 1016, 1024, 1035, 1045, 1054, 1062, 1068, 1075, 1081, 1088, 1094, 1100, 1110, 1114, 1120, 1128, 1136, 1143, 1148, 1153, 1162, 1172, 1182, 1189, 1195, 1203, 1212, 1218, 1227, 1234, 1242, 1249, 1256, 1261, 1266, 1275, 1278, 1284, 1294, 1304, 1313, 1320, 1323, 1331, 1341, 1351, 1357, 1365, 1373, 1382, 1392, 1399, 1405, 1411, 1417, 1429, 1436, 1444, 1448, 1456, 1466, 1475, 1480, 1488, 1491, 1498, 1508, 1513, 1517, 1523, 1532, 1538, 1543, 1551, 1559, 1569, 1575, 1580, 1586, 1591, 1597, 1604, 1609, 1615, 1625, 1640, 1649, 1654, 1661, 1668, 1676, 1682, 1695, 1704, 1711, 1718, 1727, 1732, 1738, 1743, 1748, 1754, 1763, 1771, 1777, 1781, 1786, 1790, 1794, 1799, 1804, 1807, 1812, 1822, 1833, 1837, 1845, 1852, 1860, 1867, 1872, 1879, 1885, 1893, 1900, 1903, 1907, 1914, 1919, 1923, 1926, 1931, 1940, 1947, 1955, 1958, 1964, 1975, 1982, 1986, 1992, 1997, 2006, 2014, 2025, 2031, 2037, 2046, 2053, 2061, 2071, 2079, 2088, 2096, 2102, 2109, 2118, 2128, 2138, 2146, 2155, 2164, 2172, 2178, 2189, 2200, 2210, 2221, 2229, 2241, 2247, 2253, 2258, 2263, 2272, 2280, 2290, 2294, 2305, 2317, 2325, 2333, 2342, 2350, 2357, 2368, 2376, 2384, 2390, 2398, 2407, 2417, 2425, 2432, 2438, 2443, 2452, 2459, 2467, 2476, 2480, 2485, 2490, 2500, 2507, 2515, 2522, 2529, 2536, 2545, 2552, 2561, 2571, 2584, 2591, 2599, 2612, 2616, 2622, 2627, 2633, 2638, 2646, 2653, 2658, 2667, 2676, 2681, 2685, 2692, 2703, 2709, 2719, 2730, 2736, 2743, 2751, 2758, 2765, 2771, 2784, 2794, 2802, 2812, 2818, 2825, 2831, 2838, 2850, 2861, 2866, 2875, 2885, 2890, 2895, 2900, 2905, 2915, 2918, 2927, 2939, 2949, 2955, 2963, 2968, 2973, 2982, 2990, 2995, 3001, 3009, 3019, 3031, 3043, 3049, 3056, 3064, 3073, 3082, 3088, 3095, 3100, 3106, 3113, 3119, 3128, 3138, 3144, 3151, 3159, 3168, 3176, 3184, 3192, 3197, 3203, 3212, 3217, 3223, 3234, 3241, 3246, 3253, 3261, 3266, 3274, 3280, 3284, 3298, 3308, 3319, 3329, 3339, 3353, 3362, 3368, 3376, 3389, 3398, 3403, 3407, }; #define SCANKEYWORDS_NUM_KEYWORDS 450 static int ScanKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[901] = { -172, 32767, 32767, 32767, 0, 56, 362, 32767, 0, 90, -251, 332, 32767, 66, 298, 0, 32767, 88, 27, 22, -125, 317, 0, 32767, -35, 0, 32767, 32767, 32767, 52, 32767, 275, 32767, -277, 32767, 32767, 316, 177, 32767, 0, 398, 58, 272, -88, 0, -147, 242, 143, 401, 0, 32767, 0, 293, 355, 0, 0, 303, 32767, 225, 580, 0, 378, 0, 0, 32767, -25, -312, 32767, -210, 0, 32767, -19, 32767, 91, 307, 354, 32767, 32767, -18, 36, 32767, 32767, 402, 292, 165, 274, 0, 32767, 10, -20, 32767, 294, 32767, -622, 326, 32767, -128, 0, 33, 32767, 32767, 325, 32767, 276, 343, 32767, 96, 173, 32767, 32767, 32767, 0, 32767, 320, -128, 32767, 357, 24, -9, 427, 32767, 32767, 0, 32767, 0, 0, 32767, 32767, 405, 32767, 125, 32767, 0, 32767, -40, 32767, 0, 80, 0, 32767, 0, 95, -146, 0, 32767, 26, 165, 32767, 41, 32767, 418, 32767, 32767, 40, 32767, 147, 32767, 32767, 32767, 91, 110, 9, 305, -340, 32767, 103, 32767, 0, 329, 32767, 32767, 310, 32767, 32767, 147, -262, 422, 393, 382, 136, 32767, 177, 0, 32767, 32767, 102, 0, 32767, 83, 141, 28, 167, -421, 32767, 38, 111, 0, 479, 32767, 32767, 29, 439, 32767, 427, -6, 182, 32767, 74, 32767, 360, 236, 32767, 32767, 327, -63, 162, 154, 184, 90, 263, 115, 127, 539, 347, -72, 32767, -159, 32767, -249, 152, 32767, 357, 404, -110, 32767, 404, 345, 32767, 80, 352, 422, 61, 32767, 32767, 32767, 243, 126, 117, 32767, 0, 32767, 32767, 208, 32767, 32767, -20, 430, -195, 32767, 32767, 32767, 118, -62, 32767, 32767, 98, 136, 0, 0, 32767, 261, 32767, 0, 32767, 230, 37, 750, 154, 32767, -86, 87, 32767, 6, 61, 32767, 205, 32767, 517, 107, 66, 304, 32767, 0, 32767, 32767, 32767, 333, 32767, 357, 239, 32767, 32767, 437, -26, 32767, 210, 0, 20, 369, 10, 32767, -78, 616, 70, 0, 32767, 86, 32767, 0, 32767, 14, 60, 32, 32767, 373, 32767, -218, 320, 32767, 268, 32767, 32767, 425, -67, 0, 32767, 252, 32767, -93, 193, -362, -140, 32767, -328, 32767, 0, 319, 336, 32767, 121, 0, 32767, 207, 32767, 481, -176, 276, 47, 235, 32767, 0, 221, 32767, 228, 32767, 84, 32767, 32767, 32767, 32767, 32767, 32767, 290, 32767, 32767, 84, -170, 82, 246, -43, 201, 155, -7, 299, 32767, 32767, 241, 32767, -418, 32767, 32767, -303, 32767, 32767, -40, 308, 32767, 0, 178, -67, 32767, 273, 32767, 0, 32767, 69, 387, 32767, 341, 0, 0, -19, 324, -88, 166, 32767, 6, 20, 32767, 17, 22, 359, 32767, 32767, 172, 0, 32767, 0, 206, 88, 0, 32767, 35, 0, 275, 114, 339, 32767, 32767, 32767, 32767, 32767, 524, 0, -52, 191, -115, 9, 200, 102, 0, 32767, 3, 0, 0, 0, -288, 0, -132, 32767, 0, 32767, 300, 0, 0, 0, 212, 32767, 260, 32767, -279, 104, 506, 0, 640, 38, 268, 32767, 131, 32767, 32767, 32767, 32767, 0, 0, 32767, 32767, 18, 100, 44, 67, 270, 245, 283, 224, -66, 32767, 32767, 32767, -67, 32767, 389, 32767, 0, 125, 354, 32767, 32767, -21, 124, 0, 204, 32767, 0, 99, 32767, 267, 32767, 0, 32767, 32767, 231, 32767, -129, -113, 108, 23, 0, 0, 32767, 32767, 0, 32767, 269, 32767, 32767, -133, 32767, -384, 32767, 32767, 0, 32767, 32767, 32767, 0, 32767, 32767, 32767, 0, 322, 424, 117, -29, 32767, 32767, 145, 0, 0, 323, 119, 32767, 32767, 32767, 392, -164, -143, -25, -106, 0, 97, 32767, 32767, 235, 32767, 0, 32767, 411, 363, 32767, 31, 32767, 443, 32767, 76, 29, 32767, 323, 32767, 142, 32767, 0, 244, 0, 32767, 28, 32767, 0, 377, -8, -45, 32767, 37, 0, 350, 0, 32767, 32767, 38, 416, 32767, 265, -78, -308, -51, 705, 32767, 32767, 0, 66, 0, 32767, 32767, 32767, 81, -250, 32767, 1, 421, 32767, 32767, 0, 32767, 401, 198, 32767, 256, 290, 210, 32767, 32767, 32767, 32767, 0, 444, 211, -99, 220, 64, 32767, 32767, 32767, 32767, 190, 19, 0, 216, 32767, 262, 32767, 404, 562, -222, 0, 0, -162, 32767, 192, 65, 32767, 150, 191, 0, 218, 267, 32767, 32767, 32767, 399, 189, 356, 532, 0, 32767, 429, 32767, 32767, 54, 279, 151, 0, 353, 394, 176, 215, 32767, 15, 153, 137, 92, 420, 47, 253, 0, 298, 32767, 32767, 32767, 234, 164, 241, 32767, 0, 409, 0, 32767, 0, 32767, 0, 70, 32767, 32767, 32767, 0, 32767, 32767, 32767, -138, 32767, 32767, -46, 32767, 97, 32767, 0, -126, 32767, 169, 322, 392, 32767, 0, 32767, 32767, 0, 282, 296, 32767, 0, 403, 32767, -24, 32767, -34, 32767, 32767, 32767, 418, 32767, 0, 97, 238, 32767, 144, 428, 32767, 2, 32767, 32767, 32767, 194, -182, 12, 32767, 391, 32767, 880, 32767, 32767, 50, 331, 0, 0, 358, 20, 32767, 32767, 222, 317, 32767, 0, 125, 32767, 0, 32767, 284, 32767, 32767, 197, 0, 63, 32767, 0, 188, 32767, 32767, 147, 190, 344, 32767, -42, 32767, 0, 187, 32767, 32767, 350, 32767, 0, 0, 127, 32767, 32767, 161, 32767, 0, 0, 382, 32767, 32767, 316, 130, 32767, 379, 32767, 383, 368, 93, -195, 0, 233, 73, 32767, 100, 32767, 338, 90, 32767, 258, 32767, 32767, 235, 175, 32767, 32767, 0, -9, 0, 0, 32767, 32767, 111, 417, 330, 0, 0, 225, 32767, 0, 0, 32767, 0, 64, 32767, 32767, 16, 113, 29, 0, 32767, 32767, 0, 43, 0, 365, -41, -284, 0, 0, 0, 61, 314, 255, 0, 32767, 145, 32767, -445, 32767, 32767, 154, }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 3; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 31 + c; b = b * 127 + c; } return h[a % 901] + h[b % 901]; } const ScanKeywordList ScanKeywords = { ScanKeywords_kw_string, ScanKeywords_kw_offsets, ScanKeywords_hash_func, SCANKEYWORDS_NUM_KEYWORDS, 17 }; #endif /* KWLIST_D_H */ libpg_query-13-2.1.0/src/postgres/include/lib/000077500000000000000000000000001413137616400211115ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/lib/ilist.h000066400000000000000000000510731413137616400224140ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * ilist.h * integrated/inline doubly- and singly-linked lists * * These list types are useful when there are only a predetermined set of * lists that an object could be in. List links are embedded directly into * the objects, and thus no extra memory management overhead is required. * (Of course, if only a small proportion of existing objects are in a list, * the link fields in the remainder would be wasted space. But usually, * it saves space to not have separately-allocated list nodes.) * * None of the functions here allocate any memory; they just manipulate * externally managed memory. The APIs for singly and doubly linked lists * are identical as far as capabilities of both allow. * * Each list has a list header, which exists even when the list is empty. * An empty singly-linked list has a NULL pointer in its header. * There are two kinds of empty doubly linked lists: those that have been * initialized to NULL, and those that have been initialized to circularity. * (If a dlist is modified and then all its elements are deleted, it will be * in the circular state.) We prefer circular dlists because there are some * operations that can be done without branches (and thus faster) on lists * that use circular representation. However, it is often convenient to * initialize list headers to zeroes rather than setting them up with an * explicit initialization function, so we also allow the other case. * * EXAMPLES * * Here's a simple example demonstrating how this can be used. Let's assume * we want to store information about the tables contained in a database. * * #include "lib/ilist.h" * * // Define struct for the databases including a list header that will be * // used to access the nodes in the table list later on. * typedef struct my_database * { * char *datname; * dlist_head tables; * // ... * } my_database; * * // Define struct for the tables. Note the list_node element which stores * // prev/next list links. The list_node element need not be first. * typedef struct my_table * { * char *tablename; * dlist_node list_node; * perm_t permissions; * // ... * } my_table; * * // create a database * my_database *db = create_database(); * * // and add a few tables to its table list * dlist_push_head(&db->tables, &create_table(db, "a")->list_node); * ... * dlist_push_head(&db->tables, &create_table(db, "b")->list_node); * * * To iterate over the table list, we allocate an iterator variable and use * a specialized looping construct. Inside a dlist_foreach, the iterator's * 'cur' field can be used to access the current element. iter.cur points to * a 'dlist_node', but most of the time what we want is the actual table * information; dlist_container() gives us that, like so: * * dlist_iter iter; * dlist_foreach(iter, &db->tables) * { * my_table *tbl = dlist_container(my_table, list_node, iter.cur); * printf("we have a table: %s in database %s\n", * tbl->tablename, db->datname); * } * * * While a simple iteration is useful, we sometimes also want to manipulate * the list while iterating. There is a different iterator element and looping * construct for that. Suppose we want to delete tables that meet a certain * criterion: * * dlist_mutable_iter miter; * dlist_foreach_modify(miter, &db->tables) * { * my_table *tbl = dlist_container(my_table, list_node, miter.cur); * * if (!tbl->to_be_deleted) * continue; // don't touch this one * * // unlink the current table from the linked list * dlist_delete(miter.cur); * // as these lists never manage memory, we can still access the table * // after it's been unlinked * drop_table(db, tbl); * } * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/lib/ilist.h *------------------------------------------------------------------------- */ #ifndef ILIST_H #define ILIST_H /* * Enable for extra debugging. This is rather expensive, so it's not enabled by * default even when USE_ASSERT_CHECKING. */ /* #define ILIST_DEBUG */ /* * Node of a doubly linked list. * * Embed this in structs that need to be part of a doubly linked list. */ typedef struct dlist_node dlist_node; struct dlist_node { dlist_node *prev; dlist_node *next; }; /* * Head of a doubly linked list. * * Non-empty lists are internally circularly linked. Circular lists have the * advantage of not needing any branches in the most common list manipulations. * An empty list can also be represented as a pair of NULL pointers, making * initialization easier. */ typedef struct dlist_head { /* * head.next either points to the first element of the list; to &head if * it's a circular empty list; or to NULL if empty and not circular. * * head.prev either points to the last element of the list; to &head if * it's a circular empty list; or to NULL if empty and not circular. */ dlist_node head; } dlist_head; /* * Doubly linked list iterator. * * Used as state in dlist_foreach() and dlist_reverse_foreach(). To get the * current element of the iteration use the 'cur' member. * * Iterations using this are *not* allowed to change the list while iterating! * * NB: We use an extra "end" field here to avoid multiple evaluations of * arguments in the dlist_foreach() macro. */ typedef struct dlist_iter { dlist_node *cur; /* current element */ dlist_node *end; /* last node we'll iterate to */ } dlist_iter; /* * Doubly linked list iterator allowing some modifications while iterating. * * Used as state in dlist_foreach_modify(). To get the current element of the * iteration use the 'cur' member. * * Iterations using this are only allowed to change the list at the current * point of iteration. It is fine to delete the current node, but it is *not* * fine to insert or delete adjacent nodes. * * NB: We need a separate type for mutable iterations so that we can store * the 'next' node of the current node in case it gets deleted or modified. */ typedef struct dlist_mutable_iter { dlist_node *cur; /* current element */ dlist_node *next; /* next node we'll iterate to */ dlist_node *end; /* last node we'll iterate to */ } dlist_mutable_iter; /* * Node of a singly linked list. * * Embed this in structs that need to be part of a singly linked list. */ typedef struct slist_node slist_node; struct slist_node { slist_node *next; }; /* * Head of a singly linked list. * * Singly linked lists are not circularly linked, in contrast to doubly linked * lists; we just set head.next to NULL if empty. This doesn't incur any * additional branches in the usual manipulations. */ typedef struct slist_head { slist_node head; } slist_head; /* * Singly linked list iterator. * * Used as state in slist_foreach(). To get the current element of the * iteration use the 'cur' member. * * It's allowed to modify the list while iterating, with the exception of * deleting the iterator's current node; deletion of that node requires * care if the iteration is to be continued afterward. (Doing so and also * deleting or inserting adjacent list elements might misbehave; also, if * the user frees the current node's storage, continuing the iteration is * not safe.) * * NB: this wouldn't really need to be an extra struct, we could use an * slist_node * directly. We prefer a separate type for consistency. */ typedef struct slist_iter { slist_node *cur; } slist_iter; /* * Singly linked list iterator allowing some modifications while iterating. * * Used as state in slist_foreach_modify(). To get the current element of the * iteration use the 'cur' member. * * The only list modification allowed while iterating is to remove the current * node via slist_delete_current() (*not* slist_delete()). Insertion or * deletion of nodes adjacent to the current node would misbehave. */ typedef struct slist_mutable_iter { slist_node *cur; /* current element */ slist_node *next; /* next node we'll iterate to */ slist_node *prev; /* prev node, for deletions */ } slist_mutable_iter; /* Static initializers */ #define DLIST_STATIC_INIT(name) {{&(name).head, &(name).head}} #define SLIST_STATIC_INIT(name) {{NULL}} /* Prototypes for functions too big to be inline */ /* Caution: this is O(n); consider using slist_delete_current() instead */ extern void slist_delete(slist_head *head, slist_node *node); #ifdef ILIST_DEBUG extern void dlist_check(dlist_head *head); extern void slist_check(slist_head *head); #else /* * These seemingly useless casts to void are here to keep the compiler quiet * about the argument being unused in many functions in a non-debug compile, * in which functions the only point of passing the list head pointer is to be * able to run these checks. */ #define dlist_check(head) ((void) (head)) #define slist_check(head) ((void) (head)) #endif /* ILIST_DEBUG */ /* doubly linked list implementation */ /* * Initialize a doubly linked list. * Previous state will be thrown away without any cleanup. */ static inline void dlist_init(dlist_head *head) { head->head.next = head->head.prev = &head->head; } /* * Is the list empty? * * An empty list has either its first 'next' pointer set to NULL, or to itself. */ static inline bool dlist_is_empty(dlist_head *head) { dlist_check(head); return head->head.next == NULL || head->head.next == &(head->head); } /* * Insert a node at the beginning of the list. */ static inline void dlist_push_head(dlist_head *head, dlist_node *node) { if (head->head.next == NULL) /* convert NULL header to circular */ dlist_init(head); node->next = head->head.next; node->prev = &head->head; node->next->prev = node; head->head.next = node; dlist_check(head); } /* * Insert a node at the end of the list. */ static inline void dlist_push_tail(dlist_head *head, dlist_node *node) { if (head->head.next == NULL) /* convert NULL header to circular */ dlist_init(head); node->next = &head->head; node->prev = head->head.prev; node->prev->next = node; head->head.prev = node; dlist_check(head); } /* * Insert a node after another *in the same list* */ static inline void dlist_insert_after(dlist_node *after, dlist_node *node) { node->prev = after; node->next = after->next; after->next = node; node->next->prev = node; } /* * Insert a node before another *in the same list* */ static inline void dlist_insert_before(dlist_node *before, dlist_node *node) { node->prev = before->prev; node->next = before; before->prev = node; node->prev->next = node; } /* * Delete 'node' from its list (it must be in one). */ static inline void dlist_delete(dlist_node *node) { node->prev->next = node->next; node->next->prev = node->prev; } /* * Remove and return the first node from a list (there must be one). */ static inline dlist_node * dlist_pop_head_node(dlist_head *head) { dlist_node *node; Assert(!dlist_is_empty(head)); node = head->head.next; dlist_delete(node); return node; } /* * Move element from its current position in the list to the head position in * the same list. * * Undefined behaviour if 'node' is not already part of the list. */ static inline void dlist_move_head(dlist_head *head, dlist_node *node) { /* fast path if it's already at the head */ if (head->head.next == node) return; dlist_delete(node); dlist_push_head(head, node); dlist_check(head); } /* * Check whether 'node' has a following node. * Caution: unreliable if 'node' is not in the list. */ static inline bool dlist_has_next(dlist_head *head, dlist_node *node) { return node->next != &head->head; } /* * Check whether 'node' has a preceding node. * Caution: unreliable if 'node' is not in the list. */ static inline bool dlist_has_prev(dlist_head *head, dlist_node *node) { return node->prev != &head->head; } /* * Return the next node in the list (there must be one). */ static inline dlist_node * dlist_next_node(dlist_head *head, dlist_node *node) { Assert(dlist_has_next(head, node)); return node->next; } /* * Return previous node in the list (there must be one). */ static inline dlist_node * dlist_prev_node(dlist_head *head, dlist_node *node) { Assert(dlist_has_prev(head, node)); return node->prev; } /* internal support function to get address of head element's struct */ static inline void * dlist_head_element_off(dlist_head *head, size_t off) { Assert(!dlist_is_empty(head)); return (char *) head->head.next - off; } /* * Return the first node in the list (there must be one). */ static inline dlist_node * dlist_head_node(dlist_head *head) { return (dlist_node *) dlist_head_element_off(head, 0); } /* internal support function to get address of tail element's struct */ static inline void * dlist_tail_element_off(dlist_head *head, size_t off) { Assert(!dlist_is_empty(head)); return (char *) head->head.prev - off; } /* * Return the last node in the list (there must be one). */ static inline dlist_node * dlist_tail_node(dlist_head *head) { return (dlist_node *) dlist_tail_element_off(head, 0); } /* * Return the containing struct of 'type' where 'membername' is the dlist_node * pointed at by 'ptr'. * * This is used to convert a dlist_node * back to its containing struct. */ #define dlist_container(type, membername, ptr) \ (AssertVariableIsOfTypeMacro(ptr, dlist_node *), \ AssertVariableIsOfTypeMacro(((type *) NULL)->membername, dlist_node), \ ((type *) ((char *) (ptr) - offsetof(type, membername)))) /* * Return the address of the first element in the list. * * The list must not be empty. */ #define dlist_head_element(type, membername, lhead) \ (AssertVariableIsOfTypeMacro(((type *) NULL)->membername, dlist_node), \ (type *) dlist_head_element_off(lhead, offsetof(type, membername))) /* * Return the address of the last element in the list. * * The list must not be empty. */ #define dlist_tail_element(type, membername, lhead) \ (AssertVariableIsOfTypeMacro(((type *) NULL)->membername, dlist_node), \ ((type *) dlist_tail_element_off(lhead, offsetof(type, membername)))) /* * Iterate through the list pointed at by 'lhead' storing the state in 'iter'. * * Access the current element with iter.cur. * * It is *not* allowed to manipulate the list during iteration. */ #define dlist_foreach(iter, lhead) \ for (AssertVariableIsOfTypeMacro(iter, dlist_iter), \ AssertVariableIsOfTypeMacro(lhead, dlist_head *), \ (iter).end = &(lhead)->head, \ (iter).cur = (iter).end->next ? (iter).end->next : (iter).end; \ (iter).cur != (iter).end; \ (iter).cur = (iter).cur->next) /* * Iterate through the list pointed at by 'lhead' storing the state in 'iter'. * * Access the current element with iter.cur. * * Iterations using this are only allowed to change the list at the current * point of iteration. It is fine to delete the current node, but it is *not* * fine to insert or delete adjacent nodes. */ #define dlist_foreach_modify(iter, lhead) \ for (AssertVariableIsOfTypeMacro(iter, dlist_mutable_iter), \ AssertVariableIsOfTypeMacro(lhead, dlist_head *), \ (iter).end = &(lhead)->head, \ (iter).cur = (iter).end->next ? (iter).end->next : (iter).end, \ (iter).next = (iter).cur->next; \ (iter).cur != (iter).end; \ (iter).cur = (iter).next, (iter).next = (iter).cur->next) /* * Iterate through the list in reverse order. * * It is *not* allowed to manipulate the list during iteration. */ #define dlist_reverse_foreach(iter, lhead) \ for (AssertVariableIsOfTypeMacro(iter, dlist_iter), \ AssertVariableIsOfTypeMacro(lhead, dlist_head *), \ (iter).end = &(lhead)->head, \ (iter).cur = (iter).end->prev ? (iter).end->prev : (iter).end; \ (iter).cur != (iter).end; \ (iter).cur = (iter).cur->prev) /* singly linked list implementation */ /* * Initialize a singly linked list. * Previous state will be thrown away without any cleanup. */ static inline void slist_init(slist_head *head) { head->head.next = NULL; } /* * Is the list empty? */ static inline bool slist_is_empty(slist_head *head) { slist_check(head); return head->head.next == NULL; } /* * Insert a node at the beginning of the list. */ static inline void slist_push_head(slist_head *head, slist_node *node) { node->next = head->head.next; head->head.next = node; slist_check(head); } /* * Insert a node after another *in the same list* */ static inline void slist_insert_after(slist_node *after, slist_node *node) { node->next = after->next; after->next = node; } /* * Remove and return the first node from a list (there must be one). */ static inline slist_node * slist_pop_head_node(slist_head *head) { slist_node *node; Assert(!slist_is_empty(head)); node = head->head.next; head->head.next = node->next; slist_check(head); return node; } /* * Check whether 'node' has a following node. */ static inline bool slist_has_next(slist_head *head, slist_node *node) { slist_check(head); return node->next != NULL; } /* * Return the next node in the list (there must be one). */ static inline slist_node * slist_next_node(slist_head *head, slist_node *node) { Assert(slist_has_next(head, node)); return node->next; } /* internal support function to get address of head element's struct */ static inline void * slist_head_element_off(slist_head *head, size_t off) { Assert(!slist_is_empty(head)); return (char *) head->head.next - off; } /* * Return the first node in the list (there must be one). */ static inline slist_node * slist_head_node(slist_head *head) { return (slist_node *) slist_head_element_off(head, 0); } /* * Delete the list element the iterator currently points to. * * Caution: this modifies iter->cur, so don't use that again in the current * loop iteration. */ static inline void slist_delete_current(slist_mutable_iter *iter) { /* * Update previous element's forward link. If the iteration is at the * first list element, iter->prev will point to the list header's "head" * field, so we don't need a special case for that. */ iter->prev->next = iter->next; /* * Reset cur to prev, so that prev will continue to point to the prior * valid list element after slist_foreach_modify() advances to the next. */ iter->cur = iter->prev; } /* * Return the containing struct of 'type' where 'membername' is the slist_node * pointed at by 'ptr'. * * This is used to convert a slist_node * back to its containing struct. */ #define slist_container(type, membername, ptr) \ (AssertVariableIsOfTypeMacro(ptr, slist_node *), \ AssertVariableIsOfTypeMacro(((type *) NULL)->membername, slist_node), \ ((type *) ((char *) (ptr) - offsetof(type, membername)))) /* * Return the address of the first element in the list. * * The list must not be empty. */ #define slist_head_element(type, membername, lhead) \ (AssertVariableIsOfTypeMacro(((type *) NULL)->membername, slist_node), \ (type *) slist_head_element_off(lhead, offsetof(type, membername))) /* * Iterate through the list pointed at by 'lhead' storing the state in 'iter'. * * Access the current element with iter.cur. * * It's allowed to modify the list while iterating, with the exception of * deleting the iterator's current node; deletion of that node requires * care if the iteration is to be continued afterward. (Doing so and also * deleting or inserting adjacent list elements might misbehave; also, if * the user frees the current node's storage, continuing the iteration is * not safe.) */ #define slist_foreach(iter, lhead) \ for (AssertVariableIsOfTypeMacro(iter, slist_iter), \ AssertVariableIsOfTypeMacro(lhead, slist_head *), \ (iter).cur = (lhead)->head.next; \ (iter).cur != NULL; \ (iter).cur = (iter).cur->next) /* * Iterate through the list pointed at by 'lhead' storing the state in 'iter'. * * Access the current element with iter.cur. * * The only list modification allowed while iterating is to remove the current * node via slist_delete_current() (*not* slist_delete()). Insertion or * deletion of nodes adjacent to the current node would misbehave. */ #define slist_foreach_modify(iter, lhead) \ for (AssertVariableIsOfTypeMacro(iter, slist_mutable_iter), \ AssertVariableIsOfTypeMacro(lhead, slist_head *), \ (iter).prev = &(lhead)->head, \ (iter).cur = (iter).prev->next, \ (iter).next = (iter).cur ? (iter).cur->next : NULL; \ (iter).cur != NULL; \ (iter).prev = (iter).cur, \ (iter).cur = (iter).next, \ (iter).next = (iter).next ? (iter).next->next : NULL) #endif /* ILIST_H */ libpg_query-13-2.1.0/src/postgres/include/lib/pairingheap.h000066400000000000000000000066611413137616400235620ustar00rootroot00000000000000/* * pairingheap.h * * A Pairing Heap implementation * * Portions Copyright (c) 2012-2020, PostgreSQL Global Development Group * * src/include/lib/pairingheap.h */ #ifndef PAIRINGHEAP_H #define PAIRINGHEAP_H #include "lib/stringinfo.h" /* Enable if you need the pairingheap_dump() debug function */ /* #define PAIRINGHEAP_DEBUG */ /* * This represents an element stored in the heap. Embed this in a larger * struct containing the actual data you're storing. * * A node can have multiple children, which form a double-linked list. * first_child points to the node's first child, and the subsequent children * can be found by following the next_sibling pointers. The last child has * next_sibling == NULL. The prev_or_parent pointer points to the node's * previous sibling, or if the node is its parent's first child, to the * parent. */ typedef struct pairingheap_node { struct pairingheap_node *first_child; struct pairingheap_node *next_sibling; struct pairingheap_node *prev_or_parent; } pairingheap_node; /* * Return the containing struct of 'type' where 'membername' is the * pairingheap_node pointed at by 'ptr'. * * This is used to convert a pairingheap_node * back to its containing struct. */ #define pairingheap_container(type, membername, ptr) \ (AssertVariableIsOfTypeMacro(ptr, pairingheap_node *), \ AssertVariableIsOfTypeMacro(((type *) NULL)->membername, pairingheap_node), \ ((type *) ((char *) (ptr) - offsetof(type, membername)))) /* * Like pairingheap_container, but used when the pointer is 'const ptr' */ #define pairingheap_const_container(type, membername, ptr) \ (AssertVariableIsOfTypeMacro(ptr, const pairingheap_node *), \ AssertVariableIsOfTypeMacro(((type *) NULL)->membername, pairingheap_node), \ ((const type *) ((const char *) (ptr) - offsetof(type, membername)))) /* * For a max-heap, the comparator must return <0 iff a < b, 0 iff a == b, * and >0 iff a > b. For a min-heap, the conditions are reversed. */ typedef int (*pairingheap_comparator) (const pairingheap_node *a, const pairingheap_node *b, void *arg); /* * A pairing heap. * * You can use pairingheap_allocate() to create a new palloc'd heap, or embed * this in a larger struct, set ph_compare and ph_arg directly and initialize * ph_root to NULL. */ typedef struct pairingheap { pairingheap_comparator ph_compare; /* comparison function */ void *ph_arg; /* opaque argument to ph_compare */ pairingheap_node *ph_root; /* current root of the heap */ } pairingheap; extern pairingheap *pairingheap_allocate(pairingheap_comparator compare, void *arg); extern void pairingheap_free(pairingheap *heap); extern void pairingheap_add(pairingheap *heap, pairingheap_node *node); extern pairingheap_node *pairingheap_first(pairingheap *heap); extern pairingheap_node *pairingheap_remove_first(pairingheap *heap); extern void pairingheap_remove(pairingheap *heap, pairingheap_node *node); #ifdef PAIRINGHEAP_DEBUG extern char *pairingheap_dump(pairingheap *heap, void (*dumpfunc) (pairingheap_node *node, StringInfo buf, void *opaque), void *opaque); #endif /* Resets the heap to be empty. */ #define pairingheap_reset(h) ((h)->ph_root = NULL) /* Is the heap empty? */ #define pairingheap_is_empty(h) ((h)->ph_root == NULL) /* Is there exactly one node in the heap? */ #define pairingheap_is_singular(h) \ ((h)->ph_root && (h)->ph_root->first_child == NULL) #endif /* PAIRINGHEAP_H */ libpg_query-13-2.1.0/src/postgres/include/lib/simplehash.h000066400000000000000000000703141413137616400234240ustar00rootroot00000000000000/* * simplehash.h * * Hash table implementation which will be specialized to user-defined * types, by including this file to generate the required code. It's * probably not worthwhile to do so for hash tables that aren't performance * or space sensitive. * * Usage notes: * * To generate a hash-table and associated functions for a use case several * macros have to be #define'ed before this file is included. Including * the file #undef's all those, so a new hash table can be generated * afterwards. * The relevant parameters are: * - SH_PREFIX - prefix for all symbol names generated. A prefix of 'foo' * will result in hash table type 'foo_hash' and functions like * 'foo_insert'/'foo_lookup' and so forth. * - SH_ELEMENT_TYPE - type of the contained elements * - SH_KEY_TYPE - type of the hashtable's key * - SH_DECLARE - if defined function prototypes and type declarations are * generated * - SH_DEFINE - if defined function definitions are generated * - SH_SCOPE - in which scope (e.g. extern, static inline) do function * declarations reside * - SH_RAW_ALLOCATOR - if defined, memory contexts are not used; instead, * use this to allocate bytes * - SH_USE_NONDEFAULT_ALLOCATOR - if defined no element allocator functions * are defined, so you can supply your own * The following parameters are only relevant when SH_DEFINE is defined: * - SH_KEY - name of the element in SH_ELEMENT_TYPE containing the hash key * - SH_EQUAL(table, a, b) - compare two table keys * - SH_HASH_KEY(table, key) - generate hash for the key * - SH_STORE_HASH - if defined the hash is stored in the elements * - SH_GET_HASH(tb, a) - return the field to store the hash in * * For examples of usage look at tidbitmap.c (file local definition) and * execnodes.h/execGrouping.c (exposed declaration, file local * implementation). * * Hash table design: * * The hash table design chosen is a variant of linear open-addressing. The * reason for doing so is that linear addressing is CPU cache & pipeline * friendly. The biggest disadvantage of simple linear addressing schemes * are highly variable lookup times due to clustering, and deletions * leaving a lot of tombstones around. To address these issues a variant * of "robin hood" hashing is employed. Robin hood hashing optimizes * chaining lengths by moving elements close to their optimal bucket * ("rich" elements), out of the way if a to-be-inserted element is further * away from its optimal position (i.e. it's "poor"). While that can make * insertions slower, the average lookup performance is a lot better, and * higher fill factors can be used in a still performant manner. To avoid * tombstones - which normally solve the issue that a deleted node's * presence is relevant to determine whether a lookup needs to continue * looking or is done - buckets following a deleted element are shifted * backwards, unless they're empty or already at their optimal position. */ #include "port/pg_bitutils.h" /* helpers */ #define SH_MAKE_PREFIX(a) CppConcat(a,_) #define SH_MAKE_NAME(name) SH_MAKE_NAME_(SH_MAKE_PREFIX(SH_PREFIX),name) #define SH_MAKE_NAME_(a,b) CppConcat(a,b) /* name macros for: */ /* type declarations */ #define SH_TYPE SH_MAKE_NAME(hash) #define SH_STATUS SH_MAKE_NAME(status) #define SH_STATUS_EMPTY SH_MAKE_NAME(SH_EMPTY) #define SH_STATUS_IN_USE SH_MAKE_NAME(SH_IN_USE) #define SH_ITERATOR SH_MAKE_NAME(iterator) /* function declarations */ #define SH_CREATE SH_MAKE_NAME(create) #define SH_DESTROY SH_MAKE_NAME(destroy) #define SH_RESET SH_MAKE_NAME(reset) #define SH_INSERT SH_MAKE_NAME(insert) #define SH_INSERT_HASH SH_MAKE_NAME(insert_hash) #define SH_DELETE SH_MAKE_NAME(delete) #define SH_LOOKUP SH_MAKE_NAME(lookup) #define SH_LOOKUP_HASH SH_MAKE_NAME(lookup_hash) #define SH_GROW SH_MAKE_NAME(grow) #define SH_START_ITERATE SH_MAKE_NAME(start_iterate) #define SH_START_ITERATE_AT SH_MAKE_NAME(start_iterate_at) #define SH_ITERATE SH_MAKE_NAME(iterate) #define SH_ALLOCATE SH_MAKE_NAME(allocate) #define SH_FREE SH_MAKE_NAME(free) #define SH_STAT SH_MAKE_NAME(stat) /* internal helper functions (no externally visible prototypes) */ #define SH_COMPUTE_PARAMETERS SH_MAKE_NAME(compute_parameters) #define SH_NEXT SH_MAKE_NAME(next) #define SH_PREV SH_MAKE_NAME(prev) #define SH_DISTANCE_FROM_OPTIMAL SH_MAKE_NAME(distance) #define SH_INITIAL_BUCKET SH_MAKE_NAME(initial_bucket) #define SH_ENTRY_HASH SH_MAKE_NAME(entry_hash) #define SH_INSERT_HASH_INTERNAL SH_MAKE_NAME(insert_hash_internal) #define SH_LOOKUP_HASH_INTERNAL SH_MAKE_NAME(lookup_hash_internal) /* generate forward declarations necessary to use the hash table */ #ifdef SH_DECLARE /* type definitions */ typedef struct SH_TYPE { /* * Size of data / bucket array, 64 bits to handle UINT32_MAX sized hash * tables. Note that the maximum number of elements is lower * (SH_MAX_FILLFACTOR) */ uint64 size; /* how many elements have valid contents */ uint32 members; /* mask for bucket and size calculations, based on size */ uint32 sizemask; /* boundary after which to grow hashtable */ uint32 grow_threshold; /* hash buckets */ SH_ELEMENT_TYPE *data; #ifndef SH_RAW_ALLOCATOR /* memory context to use for allocations */ MemoryContext ctx; #endif /* user defined data, useful for callbacks */ void *private_data; } SH_TYPE; typedef enum SH_STATUS { SH_STATUS_EMPTY = 0x00, SH_STATUS_IN_USE = 0x01 } SH_STATUS; typedef struct SH_ITERATOR { uint32 cur; /* current element */ uint32 end; bool done; /* iterator exhausted? */ } SH_ITERATOR; /* externally visible function prototypes */ #ifdef SH_RAW_ALLOCATOR SH_SCOPE SH_TYPE *SH_CREATE(uint32 nelements, void *private_data); #else SH_SCOPE SH_TYPE *SH_CREATE(MemoryContext ctx, uint32 nelements, void *private_data); #endif SH_SCOPE void SH_DESTROY(SH_TYPE * tb); SH_SCOPE void SH_RESET(SH_TYPE * tb); SH_SCOPE void SH_GROW(SH_TYPE * tb, uint32 newsize); SH_SCOPE SH_ELEMENT_TYPE *SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found); SH_SCOPE SH_ELEMENT_TYPE *SH_INSERT_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found); SH_SCOPE SH_ELEMENT_TYPE *SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key); SH_SCOPE SH_ELEMENT_TYPE *SH_LOOKUP_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash); SH_SCOPE bool SH_DELETE(SH_TYPE * tb, SH_KEY_TYPE key); SH_SCOPE void SH_START_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter); SH_SCOPE void SH_START_ITERATE_AT(SH_TYPE * tb, SH_ITERATOR * iter, uint32 at); SH_SCOPE SH_ELEMENT_TYPE *SH_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter); SH_SCOPE void SH_STAT(SH_TYPE * tb); #endif /* SH_DECLARE */ /* generate implementation of the hash table */ #ifdef SH_DEFINE #ifndef SH_RAW_ALLOCATOR #include "utils/memutils.h" #endif /* max data array size,we allow up to PG_UINT32_MAX buckets, including 0 */ #define SH_MAX_SIZE (((uint64) PG_UINT32_MAX) + 1) /* normal fillfactor, unless already close to maximum */ #ifndef SH_FILLFACTOR #define SH_FILLFACTOR (0.9) #endif /* increase fillfactor if we otherwise would error out */ #define SH_MAX_FILLFACTOR (0.98) /* grow if actual and optimal location bigger than */ #ifndef SH_GROW_MAX_DIB #define SH_GROW_MAX_DIB 25 #endif /* grow if more than elements to move when inserting */ #ifndef SH_GROW_MAX_MOVE #define SH_GROW_MAX_MOVE 150 #endif #ifndef SH_GROW_MIN_FILLFACTOR /* but do not grow due to SH_GROW_MAX_* if below */ #define SH_GROW_MIN_FILLFACTOR 0.1 #endif #ifdef SH_STORE_HASH #define SH_COMPARE_KEYS(tb, ahash, akey, b) (ahash == SH_GET_HASH(tb, b) && SH_EQUAL(tb, b->SH_KEY, akey)) #else #define SH_COMPARE_KEYS(tb, ahash, akey, b) (SH_EQUAL(tb, b->SH_KEY, akey)) #endif /* * Wrap the following definitions in include guards, to avoid multiple * definition errors if this header is included more than once. The rest of * the file deliberately has no include guards, because it can be included * with different parameters to define functions and types with non-colliding * names. */ #ifndef SIMPLEHASH_H #define SIMPLEHASH_H #ifdef FRONTEND #define sh_error(...) pg_log_error(__VA_ARGS__) #define sh_log(...) pg_log_info(__VA_ARGS__) #else #define sh_error(...) elog(ERROR, __VA_ARGS__) #define sh_log(...) elog(LOG, __VA_ARGS__) #endif #endif /* * Compute sizing parameters for hashtable. Called when creating and growing * the hashtable. */ static inline void SH_COMPUTE_PARAMETERS(SH_TYPE * tb, uint32 newsize) { uint64 size; /* supporting zero sized hashes would complicate matters */ size = Max(newsize, 2); /* round up size to the next power of 2, that's how bucketing works */ size = pg_nextpower2_64(size); Assert(size <= SH_MAX_SIZE); /* * Verify that allocation of ->data is possible on this platform, without * overflowing Size. */ if ((((uint64) sizeof(SH_ELEMENT_TYPE)) * size) >= SIZE_MAX / 2) sh_error("hash table too large"); /* now set size */ tb->size = size; if (tb->size == SH_MAX_SIZE) tb->sizemask = 0; else tb->sizemask = tb->size - 1; /* * Compute the next threshold at which we need to grow the hash table * again. */ if (tb->size == SH_MAX_SIZE) tb->grow_threshold = ((double) tb->size) * SH_MAX_FILLFACTOR; else tb->grow_threshold = ((double) tb->size) * SH_FILLFACTOR; } /* return the optimal bucket for the hash */ static inline uint32 SH_INITIAL_BUCKET(SH_TYPE * tb, uint32 hash) { return hash & tb->sizemask; } /* return next bucket after the current, handling wraparound */ static inline uint32 SH_NEXT(SH_TYPE * tb, uint32 curelem, uint32 startelem) { curelem = (curelem + 1) & tb->sizemask; Assert(curelem != startelem); return curelem; } /* return bucket before the current, handling wraparound */ static inline uint32 SH_PREV(SH_TYPE * tb, uint32 curelem, uint32 startelem) { curelem = (curelem - 1) & tb->sizemask; Assert(curelem != startelem); return curelem; } /* return distance between bucket and its optimal position */ static inline uint32 SH_DISTANCE_FROM_OPTIMAL(SH_TYPE * tb, uint32 optimal, uint32 bucket) { if (optimal <= bucket) return bucket - optimal; else return (tb->size + bucket) - optimal; } static inline uint32 SH_ENTRY_HASH(SH_TYPE * tb, SH_ELEMENT_TYPE * entry) { #ifdef SH_STORE_HASH return SH_GET_HASH(tb, entry); #else return SH_HASH_KEY(tb, entry->SH_KEY); #endif } /* default memory allocator function */ static inline void *SH_ALLOCATE(SH_TYPE * type, Size size); static inline void SH_FREE(SH_TYPE * type, void *pointer); #ifndef SH_USE_NONDEFAULT_ALLOCATOR /* default memory allocator function */ static inline void * SH_ALLOCATE(SH_TYPE * type, Size size) { #ifdef SH_RAW_ALLOCATOR return SH_RAW_ALLOCATOR(size); #else return MemoryContextAllocExtended(type->ctx, size, MCXT_ALLOC_HUGE | MCXT_ALLOC_ZERO); #endif } /* default memory free function */ static inline void SH_FREE(SH_TYPE * type, void *pointer) { pfree(pointer); } #endif /* * Create a hash table with enough space for `nelements` distinct members. * Memory for the hash table is allocated from the passed-in context. If * desired, the array of elements can be allocated using a passed-in allocator; * this could be useful in order to place the array of elements in a shared * memory, or in a context that will outlive the rest of the hash table. * Memory other than for the array of elements will still be allocated from * the passed-in context. */ #ifdef SH_RAW_ALLOCATOR SH_SCOPE SH_TYPE * SH_CREATE(uint32 nelements, void *private_data) #else SH_SCOPE SH_TYPE * SH_CREATE(MemoryContext ctx, uint32 nelements, void *private_data) #endif { SH_TYPE *tb; uint64 size; #ifdef SH_RAW_ALLOCATOR tb = SH_RAW_ALLOCATOR(sizeof(SH_TYPE)); #else tb = MemoryContextAllocZero(ctx, sizeof(SH_TYPE)); tb->ctx = ctx; #endif tb->private_data = private_data; /* increase nelements by fillfactor, want to store nelements elements */ size = Min((double) SH_MAX_SIZE, ((double) nelements) / SH_FILLFACTOR); SH_COMPUTE_PARAMETERS(tb, size); tb->data = SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * tb->size); return tb; } /* destroy a previously created hash table */ SH_SCOPE void SH_DESTROY(SH_TYPE * tb) { SH_FREE(tb, tb->data); pfree(tb); } /* reset the contents of a previously created hash table */ SH_SCOPE void SH_RESET(SH_TYPE * tb) { memset(tb->data, 0, sizeof(SH_ELEMENT_TYPE) * tb->size); tb->members = 0; } /* * Grow a hash table to at least `newsize` buckets. * * Usually this will automatically be called by insertions/deletions, when * necessary. But resizing to the exact input size can be advantageous * performance-wise, when known at some point. */ SH_SCOPE void SH_GROW(SH_TYPE * tb, uint32 newsize) { uint64 oldsize = tb->size; SH_ELEMENT_TYPE *olddata = tb->data; SH_ELEMENT_TYPE *newdata; uint32 i; uint32 startelem = 0; uint32 copyelem; Assert(oldsize == pg_nextpower2_64(oldsize)); Assert(oldsize != SH_MAX_SIZE); Assert(oldsize < newsize); /* compute parameters for new table */ SH_COMPUTE_PARAMETERS(tb, newsize); tb->data = SH_ALLOCATE(tb, sizeof(SH_ELEMENT_TYPE) * tb->size); newdata = tb->data; /* * Copy entries from the old data to newdata. We theoretically could use * SH_INSERT here, to avoid code duplication, but that's more general than * we need. We neither want tb->members increased, nor do we need to do * deal with deleted elements, nor do we need to compare keys. So a * special-cased implementation is lot faster. As resizing can be time * consuming and frequent, that's worthwhile to optimize. * * To be able to simply move entries over, we have to start not at the * first bucket (i.e olddata[0]), but find the first bucket that's either * empty, or is occupied by an entry at its optimal position. Such a * bucket has to exist in any table with a load factor under 1, as not all * buckets are occupied, i.e. there always has to be an empty bucket. By * starting at such a bucket we can move the entries to the larger table, * without having to deal with conflicts. */ /* search for the first element in the hash that's not wrapped around */ for (i = 0; i < oldsize; i++) { SH_ELEMENT_TYPE *oldentry = &olddata[i]; uint32 hash; uint32 optimal; if (oldentry->status != SH_STATUS_IN_USE) { startelem = i; break; } hash = SH_ENTRY_HASH(tb, oldentry); optimal = SH_INITIAL_BUCKET(tb, hash); if (optimal == i) { startelem = i; break; } } /* and copy all elements in the old table */ copyelem = startelem; for (i = 0; i < oldsize; i++) { SH_ELEMENT_TYPE *oldentry = &olddata[copyelem]; if (oldentry->status == SH_STATUS_IN_USE) { uint32 hash; uint32 startelem; uint32 curelem; SH_ELEMENT_TYPE *newentry; hash = SH_ENTRY_HASH(tb, oldentry); startelem = SH_INITIAL_BUCKET(tb, hash); curelem = startelem; /* find empty element to put data into */ while (true) { newentry = &newdata[curelem]; if (newentry->status == SH_STATUS_EMPTY) { break; } curelem = SH_NEXT(tb, curelem, startelem); } /* copy entry to new slot */ memcpy(newentry, oldentry, sizeof(SH_ELEMENT_TYPE)); } /* can't use SH_NEXT here, would use new size */ copyelem++; if (copyelem >= oldsize) { copyelem = 0; } } SH_FREE(tb, olddata); } /* * This is a separate static inline function, so it can be reliably be inlined * into its wrapper functions even if SH_SCOPE is extern. */ static inline SH_ELEMENT_TYPE * SH_INSERT_HASH_INTERNAL(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found) { uint32 startelem; uint32 curelem; SH_ELEMENT_TYPE *data; uint32 insertdist; restart: insertdist = 0; /* * We do the grow check even if the key is actually present, to avoid * doing the check inside the loop. This also lets us avoid having to * re-find our position in the hashtable after resizing. * * Note that this also reached when resizing the table due to * SH_GROW_MAX_DIB / SH_GROW_MAX_MOVE. */ if (unlikely(tb->members >= tb->grow_threshold)) { if (tb->size == SH_MAX_SIZE) { sh_error("hash table size exceeded"); } /* * When optimizing, it can be very useful to print these out. */ /* SH_STAT(tb); */ SH_GROW(tb, tb->size * 2); /* SH_STAT(tb); */ } /* perform insert, start bucket search at optimal location */ data = tb->data; startelem = SH_INITIAL_BUCKET(tb, hash); curelem = startelem; while (true) { uint32 curdist; uint32 curhash; uint32 curoptimal; SH_ELEMENT_TYPE *entry = &data[curelem]; /* any empty bucket can directly be used */ if (entry->status == SH_STATUS_EMPTY) { tb->members++; entry->SH_KEY = key; #ifdef SH_STORE_HASH SH_GET_HASH(tb, entry) = hash; #endif entry->status = SH_STATUS_IN_USE; *found = false; return entry; } /* * If the bucket is not empty, we either found a match (in which case * we're done), or we have to decide whether to skip over or move the * colliding entry. When the colliding element's distance to its * optimal position is smaller than the to-be-inserted entry's, we * shift the colliding entry (and its followers) forward by one. */ if (SH_COMPARE_KEYS(tb, hash, key, entry)) { Assert(entry->status == SH_STATUS_IN_USE); *found = true; return entry; } curhash = SH_ENTRY_HASH(tb, entry); curoptimal = SH_INITIAL_BUCKET(tb, curhash); curdist = SH_DISTANCE_FROM_OPTIMAL(tb, curoptimal, curelem); if (insertdist > curdist) { SH_ELEMENT_TYPE *lastentry = entry; uint32 emptyelem = curelem; uint32 moveelem; int32 emptydist = 0; /* find next empty bucket */ while (true) { SH_ELEMENT_TYPE *emptyentry; emptyelem = SH_NEXT(tb, emptyelem, startelem); emptyentry = &data[emptyelem]; if (emptyentry->status == SH_STATUS_EMPTY) { lastentry = emptyentry; break; } /* * To avoid negative consequences from overly imbalanced * hashtables, grow the hashtable if collisions would require * us to move a lot of entries. The most likely cause of such * imbalance is filling a (currently) small table, from a * currently big one, in hash-table order. Don't grow if the * hashtable would be too empty, to prevent quick space * explosion for some weird edge cases. */ if (unlikely(++emptydist > SH_GROW_MAX_MOVE) && ((double) tb->members / tb->size) >= SH_GROW_MIN_FILLFACTOR) { tb->grow_threshold = 0; goto restart; } } /* shift forward, starting at last occupied element */ /* * TODO: This could be optimized to be one memcpy in many cases, * excepting wrapping around at the end of ->data. Hasn't shown up * in profiles so far though. */ moveelem = emptyelem; while (moveelem != curelem) { SH_ELEMENT_TYPE *moveentry; moveelem = SH_PREV(tb, moveelem, startelem); moveentry = &data[moveelem]; memcpy(lastentry, moveentry, sizeof(SH_ELEMENT_TYPE)); lastentry = moveentry; } /* and fill the now empty spot */ tb->members++; entry->SH_KEY = key; #ifdef SH_STORE_HASH SH_GET_HASH(tb, entry) = hash; #endif entry->status = SH_STATUS_IN_USE; *found = false; return entry; } curelem = SH_NEXT(tb, curelem, startelem); insertdist++; /* * To avoid negative consequences from overly imbalanced hashtables, * grow the hashtable if collisions lead to large runs. The most * likely cause of such imbalance is filling a (currently) small * table, from a currently big one, in hash-table order. Don't grow * if the hashtable would be too empty, to prevent quick space * explosion for some weird edge cases. */ if (unlikely(insertdist > SH_GROW_MAX_DIB) && ((double) tb->members / tb->size) >= SH_GROW_MIN_FILLFACTOR) { tb->grow_threshold = 0; goto restart; } } } /* * Insert the key key into the hash-table, set *found to true if the key * already exists, false otherwise. Returns the hash-table entry in either * case. */ SH_SCOPE SH_ELEMENT_TYPE * SH_INSERT(SH_TYPE * tb, SH_KEY_TYPE key, bool *found) { uint32 hash = SH_HASH_KEY(tb, key); return SH_INSERT_HASH_INTERNAL(tb, key, hash, found); } /* * Insert the key key into the hash-table using an already-calculated * hash. Set *found to true if the key already exists, false * otherwise. Returns the hash-table entry in either case. */ SH_SCOPE SH_ELEMENT_TYPE * SH_INSERT_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash, bool *found) { return SH_INSERT_HASH_INTERNAL(tb, key, hash, found); } /* * This is a separate static inline function, so it can be reliably be inlined * into its wrapper functions even if SH_SCOPE is extern. */ static inline SH_ELEMENT_TYPE * SH_LOOKUP_HASH_INTERNAL(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash) { const uint32 startelem = SH_INITIAL_BUCKET(tb, hash); uint32 curelem = startelem; while (true) { SH_ELEMENT_TYPE *entry = &tb->data[curelem]; if (entry->status == SH_STATUS_EMPTY) { return NULL; } Assert(entry->status == SH_STATUS_IN_USE); if (SH_COMPARE_KEYS(tb, hash, key, entry)) return entry; /* * TODO: we could stop search based on distance. If the current * buckets's distance-from-optimal is smaller than what we've skipped * already, the entry doesn't exist. Probably only do so if * SH_STORE_HASH is defined, to avoid re-computing hashes? */ curelem = SH_NEXT(tb, curelem, startelem); } } /* * Lookup up entry in hash table. Returns NULL if key not present. */ SH_SCOPE SH_ELEMENT_TYPE * SH_LOOKUP(SH_TYPE * tb, SH_KEY_TYPE key) { uint32 hash = SH_HASH_KEY(tb, key); return SH_LOOKUP_HASH_INTERNAL(tb, key, hash); } /* * Lookup up entry in hash table using an already-calculated hash. * * Returns NULL if key not present. */ SH_SCOPE SH_ELEMENT_TYPE * SH_LOOKUP_HASH(SH_TYPE * tb, SH_KEY_TYPE key, uint32 hash) { return SH_LOOKUP_HASH_INTERNAL(tb, key, hash); } /* * Delete entry from hash table. Returns whether to-be-deleted key was * present. */ SH_SCOPE bool SH_DELETE(SH_TYPE * tb, SH_KEY_TYPE key) { uint32 hash = SH_HASH_KEY(tb, key); uint32 startelem = SH_INITIAL_BUCKET(tb, hash); uint32 curelem = startelem; while (true) { SH_ELEMENT_TYPE *entry = &tb->data[curelem]; if (entry->status == SH_STATUS_EMPTY) return false; if (entry->status == SH_STATUS_IN_USE && SH_COMPARE_KEYS(tb, hash, key, entry)) { SH_ELEMENT_TYPE *lastentry = entry; tb->members--; /* * Backward shift following elements till either an empty element * or an element at its optimal position is encountered. * * While that sounds expensive, the average chain length is short, * and deletions would otherwise require tombstones. */ while (true) { SH_ELEMENT_TYPE *curentry; uint32 curhash; uint32 curoptimal; curelem = SH_NEXT(tb, curelem, startelem); curentry = &tb->data[curelem]; if (curentry->status != SH_STATUS_IN_USE) { lastentry->status = SH_STATUS_EMPTY; break; } curhash = SH_ENTRY_HASH(tb, curentry); curoptimal = SH_INITIAL_BUCKET(tb, curhash); /* current is at optimal position, done */ if (curoptimal == curelem) { lastentry->status = SH_STATUS_EMPTY; break; } /* shift */ memcpy(lastentry, curentry, sizeof(SH_ELEMENT_TYPE)); lastentry = curentry; } return true; } /* TODO: return false; if distance too big */ curelem = SH_NEXT(tb, curelem, startelem); } } /* * Initialize iterator. */ SH_SCOPE void SH_START_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter) { int i; uint64 startelem = PG_UINT64_MAX; /* * Search for the first empty element. As deletions during iterations are * supported, we want to start/end at an element that cannot be affected * by elements being shifted. */ for (i = 0; i < tb->size; i++) { SH_ELEMENT_TYPE *entry = &tb->data[i]; if (entry->status != SH_STATUS_IN_USE) { startelem = i; break; } } Assert(startelem < SH_MAX_SIZE); /* * Iterate backwards, that allows the current element to be deleted, even * if there are backward shifts */ iter->cur = startelem; iter->end = iter->cur; iter->done = false; } /* * Initialize iterator to a specific bucket. That's really only useful for * cases where callers are partially iterating over the hashspace, and that * iteration deletes and inserts elements based on visited entries. Doing that * repeatedly could lead to an unbalanced keyspace when always starting at the * same position. */ SH_SCOPE void SH_START_ITERATE_AT(SH_TYPE * tb, SH_ITERATOR * iter, uint32 at) { /* * Iterate backwards, that allows the current element to be deleted, even * if there are backward shifts. */ iter->cur = at & tb->sizemask; /* ensure at is within a valid range */ iter->end = iter->cur; iter->done = false; } /* * Iterate over all entries in the hash-table. Return the next occupied entry, * or NULL if done. * * During iteration the current entry in the hash table may be deleted, * without leading to elements being skipped or returned twice. Additionally * the rest of the table may be modified (i.e. there can be insertions or * deletions), but if so, there's neither a guarantee that all nodes are * visited at least once, nor a guarantee that a node is visited at most once. */ SH_SCOPE SH_ELEMENT_TYPE * SH_ITERATE(SH_TYPE * tb, SH_ITERATOR * iter) { while (!iter->done) { SH_ELEMENT_TYPE *elem; elem = &tb->data[iter->cur]; /* next element in backward direction */ iter->cur = (iter->cur - 1) & tb->sizemask; if ((iter->cur & tb->sizemask) == (iter->end & tb->sizemask)) iter->done = true; if (elem->status == SH_STATUS_IN_USE) { return elem; } } return NULL; } /* * Report some statistics about the state of the hashtable. For * debugging/profiling purposes only. */ SH_SCOPE void SH_STAT(SH_TYPE * tb) { uint32 max_chain_length = 0; uint32 total_chain_length = 0; double avg_chain_length; double fillfactor; uint32 i; uint32 *collisions = palloc0(tb->size * sizeof(uint32)); uint32 total_collisions = 0; uint32 max_collisions = 0; double avg_collisions; for (i = 0; i < tb->size; i++) { uint32 hash; uint32 optimal; uint32 dist; SH_ELEMENT_TYPE *elem; elem = &tb->data[i]; if (elem->status != SH_STATUS_IN_USE) continue; hash = SH_ENTRY_HASH(tb, elem); optimal = SH_INITIAL_BUCKET(tb, hash); dist = SH_DISTANCE_FROM_OPTIMAL(tb, optimal, i); if (dist > max_chain_length) max_chain_length = dist; total_chain_length += dist; collisions[optimal]++; } for (i = 0; i < tb->size; i++) { uint32 curcoll = collisions[i]; if (curcoll == 0) continue; /* single contained element is not a collision */ curcoll--; total_collisions += curcoll; if (curcoll > max_collisions) max_collisions = curcoll; } if (tb->members > 0) { fillfactor = tb->members / ((double) tb->size); avg_chain_length = ((double) total_chain_length) / tb->members; avg_collisions = ((double) total_collisions) / tb->members; } else { fillfactor = 0; avg_chain_length = 0; avg_collisions = 0; } sh_log("size: " UINT64_FORMAT ", members: %u, filled: %f, total chain: %u, max chain: %u, avg chain: %f, total_collisions: %u, max_collisions: %i, avg_collisions: %f", tb->size, tb->members, fillfactor, total_chain_length, max_chain_length, avg_chain_length, total_collisions, max_collisions, avg_collisions); } #endif /* SH_DEFINE */ /* undefine external parameters, so next hash table can be defined */ #undef SH_PREFIX #undef SH_KEY_TYPE #undef SH_KEY #undef SH_ELEMENT_TYPE #undef SH_HASH_KEY #undef SH_SCOPE #undef SH_DECLARE #undef SH_DEFINE #undef SH_GET_HASH #undef SH_STORE_HASH #undef SH_USE_NONDEFAULT_ALLOCATOR #undef SH_EQUAL /* undefine locally declared macros */ #undef SH_MAKE_PREFIX #undef SH_MAKE_NAME #undef SH_MAKE_NAME_ #undef SH_FILLFACTOR #undef SH_MAX_FILLFACTOR #undef SH_GROW_MAX_DIB #undef SH_GROW_MAX_MOVE #undef SH_GROW_MIN_FILLFACTOR #undef SH_MAX_SIZE /* types */ #undef SH_TYPE #undef SH_STATUS #undef SH_STATUS_EMPTY #undef SH_STATUS_IN_USE #undef SH_ITERATOR /* external function names */ #undef SH_CREATE #undef SH_DESTROY #undef SH_RESET #undef SH_INSERT #undef SH_INSERT_HASH #undef SH_DELETE #undef SH_LOOKUP #undef SH_LOOKUP_HASH #undef SH_GROW #undef SH_START_ITERATE #undef SH_START_ITERATE_AT #undef SH_ITERATE #undef SH_ALLOCATE #undef SH_FREE #undef SH_STAT /* internal function names */ #undef SH_COMPUTE_PARAMETERS #undef SH_COMPARE_KEYS #undef SH_INITIAL_BUCKET #undef SH_NEXT #undef SH_PREV #undef SH_DISTANCE_FROM_OPTIMAL #undef SH_ENTRY_HASH #undef SH_INSERT_HASH_INTERNAL #undef SH_LOOKUP_HASH_INTERNAL libpg_query-13-2.1.0/src/postgres/include/lib/stringinfo.h000066400000000000000000000132531413137616400234500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * stringinfo.h * Declarations/definitions for "StringInfo" functions. * * StringInfo provides an extensible string data type (currently limited to a * length of 1GB). It can be used to buffer either ordinary C strings * (null-terminated text) or arbitrary binary data. All storage is allocated * with palloc() (falling back to malloc in frontend code). * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/lib/stringinfo.h * *------------------------------------------------------------------------- */ #ifndef STRINGINFO_H #define STRINGINFO_H /*------------------------- * StringInfoData holds information about an extensible string. * data is the current buffer for the string (allocated with palloc). * len is the current string length. There is guaranteed to be * a terminating '\0' at data[len], although this is not very * useful when the string holds binary data rather than text. * maxlen is the allocated size in bytes of 'data', i.e. the maximum * string size (including the terminating '\0' char) that we can * currently store in 'data' without having to reallocate * more space. We must always have maxlen > len. * cursor is initialized to zero by makeStringInfo or initStringInfo, * but is not otherwise touched by the stringinfo.c routines. * Some routines use it to scan through a StringInfo. *------------------------- */ typedef struct StringInfoData { char *data; int len; int maxlen; int cursor; } StringInfoData; typedef StringInfoData *StringInfo; /*------------------------ * There are two ways to create a StringInfo object initially: * * StringInfo stringptr = makeStringInfo(); * Both the StringInfoData and the data buffer are palloc'd. * * StringInfoData string; * initStringInfo(&string); * The data buffer is palloc'd but the StringInfoData is just local. * This is the easiest approach for a StringInfo object that will * only live as long as the current routine. * * To destroy a StringInfo, pfree() the data buffer, and then pfree() the * StringInfoData if it was palloc'd. There's no special support for this. * * NOTE: some routines build up a string using StringInfo, and then * release the StringInfoData but return the data string itself to their * caller. At that point the data string looks like a plain palloc'd * string. *------------------------- */ /*------------------------ * makeStringInfo * Create an empty 'StringInfoData' & return a pointer to it. */ extern StringInfo makeStringInfo(void); /*------------------------ * initStringInfo * Initialize a StringInfoData struct (with previously undefined contents) * to describe an empty string. */ extern void initStringInfo(StringInfo str); /*------------------------ * resetStringInfo * Clears the current content of the StringInfo, if any. The * StringInfo remains valid. */ extern void resetStringInfo(StringInfo str); /*------------------------ * appendStringInfo * Format text data under the control of fmt (an sprintf-style format string) * and append it to whatever is already in str. More space is allocated * to str if necessary. This is sort of like a combination of sprintf and * strcat. */ extern void appendStringInfo(StringInfo str, const char *fmt,...) pg_attribute_printf(2, 3); /*------------------------ * appendStringInfoVA * Attempt to format text data under the control of fmt (an sprintf-style * format string) and append it to whatever is already in str. If successful * return zero; if not (because there's not enough space), return an estimate * of the space needed, without modifying str. Typically the caller should * pass the return value to enlargeStringInfo() before trying again; see * appendStringInfo for standard usage pattern. */ extern int appendStringInfoVA(StringInfo str, const char *fmt, va_list args) pg_attribute_printf(2, 0); /*------------------------ * appendStringInfoString * Append a null-terminated string to str. * Like appendStringInfo(str, "%s", s) but faster. */ extern void appendStringInfoString(StringInfo str, const char *s); /*------------------------ * appendStringInfoChar * Append a single byte to str. * Like appendStringInfo(str, "%c", ch) but much faster. */ extern void appendStringInfoChar(StringInfo str, char ch); /*------------------------ * appendStringInfoCharMacro * As above, but a macro for even more speed where it matters. * Caution: str argument will be evaluated multiple times. */ #define appendStringInfoCharMacro(str,ch) \ (((str)->len + 1 >= (str)->maxlen) ? \ appendStringInfoChar(str, ch) : \ (void)((str)->data[(str)->len] = (ch), (str)->data[++(str)->len] = '\0')) /*------------------------ * appendStringInfoSpaces * Append a given number of spaces to str. */ extern void appendStringInfoSpaces(StringInfo str, int count); /*------------------------ * appendBinaryStringInfo * Append arbitrary binary data to a StringInfo, allocating more space * if necessary. */ extern void appendBinaryStringInfo(StringInfo str, const char *data, int datalen); /*------------------------ * appendBinaryStringInfoNT * Append arbitrary binary data to a StringInfo, allocating more space * if necessary. Does not ensure a trailing null-byte exists. */ extern void appendBinaryStringInfoNT(StringInfo str, const char *data, int datalen); /*------------------------ * enlargeStringInfo * Make sure a StringInfo's buffer can hold at least 'needed' more bytes. */ extern void enlargeStringInfo(StringInfo str, int needed); #endif /* STRINGINFO_H */ libpg_query-13-2.1.0/src/postgres/include/libpq/000077500000000000000000000000001413137616400214525ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/libpq/auth.h000066400000000000000000000015121413137616400225630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * auth.h * Definitions for network authentication routines * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/auth.h * *------------------------------------------------------------------------- */ #ifndef AUTH_H #define AUTH_H #include "libpq/libpq-be.h" extern char *pg_krb_server_keyfile; extern bool pg_krb_caseins_users; extern char *pg_krb_realm; extern void ClientAuthentication(Port *port); /* Hook for plugins to get control in ClientAuthentication() */ typedef void (*ClientAuthentication_hook_type) (Port *, int); extern PGDLLIMPORT ClientAuthentication_hook_type ClientAuthentication_hook; #endif /* AUTH_H */ libpg_query-13-2.1.0/src/postgres/include/libpq/crypt.h000066400000000000000000000027331413137616400227710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * crypt.h * Interface to libpq/crypt.c * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/crypt.h * *------------------------------------------------------------------------- */ #ifndef PG_CRYPT_H #define PG_CRYPT_H #include "datatype/timestamp.h" /* * Types of password hashes or secrets. * * Plaintext passwords can be passed in by the user, in a CREATE/ALTER USER * command. They will be encrypted to MD5 or SCRAM-SHA-256 format, before * storing on-disk, so only MD5 and SCRAM-SHA-256 passwords should appear * in pg_authid.rolpassword. They are also the allowed values for the * password_encryption GUC. */ typedef enum PasswordType { PASSWORD_TYPE_PLAINTEXT = 0, PASSWORD_TYPE_MD5, PASSWORD_TYPE_SCRAM_SHA_256 } PasswordType; extern PasswordType get_password_type(const char *shadow_pass); extern char *encrypt_password(PasswordType target_type, const char *role, const char *password); extern char *get_role_password(const char *role, char **logdetail); extern int md5_crypt_verify(const char *role, const char *shadow_pass, const char *client_pass, const char *md5_salt, int md5_salt_len, char **logdetail); extern int plain_crypt_verify(const char *role, const char *shadow_pass, const char *client_pass, char **logdetail); #endif libpg_query-13-2.1.0/src/postgres/include/libpq/hba.h000066400000000000000000000053351413137616400223630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * hba.h * Interface to hba.c * * * src/include/libpq/hba.h * *------------------------------------------------------------------------- */ #ifndef HBA_H #define HBA_H #include "libpq/pqcomm.h" /* pgrminclude ignore */ /* needed for NetBSD */ #include "nodes/pg_list.h" #include "regex/regex.h" /* * The following enum represents the authentication methods that * are supported by PostgreSQL. * * Note: keep this in sync with the UserAuthName array in hba.c. */ typedef enum UserAuth { uaReject, uaImplicitReject, /* Not a user-visible option */ uaTrust, uaIdent, uaPassword, uaMD5, uaSCRAM, uaGSS, uaSSPI, uaPAM, uaBSD, uaLDAP, uaCert, uaRADIUS, uaPeer #define USER_AUTH_LAST uaPeer /* Must be last value of this enum */ } UserAuth; /* * Data structures representing pg_hba.conf entries */ typedef enum IPCompareMethod { ipCmpMask, ipCmpSameHost, ipCmpSameNet, ipCmpAll } IPCompareMethod; typedef enum ConnType { ctLocal, ctHost, ctHostSSL, ctHostNoSSL, ctHostGSS, ctHostNoGSS, } ConnType; typedef enum ClientCertMode { clientCertOff, clientCertCA, clientCertFull } ClientCertMode; typedef struct HbaLine { int linenumber; char *rawline; ConnType conntype; List *databases; List *roles; struct sockaddr_storage addr; struct sockaddr_storage mask; IPCompareMethod ip_cmp_method; char *hostname; UserAuth auth_method; char *usermap; char *pamservice; bool pam_use_hostname; bool ldaptls; char *ldapscheme; char *ldapserver; int ldapport; char *ldapbinddn; char *ldapbindpasswd; char *ldapsearchattribute; char *ldapsearchfilter; char *ldapbasedn; int ldapscope; char *ldapprefix; char *ldapsuffix; ClientCertMode clientcert; char *krb_realm; bool include_realm; bool compat_realm; bool upn_username; List *radiusservers; char *radiusservers_s; List *radiussecrets; char *radiussecrets_s; List *radiusidentifiers; char *radiusidentifiers_s; List *radiusports; char *radiusports_s; int addrlen; /* zero if we don't have a valid addr */ int masklen; /* zero if we don't have a valid mask */ } HbaLine; typedef struct IdentLine { int linenumber; char *usermap; char *ident_user; char *pg_role; regex_t re; } IdentLine; /* kluge to avoid including libpq/libpq-be.h here */ typedef struct Port hbaPort; extern bool load_hba(void); extern bool load_ident(void); extern void hba_getauthmethod(hbaPort *port); extern int check_usermap(const char *usermap_name, const char *pg_role, const char *auth_user, bool case_sensitive); extern bool pg_isblank(const char c); #endif /* HBA_H */ libpg_query-13-2.1.0/src/postgres/include/libpq/libpq-be.h000066400000000000000000000240721413137616400233230ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * libpq-be.h * This file contains definitions for structures and externs used * by the postmaster during client authentication. * * Note that this is backend-internal and is NOT exported to clients. * Structs that need to be client-visible are in pqcomm.h. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/libpq-be.h * *------------------------------------------------------------------------- */ #ifndef LIBPQ_BE_H #define LIBPQ_BE_H #include #ifdef USE_OPENSSL #include #include #endif #ifdef HAVE_NETINET_TCP_H #include #endif #ifdef ENABLE_GSS #if defined(HAVE_GSSAPI_H) #include #else #include #endif /* HAVE_GSSAPI_H */ /* * GSSAPI brings in headers that set a lot of things in the global namespace on win32, * that doesn't match the msvc build. It gives a bunch of compiler warnings that we ignore, * but also defines a symbol that simply does not exist. Undefine it again. */ #ifdef _MSC_VER #undef HAVE_GETADDRINFO #endif #endif /* ENABLE_GSS */ #ifdef ENABLE_SSPI #define SECURITY_WIN32 #if defined(WIN32) && !defined(_MSC_VER) #include #endif #include #undef SECURITY_WIN32 #ifndef ENABLE_GSS /* * Define a fake structure compatible with GSSAPI on Unix. */ typedef struct { void *value; int length; } gss_buffer_desc; #endif #endif /* ENABLE_SSPI */ #include "datatype/timestamp.h" #include "libpq/hba.h" #include "libpq/pqcomm.h" typedef enum CAC_state { CAC_OK, CAC_STARTUP, CAC_SHUTDOWN, CAC_RECOVERY, CAC_TOOMANY, CAC_SUPERUSER } CAC_state; /* * GSSAPI specific state information */ #if defined(ENABLE_GSS) | defined(ENABLE_SSPI) typedef struct { gss_buffer_desc outbuf; /* GSSAPI output token buffer */ #ifdef ENABLE_GSS gss_cred_id_t cred; /* GSSAPI connection cred's */ gss_ctx_id_t ctx; /* GSSAPI connection context */ gss_name_t name; /* GSSAPI client name */ char *princ; /* GSSAPI Principal used for auth, NULL if * GSSAPI auth was not used */ bool auth; /* GSSAPI Authentication used */ bool enc; /* GSSAPI encryption in use */ #endif } pg_gssinfo; #endif /* * This is used by the postmaster in its communication with frontends. It * contains all state information needed during this communication before the * backend is run. The Port structure is kept in malloc'd memory and is * still available when a backend is running (see MyProcPort). The data * it points to must also be malloc'd, or else palloc'd in TopMemoryContext, * so that it survives into PostgresMain execution! * * remote_hostname is set if we did a successful reverse lookup of the * client's IP address during connection setup. * remote_hostname_resolv tracks the state of hostname verification: * +1 = remote_hostname is known to resolve to client's IP address * -1 = remote_hostname is known NOT to resolve to client's IP address * 0 = we have not done the forward DNS lookup yet * -2 = there was an error in name resolution * If reverse lookup of the client IP address fails, remote_hostname will be * left NULL while remote_hostname_resolv is set to -2. If reverse lookup * succeeds but forward lookup fails, remote_hostname_resolv is also set to -2 * (the case is distinguishable because remote_hostname isn't NULL). In * either of the -2 cases, remote_hostname_errcode saves the lookup return * code for possible later use with gai_strerror. */ typedef struct Port { pgsocket sock; /* File descriptor */ bool noblock; /* is the socket in non-blocking mode? */ ProtocolVersion proto; /* FE/BE protocol version */ SockAddr laddr; /* local addr (postmaster) */ SockAddr raddr; /* remote addr (client) */ char *remote_host; /* name (or ip addr) of remote host */ char *remote_hostname; /* name (not ip addr) of remote host, if * available */ int remote_hostname_resolv; /* see above */ int remote_hostname_errcode; /* see above */ char *remote_port; /* text rep of remote port */ CAC_state canAcceptConnections; /* postmaster connection status */ /* * Information that needs to be saved from the startup packet and passed * into backend execution. "char *" fields are NULL if not set. * guc_options points to a List of alternating option names and values. */ char *database_name; char *user_name; char *cmdline_options; List *guc_options; /* * The startup packet application name, only used here for the "connection * authorized" log message. We shouldn't use this post-startup, instead * the GUC should be used as application can change it afterward. */ char *application_name; /* * Information that needs to be held during the authentication cycle. */ HbaLine *hba; /* * TCP keepalive and user timeout settings. * * default values are 0 if AF_UNIX or not yet known; current values are 0 * if AF_UNIX or using the default. Also, -1 in a default value means we * were unable to find out the default (getsockopt failed). */ int default_keepalives_idle; int default_keepalives_interval; int default_keepalives_count; int default_tcp_user_timeout; int keepalives_idle; int keepalives_interval; int keepalives_count; int tcp_user_timeout; /* * GSSAPI structures. */ #if defined(ENABLE_GSS) || defined(ENABLE_SSPI) /* * If GSSAPI is supported and used on this connection, store GSSAPI * information. Even when GSSAPI is not compiled in, store a NULL pointer * to keep struct offsets the same (for extension ABI compatibility). */ pg_gssinfo *gss; #else void *gss; #endif /* * SSL structures. */ bool ssl_in_use; char *peer_cn; bool peer_cert_valid; /* * OpenSSL structures. (Keep these last so that the locations of other * fields are the same whether or not you build with OpenSSL.) */ #ifdef USE_OPENSSL SSL *ssl; X509 *peer; #endif } Port; #ifdef USE_SSL /* * Hardcoded DH parameters, used in ephemeral DH keying. (See also * README.SSL for more details on EDH.) * * This is the 2048-bit DH parameter from RFC 3526. The generation of the * prime is specified in RFC 2412 Appendix E, which also discusses the * design choice of the generator. Note that when loaded with OpenSSL * this causes DH_check() to fail on DH_NOT_SUITABLE_GENERATOR, where * leaking a bit is preferred. */ #define FILE_DH2048 \ "-----BEGIN DH PARAMETERS-----\n\ MIIBCAKCAQEA///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxOb\n\ IlFKCHmONATd75UZs806QxswKwpt8l8UN0/hNW1tUcJF5IW1dmJefsb0TELppjft\n\ awv/XLb0Brft7jhr+1qJn6WunyQRfEsf5kkoZlHs5Fs9wgB8uKFjvwWY2kg2HFXT\n\ mmkWP6j9JM9fg2VdI9yjrZYcYvNWIIVSu57VKQdwlpZtZww1Tkq8mATxdGwIyhgh\n\ fDKQXkYuNs474553LBgOhgObJ4Oi7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq\n\ 5RXSJhiY+gUQFXKOWoqsqmj//////////wIBAg==\n\ -----END DH PARAMETERS-----\n" /* * These functions are implemented by the glue code specific to each * SSL implementation (e.g. be-secure-openssl.c) */ /* * Initialize global SSL context. * * If isServerStart is true, report any errors as FATAL (so we don't return). * Otherwise, log errors at LOG level and return -1 to indicate trouble, * preserving the old SSL state if any. Returns 0 if OK. */ extern int be_tls_init(bool isServerStart); /* * Destroy global SSL context, if any. */ extern void be_tls_destroy(void); /* * Attempt to negotiate SSL connection. */ extern int be_tls_open_server(Port *port); /* * Close SSL connection. */ extern void be_tls_close(Port *port); /* * Read data from a secure connection. */ extern ssize_t be_tls_read(Port *port, void *ptr, size_t len, int *waitfor); /* * Write data to a secure connection. */ extern ssize_t be_tls_write(Port *port, void *ptr, size_t len, int *waitfor); /* * Return information about the SSL connection. */ extern int be_tls_get_cipher_bits(Port *port); extern bool be_tls_get_compression(Port *port); extern const char *be_tls_get_version(Port *port); extern const char *be_tls_get_cipher(Port *port); extern void be_tls_get_peer_subject_name(Port *port, char *ptr, size_t len); extern void be_tls_get_peer_issuer_name(Port *port, char *ptr, size_t len); extern void be_tls_get_peer_serial(Port *port, char *ptr, size_t len); /* * Get the server certificate hash for SCRAM channel binding type * tls-server-end-point. * * The result is a palloc'd hash of the server certificate with its * size, and NULL if there is no certificate available. * * This is not supported with old versions of OpenSSL that don't have * the X509_get_signature_nid() function. */ #if defined(USE_OPENSSL) && defined(HAVE_X509_GET_SIGNATURE_NID) #define HAVE_BE_TLS_GET_CERTIFICATE_HASH extern char *be_tls_get_certificate_hash(Port *port, size_t *len); #endif /* init hook for SSL, the default sets the password callback if appropriate */ #ifdef USE_OPENSSL typedef void (*openssl_tls_init_hook_typ) (SSL_CTX *context, bool isServerStart); extern PGDLLIMPORT openssl_tls_init_hook_typ openssl_tls_init_hook; #endif #endif /* USE_SSL */ #ifdef ENABLE_GSS /* * Return information about the GSSAPI authenticated connection */ extern bool be_gssapi_get_auth(Port *port); extern bool be_gssapi_get_enc(Port *port); extern const char *be_gssapi_get_princ(Port *port); /* Read and write to a GSSAPI-encrypted connection. */ extern ssize_t be_gssapi_read(Port *port, void *ptr, size_t len); extern ssize_t be_gssapi_write(Port *port, void *ptr, size_t len); #endif /* ENABLE_GSS */ extern ProtocolVersion FrontendProtocol; /* TCP keepalives configuration. These are no-ops on an AF_UNIX socket. */ extern int pq_getkeepalivesidle(Port *port); extern int pq_getkeepalivesinterval(Port *port); extern int pq_getkeepalivescount(Port *port); extern int pq_gettcpusertimeout(Port *port); extern int pq_setkeepalivesidle(int idle, Port *port); extern int pq_setkeepalivesinterval(int interval, Port *port); extern int pq_setkeepalivescount(int count, Port *port); extern int pq_settcpusertimeout(int timeout, Port *port); #endif /* LIBPQ_BE_H */ libpg_query-13-2.1.0/src/postgres/include/libpq/libpq.h000066400000000000000000000077011413137616400227370ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * libpq.h * POSTGRES LIBPQ buffer structure definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/libpq.h * *------------------------------------------------------------------------- */ #ifndef LIBPQ_H #define LIBPQ_H #include #include "lib/stringinfo.h" #include "libpq/libpq-be.h" #include "storage/latch.h" typedef struct { void (*comm_reset) (void); int (*flush) (void); int (*flush_if_writable) (void); bool (*is_send_pending) (void); int (*putmessage) (char msgtype, const char *s, size_t len); void (*putmessage_noblock) (char msgtype, const char *s, size_t len); void (*startcopyout) (void); void (*endcopyout) (bool errorAbort); } PQcommMethods; extern const PGDLLIMPORT PQcommMethods *PqCommMethods; #define pq_comm_reset() (PqCommMethods->comm_reset()) #define pq_flush() (PqCommMethods->flush()) #define pq_flush_if_writable() (PqCommMethods->flush_if_writable()) #define pq_is_send_pending() (PqCommMethods->is_send_pending()) #define pq_putmessage(msgtype, s, len) \ (PqCommMethods->putmessage(msgtype, s, len)) #define pq_putmessage_noblock(msgtype, s, len) \ (PqCommMethods->putmessage_noblock(msgtype, s, len)) #define pq_startcopyout() (PqCommMethods->startcopyout()) #define pq_endcopyout(errorAbort) (PqCommMethods->endcopyout(errorAbort)) /* * External functions. */ /* * prototypes for functions in pqcomm.c */ extern WaitEventSet *FeBeWaitSet; extern int StreamServerPort(int family, const char *hostName, unsigned short portNumber, const char *unixSocketDir, pgsocket ListenSocket[], int MaxListen); extern int StreamConnection(pgsocket server_fd, Port *port); extern void StreamClose(pgsocket sock); extern void TouchSocketFiles(void); extern void RemoveSocketFiles(void); extern void pq_init(void); extern int pq_getbytes(char *s, size_t len); extern int pq_getstring(StringInfo s); extern void pq_startmsgread(void); extern void pq_endmsgread(void); extern bool pq_is_reading_msg(void); extern int pq_getmessage(StringInfo s, int maxlen); extern int pq_getbyte(void); extern int pq_peekbyte(void); extern int pq_getbyte_if_available(unsigned char *c); extern int pq_putbytes(const char *s, size_t len); /* * prototypes for functions in be-secure.c */ extern char *ssl_library; extern char *ssl_cert_file; extern char *ssl_key_file; extern char *ssl_ca_file; extern char *ssl_crl_file; extern char *ssl_dh_params_file; extern PGDLLIMPORT char *ssl_passphrase_command; extern PGDLLIMPORT bool ssl_passphrase_command_supports_reload; #ifdef USE_SSL extern bool ssl_loaded_verify_locations; #endif extern int secure_initialize(bool isServerStart); extern bool secure_loaded_verify_locations(void); extern void secure_destroy(void); extern int secure_open_server(Port *port); extern void secure_close(Port *port); extern ssize_t secure_read(Port *port, void *ptr, size_t len); extern ssize_t secure_write(Port *port, void *ptr, size_t len); extern ssize_t secure_raw_read(Port *port, void *ptr, size_t len); extern ssize_t secure_raw_write(Port *port, const void *ptr, size_t len); /* * prototypes for functions in be-secure-gssapi.c */ #ifdef ENABLE_GSS extern ssize_t secure_open_gssapi(Port *port); #endif /* GUCs */ extern char *SSLCipherSuites; extern char *SSLECDHCurve; extern bool SSLPreferServerCiphers; extern int ssl_min_protocol_version; extern int ssl_max_protocol_version; enum ssl_protocol_versions { PG_TLS_ANY = 0, PG_TLS1_VERSION, PG_TLS1_1_VERSION, PG_TLS1_2_VERSION, PG_TLS1_3_VERSION, }; /* * prototypes for functions in be-secure-common.c */ extern int run_ssl_passphrase_command(const char *prompt, bool is_server_start, char *buf, int size); extern bool check_ssl_key_file_permissions(const char *ssl_key_file, bool isServerStart); #endif /* LIBPQ_H */ libpg_query-13-2.1.0/src/postgres/include/libpq/pqcomm.h000066400000000000000000000150171413137616400231230ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pqcomm.h * Definitions common to frontends and backends. * * NOTE: for historical reasons, this does not correspond to pqcomm.c. * pqcomm.c's routines are declared in libpq.h. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/pqcomm.h * *------------------------------------------------------------------------- */ #ifndef PQCOMM_H #define PQCOMM_H #include #include #ifdef HAVE_SYS_UN_H #include #endif #include #ifdef HAVE_STRUCT_SOCKADDR_STORAGE #ifndef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY #ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY #define ss_family __ss_family #else #error struct sockaddr_storage does not provide an ss_family member #endif #endif #ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN #define ss_len __ss_len #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1 #endif #else /* !HAVE_STRUCT_SOCKADDR_STORAGE */ /* Define a struct sockaddr_storage if we don't have one. */ struct sockaddr_storage { union { struct sockaddr sa; /* get the system-dependent fields */ int64 ss_align; /* ensures struct is properly aligned */ char ss_pad[128]; /* ensures struct has desired size */ } ss_stuff; }; #define ss_family ss_stuff.sa.sa_family /* It should have an ss_len field if sockaddr has sa_len. */ #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN #define ss_len ss_stuff.sa.sa_len #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1 #endif #endif /* HAVE_STRUCT_SOCKADDR_STORAGE */ typedef struct { struct sockaddr_storage addr; ACCEPT_TYPE_ARG3 salen; } SockAddr; /* Configure the UNIX socket location for the well known port. */ #define UNIXSOCK_PATH(path, port, sockdir) \ (AssertMacro(sockdir), \ AssertMacro(*(sockdir) != '\0'), \ snprintf(path, sizeof(path), "%s/.s.PGSQL.%d", \ (sockdir), (port))) /* * The maximum workable length of a socket path is what will fit into * struct sockaddr_un. This is usually only 100 or so bytes :-(. * * For consistency, always pass a MAXPGPATH-sized buffer to UNIXSOCK_PATH(), * then complain if the resulting string is >= UNIXSOCK_PATH_BUFLEN bytes. * (Because the standard API for getaddrinfo doesn't allow it to complain in * a useful way when the socket pathname is too long, we have to test for * this explicitly, instead of just letting the subroutine return an error.) */ #define UNIXSOCK_PATH_BUFLEN sizeof(((struct sockaddr_un *) NULL)->sun_path) /* * These manipulate the frontend/backend protocol version number. * * The major number should be incremented for incompatible changes. The minor * number should be incremented for compatible changes (eg. additional * functionality). * * If a backend supports version m.n of the protocol it must actually support * versions m.[0..n]. Backend support for version m-1 can be dropped after a * `reasonable' length of time. * * A frontend isn't required to support anything other than the current * version. */ #define PG_PROTOCOL_MAJOR(v) ((v) >> 16) #define PG_PROTOCOL_MINOR(v) ((v) & 0x0000ffff) #define PG_PROTOCOL(m,n) (((m) << 16) | (n)) /* The earliest and latest frontend/backend protocol version supported. */ #define PG_PROTOCOL_EARLIEST PG_PROTOCOL(2,0) #define PG_PROTOCOL_LATEST PG_PROTOCOL(3,0) typedef uint32 ProtocolVersion; /* FE/BE protocol version number */ typedef ProtocolVersion MsgType; /* * Packet lengths are 4 bytes in network byte order. * * The initial length is omitted from the packet layouts appearing below. */ typedef uint32 PacketLen; /* * Old-style startup packet layout with fixed-width fields. This is used in * protocol 1.0 and 2.0, but not in later versions. Note that the fields * in this layout are '\0' terminated only if there is room. */ #define SM_DATABASE 64 #define SM_USER 32 /* We append database name if db_user_namespace true. */ #define SM_DATABASE_USER (SM_DATABASE+SM_USER+1) /* +1 for @ */ #define SM_OPTIONS 64 #define SM_UNUSED 64 #define SM_TTY 64 typedef struct StartupPacket { ProtocolVersion protoVersion; /* Protocol version */ char database[SM_DATABASE]; /* Database name */ /* Db_user_namespace appends dbname */ char user[SM_USER]; /* User name */ char options[SM_OPTIONS]; /* Optional additional args */ char unused[SM_UNUSED]; /* Unused */ char tty[SM_TTY]; /* Tty for debug output */ } StartupPacket; extern bool Db_user_namespace; /* * In protocol 3.0 and later, the startup packet length is not fixed, but * we set an arbitrary limit on it anyway. This is just to prevent simple * denial-of-service attacks via sending enough data to run the server * out of memory. */ #define MAX_STARTUP_PACKET_LENGTH 10000 /* These are the authentication request codes sent by the backend. */ #define AUTH_REQ_OK 0 /* User is authenticated */ #define AUTH_REQ_KRB4 1 /* Kerberos V4. Not supported any more. */ #define AUTH_REQ_KRB5 2 /* Kerberos V5. Not supported any more. */ #define AUTH_REQ_PASSWORD 3 /* Password */ #define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */ #define AUTH_REQ_MD5 5 /* md5 password */ #define AUTH_REQ_SCM_CREDS 6 /* transfer SCM credentials */ #define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */ #define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */ #define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */ #define AUTH_REQ_SASL 10 /* Begin SASL authentication */ #define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */ #define AUTH_REQ_SASL_FIN 12 /* Final SASL message */ typedef uint32 AuthRequest; /* * A client can also send a cancel-current-operation request to the postmaster. * This is uglier than sending it directly to the client's backend, but it * avoids depending on out-of-band communication facilities. * * The cancel request code must not match any protocol version number * we're ever likely to use. This random choice should do. */ #define CANCEL_REQUEST_CODE PG_PROTOCOL(1234,5678) typedef struct CancelRequestPacket { /* Note that each field is stored in network byte order! */ MsgType cancelRequestCode; /* code to identify a cancel request */ uint32 backendPID; /* PID of client's backend */ uint32 cancelAuthCode; /* secret key to authorize cancel */ } CancelRequestPacket; /* * A client can also start by sending a SSL or GSSAPI negotiation request to * get a secure channel. */ #define NEGOTIATE_SSL_CODE PG_PROTOCOL(1234,5679) #define NEGOTIATE_GSS_CODE PG_PROTOCOL(1234,5680) #endif /* PQCOMM_H */ libpg_query-13-2.1.0/src/postgres/include/libpq/pqformat.h000066400000000000000000000135201413137616400234550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pqformat.h * Definitions for formatting and parsing frontend/backend messages * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/pqformat.h * *------------------------------------------------------------------------- */ #ifndef PQFORMAT_H #define PQFORMAT_H #include "lib/stringinfo.h" #include "mb/pg_wchar.h" #include "port/pg_bswap.h" extern void pq_beginmessage(StringInfo buf, char msgtype); extern void pq_beginmessage_reuse(StringInfo buf, char msgtype); extern void pq_endmessage(StringInfo buf); extern void pq_endmessage_reuse(StringInfo buf); extern void pq_sendbytes(StringInfo buf, const char *data, int datalen); extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen, bool countincludesself); extern void pq_sendtext(StringInfo buf, const char *str, int slen); extern void pq_sendstring(StringInfo buf, const char *str); extern void pq_send_ascii_string(StringInfo buf, const char *str); extern void pq_sendfloat4(StringInfo buf, float4 f); extern void pq_sendfloat8(StringInfo buf, float8 f); /* * Append a [u]int8 to a StringInfo buffer, which already has enough space * preallocated. * * The use of pg_restrict allows the compiler to optimize the code based on * the assumption that buf, buf->len, buf->data and *buf->data don't * overlap. Without the annotation buf->len etc cannot be kept in a register * over subsequent pq_writeintN calls. * * The use of StringInfoData * rather than StringInfo is due to MSVC being * overly picky and demanding a * before a restrict. */ static inline void pq_writeint8(StringInfoData *pg_restrict buf, uint8 i) { uint8 ni = i; Assert(buf->len + (int) sizeof(uint8) <= buf->maxlen); memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint8)); buf->len += sizeof(uint8); } /* * Append a [u]int16 to a StringInfo buffer, which already has enough space * preallocated. */ static inline void pq_writeint16(StringInfoData *pg_restrict buf, uint16 i) { uint16 ni = pg_hton16(i); Assert(buf->len + (int) sizeof(uint16) <= buf->maxlen); memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint16)); buf->len += sizeof(uint16); } /* * Append a [u]int32 to a StringInfo buffer, which already has enough space * preallocated. */ static inline void pq_writeint32(StringInfoData *pg_restrict buf, uint32 i) { uint32 ni = pg_hton32(i); Assert(buf->len + (int) sizeof(uint32) <= buf->maxlen); memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint32)); buf->len += sizeof(uint32); } /* * Append a [u]int64 to a StringInfo buffer, which already has enough space * preallocated. */ static inline void pq_writeint64(StringInfoData *pg_restrict buf, uint64 i) { uint64 ni = pg_hton64(i); Assert(buf->len + (int) sizeof(uint64) <= buf->maxlen); memcpy((char *pg_restrict) (buf->data + buf->len), &ni, sizeof(uint64)); buf->len += sizeof(uint64); } /* * Append a null-terminated text string (with conversion) to a buffer with * preallocated space. * * NB: The pre-allocated space needs to be sufficient for the string after * converting to client encoding. * * NB: passed text string must be null-terminated, and so is the data * sent to the frontend. */ static inline void pq_writestring(StringInfoData *pg_restrict buf, const char *pg_restrict str) { int slen = strlen(str); char *p; p = pg_server_to_client(str, slen); if (p != str) /* actual conversion has been done? */ slen = strlen(p); Assert(buf->len + slen + 1 <= buf->maxlen); memcpy(((char *pg_restrict) buf->data + buf->len), p, slen + 1); buf->len += slen + 1; if (p != str) pfree(p); } /* append a binary [u]int8 to a StringInfo buffer */ static inline void pq_sendint8(StringInfo buf, uint8 i) { enlargeStringInfo(buf, sizeof(uint8)); pq_writeint8(buf, i); } /* append a binary [u]int16 to a StringInfo buffer */ static inline void pq_sendint16(StringInfo buf, uint16 i) { enlargeStringInfo(buf, sizeof(uint16)); pq_writeint16(buf, i); } /* append a binary [u]int32 to a StringInfo buffer */ static inline void pq_sendint32(StringInfo buf, uint32 i) { enlargeStringInfo(buf, sizeof(uint32)); pq_writeint32(buf, i); } /* append a binary [u]int64 to a StringInfo buffer */ static inline void pq_sendint64(StringInfo buf, uint64 i) { enlargeStringInfo(buf, sizeof(uint64)); pq_writeint64(buf, i); } /* append a binary byte to a StringInfo buffer */ static inline void pq_sendbyte(StringInfo buf, uint8 byt) { pq_sendint8(buf, byt); } /* * Append a binary integer to a StringInfo buffer * * This function is deprecated; prefer use of the functions above. */ static inline void pq_sendint(StringInfo buf, uint32 i, int b) { switch (b) { case 1: pq_sendint8(buf, (uint8) i); break; case 2: pq_sendint16(buf, (uint16) i); break; case 4: pq_sendint32(buf, (uint32) i); break; default: elog(ERROR, "unsupported integer size %d", b); break; } } extern void pq_begintypsend(StringInfo buf); extern bytea *pq_endtypsend(StringInfo buf); extern void pq_puttextmessage(char msgtype, const char *str); extern void pq_putemptymessage(char msgtype); extern int pq_getmsgbyte(StringInfo msg); extern unsigned int pq_getmsgint(StringInfo msg, int b); extern int64 pq_getmsgint64(StringInfo msg); extern float4 pq_getmsgfloat4(StringInfo msg); extern float8 pq_getmsgfloat8(StringInfo msg); extern const char *pq_getmsgbytes(StringInfo msg, int datalen); extern void pq_copymsgbytes(StringInfo msg, char *buf, int datalen); extern char *pq_getmsgtext(StringInfo msg, int rawbytes, int *nbytes); extern const char *pq_getmsgstring(StringInfo msg); extern const char *pq_getmsgrawstring(StringInfo msg); extern void pq_getmsgend(StringInfo msg); #endif /* PQFORMAT_H */ libpg_query-13-2.1.0/src/postgres/include/libpq/pqsignal.h000066400000000000000000000022261413137616400234430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pqsignal.h * Backend signal(2) support (see also src/port/pqsignal.c) * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/libpq/pqsignal.h * *------------------------------------------------------------------------- */ #ifndef PQSIGNAL_H #define PQSIGNAL_H #include #ifndef WIN32 #define PG_SETMASK(mask) sigprocmask(SIG_SETMASK, mask, NULL) #else /* Emulate POSIX sigset_t APIs on Windows */ typedef int sigset_t; extern int pqsigsetmask(int mask); #define PG_SETMASK(mask) pqsigsetmask(*(mask)) #define sigemptyset(set) (*(set) = 0) #define sigfillset(set) (*(set) = ~0) #define sigaddset(set, signum) (*(set) |= (sigmask(signum))) #define sigdelset(set, signum) (*(set) &= ~(sigmask(signum))) #endif /* WIN32 */ extern sigset_t UnBlockSig, BlockSig, StartupBlockSig; extern void pqinitmask(void); /* pqsigfunc is declared in src/include/port.h */ extern pqsigfunc pqsignal_pm(int signo, pqsigfunc func); #endif /* PQSIGNAL_H */ libpg_query-13-2.1.0/src/postgres/include/mb/000077500000000000000000000000001413137616400207415ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/mb/pg_wchar.h000066400000000000000000000616171413137616400227170ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_wchar.h * multibyte-character support * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/mb/pg_wchar.h * * NOTES * This is used both by the backend and by frontends, but should not be * included by libpq client programs. In particular, a libpq client * should not assume that the encoding IDs used by the version of libpq * it's linked to match up with the IDs declared here. * *------------------------------------------------------------------------- */ #ifndef PG_WCHAR_H #define PG_WCHAR_H /* * The pg_wchar type */ typedef unsigned int pg_wchar; /* * Maximum byte length of multibyte characters in any backend encoding */ #define MAX_MULTIBYTE_CHAR_LEN 4 /* * various definitions for EUC */ #define SS2 0x8e /* single shift 2 (JIS0201) */ #define SS3 0x8f /* single shift 3 (JIS0212) */ /* * SJIS validation macros */ #define ISSJISHEAD(c) (((c) >= 0x81 && (c) <= 0x9f) || ((c) >= 0xe0 && (c) <= 0xfc)) #define ISSJISTAIL(c) (((c) >= 0x40 && (c) <= 0x7e) || ((c) >= 0x80 && (c) <= 0xfc)) /*---------------------------------------------------- * MULE Internal Encoding (MIC) * * This encoding follows the design used within XEmacs; it is meant to * subsume many externally-defined character sets. Each character includes * identification of the character set it belongs to, so the encoding is * general but somewhat bulky. * * Currently PostgreSQL supports 5 types of MULE character sets: * * 1) 1-byte ASCII characters. Each byte is below 0x80. * * 2) "Official" single byte charsets such as ISO-8859-1 (Latin1). * Each MULE character consists of 2 bytes: LC1 + C1, where LC1 is * an identifier for the charset (in the range 0x81 to 0x8d) and C1 * is the character code (in the range 0xa0 to 0xff). * * 3) "Private" single byte charsets such as SISHENG. Each MULE * character consists of 3 bytes: LCPRV1 + LC12 + C1, where LCPRV1 * is a private-charset flag, LC12 is an identifier for the charset, * and C1 is the character code (in the range 0xa0 to 0xff). * LCPRV1 is either 0x9a (if LC12 is in the range 0xa0 to 0xdf) * or 0x9b (if LC12 is in the range 0xe0 to 0xef). * * 4) "Official" multibyte charsets such as JIS X0208. Each MULE * character consists of 3 bytes: LC2 + C1 + C2, where LC2 is * an identifier for the charset (in the range 0x90 to 0x99) and C1 * and C2 form the character code (each in the range 0xa0 to 0xff). * * 5) "Private" multibyte charsets such as CNS 11643-1992 Plane 3. * Each MULE character consists of 4 bytes: LCPRV2 + LC22 + C1 + C2, * where LCPRV2 is a private-charset flag, LC22 is an identifier for * the charset, and C1 and C2 form the character code (each in the range * 0xa0 to 0xff). LCPRV2 is either 0x9c (if LC22 is in the range 0xf0 * to 0xf4) or 0x9d (if LC22 is in the range 0xf5 to 0xfe). * * "Official" encodings are those that have been assigned code numbers by * the XEmacs project; "private" encodings have Postgres-specific charset * identifiers. * * See the "XEmacs Internals Manual", available at http://www.xemacs.org, * for more details. Note that for historical reasons, Postgres' * private-charset flag values do not match what XEmacs says they should be, * so this isn't really exactly MULE (not that private charsets would be * interoperable anyway). * * Note that XEmacs's implementation is different from what emacs does. * We follow emacs's implementation, rather than XEmacs's. *---------------------------------------------------- */ /* * Charset identifiers (also called "leading bytes" in the MULE documentation) */ /* * Charset IDs for official single byte encodings (0x81-0x8e) */ #define LC_ISO8859_1 0x81 /* ISO8859 Latin 1 */ #define LC_ISO8859_2 0x82 /* ISO8859 Latin 2 */ #define LC_ISO8859_3 0x83 /* ISO8859 Latin 3 */ #define LC_ISO8859_4 0x84 /* ISO8859 Latin 4 */ #define LC_TIS620 0x85 /* Thai (not supported yet) */ #define LC_ISO8859_7 0x86 /* Greek (not supported yet) */ #define LC_ISO8859_6 0x87 /* Arabic (not supported yet) */ #define LC_ISO8859_8 0x88 /* Hebrew (not supported yet) */ #define LC_JISX0201K 0x89 /* Japanese 1 byte kana */ #define LC_JISX0201R 0x8a /* Japanese 1 byte Roman */ /* Note that 0x8b seems to be unused as of Emacs 20.7. * However, there might be a chance that 0x8b could be used * in later versions of Emacs. */ #define LC_KOI8_R 0x8b /* Cyrillic KOI8-R */ #define LC_ISO8859_5 0x8c /* ISO8859 Cyrillic */ #define LC_ISO8859_9 0x8d /* ISO8859 Latin 5 (not supported yet) */ #define LC_ISO8859_15 0x8e /* ISO8859 Latin 15 (not supported yet) */ /* #define CONTROL_1 0x8f control characters (unused) */ /* Is a leading byte for "official" single byte encodings? */ #define IS_LC1(c) ((unsigned char)(c) >= 0x81 && (unsigned char)(c) <= 0x8d) /* * Charset IDs for official multibyte encodings (0x90-0x99) * 0x9a-0x9d are free. 0x9e and 0x9f are reserved. */ #define LC_JISX0208_1978 0x90 /* Japanese Kanji, old JIS (not supported) */ #define LC_GB2312_80 0x91 /* Chinese */ #define LC_JISX0208 0x92 /* Japanese Kanji (JIS X 0208) */ #define LC_KS5601 0x93 /* Korean */ #define LC_JISX0212 0x94 /* Japanese Kanji (JIS X 0212) */ #define LC_CNS11643_1 0x95 /* CNS 11643-1992 Plane 1 */ #define LC_CNS11643_2 0x96 /* CNS 11643-1992 Plane 2 */ #define LC_JISX0213_1 0x97 /* Japanese Kanji (JIS X 0213 Plane 1) * (not supported) */ #define LC_BIG5_1 0x98 /* Plane 1 Chinese traditional (not * supported) */ #define LC_BIG5_2 0x99 /* Plane 1 Chinese traditional (not * supported) */ /* Is a leading byte for "official" multibyte encodings? */ #define IS_LC2(c) ((unsigned char)(c) >= 0x90 && (unsigned char)(c) <= 0x99) /* * Postgres-specific prefix bytes for "private" single byte encodings * (According to the MULE docs, we should be using 0x9e for this) */ #define LCPRV1_A 0x9a #define LCPRV1_B 0x9b #define IS_LCPRV1(c) ((unsigned char)(c) == LCPRV1_A || (unsigned char)(c) == LCPRV1_B) #define IS_LCPRV1_A_RANGE(c) \ ((unsigned char)(c) >= 0xa0 && (unsigned char)(c) <= 0xdf) #define IS_LCPRV1_B_RANGE(c) \ ((unsigned char)(c) >= 0xe0 && (unsigned char)(c) <= 0xef) /* * Postgres-specific prefix bytes for "private" multibyte encodings * (According to the MULE docs, we should be using 0x9f for this) */ #define LCPRV2_A 0x9c #define LCPRV2_B 0x9d #define IS_LCPRV2(c) ((unsigned char)(c) == LCPRV2_A || (unsigned char)(c) == LCPRV2_B) #define IS_LCPRV2_A_RANGE(c) \ ((unsigned char)(c) >= 0xf0 && (unsigned char)(c) <= 0xf4) #define IS_LCPRV2_B_RANGE(c) \ ((unsigned char)(c) >= 0xf5 && (unsigned char)(c) <= 0xfe) /* * Charset IDs for private single byte encodings (0xa0-0xef) */ #define LC_SISHENG 0xa0 /* Chinese SiSheng characters for * PinYin/ZhuYin (not supported) */ #define LC_IPA 0xa1 /* IPA (International Phonetic * Association) (not supported) */ #define LC_VISCII_LOWER 0xa2 /* Vietnamese VISCII1.1 lower-case (not * supported) */ #define LC_VISCII_UPPER 0xa3 /* Vietnamese VISCII1.1 upper-case (not * supported) */ #define LC_ARABIC_DIGIT 0xa4 /* Arabic digit (not supported) */ #define LC_ARABIC_1_COLUMN 0xa5 /* Arabic 1-column (not supported) */ #define LC_ASCII_RIGHT_TO_LEFT 0xa6 /* ASCII (left half of ISO8859-1) with * right-to-left direction (not * supported) */ #define LC_LAO 0xa7 /* Lao characters (ISO10646 0E80..0EDF) * (not supported) */ #define LC_ARABIC_2_COLUMN 0xa8 /* Arabic 1-column (not supported) */ /* * Charset IDs for private multibyte encodings (0xf0-0xff) */ #define LC_INDIAN_1_COLUMN 0xf0 /* Indian charset for 1-column width * glyphs (not supported) */ #define LC_TIBETAN_1_COLUMN 0xf1 /* Tibetan 1-column width glyphs (not * supported) */ #define LC_UNICODE_SUBSET_2 0xf2 /* Unicode characters of the range * U+2500..U+33FF. (not supported) */ #define LC_UNICODE_SUBSET_3 0xf3 /* Unicode characters of the range * U+E000..U+FFFF. (not supported) */ #define LC_UNICODE_SUBSET 0xf4 /* Unicode characters of the range * U+0100..U+24FF. (not supported) */ #define LC_ETHIOPIC 0xf5 /* Ethiopic characters (not supported) */ #define LC_CNS11643_3 0xf6 /* CNS 11643-1992 Plane 3 */ #define LC_CNS11643_4 0xf7 /* CNS 11643-1992 Plane 4 */ #define LC_CNS11643_5 0xf8 /* CNS 11643-1992 Plane 5 */ #define LC_CNS11643_6 0xf9 /* CNS 11643-1992 Plane 6 */ #define LC_CNS11643_7 0xfa /* CNS 11643-1992 Plane 7 */ #define LC_INDIAN_2_COLUMN 0xfb /* Indian charset for 2-column width * glyphs (not supported) */ #define LC_TIBETAN 0xfc /* Tibetan (not supported) */ /* #define FREE 0xfd free (unused) */ /* #define FREE 0xfe free (unused) */ /* #define FREE 0xff free (unused) */ /*---------------------------------------------------- * end of MULE stuff *---------------------------------------------------- */ /* * PostgreSQL encoding identifiers * * WARNING: the order of this enum must be same as order of entries * in the pg_enc2name_tbl[] array (in src/common/encnames.c), and * in the pg_wchar_table[] array (in src/common/wchar.c)! * * If you add some encoding don't forget to check * PG_ENCODING_BE_LAST macro. * * PG_SQL_ASCII is default encoding and must be = 0. * * XXX We must avoid renumbering any backend encoding until libpq's major * version number is increased beyond 5; it turns out that the backend * encoding IDs are effectively part of libpq's ABI as far as 8.2 initdb and * psql are concerned. */ typedef enum pg_enc { PG_SQL_ASCII = 0, /* SQL/ASCII */ PG_EUC_JP, /* EUC for Japanese */ PG_EUC_CN, /* EUC for Chinese */ PG_EUC_KR, /* EUC for Korean */ PG_EUC_TW, /* EUC for Taiwan */ PG_EUC_JIS_2004, /* EUC-JIS-2004 */ PG_UTF8, /* Unicode UTF8 */ PG_MULE_INTERNAL, /* Mule internal code */ PG_LATIN1, /* ISO-8859-1 Latin 1 */ PG_LATIN2, /* ISO-8859-2 Latin 2 */ PG_LATIN3, /* ISO-8859-3 Latin 3 */ PG_LATIN4, /* ISO-8859-4 Latin 4 */ PG_LATIN5, /* ISO-8859-9 Latin 5 */ PG_LATIN6, /* ISO-8859-10 Latin6 */ PG_LATIN7, /* ISO-8859-13 Latin7 */ PG_LATIN8, /* ISO-8859-14 Latin8 */ PG_LATIN9, /* ISO-8859-15 Latin9 */ PG_LATIN10, /* ISO-8859-16 Latin10 */ PG_WIN1256, /* windows-1256 */ PG_WIN1258, /* Windows-1258 */ PG_WIN866, /* (MS-DOS CP866) */ PG_WIN874, /* windows-874 */ PG_KOI8R, /* KOI8-R */ PG_WIN1251, /* windows-1251 */ PG_WIN1252, /* windows-1252 */ PG_ISO_8859_5, /* ISO-8859-5 */ PG_ISO_8859_6, /* ISO-8859-6 */ PG_ISO_8859_7, /* ISO-8859-7 */ PG_ISO_8859_8, /* ISO-8859-8 */ PG_WIN1250, /* windows-1250 */ PG_WIN1253, /* windows-1253 */ PG_WIN1254, /* windows-1254 */ PG_WIN1255, /* windows-1255 */ PG_WIN1257, /* windows-1257 */ PG_KOI8U, /* KOI8-U */ /* PG_ENCODING_BE_LAST points to the above entry */ /* followings are for client encoding only */ PG_SJIS, /* Shift JIS (Windows-932) */ PG_BIG5, /* Big5 (Windows-950) */ PG_GBK, /* GBK (Windows-936) */ PG_UHC, /* UHC (Windows-949) */ PG_GB18030, /* GB18030 */ PG_JOHAB, /* EUC for Korean JOHAB */ PG_SHIFT_JIS_2004, /* Shift-JIS-2004 */ _PG_LAST_ENCODING_ /* mark only */ } pg_enc; #define PG_ENCODING_BE_LAST PG_KOI8U /* * Please use these tests before access to pg_enc2name_tbl[] * or to other places... */ #define PG_VALID_BE_ENCODING(_enc) \ ((_enc) >= 0 && (_enc) <= PG_ENCODING_BE_LAST) #define PG_ENCODING_IS_CLIENT_ONLY(_enc) \ ((_enc) > PG_ENCODING_BE_LAST && (_enc) < _PG_LAST_ENCODING_) #define PG_VALID_ENCODING(_enc) \ ((_enc) >= 0 && (_enc) < _PG_LAST_ENCODING_) /* On FE are possible all encodings */ #define PG_VALID_FE_ENCODING(_enc) PG_VALID_ENCODING(_enc) /* * When converting strings between different encodings, we assume that space * for converted result is 4-to-1 growth in the worst case. The rate for * currently supported encoding pairs are within 3 (SJIS JIS X0201 half width * kanna -> UTF8 is the worst case). So "4" should be enough for the moment. * * Note that this is not the same as the maximum character width in any * particular encoding. */ #define MAX_CONVERSION_GROWTH 4 /* * Maximum byte length of the string equivalent to any one Unicode code point, * in any backend encoding. The current value assumes that a 4-byte UTF-8 * character might expand by MAX_CONVERSION_GROWTH, which is a huge * overestimate. But in current usage we don't allocate large multiples of * this, so there's little point in being stingy. */ #define MAX_UNICODE_EQUIVALENT_STRING 16 /* * Table for mapping an encoding number to official encoding name and * possibly other subsidiary data. Be careful to check encoding number * before accessing a table entry! * * if (PG_VALID_ENCODING(encoding)) * pg_enc2name_tbl[ encoding ]; */ typedef struct pg_enc2name { const char *name; pg_enc encoding; #ifdef WIN32 unsigned codepage; /* codepage for WIN32 */ #endif } pg_enc2name; extern const pg_enc2name pg_enc2name_tbl[]; /* * Encoding names for gettext */ typedef struct pg_enc2gettext { pg_enc encoding; const char *name; } pg_enc2gettext; extern const pg_enc2gettext pg_enc2gettext_tbl[]; /* * pg_wchar stuff */ typedef int (*mb2wchar_with_len_converter) (const unsigned char *from, pg_wchar *to, int len); typedef int (*wchar2mb_with_len_converter) (const pg_wchar *from, unsigned char *to, int len); typedef int (*mblen_converter) (const unsigned char *mbstr); typedef int (*mbdisplaylen_converter) (const unsigned char *mbstr); typedef bool (*mbcharacter_incrementer) (unsigned char *mbstr, int len); typedef int (*mbverifier) (const unsigned char *mbstr, int len); typedef struct { mb2wchar_with_len_converter mb2wchar_with_len; /* convert a multibyte * string to a wchar */ wchar2mb_with_len_converter wchar2mb_with_len; /* convert a wchar string * to a multibyte */ mblen_converter mblen; /* get byte length of a char */ mbdisplaylen_converter dsplen; /* get display width of a char */ mbverifier mbverify; /* verify multibyte sequence */ int maxmblen; /* max bytes for a char in this encoding */ } pg_wchar_tbl; extern const pg_wchar_tbl pg_wchar_table[]; /* * Data structures for conversions between UTF-8 and other encodings * (UtfToLocal() and LocalToUtf()). In these data structures, characters of * either encoding are represented by uint32 words; hence we can only support * characters up to 4 bytes long. For example, the byte sequence 0xC2 0x89 * would be represented by 0x0000C289, and 0xE8 0xA2 0xB4 by 0x00E8A2B4. * * There are three possible ways a character can be mapped: * * 1. Using a radix tree, from source to destination code. * 2. Using a sorted array of source -> destination code pairs. This * method is used for "combining" characters. There are so few of * them that building a radix tree would be wasteful. * 3. Using a conversion function. */ /* * Radix tree for character conversion. * * Logically, this is actually four different radix trees, for 1-byte, * 2-byte, 3-byte and 4-byte inputs. The 1-byte tree is a simple lookup * table from source to target code. The 2-byte tree consists of two levels: * one lookup table for the first byte, where the value in the lookup table * points to a lookup table for the second byte. And so on. * * Physically, all the trees are stored in one big array, in 'chars16' or * 'chars32', depending on the maximum value that needs to be represented. For * each level in each tree, we also store lower and upper bound of allowed * values - values outside those bounds are considered invalid, and are left * out of the tables. * * In the intermediate levels of the trees, the values stored are offsets * into the chars[16|32] array. * * In the beginning of the chars[16|32] array, there is always a number of * zeros, so that you safely follow an index from an intermediate table * without explicitly checking for a zero. Following a zero any number of * times will always bring you to the dummy, all-zeros table in the * beginning. This helps to shave some cycles when looking up values. */ typedef struct { /* * Array containing all the values. Only one of chars16 or chars32 is * used, depending on how wide the values we need to represent are. */ const uint16 *chars16; const uint32 *chars32; /* Radix tree for 1-byte inputs */ uint32 b1root; /* offset of table in the chars[16|32] array */ uint8 b1_lower; /* min allowed value for a single byte input */ uint8 b1_upper; /* max allowed value for a single byte input */ /* Radix tree for 2-byte inputs */ uint32 b2root; /* offset of 1st byte's table */ uint8 b2_1_lower; /* min/max allowed value for 1st input byte */ uint8 b2_1_upper; uint8 b2_2_lower; /* min/max allowed value for 2nd input byte */ uint8 b2_2_upper; /* Radix tree for 3-byte inputs */ uint32 b3root; /* offset of 1st byte's table */ uint8 b3_1_lower; /* min/max allowed value for 1st input byte */ uint8 b3_1_upper; uint8 b3_2_lower; /* min/max allowed value for 2nd input byte */ uint8 b3_2_upper; uint8 b3_3_lower; /* min/max allowed value for 3rd input byte */ uint8 b3_3_upper; /* Radix tree for 4-byte inputs */ uint32 b4root; /* offset of 1st byte's table */ uint8 b4_1_lower; /* min/max allowed value for 1st input byte */ uint8 b4_1_upper; uint8 b4_2_lower; /* min/max allowed value for 2nd input byte */ uint8 b4_2_upper; uint8 b4_3_lower; /* min/max allowed value for 3rd input byte */ uint8 b4_3_upper; uint8 b4_4_lower; /* min/max allowed value for 4th input byte */ uint8 b4_4_upper; } pg_mb_radix_tree; /* * UTF-8 to local code conversion map (for combined characters) */ typedef struct { uint32 utf1; /* UTF-8 code 1 */ uint32 utf2; /* UTF-8 code 2 */ uint32 code; /* local code */ } pg_utf_to_local_combined; /* * local code to UTF-8 conversion map (for combined characters) */ typedef struct { uint32 code; /* local code */ uint32 utf1; /* UTF-8 code 1 */ uint32 utf2; /* UTF-8 code 2 */ } pg_local_to_utf_combined; /* * callback function for algorithmic encoding conversions (in either direction) * * if function returns zero, it does not know how to convert the code */ typedef uint32 (*utf_local_conversion_func) (uint32 code); /* * Support macro for encoding conversion functions to validate their * arguments. (This could be made more compact if we included fmgr.h * here, but we don't want to do that because this header file is also * used by frontends.) */ #define CHECK_ENCODING_CONVERSION_ARGS(srcencoding,destencoding) \ check_encoding_conversion_args(PG_GETARG_INT32(0), \ PG_GETARG_INT32(1), \ PG_GETARG_INT32(4), \ (srcencoding), \ (destencoding)) /* * Some handy functions for Unicode-specific tests. */ static inline bool is_valid_unicode_codepoint(pg_wchar c) { return (c > 0 && c <= 0x10FFFF); } static inline bool is_utf16_surrogate_first(pg_wchar c) { return (c >= 0xD800 && c <= 0xDBFF); } static inline bool is_utf16_surrogate_second(pg_wchar c) { return (c >= 0xDC00 && c <= 0xDFFF); } static inline pg_wchar surrogate_pair_to_codepoint(pg_wchar first, pg_wchar second) { return ((first & 0x3FF) << 10) + 0x10000 + (second & 0x3FF); } /* * These functions are considered part of libpq's exported API and * are also declared in libpq-fe.h. */ extern int pg_char_to_encoding(const char *name); extern const char *pg_encoding_to_char(int encoding); extern int pg_valid_server_encoding_id(int encoding); /* * These functions are available to frontend code that links with libpgcommon * (in addition to the ones just above). The constant tables declared * earlier in this file are also available from libpgcommon. */ extern int pg_encoding_mblen(int encoding, const char *mbstr); extern int pg_encoding_dsplen(int encoding, const char *mbstr); extern int pg_encoding_verifymb(int encoding, const char *mbstr, int len); extern int pg_encoding_max_length(int encoding); extern int pg_valid_client_encoding(const char *name); extern int pg_valid_server_encoding(const char *name); extern bool is_encoding_supported_by_icu(int encoding); extern const char *get_encoding_name_for_icu(int encoding); extern unsigned char *unicode_to_utf8(pg_wchar c, unsigned char *utf8string); extern pg_wchar utf8_to_unicode(const unsigned char *c); extern bool pg_utf8_islegal(const unsigned char *source, int length); extern int pg_utf_mblen(const unsigned char *s); extern int pg_mule_mblen(const unsigned char *s); /* * The remaining functions are backend-only. */ extern int pg_mb2wchar(const char *from, pg_wchar *to); extern int pg_mb2wchar_with_len(const char *from, pg_wchar *to, int len); extern int pg_encoding_mb2wchar_with_len(int encoding, const char *from, pg_wchar *to, int len); extern int pg_wchar2mb(const pg_wchar *from, char *to); extern int pg_wchar2mb_with_len(const pg_wchar *from, char *to, int len); extern int pg_encoding_wchar2mb_with_len(int encoding, const pg_wchar *from, char *to, int len); extern int pg_char_and_wchar_strcmp(const char *s1, const pg_wchar *s2); extern int pg_wchar_strncmp(const pg_wchar *s1, const pg_wchar *s2, size_t n); extern int pg_char_and_wchar_strncmp(const char *s1, const pg_wchar *s2, size_t n); extern size_t pg_wchar_strlen(const pg_wchar *wstr); extern int pg_mblen(const char *mbstr); extern int pg_dsplen(const char *mbstr); extern int pg_mbstrlen(const char *mbstr); extern int pg_mbstrlen_with_len(const char *mbstr, int len); extern int pg_mbcliplen(const char *mbstr, int len, int limit); extern int pg_encoding_mbcliplen(int encoding, const char *mbstr, int len, int limit); extern int pg_mbcharcliplen(const char *mbstr, int len, int limit); extern int pg_database_encoding_max_length(void); extern mbcharacter_incrementer pg_database_encoding_character_incrementer(void); extern int PrepareClientEncoding(int encoding); extern int SetClientEncoding(int encoding); extern void InitializeClientEncoding(void); extern int pg_get_client_encoding(void); extern const char *pg_get_client_encoding_name(void); extern void SetDatabaseEncoding(int encoding); extern int GetDatabaseEncoding(void); extern const char *GetDatabaseEncodingName(void); extern void SetMessageEncoding(int encoding); extern int GetMessageEncoding(void); #ifdef ENABLE_NLS extern int pg_bind_textdomain_codeset(const char *domainname); #endif extern unsigned char *pg_do_encoding_conversion(unsigned char *src, int len, int src_encoding, int dest_encoding); extern char *pg_client_to_server(const char *s, int len); extern char *pg_server_to_client(const char *s, int len); extern char *pg_any_to_server(const char *s, int len, int encoding); extern char *pg_server_to_any(const char *s, int len, int encoding); extern void pg_unicode_to_server(pg_wchar c, unsigned char *s); extern unsigned short BIG5toCNS(unsigned short big5, unsigned char *lc); extern unsigned short CNStoBIG5(unsigned short cns, unsigned char lc); extern void UtfToLocal(const unsigned char *utf, int len, unsigned char *iso, const pg_mb_radix_tree *map, const pg_utf_to_local_combined *cmap, int cmapsize, utf_local_conversion_func conv_func, int encoding); extern void LocalToUtf(const unsigned char *iso, int len, unsigned char *utf, const pg_mb_radix_tree *map, const pg_local_to_utf_combined *cmap, int cmapsize, utf_local_conversion_func conv_func, int encoding); extern bool pg_verifymbstr(const char *mbstr, int len, bool noError); extern bool pg_verify_mbstr(int encoding, const char *mbstr, int len, bool noError); extern int pg_verify_mbstr_len(int encoding, const char *mbstr, int len, bool noError); extern void check_encoding_conversion_args(int src_encoding, int dest_encoding, int len, int expected_src_encoding, int expected_dest_encoding); extern void report_invalid_encoding(int encoding, const char *mbstr, int len) pg_attribute_noreturn(); extern void report_untranslatable_char(int src_encoding, int dest_encoding, const char *mbstr, int len) pg_attribute_noreturn(); extern void local2local(const unsigned char *l, unsigned char *p, int len, int src_encoding, int dest_encoding, const unsigned char *tab); extern void latin2mic(const unsigned char *l, unsigned char *p, int len, int lc, int encoding); extern void mic2latin(const unsigned char *mic, unsigned char *p, int len, int lc, int encoding); extern void latin2mic_with_table(const unsigned char *l, unsigned char *p, int len, int lc, int encoding, const unsigned char *tab); extern void mic2latin_with_table(const unsigned char *mic, unsigned char *p, int len, int lc, int encoding, const unsigned char *tab); #ifdef WIN32 extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len); #endif #endif /* PG_WCHAR_H */ libpg_query-13-2.1.0/src/postgres/include/mb/stringinfo_mb.h000066400000000000000000000012331413137616400237510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * stringinfo_mb.h * multibyte support for StringInfo * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/mb/stringinfo_mb.h *------------------------------------------------------------------------- */ #ifndef STRINGINFO_MB_H #define STRINGINFO_MB_H #include "lib/stringinfo.h" /* * Multibyte-aware StringInfo support function. */ extern void appendStringInfoStringQuoted(StringInfo str, const char *s, int maxlen); #endif /* STRINGINFO_MB_H */ libpg_query-13-2.1.0/src/postgres/include/miscadmin.h000066400000000000000000000376211413137616400224710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * miscadmin.h * This file contains general postgres administration and initialization * stuff that used to be spread out between the following files: * globals.h global variables * pdir.h directory path crud * pinit.h postgres initialization * pmod.h processing modes * Over time, this has also become the preferred place for widely known * resource-limitation stuff, such as work_mem and check_stack_depth(). * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/miscadmin.h * * NOTES * some of the information in this file should be moved to other files. * *------------------------------------------------------------------------- */ #ifndef MISCADMIN_H #define MISCADMIN_H #include #include "datatype/timestamp.h" /* for TimestampTz */ #include "pgtime.h" /* for pg_time_t */ #define InvalidPid (-1) /***************************************************************************** * System interrupt and critical section handling * * There are two types of interrupts that a running backend needs to accept * without messing up its state: QueryCancel (SIGINT) and ProcDie (SIGTERM). * In both cases, we need to be able to clean up the current transaction * gracefully, so we can't respond to the interrupt instantaneously --- * there's no guarantee that internal data structures would be self-consistent * if the code is interrupted at an arbitrary instant. Instead, the signal * handlers set flags that are checked periodically during execution. * * The CHECK_FOR_INTERRUPTS() macro is called at strategically located spots * where it is normally safe to accept a cancel or die interrupt. In some * cases, we invoke CHECK_FOR_INTERRUPTS() inside low-level subroutines that * might sometimes be called in contexts that do *not* want to allow a cancel * or die interrupt. The HOLD_INTERRUPTS() and RESUME_INTERRUPTS() macros * allow code to ensure that no cancel or die interrupt will be accepted, * even if CHECK_FOR_INTERRUPTS() gets called in a subroutine. The interrupt * will be held off until CHECK_FOR_INTERRUPTS() is done outside any * HOLD_INTERRUPTS() ... RESUME_INTERRUPTS() section. * * There is also a mechanism to prevent query cancel interrupts, while still * allowing die interrupts: HOLD_CANCEL_INTERRUPTS() and * RESUME_CANCEL_INTERRUPTS(). * * Special mechanisms are used to let an interrupt be accepted when we are * waiting for a lock or when we are waiting for command input (but, of * course, only if the interrupt holdoff counter is zero). See the * related code for details. * * A lost connection is handled similarly, although the loss of connection * does not raise a signal, but is detected when we fail to write to the * socket. If there was a signal for a broken connection, we could make use of * it by setting ClientConnectionLost in the signal handler. * * A related, but conceptually distinct, mechanism is the "critical section" * mechanism. A critical section not only holds off cancel/die interrupts, * but causes any ereport(ERROR) or ereport(FATAL) to become ereport(PANIC) * --- that is, a system-wide reset is forced. Needless to say, only really * *critical* code should be marked as a critical section! Currently, this * mechanism is only used for XLOG-related code. * *****************************************************************************/ /* in globals.c */ /* these are marked volatile because they are set by signal handlers: */ extern PGDLLIMPORT __thread volatile sig_atomic_t InterruptPending; extern PGDLLIMPORT volatile sig_atomic_t QueryCancelPending; extern PGDLLIMPORT volatile sig_atomic_t ProcDiePending; extern PGDLLIMPORT volatile sig_atomic_t IdleInTransactionSessionTimeoutPending; extern PGDLLIMPORT volatile sig_atomic_t ProcSignalBarrierPending; extern PGDLLIMPORT volatile sig_atomic_t ClientConnectionLost; /* these are marked volatile because they are examined by signal handlers: */ extern PGDLLIMPORT __thread volatile uint32 InterruptHoldoffCount; extern PGDLLIMPORT __thread volatile uint32 QueryCancelHoldoffCount; extern PGDLLIMPORT __thread volatile uint32 CritSectionCount; /* in tcop/postgres.c */ extern void ProcessInterrupts(void); #ifndef WIN32 #define CHECK_FOR_INTERRUPTS() \ do { \ if (unlikely(InterruptPending)) \ ProcessInterrupts(); \ } while(0) #else /* WIN32 */ #define CHECK_FOR_INTERRUPTS() \ do { \ if (unlikely(UNBLOCKED_SIGNAL_QUEUE())) \ pgwin32_dispatch_queued_signals(); \ if (unlikely(InterruptPending)) \ ProcessInterrupts(); \ } while(0) #endif /* WIN32 */ #define HOLD_INTERRUPTS() (InterruptHoldoffCount++) #define RESUME_INTERRUPTS() \ do { \ Assert(InterruptHoldoffCount > 0); \ InterruptHoldoffCount--; \ } while(0) #define HOLD_CANCEL_INTERRUPTS() (QueryCancelHoldoffCount++) #define RESUME_CANCEL_INTERRUPTS() \ do { \ Assert(QueryCancelHoldoffCount > 0); \ QueryCancelHoldoffCount--; \ } while(0) #define START_CRIT_SECTION() (CritSectionCount++) #define END_CRIT_SECTION() \ do { \ Assert(CritSectionCount > 0); \ CritSectionCount--; \ } while(0) /***************************************************************************** * globals.h -- * *****************************************************************************/ /* * from utils/init/globals.c */ extern PGDLLIMPORT pid_t PostmasterPid; extern PGDLLIMPORT __thread bool IsPostmasterEnvironment; extern PGDLLIMPORT bool IsUnderPostmaster; extern PGDLLIMPORT bool IsBackgroundWorker; extern PGDLLIMPORT bool IsBinaryUpgrade; extern PGDLLIMPORT __thread bool ExitOnAnyError; extern PGDLLIMPORT char *DataDir; extern PGDLLIMPORT int data_directory_mode; extern PGDLLIMPORT int NBuffers; extern PGDLLIMPORT int MaxBackends; extern PGDLLIMPORT int MaxConnections; extern PGDLLIMPORT int max_worker_processes; extern PGDLLIMPORT int max_parallel_workers; extern PGDLLIMPORT int MyProcPid; extern PGDLLIMPORT pg_time_t MyStartTime; extern PGDLLIMPORT TimestampTz MyStartTimestamp; extern PGDLLIMPORT struct Port *MyProcPort; extern PGDLLIMPORT struct Latch *MyLatch; extern int32 MyCancelKey; extern int MyPMChildSlot; extern char OutputFileName[]; extern PGDLLIMPORT char my_exec_path[]; extern char pkglib_path[]; #ifdef EXEC_BACKEND extern char postgres_exec_path[]; #endif /* * done in storage/backendid.h for now. * * extern BackendId MyBackendId; */ extern PGDLLIMPORT Oid MyDatabaseId; extern PGDLLIMPORT Oid MyDatabaseTableSpace; /* * Date/Time Configuration * * DateStyle defines the output formatting choice for date/time types: * USE_POSTGRES_DATES specifies traditional Postgres format * USE_ISO_DATES specifies ISO-compliant format * USE_SQL_DATES specifies Oracle/Ingres-compliant format * USE_GERMAN_DATES specifies German-style dd.mm/yyyy * * DateOrder defines the field order to be assumed when reading an * ambiguous date (anything not in YYYY-MM-DD format, with a four-digit * year field first, is taken to be ambiguous): * DATEORDER_YMD specifies field order yy-mm-dd * DATEORDER_DMY specifies field order dd-mm-yy ("European" convention) * DATEORDER_MDY specifies field order mm-dd-yy ("US" convention) * * In the Postgres and SQL DateStyles, DateOrder also selects output field * order: day comes before month in DMY style, else month comes before day. * * The user-visible "DateStyle" run-time parameter subsumes both of these. */ /* valid DateStyle values */ #define USE_POSTGRES_DATES 0 #define USE_ISO_DATES 1 #define USE_SQL_DATES 2 #define USE_GERMAN_DATES 3 #define USE_XSD_DATES 4 /* valid DateOrder values */ #define DATEORDER_YMD 0 #define DATEORDER_DMY 1 #define DATEORDER_MDY 2 extern PGDLLIMPORT int DateStyle; extern PGDLLIMPORT int DateOrder; /* * IntervalStyles * INTSTYLE_POSTGRES Like Postgres < 8.4 when DateStyle = 'iso' * INTSTYLE_POSTGRES_VERBOSE Like Postgres < 8.4 when DateStyle != 'iso' * INTSTYLE_SQL_STANDARD SQL standard interval literals * INTSTYLE_ISO_8601 ISO-8601-basic formatted intervals */ #define INTSTYLE_POSTGRES 0 #define INTSTYLE_POSTGRES_VERBOSE 1 #define INTSTYLE_SQL_STANDARD 2 #define INTSTYLE_ISO_8601 3 extern PGDLLIMPORT int IntervalStyle; #define MAXTZLEN 10 /* max TZ name len, not counting tr. null */ extern bool enableFsync; extern PGDLLIMPORT bool allowSystemTableMods; extern PGDLLIMPORT int work_mem; extern PGDLLIMPORT double hash_mem_multiplier; extern PGDLLIMPORT int maintenance_work_mem; extern PGDLLIMPORT int max_parallel_maintenance_workers; extern int VacuumCostPageHit; extern int VacuumCostPageMiss; extern int VacuumCostPageDirty; extern int VacuumCostLimit; extern double VacuumCostDelay; extern int64 VacuumPageHit; extern int64 VacuumPageMiss; extern int64 VacuumPageDirty; extern int VacuumCostBalance; extern bool VacuumCostActive; extern double vacuum_cleanup_index_scale_factor; /* in tcop/postgres.c */ #if defined(__ia64__) || defined(__ia64) typedef struct { char *stack_base_ptr; char *register_stack_base_ptr; } pg_stack_base_t; #else typedef char *pg_stack_base_t; #endif extern pg_stack_base_t set_stack_base(void); extern void restore_stack_base(pg_stack_base_t base); extern void check_stack_depth(void); extern bool stack_is_too_deep(void); /* in tcop/utility.c */ extern void PreventCommandIfReadOnly(const char *cmdname); extern void PreventCommandIfParallelMode(const char *cmdname); extern void PreventCommandDuringRecovery(const char *cmdname); /* in utils/misc/guc.c */ extern int trace_recovery_messages; extern int trace_recovery(int trace_level); /***************************************************************************** * pdir.h -- * * POSTGRES directory path definitions. * *****************************************************************************/ /* flags to be OR'd to form sec_context */ #define SECURITY_LOCAL_USERID_CHANGE 0x0001 #define SECURITY_RESTRICTED_OPERATION 0x0002 #define SECURITY_NOFORCE_RLS 0x0004 extern char *DatabasePath; /* now in utils/init/miscinit.c */ extern void InitPostmasterChild(void); extern void InitStandaloneProcess(const char *argv0); extern void SwitchToSharedLatch(void); extern void SwitchBackToLocalLatch(void); typedef enum BackendType { B_INVALID = 0, B_AUTOVAC_LAUNCHER, B_AUTOVAC_WORKER, B_BACKEND, B_BG_WORKER, B_BG_WRITER, B_CHECKPOINTER, B_STARTUP, B_WAL_RECEIVER, B_WAL_SENDER, B_WAL_WRITER, B_ARCHIVER, B_STATS_COLLECTOR, B_LOGGER, } BackendType; extern BackendType MyBackendType; extern const char *GetBackendTypeDesc(BackendType backendType); extern void SetDatabasePath(const char *path); extern void checkDataDir(void); extern void SetDataDir(const char *dir); extern void ChangeToDataDir(void); extern char *GetUserNameFromId(Oid roleid, bool noerr); extern Oid GetUserId(void); extern Oid GetOuterUserId(void); extern Oid GetSessionUserId(void); extern Oid GetAuthenticatedUserId(void); extern void GetUserIdAndSecContext(Oid *userid, int *sec_context); extern void SetUserIdAndSecContext(Oid userid, int sec_context); extern bool InLocalUserIdChange(void); extern bool InSecurityRestrictedOperation(void); extern bool InNoForceRLSOperation(void); extern void GetUserIdAndContext(Oid *userid, bool *sec_def_context); extern void SetUserIdAndContext(Oid userid, bool sec_def_context); extern void InitializeSessionUserId(const char *rolename, Oid useroid); extern void InitializeSessionUserIdStandalone(void); extern void SetSessionAuthorization(Oid userid, bool is_superuser); extern Oid GetCurrentRoleId(void); extern void SetCurrentRoleId(Oid roleid, bool is_superuser); /* in utils/misc/superuser.c */ extern bool superuser(void); /* current user is superuser */ extern bool superuser_arg(Oid roleid); /* given user is superuser */ /***************************************************************************** * pmod.h -- * * POSTGRES processing mode definitions. * *****************************************************************************/ /* * Description: * There are three processing modes in POSTGRES. They are * BootstrapProcessing or "bootstrap," InitProcessing or * "initialization," and NormalProcessing or "normal." * * The first two processing modes are used during special times. When the * system state indicates bootstrap processing, transactions are all given * transaction id "one" and are consequently guaranteed to commit. This mode * is used during the initial generation of template databases. * * Initialization mode: used while starting a backend, until all normal * initialization is complete. Some code behaves differently when executed * in this mode to enable system bootstrapping. * * If a POSTGRES backend process is in normal mode, then all code may be * executed normally. */ typedef enum ProcessingMode { BootstrapProcessing, /* bootstrap creation of template database */ InitProcessing, /* initializing system */ NormalProcessing /* normal processing */ } ProcessingMode; extern ProcessingMode Mode; #define IsBootstrapProcessingMode() (Mode == BootstrapProcessing) #define IsInitProcessingMode() (Mode == InitProcessing) #define IsNormalProcessingMode() (Mode == NormalProcessing) #define GetProcessingMode() Mode #define SetProcessingMode(mode) \ do { \ AssertArg((mode) == BootstrapProcessing || \ (mode) == InitProcessing || \ (mode) == NormalProcessing); \ Mode = (mode); \ } while(0) /* * Auxiliary-process type identifiers. These used to be in bootstrap.h * but it seems saner to have them here, with the ProcessingMode stuff. * The MyAuxProcType global is defined and set in bootstrap.c. */ typedef enum { NotAnAuxProcess = -1, CheckerProcess = 0, BootstrapProcess, StartupProcess, BgWriterProcess, CheckpointerProcess, WalWriterProcess, WalReceiverProcess, NUM_AUXPROCTYPES /* Must be last! */ } AuxProcType; extern AuxProcType MyAuxProcType; #define AmBootstrapProcess() (MyAuxProcType == BootstrapProcess) #define AmStartupProcess() (MyAuxProcType == StartupProcess) #define AmBackgroundWriterProcess() (MyAuxProcType == BgWriterProcess) #define AmCheckpointerProcess() (MyAuxProcType == CheckpointerProcess) #define AmWalWriterProcess() (MyAuxProcType == WalWriterProcess) #define AmWalReceiverProcess() (MyAuxProcType == WalReceiverProcess) /***************************************************************************** * pinit.h -- * * POSTGRES initialization and cleanup definitions. * *****************************************************************************/ /* in utils/init/postinit.c */ extern void pg_split_opts(char **argv, int *argcp, const char *optstr); extern void InitializeMaxBackends(void); extern void InitPostgres(const char *in_dbname, Oid dboid, const char *username, Oid useroid, char *out_dbname, bool override_allow_connections); extern void BaseInit(void); /* in utils/init/miscinit.c */ extern bool IgnoreSystemIndexes; extern PGDLLIMPORT bool process_shared_preload_libraries_in_progress; extern char *session_preload_libraries_string; extern char *shared_preload_libraries_string; extern char *local_preload_libraries_string; extern void CreateDataDirLockFile(bool amPostmaster); extern void CreateSocketLockFile(const char *socketfile, bool amPostmaster, const char *socketDir); extern void TouchSocketLockFiles(void); extern void AddToDataDirLockFile(int target_line, const char *str); extern bool RecheckDataDirLockFile(void); extern void ValidatePgVersion(const char *path); extern void process_shared_preload_libraries(void); extern void process_session_preload_libraries(void); extern void pg_bindtextdomain(const char *domain); extern bool has_rolreplication(Oid roleid); /* in access/transam/xlog.c */ extern bool BackupInProgress(void); extern void CancelBackup(void); /* in executor/nodeHash.c */ extern int get_hash_mem(void); #endif /* MISCADMIN_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/000077500000000000000000000000001413137616400214535ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/nodes/bitmapset.h000066400000000000000000000104761413137616400236240ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * bitmapset.h * PostgreSQL generic bitmap set package * * A bitmap set can represent any set of nonnegative integers, although * it is mainly intended for sets where the maximum value is not large, * say at most a few hundred. By convention, a NULL pointer is always * accepted by all operations to represent the empty set. (But beware * that this is not the only representation of the empty set. Use * bms_is_empty() in preference to testing for NULL.) * * * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/nodes/bitmapset.h * *------------------------------------------------------------------------- */ #ifndef BITMAPSET_H #define BITMAPSET_H /* * Forward decl to save including pg_list.h */ struct List; /* * Data representation * * Larger bitmap word sizes generally give better performance, so long as * they're not wider than the processor can handle efficiently. We use * 64-bit words if pointers are that large, else 32-bit words. */ #if SIZEOF_VOID_P >= 8 #define BITS_PER_BITMAPWORD 64 typedef uint64 bitmapword; /* must be an unsigned type */ typedef int64 signedbitmapword; /* must be the matching signed type */ #else #define BITS_PER_BITMAPWORD 32 typedef uint32 bitmapword; /* must be an unsigned type */ typedef int32 signedbitmapword; /* must be the matching signed type */ #endif typedef struct Bitmapset { int nwords; /* number of words in array */ bitmapword words[FLEXIBLE_ARRAY_MEMBER]; /* really [nwords] */ } Bitmapset; /* result of bms_subset_compare */ typedef enum { BMS_EQUAL, /* sets are equal */ BMS_SUBSET1, /* first set is a subset of the second */ BMS_SUBSET2, /* second set is a subset of the first */ BMS_DIFFERENT /* neither set is a subset of the other */ } BMS_Comparison; /* result of bms_membership */ typedef enum { BMS_EMPTY_SET, /* 0 members */ BMS_SINGLETON, /* 1 member */ BMS_MULTIPLE /* >1 member */ } BMS_Membership; /* * function prototypes in nodes/bitmapset.c */ extern Bitmapset *bms_copy(const Bitmapset *a); extern bool bms_equal(const Bitmapset *a, const Bitmapset *b); extern int bms_compare(const Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_make_singleton(int x); extern void bms_free(Bitmapset *a); extern Bitmapset *bms_union(const Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_intersect(const Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_difference(const Bitmapset *a, const Bitmapset *b); extern bool bms_is_subset(const Bitmapset *a, const Bitmapset *b); extern BMS_Comparison bms_subset_compare(const Bitmapset *a, const Bitmapset *b); extern bool bms_is_member(int x, const Bitmapset *a); extern int bms_member_index(Bitmapset *a, int x); extern bool bms_overlap(const Bitmapset *a, const Bitmapset *b); extern bool bms_overlap_list(const Bitmapset *a, const struct List *b); extern bool bms_nonempty_difference(const Bitmapset *a, const Bitmapset *b); extern int bms_singleton_member(const Bitmapset *a); extern bool bms_get_singleton_member(const Bitmapset *a, int *member); extern int bms_num_members(const Bitmapset *a); /* optimized tests when we don't need to know exact membership count: */ extern BMS_Membership bms_membership(const Bitmapset *a); extern bool bms_is_empty(const Bitmapset *a); /* these routines recycle (modify or free) their non-const inputs: */ extern Bitmapset *bms_add_member(Bitmapset *a, int x); extern Bitmapset *bms_del_member(Bitmapset *a, int x); extern Bitmapset *bms_add_members(Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_add_range(Bitmapset *a, int lower, int upper); extern Bitmapset *bms_int_members(Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_del_members(Bitmapset *a, const Bitmapset *b); extern Bitmapset *bms_join(Bitmapset *a, Bitmapset *b); /* support for iterating through the integer elements of a set: */ extern int bms_first_member(Bitmapset *a); extern int bms_next_member(const Bitmapset *a, int prevbit); extern int bms_prev_member(const Bitmapset *a, int prevbit); /* support for hashtables using Bitmapsets as keys: */ extern uint32 bms_hash_value(const Bitmapset *a); extern uint32 bitmap_hash(const void *key, Size keysize); extern int bitmap_match(const void *key1, const void *key2, Size keysize); #endif /* BITMAPSET_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/execnodes.h000066400000000000000000002656741413137616400236250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * execnodes.h * definitions for executor state nodes * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/execnodes.h * *------------------------------------------------------------------------- */ #ifndef EXECNODES_H #define EXECNODES_H #include "access/tupconvert.h" #include "executor/instrument.h" #include "fmgr.h" #include "lib/pairingheap.h" #include "nodes/params.h" #include "nodes/plannodes.h" #include "nodes/tidbitmap.h" #include "partitioning/partdefs.h" #include "storage/condition_variable.h" #include "utils/hsearch.h" #include "utils/queryenvironment.h" #include "utils/reltrigger.h" #include "utils/sharedtuplestore.h" #include "utils/snapshot.h" #include "utils/sortsupport.h" #include "utils/tuplesort.h" #include "utils/tuplestore.h" struct PlanState; /* forward references in this file */ struct PartitionRoutingInfo; struct ParallelHashJoinState; struct ExecRowMark; struct ExprState; struct ExprContext; struct RangeTblEntry; /* avoid including parsenodes.h here */ struct ExprEvalStep; /* avoid including execExpr.h everywhere */ struct CopyMultiInsertBuffer; /* ---------------- * ExprState node * * ExprState is the top-level node for expression evaluation. * It contains instructions (in ->steps) to evaluate the expression. * ---------------- */ typedef Datum (*ExprStateEvalFunc) (struct ExprState *expression, struct ExprContext *econtext, bool *isNull); /* Bits in ExprState->flags (see also execExpr.h for private flag bits): */ /* expression is for use with ExecQual() */ #define EEO_FLAG_IS_QUAL (1 << 0) typedef struct ExprState { NodeTag tag; uint8 flags; /* bitmask of EEO_FLAG_* bits, see above */ /* * Storage for result value of a scalar expression, or for individual * column results within expressions built by ExecBuildProjectionInfo(). */ #define FIELDNO_EXPRSTATE_RESNULL 2 bool resnull; #define FIELDNO_EXPRSTATE_RESVALUE 3 Datum resvalue; /* * If projecting a tuple result, this slot holds the result; else NULL. */ #define FIELDNO_EXPRSTATE_RESULTSLOT 4 TupleTableSlot *resultslot; /* * Instructions to compute expression's return value. */ struct ExprEvalStep *steps; /* * Function that actually evaluates the expression. This can be set to * different values depending on the complexity of the expression. */ ExprStateEvalFunc evalfunc; /* original expression tree, for debugging only */ Expr *expr; /* private state for an evalfunc */ void *evalfunc_private; /* * XXX: following fields only needed during "compilation" (ExecInitExpr); * could be thrown away afterwards. */ int steps_len; /* number of steps currently */ int steps_alloc; /* allocated length of steps array */ #define FIELDNO_EXPRSTATE_PARENT 11 struct PlanState *parent; /* parent PlanState node, if any */ ParamListInfo ext_params; /* for compiling PARAM_EXTERN nodes */ Datum *innermost_caseval; bool *innermost_casenull; Datum *innermost_domainval; bool *innermost_domainnull; } ExprState; /* ---------------- * IndexInfo information * * this struct holds the information needed to construct new index * entries for a particular index. Used for both index_build and * retail creation of index entries. * * NumIndexAttrs total number of columns in this index * NumIndexKeyAttrs number of key columns in index * IndexAttrNumbers underlying-rel attribute numbers used as keys * (zeroes indicate expressions). It also contains * info about included columns. * Expressions expr trees for expression entries, or NIL if none * ExpressionsState exec state for expressions, or NIL if none * Predicate partial-index predicate, or NIL if none * PredicateState exec state for predicate, or NIL if none * ExclusionOps Per-column exclusion operators, or NULL if none * ExclusionProcs Underlying function OIDs for ExclusionOps * ExclusionStrats Opclass strategy numbers for ExclusionOps * UniqueOps These are like Exclusion*, but for unique indexes * UniqueProcs * UniqueStrats * Unique is it a unique index? * OpclassOptions opclass-specific options, or NULL if none * ReadyForInserts is it valid for inserts? * Concurrent are we doing a concurrent index build? * BrokenHotChain did we detect any broken HOT chains? * ParallelWorkers # of workers requested (excludes leader) * Am Oid of index AM * AmCache private cache area for index AM * Context memory context holding this IndexInfo * * ii_Concurrent, ii_BrokenHotChain, and ii_ParallelWorkers are used only * during index build; they're conventionally zeroed otherwise. * ---------------- */ typedef struct IndexInfo { NodeTag type; int ii_NumIndexAttrs; /* total number of columns in index */ int ii_NumIndexKeyAttrs; /* number of key columns in index */ AttrNumber ii_IndexAttrNumbers[INDEX_MAX_KEYS]; List *ii_Expressions; /* list of Expr */ List *ii_ExpressionsState; /* list of ExprState */ List *ii_Predicate; /* list of Expr */ ExprState *ii_PredicateState; Oid *ii_ExclusionOps; /* array with one entry per column */ Oid *ii_ExclusionProcs; /* array with one entry per column */ uint16 *ii_ExclusionStrats; /* array with one entry per column */ Oid *ii_UniqueOps; /* array with one entry per column */ Oid *ii_UniqueProcs; /* array with one entry per column */ uint16 *ii_UniqueStrats; /* array with one entry per column */ Datum *ii_OpclassOptions; /* array with one entry per column */ bool ii_Unique; bool ii_ReadyForInserts; bool ii_Concurrent; bool ii_BrokenHotChain; int ii_ParallelWorkers; Oid ii_Am; void *ii_AmCache; MemoryContext ii_Context; } IndexInfo; /* ---------------- * ExprContext_CB * * List of callbacks to be called at ExprContext shutdown. * ---------------- */ typedef void (*ExprContextCallbackFunction) (Datum arg); typedef struct ExprContext_CB { struct ExprContext_CB *next; ExprContextCallbackFunction function; Datum arg; } ExprContext_CB; /* ---------------- * ExprContext * * This class holds the "current context" information * needed to evaluate expressions for doing tuple qualifications * and tuple projections. For example, if an expression refers * to an attribute in the current inner tuple then we need to know * what the current inner tuple is and so we look at the expression * context. * * There are two memory contexts associated with an ExprContext: * * ecxt_per_query_memory is a query-lifespan context, typically the same * context the ExprContext node itself is allocated in. This context * can be used for purposes such as storing function call cache info. * * ecxt_per_tuple_memory is a short-term context for expression results. * As the name suggests, it will typically be reset once per tuple, * before we begin to evaluate expressions for that tuple. Each * ExprContext normally has its very own per-tuple memory context. * * CurrentMemoryContext should be set to ecxt_per_tuple_memory before * calling ExecEvalExpr() --- see ExecEvalExprSwitchContext(). * ---------------- */ typedef struct ExprContext { NodeTag type; /* Tuples that Var nodes in expression may refer to */ #define FIELDNO_EXPRCONTEXT_SCANTUPLE 1 TupleTableSlot *ecxt_scantuple; #define FIELDNO_EXPRCONTEXT_INNERTUPLE 2 TupleTableSlot *ecxt_innertuple; #define FIELDNO_EXPRCONTEXT_OUTERTUPLE 3 TupleTableSlot *ecxt_outertuple; /* Memory contexts for expression evaluation --- see notes above */ MemoryContext ecxt_per_query_memory; MemoryContext ecxt_per_tuple_memory; /* Values to substitute for Param nodes in expression */ ParamExecData *ecxt_param_exec_vals; /* for PARAM_EXEC params */ ParamListInfo ecxt_param_list_info; /* for other param types */ /* * Values to substitute for Aggref nodes in the expressions of an Agg * node, or for WindowFunc nodes within a WindowAgg node. */ #define FIELDNO_EXPRCONTEXT_AGGVALUES 8 Datum *ecxt_aggvalues; /* precomputed values for aggs/windowfuncs */ #define FIELDNO_EXPRCONTEXT_AGGNULLS 9 bool *ecxt_aggnulls; /* null flags for aggs/windowfuncs */ /* Value to substitute for CaseTestExpr nodes in expression */ #define FIELDNO_EXPRCONTEXT_CASEDATUM 10 Datum caseValue_datum; #define FIELDNO_EXPRCONTEXT_CASENULL 11 bool caseValue_isNull; /* Value to substitute for CoerceToDomainValue nodes in expression */ #define FIELDNO_EXPRCONTEXT_DOMAINDATUM 12 Datum domainValue_datum; #define FIELDNO_EXPRCONTEXT_DOMAINNULL 13 bool domainValue_isNull; /* Link to containing EState (NULL if a standalone ExprContext) */ struct EState *ecxt_estate; /* Functions to call back when ExprContext is shut down or rescanned */ ExprContext_CB *ecxt_callbacks; } ExprContext; /* * Set-result status used when evaluating functions potentially returning a * set. */ typedef enum { ExprSingleResult, /* expression does not return a set */ ExprMultipleResult, /* this result is an element of a set */ ExprEndResult /* there are no more elements in the set */ } ExprDoneCond; /* * Return modes for functions returning sets. Note values must be chosen * as separate bits so that a bitmask can be formed to indicate supported * modes. SFRM_Materialize_Random and SFRM_Materialize_Preferred are * auxiliary flags about SFRM_Materialize mode, rather than separate modes. */ typedef enum { SFRM_ValuePerCall = 0x01, /* one value returned per call */ SFRM_Materialize = 0x02, /* result set instantiated in Tuplestore */ SFRM_Materialize_Random = 0x04, /* Tuplestore needs randomAccess */ SFRM_Materialize_Preferred = 0x08 /* caller prefers Tuplestore */ } SetFunctionReturnMode; /* * When calling a function that might return a set (multiple rows), * a node of this type is passed as fcinfo->resultinfo to allow * return status to be passed back. A function returning set should * raise an error if no such resultinfo is provided. */ typedef struct ReturnSetInfo { NodeTag type; /* values set by caller: */ ExprContext *econtext; /* context function is being called in */ TupleDesc expectedDesc; /* tuple descriptor expected by caller */ int allowedModes; /* bitmask: return modes caller can handle */ /* result status from function (but pre-initialized by caller): */ SetFunctionReturnMode returnMode; /* actual return mode */ ExprDoneCond isDone; /* status for ValuePerCall mode */ /* fields filled by function in Materialize return mode: */ Tuplestorestate *setResult; /* holds the complete returned tuple set */ TupleDesc setDesc; /* actual descriptor for returned tuples */ } ReturnSetInfo; /* ---------------- * ProjectionInfo node information * * This is all the information needed to perform projections --- * that is, form new tuples by evaluation of targetlist expressions. * Nodes which need to do projections create one of these. * * The target tuple slot is kept in ProjectionInfo->pi_state.resultslot. * ExecProject() evaluates the tlist, forms a tuple, and stores it * in the given slot. Note that the result will be a "virtual" tuple * unless ExecMaterializeSlot() is then called to force it to be * converted to a physical tuple. The slot must have a tupledesc * that matches the output of the tlist! * ---------------- */ typedef struct ProjectionInfo { NodeTag type; /* instructions to evaluate projection */ ExprState pi_state; /* expression context in which to evaluate expression */ ExprContext *pi_exprContext; } ProjectionInfo; /* ---------------- * JunkFilter * * This class is used to store information regarding junk attributes. * A junk attribute is an attribute in a tuple that is needed only for * storing intermediate information in the executor, and does not belong * in emitted tuples. For example, when we do an UPDATE query, * the planner adds a "junk" entry to the targetlist so that the tuples * returned to ExecutePlan() contain an extra attribute: the ctid of * the tuple to be updated. This is needed to do the update, but we * don't want the ctid to be part of the stored new tuple! So, we * apply a "junk filter" to remove the junk attributes and form the * real output tuple. The junkfilter code also provides routines to * extract the values of the junk attribute(s) from the input tuple. * * targetList: the original target list (including junk attributes). * cleanTupType: the tuple descriptor for the "clean" tuple (with * junk attributes removed). * cleanMap: A map with the correspondence between the non-junk * attribute numbers of the "original" tuple and the * attribute numbers of the "clean" tuple. * resultSlot: tuple slot used to hold cleaned tuple. * junkAttNo: not used by junkfilter code. Can be used by caller * to remember the attno of a specific junk attribute * (nodeModifyTable.c keeps the "ctid" or "wholerow" * attno here). * ---------------- */ typedef struct JunkFilter { NodeTag type; List *jf_targetList; TupleDesc jf_cleanTupType; AttrNumber *jf_cleanMap; TupleTableSlot *jf_resultSlot; AttrNumber jf_junkAttNo; } JunkFilter; /* * OnConflictSetState * * Executor state of an ON CONFLICT DO UPDATE operation. */ typedef struct OnConflictSetState { NodeTag type; TupleTableSlot *oc_Existing; /* slot to store existing target tuple in */ TupleTableSlot *oc_ProjSlot; /* CONFLICT ... SET ... projection target */ ProjectionInfo *oc_ProjInfo; /* for ON CONFLICT DO UPDATE SET */ ExprState *oc_WhereClause; /* state for the WHERE clause */ } OnConflictSetState; /* * ResultRelInfo * * Whenever we update an existing relation, we have to update indexes on the * relation, and perhaps also fire triggers. ResultRelInfo holds all the * information needed about a result relation, including indexes. * * Normally, a ResultRelInfo refers to a table that is in the query's range * table; then ri_RangeTableIndex is the RT index and ri_RelationDesc is * just a copy of the relevant es_relations[] entry. However, in some * situations we create ResultRelInfos for relations that are not in the * range table, namely for targets of tuple routing in a partitioned table, * and when firing triggers in tables other than the target tables (See * ExecGetTriggerResultRel). In these situations, ri_RangeTableIndex is 0 * and ri_RelationDesc is a separately-opened relcache pointer that needs to * be separately closed. */ typedef struct ResultRelInfo { NodeTag type; /* result relation's range table index, or 0 if not in range table */ Index ri_RangeTableIndex; /* relation descriptor for result relation */ Relation ri_RelationDesc; /* # of indices existing on result relation */ int ri_NumIndices; /* array of relation descriptors for indices */ RelationPtr ri_IndexRelationDescs; /* array of key/attr info for indices */ IndexInfo **ri_IndexRelationInfo; /* triggers to be fired, if any */ TriggerDesc *ri_TrigDesc; /* cached lookup info for trigger functions */ FmgrInfo *ri_TrigFunctions; /* array of trigger WHEN expr states */ ExprState **ri_TrigWhenExprs; /* optional runtime measurements for triggers */ Instrumentation *ri_TrigInstrument; /* On-demand created slots for triggers / returning processing */ TupleTableSlot *ri_ReturningSlot; /* for trigger output tuples */ TupleTableSlot *ri_TrigOldSlot; /* for a trigger's old tuple */ TupleTableSlot *ri_TrigNewSlot; /* for a trigger's new tuple */ /* FDW callback functions, if foreign table */ struct FdwRoutine *ri_FdwRoutine; /* available to save private state of FDW */ void *ri_FdwState; /* true when modifying foreign table directly */ bool ri_usesFdwDirectModify; /* list of WithCheckOption's to be checked */ List *ri_WithCheckOptions; /* list of WithCheckOption expr states */ List *ri_WithCheckOptionExprs; /* array of constraint-checking expr states */ ExprState **ri_ConstraintExprs; /* array of stored generated columns expr states */ ExprState **ri_GeneratedExprs; /* number of stored generated columns we need to compute */ int ri_NumGeneratedNeeded; /* for removing junk attributes from tuples */ JunkFilter *ri_junkFilter; /* list of RETURNING expressions */ List *ri_returningList; /* for computing a RETURNING list */ ProjectionInfo *ri_projectReturning; /* list of arbiter indexes to use to check conflicts */ List *ri_onConflictArbiterIndexes; /* ON CONFLICT evaluation state */ OnConflictSetState *ri_onConflict; /* partition check expression */ List *ri_PartitionCheck; /* partition check expression state */ ExprState *ri_PartitionCheckExpr; /* * RootResultRelInfo gives the target relation mentioned in the query, if * it's a partitioned table. It is not set if the target relation * mentioned in the query is an inherited table, nor when tuple routing is * not needed. */ struct ResultRelInfo *ri_RootResultRelInfo; /* Additional information specific to partition tuple routing */ struct PartitionRoutingInfo *ri_PartitionInfo; /* For use by copy.c when performing multi-inserts */ struct CopyMultiInsertBuffer *ri_CopyMultiInsertBuffer; } ResultRelInfo; /* ---------------- * EState information * * Master working state for an Executor invocation * ---------------- */ typedef struct EState { NodeTag type; /* Basic state for all query types: */ ScanDirection es_direction; /* current scan direction */ Snapshot es_snapshot; /* time qual to use */ Snapshot es_crosscheck_snapshot; /* crosscheck time qual for RI */ List *es_range_table; /* List of RangeTblEntry */ Index es_range_table_size; /* size of the range table arrays */ Relation *es_relations; /* Array of per-range-table-entry Relation * pointers, or NULL if not yet opened */ struct ExecRowMark **es_rowmarks; /* Array of per-range-table-entry * ExecRowMarks, or NULL if none */ PlannedStmt *es_plannedstmt; /* link to top of plan tree */ const char *es_sourceText; /* Source text from QueryDesc */ JunkFilter *es_junkFilter; /* top-level junk filter, if any */ /* If query can insert/delete tuples, the command ID to mark them with */ CommandId es_output_cid; /* Info about target table(s) for insert/update/delete queries: */ ResultRelInfo *es_result_relations; /* array of ResultRelInfos */ int es_num_result_relations; /* length of array */ ResultRelInfo *es_result_relation_info; /* currently active array elt */ /* * Info about the partition root table(s) for insert/update/delete queries * targeting partitioned tables. Only leaf partitions are mentioned in * es_result_relations, but we need access to the roots for firing * triggers and for runtime tuple routing. */ ResultRelInfo *es_root_result_relations; /* array of ResultRelInfos */ int es_num_root_result_relations; /* length of the array */ PartitionDirectory es_partition_directory; /* for PartitionDesc lookup */ /* * The following list contains ResultRelInfos created by the tuple routing * code for partitions that don't already have one. */ List *es_tuple_routing_result_relations; /* Stuff used for firing triggers: */ List *es_trig_target_relations; /* trigger-only ResultRelInfos */ /* Parameter info: */ ParamListInfo es_param_list_info; /* values of external params */ ParamExecData *es_param_exec_vals; /* values of internal params */ QueryEnvironment *es_queryEnv; /* query environment */ /* Other working state: */ MemoryContext es_query_cxt; /* per-query context in which EState lives */ List *es_tupleTable; /* List of TupleTableSlots */ uint64 es_processed; /* # of tuples processed */ int es_top_eflags; /* eflags passed to ExecutorStart */ int es_instrument; /* OR of InstrumentOption flags */ bool es_finished; /* true when ExecutorFinish is done */ List *es_exprcontexts; /* List of ExprContexts within EState */ List *es_subplanstates; /* List of PlanState for SubPlans */ List *es_auxmodifytables; /* List of secondary ModifyTableStates */ /* * this ExprContext is for per-output-tuple operations, such as constraint * checks and index-value computations. It will be reset for each output * tuple. Note that it will be created only if needed. */ ExprContext *es_per_tuple_exprcontext; /* * If not NULL, this is an EPQState's EState. This is a field in EState * both to allow EvalPlanQual aware executor nodes to detect that they * need to perform EPQ related work, and to provide necessary information * to do so. */ struct EPQState *es_epq_active; bool es_use_parallel_mode; /* can we use parallel workers? */ /* The per-query shared memory area to use for parallel execution. */ struct dsa_area *es_query_dsa; /* * JIT information. es_jit_flags indicates whether JIT should be performed * and with which options. es_jit is created on-demand when JITing is * performed. * * es_jit_worker_instr is the combined, on demand allocated, * instrumentation from all workers. The leader's instrumentation is kept * separate, and is combined on demand by ExplainPrintJITSummary(). */ int es_jit_flags; struct JitContext *es_jit; struct JitInstrumentation *es_jit_worker_instr; } EState; /* * ExecRowMark - * runtime representation of FOR [KEY] UPDATE/SHARE clauses * * When doing UPDATE, DELETE, or SELECT FOR [KEY] UPDATE/SHARE, we will have an * ExecRowMark for each non-target relation in the query (except inheritance * parent RTEs, which can be ignored at runtime). Virtual relations such as * subqueries-in-FROM will have an ExecRowMark with relation == NULL. See * PlanRowMark for details about most of the fields. In addition to fields * directly derived from PlanRowMark, we store an activity flag (to denote * inactive children of inheritance trees), curCtid, which is used by the * WHERE CURRENT OF code, and ermExtra, which is available for use by the plan * node that sources the relation (e.g., for a foreign table the FDW can use * ermExtra to hold information). * * EState->es_rowmarks is an array of these structs, indexed by RT index, * with NULLs for irrelevant RT indexes. es_rowmarks itself is NULL if * there are no rowmarks. */ typedef struct ExecRowMark { Relation relation; /* opened and suitably locked relation */ Oid relid; /* its OID (or InvalidOid, if subquery) */ Index rti; /* its range table index */ Index prti; /* parent range table index, if child */ Index rowmarkId; /* unique identifier for resjunk columns */ RowMarkType markType; /* see enum in nodes/plannodes.h */ LockClauseStrength strength; /* LockingClause's strength, or LCS_NONE */ LockWaitPolicy waitPolicy; /* NOWAIT and SKIP LOCKED */ bool ermActive; /* is this mark relevant for current tuple? */ ItemPointerData curCtid; /* ctid of currently locked tuple, if any */ void *ermExtra; /* available for use by relation source node */ } ExecRowMark; /* * ExecAuxRowMark - * additional runtime representation of FOR [KEY] UPDATE/SHARE clauses * * Each LockRows and ModifyTable node keeps a list of the rowmarks it needs to * deal with. In addition to a pointer to the related entry in es_rowmarks, * this struct carries the column number(s) of the resjunk columns associated * with the rowmark (see comments for PlanRowMark for more detail). In the * case of ModifyTable, there has to be a separate ExecAuxRowMark list for * each child plan, because the resjunk columns could be at different physical * column positions in different subplans. */ typedef struct ExecAuxRowMark { ExecRowMark *rowmark; /* related entry in es_rowmarks */ AttrNumber ctidAttNo; /* resno of ctid junk attribute, if any */ AttrNumber toidAttNo; /* resno of tableoid junk attribute, if any */ AttrNumber wholeAttNo; /* resno of whole-row junk attribute, if any */ } ExecAuxRowMark; /* ---------------------------------------------------------------- * Tuple Hash Tables * * All-in-memory tuple hash tables are used for a number of purposes. * * Note: tab_hash_funcs are for the key datatype(s) stored in the table, * and tab_eq_funcs are non-cross-type equality operators for those types. * Normally these are the only functions used, but FindTupleHashEntry() * supports searching a hashtable using cross-data-type hashing. For that, * the caller must supply hash functions for the LHS datatype as well as * the cross-type equality operators to use. in_hash_funcs and cur_eq_func * are set to point to the caller's function arrays while doing such a search. * During LookupTupleHashEntry(), they point to tab_hash_funcs and * tab_eq_func respectively. * ---------------------------------------------------------------- */ typedef struct TupleHashEntryData *TupleHashEntry; typedef struct TupleHashTableData *TupleHashTable; typedef struct TupleHashEntryData { MinimalTuple firstTuple; /* copy of first tuple in this group */ void *additional; /* user data */ uint32 status; /* hash status */ uint32 hash; /* hash value (cached) */ } TupleHashEntryData; /* define parameters necessary to generate the tuple hash table interface */ #define SH_PREFIX tuplehash #define SH_ELEMENT_TYPE TupleHashEntryData #define SH_KEY_TYPE MinimalTuple #define SH_SCOPE extern #define SH_DECLARE #include "lib/simplehash.h" typedef struct TupleHashTableData { tuplehash_hash *hashtab; /* underlying hash table */ int numCols; /* number of columns in lookup key */ AttrNumber *keyColIdx; /* attr numbers of key columns */ FmgrInfo *tab_hash_funcs; /* hash functions for table datatype(s) */ ExprState *tab_eq_func; /* comparator for table datatype(s) */ Oid *tab_collations; /* collations for hash and comparison */ MemoryContext tablecxt; /* memory context containing table */ MemoryContext tempcxt; /* context for function evaluations */ Size entrysize; /* actual size to make each hash entry */ TupleTableSlot *tableslot; /* slot for referencing table entries */ /* The following fields are set transiently for each table search: */ TupleTableSlot *inputslot; /* current input tuple's slot */ FmgrInfo *in_hash_funcs; /* hash functions for input datatype(s) */ ExprState *cur_eq_func; /* comparator for input vs. table */ uint32 hash_iv; /* hash-function IV */ ExprContext *exprcontext; /* expression context */ } TupleHashTableData; typedef tuplehash_iterator TupleHashIterator; /* * Use InitTupleHashIterator/TermTupleHashIterator for a read/write scan. * Use ResetTupleHashIterator if the table can be frozen (in this case no * explicit scan termination is needed). */ #define InitTupleHashIterator(htable, iter) \ tuplehash_start_iterate(htable->hashtab, iter) #define TermTupleHashIterator(iter) \ ((void) 0) #define ResetTupleHashIterator(htable, iter) \ InitTupleHashIterator(htable, iter) #define ScanTupleHashTable(htable, iter) \ tuplehash_iterate(htable->hashtab, iter) /* ---------------------------------------------------------------- * Expression State Nodes * * Formerly, there was a separate executor expression state node corresponding * to each node in a planned expression tree. That's no longer the case; for * common expression node types, all the execution info is embedded into * step(s) in a single ExprState node. But we still have a few executor state * node types for selected expression node types, mostly those in which info * has to be shared with other parts of the execution state tree. * ---------------------------------------------------------------- */ /* ---------------- * AggrefExprState node * ---------------- */ typedef struct AggrefExprState { NodeTag type; Aggref *aggref; /* expression plan node */ int aggno; /* ID number for agg within its plan node */ } AggrefExprState; /* ---------------- * WindowFuncExprState node * ---------------- */ typedef struct WindowFuncExprState { NodeTag type; WindowFunc *wfunc; /* expression plan node */ List *args; /* ExprStates for argument expressions */ ExprState *aggfilter; /* FILTER expression */ int wfuncno; /* ID number for wfunc within its plan node */ } WindowFuncExprState; /* ---------------- * SetExprState node * * State for evaluating a potentially set-returning expression (like FuncExpr * or OpExpr). In some cases, like some of the expressions in ROWS FROM(...) * the expression might not be a SRF, but nonetheless it uses the same * machinery as SRFs; it will be treated as a SRF returning a single row. * ---------------- */ typedef struct SetExprState { NodeTag type; Expr *expr; /* expression plan node */ List *args; /* ExprStates for argument expressions */ /* * In ROWS FROM, functions can be inlined, removing the FuncExpr normally * inside. In such a case this is the compiled expression (which cannot * return a set), which'll be evaluated using regular ExecEvalExpr(). */ ExprState *elidedFuncState; /* * Function manager's lookup info for the target function. If func.fn_oid * is InvalidOid, we haven't initialized it yet (nor any of the following * fields, except funcReturnsSet). */ FmgrInfo func; /* * For a set-returning function (SRF) that returns a tuplestore, we keep * the tuplestore here and dole out the result rows one at a time. The * slot holds the row currently being returned. */ Tuplestorestate *funcResultStore; TupleTableSlot *funcResultSlot; /* * In some cases we need to compute a tuple descriptor for the function's * output. If so, it's stored here. */ TupleDesc funcResultDesc; bool funcReturnsTuple; /* valid when funcResultDesc isn't NULL */ /* * Remember whether the function is declared to return a set. This is set * by ExecInitExpr, and is valid even before the FmgrInfo is set up. */ bool funcReturnsSet; /* * setArgsValid is true when we are evaluating a set-returning function * that uses value-per-call mode and we are in the middle of a call * series; we want to pass the same argument values to the function again * (and again, until it returns ExprEndResult). This indicates that * fcinfo_data already contains valid argument data. */ bool setArgsValid; /* * Flag to remember whether we have registered a shutdown callback for * this SetExprState. We do so only if funcResultStore or setArgsValid * has been set at least once (since all the callback is for is to release * the tuplestore or clear setArgsValid). */ bool shutdown_reg; /* a shutdown callback is registered */ /* * Call parameter structure for the function. This has been initialized * (by InitFunctionCallInfoData) if func.fn_oid is valid. It also saves * argument values between calls, when setArgsValid is true. */ FunctionCallInfo fcinfo; } SetExprState; /* ---------------- * SubPlanState node * ---------------- */ typedef struct SubPlanState { NodeTag type; SubPlan *subplan; /* expression plan node */ struct PlanState *planstate; /* subselect plan's state tree */ struct PlanState *parent; /* parent plan node's state tree */ ExprState *testexpr; /* state of combining expression */ List *args; /* states of argument expression(s) */ HeapTuple curTuple; /* copy of most recent tuple from subplan */ Datum curArray; /* most recent array from ARRAY() subplan */ /* these are used when hashing the subselect's output: */ TupleDesc descRight; /* subselect desc after projection */ ProjectionInfo *projLeft; /* for projecting lefthand exprs */ ProjectionInfo *projRight; /* for projecting subselect output */ TupleHashTable hashtable; /* hash table for no-nulls subselect rows */ TupleHashTable hashnulls; /* hash table for rows with null(s) */ bool havehashrows; /* true if hashtable is not empty */ bool havenullrows; /* true if hashnulls is not empty */ MemoryContext hashtablecxt; /* memory context containing hash tables */ MemoryContext hashtempcxt; /* temp memory context for hash tables */ ExprContext *innerecontext; /* econtext for computing inner tuples */ int numCols; /* number of columns being hashed */ /* each of the remaining fields is an array of length numCols: */ AttrNumber *keyColIdx; /* control data for hash tables */ Oid *tab_eq_funcoids; /* equality func oids for table * datatype(s) */ Oid *tab_collations; /* collations for hash and comparison */ FmgrInfo *tab_hash_funcs; /* hash functions for table datatype(s) */ FmgrInfo *tab_eq_funcs; /* equality functions for table datatype(s) */ FmgrInfo *lhs_hash_funcs; /* hash functions for lefthand datatype(s) */ FmgrInfo *cur_eq_funcs; /* equality functions for LHS vs. table */ ExprState *cur_eq_comp; /* equality comparator for LHS vs. table */ } SubPlanState; /* ---------------- * AlternativeSubPlanState node * ---------------- */ typedef struct AlternativeSubPlanState { NodeTag type; AlternativeSubPlan *subplan; /* expression plan node */ List *subplans; /* SubPlanStates of alternative subplans */ int active; /* list index of the one we're using */ } AlternativeSubPlanState; /* * DomainConstraintState - one item to check during CoerceToDomain * * Note: we consider this to be part of an ExprState tree, so we give it * a name following the xxxState convention. But there's no directly * associated plan-tree node. */ typedef enum DomainConstraintType { DOM_CONSTRAINT_NOTNULL, DOM_CONSTRAINT_CHECK } DomainConstraintType; typedef struct DomainConstraintState { NodeTag type; DomainConstraintType constrainttype; /* constraint type */ char *name; /* name of constraint (for error msgs) */ Expr *check_expr; /* for CHECK, a boolean expression */ ExprState *check_exprstate; /* check_expr's eval state, or NULL */ } DomainConstraintState; /* ---------------------------------------------------------------- * Executor State Trees * * An executing query has a PlanState tree paralleling the Plan tree * that describes the plan. * ---------------------------------------------------------------- */ /* ---------------- * ExecProcNodeMtd * * This is the method called by ExecProcNode to return the next tuple * from an executor node. It returns NULL, or an empty TupleTableSlot, * if no more tuples are available. * ---------------- */ typedef TupleTableSlot *(*ExecProcNodeMtd) (struct PlanState *pstate); /* ---------------- * PlanState node * * We never actually instantiate any PlanState nodes; this is just the common * abstract superclass for all PlanState-type nodes. * ---------------- */ typedef struct PlanState { NodeTag type; Plan *plan; /* associated Plan node */ EState *state; /* at execution time, states of individual * nodes point to one EState for the whole * top-level plan */ ExecProcNodeMtd ExecProcNode; /* function to return next tuple */ ExecProcNodeMtd ExecProcNodeReal; /* actual function, if above is a * wrapper */ Instrumentation *instrument; /* Optional runtime stats for this node */ WorkerInstrumentation *worker_instrument; /* per-worker instrumentation */ /* Per-worker JIT instrumentation */ struct SharedJitInstrumentation *worker_jit_instrument; /* * Common structural data for all Plan types. These links to subsidiary * state trees parallel links in the associated plan tree (except for the * subPlan list, which does not exist in the plan tree). */ ExprState *qual; /* boolean qual condition */ struct PlanState *lefttree; /* input plan tree(s) */ struct PlanState *righttree; List *initPlan; /* Init SubPlanState nodes (un-correlated expr * subselects) */ List *subPlan; /* SubPlanState nodes in my expressions */ /* * State for management of parameter-change-driven rescanning */ Bitmapset *chgParam; /* set of IDs of changed Params */ /* * Other run-time state needed by most if not all node types. */ TupleDesc ps_ResultTupleDesc; /* node's return type */ TupleTableSlot *ps_ResultTupleSlot; /* slot for my result tuples */ ExprContext *ps_ExprContext; /* node's expression-evaluation context */ ProjectionInfo *ps_ProjInfo; /* info for doing tuple projection */ /* * Scanslot's descriptor if known. This is a bit of a hack, but otherwise * it's hard for expression compilation to optimize based on the * descriptor, without encoding knowledge about all executor nodes. */ TupleDesc scandesc; /* * Define the slot types for inner, outer and scanslots for expression * contexts with this state as a parent. If *opsset is set, then * *opsfixed indicates whether *ops is guaranteed to be the type of slot * used. That means that every slot in the corresponding * ExprContext.ecxt_*tuple will point to a slot of that type, while * evaluating the expression. If *opsfixed is false, but *ops is set, * that indicates the most likely type of slot. * * The scan* fields are set by ExecInitScanTupleSlot(). If that's not * called, nodes can initialize the fields themselves. * * If outer/inneropsset is false, the information is inferred on-demand * using ExecGetResultSlotOps() on ->righttree/lefttree, using the * corresponding node's resultops* fields. * * The result* fields are automatically set when ExecInitResultSlot is * used (be it directly or when the slot is created by * ExecAssignScanProjectionInfo() / * ExecConditionalAssignProjectionInfo()). If no projection is necessary * ExecConditionalAssignProjectionInfo() defaults those fields to the scan * operations. */ const TupleTableSlotOps *scanops; const TupleTableSlotOps *outerops; const TupleTableSlotOps *innerops; const TupleTableSlotOps *resultops; bool scanopsfixed; bool outeropsfixed; bool inneropsfixed; bool resultopsfixed; bool scanopsset; bool outeropsset; bool inneropsset; bool resultopsset; } PlanState; /* ---------------- * these are defined to avoid confusion problems with "left" * and "right" and "inner" and "outer". The convention is that * the "left" plan is the "outer" plan and the "right" plan is * the inner plan, but these make the code more readable. * ---------------- */ #define innerPlanState(node) (((PlanState *)(node))->righttree) #define outerPlanState(node) (((PlanState *)(node))->lefttree) /* Macros for inline access to certain instrumentation counters */ #define InstrCountTuples2(node, delta) \ do { \ if (((PlanState *)(node))->instrument) \ ((PlanState *)(node))->instrument->ntuples2 += (delta); \ } while (0) #define InstrCountFiltered1(node, delta) \ do { \ if (((PlanState *)(node))->instrument) \ ((PlanState *)(node))->instrument->nfiltered1 += (delta); \ } while(0) #define InstrCountFiltered2(node, delta) \ do { \ if (((PlanState *)(node))->instrument) \ ((PlanState *)(node))->instrument->nfiltered2 += (delta); \ } while(0) /* * EPQState is state for executing an EvalPlanQual recheck on a candidate * tuples e.g. in ModifyTable or LockRows. * * To execute EPQ a separate EState is created (stored in ->recheckestate), * which shares some resources, like the rangetable, with the main query's * EState (stored in ->parentestate). The (sub-)tree of the plan that needs to * be rechecked (in ->plan), is separately initialized (into * ->recheckplanstate), but shares plan nodes with the corresponding nodes in * the main query. The scan nodes in that separate executor tree are changed * to return only the current tuple of interest for the respective * table. Those tuples are either provided by the caller (using * EvalPlanQualSlot), and/or found using the rowmark mechanism (non-locking * rowmarks by the EPQ machinery itself, locking ones by the caller). * * While the plan to be checked may be changed using EvalPlanQualSetPlan() - * e.g. so all source plans for a ModifyTable node can be processed - all such * plans need to share the same EState. */ typedef struct EPQState { /* Initialized at EvalPlanQualInit() time: */ EState *parentestate; /* main query's EState */ int epqParam; /* ID of Param to force scan node re-eval */ /* * Tuples to be substituted by scan nodes. They need to set up, before * calling EvalPlanQual()/EvalPlanQualNext(), into the slot returned by * EvalPlanQualSlot(scanrelid). The array is indexed by scanrelid - 1. */ List *tuple_table; /* tuple table for relsubs_slot */ TupleTableSlot **relsubs_slot; /* * Initialized by EvalPlanQualInit(), may be changed later with * EvalPlanQualSetPlan(): */ Plan *plan; /* plan tree to be executed */ List *arowMarks; /* ExecAuxRowMarks (non-locking only) */ /* * The original output tuple to be rechecked. Set by * EvalPlanQualSetSlot(), before EvalPlanQualNext() or EvalPlanQual() may * be called. */ TupleTableSlot *origslot; /* Initialized or reset by EvalPlanQualBegin(): */ EState *recheckestate; /* EState for EPQ execution, see above */ /* * Rowmarks that can be fetched on-demand using * EvalPlanQualFetchRowMark(), indexed by scanrelid - 1. Only non-locking * rowmarks. */ ExecAuxRowMark **relsubs_rowmark; /* * True if a relation's EPQ tuple has been fetched for relation, indexed * by scanrelid - 1. */ bool *relsubs_done; PlanState *recheckplanstate; /* EPQ specific exec nodes, for ->plan */ } EPQState; /* ---------------- * ResultState information * ---------------- */ typedef struct ResultState { PlanState ps; /* its first field is NodeTag */ ExprState *resconstantqual; bool rs_done; /* are we done? */ bool rs_checkqual; /* do we need to check the qual? */ } ResultState; /* ---------------- * ProjectSetState information * * Note: at least one of the "elems" will be a SetExprState; the rest are * regular ExprStates. * ---------------- */ typedef struct ProjectSetState { PlanState ps; /* its first field is NodeTag */ Node **elems; /* array of expression states */ ExprDoneCond *elemdone; /* array of per-SRF is-done states */ int nelems; /* length of elemdone[] array */ bool pending_srf_tuples; /* still evaluating srfs in tlist? */ MemoryContext argcontext; /* context for SRF arguments */ } ProjectSetState; /* ---------------- * ModifyTableState information * ---------------- */ typedef struct ModifyTableState { PlanState ps; /* its first field is NodeTag */ CmdType operation; /* INSERT, UPDATE, or DELETE */ bool canSetTag; /* do we set the command tag/es_processed? */ bool mt_done; /* are we done? */ PlanState **mt_plans; /* subplans (one per target rel) */ int mt_nplans; /* number of plans in the array */ int mt_whichplan; /* which one is being executed (0..n-1) */ TupleTableSlot **mt_scans; /* input tuple corresponding to underlying * plans */ ResultRelInfo *resultRelInfo; /* per-subplan target relations */ ResultRelInfo *rootResultRelInfo; /* root target relation (partitioned * table root) */ List **mt_arowmarks; /* per-subplan ExecAuxRowMark lists */ EPQState mt_epqstate; /* for evaluating EvalPlanQual rechecks */ bool fireBSTriggers; /* do we need to fire stmt triggers? */ /* * Slot for storing tuples in the root partitioned table's rowtype during * an UPDATE of a partitioned table. */ TupleTableSlot *mt_root_tuple_slot; /* Tuple-routing support info */ struct PartitionTupleRouting *mt_partition_tuple_routing; /* controls transition table population for specified operation */ struct TransitionCaptureState *mt_transition_capture; /* controls transition table population for INSERT...ON CONFLICT UPDATE */ struct TransitionCaptureState *mt_oc_transition_capture; /* Per plan map for tuple conversion from child to root */ TupleConversionMap **mt_per_subplan_tupconv_maps; } ModifyTableState; /* ---------------- * AppendState information * * nplans how many plans are in the array * whichplan which plan is being executed (0 .. n-1), or a * special negative value. See nodeAppend.c. * prune_state details required to allow partitions to be * eliminated from the scan, or NULL if not possible. * valid_subplans for runtime pruning, valid appendplans indexes to * scan. * ---------------- */ struct AppendState; typedef struct AppendState AppendState; struct ParallelAppendState; typedef struct ParallelAppendState ParallelAppendState; struct PartitionPruneState; struct AppendState { PlanState ps; /* its first field is NodeTag */ PlanState **appendplans; /* array of PlanStates for my inputs */ int as_nplans; int as_whichplan; int as_first_partial_plan; /* Index of 'appendplans' containing * the first partial plan */ ParallelAppendState *as_pstate; /* parallel coordination info */ Size pstate_len; /* size of parallel coordination info */ struct PartitionPruneState *as_prune_state; Bitmapset *as_valid_subplans; bool (*choose_next_subplan) (AppendState *); }; /* ---------------- * MergeAppendState information * * nplans how many plans are in the array * nkeys number of sort key columns * sortkeys sort keys in SortSupport representation * slots current output tuple of each subplan * heap heap of active tuples * initialized true if we have fetched first tuple from each subplan * prune_state details required to allow partitions to be * eliminated from the scan, or NULL if not possible. * valid_subplans for runtime pruning, valid mergeplans indexes to * scan. * ---------------- */ typedef struct MergeAppendState { PlanState ps; /* its first field is NodeTag */ PlanState **mergeplans; /* array of PlanStates for my inputs */ int ms_nplans; int ms_nkeys; SortSupport ms_sortkeys; /* array of length ms_nkeys */ TupleTableSlot **ms_slots; /* array of length ms_nplans */ struct binaryheap *ms_heap; /* binary heap of slot indices */ bool ms_initialized; /* are subplans started? */ struct PartitionPruneState *ms_prune_state; Bitmapset *ms_valid_subplans; } MergeAppendState; /* ---------------- * RecursiveUnionState information * * RecursiveUnionState is used for performing a recursive union. * * recursing T when we're done scanning the non-recursive term * intermediate_empty T if intermediate_table is currently empty * working_table working table (to be scanned by recursive term) * intermediate_table current recursive output (next generation of WT) * ---------------- */ typedef struct RecursiveUnionState { PlanState ps; /* its first field is NodeTag */ bool recursing; bool intermediate_empty; Tuplestorestate *working_table; Tuplestorestate *intermediate_table; /* Remaining fields are unused in UNION ALL case */ Oid *eqfuncoids; /* per-grouping-field equality fns */ FmgrInfo *hashfunctions; /* per-grouping-field hash fns */ MemoryContext tempContext; /* short-term context for comparisons */ TupleHashTable hashtable; /* hash table for tuples already seen */ MemoryContext tableContext; /* memory context containing hash table */ } RecursiveUnionState; /* ---------------- * BitmapAndState information * ---------------- */ typedef struct BitmapAndState { PlanState ps; /* its first field is NodeTag */ PlanState **bitmapplans; /* array of PlanStates for my inputs */ int nplans; /* number of input plans */ } BitmapAndState; /* ---------------- * BitmapOrState information * ---------------- */ typedef struct BitmapOrState { PlanState ps; /* its first field is NodeTag */ PlanState **bitmapplans; /* array of PlanStates for my inputs */ int nplans; /* number of input plans */ } BitmapOrState; /* ---------------------------------------------------------------- * Scan State Information * ---------------------------------------------------------------- */ /* ---------------- * ScanState information * * ScanState extends PlanState for node types that represent * scans of an underlying relation. It can also be used for nodes * that scan the output of an underlying plan node --- in that case, * only ScanTupleSlot is actually useful, and it refers to the tuple * retrieved from the subplan. * * currentRelation relation being scanned (NULL if none) * currentScanDesc current scan descriptor for scan (NULL if none) * ScanTupleSlot pointer to slot in tuple table holding scan tuple * ---------------- */ typedef struct ScanState { PlanState ps; /* its first field is NodeTag */ Relation ss_currentRelation; struct TableScanDescData *ss_currentScanDesc; TupleTableSlot *ss_ScanTupleSlot; } ScanState; /* ---------------- * SeqScanState information * ---------------- */ typedef struct SeqScanState { ScanState ss; /* its first field is NodeTag */ Size pscan_len; /* size of parallel heap scan descriptor */ } SeqScanState; /* ---------------- * SampleScanState information * ---------------- */ typedef struct SampleScanState { ScanState ss; List *args; /* expr states for TABLESAMPLE params */ ExprState *repeatable; /* expr state for REPEATABLE expr */ /* use struct pointer to avoid including tsmapi.h here */ struct TsmRoutine *tsmroutine; /* descriptor for tablesample method */ void *tsm_state; /* tablesample method can keep state here */ bool use_bulkread; /* use bulkread buffer access strategy? */ bool use_pagemode; /* use page-at-a-time visibility checking? */ bool begun; /* false means need to call BeginSampleScan */ uint32 seed; /* random seed */ int64 donetuples; /* number of tuples already returned */ bool haveblock; /* has a block for sampling been determined */ bool done; /* exhausted all tuples? */ } SampleScanState; /* * These structs store information about index quals that don't have simple * constant right-hand sides. See comments for ExecIndexBuildScanKeys() * for discussion. */ typedef struct { struct ScanKeyData *scan_key; /* scankey to put value into */ ExprState *key_expr; /* expr to evaluate to get value */ bool key_toastable; /* is expr's result a toastable datatype? */ } IndexRuntimeKeyInfo; typedef struct { struct ScanKeyData *scan_key; /* scankey to put value into */ ExprState *array_expr; /* expr to evaluate to get array value */ int next_elem; /* next array element to use */ int num_elems; /* number of elems in current array value */ Datum *elem_values; /* array of num_elems Datums */ bool *elem_nulls; /* array of num_elems is-null flags */ } IndexArrayKeyInfo; /* ---------------- * IndexScanState information * * indexqualorig execution state for indexqualorig expressions * indexorderbyorig execution state for indexorderbyorig expressions * ScanKeys Skey structures for index quals * NumScanKeys number of ScanKeys * OrderByKeys Skey structures for index ordering operators * NumOrderByKeys number of OrderByKeys * RuntimeKeys info about Skeys that must be evaluated at runtime * NumRuntimeKeys number of RuntimeKeys * RuntimeKeysReady true if runtime Skeys have been computed * RuntimeContext expr context for evaling runtime Skeys * RelationDesc index relation descriptor * ScanDesc index scan descriptor * * ReorderQueue tuples that need reordering due to re-check * ReachedEnd have we fetched all tuples from index already? * OrderByValues values of ORDER BY exprs of last fetched tuple * OrderByNulls null flags for OrderByValues * SortSupport for reordering ORDER BY exprs * OrderByTypByVals is the datatype of order by expression pass-by-value? * OrderByTypLens typlens of the datatypes of order by expressions * PscanLen size of parallel index scan descriptor * ---------------- */ typedef struct IndexScanState { ScanState ss; /* its first field is NodeTag */ ExprState *indexqualorig; List *indexorderbyorig; struct ScanKeyData *iss_ScanKeys; int iss_NumScanKeys; struct ScanKeyData *iss_OrderByKeys; int iss_NumOrderByKeys; IndexRuntimeKeyInfo *iss_RuntimeKeys; int iss_NumRuntimeKeys; bool iss_RuntimeKeysReady; ExprContext *iss_RuntimeContext; Relation iss_RelationDesc; struct IndexScanDescData *iss_ScanDesc; /* These are needed for re-checking ORDER BY expr ordering */ pairingheap *iss_ReorderQueue; bool iss_ReachedEnd; Datum *iss_OrderByValues; bool *iss_OrderByNulls; SortSupport iss_SortSupport; bool *iss_OrderByTypByVals; int16 *iss_OrderByTypLens; Size iss_PscanLen; } IndexScanState; /* ---------------- * IndexOnlyScanState information * * indexqual execution state for indexqual expressions * ScanKeys Skey structures for index quals * NumScanKeys number of ScanKeys * OrderByKeys Skey structures for index ordering operators * NumOrderByKeys number of OrderByKeys * RuntimeKeys info about Skeys that must be evaluated at runtime * NumRuntimeKeys number of RuntimeKeys * RuntimeKeysReady true if runtime Skeys have been computed * RuntimeContext expr context for evaling runtime Skeys * RelationDesc index relation descriptor * ScanDesc index scan descriptor * TableSlot slot for holding tuples fetched from the table * VMBuffer buffer in use for visibility map testing, if any * PscanLen size of parallel index-only scan descriptor * ---------------- */ typedef struct IndexOnlyScanState { ScanState ss; /* its first field is NodeTag */ ExprState *indexqual; struct ScanKeyData *ioss_ScanKeys; int ioss_NumScanKeys; struct ScanKeyData *ioss_OrderByKeys; int ioss_NumOrderByKeys; IndexRuntimeKeyInfo *ioss_RuntimeKeys; int ioss_NumRuntimeKeys; bool ioss_RuntimeKeysReady; ExprContext *ioss_RuntimeContext; Relation ioss_RelationDesc; struct IndexScanDescData *ioss_ScanDesc; TupleTableSlot *ioss_TableSlot; Buffer ioss_VMBuffer; Size ioss_PscanLen; } IndexOnlyScanState; /* ---------------- * BitmapIndexScanState information * * result bitmap to return output into, or NULL * ScanKeys Skey structures for index quals * NumScanKeys number of ScanKeys * RuntimeKeys info about Skeys that must be evaluated at runtime * NumRuntimeKeys number of RuntimeKeys * ArrayKeys info about Skeys that come from ScalarArrayOpExprs * NumArrayKeys number of ArrayKeys * RuntimeKeysReady true if runtime Skeys have been computed * RuntimeContext expr context for evaling runtime Skeys * RelationDesc index relation descriptor * ScanDesc index scan descriptor * ---------------- */ typedef struct BitmapIndexScanState { ScanState ss; /* its first field is NodeTag */ TIDBitmap *biss_result; struct ScanKeyData *biss_ScanKeys; int biss_NumScanKeys; IndexRuntimeKeyInfo *biss_RuntimeKeys; int biss_NumRuntimeKeys; IndexArrayKeyInfo *biss_ArrayKeys; int biss_NumArrayKeys; bool biss_RuntimeKeysReady; ExprContext *biss_RuntimeContext; Relation biss_RelationDesc; struct IndexScanDescData *biss_ScanDesc; } BitmapIndexScanState; /* ---------------- * SharedBitmapState information * * BM_INITIAL TIDBitmap creation is not yet started, so first worker * to see this state will set the state to BM_INPROGRESS * and that process will be responsible for creating * TIDBitmap. * BM_INPROGRESS TIDBitmap creation is in progress; workers need to * sleep until it's finished. * BM_FINISHED TIDBitmap creation is done, so now all workers can * proceed to iterate over TIDBitmap. * ---------------- */ typedef enum { BM_INITIAL, BM_INPROGRESS, BM_FINISHED } SharedBitmapState; /* ---------------- * ParallelBitmapHeapState information * tbmiterator iterator for scanning current pages * prefetch_iterator iterator for prefetching ahead of current page * mutex mutual exclusion for the prefetching variable * and state * prefetch_pages # pages prefetch iterator is ahead of current * prefetch_target current target prefetch distance * state current state of the TIDBitmap * cv conditional wait variable * phs_snapshot_data snapshot data shared to workers * ---------------- */ typedef struct ParallelBitmapHeapState { dsa_pointer tbmiterator; dsa_pointer prefetch_iterator; slock_t mutex; int prefetch_pages; int prefetch_target; SharedBitmapState state; ConditionVariable cv; char phs_snapshot_data[FLEXIBLE_ARRAY_MEMBER]; } ParallelBitmapHeapState; /* ---------------- * BitmapHeapScanState information * * bitmapqualorig execution state for bitmapqualorig expressions * tbm bitmap obtained from child index scan(s) * tbmiterator iterator for scanning current pages * tbmres current-page data * can_skip_fetch can we potentially skip tuple fetches in this scan? * return_empty_tuples number of empty tuples to return * vmbuffer buffer for visibility-map lookups * pvmbuffer ditto, for prefetched pages * exact_pages total number of exact pages retrieved * lossy_pages total number of lossy pages retrieved * prefetch_iterator iterator for prefetching ahead of current page * prefetch_pages # pages prefetch iterator is ahead of current * prefetch_target current target prefetch distance * prefetch_maximum maximum value for prefetch_target * pscan_len size of the shared memory for parallel bitmap * initialized is node is ready to iterate * shared_tbmiterator shared iterator * shared_prefetch_iterator shared iterator for prefetching * pstate shared state for parallel bitmap scan * ---------------- */ typedef struct BitmapHeapScanState { ScanState ss; /* its first field is NodeTag */ ExprState *bitmapqualorig; TIDBitmap *tbm; TBMIterator *tbmiterator; TBMIterateResult *tbmres; bool can_skip_fetch; int return_empty_tuples; Buffer vmbuffer; Buffer pvmbuffer; long exact_pages; long lossy_pages; TBMIterator *prefetch_iterator; int prefetch_pages; int prefetch_target; int prefetch_maximum; Size pscan_len; bool initialized; TBMSharedIterator *shared_tbmiterator; TBMSharedIterator *shared_prefetch_iterator; ParallelBitmapHeapState *pstate; } BitmapHeapScanState; /* ---------------- * TidScanState information * * tidexprs list of TidExpr structs (see nodeTidscan.c) * isCurrentOf scan has a CurrentOfExpr qual * NumTids number of tids in this scan * TidPtr index of currently fetched tid * TidList evaluated item pointers (array of size NumTids) * htup currently-fetched tuple, if any * ---------------- */ typedef struct TidScanState { ScanState ss; /* its first field is NodeTag */ List *tss_tidexprs; bool tss_isCurrentOf; int tss_NumTids; int tss_TidPtr; ItemPointerData *tss_TidList; HeapTupleData tss_htup; } TidScanState; /* ---------------- * SubqueryScanState information * * SubqueryScanState is used for scanning a sub-query in the range table. * ScanTupleSlot references the current output tuple of the sub-query. * ---------------- */ typedef struct SubqueryScanState { ScanState ss; /* its first field is NodeTag */ PlanState *subplan; } SubqueryScanState; /* ---------------- * FunctionScanState information * * Function nodes are used to scan the results of a * function appearing in FROM (typically a function returning set). * * eflags node's capability flags * ordinality is this scan WITH ORDINALITY? * simple true if we have 1 function and no ordinality * ordinal current ordinal column value * nfuncs number of functions being executed * funcstates per-function execution states (private in * nodeFunctionscan.c) * argcontext memory context to evaluate function arguments in * ---------------- */ struct FunctionScanPerFuncState; typedef struct FunctionScanState { ScanState ss; /* its first field is NodeTag */ int eflags; bool ordinality; bool simple; int64 ordinal; int nfuncs; struct FunctionScanPerFuncState *funcstates; /* array of length nfuncs */ MemoryContext argcontext; } FunctionScanState; /* ---------------- * ValuesScanState information * * ValuesScan nodes are used to scan the results of a VALUES list * * rowcontext per-expression-list context * exprlists array of expression lists being evaluated * exprstatelists array of expression state lists, for SubPlans only * array_len size of above arrays * curr_idx current array index (0-based) * * Note: ss.ps.ps_ExprContext is used to evaluate any qual or projection * expressions attached to the node. We create a second ExprContext, * rowcontext, in which to build the executor expression state for each * Values sublist. Resetting this context lets us get rid of expression * state for each row, avoiding major memory leakage over a long values list. * However, that doesn't work for sublists containing SubPlans, because a * SubPlan has to be connected up to the outer plan tree to work properly. * Therefore, for only those sublists containing SubPlans, we do expression * state construction at executor start, and store those pointers in * exprstatelists[]. NULL entries in that array correspond to simple * subexpressions that are handled as described above. * ---------------- */ typedef struct ValuesScanState { ScanState ss; /* its first field is NodeTag */ ExprContext *rowcontext; List **exprlists; List **exprstatelists; int array_len; int curr_idx; } ValuesScanState; /* ---------------- * TableFuncScanState node * * Used in table-expression functions like XMLTABLE. * ---------------- */ typedef struct TableFuncScanState { ScanState ss; /* its first field is NodeTag */ ExprState *docexpr; /* state for document expression */ ExprState *rowexpr; /* state for row-generating expression */ List *colexprs; /* state for column-generating expression */ List *coldefexprs; /* state for column default expressions */ List *ns_names; /* same as TableFunc.ns_names */ List *ns_uris; /* list of states of namespace URI exprs */ Bitmapset *notnulls; /* nullability flag for each output column */ void *opaque; /* table builder private space */ const struct TableFuncRoutine *routine; /* table builder methods */ FmgrInfo *in_functions; /* input function for each column */ Oid *typioparams; /* typioparam for each column */ int64 ordinal; /* row number to be output next */ MemoryContext perTableCxt; /* per-table context */ Tuplestorestate *tupstore; /* output tuple store */ } TableFuncScanState; /* ---------------- * CteScanState information * * CteScan nodes are used to scan a CommonTableExpr query. * * Multiple CteScan nodes can read out from the same CTE query. We use * a tuplestore to hold rows that have been read from the CTE query but * not yet consumed by all readers. * ---------------- */ typedef struct CteScanState { ScanState ss; /* its first field is NodeTag */ int eflags; /* capability flags to pass to tuplestore */ int readptr; /* index of my tuplestore read pointer */ PlanState *cteplanstate; /* PlanState for the CTE query itself */ /* Link to the "leader" CteScanState (possibly this same node) */ struct CteScanState *leader; /* The remaining fields are only valid in the "leader" CteScanState */ Tuplestorestate *cte_table; /* rows already read from the CTE query */ bool eof_cte; /* reached end of CTE query? */ } CteScanState; /* ---------------- * NamedTuplestoreScanState information * * NamedTuplestoreScan nodes are used to scan a Tuplestore created and * named prior to execution of the query. An example is a transition * table for an AFTER trigger. * * Multiple NamedTuplestoreScan nodes can read out from the same Tuplestore. * ---------------- */ typedef struct NamedTuplestoreScanState { ScanState ss; /* its first field is NodeTag */ int readptr; /* index of my tuplestore read pointer */ TupleDesc tupdesc; /* format of the tuples in the tuplestore */ Tuplestorestate *relation; /* the rows */ } NamedTuplestoreScanState; /* ---------------- * WorkTableScanState information * * WorkTableScan nodes are used to scan the work table created by * a RecursiveUnion node. We locate the RecursiveUnion node * during executor startup. * ---------------- */ typedef struct WorkTableScanState { ScanState ss; /* its first field is NodeTag */ RecursiveUnionState *rustate; } WorkTableScanState; /* ---------------- * ForeignScanState information * * ForeignScan nodes are used to scan foreign-data tables. * ---------------- */ typedef struct ForeignScanState { ScanState ss; /* its first field is NodeTag */ ExprState *fdw_recheck_quals; /* original quals not in ss.ps.qual */ Size pscan_len; /* size of parallel coordination information */ /* use struct pointer to avoid including fdwapi.h here */ struct FdwRoutine *fdwroutine; void *fdw_state; /* foreign-data wrapper can keep state here */ } ForeignScanState; /* ---------------- * CustomScanState information * * CustomScan nodes are used to execute custom code within executor. * * Core code must avoid assuming that the CustomScanState is only as large as * the structure declared here; providers are allowed to make it the first * element in a larger structure, and typically would need to do so. The * struct is actually allocated by the CreateCustomScanState method associated * with the plan node. Any additional fields can be initialized there, or in * the BeginCustomScan method. * ---------------- */ struct CustomExecMethods; typedef struct CustomScanState { ScanState ss; uint32 flags; /* mask of CUSTOMPATH_* flags, see * nodes/extensible.h */ List *custom_ps; /* list of child PlanState nodes, if any */ Size pscan_len; /* size of parallel coordination information */ const struct CustomExecMethods *methods; } CustomScanState; /* ---------------------------------------------------------------- * Join State Information * ---------------------------------------------------------------- */ /* ---------------- * JoinState information * * Superclass for state nodes of join plans. * ---------------- */ typedef struct JoinState { PlanState ps; JoinType jointype; bool single_match; /* True if we should skip to next outer tuple * after finding one inner match */ ExprState *joinqual; /* JOIN quals (in addition to ps.qual) */ } JoinState; /* ---------------- * NestLoopState information * * NeedNewOuter true if need new outer tuple on next call * MatchedOuter true if found a join match for current outer tuple * NullInnerTupleSlot prepared null tuple for left outer joins * ---------------- */ typedef struct NestLoopState { JoinState js; /* its first field is NodeTag */ bool nl_NeedNewOuter; bool nl_MatchedOuter; TupleTableSlot *nl_NullInnerTupleSlot; } NestLoopState; /* ---------------- * MergeJoinState information * * NumClauses number of mergejoinable join clauses * Clauses info for each mergejoinable clause * JoinState current state of ExecMergeJoin state machine * SkipMarkRestore true if we may skip Mark and Restore operations * ExtraMarks true to issue extra Mark operations on inner scan * ConstFalseJoin true if we have a constant-false joinqual * FillOuter true if should emit unjoined outer tuples anyway * FillInner true if should emit unjoined inner tuples anyway * MatchedOuter true if found a join match for current outer tuple * MatchedInner true if found a join match for current inner tuple * OuterTupleSlot slot in tuple table for cur outer tuple * InnerTupleSlot slot in tuple table for cur inner tuple * MarkedTupleSlot slot in tuple table for marked tuple * NullOuterTupleSlot prepared null tuple for right outer joins * NullInnerTupleSlot prepared null tuple for left outer joins * OuterEContext workspace for computing outer tuple's join values * InnerEContext workspace for computing inner tuple's join values * ---------------- */ /* private in nodeMergejoin.c: */ typedef struct MergeJoinClauseData *MergeJoinClause; typedef struct MergeJoinState { JoinState js; /* its first field is NodeTag */ int mj_NumClauses; MergeJoinClause mj_Clauses; /* array of length mj_NumClauses */ int mj_JoinState; bool mj_SkipMarkRestore; bool mj_ExtraMarks; bool mj_ConstFalseJoin; bool mj_FillOuter; bool mj_FillInner; bool mj_MatchedOuter; bool mj_MatchedInner; TupleTableSlot *mj_OuterTupleSlot; TupleTableSlot *mj_InnerTupleSlot; TupleTableSlot *mj_MarkedTupleSlot; TupleTableSlot *mj_NullOuterTupleSlot; TupleTableSlot *mj_NullInnerTupleSlot; ExprContext *mj_OuterEContext; ExprContext *mj_InnerEContext; } MergeJoinState; /* ---------------- * HashJoinState information * * hashclauses original form of the hashjoin condition * hj_OuterHashKeys the outer hash keys in the hashjoin condition * hj_HashOperators the join operators in the hashjoin condition * hj_HashTable hash table for the hashjoin * (NULL if table not built yet) * hj_CurHashValue hash value for current outer tuple * hj_CurBucketNo regular bucket# for current outer tuple * hj_CurSkewBucketNo skew bucket# for current outer tuple * hj_CurTuple last inner tuple matched to current outer * tuple, or NULL if starting search * (hj_CurXXX variables are undefined if * OuterTupleSlot is empty!) * hj_OuterTupleSlot tuple slot for outer tuples * hj_HashTupleSlot tuple slot for inner (hashed) tuples * hj_NullOuterTupleSlot prepared null tuple for right/full outer joins * hj_NullInnerTupleSlot prepared null tuple for left/full outer joins * hj_FirstOuterTupleSlot first tuple retrieved from outer plan * hj_JoinState current state of ExecHashJoin state machine * hj_MatchedOuter true if found a join match for current outer * hj_OuterNotEmpty true if outer relation known not empty * ---------------- */ /* these structs are defined in executor/hashjoin.h: */ typedef struct HashJoinTupleData *HashJoinTuple; typedef struct HashJoinTableData *HashJoinTable; typedef struct HashJoinState { JoinState js; /* its first field is NodeTag */ ExprState *hashclauses; List *hj_OuterHashKeys; /* list of ExprState nodes */ List *hj_HashOperators; /* list of operator OIDs */ List *hj_Collations; HashJoinTable hj_HashTable; uint32 hj_CurHashValue; int hj_CurBucketNo; int hj_CurSkewBucketNo; HashJoinTuple hj_CurTuple; TupleTableSlot *hj_OuterTupleSlot; TupleTableSlot *hj_HashTupleSlot; TupleTableSlot *hj_NullOuterTupleSlot; TupleTableSlot *hj_NullInnerTupleSlot; TupleTableSlot *hj_FirstOuterTupleSlot; int hj_JoinState; bool hj_MatchedOuter; bool hj_OuterNotEmpty; } HashJoinState; /* ---------------------------------------------------------------- * Materialization State Information * ---------------------------------------------------------------- */ /* ---------------- * MaterialState information * * materialize nodes are used to materialize the results * of a subplan into a temporary file. * * ss.ss_ScanTupleSlot refers to output of underlying plan. * ---------------- */ typedef struct MaterialState { ScanState ss; /* its first field is NodeTag */ int eflags; /* capability flags to pass to tuplestore */ bool eof_underlying; /* reached end of underlying plan? */ Tuplestorestate *tuplestorestate; } MaterialState; /* ---------------- * When performing sorting by multiple keys, it's possible that the input * dataset is already sorted on a prefix of those keys. We call these * "presorted keys". * PresortedKeyData represents information about one such key. * ---------------- */ typedef struct PresortedKeyData { FmgrInfo flinfo; /* comparison function info */ FunctionCallInfo fcinfo; /* comparison function call info */ OffsetNumber attno; /* attribute number in tuple */ } PresortedKeyData; /* ---------------- * Shared memory container for per-worker sort information * ---------------- */ typedef struct SharedSortInfo { int num_workers; TuplesortInstrumentation sinstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedSortInfo; /* ---------------- * SortState information * ---------------- */ typedef struct SortState { ScanState ss; /* its first field is NodeTag */ bool randomAccess; /* need random access to sort output? */ bool bounded; /* is the result set bounded? */ int64 bound; /* if bounded, how many tuples are needed */ bool sort_Done; /* sort completed yet? */ bool bounded_Done; /* value of bounded we did the sort with */ int64 bound_Done; /* value of bound we did the sort with */ void *tuplesortstate; /* private state of tuplesort.c */ bool am_worker; /* are we a worker? */ SharedSortInfo *shared_info; /* one entry per worker */ } SortState; /* ---------------- * Instrumentation information for IncrementalSort * ---------------- */ typedef struct IncrementalSortGroupInfo { int64 groupCount; int64 maxDiskSpaceUsed; int64 totalDiskSpaceUsed; int64 maxMemorySpaceUsed; int64 totalMemorySpaceUsed; bits32 sortMethods; /* bitmask of TuplesortMethod */ } IncrementalSortGroupInfo; typedef struct IncrementalSortInfo { IncrementalSortGroupInfo fullsortGroupInfo; IncrementalSortGroupInfo prefixsortGroupInfo; } IncrementalSortInfo; /* ---------------- * Shared memory container for per-worker incremental sort information * ---------------- */ typedef struct SharedIncrementalSortInfo { int num_workers; IncrementalSortInfo sinfo[FLEXIBLE_ARRAY_MEMBER]; } SharedIncrementalSortInfo; /* ---------------- * IncrementalSortState information * ---------------- */ typedef enum { INCSORT_LOADFULLSORT, INCSORT_LOADPREFIXSORT, INCSORT_READFULLSORT, INCSORT_READPREFIXSORT, } IncrementalSortExecutionStatus; typedef struct IncrementalSortState { ScanState ss; /* its first field is NodeTag */ bool bounded; /* is the result set bounded? */ int64 bound; /* if bounded, how many tuples are needed */ bool outerNodeDone; /* finished fetching tuples from outer node */ int64 bound_Done; /* value of bound we did the sort with */ IncrementalSortExecutionStatus execution_status; int64 n_fullsort_remaining; Tuplesortstate *fullsort_state; /* private state of tuplesort.c */ Tuplesortstate *prefixsort_state; /* private state of tuplesort.c */ /* the keys by which the input path is already sorted */ PresortedKeyData *presorted_keys; IncrementalSortInfo incsort_info; /* slot for pivot tuple defining values of presorted keys within group */ TupleTableSlot *group_pivot; TupleTableSlot *transfer_tuple; bool am_worker; /* are we a worker? */ SharedIncrementalSortInfo *shared_info; /* one entry per worker */ } IncrementalSortState; /* --------------------- * GroupState information * --------------------- */ typedef struct GroupState { ScanState ss; /* its first field is NodeTag */ ExprState *eqfunction; /* equality function */ bool grp_done; /* indicates completion of Group scan */ } GroupState; /* --------------------- * per-worker aggregate information * --------------------- */ typedef struct AggregateInstrumentation { Size hash_mem_peak; /* peak hash table memory usage */ uint64 hash_disk_used; /* kB of disk space used */ int hash_batches_used; /* batches used during entire execution */ } AggregateInstrumentation; /* ---------------- * Shared memory container for per-worker aggregate information * ---------------- */ typedef struct SharedAggInfo { int num_workers; AggregateInstrumentation sinstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedAggInfo; /* --------------------- * AggState information * * ss.ss_ScanTupleSlot refers to output of underlying plan. * * Note: ss.ps.ps_ExprContext contains ecxt_aggvalues and * ecxt_aggnulls arrays, which hold the computed agg values for the current * input group during evaluation of an Agg node's output tuple(s). We * create a second ExprContext, tmpcontext, in which to evaluate input * expressions and run the aggregate transition functions. * --------------------- */ /* these structs are private in nodeAgg.c: */ typedef struct AggStatePerAggData *AggStatePerAgg; typedef struct AggStatePerTransData *AggStatePerTrans; typedef struct AggStatePerGroupData *AggStatePerGroup; typedef struct AggStatePerPhaseData *AggStatePerPhase; typedef struct AggStatePerHashData *AggStatePerHash; typedef struct AggState { ScanState ss; /* its first field is NodeTag */ List *aggs; /* all Aggref nodes in targetlist & quals */ int numaggs; /* length of list (could be zero!) */ int numtrans; /* number of pertrans items */ AggStrategy aggstrategy; /* strategy mode */ AggSplit aggsplit; /* agg-splitting mode, see nodes.h */ AggStatePerPhase phase; /* pointer to current phase data */ int numphases; /* number of phases (including phase 0) */ int current_phase; /* current phase number */ AggStatePerAgg peragg; /* per-Aggref information */ AggStatePerTrans pertrans; /* per-Trans state information */ ExprContext *hashcontext; /* econtexts for long-lived data (hashtable) */ ExprContext **aggcontexts; /* econtexts for long-lived data (per GS) */ ExprContext *tmpcontext; /* econtext for input expressions */ #define FIELDNO_AGGSTATE_CURAGGCONTEXT 14 ExprContext *curaggcontext; /* currently active aggcontext */ AggStatePerAgg curperagg; /* currently active aggregate, if any */ #define FIELDNO_AGGSTATE_CURPERTRANS 16 AggStatePerTrans curpertrans; /* currently active trans state, if any */ bool input_done; /* indicates end of input */ bool agg_done; /* indicates completion of Agg scan */ int projected_set; /* The last projected grouping set */ #define FIELDNO_AGGSTATE_CURRENT_SET 20 int current_set; /* The current grouping set being evaluated */ Bitmapset *grouped_cols; /* grouped cols in current projection */ List *all_grouped_cols; /* list of all grouped cols in DESC order */ Bitmapset *colnos_needed; /* all columns needed from the outer plan */ int max_colno_needed; /* highest colno needed from outer plan */ bool all_cols_needed; /* are all cols from outer plan needed? */ /* These fields are for grouping set phase data */ int maxsets; /* The max number of sets in any phase */ AggStatePerPhase phases; /* array of all phases */ Tuplesortstate *sort_in; /* sorted input to phases > 1 */ Tuplesortstate *sort_out; /* input is copied here for next phase */ TupleTableSlot *sort_slot; /* slot for sort results */ /* these fields are used in AGG_PLAIN and AGG_SORTED modes: */ AggStatePerGroup *pergroups; /* grouping set indexed array of per-group * pointers */ HeapTuple grp_firstTuple; /* copy of first tuple of current group */ /* these fields are used in AGG_HASHED and AGG_MIXED modes: */ bool table_filled; /* hash table filled yet? */ int num_hashes; MemoryContext hash_metacxt; /* memory for hash table itself */ struct HashTapeInfo *hash_tapeinfo; /* metadata for spill tapes */ struct HashAggSpill *hash_spills; /* HashAggSpill for each grouping set, * exists only during first pass */ TupleTableSlot *hash_spill_rslot; /* for reading spill files */ TupleTableSlot *hash_spill_wslot; /* for writing spill files */ List *hash_batches; /* hash batches remaining to be processed */ bool hash_ever_spilled; /* ever spilled during this execution? */ bool hash_spill_mode; /* we hit a limit during the current batch * and we must not create new groups */ Size hash_mem_limit; /* limit before spilling hash table */ uint64 hash_ngroups_limit; /* limit before spilling hash table */ int hash_planned_partitions; /* number of partitions planned * for first pass */ double hashentrysize; /* estimate revised during execution */ Size hash_mem_peak; /* peak hash table memory usage */ uint64 hash_ngroups_current; /* number of groups currently in * memory in all hash tables */ uint64 hash_disk_used; /* kB of disk space used */ int hash_batches_used; /* batches used during entire execution */ AggStatePerHash perhash; /* array of per-hashtable data */ AggStatePerGroup *hash_pergroup; /* grouping set indexed array of * per-group pointers */ /* support for evaluation of agg input expressions: */ #define FIELDNO_AGGSTATE_ALL_PERGROUPS 53 AggStatePerGroup *all_pergroups; /* array of first ->pergroups, than * ->hash_pergroup */ ProjectionInfo *combinedproj; /* projection machinery */ SharedAggInfo *shared_info; /* one entry per worker */ } AggState; /* ---------------- * WindowAggState information * ---------------- */ /* these structs are private in nodeWindowAgg.c: */ typedef struct WindowStatePerFuncData *WindowStatePerFunc; typedef struct WindowStatePerAggData *WindowStatePerAgg; typedef struct WindowAggState { ScanState ss; /* its first field is NodeTag */ /* these fields are filled in by ExecInitExpr: */ List *funcs; /* all WindowFunc nodes in targetlist */ int numfuncs; /* total number of window functions */ int numaggs; /* number that are plain aggregates */ WindowStatePerFunc perfunc; /* per-window-function information */ WindowStatePerAgg peragg; /* per-plain-aggregate information */ ExprState *partEqfunction; /* equality funcs for partition columns */ ExprState *ordEqfunction; /* equality funcs for ordering columns */ Tuplestorestate *buffer; /* stores rows of current partition */ int current_ptr; /* read pointer # for current row */ int framehead_ptr; /* read pointer # for frame head, if used */ int frametail_ptr; /* read pointer # for frame tail, if used */ int grouptail_ptr; /* read pointer # for group tail, if used */ int64 spooled_rows; /* total # of rows in buffer */ int64 currentpos; /* position of current row in partition */ int64 frameheadpos; /* current frame head position */ int64 frametailpos; /* current frame tail position (frame end+1) */ /* use struct pointer to avoid including windowapi.h here */ struct WindowObjectData *agg_winobj; /* winobj for aggregate fetches */ int64 aggregatedbase; /* start row for current aggregates */ int64 aggregatedupto; /* rows before this one are aggregated */ int frameOptions; /* frame_clause options, see WindowDef */ ExprState *startOffset; /* expression for starting bound offset */ ExprState *endOffset; /* expression for ending bound offset */ Datum startOffsetValue; /* result of startOffset evaluation */ Datum endOffsetValue; /* result of endOffset evaluation */ /* these fields are used with RANGE offset PRECEDING/FOLLOWING: */ FmgrInfo startInRangeFunc; /* in_range function for startOffset */ FmgrInfo endInRangeFunc; /* in_range function for endOffset */ Oid inRangeColl; /* collation for in_range tests */ bool inRangeAsc; /* use ASC sort order for in_range tests? */ bool inRangeNullsFirst; /* nulls sort first for in_range tests? */ /* these fields are used in GROUPS mode: */ int64 currentgroup; /* peer group # of current row in partition */ int64 frameheadgroup; /* peer group # of frame head row */ int64 frametailgroup; /* peer group # of frame tail row */ int64 groupheadpos; /* current row's peer group head position */ int64 grouptailpos; /* " " " " tail position (group end+1) */ MemoryContext partcontext; /* context for partition-lifespan data */ MemoryContext aggcontext; /* shared context for aggregate working data */ MemoryContext curaggcontext; /* current aggregate's working data */ ExprContext *tmpcontext; /* short-term evaluation context */ bool all_first; /* true if the scan is starting */ bool all_done; /* true if the scan is finished */ bool partition_spooled; /* true if all tuples in current partition * have been spooled into tuplestore */ bool more_partitions; /* true if there's more partitions after * this one */ bool framehead_valid; /* true if frameheadpos is known up to * date for current row */ bool frametail_valid; /* true if frametailpos is known up to * date for current row */ bool grouptail_valid; /* true if grouptailpos is known up to * date for current row */ TupleTableSlot *first_part_slot; /* first tuple of current or next * partition */ TupleTableSlot *framehead_slot; /* first tuple of current frame */ TupleTableSlot *frametail_slot; /* first tuple after current frame */ /* temporary slots for tuples fetched back from tuplestore */ TupleTableSlot *agg_row_slot; TupleTableSlot *temp_slot_1; TupleTableSlot *temp_slot_2; } WindowAggState; /* ---------------- * UniqueState information * * Unique nodes are used "on top of" sort nodes to discard * duplicate tuples returned from the sort phase. Basically * all it does is compare the current tuple from the subplan * with the previously fetched tuple (stored in its result slot). * If the two are identical in all interesting fields, then * we just fetch another tuple from the sort and try again. * ---------------- */ typedef struct UniqueState { PlanState ps; /* its first field is NodeTag */ ExprState *eqfunction; /* tuple equality qual */ } UniqueState; /* ---------------- * GatherState information * * Gather nodes launch 1 or more parallel workers, run a subplan * in those workers, and collect the results. * ---------------- */ typedef struct GatherState { PlanState ps; /* its first field is NodeTag */ bool initialized; /* workers launched? */ bool need_to_scan_locally; /* need to read from local plan? */ int64 tuples_needed; /* tuple bound, see ExecSetTupleBound */ /* these fields are set up once: */ TupleTableSlot *funnel_slot; struct ParallelExecutorInfo *pei; /* all remaining fields are reinitialized during a rescan: */ int nworkers_launched; /* original number of workers */ int nreaders; /* number of still-active workers */ int nextreader; /* next one to try to read from */ struct TupleQueueReader **reader; /* array with nreaders active entries */ } GatherState; /* ---------------- * GatherMergeState information * * Gather merge nodes launch 1 or more parallel workers, run a * subplan which produces sorted output in each worker, and then * merge the results into a single sorted stream. * ---------------- */ struct GMReaderTupleBuffer; /* private in nodeGatherMerge.c */ typedef struct GatherMergeState { PlanState ps; /* its first field is NodeTag */ bool initialized; /* workers launched? */ bool gm_initialized; /* gather_merge_init() done? */ bool need_to_scan_locally; /* need to read from local plan? */ int64 tuples_needed; /* tuple bound, see ExecSetTupleBound */ /* these fields are set up once: */ TupleDesc tupDesc; /* descriptor for subplan result tuples */ int gm_nkeys; /* number of sort columns */ SortSupport gm_sortkeys; /* array of length gm_nkeys */ struct ParallelExecutorInfo *pei; /* all remaining fields are reinitialized during a rescan */ /* (but the arrays are not reallocated, just cleared) */ int nworkers_launched; /* original number of workers */ int nreaders; /* number of active workers */ TupleTableSlot **gm_slots; /* array with nreaders+1 entries */ struct TupleQueueReader **reader; /* array with nreaders active entries */ struct GMReaderTupleBuffer *gm_tuple_buffers; /* nreaders tuple buffers */ struct binaryheap *gm_heap; /* binary heap of slot indices */ } GatherMergeState; /* ---------------- * Values displayed by EXPLAIN ANALYZE * ---------------- */ typedef struct HashInstrumentation { int nbuckets; /* number of buckets at end of execution */ int nbuckets_original; /* planned number of buckets */ int nbatch; /* number of batches at end of execution */ int nbatch_original; /* planned number of batches */ Size space_peak; /* peak memory usage in bytes */ } HashInstrumentation; /* ---------------- * Shared memory container for per-worker hash information * ---------------- */ typedef struct SharedHashInfo { int num_workers; HashInstrumentation hinstrument[FLEXIBLE_ARRAY_MEMBER]; } SharedHashInfo; /* ---------------- * HashState information * ---------------- */ typedef struct HashState { PlanState ps; /* its first field is NodeTag */ HashJoinTable hashtable; /* hash table for the hashjoin */ List *hashkeys; /* list of ExprState nodes */ /* * In a parallelized hash join, the leader retains a pointer to the * shared-memory stats area in its shared_info field, and then copies the * shared-memory info back to local storage before DSM shutdown. The * shared_info field remains NULL in workers, or in non-parallel joins. */ SharedHashInfo *shared_info; /* * If we are collecting hash stats, this points to an initially-zeroed * collection area, which could be either local storage or in shared * memory; either way it's for just one process. */ HashInstrumentation *hinstrument; /* Parallel hash state. */ struct ParallelHashJoinState *parallel_state; } HashState; /* ---------------- * SetOpState information * * Even in "sorted" mode, SetOp nodes are more complex than a simple * Unique, since we have to count how many duplicates to return. But * we also support hashing, so this is really more like a cut-down * form of Agg. * ---------------- */ /* this struct is private in nodeSetOp.c: */ typedef struct SetOpStatePerGroupData *SetOpStatePerGroup; typedef struct SetOpState { PlanState ps; /* its first field is NodeTag */ ExprState *eqfunction; /* equality comparator */ Oid *eqfuncoids; /* per-grouping-field equality fns */ FmgrInfo *hashfunctions; /* per-grouping-field hash fns */ bool setop_done; /* indicates completion of output scan */ long numOutput; /* number of dups left to output */ /* these fields are used in SETOP_SORTED mode: */ SetOpStatePerGroup pergroup; /* per-group working state */ HeapTuple grp_firstTuple; /* copy of first tuple of current group */ /* these fields are used in SETOP_HASHED mode: */ TupleHashTable hashtable; /* hash table with one entry per group */ MemoryContext tableContext; /* memory context containing hash table */ bool table_filled; /* hash table filled yet? */ TupleHashIterator hashiter; /* for iterating through hash table */ } SetOpState; /* ---------------- * LockRowsState information * * LockRows nodes are used to enforce FOR [KEY] UPDATE/SHARE locking. * ---------------- */ typedef struct LockRowsState { PlanState ps; /* its first field is NodeTag */ List *lr_arowMarks; /* List of ExecAuxRowMarks */ EPQState lr_epqstate; /* for evaluating EvalPlanQual rechecks */ } LockRowsState; /* ---------------- * LimitState information * * Limit nodes are used to enforce LIMIT/OFFSET clauses. * They just select the desired subrange of their subplan's output. * * offset is the number of initial tuples to skip (0 does nothing). * count is the number of tuples to return after skipping the offset tuples. * If no limit count was specified, count is undefined and noCount is true. * When lstate == LIMIT_INITIAL, offset/count/noCount haven't been set yet. * ---------------- */ typedef enum { LIMIT_INITIAL, /* initial state for LIMIT node */ LIMIT_RESCAN, /* rescan after recomputing parameters */ LIMIT_EMPTY, /* there are no returnable rows */ LIMIT_INWINDOW, /* have returned a row in the window */ LIMIT_WINDOWEND_TIES, /* have returned a tied row */ LIMIT_SUBPLANEOF, /* at EOF of subplan (within window) */ LIMIT_WINDOWEND, /* stepped off end of window */ LIMIT_WINDOWSTART /* stepped off beginning of window */ } LimitStateCond; typedef struct LimitState { PlanState ps; /* its first field is NodeTag */ ExprState *limitOffset; /* OFFSET parameter, or NULL if none */ ExprState *limitCount; /* COUNT parameter, or NULL if none */ LimitOption limitOption; /* limit specification type */ int64 offset; /* current OFFSET value */ int64 count; /* current COUNT, if any */ bool noCount; /* if true, ignore count */ LimitStateCond lstate; /* state machine status, as above */ int64 position; /* 1-based index of last tuple returned */ TupleTableSlot *subSlot; /* tuple last obtained from subplan */ ExprState *eqfunction; /* tuple equality qual in case of WITH TIES * option */ TupleTableSlot *last_slot; /* slot for evaluation of ties */ } LimitState; #endif /* EXECNODES_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/extensible.h000066400000000000000000000125721413137616400237750ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * extensible.h * Definitions for extensible nodes and custom scans * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/extensible.h * *------------------------------------------------------------------------- */ #ifndef EXTENSIBLE_H #define EXTENSIBLE_H #include "access/parallel.h" #include "commands/explain.h" #include "nodes/execnodes.h" #include "nodes/pathnodes.h" #include "nodes/plannodes.h" /* maximum length of an extensible node identifier */ #define EXTNODENAME_MAX_LEN 64 /* * An extensible node is a new type of node defined by an extension. The * type is always T_ExtensibleNode, while the extnodename identifies the * specific type of node. extnodename can be looked up to find the * ExtensibleNodeMethods for this node type. */ typedef struct ExtensibleNode { NodeTag type; const char *extnodename; /* identifier of ExtensibleNodeMethods */ } ExtensibleNode; /* * node_size is the size of an extensible node of this type in bytes. * * nodeCopy is a function which performs a deep copy from oldnode to newnode. * It does not need to copy type or extnodename, which are copied by the * core system. * * nodeEqual is a function which performs a deep equality comparison between * a and b and returns true or false accordingly. It does not need to compare * type or extnodename, which are compared by the core system. * * nodeOut is a serialization function for the node type. It should use the * output conventions typical for outfuncs.c. It does not need to output * type or extnodename; the core system handles those. * * nodeRead is a deserialization function for the node type. It does not need * to read type or extnodename; the core system handles those. It should fetch * the next token using pg_strtok() from the current input stream, and then * reconstruct the private fields according to the manner in readfuncs.c. * * All callbacks are mandatory. */ typedef struct ExtensibleNodeMethods { const char *extnodename; Size node_size; void (*nodeCopy) (struct ExtensibleNode *newnode, const struct ExtensibleNode *oldnode); bool (*nodeEqual) (const struct ExtensibleNode *a, const struct ExtensibleNode *b); void (*nodeOut) (struct StringInfoData *str, const struct ExtensibleNode *node); void (*nodeRead) (struct ExtensibleNode *node); } ExtensibleNodeMethods; extern void RegisterExtensibleNodeMethods(const ExtensibleNodeMethods *method); extern const ExtensibleNodeMethods *GetExtensibleNodeMethods(const char *name, bool missing_ok); /* * Flags for custom paths, indicating what capabilities the resulting scan * will have. */ #define CUSTOMPATH_SUPPORT_BACKWARD_SCAN 0x0001 #define CUSTOMPATH_SUPPORT_MARK_RESTORE 0x0002 /* * Custom path methods. Mostly, we just need to know how to convert a * CustomPath to a plan. */ typedef struct CustomPathMethods { const char *CustomName; /* Convert Path to a Plan */ struct Plan *(*PlanCustomPath) (PlannerInfo *root, RelOptInfo *rel, struct CustomPath *best_path, List *tlist, List *clauses, List *custom_plans); struct List *(*ReparameterizeCustomPathByChild) (PlannerInfo *root, List *custom_private, RelOptInfo *child_rel); } CustomPathMethods; /* * Custom scan. Here again, there's not much to do: we need to be able to * generate a ScanState corresponding to the scan. */ typedef struct CustomScanMethods { const char *CustomName; /* Create execution state (CustomScanState) from a CustomScan plan node */ Node *(*CreateCustomScanState) (CustomScan *cscan); } CustomScanMethods; /* * Execution-time methods for a CustomScanState. This is more complex than * what we need for a custom path or scan. */ typedef struct CustomExecMethods { const char *CustomName; /* Required executor methods */ void (*BeginCustomScan) (CustomScanState *node, EState *estate, int eflags); TupleTableSlot *(*ExecCustomScan) (CustomScanState *node); void (*EndCustomScan) (CustomScanState *node); void (*ReScanCustomScan) (CustomScanState *node); /* Optional methods: needed if mark/restore is supported */ void (*MarkPosCustomScan) (CustomScanState *node); void (*RestrPosCustomScan) (CustomScanState *node); /* Optional methods: needed if parallel execution is supported */ Size (*EstimateDSMCustomScan) (CustomScanState *node, ParallelContext *pcxt); void (*InitializeDSMCustomScan) (CustomScanState *node, ParallelContext *pcxt, void *coordinate); void (*ReInitializeDSMCustomScan) (CustomScanState *node, ParallelContext *pcxt, void *coordinate); void (*InitializeWorkerCustomScan) (CustomScanState *node, shm_toc *toc, void *coordinate); void (*ShutdownCustomScan) (CustomScanState *node); /* Optional: print additional information in EXPLAIN */ void (*ExplainCustomScan) (CustomScanState *node, List *ancestors, ExplainState *es); } CustomExecMethods; extern void RegisterCustomScanMethods(const CustomScanMethods *methods); extern const CustomScanMethods *GetCustomScanMethods(const char *CustomName, bool missing_ok); #endif /* EXTENSIBLE_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/lockoptions.h000066400000000000000000000035341413137616400241750ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * lockoptions.h * Common header for some locking-related declarations. * * * Copyright (c) 2014-2020, PostgreSQL Global Development Group * * src/include/nodes/lockoptions.h * *------------------------------------------------------------------------- */ #ifndef LOCKOPTIONS_H #define LOCKOPTIONS_H /* * This enum represents the different strengths of FOR UPDATE/SHARE clauses. * The ordering here is important, because the highest numerical value takes * precedence when a RTE is specified multiple ways. See applyLockingClause. */ typedef enum LockClauseStrength { LCS_NONE, /* no such clause - only used in PlanRowMark */ LCS_FORKEYSHARE, /* FOR KEY SHARE */ LCS_FORSHARE, /* FOR SHARE */ LCS_FORNOKEYUPDATE, /* FOR NO KEY UPDATE */ LCS_FORUPDATE /* FOR UPDATE */ } LockClauseStrength; /* * This enum controls how to deal with rows being locked by FOR UPDATE/SHARE * clauses (i.e., it represents the NOWAIT and SKIP LOCKED options). * The ordering here is important, because the highest numerical value takes * precedence when a RTE is specified multiple ways. See applyLockingClause. */ typedef enum LockWaitPolicy { /* Wait for the lock to become available (default behavior) */ LockWaitBlock, /* Skip rows that can't be locked (SKIP LOCKED) */ LockWaitSkip, /* Raise an error if a row cannot be locked (NOWAIT) */ LockWaitError } LockWaitPolicy; /* * Possible lock modes for a tuple. */ typedef enum LockTupleMode { /* SELECT FOR KEY SHARE */ LockTupleKeyShare, /* SELECT FOR SHARE */ LockTupleShare, /* SELECT FOR NO KEY UPDATE, and UPDATEs that don't modify key columns */ LockTupleNoKeyExclusive, /* SELECT FOR UPDATE, UPDATEs that modify key columns, and DELETE */ LockTupleExclusive } LockTupleMode; #endif /* LOCKOPTIONS_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/makefuncs.h000066400000000000000000000066231413137616400236070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * makefuncs.h * prototypes for the creator functions of various nodes * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/makefuncs.h * *------------------------------------------------------------------------- */ #ifndef MAKEFUNC_H #define MAKEFUNC_H #include "nodes/execnodes.h" #include "nodes/parsenodes.h" extern A_Expr *makeA_Expr(A_Expr_Kind kind, List *name, Node *lexpr, Node *rexpr, int location); extern A_Expr *makeSimpleA_Expr(A_Expr_Kind kind, char *name, Node *lexpr, Node *rexpr, int location); extern Var *makeVar(Index varno, AttrNumber varattno, Oid vartype, int32 vartypmod, Oid varcollid, Index varlevelsup); extern Var *makeVarFromTargetEntry(Index varno, TargetEntry *tle); extern Var *makeWholeRowVar(RangeTblEntry *rte, Index varno, Index varlevelsup, bool allowScalar); extern TargetEntry *makeTargetEntry(Expr *expr, AttrNumber resno, char *resname, bool resjunk); extern TargetEntry *flatCopyTargetEntry(TargetEntry *src_tle); extern FromExpr *makeFromExpr(List *fromlist, Node *quals); extern Const *makeConst(Oid consttype, int32 consttypmod, Oid constcollid, int constlen, Datum constvalue, bool constisnull, bool constbyval); extern Const *makeNullConst(Oid consttype, int32 consttypmod, Oid constcollid); extern Node *makeBoolConst(bool value, bool isnull); extern Expr *makeBoolExpr(BoolExprType boolop, List *args, int location); extern Alias *makeAlias(const char *aliasname, List *colnames); extern RelabelType *makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod, Oid rcollid, CoercionForm rformat); extern RangeVar *makeRangeVar(char *schemaname, char *relname, int location); extern TypeName *makeTypeName(char *typnam); extern TypeName *makeTypeNameFromNameList(List *names); extern TypeName *makeTypeNameFromOid(Oid typeOid, int32 typmod); extern ColumnDef *makeColumnDef(const char *colname, Oid typeOid, int32 typmod, Oid collOid); extern FuncExpr *makeFuncExpr(Oid funcid, Oid rettype, List *args, Oid funccollid, Oid inputcollid, CoercionForm fformat); extern FuncCall *makeFuncCall(List *name, List *args, int location); extern Expr *make_opclause(Oid opno, Oid opresulttype, bool opretset, Expr *leftop, Expr *rightop, Oid opcollid, Oid inputcollid); extern Expr *make_andclause(List *andclauses); extern Expr *make_orclause(List *orclauses); extern Expr *make_notclause(Expr *notclause); extern Node *make_and_qual(Node *qual1, Node *qual2); extern Expr *make_ands_explicit(List *andclauses); extern List *make_ands_implicit(Expr *clause); extern IndexInfo *makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid, List *expressions, List *predicates, bool unique, bool isready, bool concurrent); extern DefElem *makeDefElem(char *name, Node *arg, int location); extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg, DefElemAction defaction, int location); extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int location); extern VacuumRelation *makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols); #endif /* MAKEFUNC_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/memnodes.h000066400000000000000000000075771413137616400234530ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * memnodes.h * POSTGRES memory context node definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/memnodes.h * *------------------------------------------------------------------------- */ #ifndef MEMNODES_H #define MEMNODES_H #include "nodes/nodes.h" /* * MemoryContextCounters * Summarization state for MemoryContextStats collection. * * The set of counters in this struct is biased towards AllocSet; if we ever * add any context types that are based on fundamentally different approaches, * we might need more or different counters here. A possible API spec then * would be to print only nonzero counters, but for now we just summarize in * the format historically used by AllocSet. */ typedef struct MemoryContextCounters { Size nblocks; /* Total number of malloc blocks */ Size freechunks; /* Total number of free chunks */ Size totalspace; /* Total bytes requested from malloc */ Size freespace; /* The unused portion of totalspace */ } MemoryContextCounters; /* * MemoryContext * A logical context in which memory allocations occur. * * MemoryContext itself is an abstract type that can have multiple * implementations. * The function pointers in MemoryContextMethods define one specific * implementation of MemoryContext --- they are a virtual function table * in C++ terms. * * Node types that are actual implementations of memory contexts must * begin with the same fields as MemoryContextData. * * Note: for largely historical reasons, typedef MemoryContext is a pointer * to the context struct rather than the struct type itself. */ typedef void (*MemoryStatsPrintFunc) (MemoryContext context, void *passthru, const char *stats_string); typedef struct MemoryContextMethods { void *(*alloc) (MemoryContext context, Size size); /* call this free_p in case someone #define's free() */ void (*free_p) (MemoryContext context, void *pointer); void *(*realloc) (MemoryContext context, void *pointer, Size size); void (*reset) (MemoryContext context); void (*delete_context) (MemoryContext context); Size (*get_chunk_space) (MemoryContext context, void *pointer); bool (*is_empty) (MemoryContext context); void (*stats) (MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals); #ifdef MEMORY_CONTEXT_CHECKING void (*check) (MemoryContext context); #endif } MemoryContextMethods; typedef struct MemoryContextData { NodeTag type; /* identifies exact kind of context */ /* these two fields are placed here to minimize alignment wastage: */ bool isReset; /* T = no space alloced since last reset */ bool allowInCritSection; /* allow palloc in critical section */ Size mem_allocated; /* track memory allocated for this context */ const MemoryContextMethods *methods; /* virtual function table */ MemoryContext parent; /* NULL if no parent (toplevel context) */ MemoryContext firstchild; /* head of linked list of children */ MemoryContext prevchild; /* previous child of same parent */ MemoryContext nextchild; /* next child of same parent */ const char *name; /* context name (just for debugging) */ const char *ident; /* context ID if any (just for debugging) */ MemoryContextCallback *reset_cbs; /* list of reset/delete callbacks */ } MemoryContextData; /* utils/palloc.h contains typedef struct MemoryContextData *MemoryContext */ /* * MemoryContextIsValid * True iff memory context is valid. * * Add new context types to the set accepted by this macro. */ #define MemoryContextIsValid(context) \ ((context) != NULL && \ (IsA((context), AllocSetContext) || \ IsA((context), SlabContext) || \ IsA((context), GenerationContext))) #endif /* MEMNODES_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/nodeFuncs.h000066400000000000000000000117651413137616400235620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * nodeFuncs.h * Various general-purpose manipulations of Node trees * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/nodeFuncs.h * *------------------------------------------------------------------------- */ #ifndef NODEFUNCS_H #define NODEFUNCS_H #include "nodes/parsenodes.h" /* flags bits for query_tree_walker and query_tree_mutator */ #define QTW_IGNORE_RT_SUBQUERIES 0x01 /* subqueries in rtable */ #define QTW_IGNORE_CTE_SUBQUERIES 0x02 /* subqueries in cteList */ #define QTW_IGNORE_RC_SUBQUERIES 0x03 /* both of above */ #define QTW_IGNORE_JOINALIASES 0x04 /* JOIN alias var lists */ #define QTW_IGNORE_RANGE_TABLE 0x08 /* skip rangetable entirely */ #define QTW_EXAMINE_RTES_BEFORE 0x10 /* examine RTE nodes before their * contents */ #define QTW_EXAMINE_RTES_AFTER 0x20 /* examine RTE nodes after their * contents */ #define QTW_DONT_COPY_QUERY 0x40 /* do not copy top Query */ #define QTW_EXAMINE_SORTGROUP 0x80 /* include SortGroupNode lists */ /* callback function for check_functions_in_node */ typedef bool (*check_function_callback) (Oid func_id, void *context); extern Oid exprType(const Node *expr); extern int32 exprTypmod(const Node *expr); extern bool exprIsLengthCoercion(const Node *expr, int32 *coercedTypmod); extern Node *applyRelabelType(Node *arg, Oid rtype, int32 rtypmod, Oid rcollid, CoercionForm rformat, int rlocation, bool overwrite_ok); extern Node *relabel_to_typmod(Node *expr, int32 typmod); extern Node *strip_implicit_coercions(Node *node); extern bool expression_returns_set(Node *clause); extern Oid exprCollation(const Node *expr); extern Oid exprInputCollation(const Node *expr); extern void exprSetCollation(Node *expr, Oid collation); extern void exprSetInputCollation(Node *expr, Oid inputcollation); extern int exprLocation(const Node *expr); extern void fix_opfuncids(Node *node); extern void set_opfuncid(OpExpr *opexpr); extern void set_sa_opfuncid(ScalarArrayOpExpr *opexpr); /* Is clause a FuncExpr clause? */ static inline bool is_funcclause(const void *clause) { return clause != NULL && IsA(clause, FuncExpr); } /* Is clause an OpExpr clause? */ static inline bool is_opclause(const void *clause) { return clause != NULL && IsA(clause, OpExpr); } /* Extract left arg of a binary opclause, or only arg of a unary opclause */ static inline Node * get_leftop(const void *clause) { const OpExpr *expr = (const OpExpr *) clause; if (expr->args != NIL) return (Node *) linitial(expr->args); else return NULL; } /* Extract right arg of a binary opclause (NULL if it's a unary opclause) */ static inline Node * get_rightop(const void *clause) { const OpExpr *expr = (const OpExpr *) clause; if (list_length(expr->args) >= 2) return (Node *) lsecond(expr->args); else return NULL; } /* Is clause an AND clause? */ static inline bool is_andclause(const void *clause) { return (clause != NULL && IsA(clause, BoolExpr) && ((const BoolExpr *) clause)->boolop == AND_EXPR); } /* Is clause an OR clause? */ static inline bool is_orclause(const void *clause) { return (clause != NULL && IsA(clause, BoolExpr) && ((const BoolExpr *) clause)->boolop == OR_EXPR); } /* Is clause a NOT clause? */ static inline bool is_notclause(const void *clause) { return (clause != NULL && IsA(clause, BoolExpr) && ((const BoolExpr *) clause)->boolop == NOT_EXPR); } /* Extract argument from a clause known to be a NOT clause */ static inline Expr * get_notclausearg(const void *notclause) { return (Expr *) linitial(((const BoolExpr *) notclause)->args); } extern bool check_functions_in_node(Node *node, check_function_callback checker, void *context); extern bool expression_tree_walker(Node *node, bool (*walker) (), void *context); extern Node *expression_tree_mutator(Node *node, Node *(*mutator) (), void *context); extern bool query_tree_walker(Query *query, bool (*walker) (), void *context, int flags); extern Query *query_tree_mutator(Query *query, Node *(*mutator) (), void *context, int flags); extern bool range_table_walker(List *rtable, bool (*walker) (), void *context, int flags); extern List *range_table_mutator(List *rtable, Node *(*mutator) (), void *context, int flags); extern bool range_table_entry_walker(RangeTblEntry *rte, bool (*walker) (), void *context, int flags); extern bool query_or_expression_tree_walker(Node *node, bool (*walker) (), void *context, int flags); extern Node *query_or_expression_tree_mutator(Node *node, Node *(*mutator) (), void *context, int flags); extern bool raw_expression_tree_walker(Node *node, bool (*walker) (), void *context); struct PlanState; extern bool planstate_tree_walker(struct PlanState *planstate, bool (*walker) (), void *context); #endif /* NODEFUNCS_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/nodes.h000066400000000000000000000505701413137616400227430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * nodes.h * Definitions for tagged nodes. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/nodes.h * *------------------------------------------------------------------------- */ #ifndef NODES_H #define NODES_H /* * The first field of every node is NodeTag. Each node created (with makeNode) * will have one of the following tags as the value of its first field. * * Note that inserting or deleting node types changes the numbers of other * node types later in the list. This is no problem during development, since * the node numbers are never stored on disk. But don't do it in a released * branch, because that would represent an ABI break for extensions. */ typedef enum NodeTag { T_Invalid = 0, /* * TAGS FOR EXECUTOR NODES (execnodes.h) */ T_IndexInfo, T_ExprContext, T_ProjectionInfo, T_JunkFilter, T_OnConflictSetState, T_ResultRelInfo, T_EState, T_TupleTableSlot, /* * TAGS FOR PLAN NODES (plannodes.h) */ T_Plan, T_Result, T_ProjectSet, T_ModifyTable, T_Append, T_MergeAppend, T_RecursiveUnion, T_BitmapAnd, T_BitmapOr, T_Scan, T_SeqScan, T_SampleScan, T_IndexScan, T_IndexOnlyScan, T_BitmapIndexScan, T_BitmapHeapScan, T_TidScan, T_SubqueryScan, T_FunctionScan, T_ValuesScan, T_TableFuncScan, T_CteScan, T_NamedTuplestoreScan, T_WorkTableScan, T_ForeignScan, T_CustomScan, T_Join, T_NestLoop, T_MergeJoin, T_HashJoin, T_Material, T_Sort, T_IncrementalSort, T_Group, T_Agg, T_WindowAgg, T_Unique, T_Gather, T_GatherMerge, T_Hash, T_SetOp, T_LockRows, T_Limit, /* these aren't subclasses of Plan: */ T_NestLoopParam, T_PlanRowMark, T_PartitionPruneInfo, T_PartitionedRelPruneInfo, T_PartitionPruneStepOp, T_PartitionPruneStepCombine, T_PlanInvalItem, /* * TAGS FOR PLAN STATE NODES (execnodes.h) * * These should correspond one-to-one with Plan node types. */ T_PlanState, T_ResultState, T_ProjectSetState, T_ModifyTableState, T_AppendState, T_MergeAppendState, T_RecursiveUnionState, T_BitmapAndState, T_BitmapOrState, T_ScanState, T_SeqScanState, T_SampleScanState, T_IndexScanState, T_IndexOnlyScanState, T_BitmapIndexScanState, T_BitmapHeapScanState, T_TidScanState, T_SubqueryScanState, T_FunctionScanState, T_TableFuncScanState, T_ValuesScanState, T_CteScanState, T_NamedTuplestoreScanState, T_WorkTableScanState, T_ForeignScanState, T_CustomScanState, T_JoinState, T_NestLoopState, T_MergeJoinState, T_HashJoinState, T_MaterialState, T_SortState, T_IncrementalSortState, T_GroupState, T_AggState, T_WindowAggState, T_UniqueState, T_GatherState, T_GatherMergeState, T_HashState, T_SetOpState, T_LockRowsState, T_LimitState, /* * TAGS FOR PRIMITIVE NODES (primnodes.h) */ T_Alias, T_RangeVar, T_TableFunc, T_Expr, T_Var, T_Const, T_Param, T_Aggref, T_GroupingFunc, T_WindowFunc, T_SubscriptingRef, T_FuncExpr, T_NamedArgExpr, T_OpExpr, T_DistinctExpr, T_NullIfExpr, T_ScalarArrayOpExpr, T_BoolExpr, T_SubLink, T_SubPlan, T_AlternativeSubPlan, T_FieldSelect, T_FieldStore, T_RelabelType, T_CoerceViaIO, T_ArrayCoerceExpr, T_ConvertRowtypeExpr, T_CollateExpr, T_CaseExpr, T_CaseWhen, T_CaseTestExpr, T_ArrayExpr, T_RowExpr, T_RowCompareExpr, T_CoalesceExpr, T_MinMaxExpr, T_SQLValueFunction, T_XmlExpr, T_NullTest, T_BooleanTest, T_CoerceToDomain, T_CoerceToDomainValue, T_SetToDefault, T_CurrentOfExpr, T_NextValueExpr, T_InferenceElem, T_TargetEntry, T_RangeTblRef, T_JoinExpr, T_FromExpr, T_OnConflictExpr, T_IntoClause, /* * TAGS FOR EXPRESSION STATE NODES (execnodes.h) * * ExprState represents the evaluation state for a whole expression tree. * Most Expr-based plan nodes do not have a corresponding expression state * node, they're fully handled within execExpr* - but sometimes the state * needs to be shared with other parts of the executor, as for example * with AggrefExprState, which nodeAgg.c has to modify. */ T_ExprState, T_AggrefExprState, T_WindowFuncExprState, T_SetExprState, T_SubPlanState, T_AlternativeSubPlanState, T_DomainConstraintState, /* * TAGS FOR PLANNER NODES (pathnodes.h) */ T_PlannerInfo, T_PlannerGlobal, T_RelOptInfo, T_IndexOptInfo, T_ForeignKeyOptInfo, T_ParamPathInfo, T_Path, T_IndexPath, T_BitmapHeapPath, T_BitmapAndPath, T_BitmapOrPath, T_TidPath, T_SubqueryScanPath, T_ForeignPath, T_CustomPath, T_NestPath, T_MergePath, T_HashPath, T_AppendPath, T_MergeAppendPath, T_GroupResultPath, T_MaterialPath, T_UniquePath, T_GatherPath, T_GatherMergePath, T_ProjectionPath, T_ProjectSetPath, T_SortPath, T_IncrementalSortPath, T_GroupPath, T_UpperUniquePath, T_AggPath, T_GroupingSetsPath, T_MinMaxAggPath, T_WindowAggPath, T_SetOpPath, T_RecursiveUnionPath, T_LockRowsPath, T_ModifyTablePath, T_LimitPath, /* these aren't subclasses of Path: */ T_EquivalenceClass, T_EquivalenceMember, T_PathKey, T_PathTarget, T_RestrictInfo, T_IndexClause, T_PlaceHolderVar, T_SpecialJoinInfo, T_AppendRelInfo, T_PlaceHolderInfo, T_MinMaxAggInfo, T_PlannerParamItem, T_RollupData, T_GroupingSetData, T_StatisticExtInfo, /* * TAGS FOR MEMORY NODES (memnodes.h) */ T_MemoryContext, T_AllocSetContext, T_SlabContext, T_GenerationContext, /* * TAGS FOR VALUE NODES (value.h) */ T_Value, T_Integer, T_Float, T_String, T_BitString, T_Null, /* * TAGS FOR LIST NODES (pg_list.h) */ T_List, T_IntList, T_OidList, /* * TAGS FOR EXTENSIBLE NODES (extensible.h) */ T_ExtensibleNode, /* * TAGS FOR STATEMENT NODES (mostly in parsenodes.h) */ T_RawStmt, T_Query, T_PlannedStmt, T_InsertStmt, T_DeleteStmt, T_UpdateStmt, T_SelectStmt, T_AlterTableStmt, T_AlterTableCmd, T_AlterDomainStmt, T_SetOperationStmt, T_GrantStmt, T_GrantRoleStmt, T_AlterDefaultPrivilegesStmt, T_ClosePortalStmt, T_ClusterStmt, T_CopyStmt, T_CreateStmt, T_DefineStmt, T_DropStmt, T_TruncateStmt, T_CommentStmt, T_FetchStmt, T_IndexStmt, T_CreateFunctionStmt, T_AlterFunctionStmt, T_DoStmt, T_RenameStmt, T_RuleStmt, T_NotifyStmt, T_ListenStmt, T_UnlistenStmt, T_TransactionStmt, T_ViewStmt, T_LoadStmt, T_CreateDomainStmt, T_CreatedbStmt, T_DropdbStmt, T_VacuumStmt, T_ExplainStmt, T_CreateTableAsStmt, T_CreateSeqStmt, T_AlterSeqStmt, T_VariableSetStmt, T_VariableShowStmt, T_DiscardStmt, T_CreateTrigStmt, T_CreatePLangStmt, T_CreateRoleStmt, T_AlterRoleStmt, T_DropRoleStmt, T_LockStmt, T_ConstraintsSetStmt, T_ReindexStmt, T_CheckPointStmt, T_CreateSchemaStmt, T_AlterDatabaseStmt, T_AlterDatabaseSetStmt, T_AlterRoleSetStmt, T_CreateConversionStmt, T_CreateCastStmt, T_CreateOpClassStmt, T_CreateOpFamilyStmt, T_AlterOpFamilyStmt, T_PrepareStmt, T_ExecuteStmt, T_DeallocateStmt, T_DeclareCursorStmt, T_CreateTableSpaceStmt, T_DropTableSpaceStmt, T_AlterObjectDependsStmt, T_AlterObjectSchemaStmt, T_AlterOwnerStmt, T_AlterOperatorStmt, T_AlterTypeStmt, T_DropOwnedStmt, T_ReassignOwnedStmt, T_CompositeTypeStmt, T_CreateEnumStmt, T_CreateRangeStmt, T_AlterEnumStmt, T_AlterTSDictionaryStmt, T_AlterTSConfigurationStmt, T_CreateFdwStmt, T_AlterFdwStmt, T_CreateForeignServerStmt, T_AlterForeignServerStmt, T_CreateUserMappingStmt, T_AlterUserMappingStmt, T_DropUserMappingStmt, T_AlterTableSpaceOptionsStmt, T_AlterTableMoveAllStmt, T_SecLabelStmt, T_CreateForeignTableStmt, T_ImportForeignSchemaStmt, T_CreateExtensionStmt, T_AlterExtensionStmt, T_AlterExtensionContentsStmt, T_CreateEventTrigStmt, T_AlterEventTrigStmt, T_RefreshMatViewStmt, T_ReplicaIdentityStmt, T_AlterSystemStmt, T_CreatePolicyStmt, T_AlterPolicyStmt, T_CreateTransformStmt, T_CreateAmStmt, T_CreatePublicationStmt, T_AlterPublicationStmt, T_CreateSubscriptionStmt, T_AlterSubscriptionStmt, T_DropSubscriptionStmt, T_CreateStatsStmt, T_AlterCollationStmt, T_CallStmt, T_AlterStatsStmt, /* * TAGS FOR PARSE TREE NODES (parsenodes.h) */ T_A_Expr, T_ColumnRef, T_ParamRef, T_A_Const, T_FuncCall, T_A_Star, T_A_Indices, T_A_Indirection, T_A_ArrayExpr, T_ResTarget, T_MultiAssignRef, T_TypeCast, T_CollateClause, T_SortBy, T_WindowDef, T_RangeSubselect, T_RangeFunction, T_RangeTableSample, T_RangeTableFunc, T_RangeTableFuncCol, T_TypeName, T_ColumnDef, T_IndexElem, T_Constraint, T_DefElem, T_RangeTblEntry, T_RangeTblFunction, T_TableSampleClause, T_WithCheckOption, T_SortGroupClause, T_GroupingSet, T_WindowClause, T_ObjectWithArgs, T_AccessPriv, T_CreateOpClassItem, T_TableLikeClause, T_FunctionParameter, T_LockingClause, T_RowMarkClause, T_XmlSerialize, T_WithClause, T_InferClause, T_OnConflictClause, T_CommonTableExpr, T_RoleSpec, T_TriggerTransition, T_PartitionElem, T_PartitionSpec, T_PartitionBoundSpec, T_PartitionRangeDatum, T_PartitionCmd, T_VacuumRelation, /* * TAGS FOR REPLICATION GRAMMAR PARSE NODES (replnodes.h) */ T_IdentifySystemCmd, T_BaseBackupCmd, T_CreateReplicationSlotCmd, T_DropReplicationSlotCmd, T_StartReplicationCmd, T_TimeLineHistoryCmd, T_SQLCmd, /* * TAGS FOR RANDOM OTHER STUFF * * These are objects that aren't part of parse/plan/execute node tree * structures, but we give them NodeTags anyway for identification * purposes (usually because they are involved in APIs where we want to * pass multiple object types through the same pointer). */ T_TriggerData, /* in commands/trigger.h */ T_EventTriggerData, /* in commands/event_trigger.h */ T_ReturnSetInfo, /* in nodes/execnodes.h */ T_WindowObjectData, /* private in nodeWindowAgg.c */ T_TIDBitmap, /* in nodes/tidbitmap.h */ T_InlineCodeBlock, /* in nodes/parsenodes.h */ T_FdwRoutine, /* in foreign/fdwapi.h */ T_IndexAmRoutine, /* in access/amapi.h */ T_TableAmRoutine, /* in access/tableam.h */ T_TsmRoutine, /* in access/tsmapi.h */ T_ForeignKeyCacheInfo, /* in utils/rel.h */ T_CallContext, /* in nodes/parsenodes.h */ T_SupportRequestSimplify, /* in nodes/supportnodes.h */ T_SupportRequestSelectivity, /* in nodes/supportnodes.h */ T_SupportRequestCost, /* in nodes/supportnodes.h */ T_SupportRequestRows, /* in nodes/supportnodes.h */ T_SupportRequestIndexCondition /* in nodes/supportnodes.h */ } NodeTag; /* * The first field of a node of any type is guaranteed to be the NodeTag. * Hence the type of any node can be gotten by casting it to Node. Declaring * a variable to be of Node * (instead of void *) can also facilitate * debugging. */ typedef struct Node { NodeTag type; } Node; #define nodeTag(nodeptr) (((const Node*)(nodeptr))->type) /* * newNode - * create a new node of the specified size and tag the node with the * specified tag. * * !WARNING!: Avoid using newNode directly. You should be using the * macro makeNode. eg. to create a Query node, use makeNode(Query) * * Note: the size argument should always be a compile-time constant, so the * apparent risk of multiple evaluation doesn't matter in practice. */ #ifdef __GNUC__ /* With GCC, we can use a compound statement within an expression */ #define newNode(size, tag) \ ({ Node *_result; \ AssertMacro((size) >= sizeof(Node)); /* need the tag, at least */ \ _result = (Node *) palloc0fast(size); \ _result->type = (tag); \ _result; \ }) #else /* * There is no way to dereference the palloc'ed pointer to assign the * tag, and also return the pointer itself, so we need a holder variable. * Fortunately, this macro isn't recursive so we just define * a global variable for this purpose. */ extern PGDLLIMPORT Node *newNodeMacroHolder; #define newNode(size, tag) \ ( \ AssertMacro((size) >= sizeof(Node)), /* need the tag, at least */ \ newNodeMacroHolder = (Node *) palloc0fast(size), \ newNodeMacroHolder->type = (tag), \ newNodeMacroHolder \ ) #endif /* __GNUC__ */ #define makeNode(_type_) ((_type_ *) newNode(sizeof(_type_),T_##_type_)) #define NodeSetTag(nodeptr,t) (((Node*)(nodeptr))->type = (t)) #define IsA(nodeptr,_type_) (nodeTag(nodeptr) == T_##_type_) /* * castNode(type, ptr) casts ptr to "type *", and if assertions are enabled, * verifies that the node has the appropriate type (using its nodeTag()). * * Use an inline function when assertions are enabled, to avoid multiple * evaluations of the ptr argument (which could e.g. be a function call). */ #ifdef USE_ASSERT_CHECKING static inline Node * castNodeImpl(NodeTag type, void *ptr) { Assert(ptr == NULL || nodeTag(ptr) == type); return (Node *) ptr; } #define castNode(_type_, nodeptr) ((_type_ *) castNodeImpl(T_##_type_, nodeptr)) #else #define castNode(_type_, nodeptr) ((_type_ *) (nodeptr)) #endif /* USE_ASSERT_CHECKING */ /* ---------------------------------------------------------------- * extern declarations follow * ---------------------------------------------------------------- */ /* * nodes/{outfuncs.c,print.c} */ struct Bitmapset; /* not to include bitmapset.h here */ struct StringInfoData; /* not to include stringinfo.h here */ extern void outNode(struct StringInfoData *str, const void *obj); extern void outToken(struct StringInfoData *str, const char *s); extern void outBitmapset(struct StringInfoData *str, const struct Bitmapset *bms); extern void outDatum(struct StringInfoData *str, uintptr_t value, int typlen, bool typbyval); extern char *nodeToString(const void *obj); extern char *bmsToString(const struct Bitmapset *bms); /* * nodes/{readfuncs.c,read.c} */ extern void *stringToNode(const char *str); #ifdef WRITE_READ_PARSE_PLAN_TREES extern void *stringToNodeWithLocations(const char *str); #endif extern struct Bitmapset *readBitmapset(void); extern uintptr_t readDatum(bool typbyval); extern bool *readBoolCols(int numCols); extern int *readIntCols(int numCols); extern Oid *readOidCols(int numCols); extern int16 *readAttrNumberCols(int numCols); /* * nodes/copyfuncs.c */ extern void *copyObjectImpl(const void *obj); /* cast result back to argument type, if supported by compiler */ #ifdef HAVE_TYPEOF #define copyObject(obj) ((typeof(obj)) copyObjectImpl(obj)) #else #define copyObject(obj) copyObjectImpl(obj) #endif /* * nodes/equalfuncs.c */ extern bool equal(const void *a, const void *b); /* * Typedefs for identifying qualifier selectivities and plan costs as such. * These are just plain "double"s, but declaring a variable as Selectivity * or Cost makes the intent more obvious. * * These could have gone into plannodes.h or some such, but many files * depend on them... */ typedef double Selectivity; /* fraction of tuples a qualifier will pass */ typedef double Cost; /* execution cost (in page-access units) */ /* * CmdType - * enums for type of operation represented by a Query or PlannedStmt * * This is needed in both parsenodes.h and plannodes.h, so put it here... */ typedef enum CmdType { CMD_UNKNOWN, CMD_SELECT, /* select stmt */ CMD_UPDATE, /* update stmt */ CMD_INSERT, /* insert stmt */ CMD_DELETE, CMD_UTILITY, /* cmds like create, destroy, copy, vacuum, * etc. */ CMD_NOTHING /* dummy command for instead nothing rules * with qual */ } CmdType; /* * JoinType - * enums for types of relation joins * * JoinType determines the exact semantics of joining two relations using * a matching qualification. For example, it tells what to do with a tuple * that has no match in the other relation. * * This is needed in both parsenodes.h and plannodes.h, so put it here... */ typedef enum JoinType { /* * The canonical kinds of joins according to the SQL JOIN syntax. Only * these codes can appear in parser output (e.g., JoinExpr nodes). */ JOIN_INNER, /* matching tuple pairs only */ JOIN_LEFT, /* pairs + unmatched LHS tuples */ JOIN_FULL, /* pairs + unmatched LHS + unmatched RHS */ JOIN_RIGHT, /* pairs + unmatched RHS tuples */ /* * Semijoins and anti-semijoins (as defined in relational theory) do not * appear in the SQL JOIN syntax, but there are standard idioms for * representing them (e.g., using EXISTS). The planner recognizes these * cases and converts them to joins. So the planner and executor must * support these codes. NOTE: in JOIN_SEMI output, it is unspecified * which matching RHS row is joined to. In JOIN_ANTI output, the row is * guaranteed to be null-extended. */ JOIN_SEMI, /* 1 copy of each LHS row that has match(es) */ JOIN_ANTI, /* 1 copy of each LHS row that has no match */ /* * These codes are used internally in the planner, but are not supported * by the executor (nor, indeed, by most of the planner). */ JOIN_UNIQUE_OUTER, /* LHS path must be made unique */ JOIN_UNIQUE_INNER /* RHS path must be made unique */ /* * We might need additional join types someday. */ } JoinType; /* * OUTER joins are those for which pushed-down quals must behave differently * from the join's own quals. This is in fact everything except INNER and * SEMI joins. However, this macro must also exclude the JOIN_UNIQUE symbols * since those are temporary proxies for what will eventually be an INNER * join. * * Note: semijoins are a hybrid case, but we choose to treat them as not * being outer joins. This is okay principally because the SQL syntax makes * it impossible to have a pushed-down qual that refers to the inner relation * of a semijoin; so there is no strong need to distinguish join quals from * pushed-down quals. This is convenient because for almost all purposes, * quals attached to a semijoin can be treated the same as innerjoin quals. */ #define IS_OUTER_JOIN(jointype) \ (((1 << (jointype)) & \ ((1 << JOIN_LEFT) | \ (1 << JOIN_FULL) | \ (1 << JOIN_RIGHT) | \ (1 << JOIN_ANTI))) != 0) /* * AggStrategy - * overall execution strategies for Agg plan nodes * * This is needed in both pathnodes.h and plannodes.h, so put it here... */ typedef enum AggStrategy { AGG_PLAIN, /* simple agg across all input rows */ AGG_SORTED, /* grouped agg, input must be sorted */ AGG_HASHED, /* grouped agg, use internal hashtable */ AGG_MIXED /* grouped agg, hash and sort both used */ } AggStrategy; /* * AggSplit - * splitting (partial aggregation) modes for Agg plan nodes * * This is needed in both pathnodes.h and plannodes.h, so put it here... */ /* Primitive options supported by nodeAgg.c: */ #define AGGSPLITOP_COMBINE 0x01 /* substitute combinefn for transfn */ #define AGGSPLITOP_SKIPFINAL 0x02 /* skip finalfn, return state as-is */ #define AGGSPLITOP_SERIALIZE 0x04 /* apply serialfn to output */ #define AGGSPLITOP_DESERIALIZE 0x08 /* apply deserialfn to input */ /* Supported operating modes (i.e., useful combinations of these options): */ typedef enum AggSplit { /* Basic, non-split aggregation: */ AGGSPLIT_SIMPLE = 0, /* Initial phase of partial aggregation, with serialization: */ AGGSPLIT_INITIAL_SERIAL = AGGSPLITOP_SKIPFINAL | AGGSPLITOP_SERIALIZE, /* Final phase of partial aggregation, with deserialization: */ AGGSPLIT_FINAL_DESERIAL = AGGSPLITOP_COMBINE | AGGSPLITOP_DESERIALIZE } AggSplit; /* Test whether an AggSplit value selects each primitive option: */ #define DO_AGGSPLIT_COMBINE(as) (((as) & AGGSPLITOP_COMBINE) != 0) #define DO_AGGSPLIT_SKIPFINAL(as) (((as) & AGGSPLITOP_SKIPFINAL) != 0) #define DO_AGGSPLIT_SERIALIZE(as) (((as) & AGGSPLITOP_SERIALIZE) != 0) #define DO_AGGSPLIT_DESERIALIZE(as) (((as) & AGGSPLITOP_DESERIALIZE) != 0) /* * SetOpCmd and SetOpStrategy - * overall semantics and execution strategies for SetOp plan nodes * * This is needed in both pathnodes.h and plannodes.h, so put it here... */ typedef enum SetOpCmd { SETOPCMD_INTERSECT, SETOPCMD_INTERSECT_ALL, SETOPCMD_EXCEPT, SETOPCMD_EXCEPT_ALL } SetOpCmd; typedef enum SetOpStrategy { SETOP_SORTED, /* input must be sorted */ SETOP_HASHED /* use internal hashtable */ } SetOpStrategy; /* * OnConflictAction - * "ON CONFLICT" clause type of query * * This is needed in both parsenodes.h and plannodes.h, so put it here... */ typedef enum OnConflictAction { ONCONFLICT_NONE, /* No "ON CONFLICT" clause */ ONCONFLICT_NOTHING, /* ON CONFLICT ... DO NOTHING */ ONCONFLICT_UPDATE /* ON CONFLICT ... DO UPDATE */ } OnConflictAction; /* * LimitOption - * LIMIT option of query * * This is needed in both parsenodes.h and plannodes.h, so put it here... */ typedef enum LimitOption { LIMIT_OPTION_DEFAULT, /* No limit present */ LIMIT_OPTION_COUNT, /* FETCH FIRST... ONLY */ LIMIT_OPTION_WITH_TIES, /* FETCH FIRST... WITH TIES */ } LimitOption; #endif /* NODES_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/params.h000066400000000000000000000150511413137616400231110ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * params.h * Support for finding the values associated with Param nodes. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/params.h * *------------------------------------------------------------------------- */ #ifndef PARAMS_H #define PARAMS_H /* Forward declarations, to avoid including other headers */ struct Bitmapset; struct ExprState; struct Param; struct ParseState; /* * ParamListInfo * * ParamListInfo structures are used to pass parameters into the executor * for parameterized plans. We support two basic approaches to supplying * parameter values, the "static" way and the "dynamic" way. * * In the static approach, per-parameter data is stored in an array of * ParamExternData structs appended to the ParamListInfo struct. * Each entry in the array defines the value to be substituted for a * PARAM_EXTERN parameter. The "paramid" of a PARAM_EXTERN Param * can range from 1 to numParams. * * Although parameter numbers are normally consecutive, we allow * ptype == InvalidOid to signal an unused array entry. * * pflags is a flags field. Currently the only used bit is: * PARAM_FLAG_CONST signals the planner that it may treat this parameter * as a constant (i.e., generate a plan that works only for this value * of the parameter). * * In the dynamic approach, all access to parameter values is done through * hook functions found in the ParamListInfo struct. In this case, * the ParamExternData array is typically unused and not allocated; * but the legal range of paramid is still 1 to numParams. * * Although the data structure is really an array, not a list, we keep * the old typedef name to avoid unnecessary code changes. * * There are 3 hook functions that can be associated with a ParamListInfo * structure: * * If paramFetch isn't null, it is called to fetch the ParamExternData * for a particular param ID, rather than accessing the relevant element * of the ParamExternData array. This supports the case where the array * isn't there at all, as well as cases where the data in the array * might be obsolete or lazily evaluated. paramFetch must return the * address of a ParamExternData struct describing the specified param ID; * the convention above about ptype == InvalidOid signaling an invalid * param ID still applies. The returned struct can either be placed in * the "workspace" supplied by the caller, or it can be in storage * controlled by the paramFetch hook if that's more convenient. * (In either case, the struct is not expected to be long-lived.) * If "speculative" is true, the paramFetch hook should not risk errors * in trying to fetch the parameter value, and should report an invalid * parameter instead. * * If paramCompile isn't null, then it controls what execExpr.c compiles * for PARAM_EXTERN Param nodes --- typically, this hook would emit a * EEOP_PARAM_CALLBACK step. This allows unnecessary work to be * optimized away in compiled expressions. * * If parserSetup isn't null, then it is called to re-instantiate the * original parsing hooks when a query needs to be re-parsed/planned. * This is especially useful if the types of parameters might change * from time to time, since it can replace the need to supply a fixed * list of parameter types to the parser. * * Notice that the paramFetch and paramCompile hooks are actually passed * the ParamListInfo struct's address; they can therefore access all * three of the "arg" fields, and the distinction between paramFetchArg * and paramCompileArg is rather arbitrary. */ #define PARAM_FLAG_CONST 0x0001 /* parameter is constant */ typedef struct ParamExternData { Datum value; /* parameter value */ bool isnull; /* is it NULL? */ uint16 pflags; /* flag bits, see above */ Oid ptype; /* parameter's datatype, or 0 */ } ParamExternData; typedef struct ParamListInfoData *ParamListInfo; typedef ParamExternData *(*ParamFetchHook) (ParamListInfo params, int paramid, bool speculative, ParamExternData *workspace); typedef void (*ParamCompileHook) (ParamListInfo params, struct Param *param, struct ExprState *state, Datum *resv, bool *resnull); typedef void (*ParserSetupHook) (struct ParseState *pstate, void *arg); typedef struct ParamListInfoData { ParamFetchHook paramFetch; /* parameter fetch hook */ void *paramFetchArg; ParamCompileHook paramCompile; /* parameter compile hook */ void *paramCompileArg; ParserSetupHook parserSetup; /* parser setup hook */ void *parserSetupArg; char *paramValuesStr; /* params as a single string for errors */ int numParams; /* nominal/maximum # of Params represented */ /* * params[] may be of length zero if paramFetch is supplied; otherwise it * must be of length numParams. */ ParamExternData params[FLEXIBLE_ARRAY_MEMBER]; } ParamListInfoData; /* ---------------- * ParamExecData * * ParamExecData entries are used for executor internal parameters * (that is, values being passed into or out of a sub-query). The * paramid of a PARAM_EXEC Param is a (zero-based) index into an * array of ParamExecData records, which is referenced through * es_param_exec_vals or ecxt_param_exec_vals. * * If execPlan is not NULL, it points to a SubPlanState node that needs * to be executed to produce the value. (This is done so that we can have * lazy evaluation of InitPlans: they aren't executed until/unless a * result value is needed.) Otherwise the value is assumed to be valid * when needed. * ---------------- */ typedef struct ParamExecData { void *execPlan; /* should be "SubPlanState *" */ Datum value; bool isnull; } ParamExecData; /* type of argument for ParamsErrorCallback */ typedef struct ParamsErrorCbData { const char *portalName; ParamListInfo params; } ParamsErrorCbData; /* Functions found in src/backend/nodes/params.c */ extern ParamListInfo makeParamList(int numParams); extern ParamListInfo copyParamList(ParamListInfo from); extern Size EstimateParamListSpace(ParamListInfo paramLI); extern void SerializeParamList(ParamListInfo paramLI, char **start_address); extern ParamListInfo RestoreParamList(char **start_address); extern char *BuildParamLogString(ParamListInfo params, char **paramTextValues, int valueLen); extern void ParamsErrorCallback(void *arg); #endif /* PARAMS_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/parsenodes.h000066400000000000000000003626241413137616400240040ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parsenodes.h * definitions for parse tree nodes * * Many of the node types used in parsetrees include a "location" field. * This is a byte (not character) offset in the original source text, to be * used for positioning an error cursor when there is an error related to * the node. Access to the original source text is needed to make use of * the location. At the topmost (statement) level, we also provide a * statement length, likewise measured in bytes, for convenience in * identifying statement boundaries in multi-statement source strings. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/parsenodes.h * *------------------------------------------------------------------------- */ #ifndef PARSENODES_H #define PARSENODES_H #include "nodes/bitmapset.h" #include "nodes/lockoptions.h" #include "nodes/primnodes.h" #include "nodes/value.h" #include "partitioning/partdefs.h" typedef enum OverridingKind { OVERRIDING_NOT_SET = 0, OVERRIDING_USER_VALUE, OVERRIDING_SYSTEM_VALUE } OverridingKind; /* Possible sources of a Query */ typedef enum QuerySource { QSRC_ORIGINAL, /* original parsetree (explicit query) */ QSRC_PARSER, /* added by parse analysis (now unused) */ QSRC_INSTEAD_RULE, /* added by unconditional INSTEAD rule */ QSRC_QUAL_INSTEAD_RULE, /* added by conditional INSTEAD rule */ QSRC_NON_INSTEAD_RULE /* added by non-INSTEAD rule */ } QuerySource; /* Sort ordering options for ORDER BY and CREATE INDEX */ typedef enum SortByDir { SORTBY_DEFAULT, SORTBY_ASC, SORTBY_DESC, SORTBY_USING /* not allowed in CREATE INDEX ... */ } SortByDir; typedef enum SortByNulls { SORTBY_NULLS_DEFAULT, SORTBY_NULLS_FIRST, SORTBY_NULLS_LAST } SortByNulls; /* * Grantable rights are encoded so that we can OR them together in a bitmask. * The present representation of AclItem limits us to 16 distinct rights, * even though AclMode is defined as uint32. See utils/acl.h. * * Caution: changing these codes breaks stored ACLs, hence forces initdb. */ typedef uint32 AclMode; /* a bitmask of privilege bits */ #define ACL_INSERT (1<<0) /* for relations */ #define ACL_SELECT (1<<1) #define ACL_UPDATE (1<<2) #define ACL_DELETE (1<<3) #define ACL_TRUNCATE (1<<4) #define ACL_REFERENCES (1<<5) #define ACL_TRIGGER (1<<6) #define ACL_EXECUTE (1<<7) /* for functions */ #define ACL_USAGE (1<<8) /* for languages, namespaces, FDWs, and * servers */ #define ACL_CREATE (1<<9) /* for namespaces and databases */ #define ACL_CREATE_TEMP (1<<10) /* for databases */ #define ACL_CONNECT (1<<11) /* for databases */ #define N_ACL_RIGHTS 12 /* 1 plus the last 1<" */ AEXPR_IN, /* [NOT] IN - name must be "=" or "<>" */ AEXPR_LIKE, /* [NOT] LIKE - name must be "~~" or "!~~" */ AEXPR_ILIKE, /* [NOT] ILIKE - name must be "~~*" or "!~~*" */ AEXPR_SIMILAR, /* [NOT] SIMILAR - name must be "~" or "!~" */ AEXPR_BETWEEN, /* name must be "BETWEEN" */ AEXPR_NOT_BETWEEN, /* name must be "NOT BETWEEN" */ AEXPR_BETWEEN_SYM, /* name must be "BETWEEN SYMMETRIC" */ AEXPR_NOT_BETWEEN_SYM, /* name must be "NOT BETWEEN SYMMETRIC" */ AEXPR_PAREN /* nameless dummy node for parentheses */ } A_Expr_Kind; typedef struct A_Expr { NodeTag type; A_Expr_Kind kind; /* see above */ List *name; /* possibly-qualified name of operator */ Node *lexpr; /* left argument, or NULL if none */ Node *rexpr; /* right argument, or NULL if none */ int location; /* token location, or -1 if unknown */ } A_Expr; /* * A_Const - a literal constant */ typedef struct A_Const { NodeTag type; Value val; /* value (includes type info, see value.h) */ int location; /* token location, or -1 if unknown */ } A_Const; /* * TypeCast - a CAST expression */ typedef struct TypeCast { NodeTag type; Node *arg; /* the expression being casted */ TypeName *typeName; /* the target type */ int location; /* token location, or -1 if unknown */ } TypeCast; /* * CollateClause - a COLLATE expression */ typedef struct CollateClause { NodeTag type; Node *arg; /* input expression */ List *collname; /* possibly-qualified collation name */ int location; /* token location, or -1 if unknown */ } CollateClause; /* * RoleSpec - a role name or one of a few special values. */ typedef enum RoleSpecType { ROLESPEC_CSTRING, /* role name is stored as a C string */ ROLESPEC_CURRENT_USER, /* role spec is CURRENT_USER */ ROLESPEC_SESSION_USER, /* role spec is SESSION_USER */ ROLESPEC_PUBLIC /* role name is "public" */ } RoleSpecType; typedef struct RoleSpec { NodeTag type; RoleSpecType roletype; /* Type of this rolespec */ char *rolename; /* filled only for ROLESPEC_CSTRING */ int location; /* token location, or -1 if unknown */ } RoleSpec; /* * FuncCall - a function or aggregate invocation * * agg_order (if not NIL) indicates we saw 'foo(... ORDER BY ...)', or if * agg_within_group is true, it was 'foo(...) WITHIN GROUP (ORDER BY ...)'. * agg_star indicates we saw a 'foo(*)' construct, while agg_distinct * indicates we saw 'foo(DISTINCT ...)'. In any of these cases, the * construct *must* be an aggregate call. Otherwise, it might be either an * aggregate or some other kind of function. However, if FILTER or OVER is * present it had better be an aggregate or window function. * * Normally, you'd initialize this via makeFuncCall() and then only change the * parts of the struct its defaults don't match afterwards, as needed. */ typedef struct FuncCall { NodeTag type; List *funcname; /* qualified name of function */ List *args; /* the arguments (list of exprs) */ List *agg_order; /* ORDER BY (list of SortBy) */ Node *agg_filter; /* FILTER clause, if any */ bool agg_within_group; /* ORDER BY appeared in WITHIN GROUP */ bool agg_star; /* argument was really '*' */ bool agg_distinct; /* arguments were labeled DISTINCT */ bool func_variadic; /* last argument was labeled VARIADIC */ struct WindowDef *over; /* OVER clause, if any */ int location; /* token location, or -1 if unknown */ } FuncCall; /* * A_Star - '*' representing all columns of a table or compound field * * This can appear within ColumnRef.fields, A_Indirection.indirection, and * ResTarget.indirection lists. */ typedef struct A_Star { NodeTag type; } A_Star; /* * A_Indices - array subscript or slice bounds ([idx] or [lidx:uidx]) * * In slice case, either or both of lidx and uidx can be NULL (omitted). * In non-slice case, uidx holds the single subscript and lidx is always NULL. */ typedef struct A_Indices { NodeTag type; bool is_slice; /* true if slice (i.e., colon present) */ Node *lidx; /* slice lower bound, if any */ Node *uidx; /* subscript, or slice upper bound if any */ } A_Indices; /* * A_Indirection - select a field and/or array element from an expression * * The indirection list can contain A_Indices nodes (representing * subscripting), string Value nodes (representing field selection --- the * string value is the name of the field to select), and A_Star nodes * (representing selection of all fields of a composite type). * For example, a complex selection operation like * (foo).field1[42][7].field2 * would be represented with a single A_Indirection node having a 4-element * indirection list. * * Currently, A_Star must appear only as the last list element --- the grammar * is responsible for enforcing this! */ typedef struct A_Indirection { NodeTag type; Node *arg; /* the thing being selected from */ List *indirection; /* subscripts and/or field names and/or * */ } A_Indirection; /* * A_ArrayExpr - an ARRAY[] construct */ typedef struct A_ArrayExpr { NodeTag type; List *elements; /* array element expressions */ int location; /* token location, or -1 if unknown */ } A_ArrayExpr; /* * ResTarget - * result target (used in target list of pre-transformed parse trees) * * In a SELECT target list, 'name' is the column label from an * 'AS ColumnLabel' clause, or NULL if there was none, and 'val' is the * value expression itself. The 'indirection' field is not used. * * INSERT uses ResTarget in its target-column-names list. Here, 'name' is * the name of the destination column, 'indirection' stores any subscripts * attached to the destination, and 'val' is not used. * * In an UPDATE target list, 'name' is the name of the destination column, * 'indirection' stores any subscripts attached to the destination, and * 'val' is the expression to assign. * * See A_Indirection for more info about what can appear in 'indirection'. */ typedef struct ResTarget { NodeTag type; char *name; /* column name or NULL */ List *indirection; /* subscripts, field names, and '*', or NIL */ Node *val; /* the value expression to compute or assign */ int location; /* token location, or -1 if unknown */ } ResTarget; /* * MultiAssignRef - element of a row source expression for UPDATE * * In an UPDATE target list, when we have SET (a,b,c) = row-valued-expression, * we generate separate ResTarget items for each of a,b,c. Their "val" trees * are MultiAssignRef nodes numbered 1..n, linking to a common copy of the * row-valued-expression (which parse analysis will process only once, when * handling the MultiAssignRef with colno=1). */ typedef struct MultiAssignRef { NodeTag type; Node *source; /* the row-valued expression */ int colno; /* column number for this target (1..n) */ int ncolumns; /* number of targets in the construct */ } MultiAssignRef; /* * SortBy - for ORDER BY clause */ typedef struct SortBy { NodeTag type; Node *node; /* expression to sort on */ SortByDir sortby_dir; /* ASC/DESC/USING/default */ SortByNulls sortby_nulls; /* NULLS FIRST/LAST */ List *useOp; /* name of op to use, if SORTBY_USING */ int location; /* operator location, or -1 if none/unknown */ } SortBy; /* * WindowDef - raw representation of WINDOW and OVER clauses * * For entries in a WINDOW list, "name" is the window name being defined. * For OVER clauses, we use "name" for the "OVER window" syntax, or "refname" * for the "OVER (window)" syntax, which is subtly different --- the latter * implies overriding the window frame clause. */ typedef struct WindowDef { NodeTag type; char *name; /* window's own name */ char *refname; /* referenced window name, if any */ List *partitionClause; /* PARTITION BY expression list */ List *orderClause; /* ORDER BY (list of SortBy) */ int frameOptions; /* frame_clause options, see below */ Node *startOffset; /* expression for starting bound, if any */ Node *endOffset; /* expression for ending bound, if any */ int location; /* parse location, or -1 if none/unknown */ } WindowDef; /* * frameOptions is an OR of these bits. The NONDEFAULT and BETWEEN bits are * used so that ruleutils.c can tell which properties were specified and * which were defaulted; the correct behavioral bits must be set either way. * The START_foo and END_foo options must come in pairs of adjacent bits for * the convenience of gram.y, even though some of them are useless/invalid. */ #define FRAMEOPTION_NONDEFAULT 0x00001 /* any specified? */ #define FRAMEOPTION_RANGE 0x00002 /* RANGE behavior */ #define FRAMEOPTION_ROWS 0x00004 /* ROWS behavior */ #define FRAMEOPTION_GROUPS 0x00008 /* GROUPS behavior */ #define FRAMEOPTION_BETWEEN 0x00010 /* BETWEEN given? */ #define FRAMEOPTION_START_UNBOUNDED_PRECEDING 0x00020 /* start is U. P. */ #define FRAMEOPTION_END_UNBOUNDED_PRECEDING 0x00040 /* (disallowed) */ #define FRAMEOPTION_START_UNBOUNDED_FOLLOWING 0x00080 /* (disallowed) */ #define FRAMEOPTION_END_UNBOUNDED_FOLLOWING 0x00100 /* end is U. F. */ #define FRAMEOPTION_START_CURRENT_ROW 0x00200 /* start is C. R. */ #define FRAMEOPTION_END_CURRENT_ROW 0x00400 /* end is C. R. */ #define FRAMEOPTION_START_OFFSET_PRECEDING 0x00800 /* start is O. P. */ #define FRAMEOPTION_END_OFFSET_PRECEDING 0x01000 /* end is O. P. */ #define FRAMEOPTION_START_OFFSET_FOLLOWING 0x02000 /* start is O. F. */ #define FRAMEOPTION_END_OFFSET_FOLLOWING 0x04000 /* end is O. F. */ #define FRAMEOPTION_EXCLUDE_CURRENT_ROW 0x08000 /* omit C.R. */ #define FRAMEOPTION_EXCLUDE_GROUP 0x10000 /* omit C.R. & peers */ #define FRAMEOPTION_EXCLUDE_TIES 0x20000 /* omit C.R.'s peers */ #define FRAMEOPTION_START_OFFSET \ (FRAMEOPTION_START_OFFSET_PRECEDING | FRAMEOPTION_START_OFFSET_FOLLOWING) #define FRAMEOPTION_END_OFFSET \ (FRAMEOPTION_END_OFFSET_PRECEDING | FRAMEOPTION_END_OFFSET_FOLLOWING) #define FRAMEOPTION_EXCLUSION \ (FRAMEOPTION_EXCLUDE_CURRENT_ROW | FRAMEOPTION_EXCLUDE_GROUP | \ FRAMEOPTION_EXCLUDE_TIES) #define FRAMEOPTION_DEFAULTS \ (FRAMEOPTION_RANGE | FRAMEOPTION_START_UNBOUNDED_PRECEDING | \ FRAMEOPTION_END_CURRENT_ROW) /* * RangeSubselect - subquery appearing in a FROM clause */ typedef struct RangeSubselect { NodeTag type; bool lateral; /* does it have LATERAL prefix? */ Node *subquery; /* the untransformed sub-select clause */ Alias *alias; /* table alias & optional column aliases */ } RangeSubselect; /* * RangeFunction - function call appearing in a FROM clause * * functions is a List because we use this to represent the construct * ROWS FROM(func1(...), func2(...), ...). Each element of this list is a * two-element sublist, the first element being the untransformed function * call tree, and the second element being a possibly-empty list of ColumnDef * nodes representing any columndef list attached to that function within the * ROWS FROM() syntax. * * alias and coldeflist represent any alias and/or columndef list attached * at the top level. (We disallow coldeflist appearing both here and * per-function, but that's checked in parse analysis, not by the grammar.) */ typedef struct RangeFunction { NodeTag type; bool lateral; /* does it have LATERAL prefix? */ bool ordinality; /* does it have WITH ORDINALITY suffix? */ bool is_rowsfrom; /* is result of ROWS FROM() syntax? */ List *functions; /* per-function information, see above */ Alias *alias; /* table alias & optional column aliases */ List *coldeflist; /* list of ColumnDef nodes to describe result * of function returning RECORD */ } RangeFunction; /* * RangeTableFunc - raw form of "table functions" such as XMLTABLE */ typedef struct RangeTableFunc { NodeTag type; bool lateral; /* does it have LATERAL prefix? */ Node *docexpr; /* document expression */ Node *rowexpr; /* row generator expression */ List *namespaces; /* list of namespaces as ResTarget */ List *columns; /* list of RangeTableFuncCol */ Alias *alias; /* table alias & optional column aliases */ int location; /* token location, or -1 if unknown */ } RangeTableFunc; /* * RangeTableFuncCol - one column in a RangeTableFunc->columns * * If for_ordinality is true (FOR ORDINALITY), then the column is an int4 * column and the rest of the fields are ignored. */ typedef struct RangeTableFuncCol { NodeTag type; char *colname; /* name of generated column */ TypeName *typeName; /* type of generated column */ bool for_ordinality; /* does it have FOR ORDINALITY? */ bool is_not_null; /* does it have NOT NULL? */ Node *colexpr; /* column filter expression */ Node *coldefexpr; /* column default value expression */ int location; /* token location, or -1 if unknown */ } RangeTableFuncCol; /* * RangeTableSample - TABLESAMPLE appearing in a raw FROM clause * * This node, appearing only in raw parse trees, represents * TABLESAMPLE () REPEATABLE () * Currently, the can only be a RangeVar, but we might in future * allow RangeSubselect and other options. Note that the RangeTableSample * is wrapped around the node representing the , rather than being * a subfield of it. */ typedef struct RangeTableSample { NodeTag type; Node *relation; /* relation to be sampled */ List *method; /* sampling method name (possibly qualified) */ List *args; /* argument(s) for sampling method */ Node *repeatable; /* REPEATABLE expression, or NULL if none */ int location; /* method name location, or -1 if unknown */ } RangeTableSample; /* * ColumnDef - column definition (used in various creates) * * If the column has a default value, we may have the value expression * in either "raw" form (an untransformed parse tree) or "cooked" form * (a post-parse-analysis, executable expression tree), depending on * how this ColumnDef node was created (by parsing, or by inheritance * from an existing relation). We should never have both in the same node! * * Similarly, we may have a COLLATE specification in either raw form * (represented as a CollateClause with arg==NULL) or cooked form * (the collation's OID). * * The constraints list may contain a CONSTR_DEFAULT item in a raw * parsetree produced by gram.y, but transformCreateStmt will remove * the item and set raw_default instead. CONSTR_DEFAULT items * should not appear in any subsequent processing. */ typedef struct ColumnDef { NodeTag type; char *colname; /* name of column */ TypeName *typeName; /* type of column */ int inhcount; /* number of times column is inherited */ bool is_local; /* column has local (non-inherited) def'n */ bool is_not_null; /* NOT NULL constraint specified? */ bool is_from_type; /* column definition came from table type */ char storage; /* attstorage setting, or 0 for default */ Node *raw_default; /* default value (untransformed parse tree) */ Node *cooked_default; /* default value (transformed expr tree) */ char identity; /* attidentity setting */ RangeVar *identitySequence; /* to store identity sequence name for * ALTER TABLE ... ADD COLUMN */ char generated; /* attgenerated setting */ CollateClause *collClause; /* untransformed COLLATE spec, if any */ Oid collOid; /* collation OID (InvalidOid if not set) */ List *constraints; /* other constraints on column */ List *fdwoptions; /* per-column FDW options */ int location; /* parse location, or -1 if none/unknown */ } ColumnDef; /* * TableLikeClause - CREATE TABLE ( ... LIKE ... ) clause */ typedef struct TableLikeClause { NodeTag type; RangeVar *relation; bits32 options; /* OR of TableLikeOption flags */ Oid relationOid; /* If table has been looked up, its OID */ } TableLikeClause; typedef enum TableLikeOption { CREATE_TABLE_LIKE_COMMENTS = 1 << 0, CREATE_TABLE_LIKE_CONSTRAINTS = 1 << 1, CREATE_TABLE_LIKE_DEFAULTS = 1 << 2, CREATE_TABLE_LIKE_GENERATED = 1 << 3, CREATE_TABLE_LIKE_IDENTITY = 1 << 4, CREATE_TABLE_LIKE_INDEXES = 1 << 5, CREATE_TABLE_LIKE_STATISTICS = 1 << 6, CREATE_TABLE_LIKE_STORAGE = 1 << 7, CREATE_TABLE_LIKE_ALL = PG_INT32_MAX } TableLikeOption; /* * IndexElem - index parameters (used in CREATE INDEX, and in ON CONFLICT) * * For a plain index attribute, 'name' is the name of the table column to * index, and 'expr' is NULL. For an index expression, 'name' is NULL and * 'expr' is the expression tree. */ typedef struct IndexElem { NodeTag type; char *name; /* name of attribute to index, or NULL */ Node *expr; /* expression to index, or NULL */ char *indexcolname; /* name for index column; NULL = default */ List *collation; /* name of collation; NIL = default */ List *opclass; /* name of desired opclass; NIL = default */ List *opclassopts; /* opclass-specific options, or NIL */ SortByDir ordering; /* ASC/DESC/default */ SortByNulls nulls_ordering; /* FIRST/LAST/default */ } IndexElem; /* * DefElem - a generic "name = value" option definition * * In some contexts the name can be qualified. Also, certain SQL commands * allow a SET/ADD/DROP action to be attached to option settings, so it's * convenient to carry a field for that too. (Note: currently, it is our * practice that the grammar allows namespace and action only in statements * where they are relevant; C code can just ignore those fields in other * statements.) */ typedef enum DefElemAction { DEFELEM_UNSPEC, /* no action given */ DEFELEM_SET, DEFELEM_ADD, DEFELEM_DROP } DefElemAction; typedef struct DefElem { NodeTag type; char *defnamespace; /* NULL if unqualified name */ char *defname; Node *arg; /* a (Value *) or a (TypeName *) */ DefElemAction defaction; /* unspecified action, or SET/ADD/DROP */ int location; /* token location, or -1 if unknown */ } DefElem; /* * LockingClause - raw representation of FOR [NO KEY] UPDATE/[KEY] SHARE * options * * Note: lockedRels == NIL means "all relations in query". Otherwise it * is a list of RangeVar nodes. (We use RangeVar mainly because it carries * a location field --- currently, parse analysis insists on unqualified * names in LockingClause.) */ typedef struct LockingClause { NodeTag type; List *lockedRels; /* FOR [KEY] UPDATE/SHARE relations */ LockClauseStrength strength; LockWaitPolicy waitPolicy; /* NOWAIT and SKIP LOCKED */ } LockingClause; /* * XMLSERIALIZE (in raw parse tree only) */ typedef struct XmlSerialize { NodeTag type; XmlOptionType xmloption; /* DOCUMENT or CONTENT */ Node *expr; TypeName *typeName; int location; /* token location, or -1 if unknown */ } XmlSerialize; /* Partitioning related definitions */ /* * PartitionElem - parse-time representation of a single partition key * * expr can be either a raw expression tree or a parse-analyzed expression. * We don't store these on-disk, though. */ typedef struct PartitionElem { NodeTag type; char *name; /* name of column to partition on, or NULL */ Node *expr; /* expression to partition on, or NULL */ List *collation; /* name of collation; NIL = default */ List *opclass; /* name of desired opclass; NIL = default */ int location; /* token location, or -1 if unknown */ } PartitionElem; /* * PartitionSpec - parse-time representation of a partition key specification * * This represents the key space we will be partitioning on. */ typedef struct PartitionSpec { NodeTag type; char *strategy; /* partitioning strategy ('hash', 'list' or * 'range') */ List *partParams; /* List of PartitionElems */ int location; /* token location, or -1 if unknown */ } PartitionSpec; /* Internal codes for partitioning strategies */ #define PARTITION_STRATEGY_HASH 'h' #define PARTITION_STRATEGY_LIST 'l' #define PARTITION_STRATEGY_RANGE 'r' /* * PartitionBoundSpec - a partition bound specification * * This represents the portion of the partition key space assigned to a * particular partition. These are stored on disk in pg_class.relpartbound. */ struct PartitionBoundSpec { NodeTag type; char strategy; /* see PARTITION_STRATEGY codes above */ bool is_default; /* is it a default partition bound? */ /* Partitioning info for HASH strategy: */ int modulus; int remainder; /* Partitioning info for LIST strategy: */ List *listdatums; /* List of Consts (or A_Consts in raw tree) */ /* Partitioning info for RANGE strategy: */ List *lowerdatums; /* List of PartitionRangeDatums */ List *upperdatums; /* List of PartitionRangeDatums */ int location; /* token location, or -1 if unknown */ }; /* * PartitionRangeDatum - one of the values in a range partition bound * * This can be MINVALUE, MAXVALUE or a specific bounded value. */ typedef enum PartitionRangeDatumKind { PARTITION_RANGE_DATUM_MINVALUE = -1, /* less than any other value */ PARTITION_RANGE_DATUM_VALUE = 0, /* a specific (bounded) value */ PARTITION_RANGE_DATUM_MAXVALUE = 1 /* greater than any other value */ } PartitionRangeDatumKind; typedef struct PartitionRangeDatum { NodeTag type; PartitionRangeDatumKind kind; Node *value; /* Const (or A_Const in raw tree), if kind is * PARTITION_RANGE_DATUM_VALUE, else NULL */ int location; /* token location, or -1 if unknown */ } PartitionRangeDatum; /* * PartitionCmd - info for ALTER TABLE/INDEX ATTACH/DETACH PARTITION commands */ typedef struct PartitionCmd { NodeTag type; RangeVar *name; /* name of partition to attach/detach */ PartitionBoundSpec *bound; /* FOR VALUES, if attaching */ } PartitionCmd; /**************************************************************************** * Nodes for a Query tree ****************************************************************************/ /*-------------------- * RangeTblEntry - * A range table is a List of RangeTblEntry nodes. * * A range table entry may represent a plain relation, a sub-select in * FROM, or the result of a JOIN clause. (Only explicit JOIN syntax * produces an RTE, not the implicit join resulting from multiple FROM * items. This is because we only need the RTE to deal with SQL features * like outer joins and join-output-column aliasing.) Other special * RTE types also exist, as indicated by RTEKind. * * Note that we consider RTE_RELATION to cover anything that has a pg_class * entry. relkind distinguishes the sub-cases. * * alias is an Alias node representing the AS alias-clause attached to the * FROM expression, or NULL if no clause. * * eref is the table reference name and column reference names (either * real or aliases). Note that system columns (OID etc) are not included * in the column list. * eref->aliasname is required to be present, and should generally be used * to identify the RTE for error messages etc. * * In RELATION RTEs, the colnames in both alias and eref are indexed by * physical attribute number; this means there must be colname entries for * dropped columns. When building an RTE we insert empty strings ("") for * dropped columns. Note however that a stored rule may have nonempty * colnames for columns dropped since the rule was created (and for that * matter the colnames might be out of date due to column renamings). * The same comments apply to FUNCTION RTEs when a function's return type * is a named composite type. * * In JOIN RTEs, the colnames in both alias and eref are one-to-one with * joinaliasvars entries. A JOIN RTE will omit columns of its inputs when * those columns are known to be dropped at parse time. Again, however, * a stored rule might contain entries for columns dropped since the rule * was created. (This is only possible for columns not actually referenced * in the rule.) When loading a stored rule, we replace the joinaliasvars * items for any such columns with null pointers. (We can't simply delete * them from the joinaliasvars list, because that would affect the attnums * of Vars referencing the rest of the list.) * * inh is true for relation references that should be expanded to include * inheritance children, if the rel has any. This *must* be false for * RTEs other than RTE_RELATION entries. * * inFromCl marks those range variables that are listed in the FROM clause. * It's false for RTEs that are added to a query behind the scenes, such * as the NEW and OLD variables for a rule, or the subqueries of a UNION. * This flag is not used anymore during parsing, since the parser now uses * a separate "namespace" data structure to control visibility, but it is * needed by ruleutils.c to determine whether RTEs should be shown in * decompiled queries. * * requiredPerms and checkAsUser specify run-time access permissions * checks to be performed at query startup. The user must have *all* * of the permissions that are OR'd together in requiredPerms (zero * indicates no permissions checking). If checkAsUser is not zero, * then do the permissions checks using the access rights of that user, * not the current effective user ID. (This allows rules to act as * setuid gateways.) Permissions checks only apply to RELATION RTEs. * * For SELECT/INSERT/UPDATE permissions, if the user doesn't have * table-wide permissions then it is sufficient to have the permissions * on all columns identified in selectedCols (for SELECT) and/or * insertedCols and/or updatedCols (INSERT with ON CONFLICT DO UPDATE may * have all 3). selectedCols, insertedCols and updatedCols are bitmapsets, * which cannot have negative integer members, so we subtract * FirstLowInvalidHeapAttributeNumber from column numbers before storing * them in these fields. A whole-row Var reference is represented by * setting the bit for InvalidAttrNumber. * * updatedCols is also used in some other places, for example, to determine * which triggers to fire and in FDWs to know which changed columns they * need to ship off. * * Generated columns that are caused to be updated by an update to a base * column are listed in extraUpdatedCols. This is not considered for * permission checking, but it is useful in those places that want to know * the full set of columns being updated as opposed to only the ones the * user explicitly mentioned in the query. (There is currently no need for * an extraInsertedCols, but it could exist.) Note that extraUpdatedCols * is populated during query rewrite, NOT in the parser, since generated * columns could be added after a rule has been parsed and stored. * * securityQuals is a list of security barrier quals (boolean expressions), * to be tested in the listed order before returning a row from the * relation. It is always NIL in parser output. Entries are added by the * rewriter to implement security-barrier views and/or row-level security. * Note that the planner turns each boolean expression into an implicitly * AND'ed sublist, as is its usual habit with qualification expressions. *-------------------- */ typedef enum RTEKind { RTE_RELATION, /* ordinary relation reference */ RTE_SUBQUERY, /* subquery in FROM */ RTE_JOIN, /* join */ RTE_FUNCTION, /* function in FROM */ RTE_TABLEFUNC, /* TableFunc(.., column list) */ RTE_VALUES, /* VALUES (), (), ... */ RTE_CTE, /* common table expr (WITH list element) */ RTE_NAMEDTUPLESTORE, /* tuplestore, e.g. for AFTER triggers */ RTE_RESULT /* RTE represents an empty FROM clause; such * RTEs are added by the planner, they're not * present during parsing or rewriting */ } RTEKind; typedef struct RangeTblEntry { NodeTag type; RTEKind rtekind; /* see above */ /* * XXX the fields applicable to only some rte kinds should be merged into * a union. I didn't do this yet because the diffs would impact a lot of * code that is being actively worked on. FIXME someday. */ /* * Fields valid for a plain relation RTE (else zero): * * As a special case, RTE_NAMEDTUPLESTORE can also set relid to indicate * that the tuple format of the tuplestore is the same as the referenced * relation. This allows plans referencing AFTER trigger transition * tables to be invalidated if the underlying table is altered. * * rellockmode is really LOCKMODE, but it's declared int to avoid having * to include lock-related headers here. It must be RowExclusiveLock if * the RTE is an INSERT/UPDATE/DELETE target, else RowShareLock if the RTE * is a SELECT FOR UPDATE/FOR SHARE target, else AccessShareLock. * * Note: in some cases, rule expansion may result in RTEs that are marked * with RowExclusiveLock even though they are not the target of the * current query; this happens if a DO ALSO rule simply scans the original * target table. We leave such RTEs with their original lockmode so as to * avoid getting an additional, lesser lock. */ Oid relid; /* OID of the relation */ char relkind; /* relation kind (see pg_class.relkind) */ int rellockmode; /* lock level that query requires on the rel */ struct TableSampleClause *tablesample; /* sampling info, or NULL */ /* * Fields valid for a subquery RTE (else NULL): */ Query *subquery; /* the sub-query */ bool security_barrier; /* is from security_barrier view? */ /* * Fields valid for a join RTE (else NULL/zero): * * joinaliasvars is a list of (usually) Vars corresponding to the columns * of the join result. An alias Var referencing column K of the join * result can be replaced by the K'th element of joinaliasvars --- but to * simplify the task of reverse-listing aliases correctly, we do not do * that until planning time. In detail: an element of joinaliasvars can * be a Var of one of the join's input relations, or such a Var with an * implicit coercion to the join's output column type, or a COALESCE * expression containing the two input column Vars (possibly coerced). * Elements beyond the first joinmergedcols entries are always just Vars, * and are never referenced from elsewhere in the query (that is, join * alias Vars are generated only for merged columns). We keep these * entries only because they're needed in expandRTE() and similar code. * * Within a Query loaded from a stored rule, it is possible for non-merged * joinaliasvars items to be null pointers, which are placeholders for * (necessarily unreferenced) columns dropped since the rule was made. * Also, once planning begins, joinaliasvars items can be almost anything, * as a result of subquery-flattening substitutions. * * joinleftcols is an integer list of physical column numbers of the left * join input rel that are included in the join; likewise joinrighttcols * for the right join input rel. (Which rels those are can be determined * from the associated JoinExpr.) If the join is USING/NATURAL, then the * first joinmergedcols entries in each list identify the merged columns. * The merged columns come first in the join output, then remaining * columns of the left input, then remaining columns of the right. * * Note that input columns could have been dropped after creation of a * stored rule, if they are not referenced in the query (in particular, * merged columns could not be dropped); this is not accounted for in * joinleftcols/joinrighttcols. */ JoinType jointype; /* type of join */ int joinmergedcols; /* number of merged (JOIN USING) columns */ List *joinaliasvars; /* list of alias-var expansions */ List *joinleftcols; /* left-side input column numbers */ List *joinrightcols; /* right-side input column numbers */ /* * Fields valid for a function RTE (else NIL/zero): * * When funcordinality is true, the eref->colnames list includes an alias * for the ordinality column. The ordinality column is otherwise * implicit, and must be accounted for "by hand" in places such as * expandRTE(). */ List *functions; /* list of RangeTblFunction nodes */ bool funcordinality; /* is this called WITH ORDINALITY? */ /* * Fields valid for a TableFunc RTE (else NULL): */ TableFunc *tablefunc; /* * Fields valid for a values RTE (else NIL): */ List *values_lists; /* list of expression lists */ /* * Fields valid for a CTE RTE (else NULL/zero): */ char *ctename; /* name of the WITH list item */ Index ctelevelsup; /* number of query levels up */ bool self_reference; /* is this a recursive self-reference? */ /* * Fields valid for CTE, VALUES, ENR, and TableFunc RTEs (else NIL): * * We need these for CTE RTEs so that the types of self-referential * columns are well-defined. For VALUES RTEs, storing these explicitly * saves having to re-determine the info by scanning the values_lists. For * ENRs, we store the types explicitly here (we could get the information * from the catalogs if 'relid' was supplied, but we'd still need these * for TupleDesc-based ENRs, so we might as well always store the type * info here). For TableFuncs, these fields are redundant with data in * the TableFunc node, but keeping them here allows some code sharing with * the other cases. * * For ENRs only, we have to consider the possibility of dropped columns. * A dropped column is included in these lists, but it will have zeroes in * all three lists (as well as an empty-string entry in eref). Testing * for zero coltype is the standard way to detect a dropped column. */ List *coltypes; /* OID list of column type OIDs */ List *coltypmods; /* integer list of column typmods */ List *colcollations; /* OID list of column collation OIDs */ /* * Fields valid for ENR RTEs (else NULL/zero): */ char *enrname; /* name of ephemeral named relation */ double enrtuples; /* estimated or actual from caller */ /* * Fields valid in all RTEs: */ Alias *alias; /* user-written alias clause, if any */ Alias *eref; /* expanded reference names */ bool lateral; /* subquery, function, or values is LATERAL? */ bool inh; /* inheritance requested? */ bool inFromCl; /* present in FROM clause? */ AclMode requiredPerms; /* bitmask of required access permissions */ Oid checkAsUser; /* if valid, check access as this role */ Bitmapset *selectedCols; /* columns needing SELECT permission */ Bitmapset *insertedCols; /* columns needing INSERT permission */ Bitmapset *updatedCols; /* columns needing UPDATE permission */ Bitmapset *extraUpdatedCols; /* generated columns being updated */ List *securityQuals; /* security barrier quals to apply, if any */ } RangeTblEntry; /* * RangeTblFunction - * RangeTblEntry subsidiary data for one function in a FUNCTION RTE. * * If the function had a column definition list (required for an * otherwise-unspecified RECORD result), funccolnames lists the names given * in the definition list, funccoltypes lists their declared column types, * funccoltypmods lists their typmods, funccolcollations their collations. * Otherwise, those fields are NIL. * * Notice we don't attempt to store info about the results of functions * returning named composite types, because those can change from time to * time. We do however remember how many columns we thought the type had * (including dropped columns!), so that we can successfully ignore any * columns added after the query was parsed. */ typedef struct RangeTblFunction { NodeTag type; Node *funcexpr; /* expression tree for func call */ int funccolcount; /* number of columns it contributes to RTE */ /* These fields record the contents of a column definition list, if any: */ List *funccolnames; /* column names (list of String) */ List *funccoltypes; /* OID list of column type OIDs */ List *funccoltypmods; /* integer list of column typmods */ List *funccolcollations; /* OID list of column collation OIDs */ /* This is set during planning for use by the executor: */ Bitmapset *funcparams; /* PARAM_EXEC Param IDs affecting this func */ } RangeTblFunction; /* * TableSampleClause - TABLESAMPLE appearing in a transformed FROM clause * * Unlike RangeTableSample, this is a subnode of the relevant RangeTblEntry. */ typedef struct TableSampleClause { NodeTag type; Oid tsmhandler; /* OID of the tablesample handler function */ List *args; /* tablesample argument expression(s) */ Expr *repeatable; /* REPEATABLE expression, or NULL if none */ } TableSampleClause; /* * WithCheckOption - * representation of WITH CHECK OPTION checks to be applied to new tuples * when inserting/updating an auto-updatable view, or RLS WITH CHECK * policies to be applied when inserting/updating a relation with RLS. */ typedef enum WCOKind { WCO_VIEW_CHECK, /* WCO on an auto-updatable view */ WCO_RLS_INSERT_CHECK, /* RLS INSERT WITH CHECK policy */ WCO_RLS_UPDATE_CHECK, /* RLS UPDATE WITH CHECK policy */ WCO_RLS_CONFLICT_CHECK /* RLS ON CONFLICT DO UPDATE USING policy */ } WCOKind; typedef struct WithCheckOption { NodeTag type; WCOKind kind; /* kind of WCO */ char *relname; /* name of relation that specified the WCO */ char *polname; /* name of RLS policy being checked */ Node *qual; /* constraint qual to check */ bool cascaded; /* true for a cascaded WCO on a view */ } WithCheckOption; /* * SortGroupClause - * representation of ORDER BY, GROUP BY, PARTITION BY, * DISTINCT, DISTINCT ON items * * You might think that ORDER BY is only interested in defining ordering, * and GROUP/DISTINCT are only interested in defining equality. However, * one way to implement grouping is to sort and then apply a "uniq"-like * filter. So it's also interesting to keep track of possible sort operators * for GROUP/DISTINCT, and in particular to try to sort for the grouping * in a way that will also yield a requested ORDER BY ordering. So we need * to be able to compare ORDER BY and GROUP/DISTINCT lists, which motivates * the decision to give them the same representation. * * tleSortGroupRef must match ressortgroupref of exactly one entry of the * query's targetlist; that is the expression to be sorted or grouped by. * eqop is the OID of the equality operator. * sortop is the OID of the ordering operator (a "<" or ">" operator), * or InvalidOid if not available. * nulls_first means about what you'd expect. If sortop is InvalidOid * then nulls_first is meaningless and should be set to false. * hashable is true if eqop is hashable (note this condition also depends * on the datatype of the input expression). * * In an ORDER BY item, all fields must be valid. (The eqop isn't essential * here, but it's cheap to get it along with the sortop, and requiring it * to be valid eases comparisons to grouping items.) Note that this isn't * actually enough information to determine an ordering: if the sortop is * collation-sensitive, a collation OID is needed too. We don't store the * collation in SortGroupClause because it's not available at the time the * parser builds the SortGroupClause; instead, consult the exposed collation * of the referenced targetlist expression to find out what it is. * * In a grouping item, eqop must be valid. If the eqop is a btree equality * operator, then sortop should be set to a compatible ordering operator. * We prefer to set eqop/sortop/nulls_first to match any ORDER BY item that * the query presents for the same tlist item. If there is none, we just * use the default ordering op for the datatype. * * If the tlist item's type has a hash opclass but no btree opclass, then * we will set eqop to the hash equality operator, sortop to InvalidOid, * and nulls_first to false. A grouping item of this kind can only be * implemented by hashing, and of course it'll never match an ORDER BY item. * * The hashable flag is provided since we generally have the requisite * information readily available when the SortGroupClause is constructed, * and it's relatively expensive to get it again later. Note there is no * need for a "sortable" flag since OidIsValid(sortop) serves the purpose. * * A query might have both ORDER BY and DISTINCT (or DISTINCT ON) clauses. * In SELECT DISTINCT, the distinctClause list is as long or longer than the * sortClause list, while in SELECT DISTINCT ON it's typically shorter. * The two lists must match up to the end of the shorter one --- the parser * rearranges the distinctClause if necessary to make this true. (This * restriction ensures that only one sort step is needed to both satisfy the * ORDER BY and set up for the Unique step. This is semantically necessary * for DISTINCT ON, and presents no real drawback for DISTINCT.) */ typedef struct SortGroupClause { NodeTag type; Index tleSortGroupRef; /* reference into targetlist */ Oid eqop; /* the equality operator ('=' op) */ Oid sortop; /* the ordering operator ('<' op), or 0 */ bool nulls_first; /* do NULLs come before normal values? */ bool hashable; /* can eqop be implemented by hashing? */ } SortGroupClause; /* * GroupingSet - * representation of CUBE, ROLLUP and GROUPING SETS clauses * * In a Query with grouping sets, the groupClause contains a flat list of * SortGroupClause nodes for each distinct expression used. The actual * structure of the GROUP BY clause is given by the groupingSets tree. * * In the raw parser output, GroupingSet nodes (of all types except SIMPLE * which is not used) are potentially mixed in with the expressions in the * groupClause of the SelectStmt. (An expression can't contain a GroupingSet, * but a list may mix GroupingSet and expression nodes.) At this stage, the * content of each node is a list of expressions, some of which may be RowExprs * which represent sublists rather than actual row constructors, and nested * GroupingSet nodes where legal in the grammar. The structure directly * reflects the query syntax. * * In parse analysis, the transformed expressions are used to build the tlist * and groupClause list (of SortGroupClause nodes), and the groupingSets tree * is eventually reduced to a fixed format: * * EMPTY nodes represent (), and obviously have no content * * SIMPLE nodes represent a list of one or more expressions to be treated as an * atom by the enclosing structure; the content is an integer list of * ressortgroupref values (see SortGroupClause) * * CUBE and ROLLUP nodes contain a list of one or more SIMPLE nodes. * * SETS nodes contain a list of EMPTY, SIMPLE, CUBE or ROLLUP nodes, but after * parse analysis they cannot contain more SETS nodes; enough of the syntactic * transforms of the spec have been applied that we no longer have arbitrarily * deep nesting (though we still preserve the use of cube/rollup). * * Note that if the groupingSets tree contains no SIMPLE nodes (only EMPTY * nodes at the leaves), then the groupClause will be empty, but this is still * an aggregation query (similar to using aggs or HAVING without GROUP BY). * * As an example, the following clause: * * GROUP BY GROUPING SETS ((a,b), CUBE(c,(d,e))) * * looks like this after raw parsing: * * SETS( RowExpr(a,b) , CUBE( c, RowExpr(d,e) ) ) * * and parse analysis converts it to: * * SETS( SIMPLE(1,2), CUBE( SIMPLE(3), SIMPLE(4,5) ) ) */ typedef enum { GROUPING_SET_EMPTY, GROUPING_SET_SIMPLE, GROUPING_SET_ROLLUP, GROUPING_SET_CUBE, GROUPING_SET_SETS } GroupingSetKind; typedef struct GroupingSet { NodeTag type; GroupingSetKind kind; List *content; int location; } GroupingSet; /* * WindowClause - * transformed representation of WINDOW and OVER clauses * * A parsed Query's windowClause list contains these structs. "name" is set * if the clause originally came from WINDOW, and is NULL if it originally * was an OVER clause (but note that we collapse out duplicate OVERs). * partitionClause and orderClause are lists of SortGroupClause structs. * If we have RANGE with offset PRECEDING/FOLLOWING, the semantics of that are * specified by startInRangeFunc/inRangeColl/inRangeAsc/inRangeNullsFirst * for the start offset, or endInRangeFunc/inRange* for the end offset. * winref is an ID number referenced by WindowFunc nodes; it must be unique * among the members of a Query's windowClause list. * When refname isn't null, the partitionClause is always copied from there; * the orderClause might or might not be copied (see copiedOrder); the framing * options are never copied, per spec. */ typedef struct WindowClause { NodeTag type; char *name; /* window name (NULL in an OVER clause) */ char *refname; /* referenced window name, if any */ List *partitionClause; /* PARTITION BY list */ List *orderClause; /* ORDER BY list */ int frameOptions; /* frame_clause options, see WindowDef */ Node *startOffset; /* expression for starting bound, if any */ Node *endOffset; /* expression for ending bound, if any */ Oid startInRangeFunc; /* in_range function for startOffset */ Oid endInRangeFunc; /* in_range function for endOffset */ Oid inRangeColl; /* collation for in_range tests */ bool inRangeAsc; /* use ASC sort order for in_range tests? */ bool inRangeNullsFirst; /* nulls sort first for in_range tests? */ Index winref; /* ID referenced by window functions */ bool copiedOrder; /* did we copy orderClause from refname? */ } WindowClause; /* * RowMarkClause - * parser output representation of FOR [KEY] UPDATE/SHARE clauses * * Query.rowMarks contains a separate RowMarkClause node for each relation * identified as a FOR [KEY] UPDATE/SHARE target. If one of these clauses * is applied to a subquery, we generate RowMarkClauses for all normal and * subquery rels in the subquery, but they are marked pushedDown = true to * distinguish them from clauses that were explicitly written at this query * level. Also, Query.hasForUpdate tells whether there were explicit FOR * UPDATE/SHARE/KEY SHARE clauses in the current query level. */ typedef struct RowMarkClause { NodeTag type; Index rti; /* range table index of target relation */ LockClauseStrength strength; LockWaitPolicy waitPolicy; /* NOWAIT and SKIP LOCKED */ bool pushedDown; /* pushed down from higher query level? */ } RowMarkClause; /* * WithClause - * representation of WITH clause * * Note: WithClause does not propagate into the Query representation; * but CommonTableExpr does. */ typedef struct WithClause { NodeTag type; List *ctes; /* list of CommonTableExprs */ bool recursive; /* true = WITH RECURSIVE */ int location; /* token location, or -1 if unknown */ } WithClause; /* * InferClause - * ON CONFLICT unique index inference clause * * Note: InferClause does not propagate into the Query representation. */ typedef struct InferClause { NodeTag type; List *indexElems; /* IndexElems to infer unique index */ Node *whereClause; /* qualification (partial-index predicate) */ char *conname; /* Constraint name, or NULL if unnamed */ int location; /* token location, or -1 if unknown */ } InferClause; /* * OnConflictClause - * representation of ON CONFLICT clause * * Note: OnConflictClause does not propagate into the Query representation. */ typedef struct OnConflictClause { NodeTag type; OnConflictAction action; /* DO NOTHING or UPDATE? */ InferClause *infer; /* Optional index inference clause */ List *targetList; /* the target list (of ResTarget) */ Node *whereClause; /* qualifications */ int location; /* token location, or -1 if unknown */ } OnConflictClause; /* * CommonTableExpr - * representation of WITH list element * * We don't currently support the SEARCH or CYCLE clause. */ typedef enum CTEMaterialize { CTEMaterializeDefault, /* no option specified */ CTEMaterializeAlways, /* MATERIALIZED */ CTEMaterializeNever /* NOT MATERIALIZED */ } CTEMaterialize; typedef struct CommonTableExpr { NodeTag type; char *ctename; /* query name (never qualified) */ List *aliascolnames; /* optional list of column names */ CTEMaterialize ctematerialized; /* is this an optimization fence? */ /* SelectStmt/InsertStmt/etc before parse analysis, Query afterwards: */ Node *ctequery; /* the CTE's subquery */ int location; /* token location, or -1 if unknown */ /* These fields are set during parse analysis: */ bool cterecursive; /* is this CTE actually recursive? */ int cterefcount; /* number of RTEs referencing this CTE * (excluding internal self-references) */ List *ctecolnames; /* list of output column names */ List *ctecoltypes; /* OID list of output column type OIDs */ List *ctecoltypmods; /* integer list of output column typmods */ List *ctecolcollations; /* OID list of column collation OIDs */ } CommonTableExpr; /* Convenience macro to get the output tlist of a CTE's query */ #define GetCTETargetList(cte) \ (AssertMacro(IsA((cte)->ctequery, Query)), \ ((Query *) (cte)->ctequery)->commandType == CMD_SELECT ? \ ((Query *) (cte)->ctequery)->targetList : \ ((Query *) (cte)->ctequery)->returningList) /* * TriggerTransition - * representation of transition row or table naming clause * * Only transition tables are initially supported in the syntax, and only for * AFTER triggers, but other permutations are accepted by the parser so we can * give a meaningful message from C code. */ typedef struct TriggerTransition { NodeTag type; char *name; bool isNew; bool isTable; } TriggerTransition; /***************************************************************************** * Raw Grammar Output Statements *****************************************************************************/ /* * RawStmt --- container for any one statement's raw parse tree * * Parse analysis converts a raw parse tree headed by a RawStmt node into * an analyzed statement headed by a Query node. For optimizable statements, * the conversion is complex. For utility statements, the parser usually just * transfers the raw parse tree (sans RawStmt) into the utilityStmt field of * the Query node, and all the useful work happens at execution time. * * stmt_location/stmt_len identify the portion of the source text string * containing this raw statement (useful for multi-statement strings). */ typedef struct RawStmt { NodeTag type; Node *stmt; /* raw parse tree */ int stmt_location; /* start location, or -1 if unknown */ int stmt_len; /* length in bytes; 0 means "rest of string" */ } RawStmt; /***************************************************************************** * Optimizable Statements *****************************************************************************/ /* ---------------------- * Insert Statement * * The source expression is represented by SelectStmt for both the * SELECT and VALUES cases. If selectStmt is NULL, then the query * is INSERT ... DEFAULT VALUES. * ---------------------- */ typedef struct InsertStmt { NodeTag type; RangeVar *relation; /* relation to insert into */ List *cols; /* optional: names of the target columns */ Node *selectStmt; /* the source SELECT/VALUES, or NULL */ OnConflictClause *onConflictClause; /* ON CONFLICT clause */ List *returningList; /* list of expressions to return */ WithClause *withClause; /* WITH clause */ OverridingKind override; /* OVERRIDING clause */ } InsertStmt; /* ---------------------- * Delete Statement * ---------------------- */ typedef struct DeleteStmt { NodeTag type; RangeVar *relation; /* relation to delete from */ List *usingClause; /* optional using clause for more tables */ Node *whereClause; /* qualifications */ List *returningList; /* list of expressions to return */ WithClause *withClause; /* WITH clause */ } DeleteStmt; /* ---------------------- * Update Statement * ---------------------- */ typedef struct UpdateStmt { NodeTag type; RangeVar *relation; /* relation to update */ List *targetList; /* the target list (of ResTarget) */ Node *whereClause; /* qualifications */ List *fromClause; /* optional from clause for more tables */ List *returningList; /* list of expressions to return */ WithClause *withClause; /* WITH clause */ } UpdateStmt; /* ---------------------- * Select Statement * * A "simple" SELECT is represented in the output of gram.y by a single * SelectStmt node; so is a VALUES construct. A query containing set * operators (UNION, INTERSECT, EXCEPT) is represented by a tree of SelectStmt * nodes, in which the leaf nodes are component SELECTs and the internal nodes * represent UNION, INTERSECT, or EXCEPT operators. Using the same node * type for both leaf and internal nodes allows gram.y to stick ORDER BY, * LIMIT, etc, clause values into a SELECT statement without worrying * whether it is a simple or compound SELECT. * ---------------------- */ typedef enum SetOperation { SETOP_NONE = 0, SETOP_UNION, SETOP_INTERSECT, SETOP_EXCEPT } SetOperation; typedef struct SelectStmt { NodeTag type; /* * These fields are used only in "leaf" SelectStmts. */ List *distinctClause; /* NULL, list of DISTINCT ON exprs, or * lcons(NIL,NIL) for all (SELECT DISTINCT) */ IntoClause *intoClause; /* target for SELECT INTO */ List *targetList; /* the target list (of ResTarget) */ List *fromClause; /* the FROM clause */ Node *whereClause; /* WHERE qualification */ List *groupClause; /* GROUP BY clauses */ Node *havingClause; /* HAVING conditional-expression */ List *windowClause; /* WINDOW window_name AS (...), ... */ /* * In a "leaf" node representing a VALUES list, the above fields are all * null, and instead this field is set. Note that the elements of the * sublists are just expressions, without ResTarget decoration. Also note * that a list element can be DEFAULT (represented as a SetToDefault * node), regardless of the context of the VALUES list. It's up to parse * analysis to reject that where not valid. */ List *valuesLists; /* untransformed list of expression lists */ /* * These fields are used in both "leaf" SelectStmts and upper-level * SelectStmts. */ List *sortClause; /* sort clause (a list of SortBy's) */ Node *limitOffset; /* # of result tuples to skip */ Node *limitCount; /* # of result tuples to return */ LimitOption limitOption; /* limit type */ List *lockingClause; /* FOR UPDATE (list of LockingClause's) */ WithClause *withClause; /* WITH clause */ /* * These fields are used only in upper-level SelectStmts. */ SetOperation op; /* type of set op */ bool all; /* ALL specified? */ struct SelectStmt *larg; /* left child */ struct SelectStmt *rarg; /* right child */ /* Eventually add fields for CORRESPONDING spec here */ } SelectStmt; /* ---------------------- * Set Operation node for post-analysis query trees * * After parse analysis, a SELECT with set operations is represented by a * top-level Query node containing the leaf SELECTs as subqueries in its * range table. Its setOperations field shows the tree of set operations, * with leaf SelectStmt nodes replaced by RangeTblRef nodes, and internal * nodes replaced by SetOperationStmt nodes. Information about the output * column types is added, too. (Note that the child nodes do not necessarily * produce these types directly, but we've checked that their output types * can be coerced to the output column type.) Also, if it's not UNION ALL, * information about the types' sort/group semantics is provided in the form * of a SortGroupClause list (same representation as, eg, DISTINCT). * The resolved common column collations are provided too; but note that if * it's not UNION ALL, it's okay for a column to not have a common collation, * so a member of the colCollations list could be InvalidOid even though the * column has a collatable type. * ---------------------- */ typedef struct SetOperationStmt { NodeTag type; SetOperation op; /* type of set op */ bool all; /* ALL specified? */ Node *larg; /* left child */ Node *rarg; /* right child */ /* Eventually add fields for CORRESPONDING spec here */ /* Fields derived during parse analysis: */ List *colTypes; /* OID list of output column type OIDs */ List *colTypmods; /* integer list of output column typmods */ List *colCollations; /* OID list of output column collation OIDs */ List *groupClauses; /* a list of SortGroupClause's */ /* groupClauses is NIL if UNION ALL, but must be set otherwise */ } SetOperationStmt; /***************************************************************************** * Other Statements (no optimizations required) * * These are not touched by parser/analyze.c except to put them into * the utilityStmt field of a Query. This is eventually passed to * ProcessUtility (by-passing rewriting and planning). Some of the * statements do need attention from parse analysis, and this is * done by routines in parser/parse_utilcmd.c after ProcessUtility * receives the command for execution. * DECLARE CURSOR, EXPLAIN, and CREATE TABLE AS are special cases: * they contain optimizable statements, which get processed normally * by parser/analyze.c. *****************************************************************************/ /* * When a command can act on several kinds of objects with only one * parse structure required, use these constants to designate the * object type. Note that commands typically don't support all the types. */ typedef enum ObjectType { OBJECT_ACCESS_METHOD, OBJECT_AGGREGATE, OBJECT_AMOP, OBJECT_AMPROC, OBJECT_ATTRIBUTE, /* type's attribute, when distinct from column */ OBJECT_CAST, OBJECT_COLUMN, OBJECT_COLLATION, OBJECT_CONVERSION, OBJECT_DATABASE, OBJECT_DEFAULT, OBJECT_DEFACL, OBJECT_DOMAIN, OBJECT_DOMCONSTRAINT, OBJECT_EVENT_TRIGGER, OBJECT_EXTENSION, OBJECT_FDW, OBJECT_FOREIGN_SERVER, OBJECT_FOREIGN_TABLE, OBJECT_FUNCTION, OBJECT_INDEX, OBJECT_LANGUAGE, OBJECT_LARGEOBJECT, OBJECT_MATVIEW, OBJECT_OPCLASS, OBJECT_OPERATOR, OBJECT_OPFAMILY, OBJECT_POLICY, OBJECT_PROCEDURE, OBJECT_PUBLICATION, OBJECT_PUBLICATION_REL, OBJECT_ROLE, OBJECT_ROUTINE, OBJECT_RULE, OBJECT_SCHEMA, OBJECT_SEQUENCE, OBJECT_SUBSCRIPTION, OBJECT_STATISTIC_EXT, OBJECT_TABCONSTRAINT, OBJECT_TABLE, OBJECT_TABLESPACE, OBJECT_TRANSFORM, OBJECT_TRIGGER, OBJECT_TSCONFIGURATION, OBJECT_TSDICTIONARY, OBJECT_TSPARSER, OBJECT_TSTEMPLATE, OBJECT_TYPE, OBJECT_USER_MAPPING, OBJECT_VIEW } ObjectType; /* ---------------------- * Create Schema Statement * * NOTE: the schemaElts list contains raw parsetrees for component statements * of the schema, such as CREATE TABLE, GRANT, etc. These are analyzed and * executed after the schema itself is created. * ---------------------- */ typedef struct CreateSchemaStmt { NodeTag type; char *schemaname; /* the name of the schema to create */ RoleSpec *authrole; /* the owner of the created schema */ List *schemaElts; /* schema components (list of parsenodes) */ bool if_not_exists; /* just do nothing if schema already exists? */ } CreateSchemaStmt; typedef enum DropBehavior { DROP_RESTRICT, /* drop fails if any dependent objects */ DROP_CASCADE /* remove dependent objects too */ } DropBehavior; /* ---------------------- * Alter Table * ---------------------- */ typedef struct AlterTableStmt { NodeTag type; RangeVar *relation; /* table to work on */ List *cmds; /* list of subcommands */ ObjectType relkind; /* type of object */ bool missing_ok; /* skip error if table missing */ } AlterTableStmt; typedef enum AlterTableType { AT_AddColumn, /* add column */ AT_AddColumnRecurse, /* internal to commands/tablecmds.c */ AT_AddColumnToView, /* implicitly via CREATE OR REPLACE VIEW */ AT_ColumnDefault, /* alter column default */ AT_CookedColumnDefault, /* add a pre-cooked column default */ AT_DropNotNull, /* alter column drop not null */ AT_SetNotNull, /* alter column set not null */ AT_DropExpression, /* alter column drop expression */ AT_CheckNotNull, /* check column is already marked not null */ AT_SetStatistics, /* alter column set statistics */ AT_SetOptions, /* alter column set ( options ) */ AT_ResetOptions, /* alter column reset ( options ) */ AT_SetStorage, /* alter column set storage */ AT_DropColumn, /* drop column */ AT_DropColumnRecurse, /* internal to commands/tablecmds.c */ AT_AddIndex, /* add index */ AT_ReAddIndex, /* internal to commands/tablecmds.c */ AT_AddConstraint, /* add constraint */ AT_AddConstraintRecurse, /* internal to commands/tablecmds.c */ AT_ReAddConstraint, /* internal to commands/tablecmds.c */ AT_ReAddDomainConstraint, /* internal to commands/tablecmds.c */ AT_AlterConstraint, /* alter constraint */ AT_ValidateConstraint, /* validate constraint */ AT_ValidateConstraintRecurse, /* internal to commands/tablecmds.c */ AT_AddIndexConstraint, /* add constraint using existing index */ AT_DropConstraint, /* drop constraint */ AT_DropConstraintRecurse, /* internal to commands/tablecmds.c */ AT_ReAddComment, /* internal to commands/tablecmds.c */ AT_AlterColumnType, /* alter column type */ AT_AlterColumnGenericOptions, /* alter column OPTIONS (...) */ AT_ChangeOwner, /* change owner */ AT_ClusterOn, /* CLUSTER ON */ AT_DropCluster, /* SET WITHOUT CLUSTER */ AT_SetLogged, /* SET LOGGED */ AT_SetUnLogged, /* SET UNLOGGED */ AT_DropOids, /* SET WITHOUT OIDS */ AT_SetTableSpace, /* SET TABLESPACE */ AT_SetRelOptions, /* SET (...) -- AM specific parameters */ AT_ResetRelOptions, /* RESET (...) -- AM specific parameters */ AT_ReplaceRelOptions, /* replace reloption list in its entirety */ AT_EnableTrig, /* ENABLE TRIGGER name */ AT_EnableAlwaysTrig, /* ENABLE ALWAYS TRIGGER name */ AT_EnableReplicaTrig, /* ENABLE REPLICA TRIGGER name */ AT_DisableTrig, /* DISABLE TRIGGER name */ AT_EnableTrigAll, /* ENABLE TRIGGER ALL */ AT_DisableTrigAll, /* DISABLE TRIGGER ALL */ AT_EnableTrigUser, /* ENABLE TRIGGER USER */ AT_DisableTrigUser, /* DISABLE TRIGGER USER */ AT_EnableRule, /* ENABLE RULE name */ AT_EnableAlwaysRule, /* ENABLE ALWAYS RULE name */ AT_EnableReplicaRule, /* ENABLE REPLICA RULE name */ AT_DisableRule, /* DISABLE RULE name */ AT_AddInherit, /* INHERIT parent */ AT_DropInherit, /* NO INHERIT parent */ AT_AddOf, /* OF */ AT_DropOf, /* NOT OF */ AT_ReplicaIdentity, /* REPLICA IDENTITY */ AT_EnableRowSecurity, /* ENABLE ROW SECURITY */ AT_DisableRowSecurity, /* DISABLE ROW SECURITY */ AT_ForceRowSecurity, /* FORCE ROW SECURITY */ AT_NoForceRowSecurity, /* NO FORCE ROW SECURITY */ AT_GenericOptions, /* OPTIONS (...) */ AT_AttachPartition, /* ATTACH PARTITION */ AT_DetachPartition, /* DETACH PARTITION */ AT_AddIdentity, /* ADD IDENTITY */ AT_SetIdentity, /* SET identity column options */ AT_DropIdentity /* DROP IDENTITY */ } AlterTableType; typedef struct ReplicaIdentityStmt { NodeTag type; char identity_type; char *name; } ReplicaIdentityStmt; typedef struct AlterTableCmd /* one subcommand of an ALTER TABLE */ { NodeTag type; AlterTableType subtype; /* Type of table alteration to apply */ char *name; /* column, constraint, or trigger to act on, * or tablespace */ int16 num; /* attribute number for columns referenced by * number */ RoleSpec *newowner; Node *def; /* definition of new column, index, * constraint, or parent table */ DropBehavior behavior; /* RESTRICT or CASCADE for DROP cases */ bool missing_ok; /* skip error if missing? */ } AlterTableCmd; /* ---------------------- * Alter Collation * ---------------------- */ typedef struct AlterCollationStmt { NodeTag type; List *collname; } AlterCollationStmt; /* ---------------------- * Alter Domain * * The fields are used in different ways by the different variants of * this command. * ---------------------- */ typedef struct AlterDomainStmt { NodeTag type; char subtype; /*------------ * T = alter column default * N = alter column drop not null * O = alter column set not null * C = add constraint * X = drop constraint *------------ */ List *typeName; /* domain to work on */ char *name; /* column or constraint name to act on */ Node *def; /* definition of default or constraint */ DropBehavior behavior; /* RESTRICT or CASCADE for DROP cases */ bool missing_ok; /* skip error if missing? */ } AlterDomainStmt; /* ---------------------- * Grant|Revoke Statement * ---------------------- */ typedef enum GrantTargetType { ACL_TARGET_OBJECT, /* grant on specific named object(s) */ ACL_TARGET_ALL_IN_SCHEMA, /* grant on all objects in given schema(s) */ ACL_TARGET_DEFAULTS /* ALTER DEFAULT PRIVILEGES */ } GrantTargetType; typedef struct GrantStmt { NodeTag type; bool is_grant; /* true = GRANT, false = REVOKE */ GrantTargetType targtype; /* type of the grant target */ ObjectType objtype; /* kind of object being operated on */ List *objects; /* list of RangeVar nodes, ObjectWithArgs * nodes, or plain names (as Value strings) */ List *privileges; /* list of AccessPriv nodes */ /* privileges == NIL denotes ALL PRIVILEGES */ List *grantees; /* list of RoleSpec nodes */ bool grant_option; /* grant or revoke grant option */ DropBehavior behavior; /* drop behavior (for REVOKE) */ } GrantStmt; /* * Note: ObjectWithArgs carries only the types of the input parameters of the * function. So it is sufficient to identify an existing function, but it * is not enough info to define a function nor to call it. */ typedef struct ObjectWithArgs { NodeTag type; List *objname; /* qualified name of function/operator */ List *objargs; /* list of Typename nodes */ bool args_unspecified; /* argument list was omitted, so name must * be unique (note that objargs == NIL * means zero args) */ } ObjectWithArgs; /* * An access privilege, with optional list of column names * priv_name == NULL denotes ALL PRIVILEGES (only used with a column list) * cols == NIL denotes "all columns" * Note that simple "ALL PRIVILEGES" is represented as a NIL list, not * an AccessPriv with both fields null. */ typedef struct AccessPriv { NodeTag type; char *priv_name; /* string name of privilege */ List *cols; /* list of Value strings */ } AccessPriv; /* ---------------------- * Grant/Revoke Role Statement * * Note: because of the parsing ambiguity with the GRANT * statement, granted_roles is a list of AccessPriv; the execution code * should complain if any column lists appear. grantee_roles is a list * of role names, as Value strings. * ---------------------- */ typedef struct GrantRoleStmt { NodeTag type; List *granted_roles; /* list of roles to be granted/revoked */ List *grantee_roles; /* list of member roles to add/delete */ bool is_grant; /* true = GRANT, false = REVOKE */ bool admin_opt; /* with admin option */ RoleSpec *grantor; /* set grantor to other than current role */ DropBehavior behavior; /* drop behavior (for REVOKE) */ } GrantRoleStmt; /* ---------------------- * Alter Default Privileges Statement * ---------------------- */ typedef struct AlterDefaultPrivilegesStmt { NodeTag type; List *options; /* list of DefElem */ GrantStmt *action; /* GRANT/REVOKE action (with objects=NIL) */ } AlterDefaultPrivilegesStmt; /* ---------------------- * Copy Statement * * We support "COPY relation FROM file", "COPY relation TO file", and * "COPY (query) TO file". In any given CopyStmt, exactly one of "relation" * and "query" must be non-NULL. * ---------------------- */ typedef struct CopyStmt { NodeTag type; RangeVar *relation; /* the relation to copy */ Node *query; /* the query (SELECT or DML statement with * RETURNING) to copy, as a raw parse tree */ List *attlist; /* List of column names (as Strings), or NIL * for all columns */ bool is_from; /* TO or FROM */ bool is_program; /* is 'filename' a program to popen? */ char *filename; /* filename, or NULL for STDIN/STDOUT */ List *options; /* List of DefElem nodes */ Node *whereClause; /* WHERE condition (or NULL) */ } CopyStmt; /* ---------------------- * SET Statement (includes RESET) * * "SET var TO DEFAULT" and "RESET var" are semantically equivalent, but we * preserve the distinction in VariableSetKind for CreateCommandTag(). * ---------------------- */ typedef enum { VAR_SET_VALUE, /* SET var = value */ VAR_SET_DEFAULT, /* SET var TO DEFAULT */ VAR_SET_CURRENT, /* SET var FROM CURRENT */ VAR_SET_MULTI, /* special case for SET TRANSACTION ... */ VAR_RESET, /* RESET var */ VAR_RESET_ALL /* RESET ALL */ } VariableSetKind; typedef struct VariableSetStmt { NodeTag type; VariableSetKind kind; char *name; /* variable to be set */ List *args; /* List of A_Const nodes */ bool is_local; /* SET LOCAL? */ } VariableSetStmt; /* ---------------------- * Show Statement * ---------------------- */ typedef struct VariableShowStmt { NodeTag type; char *name; } VariableShowStmt; /* ---------------------- * Create Table Statement * * NOTE: in the raw gram.y output, ColumnDef and Constraint nodes are * intermixed in tableElts, and constraints is NIL. After parse analysis, * tableElts contains just ColumnDefs, and constraints contains just * Constraint nodes (in fact, only CONSTR_CHECK nodes, in the present * implementation). * ---------------------- */ typedef struct CreateStmt { NodeTag type; RangeVar *relation; /* relation to create */ List *tableElts; /* column definitions (list of ColumnDef) */ List *inhRelations; /* relations to inherit from (list of * inhRelation) */ PartitionBoundSpec *partbound; /* FOR VALUES clause */ PartitionSpec *partspec; /* PARTITION BY clause */ TypeName *ofTypename; /* OF typename */ List *constraints; /* constraints (list of Constraint nodes) */ List *options; /* options from WITH clause */ OnCommitAction oncommit; /* what do we do at COMMIT? */ char *tablespacename; /* table space to use, or NULL */ char *accessMethod; /* table access method */ bool if_not_exists; /* just do nothing if it already exists? */ } CreateStmt; /* ---------- * Definitions for constraints in CreateStmt * * Note that column defaults are treated as a type of constraint, * even though that's a bit odd semantically. * * For constraints that use expressions (CONSTR_CHECK, CONSTR_DEFAULT) * we may have the expression in either "raw" form (an untransformed * parse tree) or "cooked" form (the nodeToString representation of * an executable expression tree), depending on how this Constraint * node was created (by parsing, or by inheritance from an existing * relation). We should never have both in the same node! * * FKCONSTR_ACTION_xxx values are stored into pg_constraint.confupdtype * and pg_constraint.confdeltype columns; FKCONSTR_MATCH_xxx values are * stored into pg_constraint.confmatchtype. Changing the code values may * require an initdb! * * If skip_validation is true then we skip checking that the existing rows * in the table satisfy the constraint, and just install the catalog entries * for the constraint. A new FK constraint is marked as valid iff * initially_valid is true. (Usually skip_validation and initially_valid * are inverses, but we can set both true if the table is known empty.) * * Constraint attributes (DEFERRABLE etc) are initially represented as * separate Constraint nodes for simplicity of parsing. parse_utilcmd.c makes * a pass through the constraints list to insert the info into the appropriate * Constraint node. * ---------- */ typedef enum ConstrType /* types of constraints */ { CONSTR_NULL, /* not standard SQL, but a lot of people * expect it */ CONSTR_NOTNULL, CONSTR_DEFAULT, CONSTR_IDENTITY, CONSTR_GENERATED, CONSTR_CHECK, CONSTR_PRIMARY, CONSTR_UNIQUE, CONSTR_EXCLUSION, CONSTR_FOREIGN, CONSTR_ATTR_DEFERRABLE, /* attributes for previous constraint node */ CONSTR_ATTR_NOT_DEFERRABLE, CONSTR_ATTR_DEFERRED, CONSTR_ATTR_IMMEDIATE } ConstrType; /* Foreign key action codes */ #define FKCONSTR_ACTION_NOACTION 'a' #define FKCONSTR_ACTION_RESTRICT 'r' #define FKCONSTR_ACTION_CASCADE 'c' #define FKCONSTR_ACTION_SETNULL 'n' #define FKCONSTR_ACTION_SETDEFAULT 'd' /* Foreign key matchtype codes */ #define FKCONSTR_MATCH_FULL 'f' #define FKCONSTR_MATCH_PARTIAL 'p' #define FKCONSTR_MATCH_SIMPLE 's' typedef struct Constraint { NodeTag type; ConstrType contype; /* see above */ /* Fields used for most/all constraint types: */ char *conname; /* Constraint name, or NULL if unnamed */ bool deferrable; /* DEFERRABLE? */ bool initdeferred; /* INITIALLY DEFERRED? */ int location; /* token location, or -1 if unknown */ /* Fields used for constraints with expressions (CHECK and DEFAULT): */ bool is_no_inherit; /* is constraint non-inheritable? */ Node *raw_expr; /* expr, as untransformed parse tree */ char *cooked_expr; /* expr, as nodeToString representation */ char generated_when; /* ALWAYS or BY DEFAULT */ /* Fields used for unique constraints (UNIQUE and PRIMARY KEY): */ List *keys; /* String nodes naming referenced key * column(s) */ List *including; /* String nodes naming referenced nonkey * column(s) */ /* Fields used for EXCLUSION constraints: */ List *exclusions; /* list of (IndexElem, operator name) pairs */ /* Fields used for index constraints (UNIQUE, PRIMARY KEY, EXCLUSION): */ List *options; /* options from WITH clause */ char *indexname; /* existing index to use; otherwise NULL */ char *indexspace; /* index tablespace; NULL for default */ bool reset_default_tblspc; /* reset default_tablespace prior to * creating the index */ /* These could be, but currently are not, used for UNIQUE/PKEY: */ char *access_method; /* index access method; NULL for default */ Node *where_clause; /* partial index predicate */ /* Fields used for FOREIGN KEY constraints: */ RangeVar *pktable; /* Primary key table */ List *fk_attrs; /* Attributes of foreign key */ List *pk_attrs; /* Corresponding attrs in PK table */ char fk_matchtype; /* FULL, PARTIAL, SIMPLE */ char fk_upd_action; /* ON UPDATE action */ char fk_del_action; /* ON DELETE action */ List *old_conpfeqop; /* pg_constraint.conpfeqop of my former self */ Oid old_pktable_oid; /* pg_constraint.confrelid of my former * self */ /* Fields used for constraints that allow a NOT VALID specification */ bool skip_validation; /* skip validation of existing rows? */ bool initially_valid; /* mark the new constraint as valid? */ } Constraint; /* ---------------------- * Create/Drop Table Space Statements * ---------------------- */ typedef struct CreateTableSpaceStmt { NodeTag type; char *tablespacename; RoleSpec *owner; char *location; List *options; } CreateTableSpaceStmt; typedef struct DropTableSpaceStmt { NodeTag type; char *tablespacename; bool missing_ok; /* skip error if missing? */ } DropTableSpaceStmt; typedef struct AlterTableSpaceOptionsStmt { NodeTag type; char *tablespacename; List *options; bool isReset; } AlterTableSpaceOptionsStmt; typedef struct AlterTableMoveAllStmt { NodeTag type; char *orig_tablespacename; ObjectType objtype; /* Object type to move */ List *roles; /* List of roles to move objects of */ char *new_tablespacename; bool nowait; } AlterTableMoveAllStmt; /* ---------------------- * Create/Alter Extension Statements * ---------------------- */ typedef struct CreateExtensionStmt { NodeTag type; char *extname; bool if_not_exists; /* just do nothing if it already exists? */ List *options; /* List of DefElem nodes */ } CreateExtensionStmt; /* Only used for ALTER EXTENSION UPDATE; later might need an action field */ typedef struct AlterExtensionStmt { NodeTag type; char *extname; List *options; /* List of DefElem nodes */ } AlterExtensionStmt; typedef struct AlterExtensionContentsStmt { NodeTag type; char *extname; /* Extension's name */ int action; /* +1 = add object, -1 = drop object */ ObjectType objtype; /* Object's type */ Node *object; /* Qualified name of the object */ } AlterExtensionContentsStmt; /* ---------------------- * Create/Alter FOREIGN DATA WRAPPER Statements * ---------------------- */ typedef struct CreateFdwStmt { NodeTag type; char *fdwname; /* foreign-data wrapper name */ List *func_options; /* HANDLER/VALIDATOR options */ List *options; /* generic options to FDW */ } CreateFdwStmt; typedef struct AlterFdwStmt { NodeTag type; char *fdwname; /* foreign-data wrapper name */ List *func_options; /* HANDLER/VALIDATOR options */ List *options; /* generic options to FDW */ } AlterFdwStmt; /* ---------------------- * Create/Alter FOREIGN SERVER Statements * ---------------------- */ typedef struct CreateForeignServerStmt { NodeTag type; char *servername; /* server name */ char *servertype; /* optional server type */ char *version; /* optional server version */ char *fdwname; /* FDW name */ bool if_not_exists; /* just do nothing if it already exists? */ List *options; /* generic options to server */ } CreateForeignServerStmt; typedef struct AlterForeignServerStmt { NodeTag type; char *servername; /* server name */ char *version; /* optional server version */ List *options; /* generic options to server */ bool has_version; /* version specified */ } AlterForeignServerStmt; /* ---------------------- * Create FOREIGN TABLE Statement * ---------------------- */ typedef struct CreateForeignTableStmt { CreateStmt base; char *servername; List *options; } CreateForeignTableStmt; /* ---------------------- * Create/Drop USER MAPPING Statements * ---------------------- */ typedef struct CreateUserMappingStmt { NodeTag type; RoleSpec *user; /* user role */ char *servername; /* server name */ bool if_not_exists; /* just do nothing if it already exists? */ List *options; /* generic options to server */ } CreateUserMappingStmt; typedef struct AlterUserMappingStmt { NodeTag type; RoleSpec *user; /* user role */ char *servername; /* server name */ List *options; /* generic options to server */ } AlterUserMappingStmt; typedef struct DropUserMappingStmt { NodeTag type; RoleSpec *user; /* user role */ char *servername; /* server name */ bool missing_ok; /* ignore missing mappings */ } DropUserMappingStmt; /* ---------------------- * Import Foreign Schema Statement * ---------------------- */ typedef enum ImportForeignSchemaType { FDW_IMPORT_SCHEMA_ALL, /* all relations wanted */ FDW_IMPORT_SCHEMA_LIMIT_TO, /* include only listed tables in import */ FDW_IMPORT_SCHEMA_EXCEPT /* exclude listed tables from import */ } ImportForeignSchemaType; typedef struct ImportForeignSchemaStmt { NodeTag type; char *server_name; /* FDW server name */ char *remote_schema; /* remote schema name to query */ char *local_schema; /* local schema to create objects in */ ImportForeignSchemaType list_type; /* type of table list */ List *table_list; /* List of RangeVar */ List *options; /* list of options to pass to FDW */ } ImportForeignSchemaStmt; /*---------------------- * Create POLICY Statement *---------------------- */ typedef struct CreatePolicyStmt { NodeTag type; char *policy_name; /* Policy's name */ RangeVar *table; /* the table name the policy applies to */ char *cmd_name; /* the command name the policy applies to */ bool permissive; /* restrictive or permissive policy */ List *roles; /* the roles associated with the policy */ Node *qual; /* the policy's condition */ Node *with_check; /* the policy's WITH CHECK condition. */ } CreatePolicyStmt; /*---------------------- * Alter POLICY Statement *---------------------- */ typedef struct AlterPolicyStmt { NodeTag type; char *policy_name; /* Policy's name */ RangeVar *table; /* the table name the policy applies to */ List *roles; /* the roles associated with the policy */ Node *qual; /* the policy's condition */ Node *with_check; /* the policy's WITH CHECK condition. */ } AlterPolicyStmt; /*---------------------- * Create ACCESS METHOD Statement *---------------------- */ typedef struct CreateAmStmt { NodeTag type; char *amname; /* access method name */ List *handler_name; /* handler function name */ char amtype; /* type of access method */ } CreateAmStmt; /* ---------------------- * Create TRIGGER Statement * ---------------------- */ typedef struct CreateTrigStmt { NodeTag type; char *trigname; /* TRIGGER's name */ RangeVar *relation; /* relation trigger is on */ List *funcname; /* qual. name of function to call */ List *args; /* list of (T_String) Values or NIL */ bool row; /* ROW/STATEMENT */ /* timing uses the TRIGGER_TYPE bits defined in catalog/pg_trigger.h */ int16 timing; /* BEFORE, AFTER, or INSTEAD */ /* events uses the TRIGGER_TYPE bits defined in catalog/pg_trigger.h */ int16 events; /* "OR" of INSERT/UPDATE/DELETE/TRUNCATE */ List *columns; /* column names, or NIL for all columns */ Node *whenClause; /* qual expression, or NULL if none */ bool isconstraint; /* This is a constraint trigger */ /* explicitly named transition data */ List *transitionRels; /* TriggerTransition nodes, or NIL if none */ /* The remaining fields are only used for constraint triggers */ bool deferrable; /* [NOT] DEFERRABLE */ bool initdeferred; /* INITIALLY {DEFERRED|IMMEDIATE} */ RangeVar *constrrel; /* opposite relation, if RI trigger */ } CreateTrigStmt; /* ---------------------- * Create EVENT TRIGGER Statement * ---------------------- */ typedef struct CreateEventTrigStmt { NodeTag type; char *trigname; /* TRIGGER's name */ char *eventname; /* event's identifier */ List *whenclause; /* list of DefElems indicating filtering */ List *funcname; /* qual. name of function to call */ } CreateEventTrigStmt; /* ---------------------- * Alter EVENT TRIGGER Statement * ---------------------- */ typedef struct AlterEventTrigStmt { NodeTag type; char *trigname; /* TRIGGER's name */ char tgenabled; /* trigger's firing configuration WRT * session_replication_role */ } AlterEventTrigStmt; /* ---------------------- * Create LANGUAGE Statements * ---------------------- */ typedef struct CreatePLangStmt { NodeTag type; bool replace; /* T => replace if already exists */ char *plname; /* PL name */ List *plhandler; /* PL call handler function (qual. name) */ List *plinline; /* optional inline function (qual. name) */ List *plvalidator; /* optional validator function (qual. name) */ bool pltrusted; /* PL is trusted */ } CreatePLangStmt; /* ---------------------- * Create/Alter/Drop Role Statements * * Note: these node types are also used for the backwards-compatible * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases * there's really no need to distinguish what the original spelling was, * but for CREATE we mark the type because the defaults vary. * ---------------------- */ typedef enum RoleStmtType { ROLESTMT_ROLE, ROLESTMT_USER, ROLESTMT_GROUP } RoleStmtType; typedef struct CreateRoleStmt { NodeTag type; RoleStmtType stmt_type; /* ROLE/USER/GROUP */ char *role; /* role name */ List *options; /* List of DefElem nodes */ } CreateRoleStmt; typedef struct AlterRoleStmt { NodeTag type; RoleSpec *role; /* role */ List *options; /* List of DefElem nodes */ int action; /* +1 = add members, -1 = drop members */ } AlterRoleStmt; typedef struct AlterRoleSetStmt { NodeTag type; RoleSpec *role; /* role */ char *database; /* database name, or NULL */ VariableSetStmt *setstmt; /* SET or RESET subcommand */ } AlterRoleSetStmt; typedef struct DropRoleStmt { NodeTag type; List *roles; /* List of roles to remove */ bool missing_ok; /* skip error if a role is missing? */ } DropRoleStmt; /* ---------------------- * {Create|Alter} SEQUENCE Statement * ---------------------- */ typedef struct CreateSeqStmt { NodeTag type; RangeVar *sequence; /* the sequence to create */ List *options; Oid ownerId; /* ID of owner, or InvalidOid for default */ bool for_identity; bool if_not_exists; /* just do nothing if it already exists? */ } CreateSeqStmt; typedef struct AlterSeqStmt { NodeTag type; RangeVar *sequence; /* the sequence to alter */ List *options; bool for_identity; bool missing_ok; /* skip error if a role is missing? */ } AlterSeqStmt; /* ---------------------- * Create {Aggregate|Operator|Type} Statement * ---------------------- */ typedef struct DefineStmt { NodeTag type; ObjectType kind; /* aggregate, operator, type */ bool oldstyle; /* hack to signal old CREATE AGG syntax */ List *defnames; /* qualified name (list of Value strings) */ List *args; /* a list of TypeName (if needed) */ List *definition; /* a list of DefElem */ bool if_not_exists; /* just do nothing if it already exists? */ bool replace; /* replace if already exists? */ } DefineStmt; /* ---------------------- * Create Domain Statement * ---------------------- */ typedef struct CreateDomainStmt { NodeTag type; List *domainname; /* qualified name (list of Value strings) */ TypeName *typeName; /* the base type */ CollateClause *collClause; /* untransformed COLLATE spec, if any */ List *constraints; /* constraints (list of Constraint nodes) */ } CreateDomainStmt; /* ---------------------- * Create Operator Class Statement * ---------------------- */ typedef struct CreateOpClassStmt { NodeTag type; List *opclassname; /* qualified name (list of Value strings) */ List *opfamilyname; /* qualified name (ditto); NIL if omitted */ char *amname; /* name of index AM opclass is for */ TypeName *datatype; /* datatype of indexed column */ List *items; /* List of CreateOpClassItem nodes */ bool isDefault; /* Should be marked as default for type? */ } CreateOpClassStmt; #define OPCLASS_ITEM_OPERATOR 1 #define OPCLASS_ITEM_FUNCTION 2 #define OPCLASS_ITEM_STORAGETYPE 3 typedef struct CreateOpClassItem { NodeTag type; int itemtype; /* see codes above */ ObjectWithArgs *name; /* operator or function name and args */ int number; /* strategy num or support proc num */ List *order_family; /* only used for ordering operators */ List *class_args; /* amproclefttype/amprocrighttype or * amoplefttype/amoprighttype */ /* fields used for a storagetype item: */ TypeName *storedtype; /* datatype stored in index */ } CreateOpClassItem; /* ---------------------- * Create Operator Family Statement * ---------------------- */ typedef struct CreateOpFamilyStmt { NodeTag type; List *opfamilyname; /* qualified name (list of Value strings) */ char *amname; /* name of index AM opfamily is for */ } CreateOpFamilyStmt; /* ---------------------- * Alter Operator Family Statement * ---------------------- */ typedef struct AlterOpFamilyStmt { NodeTag type; List *opfamilyname; /* qualified name (list of Value strings) */ char *amname; /* name of index AM opfamily is for */ bool isDrop; /* ADD or DROP the items? */ List *items; /* List of CreateOpClassItem nodes */ } AlterOpFamilyStmt; /* ---------------------- * Drop Table|Sequence|View|Index|Type|Domain|Conversion|Schema Statement * ---------------------- */ typedef struct DropStmt { NodeTag type; List *objects; /* list of names */ ObjectType removeType; /* object type */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */ bool missing_ok; /* skip error if object is missing? */ bool concurrent; /* drop index concurrently? */ } DropStmt; /* ---------------------- * Truncate Table Statement * ---------------------- */ typedef struct TruncateStmt { NodeTag type; List *relations; /* relations (RangeVars) to be truncated */ bool restart_seqs; /* restart owned sequences? */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */ } TruncateStmt; /* ---------------------- * Comment On Statement * ---------------------- */ typedef struct CommentStmt { NodeTag type; ObjectType objtype; /* Object's type */ Node *object; /* Qualified name of the object */ char *comment; /* Comment to insert, or NULL to remove */ } CommentStmt; /* ---------------------- * SECURITY LABEL Statement * ---------------------- */ typedef struct SecLabelStmt { NodeTag type; ObjectType objtype; /* Object's type */ Node *object; /* Qualified name of the object */ char *provider; /* Label provider (or NULL) */ char *label; /* New security label to be assigned */ } SecLabelStmt; /* ---------------------- * Declare Cursor Statement * * The "query" field is initially a raw parse tree, and is converted to a * Query node during parse analysis. Note that rewriting and planning * of the query are always postponed until execution. * ---------------------- */ #define CURSOR_OPT_BINARY 0x0001 /* BINARY */ #define CURSOR_OPT_SCROLL 0x0002 /* SCROLL explicitly given */ #define CURSOR_OPT_NO_SCROLL 0x0004 /* NO SCROLL explicitly given */ #define CURSOR_OPT_INSENSITIVE 0x0008 /* INSENSITIVE */ #define CURSOR_OPT_HOLD 0x0010 /* WITH HOLD */ /* these planner-control flags do not correspond to any SQL grammar: */ #define CURSOR_OPT_FAST_PLAN 0x0020 /* prefer fast-start plan */ #define CURSOR_OPT_GENERIC_PLAN 0x0040 /* force use of generic plan */ #define CURSOR_OPT_CUSTOM_PLAN 0x0080 /* force use of custom plan */ #define CURSOR_OPT_PARALLEL_OK 0x0100 /* parallel mode OK */ typedef struct DeclareCursorStmt { NodeTag type; char *portalname; /* name of the portal (cursor) */ int options; /* bitmask of options (see above) */ Node *query; /* the query (see comments above) */ } DeclareCursorStmt; /* ---------------------- * Close Portal Statement * ---------------------- */ typedef struct ClosePortalStmt { NodeTag type; char *portalname; /* name of the portal (cursor) */ /* NULL means CLOSE ALL */ } ClosePortalStmt; /* ---------------------- * Fetch Statement (also Move) * ---------------------- */ typedef enum FetchDirection { /* for these, howMany is how many rows to fetch; FETCH_ALL means ALL */ FETCH_FORWARD, FETCH_BACKWARD, /* for these, howMany indicates a position; only one row is fetched */ FETCH_ABSOLUTE, FETCH_RELATIVE } FetchDirection; #define FETCH_ALL LONG_MAX typedef struct FetchStmt { NodeTag type; FetchDirection direction; /* see above */ long howMany; /* number of rows, or position argument */ char *portalname; /* name of portal (cursor) */ bool ismove; /* true if MOVE */ } FetchStmt; /* ---------------------- * Create Index Statement * * This represents creation of an index and/or an associated constraint. * If isconstraint is true, we should create a pg_constraint entry along * with the index. But if indexOid isn't InvalidOid, we are not creating an * index, just a UNIQUE/PKEY constraint using an existing index. isconstraint * must always be true in this case, and the fields describing the index * properties are empty. * ---------------------- */ typedef struct IndexStmt { NodeTag type; char *idxname; /* name of new index, or NULL for default */ RangeVar *relation; /* relation to build index on */ char *accessMethod; /* name of access method (eg. btree) */ char *tableSpace; /* tablespace, or NULL for default */ List *indexParams; /* columns to index: a list of IndexElem */ List *indexIncludingParams; /* additional columns to index: a list * of IndexElem */ List *options; /* WITH clause options: a list of DefElem */ Node *whereClause; /* qualification (partial-index predicate) */ List *excludeOpNames; /* exclusion operator names, or NIL if none */ char *idxcomment; /* comment to apply to index, or NULL */ Oid indexOid; /* OID of an existing index, if any */ Oid oldNode; /* relfilenode of existing storage, if any */ SubTransactionId oldCreateSubid; /* rd_createSubid of oldNode */ SubTransactionId oldFirstRelfilenodeSubid; /* rd_firstRelfilenodeSubid of * oldNode */ bool unique; /* is index unique? */ bool primary; /* is index a primary key? */ bool isconstraint; /* is it for a pkey/unique constraint? */ bool deferrable; /* is the constraint DEFERRABLE? */ bool initdeferred; /* is the constraint INITIALLY DEFERRED? */ bool transformed; /* true when transformIndexStmt is finished */ bool concurrent; /* should this be a concurrent index build? */ bool if_not_exists; /* just do nothing if index already exists? */ bool reset_default_tblspc; /* reset default_tablespace prior to * executing */ } IndexStmt; /* ---------------------- * Create Statistics Statement * ---------------------- */ typedef struct CreateStatsStmt { NodeTag type; List *defnames; /* qualified name (list of Value strings) */ List *stat_types; /* stat types (list of Value strings) */ List *exprs; /* expressions to build statistics on */ List *relations; /* rels to build stats on (list of RangeVar) */ char *stxcomment; /* comment to apply to stats, or NULL */ bool if_not_exists; /* do nothing if stats name already exists */ } CreateStatsStmt; /* ---------------------- * Alter Statistics Statement * ---------------------- */ typedef struct AlterStatsStmt { NodeTag type; List *defnames; /* qualified name (list of Value strings) */ int stxstattarget; /* statistics target */ bool missing_ok; /* skip error if statistics object is missing */ } AlterStatsStmt; /* ---------------------- * Create Function Statement * ---------------------- */ typedef struct CreateFunctionStmt { NodeTag type; bool is_procedure; /* it's really CREATE PROCEDURE */ bool replace; /* T => replace if already exists */ List *funcname; /* qualified name of function to create */ List *parameters; /* a list of FunctionParameter */ TypeName *returnType; /* the return type */ List *options; /* a list of DefElem */ } CreateFunctionStmt; typedef enum FunctionParameterMode { /* the assigned enum values appear in pg_proc, don't change 'em! */ FUNC_PARAM_IN = 'i', /* input only */ FUNC_PARAM_OUT = 'o', /* output only */ FUNC_PARAM_INOUT = 'b', /* both */ FUNC_PARAM_VARIADIC = 'v', /* variadic (always input) */ FUNC_PARAM_TABLE = 't' /* table function output column */ } FunctionParameterMode; typedef struct FunctionParameter { NodeTag type; char *name; /* parameter name, or NULL if not given */ TypeName *argType; /* TypeName for parameter type */ FunctionParameterMode mode; /* IN/OUT/etc */ Node *defexpr; /* raw default expr, or NULL if not given */ } FunctionParameter; typedef struct AlterFunctionStmt { NodeTag type; ObjectType objtype; ObjectWithArgs *func; /* name and args of function */ List *actions; /* list of DefElem */ } AlterFunctionStmt; /* ---------------------- * DO Statement * * DoStmt is the raw parser output, InlineCodeBlock is the execution-time API * ---------------------- */ typedef struct DoStmt { NodeTag type; List *args; /* List of DefElem nodes */ } DoStmt; typedef struct InlineCodeBlock { NodeTag type; char *source_text; /* source text of anonymous code block */ Oid langOid; /* OID of selected language */ bool langIsTrusted; /* trusted property of the language */ bool atomic; /* atomic execution context */ } InlineCodeBlock; /* ---------------------- * CALL statement * ---------------------- */ typedef struct CallStmt { NodeTag type; FuncCall *funccall; /* from the parser */ FuncExpr *funcexpr; /* transformed */ } CallStmt; typedef struct CallContext { NodeTag type; bool atomic; } CallContext; /* ---------------------- * Alter Object Rename Statement * ---------------------- */ typedef struct RenameStmt { NodeTag type; ObjectType renameType; /* OBJECT_TABLE, OBJECT_COLUMN, etc */ ObjectType relationType; /* if column name, associated relation type */ RangeVar *relation; /* in case it's a table */ Node *object; /* in case it's some other object */ char *subname; /* name of contained object (column, rule, * trigger, etc) */ char *newname; /* the new name */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */ bool missing_ok; /* skip error if missing? */ } RenameStmt; /* ---------------------- * ALTER object DEPENDS ON EXTENSION extname * ---------------------- */ typedef struct AlterObjectDependsStmt { NodeTag type; ObjectType objectType; /* OBJECT_FUNCTION, OBJECT_TRIGGER, etc */ RangeVar *relation; /* in case a table is involved */ Node *object; /* name of the object */ Value *extname; /* extension name */ bool remove; /* set true to remove dep rather than add */ } AlterObjectDependsStmt; /* ---------------------- * ALTER object SET SCHEMA Statement * ---------------------- */ typedef struct AlterObjectSchemaStmt { NodeTag type; ObjectType objectType; /* OBJECT_TABLE, OBJECT_TYPE, etc */ RangeVar *relation; /* in case it's a table */ Node *object; /* in case it's some other object */ char *newschema; /* the new schema */ bool missing_ok; /* skip error if missing? */ } AlterObjectSchemaStmt; /* ---------------------- * Alter Object Owner Statement * ---------------------- */ typedef struct AlterOwnerStmt { NodeTag type; ObjectType objectType; /* OBJECT_TABLE, OBJECT_TYPE, etc */ RangeVar *relation; /* in case it's a table */ Node *object; /* in case it's some other object */ RoleSpec *newowner; /* the new owner */ } AlterOwnerStmt; /* ---------------------- * Alter Operator Set ( this-n-that ) * ---------------------- */ typedef struct AlterOperatorStmt { NodeTag type; ObjectWithArgs *opername; /* operator name and argument types */ List *options; /* List of DefElem nodes */ } AlterOperatorStmt; /* ------------------------ * Alter Type Set ( this-n-that ) * ------------------------ */ typedef struct AlterTypeStmt { NodeTag type; List *typeName; /* type name (possibly qualified) */ List *options; /* List of DefElem nodes */ } AlterTypeStmt; /* ---------------------- * Create Rule Statement * ---------------------- */ typedef struct RuleStmt { NodeTag type; RangeVar *relation; /* relation the rule is for */ char *rulename; /* name of the rule */ Node *whereClause; /* qualifications */ CmdType event; /* SELECT, INSERT, etc */ bool instead; /* is a 'do instead'? */ List *actions; /* the action statements */ bool replace; /* OR REPLACE */ } RuleStmt; /* ---------------------- * Notify Statement * ---------------------- */ typedef struct NotifyStmt { NodeTag type; char *conditionname; /* condition name to notify */ char *payload; /* the payload string, or NULL if none */ } NotifyStmt; /* ---------------------- * Listen Statement * ---------------------- */ typedef struct ListenStmt { NodeTag type; char *conditionname; /* condition name to listen on */ } ListenStmt; /* ---------------------- * Unlisten Statement * ---------------------- */ typedef struct UnlistenStmt { NodeTag type; char *conditionname; /* name to unlisten on, or NULL for all */ } UnlistenStmt; /* ---------------------- * {Begin|Commit|Rollback} Transaction Statement * ---------------------- */ typedef enum TransactionStmtKind { TRANS_STMT_BEGIN, TRANS_STMT_START, /* semantically identical to BEGIN */ TRANS_STMT_COMMIT, TRANS_STMT_ROLLBACK, TRANS_STMT_SAVEPOINT, TRANS_STMT_RELEASE, TRANS_STMT_ROLLBACK_TO, TRANS_STMT_PREPARE, TRANS_STMT_COMMIT_PREPARED, TRANS_STMT_ROLLBACK_PREPARED } TransactionStmtKind; typedef struct TransactionStmt { NodeTag type; TransactionStmtKind kind; /* see above */ List *options; /* for BEGIN/START commands */ char *savepoint_name; /* for savepoint commands */ char *gid; /* for two-phase-commit related commands */ bool chain; /* AND CHAIN option */ } TransactionStmt; /* ---------------------- * Create Type Statement, composite types * ---------------------- */ typedef struct CompositeTypeStmt { NodeTag type; RangeVar *typevar; /* the composite type to be created */ List *coldeflist; /* list of ColumnDef nodes */ } CompositeTypeStmt; /* ---------------------- * Create Type Statement, enum types * ---------------------- */ typedef struct CreateEnumStmt { NodeTag type; List *typeName; /* qualified name (list of Value strings) */ List *vals; /* enum values (list of Value strings) */ } CreateEnumStmt; /* ---------------------- * Create Type Statement, range types * ---------------------- */ typedef struct CreateRangeStmt { NodeTag type; List *typeName; /* qualified name (list of Value strings) */ List *params; /* range parameters (list of DefElem) */ } CreateRangeStmt; /* ---------------------- * Alter Type Statement, enum types * ---------------------- */ typedef struct AlterEnumStmt { NodeTag type; List *typeName; /* qualified name (list of Value strings) */ char *oldVal; /* old enum value's name, if renaming */ char *newVal; /* new enum value's name */ char *newValNeighbor; /* neighboring enum value, if specified */ bool newValIsAfter; /* place new enum value after neighbor? */ bool skipIfNewValExists; /* no error if new already exists? */ } AlterEnumStmt; /* ---------------------- * Create View Statement * ---------------------- */ typedef enum ViewCheckOption { NO_CHECK_OPTION, LOCAL_CHECK_OPTION, CASCADED_CHECK_OPTION } ViewCheckOption; typedef struct ViewStmt { NodeTag type; RangeVar *view; /* the view to be created */ List *aliases; /* target column names */ Node *query; /* the SELECT query (as a raw parse tree) */ bool replace; /* replace an existing view? */ List *options; /* options from WITH clause */ ViewCheckOption withCheckOption; /* WITH CHECK OPTION */ } ViewStmt; /* ---------------------- * Load Statement * ---------------------- */ typedef struct LoadStmt { NodeTag type; char *filename; /* file to load */ } LoadStmt; /* ---------------------- * Createdb Statement * ---------------------- */ typedef struct CreatedbStmt { NodeTag type; char *dbname; /* name of database to create */ List *options; /* List of DefElem nodes */ } CreatedbStmt; /* ---------------------- * Alter Database * ---------------------- */ typedef struct AlterDatabaseStmt { NodeTag type; char *dbname; /* name of database to alter */ List *options; /* List of DefElem nodes */ } AlterDatabaseStmt; typedef struct AlterDatabaseSetStmt { NodeTag type; char *dbname; /* database name */ VariableSetStmt *setstmt; /* SET or RESET subcommand */ } AlterDatabaseSetStmt; /* ---------------------- * Dropdb Statement * ---------------------- */ typedef struct DropdbStmt { NodeTag type; char *dbname; /* database to drop */ bool missing_ok; /* skip error if db is missing? */ List *options; /* currently only FORCE is supported */ } DropdbStmt; /* ---------------------- * Alter System Statement * ---------------------- */ typedef struct AlterSystemStmt { NodeTag type; VariableSetStmt *setstmt; /* SET subcommand */ } AlterSystemStmt; /* ---------------------- * Cluster Statement (support pbrown's cluster index implementation) * ---------------------- */ typedef enum ClusterOption { CLUOPT_RECHECK = 1 << 0, /* recheck relation state */ CLUOPT_VERBOSE = 1 << 1 /* print progress info */ } ClusterOption; typedef struct ClusterStmt { NodeTag type; RangeVar *relation; /* relation being indexed, or NULL if all */ char *indexname; /* original index defined */ int options; /* OR of ClusterOption flags */ } ClusterStmt; /* ---------------------- * Vacuum and Analyze Statements * * Even though these are nominally two statements, it's convenient to use * just one node type for both. * ---------------------- */ typedef struct VacuumStmt { NodeTag type; List *options; /* list of DefElem nodes */ List *rels; /* list of VacuumRelation, or NIL for all */ bool is_vacuumcmd; /* true for VACUUM, false for ANALYZE */ } VacuumStmt; /* * Info about a single target table of VACUUM/ANALYZE. * * If the OID field is set, it always identifies the table to process. * Then the relation field can be NULL; if it isn't, it's used only to report * failure to open/lock the relation. */ typedef struct VacuumRelation { NodeTag type; RangeVar *relation; /* table name to process, or NULL */ Oid oid; /* table's OID; InvalidOid if not looked up */ List *va_cols; /* list of column names, or NIL for all */ } VacuumRelation; /* ---------------------- * Explain Statement * * The "query" field is initially a raw parse tree, and is converted to a * Query node during parse analysis. Note that rewriting and planning * of the query are always postponed until execution. * ---------------------- */ typedef struct ExplainStmt { NodeTag type; Node *query; /* the query (see comments above) */ List *options; /* list of DefElem nodes */ } ExplainStmt; /* ---------------------- * CREATE TABLE AS Statement (a/k/a SELECT INTO) * * A query written as CREATE TABLE AS will produce this node type natively. * A query written as SELECT ... INTO will be transformed to this form during * parse analysis. * A query written as CREATE MATERIALIZED view will produce this node type, * during parse analysis, since it needs all the same data. * * The "query" field is handled similarly to EXPLAIN, though note that it * can be a SELECT or an EXECUTE, but not other DML statements. * ---------------------- */ typedef struct CreateTableAsStmt { NodeTag type; Node *query; /* the query (see comments above) */ IntoClause *into; /* destination table */ ObjectType relkind; /* OBJECT_TABLE or OBJECT_MATVIEW */ bool is_select_into; /* it was written as SELECT INTO */ bool if_not_exists; /* just do nothing if it already exists? */ } CreateTableAsStmt; /* ---------------------- * REFRESH MATERIALIZED VIEW Statement * ---------------------- */ typedef struct RefreshMatViewStmt { NodeTag type; bool concurrent; /* allow concurrent access? */ bool skipData; /* true for WITH NO DATA */ RangeVar *relation; /* relation to insert into */ } RefreshMatViewStmt; /* ---------------------- * Checkpoint Statement * ---------------------- */ typedef struct CheckPointStmt { NodeTag type; } CheckPointStmt; /* ---------------------- * Discard Statement * ---------------------- */ typedef enum DiscardMode { DISCARD_ALL, DISCARD_PLANS, DISCARD_SEQUENCES, DISCARD_TEMP } DiscardMode; typedef struct DiscardStmt { NodeTag type; DiscardMode target; } DiscardStmt; /* ---------------------- * LOCK Statement * ---------------------- */ typedef struct LockStmt { NodeTag type; List *relations; /* relations to lock */ int mode; /* lock mode */ bool nowait; /* no wait mode */ } LockStmt; /* ---------------------- * SET CONSTRAINTS Statement * ---------------------- */ typedef struct ConstraintsSetStmt { NodeTag type; List *constraints; /* List of names as RangeVars */ bool deferred; } ConstraintsSetStmt; /* ---------------------- * REINDEX Statement * ---------------------- */ /* Reindex options */ #define REINDEXOPT_VERBOSE (1 << 0) /* print progress info */ #define REINDEXOPT_REPORT_PROGRESS (1 << 1) /* report pgstat progress */ typedef enum ReindexObjectType { REINDEX_OBJECT_INDEX, /* index */ REINDEX_OBJECT_TABLE, /* table or materialized view */ REINDEX_OBJECT_SCHEMA, /* schema */ REINDEX_OBJECT_SYSTEM, /* system catalogs */ REINDEX_OBJECT_DATABASE /* database */ } ReindexObjectType; typedef struct ReindexStmt { NodeTag type; ReindexObjectType kind; /* REINDEX_OBJECT_INDEX, REINDEX_OBJECT_TABLE, * etc. */ RangeVar *relation; /* Table or index to reindex */ const char *name; /* name of database to reindex */ int options; /* Reindex options flags */ bool concurrent; /* reindex concurrently? */ } ReindexStmt; /* ---------------------- * CREATE CONVERSION Statement * ---------------------- */ typedef struct CreateConversionStmt { NodeTag type; List *conversion_name; /* Name of the conversion */ char *for_encoding_name; /* source encoding name */ char *to_encoding_name; /* destination encoding name */ List *func_name; /* qualified conversion function name */ bool def; /* is this a default conversion? */ } CreateConversionStmt; /* ---------------------- * CREATE CAST Statement * ---------------------- */ typedef struct CreateCastStmt { NodeTag type; TypeName *sourcetype; TypeName *targettype; ObjectWithArgs *func; CoercionContext context; bool inout; } CreateCastStmt; /* ---------------------- * CREATE TRANSFORM Statement * ---------------------- */ typedef struct CreateTransformStmt { NodeTag type; bool replace; TypeName *type_name; char *lang; ObjectWithArgs *fromsql; ObjectWithArgs *tosql; } CreateTransformStmt; /* ---------------------- * PREPARE Statement * ---------------------- */ typedef struct PrepareStmt { NodeTag type; char *name; /* Name of plan, arbitrary */ List *argtypes; /* Types of parameters (List of TypeName) */ Node *query; /* The query itself (as a raw parsetree) */ } PrepareStmt; /* ---------------------- * EXECUTE Statement * ---------------------- */ typedef struct ExecuteStmt { NodeTag type; char *name; /* The name of the plan to execute */ List *params; /* Values to assign to parameters */ } ExecuteStmt; /* ---------------------- * DEALLOCATE Statement * ---------------------- */ typedef struct DeallocateStmt { NodeTag type; char *name; /* The name of the plan to remove */ /* NULL means DEALLOCATE ALL */ } DeallocateStmt; /* * DROP OWNED statement */ typedef struct DropOwnedStmt { NodeTag type; List *roles; DropBehavior behavior; } DropOwnedStmt; /* * REASSIGN OWNED statement */ typedef struct ReassignOwnedStmt { NodeTag type; List *roles; RoleSpec *newrole; } ReassignOwnedStmt; /* * TS Dictionary stmts: DefineStmt, RenameStmt and DropStmt are default */ typedef struct AlterTSDictionaryStmt { NodeTag type; List *dictname; /* qualified name (list of Value strings) */ List *options; /* List of DefElem nodes */ } AlterTSDictionaryStmt; /* * TS Configuration stmts: DefineStmt, RenameStmt and DropStmt are default */ typedef enum AlterTSConfigType { ALTER_TSCONFIG_ADD_MAPPING, ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN, ALTER_TSCONFIG_REPLACE_DICT, ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN, ALTER_TSCONFIG_DROP_MAPPING } AlterTSConfigType; typedef struct AlterTSConfigurationStmt { NodeTag type; AlterTSConfigType kind; /* ALTER_TSCONFIG_ADD_MAPPING, etc */ List *cfgname; /* qualified name (list of Value strings) */ /* * dicts will be non-NIL if ADD/ALTER MAPPING was specified. If dicts is * NIL, but tokentype isn't, DROP MAPPING was specified. */ List *tokentype; /* list of Value strings */ List *dicts; /* list of list of Value strings */ bool override; /* if true - remove old variant */ bool replace; /* if true - replace dictionary by another */ bool missing_ok; /* for DROP - skip error if missing? */ } AlterTSConfigurationStmt; typedef struct CreatePublicationStmt { NodeTag type; char *pubname; /* Name of the publication */ List *options; /* List of DefElem nodes */ List *tables; /* Optional list of tables to add */ bool for_all_tables; /* Special publication for all tables in db */ } CreatePublicationStmt; typedef struct AlterPublicationStmt { NodeTag type; char *pubname; /* Name of the publication */ /* parameters used for ALTER PUBLICATION ... WITH */ List *options; /* List of DefElem nodes */ /* parameters used for ALTER PUBLICATION ... ADD/DROP TABLE */ List *tables; /* List of tables to add/drop */ bool for_all_tables; /* Special publication for all tables in db */ DefElemAction tableAction; /* What action to perform with the tables */ } AlterPublicationStmt; typedef struct CreateSubscriptionStmt { NodeTag type; char *subname; /* Name of the subscription */ char *conninfo; /* Connection string to publisher */ List *publication; /* One or more publication to subscribe to */ List *options; /* List of DefElem nodes */ } CreateSubscriptionStmt; typedef enum AlterSubscriptionType { ALTER_SUBSCRIPTION_OPTIONS, ALTER_SUBSCRIPTION_CONNECTION, ALTER_SUBSCRIPTION_PUBLICATION, ALTER_SUBSCRIPTION_REFRESH, ALTER_SUBSCRIPTION_ENABLED } AlterSubscriptionType; typedef struct AlterSubscriptionStmt { NodeTag type; AlterSubscriptionType kind; /* ALTER_SUBSCRIPTION_OPTIONS, etc */ char *subname; /* Name of the subscription */ char *conninfo; /* Connection string to publisher */ List *publication; /* One or more publication to subscribe to */ List *options; /* List of DefElem nodes */ } AlterSubscriptionStmt; typedef struct DropSubscriptionStmt { NodeTag type; char *subname; /* Name of the subscription */ bool missing_ok; /* Skip error if missing? */ DropBehavior behavior; /* RESTRICT or CASCADE behavior */ } DropSubscriptionStmt; #endif /* PARSENODES_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/pathnodes.h000066400000000000000000003256301413137616400236220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pathnodes.h * Definitions for planner's internal data structures, especially Paths. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/pathnodes.h * *------------------------------------------------------------------------- */ #ifndef PATHNODES_H #define PATHNODES_H #include "access/sdir.h" #include "lib/stringinfo.h" #include "nodes/params.h" #include "nodes/parsenodes.h" #include "storage/block.h" /* * Relids * Set of relation identifiers (indexes into the rangetable). */ typedef Bitmapset *Relids; /* * When looking for a "cheapest path", this enum specifies whether we want * cheapest startup cost or cheapest total cost. */ typedef enum CostSelector { STARTUP_COST, TOTAL_COST } CostSelector; /* * The cost estimate produced by cost_qual_eval() includes both a one-time * (startup) cost, and a per-tuple cost. */ typedef struct QualCost { Cost startup; /* one-time cost */ Cost per_tuple; /* per-evaluation cost */ } QualCost; /* * Costing aggregate function execution requires these statistics about * the aggregates to be executed by a given Agg node. Note that the costs * include the execution costs of the aggregates' argument expressions as * well as the aggregate functions themselves. Also, the fields must be * defined so that initializing the struct to zeroes with memset is correct. */ typedef struct AggClauseCosts { int numAggs; /* total number of aggregate functions */ int numOrderedAggs; /* number w/ DISTINCT/ORDER BY/WITHIN GROUP */ bool hasNonPartial; /* does any agg not support partial mode? */ bool hasNonSerial; /* is any partial agg non-serializable? */ QualCost transCost; /* total per-input-row execution costs */ QualCost finalCost; /* total per-aggregated-row costs */ Size transitionSpace; /* space for pass-by-ref transition data */ } AggClauseCosts; /* * This enum identifies the different types of "upper" (post-scan/join) * relations that we might deal with during planning. */ typedef enum UpperRelationKind { UPPERREL_SETOP, /* result of UNION/INTERSECT/EXCEPT, if any */ UPPERREL_PARTIAL_GROUP_AGG, /* result of partial grouping/aggregation, if * any */ UPPERREL_GROUP_AGG, /* result of grouping/aggregation, if any */ UPPERREL_WINDOW, /* result of window functions, if any */ UPPERREL_DISTINCT, /* result of "SELECT DISTINCT", if any */ UPPERREL_ORDERED, /* result of ORDER BY, if any */ UPPERREL_FINAL /* result of any remaining top-level actions */ /* NB: UPPERREL_FINAL must be last enum entry; it's used to size arrays */ } UpperRelationKind; /* * This enum identifies which type of relation is being planned through the * inheritance planner. INHKIND_NONE indicates the inheritance planner * was not used. */ typedef enum InheritanceKind { INHKIND_NONE, INHKIND_INHERITED, INHKIND_PARTITIONED } InheritanceKind; /*---------- * PlannerGlobal * Global information for planning/optimization * * PlannerGlobal holds state for an entire planner invocation; this state * is shared across all levels of sub-Queries that exist in the command being * planned. *---------- */ typedef struct PlannerGlobal { NodeTag type; ParamListInfo boundParams; /* Param values provided to planner() */ List *subplans; /* Plans for SubPlan nodes */ List *subroots; /* PlannerInfos for SubPlan nodes */ Bitmapset *rewindPlanIDs; /* indices of subplans that require REWIND */ List *finalrtable; /* "flat" rangetable for executor */ List *finalrowmarks; /* "flat" list of PlanRowMarks */ List *resultRelations; /* "flat" list of integer RT indexes */ List *rootResultRelations; /* "flat" list of integer RT indexes */ List *appendRelations; /* "flat" list of AppendRelInfos */ List *relationOids; /* OIDs of relations the plan depends on */ List *invalItems; /* other dependencies, as PlanInvalItems */ List *paramExecTypes; /* type OIDs for PARAM_EXEC Params */ Index lastPHId; /* highest PlaceHolderVar ID assigned */ Index lastRowMarkId; /* highest PlanRowMark ID assigned */ int lastPlanNodeId; /* highest plan node ID assigned */ bool transientPlan; /* redo plan when TransactionXmin changes? */ bool dependsOnRole; /* is plan specific to current role? */ bool parallelModeOK; /* parallel mode potentially OK? */ bool parallelModeNeeded; /* parallel mode actually required? */ char maxParallelHazard; /* worst PROPARALLEL hazard level */ PartitionDirectory partition_directory; /* partition descriptors */ } PlannerGlobal; /* macro for fetching the Plan associated with a SubPlan node */ #define planner_subplan_get_plan(root, subplan) \ ((Plan *) list_nth((root)->glob->subplans, (subplan)->plan_id - 1)) /*---------- * PlannerInfo * Per-query information for planning/optimization * * This struct is conventionally called "root" in all the planner routines. * It holds links to all of the planner's working state, in addition to the * original Query. Note that at present the planner extensively modifies * the passed-in Query data structure; someday that should stop. * * For reasons explained in optimizer/optimizer.h, we define the typedef * either here or in that header, whichever is read first. *---------- */ #ifndef HAVE_PLANNERINFO_TYPEDEF typedef struct PlannerInfo PlannerInfo; #define HAVE_PLANNERINFO_TYPEDEF 1 #endif struct PlannerInfo { NodeTag type; Query *parse; /* the Query being planned */ PlannerGlobal *glob; /* global info for current planner run */ Index query_level; /* 1 at the outermost Query */ PlannerInfo *parent_root; /* NULL at outermost Query */ /* * plan_params contains the expressions that this query level needs to * make available to a lower query level that is currently being planned. * outer_params contains the paramIds of PARAM_EXEC Params that outer * query levels will make available to this query level. */ List *plan_params; /* list of PlannerParamItems, see below */ Bitmapset *outer_params; /* * simple_rel_array holds pointers to "base rels" and "other rels" (see * comments for RelOptInfo for more info). It is indexed by rangetable * index (so entry 0 is always wasted). Entries can be NULL when an RTE * does not correspond to a base relation, such as a join RTE or an * unreferenced view RTE; or if the RelOptInfo hasn't been made yet. */ struct RelOptInfo **simple_rel_array; /* All 1-rel RelOptInfos */ int simple_rel_array_size; /* allocated size of array */ /* * simple_rte_array is the same length as simple_rel_array and holds * pointers to the associated rangetable entries. Using this is a shade * faster than using rt_fetch(), mostly due to fewer indirections. */ RangeTblEntry **simple_rte_array; /* rangetable as an array */ /* * append_rel_array is the same length as the above arrays, and holds * pointers to the corresponding AppendRelInfo entry indexed by * child_relid, or NULL if the rel is not an appendrel child. The array * itself is not allocated if append_rel_list is empty. */ struct AppendRelInfo **append_rel_array; /* * all_baserels is a Relids set of all base relids (but not "other" * relids) in the query; that is, the Relids identifier of the final join * we need to form. This is computed in make_one_rel, just before we * start making Paths. */ Relids all_baserels; /* * nullable_baserels is a Relids set of base relids that are nullable by * some outer join in the jointree; these are rels that are potentially * nullable below the WHERE clause, SELECT targetlist, etc. This is * computed in deconstruct_jointree. */ Relids nullable_baserels; /* * join_rel_list is a list of all join-relation RelOptInfos we have * considered in this planning run. For small problems we just scan the * list to do lookups, but when there are many join relations we build a * hash table for faster lookups. The hash table is present and valid * when join_rel_hash is not NULL. Note that we still maintain the list * even when using the hash table for lookups; this simplifies life for * GEQO. */ List *join_rel_list; /* list of join-relation RelOptInfos */ struct HTAB *join_rel_hash; /* optional hashtable for join relations */ /* * When doing a dynamic-programming-style join search, join_rel_level[k] * is a list of all join-relation RelOptInfos of level k, and * join_cur_level is the current level. New join-relation RelOptInfos are * automatically added to the join_rel_level[join_cur_level] list. * join_rel_level is NULL if not in use. */ List **join_rel_level; /* lists of join-relation RelOptInfos */ int join_cur_level; /* index of list being extended */ List *init_plans; /* init SubPlans for query */ List *cte_plan_ids; /* per-CTE-item list of subplan IDs */ List *multiexpr_params; /* List of Lists of Params for MULTIEXPR * subquery outputs */ List *eq_classes; /* list of active EquivalenceClasses */ bool ec_merging_done; /* set true once ECs are canonical */ List *canon_pathkeys; /* list of "canonical" PathKeys */ List *left_join_clauses; /* list of RestrictInfos for mergejoinable * outer join clauses w/nonnullable var on * left */ List *right_join_clauses; /* list of RestrictInfos for mergejoinable * outer join clauses w/nonnullable var on * right */ List *full_join_clauses; /* list of RestrictInfos for mergejoinable * full join clauses */ List *join_info_list; /* list of SpecialJoinInfos */ /* * Note: for AppendRelInfos describing partitions of a partitioned table, * we guarantee that partitions that come earlier in the partitioned * table's PartitionDesc will appear earlier in append_rel_list. */ List *append_rel_list; /* list of AppendRelInfos */ List *rowMarks; /* list of PlanRowMarks */ List *placeholder_list; /* list of PlaceHolderInfos */ List *fkey_list; /* list of ForeignKeyOptInfos */ List *query_pathkeys; /* desired pathkeys for query_planner() */ List *group_pathkeys; /* groupClause pathkeys, if any */ List *window_pathkeys; /* pathkeys of bottom window, if any */ List *distinct_pathkeys; /* distinctClause pathkeys, if any */ List *sort_pathkeys; /* sortClause pathkeys, if any */ List *part_schemes; /* Canonicalised partition schemes used in the * query. */ List *initial_rels; /* RelOptInfos we are now trying to join */ /* Use fetch_upper_rel() to get any particular upper rel */ List *upper_rels[UPPERREL_FINAL + 1]; /* upper-rel RelOptInfos */ /* Result tlists chosen by grouping_planner for upper-stage processing */ struct PathTarget *upper_targets[UPPERREL_FINAL + 1]; /* * The fully-processed targetlist is kept here. It differs from * parse->targetList in that (for INSERT and UPDATE) it's been reordered * to match the target table, and defaults have been filled in. Also, * additional resjunk targets may be present. preprocess_targetlist() * does most of this work, but note that more resjunk targets can get * added during appendrel expansion. (Hence, upper_targets mustn't get * set up till after that.) */ List *processed_tlist; /* Fields filled during create_plan() for use in setrefs.c */ AttrNumber *grouping_map; /* for GroupingFunc fixup */ List *minmax_aggs; /* List of MinMaxAggInfos */ MemoryContext planner_cxt; /* context holding PlannerInfo */ double total_table_pages; /* # of pages in all non-dummy tables of * query */ double tuple_fraction; /* tuple_fraction passed to query_planner */ double limit_tuples; /* limit_tuples passed to query_planner */ Index qual_security_level; /* minimum security_level for quals */ /* Note: qual_security_level is zero if there are no securityQuals */ InheritanceKind inhTargetKind; /* indicates if the target relation is an * inheritance child or partition or a * partitioned table */ bool hasJoinRTEs; /* true if any RTEs are RTE_JOIN kind */ bool hasLateralRTEs; /* true if any RTEs are marked LATERAL */ bool hasHavingQual; /* true if havingQual was non-null */ bool hasPseudoConstantQuals; /* true if any RestrictInfo has * pseudoconstant = true */ bool hasRecursion; /* true if planning a recursive WITH item */ /* These fields are used only when hasRecursion is true: */ int wt_param_id; /* PARAM_EXEC ID for the work table */ struct Path *non_recursive_path; /* a path for non-recursive term */ /* These fields are workspace for createplan.c */ Relids curOuterRels; /* outer rels above current node */ List *curOuterParams; /* not-yet-assigned NestLoopParams */ /* optional private data for join_search_hook, e.g., GEQO */ void *join_search_private; /* Does this query modify any partition key columns? */ bool partColsUpdated; }; /* * In places where it's known that simple_rte_array[] must have been prepared * already, we just index into it to fetch RTEs. In code that might be * executed before or after entering query_planner(), use this macro. */ #define planner_rt_fetch(rti, root) \ ((root)->simple_rte_array ? (root)->simple_rte_array[rti] : \ rt_fetch(rti, (root)->parse->rtable)) /* * If multiple relations are partitioned the same way, all such partitions * will have a pointer to the same PartitionScheme. A list of PartitionScheme * objects is attached to the PlannerInfo. By design, the partition scheme * incorporates only the general properties of the partition method (LIST vs. * RANGE, number of partitioning columns and the type information for each) * and not the specific bounds. * * We store the opclass-declared input data types instead of the partition key * datatypes since the former rather than the latter are used to compare * partition bounds. Since partition key data types and the opclass declared * input data types are expected to be binary compatible (per ResolveOpClass), * both of those should have same byval and length properties. */ typedef struct PartitionSchemeData { char strategy; /* partition strategy */ int16 partnatts; /* number of partition attributes */ Oid *partopfamily; /* OIDs of operator families */ Oid *partopcintype; /* OIDs of opclass declared input data types */ Oid *partcollation; /* OIDs of partitioning collations */ /* Cached information about partition key data types. */ int16 *parttyplen; bool *parttypbyval; /* Cached information about partition comparison functions. */ struct FmgrInfo *partsupfunc; } PartitionSchemeData; typedef struct PartitionSchemeData *PartitionScheme; /*---------- * RelOptInfo * Per-relation information for planning/optimization * * For planning purposes, a "base rel" is either a plain relation (a table) * or the output of a sub-SELECT or function that appears in the range table. * In either case it is uniquely identified by an RT index. A "joinrel" * is the joining of two or more base rels. A joinrel is identified by * the set of RT indexes for its component baserels. We create RelOptInfo * nodes for each baserel and joinrel, and store them in the PlannerInfo's * simple_rel_array and join_rel_list respectively. * * Note that there is only one joinrel for any given set of component * baserels, no matter what order we assemble them in; so an unordered * set is the right datatype to identify it with. * * We also have "other rels", which are like base rels in that they refer to * single RT indexes; but they are not part of the join tree, and are given * a different RelOptKind to identify them. * Currently the only kind of otherrels are those made for member relations * of an "append relation", that is an inheritance set or UNION ALL subquery. * An append relation has a parent RTE that is a base rel, which represents * the entire append relation. The member RTEs are otherrels. The parent * is present in the query join tree but the members are not. The member * RTEs and otherrels are used to plan the scans of the individual tables or * subqueries of the append set; then the parent baserel is given Append * and/or MergeAppend paths comprising the best paths for the individual * member rels. (See comments for AppendRelInfo for more information.) * * At one time we also made otherrels to represent join RTEs, for use in * handling join alias Vars. Currently this is not needed because all join * alias Vars are expanded to non-aliased form during preprocess_expression. * * We also have relations representing joins between child relations of * different partitioned tables. These relations are not added to * join_rel_level lists as they are not joined directly by the dynamic * programming algorithm. * * There is also a RelOptKind for "upper" relations, which are RelOptInfos * that describe post-scan/join processing steps, such as aggregation. * Many of the fields in these RelOptInfos are meaningless, but their Path * fields always hold Paths showing ways to do that processing step. * * Lastly, there is a RelOptKind for "dead" relations, which are base rels * that we have proven we don't need to join after all. * * Parts of this data structure are specific to various scan and join * mechanisms. It didn't seem worth creating new node types for them. * * relids - Set of base-relation identifiers; it is a base relation * if there is just one, a join relation if more than one * rows - estimated number of tuples in the relation after restriction * clauses have been applied (ie, output rows of a plan for it) * consider_startup - true if there is any value in keeping plain paths for * this rel on the basis of having cheap startup cost * consider_param_startup - the same for parameterized paths * reltarget - Default Path output tlist for this rel; normally contains * Var and PlaceHolderVar nodes for the values we need to * output from this relation. * List is in no particular order, but all rels of an * appendrel set must use corresponding orders. * NOTE: in an appendrel child relation, may contain * arbitrary expressions pulled up from a subquery! * pathlist - List of Path nodes, one for each potentially useful * method of generating the relation * ppilist - ParamPathInfo nodes for parameterized Paths, if any * cheapest_startup_path - the pathlist member with lowest startup cost * (regardless of ordering) among the unparameterized paths; * or NULL if there is no unparameterized path * cheapest_total_path - the pathlist member with lowest total cost * (regardless of ordering) among the unparameterized paths; * or if there is no unparameterized path, the path with lowest * total cost among the paths with minimum parameterization * cheapest_unique_path - for caching cheapest path to produce unique * (no duplicates) output from relation; NULL if not yet requested * cheapest_parameterized_paths - best paths for their parameterizations; * always includes cheapest_total_path, even if that's unparameterized * direct_lateral_relids - rels this rel has direct LATERAL references to * lateral_relids - required outer rels for LATERAL, as a Relids set * (includes both direct and indirect lateral references) * * If the relation is a base relation it will have these fields set: * * relid - RTE index (this is redundant with the relids field, but * is provided for convenience of access) * rtekind - copy of RTE's rtekind field * min_attr, max_attr - range of valid AttrNumbers for rel * attr_needed - array of bitmapsets indicating the highest joinrel * in which each attribute is needed; if bit 0 is set then * the attribute is needed as part of final targetlist * attr_widths - cache space for per-attribute width estimates; * zero means not computed yet * lateral_vars - lateral cross-references of rel, if any (list of * Vars and PlaceHolderVars) * lateral_referencers - relids of rels that reference this one laterally * (includes both direct and indirect lateral references) * indexlist - list of IndexOptInfo nodes for relation's indexes * (always NIL if it's not a table) * pages - number of disk pages in relation (zero if not a table) * tuples - number of tuples in relation (not considering restrictions) * allvisfrac - fraction of disk pages that are marked all-visible * eclass_indexes - EquivalenceClasses that mention this rel (filled * only after EC merging is complete) * subroot - PlannerInfo for subquery (NULL if it's not a subquery) * subplan_params - list of PlannerParamItems to be passed to subquery * * Note: for a subquery, tuples and subroot are not set immediately * upon creation of the RelOptInfo object; they are filled in when * set_subquery_pathlist processes the object. * * For otherrels that are appendrel members, these fields are filled * in just as for a baserel, except we don't bother with lateral_vars. * * If the relation is either a foreign table or a join of foreign tables that * all belong to the same foreign server and are assigned to the same user to * check access permissions as (cf checkAsUser), these fields will be set: * * serverid - OID of foreign server, if foreign table (else InvalidOid) * userid - OID of user to check access as (InvalidOid means current user) * useridiscurrent - we've assumed that userid equals current user * fdwroutine - function hooks for FDW, if foreign table (else NULL) * fdw_private - private state for FDW, if foreign table (else NULL) * * Two fields are used to cache knowledge acquired during the join search * about whether this rel is provably unique when being joined to given other * relation(s), ie, it can have at most one row matching any given row from * that join relation. Currently we only attempt such proofs, and thus only * populate these fields, for base rels; but someday they might be used for * join rels too: * * unique_for_rels - list of Relid sets, each one being a set of other * rels for which this one has been proven unique * non_unique_for_rels - list of Relid sets, each one being a set of * other rels for which we have tried and failed to prove * this one unique * * The presence of the following fields depends on the restrictions * and joins that the relation participates in: * * baserestrictinfo - List of RestrictInfo nodes, containing info about * each non-join qualification clause in which this relation * participates (only used for base rels) * baserestrictcost - Estimated cost of evaluating the baserestrictinfo * clauses at a single tuple (only used for base rels) * baserestrict_min_security - Smallest security_level found among * clauses in baserestrictinfo * joininfo - List of RestrictInfo nodes, containing info about each * join clause in which this relation participates (but * note this excludes clauses that might be derivable from * EquivalenceClasses) * has_eclass_joins - flag that EquivalenceClass joins are possible * * Note: Keeping a restrictinfo list in the RelOptInfo is useful only for * base rels, because for a join rel the set of clauses that are treated as * restrict clauses varies depending on which sub-relations we choose to join. * (For example, in a 3-base-rel join, a clause relating rels 1 and 2 must be * treated as a restrictclause if we join {1} and {2 3} to make {1 2 3}; but * if we join {1 2} and {3} then that clause will be a restrictclause in {1 2} * and should not be processed again at the level of {1 2 3}.) Therefore, * the restrictinfo list in the join case appears in individual JoinPaths * (field joinrestrictinfo), not in the parent relation. But it's OK for * the RelOptInfo to store the joininfo list, because that is the same * for a given rel no matter how we form it. * * We store baserestrictcost in the RelOptInfo (for base relations) because * we know we will need it at least once (to price the sequential scan) * and may need it multiple times to price index scans. * * A join relation is considered to be partitioned if it is formed from a * join of two relations that are partitioned, have matching partitioning * schemes, and are joined on an equijoin of the partitioning columns. * Under those conditions we can consider the join relation to be partitioned * by either relation's partitioning keys, though some care is needed if * either relation can be forced to null by outer-joining. For example, an * outer join like (A LEFT JOIN B ON A.a = B.b) may produce rows with B.b * NULL. These rows may not fit the partitioning conditions imposed on B. * Hence, strictly speaking, the join is not partitioned by B.b and thus * partition keys of an outer join should include partition key expressions * from the non-nullable side only. However, if a subsequent join uses * strict comparison operators (and all commonly-used equijoin operators are * strict), the presence of nulls doesn't cause a problem: such rows couldn't * match anything on the other side and thus they don't create a need to do * any cross-partition sub-joins. Hence we can treat such values as still * partitioning the join output for the purpose of additional partitionwise * joining, so long as a strict join operator is used by the next join. * * If the relation is partitioned, these fields will be set: * * part_scheme - Partitioning scheme of the relation * nparts - Number of partitions * boundinfo - Partition bounds * partbounds_merged - true if partition bounds are merged ones * partition_qual - Partition constraint if not the root * part_rels - RelOptInfos for each partition * all_partrels - Relids set of all partition relids * partexprs, nullable_partexprs - Partition key expressions * partitioned_child_rels - RT indexes of unpruned partitions of * this relation that are partitioned tables * themselves, in hierarchical order * * The partexprs and nullable_partexprs arrays each contain * part_scheme->partnatts elements. Each of the elements is a list of * partition key expressions. For partitioned base relations, there is one * expression in each partexprs element, and nullable_partexprs is empty. * For partitioned join relations, each base relation within the join * contributes one partition key expression per partitioning column; * that expression goes in the partexprs[i] list if the base relation * is not nullable by this join or any lower outer join, or in the * nullable_partexprs[i] list if the base relation is nullable. * Furthermore, FULL JOINs add extra nullable_partexprs expressions * corresponding to COALESCE expressions of the left and right join columns, * to simplify matching join clauses to those lists. *---------- */ typedef enum RelOptKind { RELOPT_BASEREL, RELOPT_JOINREL, RELOPT_OTHER_MEMBER_REL, RELOPT_OTHER_JOINREL, RELOPT_UPPER_REL, RELOPT_OTHER_UPPER_REL, RELOPT_DEADREL } RelOptKind; /* * Is the given relation a simple relation i.e a base or "other" member * relation? */ #define IS_SIMPLE_REL(rel) \ ((rel)->reloptkind == RELOPT_BASEREL || \ (rel)->reloptkind == RELOPT_OTHER_MEMBER_REL) /* Is the given relation a join relation? */ #define IS_JOIN_REL(rel) \ ((rel)->reloptkind == RELOPT_JOINREL || \ (rel)->reloptkind == RELOPT_OTHER_JOINREL) /* Is the given relation an upper relation? */ #define IS_UPPER_REL(rel) \ ((rel)->reloptkind == RELOPT_UPPER_REL || \ (rel)->reloptkind == RELOPT_OTHER_UPPER_REL) /* Is the given relation an "other" relation? */ #define IS_OTHER_REL(rel) \ ((rel)->reloptkind == RELOPT_OTHER_MEMBER_REL || \ (rel)->reloptkind == RELOPT_OTHER_JOINREL || \ (rel)->reloptkind == RELOPT_OTHER_UPPER_REL) typedef struct RelOptInfo { NodeTag type; RelOptKind reloptkind; /* all relations included in this RelOptInfo */ Relids relids; /* set of base relids (rangetable indexes) */ /* size estimates generated by planner */ double rows; /* estimated number of result tuples */ /* per-relation planner control flags */ bool consider_startup; /* keep cheap-startup-cost paths? */ bool consider_param_startup; /* ditto, for parameterized paths? */ bool consider_parallel; /* consider parallel paths? */ /* default result targetlist for Paths scanning this relation */ struct PathTarget *reltarget; /* list of Vars/Exprs, cost, width */ /* materialization information */ List *pathlist; /* Path structures */ List *ppilist; /* ParamPathInfos used in pathlist */ List *partial_pathlist; /* partial Paths */ struct Path *cheapest_startup_path; struct Path *cheapest_total_path; struct Path *cheapest_unique_path; List *cheapest_parameterized_paths; /* parameterization information needed for both base rels and join rels */ /* (see also lateral_vars and lateral_referencers) */ Relids direct_lateral_relids; /* rels directly laterally referenced */ Relids lateral_relids; /* minimum parameterization of rel */ /* information about a base rel (not set for join rels!) */ Index relid; Oid reltablespace; /* containing tablespace */ RTEKind rtekind; /* RELATION, SUBQUERY, FUNCTION, etc */ AttrNumber min_attr; /* smallest attrno of rel (often <0) */ AttrNumber max_attr; /* largest attrno of rel */ Relids *attr_needed; /* array indexed [min_attr .. max_attr] */ int32 *attr_widths; /* array indexed [min_attr .. max_attr] */ List *lateral_vars; /* LATERAL Vars and PHVs referenced by rel */ Relids lateral_referencers; /* rels that reference me laterally */ List *indexlist; /* list of IndexOptInfo */ List *statlist; /* list of StatisticExtInfo */ BlockNumber pages; /* size estimates derived from pg_class */ double tuples; double allvisfrac; Bitmapset *eclass_indexes; /* Indexes in PlannerInfo's eq_classes list of * ECs that mention this rel */ PlannerInfo *subroot; /* if subquery */ List *subplan_params; /* if subquery */ int rel_parallel_workers; /* wanted number of parallel workers */ /* Information about foreign tables and foreign joins */ Oid serverid; /* identifies server for the table or join */ Oid userid; /* identifies user to check access as */ bool useridiscurrent; /* join is only valid for current user */ /* use "struct FdwRoutine" to avoid including fdwapi.h here */ struct FdwRoutine *fdwroutine; void *fdw_private; /* cache space for remembering if we have proven this relation unique */ List *unique_for_rels; /* known unique for these other relid * set(s) */ List *non_unique_for_rels; /* known not unique for these set(s) */ /* used by various scans and joins: */ List *baserestrictinfo; /* RestrictInfo structures (if base rel) */ QualCost baserestrictcost; /* cost of evaluating the above */ Index baserestrict_min_security; /* min security_level found in * baserestrictinfo */ List *joininfo; /* RestrictInfo structures for join clauses * involving this rel */ bool has_eclass_joins; /* T means joininfo is incomplete */ /* used by partitionwise joins: */ bool consider_partitionwise_join; /* consider partitionwise join * paths? (if partitioned rel) */ Relids top_parent_relids; /* Relids of topmost parents (if "other" * rel) */ /* used for partitioned relations: */ PartitionScheme part_scheme; /* Partitioning scheme */ int nparts; /* Number of partitions; -1 if not yet set; in * case of a join relation 0 means it's * considered unpartitioned */ struct PartitionBoundInfoData *boundinfo; /* Partition bounds */ bool partbounds_merged; /* True if partition bounds were created * by partition_bounds_merge() */ List *partition_qual; /* Partition constraint, if not the root */ struct RelOptInfo **part_rels; /* Array of RelOptInfos of partitions, * stored in the same order as bounds */ Relids all_partrels; /* Relids set of all partition relids */ List **partexprs; /* Non-nullable partition key expressions */ List **nullable_partexprs; /* Nullable partition key expressions */ List *partitioned_child_rels; /* List of RT indexes */ } RelOptInfo; /* * Is given relation partitioned? * * It's not enough to test whether rel->part_scheme is set, because it might * be that the basic partitioning properties of the input relations matched * but the partition bounds did not. Also, if we are able to prove a rel * dummy (empty), we should henceforth treat it as unpartitioned. */ #define IS_PARTITIONED_REL(rel) \ ((rel)->part_scheme && (rel)->boundinfo && (rel)->nparts > 0 && \ (rel)->part_rels && !IS_DUMMY_REL(rel)) /* * Convenience macro to make sure that a partitioned relation has all the * required members set. */ #define REL_HAS_ALL_PART_PROPS(rel) \ ((rel)->part_scheme && (rel)->boundinfo && (rel)->nparts > 0 && \ (rel)->part_rels && (rel)->partexprs && (rel)->nullable_partexprs) /* * IndexOptInfo * Per-index information for planning/optimization * * indexkeys[], indexcollations[] each have ncolumns entries. * opfamily[], and opcintype[] each have nkeycolumns entries. They do * not contain any information about included attributes. * * sortopfamily[], reverse_sort[], and nulls_first[] have * nkeycolumns entries, if the index is ordered; but if it is unordered, * those pointers are NULL. * * Zeroes in the indexkeys[] array indicate index columns that are * expressions; there is one element in indexprs for each such column. * * For an ordered index, reverse_sort[] and nulls_first[] describe the * sort ordering of a forward indexscan; we can also consider a backward * indexscan, which will generate the reverse ordering. * * The indexprs and indpred expressions have been run through * prepqual.c and eval_const_expressions() for ease of matching to * WHERE clauses. indpred is in implicit-AND form. * * indextlist is a TargetEntry list representing the index columns. * It provides an equivalent base-relation Var for each simple column, * and links to the matching indexprs element for each expression column. * * While most of these fields are filled when the IndexOptInfo is created * (by plancat.c), indrestrictinfo and predOK are set later, in * check_index_predicates(). */ #ifndef HAVE_INDEXOPTINFO_TYPEDEF typedef struct IndexOptInfo IndexOptInfo; #define HAVE_INDEXOPTINFO_TYPEDEF 1 #endif struct IndexOptInfo { NodeTag type; Oid indexoid; /* OID of the index relation */ Oid reltablespace; /* tablespace of index (not table) */ RelOptInfo *rel; /* back-link to index's table */ /* index-size statistics (from pg_class and elsewhere) */ BlockNumber pages; /* number of disk pages in index */ double tuples; /* number of index tuples in index */ int tree_height; /* index tree height, or -1 if unknown */ /* index descriptor information */ int ncolumns; /* number of columns in index */ int nkeycolumns; /* number of key columns in index */ int *indexkeys; /* column numbers of index's attributes both * key and included columns, or 0 */ Oid *indexcollations; /* OIDs of collations of index columns */ Oid *opfamily; /* OIDs of operator families for columns */ Oid *opcintype; /* OIDs of opclass declared input data types */ Oid *sortopfamily; /* OIDs of btree opfamilies, if orderable */ bool *reverse_sort; /* is sort order descending? */ bool *nulls_first; /* do NULLs come first in the sort order? */ bytea **opclassoptions; /* opclass-specific options for columns */ bool *canreturn; /* which index cols can be returned in an * index-only scan? */ Oid relam; /* OID of the access method (in pg_am) */ List *indexprs; /* expressions for non-simple index columns */ List *indpred; /* predicate if a partial index, else NIL */ List *indextlist; /* targetlist representing index columns */ List *indrestrictinfo; /* parent relation's baserestrictinfo * list, less any conditions implied by * the index's predicate (unless it's a * target rel, see comments in * check_index_predicates()) */ bool predOK; /* true if index predicate matches query */ bool unique; /* true if a unique index */ bool immediate; /* is uniqueness enforced immediately? */ bool hypothetical; /* true if index doesn't really exist */ /* Remaining fields are copied from the index AM's API struct: */ bool amcanorderbyop; /* does AM support order by operator result? */ bool amoptionalkey; /* can query omit key for the first column? */ bool amsearcharray; /* can AM handle ScalarArrayOpExpr quals? */ bool amsearchnulls; /* can AM search for NULL/NOT NULL entries? */ bool amhasgettuple; /* does AM have amgettuple interface? */ bool amhasgetbitmap; /* does AM have amgetbitmap interface? */ bool amcanparallel; /* does AM support parallel scan? */ bool amcanmarkpos; /* does AM support mark/restore? */ /* Rather than include amapi.h here, we declare amcostestimate like this */ void (*amcostestimate) (); /* AM's cost estimator */ }; /* * ForeignKeyOptInfo * Per-foreign-key information for planning/optimization * * The per-FK-column arrays can be fixed-size because we allow at most * INDEX_MAX_KEYS columns in a foreign key constraint. Each array has * nkeys valid entries. */ typedef struct ForeignKeyOptInfo { NodeTag type; /* Basic data about the foreign key (fetched from catalogs): */ Index con_relid; /* RT index of the referencing table */ Index ref_relid; /* RT index of the referenced table */ int nkeys; /* number of columns in the foreign key */ AttrNumber conkey[INDEX_MAX_KEYS]; /* cols in referencing table */ AttrNumber confkey[INDEX_MAX_KEYS]; /* cols in referenced table */ Oid conpfeqop[INDEX_MAX_KEYS]; /* PK = FK operator OIDs */ /* Derived info about whether FK's equality conditions match the query: */ int nmatched_ec; /* # of FK cols matched by ECs */ int nmatched_rcols; /* # of FK cols matched by non-EC rinfos */ int nmatched_ri; /* total # of non-EC rinfos matched to FK */ /* Pointer to eclass matching each column's condition, if there is one */ struct EquivalenceClass *eclass[INDEX_MAX_KEYS]; /* List of non-EC RestrictInfos matching each column's condition */ List *rinfos[INDEX_MAX_KEYS]; } ForeignKeyOptInfo; /* * StatisticExtInfo * Information about extended statistics for planning/optimization * * Each pg_statistic_ext row is represented by one or more nodes of this * type, or even zero if ANALYZE has not computed them. */ typedef struct StatisticExtInfo { NodeTag type; Oid statOid; /* OID of the statistics row */ RelOptInfo *rel; /* back-link to statistic's table */ char kind; /* statistics kind of this entry */ Bitmapset *keys; /* attnums of the columns covered */ } StatisticExtInfo; /* * EquivalenceClasses * * Whenever we can determine that a mergejoinable equality clause A = B is * not delayed by any outer join, we create an EquivalenceClass containing * the expressions A and B to record this knowledge. If we later find another * equivalence B = C, we add C to the existing EquivalenceClass; this may * require merging two existing EquivalenceClasses. At the end of the qual * distribution process, we have sets of values that are known all transitively * equal to each other, where "equal" is according to the rules of the btree * operator family(s) shown in ec_opfamilies, as well as the collation shown * by ec_collation. (We restrict an EC to contain only equalities whose * operators belong to the same set of opfamilies. This could probably be * relaxed, but for now it's not worth the trouble, since nearly all equality * operators belong to only one btree opclass anyway. Similarly, we suppose * that all or none of the input datatypes are collatable, so that a single * collation value is sufficient.) * * We also use EquivalenceClasses as the base structure for PathKeys, letting * us represent knowledge about different sort orderings being equivalent. * Since every PathKey must reference an EquivalenceClass, we will end up * with single-member EquivalenceClasses whenever a sort key expression has * not been equivalenced to anything else. It is also possible that such an * EquivalenceClass will contain a volatile expression ("ORDER BY random()"), * which is a case that can't arise otherwise since clauses containing * volatile functions are never considered mergejoinable. We mark such * EquivalenceClasses specially to prevent them from being merged with * ordinary EquivalenceClasses. Also, for volatile expressions we have * to be careful to match the EquivalenceClass to the correct targetlist * entry: consider SELECT random() AS a, random() AS b ... ORDER BY b,a. * So we record the SortGroupRef of the originating sort clause. * * We allow equality clauses appearing below the nullable side of an outer join * to form EquivalenceClasses, but these have a slightly different meaning: * the included values might be all NULL rather than all the same non-null * values. See src/backend/optimizer/README for more on that point. * * NB: if ec_merged isn't NULL, this class has been merged into another, and * should be ignored in favor of using the pointed-to class. */ typedef struct EquivalenceClass { NodeTag type; List *ec_opfamilies; /* btree operator family OIDs */ Oid ec_collation; /* collation, if datatypes are collatable */ List *ec_members; /* list of EquivalenceMembers */ List *ec_sources; /* list of generating RestrictInfos */ List *ec_derives; /* list of derived RestrictInfos */ Relids ec_relids; /* all relids appearing in ec_members, except * for child members (see below) */ bool ec_has_const; /* any pseudoconstants in ec_members? */ bool ec_has_volatile; /* the (sole) member is a volatile expr */ bool ec_below_outer_join; /* equivalence applies below an OJ */ bool ec_broken; /* failed to generate needed clauses? */ Index ec_sortref; /* originating sortclause label, or 0 */ Index ec_min_security; /* minimum security_level in ec_sources */ Index ec_max_security; /* maximum security_level in ec_sources */ struct EquivalenceClass *ec_merged; /* set if merged into another EC */ } EquivalenceClass; /* * If an EC contains a const and isn't below-outer-join, any PathKey depending * on it must be redundant, since there's only one possible value of the key. */ #define EC_MUST_BE_REDUNDANT(eclass) \ ((eclass)->ec_has_const && !(eclass)->ec_below_outer_join) /* * EquivalenceMember - one member expression of an EquivalenceClass * * em_is_child signifies that this element was built by transposing a member * for an appendrel parent relation to represent the corresponding expression * for an appendrel child. These members are used for determining the * pathkeys of scans on the child relation and for explicitly sorting the * child when necessary to build a MergeAppend path for the whole appendrel * tree. An em_is_child member has no impact on the properties of the EC as a * whole; in particular the EC's ec_relids field does NOT include the child * relation. An em_is_child member should never be marked em_is_const nor * cause ec_has_const or ec_has_volatile to be set, either. Thus, em_is_child * members are not really full-fledged members of the EC, but just reflections * or doppelgangers of real members. Most operations on EquivalenceClasses * should ignore em_is_child members, and those that don't should test * em_relids to make sure they only consider relevant members. * * em_datatype is usually the same as exprType(em_expr), but can be * different when dealing with a binary-compatible opfamily; in particular * anyarray_ops would never work without this. Use em_datatype when * looking up a specific btree operator to work with this expression. */ typedef struct EquivalenceMember { NodeTag type; Expr *em_expr; /* the expression represented */ Relids em_relids; /* all relids appearing in em_expr */ Relids em_nullable_relids; /* nullable by lower outer joins */ bool em_is_const; /* expression is pseudoconstant? */ bool em_is_child; /* derived version for a child relation? */ Oid em_datatype; /* the "nominal type" used by the opfamily */ } EquivalenceMember; /* * PathKeys * * The sort ordering of a path is represented by a list of PathKey nodes. * An empty list implies no known ordering. Otherwise the first item * represents the primary sort key, the second the first secondary sort key, * etc. The value being sorted is represented by linking to an * EquivalenceClass containing that value and including pk_opfamily among its * ec_opfamilies. The EquivalenceClass tells which collation to use, too. * This is a convenient method because it makes it trivial to detect * equivalent and closely-related orderings. (See optimizer/README for more * information.) * * Note: pk_strategy is either BTLessStrategyNumber (for ASC) or * BTGreaterStrategyNumber (for DESC). We assume that all ordering-capable * index types will use btree-compatible strategy numbers. */ typedef struct PathKey { NodeTag type; EquivalenceClass *pk_eclass; /* the value that is ordered */ Oid pk_opfamily; /* btree opfamily defining the ordering */ int pk_strategy; /* sort direction (ASC or DESC) */ bool pk_nulls_first; /* do NULLs come before normal values? */ } PathKey; /* * PathTarget * * This struct contains what we need to know during planning about the * targetlist (output columns) that a Path will compute. Each RelOptInfo * includes a default PathTarget, which its individual Paths may simply * reference. However, in some cases a Path may compute outputs different * from other Paths, and in that case we make a custom PathTarget for it. * For example, an indexscan might return index expressions that would * otherwise need to be explicitly calculated. (Note also that "upper" * relations generally don't have useful default PathTargets.) * * exprs contains bare expressions; they do not have TargetEntry nodes on top, * though those will appear in finished Plans. * * sortgrouprefs[] is an array of the same length as exprs, containing the * corresponding sort/group refnos, or zeroes for expressions not referenced * by sort/group clauses. If sortgrouprefs is NULL (which it generally is in * RelOptInfo.reltarget targets; only upper-level Paths contain this info), * we have not identified sort/group columns in this tlist. This allows us to * deal with sort/group refnos when needed with less expense than including * TargetEntry nodes in the exprs list. */ typedef struct PathTarget { NodeTag type; List *exprs; /* list of expressions to be computed */ Index *sortgrouprefs; /* corresponding sort/group refnos, or 0 */ QualCost cost; /* cost of evaluating the expressions */ int width; /* estimated avg width of result tuples */ } PathTarget; /* Convenience macro to get a sort/group refno from a PathTarget */ #define get_pathtarget_sortgroupref(target, colno) \ ((target)->sortgrouprefs ? (target)->sortgrouprefs[colno] : (Index) 0) /* * ParamPathInfo * * All parameterized paths for a given relation with given required outer rels * link to a single ParamPathInfo, which stores common information such as * the estimated rowcount for this parameterization. We do this partly to * avoid recalculations, but mostly to ensure that the estimated rowcount * is in fact the same for every such path. * * Note: ppi_clauses is only used in ParamPathInfos for base relation paths; * in join cases it's NIL because the set of relevant clauses varies depending * on how the join is formed. The relevant clauses will appear in each * parameterized join path's joinrestrictinfo list, instead. */ typedef struct ParamPathInfo { NodeTag type; Relids ppi_req_outer; /* rels supplying parameters used by path */ double ppi_rows; /* estimated number of result tuples */ List *ppi_clauses; /* join clauses available from outer rels */ } ParamPathInfo; /* * Type "Path" is used as-is for sequential-scan paths, as well as some other * simple plan types that we don't need any extra information in the path for. * For other path types it is the first component of a larger struct. * * "pathtype" is the NodeTag of the Plan node we could build from this Path. * It is partially redundant with the Path's NodeTag, but allows us to use * the same Path type for multiple Plan types when there is no need to * distinguish the Plan type during path processing. * * "parent" identifies the relation this Path scans, and "pathtarget" * describes the precise set of output columns the Path would compute. * In simple cases all Paths for a given rel share the same targetlist, * which we represent by having path->pathtarget equal to parent->reltarget. * * "param_info", if not NULL, links to a ParamPathInfo that identifies outer * relation(s) that provide parameter values to each scan of this path. * That means this path can only be joined to those rels by means of nestloop * joins with this path on the inside. Also note that a parameterized path * is responsible for testing all "movable" joinclauses involving this rel * and the specified outer rel(s). * * "rows" is the same as parent->rows in simple paths, but in parameterized * paths and UniquePaths it can be less than parent->rows, reflecting the * fact that we've filtered by extra join conditions or removed duplicates. * * "pathkeys" is a List of PathKey nodes (see above), describing the sort * ordering of the path's output rows. */ typedef struct Path { NodeTag type; NodeTag pathtype; /* tag identifying scan/join method */ RelOptInfo *parent; /* the relation this path can build */ PathTarget *pathtarget; /* list of Vars/Exprs, cost, width */ ParamPathInfo *param_info; /* parameterization info, or NULL if none */ bool parallel_aware; /* engage parallel-aware logic? */ bool parallel_safe; /* OK to use as part of parallel plan? */ int parallel_workers; /* desired # of workers; 0 = not parallel */ /* estimated size/costs for path (see costsize.c for more info) */ double rows; /* estimated number of result tuples */ Cost startup_cost; /* cost expended before fetching any tuples */ Cost total_cost; /* total cost (assuming all tuples fetched) */ List *pathkeys; /* sort ordering of path's output */ /* pathkeys is a List of PathKey nodes; see above */ } Path; /* Macro for extracting a path's parameterization relids; beware double eval */ #define PATH_REQ_OUTER(path) \ ((path)->param_info ? (path)->param_info->ppi_req_outer : (Relids) NULL) /*---------- * IndexPath represents an index scan over a single index. * * This struct is used for both regular indexscans and index-only scans; * path.pathtype is T_IndexScan or T_IndexOnlyScan to show which is meant. * * 'indexinfo' is the index to be scanned. * * 'indexclauses' is a list of IndexClause nodes, each representing one * index-checkable restriction, with implicit AND semantics across the list. * An empty list implies a full index scan. * * 'indexorderbys', if not NIL, is a list of ORDER BY expressions that have * been found to be usable as ordering operators for an amcanorderbyop index. * The list must match the path's pathkeys, ie, one expression per pathkey * in the same order. These are not RestrictInfos, just bare expressions, * since they generally won't yield booleans. It's guaranteed that each * expression has the index key on the left side of the operator. * * 'indexorderbycols' is an integer list of index column numbers (zero-based) * of the same length as 'indexorderbys', showing which index column each * ORDER BY expression is meant to be used with. (There is no restriction * on which index column each ORDER BY can be used with.) * * 'indexscandir' is one of: * ForwardScanDirection: forward scan of an ordered index * BackwardScanDirection: backward scan of an ordered index * NoMovementScanDirection: scan of an unordered index, or don't care * (The executor doesn't care whether it gets ForwardScanDirection or * NoMovementScanDirection for an indexscan, but the planner wants to * distinguish ordered from unordered indexes for building pathkeys.) * * 'indextotalcost' and 'indexselectivity' are saved in the IndexPath so that * we need not recompute them when considering using the same index in a * bitmap index/heap scan (see BitmapHeapPath). The costs of the IndexPath * itself represent the costs of an IndexScan or IndexOnlyScan plan type. *---------- */ typedef struct IndexPath { Path path; IndexOptInfo *indexinfo; List *indexclauses; List *indexorderbys; List *indexorderbycols; ScanDirection indexscandir; Cost indextotalcost; Selectivity indexselectivity; } IndexPath; /* * Each IndexClause references a RestrictInfo node from the query's WHERE * or JOIN conditions, and shows how that restriction can be applied to * the particular index. We support both indexclauses that are directly * usable by the index machinery, which are typically of the form * "indexcol OP pseudoconstant", and those from which an indexable qual * can be derived. The simplest such transformation is that a clause * of the form "pseudoconstant OP indexcol" can be commuted to produce an * indexable qual (the index machinery expects the indexcol to be on the * left always). Another example is that we might be able to extract an * indexable range condition from a LIKE condition, as in "x LIKE 'foo%bar'" * giving rise to "x >= 'foo' AND x < 'fop'". Derivation of such lossy * conditions is done by a planner support function attached to the * indexclause's top-level function or operator. * * indexquals is a list of RestrictInfos for the directly-usable index * conditions associated with this IndexClause. In the simplest case * it's a one-element list whose member is iclause->rinfo. Otherwise, * it contains one or more directly-usable indexqual conditions extracted * from the given clause. The 'lossy' flag indicates whether the * indexquals are semantically equivalent to the original clause, or * represent a weaker condition. * * Normally, indexcol is the index of the single index column the clause * works on, and indexcols is NIL. But if the clause is a RowCompareExpr, * indexcol is the index of the leading column, and indexcols is a list of * all the affected columns. (Note that indexcols matches up with the * columns of the actual indexable RowCompareExpr in indexquals, which * might be different from the original in rinfo.) * * An IndexPath's IndexClause list is required to be ordered by index * column, i.e. the indexcol values must form a nondecreasing sequence. * (The order of multiple clauses for the same index column is unspecified.) */ typedef struct IndexClause { NodeTag type; struct RestrictInfo *rinfo; /* original restriction or join clause */ List *indexquals; /* indexqual(s) derived from it */ bool lossy; /* are indexquals a lossy version of clause? */ AttrNumber indexcol; /* index column the clause uses (zero-based) */ List *indexcols; /* multiple index columns, if RowCompare */ } IndexClause; /* * BitmapHeapPath represents one or more indexscans that generate TID bitmaps * instead of directly accessing the heap, followed by AND/OR combinations * to produce a single bitmap, followed by a heap scan that uses the bitmap. * Note that the output is always considered unordered, since it will come * out in physical heap order no matter what the underlying indexes did. * * The individual indexscans are represented by IndexPath nodes, and any * logic on top of them is represented by a tree of BitmapAndPath and * BitmapOrPath nodes. Notice that we can use the same IndexPath node both * to represent a regular (or index-only) index scan plan, and as the child * of a BitmapHeapPath that represents scanning the same index using a * BitmapIndexScan. The startup_cost and total_cost figures of an IndexPath * always represent the costs to use it as a regular (or index-only) * IndexScan. The costs of a BitmapIndexScan can be computed using the * IndexPath's indextotalcost and indexselectivity. */ typedef struct BitmapHeapPath { Path path; Path *bitmapqual; /* IndexPath, BitmapAndPath, BitmapOrPath */ } BitmapHeapPath; /* * BitmapAndPath represents a BitmapAnd plan node; it can only appear as * part of the substructure of a BitmapHeapPath. The Path structure is * a bit more heavyweight than we really need for this, but for simplicity * we make it a derivative of Path anyway. */ typedef struct BitmapAndPath { Path path; List *bitmapquals; /* IndexPaths and BitmapOrPaths */ Selectivity bitmapselectivity; } BitmapAndPath; /* * BitmapOrPath represents a BitmapOr plan node; it can only appear as * part of the substructure of a BitmapHeapPath. The Path structure is * a bit more heavyweight than we really need for this, but for simplicity * we make it a derivative of Path anyway. */ typedef struct BitmapOrPath { Path path; List *bitmapquals; /* IndexPaths and BitmapAndPaths */ Selectivity bitmapselectivity; } BitmapOrPath; /* * TidPath represents a scan by TID * * tidquals is an implicitly OR'ed list of qual expressions of the form * "CTID = pseudoconstant", or "CTID = ANY(pseudoconstant_array)", * or a CurrentOfExpr for the relation. */ typedef struct TidPath { Path path; List *tidquals; /* qual(s) involving CTID = something */ } TidPath; /* * SubqueryScanPath represents a scan of an unflattened subquery-in-FROM * * Note that the subpath comes from a different planning domain; for example * RTE indexes within it mean something different from those known to the * SubqueryScanPath. path.parent->subroot is the planning context needed to * interpret the subpath. */ typedef struct SubqueryScanPath { Path path; Path *subpath; /* path representing subquery execution */ } SubqueryScanPath; /* * ForeignPath represents a potential scan of a foreign table, foreign join * or foreign upper-relation. * * fdw_private stores FDW private data about the scan. While fdw_private is * not actually touched by the core code during normal operations, it's * generally a good idea to use a representation that can be dumped by * nodeToString(), so that you can examine the structure during debugging * with tools like pprint(). */ typedef struct ForeignPath { Path path; Path *fdw_outerpath; List *fdw_private; } ForeignPath; /* * CustomPath represents a table scan done by some out-of-core extension. * * We provide a set of hooks here - which the provider must take care to set * up correctly - to allow extensions to supply their own methods of scanning * a relation. For example, a provider might provide GPU acceleration, a * cache-based scan, or some other kind of logic we haven't dreamed up yet. * * CustomPaths can be injected into the planning process for a relation by * set_rel_pathlist_hook functions. * * Core code must avoid assuming that the CustomPath is only as large as * the structure declared here; providers are allowed to make it the first * element in a larger structure. (Since the planner never copies Paths, * this doesn't add any complication.) However, for consistency with the * FDW case, we provide a "custom_private" field in CustomPath; providers * may prefer to use that rather than define another struct type. */ struct CustomPathMethods; typedef struct CustomPath { Path path; uint32 flags; /* mask of CUSTOMPATH_* flags, see * nodes/extensible.h */ List *custom_paths; /* list of child Path nodes, if any */ List *custom_private; const struct CustomPathMethods *methods; } CustomPath; /* * AppendPath represents an Append plan, ie, successive execution of * several member plans. * * For partial Append, 'subpaths' contains non-partial subpaths followed by * partial subpaths. * * Note: it is possible for "subpaths" to contain only one, or even no, * elements. These cases are optimized during create_append_plan. * In particular, an AppendPath with no subpaths is a "dummy" path that * is created to represent the case that a relation is provably empty. * (This is a convenient representation because it means that when we build * an appendrel and find that all its children have been excluded, no extra * action is needed to recognize the relation as dummy.) */ typedef struct AppendPath { Path path; /* RT indexes of non-leaf tables in a partition tree */ List *partitioned_rels; List *subpaths; /* list of component Paths */ /* Index of first partial path in subpaths; list_length(subpaths) if none */ int first_partial_path; double limit_tuples; /* hard limit on output tuples, or -1 */ } AppendPath; #define IS_DUMMY_APPEND(p) \ (IsA((p), AppendPath) && ((AppendPath *) (p))->subpaths == NIL) /* * A relation that's been proven empty will have one path that is dummy * (but might have projection paths on top). For historical reasons, * this is provided as a macro that wraps is_dummy_rel(). */ #define IS_DUMMY_REL(r) is_dummy_rel(r) extern bool is_dummy_rel(RelOptInfo *rel); /* * MergeAppendPath represents a MergeAppend plan, ie, the merging of sorted * results from several member plans to produce similarly-sorted output. */ typedef struct MergeAppendPath { Path path; /* RT indexes of non-leaf tables in a partition tree */ List *partitioned_rels; List *subpaths; /* list of component Paths */ double limit_tuples; /* hard limit on output tuples, or -1 */ } MergeAppendPath; /* * GroupResultPath represents use of a Result plan node to compute the * output of a degenerate GROUP BY case, wherein we know we should produce * exactly one row, which might then be filtered by a HAVING qual. * * Note that quals is a list of bare clauses, not RestrictInfos. */ typedef struct GroupResultPath { Path path; List *quals; } GroupResultPath; /* * MaterialPath represents use of a Material plan node, i.e., caching of * the output of its subpath. This is used when the subpath is expensive * and needs to be scanned repeatedly, or when we need mark/restore ability * and the subpath doesn't have it. */ typedef struct MaterialPath { Path path; Path *subpath; } MaterialPath; /* * UniquePath represents elimination of distinct rows from the output of * its subpath. * * This can represent significantly different plans: either hash-based or * sort-based implementation, or a no-op if the input path can be proven * distinct already. The decision is sufficiently localized that it's not * worth having separate Path node types. (Note: in the no-op case, we could * eliminate the UniquePath node entirely and just return the subpath; but * it's convenient to have a UniquePath in the path tree to signal upper-level * routines that the input is known distinct.) */ typedef enum { UNIQUE_PATH_NOOP, /* input is known unique already */ UNIQUE_PATH_HASH, /* use hashing */ UNIQUE_PATH_SORT /* use sorting */ } UniquePathMethod; typedef struct UniquePath { Path path; Path *subpath; UniquePathMethod umethod; List *in_operators; /* equality operators of the IN clause */ List *uniq_exprs; /* expressions to be made unique */ } UniquePath; /* * GatherPath runs several copies of a plan in parallel and collects the * results. The parallel leader may also execute the plan, unless the * single_copy flag is set. */ typedef struct GatherPath { Path path; Path *subpath; /* path for each worker */ bool single_copy; /* don't execute path more than once */ int num_workers; /* number of workers sought to help */ } GatherPath; /* * GatherMergePath runs several copies of a plan in parallel and collects * the results, preserving their common sort order. */ typedef struct GatherMergePath { Path path; Path *subpath; /* path for each worker */ int num_workers; /* number of workers sought to help */ } GatherMergePath; /* * All join-type paths share these fields. */ typedef struct JoinPath { Path path; JoinType jointype; bool inner_unique; /* each outer tuple provably matches no more * than one inner tuple */ Path *outerjoinpath; /* path for the outer side of the join */ Path *innerjoinpath; /* path for the inner side of the join */ List *joinrestrictinfo; /* RestrictInfos to apply to join */ /* * See the notes for RelOptInfo and ParamPathInfo to understand why * joinrestrictinfo is needed in JoinPath, and can't be merged into the * parent RelOptInfo. */ } JoinPath; /* * A nested-loop path needs no special fields. */ typedef JoinPath NestPath; /* * A mergejoin path has these fields. * * Unlike other path types, a MergePath node doesn't represent just a single * run-time plan node: it can represent up to four. Aside from the MergeJoin * node itself, there can be a Sort node for the outer input, a Sort node * for the inner input, and/or a Material node for the inner input. We could * represent these nodes by separate path nodes, but considering how many * different merge paths are investigated during a complex join problem, * it seems better to avoid unnecessary palloc overhead. * * path_mergeclauses lists the clauses (in the form of RestrictInfos) * that will be used in the merge. * * Note that the mergeclauses are a subset of the parent relation's * restriction-clause list. Any join clauses that are not mergejoinable * appear only in the parent's restrict list, and must be checked by a * qpqual at execution time. * * outersortkeys (resp. innersortkeys) is NIL if the outer path * (resp. inner path) is already ordered appropriately for the * mergejoin. If it is not NIL then it is a PathKeys list describing * the ordering that must be created by an explicit Sort node. * * skip_mark_restore is true if the executor need not do mark/restore calls. * Mark/restore overhead is usually required, but can be skipped if we know * that the executor need find only one match per outer tuple, and that the * mergeclauses are sufficient to identify a match. In such cases the * executor can immediately advance the outer relation after processing a * match, and therefore it need never back up the inner relation. * * materialize_inner is true if a Material node should be placed atop the * inner input. This may appear with or without an inner Sort step. */ typedef struct MergePath { JoinPath jpath; List *path_mergeclauses; /* join clauses to be used for merge */ List *outersortkeys; /* keys for explicit sort, if any */ List *innersortkeys; /* keys for explicit sort, if any */ bool skip_mark_restore; /* can executor skip mark/restore? */ bool materialize_inner; /* add Materialize to inner? */ } MergePath; /* * A hashjoin path has these fields. * * The remarks above for mergeclauses apply for hashclauses as well. * * Hashjoin does not care what order its inputs appear in, so we have * no need for sortkeys. */ typedef struct HashPath { JoinPath jpath; List *path_hashclauses; /* join clauses used for hashing */ int num_batches; /* number of batches expected */ double inner_rows_total; /* total inner rows expected */ } HashPath; /* * ProjectionPath represents a projection (that is, targetlist computation) * * Nominally, this path node represents using a Result plan node to do a * projection step. However, if the input plan node supports projection, * we can just modify its output targetlist to do the required calculations * directly, and not need a Result. In some places in the planner we can just * jam the desired PathTarget into the input path node (and adjust its cost * accordingly), so we don't need a ProjectionPath. But in other places * it's necessary to not modify the input path node, so we need a separate * ProjectionPath node, which is marked dummy to indicate that we intend to * assign the work to the input plan node. The estimated cost for the * ProjectionPath node will account for whether a Result will be used or not. */ typedef struct ProjectionPath { Path path; Path *subpath; /* path representing input source */ bool dummypp; /* true if no separate Result is needed */ } ProjectionPath; /* * ProjectSetPath represents evaluation of a targetlist that includes * set-returning function(s), which will need to be implemented by a * ProjectSet plan node. */ typedef struct ProjectSetPath { Path path; Path *subpath; /* path representing input source */ } ProjectSetPath; /* * SortPath represents an explicit sort step * * The sort keys are, by definition, the same as path.pathkeys. * * Note: the Sort plan node cannot project, so path.pathtarget must be the * same as the input's pathtarget. */ typedef struct SortPath { Path path; Path *subpath; /* path representing input source */ } SortPath; /* * IncrementalSortPath represents an incremental sort step * * This is like a regular sort, except some leading key columns are assumed * to be ordered already. */ typedef struct IncrementalSortPath { SortPath spath; int nPresortedCols; /* number of presorted columns */ } IncrementalSortPath; /* * GroupPath represents grouping (of presorted input) * * groupClause represents the columns to be grouped on; the input path * must be at least that well sorted. * * We can also apply a qual to the grouped rows (equivalent of HAVING) */ typedef struct GroupPath { Path path; Path *subpath; /* path representing input source */ List *groupClause; /* a list of SortGroupClause's */ List *qual; /* quals (HAVING quals), if any */ } GroupPath; /* * UpperUniquePath represents adjacent-duplicate removal (in presorted input) * * The columns to be compared are the first numkeys columns of the path's * pathkeys. The input is presumed already sorted that way. */ typedef struct UpperUniquePath { Path path; Path *subpath; /* path representing input source */ int numkeys; /* number of pathkey columns to compare */ } UpperUniquePath; /* * AggPath represents generic computation of aggregate functions * * This may involve plain grouping (but not grouping sets), using either * sorted or hashed grouping; for the AGG_SORTED case, the input must be * appropriately presorted. */ typedef struct AggPath { Path path; Path *subpath; /* path representing input source */ AggStrategy aggstrategy; /* basic strategy, see nodes.h */ AggSplit aggsplit; /* agg-splitting mode, see nodes.h */ double numGroups; /* estimated number of groups in input */ uint64 transitionSpace; /* for pass-by-ref transition data */ List *groupClause; /* a list of SortGroupClause's */ List *qual; /* quals (HAVING quals), if any */ } AggPath; /* * Various annotations used for grouping sets in the planner. */ typedef struct GroupingSetData { NodeTag type; List *set; /* grouping set as list of sortgrouprefs */ double numGroups; /* est. number of result groups */ } GroupingSetData; typedef struct RollupData { NodeTag type; List *groupClause; /* applicable subset of parse->groupClause */ List *gsets; /* lists of integer indexes into groupClause */ List *gsets_data; /* list of GroupingSetData */ double numGroups; /* est. number of result groups */ bool hashable; /* can be hashed */ bool is_hashed; /* to be implemented as a hashagg */ } RollupData; /* * GroupingSetsPath represents a GROUPING SETS aggregation */ typedef struct GroupingSetsPath { Path path; Path *subpath; /* path representing input source */ AggStrategy aggstrategy; /* basic strategy */ List *rollups; /* list of RollupData */ List *qual; /* quals (HAVING quals), if any */ uint64 transitionSpace; /* for pass-by-ref transition data */ } GroupingSetsPath; /* * MinMaxAggPath represents computation of MIN/MAX aggregates from indexes */ typedef struct MinMaxAggPath { Path path; List *mmaggregates; /* list of MinMaxAggInfo */ List *quals; /* HAVING quals, if any */ } MinMaxAggPath; /* * WindowAggPath represents generic computation of window functions */ typedef struct WindowAggPath { Path path; Path *subpath; /* path representing input source */ WindowClause *winclause; /* WindowClause we'll be using */ } WindowAggPath; /* * SetOpPath represents a set-operation, that is INTERSECT or EXCEPT */ typedef struct SetOpPath { Path path; Path *subpath; /* path representing input source */ SetOpCmd cmd; /* what to do, see nodes.h */ SetOpStrategy strategy; /* how to do it, see nodes.h */ List *distinctList; /* SortGroupClauses identifying target cols */ AttrNumber flagColIdx; /* where is the flag column, if any */ int firstFlag; /* flag value for first input relation */ double numGroups; /* estimated number of groups in input */ } SetOpPath; /* * RecursiveUnionPath represents a recursive UNION node */ typedef struct RecursiveUnionPath { Path path; Path *leftpath; /* paths representing input sources */ Path *rightpath; List *distinctList; /* SortGroupClauses identifying target cols */ int wtParam; /* ID of Param representing work table */ double numGroups; /* estimated number of groups in input */ } RecursiveUnionPath; /* * LockRowsPath represents acquiring row locks for SELECT FOR UPDATE/SHARE */ typedef struct LockRowsPath { Path path; Path *subpath; /* path representing input source */ List *rowMarks; /* a list of PlanRowMark's */ int epqParam; /* ID of Param for EvalPlanQual re-eval */ } LockRowsPath; /* * ModifyTablePath represents performing INSERT/UPDATE/DELETE modifications * * We represent most things that will be in the ModifyTable plan node * literally, except we have child Path(s) not Plan(s). But analysis of the * OnConflictExpr is deferred to createplan.c, as is collection of FDW data. */ typedef struct ModifyTablePath { Path path; CmdType operation; /* INSERT, UPDATE, or DELETE */ bool canSetTag; /* do we set the command tag/es_processed? */ Index nominalRelation; /* Parent RT index for use of EXPLAIN */ Index rootRelation; /* Root RT index, if target is partitioned */ bool partColsUpdated; /* some part key in hierarchy updated */ List *resultRelations; /* integer list of RT indexes */ List *subpaths; /* Path(s) producing source data */ List *subroots; /* per-target-table PlannerInfos */ List *withCheckOptionLists; /* per-target-table WCO lists */ List *returningLists; /* per-target-table RETURNING tlists */ List *rowMarks; /* PlanRowMarks (non-locking only) */ OnConflictExpr *onconflict; /* ON CONFLICT clause, or NULL */ int epqParam; /* ID of Param for EvalPlanQual re-eval */ } ModifyTablePath; /* * LimitPath represents applying LIMIT/OFFSET restrictions */ typedef struct LimitPath { Path path; Path *subpath; /* path representing input source */ Node *limitOffset; /* OFFSET parameter, or NULL if none */ Node *limitCount; /* COUNT parameter, or NULL if none */ LimitOption limitOption; /* FETCH FIRST with ties or exact number */ } LimitPath; /* * Restriction clause info. * * We create one of these for each AND sub-clause of a restriction condition * (WHERE or JOIN/ON clause). Since the restriction clauses are logically * ANDed, we can use any one of them or any subset of them to filter out * tuples, without having to evaluate the rest. The RestrictInfo node itself * stores data used by the optimizer while choosing the best query plan. * * If a restriction clause references a single base relation, it will appear * in the baserestrictinfo list of the RelOptInfo for that base rel. * * If a restriction clause references more than one base rel, it will * appear in the joininfo list of every RelOptInfo that describes a strict * subset of the base rels mentioned in the clause. The joininfo lists are * used to drive join tree building by selecting plausible join candidates. * The clause cannot actually be applied until we have built a join rel * containing all the base rels it references, however. * * When we construct a join rel that includes all the base rels referenced * in a multi-relation restriction clause, we place that clause into the * joinrestrictinfo lists of paths for the join rel, if neither left nor * right sub-path includes all base rels referenced in the clause. The clause * will be applied at that join level, and will not propagate any further up * the join tree. (Note: the "predicate migration" code was once intended to * push restriction clauses up and down the plan tree based on evaluation * costs, but it's dead code and is unlikely to be resurrected in the * foreseeable future.) * * Note that in the presence of more than two rels, a multi-rel restriction * might reach different heights in the join tree depending on the join * sequence we use. So, these clauses cannot be associated directly with * the join RelOptInfo, but must be kept track of on a per-join-path basis. * * RestrictInfos that represent equivalence conditions (i.e., mergejoinable * equalities that are not outerjoin-delayed) are handled a bit differently. * Initially we attach them to the EquivalenceClasses that are derived from * them. When we construct a scan or join path, we look through all the * EquivalenceClasses and generate derived RestrictInfos representing the * minimal set of conditions that need to be checked for this particular scan * or join to enforce that all members of each EquivalenceClass are in fact * equal in all rows emitted by the scan or join. * * When dealing with outer joins we have to be very careful about pushing qual * clauses up and down the tree. An outer join's own JOIN/ON conditions must * be evaluated exactly at that join node, unless they are "degenerate" * conditions that reference only Vars from the nullable side of the join. * Quals appearing in WHERE or in a JOIN above the outer join cannot be pushed * down below the outer join, if they reference any nullable Vars. * RestrictInfo nodes contain a flag to indicate whether a qual has been * pushed down to a lower level than its original syntactic placement in the * join tree would suggest. If an outer join prevents us from pushing a qual * down to its "natural" semantic level (the level associated with just the * base rels used in the qual) then we mark the qual with a "required_relids" * value including more than just the base rels it actually uses. By * pretending that the qual references all the rels required to form the outer * join, we prevent it from being evaluated below the outer join's joinrel. * When we do form the outer join's joinrel, we still need to distinguish * those quals that are actually in that join's JOIN/ON condition from those * that appeared elsewhere in the tree and were pushed down to the join rel * because they used no other rels. That's what the is_pushed_down flag is * for; it tells us that a qual is not an OUTER JOIN qual for the set of base * rels listed in required_relids. A clause that originally came from WHERE * or an INNER JOIN condition will *always* have its is_pushed_down flag set. * It's possible for an OUTER JOIN clause to be marked is_pushed_down too, * if we decide that it can be pushed down into the nullable side of the join. * In that case it acts as a plain filter qual for wherever it gets evaluated. * (In short, is_pushed_down is only false for non-degenerate outer join * conditions. Possibly we should rename it to reflect that meaning? But * see also the comments for RINFO_IS_PUSHED_DOWN, below.) * * RestrictInfo nodes also contain an outerjoin_delayed flag, which is true * if the clause's applicability must be delayed due to any outer joins * appearing below it (ie, it has to be postponed to some join level higher * than the set of relations it actually references). * * There is also an outer_relids field, which is NULL except for outer join * clauses; for those, it is the set of relids on the outer side of the * clause's outer join. (These are rels that the clause cannot be applied to * in parameterized scans, since pushing it into the join's outer side would * lead to wrong answers.) * * There is also a nullable_relids field, which is the set of rels the clause * references that can be forced null by some outer join below the clause. * * outerjoin_delayed = true is subtly different from nullable_relids != NULL: * a clause might reference some nullable rels and yet not be * outerjoin_delayed because it also references all the other rels of the * outer join(s). A clause that is not outerjoin_delayed can be enforced * anywhere it is computable. * * To handle security-barrier conditions efficiently, we mark RestrictInfo * nodes with a security_level field, in which higher values identify clauses * coming from less-trusted sources. The exact semantics are that a clause * cannot be evaluated before another clause with a lower security_level value * unless the first clause is leakproof. As with outer-join clauses, this * creates a reason for clauses to sometimes need to be evaluated higher in * the join tree than their contents would suggest; and even at a single plan * node, this rule constrains the order of application of clauses. * * In general, the referenced clause might be arbitrarily complex. The * kinds of clauses we can handle as indexscan quals, mergejoin clauses, * or hashjoin clauses are limited (e.g., no volatile functions). The code * for each kind of path is responsible for identifying the restrict clauses * it can use and ignoring the rest. Clauses not implemented by an indexscan, * mergejoin, or hashjoin will be placed in the plan qual or joinqual field * of the finished Plan node, where they will be enforced by general-purpose * qual-expression-evaluation code. (But we are still entitled to count * their selectivity when estimating the result tuple count, if we * can guess what it is...) * * When the referenced clause is an OR clause, we generate a modified copy * in which additional RestrictInfo nodes are inserted below the top-level * OR/AND structure. This is a convenience for OR indexscan processing: * indexquals taken from either the top level or an OR subclause will have * associated RestrictInfo nodes. * * The can_join flag is set true if the clause looks potentially useful as * a merge or hash join clause, that is if it is a binary opclause with * nonoverlapping sets of relids referenced in the left and right sides. * (Whether the operator is actually merge or hash joinable isn't checked, * however.) * * The pseudoconstant flag is set true if the clause contains no Vars of * the current query level and no volatile functions. Such a clause can be * pulled out and used as a one-time qual in a gating Result node. We keep * pseudoconstant clauses in the same lists as other RestrictInfos so that * the regular clause-pushing machinery can assign them to the correct join * level, but they need to be treated specially for cost and selectivity * estimates. Note that a pseudoconstant clause can never be an indexqual * or merge or hash join clause, so it's of no interest to large parts of * the planner. * * When join clauses are generated from EquivalenceClasses, there may be * several equally valid ways to enforce join equivalence, of which we need * apply only one. We mark clauses of this kind by setting parent_ec to * point to the generating EquivalenceClass. Multiple clauses with the same * parent_ec in the same join are redundant. */ typedef struct RestrictInfo { NodeTag type; Expr *clause; /* the represented clause of WHERE or JOIN */ bool is_pushed_down; /* true if clause was pushed down in level */ bool outerjoin_delayed; /* true if delayed by lower outer join */ bool can_join; /* see comment above */ bool pseudoconstant; /* see comment above */ bool leakproof; /* true if known to contain no leaked Vars */ Index security_level; /* see comment above */ /* The set of relids (varnos) actually referenced in the clause: */ Relids clause_relids; /* The set of relids required to evaluate the clause: */ Relids required_relids; /* If an outer-join clause, the outer-side relations, else NULL: */ Relids outer_relids; /* The relids used in the clause that are nullable by lower outer joins: */ Relids nullable_relids; /* These fields are set for any binary opclause: */ Relids left_relids; /* relids in left side of clause */ Relids right_relids; /* relids in right side of clause */ /* This field is NULL unless clause is an OR clause: */ Expr *orclause; /* modified clause with RestrictInfos */ /* This field is NULL unless clause is potentially redundant: */ EquivalenceClass *parent_ec; /* generating EquivalenceClass */ /* cache space for cost and selectivity */ QualCost eval_cost; /* eval cost of clause; -1 if not yet set */ Selectivity norm_selec; /* selectivity for "normal" (JOIN_INNER) * semantics; -1 if not yet set; >1 means a * redundant clause */ Selectivity outer_selec; /* selectivity for outer join semantics; -1 if * not yet set */ /* valid if clause is mergejoinable, else NIL */ List *mergeopfamilies; /* opfamilies containing clause operator */ /* cache space for mergeclause processing; NULL if not yet set */ EquivalenceClass *left_ec; /* EquivalenceClass containing lefthand */ EquivalenceClass *right_ec; /* EquivalenceClass containing righthand */ EquivalenceMember *left_em; /* EquivalenceMember for lefthand */ EquivalenceMember *right_em; /* EquivalenceMember for righthand */ List *scansel_cache; /* list of MergeScanSelCache structs */ /* transient workspace for use while considering a specific join path */ bool outer_is_left; /* T = outer var on left, F = on right */ /* valid if clause is hashjoinable, else InvalidOid: */ Oid hashjoinoperator; /* copy of clause operator */ /* cache space for hashclause processing; -1 if not yet set */ Selectivity left_bucketsize; /* avg bucketsize of left side */ Selectivity right_bucketsize; /* avg bucketsize of right side */ Selectivity left_mcvfreq; /* left side's most common val's freq */ Selectivity right_mcvfreq; /* right side's most common val's freq */ } RestrictInfo; /* * This macro embodies the correct way to test whether a RestrictInfo is * "pushed down" to a given outer join, that is, should be treated as a filter * clause rather than a join clause at that outer join. This is certainly so * if is_pushed_down is true; but examining that is not sufficient anymore, * because outer-join clauses will get pushed down to lower outer joins when * we generate a path for the lower outer join that is parameterized by the * LHS of the upper one. We can detect such a clause by noting that its * required_relids exceed the scope of the join. */ #define RINFO_IS_PUSHED_DOWN(rinfo, joinrelids) \ ((rinfo)->is_pushed_down || \ !bms_is_subset((rinfo)->required_relids, joinrelids)) /* * Since mergejoinscansel() is a relatively expensive function, and would * otherwise be invoked many times while planning a large join tree, * we go out of our way to cache its results. Each mergejoinable * RestrictInfo carries a list of the specific sort orderings that have * been considered for use with it, and the resulting selectivities. */ typedef struct MergeScanSelCache { /* Ordering details (cache lookup key) */ Oid opfamily; /* btree opfamily defining the ordering */ Oid collation; /* collation for the ordering */ int strategy; /* sort direction (ASC or DESC) */ bool nulls_first; /* do NULLs come before normal values? */ /* Results */ Selectivity leftstartsel; /* first-join fraction for clause left side */ Selectivity leftendsel; /* last-join fraction for clause left side */ Selectivity rightstartsel; /* first-join fraction for clause right side */ Selectivity rightendsel; /* last-join fraction for clause right side */ } MergeScanSelCache; /* * Placeholder node for an expression to be evaluated below the top level * of a plan tree. This is used during planning to represent the contained * expression. At the end of the planning process it is replaced by either * the contained expression or a Var referring to a lower-level evaluation of * the contained expression. Typically the evaluation occurs below an outer * join, and Var references above the outer join might thereby yield NULL * instead of the expression value. * * Although the planner treats this as an expression node type, it is not * recognized by the parser or executor, so we declare it here rather than * in primnodes.h. */ typedef struct PlaceHolderVar { Expr xpr; Expr *phexpr; /* the represented expression */ Relids phrels; /* base relids syntactically within expr src */ Index phid; /* ID for PHV (unique within planner run) */ Index phlevelsup; /* > 0 if PHV belongs to outer query */ } PlaceHolderVar; /* * "Special join" info. * * One-sided outer joins constrain the order of joining partially but not * completely. We flatten such joins into the planner's top-level list of * relations to join, but record information about each outer join in a * SpecialJoinInfo struct. These structs are kept in the PlannerInfo node's * join_info_list. * * Similarly, semijoins and antijoins created by flattening IN (subselect) * and EXISTS(subselect) clauses create partial constraints on join order. * These are likewise recorded in SpecialJoinInfo structs. * * We make SpecialJoinInfos for FULL JOINs even though there is no flexibility * of planning for them, because this simplifies make_join_rel()'s API. * * min_lefthand and min_righthand are the sets of base relids that must be * available on each side when performing the special join. lhs_strict is * true if the special join's condition cannot succeed when the LHS variables * are all NULL (this means that an outer join can commute with upper-level * outer joins even if it appears in their RHS). We don't bother to set * lhs_strict for FULL JOINs, however. * * It is not valid for either min_lefthand or min_righthand to be empty sets; * if they were, this would break the logic that enforces join order. * * syn_lefthand and syn_righthand are the sets of base relids that are * syntactically below this special join. (These are needed to help compute * min_lefthand and min_righthand for higher joins.) * * delay_upper_joins is set true if we detect a pushed-down clause that has * to be evaluated after this join is formed (because it references the RHS). * Any outer joins that have such a clause and this join in their RHS cannot * commute with this join, because that would leave noplace to check the * pushed-down clause. (We don't track this for FULL JOINs, either.) * * For a semijoin, we also extract the join operators and their RHS arguments * and set semi_operators, semi_rhs_exprs, semi_can_btree, and semi_can_hash. * This is done in support of possibly unique-ifying the RHS, so we don't * bother unless at least one of semi_can_btree and semi_can_hash can be set * true. (You might expect that this information would be computed during * join planning; but it's helpful to have it available during planning of * parameterized table scans, so we store it in the SpecialJoinInfo structs.) * * jointype is never JOIN_RIGHT; a RIGHT JOIN is handled by switching * the inputs to make it a LEFT JOIN. So the allowed values of jointype * in a join_info_list member are only LEFT, FULL, SEMI, or ANTI. * * For purposes of join selectivity estimation, we create transient * SpecialJoinInfo structures for regular inner joins; so it is possible * to have jointype == JOIN_INNER in such a structure, even though this is * not allowed within join_info_list. We also create transient * SpecialJoinInfos with jointype == JOIN_INNER for outer joins, since for * cost estimation purposes it is sometimes useful to know the join size under * plain innerjoin semantics. Note that lhs_strict, delay_upper_joins, and * of course the semi_xxx fields are not set meaningfully within such structs. */ #ifndef HAVE_SPECIALJOININFO_TYPEDEF typedef struct SpecialJoinInfo SpecialJoinInfo; #define HAVE_SPECIALJOININFO_TYPEDEF 1 #endif struct SpecialJoinInfo { NodeTag type; Relids min_lefthand; /* base relids in minimum LHS for join */ Relids min_righthand; /* base relids in minimum RHS for join */ Relids syn_lefthand; /* base relids syntactically within LHS */ Relids syn_righthand; /* base relids syntactically within RHS */ JoinType jointype; /* always INNER, LEFT, FULL, SEMI, or ANTI */ bool lhs_strict; /* joinclause is strict for some LHS rel */ bool delay_upper_joins; /* can't commute with upper RHS */ /* Remaining fields are set only for JOIN_SEMI jointype: */ bool semi_can_btree; /* true if semi_operators are all btree */ bool semi_can_hash; /* true if semi_operators are all hash */ List *semi_operators; /* OIDs of equality join operators */ List *semi_rhs_exprs; /* righthand-side expressions of these ops */ }; /* * Append-relation info. * * When we expand an inheritable table or a UNION-ALL subselect into an * "append relation" (essentially, a list of child RTEs), we build an * AppendRelInfo for each child RTE. The list of AppendRelInfos indicates * which child RTEs must be included when expanding the parent, and each node * carries information needed to translate between columns of the parent and * columns of the child. * * These structs are kept in the PlannerInfo node's append_rel_list, with * append_rel_array[] providing a convenient lookup method for the struct * associated with a particular child relid (there can be only one, though * parent rels may have many entries in append_rel_list). * * Note: after completion of the planner prep phase, any given RTE is an * append parent having entries in append_rel_list if and only if its * "inh" flag is set. We clear "inh" for plain tables that turn out not * to have inheritance children, and (in an abuse of the original meaning * of the flag) we set "inh" for subquery RTEs that turn out to be * flattenable UNION ALL queries. This lets us avoid useless searches * of append_rel_list. * * Note: the data structure assumes that append-rel members are single * baserels. This is OK for inheritance, but it prevents us from pulling * up a UNION ALL member subquery if it contains a join. While that could * be fixed with a more complex data structure, at present there's not much * point because no improvement in the plan could result. */ typedef struct AppendRelInfo { NodeTag type; /* * These fields uniquely identify this append relationship. There can be * (in fact, always should be) multiple AppendRelInfos for the same * parent_relid, but never more than one per child_relid, since a given * RTE cannot be a child of more than one append parent. */ Index parent_relid; /* RT index of append parent rel */ Index child_relid; /* RT index of append child rel */ /* * For an inheritance appendrel, the parent and child are both regular * relations, and we store their rowtype OIDs here for use in translating * whole-row Vars. For a UNION-ALL appendrel, the parent and child are * both subqueries with no named rowtype, and we store InvalidOid here. */ Oid parent_reltype; /* OID of parent's composite type */ Oid child_reltype; /* OID of child's composite type */ /* * The N'th element of this list is a Var or expression representing the * child column corresponding to the N'th column of the parent. This is * used to translate Vars referencing the parent rel into references to * the child. A list element is NULL if it corresponds to a dropped * column of the parent (this is only possible for inheritance cases, not * UNION ALL). The list elements are always simple Vars for inheritance * cases, but can be arbitrary expressions in UNION ALL cases. * * Notice we only store entries for user columns (attno > 0). Whole-row * Vars are special-cased, and system columns (attno < 0) need no special * translation since their attnos are the same for all tables. * * Caution: the Vars have varlevelsup = 0. Be careful to adjust as needed * when copying into a subquery. */ List *translated_vars; /* Expressions in the child's Vars */ /* * This array simplifies translations in the reverse direction, from * child's column numbers to parent's. The entry at [ccolno - 1] is the * 1-based parent column number for child column ccolno, or zero if that * child column is dropped or doesn't exist in the parent. */ int num_child_cols; /* length of array */ AttrNumber *parent_colnos; /* array of parent attnos, or zeroes */ /* * We store the parent table's OID here for inheritance, or InvalidOid for * UNION ALL. This is only needed to help in generating error messages if * an attempt is made to reference a dropped parent column. */ Oid parent_reloid; /* OID of parent relation */ } AppendRelInfo; /* * For each distinct placeholder expression generated during planning, we * store a PlaceHolderInfo node in the PlannerInfo node's placeholder_list. * This stores info that is needed centrally rather than in each copy of the * PlaceHolderVar. The phid fields identify which PlaceHolderInfo goes with * each PlaceHolderVar. Note that phid is unique throughout a planner run, * not just within a query level --- this is so that we need not reassign ID's * when pulling a subquery into its parent. * * The idea is to evaluate the expression at (only) the ph_eval_at join level, * then allow it to bubble up like a Var until the ph_needed join level. * ph_needed has the same definition as attr_needed for a regular Var. * * The PlaceHolderVar's expression might contain LATERAL references to vars * coming from outside its syntactic scope. If so, those rels are *not* * included in ph_eval_at, but they are recorded in ph_lateral. * * Notice that when ph_eval_at is a join rather than a single baserel, the * PlaceHolderInfo may create constraints on join order: the ph_eval_at join * has to be formed below any outer joins that should null the PlaceHolderVar. * * We create a PlaceHolderInfo only after determining that the PlaceHolderVar * is actually referenced in the plan tree, so that unreferenced placeholders * don't result in unnecessary constraints on join order. */ typedef struct PlaceHolderInfo { NodeTag type; Index phid; /* ID for PH (unique within planner run) */ PlaceHolderVar *ph_var; /* copy of PlaceHolderVar tree */ Relids ph_eval_at; /* lowest level we can evaluate value at */ Relids ph_lateral; /* relids of contained lateral refs, if any */ Relids ph_needed; /* highest level the value is needed at */ int32 ph_width; /* estimated attribute width */ } PlaceHolderInfo; /* * This struct describes one potentially index-optimizable MIN/MAX aggregate * function. MinMaxAggPath contains a list of these, and if we accept that * path, the list is stored into root->minmax_aggs for use during setrefs.c. */ typedef struct MinMaxAggInfo { NodeTag type; Oid aggfnoid; /* pg_proc Oid of the aggregate */ Oid aggsortop; /* Oid of its sort operator */ Expr *target; /* expression we are aggregating on */ PlannerInfo *subroot; /* modified "root" for planning the subquery */ Path *path; /* access path for subquery */ Cost pathcost; /* estimated cost to fetch first row */ Param *param; /* param for subplan's output */ } MinMaxAggInfo; /* * At runtime, PARAM_EXEC slots are used to pass values around from one plan * node to another. They can be used to pass values down into subqueries (for * outer references in subqueries), or up out of subqueries (for the results * of a subplan), or from a NestLoop plan node into its inner relation (when * the inner scan is parameterized with values from the outer relation). * The planner is responsible for assigning nonconflicting PARAM_EXEC IDs to * the PARAM_EXEC Params it generates. * * Outer references are managed via root->plan_params, which is a list of * PlannerParamItems. While planning a subquery, each parent query level's * plan_params contains the values required from it by the current subquery. * During create_plan(), we use plan_params to track values that must be * passed from outer to inner sides of NestLoop plan nodes. * * The item a PlannerParamItem represents can be one of three kinds: * * A Var: the slot represents a variable of this level that must be passed * down because subqueries have outer references to it, or must be passed * from a NestLoop node to its inner scan. The varlevelsup value in the Var * will always be zero. * * A PlaceHolderVar: this works much like the Var case, except that the * entry is a PlaceHolderVar node with a contained expression. The PHV * will have phlevelsup = 0, and the contained expression is adjusted * to match in level. * * An Aggref (with an expression tree representing its argument): the slot * represents an aggregate expression that is an outer reference for some * subquery. The Aggref itself has agglevelsup = 0, and its argument tree * is adjusted to match in level. * * Note: we detect duplicate Var and PlaceHolderVar parameters and coalesce * them into one slot, but we do not bother to do that for Aggrefs. * The scope of duplicate-elimination only extends across the set of * parameters passed from one query level into a single subquery, or for * nestloop parameters across the set of nestloop parameters used in a single * query level. So there is no possibility of a PARAM_EXEC slot being used * for conflicting purposes. * * In addition, PARAM_EXEC slots are assigned for Params representing outputs * from subplans (values that are setParam items for those subplans). These * IDs need not be tracked via PlannerParamItems, since we do not need any * duplicate-elimination nor later processing of the represented expressions. * Instead, we just record the assignment of the slot number by appending to * root->glob->paramExecTypes. */ typedef struct PlannerParamItem { NodeTag type; Node *item; /* the Var, PlaceHolderVar, or Aggref */ int paramId; /* its assigned PARAM_EXEC slot number */ } PlannerParamItem; /* * When making cost estimates for a SEMI/ANTI/inner_unique join, there are * some correction factors that are needed in both nestloop and hash joins * to account for the fact that the executor can stop scanning inner rows * as soon as it finds a match to the current outer row. These numbers * depend only on the selected outer and inner join relations, not on the * particular paths used for them, so it's worthwhile to calculate them * just once per relation pair not once per considered path. This struct * is filled by compute_semi_anti_join_factors and must be passed along * to the join cost estimation functions. * * outer_match_frac is the fraction of the outer tuples that are * expected to have at least one match. * match_count is the average number of matches expected for * outer tuples that have at least one match. */ typedef struct SemiAntiJoinFactors { Selectivity outer_match_frac; Selectivity match_count; } SemiAntiJoinFactors; /* * Struct for extra information passed to subroutines of add_paths_to_joinrel * * restrictlist contains all of the RestrictInfo nodes for restriction * clauses that apply to this join * mergeclause_list is a list of RestrictInfo nodes for available * mergejoin clauses in this join * inner_unique is true if each outer tuple provably matches no more * than one inner tuple * sjinfo is extra info about special joins for selectivity estimation * semifactors is as shown above (only valid for SEMI/ANTI/inner_unique joins) * param_source_rels are OK targets for parameterization of result paths */ typedef struct JoinPathExtraData { List *restrictlist; List *mergeclause_list; bool inner_unique; SpecialJoinInfo *sjinfo; SemiAntiJoinFactors semifactors; Relids param_source_rels; } JoinPathExtraData; /* * Various flags indicating what kinds of grouping are possible. * * GROUPING_CAN_USE_SORT should be set if it's possible to perform * sort-based implementations of grouping. When grouping sets are in use, * this will be true if sorting is potentially usable for any of the grouping * sets, even if it's not usable for all of them. * * GROUPING_CAN_USE_HASH should be set if it's possible to perform * hash-based implementations of grouping. * * GROUPING_CAN_PARTIAL_AGG should be set if the aggregation is of a type * for which we support partial aggregation (not, for example, grouping sets). * It says nothing about parallel-safety or the availability of suitable paths. */ #define GROUPING_CAN_USE_SORT 0x0001 #define GROUPING_CAN_USE_HASH 0x0002 #define GROUPING_CAN_PARTIAL_AGG 0x0004 /* * What kind of partitionwise aggregation is in use? * * PARTITIONWISE_AGGREGATE_NONE: Not used. * * PARTITIONWISE_AGGREGATE_FULL: Aggregate each partition separately, and * append the results. * * PARTITIONWISE_AGGREGATE_PARTIAL: Partially aggregate each partition * separately, append the results, and then finalize aggregation. */ typedef enum { PARTITIONWISE_AGGREGATE_NONE, PARTITIONWISE_AGGREGATE_FULL, PARTITIONWISE_AGGREGATE_PARTIAL } PartitionwiseAggregateType; /* * Struct for extra information passed to subroutines of create_grouping_paths * * flags indicating what kinds of grouping are possible. * partial_costs_set is true if the agg_partial_costs and agg_final_costs * have been initialized. * agg_partial_costs gives partial aggregation costs. * agg_final_costs gives finalization costs. * target_parallel_safe is true if target is parallel safe. * havingQual gives list of quals to be applied after aggregation. * targetList gives list of columns to be projected. * patype is the type of partitionwise aggregation that is being performed. */ typedef struct { /* Data which remains constant once set. */ int flags; bool partial_costs_set; AggClauseCosts agg_partial_costs; AggClauseCosts agg_final_costs; /* Data which may differ across partitions. */ bool target_parallel_safe; Node *havingQual; List *targetList; PartitionwiseAggregateType patype; } GroupPathExtraData; /* * Struct for extra information passed to subroutines of grouping_planner * * limit_needed is true if we actually need a Limit plan node. * limit_tuples is an estimated bound on the number of output tuples, * or -1 if no LIMIT or couldn't estimate. * count_est and offset_est are the estimated values of the LIMIT and OFFSET * expressions computed by preprocess_limit() (see comments for * preprocess_limit() for more information). */ typedef struct { bool limit_needed; double limit_tuples; int64 count_est; int64 offset_est; } FinalPathExtraData; /* * For speed reasons, cost estimation for join paths is performed in two * phases: the first phase tries to quickly derive a lower bound for the * join cost, and then we check if that's sufficient to reject the path. * If not, we come back for a more refined cost estimate. The first phase * fills a JoinCostWorkspace struct with its preliminary cost estimates * and possibly additional intermediate values. The second phase takes * these values as inputs to avoid repeating work. * * (Ideally we'd declare this in cost.h, but it's also needed in pathnode.h, * so seems best to put it here.) */ typedef struct JoinCostWorkspace { /* Preliminary cost estimates --- must not be larger than final ones! */ Cost startup_cost; /* cost expended before fetching any tuples */ Cost total_cost; /* total cost (assuming all tuples fetched) */ /* Fields below here should be treated as private to costsize.c */ Cost run_cost; /* non-startup cost components */ /* private for cost_nestloop code */ Cost inner_run_cost; /* also used by cost_mergejoin code */ Cost inner_rescan_run_cost; /* private for cost_mergejoin code */ double outer_rows; double inner_rows; double outer_skip_rows; double inner_skip_rows; /* private for cost_hashjoin code */ int numbuckets; int numbatches; double inner_rows_total; } JoinCostWorkspace; #endif /* PATHNODES_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/pg_list.h000066400000000000000000000504161413137616400232730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_list.h * interface for PostgreSQL generic list package * * Once upon a time, parts of Postgres were written in Lisp and used real * cons-cell lists for major data structures. When that code was rewritten * in C, we initially had a faithful emulation of cons-cell lists, which * unsurprisingly was a performance bottleneck. A couple of major rewrites * later, these data structures are actually simple expansible arrays; * but the "List" name and a lot of the notation survives. * * One important concession to the original implementation is that an empty * list is always represented by a null pointer (preferentially written NIL). * Non-empty lists have a header, which will not be relocated as long as the * list remains non-empty, and an expansible data array. * * We support three types of lists: * * T_List: lists of pointers * (in practice usually pointers to Nodes, but not always; * declared as "void *" to minimize casting annoyances) * T_IntList: lists of integers * T_OidList: lists of Oids * * (At the moment, ints and Oids are the same size, but they may not * always be so; try to be careful to maintain the distinction.) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/pg_list.h * *------------------------------------------------------------------------- */ #ifndef PG_LIST_H #define PG_LIST_H #include "nodes/nodes.h" typedef union ListCell { void *ptr_value; int int_value; Oid oid_value; } ListCell; typedef struct List { NodeTag type; /* T_List, T_IntList, or T_OidList */ int length; /* number of elements currently present */ int max_length; /* allocated length of elements[] */ ListCell *elements; /* re-allocatable array of cells */ /* We may allocate some cells along with the List header: */ ListCell initial_elements[FLEXIBLE_ARRAY_MEMBER]; /* If elements == initial_elements, it's not a separate allocation */ } List; /* * The *only* valid representation of an empty list is NIL; in other * words, a non-NIL list is guaranteed to have length >= 1. */ #define NIL ((List *) NULL) /* * State structs for various looping macros below. */ typedef struct ForEachState { const List *l; /* list we're looping through */ int i; /* current element index */ } ForEachState; typedef struct ForBothState { const List *l1; /* lists we're looping through */ const List *l2; int i; /* common element index */ } ForBothState; typedef struct ForBothCellState { const List *l1; /* lists we're looping through */ const List *l2; int i1; /* current element indexes */ int i2; } ForBothCellState; typedef struct ForThreeState { const List *l1; /* lists we're looping through */ const List *l2; const List *l3; int i; /* common element index */ } ForThreeState; typedef struct ForFourState { const List *l1; /* lists we're looping through */ const List *l2; const List *l3; const List *l4; int i; /* common element index */ } ForFourState; typedef struct ForFiveState { const List *l1; /* lists we're looping through */ const List *l2; const List *l3; const List *l4; const List *l5; int i; /* common element index */ } ForFiveState; /* * These routines are small enough, and used often enough, to justify being * inline. */ /* Fetch address of list's first cell; NULL if empty list */ static inline ListCell * list_head(const List *l) { return l ? &l->elements[0] : NULL; } /* Fetch address of list's last cell; NULL if empty list */ static inline ListCell * list_tail(const List *l) { return l ? &l->elements[l->length - 1] : NULL; } /* Fetch address of list's second cell, if it has one, else NULL */ static inline ListCell * list_second_cell(const List *l) { if (l && l->length >= 2) return &l->elements[1]; else return NULL; } /* Fetch address of list's third cell, if it has one, else NULL */ static inline ListCell * list_third_cell(const List *l) { if (l && l->length >= 3) return &l->elements[2]; else return NULL; } /* Fetch address of list's fourth cell, if it has one, else NULL */ static inline ListCell * list_fourth_cell(const List *l) { if (l && l->length >= 4) return &l->elements[3]; else return NULL; } /* Fetch list's length */ static inline int list_length(const List *l) { return l ? l->length : 0; } /* * Macros to access the data values within List cells. * * Note that with the exception of the "xxx_node" macros, these are * lvalues and can be assigned to. * * NB: There is an unfortunate legacy from a previous incarnation of * the List API: the macro lfirst() was used to mean "the data in this * cons cell". To avoid changing every usage of lfirst(), that meaning * has been kept. As a result, lfirst() takes a ListCell and returns * the data it contains; to get the data in the first cell of a * List, use linitial(). Worse, lsecond() is more closely related to * linitial() than lfirst(): given a List, lsecond() returns the data * in the second list cell. */ #define lfirst(lc) ((lc)->ptr_value) #define lfirst_int(lc) ((lc)->int_value) #define lfirst_oid(lc) ((lc)->oid_value) #define lfirst_node(type,lc) castNode(type, lfirst(lc)) #define linitial(l) lfirst(list_head(l)) #define linitial_int(l) lfirst_int(list_head(l)) #define linitial_oid(l) lfirst_oid(list_head(l)) #define linitial_node(type,l) castNode(type, linitial(l)) #define lsecond(l) lfirst(list_second_cell(l)) #define lsecond_int(l) lfirst_int(list_second_cell(l)) #define lsecond_oid(l) lfirst_oid(list_second_cell(l)) #define lsecond_node(type,l) castNode(type, lsecond(l)) #define lthird(l) lfirst(list_third_cell(l)) #define lthird_int(l) lfirst_int(list_third_cell(l)) #define lthird_oid(l) lfirst_oid(list_third_cell(l)) #define lthird_node(type,l) castNode(type, lthird(l)) #define lfourth(l) lfirst(list_fourth_cell(l)) #define lfourth_int(l) lfirst_int(list_fourth_cell(l)) #define lfourth_oid(l) lfirst_oid(list_fourth_cell(l)) #define lfourth_node(type,l) castNode(type, lfourth(l)) #define llast(l) lfirst(list_tail(l)) #define llast_int(l) lfirst_int(list_tail(l)) #define llast_oid(l) lfirst_oid(list_tail(l)) #define llast_node(type,l) castNode(type, llast(l)) /* * Convenience macros for building fixed-length lists */ #define list_make_ptr_cell(v) ((ListCell) {.ptr_value = (v)}) #define list_make_int_cell(v) ((ListCell) {.int_value = (v)}) #define list_make_oid_cell(v) ((ListCell) {.oid_value = (v)}) #define list_make1(x1) \ list_make1_impl(T_List, list_make_ptr_cell(x1)) #define list_make2(x1,x2) \ list_make2_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2)) #define list_make3(x1,x2,x3) \ list_make3_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2), \ list_make_ptr_cell(x3)) #define list_make4(x1,x2,x3,x4) \ list_make4_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2), \ list_make_ptr_cell(x3), list_make_ptr_cell(x4)) #define list_make1_int(x1) \ list_make1_impl(T_IntList, list_make_int_cell(x1)) #define list_make2_int(x1,x2) \ list_make2_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2)) #define list_make3_int(x1,x2,x3) \ list_make3_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2), \ list_make_int_cell(x3)) #define list_make4_int(x1,x2,x3,x4) \ list_make4_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2), \ list_make_int_cell(x3), list_make_int_cell(x4)) #define list_make1_oid(x1) \ list_make1_impl(T_OidList, list_make_oid_cell(x1)) #define list_make2_oid(x1,x2) \ list_make2_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2)) #define list_make3_oid(x1,x2,x3) \ list_make3_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2), \ list_make_oid_cell(x3)) #define list_make4_oid(x1,x2,x3,x4) \ list_make4_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2), \ list_make_oid_cell(x3), list_make_oid_cell(x4)) /* * Locate the n'th cell (counting from 0) of the list. * It is an assertion failure if there is no such cell. */ static inline ListCell * list_nth_cell(const List *list, int n) { Assert(list != NIL); Assert(n >= 0 && n < list->length); return &list->elements[n]; } /* * Return the pointer value contained in the n'th element of the * specified list. (List elements begin at 0.) */ static inline void * list_nth(const List *list, int n) { Assert(IsA(list, List)); return lfirst(list_nth_cell(list, n)); } /* * Return the integer value contained in the n'th element of the * specified list. */ static inline int list_nth_int(const List *list, int n) { Assert(IsA(list, IntList)); return lfirst_int(list_nth_cell(list, n)); } /* * Return the OID value contained in the n'th element of the specified * list. */ static inline Oid list_nth_oid(const List *list, int n) { Assert(IsA(list, OidList)); return lfirst_oid(list_nth_cell(list, n)); } #define list_nth_node(type,list,n) castNode(type, list_nth(list, n)) /* * Get the given ListCell's index (from 0) in the given List. */ static inline int list_cell_number(const List *l, const ListCell *c) { Assert(c >= &l->elements[0] && c < &l->elements[l->length]); return c - l->elements; } /* * Get the address of the next cell after "c" within list "l", or NULL if none. */ static inline ListCell * lnext(const List *l, const ListCell *c) { Assert(c >= &l->elements[0] && c < &l->elements[l->length]); c++; if (c < &l->elements[l->length]) return (ListCell *) c; else return NULL; } /* * foreach - * a convenience macro for looping through a list * * "cell" must be the name of a "ListCell *" variable; it's made to point * to each List element in turn. "cell" will be NULL after normal exit from * the loop, but an early "break" will leave it pointing at the current * List element. * * Beware of changing the List object while the loop is iterating. * The current semantics are that we examine successive list indices in * each iteration, so that insertion or deletion of list elements could * cause elements to be re-visited or skipped unexpectedly. Previous * implementations of foreach() behaved differently. However, it's safe * to append elements to the List (or in general, insert them after the * current element); such new elements are guaranteed to be visited. * Also, the current element of the List can be deleted, if you use * foreach_delete_current() to do so. BUT: either of these actions will * invalidate the "cell" pointer for the remainder of the current iteration. */ #define foreach(cell, lst) \ for (ForEachState cell##__state = {(lst), 0}; \ (cell##__state.l != NIL && \ cell##__state.i < cell##__state.l->length) ? \ (cell = &cell##__state.l->elements[cell##__state.i], true) : \ (cell = NULL, false); \ cell##__state.i++) /* * foreach_delete_current - * delete the current list element from the List associated with a * surrounding foreach() loop, returning the new List pointer. * * This is equivalent to list_delete_cell(), but it also adjusts the foreach * loop's state so that no list elements will be missed. Do not delete * elements from an active foreach loop's list in any other way! */ #define foreach_delete_current(lst, cell) \ (cell##__state.i--, \ (List *) (cell##__state.l = list_delete_cell(lst, cell))) /* * foreach_current_index - * get the zero-based list index of a surrounding foreach() loop's * current element; pass the name of the "ListCell *" iterator variable. * * Beware of using this after foreach_delete_current(); the value will be * out of sync for the rest of the current loop iteration. Anyway, since * you just deleted the current element, the value is pretty meaningless. */ #define foreach_current_index(cell) (cell##__state.i) /* * for_each_from - * Like foreach(), but start from the N'th (zero-based) list element, * not necessarily the first one. * * It's okay for N to exceed the list length, but not for it to be negative. * * The caveats for foreach() apply equally here. */ #define for_each_from(cell, lst, N) \ for (ForEachState cell##__state = for_each_from_setup(lst, N); \ (cell##__state.l != NIL && \ cell##__state.i < cell##__state.l->length) ? \ (cell = &cell##__state.l->elements[cell##__state.i], true) : \ (cell = NULL, false); \ cell##__state.i++) static inline ForEachState for_each_from_setup(const List *lst, int N) { ForEachState r = {lst, N}; Assert(N >= 0); return r; } /* * for_each_cell - * a convenience macro which loops through a list starting from a * specified cell * * The caveats for foreach() apply equally here. */ #define for_each_cell(cell, lst, initcell) \ for (ForEachState cell##__state = for_each_cell_setup(lst, initcell); \ (cell##__state.l != NIL && \ cell##__state.i < cell##__state.l->length) ? \ (cell = &cell##__state.l->elements[cell##__state.i], true) : \ (cell = NULL, false); \ cell##__state.i++) static inline ForEachState for_each_cell_setup(const List *lst, const ListCell *initcell) { ForEachState r = {lst, initcell ? list_cell_number(lst, initcell) : list_length(lst)}; return r; } /* * forboth - * a convenience macro for advancing through two linked lists * simultaneously. This macro loops through both lists at the same * time, stopping when either list runs out of elements. Depending * on the requirements of the call site, it may also be wise to * assert that the lengths of the two lists are equal. (But, if they * are not, some callers rely on the ending cell values being separately * NULL or non-NULL as defined here; don't try to optimize that.) * * The caveats for foreach() apply equally here. */ #define forboth(cell1, list1, cell2, list2) \ for (ForBothState cell1##__state = {(list1), (list2), 0}; \ multi_for_advance_cell(cell1, cell1##__state, l1, i), \ multi_for_advance_cell(cell2, cell1##__state, l2, i), \ (cell1 != NULL && cell2 != NULL); \ cell1##__state.i++) #define multi_for_advance_cell(cell, state, l, i) \ (cell = (state.l != NIL && state.i < state.l->length) ? \ &state.l->elements[state.i] : NULL) /* * for_both_cell - * a convenience macro which loops through two lists starting from the * specified cells of each. This macro loops through both lists at the same * time, stopping when either list runs out of elements. Depending on the * requirements of the call site, it may also be wise to assert that the * lengths of the two lists are equal, and initcell1 and initcell2 are at * the same position in the respective lists. * * The caveats for foreach() apply equally here. */ #define for_both_cell(cell1, list1, initcell1, cell2, list2, initcell2) \ for (ForBothCellState cell1##__state = \ for_both_cell_setup(list1, initcell1, list2, initcell2); \ multi_for_advance_cell(cell1, cell1##__state, l1, i1), \ multi_for_advance_cell(cell2, cell1##__state, l2, i2), \ (cell1 != NULL && cell2 != NULL); \ cell1##__state.i1++, cell1##__state.i2++) static inline ForBothCellState for_both_cell_setup(const List *list1, const ListCell *initcell1, const List *list2, const ListCell *initcell2) { ForBothCellState r = {list1, list2, initcell1 ? list_cell_number(list1, initcell1) : list_length(list1), initcell2 ? list_cell_number(list2, initcell2) : list_length(list2)}; return r; } /* * forthree - * the same for three lists */ #define forthree(cell1, list1, cell2, list2, cell3, list3) \ for (ForThreeState cell1##__state = {(list1), (list2), (list3), 0}; \ multi_for_advance_cell(cell1, cell1##__state, l1, i), \ multi_for_advance_cell(cell2, cell1##__state, l2, i), \ multi_for_advance_cell(cell3, cell1##__state, l3, i), \ (cell1 != NULL && cell2 != NULL && cell3 != NULL); \ cell1##__state.i++) /* * forfour - * the same for four lists */ #define forfour(cell1, list1, cell2, list2, cell3, list3, cell4, list4) \ for (ForFourState cell1##__state = {(list1), (list2), (list3), (list4), 0}; \ multi_for_advance_cell(cell1, cell1##__state, l1, i), \ multi_for_advance_cell(cell2, cell1##__state, l2, i), \ multi_for_advance_cell(cell3, cell1##__state, l3, i), \ multi_for_advance_cell(cell4, cell1##__state, l4, i), \ (cell1 != NULL && cell2 != NULL && cell3 != NULL && cell4 != NULL); \ cell1##__state.i++) /* * forfive - * the same for five lists */ #define forfive(cell1, list1, cell2, list2, cell3, list3, cell4, list4, cell5, list5) \ for (ForFiveState cell1##__state = {(list1), (list2), (list3), (list4), (list5), 0}; \ multi_for_advance_cell(cell1, cell1##__state, l1, i), \ multi_for_advance_cell(cell2, cell1##__state, l2, i), \ multi_for_advance_cell(cell3, cell1##__state, l3, i), \ multi_for_advance_cell(cell4, cell1##__state, l4, i), \ multi_for_advance_cell(cell5, cell1##__state, l5, i), \ (cell1 != NULL && cell2 != NULL && cell3 != NULL && \ cell4 != NULL && cell5 != NULL); \ cell1##__state.i++) /* Functions in src/backend/nodes/list.c */ extern List *list_make1_impl(NodeTag t, ListCell datum1); extern List *list_make2_impl(NodeTag t, ListCell datum1, ListCell datum2); extern List *list_make3_impl(NodeTag t, ListCell datum1, ListCell datum2, ListCell datum3); extern List *list_make4_impl(NodeTag t, ListCell datum1, ListCell datum2, ListCell datum3, ListCell datum4); extern List *lappend(List *list, void *datum); extern List *lappend_int(List *list, int datum); extern List *lappend_oid(List *list, Oid datum); extern List *list_insert_nth(List *list, int pos, void *datum); extern List *list_insert_nth_int(List *list, int pos, int datum); extern List *list_insert_nth_oid(List *list, int pos, Oid datum); extern List *lcons(void *datum, List *list); extern List *lcons_int(int datum, List *list); extern List *lcons_oid(Oid datum, List *list); extern List *list_concat(List *list1, const List *list2); extern List *list_concat_copy(const List *list1, const List *list2); extern List *list_truncate(List *list, int new_size); extern bool list_member(const List *list, const void *datum); extern bool list_member_ptr(const List *list, const void *datum); extern bool list_member_int(const List *list, int datum); extern bool list_member_oid(const List *list, Oid datum); extern List *list_delete(List *list, void *datum); extern List *list_delete_ptr(List *list, void *datum); extern List *list_delete_int(List *list, int datum); extern List *list_delete_oid(List *list, Oid datum); extern List *list_delete_first(List *list); extern List *list_delete_last(List *list); extern List *list_delete_nth_cell(List *list, int n); extern List *list_delete_cell(List *list, ListCell *cell); extern List *list_union(const List *list1, const List *list2); extern List *list_union_ptr(const List *list1, const List *list2); extern List *list_union_int(const List *list1, const List *list2); extern List *list_union_oid(const List *list1, const List *list2); extern List *list_intersection(const List *list1, const List *list2); extern List *list_intersection_int(const List *list1, const List *list2); /* currently, there's no need for list_intersection_ptr etc */ extern List *list_difference(const List *list1, const List *list2); extern List *list_difference_ptr(const List *list1, const List *list2); extern List *list_difference_int(const List *list1, const List *list2); extern List *list_difference_oid(const List *list1, const List *list2); extern List *list_append_unique(List *list, void *datum); extern List *list_append_unique_ptr(List *list, void *datum); extern List *list_append_unique_int(List *list, int datum); extern List *list_append_unique_oid(List *list, Oid datum); extern List *list_concat_unique(List *list1, const List *list2); extern List *list_concat_unique_ptr(List *list1, const List *list2); extern List *list_concat_unique_int(List *list1, const List *list2); extern List *list_concat_unique_oid(List *list1, const List *list2); extern void list_deduplicate_oid(List *list); extern void list_free(List *list); extern void list_free_deep(List *list); extern List *list_copy(const List *list); extern List *list_copy_tail(const List *list, int nskip); extern List *list_copy_deep(const List *oldlist); typedef int (*list_sort_comparator) (const ListCell *a, const ListCell *b); extern void list_sort(List *list, list_sort_comparator cmp); extern int list_oid_cmp(const ListCell *p1, const ListCell *p2); #endif /* PG_LIST_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/plannodes.h000066400000000000000000001331421413137616400236130ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * plannodes.h * definitions for query plan nodes * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/plannodes.h * *------------------------------------------------------------------------- */ #ifndef PLANNODES_H #define PLANNODES_H #include "access/sdir.h" #include "access/stratnum.h" #include "lib/stringinfo.h" #include "nodes/bitmapset.h" #include "nodes/lockoptions.h" #include "nodes/primnodes.h" /* ---------------------------------------------------------------- * node definitions * ---------------------------------------------------------------- */ /* ---------------- * PlannedStmt node * * The output of the planner is a Plan tree headed by a PlannedStmt node. * PlannedStmt holds the "one time" information needed by the executor. * * For simplicity in APIs, we also wrap utility statements in PlannedStmt * nodes; in such cases, commandType == CMD_UTILITY, the statement itself * is in the utilityStmt field, and the rest of the struct is mostly dummy. * (We do use canSetTag, stmt_location, stmt_len, and possibly queryId.) * ---------------- */ typedef struct PlannedStmt { NodeTag type; CmdType commandType; /* select|insert|update|delete|utility */ uint64 queryId; /* query identifier (copied from Query) */ bool hasReturning; /* is it insert|update|delete RETURNING? */ bool hasModifyingCTE; /* has insert|update|delete in WITH? */ bool canSetTag; /* do I set the command result tag? */ bool transientPlan; /* redo plan when TransactionXmin changes? */ bool dependsOnRole; /* is plan specific to current role? */ bool parallelModeNeeded; /* parallel mode required to execute? */ int jitFlags; /* which forms of JIT should be performed */ struct Plan *planTree; /* tree of Plan nodes */ List *rtable; /* list of RangeTblEntry nodes */ /* rtable indexes of target relations for INSERT/UPDATE/DELETE */ List *resultRelations; /* integer list of RT indexes, or NIL */ /* * rtable indexes of partitioned table roots that are UPDATE/DELETE * targets; needed for trigger firing. */ List *rootResultRelations; List *appendRelations; /* list of AppendRelInfo nodes */ List *subplans; /* Plan trees for SubPlan expressions; note * that some could be NULL */ Bitmapset *rewindPlanIDs; /* indices of subplans that require REWIND */ List *rowMarks; /* a list of PlanRowMark's */ List *relationOids; /* OIDs of relations the plan depends on */ List *invalItems; /* other dependencies, as PlanInvalItems */ List *paramExecTypes; /* type OIDs for PARAM_EXEC Params */ Node *utilityStmt; /* non-null if this is utility stmt */ /* statement location in source string (copied from Query) */ int stmt_location; /* start location, or -1 if unknown */ int stmt_len; /* length in bytes; 0 means "rest of string" */ } PlannedStmt; /* macro for fetching the Plan associated with a SubPlan node */ #define exec_subplan_get_plan(plannedstmt, subplan) \ ((Plan *) list_nth((plannedstmt)->subplans, (subplan)->plan_id - 1)) /* ---------------- * Plan node * * All plan nodes "derive" from the Plan structure by having the * Plan structure as the first field. This ensures that everything works * when nodes are cast to Plan's. (node pointers are frequently cast to Plan* * when passed around generically in the executor) * * We never actually instantiate any Plan nodes; this is just the common * abstract superclass for all Plan-type nodes. * ---------------- */ typedef struct Plan { NodeTag type; /* * estimated execution costs for plan (see costsize.c for more info) */ Cost startup_cost; /* cost expended before fetching any tuples */ Cost total_cost; /* total cost (assuming all tuples fetched) */ /* * planner's estimate of result size of this plan step */ double plan_rows; /* number of rows plan is expected to emit */ int plan_width; /* average row width in bytes */ /* * information needed for parallel query */ bool parallel_aware; /* engage parallel-aware logic? */ bool parallel_safe; /* OK to use as part of parallel plan? */ /* * Common structural data for all Plan types. */ int plan_node_id; /* unique across entire final plan tree */ List *targetlist; /* target list to be computed at this node */ List *qual; /* implicitly-ANDed qual conditions */ struct Plan *lefttree; /* input plan tree(s) */ struct Plan *righttree; List *initPlan; /* Init Plan nodes (un-correlated expr * subselects) */ /* * Information for management of parameter-change-driven rescanning * * extParam includes the paramIDs of all external PARAM_EXEC params * affecting this plan node or its children. setParam params from the * node's initPlans are not included, but their extParams are. * * allParam includes all the extParam paramIDs, plus the IDs of local * params that affect the node (i.e., the setParams of its initplans). * These are _all_ the PARAM_EXEC params that affect this node. */ Bitmapset *extParam; Bitmapset *allParam; } Plan; /* ---------------- * these are defined to avoid confusion problems with "left" * and "right" and "inner" and "outer". The convention is that * the "left" plan is the "outer" plan and the "right" plan is * the inner plan, but these make the code more readable. * ---------------- */ #define innerPlan(node) (((Plan *)(node))->righttree) #define outerPlan(node) (((Plan *)(node))->lefttree) /* ---------------- * Result node - * If no outer plan, evaluate a variable-free targetlist. * If outer plan, return tuples from outer plan (after a level of * projection as shown by targetlist). * * If resconstantqual isn't NULL, it represents a one-time qualification * test (i.e., one that doesn't depend on any variables from the outer plan, * so needs to be evaluated only once). * ---------------- */ typedef struct Result { Plan plan; Node *resconstantqual; } Result; /* ---------------- * ProjectSet node - * Apply a projection that includes set-returning functions to the * output tuples of the outer plan. * ---------------- */ typedef struct ProjectSet { Plan plan; } ProjectSet; /* ---------------- * ModifyTable node - * Apply rows produced by subplan(s) to result table(s), * by inserting, updating, or deleting. * * If the originally named target table is a partitioned table, both * nominalRelation and rootRelation contain the RT index of the partition * root, which is not otherwise mentioned in the plan. Otherwise rootRelation * is zero. However, nominalRelation will always be set, as it's the rel that * EXPLAIN should claim is the INSERT/UPDATE/DELETE target. * * Note that rowMarks and epqParam are presumed to be valid for all the * subplan(s); they can't contain any info that varies across subplans. * ---------------- */ typedef struct ModifyTable { Plan plan; CmdType operation; /* INSERT, UPDATE, or DELETE */ bool canSetTag; /* do we set the command tag/es_processed? */ Index nominalRelation; /* Parent RT index for use of EXPLAIN */ Index rootRelation; /* Root RT index, if target is partitioned */ bool partColsUpdated; /* some part key in hierarchy updated */ List *resultRelations; /* integer list of RT indexes */ int resultRelIndex; /* index of first resultRel in plan's list */ int rootResultRelIndex; /* index of the partitioned table root */ List *plans; /* plan(s) producing source data */ List *withCheckOptionLists; /* per-target-table WCO lists */ List *returningLists; /* per-target-table RETURNING tlists */ List *fdwPrivLists; /* per-target-table FDW private data lists */ Bitmapset *fdwDirectModifyPlans; /* indices of FDW DM plans */ List *rowMarks; /* PlanRowMarks (non-locking only) */ int epqParam; /* ID of Param for EvalPlanQual re-eval */ OnConflictAction onConflictAction; /* ON CONFLICT action */ List *arbiterIndexes; /* List of ON CONFLICT arbiter index OIDs */ List *onConflictSet; /* SET for INSERT ON CONFLICT DO UPDATE */ Node *onConflictWhere; /* WHERE for ON CONFLICT UPDATE */ Index exclRelRTI; /* RTI of the EXCLUDED pseudo relation */ List *exclRelTlist; /* tlist of the EXCLUDED pseudo relation */ } ModifyTable; struct PartitionPruneInfo; /* forward reference to struct below */ /* ---------------- * Append node - * Generate the concatenation of the results of sub-plans. * ---------------- */ typedef struct Append { Plan plan; Bitmapset *apprelids; /* RTIs of appendrel(s) formed by this node */ List *appendplans; /* * All 'appendplans' preceding this index are non-partial plans. All * 'appendplans' from this index onwards are partial plans. */ int first_partial_plan; /* Info for run-time subplan pruning; NULL if we're not doing that */ struct PartitionPruneInfo *part_prune_info; } Append; /* ---------------- * MergeAppend node - * Merge the results of pre-sorted sub-plans to preserve the ordering. * ---------------- */ typedef struct MergeAppend { Plan plan; Bitmapset *apprelids; /* RTIs of appendrel(s) formed by this node */ List *mergeplans; /* these fields are just like the sort-key info in struct Sort: */ int numCols; /* number of sort-key columns */ AttrNumber *sortColIdx; /* their indexes in the target list */ Oid *sortOperators; /* OIDs of operators to sort them by */ Oid *collations; /* OIDs of collations */ bool *nullsFirst; /* NULLS FIRST/LAST directions */ /* Info for run-time subplan pruning; NULL if we're not doing that */ struct PartitionPruneInfo *part_prune_info; } MergeAppend; /* ---------------- * RecursiveUnion node - * Generate a recursive union of two subplans. * * The "outer" subplan is always the non-recursive term, and the "inner" * subplan is the recursive term. * ---------------- */ typedef struct RecursiveUnion { Plan plan; int wtParam; /* ID of Param representing work table */ /* Remaining fields are zero/null in UNION ALL case */ int numCols; /* number of columns to check for * duplicate-ness */ AttrNumber *dupColIdx; /* their indexes in the target list */ Oid *dupOperators; /* equality operators to compare with */ Oid *dupCollations; long numGroups; /* estimated number of groups in input */ } RecursiveUnion; /* ---------------- * BitmapAnd node - * Generate the intersection of the results of sub-plans. * * The subplans must be of types that yield tuple bitmaps. The targetlist * and qual fields of the plan are unused and are always NIL. * ---------------- */ typedef struct BitmapAnd { Plan plan; List *bitmapplans; } BitmapAnd; /* ---------------- * BitmapOr node - * Generate the union of the results of sub-plans. * * The subplans must be of types that yield tuple bitmaps. The targetlist * and qual fields of the plan are unused and are always NIL. * ---------------- */ typedef struct BitmapOr { Plan plan; bool isshared; List *bitmapplans; } BitmapOr; /* * ========== * Scan nodes * ========== */ typedef struct Scan { Plan plan; Index scanrelid; /* relid is index into the range table */ } Scan; /* ---------------- * sequential scan node * ---------------- */ typedef Scan SeqScan; /* ---------------- * table sample scan node * ---------------- */ typedef struct SampleScan { Scan scan; /* use struct pointer to avoid including parsenodes.h here */ struct TableSampleClause *tablesample; } SampleScan; /* ---------------- * index scan node * * indexqualorig is an implicitly-ANDed list of index qual expressions, each * in the same form it appeared in the query WHERE condition. Each should * be of the form (indexkey OP comparisonval) or (comparisonval OP indexkey). * The indexkey is a Var or expression referencing column(s) of the index's * base table. The comparisonval might be any expression, but it won't use * any columns of the base table. The expressions are ordered by index * column position (but items referencing the same index column can appear * in any order). indexqualorig is used at runtime only if we have to recheck * a lossy indexqual. * * indexqual has the same form, but the expressions have been commuted if * necessary to put the indexkeys on the left, and the indexkeys are replaced * by Var nodes identifying the index columns (their varno is INDEX_VAR and * their varattno is the index column number). * * indexorderbyorig is similarly the original form of any ORDER BY expressions * that are being implemented by the index, while indexorderby is modified to * have index column Vars on the left-hand side. Here, multiple expressions * must appear in exactly the ORDER BY order, and this is not necessarily the * index column order. Only the expressions are provided, not the auxiliary * sort-order information from the ORDER BY SortGroupClauses; it's assumed * that the sort ordering is fully determinable from the top-level operators. * indexorderbyorig is used at runtime to recheck the ordering, if the index * cannot calculate an accurate ordering. It is also needed for EXPLAIN. * * indexorderbyops is a list of the OIDs of the operators used to sort the * ORDER BY expressions. This is used together with indexorderbyorig to * recheck ordering at run time. (Note that indexorderby, indexorderbyorig, * and indexorderbyops are used for amcanorderbyop cases, not amcanorder.) * * indexorderdir specifies the scan ordering, for indexscans on amcanorder * indexes (for other indexes it should be "don't care"). * ---------------- */ typedef struct IndexScan { Scan scan; Oid indexid; /* OID of index to scan */ List *indexqual; /* list of index quals (usually OpExprs) */ List *indexqualorig; /* the same in original form */ List *indexorderby; /* list of index ORDER BY exprs */ List *indexorderbyorig; /* the same in original form */ List *indexorderbyops; /* OIDs of sort ops for ORDER BY exprs */ ScanDirection indexorderdir; /* forward or backward or don't care */ } IndexScan; /* ---------------- * index-only scan node * * IndexOnlyScan is very similar to IndexScan, but it specifies an * index-only scan, in which the data comes from the index not the heap. * Because of this, *all* Vars in the plan node's targetlist, qual, and * index expressions reference index columns and have varno = INDEX_VAR. * Hence we do not need separate indexqualorig and indexorderbyorig lists, * since their contents would be equivalent to indexqual and indexorderby. * * To help EXPLAIN interpret the index Vars for display, we provide * indextlist, which represents the contents of the index as a targetlist * with one TLE per index column. Vars appearing in this list reference * the base table, and this is the only field in the plan node that may * contain such Vars. * ---------------- */ typedef struct IndexOnlyScan { Scan scan; Oid indexid; /* OID of index to scan */ List *indexqual; /* list of index quals (usually OpExprs) */ List *indexorderby; /* list of index ORDER BY exprs */ List *indextlist; /* TargetEntry list describing index's cols */ ScanDirection indexorderdir; /* forward or backward or don't care */ } IndexOnlyScan; /* ---------------- * bitmap index scan node * * BitmapIndexScan delivers a bitmap of potential tuple locations; * it does not access the heap itself. The bitmap is used by an * ancestor BitmapHeapScan node, possibly after passing through * intermediate BitmapAnd and/or BitmapOr nodes to combine it with * the results of other BitmapIndexScans. * * The fields have the same meanings as for IndexScan, except we don't * store a direction flag because direction is uninteresting. * * In a BitmapIndexScan plan node, the targetlist and qual fields are * not used and are always NIL. The indexqualorig field is unused at * run time too, but is saved for the benefit of EXPLAIN. * ---------------- */ typedef struct BitmapIndexScan { Scan scan; Oid indexid; /* OID of index to scan */ bool isshared; /* Create shared bitmap if set */ List *indexqual; /* list of index quals (OpExprs) */ List *indexqualorig; /* the same in original form */ } BitmapIndexScan; /* ---------------- * bitmap sequential scan node * * This needs a copy of the qual conditions being used by the input index * scans because there are various cases where we need to recheck the quals; * for example, when the bitmap is lossy about the specific rows on a page * that meet the index condition. * ---------------- */ typedef struct BitmapHeapScan { Scan scan; List *bitmapqualorig; /* index quals, in standard expr form */ } BitmapHeapScan; /* ---------------- * tid scan node * * tidquals is an implicitly OR'ed list of qual expressions of the form * "CTID = pseudoconstant", or "CTID = ANY(pseudoconstant_array)", * or a CurrentOfExpr for the relation. * ---------------- */ typedef struct TidScan { Scan scan; List *tidquals; /* qual(s) involving CTID = something */ } TidScan; /* ---------------- * subquery scan node * * SubqueryScan is for scanning the output of a sub-query in the range table. * We often need an extra plan node above the sub-query's plan to perform * expression evaluations (which we can't push into the sub-query without * risking changing its semantics). Although we are not scanning a physical * relation, we make this a descendant of Scan anyway for code-sharing * purposes. * * Note: we store the sub-plan in the type-specific subplan field, not in * the generic lefttree field as you might expect. This is because we do * not want plan-tree-traversal routines to recurse into the subplan without * knowing that they are changing Query contexts. * ---------------- */ typedef struct SubqueryScan { Scan scan; Plan *subplan; } SubqueryScan; /* ---------------- * FunctionScan node * ---------------- */ typedef struct FunctionScan { Scan scan; List *functions; /* list of RangeTblFunction nodes */ bool funcordinality; /* WITH ORDINALITY */ } FunctionScan; /* ---------------- * ValuesScan node * ---------------- */ typedef struct ValuesScan { Scan scan; List *values_lists; /* list of expression lists */ } ValuesScan; /* ---------------- * TableFunc scan node * ---------------- */ typedef struct TableFuncScan { Scan scan; TableFunc *tablefunc; /* table function node */ } TableFuncScan; /* ---------------- * CteScan node * ---------------- */ typedef struct CteScan { Scan scan; int ctePlanId; /* ID of init SubPlan for CTE */ int cteParam; /* ID of Param representing CTE output */ } CteScan; /* ---------------- * NamedTuplestoreScan node * ---------------- */ typedef struct NamedTuplestoreScan { Scan scan; char *enrname; /* Name given to Ephemeral Named Relation */ } NamedTuplestoreScan; /* ---------------- * WorkTableScan node * ---------------- */ typedef struct WorkTableScan { Scan scan; int wtParam; /* ID of Param representing work table */ } WorkTableScan; /* ---------------- * ForeignScan node * * fdw_exprs and fdw_private are both under the control of the foreign-data * wrapper, but fdw_exprs is presumed to contain expression trees and will * be post-processed accordingly by the planner; fdw_private won't be. * Note that everything in both lists must be copiable by copyObject(). * One way to store an arbitrary blob of bytes is to represent it as a bytea * Const. Usually, though, you'll be better off choosing a representation * that can be dumped usefully by nodeToString(). * * fdw_scan_tlist is a targetlist describing the contents of the scan tuple * returned by the FDW; it can be NIL if the scan tuple matches the declared * rowtype of the foreign table, which is the normal case for a simple foreign * table scan. (If the plan node represents a foreign join, fdw_scan_tlist * is required since there is no rowtype available from the system catalogs.) * When fdw_scan_tlist is provided, Vars in the node's tlist and quals must * have varno INDEX_VAR, and their varattnos correspond to resnos in the * fdw_scan_tlist (which are also column numbers in the actual scan tuple). * fdw_scan_tlist is never actually executed; it just holds expression trees * describing what is in the scan tuple's columns. * * fdw_recheck_quals should contain any quals which the core system passed to * the FDW but which were not added to scan.plan.qual; that is, it should * contain the quals being checked remotely. This is needed for correct * behavior during EvalPlanQual rechecks. * * When the plan node represents a foreign join, scan.scanrelid is zero and * fs_relids must be consulted to identify the join relation. (fs_relids * is valid for simple scans as well, but will always match scan.scanrelid.) * ---------------- */ typedef struct ForeignScan { Scan scan; CmdType operation; /* SELECT/INSERT/UPDATE/DELETE */ Oid fs_server; /* OID of foreign server */ List *fdw_exprs; /* expressions that FDW may evaluate */ List *fdw_private; /* private data for FDW */ List *fdw_scan_tlist; /* optional tlist describing scan tuple */ List *fdw_recheck_quals; /* original quals not in scan.plan.qual */ Bitmapset *fs_relids; /* RTIs generated by this scan */ bool fsSystemCol; /* true if any "system column" is needed */ } ForeignScan; /* ---------------- * CustomScan node * * The comments for ForeignScan's fdw_exprs, fdw_private, fdw_scan_tlist, * and fs_relids fields apply equally to CustomScan's custom_exprs, * custom_private, custom_scan_tlist, and custom_relids fields. The * convention of setting scan.scanrelid to zero for joins applies as well. * * Note that since Plan trees can be copied, custom scan providers *must* * fit all plan data they need into those fields; embedding CustomScan in * a larger struct will not work. * ---------------- */ struct CustomScanMethods; typedef struct CustomScan { Scan scan; uint32 flags; /* mask of CUSTOMPATH_* flags, see * nodes/extensible.h */ List *custom_plans; /* list of Plan nodes, if any */ List *custom_exprs; /* expressions that custom code may evaluate */ List *custom_private; /* private data for custom code */ List *custom_scan_tlist; /* optional tlist describing scan tuple */ Bitmapset *custom_relids; /* RTIs generated by this scan */ const struct CustomScanMethods *methods; } CustomScan; /* * ========== * Join nodes * ========== */ /* ---------------- * Join node * * jointype: rule for joining tuples from left and right subtrees * inner_unique each outer tuple can match to no more than one inner tuple * joinqual: qual conditions that came from JOIN/ON or JOIN/USING * (plan.qual contains conditions that came from WHERE) * * When jointype is INNER, joinqual and plan.qual are semantically * interchangeable. For OUTER jointypes, the two are *not* interchangeable; * only joinqual is used to determine whether a match has been found for * the purpose of deciding whether to generate null-extended tuples. * (But plan.qual is still applied before actually returning a tuple.) * For an outer join, only joinquals are allowed to be used as the merge * or hash condition of a merge or hash join. * * inner_unique is set if the joinquals are such that no more than one inner * tuple could match any given outer tuple. This allows the executor to * skip searching for additional matches. (This must be provable from just * the joinquals, ignoring plan.qual, due to where the executor tests it.) * ---------------- */ typedef struct Join { Plan plan; JoinType jointype; bool inner_unique; List *joinqual; /* JOIN quals (in addition to plan.qual) */ } Join; /* ---------------- * nest loop join node * * The nestParams list identifies any executor Params that must be passed * into execution of the inner subplan carrying values from the current row * of the outer subplan. Currently we restrict these values to be simple * Vars, but perhaps someday that'd be worth relaxing. (Note: during plan * creation, the paramval can actually be a PlaceHolderVar expression; but it * must be a Var with varno OUTER_VAR by the time it gets to the executor.) * ---------------- */ typedef struct NestLoop { Join join; List *nestParams; /* list of NestLoopParam nodes */ } NestLoop; typedef struct NestLoopParam { NodeTag type; int paramno; /* number of the PARAM_EXEC Param to set */ Var *paramval; /* outer-relation Var to assign to Param */ } NestLoopParam; /* ---------------- * merge join node * * The expected ordering of each mergeable column is described by a btree * opfamily OID, a collation OID, a direction (BTLessStrategyNumber or * BTGreaterStrategyNumber) and a nulls-first flag. Note that the two sides * of each mergeclause may be of different datatypes, but they are ordered the * same way according to the common opfamily and collation. The operator in * each mergeclause must be an equality operator of the indicated opfamily. * ---------------- */ typedef struct MergeJoin { Join join; bool skip_mark_restore; /* Can we skip mark/restore calls? */ List *mergeclauses; /* mergeclauses as expression trees */ /* these are arrays, but have the same length as the mergeclauses list: */ Oid *mergeFamilies; /* per-clause OIDs of btree opfamilies */ Oid *mergeCollations; /* per-clause OIDs of collations */ int *mergeStrategies; /* per-clause ordering (ASC or DESC) */ bool *mergeNullsFirst; /* per-clause nulls ordering */ } MergeJoin; /* ---------------- * hash join node * ---------------- */ typedef struct HashJoin { Join join; List *hashclauses; List *hashoperators; List *hashcollations; /* * List of expressions to be hashed for tuples from the outer plan, to * perform lookups in the hashtable over the inner plan. */ List *hashkeys; } HashJoin; /* ---------------- * materialization node * ---------------- */ typedef struct Material { Plan plan; } Material; /* ---------------- * sort node * ---------------- */ typedef struct Sort { Plan plan; int numCols; /* number of sort-key columns */ AttrNumber *sortColIdx; /* their indexes in the target list */ Oid *sortOperators; /* OIDs of operators to sort them by */ Oid *collations; /* OIDs of collations */ bool *nullsFirst; /* NULLS FIRST/LAST directions */ } Sort; /* ---------------- * incremental sort node * ---------------- */ typedef struct IncrementalSort { Sort sort; int nPresortedCols; /* number of presorted columns */ } IncrementalSort; /* --------------- * group node - * Used for queries with GROUP BY (but no aggregates) specified. * The input must be presorted according to the grouping columns. * --------------- */ typedef struct Group { Plan plan; int numCols; /* number of grouping columns */ AttrNumber *grpColIdx; /* their indexes in the target list */ Oid *grpOperators; /* equality operators to compare with */ Oid *grpCollations; } Group; /* --------------- * aggregate node * * An Agg node implements plain or grouped aggregation. For grouped * aggregation, we can work with presorted input or unsorted input; * the latter strategy uses an internal hashtable. * * Notice the lack of any direct info about the aggregate functions to be * computed. They are found by scanning the node's tlist and quals during * executor startup. (It is possible that there are no aggregate functions; * this could happen if they get optimized away by constant-folding, or if * we are using the Agg node to implement hash-based grouping.) * --------------- */ typedef struct Agg { Plan plan; AggStrategy aggstrategy; /* basic strategy, see nodes.h */ AggSplit aggsplit; /* agg-splitting mode, see nodes.h */ int numCols; /* number of grouping columns */ AttrNumber *grpColIdx; /* their indexes in the target list */ Oid *grpOperators; /* equality operators to compare with */ Oid *grpCollations; long numGroups; /* estimated number of groups in input */ uint64 transitionSpace; /* for pass-by-ref transition data */ Bitmapset *aggParams; /* IDs of Params used in Aggref inputs */ /* Note: planner provides numGroups & aggParams only in HASHED/MIXED case */ List *groupingSets; /* grouping sets to use */ List *chain; /* chained Agg/Sort nodes */ } Agg; /* ---------------- * window aggregate node * ---------------- */ typedef struct WindowAgg { Plan plan; Index winref; /* ID referenced by window functions */ int partNumCols; /* number of columns in partition clause */ AttrNumber *partColIdx; /* their indexes in the target list */ Oid *partOperators; /* equality operators for partition columns */ Oid *partCollations; /* collations for partition columns */ int ordNumCols; /* number of columns in ordering clause */ AttrNumber *ordColIdx; /* their indexes in the target list */ Oid *ordOperators; /* equality operators for ordering columns */ Oid *ordCollations; /* collations for ordering columns */ int frameOptions; /* frame_clause options, see WindowDef */ Node *startOffset; /* expression for starting bound, if any */ Node *endOffset; /* expression for ending bound, if any */ /* these fields are used with RANGE offset PRECEDING/FOLLOWING: */ Oid startInRangeFunc; /* in_range function for startOffset */ Oid endInRangeFunc; /* in_range function for endOffset */ Oid inRangeColl; /* collation for in_range tests */ bool inRangeAsc; /* use ASC sort order for in_range tests? */ bool inRangeNullsFirst; /* nulls sort first for in_range tests? */ } WindowAgg; /* ---------------- * unique node * ---------------- */ typedef struct Unique { Plan plan; int numCols; /* number of columns to check for uniqueness */ AttrNumber *uniqColIdx; /* their indexes in the target list */ Oid *uniqOperators; /* equality operators to compare with */ Oid *uniqCollations; /* collations for equality comparisons */ } Unique; /* ------------ * gather node * * Note: rescan_param is the ID of a PARAM_EXEC parameter slot. That slot * will never actually contain a value, but the Gather node must flag it as * having changed whenever it is rescanned. The child parallel-aware scan * nodes are marked as depending on that parameter, so that the rescan * machinery is aware that their output is likely to change across rescans. * In some cases we don't need a rescan Param, so rescan_param is set to -1. * ------------ */ typedef struct Gather { Plan plan; int num_workers; /* planned number of worker processes */ int rescan_param; /* ID of Param that signals a rescan, or -1 */ bool single_copy; /* don't execute plan more than once */ bool invisible; /* suppress EXPLAIN display (for testing)? */ Bitmapset *initParam; /* param id's of initplans which are referred * at gather or one of it's child node */ } Gather; /* ------------ * gather merge node * ------------ */ typedef struct GatherMerge { Plan plan; int num_workers; /* planned number of worker processes */ int rescan_param; /* ID of Param that signals a rescan, or -1 */ /* remaining fields are just like the sort-key info in struct Sort */ int numCols; /* number of sort-key columns */ AttrNumber *sortColIdx; /* their indexes in the target list */ Oid *sortOperators; /* OIDs of operators to sort them by */ Oid *collations; /* OIDs of collations */ bool *nullsFirst; /* NULLS FIRST/LAST directions */ Bitmapset *initParam; /* param id's of initplans which are referred * at gather merge or one of it's child node */ } GatherMerge; /* ---------------- * hash build node * * If the executor is supposed to try to apply skew join optimization, then * skewTable/skewColumn/skewInherit identify the outer relation's join key * column, from which the relevant MCV statistics can be fetched. * ---------------- */ typedef struct Hash { Plan plan; /* * List of expressions to be hashed for tuples from Hash's outer plan, * needed to put them into the hashtable. */ List *hashkeys; /* hash keys for the hashjoin condition */ Oid skewTable; /* outer join key's table OID, or InvalidOid */ AttrNumber skewColumn; /* outer join key's column #, or zero */ bool skewInherit; /* is outer join rel an inheritance tree? */ /* all other info is in the parent HashJoin node */ double rows_total; /* estimate total rows if parallel_aware */ } Hash; /* ---------------- * setop node * ---------------- */ typedef struct SetOp { Plan plan; SetOpCmd cmd; /* what to do, see nodes.h */ SetOpStrategy strategy; /* how to do it, see nodes.h */ int numCols; /* number of columns to check for * duplicate-ness */ AttrNumber *dupColIdx; /* their indexes in the target list */ Oid *dupOperators; /* equality operators to compare with */ Oid *dupCollations; AttrNumber flagColIdx; /* where is the flag column, if any */ int firstFlag; /* flag value for first input relation */ long numGroups; /* estimated number of groups in input */ } SetOp; /* ---------------- * lock-rows node * * rowMarks identifies the rels to be locked by this node; it should be * a subset of the rowMarks listed in the top-level PlannedStmt. * epqParam is a Param that all scan nodes below this one must depend on. * It is used to force re-evaluation of the plan during EvalPlanQual. * ---------------- */ typedef struct LockRows { Plan plan; List *rowMarks; /* a list of PlanRowMark's */ int epqParam; /* ID of Param for EvalPlanQual re-eval */ } LockRows; /* ---------------- * limit node * * Note: as of Postgres 8.2, the offset and count expressions are expected * to yield int8, rather than int4 as before. * ---------------- */ typedef struct Limit { Plan plan; Node *limitOffset; /* OFFSET parameter, or NULL if none */ Node *limitCount; /* COUNT parameter, or NULL if none */ LimitOption limitOption; /* limit type */ int uniqNumCols; /* number of columns to check for similarity */ AttrNumber *uniqColIdx; /* their indexes in the target list */ Oid *uniqOperators; /* equality operators to compare with */ Oid *uniqCollations; /* collations for equality comparisons */ } Limit; /* * RowMarkType - * enums for types of row-marking operations * * The first four of these values represent different lock strengths that * we can take on tuples according to SELECT FOR [KEY] UPDATE/SHARE requests. * We support these on regular tables, as well as on foreign tables whose FDWs * report support for late locking. For other foreign tables, any locking * that might be done for such requests must happen during the initial row * fetch; their FDWs provide no mechanism for going back to lock a row later. * This means that the semantics will be a bit different than for a local * table; in particular we are likely to lock more rows than would be locked * locally, since remote rows will be locked even if they then fail * locally-checked restriction or join quals. However, the prospect of * doing a separate remote query to lock each selected row is usually pretty * unappealing, so early locking remains a credible design choice for FDWs. * * When doing UPDATE, DELETE, or SELECT FOR UPDATE/SHARE, we have to uniquely * identify all the source rows, not only those from the target relations, so * that we can perform EvalPlanQual rechecking at need. For plain tables we * can just fetch the TID, much as for a target relation; this case is * represented by ROW_MARK_REFERENCE. Otherwise (for example for VALUES or * FUNCTION scans) we have to copy the whole row value. ROW_MARK_COPY is * pretty inefficient, since most of the time we'll never need the data; but * fortunately the overhead is usually not performance-critical in practice. * By default we use ROW_MARK_COPY for foreign tables, but if the FDW has * a concept of rowid it can request to use ROW_MARK_REFERENCE instead. * (Again, this probably doesn't make sense if a physical remote fetch is * needed, but for FDWs that map to local storage it might be credible.) */ typedef enum RowMarkType { ROW_MARK_EXCLUSIVE, /* obtain exclusive tuple lock */ ROW_MARK_NOKEYEXCLUSIVE, /* obtain no-key exclusive tuple lock */ ROW_MARK_SHARE, /* obtain shared tuple lock */ ROW_MARK_KEYSHARE, /* obtain keyshare tuple lock */ ROW_MARK_REFERENCE, /* just fetch the TID, don't lock it */ ROW_MARK_COPY /* physically copy the row value */ } RowMarkType; #define RowMarkRequiresRowShareLock(marktype) ((marktype) <= ROW_MARK_KEYSHARE) /* * PlanRowMark - * plan-time representation of FOR [KEY] UPDATE/SHARE clauses * * When doing UPDATE, DELETE, or SELECT FOR UPDATE/SHARE, we create a separate * PlanRowMark node for each non-target relation in the query. Relations that * are not specified as FOR UPDATE/SHARE are marked ROW_MARK_REFERENCE (if * regular tables or supported foreign tables) or ROW_MARK_COPY (if not). * * Initially all PlanRowMarks have rti == prti and isParent == false. * When the planner discovers that a relation is the root of an inheritance * tree, it sets isParent true, and adds an additional PlanRowMark to the * list for each child relation (including the target rel itself in its role * as a child). isParent is also set to true for the partitioned child * relations, which are not scanned just like the root parent. The child * entries have rti == child rel's RT index and prti == parent's RT index, * and can therefore be recognized as children by the fact that prti != rti. * The parent's allMarkTypes field gets the OR of (1<= INNER_VAR) /* Symbols for the indexes of the special RTE entries in rules */ #define PRS2_OLD_VARNO 1 #define PRS2_NEW_VARNO 2 typedef struct Var { Expr xpr; Index varno; /* index of this var's relation in the range * table, or INNER_VAR/OUTER_VAR/INDEX_VAR */ AttrNumber varattno; /* attribute number of this var, or zero for * all attrs ("whole-row Var") */ Oid vartype; /* pg_type OID for the type of this var */ int32 vartypmod; /* pg_attribute typmod value */ Oid varcollid; /* OID of collation, or InvalidOid if none */ Index varlevelsup; /* for subquery variables referencing outer * relations; 0 in a normal var, >0 means N * levels up */ Index varnosyn; /* syntactic relation index (0 if unknown) */ AttrNumber varattnosyn; /* syntactic attribute number */ int location; /* token location, or -1 if unknown */ } Var; /* * Const * * Note: for varlena data types, we make a rule that a Const node's value * must be in non-extended form (4-byte header, no compression or external * references). This ensures that the Const node is self-contained and makes * it more likely that equal() will see logically identical values as equal. */ typedef struct Const { Expr xpr; Oid consttype; /* pg_type OID of the constant's datatype */ int32 consttypmod; /* typmod value, if any */ Oid constcollid; /* OID of collation, or InvalidOid if none */ int constlen; /* typlen of the constant's datatype */ Datum constvalue; /* the constant's value */ bool constisnull; /* whether the constant is null (if true, * constvalue is undefined) */ bool constbyval; /* whether this datatype is passed by value. * If true, then all the information is stored * in the Datum. If false, then the Datum * contains a pointer to the information. */ int location; /* token location, or -1 if unknown */ } Const; /* * Param * * paramkind specifies the kind of parameter. The possible values * for this field are: * * PARAM_EXTERN: The parameter value is supplied from outside the plan. * Such parameters are numbered from 1 to n. * * PARAM_EXEC: The parameter is an internal executor parameter, used * for passing values into and out of sub-queries or from * nestloop joins to their inner scans. * For historical reasons, such parameters are numbered from 0. * These numbers are independent of PARAM_EXTERN numbers. * * PARAM_SUBLINK: The parameter represents an output column of a SubLink * node's sub-select. The column number is contained in the * `paramid' field. (This type of Param is converted to * PARAM_EXEC during planning.) * * PARAM_MULTIEXPR: Like PARAM_SUBLINK, the parameter represents an * output column of a SubLink node's sub-select, but here, the * SubLink is always a MULTIEXPR SubLink. The high-order 16 bits * of the `paramid' field contain the SubLink's subLinkId, and * the low-order 16 bits contain the column number. (This type * of Param is also converted to PARAM_EXEC during planning.) */ typedef enum ParamKind { PARAM_EXTERN, PARAM_EXEC, PARAM_SUBLINK, PARAM_MULTIEXPR } ParamKind; typedef struct Param { Expr xpr; ParamKind paramkind; /* kind of parameter. See above */ int paramid; /* numeric ID for parameter */ Oid paramtype; /* pg_type OID of parameter's datatype */ int32 paramtypmod; /* typmod value, if known */ Oid paramcollid; /* OID of collation, or InvalidOid if none */ int location; /* token location, or -1 if unknown */ } Param; /* * Aggref * * The aggregate's args list is a targetlist, ie, a list of TargetEntry nodes. * * For a normal (non-ordered-set) aggregate, the non-resjunk TargetEntries * represent the aggregate's regular arguments (if any) and resjunk TLEs can * be added at the end to represent ORDER BY expressions that are not also * arguments. As in a top-level Query, the TLEs can be marked with * ressortgroupref indexes to let them be referenced by SortGroupClause * entries in the aggorder and/or aggdistinct lists. This represents ORDER BY * and DISTINCT operations to be applied to the aggregate input rows before * they are passed to the transition function. The grammar only allows a * simple "DISTINCT" specifier for the arguments, but we use the full * query-level representation to allow more code sharing. * * For an ordered-set aggregate, the args list represents the WITHIN GROUP * (aggregated) arguments, all of which will be listed in the aggorder list. * DISTINCT is not supported in this case, so aggdistinct will be NIL. * The direct arguments appear in aggdirectargs (as a list of plain * expressions, not TargetEntry nodes). * * aggtranstype is the data type of the state transition values for this * aggregate (resolved to an actual type, if agg's transtype is polymorphic). * This is determined during planning and is InvalidOid before that. * * aggargtypes is an OID list of the data types of the direct and regular * arguments. Normally it's redundant with the aggdirectargs and args lists, * but in a combining aggregate, it's not because the args list has been * replaced with a single argument representing the partial-aggregate * transition values. * * aggsplit indicates the expected partial-aggregation mode for the Aggref's * parent plan node. It's always set to AGGSPLIT_SIMPLE in the parser, but * the planner might change it to something else. We use this mainly as * a crosscheck that the Aggrefs match the plan; but note that when aggsplit * indicates a non-final mode, aggtype reflects the transition data type * not the SQL-level output type of the aggregate. */ typedef struct Aggref { Expr xpr; Oid aggfnoid; /* pg_proc Oid of the aggregate */ Oid aggtype; /* type Oid of result of the aggregate */ Oid aggcollid; /* OID of collation of result */ Oid inputcollid; /* OID of collation that function should use */ Oid aggtranstype; /* type Oid of aggregate's transition value */ List *aggargtypes; /* type Oids of direct and aggregated args */ List *aggdirectargs; /* direct arguments, if an ordered-set agg */ List *args; /* aggregated arguments and sort expressions */ List *aggorder; /* ORDER BY (list of SortGroupClause) */ List *aggdistinct; /* DISTINCT (list of SortGroupClause) */ Expr *aggfilter; /* FILTER expression, if any */ bool aggstar; /* true if argument list was really '*' */ bool aggvariadic; /* true if variadic arguments have been * combined into an array last argument */ char aggkind; /* aggregate kind (see pg_aggregate.h) */ Index agglevelsup; /* > 0 if agg belongs to outer query */ AggSplit aggsplit; /* expected agg-splitting mode of parent Agg */ int location; /* token location, or -1 if unknown */ } Aggref; /* * GroupingFunc * * A GroupingFunc is a GROUPING(...) expression, which behaves in many ways * like an aggregate function (e.g. it "belongs" to a specific query level, * which might not be the one immediately containing it), but also differs in * an important respect: it never evaluates its arguments, they merely * designate expressions from the GROUP BY clause of the query level to which * it belongs. * * The spec defines the evaluation of GROUPING() purely by syntactic * replacement, but we make it a real expression for optimization purposes so * that one Agg node can handle multiple grouping sets at once. Evaluating the * result only needs the column positions to check against the grouping set * being projected. However, for EXPLAIN to produce meaningful output, we have * to keep the original expressions around, since expression deparse does not * give us any feasible way to get at the GROUP BY clause. * * Also, we treat two GroupingFunc nodes as equal if they have equal arguments * lists and agglevelsup, without comparing the refs and cols annotations. * * In raw parse output we have only the args list; parse analysis fills in the * refs list, and the planner fills in the cols list. */ typedef struct GroupingFunc { Expr xpr; List *args; /* arguments, not evaluated but kept for * benefit of EXPLAIN etc. */ List *refs; /* ressortgrouprefs of arguments */ List *cols; /* actual column positions set by planner */ Index agglevelsup; /* same as Aggref.agglevelsup */ int location; /* token location */ } GroupingFunc; /* * WindowFunc */ typedef struct WindowFunc { Expr xpr; Oid winfnoid; /* pg_proc Oid of the function */ Oid wintype; /* type Oid of result of the window function */ Oid wincollid; /* OID of collation of result */ Oid inputcollid; /* OID of collation that function should use */ List *args; /* arguments to the window function */ Expr *aggfilter; /* FILTER expression, if any */ Index winref; /* index of associated WindowClause */ bool winstar; /* true if argument list was really '*' */ bool winagg; /* is function a simple aggregate? */ int location; /* token location, or -1 if unknown */ } WindowFunc; /* ---------------- * SubscriptingRef: describes a subscripting operation over a container * (array, etc). * * A SubscriptingRef can describe fetching a single element from a container, * fetching a part of container (e.g. array slice), storing a single element into * a container, or storing a slice. The "store" cases work with an * initial container value and a source value that is inserted into the * appropriate part of the container; the result of the operation is an * entire new modified container value. * * If reflowerindexpr = NIL, then we are fetching or storing a single container * element at the subscripts given by refupperindexpr. Otherwise we are * fetching or storing a container slice, that is a rectangular subcontainer * with lower and upper bounds given by the index expressions. * reflowerindexpr must be the same length as refupperindexpr when it * is not NIL. * * In the slice case, individual expressions in the subscript lists can be * NULL, meaning "substitute the array's current lower or upper bound". * * Note: the result datatype is the element type when fetching a single * element; but it is the array type when doing subarray fetch or either * type of store. * * Note: for the cases where a container is returned, if refexpr yields a R/W * expanded container, then the implementation is allowed to modify that object * in-place and return the same object.) * ---------------- */ typedef struct SubscriptingRef { Expr xpr; Oid refcontainertype; /* type of the container proper */ Oid refelemtype; /* type of the container elements */ int32 reftypmod; /* typmod of the container (and elements too) */ Oid refcollid; /* OID of collation, or InvalidOid if none */ List *refupperindexpr; /* expressions that evaluate to upper * container indexes */ List *reflowerindexpr; /* expressions that evaluate to lower * container indexes, or NIL for single * container element */ Expr *refexpr; /* the expression that evaluates to a * container value */ Expr *refassgnexpr; /* expression for the source value, or NULL if * fetch */ } SubscriptingRef; /* * CoercionContext - distinguishes the allowed set of type casts * * NB: ordering of the alternatives is significant; later (larger) values * allow more casts than earlier ones. */ typedef enum CoercionContext { COERCION_IMPLICIT, /* coercion in context of expression */ COERCION_ASSIGNMENT, /* coercion in context of assignment */ COERCION_EXPLICIT /* explicit cast operation */ } CoercionContext; /* * CoercionForm - how to display a node that could have come from a cast * * NB: equal() ignores CoercionForm fields, therefore this *must* not carry * any semantically significant information. We need that behavior so that * the planner will consider equivalent implicit and explicit casts to be * equivalent. In cases where those actually behave differently, the coercion * function's arguments will be different. */ typedef enum CoercionForm { COERCE_EXPLICIT_CALL, /* display as a function call */ COERCE_EXPLICIT_CAST, /* display as an explicit cast */ COERCE_IMPLICIT_CAST /* implicit cast, so hide it */ } CoercionForm; /* * FuncExpr - expression node for a function call */ typedef struct FuncExpr { Expr xpr; Oid funcid; /* PG_PROC OID of the function */ Oid funcresulttype; /* PG_TYPE OID of result value */ bool funcretset; /* true if function returns set */ bool funcvariadic; /* true if variadic arguments have been * combined into an array last argument */ CoercionForm funcformat; /* how to display this function call */ Oid funccollid; /* OID of collation of result */ Oid inputcollid; /* OID of collation that function should use */ List *args; /* arguments to the function */ int location; /* token location, or -1 if unknown */ } FuncExpr; /* * NamedArgExpr - a named argument of a function * * This node type can only appear in the args list of a FuncCall or FuncExpr * node. We support pure positional call notation (no named arguments), * named notation (all arguments are named), and mixed notation (unnamed * arguments followed by named ones). * * Parse analysis sets argnumber to the positional index of the argument, * but doesn't rearrange the argument list. * * The planner will convert argument lists to pure positional notation * during expression preprocessing, so execution never sees a NamedArgExpr. */ typedef struct NamedArgExpr { Expr xpr; Expr *arg; /* the argument expression */ char *name; /* the name */ int argnumber; /* argument's number in positional notation */ int location; /* argument name location, or -1 if unknown */ } NamedArgExpr; /* * OpExpr - expression node for an operator invocation * * Semantically, this is essentially the same as a function call. * * Note that opfuncid is not necessarily filled in immediately on creation * of the node. The planner makes sure it is valid before passing the node * tree to the executor, but during parsing/planning opfuncid can be 0. */ typedef struct OpExpr { Expr xpr; Oid opno; /* PG_OPERATOR OID of the operator */ Oid opfuncid; /* PG_PROC OID of underlying function */ Oid opresulttype; /* PG_TYPE OID of result value */ bool opretset; /* true if operator returns set */ Oid opcollid; /* OID of collation of result */ Oid inputcollid; /* OID of collation that operator should use */ List *args; /* arguments to the operator (1 or 2) */ int location; /* token location, or -1 if unknown */ } OpExpr; /* * DistinctExpr - expression node for "x IS DISTINCT FROM y" * * Except for the nodetag, this is represented identically to an OpExpr * referencing the "=" operator for x and y. * We use "=", not the more obvious "<>", because more datatypes have "=" * than "<>". This means the executor must invert the operator result. * Note that the operator function won't be called at all if either input * is NULL, since then the result can be determined directly. */ typedef OpExpr DistinctExpr; /* * NullIfExpr - a NULLIF expression * * Like DistinctExpr, this is represented the same as an OpExpr referencing * the "=" operator for x and y. */ typedef OpExpr NullIfExpr; /* * ScalarArrayOpExpr - expression node for "scalar op ANY/ALL (array)" * * The operator must yield boolean. It is applied to the left operand * and each element of the righthand array, and the results are combined * with OR or AND (for ANY or ALL respectively). The node representation * is almost the same as for the underlying operator, but we need a useOr * flag to remember whether it's ANY or ALL, and we don't have to store * the result type (or the collation) because it must be boolean. */ typedef struct ScalarArrayOpExpr { Expr xpr; Oid opno; /* PG_OPERATOR OID of the operator */ Oid opfuncid; /* PG_PROC OID of underlying function */ bool useOr; /* true for ANY, false for ALL */ Oid inputcollid; /* OID of collation that operator should use */ List *args; /* the scalar and array operands */ int location; /* token location, or -1 if unknown */ } ScalarArrayOpExpr; /* * BoolExpr - expression node for the basic Boolean operators AND, OR, NOT * * Notice the arguments are given as a List. For NOT, of course the list * must always have exactly one element. For AND and OR, there can be two * or more arguments. */ typedef enum BoolExprType { AND_EXPR, OR_EXPR, NOT_EXPR } BoolExprType; typedef struct BoolExpr { Expr xpr; BoolExprType boolop; List *args; /* arguments to this expression */ int location; /* token location, or -1 if unknown */ } BoolExpr; /* * SubLink * * A SubLink represents a subselect appearing in an expression, and in some * cases also the combining operator(s) just above it. The subLinkType * indicates the form of the expression represented: * EXISTS_SUBLINK EXISTS(SELECT ...) * ALL_SUBLINK (lefthand) op ALL (SELECT ...) * ANY_SUBLINK (lefthand) op ANY (SELECT ...) * ROWCOMPARE_SUBLINK (lefthand) op (SELECT ...) * EXPR_SUBLINK (SELECT with single targetlist item ...) * MULTIEXPR_SUBLINK (SELECT with multiple targetlist items ...) * ARRAY_SUBLINK ARRAY(SELECT with single targetlist item ...) * CTE_SUBLINK WITH query (never actually part of an expression) * For ALL, ANY, and ROWCOMPARE, the lefthand is a list of expressions of the * same length as the subselect's targetlist. ROWCOMPARE will *always* have * a list with more than one entry; if the subselect has just one target * then the parser will create an EXPR_SUBLINK instead (and any operator * above the subselect will be represented separately). * ROWCOMPARE, EXPR, and MULTIEXPR require the subselect to deliver at most * one row (if it returns no rows, the result is NULL). * ALL, ANY, and ROWCOMPARE require the combining operators to deliver boolean * results. ALL and ANY combine the per-row results using AND and OR * semantics respectively. * ARRAY requires just one target column, and creates an array of the target * column's type using any number of rows resulting from the subselect. * * SubLink is classed as an Expr node, but it is not actually executable; * it must be replaced in the expression tree by a SubPlan node during * planning. * * NOTE: in the raw output of gram.y, testexpr contains just the raw form * of the lefthand expression (if any), and operName is the String name of * the combining operator. Also, subselect is a raw parsetree. During parse * analysis, the parser transforms testexpr into a complete boolean expression * that compares the lefthand value(s) to PARAM_SUBLINK nodes representing the * output columns of the subselect. And subselect is transformed to a Query. * This is the representation seen in saved rules and in the rewriter. * * In EXISTS, EXPR, MULTIEXPR, and ARRAY SubLinks, testexpr and operName * are unused and are always null. * * subLinkId is currently used only for MULTIEXPR SubLinks, and is zero in * other SubLinks. This number identifies different multiple-assignment * subqueries within an UPDATE statement's SET list. It is unique only * within a particular targetlist. The output column(s) of the MULTIEXPR * are referenced by PARAM_MULTIEXPR Params appearing elsewhere in the tlist. * * The CTE_SUBLINK case never occurs in actual SubLink nodes, but it is used * in SubPlans generated for WITH subqueries. */ typedef enum SubLinkType { EXISTS_SUBLINK, ALL_SUBLINK, ANY_SUBLINK, ROWCOMPARE_SUBLINK, EXPR_SUBLINK, MULTIEXPR_SUBLINK, ARRAY_SUBLINK, CTE_SUBLINK /* for SubPlans only */ } SubLinkType; typedef struct SubLink { Expr xpr; SubLinkType subLinkType; /* see above */ int subLinkId; /* ID (1..n); 0 if not MULTIEXPR */ Node *testexpr; /* outer-query test for ALL/ANY/ROWCOMPARE */ List *operName; /* originally specified operator name */ Node *subselect; /* subselect as Query* or raw parsetree */ int location; /* token location, or -1 if unknown */ } SubLink; /* * SubPlan - executable expression node for a subplan (sub-SELECT) * * The planner replaces SubLink nodes in expression trees with SubPlan * nodes after it has finished planning the subquery. SubPlan references * a sub-plantree stored in the subplans list of the toplevel PlannedStmt. * (We avoid a direct link to make it easier to copy expression trees * without causing multiple processing of the subplan.) * * In an ordinary subplan, testexpr points to an executable expression * (OpExpr, an AND/OR tree of OpExprs, or RowCompareExpr) for the combining * operator(s); the left-hand arguments are the original lefthand expressions, * and the right-hand arguments are PARAM_EXEC Param nodes representing the * outputs of the sub-select. (NOTE: runtime coercion functions may be * inserted as well.) This is just the same expression tree as testexpr in * the original SubLink node, but the PARAM_SUBLINK nodes are replaced by * suitably numbered PARAM_EXEC nodes. * * If the sub-select becomes an initplan rather than a subplan, the executable * expression is part of the outer plan's expression tree (and the SubPlan * node itself is not, but rather is found in the outer plan's initPlan * list). In this case testexpr is NULL to avoid duplication. * * The planner also derives lists of the values that need to be passed into * and out of the subplan. Input values are represented as a list "args" of * expressions to be evaluated in the outer-query context (currently these * args are always just Vars, but in principle they could be any expression). * The values are assigned to the global PARAM_EXEC params indexed by parParam * (the parParam and args lists must have the same ordering). setParam is a * list of the PARAM_EXEC params that are computed by the sub-select, if it * is an initplan; they are listed in order by sub-select output column * position. (parParam and setParam are integer Lists, not Bitmapsets, * because their ordering is significant.) * * Also, the planner computes startup and per-call costs for use of the * SubPlan. Note that these include the cost of the subquery proper, * evaluation of the testexpr if any, and any hashtable management overhead. */ typedef struct SubPlan { Expr xpr; /* Fields copied from original SubLink: */ SubLinkType subLinkType; /* see above */ /* The combining operators, transformed to an executable expression: */ Node *testexpr; /* OpExpr or RowCompareExpr expression tree */ List *paramIds; /* IDs of Params embedded in the above */ /* Identification of the Plan tree to use: */ int plan_id; /* Index (from 1) in PlannedStmt.subplans */ /* Identification of the SubPlan for EXPLAIN and debugging purposes: */ char *plan_name; /* A name assigned during planning */ /* Extra data useful for determining subplan's output type: */ Oid firstColType; /* Type of first column of subplan result */ int32 firstColTypmod; /* Typmod of first column of subplan result */ Oid firstColCollation; /* Collation of first column of subplan * result */ /* Information about execution strategy: */ bool useHashTable; /* true to store subselect output in a hash * table (implies we are doing "IN") */ bool unknownEqFalse; /* true if it's okay to return FALSE when the * spec result is UNKNOWN; this allows much * simpler handling of null values */ bool parallel_safe; /* is the subplan parallel-safe? */ /* Note: parallel_safe does not consider contents of testexpr or args */ /* Information for passing params into and out of the subselect: */ /* setParam and parParam are lists of integers (param IDs) */ List *setParam; /* initplan subqueries have to set these * Params for parent plan */ List *parParam; /* indices of input Params from parent plan */ List *args; /* exprs to pass as parParam values */ /* Estimated execution costs: */ Cost startup_cost; /* one-time setup cost */ Cost per_call_cost; /* cost for each subplan evaluation */ } SubPlan; /* * AlternativeSubPlan - expression node for a choice among SubPlans * * The subplans are given as a List so that the node definition need not * change if there's ever more than two alternatives. For the moment, * though, there are always exactly two; and the first one is the fast-start * plan. */ typedef struct AlternativeSubPlan { Expr xpr; List *subplans; /* SubPlan(s) with equivalent results */ } AlternativeSubPlan; /* ---------------- * FieldSelect * * FieldSelect represents the operation of extracting one field from a tuple * value. At runtime, the input expression is expected to yield a rowtype * Datum. The specified field number is extracted and returned as a Datum. * ---------------- */ typedef struct FieldSelect { Expr xpr; Expr *arg; /* input expression */ AttrNumber fieldnum; /* attribute number of field to extract */ Oid resulttype; /* type of the field (result type of this * node) */ int32 resulttypmod; /* output typmod (usually -1) */ Oid resultcollid; /* OID of collation of the field */ } FieldSelect; /* ---------------- * FieldStore * * FieldStore represents the operation of modifying one field in a tuple * value, yielding a new tuple value (the input is not touched!). Like * the assign case of SubscriptingRef, this is used to implement UPDATE of a * portion of a column. * * resulttype is always a named composite type (not a domain). To update * a composite domain value, apply CoerceToDomain to the FieldStore. * * A single FieldStore can actually represent updates of several different * fields. The parser only generates FieldStores with single-element lists, * but the planner will collapse multiple updates of the same base column * into one FieldStore. * ---------------- */ typedef struct FieldStore { Expr xpr; Expr *arg; /* input tuple value */ List *newvals; /* new value(s) for field(s) */ List *fieldnums; /* integer list of field attnums */ Oid resulttype; /* type of result (same as type of arg) */ /* Like RowExpr, we deliberately omit a typmod and collation here */ } FieldStore; /* ---------------- * RelabelType * * RelabelType represents a "dummy" type coercion between two binary- * compatible datatypes, such as reinterpreting the result of an OID * expression as an int4. It is a no-op at runtime; we only need it * to provide a place to store the correct type to be attributed to * the expression result during type resolution. (We can't get away * with just overwriting the type field of the input expression node, * so we need a separate node to show the coercion's result type.) * ---------------- */ typedef struct RelabelType { Expr xpr; Expr *arg; /* input expression */ Oid resulttype; /* output type of coercion expression */ int32 resulttypmod; /* output typmod (usually -1) */ Oid resultcollid; /* OID of collation, or InvalidOid if none */ CoercionForm relabelformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } RelabelType; /* ---------------- * CoerceViaIO * * CoerceViaIO represents a type coercion between two types whose textual * representations are compatible, implemented by invoking the source type's * typoutput function then the destination type's typinput function. * ---------------- */ typedef struct CoerceViaIO { Expr xpr; Expr *arg; /* input expression */ Oid resulttype; /* output type of coercion */ /* output typmod is not stored, but is presumed -1 */ Oid resultcollid; /* OID of collation, or InvalidOid if none */ CoercionForm coerceformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } CoerceViaIO; /* ---------------- * ArrayCoerceExpr * * ArrayCoerceExpr represents a type coercion from one array type to another, * which is implemented by applying the per-element coercion expression * "elemexpr" to each element of the source array. Within elemexpr, the * source element is represented by a CaseTestExpr node. Note that even if * elemexpr is a no-op (that is, just CaseTestExpr + RelabelType), the * coercion still requires some effort: we have to fix the element type OID * stored in the array header. * ---------------- */ typedef struct ArrayCoerceExpr { Expr xpr; Expr *arg; /* input expression (yields an array) */ Expr *elemexpr; /* expression representing per-element work */ Oid resulttype; /* output type of coercion (an array type) */ int32 resulttypmod; /* output typmod (also element typmod) */ Oid resultcollid; /* OID of collation, or InvalidOid if none */ CoercionForm coerceformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } ArrayCoerceExpr; /* ---------------- * ConvertRowtypeExpr * * ConvertRowtypeExpr represents a type coercion from one composite type * to another, where the source type is guaranteed to contain all the columns * needed for the destination type plus possibly others; the columns need not * be in the same positions, but are matched up by name. This is primarily * used to convert a whole-row value of an inheritance child table into a * valid whole-row value of its parent table's rowtype. Both resulttype * and the exposed type of "arg" must be named composite types (not domains). * ---------------- */ typedef struct ConvertRowtypeExpr { Expr xpr; Expr *arg; /* input expression */ Oid resulttype; /* output type (always a composite type) */ /* Like RowExpr, we deliberately omit a typmod and collation here */ CoercionForm convertformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } ConvertRowtypeExpr; /*---------- * CollateExpr - COLLATE * * The planner replaces CollateExpr with RelabelType during expression * preprocessing, so execution never sees a CollateExpr. *---------- */ typedef struct CollateExpr { Expr xpr; Expr *arg; /* input expression */ Oid collOid; /* collation's OID */ int location; /* token location, or -1 if unknown */ } CollateExpr; /*---------- * CaseExpr - a CASE expression * * We support two distinct forms of CASE expression: * CASE WHEN boolexpr THEN expr [ WHEN boolexpr THEN expr ... ] * CASE testexpr WHEN compexpr THEN expr [ WHEN compexpr THEN expr ... ] * These are distinguishable by the "arg" field being NULL in the first case * and the testexpr in the second case. * * In the raw grammar output for the second form, the condition expressions * of the WHEN clauses are just the comparison values. Parse analysis * converts these to valid boolean expressions of the form * CaseTestExpr '=' compexpr * where the CaseTestExpr node is a placeholder that emits the correct * value at runtime. This structure is used so that the testexpr need be * evaluated only once. Note that after parse analysis, the condition * expressions always yield boolean. * * Note: we can test whether a CaseExpr has been through parse analysis * yet by checking whether casetype is InvalidOid or not. *---------- */ typedef struct CaseExpr { Expr xpr; Oid casetype; /* type of expression result */ Oid casecollid; /* OID of collation, or InvalidOid if none */ Expr *arg; /* implicit equality comparison argument */ List *args; /* the arguments (list of WHEN clauses) */ Expr *defresult; /* the default result (ELSE clause) */ int location; /* token location, or -1 if unknown */ } CaseExpr; /* * CaseWhen - one arm of a CASE expression */ typedef struct CaseWhen { Expr xpr; Expr *expr; /* condition expression */ Expr *result; /* substitution result */ int location; /* token location, or -1 if unknown */ } CaseWhen; /* * Placeholder node for the test value to be processed by a CASE expression. * This is effectively like a Param, but can be implemented more simply * since we need only one replacement value at a time. * * We also abuse this node type for some other purposes, including: * * Placeholder for the current array element value in ArrayCoerceExpr; * see build_coercion_expression(). * * Nested FieldStore/SubscriptingRef assignment expressions in INSERT/UPDATE; * see transformAssignmentIndirection(). * * The uses in CaseExpr and ArrayCoerceExpr are safe only to the extent that * there is not any other CaseExpr or ArrayCoerceExpr between the value source * node and its child CaseTestExpr(s). This is true in the parse analysis * output, but the planner's function-inlining logic has to be careful not to * break it. * * The nested-assignment-expression case is safe because the only node types * that can be above such CaseTestExprs are FieldStore and SubscriptingRef. */ typedef struct CaseTestExpr { Expr xpr; Oid typeId; /* type for substituted value */ int32 typeMod; /* typemod for substituted value */ Oid collation; /* collation for the substituted value */ } CaseTestExpr; /* * ArrayExpr - an ARRAY[] expression * * Note: if multidims is false, the constituent expressions all yield the * scalar type identified by element_typeid. If multidims is true, the * constituent expressions all yield arrays of element_typeid (ie, the same * type as array_typeid); at runtime we must check for compatible subscripts. */ typedef struct ArrayExpr { Expr xpr; Oid array_typeid; /* type of expression result */ Oid array_collid; /* OID of collation, or InvalidOid if none */ Oid element_typeid; /* common type of array elements */ List *elements; /* the array elements or sub-arrays */ bool multidims; /* true if elements are sub-arrays */ int location; /* token location, or -1 if unknown */ } ArrayExpr; /* * RowExpr - a ROW() expression * * Note: the list of fields must have a one-for-one correspondence with * physical fields of the associated rowtype, although it is okay for it * to be shorter than the rowtype. That is, the N'th list element must * match up with the N'th physical field. When the N'th physical field * is a dropped column (attisdropped) then the N'th list element can just * be a NULL constant. (This case can only occur for named composite types, * not RECORD types, since those are built from the RowExpr itself rather * than vice versa.) It is important not to assume that length(args) is * the same as the number of columns logically present in the rowtype. * * colnames provides field names in cases where the names can't easily be * obtained otherwise. Names *must* be provided if row_typeid is RECORDOID. * If row_typeid identifies a known composite type, colnames can be NIL to * indicate the type's cataloged field names apply. Note that colnames can * be non-NIL even for a composite type, and typically is when the RowExpr * was created by expanding a whole-row Var. This is so that we can retain * the column alias names of the RTE that the Var referenced (which would * otherwise be very difficult to extract from the parsetree). Like the * args list, colnames is one-for-one with physical fields of the rowtype. */ typedef struct RowExpr { Expr xpr; List *args; /* the fields */ Oid row_typeid; /* RECORDOID or a composite type's ID */ /* * row_typeid cannot be a domain over composite, only plain composite. To * create a composite domain value, apply CoerceToDomain to the RowExpr. * * Note: we deliberately do NOT store a typmod. Although a typmod will be * associated with specific RECORD types at runtime, it will differ for * different backends, and so cannot safely be stored in stored * parsetrees. We must assume typmod -1 for a RowExpr node. * * We don't need to store a collation either. The result type is * necessarily composite, and composite types never have a collation. */ CoercionForm row_format; /* how to display this node */ List *colnames; /* list of String, or NIL */ int location; /* token location, or -1 if unknown */ } RowExpr; /* * RowCompareExpr - row-wise comparison, such as (a, b) <= (1, 2) * * We support row comparison for any operator that can be determined to * act like =, <>, <, <=, >, or >= (we determine this by looking for the * operator in btree opfamilies). Note that the same operator name might * map to a different operator for each pair of row elements, since the * element datatypes can vary. * * A RowCompareExpr node is only generated for the < <= > >= cases; * the = and <> cases are translated to simple AND or OR combinations * of the pairwise comparisons. However, we include = and <> in the * RowCompareType enum for the convenience of parser logic. */ typedef enum RowCompareType { /* Values of this enum are chosen to match btree strategy numbers */ ROWCOMPARE_LT = 1, /* BTLessStrategyNumber */ ROWCOMPARE_LE = 2, /* BTLessEqualStrategyNumber */ ROWCOMPARE_EQ = 3, /* BTEqualStrategyNumber */ ROWCOMPARE_GE = 4, /* BTGreaterEqualStrategyNumber */ ROWCOMPARE_GT = 5, /* BTGreaterStrategyNumber */ ROWCOMPARE_NE = 6 /* no such btree strategy */ } RowCompareType; typedef struct RowCompareExpr { Expr xpr; RowCompareType rctype; /* LT LE GE or GT, never EQ or NE */ List *opnos; /* OID list of pairwise comparison ops */ List *opfamilies; /* OID list of containing operator families */ List *inputcollids; /* OID list of collations for comparisons */ List *largs; /* the left-hand input arguments */ List *rargs; /* the right-hand input arguments */ } RowCompareExpr; /* * CoalesceExpr - a COALESCE expression */ typedef struct CoalesceExpr { Expr xpr; Oid coalescetype; /* type of expression result */ Oid coalescecollid; /* OID of collation, or InvalidOid if none */ List *args; /* the arguments */ int location; /* token location, or -1 if unknown */ } CoalesceExpr; /* * MinMaxExpr - a GREATEST or LEAST function */ typedef enum MinMaxOp { IS_GREATEST, IS_LEAST } MinMaxOp; typedef struct MinMaxExpr { Expr xpr; Oid minmaxtype; /* common type of arguments and result */ Oid minmaxcollid; /* OID of collation of result */ Oid inputcollid; /* OID of collation that function should use */ MinMaxOp op; /* function to execute */ List *args; /* the arguments */ int location; /* token location, or -1 if unknown */ } MinMaxExpr; /* * SQLValueFunction - parameterless functions with special grammar productions * * The SQL standard categorizes some of these as * and others as . We call 'em SQLValueFunctions * for lack of a better term. We store type and typmod of the result so that * some code doesn't need to know each function individually, and because * we would need to store typmod anyway for some of the datetime functions. * Note that currently, all variants return non-collating datatypes, so we do * not need a collation field; also, all these functions are stable. */ typedef enum SQLValueFunctionOp { SVFOP_CURRENT_DATE, SVFOP_CURRENT_TIME, SVFOP_CURRENT_TIME_N, SVFOP_CURRENT_TIMESTAMP, SVFOP_CURRENT_TIMESTAMP_N, SVFOP_LOCALTIME, SVFOP_LOCALTIME_N, SVFOP_LOCALTIMESTAMP, SVFOP_LOCALTIMESTAMP_N, SVFOP_CURRENT_ROLE, SVFOP_CURRENT_USER, SVFOP_USER, SVFOP_SESSION_USER, SVFOP_CURRENT_CATALOG, SVFOP_CURRENT_SCHEMA } SQLValueFunctionOp; typedef struct SQLValueFunction { Expr xpr; SQLValueFunctionOp op; /* which function this is */ Oid type; /* result type/typmod */ int32 typmod; int location; /* token location, or -1 if unknown */ } SQLValueFunction; /* * XmlExpr - various SQL/XML functions requiring special grammar productions * * 'name' carries the "NAME foo" argument (already XML-escaped). * 'named_args' and 'arg_names' represent an xml_attribute list. * 'args' carries all other arguments. * * Note: result type/typmod/collation are not stored, but can be deduced * from the XmlExprOp. The type/typmod fields are just used for display * purposes, and are NOT necessarily the true result type of the node. */ typedef enum XmlExprOp { IS_XMLCONCAT, /* XMLCONCAT(args) */ IS_XMLELEMENT, /* XMLELEMENT(name, xml_attributes, args) */ IS_XMLFOREST, /* XMLFOREST(xml_attributes) */ IS_XMLPARSE, /* XMLPARSE(text, is_doc, preserve_ws) */ IS_XMLPI, /* XMLPI(name [, args]) */ IS_XMLROOT, /* XMLROOT(xml, version, standalone) */ IS_XMLSERIALIZE, /* XMLSERIALIZE(is_document, xmlval) */ IS_DOCUMENT /* xmlval IS DOCUMENT */ } XmlExprOp; typedef enum { XMLOPTION_DOCUMENT, XMLOPTION_CONTENT } XmlOptionType; typedef struct XmlExpr { Expr xpr; XmlExprOp op; /* xml function ID */ char *name; /* name in xml(NAME foo ...) syntaxes */ List *named_args; /* non-XML expressions for xml_attributes */ List *arg_names; /* parallel list of Value strings */ List *args; /* list of expressions */ XmlOptionType xmloption; /* DOCUMENT or CONTENT */ Oid type; /* target type/typmod for XMLSERIALIZE */ int32 typmod; int location; /* token location, or -1 if unknown */ } XmlExpr; /* ---------------- * NullTest * * NullTest represents the operation of testing a value for NULLness. * The appropriate test is performed and returned as a boolean Datum. * * When argisrow is false, this simply represents a test for the null value. * * When argisrow is true, the input expression must yield a rowtype, and * the node implements "row IS [NOT] NULL" per the SQL standard. This * includes checking individual fields for NULLness when the row datum * itself isn't NULL. * * NOTE: the combination of a rowtype input and argisrow==false does NOT * correspond to the SQL notation "row IS [NOT] NULL"; instead, this case * represents the SQL notation "row IS [NOT] DISTINCT FROM NULL". * ---------------- */ typedef enum NullTestType { IS_NULL, IS_NOT_NULL } NullTestType; typedef struct NullTest { Expr xpr; Expr *arg; /* input expression */ NullTestType nulltesttype; /* IS NULL, IS NOT NULL */ bool argisrow; /* T to perform field-by-field null checks */ int location; /* token location, or -1 if unknown */ } NullTest; /* * BooleanTest * * BooleanTest represents the operation of determining whether a boolean * is TRUE, FALSE, or UNKNOWN (ie, NULL). All six meaningful combinations * are supported. Note that a NULL input does *not* cause a NULL result. * The appropriate test is performed and returned as a boolean Datum. */ typedef enum BoolTestType { IS_TRUE, IS_NOT_TRUE, IS_FALSE, IS_NOT_FALSE, IS_UNKNOWN, IS_NOT_UNKNOWN } BoolTestType; typedef struct BooleanTest { Expr xpr; Expr *arg; /* input expression */ BoolTestType booltesttype; /* test type */ int location; /* token location, or -1 if unknown */ } BooleanTest; /* * CoerceToDomain * * CoerceToDomain represents the operation of coercing a value to a domain * type. At runtime (and not before) the precise set of constraints to be * checked will be determined. If the value passes, it is returned as the * result; if not, an error is raised. Note that this is equivalent to * RelabelType in the scenario where no constraints are applied. */ typedef struct CoerceToDomain { Expr xpr; Expr *arg; /* input expression */ Oid resulttype; /* domain type ID (result type) */ int32 resulttypmod; /* output typmod (currently always -1) */ Oid resultcollid; /* OID of collation, or InvalidOid if none */ CoercionForm coercionformat; /* how to display this node */ int location; /* token location, or -1 if unknown */ } CoerceToDomain; /* * Placeholder node for the value to be processed by a domain's check * constraint. This is effectively like a Param, but can be implemented more * simply since we need only one replacement value at a time. * * Note: the typeId/typeMod/collation will be set from the domain's base type, * not the domain itself. This is because we shouldn't consider the value * to be a member of the domain if we haven't yet checked its constraints. */ typedef struct CoerceToDomainValue { Expr xpr; Oid typeId; /* type for substituted value */ int32 typeMod; /* typemod for substituted value */ Oid collation; /* collation for the substituted value */ int location; /* token location, or -1 if unknown */ } CoerceToDomainValue; /* * Placeholder node for a DEFAULT marker in an INSERT or UPDATE command. * * This is not an executable expression: it must be replaced by the actual * column default expression during rewriting. But it is convenient to * treat it as an expression node during parsing and rewriting. */ typedef struct SetToDefault { Expr xpr; Oid typeId; /* type for substituted value */ int32 typeMod; /* typemod for substituted value */ Oid collation; /* collation for the substituted value */ int location; /* token location, or -1 if unknown */ } SetToDefault; /* * Node representing [WHERE] CURRENT OF cursor_name * * CURRENT OF is a bit like a Var, in that it carries the rangetable index * of the target relation being constrained; this aids placing the expression * correctly during planning. We can assume however that its "levelsup" is * always zero, due to the syntactic constraints on where it can appear. * * The referenced cursor can be represented either as a hardwired string * or as a reference to a run-time parameter of type REFCURSOR. The latter * case is for the convenience of plpgsql. */ typedef struct CurrentOfExpr { Expr xpr; Index cvarno; /* RT index of target relation */ char *cursor_name; /* name of referenced cursor, or NULL */ int cursor_param; /* refcursor parameter number, or 0 */ } CurrentOfExpr; /* * NextValueExpr - get next value from sequence * * This has the same effect as calling the nextval() function, but it does not * check permissions on the sequence. This is used for identity columns, * where the sequence is an implicit dependency without its own permissions. */ typedef struct NextValueExpr { Expr xpr; Oid seqid; Oid typeId; } NextValueExpr; /* * InferenceElem - an element of a unique index inference specification * * This mostly matches the structure of IndexElems, but having a dedicated * primnode allows for a clean separation between the use of index parameters * by utility commands, and this node. */ typedef struct InferenceElem { Expr xpr; Node *expr; /* expression to infer from, or NULL */ Oid infercollid; /* OID of collation, or InvalidOid */ Oid inferopclass; /* OID of att opclass, or InvalidOid */ } InferenceElem; /*-------------------- * TargetEntry - * a target entry (used in query target lists) * * Strictly speaking, a TargetEntry isn't an expression node (since it can't * be evaluated by ExecEvalExpr). But we treat it as one anyway, since in * very many places it's convenient to process a whole query targetlist as a * single expression tree. * * In a SELECT's targetlist, resno should always be equal to the item's * ordinal position (counting from 1). However, in an INSERT or UPDATE * targetlist, resno represents the attribute number of the destination * column for the item; so there may be missing or out-of-order resnos. * It is even legal to have duplicated resnos; consider * UPDATE table SET arraycol[1] = ..., arraycol[2] = ..., ... * The two meanings come together in the executor, because the planner * transforms INSERT/UPDATE tlists into a normalized form with exactly * one entry for each column of the destination table. Before that's * happened, however, it is risky to assume that resno == position. * Generally get_tle_by_resno() should be used rather than list_nth() * to fetch tlist entries by resno, and only in SELECT should you assume * that resno is a unique identifier. * * resname is required to represent the correct column name in non-resjunk * entries of top-level SELECT targetlists, since it will be used as the * column title sent to the frontend. In most other contexts it is only * a debugging aid, and may be wrong or even NULL. (In particular, it may * be wrong in a tlist from a stored rule, if the referenced column has been * renamed by ALTER TABLE since the rule was made. Also, the planner tends * to store NULL rather than look up a valid name for tlist entries in * non-toplevel plan nodes.) In resjunk entries, resname should be either * a specific system-generated name (such as "ctid") or NULL; anything else * risks confusing ExecGetJunkAttribute! * * ressortgroupref is used in the representation of ORDER BY, GROUP BY, and * DISTINCT items. Targetlist entries with ressortgroupref=0 are not * sort/group items. If ressortgroupref>0, then this item is an ORDER BY, * GROUP BY, and/or DISTINCT target value. No two entries in a targetlist * may have the same nonzero ressortgroupref --- but there is no particular * meaning to the nonzero values, except as tags. (For example, one must * not assume that lower ressortgroupref means a more significant sort key.) * The order of the associated SortGroupClause lists determine the semantics. * * resorigtbl/resorigcol identify the source of the column, if it is a * simple reference to a column of a base table (or view). If it is not * a simple reference, these fields are zeroes. * * If resjunk is true then the column is a working column (such as a sort key) * that should be removed from the final output of the query. Resjunk columns * must have resnos that cannot duplicate any regular column's resno. Also * note that there are places that assume resjunk columns come after non-junk * columns. *-------------------- */ typedef struct TargetEntry { Expr xpr; Expr *expr; /* expression to evaluate */ AttrNumber resno; /* attribute number (see notes above) */ char *resname; /* name of the column (could be NULL) */ Index ressortgroupref; /* nonzero if referenced by a sort/group * clause */ Oid resorigtbl; /* OID of column's source table */ AttrNumber resorigcol; /* column's number in source table */ bool resjunk; /* set to true to eliminate the attribute from * final target list */ } TargetEntry; /* ---------------------------------------------------------------- * node types for join trees * * The leaves of a join tree structure are RangeTblRef nodes. Above * these, JoinExpr nodes can appear to denote a specific kind of join * or qualified join. Also, FromExpr nodes can appear to denote an * ordinary cross-product join ("FROM foo, bar, baz WHERE ..."). * FromExpr is like a JoinExpr of jointype JOIN_INNER, except that it * may have any number of child nodes, not just two. * * NOTE: the top level of a Query's jointree is always a FromExpr. * Even if the jointree contains no rels, there will be a FromExpr. * * NOTE: the qualification expressions present in JoinExpr nodes are * *in addition to* the query's main WHERE clause, which appears as the * qual of the top-level FromExpr. The reason for associating quals with * specific nodes in the jointree is that the position of a qual is critical * when outer joins are present. (If we enforce a qual too soon or too late, * that may cause the outer join to produce the wrong set of NULL-extended * rows.) If all joins are inner joins then all the qual positions are * semantically interchangeable. * * NOTE: in the raw output of gram.y, a join tree contains RangeVar, * RangeSubselect, and RangeFunction nodes, which are all replaced by * RangeTblRef nodes during the parse analysis phase. Also, the top-level * FromExpr is added during parse analysis; the grammar regards FROM and * WHERE as separate. * ---------------------------------------------------------------- */ /* * RangeTblRef - reference to an entry in the query's rangetable * * We could use direct pointers to the RT entries and skip having these * nodes, but multiple pointers to the same node in a querytree cause * lots of headaches, so it seems better to store an index into the RT. */ typedef struct RangeTblRef { NodeTag type; int rtindex; } RangeTblRef; /*---------- * JoinExpr - for SQL JOIN expressions * * isNatural, usingClause, and quals are interdependent. The user can write * only one of NATURAL, USING(), or ON() (this is enforced by the grammar). * If he writes NATURAL then parse analysis generates the equivalent USING() * list, and from that fills in "quals" with the right equality comparisons. * If he writes USING() then "quals" is filled with equality comparisons. * If he writes ON() then only "quals" is set. Note that NATURAL/USING * are not equivalent to ON() since they also affect the output column list. * * alias is an Alias node representing the AS alias-clause attached to the * join expression, or NULL if no clause. NB: presence or absence of the * alias has a critical impact on semantics, because a join with an alias * restricts visibility of the tables/columns inside it. * * During parse analysis, an RTE is created for the Join, and its index * is filled into rtindex. This RTE is present mainly so that Vars can * be created that refer to the outputs of the join. The planner sometimes * generates JoinExprs internally; these can have rtindex = 0 if there are * no join alias variables referencing such joins. *---------- */ typedef struct JoinExpr { NodeTag type; JoinType jointype; /* type of join */ bool isNatural; /* Natural join? Will need to shape table */ Node *larg; /* left subtree */ Node *rarg; /* right subtree */ List *usingClause; /* USING clause, if any (list of String) */ Node *quals; /* qualifiers on join, if any */ Alias *alias; /* user-written alias clause, if any */ int rtindex; /* RT index assigned for join, or 0 */ } JoinExpr; /*---------- * FromExpr - represents a FROM ... WHERE ... construct * * This is both more flexible than a JoinExpr (it can have any number of * children, including zero) and less so --- we don't need to deal with * aliases and so on. The output column set is implicitly just the union * of the outputs of the children. *---------- */ typedef struct FromExpr { NodeTag type; List *fromlist; /* List of join subtrees */ Node *quals; /* qualifiers on join, if any */ } FromExpr; /*---------- * OnConflictExpr - represents an ON CONFLICT DO ... expression * * The optimizer requires a list of inference elements, and optionally a WHERE * clause to infer a unique index. The unique index (or, occasionally, * indexes) inferred are used to arbitrate whether or not the alternative ON * CONFLICT path is taken. *---------- */ typedef struct OnConflictExpr { NodeTag type; OnConflictAction action; /* DO NOTHING or UPDATE? */ /* Arbiter */ List *arbiterElems; /* unique index arbiter list (of * InferenceElem's) */ Node *arbiterWhere; /* unique index arbiter WHERE clause */ Oid constraint; /* pg_constraint OID for arbiter */ /* ON CONFLICT UPDATE */ List *onConflictSet; /* List of ON CONFLICT SET TargetEntrys */ Node *onConflictWhere; /* qualifiers to restrict UPDATE to */ int exclRelIndex; /* RT index of 'excluded' relation */ List *exclRelTlist; /* tlist of the EXCLUDED pseudo relation */ } OnConflictExpr; #endif /* PRIMNODES_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/print.h000066400000000000000000000020651413137616400227630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * print.h * definitions for nodes/print.c * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/nodes/print.h * *------------------------------------------------------------------------- */ #ifndef PRINT_H #define PRINT_H #include "executor/tuptable.h" #define nodeDisplay(x) pprint(x) extern void print(const void *obj); extern void pprint(const void *obj); extern void elog_node_display(int lev, const char *title, const void *obj, bool pretty); extern char *format_node_dump(const char *dump); extern char *pretty_format_node_dump(const char *dump); extern void print_rt(const List *rtable); extern void print_expr(const Node *expr, const List *rtable); extern void print_pathkeys(const List *pathkeys, const List *rtable); extern void print_tl(const List *tlist, const List *rtable); extern void print_slot(TupleTableSlot *slot); #endif /* PRINT_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/tidbitmap.h000066400000000000000000000052541413137616400236070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tidbitmap.h * PostgreSQL tuple-id (TID) bitmap package * * This module provides bitmap data structures that are spiritually * similar to Bitmapsets, but are specially adapted to store sets of * tuple identifiers (TIDs), or ItemPointers. In particular, the division * of an ItemPointer into BlockNumber and OffsetNumber is catered for. * Also, since we wish to be able to store very large tuple sets in * memory with this data structure, we support "lossy" storage, in which * we no longer remember individual tuple offsets on a page but only the * fact that a particular page needs to be visited. * * * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/nodes/tidbitmap.h * *------------------------------------------------------------------------- */ #ifndef TIDBITMAP_H #define TIDBITMAP_H #include "storage/itemptr.h" #include "utils/dsa.h" /* * Actual bitmap representation is private to tidbitmap.c. Callers can * do IsA(x, TIDBitmap) on it, but nothing else. */ typedef struct TIDBitmap TIDBitmap; /* Likewise, TBMIterator is private */ typedef struct TBMIterator TBMIterator; typedef struct TBMSharedIterator TBMSharedIterator; /* Result structure for tbm_iterate */ typedef struct TBMIterateResult { BlockNumber blockno; /* page number containing tuples */ int ntuples; /* -1 indicates lossy result */ bool recheck; /* should the tuples be rechecked? */ /* Note: recheck is always true if ntuples < 0 */ OffsetNumber offsets[FLEXIBLE_ARRAY_MEMBER]; } TBMIterateResult; /* function prototypes in nodes/tidbitmap.c */ extern TIDBitmap *tbm_create(long maxbytes, dsa_area *dsa); extern void tbm_free(TIDBitmap *tbm); extern void tbm_free_shared_area(dsa_area *dsa, dsa_pointer dp); extern void tbm_add_tuples(TIDBitmap *tbm, const ItemPointer tids, int ntids, bool recheck); extern void tbm_add_page(TIDBitmap *tbm, BlockNumber pageno); extern void tbm_union(TIDBitmap *a, const TIDBitmap *b); extern void tbm_intersect(TIDBitmap *a, const TIDBitmap *b); extern bool tbm_is_empty(const TIDBitmap *tbm); extern TBMIterator *tbm_begin_iterate(TIDBitmap *tbm); extern dsa_pointer tbm_prepare_shared_iterate(TIDBitmap *tbm); extern TBMIterateResult *tbm_iterate(TBMIterator *iterator); extern TBMIterateResult *tbm_shared_iterate(TBMSharedIterator *iterator); extern void tbm_end_iterate(TBMIterator *iterator); extern void tbm_end_shared_iterate(TBMSharedIterator *iterator); extern TBMSharedIterator *tbm_attach_shared_iterate(dsa_area *dsa, dsa_pointer dp); extern long tbm_calculate_entries(double maxbytes); #endif /* TIDBITMAP_H */ libpg_query-13-2.1.0/src/postgres/include/nodes/value.h000066400000000000000000000034121413137616400227400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * value.h * interface for Value nodes * * * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/nodes/value.h * *------------------------------------------------------------------------- */ #ifndef VALUE_H #define VALUE_H #include "nodes/nodes.h" /*---------------------- * Value node * * The same Value struct is used for five node types: T_Integer, * T_Float, T_String, T_BitString, T_Null. * * Integral values are actually represented by a machine integer, * but both floats and strings are represented as strings. * Using T_Float as the node type simply indicates that * the contents of the string look like a valid numeric literal. * * (Before Postgres 7.0, we used a double to represent T_Float, * but that creates loss-of-precision problems when the value is * ultimately destined to be converted to NUMERIC. Since Value nodes * are only used in the parsing process, not for runtime data, it's * better to use the more general representation.) * * Note that an integer-looking string will get lexed as T_Float if * the value is too large to fit in an 'int'. * * Nulls, of course, don't need the value part at all. *---------------------- */ typedef struct Value { NodeTag type; /* tag appropriately (eg. T_String) */ union ValUnion { int ival; /* machine integer */ char *str; /* string */ } val; } Value; #define intVal(v) (((Value *)(v))->val.ival) #define floatVal(v) atof(((Value *)(v))->val.str) #define strVal(v) (((Value *)(v))->val.str) extern Value *makeInteger(int i); extern Value *makeFloat(char *numericStr); extern Value *makeString(char *str); extern Value *makeBitString(char *str); #endif /* VALUE_H */ libpg_query-13-2.1.0/src/postgres/include/optimizer/000077500000000000000000000000001413137616400223655ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/optimizer/cost.h000066400000000000000000000222311413137616400235060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * cost.h * prototypes for costsize.c and clausesel.c. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/cost.h * *------------------------------------------------------------------------- */ #ifndef COST_H #define COST_H #include "nodes/pathnodes.h" #include "nodes/plannodes.h" /* defaults for costsize.c's Cost parameters */ /* NB: cost-estimation code should use the variables, not these constants! */ /* If you change these, update backend/utils/misc/postgresql.sample.conf */ #define DEFAULT_SEQ_PAGE_COST 1.0 #define DEFAULT_RANDOM_PAGE_COST 4.0 #define DEFAULT_CPU_TUPLE_COST 0.01 #define DEFAULT_CPU_INDEX_TUPLE_COST 0.005 #define DEFAULT_CPU_OPERATOR_COST 0.0025 #define DEFAULT_PARALLEL_TUPLE_COST 0.1 #define DEFAULT_PARALLEL_SETUP_COST 1000.0 #define DEFAULT_EFFECTIVE_CACHE_SIZE 524288 /* measured in pages */ typedef enum { CONSTRAINT_EXCLUSION_OFF, /* do not use c_e */ CONSTRAINT_EXCLUSION_ON, /* apply c_e to all rels */ CONSTRAINT_EXCLUSION_PARTITION /* apply c_e to otherrels only */ } ConstraintExclusionType; /* * prototypes for costsize.c * routines to compute costs and sizes */ /* parameter variables and flags (see also optimizer.h) */ extern PGDLLIMPORT Cost disable_cost; extern PGDLLIMPORT int max_parallel_workers_per_gather; extern PGDLLIMPORT bool enable_seqscan; extern PGDLLIMPORT bool enable_indexscan; extern PGDLLIMPORT bool enable_indexonlyscan; extern PGDLLIMPORT bool enable_bitmapscan; extern PGDLLIMPORT bool enable_tidscan; extern PGDLLIMPORT bool enable_sort; extern PGDLLIMPORT bool enable_incremental_sort; extern PGDLLIMPORT bool enable_hashagg; extern PGDLLIMPORT bool enable_nestloop; extern PGDLLIMPORT bool enable_material; extern PGDLLIMPORT bool enable_mergejoin; extern PGDLLIMPORT bool enable_hashjoin; extern PGDLLIMPORT bool enable_gathermerge; extern PGDLLIMPORT bool enable_partitionwise_join; extern PGDLLIMPORT bool enable_partitionwise_aggregate; extern PGDLLIMPORT bool enable_parallel_append; extern PGDLLIMPORT bool enable_parallel_hash; extern PGDLLIMPORT bool enable_partition_pruning; extern PGDLLIMPORT int constraint_exclusion; extern double index_pages_fetched(double tuples_fetched, BlockNumber pages, double index_pages, PlannerInfo *root); extern void cost_seqscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_samplescan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_index(IndexPath *path, PlannerInfo *root, double loop_count, bool partial_path); extern void cost_bitmap_heap_scan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info, Path *bitmapqual, double loop_count); extern void cost_bitmap_and_node(BitmapAndPath *path, PlannerInfo *root); extern void cost_bitmap_or_node(BitmapOrPath *path, PlannerInfo *root); extern void cost_bitmap_tree_node(Path *path, Cost *cost, Selectivity *selec); extern void cost_tidscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, List *tidquals, ParamPathInfo *param_info); extern void cost_subqueryscan(SubqueryScanPath *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_functionscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_valuesscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_tablefuncscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_ctescan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_namedtuplestorescan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_resultscan(Path *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info); extern void cost_recursive_union(Path *runion, Path *nrterm, Path *rterm); extern void cost_sort(Path *path, PlannerInfo *root, List *pathkeys, Cost input_cost, double tuples, int width, Cost comparison_cost, int sort_mem, double limit_tuples); extern void cost_incremental_sort(Path *path, PlannerInfo *root, List *pathkeys, int presorted_keys, Cost input_startup_cost, Cost input_total_cost, double input_tuples, int width, Cost comparison_cost, int sort_mem, double limit_tuples); extern void cost_append(AppendPath *path); extern void cost_merge_append(Path *path, PlannerInfo *root, List *pathkeys, int n_streams, Cost input_startup_cost, Cost input_total_cost, double tuples); extern void cost_material(Path *path, Cost input_startup_cost, Cost input_total_cost, double tuples, int width); extern void cost_agg(Path *path, PlannerInfo *root, AggStrategy aggstrategy, const AggClauseCosts *aggcosts, int numGroupCols, double numGroups, List *quals, Cost input_startup_cost, Cost input_total_cost, double input_tuples, double input_width); extern void cost_windowagg(Path *path, PlannerInfo *root, List *windowFuncs, int numPartCols, int numOrderCols, Cost input_startup_cost, Cost input_total_cost, double input_tuples); extern void cost_group(Path *path, PlannerInfo *root, int numGroupCols, double numGroups, List *quals, Cost input_startup_cost, Cost input_total_cost, double input_tuples); extern void initial_cost_nestloop(PlannerInfo *root, JoinCostWorkspace *workspace, JoinType jointype, Path *outer_path, Path *inner_path, JoinPathExtraData *extra); extern void final_cost_nestloop(PlannerInfo *root, NestPath *path, JoinCostWorkspace *workspace, JoinPathExtraData *extra); extern void initial_cost_mergejoin(PlannerInfo *root, JoinCostWorkspace *workspace, JoinType jointype, List *mergeclauses, Path *outer_path, Path *inner_path, List *outersortkeys, List *innersortkeys, JoinPathExtraData *extra); extern void final_cost_mergejoin(PlannerInfo *root, MergePath *path, JoinCostWorkspace *workspace, JoinPathExtraData *extra); extern void initial_cost_hashjoin(PlannerInfo *root, JoinCostWorkspace *workspace, JoinType jointype, List *hashclauses, Path *outer_path, Path *inner_path, JoinPathExtraData *extra, bool parallel_hash); extern void final_cost_hashjoin(PlannerInfo *root, HashPath *path, JoinCostWorkspace *workspace, JoinPathExtraData *extra); extern void cost_gather(GatherPath *path, PlannerInfo *root, RelOptInfo *baserel, ParamPathInfo *param_info, double *rows); extern void cost_gather_merge(GatherMergePath *path, PlannerInfo *root, RelOptInfo *rel, ParamPathInfo *param_info, Cost input_startup_cost, Cost input_total_cost, double *rows); extern void cost_subplan(PlannerInfo *root, SubPlan *subplan, Plan *plan); extern void cost_qual_eval(QualCost *cost, List *quals, PlannerInfo *root); extern void cost_qual_eval_node(QualCost *cost, Node *qual, PlannerInfo *root); extern void compute_semi_anti_join_factors(PlannerInfo *root, RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel, JoinType jointype, SpecialJoinInfo *sjinfo, List *restrictlist, SemiAntiJoinFactors *semifactors); extern void set_baserel_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern double get_parameterized_baserel_size(PlannerInfo *root, RelOptInfo *rel, List *param_clauses); extern double get_parameterized_joinrel_size(PlannerInfo *root, RelOptInfo *rel, Path *outer_path, Path *inner_path, SpecialJoinInfo *sjinfo, List *restrict_clauses); extern void set_joinrel_size_estimates(PlannerInfo *root, RelOptInfo *rel, RelOptInfo *outer_rel, RelOptInfo *inner_rel, SpecialJoinInfo *sjinfo, List *restrictlist); extern void set_subquery_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_function_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_values_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_cte_size_estimates(PlannerInfo *root, RelOptInfo *rel, double cte_rows); extern void set_tablefunc_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_namedtuplestore_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_result_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_foreign_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern PathTarget *set_pathtarget_cost_width(PlannerInfo *root, PathTarget *target); extern double compute_bitmap_pages(PlannerInfo *root, RelOptInfo *baserel, Path *bitmapqual, int loop_count, Cost *cost, double *tuple); #endif /* COST_H */ libpg_query-13-2.1.0/src/postgres/include/optimizer/geqo.h000066400000000000000000000042251413137616400234740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * geqo.h * prototypes for various files in optimizer/geqo * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/geqo.h * *------------------------------------------------------------------------- */ /* contributed by: =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= * Martin Utesch * Institute of Automatic Control * = = University of Mining and Technology = * utesch@aut.tu-freiberg.de * Freiberg, Germany * =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= */ #ifndef GEQO_H #define GEQO_H #include "nodes/pathnodes.h" #include "optimizer/geqo_gene.h" /* GEQO debug flag */ /* #define GEQO_DEBUG */ /* choose one recombination mechanism here */ /* #define ERX #define PMX #define CX #define PX #define OX1 #define OX2 */ #define ERX /* * Configuration options * * If you change these, update backend/utils/misc/postgresql.conf.sample */ extern int Geqo_effort; /* 1 .. 10, knob for adjustment of defaults */ #define DEFAULT_GEQO_EFFORT 5 #define MIN_GEQO_EFFORT 1 #define MAX_GEQO_EFFORT 10 extern int Geqo_pool_size; /* 2 .. inf, or 0 to use default */ extern int Geqo_generations; /* 1 .. inf, or 0 to use default */ extern double Geqo_selection_bias; #define DEFAULT_GEQO_SELECTION_BIAS 2.0 #define MIN_GEQO_SELECTION_BIAS 1.5 #define MAX_GEQO_SELECTION_BIAS 2.0 extern double Geqo_seed; /* 0 .. 1 */ /* * Private state for a GEQO run --- accessible via root->join_search_private */ typedef struct { List *initial_rels; /* the base relations we are joining */ unsigned short random_state[3]; /* state for pg_erand48() */ } GeqoPrivateData; /* routines in geqo_main.c */ extern RelOptInfo *geqo(PlannerInfo *root, int number_of_rels, List *initial_rels); /* routines in geqo_eval.c */ extern Cost geqo_eval(PlannerInfo *root, Gene *tour, int num_gene); extern RelOptInfo *gimme_tree(PlannerInfo *root, Gene *tour, int num_gene); #endif /* GEQO_H */ libpg_query-13-2.1.0/src/postgres/include/optimizer/geqo_gene.h000066400000000000000000000021361413137616400244710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * geqo_gene.h * genome representation in optimizer/geqo * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/geqo_gene.h * *------------------------------------------------------------------------- */ /* contributed by: =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= * Martin Utesch * Institute of Automatic Control * = = University of Mining and Technology = * utesch@aut.tu-freiberg.de * Freiberg, Germany * =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= */ #ifndef GEQO_GENE_H #define GEQO_GENE_H #include "nodes/nodes.h" /* we presume that int instead of Relid is o.k. for Gene; so don't change it! */ typedef int Gene; typedef struct Chromosome { Gene *string; Cost worth; } Chromosome; typedef struct Pool { Chromosome *data; int size; int string_length; } Pool; #endif /* GEQO_GENE_H */ libpg_query-13-2.1.0/src/postgres/include/optimizer/optimizer.h000066400000000000000000000156531413137616400245720ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * optimizer.h * External API for the Postgres planner. * * This header is meant to define everything that the core planner * exposes for use by non-planner modules. * * Note that there are files outside src/backend/optimizer/ that are * considered planner modules, because they're too much in bed with * planner operations to be treated otherwise. FDW planning code is an * example. For the most part, however, code outside the core planner * should not need to include any optimizer/ header except this one. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/optimizer.h * *------------------------------------------------------------------------- */ #ifndef OPTIMIZER_H #define OPTIMIZER_H #include "nodes/parsenodes.h" /* Test if an expression node represents a SRF call. Beware multiple eval! */ #define IS_SRF_CALL(node) \ ((IsA(node, FuncExpr) && ((FuncExpr *) (node))->funcretset) || \ (IsA(node, OpExpr) && ((OpExpr *) (node))->opretset)) /* * We don't want to include nodes/pathnodes.h here, because non-planner * code should generally treat PlannerInfo as an opaque typedef. * But we'd like such code to use that typedef name, so define the * typedef either here or in pathnodes.h, whichever is read first. */ #ifndef HAVE_PLANNERINFO_TYPEDEF typedef struct PlannerInfo PlannerInfo; #define HAVE_PLANNERINFO_TYPEDEF 1 #endif /* Likewise for IndexOptInfo and SpecialJoinInfo. */ #ifndef HAVE_INDEXOPTINFO_TYPEDEF typedef struct IndexOptInfo IndexOptInfo; #define HAVE_INDEXOPTINFO_TYPEDEF 1 #endif #ifndef HAVE_SPECIALJOININFO_TYPEDEF typedef struct SpecialJoinInfo SpecialJoinInfo; #define HAVE_SPECIALJOININFO_TYPEDEF 1 #endif /* It also seems best not to include plannodes.h, params.h, or htup.h here */ struct PlannedStmt; struct ParamListInfoData; struct HeapTupleData; /* in path/clausesel.c: */ extern Selectivity clause_selectivity(PlannerInfo *root, Node *clause, int varRelid, JoinType jointype, SpecialJoinInfo *sjinfo); extern Selectivity clauselist_selectivity_simple(PlannerInfo *root, List *clauses, int varRelid, JoinType jointype, SpecialJoinInfo *sjinfo, Bitmapset *estimatedclauses); extern Selectivity clauselist_selectivity(PlannerInfo *root, List *clauses, int varRelid, JoinType jointype, SpecialJoinInfo *sjinfo); /* in path/costsize.c: */ /* widely used cost parameters */ extern PGDLLIMPORT double seq_page_cost; extern PGDLLIMPORT double random_page_cost; extern PGDLLIMPORT double cpu_tuple_cost; extern PGDLLIMPORT double cpu_index_tuple_cost; extern PGDLLIMPORT double cpu_operator_cost; extern PGDLLIMPORT double parallel_tuple_cost; extern PGDLLIMPORT double parallel_setup_cost; extern PGDLLIMPORT int effective_cache_size; extern double clamp_row_est(double nrows); /* in path/indxpath.c: */ extern bool is_pseudo_constant_for_index(Node *expr, IndexOptInfo *index); extern bool is_pseudo_constant_for_index_new(PlannerInfo *root, Node *expr, IndexOptInfo *index); /* in plan/planner.c: */ /* possible values for force_parallel_mode */ typedef enum { FORCE_PARALLEL_OFF, FORCE_PARALLEL_ON, FORCE_PARALLEL_REGRESS } ForceParallelMode; /* GUC parameters */ extern int force_parallel_mode; extern bool parallel_leader_participation; extern struct PlannedStmt *planner(Query *parse, const char *query_string, int cursorOptions, struct ParamListInfoData *boundParams); extern Expr *expression_planner(Expr *expr); extern Expr *expression_planner_with_deps(Expr *expr, List **relationOids, List **invalItems); extern bool plan_cluster_use_sort(Oid tableOid, Oid indexOid); extern int plan_create_index_workers(Oid tableOid, Oid indexOid); /* in plan/setrefs.c: */ extern void extract_query_dependencies(Node *query, List **relationOids, List **invalItems, bool *hasRowSecurity); /* in prep/prepqual.c: */ extern Node *negate_clause(Node *node); extern Expr *canonicalize_qual(Expr *qual, bool is_check); /* in util/clauses.c: */ extern bool contain_mutable_functions(Node *clause); extern bool contain_volatile_functions(Node *clause); extern bool contain_volatile_functions_not_nextval(Node *clause); extern Node *eval_const_expressions(PlannerInfo *root, Node *node); extern Node *estimate_expression_value(PlannerInfo *root, Node *node); extern Expr *evaluate_expr(Expr *expr, Oid result_type, int32 result_typmod, Oid result_collation); extern List *expand_function_arguments(List *args, Oid result_type, struct HeapTupleData *func_tuple); /* in util/predtest.c: */ extern bool predicate_implied_by(List *predicate_list, List *clause_list, bool weak); extern bool predicate_refuted_by(List *predicate_list, List *clause_list, bool weak); /* in util/tlist.c: */ extern int count_nonjunk_tlist_entries(List *tlist); extern TargetEntry *get_sortgroupref_tle(Index sortref, List *targetList); extern TargetEntry *get_sortgroupclause_tle(SortGroupClause *sgClause, List *targetList); extern Node *get_sortgroupclause_expr(SortGroupClause *sgClause, List *targetList); extern List *get_sortgrouplist_exprs(List *sgClauses, List *targetList); extern SortGroupClause *get_sortgroupref_clause(Index sortref, List *clauses); extern SortGroupClause *get_sortgroupref_clause_noerr(Index sortref, List *clauses); /* in util/var.c: */ /* Bits that can be OR'd into the flags argument of pull_var_clause() */ #define PVC_INCLUDE_AGGREGATES 0x0001 /* include Aggrefs in output list */ #define PVC_RECURSE_AGGREGATES 0x0002 /* recurse into Aggref arguments */ #define PVC_INCLUDE_WINDOWFUNCS 0x0004 /* include WindowFuncs in output list */ #define PVC_RECURSE_WINDOWFUNCS 0x0008 /* recurse into WindowFunc arguments */ #define PVC_INCLUDE_PLACEHOLDERS 0x0010 /* include PlaceHolderVars in * output list */ #define PVC_RECURSE_PLACEHOLDERS 0x0020 /* recurse into PlaceHolderVar * arguments */ extern Bitmapset *pull_varnos(Node *node); extern Bitmapset *pull_varnos_of_level(Node *node, int levelsup); extern Bitmapset *pull_varnos_new(PlannerInfo *root, Node *node); extern Bitmapset *pull_varnos_of_level_new(PlannerInfo *root, Node *node, int levelsup); extern void pull_varattnos(Node *node, Index varno, Bitmapset **varattnos); extern List *pull_vars_of_level(Node *node, int levelsup); extern bool contain_var_clause(Node *node); extern bool contain_vars_of_level(Node *node, int levelsup); extern int locate_var_of_level(Node *node, int levelsup); extern List *pull_var_clause(Node *node, int flags); extern Node *flatten_join_alias_vars(Query *query, Node *node); #endif /* OPTIMIZER_H */ libpg_query-13-2.1.0/src/postgres/include/optimizer/paths.h000066400000000000000000000234251413137616400236630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * paths.h * prototypes for various files in optimizer/path * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/paths.h * *------------------------------------------------------------------------- */ #ifndef PATHS_H #define PATHS_H #include "nodes/pathnodes.h" /* * allpaths.c */ extern PGDLLIMPORT bool enable_geqo; extern PGDLLIMPORT int geqo_threshold; extern PGDLLIMPORT int min_parallel_table_scan_size; extern PGDLLIMPORT int min_parallel_index_scan_size; /* Hook for plugins to get control in set_rel_pathlist() */ typedef void (*set_rel_pathlist_hook_type) (PlannerInfo *root, RelOptInfo *rel, Index rti, RangeTblEntry *rte); extern PGDLLIMPORT set_rel_pathlist_hook_type set_rel_pathlist_hook; /* Hook for plugins to get control in add_paths_to_joinrel() */ typedef void (*set_join_pathlist_hook_type) (PlannerInfo *root, RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel, JoinType jointype, JoinPathExtraData *extra); extern PGDLLIMPORT set_join_pathlist_hook_type set_join_pathlist_hook; /* Hook for plugins to replace standard_join_search() */ typedef RelOptInfo *(*join_search_hook_type) (PlannerInfo *root, int levels_needed, List *initial_rels); extern PGDLLIMPORT join_search_hook_type join_search_hook; extern RelOptInfo *make_one_rel(PlannerInfo *root, List *joinlist); extern RelOptInfo *standard_join_search(PlannerInfo *root, int levels_needed, List *initial_rels); extern void generate_gather_paths(PlannerInfo *root, RelOptInfo *rel, bool override_rows); extern void generate_useful_gather_paths(PlannerInfo *root, RelOptInfo *rel, bool override_rows); extern int compute_parallel_worker(RelOptInfo *rel, double heap_pages, double index_pages, int max_workers); extern void create_partial_bitmap_paths(PlannerInfo *root, RelOptInfo *rel, Path *bitmapqual); extern void generate_partitionwise_join_paths(PlannerInfo *root, RelOptInfo *rel); #ifdef OPTIMIZER_DEBUG extern void debug_print_rel(PlannerInfo *root, RelOptInfo *rel); #endif /* * indxpath.c * routines to generate index paths */ extern void create_index_paths(PlannerInfo *root, RelOptInfo *rel); extern bool relation_has_unique_index_for(PlannerInfo *root, RelOptInfo *rel, List *restrictlist, List *exprlist, List *oprlist); extern bool indexcol_is_bool_constant_for_query(PlannerInfo *root, IndexOptInfo *index, int indexcol); extern bool match_index_to_operand(Node *operand, int indexcol, IndexOptInfo *index); extern void check_index_predicates(PlannerInfo *root, RelOptInfo *rel); /* * tidpath.h * routines to generate tid paths */ extern void create_tidscan_paths(PlannerInfo *root, RelOptInfo *rel); /* * joinpath.c * routines to create join paths */ extern void add_paths_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel, RelOptInfo *outerrel, RelOptInfo *innerrel, JoinType jointype, SpecialJoinInfo *sjinfo, List *restrictlist); /* * joinrels.c * routines to determine which relations to join */ extern void join_search_one_level(PlannerInfo *root, int level); extern RelOptInfo *make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2); extern bool have_join_order_restriction(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2); extern bool have_dangerous_phv(PlannerInfo *root, Relids outer_relids, Relids inner_params); extern void mark_dummy_rel(RelOptInfo *rel); /* * equivclass.c * routines for managing EquivalenceClasses */ typedef bool (*ec_matches_callback_type) (PlannerInfo *root, RelOptInfo *rel, EquivalenceClass *ec, EquivalenceMember *em, void *arg); extern bool process_equivalence(PlannerInfo *root, RestrictInfo **p_restrictinfo, bool below_outer_join); extern Expr *canonicalize_ec_expression(Expr *expr, Oid req_type, Oid req_collation); extern void reconsider_outer_join_clauses(PlannerInfo *root); extern EquivalenceClass *get_eclass_for_sort_expr(PlannerInfo *root, Expr *expr, Relids nullable_relids, List *opfamilies, Oid opcintype, Oid collation, Index sortref, Relids rel, bool create_it); extern EquivalenceMember *find_ec_member_matching_expr(EquivalenceClass *ec, Expr *expr, Relids relids); extern EquivalenceMember *find_computable_ec_member(PlannerInfo *root, EquivalenceClass *ec, List *exprs, Relids relids, bool require_parallel_safe); extern Expr *find_em_expr_for_rel(EquivalenceClass *ec, RelOptInfo *rel); extern Expr *find_em_expr_usable_for_sorting_rel(PlannerInfo *root, EquivalenceClass *ec, RelOptInfo *rel, bool require_parallel_safe); extern void generate_base_implied_equalities(PlannerInfo *root); extern List *generate_join_implied_equalities(PlannerInfo *root, Relids join_relids, Relids outer_relids, RelOptInfo *inner_rel); extern List *generate_join_implied_equalities_for_ecs(PlannerInfo *root, List *eclasses, Relids join_relids, Relids outer_relids, RelOptInfo *inner_rel); extern bool exprs_known_equal(PlannerInfo *root, Node *item1, Node *item2); extern EquivalenceClass *match_eclasses_to_foreign_key_col(PlannerInfo *root, ForeignKeyOptInfo *fkinfo, int colno); extern void add_child_rel_equivalences(PlannerInfo *root, AppendRelInfo *appinfo, RelOptInfo *parent_rel, RelOptInfo *child_rel); extern void add_child_join_rel_equivalences(PlannerInfo *root, int nappinfos, AppendRelInfo **appinfos, RelOptInfo *parent_rel, RelOptInfo *child_rel); extern List *generate_implied_equalities_for_column(PlannerInfo *root, RelOptInfo *rel, ec_matches_callback_type callback, void *callback_arg, Relids prohibited_rels); extern bool have_relevant_eclass_joinclause(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2); extern bool has_relevant_eclass_joinclause(PlannerInfo *root, RelOptInfo *rel1); extern bool eclass_useful_for_merging(PlannerInfo *root, EquivalenceClass *eclass, RelOptInfo *rel); extern bool is_redundant_derived_clause(RestrictInfo *rinfo, List *clauselist); extern bool is_redundant_with_indexclauses(RestrictInfo *rinfo, List *indexclauses); /* * pathkeys.c * utilities for matching and building path keys */ typedef enum { PATHKEYS_EQUAL, /* pathkeys are identical */ PATHKEYS_BETTER1, /* pathkey 1 is a superset of pathkey 2 */ PATHKEYS_BETTER2, /* vice versa */ PATHKEYS_DIFFERENT /* neither pathkey includes the other */ } PathKeysComparison; extern PathKeysComparison compare_pathkeys(List *keys1, List *keys2); extern bool pathkeys_contained_in(List *keys1, List *keys2); extern bool pathkeys_count_contained_in(List *keys1, List *keys2, int *n_common); extern Path *get_cheapest_path_for_pathkeys(List *paths, List *pathkeys, Relids required_outer, CostSelector cost_criterion, bool require_parallel_safe); extern Path *get_cheapest_fractional_path_for_pathkeys(List *paths, List *pathkeys, Relids required_outer, double fraction); extern Path *get_cheapest_parallel_safe_total_inner(List *paths); extern List *build_index_pathkeys(PlannerInfo *root, IndexOptInfo *index, ScanDirection scandir); extern List *build_partition_pathkeys(PlannerInfo *root, RelOptInfo *partrel, ScanDirection scandir, bool *partialkeys); extern List *build_expression_pathkey(PlannerInfo *root, Expr *expr, Relids nullable_relids, Oid opno, Relids rel, bool create_it); extern List *convert_subquery_pathkeys(PlannerInfo *root, RelOptInfo *rel, List *subquery_pathkeys, List *subquery_tlist); extern List *build_join_pathkeys(PlannerInfo *root, RelOptInfo *joinrel, JoinType jointype, List *outer_pathkeys); extern List *make_pathkeys_for_sortclauses(PlannerInfo *root, List *sortclauses, List *tlist); extern void initialize_mergeclause_eclasses(PlannerInfo *root, RestrictInfo *restrictinfo); extern void update_mergeclause_eclasses(PlannerInfo *root, RestrictInfo *restrictinfo); extern List *find_mergeclauses_for_outer_pathkeys(PlannerInfo *root, List *pathkeys, List *restrictinfos); extern List *select_outer_pathkeys_for_merge(PlannerInfo *root, List *mergeclauses, RelOptInfo *joinrel); extern List *make_inner_pathkeys_for_merge(PlannerInfo *root, List *mergeclauses, List *outer_pathkeys); extern List *trim_mergeclauses_for_inner_pathkeys(PlannerInfo *root, List *mergeclauses, List *pathkeys); extern List *truncate_useless_pathkeys(PlannerInfo *root, RelOptInfo *rel, List *pathkeys); extern bool has_useful_pathkeys(PlannerInfo *root, RelOptInfo *rel); extern PathKey *make_canonical_pathkey(PlannerInfo *root, EquivalenceClass *eclass, Oid opfamily, int strategy, bool nulls_first); extern void add_paths_to_append_rel(PlannerInfo *root, RelOptInfo *rel, List *live_childrels); #endif /* PATHS_H */ libpg_query-13-2.1.0/src/postgres/include/optimizer/planmain.h000066400000000000000000000104451413137616400243410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * planmain.h * prototypes for various files in optimizer/plan * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/optimizer/planmain.h * *------------------------------------------------------------------------- */ #ifndef PLANMAIN_H #define PLANMAIN_H #include "nodes/pathnodes.h" #include "nodes/plannodes.h" /* GUC parameters */ #define DEFAULT_CURSOR_TUPLE_FRACTION 0.1 extern double cursor_tuple_fraction; /* query_planner callback to compute query_pathkeys */ typedef void (*query_pathkeys_callback) (PlannerInfo *root, void *extra); /* * prototypes for plan/planmain.c */ extern RelOptInfo *query_planner(PlannerInfo *root, query_pathkeys_callback qp_callback, void *qp_extra); /* * prototypes for plan/planagg.c */ extern void preprocess_minmax_aggregates(PlannerInfo *root); /* * prototypes for plan/createplan.c */ extern Plan *create_plan(PlannerInfo *root, Path *best_path); extern ForeignScan *make_foreignscan(List *qptlist, List *qpqual, Index scanrelid, List *fdw_exprs, List *fdw_private, List *fdw_scan_tlist, List *fdw_recheck_quals, Plan *outer_plan); extern Plan *change_plan_targetlist(Plan *subplan, List *tlist, bool tlist_parallel_safe); extern Plan *materialize_finished_plan(Plan *subplan); extern bool is_projection_capable_path(Path *path); extern bool is_projection_capable_plan(Plan *plan); /* External use of these functions is deprecated: */ extern Sort *make_sort_from_sortclauses(List *sortcls, Plan *lefttree); extern Agg *make_agg(List *tlist, List *qual, AggStrategy aggstrategy, AggSplit aggsplit, int numGroupCols, AttrNumber *grpColIdx, Oid *grpOperators, Oid *grpCollations, List *groupingSets, List *chain, double dNumGroups, Size transitionSpace, Plan *lefttree); extern Limit *make_limit(Plan *lefttree, Node *limitOffset, Node *limitCount, LimitOption limitOption, int uniqNumCols, AttrNumber *uniqColIdx, Oid *uniqOperators, Oid *uniqCollations); /* * prototypes for plan/initsplan.c */ extern int from_collapse_limit; extern int join_collapse_limit; extern void add_base_rels_to_query(PlannerInfo *root, Node *jtnode); extern void add_other_rels_to_query(PlannerInfo *root); extern void build_base_rel_tlists(PlannerInfo *root, List *final_tlist); extern void add_vars_to_targetlist(PlannerInfo *root, List *vars, Relids where_needed, bool create_new_ph); extern void find_lateral_references(PlannerInfo *root); extern void create_lateral_join_info(PlannerInfo *root); extern List *deconstruct_jointree(PlannerInfo *root); extern void distribute_restrictinfo_to_rels(PlannerInfo *root, RestrictInfo *restrictinfo); extern void process_implied_equality(PlannerInfo *root, Oid opno, Oid collation, Expr *item1, Expr *item2, Relids qualscope, Relids nullable_relids, Index security_level, bool below_outer_join, bool both_const); extern RestrictInfo *build_implied_join_equality(PlannerInfo *root, Oid opno, Oid collation, Expr *item1, Expr *item2, Relids qualscope, Relids nullable_relids, Index security_level); extern void match_foreign_keys_to_quals(PlannerInfo *root); /* * prototypes for plan/analyzejoins.c */ extern List *remove_useless_joins(PlannerInfo *root, List *joinlist); extern void reduce_unique_semijoins(PlannerInfo *root); extern bool query_supports_distinctness(Query *query); extern bool query_is_distinct_for(Query *query, List *colnos, List *opids); extern bool innerrel_is_unique(PlannerInfo *root, Relids joinrelids, Relids outerrelids, RelOptInfo *innerrel, JoinType jointype, List *restrictlist, bool force_cache); /* * prototypes for plan/setrefs.c */ extern Plan *set_plan_references(PlannerInfo *root, Plan *plan); extern void record_plan_function_dependency(PlannerInfo *root, Oid funcid); extern void record_plan_type_dependency(PlannerInfo *root, Oid typid); extern bool extract_query_dependencies_walker(Node *node, PlannerInfo *root); #endif /* PLANMAIN_H */ libpg_query-13-2.1.0/src/postgres/include/parser/000077500000000000000000000000001413137616400216375ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/parser/analyze.h000066400000000000000000000033661413137616400234630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * analyze.h * parse analysis for optimizable statements * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/analyze.h * *------------------------------------------------------------------------- */ #ifndef ANALYZE_H #define ANALYZE_H #include "parser/parse_node.h" /* Hook for plugins to get control at end of parse analysis */ typedef void (*post_parse_analyze_hook_type) (ParseState *pstate, Query *query); extern PGDLLIMPORT post_parse_analyze_hook_type post_parse_analyze_hook; extern Query *parse_analyze(RawStmt *parseTree, const char *sourceText, Oid *paramTypes, int numParams, QueryEnvironment *queryEnv); extern Query *parse_analyze_varparams(RawStmt *parseTree, const char *sourceText, Oid **paramTypes, int *numParams); extern Query *parse_sub_analyze(Node *parseTree, ParseState *parentParseState, CommonTableExpr *parentCTE, bool locked_from_parent, bool resolve_unknowns); extern Query *transformTopLevelStmt(ParseState *pstate, RawStmt *parseTree); extern Query *transformStmt(ParseState *pstate, Node *parseTree); extern bool analyze_requires_snapshot(RawStmt *parseTree); extern const char *LCS_asString(LockClauseStrength strength); extern void CheckSelectLocking(Query *qry, LockClauseStrength strength); extern void applyLockingClause(Query *qry, Index rtindex, LockClauseStrength strength, LockWaitPolicy waitPolicy, bool pushedDown); extern List *BuildOnConflictExcludedTargetlist(Relation targetrel, Index exclRelIndex); #endif /* ANALYZE_H */ libpg_query-13-2.1.0/src/postgres/include/parser/gram.h000066400000000000000000000534371413137616400227520ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { IDENT = 258, UIDENT = 259, FCONST = 260, SCONST = 261, USCONST = 262, BCONST = 263, XCONST = 264, Op = 265, ICONST = 266, PARAM = 267, TYPECAST = 268, DOT_DOT = 269, COLON_EQUALS = 270, EQUALS_GREATER = 271, LESS_EQUALS = 272, GREATER_EQUALS = 273, NOT_EQUALS = 274, SQL_COMMENT = 275, C_COMMENT = 276, ABORT_P = 277, ABSOLUTE_P = 278, ACCESS = 279, ACTION = 280, ADD_P = 281, ADMIN = 282, AFTER = 283, AGGREGATE = 284, ALL = 285, ALSO = 286, ALTER = 287, ALWAYS = 288, ANALYSE = 289, ANALYZE = 290, AND = 291, ANY = 292, ARRAY = 293, AS = 294, ASC = 295, ASSERTION = 296, ASSIGNMENT = 297, ASYMMETRIC = 298, AT = 299, ATTACH = 300, ATTRIBUTE = 301, AUTHORIZATION = 302, BACKWARD = 303, BEFORE = 304, BEGIN_P = 305, BETWEEN = 306, BIGINT = 307, BINARY = 308, BIT = 309, BOOLEAN_P = 310, BOTH = 311, BY = 312, CACHE = 313, CALL = 314, CALLED = 315, CASCADE = 316, CASCADED = 317, CASE = 318, CAST = 319, CATALOG_P = 320, CHAIN = 321, CHAR_P = 322, CHARACTER = 323, CHARACTERISTICS = 324, CHECK = 325, CHECKPOINT = 326, CLASS = 327, CLOSE = 328, CLUSTER = 329, COALESCE = 330, COLLATE = 331, COLLATION = 332, COLUMN = 333, COLUMNS = 334, COMMENT = 335, COMMENTS = 336, COMMIT = 337, COMMITTED = 338, CONCURRENTLY = 339, CONFIGURATION = 340, CONFLICT = 341, CONNECTION = 342, CONSTRAINT = 343, CONSTRAINTS = 344, CONTENT_P = 345, CONTINUE_P = 346, CONVERSION_P = 347, COPY = 348, COST = 349, CREATE = 350, CROSS = 351, CSV = 352, CUBE = 353, CURRENT_P = 354, CURRENT_CATALOG = 355, CURRENT_DATE = 356, CURRENT_ROLE = 357, CURRENT_SCHEMA = 358, CURRENT_TIME = 359, CURRENT_TIMESTAMP = 360, CURRENT_USER = 361, CURSOR = 362, CYCLE = 363, DATA_P = 364, DATABASE = 365, DAY_P = 366, DEALLOCATE = 367, DEC = 368, DECIMAL_P = 369, DECLARE = 370, DEFAULT = 371, DEFAULTS = 372, DEFERRABLE = 373, DEFERRED = 374, DEFINER = 375, DELETE_P = 376, DELIMITER = 377, DELIMITERS = 378, DEPENDS = 379, DESC = 380, DETACH = 381, DICTIONARY = 382, DISABLE_P = 383, DISCARD = 384, DISTINCT = 385, DO = 386, DOCUMENT_P = 387, DOMAIN_P = 388, DOUBLE_P = 389, DROP = 390, EACH = 391, ELSE = 392, ENABLE_P = 393, ENCODING = 394, ENCRYPTED = 395, END_P = 396, ENUM_P = 397, ESCAPE = 398, EVENT = 399, EXCEPT = 400, EXCLUDE = 401, EXCLUDING = 402, EXCLUSIVE = 403, EXECUTE = 404, EXISTS = 405, EXPLAIN = 406, EXPRESSION = 407, EXTENSION = 408, EXTERNAL = 409, EXTRACT = 410, FALSE_P = 411, FAMILY = 412, FETCH = 413, FILTER = 414, FIRST_P = 415, FLOAT_P = 416, FOLLOWING = 417, FOR = 418, FORCE = 419, FOREIGN = 420, FORWARD = 421, FREEZE = 422, FROM = 423, FULL = 424, FUNCTION = 425, FUNCTIONS = 426, GENERATED = 427, GLOBAL = 428, GRANT = 429, GRANTED = 430, GREATEST = 431, GROUP_P = 432, GROUPING = 433, GROUPS = 434, HANDLER = 435, HAVING = 436, HEADER_P = 437, HOLD = 438, HOUR_P = 439, IDENTITY_P = 440, IF_P = 441, ILIKE = 442, IMMEDIATE = 443, IMMUTABLE = 444, IMPLICIT_P = 445, IMPORT_P = 446, IN_P = 447, INCLUDE = 448, INCLUDING = 449, INCREMENT = 450, INDEX = 451, INDEXES = 452, INHERIT = 453, INHERITS = 454, INITIALLY = 455, INLINE_P = 456, INNER_P = 457, INOUT = 458, INPUT_P = 459, INSENSITIVE = 460, INSERT = 461, INSTEAD = 462, INT_P = 463, INTEGER = 464, INTERSECT = 465, INTERVAL = 466, INTO = 467, INVOKER = 468, IS = 469, ISNULL = 470, ISOLATION = 471, JOIN = 472, KEY = 473, LABEL = 474, LANGUAGE = 475, LARGE_P = 476, LAST_P = 477, LATERAL_P = 478, LEADING = 479, LEAKPROOF = 480, LEAST = 481, LEFT = 482, LEVEL = 483, LIKE = 484, LIMIT = 485, LISTEN = 486, LOAD = 487, LOCAL = 488, LOCALTIME = 489, LOCALTIMESTAMP = 490, LOCATION = 491, LOCK_P = 492, LOCKED = 493, LOGGED = 494, MAPPING = 495, MATCH = 496, MATERIALIZED = 497, MAXVALUE = 498, METHOD = 499, MINUTE_P = 500, MINVALUE = 501, MODE = 502, MONTH_P = 503, MOVE = 504, NAME_P = 505, NAMES = 506, NATIONAL = 507, NATURAL = 508, NCHAR = 509, NEW = 510, NEXT = 511, NFC = 512, NFD = 513, NFKC = 514, NFKD = 515, NO = 516, NONE = 517, NORMALIZE = 518, NORMALIZED = 519, NOT = 520, NOTHING = 521, NOTIFY = 522, NOTNULL = 523, NOWAIT = 524, NULL_P = 525, NULLIF = 526, NULLS_P = 527, NUMERIC = 528, OBJECT_P = 529, OF = 530, OFF = 531, OFFSET = 532, OIDS = 533, OLD = 534, ON = 535, ONLY = 536, OPERATOR = 537, OPTION = 538, OPTIONS = 539, OR = 540, ORDER = 541, ORDINALITY = 542, OTHERS = 543, OUT_P = 544, OUTER_P = 545, OVER = 546, OVERLAPS = 547, OVERLAY = 548, OVERRIDING = 549, OWNED = 550, OWNER = 551, PARALLEL = 552, PARSER = 553, PARTIAL = 554, PARTITION = 555, PASSING = 556, PASSWORD = 557, PLACING = 558, PLANS = 559, POLICY = 560, POSITION = 561, PRECEDING = 562, PRECISION = 563, PRESERVE = 564, PREPARE = 565, PREPARED = 566, PRIMARY = 567, PRIOR = 568, PRIVILEGES = 569, PROCEDURAL = 570, PROCEDURE = 571, PROCEDURES = 572, PROGRAM = 573, PUBLICATION = 574, QUOTE = 575, RANGE = 576, READ = 577, REAL = 578, REASSIGN = 579, RECHECK = 580, RECURSIVE = 581, REF = 582, REFERENCES = 583, REFERENCING = 584, REFRESH = 585, REINDEX = 586, RELATIVE_P = 587, RELEASE = 588, RENAME = 589, REPEATABLE = 590, REPLACE = 591, REPLICA = 592, RESET = 593, RESTART = 594, RESTRICT = 595, RETURNING = 596, RETURNS = 597, REVOKE = 598, RIGHT = 599, ROLE = 600, ROLLBACK = 601, ROLLUP = 602, ROUTINE = 603, ROUTINES = 604, ROW = 605, ROWS = 606, RULE = 607, SAVEPOINT = 608, SCHEMA = 609, SCHEMAS = 610, SCROLL = 611, SEARCH = 612, SECOND_P = 613, SECURITY = 614, SELECT = 615, SEQUENCE = 616, SEQUENCES = 617, SERIALIZABLE = 618, SERVER = 619, SESSION = 620, SESSION_USER = 621, SET = 622, SETS = 623, SETOF = 624, SHARE = 625, SHOW = 626, SIMILAR = 627, SIMPLE = 628, SKIP = 629, SMALLINT = 630, SNAPSHOT = 631, SOME = 632, SQL_P = 633, STABLE = 634, STANDALONE_P = 635, START = 636, STATEMENT = 637, STATISTICS = 638, STDIN = 639, STDOUT = 640, STORAGE = 641, STORED = 642, STRICT_P = 643, STRIP_P = 644, SUBSCRIPTION = 645, SUBSTRING = 646, SUPPORT = 647, SYMMETRIC = 648, SYSID = 649, SYSTEM_P = 650, TABLE = 651, TABLES = 652, TABLESAMPLE = 653, TABLESPACE = 654, TEMP = 655, TEMPLATE = 656, TEMPORARY = 657, TEXT_P = 658, THEN = 659, TIES = 660, TIME = 661, TIMESTAMP = 662, TO = 663, TRAILING = 664, TRANSACTION = 665, TRANSFORM = 666, TREAT = 667, TRIGGER = 668, TRIM = 669, TRUE_P = 670, TRUNCATE = 671, TRUSTED = 672, TYPE_P = 673, TYPES_P = 674, UESCAPE = 675, UNBOUNDED = 676, UNCOMMITTED = 677, UNENCRYPTED = 678, UNION = 679, UNIQUE = 680, UNKNOWN = 681, UNLISTEN = 682, UNLOGGED = 683, UNTIL = 684, UPDATE = 685, USER = 686, USING = 687, VACUUM = 688, VALID = 689, VALIDATE = 690, VALIDATOR = 691, VALUE_P = 692, VALUES = 693, VARCHAR = 694, VARIADIC = 695, VARYING = 696, VERBOSE = 697, VERSION_P = 698, VIEW = 699, VIEWS = 700, VOLATILE = 701, WHEN = 702, WHERE = 703, WHITESPACE_P = 704, WINDOW = 705, WITH = 706, WITHIN = 707, WITHOUT = 708, WORK = 709, WRAPPER = 710, WRITE = 711, XML_P = 712, XMLATTRIBUTES = 713, XMLCONCAT = 714, XMLELEMENT = 715, XMLEXISTS = 716, XMLFOREST = 717, XMLNAMESPACES = 718, XMLPARSE = 719, XMLPI = 720, XMLROOT = 721, XMLSERIALIZE = 722, XMLTABLE = 723, YEAR_P = 724, YES_P = 725, ZONE = 726, NOT_LA = 727, NULLS_LA = 728, WITH_LA = 729, POSTFIXOP = 730, UMINUS = 731 }; #endif /* Tokens. */ #define IDENT 258 #define UIDENT 259 #define FCONST 260 #define SCONST 261 #define USCONST 262 #define BCONST 263 #define XCONST 264 #define Op 265 #define ICONST 266 #define PARAM 267 #define TYPECAST 268 #define DOT_DOT 269 #define COLON_EQUALS 270 #define EQUALS_GREATER 271 #define LESS_EQUALS 272 #define GREATER_EQUALS 273 #define NOT_EQUALS 274 #define SQL_COMMENT 275 #define C_COMMENT 276 #define ABORT_P 277 #define ABSOLUTE_P 278 #define ACCESS 279 #define ACTION 280 #define ADD_P 281 #define ADMIN 282 #define AFTER 283 #define AGGREGATE 284 #define ALL 285 #define ALSO 286 #define ALTER 287 #define ALWAYS 288 #define ANALYSE 289 #define ANALYZE 290 #define AND 291 #define ANY 292 #define ARRAY 293 #define AS 294 #define ASC 295 #define ASSERTION 296 #define ASSIGNMENT 297 #define ASYMMETRIC 298 #define AT 299 #define ATTACH 300 #define ATTRIBUTE 301 #define AUTHORIZATION 302 #define BACKWARD 303 #define BEFORE 304 #define BEGIN_P 305 #define BETWEEN 306 #define BIGINT 307 #define BINARY 308 #define BIT 309 #define BOOLEAN_P 310 #define BOTH 311 #define BY 312 #define CACHE 313 #define CALL 314 #define CALLED 315 #define CASCADE 316 #define CASCADED 317 #define CASE 318 #define CAST 319 #define CATALOG_P 320 #define CHAIN 321 #define CHAR_P 322 #define CHARACTER 323 #define CHARACTERISTICS 324 #define CHECK 325 #define CHECKPOINT 326 #define CLASS 327 #define CLOSE 328 #define CLUSTER 329 #define COALESCE 330 #define COLLATE 331 #define COLLATION 332 #define COLUMN 333 #define COLUMNS 334 #define COMMENT 335 #define COMMENTS 336 #define COMMIT 337 #define COMMITTED 338 #define CONCURRENTLY 339 #define CONFIGURATION 340 #define CONFLICT 341 #define CONNECTION 342 #define CONSTRAINT 343 #define CONSTRAINTS 344 #define CONTENT_P 345 #define CONTINUE_P 346 #define CONVERSION_P 347 #define COPY 348 #define COST 349 #define CREATE 350 #define CROSS 351 #define CSV 352 #define CUBE 353 #define CURRENT_P 354 #define CURRENT_CATALOG 355 #define CURRENT_DATE 356 #define CURRENT_ROLE 357 #define CURRENT_SCHEMA 358 #define CURRENT_TIME 359 #define CURRENT_TIMESTAMP 360 #define CURRENT_USER 361 #define CURSOR 362 #define CYCLE 363 #define DATA_P 364 #define DATABASE 365 #define DAY_P 366 #define DEALLOCATE 367 #define DEC 368 #define DECIMAL_P 369 #define DECLARE 370 #define DEFAULT 371 #define DEFAULTS 372 #define DEFERRABLE 373 #define DEFERRED 374 #define DEFINER 375 #define DELETE_P 376 #define DELIMITER 377 #define DELIMITERS 378 #define DEPENDS 379 #define DESC 380 #define DETACH 381 #define DICTIONARY 382 #define DISABLE_P 383 #define DISCARD 384 #define DISTINCT 385 #define DO 386 #define DOCUMENT_P 387 #define DOMAIN_P 388 #define DOUBLE_P 389 #define DROP 390 #define EACH 391 #define ELSE 392 #define ENABLE_P 393 #define ENCODING 394 #define ENCRYPTED 395 #define END_P 396 #define ENUM_P 397 #define ESCAPE 398 #define EVENT 399 #define EXCEPT 400 #define EXCLUDE 401 #define EXCLUDING 402 #define EXCLUSIVE 403 #define EXECUTE 404 #define EXISTS 405 #define EXPLAIN 406 #define EXPRESSION 407 #define EXTENSION 408 #define EXTERNAL 409 #define EXTRACT 410 #define FALSE_P 411 #define FAMILY 412 #define FETCH 413 #define FILTER 414 #define FIRST_P 415 #define FLOAT_P 416 #define FOLLOWING 417 #define FOR 418 #define FORCE 419 #define FOREIGN 420 #define FORWARD 421 #define FREEZE 422 #define FROM 423 #define FULL 424 #define FUNCTION 425 #define FUNCTIONS 426 #define GENERATED 427 #define GLOBAL 428 #define GRANT 429 #define GRANTED 430 #define GREATEST 431 #define GROUP_P 432 #define GROUPING 433 #define GROUPS 434 #define HANDLER 435 #define HAVING 436 #define HEADER_P 437 #define HOLD 438 #define HOUR_P 439 #define IDENTITY_P 440 #define IF_P 441 #define ILIKE 442 #define IMMEDIATE 443 #define IMMUTABLE 444 #define IMPLICIT_P 445 #define IMPORT_P 446 #define IN_P 447 #define INCLUDE 448 #define INCLUDING 449 #define INCREMENT 450 #define INDEX 451 #define INDEXES 452 #define INHERIT 453 #define INHERITS 454 #define INITIALLY 455 #define INLINE_P 456 #define INNER_P 457 #define INOUT 458 #define INPUT_P 459 #define INSENSITIVE 460 #define INSERT 461 #define INSTEAD 462 #define INT_P 463 #define INTEGER 464 #define INTERSECT 465 #define INTERVAL 466 #define INTO 467 #define INVOKER 468 #define IS 469 #define ISNULL 470 #define ISOLATION 471 #define JOIN 472 #define KEY 473 #define LABEL 474 #define LANGUAGE 475 #define LARGE_P 476 #define LAST_P 477 #define LATERAL_P 478 #define LEADING 479 #define LEAKPROOF 480 #define LEAST 481 #define LEFT 482 #define LEVEL 483 #define LIKE 484 #define LIMIT 485 #define LISTEN 486 #define LOAD 487 #define LOCAL 488 #define LOCALTIME 489 #define LOCALTIMESTAMP 490 #define LOCATION 491 #define LOCK_P 492 #define LOCKED 493 #define LOGGED 494 #define MAPPING 495 #define MATCH 496 #define MATERIALIZED 497 #define MAXVALUE 498 #define METHOD 499 #define MINUTE_P 500 #define MINVALUE 501 #define MODE 502 #define MONTH_P 503 #define MOVE 504 #define NAME_P 505 #define NAMES 506 #define NATIONAL 507 #define NATURAL 508 #define NCHAR 509 #define NEW 510 #define NEXT 511 #define NFC 512 #define NFD 513 #define NFKC 514 #define NFKD 515 #define NO 516 #define NONE 517 #define NORMALIZE 518 #define NORMALIZED 519 #define NOT 520 #define NOTHING 521 #define NOTIFY 522 #define NOTNULL 523 #define NOWAIT 524 #define NULL_P 525 #define NULLIF 526 #define NULLS_P 527 #define NUMERIC 528 #define OBJECT_P 529 #define OF 530 #define OFF 531 #define OFFSET 532 #define OIDS 533 #define OLD 534 #define ON 535 #define ONLY 536 #define OPERATOR 537 #define OPTION 538 #define OPTIONS 539 #define OR 540 #define ORDER 541 #define ORDINALITY 542 #define OTHERS 543 #define OUT_P 544 #define OUTER_P 545 #define OVER 546 #define OVERLAPS 547 #define OVERLAY 548 #define OVERRIDING 549 #define OWNED 550 #define OWNER 551 #define PARALLEL 552 #define PARSER 553 #define PARTIAL 554 #define PARTITION 555 #define PASSING 556 #define PASSWORD 557 #define PLACING 558 #define PLANS 559 #define POLICY 560 #define POSITION 561 #define PRECEDING 562 #define PRECISION 563 #define PRESERVE 564 #define PREPARE 565 #define PREPARED 566 #define PRIMARY 567 #define PRIOR 568 #define PRIVILEGES 569 #define PROCEDURAL 570 #define PROCEDURE 571 #define PROCEDURES 572 #define PROGRAM 573 #define PUBLICATION 574 #define QUOTE 575 #define RANGE 576 #define READ 577 #define REAL 578 #define REASSIGN 579 #define RECHECK 580 #define RECURSIVE 581 #define REF 582 #define REFERENCES 583 #define REFERENCING 584 #define REFRESH 585 #define REINDEX 586 #define RELATIVE_P 587 #define RELEASE 588 #define RENAME 589 #define REPEATABLE 590 #define REPLACE 591 #define REPLICA 592 #define RESET 593 #define RESTART 594 #define RESTRICT 595 #define RETURNING 596 #define RETURNS 597 #define REVOKE 598 #define RIGHT 599 #define ROLE 600 #define ROLLBACK 601 #define ROLLUP 602 #define ROUTINE 603 #define ROUTINES 604 #define ROW 605 #define ROWS 606 #define RULE 607 #define SAVEPOINT 608 #define SCHEMA 609 #define SCHEMAS 610 #define SCROLL 611 #define SEARCH 612 #define SECOND_P 613 #define SECURITY 614 #define SELECT 615 #define SEQUENCE 616 #define SEQUENCES 617 #define SERIALIZABLE 618 #define SERVER 619 #define SESSION 620 #define SESSION_USER 621 #define SET 622 #define SETS 623 #define SETOF 624 #define SHARE 625 #define SHOW 626 #define SIMILAR 627 #define SIMPLE 628 #define SKIP 629 #define SMALLINT 630 #define SNAPSHOT 631 #define SOME 632 #define SQL_P 633 #define STABLE 634 #define STANDALONE_P 635 #define START 636 #define STATEMENT 637 #define STATISTICS 638 #define STDIN 639 #define STDOUT 640 #define STORAGE 641 #define STORED 642 #define STRICT_P 643 #define STRIP_P 644 #define SUBSCRIPTION 645 #define SUBSTRING 646 #define SUPPORT 647 #define SYMMETRIC 648 #define SYSID 649 #define SYSTEM_P 650 #define TABLE 651 #define TABLES 652 #define TABLESAMPLE 653 #define TABLESPACE 654 #define TEMP 655 #define TEMPLATE 656 #define TEMPORARY 657 #define TEXT_P 658 #define THEN 659 #define TIES 660 #define TIME 661 #define TIMESTAMP 662 #define TO 663 #define TRAILING 664 #define TRANSACTION 665 #define TRANSFORM 666 #define TREAT 667 #define TRIGGER 668 #define TRIM 669 #define TRUE_P 670 #define TRUNCATE 671 #define TRUSTED 672 #define TYPE_P 673 #define TYPES_P 674 #define UESCAPE 675 #define UNBOUNDED 676 #define UNCOMMITTED 677 #define UNENCRYPTED 678 #define UNION 679 #define UNIQUE 680 #define UNKNOWN 681 #define UNLISTEN 682 #define UNLOGGED 683 #define UNTIL 684 #define UPDATE 685 #define USER 686 #define USING 687 #define VACUUM 688 #define VALID 689 #define VALIDATE 690 #define VALIDATOR 691 #define VALUE_P 692 #define VALUES 693 #define VARCHAR 694 #define VARIADIC 695 #define VARYING 696 #define VERBOSE 697 #define VERSION_P 698 #define VIEW 699 #define VIEWS 700 #define VOLATILE 701 #define WHEN 702 #define WHERE 703 #define WHITESPACE_P 704 #define WINDOW 705 #define WITH 706 #define WITHIN 707 #define WITHOUT 708 #define WORK 709 #define WRAPPER 710 #define WRITE 711 #define XML_P 712 #define XMLATTRIBUTES 713 #define XMLCONCAT 714 #define XMLELEMENT 715 #define XMLEXISTS 716 #define XMLFOREST 717 #define XMLNAMESPACES 718 #define XMLPARSE 719 #define XMLPI 720 #define XMLROOT 721 #define XMLSERIALIZE 722 #define XMLTABLE 723 #define YEAR_P 724 #define YES_P 725 #define ZONE 726 #define NOT_LA 727 #define NULLS_LA 728 #define WITH_LA 729 #define POSTFIXOP 730 #define UMINUS 731 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 214 "gram.y" { core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; char *str; const char *keyword; char chr; bool boolean; JoinType jtype; DropBehavior dbehavior; OnCommitAction oncommit; List *list; Node *node; Value *value; ObjectType objtype; TypeName *typnam; FunctionParameter *fun_param; FunctionParameterMode fun_param_mode; ObjectWithArgs *objwithargs; DefElem *defelt; SortBy *sortby; WindowDef *windef; JoinExpr *jexpr; IndexElem *ielem; Alias *alias; RangeVar *range; IntoClause *into; WithClause *with; InferClause *infer; OnConflictClause *onconflict; A_Indices *aind; ResTarget *target; struct PrivTarget *privtarget; AccessPriv *accesspriv; struct ImportQual *importqual; InsertStmt *istmt; VariableSetStmt *vsetstmt; PartitionElem *partelem; PartitionSpec *partspec; PartitionBoundSpec *partboundspec; RoleSpec *rolespec; struct SelectLimit *selectlimit; } /* Line 1529 of yacc.c. */ #line 1046 "gram.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; } YYLTYPE; # define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif libpg_query-13-2.1.0/src/postgres/include/parser/gramparse.h000066400000000000000000000043541413137616400237770ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * gramparse.h * Shared definitions for the "raw" parser (flex and bison phases only) * * NOTE: this file is only meant to be included in the core parsing files, * ie, parser.c, gram.y, scan.l, and src/common/keywords.c. * Definitions that are needed outside the core parser should be in parser.h. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/gramparse.h * *------------------------------------------------------------------------- */ #ifndef GRAMPARSE_H #define GRAMPARSE_H #include "nodes/parsenodes.h" #include "parser/scanner.h" /* * NB: include gram.h only AFTER including scanner.h, because scanner.h * is what #defines YYLTYPE. */ #include "parser/gram.h" /* * The YY_EXTRA data that a flex scanner allows us to pass around. Private * state needed for raw parsing/lexing goes here. */ typedef struct base_yy_extra_type { /* * Fields used by the core scanner. */ core_yy_extra_type core_yy_extra; /* * State variables for base_yylex(). */ bool have_lookahead; /* is lookahead info valid? */ int lookahead_token; /* one-token lookahead */ core_YYSTYPE lookahead_yylval; /* yylval for lookahead token */ YYLTYPE lookahead_yylloc; /* yylloc for lookahead token */ char *lookahead_end; /* end of current token */ char lookahead_hold_char; /* to be put back at *lookahead_end */ /* * State variables that belong to the grammar. */ List *parsetree; /* final parse result is delivered here */ } base_yy_extra_type; /* * In principle we should use yyget_extra() to fetch the yyextra field * from a yyscanner struct. However, flex always puts that field first, * and this is sufficiently performance-critical to make it seem worth * cheating a bit to use an inline macro. */ #define pg_yyget_extra(yyscanner) (*((base_yy_extra_type **) (yyscanner))) /* from parser.c */ extern int base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner); /* from gram.y */ extern void parser_init(base_yy_extra_type *yyext); extern int base_yyparse(core_yyscan_t yyscanner); #endif /* GRAMPARSE_H */ libpg_query-13-2.1.0/src/postgres/include/parser/kwlist.h000066400000000000000000000556141413137616400233400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * kwlist.h * * The keyword lists are kept in their own source files for use by * automatic tools. The exact representation of a keyword is determined * by the PG_KEYWORD macro, which is not defined in this file; it can * be defined by the caller for special purposes. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/parser/kwlist.h * *------------------------------------------------------------------------- */ /* there is deliberately not an #ifndef KWLIST_H here */ /* * List of keyword (name, token-value, category) entries. * * Note: gen_keywordlist.pl requires the entries to appear in ASCII order. */ /* name, value, category */ PG_KEYWORD("abort", ABORT_P, UNRESERVED_KEYWORD) PG_KEYWORD("absolute", ABSOLUTE_P, UNRESERVED_KEYWORD) PG_KEYWORD("access", ACCESS, UNRESERVED_KEYWORD) PG_KEYWORD("action", ACTION, UNRESERVED_KEYWORD) PG_KEYWORD("add", ADD_P, UNRESERVED_KEYWORD) PG_KEYWORD("admin", ADMIN, UNRESERVED_KEYWORD) PG_KEYWORD("after", AFTER, UNRESERVED_KEYWORD) PG_KEYWORD("aggregate", AGGREGATE, UNRESERVED_KEYWORD) PG_KEYWORD("all", ALL, RESERVED_KEYWORD) PG_KEYWORD("also", ALSO, UNRESERVED_KEYWORD) PG_KEYWORD("alter", ALTER, UNRESERVED_KEYWORD) PG_KEYWORD("always", ALWAYS, UNRESERVED_KEYWORD) PG_KEYWORD("analyse", ANALYSE, RESERVED_KEYWORD) /* British spelling */ PG_KEYWORD("analyze", ANALYZE, RESERVED_KEYWORD) PG_KEYWORD("and", AND, RESERVED_KEYWORD) PG_KEYWORD("any", ANY, RESERVED_KEYWORD) PG_KEYWORD("array", ARRAY, RESERVED_KEYWORD) PG_KEYWORD("as", AS, RESERVED_KEYWORD) PG_KEYWORD("asc", ASC, RESERVED_KEYWORD) PG_KEYWORD("assertion", ASSERTION, UNRESERVED_KEYWORD) PG_KEYWORD("assignment", ASSIGNMENT, UNRESERVED_KEYWORD) PG_KEYWORD("asymmetric", ASYMMETRIC, RESERVED_KEYWORD) PG_KEYWORD("at", AT, UNRESERVED_KEYWORD) PG_KEYWORD("attach", ATTACH, UNRESERVED_KEYWORD) PG_KEYWORD("attribute", ATTRIBUTE, UNRESERVED_KEYWORD) PG_KEYWORD("authorization", AUTHORIZATION, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("backward", BACKWARD, UNRESERVED_KEYWORD) PG_KEYWORD("before", BEFORE, UNRESERVED_KEYWORD) PG_KEYWORD("begin", BEGIN_P, UNRESERVED_KEYWORD) PG_KEYWORD("between", BETWEEN, COL_NAME_KEYWORD) PG_KEYWORD("bigint", BIGINT, COL_NAME_KEYWORD) PG_KEYWORD("binary", BINARY, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("bit", BIT, COL_NAME_KEYWORD) PG_KEYWORD("boolean", BOOLEAN_P, COL_NAME_KEYWORD) PG_KEYWORD("both", BOTH, RESERVED_KEYWORD) PG_KEYWORD("by", BY, UNRESERVED_KEYWORD) PG_KEYWORD("cache", CACHE, UNRESERVED_KEYWORD) PG_KEYWORD("call", CALL, UNRESERVED_KEYWORD) PG_KEYWORD("called", CALLED, UNRESERVED_KEYWORD) PG_KEYWORD("cascade", CASCADE, UNRESERVED_KEYWORD) PG_KEYWORD("cascaded", CASCADED, UNRESERVED_KEYWORD) PG_KEYWORD("case", CASE, RESERVED_KEYWORD) PG_KEYWORD("cast", CAST, RESERVED_KEYWORD) PG_KEYWORD("catalog", CATALOG_P, UNRESERVED_KEYWORD) PG_KEYWORD("chain", CHAIN, UNRESERVED_KEYWORD) PG_KEYWORD("char", CHAR_P, COL_NAME_KEYWORD) PG_KEYWORD("character", CHARACTER, COL_NAME_KEYWORD) PG_KEYWORD("characteristics", CHARACTERISTICS, UNRESERVED_KEYWORD) PG_KEYWORD("check", CHECK, RESERVED_KEYWORD) PG_KEYWORD("checkpoint", CHECKPOINT, UNRESERVED_KEYWORD) PG_KEYWORD("class", CLASS, UNRESERVED_KEYWORD) PG_KEYWORD("close", CLOSE, UNRESERVED_KEYWORD) PG_KEYWORD("cluster", CLUSTER, UNRESERVED_KEYWORD) PG_KEYWORD("coalesce", COALESCE, COL_NAME_KEYWORD) PG_KEYWORD("collate", COLLATE, RESERVED_KEYWORD) PG_KEYWORD("collation", COLLATION, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("column", COLUMN, RESERVED_KEYWORD) PG_KEYWORD("columns", COLUMNS, UNRESERVED_KEYWORD) PG_KEYWORD("comment", COMMENT, UNRESERVED_KEYWORD) PG_KEYWORD("comments", COMMENTS, UNRESERVED_KEYWORD) PG_KEYWORD("commit", COMMIT, UNRESERVED_KEYWORD) PG_KEYWORD("committed", COMMITTED, UNRESERVED_KEYWORD) PG_KEYWORD("concurrently", CONCURRENTLY, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("configuration", CONFIGURATION, UNRESERVED_KEYWORD) PG_KEYWORD("conflict", CONFLICT, UNRESERVED_KEYWORD) PG_KEYWORD("connection", CONNECTION, UNRESERVED_KEYWORD) PG_KEYWORD("constraint", CONSTRAINT, RESERVED_KEYWORD) PG_KEYWORD("constraints", CONSTRAINTS, UNRESERVED_KEYWORD) PG_KEYWORD("content", CONTENT_P, UNRESERVED_KEYWORD) PG_KEYWORD("continue", CONTINUE_P, UNRESERVED_KEYWORD) PG_KEYWORD("conversion", CONVERSION_P, UNRESERVED_KEYWORD) PG_KEYWORD("copy", COPY, UNRESERVED_KEYWORD) PG_KEYWORD("cost", COST, UNRESERVED_KEYWORD) PG_KEYWORD("create", CREATE, RESERVED_KEYWORD) PG_KEYWORD("cross", CROSS, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("csv", CSV, UNRESERVED_KEYWORD) PG_KEYWORD("cube", CUBE, UNRESERVED_KEYWORD) PG_KEYWORD("current", CURRENT_P, UNRESERVED_KEYWORD) PG_KEYWORD("current_catalog", CURRENT_CATALOG, RESERVED_KEYWORD) PG_KEYWORD("current_date", CURRENT_DATE, RESERVED_KEYWORD) PG_KEYWORD("current_role", CURRENT_ROLE, RESERVED_KEYWORD) PG_KEYWORD("current_schema", CURRENT_SCHEMA, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("current_time", CURRENT_TIME, RESERVED_KEYWORD) PG_KEYWORD("current_timestamp", CURRENT_TIMESTAMP, RESERVED_KEYWORD) PG_KEYWORD("current_user", CURRENT_USER, RESERVED_KEYWORD) PG_KEYWORD("cursor", CURSOR, UNRESERVED_KEYWORD) PG_KEYWORD("cycle", CYCLE, UNRESERVED_KEYWORD) PG_KEYWORD("data", DATA_P, UNRESERVED_KEYWORD) PG_KEYWORD("database", DATABASE, UNRESERVED_KEYWORD) PG_KEYWORD("day", DAY_P, UNRESERVED_KEYWORD) PG_KEYWORD("deallocate", DEALLOCATE, UNRESERVED_KEYWORD) PG_KEYWORD("dec", DEC, COL_NAME_KEYWORD) PG_KEYWORD("decimal", DECIMAL_P, COL_NAME_KEYWORD) PG_KEYWORD("declare", DECLARE, UNRESERVED_KEYWORD) PG_KEYWORD("default", DEFAULT, RESERVED_KEYWORD) PG_KEYWORD("defaults", DEFAULTS, UNRESERVED_KEYWORD) PG_KEYWORD("deferrable", DEFERRABLE, RESERVED_KEYWORD) PG_KEYWORD("deferred", DEFERRED, UNRESERVED_KEYWORD) PG_KEYWORD("definer", DEFINER, UNRESERVED_KEYWORD) PG_KEYWORD("delete", DELETE_P, UNRESERVED_KEYWORD) PG_KEYWORD("delimiter", DELIMITER, UNRESERVED_KEYWORD) PG_KEYWORD("delimiters", DELIMITERS, UNRESERVED_KEYWORD) PG_KEYWORD("depends", DEPENDS, UNRESERVED_KEYWORD) PG_KEYWORD("desc", DESC, RESERVED_KEYWORD) PG_KEYWORD("detach", DETACH, UNRESERVED_KEYWORD) PG_KEYWORD("dictionary", DICTIONARY, UNRESERVED_KEYWORD) PG_KEYWORD("disable", DISABLE_P, UNRESERVED_KEYWORD) PG_KEYWORD("discard", DISCARD, UNRESERVED_KEYWORD) PG_KEYWORD("distinct", DISTINCT, RESERVED_KEYWORD) PG_KEYWORD("do", DO, RESERVED_KEYWORD) PG_KEYWORD("document", DOCUMENT_P, UNRESERVED_KEYWORD) PG_KEYWORD("domain", DOMAIN_P, UNRESERVED_KEYWORD) PG_KEYWORD("double", DOUBLE_P, UNRESERVED_KEYWORD) PG_KEYWORD("drop", DROP, UNRESERVED_KEYWORD) PG_KEYWORD("each", EACH, UNRESERVED_KEYWORD) PG_KEYWORD("else", ELSE, RESERVED_KEYWORD) PG_KEYWORD("enable", ENABLE_P, UNRESERVED_KEYWORD) PG_KEYWORD("encoding", ENCODING, UNRESERVED_KEYWORD) PG_KEYWORD("encrypted", ENCRYPTED, UNRESERVED_KEYWORD) PG_KEYWORD("end", END_P, RESERVED_KEYWORD) PG_KEYWORD("enum", ENUM_P, UNRESERVED_KEYWORD) PG_KEYWORD("escape", ESCAPE, UNRESERVED_KEYWORD) PG_KEYWORD("event", EVENT, UNRESERVED_KEYWORD) PG_KEYWORD("except", EXCEPT, RESERVED_KEYWORD) PG_KEYWORD("exclude", EXCLUDE, UNRESERVED_KEYWORD) PG_KEYWORD("excluding", EXCLUDING, UNRESERVED_KEYWORD) PG_KEYWORD("exclusive", EXCLUSIVE, UNRESERVED_KEYWORD) PG_KEYWORD("execute", EXECUTE, UNRESERVED_KEYWORD) PG_KEYWORD("exists", EXISTS, COL_NAME_KEYWORD) PG_KEYWORD("explain", EXPLAIN, UNRESERVED_KEYWORD) PG_KEYWORD("expression", EXPRESSION, UNRESERVED_KEYWORD) PG_KEYWORD("extension", EXTENSION, UNRESERVED_KEYWORD) PG_KEYWORD("external", EXTERNAL, UNRESERVED_KEYWORD) PG_KEYWORD("extract", EXTRACT, COL_NAME_KEYWORD) PG_KEYWORD("false", FALSE_P, RESERVED_KEYWORD) PG_KEYWORD("family", FAMILY, UNRESERVED_KEYWORD) PG_KEYWORD("fetch", FETCH, RESERVED_KEYWORD) PG_KEYWORD("filter", FILTER, UNRESERVED_KEYWORD) PG_KEYWORD("first", FIRST_P, UNRESERVED_KEYWORD) PG_KEYWORD("float", FLOAT_P, COL_NAME_KEYWORD) PG_KEYWORD("following", FOLLOWING, UNRESERVED_KEYWORD) PG_KEYWORD("for", FOR, RESERVED_KEYWORD) PG_KEYWORD("force", FORCE, UNRESERVED_KEYWORD) PG_KEYWORD("foreign", FOREIGN, RESERVED_KEYWORD) PG_KEYWORD("forward", FORWARD, UNRESERVED_KEYWORD) PG_KEYWORD("freeze", FREEZE, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("from", FROM, RESERVED_KEYWORD) PG_KEYWORD("full", FULL, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("function", FUNCTION, UNRESERVED_KEYWORD) PG_KEYWORD("functions", FUNCTIONS, UNRESERVED_KEYWORD) PG_KEYWORD("generated", GENERATED, UNRESERVED_KEYWORD) PG_KEYWORD("global", GLOBAL, UNRESERVED_KEYWORD) PG_KEYWORD("grant", GRANT, RESERVED_KEYWORD) PG_KEYWORD("granted", GRANTED, UNRESERVED_KEYWORD) PG_KEYWORD("greatest", GREATEST, COL_NAME_KEYWORD) PG_KEYWORD("group", GROUP_P, RESERVED_KEYWORD) PG_KEYWORD("grouping", GROUPING, COL_NAME_KEYWORD) PG_KEYWORD("groups", GROUPS, UNRESERVED_KEYWORD) PG_KEYWORD("handler", HANDLER, UNRESERVED_KEYWORD) PG_KEYWORD("having", HAVING, RESERVED_KEYWORD) PG_KEYWORD("header", HEADER_P, UNRESERVED_KEYWORD) PG_KEYWORD("hold", HOLD, UNRESERVED_KEYWORD) PG_KEYWORD("hour", HOUR_P, UNRESERVED_KEYWORD) PG_KEYWORD("identity", IDENTITY_P, UNRESERVED_KEYWORD) PG_KEYWORD("if", IF_P, UNRESERVED_KEYWORD) PG_KEYWORD("ilike", ILIKE, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("immediate", IMMEDIATE, UNRESERVED_KEYWORD) PG_KEYWORD("immutable", IMMUTABLE, UNRESERVED_KEYWORD) PG_KEYWORD("implicit", IMPLICIT_P, UNRESERVED_KEYWORD) PG_KEYWORD("import", IMPORT_P, UNRESERVED_KEYWORD) PG_KEYWORD("in", IN_P, RESERVED_KEYWORD) PG_KEYWORD("include", INCLUDE, UNRESERVED_KEYWORD) PG_KEYWORD("including", INCLUDING, UNRESERVED_KEYWORD) PG_KEYWORD("increment", INCREMENT, UNRESERVED_KEYWORD) PG_KEYWORD("index", INDEX, UNRESERVED_KEYWORD) PG_KEYWORD("indexes", INDEXES, UNRESERVED_KEYWORD) PG_KEYWORD("inherit", INHERIT, UNRESERVED_KEYWORD) PG_KEYWORD("inherits", INHERITS, UNRESERVED_KEYWORD) PG_KEYWORD("initially", INITIALLY, RESERVED_KEYWORD) PG_KEYWORD("inline", INLINE_P, UNRESERVED_KEYWORD) PG_KEYWORD("inner", INNER_P, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("inout", INOUT, COL_NAME_KEYWORD) PG_KEYWORD("input", INPUT_P, UNRESERVED_KEYWORD) PG_KEYWORD("insensitive", INSENSITIVE, UNRESERVED_KEYWORD) PG_KEYWORD("insert", INSERT, UNRESERVED_KEYWORD) PG_KEYWORD("instead", INSTEAD, UNRESERVED_KEYWORD) PG_KEYWORD("int", INT_P, COL_NAME_KEYWORD) PG_KEYWORD("integer", INTEGER, COL_NAME_KEYWORD) PG_KEYWORD("intersect", INTERSECT, RESERVED_KEYWORD) PG_KEYWORD("interval", INTERVAL, COL_NAME_KEYWORD) PG_KEYWORD("into", INTO, RESERVED_KEYWORD) PG_KEYWORD("invoker", INVOKER, UNRESERVED_KEYWORD) PG_KEYWORD("is", IS, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("isnull", ISNULL, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("isolation", ISOLATION, UNRESERVED_KEYWORD) PG_KEYWORD("join", JOIN, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("key", KEY, UNRESERVED_KEYWORD) PG_KEYWORD("label", LABEL, UNRESERVED_KEYWORD) PG_KEYWORD("language", LANGUAGE, UNRESERVED_KEYWORD) PG_KEYWORD("large", LARGE_P, UNRESERVED_KEYWORD) PG_KEYWORD("last", LAST_P, UNRESERVED_KEYWORD) PG_KEYWORD("lateral", LATERAL_P, RESERVED_KEYWORD) PG_KEYWORD("leading", LEADING, RESERVED_KEYWORD) PG_KEYWORD("leakproof", LEAKPROOF, UNRESERVED_KEYWORD) PG_KEYWORD("least", LEAST, COL_NAME_KEYWORD) PG_KEYWORD("left", LEFT, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("level", LEVEL, UNRESERVED_KEYWORD) PG_KEYWORD("like", LIKE, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("limit", LIMIT, RESERVED_KEYWORD) PG_KEYWORD("listen", LISTEN, UNRESERVED_KEYWORD) PG_KEYWORD("load", LOAD, UNRESERVED_KEYWORD) PG_KEYWORD("local", LOCAL, UNRESERVED_KEYWORD) PG_KEYWORD("localtime", LOCALTIME, RESERVED_KEYWORD) PG_KEYWORD("localtimestamp", LOCALTIMESTAMP, RESERVED_KEYWORD) PG_KEYWORD("location", LOCATION, UNRESERVED_KEYWORD) PG_KEYWORD("lock", LOCK_P, UNRESERVED_KEYWORD) PG_KEYWORD("locked", LOCKED, UNRESERVED_KEYWORD) PG_KEYWORD("logged", LOGGED, UNRESERVED_KEYWORD) PG_KEYWORD("mapping", MAPPING, UNRESERVED_KEYWORD) PG_KEYWORD("match", MATCH, UNRESERVED_KEYWORD) PG_KEYWORD("materialized", MATERIALIZED, UNRESERVED_KEYWORD) PG_KEYWORD("maxvalue", MAXVALUE, UNRESERVED_KEYWORD) PG_KEYWORD("method", METHOD, UNRESERVED_KEYWORD) PG_KEYWORD("minute", MINUTE_P, UNRESERVED_KEYWORD) PG_KEYWORD("minvalue", MINVALUE, UNRESERVED_KEYWORD) PG_KEYWORD("mode", MODE, UNRESERVED_KEYWORD) PG_KEYWORD("month", MONTH_P, UNRESERVED_KEYWORD) PG_KEYWORD("move", MOVE, UNRESERVED_KEYWORD) PG_KEYWORD("name", NAME_P, UNRESERVED_KEYWORD) PG_KEYWORD("names", NAMES, UNRESERVED_KEYWORD) PG_KEYWORD("national", NATIONAL, COL_NAME_KEYWORD) PG_KEYWORD("natural", NATURAL, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("nchar", NCHAR, COL_NAME_KEYWORD) PG_KEYWORD("new", NEW, UNRESERVED_KEYWORD) PG_KEYWORD("next", NEXT, UNRESERVED_KEYWORD) PG_KEYWORD("nfc", NFC, UNRESERVED_KEYWORD) PG_KEYWORD("nfd", NFD, UNRESERVED_KEYWORD) PG_KEYWORD("nfkc", NFKC, UNRESERVED_KEYWORD) PG_KEYWORD("nfkd", NFKD, UNRESERVED_KEYWORD) PG_KEYWORD("no", NO, UNRESERVED_KEYWORD) PG_KEYWORD("none", NONE, COL_NAME_KEYWORD) PG_KEYWORD("normalize", NORMALIZE, COL_NAME_KEYWORD) PG_KEYWORD("normalized", NORMALIZED, UNRESERVED_KEYWORD) PG_KEYWORD("not", NOT, RESERVED_KEYWORD) PG_KEYWORD("nothing", NOTHING, UNRESERVED_KEYWORD) PG_KEYWORD("notify", NOTIFY, UNRESERVED_KEYWORD) PG_KEYWORD("notnull", NOTNULL, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("nowait", NOWAIT, UNRESERVED_KEYWORD) PG_KEYWORD("null", NULL_P, RESERVED_KEYWORD) PG_KEYWORD("nullif", NULLIF, COL_NAME_KEYWORD) PG_KEYWORD("nulls", NULLS_P, UNRESERVED_KEYWORD) PG_KEYWORD("numeric", NUMERIC, COL_NAME_KEYWORD) PG_KEYWORD("object", OBJECT_P, UNRESERVED_KEYWORD) PG_KEYWORD("of", OF, UNRESERVED_KEYWORD) PG_KEYWORD("off", OFF, UNRESERVED_KEYWORD) PG_KEYWORD("offset", OFFSET, RESERVED_KEYWORD) PG_KEYWORD("oids", OIDS, UNRESERVED_KEYWORD) PG_KEYWORD("old", OLD, UNRESERVED_KEYWORD) PG_KEYWORD("on", ON, RESERVED_KEYWORD) PG_KEYWORD("only", ONLY, RESERVED_KEYWORD) PG_KEYWORD("operator", OPERATOR, UNRESERVED_KEYWORD) PG_KEYWORD("option", OPTION, UNRESERVED_KEYWORD) PG_KEYWORD("options", OPTIONS, UNRESERVED_KEYWORD) PG_KEYWORD("or", OR, RESERVED_KEYWORD) PG_KEYWORD("order", ORDER, RESERVED_KEYWORD) PG_KEYWORD("ordinality", ORDINALITY, UNRESERVED_KEYWORD) PG_KEYWORD("others", OTHERS, UNRESERVED_KEYWORD) PG_KEYWORD("out", OUT_P, COL_NAME_KEYWORD) PG_KEYWORD("outer", OUTER_P, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("over", OVER, UNRESERVED_KEYWORD) PG_KEYWORD("overlaps", OVERLAPS, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("overlay", OVERLAY, COL_NAME_KEYWORD) PG_KEYWORD("overriding", OVERRIDING, UNRESERVED_KEYWORD) PG_KEYWORD("owned", OWNED, UNRESERVED_KEYWORD) PG_KEYWORD("owner", OWNER, UNRESERVED_KEYWORD) PG_KEYWORD("parallel", PARALLEL, UNRESERVED_KEYWORD) PG_KEYWORD("parser", PARSER, UNRESERVED_KEYWORD) PG_KEYWORD("partial", PARTIAL, UNRESERVED_KEYWORD) PG_KEYWORD("partition", PARTITION, UNRESERVED_KEYWORD) PG_KEYWORD("passing", PASSING, UNRESERVED_KEYWORD) PG_KEYWORD("password", PASSWORD, UNRESERVED_KEYWORD) PG_KEYWORD("placing", PLACING, RESERVED_KEYWORD) PG_KEYWORD("plans", PLANS, UNRESERVED_KEYWORD) PG_KEYWORD("policy", POLICY, UNRESERVED_KEYWORD) PG_KEYWORD("position", POSITION, COL_NAME_KEYWORD) PG_KEYWORD("preceding", PRECEDING, UNRESERVED_KEYWORD) PG_KEYWORD("precision", PRECISION, COL_NAME_KEYWORD) PG_KEYWORD("prepare", PREPARE, UNRESERVED_KEYWORD) PG_KEYWORD("prepared", PREPARED, UNRESERVED_KEYWORD) PG_KEYWORD("preserve", PRESERVE, UNRESERVED_KEYWORD) PG_KEYWORD("primary", PRIMARY, RESERVED_KEYWORD) PG_KEYWORD("prior", PRIOR, UNRESERVED_KEYWORD) PG_KEYWORD("privileges", PRIVILEGES, UNRESERVED_KEYWORD) PG_KEYWORD("procedural", PROCEDURAL, UNRESERVED_KEYWORD) PG_KEYWORD("procedure", PROCEDURE, UNRESERVED_KEYWORD) PG_KEYWORD("procedures", PROCEDURES, UNRESERVED_KEYWORD) PG_KEYWORD("program", PROGRAM, UNRESERVED_KEYWORD) PG_KEYWORD("publication", PUBLICATION, UNRESERVED_KEYWORD) PG_KEYWORD("quote", QUOTE, UNRESERVED_KEYWORD) PG_KEYWORD("range", RANGE, UNRESERVED_KEYWORD) PG_KEYWORD("read", READ, UNRESERVED_KEYWORD) PG_KEYWORD("real", REAL, COL_NAME_KEYWORD) PG_KEYWORD("reassign", REASSIGN, UNRESERVED_KEYWORD) PG_KEYWORD("recheck", RECHECK, UNRESERVED_KEYWORD) PG_KEYWORD("recursive", RECURSIVE, UNRESERVED_KEYWORD) PG_KEYWORD("ref", REF, UNRESERVED_KEYWORD) PG_KEYWORD("references", REFERENCES, RESERVED_KEYWORD) PG_KEYWORD("referencing", REFERENCING, UNRESERVED_KEYWORD) PG_KEYWORD("refresh", REFRESH, UNRESERVED_KEYWORD) PG_KEYWORD("reindex", REINDEX, UNRESERVED_KEYWORD) PG_KEYWORD("relative", RELATIVE_P, UNRESERVED_KEYWORD) PG_KEYWORD("release", RELEASE, UNRESERVED_KEYWORD) PG_KEYWORD("rename", RENAME, UNRESERVED_KEYWORD) PG_KEYWORD("repeatable", REPEATABLE, UNRESERVED_KEYWORD) PG_KEYWORD("replace", REPLACE, UNRESERVED_KEYWORD) PG_KEYWORD("replica", REPLICA, UNRESERVED_KEYWORD) PG_KEYWORD("reset", RESET, UNRESERVED_KEYWORD) PG_KEYWORD("restart", RESTART, UNRESERVED_KEYWORD) PG_KEYWORD("restrict", RESTRICT, UNRESERVED_KEYWORD) PG_KEYWORD("returning", RETURNING, RESERVED_KEYWORD) PG_KEYWORD("returns", RETURNS, UNRESERVED_KEYWORD) PG_KEYWORD("revoke", REVOKE, UNRESERVED_KEYWORD) PG_KEYWORD("right", RIGHT, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("role", ROLE, UNRESERVED_KEYWORD) PG_KEYWORD("rollback", ROLLBACK, UNRESERVED_KEYWORD) PG_KEYWORD("rollup", ROLLUP, UNRESERVED_KEYWORD) PG_KEYWORD("routine", ROUTINE, UNRESERVED_KEYWORD) PG_KEYWORD("routines", ROUTINES, UNRESERVED_KEYWORD) PG_KEYWORD("row", ROW, COL_NAME_KEYWORD) PG_KEYWORD("rows", ROWS, UNRESERVED_KEYWORD) PG_KEYWORD("rule", RULE, UNRESERVED_KEYWORD) PG_KEYWORD("savepoint", SAVEPOINT, UNRESERVED_KEYWORD) PG_KEYWORD("schema", SCHEMA, UNRESERVED_KEYWORD) PG_KEYWORD("schemas", SCHEMAS, UNRESERVED_KEYWORD) PG_KEYWORD("scroll", SCROLL, UNRESERVED_KEYWORD) PG_KEYWORD("search", SEARCH, UNRESERVED_KEYWORD) PG_KEYWORD("second", SECOND_P, UNRESERVED_KEYWORD) PG_KEYWORD("security", SECURITY, UNRESERVED_KEYWORD) PG_KEYWORD("select", SELECT, RESERVED_KEYWORD) PG_KEYWORD("sequence", SEQUENCE, UNRESERVED_KEYWORD) PG_KEYWORD("sequences", SEQUENCES, UNRESERVED_KEYWORD) PG_KEYWORD("serializable", SERIALIZABLE, UNRESERVED_KEYWORD) PG_KEYWORD("server", SERVER, UNRESERVED_KEYWORD) PG_KEYWORD("session", SESSION, UNRESERVED_KEYWORD) PG_KEYWORD("session_user", SESSION_USER, RESERVED_KEYWORD) PG_KEYWORD("set", SET, UNRESERVED_KEYWORD) PG_KEYWORD("setof", SETOF, COL_NAME_KEYWORD) PG_KEYWORD("sets", SETS, UNRESERVED_KEYWORD) PG_KEYWORD("share", SHARE, UNRESERVED_KEYWORD) PG_KEYWORD("show", SHOW, UNRESERVED_KEYWORD) PG_KEYWORD("similar", SIMILAR, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("simple", SIMPLE, UNRESERVED_KEYWORD) PG_KEYWORD("skip", SKIP, UNRESERVED_KEYWORD) PG_KEYWORD("smallint", SMALLINT, COL_NAME_KEYWORD) PG_KEYWORD("snapshot", SNAPSHOT, UNRESERVED_KEYWORD) PG_KEYWORD("some", SOME, RESERVED_KEYWORD) PG_KEYWORD("sql", SQL_P, UNRESERVED_KEYWORD) PG_KEYWORD("stable", STABLE, UNRESERVED_KEYWORD) PG_KEYWORD("standalone", STANDALONE_P, UNRESERVED_KEYWORD) PG_KEYWORD("start", START, UNRESERVED_KEYWORD) PG_KEYWORD("statement", STATEMENT, UNRESERVED_KEYWORD) PG_KEYWORD("statistics", STATISTICS, UNRESERVED_KEYWORD) PG_KEYWORD("stdin", STDIN, UNRESERVED_KEYWORD) PG_KEYWORD("stdout", STDOUT, UNRESERVED_KEYWORD) PG_KEYWORD("storage", STORAGE, UNRESERVED_KEYWORD) PG_KEYWORD("stored", STORED, UNRESERVED_KEYWORD) PG_KEYWORD("strict", STRICT_P, UNRESERVED_KEYWORD) PG_KEYWORD("strip", STRIP_P, UNRESERVED_KEYWORD) PG_KEYWORD("subscription", SUBSCRIPTION, UNRESERVED_KEYWORD) PG_KEYWORD("substring", SUBSTRING, COL_NAME_KEYWORD) PG_KEYWORD("support", SUPPORT, UNRESERVED_KEYWORD) PG_KEYWORD("symmetric", SYMMETRIC, RESERVED_KEYWORD) PG_KEYWORD("sysid", SYSID, UNRESERVED_KEYWORD) PG_KEYWORD("system", SYSTEM_P, UNRESERVED_KEYWORD) PG_KEYWORD("table", TABLE, RESERVED_KEYWORD) PG_KEYWORD("tables", TABLES, UNRESERVED_KEYWORD) PG_KEYWORD("tablesample", TABLESAMPLE, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("tablespace", TABLESPACE, UNRESERVED_KEYWORD) PG_KEYWORD("temp", TEMP, UNRESERVED_KEYWORD) PG_KEYWORD("template", TEMPLATE, UNRESERVED_KEYWORD) PG_KEYWORD("temporary", TEMPORARY, UNRESERVED_KEYWORD) PG_KEYWORD("text", TEXT_P, UNRESERVED_KEYWORD) PG_KEYWORD("then", THEN, RESERVED_KEYWORD) PG_KEYWORD("ties", TIES, UNRESERVED_KEYWORD) PG_KEYWORD("time", TIME, COL_NAME_KEYWORD) PG_KEYWORD("timestamp", TIMESTAMP, COL_NAME_KEYWORD) PG_KEYWORD("to", TO, RESERVED_KEYWORD) PG_KEYWORD("trailing", TRAILING, RESERVED_KEYWORD) PG_KEYWORD("transaction", TRANSACTION, UNRESERVED_KEYWORD) PG_KEYWORD("transform", TRANSFORM, UNRESERVED_KEYWORD) PG_KEYWORD("treat", TREAT, COL_NAME_KEYWORD) PG_KEYWORD("trigger", TRIGGER, UNRESERVED_KEYWORD) PG_KEYWORD("trim", TRIM, COL_NAME_KEYWORD) PG_KEYWORD("true", TRUE_P, RESERVED_KEYWORD) PG_KEYWORD("truncate", TRUNCATE, UNRESERVED_KEYWORD) PG_KEYWORD("trusted", TRUSTED, UNRESERVED_KEYWORD) PG_KEYWORD("type", TYPE_P, UNRESERVED_KEYWORD) PG_KEYWORD("types", TYPES_P, UNRESERVED_KEYWORD) PG_KEYWORD("uescape", UESCAPE, UNRESERVED_KEYWORD) PG_KEYWORD("unbounded", UNBOUNDED, UNRESERVED_KEYWORD) PG_KEYWORD("uncommitted", UNCOMMITTED, UNRESERVED_KEYWORD) PG_KEYWORD("unencrypted", UNENCRYPTED, UNRESERVED_KEYWORD) PG_KEYWORD("union", UNION, RESERVED_KEYWORD) PG_KEYWORD("unique", UNIQUE, RESERVED_KEYWORD) PG_KEYWORD("unknown", UNKNOWN, UNRESERVED_KEYWORD) PG_KEYWORD("unlisten", UNLISTEN, UNRESERVED_KEYWORD) PG_KEYWORD("unlogged", UNLOGGED, UNRESERVED_KEYWORD) PG_KEYWORD("until", UNTIL, UNRESERVED_KEYWORD) PG_KEYWORD("update", UPDATE, UNRESERVED_KEYWORD) PG_KEYWORD("user", USER, RESERVED_KEYWORD) PG_KEYWORD("using", USING, RESERVED_KEYWORD) PG_KEYWORD("vacuum", VACUUM, UNRESERVED_KEYWORD) PG_KEYWORD("valid", VALID, UNRESERVED_KEYWORD) PG_KEYWORD("validate", VALIDATE, UNRESERVED_KEYWORD) PG_KEYWORD("validator", VALIDATOR, UNRESERVED_KEYWORD) PG_KEYWORD("value", VALUE_P, UNRESERVED_KEYWORD) PG_KEYWORD("values", VALUES, COL_NAME_KEYWORD) PG_KEYWORD("varchar", VARCHAR, COL_NAME_KEYWORD) PG_KEYWORD("variadic", VARIADIC, RESERVED_KEYWORD) PG_KEYWORD("varying", VARYING, UNRESERVED_KEYWORD) PG_KEYWORD("verbose", VERBOSE, TYPE_FUNC_NAME_KEYWORD) PG_KEYWORD("version", VERSION_P, UNRESERVED_KEYWORD) PG_KEYWORD("view", VIEW, UNRESERVED_KEYWORD) PG_KEYWORD("views", VIEWS, UNRESERVED_KEYWORD) PG_KEYWORD("volatile", VOLATILE, UNRESERVED_KEYWORD) PG_KEYWORD("when", WHEN, RESERVED_KEYWORD) PG_KEYWORD("where", WHERE, RESERVED_KEYWORD) PG_KEYWORD("whitespace", WHITESPACE_P, UNRESERVED_KEYWORD) PG_KEYWORD("window", WINDOW, RESERVED_KEYWORD) PG_KEYWORD("with", WITH, RESERVED_KEYWORD) PG_KEYWORD("within", WITHIN, UNRESERVED_KEYWORD) PG_KEYWORD("without", WITHOUT, UNRESERVED_KEYWORD) PG_KEYWORD("work", WORK, UNRESERVED_KEYWORD) PG_KEYWORD("wrapper", WRAPPER, UNRESERVED_KEYWORD) PG_KEYWORD("write", WRITE, UNRESERVED_KEYWORD) PG_KEYWORD("xml", XML_P, UNRESERVED_KEYWORD) PG_KEYWORD("xmlattributes", XMLATTRIBUTES, COL_NAME_KEYWORD) PG_KEYWORD("xmlconcat", XMLCONCAT, COL_NAME_KEYWORD) PG_KEYWORD("xmlelement", XMLELEMENT, COL_NAME_KEYWORD) PG_KEYWORD("xmlexists", XMLEXISTS, COL_NAME_KEYWORD) PG_KEYWORD("xmlforest", XMLFOREST, COL_NAME_KEYWORD) PG_KEYWORD("xmlnamespaces", XMLNAMESPACES, COL_NAME_KEYWORD) PG_KEYWORD("xmlparse", XMLPARSE, COL_NAME_KEYWORD) PG_KEYWORD("xmlpi", XMLPI, COL_NAME_KEYWORD) PG_KEYWORD("xmlroot", XMLROOT, COL_NAME_KEYWORD) PG_KEYWORD("xmlserialize", XMLSERIALIZE, COL_NAME_KEYWORD) PG_KEYWORD("xmltable", XMLTABLE, COL_NAME_KEYWORD) PG_KEYWORD("year", YEAR_P, UNRESERVED_KEYWORD) PG_KEYWORD("yes", YES_P, UNRESERVED_KEYWORD) PG_KEYWORD("zone", ZONE, UNRESERVED_KEYWORD) libpg_query-13-2.1.0/src/postgres/include/parser/parse_agg.h000066400000000000000000000041561413137616400237460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_agg.h * handle aggregates and window functions in parser * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_agg.h * *------------------------------------------------------------------------- */ #ifndef PARSE_AGG_H #define PARSE_AGG_H #include "parser/parse_node.h" extern void transformAggregateCall(ParseState *pstate, Aggref *agg, List *args, List *aggorder, bool agg_distinct); extern Node *transformGroupingFunc(ParseState *pstate, GroupingFunc *g); extern void transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc, WindowDef *windef); extern void parseCheckAggregates(ParseState *pstate, Query *qry); extern List *expand_grouping_sets(List *groupingSets, int limit); extern int get_aggregate_argtypes(Aggref *aggref, Oid *inputTypes); extern Oid resolve_aggregate_transtype(Oid aggfuncid, Oid aggtranstype, Oid *inputTypes, int numArguments); extern void build_aggregate_transfn_expr(Oid *agg_input_types, int agg_num_inputs, int agg_num_direct_inputs, bool agg_variadic, Oid agg_state_type, Oid agg_input_collation, Oid transfn_oid, Oid invtransfn_oid, Expr **transfnexpr, Expr **invtransfnexpr); extern void build_aggregate_combinefn_expr(Oid agg_state_type, Oid agg_input_collation, Oid combinefn_oid, Expr **combinefnexpr); extern void build_aggregate_serialfn_expr(Oid serialfn_oid, Expr **serialfnexpr); extern void build_aggregate_deserialfn_expr(Oid deserialfn_oid, Expr **deserialfnexpr); extern void build_aggregate_finalfn_expr(Oid *agg_input_types, int num_finalfn_inputs, Oid agg_state_type, Oid agg_result_type, Oid agg_input_collation, Oid finalfn_oid, Expr **finalfnexpr); #endif /* PARSE_AGG_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parse_clause.h000066400000000000000000000042061413137616400244600ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_clause.h * handle clauses in parser * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_clause.h * *------------------------------------------------------------------------- */ #ifndef PARSE_CLAUSE_H #define PARSE_CLAUSE_H #include "parser/parse_node.h" extern void transformFromClause(ParseState *pstate, List *frmList); extern int setTargetTable(ParseState *pstate, RangeVar *relation, bool inh, bool alsoSource, AclMode requiredPerms); extern Node *transformWhereClause(ParseState *pstate, Node *clause, ParseExprKind exprKind, const char *constructName); extern Node *transformLimitClause(ParseState *pstate, Node *clause, ParseExprKind exprKind, const char *constructName, LimitOption limitOption); extern List *transformGroupClause(ParseState *pstate, List *grouplist, List **groupingSets, List **targetlist, List *sortClause, ParseExprKind exprKind, bool useSQL99); extern List *transformSortClause(ParseState *pstate, List *orderlist, List **targetlist, ParseExprKind exprKind, bool useSQL99); extern List *transformWindowDefinitions(ParseState *pstate, List *windowdefs, List **targetlist); extern List *transformDistinctClause(ParseState *pstate, List **targetlist, List *sortClause, bool is_agg); extern List *transformDistinctOnClause(ParseState *pstate, List *distinctlist, List **targetlist, List *sortClause); extern void transformOnConflictArbiter(ParseState *pstate, OnConflictClause *onConflictClause, List **arbiterExpr, Node **arbiterWhere, Oid *constraint); extern List *addTargetToSortList(ParseState *pstate, TargetEntry *tle, List *sortlist, List *targetlist, SortBy *sortby); extern Index assignSortGroupRef(TargetEntry *tle, List *tlist); extern bool targetIsInSortList(TargetEntry *tle, Oid sortop, List *sortList); #endif /* PARSE_CLAUSE_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parse_coerce.h000066400000000000000000000067551413137616400244570ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_coerce.h * Routines for type coercion. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_coerce.h * *------------------------------------------------------------------------- */ #ifndef PARSE_COERCE_H #define PARSE_COERCE_H #include "parser/parse_node.h" /* Type categories (see TYPCATEGORY_xxx symbols in catalog/pg_type.h) */ typedef char TYPCATEGORY; /* Result codes for find_coercion_pathway */ typedef enum CoercionPathType { COERCION_PATH_NONE, /* failed to find any coercion pathway */ COERCION_PATH_FUNC, /* apply the specified coercion function */ COERCION_PATH_RELABELTYPE, /* binary-compatible cast, no function */ COERCION_PATH_ARRAYCOERCE, /* need an ArrayCoerceExpr node */ COERCION_PATH_COERCEVIAIO /* need a CoerceViaIO node */ } CoercionPathType; extern bool IsBinaryCoercible(Oid srctype, Oid targettype); extern bool IsPreferredType(TYPCATEGORY category, Oid type); extern TYPCATEGORY TypeCategory(Oid type); extern Node *coerce_to_target_type(ParseState *pstate, Node *expr, Oid exprtype, Oid targettype, int32 targettypmod, CoercionContext ccontext, CoercionForm cformat, int location); extern bool can_coerce_type(int nargs, const Oid *input_typeids, const Oid *target_typeids, CoercionContext ccontext); extern Node *coerce_type(ParseState *pstate, Node *node, Oid inputTypeId, Oid targetTypeId, int32 targetTypeMod, CoercionContext ccontext, CoercionForm cformat, int location); extern Node *coerce_to_domain(Node *arg, Oid baseTypeId, int32 baseTypeMod, Oid typeId, CoercionContext ccontext, CoercionForm cformat, int location, bool hideInputCoercion); extern Node *coerce_to_boolean(ParseState *pstate, Node *node, const char *constructName); extern Node *coerce_to_specific_type(ParseState *pstate, Node *node, Oid targetTypeId, const char *constructName); extern Node *coerce_to_specific_type_typmod(ParseState *pstate, Node *node, Oid targetTypeId, int32 targetTypmod, const char *constructName); extern int parser_coercion_errposition(ParseState *pstate, int coerce_location, Node *input_expr); extern Oid select_common_type(ParseState *pstate, List *exprs, const char *context, Node **which_expr); extern Node *coerce_to_common_type(ParseState *pstate, Node *node, Oid targetTypeId, const char *context); extern bool check_generic_type_consistency(const Oid *actual_arg_types, const Oid *declared_arg_types, int nargs); extern Oid enforce_generic_type_consistency(const Oid *actual_arg_types, Oid *declared_arg_types, int nargs, Oid rettype, bool allow_poly); extern char *check_valid_polymorphic_signature(Oid ret_type, const Oid *declared_arg_types, int nargs); extern char *check_valid_internal_signature(Oid ret_type, const Oid *declared_arg_types, int nargs); extern CoercionPathType find_coercion_pathway(Oid targetTypeId, Oid sourceTypeId, CoercionContext ccontext, Oid *funcid); extern CoercionPathType find_typmod_coercion_function(Oid typeId, Oid *funcid); #endif /* PARSE_COERCE_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parse_collate.h000066400000000000000000000015011413137616400246220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_collate.h * Routines for assigning collation information. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_collate.h * *------------------------------------------------------------------------- */ #ifndef PARSE_COLLATE_H #define PARSE_COLLATE_H #include "parser/parse_node.h" extern void assign_query_collations(ParseState *pstate, Query *query); extern void assign_list_collations(ParseState *pstate, List *exprs); extern void assign_expr_collations(ParseState *pstate, Node *expr); extern Oid select_common_collation(ParseState *pstate, List *exprs, bool none_ok); #endif /* PARSE_COLLATE_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parse_expr.h000066400000000000000000000013711413137616400241620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_expr.h * handle expressions in parser * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_expr.h * *------------------------------------------------------------------------- */ #ifndef PARSE_EXPR_H #define PARSE_EXPR_H #include "parser/parse_node.h" /* GUC parameters */ extern __thread bool operator_precedence_warning; extern bool Transform_null_equals; extern Node *transformExpr(ParseState *pstate, Node *expr, ParseExprKind exprKind); extern const char *ParseExprKindName(ParseExprKind exprKind); #endif /* PARSE_EXPR_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parse_func.h000066400000000000000000000046421413137616400241430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_func.h * * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_func.h * *------------------------------------------------------------------------- */ #ifndef PARSE_FUNC_H #define PARSE_FUNC_H #include "catalog/namespace.h" #include "parser/parse_node.h" /* Result codes for func_get_detail */ typedef enum { FUNCDETAIL_NOTFOUND, /* no matching function */ FUNCDETAIL_MULTIPLE, /* too many matching functions */ FUNCDETAIL_NORMAL, /* found a matching regular function */ FUNCDETAIL_PROCEDURE, /* found a matching procedure */ FUNCDETAIL_AGGREGATE, /* found a matching aggregate function */ FUNCDETAIL_WINDOWFUNC, /* found a matching window function */ FUNCDETAIL_COERCION /* it's a type coercion request */ } FuncDetailCode; extern Node *ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, Node *last_srf, FuncCall *fn, bool proc_call, int location); extern FuncDetailCode func_get_detail(List *funcname, List *fargs, List *fargnames, int nargs, Oid *argtypes, bool expand_variadic, bool expand_defaults, Oid *funcid, Oid *rettype, bool *retset, int *nvargs, Oid *vatype, Oid **true_typeids, List **argdefaults); extern int func_match_argtypes(int nargs, Oid *input_typeids, FuncCandidateList raw_candidates, FuncCandidateList *candidates); extern FuncCandidateList func_select_candidate(int nargs, Oid *input_typeids, FuncCandidateList candidates); extern void make_fn_arguments(ParseState *pstate, List *fargs, Oid *actual_arg_types, Oid *declared_arg_types); extern const char *funcname_signature_string(const char *funcname, int nargs, List *argnames, const Oid *argtypes); extern const char *func_signature_string(List *funcname, int nargs, List *argnames, const Oid *argtypes); extern Oid LookupFuncName(List *funcname, int nargs, const Oid *argtypes, bool missing_ok); extern Oid LookupFuncWithArgs(ObjectType objtype, ObjectWithArgs *func, bool missing_ok); extern void check_srf_call_placement(ParseState *pstate, Node *last_srf, int location); #endif /* PARSE_FUNC_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parse_node.h000066400000000000000000000344021413137616400241320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_node.h * Internal definitions for parser * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_node.h * *------------------------------------------------------------------------- */ #ifndef PARSE_NODE_H #define PARSE_NODE_H #include "nodes/parsenodes.h" #include "utils/queryenvironment.h" #include "utils/relcache.h" /* Forward references for some structs declared below */ typedef struct ParseState ParseState; typedef struct ParseNamespaceItem ParseNamespaceItem; typedef struct ParseNamespaceColumn ParseNamespaceColumn; /* * Expression kinds distinguished by transformExpr(). Many of these are not * semantically distinct so far as expression transformation goes; rather, * we distinguish them so that context-specific error messages can be printed. * * Note: EXPR_KIND_OTHER is not used in the core code, but is left for use * by extension code that might need to call transformExpr(). The core code * will not enforce any context-driven restrictions on EXPR_KIND_OTHER * expressions, so the caller would have to check for sub-selects, aggregates, * window functions, SRFs, etc if those need to be disallowed. */ typedef enum ParseExprKind { EXPR_KIND_NONE = 0, /* "not in an expression" */ EXPR_KIND_OTHER, /* reserved for extensions */ EXPR_KIND_JOIN_ON, /* JOIN ON */ EXPR_KIND_JOIN_USING, /* JOIN USING */ EXPR_KIND_FROM_SUBSELECT, /* sub-SELECT in FROM clause */ EXPR_KIND_FROM_FUNCTION, /* function in FROM clause */ EXPR_KIND_WHERE, /* WHERE */ EXPR_KIND_HAVING, /* HAVING */ EXPR_KIND_FILTER, /* FILTER */ EXPR_KIND_WINDOW_PARTITION, /* window definition PARTITION BY */ EXPR_KIND_WINDOW_ORDER, /* window definition ORDER BY */ EXPR_KIND_WINDOW_FRAME_RANGE, /* window frame clause with RANGE */ EXPR_KIND_WINDOW_FRAME_ROWS, /* window frame clause with ROWS */ EXPR_KIND_WINDOW_FRAME_GROUPS, /* window frame clause with GROUPS */ EXPR_KIND_SELECT_TARGET, /* SELECT target list item */ EXPR_KIND_INSERT_TARGET, /* INSERT target list item */ EXPR_KIND_UPDATE_SOURCE, /* UPDATE assignment source item */ EXPR_KIND_UPDATE_TARGET, /* UPDATE assignment target item */ EXPR_KIND_GROUP_BY, /* GROUP BY */ EXPR_KIND_ORDER_BY, /* ORDER BY */ EXPR_KIND_DISTINCT_ON, /* DISTINCT ON */ EXPR_KIND_LIMIT, /* LIMIT */ EXPR_KIND_OFFSET, /* OFFSET */ EXPR_KIND_RETURNING, /* RETURNING */ EXPR_KIND_VALUES, /* VALUES */ EXPR_KIND_VALUES_SINGLE, /* single-row VALUES (in INSERT only) */ EXPR_KIND_CHECK_CONSTRAINT, /* CHECK constraint for a table */ EXPR_KIND_DOMAIN_CHECK, /* CHECK constraint for a domain */ EXPR_KIND_COLUMN_DEFAULT, /* default value for a table column */ EXPR_KIND_FUNCTION_DEFAULT, /* default parameter value for function */ EXPR_KIND_INDEX_EXPRESSION, /* index expression */ EXPR_KIND_INDEX_PREDICATE, /* index predicate */ EXPR_KIND_ALTER_COL_TRANSFORM, /* transform expr in ALTER COLUMN TYPE */ EXPR_KIND_EXECUTE_PARAMETER, /* parameter value in EXECUTE */ EXPR_KIND_TRIGGER_WHEN, /* WHEN condition in CREATE TRIGGER */ EXPR_KIND_POLICY, /* USING or WITH CHECK expr in policy */ EXPR_KIND_PARTITION_BOUND, /* partition bound expression */ EXPR_KIND_PARTITION_EXPRESSION, /* PARTITION BY expression */ EXPR_KIND_CALL_ARGUMENT, /* procedure argument in CALL */ EXPR_KIND_COPY_WHERE, /* WHERE condition in COPY FROM */ EXPR_KIND_GENERATED_COLUMN, /* generation expression for a column */ } ParseExprKind; /* * Function signatures for parser hooks */ typedef Node *(*PreParseColumnRefHook) (ParseState *pstate, ColumnRef *cref); typedef Node *(*PostParseColumnRefHook) (ParseState *pstate, ColumnRef *cref, Node *var); typedef Node *(*ParseParamRefHook) (ParseState *pstate, ParamRef *pref); typedef Node *(*CoerceParamHook) (ParseState *pstate, Param *param, Oid targetTypeId, int32 targetTypeMod, int location); /* * State information used during parse analysis * * parentParseState: NULL in a top-level ParseState. When parsing a subquery, * links to current parse state of outer query. * * p_sourcetext: source string that generated the raw parsetree being * analyzed, or NULL if not available. (The string is used only to * generate cursor positions in error messages: we need it to convert * byte-wise locations in parse structures to character-wise cursor * positions.) * * p_rtable: list of RTEs that will become the rangetable of the query. * Note that neither relname nor refname of these entries are necessarily * unique; searching the rtable by name is a bad idea. * * p_joinexprs: list of JoinExpr nodes associated with p_rtable entries. * This is one-for-one with p_rtable, but contains NULLs for non-join * RTEs, and may be shorter than p_rtable if the last RTE(s) aren't joins. * * p_joinlist: list of join items (RangeTblRef and JoinExpr nodes) that * will become the fromlist of the query's top-level FromExpr node. * * p_namespace: list of ParseNamespaceItems that represents the current * namespace for table and column lookup. (The RTEs listed here may be just * a subset of the whole rtable. See ParseNamespaceItem comments below.) * * p_lateral_active: true if we are currently parsing a LATERAL subexpression * of this parse level. This makes p_lateral_only namespace items visible, * whereas they are not visible when p_lateral_active is FALSE. * * p_ctenamespace: list of CommonTableExprs (WITH items) that are visible * at the moment. This is entirely different from p_namespace because a CTE * is not an RTE, rather "visibility" means you could make an RTE from it. * * p_future_ctes: list of CommonTableExprs (WITH items) that are not yet * visible due to scope rules. This is used to help improve error messages. * * p_parent_cte: CommonTableExpr that immediately contains the current query, * if any. * * p_target_relation: target relation, if query is INSERT, UPDATE, or DELETE. * * p_target_nsitem: target relation's ParseNamespaceItem. * * p_is_insert: true to process assignment expressions like INSERT, false * to process them like UPDATE. (Note this can change intra-statement, for * cases like INSERT ON CONFLICT UPDATE.) * * p_windowdefs: list of WindowDefs representing WINDOW and OVER clauses. * We collect these while transforming expressions and then transform them * afterwards (so that any resjunk tlist items needed for the sort/group * clauses end up at the end of the query tlist). A WindowDef's location in * this list, counting from 1, is the winref number to use to reference it. * * p_expr_kind: kind of expression we're currently parsing, as per enum above; * EXPR_KIND_NONE when not in an expression. * * p_next_resno: next TargetEntry.resno to assign, starting from 1. * * p_multiassign_exprs: partially-processed MultiAssignRef source expressions. * * p_locking_clause: query's FOR UPDATE/FOR SHARE clause, if any. * * p_locked_from_parent: true if parent query level applies FOR UPDATE/SHARE * to this subquery as a whole. * * p_resolve_unknowns: resolve unknown-type SELECT output columns as type TEXT * (this is true by default). * * p_hasAggs, p_hasWindowFuncs, etc: true if we've found any of the indicated * constructs in the query. * * p_last_srf: the set-returning FuncExpr or OpExpr most recently found in * the query, or NULL if none. * * p_pre_columnref_hook, etc: optional parser hook functions for modifying the * interpretation of ColumnRefs and ParamRefs. * * p_ref_hook_state: passthrough state for the parser hook functions. */ struct ParseState { ParseState *parentParseState; /* stack link */ const char *p_sourcetext; /* source text, or NULL if not available */ List *p_rtable; /* range table so far */ List *p_joinexprs; /* JoinExprs for RTE_JOIN p_rtable entries */ List *p_joinlist; /* join items so far (will become FromExpr * node's fromlist) */ List *p_namespace; /* currently-referenceable RTEs (List of * ParseNamespaceItem) */ bool p_lateral_active; /* p_lateral_only items visible? */ List *p_ctenamespace; /* current namespace for common table exprs */ List *p_future_ctes; /* common table exprs not yet in namespace */ CommonTableExpr *p_parent_cte; /* this query's containing CTE */ Relation p_target_relation; /* INSERT/UPDATE/DELETE target rel */ ParseNamespaceItem *p_target_nsitem; /* target rel's NSItem, or NULL */ bool p_is_insert; /* process assignment like INSERT not UPDATE */ List *p_windowdefs; /* raw representations of window clauses */ ParseExprKind p_expr_kind; /* what kind of expression we're parsing */ int p_next_resno; /* next targetlist resno to assign */ List *p_multiassign_exprs; /* junk tlist entries for multiassign */ List *p_locking_clause; /* raw FOR UPDATE/FOR SHARE info */ bool p_locked_from_parent; /* parent has marked this subquery * with FOR UPDATE/FOR SHARE */ bool p_resolve_unknowns; /* resolve unknown-type SELECT outputs as * type text */ QueryEnvironment *p_queryEnv; /* curr env, incl refs to enclosing env */ /* Flags telling about things found in the query: */ bool p_hasAggs; bool p_hasWindowFuncs; bool p_hasTargetSRFs; bool p_hasSubLinks; bool p_hasModifyingCTE; Node *p_last_srf; /* most recent set-returning func/op found */ /* * Optional hook functions for parser callbacks. These are null unless * set up by the caller of make_parsestate. */ PreParseColumnRefHook p_pre_columnref_hook; PostParseColumnRefHook p_post_columnref_hook; ParseParamRefHook p_paramref_hook; CoerceParamHook p_coerce_param_hook; void *p_ref_hook_state; /* common passthrough link for above */ }; /* * An element of a namespace list. * * The p_nscolumns array contains info showing how to construct Vars * referencing corresponding elements of the RTE's colnames list. * * Namespace items with p_rel_visible set define which RTEs are accessible by * qualified names, while those with p_cols_visible set define which RTEs are * accessible by unqualified names. These sets are different because a JOIN * without an alias does not hide the contained tables (so they must be * visible for qualified references) but it does hide their columns * (unqualified references to the columns refer to the JOIN, not the member * tables, so we must not complain that such a reference is ambiguous). * Various special RTEs such as NEW/OLD for rules may also appear with only * one flag set. * * While processing the FROM clause, namespace items may appear with * p_lateral_only set, meaning they are visible only to LATERAL * subexpressions. (The pstate's p_lateral_active flag tells whether we are * inside such a subexpression at the moment.) If p_lateral_ok is not set, * it's an error to actually use such a namespace item. One might think it * would be better to just exclude such items from visibility, but the wording * of SQL:2008 requires us to do it this way. We also use p_lateral_ok to * forbid LATERAL references to an UPDATE/DELETE target table. * * At no time should a namespace list contain two entries that conflict * according to the rules in checkNameSpaceConflicts; but note that those * are more complicated than "must have different alias names", so in practice * code searching a namespace list has to check for ambiguous references. */ struct ParseNamespaceItem { RangeTblEntry *p_rte; /* The relation's rangetable entry */ int p_rtindex; /* The relation's index in the rangetable */ /* array of same length as p_rte->eref->colnames: */ ParseNamespaceColumn *p_nscolumns; /* per-column data */ bool p_rel_visible; /* Relation name is visible? */ bool p_cols_visible; /* Column names visible as unqualified refs? */ bool p_lateral_only; /* Is only visible to LATERAL expressions? */ bool p_lateral_ok; /* If so, does join type allow use? */ }; /* * Data about one column of a ParseNamespaceItem. * * We track the info needed to construct a Var referencing the column * (but only for user-defined columns; system column references and * whole-row references are handled separately). * * p_varno and p_varattno identify the semantic referent, which is a * base-relation column unless the reference is to a join USING column that * isn't semantically equivalent to either join input column (because it is a * FULL join or the input column requires a type coercion). In those cases * p_varno and p_varattno refer to the JOIN RTE. * * p_varnosyn and p_varattnosyn are either identical to p_varno/p_varattno, * or they specify the column's position in an aliased JOIN RTE that hides * the semantic referent RTE's refname. (That could be either the JOIN RTE * in which this ParseNamespaceColumn entry exists, or some lower join level.) * * If an RTE contains a dropped column, its ParseNamespaceColumn struct * is all-zeroes. (Conventionally, test for p_varno == 0 to detect this.) */ struct ParseNamespaceColumn { Index p_varno; /* rangetable index */ AttrNumber p_varattno; /* attribute number of the column */ Oid p_vartype; /* pg_type OID */ int32 p_vartypmod; /* type modifier value */ Oid p_varcollid; /* OID of collation, or InvalidOid */ Index p_varnosyn; /* rangetable index of syntactic referent */ AttrNumber p_varattnosyn; /* attribute number of syntactic referent */ }; /* Support for parser_errposition_callback function */ typedef struct ParseCallbackState { ParseState *pstate; int location; ErrorContextCallback errcallback; } ParseCallbackState; extern ParseState *make_parsestate(ParseState *parentParseState); extern void free_parsestate(ParseState *pstate); extern int parser_errposition(ParseState *pstate, int location); extern void setup_parser_errposition_callback(ParseCallbackState *pcbstate, ParseState *pstate, int location); extern void cancel_parser_errposition_callback(ParseCallbackState *pcbstate); extern Oid transformContainerType(Oid *containerType, int32 *containerTypmod); extern SubscriptingRef *transformContainerSubscripts(ParseState *pstate, Node *containerBase, Oid containerType, Oid elementType, int32 containerTypMod, List *indirection, Node *assignFrom); extern Const *make_const(ParseState *pstate, Value *value, int location); #endif /* PARSE_NODE_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parse_oper.h000066400000000000000000000047161413137616400241570ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_oper.h * handle operator things for parser * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_oper.h * *------------------------------------------------------------------------- */ #ifndef PARSE_OPER_H #define PARSE_OPER_H #include "access/htup.h" #include "nodes/parsenodes.h" #include "parser/parse_node.h" typedef HeapTuple Operator; /* Routines to look up an operator given name and exact input type(s) */ extern Oid LookupOperName(ParseState *pstate, List *opername, Oid oprleft, Oid oprright, bool noError, int location); extern Oid LookupOperWithArgs(ObjectWithArgs *oper, bool noError); /* Routines to find operators matching a name and given input types */ /* NB: the selected operator may require coercion of the input types! */ extern Operator oper(ParseState *pstate, List *op, Oid arg1, Oid arg2, bool noError, int location); extern Operator right_oper(ParseState *pstate, List *op, Oid arg, bool noError, int location); extern Operator left_oper(ParseState *pstate, List *op, Oid arg, bool noError, int location); /* Routines to find operators that DO NOT require coercion --- ie, their */ /* input types are either exactly as given, or binary-compatible */ extern Operator compatible_oper(ParseState *pstate, List *op, Oid arg1, Oid arg2, bool noError, int location); /* currently no need for compatible_left_oper/compatible_right_oper */ /* Routines for identifying "<", "=", ">" operators for a type */ extern void get_sort_group_operators(Oid argtype, bool needLT, bool needEQ, bool needGT, Oid *ltOpr, Oid *eqOpr, Oid *gtOpr, bool *isHashable); /* Convenience routines for common calls on the above */ extern Oid compatible_oper_opid(List *op, Oid arg1, Oid arg2, bool noError); /* Extract operator OID or underlying-function OID from an Operator tuple */ extern Oid oprid(Operator op); extern Oid oprfuncid(Operator op); /* Build expression tree for an operator invocation */ extern Expr *make_op(ParseState *pstate, List *opname, Node *ltree, Node *rtree, Node *last_srf, int location); extern Expr *make_scalar_array_op(ParseState *pstate, List *opname, bool useOr, Node *ltree, Node *rtree, int location); #endif /* PARSE_OPER_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parse_relation.h000066400000000000000000000117071413137616400250250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_relation.h * prototypes for parse_relation.c. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_relation.h * *------------------------------------------------------------------------- */ #ifndef PARSE_RELATION_H #define PARSE_RELATION_H #include "parser/parse_node.h" extern ParseNamespaceItem *refnameNamespaceItem(ParseState *pstate, const char *schemaname, const char *refname, int location, int *sublevels_up); extern CommonTableExpr *scanNameSpaceForCTE(ParseState *pstate, const char *refname, Index *ctelevelsup); extern bool scanNameSpaceForENR(ParseState *pstate, const char *refname); extern void checkNameSpaceConflicts(ParseState *pstate, List *namespace1, List *namespace2); extern ParseNamespaceItem *GetNSItemByRangeTablePosn(ParseState *pstate, int varno, int sublevels_up); extern RangeTblEntry *GetRTEByRangeTablePosn(ParseState *pstate, int varno, int sublevels_up); extern CommonTableExpr *GetCTEForRTE(ParseState *pstate, RangeTblEntry *rte, int rtelevelsup); extern Node *scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, const char *colname, int location); extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly, int location); extern void markVarForSelectPriv(ParseState *pstate, Var *var, RangeTblEntry *rte); extern Relation parserOpenTable(ParseState *pstate, const RangeVar *relation, int lockmode); extern ParseNamespaceItem *addRangeTableEntry(ParseState *pstate, RangeVar *relation, Alias *alias, bool inh, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForRelation(ParseState *pstate, Relation rel, int lockmode, Alias *alias, bool inh, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForSubquery(ParseState *pstate, Query *subquery, Alias *alias, bool lateral, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForFunction(ParseState *pstate, List *funcnames, List *funcexprs, List *coldeflists, RangeFunction *rangefunc, bool lateral, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForValues(ParseState *pstate, List *exprs, List *coltypes, List *coltypmods, List *colcollations, Alias *alias, bool lateral, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForTableFunc(ParseState *pstate, TableFunc *tf, Alias *alias, bool lateral, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForJoin(ParseState *pstate, List *colnames, ParseNamespaceColumn *nscolumns, JoinType jointype, int nummergedcols, List *aliasvars, List *leftcols, List *rightcols, Alias *alias, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForCTE(ParseState *pstate, CommonTableExpr *cte, Index levelsup, RangeVar *rv, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForENR(ParseState *pstate, RangeVar *rv, bool inFromCl); extern bool isLockedRefname(ParseState *pstate, const char *refname); extern void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem, bool addToJoinList, bool addToRelNameSpace, bool addToVarNameSpace); extern void errorMissingRTE(ParseState *pstate, RangeVar *relation) pg_attribute_noreturn(); extern void errorMissingColumn(ParseState *pstate, const char *relname, const char *colname, int location) pg_attribute_noreturn(); extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up, int location, bool include_dropped, List **colnames, List **colvars); extern List *expandNSItemVars(ParseNamespaceItem *nsitem, int sublevels_up, int location, List **colnames); extern List *expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, int location); extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK); extern const NameData *attnumAttName(Relation rd, int attid); extern Oid attnumTypeId(Relation rd, int attid); extern Oid attnumCollationId(Relation rd, int attid); extern bool isQueryUsingTempRelation(Query *query); #endif /* PARSE_RELATION_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parse_target.h000066400000000000000000000032421413137616400244710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_target.h * handle target lists * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_target.h * *------------------------------------------------------------------------- */ #ifndef PARSE_TARGET_H #define PARSE_TARGET_H #include "parser/parse_node.h" extern List *transformTargetList(ParseState *pstate, List *targetlist, ParseExprKind exprKind); extern List *transformExpressionList(ParseState *pstate, List *exprlist, ParseExprKind exprKind, bool allowDefault); extern void resolveTargetListUnknowns(ParseState *pstate, List *targetlist); extern void markTargetListOrigins(ParseState *pstate, List *targetlist); extern TargetEntry *transformTargetEntry(ParseState *pstate, Node *node, Node *expr, ParseExprKind exprKind, char *colname, bool resjunk); extern Expr *transformAssignedExpr(ParseState *pstate, Expr *expr, ParseExprKind exprKind, const char *colname, int attrno, List *indirection, int location); extern void updateTargetListEntry(ParseState *pstate, TargetEntry *tle, char *colname, int attrno, List *indirection, int location); extern List *checkInsertTargets(ParseState *pstate, List *cols, List **attrnos); extern TupleDesc expandRecordVariable(ParseState *pstate, Var *var, int levelsup); extern char *FigureColname(Node *node); extern char *FigureIndexColname(Node *node); #endif /* PARSE_TARGET_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parse_type.h000066400000000000000000000042241413137616400241650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parse_type.h * handle type operations for parser * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parse_type.h * *------------------------------------------------------------------------- */ #ifndef PARSE_TYPE_H #define PARSE_TYPE_H #include "access/htup.h" #include "parser/parse_node.h" typedef HeapTuple Type; extern Type LookupTypeName(ParseState *pstate, const TypeName *typeName, int32 *typmod_p, bool missing_ok); extern Type LookupTypeNameExtended(ParseState *pstate, const TypeName *typeName, int32 *typmod_p, bool temp_ok, bool missing_ok); extern Oid LookupTypeNameOid(ParseState *pstate, const TypeName *typeName, bool missing_ok); extern Type typenameType(ParseState *pstate, const TypeName *typeName, int32 *typmod_p); extern Oid typenameTypeId(ParseState *pstate, const TypeName *typeName); extern void typenameTypeIdAndMod(ParseState *pstate, const TypeName *typeName, Oid *typeid_p, int32 *typmod_p); extern char *TypeNameToString(const TypeName *typeName); extern char *TypeNameListToString(List *typenames); extern Oid LookupCollation(ParseState *pstate, List *collnames, int location); extern Oid GetColumnDefCollation(ParseState *pstate, ColumnDef *coldef, Oid typeOid); extern Type typeidType(Oid id); extern Oid typeTypeId(Type tp); extern int16 typeLen(Type t); extern bool typeByVal(Type t); extern char *typeTypeName(Type t); extern Oid typeTypeRelid(Type typ); extern Oid typeTypeCollation(Type typ); extern Datum stringTypeDatum(Type tp, char *string, int32 atttypmod); extern Oid typeidTypeRelid(Oid type_id); extern Oid typeOrDomainTypeRelid(Oid type_id); extern TypeName *typeStringToTypeName(const char *str); extern void parseTypeString(const char *str, Oid *typeid_p, int32 *typmod_p, bool missing_ok); /* true if typeid is composite, or domain over composite, but not RECORD */ #define ISCOMPLEX(typeid) (typeOrDomainTypeRelid(typeid) != InvalidOid) #endif /* PARSE_TYPE_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parser.h000066400000000000000000000022361413137616400233070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parser.h * Definitions for the "raw" parser (flex and bison phases only) * * This is the external API for the raw lexing/parsing functions. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parser.h * *------------------------------------------------------------------------- */ #ifndef PARSER_H #define PARSER_H #include "nodes/parsenodes.h" typedef enum { BACKSLASH_QUOTE_OFF, BACKSLASH_QUOTE_ON, BACKSLASH_QUOTE_SAFE_ENCODING } BackslashQuoteType; /* GUC variables in scan.l (every one of these is a bad idea :-() */ extern __thread int backslash_quote; extern __thread bool escape_string_warning; extern PGDLLIMPORT __thread bool standard_conforming_strings; /* Primary entry point for the raw parsing functions */ extern List *raw_parser(const char *str); /* Utility functions exported by gram.y (perhaps these should be elsewhere) */ extern List *SystemFuncName(char *name); extern TypeName *SystemTypeName(char *name); #endif /* PARSER_H */ libpg_query-13-2.1.0/src/postgres/include/parser/parsetree.h000066400000000000000000000027011413137616400240020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * parsetree.h * Routines to access various components and subcomponents of * parse trees. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/parsetree.h * *------------------------------------------------------------------------- */ #ifndef PARSETREE_H #define PARSETREE_H #include "nodes/parsenodes.h" /* ---------------- * range table operations * ---------------- */ /* * rt_fetch * * NB: this will crash and burn if handed an out-of-range RT index */ #define rt_fetch(rangetable_index, rangetable) \ ((RangeTblEntry *) list_nth(rangetable, (rangetable_index)-1)) /* * Given an RTE and an attribute number, return the appropriate * variable name or alias for that attribute of that RTE. */ extern char *get_rte_attribute_name(RangeTblEntry *rte, AttrNumber attnum); /* * Check whether an attribute of an RTE has been dropped */ extern bool get_rte_attribute_is_dropped(RangeTblEntry *rte, AttrNumber attnum); /* ---------------- * target list operations * ---------------- */ extern TargetEntry *get_tle_by_resno(List *tlist, AttrNumber resno); /* ---------------- * FOR UPDATE/SHARE info * ---------------- */ extern RowMarkClause *get_parse_rowmark(Query *qry, Index rtindex); #endif /* PARSETREE_H */ libpg_query-13-2.1.0/src/postgres/include/parser/scanner.h000066400000000000000000000125371413137616400234510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * scanner.h * API for the core scanner (flex machine) * * The core scanner is also used by PL/pgSQL, so we provide a public API * for it. However, the rest of the backend is only expected to use the * higher-level API provided by parser.h. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/scanner.h * *------------------------------------------------------------------------- */ #ifndef SCANNER_H #define SCANNER_H #include "common/keywords.h" /* * The scanner returns extra data about scanned tokens in this union type. * Note that this is a subset of the fields used in YYSTYPE of the bison * parsers built atop the scanner. */ typedef union core_YYSTYPE { int ival; /* for integer literals */ char *str; /* for identifiers and non-integer literals */ const char *keyword; /* canonical spelling of keywords */ } core_YYSTYPE; /* * We track token locations in terms of byte offsets from the start of the * source string, not the column number/line number representation that * bison uses by default. Also, to minimize overhead we track only one * location (usually the first token location) for each construct, not * the beginning and ending locations as bison does by default. It's * therefore sufficient to make YYLTYPE an int. */ #define YYLTYPE int /* * Another important component of the scanner's API is the token code numbers. * However, those are not defined in this file, because bison insists on * defining them for itself. The token codes used by the core scanner are * the ASCII characters plus these: * %token IDENT UIDENT FCONST SCONST USCONST BCONST XCONST Op * %token ICONST PARAM * %token TYPECAST DOT_DOT COLON_EQUALS EQUALS_GREATER * %token LESS_EQUALS GREATER_EQUALS NOT_EQUALS * The above token definitions *must* be the first ones declared in any * bison parser built atop this scanner, so that they will have consistent * numbers assigned to them (specifically, IDENT = 258 and so on). */ /* * The YY_EXTRA data that a flex scanner allows us to pass around. * Private state needed by the core scanner goes here. Note that the actual * yy_extra struct may be larger and have this as its first component, thus * allowing the calling parser to keep some fields of its own in YY_EXTRA. */ typedef struct core_yy_extra_type { /* * The string the scanner is physically scanning. We keep this mainly so * that we can cheaply compute the offset of the current token (yytext). */ char *scanbuf; Size scanbuflen; /* * The keyword list to use, and the associated grammar token codes. */ const ScanKeywordList *keywordlist; const uint16 *keyword_tokens; /* * Scanner settings to use. These are initialized from the corresponding * GUC variables by scanner_init(). Callers can modify them after * scanner_init() if they don't want the scanner's behavior to follow the * prevailing GUC settings. */ int backslash_quote; bool escape_string_warning; bool standard_conforming_strings; /* * literalbuf is used to accumulate literal values when multiple rules are * needed to parse a single literal. Call startlit() to reset buffer to * empty, addlit() to add text. NOTE: the string in literalbuf is NOT * necessarily null-terminated, but there always IS room to add a trailing * null at offset literallen. We store a null only when we need it. */ char *literalbuf; /* palloc'd expandable buffer */ int literallen; /* actual current string length */ int literalalloc; /* current allocated buffer size */ /* * Random assorted scanner state. */ int state_before_str_stop; /* start cond. before end quote */ int xcdepth; /* depth of nesting in slash-star comments */ char *dolqstart; /* current $foo$ quote start string */ YYLTYPE save_yylloc; /* one-element stack for PUSH_YYLLOC() */ /* first part of UTF16 surrogate pair for Unicode escapes */ int32 utf16_first_part; /* state variables for literal-lexing warnings */ bool warn_on_first_escape; bool saw_non_ascii; int yyllocend; } core_yy_extra_type; /* * The type of yyscanner is opaque outside scan.l. */ typedef void *core_yyscan_t; /* Support for scanner_errposition_callback function */ typedef struct ScannerCallbackState { core_yyscan_t yyscanner; int location; ErrorContextCallback errcallback; } ScannerCallbackState; /* Constant data exported from parser/scan.l */ extern PGDLLIMPORT const uint16 ScanKeywordTokens[]; /* Entry points in parser/scan.l */ extern core_yyscan_t scanner_init(const char *str, core_yy_extra_type *yyext, const ScanKeywordList *keywordlist, const uint16 *keyword_tokens); extern void scanner_finish(core_yyscan_t yyscanner); extern int core_yylex(core_YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner); extern int scanner_errposition(int location, core_yyscan_t yyscanner); extern void setup_scanner_errposition_callback(ScannerCallbackState *scbstate, core_yyscan_t yyscanner, int location); extern void cancel_scanner_errposition_callback(ScannerCallbackState *scbstate); extern void scanner_yyerror(const char *message, core_yyscan_t yyscanner) pg_attribute_noreturn(); #endif /* SCANNER_H */ libpg_query-13-2.1.0/src/postgres/include/parser/scansup.h000066400000000000000000000015321413137616400234650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * scansup.h * scanner support routines. used by both the bootstrap lexer * as well as the normal lexer * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/parser/scansup.h * *------------------------------------------------------------------------- */ #ifndef SCANSUP_H #define SCANSUP_H extern char *scanstr(const char *s); extern char *downcase_truncate_identifier(const char *ident, int len, bool warn); extern char *downcase_identifier(const char *ident, int len, bool warn, bool truncate); extern void truncate_identifier(char *ident, int len, bool warn); extern bool scanner_isspace(char ch); #endif /* SCANSUP_H */ libpg_query-13-2.1.0/src/postgres/include/partitioning/000077500000000000000000000000001413137616400230525ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/partitioning/partdefs.h000066400000000000000000000012501413137616400250310ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * partdefs.h * Base definitions for partitioned table handling * * Copyright (c) 2007-2020, PostgreSQL Global Development Group * * src/include/partitioning/partdefs.h * *------------------------------------------------------------------------- */ #ifndef PARTDEFS_H #define PARTDEFS_H typedef struct PartitionBoundInfoData *PartitionBoundInfo; typedef struct PartitionKeyData *PartitionKey; typedef struct PartitionBoundSpec PartitionBoundSpec; typedef struct PartitionDescData *PartitionDesc; typedef struct PartitionDirectoryData *PartitionDirectory; #endif /* PARTDEFS_H */ libpg_query-13-2.1.0/src/postgres/include/pg_config.h000066400000000000000000000743721413137616400224640ustar00rootroot00000000000000/* src/include/pg_config.h. Generated from pg_config.h.in by configure. */ /* src/include/pg_config.h.in. Generated from configure.in by autoheader. */ /* Define to the type of arg 1 of 'accept' */ #define ACCEPT_TYPE_ARG1 int /* Define to the type of arg 2 of 'accept' */ #define ACCEPT_TYPE_ARG2 struct sockaddr * /* Define to the type of arg 3 of 'accept' */ #define ACCEPT_TYPE_ARG3 socklen_t /* Define to the return type of 'accept' */ #define ACCEPT_TYPE_RETURN int /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* The normal alignment of `double', in bytes. */ #define ALIGNOF_DOUBLE 8 /* The normal alignment of `int', in bytes. */ #define ALIGNOF_INT 4 /* The normal alignment of `long', in bytes. */ #define ALIGNOF_LONG 8 /* The normal alignment of `long long int', in bytes. */ /* #undef ALIGNOF_LONG_LONG_INT */ /* The normal alignment of `PG_INT128_TYPE', in bytes. */ #define ALIGNOF_PG_INT128_TYPE 16 /* The normal alignment of `short', in bytes. */ #define ALIGNOF_SHORT 2 /* Size of a disk block --- this also limits the size of a tuple. You can set it bigger if you need bigger tuples (although TOAST should reduce the need to have large tuples, since fields can be spread across multiple tuples). BLCKSZ must be a power of 2. The maximum possible value of BLCKSZ is currently 2^15 (32768). This is determined by the 15-bit widths of the lp_off and lp_len fields in ItemIdData (see include/storage/itemid.h). Changing BLCKSZ requires an initdb. */ #define BLCKSZ 8192 /* Saved arguments from configure */ #define CONFIGURE_ARGS " '--without-readline' '--without-zlib'" /* Define to the default TCP port number on which the server listens and to which clients will try to connect. This can be overridden at run-time, but it's convenient if your clients have the right default compiled in. (--with-pgport=PORTNUM) */ #define DEF_PGPORT 5432 /* Define to the default TCP port number as a string constant. */ #define DEF_PGPORT_STR "5432" /* Define to build with GSSAPI support. (--with-gssapi) */ /* #undef ENABLE_GSS */ /* Define to 1 if you want National Language Support. (--enable-nls) */ /* #undef ENABLE_NLS */ /* Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety) */ #define ENABLE_THREAD_SAFETY 1 /* Define to 1 if gettimeofday() takes only 1 argument. */ /* #undef GETTIMEOFDAY_1ARG */ #ifdef GETTIMEOFDAY_1ARG # define gettimeofday(a,b) gettimeofday(a) #endif /* Define to 1 if you have the `append_history' function. */ /* #undef HAVE_APPEND_HISTORY */ /* Define to 1 if you have the `ASN1_STRING_get0_data' function. */ /* #undef HAVE_ASN1_STRING_GET0_DATA */ /* Define to 1 if you want to use atomics if available. */ #define HAVE_ATOMICS 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_ATOMIC_H */ /* Define to 1 if you have the `backtrace_symbols' function. */ #define HAVE_BACKTRACE_SYMBOLS 1 /* Define to 1 if you have the `BIO_get_data' function. */ /* #undef HAVE_BIO_GET_DATA */ /* Define to 1 if you have the `BIO_meth_new' function. */ /* #undef HAVE_BIO_METH_NEW */ /* Define to 1 if you have the `clock_gettime' function. */ #define HAVE_CLOCK_GETTIME 1 /* Define to 1 if your compiler handles computed gotos. */ #define HAVE_COMPUTED_GOTO 1 /* Define to 1 if you have the `copyfile' function. */ #define HAVE_COPYFILE 1 /* Define to 1 if you have the header file. */ #define HAVE_COPYFILE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_CRTDEFS_H */ /* Define to 1 if you have the `CRYPTO_lock' function. */ /* #undef HAVE_CRYPTO_LOCK */ /* Define to 1 if you have the declaration of `fdatasync', and to 0 if you don't. */ #define HAVE_DECL_FDATASYNC 0 /* Define to 1 if you have the declaration of `F_FULLFSYNC', and to 0 if you don't. */ #define HAVE_DECL_F_FULLFSYNC 1 /* Define to 1 if you have the declaration of `LLVMCreateGDBRegistrationListener', and to 0 if you don't. */ /* #undef HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER */ /* Define to 1 if you have the declaration of `LLVMCreatePerfJITEventListener', and to 0 if you don't. */ /* #undef HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER */ /* Define to 1 if you have the declaration of `LLVMGetHostCPUFeatures', and to 0 if you don't. */ /* #undef HAVE_DECL_LLVMGETHOSTCPUFEATURES */ /* Define to 1 if you have the declaration of `LLVMGetHostCPUName', and to 0 if you don't. */ /* #undef HAVE_DECL_LLVMGETHOSTCPUNAME */ /* Define to 1 if you have the declaration of `LLVMOrcGetSymbolAddressIn', and to 0 if you don't. */ /* #undef HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN */ /* Define to 1 if you have the declaration of `posix_fadvise', and to 0 if you don't. */ #define HAVE_DECL_POSIX_FADVISE 0 /* Define to 1 if you have the declaration of `RTLD_GLOBAL', and to 0 if you don't. */ #define HAVE_DECL_RTLD_GLOBAL 1 /* Define to 1 if you have the declaration of `RTLD_NOW', and to 0 if you don't. */ #define HAVE_DECL_RTLD_NOW 1 /* Define to 1 if you have the declaration of `strlcat', and to 0 if you don't. */ #define HAVE_DECL_STRLCAT 1 /* Define to 1 if you have the declaration of `strlcpy', and to 0 if you don't. */ #define HAVE_DECL_STRLCPY 1 /* Define to 1 if you have the declaration of `strnlen', and to 0 if you don't. */ #define HAVE_DECL_STRNLEN 1 /* Define to 1 if you have the declaration of `strtoll', and to 0 if you don't. */ #define HAVE_DECL_STRTOLL 1 /* Define to 1 if you have the declaration of `strtoull', and to 0 if you don't. */ #define HAVE_DECL_STRTOULL 1 /* Define to 1 if you have the `dlopen' function. */ #define HAVE_DLOPEN 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EDITLINE_HISTORY_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EDITLINE_READLINE_H */ /* Define to 1 if you have the header file. */ #define HAVE_EXECINFO_H 1 /* Define to 1 if you have the `explicit_bzero' function. */ /* #undef HAVE_EXPLICIT_BZERO */ /* Define to 1 if you have the `fdatasync' function. */ #define HAVE_FDATASYNC 1 /* Define to 1 if you have the `fls' function. */ #define HAVE_FLS 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if your compiler understands __func__. */ #define HAVE_FUNCNAME__FUNC 1 /* Define to 1 if your compiler understands __FUNCTION__. */ /* #undef HAVE_FUNCNAME__FUNCTION */ /* Define to 1 if you have __atomic_compare_exchange_n(int *, int *, int). */ #define HAVE_GCC__ATOMIC_INT32_CAS 1 /* Define to 1 if you have __atomic_compare_exchange_n(int64 *, int64 *, int64). */ #define HAVE_GCC__ATOMIC_INT64_CAS 1 /* Define to 1 if you have __sync_lock_test_and_set(char *) and friends. */ #define HAVE_GCC__SYNC_CHAR_TAS 1 /* Define to 1 if you have __sync_val_compare_and_swap(int *, int, int). */ #define HAVE_GCC__SYNC_INT32_CAS 1 /* Define to 1 if you have __sync_lock_test_and_set(int *) and friends. */ #define HAVE_GCC__SYNC_INT32_TAS 1 /* Define to 1 if you have __sync_val_compare_and_swap(int64 *, int64, int64). */ #define HAVE_GCC__SYNC_INT64_CAS 1 /* Define to 1 if you have the `getaddrinfo' function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if you have the `gethostbyname_r' function. */ /* #undef HAVE_GETHOSTBYNAME_R */ /* Define to 1 if you have the `getifaddrs' function. */ #define HAVE_GETIFADDRS 1 /* Define to 1 if you have the `getopt' function. */ #define HAVE_GETOPT 1 /* Define to 1 if you have the header file. */ #define HAVE_GETOPT_H 1 /* Define to 1 if you have the `getopt_long' function. */ #define HAVE_GETOPT_LONG 1 /* Define to 1 if you have the `getpeereid' function. */ #define HAVE_GETPEEREID 1 /* Define to 1 if you have the `getpeerucred' function. */ /* #undef HAVE_GETPEERUCRED */ /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getrlimit' function. */ #define HAVE_GETRLIMIT 1 /* Define to 1 if you have the `getrusage' function. */ #define HAVE_GETRUSAGE 1 /* Define to 1 if you have the `gettimeofday' function. */ /* #undef HAVE_GETTIMEOFDAY */ /* Define to 1 if you have the header file. */ /* #undef HAVE_GSSAPI_GSSAPI_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_GSSAPI_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_HISTORY_H */ /* Define to 1 if you have the `history_truncate_file' function. */ /* #undef HAVE_HISTORY_TRUNCATE_FILE */ /* Define to 1 if you have the header file. */ #define HAVE_IFADDRS_H 1 /* Define to 1 if you have the `inet_aton' function. */ #define HAVE_INET_ATON 1 /* Define to 1 if the system has the type `int64'. */ /* #undef HAVE_INT64 */ /* Define to 1 if the system has the type `int8'. */ /* #undef HAVE_INT8 */ /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the global variable 'int opterr'. */ #define HAVE_INT_OPTERR 1 /* Define to 1 if you have the global variable 'int optreset'. */ #define HAVE_INT_OPTRESET 1 /* Define to 1 if you have the global variable 'int timezone'. */ #define HAVE_INT_TIMEZONE 1 /* Define to 1 if you have support for IPv6. */ #define HAVE_IPV6 1 /* Define to 1 if __builtin_constant_p(x) implies "i"(x) acceptance. */ /* #undef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P */ /* Define to 1 if you have the `kqueue' function. */ #define HAVE_KQUEUE 1 /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LDAP_H */ /* Define to 1 if you have the `ldap_initialize' function. */ /* #undef HAVE_LDAP_INITIALIZE */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `ldap' library (-lldap). */ /* #undef HAVE_LIBLDAP */ /* Define to 1 if you have the `ldap_r' library (-lldap_r). */ /* #undef HAVE_LIBLDAP_R */ /* Define to 1 if you have the `m' library (-lm). */ #define HAVE_LIBM 1 /* Define to 1 if you have the `pam' library (-lpam). */ /* #undef HAVE_LIBPAM */ /* Define if you have a function readline library */ /* #undef HAVE_LIBREADLINE */ /* Define to 1 if you have the `selinux' library (-lselinux). */ /* #undef HAVE_LIBSELINUX */ /* Define to 1 if you have the `ssl' library (-lssl). */ /* #undef HAVE_LIBSSL */ /* Define to 1 if you have the `wldap32' library (-lwldap32). */ /* #undef HAVE_LIBWLDAP32 */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the `xslt' library (-lxslt). */ /* #undef HAVE_LIBXSLT */ /* Define to 1 if you have the `z' library (-lz). */ /* #undef HAVE_LIBZ */ /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if the system has the type `locale_t'. */ #define HAVE_LOCALE_T 1 /* Define to 1 if `long int' works and is 64 bits. */ #define HAVE_LONG_INT_64 1 /* Define to 1 if `long long int' works and is 64 bits. */ /* #undef HAVE_LONG_LONG_INT_64 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBARRIER_H */ /* Define to 1 if you have the `mbstowcs_l' function. */ #define HAVE_MBSTOWCS_L 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `memset_s' function. */ #define HAVE_MEMSET_S 1 /* Define to 1 if the system has the type `MINIDUMP_TYPE'. */ /* #undef HAVE_MINIDUMP_TYPE */ /* Define to 1 if you have the `mkdtemp' function. */ #define HAVE_MKDTEMP 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_TCP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NET_IF_H 1 /* Define to 1 if you have the `OPENSSL_init_ssl' function. */ /* #undef HAVE_OPENSSL_INIT_SSL */ /* Define to 1 if you have the header file. */ /* #undef HAVE_OSSP_UUID_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_PAM_PAM_APPL_H */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_fadvise' function. */ /* #undef HAVE_POSIX_FADVISE */ /* Define to 1 if you have the `posix_fallocate' function. */ /* #undef HAVE_POSIX_FALLOCATE */ /* Define to 1 if the assembler supports PPC's LWARX mutex hint bit. */ /* #undef HAVE_PPC_LWARX_MUTEX_HINT */ /* Define to 1 if you have the `ppoll' function. */ /* #undef HAVE_PPOLL */ /* Define to 1 if you have the `pread' function. */ #define HAVE_PREAD 1 /* Define to 1 if you have the `pstat' function. */ /* #undef HAVE_PSTAT */ /* Define to 1 if the PS_STRINGS thing exists. */ /* #undef HAVE_PS_STRINGS */ /* Define if you have POSIX threads libraries and header files. */ #define HAVE_PTHREAD 1 /* Define to 1 if you have the `pthread_is_threaded_np' function. */ #define HAVE_PTHREAD_IS_THREADED_NP 1 /* Have PTHREAD_PRIO_INHERIT. */ #define HAVE_PTHREAD_PRIO_INHERIT 1 /* Define to 1 if you have the `pwrite' function. */ #define HAVE_PWRITE 1 /* Define to 1 if you have the `random' function. */ #define HAVE_RANDOM 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_READLINE_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READLINE_HISTORY_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READLINE_READLINE_H */ /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the global variable 'rl_completion_append_character'. */ /* #undef HAVE_RL_COMPLETION_APPEND_CHARACTER */ /* Define to 1 if you have the `rl_completion_matches' function. */ /* #undef HAVE_RL_COMPLETION_MATCHES */ /* Define to 1 if you have the global variable 'rl_completion_suppress_quote'. */ /* #undef HAVE_RL_COMPLETION_SUPPRESS_QUOTE */ /* Define to 1 if you have the `rl_filename_completion_function' function. */ /* #undef HAVE_RL_FILENAME_COMPLETION_FUNCTION */ /* Define to 1 if you have the global variable 'rl_filename_quote_characters'. */ /* #undef HAVE_RL_FILENAME_QUOTE_CHARACTERS */ /* Define to 1 if you have the global variable 'rl_filename_quoting_function'. */ /* #undef HAVE_RL_FILENAME_QUOTING_FUNCTION */ /* Define to 1 if you have the `rl_reset_screen_size' function. */ /* #undef HAVE_RL_RESET_SCREEN_SIZE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SECURITY_PAM_APPL_H */ /* Define to 1 if you have the `setproctitle' function. */ /* #undef HAVE_SETPROCTITLE */ /* Define to 1 if you have the `setproctitle_fast' function. */ /* #undef HAVE_SETPROCTITLE_FAST */ /* Define to 1 if you have the `setsid' function. */ #define HAVE_SETSID 1 /* Define to 1 if you have the `shm_open' function. */ #define HAVE_SHM_OPEN 1 /* Define to 1 if you have spinlocks. */ #define HAVE_SPINLOCKS 1 /* Define to 1 if you have the `srandom' function. */ #define HAVE_SRANDOM 1 /* Define to 1 if stdbool.h conforms to C99. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchrnul' function. */ /* #undef HAVE_STRCHRNUL */ /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strlcat' function. */ #define HAVE_STRLCAT 1 /* Define to 1 if you have the `strlcpy' function. */ #define HAVE_STRLCPY 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strsignal' function. */ #define HAVE_STRSIGNAL 1 /* Define to 1 if you have the `strtof' function. */ #define HAVE_STRTOF 1 /* Define to 1 if you have the `strtoll' function. */ #define HAVE_STRTOLL 1 /* Define to 1 if you have the `strtoq' function. */ /* #undef HAVE_STRTOQ */ /* Define to 1 if you have the `strtoull' function. */ #define HAVE_STRTOULL 1 /* Define to 1 if you have the `strtouq' function. */ /* #undef HAVE_STRTOUQ */ /* Define to 1 if the system has the type `struct addrinfo'. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define to 1 if the system has the type `struct cmsgcred'. */ /* #undef HAVE_STRUCT_CMSGCRED */ /* Define to 1 if the system has the type `struct option'. */ #define HAVE_STRUCT_OPTION 1 /* Define to 1 if `sa_len' is a member of `struct sockaddr'. */ #define HAVE_STRUCT_SOCKADDR_SA_LEN 1 /* Define to 1 if the system has the type `struct sockaddr_storage'. */ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 /* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */ #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1 /* Define to 1 if `ss_len' is a member of `struct sockaddr_storage'. */ #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1 /* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */ /* #undef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY */ /* Define to 1 if `__ss_len' is a member of `struct sockaddr_storage'. */ /* #undef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN */ /* Define to 1 if the system has the type `struct sockaddr_un'. */ #define HAVE_STRUCT_SOCKADDR_UN 1 /* Define to 1 if `tm_zone' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_ZONE 1 /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the `sync_file_range' function. */ /* #undef HAVE_SYNC_FILE_RANGE */ /* Define to 1 if you have the syslog interface. */ #define HAVE_SYSLOG 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EPOLL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_EVENT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_IPC_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_PRCTL_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_PROCCTL_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_PSTAT_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_RESOURCE_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SEM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SHM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_TAS_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UCRED_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TERMIOS_H 1 /* Define to 1 if your compiler understands `typeof' or something similar. */ #define HAVE_TYPEOF 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_UCRED_H */ /* Define to 1 if the system has the type `uint64'. */ /* #undef HAVE_UINT64 */ /* Define to 1 if the system has the type `uint8'. */ /* #undef HAVE_UINT8 */ /* Define to 1 if the system has the type `union semun'. */ #define HAVE_UNION_SEMUN 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if you have the `uselocale' function. */ #define HAVE_USELOCALE 1 /* Define to 1 if you have BSD UUID support. */ /* #undef HAVE_UUID_BSD */ /* Define to 1 if you have E2FS UUID support. */ /* #undef HAVE_UUID_E2FS */ /* Define to 1 if you have the header file. */ /* #undef HAVE_UUID_H */ /* Define to 1 if you have OSSP UUID support. */ /* #undef HAVE_UUID_OSSP */ /* Define to 1 if you have the header file. */ /* #undef HAVE_UUID_UUID_H */ /* Define to 1 if you have the `wcstombs_l' function. */ #define HAVE_WCSTOMBS_L 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINLDAP_H */ /* Define to 1 if you have the `X509_get_signature_nid' function. */ /* #undef HAVE_X509_GET_SIGNATURE_NID */ /* Define to 1 if the assembler supports X86_64's POPCNTQ instruction. */ #define HAVE_X86_64_POPCNTQ 1 /* Define to 1 if the system has the type `_Bool'. */ #define HAVE__BOOL 1 /* Define to 1 if your compiler understands __builtin_bswap16. */ #define HAVE__BUILTIN_BSWAP16 1 /* Define to 1 if your compiler understands __builtin_bswap32. */ #define HAVE__BUILTIN_BSWAP32 1 /* Define to 1 if your compiler understands __builtin_bswap64. */ #define HAVE__BUILTIN_BSWAP64 1 /* Define to 1 if your compiler understands __builtin_clz. */ #define HAVE__BUILTIN_CLZ 1 /* Define to 1 if your compiler understands __builtin_constant_p. */ #define HAVE__BUILTIN_CONSTANT_P 1 /* Define to 1 if your compiler understands __builtin_ctz. */ #define HAVE__BUILTIN_CTZ 1 /* Define to 1 if your compiler understands __builtin_$op_overflow. */ #define HAVE__BUILTIN_OP_OVERFLOW 1 /* Define to 1 if your compiler understands __builtin_popcount. */ #define HAVE__BUILTIN_POPCOUNT 1 /* Define to 1 if your compiler understands __builtin_types_compatible_p. */ #define HAVE__BUILTIN_TYPES_COMPATIBLE_P 1 /* Define to 1 if your compiler understands __builtin_unreachable. */ #define HAVE__BUILTIN_UNREACHABLE 1 /* Define to 1 if you have the `_configthreadlocale' function. */ /* #undef HAVE__CONFIGTHREADLOCALE */ /* Define to 1 if you have __cpuid. */ /* #undef HAVE__CPUID */ /* Define to 1 if you have __get_cpuid. */ #define HAVE__GET_CPUID 1 /* Define to 1 if your compiler understands _Static_assert. */ #define HAVE__STATIC_ASSERT 1 /* Define to 1 if you have the `__strtoll' function. */ /* #undef HAVE___STRTOLL */ /* Define to 1 if you have the `__strtoull' function. */ /* #undef HAVE___STRTOULL */ /* Define to the appropriate printf length modifier for 64-bit ints. */ #define INT64_MODIFIER "l" /* Define to 1 if `locale_t' requires . */ #define LOCALE_T_IN_XLOCALE 1 /* Define as the maximum alignment requirement of any C data type. */ #define MAXIMUM_ALIGNOF 8 /* Define bytes to use libc memset(). */ #define MEMSET_LOOP_LIMIT 1024 /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "pgsql-bugs@lists.postgresql.org" /* Define to the full name of this package. */ #define PACKAGE_NAME "PostgreSQL" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "PostgreSQL 13.3" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "postgresql" /* Define to the home page for this package. */ #define PACKAGE_URL "https://www.postgresql.org/" /* Define to the version of this package. */ #define PACKAGE_VERSION "13.3" /* Define to the name of a signed 128-bit integer type. */ #define PG_INT128_TYPE __int128 /* Define to the name of a signed 64-bit integer type. */ #define PG_INT64_TYPE long int /* Define to the name of the default PostgreSQL service principal in Kerberos (GSSAPI). (--with-krb-srvnam=NAME) */ #define PG_KRB_SRVNAM "postgres" /* PostgreSQL major version as a string */ #define PG_MAJORVERSION "13" /* PostgreSQL major version number */ #define PG_MAJORVERSION_NUM 13 /* PostgreSQL minor version number */ #define PG_MINORVERSION_NUM 3 /* Define to best printf format archetype, usually gnu_printf if available. */ #define PG_PRINTF_ATTRIBUTE printf /* Define to 1 to use to define type bool. */ #define PG_USE_STDBOOL 1 /* PostgreSQL version as a string */ #define PG_VERSION "13.3" /* PostgreSQL version as a number */ #define PG_VERSION_NUM 130003 /* A string containing the version number, platform, and C compiler */ #define PG_VERSION_STR "PostgreSQL 13.3 on x86_64-apple-darwin19.6.0, compiled by Apple clang version 12.0.0 (clang-1200.0.32.29), 64-bit" /* Define to 1 to allow profiling output to be saved separately for each process. */ /* #undef PROFILE_PID_DIR */ /* Define to necessary symbol if this constant uses a non-standard name on your system. */ /* #undef PTHREAD_CREATE_JOINABLE */ /* RELSEG_SIZE is the maximum number of blocks allowed in one disk file. Thus, the maximum size of a single file is RELSEG_SIZE * BLCKSZ; relations bigger than that are divided into multiple files. RELSEG_SIZE * BLCKSZ must be less than your OS' limit on file size. This is often 2 GB or 4GB in a 32-bit operating system, unless you have large file support enabled. By default, we make the limit 1 GB to avoid any possible integer-overflow problems within the OS. A limit smaller than necessary only means we divide a large relation into more chunks than necessary, so it seems best to err in the direction of a small limit. A power-of-2 value is recommended to save a few cycles in md.c, but is not absolutely required. Changing RELSEG_SIZE requires an initdb. */ #define RELSEG_SIZE 131072 /* The size of `bool', as computed by sizeof. */ #define SIZEOF_BOOL 1 /* The size of `long', as computed by sizeof. */ #define SIZEOF_LONG 8 /* The size of `off_t', as computed by sizeof. */ #define SIZEOF_OFF_T 8 /* The size of `size_t', as computed by sizeof. */ #define SIZEOF_SIZE_T 8 /* The size of `void *', as computed by sizeof. */ #define SIZEOF_VOID_P 8 /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if strerror_r() returns int. */ #define STRERROR_R_INT 1 /* Define to 1 to use ARMv8 CRC Extension. */ /* #undef USE_ARMV8_CRC32C */ /* Define to 1 to use ARMv8 CRC Extension with a runtime check. */ /* #undef USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK */ /* Define to 1 to build with assertion checks. (--enable-cassert) */ /* #undef USE_ASSERT_CHECKING */ /* Define to 1 to build with Bonjour support. (--with-bonjour) */ /* #undef USE_BONJOUR */ /* Define to 1 to build with BSD Authentication support. (--with-bsd-auth) */ /* #undef USE_BSD_AUTH */ /* Define to use /dev/urandom for random number generation */ #define USE_DEV_URANDOM 1 /* Define to build with ICU support. (--with-icu) */ /* #undef USE_ICU */ /* Define to 1 to build with LDAP support. (--with-ldap) */ /* #undef USE_LDAP */ /* Define to 1 to build with XML support. (--with-libxml) */ /* #undef USE_LIBXML */ /* Define to 1 to use XSLT support when building contrib/xml2. (--with-libxslt) */ /* #undef USE_LIBXSLT */ /* Define to 1 to build with LLVM based JIT support. (--with-llvm) */ /* #undef USE_LLVM */ /* Define to select named POSIX semaphores. */ /* #undef USE_NAMED_POSIX_SEMAPHORES */ /* Define to build with OpenSSL support. (--with-openssl) */ /* #undef USE_OPENSSL */ /* Define to use OpenSSL for random number generation */ /* #undef USE_OPENSSL_RANDOM */ /* Define to 1 to build with PAM support. (--with-pam) */ /* #undef USE_PAM */ /* Define to 1 to use software CRC-32C implementation (slicing-by-8). */ /* #undef USE_SLICING_BY_8_CRC32C */ /* Define to 1 use Intel SSE 4.2 CRC instructions. */ /* #undef USE_SSE42_CRC32C */ /* Define to 1 to use Intel SSE 4.2 CRC instructions with a runtime check. */ #define USE_SSE42_CRC32C_WITH_RUNTIME_CHECK 1 /* Define to build with systemd support. (--with-systemd) */ /* #undef USE_SYSTEMD */ /* Define to select SysV-style semaphores. */ #define USE_SYSV_SEMAPHORES 1 /* Define to select SysV-style shared memory. */ #define USE_SYSV_SHARED_MEMORY 1 /* Define to select unnamed POSIX semaphores. */ /* #undef USE_UNNAMED_POSIX_SEMAPHORES */ /* Define to use native Windows API for random number generation */ /* #undef USE_WIN32_RANDOM */ /* Define to select Win32-style semaphores. */ /* #undef USE_WIN32_SEMAPHORES */ /* Define to select Win32-style shared memory. */ /* #undef USE_WIN32_SHARED_MEMORY */ /* Define to 1 if `wcstombs_l' requires . */ #define WCSTOMBS_L_IN_XLOCALE 1 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Size of a WAL file block. This need have no particular relation to BLCKSZ. XLOG_BLCKSZ must be a power of 2, and if your system supports O_DIRECT I/O, XLOG_BLCKSZ must be a multiple of the alignment requirement for direct-I/O buffers, else direct I/O may fail. Changing XLOG_BLCKSZ requires an initdb. */ #define XLOG_BLCKSZ 8192 /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus /* #undef inline */ #endif /* Define to keyword to use for C99 restrict support, or to nothing if not supported */ #define pg_restrict __restrict /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ #define restrict __restrict /* Work around a bug in Sun C++: it does not support _Restrict or __restrict__, even though the corresponding Sun C compiler ends up with "#define restrict _Restrict" or "#define restrict __restrict__" in the previous line. Perhaps some future version of Sun C++ will work with restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ #if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict # define __restrict__ #endif /* Define to how the compiler spells `typeof'. */ /* #undef typeof */ #undef HAVE_LOCALE_T #undef LOCALE_T_IN_XLOCALE #undef WCSTOMBS_L_IN_XLOCALE #undef PG_INT128_TYPE #undef HAVE__STATIC_ASSERT #undef HAVE_EXECINFO_H #undef HAVE_BACKTRACE_SYMBOLS #undef HAVE__GET_CPUID #ifdef __FreeBSD__ #define HAVE_STRCHRNUL #endif libpg_query-13-2.1.0/src/postgres/include/pg_config_ext.h000066400000000000000000000005031413137616400233250ustar00rootroot00000000000000/* src/include/pg_config_ext.h. Generated from pg_config_ext.h.in by configure. */ /* * src/include/pg_config_ext.h.in. This is generated manually, not by * autoheader, since we want to limit which symbols get defined here. */ /* Define to the name of a signed 64-bit integer type. */ #define PG_INT64_TYPE long int libpg_query-13-2.1.0/src/postgres/include/pg_config_manual.h000066400000000000000000000313151413137616400240070ustar00rootroot00000000000000/*------------------------------------------------------------------------ * PostgreSQL manual configuration settings * * This file contains various configuration symbols and limits. In * all cases, changing them is only useful in very rare situations or * for developers. If you edit any of these, be sure to do a *full* * rebuild (and an initdb if noted). * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/pg_config_manual.h *------------------------------------------------------------------------ */ /* * This is the default value for wal_segment_size to be used when initdb is run * without the --wal-segsize option. It must be a valid segment size. */ #define DEFAULT_XLOG_SEG_SIZE (16*1024*1024) /* * Maximum length for identifiers (e.g. table names, column names, * function names). Names actually are limited to one less byte than this, * because the length must include a trailing zero byte. * * Changing this requires an initdb. */ #define NAMEDATALEN 64 /* * Maximum number of arguments to a function. * * The minimum value is 8 (GIN indexes use 8-argument support functions). * The maximum possible value is around 600 (limited by index tuple size in * pg_proc's index; BLCKSZ larger than 8K would allow more). Values larger * than needed will waste memory and processing time, but do not directly * cost disk space. * * Changing this does not require an initdb, but it does require a full * backend recompile (including any user-defined C functions). */ #define FUNC_MAX_ARGS 100 /* * Maximum number of columns in an index. There is little point in making * this anything but a multiple of 32, because the main cost is associated * with index tuple header size (see access/itup.h). * * Changing this requires an initdb. */ #define INDEX_MAX_KEYS 32 /* * Maximum number of columns in a partition key */ #define PARTITION_MAX_KEYS 32 /* * Decide whether built-in 8-byte types, including float8, int8, and * timestamp, are passed by value. This is on by default if sizeof(Datum) >= * 8 (that is, on 64-bit platforms). If sizeof(Datum) < 8 (32-bit platforms), * this must be off. We keep this here as an option so that it is easy to * test the pass-by-reference code paths on 64-bit platforms. * * Changing this requires an initdb. */ #if SIZEOF_VOID_P >= 8 #define USE_FLOAT8_BYVAL 1 #endif /* * When we don't have native spinlocks, we use semaphores to simulate them. * Decreasing this value reduces consumption of OS resources; increasing it * may improve performance, but supplying a real spinlock implementation is * probably far better. */ #define NUM_SPINLOCK_SEMAPHORES 128 /* * When we have neither spinlocks nor atomic operations support we're * implementing atomic operations on top of spinlock on top of semaphores. To * be safe against atomic operations while holding a spinlock separate * semaphores have to be used. */ #define NUM_ATOMICS_SEMAPHORES 64 /* * MAXPGPATH: standard size of a pathname buffer in PostgreSQL (hence, * maximum usable pathname length is one less). * * We'd use a standard system header symbol for this, if there weren't * so many to choose from: MAXPATHLEN, MAX_PATH, PATH_MAX are all * defined by different "standards", and often have different values * on the same platform! So we just punt and use a reasonably * generous setting here. */ #define MAXPGPATH 1024 /* * PG_SOMAXCONN: maximum accept-queue length limit passed to * listen(2). You'd think we should use SOMAXCONN from * , but on many systems that symbol is much smaller * than the kernel's actual limit. In any case, this symbol need be * twiddled only if you have a kernel that refuses large limit values, * rather than silently reducing the value to what it can handle * (which is what most if not all Unixen do). */ #define PG_SOMAXCONN 10000 /* * You can try changing this if you have a machine with bytes of * another size, but no guarantee... */ #define BITS_PER_BYTE 8 /* * Preferred alignment for disk I/O buffers. On some CPUs, copies between * user space and kernel space are significantly faster if the user buffer * is aligned on a larger-than-MAXALIGN boundary. Ideally this should be * a platform-dependent value, but for now we just hard-wire it. */ #define ALIGNOF_BUFFER 32 /* * If EXEC_BACKEND is defined, the postmaster uses an alternative method for * starting subprocesses: Instead of simply using fork(), as is standard on * Unix platforms, it uses fork()+exec() or something equivalent on Windows, * as well as lots of extra code to bring the required global state to those * new processes. This must be enabled on Windows (because there is no * fork()). On other platforms, it's only useful for verifying those * otherwise Windows-specific code paths. */ #if defined(WIN32) && !defined(__CYGWIN__) #define EXEC_BACKEND #endif /* * Define this if your operating system supports link() */ #if !defined(WIN32) && !defined(__CYGWIN__) #define HAVE_WORKING_LINK 1 #endif /* * USE_POSIX_FADVISE controls whether Postgres will attempt to use the * posix_fadvise() kernel call. Usually the automatic configure tests are * sufficient, but some older Linux distributions had broken versions of * posix_fadvise(). If necessary you can remove the #define here. */ #if HAVE_DECL_POSIX_FADVISE && defined(HAVE_POSIX_FADVISE) #define USE_POSIX_FADVISE #endif /* * USE_PREFETCH code should be compiled only if we have a way to implement * prefetching. (This is decoupled from USE_POSIX_FADVISE because there * might in future be support for alternative low-level prefetch APIs. * If you change this, you probably need to adjust the error message in * check_effective_io_concurrency.) */ #ifdef USE_POSIX_FADVISE #define USE_PREFETCH #endif /* * Default and maximum values for backend_flush_after, bgwriter_flush_after * and checkpoint_flush_after; measured in blocks. Currently, these are * enabled by default if sync_file_range() exists, ie, only on Linux. Perhaps * we could also enable by default if we have mmap and msync(MS_ASYNC)? */ #ifdef HAVE_SYNC_FILE_RANGE #define DEFAULT_BACKEND_FLUSH_AFTER 0 /* never enabled by default */ #define DEFAULT_BGWRITER_FLUSH_AFTER 64 #define DEFAULT_CHECKPOINT_FLUSH_AFTER 32 #else #define DEFAULT_BACKEND_FLUSH_AFTER 0 #define DEFAULT_BGWRITER_FLUSH_AFTER 0 #define DEFAULT_CHECKPOINT_FLUSH_AFTER 0 #endif /* upper limit for all three variables */ #define WRITEBACK_MAX_PENDING_FLUSHES 256 /* * USE_SSL code should be compiled only when compiling with an SSL * implementation. (Currently, only OpenSSL is supported, but we might add * more implementations in the future.) */ #ifdef USE_OPENSSL #define USE_SSL #endif /* * This is the default directory in which AF_UNIX socket files are * placed. Caution: changing this risks breaking your existing client * applications, which are likely to continue to look in the old * directory. But if you just hate the idea of sockets in /tmp, * here's where to twiddle it. You can also override this at runtime * with the postmaster's -k switch. * * If set to an empty string, then AF_UNIX sockets are not used by default: A * server will not create an AF_UNIX socket unless the run-time configuration * is changed, a client will connect via TCP/IP by default and will only use * an AF_UNIX socket if one is explicitly specified. * * This is done by default on Windows because there is no good standard * location for AF_UNIX sockets and many installations on Windows don't * support them yet. */ #ifndef WIN32 #define DEFAULT_PGSOCKET_DIR "/tmp" #else #define DEFAULT_PGSOCKET_DIR "" #endif /* * This is the default event source for Windows event log. */ #define DEFAULT_EVENT_SOURCE "PostgreSQL" /* * The random() function is expected to yield values between 0 and * MAX_RANDOM_VALUE. Currently, all known implementations yield * 0..2^31-1, so we just hardwire this constant. We could do a * configure test if it proves to be necessary. CAUTION: Think not to * replace this with RAND_MAX. RAND_MAX defines the maximum value of * the older rand() function, which is often different from --- and * considerably inferior to --- random(). */ #define MAX_RANDOM_VALUE PG_INT32_MAX /* * On PPC machines, decide whether to use the mutex hint bit in LWARX * instructions. Setting the hint bit will slightly improve spinlock * performance on POWER6 and later machines, but does nothing before that, * and will result in illegal-instruction failures on some pre-POWER4 * machines. By default we use the hint bit when building for 64-bit PPC, * which should be safe in nearly all cases. You might want to override * this if you are building 32-bit code for a known-recent PPC machine. */ #ifdef HAVE_PPC_LWARX_MUTEX_HINT /* must have assembler support in any case */ #if defined(__ppc64__) || defined(__powerpc64__) #define USE_PPC_LWARX_MUTEX_HINT #endif #endif /* * On PPC machines, decide whether to use LWSYNC instructions in place of * ISYNC and SYNC. This provides slightly better performance, but will * result in illegal-instruction failures on some pre-POWER4 machines. * By default we use LWSYNC when building for 64-bit PPC, which should be * safe in nearly all cases. */ #if defined(__ppc64__) || defined(__powerpc64__) #define USE_PPC_LWSYNC #endif /* * Assumed cache line size. This doesn't affect correctness, but can be used * for low-level optimizations. Currently, this is used to pad some data * structures in xlog.c, to ensure that highly-contended fields are on * different cache lines. Too small a value can hurt performance due to false * sharing, while the only downside of too large a value is a few bytes of * wasted memory. The default is 128, which should be large enough for all * supported platforms. */ #define PG_CACHE_LINE_SIZE 128 /* *------------------------------------------------------------------------ * The following symbols are for enabling debugging code, not for * controlling user-visible features or resource limits. *------------------------------------------------------------------------ */ /* * Include Valgrind "client requests", mostly in the memory allocator, so * Valgrind understands PostgreSQL memory contexts. This permits detecting * memory errors that Valgrind would not detect on a vanilla build. See also * src/tools/valgrind.supp. "make installcheck" runs 20-30x longer under * Valgrind. Note that USE_VALGRIND slowed older versions of Valgrind by an * additional order of magnitude; Valgrind 3.8.1 does not have this problem. * The client requests fall in hot code paths, so USE_VALGRIND also slows * native execution by a few percentage points. * * You should normally use MEMORY_CONTEXT_CHECKING with USE_VALGRIND; * instrumentation of repalloc() is inferior without it. */ /* #define USE_VALGRIND */ /* * Define this to cause pfree()'d memory to be cleared immediately, to * facilitate catching bugs that refer to already-freed values. * Right now, this gets defined automatically if --enable-cassert. */ #ifdef USE_ASSERT_CHECKING #define CLOBBER_FREED_MEMORY #endif /* * Define this to check memory allocation errors (scribbling on more * bytes than were allocated). Right now, this gets defined * automatically if --enable-cassert or USE_VALGRIND. */ #if defined(USE_ASSERT_CHECKING) || defined(USE_VALGRIND) #define MEMORY_CONTEXT_CHECKING #endif /* * Define this to cause palloc()'d memory to be filled with random data, to * facilitate catching code that depends on the contents of uninitialized * memory. Caution: this is horrendously expensive. */ /* #define RANDOMIZE_ALLOCATED_MEMORY */ /* * Define this to force all parse and plan trees to be passed through * copyObject(), to facilitate catching errors and omissions in * copyObject(). */ /* #define COPY_PARSE_PLAN_TREES */ /* * Define this to force all parse and plan trees to be passed through * outfuncs.c/readfuncs.c, to facilitate catching errors and omissions in * those modules. */ /* #define WRITE_READ_PARSE_PLAN_TREES */ /* * Define this to force all raw parse trees for DML statements to be scanned * by raw_expression_tree_walker(), to facilitate catching errors and * omissions in that function. */ /* #define RAW_EXPRESSION_COVERAGE_TEST */ /* * Enable debugging print statements for lock-related operations. */ /* #define LOCK_DEBUG */ /* * Enable debugging print statements for WAL-related operations; see * also the wal_debug GUC var. */ /* #define WAL_DEBUG */ /* * Enable tracing of resource consumption during sort operations; * see also the trace_sort GUC var. For 8.1 this is enabled by default. */ #define TRACE_SORT 1 /* * Enable tracing of syncscan operations (see also the trace_syncscan GUC var). */ /* #define TRACE_SYNCSCAN */ libpg_query-13-2.1.0/src/postgres/include/pg_config_os.h000066400000000000000000000002361413137616400231510ustar00rootroot00000000000000/* src/include/port/darwin.h */ #define __darwin__ 1 #if HAVE_DECL_F_FULLFSYNC /* not present before macOS 10.3 */ #define HAVE_FSYNC_WRITETHROUGH #endif libpg_query-13-2.1.0/src/postgres/include/pg_getopt.h000066400000000000000000000031731413137616400225100ustar00rootroot00000000000000/* * Postgres files that use getopt(3) always include this file. * We must cope with three different scenarios: * 1. We're using the platform's getopt(), and we should just import the * appropriate declarations. * 2. The platform lacks getopt(), and we must declare everything. * 3. The platform has getopt(), but we're not using it because we don't * like its behavior. The declarations we make here must be compatible * with both the platform's getopt() and our src/port/getopt.c. * * Portions Copyright (c) 1987, 1993, 1994 * The Regents of the University of California. All rights reserved. * * Portions Copyright (c) 2003-2020, PostgreSQL Global Development Group * * src/include/pg_getopt.h */ #ifndef PG_GETOPT_H #define PG_GETOPT_H /* POSIX says getopt() is provided by unistd.h */ #include /* rely on the system's getopt.h if present */ #ifdef HAVE_GETOPT_H #include #endif /* * If we have , assume it declares these variables, else do that * ourselves. (We used to just declare them unconditionally, but Cygwin * doesn't like that.) */ #ifndef HAVE_GETOPT_H extern char *optarg; extern int optind; extern int opterr; extern int optopt; #endif /* HAVE_GETOPT_H */ /* * Some platforms have optreset but fail to declare it in , so cope. * Cygwin, however, doesn't like this either. */ #if defined(HAVE_INT_OPTRESET) && !defined(__CYGWIN__) extern int optreset; #endif /* Provide getopt() declaration if the platform doesn't have it */ #ifndef HAVE_GETOPT extern int getopt(int nargc, char *const *nargv, const char *ostr); #endif #endif /* PG_GETOPT_H */ libpg_query-13-2.1.0/src/postgres/include/pg_trace.h000066400000000000000000000005001413137616400222730ustar00rootroot00000000000000/* ---------- * pg_trace.h * * Definitions for the PostgreSQL tracing framework * * Copyright (c) 2006-2020, PostgreSQL Global Development Group * * src/include/pg_trace.h * ---------- */ #ifndef PG_TRACE_H #define PG_TRACE_H #include "utils/probes.h" /* pgrminclude ignore */ #endif /* PG_TRACE_H */ libpg_query-13-2.1.0/src/postgres/include/pgstat.h000066400000000000000000001253741413137616400220320ustar00rootroot00000000000000/* ---------- * pgstat.h * * Definitions for the PostgreSQL statistics collector daemon. * * Copyright (c) 2001-2020, PostgreSQL Global Development Group * * src/include/pgstat.h * ---------- */ #ifndef PGSTAT_H #define PGSTAT_H #include "datatype/timestamp.h" #include "libpq/pqcomm.h" #include "miscadmin.h" #include "port/atomics.h" #include "portability/instr_time.h" #include "postmaster/pgarch.h" #include "storage/proc.h" #include "utils/hsearch.h" #include "utils/relcache.h" /* ---------- * Paths for the statistics files (relative to installation's $PGDATA). * ---------- */ #define PGSTAT_STAT_PERMANENT_DIRECTORY "pg_stat" #define PGSTAT_STAT_PERMANENT_FILENAME "pg_stat/global.stat" #define PGSTAT_STAT_PERMANENT_TMPFILE "pg_stat/global.tmp" /* Default directory to store temporary statistics data in */ #define PG_STAT_TMP_DIR "pg_stat_tmp" /* Values for track_functions GUC variable --- order is significant! */ typedef enum TrackFunctionsLevel { TRACK_FUNC_OFF, TRACK_FUNC_PL, TRACK_FUNC_ALL } TrackFunctionsLevel; /* ---------- * The types of backend -> collector messages * ---------- */ typedef enum StatMsgType { PGSTAT_MTYPE_DUMMY, PGSTAT_MTYPE_INQUIRY, PGSTAT_MTYPE_TABSTAT, PGSTAT_MTYPE_TABPURGE, PGSTAT_MTYPE_DROPDB, PGSTAT_MTYPE_RESETCOUNTER, PGSTAT_MTYPE_RESETSHAREDCOUNTER, PGSTAT_MTYPE_RESETSINGLECOUNTER, PGSTAT_MTYPE_RESETSLRUCOUNTER, PGSTAT_MTYPE_AUTOVAC_START, PGSTAT_MTYPE_VACUUM, PGSTAT_MTYPE_ANALYZE, PGSTAT_MTYPE_ARCHIVER, PGSTAT_MTYPE_BGWRITER, PGSTAT_MTYPE_SLRU, PGSTAT_MTYPE_FUNCSTAT, PGSTAT_MTYPE_FUNCPURGE, PGSTAT_MTYPE_RECOVERYCONFLICT, PGSTAT_MTYPE_TEMPFILE, PGSTAT_MTYPE_DEADLOCK, PGSTAT_MTYPE_CHECKSUMFAILURE } StatMsgType; /* ---------- * The data type used for counters. * ---------- */ typedef int64 PgStat_Counter; /* ---------- * PgStat_TableCounts The actual per-table counts kept by a backend * * This struct should contain only actual event counters, because we memcmp * it against zeroes to detect whether there are any counts to transmit. * It is a component of PgStat_TableStatus (within-backend state) and * PgStat_TableEntry (the transmitted message format). * * Note: for a table, tuples_returned is the number of tuples successfully * fetched by heap_getnext, while tuples_fetched is the number of tuples * successfully fetched by heap_fetch under the control of bitmap indexscans. * For an index, tuples_returned is the number of index entries returned by * the index AM, while tuples_fetched is the number of tuples successfully * fetched by heap_fetch under the control of simple indexscans for this index. * * tuples_inserted/updated/deleted/hot_updated count attempted actions, * regardless of whether the transaction committed. delta_live_tuples, * delta_dead_tuples, and changed_tuples are set depending on commit or abort. * Note that delta_live_tuples and delta_dead_tuples can be negative! * ---------- */ typedef struct PgStat_TableCounts { PgStat_Counter t_numscans; PgStat_Counter t_tuples_returned; PgStat_Counter t_tuples_fetched; PgStat_Counter t_tuples_inserted; PgStat_Counter t_tuples_updated; PgStat_Counter t_tuples_deleted; PgStat_Counter t_tuples_hot_updated; bool t_truncated; PgStat_Counter t_delta_live_tuples; PgStat_Counter t_delta_dead_tuples; PgStat_Counter t_changed_tuples; PgStat_Counter t_blocks_fetched; PgStat_Counter t_blocks_hit; } PgStat_TableCounts; /* Possible targets for resetting cluster-wide shared values */ typedef enum PgStat_Shared_Reset_Target { RESET_ARCHIVER, RESET_BGWRITER } PgStat_Shared_Reset_Target; /* Possible object types for resetting single counters */ typedef enum PgStat_Single_Reset_Type { RESET_TABLE, RESET_FUNCTION } PgStat_Single_Reset_Type; /* ------------------------------------------------------------ * Structures kept in backend local memory while accumulating counts * ------------------------------------------------------------ */ /* ---------- * PgStat_TableStatus Per-table status within a backend * * Many of the event counters are nontransactional, ie, we count events * in committed and aborted transactions alike. For these, we just count * directly in the PgStat_TableStatus. However, delta_live_tuples, * delta_dead_tuples, and changed_tuples must be derived from event counts * with awareness of whether the transaction or subtransaction committed or * aborted. Hence, we also keep a stack of per-(sub)transaction status * records for every table modified in the current transaction. At commit * or abort, we propagate tuples_inserted/updated/deleted up to the * parent subtransaction level, or out to the parent PgStat_TableStatus, * as appropriate. * ---------- */ typedef struct PgStat_TableStatus { Oid t_id; /* table's OID */ bool t_shared; /* is it a shared catalog? */ struct PgStat_TableXactStatus *trans; /* lowest subxact's counts */ PgStat_TableCounts t_counts; /* event counts to be sent */ } PgStat_TableStatus; /* ---------- * PgStat_TableXactStatus Per-table, per-subtransaction status * ---------- */ typedef struct PgStat_TableXactStatus { PgStat_Counter tuples_inserted; /* tuples inserted in (sub)xact */ PgStat_Counter tuples_updated; /* tuples updated in (sub)xact */ PgStat_Counter tuples_deleted; /* tuples deleted in (sub)xact */ bool truncated; /* relation truncated in this (sub)xact */ PgStat_Counter inserted_pre_trunc; /* tuples inserted prior to truncate */ PgStat_Counter updated_pre_trunc; /* tuples updated prior to truncate */ PgStat_Counter deleted_pre_trunc; /* tuples deleted prior to truncate */ int nest_level; /* subtransaction nest level */ /* links to other structs for same relation: */ struct PgStat_TableXactStatus *upper; /* next higher subxact if any */ PgStat_TableStatus *parent; /* per-table status */ /* structs of same subxact level are linked here: */ struct PgStat_TableXactStatus *next; /* next of same subxact */ } PgStat_TableXactStatus; /* ------------------------------------------------------------ * Message formats follow * ------------------------------------------------------------ */ /* ---------- * PgStat_MsgHdr The common message header * ---------- */ typedef struct PgStat_MsgHdr { StatMsgType m_type; int m_size; } PgStat_MsgHdr; /* ---------- * Space available in a message. This will keep the UDP packets below 1K, * which should fit unfragmented into the MTU of the loopback interface. * (Larger values of PGSTAT_MAX_MSG_SIZE would work for that on most * platforms, but we're being conservative here.) * ---------- */ #define PGSTAT_MAX_MSG_SIZE 1000 #define PGSTAT_MSG_PAYLOAD (PGSTAT_MAX_MSG_SIZE - sizeof(PgStat_MsgHdr)) /* ---------- * PgStat_MsgDummy A dummy message, ignored by the collector * ---------- */ typedef struct PgStat_MsgDummy { PgStat_MsgHdr m_hdr; } PgStat_MsgDummy; /* ---------- * PgStat_MsgInquiry Sent by a backend to ask the collector * to write the stats file(s). * * Ordinarily, an inquiry message prompts writing of the global stats file, * the stats file for shared catalogs, and the stats file for the specified * database. If databaseid is InvalidOid, only the first two are written. * * New file(s) will be written only if the existing file has a timestamp * older than the specified cutoff_time; this prevents duplicated effort * when multiple requests arrive at nearly the same time, assuming that * backends send requests with cutoff_times a little bit in the past. * * clock_time should be the requestor's current local time; the collector * uses this to check for the system clock going backward, but it has no * effect unless that occurs. We assume clock_time >= cutoff_time, though. * ---------- */ typedef struct PgStat_MsgInquiry { PgStat_MsgHdr m_hdr; TimestampTz clock_time; /* observed local clock time */ TimestampTz cutoff_time; /* minimum acceptable file timestamp */ Oid databaseid; /* requested DB (InvalidOid => shared only) */ } PgStat_MsgInquiry; /* ---------- * PgStat_TableEntry Per-table info in a MsgTabstat * ---------- */ typedef struct PgStat_TableEntry { Oid t_id; PgStat_TableCounts t_counts; } PgStat_TableEntry; /* ---------- * PgStat_MsgTabstat Sent by the backend to report table * and buffer access statistics. * ---------- */ #define PGSTAT_NUM_TABENTRIES \ ((PGSTAT_MSG_PAYLOAD - sizeof(Oid) - 3 * sizeof(int) - 2 * sizeof(PgStat_Counter)) \ / sizeof(PgStat_TableEntry)) typedef struct PgStat_MsgTabstat { PgStat_MsgHdr m_hdr; Oid m_databaseid; int m_nentries; int m_xact_commit; int m_xact_rollback; PgStat_Counter m_block_read_time; /* times in microseconds */ PgStat_Counter m_block_write_time; PgStat_TableEntry m_entry[PGSTAT_NUM_TABENTRIES]; } PgStat_MsgTabstat; /* ---------- * PgStat_MsgTabpurge Sent by the backend to tell the collector * about dead tables. * ---------- */ #define PGSTAT_NUM_TABPURGE \ ((PGSTAT_MSG_PAYLOAD - sizeof(Oid) - sizeof(int)) \ / sizeof(Oid)) typedef struct PgStat_MsgTabpurge { PgStat_MsgHdr m_hdr; Oid m_databaseid; int m_nentries; Oid m_tableid[PGSTAT_NUM_TABPURGE]; } PgStat_MsgTabpurge; /* ---------- * PgStat_MsgDropdb Sent by the backend to tell the collector * about a dropped database * ---------- */ typedef struct PgStat_MsgDropdb { PgStat_MsgHdr m_hdr; Oid m_databaseid; } PgStat_MsgDropdb; /* ---------- * PgStat_MsgResetcounter Sent by the backend to tell the collector * to reset counters * ---------- */ typedef struct PgStat_MsgResetcounter { PgStat_MsgHdr m_hdr; Oid m_databaseid; } PgStat_MsgResetcounter; /* ---------- * PgStat_MsgResetsharedcounter Sent by the backend to tell the collector * to reset a shared counter * ---------- */ typedef struct PgStat_MsgResetsharedcounter { PgStat_MsgHdr m_hdr; PgStat_Shared_Reset_Target m_resettarget; } PgStat_MsgResetsharedcounter; /* ---------- * PgStat_MsgResetsinglecounter Sent by the backend to tell the collector * to reset a single counter * ---------- */ typedef struct PgStat_MsgResetsinglecounter { PgStat_MsgHdr m_hdr; Oid m_databaseid; PgStat_Single_Reset_Type m_resettype; Oid m_objectid; } PgStat_MsgResetsinglecounter; /* ---------- * PgStat_MsgResetslrucounter Sent by the backend to tell the collector * to reset a SLRU counter * ---------- */ typedef struct PgStat_MsgResetslrucounter { PgStat_MsgHdr m_hdr; int m_index; } PgStat_MsgResetslrucounter; /* ---------- * PgStat_MsgAutovacStart Sent by the autovacuum daemon to signal * that a database is going to be processed * ---------- */ typedef struct PgStat_MsgAutovacStart { PgStat_MsgHdr m_hdr; Oid m_databaseid; TimestampTz m_start_time; } PgStat_MsgAutovacStart; /* ---------- * PgStat_MsgVacuum Sent by the backend or autovacuum daemon * after VACUUM * ---------- */ typedef struct PgStat_MsgVacuum { PgStat_MsgHdr m_hdr; Oid m_databaseid; Oid m_tableoid; bool m_autovacuum; TimestampTz m_vacuumtime; PgStat_Counter m_live_tuples; PgStat_Counter m_dead_tuples; } PgStat_MsgVacuum; /* ---------- * PgStat_MsgAnalyze Sent by the backend or autovacuum daemon * after ANALYZE * ---------- */ typedef struct PgStat_MsgAnalyze { PgStat_MsgHdr m_hdr; Oid m_databaseid; Oid m_tableoid; bool m_autovacuum; bool m_resetcounter; TimestampTz m_analyzetime; PgStat_Counter m_live_tuples; PgStat_Counter m_dead_tuples; } PgStat_MsgAnalyze; /* ---------- * PgStat_MsgArchiver Sent by the archiver to update statistics. * ---------- */ typedef struct PgStat_MsgArchiver { PgStat_MsgHdr m_hdr; bool m_failed; /* Failed attempt */ char m_xlog[MAX_XFN_CHARS + 1]; TimestampTz m_timestamp; } PgStat_MsgArchiver; /* ---------- * PgStat_MsgBgWriter Sent by the bgwriter to update statistics. * ---------- */ typedef struct PgStat_MsgBgWriter { PgStat_MsgHdr m_hdr; PgStat_Counter m_timed_checkpoints; PgStat_Counter m_requested_checkpoints; PgStat_Counter m_buf_written_checkpoints; PgStat_Counter m_buf_written_clean; PgStat_Counter m_maxwritten_clean; PgStat_Counter m_buf_written_backend; PgStat_Counter m_buf_fsync_backend; PgStat_Counter m_buf_alloc; PgStat_Counter m_checkpoint_write_time; /* times in milliseconds */ PgStat_Counter m_checkpoint_sync_time; } PgStat_MsgBgWriter; /* ---------- * PgStat_MsgSLRU Sent by a backend to update SLRU statistics. * ---------- */ typedef struct PgStat_MsgSLRU { PgStat_MsgHdr m_hdr; PgStat_Counter m_index; PgStat_Counter m_blocks_zeroed; PgStat_Counter m_blocks_hit; PgStat_Counter m_blocks_read; PgStat_Counter m_blocks_written; PgStat_Counter m_blocks_exists; PgStat_Counter m_flush; PgStat_Counter m_truncate; } PgStat_MsgSLRU; /* ---------- * PgStat_MsgRecoveryConflict Sent by the backend upon recovery conflict * ---------- */ typedef struct PgStat_MsgRecoveryConflict { PgStat_MsgHdr m_hdr; Oid m_databaseid; int m_reason; } PgStat_MsgRecoveryConflict; /* ---------- * PgStat_MsgTempFile Sent by the backend upon creating a temp file * ---------- */ typedef struct PgStat_MsgTempFile { PgStat_MsgHdr m_hdr; Oid m_databaseid; size_t m_filesize; } PgStat_MsgTempFile; /* ---------- * PgStat_FunctionCounts The actual per-function counts kept by a backend * * This struct should contain only actual event counters, because we memcmp * it against zeroes to detect whether there are any counts to transmit. * * Note that the time counters are in instr_time format here. We convert to * microseconds in PgStat_Counter format when transmitting to the collector. * ---------- */ typedef struct PgStat_FunctionCounts { PgStat_Counter f_numcalls; instr_time f_total_time; instr_time f_self_time; } PgStat_FunctionCounts; /* ---------- * PgStat_BackendFunctionEntry Entry in backend's per-function hash table * ---------- */ typedef struct PgStat_BackendFunctionEntry { Oid f_id; PgStat_FunctionCounts f_counts; } PgStat_BackendFunctionEntry; /* ---------- * PgStat_FunctionEntry Per-function info in a MsgFuncstat * ---------- */ typedef struct PgStat_FunctionEntry { Oid f_id; PgStat_Counter f_numcalls; PgStat_Counter f_total_time; /* times in microseconds */ PgStat_Counter f_self_time; } PgStat_FunctionEntry; /* ---------- * PgStat_MsgFuncstat Sent by the backend to report function * usage statistics. * ---------- */ #define PGSTAT_NUM_FUNCENTRIES \ ((PGSTAT_MSG_PAYLOAD - sizeof(Oid) - sizeof(int)) \ / sizeof(PgStat_FunctionEntry)) typedef struct PgStat_MsgFuncstat { PgStat_MsgHdr m_hdr; Oid m_databaseid; int m_nentries; PgStat_FunctionEntry m_entry[PGSTAT_NUM_FUNCENTRIES]; } PgStat_MsgFuncstat; /* ---------- * PgStat_MsgFuncpurge Sent by the backend to tell the collector * about dead functions. * ---------- */ #define PGSTAT_NUM_FUNCPURGE \ ((PGSTAT_MSG_PAYLOAD - sizeof(Oid) - sizeof(int)) \ / sizeof(Oid)) typedef struct PgStat_MsgFuncpurge { PgStat_MsgHdr m_hdr; Oid m_databaseid; int m_nentries; Oid m_functionid[PGSTAT_NUM_FUNCPURGE]; } PgStat_MsgFuncpurge; /* ---------- * PgStat_MsgDeadlock Sent by the backend to tell the collector * about a deadlock that occurred. * ---------- */ typedef struct PgStat_MsgDeadlock { PgStat_MsgHdr m_hdr; Oid m_databaseid; } PgStat_MsgDeadlock; /* ---------- * PgStat_MsgChecksumFailure Sent by the backend to tell the collector * about checksum failures noticed. * ---------- */ typedef struct PgStat_MsgChecksumFailure { PgStat_MsgHdr m_hdr; Oid m_databaseid; int m_failurecount; TimestampTz m_failure_time; } PgStat_MsgChecksumFailure; /* ---------- * PgStat_Msg Union over all possible messages. * ---------- */ typedef union PgStat_Msg { PgStat_MsgHdr msg_hdr; PgStat_MsgDummy msg_dummy; PgStat_MsgInquiry msg_inquiry; PgStat_MsgTabstat msg_tabstat; PgStat_MsgTabpurge msg_tabpurge; PgStat_MsgDropdb msg_dropdb; PgStat_MsgResetcounter msg_resetcounter; PgStat_MsgResetsharedcounter msg_resetsharedcounter; PgStat_MsgResetsinglecounter msg_resetsinglecounter; PgStat_MsgResetslrucounter msg_resetslrucounter; PgStat_MsgAutovacStart msg_autovacuum_start; PgStat_MsgVacuum msg_vacuum; PgStat_MsgAnalyze msg_analyze; PgStat_MsgArchiver msg_archiver; PgStat_MsgBgWriter msg_bgwriter; PgStat_MsgSLRU msg_slru; PgStat_MsgFuncstat msg_funcstat; PgStat_MsgFuncpurge msg_funcpurge; PgStat_MsgRecoveryConflict msg_recoveryconflict; PgStat_MsgDeadlock msg_deadlock; PgStat_MsgTempFile msg_tempfile; PgStat_MsgChecksumFailure msg_checksumfailure; } PgStat_Msg; /* ------------------------------------------------------------ * Statistic collector data structures follow * * PGSTAT_FILE_FORMAT_ID should be changed whenever any of these * data structures change. * ------------------------------------------------------------ */ #define PGSTAT_FILE_FORMAT_ID 0x01A5BC9D /* ---------- * PgStat_StatDBEntry The collector's data per database * ---------- */ typedef struct PgStat_StatDBEntry { Oid databaseid; PgStat_Counter n_xact_commit; PgStat_Counter n_xact_rollback; PgStat_Counter n_blocks_fetched; PgStat_Counter n_blocks_hit; PgStat_Counter n_tuples_returned; PgStat_Counter n_tuples_fetched; PgStat_Counter n_tuples_inserted; PgStat_Counter n_tuples_updated; PgStat_Counter n_tuples_deleted; TimestampTz last_autovac_time; PgStat_Counter n_conflict_tablespace; PgStat_Counter n_conflict_lock; PgStat_Counter n_conflict_snapshot; PgStat_Counter n_conflict_bufferpin; PgStat_Counter n_conflict_startup_deadlock; PgStat_Counter n_temp_files; PgStat_Counter n_temp_bytes; PgStat_Counter n_deadlocks; PgStat_Counter n_checksum_failures; TimestampTz last_checksum_failure; PgStat_Counter n_block_read_time; /* times in microseconds */ PgStat_Counter n_block_write_time; TimestampTz stat_reset_timestamp; TimestampTz stats_timestamp; /* time of db stats file update */ /* * tables and functions must be last in the struct, because we don't write * the pointers out to the stats file. */ HTAB *tables; HTAB *functions; } PgStat_StatDBEntry; /* ---------- * PgStat_StatTabEntry The collector's data per table (or index) * ---------- */ typedef struct PgStat_StatTabEntry { Oid tableid; PgStat_Counter numscans; PgStat_Counter tuples_returned; PgStat_Counter tuples_fetched; PgStat_Counter tuples_inserted; PgStat_Counter tuples_updated; PgStat_Counter tuples_deleted; PgStat_Counter tuples_hot_updated; PgStat_Counter n_live_tuples; PgStat_Counter n_dead_tuples; PgStat_Counter changes_since_analyze; PgStat_Counter inserts_since_vacuum; PgStat_Counter blocks_fetched; PgStat_Counter blocks_hit; TimestampTz vacuum_timestamp; /* user initiated vacuum */ PgStat_Counter vacuum_count; TimestampTz autovac_vacuum_timestamp; /* autovacuum initiated */ PgStat_Counter autovac_vacuum_count; TimestampTz analyze_timestamp; /* user initiated */ PgStat_Counter analyze_count; TimestampTz autovac_analyze_timestamp; /* autovacuum initiated */ PgStat_Counter autovac_analyze_count; } PgStat_StatTabEntry; /* ---------- * PgStat_StatFuncEntry The collector's data per function * ---------- */ typedef struct PgStat_StatFuncEntry { Oid functionid; PgStat_Counter f_numcalls; PgStat_Counter f_total_time; /* times in microseconds */ PgStat_Counter f_self_time; } PgStat_StatFuncEntry; /* * Archiver statistics kept in the stats collector */ typedef struct PgStat_ArchiverStats { PgStat_Counter archived_count; /* archival successes */ char last_archived_wal[MAX_XFN_CHARS + 1]; /* last WAL file * archived */ TimestampTz last_archived_timestamp; /* last archival success time */ PgStat_Counter failed_count; /* failed archival attempts */ char last_failed_wal[MAX_XFN_CHARS + 1]; /* WAL file involved in * last failure */ TimestampTz last_failed_timestamp; /* last archival failure time */ TimestampTz stat_reset_timestamp; } PgStat_ArchiverStats; /* * Global statistics kept in the stats collector */ typedef struct PgStat_GlobalStats { TimestampTz stats_timestamp; /* time of stats file update */ PgStat_Counter timed_checkpoints; PgStat_Counter requested_checkpoints; PgStat_Counter checkpoint_write_time; /* times in milliseconds */ PgStat_Counter checkpoint_sync_time; PgStat_Counter buf_written_checkpoints; PgStat_Counter buf_written_clean; PgStat_Counter maxwritten_clean; PgStat_Counter buf_written_backend; PgStat_Counter buf_fsync_backend; PgStat_Counter buf_alloc; TimestampTz stat_reset_timestamp; } PgStat_GlobalStats; /* * SLRU statistics kept in the stats collector */ typedef struct PgStat_SLRUStats { PgStat_Counter blocks_zeroed; PgStat_Counter blocks_hit; PgStat_Counter blocks_read; PgStat_Counter blocks_written; PgStat_Counter blocks_exists; PgStat_Counter flush; PgStat_Counter truncate; TimestampTz stat_reset_timestamp; } PgStat_SLRUStats; /* ---------- * Backend states * ---------- */ typedef enum BackendState { STATE_UNDEFINED, STATE_IDLE, STATE_RUNNING, STATE_IDLEINTRANSACTION, STATE_FASTPATH, STATE_IDLEINTRANSACTION_ABORTED, STATE_DISABLED } BackendState; /* ---------- * Wait Classes * ---------- */ #define PG_WAIT_LWLOCK 0x01000000U #define PG_WAIT_LOCK 0x03000000U #define PG_WAIT_BUFFER_PIN 0x04000000U #define PG_WAIT_ACTIVITY 0x05000000U #define PG_WAIT_CLIENT 0x06000000U #define PG_WAIT_EXTENSION 0x07000000U #define PG_WAIT_IPC 0x08000000U #define PG_WAIT_TIMEOUT 0x09000000U #define PG_WAIT_IO 0x0A000000U /* ---------- * Wait Events - Activity * * Use this category when a process is waiting because it has no work to do, * unless the "Client" or "Timeout" category describes the situation better. * Typically, this should only be used for background processes. * ---------- */ typedef enum { WAIT_EVENT_ARCHIVER_MAIN = PG_WAIT_ACTIVITY, WAIT_EVENT_AUTOVACUUM_MAIN, WAIT_EVENT_BGWRITER_HIBERNATE, WAIT_EVENT_BGWRITER_MAIN, WAIT_EVENT_CHECKPOINTER_MAIN, WAIT_EVENT_LOGICAL_APPLY_MAIN, WAIT_EVENT_LOGICAL_LAUNCHER_MAIN, WAIT_EVENT_PGSTAT_MAIN, WAIT_EVENT_RECOVERY_WAL_STREAM, WAIT_EVENT_SYSLOGGER_MAIN, WAIT_EVENT_WAL_RECEIVER_MAIN, WAIT_EVENT_WAL_SENDER_MAIN, WAIT_EVENT_WAL_WRITER_MAIN } WaitEventActivity; /* ---------- * Wait Events - Client * * Use this category when a process is waiting to send data to or receive data * from the frontend process to which it is connected. This is never used for * a background process, which has no client connection. * ---------- */ typedef enum { WAIT_EVENT_CLIENT_READ = PG_WAIT_CLIENT, WAIT_EVENT_CLIENT_WRITE, WAIT_EVENT_GSS_OPEN_SERVER, WAIT_EVENT_LIBPQWALRECEIVER_CONNECT, WAIT_EVENT_LIBPQWALRECEIVER_RECEIVE, WAIT_EVENT_SSL_OPEN_SERVER, WAIT_EVENT_WAL_RECEIVER_WAIT_START, WAIT_EVENT_WAL_SENDER_WAIT_WAL, WAIT_EVENT_WAL_SENDER_WRITE_DATA, } WaitEventClient; /* ---------- * Wait Events - IPC * * Use this category when a process cannot complete the work it is doing because * it is waiting for a notification from another process. * ---------- */ typedef enum { WAIT_EVENT_BACKUP_WAIT_WAL_ARCHIVE = PG_WAIT_IPC, WAIT_EVENT_BGWORKER_SHUTDOWN, WAIT_EVENT_BGWORKER_STARTUP, WAIT_EVENT_BTREE_PAGE, WAIT_EVENT_CHECKPOINT_DONE, WAIT_EVENT_CHECKPOINT_START, WAIT_EVENT_EXECUTE_GATHER, WAIT_EVENT_HASH_BATCH_ALLOCATE, WAIT_EVENT_HASH_BATCH_ELECT, WAIT_EVENT_HASH_BATCH_LOAD, WAIT_EVENT_HASH_BUILD_ALLOCATE, WAIT_EVENT_HASH_BUILD_ELECT, WAIT_EVENT_HASH_BUILD_HASH_INNER, WAIT_EVENT_HASH_BUILD_HASH_OUTER, WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATE, WAIT_EVENT_HASH_GROW_BATCHES_DECIDE, WAIT_EVENT_HASH_GROW_BATCHES_ELECT, WAIT_EVENT_HASH_GROW_BATCHES_FINISH, WAIT_EVENT_HASH_GROW_BATCHES_REPARTITION, WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATE, WAIT_EVENT_HASH_GROW_BUCKETS_ELECT, WAIT_EVENT_HASH_GROW_BUCKETS_REINSERT, WAIT_EVENT_LOGICAL_SYNC_DATA, WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE, WAIT_EVENT_MQ_INTERNAL, WAIT_EVENT_MQ_PUT_MESSAGE, WAIT_EVENT_MQ_RECEIVE, WAIT_EVENT_MQ_SEND, WAIT_EVENT_PARALLEL_BITMAP_SCAN, WAIT_EVENT_PARALLEL_CREATE_INDEX_SCAN, WAIT_EVENT_PARALLEL_FINISH, WAIT_EVENT_PROCARRAY_GROUP_UPDATE, WAIT_EVENT_PROC_SIGNAL_BARRIER, WAIT_EVENT_PROMOTE, WAIT_EVENT_RECOVERY_CONFLICT_SNAPSHOT, WAIT_EVENT_RECOVERY_CONFLICT_TABLESPACE, WAIT_EVENT_RECOVERY_PAUSE, WAIT_EVENT_REPLICATION_ORIGIN_DROP, WAIT_EVENT_REPLICATION_SLOT_DROP, WAIT_EVENT_SAFE_SNAPSHOT, WAIT_EVENT_SYNC_REP, WAIT_EVENT_XACT_GROUP_UPDATE } WaitEventIPC; /* ---------- * Wait Events - Timeout * * Use this category when a process is waiting for a timeout to expire. * ---------- */ typedef enum { WAIT_EVENT_BASE_BACKUP_THROTTLE = PG_WAIT_TIMEOUT, WAIT_EVENT_PG_SLEEP, WAIT_EVENT_RECOVERY_APPLY_DELAY, WAIT_EVENT_RECOVERY_RETRIEVE_RETRY_INTERVAL, WAIT_EVENT_VACUUM_DELAY } WaitEventTimeout; /* ---------- * Wait Events - IO * * Use this category when a process is waiting for a IO. * ---------- */ typedef enum { WAIT_EVENT_BUFFILE_READ = PG_WAIT_IO, WAIT_EVENT_BUFFILE_WRITE, WAIT_EVENT_CONTROL_FILE_READ, WAIT_EVENT_CONTROL_FILE_SYNC, WAIT_EVENT_CONTROL_FILE_SYNC_UPDATE, WAIT_EVENT_CONTROL_FILE_WRITE, WAIT_EVENT_CONTROL_FILE_WRITE_UPDATE, WAIT_EVENT_COPY_FILE_READ, WAIT_EVENT_COPY_FILE_WRITE, WAIT_EVENT_DATA_FILE_EXTEND, WAIT_EVENT_DATA_FILE_FLUSH, WAIT_EVENT_DATA_FILE_IMMEDIATE_SYNC, WAIT_EVENT_DATA_FILE_PREFETCH, WAIT_EVENT_DATA_FILE_READ, WAIT_EVENT_DATA_FILE_SYNC, WAIT_EVENT_DATA_FILE_TRUNCATE, WAIT_EVENT_DATA_FILE_WRITE, WAIT_EVENT_DSM_FILL_ZERO_WRITE, WAIT_EVENT_LOCK_FILE_ADDTODATADIR_READ, WAIT_EVENT_LOCK_FILE_ADDTODATADIR_SYNC, WAIT_EVENT_LOCK_FILE_ADDTODATADIR_WRITE, WAIT_EVENT_LOCK_FILE_CREATE_READ, WAIT_EVENT_LOCK_FILE_CREATE_SYNC, WAIT_EVENT_LOCK_FILE_CREATE_WRITE, WAIT_EVENT_LOCK_FILE_RECHECKDATADIR_READ, WAIT_EVENT_LOGICAL_REWRITE_CHECKPOINT_SYNC, WAIT_EVENT_LOGICAL_REWRITE_MAPPING_SYNC, WAIT_EVENT_LOGICAL_REWRITE_MAPPING_WRITE, WAIT_EVENT_LOGICAL_REWRITE_SYNC, WAIT_EVENT_LOGICAL_REWRITE_TRUNCATE, WAIT_EVENT_LOGICAL_REWRITE_WRITE, WAIT_EVENT_RELATION_MAP_READ, WAIT_EVENT_RELATION_MAP_SYNC, WAIT_EVENT_RELATION_MAP_WRITE, WAIT_EVENT_REORDER_BUFFER_READ, WAIT_EVENT_REORDER_BUFFER_WRITE, WAIT_EVENT_REORDER_LOGICAL_MAPPING_READ, WAIT_EVENT_REPLICATION_SLOT_READ, WAIT_EVENT_REPLICATION_SLOT_RESTORE_SYNC, WAIT_EVENT_REPLICATION_SLOT_SYNC, WAIT_EVENT_REPLICATION_SLOT_WRITE, WAIT_EVENT_SLRU_FLUSH_SYNC, WAIT_EVENT_SLRU_READ, WAIT_EVENT_SLRU_SYNC, WAIT_EVENT_SLRU_WRITE, WAIT_EVENT_SNAPBUILD_READ, WAIT_EVENT_SNAPBUILD_SYNC, WAIT_EVENT_SNAPBUILD_WRITE, WAIT_EVENT_TIMELINE_HISTORY_FILE_SYNC, WAIT_EVENT_TIMELINE_HISTORY_FILE_WRITE, WAIT_EVENT_TIMELINE_HISTORY_READ, WAIT_EVENT_TIMELINE_HISTORY_SYNC, WAIT_EVENT_TIMELINE_HISTORY_WRITE, WAIT_EVENT_TWOPHASE_FILE_READ, WAIT_EVENT_TWOPHASE_FILE_SYNC, WAIT_EVENT_TWOPHASE_FILE_WRITE, WAIT_EVENT_WALSENDER_TIMELINE_HISTORY_READ, WAIT_EVENT_WAL_BOOTSTRAP_SYNC, WAIT_EVENT_WAL_BOOTSTRAP_WRITE, WAIT_EVENT_WAL_COPY_READ, WAIT_EVENT_WAL_COPY_SYNC, WAIT_EVENT_WAL_COPY_WRITE, WAIT_EVENT_WAL_INIT_SYNC, WAIT_EVENT_WAL_INIT_WRITE, WAIT_EVENT_WAL_READ, WAIT_EVENT_WAL_SYNC, WAIT_EVENT_WAL_SYNC_METHOD_ASSIGN, WAIT_EVENT_WAL_WRITE } WaitEventIO; /* ---------- * Command type for progress reporting purposes * ---------- */ typedef enum ProgressCommandType { PROGRESS_COMMAND_INVALID, PROGRESS_COMMAND_VACUUM, PROGRESS_COMMAND_ANALYZE, PROGRESS_COMMAND_CLUSTER, PROGRESS_COMMAND_CREATE_INDEX, PROGRESS_COMMAND_BASEBACKUP } ProgressCommandType; #define PGSTAT_NUM_PROGRESS_PARAM 20 /* ---------- * Shared-memory data structures * ---------- */ /* * PgBackendSSLStatus * * For each backend, we keep the SSL status in a separate struct, that * is only filled in if SSL is enabled. * * All char arrays must be null-terminated. */ typedef struct PgBackendSSLStatus { /* Information about SSL connection */ int ssl_bits; bool ssl_compression; char ssl_version[NAMEDATALEN]; char ssl_cipher[NAMEDATALEN]; char ssl_client_dn[NAMEDATALEN]; /* * serial number is max "20 octets" per RFC 5280, so this size should be * fine */ char ssl_client_serial[NAMEDATALEN]; char ssl_issuer_dn[NAMEDATALEN]; } PgBackendSSLStatus; /* * PgBackendGSSStatus * * For each backend, we keep the GSS status in a separate struct, that * is only filled in if GSS is enabled. * * All char arrays must be null-terminated. */ typedef struct PgBackendGSSStatus { /* Information about GSSAPI connection */ char gss_princ[NAMEDATALEN]; /* GSSAPI Principal used to auth */ bool gss_auth; /* If GSSAPI authentication was used */ bool gss_enc; /* If encryption is being used */ } PgBackendGSSStatus; /* ---------- * PgBackendStatus * * Each live backend maintains a PgBackendStatus struct in shared memory * showing its current activity. (The structs are allocated according to * BackendId, but that is not critical.) Note that the collector process * has no involvement in, or even access to, these structs. * * Each auxiliary process also maintains a PgBackendStatus struct in shared * memory. * ---------- */ typedef struct PgBackendStatus { /* * To avoid locking overhead, we use the following protocol: a backend * increments st_changecount before modifying its entry, and again after * finishing a modification. A would-be reader should note the value of * st_changecount, copy the entry into private memory, then check * st_changecount again. If the value hasn't changed, and if it's even, * the copy is valid; otherwise start over. This makes updates cheap * while reads are potentially expensive, but that's the tradeoff we want. * * The above protocol needs memory barriers to ensure that the apparent * order of execution is as it desires. Otherwise, for example, the CPU * might rearrange the code so that st_changecount is incremented twice * before the modification on a machine with weak memory ordering. Hence, * use the macros defined below for manipulating st_changecount, rather * than touching it directly. */ int st_changecount; /* The entry is valid iff st_procpid > 0, unused if st_procpid == 0 */ int st_procpid; /* Type of backends */ BackendType st_backendType; /* Times when current backend, transaction, and activity started */ TimestampTz st_proc_start_timestamp; TimestampTz st_xact_start_timestamp; TimestampTz st_activity_start_timestamp; TimestampTz st_state_start_timestamp; /* Database OID, owning user's OID, connection client address */ Oid st_databaseid; Oid st_userid; SockAddr st_clientaddr; char *st_clienthostname; /* MUST be null-terminated */ /* Information about SSL connection */ bool st_ssl; PgBackendSSLStatus *st_sslstatus; /* Information about GSSAPI connection */ bool st_gss; PgBackendGSSStatus *st_gssstatus; /* current state */ BackendState st_state; /* application name; MUST be null-terminated */ char *st_appname; /* * Current command string; MUST be null-terminated. Note that this string * possibly is truncated in the middle of a multi-byte character. As * activity strings are stored more frequently than read, that allows to * move the cost of correct truncation to the display side. Use * pgstat_clip_activity() to truncate correctly. */ char *st_activity_raw; /* * Command progress reporting. Any command which wishes can advertise * that it is running by setting st_progress_command, * st_progress_command_target, and st_progress_param[]. * st_progress_command_target should be the OID of the relation which the * command targets (we assume there's just one, as this is meant for * utility commands), but the meaning of each element in the * st_progress_param array is command-specific. */ ProgressCommandType st_progress_command; Oid st_progress_command_target; int64 st_progress_param[PGSTAT_NUM_PROGRESS_PARAM]; } PgBackendStatus; /* * Macros to load and store st_changecount with appropriate memory barriers. * * Use PGSTAT_BEGIN_WRITE_ACTIVITY() before, and PGSTAT_END_WRITE_ACTIVITY() * after, modifying the current process's PgBackendStatus data. Note that, * since there is no mechanism for cleaning up st_changecount after an error, * THESE MACROS FORM A CRITICAL SECTION. Any error between them will be * promoted to PANIC, causing a database restart to clean up shared memory! * Hence, keep the critical section as short and straight-line as possible. * Aside from being safer, that minimizes the window in which readers will * have to loop. * * Reader logic should follow this sketch: * * for (;;) * { * int before_ct, after_ct; * * pgstat_begin_read_activity(beentry, before_ct); * ... copy beentry data to local memory ... * pgstat_end_read_activity(beentry, after_ct); * if (pgstat_read_activity_complete(before_ct, after_ct)) * break; * CHECK_FOR_INTERRUPTS(); * } * * For extra safety, we generally use volatile beentry pointers, although * the memory barriers should theoretically be sufficient. */ #define PGSTAT_BEGIN_WRITE_ACTIVITY(beentry) \ do { \ START_CRIT_SECTION(); \ (beentry)->st_changecount++; \ pg_write_barrier(); \ } while (0) #define PGSTAT_END_WRITE_ACTIVITY(beentry) \ do { \ pg_write_barrier(); \ (beentry)->st_changecount++; \ Assert(((beentry)->st_changecount & 1) == 0); \ END_CRIT_SECTION(); \ } while (0) #define pgstat_begin_read_activity(beentry, before_changecount) \ do { \ (before_changecount) = (beentry)->st_changecount; \ pg_read_barrier(); \ } while (0) #define pgstat_end_read_activity(beentry, after_changecount) \ do { \ pg_read_barrier(); \ (after_changecount) = (beentry)->st_changecount; \ } while (0) #define pgstat_read_activity_complete(before_changecount, after_changecount) \ ((before_changecount) == (after_changecount) && \ ((before_changecount) & 1) == 0) /* ---------- * LocalPgBackendStatus * * When we build the backend status array, we use LocalPgBackendStatus to be * able to add new values to the struct when needed without adding new fields * to the shared memory. It contains the backend status as a first member. * ---------- */ typedef struct LocalPgBackendStatus { /* * Local version of the backend status entry. */ PgBackendStatus backendStatus; /* * The xid of the current transaction if available, InvalidTransactionId * if not. */ TransactionId backend_xid; /* * The xmin of the current session if available, InvalidTransactionId if * not. */ TransactionId backend_xmin; } LocalPgBackendStatus; /* * Working state needed to accumulate per-function-call timing statistics. */ typedef struct PgStat_FunctionCallUsage { /* Link to function's hashtable entry (must still be there at exit!) */ /* NULL means we are not tracking the current function call */ PgStat_FunctionCounts *fs; /* Total time previously charged to function, as of function start */ instr_time save_f_total_time; /* Backend-wide total time as of function start */ instr_time save_total; /* system clock as of function start */ instr_time f_start; } PgStat_FunctionCallUsage; /* ---------- * GUC parameters * ---------- */ extern PGDLLIMPORT bool pgstat_track_activities; extern PGDLLIMPORT bool pgstat_track_counts; extern PGDLLIMPORT int pgstat_track_functions; extern PGDLLIMPORT int pgstat_track_activity_query_size; extern char *pgstat_stat_directory; extern char *pgstat_stat_tmpname; extern char *pgstat_stat_filename; /* * BgWriter statistics counters are updated directly by bgwriter and bufmgr */ extern PgStat_MsgBgWriter BgWriterStats; /* * Updated by pgstat_count_buffer_*_time macros */ extern PgStat_Counter pgStatBlockReadTime; extern PgStat_Counter pgStatBlockWriteTime; /* ---------- * Functions called from postmaster * ---------- */ extern Size BackendStatusShmemSize(void); extern void CreateSharedBackendStatus(void); extern void pgstat_init(void); extern int pgstat_start(void); extern void pgstat_reset_all(void); extern void allow_immediate_pgstat_restart(void); #ifdef EXEC_BACKEND extern void PgstatCollectorMain(int argc, char *argv[]) pg_attribute_noreturn(); #endif /* ---------- * Functions called from backends * ---------- */ extern void pgstat_ping(void); extern void pgstat_report_stat(bool force); extern void pgstat_vacuum_stat(void); extern void pgstat_drop_database(Oid databaseid); extern void pgstat_clear_snapshot(void); extern void pgstat_reset_counters(void); extern void pgstat_reset_shared_counters(const char *); extern void pgstat_reset_single_counter(Oid objectid, PgStat_Single_Reset_Type type); extern void pgstat_reset_slru_counter(const char *); extern void pgstat_report_autovac(Oid dboid); extern void pgstat_report_vacuum(Oid tableoid, bool shared, PgStat_Counter livetuples, PgStat_Counter deadtuples); extern void pgstat_report_analyze(Relation rel, PgStat_Counter livetuples, PgStat_Counter deadtuples, bool resetcounter); extern void pgstat_report_recovery_conflict(int reason); extern void pgstat_report_deadlock(void); extern void pgstat_report_checksum_failures_in_db(Oid dboid, int failurecount); extern void pgstat_report_checksum_failure(void); extern void pgstat_initialize(void); extern void pgstat_bestart(void); extern void pgstat_report_activity(BackendState state, const char *cmd_str); extern void pgstat_report_tempfile(size_t filesize); extern void pgstat_report_appname(const char *appname); extern void pgstat_report_xact_timestamp(TimestampTz tstamp); extern const char *pgstat_get_wait_event(uint32 wait_event_info); extern const char *pgstat_get_wait_event_type(uint32 wait_event_info); extern const char *pgstat_get_backend_current_activity(int pid, bool checkUser); extern const char *pgstat_get_crashed_backend_activity(int pid, char *buffer, int buflen); extern void pgstat_progress_start_command(ProgressCommandType cmdtype, Oid relid); extern void pgstat_progress_update_param(int index, int64 val); extern void pgstat_progress_update_multi_param(int nparam, const int *index, const int64 *val); extern void pgstat_progress_end_command(void); extern PgStat_TableStatus *find_tabstat_entry(Oid rel_id); extern PgStat_BackendFunctionEntry *find_funcstat_entry(Oid func_id); extern void pgstat_initstats(Relation rel); extern char *pgstat_clip_activity(const char *raw_activity); /* ---------- * pgstat_report_wait_start() - * * Called from places where server process needs to wait. This is called * to report wait event information. The wait information is stored * as 4-bytes where first byte represents the wait event class (type of * wait, for different types of wait, refer WaitClass) and the next * 3-bytes represent the actual wait event. Currently 2-bytes are used * for wait event which is sufficient for current usage, 1-byte is * reserved for future usage. * * NB: this *must* be able to survive being called before MyProc has been * initialized. * ---------- */ static inline void pgstat_report_wait_start(uint32 wait_event_info) { volatile PGPROC *proc = MyProc; if (!pgstat_track_activities || !proc) return; /* * Since this is a four-byte field which is always read and written as * four-bytes, updates are atomic. */ proc->wait_event_info = wait_event_info; } /* ---------- * pgstat_report_wait_end() - * * Called to report end of a wait. * * NB: this *must* be able to survive being called before MyProc has been * initialized. * ---------- */ static inline void pgstat_report_wait_end(void) { volatile PGPROC *proc = MyProc; if (!pgstat_track_activities || !proc) return; /* * Since this is a four-byte field which is always read and written as * four-bytes, updates are atomic. */ proc->wait_event_info = 0; } /* nontransactional event counts are simple enough to inline */ #define pgstat_count_heap_scan(rel) \ do { \ if ((rel)->pgstat_info != NULL) \ (rel)->pgstat_info->t_counts.t_numscans++; \ } while (0) #define pgstat_count_heap_getnext(rel) \ do { \ if ((rel)->pgstat_info != NULL) \ (rel)->pgstat_info->t_counts.t_tuples_returned++; \ } while (0) #define pgstat_count_heap_fetch(rel) \ do { \ if ((rel)->pgstat_info != NULL) \ (rel)->pgstat_info->t_counts.t_tuples_fetched++; \ } while (0) #define pgstat_count_index_scan(rel) \ do { \ if ((rel)->pgstat_info != NULL) \ (rel)->pgstat_info->t_counts.t_numscans++; \ } while (0) #define pgstat_count_index_tuples(rel, n) \ do { \ if ((rel)->pgstat_info != NULL) \ (rel)->pgstat_info->t_counts.t_tuples_returned += (n); \ } while (0) #define pgstat_count_buffer_read(rel) \ do { \ if ((rel)->pgstat_info != NULL) \ (rel)->pgstat_info->t_counts.t_blocks_fetched++; \ } while (0) #define pgstat_count_buffer_hit(rel) \ do { \ if ((rel)->pgstat_info != NULL) \ (rel)->pgstat_info->t_counts.t_blocks_hit++; \ } while (0) #define pgstat_count_buffer_read_time(n) \ (pgStatBlockReadTime += (n)) #define pgstat_count_buffer_write_time(n) \ (pgStatBlockWriteTime += (n)) extern void pgstat_count_heap_insert(Relation rel, PgStat_Counter n); extern void pgstat_count_heap_update(Relation rel, bool hot); extern void pgstat_count_heap_delete(Relation rel); extern void pgstat_count_truncate(Relation rel); extern void pgstat_update_heap_dead_tuples(Relation rel, int delta); struct FunctionCallInfoBaseData; extern void pgstat_init_function_usage(struct FunctionCallInfoBaseData *fcinfo, PgStat_FunctionCallUsage *fcu); extern void pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize); extern void AtEOXact_PgStat(bool isCommit, bool parallel); extern void AtEOSubXact_PgStat(bool isCommit, int nestDepth); extern void AtPrepare_PgStat(void); extern void PostPrepare_PgStat(void); extern void pgstat_twophase_postcommit(TransactionId xid, uint16 info, void *recdata, uint32 len); extern void pgstat_twophase_postabort(TransactionId xid, uint16 info, void *recdata, uint32 len); extern void pgstat_send_archiver(const char *xlog, bool failed); extern void pgstat_send_bgwriter(void); /* ---------- * Support functions for the SQL-callable functions to * generate the pgstat* views. * ---------- */ extern PgStat_StatDBEntry *pgstat_fetch_stat_dbentry(Oid dbid); extern PgStat_StatTabEntry *pgstat_fetch_stat_tabentry(Oid relid); extern PgBackendStatus *pgstat_fetch_stat_beentry(int beid); extern LocalPgBackendStatus *pgstat_fetch_stat_local_beentry(int beid); extern PgStat_StatFuncEntry *pgstat_fetch_stat_funcentry(Oid funcid); extern int pgstat_fetch_stat_numbackends(void); extern PgStat_ArchiverStats *pgstat_fetch_stat_archiver(void); extern PgStat_GlobalStats *pgstat_fetch_global(void); extern PgStat_SLRUStats *pgstat_fetch_slru(void); extern void pgstat_count_slru_page_zeroed(int slru_idx); extern void pgstat_count_slru_page_hit(int slru_idx); extern void pgstat_count_slru_page_read(int slru_idx); extern void pgstat_count_slru_page_written(int slru_idx); extern void pgstat_count_slru_page_exists(int slru_idx); extern void pgstat_count_slru_flush(int slru_idx); extern void pgstat_count_slru_truncate(int slru_idx); extern const char *pgstat_slru_name(int slru_idx); extern int pgstat_slru_index(const char *name); #endif /* PGSTAT_H */ libpg_query-13-2.1.0/src/postgres/include/pgtime.h000066400000000000000000000044701413137616400220060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pgtime.h * PostgreSQL internal timezone library * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/pgtime.h * *------------------------------------------------------------------------- */ #ifndef _PGTIME_H #define _PGTIME_H /* * The API of this library is generally similar to the corresponding * C library functions, except that we use pg_time_t which (we hope) is * 64 bits wide, and which is most definitely signed not unsigned. */ typedef int64 pg_time_t; struct pg_tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; /* origin 1, not 0! */ int tm_year; /* relative to 1900 */ int tm_wday; int tm_yday; int tm_isdst; long int tm_gmtoff; const char *tm_zone; }; typedef struct pg_tz pg_tz; typedef struct pg_tzenum pg_tzenum; /* Maximum length of a timezone name (not including trailing null) */ #define TZ_STRLEN_MAX 255 /* these functions are in localtime.c */ extern struct pg_tm *pg_localtime(const pg_time_t *timep, const pg_tz *tz); extern struct pg_tm *pg_gmtime(const pg_time_t *timep); extern int pg_next_dst_boundary(const pg_time_t *timep, long int *before_gmtoff, int *before_isdst, pg_time_t *boundary, long int *after_gmtoff, int *after_isdst, const pg_tz *tz); extern bool pg_interpret_timezone_abbrev(const char *abbrev, const pg_time_t *timep, long int *gmtoff, int *isdst, const pg_tz *tz); extern bool pg_get_timezone_offset(const pg_tz *tz, long int *gmtoff); extern const char *pg_get_timezone_name(pg_tz *tz); extern bool pg_tz_acceptable(pg_tz *tz); /* these functions are in strftime.c */ extern size_t pg_strftime(char *s, size_t max, const char *format, const struct pg_tm *tm); /* these functions and variables are in pgtz.c */ extern PGDLLIMPORT pg_tz *session_timezone; extern pg_tz *log_timezone; extern void pg_timezone_initialize(void); extern pg_tz *pg_tzset(const char *tzname); extern pg_tz *pg_tzset_offset(long gmtoffset); extern pg_tzenum *pg_tzenumerate_start(void); extern pg_tz *pg_tzenumerate_next(pg_tzenum *dir); extern void pg_tzenumerate_end(pg_tzenum *dir); #endif /* _PGTIME_H */ libpg_query-13-2.1.0/src/postgres/include/pl_gram.h000066400000000000000000000215521413137616400221420ustar00rootroot00000000000000/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { IDENT = 258, UIDENT = 259, FCONST = 260, SCONST = 261, USCONST = 262, BCONST = 263, XCONST = 264, Op = 265, ICONST = 266, PARAM = 267, TYPECAST = 268, DOT_DOT = 269, COLON_EQUALS = 270, EQUALS_GREATER = 271, LESS_EQUALS = 272, GREATER_EQUALS = 273, NOT_EQUALS = 274, SQL_COMMENT = 275, C_COMMENT = 276, T_WORD = 277, T_CWORD = 278, T_DATUM = 279, LESS_LESS = 280, GREATER_GREATER = 281, K_ABSOLUTE = 282, K_ALIAS = 283, K_ALL = 284, K_AND = 285, K_ARRAY = 286, K_ASSERT = 287, K_BACKWARD = 288, K_BEGIN = 289, K_BY = 290, K_CALL = 291, K_CASE = 292, K_CHAIN = 293, K_CLOSE = 294, K_COLLATE = 295, K_COLUMN = 296, K_COLUMN_NAME = 297, K_COMMIT = 298, K_CONSTANT = 299, K_CONSTRAINT = 300, K_CONSTRAINT_NAME = 301, K_CONTINUE = 302, K_CURRENT = 303, K_CURSOR = 304, K_DATATYPE = 305, K_DEBUG = 306, K_DECLARE = 307, K_DEFAULT = 308, K_DETAIL = 309, K_DIAGNOSTICS = 310, K_DO = 311, K_DUMP = 312, K_ELSE = 313, K_ELSIF = 314, K_END = 315, K_ERRCODE = 316, K_ERROR = 317, K_EXCEPTION = 318, K_EXECUTE = 319, K_EXIT = 320, K_FETCH = 321, K_FIRST = 322, K_FOR = 323, K_FOREACH = 324, K_FORWARD = 325, K_FROM = 326, K_GET = 327, K_HINT = 328, K_IF = 329, K_IMPORT = 330, K_IN = 331, K_INFO = 332, K_INSERT = 333, K_INTO = 334, K_IS = 335, K_LAST = 336, K_LOG = 337, K_LOOP = 338, K_MESSAGE = 339, K_MESSAGE_TEXT = 340, K_MOVE = 341, K_NEXT = 342, K_NO = 343, K_NOT = 344, K_NOTICE = 345, K_NULL = 346, K_OPEN = 347, K_OPTION = 348, K_OR = 349, K_PERFORM = 350, K_PG_CONTEXT = 351, K_PG_DATATYPE_NAME = 352, K_PG_EXCEPTION_CONTEXT = 353, K_PG_EXCEPTION_DETAIL = 354, K_PG_EXCEPTION_HINT = 355, K_PRINT_STRICT_PARAMS = 356, K_PRIOR = 357, K_QUERY = 358, K_RAISE = 359, K_RELATIVE = 360, K_RESET = 361, K_RETURN = 362, K_RETURNED_SQLSTATE = 363, K_REVERSE = 364, K_ROLLBACK = 365, K_ROW_COUNT = 366, K_ROWTYPE = 367, K_SCHEMA = 368, K_SCHEMA_NAME = 369, K_SCROLL = 370, K_SET = 371, K_SLICE = 372, K_SQLSTATE = 373, K_STACKED = 374, K_STRICT = 375, K_TABLE = 376, K_TABLE_NAME = 377, K_THEN = 378, K_TO = 379, K_TYPE = 380, K_USE_COLUMN = 381, K_USE_VARIABLE = 382, K_USING = 383, K_VARIABLE_CONFLICT = 384, K_WARNING = 385, K_WHEN = 386, K_WHILE = 387 }; #endif /* Tokens. */ #define IDENT 258 #define UIDENT 259 #define FCONST 260 #define SCONST 261 #define USCONST 262 #define BCONST 263 #define XCONST 264 #define Op 265 #define ICONST 266 #define PARAM 267 #define TYPECAST 268 #define DOT_DOT 269 #define COLON_EQUALS 270 #define EQUALS_GREATER 271 #define LESS_EQUALS 272 #define GREATER_EQUALS 273 #define NOT_EQUALS 274 #define SQL_COMMENT 275 #define C_COMMENT 276 #define T_WORD 277 #define T_CWORD 278 #define T_DATUM 279 #define LESS_LESS 280 #define GREATER_GREATER 281 #define K_ABSOLUTE 282 #define K_ALIAS 283 #define K_ALL 284 #define K_AND 285 #define K_ARRAY 286 #define K_ASSERT 287 #define K_BACKWARD 288 #define K_BEGIN 289 #define K_BY 290 #define K_CALL 291 #define K_CASE 292 #define K_CHAIN 293 #define K_CLOSE 294 #define K_COLLATE 295 #define K_COLUMN 296 #define K_COLUMN_NAME 297 #define K_COMMIT 298 #define K_CONSTANT 299 #define K_CONSTRAINT 300 #define K_CONSTRAINT_NAME 301 #define K_CONTINUE 302 #define K_CURRENT 303 #define K_CURSOR 304 #define K_DATATYPE 305 #define K_DEBUG 306 #define K_DECLARE 307 #define K_DEFAULT 308 #define K_DETAIL 309 #define K_DIAGNOSTICS 310 #define K_DO 311 #define K_DUMP 312 #define K_ELSE 313 #define K_ELSIF 314 #define K_END 315 #define K_ERRCODE 316 #define K_ERROR 317 #define K_EXCEPTION 318 #define K_EXECUTE 319 #define K_EXIT 320 #define K_FETCH 321 #define K_FIRST 322 #define K_FOR 323 #define K_FOREACH 324 #define K_FORWARD 325 #define K_FROM 326 #define K_GET 327 #define K_HINT 328 #define K_IF 329 #define K_IMPORT 330 #define K_IN 331 #define K_INFO 332 #define K_INSERT 333 #define K_INTO 334 #define K_IS 335 #define K_LAST 336 #define K_LOG 337 #define K_LOOP 338 #define K_MESSAGE 339 #define K_MESSAGE_TEXT 340 #define K_MOVE 341 #define K_NEXT 342 #define K_NO 343 #define K_NOT 344 #define K_NOTICE 345 #define K_NULL 346 #define K_OPEN 347 #define K_OPTION 348 #define K_OR 349 #define K_PERFORM 350 #define K_PG_CONTEXT 351 #define K_PG_DATATYPE_NAME 352 #define K_PG_EXCEPTION_CONTEXT 353 #define K_PG_EXCEPTION_DETAIL 354 #define K_PG_EXCEPTION_HINT 355 #define K_PRINT_STRICT_PARAMS 356 #define K_PRIOR 357 #define K_QUERY 358 #define K_RAISE 359 #define K_RELATIVE 360 #define K_RESET 361 #define K_RETURN 362 #define K_RETURNED_SQLSTATE 363 #define K_REVERSE 364 #define K_ROLLBACK 365 #define K_ROW_COUNT 366 #define K_ROWTYPE 367 #define K_SCHEMA 368 #define K_SCHEMA_NAME 369 #define K_SCROLL 370 #define K_SET 371 #define K_SLICE 372 #define K_SQLSTATE 373 #define K_STACKED 374 #define K_STRICT 375 #define K_TABLE 376 #define K_TABLE_NAME 377 #define K_THEN 378 #define K_TO 379 #define K_TYPE 380 #define K_USE_COLUMN 381 #define K_USE_VARIABLE 382 #define K_USING 383 #define K_VARIABLE_CONFLICT 384 #define K_WARNING 385 #define K_WHEN 386 #define K_WHILE 387 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 120 "pl_gram.y" { core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; char *str; const char *keyword; PLword word; PLcword cword; PLwdatum wdatum; bool boolean; Oid oid; struct { char *name; int lineno; } varname; struct { char *name; int lineno; PLpgSQL_datum *scalar; PLpgSQL_datum *row; } forvariable; struct { char *label; int n_initvars; int *initvarnos; } declhdr; struct { List *stmts; char *end_label; int end_label_location; } loop_body; List *list; PLpgSQL_type *dtype; PLpgSQL_datum *datum; PLpgSQL_var *var; PLpgSQL_expr *expr; PLpgSQL_stmt *stmt; PLpgSQL_condition *condition; PLpgSQL_exception *exception; PLpgSQL_exception_block *exception_block; PLpgSQL_nsitem *nsitem; PLpgSQL_diag_item *diagitem; PLpgSQL_stmt_fetch *fetch; PLpgSQL_case_when *casewhen; } /* Line 1529 of yacc.c. */ #line 364 "pl_gram.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif extern __thread YYSTYPE plpgsql_yylval; #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; } YYLTYPE; # define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif extern __thread YYLTYPE plpgsql_yylloc; libpg_query-13-2.1.0/src/postgres/include/pl_reserved_kwlist.h000066400000000000000000000030701413137616400244230ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pl_reserved_kwlist.h * * The keyword lists are kept in their own source files for use by * automatic tools. The exact representation of a keyword is determined * by the PG_KEYWORD macro, which is not defined in this file; it can * be defined by the caller for special purposes. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/pl/plpgsql/src/pl_reserved_kwlist.h * *------------------------------------------------------------------------- */ /* There is deliberately not an #ifndef PL_RESERVED_KWLIST_H here. */ /* * List of (keyword-name, keyword-token-value) pairs. * * Be careful not to put the same word into pl_unreserved_kwlist.h. * * Note: gen_keywordlist.pl requires the entries to appear in ASCII order. */ /* name, value */ PG_KEYWORD("all", K_ALL) PG_KEYWORD("begin", K_BEGIN) PG_KEYWORD("by", K_BY) PG_KEYWORD("case", K_CASE) PG_KEYWORD("declare", K_DECLARE) PG_KEYWORD("else", K_ELSE) PG_KEYWORD("end", K_END) PG_KEYWORD("execute", K_EXECUTE) PG_KEYWORD("for", K_FOR) PG_KEYWORD("foreach", K_FOREACH) PG_KEYWORD("from", K_FROM) PG_KEYWORD("if", K_IF) PG_KEYWORD("in", K_IN) PG_KEYWORD("into", K_INTO) PG_KEYWORD("loop", K_LOOP) PG_KEYWORD("not", K_NOT) PG_KEYWORD("null", K_NULL) PG_KEYWORD("or", K_OR) PG_KEYWORD("strict", K_STRICT) PG_KEYWORD("then", K_THEN) PG_KEYWORD("to", K_TO) PG_KEYWORD("using", K_USING) PG_KEYWORD("when", K_WHEN) PG_KEYWORD("while", K_WHILE) libpg_query-13-2.1.0/src/postgres/include/pl_reserved_kwlist_d.h000066400000000000000000000041361413137616400247320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pl_reserved_kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/tools/gen_keywordlist.pl * *------------------------------------------------------------------------- */ #ifndef PL_RESERVED_KWLIST_D_H #define PL_RESERVED_KWLIST_D_H #include "common/kwlookup.h" static const char ReservedPLKeywords_kw_string[] = "all\0" "begin\0" "by\0" "case\0" "declare\0" "else\0" "end\0" "execute\0" "for\0" "foreach\0" "from\0" "if\0" "in\0" "into\0" "loop\0" "not\0" "null\0" "or\0" "strict\0" "then\0" "to\0" "using\0" "when\0" "while"; static const uint16 ReservedPLKeywords_kw_offsets[] = { 0, 4, 10, 13, 18, 26, 31, 35, 43, 47, 55, 60, 63, 66, 71, 76, 80, 85, 88, 95, 100, 103, 109, 114, }; #define RESERVEDPLKEYWORDS_NUM_KEYWORDS 24 static int ReservedPLKeywords_hash_func(const void *key, size_t keylen) { static const int8 h[49] = { -2, 127, 7, 127, 0, 127, 127, 127, 18, 5, 127, 27, 127, 0, 127, 127, 0, 39, 32, 22, 10, 127, 19, -26, 127, -11, 0, 12, 127, 127, -1, 28, 20, 0, 23, 127, 0, 14, -8, 127, 127, 127, 13, 5, 127, -23, 1, 0, 127, }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 1; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 31 + c; b = b * 127 + c; } return h[a % 49] + h[b % 49]; } static const ScanKeywordList ReservedPLKeywords = { ReservedPLKeywords_kw_string, ReservedPLKeywords_kw_offsets, ReservedPLKeywords_hash_func, RESERVEDPLKEYWORDS_NUM_KEYWORDS, 7 }; #endif /* PL_RESERVED_KWLIST_D_H */ libpg_query-13-2.1.0/src/postgres/include/pl_unreserved_kwlist.h000066400000000000000000000073611413137616400247750ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pl_unreserved_kwlist.h * * The keyword lists are kept in their own source files for use by * automatic tools. The exact representation of a keyword is determined * by the PG_KEYWORD macro, which is not defined in this file; it can * be defined by the caller for special purposes. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/pl/plpgsql/src/pl_unreserved_kwlist.h * *------------------------------------------------------------------------- */ /* There is deliberately not an #ifndef PL_UNRESERVED_KWLIST_H here. */ /* * List of (keyword-name, keyword-token-value) pairs. * * Be careful not to put the same word into pl_reserved_kwlist.h. Also be * sure that pl_gram.y's unreserved_keyword production agrees with this list. * * Note: gen_keywordlist.pl requires the entries to appear in ASCII order. */ /* name, value */ PG_KEYWORD("absolute", K_ABSOLUTE) PG_KEYWORD("alias", K_ALIAS) PG_KEYWORD("and", K_AND) PG_KEYWORD("array", K_ARRAY) PG_KEYWORD("assert", K_ASSERT) PG_KEYWORD("backward", K_BACKWARD) PG_KEYWORD("call", K_CALL) PG_KEYWORD("chain", K_CHAIN) PG_KEYWORD("close", K_CLOSE) PG_KEYWORD("collate", K_COLLATE) PG_KEYWORD("column", K_COLUMN) PG_KEYWORD("column_name", K_COLUMN_NAME) PG_KEYWORD("commit", K_COMMIT) PG_KEYWORD("constant", K_CONSTANT) PG_KEYWORD("constraint", K_CONSTRAINT) PG_KEYWORD("constraint_name", K_CONSTRAINT_NAME) PG_KEYWORD("continue", K_CONTINUE) PG_KEYWORD("current", K_CURRENT) PG_KEYWORD("cursor", K_CURSOR) PG_KEYWORD("datatype", K_DATATYPE) PG_KEYWORD("debug", K_DEBUG) PG_KEYWORD("default", K_DEFAULT) PG_KEYWORD("detail", K_DETAIL) PG_KEYWORD("diagnostics", K_DIAGNOSTICS) PG_KEYWORD("do", K_DO) PG_KEYWORD("dump", K_DUMP) PG_KEYWORD("elseif", K_ELSIF) PG_KEYWORD("elsif", K_ELSIF) PG_KEYWORD("errcode", K_ERRCODE) PG_KEYWORD("error", K_ERROR) PG_KEYWORD("exception", K_EXCEPTION) PG_KEYWORD("exit", K_EXIT) PG_KEYWORD("fetch", K_FETCH) PG_KEYWORD("first", K_FIRST) PG_KEYWORD("forward", K_FORWARD) PG_KEYWORD("get", K_GET) PG_KEYWORD("hint", K_HINT) PG_KEYWORD("import", K_IMPORT) PG_KEYWORD("info", K_INFO) PG_KEYWORD("insert", K_INSERT) PG_KEYWORD("is", K_IS) PG_KEYWORD("last", K_LAST) PG_KEYWORD("log", K_LOG) PG_KEYWORD("message", K_MESSAGE) PG_KEYWORD("message_text", K_MESSAGE_TEXT) PG_KEYWORD("move", K_MOVE) PG_KEYWORD("next", K_NEXT) PG_KEYWORD("no", K_NO) PG_KEYWORD("notice", K_NOTICE) PG_KEYWORD("open", K_OPEN) PG_KEYWORD("option", K_OPTION) PG_KEYWORD("perform", K_PERFORM) PG_KEYWORD("pg_context", K_PG_CONTEXT) PG_KEYWORD("pg_datatype_name", K_PG_DATATYPE_NAME) PG_KEYWORD("pg_exception_context", K_PG_EXCEPTION_CONTEXT) PG_KEYWORD("pg_exception_detail", K_PG_EXCEPTION_DETAIL) PG_KEYWORD("pg_exception_hint", K_PG_EXCEPTION_HINT) PG_KEYWORD("print_strict_params", K_PRINT_STRICT_PARAMS) PG_KEYWORD("prior", K_PRIOR) PG_KEYWORD("query", K_QUERY) PG_KEYWORD("raise", K_RAISE) PG_KEYWORD("relative", K_RELATIVE) PG_KEYWORD("reset", K_RESET) PG_KEYWORD("return", K_RETURN) PG_KEYWORD("returned_sqlstate", K_RETURNED_SQLSTATE) PG_KEYWORD("reverse", K_REVERSE) PG_KEYWORD("rollback", K_ROLLBACK) PG_KEYWORD("row_count", K_ROW_COUNT) PG_KEYWORD("rowtype", K_ROWTYPE) PG_KEYWORD("schema", K_SCHEMA) PG_KEYWORD("schema_name", K_SCHEMA_NAME) PG_KEYWORD("scroll", K_SCROLL) PG_KEYWORD("set", K_SET) PG_KEYWORD("slice", K_SLICE) PG_KEYWORD("sqlstate", K_SQLSTATE) PG_KEYWORD("stacked", K_STACKED) PG_KEYWORD("table", K_TABLE) PG_KEYWORD("table_name", K_TABLE_NAME) PG_KEYWORD("type", K_TYPE) PG_KEYWORD("use_column", K_USE_COLUMN) PG_KEYWORD("use_variable", K_USE_VARIABLE) PG_KEYWORD("variable_conflict", K_VARIABLE_CONFLICT) PG_KEYWORD("warning", K_WARNING) libpg_query-13-2.1.0/src/postgres/include/pl_unreserved_kwlist_d.h000066400000000000000000000104221413137616400252700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pl_unreserved_kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/tools/gen_keywordlist.pl * *------------------------------------------------------------------------- */ #ifndef PL_UNRESERVED_KWLIST_D_H #define PL_UNRESERVED_KWLIST_D_H #include "common/kwlookup.h" static const char UnreservedPLKeywords_kw_string[] = "absolute\0" "alias\0" "and\0" "array\0" "assert\0" "backward\0" "call\0" "chain\0" "close\0" "collate\0" "column\0" "column_name\0" "commit\0" "constant\0" "constraint\0" "constraint_name\0" "continue\0" "current\0" "cursor\0" "datatype\0" "debug\0" "default\0" "detail\0" "diagnostics\0" "do\0" "dump\0" "elseif\0" "elsif\0" "errcode\0" "error\0" "exception\0" "exit\0" "fetch\0" "first\0" "forward\0" "get\0" "hint\0" "import\0" "info\0" "insert\0" "is\0" "last\0" "log\0" "message\0" "message_text\0" "move\0" "next\0" "no\0" "notice\0" "open\0" "option\0" "perform\0" "pg_context\0" "pg_datatype_name\0" "pg_exception_context\0" "pg_exception_detail\0" "pg_exception_hint\0" "print_strict_params\0" "prior\0" "query\0" "raise\0" "relative\0" "reset\0" "return\0" "returned_sqlstate\0" "reverse\0" "rollback\0" "row_count\0" "rowtype\0" "schema\0" "schema_name\0" "scroll\0" "set\0" "slice\0" "sqlstate\0" "stacked\0" "table\0" "table_name\0" "type\0" "use_column\0" "use_variable\0" "variable_conflict\0" "warning"; static const uint16 UnreservedPLKeywords_kw_offsets[] = { 0, 9, 15, 19, 25, 32, 41, 46, 52, 58, 66, 73, 85, 92, 101, 112, 128, 137, 145, 152, 161, 167, 175, 182, 194, 197, 202, 209, 215, 223, 229, 239, 244, 250, 256, 264, 268, 273, 280, 285, 292, 295, 300, 304, 312, 325, 330, 335, 338, 345, 350, 357, 365, 376, 393, 414, 434, 452, 472, 478, 484, 490, 499, 505, 512, 530, 538, 547, 557, 565, 572, 584, 591, 595, 601, 610, 618, 624, 635, 640, 651, 664, 682, }; #define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 83 static int UnreservedPLKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[167] = { 10, 32767, 32767, 57, 32767, 62, 21, 32767, 54, 18, 32767, 58, 59, -54, 47, 0, -22, -64, 32767, -22, 33, 44, -5, 32767, 32767, 43, 57, 102, 32767, -65, 7, 32767, 13, 32767, -28, 14, 32767, 32767, 82, 32767, 0, 0, 32767, 8, -43, 0, 19, 8, 75, -58, 32767, 32767, 0, 22, 29, 32767, -50, 6, 32767, 0, 30, 32767, 32767, 29, 0, 104, 32767, 32767, 26, 0, 32767, 32767, -9, 2, 32767, 50, 39, 38, 39, 80, 32767, 32767, 32767, 32767, -67, 89, 32767, -40, 64, 32767, 32767, 26, 10, 27, 32767, 19, 51, -13, 26, 32767, 32767, 32767, 84, 23, 0, 66, 12, -5, 32767, 32767, 0, 50, 141, 72, 45, 32767, 32767, 0, -22, 0, 32767, 32767, -34, 0, 19, -5, 32767, 32767, 32767, 0, 37, 13, 32767, 32767, 32767, 32767, -68, -4, 32767, 32767, 78, 32767, 32767, 0, 85, 32767, 32767, 32767, -93, 32767, 0, 0, 32767, 74, 5, 32767, 32767, 71, 0, 32767, 32767, 0, 32767, 32767, 32767, 46, 70, }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 1; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 31 + c; b = b * 127 + c; } return h[a % 167] + h[b % 167]; } static const ScanKeywordList UnreservedPLKeywords = { UnreservedPLKeywords_kw_string, UnreservedPLKeywords_kw_offsets, UnreservedPLKeywords_hash_func, UNRESERVEDPLKEYWORDS_NUM_KEYWORDS, 20 }; #endif /* PL_UNRESERVED_KWLIST_D_H */ libpg_query-13-2.1.0/src/postgres/include/plerrcodes.h000066400000000000000000000411521413137616400226610ustar00rootroot00000000000000/* autogenerated from src/backend/utils/errcodes.txt, do not edit */ /* there is deliberately not an #ifndef PLERRCODES_H here */ { "sql_statement_not_yet_complete", ERRCODE_SQL_STATEMENT_NOT_YET_COMPLETE }, { "connection_exception", ERRCODE_CONNECTION_EXCEPTION }, { "connection_does_not_exist", ERRCODE_CONNECTION_DOES_NOT_EXIST }, { "connection_failure", ERRCODE_CONNECTION_FAILURE }, { "sqlclient_unable_to_establish_sqlconnection", ERRCODE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION }, { "sqlserver_rejected_establishment_of_sqlconnection", ERRCODE_SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION }, { "transaction_resolution_unknown", ERRCODE_TRANSACTION_RESOLUTION_UNKNOWN }, { "protocol_violation", ERRCODE_PROTOCOL_VIOLATION }, { "triggered_action_exception", ERRCODE_TRIGGERED_ACTION_EXCEPTION }, { "feature_not_supported", ERRCODE_FEATURE_NOT_SUPPORTED }, { "invalid_transaction_initiation", ERRCODE_INVALID_TRANSACTION_INITIATION }, { "locator_exception", ERRCODE_LOCATOR_EXCEPTION }, { "invalid_locator_specification", ERRCODE_L_E_INVALID_SPECIFICATION }, { "invalid_grantor", ERRCODE_INVALID_GRANTOR }, { "invalid_grant_operation", ERRCODE_INVALID_GRANT_OPERATION }, { "invalid_role_specification", ERRCODE_INVALID_ROLE_SPECIFICATION }, { "diagnostics_exception", ERRCODE_DIAGNOSTICS_EXCEPTION }, { "stacked_diagnostics_accessed_without_active_handler", ERRCODE_STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER }, { "case_not_found", ERRCODE_CASE_NOT_FOUND }, { "cardinality_violation", ERRCODE_CARDINALITY_VIOLATION }, { "data_exception", ERRCODE_DATA_EXCEPTION }, { "array_subscript_error", ERRCODE_ARRAY_SUBSCRIPT_ERROR }, { "character_not_in_repertoire", ERRCODE_CHARACTER_NOT_IN_REPERTOIRE }, { "datetime_field_overflow", ERRCODE_DATETIME_FIELD_OVERFLOW }, { "division_by_zero", ERRCODE_DIVISION_BY_ZERO }, { "error_in_assignment", ERRCODE_ERROR_IN_ASSIGNMENT }, { "escape_character_conflict", ERRCODE_ESCAPE_CHARACTER_CONFLICT }, { "indicator_overflow", ERRCODE_INDICATOR_OVERFLOW }, { "interval_field_overflow", ERRCODE_INTERVAL_FIELD_OVERFLOW }, { "invalid_argument_for_logarithm", ERRCODE_INVALID_ARGUMENT_FOR_LOG }, { "invalid_argument_for_ntile_function", ERRCODE_INVALID_ARGUMENT_FOR_NTILE }, { "invalid_argument_for_nth_value_function", ERRCODE_INVALID_ARGUMENT_FOR_NTH_VALUE }, { "invalid_argument_for_power_function", ERRCODE_INVALID_ARGUMENT_FOR_POWER_FUNCTION }, { "invalid_argument_for_width_bucket_function", ERRCODE_INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION }, { "invalid_character_value_for_cast", ERRCODE_INVALID_CHARACTER_VALUE_FOR_CAST }, { "invalid_datetime_format", ERRCODE_INVALID_DATETIME_FORMAT }, { "invalid_escape_character", ERRCODE_INVALID_ESCAPE_CHARACTER }, { "invalid_escape_octet", ERRCODE_INVALID_ESCAPE_OCTET }, { "invalid_escape_sequence", ERRCODE_INVALID_ESCAPE_SEQUENCE }, { "nonstandard_use_of_escape_character", ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER }, { "invalid_indicator_parameter_value", ERRCODE_INVALID_INDICATOR_PARAMETER_VALUE }, { "invalid_parameter_value", ERRCODE_INVALID_PARAMETER_VALUE }, { "invalid_preceding_or_following_size", ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE }, { "invalid_regular_expression", ERRCODE_INVALID_REGULAR_EXPRESSION }, { "invalid_row_count_in_limit_clause", ERRCODE_INVALID_ROW_COUNT_IN_LIMIT_CLAUSE }, { "invalid_row_count_in_result_offset_clause", ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE }, { "invalid_tablesample_argument", ERRCODE_INVALID_TABLESAMPLE_ARGUMENT }, { "invalid_tablesample_repeat", ERRCODE_INVALID_TABLESAMPLE_REPEAT }, { "invalid_time_zone_displacement_value", ERRCODE_INVALID_TIME_ZONE_DISPLACEMENT_VALUE }, { "invalid_use_of_escape_character", ERRCODE_INVALID_USE_OF_ESCAPE_CHARACTER }, { "most_specific_type_mismatch", ERRCODE_MOST_SPECIFIC_TYPE_MISMATCH }, { "null_value_not_allowed", ERRCODE_NULL_VALUE_NOT_ALLOWED }, { "null_value_no_indicator_parameter", ERRCODE_NULL_VALUE_NO_INDICATOR_PARAMETER }, { "numeric_value_out_of_range", ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE }, { "sequence_generator_limit_exceeded", ERRCODE_SEQUENCE_GENERATOR_LIMIT_EXCEEDED }, { "string_data_length_mismatch", ERRCODE_STRING_DATA_LENGTH_MISMATCH }, { "string_data_right_truncation", ERRCODE_STRING_DATA_RIGHT_TRUNCATION }, { "substring_error", ERRCODE_SUBSTRING_ERROR }, { "trim_error", ERRCODE_TRIM_ERROR }, { "unterminated_c_string", ERRCODE_UNTERMINATED_C_STRING }, { "zero_length_character_string", ERRCODE_ZERO_LENGTH_CHARACTER_STRING }, { "floating_point_exception", ERRCODE_FLOATING_POINT_EXCEPTION }, { "invalid_text_representation", ERRCODE_INVALID_TEXT_REPRESENTATION }, { "invalid_binary_representation", ERRCODE_INVALID_BINARY_REPRESENTATION }, { "bad_copy_file_format", ERRCODE_BAD_COPY_FILE_FORMAT }, { "untranslatable_character", ERRCODE_UNTRANSLATABLE_CHARACTER }, { "not_an_xml_document", ERRCODE_NOT_AN_XML_DOCUMENT }, { "invalid_xml_document", ERRCODE_INVALID_XML_DOCUMENT }, { "invalid_xml_content", ERRCODE_INVALID_XML_CONTENT }, { "invalid_xml_comment", ERRCODE_INVALID_XML_COMMENT }, { "invalid_xml_processing_instruction", ERRCODE_INVALID_XML_PROCESSING_INSTRUCTION }, { "duplicate_json_object_key_value", ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE }, { "invalid_argument_for_sql_json_datetime_function", ERRCODE_INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION }, { "invalid_json_text", ERRCODE_INVALID_JSON_TEXT }, { "invalid_sql_json_subscript", ERRCODE_INVALID_SQL_JSON_SUBSCRIPT }, { "more_than_one_sql_json_item", ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM }, { "no_sql_json_item", ERRCODE_NO_SQL_JSON_ITEM }, { "non_numeric_sql_json_item", ERRCODE_NON_NUMERIC_SQL_JSON_ITEM }, { "non_unique_keys_in_a_json_object", ERRCODE_NON_UNIQUE_KEYS_IN_A_JSON_OBJECT }, { "singleton_sql_json_item_required", ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED }, { "sql_json_array_not_found", ERRCODE_SQL_JSON_ARRAY_NOT_FOUND }, { "sql_json_member_not_found", ERRCODE_SQL_JSON_MEMBER_NOT_FOUND }, { "sql_json_number_not_found", ERRCODE_SQL_JSON_NUMBER_NOT_FOUND }, { "sql_json_object_not_found", ERRCODE_SQL_JSON_OBJECT_NOT_FOUND }, { "too_many_json_array_elements", ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS }, { "too_many_json_object_members", ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS }, { "sql_json_scalar_required", ERRCODE_SQL_JSON_SCALAR_REQUIRED }, { "integrity_constraint_violation", ERRCODE_INTEGRITY_CONSTRAINT_VIOLATION }, { "restrict_violation", ERRCODE_RESTRICT_VIOLATION }, { "not_null_violation", ERRCODE_NOT_NULL_VIOLATION }, { "foreign_key_violation", ERRCODE_FOREIGN_KEY_VIOLATION }, { "unique_violation", ERRCODE_UNIQUE_VIOLATION }, { "check_violation", ERRCODE_CHECK_VIOLATION }, { "exclusion_violation", ERRCODE_EXCLUSION_VIOLATION }, { "invalid_cursor_state", ERRCODE_INVALID_CURSOR_STATE }, { "invalid_transaction_state", ERRCODE_INVALID_TRANSACTION_STATE }, { "active_sql_transaction", ERRCODE_ACTIVE_SQL_TRANSACTION }, { "branch_transaction_already_active", ERRCODE_BRANCH_TRANSACTION_ALREADY_ACTIVE }, { "held_cursor_requires_same_isolation_level", ERRCODE_HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL }, { "inappropriate_access_mode_for_branch_transaction", ERRCODE_INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION }, { "inappropriate_isolation_level_for_branch_transaction", ERRCODE_INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION }, { "no_active_sql_transaction_for_branch_transaction", ERRCODE_NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION }, { "read_only_sql_transaction", ERRCODE_READ_ONLY_SQL_TRANSACTION }, { "schema_and_data_statement_mixing_not_supported", ERRCODE_SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED }, { "no_active_sql_transaction", ERRCODE_NO_ACTIVE_SQL_TRANSACTION }, { "in_failed_sql_transaction", ERRCODE_IN_FAILED_SQL_TRANSACTION }, { "idle_in_transaction_session_timeout", ERRCODE_IDLE_IN_TRANSACTION_SESSION_TIMEOUT }, { "invalid_sql_statement_name", ERRCODE_INVALID_SQL_STATEMENT_NAME }, { "triggered_data_change_violation", ERRCODE_TRIGGERED_DATA_CHANGE_VIOLATION }, { "invalid_authorization_specification", ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION }, { "invalid_password", ERRCODE_INVALID_PASSWORD }, { "dependent_privilege_descriptors_still_exist", ERRCODE_DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST }, { "dependent_objects_still_exist", ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST }, { "invalid_transaction_termination", ERRCODE_INVALID_TRANSACTION_TERMINATION }, { "sql_routine_exception", ERRCODE_SQL_ROUTINE_EXCEPTION }, { "function_executed_no_return_statement", ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT }, { "modifying_sql_data_not_permitted", ERRCODE_S_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED }, { "prohibited_sql_statement_attempted", ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED }, { "reading_sql_data_not_permitted", ERRCODE_S_R_E_READING_SQL_DATA_NOT_PERMITTED }, { "invalid_cursor_name", ERRCODE_INVALID_CURSOR_NAME }, { "external_routine_exception", ERRCODE_EXTERNAL_ROUTINE_EXCEPTION }, { "containing_sql_not_permitted", ERRCODE_E_R_E_CONTAINING_SQL_NOT_PERMITTED }, { "modifying_sql_data_not_permitted", ERRCODE_E_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED }, { "prohibited_sql_statement_attempted", ERRCODE_E_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED }, { "reading_sql_data_not_permitted", ERRCODE_E_R_E_READING_SQL_DATA_NOT_PERMITTED }, { "external_routine_invocation_exception", ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION }, { "invalid_sqlstate_returned", ERRCODE_E_R_I_E_INVALID_SQLSTATE_RETURNED }, { "null_value_not_allowed", ERRCODE_E_R_I_E_NULL_VALUE_NOT_ALLOWED }, { "trigger_protocol_violated", ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED }, { "srf_protocol_violated", ERRCODE_E_R_I_E_SRF_PROTOCOL_VIOLATED }, { "event_trigger_protocol_violated", ERRCODE_E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED }, { "savepoint_exception", ERRCODE_SAVEPOINT_EXCEPTION }, { "invalid_savepoint_specification", ERRCODE_S_E_INVALID_SPECIFICATION }, { "invalid_catalog_name", ERRCODE_INVALID_CATALOG_NAME }, { "invalid_schema_name", ERRCODE_INVALID_SCHEMA_NAME }, { "transaction_rollback", ERRCODE_TRANSACTION_ROLLBACK }, { "transaction_integrity_constraint_violation", ERRCODE_T_R_INTEGRITY_CONSTRAINT_VIOLATION }, { "serialization_failure", ERRCODE_T_R_SERIALIZATION_FAILURE }, { "statement_completion_unknown", ERRCODE_T_R_STATEMENT_COMPLETION_UNKNOWN }, { "deadlock_detected", ERRCODE_T_R_DEADLOCK_DETECTED }, { "syntax_error_or_access_rule_violation", ERRCODE_SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION }, { "syntax_error", ERRCODE_SYNTAX_ERROR }, { "insufficient_privilege", ERRCODE_INSUFFICIENT_PRIVILEGE }, { "cannot_coerce", ERRCODE_CANNOT_COERCE }, { "grouping_error", ERRCODE_GROUPING_ERROR }, { "windowing_error", ERRCODE_WINDOWING_ERROR }, { "invalid_recursion", ERRCODE_INVALID_RECURSION }, { "invalid_foreign_key", ERRCODE_INVALID_FOREIGN_KEY }, { "invalid_name", ERRCODE_INVALID_NAME }, { "name_too_long", ERRCODE_NAME_TOO_LONG }, { "reserved_name", ERRCODE_RESERVED_NAME }, { "datatype_mismatch", ERRCODE_DATATYPE_MISMATCH }, { "indeterminate_datatype", ERRCODE_INDETERMINATE_DATATYPE }, { "collation_mismatch", ERRCODE_COLLATION_MISMATCH }, { "indeterminate_collation", ERRCODE_INDETERMINATE_COLLATION }, { "wrong_object_type", ERRCODE_WRONG_OBJECT_TYPE }, { "generated_always", ERRCODE_GENERATED_ALWAYS }, { "undefined_column", ERRCODE_UNDEFINED_COLUMN }, { "undefined_function", ERRCODE_UNDEFINED_FUNCTION }, { "undefined_table", ERRCODE_UNDEFINED_TABLE }, { "undefined_parameter", ERRCODE_UNDEFINED_PARAMETER }, { "undefined_object", ERRCODE_UNDEFINED_OBJECT }, { "duplicate_column", ERRCODE_DUPLICATE_COLUMN }, { "duplicate_cursor", ERRCODE_DUPLICATE_CURSOR }, { "duplicate_database", ERRCODE_DUPLICATE_DATABASE }, { "duplicate_function", ERRCODE_DUPLICATE_FUNCTION }, { "duplicate_prepared_statement", ERRCODE_DUPLICATE_PSTATEMENT }, { "duplicate_schema", ERRCODE_DUPLICATE_SCHEMA }, { "duplicate_table", ERRCODE_DUPLICATE_TABLE }, { "duplicate_alias", ERRCODE_DUPLICATE_ALIAS }, { "duplicate_object", ERRCODE_DUPLICATE_OBJECT }, { "ambiguous_column", ERRCODE_AMBIGUOUS_COLUMN }, { "ambiguous_function", ERRCODE_AMBIGUOUS_FUNCTION }, { "ambiguous_parameter", ERRCODE_AMBIGUOUS_PARAMETER }, { "ambiguous_alias", ERRCODE_AMBIGUOUS_ALIAS }, { "invalid_column_reference", ERRCODE_INVALID_COLUMN_REFERENCE }, { "invalid_column_definition", ERRCODE_INVALID_COLUMN_DEFINITION }, { "invalid_cursor_definition", ERRCODE_INVALID_CURSOR_DEFINITION }, { "invalid_database_definition", ERRCODE_INVALID_DATABASE_DEFINITION }, { "invalid_function_definition", ERRCODE_INVALID_FUNCTION_DEFINITION }, { "invalid_prepared_statement_definition", ERRCODE_INVALID_PSTATEMENT_DEFINITION }, { "invalid_schema_definition", ERRCODE_INVALID_SCHEMA_DEFINITION }, { "invalid_table_definition", ERRCODE_INVALID_TABLE_DEFINITION }, { "invalid_object_definition", ERRCODE_INVALID_OBJECT_DEFINITION }, { "with_check_option_violation", ERRCODE_WITH_CHECK_OPTION_VIOLATION }, { "insufficient_resources", ERRCODE_INSUFFICIENT_RESOURCES }, { "disk_full", ERRCODE_DISK_FULL }, { "out_of_memory", ERRCODE_OUT_OF_MEMORY }, { "too_many_connections", ERRCODE_TOO_MANY_CONNECTIONS }, { "configuration_limit_exceeded", ERRCODE_CONFIGURATION_LIMIT_EXCEEDED }, { "program_limit_exceeded", ERRCODE_PROGRAM_LIMIT_EXCEEDED }, { "statement_too_complex", ERRCODE_STATEMENT_TOO_COMPLEX }, { "too_many_columns", ERRCODE_TOO_MANY_COLUMNS }, { "too_many_arguments", ERRCODE_TOO_MANY_ARGUMENTS }, { "object_not_in_prerequisite_state", ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE }, { "object_in_use", ERRCODE_OBJECT_IN_USE }, { "cant_change_runtime_param", ERRCODE_CANT_CHANGE_RUNTIME_PARAM }, { "lock_not_available", ERRCODE_LOCK_NOT_AVAILABLE }, { "unsafe_new_enum_value_usage", ERRCODE_UNSAFE_NEW_ENUM_VALUE_USAGE }, { "operator_intervention", ERRCODE_OPERATOR_INTERVENTION }, { "query_canceled", ERRCODE_QUERY_CANCELED }, { "admin_shutdown", ERRCODE_ADMIN_SHUTDOWN }, { "crash_shutdown", ERRCODE_CRASH_SHUTDOWN }, { "cannot_connect_now", ERRCODE_CANNOT_CONNECT_NOW }, { "database_dropped", ERRCODE_DATABASE_DROPPED }, { "system_error", ERRCODE_SYSTEM_ERROR }, { "io_error", ERRCODE_IO_ERROR }, { "undefined_file", ERRCODE_UNDEFINED_FILE }, { "duplicate_file", ERRCODE_DUPLICATE_FILE }, { "snapshot_too_old", ERRCODE_SNAPSHOT_TOO_OLD }, { "config_file_error", ERRCODE_CONFIG_FILE_ERROR }, { "lock_file_exists", ERRCODE_LOCK_FILE_EXISTS }, { "fdw_error", ERRCODE_FDW_ERROR }, { "fdw_column_name_not_found", ERRCODE_FDW_COLUMN_NAME_NOT_FOUND }, { "fdw_dynamic_parameter_value_needed", ERRCODE_FDW_DYNAMIC_PARAMETER_VALUE_NEEDED }, { "fdw_function_sequence_error", ERRCODE_FDW_FUNCTION_SEQUENCE_ERROR }, { "fdw_inconsistent_descriptor_information", ERRCODE_FDW_INCONSISTENT_DESCRIPTOR_INFORMATION }, { "fdw_invalid_attribute_value", ERRCODE_FDW_INVALID_ATTRIBUTE_VALUE }, { "fdw_invalid_column_name", ERRCODE_FDW_INVALID_COLUMN_NAME }, { "fdw_invalid_column_number", ERRCODE_FDW_INVALID_COLUMN_NUMBER }, { "fdw_invalid_data_type", ERRCODE_FDW_INVALID_DATA_TYPE }, { "fdw_invalid_data_type_descriptors", ERRCODE_FDW_INVALID_DATA_TYPE_DESCRIPTORS }, { "fdw_invalid_descriptor_field_identifier", ERRCODE_FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER }, { "fdw_invalid_handle", ERRCODE_FDW_INVALID_HANDLE }, { "fdw_invalid_option_index", ERRCODE_FDW_INVALID_OPTION_INDEX }, { "fdw_invalid_option_name", ERRCODE_FDW_INVALID_OPTION_NAME }, { "fdw_invalid_string_length_or_buffer_length", ERRCODE_FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH }, { "fdw_invalid_string_format", ERRCODE_FDW_INVALID_STRING_FORMAT }, { "fdw_invalid_use_of_null_pointer", ERRCODE_FDW_INVALID_USE_OF_NULL_POINTER }, { "fdw_too_many_handles", ERRCODE_FDW_TOO_MANY_HANDLES }, { "fdw_out_of_memory", ERRCODE_FDW_OUT_OF_MEMORY }, { "fdw_no_schemas", ERRCODE_FDW_NO_SCHEMAS }, { "fdw_option_name_not_found", ERRCODE_FDW_OPTION_NAME_NOT_FOUND }, { "fdw_reply_handle", ERRCODE_FDW_REPLY_HANDLE }, { "fdw_schema_not_found", ERRCODE_FDW_SCHEMA_NOT_FOUND }, { "fdw_table_not_found", ERRCODE_FDW_TABLE_NOT_FOUND }, { "fdw_unable_to_create_execution", ERRCODE_FDW_UNABLE_TO_CREATE_EXECUTION }, { "fdw_unable_to_create_reply", ERRCODE_FDW_UNABLE_TO_CREATE_REPLY }, { "fdw_unable_to_establish_connection", ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION }, { "plpgsql_error", ERRCODE_PLPGSQL_ERROR }, { "raise_exception", ERRCODE_RAISE_EXCEPTION }, { "no_data_found", ERRCODE_NO_DATA_FOUND }, { "too_many_rows", ERRCODE_TOO_MANY_ROWS }, { "assert_failure", ERRCODE_ASSERT_FAILURE }, { "internal_error", ERRCODE_INTERNAL_ERROR }, { "data_corrupted", ERRCODE_DATA_CORRUPTED }, { "index_corrupted", ERRCODE_INDEX_CORRUPTED }, libpg_query-13-2.1.0/src/postgres/include/plpgsql.h000066400000000000000000001102601413137616400221760ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * plpgsql.h - Definitions for the PL/pgSQL * procedural language * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/pl/plpgsql/src/plpgsql.h * *------------------------------------------------------------------------- */ #ifndef PLPGSQL_H #define PLPGSQL_H #include "access/xact.h" #include "commands/event_trigger.h" #include "commands/trigger.h" #include "executor/spi.h" #include "utils/expandedrecord.h" #include "utils/typcache.h" /********************************************************************** * Definitions **********************************************************************/ /* define our text domain for translations */ #undef TEXTDOMAIN #define TEXTDOMAIN PG_TEXTDOMAIN("plpgsql") #undef _ #define _(x) dgettext(TEXTDOMAIN, x) /* * Compiler's namespace item types */ typedef enum PLpgSQL_nsitem_type { PLPGSQL_NSTYPE_LABEL, /* block label */ PLPGSQL_NSTYPE_VAR, /* scalar variable */ PLPGSQL_NSTYPE_REC /* composite variable */ } PLpgSQL_nsitem_type; /* * A PLPGSQL_NSTYPE_LABEL stack entry must be one of these types */ typedef enum PLpgSQL_label_type { PLPGSQL_LABEL_BLOCK, /* DECLARE/BEGIN block */ PLPGSQL_LABEL_LOOP, /* looping construct */ PLPGSQL_LABEL_OTHER /* anything else */ } PLpgSQL_label_type; /* * Datum array node types */ typedef enum PLpgSQL_datum_type { PLPGSQL_DTYPE_VAR, PLPGSQL_DTYPE_ROW, PLPGSQL_DTYPE_REC, PLPGSQL_DTYPE_RECFIELD, PLPGSQL_DTYPE_ARRAYELEM, PLPGSQL_DTYPE_PROMISE } PLpgSQL_datum_type; /* * DTYPE_PROMISE datums have these possible ways of computing the promise */ typedef enum PLpgSQL_promise_type { PLPGSQL_PROMISE_NONE = 0, /* not a promise, or promise satisfied */ PLPGSQL_PROMISE_TG_NAME, PLPGSQL_PROMISE_TG_WHEN, PLPGSQL_PROMISE_TG_LEVEL, PLPGSQL_PROMISE_TG_OP, PLPGSQL_PROMISE_TG_RELID, PLPGSQL_PROMISE_TG_TABLE_NAME, PLPGSQL_PROMISE_TG_TABLE_SCHEMA, PLPGSQL_PROMISE_TG_NARGS, PLPGSQL_PROMISE_TG_ARGV, PLPGSQL_PROMISE_TG_EVENT, PLPGSQL_PROMISE_TG_TAG } PLpgSQL_promise_type; /* * Variants distinguished in PLpgSQL_type structs */ typedef enum PLpgSQL_type_type { PLPGSQL_TTYPE_SCALAR, /* scalar types and domains */ PLPGSQL_TTYPE_REC, /* composite types, including RECORD */ PLPGSQL_TTYPE_PSEUDO /* pseudotypes */ } PLpgSQL_type_type; /* * Execution tree node types */ typedef enum PLpgSQL_stmt_type { PLPGSQL_STMT_BLOCK, PLPGSQL_STMT_ASSIGN, PLPGSQL_STMT_IF, PLPGSQL_STMT_CASE, PLPGSQL_STMT_LOOP, PLPGSQL_STMT_WHILE, PLPGSQL_STMT_FORI, PLPGSQL_STMT_FORS, PLPGSQL_STMT_FORC, PLPGSQL_STMT_FOREACH_A, PLPGSQL_STMT_EXIT, PLPGSQL_STMT_RETURN, PLPGSQL_STMT_RETURN_NEXT, PLPGSQL_STMT_RETURN_QUERY, PLPGSQL_STMT_RAISE, PLPGSQL_STMT_ASSERT, PLPGSQL_STMT_EXECSQL, PLPGSQL_STMT_DYNEXECUTE, PLPGSQL_STMT_DYNFORS, PLPGSQL_STMT_GETDIAG, PLPGSQL_STMT_OPEN, PLPGSQL_STMT_FETCH, PLPGSQL_STMT_CLOSE, PLPGSQL_STMT_PERFORM, PLPGSQL_STMT_CALL, PLPGSQL_STMT_COMMIT, PLPGSQL_STMT_ROLLBACK, PLPGSQL_STMT_SET } PLpgSQL_stmt_type; /* * Execution node return codes */ enum { PLPGSQL_RC_OK, PLPGSQL_RC_EXIT, PLPGSQL_RC_RETURN, PLPGSQL_RC_CONTINUE }; /* * GET DIAGNOSTICS information items */ typedef enum PLpgSQL_getdiag_kind { PLPGSQL_GETDIAG_ROW_COUNT, PLPGSQL_GETDIAG_CONTEXT, PLPGSQL_GETDIAG_ERROR_CONTEXT, PLPGSQL_GETDIAG_ERROR_DETAIL, PLPGSQL_GETDIAG_ERROR_HINT, PLPGSQL_GETDIAG_RETURNED_SQLSTATE, PLPGSQL_GETDIAG_COLUMN_NAME, PLPGSQL_GETDIAG_CONSTRAINT_NAME, PLPGSQL_GETDIAG_DATATYPE_NAME, PLPGSQL_GETDIAG_MESSAGE_TEXT, PLPGSQL_GETDIAG_TABLE_NAME, PLPGSQL_GETDIAG_SCHEMA_NAME } PLpgSQL_getdiag_kind; /* * RAISE statement options */ typedef enum PLpgSQL_raise_option_type { PLPGSQL_RAISEOPTION_ERRCODE, PLPGSQL_RAISEOPTION_MESSAGE, PLPGSQL_RAISEOPTION_DETAIL, PLPGSQL_RAISEOPTION_HINT, PLPGSQL_RAISEOPTION_COLUMN, PLPGSQL_RAISEOPTION_CONSTRAINT, PLPGSQL_RAISEOPTION_DATATYPE, PLPGSQL_RAISEOPTION_TABLE, PLPGSQL_RAISEOPTION_SCHEMA } PLpgSQL_raise_option_type; /* * Behavioral modes for plpgsql variable resolution */ typedef enum PLpgSQL_resolve_option { PLPGSQL_RESOLVE_ERROR, /* throw error if ambiguous */ PLPGSQL_RESOLVE_VARIABLE, /* prefer plpgsql var to table column */ PLPGSQL_RESOLVE_COLUMN /* prefer table column to plpgsql var */ } PLpgSQL_resolve_option; /********************************************************************** * Node and structure definitions **********************************************************************/ /* * Postgres data type */ typedef struct PLpgSQL_type { char *typname; /* (simple) name of the type */ Oid typoid; /* OID of the data type */ PLpgSQL_type_type ttype; /* PLPGSQL_TTYPE_ code */ int16 typlen; /* stuff copied from its pg_type entry */ bool typbyval; char typtype; Oid collation; /* from pg_type, but can be overridden */ bool typisarray; /* is "true" array, or domain over one */ int32 atttypmod; /* typmod (taken from someplace else) */ /* Remaining fields are used only for named composite types (not RECORD) */ TypeName *origtypname; /* type name as written by user */ TypeCacheEntry *tcache; /* typcache entry for composite type */ uint64 tupdesc_id; /* last-seen tupdesc identifier */ } PLpgSQL_type; /* * SQL Query to plan and execute */ typedef struct PLpgSQL_expr { char *query; SPIPlanPtr plan; Bitmapset *paramnos; /* all dnos referenced by this query */ int rwparam; /* dno of read/write param, or -1 if none */ /* function containing this expr (not set until we first parse query) */ struct PLpgSQL_function *func; /* namespace chain visible to this expr */ struct PLpgSQL_nsitem *ns; /* fields for "simple expression" fast-path execution: */ Expr *expr_simple_expr; /* NULL means not a simple expr */ Oid expr_simple_type; /* result type Oid, if simple */ int32 expr_simple_typmod; /* result typmod, if simple */ bool expr_simple_mutable; /* true if simple expr is mutable */ /* * If the expression was ever determined to be simple, we remember its * CachedPlanSource and CachedPlan here. If expr_simple_plan_lxid matches * current LXID, then we hold a refcount on expr_simple_plan in the * current transaction. Otherwise we need to get one before re-using it. */ CachedPlanSource *expr_simple_plansource; /* extracted from "plan" */ CachedPlan *expr_simple_plan; /* extracted from "plan" */ LocalTransactionId expr_simple_plan_lxid; /* * if expr is simple AND prepared in current transaction, * expr_simple_state and expr_simple_in_use are valid. Test validity by * seeing if expr_simple_lxid matches current LXID. (If not, * expr_simple_state probably points at garbage!) */ ExprState *expr_simple_state; /* eval tree for expr_simple_expr */ bool expr_simple_in_use; /* true if eval tree is active */ LocalTransactionId expr_simple_lxid; } PLpgSQL_expr; /* * Generic datum array item * * PLpgSQL_datum is the common supertype for PLpgSQL_var, PLpgSQL_row, * PLpgSQL_rec, PLpgSQL_recfield, and PLpgSQL_arrayelem. */ typedef struct PLpgSQL_datum { PLpgSQL_datum_type dtype; int dno; } PLpgSQL_datum; /* * Scalar or composite variable * * The variants PLpgSQL_var, PLpgSQL_row, and PLpgSQL_rec share these * fields. */ typedef struct PLpgSQL_variable { PLpgSQL_datum_type dtype; int dno; char *refname; int lineno; bool isconst; bool notnull; PLpgSQL_expr *default_val; } PLpgSQL_variable; /* * Scalar variable * * DTYPE_VAR and DTYPE_PROMISE datums both use this struct type. * A PROMISE datum works exactly like a VAR datum for most purposes, * but if it is read without having previously been assigned to, then * a special "promised" value is computed and assigned to the datum * before the read is performed. This technique avoids the overhead of * computing the variable's value in cases where we expect that many * functions will never read it. */ typedef struct PLpgSQL_var { PLpgSQL_datum_type dtype; int dno; char *refname; int lineno; bool isconst; bool notnull; PLpgSQL_expr *default_val; /* end of PLpgSQL_variable fields */ PLpgSQL_type *datatype; /* * Variables declared as CURSOR FOR are mostly like ordinary * scalar variables of type refcursor, but they have these additional * properties: */ PLpgSQL_expr *cursor_explicit_expr; int cursor_explicit_argrow; int cursor_options; /* Fields below here can change at runtime */ Datum value; bool isnull; bool freeval; /* * The promise field records which "promised" value to assign if the * promise must be honored. If it's a normal variable, or the promise has * been fulfilled, this is PLPGSQL_PROMISE_NONE. */ PLpgSQL_promise_type promise; } PLpgSQL_var; /* * Row variable - this represents one or more variables that are listed in an * INTO clause, FOR-loop targetlist, cursor argument list, etc. We also use * a row to represent a function's OUT parameters when there's more than one. * * Note that there's no way to name the row as such from PL/pgSQL code, * so many functions don't need to support these. * * That also means that there's no real name for the row variable, so we * conventionally set refname to "(unnamed row)". We could leave it NULL, * but it's too convenient to be able to assume that refname is valid in * all variants of PLpgSQL_variable. * * isconst, notnull, and default_val are unsupported (and hence * always zero/null) for a row. The member variables of a row should have * been checked to be writable at compile time, so isconst is correctly set * to false. notnull and default_val aren't applicable. */ typedef struct PLpgSQL_row { PLpgSQL_datum_type dtype; int dno; char *refname; int lineno; bool isconst; bool notnull; PLpgSQL_expr *default_val; /* end of PLpgSQL_variable fields */ /* * rowtupdesc is only set up if we might need to convert the row into a * composite datum, which currently only happens for OUT parameters. * Otherwise it is NULL. */ TupleDesc rowtupdesc; int nfields; char **fieldnames; int *varnos; } PLpgSQL_row; /* * Record variable (any composite type, including RECORD) */ typedef struct PLpgSQL_rec { PLpgSQL_datum_type dtype; int dno; char *refname; int lineno; bool isconst; bool notnull; PLpgSQL_expr *default_val; /* end of PLpgSQL_variable fields */ /* * Note: for non-RECORD cases, we may from time to time re-look-up the * composite type, using datatype->origtypname. That can result in * changing rectypeid. */ PLpgSQL_type *datatype; /* can be NULL, if rectypeid is RECORDOID */ Oid rectypeid; /* declared type of variable */ /* RECFIELDs for this record are chained together for easy access */ int firstfield; /* dno of first RECFIELD, or -1 if none */ /* Fields below here can change at runtime */ /* We always store record variables as "expanded" records */ ExpandedRecordHeader *erh; } PLpgSQL_rec; /* * Field in record */ typedef struct PLpgSQL_recfield { PLpgSQL_datum_type dtype; int dno; /* end of PLpgSQL_datum fields */ char *fieldname; /* name of field */ int recparentno; /* dno of parent record */ int nextfield; /* dno of next child, or -1 if none */ uint64 rectupledescid; /* record's tupledesc ID as of last lookup */ ExpandedRecordFieldInfo finfo; /* field's attnum and type info */ /* if rectupledescid == INVALID_TUPLEDESC_IDENTIFIER, finfo isn't valid */ } PLpgSQL_recfield; /* * Element of array variable */ typedef struct PLpgSQL_arrayelem { PLpgSQL_datum_type dtype; int dno; /* end of PLpgSQL_datum fields */ PLpgSQL_expr *subscript; int arrayparentno; /* dno of parent array variable */ /* Remaining fields are cached info about the array variable's type */ Oid parenttypoid; /* type of array variable; 0 if not yet set */ int32 parenttypmod; /* typmod of array variable */ Oid arraytypoid; /* OID of actual array type */ int32 arraytypmod; /* typmod of array (and its elements too) */ int16 arraytyplen; /* typlen of array type */ Oid elemtypoid; /* OID of array element type */ int16 elemtyplen; /* typlen of element type */ bool elemtypbyval; /* element type is pass-by-value? */ char elemtypalign; /* typalign of element type */ } PLpgSQL_arrayelem; /* * Item in the compilers namespace tree */ typedef struct PLpgSQL_nsitem { PLpgSQL_nsitem_type itemtype; /* * For labels, itemno is a value of enum PLpgSQL_label_type. For other * itemtypes, itemno is the associated PLpgSQL_datum's dno. */ int itemno; struct PLpgSQL_nsitem *prev; char name[FLEXIBLE_ARRAY_MEMBER]; /* nul-terminated string */ } PLpgSQL_nsitem; /* * Generic execution node */ typedef struct PLpgSQL_stmt { PLpgSQL_stmt_type cmd_type; int lineno; /* * Unique statement ID in this function (starting at 1; 0 is invalid/not * set). This can be used by a profiler as the index for an array of * per-statement metrics. */ unsigned int stmtid; } PLpgSQL_stmt; /* * One EXCEPTION condition name */ typedef struct PLpgSQL_condition { int sqlerrstate; /* SQLSTATE code */ char *condname; /* condition name (for debugging) */ struct PLpgSQL_condition *next; } PLpgSQL_condition; /* * EXCEPTION block */ typedef struct PLpgSQL_exception_block { int sqlstate_varno; int sqlerrm_varno; List *exc_list; /* List of WHEN clauses */ } PLpgSQL_exception_block; /* * One EXCEPTION ... WHEN clause */ typedef struct PLpgSQL_exception { int lineno; PLpgSQL_condition *conditions; List *action; /* List of statements */ } PLpgSQL_exception; /* * Block of statements */ typedef struct PLpgSQL_stmt_block { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; char *label; List *body; /* List of statements */ int n_initvars; /* Length of initvarnos[] */ int *initvarnos; /* dnos of variables declared in this block */ PLpgSQL_exception_block *exceptions; } PLpgSQL_stmt_block; /* * Assign statement */ typedef struct PLpgSQL_stmt_assign { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; int varno; PLpgSQL_expr *expr; } PLpgSQL_stmt_assign; /* * PERFORM statement */ typedef struct PLpgSQL_stmt_perform { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *expr; } PLpgSQL_stmt_perform; /* * CALL statement */ typedef struct PLpgSQL_stmt_call { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *expr; bool is_call; PLpgSQL_variable *target; } PLpgSQL_stmt_call; /* * COMMIT statement */ typedef struct PLpgSQL_stmt_commit { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; bool chain; } PLpgSQL_stmt_commit; /* * ROLLBACK statement */ typedef struct PLpgSQL_stmt_rollback { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; bool chain; } PLpgSQL_stmt_rollback; /* * SET statement */ typedef struct PLpgSQL_stmt_set { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *expr; } PLpgSQL_stmt_set; /* * GET DIAGNOSTICS item */ typedef struct PLpgSQL_diag_item { PLpgSQL_getdiag_kind kind; /* id for diagnostic value desired */ int target; /* where to assign it */ } PLpgSQL_diag_item; /* * GET DIAGNOSTICS statement */ typedef struct PLpgSQL_stmt_getdiag { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; bool is_stacked; /* STACKED or CURRENT diagnostics area? */ List *diag_items; /* List of PLpgSQL_diag_item */ } PLpgSQL_stmt_getdiag; /* * IF statement */ typedef struct PLpgSQL_stmt_if { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *cond; /* boolean expression for THEN */ List *then_body; /* List of statements */ List *elsif_list; /* List of PLpgSQL_if_elsif structs */ List *else_body; /* List of statements */ } PLpgSQL_stmt_if; /* * one ELSIF arm of IF statement */ typedef struct PLpgSQL_if_elsif { int lineno; PLpgSQL_expr *cond; /* boolean expression for this case */ List *stmts; /* List of statements */ } PLpgSQL_if_elsif; /* * CASE statement */ typedef struct PLpgSQL_stmt_case { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *t_expr; /* test expression, or NULL if none */ int t_varno; /* var to store test expression value into */ List *case_when_list; /* List of PLpgSQL_case_when structs */ bool have_else; /* flag needed because list could be empty */ List *else_stmts; /* List of statements */ } PLpgSQL_stmt_case; /* * one arm of CASE statement */ typedef struct PLpgSQL_case_when { int lineno; PLpgSQL_expr *expr; /* boolean expression for this case */ List *stmts; /* List of statements */ } PLpgSQL_case_when; /* * Unconditional LOOP statement */ typedef struct PLpgSQL_stmt_loop { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; char *label; List *body; /* List of statements */ } PLpgSQL_stmt_loop; /* * WHILE cond LOOP statement */ typedef struct PLpgSQL_stmt_while { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; char *label; PLpgSQL_expr *cond; List *body; /* List of statements */ } PLpgSQL_stmt_while; /* * FOR statement with integer loopvar */ typedef struct PLpgSQL_stmt_fori { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; char *label; PLpgSQL_var *var; PLpgSQL_expr *lower; PLpgSQL_expr *upper; PLpgSQL_expr *step; /* NULL means default (ie, BY 1) */ int reverse; List *body; /* List of statements */ } PLpgSQL_stmt_fori; /* * PLpgSQL_stmt_forq represents a FOR statement running over a SQL query. * It is the common supertype of PLpgSQL_stmt_fors, PLpgSQL_stmt_forc * and PLpgSQL_stmt_dynfors. */ typedef struct PLpgSQL_stmt_forq { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; char *label; PLpgSQL_variable *var; /* Loop variable (record or row) */ List *body; /* List of statements */ } PLpgSQL_stmt_forq; /* * FOR statement running over SELECT */ typedef struct PLpgSQL_stmt_fors { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; char *label; PLpgSQL_variable *var; /* Loop variable (record or row) */ List *body; /* List of statements */ /* end of fields that must match PLpgSQL_stmt_forq */ PLpgSQL_expr *query; } PLpgSQL_stmt_fors; /* * FOR statement running over cursor */ typedef struct PLpgSQL_stmt_forc { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; char *label; PLpgSQL_variable *var; /* Loop variable (record or row) */ List *body; /* List of statements */ /* end of fields that must match PLpgSQL_stmt_forq */ int curvar; PLpgSQL_expr *argquery; /* cursor arguments if any */ } PLpgSQL_stmt_forc; /* * FOR statement running over EXECUTE */ typedef struct PLpgSQL_stmt_dynfors { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; char *label; PLpgSQL_variable *var; /* Loop variable (record or row) */ List *body; /* List of statements */ /* end of fields that must match PLpgSQL_stmt_forq */ PLpgSQL_expr *query; List *params; /* USING expressions */ } PLpgSQL_stmt_dynfors; /* * FOREACH item in array loop */ typedef struct PLpgSQL_stmt_foreach_a { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; char *label; int varno; /* loop target variable */ int slice; /* slice dimension, or 0 */ PLpgSQL_expr *expr; /* array expression */ List *body; /* List of statements */ } PLpgSQL_stmt_foreach_a; /* * OPEN a curvar */ typedef struct PLpgSQL_stmt_open { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; int curvar; int cursor_options; PLpgSQL_expr *argquery; PLpgSQL_expr *query; PLpgSQL_expr *dynquery; List *params; /* USING expressions */ } PLpgSQL_stmt_open; /* * FETCH or MOVE statement */ typedef struct PLpgSQL_stmt_fetch { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_variable *target; /* target (record or row) */ int curvar; /* cursor variable to fetch from */ FetchDirection direction; /* fetch direction */ long how_many; /* count, if constant (expr is NULL) */ PLpgSQL_expr *expr; /* count, if expression */ bool is_move; /* is this a fetch or move? */ bool returns_multiple_rows; /* can return more than one row? */ } PLpgSQL_stmt_fetch; /* * CLOSE curvar */ typedef struct PLpgSQL_stmt_close { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; int curvar; } PLpgSQL_stmt_close; /* * EXIT or CONTINUE statement */ typedef struct PLpgSQL_stmt_exit { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; bool is_exit; /* Is this an exit or a continue? */ char *label; /* NULL if it's an unlabeled EXIT/CONTINUE */ PLpgSQL_expr *cond; } PLpgSQL_stmt_exit; /* * RETURN statement */ typedef struct PLpgSQL_stmt_return { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *expr; int retvarno; } PLpgSQL_stmt_return; /* * RETURN NEXT statement */ typedef struct PLpgSQL_stmt_return_next { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *expr; int retvarno; } PLpgSQL_stmt_return_next; /* * RETURN QUERY statement */ typedef struct PLpgSQL_stmt_return_query { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *query; /* if static query */ PLpgSQL_expr *dynquery; /* if dynamic query (RETURN QUERY EXECUTE) */ List *params; /* USING arguments for dynamic query */ } PLpgSQL_stmt_return_query; /* * RAISE statement */ typedef struct PLpgSQL_stmt_raise { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; int elog_level; char *condname; /* condition name, SQLSTATE, or NULL */ char *message; /* old-style message format literal, or NULL */ List *params; /* list of expressions for old-style message */ List *options; /* list of PLpgSQL_raise_option */ } PLpgSQL_stmt_raise; /* * RAISE statement option */ typedef struct PLpgSQL_raise_option { PLpgSQL_raise_option_type opt_type; PLpgSQL_expr *expr; } PLpgSQL_raise_option; /* * ASSERT statement */ typedef struct PLpgSQL_stmt_assert { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *cond; PLpgSQL_expr *message; } PLpgSQL_stmt_assert; /* * Generic SQL statement to execute */ typedef struct PLpgSQL_stmt_execsql { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *sqlstmt; bool mod_stmt; /* is the stmt INSERT/UPDATE/DELETE? Note: * mod_stmt is set when we plan the query */ bool into; /* INTO supplied? */ bool strict; /* INTO STRICT flag */ PLpgSQL_variable *target; /* INTO target (record or row) */ } PLpgSQL_stmt_execsql; /* * Dynamic SQL string to execute */ typedef struct PLpgSQL_stmt_dynexecute { PLpgSQL_stmt_type cmd_type; int lineno; unsigned int stmtid; PLpgSQL_expr *query; /* string expression */ bool into; /* INTO supplied? */ bool strict; /* INTO STRICT flag */ PLpgSQL_variable *target; /* INTO target (record or row) */ List *params; /* USING expressions */ } PLpgSQL_stmt_dynexecute; /* * Hash lookup key for functions */ typedef struct PLpgSQL_func_hashkey { Oid funcOid; bool isTrigger; /* true if called as a DML trigger */ bool isEventTrigger; /* true if called as an event trigger */ /* be careful that pad bytes in this struct get zeroed! */ /* * For a trigger function, the OID of the trigger is part of the hash key * --- we want to compile the trigger function separately for each trigger * it is used with, in case the rowtype or transition table names are * different. Zero if not called as a DML trigger. */ Oid trigOid; /* * We must include the input collation as part of the hash key too, * because we have to generate different plans (with different Param * collations) for different collation settings. */ Oid inputCollation; /* * We include actual argument types in the hash key to support polymorphic * PLpgSQL functions. Be careful that extra positions are zeroed! */ Oid argtypes[FUNC_MAX_ARGS]; } PLpgSQL_func_hashkey; /* * Trigger type */ typedef enum PLpgSQL_trigtype { PLPGSQL_DML_TRIGGER, PLPGSQL_EVENT_TRIGGER, PLPGSQL_NOT_TRIGGER } PLpgSQL_trigtype; /* * Complete compiled function */ typedef struct PLpgSQL_function { char *fn_signature; Oid fn_oid; TransactionId fn_xmin; ItemPointerData fn_tid; PLpgSQL_trigtype fn_is_trigger; Oid fn_input_collation; PLpgSQL_func_hashkey *fn_hashkey; /* back-link to hashtable key */ MemoryContext fn_cxt; Oid fn_rettype; int fn_rettyplen; bool fn_retbyval; bool fn_retistuple; bool fn_retisdomain; bool fn_retset; bool fn_readonly; char fn_prokind; int fn_nargs; int fn_argvarnos[FUNC_MAX_ARGS]; int out_param_varno; int found_varno; int new_varno; int old_varno; PLpgSQL_resolve_option resolve_option; bool print_strict_params; /* extra checks */ int extra_warnings; int extra_errors; /* count of statements inside function */ unsigned int nstatements; /* the datums representing the function's local variables */ int ndatums; PLpgSQL_datum **datums; Size copiable_size; /* space for locally instantiated datums */ /* function body parsetree */ PLpgSQL_stmt_block *action; /* these fields change when the function is used */ struct PLpgSQL_execstate *cur_estate; unsigned long use_count; } PLpgSQL_function; /* * Runtime execution data */ typedef struct PLpgSQL_execstate { PLpgSQL_function *func; /* function being executed */ TriggerData *trigdata; /* if regular trigger, data about firing */ EventTriggerData *evtrigdata; /* if event trigger, data about firing */ Datum retval; bool retisnull; Oid rettype; /* type of current retval */ Oid fn_rettype; /* info about declared function rettype */ bool retistuple; bool retisset; bool readonly_func; bool atomic; char *exitlabel; /* the "target" label of the current EXIT or * CONTINUE stmt, if any */ ErrorData *cur_error; /* current exception handler's error */ Tuplestorestate *tuple_store; /* SRFs accumulate results here */ TupleDesc tuple_store_desc; /* descriptor for tuples in tuple_store */ MemoryContext tuple_store_cxt; ResourceOwner tuple_store_owner; ReturnSetInfo *rsi; int found_varno; /* * The datums representing the function's local variables. Some of these * are local storage in this execstate, but some just point to the shared * copy belonging to the PLpgSQL_function, depending on whether or not we * need any per-execution state for the datum's dtype. */ int ndatums; PLpgSQL_datum **datums; /* context containing variable values (same as func's SPI_proc context) */ MemoryContext datum_context; /* * paramLI is what we use to pass local variable values to the executor. * It does not have a ParamExternData array; we just dynamically * instantiate parameter data as needed. By convention, PARAM_EXTERN * Params have paramid equal to the dno of the referenced local variable. */ ParamListInfo paramLI; /* EState and resowner to use for "simple" expression evaluation */ EState *simple_eval_estate; ResourceOwner simple_eval_resowner; /* lookup table to use for executing type casts */ HTAB *cast_hash; MemoryContext cast_hash_context; /* memory context for statement-lifespan temporary values */ MemoryContext stmt_mcontext; /* current stmt context, or NULL if none */ MemoryContext stmt_mcontext_parent; /* parent of current context */ /* temporary state for results from evaluation of query or expr */ SPITupleTable *eval_tuptable; uint64 eval_processed; ExprContext *eval_econtext; /* for executing simple expressions */ /* status information for error context reporting */ PLpgSQL_stmt *err_stmt; /* current stmt */ const char *err_text; /* additional state info */ void *plugin_info; /* reserved for use by optional plugin */ } PLpgSQL_execstate; /* * A PLpgSQL_plugin structure represents an instrumentation plugin. * To instrument PL/pgSQL, a plugin library must access the rendezvous * variable "PLpgSQL_plugin" and set it to point to a PLpgSQL_plugin struct. * Typically the struct could just be static data in the plugin library. * We expect that a plugin would do this at library load time (_PG_init()). * It must also be careful to set the rendezvous variable back to NULL * if it is unloaded (_PG_fini()). * * This structure is basically a collection of function pointers --- at * various interesting points in pl_exec.c, we call these functions * (if the pointers are non-NULL) to give the plugin a chance to watch * what we are doing. * * func_setup is called when we start a function, before we've initialized * the local variables defined by the function. * * func_beg is called when we start a function, after we've initialized * the local variables. * * func_end is called at the end of a function. * * stmt_beg and stmt_end are called before and after (respectively) each * statement. * * Also, immediately before any call to func_setup, PL/pgSQL fills in the * error_callback and assign_expr fields with pointers to its own * plpgsql_exec_error_callback and exec_assign_expr functions. This is * a somewhat ad-hoc expedient to simplify life for debugger plugins. */ typedef struct PLpgSQL_plugin { /* Function pointers set up by the plugin */ void (*func_setup) (PLpgSQL_execstate *estate, PLpgSQL_function *func); void (*func_beg) (PLpgSQL_execstate *estate, PLpgSQL_function *func); void (*func_end) (PLpgSQL_execstate *estate, PLpgSQL_function *func); void (*stmt_beg) (PLpgSQL_execstate *estate, PLpgSQL_stmt *stmt); void (*stmt_end) (PLpgSQL_execstate *estate, PLpgSQL_stmt *stmt); /* Function pointers set by PL/pgSQL itself */ void (*error_callback) (void *arg); void (*assign_expr) (PLpgSQL_execstate *estate, PLpgSQL_datum *target, PLpgSQL_expr *expr); } PLpgSQL_plugin; /* * Struct types used during parsing */ typedef struct PLword { char *ident; /* palloc'd converted identifier */ bool quoted; /* Was it double-quoted? */ } PLword; typedef struct PLcword { List *idents; /* composite identifiers (list of String) */ } PLcword; typedef struct PLwdatum { PLpgSQL_datum *datum; /* referenced variable */ char *ident; /* valid if simple name */ bool quoted; List *idents; /* valid if composite name */ } PLwdatum; /********************************************************************** * Global variable declarations **********************************************************************/ typedef enum { IDENTIFIER_LOOKUP_NORMAL, /* normal processing of var names */ IDENTIFIER_LOOKUP_DECLARE, /* In DECLARE --- don't look up names */ IDENTIFIER_LOOKUP_EXPR /* In SQL expression --- special case */ } IdentifierLookup; extern __thread IdentifierLookup plpgsql_IdentifierLookup; extern __thread int plpgsql_variable_conflict; extern __thread bool plpgsql_print_strict_params; extern bool plpgsql_check_asserts; /* extra compile-time and run-time checks */ #define PLPGSQL_XCHECK_NONE 0 #define PLPGSQL_XCHECK_SHADOWVAR (1 << 1) #define PLPGSQL_XCHECK_TOOMANYROWS (1 << 2) #define PLPGSQL_XCHECK_STRICTMULTIASSIGNMENT (1 << 3) #define PLPGSQL_XCHECK_ALL ((int) ~0) extern int plpgsql_extra_warnings; extern int plpgsql_extra_errors; extern __thread bool plpgsql_check_syntax; extern __thread bool plpgsql_DumpExecTree; extern __thread PLpgSQL_stmt_block *plpgsql_parse_result; extern __thread int plpgsql_nDatums; extern __thread PLpgSQL_datum **plpgsql_Datums; extern __thread char *plpgsql_error_funcname; extern __thread PLpgSQL_function *plpgsql_curr_compile; extern __thread MemoryContext plpgsql_compile_tmp_cxt; extern PLpgSQL_plugin **plpgsql_plugin_ptr; /********************************************************************** * Function declarations **********************************************************************/ /* * Functions in pl_comp.c */ extern PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo, bool forValidator); extern PLpgSQL_function *plpgsql_compile_inline(char *proc_source); extern void plpgsql_parser_setup(struct ParseState *pstate, PLpgSQL_expr *expr); extern bool plpgsql_parse_word(char *word1, const char *yytxt, bool lookup, PLwdatum *wdatum, PLword *word); extern bool plpgsql_parse_dblword(char *word1, char *word2, PLwdatum *wdatum, PLcword *cword); extern bool plpgsql_parse_tripword(char *word1, char *word2, char *word3, PLwdatum *wdatum, PLcword *cword); extern PLpgSQL_type *plpgsql_parse_wordtype(char *ident); extern PLpgSQL_type *plpgsql_parse_cwordtype(List *idents); extern PLpgSQL_type *plpgsql_parse_wordrowtype(char *ident); extern PLpgSQL_type *plpgsql_parse_cwordrowtype(List *idents); extern PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod, Oid collation, TypeName *origtypname); extern PLpgSQL_variable *plpgsql_build_variable(const char *refname, int lineno, PLpgSQL_type *dtype, bool add2namespace); extern PLpgSQL_rec *plpgsql_build_record(const char *refname, int lineno, PLpgSQL_type *dtype, Oid rectypeid, bool add2namespace); extern PLpgSQL_recfield *plpgsql_build_recfield(PLpgSQL_rec *rec, const char *fldname); extern int plpgsql_recognize_err_condition(const char *condname, bool allow_sqlstate); extern PLpgSQL_condition *plpgsql_parse_err_condition(char *condname); extern void plpgsql_start_datums(void); extern void plpgsql_finish_datums(PLpgSQL_function *function); extern void plpgsql_adddatum(PLpgSQL_datum *newdatum); extern int plpgsql_add_initdatums(int **varnos); extern void plpgsql_HashTableInit(void); /* * Functions in pl_handler.c */ extern void _PG_init(void); /* * Functions in pl_exec.c */ extern Datum plpgsql_exec_function(PLpgSQL_function *func, FunctionCallInfo fcinfo, EState *simple_eval_estate, ResourceOwner simple_eval_resowner, bool atomic); extern HeapTuple plpgsql_exec_trigger(PLpgSQL_function *func, TriggerData *trigdata); extern void plpgsql_exec_event_trigger(PLpgSQL_function *func, EventTriggerData *trigdata); extern void plpgsql_xact_cb(XactEvent event, void *arg); extern void plpgsql_subxact_cb(SubXactEvent event, SubTransactionId mySubid, SubTransactionId parentSubid, void *arg); extern Oid plpgsql_exec_get_datum_type(PLpgSQL_execstate *estate, PLpgSQL_datum *datum); extern void plpgsql_exec_get_datum_type_info(PLpgSQL_execstate *estate, PLpgSQL_datum *datum, Oid *typeId, int32 *typMod, Oid *collation); /* * Functions for namespace handling in pl_funcs.c */ extern void plpgsql_ns_init(void); extern void plpgsql_ns_push(const char *label, PLpgSQL_label_type label_type); extern void plpgsql_ns_pop(void); extern PLpgSQL_nsitem *plpgsql_ns_top(void); extern void plpgsql_ns_additem(PLpgSQL_nsitem_type itemtype, int itemno, const char *name); extern PLpgSQL_nsitem *plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode, const char *name1, const char *name2, const char *name3, int *names_used); extern PLpgSQL_nsitem *plpgsql_ns_lookup_label(PLpgSQL_nsitem *ns_cur, const char *name); extern PLpgSQL_nsitem *plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur); /* * Other functions in pl_funcs.c */ extern const char *plpgsql_stmt_typename(PLpgSQL_stmt *stmt); extern const char *plpgsql_getdiag_kindname(PLpgSQL_getdiag_kind kind); extern void plpgsql_free_function_memory(PLpgSQL_function *func); extern void plpgsql_dumptree(PLpgSQL_function *func); /* * Scanner functions in pl_scanner.c */ extern int plpgsql_base_yylex(void); extern int plpgsql_yylex(void); extern void plpgsql_push_back_token(int token); extern bool plpgsql_token_is_unreserved_keyword(int token); extern void plpgsql_append_source_text(StringInfo buf, int startlocation, int endlocation); extern int plpgsql_peek(void); extern void plpgsql_peek2(int *tok1_p, int *tok2_p, int *tok1_loc, int *tok2_loc); extern int plpgsql_scanner_errposition(int location); extern void plpgsql_yyerror(const char *message) pg_attribute_noreturn(); extern int plpgsql_location_to_lineno(int location); extern int plpgsql_latest_lineno(void); extern void plpgsql_scanner_init(const char *str); extern void plpgsql_scanner_finish(void); /* * Externs in gram.y */ extern int plpgsql_yyparse(void); #endif /* PLPGSQL_H */ libpg_query-13-2.1.0/src/postgres/include/port.h000066400000000000000000000373011413137616400215040ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * port.h * Header for src/port/ compatibility functions. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port.h * *------------------------------------------------------------------------- */ #ifndef PG_PORT_H #define PG_PORT_H #include #include #include /* * Windows has enough specialized port stuff that we push most of it off * into another file. * Note: Some CYGWIN includes might #define WIN32. */ #if defined(WIN32) && !defined(__CYGWIN__) #include "port/win32_port.h" #endif /* socket has a different definition on WIN32 */ #ifndef WIN32 typedef int pgsocket; #define PGINVALID_SOCKET (-1) #else typedef SOCKET pgsocket; #define PGINVALID_SOCKET INVALID_SOCKET #endif /* non-blocking */ extern bool pg_set_noblock(pgsocket sock); extern bool pg_set_block(pgsocket sock); /* Portable path handling for Unix/Win32 (in path.c) */ extern bool has_drive_prefix(const char *filename); extern char *first_dir_separator(const char *filename); extern char *last_dir_separator(const char *filename); extern char *first_path_var_separator(const char *pathlist); extern void join_path_components(char *ret_path, const char *head, const char *tail); extern void canonicalize_path(char *path); extern void make_native_path(char *path); extern void cleanup_path(char *path); extern bool path_contains_parent_reference(const char *path); extern bool path_is_relative_and_below_cwd(const char *path); extern bool path_is_prefix_of_path(const char *path1, const char *path2); extern char *make_absolute_path(const char *path); extern const char *get_progname(const char *argv0); extern void get_share_path(const char *my_exec_path, char *ret_path); extern void get_etc_path(const char *my_exec_path, char *ret_path); extern void get_include_path(const char *my_exec_path, char *ret_path); extern void get_pkginclude_path(const char *my_exec_path, char *ret_path); extern void get_includeserver_path(const char *my_exec_path, char *ret_path); extern void get_lib_path(const char *my_exec_path, char *ret_path); extern void get_pkglib_path(const char *my_exec_path, char *ret_path); extern void get_locale_path(const char *my_exec_path, char *ret_path); extern void get_doc_path(const char *my_exec_path, char *ret_path); extern void get_html_path(const char *my_exec_path, char *ret_path); extern void get_man_path(const char *my_exec_path, char *ret_path); extern bool get_home_path(char *ret_path); extern void get_parent_directory(char *path); /* common/pgfnames.c */ extern char **pgfnames(const char *path); extern void pgfnames_cleanup(char **filenames); /* * is_absolute_path * * By making this a macro we avoid needing to include path.c in libpq. */ #ifndef WIN32 #define IS_DIR_SEP(ch) ((ch) == '/') #define is_absolute_path(filename) \ ( \ IS_DIR_SEP((filename)[0]) \ ) #else #define IS_DIR_SEP(ch) ((ch) == '/' || (ch) == '\\') /* See path_is_relative_and_below_cwd() for how we handle 'E:abc'. */ #define is_absolute_path(filename) \ ( \ IS_DIR_SEP((filename)[0]) || \ (isalpha((unsigned char) ((filename)[0])) && (filename)[1] == ':' && \ IS_DIR_SEP((filename)[2])) \ ) #endif /* Portable locale initialization (in exec.c) */ extern void set_pglocale_pgservice(const char *argv0, const char *app); /* Portable way to find and execute binaries (in exec.c) */ extern int find_my_exec(const char *argv0, char *retpath); extern int find_other_exec(const char *argv0, const char *target, const char *versionstr, char *retpath); extern char *pipe_read_line(char *cmd, char *line, int maxsize); /* Doesn't belong here, but this is used with find_other_exec(), so... */ #define PG_BACKEND_VERSIONSTR "postgres (PostgreSQL) " PG_VERSION "\n" #if defined(WIN32) || defined(__CYGWIN__) #define EXE ".exe" #else #define EXE "" #endif #if defined(WIN32) && !defined(__CYGWIN__) #define DEVNULL "nul" #else #define DEVNULL "/dev/null" #endif /* Portable delay handling */ extern void pg_usleep(long microsec); /* Portable SQL-like case-independent comparisons and conversions */ extern int pg_strcasecmp(const char *s1, const char *s2); extern int pg_strncasecmp(const char *s1, const char *s2, size_t n); extern unsigned char pg_toupper(unsigned char ch); extern unsigned char pg_tolower(unsigned char ch); extern unsigned char pg_ascii_toupper(unsigned char ch); extern unsigned char pg_ascii_tolower(unsigned char ch); /* * Beginning in v12, we always replace snprintf() and friends with our own * implementation. This symbol is no longer consulted by the core code, * but keep it defined anyway in case any extensions are looking at it. */ #define USE_REPL_SNPRINTF 1 /* * Versions of libintl >= 0.13 try to replace printf() and friends with * macros to their own versions that understand the %$ format. We do the * same, so disable their macros, if they exist. */ #ifdef vsnprintf #undef vsnprintf #endif #ifdef snprintf #undef snprintf #endif #ifdef vsprintf #undef vsprintf #endif #ifdef sprintf #undef sprintf #endif #ifdef vfprintf #undef vfprintf #endif #ifdef fprintf #undef fprintf #endif #ifdef vprintf #undef vprintf #endif #ifdef printf #undef printf #endif extern int pg_vsnprintf(char *str, size_t count, const char *fmt, va_list args); extern int pg_snprintf(char *str, size_t count, const char *fmt,...) pg_attribute_printf(3, 4); extern int pg_vsprintf(char *str, const char *fmt, va_list args); extern int pg_sprintf(char *str, const char *fmt,...) pg_attribute_printf(2, 3); extern int pg_vfprintf(FILE *stream, const char *fmt, va_list args); extern int pg_fprintf(FILE *stream, const char *fmt,...) pg_attribute_printf(2, 3); extern int pg_vprintf(const char *fmt, va_list args); extern int pg_printf(const char *fmt,...) pg_attribute_printf(1, 2); /* * We use __VA_ARGS__ for printf to prevent replacing references to * the "printf" format archetype in format() attribute declarations. * That unfortunately means that taking a function pointer to printf * will not do what we'd wish. (If you need to do that, you must name * pg_printf explicitly.) For printf's sibling functions, use * parameterless macros so that function pointers will work unsurprisingly. */ #define vsnprintf pg_vsnprintf #define snprintf pg_snprintf #define vsprintf pg_vsprintf #define sprintf pg_sprintf #define vfprintf pg_vfprintf #define fprintf pg_fprintf #define vprintf pg_vprintf #define printf(...) pg_printf(__VA_ARGS__) /* This is also provided by snprintf.c */ extern int pg_strfromd(char *str, size_t count, int precision, double value); /* Replace strerror() with our own, somewhat more robust wrapper */ extern char *pg_strerror(int errnum); #define strerror pg_strerror /* Likewise for strerror_r(); note we prefer the GNU API for that */ extern char *pg_strerror_r(int errnum, char *buf, size_t buflen); #define strerror_r pg_strerror_r #define PG_STRERROR_R_BUFLEN 256 /* Recommended buffer size for strerror_r */ /* Wrap strsignal(), or provide our own version if necessary */ extern const char *pg_strsignal(int signum); /* Portable prompt handling */ extern void simple_prompt(const char *prompt, char *destination, size_t destlen, bool echo); extern int pclose_check(FILE *stream); /* Global variable holding time zone information. */ #if defined(WIN32) || defined(__CYGWIN__) #define TIMEZONE_GLOBAL _timezone #define TZNAME_GLOBAL _tzname #else #define TIMEZONE_GLOBAL timezone #define TZNAME_GLOBAL tzname #endif #if defined(WIN32) || defined(__CYGWIN__) /* * Win32 doesn't have reliable rename/unlink during concurrent access. */ extern int pgrename(const char *from, const char *to); extern int pgunlink(const char *path); /* Include this first so later includes don't see these defines */ #ifdef _MSC_VER #include #endif #define rename(from, to) pgrename(from, to) #define unlink(path) pgunlink(path) #endif /* defined(WIN32) || defined(__CYGWIN__) */ /* * Win32 also doesn't have symlinks, but we can emulate them with * junction points on newer Win32 versions. * * Cygwin has its own symlinks which work on Win95/98/ME where * junction points don't, so use those instead. We have no way of * knowing what type of system Cygwin binaries will be run on. * Note: Some CYGWIN includes might #define WIN32. */ #if defined(WIN32) && !defined(__CYGWIN__) extern int pgsymlink(const char *oldpath, const char *newpath); extern int pgreadlink(const char *path, char *buf, size_t size); extern bool pgwin32_is_junction(const char *path); #define symlink(oldpath, newpath) pgsymlink(oldpath, newpath) #define readlink(path, buf, size) pgreadlink(path, buf, size) #endif extern bool rmtree(const char *path, bool rmtopdir); #if defined(WIN32) && !defined(__CYGWIN__) /* * open() and fopen() replacements to allow deletion of open files and * passing of other special options. */ #define O_DIRECT 0x80000000 extern int pgwin32_open(const char *, int,...); extern FILE *pgwin32_fopen(const char *, const char *); #define open(a,b,c) pgwin32_open(a,b,c) #define fopen(a,b) pgwin32_fopen(a,b) /* * Mingw-w64 headers #define popen and pclose to _popen and _pclose. We want * to use our popen wrapper, rather than plain _popen, so override that. For * consistency, use our version of pclose, too. */ #ifdef popen #undef popen #endif #ifdef pclose #undef pclose #endif /* * system() and popen() replacements to enclose the command in an extra * pair of quotes. */ extern int pgwin32_system(const char *command); extern FILE *pgwin32_popen(const char *command, const char *type); #define system(a) pgwin32_system(a) #define popen(a,b) pgwin32_popen(a,b) #define pclose(a) _pclose(a) /* New versions of MingW have gettimeofday, old mingw and msvc don't */ #ifndef HAVE_GETTIMEOFDAY /* Last parameter not used */ extern int gettimeofday(struct timeval *tp, struct timezone *tzp); #endif #else /* !WIN32 */ /* * Win32 requires a special close for sockets and pipes, while on Unix * close() does them all. */ #define closesocket close #endif /* WIN32 */ /* * On Windows, setvbuf() does not support _IOLBF mode, and interprets that * as _IOFBF. To add insult to injury, setvbuf(file, NULL, _IOFBF, 0) * crashes outright if "parameter validation" is enabled. Therefore, in * places where we'd like to select line-buffered mode, we fall back to * unbuffered mode instead on Windows. Always use PG_IOLBF not _IOLBF * directly in order to implement this behavior. */ #ifndef WIN32 #define PG_IOLBF _IOLBF #else #define PG_IOLBF _IONBF #endif /* * Default "extern" declarations or macro substitutes for library routines. * When necessary, these routines are provided by files in src/port/. */ /* Type to use with fseeko/ftello */ #ifndef WIN32 /* WIN32 is handled in port/win32_port.h */ #define pgoff_t off_t #endif extern double pg_erand48(unsigned short xseed[3]); extern long pg_lrand48(void); extern long pg_jrand48(unsigned short xseed[3]); extern void pg_srand48(long seed); #ifndef HAVE_FLS extern int fls(int mask); #endif #ifndef HAVE_GETPEEREID /* On Windows, Perl might have incompatible definitions of uid_t and gid_t. */ #ifndef PLPERL_HAVE_UID_GID extern int getpeereid(int sock, uid_t *uid, gid_t *gid); #endif #endif /* * Glibc doesn't use the builtin for clang due to a *gcc* bug in a version * newer than the gcc compatibility clang claims to have. This would cause a * *lot* of superfluous function calls, therefore revert when using clang. In * C++ there's issues with libc++ (not libstdc++), so disable as well. */ #if defined(__clang__) && !defined(__cplusplus) /* needs to be separate to not confuse other compilers */ #if __has_builtin(__builtin_isinf) /* need to include before, to avoid getting overwritten */ #include #undef isinf #define isinf __builtin_isinf #endif /* __has_builtin(isinf) */ #endif /* __clang__ && !__cplusplus */ #ifndef HAVE_EXPLICIT_BZERO extern void explicit_bzero(void *buf, size_t len); #endif #ifndef HAVE_STRTOF extern float strtof(const char *nptr, char **endptr); #endif #ifdef HAVE_BUGGY_STRTOF extern float pg_strtof(const char *nptr, char **endptr); #define strtof(a,b) (pg_strtof((a),(b))) #endif #ifndef HAVE_LINK extern int link(const char *src, const char *dst); #endif #ifndef HAVE_MKDTEMP extern char *mkdtemp(char *path); #endif #ifndef HAVE_INET_ATON #include #include extern int inet_aton(const char *cp, struct in_addr *addr); #endif /* * Windows and older Unix don't have pread(2) and pwrite(2). We have * replacement functions, but they have slightly different semantics so we'll * use a name with a pg_ prefix to avoid confusion. */ #ifdef HAVE_PREAD #define pg_pread pread #else extern ssize_t pg_pread(int fd, void *buf, size_t nbyte, off_t offset); #endif #ifdef HAVE_PWRITE #define pg_pwrite pwrite #else extern ssize_t pg_pwrite(int fd, const void *buf, size_t nbyte, off_t offset); #endif #if !HAVE_DECL_STRLCAT extern size_t strlcat(char *dst, const char *src, size_t siz); #endif #if !HAVE_DECL_STRLCPY extern size_t strlcpy(char *dst, const char *src, size_t siz); #endif #if !HAVE_DECL_STRNLEN extern size_t strnlen(const char *str, size_t maxlen); #endif #if !defined(HAVE_RANDOM) extern long random(void); #endif #ifndef HAVE_UNSETENV extern void unsetenv(const char *name); #endif #ifndef HAVE_SRANDOM extern void srandom(unsigned int seed); #endif #ifndef HAVE_DLOPEN extern void *dlopen(const char *file, int mode); extern void *dlsym(void *handle, const char *symbol); extern int dlclose(void *handle); extern char *dlerror(void); #endif /* * In some older systems, the RTLD_NOW flag isn't defined and the mode * argument to dlopen must always be 1. */ #if !HAVE_DECL_RTLD_NOW #define RTLD_NOW 1 #endif /* * The RTLD_GLOBAL flag is wanted if available, but it doesn't exist * everywhere. If it doesn't exist, set it to 0 so it has no effect. */ #if !HAVE_DECL_RTLD_GLOBAL #define RTLD_GLOBAL 0 #endif /* thread.h */ #ifndef WIN32 extern int pqGetpwuid(uid_t uid, struct passwd *resultbuf, char *buffer, size_t buflen, struct passwd **result); #endif extern int pqGethostbyname(const char *name, struct hostent *resultbuf, char *buffer, size_t buflen, struct hostent **result, int *herrno); extern void pg_qsort(void *base, size_t nel, size_t elsize, int (*cmp) (const void *, const void *)); extern int pg_qsort_strcmp(const void *a, const void *b); #define qsort(a,b,c,d) pg_qsort(a,b,c,d) typedef int (*qsort_arg_comparator) (const void *a, const void *b, void *arg); extern void qsort_arg(void *base, size_t nel, size_t elsize, qsort_arg_comparator cmp, void *arg); /* port/chklocale.c */ extern int pg_get_encoding_from_locale(const char *ctype, bool write_message); #if defined(WIN32) && !defined(FRONTEND) extern int pg_codepage_to_encoding(UINT cp); #endif /* port/inet_net_ntop.c */ extern char *pg_inet_net_ntop(int af, const void *src, int bits, char *dst, size_t size); /* port/pg_strong_random.c */ extern bool pg_strong_random(void *buf, size_t len); /* * pg_backend_random used to be a wrapper for pg_strong_random before * Postgres 12 for the backend code. */ #define pg_backend_random pg_strong_random /* port/pgcheckdir.c */ extern int pg_check_dir(const char *dir); /* port/pgmkdirp.c */ extern int pg_mkdir_p(char *path, int omode); /* port/pqsignal.c */ typedef void (*pqsigfunc) (int signo); extern pqsigfunc pqsignal(int signo, pqsigfunc func); /* port/quotes.c */ extern char *escape_single_quotes_ascii(const char *src); /* common/wait_error.c */ extern char *wait_result_to_str(int exit_status); extern bool wait_result_is_signal(int exit_status, int signum); extern bool wait_result_is_any_signal(int exit_status, bool include_command_not_found); #endif /* PG_PORT_H */ libpg_query-13-2.1.0/src/postgres/include/port/000077500000000000000000000000001413137616400213275ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/port/atomics.h000066400000000000000000000364221413137616400231460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * atomics.h * Atomic operations. * * Hardware and compiler dependent functions for manipulating memory * atomically and dealing with cache coherency. Used to implement locking * facilities and lockless algorithms/data structures. * * To bring up postgres on a platform/compiler at the very least * implementations for the following operations should be provided: * * pg_compiler_barrier(), pg_write_barrier(), pg_read_barrier() * * pg_atomic_compare_exchange_u32(), pg_atomic_fetch_add_u32() * * pg_atomic_test_set_flag(), pg_atomic_init_flag(), pg_atomic_clear_flag() * * PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY should be defined if appropriate. * * There exist generic, hardware independent, implementations for several * compilers which might be sufficient, although possibly not optimal, for a * new platform. If no such generic implementation is available spinlocks (or * even OS provided semaphores) will be used to implement the API. * * Implement _u64 atomics if and only if your platform can use them * efficiently (and obviously correctly). * * Use higher level functionality (lwlocks, spinlocks, heavyweight locks) * whenever possible. Writing correct code using these facilities is hard. * * For an introduction to using memory barriers within the PostgreSQL backend, * see src/backend/storage/lmgr/README.barrier * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/atomics.h * *------------------------------------------------------------------------- */ #ifndef ATOMICS_H #define ATOMICS_H #ifdef FRONTEND #error "atomics.h may not be included from frontend code" #endif #define INSIDE_ATOMICS_H #include /* * First a set of architecture specific files is included. * * These files can provide the full set of atomics or can do pretty much * nothing if all the compilers commonly used on these platforms provide * usable generics. * * Don't add an inline assembly of the actual atomic operations if all the * common implementations of your platform provide intrinsics. Intrinsics are * much easier to understand and potentially support more architectures. * * It will often make sense to define memory barrier semantics here, since * e.g. generic compiler intrinsics for x86 memory barriers can't know that * postgres doesn't need x86 read/write barriers do anything more than a * compiler barrier. * */ #if defined(__arm__) || defined(__arm) || \ defined(__aarch64__) || defined(__aarch64) #include "port/atomics/arch-arm.h" #elif defined(__i386__) || defined(__i386) || defined(__x86_64__) #include "port/atomics/arch-x86.h" #elif defined(__ia64__) || defined(__ia64) #include "port/atomics/arch-ia64.h" #elif defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__) #include "port/atomics/arch-ppc.h" #elif defined(__hppa) || defined(__hppa__) #include "port/atomics/arch-hppa.h" #endif /* * Compiler specific, but architecture independent implementations. * * Provide architecture independent implementations of the atomic * facilities. At the very least compiler barriers should be provided, but a * full implementation of * * pg_compiler_barrier(), pg_write_barrier(), pg_read_barrier() * * pg_atomic_compare_exchange_u32(), pg_atomic_fetch_add_u32() * using compiler intrinsics are a good idea. */ /* * gcc or compatible, including clang and icc. Exclude xlc. The ppc64le "IBM * XL C/C++ for Linux, V13.1.2" emulates gcc, but __sync_lock_test_and_set() * of one-byte types elicits SIGSEGV. That bug was gone by V13.1.5 (2016-12). */ #if (defined(__GNUC__) || defined(__INTEL_COMPILER)) && !(defined(__IBMC__) || defined(__IBMCPP__)) #include "port/atomics/generic-gcc.h" #elif defined(_MSC_VER) #include "port/atomics/generic-msvc.h" #elif defined(__hpux) && defined(__ia64) && !defined(__GNUC__) #include "port/atomics/generic-acc.h" #elif defined(__SUNPRO_C) && !defined(__GNUC__) #include "port/atomics/generic-sunpro.h" #else /* * Unsupported compiler, we'll likely use slower fallbacks... At least * compiler barriers should really be provided. */ #endif /* * Provide a full fallback of the pg_*_barrier(), pg_atomic**_flag and * pg_atomic_* APIs for platforms without sufficient spinlock and/or atomics * support. In the case of spinlock backed atomics the emulation is expected * to be efficient, although less so than native atomics support. */ #include "port/atomics/fallback.h" /* * Provide additional operations using supported infrastructure. These are * expected to be efficient if the underlying atomic operations are efficient. */ #include "port/atomics/generic.h" /* * pg_compiler_barrier - prevent the compiler from moving code across * * A compiler barrier need not (and preferably should not) emit any actual * machine code, but must act as an optimization fence: the compiler must not * reorder loads or stores to main memory around the barrier. However, the * CPU may still reorder loads or stores at runtime, if the architecture's * memory model permits this. */ #define pg_compiler_barrier() pg_compiler_barrier_impl() /* * pg_memory_barrier - prevent the CPU from reordering memory access * * A memory barrier must act as a compiler barrier, and in addition must * guarantee that all loads and stores issued prior to the barrier are * completed before any loads or stores issued after the barrier. Unless * loads and stores are totally ordered (which is not the case on most * architectures) this requires issuing some sort of memory fencing * instruction. */ #define pg_memory_barrier() pg_memory_barrier_impl() /* * pg_(read|write)_barrier - prevent the CPU from reordering memory access * * A read barrier must act as a compiler barrier, and in addition must * guarantee that any loads issued prior to the barrier are completed before * any loads issued after the barrier. Similarly, a write barrier acts * as a compiler barrier, and also orders stores. Read and write barriers * are thus weaker than a full memory barrier, but stronger than a compiler * barrier. In practice, on machines with strong memory ordering, read and * write barriers may require nothing more than a compiler barrier. */ #define pg_read_barrier() pg_read_barrier_impl() #define pg_write_barrier() pg_write_barrier_impl() /* * Spinloop delay - Allow CPU to relax in busy loops */ #define pg_spin_delay() pg_spin_delay_impl() /* * pg_atomic_init_flag - initialize atomic flag. * * No barrier semantics. */ static inline void pg_atomic_init_flag(volatile pg_atomic_flag *ptr) { pg_atomic_init_flag_impl(ptr); } /* * pg_atomic_test_set_flag - TAS() * * Returns true if the flag has successfully been set, false otherwise. * * Acquire (including read barrier) semantics. */ static inline bool pg_atomic_test_set_flag(volatile pg_atomic_flag *ptr) { return pg_atomic_test_set_flag_impl(ptr); } /* * pg_atomic_unlocked_test_flag - Check if the lock is free * * Returns true if the flag currently is not set, false otherwise. * * No barrier semantics. */ static inline bool pg_atomic_unlocked_test_flag(volatile pg_atomic_flag *ptr) { return pg_atomic_unlocked_test_flag_impl(ptr); } /* * pg_atomic_clear_flag - release lock set by TAS() * * Release (including write barrier) semantics. */ static inline void pg_atomic_clear_flag(volatile pg_atomic_flag *ptr) { pg_atomic_clear_flag_impl(ptr); } /* * pg_atomic_init_u32 - initialize atomic variable * * Has to be done before any concurrent usage.. * * No barrier semantics. */ static inline void pg_atomic_init_u32(volatile pg_atomic_uint32 *ptr, uint32 val) { AssertPointerAlignment(ptr, 4); pg_atomic_init_u32_impl(ptr, val); } /* * pg_atomic_read_u32 - unlocked read from atomic variable. * * The read is guaranteed to return a value as it has been written by this or * another process at some point in the past. There's however no cache * coherency interaction guaranteeing the value hasn't since been written to * again. * * No barrier semantics. */ static inline uint32 pg_atomic_read_u32(volatile pg_atomic_uint32 *ptr) { AssertPointerAlignment(ptr, 4); return pg_atomic_read_u32_impl(ptr); } /* * pg_atomic_write_u32 - write to atomic variable. * * The write is guaranteed to succeed as a whole, i.e. it's not possible to * observe a partial write for any reader. Note that this correctly interacts * with pg_atomic_compare_exchange_u32, in contrast to * pg_atomic_unlocked_write_u32(). * * No barrier semantics. */ static inline void pg_atomic_write_u32(volatile pg_atomic_uint32 *ptr, uint32 val) { AssertPointerAlignment(ptr, 4); pg_atomic_write_u32_impl(ptr, val); } /* * pg_atomic_unlocked_write_u32 - unlocked write to atomic variable. * * The write is guaranteed to succeed as a whole, i.e. it's not possible to * observe a partial write for any reader. But note that writing this way is * not guaranteed to correctly interact with read-modify-write operations like * pg_atomic_compare_exchange_u32. This should only be used in cases where * minor performance regressions due to atomics emulation are unacceptable. * * No barrier semantics. */ static inline void pg_atomic_unlocked_write_u32(volatile pg_atomic_uint32 *ptr, uint32 val) { AssertPointerAlignment(ptr, 4); pg_atomic_unlocked_write_u32_impl(ptr, val); } /* * pg_atomic_exchange_u32 - exchange newval with current value * * Returns the old value of 'ptr' before the swap. * * Full barrier semantics. */ static inline uint32 pg_atomic_exchange_u32(volatile pg_atomic_uint32 *ptr, uint32 newval) { AssertPointerAlignment(ptr, 4); return pg_atomic_exchange_u32_impl(ptr, newval); } /* * pg_atomic_compare_exchange_u32 - CAS operation * * Atomically compare the current value of ptr with *expected and store newval * iff ptr and *expected have the same value. The current value of *ptr will * always be stored in *expected. * * Return true if values have been exchanged, false otherwise. * * Full barrier semantics. */ static inline bool pg_atomic_compare_exchange_u32(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval) { AssertPointerAlignment(ptr, 4); AssertPointerAlignment(expected, 4); return pg_atomic_compare_exchange_u32_impl(ptr, expected, newval); } /* * pg_atomic_fetch_add_u32 - atomically add to variable * * Returns the value of ptr before the arithmetic operation. * * Full barrier semantics. */ static inline uint32 pg_atomic_fetch_add_u32(volatile pg_atomic_uint32 *ptr, int32 add_) { AssertPointerAlignment(ptr, 4); return pg_atomic_fetch_add_u32_impl(ptr, add_); } /* * pg_atomic_fetch_sub_u32 - atomically subtract from variable * * Returns the value of ptr before the arithmetic operation. Note that sub_ * may not be INT_MIN due to platform limitations. * * Full barrier semantics. */ static inline uint32 pg_atomic_fetch_sub_u32(volatile pg_atomic_uint32 *ptr, int32 sub_) { AssertPointerAlignment(ptr, 4); Assert(sub_ != INT_MIN); return pg_atomic_fetch_sub_u32_impl(ptr, sub_); } /* * pg_atomic_fetch_and_u32 - atomically bit-and and_ with variable * * Returns the value of ptr before the arithmetic operation. * * Full barrier semantics. */ static inline uint32 pg_atomic_fetch_and_u32(volatile pg_atomic_uint32 *ptr, uint32 and_) { AssertPointerAlignment(ptr, 4); return pg_atomic_fetch_and_u32_impl(ptr, and_); } /* * pg_atomic_fetch_or_u32 - atomically bit-or or_ with variable * * Returns the value of ptr before the arithmetic operation. * * Full barrier semantics. */ static inline uint32 pg_atomic_fetch_or_u32(volatile pg_atomic_uint32 *ptr, uint32 or_) { AssertPointerAlignment(ptr, 4); return pg_atomic_fetch_or_u32_impl(ptr, or_); } /* * pg_atomic_add_fetch_u32 - atomically add to variable * * Returns the value of ptr after the arithmetic operation. * * Full barrier semantics. */ static inline uint32 pg_atomic_add_fetch_u32(volatile pg_atomic_uint32 *ptr, int32 add_) { AssertPointerAlignment(ptr, 4); return pg_atomic_add_fetch_u32_impl(ptr, add_); } /* * pg_atomic_sub_fetch_u32 - atomically subtract from variable * * Returns the value of ptr after the arithmetic operation. Note that sub_ may * not be INT_MIN due to platform limitations. * * Full barrier semantics. */ static inline uint32 pg_atomic_sub_fetch_u32(volatile pg_atomic_uint32 *ptr, int32 sub_) { AssertPointerAlignment(ptr, 4); Assert(sub_ != INT_MIN); return pg_atomic_sub_fetch_u32_impl(ptr, sub_); } /* ---- * The 64 bit operations have the same semantics as their 32bit counterparts * if they are available. Check the corresponding 32bit function for * documentation. * ---- */ static inline void pg_atomic_init_u64(volatile pg_atomic_uint64 *ptr, uint64 val) { /* * Can't necessarily enforce alignment - and don't need it - when using * the spinlock based fallback implementation. Therefore only assert when * not using it. */ #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif pg_atomic_init_u64_impl(ptr, val); } static inline uint64 pg_atomic_read_u64(volatile pg_atomic_uint64 *ptr) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_read_u64_impl(ptr); } static inline void pg_atomic_write_u64(volatile pg_atomic_uint64 *ptr, uint64 val) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif pg_atomic_write_u64_impl(ptr, val); } static inline uint64 pg_atomic_exchange_u64(volatile pg_atomic_uint64 *ptr, uint64 newval) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_exchange_u64_impl(ptr, newval); } static inline bool pg_atomic_compare_exchange_u64(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); AssertPointerAlignment(expected, 8); #endif return pg_atomic_compare_exchange_u64_impl(ptr, expected, newval); } static inline uint64 pg_atomic_fetch_add_u64(volatile pg_atomic_uint64 *ptr, int64 add_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_fetch_add_u64_impl(ptr, add_); } static inline uint64 pg_atomic_fetch_sub_u64(volatile pg_atomic_uint64 *ptr, int64 sub_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif Assert(sub_ != PG_INT64_MIN); return pg_atomic_fetch_sub_u64_impl(ptr, sub_); } static inline uint64 pg_atomic_fetch_and_u64(volatile pg_atomic_uint64 *ptr, uint64 and_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_fetch_and_u64_impl(ptr, and_); } static inline uint64 pg_atomic_fetch_or_u64(volatile pg_atomic_uint64 *ptr, uint64 or_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_fetch_or_u64_impl(ptr, or_); } static inline uint64 pg_atomic_add_fetch_u64(volatile pg_atomic_uint64 *ptr, int64 add_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif return pg_atomic_add_fetch_u64_impl(ptr, add_); } static inline uint64 pg_atomic_sub_fetch_u64(volatile pg_atomic_uint64 *ptr, int64 sub_) { #ifndef PG_HAVE_ATOMIC_U64_SIMULATION AssertPointerAlignment(ptr, 8); #endif Assert(sub_ != PG_INT64_MIN); return pg_atomic_sub_fetch_u64_impl(ptr, sub_); } #undef INSIDE_ATOMICS_H #endif /* ATOMICS_H */ libpg_query-13-2.1.0/src/postgres/include/port/atomics/000077500000000000000000000000001413137616400227665ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/port/atomics/arch-arm.h000066400000000000000000000014311413137616400246300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * arch-arm.h * Atomic operations considerations specific to ARM * * Portions Copyright (c) 2013-2020, PostgreSQL Global Development Group * * NOTES: * * src/include/port/atomics/arch-arm.h * *------------------------------------------------------------------------- */ /* intentionally no include guards, should only be included by atomics.h */ #ifndef INSIDE_ATOMICS_H #error "should be included via atomics.h" #endif /* * 64 bit atomics on ARM32 are implemented using kernel fallbacks and thus * might be slow, so disable entirely. On ARM64 that problem doesn't exist. */ #if !defined(__aarch64__) && !defined(__aarch64) #define PG_DISABLE_64_BIT_ATOMICS #endif /* __aarch64__ || __aarch64 */ libpg_query-13-2.1.0/src/postgres/include/port/atomics/arch-ppc.h000066400000000000000000000156511413137616400246440ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * arch-ppc.h * Atomic operations considerations specific to PowerPC * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES: * * src/include/port/atomics/arch-ppc.h * *------------------------------------------------------------------------- */ #if defined(__GNUC__) /* * lwsync orders loads with respect to each other, and similarly with stores. * But a load can be performed before a subsequent store, so sync must be used * for a full memory barrier. */ #define pg_memory_barrier_impl() __asm__ __volatile__ ("sync" : : : "memory") #define pg_read_barrier_impl() __asm__ __volatile__ ("lwsync" : : : "memory") #define pg_write_barrier_impl() __asm__ __volatile__ ("lwsync" : : : "memory") #endif #define PG_HAVE_ATOMIC_U32_SUPPORT typedef struct pg_atomic_uint32 { volatile uint32 value; } pg_atomic_uint32; /* 64bit atomics are only supported in 64bit mode */ #if SIZEOF_VOID_P >= 8 #define PG_HAVE_ATOMIC_U64_SUPPORT typedef struct pg_atomic_uint64 { volatile uint64 value pg_attribute_aligned(8); } pg_atomic_uint64; #endif /* * This mimics gcc __atomic_compare_exchange_n(..., __ATOMIC_SEQ_CST), but * code generation differs at the end. __atomic_compare_exchange_n(): * 100: isync * 104: mfcr r3 * 108: rlwinm r3,r3,3,31,31 * 10c: bne 120 <.eb+0x10> * 110: clrldi r3,r3,63 * 114: addi r1,r1,112 * 118: blr * 11c: nop * 120: clrldi r3,r3,63 * 124: stw r9,0(r4) * 128: addi r1,r1,112 * 12c: blr * * This: * f0: isync * f4: mfcr r9 * f8: rldicl. r3,r9,35,63 * fc: bne 104 <.eb> * 100: stw r10,0(r4) * 104: addi r1,r1,112 * 108: blr * * This implementation may or may not have materially different performance. * It's not exploiting the fact that cr0 still holds the relevant comparison * bits, set during the __asm__. One could fix that by moving more code into * the __asm__. (That would remove the freedom to eliminate dead stores when * the caller ignores "expected", but few callers do.) * * Recognizing constant "newval" would be superfluous, because there's no * immediate-operand version of stwcx. */ #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32 static inline bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval) { uint32 found; uint32 condition_register; bool ret; #ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P if (__builtin_constant_p(*expected) && (int32) *expected <= PG_INT16_MAX && (int32) *expected >= PG_INT16_MIN) __asm__ __volatile__( " sync \n" " lwarx %0,0,%5 \n" " cmpwi %0,%3 \n" " bne $+12 \n" /* branch to isync */ " stwcx. %4,0,%5 \n" " bne $-16 \n" /* branch to lwarx */ " isync \n" " mfcr %1 \n" : "=&r"(found), "=r"(condition_register), "+m"(ptr->value) : "i"(*expected), "r"(newval), "r"(&ptr->value) : "memory", "cc"); else #endif __asm__ __volatile__( " sync \n" " lwarx %0,0,%5 \n" " cmpw %0,%3 \n" " bne $+12 \n" /* branch to isync */ " stwcx. %4,0,%5 \n" " bne $-16 \n" /* branch to lwarx */ " isync \n" " mfcr %1 \n" : "=&r"(found), "=r"(condition_register), "+m"(ptr->value) : "r"(*expected), "r"(newval), "r"(&ptr->value) : "memory", "cc"); ret = (condition_register >> 29) & 1; /* test eq bit of cr0 */ if (!ret) *expected = found; return ret; } /* * This mirrors gcc __sync_fetch_and_add(). * * Like tas(), use constraint "=&b" to avoid allocating r0. */ #define PG_HAVE_ATOMIC_FETCH_ADD_U32 static inline uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { uint32 _t; uint32 res; #ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P if (__builtin_constant_p(add_) && add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN) __asm__ __volatile__( " sync \n" " lwarx %1,0,%4 \n" " addi %0,%1,%3 \n" " stwcx. %0,0,%4 \n" " bne $-12 \n" /* branch to lwarx */ " isync \n" : "=&r"(_t), "=&b"(res), "+m"(ptr->value) : "i"(add_), "r"(&ptr->value) : "memory", "cc"); else #endif __asm__ __volatile__( " sync \n" " lwarx %1,0,%4 \n" " add %0,%1,%3 \n" " stwcx. %0,0,%4 \n" " bne $-12 \n" /* branch to lwarx */ " isync \n" : "=&r"(_t), "=&r"(res), "+m"(ptr->value) : "r"(add_), "r"(&ptr->value) : "memory", "cc"); return res; } #ifdef PG_HAVE_ATOMIC_U64_SUPPORT #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 static inline bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval) { uint64 found; uint32 condition_register; bool ret; /* Like u32, but s/lwarx/ldarx/; s/stwcx/stdcx/; s/cmpw/cmpd/ */ #ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P if (__builtin_constant_p(*expected) && (int64) *expected <= PG_INT16_MAX && (int64) *expected >= PG_INT16_MIN) __asm__ __volatile__( " sync \n" " ldarx %0,0,%5 \n" " cmpdi %0,%3 \n" " bne $+12 \n" /* branch to isync */ " stdcx. %4,0,%5 \n" " bne $-16 \n" /* branch to ldarx */ " isync \n" " mfcr %1 \n" : "=&r"(found), "=r"(condition_register), "+m"(ptr->value) : "i"(*expected), "r"(newval), "r"(&ptr->value) : "memory", "cc"); else #endif __asm__ __volatile__( " sync \n" " ldarx %0,0,%5 \n" " cmpd %0,%3 \n" " bne $+12 \n" /* branch to isync */ " stdcx. %4,0,%5 \n" " bne $-16 \n" /* branch to ldarx */ " isync \n" " mfcr %1 \n" : "=&r"(found), "=r"(condition_register), "+m"(ptr->value) : "r"(*expected), "r"(newval), "r"(&ptr->value) : "memory", "cc"); ret = (condition_register >> 29) & 1; /* test eq bit of cr0 */ if (!ret) *expected = found; return ret; } #define PG_HAVE_ATOMIC_FETCH_ADD_U64 static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { uint64 _t; uint64 res; /* Like u32, but s/lwarx/ldarx/; s/stwcx/stdcx/ */ #ifdef HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P if (__builtin_constant_p(add_) && add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN) __asm__ __volatile__( " sync \n" " ldarx %1,0,%4 \n" " addi %0,%1,%3 \n" " stdcx. %0,0,%4 \n" " bne $-12 \n" /* branch to ldarx */ " isync \n" : "=&r"(_t), "=&b"(res), "+m"(ptr->value) : "i"(add_), "r"(&ptr->value) : "memory", "cc"); else #endif __asm__ __volatile__( " sync \n" " ldarx %1,0,%4 \n" " add %0,%1,%3 \n" " stdcx. %0,0,%4 \n" " bne $-12 \n" /* branch to ldarx */ " isync \n" : "=&r"(_t), "=&r"(res), "+m"(ptr->value) : "r"(add_), "r"(&ptr->value) : "memory", "cc"); return res; } #endif /* PG_HAVE_ATOMIC_U64_SUPPORT */ /* per architecture manual doubleword accesses have single copy atomicity */ #define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY libpg_query-13-2.1.0/src/postgres/include/port/atomics/arch-x86.h000066400000000000000000000162751413137616400245120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * arch-x86.h * Atomic operations considerations specific to intel x86 * * Note that we actually require a 486 upwards because the 386 doesn't have * support for xadd and cmpxchg. Given that the 386 isn't supported anywhere * anymore that's not much of a restriction luckily. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES: * * src/include/port/atomics/arch-x86.h * *------------------------------------------------------------------------- */ /* * Both 32 and 64 bit x86 do not allow loads to be reordered with other loads, * or stores to be reordered with other stores, but a load can be performed * before a subsequent store. * * Technically, some x86-ish chips support uncached memory access and/or * special instructions that are weakly ordered. In those cases we'd need * the read and write barriers to be lfence and sfence. But since we don't * do those things, a compiler barrier should be enough. * * "lock; addl" has worked for longer than "mfence". It's also rumored to be * faster in many scenarios. */ #if defined(__GNUC__) || defined(__INTEL_COMPILER) #if defined(__i386__) || defined(__i386) #define pg_memory_barrier_impl() \ __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory", "cc") #elif defined(__x86_64__) #define pg_memory_barrier_impl() \ __asm__ __volatile__ ("lock; addl $0,0(%%rsp)" : : : "memory", "cc") #endif #endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */ #define pg_read_barrier_impl() pg_compiler_barrier_impl() #define pg_write_barrier_impl() pg_compiler_barrier_impl() /* * Provide implementation for atomics using inline assembly on x86 gcc. It's * nice to support older gcc's and the compare/exchange implementation here is * actually more efficient than the * __sync variant. */ #if defined(HAVE_ATOMICS) #if defined(__GNUC__) || defined(__INTEL_COMPILER) #define PG_HAVE_ATOMIC_FLAG_SUPPORT typedef struct pg_atomic_flag { volatile char value; } pg_atomic_flag; #define PG_HAVE_ATOMIC_U32_SUPPORT typedef struct pg_atomic_uint32 { volatile uint32 value; } pg_atomic_uint32; /* * It's too complicated to write inline asm for 64bit types on 32bit and the * 486 can't do it anyway. */ #ifdef __x86_64__ #define PG_HAVE_ATOMIC_U64_SUPPORT typedef struct pg_atomic_uint64 { /* alignment guaranteed due to being on a 64bit platform */ volatile uint64 value; } pg_atomic_uint64; #endif /* __x86_64__ */ #endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */ #endif /* defined(HAVE_ATOMICS) */ #if !defined(PG_HAVE_SPIN_DELAY) /* * This sequence is equivalent to the PAUSE instruction ("rep" is * ignored by old IA32 processors if the following instruction is * not a string operation); the IA-32 Architecture Software * Developer's Manual, Vol. 3, Section 7.7.2 describes why using * PAUSE in the inner loop of a spin lock is necessary for good * performance: * * The PAUSE instruction improves the performance of IA-32 * processors supporting Hyper-Threading Technology when * executing spin-wait loops and other routines where one * thread is accessing a shared lock or semaphore in a tight * polling loop. When executing a spin-wait loop, the * processor can suffer a severe performance penalty when * exiting the loop because it detects a possible memory order * violation and flushes the core processor's pipeline. The * PAUSE instruction provides a hint to the processor that the * code sequence is a spin-wait loop. The processor uses this * hint to avoid the memory order violation and prevent the * pipeline flush. In addition, the PAUSE instruction * de-pipelines the spin-wait loop to prevent it from * consuming execution resources excessively. */ #if defined(__GNUC__) || defined(__INTEL_COMPILER) #define PG_HAVE_SPIN_DELAY static __inline__ void pg_spin_delay_impl(void) { __asm__ __volatile__(" rep; nop \n"); } #elif defined(_MSC_VER) && defined(__x86_64__) #define PG_HAVE_SPIN_DELAY static __forceinline void pg_spin_delay_impl(void) { _mm_pause(); } #elif defined(_MSC_VER) #define PG_HAVE_SPIN_DELAY static __forceinline void pg_spin_delay_impl(void) { /* See comment for gcc code. Same code, MASM syntax */ __asm rep nop; } #endif #endif /* !defined(PG_HAVE_SPIN_DELAY) */ #if defined(HAVE_ATOMICS) #if defined(__GNUC__) || defined(__INTEL_COMPILER) #define PG_HAVE_ATOMIC_TEST_SET_FLAG static inline bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr) { register char _res = 1; __asm__ __volatile__( " lock \n" " xchgb %0,%1 \n" : "+q"(_res), "+m"(ptr->value) : : "memory"); return _res == 0; } #define PG_HAVE_ATOMIC_CLEAR_FLAG static inline void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr) { /* * On a TSO architecture like x86 it's sufficient to use a compiler * barrier to achieve release semantics. */ __asm__ __volatile__("" ::: "memory"); ptr->value = 0; } #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32 static inline bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval) { char ret; /* * Perform cmpxchg and use the zero flag which it implicitly sets when * equal to measure the success. */ __asm__ __volatile__( " lock \n" " cmpxchgl %4,%5 \n" " setz %2 \n" : "=a" (*expected), "=m"(ptr->value), "=q" (ret) : "a" (*expected), "r" (newval), "m"(ptr->value) : "memory", "cc"); return (bool) ret; } #define PG_HAVE_ATOMIC_FETCH_ADD_U32 static inline uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { uint32 res; __asm__ __volatile__( " lock \n" " xaddl %0,%1 \n" : "=q"(res), "=m"(ptr->value) : "0" (add_), "m"(ptr->value) : "memory", "cc"); return res; } #ifdef __x86_64__ #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 static inline bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval) { char ret; /* * Perform cmpxchg and use the zero flag which it implicitly sets when * equal to measure the success. */ __asm__ __volatile__( " lock \n" " cmpxchgq %4,%5 \n" " setz %2 \n" : "=a" (*expected), "=m"(ptr->value), "=q" (ret) : "a" (*expected), "r" (newval), "m"(ptr->value) : "memory", "cc"); return (bool) ret; } #define PG_HAVE_ATOMIC_FETCH_ADD_U64 static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { uint64 res; __asm__ __volatile__( " lock \n" " xaddq %0,%1 \n" : "=q"(res), "=m"(ptr->value) : "0" (add_), "m"(ptr->value) : "memory", "cc"); return res; } #endif /* __x86_64__ */ #endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */ /* * 8 byte reads / writes have single-copy atomicity on 32 bit x86 platforms * since at least the 586. As well as on all x86-64 cpus. */ #if defined(__i568__) || defined(__i668__) || /* gcc i586+ */ \ (defined(_M_IX86) && _M_IX86 >= 500) || /* msvc i586+ */ \ defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) /* gcc, sunpro, msvc */ #define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY #endif /* 8 byte single-copy atomicity */ #endif /* HAVE_ATOMICS */ libpg_query-13-2.1.0/src/postgres/include/port/atomics/fallback.h000066400000000000000000000130251413137616400246770ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fallback.h * Fallback for platforms without spinlock and/or atomics support. Slower * than native atomics support, but not unusably slow. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/atomics/fallback.h * *------------------------------------------------------------------------- */ /* intentionally no include guards, should only be included by atomics.h */ #ifndef INSIDE_ATOMICS_H # error "should be included via atomics.h" #endif #ifndef pg_memory_barrier_impl /* * If we have no memory barrier implementation for this architecture, we * fall back to acquiring and releasing a spinlock. This might, in turn, * fall back to the semaphore-based spinlock implementation, which will be * amazingly slow. * * It's not self-evident that every possible legal implementation of a * spinlock acquire-and-release would be equivalent to a full memory barrier. * For example, I'm not sure that Itanium's acq and rel add up to a full * fence. But all of our actual implementations seem OK in this regard. */ #define PG_HAVE_MEMORY_BARRIER_EMULATION extern void pg_spinlock_barrier(void); #define pg_memory_barrier_impl pg_spinlock_barrier #endif #ifndef pg_compiler_barrier_impl /* * If the compiler/arch combination does not provide compiler barriers, * provide a fallback. The fallback simply consists of a function call into * an externally defined function. That should guarantee compiler barrier * semantics except for compilers that do inter translation unit/global * optimization - those better provide an actual compiler barrier. * * A native compiler barrier for sure is a lot faster than this... */ #define PG_HAVE_COMPILER_BARRIER_EMULATION extern void pg_extern_compiler_barrier(void); #define pg_compiler_barrier_impl pg_extern_compiler_barrier #endif /* * If we have atomics implementation for this platform, fall back to providing * the atomics API using a spinlock to protect the internal state. Possibly * the spinlock implementation uses semaphores internally... * * We have to be a bit careful here, as it's not guaranteed that atomic * variables are mapped to the same address in every process (e.g. dynamic * shared memory segments). We can't just hash the address and use that to map * to a spinlock. Instead assign a spinlock on initialization of the atomic * variable. */ #if !defined(PG_HAVE_ATOMIC_FLAG_SUPPORT) && !defined(PG_HAVE_ATOMIC_U32_SUPPORT) #define PG_HAVE_ATOMIC_FLAG_SIMULATION #define PG_HAVE_ATOMIC_FLAG_SUPPORT typedef struct pg_atomic_flag { /* * To avoid circular includes we can't use s_lock as a type here. Instead * just reserve enough space for all spinlock types. Some platforms would * be content with just one byte instead of 4, but that's not too much * waste. */ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */ int sema[4]; #else int sema; #endif volatile bool value; } pg_atomic_flag; #endif /* PG_HAVE_ATOMIC_FLAG_SUPPORT */ #if !defined(PG_HAVE_ATOMIC_U32_SUPPORT) #define PG_HAVE_ATOMIC_U32_SIMULATION #define PG_HAVE_ATOMIC_U32_SUPPORT typedef struct pg_atomic_uint32 { /* Check pg_atomic_flag's definition above for an explanation */ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */ int sema[4]; #else int sema; #endif volatile uint32 value; } pg_atomic_uint32; #endif /* PG_HAVE_ATOMIC_U32_SUPPORT */ #if !defined(PG_HAVE_ATOMIC_U64_SUPPORT) #define PG_HAVE_ATOMIC_U64_SIMULATION #define PG_HAVE_ATOMIC_U64_SUPPORT typedef struct pg_atomic_uint64 { /* Check pg_atomic_flag's definition above for an explanation */ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */ int sema[4]; #else int sema; #endif volatile uint64 value; } pg_atomic_uint64; #endif /* PG_HAVE_ATOMIC_U64_SUPPORT */ #ifdef PG_HAVE_ATOMIC_FLAG_SIMULATION #define PG_HAVE_ATOMIC_INIT_FLAG extern void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr); #define PG_HAVE_ATOMIC_TEST_SET_FLAG extern bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr); #define PG_HAVE_ATOMIC_CLEAR_FLAG extern void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr); #define PG_HAVE_ATOMIC_UNLOCKED_TEST_FLAG extern bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr); #endif /* PG_HAVE_ATOMIC_FLAG_SIMULATION */ #ifdef PG_HAVE_ATOMIC_U32_SIMULATION #define PG_HAVE_ATOMIC_INIT_U32 extern void pg_atomic_init_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val_); #define PG_HAVE_ATOMIC_WRITE_U32 extern void pg_atomic_write_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val); #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32 extern bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval); #define PG_HAVE_ATOMIC_FETCH_ADD_U32 extern uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_); #endif /* PG_HAVE_ATOMIC_U32_SIMULATION */ #ifdef PG_HAVE_ATOMIC_U64_SIMULATION #define PG_HAVE_ATOMIC_INIT_U64 extern void pg_atomic_init_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val_); #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 extern bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval); #define PG_HAVE_ATOMIC_FETCH_ADD_U64 extern uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_); #endif /* PG_HAVE_ATOMIC_U64_SIMULATION */ libpg_query-13-2.1.0/src/postgres/include/port/atomics/generic-gcc.h000066400000000000000000000212031413137616400253030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * generic-gcc.h * Atomic operations, implemented using gcc (or compatible) intrinsics. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES: * * Documentation: * * Legacy __sync Built-in Functions for Atomic Memory Access * http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/_005f_005fsync-Builtins.html * * Built-in functions for memory model aware atomic operations * http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/_005f_005fatomic-Builtins.html * * src/include/port/atomics/generic-gcc.h * *------------------------------------------------------------------------- */ /* intentionally no include guards, should only be included by atomics.h */ #ifndef INSIDE_ATOMICS_H #error "should be included via atomics.h" #endif /* * An empty asm block should be a sufficient compiler barrier. */ #define pg_compiler_barrier_impl() __asm__ __volatile__("" ::: "memory") /* * If we're on GCC 4.1.0 or higher, we should be able to get a memory barrier * out of this compiler built-in. But we prefer to rely on platform specific * definitions where possible, and use this only as a fallback. */ #if !defined(pg_memory_barrier_impl) # if defined(HAVE_GCC__ATOMIC_INT32_CAS) # define pg_memory_barrier_impl() __atomic_thread_fence(__ATOMIC_SEQ_CST) # elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) # define pg_memory_barrier_impl() __sync_synchronize() # endif #endif /* !defined(pg_memory_barrier_impl) */ #if !defined(pg_read_barrier_impl) && defined(HAVE_GCC__ATOMIC_INT32_CAS) /* acquire semantics include read barrier semantics */ # define pg_read_barrier_impl() __atomic_thread_fence(__ATOMIC_ACQUIRE) #endif #if !defined(pg_write_barrier_impl) && defined(HAVE_GCC__ATOMIC_INT32_CAS) /* release semantics include write barrier semantics */ # define pg_write_barrier_impl() __atomic_thread_fence(__ATOMIC_RELEASE) #endif #ifdef HAVE_ATOMICS /* generic gcc based atomic flag implementation */ #if !defined(PG_HAVE_ATOMIC_FLAG_SUPPORT) \ && (defined(HAVE_GCC__SYNC_INT32_TAS) || defined(HAVE_GCC__SYNC_CHAR_TAS)) #define PG_HAVE_ATOMIC_FLAG_SUPPORT typedef struct pg_atomic_flag { /* * If we have a choice, use int-width TAS, because that is more efficient * and/or more reliably implemented on most non-Intel platforms. (Note * that this code isn't used on x86[_64]; see arch-x86.h for that.) */ #ifdef HAVE_GCC__SYNC_INT32_TAS volatile int value; #else volatile char value; #endif } pg_atomic_flag; #endif /* !ATOMIC_FLAG_SUPPORT && SYNC_INT32_TAS */ /* generic gcc based atomic uint32 implementation */ #if !defined(PG_HAVE_ATOMIC_U32_SUPPORT) \ && (defined(HAVE_GCC__ATOMIC_INT32_CAS) || defined(HAVE_GCC__SYNC_INT32_CAS)) #define PG_HAVE_ATOMIC_U32_SUPPORT typedef struct pg_atomic_uint32 { volatile uint32 value; } pg_atomic_uint32; #endif /* defined(HAVE_GCC__ATOMIC_INT32_CAS) || defined(HAVE_GCC__SYNC_INT32_CAS) */ /* generic gcc based atomic uint64 implementation */ #if !defined(PG_HAVE_ATOMIC_U64_SUPPORT) \ && !defined(PG_DISABLE_64_BIT_ATOMICS) \ && (defined(HAVE_GCC__ATOMIC_INT64_CAS) || defined(HAVE_GCC__SYNC_INT64_CAS)) #define PG_HAVE_ATOMIC_U64_SUPPORT typedef struct pg_atomic_uint64 { volatile uint64 value pg_attribute_aligned(8); } pg_atomic_uint64; #endif /* defined(HAVE_GCC__ATOMIC_INT64_CAS) || defined(HAVE_GCC__SYNC_INT64_CAS) */ #ifdef PG_HAVE_ATOMIC_FLAG_SUPPORT #if defined(HAVE_GCC__SYNC_CHAR_TAS) || defined(HAVE_GCC__SYNC_INT32_TAS) #ifndef PG_HAVE_ATOMIC_TEST_SET_FLAG #define PG_HAVE_ATOMIC_TEST_SET_FLAG static inline bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr) { /* NB: only an acquire barrier, not a full one */ /* some platform only support a 1 here */ return __sync_lock_test_and_set(&ptr->value, 1) == 0; } #endif #endif /* defined(HAVE_GCC__SYNC_*_TAS) */ #ifndef PG_HAVE_ATOMIC_UNLOCKED_TEST_FLAG #define PG_HAVE_ATOMIC_UNLOCKED_TEST_FLAG static inline bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr) { return ptr->value == 0; } #endif #ifndef PG_HAVE_ATOMIC_CLEAR_FLAG #define PG_HAVE_ATOMIC_CLEAR_FLAG static inline void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr) { __sync_lock_release(&ptr->value); } #endif #ifndef PG_HAVE_ATOMIC_INIT_FLAG #define PG_HAVE_ATOMIC_INIT_FLAG static inline void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr) { pg_atomic_clear_flag_impl(ptr); } #endif #endif /* defined(PG_HAVE_ATOMIC_FLAG_SUPPORT) */ /* prefer __atomic, it has a better API */ #if !defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) && defined(HAVE_GCC__ATOMIC_INT32_CAS) #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32 static inline bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval) { /* FIXME: we can probably use a lower consistency model */ return __atomic_compare_exchange_n(&ptr->value, expected, newval, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); } #endif #if !defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32 static inline bool pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval) { bool ret; uint32 current; current = __sync_val_compare_and_swap(&ptr->value, *expected, newval); ret = current == *expected; *expected = current; return ret; } #endif /* if we have 32-bit __sync_val_compare_and_swap, assume we have these too: */ #if !defined(PG_HAVE_ATOMIC_FETCH_ADD_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) #define PG_HAVE_ATOMIC_FETCH_ADD_U32 static inline uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { return __sync_fetch_and_add(&ptr->value, add_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) #define PG_HAVE_ATOMIC_FETCH_SUB_U32 static inline uint32 pg_atomic_fetch_sub_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) { return __sync_fetch_and_sub(&ptr->value, sub_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_AND_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) #define PG_HAVE_ATOMIC_FETCH_AND_U32 static inline uint32 pg_atomic_fetch_and_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 and_) { return __sync_fetch_and_and(&ptr->value, and_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_OR_U32) && defined(HAVE_GCC__SYNC_INT32_CAS) #define PG_HAVE_ATOMIC_FETCH_OR_U32 static inline uint32 pg_atomic_fetch_or_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 or_) { return __sync_fetch_and_or(&ptr->value, or_); } #endif #if !defined(PG_DISABLE_64_BIT_ATOMICS) #if !defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) && defined(HAVE_GCC__ATOMIC_INT64_CAS) #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 static inline bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval) { return __atomic_compare_exchange_n(&ptr->value, expected, newval, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); } #endif #if !defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64 static inline bool pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 *expected, uint64 newval) { bool ret; uint64 current; current = __sync_val_compare_and_swap(&ptr->value, *expected, newval); ret = current == *expected; *expected = current; return ret; } #endif /* if we have 64-bit __sync_val_compare_and_swap, assume we have these too: */ #if !defined(PG_HAVE_ATOMIC_FETCH_ADD_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_FETCH_ADD_U64 static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { return __sync_fetch_and_add(&ptr->value, add_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_SUB_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_FETCH_SUB_U64 static inline uint64 pg_atomic_fetch_sub_u64_impl(volatile pg_atomic_uint64 *ptr, int64 sub_) { return __sync_fetch_and_sub(&ptr->value, sub_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_AND_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_FETCH_AND_U64 static inline uint64 pg_atomic_fetch_and_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 and_) { return __sync_fetch_and_and(&ptr->value, and_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_OR_U64) && defined(HAVE_GCC__SYNC_INT64_CAS) #define PG_HAVE_ATOMIC_FETCH_OR_U64 static inline uint64 pg_atomic_fetch_or_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 or_) { return __sync_fetch_and_or(&ptr->value, or_); } #endif #endif /* !defined(PG_DISABLE_64_BIT_ATOMICS) */ #endif /* defined(HAVE_ATOMICS) */ libpg_query-13-2.1.0/src/postgres/include/port/atomics/generic.h000066400000000000000000000255111413137616400245570ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * generic.h * Implement higher level operations based on some lower level atomic * operations. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/atomics/generic.h * *------------------------------------------------------------------------- */ /* intentionally no include guards, should only be included by atomics.h */ #ifndef INSIDE_ATOMICS_H # error "should be included via atomics.h" #endif /* * If read or write barriers are undefined, we upgrade them to full memory * barriers. */ #if !defined(pg_read_barrier_impl) # define pg_read_barrier_impl pg_memory_barrier_impl #endif #if !defined(pg_write_barrier_impl) # define pg_write_barrier_impl pg_memory_barrier_impl #endif #ifndef PG_HAVE_SPIN_DELAY #define PG_HAVE_SPIN_DELAY #define pg_spin_delay_impl() ((void)0) #endif /* provide fallback */ #if !defined(PG_HAVE_ATOMIC_FLAG_SUPPORT) && defined(PG_HAVE_ATOMIC_U32_SUPPORT) #define PG_HAVE_ATOMIC_FLAG_SUPPORT typedef pg_atomic_uint32 pg_atomic_flag; #endif #ifndef PG_HAVE_ATOMIC_READ_U32 #define PG_HAVE_ATOMIC_READ_U32 static inline uint32 pg_atomic_read_u32_impl(volatile pg_atomic_uint32 *ptr) { return ptr->value; } #endif #ifndef PG_HAVE_ATOMIC_WRITE_U32 #define PG_HAVE_ATOMIC_WRITE_U32 static inline void pg_atomic_write_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val) { ptr->value = val; } #endif #ifndef PG_HAVE_ATOMIC_UNLOCKED_WRITE_U32 #define PG_HAVE_ATOMIC_UNLOCKED_WRITE_U32 static inline void pg_atomic_unlocked_write_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val) { ptr->value = val; } #endif /* * provide fallback for test_and_set using atomic_exchange if available */ #if !defined(PG_HAVE_ATOMIC_TEST_SET_FLAG) && defined(PG_HAVE_ATOMIC_EXCHANGE_U32) #define PG_HAVE_ATOMIC_INIT_FLAG static inline void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr) { pg_atomic_write_u32_impl(ptr, 0); } #define PG_HAVE_ATOMIC_TEST_SET_FLAG static inline bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr) { return pg_atomic_exchange_u32_impl(ptr, &value, 1) == 0; } #define PG_HAVE_ATOMIC_UNLOCKED_TEST_FLAG static inline bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr) { return pg_atomic_read_u32_impl(ptr) == 0; } #define PG_HAVE_ATOMIC_CLEAR_FLAG static inline void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr) { /* XXX: release semantics suffice? */ pg_memory_barrier_impl(); pg_atomic_write_u32_impl(ptr, 0); } /* * provide fallback for test_and_set using atomic_compare_exchange if * available. */ #elif !defined(PG_HAVE_ATOMIC_TEST_SET_FLAG) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_INIT_FLAG static inline void pg_atomic_init_flag_impl(volatile pg_atomic_flag *ptr) { pg_atomic_write_u32_impl(ptr, 0); } #define PG_HAVE_ATOMIC_TEST_SET_FLAG static inline bool pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr) { uint32 value = 0; return pg_atomic_compare_exchange_u32_impl(ptr, &value, 1); } #define PG_HAVE_ATOMIC_UNLOCKED_TEST_FLAG static inline bool pg_atomic_unlocked_test_flag_impl(volatile pg_atomic_flag *ptr) { return pg_atomic_read_u32_impl(ptr) == 0; } #define PG_HAVE_ATOMIC_CLEAR_FLAG static inline void pg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr) { /* * Use a memory barrier + plain write if we have a native memory * barrier. But don't do so if memory barriers use spinlocks - that'd lead * to circularity if flags are used to implement spinlocks. */ #ifndef PG_HAVE_MEMORY_BARRIER_EMULATION /* XXX: release semantics suffice? */ pg_memory_barrier_impl(); pg_atomic_write_u32_impl(ptr, 0); #else uint32 value = 1; pg_atomic_compare_exchange_u32_impl(ptr, &value, 0); #endif } #elif !defined(PG_HAVE_ATOMIC_TEST_SET_FLAG) # error "No pg_atomic_test_and_set provided" #endif /* !defined(PG_HAVE_ATOMIC_TEST_SET_FLAG) */ #ifndef PG_HAVE_ATOMIC_INIT_U32 #define PG_HAVE_ATOMIC_INIT_U32 static inline void pg_atomic_init_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 val_) { ptr->value = val_; } #endif #if !defined(PG_HAVE_ATOMIC_EXCHANGE_U32) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_EXCHANGE_U32 static inline uint32 pg_atomic_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 xchg_) { uint32 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, xchg_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_ADD_U32) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_FETCH_ADD_U32 static inline uint32 pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { uint32 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, old + add_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_FETCH_SUB_U32 static inline uint32 pg_atomic_fetch_sub_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) { return pg_atomic_fetch_add_u32_impl(ptr, -sub_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_AND_U32) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_FETCH_AND_U32 static inline uint32 pg_atomic_fetch_and_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 and_) { uint32 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, old & and_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_OR_U32) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32) #define PG_HAVE_ATOMIC_FETCH_OR_U32 static inline uint32 pg_atomic_fetch_or_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 or_) { uint32 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u32_impl(ptr, &old, old | or_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_ADD_FETCH_U32) && defined(PG_HAVE_ATOMIC_FETCH_ADD_U32) #define PG_HAVE_ATOMIC_ADD_FETCH_U32 static inline uint32 pg_atomic_add_fetch_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_) { return pg_atomic_fetch_add_u32_impl(ptr, add_) + add_; } #endif #if !defined(PG_HAVE_ATOMIC_SUB_FETCH_U32) && defined(PG_HAVE_ATOMIC_FETCH_SUB_U32) #define PG_HAVE_ATOMIC_SUB_FETCH_U32 static inline uint32 pg_atomic_sub_fetch_u32_impl(volatile pg_atomic_uint32 *ptr, int32 sub_) { return pg_atomic_fetch_sub_u32_impl(ptr, sub_) - sub_; } #endif #if !defined(PG_HAVE_ATOMIC_EXCHANGE_U64) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) #define PG_HAVE_ATOMIC_EXCHANGE_U64 static inline uint64 pg_atomic_exchange_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 xchg_) { uint64 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, xchg_)) /* skip */; return old; } #endif #ifndef PG_HAVE_ATOMIC_WRITE_U64 #define PG_HAVE_ATOMIC_WRITE_U64 #if defined(PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY) && \ !defined(PG_HAVE_ATOMIC_U64_SIMULATION) static inline void pg_atomic_write_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val) { /* * On this platform aligned 64bit writes are guaranteed to be atomic, * except if using the fallback implementation, where can't guarantee the * required alignment. */ AssertPointerAlignment(ptr, 8); ptr->value = val; } #else static inline void pg_atomic_write_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val) { /* * 64 bit writes aren't safe on all platforms. In the generic * implementation implement them as an atomic exchange. */ pg_atomic_exchange_u64_impl(ptr, val); } #endif /* PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY && !PG_HAVE_ATOMIC_U64_SIMULATION */ #endif /* PG_HAVE_ATOMIC_WRITE_U64 */ #ifndef PG_HAVE_ATOMIC_READ_U64 #define PG_HAVE_ATOMIC_READ_U64 #if defined(PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY) && \ !defined(PG_HAVE_ATOMIC_U64_SIMULATION) static inline uint64 pg_atomic_read_u64_impl(volatile pg_atomic_uint64 *ptr) { /* * On this platform aligned 64-bit reads are guaranteed to be atomic. */ AssertPointerAlignment(ptr, 8); return ptr->value; } #else static inline uint64 pg_atomic_read_u64_impl(volatile pg_atomic_uint64 *ptr) { uint64 old = 0; /* * 64-bit reads aren't atomic on all platforms. In the generic * implementation implement them as a compare/exchange with 0. That'll * fail or succeed, but always return the old value. Possibly might store * a 0, but only if the previous value also was a 0 - i.e. harmless. */ pg_atomic_compare_exchange_u64_impl(ptr, &old, 0); return old; } #endif /* PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY && !PG_HAVE_ATOMIC_U64_SIMULATION */ #endif /* PG_HAVE_ATOMIC_READ_U64 */ #ifndef PG_HAVE_ATOMIC_INIT_U64 #define PG_HAVE_ATOMIC_INIT_U64 static inline void pg_atomic_init_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val_) { ptr->value = val_; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_ADD_U64) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) #define PG_HAVE_ATOMIC_FETCH_ADD_U64 static inline uint64 pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { uint64 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old + add_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_SUB_U64) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) #define PG_HAVE_ATOMIC_FETCH_SUB_U64 static inline uint64 pg_atomic_fetch_sub_u64_impl(volatile pg_atomic_uint64 *ptr, int64 sub_) { return pg_atomic_fetch_add_u64_impl(ptr, -sub_); } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_AND_U64) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) #define PG_HAVE_ATOMIC_FETCH_AND_U64 static inline uint64 pg_atomic_fetch_and_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 and_) { uint64 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old & and_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_FETCH_OR_U64) && defined(PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64) #define PG_HAVE_ATOMIC_FETCH_OR_U64 static inline uint64 pg_atomic_fetch_or_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 or_) { uint64 old; old = ptr->value; /* ok if read is not atomic */ while (!pg_atomic_compare_exchange_u64_impl(ptr, &old, old | or_)) /* skip */; return old; } #endif #if !defined(PG_HAVE_ATOMIC_ADD_FETCH_U64) && defined(PG_HAVE_ATOMIC_FETCH_ADD_U64) #define PG_HAVE_ATOMIC_ADD_FETCH_U64 static inline uint64 pg_atomic_add_fetch_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_) { return pg_atomic_fetch_add_u64_impl(ptr, add_) + add_; } #endif #if !defined(PG_HAVE_ATOMIC_SUB_FETCH_U64) && defined(PG_HAVE_ATOMIC_FETCH_SUB_U64) #define PG_HAVE_ATOMIC_SUB_FETCH_U64 static inline uint64 pg_atomic_sub_fetch_u64_impl(volatile pg_atomic_uint64 *ptr, int64 sub_) { return pg_atomic_fetch_sub_u64_impl(ptr, sub_) - sub_; } #endif libpg_query-13-2.1.0/src/postgres/include/port/pg_bitutils.h000066400000000000000000000116111413137616400240250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_bitutils.h * Miscellaneous functions for bit-wise operations. * * * Copyright (c) 2019-2020, PostgreSQL Global Development Group * * src/include/port/pg_bitutils.h * *------------------------------------------------------------------------- */ #ifndef PG_BITUTILS_H #define PG_BITUTILS_H #ifndef FRONTEND extern PGDLLIMPORT const uint8 pg_leftmost_one_pos[256]; extern PGDLLIMPORT const uint8 pg_rightmost_one_pos[256]; extern PGDLLIMPORT const uint8 pg_number_of_ones[256]; #else extern const uint8 pg_leftmost_one_pos[256]; extern const uint8 pg_rightmost_one_pos[256]; extern const uint8 pg_number_of_ones[256]; #endif /* * pg_leftmost_one_pos32 * Returns the position of the most significant set bit in "word", * measured from the least significant bit. word must not be 0. */ static inline int pg_leftmost_one_pos32(uint32 word) { #ifdef HAVE__BUILTIN_CLZ Assert(word != 0); return 31 - __builtin_clz(word); #else int shift = 32 - 8; Assert(word != 0); while ((word >> shift) == 0) shift -= 8; return shift + pg_leftmost_one_pos[(word >> shift) & 255]; #endif /* HAVE__BUILTIN_CLZ */ } /* * pg_leftmost_one_pos64 * As above, but for a 64-bit word. */ static inline int pg_leftmost_one_pos64(uint64 word) { #ifdef HAVE__BUILTIN_CLZ Assert(word != 0); #if defined(HAVE_LONG_INT_64) return 63 - __builtin_clzl(word); #elif defined(HAVE_LONG_LONG_INT_64) return 63 - __builtin_clzll(word); #else #error must have a working 64-bit integer datatype #endif #else /* !HAVE__BUILTIN_CLZ */ int shift = 64 - 8; Assert(word != 0); while ((word >> shift) == 0) shift -= 8; return shift + pg_leftmost_one_pos[(word >> shift) & 255]; #endif /* HAVE__BUILTIN_CLZ */ } /* * pg_rightmost_one_pos32 * Returns the position of the least significant set bit in "word", * measured from the least significant bit. word must not be 0. */ static inline int pg_rightmost_one_pos32(uint32 word) { #ifdef HAVE__BUILTIN_CTZ Assert(word != 0); return __builtin_ctz(word); #else int result = 0; Assert(word != 0); while ((word & 255) == 0) { word >>= 8; result += 8; } result += pg_rightmost_one_pos[word & 255]; return result; #endif /* HAVE__BUILTIN_CTZ */ } /* * pg_rightmost_one_pos64 * As above, but for a 64-bit word. */ static inline int pg_rightmost_one_pos64(uint64 word) { #ifdef HAVE__BUILTIN_CTZ Assert(word != 0); #if defined(HAVE_LONG_INT_64) return __builtin_ctzl(word); #elif defined(HAVE_LONG_LONG_INT_64) return __builtin_ctzll(word); #else #error must have a working 64-bit integer datatype #endif #else /* !HAVE__BUILTIN_CTZ */ int result = 0; Assert(word != 0); while ((word & 255) == 0) { word >>= 8; result += 8; } result += pg_rightmost_one_pos[word & 255]; return result; #endif /* HAVE__BUILTIN_CTZ */ } /* * pg_nextpower2_32 * Returns the next highest power of 2 of 'num', or 'num', if it's * already a power of 2. * * 'num' mustn't be 0 or be above PG_UINT32_MAX / 2 + 1. */ static inline uint32 pg_nextpower2_32(uint32 num) { Assert(num > 0 && num <= PG_UINT32_MAX / 2 + 1); /* * A power 2 number has only 1 bit set. Subtracting 1 from such a number * will turn on all previous bits resulting in no common bits being set * between num and num-1. */ if ((num & (num - 1)) == 0) return num; /* already power 2 */ return ((uint32) 1) << (pg_leftmost_one_pos32(num) + 1); } /* * pg_nextpower2_64 * Returns the next highest power of 2 of 'num', or 'num', if it's * already a power of 2. * * 'num' mustn't be 0 or be above PG_UINT64_MAX / 2 + 1. */ static inline uint64 pg_nextpower2_64(uint64 num) { Assert(num > 0 && num <= PG_UINT64_MAX / 2 + 1); /* * A power 2 number has only 1 bit set. Subtracting 1 from such a number * will turn on all previous bits resulting in no common bits being set * between num and num-1. */ if ((num & (num - 1)) == 0) return num; /* already power 2 */ return ((uint64) 1) << (pg_leftmost_one_pos64(num) + 1); } /* * pg_ceil_log2_32 * Returns equivalent of ceil(log2(num)) */ static inline uint32 pg_ceil_log2_32(uint32 num) { if (num < 2) return 0; else return pg_leftmost_one_pos32(num - 1) + 1; } /* * pg_ceil_log2_64 * Returns equivalent of ceil(log2(num)) */ static inline uint64 pg_ceil_log2_64(uint64 num) { if (num < 2) return 0; else return pg_leftmost_one_pos64(num - 1) + 1; } /* Count the number of one-bits in a uint32 or uint64 */ extern int (*pg_popcount32) (uint32 word); extern int (*pg_popcount64) (uint64 word); /* Count the number of one-bits in a byte array */ extern uint64 pg_popcount(const char *buf, int bytes); /* * Rotate the bits of "word" to the right by n bits. */ static inline uint32 pg_rotate_right32(uint32 word, int n) { return (word >> n) | (word << (sizeof(word) * BITS_PER_BYTE - n)); } #endif /* PG_BITUTILS_H */ libpg_query-13-2.1.0/src/postgres/include/port/pg_bswap.h000066400000000000000000000102541413137616400233040ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_bswap.h * Byte swapping. * * Macros for reversing the byte order of 16, 32 and 64-bit unsigned integers. * For example, 0xAABBCCDD becomes 0xDDCCBBAA. These are just wrappers for * built-in functions provided by the compiler where support exists. * * Note that all of these functions accept unsigned integers as arguments and * return the same. Use caution when using these wrapper macros with signed * integers. * * Copyright (c) 2015-2020, PostgreSQL Global Development Group * * src/include/port/pg_bswap.h * *------------------------------------------------------------------------- */ #ifndef PG_BSWAP_H #define PG_BSWAP_H /* * In all supported versions msvc provides _byteswap_* functions in stdlib.h, * already included by c.h. */ /* implementation of uint16 pg_bswap16(uint16) */ #if defined(HAVE__BUILTIN_BSWAP16) #define pg_bswap16(x) __builtin_bswap16(x) #elif defined(_MSC_VER) #define pg_bswap16(x) _byteswap_ushort(x) #else static inline uint16 pg_bswap16(uint16 x) { return ((x << 8) & 0xff00) | ((x >> 8) & 0x00ff); } #endif /* HAVE__BUILTIN_BSWAP16 */ /* implementation of uint32 pg_bswap32(uint32) */ #if defined(HAVE__BUILTIN_BSWAP32) #define pg_bswap32(x) __builtin_bswap32(x) #elif defined(_MSC_VER) #define pg_bswap32(x) _byteswap_ulong(x) #else static inline uint32 pg_bswap32(uint32 x) { return ((x << 24) & 0xff000000) | ((x << 8) & 0x00ff0000) | ((x >> 8) & 0x0000ff00) | ((x >> 24) & 0x000000ff); } #endif /* HAVE__BUILTIN_BSWAP32 */ /* implementation of uint64 pg_bswap64(uint64) */ #if defined(HAVE__BUILTIN_BSWAP64) #define pg_bswap64(x) __builtin_bswap64(x) #elif defined(_MSC_VER) #define pg_bswap64(x) _byteswap_uint64(x) #else static inline uint64 pg_bswap64(uint64 x) { return ((x << 56) & UINT64CONST(0xff00000000000000)) | ((x << 40) & UINT64CONST(0x00ff000000000000)) | ((x << 24) & UINT64CONST(0x0000ff0000000000)) | ((x << 8) & UINT64CONST(0x000000ff00000000)) | ((x >> 8) & UINT64CONST(0x00000000ff000000)) | ((x >> 24) & UINT64CONST(0x0000000000ff0000)) | ((x >> 40) & UINT64CONST(0x000000000000ff00)) | ((x >> 56) & UINT64CONST(0x00000000000000ff)); } #endif /* HAVE__BUILTIN_BSWAP64 */ /* * Portable and fast equivalents for ntohs, ntohl, htons, htonl, * additionally extended to 64 bits. */ #ifdef WORDS_BIGENDIAN #define pg_hton16(x) (x) #define pg_hton32(x) (x) #define pg_hton64(x) (x) #define pg_ntoh16(x) (x) #define pg_ntoh32(x) (x) #define pg_ntoh64(x) (x) #else #define pg_hton16(x) pg_bswap16(x) #define pg_hton32(x) pg_bswap32(x) #define pg_hton64(x) pg_bswap64(x) #define pg_ntoh16(x) pg_bswap16(x) #define pg_ntoh32(x) pg_bswap32(x) #define pg_ntoh64(x) pg_bswap64(x) #endif /* WORDS_BIGENDIAN */ /* * Rearrange the bytes of a Datum from big-endian order into the native byte * order. On big-endian machines, this does nothing at all. Note that the C * type Datum is an unsigned integer type on all platforms. * * One possible application of the DatumBigEndianToNative() macro is to make * bitwise comparisons cheaper. A simple 3-way comparison of Datums * transformed by the macro (based on native, unsigned comparisons) will return * the same result as a memcmp() of the corresponding original Datums, but can * be much cheaper. It's generally safe to do this on big-endian systems * without any special transformation occurring first. * * If SIZEOF_DATUM is not defined, then postgres.h wasn't included and these * macros probably shouldn't be used, so we define nothing. Note that * SIZEOF_DATUM == 8 would evaluate as 0 == 8 in that case, potentially * leading to the wrong implementation being selected and confusing errors, so * defining nothing is safest. */ #ifdef SIZEOF_DATUM #ifdef WORDS_BIGENDIAN #define DatumBigEndianToNative(x) (x) #else /* !WORDS_BIGENDIAN */ #if SIZEOF_DATUM == 8 #define DatumBigEndianToNative(x) pg_bswap64(x) #else /* SIZEOF_DATUM != 8 */ #define DatumBigEndianToNative(x) pg_bswap32(x) #endif /* SIZEOF_DATUM == 8 */ #endif /* WORDS_BIGENDIAN */ #endif /* SIZEOF_DATUM */ #endif /* PG_BSWAP_H */ libpg_query-13-2.1.0/src/postgres/include/port/pg_crc32c.h000066400000000000000000000063151413137616400232520ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_crc32c.h * Routines for computing CRC-32C checksums. * * The speed of CRC-32C calculation has a big impact on performance, so we * jump through some hoops to get the best implementation for each * platform. Some CPU architectures have special instructions for speeding * up CRC calculations (e.g. Intel SSE 4.2), on other platforms we use the * Slicing-by-8 algorithm which uses lookup tables. * * The public interface consists of four macros: * * INIT_CRC32C(crc) * Initialize a CRC accumulator * * COMP_CRC32C(crc, data, len) * Accumulate some (more) bytes into a CRC * * FIN_CRC32C(crc) * Finish a CRC calculation * * EQ_CRC32C(c1, c2) * Check for equality of two CRCs. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/port/pg_crc32c.h * *------------------------------------------------------------------------- */ #ifndef PG_CRC32C_H #define PG_CRC32C_H #include "port/pg_bswap.h" typedef uint32 pg_crc32c; /* The INIT and EQ macros are the same for all implementations. */ #define INIT_CRC32C(crc) ((crc) = 0xFFFFFFFF) #define EQ_CRC32C(c1, c2) ((c1) == (c2)) #if defined(USE_SSE42_CRC32C) /* Use Intel SSE4.2 instructions. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c_sse42((crc), (data), (len))) #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len); #elif defined(USE_ARMV8_CRC32C) /* Use ARMv8 CRC Extension instructions. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c_armv8((crc), (data), (len))) #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) extern pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t len); #elif defined(USE_SSE42_CRC32C_WITH_RUNTIME_CHECK) || defined(USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK) /* * Use Intel SSE 4.2 or ARMv8 instructions, but perform a runtime check first * to check that they are available. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c((crc), (data), (len))) #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) extern pg_crc32c pg_comp_crc32c_sb8(pg_crc32c crc, const void *data, size_t len); extern pg_crc32c (*pg_comp_crc32c) (pg_crc32c crc, const void *data, size_t len); #ifdef USE_SSE42_CRC32C_WITH_RUNTIME_CHECK extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len); #endif #ifdef USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK extern pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t len); #endif #else /* * Use slicing-by-8 algorithm. * * On big-endian systems, the intermediate value is kept in reverse byte * order, to avoid byte-swapping during the calculation. FIN_CRC32C reverses * the bytes to the final order. */ #define COMP_CRC32C(crc, data, len) \ ((crc) = pg_comp_crc32c_sb8((crc), (data), (len))) #ifdef WORDS_BIGENDIAN #define FIN_CRC32C(crc) ((crc) = pg_bswap32(crc) ^ 0xFFFFFFFF) #else #define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF) #endif extern pg_crc32c pg_comp_crc32c_sb8(pg_crc32c crc, const void *data, size_t len); #endif #endif /* PG_CRC32C_H */ libpg_query-13-2.1.0/src/postgres/include/portability/000077500000000000000000000000001413137616400227055ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/portability/instr_time.h000066400000000000000000000156151413137616400252430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * instr_time.h * portable high-precision interval timing * * This file provides an abstraction layer to hide portability issues in * interval timing. On Unix we use clock_gettime() if available, else * gettimeofday(). On Windows, gettimeofday() gives a low-precision result * so we must use QueryPerformanceCounter() instead. These macros also give * some breathing room to use other high-precision-timing APIs. * * The basic data type is instr_time, which all callers should treat as an * opaque typedef. instr_time can store either an absolute time (of * unspecified reference time) or an interval. The operations provided * for it are: * * INSTR_TIME_IS_ZERO(t) is t equal to zero? * * INSTR_TIME_SET_ZERO(t) set t to zero (memset is acceptable too) * * INSTR_TIME_SET_CURRENT(t) set t to current time * * INSTR_TIME_SET_CURRENT_LAZY(t) set t to current time if t is zero, * evaluates to whether t changed * * INSTR_TIME_ADD(x, y) x += y * * INSTR_TIME_SUBTRACT(x, y) x -= y * * INSTR_TIME_ACCUM_DIFF(x, y, z) x += (y - z) * * INSTR_TIME_GET_DOUBLE(t) convert t to double (in seconds) * * INSTR_TIME_GET_MILLISEC(t) convert t to double (in milliseconds) * * INSTR_TIME_GET_MICROSEC(t) convert t to uint64 (in microseconds) * * Note that INSTR_TIME_SUBTRACT and INSTR_TIME_ACCUM_DIFF convert * absolute times to intervals. The INSTR_TIME_GET_xxx operations are * only useful on intervals. * * When summing multiple measurements, it's recommended to leave the * running sum in instr_time form (ie, use INSTR_TIME_ADD or * INSTR_TIME_ACCUM_DIFF) and convert to a result format only at the end. * * Beware of multiple evaluations of the macro arguments. * * * Copyright (c) 2001-2020, PostgreSQL Global Development Group * * src/include/portability/instr_time.h * *------------------------------------------------------------------------- */ #ifndef INSTR_TIME_H #define INSTR_TIME_H #ifndef WIN32 #ifdef HAVE_CLOCK_GETTIME /* Use clock_gettime() */ #include /* * The best clockid to use according to the POSIX spec is CLOCK_MONOTONIC, * since that will give reliable interval timing even in the face of changes * to the system clock. However, POSIX doesn't require implementations to * provide anything except CLOCK_REALTIME, so fall back to that if we don't * find CLOCK_MONOTONIC. * * Also, some implementations have nonstandard clockids with better properties * than CLOCK_MONOTONIC. In particular, as of macOS 10.12, Apple provides * CLOCK_MONOTONIC_RAW which is both faster to read and higher resolution than * their version of CLOCK_MONOTONIC. */ #if defined(__darwin__) && defined(CLOCK_MONOTONIC_RAW) #define PG_INSTR_CLOCK CLOCK_MONOTONIC_RAW #elif defined(CLOCK_MONOTONIC) #define PG_INSTR_CLOCK CLOCK_MONOTONIC #else #define PG_INSTR_CLOCK CLOCK_REALTIME #endif typedef struct timespec instr_time; #define INSTR_TIME_IS_ZERO(t) ((t).tv_nsec == 0 && (t).tv_sec == 0) #define INSTR_TIME_SET_ZERO(t) ((t).tv_sec = 0, (t).tv_nsec = 0) #define INSTR_TIME_SET_CURRENT(t) ((void) clock_gettime(PG_INSTR_CLOCK, &(t))) #define INSTR_TIME_ADD(x,y) \ do { \ (x).tv_sec += (y).tv_sec; \ (x).tv_nsec += (y).tv_nsec; \ /* Normalize */ \ while ((x).tv_nsec >= 1000000000) \ { \ (x).tv_nsec -= 1000000000; \ (x).tv_sec++; \ } \ } while (0) #define INSTR_TIME_SUBTRACT(x,y) \ do { \ (x).tv_sec -= (y).tv_sec; \ (x).tv_nsec -= (y).tv_nsec; \ /* Normalize */ \ while ((x).tv_nsec < 0) \ { \ (x).tv_nsec += 1000000000; \ (x).tv_sec--; \ } \ } while (0) #define INSTR_TIME_ACCUM_DIFF(x,y,z) \ do { \ (x).tv_sec += (y).tv_sec - (z).tv_sec; \ (x).tv_nsec += (y).tv_nsec - (z).tv_nsec; \ /* Normalize after each add to avoid overflow/underflow of tv_nsec */ \ while ((x).tv_nsec < 0) \ { \ (x).tv_nsec += 1000000000; \ (x).tv_sec--; \ } \ while ((x).tv_nsec >= 1000000000) \ { \ (x).tv_nsec -= 1000000000; \ (x).tv_sec++; \ } \ } while (0) #define INSTR_TIME_GET_DOUBLE(t) \ (((double) (t).tv_sec) + ((double) (t).tv_nsec) / 1000000000.0) #define INSTR_TIME_GET_MILLISEC(t) \ (((double) (t).tv_sec * 1000.0) + ((double) (t).tv_nsec) / 1000000.0) #define INSTR_TIME_GET_MICROSEC(t) \ (((uint64) (t).tv_sec * (uint64) 1000000) + (uint64) ((t).tv_nsec / 1000)) #else /* !HAVE_CLOCK_GETTIME */ /* Use gettimeofday() */ #include typedef struct timeval instr_time; #define INSTR_TIME_IS_ZERO(t) ((t).tv_usec == 0 && (t).tv_sec == 0) #define INSTR_TIME_SET_ZERO(t) ((t).tv_sec = 0, (t).tv_usec = 0) #define INSTR_TIME_SET_CURRENT(t) gettimeofday(&(t), NULL) #define INSTR_TIME_ADD(x,y) \ do { \ (x).tv_sec += (y).tv_sec; \ (x).tv_usec += (y).tv_usec; \ /* Normalize */ \ while ((x).tv_usec >= 1000000) \ { \ (x).tv_usec -= 1000000; \ (x).tv_sec++; \ } \ } while (0) #define INSTR_TIME_SUBTRACT(x,y) \ do { \ (x).tv_sec -= (y).tv_sec; \ (x).tv_usec -= (y).tv_usec; \ /* Normalize */ \ while ((x).tv_usec < 0) \ { \ (x).tv_usec += 1000000; \ (x).tv_sec--; \ } \ } while (0) #define INSTR_TIME_ACCUM_DIFF(x,y,z) \ do { \ (x).tv_sec += (y).tv_sec - (z).tv_sec; \ (x).tv_usec += (y).tv_usec - (z).tv_usec; \ /* Normalize after each add to avoid overflow/underflow of tv_usec */ \ while ((x).tv_usec < 0) \ { \ (x).tv_usec += 1000000; \ (x).tv_sec--; \ } \ while ((x).tv_usec >= 1000000) \ { \ (x).tv_usec -= 1000000; \ (x).tv_sec++; \ } \ } while (0) #define INSTR_TIME_GET_DOUBLE(t) \ (((double) (t).tv_sec) + ((double) (t).tv_usec) / 1000000.0) #define INSTR_TIME_GET_MILLISEC(t) \ (((double) (t).tv_sec * 1000.0) + ((double) (t).tv_usec) / 1000.0) #define INSTR_TIME_GET_MICROSEC(t) \ (((uint64) (t).tv_sec * (uint64) 1000000) + (uint64) (t).tv_usec) #endif /* HAVE_CLOCK_GETTIME */ #else /* WIN32 */ /* Use QueryPerformanceCounter() */ typedef LARGE_INTEGER instr_time; #define INSTR_TIME_IS_ZERO(t) ((t).QuadPart == 0) #define INSTR_TIME_SET_ZERO(t) ((t).QuadPart = 0) #define INSTR_TIME_SET_CURRENT(t) QueryPerformanceCounter(&(t)) #define INSTR_TIME_ADD(x,y) \ ((x).QuadPart += (y).QuadPart) #define INSTR_TIME_SUBTRACT(x,y) \ ((x).QuadPart -= (y).QuadPart) #define INSTR_TIME_ACCUM_DIFF(x,y,z) \ ((x).QuadPart += (y).QuadPart - (z).QuadPart) #define INSTR_TIME_GET_DOUBLE(t) \ (((double) (t).QuadPart) / GetTimerFrequency()) #define INSTR_TIME_GET_MILLISEC(t) \ (((double) (t).QuadPart * 1000.0) / GetTimerFrequency()) #define INSTR_TIME_GET_MICROSEC(t) \ ((uint64) (((double) (t).QuadPart * 1000000.0) / GetTimerFrequency())) static inline double GetTimerFrequency(void) { LARGE_INTEGER f; QueryPerformanceFrequency(&f); return (double) f.QuadPart; } #endif /* WIN32 */ /* same macro on all platforms */ #define INSTR_TIME_SET_CURRENT_LAZY(t) \ (INSTR_TIME_IS_ZERO(t) ? INSTR_TIME_SET_CURRENT(t), true : false) #endif /* INSTR_TIME_H */ libpg_query-13-2.1.0/src/postgres/include/postgres.h000066400000000000000000000535531413137616400223750ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * postgres.h * Primary include file for PostgreSQL server .c files * * This should be the first file included by PostgreSQL backend modules. * Client-side code should include postgres_fe.h instead. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1995, Regents of the University of California * * src/include/postgres.h * *------------------------------------------------------------------------- */ /* *---------------------------------------------------------------- * TABLE OF CONTENTS * * When adding stuff to this file, please try to put stuff * into the relevant section, or add new sections as appropriate. * * section description * ------- ------------------------------------------------ * 1) variable-length datatypes (TOAST support) * 2) Datum type + support macros * * NOTES * * In general, this file should contain declarations that are widely needed * in the backend environment, but are of no interest outside the backend. * * Simple type definitions live in c.h, where they are shared with * postgres_fe.h. We do that since those type definitions are needed by * frontend modules that want to deal with binary data transmission to or * from the backend. Type definitions in this file should be for * representations that never escape the backend, such as Datum or * TOASTed varlena objects. * *---------------------------------------------------------------- */ #ifndef POSTGRES_H #define POSTGRES_H #include "c.h" #include "utils/elog.h" #include "utils/palloc.h" /* ---------------------------------------------------------------- * Section 1: variable-length datatypes (TOAST support) * ---------------------------------------------------------------- */ /* * struct varatt_external is a traditional "TOAST pointer", that is, the * information needed to fetch a Datum stored out-of-line in a TOAST table. * The data is compressed if and only if va_extsize < va_rawsize - VARHDRSZ. * This struct must not contain any padding, because we sometimes compare * these pointers using memcmp. * * Note that this information is stored unaligned within actual tuples, so * you need to memcpy from the tuple into a local struct variable before * you can look at these fields! (The reason we use memcmp is to avoid * having to do that just to detect equality of two TOAST pointers...) */ typedef struct varatt_external { int32 va_rawsize; /* Original data size (includes header) */ int32 va_extsize; /* External saved size (doesn't) */ Oid va_valueid; /* Unique ID of value within TOAST table */ Oid va_toastrelid; /* RelID of TOAST table containing it */ } varatt_external; /* * struct varatt_indirect is a "TOAST pointer" representing an out-of-line * Datum that's stored in memory, not in an external toast relation. * The creator of such a Datum is entirely responsible that the referenced * storage survives for as long as referencing pointer Datums can exist. * * Note that just as for struct varatt_external, this struct is stored * unaligned within any containing tuple. */ typedef struct varatt_indirect { struct varlena *pointer; /* Pointer to in-memory varlena */ } varatt_indirect; /* * struct varatt_expanded is a "TOAST pointer" representing an out-of-line * Datum that is stored in memory, in some type-specific, not necessarily * physically contiguous format that is convenient for computation not * storage. APIs for this, in particular the definition of struct * ExpandedObjectHeader, are in src/include/utils/expandeddatum.h. * * Note that just as for struct varatt_external, this struct is stored * unaligned within any containing tuple. */ typedef struct ExpandedObjectHeader ExpandedObjectHeader; typedef struct varatt_expanded { ExpandedObjectHeader *eohptr; } varatt_expanded; /* * Type tag for the various sorts of "TOAST pointer" datums. The peculiar * value for VARTAG_ONDISK comes from a requirement for on-disk compatibility * with a previous notion that the tag field was the pointer datum's length. */ typedef enum vartag_external { VARTAG_INDIRECT = 1, VARTAG_EXPANDED_RO = 2, VARTAG_EXPANDED_RW = 3, VARTAG_ONDISK = 18 } vartag_external; /* this test relies on the specific tag values above */ #define VARTAG_IS_EXPANDED(tag) \ (((tag) & ~1) == VARTAG_EXPANDED_RO) #define VARTAG_SIZE(tag) \ ((tag) == VARTAG_INDIRECT ? sizeof(varatt_indirect) : \ VARTAG_IS_EXPANDED(tag) ? sizeof(varatt_expanded) : \ (tag) == VARTAG_ONDISK ? sizeof(varatt_external) : \ TrapMacro(true, "unrecognized TOAST vartag")) /* * These structs describe the header of a varlena object that may have been * TOASTed. Generally, don't reference these structs directly, but use the * macros below. * * We use separate structs for the aligned and unaligned cases because the * compiler might otherwise think it could generate code that assumes * alignment while touching fields of a 1-byte-header varlena. */ typedef union { struct /* Normal varlena (4-byte length) */ { uint32 va_header; char va_data[FLEXIBLE_ARRAY_MEMBER]; } va_4byte; struct /* Compressed-in-line format */ { uint32 va_header; uint32 va_rawsize; /* Original data size (excludes header) */ char va_data[FLEXIBLE_ARRAY_MEMBER]; /* Compressed data */ } va_compressed; } varattrib_4b; typedef struct { uint8 va_header; char va_data[FLEXIBLE_ARRAY_MEMBER]; /* Data begins here */ } varattrib_1b; /* TOAST pointers are a subset of varattrib_1b with an identifying tag byte */ typedef struct { uint8 va_header; /* Always 0x80 or 0x01 */ uint8 va_tag; /* Type of datum */ char va_data[FLEXIBLE_ARRAY_MEMBER]; /* Type-specific data */ } varattrib_1b_e; /* * Bit layouts for varlena headers on big-endian machines: * * 00xxxxxx 4-byte length word, aligned, uncompressed data (up to 1G) * 01xxxxxx 4-byte length word, aligned, *compressed* data (up to 1G) * 10000000 1-byte length word, unaligned, TOAST pointer * 1xxxxxxx 1-byte length word, unaligned, uncompressed data (up to 126b) * * Bit layouts for varlena headers on little-endian machines: * * xxxxxx00 4-byte length word, aligned, uncompressed data (up to 1G) * xxxxxx10 4-byte length word, aligned, *compressed* data (up to 1G) * 00000001 1-byte length word, unaligned, TOAST pointer * xxxxxxx1 1-byte length word, unaligned, uncompressed data (up to 126b) * * The "xxx" bits are the length field (which includes itself in all cases). * In the big-endian case we mask to extract the length, in the little-endian * case we shift. Note that in both cases the flag bits are in the physically * first byte. Also, it is not possible for a 1-byte length word to be zero; * this lets us disambiguate alignment padding bytes from the start of an * unaligned datum. (We now *require* pad bytes to be filled with zero!) * * In TOAST pointers the va_tag field (see varattrib_1b_e) is used to discern * the specific type and length of the pointer datum. */ /* * Endian-dependent macros. These are considered internal --- use the * external macros below instead of using these directly. * * Note: IS_1B is true for external toast records but VARSIZE_1B will return 0 * for such records. Hence you should usually check for IS_EXTERNAL before * checking for IS_1B. */ #ifdef WORDS_BIGENDIAN #define VARATT_IS_4B(PTR) \ ((((varattrib_1b *) (PTR))->va_header & 0x80) == 0x00) #define VARATT_IS_4B_U(PTR) \ ((((varattrib_1b *) (PTR))->va_header & 0xC0) == 0x00) #define VARATT_IS_4B_C(PTR) \ ((((varattrib_1b *) (PTR))->va_header & 0xC0) == 0x40) #define VARATT_IS_1B(PTR) \ ((((varattrib_1b *) (PTR))->va_header & 0x80) == 0x80) #define VARATT_IS_1B_E(PTR) \ ((((varattrib_1b *) (PTR))->va_header) == 0x80) #define VARATT_NOT_PAD_BYTE(PTR) \ (*((uint8 *) (PTR)) != 0) /* VARSIZE_4B() should only be used on known-aligned data */ #define VARSIZE_4B(PTR) \ (((varattrib_4b *) (PTR))->va_4byte.va_header & 0x3FFFFFFF) #define VARSIZE_1B(PTR) \ (((varattrib_1b *) (PTR))->va_header & 0x7F) #define VARTAG_1B_E(PTR) \ (((varattrib_1b_e *) (PTR))->va_tag) #define SET_VARSIZE_4B(PTR,len) \ (((varattrib_4b *) (PTR))->va_4byte.va_header = (len) & 0x3FFFFFFF) #define SET_VARSIZE_4B_C(PTR,len) \ (((varattrib_4b *) (PTR))->va_4byte.va_header = ((len) & 0x3FFFFFFF) | 0x40000000) #define SET_VARSIZE_1B(PTR,len) \ (((varattrib_1b *) (PTR))->va_header = (len) | 0x80) #define SET_VARTAG_1B_E(PTR,tag) \ (((varattrib_1b_e *) (PTR))->va_header = 0x80, \ ((varattrib_1b_e *) (PTR))->va_tag = (tag)) #else /* !WORDS_BIGENDIAN */ #define VARATT_IS_4B(PTR) \ ((((varattrib_1b *) (PTR))->va_header & 0x01) == 0x00) #define VARATT_IS_4B_U(PTR) \ ((((varattrib_1b *) (PTR))->va_header & 0x03) == 0x00) #define VARATT_IS_4B_C(PTR) \ ((((varattrib_1b *) (PTR))->va_header & 0x03) == 0x02) #define VARATT_IS_1B(PTR) \ ((((varattrib_1b *) (PTR))->va_header & 0x01) == 0x01) #define VARATT_IS_1B_E(PTR) \ ((((varattrib_1b *) (PTR))->va_header) == 0x01) #define VARATT_NOT_PAD_BYTE(PTR) \ (*((uint8 *) (PTR)) != 0) /* VARSIZE_4B() should only be used on known-aligned data */ #define VARSIZE_4B(PTR) \ ((((varattrib_4b *) (PTR))->va_4byte.va_header >> 2) & 0x3FFFFFFF) #define VARSIZE_1B(PTR) \ ((((varattrib_1b *) (PTR))->va_header >> 1) & 0x7F) #define VARTAG_1B_E(PTR) \ (((varattrib_1b_e *) (PTR))->va_tag) #define SET_VARSIZE_4B(PTR,len) \ (((varattrib_4b *) (PTR))->va_4byte.va_header = (((uint32) (len)) << 2)) #define SET_VARSIZE_4B_C(PTR,len) \ (((varattrib_4b *) (PTR))->va_4byte.va_header = (((uint32) (len)) << 2) | 0x02) #define SET_VARSIZE_1B(PTR,len) \ (((varattrib_1b *) (PTR))->va_header = (((uint8) (len)) << 1) | 0x01) #define SET_VARTAG_1B_E(PTR,tag) \ (((varattrib_1b_e *) (PTR))->va_header = 0x01, \ ((varattrib_1b_e *) (PTR))->va_tag = (tag)) #endif /* WORDS_BIGENDIAN */ #define VARHDRSZ_SHORT offsetof(varattrib_1b, va_data) #define VARATT_SHORT_MAX 0x7F #define VARATT_CAN_MAKE_SHORT(PTR) \ (VARATT_IS_4B_U(PTR) && \ (VARSIZE(PTR) - VARHDRSZ + VARHDRSZ_SHORT) <= VARATT_SHORT_MAX) #define VARATT_CONVERTED_SHORT_SIZE(PTR) \ (VARSIZE(PTR) - VARHDRSZ + VARHDRSZ_SHORT) #define VARHDRSZ_EXTERNAL offsetof(varattrib_1b_e, va_data) #define VARDATA_4B(PTR) (((varattrib_4b *) (PTR))->va_4byte.va_data) #define VARDATA_4B_C(PTR) (((varattrib_4b *) (PTR))->va_compressed.va_data) #define VARDATA_1B(PTR) (((varattrib_1b *) (PTR))->va_data) #define VARDATA_1B_E(PTR) (((varattrib_1b_e *) (PTR))->va_data) #define VARRAWSIZE_4B_C(PTR) \ (((varattrib_4b *) (PTR))->va_compressed.va_rawsize) /* Externally visible macros */ /* * In consumers oblivious to data alignment, call PG_DETOAST_DATUM_PACKED(), * VARDATA_ANY(), VARSIZE_ANY() and VARSIZE_ANY_EXHDR(). Elsewhere, call * PG_DETOAST_DATUM(), VARDATA() and VARSIZE(). Directly fetching an int16, * int32 or wider field in the struct representing the datum layout requires * aligned data. memcpy() is alignment-oblivious, as are most operations on * datatypes, such as text, whose layout struct contains only char fields. * * Code assembling a new datum should call VARDATA() and SET_VARSIZE(). * (Datums begin life untoasted.) * * Other macros here should usually be used only by tuple assembly/disassembly * code and code that specifically wants to work with still-toasted Datums. */ #define VARDATA(PTR) VARDATA_4B(PTR) #define VARSIZE(PTR) VARSIZE_4B(PTR) #define VARSIZE_SHORT(PTR) VARSIZE_1B(PTR) #define VARDATA_SHORT(PTR) VARDATA_1B(PTR) #define VARTAG_EXTERNAL(PTR) VARTAG_1B_E(PTR) #define VARSIZE_EXTERNAL(PTR) (VARHDRSZ_EXTERNAL + VARTAG_SIZE(VARTAG_EXTERNAL(PTR))) #define VARDATA_EXTERNAL(PTR) VARDATA_1B_E(PTR) #define VARATT_IS_COMPRESSED(PTR) VARATT_IS_4B_C(PTR) #define VARATT_IS_EXTERNAL(PTR) VARATT_IS_1B_E(PTR) #define VARATT_IS_EXTERNAL_ONDISK(PTR) \ (VARATT_IS_EXTERNAL(PTR) && VARTAG_EXTERNAL(PTR) == VARTAG_ONDISK) #define VARATT_IS_EXTERNAL_INDIRECT(PTR) \ (VARATT_IS_EXTERNAL(PTR) && VARTAG_EXTERNAL(PTR) == VARTAG_INDIRECT) #define VARATT_IS_EXTERNAL_EXPANDED_RO(PTR) \ (VARATT_IS_EXTERNAL(PTR) && VARTAG_EXTERNAL(PTR) == VARTAG_EXPANDED_RO) #define VARATT_IS_EXTERNAL_EXPANDED_RW(PTR) \ (VARATT_IS_EXTERNAL(PTR) && VARTAG_EXTERNAL(PTR) == VARTAG_EXPANDED_RW) #define VARATT_IS_EXTERNAL_EXPANDED(PTR) \ (VARATT_IS_EXTERNAL(PTR) && VARTAG_IS_EXPANDED(VARTAG_EXTERNAL(PTR))) #define VARATT_IS_EXTERNAL_NON_EXPANDED(PTR) \ (VARATT_IS_EXTERNAL(PTR) && !VARTAG_IS_EXPANDED(VARTAG_EXTERNAL(PTR))) #define VARATT_IS_SHORT(PTR) VARATT_IS_1B(PTR) #define VARATT_IS_EXTENDED(PTR) (!VARATT_IS_4B_U(PTR)) #define SET_VARSIZE(PTR, len) SET_VARSIZE_4B(PTR, len) #define SET_VARSIZE_SHORT(PTR, len) SET_VARSIZE_1B(PTR, len) #define SET_VARSIZE_COMPRESSED(PTR, len) SET_VARSIZE_4B_C(PTR, len) #define SET_VARTAG_EXTERNAL(PTR, tag) SET_VARTAG_1B_E(PTR, tag) #define VARSIZE_ANY(PTR) \ (VARATT_IS_1B_E(PTR) ? VARSIZE_EXTERNAL(PTR) : \ (VARATT_IS_1B(PTR) ? VARSIZE_1B(PTR) : \ VARSIZE_4B(PTR))) /* Size of a varlena data, excluding header */ #define VARSIZE_ANY_EXHDR(PTR) \ (VARATT_IS_1B_E(PTR) ? VARSIZE_EXTERNAL(PTR)-VARHDRSZ_EXTERNAL : \ (VARATT_IS_1B(PTR) ? VARSIZE_1B(PTR)-VARHDRSZ_SHORT : \ VARSIZE_4B(PTR)-VARHDRSZ)) /* caution: this will not work on an external or compressed-in-line Datum */ /* caution: this will return a possibly unaligned pointer */ #define VARDATA_ANY(PTR) \ (VARATT_IS_1B(PTR) ? VARDATA_1B(PTR) : VARDATA_4B(PTR)) /* ---------------------------------------------------------------- * Section 2: Datum type + support macros * ---------------------------------------------------------------- */ /* * A Datum contains either a value of a pass-by-value type or a pointer to a * value of a pass-by-reference type. Therefore, we require: * * sizeof(Datum) == sizeof(void *) == 4 or 8 * * The macros below and the analogous macros for other types should be used to * convert between a Datum and the appropriate C type. */ typedef uintptr_t Datum; /* * A NullableDatum is used in places where both a Datum and its nullness needs * to be stored. This can be more efficient than storing datums and nullness * in separate arrays, due to better spatial locality, even if more space may * be wasted due to padding. */ typedef struct NullableDatum { #define FIELDNO_NULLABLE_DATUM_DATUM 0 Datum value; #define FIELDNO_NULLABLE_DATUM_ISNULL 1 bool isnull; /* due to alignment padding this could be used for flags for free */ } NullableDatum; #define SIZEOF_DATUM SIZEOF_VOID_P /* * DatumGetBool * Returns boolean value of a datum. * * Note: any nonzero value will be considered true. */ #define DatumGetBool(X) ((bool) ((X) != 0)) /* * BoolGetDatum * Returns datum representation for a boolean. * * Note: any nonzero value will be considered true. */ #define BoolGetDatum(X) ((Datum) ((X) ? 1 : 0)) /* * DatumGetChar * Returns character value of a datum. */ #define DatumGetChar(X) ((char) (X)) /* * CharGetDatum * Returns datum representation for a character. */ #define CharGetDatum(X) ((Datum) (X)) /* * Int8GetDatum * Returns datum representation for an 8-bit integer. */ #define Int8GetDatum(X) ((Datum) (X)) /* * DatumGetUInt8 * Returns 8-bit unsigned integer value of a datum. */ #define DatumGetUInt8(X) ((uint8) (X)) /* * UInt8GetDatum * Returns datum representation for an 8-bit unsigned integer. */ #define UInt8GetDatum(X) ((Datum) (X)) /* * DatumGetInt16 * Returns 16-bit integer value of a datum. */ #define DatumGetInt16(X) ((int16) (X)) /* * Int16GetDatum * Returns datum representation for a 16-bit integer. */ #define Int16GetDatum(X) ((Datum) (X)) /* * DatumGetUInt16 * Returns 16-bit unsigned integer value of a datum. */ #define DatumGetUInt16(X) ((uint16) (X)) /* * UInt16GetDatum * Returns datum representation for a 16-bit unsigned integer. */ #define UInt16GetDatum(X) ((Datum) (X)) /* * DatumGetInt32 * Returns 32-bit integer value of a datum. */ #define DatumGetInt32(X) ((int32) (X)) /* * Int32GetDatum * Returns datum representation for a 32-bit integer. */ #define Int32GetDatum(X) ((Datum) (X)) /* * DatumGetUInt32 * Returns 32-bit unsigned integer value of a datum. */ #define DatumGetUInt32(X) ((uint32) (X)) /* * UInt32GetDatum * Returns datum representation for a 32-bit unsigned integer. */ #define UInt32GetDatum(X) ((Datum) (X)) /* * DatumGetObjectId * Returns object identifier value of a datum. */ #define DatumGetObjectId(X) ((Oid) (X)) /* * ObjectIdGetDatum * Returns datum representation for an object identifier. */ #define ObjectIdGetDatum(X) ((Datum) (X)) /* * DatumGetTransactionId * Returns transaction identifier value of a datum. */ #define DatumGetTransactionId(X) ((TransactionId) (X)) /* * TransactionIdGetDatum * Returns datum representation for a transaction identifier. */ #define TransactionIdGetDatum(X) ((Datum) (X)) /* * MultiXactIdGetDatum * Returns datum representation for a multixact identifier. */ #define MultiXactIdGetDatum(X) ((Datum) (X)) /* * DatumGetCommandId * Returns command identifier value of a datum. */ #define DatumGetCommandId(X) ((CommandId) (X)) /* * CommandIdGetDatum * Returns datum representation for a command identifier. */ #define CommandIdGetDatum(X) ((Datum) (X)) /* * DatumGetPointer * Returns pointer value of a datum. */ #define DatumGetPointer(X) ((Pointer) (X)) /* * PointerGetDatum * Returns datum representation for a pointer. */ #define PointerGetDatum(X) ((Datum) (X)) /* * DatumGetCString * Returns C string (null-terminated string) value of a datum. * * Note: C string is not a full-fledged Postgres type at present, * but type input functions use this conversion for their inputs. */ #define DatumGetCString(X) ((char *) DatumGetPointer(X)) /* * CStringGetDatum * Returns datum representation for a C string (null-terminated string). * * Note: C string is not a full-fledged Postgres type at present, * but type output functions use this conversion for their outputs. * Note: CString is pass-by-reference; caller must ensure the pointed-to * value has adequate lifetime. */ #define CStringGetDatum(X) PointerGetDatum(X) /* * DatumGetName * Returns name value of a datum. */ #define DatumGetName(X) ((Name) DatumGetPointer(X)) /* * NameGetDatum * Returns datum representation for a name. * * Note: Name is pass-by-reference; caller must ensure the pointed-to * value has adequate lifetime. */ #define NameGetDatum(X) CStringGetDatum(NameStr(*(X))) /* * DatumGetInt64 * Returns 64-bit integer value of a datum. * * Note: this macro hides whether int64 is pass by value or by reference. */ #ifdef USE_FLOAT8_BYVAL #define DatumGetInt64(X) ((int64) (X)) #else #define DatumGetInt64(X) (* ((int64 *) DatumGetPointer(X))) #endif /* * Int64GetDatum * Returns datum representation for a 64-bit integer. * * Note: if int64 is pass by reference, this function returns a reference * to palloc'd space. */ #ifdef USE_FLOAT8_BYVAL #define Int64GetDatum(X) ((Datum) (X)) #else extern Datum Int64GetDatum(int64 X); #endif /* * DatumGetUInt64 * Returns 64-bit unsigned integer value of a datum. * * Note: this macro hides whether int64 is pass by value or by reference. */ #ifdef USE_FLOAT8_BYVAL #define DatumGetUInt64(X) ((uint64) (X)) #else #define DatumGetUInt64(X) (* ((uint64 *) DatumGetPointer(X))) #endif /* * UInt64GetDatum * Returns datum representation for a 64-bit unsigned integer. * * Note: if int64 is pass by reference, this function returns a reference * to palloc'd space. */ #ifdef USE_FLOAT8_BYVAL #define UInt64GetDatum(X) ((Datum) (X)) #else #define UInt64GetDatum(X) Int64GetDatum((int64) (X)) #endif /* * Float <-> Datum conversions * * These have to be implemented as inline functions rather than macros, when * passing by value, because many machines pass int and float function * parameters/results differently; so we need to play weird games with unions. */ /* * DatumGetFloat4 * Returns 4-byte floating point value of a datum. */ static inline float4 DatumGetFloat4(Datum X) { union { int32 value; float4 retval; } myunion; myunion.value = DatumGetInt32(X); return myunion.retval; } /* * Float4GetDatum * Returns datum representation for a 4-byte floating point number. */ static inline Datum Float4GetDatum(float4 X) { union { float4 value; int32 retval; } myunion; myunion.value = X; return Int32GetDatum(myunion.retval); } /* * DatumGetFloat8 * Returns 8-byte floating point value of a datum. * * Note: this macro hides whether float8 is pass by value or by reference. */ #ifdef USE_FLOAT8_BYVAL static inline float8 DatumGetFloat8(Datum X) { union { int64 value; float8 retval; } myunion; myunion.value = DatumGetInt64(X); return myunion.retval; } #else #define DatumGetFloat8(X) (* ((float8 *) DatumGetPointer(X))) #endif /* * Float8GetDatum * Returns datum representation for an 8-byte floating point number. * * Note: if float8 is pass by reference, this function returns a reference * to palloc'd space. */ #ifdef USE_FLOAT8_BYVAL static inline Datum Float8GetDatum(float8 X) { union { float8 value; int64 retval; } myunion; myunion.value = X; return Int64GetDatum(myunion.retval); } #else extern Datum Float8GetDatum(float8 X); #endif /* * Int64GetDatumFast * Float8GetDatumFast * * These macros are intended to allow writing code that does not depend on * whether int64 and float8 are pass-by-reference types, while not * sacrificing performance when they are. The argument must be a variable * that will exist and have the same value for as long as the Datum is needed. * In the pass-by-ref case, the address of the variable is taken to use as * the Datum. In the pass-by-val case, these will be the same as the non-Fast * macros. */ #ifdef USE_FLOAT8_BYVAL #define Int64GetDatumFast(X) Int64GetDatum(X) #define Float8GetDatumFast(X) Float8GetDatum(X) #else #define Int64GetDatumFast(X) PointerGetDatum(&(X)) #define Float8GetDatumFast(X) PointerGetDatum(&(X)) #endif #endif /* POSTGRES_H */ libpg_query-13-2.1.0/src/postgres/include/postgres_ext.h000066400000000000000000000042771413137616400232540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * postgres_ext.h * * This file contains declarations of things that are visible everywhere * in PostgreSQL *and* are visible to clients of frontend interface libraries. * For example, the Oid type is part of the API of libpq and other libraries. * * Declarations which are specific to a particular interface should * go in the header file for that interface (such as libpq-fe.h). This * file is only for fundamental Postgres declarations. * * User-written C functions don't count as "external to Postgres." * Those function much as local modifications to the backend itself, and * use header files that are otherwise internal to Postgres to interface * with the backend. * * src/include/postgres_ext.h * *------------------------------------------------------------------------- */ #ifndef POSTGRES_EXT_H #define POSTGRES_EXT_H #include "pg_config_ext.h" /* * Object ID is a fundamental type in Postgres. */ typedef unsigned int Oid; #ifdef __cplusplus #define InvalidOid (Oid(0)) #else #define InvalidOid ((Oid) 0) #endif #define OID_MAX UINT_MAX /* you will need to include to use the above #define */ #define atooid(x) ((Oid) strtoul((x), NULL, 10)) /* the above needs */ /* Define a signed 64-bit integer type for use in client API declarations. */ typedef PG_INT64_TYPE pg_int64; /* * Identifiers of error message fields. Kept here to keep common * between frontend and backend, and also to export them to libpq * applications. */ #define PG_DIAG_SEVERITY 'S' #define PG_DIAG_SEVERITY_NONLOCALIZED 'V' #define PG_DIAG_SQLSTATE 'C' #define PG_DIAG_MESSAGE_PRIMARY 'M' #define PG_DIAG_MESSAGE_DETAIL 'D' #define PG_DIAG_MESSAGE_HINT 'H' #define PG_DIAG_STATEMENT_POSITION 'P' #define PG_DIAG_INTERNAL_POSITION 'p' #define PG_DIAG_INTERNAL_QUERY 'q' #define PG_DIAG_CONTEXT 'W' #define PG_DIAG_SCHEMA_NAME 's' #define PG_DIAG_TABLE_NAME 't' #define PG_DIAG_COLUMN_NAME 'c' #define PG_DIAG_DATATYPE_NAME 'd' #define PG_DIAG_CONSTRAINT_NAME 'n' #define PG_DIAG_SOURCE_FILE 'F' #define PG_DIAG_SOURCE_LINE 'L' #define PG_DIAG_SOURCE_FUNCTION 'R' #endif /* POSTGRES_EXT_H */ libpg_query-13-2.1.0/src/postgres/include/postmaster/000077500000000000000000000000001413137616400225445ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/postmaster/autovacuum.h000066400000000000000000000047011413137616400251100ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * autovacuum.h * header file for integrated autovacuum daemon * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/postmaster/autovacuum.h * *------------------------------------------------------------------------- */ #ifndef AUTOVACUUM_H #define AUTOVACUUM_H #include "storage/block.h" /* * Other processes can request specific work from autovacuum, identified by * AutoVacuumWorkItem elements. */ typedef enum { AVW_BRINSummarizeRange } AutoVacuumWorkItemType; /* GUC variables */ extern bool autovacuum_start_daemon; extern int autovacuum_max_workers; extern int autovacuum_work_mem; extern int autovacuum_naptime; extern int autovacuum_vac_thresh; extern double autovacuum_vac_scale; extern int autovacuum_vac_ins_thresh; extern double autovacuum_vac_ins_scale; extern int autovacuum_anl_thresh; extern double autovacuum_anl_scale; extern int autovacuum_freeze_max_age; extern int autovacuum_multixact_freeze_max_age; extern double autovacuum_vac_cost_delay; extern int autovacuum_vac_cost_limit; /* autovacuum launcher PID, only valid when worker is shutting down */ extern int AutovacuumLauncherPid; extern int Log_autovacuum_min_duration; /* Status inquiry functions */ extern bool AutoVacuumingActive(void); extern bool IsAutoVacuumLauncherProcess(void); extern bool IsAutoVacuumWorkerProcess(void); #define IsAnyAutoVacuumProcess() \ (IsAutoVacuumLauncherProcess() || IsAutoVacuumWorkerProcess()) /* Functions to start autovacuum process, called from postmaster */ extern void autovac_init(void); extern int StartAutoVacLauncher(void); extern int StartAutoVacWorker(void); /* called from postmaster when a worker could not be forked */ extern void AutoVacWorkerFailed(void); /* autovacuum cost-delay balancer */ extern void AutoVacuumUpdateDelay(void); #ifdef EXEC_BACKEND extern void AutoVacLauncherMain(int argc, char *argv[]) pg_attribute_noreturn(); extern void AutoVacWorkerMain(int argc, char *argv[]) pg_attribute_noreturn(); extern void AutovacuumWorkerIAm(void); extern void AutovacuumLauncherIAm(void); #endif extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type, Oid relationId, BlockNumber blkno); /* shared memory stuff */ extern Size AutoVacuumShmemSize(void); extern void AutoVacuumShmemInit(void); #endif /* AUTOVACUUM_H */ libpg_query-13-2.1.0/src/postgres/include/postmaster/bgworker.h000066400000000000000000000137341413137616400245470ustar00rootroot00000000000000/*-------------------------------------------------------------------- * bgworker.h * POSTGRES pluggable background workers interface * * A background worker is a process able to run arbitrary, user-supplied code, * including normal transactions. * * Any external module loaded via shared_preload_libraries can register a * worker. Workers can also be registered dynamically at runtime. In either * case, the worker process is forked from the postmaster and runs the * user-supplied "main" function. This code may connect to a database and * run transactions. Workers can remain active indefinitely, but will be * terminated if a shutdown or crash occurs. * * If the fork() call fails in the postmaster, it will try again later. Note * that the failure can only be transient (fork failure due to high load, * memory pressure, too many processes, etc); more permanent problems, like * failure to connect to a database, are detected later in the worker and dealt * with just by having the worker exit normally. A worker which exits with * a return code of 0 will never be restarted and will be removed from worker * list. A worker which exits with a return code of 1 will be restarted after * the configured restart interval (unless that interval is BGW_NEVER_RESTART). * The TerminateBackgroundWorker() function can be used to terminate a * dynamically registered background worker; the worker will be sent a SIGTERM * and will not be restarted after it exits. Whenever the postmaster knows * that a worker will not be restarted, it unregisters the worker, freeing up * that worker's slot for use by a new worker. * * Note that there might be more than one worker in a database concurrently, * and the same module may request more than one worker running the same (or * different) code. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/postmaster/bgworker.h *-------------------------------------------------------------------- */ #ifndef BGWORKER_H #define BGWORKER_H /*--------------------------------------------------------------------- * External module API. *--------------------------------------------------------------------- */ /* * Pass this flag to have your worker be able to connect to shared memory. */ #define BGWORKER_SHMEM_ACCESS 0x0001 /* * This flag means the bgworker requires a database connection. The connection * is not established automatically; the worker must establish it later. * It requires that BGWORKER_SHMEM_ACCESS was passed too. */ #define BGWORKER_BACKEND_DATABASE_CONNECTION 0x0002 /* * This class is used internally for parallel queries, to keep track of the * number of active parallel workers and make sure we never launch more than * max_parallel_workers parallel workers at the same time. Third party * background workers should not use this class. */ #define BGWORKER_CLASS_PARALLEL 0x0010 /* add additional bgworker classes here */ typedef void (*bgworker_main_type) (Datum main_arg); /* * Points in time at which a bgworker can request to be started */ typedef enum { BgWorkerStart_PostmasterStart, BgWorkerStart_ConsistentState, BgWorkerStart_RecoveryFinished } BgWorkerStartTime; #define BGW_DEFAULT_RESTART_INTERVAL 60 #define BGW_NEVER_RESTART -1 #define BGW_MAXLEN 96 #define BGW_EXTRALEN 128 typedef struct BackgroundWorker { char bgw_name[BGW_MAXLEN]; char bgw_type[BGW_MAXLEN]; int bgw_flags; BgWorkerStartTime bgw_start_time; int bgw_restart_time; /* in seconds, or BGW_NEVER_RESTART */ char bgw_library_name[BGW_MAXLEN]; char bgw_function_name[BGW_MAXLEN]; Datum bgw_main_arg; char bgw_extra[BGW_EXTRALEN]; pid_t bgw_notify_pid; /* SIGUSR1 this backend on start/stop */ } BackgroundWorker; typedef enum BgwHandleStatus { BGWH_STARTED, /* worker is running */ BGWH_NOT_YET_STARTED, /* worker hasn't been started yet */ BGWH_STOPPED, /* worker has exited */ BGWH_POSTMASTER_DIED /* postmaster died; worker status unclear */ } BgwHandleStatus; struct BackgroundWorkerHandle; typedef struct BackgroundWorkerHandle BackgroundWorkerHandle; /* Register a new bgworker during shared_preload_libraries */ extern void RegisterBackgroundWorker(BackgroundWorker *worker); /* Register a new bgworker from a regular backend */ extern bool RegisterDynamicBackgroundWorker(BackgroundWorker *worker, BackgroundWorkerHandle **handle); /* Query the status of a bgworker */ extern BgwHandleStatus GetBackgroundWorkerPid(BackgroundWorkerHandle *handle, pid_t *pidp); extern BgwHandleStatus WaitForBackgroundWorkerStartup(BackgroundWorkerHandle *handle, pid_t *pid); extern BgwHandleStatus WaitForBackgroundWorkerShutdown(BackgroundWorkerHandle *); extern const char *GetBackgroundWorkerTypeByPid(pid_t pid); /* Terminate a bgworker */ extern void TerminateBackgroundWorker(BackgroundWorkerHandle *handle); /* This is valid in a running worker */ extern PGDLLIMPORT BackgroundWorker *MyBgworkerEntry; /* * Connect to the specified database, as the specified user. Only a worker * that passed BGWORKER_BACKEND_DATABASE_CONNECTION during registration may * call this. * * If username is NULL, bootstrapping superuser is used. * If dbname is NULL, connection is made to no specific database; * only shared catalogs can be accessed. */ extern void BackgroundWorkerInitializeConnection(const char *dbname, const char *username, uint32 flags); /* Just like the above, but specifying database and user by OID. */ extern void BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, uint32 flags); /* * Flags to BackgroundWorkerInitializeConnection et al * * * Allow bypassing datallowconn restrictions when connecting to database */ #define BGWORKER_BYPASS_ALLOWCONN 1 /* Block/unblock signals in a background worker process */ extern void BackgroundWorkerBlockSignals(void); extern void BackgroundWorkerUnblockSignals(void); #endif /* BGWORKER_H */ libpg_query-13-2.1.0/src/postgres/include/postmaster/bgworker_internals.h000066400000000000000000000041751413137616400266250ustar00rootroot00000000000000/*-------------------------------------------------------------------- * bgworker_internals.h * POSTGRES pluggable background workers internals * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/postmaster/bgworker_internals.h *-------------------------------------------------------------------- */ #ifndef BGWORKER_INTERNALS_H #define BGWORKER_INTERNALS_H #include "datatype/timestamp.h" #include "lib/ilist.h" #include "postmaster/bgworker.h" /* GUC options */ /* * Maximum possible value of parallel workers. */ #define MAX_PARALLEL_WORKER_LIMIT 1024 /* * List of background workers, private to postmaster. * * A worker that requests a database connection during registration will have * rw_backend set, and will be present in BackendList. Note: do not rely on * rw_backend being non-NULL for shmem-connected workers! */ typedef struct RegisteredBgWorker { BackgroundWorker rw_worker; /* its registry entry */ struct bkend *rw_backend; /* its BackendList entry, or NULL */ pid_t rw_pid; /* 0 if not running */ int rw_child_slot; TimestampTz rw_crashed_at; /* if not 0, time it last crashed */ int rw_shmem_slot; bool rw_terminate; slist_node rw_lnode; /* list link */ } RegisteredBgWorker; extern slist_head BackgroundWorkerList; extern Size BackgroundWorkerShmemSize(void); extern void BackgroundWorkerShmemInit(void); extern void BackgroundWorkerStateChange(bool allow_new_workers); extern void ForgetBackgroundWorker(slist_mutable_iter *cur); extern void ReportBackgroundWorkerPID(RegisteredBgWorker *); extern void ReportBackgroundWorkerExit(slist_mutable_iter *cur); extern void BackgroundWorkerStopNotifications(pid_t pid); extern void ForgetUnstartedBackgroundWorkers(void); extern void ResetBackgroundWorkerCrashTimes(void); /* Function to start a background worker, called from postmaster.c */ extern void StartBackgroundWorker(void) pg_attribute_noreturn(); #ifdef EXEC_BACKEND extern BackgroundWorker *BackgroundWorkerEntry(int slotno); #endif #endif /* BGWORKER_INTERNALS_H */ libpg_query-13-2.1.0/src/postgres/include/postmaster/bgwriter.h000066400000000000000000000024521413137616400245450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * bgwriter.h * Exports from postmaster/bgwriter.c and postmaster/checkpointer.c. * * The bgwriter process used to handle checkpointing duties too. Now * there is a separate process, but we did not bother to split this header. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/include/postmaster/bgwriter.h * *------------------------------------------------------------------------- */ #ifndef _BGWRITER_H #define _BGWRITER_H #include "storage/block.h" #include "storage/relfilenode.h" #include "storage/smgr.h" #include "storage/sync.h" /* GUC options */ extern int BgWriterDelay; extern int CheckPointTimeout; extern int CheckPointWarning; extern double CheckPointCompletionTarget; extern void BackgroundWriterMain(void) pg_attribute_noreturn(); extern void CheckpointerMain(void) pg_attribute_noreturn(); extern void RequestCheckpoint(int flags); extern void CheckpointWriteDelay(int flags, double progress); extern bool ForwardSyncRequest(const FileTag *ftag, SyncRequestType type); extern void AbsorbSyncRequests(void); extern Size CheckpointerShmemSize(void); extern void CheckpointerShmemInit(void); extern bool FirstCallSinceLastCheckpoint(void); #endif /* _BGWRITER_H */ libpg_query-13-2.1.0/src/postgres/include/postmaster/fork_process.h000066400000000000000000000007031413137616400254140ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fork_process.h * Exports from postmaster/fork_process.c. * * Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/include/postmaster/fork_process.h * *------------------------------------------------------------------------- */ #ifndef FORK_PROCESS_H #define FORK_PROCESS_H extern pid_t fork_process(void); #endif /* FORK_PROCESS_H */ libpg_query-13-2.1.0/src/postgres/include/postmaster/interrupt.h000066400000000000000000000017601413137616400247550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * interrupt.h * Interrupt handling routines. * * Responses to interrupts are fairly varied and many types of backends * have their own implementations, but we provide a few generic things * here to facilitate code reuse. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/postmaster/interrupt.h * *------------------------------------------------------------------------- */ #ifndef INTERRUPT_H #define INTERRUPT_H #include extern PGDLLIMPORT volatile sig_atomic_t ConfigReloadPending; extern PGDLLIMPORT volatile sig_atomic_t ShutdownRequestPending; extern void HandleMainLoopInterrupts(void); extern void SignalHandlerForConfigReload(SIGNAL_ARGS); extern void SignalHandlerForCrashExit(SIGNAL_ARGS); extern void SignalHandlerForShutdownRequest(SIGNAL_ARGS); #endif libpg_query-13-2.1.0/src/postgres/include/postmaster/pgarch.h000066400000000000000000000021501413137616400241570ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pgarch.h * Exports from postmaster/pgarch.c. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/postmaster/pgarch.h * *------------------------------------------------------------------------- */ #ifndef _PGARCH_H #define _PGARCH_H /* ---------- * Archiver control info. * * We expect that archivable files within pg_wal will have names between * MIN_XFN_CHARS and MAX_XFN_CHARS in length, consisting only of characters * appearing in VALID_XFN_CHARS. The status files in archive_status have * corresponding names with ".ready" or ".done" appended. * ---------- */ #define MIN_XFN_CHARS 16 #define MAX_XFN_CHARS 40 #define VALID_XFN_CHARS "0123456789ABCDEF.history.backup.partial" /* ---------- * Functions called from postmaster * ---------- */ extern int pgarch_start(void); #ifdef EXEC_BACKEND extern void PgArchiverMain(int argc, char *argv[]) pg_attribute_noreturn(); #endif #endif /* _PGARCH_H */ libpg_query-13-2.1.0/src/postgres/include/postmaster/postmaster.h000066400000000000000000000050361413137616400251220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * postmaster.h * Exports from postmaster/postmaster.c. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/postmaster/postmaster.h * *------------------------------------------------------------------------- */ #ifndef _POSTMASTER_H #define _POSTMASTER_H /* GUC options */ extern bool EnableSSL; extern int ReservedBackends; extern PGDLLIMPORT int PostPortNumber; extern int Unix_socket_permissions; extern char *Unix_socket_group; extern char *Unix_socket_directories; extern char *ListenAddresses; extern __thread bool ClientAuthInProgress; extern int PreAuthDelay; extern int AuthenticationTimeout; extern bool Log_connections; extern bool log_hostname; extern bool enable_bonjour; extern char *bonjour_name; extern bool restart_after_crash; #ifdef WIN32 extern HANDLE PostmasterHandle; #else extern int postmaster_alive_fds[2]; /* * Constants that represent which of postmaster_alive_fds is held by * postmaster, and which is used in children to check for postmaster death. */ #define POSTMASTER_FD_WATCH 0 /* used in children to check for * postmaster death */ #define POSTMASTER_FD_OWN 1 /* kept open by postmaster only */ #endif extern PGDLLIMPORT const char *progname; extern void PostmasterMain(int argc, char *argv[]) pg_attribute_noreturn(); extern void ClosePostmasterPorts(bool am_syslogger); extern void InitProcessGlobals(void); extern int MaxLivePostmasterChildren(void); extern bool PostmasterMarkPIDForWorkerNotify(int); #ifdef EXEC_BACKEND extern pid_t postmaster_forkexec(int argc, char *argv[]); extern void SubPostmasterMain(int argc, char *argv[]) pg_attribute_noreturn(); extern Size ShmemBackendArraySize(void); extern void ShmemBackendArrayAllocation(void); #endif /* * Note: MAX_BACKENDS is limited to 2^18-1 because that's the width reserved * for buffer references in buf_internals.h. This limitation could be lifted * by using a 64bit state; but it's unlikely to be worthwhile as 2^18-1 * backends exceed currently realistic configurations. Even if that limitation * were removed, we still could not a) exceed 2^23-1 because inval.c stores * the backend ID as a 3-byte signed integer, b) INT_MAX/4 because some places * compute 4*MaxBackends without any overflow check. This is rechecked in the * relevant GUC check hooks and in RegisterBackgroundWorker(). */ #define MAX_BACKENDS 0x3FFFF #endif /* _POSTMASTER_H */ libpg_query-13-2.1.0/src/postgres/include/postmaster/syslogger.h000066400000000000000000000055301413137616400247360ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * syslogger.h * Exports from postmaster/syslogger.c. * * Copyright (c) 2004-2020, PostgreSQL Global Development Group * * src/include/postmaster/syslogger.h * *------------------------------------------------------------------------- */ #ifndef _SYSLOGGER_H #define _SYSLOGGER_H #include /* for PIPE_BUF */ /* * Primitive protocol structure for writing to syslogger pipe(s). The idea * here is to divide long messages into chunks that are not more than * PIPE_BUF bytes long, which according to POSIX spec must be written into * the pipe atomically. The pipe reader then uses the protocol headers to * reassemble the parts of a message into a single string. The reader can * also cope with non-protocol data coming down the pipe, though we cannot * guarantee long strings won't get split apart. * * We use non-nul bytes in is_last to make the protocol a tiny bit * more robust against finding a false double nul byte prologue. But * we still might find it in the len and/or pid bytes unless we're careful. */ #ifdef PIPE_BUF /* Are there any systems with PIPE_BUF > 64K? Unlikely, but ... */ #if PIPE_BUF > 65536 #define PIPE_CHUNK_SIZE 65536 #else #define PIPE_CHUNK_SIZE ((int) PIPE_BUF) #endif #else /* not defined */ /* POSIX says the value of PIPE_BUF must be at least 512, so use that */ #define PIPE_CHUNK_SIZE 512 #endif typedef struct { char nuls[2]; /* always \0\0 */ uint16 len; /* size of this chunk (counts data only) */ int32 pid; /* writer's pid */ char is_last; /* last chunk of message? 't' or 'f' ('T' or * 'F' for CSV case) */ char data[FLEXIBLE_ARRAY_MEMBER]; /* data payload starts here */ } PipeProtoHeader; typedef union { PipeProtoHeader proto; char filler[PIPE_CHUNK_SIZE]; } PipeProtoChunk; #define PIPE_HEADER_SIZE offsetof(PipeProtoHeader, data) #define PIPE_MAX_PAYLOAD ((int) (PIPE_CHUNK_SIZE - PIPE_HEADER_SIZE)) /* GUC options */ extern bool Logging_collector; extern int Log_RotationAge; extern int Log_RotationSize; extern PGDLLIMPORT char *Log_directory; extern PGDLLIMPORT char *Log_filename; extern bool Log_truncate_on_rotation; extern int Log_file_mode; #ifndef WIN32 extern int syslogPipe[2]; #else extern HANDLE syslogPipe[2]; #endif extern int SysLogger_Start(void); extern void write_syslogger_file(const char *buffer, int count, int dest); #ifdef EXEC_BACKEND extern void SysLoggerMain(int argc, char *argv[]) pg_attribute_noreturn(); #endif extern bool CheckLogrotateSignal(void); extern void RemoveLogrotateSignalFiles(void); /* * Name of files saving meta-data information about the log * files currently in use by the syslogger */ #define LOG_METAINFO_DATAFILE "current_logfiles" #define LOG_METAINFO_DATAFILE_TMP LOG_METAINFO_DATAFILE ".tmp" #endif /* _SYSLOGGER_H */ libpg_query-13-2.1.0/src/postgres/include/postmaster/walwriter.h000066400000000000000000000010431413137616400247330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * walwriter.h * Exports from postmaster/walwriter.c. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/include/postmaster/walwriter.h * *------------------------------------------------------------------------- */ #ifndef _WALWRITER_H #define _WALWRITER_H /* GUC options */ extern int WalWriterDelay; extern int WalWriterFlushAfter; extern void WalWriterMain(void) pg_attribute_noreturn(); #endif /* _WALWRITER_H */ libpg_query-13-2.1.0/src/postgres/include/regex/000077500000000000000000000000001413137616400214555ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/regex/regex.h000066400000000000000000000154151413137616400227460ustar00rootroot00000000000000#ifndef _REGEX_H_ #define _REGEX_H_ /* never again */ /* * regular expressions * * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. * * Development of this software was funded, in part, by Cray Research Inc., * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics * Corporation, none of whom are responsible for the results. The author * thanks all of them. * * Redistribution and use in source and binary forms -- with or without * modification -- are permitted for any purpose, provided that * redistributions in source form retain this entire copyright notice and * indicate the origin and nature of any modifications. * * I'd appreciate being given credit for this package in the documentation * of software which uses it, but that is not a requirement. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * src/include/regex/regex.h */ /* * Add your own defines, if needed, here. */ #include "mb/pg_wchar.h" /* * interface types etc. */ /* * regoff_t has to be large enough to hold either off_t or ssize_t, * and must be signed; it's only a guess that long is suitable. */ typedef long regoff_t; /* * other interface types */ /* the biggie, a compiled RE (or rather, a front end to same) */ typedef struct { int re_magic; /* magic number */ size_t re_nsub; /* number of subexpressions */ long re_info; /* information about RE */ #define REG_UBACKREF 000001 #define REG_ULOOKAROUND 000002 #define REG_UBOUNDS 000004 #define REG_UBRACES 000010 #define REG_UBSALNUM 000020 #define REG_UPBOTCH 000040 #define REG_UBBS 000100 #define REG_UNONPOSIX 000200 #define REG_UUNSPEC 000400 #define REG_UUNPORT 001000 #define REG_ULOCALE 002000 #define REG_UEMPTYMATCH 004000 #define REG_UIMPOSSIBLE 010000 #define REG_USHORTEST 020000 int re_csize; /* sizeof(character) */ char *re_endp; /* backward compatibility kludge */ Oid re_collation; /* Collation that defines LC_CTYPE behavior */ /* the rest is opaque pointers to hidden innards */ char *re_guts; /* `char *' is more portable than `void *' */ char *re_fns; } regex_t; /* result reporting (may acquire more fields later) */ typedef struct { regoff_t rm_so; /* start of substring */ regoff_t rm_eo; /* end of substring */ } regmatch_t; /* supplementary control and reporting */ typedef struct { regmatch_t rm_extend; /* see REG_EXPECT */ } rm_detail_t; /* * regex compilation flags */ #define REG_BASIC 000000 /* BREs (convenience) */ #define REG_EXTENDED 000001 /* EREs */ #define REG_ADVF 000002 /* advanced features in EREs */ #define REG_ADVANCED 000003 /* AREs (which are also EREs) */ #define REG_QUOTE 000004 /* no special characters, none */ #define REG_NOSPEC REG_QUOTE /* historical synonym */ #define REG_ICASE 000010 /* ignore case */ #define REG_NOSUB 000020 /* don't care about subexpressions */ #define REG_EXPANDED 000040 /* expanded format, white space & comments */ #define REG_NLSTOP 000100 /* \n doesn't match . or [^ ] */ #define REG_NLANCH 000200 /* ^ matches after \n, $ before */ #define REG_NEWLINE 000300 /* newlines are line terminators */ #define REG_PEND 000400 /* ugh -- backward-compatibility hack */ #define REG_EXPECT 001000 /* report details on partial/limited matches */ #define REG_BOSONLY 002000 /* temporary kludge for BOS-only matches */ #define REG_DUMP 004000 /* none of your business :-) */ #define REG_FAKE 010000 /* none of your business :-) */ #define REG_PROGRESS 020000 /* none of your business :-) */ /* * regex execution flags */ #define REG_NOTBOL 0001 /* BOS is not BOL */ #define REG_NOTEOL 0002 /* EOS is not EOL */ #define REG_STARTEND 0004 /* backward compatibility kludge */ #define REG_FTRACE 0010 /* none of your business */ #define REG_MTRACE 0020 /* none of your business */ #define REG_SMALL 0040 /* none of your business */ /* * error reporting * Be careful if modifying the list of error codes -- the table used by * regerror() is generated automatically from this file! */ #define REG_OKAY 0 /* no errors detected */ #define REG_NOMATCH 1 /* failed to match */ #define REG_BADPAT 2 /* invalid regexp */ #define REG_ECOLLATE 3 /* invalid collating element */ #define REG_ECTYPE 4 /* invalid character class */ #define REG_EESCAPE 5 /* invalid escape \ sequence */ #define REG_ESUBREG 6 /* invalid backreference number */ #define REG_EBRACK 7 /* brackets [] not balanced */ #define REG_EPAREN 8 /* parentheses () not balanced */ #define REG_EBRACE 9 /* braces {} not balanced */ #define REG_BADBR 10 /* invalid repetition count(s) */ #define REG_ERANGE 11 /* invalid character range */ #define REG_ESPACE 12 /* out of memory */ #define REG_BADRPT 13 /* quantifier operand invalid */ #define REG_ASSERT 15 /* "can't happen" -- you found a bug */ #define REG_INVARG 16 /* invalid argument to regex function */ #define REG_MIXED 17 /* character widths of regex and string differ */ #define REG_BADOPT 18 /* invalid embedded option */ #define REG_ETOOBIG 19 /* regular expression is too complex */ #define REG_ECOLORS 20 /* too many colors */ #define REG_CANCEL 21 /* operation cancelled */ /* two specials for debugging and testing */ #define REG_ATOI 101 /* convert error-code name to number */ #define REG_ITOA 102 /* convert error-code number to name */ /* non-error result codes for pg_regprefix */ #define REG_PREFIX (-1) /* identified a common prefix */ #define REG_EXACT (-2) /* identified an exact match */ /* * the prototypes for exported functions */ /* regcomp.c */ extern int pg_regcomp(regex_t *, const pg_wchar *, size_t, int, Oid); extern int pg_regexec(regex_t *, const pg_wchar *, size_t, size_t, rm_detail_t *, size_t, regmatch_t[], int); extern int pg_regprefix(regex_t *, pg_wchar **, size_t *); extern void pg_regfree(regex_t *); extern size_t pg_regerror(int, const regex_t *, char *, size_t); /* regexp.c */ extern regex_t *RE_compile_and_cache(text *text_re, int cflags, Oid collation); extern bool RE_compile_and_execute(text *text_re, char *dat, int dat_len, int cflags, Oid collation, int nmatch, regmatch_t *pmatch); #endif /* _REGEX_H_ */ libpg_query-13-2.1.0/src/postgres/include/replication/000077500000000000000000000000001413137616400226545ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/replication/logicallauncher.h000066400000000000000000000017171413137616400261670ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * logicallauncher.h * Exports for logical replication launcher. * * Portions Copyright (c) 2016-2020, PostgreSQL Global Development Group * * src/include/replication/logicallauncher.h * *------------------------------------------------------------------------- */ #ifndef LOGICALLAUNCHER_H #define LOGICALLAUNCHER_H extern int max_logical_replication_workers; extern int max_sync_workers_per_subscription; extern void ApplyLauncherRegister(void); extern void ApplyLauncherMain(Datum main_arg); extern Size ApplyLauncherShmemSize(void); extern void ApplyLauncherShmemInit(void); extern void ApplyLauncherWakeupAtCommit(void); extern bool XactManipulatesLogicalReplicationWorkers(void); extern void AtEOXact_ApplyLauncher(bool isCommit); extern void AtEOSubXact_ApplyLauncher(bool isCommit, int nestDepth); extern bool IsLogicalLauncher(void); #endif /* LOGICALLAUNCHER_H */ libpg_query-13-2.1.0/src/postgres/include/replication/logicalproto.h000066400000000000000000000075441413137616400255350ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * logicalproto.h * logical replication protocol * * Copyright (c) 2015-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/replication/logicalproto.h * *------------------------------------------------------------------------- */ #ifndef LOGICAL_PROTO_H #define LOGICAL_PROTO_H #include "replication/reorderbuffer.h" #include "utils/rel.h" /* * Protocol capabilities * * LOGICALREP_PROTO_VERSION_NUM is our native protocol and the greatest version * we can support. LOGICALREP_PROTO_MIN_VERSION_NUM is the oldest version we * have backwards compatibility for. The client requests protocol version at * connect time. */ #define LOGICALREP_PROTO_MIN_VERSION_NUM 1 #define LOGICALREP_PROTO_VERSION_NUM 1 /* Tuple coming via logical replication. */ typedef struct LogicalRepTupleData { /* column values in text format, or NULL for a null value: */ char *values[MaxTupleAttributeNumber]; /* markers for changed/unchanged column values: */ bool changed[MaxTupleAttributeNumber]; } LogicalRepTupleData; typedef uint32 LogicalRepRelId; /* Relation information */ typedef struct LogicalRepRelation { /* Info coming from the remote side. */ LogicalRepRelId remoteid; /* unique id of the relation */ char *nspname; /* schema name */ char *relname; /* relation name */ int natts; /* number of columns */ char **attnames; /* column names */ Oid *atttyps; /* column types */ char replident; /* replica identity */ char relkind; /* remote relation kind */ Bitmapset *attkeys; /* Bitmap of key columns */ } LogicalRepRelation; /* Type mapping info */ typedef struct LogicalRepTyp { Oid remoteid; /* unique id of the remote type */ char *nspname; /* schema name of remote type */ char *typname; /* name of the remote type */ } LogicalRepTyp; /* Transaction info */ typedef struct LogicalRepBeginData { XLogRecPtr final_lsn; TimestampTz committime; TransactionId xid; } LogicalRepBeginData; typedef struct LogicalRepCommitData { XLogRecPtr commit_lsn; XLogRecPtr end_lsn; TimestampTz committime; } LogicalRepCommitData; extern void logicalrep_write_begin(StringInfo out, ReorderBufferTXN *txn); extern void logicalrep_read_begin(StringInfo in, LogicalRepBeginData *begin_data); extern void logicalrep_write_commit(StringInfo out, ReorderBufferTXN *txn, XLogRecPtr commit_lsn); extern void logicalrep_read_commit(StringInfo in, LogicalRepCommitData *commit_data); extern void logicalrep_write_origin(StringInfo out, const char *origin, XLogRecPtr origin_lsn); extern char *logicalrep_read_origin(StringInfo in, XLogRecPtr *origin_lsn); extern void logicalrep_write_insert(StringInfo out, Relation rel, HeapTuple newtuple); extern LogicalRepRelId logicalrep_read_insert(StringInfo in, LogicalRepTupleData *newtup); extern void logicalrep_write_update(StringInfo out, Relation rel, HeapTuple oldtuple, HeapTuple newtuple); extern LogicalRepRelId logicalrep_read_update(StringInfo in, bool *has_oldtuple, LogicalRepTupleData *oldtup, LogicalRepTupleData *newtup); extern void logicalrep_write_delete(StringInfo out, Relation rel, HeapTuple oldtuple); extern LogicalRepRelId logicalrep_read_delete(StringInfo in, LogicalRepTupleData *oldtup); extern void logicalrep_write_truncate(StringInfo out, int nrelids, Oid relids[], bool cascade, bool restart_seqs); extern List *logicalrep_read_truncate(StringInfo in, bool *cascade, bool *restart_seqs); extern void logicalrep_write_rel(StringInfo out, Relation rel); extern LogicalRepRelation *logicalrep_read_rel(StringInfo in); extern void logicalrep_write_typ(StringInfo out, Oid typoid); extern void logicalrep_read_typ(StringInfo out, LogicalRepTyp *ltyp); #endif /* LOGICAL_PROTO_H */ libpg_query-13-2.1.0/src/postgres/include/replication/logicalworker.h000066400000000000000000000010031413137616400256630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * logicalworker.h * Exports for logical replication workers. * * Portions Copyright (c) 2016-2020, PostgreSQL Global Development Group * * src/include/replication/logicalworker.h * *------------------------------------------------------------------------- */ #ifndef LOGICALWORKER_H #define LOGICALWORKER_H extern void ApplyWorkerMain(Datum main_arg); extern bool IsLogicalWorker(void); #endif /* LOGICALWORKER_H */ libpg_query-13-2.1.0/src/postgres/include/replication/origin.h000066400000000000000000000045161413137616400243220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * origin.h * Exports from replication/logical/origin.c * * Copyright (c) 2013-2020, PostgreSQL Global Development Group * * src/include/replication/origin.h *------------------------------------------------------------------------- */ #ifndef PG_ORIGIN_H #define PG_ORIGIN_H #include "access/xlog.h" #include "access/xlogdefs.h" #include "access/xlogreader.h" #include "catalog/pg_replication_origin.h" typedef struct xl_replorigin_set { XLogRecPtr remote_lsn; RepOriginId node_id; bool force; } xl_replorigin_set; typedef struct xl_replorigin_drop { RepOriginId node_id; } xl_replorigin_drop; #define XLOG_REPLORIGIN_SET 0x00 #define XLOG_REPLORIGIN_DROP 0x10 #define InvalidRepOriginId 0 #define DoNotReplicateId PG_UINT16_MAX extern PGDLLIMPORT RepOriginId replorigin_session_origin; extern PGDLLIMPORT XLogRecPtr replorigin_session_origin_lsn; extern PGDLLIMPORT TimestampTz replorigin_session_origin_timestamp; /* API for querying & manipulating replication origins */ extern RepOriginId replorigin_by_name(char *name, bool missing_ok); extern RepOriginId replorigin_create(char *name); extern void replorigin_drop(RepOriginId roident, bool nowait); extern bool replorigin_by_oid(RepOriginId roident, bool missing_ok, char **roname); /* API for querying & manipulating replication progress tracking */ extern void replorigin_advance(RepOriginId node, XLogRecPtr remote_commit, XLogRecPtr local_commit, bool go_backward, bool wal_log); extern XLogRecPtr replorigin_get_progress(RepOriginId node, bool flush); extern void replorigin_session_advance(XLogRecPtr remote_commit, XLogRecPtr local_commit); extern void replorigin_session_setup(RepOriginId node); extern void replorigin_session_reset(void); extern XLogRecPtr replorigin_session_get_progress(bool flush); /* Checkpoint/Startup integration */ extern void CheckPointReplicationOrigin(void); extern void StartupReplicationOrigin(void); /* WAL logging */ void replorigin_redo(XLogReaderState *record); void replorigin_desc(StringInfo buf, XLogReaderState *record); const char *replorigin_identify(uint8 info); /* shared memory allocation */ extern Size ReplicationOriginShmemSize(void); extern void ReplicationOriginShmemInit(void); #endif /* PG_ORIGIN_H */ libpg_query-13-2.1.0/src/postgres/include/replication/reorderbuffer.h000066400000000000000000000324561413137616400256730ustar00rootroot00000000000000/* * reorderbuffer.h * PostgreSQL logical replay/reorder buffer management. * * Copyright (c) 2012-2020, PostgreSQL Global Development Group * * src/include/replication/reorderbuffer.h */ #ifndef REORDERBUFFER_H #define REORDERBUFFER_H #include "access/htup_details.h" #include "lib/ilist.h" #include "storage/sinval.h" #include "utils/hsearch.h" #include "utils/relcache.h" #include "utils/snapshot.h" #include "utils/timestamp.h" extern PGDLLIMPORT int logical_decoding_work_mem; /* an individual tuple, stored in one chunk of memory */ typedef struct ReorderBufferTupleBuf { /* position in preallocated list */ slist_node node; /* tuple header, the interesting bit for users of logical decoding */ HeapTupleData tuple; /* pre-allocated size of tuple buffer, different from tuple size */ Size alloc_tuple_size; /* actual tuple data follows */ } ReorderBufferTupleBuf; /* pointer to the data stored in a TupleBuf */ #define ReorderBufferTupleBufData(p) \ ((HeapTupleHeader) MAXALIGN(((char *) p) + sizeof(ReorderBufferTupleBuf))) /* * Types of the change passed to a 'change' callback. * * For efficiency and simplicity reasons we want to keep Snapshots, CommandIds * and ComboCids in the same list with the user visible INSERT/UPDATE/DELETE * changes. Users of the decoding facilities will never see changes with * *_INTERNAL_* actions. * * The INTERNAL_SPEC_INSERT and INTERNAL_SPEC_CONFIRM changes concern * "speculative insertions", and their confirmation respectively. They're * used by INSERT .. ON CONFLICT .. UPDATE. Users of logical decoding don't * have to care about these. */ enum ReorderBufferChangeType { REORDER_BUFFER_CHANGE_INSERT, REORDER_BUFFER_CHANGE_UPDATE, REORDER_BUFFER_CHANGE_DELETE, REORDER_BUFFER_CHANGE_MESSAGE, REORDER_BUFFER_CHANGE_INTERNAL_SNAPSHOT, REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID, REORDER_BUFFER_CHANGE_INTERNAL_TUPLECID, REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT, REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM, REORDER_BUFFER_CHANGE_TRUNCATE }; /* forward declaration */ struct ReorderBufferTXN; /* * a single 'change', can be an insert (with one tuple), an update (old, new), * or a delete (old). * * The same struct is also used internally for other purposes but that should * never be visible outside reorderbuffer.c. */ typedef struct ReorderBufferChange { XLogRecPtr lsn; /* The type of change. */ enum ReorderBufferChangeType action; /* Transaction this change belongs to. */ struct ReorderBufferTXN *txn; RepOriginId origin_id; /* * Context data for the change. Which part of the union is valid depends * on action. */ union { /* Old, new tuples when action == *_INSERT|UPDATE|DELETE */ struct { /* relation that has been changed */ RelFileNode relnode; /* no previously reassembled toast chunks are necessary anymore */ bool clear_toast_afterwards; /* valid for DELETE || UPDATE */ ReorderBufferTupleBuf *oldtuple; /* valid for INSERT || UPDATE */ ReorderBufferTupleBuf *newtuple; } tp; /* * Truncate data for REORDER_BUFFER_CHANGE_TRUNCATE representing one * set of relations to be truncated. */ struct { Size nrelids; bool cascade; bool restart_seqs; Oid *relids; } truncate; /* Message with arbitrary data. */ struct { char *prefix; Size message_size; char *message; } msg; /* New snapshot, set when action == *_INTERNAL_SNAPSHOT */ Snapshot snapshot; /* * New command id for existing snapshot in a catalog changing tx. Set * when action == *_INTERNAL_COMMAND_ID. */ CommandId command_id; /* * New cid mapping for catalog changing transaction, set when action * == *_INTERNAL_TUPLECID. */ struct { RelFileNode node; ItemPointerData tid; CommandId cmin; CommandId cmax; CommandId combocid; } tuplecid; } data; /* * While in use this is how a change is linked into a transactions, * otherwise it's the preallocated list. */ dlist_node node; } ReorderBufferChange; /* ReorderBufferTXN txn_flags */ #define RBTXN_HAS_CATALOG_CHANGES 0x0001 #define RBTXN_IS_SUBXACT 0x0002 #define RBTXN_IS_SERIALIZED 0x0004 /* Does the transaction have catalog changes? */ #define rbtxn_has_catalog_changes(txn) \ ( \ ((txn)->txn_flags & RBTXN_HAS_CATALOG_CHANGES) != 0 \ ) /* Is the transaction known as a subxact? */ #define rbtxn_is_known_subxact(txn) \ ( \ ((txn)->txn_flags & RBTXN_IS_SUBXACT) != 0 \ ) /* Has this transaction been spilled to disk? */ #define rbtxn_is_serialized(txn) \ ( \ ((txn)->txn_flags & RBTXN_IS_SERIALIZED) != 0 \ ) typedef struct ReorderBufferTXN { /* See above */ bits32 txn_flags; /* The transaction's transaction id, can be a toplevel or sub xid. */ TransactionId xid; /* Xid of top-level transaction, if known */ TransactionId toplevel_xid; /* * LSN of the first data carrying, WAL record with knowledge about this * xid. This is allowed to *not* be first record adorned with this xid, if * the previous records aren't relevant for logical decoding. */ XLogRecPtr first_lsn; /* ---- * LSN of the record that lead to this xact to be committed or * aborted. This can be a * * plain commit record * * plain commit record, of a parent transaction * * prepared transaction commit * * plain abort record * * prepared transaction abort * * This can also become set to earlier values than transaction end when * a transaction is spilled to disk; specifically it's set to the LSN of * the latest change written to disk so far. * ---- */ XLogRecPtr final_lsn; /* * LSN pointing to the end of the commit record + 1. */ XLogRecPtr end_lsn; /* * LSN of the last lsn at which snapshot information reside, so we can * restart decoding from there and fully recover this transaction from * WAL. */ XLogRecPtr restart_decoding_lsn; /* origin of the change that caused this transaction */ RepOriginId origin_id; XLogRecPtr origin_lsn; /* * Commit time, only known when we read the actual commit record. */ TimestampTz commit_time; /* * The base snapshot is used to decode all changes until either this * transaction modifies the catalog, or another catalog-modifying * transaction commits. */ Snapshot base_snapshot; XLogRecPtr base_snapshot_lsn; dlist_node base_snapshot_node; /* link in txns_by_base_snapshot_lsn */ /* * How many ReorderBufferChange's do we have in this txn. * * Changes in subtransactions are *not* included but tracked separately. */ uint64 nentries; /* * How many of the above entries are stored in memory in contrast to being * spilled to disk. */ uint64 nentries_mem; /* * List of ReorderBufferChange structs, including new Snapshots and new * CommandIds */ dlist_head changes; /* * List of (relation, ctid) => (cmin, cmax) mappings for catalog tuples. * Those are always assigned to the toplevel transaction. (Keep track of * #entries to create a hash of the right size) */ dlist_head tuplecids; uint64 ntuplecids; /* * On-demand built hash for looking up the above values. */ HTAB *tuplecid_hash; /* * Hash containing (potentially partial) toast entries. NULL if no toast * tuples have been found for the current change. */ HTAB *toast_hash; /* * non-hierarchical list of subtransactions that are *not* aborted. Only * used in toplevel transactions. */ dlist_head subtxns; uint32 nsubtxns; /* * Stored cache invalidations. This is not a linked list because we get * all the invalidations at once. */ uint32 ninvalidations; SharedInvalidationMessage *invalidations; /* --- * Position in one of three lists: * * list of subtransactions if we are *known* to be subxact * * list of toplevel xacts (can be an as-yet unknown subxact) * * list of preallocated ReorderBufferTXNs (if unused) * --- */ dlist_node node; /* * Size of this transaction (changes currently in memory, in bytes). */ Size size; } ReorderBufferTXN; /* so we can define the callbacks used inside struct ReorderBuffer itself */ typedef struct ReorderBuffer ReorderBuffer; /* change callback signature */ typedef void (*ReorderBufferApplyChangeCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, Relation relation, ReorderBufferChange *change); /* truncate callback signature */ typedef void (*ReorderBufferApplyTruncateCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, int nrelations, Relation relations[], ReorderBufferChange *change); /* begin callback signature */ typedef void (*ReorderBufferBeginCB) (ReorderBuffer *rb, ReorderBufferTXN *txn); /* commit callback signature */ typedef void (*ReorderBufferCommitCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr commit_lsn); /* message callback signature */ typedef void (*ReorderBufferMessageCB) (ReorderBuffer *rb, ReorderBufferTXN *txn, XLogRecPtr message_lsn, bool transactional, const char *prefix, Size sz, const char *message); struct ReorderBuffer { /* * xid => ReorderBufferTXN lookup table */ HTAB *by_txn; /* * Transactions that could be a toplevel xact, ordered by LSN of the first * record bearing that xid. */ dlist_head toplevel_by_lsn; /* * Transactions and subtransactions that have a base snapshot, ordered by * LSN of the record which caused us to first obtain the base snapshot. * This is not the same as toplevel_by_lsn, because we only set the base * snapshot on the first logical-decoding-relevant record (eg. heap * writes), whereas the initial LSN could be set by other operations. */ dlist_head txns_by_base_snapshot_lsn; /* * one-entry sized cache for by_txn. Very frequently the same txn gets * looked up over and over again. */ TransactionId by_txn_last_xid; ReorderBufferTXN *by_txn_last_txn; /* * Callbacks to be called when a transactions commits. */ ReorderBufferBeginCB begin; ReorderBufferApplyChangeCB apply_change; ReorderBufferApplyTruncateCB apply_truncate; ReorderBufferCommitCB commit; ReorderBufferMessageCB message; /* * Pointer that will be passed untouched to the callbacks. */ void *private_data; /* * Saved output plugin option */ bool output_rewrites; /* * Private memory context. */ MemoryContext context; /* * Memory contexts for specific types objects */ MemoryContext change_context; MemoryContext txn_context; MemoryContext tup_context; XLogRecPtr current_restart_decoding_lsn; /* buffer for disk<->memory conversions */ char *outbuf; Size outbufsize; /* memory accounting */ Size size; }; ReorderBuffer *ReorderBufferAllocate(void); void ReorderBufferFree(ReorderBuffer *); ReorderBufferTupleBuf *ReorderBufferGetTupleBuf(ReorderBuffer *, Size tuple_len); void ReorderBufferReturnTupleBuf(ReorderBuffer *, ReorderBufferTupleBuf *tuple); ReorderBufferChange *ReorderBufferGetChange(ReorderBuffer *); void ReorderBufferReturnChange(ReorderBuffer *, ReorderBufferChange *); Oid *ReorderBufferGetRelids(ReorderBuffer *, int nrelids); void ReorderBufferReturnRelids(ReorderBuffer *, Oid *relids); void ReorderBufferQueueChange(ReorderBuffer *, TransactionId, XLogRecPtr lsn, ReorderBufferChange *); void ReorderBufferQueueMessage(ReorderBuffer *, TransactionId, Snapshot snapshot, XLogRecPtr lsn, bool transactional, const char *prefix, Size message_size, const char *message); void ReorderBufferCommit(ReorderBuffer *, TransactionId, XLogRecPtr commit_lsn, XLogRecPtr end_lsn, TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn); void ReorderBufferAssignChild(ReorderBuffer *, TransactionId, TransactionId, XLogRecPtr commit_lsn); void ReorderBufferCommitChild(ReorderBuffer *, TransactionId, TransactionId, XLogRecPtr commit_lsn, XLogRecPtr end_lsn); void ReorderBufferAbort(ReorderBuffer *, TransactionId, XLogRecPtr lsn); void ReorderBufferAbortOld(ReorderBuffer *, TransactionId xid); void ReorderBufferForget(ReorderBuffer *, TransactionId, XLogRecPtr lsn); void ReorderBufferSetBaseSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap); void ReorderBufferAddSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap); void ReorderBufferAddNewCommandId(ReorderBuffer *, TransactionId, XLogRecPtr lsn, CommandId cid); void ReorderBufferAddNewTupleCids(ReorderBuffer *, TransactionId, XLogRecPtr lsn, RelFileNode node, ItemPointerData pt, CommandId cmin, CommandId cmax, CommandId combocid); void ReorderBufferAddInvalidations(ReorderBuffer *, TransactionId, XLogRecPtr lsn, Size nmsgs, SharedInvalidationMessage *msgs); void ReorderBufferImmediateInvalidation(ReorderBuffer *, uint32 ninvalidations, SharedInvalidationMessage *invalidations); void ReorderBufferProcessXid(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn); void ReorderBufferXidSetCatalogChanges(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn); bool ReorderBufferXidHasCatalogChanges(ReorderBuffer *, TransactionId xid); bool ReorderBufferXidHasBaseSnapshot(ReorderBuffer *, TransactionId xid); ReorderBufferTXN *ReorderBufferGetOldestTXN(ReorderBuffer *); TransactionId ReorderBufferGetOldestXmin(ReorderBuffer *rb); void ReorderBufferSetRestartPoint(ReorderBuffer *, XLogRecPtr ptr); void StartupReorderBuffer(void); #endif libpg_query-13-2.1.0/src/postgres/include/replication/slot.h000066400000000000000000000157071413137616400240200ustar00rootroot00000000000000/*------------------------------------------------------------------------- * slot.h * Replication slot management. * * Copyright (c) 2012-2020, PostgreSQL Global Development Group * *------------------------------------------------------------------------- */ #ifndef SLOT_H #define SLOT_H #include "access/xlog.h" #include "access/xlogreader.h" #include "storage/condition_variable.h" #include "storage/lwlock.h" #include "storage/shmem.h" #include "storage/spin.h" /* * Behaviour of replication slots, upon release or crash. * * Slots marked as PERSISTENT are crash-safe and will not be dropped when * released. Slots marked as EPHEMERAL will be dropped when released or after * restarts. Slots marked TEMPORARY will be dropped at the end of a session * or on error. * * EPHEMERAL is used as a not-quite-ready state when creating persistent * slots. EPHEMERAL slots can be made PERSISTENT by calling * ReplicationSlotPersist(). For a slot that goes away at the end of a * session, TEMPORARY is the appropriate choice. */ typedef enum ReplicationSlotPersistency { RS_PERSISTENT, RS_EPHEMERAL, RS_TEMPORARY } ReplicationSlotPersistency; /* For ReplicationSlotAcquire, q.v. */ typedef enum SlotAcquireBehavior { SAB_Error, SAB_Block, SAB_Inquire } SlotAcquireBehavior; /* * On-Disk data of a replication slot, preserved across restarts. */ typedef struct ReplicationSlotPersistentData { /* The slot's identifier */ NameData name; /* database the slot is active on */ Oid database; /* * The slot's behaviour when being dropped (or restored after a crash). */ ReplicationSlotPersistency persistency; /* * xmin horizon for data * * NB: This may represent a value that hasn't been written to disk yet; * see notes for effective_xmin, below. */ TransactionId xmin; /* * xmin horizon for catalog tuples * * NB: This may represent a value that hasn't been written to disk yet; * see notes for effective_xmin, below. */ TransactionId catalog_xmin; /* oldest LSN that might be required by this replication slot */ XLogRecPtr restart_lsn; /* restart_lsn is copied here when the slot is invalidated */ XLogRecPtr invalidated_at; /* * Oldest LSN that the client has acked receipt for. This is used as the * start_lsn point in case the client doesn't specify one, and also as a * safety measure to jump forwards in case the client specifies a * start_lsn that's further in the past than this value. */ XLogRecPtr confirmed_flush; /* plugin name */ NameData plugin; } ReplicationSlotPersistentData; /* * Shared memory state of a single replication slot. * * The in-memory data of replication slots follows a locking model based * on two linked concepts: * - A replication slot's in_use flag is switched when added or discarded using * the LWLock ReplicationSlotControlLock, which needs to be hold in exclusive * mode when updating the flag by the backend owning the slot and doing the * operation, while readers (concurrent backends not owning the slot) need * to hold it in shared mode when looking at replication slot data. * - Individual fields are protected by mutex where only the backend owning * the slot is authorized to update the fields from its own slot. The * backend owning the slot does not need to take this lock when reading its * own fields, while concurrent backends not owning this slot should take the * lock when reading this slot's data. */ typedef struct ReplicationSlot { /* lock, on same cacheline as effective_xmin */ slock_t mutex; /* is this slot defined */ bool in_use; /* Who is streaming out changes for this slot? 0 in unused slots. */ pid_t active_pid; /* any outstanding modifications? */ bool just_dirtied; bool dirty; /* * For logical decoding, it's extremely important that we never remove any * data that's still needed for decoding purposes, even after a crash; * otherwise, decoding will produce wrong answers. Ordinary streaming * replication also needs to prevent old row versions from being removed * too soon, but the worst consequence we might encounter there is * unwanted query cancellations on the standby. Thus, for logical * decoding, this value represents the latest xmin that has actually been * written to disk, whereas for streaming replication, it's just the same * as the persistent value (data.xmin). */ TransactionId effective_xmin; TransactionId effective_catalog_xmin; /* data surviving shutdowns and crashes */ ReplicationSlotPersistentData data; /* is somebody performing io on this slot? */ LWLock io_in_progress_lock; /* Condition variable signaled when active_pid changes */ ConditionVariable active_cv; /* all the remaining data is only used for logical slots */ /* * When the client has confirmed flushes >= candidate_xmin_lsn we can * advance the catalog xmin. When restart_valid has been passed, * restart_lsn can be increased. */ TransactionId candidate_catalog_xmin; XLogRecPtr candidate_xmin_lsn; XLogRecPtr candidate_restart_valid; XLogRecPtr candidate_restart_lsn; } ReplicationSlot; #define SlotIsPhysical(slot) ((slot)->data.database == InvalidOid) #define SlotIsLogical(slot) ((slot)->data.database != InvalidOid) /* * Shared memory control area for all of replication slots. */ typedef struct ReplicationSlotCtlData { /* * This array should be declared [FLEXIBLE_ARRAY_MEMBER], but for some * reason you can't do that in an otherwise-empty struct. */ ReplicationSlot replication_slots[1]; } ReplicationSlotCtlData; /* * Pointers to shared memory */ extern PGDLLIMPORT ReplicationSlotCtlData *ReplicationSlotCtl; extern PGDLLIMPORT ReplicationSlot *MyReplicationSlot; /* GUCs */ extern PGDLLIMPORT int max_replication_slots; /* shmem initialization functions */ extern Size ReplicationSlotsShmemSize(void); extern void ReplicationSlotsShmemInit(void); /* management of individual slots */ extern void ReplicationSlotCreate(const char *name, bool db_specific, ReplicationSlotPersistency p); extern void ReplicationSlotPersist(void); extern void ReplicationSlotDrop(const char *name, bool nowait); extern int ReplicationSlotAcquire(const char *name, SlotAcquireBehavior behavior); extern void ReplicationSlotRelease(void); extern void ReplicationSlotCleanup(void); extern void ReplicationSlotSave(void); extern void ReplicationSlotMarkDirty(void); /* misc stuff */ extern bool ReplicationSlotValidateName(const char *name, int elevel); extern void ReplicationSlotReserveWal(void); extern void ReplicationSlotsComputeRequiredXmin(bool already_locked); extern void ReplicationSlotsComputeRequiredLSN(void); extern XLogRecPtr ReplicationSlotsComputeLogicalRestartLSN(void); extern bool ReplicationSlotsCountDBSlots(Oid dboid, int *nslots, int *nactive); extern void ReplicationSlotsDropDBSlots(Oid dboid); extern void InvalidateObsoleteReplicationSlots(XLogSegNo oldestSegno); extern void StartupReplicationSlots(void); extern void CheckPointReplicationSlots(void); extern void CheckSlotRequirements(void); #endif /* SLOT_H */ libpg_query-13-2.1.0/src/postgres/include/replication/syncrep.h000066400000000000000000000067421413137616400245210ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * syncrep.h * Exports from replication/syncrep.c. * * Portions Copyright (c) 2010-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/replication/syncrep.h * *------------------------------------------------------------------------- */ #ifndef _SYNCREP_H #define _SYNCREP_H #include "access/xlogdefs.h" #include "utils/guc.h" #define SyncRepRequested() \ (max_wal_senders > 0 && synchronous_commit > SYNCHRONOUS_COMMIT_LOCAL_FLUSH) /* SyncRepWaitMode */ #define SYNC_REP_NO_WAIT (-1) #define SYNC_REP_WAIT_WRITE 0 #define SYNC_REP_WAIT_FLUSH 1 #define SYNC_REP_WAIT_APPLY 2 #define NUM_SYNC_REP_WAIT_MODE 3 /* syncRepState */ #define SYNC_REP_NOT_WAITING 0 #define SYNC_REP_WAITING 1 #define SYNC_REP_WAIT_COMPLETE 2 /* syncrep_method of SyncRepConfigData */ #define SYNC_REP_PRIORITY 0 #define SYNC_REP_QUORUM 1 /* * SyncRepGetCandidateStandbys returns an array of these structs, * one per candidate synchronous walsender. */ typedef struct SyncRepStandbyData { /* Copies of relevant fields from WalSnd shared-memory struct */ pid_t pid; XLogRecPtr write; XLogRecPtr flush; XLogRecPtr apply; int sync_standby_priority; /* Index of this walsender in the WalSnd shared-memory array */ int walsnd_index; /* This flag indicates whether this struct is about our own process */ bool is_me; } SyncRepStandbyData; /* * Struct for the configuration of synchronous replication. * * Note: this must be a flat representation that can be held in a single * chunk of malloc'd memory, so that it can be stored as the "extra" data * for the synchronous_standby_names GUC. */ typedef struct SyncRepConfigData { int config_size; /* total size of this struct, in bytes */ int num_sync; /* number of sync standbys that we need to * wait for */ uint8 syncrep_method; /* method to choose sync standbys */ int nmembers; /* number of members in the following list */ /* member_names contains nmembers consecutive nul-terminated C strings */ char member_names[FLEXIBLE_ARRAY_MEMBER]; } SyncRepConfigData; extern SyncRepConfigData *SyncRepConfig; /* communication variables for parsing synchronous_standby_names GUC */ extern SyncRepConfigData *syncrep_parse_result; extern char *syncrep_parse_error_msg; /* user-settable parameters for synchronous replication */ extern char *SyncRepStandbyNames; /* called by user backend */ extern void SyncRepWaitForLSN(XLogRecPtr lsn, bool commit); /* called at backend exit */ extern void SyncRepCleanupAtProcExit(void); /* called by wal sender */ extern void SyncRepInitConfig(void); extern void SyncRepReleaseWaiters(void); /* called by wal sender and user backend */ extern int SyncRepGetCandidateStandbys(SyncRepStandbyData **standbys); /* called by checkpointer */ extern void SyncRepUpdateSyncStandbysDefined(void); /* GUC infrastructure */ extern bool check_synchronous_standby_names(char **newval, void **extra, GucSource source); extern void assign_synchronous_standby_names(const char *newval, void *extra); extern void assign_synchronous_commit(int newval, void *extra); /* * Internal functions for parsing synchronous_standby_names grammar, * in syncrep_gram.y and syncrep_scanner.l */ extern int syncrep_yyparse(void); extern int syncrep_yylex(void); extern void syncrep_yyerror(const char *str); extern void syncrep_scanner_init(const char *query_string); extern void syncrep_scanner_finish(void); #endif /* _SYNCREP_H */ libpg_query-13-2.1.0/src/postgres/include/replication/walreceiver.h000066400000000000000000000263201413137616400253400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * walreceiver.h * Exports from replication/walreceiverfuncs.c. * * Portions Copyright (c) 2010-2020, PostgreSQL Global Development Group * * src/include/replication/walreceiver.h * *------------------------------------------------------------------------- */ #ifndef _WALRECEIVER_H #define _WALRECEIVER_H #include "access/xlog.h" #include "access/xlogdefs.h" #include "getaddrinfo.h" /* for NI_MAXHOST */ #include "pgtime.h" #include "port/atomics.h" #include "replication/logicalproto.h" #include "replication/walsender.h" #include "storage/latch.h" #include "storage/spin.h" #include "utils/tuplestore.h" /* user-settable parameters */ extern int wal_receiver_status_interval; extern int wal_receiver_timeout; extern bool hot_standby_feedback; /* * MAXCONNINFO: maximum size of a connection string. * * XXX: Should this move to pg_config_manual.h? */ #define MAXCONNINFO 1024 /* Can we allow the standby to accept replication connection from another standby? */ #define AllowCascadeReplication() (EnableHotStandby && max_wal_senders > 0) /* * Values for WalRcv->walRcvState. */ typedef enum { WALRCV_STOPPED, /* stopped and mustn't start up again */ WALRCV_STARTING, /* launched, but the process hasn't * initialized yet */ WALRCV_STREAMING, /* walreceiver is streaming */ WALRCV_WAITING, /* stopped streaming, waiting for orders */ WALRCV_RESTARTING, /* asked to restart streaming */ WALRCV_STOPPING /* requested to stop, but still running */ } WalRcvState; /* Shared memory area for management of walreceiver process */ typedef struct { /* * PID of currently active walreceiver process, its current state and * start time (actually, the time at which it was requested to be * started). */ pid_t pid; WalRcvState walRcvState; pg_time_t startTime; /* * receiveStart and receiveStartTLI indicate the first byte position and * timeline that will be received. When startup process starts the * walreceiver, it sets these to the point where it wants the streaming to * begin. */ XLogRecPtr receiveStart; TimeLineID receiveStartTLI; /* * flushedUpto-1 is the last byte position that has already been received, * and receivedTLI is the timeline it came from. At the first startup of * walreceiver, these are set to receiveStart and receiveStartTLI. After * that, walreceiver updates these whenever it flushes the received WAL to * disk. */ XLogRecPtr flushedUpto; TimeLineID receivedTLI; /* * latestChunkStart is the starting byte position of the current "batch" * of received WAL. It's actually the same as the previous value of * flushedUpto before the last flush to disk. Startup process can use * this to detect whether it's keeping up or not. */ XLogRecPtr latestChunkStart; /* * Time of send and receive of any message received. */ TimestampTz lastMsgSendTime; TimestampTz lastMsgReceiptTime; /* * Latest reported end of WAL on the sender */ XLogRecPtr latestWalEnd; TimestampTz latestWalEndTime; /* * connection string; initially set to connect to the primary, and later * clobbered to hide security-sensitive fields. */ char conninfo[MAXCONNINFO]; /* * Host name (this can be a host name, an IP address, or a directory path) * and port number of the active replication connection. */ char sender_host[NI_MAXHOST]; int sender_port; /* * replication slot name; is also used for walreceiver to connect with the * primary */ char slotname[NAMEDATALEN]; /* * If it's a temporary replication slot, it needs to be recreated when * connecting. */ bool is_temp_slot; /* set true once conninfo is ready to display (obfuscated pwds etc) */ bool ready_to_display; /* * Latch used by startup process to wake up walreceiver after telling it * where to start streaming (after setting receiveStart and * receiveStartTLI), and also to tell it to send apply feedback to the * primary whenever specially marked commit records are applied. This is * normally mapped to procLatch when walreceiver is running. */ Latch *latch; slock_t mutex; /* locks shared variables shown above */ /* * Like flushedUpto, but advanced after writing and before flushing, * without the need to acquire the spin lock. Data can be read by another * process up to this point, but shouldn't be used for data integrity * purposes. */ pg_atomic_uint64 writtenUpto; /* * force walreceiver reply? This doesn't need to be locked; memory * barriers for ordering are sufficient. But we do need atomic fetch and * store semantics, so use sig_atomic_t. */ sig_atomic_t force_reply; /* used as a bool */ } WalRcvData; extern WalRcvData *WalRcv; typedef struct { bool logical; /* True if this is logical replication stream, * false if physical stream. */ char *slotname; /* Name of the replication slot or NULL. */ XLogRecPtr startpoint; /* LSN of starting point. */ union { struct { TimeLineID startpointTLI; /* Starting timeline */ } physical; struct { uint32 proto_version; /* Logical protocol version */ List *publication_names; /* String list of publications */ } logical; } proto; } WalRcvStreamOptions; struct WalReceiverConn; typedef struct WalReceiverConn WalReceiverConn; /* * Status of walreceiver query execution. * * We only define statuses that are currently used. */ typedef enum { WALRCV_ERROR, /* There was error when executing the query. */ WALRCV_OK_COMMAND, /* Query executed utility or replication * command. */ WALRCV_OK_TUPLES, /* Query returned tuples. */ WALRCV_OK_COPY_IN, /* Query started COPY FROM. */ WALRCV_OK_COPY_OUT, /* Query started COPY TO. */ WALRCV_OK_COPY_BOTH /* Query started COPY BOTH replication * protocol. */ } WalRcvExecStatus; /* * Return value for walrcv_exec, returns the status of the execution and * tuples if any. */ typedef struct WalRcvExecResult { WalRcvExecStatus status; char *err; Tuplestorestate *tuplestore; TupleDesc tupledesc; } WalRcvExecResult; /* libpqwalreceiver hooks */ typedef WalReceiverConn *(*walrcv_connect_fn) (const char *conninfo, bool logical, const char *appname, char **err); typedef void (*walrcv_check_conninfo_fn) (const char *conninfo); typedef char *(*walrcv_get_conninfo_fn) (WalReceiverConn *conn); typedef void (*walrcv_get_senderinfo_fn) (WalReceiverConn *conn, char **sender_host, int *sender_port); typedef char *(*walrcv_identify_system_fn) (WalReceiverConn *conn, TimeLineID *primary_tli); typedef int (*walrcv_server_version_fn) (WalReceiverConn *conn); typedef void (*walrcv_readtimelinehistoryfile_fn) (WalReceiverConn *conn, TimeLineID tli, char **filename, char **content, int *size); typedef bool (*walrcv_startstreaming_fn) (WalReceiverConn *conn, const WalRcvStreamOptions *options); typedef void (*walrcv_endstreaming_fn) (WalReceiverConn *conn, TimeLineID *next_tli); typedef int (*walrcv_receive_fn) (WalReceiverConn *conn, char **buffer, pgsocket *wait_fd); typedef void (*walrcv_send_fn) (WalReceiverConn *conn, const char *buffer, int nbytes); typedef char *(*walrcv_create_slot_fn) (WalReceiverConn *conn, const char *slotname, bool temporary, CRSSnapshotAction snapshot_action, XLogRecPtr *lsn); typedef pid_t (*walrcv_get_backend_pid_fn) (WalReceiverConn *conn); typedef WalRcvExecResult *(*walrcv_exec_fn) (WalReceiverConn *conn, const char *query, const int nRetTypes, const Oid *retTypes); typedef void (*walrcv_disconnect_fn) (WalReceiverConn *conn); typedef struct WalReceiverFunctionsType { walrcv_connect_fn walrcv_connect; walrcv_check_conninfo_fn walrcv_check_conninfo; walrcv_get_conninfo_fn walrcv_get_conninfo; walrcv_get_senderinfo_fn walrcv_get_senderinfo; walrcv_identify_system_fn walrcv_identify_system; walrcv_server_version_fn walrcv_server_version; walrcv_readtimelinehistoryfile_fn walrcv_readtimelinehistoryfile; walrcv_startstreaming_fn walrcv_startstreaming; walrcv_endstreaming_fn walrcv_endstreaming; walrcv_receive_fn walrcv_receive; walrcv_send_fn walrcv_send; walrcv_create_slot_fn walrcv_create_slot; walrcv_get_backend_pid_fn walrcv_get_backend_pid; walrcv_exec_fn walrcv_exec; walrcv_disconnect_fn walrcv_disconnect; } WalReceiverFunctionsType; extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions; #define walrcv_connect(conninfo, logical, appname, err) \ WalReceiverFunctions->walrcv_connect(conninfo, logical, appname, err) #define walrcv_check_conninfo(conninfo) \ WalReceiverFunctions->walrcv_check_conninfo(conninfo) #define walrcv_get_conninfo(conn) \ WalReceiverFunctions->walrcv_get_conninfo(conn) #define walrcv_get_senderinfo(conn, sender_host, sender_port) \ WalReceiverFunctions->walrcv_get_senderinfo(conn, sender_host, sender_port) #define walrcv_identify_system(conn, primary_tli) \ WalReceiverFunctions->walrcv_identify_system(conn, primary_tli) #define walrcv_server_version(conn) \ WalReceiverFunctions->walrcv_server_version(conn) #define walrcv_readtimelinehistoryfile(conn, tli, filename, content, size) \ WalReceiverFunctions->walrcv_readtimelinehistoryfile(conn, tli, filename, content, size) #define walrcv_startstreaming(conn, options) \ WalReceiverFunctions->walrcv_startstreaming(conn, options) #define walrcv_endstreaming(conn, next_tli) \ WalReceiverFunctions->walrcv_endstreaming(conn, next_tli) #define walrcv_receive(conn, buffer, wait_fd) \ WalReceiverFunctions->walrcv_receive(conn, buffer, wait_fd) #define walrcv_send(conn, buffer, nbytes) \ WalReceiverFunctions->walrcv_send(conn, buffer, nbytes) #define walrcv_create_slot(conn, slotname, temporary, snapshot_action, lsn) \ WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, snapshot_action, lsn) #define walrcv_get_backend_pid(conn) \ WalReceiverFunctions->walrcv_get_backend_pid(conn) #define walrcv_exec(conn, exec, nRetTypes, retTypes) \ WalReceiverFunctions->walrcv_exec(conn, exec, nRetTypes, retTypes) #define walrcv_disconnect(conn) \ WalReceiverFunctions->walrcv_disconnect(conn) static inline void walrcv_clear_result(WalRcvExecResult *walres) { if (!walres) return; if (walres->err) pfree(walres->err); if (walres->tuplestore) tuplestore_end(walres->tuplestore); if (walres->tupledesc) FreeTupleDesc(walres->tupledesc); pfree(walres); } /* prototypes for functions in walreceiver.c */ extern void WalReceiverMain(void) pg_attribute_noreturn(); extern void ProcessWalRcvInterrupts(void); /* prototypes for functions in walreceiverfuncs.c */ extern Size WalRcvShmemSize(void); extern void WalRcvShmemInit(void); extern void ShutdownWalRcv(void); extern bool WalRcvStreaming(void); extern bool WalRcvRunning(void); extern void RequestXLogStreaming(TimeLineID tli, XLogRecPtr recptr, const char *conninfo, const char *slotname, bool create_temp_slot); extern XLogRecPtr GetWalRcvFlushRecPtr(XLogRecPtr *latestChunkStart, TimeLineID *receiveTLI); extern XLogRecPtr GetWalRcvWriteRecPtr(void); extern int GetReplicationApplyDelay(void); extern int GetReplicationTransferLatency(void); extern void WalRcvForceReply(void); #endif /* _WALRECEIVER_H */ libpg_query-13-2.1.0/src/postgres/include/replication/walsender.h000066400000000000000000000035471413137616400250220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * walsender.h * Exports from replication/walsender.c. * * Portions Copyright (c) 2010-2020, PostgreSQL Global Development Group * * src/include/replication/walsender.h * *------------------------------------------------------------------------- */ #ifndef _WALSENDER_H #define _WALSENDER_H #include /* * What to do with a snapshot in create replication slot command. */ typedef enum { CRS_EXPORT_SNAPSHOT, CRS_NOEXPORT_SNAPSHOT, CRS_USE_SNAPSHOT } CRSSnapshotAction; /* global state */ extern bool am_walsender; extern bool am_cascading_walsender; extern bool am_db_walsender; extern bool wake_wal_senders; /* user-settable parameters */ extern int max_wal_senders; extern int wal_sender_timeout; extern bool log_replication_commands; extern void InitWalSender(void); extern bool exec_replication_command(const char *query_string); extern void WalSndErrorCleanup(void); extern void WalSndResourceCleanup(bool isCommit); extern void WalSndSignals(void); extern Size WalSndShmemSize(void); extern void WalSndShmemInit(void); extern void WalSndWakeup(void); extern void WalSndInitStopping(void); extern void WalSndWaitStopping(void); extern void HandleWalSndInitStopping(void); extern void WalSndRqstFileReload(void); /* * Remember that we want to wakeup walsenders later * * This is separated from doing the actual wakeup because the writeout is done * while holding contended locks. */ #define WalSndWakeupRequest() \ do { wake_wal_senders = true; } while (0) /* * wakeup walsenders if there is work to be done */ #define WalSndWakeupProcessRequests() \ do \ { \ if (wake_wal_senders) \ { \ wake_wal_senders = false; \ if (max_wal_senders > 0) \ WalSndWakeup(); \ } \ } while (0) #endif /* _WALSENDER_H */ libpg_query-13-2.1.0/src/postgres/include/rewrite/000077500000000000000000000000001413137616400220245ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/rewrite/prs2lock.h000066400000000000000000000020401413137616400237300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * prs2lock.h * data structures for POSTGRES Rule System II (rewrite rules only) * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/rewrite/prs2lock.h * *------------------------------------------------------------------------- */ #ifndef PRS2LOCK_H #define PRS2LOCK_H #include "access/attnum.h" #include "nodes/pg_list.h" /* * RewriteRule - * holds an info for a rewrite rule * */ typedef struct RewriteRule { Oid ruleId; CmdType event; Node *qual; List *actions; char enabled; bool isInstead; } RewriteRule; /* * RuleLock - * all rules that apply to a particular relation. Even though we only * have the rewrite rule system left and these are not really "locks", * the name is kept for historical reasons. */ typedef struct RuleLock { int numLocks; RewriteRule **rules; } RuleLock; #endif /* PRS2LOCK_H */ libpg_query-13-2.1.0/src/postgres/include/rewrite/rewriteHandler.h000066400000000000000000000024001413137616400251500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * rewriteHandler.h * External interface to query rewriter. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/rewrite/rewriteHandler.h * *------------------------------------------------------------------------- */ #ifndef REWRITEHANDLER_H #define REWRITEHANDLER_H #include "nodes/parsenodes.h" #include "utils/relcache.h" extern List *QueryRewrite(Query *parsetree); extern void AcquireRewriteLocks(Query *parsetree, bool forExecute, bool forUpdatePushedDown); extern Node *build_column_default(Relation rel, int attrno); extern void rewriteTargetListUD(Query *parsetree, RangeTblEntry *target_rte, Relation target_relation); extern void fill_extraUpdatedCols(RangeTblEntry *target_rte, Relation target_relation); extern Query *get_view_query(Relation view); extern const char *view_query_is_auto_updatable(Query *viewquery, bool check_cols); extern int relation_is_updatable(Oid reloid, List *outer_reloids, bool include_triggers, Bitmapset *include_cols); #endif /* REWRITEHANDLER_H */ libpg_query-13-2.1.0/src/postgres/include/rewrite/rewriteManip.h000066400000000000000000000060341413137616400246460ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * rewriteManip.h * Querytree manipulation subroutines for query rewriter. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/rewrite/rewriteManip.h * *------------------------------------------------------------------------- */ #ifndef REWRITEMANIP_H #define REWRITEMANIP_H #include "nodes/parsenodes.h" struct AttrMap; /* avoid including attmap.h here */ typedef struct replace_rte_variables_context replace_rte_variables_context; typedef Node *(*replace_rte_variables_callback) (Var *var, replace_rte_variables_context *context); struct replace_rte_variables_context { replace_rte_variables_callback callback; /* callback function */ void *callback_arg; /* context data for callback function */ int target_varno; /* RTE index to search for */ int sublevels_up; /* (current) nesting depth */ bool inserted_sublink; /* have we inserted a SubLink? */ }; typedef enum ReplaceVarsNoMatchOption { REPLACEVARS_REPORT_ERROR, /* throw error if no match */ REPLACEVARS_CHANGE_VARNO, /* change the Var's varno, nothing else */ REPLACEVARS_SUBSTITUTE_NULL /* replace with a NULL Const */ } ReplaceVarsNoMatchOption; extern void OffsetVarNodes(Node *node, int offset, int sublevels_up); extern void ChangeVarNodes(Node *node, int old_varno, int new_varno, int sublevels_up); extern void IncrementVarSublevelsUp(Node *node, int delta_sublevels_up, int min_sublevels_up); extern void IncrementVarSublevelsUp_rtable(List *rtable, int delta_sublevels_up, int min_sublevels_up); extern bool rangeTableEntry_used(Node *node, int rt_index, int sublevels_up); extern Query *getInsertSelectQuery(Query *parsetree, Query ***subquery_ptr); extern void AddQual(Query *parsetree, Node *qual); extern void AddInvertedQual(Query *parsetree, Node *qual); extern bool contain_aggs_of_level(Node *node, int levelsup); extern int locate_agg_of_level(Node *node, int levelsup); extern bool contain_windowfuncs(Node *node); extern int locate_windowfunc(Node *node); extern bool checkExprHasSubLink(Node *node); extern Node *replace_rte_variables(Node *node, int target_varno, int sublevels_up, replace_rte_variables_callback callback, void *callback_arg, bool *outer_hasSubLinks); extern Node *replace_rte_variables_mutator(Node *node, replace_rte_variables_context *context); extern Node *map_variable_attnos(Node *node, int target_varno, int sublevels_up, const struct AttrMap *attno_map, Oid to_rowtype, bool *found_whole_row); extern Node *ReplaceVarsFromTargetList(Node *node, int target_varno, int sublevels_up, RangeTblEntry *target_rte, List *targetlist, ReplaceVarsNoMatchOption nomatch_option, int nomatch_varno, bool *outer_hasSubLinks); #endif /* REWRITEMANIP_H */ libpg_query-13-2.1.0/src/postgres/include/rewrite/rewriteSupport.h000066400000000000000000000014161413137616400252550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * rewriteSupport.h * * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/rewrite/rewriteSupport.h * *------------------------------------------------------------------------- */ #ifndef REWRITESUPPORT_H #define REWRITESUPPORT_H /* The ON SELECT rule of a view is always named this: */ #define ViewSelectRuleName "_RETURN" extern bool IsDefinedRewriteRule(Oid owningRel, const char *ruleName); extern void SetRelationRuleStatus(Oid relationId, bool relHasRules); extern Oid get_rewrite_oid(Oid relid, const char *rulename, bool missing_ok); #endif /* REWRITESUPPORT_H */ libpg_query-13-2.1.0/src/postgres/include/storage/000077500000000000000000000000001413137616400220075ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/storage/backendid.h000066400000000000000000000021521413137616400240640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * backendid.h * POSTGRES backend id communication definitions * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/backendid.h * *------------------------------------------------------------------------- */ #ifndef BACKENDID_H #define BACKENDID_H /* ---------------- * -cim 8/17/90 * ---------------- */ typedef int BackendId; /* unique currently active backend identifier */ #define InvalidBackendId (-1) extern PGDLLIMPORT BackendId MyBackendId; /* backend id of this backend */ /* backend id of our parallel session leader, or InvalidBackendId if none */ extern PGDLLIMPORT BackendId ParallelMasterBackendId; /* * The BackendId to use for our session's temp relations is normally our own, * but parallel workers should use their leader's ID. */ #define BackendIdForTempRelations() \ (ParallelMasterBackendId == InvalidBackendId ? MyBackendId : ParallelMasterBackendId) #endif /* BACKENDID_H */ libpg_query-13-2.1.0/src/postgres/include/storage/block.h000066400000000000000000000063311413137616400232550ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * block.h * POSTGRES disk block definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/block.h * *------------------------------------------------------------------------- */ #ifndef BLOCK_H #define BLOCK_H /* * BlockNumber: * * each data file (heap or index) is divided into postgres disk blocks * (which may be thought of as the unit of i/o -- a postgres buffer * contains exactly one disk block). the blocks are numbered * sequentially, 0 to 0xFFFFFFFE. * * InvalidBlockNumber is the same thing as P_NEW in bufmgr.h. * * the access methods, the buffer manager and the storage manager are * more or less the only pieces of code that should be accessing disk * blocks directly. */ typedef uint32 BlockNumber; #define InvalidBlockNumber ((BlockNumber) 0xFFFFFFFF) #define MaxBlockNumber ((BlockNumber) 0xFFFFFFFE) /* * BlockId: * * this is a storage type for BlockNumber. in other words, this type * is used for on-disk structures (e.g., in HeapTupleData) whereas * BlockNumber is the type on which calculations are performed (e.g., * in access method code). * * there doesn't appear to be any reason to have separate types except * for the fact that BlockIds can be SHORTALIGN'd (and therefore any * structures that contains them, such as ItemPointerData, can also be * SHORTALIGN'd). this is an important consideration for reducing the * space requirements of the line pointer (ItemIdData) array on each * page and the header of each heap or index tuple, so it doesn't seem * wise to change this without good reason. */ typedef struct BlockIdData { uint16 bi_hi; uint16 bi_lo; } BlockIdData; typedef BlockIdData *BlockId; /* block identifier */ /* ---------------- * support macros * ---------------- */ /* * BlockNumberIsValid * True iff blockNumber is valid. */ #define BlockNumberIsValid(blockNumber) \ ((bool) ((BlockNumber) (blockNumber) != InvalidBlockNumber)) /* * BlockIdIsValid * True iff the block identifier is valid. */ #define BlockIdIsValid(blockId) \ ((bool) PointerIsValid(blockId)) /* * BlockIdSet * Sets a block identifier to the specified value. */ #define BlockIdSet(blockId, blockNumber) \ ( \ AssertMacro(PointerIsValid(blockId)), \ (blockId)->bi_hi = (blockNumber) >> 16, \ (blockId)->bi_lo = (blockNumber) & 0xffff \ ) /* * BlockIdCopy * Copy a block identifier. */ #define BlockIdCopy(toBlockId, fromBlockId) \ ( \ AssertMacro(PointerIsValid(toBlockId)), \ AssertMacro(PointerIsValid(fromBlockId)), \ (toBlockId)->bi_hi = (fromBlockId)->bi_hi, \ (toBlockId)->bi_lo = (fromBlockId)->bi_lo \ ) /* * BlockIdEquals * Check for block number equality. */ #define BlockIdEquals(blockId1, blockId2) \ ((blockId1)->bi_hi == (blockId2)->bi_hi && \ (blockId1)->bi_lo == (blockId2)->bi_lo) /* * BlockIdGetBlockNumber * Retrieve the block number from a block identifier. */ #define BlockIdGetBlockNumber(blockId) \ ( \ AssertMacro(BlockIdIsValid(blockId)), \ (BlockNumber) (((blockId)->bi_hi << 16) | ((uint16) (blockId)->bi_lo)) \ ) #endif /* BLOCK_H */ libpg_query-13-2.1.0/src/postgres/include/storage/buf.h000066400000000000000000000020761413137616400227410ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * buf.h * Basic buffer manager data types. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/buf.h * *------------------------------------------------------------------------- */ #ifndef BUF_H #define BUF_H /* * Buffer identifiers. * * Zero is invalid, positive is the index of a shared buffer (1..NBuffers), * negative is the index of a local buffer (-1 .. -NLocBuffer). */ typedef int Buffer; #define InvalidBuffer 0 /* * BufferIsInvalid * True iff the buffer is invalid. */ #define BufferIsInvalid(buffer) ((buffer) == InvalidBuffer) /* * BufferIsLocal * True iff the buffer is local (not visible to other backends). */ #define BufferIsLocal(buffer) ((buffer) < 0) /* * Buffer access strategy objects. * * BufferAccessStrategyData is private to freelist.c */ typedef struct BufferAccessStrategyData *BufferAccessStrategy; #endif /* BUF_H */ libpg_query-13-2.1.0/src/postgres/include/storage/bufmgr.h000066400000000000000000000230531413137616400234450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * bufmgr.h * POSTGRES buffer manager definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/bufmgr.h * *------------------------------------------------------------------------- */ #ifndef BUFMGR_H #define BUFMGR_H #include "storage/block.h" #include "storage/buf.h" #include "storage/bufpage.h" #include "storage/relfilenode.h" #include "utils/relcache.h" #include "utils/snapmgr.h" typedef void *Block; /* Possible arguments for GetAccessStrategy() */ typedef enum BufferAccessStrategyType { BAS_NORMAL, /* Normal random access */ BAS_BULKREAD, /* Large read-only scan (hint bit updates are * ok) */ BAS_BULKWRITE, /* Large multi-block write (e.g. COPY IN) */ BAS_VACUUM /* VACUUM */ } BufferAccessStrategyType; /* Possible modes for ReadBufferExtended() */ typedef enum { RBM_NORMAL, /* Normal read */ RBM_ZERO_AND_LOCK, /* Don't read from disk, caller will * initialize. Also locks the page. */ RBM_ZERO_AND_CLEANUP_LOCK, /* Like RBM_ZERO_AND_LOCK, but locks the page * in "cleanup" mode */ RBM_ZERO_ON_ERROR, /* Read, but return an all-zeros page on error */ RBM_NORMAL_NO_LOG /* Don't log page as invalid during WAL * replay; otherwise same as RBM_NORMAL */ } ReadBufferMode; /* * Type returned by PrefetchBuffer(). */ typedef struct PrefetchBufferResult { Buffer recent_buffer; /* If valid, a hit (recheck needed!) */ bool initiated_io; /* If true, a miss resulting in async I/O */ } PrefetchBufferResult; /* forward declared, to avoid having to expose buf_internals.h here */ struct WritebackContext; /* forward declared, to avoid including smgr.h here */ struct SMgrRelationData; /* in globals.c ... this duplicates miscadmin.h */ extern PGDLLIMPORT int NBuffers; /* in bufmgr.c */ extern bool zero_damaged_pages; extern int bgwriter_lru_maxpages; extern double bgwriter_lru_multiplier; extern bool track_io_timing; extern int effective_io_concurrency; extern int maintenance_io_concurrency; extern int checkpoint_flush_after; extern int backend_flush_after; extern int bgwriter_flush_after; /* in buf_init.c */ extern PGDLLIMPORT char *BufferBlocks; /* in localbuf.c */ extern PGDLLIMPORT int NLocBuffer; extern PGDLLIMPORT Block *LocalBufferBlockPointers; extern PGDLLIMPORT int32 *LocalRefCount; /* upper limit for effective_io_concurrency */ #define MAX_IO_CONCURRENCY 1000 /* special block number for ReadBuffer() */ #define P_NEW InvalidBlockNumber /* grow the file to get a new page */ /* * Buffer content lock modes (mode argument for LockBuffer()) */ #define BUFFER_LOCK_UNLOCK 0 #define BUFFER_LOCK_SHARE 1 #define BUFFER_LOCK_EXCLUSIVE 2 /* * These routines are beaten on quite heavily, hence the macroization. */ /* * BufferIsValid * True iff the given buffer number is valid (either as a shared * or local buffer). * * Note: For a long time this was defined the same as BufferIsPinned, * that is it would say False if you didn't hold a pin on the buffer. * I believe this was bogus and served only to mask logic errors. * Code should always know whether it has a buffer reference, * independently of the pin state. * * Note: For a further long time this was not quite the inverse of the * BufferIsInvalid() macro, in that it also did sanity checks to verify * that the buffer number was in range. Most likely, this macro was * originally intended only to be used in assertions, but its use has * since expanded quite a bit, and the overhead of making those checks * even in non-assert-enabled builds can be significant. Thus, we've * now demoted the range checks to assertions within the macro itself. */ #define BufferIsValid(bufnum) \ ( \ AssertMacro((bufnum) <= NBuffers && (bufnum) >= -NLocBuffer), \ (bufnum) != InvalidBuffer \ ) /* * BufferGetBlock * Returns a reference to a disk page image associated with a buffer. * * Note: * Assumes buffer is valid. */ #define BufferGetBlock(buffer) \ ( \ AssertMacro(BufferIsValid(buffer)), \ BufferIsLocal(buffer) ? \ LocalBufferBlockPointers[-(buffer) - 1] \ : \ (Block) (BufferBlocks + ((Size) ((buffer) - 1)) * BLCKSZ) \ ) /* * BufferGetPageSize * Returns the page size within a buffer. * * Notes: * Assumes buffer is valid. * * The buffer can be a raw disk block and need not contain a valid * (formatted) disk page. */ /* XXX should dig out of buffer descriptor */ #define BufferGetPageSize(buffer) \ ( \ AssertMacro(BufferIsValid(buffer)), \ (Size)BLCKSZ \ ) /* * BufferGetPage * Returns the page associated with a buffer. * * When this is called as part of a scan, there may be a need for a nearby * call to TestForOldSnapshot(). See the definition of that for details. */ #define BufferGetPage(buffer) ((Page)BufferGetBlock(buffer)) /* * prototypes for functions in bufmgr.c */ extern PrefetchBufferResult PrefetchSharedBuffer(struct SMgrRelationData *smgr_reln, ForkNumber forkNum, BlockNumber blockNum); extern PrefetchBufferResult PrefetchBuffer(Relation reln, ForkNumber forkNum, BlockNumber blockNum); extern Buffer ReadBuffer(Relation reln, BlockNumber blockNum); extern Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy); extern Buffer ReadBufferWithoutRelcache(RelFileNode rnode, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy); extern void ReleaseBuffer(Buffer buffer); extern void UnlockReleaseBuffer(Buffer buffer); extern void MarkBufferDirty(Buffer buffer); extern void IncrBufferRefCount(Buffer buffer); extern Buffer ReleaseAndReadBuffer(Buffer buffer, Relation relation, BlockNumber blockNum); extern void InitBufferPool(void); extern void InitBufferPoolAccess(void); extern void InitBufferPoolBackend(void); extern void AtEOXact_Buffers(bool isCommit); extern void PrintBufferLeakWarning(Buffer buffer); extern void CheckPointBuffers(int flags); extern BlockNumber BufferGetBlockNumber(Buffer buffer); extern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation, ForkNumber forkNum); extern void FlushOneBuffer(Buffer buffer); extern void FlushRelationBuffers(Relation rel); extern void FlushRelationsAllBuffers(struct SMgrRelationData **smgrs, int nrels); extern void FlushDatabaseBuffers(Oid dbid); extern void DropRelFileNodeBuffers(RelFileNodeBackend rnode, ForkNumber *forkNum, int nforks, BlockNumber *firstDelBlock); extern void DropRelFileNodesAllBuffers(RelFileNodeBackend *rnodes, int nnodes); extern void DropDatabaseBuffers(Oid dbid); #define RelationGetNumberOfBlocks(reln) \ RelationGetNumberOfBlocksInFork(reln, MAIN_FORKNUM) extern bool BufferIsPermanent(Buffer buffer); extern XLogRecPtr BufferGetLSNAtomic(Buffer buffer); #ifdef NOT_USED extern void PrintPinnedBufs(void); #endif extern Size BufferShmemSize(void); extern void BufferGetTag(Buffer buffer, RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blknum); extern void MarkBufferDirtyHint(Buffer buffer, bool buffer_std); extern void UnlockBuffers(void); extern void LockBuffer(Buffer buffer, int mode); extern bool ConditionalLockBuffer(Buffer buffer); extern void LockBufferForCleanup(Buffer buffer); extern bool ConditionalLockBufferForCleanup(Buffer buffer); extern bool IsBufferCleanupOK(Buffer buffer); extern bool HoldingBufferPinThatDelaysRecovery(void); extern void AbortBufferIO(void); extern void BufmgrCommit(void); extern bool BgBufferSync(struct WritebackContext *wb_context); extern void AtProcExit_LocalBuffers(void); extern void TestForOldSnapshot_impl(Snapshot snapshot, Relation relation); /* in freelist.c */ extern BufferAccessStrategy GetAccessStrategy(BufferAccessStrategyType btype); extern void FreeAccessStrategy(BufferAccessStrategy strategy); /* inline functions */ /* * Although this header file is nominally backend-only, certain frontend * programs like pg_waldump include it. For compilers that emit static * inline functions even when they're unused, that leads to unsatisfied * external references; hence hide these with #ifndef FRONTEND. */ #ifndef FRONTEND /* * Check whether the given snapshot is too old to have safely read the given * page from the given table. If so, throw a "snapshot too old" error. * * This test generally needs to be performed after every BufferGetPage() call * that is executed as part of a scan. It is not needed for calls made for * modifying the page (for example, to position to the right place to insert a * new index tuple or for vacuuming). It may also be omitted where calls to * lower-level functions will have already performed the test. * * Note that a NULL snapshot argument is allowed and causes a fast return * without error; this is to support call sites which can be called from * either scans or index modification areas. * * For best performance, keep the tests that are fastest and/or most likely to * exclude a page from old snapshot testing near the front. */ static inline void TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page) { Assert(relation != NULL); if (old_snapshot_threshold >= 0 && (snapshot) != NULL && ((snapshot)->snapshot_type == SNAPSHOT_MVCC || (snapshot)->snapshot_type == SNAPSHOT_TOAST) && !XLogRecPtrIsInvalid((snapshot)->lsn) && PageGetLSN(page) > (snapshot)->lsn) TestForOldSnapshot_impl(snapshot, relation); } #endif /* FRONTEND */ #endif /* BUFMGR_H */ libpg_query-13-2.1.0/src/postgres/include/storage/bufpage.h000066400000000000000000000400571413137616400235770ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * bufpage.h * Standard POSTGRES buffer page definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/bufpage.h * *------------------------------------------------------------------------- */ #ifndef BUFPAGE_H #define BUFPAGE_H #include "access/xlogdefs.h" #include "storage/block.h" #include "storage/item.h" #include "storage/off.h" /* * A postgres disk page is an abstraction layered on top of a postgres * disk block (which is simply a unit of i/o, see block.h). * * specifically, while a disk block can be unformatted, a postgres * disk page is always a slotted page of the form: * * +----------------+---------------------------------+ * | PageHeaderData | linp1 linp2 linp3 ... | * +-----------+----+---------------------------------+ * | ... linpN | | * +-----------+--------------------------------------+ * | ^ pd_lower | * | | * | v pd_upper | * +-------------+------------------------------------+ * | | tupleN ... | * +-------------+------------------+-----------------+ * | ... tuple3 tuple2 tuple1 | "special space" | * +--------------------------------+-----------------+ * ^ pd_special * * a page is full when nothing can be added between pd_lower and * pd_upper. * * all blocks written out by an access method must be disk pages. * * EXCEPTIONS: * * obviously, a page is not formatted before it is initialized by * a call to PageInit. * * NOTES: * * linp1..N form an ItemId (line pointer) array. ItemPointers point * to a physical block number and a logical offset (line pointer * number) within that block/page. Note that OffsetNumbers * conventionally start at 1, not 0. * * tuple1..N are added "backwards" on the page. Since an ItemPointer * offset is used to access an ItemId entry rather than an actual * byte-offset position, tuples can be physically shuffled on a page * whenever the need arises. This indirection also keeps crash recovery * relatively simple, because the low-level details of page space * management can be controlled by standard buffer page code during * logging, and during recovery. * * AM-generic per-page information is kept in PageHeaderData. * * AM-specific per-page data (if any) is kept in the area marked "special * space"; each AM has an "opaque" structure defined somewhere that is * stored as the page trailer. an access method should always * initialize its pages with PageInit and then set its own opaque * fields. */ typedef Pointer Page; /* * location (byte offset) within a page. * * note that this is actually limited to 2^15 because we have limited * ItemIdData.lp_off and ItemIdData.lp_len to 15 bits (see itemid.h). */ typedef uint16 LocationIndex; /* * For historical reasons, the 64-bit LSN value is stored as two 32-bit * values. */ typedef struct { uint32 xlogid; /* high bits */ uint32 xrecoff; /* low bits */ } PageXLogRecPtr; #define PageXLogRecPtrGet(val) \ ((uint64) (val).xlogid << 32 | (val).xrecoff) #define PageXLogRecPtrSet(ptr, lsn) \ ((ptr).xlogid = (uint32) ((lsn) >> 32), (ptr).xrecoff = (uint32) (lsn)) /* * disk page organization * * space management information generic to any page * * pd_lsn - identifies xlog record for last change to this page. * pd_checksum - page checksum, if set. * pd_flags - flag bits. * pd_lower - offset to start of free space. * pd_upper - offset to end of free space. * pd_special - offset to start of special space. * pd_pagesize_version - size in bytes and page layout version number. * pd_prune_xid - oldest XID among potentially prunable tuples on page. * * The LSN is used by the buffer manager to enforce the basic rule of WAL: * "thou shalt write xlog before data". A dirty buffer cannot be dumped * to disk until xlog has been flushed at least as far as the page's LSN. * * pd_checksum stores the page checksum, if it has been set for this page; * zero is a valid value for a checksum. If a checksum is not in use then * we leave the field unset. This will typically mean the field is zero * though non-zero values may also be present if databases have been * pg_upgraded from releases prior to 9.3, when the same byte offset was * used to store the current timelineid when the page was last updated. * Note that there is no indication on a page as to whether the checksum * is valid or not, a deliberate design choice which avoids the problem * of relying on the page contents to decide whether to verify it. Hence * there are no flag bits relating to checksums. * * pd_prune_xid is a hint field that helps determine whether pruning will be * useful. It is currently unused in index pages. * * The page version number and page size are packed together into a single * uint16 field. This is for historical reasons: before PostgreSQL 7.3, * there was no concept of a page version number, and doing it this way * lets us pretend that pre-7.3 databases have page version number zero. * We constrain page sizes to be multiples of 256, leaving the low eight * bits available for a version number. * * Minimum possible page size is perhaps 64B to fit page header, opaque space * and a minimal tuple; of course, in reality you want it much bigger, so * the constraint on pagesize mod 256 is not an important restriction. * On the high end, we can only support pages up to 32KB because lp_off/lp_len * are 15 bits. */ typedef struct PageHeaderData { /* XXX LSN is member of *any* block, not only page-organized ones */ PageXLogRecPtr pd_lsn; /* LSN: next byte after last byte of xlog * record for last change to this page */ uint16 pd_checksum; /* checksum */ uint16 pd_flags; /* flag bits, see below */ LocationIndex pd_lower; /* offset to start of free space */ LocationIndex pd_upper; /* offset to end of free space */ LocationIndex pd_special; /* offset to start of special space */ uint16 pd_pagesize_version; TransactionId pd_prune_xid; /* oldest prunable XID, or zero if none */ ItemIdData pd_linp[FLEXIBLE_ARRAY_MEMBER]; /* line pointer array */ } PageHeaderData; typedef PageHeaderData *PageHeader; /* * pd_flags contains the following flag bits. Undefined bits are initialized * to zero and may be used in the future. * * PD_HAS_FREE_LINES is set if there are any LP_UNUSED line pointers before * pd_lower. This should be considered a hint rather than the truth, since * changes to it are not WAL-logged. * * PD_PAGE_FULL is set if an UPDATE doesn't find enough free space in the * page for its new tuple version; this suggests that a prune is needed. * Again, this is just a hint. */ #define PD_HAS_FREE_LINES 0x0001 /* are there any unused line pointers? */ #define PD_PAGE_FULL 0x0002 /* not enough free space for new tuple? */ #define PD_ALL_VISIBLE 0x0004 /* all tuples on page are visible to * everyone */ #define PD_VALID_FLAG_BITS 0x0007 /* OR of all valid pd_flags bits */ /* * Page layout version number 0 is for pre-7.3 Postgres releases. * Releases 7.3 and 7.4 use 1, denoting a new HeapTupleHeader layout. * Release 8.0 uses 2; it changed the HeapTupleHeader layout again. * Release 8.1 uses 3; it redefined HeapTupleHeader infomask bits. * Release 8.3 uses 4; it changed the HeapTupleHeader layout again, and * added the pd_flags field (by stealing some bits from pd_tli), * as well as adding the pd_prune_xid field (which enlarges the header). * * As of Release 9.3, the checksum version must also be considered when * handling pages. */ #define PG_PAGE_LAYOUT_VERSION 4 #define PG_DATA_CHECKSUM_VERSION 1 /* ---------------------------------------------------------------- * page support macros * ---------------------------------------------------------------- */ /* * PageIsValid * True iff page is valid. */ #define PageIsValid(page) PointerIsValid(page) /* * line pointer(s) do not count as part of header */ #define SizeOfPageHeaderData (offsetof(PageHeaderData, pd_linp)) /* * PageIsEmpty * returns true iff no itemid has been allocated on the page */ #define PageIsEmpty(page) \ (((PageHeader) (page))->pd_lower <= SizeOfPageHeaderData) /* * PageIsNew * returns true iff page has not been initialized (by PageInit) */ #define PageIsNew(page) (((PageHeader) (page))->pd_upper == 0) /* * PageGetItemId * Returns an item identifier of a page. */ #define PageGetItemId(page, offsetNumber) \ ((ItemId) (&((PageHeader) (page))->pd_linp[(offsetNumber) - 1])) /* * PageGetContents * To be used in cases where the page does not contain line pointers. * * Note: prior to 8.3 this was not guaranteed to yield a MAXALIGN'd result. * Now it is. Beware of old code that might think the offset to the contents * is just SizeOfPageHeaderData rather than MAXALIGN(SizeOfPageHeaderData). */ #define PageGetContents(page) \ ((char *) (page) + MAXALIGN(SizeOfPageHeaderData)) /* ---------------- * macros to access page size info * ---------------- */ /* * PageSizeIsValid * True iff the page size is valid. */ #define PageSizeIsValid(pageSize) ((pageSize) == BLCKSZ) /* * PageGetPageSize * Returns the page size of a page. * * this can only be called on a formatted page (unlike * BufferGetPageSize, which can be called on an unformatted page). * however, it can be called on a page that is not stored in a buffer. */ #define PageGetPageSize(page) \ ((Size) (((PageHeader) (page))->pd_pagesize_version & (uint16) 0xFF00)) /* * PageGetPageLayoutVersion * Returns the page layout version of a page. */ #define PageGetPageLayoutVersion(page) \ (((PageHeader) (page))->pd_pagesize_version & 0x00FF) /* * PageSetPageSizeAndVersion * Sets the page size and page layout version number of a page. * * We could support setting these two values separately, but there's * no real need for it at the moment. */ #define PageSetPageSizeAndVersion(page, size, version) \ ( \ AssertMacro(((size) & 0xFF00) == (size)), \ AssertMacro(((version) & 0x00FF) == (version)), \ ((PageHeader) (page))->pd_pagesize_version = (size) | (version) \ ) /* ---------------- * page special data macros * ---------------- */ /* * PageGetSpecialSize * Returns size of special space on a page. */ #define PageGetSpecialSize(page) \ ((uint16) (PageGetPageSize(page) - ((PageHeader)(page))->pd_special)) /* * Using assertions, validate that the page special pointer is OK. * * This is intended to catch use of the pointer before page initialization. * It is implemented as a function due to the limitations of the MSVC * compiler, which choked on doing all these tests within another macro. We * return true so that AssertMacro() can be used while still getting the * specifics from the macro failure within this function. */ static inline bool PageValidateSpecialPointer(Page page) { Assert(PageIsValid(page)); Assert(((PageHeader) (page))->pd_special <= BLCKSZ); Assert(((PageHeader) (page))->pd_special >= SizeOfPageHeaderData); return true; } /* * PageGetSpecialPointer * Returns pointer to special space on a page. */ #define PageGetSpecialPointer(page) \ ( \ AssertMacro(PageValidateSpecialPointer(page)), \ (char *) ((char *) (page) + ((PageHeader) (page))->pd_special) \ ) /* * PageGetItem * Retrieves an item on the given page. * * Note: * This does not change the status of any of the resources passed. * The semantics may change in the future. */ #define PageGetItem(page, itemId) \ ( \ AssertMacro(PageIsValid(page)), \ AssertMacro(ItemIdHasStorage(itemId)), \ (Item)(((char *)(page)) + ItemIdGetOffset(itemId)) \ ) /* * PageGetMaxOffsetNumber * Returns the maximum offset number used by the given page. * Since offset numbers are 1-based, this is also the number * of items on the page. * * NOTE: if the page is not initialized (pd_lower == 0), we must * return zero to ensure sane behavior. Accept double evaluation * of the argument so that we can ensure this. */ #define PageGetMaxOffsetNumber(page) \ (((PageHeader) (page))->pd_lower <= SizeOfPageHeaderData ? 0 : \ ((((PageHeader) (page))->pd_lower - SizeOfPageHeaderData) \ / sizeof(ItemIdData))) /* * Additional macros for access to page headers. (Beware multiple evaluation * of the arguments!) */ #define PageGetLSN(page) \ PageXLogRecPtrGet(((PageHeader) (page))->pd_lsn) #define PageSetLSN(page, lsn) \ PageXLogRecPtrSet(((PageHeader) (page))->pd_lsn, lsn) #define PageHasFreeLinePointers(page) \ (((PageHeader) (page))->pd_flags & PD_HAS_FREE_LINES) #define PageSetHasFreeLinePointers(page) \ (((PageHeader) (page))->pd_flags |= PD_HAS_FREE_LINES) #define PageClearHasFreeLinePointers(page) \ (((PageHeader) (page))->pd_flags &= ~PD_HAS_FREE_LINES) #define PageIsFull(page) \ (((PageHeader) (page))->pd_flags & PD_PAGE_FULL) #define PageSetFull(page) \ (((PageHeader) (page))->pd_flags |= PD_PAGE_FULL) #define PageClearFull(page) \ (((PageHeader) (page))->pd_flags &= ~PD_PAGE_FULL) #define PageIsAllVisible(page) \ (((PageHeader) (page))->pd_flags & PD_ALL_VISIBLE) #define PageSetAllVisible(page) \ (((PageHeader) (page))->pd_flags |= PD_ALL_VISIBLE) #define PageClearAllVisible(page) \ (((PageHeader) (page))->pd_flags &= ~PD_ALL_VISIBLE) #define PageIsPrunable(page, oldestxmin) \ ( \ AssertMacro(TransactionIdIsNormal(oldestxmin)), \ TransactionIdIsValid(((PageHeader) (page))->pd_prune_xid) && \ TransactionIdPrecedes(((PageHeader) (page))->pd_prune_xid, oldestxmin) \ ) #define PageSetPrunable(page, xid) \ do { \ Assert(TransactionIdIsNormal(xid)); \ if (!TransactionIdIsValid(((PageHeader) (page))->pd_prune_xid) || \ TransactionIdPrecedes(xid, ((PageHeader) (page))->pd_prune_xid)) \ ((PageHeader) (page))->pd_prune_xid = (xid); \ } while (0) #define PageClearPrunable(page) \ (((PageHeader) (page))->pd_prune_xid = InvalidTransactionId) /* ---------------------------------------------------------------- * extern declarations * ---------------------------------------------------------------- */ /* flags for PageAddItemExtended() */ #define PAI_OVERWRITE (1 << 0) #define PAI_IS_HEAP (1 << 1) /* flags for PageIsVerifiedExtended() */ #define PIV_LOG_WARNING (1 << 0) #define PIV_REPORT_STAT (1 << 1) #define PageAddItem(page, item, size, offsetNumber, overwrite, is_heap) \ PageAddItemExtended(page, item, size, offsetNumber, \ ((overwrite) ? PAI_OVERWRITE : 0) | \ ((is_heap) ? PAI_IS_HEAP : 0)) /* * Check that BLCKSZ is a multiple of sizeof(size_t). In * PageIsVerifiedExtended(), it is much faster to check if a page is * full of zeroes using the native word size. Note that this assertion * is kept within a header to make sure that StaticAssertDecl() works * across various combinations of platforms and compilers. */ StaticAssertDecl(BLCKSZ == ((BLCKSZ / sizeof(size_t)) * sizeof(size_t)), "BLCKSZ has to be a multiple of sizeof(size_t)"); extern void PageInit(Page page, Size pageSize, Size specialSize); extern bool PageIsVerified(Page page, BlockNumber blkno); extern bool PageIsVerifiedExtended(Page page, BlockNumber blkno, int flags); extern OffsetNumber PageAddItemExtended(Page page, Item item, Size size, OffsetNumber offsetNumber, int flags); extern Page PageGetTempPage(Page page); extern Page PageGetTempPageCopy(Page page); extern Page PageGetTempPageCopySpecial(Page page); extern void PageRestoreTempPage(Page tempPage, Page oldPage); extern void PageRepairFragmentation(Page page); extern Size PageGetFreeSpace(Page page); extern Size PageGetFreeSpaceForMultipleTuples(Page page, int ntups); extern Size PageGetExactFreeSpace(Page page); extern Size PageGetHeapFreeSpace(Page page); extern void PageIndexTupleDelete(Page page, OffsetNumber offset); extern void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems); extern void PageIndexTupleDeleteNoCompact(Page page, OffsetNumber offset); extern bool PageIndexTupleOverwrite(Page page, OffsetNumber offnum, Item newtup, Size newsize); extern char *PageSetChecksumCopy(Page page, BlockNumber blkno); extern void PageSetChecksumInplace(Page page, BlockNumber blkno); #endif /* BUFPAGE_H */ libpg_query-13-2.1.0/src/postgres/include/storage/condition_variable.h000066400000000000000000000051031413137616400260120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * condition_variable.h * Condition variables * * A condition variable is a method of waiting until a certain condition * becomes true. Conventionally, a condition variable supports three * operations: (1) sleep; (2) signal, which wakes up one process sleeping * on the condition variable; and (3) broadcast, which wakes up every * process sleeping on the condition variable. In our implementation, * condition variables put a process into an interruptible sleep (so it * can be canceled prior to the fulfillment of the condition) and do not * use pointers internally (so that they are safe to use within DSMs). * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/condition_variable.h * *------------------------------------------------------------------------- */ #ifndef CONDITION_VARIABLE_H #define CONDITION_VARIABLE_H #include "storage/proclist_types.h" #include "storage/s_lock.h" typedef struct { slock_t mutex; /* spinlock protecting the wakeup list */ proclist_head wakeup; /* list of wake-able processes */ } ConditionVariable; /* Initialize a condition variable. */ extern void ConditionVariableInit(ConditionVariable *cv); /* * To sleep on a condition variable, a process should use a loop which first * checks the condition, exiting the loop if it is met, and then calls * ConditionVariableSleep. Spurious wakeups are possible, but should be * infrequent. After exiting the loop, ConditionVariableCancelSleep must * be called to ensure that the process is no longer in the wait list for * the condition variable. */ extern void ConditionVariableSleep(ConditionVariable *cv, uint32 wait_event_info); extern bool ConditionVariableTimedSleep(ConditionVariable *cv, long timeout, uint32 wait_event_info); extern void ConditionVariableCancelSleep(void); /* * Optionally, ConditionVariablePrepareToSleep can be called before entering * the test-and-sleep loop described above. Doing so is more efficient if * at least one sleep is needed, whereas not doing so is more efficient when * no sleep is needed because the test condition is true the first time. */ extern void ConditionVariablePrepareToSleep(ConditionVariable *cv); /* Wake up a single waiter (via signal) or all waiters (via broadcast). */ extern void ConditionVariableSignal(ConditionVariable *cv); extern void ConditionVariableBroadcast(ConditionVariable *cv); #endif /* CONDITION_VARIABLE_H */ libpg_query-13-2.1.0/src/postgres/include/storage/dsm.h000066400000000000000000000037541413137616400227540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dsm.h * manage dynamic shared memory segments * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/dsm.h * *------------------------------------------------------------------------- */ #ifndef DSM_H #define DSM_H #include "storage/dsm_impl.h" typedef struct dsm_segment dsm_segment; #define DSM_CREATE_NULL_IF_MAXSEGMENTS 0x0001 /* A sentinel value for an invalid DSM handle. */ #define DSM_HANDLE_INVALID 0 /* Startup and shutdown functions. */ struct PGShmemHeader; /* avoid including pg_shmem.h */ extern void dsm_cleanup_using_control_segment(dsm_handle old_control_handle); extern void dsm_postmaster_startup(struct PGShmemHeader *); extern void dsm_backend_shutdown(void); extern void dsm_detach_all(void); #ifdef EXEC_BACKEND extern void dsm_set_control_handle(dsm_handle h); #endif /* Functions that create or remove mappings. */ extern dsm_segment *dsm_create(Size size, int flags); extern dsm_segment *dsm_attach(dsm_handle h); extern void dsm_detach(dsm_segment *seg); /* Resource management functions. */ extern void dsm_pin_mapping(dsm_segment *seg); extern void dsm_unpin_mapping(dsm_segment *seg); extern void dsm_pin_segment(dsm_segment *seg); extern void dsm_unpin_segment(dsm_handle h); extern dsm_segment *dsm_find_mapping(dsm_handle h); /* Informational functions. */ extern void *dsm_segment_address(dsm_segment *seg); extern Size dsm_segment_map_length(dsm_segment *seg); extern dsm_handle dsm_segment_handle(dsm_segment *seg); /* Cleanup hooks. */ typedef void (*on_dsm_detach_callback) (dsm_segment *, Datum arg); extern void on_dsm_detach(dsm_segment *seg, on_dsm_detach_callback function, Datum arg); extern void cancel_on_dsm_detach(dsm_segment *seg, on_dsm_detach_callback function, Datum arg); extern void reset_on_dsm_detach(void); #endif /* DSM_H */ libpg_query-13-2.1.0/src/postgres/include/storage/dsm_impl.h000066400000000000000000000041461413137616400237710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dsm_impl.h * low-level dynamic shared memory primitives * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/dsm_impl.h * *------------------------------------------------------------------------- */ #ifndef DSM_IMPL_H #define DSM_IMPL_H /* Dynamic shared memory implementations. */ #define DSM_IMPL_POSIX 1 #define DSM_IMPL_SYSV 2 #define DSM_IMPL_WINDOWS 3 #define DSM_IMPL_MMAP 4 /* * Determine which dynamic shared memory implementations will be supported * on this platform, and which one will be the default. */ #ifdef WIN32 #define USE_DSM_WINDOWS #define DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE DSM_IMPL_WINDOWS #else #ifdef HAVE_SHM_OPEN #define USE_DSM_POSIX #define DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE DSM_IMPL_POSIX #endif #define USE_DSM_SYSV #ifndef DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE #define DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE DSM_IMPL_SYSV #endif #define USE_DSM_MMAP #endif /* GUC. */ extern int dynamic_shared_memory_type; /* * Directory for on-disk state. * * This is used by all implementations for crash recovery and by the mmap * implementation for storage. */ #define PG_DYNSHMEM_DIR "pg_dynshmem" #define PG_DYNSHMEM_MMAP_FILE_PREFIX "mmap." /* A "name" for a dynamic shared memory segment. */ typedef uint32 dsm_handle; /* All the shared-memory operations we know about. */ typedef enum { DSM_OP_CREATE, DSM_OP_ATTACH, DSM_OP_DETACH, DSM_OP_DESTROY } dsm_op; /* Create, attach to, detach from, resize, or destroy a segment. */ extern bool dsm_impl_op(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, Size *mapped_size, int elevel); /* Implementation-dependent actions required to keep segment until shutdown. */ extern void dsm_impl_pin_segment(dsm_handle handle, void *impl_private, void **impl_private_pm_handle); extern void dsm_impl_unpin_segment(dsm_handle handle, void **impl_private); #endif /* DSM_IMPL_H */ libpg_query-13-2.1.0/src/postgres/include/storage/fd.h000066400000000000000000000147421413137616400225610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fd.h * Virtual file descriptor definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/fd.h * *------------------------------------------------------------------------- */ /* * calls: * * File {Close, Read, Write, Size, Sync} * {Path Name Open, Allocate, Free} File * * These are NOT JUST RENAMINGS OF THE UNIX ROUTINES. * Use them for all file activity... * * File fd; * fd = PathNameOpenFile("foo", O_RDONLY); * * AllocateFile(); * FreeFile(); * * Use AllocateFile, not fopen, if you need a stdio file (FILE*); then * use FreeFile, not fclose, to close it. AVOID using stdio for files * that you intend to hold open for any length of time, since there is * no way for them to share kernel file descriptors with other files. * * Likewise, use AllocateDir/FreeDir, not opendir/closedir, to allocate * open directories (DIR*), and OpenTransientFile/CloseTransientFile for an * unbuffered file descriptor. * * If you really can't use any of the above, at least call AcquireExternalFD * or ReserveExternalFD to report any file descriptors that are held for any * length of time. Failure to do so risks unnecessary EMFILE errors. */ #ifndef FD_H #define FD_H #include typedef int File; /* GUC parameter */ extern PGDLLIMPORT int max_files_per_process; extern PGDLLIMPORT bool data_sync_retry; /* * This is private to fd.c, but exported for save/restore_backend_variables() */ extern int max_safe_fds; /* * On Windows, we have to interpret EACCES as possibly meaning the same as * ENOENT, because if a file is unlinked-but-not-yet-gone on that platform, * that's what you get. Ugh. This code is designed so that we don't * actually believe these cases are okay without further evidence (namely, * a pending fsync request getting canceled ... see ProcessSyncRequests). */ #ifndef WIN32 #define FILE_POSSIBLY_DELETED(err) ((err) == ENOENT) #else #define FILE_POSSIBLY_DELETED(err) ((err) == ENOENT || (err) == EACCES) #endif /* * prototypes for functions in fd.c */ /* Operations on virtual Files --- equivalent to Unix kernel file ops */ extern File PathNameOpenFile(const char *fileName, int fileFlags); extern File PathNameOpenFilePerm(const char *fileName, int fileFlags, mode_t fileMode); extern File OpenTemporaryFile(bool interXact); extern void FileClose(File file); extern int FilePrefetch(File file, off_t offset, int amount, uint32 wait_event_info); extern int FileRead(File file, char *buffer, int amount, off_t offset, uint32 wait_event_info); extern int FileWrite(File file, char *buffer, int amount, off_t offset, uint32 wait_event_info); extern int FileSync(File file, uint32 wait_event_info); extern off_t FileSize(File file); extern int FileTruncate(File file, off_t offset, uint32 wait_event_info); extern void FileWriteback(File file, off_t offset, off_t nbytes, uint32 wait_event_info); extern char *FilePathName(File file); extern int FileGetRawDesc(File file); extern int FileGetRawFlags(File file); extern mode_t FileGetRawMode(File file); /* Operations used for sharing named temporary files */ extern File PathNameCreateTemporaryFile(const char *name, bool error_on_failure); extern File PathNameOpenTemporaryFile(const char *name); extern bool PathNameDeleteTemporaryFile(const char *name, bool error_on_failure); extern void PathNameCreateTemporaryDir(const char *base, const char *name); extern void PathNameDeleteTemporaryDir(const char *name); extern void TempTablespacePath(char *path, Oid tablespace); /* Operations that allow use of regular stdio --- USE WITH CAUTION */ extern FILE *AllocateFile(const char *name, const char *mode); extern int FreeFile(FILE *file); /* Operations that allow use of pipe streams (popen/pclose) */ extern FILE *OpenPipeStream(const char *command, const char *mode); extern int ClosePipeStream(FILE *file); /* Operations to allow use of the library routines */ extern DIR *AllocateDir(const char *dirname); extern struct dirent *ReadDir(DIR *dir, const char *dirname); extern struct dirent *ReadDirExtended(DIR *dir, const char *dirname, int elevel); extern int FreeDir(DIR *dir); /* Operations to allow use of a plain kernel FD, with automatic cleanup */ extern int OpenTransientFile(const char *fileName, int fileFlags); extern int OpenTransientFilePerm(const char *fileName, int fileFlags, mode_t fileMode); extern int CloseTransientFile(int fd); /* If you've really really gotta have a plain kernel FD, use this */ extern int BasicOpenFile(const char *fileName, int fileFlags); extern int BasicOpenFilePerm(const char *fileName, int fileFlags, mode_t fileMode); /* Use these for other cases, and also for long-lived BasicOpenFile FDs */ extern bool AcquireExternalFD(void); extern void ReserveExternalFD(void); extern void ReleaseExternalFD(void); /* Make a directory with default permissions */ extern int MakePGDirectory(const char *directoryName); /* Miscellaneous support routines */ extern void InitFileAccess(void); extern void set_max_safe_fds(void); extern void closeAllVfds(void); extern void SetTempTablespaces(Oid *tableSpaces, int numSpaces); extern bool TempTablespacesAreSet(void); extern int GetTempTablespaces(Oid *tableSpaces, int numSpaces); extern Oid GetNextTempTableSpace(void); extern void AtEOXact_Files(bool isCommit); extern void AtEOSubXact_Files(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid); extern void RemovePgTempFiles(void); extern void RemovePgTempFilesInDir(const char *tmpdirname, bool missing_ok, bool unlink_all); extern bool looks_like_temp_rel_name(const char *name); extern int pg_fsync(int fd); extern int pg_fsync_no_writethrough(int fd); extern int pg_fsync_writethrough(int fd); extern int pg_fdatasync(int fd); extern void pg_flush_data(int fd, off_t offset, off_t amount); extern void fsync_fname(const char *fname, bool isdir); extern int fsync_fname_ext(const char *fname, bool isdir, bool ignore_perm, int elevel); extern int durable_rename(const char *oldfile, const char *newfile, int loglevel); extern int durable_unlink(const char *fname, int loglevel); extern int durable_rename_excl(const char *oldfile, const char *newfile, int loglevel); extern void SyncDataDirectory(void); extern int data_sync_elevel(int elevel); /* Filename components */ #define PG_TEMP_FILES_DIR "pgsql_tmp" #define PG_TEMP_FILE_PREFIX "pgsql_tmp" #endif /* FD_H */ libpg_query-13-2.1.0/src/postgres/include/storage/ipc.h000066400000000000000000000053251413137616400227400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * ipc.h * POSTGRES inter-process communication definitions. * * This file is misnamed, as it no longer has much of anything directly * to do with IPC. The functionality here is concerned with managing * exit-time cleanup for either a postmaster or a backend. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/ipc.h * *------------------------------------------------------------------------- */ #ifndef IPC_H #define IPC_H typedef void (*pg_on_exit_callback) (int code, Datum arg); typedef void (*shmem_startup_hook_type) (void); /*---------- * API for handling cleanup that must occur during either ereport(ERROR) * or ereport(FATAL) exits from a block of code. (Typical examples are * undoing transient changes to shared-memory state.) * * PG_ENSURE_ERROR_CLEANUP(cleanup_function, arg); * { * ... code that might throw ereport(ERROR) or ereport(FATAL) ... * } * PG_END_ENSURE_ERROR_CLEANUP(cleanup_function, arg); * * where the cleanup code is in a function declared per pg_on_exit_callback. * The Datum value "arg" can carry any information the cleanup function * needs. * * This construct ensures that cleanup_function() will be called during * either ERROR or FATAL exits. It will not be called on successful * exit from the controlled code. (If you want it to happen then too, * call the function yourself from just after the construct.) * * Note: the macro arguments are multiply evaluated, so avoid side-effects. *---------- */ #define PG_ENSURE_ERROR_CLEANUP(cleanup_function, arg) \ do { \ before_shmem_exit(cleanup_function, arg); \ PG_TRY() #define PG_END_ENSURE_ERROR_CLEANUP(cleanup_function, arg) \ cancel_before_shmem_exit(cleanup_function, arg); \ PG_CATCH(); \ { \ cancel_before_shmem_exit(cleanup_function, arg); \ cleanup_function (0, arg); \ PG_RE_THROW(); \ } \ PG_END_TRY(); \ } while (0) /* ipc.c */ extern PGDLLIMPORT __thread bool proc_exit_inprogress; extern PGDLLIMPORT bool shmem_exit_inprogress; extern void proc_exit(int code) pg_attribute_noreturn(); extern void shmem_exit(int code); extern void on_proc_exit(pg_on_exit_callback function, Datum arg); extern void on_shmem_exit(pg_on_exit_callback function, Datum arg); extern void before_shmem_exit(pg_on_exit_callback function, Datum arg); extern void cancel_before_shmem_exit(pg_on_exit_callback function, Datum arg); extern void on_exit_reset(void); /* ipci.c */ extern PGDLLIMPORT shmem_startup_hook_type shmem_startup_hook; extern void CreateSharedMemoryAndSemaphores(void); #endif /* IPC_H */ libpg_query-13-2.1.0/src/postgres/include/storage/item.h000066400000000000000000000007311413137616400231170ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * item.h * POSTGRES disk item definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/item.h * *------------------------------------------------------------------------- */ #ifndef ITEM_H #define ITEM_H typedef Pointer Item; #endif /* ITEM_H */ libpg_query-13-2.1.0/src/postgres/include/storage/itemid.h000066400000000000000000000105141413137616400234340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * itemid.h * Standard POSTGRES buffer page item identifier/line pointer definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/itemid.h * *------------------------------------------------------------------------- */ #ifndef ITEMID_H #define ITEMID_H /* * A line pointer on a buffer page. See buffer page definitions and comments * for an explanation of how line pointers are used. * * In some cases a line pointer is "in use" but does not have any associated * storage on the page. By convention, lp_len == 0 in every line pointer * that does not have storage, independently of its lp_flags state. */ typedef struct ItemIdData { unsigned lp_off:15, /* offset to tuple (from start of page) */ lp_flags:2, /* state of line pointer, see below */ lp_len:15; /* byte length of tuple */ } ItemIdData; typedef ItemIdData *ItemId; /* * lp_flags has these possible states. An UNUSED line pointer is available * for immediate re-use, the other states are not. */ #define LP_UNUSED 0 /* unused (should always have lp_len=0) */ #define LP_NORMAL 1 /* used (should always have lp_len>0) */ #define LP_REDIRECT 2 /* HOT redirect (should have lp_len=0) */ #define LP_DEAD 3 /* dead, may or may not have storage */ /* * Item offsets and lengths are represented by these types when * they're not actually stored in an ItemIdData. */ typedef uint16 ItemOffset; typedef uint16 ItemLength; /* ---------------- * support macros * ---------------- */ /* * ItemIdGetLength */ #define ItemIdGetLength(itemId) \ ((itemId)->lp_len) /* * ItemIdGetOffset */ #define ItemIdGetOffset(itemId) \ ((itemId)->lp_off) /* * ItemIdGetFlags */ #define ItemIdGetFlags(itemId) \ ((itemId)->lp_flags) /* * ItemIdGetRedirect * In a REDIRECT pointer, lp_off holds offset number for next line pointer */ #define ItemIdGetRedirect(itemId) \ ((itemId)->lp_off) /* * ItemIdIsValid * True iff item identifier is valid. * This is a pretty weak test, probably useful only in Asserts. */ #define ItemIdIsValid(itemId) PointerIsValid(itemId) /* * ItemIdIsUsed * True iff item identifier is in use. */ #define ItemIdIsUsed(itemId) \ ((itemId)->lp_flags != LP_UNUSED) /* * ItemIdIsNormal * True iff item identifier is in state NORMAL. */ #define ItemIdIsNormal(itemId) \ ((itemId)->lp_flags == LP_NORMAL) /* * ItemIdIsRedirected * True iff item identifier is in state REDIRECT. */ #define ItemIdIsRedirected(itemId) \ ((itemId)->lp_flags == LP_REDIRECT) /* * ItemIdIsDead * True iff item identifier is in state DEAD. */ #define ItemIdIsDead(itemId) \ ((itemId)->lp_flags == LP_DEAD) /* * ItemIdHasStorage * True iff item identifier has associated storage. */ #define ItemIdHasStorage(itemId) \ ((itemId)->lp_len != 0) /* * ItemIdSetUnused * Set the item identifier to be UNUSED, with no storage. * Beware of multiple evaluations of itemId! */ #define ItemIdSetUnused(itemId) \ ( \ (itemId)->lp_flags = LP_UNUSED, \ (itemId)->lp_off = 0, \ (itemId)->lp_len = 0 \ ) /* * ItemIdSetNormal * Set the item identifier to be NORMAL, with the specified storage. * Beware of multiple evaluations of itemId! */ #define ItemIdSetNormal(itemId, off, len) \ ( \ (itemId)->lp_flags = LP_NORMAL, \ (itemId)->lp_off = (off), \ (itemId)->lp_len = (len) \ ) /* * ItemIdSetRedirect * Set the item identifier to be REDIRECT, with the specified link. * Beware of multiple evaluations of itemId! */ #define ItemIdSetRedirect(itemId, link) \ ( \ (itemId)->lp_flags = LP_REDIRECT, \ (itemId)->lp_off = (link), \ (itemId)->lp_len = 0 \ ) /* * ItemIdSetDead * Set the item identifier to be DEAD, with no storage. * Beware of multiple evaluations of itemId! */ #define ItemIdSetDead(itemId) \ ( \ (itemId)->lp_flags = LP_DEAD, \ (itemId)->lp_off = 0, \ (itemId)->lp_len = 0 \ ) /* * ItemIdMarkDead * Set the item identifier to be DEAD, keeping its existing storage. * * Note: in indexes, this is used as if it were a hint-bit mechanism; * we trust that multiple processors can do this in parallel and get * the same result. */ #define ItemIdMarkDead(itemId) \ ( \ (itemId)->lp_flags = LP_DEAD \ ) #endif /* ITEMID_H */ libpg_query-13-2.1.0/src/postgres/include/storage/itemptr.h000066400000000000000000000127531413137616400236540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * itemptr.h * POSTGRES disk item pointer definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/itemptr.h * *------------------------------------------------------------------------- */ #ifndef ITEMPTR_H #define ITEMPTR_H #include "storage/block.h" #include "storage/off.h" /* * ItemPointer: * * This is a pointer to an item within a disk page of a known file * (for example, a cross-link from an index to its parent table). * ip_blkid tells us which block, ip_posid tells us which entry in * the linp (ItemIdData) array we want. * * Note: because there is an item pointer in each tuple header and index * tuple header on disk, it's very important not to waste space with * structure padding bytes. The struct is designed to be six bytes long * (it contains three int16 fields) but a few compilers will pad it to * eight bytes unless coerced. We apply appropriate persuasion where * possible. If your compiler can't be made to play along, you'll waste * lots of space. */ typedef struct ItemPointerData { BlockIdData ip_blkid; OffsetNumber ip_posid; } /* If compiler understands packed and aligned pragmas, use those */ #if defined(pg_attribute_packed) && defined(pg_attribute_aligned) pg_attribute_packed() pg_attribute_aligned(2) #endif ItemPointerData; typedef ItemPointerData *ItemPointer; /* ---------------- * special values used in heap tuples (t_ctid) * ---------------- */ /* * If a heap tuple holds a speculative insertion token rather than a real * TID, ip_posid is set to SpecTokenOffsetNumber, and the token is stored in * ip_blkid. SpecTokenOffsetNumber must be higher than MaxOffsetNumber, so * that it can be distinguished from a valid offset number in a regular item * pointer. */ #define SpecTokenOffsetNumber 0xfffe /* * When a tuple is moved to a different partition by UPDATE, the t_ctid of * the old tuple version is set to this magic value. */ #define MovedPartitionsOffsetNumber 0xfffd #define MovedPartitionsBlockNumber InvalidBlockNumber /* ---------------- * support macros * ---------------- */ /* * ItemPointerIsValid * True iff the disk item pointer is not NULL. */ #define ItemPointerIsValid(pointer) \ ((bool) (PointerIsValid(pointer) && ((pointer)->ip_posid != 0))) /* * ItemPointerGetBlockNumberNoCheck * Returns the block number of a disk item pointer. */ #define ItemPointerGetBlockNumberNoCheck(pointer) \ ( \ BlockIdGetBlockNumber(&(pointer)->ip_blkid) \ ) /* * ItemPointerGetBlockNumber * As above, but verifies that the item pointer looks valid. */ #define ItemPointerGetBlockNumber(pointer) \ ( \ AssertMacro(ItemPointerIsValid(pointer)), \ ItemPointerGetBlockNumberNoCheck(pointer) \ ) /* * ItemPointerGetOffsetNumberNoCheck * Returns the offset number of a disk item pointer. */ #define ItemPointerGetOffsetNumberNoCheck(pointer) \ ( \ (pointer)->ip_posid \ ) /* * ItemPointerGetOffsetNumber * As above, but verifies that the item pointer looks valid. */ #define ItemPointerGetOffsetNumber(pointer) \ ( \ AssertMacro(ItemPointerIsValid(pointer)), \ ItemPointerGetOffsetNumberNoCheck(pointer) \ ) /* * ItemPointerSet * Sets a disk item pointer to the specified block and offset. */ #define ItemPointerSet(pointer, blockNumber, offNum) \ ( \ AssertMacro(PointerIsValid(pointer)), \ BlockIdSet(&((pointer)->ip_blkid), blockNumber), \ (pointer)->ip_posid = offNum \ ) /* * ItemPointerSetBlockNumber * Sets a disk item pointer to the specified block. */ #define ItemPointerSetBlockNumber(pointer, blockNumber) \ ( \ AssertMacro(PointerIsValid(pointer)), \ BlockIdSet(&((pointer)->ip_blkid), blockNumber) \ ) /* * ItemPointerSetOffsetNumber * Sets a disk item pointer to the specified offset. */ #define ItemPointerSetOffsetNumber(pointer, offsetNumber) \ ( \ AssertMacro(PointerIsValid(pointer)), \ (pointer)->ip_posid = (offsetNumber) \ ) /* * ItemPointerCopy * Copies the contents of one disk item pointer to another. * * Should there ever be padding in an ItemPointer this would need to be handled * differently as it's used as hash key. */ #define ItemPointerCopy(fromPointer, toPointer) \ ( \ AssertMacro(PointerIsValid(toPointer)), \ AssertMacro(PointerIsValid(fromPointer)), \ *(toPointer) = *(fromPointer) \ ) /* * ItemPointerSetInvalid * Sets a disk item pointer to be invalid. */ #define ItemPointerSetInvalid(pointer) \ ( \ AssertMacro(PointerIsValid(pointer)), \ BlockIdSet(&((pointer)->ip_blkid), InvalidBlockNumber), \ (pointer)->ip_posid = InvalidOffsetNumber \ ) /* * ItemPointerIndicatesMovedPartitions * True iff the block number indicates the tuple has moved to another * partition. */ #define ItemPointerIndicatesMovedPartitions(pointer) \ ( \ ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber && \ ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber \ ) /* * ItemPointerSetMovedPartitions * Indicate that the item referenced by the itempointer has moved into a * different partition. */ #define ItemPointerSetMovedPartitions(pointer) \ ItemPointerSet((pointer), MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber) /* ---------------- * externs * ---------------- */ extern bool ItemPointerEquals(ItemPointer pointer1, ItemPointer pointer2); extern int32 ItemPointerCompare(ItemPointer arg1, ItemPointer arg2); #endif /* ITEMPTR_H */ libpg_query-13-2.1.0/src/postgres/include/storage/large_object.h000066400000000000000000000071051413137616400246030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * large_object.h * Declarations for PostgreSQL large objects. POSTGRES 4.2 supported * zillions of large objects (internal, external, jaquith, inversion). * Now we only support inversion. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/large_object.h * *------------------------------------------------------------------------- */ #ifndef LARGE_OBJECT_H #define LARGE_OBJECT_H #include "utils/snapshot.h" /*---------- * Data about a currently-open large object. * * id is the logical OID of the large object * snapshot is the snapshot to use for read/write operations * subid is the subtransaction that opened the desc (or currently owns it) * offset is the current seek offset within the LO * flags contains some flag bits * * NOTE: as of v11, permission checks are made when the large object is * opened; therefore IFS_RDLOCK/IFS_WRLOCK indicate that read or write mode * has been requested *and* the corresponding permission has been checked. * * NOTE: before 7.1, we also had to store references to the separate table * and index of a specific large object. Now they all live in pg_largeobject * and are accessed via a common relation descriptor. *---------- */ typedef struct LargeObjectDesc { Oid id; /* LO's identifier */ Snapshot snapshot; /* snapshot to use */ SubTransactionId subid; /* owning subtransaction ID */ uint64 offset; /* current seek pointer */ int flags; /* see flag bits below */ /* bits in flags: */ #define IFS_RDLOCK (1 << 0) /* LO was opened for reading */ #define IFS_WRLOCK (1 << 1) /* LO was opened for writing */ } LargeObjectDesc; /* * Each "page" (tuple) of a large object can hold this much data * * We could set this as high as BLCKSZ less some overhead, but it seems * better to make it a smaller value, so that not as much space is used * up when a page-tuple is updated. Note that the value is deliberately * chosen large enough to trigger the tuple toaster, so that we will * attempt to compress page tuples in-line. (But they won't be moved off * unless the user creates a toast-table for pg_largeobject...) * * Also, it seems to be a smart move to make the page size be a power of 2, * since clients will often be written to send data in power-of-2 blocks. * This avoids unnecessary tuple updates caused by partial-page writes. * * NB: Changing LOBLKSIZE requires an initdb. */ #define LOBLKSIZE (BLCKSZ / 4) /* * Maximum length in bytes for a large object. To make this larger, we'd * have to widen pg_largeobject.pageno as well as various internal variables. */ #define MAX_LARGE_OBJECT_SIZE ((int64) INT_MAX * LOBLKSIZE) /* * GUC: backwards-compatibility flag to suppress LO permission checks */ extern bool lo_compat_privileges; /* * Function definitions... */ /* inversion stuff in inv_api.c */ extern void close_lo_relation(bool isCommit); extern Oid inv_create(Oid lobjId); extern LargeObjectDesc *inv_open(Oid lobjId, int flags, MemoryContext mcxt); extern void inv_close(LargeObjectDesc *obj_desc); extern int inv_drop(Oid lobjId); extern int64 inv_seek(LargeObjectDesc *obj_desc, int64 offset, int whence); extern int64 inv_tell(LargeObjectDesc *obj_desc); extern int inv_read(LargeObjectDesc *obj_desc, char *buf, int nbytes); extern int inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes); extern void inv_truncate(LargeObjectDesc *obj_desc, int64 len); #endif /* LARGE_OBJECT_H */ libpg_query-13-2.1.0/src/postgres/include/storage/latch.h000066400000000000000000000156331413137616400232630ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * latch.h * Routines for interprocess latches * * A latch is a boolean variable, with operations that let processes sleep * until it is set. A latch can be set from another process, or a signal * handler within the same process. * * The latch interface is a reliable replacement for the common pattern of * using pg_usleep() or select() to wait until a signal arrives, where the * signal handler sets a flag variable. Because on some platforms an * incoming signal doesn't interrupt sleep, and even on platforms where it * does there is a race condition if the signal arrives just before * entering the sleep, the common pattern must periodically wake up and * poll the flag variable. The pselect() system call was invented to solve * this problem, but it is not portable enough. Latches are designed to * overcome these limitations, allowing you to sleep without polling and * ensuring quick response to signals from other processes. * * There are two kinds of latches: local and shared. A local latch is * initialized by InitLatch, and can only be set from the same process. * A local latch can be used to wait for a signal to arrive, by calling * SetLatch in the signal handler. A shared latch resides in shared memory, * and must be initialized at postmaster startup by InitSharedLatch. Before * a shared latch can be waited on, it must be associated with a process * with OwnLatch. Only the process owning the latch can wait on it, but any * process can set it. * * There are three basic operations on a latch: * * SetLatch - Sets the latch * ResetLatch - Clears the latch, allowing it to be set again * WaitLatch - Waits for the latch to become set * * WaitLatch includes a provision for timeouts (which should be avoided * when possible, as they incur extra overhead) and a provision for * postmaster child processes to wake up immediately on postmaster death. * See latch.c for detailed specifications for the exported functions. * * The correct pattern to wait for event(s) is: * * for (;;) * { * ResetLatch(); * if (work to do) * Do Stuff(); * WaitLatch(); * } * * It's important to reset the latch *before* checking if there's work to * do. Otherwise, if someone sets the latch between the check and the * ResetLatch call, you will miss it and Wait will incorrectly block. * * Another valid coding pattern looks like: * * for (;;) * { * if (work to do) * Do Stuff(); // in particular, exit loop if some condition satisfied * WaitLatch(); * ResetLatch(); * } * * This is useful to reduce latch traffic if it's expected that the loop's * termination condition will often be satisfied in the first iteration; * the cost is an extra loop iteration before blocking when it is not. * What must be avoided is placing any checks for asynchronous events after * WaitLatch and before ResetLatch, as that creates a race condition. * * To wake up the waiter, you must first set a global flag or something * else that the wait loop tests in the "if (work to do)" part, and call * SetLatch *after* that. SetLatch is designed to return quickly if the * latch is already set. * * On some platforms, signals will not interrupt the latch wait primitive * by themselves. Therefore, it is critical that any signal handler that * is meant to terminate a WaitLatch wait calls SetLatch. * * Note that use of the process latch (PGPROC.procLatch) is generally better * than an ad-hoc shared latch for signaling auxiliary processes. This is * because generic signal handlers will call SetLatch on the process latch * only, so using any latch other than the process latch effectively precludes * use of any generic handler. * * * WaitEventSets allow to wait for latches being set and additional events - * postmaster dying and socket readiness of several sockets currently - at the * same time. On many platforms using a long lived event set is more * efficient than using WaitLatch or WaitLatchOrSocket. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/latch.h * *------------------------------------------------------------------------- */ #ifndef LATCH_H #define LATCH_H #include /* * Latch structure should be treated as opaque and only accessed through * the public functions. It is defined here to allow embedding Latches as * part of bigger structs. */ typedef struct Latch { sig_atomic_t is_set; bool is_shared; int owner_pid; #ifdef WIN32 HANDLE event; #endif } Latch; /* * Bitmasks for events that may wake-up WaitLatch(), WaitLatchOrSocket(), or * WaitEventSetWait(). */ #define WL_LATCH_SET (1 << 0) #define WL_SOCKET_READABLE (1 << 1) #define WL_SOCKET_WRITEABLE (1 << 2) #define WL_TIMEOUT (1 << 3) /* not for WaitEventSetWait() */ #define WL_POSTMASTER_DEATH (1 << 4) #define WL_EXIT_ON_PM_DEATH (1 << 5) #ifdef WIN32 #define WL_SOCKET_CONNECTED (1 << 6) #else /* avoid having to deal with case on platforms not requiring it */ #define WL_SOCKET_CONNECTED WL_SOCKET_WRITEABLE #endif #define WL_SOCKET_MASK (WL_SOCKET_READABLE | \ WL_SOCKET_WRITEABLE | \ WL_SOCKET_CONNECTED) typedef struct WaitEvent { int pos; /* position in the event data structure */ uint32 events; /* triggered events */ pgsocket fd; /* socket fd associated with event */ void *user_data; /* pointer provided in AddWaitEventToSet */ #ifdef WIN32 bool reset; /* Is reset of the event required? */ #endif } WaitEvent; /* forward declaration to avoid exposing latch.c implementation details */ typedef struct WaitEventSet WaitEventSet; /* * prototypes for functions in latch.c */ extern void InitializeLatchSupport(void); extern void InitLatch(Latch *latch); extern void InitSharedLatch(Latch *latch); extern void OwnLatch(Latch *latch); extern void DisownLatch(Latch *latch); extern void SetLatch(Latch *latch); extern void ResetLatch(Latch *latch); extern WaitEventSet *CreateWaitEventSet(MemoryContext context, int nevents); extern void FreeWaitEventSet(WaitEventSet *set); extern int AddWaitEventToSet(WaitEventSet *set, uint32 events, pgsocket fd, Latch *latch, void *user_data); extern void ModifyWaitEvent(WaitEventSet *set, int pos, uint32 events, Latch *latch); extern int WaitEventSetWait(WaitEventSet *set, long timeout, WaitEvent *occurred_events, int nevents, uint32 wait_event_info); extern int WaitLatch(Latch *latch, int wakeEvents, long timeout, uint32 wait_event_info); extern int WaitLatchOrSocket(Latch *latch, int wakeEvents, pgsocket sock, long timeout, uint32 wait_event_info); /* * Unix implementation uses SIGUSR1 for inter-process signaling. * Win32 doesn't need this. */ #ifndef WIN32 extern void latch_sigusr1_handler(void); #else #define latch_sigusr1_handler() ((void) 0) #endif #endif /* LATCH_H */ libpg_query-13-2.1.0/src/postgres/include/storage/lmgr.h000066400000000000000000000107431413137616400231260ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * lmgr.h * POSTGRES lock manager definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/lmgr.h * *------------------------------------------------------------------------- */ #ifndef LMGR_H #define LMGR_H #include "lib/stringinfo.h" #include "storage/itemptr.h" #include "storage/lock.h" #include "utils/rel.h" /* XactLockTableWait operations */ typedef enum XLTW_Oper { XLTW_None, XLTW_Update, XLTW_Delete, XLTW_Lock, XLTW_LockUpdated, XLTW_InsertIndex, XLTW_InsertIndexUnique, XLTW_FetchUpdated, XLTW_RecheckExclusionConstr } XLTW_Oper; extern void RelationInitLockInfo(Relation relation); /* Lock a relation */ extern void LockRelationOid(Oid relid, LOCKMODE lockmode); extern bool ConditionalLockRelationOid(Oid relid, LOCKMODE lockmode); extern void UnlockRelationId(LockRelId *relid, LOCKMODE lockmode); extern void UnlockRelationOid(Oid relid, LOCKMODE lockmode); extern void LockRelation(Relation relation, LOCKMODE lockmode); extern bool ConditionalLockRelation(Relation relation, LOCKMODE lockmode); extern void UnlockRelation(Relation relation, LOCKMODE lockmode); extern bool CheckRelationLockedByMe(Relation relation, LOCKMODE lockmode, bool orstronger); extern bool LockHasWaitersRelation(Relation relation, LOCKMODE lockmode); extern void LockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode); extern void UnlockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode); /* Lock a relation for extension */ extern void LockRelationForExtension(Relation relation, LOCKMODE lockmode); extern void UnlockRelationForExtension(Relation relation, LOCKMODE lockmode); extern bool ConditionalLockRelationForExtension(Relation relation, LOCKMODE lockmode); extern int RelationExtensionLockWaiterCount(Relation relation); /* Lock to recompute pg_database.datfrozenxid in the current database */ extern void LockDatabaseFrozenIds(LOCKMODE lockmode); /* Lock a page (currently only used within indexes) */ extern void LockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode); extern bool ConditionalLockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode); extern void UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode); /* Lock a tuple (see heap_lock_tuple before assuming you understand this) */ extern void LockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode); extern bool ConditionalLockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode); extern void UnlockTuple(Relation relation, ItemPointer tid, LOCKMODE lockmode); /* Lock an XID (used to wait for a transaction to finish) */ extern void XactLockTableInsert(TransactionId xid); extern void XactLockTableDelete(TransactionId xid); extern void XactLockTableWait(TransactionId xid, Relation rel, ItemPointer ctid, XLTW_Oper oper); extern bool ConditionalXactLockTableWait(TransactionId xid); /* Lock VXIDs, specified by conflicting locktags */ extern void WaitForLockers(LOCKTAG heaplocktag, LOCKMODE lockmode, bool progress); extern void WaitForLockersMultiple(List *locktags, LOCKMODE lockmode, bool progress); /* Lock an XID for tuple insertion (used to wait for an insertion to finish) */ extern uint32 SpeculativeInsertionLockAcquire(TransactionId xid); extern void SpeculativeInsertionLockRelease(TransactionId xid); extern void SpeculativeInsertionWait(TransactionId xid, uint32 token); /* Lock a general object (other than a relation) of the current database */ extern void LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); extern void UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); /* Lock a shared-across-databases object (other than a relation) */ extern void LockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); extern void UnlockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); extern void LockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); extern void UnlockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode); /* Describe a locktag for error messages */ extern void DescribeLockTag(StringInfo buf, const LOCKTAG *tag); extern const char *GetLockNameFromTagType(uint16 locktag_type); #endif /* LMGR_H */ libpg_query-13-2.1.0/src/postgres/include/storage/lock.h000066400000000000000000000577361413137616400231320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * lock.h * POSTGRES low-level lock mechanism * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/lock.h * *------------------------------------------------------------------------- */ #ifndef LOCK_H_ #define LOCK_H_ #ifdef FRONTEND #error "lock.h may not be included from frontend code" #endif #include "storage/backendid.h" #include "storage/lockdefs.h" #include "storage/lwlock.h" #include "storage/shmem.h" /* struct PGPROC is declared in proc.h, but must forward-reference it */ typedef struct PGPROC PGPROC; typedef struct PROC_QUEUE { SHM_QUEUE links; /* head of list of PGPROC objects */ int size; /* number of entries in list */ } PROC_QUEUE; /* GUC variables */ extern int max_locks_per_xact; #ifdef LOCK_DEBUG extern int Trace_lock_oidmin; extern bool Trace_locks; extern bool Trace_userlocks; extern int Trace_lock_table; extern bool Debug_deadlocks; #endif /* LOCK_DEBUG */ /* * Top-level transactions are identified by VirtualTransactionIDs comprising * PGPROC fields backendId and lxid. For prepared transactions, the * LocalTransactionId is an ordinary XID. These are guaranteed unique over * the short term, but will be reused after a database restart or XID * wraparound; hence they should never be stored on disk. * * Note that struct VirtualTransactionId can not be assumed to be atomically * assignable as a whole. However, type LocalTransactionId is assumed to * be atomically assignable, and the backend ID doesn't change often enough * to be a problem, so we can fetch or assign the two fields separately. * We deliberately refrain from using the struct within PGPROC, to prevent * coding errors from trying to use struct assignment with it; instead use * GET_VXID_FROM_PGPROC(). */ typedef struct { BackendId backendId; /* backendId from PGPROC */ LocalTransactionId localTransactionId; /* lxid from PGPROC */ } VirtualTransactionId; #define InvalidLocalTransactionId 0 #define LocalTransactionIdIsValid(lxid) ((lxid) != InvalidLocalTransactionId) #define VirtualTransactionIdIsValid(vxid) \ (LocalTransactionIdIsValid((vxid).localTransactionId)) #define VirtualTransactionIdIsPreparedXact(vxid) \ ((vxid).backendId == InvalidBackendId) #define VirtualTransactionIdEquals(vxid1, vxid2) \ ((vxid1).backendId == (vxid2).backendId && \ (vxid1).localTransactionId == (vxid2).localTransactionId) #define SetInvalidVirtualTransactionId(vxid) \ ((vxid).backendId = InvalidBackendId, \ (vxid).localTransactionId = InvalidLocalTransactionId) #define GET_VXID_FROM_PGPROC(vxid, proc) \ ((vxid).backendId = (proc).backendId, \ (vxid).localTransactionId = (proc).lxid) /* MAX_LOCKMODES cannot be larger than the # of bits in LOCKMASK */ #define MAX_LOCKMODES 10 #define LOCKBIT_ON(lockmode) (1 << (lockmode)) #define LOCKBIT_OFF(lockmode) (~(1 << (lockmode))) /* * This data structure defines the locking semantics associated with a * "lock method". The semantics specify the meaning of each lock mode * (by defining which lock modes it conflicts with). * All of this data is constant and is kept in const tables. * * numLockModes -- number of lock modes (READ,WRITE,etc) that * are defined in this lock method. Must be less than MAX_LOCKMODES. * * conflictTab -- this is an array of bitmasks showing lock * mode conflicts. conflictTab[i] is a mask with the j-th bit * turned on if lock modes i and j conflict. Lock modes are * numbered 1..numLockModes; conflictTab[0] is unused. * * lockModeNames -- ID strings for debug printouts. * * trace_flag -- pointer to GUC trace flag for this lock method. (The * GUC variable is not constant, but we use "const" here to denote that * it can't be changed through this reference.) */ typedef struct LockMethodData { int numLockModes; const LOCKMASK *conflictTab; const char *const *lockModeNames; const bool *trace_flag; } LockMethodData; typedef const LockMethodData *LockMethod; /* * Lock methods are identified by LOCKMETHODID. (Despite the declaration as * uint16, we are constrained to 256 lockmethods by the layout of LOCKTAG.) */ typedef uint16 LOCKMETHODID; /* These identify the known lock methods */ #define DEFAULT_LOCKMETHOD 1 #define USER_LOCKMETHOD 2 /* * LOCKTAG is the key information needed to look up a LOCK item in the * lock hashtable. A LOCKTAG value uniquely identifies a lockable object. * * The LockTagType enum defines the different kinds of objects we can lock. * We can handle up to 256 different LockTagTypes. */ typedef enum LockTagType { LOCKTAG_RELATION, /* whole relation */ LOCKTAG_RELATION_EXTEND, /* the right to extend a relation */ LOCKTAG_DATABASE_FROZEN_IDS, /* pg_database.datfrozenxid */ LOCKTAG_PAGE, /* one page of a relation */ LOCKTAG_TUPLE, /* one physical tuple */ LOCKTAG_TRANSACTION, /* transaction (for waiting for xact done) */ LOCKTAG_VIRTUALTRANSACTION, /* virtual transaction (ditto) */ LOCKTAG_SPECULATIVE_TOKEN, /* speculative insertion Xid and token */ LOCKTAG_OBJECT, /* non-relation database object */ LOCKTAG_USERLOCK, /* reserved for old contrib/userlock code */ LOCKTAG_ADVISORY /* advisory user locks */ } LockTagType; #define LOCKTAG_LAST_TYPE LOCKTAG_ADVISORY extern const char *const LockTagTypeNames[]; /* * The LOCKTAG struct is defined with malice aforethought to fit into 16 * bytes with no padding. Note that this would need adjustment if we were * to widen Oid, BlockNumber, or TransactionId to more than 32 bits. * * We include lockmethodid in the locktag so that a single hash table in * shared memory can store locks of different lockmethods. */ typedef struct LOCKTAG { uint32 locktag_field1; /* a 32-bit ID field */ uint32 locktag_field2; /* a 32-bit ID field */ uint32 locktag_field3; /* a 32-bit ID field */ uint16 locktag_field4; /* a 16-bit ID field */ uint8 locktag_type; /* see enum LockTagType */ uint8 locktag_lockmethodid; /* lockmethod indicator */ } LOCKTAG; /* * These macros define how we map logical IDs of lockable objects into * the physical fields of LOCKTAG. Use these to set up LOCKTAG values, * rather than accessing the fields directly. Note multiple eval of target! */ /* ID info for a relation is DB OID + REL OID; DB OID = 0 if shared */ #define SET_LOCKTAG_RELATION(locktag,dboid,reloid) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ (locktag).locktag_field3 = 0, \ (locktag).locktag_field4 = 0, \ (locktag).locktag_type = LOCKTAG_RELATION, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) /* same ID info as RELATION */ #define SET_LOCKTAG_RELATION_EXTEND(locktag,dboid,reloid) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ (locktag).locktag_field3 = 0, \ (locktag).locktag_field4 = 0, \ (locktag).locktag_type = LOCKTAG_RELATION_EXTEND, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) /* ID info for frozen IDs is DB OID */ #define SET_LOCKTAG_DATABASE_FROZEN_IDS(locktag,dboid) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = 0, \ (locktag).locktag_field3 = 0, \ (locktag).locktag_field4 = 0, \ (locktag).locktag_type = LOCKTAG_DATABASE_FROZEN_IDS, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) /* ID info for a page is RELATION info + BlockNumber */ #define SET_LOCKTAG_PAGE(locktag,dboid,reloid,blocknum) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ (locktag).locktag_field3 = (blocknum), \ (locktag).locktag_field4 = 0, \ (locktag).locktag_type = LOCKTAG_PAGE, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) /* ID info for a tuple is PAGE info + OffsetNumber */ #define SET_LOCKTAG_TUPLE(locktag,dboid,reloid,blocknum,offnum) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ (locktag).locktag_field3 = (blocknum), \ (locktag).locktag_field4 = (offnum), \ (locktag).locktag_type = LOCKTAG_TUPLE, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) /* ID info for a transaction is its TransactionId */ #define SET_LOCKTAG_TRANSACTION(locktag,xid) \ ((locktag).locktag_field1 = (xid), \ (locktag).locktag_field2 = 0, \ (locktag).locktag_field3 = 0, \ (locktag).locktag_field4 = 0, \ (locktag).locktag_type = LOCKTAG_TRANSACTION, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) /* ID info for a virtual transaction is its VirtualTransactionId */ #define SET_LOCKTAG_VIRTUALTRANSACTION(locktag,vxid) \ ((locktag).locktag_field1 = (vxid).backendId, \ (locktag).locktag_field2 = (vxid).localTransactionId, \ (locktag).locktag_field3 = 0, \ (locktag).locktag_field4 = 0, \ (locktag).locktag_type = LOCKTAG_VIRTUALTRANSACTION, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) /* * ID info for a speculative insert is TRANSACTION info + * its speculative insert counter. */ #define SET_LOCKTAG_SPECULATIVE_INSERTION(locktag,xid,token) \ ((locktag).locktag_field1 = (xid), \ (locktag).locktag_field2 = (token), \ (locktag).locktag_field3 = 0, \ (locktag).locktag_field4 = 0, \ (locktag).locktag_type = LOCKTAG_SPECULATIVE_TOKEN, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) /* * ID info for an object is DB OID + CLASS OID + OBJECT OID + SUBID * * Note: object ID has same representation as in pg_depend and * pg_description, but notice that we are constraining SUBID to 16 bits. * Also, we use DB OID = 0 for shared objects such as tablespaces. */ #define SET_LOCKTAG_OBJECT(locktag,dboid,classoid,objoid,objsubid) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (classoid), \ (locktag).locktag_field3 = (objoid), \ (locktag).locktag_field4 = (objsubid), \ (locktag).locktag_type = LOCKTAG_OBJECT, \ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD) #define SET_LOCKTAG_ADVISORY(locktag,id1,id2,id3,id4) \ ((locktag).locktag_field1 = (id1), \ (locktag).locktag_field2 = (id2), \ (locktag).locktag_field3 = (id3), \ (locktag).locktag_field4 = (id4), \ (locktag).locktag_type = LOCKTAG_ADVISORY, \ (locktag).locktag_lockmethodid = USER_LOCKMETHOD) /* * Per-locked-object lock information: * * tag -- uniquely identifies the object being locked * grantMask -- bitmask for all lock types currently granted on this object. * waitMask -- bitmask for all lock types currently awaited on this object. * procLocks -- list of PROCLOCK objects for this lock. * waitProcs -- queue of processes waiting for this lock. * requested -- count of each lock type currently requested on the lock * (includes requests already granted!!). * nRequested -- total requested locks of all types. * granted -- count of each lock type currently granted on the lock. * nGranted -- total granted locks of all types. * * Note: these counts count 1 for each backend. Internally to a backend, * there may be multiple grabs on a particular lock, but this is not reflected * into shared memory. */ typedef struct LOCK { /* hash key */ LOCKTAG tag; /* unique identifier of lockable object */ /* data */ LOCKMASK grantMask; /* bitmask for lock types already granted */ LOCKMASK waitMask; /* bitmask for lock types awaited */ SHM_QUEUE procLocks; /* list of PROCLOCK objects assoc. with lock */ PROC_QUEUE waitProcs; /* list of PGPROC objects waiting on lock */ int requested[MAX_LOCKMODES]; /* counts of requested locks */ int nRequested; /* total of requested[] array */ int granted[MAX_LOCKMODES]; /* counts of granted locks */ int nGranted; /* total of granted[] array */ } LOCK; #define LOCK_LOCKMETHOD(lock) ((LOCKMETHODID) (lock).tag.locktag_lockmethodid) #define LOCK_LOCKTAG(lock) ((LockTagType) (lock).tag.locktag_type) /* * We may have several different backends holding or awaiting locks * on the same lockable object. We need to store some per-holder/waiter * information for each such holder (or would-be holder). This is kept in * a PROCLOCK struct. * * PROCLOCKTAG is the key information needed to look up a PROCLOCK item in the * proclock hashtable. A PROCLOCKTAG value uniquely identifies the combination * of a lockable object and a holder/waiter for that object. (We can use * pointers here because the PROCLOCKTAG need only be unique for the lifespan * of the PROCLOCK, and it will never outlive the lock or the proc.) * * Internally to a backend, it is possible for the same lock to be held * for different purposes: the backend tracks transaction locks separately * from session locks. However, this is not reflected in the shared-memory * state: we only track which backend(s) hold the lock. This is OK since a * backend can never block itself. * * The holdMask field shows the already-granted locks represented by this * proclock. Note that there will be a proclock object, possibly with * zero holdMask, for any lock that the process is currently waiting on. * Otherwise, proclock objects whose holdMasks are zero are recycled * as soon as convenient. * * releaseMask is workspace for LockReleaseAll(): it shows the locks due * to be released during the current call. This must only be examined or * set by the backend owning the PROCLOCK. * * Each PROCLOCK object is linked into lists for both the associated LOCK * object and the owning PGPROC object. Note that the PROCLOCK is entered * into these lists as soon as it is created, even if no lock has yet been * granted. A PGPROC that is waiting for a lock to be granted will also be * linked into the lock's waitProcs queue. */ typedef struct PROCLOCKTAG { /* NB: we assume this struct contains no padding! */ LOCK *myLock; /* link to per-lockable-object information */ PGPROC *myProc; /* link to PGPROC of owning backend */ } PROCLOCKTAG; typedef struct PROCLOCK { /* tag */ PROCLOCKTAG tag; /* unique identifier of proclock object */ /* data */ PGPROC *groupLeader; /* proc's lock group leader, or proc itself */ LOCKMASK holdMask; /* bitmask for lock types currently held */ LOCKMASK releaseMask; /* bitmask for lock types to be released */ SHM_QUEUE lockLink; /* list link in LOCK's list of proclocks */ SHM_QUEUE procLink; /* list link in PGPROC's list of proclocks */ } PROCLOCK; #define PROCLOCK_LOCKMETHOD(proclock) \ LOCK_LOCKMETHOD(*((proclock).tag.myLock)) /* * Each backend also maintains a local hash table with information about each * lock it is currently interested in. In particular the local table counts * the number of times that lock has been acquired. This allows multiple * requests for the same lock to be executed without additional accesses to * shared memory. We also track the number of lock acquisitions per * ResourceOwner, so that we can release just those locks belonging to a * particular ResourceOwner. * * When holding a lock taken "normally", the lock and proclock fields always * point to the associated objects in shared memory. However, if we acquired * the lock via the fast-path mechanism, the lock and proclock fields are set * to NULL, since there probably aren't any such objects in shared memory. * (If the lock later gets promoted to normal representation, we may eventually * update our locallock's lock/proclock fields after finding the shared * objects.) * * Caution: a locallock object can be left over from a failed lock acquisition * attempt. In this case its lock/proclock fields are untrustworthy, since * the shared lock object is neither held nor awaited, and hence is available * to be reclaimed. If nLocks > 0 then these pointers must either be valid or * NULL, but when nLocks == 0 they should be considered garbage. */ typedef struct LOCALLOCKTAG { LOCKTAG lock; /* identifies the lockable object */ LOCKMODE mode; /* lock mode for this table entry */ } LOCALLOCKTAG; typedef struct LOCALLOCKOWNER { /* * Note: if owner is NULL then the lock is held on behalf of the session; * otherwise it is held on behalf of my current transaction. * * Must use a forward struct reference to avoid circularity. */ struct ResourceOwnerData *owner; int64 nLocks; /* # of times held by this owner */ } LOCALLOCKOWNER; typedef struct LOCALLOCK { /* tag */ LOCALLOCKTAG tag; /* unique identifier of locallock entry */ /* data */ uint32 hashcode; /* copy of LOCKTAG's hash value */ LOCK *lock; /* associated LOCK object, if any */ PROCLOCK *proclock; /* associated PROCLOCK object, if any */ int64 nLocks; /* total number of times lock is held */ int numLockOwners; /* # of relevant ResourceOwners */ int maxLockOwners; /* allocated size of array */ LOCALLOCKOWNER *lockOwners; /* dynamically resizable array */ bool holdsStrongLockCount; /* bumped FastPathStrongRelationLocks */ bool lockCleared; /* we read all sinval msgs for lock */ } LOCALLOCK; #define LOCALLOCK_LOCKMETHOD(llock) ((llock).tag.lock.locktag_lockmethodid) #define LOCALLOCK_LOCKTAG(llock) ((LockTagType) (llock).tag.lock.locktag_type) /* * These structures hold information passed from lmgr internals to the lock * listing user-level functions (in lockfuncs.c). */ typedef struct LockInstanceData { LOCKTAG locktag; /* tag for locked object */ LOCKMASK holdMask; /* locks held by this PGPROC */ LOCKMODE waitLockMode; /* lock awaited by this PGPROC, if any */ BackendId backend; /* backend ID of this PGPROC */ LocalTransactionId lxid; /* local transaction ID of this PGPROC */ int pid; /* pid of this PGPROC */ int leaderPid; /* pid of group leader; = pid if no group */ bool fastpath; /* taken via fastpath? */ } LockInstanceData; typedef struct LockData { int nelements; /* The length of the array */ LockInstanceData *locks; /* Array of per-PROCLOCK information */ } LockData; typedef struct BlockedProcData { int pid; /* pid of a blocked PGPROC */ /* Per-PROCLOCK information about PROCLOCKs of the lock the pid awaits */ /* (these fields refer to indexes in BlockedProcsData.locks[]) */ int first_lock; /* index of first relevant LockInstanceData */ int num_locks; /* number of relevant LockInstanceDatas */ /* PIDs of PGPROCs that are ahead of "pid" in the lock's wait queue */ /* (these fields refer to indexes in BlockedProcsData.waiter_pids[]) */ int first_waiter; /* index of first preceding waiter */ int num_waiters; /* number of preceding waiters */ } BlockedProcData; typedef struct BlockedProcsData { BlockedProcData *procs; /* Array of per-blocked-proc information */ LockInstanceData *locks; /* Array of per-PROCLOCK information */ int *waiter_pids; /* Array of PIDs of other blocked PGPROCs */ int nprocs; /* # of valid entries in procs[] array */ int maxprocs; /* Allocated length of procs[] array */ int nlocks; /* # of valid entries in locks[] array */ int maxlocks; /* Allocated length of locks[] array */ int npids; /* # of valid entries in waiter_pids[] array */ int maxpids; /* Allocated length of waiter_pids[] array */ } BlockedProcsData; /* Result codes for LockAcquire() */ typedef enum { LOCKACQUIRE_NOT_AVAIL, /* lock not available, and dontWait=true */ LOCKACQUIRE_OK, /* lock successfully acquired */ LOCKACQUIRE_ALREADY_HELD, /* incremented count for lock already held */ LOCKACQUIRE_ALREADY_CLEAR /* incremented count for lock already clear */ } LockAcquireResult; /* Deadlock states identified by DeadLockCheck() */ typedef enum { DS_NOT_YET_CHECKED, /* no deadlock check has run yet */ DS_NO_DEADLOCK, /* no deadlock detected */ DS_SOFT_DEADLOCK, /* deadlock avoided by queue rearrangement */ DS_HARD_DEADLOCK, /* deadlock, no way out but ERROR */ DS_BLOCKED_BY_AUTOVACUUM /* no deadlock; queue blocked by autovacuum * worker */ } DeadLockState; /* * The lockmgr's shared hash tables are partitioned to reduce contention. * To determine which partition a given locktag belongs to, compute the tag's * hash code with LockTagHashCode(), then apply one of these macros. * NB: NUM_LOCK_PARTITIONS must be a power of 2! */ #define LockHashPartition(hashcode) \ ((hashcode) % NUM_LOCK_PARTITIONS) #define LockHashPartitionLock(hashcode) \ (&MainLWLockArray[LOCK_MANAGER_LWLOCK_OFFSET + \ LockHashPartition(hashcode)].lock) #define LockHashPartitionLockByIndex(i) \ (&MainLWLockArray[LOCK_MANAGER_LWLOCK_OFFSET + (i)].lock) /* * The deadlock detector needs to be able to access lockGroupLeader and * related fields in the PGPROC, so we arrange for those fields to be protected * by one of the lock hash partition locks. Since the deadlock detector * acquires all such locks anyway, this makes it safe for it to access these * fields without doing anything extra. To avoid contention as much as * possible, we map different PGPROCs to different partition locks. The lock * used for a given lock group is determined by the group leader's pgprocno. */ #define LockHashPartitionLockByProc(leader_pgproc) \ LockHashPartitionLock((leader_pgproc)->pgprocno) /* * function prototypes */ extern void InitLocks(void); extern LockMethod GetLocksMethodTable(const LOCK *lock); extern LockMethod GetLockTagsMethodTable(const LOCKTAG *locktag); extern uint32 LockTagHashCode(const LOCKTAG *locktag); extern bool DoLockModesConflict(LOCKMODE mode1, LOCKMODE mode2); extern LockAcquireResult LockAcquire(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock, bool dontWait); extern LockAcquireResult LockAcquireExtended(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock, bool dontWait, bool reportMemoryError, LOCALLOCK **locallockp); extern void AbortStrongLockAcquire(void); extern void MarkLockClear(LOCALLOCK *locallock); extern bool LockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock); extern void LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks); extern void LockReleaseSession(LOCKMETHODID lockmethodid); extern void LockReleaseCurrentOwner(LOCALLOCK **locallocks, int nlocks); extern void LockReassignCurrentOwner(LOCALLOCK **locallocks, int nlocks); extern bool LockHeldByMe(const LOCKTAG *locktag, LOCKMODE lockmode); #ifdef USE_ASSERT_CHECKING extern HTAB *GetLockMethodLocalHash(void); #endif extern bool LockHasWaiters(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock); extern VirtualTransactionId *GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode, int *countp); extern void AtPrepare_Locks(void); extern void PostPrepare_Locks(TransactionId xid); extern bool LockCheckConflicts(LockMethod lockMethodTable, LOCKMODE lockmode, LOCK *lock, PROCLOCK *proclock); extern void GrantLock(LOCK *lock, PROCLOCK *proclock, LOCKMODE lockmode); extern void GrantAwaitedLock(void); extern void RemoveFromWaitQueue(PGPROC *proc, uint32 hashcode); extern Size LockShmemSize(void); extern LockData *GetLockStatusData(void); extern BlockedProcsData *GetBlockerStatusData(int blocked_pid); extern xl_standby_lock *GetRunningTransactionLocks(int *nlocks); extern const char *GetLockmodeName(LOCKMETHODID lockmethodid, LOCKMODE mode); extern void lock_twophase_recover(TransactionId xid, uint16 info, void *recdata, uint32 len); extern void lock_twophase_postcommit(TransactionId xid, uint16 info, void *recdata, uint32 len); extern void lock_twophase_postabort(TransactionId xid, uint16 info, void *recdata, uint32 len); extern void lock_twophase_standby_recover(TransactionId xid, uint16 info, void *recdata, uint32 len); extern DeadLockState DeadLockCheck(PGPROC *proc); extern PGPROC *GetBlockingAutoVacuumPgproc(void); extern void DeadLockReport(void) pg_attribute_noreturn(); extern void RememberSimpleDeadLock(PGPROC *proc1, LOCKMODE lockmode, LOCK *lock, PGPROC *proc2); extern void InitDeadLockChecking(void); extern int LockWaiterCount(const LOCKTAG *locktag); #ifdef LOCK_DEBUG extern void DumpLocks(PGPROC *proc); extern void DumpAllLocks(void); #endif /* Lock a VXID (used to wait for a transaction to finish) */ extern void VirtualXactLockTableInsert(VirtualTransactionId vxid); extern void VirtualXactLockTableCleanup(void); extern bool VirtualXactLock(VirtualTransactionId vxid, bool wait); #endif /* LOCK_H_ */ libpg_query-13-2.1.0/src/postgres/include/storage/lockdefs.h000066400000000000000000000037531413137616400237620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * lockdefs.h * Frontend exposed parts of postgres' low level lock mechanism * * The split between lockdefs.h and lock.h is not very principled. This file * contains definition that have to (indirectly) be available when included by * FRONTEND code. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/lockdefs.h * *------------------------------------------------------------------------- */ #ifndef LOCKDEFS_H_ #define LOCKDEFS_H_ /* * LOCKMODE is an integer (1..N) indicating a lock type. LOCKMASK is a bit * mask indicating a set of held or requested lock types (the bit 1<lwWaitMode, * when waiting for lock to become free. Not * to be used as LWLockAcquire argument */ } LWLockMode; #ifdef LOCK_DEBUG extern bool Trace_lwlocks; #endif extern bool LWLockAcquire(LWLock *lock, LWLockMode mode); extern bool LWLockConditionalAcquire(LWLock *lock, LWLockMode mode); extern bool LWLockAcquireOrWait(LWLock *lock, LWLockMode mode); extern void LWLockRelease(LWLock *lock); extern void LWLockReleaseClearVar(LWLock *lock, uint64 *valptr, uint64 val); extern void LWLockReleaseAll(void); extern bool LWLockHeldByMe(LWLock *lock); extern bool LWLockHeldByMeInMode(LWLock *lock, LWLockMode mode); extern bool LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval); extern void LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 value); extern Size LWLockShmemSize(void); extern void CreateLWLocks(void); extern void InitLWLockAccess(void); extern const char *GetLWLockIdentifier(uint32 classId, uint16 eventId); /* * Extensions (or core code) can obtain an LWLocks by calling * RequestNamedLWLockTranche() during postmaster startup. Subsequently, * call GetNamedLWLockTranche() to obtain a pointer to an array containing * the number of LWLocks requested. */ extern void RequestNamedLWLockTranche(const char *tranche_name, int num_lwlocks); extern LWLockPadded *GetNamedLWLockTranche(const char *tranche_name); /* * There is another, more flexible method of obtaining lwlocks. First, call * LWLockNewTrancheId just once to obtain a tranche ID; this allocates from * a shared counter. Next, each individual process using the tranche should * call LWLockRegisterTranche() to associate that tranche ID with a name. * Finally, LWLockInitialize should be called just once per lwlock, passing * the tranche ID as an argument. * * It may seem strange that each process using the tranche must register it * separately, but dynamic shared memory segments aren't guaranteed to be * mapped at the same address in all coordinating backends, so storing the * registration in the main shared memory segment wouldn't work for that case. */ extern int LWLockNewTrancheId(void); extern void LWLockRegisterTranche(int tranche_id, const char *tranche_name); extern void LWLockInitialize(LWLock *lock, int tranche_id); /* * Every tranche ID less than NUM_INDIVIDUAL_LWLOCKS is reserved; also, * we reserve additional tranche IDs for builtin tranches not included in * the set of individual LWLocks. A call to LWLockNewTrancheId will never * return a value less than LWTRANCHE_FIRST_USER_DEFINED. */ typedef enum BuiltinTrancheIds { LWTRANCHE_XACT_BUFFER = NUM_INDIVIDUAL_LWLOCKS, LWTRANCHE_COMMITTS_BUFFER, LWTRANCHE_SUBTRANS_BUFFER, LWTRANCHE_MULTIXACTOFFSET_BUFFER, LWTRANCHE_MULTIXACTMEMBER_BUFFER, LWTRANCHE_NOTIFY_BUFFER, LWTRANCHE_SERIAL_BUFFER, LWTRANCHE_WAL_INSERT, LWTRANCHE_BUFFER_CONTENT, LWTRANCHE_BUFFER_IO, LWTRANCHE_REPLICATION_ORIGIN_STATE, LWTRANCHE_REPLICATION_SLOT_IO, LWTRANCHE_LOCK_FASTPATH, LWTRANCHE_BUFFER_MAPPING, LWTRANCHE_LOCK_MANAGER, LWTRANCHE_PREDICATE_LOCK_MANAGER, LWTRANCHE_PARALLEL_HASH_JOIN, LWTRANCHE_PARALLEL_QUERY_DSA, LWTRANCHE_PER_SESSION_DSA, LWTRANCHE_PER_SESSION_RECORD_TYPE, LWTRANCHE_PER_SESSION_RECORD_TYPMOD, LWTRANCHE_SHARED_TUPLESTORE, LWTRANCHE_SHARED_TIDBITMAP, LWTRANCHE_PARALLEL_APPEND, LWTRANCHE_PER_XACT_PREDICATE_LIST, LWTRANCHE_FIRST_USER_DEFINED } BuiltinTrancheIds; /* * Prior to PostgreSQL 9.4, we used an enum type called LWLockId to refer * to LWLocks. New code should instead use LWLock *. However, for the * convenience of third-party code, we include the following typedef. */ typedef LWLock *LWLockId; #endif /* LWLOCK_H */ libpg_query-13-2.1.0/src/postgres/include/storage/lwlocknames.h000066400000000000000000000052031413137616400244770ustar00rootroot00000000000000/* autogenerated from src/backend/storage/lmgr/lwlocknames.txt, do not edit */ /* there is deliberately not an #ifndef LWLOCKNAMES_H here */ #define ShmemIndexLock (&MainLWLockArray[1].lock) #define OidGenLock (&MainLWLockArray[2].lock) #define XidGenLock (&MainLWLockArray[3].lock) #define ProcArrayLock (&MainLWLockArray[4].lock) #define SInvalReadLock (&MainLWLockArray[5].lock) #define SInvalWriteLock (&MainLWLockArray[6].lock) #define WALBufMappingLock (&MainLWLockArray[7].lock) #define WALWriteLock (&MainLWLockArray[8].lock) #define ControlFileLock (&MainLWLockArray[9].lock) #define CheckpointLock (&MainLWLockArray[10].lock) #define XactSLRULock (&MainLWLockArray[11].lock) #define SubtransSLRULock (&MainLWLockArray[12].lock) #define MultiXactGenLock (&MainLWLockArray[13].lock) #define MultiXactOffsetSLRULock (&MainLWLockArray[14].lock) #define MultiXactMemberSLRULock (&MainLWLockArray[15].lock) #define RelCacheInitLock (&MainLWLockArray[16].lock) #define CheckpointerCommLock (&MainLWLockArray[17].lock) #define TwoPhaseStateLock (&MainLWLockArray[18].lock) #define TablespaceCreateLock (&MainLWLockArray[19].lock) #define BtreeVacuumLock (&MainLWLockArray[20].lock) #define AddinShmemInitLock (&MainLWLockArray[21].lock) #define AutovacuumLock (&MainLWLockArray[22].lock) #define AutovacuumScheduleLock (&MainLWLockArray[23].lock) #define SyncScanLock (&MainLWLockArray[24].lock) #define RelationMappingLock (&MainLWLockArray[25].lock) #define NotifySLRULock (&MainLWLockArray[26].lock) #define NotifyQueueLock (&MainLWLockArray[27].lock) #define SerializableXactHashLock (&MainLWLockArray[28].lock) #define SerializableFinishedListLock (&MainLWLockArray[29].lock) #define SerializablePredicateListLock (&MainLWLockArray[30].lock) #define SerialSLRULock (&MainLWLockArray[31].lock) #define SyncRepLock (&MainLWLockArray[32].lock) #define BackgroundWorkerLock (&MainLWLockArray[33].lock) #define DynamicSharedMemoryControlLock (&MainLWLockArray[34].lock) #define AutoFileLock (&MainLWLockArray[35].lock) #define ReplicationSlotAllocationLock (&MainLWLockArray[36].lock) #define ReplicationSlotControlLock (&MainLWLockArray[37].lock) #define CommitTsSLRULock (&MainLWLockArray[38].lock) #define CommitTsLock (&MainLWLockArray[39].lock) #define ReplicationOriginLock (&MainLWLockArray[40].lock) #define MultiXactTruncationLock (&MainLWLockArray[41].lock) #define OldSnapshotTimeMapLock (&MainLWLockArray[42].lock) #define LogicalRepWorkerLock (&MainLWLockArray[43].lock) #define XactTruncationLock (&MainLWLockArray[44].lock) #define WrapLimitsVacuumLock (&MainLWLockArray[46].lock) #define NotifyQueueTailLock (&MainLWLockArray[47].lock) #define NUM_INDIVIDUAL_LWLOCKS 48 libpg_query-13-2.1.0/src/postgres/include/storage/off.h000066400000000000000000000030321413137616400227300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * off.h * POSTGRES disk "offset" definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/off.h * *------------------------------------------------------------------------- */ #ifndef OFF_H #define OFF_H #include "storage/itemid.h" /* * OffsetNumber: * * this is a 1-based index into the linp (ItemIdData) array in the * header of each disk page. */ typedef uint16 OffsetNumber; #define InvalidOffsetNumber ((OffsetNumber) 0) #define FirstOffsetNumber ((OffsetNumber) 1) #define MaxOffsetNumber ((OffsetNumber) (BLCKSZ / sizeof(ItemIdData))) /* ---------------- * support macros * ---------------- */ /* * OffsetNumberIsValid * True iff the offset number is valid. */ #define OffsetNumberIsValid(offsetNumber) \ ((bool) ((offsetNumber != InvalidOffsetNumber) && \ (offsetNumber <= MaxOffsetNumber))) /* * OffsetNumberNext * OffsetNumberPrev * Increments/decrements the argument. These macros look pointless * but they help us disambiguate the different manipulations on * OffsetNumbers (e.g., sometimes we subtract one from an * OffsetNumber to move back, and sometimes we do so to form a * real C array index). */ #define OffsetNumberNext(offsetNumber) \ ((OffsetNumber) (1 + (offsetNumber))) #define OffsetNumberPrev(offsetNumber) \ ((OffsetNumber) (-1 + (offsetNumber))) #endif /* OFF_H */ libpg_query-13-2.1.0/src/postgres/include/storage/pg_sema.h000066400000000000000000000042171413137616400235770ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_sema.h * Platform-independent API for semaphores. * * PostgreSQL requires counting semaphores (the kind that keep track of * multiple unlock operations, and will allow an equal number of subsequent * lock operations before blocking). The underlying implementation is * not the same on every platform. This file defines the API that must * be provided by each port. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/pg_sema.h * *------------------------------------------------------------------------- */ #ifndef PG_SEMA_H #define PG_SEMA_H /* * struct PGSemaphoreData and pointer type PGSemaphore are the data structure * representing an individual semaphore. The contents of PGSemaphoreData vary * across implementations and must never be touched by platform-independent * code; hence, PGSemaphoreData is declared as an opaque struct here. * * However, Windows is sufficiently unlike our other ports that it doesn't * seem worth insisting on ABI compatibility for Windows too. Hence, on * that platform just define PGSemaphore as HANDLE. */ #ifndef USE_WIN32_SEMAPHORES typedef struct PGSemaphoreData *PGSemaphore; #else typedef HANDLE PGSemaphore; #endif /* Report amount of shared memory needed */ extern Size PGSemaphoreShmemSize(int maxSemas); /* Module initialization (called during postmaster start or shmem reinit) */ extern void PGReserveSemaphores(int maxSemas); /* Allocate a PGSemaphore structure with initial count 1 */ extern PGSemaphore PGSemaphoreCreate(void); /* Reset a previously-initialized PGSemaphore to have count 0 */ extern void PGSemaphoreReset(PGSemaphore sema); /* Lock a semaphore (decrement count), blocking if count would be < 0 */ extern void PGSemaphoreLock(PGSemaphore sema); /* Unlock a semaphore (increment count) */ extern void PGSemaphoreUnlock(PGSemaphore sema); /* Lock a semaphore only if able to do so without blocking */ extern bool PGSemaphoreTryLock(PGSemaphore sema); #endif /* PG_SEMA_H */ libpg_query-13-2.1.0/src/postgres/include/storage/pg_shmem.h000066400000000000000000000052501413137616400237610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_shmem.h * Platform-independent API for shared memory support. * * Every port is expected to support shared memory with approximately * SysV-ish semantics; in particular, a memory block is not anonymous * but has an ID, and we must be able to tell whether there are any * remaining processes attached to a block of a specified ID. * * To simplify life for the SysV implementation, the ID is assumed to * consist of two unsigned long values (these are key and ID in SysV * terms). Other platforms may ignore the second value if they need * only one ID number. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/pg_shmem.h * *------------------------------------------------------------------------- */ #ifndef PG_SHMEM_H #define PG_SHMEM_H #include "storage/dsm_impl.h" typedef struct PGShmemHeader /* standard header for all Postgres shmem */ { int32 magic; /* magic # to identify Postgres segments */ #define PGShmemMagic 679834894 pid_t creatorPID; /* PID of creating process (set but unread) */ Size totalsize; /* total size of segment */ Size freeoffset; /* offset to first free space */ dsm_handle dsm_control; /* ID of dynamic shared memory control seg */ void *index; /* pointer to ShmemIndex table */ #ifndef WIN32 /* Windows doesn't have useful inode#s */ dev_t device; /* device data directory is on */ ino_t inode; /* inode number of data directory */ #endif } PGShmemHeader; /* GUC variables */ extern int shared_memory_type; extern int huge_pages; /* Possible values for huge_pages */ typedef enum { HUGE_PAGES_OFF, HUGE_PAGES_ON, HUGE_PAGES_TRY } HugePagesType; /* Possible values for shared_memory_type */ typedef enum { SHMEM_TYPE_WINDOWS, SHMEM_TYPE_SYSV, SHMEM_TYPE_MMAP } PGShmemType; #ifndef WIN32 extern unsigned long UsedShmemSegID; #else extern HANDLE UsedShmemSegID; extern void *ShmemProtectiveRegion; #endif extern void *UsedShmemSegAddr; #if !defined(WIN32) && !defined(EXEC_BACKEND) #define DEFAULT_SHARED_MEMORY_TYPE SHMEM_TYPE_MMAP #elif !defined(WIN32) #define DEFAULT_SHARED_MEMORY_TYPE SHMEM_TYPE_SYSV #else #define DEFAULT_SHARED_MEMORY_TYPE SHMEM_TYPE_WINDOWS #endif #ifdef EXEC_BACKEND extern void PGSharedMemoryReAttach(void); extern void PGSharedMemoryNoReAttach(void); #endif extern PGShmemHeader *PGSharedMemoryCreate(Size size, PGShmemHeader **shim); extern bool PGSharedMemoryIsInUse(unsigned long id1, unsigned long id2); extern void PGSharedMemoryDetach(void); #endif /* PG_SHMEM_H */ libpg_query-13-2.1.0/src/postgres/include/storage/pmsignal.h000066400000000000000000000060231413137616400237730ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pmsignal.h * routines for signaling the postmaster from its child processes * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/pmsignal.h * *------------------------------------------------------------------------- */ #ifndef PMSIGNAL_H #define PMSIGNAL_H #include #ifdef HAVE_SYS_PRCTL_H #include "sys/prctl.h" #endif #ifdef HAVE_SYS_PROCCTL_H #include "sys/procctl.h" #endif /* * Reasons for signaling the postmaster. We can cope with simultaneous * signals for different reasons. If the same reason is signaled multiple * times in quick succession, however, the postmaster is likely to observe * only one notification of it. This is okay for the present uses. */ typedef enum { PMSIGNAL_RECOVERY_STARTED, /* recovery has started */ PMSIGNAL_BEGIN_HOT_STANDBY, /* begin Hot Standby */ PMSIGNAL_WAKEN_ARCHIVER, /* send a NOTIFY signal to xlog archiver */ PMSIGNAL_ROTATE_LOGFILE, /* send SIGUSR1 to syslogger to rotate logfile */ PMSIGNAL_START_AUTOVAC_LAUNCHER, /* start an autovacuum launcher */ PMSIGNAL_START_AUTOVAC_WORKER, /* start an autovacuum worker */ PMSIGNAL_BACKGROUND_WORKER_CHANGE, /* background worker state change */ PMSIGNAL_START_WALRECEIVER, /* start a walreceiver */ PMSIGNAL_ADVANCE_STATE_MACHINE, /* advance postmaster's state machine */ NUM_PMSIGNALS /* Must be last value of enum! */ } PMSignalReason; /* PMSignalData is an opaque struct, details known only within pmsignal.c */ typedef struct PMSignalData PMSignalData; /* * prototypes for functions in pmsignal.c */ extern Size PMSignalShmemSize(void); extern void PMSignalShmemInit(void); extern void SendPostmasterSignal(PMSignalReason reason); extern bool CheckPostmasterSignal(PMSignalReason reason); extern int AssignPostmasterChildSlot(void); extern bool ReleasePostmasterChildSlot(int slot); extern bool IsPostmasterChildWalSender(int slot); extern void MarkPostmasterChildActive(void); extern void MarkPostmasterChildInactive(void); extern void MarkPostmasterChildWalSender(void); extern bool PostmasterIsAliveInternal(void); extern void PostmasterDeathSignalInit(void); /* * Do we have a way to ask for a signal on parent death? * * If we do, pmsignal.c will set up a signal handler, that sets a flag when * the parent dies. Checking the flag first makes PostmasterIsAlive() a lot * cheaper in usual case that the postmaster is alive. */ #if (defined(HAVE_SYS_PRCTL_H) && defined(PR_SET_PDEATHSIG)) || \ (defined(HAVE_SYS_PROCCTL_H) && defined(PROC_PDEATHSIG_CTL)) #define USE_POSTMASTER_DEATH_SIGNAL #endif #ifdef USE_POSTMASTER_DEATH_SIGNAL extern volatile sig_atomic_t postmaster_possibly_dead; static inline bool PostmasterIsAlive(void) { if (likely(!postmaster_possibly_dead)) return true; return PostmasterIsAliveInternal(); } #else #define PostmasterIsAlive() PostmasterIsAliveInternal() #endif #endif /* PMSIGNAL_H */ libpg_query-13-2.1.0/src/postgres/include/storage/predicate.h000066400000000000000000000061701413137616400241240ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * predicate.h * POSTGRES public predicate locking definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/predicate.h * *------------------------------------------------------------------------- */ #ifndef PREDICATE_H #define PREDICATE_H #include "storage/lock.h" #include "utils/relcache.h" #include "utils/snapshot.h" /* * GUC variables */ extern int max_predicate_locks_per_xact; extern int max_predicate_locks_per_relation; extern int max_predicate_locks_per_page; /* Number of SLRU buffers to use for Serial SLRU */ #define NUM_SERIAL_BUFFERS 16 /* * A handle used for sharing SERIALIZABLEXACT objects between the participants * in a parallel query. */ typedef void *SerializableXactHandle; /* * function prototypes */ /* housekeeping for shared memory predicate lock structures */ extern void InitPredicateLocks(void); extern Size PredicateLockShmemSize(void); extern void CheckPointPredicate(void); /* predicate lock reporting */ extern bool PageIsPredicateLocked(Relation relation, BlockNumber blkno); /* predicate lock maintenance */ extern Snapshot GetSerializableTransactionSnapshot(Snapshot snapshot); extern void SetSerializableTransactionSnapshot(Snapshot snapshot, VirtualTransactionId *sourcevxid, int sourcepid); extern void RegisterPredicateLockingXid(TransactionId xid); extern void PredicateLockRelation(Relation relation, Snapshot snapshot); extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot); extern void PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot, TransactionId insert_xid); extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno); extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno); extern void TransferPredicateLocksToHeapRelation(Relation relation); extern void ReleasePredicateLocks(bool isCommit, bool isReadOnlySafe); /* conflict detection (may also trigger rollback) */ extern bool CheckForSerializableConflictOutNeeded(Relation relation, Snapshot snapshot); extern void CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot snapshot); extern void CheckForSerializableConflictIn(Relation relation, ItemPointer tid, BlockNumber blkno); extern void CheckTableForSerializableConflictIn(Relation relation); /* final rollback checking */ extern void PreCommit_CheckForSerializationFailure(void); /* two-phase commit support */ extern void AtPrepare_PredicateLocks(void); extern void PostPrepare_PredicateLocks(TransactionId xid); extern void PredicateLockTwoPhaseFinish(TransactionId xid, bool isCommit); extern void predicatelock_twophase_recover(TransactionId xid, uint16 info, void *recdata, uint32 len); /* parallel query support */ extern SerializableXactHandle ShareSerializableXact(void); extern void AttachSerializableXact(SerializableXactHandle handle); #endif /* PREDICATE_H */ libpg_query-13-2.1.0/src/postgres/include/storage/proc.h000066400000000000000000000304641413137616400231320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * proc.h * per-process shared memory data structures * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/proc.h * *------------------------------------------------------------------------- */ #ifndef _PROC_H_ #define _PROC_H_ #include "access/clog.h" #include "access/xlogdefs.h" #include "lib/ilist.h" #include "storage/latch.h" #include "storage/lock.h" #include "storage/pg_sema.h" #include "storage/proclist_types.h" /* * Each backend advertises up to PGPROC_MAX_CACHED_SUBXIDS TransactionIds * for non-aborted subtransactions of its current top transaction. These * have to be treated as running XIDs by other backends. * * We also keep track of whether the cache overflowed (ie, the transaction has * generated at least one subtransaction that didn't fit in the cache). * If none of the caches have overflowed, we can assume that an XID that's not * listed anywhere in the PGPROC array is not a running transaction. Else we * have to look at pg_subtrans. */ #define PGPROC_MAX_CACHED_SUBXIDS 64 /* XXX guessed-at value */ struct XidCache { TransactionId xids[PGPROC_MAX_CACHED_SUBXIDS]; }; /* * Flags for PGXACT->vacuumFlags * * Note: If you modify these flags, you need to modify PROCARRAY_XXX flags * in src/include/storage/procarray.h. * * PROC_RESERVED may later be assigned for use in vacuumFlags, but its value is * used for PROCARRAY_SLOTS_XMIN in procarray.h, so GetOldestXmin won't be able * to match and ignore processes with this flag set. */ #define PROC_IS_AUTOVACUUM 0x01 /* is it an autovac worker? */ #define PROC_IN_VACUUM 0x02 /* currently running lazy vacuum */ #define PROC_IN_ANALYZE 0x04 /* currently running analyze */ #define PROC_VACUUM_FOR_WRAPAROUND 0x08 /* set by autovac only */ #define PROC_IN_LOGICAL_DECODING 0x10 /* currently doing logical * decoding outside xact */ #define PROC_RESERVED 0x20 /* reserved for procarray */ /* flags reset at EOXact */ #define PROC_VACUUM_STATE_MASK \ (PROC_IN_VACUUM | PROC_IN_ANALYZE | PROC_VACUUM_FOR_WRAPAROUND) /* * We allow a small number of "weak" relation locks (AccessShareLock, * RowShareLock, RowExclusiveLock) to be recorded in the PGPROC structure * rather than the main lock table. This eases contention on the lock * manager LWLocks. See storage/lmgr/README for additional details. */ #define FP_LOCK_SLOTS_PER_BACKEND 16 /* * An invalid pgprocno. Must be larger than the maximum number of PGPROC * structures we could possibly have. See comments for MAX_BACKENDS. */ #define INVALID_PGPROCNO PG_INT32_MAX /* * Each backend has a PGPROC struct in shared memory. There is also a list of * currently-unused PGPROC structs that will be reallocated to new backends. * * links: list link for any list the PGPROC is in. When waiting for a lock, * the PGPROC is linked into that lock's waitProcs queue. A recycled PGPROC * is linked into ProcGlobal's freeProcs list. * * Note: twophase.c also sets up a dummy PGPROC struct for each currently * prepared transaction. These PGPROCs appear in the ProcArray data structure * so that the prepared transactions appear to be still running and are * correctly shown as holding locks. A prepared transaction PGPROC can be * distinguished from a real one at need by the fact that it has pid == 0. * The semaphore and lock-activity fields in a prepared-xact PGPROC are unused, * but its myProcLocks[] lists are valid. */ struct PGPROC { /* proc->links MUST BE FIRST IN STRUCT (see ProcSleep,ProcWakeup,etc) */ SHM_QUEUE links; /* list link if process is in a list */ PGPROC **procgloballist; /* procglobal list that owns this PGPROC */ PGSemaphore sem; /* ONE semaphore to sleep on */ int waitStatus; /* STATUS_WAITING, STATUS_OK or STATUS_ERROR */ Latch procLatch; /* generic latch for process */ LocalTransactionId lxid; /* local id of top-level transaction currently * being executed by this proc, if running; * else InvalidLocalTransactionId */ int pid; /* Backend's process ID; 0 if prepared xact */ int pgprocno; /* These fields are zero while a backend is still starting up: */ BackendId backendId; /* This backend's backend ID (if assigned) */ Oid databaseId; /* OID of database this backend is using */ Oid roleId; /* OID of role using this backend */ Oid tempNamespaceId; /* OID of temp schema this backend is * using */ bool isBackgroundWorker; /* true if background worker. */ /* * While in hot standby mode, shows that a conflict signal has been sent * for the current transaction. Set/cleared while holding ProcArrayLock, * though not required. Accessed without lock, if needed. */ bool recoveryConflictPending; /* Info about LWLock the process is currently waiting for, if any. */ bool lwWaiting; /* true if waiting for an LW lock */ uint8 lwWaitMode; /* lwlock mode being waited for */ proclist_node lwWaitLink; /* position in LW lock wait list */ /* Support for condition variables. */ proclist_node cvWaitLink; /* position in CV wait list */ /* Info about lock the process is currently waiting for, if any. */ /* waitLock and waitProcLock are NULL if not currently waiting. */ LOCK *waitLock; /* Lock object we're sleeping on ... */ PROCLOCK *waitProcLock; /* Per-holder info for awaited lock */ LOCKMODE waitLockMode; /* type of lock we're waiting for */ LOCKMASK heldLocks; /* bitmask for lock types already held on this * lock object by this backend */ bool delayChkpt; /* true if this proc delays checkpoint start */ /* * Info to allow us to wait for synchronous replication, if needed. * waitLSN is InvalidXLogRecPtr if not waiting; set only by user backend. * syncRepState must not be touched except by owning process or WALSender. * syncRepLinks used only while holding SyncRepLock. */ XLogRecPtr waitLSN; /* waiting for this LSN or higher */ int syncRepState; /* wait state for sync rep */ SHM_QUEUE syncRepLinks; /* list link if process is in syncrep queue */ /* * All PROCLOCK objects for locks held or awaited by this backend are * linked into one of these lists, according to the partition number of * their lock. */ SHM_QUEUE myProcLocks[NUM_LOCK_PARTITIONS]; struct XidCache subxids; /* cache for subtransaction XIDs */ /* Support for group XID clearing. */ /* true, if member of ProcArray group waiting for XID clear */ bool procArrayGroupMember; /* next ProcArray group member waiting for XID clear */ pg_atomic_uint32 procArrayGroupNext; /* * latest transaction id among the transaction's main XID and * subtransactions */ TransactionId procArrayGroupMemberXid; uint32 wait_event_info; /* proc's wait information */ /* Support for group transaction status update. */ bool clogGroupMember; /* true, if member of clog group */ pg_atomic_uint32 clogGroupNext; /* next clog group member */ TransactionId clogGroupMemberXid; /* transaction id of clog group member */ XidStatus clogGroupMemberXidStatus; /* transaction status of clog * group member */ int clogGroupMemberPage; /* clog page corresponding to * transaction id of clog group member */ XLogRecPtr clogGroupMemberLsn; /* WAL location of commit record for clog * group member */ /* Lock manager data, recording fast-path locks taken by this backend. */ LWLock fpInfoLock; /* protects per-backend fast-path state */ uint64 fpLockBits; /* lock modes held for each fast-path slot */ Oid fpRelId[FP_LOCK_SLOTS_PER_BACKEND]; /* slots for rel oids */ bool fpVXIDLock; /* are we holding a fast-path VXID lock? */ LocalTransactionId fpLocalTransactionId; /* lxid for fast-path VXID * lock */ /* * Support for lock groups. Use LockHashPartitionLockByProc on the group * leader to get the LWLock protecting these fields. */ PGPROC *lockGroupLeader; /* lock group leader, if I'm a member */ dlist_head lockGroupMembers; /* list of members, if I'm a leader */ dlist_node lockGroupLink; /* my member link, if I'm a member */ }; /* NOTE: "typedef struct PGPROC PGPROC" appears in storage/lock.h. */ extern PGDLLIMPORT PGPROC *MyProc; extern PGDLLIMPORT struct PGXACT *MyPgXact; /* * Prior to PostgreSQL 9.2, the fields below were stored as part of the * PGPROC. However, benchmarking revealed that packing these particular * members into a separate array as tightly as possible sped up GetSnapshotData * considerably on systems with many CPU cores, by reducing the number of * cache lines needing to be fetched. Thus, think very carefully before adding * anything else here. */ typedef struct PGXACT { TransactionId xid; /* id of top-level transaction currently being * executed by this proc, if running and XID * is assigned; else InvalidTransactionId */ TransactionId xmin; /* minimal running XID as it was when we were * starting our xact, excluding LAZY VACUUM: * vacuum must not remove tuples deleted by * xid >= xmin ! */ uint8 vacuumFlags; /* vacuum-related flags, see above */ bool overflowed; uint8 nxids; } PGXACT; /* * There is one ProcGlobal struct for the whole database cluster. */ typedef struct PROC_HDR { /* Array of PGPROC structures (not including dummies for prepared txns) */ PGPROC *allProcs; /* Array of PGXACT structures (not including dummies for prepared txns) */ PGXACT *allPgXact; /* Length of allProcs array */ uint32 allProcCount; /* Head of list of free PGPROC structures */ PGPROC *freeProcs; /* Head of list of autovacuum's free PGPROC structures */ PGPROC *autovacFreeProcs; /* Head of list of bgworker free PGPROC structures */ PGPROC *bgworkerFreeProcs; /* Head of list of walsender free PGPROC structures */ PGPROC *walsenderFreeProcs; /* First pgproc waiting for group XID clear */ pg_atomic_uint32 procArrayGroupFirst; /* First pgproc waiting for group transaction status update */ pg_atomic_uint32 clogGroupFirst; /* WALWriter process's latch */ Latch *walwriterLatch; /* Checkpointer process's latch */ Latch *checkpointerLatch; /* Current shared estimate of appropriate spins_per_delay value */ int spins_per_delay; /* The proc of the Startup process, since not in ProcArray */ PGPROC *startupProc; int startupProcPid; /* Buffer id of the buffer that Startup process waits for pin on, or -1 */ int startupBufferPinWaitBufId; } PROC_HDR; extern PGDLLIMPORT PROC_HDR *ProcGlobal; extern PGPROC *PreparedXactProcs; /* Accessor for PGPROC given a pgprocno. */ #define GetPGProcByNumber(n) (&ProcGlobal->allProcs[(n)]) /* * We set aside some extra PGPROC structures for auxiliary processes, * ie things that aren't full-fledged backends but need shmem access. * * Background writer, checkpointer and WAL writer run during normal operation. * Startup process and WAL receiver also consume 2 slots, but WAL writer is * launched only after startup has exited, so we only need 4 slots. */ #define NUM_AUXILIARY_PROCS 4 /* configurable options */ extern PGDLLIMPORT int DeadlockTimeout; extern PGDLLIMPORT int StatementTimeout; extern PGDLLIMPORT int LockTimeout; extern PGDLLIMPORT int IdleInTransactionSessionTimeout; extern bool log_lock_waits; /* * Function Prototypes */ extern int ProcGlobalSemas(void); extern Size ProcGlobalShmemSize(void); extern void InitProcGlobal(void); extern void InitProcess(void); extern void InitProcessPhase2(void); extern void InitAuxiliaryProcess(void); extern void PublishStartupProcessInformation(void); extern void SetStartupBufferPinWaitBufId(int bufid); extern int GetStartupBufferPinWaitBufId(void); extern bool HaveNFreeProcs(int n); extern void ProcReleaseLocks(bool isCommit); extern void ProcQueueInit(PROC_QUEUE *queue); extern int ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable); extern PGPROC *ProcWakeup(PGPROC *proc, int waitStatus); extern void ProcLockWakeup(LockMethod lockMethodTable, LOCK *lock); extern void CheckDeadLockAlert(void); extern bool IsWaitingForLock(void); extern void LockErrorCleanup(void); extern void ProcWaitForSignal(uint32 wait_event_info); extern void ProcSendSignal(int pid); extern PGPROC *AuxiliaryPidGetProc(int pid); extern void BecomeLockGroupLeader(void); extern bool BecomeLockGroupMember(PGPROC *leader, int pid); #endif /* _PROC_H_ */ libpg_query-13-2.1.0/src/postgres/include/storage/proclist_types.h000066400000000000000000000030701413137616400252430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * proclist_types.h * doubly-linked lists of pgprocnos * * See proclist.h for functions that operate on these types. * * Portions Copyright (c) 2016-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/include/storage/proclist_types.h *------------------------------------------------------------------------- */ #ifndef PROCLIST_TYPES_H #define PROCLIST_TYPES_H /* * A node in a doubly-linked list of processes. The link fields contain * the 0-based PGPROC indexes of the next and previous process, or * INVALID_PGPROCNO in the next-link of the last node and the prev-link * of the first node. A node that is currently not in any list * should have next == prev == 0; this is not a possible state for a node * that is in a list, because we disallow circularity. */ typedef struct proclist_node { int next; /* pgprocno of the next PGPROC */ int prev; /* pgprocno of the prev PGPROC */ } proclist_node; /* * Header of a doubly-linked list of PGPROCs, identified by pgprocno. * An empty list is represented by head == tail == INVALID_PGPROCNO. */ typedef struct proclist_head { int head; /* pgprocno of the head PGPROC */ int tail; /* pgprocno of the tail PGPROC */ } proclist_head; /* * List iterator allowing some modifications while iterating. */ typedef struct proclist_mutable_iter { int cur; /* pgprocno of the current PGPROC */ int next; /* pgprocno of the next PGPROC */ } proclist_mutable_iter; #endif /* PROCLIST_TYPES_H */ libpg_query-13-2.1.0/src/postgres/include/storage/procsignal.h000066400000000000000000000046311413137616400243250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * procsignal.h * Routines for interprocess signaling * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/procsignal.h * *------------------------------------------------------------------------- */ #ifndef PROCSIGNAL_H #define PROCSIGNAL_H #include "storage/backendid.h" /* * Reasons for signaling a Postgres child process (a backend or an auxiliary * process, like checkpointer). We can cope with concurrent signals for different * reasons. However, if the same reason is signaled multiple times in quick * succession, the process is likely to observe only one notification of it. * This is okay for the present uses. * * Also, because of race conditions, it's important that all the signals be * defined so that no harm is done if a process mistakenly receives one. */ typedef enum { PROCSIG_CATCHUP_INTERRUPT, /* sinval catchup interrupt */ PROCSIG_NOTIFY_INTERRUPT, /* listen/notify interrupt */ PROCSIG_PARALLEL_MESSAGE, /* message from cooperating parallel backend */ PROCSIG_WALSND_INIT_STOPPING, /* ask walsenders to prepare for shutdown */ PROCSIG_BARRIER, /* global barrier interrupt */ /* Recovery conflict reasons */ PROCSIG_RECOVERY_CONFLICT_DATABASE, PROCSIG_RECOVERY_CONFLICT_TABLESPACE, PROCSIG_RECOVERY_CONFLICT_LOCK, PROCSIG_RECOVERY_CONFLICT_SNAPSHOT, PROCSIG_RECOVERY_CONFLICT_BUFFERPIN, PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK, NUM_PROCSIGNALS /* Must be last! */ } ProcSignalReason; typedef enum { /* * XXX. PROCSIGNAL_BARRIER_PLACEHOLDER should be replaced when the first * real user of the ProcSignalBarrier mechanism is added. It's just here * for now because we can't have an empty enum. */ PROCSIGNAL_BARRIER_PLACEHOLDER = 0 } ProcSignalBarrierType; /* * prototypes for functions in procsignal.c */ extern Size ProcSignalShmemSize(void); extern void ProcSignalShmemInit(void); extern void ProcSignalInit(int pss_idx); extern int SendProcSignal(pid_t pid, ProcSignalReason reason, BackendId backendId); extern uint64 EmitProcSignalBarrier(ProcSignalBarrierType type); extern void WaitForProcSignalBarrier(uint64 generation); extern void ProcessProcSignalBarrier(void); extern void procsignal_sigusr1_handler(SIGNAL_ARGS); #endif /* PROCSIGNAL_H */ libpg_query-13-2.1.0/src/postgres/include/storage/relfilenode.h000066400000000000000000000074771413137616400244670ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * relfilenode.h * Physical access information for relations. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/relfilenode.h * *------------------------------------------------------------------------- */ #ifndef RELFILENODE_H #define RELFILENODE_H #include "common/relpath.h" #include "storage/backendid.h" /* * RelFileNode must provide all that we need to know to physically access * a relation, with the exception of the backend ID, which can be provided * separately. Note, however, that a "physical" relation is comprised of * multiple files on the filesystem, as each fork is stored as a separate * file, and each fork can be divided into multiple segments. See md.c. * * spcNode identifies the tablespace of the relation. It corresponds to * pg_tablespace.oid. * * dbNode identifies the database of the relation. It is zero for * "shared" relations (those common to all databases of a cluster). * Nonzero dbNode values correspond to pg_database.oid. * * relNode identifies the specific relation. relNode corresponds to * pg_class.relfilenode (NOT pg_class.oid, because we need to be able * to assign new physical files to relations in some situations). * Notice that relNode is only unique within a database in a particular * tablespace. * * Note: spcNode must be GLOBALTABLESPACE_OID if and only if dbNode is * zero. We support shared relations only in the "global" tablespace. * * Note: in pg_class we allow reltablespace == 0 to denote that the * relation is stored in its database's "default" tablespace (as * identified by pg_database.dattablespace). However this shorthand * is NOT allowed in RelFileNode structs --- the real tablespace ID * must be supplied when setting spcNode. * * Note: in pg_class, relfilenode can be zero to denote that the relation * is a "mapped" relation, whose current true filenode number is available * from relmapper.c. Again, this case is NOT allowed in RelFileNodes. * * Note: various places use RelFileNode in hashtable keys. Therefore, * there *must not* be any unused padding bytes in this struct. That * should be safe as long as all the fields are of type Oid. */ typedef struct RelFileNode { Oid spcNode; /* tablespace */ Oid dbNode; /* database */ Oid relNode; /* relation */ } RelFileNode; /* * Augmenting a relfilenode with the backend ID provides all the information * we need to locate the physical storage. The backend ID is InvalidBackendId * for regular relations (those accessible to more than one backend), or the * owning backend's ID for backend-local relations. Backend-local relations * are always transient and removed in case of a database crash; they are * never WAL-logged or fsync'd. */ typedef struct RelFileNodeBackend { RelFileNode node; BackendId backend; } RelFileNodeBackend; #define RelFileNodeBackendIsTemp(rnode) \ ((rnode).backend != InvalidBackendId) /* * Note: RelFileNodeEquals and RelFileNodeBackendEquals compare relNode first * since that is most likely to be different in two unequal RelFileNodes. It * is probably redundant to compare spcNode if the other fields are found equal, * but do it anyway to be sure. Likewise for checking the backend ID in * RelFileNodeBackendEquals. */ #define RelFileNodeEquals(node1, node2) \ ((node1).relNode == (node2).relNode && \ (node1).dbNode == (node2).dbNode && \ (node1).spcNode == (node2).spcNode) #define RelFileNodeBackendEquals(node1, node2) \ ((node1).node.relNode == (node2).node.relNode && \ (node1).node.dbNode == (node2).node.dbNode && \ (node1).backend == (node2).backend && \ (node1).node.spcNode == (node2).node.spcNode) #endif /* RELFILENODE_H */ libpg_query-13-2.1.0/src/postgres/include/storage/s_lock.h000066400000000000000000000722341413137616400234420ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * s_lock.h * Hardware-dependent implementation of spinlocks. * * NOTE: none of the macros in this file are intended to be called directly. * Call them through the hardware-independent macros in spin.h. * * The following hardware-dependent macros must be provided for each * supported platform: * * void S_INIT_LOCK(slock_t *lock) * Initialize a spinlock (to the unlocked state). * * int S_LOCK(slock_t *lock) * Acquire a spinlock, waiting if necessary. * Time out and abort() if unable to acquire the lock in a * "reasonable" amount of time --- typically ~ 1 minute. * Should return number of "delays"; see s_lock.c * * void S_UNLOCK(slock_t *lock) * Unlock a previously acquired lock. * * bool S_LOCK_FREE(slock_t *lock) * Tests if the lock is free. Returns true if free, false if locked. * This does *not* change the state of the lock. * * void SPIN_DELAY(void) * Delay operation to occur inside spinlock wait loop. * * Note to implementors: there are default implementations for all these * macros at the bottom of the file. Check if your platform can use * these or needs to override them. * * Usually, S_LOCK() is implemented in terms of even lower-level macros * TAS() and TAS_SPIN(): * * int TAS(slock_t *lock) * Atomic test-and-set instruction. Attempt to acquire the lock, * but do *not* wait. Returns 0 if successful, nonzero if unable * to acquire the lock. * * int TAS_SPIN(slock_t *lock) * Like TAS(), but this version is used when waiting for a lock * previously found to be contended. By default, this is the * same as TAS(), but on some architectures it's better to poll a * contended lock using an unlocked instruction and retry the * atomic test-and-set only when it appears free. * * TAS() and TAS_SPIN() are NOT part of the API, and should never be called * directly. * * CAUTION: on some platforms TAS() and/or TAS_SPIN() may sometimes report * failure to acquire a lock even when the lock is not locked. For example, * on Alpha TAS() will "fail" if interrupted. Therefore a retry loop must * always be used, even if you are certain the lock is free. * * It is the responsibility of these macros to make sure that the compiler * does not re-order accesses to shared memory to precede the actual lock * acquisition, or follow the lock release. Prior to PostgreSQL 9.5, this * was the caller's responsibility, which meant that callers had to use * volatile-qualified pointers to refer to both the spinlock itself and the * shared data being accessed within the spinlocked critical section. This * was notationally awkward, easy to forget (and thus error-prone), and * prevented some useful compiler optimizations. For these reasons, we * now require that the macros themselves prevent compiler re-ordering, * so that the caller doesn't need to take special precautions. * * On platforms with weak memory ordering, the TAS(), TAS_SPIN(), and * S_UNLOCK() macros must further include hardware-level memory fence * instructions to prevent similar re-ordering at the hardware level. * TAS() and TAS_SPIN() must guarantee that loads and stores issued after * the macro are not executed until the lock has been obtained. Conversely, * S_UNLOCK() must guarantee that loads and stores issued before the macro * have been executed before the lock is released. * * On most supported platforms, TAS() uses a tas() function written * in assembly language to execute a hardware atomic-test-and-set * instruction. Equivalent OS-supplied mutex routines could be used too. * * If no system-specific TAS() is available (ie, HAVE_SPINLOCKS is not * defined), then we fall back on an emulation that uses SysV semaphores * (see spin.c). This emulation will be MUCH MUCH slower than a proper TAS() * implementation, because of the cost of a kernel call per lock or unlock. * An old report is that Postgres spends around 40% of its time in semop(2) * when using the SysV semaphore code. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/s_lock.h * *------------------------------------------------------------------------- */ #ifndef S_LOCK_H #define S_LOCK_H #ifdef FRONTEND #error "s_lock.h may not be included from frontend code" #endif #ifdef HAVE_SPINLOCKS /* skip spinlocks if requested */ #if defined(__GNUC__) || defined(__INTEL_COMPILER) /************************************************************************* * All the gcc inlines * Gcc consistently defines the CPU as __cpu__. * Other compilers use __cpu or __cpu__ so we test for both in those cases. */ /*---------- * Standard gcc asm format (assuming "volatile slock_t *lock"): __asm__ __volatile__( " instruction \n" " instruction \n" " instruction \n" : "=r"(_res), "+m"(*lock) // return register, in/out lock value : "r"(lock) // lock pointer, in input register : "memory", "cc"); // show clobbered registers here * The output-operands list (after first colon) should always include * "+m"(*lock), whether or not the asm code actually refers to this * operand directly. This ensures that gcc believes the value in the * lock variable is used and set by the asm code. Also, the clobbers * list (after third colon) should always include "memory"; this prevents * gcc from thinking it can cache the values of shared-memory fields * across the asm code. Add "cc" if your asm code changes the condition * code register, and also list any temp registers the code uses. *---------- */ #ifdef __i386__ /* 32-bit i386 */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register slock_t _res = 1; /* * Use a non-locking test before asserting the bus lock. Note that the * extra test appears to be a small loss on some x86 platforms and a small * win on others; it's by no means clear that we should keep it. * * When this was last tested, we didn't have separate TAS() and TAS_SPIN() * macros. Nowadays it probably would be better to do a non-locking test * in TAS_SPIN() but not in TAS(), like on x86_64, but no-one's done the * testing to verify that. Without some empirical evidence, better to * leave it alone. */ __asm__ __volatile__( " cmpb $0,%1 \n" " jne 1f \n" " lock \n" " xchgb %0,%1 \n" "1: \n" : "+q"(_res), "+m"(*lock) : /* no inputs */ : "memory", "cc"); return (int) _res; } #define SPIN_DELAY() spin_delay() static __inline__ void spin_delay(void) { /* * This sequence is equivalent to the PAUSE instruction ("rep" is * ignored by old IA32 processors if the following instruction is * not a string operation); the IA-32 Architecture Software * Developer's Manual, Vol. 3, Section 7.7.2 describes why using * PAUSE in the inner loop of a spin lock is necessary for good * performance: * * The PAUSE instruction improves the performance of IA-32 * processors supporting Hyper-Threading Technology when * executing spin-wait loops and other routines where one * thread is accessing a shared lock or semaphore in a tight * polling loop. When executing a spin-wait loop, the * processor can suffer a severe performance penalty when * exiting the loop because it detects a possible memory order * violation and flushes the core processor's pipeline. The * PAUSE instruction provides a hint to the processor that the * code sequence is a spin-wait loop. The processor uses this * hint to avoid the memory order violation and prevent the * pipeline flush. In addition, the PAUSE instruction * de-pipelines the spin-wait loop to prevent it from * consuming execution resources excessively. */ __asm__ __volatile__( " rep; nop \n"); } #endif /* __i386__ */ #ifdef __x86_64__ /* AMD Opteron, Intel EM64T */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) /* * On Intel EM64T, it's a win to use a non-locking test before the xchg proper, * but only when spinning. * * See also Implementing Scalable Atomic Locks for Multi-Core Intel(tm) EM64T * and IA32, by Michael Chynoweth and Mary R. Lee. As of this writing, it is * available at: * http://software.intel.com/en-us/articles/implementing-scalable-atomic-locks-for-multi-core-intel-em64t-and-ia32-architectures */ #define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock)) static __inline__ int tas(volatile slock_t *lock) { register slock_t _res = 1; __asm__ __volatile__( " lock \n" " xchgb %0,%1 \n" : "+q"(_res), "+m"(*lock) : /* no inputs */ : "memory", "cc"); return (int) _res; } #define SPIN_DELAY() spin_delay() static __inline__ void spin_delay(void) { /* * Adding a PAUSE in the spin delay loop is demonstrably a no-op on * Opteron, but it may be of some use on EM64T, so we keep it. */ __asm__ __volatile__( " rep; nop \n"); } #endif /* __x86_64__ */ #if defined(__ia64__) || defined(__ia64) /* * Intel Itanium, gcc or Intel's compiler. * * Itanium has weak memory ordering, but we rely on the compiler to enforce * strict ordering of accesses to volatile data. In particular, while the * xchg instruction implicitly acts as a memory barrier with 'acquire' * semantics, we do not have an explicit memory fence instruction in the * S_UNLOCK macro. We use a regular assignment to clear the spinlock, and * trust that the compiler marks the generated store instruction with the * ".rel" opcode. * * Testing shows that assumption to hold on gcc, although I could not find * any explicit statement on that in the gcc manual. In Intel's compiler, * the -m[no-]serialize-volatile option controls that, and testing shows that * it is enabled by default. * * While icc accepts gcc asm blocks on x86[_64], this is not true on ia64 * (at least not in icc versions before 12.x). So we have to carry a separate * compiler-intrinsic-based implementation for it. */ #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) /* On IA64, it's a win to use a non-locking test before the xchg proper */ #define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock)) #ifndef __INTEL_COMPILER static __inline__ int tas(volatile slock_t *lock) { long int ret; __asm__ __volatile__( " xchg4 %0=%1,%2 \n" : "=r"(ret), "+m"(*lock) : "r"(1) : "memory"); return (int) ret; } #else /* __INTEL_COMPILER */ static __inline__ int tas(volatile slock_t *lock) { int ret; ret = _InterlockedExchange(lock,1); /* this is a xchg asm macro */ return ret; } /* icc can't use the regular gcc S_UNLOCK() macro either in this case */ #define S_UNLOCK(lock) \ do { __memory_barrier(); *(lock) = 0; } while (0) #endif /* __INTEL_COMPILER */ #endif /* __ia64__ || __ia64 */ /* * On ARM and ARM64, we use __sync_lock_test_and_set(int *, int) if available. * * We use the int-width variant of the builtin because it works on more chips * than other widths. */ #if defined(__arm__) || defined(__arm) || defined(__aarch64__) || defined(__aarch64) #ifdef HAVE_GCC__SYNC_INT32_TAS #define HAS_TEST_AND_SET #define TAS(lock) tas(lock) typedef int slock_t; static __inline__ int tas(volatile slock_t *lock) { return __sync_lock_test_and_set(lock, 1); } #define S_UNLOCK(lock) __sync_lock_release(lock) #endif /* HAVE_GCC__SYNC_INT32_TAS */ #endif /* __arm__ || __arm || __aarch64__ || __aarch64 */ /* S/390 and S/390x Linux (32- and 64-bit zSeries) */ #if defined(__s390__) || defined(__s390x__) #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { int _res = 0; __asm__ __volatile__( " cs %0,%3,0(%2) \n" : "+d"(_res), "+m"(*lock) : "a"(lock), "d"(1) : "memory", "cc"); return _res; } #endif /* __s390__ || __s390x__ */ #if defined(__sparc__) /* Sparc */ /* * Solaris has always run sparc processors in TSO (total store) mode, but * linux didn't use to and the *BSDs still don't. So, be careful about * acquire/release semantics. The CPU will treat superfluous membars as * NOPs, so it's just code space. */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register slock_t _res; /* * See comment in src/backend/port/tas/sunstudio_sparc.s for why this * uses "ldstub", and that file uses "cas". gcc currently generates * sparcv7-targeted binaries, so "cas" use isn't possible. */ __asm__ __volatile__( " ldstub [%2], %0 \n" : "=r"(_res), "+m"(*lock) : "r"(lock) : "memory"); #if defined(__sparcv7) || defined(__sparc_v7__) /* * No stbar or membar available, luckily no actually produced hardware * requires a barrier. */ #elif defined(__sparcv8) || defined(__sparc_v8__) /* stbar is available (and required for both PSO, RMO), membar isn't */ __asm__ __volatile__ ("stbar \n":::"memory"); #else /* * #LoadStore (RMO) | #LoadLoad (RMO) together are the appropriate acquire * barrier for sparcv8+ upwards. */ __asm__ __volatile__ ("membar #LoadStore | #LoadLoad \n":::"memory"); #endif return (int) _res; } #if defined(__sparcv7) || defined(__sparc_v7__) /* * No stbar or membar available, luckily no actually produced hardware * requires a barrier. We fall through to the default gcc definition of * S_UNLOCK in this case. */ #elif defined(__sparcv8) || defined(__sparc_v8__) /* stbar is available (and required for both PSO, RMO), membar isn't */ #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__ ("stbar \n":::"memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #else /* * #LoadStore (RMO) | #StoreStore (RMO, PSO) together are the appropriate * release barrier for sparcv8+ upwards. */ #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__ ("membar #LoadStore | #StoreStore \n":::"memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #endif #endif /* __sparc__ */ /* PowerPC */ #if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__) #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) /* On PPC, it's a win to use a non-locking test before the lwarx */ #define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock)) /* * The second operand of addi can hold a constant zero or a register number, * hence constraint "=&b" to avoid allocating r0. "b" stands for "address * base register"; most operands having this register-or-zero property are * address bases, e.g. the second operand of lwax. * * NOTE: per the Enhanced PowerPC Architecture manual, v1.0 dated 7-May-2002, * an isync is a sufficient synchronization barrier after a lwarx/stwcx loop. * On newer machines, we can use lwsync instead for better performance. * * Ordinarily, we'd code the branches here using GNU-style local symbols, that * is "1f" referencing "1:" and so on. But some people run gcc on AIX with * IBM's assembler as backend, and IBM's assembler doesn't do local symbols. * So hand-code the branch offsets; fortunately, all PPC instructions are * exactly 4 bytes each, so it's not too hard to count. */ static __inline__ int tas(volatile slock_t *lock) { slock_t _t; int _res; __asm__ __volatile__( #ifdef USE_PPC_LWARX_MUTEX_HINT " lwarx %0,0,%3,1 \n" #else " lwarx %0,0,%3 \n" #endif " cmpwi %0,0 \n" " bne $+16 \n" /* branch to li %1,1 */ " addi %0,%0,1 \n" " stwcx. %0,0,%3 \n" " beq $+12 \n" /* branch to lwsync/isync */ " li %1,1 \n" " b $+12 \n" /* branch to end of asm sequence */ #ifdef USE_PPC_LWSYNC " lwsync \n" #else " isync \n" #endif " li %1,0 \n" : "=&b"(_t), "=r"(_res), "+m"(*lock) : "r"(lock) : "memory", "cc"); return _res; } /* * PowerPC S_UNLOCK is almost standard but requires a "sync" instruction. * On newer machines, we can use lwsync instead for better performance. */ #ifdef USE_PPC_LWSYNC #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__ (" lwsync \n" ::: "memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #else #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__ (" sync \n" ::: "memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #endif /* USE_PPC_LWSYNC */ #endif /* powerpc */ /* Linux Motorola 68k */ #if (defined(__mc68000__) || defined(__m68k__)) && defined(__linux__) #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register int rv; __asm__ __volatile__( " clrl %0 \n" " tas %1 \n" " sne %0 \n" : "=d"(rv), "+m"(*lock) : /* no inputs */ : "memory", "cc"); return rv; } #endif /* (__mc68000__ || __m68k__) && __linux__ */ /* Motorola 88k */ #if defined(__m88k__) #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register slock_t _res = 1; __asm__ __volatile__( " xmem %0, %2, %%r0 \n" : "+r"(_res), "+m"(*lock) : "r"(lock) : "memory"); return (int) _res; } #endif /* __m88k__ */ /* * VAXen -- even multiprocessor ones * (thanks to Tom Ivar Helbekkmo) */ #if defined(__vax__) #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register int _res; __asm__ __volatile__( " movl $1, %0 \n" " bbssi $0, (%2), 1f \n" " clrl %0 \n" "1: \n" : "=&r"(_res), "+m"(*lock) : "r"(lock) : "memory"); return _res; } #endif /* __vax__ */ #if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */ #define HAS_TEST_AND_SET typedef unsigned int slock_t; #define TAS(lock) tas(lock) /* * Original MIPS-I processors lacked the LL/SC instructions, but if we are * so unfortunate as to be running on one of those, we expect that the kernel * will handle the illegal-instruction traps and emulate them for us. On * anything newer (and really, MIPS-I is extinct) LL/SC is the only sane * choice because any other synchronization method must involve a kernel * call. Unfortunately, many toolchains still default to MIPS-I as the * codegen target; if the symbol __mips shows that that's the case, we * have to force the assembler to accept LL/SC. * * R10000 and up processors require a separate SYNC, which has the same * issues as LL/SC. */ #if __mips < 2 #define MIPS_SET_MIPS2 " .set mips2 \n" #else #define MIPS_SET_MIPS2 #endif static __inline__ int tas(volatile slock_t *lock) { register volatile slock_t *_l = lock; register int _res; register int _tmp; __asm__ __volatile__( " .set push \n" MIPS_SET_MIPS2 " .set noreorder \n" " .set nomacro \n" " ll %0, %2 \n" " or %1, %0, 1 \n" " sc %1, %2 \n" " xori %1, 1 \n" " or %0, %0, %1 \n" " sync \n" " .set pop " : "=&r" (_res), "=&r" (_tmp), "+R" (*_l) : /* no inputs */ : "memory"); return _res; } /* MIPS S_UNLOCK is almost standard but requires a "sync" instruction */ #define S_UNLOCK(lock) \ do \ { \ __asm__ __volatile__( \ " .set push \n" \ MIPS_SET_MIPS2 \ " .set noreorder \n" \ " .set nomacro \n" \ " sync \n" \ " .set pop " \ : /* no outputs */ \ : /* no inputs */ \ : "memory"); \ *((volatile slock_t *) (lock)) = 0; \ } while (0) #endif /* __mips__ && !__sgi */ #if defined(__m32r__) && defined(HAVE_SYS_TAS_H) /* Renesas' M32R */ #define HAS_TEST_AND_SET #include typedef int slock_t; #define TAS(lock) tas(lock) #endif /* __m32r__ */ #if defined(__sh__) /* Renesas' SuperH */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; #define TAS(lock) tas(lock) static __inline__ int tas(volatile slock_t *lock) { register int _res; /* * This asm is coded as if %0 could be any register, but actually SuperH * restricts the target of xor-immediate to be R0. That's handled by * the "z" constraint on _res. */ __asm__ __volatile__( " tas.b @%2 \n" " movt %0 \n" " xor #1,%0 \n" : "=z"(_res), "+m"(*lock) : "r"(lock) : "memory", "t"); return _res; } #endif /* __sh__ */ /* These live in s_lock.c, but only for gcc */ #if defined(__m68k__) && !defined(__linux__) /* non-Linux Motorola 68k */ #define HAS_TEST_AND_SET typedef unsigned char slock_t; #endif /* * Default implementation of S_UNLOCK() for gcc/icc. * * Note that this implementation is unsafe for any platform that can reorder * a memory access (either load or store) after a following store. That * happens not to be possible on x86 and most legacy architectures (some are * single-processor!), but many modern systems have weaker memory ordering. * Those that do must define their own version of S_UNLOCK() rather than * relying on this one. */ #if !defined(S_UNLOCK) #define S_UNLOCK(lock) \ do { __asm__ __volatile__("" : : : "memory"); *(lock) = 0; } while (0) #endif #endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */ /* * --------------------------------------------------------------------- * Platforms that use non-gcc inline assembly: * --------------------------------------------------------------------- */ #if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */ /* * HP's PA-RISC * * See src/backend/port/hpux/tas.c.template for details about LDCWX. Because * LDCWX requires a 16-byte-aligned address, we declare slock_t as a 16-byte * struct. The active word in the struct is whichever has the aligned address; * the other three words just sit at -1. * * When using gcc, we can inline the required assembly code. */ #define HAS_TEST_AND_SET typedef struct { int sema[4]; } slock_t; #define TAS_ACTIVE_WORD(lock) ((volatile int *) (((uintptr_t) (lock) + 15) & ~15)) #if defined(__GNUC__) static __inline__ int tas(volatile slock_t *lock) { volatile int *lockword = TAS_ACTIVE_WORD(lock); register int lockval; __asm__ __volatile__( " ldcwx 0(0,%2),%0 \n" : "=r"(lockval), "+m"(*lockword) : "r"(lockword) : "memory"); return (lockval == 0); } /* * The hppa implementation doesn't follow the rules of this files and provides * a gcc specific implementation outside of the above defined(__GNUC__). It * does so to avoid duplication between the HP compiler and gcc. So undefine * the generic fallback S_UNLOCK from above. */ #ifdef S_UNLOCK #undef S_UNLOCK #endif #define S_UNLOCK(lock) \ do { \ __asm__ __volatile__("" : : : "memory"); \ *TAS_ACTIVE_WORD(lock) = -1; \ } while (0) #endif /* __GNUC__ */ #define S_INIT_LOCK(lock) \ do { \ volatile slock_t *lock_ = (lock); \ lock_->sema[0] = -1; \ lock_->sema[1] = -1; \ lock_->sema[2] = -1; \ lock_->sema[3] = -1; \ } while (0) #define S_LOCK_FREE(lock) (*TAS_ACTIVE_WORD(lock) != 0) #endif /* __hppa || __hppa__ */ #if defined(__hpux) && defined(__ia64) && !defined(__GNUC__) /* * HP-UX on Itanium, non-gcc/icc compiler * * We assume that the compiler enforces strict ordering of loads/stores on * volatile data (see comments on the gcc-version earlier in this file). * Note that this assumption does *not* hold if you use the * +Ovolatile=__unordered option on the HP-UX compiler, so don't do that. * * See also Implementing Spinlocks on the Intel Itanium Architecture and * PA-RISC, by Tor Ekqvist and David Graves, for more information. As of * this writing, version 1.0 of the manual is available at: * http://h21007.www2.hp.com/portal/download/files/unprot/itanium/spinlocks.pdf */ #define HAS_TEST_AND_SET typedef unsigned int slock_t; #include #define TAS(lock) _Asm_xchg(_SZ_W, lock, 1, _LDHINT_NONE) /* On IA64, it's a win to use a non-locking test before the xchg proper */ #define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock)) #define S_UNLOCK(lock) \ do { _Asm_mf(); (*(lock)) = 0; } while (0) #endif /* HPUX on IA64, non gcc/icc */ #if defined(_AIX) /* AIX */ /* * AIX (POWER) */ #define HAS_TEST_AND_SET #include typedef int slock_t; #define TAS(lock) _check_lock((slock_t *) (lock), 0, 1) #define S_UNLOCK(lock) _clear_lock((slock_t *) (lock), 0) #endif /* _AIX */ /* These are in sunstudio_(sparc|x86).s */ #if defined(__SUNPRO_C) && (defined(__i386) || defined(__x86_64__) || defined(__sparc__) || defined(__sparc)) #define HAS_TEST_AND_SET #if defined(__i386) || defined(__x86_64__) || defined(__sparcv9) || defined(__sparcv8plus) typedef unsigned int slock_t; #else typedef unsigned char slock_t; #endif extern slock_t pg_atomic_cas(volatile slock_t *lock, slock_t with, slock_t cmp); #define TAS(a) (pg_atomic_cas((a), 1, 0) != 0) #endif #ifdef _MSC_VER typedef LONG slock_t; #define HAS_TEST_AND_SET #define TAS(lock) (InterlockedCompareExchange(lock, 1, 0)) #define SPIN_DELAY() spin_delay() /* If using Visual C++ on Win64, inline assembly is unavailable. * Use a _mm_pause intrinsic instead of rep nop. */ #if defined(_WIN64) static __forceinline void spin_delay(void) { _mm_pause(); } #else static __forceinline void spin_delay(void) { /* See comment for gcc code. Same code, MASM syntax */ __asm rep nop; } #endif #include #pragma intrinsic(_ReadWriteBarrier) #define S_UNLOCK(lock) \ do { _ReadWriteBarrier(); (*(lock)) = 0; } while (0) #endif #endif /* !defined(HAS_TEST_AND_SET) */ /* Blow up if we didn't have any way to do spinlocks */ #ifndef HAS_TEST_AND_SET #error PostgreSQL does not have native spinlock support on this platform. To continue the compilation, rerun configure using --disable-spinlocks. However, performance will be poor. Please report this to pgsql-bugs@lists.postgresql.org. #endif #else /* !HAVE_SPINLOCKS */ /* * Fake spinlock implementation using semaphores --- slow and prone * to fall foul of kernel limits on number of semaphores, so don't use this * unless you must! The subroutines appear in spin.c. */ typedef int slock_t; extern bool s_lock_free_sema(volatile slock_t *lock); extern void s_unlock_sema(volatile slock_t *lock); extern void s_init_lock_sema(volatile slock_t *lock, bool nested); extern int tas_sema(volatile slock_t *lock); #define S_LOCK_FREE(lock) s_lock_free_sema(lock) #define S_UNLOCK(lock) s_unlock_sema(lock) #define S_INIT_LOCK(lock) s_init_lock_sema(lock, false) #define TAS(lock) tas_sema(lock) #endif /* HAVE_SPINLOCKS */ /* * Default Definitions - override these above as needed. */ #if !defined(S_LOCK) #define S_LOCK(lock) \ (TAS(lock) ? s_lock((lock), __FILE__, __LINE__, PG_FUNCNAME_MACRO) : 0) #endif /* S_LOCK */ #if !defined(S_LOCK_FREE) #define S_LOCK_FREE(lock) (*(lock) == 0) #endif /* S_LOCK_FREE */ #if !defined(S_UNLOCK) /* * Our default implementation of S_UNLOCK is essentially *(lock) = 0. This * is unsafe if the platform can reorder a memory access (either load or * store) after a following store; platforms where this is possible must * define their own S_UNLOCK. But CPU reordering is not the only concern: * if we simply defined S_UNLOCK() as an inline macro, the compiler might * reorder instructions from inside the critical section to occur after the * lock release. Since the compiler probably can't know what the external * function s_unlock is doing, putting the same logic there should be adequate. * A sufficiently-smart globally optimizing compiler could break that * assumption, though, and the cost of a function call for every spinlock * release may hurt performance significantly, so we use this implementation * only for platforms where we don't know of a suitable intrinsic. For the * most part, those are relatively obscure platform/compiler combinations to * which the PostgreSQL project does not have access. */ #define USE_DEFAULT_S_UNLOCK extern void s_unlock(volatile slock_t *lock); #define S_UNLOCK(lock) s_unlock(lock) #endif /* S_UNLOCK */ #if !defined(S_INIT_LOCK) #define S_INIT_LOCK(lock) S_UNLOCK(lock) #endif /* S_INIT_LOCK */ #if !defined(SPIN_DELAY) #define SPIN_DELAY() ((void) 0) #endif /* SPIN_DELAY */ #if !defined(TAS) extern int tas(volatile slock_t *lock); /* in port/.../tas.s, or * s_lock.c */ #define TAS(lock) tas(lock) #endif /* TAS */ #if !defined(TAS_SPIN) #define TAS_SPIN(lock) TAS(lock) #endif /* TAS_SPIN */ extern slock_t dummy_spinlock; /* * Platform-independent out-of-line support routines */ extern int s_lock(volatile slock_t *lock, const char *file, int line, const char *func); /* Support for dynamic adjustment of spins_per_delay */ #define DEFAULT_SPINS_PER_DELAY 100 extern void set_spins_per_delay(int shared_spins_per_delay); extern int update_spins_per_delay(int shared_spins_per_delay); /* * Support for spin delay which is useful in various places where * spinlock-like procedures take place. */ typedef struct { int spins; int delays; int cur_delay; const char *file; int line; const char *func; } SpinDelayStatus; static inline void init_spin_delay(SpinDelayStatus *status, const char *file, int line, const char *func) { status->spins = 0; status->delays = 0; status->cur_delay = 0; status->file = file; status->line = line; status->func = func; } #define init_local_spin_delay(status) init_spin_delay(status, __FILE__, __LINE__, PG_FUNCNAME_MACRO) void perform_spin_delay(SpinDelayStatus *status); void finish_spin_delay(SpinDelayStatus *status); #endif /* S_LOCK_H */ libpg_query-13-2.1.0/src/postgres/include/storage/sharedfileset.h000066400000000000000000000030071413137616400250020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sharedfileset.h * Shared temporary file management. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/sharedfileset.h * *------------------------------------------------------------------------- */ #ifndef SHAREDFILESET_H #define SHAREDFILESET_H #include "storage/dsm.h" #include "storage/fd.h" #include "storage/spin.h" /* * A set of temporary files that can be shared by multiple backends. */ typedef struct SharedFileSet { pid_t creator_pid; /* PID of the creating process */ uint32 number; /* per-PID identifier */ slock_t mutex; /* mutex protecting the reference count */ int refcnt; /* number of attached backends */ int ntablespaces; /* number of tablespaces to use */ Oid tablespaces[8]; /* OIDs of tablespaces to use. Assumes that * it's rare that there more than temp * tablespaces. */ } SharedFileSet; extern void SharedFileSetInit(SharedFileSet *fileset, dsm_segment *seg); extern void SharedFileSetAttach(SharedFileSet *fileset, dsm_segment *seg); extern File SharedFileSetCreate(SharedFileSet *fileset, const char *name); extern File SharedFileSetOpen(SharedFileSet *fileset, const char *name); extern bool SharedFileSetDelete(SharedFileSet *fileset, const char *name, bool error_on_failure); extern void SharedFileSetDeleteAll(SharedFileSet *fileset); #endif libpg_query-13-2.1.0/src/postgres/include/storage/shm_mq.h000066400000000000000000000052241413137616400234470ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * shm_mq.h * single-reader, single-writer shared memory message queue * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/shm_mq.h * *------------------------------------------------------------------------- */ #ifndef SHM_MQ_H #define SHM_MQ_H #include "postmaster/bgworker.h" #include "storage/dsm.h" #include "storage/proc.h" /* The queue itself, in shared memory. */ struct shm_mq; typedef struct shm_mq shm_mq; /* Backend-private state. */ struct shm_mq_handle; typedef struct shm_mq_handle shm_mq_handle; /* Descriptors for a single write spanning multiple locations. */ typedef struct { const char *data; Size len; } shm_mq_iovec; /* Possible results of a send or receive operation. */ typedef enum { SHM_MQ_SUCCESS, /* Sent or received a message. */ SHM_MQ_WOULD_BLOCK, /* Not completed; retry later. */ SHM_MQ_DETACHED /* Other process has detached queue. */ } shm_mq_result; /* * Primitives to create a queue and set the sender and receiver. * * Both the sender and the receiver must be set before any messages are read * or written, but they need not be set by the same process. Each must be * set exactly once. */ extern shm_mq *shm_mq_create(void *address, Size size); extern void shm_mq_set_receiver(shm_mq *mq, PGPROC *); extern void shm_mq_set_sender(shm_mq *mq, PGPROC *); /* Accessor methods for sender and receiver. */ extern PGPROC *shm_mq_get_receiver(shm_mq *); extern PGPROC *shm_mq_get_sender(shm_mq *); /* Set up backend-local queue state. */ extern shm_mq_handle *shm_mq_attach(shm_mq *mq, dsm_segment *seg, BackgroundWorkerHandle *handle); /* Associate worker handle with shm_mq. */ extern void shm_mq_set_handle(shm_mq_handle *, BackgroundWorkerHandle *); /* Break connection, release handle resources. */ extern void shm_mq_detach(shm_mq_handle *mqh); /* Get the shm_mq from handle. */ extern shm_mq *shm_mq_get_queue(shm_mq_handle *mqh); /* Send or receive messages. */ extern shm_mq_result shm_mq_send(shm_mq_handle *mqh, Size nbytes, const void *data, bool nowait); extern shm_mq_result shm_mq_sendv(shm_mq_handle *mqh, shm_mq_iovec *iov, int iovcnt, bool nowait); extern shm_mq_result shm_mq_receive(shm_mq_handle *mqh, Size *nbytesp, void **datap, bool nowait); /* Wait for our counterparty to attach to the queue. */ extern shm_mq_result shm_mq_wait_for_attach(shm_mq_handle *mqh); /* Smallest possible queue. */ extern PGDLLIMPORT const Size shm_mq_minimum_size; #endif /* SHM_MQ_H */ libpg_query-13-2.1.0/src/postgres/include/storage/shm_toc.h000066400000000000000000000043171413137616400236210ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * shm_toc.h * shared memory segment table of contents * * This is intended to provide a simple way to divide a chunk of shared * memory (probably dynamic shared memory allocated via dsm_create) into * a number of regions and keep track of the addresses of those regions or * key data structures within those regions. This is not intended to * scale to a large number of keys and will perform poorly if used that * way; if you need a large number of pointers, store them within some * other data structure within the segment and only put the pointer to * the data structure itself in the table of contents. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/shm_toc.h * *------------------------------------------------------------------------- */ #ifndef SHM_TOC_H #define SHM_TOC_H #include "storage/shmem.h" /* for add_size() */ /* shm_toc is an opaque type known only within shm_toc.c */ typedef struct shm_toc shm_toc; extern shm_toc *shm_toc_create(uint64 magic, void *address, Size nbytes); extern shm_toc *shm_toc_attach(uint64 magic, void *address); extern void *shm_toc_allocate(shm_toc *toc, Size nbytes); extern Size shm_toc_freespace(shm_toc *toc); extern void shm_toc_insert(shm_toc *toc, uint64 key, void *address); extern void *shm_toc_lookup(shm_toc *toc, uint64 key, bool noError); /* * Tools for estimating how large a chunk of shared memory will be needed * to store a TOC and its dependent objects. Note: we don't really support * large numbers of keys, but it's convenient to declare number_of_keys * as a Size anyway. */ typedef struct { Size space_for_chunks; Size number_of_keys; } shm_toc_estimator; #define shm_toc_initialize_estimator(e) \ ((e)->space_for_chunks = 0, (e)->number_of_keys = 0) #define shm_toc_estimate_chunk(e, sz) \ ((e)->space_for_chunks = add_size((e)->space_for_chunks, BUFFERALIGN(sz))) #define shm_toc_estimate_keys(e, cnt) \ ((e)->number_of_keys = add_size((e)->number_of_keys, cnt)) extern Size shm_toc_estimate(shm_toc_estimator *e); #endif /* SHM_TOC_H */ libpg_query-13-2.1.0/src/postgres/include/storage/shmem.h000066400000000000000000000054421413137616400232760ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * shmem.h * shared memory management structures * * Historical note: * A long time ago, Postgres' shared memory region was allowed to be mapped * at a different address in each process, and shared memory "pointers" were * passed around as offsets relative to the start of the shared memory region. * That is no longer the case: each process must map the shared memory region * at the same address. This means shared memory pointers can be passed * around directly between different processes. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/shmem.h * *------------------------------------------------------------------------- */ #ifndef SHMEM_H #define SHMEM_H #include "utils/hsearch.h" /* shmqueue.c */ typedef struct SHM_QUEUE { struct SHM_QUEUE *prev; struct SHM_QUEUE *next; } SHM_QUEUE; /* shmem.c */ extern void InitShmemAccess(void *seghdr); extern void InitShmemAllocation(void); extern void *ShmemAlloc(Size size); extern void *ShmemAllocNoError(Size size); extern void *ShmemAllocUnlocked(Size size); extern bool ShmemAddrIsValid(const void *addr); extern void InitShmemIndex(void); extern HTAB *ShmemInitHash(const char *name, long init_size, long max_size, HASHCTL *infoP, int hash_flags); extern void *ShmemInitStruct(const char *name, Size size, bool *foundPtr); extern Size add_size(Size s1, Size s2); extern Size mul_size(Size s1, Size s2); /* ipci.c */ extern void RequestAddinShmemSpace(Size size); /* size constants for the shmem index table */ /* max size of data structure string name */ #define SHMEM_INDEX_KEYSIZE (48) /* estimated size of the shmem index table (not a hard limit) */ #define SHMEM_INDEX_SIZE (64) /* this is a hash bucket in the shmem index table */ typedef struct { char key[SHMEM_INDEX_KEYSIZE]; /* string name */ void *location; /* location in shared mem */ Size size; /* # bytes requested for the structure */ Size allocated_size; /* # bytes actually allocated */ } ShmemIndexEnt; /* * prototypes for functions in shmqueue.c */ extern void SHMQueueInit(SHM_QUEUE *queue); extern void SHMQueueElemInit(SHM_QUEUE *queue); extern void SHMQueueDelete(SHM_QUEUE *queue); extern void SHMQueueInsertBefore(SHM_QUEUE *queue, SHM_QUEUE *elem); extern void SHMQueueInsertAfter(SHM_QUEUE *queue, SHM_QUEUE *elem); extern Pointer SHMQueueNext(const SHM_QUEUE *queue, const SHM_QUEUE *curElem, Size linkOffset); extern Pointer SHMQueuePrev(const SHM_QUEUE *queue, const SHM_QUEUE *curElem, Size linkOffset); extern bool SHMQueueEmpty(const SHM_QUEUE *queue); extern bool SHMQueueIsDetached(const SHM_QUEUE *queue); #endif /* SHMEM_H */ libpg_query-13-2.1.0/src/postgres/include/storage/sinval.h000066400000000000000000000127571413137616400234700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sinval.h * POSTGRES shared cache invalidation communication definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/sinval.h * *------------------------------------------------------------------------- */ #ifndef SINVAL_H #define SINVAL_H #include #include "storage/relfilenode.h" /* * We support several types of shared-invalidation messages: * * invalidate a specific tuple in a specific catcache * * invalidate all catcache entries from a given system catalog * * invalidate a relcache entry for a specific logical relation * * invalidate all relcache entries * * invalidate an smgr cache entry for a specific physical relation * * invalidate the mapped-relation mapping for a given database * * invalidate any saved snapshot that might be used to scan a given relation * More types could be added if needed. The message type is identified by * the first "int8" field of the message struct. Zero or positive means a * specific-catcache inval message (and also serves as the catcache ID field). * Negative values identify the other message types, as per codes below. * * Catcache inval events are initially driven by detecting tuple inserts, * updates and deletions in system catalogs (see CacheInvalidateHeapTuple). * An update can generate two inval events, one for the old tuple and one for * the new, but this is reduced to one event if the tuple's hash key doesn't * change. Note that the inval events themselves don't actually say whether * the tuple is being inserted or deleted. Also, since we transmit only a * hash key, there is a small risk of unnecessary invalidations due to chance * matches of hash keys. * * Note that some system catalogs have multiple caches on them (with different * indexes). On detecting a tuple invalidation in such a catalog, separate * catcache inval messages must be generated for each of its caches, since * the hash keys will generally be different. * * Catcache, relcache, and snapshot invalidations are transactional, and so * are sent to other backends upon commit. Internally to the generating * backend, they are also processed at CommandCounterIncrement so that later * commands in the same transaction see the new state. The generating backend * also has to process them at abort, to flush out any cache state it's loaded * from no-longer-valid entries. * * smgr and relation mapping invalidations are non-transactional: they are * sent immediately when the underlying file change is made. */ typedef struct { int8 id; /* cache ID --- must be first */ Oid dbId; /* database ID, or 0 if a shared relation */ uint32 hashValue; /* hash value of key for this catcache */ } SharedInvalCatcacheMsg; #define SHAREDINVALCATALOG_ID (-1) typedef struct { int8 id; /* type field --- must be first */ Oid dbId; /* database ID, or 0 if a shared catalog */ Oid catId; /* ID of catalog whose contents are invalid */ } SharedInvalCatalogMsg; #define SHAREDINVALRELCACHE_ID (-2) typedef struct { int8 id; /* type field --- must be first */ Oid dbId; /* database ID, or 0 if a shared relation */ Oid relId; /* relation ID, or 0 if whole relcache */ } SharedInvalRelcacheMsg; #define SHAREDINVALSMGR_ID (-3) typedef struct { /* note: field layout chosen to pack into 16 bytes */ int8 id; /* type field --- must be first */ int8 backend_hi; /* high bits of backend ID, if temprel */ uint16 backend_lo; /* low bits of backend ID, if temprel */ RelFileNode rnode; /* spcNode, dbNode, relNode */ } SharedInvalSmgrMsg; #define SHAREDINVALRELMAP_ID (-4) typedef struct { int8 id; /* type field --- must be first */ Oid dbId; /* database ID, or 0 for shared catalogs */ } SharedInvalRelmapMsg; #define SHAREDINVALSNAPSHOT_ID (-5) typedef struct { int8 id; /* type field --- must be first */ Oid dbId; /* database ID, or 0 if a shared relation */ Oid relId; /* relation ID */ } SharedInvalSnapshotMsg; typedef union { int8 id; /* type field --- must be first */ SharedInvalCatcacheMsg cc; SharedInvalCatalogMsg cat; SharedInvalRelcacheMsg rc; SharedInvalSmgrMsg sm; SharedInvalRelmapMsg rm; SharedInvalSnapshotMsg sn; } SharedInvalidationMessage; /* Counter of messages processed; don't worry about overflow. */ extern uint64 SharedInvalidMessageCounter; extern volatile sig_atomic_t catchupInterruptPending; extern void SendSharedInvalidMessages(const SharedInvalidationMessage *msgs, int n); extern void ReceiveSharedInvalidMessages(void (*invalFunction) (SharedInvalidationMessage *msg), void (*resetFunction) (void)); /* signal handler for catchup events (PROCSIG_CATCHUP_INTERRUPT) */ extern void HandleCatchupInterrupt(void); /* * enable/disable processing of catchup events directly from signal handler. * The enable routine first performs processing of any catchup events that * have occurred since the last disable. */ extern void ProcessCatchupInterrupt(void); extern int xactGetCommittedInvalidationMessages(SharedInvalidationMessage **msgs, bool *RelcacheInitFileInval); extern void ProcessCommittedInvalidationMessages(SharedInvalidationMessage *msgs, int nmsgs, bool RelcacheInitFileInval, Oid dbid, Oid tsid); extern void LocalExecuteInvalidationMessage(SharedInvalidationMessage *msg); #endif /* SINVAL_H */ libpg_query-13-2.1.0/src/postgres/include/storage/sinvaladt.h000066400000000000000000000031271413137616400241500ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sinvaladt.h * POSTGRES shared cache invalidation data manager. * * The shared cache invalidation manager is responsible for transmitting * invalidation messages between backends. Any message sent by any backend * must be delivered to all already-running backends before it can be * forgotten. (If we run out of space, we instead deliver a "RESET" * message to backends that have fallen too far behind.) * * The struct type SharedInvalidationMessage, defining the contents of * a single message, is defined in sinval.h. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/sinvaladt.h * *------------------------------------------------------------------------- */ #ifndef SINVALADT_H #define SINVALADT_H #include "storage/lock.h" #include "storage/sinval.h" /* * prototypes for functions in sinvaladt.c */ extern Size SInvalShmemSize(void); extern void CreateSharedInvalidationState(void); extern void SharedInvalBackendInit(bool sendOnly); extern PGPROC *BackendIdGetProc(int backendID); extern void BackendIdGetTransactionIds(int backendID, TransactionId *xid, TransactionId *xmin); extern void SIInsertDataEntries(const SharedInvalidationMessage *data, int n); extern int SIGetDataEntries(SharedInvalidationMessage *data, int datasize); extern void SICleanupQueue(bool callerHasWriteLock, int minFree); extern LocalTransactionId GetNextLocalTransactionId(void); #endif /* SINVALADT_H */ libpg_query-13-2.1.0/src/postgres/include/storage/smgr.h000066400000000000000000000105071413137616400231330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * smgr.h * storage manager switch public interface declarations. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/smgr.h * *------------------------------------------------------------------------- */ #ifndef SMGR_H #define SMGR_H #include "lib/ilist.h" #include "storage/block.h" #include "storage/relfilenode.h" /* * smgr.c maintains a table of SMgrRelation objects, which are essentially * cached file handles. An SMgrRelation is created (if not already present) * by smgropen(), and destroyed by smgrclose(). Note that neither of these * operations imply I/O, they just create or destroy a hashtable entry. * (But smgrclose() may release associated resources, such as OS-level file * descriptors.) * * An SMgrRelation may have an "owner", which is just a pointer to it from * somewhere else; smgr.c will clear this pointer if the SMgrRelation is * closed. We use this to avoid dangling pointers from relcache to smgr * without having to make the smgr explicitly aware of relcache. There * can't be more than one "owner" pointer per SMgrRelation, but that's * all we need. * * SMgrRelations that do not have an "owner" are considered to be transient, * and are deleted at end of transaction. */ typedef struct SMgrRelationData { /* rnode is the hashtable lookup key, so it must be first! */ RelFileNodeBackend smgr_rnode; /* relation physical identifier */ /* pointer to owning pointer, or NULL if none */ struct SMgrRelationData **smgr_owner; /* * These next three fields are not actually used or manipulated by smgr, * except that they are reset to InvalidBlockNumber upon a cache flush * event (in particular, upon truncation of the relation). Higher levels * store cached state here so that it will be reset when truncation * happens. In all three cases, InvalidBlockNumber means "unknown". */ BlockNumber smgr_targblock; /* current insertion target block */ BlockNumber smgr_fsm_nblocks; /* last known size of fsm fork */ BlockNumber smgr_vm_nblocks; /* last known size of vm fork */ /* additional public fields may someday exist here */ /* * Fields below here are intended to be private to smgr.c and its * submodules. Do not touch them from elsewhere. */ int smgr_which; /* storage manager selector */ /* * for md.c; per-fork arrays of the number of open segments * (md_num_open_segs) and the segments themselves (md_seg_fds). */ int md_num_open_segs[MAX_FORKNUM + 1]; struct _MdfdVec *md_seg_fds[MAX_FORKNUM + 1]; /* if unowned, list link in list of all unowned SMgrRelations */ dlist_node node; } SMgrRelationData; typedef SMgrRelationData *SMgrRelation; #define SmgrIsTemp(smgr) \ RelFileNodeBackendIsTemp((smgr)->smgr_rnode) extern void smgrinit(void); extern SMgrRelation smgropen(RelFileNode rnode, BackendId backend); extern bool smgrexists(SMgrRelation reln, ForkNumber forknum); extern void smgrsetowner(SMgrRelation *owner, SMgrRelation reln); extern void smgrclearowner(SMgrRelation *owner, SMgrRelation reln); extern void smgrclose(SMgrRelation reln); extern void smgrcloseall(void); extern void smgrclosenode(RelFileNodeBackend rnode); extern void smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo); extern void smgrdosyncall(SMgrRelation *rels, int nrels); extern void smgrdounlinkall(SMgrRelation *rels, int nrels, bool isRedo); extern void smgrextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, char *buffer, bool skipFsync); extern bool smgrprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum); extern void smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, char *buffer); extern void smgrwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, char *buffer, bool skipFsync); extern void smgrwriteback(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, BlockNumber nblocks); extern BlockNumber smgrnblocks(SMgrRelation reln, ForkNumber forknum); extern void smgrtruncate(SMgrRelation reln, ForkNumber *forknum, int nforks, BlockNumber *nblocks); extern void smgrimmedsync(SMgrRelation reln, ForkNumber forknum); extern void AtEOXact_SMgr(void); #endif /* SMGR_H */ libpg_query-13-2.1.0/src/postgres/include/storage/spin.h000066400000000000000000000046571413137616400231450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * spin.h * Hardware-independent implementation of spinlocks. * * * The hardware-independent interface to spinlocks is defined by the * typedef "slock_t" and these macros: * * void SpinLockInit(volatile slock_t *lock) * Initialize a spinlock (to the unlocked state). * * void SpinLockAcquire(volatile slock_t *lock) * Acquire a spinlock, waiting if necessary. * Time out and abort() if unable to acquire the lock in a * "reasonable" amount of time --- typically ~ 1 minute. * * void SpinLockRelease(volatile slock_t *lock) * Unlock a previously acquired lock. * * bool SpinLockFree(slock_t *lock) * Tests if the lock is free. Returns true if free, false if locked. * This does *not* change the state of the lock. * * Callers must beware that the macro argument may be evaluated multiple * times! * * Load and store operations in calling code are guaranteed not to be * reordered with respect to these operations, because they include a * compiler barrier. (Before PostgreSQL 9.5, callers needed to use a * volatile qualifier to access data protected by spinlocks.) * * Keep in mind the coding rule that spinlocks must not be held for more * than a few instructions. In particular, we assume it is not possible * for a CHECK_FOR_INTERRUPTS() to occur while holding a spinlock, and so * it is not necessary to do HOLD/RESUME_INTERRUPTS() in these macros. * * These macros are implemented in terms of hardware-dependent macros * supplied by s_lock.h. There is not currently any extra functionality * added by this header, but there has been in the past and may someday * be again. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/spin.h * *------------------------------------------------------------------------- */ #ifndef SPIN_H #define SPIN_H #include "storage/s_lock.h" #ifndef HAVE_SPINLOCKS #include "storage/pg_sema.h" #endif #define SpinLockInit(lock) S_INIT_LOCK(lock) #define SpinLockAcquire(lock) S_LOCK(lock) #define SpinLockRelease(lock) S_UNLOCK(lock) #define SpinLockFree(lock) S_LOCK_FREE(lock) extern int SpinlockSemas(void); extern Size SpinlockSemaSize(void); #ifndef HAVE_SPINLOCKS extern void SpinlockSemaInit(void); extern PGSemaphore *SpinlockSemaArray; #endif #endif /* SPIN_H */ libpg_query-13-2.1.0/src/postgres/include/storage/standby.h000066400000000000000000000065561413137616400236400ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * standby.h * Definitions for hot standby mode. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/standby.h * *------------------------------------------------------------------------- */ #ifndef STANDBY_H #define STANDBY_H #include "storage/lock.h" #include "storage/procsignal.h" #include "storage/relfilenode.h" #include "storage/standbydefs.h" /* User-settable GUC parameters */ extern int vacuum_defer_cleanup_age; extern int max_standby_archive_delay; extern int max_standby_streaming_delay; extern void InitRecoveryTransactionEnvironment(void); extern void ShutdownRecoveryTransactionEnvironment(void); extern void ResolveRecoveryConflictWithSnapshot(TransactionId latestRemovedXid, RelFileNode node); extern void ResolveRecoveryConflictWithTablespace(Oid tsid); extern void ResolveRecoveryConflictWithDatabase(Oid dbid); extern void ResolveRecoveryConflictWithLock(LOCKTAG locktag); extern void ResolveRecoveryConflictWithBufferPin(void); extern void CheckRecoveryConflictDeadlock(void); extern void StandbyDeadLockHandler(void); extern void StandbyTimeoutHandler(void); extern void StandbyLockTimeoutHandler(void); /* * Standby Rmgr (RM_STANDBY_ID) * * Standby recovery manager exists to perform actions that are required * to make hot standby work. That includes logging AccessExclusiveLocks taken * by transactions and running-xacts snapshots. */ extern void StandbyAcquireAccessExclusiveLock(TransactionId xid, Oid dbOid, Oid relOid); extern void StandbyReleaseLockTree(TransactionId xid, int nsubxids, TransactionId *subxids); extern void StandbyReleaseAllLocks(void); extern void StandbyReleaseOldLocks(TransactionId oldxid); #define MinSizeOfXactRunningXacts offsetof(xl_running_xacts, xids) /* * Declarations for GetRunningTransactionData(). Similar to Snapshots, but * not quite. This has nothing at all to do with visibility on this server, * so this is completely separate from snapmgr.c and snapmgr.h. * This data is important for creating the initial snapshot state on a * standby server. We need lots more information than a normal snapshot, * hence we use a specific data structure for our needs. This data * is written to WAL as a separate record immediately after each * checkpoint. That means that wherever we start a standby from we will * almost immediately see the data we need to begin executing queries. */ typedef struct RunningTransactionsData { int xcnt; /* # of xact ids in xids[] */ int subxcnt; /* # of subxact ids in xids[] */ bool subxid_overflow; /* snapshot overflowed, subxids missing */ TransactionId nextXid; /* xid from ShmemVariableCache->nextFullXid */ TransactionId oldestRunningXid; /* *not* oldestXmin */ TransactionId latestCompletedXid; /* so we can set xmax */ TransactionId *xids; /* array of (sub)xids still running */ } RunningTransactionsData; typedef RunningTransactionsData *RunningTransactions; extern void LogAccessExclusiveLock(Oid dbOid, Oid relOid); extern void LogAccessExclusiveLockPrepare(void); extern XLogRecPtr LogStandbySnapshot(void); extern void LogStandbyInvalidations(int nmsgs, SharedInvalidationMessage *msgs, bool relcacheInitFileInval); #endif /* STANDBY_H */ libpg_query-13-2.1.0/src/postgres/include/storage/standbydefs.h000066400000000000000000000044221413137616400244700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * standbydefs.h * Frontend exposed definitions for hot standby mode. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/standbydefs.h * *------------------------------------------------------------------------- */ #ifndef STANDBYDEFS_H #define STANDBYDEFS_H #include "access/xlogreader.h" #include "lib/stringinfo.h" #include "storage/lockdefs.h" #include "storage/sinval.h" /* Recovery handlers for the Standby Rmgr (RM_STANDBY_ID) */ extern void standby_redo(XLogReaderState *record); extern void standby_desc(StringInfo buf, XLogReaderState *record); extern const char *standby_identify(uint8 info); extern void standby_desc_invalidations(StringInfo buf, int nmsgs, SharedInvalidationMessage *msgs, Oid dbId, Oid tsId, bool relcacheInitFileInval); /* * XLOG message types */ #define XLOG_STANDBY_LOCK 0x00 #define XLOG_RUNNING_XACTS 0x10 #define XLOG_INVALIDATIONS 0x20 typedef struct xl_standby_locks { int nlocks; /* number of entries in locks array */ xl_standby_lock locks[FLEXIBLE_ARRAY_MEMBER]; } xl_standby_locks; /* * When we write running xact data to WAL, we use this structure. */ typedef struct xl_running_xacts { int xcnt; /* # of xact ids in xids[] */ int subxcnt; /* # of subxact ids in xids[] */ bool subxid_overflow; /* snapshot overflowed, subxids missing */ TransactionId nextXid; /* xid from ShmemVariableCache->nextFullXid */ TransactionId oldestRunningXid; /* *not* oldestXmin */ TransactionId latestCompletedXid; /* so we can set xmax */ TransactionId xids[FLEXIBLE_ARRAY_MEMBER]; } xl_running_xacts; /* * Invalidations for standby, currently only when transactions without an * assigned xid commit. */ typedef struct xl_invalidations { Oid dbId; /* MyDatabaseId */ Oid tsId; /* MyDatabaseTableSpace */ bool relcacheInitFileInval; /* invalidate relcache init files */ int nmsgs; /* number of shared inval msgs */ SharedInvalidationMessage msgs[FLEXIBLE_ARRAY_MEMBER]; } xl_invalidations; #define MinSizeOfInvalidations offsetof(xl_invalidations, msgs) #endif /* STANDBYDEFS_H */ libpg_query-13-2.1.0/src/postgres/include/storage/sync.h000066400000000000000000000036551413137616400231450ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sync.h * File synchronization management code. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/storage/sync.h * *------------------------------------------------------------------------- */ #ifndef SYNC_H #define SYNC_H #include "storage/relfilenode.h" /* * Type of sync request. These are used to manage the set of pending * requests to call a sync handler's sync or unlink functions at the next * checkpoint. */ typedef enum SyncRequestType { SYNC_REQUEST, /* schedule a call of sync function */ SYNC_UNLINK_REQUEST, /* schedule a call of unlink function */ SYNC_FORGET_REQUEST, /* forget all calls for a tag */ SYNC_FILTER_REQUEST /* forget all calls satisfying match fn */ } SyncRequestType; /* * Which set of functions to use to handle a given request. The values of * the enumerators must match the indexes of the function table in sync.c. */ typedef enum SyncRequestHandler { SYNC_HANDLER_MD = 0 /* md smgr */ } SyncRequestHandler; /* * A tag identifying a file. Currently it has the members required for md.c's * usage, but sync.c has no knowledge of the internal structure, and it is * liable to change as required by future handlers. */ typedef struct FileTag { int16 handler; /* SyncRequestHandler value, saving space */ int16 forknum; /* ForkNumber, saving space */ RelFileNode rnode; uint32 segno; } FileTag; extern void InitSync(void); extern void SyncPreCheckpoint(void); extern void SyncPostCheckpoint(void); extern void ProcessSyncRequests(void); extern void RememberSyncRequest(const FileTag *ftag, SyncRequestType type); extern void EnableSyncRequestForwarding(void); extern bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type, bool retryOnError); #endif /* SYNC_H */ libpg_query-13-2.1.0/src/postgres/include/tcop/000077500000000000000000000000001413137616400213105ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/tcop/cmdtag.h000066400000000000000000000026631413137616400227270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * cmdtag.h * Declarations for commandtag names and enumeration. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/cmdtag.h * *------------------------------------------------------------------------- */ #ifndef CMDTAG_H #define CMDTAG_H #define PG_CMDTAG(tag, name, evtrgok, rwrok, rowcnt) \ tag, typedef enum CommandTag { #include "tcop/cmdtaglist.h" COMMAND_TAG_NEXTTAG } CommandTag; #undef PG_CMDTAG typedef struct QueryCompletion { CommandTag commandTag; uint64 nprocessed; } QueryCompletion; static inline void SetQueryCompletion(QueryCompletion *qc, CommandTag commandTag, uint64 nprocessed) { qc->commandTag = commandTag; qc->nprocessed = nprocessed; } static inline void CopyQueryCompletion(QueryCompletion *dst, const QueryCompletion *src) { dst->commandTag = src->commandTag; dst->nprocessed = src->nprocessed; } extern void InitializeQueryCompletion(QueryCompletion *qc); extern const char *GetCommandTagName(CommandTag commandTag); extern bool command_tag_display_rowcount(CommandTag commandTag); extern bool command_tag_event_trigger_ok(CommandTag commandTag); extern bool command_tag_table_rewrite_ok(CommandTag commandTag); extern CommandTag GetCommandTagEnum(const char *tagname); #endif /* CMDTAG_H */ libpg_query-13-2.1.0/src/postgres/include/tcop/cmdtaglist.h000066400000000000000000000344241413137616400236230ustar00rootroot00000000000000/*---------------------------------------------------------------------- * * cmdtaglist.h * Command tags * * The command tag list is kept in its own source file for possible use * by automatic tools. The exact representation of a command tag is * determined by the PG_CMDTAG macro, which is not defined in this file; * it can be defined by the caller for special purposes. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/cmdtaglist.h * *---------------------------------------------------------------------- */ /* there is deliberately not an #ifndef CMDTAGLIST_H here */ /* * List of command tags. The entries must be sorted alphabetically on their * textual name, so that we can bsearch on it; see GetCommandTagEnum(). */ /* symbol name, textual name, event_trigger_ok, table_rewrite_ok, rowcount */ PG_CMDTAG(CMDTAG_UNKNOWN, "???", false, false, false) PG_CMDTAG(CMDTAG_ALTER_ACCESS_METHOD, "ALTER ACCESS METHOD", true, false, false) PG_CMDTAG(CMDTAG_ALTER_AGGREGATE, "ALTER AGGREGATE", true, false, false) PG_CMDTAG(CMDTAG_ALTER_CAST, "ALTER CAST", true, false, false) PG_CMDTAG(CMDTAG_ALTER_COLLATION, "ALTER COLLATION", true, false, false) PG_CMDTAG(CMDTAG_ALTER_CONSTRAINT, "ALTER CONSTRAINT", true, false, false) PG_CMDTAG(CMDTAG_ALTER_CONVERSION, "ALTER CONVERSION", true, false, false) PG_CMDTAG(CMDTAG_ALTER_DATABASE, "ALTER DATABASE", false, false, false) PG_CMDTAG(CMDTAG_ALTER_DEFAULT_PRIVILEGES, "ALTER DEFAULT PRIVILEGES", true, false, false) PG_CMDTAG(CMDTAG_ALTER_DOMAIN, "ALTER DOMAIN", true, false, false) PG_CMDTAG(CMDTAG_ALTER_EVENT_TRIGGER, "ALTER EVENT TRIGGER", false, false, false) PG_CMDTAG(CMDTAG_ALTER_EXTENSION, "ALTER EXTENSION", true, false, false) PG_CMDTAG(CMDTAG_ALTER_FOREIGN_DATA_WRAPPER, "ALTER FOREIGN DATA WRAPPER", true, false, false) PG_CMDTAG(CMDTAG_ALTER_FOREIGN_TABLE, "ALTER FOREIGN TABLE", true, false, false) PG_CMDTAG(CMDTAG_ALTER_FUNCTION, "ALTER FUNCTION", true, false, false) PG_CMDTAG(CMDTAG_ALTER_INDEX, "ALTER INDEX", true, false, false) PG_CMDTAG(CMDTAG_ALTER_LANGUAGE, "ALTER LANGUAGE", true, false, false) PG_CMDTAG(CMDTAG_ALTER_LARGE_OBJECT, "ALTER LARGE OBJECT", true, false, false) PG_CMDTAG(CMDTAG_ALTER_MATERIALIZED_VIEW, "ALTER MATERIALIZED VIEW", true, false, false) PG_CMDTAG(CMDTAG_ALTER_OPERATOR, "ALTER OPERATOR", true, false, false) PG_CMDTAG(CMDTAG_ALTER_OPERATOR_CLASS, "ALTER OPERATOR CLASS", true, false, false) PG_CMDTAG(CMDTAG_ALTER_OPERATOR_FAMILY, "ALTER OPERATOR FAMILY", true, false, false) PG_CMDTAG(CMDTAG_ALTER_POLICY, "ALTER POLICY", true, false, false) PG_CMDTAG(CMDTAG_ALTER_PROCEDURE, "ALTER PROCEDURE", true, false, false) PG_CMDTAG(CMDTAG_ALTER_PUBLICATION, "ALTER PUBLICATION", true, false, false) PG_CMDTAG(CMDTAG_ALTER_ROLE, "ALTER ROLE", false, false, false) PG_CMDTAG(CMDTAG_ALTER_ROUTINE, "ALTER ROUTINE", true, false, false) PG_CMDTAG(CMDTAG_ALTER_RULE, "ALTER RULE", true, false, false) PG_CMDTAG(CMDTAG_ALTER_SCHEMA, "ALTER SCHEMA", true, false, false) PG_CMDTAG(CMDTAG_ALTER_SEQUENCE, "ALTER SEQUENCE", true, false, false) PG_CMDTAG(CMDTAG_ALTER_SERVER, "ALTER SERVER", true, false, false) PG_CMDTAG(CMDTAG_ALTER_STATISTICS, "ALTER STATISTICS", true, false, false) PG_CMDTAG(CMDTAG_ALTER_SUBSCRIPTION, "ALTER SUBSCRIPTION", true, false, false) PG_CMDTAG(CMDTAG_ALTER_SYSTEM, "ALTER SYSTEM", false, false, false) PG_CMDTAG(CMDTAG_ALTER_TABLE, "ALTER TABLE", true, true, false) PG_CMDTAG(CMDTAG_ALTER_TABLESPACE, "ALTER TABLESPACE", false, false, false) PG_CMDTAG(CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION, "ALTER TEXT SEARCH CONFIGURATION", true, false, false) PG_CMDTAG(CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY, "ALTER TEXT SEARCH DICTIONARY", true, false, false) PG_CMDTAG(CMDTAG_ALTER_TEXT_SEARCH_PARSER, "ALTER TEXT SEARCH PARSER", true, false, false) PG_CMDTAG(CMDTAG_ALTER_TEXT_SEARCH_TEMPLATE, "ALTER TEXT SEARCH TEMPLATE", true, false, false) PG_CMDTAG(CMDTAG_ALTER_TRANSFORM, "ALTER TRANSFORM", true, false, false) PG_CMDTAG(CMDTAG_ALTER_TRIGGER, "ALTER TRIGGER", true, false, false) PG_CMDTAG(CMDTAG_ALTER_TYPE, "ALTER TYPE", true, true, false) PG_CMDTAG(CMDTAG_ALTER_USER_MAPPING, "ALTER USER MAPPING", true, false, false) PG_CMDTAG(CMDTAG_ALTER_VIEW, "ALTER VIEW", true, false, false) PG_CMDTAG(CMDTAG_ANALYZE, "ANALYZE", false, false, false) PG_CMDTAG(CMDTAG_BEGIN, "BEGIN", false, false, false) PG_CMDTAG(CMDTAG_CALL, "CALL", false, false, false) PG_CMDTAG(CMDTAG_CHECKPOINT, "CHECKPOINT", false, false, false) PG_CMDTAG(CMDTAG_CLOSE, "CLOSE", false, false, false) PG_CMDTAG(CMDTAG_CLOSE_CURSOR, "CLOSE CURSOR", false, false, false) PG_CMDTAG(CMDTAG_CLOSE_CURSOR_ALL, "CLOSE CURSOR ALL", false, false, false) PG_CMDTAG(CMDTAG_CLUSTER, "CLUSTER", false, false, false) PG_CMDTAG(CMDTAG_COMMENT, "COMMENT", true, false, false) PG_CMDTAG(CMDTAG_COMMIT, "COMMIT", false, false, false) PG_CMDTAG(CMDTAG_COMMIT_PREPARED, "COMMIT PREPARED", false, false, false) PG_CMDTAG(CMDTAG_COPY, "COPY", false, false, true) PG_CMDTAG(CMDTAG_COPY_FROM, "COPY FROM", false, false, false) PG_CMDTAG(CMDTAG_CREATE_ACCESS_METHOD, "CREATE ACCESS METHOD", true, false, false) PG_CMDTAG(CMDTAG_CREATE_AGGREGATE, "CREATE AGGREGATE", true, false, false) PG_CMDTAG(CMDTAG_CREATE_CAST, "CREATE CAST", true, false, false) PG_CMDTAG(CMDTAG_CREATE_COLLATION, "CREATE COLLATION", true, false, false) PG_CMDTAG(CMDTAG_CREATE_CONSTRAINT, "CREATE CONSTRAINT", true, false, false) PG_CMDTAG(CMDTAG_CREATE_CONVERSION, "CREATE CONVERSION", true, false, false) PG_CMDTAG(CMDTAG_CREATE_DATABASE, "CREATE DATABASE", false, false, false) PG_CMDTAG(CMDTAG_CREATE_DOMAIN, "CREATE DOMAIN", true, false, false) PG_CMDTAG(CMDTAG_CREATE_EVENT_TRIGGER, "CREATE EVENT TRIGGER", false, false, false) PG_CMDTAG(CMDTAG_CREATE_EXTENSION, "CREATE EXTENSION", true, false, false) PG_CMDTAG(CMDTAG_CREATE_FOREIGN_DATA_WRAPPER, "CREATE FOREIGN DATA WRAPPER", true, false, false) PG_CMDTAG(CMDTAG_CREATE_FOREIGN_TABLE, "CREATE FOREIGN TABLE", true, false, false) PG_CMDTAG(CMDTAG_CREATE_FUNCTION, "CREATE FUNCTION", true, false, false) PG_CMDTAG(CMDTAG_CREATE_INDEX, "CREATE INDEX", true, false, false) PG_CMDTAG(CMDTAG_CREATE_LANGUAGE, "CREATE LANGUAGE", true, false, false) PG_CMDTAG(CMDTAG_CREATE_MATERIALIZED_VIEW, "CREATE MATERIALIZED VIEW", true, false, false) PG_CMDTAG(CMDTAG_CREATE_OPERATOR, "CREATE OPERATOR", true, false, false) PG_CMDTAG(CMDTAG_CREATE_OPERATOR_CLASS, "CREATE OPERATOR CLASS", true, false, false) PG_CMDTAG(CMDTAG_CREATE_OPERATOR_FAMILY, "CREATE OPERATOR FAMILY", true, false, false) PG_CMDTAG(CMDTAG_CREATE_POLICY, "CREATE POLICY", true, false, false) PG_CMDTAG(CMDTAG_CREATE_PROCEDURE, "CREATE PROCEDURE", true, false, false) PG_CMDTAG(CMDTAG_CREATE_PUBLICATION, "CREATE PUBLICATION", true, false, false) PG_CMDTAG(CMDTAG_CREATE_ROLE, "CREATE ROLE", false, false, false) PG_CMDTAG(CMDTAG_CREATE_ROUTINE, "CREATE ROUTINE", true, false, false) PG_CMDTAG(CMDTAG_CREATE_RULE, "CREATE RULE", true, false, false) PG_CMDTAG(CMDTAG_CREATE_SCHEMA, "CREATE SCHEMA", true, false, false) PG_CMDTAG(CMDTAG_CREATE_SEQUENCE, "CREATE SEQUENCE", true, false, false) PG_CMDTAG(CMDTAG_CREATE_SERVER, "CREATE SERVER", true, false, false) PG_CMDTAG(CMDTAG_CREATE_STATISTICS, "CREATE STATISTICS", true, false, false) PG_CMDTAG(CMDTAG_CREATE_SUBSCRIPTION, "CREATE SUBSCRIPTION", true, false, false) PG_CMDTAG(CMDTAG_CREATE_TABLE, "CREATE TABLE", true, false, false) PG_CMDTAG(CMDTAG_CREATE_TABLE_AS, "CREATE TABLE AS", true, false, false) PG_CMDTAG(CMDTAG_CREATE_TABLESPACE, "CREATE TABLESPACE", false, false, false) PG_CMDTAG(CMDTAG_CREATE_TEXT_SEARCH_CONFIGURATION, "CREATE TEXT SEARCH CONFIGURATION", true, false, false) PG_CMDTAG(CMDTAG_CREATE_TEXT_SEARCH_DICTIONARY, "CREATE TEXT SEARCH DICTIONARY", true, false, false) PG_CMDTAG(CMDTAG_CREATE_TEXT_SEARCH_PARSER, "CREATE TEXT SEARCH PARSER", true, false, false) PG_CMDTAG(CMDTAG_CREATE_TEXT_SEARCH_TEMPLATE, "CREATE TEXT SEARCH TEMPLATE", true, false, false) PG_CMDTAG(CMDTAG_CREATE_TRANSFORM, "CREATE TRANSFORM", true, false, false) PG_CMDTAG(CMDTAG_CREATE_TRIGGER, "CREATE TRIGGER", true, false, false) PG_CMDTAG(CMDTAG_CREATE_TYPE, "CREATE TYPE", true, false, false) PG_CMDTAG(CMDTAG_CREATE_USER_MAPPING, "CREATE USER MAPPING", true, false, false) PG_CMDTAG(CMDTAG_CREATE_VIEW, "CREATE VIEW", true, false, false) PG_CMDTAG(CMDTAG_DEALLOCATE, "DEALLOCATE", false, false, false) PG_CMDTAG(CMDTAG_DEALLOCATE_ALL, "DEALLOCATE ALL", false, false, false) PG_CMDTAG(CMDTAG_DECLARE_CURSOR, "DECLARE CURSOR", false, false, false) PG_CMDTAG(CMDTAG_DELETE, "DELETE", false, false, true) PG_CMDTAG(CMDTAG_DISCARD, "DISCARD", false, false, false) PG_CMDTAG(CMDTAG_DISCARD_ALL, "DISCARD ALL", false, false, false) PG_CMDTAG(CMDTAG_DISCARD_PLANS, "DISCARD PLANS", false, false, false) PG_CMDTAG(CMDTAG_DISCARD_SEQUENCES, "DISCARD SEQUENCES", false, false, false) PG_CMDTAG(CMDTAG_DISCARD_TEMP, "DISCARD TEMP", false, false, false) PG_CMDTAG(CMDTAG_DO, "DO", false, false, false) PG_CMDTAG(CMDTAG_DROP_ACCESS_METHOD, "DROP ACCESS METHOD", true, false, false) PG_CMDTAG(CMDTAG_DROP_AGGREGATE, "DROP AGGREGATE", true, false, false) PG_CMDTAG(CMDTAG_DROP_CAST, "DROP CAST", true, false, false) PG_CMDTAG(CMDTAG_DROP_COLLATION, "DROP COLLATION", true, false, false) PG_CMDTAG(CMDTAG_DROP_CONSTRAINT, "DROP CONSTRAINT", true, false, false) PG_CMDTAG(CMDTAG_DROP_CONVERSION, "DROP CONVERSION", true, false, false) PG_CMDTAG(CMDTAG_DROP_DATABASE, "DROP DATABASE", false, false, false) PG_CMDTAG(CMDTAG_DROP_DOMAIN, "DROP DOMAIN", true, false, false) PG_CMDTAG(CMDTAG_DROP_EVENT_TRIGGER, "DROP EVENT TRIGGER", false, false, false) PG_CMDTAG(CMDTAG_DROP_EXTENSION, "DROP EXTENSION", true, false, false) PG_CMDTAG(CMDTAG_DROP_FOREIGN_DATA_WRAPPER, "DROP FOREIGN DATA WRAPPER", true, false, false) PG_CMDTAG(CMDTAG_DROP_FOREIGN_TABLE, "DROP FOREIGN TABLE", true, false, false) PG_CMDTAG(CMDTAG_DROP_FUNCTION, "DROP FUNCTION", true, false, false) PG_CMDTAG(CMDTAG_DROP_INDEX, "DROP INDEX", true, false, false) PG_CMDTAG(CMDTAG_DROP_LANGUAGE, "DROP LANGUAGE", true, false, false) PG_CMDTAG(CMDTAG_DROP_MATERIALIZED_VIEW, "DROP MATERIALIZED VIEW", true, false, false) PG_CMDTAG(CMDTAG_DROP_OPERATOR, "DROP OPERATOR", true, false, false) PG_CMDTAG(CMDTAG_DROP_OPERATOR_CLASS, "DROP OPERATOR CLASS", true, false, false) PG_CMDTAG(CMDTAG_DROP_OPERATOR_FAMILY, "DROP OPERATOR FAMILY", true, false, false) PG_CMDTAG(CMDTAG_DROP_OWNED, "DROP OWNED", true, false, false) PG_CMDTAG(CMDTAG_DROP_POLICY, "DROP POLICY", true, false, false) PG_CMDTAG(CMDTAG_DROP_PROCEDURE, "DROP PROCEDURE", true, false, false) PG_CMDTAG(CMDTAG_DROP_PUBLICATION, "DROP PUBLICATION", true, false, false) PG_CMDTAG(CMDTAG_DROP_ROLE, "DROP ROLE", false, false, false) PG_CMDTAG(CMDTAG_DROP_ROUTINE, "DROP ROUTINE", true, false, false) PG_CMDTAG(CMDTAG_DROP_RULE, "DROP RULE", true, false, false) PG_CMDTAG(CMDTAG_DROP_SCHEMA, "DROP SCHEMA", true, false, false) PG_CMDTAG(CMDTAG_DROP_SEQUENCE, "DROP SEQUENCE", true, false, false) PG_CMDTAG(CMDTAG_DROP_SERVER, "DROP SERVER", true, false, false) PG_CMDTAG(CMDTAG_DROP_STATISTICS, "DROP STATISTICS", true, false, false) PG_CMDTAG(CMDTAG_DROP_SUBSCRIPTION, "DROP SUBSCRIPTION", true, false, false) PG_CMDTAG(CMDTAG_DROP_TABLE, "DROP TABLE", true, false, false) PG_CMDTAG(CMDTAG_DROP_TABLESPACE, "DROP TABLESPACE", false, false, false) PG_CMDTAG(CMDTAG_DROP_TEXT_SEARCH_CONFIGURATION, "DROP TEXT SEARCH CONFIGURATION", true, false, false) PG_CMDTAG(CMDTAG_DROP_TEXT_SEARCH_DICTIONARY, "DROP TEXT SEARCH DICTIONARY", true, false, false) PG_CMDTAG(CMDTAG_DROP_TEXT_SEARCH_PARSER, "DROP TEXT SEARCH PARSER", true, false, false) PG_CMDTAG(CMDTAG_DROP_TEXT_SEARCH_TEMPLATE, "DROP TEXT SEARCH TEMPLATE", true, false, false) PG_CMDTAG(CMDTAG_DROP_TRANSFORM, "DROP TRANSFORM", true, false, false) PG_CMDTAG(CMDTAG_DROP_TRIGGER, "DROP TRIGGER", true, false, false) PG_CMDTAG(CMDTAG_DROP_TYPE, "DROP TYPE", true, false, false) PG_CMDTAG(CMDTAG_DROP_USER_MAPPING, "DROP USER MAPPING", true, false, false) PG_CMDTAG(CMDTAG_DROP_VIEW, "DROP VIEW", true, false, false) PG_CMDTAG(CMDTAG_EXECUTE, "EXECUTE", false, false, false) PG_CMDTAG(CMDTAG_EXPLAIN, "EXPLAIN", false, false, false) PG_CMDTAG(CMDTAG_FETCH, "FETCH", false, false, true) PG_CMDTAG(CMDTAG_GRANT, "GRANT", true, false, false) PG_CMDTAG(CMDTAG_GRANT_ROLE, "GRANT ROLE", false, false, false) PG_CMDTAG(CMDTAG_IMPORT_FOREIGN_SCHEMA, "IMPORT FOREIGN SCHEMA", true, false, false) PG_CMDTAG(CMDTAG_INSERT, "INSERT", false, false, true) PG_CMDTAG(CMDTAG_LISTEN, "LISTEN", false, false, false) PG_CMDTAG(CMDTAG_LOAD, "LOAD", false, false, false) PG_CMDTAG(CMDTAG_LOCK_TABLE, "LOCK TABLE", false, false, false) PG_CMDTAG(CMDTAG_MOVE, "MOVE", false, false, true) PG_CMDTAG(CMDTAG_NOTIFY, "NOTIFY", false, false, false) PG_CMDTAG(CMDTAG_PREPARE, "PREPARE", false, false, false) PG_CMDTAG(CMDTAG_PREPARE_TRANSACTION, "PREPARE TRANSACTION", false, false, false) PG_CMDTAG(CMDTAG_REASSIGN_OWNED, "REASSIGN OWNED", false, false, false) PG_CMDTAG(CMDTAG_REFRESH_MATERIALIZED_VIEW, "REFRESH MATERIALIZED VIEW", true, false, false) PG_CMDTAG(CMDTAG_REINDEX, "REINDEX", false, false, false) PG_CMDTAG(CMDTAG_RELEASE, "RELEASE", false, false, false) PG_CMDTAG(CMDTAG_RESET, "RESET", false, false, false) PG_CMDTAG(CMDTAG_REVOKE, "REVOKE", true, false, false) PG_CMDTAG(CMDTAG_REVOKE_ROLE, "REVOKE ROLE", false, false, false) PG_CMDTAG(CMDTAG_ROLLBACK, "ROLLBACK", false, false, false) PG_CMDTAG(CMDTAG_ROLLBACK_PREPARED, "ROLLBACK PREPARED", false, false, false) PG_CMDTAG(CMDTAG_SAVEPOINT, "SAVEPOINT", false, false, false) PG_CMDTAG(CMDTAG_SECURITY_LABEL, "SECURITY LABEL", true, false, false) PG_CMDTAG(CMDTAG_SELECT, "SELECT", false, false, true) PG_CMDTAG(CMDTAG_SELECT_FOR_KEY_SHARE, "SELECT FOR KEY SHARE", false, false, false) PG_CMDTAG(CMDTAG_SELECT_FOR_NO_KEY_UPDATE, "SELECT FOR NO KEY UPDATE", false, false, false) PG_CMDTAG(CMDTAG_SELECT_FOR_SHARE, "SELECT FOR SHARE", false, false, false) PG_CMDTAG(CMDTAG_SELECT_FOR_UPDATE, "SELECT FOR UPDATE", false, false, false) PG_CMDTAG(CMDTAG_SELECT_INTO, "SELECT INTO", true, false, false) PG_CMDTAG(CMDTAG_SET, "SET", false, false, false) PG_CMDTAG(CMDTAG_SET_CONSTRAINTS, "SET CONSTRAINTS", false, false, false) PG_CMDTAG(CMDTAG_SHOW, "SHOW", false, false, false) PG_CMDTAG(CMDTAG_START_TRANSACTION, "START TRANSACTION", false, false, false) PG_CMDTAG(CMDTAG_TRUNCATE_TABLE, "TRUNCATE TABLE", false, false, false) PG_CMDTAG(CMDTAG_UNLISTEN, "UNLISTEN", false, false, false) PG_CMDTAG(CMDTAG_UPDATE, "UPDATE", false, false, true) PG_CMDTAG(CMDTAG_VACUUM, "VACUUM", false, false, false) libpg_query-13-2.1.0/src/postgres/include/tcop/deparse_utility.h000066400000000000000000000040501413137616400246660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * deparse_utility.h * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/deparse_utility.h * *------------------------------------------------------------------------- */ #ifndef DEPARSE_UTILITY_H #define DEPARSE_UTILITY_H #include "access/attnum.h" #include "catalog/objectaddress.h" #include "nodes/nodes.h" #include "utils/aclchk_internal.h" /* * Support for keeping track of collected commands. */ typedef enum CollectedCommandType { SCT_Simple, SCT_AlterTable, SCT_Grant, SCT_AlterOpFamily, SCT_AlterDefaultPrivileges, SCT_CreateOpClass, SCT_AlterTSConfig } CollectedCommandType; /* * For ALTER TABLE commands, we keep a list of the subcommands therein. */ typedef struct CollectedATSubcmd { ObjectAddress address; /* affected column, constraint, index, ... */ Node *parsetree; } CollectedATSubcmd; typedef struct CollectedCommand { CollectedCommandType type; bool in_extension; Node *parsetree; union { /* most commands */ struct { ObjectAddress address; ObjectAddress secondaryObject; } simple; /* ALTER TABLE, and internal uses thereof */ struct { Oid objectId; Oid classId; List *subcmds; } alterTable; /* GRANT / REVOKE */ struct { InternalGrant *istmt; } grant; /* ALTER OPERATOR FAMILY */ struct { ObjectAddress address; List *operators; List *procedures; } opfam; /* CREATE OPERATOR CLASS */ struct { ObjectAddress address; List *operators; List *procedures; } createopc; /* ALTER TEXT SEARCH CONFIGURATION ADD/ALTER/DROP MAPPING */ struct { ObjectAddress address; Oid *dictIds; int ndicts; } atscfg; /* ALTER DEFAULT PRIVILEGES */ struct { ObjectType objtype; } defprivs; } d; struct CollectedCommand *parent; /* when nested */ } CollectedCommand; #endif /* DEPARSE_UTILITY_H */ libpg_query-13-2.1.0/src/postgres/include/tcop/dest.h000066400000000000000000000140201413137616400224150ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dest.h * support for communication destinations * * Whenever the backend executes a query that returns tuples, the results * have to go someplace. For example: * * - stdout is the destination only when we are running a * standalone backend (no postmaster) and are returning results * back to an interactive user. * * - a remote process is the destination when we are * running a backend with a frontend and the frontend executes * PQexec() or PQfn(). In this case, the results are sent * to the frontend via the functions in backend/libpq. * * - DestNone is the destination when the system executes * a query internally. The results are discarded. * * dest.c defines three functions that implement destination management: * * BeginCommand: initialize the destination at start of command. * CreateDestReceiver: return a pointer to a struct of destination-specific * receiver functions. * EndCommand: clean up the destination at end of command. * * BeginCommand/EndCommand are executed once per received SQL query. * * CreateDestReceiver returns a receiver object appropriate to the specified * destination. The executor, as well as utility statements that can return * tuples, are passed the resulting DestReceiver* pointer. Each executor run * or utility execution calls the receiver's rStartup method, then the * receiveSlot method (zero or more times), then the rShutdown method. * The same receiver object may be re-used multiple times; eventually it is * destroyed by calling its rDestroy method. * * In some cases, receiver objects require additional parameters that must * be passed to them after calling CreateDestReceiver. Since the set of * parameters varies for different receiver types, this is not handled by * this module, but by direct calls from the calling code to receiver type * specific functions. * * The DestReceiver object returned by CreateDestReceiver may be a statically * allocated object (for destination types that require no local state), * in which case rDestroy is a no-op. Alternatively it can be a palloc'd * object that has DestReceiver as its first field and contains additional * fields (see printtup.c for an example). These additional fields are then * accessible to the DestReceiver functions by casting the DestReceiver* * pointer passed to them. The palloc'd object is pfree'd by the rDestroy * method. Note that the caller of CreateDestReceiver should take care to * do so in a memory context that is long-lived enough for the receiver * object not to disappear while still needed. * * Special provision: None_Receiver is a permanently available receiver * object for the DestNone destination. This avoids useless creation/destroy * calls in portal and cursor manipulations. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/dest.h * *------------------------------------------------------------------------- */ #ifndef DEST_H #define DEST_H #include "executor/tuptable.h" #include "tcop/cmdtag.h" /* buffer size to use for command completion tags */ #define COMPLETION_TAG_BUFSIZE 64 /* ---------------- * CommandDest is a simplistic means of identifying the desired * destination. Someday this will probably need to be improved. * * Note: only the values DestNone, DestDebug, DestRemote are legal for the * global variable whereToSendOutput. The other values may be used * as the destination for individual commands. * ---------------- */ typedef enum { DestNone, /* results are discarded */ DestDebug, /* results go to debugging output */ DestRemote, /* results sent to frontend process */ DestRemoteExecute, /* sent to frontend, in Execute command */ DestRemoteSimple, /* sent to frontend, w/no catalog access */ DestSPI, /* results sent to SPI manager */ DestTuplestore, /* results sent to Tuplestore */ DestIntoRel, /* results sent to relation (SELECT INTO) */ DestCopyOut, /* results sent to COPY TO code */ DestSQLFunction, /* results sent to SQL-language func mgr */ DestTransientRel, /* results sent to transient relation */ DestTupleQueue /* results sent to tuple queue */ } CommandDest; /* ---------------- * DestReceiver is a base type for destination-specific local state. * In the simplest cases, there is no state info, just the function * pointers that the executor must call. * * Note: the receiveSlot routine must be passed a slot containing a TupleDesc * identical to the one given to the rStartup routine. It returns bool where * a "true" value means "continue processing" and a "false" value means * "stop early, just as if we'd reached the end of the scan". * ---------------- */ typedef struct _DestReceiver DestReceiver; struct _DestReceiver { /* Called for each tuple to be output: */ bool (*receiveSlot) (TupleTableSlot *slot, DestReceiver *self); /* Per-executor-run initialization and shutdown: */ void (*rStartup) (DestReceiver *self, int operation, TupleDesc typeinfo); void (*rShutdown) (DestReceiver *self); /* Destroy the receiver object itself (if dynamically allocated) */ void (*rDestroy) (DestReceiver *self); /* CommandDest code for this receiver */ CommandDest mydest; /* Private fields might appear beyond this point... */ }; extern PGDLLIMPORT DestReceiver *None_Receiver; /* permanent receiver for * DestNone */ /* The primary destination management functions */ extern void BeginCommand(CommandTag commandTag, CommandDest dest); extern DestReceiver *CreateDestReceiver(CommandDest dest); extern void EndCommand(const QueryCompletion *qc, CommandDest dest, bool force_undecorated_output); extern void EndReplicationCommand(const char *commandTag); /* Additional functions that go with destination management, more or less. */ extern void NullCommand(CommandDest dest); extern void ReadyForQuery(CommandDest dest); #endif /* DEST_H */ libpg_query-13-2.1.0/src/postgres/include/tcop/fastpath.h000066400000000000000000000010641413137616400232740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fastpath.h * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/fastpath.h * *------------------------------------------------------------------------- */ #ifndef FASTPATH_H #define FASTPATH_H #include "lib/stringinfo.h" extern int GetOldFunctionMessage(StringInfo buf); extern void HandleFunctionRequest(StringInfo msgBuf); #endif /* FASTPATH_H */ libpg_query-13-2.1.0/src/postgres/include/tcop/pquery.h000066400000000000000000000022511413137616400230060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pquery.h * prototypes for pquery.c. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/pquery.h * *------------------------------------------------------------------------- */ #ifndef PQUERY_H #define PQUERY_H #include "nodes/parsenodes.h" #include "utils/portal.h" extern PGDLLIMPORT Portal ActivePortal; extern PortalStrategy ChoosePortalStrategy(List *stmts); extern List *FetchPortalTargetList(Portal portal); extern List *FetchStatementTargetList(Node *stmt); extern void PortalStart(Portal portal, ParamListInfo params, int eflags, Snapshot snapshot); extern void PortalSetResultFormat(Portal portal, int nFormats, int16 *formats); extern bool PortalRun(Portal portal, long count, bool isTopLevel, bool run_once, DestReceiver *dest, DestReceiver *altdest, QueryCompletion *qc); extern uint64 PortalRunFetch(Portal portal, FetchDirection fdirection, long count, DestReceiver *dest); #endif /* PQUERY_H */ libpg_query-13-2.1.0/src/postgres/include/tcop/tcopprot.h000066400000000000000000000062301413137616400233340ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tcopprot.h * prototypes for postgres.c. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/tcopprot.h * *------------------------------------------------------------------------- */ #ifndef TCOPPROT_H #define TCOPPROT_H #include "nodes/params.h" #include "nodes/parsenodes.h" #include "nodes/plannodes.h" #include "storage/procsignal.h" #include "utils/guc.h" #include "utils/queryenvironment.h" /* Required daylight between max_stack_depth and the kernel limit, in bytes */ #define STACK_DEPTH_SLOP (512 * 1024L) extern __thread CommandDest whereToSendOutput; extern PGDLLIMPORT __thread const char *debug_query_string; extern __thread int max_stack_depth; extern int PostAuthDelay; /* GUC-configurable parameters */ typedef enum { LOGSTMT_NONE, /* log no statements */ LOGSTMT_DDL, /* log data definition statements */ LOGSTMT_MOD, /* log modification statements, plus DDL */ LOGSTMT_ALL /* log all statements */ } LogStmtLevel; extern PGDLLIMPORT int log_statement; extern List *pg_parse_query(const char *query_string); extern List *pg_analyze_and_rewrite(RawStmt *parsetree, const char *query_string, Oid *paramTypes, int numParams, QueryEnvironment *queryEnv); extern List *pg_analyze_and_rewrite_params(RawStmt *parsetree, const char *query_string, ParserSetupHook parserSetup, void *parserSetupArg, QueryEnvironment *queryEnv); extern PlannedStmt *pg_plan_query(Query *querytree, const char *query_string, int cursorOptions, ParamListInfo boundParams); extern List *pg_plan_queries(List *querytrees, const char *query_string, int cursorOptions, ParamListInfo boundParams); extern bool check_max_stack_depth(int *newval, void **extra, GucSource source); extern void assign_max_stack_depth(int newval, void *extra); extern void die(SIGNAL_ARGS); extern void quickdie(SIGNAL_ARGS) pg_attribute_noreturn(); extern void StatementCancelHandler(SIGNAL_ARGS); extern void FloatExceptionHandler(SIGNAL_ARGS) pg_attribute_noreturn(); extern void RecoveryConflictInterrupt(ProcSignalReason reason); /* called from SIGUSR1 * handler */ extern void ProcessClientReadInterrupt(bool blocked); extern void ProcessClientWriteInterrupt(bool blocked); extern void process_postgres_switches(int argc, char *argv[], GucContext ctx, const char **dbname); extern void PostgresMain(int argc, char *argv[], const char *dbname, const char *username) pg_attribute_noreturn(); extern long get_stack_depth_rlimit(void); extern void ResetUsage(void); extern void ShowUsage(const char *title); extern int check_log_duration(char *msec_str, bool was_logged); extern void set_debug_options(int debug_flag, GucContext context, GucSource source); extern bool set_plan_disabling_options(const char *arg, GucContext context, GucSource source); extern const char *get_stats_option_name(const char *arg); #endif /* TCOPPROT_H */ libpg_query-13-2.1.0/src/postgres/include/tcop/utility.h000066400000000000000000000074661413137616400232010ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * utility.h * prototypes for utility.c. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/utility.h * *------------------------------------------------------------------------- */ #ifndef UTILITY_H #define UTILITY_H #include "tcop/cmdtag.h" #include "tcop/tcopprot.h" typedef enum { PROCESS_UTILITY_TOPLEVEL, /* toplevel interactive command */ PROCESS_UTILITY_QUERY, /* a complete query, but not toplevel */ PROCESS_UTILITY_QUERY_NONATOMIC, /* a complete query, nonatomic * execution context */ PROCESS_UTILITY_SUBCOMMAND /* a portion of a query */ } ProcessUtilityContext; /* Info needed when recursing from ALTER TABLE */ typedef struct AlterTableUtilityContext { PlannedStmt *pstmt; /* PlannedStmt for outer ALTER TABLE command */ const char *queryString; /* its query string */ Oid relid; /* OID of ALTER's target table */ ParamListInfo params; /* any parameters available to ALTER TABLE */ QueryEnvironment *queryEnv; /* execution environment for ALTER TABLE */ } AlterTableUtilityContext; /* * These constants are used to describe the extent to which a particular * command is read-only. * * COMMAND_OK_IN_READ_ONLY_TXN means that the command is permissible even when * XactReadOnly is set. This bit should be set for commands that don't change * the state of the database (data or schema) in a way that would affect the * output of pg_dump. * * COMMAND_OK_IN_PARALLEL_MODE means that the command is permissible even * when in parallel mode. Writing tuples is forbidden, as is anything that * might confuse cooperating processes. * * COMMAND_OK_IN_RECOVERY means that the command is permissible even when in * recovery. It can't write WAL, nor can it do things that would imperil * replay of future WAL received from the master. */ #define COMMAND_OK_IN_READ_ONLY_TXN 0x0001 #define COMMAND_OK_IN_PARALLEL_MODE 0x0002 #define COMMAND_OK_IN_RECOVERY 0x0004 /* * We say that a command is strictly read-only if it is sufficiently read-only * for all purposes. For clarity, we also have a constant for commands that are * in no way read-only. */ #define COMMAND_IS_STRICTLY_READ_ONLY \ (COMMAND_OK_IN_READ_ONLY_TXN | COMMAND_OK_IN_RECOVERY | \ COMMAND_OK_IN_PARALLEL_MODE) #define COMMAND_IS_NOT_READ_ONLY 0 /* Hook for plugins to get control in ProcessUtility() */ typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc); extern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook; extern void ProcessUtility(PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc); extern void standard_ProcessUtility(PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc); extern void ProcessUtilityForAlterTable(Node *stmt, AlterTableUtilityContext *context); extern bool UtilityReturnsTuples(Node *parsetree); extern TupleDesc UtilityTupleDescriptor(Node *parsetree); extern Query *UtilityContainsQuery(Node *parsetree); extern CommandTag CreateCommandTag(Node *parsetree); static inline const char * CreateCommandName(Node *parsetree) { return GetCommandTagName(CreateCommandTag(parsetree)); } extern LogStmtLevel GetCommandLogLevel(Node *parsetree); extern bool CommandIsReadOnly(PlannedStmt *pstmt); #endif /* UTILITY_H */ libpg_query-13-2.1.0/src/postgres/include/tsearch/000077500000000000000000000000001413137616400217745ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/tsearch/ts_cache.h000066400000000000000000000041011413137616400237120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * ts_cache.h * Tsearch related object caches. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tsearch/ts_cache.h * *------------------------------------------------------------------------- */ #ifndef TS_CACHE_H #define TS_CACHE_H #include "utils/guc.h" /* * All TS*CacheEntry structs must share this common header * (see InvalidateTSCacheCallBack) */ typedef struct TSAnyCacheEntry { Oid objId; bool isvalid; } TSAnyCacheEntry; typedef struct TSParserCacheEntry { /* prsId is the hash lookup key and MUST BE FIRST */ Oid prsId; /* OID of the parser */ bool isvalid; Oid startOid; Oid tokenOid; Oid endOid; Oid headlineOid; Oid lextypeOid; /* * Pre-set-up fmgr call of most needed parser's methods */ FmgrInfo prsstart; FmgrInfo prstoken; FmgrInfo prsend; FmgrInfo prsheadline; } TSParserCacheEntry; typedef struct TSDictionaryCacheEntry { /* dictId is the hash lookup key and MUST BE FIRST */ Oid dictId; bool isvalid; /* most frequent fmgr call */ Oid lexizeOid; FmgrInfo lexize; MemoryContext dictCtx; /* memory context to store private data */ void *dictData; } TSDictionaryCacheEntry; typedef struct { int len; Oid *dictIds; } ListDictionary; typedef struct { /* cfgId is the hash lookup key and MUST BE FIRST */ Oid cfgId; bool isvalid; Oid prsId; int lenmap; ListDictionary *map; } TSConfigCacheEntry; /* * GUC variable for current configuration */ extern char *TSCurrentConfig; extern TSParserCacheEntry *lookup_ts_parser_cache(Oid prsId); extern TSDictionaryCacheEntry *lookup_ts_dictionary_cache(Oid dictId); extern TSConfigCacheEntry *lookup_ts_config_cache(Oid cfgId); extern Oid getTSCurrentConfig(bool emitError); extern bool check_TSCurrentConfig(char **newval, void **extra, GucSource source); extern void assign_TSCurrentConfig(const char *newval, void *extra); #endif /* TS_CACHE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/000077500000000000000000000000001413137616400215035ustar00rootroot00000000000000libpg_query-13-2.1.0/src/postgres/include/utils/acl.h000066400000000000000000000313461413137616400224220ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * acl.h * Definition of (and support for) access control list data structures. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/acl.h * * NOTES * An ACL array is simply an array of AclItems, representing the union * of the privileges represented by the individual items. A zero-length * array represents "no privileges". * * The order of items in the array is important as client utilities (in * particular, pg_dump, though possibly other clients) expect to be able * to issue GRANTs in the ordering of the items in the array. The reason * this matters is that GRANTs WITH GRANT OPTION must be before any GRANTs * which depend on it. This happens naturally in the backend during * operations as we update ACLs in-place, new items are appended, and * existing entries are only removed if there's no dependency on them (no * GRANT can been based on it, or, if there was, those GRANTs are also * removed). * * For backward-compatibility purposes we have to allow null ACL entries * in system catalogs. A null ACL will be treated as meaning "default * protection" (i.e., whatever acldefault() returns). *------------------------------------------------------------------------- */ #ifndef ACL_H #define ACL_H #include "access/htup.h" #include "nodes/parsenodes.h" #include "parser/parse_node.h" #include "utils/snapshot.h" /* * typedef AclMode is declared in parsenodes.h, also the individual privilege * bit meanings are defined there */ #define ACL_ID_PUBLIC 0 /* placeholder for id in a PUBLIC acl item */ /* * AclItem * * Note: must be same size on all platforms, because the size is hardcoded * in the pg_type.h entry for aclitem. */ typedef struct AclItem { Oid ai_grantee; /* ID that this item grants privs to */ Oid ai_grantor; /* grantor of privs */ AclMode ai_privs; /* privilege bits */ } AclItem; /* * The upper 16 bits of the ai_privs field of an AclItem are the grant option * bits, and the lower 16 bits are the actual privileges. We use "rights" * to mean the combined grant option and privilege bits fields. */ #define ACLITEM_GET_PRIVS(item) ((item).ai_privs & 0xFFFF) #define ACLITEM_GET_GOPTIONS(item) (((item).ai_privs >> 16) & 0xFFFF) #define ACLITEM_GET_RIGHTS(item) ((item).ai_privs) #define ACL_GRANT_OPTION_FOR(privs) (((AclMode) (privs) & 0xFFFF) << 16) #define ACL_OPTION_TO_PRIVS(privs) (((AclMode) (privs) >> 16) & 0xFFFF) #define ACLITEM_SET_PRIVS(item,privs) \ ((item).ai_privs = ((item).ai_privs & ~((AclMode) 0xFFFF)) | \ ((AclMode) (privs) & 0xFFFF)) #define ACLITEM_SET_GOPTIONS(item,goptions) \ ((item).ai_privs = ((item).ai_privs & ~(((AclMode) 0xFFFF) << 16)) | \ (((AclMode) (goptions) & 0xFFFF) << 16)) #define ACLITEM_SET_RIGHTS(item,rights) \ ((item).ai_privs = (AclMode) (rights)) #define ACLITEM_SET_PRIVS_GOPTIONS(item,privs,goptions) \ ((item).ai_privs = ((AclMode) (privs) & 0xFFFF) | \ (((AclMode) (goptions) & 0xFFFF) << 16)) #define ACLITEM_ALL_PRIV_BITS ((AclMode) 0xFFFF) #define ACLITEM_ALL_GOPTION_BITS ((AclMode) 0xFFFF << 16) /* * Definitions for convenient access to Acl (array of AclItem). * These are standard PostgreSQL arrays, but are restricted to have one * dimension and no nulls. We also ignore the lower bound when reading, * and set it to one when writing. * * CAUTION: as of PostgreSQL 7.1, these arrays are toastable (just like all * other array types). Therefore, be careful to detoast them with the * macros provided, unless you know for certain that a particular array * can't have been toasted. */ /* * Acl a one-dimensional array of AclItem */ typedef struct ArrayType Acl; #define ACL_NUM(ACL) (ARR_DIMS(ACL)[0]) #define ACL_DAT(ACL) ((AclItem *) ARR_DATA_PTR(ACL)) #define ACL_N_SIZE(N) (ARR_OVERHEAD_NONULLS(1) + ((N) * sizeof(AclItem))) #define ACL_SIZE(ACL) ARR_SIZE(ACL) /* * fmgr macros for these types */ #define DatumGetAclItemP(X) ((AclItem *) DatumGetPointer(X)) #define PG_GETARG_ACLITEM_P(n) DatumGetAclItemP(PG_GETARG_DATUM(n)) #define PG_RETURN_ACLITEM_P(x) PG_RETURN_POINTER(x) #define DatumGetAclP(X) ((Acl *) PG_DETOAST_DATUM(X)) #define DatumGetAclPCopy(X) ((Acl *) PG_DETOAST_DATUM_COPY(X)) #define PG_GETARG_ACL_P(n) DatumGetAclP(PG_GETARG_DATUM(n)) #define PG_GETARG_ACL_P_COPY(n) DatumGetAclPCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_ACL_P(x) PG_RETURN_POINTER(x) /* * ACL modification opcodes for aclupdate */ #define ACL_MODECHG_ADD 1 #define ACL_MODECHG_DEL 2 #define ACL_MODECHG_EQL 3 /* * External representations of the privilege bits --- aclitemin/aclitemout * represent each possible privilege bit with a distinct 1-character code */ #define ACL_INSERT_CHR 'a' /* formerly known as "append" */ #define ACL_SELECT_CHR 'r' /* formerly known as "read" */ #define ACL_UPDATE_CHR 'w' /* formerly known as "write" */ #define ACL_DELETE_CHR 'd' #define ACL_TRUNCATE_CHR 'D' /* super-delete, as it were */ #define ACL_REFERENCES_CHR 'x' #define ACL_TRIGGER_CHR 't' #define ACL_EXECUTE_CHR 'X' #define ACL_USAGE_CHR 'U' #define ACL_CREATE_CHR 'C' #define ACL_CREATE_TEMP_CHR 'T' #define ACL_CONNECT_CHR 'c' /* string holding all privilege code chars, in order by bitmask position */ #define ACL_ALL_RIGHTS_STR "arwdDxtXUCTc" /* * Bitmasks defining "all rights" for each supported object type */ #define ACL_ALL_RIGHTS_COLUMN (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_REFERENCES) #define ACL_ALL_RIGHTS_RELATION (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_DELETE|ACL_TRUNCATE|ACL_REFERENCES|ACL_TRIGGER) #define ACL_ALL_RIGHTS_SEQUENCE (ACL_USAGE|ACL_SELECT|ACL_UPDATE) #define ACL_ALL_RIGHTS_DATABASE (ACL_CREATE|ACL_CREATE_TEMP|ACL_CONNECT) #define ACL_ALL_RIGHTS_FDW (ACL_USAGE) #define ACL_ALL_RIGHTS_FOREIGN_SERVER (ACL_USAGE) #define ACL_ALL_RIGHTS_FUNCTION (ACL_EXECUTE) #define ACL_ALL_RIGHTS_LANGUAGE (ACL_USAGE) #define ACL_ALL_RIGHTS_LARGEOBJECT (ACL_SELECT|ACL_UPDATE) #define ACL_ALL_RIGHTS_SCHEMA (ACL_USAGE|ACL_CREATE) #define ACL_ALL_RIGHTS_TABLESPACE (ACL_CREATE) #define ACL_ALL_RIGHTS_TYPE (ACL_USAGE) /* operation codes for pg_*_aclmask */ typedef enum { ACLMASK_ALL, /* normal case: compute all bits */ ACLMASK_ANY /* return when result is known nonzero */ } AclMaskHow; /* result codes for pg_*_aclcheck */ typedef enum { ACLCHECK_OK = 0, ACLCHECK_NO_PRIV, ACLCHECK_NOT_OWNER } AclResult; /* * routines used internally */ extern Acl *acldefault(ObjectType objtype, Oid ownerId); extern Acl *get_user_default_acl(ObjectType objtype, Oid ownerId, Oid nsp_oid); extern void recordDependencyOnNewAcl(Oid classId, Oid objectId, int32 objsubId, Oid ownerId, Acl *acl); extern Acl *aclupdate(const Acl *old_acl, const AclItem *mod_aip, int modechg, Oid ownerId, DropBehavior behavior); extern Acl *aclnewowner(const Acl *old_acl, Oid oldOwnerId, Oid newOwnerId); extern Acl *make_empty_acl(void); extern Acl *aclcopy(const Acl *orig_acl); extern Acl *aclconcat(const Acl *left_acl, const Acl *right_acl); extern Acl *aclmerge(const Acl *left_acl, const Acl *right_acl, Oid ownerId); extern void aclitemsort(Acl *acl); extern bool aclequal(const Acl *left_acl, const Acl *right_acl); extern AclMode aclmask(const Acl *acl, Oid roleid, Oid ownerId, AclMode mask, AclMaskHow how); extern int aclmembers(const Acl *acl, Oid **roleids); extern bool has_privs_of_role(Oid member, Oid role); extern bool is_member_of_role(Oid member, Oid role); extern bool is_member_of_role_nosuper(Oid member, Oid role); extern bool is_admin_of_role(Oid member, Oid role); extern void check_is_member_of_role(Oid member, Oid role); extern Oid get_role_oid(const char *rolename, bool missing_ok); extern Oid get_role_oid_or_public(const char *rolename); extern Oid get_rolespec_oid(const RoleSpec *role, bool missing_ok); extern void check_rolespec_name(const RoleSpec *role, const char *detail_msg); extern HeapTuple get_rolespec_tuple(const RoleSpec *role); extern char *get_rolespec_name(const RoleSpec *role); extern void select_best_grantor(Oid roleId, AclMode privileges, const Acl *acl, Oid ownerId, Oid *grantorId, AclMode *grantOptions); extern void initialize_acl(void); /* * prototypes for functions in aclchk.c */ extern void ExecuteGrantStmt(GrantStmt *stmt); extern void ExecAlterDefaultPrivilegesStmt(ParseState *pstate, AlterDefaultPrivilegesStmt *stmt); extern void RemoveRoleFromObjectACL(Oid roleid, Oid classid, Oid objid); extern void RemoveDefaultACLById(Oid defaclOid); extern AclMode pg_attribute_aclmask(Oid table_oid, AttrNumber attnum, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_class_aclmask(Oid table_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_database_aclmask(Oid db_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_proc_aclmask(Oid proc_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_language_aclmask(Oid lang_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_largeobject_aclmask_snapshot(Oid lobj_oid, Oid roleid, AclMode mask, AclMaskHow how, Snapshot snapshot); extern AclMode pg_namespace_aclmask(Oid nsp_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_tablespace_aclmask(Oid spc_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_foreign_data_wrapper_aclmask(Oid fdw_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_foreign_server_aclmask(Oid srv_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclMode pg_type_aclmask(Oid type_oid, Oid roleid, AclMode mask, AclMaskHow how); extern AclResult pg_attribute_aclcheck(Oid table_oid, AttrNumber attnum, Oid roleid, AclMode mode); extern AclResult pg_attribute_aclcheck_all(Oid table_oid, Oid roleid, AclMode mode, AclMaskHow how); extern AclResult pg_class_aclcheck(Oid table_oid, Oid roleid, AclMode mode); extern AclResult pg_database_aclcheck(Oid db_oid, Oid roleid, AclMode mode); extern AclResult pg_proc_aclcheck(Oid proc_oid, Oid roleid, AclMode mode); extern AclResult pg_language_aclcheck(Oid lang_oid, Oid roleid, AclMode mode); extern AclResult pg_largeobject_aclcheck_snapshot(Oid lang_oid, Oid roleid, AclMode mode, Snapshot snapshot); extern AclResult pg_namespace_aclcheck(Oid nsp_oid, Oid roleid, AclMode mode); extern AclResult pg_tablespace_aclcheck(Oid spc_oid, Oid roleid, AclMode mode); extern AclResult pg_foreign_data_wrapper_aclcheck(Oid fdw_oid, Oid roleid, AclMode mode); extern AclResult pg_foreign_server_aclcheck(Oid srv_oid, Oid roleid, AclMode mode); extern AclResult pg_type_aclcheck(Oid type_oid, Oid roleid, AclMode mode); extern void aclcheck_error(AclResult aclerr, ObjectType objtype, const char *objectname); extern void aclcheck_error_col(AclResult aclerr, ObjectType objtype, const char *objectname, const char *colname); extern void aclcheck_error_type(AclResult aclerr, Oid typeOid); extern void recordExtObjInitPriv(Oid objoid, Oid classoid); extern void removeExtObjInitPriv(Oid objoid, Oid classoid); /* ownercheck routines just return true (owner) or false (not) */ extern bool pg_class_ownercheck(Oid class_oid, Oid roleid); extern bool pg_type_ownercheck(Oid type_oid, Oid roleid); extern bool pg_oper_ownercheck(Oid oper_oid, Oid roleid); extern bool pg_proc_ownercheck(Oid proc_oid, Oid roleid); extern bool pg_language_ownercheck(Oid lan_oid, Oid roleid); extern bool pg_largeobject_ownercheck(Oid lobj_oid, Oid roleid); extern bool pg_namespace_ownercheck(Oid nsp_oid, Oid roleid); extern bool pg_tablespace_ownercheck(Oid spc_oid, Oid roleid); extern bool pg_opclass_ownercheck(Oid opc_oid, Oid roleid); extern bool pg_opfamily_ownercheck(Oid opf_oid, Oid roleid); extern bool pg_database_ownercheck(Oid db_oid, Oid roleid); extern bool pg_collation_ownercheck(Oid coll_oid, Oid roleid); extern bool pg_conversion_ownercheck(Oid conv_oid, Oid roleid); extern bool pg_ts_dict_ownercheck(Oid dict_oid, Oid roleid); extern bool pg_ts_config_ownercheck(Oid cfg_oid, Oid roleid); extern bool pg_foreign_data_wrapper_ownercheck(Oid srv_oid, Oid roleid); extern bool pg_foreign_server_ownercheck(Oid srv_oid, Oid roleid); extern bool pg_event_trigger_ownercheck(Oid et_oid, Oid roleid); extern bool pg_extension_ownercheck(Oid ext_oid, Oid roleid); extern bool pg_publication_ownercheck(Oid pub_oid, Oid roleid); extern bool pg_subscription_ownercheck(Oid sub_oid, Oid roleid); extern bool pg_statistics_object_ownercheck(Oid stat_oid, Oid roleid); extern bool has_createrole_privilege(Oid roleid); extern bool has_bypassrls_privilege(Oid roleid); #endif /* ACL_H */ libpg_query-13-2.1.0/src/postgres/include/utils/aclchk_internal.h000066400000000000000000000026531413137616400250030ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * aclchk_internal.h * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/aclchk_internal.h * *------------------------------------------------------------------------- */ #ifndef ACLCHK_INTERNAL_H #define ACLCHK_INTERNAL_H #include "nodes/parsenodes.h" #include "nodes/pg_list.h" /* * The information about one Grant/Revoke statement, in internal format: object * and grantees names have been turned into Oids, the privilege list is an * AclMode bitmask. If 'privileges' is ACL_NO_RIGHTS (the 0 value) and * all_privs is true, 'privileges' will be internally set to the right kind of * ACL_ALL_RIGHTS_*, depending on the object type (NB - this will modify the * InternalGrant struct!) * * Note: 'all_privs' and 'privileges' represent object-level privileges only. * There might also be column-level privilege specifications, which are * represented in col_privs (this is a list of untransformed AccessPriv nodes). * Column privileges are only valid for objtype OBJECT_TABLE. */ typedef struct { bool is_grant; ObjectType objtype; List *objects; bool all_privs; AclMode privileges; List *col_privs; List *grantees; bool grant_option; DropBehavior behavior; } InternalGrant; #endif /* ACLCHK_INTERNAL_H */ libpg_query-13-2.1.0/src/postgres/include/utils/array.h000066400000000000000000000426361413137616400230050ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * array.h * Declarations for Postgres arrays. * * A standard varlena array has the following internal structure: * - standard varlena header word * - number of dimensions of the array * - offset to stored data, or 0 if no nulls bitmap * - element type OID * - length of each array axis (C array of int) * - lower boundary of each dimension (C array of int) * - bitmap showing locations of nulls (OPTIONAL) * - whatever is the stored data * * The and arrays each have ndim elements. * * The may be omitted if the array contains no NULL elements. * If it is absent, the field is zero and the offset to the * stored data must be computed on-the-fly. If the bitmap is present, * is nonzero and is equal to the offset from the array start * to the first data element (including any alignment padding). The bitmap * follows the same conventions as tuple null bitmaps, ie, a 1 indicates * a non-null entry and the LSB of each bitmap byte is used first. * * The actual data starts on a MAXALIGN boundary. Individual items in the * array are aligned as specified by the array element type. They are * stored in row-major order (last subscript varies most rapidly). * * NOTE: it is important that array elements of toastable datatypes NOT be * toasted, since the tupletoaster won't know they are there. (We could * support compressed toasted items; only out-of-line items are dangerous. * However, it seems preferable to store such items uncompressed and allow * the toaster to compress the whole array as one input.) * * * The OIDVECTOR and INT2VECTOR datatypes are storage-compatible with * generic arrays, but they support only one-dimensional arrays with no * nulls (and no null bitmap). They don't support being toasted, either. * * There are also some "fixed-length array" datatypes, such as NAME and * POINT. These are simply a sequence of a fixed number of items each * of a fixed-length datatype, with no overhead; the item size must be * a multiple of its alignment requirement, because we do no padding. * We support subscripting on these types, but array_in() and array_out() * only work with varlena arrays. * * In addition, arrays are a major user of the "expanded object" TOAST * infrastructure. This allows a varlena array to be converted to a * separate representation that may include "deconstructed" Datum/isnull * arrays holding the elements. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/array.h * *------------------------------------------------------------------------- */ #ifndef ARRAY_H #define ARRAY_H #include "fmgr.h" #include "utils/expandeddatum.h" /* avoid including execnodes.h here */ struct ExprState; struct ExprContext; /* * Arrays are varlena objects, so must meet the varlena convention that * the first int32 of the object contains the total object size in bytes. * Be sure to use VARSIZE() and SET_VARSIZE() to access it, though! * * CAUTION: if you change the header for ordinary arrays you will also * need to change the headers for oidvector and int2vector! */ typedef struct ArrayType { int32 vl_len_; /* varlena header (do not touch directly!) */ int ndim; /* # of dimensions */ int32 dataoffset; /* offset to data, or 0 if no bitmap */ Oid elemtype; /* element type OID */ } ArrayType; /* * An expanded array is contained within a private memory context (as * all expanded objects must be) and has a control structure as below. * * The expanded array might contain a regular "flat" array if that was the * original input and we've not modified it significantly. Otherwise, the * contents are represented by Datum/isnull arrays plus dimensionality and * type information. We could also have both forms, if we've deconstructed * the original array for access purposes but not yet changed it. For pass- * by-reference element types, the Datums would point into the flat array in * this situation. Once we start modifying array elements, new pass-by-ref * elements are separately palloc'd within the memory context. */ #define EA_MAGIC 689375833 /* ID for debugging crosschecks */ typedef struct ExpandedArrayHeader { /* Standard header for expanded objects */ ExpandedObjectHeader hdr; /* Magic value identifying an expanded array (for debugging only) */ int ea_magic; /* Dimensionality info (always valid) */ int ndims; /* # of dimensions */ int *dims; /* array dimensions */ int *lbound; /* index lower bounds for each dimension */ /* Element type info (always valid) */ Oid element_type; /* element type OID */ int16 typlen; /* needed info about element datatype */ bool typbyval; char typalign; /* * If we have a Datum-array representation of the array, it's kept here; * else dvalues/dnulls are NULL. The dvalues and dnulls arrays are always * palloc'd within the object private context, but may change size from * time to time. For pass-by-ref element types, dvalues entries might * point either into the fstartptr..fendptr area, or to separately * palloc'd chunks. Elements should always be fully detoasted, as they * are in the standard flat representation. * * Even when dvalues is valid, dnulls can be NULL if there are no null * elements. */ Datum *dvalues; /* array of Datums */ bool *dnulls; /* array of is-null flags for Datums */ int dvalueslen; /* allocated length of above arrays */ int nelems; /* number of valid entries in above arrays */ /* * flat_size is the current space requirement for the flat equivalent of * the expanded array, if known; otherwise it's 0. We store this to make * consecutive calls of get_flat_size cheap. */ Size flat_size; /* * fvalue points to the flat representation if it is valid, else it is * NULL. If we have or ever had a flat representation then * fstartptr/fendptr point to the start and end+1 of its data area; this * is so that we can tell which Datum pointers point into the flat * representation rather than being pointers to separately palloc'd data. */ ArrayType *fvalue; /* must be a fully detoasted array */ char *fstartptr; /* start of its data area */ char *fendptr; /* end+1 of its data area */ } ExpandedArrayHeader; /* * Functions that can handle either a "flat" varlena array or an expanded * array use this union to work with their input. Don't refer to "flt"; * instead, cast to ArrayType. This struct nominally requires 8-byte * alignment on 64-bit, but it's often used for an ArrayType having 4-byte * alignment. UBSan complains about referencing "flt" in such cases. */ typedef union AnyArrayType { ArrayType flt; ExpandedArrayHeader xpn; } AnyArrayType; /* * working state for accumArrayResult() and friends * note that the input must be scalars (legal array elements) */ typedef struct ArrayBuildState { MemoryContext mcontext; /* where all the temp stuff is kept */ Datum *dvalues; /* array of accumulated Datums */ bool *dnulls; /* array of is-null flags for Datums */ int alen; /* allocated length of above arrays */ int nelems; /* number of valid entries in above arrays */ Oid element_type; /* data type of the Datums */ int16 typlen; /* needed info about datatype */ bool typbyval; char typalign; bool private_cxt; /* use private memory context */ } ArrayBuildState; /* * working state for accumArrayResultArr() and friends * note that the input must be arrays, and the same array type is returned */ typedef struct ArrayBuildStateArr { MemoryContext mcontext; /* where all the temp stuff is kept */ char *data; /* accumulated data */ bits8 *nullbitmap; /* bitmap of is-null flags, or NULL if none */ int abytes; /* allocated length of "data" */ int nbytes; /* number of bytes used so far */ int aitems; /* allocated length of bitmap (in elements) */ int nitems; /* total number of elements in result */ int ndims; /* current dimensions of result */ int dims[MAXDIM]; int lbs[MAXDIM]; Oid array_type; /* data type of the arrays */ Oid element_type; /* data type of the array elements */ bool private_cxt; /* use private memory context */ } ArrayBuildStateArr; /* * working state for accumArrayResultAny() and friends * these functions handle both cases */ typedef struct ArrayBuildStateAny { /* Exactly one of these is not NULL: */ ArrayBuildState *scalarstate; ArrayBuildStateArr *arraystate; } ArrayBuildStateAny; /* * structure to cache type metadata needed for array manipulation */ typedef struct ArrayMetaState { Oid element_type; int16 typlen; bool typbyval; char typalign; char typdelim; Oid typioparam; Oid typiofunc; FmgrInfo proc; } ArrayMetaState; /* * private state needed by array_map (here because caller must provide it) */ typedef struct ArrayMapState { ArrayMetaState inp_extra; ArrayMetaState ret_extra; } ArrayMapState; /* ArrayIteratorData is private in arrayfuncs.c */ typedef struct ArrayIteratorData *ArrayIterator; /* fmgr macros for regular varlena array objects */ #define DatumGetArrayTypeP(X) ((ArrayType *) PG_DETOAST_DATUM(X)) #define DatumGetArrayTypePCopy(X) ((ArrayType *) PG_DETOAST_DATUM_COPY(X)) #define PG_GETARG_ARRAYTYPE_P(n) DatumGetArrayTypeP(PG_GETARG_DATUM(n)) #define PG_GETARG_ARRAYTYPE_P_COPY(n) DatumGetArrayTypePCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_ARRAYTYPE_P(x) PG_RETURN_POINTER(x) /* fmgr macros for expanded array objects */ #define PG_GETARG_EXPANDED_ARRAY(n) DatumGetExpandedArray(PG_GETARG_DATUM(n)) #define PG_GETARG_EXPANDED_ARRAYX(n, metacache) \ DatumGetExpandedArrayX(PG_GETARG_DATUM(n), metacache) #define PG_RETURN_EXPANDED_ARRAY(x) PG_RETURN_DATUM(EOHPGetRWDatum(&(x)->hdr)) /* fmgr macros for AnyArrayType (ie, get either varlena or expanded form) */ #define PG_GETARG_ANY_ARRAY_P(n) DatumGetAnyArrayP(PG_GETARG_DATUM(n)) /* * Access macros for varlena array header fields. * * ARR_DIMS returns a pointer to an array of array dimensions (number of * elements along the various array axes). * * ARR_LBOUND returns a pointer to an array of array lower bounds. * * That is: if the third axis of an array has elements 5 through 8, then * ARR_DIMS(a)[2] == 4 and ARR_LBOUND(a)[2] == 5. * * Unlike C, the default lower bound is 1. */ #define ARR_SIZE(a) VARSIZE(a) #define ARR_NDIM(a) ((a)->ndim) #define ARR_HASNULL(a) ((a)->dataoffset != 0) #define ARR_ELEMTYPE(a) ((a)->elemtype) #define ARR_DIMS(a) \ ((int *) (((char *) (a)) + sizeof(ArrayType))) #define ARR_LBOUND(a) \ ((int *) (((char *) (a)) + sizeof(ArrayType) + \ sizeof(int) * ARR_NDIM(a))) #define ARR_NULLBITMAP(a) \ (ARR_HASNULL(a) ? \ (bits8 *) (((char *) (a)) + sizeof(ArrayType) + \ 2 * sizeof(int) * ARR_NDIM(a)) \ : (bits8 *) NULL) /* * The total array header size (in bytes) for an array with the specified * number of dimensions and total number of items. */ #define ARR_OVERHEAD_NONULLS(ndims) \ MAXALIGN(sizeof(ArrayType) + 2 * sizeof(int) * (ndims)) #define ARR_OVERHEAD_WITHNULLS(ndims, nitems) \ MAXALIGN(sizeof(ArrayType) + 2 * sizeof(int) * (ndims) + \ ((nitems) + 7) / 8) #define ARR_DATA_OFFSET(a) \ (ARR_HASNULL(a) ? (a)->dataoffset : ARR_OVERHEAD_NONULLS(ARR_NDIM(a))) /* * Returns a pointer to the actual array data. */ #define ARR_DATA_PTR(a) \ (((char *) (a)) + ARR_DATA_OFFSET(a)) /* * Macros for working with AnyArrayType inputs. Beware multiple references! */ #define AARR_NDIM(a) \ (VARATT_IS_EXPANDED_HEADER(a) ? \ (a)->xpn.ndims : ARR_NDIM((ArrayType *) (a))) #define AARR_HASNULL(a) \ (VARATT_IS_EXPANDED_HEADER(a) ? \ ((a)->xpn.dvalues != NULL ? (a)->xpn.dnulls != NULL : ARR_HASNULL((a)->xpn.fvalue)) : \ ARR_HASNULL((ArrayType *) (a))) #define AARR_ELEMTYPE(a) \ (VARATT_IS_EXPANDED_HEADER(a) ? \ (a)->xpn.element_type : ARR_ELEMTYPE((ArrayType *) (a))) #define AARR_DIMS(a) \ (VARATT_IS_EXPANDED_HEADER(a) ? \ (a)->xpn.dims : ARR_DIMS((ArrayType *) (a))) #define AARR_LBOUND(a) \ (VARATT_IS_EXPANDED_HEADER(a) ? \ (a)->xpn.lbound : ARR_LBOUND((ArrayType *) (a))) /* * GUC parameter */ extern bool Array_nulls; /* * prototypes for functions defined in arrayfuncs.c */ extern void CopyArrayEls(ArrayType *array, Datum *values, bool *nulls, int nitems, int typlen, bool typbyval, char typalign, bool freedata); extern Datum array_get_element(Datum arraydatum, int nSubscripts, int *indx, int arraytyplen, int elmlen, bool elmbyval, char elmalign, bool *isNull); extern Datum array_set_element(Datum arraydatum, int nSubscripts, int *indx, Datum dataValue, bool isNull, int arraytyplen, int elmlen, bool elmbyval, char elmalign); extern Datum array_get_slice(Datum arraydatum, int nSubscripts, int *upperIndx, int *lowerIndx, bool *upperProvided, bool *lowerProvided, int arraytyplen, int elmlen, bool elmbyval, char elmalign); extern Datum array_set_slice(Datum arraydatum, int nSubscripts, int *upperIndx, int *lowerIndx, bool *upperProvided, bool *lowerProvided, Datum srcArrayDatum, bool isNull, int arraytyplen, int elmlen, bool elmbyval, char elmalign); extern Datum array_ref(ArrayType *array, int nSubscripts, int *indx, int arraytyplen, int elmlen, bool elmbyval, char elmalign, bool *isNull); extern ArrayType *array_set(ArrayType *array, int nSubscripts, int *indx, Datum dataValue, bool isNull, int arraytyplen, int elmlen, bool elmbyval, char elmalign); extern Datum array_map(Datum arrayd, struct ExprState *exprstate, struct ExprContext *econtext, Oid retType, ArrayMapState *amstate); extern void array_bitmap_copy(bits8 *destbitmap, int destoffset, const bits8 *srcbitmap, int srcoffset, int nitems); extern ArrayType *construct_array(Datum *elems, int nelems, Oid elmtype, int elmlen, bool elmbyval, char elmalign); extern ArrayType *construct_md_array(Datum *elems, bool *nulls, int ndims, int *dims, int *lbs, Oid elmtype, int elmlen, bool elmbyval, char elmalign); extern ArrayType *construct_empty_array(Oid elmtype); extern ExpandedArrayHeader *construct_empty_expanded_array(Oid element_type, MemoryContext parentcontext, ArrayMetaState *metacache); extern void deconstruct_array(ArrayType *array, Oid elmtype, int elmlen, bool elmbyval, char elmalign, Datum **elemsp, bool **nullsp, int *nelemsp); extern bool array_contains_nulls(ArrayType *array); extern ArrayBuildState *initArrayResult(Oid element_type, MemoryContext rcontext, bool subcontext); extern ArrayBuildState *accumArrayResult(ArrayBuildState *astate, Datum dvalue, bool disnull, Oid element_type, MemoryContext rcontext); extern Datum makeArrayResult(ArrayBuildState *astate, MemoryContext rcontext); extern Datum makeMdArrayResult(ArrayBuildState *astate, int ndims, int *dims, int *lbs, MemoryContext rcontext, bool release); extern ArrayBuildStateArr *initArrayResultArr(Oid array_type, Oid element_type, MemoryContext rcontext, bool subcontext); extern ArrayBuildStateArr *accumArrayResultArr(ArrayBuildStateArr *astate, Datum dvalue, bool disnull, Oid array_type, MemoryContext rcontext); extern Datum makeArrayResultArr(ArrayBuildStateArr *astate, MemoryContext rcontext, bool release); extern ArrayBuildStateAny *initArrayResultAny(Oid input_type, MemoryContext rcontext, bool subcontext); extern ArrayBuildStateAny *accumArrayResultAny(ArrayBuildStateAny *astate, Datum dvalue, bool disnull, Oid input_type, MemoryContext rcontext); extern Datum makeArrayResultAny(ArrayBuildStateAny *astate, MemoryContext rcontext, bool release); extern ArrayIterator array_create_iterator(ArrayType *arr, int slice_ndim, ArrayMetaState *mstate); extern bool array_iterate(ArrayIterator iterator, Datum *value, bool *isnull); extern void array_free_iterator(ArrayIterator iterator); /* * prototypes for functions defined in arrayutils.c */ extern int ArrayGetOffset(int n, const int *dim, const int *lb, const int *indx); extern int ArrayGetOffset0(int n, const int *tup, const int *scale); extern int ArrayGetNItems(int ndim, const int *dims); extern void ArrayCheckBounds(int ndim, const int *dims, const int *lb); extern void mda_get_range(int n, int *span, const int *st, const int *endp); extern void mda_get_prod(int n, const int *range, int *prod); extern void mda_get_offset_values(int n, int *dist, const int *prod, const int *span); extern int mda_next_tuple(int n, int *curr, const int *span); extern int32 *ArrayGetIntegerTypmods(ArrayType *arr, int *n); /* * prototypes for functions defined in array_expanded.c */ extern Datum expand_array(Datum arraydatum, MemoryContext parentcontext, ArrayMetaState *metacache); extern ExpandedArrayHeader *DatumGetExpandedArray(Datum d); extern ExpandedArrayHeader *DatumGetExpandedArrayX(Datum d, ArrayMetaState *metacache); extern AnyArrayType *DatumGetAnyArrayP(Datum d); extern void deconstruct_expanded_array(ExpandedArrayHeader *eah); #endif /* ARRAY_H */ libpg_query-13-2.1.0/src/postgres/include/utils/builtins.h000066400000000000000000000104531413137616400235100ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * builtins.h * Declarations for operations on built-in types. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/builtins.h * *------------------------------------------------------------------------- */ #ifndef BUILTINS_H #define BUILTINS_H #include "fmgr.h" #include "nodes/nodes.h" #include "utils/fmgrprotos.h" /* Sign + the most decimal digits an 8-byte number could have */ #define MAXINT8LEN 20 /* bool.c */ extern bool parse_bool(const char *value, bool *result); extern bool parse_bool_with_len(const char *value, size_t len, bool *result); /* domains.c */ extern void domain_check(Datum value, bool isnull, Oid domainType, void **extra, MemoryContext mcxt); extern int errdatatype(Oid datatypeOid); extern int errdomainconstraint(Oid datatypeOid, const char *conname); /* encode.c */ extern uint64 hex_encode(const char *src, size_t len, char *dst); extern uint64 hex_decode(const char *src, size_t len, char *dst); /* int.c */ extern int2vector *buildint2vector(const int16 *int2s, int n); /* name.c */ extern int namecpy(Name n1, const NameData *n2); extern int namestrcpy(Name name, const char *str); extern int namestrcmp(Name name, const char *str); /* numutils.c */ extern int32 pg_atoi(const char *s, int size, int c); extern int16 pg_strtoint16(const char *s); extern int32 pg_strtoint32(const char *s); extern void pg_itoa(int16 i, char *a); extern int pg_ultoa_n(uint32 l, char *a); extern int pg_ulltoa_n(uint64 l, char *a); extern void pg_ltoa(int32 l, char *a); extern void pg_lltoa(int64 ll, char *a); extern char *pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth); extern char *pg_ultostr(char *str, uint32 value); extern uint64 pg_strtouint64(const char *str, char **endptr, int base); /* oid.c */ extern oidvector *buildoidvector(const Oid *oids, int n); extern Oid oidparse(Node *node); extern int oid_cmp(const void *p1, const void *p2); /* regexp.c */ extern char *regexp_fixed_prefix(text *text_re, bool case_insensitive, Oid collation, bool *exact); /* ruleutils.c */ extern __thread bool quote_all_identifiers; extern const char *quote_identifier(const char *ident); extern char *quote_qualified_identifier(const char *qualifier, const char *ident); extern void generate_operator_clause(fmStringInfo buf, const char *leftop, Oid leftoptype, Oid opoid, const char *rightop, Oid rightoptype); /* varchar.c */ extern int bpchartruelen(char *s, int len); /* popular functions from varlena.c */ extern text *cstring_to_text(const char *s); extern text *cstring_to_text_with_len(const char *s, int len); extern char *text_to_cstring(const text *t); extern void text_to_cstring_buffer(const text *src, char *dst, size_t dst_len); #define CStringGetTextDatum(s) PointerGetDatum(cstring_to_text(s)) #define TextDatumGetCString(d) text_to_cstring((text *) DatumGetPointer(d)) /* xid.c */ extern int xidComparator(const void *arg1, const void *arg2); /* inet_cidr_ntop.c */ extern char *pg_inet_cidr_ntop(int af, const void *src, int bits, char *dst, size_t size); /* inet_net_pton.c */ extern int pg_inet_net_pton(int af, const char *src, void *dst, size_t size); /* network.c */ extern double convert_network_to_scalar(Datum value, Oid typid, bool *failure); extern Datum network_scan_first(Datum in); extern Datum network_scan_last(Datum in); extern void clean_ipv6_addr(int addr_family, char *addr); /* numeric.c */ extern Datum numeric_float8_no_overflow(PG_FUNCTION_ARGS); /* format_type.c */ /* Control flags for format_type_extended */ #define FORMAT_TYPE_TYPEMOD_GIVEN 0x01 /* typemod defined by caller */ #define FORMAT_TYPE_ALLOW_INVALID 0x02 /* allow invalid types */ #define FORMAT_TYPE_FORCE_QUALIFY 0x04 /* force qualification of type */ extern char *format_type_extended(Oid type_oid, int32 typemod, bits16 flags); extern char *format_type_be(Oid type_oid); extern char *format_type_be_qualified(Oid type_oid); extern char *format_type_with_typemod(Oid type_oid, int32 typemod); extern int32 type_maximum_size(Oid type_oid, int32 typemod); /* quote.c */ extern char *quote_literal_cstr(const char *rawstr); #endif /* BUILTINS_H */ libpg_query-13-2.1.0/src/postgres/include/utils/bytea.h000066400000000000000000000011451413137616400227610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * bytea.h * Declarations for BYTEA data type support. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/bytea.h * *------------------------------------------------------------------------- */ #ifndef BYTEA_H #define BYTEA_H typedef enum { BYTEA_OUTPUT_ESCAPE, BYTEA_OUTPUT_HEX } ByteaOutputType; extern int bytea_output; /* ByteaOutputType, but int for GUC enum */ #endif /* BYTEA_H */ libpg_query-13-2.1.0/src/postgres/include/utils/catcache.h000066400000000000000000000206451413137616400234160ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * catcache.h * Low-level catalog cache definitions. * * NOTE: every catalog cache must have a corresponding unique index on * the system table that it caches --- ie, the index must match the keys * used to do lookups in this cache. All cache fetches are done with * indexscans (under normal conditions). The index should be unique to * guarantee that there can only be one matching row for a key combination. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/catcache.h * *------------------------------------------------------------------------- */ #ifndef CATCACHE_H #define CATCACHE_H #include "access/htup.h" #include "access/skey.h" #include "lib/ilist.h" #include "utils/relcache.h" /* * struct catctup: individual tuple in the cache. * struct catclist: list of tuples matching a partial key. * struct catcache: information for managing a cache. * struct catcacheheader: information for managing all the caches. */ #define CATCACHE_MAXKEYS 4 /* function computing a datum's hash */ typedef uint32 (*CCHashFN) (Datum datum); /* function computing equality of two datums */ typedef bool (*CCFastEqualFN) (Datum a, Datum b); typedef struct catcache { int id; /* cache identifier --- see syscache.h */ int cc_nbuckets; /* # of hash buckets in this cache */ TupleDesc cc_tupdesc; /* tuple descriptor (copied from reldesc) */ dlist_head *cc_bucket; /* hash buckets */ CCHashFN cc_hashfunc[CATCACHE_MAXKEYS]; /* hash function for each key */ CCFastEqualFN cc_fastequal[CATCACHE_MAXKEYS]; /* fast equal function for * each key */ int cc_keyno[CATCACHE_MAXKEYS]; /* AttrNumber of each key */ dlist_head cc_lists; /* list of CatCList structs */ int cc_ntup; /* # of tuples currently in this cache */ int cc_nkeys; /* # of keys (1..CATCACHE_MAXKEYS) */ const char *cc_relname; /* name of relation the tuples come from */ Oid cc_reloid; /* OID of relation the tuples come from */ Oid cc_indexoid; /* OID of index matching cache keys */ bool cc_relisshared; /* is relation shared across databases? */ slist_node cc_next; /* list link */ ScanKeyData cc_skey[CATCACHE_MAXKEYS]; /* precomputed key info for heap * scans */ /* * Keep these at the end, so that compiling catcache.c with CATCACHE_STATS * doesn't break ABI for other modules */ #ifdef CATCACHE_STATS long cc_searches; /* total # searches against this cache */ long cc_hits; /* # of matches against existing entry */ long cc_neg_hits; /* # of matches against negative entry */ long cc_newloads; /* # of successful loads of new entry */ /* * cc_searches - (cc_hits + cc_neg_hits + cc_newloads) is number of failed * searches, each of which will result in loading a negative entry */ long cc_invals; /* # of entries invalidated from cache */ long cc_lsearches; /* total # list-searches */ long cc_lhits; /* # of matches against existing lists */ #endif } CatCache; typedef struct catctup { int ct_magic; /* for identifying CatCTup entries */ #define CT_MAGIC 0x57261502 uint32 hash_value; /* hash value for this tuple's keys */ /* * Lookup keys for the entry. By-reference datums point into the tuple for * positive cache entries, and are separately allocated for negative ones. */ Datum keys[CATCACHE_MAXKEYS]; /* * Each tuple in a cache is a member of a dlist that stores the elements * of its hash bucket. We keep each dlist in LRU order to speed repeated * lookups. */ dlist_node cache_elem; /* list member of per-bucket list */ /* * A tuple marked "dead" must not be returned by subsequent searches. * However, it won't be physically deleted from the cache until its * refcount goes to zero. (If it's a member of a CatCList, the list's * refcount must go to zero, too; also, remember to mark the list dead at * the same time the tuple is marked.) * * A negative cache entry is an assertion that there is no tuple matching * a particular key. This is just as useful as a normal entry so far as * avoiding catalog searches is concerned. Management of positive and * negative entries is identical. */ int refcount; /* number of active references */ bool dead; /* dead but not yet removed? */ bool negative; /* negative cache entry? */ HeapTupleData tuple; /* tuple management header */ /* * The tuple may also be a member of at most one CatCList. (If a single * catcache is list-searched with varying numbers of keys, we may have to * make multiple entries for the same tuple because of this restriction. * Currently, that's not expected to be common, so we accept the potential * inefficiency.) */ struct catclist *c_list; /* containing CatCList, or NULL if none */ CatCache *my_cache; /* link to owning catcache */ /* properly aligned tuple data follows, unless a negative entry */ } CatCTup; /* * A CatCList describes the result of a partial search, ie, a search using * only the first K key columns of an N-key cache. We store the keys used * into the keys attribute to represent the stored key set. The CatCList * object contains links to cache entries for all the table rows satisfying * the partial key. (Note: none of these will be negative cache entries.) * * A CatCList is only a member of a per-cache list; we do not currently * divide them into hash buckets. * * A list marked "dead" must not be returned by subsequent searches. * However, it won't be physically deleted from the cache until its * refcount goes to zero. (A list should be marked dead if any of its * member entries are dead.) * * If "ordered" is true then the member tuples appear in the order of the * cache's underlying index. This will be true in normal operation, but * might not be true during bootstrap or recovery operations. (namespace.c * is able to save some cycles when it is true.) */ typedef struct catclist { int cl_magic; /* for identifying CatCList entries */ #define CL_MAGIC 0x52765103 uint32 hash_value; /* hash value for lookup keys */ dlist_node cache_elem; /* list member of per-catcache list */ /* * Lookup keys for the entry, with the first nkeys elements being valid. * All by-reference are separately allocated. */ Datum keys[CATCACHE_MAXKEYS]; int refcount; /* number of active references */ bool dead; /* dead but not yet removed? */ bool ordered; /* members listed in index order? */ short nkeys; /* number of lookup keys specified */ int n_members; /* number of member tuples */ CatCache *my_cache; /* link to owning catcache */ CatCTup *members[FLEXIBLE_ARRAY_MEMBER]; /* members */ } CatCList; typedef struct catcacheheader { slist_head ch_caches; /* head of list of CatCache structs */ int ch_ntup; /* # of tuples in all caches */ } CatCacheHeader; /* this extern duplicates utils/memutils.h... */ extern PGDLLIMPORT MemoryContext CacheMemoryContext; extern void CreateCacheMemoryContext(void); extern CatCache *InitCatCache(int id, Oid reloid, Oid indexoid, int nkeys, const int *key, int nbuckets); extern void InitCatCachePhase2(CatCache *cache, bool touch_index); extern HeapTuple SearchCatCache(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4); extern HeapTuple SearchCatCache1(CatCache *cache, Datum v1); extern HeapTuple SearchCatCache2(CatCache *cache, Datum v1, Datum v2); extern HeapTuple SearchCatCache3(CatCache *cache, Datum v1, Datum v2, Datum v3); extern HeapTuple SearchCatCache4(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4); extern void ReleaseCatCache(HeapTuple tuple); extern uint32 GetCatCacheHashValue(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4); extern CatCList *SearchCatCacheList(CatCache *cache, int nkeys, Datum v1, Datum v2, Datum v3); extern void ReleaseCatCacheList(CatCList *list); extern void ResetCatalogCaches(void); extern void CatalogCacheFlushCatalog(Oid catId); extern void CatCacheInvalidate(CatCache *cache, uint32 hashValue); extern void PrepareToInvalidateCacheTuple(Relation relation, HeapTuple tuple, HeapTuple newtuple, void (*function) (int, uint32, Oid)); extern void PrintCatCacheLeakWarning(HeapTuple tuple); extern void PrintCatCacheListLeakWarning(CatCList *list); #endif /* CATCACHE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/date.h000066400000000000000000000062561413137616400226020ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * date.h * Definitions for the SQL "date" and "time" types. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/date.h * *------------------------------------------------------------------------- */ #ifndef DATE_H #define DATE_H #include #include "datatype/timestamp.h" #include "fmgr.h" #include "pgtime.h" typedef int32 DateADT; typedef int64 TimeADT; typedef struct { TimeADT time; /* all time units other than months and years */ int32 zone; /* numeric time zone, in seconds */ } TimeTzADT; /* * Infinity and minus infinity must be the max and min values of DateADT. */ #define DATEVAL_NOBEGIN ((DateADT) PG_INT32_MIN) #define DATEVAL_NOEND ((DateADT) PG_INT32_MAX) #define DATE_NOBEGIN(j) ((j) = DATEVAL_NOBEGIN) #define DATE_IS_NOBEGIN(j) ((j) == DATEVAL_NOBEGIN) #define DATE_NOEND(j) ((j) = DATEVAL_NOEND) #define DATE_IS_NOEND(j) ((j) == DATEVAL_NOEND) #define DATE_NOT_FINITE(j) (DATE_IS_NOBEGIN(j) || DATE_IS_NOEND(j)) /* * Macros for fmgr-callable functions. * * For TimeADT, we make use of the same support routines as for int64. * Therefore TimeADT is pass-by-reference if and only if int64 is! */ #define MAX_TIME_PRECISION 6 #define DatumGetDateADT(X) ((DateADT) DatumGetInt32(X)) #define DatumGetTimeADT(X) ((TimeADT) DatumGetInt64(X)) #define DatumGetTimeTzADTP(X) ((TimeTzADT *) DatumGetPointer(X)) #define DateADTGetDatum(X) Int32GetDatum(X) #define TimeADTGetDatum(X) Int64GetDatum(X) #define TimeTzADTPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_DATEADT(n) DatumGetDateADT(PG_GETARG_DATUM(n)) #define PG_GETARG_TIMEADT(n) DatumGetTimeADT(PG_GETARG_DATUM(n)) #define PG_GETARG_TIMETZADT_P(n) DatumGetTimeTzADTP(PG_GETARG_DATUM(n)) #define PG_RETURN_DATEADT(x) return DateADTGetDatum(x) #define PG_RETURN_TIMEADT(x) return TimeADTGetDatum(x) #define PG_RETURN_TIMETZADT_P(x) return TimeTzADTPGetDatum(x) /* date.c */ extern int32 anytime_typmod_check(bool istz, int32 typmod); extern double date2timestamp_no_overflow(DateADT dateVal); extern Timestamp date2timestamp_opt_overflow(DateADT dateVal, int *overflow); extern TimestampTz date2timestamptz_opt_overflow(DateADT dateVal, int *overflow); extern int32 date_cmp_timestamp_internal(DateADT dateVal, Timestamp dt2); extern int32 date_cmp_timestamptz_internal(DateADT dateVal, TimestampTz dt2); extern void EncodeSpecialDate(DateADT dt, char *str); extern DateADT GetSQLCurrentDate(void); extern TimeTzADT *GetSQLCurrentTime(int32 typmod); extern TimeADT GetSQLLocalTime(int32 typmod); extern int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec); extern int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, int *tzp); extern int tm2time(struct pg_tm *tm, fsec_t fsec, TimeADT *result); extern int tm2timetz(struct pg_tm *tm, fsec_t fsec, int tz, TimeTzADT *result); extern bool time_overflows(int hour, int min, int sec, fsec_t fsec); extern bool float_time_overflows(int hour, int min, double sec); extern void AdjustTimeForTypmod(TimeADT *time, int32 typmod); #endif /* DATE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/datetime.h000066400000000000000000000246741413137616400234650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * datetime.h * Definitions for date/time support code. * The support code is shared with other date data types, * including date, and time. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/datetime.h * *------------------------------------------------------------------------- */ #ifndef DATETIME_H #define DATETIME_H #include "nodes/nodes.h" #include "utils/timestamp.h" /* this struct is declared in utils/tzparser.h: */ struct tzEntry; /* ---------------------------------------------------------------- * time types + support macros * * String definitions for standard time quantities. * * These strings are the defaults used to form output time strings. * Other alternative forms are hardcoded into token tables in datetime.c. * ---------------------------------------------------------------- */ #define DAGO "ago" #define DCURRENT "current" #define EPOCH "epoch" #define INVALID "invalid" #define EARLY "-infinity" #define LATE "infinity" #define NOW "now" #define TODAY "today" #define TOMORROW "tomorrow" #define YESTERDAY "yesterday" #define ZULU "zulu" #define DMICROSEC "usecond" #define DMILLISEC "msecond" #define DSECOND "second" #define DMINUTE "minute" #define DHOUR "hour" #define DDAY "day" #define DWEEK "week" #define DMONTH "month" #define DQUARTER "quarter" #define DYEAR "year" #define DDECADE "decade" #define DCENTURY "century" #define DMILLENNIUM "millennium" #define DA_D "ad" #define DB_C "bc" #define DTIMEZONE "timezone" /* * Fundamental time field definitions for parsing. * * Meridian: am, pm, or 24-hour style. * Millennium: ad, bc */ #define AM 0 #define PM 1 #define HR24 2 #define AD 0 #define BC 1 /* * Field types for time decoding. * * Can't have more of these than there are bits in an unsigned int * since these are turned into bit masks during parsing and decoding. * * Furthermore, the values for YEAR, MONTH, DAY, HOUR, MINUTE, SECOND * must be in the range 0..14 so that the associated bitmasks can fit * into the left half of an INTERVAL's typmod value. Since those bits * are stored in typmods, you can't change them without initdb! */ #define RESERV 0 #define MONTH 1 #define YEAR 2 #define DAY 3 #define JULIAN 4 #define TZ 5 /* fixed-offset timezone abbreviation */ #define DTZ 6 /* fixed-offset timezone abbrev, DST */ #define DYNTZ 7 /* dynamic timezone abbreviation */ #define IGNORE_DTF 8 #define AMPM 9 #define HOUR 10 #define MINUTE 11 #define SECOND 12 #define MILLISECOND 13 #define MICROSECOND 14 #define DOY 15 #define DOW 16 #define UNITS 17 #define ADBC 18 /* these are only for relative dates */ #define AGO 19 #define ABS_BEFORE 20 #define ABS_AFTER 21 /* generic fields to help with parsing */ #define ISODATE 22 #define ISOTIME 23 /* these are only for parsing intervals */ #define WEEK 24 #define DECADE 25 #define CENTURY 26 #define MILLENNIUM 27 /* hack for parsing two-word timezone specs "MET DST" etc */ #define DTZMOD 28 /* "DST" as a separate word */ /* reserved for unrecognized string values */ #define UNKNOWN_FIELD 31 /* * Token field definitions for time parsing and decoding. * * Some field type codes (see above) use these as the "value" in datetktbl[]. * These are also used for bit masks in DecodeDateTime and friends * so actually restrict them to within [0,31] for now. * - thomas 97/06/19 * Not all of these fields are used for masks in DecodeDateTime * so allow some larger than 31. - thomas 1997-11-17 * * Caution: there are undocumented assumptions in the code that most of these * values are not equal to IGNORE_DTF nor RESERV. Be very careful when * renumbering values in either of these apparently-independent lists :-( */ #define DTK_NUMBER 0 #define DTK_STRING 1 #define DTK_DATE 2 #define DTK_TIME 3 #define DTK_TZ 4 #define DTK_AGO 5 #define DTK_SPECIAL 6 #define DTK_EARLY 9 #define DTK_LATE 10 #define DTK_EPOCH 11 #define DTK_NOW 12 #define DTK_YESTERDAY 13 #define DTK_TODAY 14 #define DTK_TOMORROW 15 #define DTK_ZULU 16 #define DTK_DELTA 17 #define DTK_SECOND 18 #define DTK_MINUTE 19 #define DTK_HOUR 20 #define DTK_DAY 21 #define DTK_WEEK 22 #define DTK_MONTH 23 #define DTK_QUARTER 24 #define DTK_YEAR 25 #define DTK_DECADE 26 #define DTK_CENTURY 27 #define DTK_MILLENNIUM 28 #define DTK_MILLISEC 29 #define DTK_MICROSEC 30 #define DTK_JULIAN 31 #define DTK_DOW 32 #define DTK_DOY 33 #define DTK_TZ_HOUR 34 #define DTK_TZ_MINUTE 35 #define DTK_ISOYEAR 36 #define DTK_ISODOW 37 /* * Bit mask definitions for time parsing. */ #define DTK_M(t) (0x01 << (t)) /* Convenience: a second, plus any fractional component */ #define DTK_ALL_SECS_M (DTK_M(SECOND) | DTK_M(MILLISECOND) | DTK_M(MICROSECOND)) #define DTK_DATE_M (DTK_M(YEAR) | DTK_M(MONTH) | DTK_M(DAY)) #define DTK_TIME_M (DTK_M(HOUR) | DTK_M(MINUTE) | DTK_ALL_SECS_M) /* * Working buffer size for input and output of interval, timestamp, etc. * Inputs that need more working space will be rejected early. Longer outputs * will overrun buffers, so this must suffice for all possible output. As of * this writing, interval_out() needs the most space at ~90 bytes. */ #define MAXDATELEN 128 /* maximum possible number of fields in a date string */ #define MAXDATEFIELDS 25 /* only this many chars are stored in datetktbl */ #define TOKMAXLEN 10 /* keep this struct small; it gets used a lot */ typedef struct { char token[TOKMAXLEN + 1]; /* always NUL-terminated */ char type; /* see field type codes above */ int32 value; /* meaning depends on type */ } datetkn; /* one of its uses is in tables of time zone abbreviations */ typedef struct TimeZoneAbbrevTable { Size tblsize; /* size in bytes of TimeZoneAbbrevTable */ int numabbrevs; /* number of entries in abbrevs[] array */ datetkn abbrevs[FLEXIBLE_ARRAY_MEMBER]; /* DynamicZoneAbbrev(s) may follow the abbrevs[] array */ } TimeZoneAbbrevTable; /* auxiliary data for a dynamic time zone abbreviation (non-fixed-offset) */ typedef struct DynamicZoneAbbrev { pg_tz *tz; /* NULL if not yet looked up */ char zone[FLEXIBLE_ARRAY_MEMBER]; /* NUL-terminated zone name */ } DynamicZoneAbbrev; /* FMODULO() * Macro to replace modf(), which is broken on some platforms. * t = input and remainder * q = integer part * u = divisor */ #define FMODULO(t,q,u) \ do { \ (q) = (((t) < 0) ? ceil((t) / (u)) : floor((t) / (u))); \ if ((q) != 0) (t) -= rint((q) * (u)); \ } while(0) /* TMODULO() * Like FMODULO(), but work on the timestamp datatype (now always int64). * We assume that int64 follows the C99 semantics for division (negative * quotients truncate towards zero). */ #define TMODULO(t,q,u) \ do { \ (q) = ((t) / (u)); \ if ((q) != 0) (t) -= ((q) * (u)); \ } while(0) /* * Date/time validation * Include check for leap year. */ extern const char *const months[]; /* months (3-char abbreviations) */ extern const char *const days[]; /* days (full names) */ extern const int day_tab[2][13]; /* * These are the rules for the Gregorian calendar, which was adopted in 1582. * However, we use this calculation for all prior years as well because the * SQL standard specifies use of the Gregorian calendar. This prevents the * date 1500-02-29 from being stored, even though it is valid in the Julian * calendar. */ #define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) /* * Datetime input parsing routines (ParseDateTime, DecodeDateTime, etc) * return zero or a positive value on success. On failure, they return * one of these negative code values. DateTimeParseError may be used to * produce a correct ereport. */ #define DTERR_BAD_FORMAT (-1) #define DTERR_FIELD_OVERFLOW (-2) #define DTERR_MD_FIELD_OVERFLOW (-3) /* triggers hint about DateStyle */ #define DTERR_INTERVAL_OVERFLOW (-4) #define DTERR_TZDISP_OVERFLOW (-5) extern void GetCurrentDateTime(struct pg_tm *tm); extern void GetCurrentTimeUsec(struct pg_tm *tm, fsec_t *fsec, int *tzp); extern void j2date(int jd, int *year, int *month, int *day); extern int date2j(int year, int month, int day); extern int ParseDateTime(const char *timestr, char *workbuf, size_t buflen, char **field, int *ftype, int maxfields, int *numfields); extern int DecodeDateTime(char **field, int *ftype, int nf, int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp); extern int DecodeTimezone(char *str, int *tzp); extern int DecodeTimeOnly(char **field, int *ftype, int nf, int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp); extern int DecodeInterval(char **field, int *ftype, int nf, int range, int *dtype, struct pg_tm *tm, fsec_t *fsec); extern int DecodeISO8601Interval(char *str, int *dtype, struct pg_tm *tm, fsec_t *fsec); extern void DateTimeParseError(int dterr, const char *str, const char *datatype) pg_attribute_noreturn(); extern int DetermineTimeZoneOffset(struct pg_tm *tm, pg_tz *tzp); extern int DetermineTimeZoneAbbrevOffset(struct pg_tm *tm, const char *abbr, pg_tz *tzp); extern int DetermineTimeZoneAbbrevOffsetTS(TimestampTz ts, const char *abbr, pg_tz *tzp, int *isdst); extern void EncodeDateOnly(struct pg_tm *tm, int style, char *str); extern void EncodeTimeOnly(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, int style, char *str); extern void EncodeDateTime(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, const char *tzn, int style, char *str); extern void EncodeInterval(struct pg_tm *tm, fsec_t fsec, int style, char *str); extern void EncodeSpecialTimestamp(Timestamp dt, char *str); extern int ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc, struct pg_tm *tm); extern int DecodeTimezoneAbbrev(int field, char *lowtoken, int *offset, pg_tz **tz); extern int DecodeSpecial(int field, char *lowtoken, int *val); extern int DecodeUnits(int field, char *lowtoken, int *val); extern int j2day(int jd); extern Node *TemporalSimplify(int32 max_precis, Node *node); extern bool CheckDateTokenTables(void); extern TimeZoneAbbrevTable *ConvertTimeZoneAbbrevs(struct tzEntry *abbrevs, int n); extern void InstallTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl); extern void AdjustTimestampForTypmod(Timestamp *time, int32 typmod); extern bool AdjustTimestampForTypmodError(Timestamp *time, int32 typmod, bool *error); #endif /* DATETIME_H */ libpg_query-13-2.1.0/src/postgres/include/utils/datum.h000066400000000000000000000042211413137616400227650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * datum.h * POSTGRES Datum (abstract data type) manipulation routines. * * These routines are driven by the 'typbyval' and 'typlen' information, * which must previously have been obtained by the caller for the datatype * of the Datum. (We do it this way because in most situations the caller * can look up the info just once and use it for many per-datum operations.) * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/datum.h * *------------------------------------------------------------------------- */ #ifndef DATUM_H #define DATUM_H /* * datumGetSize - find the "real" length of a datum */ extern Size datumGetSize(Datum value, bool typByVal, int typLen); /* * datumCopy - make a copy of a non-NULL datum. * * If the datatype is pass-by-reference, memory is obtained with palloc(). */ extern Datum datumCopy(Datum value, bool typByVal, int typLen); /* * datumTransfer - transfer a non-NULL datum into the current memory context. * * Differs from datumCopy() in its handling of read-write expanded objects. */ extern Datum datumTransfer(Datum value, bool typByVal, int typLen); /* * datumIsEqual * return true if two datums of the same type are equal, false otherwise. * * XXX : See comments in the code for restrictions! */ extern bool datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen); /* * datum_image_eq * * Compares two datums for identical contents, based on byte images. Return * true if the two datums are equal, false otherwise. */ extern bool datum_image_eq(Datum value1, Datum value2, bool typByVal, int typLen); /* * Serialize and restore datums so that we can transfer them to parallel * workers. */ extern Size datumEstimateSpace(Datum value, bool isnull, bool typByVal, int typLen); extern void datumSerialize(Datum value, bool isnull, bool typByVal, int typLen, char **start_address); extern Datum datumRestore(char **start_address, bool *isnull); #endif /* DATUM_H */ libpg_query-13-2.1.0/src/postgres/include/utils/dsa.h000066400000000000000000000113731413137616400224300ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dsa.h * Dynamic shared memory areas. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/utils/dsa.h * *------------------------------------------------------------------------- */ #ifndef DSA_H #define DSA_H #include "port/atomics.h" #include "storage/dsm.h" /* The opaque type used for an area. */ struct dsa_area; typedef struct dsa_area dsa_area; /* * If this system only uses a 32-bit value for size_t, then use the 32-bit * implementation of DSA. This limits the amount of DSA that can be created * to something significantly less than the entire 4GB address space because * the DSA pointer must encode both a segment identifier and an offset, but * that shouldn't be a significant limitation in practice. * * If this system doesn't support atomic operations on 64-bit values, then * we fall back to 32-bit dsa_pointer for lack of other options. * * For testing purposes, USE_SMALL_DSA_POINTER can be defined to force the use * of 32-bit dsa_pointer even on systems capable of supporting a 64-bit * dsa_pointer. */ #if SIZEOF_SIZE_T == 4 || !defined(PG_HAVE_ATOMIC_U64_SUPPORT) || \ defined(USE_SMALL_DSA_POINTER) #define SIZEOF_DSA_POINTER 4 #else #define SIZEOF_DSA_POINTER 8 #endif /* * The type of 'relative pointers' to memory allocated by a dynamic shared * area. dsa_pointer values can be shared with other processes, but must be * converted to backend-local pointers before they can be dereferenced. See * dsa_get_address. Also, an atomic version and appropriately sized atomic * operations. */ #if SIZEOF_DSA_POINTER == 4 typedef uint32 dsa_pointer; typedef pg_atomic_uint32 dsa_pointer_atomic; #define dsa_pointer_atomic_init pg_atomic_init_u32 #define dsa_pointer_atomic_read pg_atomic_read_u32 #define dsa_pointer_atomic_write pg_atomic_write_u32 #define dsa_pointer_atomic_fetch_add pg_atomic_fetch_add_u32 #define dsa_pointer_atomic_compare_exchange pg_atomic_compare_exchange_u32 #define DSA_POINTER_FORMAT "%08x" #else typedef uint64 dsa_pointer; typedef pg_atomic_uint64 dsa_pointer_atomic; #define dsa_pointer_atomic_init pg_atomic_init_u64 #define dsa_pointer_atomic_read pg_atomic_read_u64 #define dsa_pointer_atomic_write pg_atomic_write_u64 #define dsa_pointer_atomic_fetch_add pg_atomic_fetch_add_u64 #define dsa_pointer_atomic_compare_exchange pg_atomic_compare_exchange_u64 #define DSA_POINTER_FORMAT "%016" INT64_MODIFIER "x" #endif /* Flags for dsa_allocate_extended. */ #define DSA_ALLOC_HUGE 0x01 /* allow huge allocation (> 1 GB) */ #define DSA_ALLOC_NO_OOM 0x02 /* no failure if out-of-memory */ #define DSA_ALLOC_ZERO 0x04 /* zero allocated memory */ /* A sentinel value for dsa_pointer used to indicate failure to allocate. */ #define InvalidDsaPointer ((dsa_pointer) 0) /* Check if a dsa_pointer value is valid. */ #define DsaPointerIsValid(x) ((x) != InvalidDsaPointer) /* Allocate uninitialized memory with error on out-of-memory. */ #define dsa_allocate(area, size) \ dsa_allocate_extended(area, size, 0) /* Allocate zero-initialized memory with error on out-of-memory. */ #define dsa_allocate0(area, size) \ dsa_allocate_extended(area, size, DSA_ALLOC_ZERO) /* * The type used for dsa_area handles. dsa_handle values can be shared with * other processes, so that they can attach to them. This provides a way to * share allocated storage with other processes. * * The handle for a dsa_area is currently implemented as the dsm_handle * for the first DSM segment backing this dynamic storage area, but client * code shouldn't assume that is true. */ typedef dsm_handle dsa_handle; extern dsa_area *dsa_create(int tranche_id); extern dsa_area *dsa_create_in_place(void *place, size_t size, int tranche_id, dsm_segment *segment); extern dsa_area *dsa_attach(dsa_handle handle); extern dsa_area *dsa_attach_in_place(void *place, dsm_segment *segment); extern void dsa_release_in_place(void *place); extern void dsa_on_dsm_detach_release_in_place(dsm_segment *, Datum); extern void dsa_on_shmem_exit_release_in_place(int, Datum); extern void dsa_pin_mapping(dsa_area *area); extern void dsa_detach(dsa_area *area); extern void dsa_pin(dsa_area *area); extern void dsa_unpin(dsa_area *area); extern void dsa_set_size_limit(dsa_area *area, size_t limit); extern size_t dsa_minimum_size(void); extern dsa_handle dsa_get_handle(dsa_area *area); extern dsa_pointer dsa_allocate_extended(dsa_area *area, size_t size, int flags); extern void dsa_free(dsa_area *area, dsa_pointer dp); extern void *dsa_get_address(dsa_area *area, dsa_pointer dp); extern void dsa_trim(dsa_area *area); extern void dsa_dump(dsa_area *area); #endif /* DSA_H */ libpg_query-13-2.1.0/src/postgres/include/utils/dynahash.h000066400000000000000000000007661413137616400234640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * dynahash * POSTGRES dynahash.h file definitions * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/dynahash.h * *------------------------------------------------------------------------- */ #ifndef DYNAHASH_H #define DYNAHASH_H extern int my_log2(long num); #endif /* DYNAHASH_H */ libpg_query-13-2.1.0/src/postgres/include/utils/elog.h000066400000000000000000000371251413137616400226120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * elog.h * POSTGRES error reporting/logging definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/elog.h * *------------------------------------------------------------------------- */ #ifndef ELOG_H #define ELOG_H #include /* Error level codes */ #define DEBUG5 10 /* Debugging messages, in categories of * decreasing detail. */ #define DEBUG4 11 #define DEBUG3 12 #define DEBUG2 13 #define DEBUG1 14 /* used by GUC debug_* variables */ #define LOG 15 /* Server operational messages; sent only to * server log by default. */ #define LOG_SERVER_ONLY 16 /* Same as LOG for server reporting, but never * sent to client. */ #define COMMERROR LOG_SERVER_ONLY /* Client communication problems; same as * LOG for server reporting, but never * sent to client. */ #define INFO 17 /* Messages specifically requested by user (eg * VACUUM VERBOSE output); always sent to * client regardless of client_min_messages, * but by default not sent to server log. */ #define NOTICE 18 /* Helpful messages to users about query * operation; sent to client and not to server * log by default. */ #define WARNING 19 /* Warnings. NOTICE is for expected messages * like implicit sequence creation by SERIAL. * WARNING is for unexpected messages. */ #define ERROR 20 /* user error - abort transaction; return to * known state */ /* Save ERROR value in PGERROR so it can be restored when Win32 includes * modify it. We have to use a constant rather than ERROR because macros * are expanded only when referenced outside macros. */ #ifdef WIN32 #define PGERROR 20 #endif #define FATAL 21 /* fatal error - abort process */ #define PANIC 22 /* take down the other backends with me */ /* #define DEBUG DEBUG1 */ /* Backward compatibility with pre-7.3 */ /* macros for representing SQLSTATE strings compactly */ #define PGSIXBIT(ch) (((ch) - '0') & 0x3F) #define PGUNSIXBIT(val) (((val) & 0x3F) + '0') #define MAKE_SQLSTATE(ch1,ch2,ch3,ch4,ch5) \ (PGSIXBIT(ch1) + (PGSIXBIT(ch2) << 6) + (PGSIXBIT(ch3) << 12) + \ (PGSIXBIT(ch4) << 18) + (PGSIXBIT(ch5) << 24)) /* These macros depend on the fact that '0' becomes a zero in PGSIXBIT */ #define ERRCODE_TO_CATEGORY(ec) ((ec) & ((1 << 12) - 1)) #define ERRCODE_IS_CATEGORY(ec) (((ec) & ~((1 << 12) - 1)) == 0) /* SQLSTATE codes for errors are defined in a separate file */ #include "utils/errcodes.h" /* * Provide a way to prevent "errno" from being accidentally used inside an * elog() or ereport() invocation. Since we know that some operating systems * define errno as something involving a function call, we'll put a local * variable of the same name as that function in the local scope to force a * compile error. On platforms that don't define errno in that way, nothing * happens, so we get no warning ... but we can live with that as long as it * happens on some popular platforms. */ #if defined(errno) && defined(__linux__) #define pg_prevent_errno_in_scope() int __errno_location pg_attribute_unused() #elif defined(errno) && (defined(__darwin__) || defined(__freebsd__)) #define pg_prevent_errno_in_scope() int __error pg_attribute_unused() #else #define pg_prevent_errno_in_scope() #endif /*---------- * New-style error reporting API: to be used in this way: * ereport(ERROR, * errcode(ERRCODE_UNDEFINED_CURSOR), * errmsg("portal \"%s\" not found", stmt->portalname), * ... other errxxx() fields as needed ...); * * The error level is required, and so is a primary error message (errmsg * or errmsg_internal). All else is optional. errcode() defaults to * ERRCODE_INTERNAL_ERROR if elevel is ERROR or more, ERRCODE_WARNING * if elevel is WARNING, or ERRCODE_SUCCESSFUL_COMPLETION if elevel is * NOTICE or below. * * Before Postgres v12, extra parentheses were required around the * list of auxiliary function calls; that's now optional. * * ereport_domain() allows a message domain to be specified, for modules that * wish to use a different message catalog from the backend's. To avoid having * one copy of the default text domain per .o file, we define it as NULL here * and have errstart insert the default text domain. Modules can either use * ereport_domain() directly, or preferably they can override the TEXTDOMAIN * macro. * * If elevel >= ERROR, the call will not return; we try to inform the compiler * of that via pg_unreachable(). However, no useful optimization effect is * obtained unless the compiler sees elevel as a compile-time constant, else * we're just adding code bloat. So, if __builtin_constant_p is available, * use that to cause the second if() to vanish completely for non-constant * cases. We avoid using a local variable because it's not necessary and * prevents gcc from making the unreachability deduction at optlevel -O0. *---------- */ #ifdef HAVE__BUILTIN_CONSTANT_P #define ereport_domain(elevel, domain, ...) \ do { \ pg_prevent_errno_in_scope(); \ if (errstart(elevel, domain)) \ __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \ pg_unreachable(); \ } while(0) #else /* !HAVE__BUILTIN_CONSTANT_P */ #define ereport_domain(elevel, domain, ...) \ do { \ const int elevel_ = (elevel); \ pg_prevent_errno_in_scope(); \ if (errstart(elevel_, domain)) \ __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ if (elevel_ >= ERROR) \ pg_unreachable(); \ } while(0) #endif /* HAVE__BUILTIN_CONSTANT_P */ #define ereport(elevel, ...) \ ereport_domain(elevel, TEXTDOMAIN, __VA_ARGS__) #define TEXTDOMAIN NULL extern bool errstart(int elevel, const char *domain); extern void errfinish(const char *filename, int lineno, const char *funcname); extern int errcode(int sqlerrcode); extern int errcode_for_file_access(void); extern int errcode_for_socket_access(void); extern int errmsg(const char *fmt,...) pg_attribute_printf(1, 2); extern int errmsg_internal(const char *fmt,...) pg_attribute_printf(1, 2); extern int errmsg_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); extern int errdetail(const char *fmt,...) pg_attribute_printf(1, 2); extern int errdetail_internal(const char *fmt,...) pg_attribute_printf(1, 2); extern int errdetail_log(const char *fmt,...) pg_attribute_printf(1, 2); extern int errdetail_log_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); extern int errdetail_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); extern int errhint(const char *fmt,...) pg_attribute_printf(1, 2); /* * errcontext() is typically called in error context callback functions, not * within an ereport() invocation. The callback function can be in a different * module than the ereport() call, so the message domain passed in errstart() * is not usually the correct domain for translating the context message. * set_errcontext_domain() first sets the domain to be used, and * errcontext_msg() passes the actual message. */ #define errcontext set_errcontext_domain(TEXTDOMAIN), errcontext_msg extern int set_errcontext_domain(const char *domain); extern int errcontext_msg(const char *fmt,...) pg_attribute_printf(1, 2); extern int errhidestmt(bool hide_stmt); extern int errhidecontext(bool hide_ctx); extern int errbacktrace(void); extern int errfunction(const char *funcname); extern int errposition(int cursorpos); extern int internalerrposition(int cursorpos); extern int internalerrquery(const char *query); extern int err_generic_string(int field, const char *str); extern int geterrcode(void); extern int geterrposition(void); extern int getinternalerrposition(void); /*---------- * Old-style error reporting API: to be used in this way: * elog(ERROR, "portal \"%s\" not found", stmt->portalname); *---------- */ #define elog(elevel, ...) \ ereport(elevel, errmsg_internal(__VA_ARGS__)) /* Support for constructing error strings separately from ereport() calls */ extern void pre_format_elog_string(int errnumber, const char *domain); extern char *format_elog_string(const char *fmt,...) pg_attribute_printf(1, 2); /* Support for attaching context information to error reports */ typedef struct ErrorContextCallback { struct ErrorContextCallback *previous; void (*callback) (void *arg); void *arg; } ErrorContextCallback; extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack; /*---------- * API for catching ereport(ERROR) exits. Use these macros like so: * * PG_TRY(); * { * ... code that might throw ereport(ERROR) ... * } * PG_CATCH(); * { * ... error recovery code ... * } * PG_END_TRY(); * * (The braces are not actually necessary, but are recommended so that * pgindent will indent the construct nicely.) The error recovery code * can either do PG_RE_THROW to propagate the error outwards, or do a * (sub)transaction abort. Failure to do so may leave the system in an * inconsistent state for further processing. * * For the common case that the error recovery code and the cleanup in the * normal code path are identical, the following can be used instead: * * PG_TRY(); * { * ... code that might throw ereport(ERROR) ... * } * PG_FINALLY(); * { * ... cleanup code ... * } * PG_END_TRY(); * * The cleanup code will be run in either case, and any error will be rethrown * afterwards. * * You cannot use both PG_CATCH() and PG_FINALLY() in the same * PG_TRY()/PG_END_TRY() block. * * Note: while the system will correctly propagate any new ereport(ERROR) * occurring in the recovery section, there is a small limit on the number * of levels this will work for. It's best to keep the error recovery * section simple enough that it can't generate any new errors, at least * not before popping the error stack. * * Note: an ereport(FATAL) will not be caught by this construct; control will * exit straight through proc_exit(). Therefore, do NOT put any cleanup * of non-process-local resources into the error recovery section, at least * not without taking thought for what will happen during ereport(FATAL). * The PG_ENSURE_ERROR_CLEANUP macros provided by storage/ipc.h may be * helpful in such cases. * * Note: if a local variable of the function containing PG_TRY is modified * in the PG_TRY section and used in the PG_CATCH section, that variable * must be declared "volatile" for POSIX compliance. This is not mere * pedantry; we have seen bugs from compilers improperly optimizing code * away when such a variable was not marked. Beware that gcc's -Wclobbered * warnings are just about entirely useless for catching such oversights. *---------- */ #define PG_TRY() \ do { \ sigjmp_buf *_save_exception_stack = PG_exception_stack; \ ErrorContextCallback *_save_context_stack = error_context_stack; \ sigjmp_buf _local_sigjmp_buf; \ bool _do_rethrow = false; \ if (sigsetjmp(_local_sigjmp_buf, 0) == 0) \ { \ PG_exception_stack = &_local_sigjmp_buf #define PG_CATCH() \ } \ else \ { \ PG_exception_stack = _save_exception_stack; \ error_context_stack = _save_context_stack #define PG_FINALLY() \ } \ else \ _do_rethrow = true; \ { \ PG_exception_stack = _save_exception_stack; \ error_context_stack = _save_context_stack #define PG_END_TRY() \ } \ if (_do_rethrow) \ PG_RE_THROW(); \ PG_exception_stack = _save_exception_stack; \ error_context_stack = _save_context_stack; \ } while (0) /* * Some compilers understand pg_attribute_noreturn(); for other compilers, * insert pg_unreachable() so that the compiler gets the point. */ #ifdef HAVE_PG_ATTRIBUTE_NORETURN #define PG_RE_THROW() \ pg_re_throw() #else #define PG_RE_THROW() \ (pg_re_throw(), pg_unreachable()) #endif extern PGDLLIMPORT __thread sigjmp_buf *PG_exception_stack; /* Stuff that error handlers might want to use */ /* * ErrorData holds the data accumulated during any one ereport() cycle. * Any non-NULL pointers must point to palloc'd data. * (The const pointers are an exception; we assume they point at non-freeable * constant strings.) */ typedef struct ErrorData { int elevel; /* error level */ bool output_to_server; /* will report to server log? */ bool output_to_client; /* will report to client? */ bool show_funcname; /* true to force funcname inclusion */ bool hide_stmt; /* true to prevent STATEMENT: inclusion */ bool hide_ctx; /* true to prevent CONTEXT: inclusion */ const char *filename; /* __FILE__ of ereport() call */ int lineno; /* __LINE__ of ereport() call */ const char *funcname; /* __func__ of ereport() call */ const char *domain; /* message domain */ const char *context_domain; /* message domain for context message */ int sqlerrcode; /* encoded ERRSTATE */ char *message; /* primary error message (translated) */ char *detail; /* detail error message */ char *detail_log; /* detail error message for server log only */ char *hint; /* hint message */ char *context; /* context message */ char *backtrace; /* backtrace */ const char *message_id; /* primary message's id (original string) */ char *schema_name; /* name of schema */ char *table_name; /* name of table */ char *column_name; /* name of column */ char *datatype_name; /* name of datatype */ char *constraint_name; /* name of constraint */ int cursorpos; /* cursor index into query string */ int internalpos; /* cursor index into internalquery */ char *internalquery; /* text of internally-generated query */ int saved_errno; /* errno at entry */ /* context containing associated non-constant strings */ struct MemoryContextData *assoc_context; } ErrorData; extern void EmitErrorReport(void); extern ErrorData *CopyErrorData(void); extern void FreeErrorData(ErrorData *edata); extern void FlushErrorState(void); extern void ReThrowError(ErrorData *edata) pg_attribute_noreturn(); extern void ThrowErrorData(ErrorData *edata); extern void pg_re_throw(void) pg_attribute_noreturn(); extern char *GetErrorContextStack(void); /* Hook for intercepting messages before they are sent to the server log */ typedef void (*emit_log_hook_type) (ErrorData *edata); extern PGDLLIMPORT __thread emit_log_hook_type emit_log_hook; /* GUC-configurable parameters */ typedef enum { PGERROR_TERSE, /* single-line error messages */ PGERROR_DEFAULT, /* recommended style */ PGERROR_VERBOSE /* all the facts, ma'am */ } PGErrorVerbosity; extern int Log_error_verbosity; extern char *Log_line_prefix; extern int Log_destination; extern char *Log_destination_string; extern bool syslog_sequence_numbers; extern bool syslog_split_messages; /* Log destination bitmap */ #define LOG_DESTINATION_STDERR 1 #define LOG_DESTINATION_SYSLOG 2 #define LOG_DESTINATION_EVENTLOG 4 #define LOG_DESTINATION_CSVLOG 8 /* Other exported functions */ extern void DebugFileOpen(void); extern char *unpack_sql_state(int sql_state); extern bool in_error_recursion_trouble(void); #ifdef HAVE_SYSLOG extern void set_syslog_parameters(const char *ident, int facility); #endif /* * Write errors to stderr (or by equal means when stderr is * not available). Used before ereport/elog can be used * safely (memory context, GUC load etc) */ extern void write_stderr(const char *fmt,...) pg_attribute_printf(1, 2); #endif /* ELOG_H */ libpg_query-13-2.1.0/src/postgres/include/utils/errcodes.h000066400000000000000000000532271413137616400234730ustar00rootroot00000000000000/* autogenerated from src/backend/utils/errcodes.txt, do not edit */ /* there is deliberately not an #ifndef ERRCODES_H here */ /* Class 00 - Successful Completion */ #define ERRCODE_SUCCESSFUL_COMPLETION MAKE_SQLSTATE('0','0','0','0','0') /* Class 01 - Warning */ #define ERRCODE_WARNING MAKE_SQLSTATE('0','1','0','0','0') #define ERRCODE_WARNING_DYNAMIC_RESULT_SETS_RETURNED MAKE_SQLSTATE('0','1','0','0','C') #define ERRCODE_WARNING_IMPLICIT_ZERO_BIT_PADDING MAKE_SQLSTATE('0','1','0','0','8') #define ERRCODE_WARNING_NULL_VALUE_ELIMINATED_IN_SET_FUNCTION MAKE_SQLSTATE('0','1','0','0','3') #define ERRCODE_WARNING_PRIVILEGE_NOT_GRANTED MAKE_SQLSTATE('0','1','0','0','7') #define ERRCODE_WARNING_PRIVILEGE_NOT_REVOKED MAKE_SQLSTATE('0','1','0','0','6') #define ERRCODE_WARNING_STRING_DATA_RIGHT_TRUNCATION MAKE_SQLSTATE('0','1','0','0','4') #define ERRCODE_WARNING_DEPRECATED_FEATURE MAKE_SQLSTATE('0','1','P','0','1') /* Class 02 - No Data (this is also a warning class per the SQL standard) */ #define ERRCODE_NO_DATA MAKE_SQLSTATE('0','2','0','0','0') #define ERRCODE_NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED MAKE_SQLSTATE('0','2','0','0','1') /* Class 03 - SQL Statement Not Yet Complete */ #define ERRCODE_SQL_STATEMENT_NOT_YET_COMPLETE MAKE_SQLSTATE('0','3','0','0','0') /* Class 08 - Connection Exception */ #define ERRCODE_CONNECTION_EXCEPTION MAKE_SQLSTATE('0','8','0','0','0') #define ERRCODE_CONNECTION_DOES_NOT_EXIST MAKE_SQLSTATE('0','8','0','0','3') #define ERRCODE_CONNECTION_FAILURE MAKE_SQLSTATE('0','8','0','0','6') #define ERRCODE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION MAKE_SQLSTATE('0','8','0','0','1') #define ERRCODE_SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION MAKE_SQLSTATE('0','8','0','0','4') #define ERRCODE_TRANSACTION_RESOLUTION_UNKNOWN MAKE_SQLSTATE('0','8','0','0','7') #define ERRCODE_PROTOCOL_VIOLATION MAKE_SQLSTATE('0','8','P','0','1') /* Class 09 - Triggered Action Exception */ #define ERRCODE_TRIGGERED_ACTION_EXCEPTION MAKE_SQLSTATE('0','9','0','0','0') /* Class 0A - Feature Not Supported */ #define ERRCODE_FEATURE_NOT_SUPPORTED MAKE_SQLSTATE('0','A','0','0','0') /* Class 0B - Invalid Transaction Initiation */ #define ERRCODE_INVALID_TRANSACTION_INITIATION MAKE_SQLSTATE('0','B','0','0','0') /* Class 0F - Locator Exception */ #define ERRCODE_LOCATOR_EXCEPTION MAKE_SQLSTATE('0','F','0','0','0') #define ERRCODE_L_E_INVALID_SPECIFICATION MAKE_SQLSTATE('0','F','0','0','1') /* Class 0L - Invalid Grantor */ #define ERRCODE_INVALID_GRANTOR MAKE_SQLSTATE('0','L','0','0','0') #define ERRCODE_INVALID_GRANT_OPERATION MAKE_SQLSTATE('0','L','P','0','1') /* Class 0P - Invalid Role Specification */ #define ERRCODE_INVALID_ROLE_SPECIFICATION MAKE_SQLSTATE('0','P','0','0','0') /* Class 0Z - Diagnostics Exception */ #define ERRCODE_DIAGNOSTICS_EXCEPTION MAKE_SQLSTATE('0','Z','0','0','0') #define ERRCODE_STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER MAKE_SQLSTATE('0','Z','0','0','2') /* Class 20 - Case Not Found */ #define ERRCODE_CASE_NOT_FOUND MAKE_SQLSTATE('2','0','0','0','0') /* Class 21 - Cardinality Violation */ #define ERRCODE_CARDINALITY_VIOLATION MAKE_SQLSTATE('2','1','0','0','0') /* Class 22 - Data Exception */ #define ERRCODE_DATA_EXCEPTION MAKE_SQLSTATE('2','2','0','0','0') #define ERRCODE_ARRAY_ELEMENT_ERROR MAKE_SQLSTATE('2','2','0','2','E') #define ERRCODE_ARRAY_SUBSCRIPT_ERROR MAKE_SQLSTATE('2','2','0','2','E') #define ERRCODE_CHARACTER_NOT_IN_REPERTOIRE MAKE_SQLSTATE('2','2','0','2','1') #define ERRCODE_DATETIME_FIELD_OVERFLOW MAKE_SQLSTATE('2','2','0','0','8') #define ERRCODE_DATETIME_VALUE_OUT_OF_RANGE MAKE_SQLSTATE('2','2','0','0','8') #define ERRCODE_DIVISION_BY_ZERO MAKE_SQLSTATE('2','2','0','1','2') #define ERRCODE_ERROR_IN_ASSIGNMENT MAKE_SQLSTATE('2','2','0','0','5') #define ERRCODE_ESCAPE_CHARACTER_CONFLICT MAKE_SQLSTATE('2','2','0','0','B') #define ERRCODE_INDICATOR_OVERFLOW MAKE_SQLSTATE('2','2','0','2','2') #define ERRCODE_INTERVAL_FIELD_OVERFLOW MAKE_SQLSTATE('2','2','0','1','5') #define ERRCODE_INVALID_ARGUMENT_FOR_LOG MAKE_SQLSTATE('2','2','0','1','E') #define ERRCODE_INVALID_ARGUMENT_FOR_NTILE MAKE_SQLSTATE('2','2','0','1','4') #define ERRCODE_INVALID_ARGUMENT_FOR_NTH_VALUE MAKE_SQLSTATE('2','2','0','1','6') #define ERRCODE_INVALID_ARGUMENT_FOR_POWER_FUNCTION MAKE_SQLSTATE('2','2','0','1','F') #define ERRCODE_INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION MAKE_SQLSTATE('2','2','0','1','G') #define ERRCODE_INVALID_CHARACTER_VALUE_FOR_CAST MAKE_SQLSTATE('2','2','0','1','8') #define ERRCODE_INVALID_DATETIME_FORMAT MAKE_SQLSTATE('2','2','0','0','7') #define ERRCODE_INVALID_ESCAPE_CHARACTER MAKE_SQLSTATE('2','2','0','1','9') #define ERRCODE_INVALID_ESCAPE_OCTET MAKE_SQLSTATE('2','2','0','0','D') #define ERRCODE_INVALID_ESCAPE_SEQUENCE MAKE_SQLSTATE('2','2','0','2','5') #define ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER MAKE_SQLSTATE('2','2','P','0','6') #define ERRCODE_INVALID_INDICATOR_PARAMETER_VALUE MAKE_SQLSTATE('2','2','0','1','0') #define ERRCODE_INVALID_PARAMETER_VALUE MAKE_SQLSTATE('2','2','0','2','3') #define ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE MAKE_SQLSTATE('2','2','0','1','3') #define ERRCODE_INVALID_REGULAR_EXPRESSION MAKE_SQLSTATE('2','2','0','1','B') #define ERRCODE_INVALID_ROW_COUNT_IN_LIMIT_CLAUSE MAKE_SQLSTATE('2','2','0','1','W') #define ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE MAKE_SQLSTATE('2','2','0','1','X') #define ERRCODE_INVALID_TABLESAMPLE_ARGUMENT MAKE_SQLSTATE('2','2','0','2','H') #define ERRCODE_INVALID_TABLESAMPLE_REPEAT MAKE_SQLSTATE('2','2','0','2','G') #define ERRCODE_INVALID_TIME_ZONE_DISPLACEMENT_VALUE MAKE_SQLSTATE('2','2','0','0','9') #define ERRCODE_INVALID_USE_OF_ESCAPE_CHARACTER MAKE_SQLSTATE('2','2','0','0','C') #define ERRCODE_MOST_SPECIFIC_TYPE_MISMATCH MAKE_SQLSTATE('2','2','0','0','G') #define ERRCODE_NULL_VALUE_NOT_ALLOWED MAKE_SQLSTATE('2','2','0','0','4') #define ERRCODE_NULL_VALUE_NO_INDICATOR_PARAMETER MAKE_SQLSTATE('2','2','0','0','2') #define ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE MAKE_SQLSTATE('2','2','0','0','3') #define ERRCODE_SEQUENCE_GENERATOR_LIMIT_EXCEEDED MAKE_SQLSTATE('2','2','0','0','H') #define ERRCODE_STRING_DATA_LENGTH_MISMATCH MAKE_SQLSTATE('2','2','0','2','6') #define ERRCODE_STRING_DATA_RIGHT_TRUNCATION MAKE_SQLSTATE('2','2','0','0','1') #define ERRCODE_SUBSTRING_ERROR MAKE_SQLSTATE('2','2','0','1','1') #define ERRCODE_TRIM_ERROR MAKE_SQLSTATE('2','2','0','2','7') #define ERRCODE_UNTERMINATED_C_STRING MAKE_SQLSTATE('2','2','0','2','4') #define ERRCODE_ZERO_LENGTH_CHARACTER_STRING MAKE_SQLSTATE('2','2','0','0','F') #define ERRCODE_FLOATING_POINT_EXCEPTION MAKE_SQLSTATE('2','2','P','0','1') #define ERRCODE_INVALID_TEXT_REPRESENTATION MAKE_SQLSTATE('2','2','P','0','2') #define ERRCODE_INVALID_BINARY_REPRESENTATION MAKE_SQLSTATE('2','2','P','0','3') #define ERRCODE_BAD_COPY_FILE_FORMAT MAKE_SQLSTATE('2','2','P','0','4') #define ERRCODE_UNTRANSLATABLE_CHARACTER MAKE_SQLSTATE('2','2','P','0','5') #define ERRCODE_NOT_AN_XML_DOCUMENT MAKE_SQLSTATE('2','2','0','0','L') #define ERRCODE_INVALID_XML_DOCUMENT MAKE_SQLSTATE('2','2','0','0','M') #define ERRCODE_INVALID_XML_CONTENT MAKE_SQLSTATE('2','2','0','0','N') #define ERRCODE_INVALID_XML_COMMENT MAKE_SQLSTATE('2','2','0','0','S') #define ERRCODE_INVALID_XML_PROCESSING_INSTRUCTION MAKE_SQLSTATE('2','2','0','0','T') #define ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE MAKE_SQLSTATE('2','2','0','3','0') #define ERRCODE_INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION MAKE_SQLSTATE('2','2','0','3','1') #define ERRCODE_INVALID_JSON_TEXT MAKE_SQLSTATE('2','2','0','3','2') #define ERRCODE_INVALID_SQL_JSON_SUBSCRIPT MAKE_SQLSTATE('2','2','0','3','3') #define ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM MAKE_SQLSTATE('2','2','0','3','4') #define ERRCODE_NO_SQL_JSON_ITEM MAKE_SQLSTATE('2','2','0','3','5') #define ERRCODE_NON_NUMERIC_SQL_JSON_ITEM MAKE_SQLSTATE('2','2','0','3','6') #define ERRCODE_NON_UNIQUE_KEYS_IN_A_JSON_OBJECT MAKE_SQLSTATE('2','2','0','3','7') #define ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED MAKE_SQLSTATE('2','2','0','3','8') #define ERRCODE_SQL_JSON_ARRAY_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','9') #define ERRCODE_SQL_JSON_MEMBER_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','A') #define ERRCODE_SQL_JSON_NUMBER_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','B') #define ERRCODE_SQL_JSON_OBJECT_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','C') #define ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS MAKE_SQLSTATE('2','2','0','3','D') #define ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS MAKE_SQLSTATE('2','2','0','3','E') #define ERRCODE_SQL_JSON_SCALAR_REQUIRED MAKE_SQLSTATE('2','2','0','3','F') /* Class 23 - Integrity Constraint Violation */ #define ERRCODE_INTEGRITY_CONSTRAINT_VIOLATION MAKE_SQLSTATE('2','3','0','0','0') #define ERRCODE_RESTRICT_VIOLATION MAKE_SQLSTATE('2','3','0','0','1') #define ERRCODE_NOT_NULL_VIOLATION MAKE_SQLSTATE('2','3','5','0','2') #define ERRCODE_FOREIGN_KEY_VIOLATION MAKE_SQLSTATE('2','3','5','0','3') #define ERRCODE_UNIQUE_VIOLATION MAKE_SQLSTATE('2','3','5','0','5') #define ERRCODE_CHECK_VIOLATION MAKE_SQLSTATE('2','3','5','1','4') #define ERRCODE_EXCLUSION_VIOLATION MAKE_SQLSTATE('2','3','P','0','1') /* Class 24 - Invalid Cursor State */ #define ERRCODE_INVALID_CURSOR_STATE MAKE_SQLSTATE('2','4','0','0','0') /* Class 25 - Invalid Transaction State */ #define ERRCODE_INVALID_TRANSACTION_STATE MAKE_SQLSTATE('2','5','0','0','0') #define ERRCODE_ACTIVE_SQL_TRANSACTION MAKE_SQLSTATE('2','5','0','0','1') #define ERRCODE_BRANCH_TRANSACTION_ALREADY_ACTIVE MAKE_SQLSTATE('2','5','0','0','2') #define ERRCODE_HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL MAKE_SQLSTATE('2','5','0','0','8') #define ERRCODE_INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION MAKE_SQLSTATE('2','5','0','0','3') #define ERRCODE_INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION MAKE_SQLSTATE('2','5','0','0','4') #define ERRCODE_NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION MAKE_SQLSTATE('2','5','0','0','5') #define ERRCODE_READ_ONLY_SQL_TRANSACTION MAKE_SQLSTATE('2','5','0','0','6') #define ERRCODE_SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED MAKE_SQLSTATE('2','5','0','0','7') #define ERRCODE_NO_ACTIVE_SQL_TRANSACTION MAKE_SQLSTATE('2','5','P','0','1') #define ERRCODE_IN_FAILED_SQL_TRANSACTION MAKE_SQLSTATE('2','5','P','0','2') #define ERRCODE_IDLE_IN_TRANSACTION_SESSION_TIMEOUT MAKE_SQLSTATE('2','5','P','0','3') /* Class 26 - Invalid SQL Statement Name */ #define ERRCODE_INVALID_SQL_STATEMENT_NAME MAKE_SQLSTATE('2','6','0','0','0') /* Class 27 - Triggered Data Change Violation */ #define ERRCODE_TRIGGERED_DATA_CHANGE_VIOLATION MAKE_SQLSTATE('2','7','0','0','0') /* Class 28 - Invalid Authorization Specification */ #define ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION MAKE_SQLSTATE('2','8','0','0','0') #define ERRCODE_INVALID_PASSWORD MAKE_SQLSTATE('2','8','P','0','1') /* Class 2B - Dependent Privilege Descriptors Still Exist */ #define ERRCODE_DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST MAKE_SQLSTATE('2','B','0','0','0') #define ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST MAKE_SQLSTATE('2','B','P','0','1') /* Class 2D - Invalid Transaction Termination */ #define ERRCODE_INVALID_TRANSACTION_TERMINATION MAKE_SQLSTATE('2','D','0','0','0') /* Class 2F - SQL Routine Exception */ #define ERRCODE_SQL_ROUTINE_EXCEPTION MAKE_SQLSTATE('2','F','0','0','0') #define ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT MAKE_SQLSTATE('2','F','0','0','5') #define ERRCODE_S_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED MAKE_SQLSTATE('2','F','0','0','2') #define ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED MAKE_SQLSTATE('2','F','0','0','3') #define ERRCODE_S_R_E_READING_SQL_DATA_NOT_PERMITTED MAKE_SQLSTATE('2','F','0','0','4') /* Class 34 - Invalid Cursor Name */ #define ERRCODE_INVALID_CURSOR_NAME MAKE_SQLSTATE('3','4','0','0','0') /* Class 38 - External Routine Exception */ #define ERRCODE_EXTERNAL_ROUTINE_EXCEPTION MAKE_SQLSTATE('3','8','0','0','0') #define ERRCODE_E_R_E_CONTAINING_SQL_NOT_PERMITTED MAKE_SQLSTATE('3','8','0','0','1') #define ERRCODE_E_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED MAKE_SQLSTATE('3','8','0','0','2') #define ERRCODE_E_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED MAKE_SQLSTATE('3','8','0','0','3') #define ERRCODE_E_R_E_READING_SQL_DATA_NOT_PERMITTED MAKE_SQLSTATE('3','8','0','0','4') /* Class 39 - External Routine Invocation Exception */ #define ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION MAKE_SQLSTATE('3','9','0','0','0') #define ERRCODE_E_R_I_E_INVALID_SQLSTATE_RETURNED MAKE_SQLSTATE('3','9','0','0','1') #define ERRCODE_E_R_I_E_NULL_VALUE_NOT_ALLOWED MAKE_SQLSTATE('3','9','0','0','4') #define ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED MAKE_SQLSTATE('3','9','P','0','1') #define ERRCODE_E_R_I_E_SRF_PROTOCOL_VIOLATED MAKE_SQLSTATE('3','9','P','0','2') #define ERRCODE_E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED MAKE_SQLSTATE('3','9','P','0','3') /* Class 3B - Savepoint Exception */ #define ERRCODE_SAVEPOINT_EXCEPTION MAKE_SQLSTATE('3','B','0','0','0') #define ERRCODE_S_E_INVALID_SPECIFICATION MAKE_SQLSTATE('3','B','0','0','1') /* Class 3D - Invalid Catalog Name */ #define ERRCODE_INVALID_CATALOG_NAME MAKE_SQLSTATE('3','D','0','0','0') /* Class 3F - Invalid Schema Name */ #define ERRCODE_INVALID_SCHEMA_NAME MAKE_SQLSTATE('3','F','0','0','0') /* Class 40 - Transaction Rollback */ #define ERRCODE_TRANSACTION_ROLLBACK MAKE_SQLSTATE('4','0','0','0','0') #define ERRCODE_T_R_INTEGRITY_CONSTRAINT_VIOLATION MAKE_SQLSTATE('4','0','0','0','2') #define ERRCODE_T_R_SERIALIZATION_FAILURE MAKE_SQLSTATE('4','0','0','0','1') #define ERRCODE_T_R_STATEMENT_COMPLETION_UNKNOWN MAKE_SQLSTATE('4','0','0','0','3') #define ERRCODE_T_R_DEADLOCK_DETECTED MAKE_SQLSTATE('4','0','P','0','1') /* Class 42 - Syntax Error or Access Rule Violation */ #define ERRCODE_SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION MAKE_SQLSTATE('4','2','0','0','0') #define ERRCODE_SYNTAX_ERROR MAKE_SQLSTATE('4','2','6','0','1') #define ERRCODE_INSUFFICIENT_PRIVILEGE MAKE_SQLSTATE('4','2','5','0','1') #define ERRCODE_CANNOT_COERCE MAKE_SQLSTATE('4','2','8','4','6') #define ERRCODE_GROUPING_ERROR MAKE_SQLSTATE('4','2','8','0','3') #define ERRCODE_WINDOWING_ERROR MAKE_SQLSTATE('4','2','P','2','0') #define ERRCODE_INVALID_RECURSION MAKE_SQLSTATE('4','2','P','1','9') #define ERRCODE_INVALID_FOREIGN_KEY MAKE_SQLSTATE('4','2','8','3','0') #define ERRCODE_INVALID_NAME MAKE_SQLSTATE('4','2','6','0','2') #define ERRCODE_NAME_TOO_LONG MAKE_SQLSTATE('4','2','6','2','2') #define ERRCODE_RESERVED_NAME MAKE_SQLSTATE('4','2','9','3','9') #define ERRCODE_DATATYPE_MISMATCH MAKE_SQLSTATE('4','2','8','0','4') #define ERRCODE_INDETERMINATE_DATATYPE MAKE_SQLSTATE('4','2','P','1','8') #define ERRCODE_COLLATION_MISMATCH MAKE_SQLSTATE('4','2','P','2','1') #define ERRCODE_INDETERMINATE_COLLATION MAKE_SQLSTATE('4','2','P','2','2') #define ERRCODE_WRONG_OBJECT_TYPE MAKE_SQLSTATE('4','2','8','0','9') #define ERRCODE_GENERATED_ALWAYS MAKE_SQLSTATE('4','2','8','C','9') #define ERRCODE_UNDEFINED_COLUMN MAKE_SQLSTATE('4','2','7','0','3') #define ERRCODE_UNDEFINED_CURSOR MAKE_SQLSTATE('3','4','0','0','0') #define ERRCODE_UNDEFINED_DATABASE MAKE_SQLSTATE('3','D','0','0','0') #define ERRCODE_UNDEFINED_FUNCTION MAKE_SQLSTATE('4','2','8','8','3') #define ERRCODE_UNDEFINED_PSTATEMENT MAKE_SQLSTATE('2','6','0','0','0') #define ERRCODE_UNDEFINED_SCHEMA MAKE_SQLSTATE('3','F','0','0','0') #define ERRCODE_UNDEFINED_TABLE MAKE_SQLSTATE('4','2','P','0','1') #define ERRCODE_UNDEFINED_PARAMETER MAKE_SQLSTATE('4','2','P','0','2') #define ERRCODE_UNDEFINED_OBJECT MAKE_SQLSTATE('4','2','7','0','4') #define ERRCODE_DUPLICATE_COLUMN MAKE_SQLSTATE('4','2','7','0','1') #define ERRCODE_DUPLICATE_CURSOR MAKE_SQLSTATE('4','2','P','0','3') #define ERRCODE_DUPLICATE_DATABASE MAKE_SQLSTATE('4','2','P','0','4') #define ERRCODE_DUPLICATE_FUNCTION MAKE_SQLSTATE('4','2','7','2','3') #define ERRCODE_DUPLICATE_PSTATEMENT MAKE_SQLSTATE('4','2','P','0','5') #define ERRCODE_DUPLICATE_SCHEMA MAKE_SQLSTATE('4','2','P','0','6') #define ERRCODE_DUPLICATE_TABLE MAKE_SQLSTATE('4','2','P','0','7') #define ERRCODE_DUPLICATE_ALIAS MAKE_SQLSTATE('4','2','7','1','2') #define ERRCODE_DUPLICATE_OBJECT MAKE_SQLSTATE('4','2','7','1','0') #define ERRCODE_AMBIGUOUS_COLUMN MAKE_SQLSTATE('4','2','7','0','2') #define ERRCODE_AMBIGUOUS_FUNCTION MAKE_SQLSTATE('4','2','7','2','5') #define ERRCODE_AMBIGUOUS_PARAMETER MAKE_SQLSTATE('4','2','P','0','8') #define ERRCODE_AMBIGUOUS_ALIAS MAKE_SQLSTATE('4','2','P','0','9') #define ERRCODE_INVALID_COLUMN_REFERENCE MAKE_SQLSTATE('4','2','P','1','0') #define ERRCODE_INVALID_COLUMN_DEFINITION MAKE_SQLSTATE('4','2','6','1','1') #define ERRCODE_INVALID_CURSOR_DEFINITION MAKE_SQLSTATE('4','2','P','1','1') #define ERRCODE_INVALID_DATABASE_DEFINITION MAKE_SQLSTATE('4','2','P','1','2') #define ERRCODE_INVALID_FUNCTION_DEFINITION MAKE_SQLSTATE('4','2','P','1','3') #define ERRCODE_INVALID_PSTATEMENT_DEFINITION MAKE_SQLSTATE('4','2','P','1','4') #define ERRCODE_INVALID_SCHEMA_DEFINITION MAKE_SQLSTATE('4','2','P','1','5') #define ERRCODE_INVALID_TABLE_DEFINITION MAKE_SQLSTATE('4','2','P','1','6') #define ERRCODE_INVALID_OBJECT_DEFINITION MAKE_SQLSTATE('4','2','P','1','7') /* Class 44 - WITH CHECK OPTION Violation */ #define ERRCODE_WITH_CHECK_OPTION_VIOLATION MAKE_SQLSTATE('4','4','0','0','0') /* Class 53 - Insufficient Resources */ #define ERRCODE_INSUFFICIENT_RESOURCES MAKE_SQLSTATE('5','3','0','0','0') #define ERRCODE_DISK_FULL MAKE_SQLSTATE('5','3','1','0','0') #define ERRCODE_OUT_OF_MEMORY MAKE_SQLSTATE('5','3','2','0','0') #define ERRCODE_TOO_MANY_CONNECTIONS MAKE_SQLSTATE('5','3','3','0','0') #define ERRCODE_CONFIGURATION_LIMIT_EXCEEDED MAKE_SQLSTATE('5','3','4','0','0') /* Class 54 - Program Limit Exceeded */ #define ERRCODE_PROGRAM_LIMIT_EXCEEDED MAKE_SQLSTATE('5','4','0','0','0') #define ERRCODE_STATEMENT_TOO_COMPLEX MAKE_SQLSTATE('5','4','0','0','1') #define ERRCODE_TOO_MANY_COLUMNS MAKE_SQLSTATE('5','4','0','1','1') #define ERRCODE_TOO_MANY_ARGUMENTS MAKE_SQLSTATE('5','4','0','2','3') /* Class 55 - Object Not In Prerequisite State */ #define ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE MAKE_SQLSTATE('5','5','0','0','0') #define ERRCODE_OBJECT_IN_USE MAKE_SQLSTATE('5','5','0','0','6') #define ERRCODE_CANT_CHANGE_RUNTIME_PARAM MAKE_SQLSTATE('5','5','P','0','2') #define ERRCODE_LOCK_NOT_AVAILABLE MAKE_SQLSTATE('5','5','P','0','3') #define ERRCODE_UNSAFE_NEW_ENUM_VALUE_USAGE MAKE_SQLSTATE('5','5','P','0','4') /* Class 57 - Operator Intervention */ #define ERRCODE_OPERATOR_INTERVENTION MAKE_SQLSTATE('5','7','0','0','0') #define ERRCODE_QUERY_CANCELED MAKE_SQLSTATE('5','7','0','1','4') #define ERRCODE_ADMIN_SHUTDOWN MAKE_SQLSTATE('5','7','P','0','1') #define ERRCODE_CRASH_SHUTDOWN MAKE_SQLSTATE('5','7','P','0','2') #define ERRCODE_CANNOT_CONNECT_NOW MAKE_SQLSTATE('5','7','P','0','3') #define ERRCODE_DATABASE_DROPPED MAKE_SQLSTATE('5','7','P','0','4') /* Class 58 - System Error (errors external to PostgreSQL itself) */ #define ERRCODE_SYSTEM_ERROR MAKE_SQLSTATE('5','8','0','0','0') #define ERRCODE_IO_ERROR MAKE_SQLSTATE('5','8','0','3','0') #define ERRCODE_UNDEFINED_FILE MAKE_SQLSTATE('5','8','P','0','1') #define ERRCODE_DUPLICATE_FILE MAKE_SQLSTATE('5','8','P','0','2') /* Class 72 - Snapshot Failure */ #define ERRCODE_SNAPSHOT_TOO_OLD MAKE_SQLSTATE('7','2','0','0','0') /* Class F0 - Configuration File Error */ #define ERRCODE_CONFIG_FILE_ERROR MAKE_SQLSTATE('F','0','0','0','0') #define ERRCODE_LOCK_FILE_EXISTS MAKE_SQLSTATE('F','0','0','0','1') /* Class HV - Foreign Data Wrapper Error (SQL/MED) */ #define ERRCODE_FDW_ERROR MAKE_SQLSTATE('H','V','0','0','0') #define ERRCODE_FDW_COLUMN_NAME_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','5') #define ERRCODE_FDW_DYNAMIC_PARAMETER_VALUE_NEEDED MAKE_SQLSTATE('H','V','0','0','2') #define ERRCODE_FDW_FUNCTION_SEQUENCE_ERROR MAKE_SQLSTATE('H','V','0','1','0') #define ERRCODE_FDW_INCONSISTENT_DESCRIPTOR_INFORMATION MAKE_SQLSTATE('H','V','0','2','1') #define ERRCODE_FDW_INVALID_ATTRIBUTE_VALUE MAKE_SQLSTATE('H','V','0','2','4') #define ERRCODE_FDW_INVALID_COLUMN_NAME MAKE_SQLSTATE('H','V','0','0','7') #define ERRCODE_FDW_INVALID_COLUMN_NUMBER MAKE_SQLSTATE('H','V','0','0','8') #define ERRCODE_FDW_INVALID_DATA_TYPE MAKE_SQLSTATE('H','V','0','0','4') #define ERRCODE_FDW_INVALID_DATA_TYPE_DESCRIPTORS MAKE_SQLSTATE('H','V','0','0','6') #define ERRCODE_FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER MAKE_SQLSTATE('H','V','0','9','1') #define ERRCODE_FDW_INVALID_HANDLE MAKE_SQLSTATE('H','V','0','0','B') #define ERRCODE_FDW_INVALID_OPTION_INDEX MAKE_SQLSTATE('H','V','0','0','C') #define ERRCODE_FDW_INVALID_OPTION_NAME MAKE_SQLSTATE('H','V','0','0','D') #define ERRCODE_FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH MAKE_SQLSTATE('H','V','0','9','0') #define ERRCODE_FDW_INVALID_STRING_FORMAT MAKE_SQLSTATE('H','V','0','0','A') #define ERRCODE_FDW_INVALID_USE_OF_NULL_POINTER MAKE_SQLSTATE('H','V','0','0','9') #define ERRCODE_FDW_TOO_MANY_HANDLES MAKE_SQLSTATE('H','V','0','1','4') #define ERRCODE_FDW_OUT_OF_MEMORY MAKE_SQLSTATE('H','V','0','0','1') #define ERRCODE_FDW_NO_SCHEMAS MAKE_SQLSTATE('H','V','0','0','P') #define ERRCODE_FDW_OPTION_NAME_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','J') #define ERRCODE_FDW_REPLY_HANDLE MAKE_SQLSTATE('H','V','0','0','K') #define ERRCODE_FDW_SCHEMA_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','Q') #define ERRCODE_FDW_TABLE_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','R') #define ERRCODE_FDW_UNABLE_TO_CREATE_EXECUTION MAKE_SQLSTATE('H','V','0','0','L') #define ERRCODE_FDW_UNABLE_TO_CREATE_REPLY MAKE_SQLSTATE('H','V','0','0','M') #define ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION MAKE_SQLSTATE('H','V','0','0','N') /* Class P0 - PL/pgSQL Error */ #define ERRCODE_PLPGSQL_ERROR MAKE_SQLSTATE('P','0','0','0','0') #define ERRCODE_RAISE_EXCEPTION MAKE_SQLSTATE('P','0','0','0','1') #define ERRCODE_NO_DATA_FOUND MAKE_SQLSTATE('P','0','0','0','2') #define ERRCODE_TOO_MANY_ROWS MAKE_SQLSTATE('P','0','0','0','3') #define ERRCODE_ASSERT_FAILURE MAKE_SQLSTATE('P','0','0','0','4') /* Class XX - Internal Error */ #define ERRCODE_INTERNAL_ERROR MAKE_SQLSTATE('X','X','0','0','0') #define ERRCODE_DATA_CORRUPTED MAKE_SQLSTATE('X','X','0','0','1') #define ERRCODE_INDEX_CORRUPTED MAKE_SQLSTATE('X','X','0','0','2') libpg_query-13-2.1.0/src/postgres/include/utils/expandeddatum.h000066400000000000000000000156431413137616400245100ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * expandeddatum.h * Declarations for access to "expanded" value representations. * * Complex data types, particularly container types such as arrays and * records, usually have on-disk representations that are compact but not * especially convenient to modify. What's more, when we do modify them, * having to recopy all the rest of the value can be extremely inefficient. * Therefore, we provide a notion of an "expanded" representation that is used * only in memory and is optimized more for computation than storage. * The format appearing on disk is called the data type's "flattened" * representation, since it is required to be a contiguous blob of bytes -- * but the type can have an expanded representation that is not. Data types * must provide means to translate an expanded representation back to * flattened form. * * An expanded object is meant to survive across multiple operations, but * not to be enormously long-lived; for example it might be a local variable * in a PL/pgSQL procedure. So its extra bulk compared to the on-disk format * is a worthwhile trade-off. * * References to expanded objects are a type of TOAST pointer. * Because of longstanding conventions in Postgres, this means that the * flattened form of such an object must always be a varlena object. * Fortunately that's no restriction in practice. * * There are actually two kinds of TOAST pointers for expanded objects: * read-only and read-write pointers. Possession of one of the latter * authorizes a function to modify the value in-place rather than copying it * as would normally be required. Functions should always return a read-write * pointer to any new expanded object they create. Functions that modify an * argument value in-place must take care that they do not corrupt the old * value if they fail partway through. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/expandeddatum.h * *------------------------------------------------------------------------- */ #ifndef EXPANDEDDATUM_H #define EXPANDEDDATUM_H /* Size of an EXTERNAL datum that contains a pointer to an expanded object */ #define EXPANDED_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_expanded)) /* * "Methods" that must be provided for any expanded object. * * get_flat_size: compute space needed for flattened representation (total, * including header). * * flatten_into: construct flattened representation in the caller-allocated * space at *result, of size allocated_size (which will always be the result * of a preceding get_flat_size call; it's passed for cross-checking). * * The flattened representation must be a valid in-line, non-compressed, * 4-byte-header varlena object. * * Note: construction of a heap tuple from an expanded datum calls * get_flat_size twice, so it's worthwhile to make sure that that doesn't * incur too much overhead. */ typedef Size (*EOM_get_flat_size_method) (ExpandedObjectHeader *eohptr); typedef void (*EOM_flatten_into_method) (ExpandedObjectHeader *eohptr, void *result, Size allocated_size); /* Struct of function pointers for an expanded object's methods */ typedef struct ExpandedObjectMethods { EOM_get_flat_size_method get_flat_size; EOM_flatten_into_method flatten_into; } ExpandedObjectMethods; /* * Every expanded object must contain this header; typically the header * is embedded in some larger struct that adds type-specific fields. * * It is presumed that the header object and all subsidiary data are stored * in eoh_context, so that the object can be freed by deleting that context, * or its storage lifespan can be altered by reparenting the context. * (In principle the object could own additional resources, such as malloc'd * storage, and use a memory context reset callback to free them upon reset or * deletion of eoh_context.) * * We set up two TOAST pointers within the standard header, one read-write * and one read-only. This allows functions to return either kind of pointer * without making an additional allocation, and in particular without worrying * whether a separately palloc'd object would have sufficient lifespan. * But note that these pointers are just a convenience; a pointer object * appearing somewhere else would still be legal. * * The typedef declaration for this appears in postgres.h. */ struct ExpandedObjectHeader { /* Phony varlena header */ int32 vl_len_; /* always EOH_HEADER_MAGIC, see below */ /* Pointer to methods required for object type */ const ExpandedObjectMethods *eoh_methods; /* Memory context containing this header and subsidiary data */ MemoryContext eoh_context; /* Standard R/W TOAST pointer for this object is kept here */ char eoh_rw_ptr[EXPANDED_POINTER_SIZE]; /* Standard R/O TOAST pointer for this object is kept here */ char eoh_ro_ptr[EXPANDED_POINTER_SIZE]; }; /* * Particularly for read-only functions, it is handy to be able to work with * either regular "flat" varlena inputs or expanded inputs of the same data * type. To allow determining which case an argument-fetching function has * returned, the first int32 of an ExpandedObjectHeader always contains -1 * (EOH_HEADER_MAGIC to the code). This works since no 4-byte-header varlena * could have that as its first 4 bytes. Caution: we could not reliably tell * the difference between an ExpandedObjectHeader and a short-header object * with this trick. However, it works fine if the argument fetching code * always returns either a 4-byte-header flat object or an expanded object. */ #define EOH_HEADER_MAGIC (-1) #define VARATT_IS_EXPANDED_HEADER(PTR) \ (((varattrib_4b *) (PTR))->va_4byte.va_header == (uint32) EOH_HEADER_MAGIC) /* * Generic support functions for expanded objects. * (More of these might be worth inlining later.) */ #define EOHPGetRWDatum(eohptr) PointerGetDatum((eohptr)->eoh_rw_ptr) #define EOHPGetRODatum(eohptr) PointerGetDatum((eohptr)->eoh_ro_ptr) /* Does the Datum represent a writable expanded object? */ #define DatumIsReadWriteExpandedObject(d, isnull, typlen) \ (((isnull) || (typlen) != -1) ? false : \ VARATT_IS_EXTERNAL_EXPANDED_RW(DatumGetPointer(d))) #define MakeExpandedObjectReadOnly(d, isnull, typlen) \ (((isnull) || (typlen) != -1) ? (d) : \ MakeExpandedObjectReadOnlyInternal(d)) extern ExpandedObjectHeader *DatumGetEOHP(Datum d); extern void EOH_init_header(ExpandedObjectHeader *eohptr, const ExpandedObjectMethods *methods, MemoryContext obj_context); extern Size EOH_get_flat_size(ExpandedObjectHeader *eohptr); extern void EOH_flatten_into(ExpandedObjectHeader *eohptr, void *result, Size allocated_size); extern Datum MakeExpandedObjectReadOnlyInternal(Datum d); extern Datum TransferExpandedObject(Datum d, MemoryContext new_parent); extern void DeleteExpandedObject(Datum d); #endif /* EXPANDEDDATUM_H */ libpg_query-13-2.1.0/src/postgres/include/utils/expandedrecord.h000066400000000000000000000226431413137616400246520ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * expandedrecord.h * Declarations for composite expanded objects. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/expandedrecord.h * *------------------------------------------------------------------------- */ #ifndef EXPANDEDRECORD_H #define EXPANDEDRECORD_H #include "access/htup.h" #include "access/tupdesc.h" #include "fmgr.h" #include "utils/expandeddatum.h" /* * An expanded record is contained within a private memory context (as * all expanded objects must be) and has a control structure as below. * * The expanded record might contain a regular "flat" tuple if that was the * original input and we've not modified it. Otherwise, the contents are * represented by Datum/isnull arrays plus type information. We could also * have both forms, if we've deconstructed the original tuple for access * purposes but not yet changed it. For pass-by-reference field types, the * Datums would point into the flat tuple in this situation. Once we start * modifying tuple fields, new pass-by-ref fields are separately palloc'd * within the memory context. * * It's possible to build an expanded record that references a "flat" tuple * stored externally, if the caller can guarantee that that tuple will not * change for the lifetime of the expanded record. (This frammish is mainly * meant to avoid unnecessary data copying in trigger functions.) */ #define ER_MAGIC 1384727874 /* ID for debugging crosschecks */ typedef struct ExpandedRecordHeader { /* Standard header for expanded objects */ ExpandedObjectHeader hdr; /* Magic value identifying an expanded record (for debugging only) */ int er_magic; /* Assorted flag bits */ int flags; #define ER_FLAG_FVALUE_VALID 0x0001 /* fvalue is up to date? */ #define ER_FLAG_FVALUE_ALLOCED 0x0002 /* fvalue is local storage? */ #define ER_FLAG_DVALUES_VALID 0x0004 /* dvalues/dnulls are up to date? */ #define ER_FLAG_DVALUES_ALLOCED 0x0008 /* any field values local storage? */ #define ER_FLAG_HAVE_EXTERNAL 0x0010 /* any field values are external? */ #define ER_FLAG_TUPDESC_ALLOCED 0x0020 /* tupdesc is local storage? */ #define ER_FLAG_IS_DOMAIN 0x0040 /* er_decltypeid is domain? */ #define ER_FLAG_IS_DUMMY 0x0080 /* this header is dummy (see below) */ /* flag bits that are not to be cleared when replacing tuple data: */ #define ER_FLAGS_NON_DATA \ (ER_FLAG_TUPDESC_ALLOCED | ER_FLAG_IS_DOMAIN | ER_FLAG_IS_DUMMY) /* Declared type of the record variable (could be a domain type) */ Oid er_decltypeid; /* * Actual composite type/typmod; never a domain (if ER_FLAG_IS_DOMAIN, * these identify the composite base type). These will match * er_tupdesc->tdtypeid/tdtypmod, as well as the header fields of * composite datums made from or stored in this expanded record. */ Oid er_typeid; /* type OID of the composite type */ int32 er_typmod; /* typmod of the composite type */ /* * Tuple descriptor, if we have one, else NULL. This may point to a * reference-counted tupdesc originally belonging to the typcache, in * which case we use a memory context reset callback to release the * refcount. It can also be locally allocated in this object's private * context (in which case ER_FLAG_TUPDESC_ALLOCED is set). */ TupleDesc er_tupdesc; /* * Unique-within-process identifier for the tupdesc (see typcache.h). This * field will never be equal to INVALID_TUPLEDESC_IDENTIFIER. */ uint64 er_tupdesc_id; /* * If we have a Datum-array representation of the record, it's kept here; * else ER_FLAG_DVALUES_VALID is not set, and dvalues/dnulls may be NULL * if they've not yet been allocated. If allocated, the dvalues and * dnulls arrays are palloc'd within the object private context, and are * of length matching er_tupdesc->natts. For pass-by-ref field types, * dvalues entries might point either into the fstartptr..fendptr area, or * to separately palloc'd chunks. */ Datum *dvalues; /* array of Datums */ bool *dnulls; /* array of is-null flags for Datums */ int nfields; /* length of above arrays */ /* * flat_size is the current space requirement for the flat equivalent of * the expanded record, if known; otherwise it's 0. We store this to make * consecutive calls of get_flat_size cheap. If flat_size is not 0, the * component values data_len, hoff, and hasnull must be valid too. */ Size flat_size; Size data_len; /* data len within flat_size */ int hoff; /* header offset */ bool hasnull; /* null bitmap needed? */ /* * fvalue points to the flat representation if we have one, else it is * NULL. If the flat representation is valid (up to date) then * ER_FLAG_FVALUE_VALID is set. Even if we've outdated the flat * representation due to changes of user fields, it can still be used to * fetch system column values. If we have a flat representation then * fstartptr/fendptr point to the start and end+1 of its data area; this * is so that we can tell which Datum pointers point into the flat * representation rather than being pointers to separately palloc'd data. */ HeapTuple fvalue; /* might or might not be private storage */ char *fstartptr; /* start of its data area */ char *fendptr; /* end+1 of its data area */ /* Some operations on the expanded record need a short-lived context */ MemoryContext er_short_term_cxt; /* short-term memory context */ /* Working state for domain checking, used if ER_FLAG_IS_DOMAIN is set */ struct ExpandedRecordHeader *er_dummy_header; /* dummy record header */ void *er_domaininfo; /* cache space for domain_check() */ /* Callback info (it's active if er_mcb.arg is not NULL) */ MemoryContextCallback er_mcb; } ExpandedRecordHeader; /* fmgr macros for expanded record objects */ #define PG_GETARG_EXPANDED_RECORD(n) DatumGetExpandedRecord(PG_GETARG_DATUM(n)) #define ExpandedRecordGetDatum(erh) EOHPGetRWDatum(&(erh)->hdr) #define ExpandedRecordGetRODatum(erh) EOHPGetRODatum(&(erh)->hdr) #define PG_RETURN_EXPANDED_RECORD(x) PG_RETURN_DATUM(ExpandedRecordGetDatum(x)) /* assorted other macros */ #define ExpandedRecordIsEmpty(erh) \ (((erh)->flags & (ER_FLAG_DVALUES_VALID | ER_FLAG_FVALUE_VALID)) == 0) #define ExpandedRecordIsDomain(erh) \ (((erh)->flags & ER_FLAG_IS_DOMAIN) != 0) /* this can substitute for TransferExpandedObject() when we already have erh */ #define TransferExpandedRecord(erh, cxt) \ MemoryContextSetParent((erh)->hdr.eoh_context, cxt) /* information returned by expanded_record_lookup_field() */ typedef struct ExpandedRecordFieldInfo { int fnumber; /* field's attr number in record */ Oid ftypeid; /* field's type/typmod info */ int32 ftypmod; Oid fcollation; /* field's collation if any */ } ExpandedRecordFieldInfo; /* * prototypes for functions defined in expandedrecord.c */ extern ExpandedRecordHeader *make_expanded_record_from_typeid(Oid type_id, int32 typmod, MemoryContext parentcontext); extern ExpandedRecordHeader *make_expanded_record_from_tupdesc(TupleDesc tupdesc, MemoryContext parentcontext); extern ExpandedRecordHeader *make_expanded_record_from_exprecord(ExpandedRecordHeader *olderh, MemoryContext parentcontext); extern void expanded_record_set_tuple(ExpandedRecordHeader *erh, HeapTuple tuple, bool copy, bool expand_external); extern Datum make_expanded_record_from_datum(Datum recorddatum, MemoryContext parentcontext); extern TupleDesc expanded_record_fetch_tupdesc(ExpandedRecordHeader *erh); extern HeapTuple expanded_record_get_tuple(ExpandedRecordHeader *erh); extern ExpandedRecordHeader *DatumGetExpandedRecord(Datum d); extern void deconstruct_expanded_record(ExpandedRecordHeader *erh); extern bool expanded_record_lookup_field(ExpandedRecordHeader *erh, const char *fieldname, ExpandedRecordFieldInfo *finfo); extern Datum expanded_record_fetch_field(ExpandedRecordHeader *erh, int fnumber, bool *isnull); extern void expanded_record_set_field_internal(ExpandedRecordHeader *erh, int fnumber, Datum newValue, bool isnull, bool expand_external, bool check_constraints); extern void expanded_record_set_fields(ExpandedRecordHeader *erh, const Datum *newValues, const bool *isnulls, bool expand_external); /* outside code should never call expanded_record_set_field_internal as such */ #define expanded_record_set_field(erh, fnumber, newValue, isnull, expand_external) \ expanded_record_set_field_internal(erh, fnumber, newValue, isnull, expand_external, true) /* * Inline-able fast cases. The expanded_record_fetch_xxx functions above * handle the general cases. */ /* Get the tupdesc for the expanded record's actual type */ static inline TupleDesc expanded_record_get_tupdesc(ExpandedRecordHeader *erh) { if (likely(erh->er_tupdesc != NULL)) return erh->er_tupdesc; else return expanded_record_fetch_tupdesc(erh); } /* Get value of record field */ static inline Datum expanded_record_get_field(ExpandedRecordHeader *erh, int fnumber, bool *isnull) { if ((erh->flags & ER_FLAG_DVALUES_VALID) && likely(fnumber > 0 && fnumber <= erh->nfields)) { *isnull = erh->dnulls[fnumber - 1]; return erh->dvalues[fnumber - 1]; } else return expanded_record_fetch_field(erh, fnumber, isnull); } #endif /* EXPANDEDRECORD_H */ libpg_query-13-2.1.0/src/postgres/include/utils/float.h000066400000000000000000000203271413137616400227650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * float.h * Definitions for the built-in floating-point types * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/include/utils/float.h * *------------------------------------------------------------------------- */ #ifndef FLOAT_H #define FLOAT_H #include #ifndef M_PI /* From my RH5.2 gcc math.h file - thomas 2000-04-03 */ #define M_PI 3.14159265358979323846 #endif /* Radians per degree, a.k.a. PI / 180 */ #define RADIANS_PER_DEGREE 0.0174532925199432957692 /* Visual C++ etc lacks NAN, and won't accept 0.0/0.0. */ #if defined(WIN32) && !defined(NAN) static const uint32 nan[2] = {0xffffffff, 0x7fffffff}; #define NAN (*(const float8 *) nan) #endif extern PGDLLIMPORT int extra_float_digits; /* * Utility functions in float.c */ extern void float_overflow_error(void) pg_attribute_noreturn(); extern void float_underflow_error(void) pg_attribute_noreturn(); extern void float_zero_divide_error(void) pg_attribute_noreturn(); extern int is_infinite(float8 val); extern float8 float8in_internal(char *num, char **endptr_p, const char *type_name, const char *orig_string); extern float8 float8in_internal_opt_error(char *num, char **endptr_p, const char *type_name, const char *orig_string, bool *have_error); extern char *float8out_internal(float8 num); extern int float4_cmp_internal(float4 a, float4 b); extern int float8_cmp_internal(float8 a, float8 b); /* * Routines to provide reasonably platform-independent handling of * infinity and NaN * * We assume that isinf() and isnan() are available and work per spec. * (On some platforms, we have to supply our own; see src/port.) However, * generating an Infinity or NaN in the first place is less well standardized; * pre-C99 systems tend not to have C99's INFINITY and NaN macros. We * centralize our workarounds for this here. */ /* * The funny placements of the two #pragmas is necessary because of a * long lived bug in the Microsoft compilers. * See http://support.microsoft.com/kb/120968/en-us for details */ #ifdef _MSC_VER #pragma warning(disable:4756) #endif static inline float4 get_float4_infinity(void) { #ifdef INFINITY /* C99 standard way */ return (float4) INFINITY; #else #ifdef _MSC_VER #pragma warning(default:4756) #endif /* * On some platforms, HUGE_VAL is an infinity, elsewhere it's just the * largest normal float8. We assume forcing an overflow will get us a * true infinity. */ return (float4) (HUGE_VAL * HUGE_VAL); #endif } static inline float8 get_float8_infinity(void) { #ifdef INFINITY /* C99 standard way */ return (float8) INFINITY; #else /* * On some platforms, HUGE_VAL is an infinity, elsewhere it's just the * largest normal float8. We assume forcing an overflow will get us a * true infinity. */ return (float8) (HUGE_VAL * HUGE_VAL); #endif } static inline float4 get_float4_nan(void) { #ifdef NAN /* C99 standard way */ return (float4) NAN; #else /* Assume we can get a NAN via zero divide */ return (float4) (0.0 / 0.0); #endif } static inline float8 get_float8_nan(void) { /* (float8) NAN doesn't work on some NetBSD/MIPS releases */ #if defined(NAN) && !(defined(__NetBSD__) && defined(__mips__)) /* C99 standard way */ return (float8) NAN; #else /* Assume we can get a NaN via zero divide */ return (float8) (0.0 / 0.0); #endif } /* * Floating-point arithmetic with overflow/underflow reported as errors * * There isn't any way to check for underflow of addition/subtraction * because numbers near the underflow value have already been rounded to * the point where we can't detect that the two values were originally * different, e.g. on x86, '1e-45'::float4 == '2e-45'::float4 == * 1.4013e-45. */ static inline float4 float4_pl(const float4 val1, const float4 val2) { float4 result; result = val1 + val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); return result; } static inline float8 float8_pl(const float8 val1, const float8 val2) { float8 result; result = val1 + val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); return result; } static inline float4 float4_mi(const float4 val1, const float4 val2) { float4 result; result = val1 - val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); return result; } static inline float8 float8_mi(const float8 val1, const float8 val2) { float8 result; result = val1 - val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); return result; } static inline float4 float4_mul(const float4 val1, const float4 val2) { float4 result; result = val1 * val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); if (unlikely(result == 0.0f) && val1 != 0.0f && val2 != 0.0f) float_underflow_error(); return result; } static inline float8 float8_mul(const float8 val1, const float8 val2) { float8 result; result = val1 * val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); if (unlikely(result == 0.0) && val1 != 0.0 && val2 != 0.0) float_underflow_error(); return result; } static inline float4 float4_div(const float4 val1, const float4 val2) { float4 result; if (unlikely(val2 == 0.0f)) float_zero_divide_error(); result = val1 / val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); if (unlikely(result == 0.0f) && val1 != 0.0f) float_underflow_error(); return result; } static inline float8 float8_div(const float8 val1, const float8 val2) { float8 result; if (unlikely(val2 == 0.0)) float_zero_divide_error(); result = val1 / val2; if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2)) float_overflow_error(); if (unlikely(result == 0.0) && val1 != 0.0) float_underflow_error(); return result; } /* * Routines for NaN-aware comparisons * * We consider all NaNs to be equal and larger than any non-NaN. This is * somewhat arbitrary; the important thing is to have a consistent sort * order. */ static inline bool float4_eq(const float4 val1, const float4 val2) { return isnan(val1) ? isnan(val2) : !isnan(val2) && val1 == val2; } static inline bool float8_eq(const float8 val1, const float8 val2) { return isnan(val1) ? isnan(val2) : !isnan(val2) && val1 == val2; } static inline bool float4_ne(const float4 val1, const float4 val2) { return isnan(val1) ? !isnan(val2) : isnan(val2) || val1 != val2; } static inline bool float8_ne(const float8 val1, const float8 val2) { return isnan(val1) ? !isnan(val2) : isnan(val2) || val1 != val2; } static inline bool float4_lt(const float4 val1, const float4 val2) { return !isnan(val1) && (isnan(val2) || val1 < val2); } static inline bool float8_lt(const float8 val1, const float8 val2) { return !isnan(val1) && (isnan(val2) || val1 < val2); } static inline bool float4_le(const float4 val1, const float4 val2) { return isnan(val2) || (!isnan(val1) && val1 <= val2); } static inline bool float8_le(const float8 val1, const float8 val2) { return isnan(val2) || (!isnan(val1) && val1 <= val2); } static inline bool float4_gt(const float4 val1, const float4 val2) { return !isnan(val2) && (isnan(val1) || val1 > val2); } static inline bool float8_gt(const float8 val1, const float8 val2) { return !isnan(val2) && (isnan(val1) || val1 > val2); } static inline bool float4_ge(const float4 val1, const float4 val2) { return isnan(val1) || (!isnan(val2) && val1 >= val2); } static inline bool float8_ge(const float8 val1, const float8 val2) { return isnan(val1) || (!isnan(val2) && val1 >= val2); } static inline float4 float4_min(const float4 val1, const float4 val2) { return float4_lt(val1, val2) ? val1 : val2; } static inline float8 float8_min(const float8 val1, const float8 val2) { return float8_lt(val1, val2) ? val1 : val2; } static inline float4 float4_max(const float4 val1, const float4 val2) { return float4_gt(val1, val2) ? val1 : val2; } static inline float8 float8_max(const float8 val1, const float8 val2) { return float8_gt(val1, val2) ? val1 : val2; } #endif /* FLOAT_H */ libpg_query-13-2.1.0/src/postgres/include/utils/fmgroids.h000066400000000000000000002363411413137616400234770ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fmgroids.h * Macros that define the OIDs of built-in functions. * * These macros can be used to avoid a catalog lookup when a specific * fmgr-callable function needs to be referenced. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/utils/Gen_fmgrtab.pl * *------------------------------------------------------------------------- */ #ifndef FMGROIDS_H #define FMGROIDS_H /* * Constant macros for the OIDs of entries in pg_proc. * * NOTE: macros are named after the prosrc value, ie the actual C name * of the implementing function, not the proname which may be overloaded. * For example, we want to be able to assign different macro names to both * char_text() and name_text() even though these both appear with proname * 'text'. If the same C function appears in more than one pg_proc entry, * its equivalent macro will be defined with the lowest OID among those * entries. */ #define F_HEAP_TABLEAM_HANDLER 3 #define F_BYTEAOUT 31 #define F_CHAROUT 33 #define F_NAMEIN 34 #define F_NAMEOUT 35 #define F_INT2IN 38 #define F_INT2OUT 39 #define F_INT2VECTORIN 40 #define F_INT2VECTOROUT 41 #define F_INT4IN 42 #define F_INT4OUT 43 #define F_REGPROCIN 44 #define F_REGPROCOUT 45 #define F_TEXTIN 46 #define F_TEXTOUT 47 #define F_TIDIN 48 #define F_TIDOUT 49 #define F_XIDIN 50 #define F_XIDOUT 51 #define F_CIDIN 52 #define F_CIDOUT 53 #define F_OIDVECTORIN 54 #define F_OIDVECTOROUT 55 #define F_BOOLLT 56 #define F_BOOLGT 57 #define F_BOOLEQ 60 #define F_CHAREQ 61 #define F_NAMEEQ 62 #define F_INT2EQ 63 #define F_INT2LT 64 #define F_INT4EQ 65 #define F_INT4LT 66 #define F_TEXTEQ 67 #define F_XIDEQ 68 #define F_CIDEQ 69 #define F_CHARNE 70 #define F_CHARLE 72 #define F_CHARGT 73 #define F_CHARGE 74 #define F_CHARTOI4 77 #define F_I4TOCHAR 78 #define F_NAMEREGEXEQ 79 #define F_BOOLNE 84 #define F_PG_DDL_COMMAND_IN 86 #define F_PG_DDL_COMMAND_OUT 87 #define F_PG_DDL_COMMAND_RECV 88 #define F_PGSQL_VERSION 89 #define F_PG_DDL_COMMAND_SEND 90 #define F_EQSEL 101 #define F_NEQSEL 102 #define F_SCALARLTSEL 103 #define F_SCALARGTSEL 104 #define F_EQJOINSEL 105 #define F_NEQJOINSEL 106 #define F_SCALARLTJOINSEL 107 #define F_SCALARGTJOINSEL 108 #define F_UNKNOWNIN 109 #define F_UNKNOWNOUT 110 #define F_NUMERIC_FAC 111 #define F_BOX_ABOVE_EQ 115 #define F_BOX_BELOW_EQ 116 #define F_POINT_IN 117 #define F_POINT_OUT 118 #define F_LSEG_IN 119 #define F_LSEG_OUT 120 #define F_PATH_IN 121 #define F_PATH_OUT 122 #define F_BOX_IN 123 #define F_BOX_OUT 124 #define F_BOX_OVERLAP 125 #define F_BOX_GE 126 #define F_BOX_GT 127 #define F_BOX_EQ 128 #define F_BOX_LT 129 #define F_BOX_LE 130 #define F_POINT_ABOVE 131 #define F_POINT_LEFT 132 #define F_POINT_RIGHT 133 #define F_POINT_BELOW 134 #define F_POINT_EQ 135 #define F_ON_PB 136 #define F_ON_PPATH 137 #define F_BOX_CENTER 138 #define F_AREASEL 139 #define F_AREAJOINSEL 140 #define F_INT4MUL 141 #define F_INT4NE 144 #define F_INT2NE 145 #define F_INT2GT 146 #define F_INT4GT 147 #define F_INT2LE 148 #define F_INT4LE 149 #define F_INT4GE 150 #define F_INT2GE 151 #define F_INT2MUL 152 #define F_INT2DIV 153 #define F_INT4DIV 154 #define F_INT2MOD 155 #define F_INT4MOD 156 #define F_TEXTNE 157 #define F_INT24EQ 158 #define F_INT42EQ 159 #define F_INT24LT 160 #define F_INT42LT 161 #define F_INT24GT 162 #define F_INT42GT 163 #define F_INT24NE 164 #define F_INT42NE 165 #define F_INT24LE 166 #define F_INT42LE 167 #define F_INT24GE 168 #define F_INT42GE 169 #define F_INT24MUL 170 #define F_INT42MUL 171 #define F_INT24DIV 172 #define F_INT42DIV 173 #define F_INT2PL 176 #define F_INT4PL 177 #define F_INT24PL 178 #define F_INT42PL 179 #define F_INT2MI 180 #define F_INT4MI 181 #define F_INT24MI 182 #define F_INT42MI 183 #define F_OIDEQ 184 #define F_OIDNE 185 #define F_BOX_SAME 186 #define F_BOX_CONTAIN 187 #define F_BOX_LEFT 188 #define F_BOX_OVERLEFT 189 #define F_BOX_OVERRIGHT 190 #define F_BOX_RIGHT 191 #define F_BOX_CONTAINED 192 #define F_BOX_CONTAIN_PT 193 #define F_PG_NODE_TREE_IN 195 #define F_PG_NODE_TREE_OUT 196 #define F_PG_NODE_TREE_RECV 197 #define F_PG_NODE_TREE_SEND 198 #define F_FLOAT4IN 200 #define F_FLOAT4OUT 201 #define F_FLOAT4MUL 202 #define F_FLOAT4DIV 203 #define F_FLOAT4PL 204 #define F_FLOAT4MI 205 #define F_FLOAT4UM 206 #define F_FLOAT4ABS 207 #define F_FLOAT4_ACCUM 208 #define F_FLOAT4LARGER 209 #define F_FLOAT4SMALLER 211 #define F_INT4UM 212 #define F_INT2UM 213 #define F_FLOAT8IN 214 #define F_FLOAT8OUT 215 #define F_FLOAT8MUL 216 #define F_FLOAT8DIV 217 #define F_FLOAT8PL 218 #define F_FLOAT8MI 219 #define F_FLOAT8UM 220 #define F_FLOAT8ABS 221 #define F_FLOAT8_ACCUM 222 #define F_FLOAT8LARGER 223 #define F_FLOAT8SMALLER 224 #define F_LSEG_CENTER 225 #define F_PATH_CENTER 226 #define F_POLY_CENTER 227 #define F_DROUND 228 #define F_DTRUNC 229 #define F_DSQRT 230 #define F_DCBRT 231 #define F_DPOW 232 #define F_DEXP 233 #define F_DLOG1 234 #define F_I2TOD 235 #define F_I2TOF 236 #define F_DTOI2 237 #define F_FTOI2 238 #define F_LINE_DISTANCE 239 #define F_NAMEEQTEXT 240 #define F_NAMELTTEXT 241 #define F_NAMELETEXT 242 #define F_NAMEGETEXT 243 #define F_NAMEGTTEXT 244 #define F_NAMENETEXT 245 #define F_BTNAMETEXTCMP 246 #define F_TEXTEQNAME 247 #define F_TEXTLTNAME 248 #define F_TEXTLENAME 249 #define F_TEXTGENAME 250 #define F_TEXTGTNAME 251 #define F_TEXTNENAME 252 #define F_BTTEXTNAMECMP 253 #define F_NAMECONCATOID 266 #define F_TABLE_AM_HANDLER_IN 267 #define F_TABLE_AM_HANDLER_OUT 268 #define F_TIMEOFDAY 274 #define F_PG_NEXTOID 275 #define F_FLOAT8_COMBINE 276 #define F_INTER_SL 277 #define F_INTER_LB 278 #define F_FLOAT48MUL 279 #define F_FLOAT48DIV 280 #define F_FLOAT48PL 281 #define F_FLOAT48MI 282 #define F_FLOAT84MUL 283 #define F_FLOAT84DIV 284 #define F_FLOAT84PL 285 #define F_FLOAT84MI 286 #define F_FLOAT4EQ 287 #define F_FLOAT4NE 288 #define F_FLOAT4LT 289 #define F_FLOAT4LE 290 #define F_FLOAT4GT 291 #define F_FLOAT4GE 292 #define F_FLOAT8EQ 293 #define F_FLOAT8NE 294 #define F_FLOAT8LT 295 #define F_FLOAT8LE 296 #define F_FLOAT8GT 297 #define F_FLOAT8GE 298 #define F_FLOAT48EQ 299 #define F_FLOAT48NE 300 #define F_FLOAT48LT 301 #define F_FLOAT48LE 302 #define F_FLOAT48GT 303 #define F_FLOAT48GE 304 #define F_FLOAT84EQ 305 #define F_FLOAT84NE 306 #define F_FLOAT84LT 307 #define F_FLOAT84LE 308 #define F_FLOAT84GT 309 #define F_FLOAT84GE 310 #define F_FTOD 311 #define F_DTOF 312 #define F_I2TOI4 313 #define F_I4TOI2 314 #define F_PG_JIT_AVAILABLE 315 #define F_I4TOD 316 #define F_DTOI4 317 #define F_I4TOF 318 #define F_FTOI4 319 #define F_WIDTH_BUCKET_FLOAT8 320 #define F_JSON_IN 321 #define F_JSON_OUT 322 #define F_JSON_RECV 323 #define F_JSON_SEND 324 #define F_INDEX_AM_HANDLER_IN 326 #define F_INDEX_AM_HANDLER_OUT 327 #define F_HASHMACADDR8 328 #define F_HASH_ACLITEM 329 #define F_BTHANDLER 330 #define F_HASHHANDLER 331 #define F_GISTHANDLER 332 #define F_GINHANDLER 333 #define F_SPGHANDLER 334 #define F_BRINHANDLER 335 #define F_SCALARLESEL 336 #define F_SCALARGESEL 337 #define F_AMVALIDATE 338 #define F_POLY_SAME 339 #define F_POLY_CONTAIN 340 #define F_POLY_LEFT 341 #define F_POLY_OVERLEFT 342 #define F_POLY_OVERRIGHT 343 #define F_POLY_RIGHT 344 #define F_POLY_CONTAINED 345 #define F_POLY_OVERLAP 346 #define F_POLY_IN 347 #define F_POLY_OUT 348 #define F_BTINT2CMP 350 #define F_BTINT4CMP 351 #define F_BTFLOAT4CMP 354 #define F_BTFLOAT8CMP 355 #define F_BTOIDCMP 356 #define F_DIST_BP 357 #define F_BTCHARCMP 358 #define F_BTNAMECMP 359 #define F_BTTEXTCMP 360 #define F_LSEG_DISTANCE 361 #define F_LSEG_INTERPT 362 #define F_DIST_PS 363 #define F_DIST_PB 364 #define F_DIST_SB 365 #define F_CLOSE_PS 366 #define F_CLOSE_PB 367 #define F_CLOSE_SB 368 #define F_ON_PS 369 #define F_PATH_DISTANCE 370 #define F_DIST_PPATH 371 #define F_ON_SB 372 #define F_INTER_SB 373 #define F_TEXT_TO_ARRAY_NULL 376 #define F_CASH_CMP 377 #define F_ARRAY_APPEND 378 #define F_ARRAY_PREPEND 379 #define F_DIST_SP 380 #define F_DIST_BS 381 #define F_BTARRAYCMP 382 #define F_ARRAY_CAT 383 #define F_ARRAY_TO_TEXT_NULL 384 #define F_SCALARLEJOINSEL 386 #define F_ARRAY_NE 390 #define F_ARRAY_LT 391 #define F_ARRAY_GT 392 #define F_ARRAY_LE 393 #define F_TEXT_TO_ARRAY 394 #define F_ARRAY_TO_TEXT 395 #define F_ARRAY_GE 396 #define F_SCALARGEJOINSEL 398 #define F_HASHMACADDR 399 #define F_HASHTEXT 400 #define F_RTRIM1 401 #define F_BTOIDVECTORCMP 404 #define F_NAME_TEXT 406 #define F_TEXT_NAME 407 #define F_NAME_BPCHAR 408 #define F_BPCHAR_NAME 409 #define F_DIST_PATHP 421 #define F_HASHINET 422 #define F_HASHINT4EXTENDED 425 #define F_HASH_NUMERIC 432 #define F_MACADDR_IN 436 #define F_MACADDR_OUT 437 #define F_PG_NUM_NULLS 438 #define F_PG_NUM_NONNULLS 440 #define F_HASHINT2EXTENDED 441 #define F_HASHINT8EXTENDED 442 #define F_HASHFLOAT4EXTENDED 443 #define F_HASHFLOAT8EXTENDED 444 #define F_HASHOIDEXTENDED 445 #define F_HASHCHAREXTENDED 446 #define F_HASHNAMEEXTENDED 447 #define F_HASHTEXTEXTENDED 448 #define F_HASHINT2 449 #define F_HASHINT4 450 #define F_HASHFLOAT4 451 #define F_HASHFLOAT8 452 #define F_HASHOID 453 #define F_HASHCHAR 454 #define F_HASHNAME 455 #define F_HASHVARLENA 456 #define F_HASHOIDVECTOR 457 #define F_TEXT_LARGER 458 #define F_TEXT_SMALLER 459 #define F_INT8IN 460 #define F_INT8OUT 461 #define F_INT8UM 462 #define F_INT8PL 463 #define F_INT8MI 464 #define F_INT8MUL 465 #define F_INT8DIV 466 #define F_INT8EQ 467 #define F_INT8NE 468 #define F_INT8LT 469 #define F_INT8GT 470 #define F_INT8LE 471 #define F_INT8GE 472 #define F_INT84EQ 474 #define F_INT84NE 475 #define F_INT84LT 476 #define F_INT84GT 477 #define F_INT84LE 478 #define F_INT84GE 479 #define F_INT84 480 #define F_INT48 481 #define F_I8TOD 482 #define F_DTOI8 483 #define F_ARRAY_LARGER 515 #define F_ARRAY_SMALLER 516 #define F_INET_ABBREV 598 #define F_CIDR_ABBREV 599 #define F_INET_SET_MASKLEN 605 #define F_OIDVECTORNE 619 #define F_HASH_ARRAY 626 #define F_CIDR_SET_MASKLEN 635 #define F_PG_INDEXAM_HAS_PROPERTY 636 #define F_PG_INDEX_HAS_PROPERTY 637 #define F_PG_INDEX_COLUMN_HAS_PROPERTY 638 #define F_I8TOF 652 #define F_FTOI8 653 #define F_NAMELT 655 #define F_NAMELE 656 #define F_NAMEGT 657 #define F_NAMEGE 658 #define F_NAMENE 659 #define F_BPCHAR 668 #define F_VARCHAR 669 #define F_PG_INDEXAM_PROGRESS_PHASENAME 676 #define F_OIDVECTORLT 677 #define F_OIDVECTORLE 678 #define F_OIDVECTOREQ 679 #define F_OIDVECTORGE 680 #define F_OIDVECTORGT 681 #define F_NETWORK_NETWORK 683 #define F_NETWORK_NETMASK 696 #define F_NETWORK_MASKLEN 697 #define F_NETWORK_BROADCAST 698 #define F_NETWORK_HOST 699 #define F_DIST_LP 702 #define F_DIST_BL 703 #define F_DIST_LS 704 #define F_CURRENT_USER 710 #define F_NETWORK_FAMILY 711 #define F_INT82 714 #define F_BE_LO_CREATE 715 #define F_OIDLT 716 #define F_OIDLE 717 #define F_BYTEAOCTETLEN 720 #define F_BYTEAGETBYTE 721 #define F_BYTEASETBYTE 722 #define F_BYTEAGETBIT 723 #define F_BYTEASETBIT 724 #define F_DIST_PL 725 #define F_DIST_LB 726 #define F_DIST_SL 727 #define F_DIST_CPOLY 728 #define F_POLY_DISTANCE 729 #define F_NETWORK_SHOW 730 #define F_TEXT_LT 740 #define F_TEXT_LE 741 #define F_TEXT_GT 742 #define F_TEXT_GE 743 #define F_ARRAY_EQ 744 #define F_SESSION_USER 746 #define F_ARRAY_DIMS 747 #define F_ARRAY_NDIMS 748 #define F_BYTEAOVERLAY 749 #define F_ARRAY_IN 750 #define F_ARRAY_OUT 751 #define F_BYTEAOVERLAY_NO_LEN 752 #define F_MACADDR_TRUNC 753 #define F_INT28 754 #define F_BE_LO_IMPORT 764 #define F_BE_LO_EXPORT 765 #define F_INT4INC 766 #define F_BE_LO_IMPORT_WITH_OID 767 #define F_INT4LARGER 768 #define F_INT4SMALLER 769 #define F_INT2LARGER 770 #define F_INT2SMALLER 771 #define F_HASHVARLENAEXTENDED 772 #define F_HASHOIDVECTOREXTENDED 776 #define F_HASH_ACLITEM_EXTENDED 777 #define F_HASHMACADDREXTENDED 778 #define F_HASHINETEXTENDED 779 #define F_HASH_NUMERIC_EXTENDED 780 #define F_HASHMACADDR8EXTENDED 781 #define F_HASH_ARRAY_EXTENDED 782 #define F_DIST_POLYC 785 #define F_PG_CLIENT_ENCODING 810 #define F_CURRENT_QUERY 817 #define F_MACADDR_EQ 830 #define F_MACADDR_LT 831 #define F_MACADDR_LE 832 #define F_MACADDR_GT 833 #define F_MACADDR_GE 834 #define F_MACADDR_NE 835 #define F_MACADDR_CMP 836 #define F_INT82PL 837 #define F_INT82MI 838 #define F_INT82MUL 839 #define F_INT82DIV 840 #define F_INT28PL 841 #define F_BTINT8CMP 842 #define F_CASH_MUL_FLT4 846 #define F_CASH_DIV_FLT4 847 #define F_FLT4_MUL_CASH 848 #define F_TEXTPOS 849 #define F_TEXTLIKE 850 #define F_TEXTNLIKE 851 #define F_INT48EQ 852 #define F_INT48NE 853 #define F_INT48LT 854 #define F_INT48GT 855 #define F_INT48LE 856 #define F_INT48GE 857 #define F_NAMELIKE 858 #define F_NAMENLIKE 859 #define F_CHAR_BPCHAR 860 #define F_CURRENT_DATABASE 861 #define F_INT4_MUL_CASH 862 #define F_INT2_MUL_CASH 863 #define F_CASH_MUL_INT4 864 #define F_CASH_DIV_INT4 865 #define F_CASH_MUL_INT2 866 #define F_CASH_DIV_INT2 867 #define F_LOWER 870 #define F_UPPER 871 #define F_INITCAP 872 #define F_LPAD 873 #define F_RPAD 874 #define F_LTRIM 875 #define F_RTRIM 876 #define F_TEXT_SUBSTR 877 #define F_TRANSLATE 878 #define F_LTRIM1 881 #define F_TEXT_SUBSTR_NO_LEN 883 #define F_BTRIM 884 #define F_BTRIM1 885 #define F_CASH_IN 886 #define F_CASH_OUT 887 #define F_CASH_EQ 888 #define F_CASH_NE 889 #define F_CASH_LT 890 #define F_CASH_LE 891 #define F_CASH_GT 892 #define F_CASH_GE 893 #define F_CASH_PL 894 #define F_CASH_MI 895 #define F_CASH_MUL_FLT8 896 #define F_CASH_DIV_FLT8 897 #define F_CASHLARGER 898 #define F_CASHSMALLER 899 #define F_INET_IN 910 #define F_INET_OUT 911 #define F_FLT8_MUL_CASH 919 #define F_NETWORK_EQ 920 #define F_NETWORK_LT 921 #define F_NETWORK_LE 922 #define F_NETWORK_GT 923 #define F_NETWORK_GE 924 #define F_NETWORK_NE 925 #define F_NETWORK_CMP 926 #define F_NETWORK_SUB 927 #define F_NETWORK_SUBEQ 928 #define F_NETWORK_SUP 929 #define F_NETWORK_SUPEQ 930 #define F_CASH_WORDS 935 #define F_GENERATE_SERIES_TIMESTAMP 938 #define F_GENERATE_SERIES_TIMESTAMPTZ 939 #define F_INT28MI 942 #define F_INT28MUL 943 #define F_TEXT_CHAR 944 #define F_INT8MOD 945 #define F_CHAR_TEXT 946 #define F_INT28DIV 948 #define F_HASHINT8 949 #define F_BE_LO_OPEN 952 #define F_BE_LO_CLOSE 953 #define F_BE_LOREAD 954 #define F_BE_LOWRITE 955 #define F_BE_LO_LSEEK 956 #define F_BE_LO_CREAT 957 #define F_BE_LO_TELL 958 #define F_ON_PL 959 #define F_ON_SL 960 #define F_CLOSE_PL 961 #define F_CLOSE_SL 962 #define F_CLOSE_LB 963 #define F_BE_LO_UNLINK 964 #define F_HASHBPCHAREXTENDED 972 #define F_PATH_INTER 973 #define F_BOX_AREA 975 #define F_BOX_WIDTH 976 #define F_BOX_HEIGHT 977 #define F_BOX_DISTANCE 978 #define F_PATH_AREA 979 #define F_BOX_INTERSECT 980 #define F_BOX_DIAGONAL 981 #define F_PATH_N_LT 982 #define F_PATH_N_GT 983 #define F_PATH_N_EQ 984 #define F_PATH_N_LE 985 #define F_PATH_N_GE 986 #define F_PATH_LENGTH 987 #define F_POINT_NE 988 #define F_POINT_VERT 989 #define F_POINT_HORIZ 990 #define F_POINT_DISTANCE 991 #define F_POINT_SLOPE 992 #define F_LSEG_CONSTRUCT 993 #define F_LSEG_INTERSECT 994 #define F_LSEG_PARALLEL 995 #define F_LSEG_PERP 996 #define F_LSEG_VERTICAL 997 #define F_LSEG_HORIZONTAL 998 #define F_LSEG_EQ 999 #define F_BE_LO_TRUNCATE 1004 #define F_TEXTLIKE_SUPPORT 1023 #define F_TEXTICREGEXEQ_SUPPORT 1024 #define F_TEXTICLIKE_SUPPORT 1025 #define F_TIMESTAMPTZ_IZONE 1026 #define F_GIST_POINT_COMPRESS 1030 #define F_ACLITEMIN 1031 #define F_ACLITEMOUT 1032 #define F_ACLINSERT 1035 #define F_ACLREMOVE 1036 #define F_ACLCONTAINS 1037 #define F_GETDATABASEENCODING 1039 #define F_BPCHARIN 1044 #define F_BPCHAROUT 1045 #define F_VARCHARIN 1046 #define F_VARCHAROUT 1047 #define F_BPCHAREQ 1048 #define F_BPCHARLT 1049 #define F_BPCHARLE 1050 #define F_BPCHARGT 1051 #define F_BPCHARGE 1052 #define F_BPCHARNE 1053 #define F_ACLITEM_EQ 1062 #define F_BPCHAR_LARGER 1063 #define F_BPCHAR_SMALLER 1064 #define F_PG_PREPARED_XACT 1065 #define F_GENERATE_SERIES_STEP_INT4 1066 #define F_GENERATE_SERIES_INT4 1067 #define F_GENERATE_SERIES_STEP_INT8 1068 #define F_GENERATE_SERIES_INT8 1069 #define F_BPCHARCMP 1078 #define F_TEXT_REGCLASS 1079 #define F_HASHBPCHAR 1080 #define F_FORMAT_TYPE 1081 #define F_DATE_IN 1084 #define F_DATE_OUT 1085 #define F_DATE_EQ 1086 #define F_DATE_LT 1087 #define F_DATE_LE 1088 #define F_DATE_GT 1089 #define F_DATE_GE 1090 #define F_DATE_NE 1091 #define F_DATE_CMP 1092 #define F_TIME_LT 1102 #define F_TIME_LE 1103 #define F_TIME_GT 1104 #define F_TIME_GE 1105 #define F_TIME_NE 1106 #define F_TIME_CMP 1107 #define F_DATE_LARGER 1138 #define F_DATE_SMALLER 1139 #define F_DATE_MI 1140 #define F_DATE_PLI 1141 #define F_DATE_MII 1142 #define F_TIME_IN 1143 #define F_TIME_OUT 1144 #define F_TIME_EQ 1145 #define F_CIRCLE_ADD_PT 1146 #define F_CIRCLE_SUB_PT 1147 #define F_CIRCLE_MUL_PT 1148 #define F_CIRCLE_DIV_PT 1149 #define F_TIMESTAMPTZ_IN 1150 #define F_TIMESTAMPTZ_OUT 1151 #define F_TIMESTAMP_EQ 1152 #define F_TIMESTAMP_NE 1153 #define F_TIMESTAMP_LT 1154 #define F_TIMESTAMP_LE 1155 #define F_TIMESTAMP_GE 1156 #define F_TIMESTAMP_GT 1157 #define F_FLOAT8_TIMESTAMPTZ 1158 #define F_TIMESTAMPTZ_ZONE 1159 #define F_INTERVAL_IN 1160 #define F_INTERVAL_OUT 1161 #define F_INTERVAL_EQ 1162 #define F_INTERVAL_NE 1163 #define F_INTERVAL_LT 1164 #define F_INTERVAL_LE 1165 #define F_INTERVAL_GE 1166 #define F_INTERVAL_GT 1167 #define F_INTERVAL_UM 1168 #define F_INTERVAL_PL 1169 #define F_INTERVAL_MI 1170 #define F_TIMESTAMPTZ_PART 1171 #define F_INTERVAL_PART 1172 #define F_NETWORK_SUBSET_SUPPORT 1173 #define F_DATE_TIMESTAMPTZ 1174 #define F_INTERVAL_JUSTIFY_HOURS 1175 #define F_JSONB_PATH_EXISTS_TZ 1177 #define F_TIMESTAMPTZ_DATE 1178 #define F_JSONB_PATH_QUERY_TZ 1179 #define F_JSONB_PATH_QUERY_ARRAY_TZ 1180 #define F_XID_AGE 1181 #define F_TIMESTAMP_MI 1188 #define F_TIMESTAMPTZ_PL_INTERVAL 1189 #define F_TIMESTAMPTZ_MI_INTERVAL 1190 #define F_GENERATE_SUBSCRIPTS 1191 #define F_GENERATE_SUBSCRIPTS_NODIR 1192 #define F_ARRAY_FILL 1193 #define F_DLOG10 1194 #define F_TIMESTAMP_SMALLER 1195 #define F_TIMESTAMP_LARGER 1196 #define F_INTERVAL_SMALLER 1197 #define F_INTERVAL_LARGER 1198 #define F_TIMESTAMPTZ_AGE 1199 #define F_INTERVAL_SCALE 1200 #define F_TIMESTAMPTZ_TRUNC 1217 #define F_INTERVAL_TRUNC 1218 #define F_INT8INC 1219 #define F_INT8ABS 1230 #define F_INT8LARGER 1236 #define F_INT8SMALLER 1237 #define F_TEXTICREGEXEQ 1238 #define F_TEXTICREGEXNE 1239 #define F_NAMEICREGEXEQ 1240 #define F_NAMEICREGEXNE 1241 #define F_BOOLIN 1242 #define F_BOOLOUT 1243 #define F_BYTEAIN 1244 #define F_CHARIN 1245 #define F_CHARLT 1246 #define F_UNIQUE_KEY_RECHECK 1250 #define F_INT4ABS 1251 #define F_NAMEREGEXNE 1252 #define F_INT2ABS 1253 #define F_TEXTREGEXEQ 1254 #define F_TEXTREGEXNE 1256 #define F_TEXTLEN 1257 #define F_TEXTCAT 1258 #define F_PG_CHAR_TO_ENCODING 1264 #define F_TIDNE 1265 #define F_CIDR_IN 1267 #define F_PARSE_IDENT 1268 #define F_PG_COLUMN_SIZE 1269 #define F_OVERLAPS_TIMETZ 1271 #define F_DATETIME_TIMESTAMP 1272 #define F_TIMETZ_PART 1273 #define F_INT84PL 1274 #define F_INT84MI 1275 #define F_INT84MUL 1276 #define F_INT84DIV 1277 #define F_INT48PL 1278 #define F_INT48MI 1279 #define F_INT48MUL 1280 #define F_INT48DIV 1281 #define F_QUOTE_IDENT 1282 #define F_QUOTE_LITERAL 1283 #define F_TIMESTAMPTZ_TRUNC_ZONE 1284 #define F_ARRAY_FILL_WITH_LOWER_BOUNDS 1286 #define F_I8TOOID 1287 #define F_OIDTOI8 1288 #define F_QUOTE_NULLABLE 1289 #define F_SUPPRESS_REDUNDANT_UPDATES_TRIGGER 1291 #define F_TIDEQ 1292 #define F_CURRTID_BYRELOID 1293 #define F_CURRTID_BYRELNAME 1294 #define F_INTERVAL_JUSTIFY_DAYS 1295 #define F_DATETIMETZ_TIMESTAMPTZ 1297 #define F_NOW 1299 #define F_POSITIONSEL 1300 #define F_POSITIONJOINSEL 1301 #define F_CONTSEL 1302 #define F_CONTJOINSEL 1303 #define F_OVERLAPS_TIMESTAMP 1304 #define F_OVERLAPS_TIME 1308 #define F_TIMESTAMP_IN 1312 #define F_TIMESTAMP_OUT 1313 #define F_TIMESTAMP_CMP 1314 #define F_INTERVAL_CMP 1315 #define F_TIMESTAMP_TIME 1316 #define F_BPCHARLEN 1318 #define F_INTERVAL_DIV 1326 #define F_OIDVECTORTYPES 1349 #define F_TIMETZ_IN 1350 #define F_TIMETZ_OUT 1351 #define F_TIMETZ_EQ 1352 #define F_TIMETZ_NE 1353 #define F_TIMETZ_LT 1354 #define F_TIMETZ_LE 1355 #define F_TIMETZ_GE 1356 #define F_TIMETZ_GT 1357 #define F_TIMETZ_CMP 1358 #define F_NETWORK_HOSTMASK 1362 #define F_TEXTREGEXEQ_SUPPORT 1364 #define F_MAKEACLITEM 1365 #define F_TIME_INTERVAL 1370 #define F_PG_LOCK_STATUS 1371 #define F_DATE_FINITE 1373 #define F_TEXTOCTETLEN 1374 #define F_BPCHAROCTETLEN 1375 #define F_TIME_LARGER 1377 #define F_TIME_SMALLER 1378 #define F_TIMETZ_LARGER 1379 #define F_TIMETZ_SMALLER 1380 #define F_TIME_PART 1385 #define F_PG_GET_CONSTRAINTDEF 1387 #define F_TIMESTAMPTZ_TIMETZ 1388 #define F_TIMESTAMP_FINITE 1389 #define F_INTERVAL_FINITE 1390 #define F_PG_STAT_GET_BACKEND_START 1391 #define F_PG_STAT_GET_BACKEND_CLIENT_ADDR 1392 #define F_PG_STAT_GET_BACKEND_CLIENT_PORT 1393 #define F_CURRENT_SCHEMA 1402 #define F_CURRENT_SCHEMAS 1403 #define F_TEXTOVERLAY 1404 #define F_TEXTOVERLAY_NO_LEN 1405 #define F_LINE_PARALLEL 1412 #define F_LINE_PERP 1413 #define F_LINE_VERTICAL 1414 #define F_LINE_HORIZONTAL 1415 #define F_CIRCLE_CENTER 1416 #define F_INTERVAL_TIME 1419 #define F_POINTS_BOX 1421 #define F_BOX_ADD 1422 #define F_BOX_SUB 1423 #define F_BOX_MUL 1424 #define F_BOX_DIV 1425 #define F_CIDR_OUT 1427 #define F_POLY_CONTAIN_PT 1428 #define F_PT_CONTAINED_POLY 1429 #define F_PATH_ISCLOSED 1430 #define F_PATH_ISOPEN 1431 #define F_PATH_NPOINTS 1432 #define F_PATH_CLOSE 1433 #define F_PATH_OPEN 1434 #define F_PATH_ADD 1435 #define F_PATH_ADD_PT 1436 #define F_PATH_SUB_PT 1437 #define F_PATH_MUL_PT 1438 #define F_PATH_DIV_PT 1439 #define F_CONSTRUCT_POINT 1440 #define F_POINT_ADD 1441 #define F_POINT_SUB 1442 #define F_POINT_MUL 1443 #define F_POINT_DIV 1444 #define F_POLY_NPOINTS 1445 #define F_POLY_BOX 1446 #define F_POLY_PATH 1447 #define F_BOX_POLY 1448 #define F_PATH_POLY 1449 #define F_CIRCLE_IN 1450 #define F_CIRCLE_OUT 1451 #define F_CIRCLE_SAME 1452 #define F_CIRCLE_CONTAIN 1453 #define F_CIRCLE_LEFT 1454 #define F_CIRCLE_OVERLEFT 1455 #define F_CIRCLE_OVERRIGHT 1456 #define F_CIRCLE_RIGHT 1457 #define F_CIRCLE_CONTAINED 1458 #define F_CIRCLE_OVERLAP 1459 #define F_CIRCLE_BELOW 1460 #define F_CIRCLE_ABOVE 1461 #define F_CIRCLE_EQ 1462 #define F_CIRCLE_NE 1463 #define F_CIRCLE_LT 1464 #define F_CIRCLE_GT 1465 #define F_CIRCLE_LE 1466 #define F_CIRCLE_GE 1467 #define F_CIRCLE_AREA 1468 #define F_CIRCLE_DIAMETER 1469 #define F_CIRCLE_RADIUS 1470 #define F_CIRCLE_DISTANCE 1471 #define F_CR_CIRCLE 1473 #define F_POLY_CIRCLE 1474 #define F_CIRCLE_POLY 1475 #define F_DIST_PC 1476 #define F_CIRCLE_CONTAIN_PT 1477 #define F_PT_CONTAINED_CIRCLE 1478 #define F_BOX_CIRCLE 1479 #define F_CIRCLE_BOX 1480 #define F_LSEG_NE 1482 #define F_LSEG_LT 1483 #define F_LSEG_LE 1484 #define F_LSEG_GT 1485 #define F_LSEG_GE 1486 #define F_LSEG_LENGTH 1487 #define F_CLOSE_LS 1488 #define F_CLOSE_LSEG 1489 #define F_LINE_IN 1490 #define F_LINE_OUT 1491 #define F_LINE_EQ 1492 #define F_LINE_CONSTRUCT_PP 1493 #define F_LINE_INTERPT 1494 #define F_LINE_INTERSECT 1495 #define F_BIT_IN 1564 #define F_BIT_OUT 1565 #define F_PG_GET_RULEDEF 1573 #define F_NEXTVAL_OID 1574 #define F_CURRVAL_OID 1575 #define F_SETVAL_OID 1576 #define F_VARBIT_IN 1579 #define F_VARBIT_OUT 1580 #define F_BITEQ 1581 #define F_BITNE 1582 #define F_BITGE 1592 #define F_BITGT 1593 #define F_BITLE 1594 #define F_BITLT 1595 #define F_BITCMP 1596 #define F_PG_ENCODING_TO_CHAR 1597 #define F_DRANDOM 1598 #define F_SETSEED 1599 #define F_DASIN 1600 #define F_DACOS 1601 #define F_DATAN 1602 #define F_DATAN2 1603 #define F_DSIN 1604 #define F_DCOS 1605 #define F_DTAN 1606 #define F_DCOT 1607 #define F_DEGREES 1608 #define F_RADIANS 1609 #define F_DPI 1610 #define F_INTERVAL_MUL 1618 #define F_PG_TYPEOF 1619 #define F_ASCII 1620 #define F_CHR 1621 #define F_REPEAT 1622 #define F_SIMILAR_ESCAPE 1623 #define F_MUL_D_INTERVAL 1624 #define F_TEXTICLIKE 1633 #define F_TEXTICNLIKE 1634 #define F_NAMEICLIKE 1635 #define F_NAMEICNLIKE 1636 #define F_LIKE_ESCAPE 1637 #define F_OIDGT 1638 #define F_OIDGE 1639 #define F_PG_GET_VIEWDEF_NAME 1640 #define F_PG_GET_VIEWDEF 1641 #define F_PG_GET_USERBYID 1642 #define F_PG_GET_INDEXDEF 1643 #define F_RI_FKEY_CHECK_INS 1644 #define F_RI_FKEY_CHECK_UPD 1645 #define F_RI_FKEY_CASCADE_DEL 1646 #define F_RI_FKEY_CASCADE_UPD 1647 #define F_RI_FKEY_RESTRICT_DEL 1648 #define F_RI_FKEY_RESTRICT_UPD 1649 #define F_RI_FKEY_SETNULL_DEL 1650 #define F_RI_FKEY_SETNULL_UPD 1651 #define F_RI_FKEY_SETDEFAULT_DEL 1652 #define F_RI_FKEY_SETDEFAULT_UPD 1653 #define F_RI_FKEY_NOACTION_DEL 1654 #define F_RI_FKEY_NOACTION_UPD 1655 #define F_PG_GET_TRIGGERDEF 1662 #define F_PG_GET_SERIAL_SEQUENCE 1665 #define F_BIT_AND 1673 #define F_BIT_OR 1674 #define F_BITXOR 1675 #define F_BITNOT 1676 #define F_BITSHIFTLEFT 1677 #define F_BITSHIFTRIGHT 1678 #define F_BITCAT 1679 #define F_BITSUBSTR 1680 #define F_BITLENGTH 1681 #define F_BITOCTETLENGTH 1682 #define F_BITFROMINT4 1683 #define F_BITTOINT4 1684 #define F_BIT 1685 #define F_PG_GET_KEYWORDS 1686 #define F_VARBIT 1687 #define F_TIME_HASH 1688 #define F_ACLEXPLODE 1689 #define F_TIME_MI_TIME 1690 #define F_BOOLLE 1691 #define F_BOOLGE 1692 #define F_BTBOOLCMP 1693 #define F_TIMETZ_HASH 1696 #define F_INTERVAL_HASH 1697 #define F_BITPOSITION 1698 #define F_BITSUBSTR_NO_LEN 1699 #define F_NUMERIC_IN 1701 #define F_NUMERIC_OUT 1702 #define F_NUMERIC 1703 #define F_NUMERIC_ABS 1704 #define F_NUMERIC_SIGN 1706 #define F_NUMERIC_ROUND 1707 #define F_NUMERIC_TRUNC 1709 #define F_NUMERIC_CEIL 1711 #define F_NUMERIC_FLOOR 1712 #define F_LENGTH_IN_ENCODING 1713 #define F_PG_CONVERT_FROM 1714 #define F_INET_TO_CIDR 1715 #define F_PG_GET_EXPR 1716 #define F_PG_CONVERT_TO 1717 #define F_NUMERIC_EQ 1718 #define F_NUMERIC_NE 1719 #define F_NUMERIC_GT 1720 #define F_NUMERIC_GE 1721 #define F_NUMERIC_LT 1722 #define F_NUMERIC_LE 1723 #define F_NUMERIC_ADD 1724 #define F_NUMERIC_SUB 1725 #define F_NUMERIC_MUL 1726 #define F_NUMERIC_DIV 1727 #define F_NUMERIC_MOD 1728 #define F_NUMERIC_SQRT 1730 #define F_NUMERIC_EXP 1732 #define F_NUMERIC_LN 1734 #define F_NUMERIC_LOG 1736 #define F_NUMERIC_POWER 1738 #define F_INT4_NUMERIC 1740 #define F_FLOAT4_NUMERIC 1742 #define F_FLOAT8_NUMERIC 1743 #define F_NUMERIC_INT4 1744 #define F_NUMERIC_FLOAT4 1745 #define F_NUMERIC_FLOAT8 1746 #define F_TIME_PL_INTERVAL 1747 #define F_TIME_MI_INTERVAL 1748 #define F_TIMETZ_PL_INTERVAL 1749 #define F_TIMETZ_MI_INTERVAL 1750 #define F_NUMERIC_INC 1764 #define F_SETVAL3_OID 1765 #define F_NUMERIC_SMALLER 1766 #define F_NUMERIC_LARGER 1767 #define F_INTERVAL_TO_CHAR 1768 #define F_NUMERIC_CMP 1769 #define F_TIMESTAMPTZ_TO_CHAR 1770 #define F_NUMERIC_UMINUS 1771 #define F_NUMERIC_TO_CHAR 1772 #define F_INT4_TO_CHAR 1773 #define F_INT8_TO_CHAR 1774 #define F_FLOAT4_TO_CHAR 1775 #define F_FLOAT8_TO_CHAR 1776 #define F_NUMERIC_TO_NUMBER 1777 #define F_TO_TIMESTAMP 1778 #define F_NUMERIC_INT8 1779 #define F_TO_DATE 1780 #define F_INT8_NUMERIC 1781 #define F_INT2_NUMERIC 1782 #define F_NUMERIC_INT2 1783 #define F_OIDIN 1798 #define F_OIDOUT 1799 #define F_PG_CONVERT 1813 #define F_ICLIKESEL 1814 #define F_ICNLIKESEL 1815 #define F_ICLIKEJOINSEL 1816 #define F_ICNLIKEJOINSEL 1817 #define F_REGEXEQSEL 1818 #define F_LIKESEL 1819 #define F_ICREGEXEQSEL 1820 #define F_REGEXNESEL 1821 #define F_NLIKESEL 1822 #define F_ICREGEXNESEL 1823 #define F_REGEXEQJOINSEL 1824 #define F_LIKEJOINSEL 1825 #define F_ICREGEXEQJOINSEL 1826 #define F_REGEXNEJOINSEL 1827 #define F_NLIKEJOINSEL 1828 #define F_ICREGEXNEJOINSEL 1829 #define F_FLOAT8_AVG 1830 #define F_FLOAT8_VAR_SAMP 1831 #define F_FLOAT8_STDDEV_SAMP 1832 #define F_NUMERIC_ACCUM 1833 #define F_INT2_ACCUM 1834 #define F_INT4_ACCUM 1835 #define F_INT8_ACCUM 1836 #define F_NUMERIC_AVG 1837 #define F_NUMERIC_VAR_SAMP 1838 #define F_NUMERIC_STDDEV_SAMP 1839 #define F_INT2_SUM 1840 #define F_INT4_SUM 1841 #define F_INT8_SUM 1842 #define F_INTERVAL_ACCUM 1843 #define F_INTERVAL_AVG 1844 #define F_TO_ASCII_DEFAULT 1845 #define F_TO_ASCII_ENC 1846 #define F_TO_ASCII_ENCNAME 1847 #define F_INT28EQ 1850 #define F_INT28NE 1851 #define F_INT28LT 1852 #define F_INT28GT 1853 #define F_INT28LE 1854 #define F_INT28GE 1855 #define F_INT82EQ 1856 #define F_INT82NE 1857 #define F_INT82LT 1858 #define F_INT82GT 1859 #define F_INT82LE 1860 #define F_INT82GE 1861 #define F_INT2AND 1892 #define F_INT2OR 1893 #define F_INT2XOR 1894 #define F_INT2NOT 1895 #define F_INT2SHL 1896 #define F_INT2SHR 1897 #define F_INT4AND 1898 #define F_INT4OR 1899 #define F_INT4XOR 1900 #define F_INT4NOT 1901 #define F_INT4SHL 1902 #define F_INT4SHR 1903 #define F_INT8AND 1904 #define F_INT8OR 1905 #define F_INT8XOR 1906 #define F_INT8NOT 1907 #define F_INT8SHL 1908 #define F_INT8SHR 1909 #define F_INT8UP 1910 #define F_INT2UP 1911 #define F_INT4UP 1912 #define F_FLOAT4UP 1913 #define F_FLOAT8UP 1914 #define F_NUMERIC_UPLUS 1915 #define F_HAS_TABLE_PRIVILEGE_NAME_NAME 1922 #define F_HAS_TABLE_PRIVILEGE_NAME_ID 1923 #define F_HAS_TABLE_PRIVILEGE_ID_NAME 1924 #define F_HAS_TABLE_PRIVILEGE_ID_ID 1925 #define F_HAS_TABLE_PRIVILEGE_NAME 1926 #define F_HAS_TABLE_PRIVILEGE_ID 1927 #define F_PG_STAT_GET_NUMSCANS 1928 #define F_PG_STAT_GET_TUPLES_RETURNED 1929 #define F_PG_STAT_GET_TUPLES_FETCHED 1930 #define F_PG_STAT_GET_TUPLES_INSERTED 1931 #define F_PG_STAT_GET_TUPLES_UPDATED 1932 #define F_PG_STAT_GET_TUPLES_DELETED 1933 #define F_PG_STAT_GET_BLOCKS_FETCHED 1934 #define F_PG_STAT_GET_BLOCKS_HIT 1935 #define F_PG_STAT_GET_BACKEND_IDSET 1936 #define F_PG_STAT_GET_BACKEND_PID 1937 #define F_PG_STAT_GET_BACKEND_DBID 1938 #define F_PG_STAT_GET_BACKEND_USERID 1939 #define F_PG_STAT_GET_BACKEND_ACTIVITY 1940 #define F_PG_STAT_GET_DB_NUMBACKENDS 1941 #define F_PG_STAT_GET_DB_XACT_COMMIT 1942 #define F_PG_STAT_GET_DB_XACT_ROLLBACK 1943 #define F_PG_STAT_GET_DB_BLOCKS_FETCHED 1944 #define F_PG_STAT_GET_DB_BLOCKS_HIT 1945 #define F_BINARY_ENCODE 1946 #define F_BINARY_DECODE 1947 #define F_BYTEAEQ 1948 #define F_BYTEALT 1949 #define F_BYTEALE 1950 #define F_BYTEAGT 1951 #define F_BYTEAGE 1952 #define F_BYTEANE 1953 #define F_BYTEACMP 1954 #define F_TIMESTAMP_SCALE 1961 #define F_INT2_AVG_ACCUM 1962 #define F_INT4_AVG_ACCUM 1963 #define F_INT8_AVG 1964 #define F_OIDLARGER 1965 #define F_OIDSMALLER 1966 #define F_TIMESTAMPTZ_SCALE 1967 #define F_TIME_SCALE 1968 #define F_TIMETZ_SCALE 1969 #define F_PG_STAT_GET_TUPLES_HOT_UPDATED 1972 #define F_NUMERIC_DIV_TRUNC 1973 #define F_SIMILAR_TO_ESCAPE_2 1986 #define F_SIMILAR_TO_ESCAPE_1 1987 #define F_BYTEALIKE 2005 #define F_BYTEANLIKE 2006 #define F_LIKE_ESCAPE_BYTEA 2009 #define F_BYTEACAT 2011 #define F_BYTEA_SUBSTR 2012 #define F_BYTEA_SUBSTR_NO_LEN 2013 #define F_BYTEAPOS 2014 #define F_BYTEATRIM 2015 #define F_TIMESTAMPTZ_TIME 2019 #define F_TIMESTAMP_TRUNC 2020 #define F_TIMESTAMP_PART 2021 #define F_PG_STAT_GET_ACTIVITY 2022 #define F_JSONB_PATH_QUERY_FIRST_TZ 2023 #define F_DATE_TIMESTAMP 2024 #define F_PG_BACKEND_PID 2026 #define F_TIMESTAMPTZ_TIMESTAMP 2027 #define F_TIMESTAMP_TIMESTAMPTZ 2028 #define F_TIMESTAMP_DATE 2029 #define F_JSONB_PATH_MATCH_TZ 2030 #define F_TIMESTAMP_PL_INTERVAL 2032 #define F_TIMESTAMP_MI_INTERVAL 2033 #define F_PG_CONF_LOAD_TIME 2034 #define F_TIMETZ_ZONE 2037 #define F_TIMETZ_IZONE 2038 #define F_TIMESTAMP_HASH 2039 #define F_TIMETZ_TIME 2046 #define F_TIME_TIMETZ 2047 #define F_TIMESTAMP_TO_CHAR 2049 #define F_AGGREGATE_DUMMY 2050 #define F_TIMESTAMP_AGE 2058 #define F_TIMESTAMP_ZONE 2069 #define F_TIMESTAMP_IZONE 2070 #define F_DATE_PL_INTERVAL 2071 #define F_DATE_MI_INTERVAL 2072 #define F_TEXTREGEXSUBSTR 2073 #define F_BITFROMINT8 2075 #define F_BITTOINT8 2076 #define F_SHOW_CONFIG_BY_NAME 2077 #define F_SET_CONFIG_BY_NAME 2078 #define F_PG_TABLE_IS_VISIBLE 2079 #define F_PG_TYPE_IS_VISIBLE 2080 #define F_PG_FUNCTION_IS_VISIBLE 2081 #define F_PG_OPERATOR_IS_VISIBLE 2082 #define F_PG_OPCLASS_IS_VISIBLE 2083 #define F_SHOW_ALL_SETTINGS 2084 #define F_REPLACE_TEXT 2087 #define F_SPLIT_TEXT 2088 #define F_TO_HEX32 2089 #define F_TO_HEX64 2090 #define F_ARRAY_LOWER 2091 #define F_ARRAY_UPPER 2092 #define F_PG_CONVERSION_IS_VISIBLE 2093 #define F_PG_STAT_GET_BACKEND_ACTIVITY_START 2094 #define F_PG_TERMINATE_BACKEND 2096 #define F_PG_GET_FUNCTIONDEF 2098 #define F_TEXT_PATTERN_LT 2160 #define F_TEXT_PATTERN_LE 2161 #define F_PG_GET_FUNCTION_ARGUMENTS 2162 #define F_TEXT_PATTERN_GE 2163 #define F_TEXT_PATTERN_GT 2164 #define F_PG_GET_FUNCTION_RESULT 2165 #define F_BTTEXT_PATTERN_CMP 2166 #define F_PG_DATABASE_SIZE_NAME 2168 #define F_WIDTH_BUCKET_NUMERIC 2170 #define F_PG_CANCEL_BACKEND 2171 #define F_PG_START_BACKUP 2172 #define F_PG_STOP_BACKUP 2173 #define F_BPCHAR_PATTERN_LT 2174 #define F_BPCHAR_PATTERN_LE 2175 #define F_ARRAY_LENGTH 2176 #define F_BPCHAR_PATTERN_GE 2177 #define F_BPCHAR_PATTERN_GT 2178 #define F_GIST_POINT_CONSISTENT 2179 #define F_BTBPCHAR_PATTERN_CMP 2180 #define F_HAS_SEQUENCE_PRIVILEGE_NAME_NAME 2181 #define F_HAS_SEQUENCE_PRIVILEGE_NAME_ID 2182 #define F_HAS_SEQUENCE_PRIVILEGE_ID_NAME 2183 #define F_HAS_SEQUENCE_PRIVILEGE_ID_ID 2184 #define F_HAS_SEQUENCE_PRIVILEGE_NAME 2185 #define F_HAS_SEQUENCE_PRIVILEGE_ID 2186 #define F_BTINT48CMP 2188 #define F_BTINT84CMP 2189 #define F_BTINT24CMP 2190 #define F_BTINT42CMP 2191 #define F_BTINT28CMP 2192 #define F_BTINT82CMP 2193 #define F_BTFLOAT48CMP 2194 #define F_BTFLOAT84CMP 2195 #define F_INET_CLIENT_ADDR 2196 #define F_INET_CLIENT_PORT 2197 #define F_INET_SERVER_ADDR 2198 #define F_INET_SERVER_PORT 2199 #define F_REGPROCEDUREIN 2212 #define F_REGPROCEDUREOUT 2213 #define F_REGOPERIN 2214 #define F_REGOPEROUT 2215 #define F_REGOPERATORIN 2216 #define F_REGOPERATOROUT 2217 #define F_REGCLASSIN 2218 #define F_REGCLASSOUT 2219 #define F_REGTYPEIN 2220 #define F_REGTYPEOUT 2221 #define F_PG_STAT_CLEAR_SNAPSHOT 2230 #define F_PG_GET_FUNCTION_IDENTITY_ARGUMENTS 2232 #define F_HASHTID 2233 #define F_HASHTIDEXTENDED 2234 #define F_FMGR_INTERNAL_VALIDATOR 2246 #define F_FMGR_C_VALIDATOR 2247 #define F_FMGR_SQL_VALIDATOR 2248 #define F_HAS_DATABASE_PRIVILEGE_NAME_NAME 2250 #define F_HAS_DATABASE_PRIVILEGE_NAME_ID 2251 #define F_HAS_DATABASE_PRIVILEGE_ID_NAME 2252 #define F_HAS_DATABASE_PRIVILEGE_ID_ID 2253 #define F_HAS_DATABASE_PRIVILEGE_NAME 2254 #define F_HAS_DATABASE_PRIVILEGE_ID 2255 #define F_HAS_FUNCTION_PRIVILEGE_NAME_NAME 2256 #define F_HAS_FUNCTION_PRIVILEGE_NAME_ID 2257 #define F_HAS_FUNCTION_PRIVILEGE_ID_NAME 2258 #define F_HAS_FUNCTION_PRIVILEGE_ID_ID 2259 #define F_HAS_FUNCTION_PRIVILEGE_NAME 2260 #define F_HAS_FUNCTION_PRIVILEGE_ID 2261 #define F_HAS_LANGUAGE_PRIVILEGE_NAME_NAME 2262 #define F_HAS_LANGUAGE_PRIVILEGE_NAME_ID 2263 #define F_HAS_LANGUAGE_PRIVILEGE_ID_NAME 2264 #define F_HAS_LANGUAGE_PRIVILEGE_ID_ID 2265 #define F_HAS_LANGUAGE_PRIVILEGE_NAME 2266 #define F_HAS_LANGUAGE_PRIVILEGE_ID 2267 #define F_HAS_SCHEMA_PRIVILEGE_NAME_NAME 2268 #define F_HAS_SCHEMA_PRIVILEGE_NAME_ID 2269 #define F_HAS_SCHEMA_PRIVILEGE_ID_NAME 2270 #define F_HAS_SCHEMA_PRIVILEGE_ID_ID 2271 #define F_HAS_SCHEMA_PRIVILEGE_NAME 2272 #define F_HAS_SCHEMA_PRIVILEGE_ID 2273 #define F_PG_STAT_RESET 2274 #define F_TEXTREGEXREPLACE_NOOPT 2284 #define F_TEXTREGEXREPLACE 2285 #define F_PG_TOTAL_RELATION_SIZE 2286 #define F_PG_SIZE_PRETTY 2288 #define F_PG_OPTIONS_TO_TABLE 2289 #define F_RECORD_IN 2290 #define F_RECORD_OUT 2291 #define F_CSTRING_IN 2292 #define F_CSTRING_OUT 2293 #define F_ANY_IN 2294 #define F_ANY_OUT 2295 #define F_ANYARRAY_IN 2296 #define F_ANYARRAY_OUT 2297 #define F_VOID_IN 2298 #define F_VOID_OUT 2299 #define F_TRIGGER_IN 2300 #define F_TRIGGER_OUT 2301 #define F_LANGUAGE_HANDLER_IN 2302 #define F_LANGUAGE_HANDLER_OUT 2303 #define F_INTERNAL_IN 2304 #define F_INTERNAL_OUT 2305 #define F_PG_STAT_GET_SLRU 2306 #define F_PG_STAT_RESET_SLRU 2307 #define F_DCEIL 2308 #define F_DFLOOR 2309 #define F_DSIGN 2310 #define F_MD5_TEXT 2311 #define F_ANYELEMENT_IN 2312 #define F_ANYELEMENT_OUT 2313 #define F_POSTGRESQL_FDW_VALIDATOR 2316 #define F_PG_ENCODING_MAX_LENGTH_SQL 2319 #define F_MD5_BYTEA 2321 #define F_PG_TABLESPACE_SIZE_OID 2322 #define F_PG_TABLESPACE_SIZE_NAME 2323 #define F_PG_DATABASE_SIZE_OID 2324 #define F_ARRAY_UNNEST 2331 #define F_PG_RELATION_SIZE 2332 #define F_ARRAY_AGG_TRANSFN 2333 #define F_ARRAY_AGG_FINALFN 2334 #define F_DATE_LT_TIMESTAMP 2338 #define F_DATE_LE_TIMESTAMP 2339 #define F_DATE_EQ_TIMESTAMP 2340 #define F_DATE_GT_TIMESTAMP 2341 #define F_DATE_GE_TIMESTAMP 2342 #define F_DATE_NE_TIMESTAMP 2343 #define F_DATE_CMP_TIMESTAMP 2344 #define F_DATE_LT_TIMESTAMPTZ 2351 #define F_DATE_LE_TIMESTAMPTZ 2352 #define F_DATE_EQ_TIMESTAMPTZ 2353 #define F_DATE_GT_TIMESTAMPTZ 2354 #define F_DATE_GE_TIMESTAMPTZ 2355 #define F_DATE_NE_TIMESTAMPTZ 2356 #define F_DATE_CMP_TIMESTAMPTZ 2357 #define F_TIMESTAMP_LT_DATE 2364 #define F_TIMESTAMP_LE_DATE 2365 #define F_TIMESTAMP_EQ_DATE 2366 #define F_TIMESTAMP_GT_DATE 2367 #define F_TIMESTAMP_GE_DATE 2368 #define F_TIMESTAMP_NE_DATE 2369 #define F_TIMESTAMP_CMP_DATE 2370 #define F_TIMESTAMPTZ_LT_DATE 2377 #define F_TIMESTAMPTZ_LE_DATE 2378 #define F_TIMESTAMPTZ_EQ_DATE 2379 #define F_TIMESTAMPTZ_GT_DATE 2380 #define F_TIMESTAMPTZ_GE_DATE 2381 #define F_TIMESTAMPTZ_NE_DATE 2382 #define F_TIMESTAMPTZ_CMP_DATE 2383 #define F_HAS_TABLESPACE_PRIVILEGE_NAME_NAME 2390 #define F_HAS_TABLESPACE_PRIVILEGE_NAME_ID 2391 #define F_HAS_TABLESPACE_PRIVILEGE_ID_NAME 2392 #define F_HAS_TABLESPACE_PRIVILEGE_ID_ID 2393 #define F_HAS_TABLESPACE_PRIVILEGE_NAME 2394 #define F_HAS_TABLESPACE_PRIVILEGE_ID 2395 #define F_SHELL_IN 2398 #define F_SHELL_OUT 2399 #define F_ARRAY_RECV 2400 #define F_ARRAY_SEND 2401 #define F_RECORD_RECV 2402 #define F_RECORD_SEND 2403 #define F_INT2RECV 2404 #define F_INT2SEND 2405 #define F_INT4RECV 2406 #define F_INT4SEND 2407 #define F_INT8RECV 2408 #define F_INT8SEND 2409 #define F_INT2VECTORRECV 2410 #define F_INT2VECTORSEND 2411 #define F_BYTEARECV 2412 #define F_BYTEASEND 2413 #define F_TEXTRECV 2414 #define F_TEXTSEND 2415 #define F_UNKNOWNRECV 2416 #define F_UNKNOWNSEND 2417 #define F_OIDRECV 2418 #define F_OIDSEND 2419 #define F_OIDVECTORRECV 2420 #define F_OIDVECTORSEND 2421 #define F_NAMERECV 2422 #define F_NAMESEND 2423 #define F_FLOAT4RECV 2424 #define F_FLOAT4SEND 2425 #define F_FLOAT8RECV 2426 #define F_FLOAT8SEND 2427 #define F_POINT_RECV 2428 #define F_POINT_SEND 2429 #define F_BPCHARRECV 2430 #define F_BPCHARSEND 2431 #define F_VARCHARRECV 2432 #define F_VARCHARSEND 2433 #define F_CHARRECV 2434 #define F_CHARSEND 2435 #define F_BOOLRECV 2436 #define F_BOOLSEND 2437 #define F_TIDRECV 2438 #define F_TIDSEND 2439 #define F_XIDRECV 2440 #define F_XIDSEND 2441 #define F_CIDRECV 2442 #define F_CIDSEND 2443 #define F_REGPROCRECV 2444 #define F_REGPROCSEND 2445 #define F_REGPROCEDURERECV 2446 #define F_REGPROCEDURESEND 2447 #define F_REGOPERRECV 2448 #define F_REGOPERSEND 2449 #define F_REGOPERATORRECV 2450 #define F_REGOPERATORSEND 2451 #define F_REGCLASSRECV 2452 #define F_REGCLASSSEND 2453 #define F_REGTYPERECV 2454 #define F_REGTYPESEND 2455 #define F_BIT_RECV 2456 #define F_BIT_SEND 2457 #define F_VARBIT_RECV 2458 #define F_VARBIT_SEND 2459 #define F_NUMERIC_RECV 2460 #define F_NUMERIC_SEND 2461 #define F_DSINH 2462 #define F_DCOSH 2463 #define F_DTANH 2464 #define F_DASINH 2465 #define F_DACOSH 2466 #define F_DATANH 2467 #define F_DATE_RECV 2468 #define F_DATE_SEND 2469 #define F_TIME_RECV 2470 #define F_TIME_SEND 2471 #define F_TIMETZ_RECV 2472 #define F_TIMETZ_SEND 2473 #define F_TIMESTAMP_RECV 2474 #define F_TIMESTAMP_SEND 2475 #define F_TIMESTAMPTZ_RECV 2476 #define F_TIMESTAMPTZ_SEND 2477 #define F_INTERVAL_RECV 2478 #define F_INTERVAL_SEND 2479 #define F_LSEG_RECV 2480 #define F_LSEG_SEND 2481 #define F_PATH_RECV 2482 #define F_PATH_SEND 2483 #define F_BOX_RECV 2484 #define F_BOX_SEND 2485 #define F_POLY_RECV 2486 #define F_POLY_SEND 2487 #define F_LINE_RECV 2488 #define F_LINE_SEND 2489 #define F_CIRCLE_RECV 2490 #define F_CIRCLE_SEND 2491 #define F_CASH_RECV 2492 #define F_CASH_SEND 2493 #define F_MACADDR_RECV 2494 #define F_MACADDR_SEND 2495 #define F_INET_RECV 2496 #define F_INET_SEND 2497 #define F_CIDR_RECV 2498 #define F_CIDR_SEND 2499 #define F_CSTRING_RECV 2500 #define F_CSTRING_SEND 2501 #define F_ANYARRAY_RECV 2502 #define F_ANYARRAY_SEND 2503 #define F_PG_GET_RULEDEF_EXT 2504 #define F_PG_GET_VIEWDEF_NAME_EXT 2505 #define F_PG_GET_VIEWDEF_EXT 2506 #define F_PG_GET_INDEXDEF_EXT 2507 #define F_PG_GET_CONSTRAINTDEF_EXT 2508 #define F_PG_GET_EXPR_EXT 2509 #define F_PG_PREPARED_STATEMENT 2510 #define F_PG_CURSOR 2511 #define F_FLOAT8_VAR_POP 2512 #define F_FLOAT8_STDDEV_POP 2513 #define F_NUMERIC_VAR_POP 2514 #define F_BOOLAND_STATEFUNC 2515 #define F_BOOLOR_STATEFUNC 2516 #define F_TIMESTAMP_LT_TIMESTAMPTZ 2520 #define F_TIMESTAMP_LE_TIMESTAMPTZ 2521 #define F_TIMESTAMP_EQ_TIMESTAMPTZ 2522 #define F_TIMESTAMP_GT_TIMESTAMPTZ 2523 #define F_TIMESTAMP_GE_TIMESTAMPTZ 2524 #define F_TIMESTAMP_NE_TIMESTAMPTZ 2525 #define F_TIMESTAMP_CMP_TIMESTAMPTZ 2526 #define F_TIMESTAMPTZ_LT_TIMESTAMP 2527 #define F_TIMESTAMPTZ_LE_TIMESTAMP 2528 #define F_TIMESTAMPTZ_EQ_TIMESTAMP 2529 #define F_TIMESTAMPTZ_GT_TIMESTAMP 2530 #define F_TIMESTAMPTZ_GE_TIMESTAMP 2531 #define F_TIMESTAMPTZ_NE_TIMESTAMP 2532 #define F_TIMESTAMPTZ_CMP_TIMESTAMP 2533 #define F_PG_TABLESPACE_DATABASES 2556 #define F_INT4_BOOL 2557 #define F_BOOL_INT4 2558 #define F_LASTVAL 2559 #define F_PG_POSTMASTER_START_TIME 2560 #define F_PG_BLOCKING_PIDS 2561 #define F_BOX_BELOW 2562 #define F_BOX_OVERBELOW 2563 #define F_BOX_OVERABOVE 2564 #define F_BOX_ABOVE 2565 #define F_POLY_BELOW 2566 #define F_POLY_OVERBELOW 2567 #define F_POLY_OVERABOVE 2568 #define F_POLY_ABOVE 2569 #define F_GIST_BOX_CONSISTENT 2578 #define F_JSONB_FLOAT8 2580 #define F_GIST_BOX_PENALTY 2581 #define F_GIST_BOX_PICKSPLIT 2582 #define F_GIST_BOX_UNION 2583 #define F_GIST_BOX_SAME 2584 #define F_GIST_POLY_CONSISTENT 2585 #define F_GIST_POLY_COMPRESS 2586 #define F_CIRCLE_OVERBELOW 2587 #define F_CIRCLE_OVERABOVE 2588 #define F_GIST_CIRCLE_CONSISTENT 2591 #define F_GIST_CIRCLE_COMPRESS 2592 #define F_NUMERIC_STDDEV_POP 2596 #define F_DOMAIN_IN 2597 #define F_DOMAIN_RECV 2598 #define F_PG_TIMEZONE_ABBREVS 2599 #define F_XMLEXISTS 2614 #define F_PG_RELOAD_CONF 2621 #define F_PG_ROTATE_LOGFILE_V2 2622 #define F_PG_STAT_FILE_1ARG 2623 #define F_PG_READ_FILE_OFF_LEN 2624 #define F_PG_LS_DIR_1ARG 2625 #define F_PG_SLEEP 2626 #define F_INETNOT 2627 #define F_INETAND 2628 #define F_INETOR 2629 #define F_INETPL 2630 #define F_INETMI_INT8 2632 #define F_INETMI 2633 #define F_STATEMENT_TIMESTAMP 2648 #define F_CLOCK_TIMESTAMP 2649 #define F_GIN_CMP_PREFIX 2700 #define F_PG_HAS_ROLE_NAME_NAME 2705 #define F_PG_HAS_ROLE_NAME_ID 2706 #define F_PG_HAS_ROLE_ID_NAME 2707 #define F_PG_HAS_ROLE_ID_ID 2708 #define F_PG_HAS_ROLE_NAME 2709 #define F_PG_HAS_ROLE_ID 2710 #define F_INTERVAL_JUSTIFY_INTERVAL 2711 #define F_PG_GET_TRIGGERDEF_EXT 2730 #define F_DASIND 2731 #define F_DACOSD 2732 #define F_DATAND 2733 #define F_DATAN2D 2734 #define F_DSIND 2735 #define F_DCOSD 2736 #define F_DTAND 2737 #define F_DCOTD 2738 #define F_PG_STOP_BACKUP_V2 2739 #define F_NUMERIC_AVG_SERIALIZE 2740 #define F_NUMERIC_AVG_DESERIALIZE 2741 #define F_GINARRAYEXTRACT 2743 #define F_GINARRAYCONSISTENT 2744 #define F_INT8_AVG_ACCUM 2746 #define F_ARRAYOVERLAP 2747 #define F_ARRAYCONTAINS 2748 #define F_ARRAYCONTAINED 2749 #define F_PG_STAT_GET_DB_TUPLES_RETURNED 2758 #define F_PG_STAT_GET_DB_TUPLES_FETCHED 2759 #define F_PG_STAT_GET_DB_TUPLES_INSERTED 2760 #define F_PG_STAT_GET_DB_TUPLES_UPDATED 2761 #define F_PG_STAT_GET_DB_TUPLES_DELETED 2762 #define F_REGEXP_MATCHES_NO_FLAGS 2763 #define F_REGEXP_MATCHES 2764 #define F_REGEXP_SPLIT_TO_TABLE_NO_FLAGS 2765 #define F_REGEXP_SPLIT_TO_TABLE 2766 #define F_REGEXP_SPLIT_TO_ARRAY_NO_FLAGS 2767 #define F_REGEXP_SPLIT_TO_ARRAY 2768 #define F_PG_STAT_GET_BGWRITER_TIMED_CHECKPOINTS 2769 #define F_PG_STAT_GET_BGWRITER_REQUESTED_CHECKPOINTS 2770 #define F_PG_STAT_GET_BGWRITER_BUF_WRITTEN_CHECKPOINTS 2771 #define F_PG_STAT_GET_BGWRITER_BUF_WRITTEN_CLEAN 2772 #define F_PG_STAT_GET_BGWRITER_MAXWRITTEN_CLEAN 2773 #define F_GINQUERYARRAYEXTRACT 2774 #define F_PG_STAT_GET_BUF_WRITTEN_BACKEND 2775 #define F_ANYNONARRAY_IN 2777 #define F_ANYNONARRAY_OUT 2778 #define F_PG_STAT_GET_LAST_VACUUM_TIME 2781 #define F_PG_STAT_GET_LAST_AUTOVACUUM_TIME 2782 #define F_PG_STAT_GET_LAST_ANALYZE_TIME 2783 #define F_PG_STAT_GET_LAST_AUTOANALYZE_TIME 2784 #define F_INT8_AVG_COMBINE 2785 #define F_INT8_AVG_SERIALIZE 2786 #define F_INT8_AVG_DESERIALIZE 2787 #define F_PG_STAT_GET_BACKEND_WAIT_EVENT_TYPE 2788 #define F_TIDGT 2790 #define F_TIDLT 2791 #define F_TIDGE 2792 #define F_TIDLE 2793 #define F_BTTIDCMP 2794 #define F_TIDLARGER 2795 #define F_TIDSMALLER 2796 #define F_INT8INC_ANY 2804 #define F_INT8INC_FLOAT8_FLOAT8 2805 #define F_FLOAT8_REGR_ACCUM 2806 #define F_FLOAT8_REGR_SXX 2807 #define F_FLOAT8_REGR_SYY 2808 #define F_FLOAT8_REGR_SXY 2809 #define F_FLOAT8_REGR_AVGX 2810 #define F_FLOAT8_REGR_AVGY 2811 #define F_FLOAT8_REGR_R2 2812 #define F_FLOAT8_REGR_SLOPE 2813 #define F_FLOAT8_REGR_INTERCEPT 2814 #define F_FLOAT8_COVAR_POP 2815 #define F_FLOAT8_COVAR_SAMP 2816 #define F_FLOAT8_CORR 2817 #define F_PG_STAT_GET_DB_BLK_READ_TIME 2844 #define F_PG_STAT_GET_DB_BLK_WRITE_TIME 2845 #define F_PG_SWITCH_WAL 2848 #define F_PG_CURRENT_WAL_LSN 2849 #define F_PG_WALFILE_NAME_OFFSET 2850 #define F_PG_WALFILE_NAME 2851 #define F_PG_CURRENT_WAL_INSERT_LSN 2852 #define F_PG_STAT_GET_BACKEND_WAIT_EVENT 2853 #define F_PG_MY_TEMP_SCHEMA 2854 #define F_PG_IS_OTHER_TEMP_SCHEMA 2855 #define F_PG_TIMEZONE_NAMES 2856 #define F_PG_STAT_GET_BACKEND_XACT_START 2857 #define F_NUMERIC_AVG_ACCUM 2858 #define F_PG_STAT_GET_BUF_ALLOC 2859 #define F_PG_STAT_GET_LIVE_TUPLES 2878 #define F_PG_STAT_GET_DEAD_TUPLES 2879 #define F_PG_ADVISORY_LOCK_INT8 2880 #define F_PG_ADVISORY_LOCK_SHARED_INT8 2881 #define F_PG_TRY_ADVISORY_LOCK_INT8 2882 #define F_PG_TRY_ADVISORY_LOCK_SHARED_INT8 2883 #define F_PG_ADVISORY_UNLOCK_INT8 2884 #define F_PG_ADVISORY_UNLOCK_SHARED_INT8 2885 #define F_PG_ADVISORY_LOCK_INT4 2886 #define F_PG_ADVISORY_LOCK_SHARED_INT4 2887 #define F_PG_TRY_ADVISORY_LOCK_INT4 2888 #define F_PG_TRY_ADVISORY_LOCK_SHARED_INT4 2889 #define F_PG_ADVISORY_UNLOCK_INT4 2890 #define F_PG_ADVISORY_UNLOCK_SHARED_INT4 2891 #define F_PG_ADVISORY_UNLOCK_ALL 2892 #define F_XML_IN 2893 #define F_XML_OUT 2894 #define F_XMLCOMMENT 2895 #define F_TEXTTOXML 2896 #define F_XMLVALIDATE 2897 #define F_XML_RECV 2898 #define F_XML_SEND 2899 #define F_XMLCONCAT2 2900 #define F_VARBITTYPMODIN 2902 #define F_INTERVALTYPMODIN 2903 #define F_INTERVALTYPMODOUT 2904 #define F_TIMESTAMPTYPMODIN 2905 #define F_TIMESTAMPTYPMODOUT 2906 #define F_TIMESTAMPTZTYPMODIN 2907 #define F_TIMESTAMPTZTYPMODOUT 2908 #define F_TIMETYPMODIN 2909 #define F_TIMETYPMODOUT 2910 #define F_TIMETZTYPMODIN 2911 #define F_TIMETZTYPMODOUT 2912 #define F_BPCHARTYPMODIN 2913 #define F_BPCHARTYPMODOUT 2914 #define F_VARCHARTYPMODIN 2915 #define F_VARCHARTYPMODOUT 2916 #define F_NUMERICTYPMODIN 2917 #define F_NUMERICTYPMODOUT 2918 #define F_BITTYPMODIN 2919 #define F_BITTYPMODOUT 2920 #define F_VARBITTYPMODOUT 2921 #define F_XMLTOTEXT 2922 #define F_TABLE_TO_XML 2923 #define F_QUERY_TO_XML 2924 #define F_CURSOR_TO_XML 2925 #define F_TABLE_TO_XMLSCHEMA 2926 #define F_QUERY_TO_XMLSCHEMA 2927 #define F_CURSOR_TO_XMLSCHEMA 2928 #define F_TABLE_TO_XML_AND_XMLSCHEMA 2929 #define F_QUERY_TO_XML_AND_XMLSCHEMA 2930 #define F_XPATH 2931 #define F_SCHEMA_TO_XML 2933 #define F_SCHEMA_TO_XMLSCHEMA 2934 #define F_SCHEMA_TO_XML_AND_XMLSCHEMA 2935 #define F_DATABASE_TO_XML 2936 #define F_DATABASE_TO_XMLSCHEMA 2937 #define F_DATABASE_TO_XML_AND_XMLSCHEMA 2938 #define F_PG_SNAPSHOT_IN 2939 #define F_PG_SNAPSHOT_OUT 2940 #define F_PG_SNAPSHOT_RECV 2941 #define F_PG_SNAPSHOT_SEND 2942 #define F_PG_CURRENT_XACT_ID 2943 #define F_PG_CURRENT_SNAPSHOT 2944 #define F_PG_SNAPSHOT_XMIN 2945 #define F_PG_SNAPSHOT_XMAX 2946 #define F_PG_SNAPSHOT_XIP 2947 #define F_PG_VISIBLE_IN_SNAPSHOT 2948 #define F_UUID_IN 2952 #define F_UUID_OUT 2953 #define F_UUID_LT 2954 #define F_UUID_LE 2955 #define F_UUID_EQ 2956 #define F_UUID_GE 2957 #define F_UUID_GT 2958 #define F_UUID_NE 2959 #define F_UUID_CMP 2960 #define F_UUID_RECV 2961 #define F_UUID_SEND 2962 #define F_UUID_HASH 2963 #define F_BOOLTEXT 2971 #define F_PG_STAT_GET_FUNCTION_CALLS 2978 #define F_PG_STAT_GET_FUNCTION_TOTAL_TIME 2979 #define F_PG_STAT_GET_FUNCTION_SELF_TIME 2980 #define F_RECORD_EQ 2981 #define F_RECORD_NE 2982 #define F_RECORD_LT 2983 #define F_RECORD_GT 2984 #define F_RECORD_LE 2985 #define F_RECORD_GE 2986 #define F_BTRECORDCMP 2987 #define F_PG_TABLE_SIZE 2997 #define F_PG_INDEXES_SIZE 2998 #define F_PG_RELATION_FILENODE 2999 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_NAME_NAME 3000 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_NAME_ID 3001 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_ID_NAME 3002 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_ID_ID 3003 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_NAME 3004 #define F_HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE_ID 3005 #define F_HAS_SERVER_PRIVILEGE_NAME_NAME 3006 #define F_HAS_SERVER_PRIVILEGE_NAME_ID 3007 #define F_HAS_SERVER_PRIVILEGE_ID_NAME 3008 #define F_HAS_SERVER_PRIVILEGE_ID_ID 3009 #define F_HAS_SERVER_PRIVILEGE_NAME 3010 #define F_HAS_SERVER_PRIVILEGE_ID 3011 #define F_HAS_COLUMN_PRIVILEGE_NAME_NAME_NAME 3012 #define F_HAS_COLUMN_PRIVILEGE_NAME_NAME_ATTNUM 3013 #define F_HAS_COLUMN_PRIVILEGE_NAME_ID_NAME 3014 #define F_HAS_COLUMN_PRIVILEGE_NAME_ID_ATTNUM 3015 #define F_HAS_COLUMN_PRIVILEGE_ID_NAME_NAME 3016 #define F_HAS_COLUMN_PRIVILEGE_ID_NAME_ATTNUM 3017 #define F_HAS_COLUMN_PRIVILEGE_ID_ID_NAME 3018 #define F_HAS_COLUMN_PRIVILEGE_ID_ID_ATTNUM 3019 #define F_HAS_COLUMN_PRIVILEGE_NAME_NAME 3020 #define F_HAS_COLUMN_PRIVILEGE_NAME_ATTNUM 3021 #define F_HAS_COLUMN_PRIVILEGE_ID_NAME 3022 #define F_HAS_COLUMN_PRIVILEGE_ID_ATTNUM 3023 #define F_HAS_ANY_COLUMN_PRIVILEGE_NAME_NAME 3024 #define F_HAS_ANY_COLUMN_PRIVILEGE_NAME_ID 3025 #define F_HAS_ANY_COLUMN_PRIVILEGE_ID_NAME 3026 #define F_HAS_ANY_COLUMN_PRIVILEGE_ID_ID 3027 #define F_HAS_ANY_COLUMN_PRIVILEGE_NAME 3028 #define F_HAS_ANY_COLUMN_PRIVILEGE_ID 3029 #define F_BITOVERLAY 3030 #define F_BITOVERLAY_NO_LEN 3031 #define F_BITGETBIT 3032 #define F_BITSETBIT 3033 #define F_PG_RELATION_FILEPATH 3034 #define F_PG_LISTENING_CHANNELS 3035 #define F_PG_NOTIFY 3036 #define F_PG_STAT_GET_XACT_NUMSCANS 3037 #define F_PG_STAT_GET_XACT_TUPLES_RETURNED 3038 #define F_PG_STAT_GET_XACT_TUPLES_FETCHED 3039 #define F_PG_STAT_GET_XACT_TUPLES_INSERTED 3040 #define F_PG_STAT_GET_XACT_TUPLES_UPDATED 3041 #define F_PG_STAT_GET_XACT_TUPLES_DELETED 3042 #define F_PG_STAT_GET_XACT_TUPLES_HOT_UPDATED 3043 #define F_PG_STAT_GET_XACT_BLOCKS_FETCHED 3044 #define F_PG_STAT_GET_XACT_BLOCKS_HIT 3045 #define F_PG_STAT_GET_XACT_FUNCTION_CALLS 3046 #define F_PG_STAT_GET_XACT_FUNCTION_TOTAL_TIME 3047 #define F_PG_STAT_GET_XACT_FUNCTION_SELF_TIME 3048 #define F_XPATH_EXISTS 3049 #define F_XML_IS_WELL_FORMED 3051 #define F_XML_IS_WELL_FORMED_DOCUMENT 3052 #define F_XML_IS_WELL_FORMED_CONTENT 3053 #define F_PG_STAT_GET_VACUUM_COUNT 3054 #define F_PG_STAT_GET_AUTOVACUUM_COUNT 3055 #define F_PG_STAT_GET_ANALYZE_COUNT 3056 #define F_PG_STAT_GET_AUTOANALYZE_COUNT 3057 #define F_TEXT_CONCAT 3058 #define F_TEXT_CONCAT_WS 3059 #define F_TEXT_LEFT 3060 #define F_TEXT_RIGHT 3061 #define F_TEXT_REVERSE 3062 #define F_PG_STAT_GET_BUF_FSYNC_BACKEND 3063 #define F_GIST_POINT_DISTANCE 3064 #define F_PG_STAT_GET_DB_CONFLICT_TABLESPACE 3065 #define F_PG_STAT_GET_DB_CONFLICT_LOCK 3066 #define F_PG_STAT_GET_DB_CONFLICT_SNAPSHOT 3067 #define F_PG_STAT_GET_DB_CONFLICT_BUFFERPIN 3068 #define F_PG_STAT_GET_DB_CONFLICT_STARTUP_DEADLOCK 3069 #define F_PG_STAT_GET_DB_CONFLICT_ALL 3070 #define F_PG_WAL_REPLAY_PAUSE 3071 #define F_PG_WAL_REPLAY_RESUME 3072 #define F_PG_IS_WAL_REPLAY_PAUSED 3073 #define F_PG_STAT_GET_DB_STAT_RESET_TIME 3074 #define F_PG_STAT_GET_BGWRITER_STAT_RESET_TIME 3075 #define F_GINARRAYEXTRACT_2ARGS 3076 #define F_GIN_EXTRACT_TSVECTOR_2ARGS 3077 #define F_PG_SEQUENCE_PARAMETERS 3078 #define F_PG_AVAILABLE_EXTENSIONS 3082 #define F_PG_AVAILABLE_EXTENSION_VERSIONS 3083 #define F_PG_EXTENSION_UPDATE_PATHS 3084 #define F_PG_EXTENSION_CONFIG_DUMP 3086 #define F_GIN_EXTRACT_TSQUERY_5ARGS 3087 #define F_GIN_TSQUERY_CONSISTENT_6ARGS 3088 #define F_PG_ADVISORY_XACT_LOCK_INT8 3089 #define F_PG_ADVISORY_XACT_LOCK_SHARED_INT8 3090 #define F_PG_TRY_ADVISORY_XACT_LOCK_INT8 3091 #define F_PG_TRY_ADVISORY_XACT_LOCK_SHARED_INT8 3092 #define F_PG_ADVISORY_XACT_LOCK_INT4 3093 #define F_PG_ADVISORY_XACT_LOCK_SHARED_INT4 3094 #define F_PG_TRY_ADVISORY_XACT_LOCK_INT4 3095 #define F_PG_TRY_ADVISORY_XACT_LOCK_SHARED_INT4 3096 #define F_VARCHAR_SUPPORT 3097 #define F_PG_CREATE_RESTORE_POINT 3098 #define F_PG_STAT_GET_WAL_SENDERS 3099 #define F_WINDOW_ROW_NUMBER 3100 #define F_WINDOW_RANK 3101 #define F_WINDOW_DENSE_RANK 3102 #define F_WINDOW_PERCENT_RANK 3103 #define F_WINDOW_CUME_DIST 3104 #define F_WINDOW_NTILE 3105 #define F_WINDOW_LAG 3106 #define F_WINDOW_LAG_WITH_OFFSET 3107 #define F_WINDOW_LAG_WITH_OFFSET_AND_DEFAULT 3108 #define F_WINDOW_LEAD 3109 #define F_WINDOW_LEAD_WITH_OFFSET 3110 #define F_WINDOW_LEAD_WITH_OFFSET_AND_DEFAULT 3111 #define F_WINDOW_FIRST_VALUE 3112 #define F_WINDOW_LAST_VALUE 3113 #define F_WINDOW_NTH_VALUE 3114 #define F_FDW_HANDLER_IN 3116 #define F_FDW_HANDLER_OUT 3117 #define F_VOID_RECV 3120 #define F_VOID_SEND 3121 #define F_BTINT2SORTSUPPORT 3129 #define F_BTINT4SORTSUPPORT 3130 #define F_BTINT8SORTSUPPORT 3131 #define F_BTFLOAT4SORTSUPPORT 3132 #define F_BTFLOAT8SORTSUPPORT 3133 #define F_BTOIDSORTSUPPORT 3134 #define F_BTNAMESORTSUPPORT 3135 #define F_DATE_SORTSUPPORT 3136 #define F_TIMESTAMP_SORTSUPPORT 3137 #define F_HAS_TYPE_PRIVILEGE_NAME_NAME 3138 #define F_HAS_TYPE_PRIVILEGE_NAME_ID 3139 #define F_HAS_TYPE_PRIVILEGE_ID_NAME 3140 #define F_HAS_TYPE_PRIVILEGE_ID_ID 3141 #define F_HAS_TYPE_PRIVILEGE_NAME 3142 #define F_HAS_TYPE_PRIVILEGE_ID 3143 #define F_MACADDR_NOT 3144 #define F_MACADDR_AND 3145 #define F_MACADDR_OR 3146 #define F_PG_STAT_GET_DB_TEMP_FILES 3150 #define F_PG_STAT_GET_DB_TEMP_BYTES 3151 #define F_PG_STAT_GET_DB_DEADLOCKS 3152 #define F_ARRAY_TO_JSON 3153 #define F_ARRAY_TO_JSON_PRETTY 3154 #define F_ROW_TO_JSON 3155 #define F_ROW_TO_JSON_PRETTY 3156 #define F_NUMERIC_SUPPORT 3157 #define F_VARBIT_SUPPORT 3158 #define F_PG_GET_VIEWDEF_WRAP 3159 #define F_PG_STAT_GET_CHECKPOINT_WRITE_TIME 3160 #define F_PG_STAT_GET_CHECKPOINT_SYNC_TIME 3161 #define F_PG_COLLATION_FOR 3162 #define F_PG_TRIGGER_DEPTH 3163 #define F_PG_WAL_LSN_DIFF 3165 #define F_PG_SIZE_PRETTY_NUMERIC 3166 #define F_ARRAY_REMOVE 3167 #define F_ARRAY_REPLACE 3168 #define F_RANGESEL 3169 #define F_BE_LO_LSEEK64 3170 #define F_BE_LO_TELL64 3171 #define F_BE_LO_TRUNCATE64 3172 #define F_JSON_AGG_TRANSFN 3173 #define F_JSON_AGG_FINALFN 3174 #define F_TO_JSON 3176 #define F_PG_STAT_GET_MOD_SINCE_ANALYZE 3177 #define F_NUMERIC_SUM 3178 #define F_ARRAY_CARDINALITY 3179 #define F_JSON_OBJECT_AGG_TRANSFN 3180 #define F_RECORD_IMAGE_EQ 3181 #define F_RECORD_IMAGE_NE 3182 #define F_RECORD_IMAGE_LT 3183 #define F_RECORD_IMAGE_GT 3184 #define F_RECORD_IMAGE_LE 3185 #define F_RECORD_IMAGE_GE 3186 #define F_BTRECORDIMAGECMP 3187 #define F_PG_STAT_GET_ARCHIVER 3195 #define F_JSON_OBJECT_AGG_FINALFN 3196 #define F_JSON_BUILD_ARRAY 3198 #define F_JSON_BUILD_ARRAY_NOARGS 3199 #define F_JSON_BUILD_OBJECT 3200 #define F_JSON_BUILD_OBJECT_NOARGS 3201 #define F_JSON_OBJECT 3202 #define F_JSON_OBJECT_TWO_ARG 3203 #define F_JSON_TO_RECORD 3204 #define F_JSON_TO_RECORDSET 3205 #define F_JSONB_ARRAY_LENGTH 3207 #define F_JSONB_EACH 3208 #define F_JSONB_POPULATE_RECORD 3209 #define F_JSONB_TYPEOF 3210 #define F_JSONB_OBJECT_FIELD_TEXT 3214 #define F_JSONB_ARRAY_ELEMENT 3215 #define F_JSONB_ARRAY_ELEMENT_TEXT 3216 #define F_JSONB_EXTRACT_PATH 3217 #define F_WIDTH_BUCKET_ARRAY 3218 #define F_JSONB_ARRAY_ELEMENTS 3219 #define F_PG_LSN_IN 3229 #define F_PG_LSN_OUT 3230 #define F_PG_LSN_LT 3231 #define F_PG_LSN_LE 3232 #define F_PG_LSN_EQ 3233 #define F_PG_LSN_GE 3234 #define F_PG_LSN_GT 3235 #define F_PG_LSN_NE 3236 #define F_PG_LSN_MI 3237 #define F_PG_LSN_RECV 3238 #define F_PG_LSN_SEND 3239 #define F_PG_LSN_CMP 3251 #define F_PG_LSN_HASH 3252 #define F_BTTEXTSORTSUPPORT 3255 #define F_GENERATE_SERIES_STEP_NUMERIC 3259 #define F_GENERATE_SERIES_NUMERIC 3260 #define F_JSON_STRIP_NULLS 3261 #define F_JSONB_STRIP_NULLS 3262 #define F_JSONB_OBJECT 3263 #define F_JSONB_OBJECT_TWO_ARG 3264 #define F_JSONB_AGG_TRANSFN 3265 #define F_JSONB_AGG_FINALFN 3266 #define F_JSONB_OBJECT_AGG_TRANSFN 3268 #define F_JSONB_OBJECT_AGG_FINALFN 3269 #define F_JSONB_BUILD_ARRAY 3271 #define F_JSONB_BUILD_ARRAY_NOARGS 3272 #define F_JSONB_BUILD_OBJECT 3273 #define F_JSONB_BUILD_OBJECT_NOARGS 3274 #define F_DIST_PPOLY 3275 #define F_ARRAY_POSITION 3277 #define F_ARRAY_POSITION_START 3278 #define F_ARRAY_POSITIONS 3279 #define F_GIST_CIRCLE_DISTANCE 3280 #define F_NUMERIC_SCALE 3281 #define F_GIST_POINT_FETCH 3282 #define F_NUMERIC_SORTSUPPORT 3283 #define F_GIST_POLY_DISTANCE 3288 #define F_DIST_CPOINT 3290 #define F_DIST_POLYP 3292 #define F_PG_READ_FILE_V2 3293 #define F_SHOW_CONFIG_BY_NAME_MISSING_OK 3294 #define F_PG_READ_BINARY_FILE 3295 #define F_PG_NOTIFICATION_QUEUE_USAGE 3296 #define F_PG_LS_DIR 3297 #define F_ROW_SECURITY_ACTIVE 3298 #define F_ROW_SECURITY_ACTIVE_NAME 3299 #define F_UUID_SORTSUPPORT 3300 #define F_JSONB_CONCAT 3301 #define F_JSONB_DELETE 3302 #define F_JSONB_DELETE_IDX 3303 #define F_JSONB_DELETE_PATH 3304 #define F_JSONB_SET 3305 #define F_JSONB_PRETTY 3306 #define F_PG_STAT_FILE 3307 #define F_XIDNEQ 3308 #define F_TSM_HANDLER_IN 3311 #define F_TSM_HANDLER_OUT 3312 #define F_TSM_BERNOULLI_HANDLER 3313 #define F_TSM_SYSTEM_HANDLER 3314 #define F_PG_STAT_GET_WAL_RECEIVER 3317 #define F_PG_STAT_GET_PROGRESS_INFO 3318 #define F_TSVECTOR_FILTER 3319 #define F_TSVECTOR_SETWEIGHT_BY_FILTER 3320 #define F_TSVECTOR_DELETE_STR 3321 #define F_TSVECTOR_UNNEST 3322 #define F_TSVECTOR_DELETE_ARR 3323 #define F_INT4_AVG_COMBINE 3324 #define F_INTERVAL_COMBINE 3325 #define F_TSVECTOR_TO_ARRAY 3326 #define F_ARRAY_TO_TSVECTOR 3327 #define F_BPCHAR_SORTSUPPORT 3328 #define F_SHOW_ALL_FILE_SETTINGS 3329 #define F_PG_CURRENT_WAL_FLUSH_LSN 3330 #define F_BYTEA_SORTSUPPORT 3331 #define F_BTTEXT_PATTERN_SORTSUPPORT 3332 #define F_BTBPCHAR_PATTERN_SORTSUPPORT 3333 #define F_PG_SIZE_BYTES 3334 #define F_NUMERIC_SERIALIZE 3335 #define F_NUMERIC_DESERIALIZE 3336 #define F_NUMERIC_AVG_COMBINE 3337 #define F_NUMERIC_POLY_COMBINE 3338 #define F_NUMERIC_POLY_SERIALIZE 3339 #define F_NUMERIC_POLY_DESERIALIZE 3340 #define F_NUMERIC_COMBINE 3341 #define F_FLOAT8_REGR_COMBINE 3342 #define F_JSONB_DELETE_ARRAY 3343 #define F_CASH_MUL_INT8 3344 #define F_CASH_DIV_INT8 3345 #define F_PG_CURRENT_XACT_ID_IF_ASSIGNED 3348 #define F_PG_GET_PARTKEYDEF 3352 #define F_PG_LS_LOGDIR 3353 #define F_PG_LS_WALDIR 3354 #define F_PG_NDISTINCT_IN 3355 #define F_PG_NDISTINCT_OUT 3356 #define F_PG_NDISTINCT_RECV 3357 #define F_PG_NDISTINCT_SEND 3358 #define F_MACADDR_SORTSUPPORT 3359 #define F_PG_XACT_STATUS 3360 #define F_PG_SAFE_SNAPSHOT_BLOCKING_PIDS 3376 #define F_PG_ISOLATION_TEST_SESSION_IS_BLOCKED 3378 #define F_PG_IDENTIFY_OBJECT_AS_ADDRESS 3382 #define F_BRIN_MINMAX_OPCINFO 3383 #define F_BRIN_MINMAX_ADD_VALUE 3384 #define F_BRIN_MINMAX_CONSISTENT 3385 #define F_BRIN_MINMAX_UNION 3386 #define F_INT8_AVG_ACCUM_INV 3387 #define F_NUMERIC_POLY_SUM 3388 #define F_NUMERIC_POLY_AVG 3389 #define F_NUMERIC_POLY_VAR_POP 3390 #define F_NUMERIC_POLY_VAR_SAMP 3391 #define F_NUMERIC_POLY_STDDEV_POP 3392 #define F_NUMERIC_POLY_STDDEV_SAMP 3393 #define F_REGEXP_MATCH_NO_FLAGS 3396 #define F_REGEXP_MATCH 3397 #define F_INT8_MUL_CASH 3399 #define F_PG_CONFIG 3400 #define F_PG_HBA_FILE_RULES 3401 #define F_PG_STATISTICS_OBJ_IS_VISIBLE 3403 #define F_PG_DEPENDENCIES_IN 3404 #define F_PG_DEPENDENCIES_OUT 3405 #define F_PG_DEPENDENCIES_RECV 3406 #define F_PG_DEPENDENCIES_SEND 3407 #define F_PG_GET_PARTITION_CONSTRAINTDEF 3408 #define F_TIME_HASH_EXTENDED 3409 #define F_TIMETZ_HASH_EXTENDED 3410 #define F_TIMESTAMP_HASH_EXTENDED 3411 #define F_UUID_HASH_EXTENDED 3412 #define F_PG_LSN_HASH_EXTENDED 3413 #define F_HASHENUMEXTENDED 3414 #define F_PG_GET_STATISTICSOBJDEF 3415 #define F_JSONB_HASH_EXTENDED 3416 #define F_HASH_RANGE_EXTENDED 3417 #define F_INTERVAL_HASH_EXTENDED 3418 #define F_SHA224_BYTEA 3419 #define F_SHA256_BYTEA 3420 #define F_SHA384_BYTEA 3421 #define F_SHA512_BYTEA 3422 #define F_PG_PARTITION_TREE 3423 #define F_PG_PARTITION_ROOT 3424 #define F_PG_PARTITION_ANCESTORS 3425 #define F_PG_STAT_GET_DB_CHECKSUM_FAILURES 3426 #define F_PG_STATS_EXT_MCVLIST_ITEMS 3427 #define F_PG_STAT_GET_DB_CHECKSUM_LAST_FAILURE 3428 #define F_GEN_RANDOM_UUID 3432 #define F_GTSVECTOR_OPTIONS 3434 #define F_PG_PROMOTE 3436 #define F_PREFIXSEL 3437 #define F_PREFIXJOINSEL 3438 #define F_PG_CONTROL_SYSTEM 3441 #define F_PG_CONTROL_CHECKPOINT 3442 #define F_PG_CONTROL_RECOVERY 3443 #define F_PG_CONTROL_INIT 3444 #define F_PG_IMPORT_SYSTEM_COLLATIONS 3445 #define F_MACADDR8_RECV 3446 #define F_MACADDR8_SEND 3447 #define F_PG_COLLATION_ACTUAL_VERSION 3448 #define F_JSONB_NUMERIC 3449 #define F_JSONB_INT2 3450 #define F_JSONB_INT4 3451 #define F_JSONB_INT8 3452 #define F_JSONB_FLOAT4 3453 #define F_PG_FILENODE_RELATION 3454 #define F_BE_LO_FROM_BYTEA 3457 #define F_BE_LO_GET 3458 #define F_BE_LO_GET_FRAGMENT 3459 #define F_BE_LO_PUT 3460 #define F_MAKE_TIMESTAMP 3461 #define F_MAKE_TIMESTAMPTZ 3462 #define F_MAKE_TIMESTAMPTZ_AT_TIMEZONE 3463 #define F_MAKE_INTERVAL 3464 #define F_JSONB_ARRAY_ELEMENTS_TEXT 3465 #define F_SPG_RANGE_QUAD_CONFIG 3469 #define F_SPG_RANGE_QUAD_CHOOSE 3470 #define F_SPG_RANGE_QUAD_PICKSPLIT 3471 #define F_SPG_RANGE_QUAD_INNER_CONSISTENT 3472 #define F_SPG_RANGE_QUAD_LEAF_CONSISTENT 3473 #define F_JSONB_POPULATE_RECORDSET 3475 #define F_TO_REGOPERATOR 3476 #define F_JSONB_OBJECT_FIELD 3478 #define F_TO_REGPROCEDURE 3479 #define F_GIN_COMPARE_JSONB 3480 #define F_GIN_EXTRACT_JSONB 3482 #define F_GIN_EXTRACT_JSONB_QUERY 3483 #define F_GIN_CONSISTENT_JSONB 3484 #define F_GIN_EXTRACT_JSONB_PATH 3485 #define F_GIN_EXTRACT_JSONB_QUERY_PATH 3486 #define F_GIN_CONSISTENT_JSONB_PATH 3487 #define F_GIN_TRICONSISTENT_JSONB 3488 #define F_GIN_TRICONSISTENT_JSONB_PATH 3489 #define F_JSONB_TO_RECORD 3490 #define F_JSONB_TO_RECORDSET 3491 #define F_TO_REGOPER 3492 #define F_TO_REGTYPE 3493 #define F_TO_REGPROC 3494 #define F_TO_REGCLASS 3495 #define F_BOOL_ACCUM 3496 #define F_BOOL_ACCUM_INV 3497 #define F_BOOL_ALLTRUE 3498 #define F_BOOL_ANYTRUE 3499 #define F_ANYENUM_IN 3504 #define F_ANYENUM_OUT 3505 #define F_ENUM_IN 3506 #define F_ENUM_OUT 3507 #define F_ENUM_EQ 3508 #define F_ENUM_NE 3509 #define F_ENUM_LT 3510 #define F_ENUM_GT 3511 #define F_ENUM_LE 3512 #define F_ENUM_GE 3513 #define F_ENUM_CMP 3514 #define F_HASHENUM 3515 #define F_ENUM_SMALLER 3524 #define F_ENUM_LARGER 3525 #define F_ENUM_FIRST 3528 #define F_ENUM_LAST 3529 #define F_ENUM_RANGE_BOUNDS 3530 #define F_ENUM_RANGE_ALL 3531 #define F_ENUM_RECV 3532 #define F_ENUM_SEND 3533 #define F_STRING_AGG_TRANSFN 3535 #define F_STRING_AGG_FINALFN 3536 #define F_PG_DESCRIBE_OBJECT 3537 #define F_TEXT_FORMAT 3539 #define F_TEXT_FORMAT_NV 3540 #define F_BYTEA_STRING_AGG_TRANSFN 3543 #define F_BYTEA_STRING_AGG_FINALFN 3544 #define F_INT8DEC 3546 #define F_INT8DEC_ANY 3547 #define F_NUMERIC_ACCUM_INV 3548 #define F_INTERVAL_ACCUM_INV 3549 #define F_NETWORK_OVERLAP 3551 #define F_INET_GIST_CONSISTENT 3553 #define F_INET_GIST_UNION 3554 #define F_INET_GIST_COMPRESS 3555 #define F_JSONB_BOOL 3556 #define F_INET_GIST_PENALTY 3557 #define F_INET_GIST_PICKSPLIT 3558 #define F_INET_GIST_SAME 3559 #define F_NETWORKSEL 3560 #define F_NETWORKJOINSEL 3561 #define F_NETWORK_LARGER 3562 #define F_NETWORK_SMALLER 3563 #define F_PG_EVENT_TRIGGER_DROPPED_OBJECTS 3566 #define F_INT2_ACCUM_INV 3567 #define F_INT4_ACCUM_INV 3568 #define F_INT8_ACCUM_INV 3569 #define F_INT2_AVG_ACCUM_INV 3570 #define F_INT4_AVG_ACCUM_INV 3571 #define F_INT2INT4_SUM 3572 #define F_INET_GIST_FETCH 3573 #define F_PG_LOGICAL_EMIT_MESSAGE_TEXT 3577 #define F_PG_LOGICAL_EMIT_MESSAGE_BYTEA 3578 #define F_JSONB_INSERT 3579 #define F_PG_XACT_COMMIT_TIMESTAMP 3581 #define F_BINARY_UPGRADE_SET_NEXT_PG_TYPE_OID 3582 #define F_PG_LAST_COMMITTED_XACT 3583 #define F_BINARY_UPGRADE_SET_NEXT_ARRAY_PG_TYPE_OID 3584 #define F_BINARY_UPGRADE_SET_NEXT_TOAST_PG_TYPE_OID 3585 #define F_BINARY_UPGRADE_SET_NEXT_HEAP_PG_CLASS_OID 3586 #define F_BINARY_UPGRADE_SET_NEXT_INDEX_PG_CLASS_OID 3587 #define F_BINARY_UPGRADE_SET_NEXT_TOAST_PG_CLASS_OID 3588 #define F_BINARY_UPGRADE_SET_NEXT_PG_ENUM_OID 3589 #define F_BINARY_UPGRADE_SET_NEXT_PG_AUTHID_OID 3590 #define F_BINARY_UPGRADE_CREATE_EMPTY_EXTENSION 3591 #define F_EVENT_TRIGGER_IN 3594 #define F_EVENT_TRIGGER_OUT 3595 #define F_TSVECTORIN 3610 #define F_TSVECTOROUT 3611 #define F_TSQUERYIN 3612 #define F_TSQUERYOUT 3613 #define F_TSVECTOR_LT 3616 #define F_TSVECTOR_LE 3617 #define F_TSVECTOR_EQ 3618 #define F_TSVECTOR_NE 3619 #define F_TSVECTOR_GE 3620 #define F_TSVECTOR_GT 3621 #define F_TSVECTOR_CMP 3622 #define F_TSVECTOR_STRIP 3623 #define F_TSVECTOR_SETWEIGHT 3624 #define F_TSVECTOR_CONCAT 3625 #define F_TS_MATCH_VQ 3634 #define F_TS_MATCH_QV 3635 #define F_TSVECTORSEND 3638 #define F_TSVECTORRECV 3639 #define F_TSQUERYSEND 3640 #define F_TSQUERYRECV 3641 #define F_GTSVECTORIN 3646 #define F_GTSVECTOROUT 3647 #define F_GTSVECTOR_COMPRESS 3648 #define F_GTSVECTOR_DECOMPRESS 3649 #define F_GTSVECTOR_PICKSPLIT 3650 #define F_GTSVECTOR_UNION 3651 #define F_GTSVECTOR_SAME 3652 #define F_GTSVECTOR_PENALTY 3653 #define F_GTSVECTOR_CONSISTENT 3654 #define F_GIN_EXTRACT_TSVECTOR 3656 #define F_GIN_EXTRACT_TSQUERY 3657 #define F_GIN_TSQUERY_CONSISTENT 3658 #define F_TSQUERY_LT 3662 #define F_TSQUERY_LE 3663 #define F_TSQUERY_EQ 3664 #define F_TSQUERY_NE 3665 #define F_TSQUERY_GE 3666 #define F_TSQUERY_GT 3667 #define F_TSQUERY_CMP 3668 #define F_TSQUERY_AND 3669 #define F_TSQUERY_OR 3670 #define F_TSQUERY_NOT 3671 #define F_TSQUERY_NUMNODE 3672 #define F_TSQUERYTREE 3673 #define F_TSQUERY_REWRITE 3684 #define F_TSQUERY_REWRITE_QUERY 3685 #define F_TSMATCHSEL 3686 #define F_TSMATCHJOINSEL 3687 #define F_TS_TYPANALYZE 3688 #define F_TS_STAT1 3689 #define F_TS_STAT2 3690 #define F_TSQ_MCONTAINS 3691 #define F_TSQ_MCONTAINED 3692 #define F_GTSQUERY_COMPRESS 3695 #define F_TEXT_STARTS_WITH 3696 #define F_GTSQUERY_PICKSPLIT 3697 #define F_GTSQUERY_UNION 3698 #define F_GTSQUERY_SAME 3699 #define F_GTSQUERY_PENALTY 3700 #define F_GTSQUERY_CONSISTENT 3701 #define F_TS_RANK_WTTF 3703 #define F_TS_RANK_WTT 3704 #define F_TS_RANK_TTF 3705 #define F_TS_RANK_TT 3706 #define F_TS_RANKCD_WTTF 3707 #define F_TS_RANKCD_WTT 3708 #define F_TS_RANKCD_TTF 3709 #define F_TS_RANKCD_TT 3710 #define F_TSVECTOR_LENGTH 3711 #define F_TS_TOKEN_TYPE_BYID 3713 #define F_TS_TOKEN_TYPE_BYNAME 3714 #define F_TS_PARSE_BYID 3715 #define F_TS_PARSE_BYNAME 3716 #define F_PRSD_START 3717 #define F_PRSD_NEXTTOKEN 3718 #define F_PRSD_END 3719 #define F_PRSD_HEADLINE 3720 #define F_PRSD_LEXTYPE 3721 #define F_TS_LEXIZE 3723 #define F_GIN_CMP_TSLEXEME 3724 #define F_DSIMPLE_INIT 3725 #define F_DSIMPLE_LEXIZE 3726 #define F_DSYNONYM_INIT 3728 #define F_DSYNONYM_LEXIZE 3729 #define F_DISPELL_INIT 3731 #define F_DISPELL_LEXIZE 3732 #define F_REGCONFIGIN 3736 #define F_REGCONFIGOUT 3737 #define F_REGCONFIGRECV 3738 #define F_REGCONFIGSEND 3739 #define F_THESAURUS_INIT 3740 #define F_THESAURUS_LEXIZE 3741 #define F_TS_HEADLINE_BYID_OPT 3743 #define F_TS_HEADLINE_BYID 3744 #define F_TO_TSVECTOR_BYID 3745 #define F_TO_TSQUERY_BYID 3746 #define F_PLAINTO_TSQUERY_BYID 3747 #define F_TO_TSVECTOR 3749 #define F_TO_TSQUERY 3750 #define F_PLAINTO_TSQUERY 3751 #define F_TSVECTOR_UPDATE_TRIGGER_BYID 3752 #define F_TSVECTOR_UPDATE_TRIGGER_BYCOLUMN 3753 #define F_TS_HEADLINE_OPT 3754 #define F_TS_HEADLINE 3755 #define F_PG_TS_PARSER_IS_VISIBLE 3756 #define F_PG_TS_DICT_IS_VISIBLE 3757 #define F_PG_TS_CONFIG_IS_VISIBLE 3758 #define F_GET_CURRENT_TS_CONFIG 3759 #define F_TS_MATCH_TT 3760 #define F_TS_MATCH_TQ 3761 #define F_PG_TS_TEMPLATE_IS_VISIBLE 3768 #define F_REGDICTIONARYIN 3771 #define F_REGDICTIONARYOUT 3772 #define F_REGDICTIONARYRECV 3773 #define F_REGDICTIONARYSEND 3774 #define F_PG_STAT_RESET_SHARED 3775 #define F_PG_STAT_RESET_SINGLE_TABLE_COUNTERS 3776 #define F_PG_STAT_RESET_SINGLE_FUNCTION_COUNTERS 3777 #define F_PG_TABLESPACE_LOCATION 3778 #define F_PG_CREATE_PHYSICAL_REPLICATION_SLOT 3779 #define F_PG_DROP_REPLICATION_SLOT 3780 #define F_PG_GET_REPLICATION_SLOTS 3781 #define F_PG_LOGICAL_SLOT_GET_CHANGES 3782 #define F_PG_LOGICAL_SLOT_GET_BINARY_CHANGES 3783 #define F_PG_LOGICAL_SLOT_PEEK_CHANGES 3784 #define F_PG_LOGICAL_SLOT_PEEK_BINARY_CHANGES 3785 #define F_PG_CREATE_LOGICAL_REPLICATION_SLOT 3786 #define F_TO_JSONB 3787 #define F_PG_STAT_GET_SNAPSHOT_TIMESTAMP 3788 #define F_GIN_CLEAN_PENDING_LIST 3789 #define F_GTSVECTOR_CONSISTENT_OLDSIG 3790 #define F_GIN_EXTRACT_TSQUERY_OLDSIG 3791 #define F_GIN_TSQUERY_CONSISTENT_OLDSIG 3792 #define F_GTSQUERY_CONSISTENT_OLDSIG 3793 #define F_INET_SPG_CONFIG 3795 #define F_INET_SPG_CHOOSE 3796 #define F_INET_SPG_PICKSPLIT 3797 #define F_INET_SPG_INNER_CONSISTENT 3798 #define F_INET_SPG_LEAF_CONSISTENT 3799 #define F_PG_CURRENT_LOGFILE 3800 #define F_PG_CURRENT_LOGFILE_1ARG 3801 #define F_JSONB_SEND 3803 #define F_JSONB_OUT 3804 #define F_JSONB_RECV 3805 #define F_JSONB_IN 3806 #define F_PG_GET_FUNCTION_ARG_DEFAULT 3808 #define F_PG_EXPORT_SNAPSHOT 3809 #define F_PG_IS_IN_RECOVERY 3810 #define F_INT4_CASH 3811 #define F_INT8_CASH 3812 #define F_PG_IS_IN_BACKUP 3813 #define F_PG_BACKUP_START_TIME 3814 #define F_PG_COLLATION_IS_VISIBLE 3815 #define F_ARRAY_TYPANALYZE 3816 #define F_ARRAYCONTSEL 3817 #define F_ARRAYCONTJOINSEL 3818 #define F_PG_GET_MULTIXACT_MEMBERS 3819 #define F_PG_LAST_WAL_RECEIVE_LSN 3820 #define F_PG_LAST_WAL_REPLAY_LSN 3821 #define F_CASH_DIV_CASH 3822 #define F_CASH_NUMERIC 3823 #define F_NUMERIC_CASH 3824 #define F_PG_READ_FILE_ALL 3826 #define F_PG_READ_BINARY_FILE_OFF_LEN 3827 #define F_PG_READ_BINARY_FILE_ALL 3828 #define F_PG_OPFAMILY_IS_VISIBLE 3829 #define F_PG_LAST_XACT_REPLAY_TIMESTAMP 3830 #define F_ANYRANGE_IN 3832 #define F_ANYRANGE_OUT 3833 #define F_RANGE_IN 3834 #define F_RANGE_OUT 3835 #define F_RANGE_RECV 3836 #define F_RANGE_SEND 3837 #define F_PG_IDENTIFY_OBJECT 3839 #define F_RANGE_CONSTRUCTOR2 3840 #define F_RANGE_CONSTRUCTOR3 3841 #define F_PG_RELATION_IS_UPDATABLE 3842 #define F_PG_COLUMN_IS_UPDATABLE 3843 #define F_MAKE_DATE 3846 #define F_MAKE_TIME 3847 #define F_RANGE_LOWER 3848 #define F_RANGE_UPPER 3849 #define F_RANGE_EMPTY 3850 #define F_RANGE_LOWER_INC 3851 #define F_RANGE_UPPER_INC 3852 #define F_RANGE_LOWER_INF 3853 #define F_RANGE_UPPER_INF 3854 #define F_RANGE_EQ 3855 #define F_RANGE_NE 3856 #define F_RANGE_OVERLAPS 3857 #define F_RANGE_CONTAINS_ELEM 3858 #define F_RANGE_CONTAINS 3859 #define F_ELEM_CONTAINED_BY_RANGE 3860 #define F_RANGE_CONTAINED_BY 3861 #define F_RANGE_ADJACENT 3862 #define F_RANGE_BEFORE 3863 #define F_RANGE_AFTER 3864 #define F_RANGE_OVERLEFT 3865 #define F_RANGE_OVERRIGHT 3866 #define F_RANGE_UNION 3867 #define F_RANGE_INTERSECT 3868 #define F_RANGE_MINUS 3869 #define F_RANGE_CMP 3870 #define F_RANGE_LT 3871 #define F_RANGE_LE 3872 #define F_RANGE_GE 3873 #define F_RANGE_GT 3874 #define F_RANGE_GIST_CONSISTENT 3875 #define F_RANGE_GIST_UNION 3876 #define F_PG_REPLICATION_SLOT_ADVANCE 3878 #define F_RANGE_GIST_PENALTY 3879 #define F_RANGE_GIST_PICKSPLIT 3880 #define F_RANGE_GIST_SAME 3881 #define F_HASH_RANGE 3902 #define F_INT4RANGE_CANONICAL 3914 #define F_DATERANGE_CANONICAL 3915 #define F_RANGE_TYPANALYZE 3916 #define F_TIMESTAMP_SUPPORT 3917 #define F_INTERVAL_SUPPORT 3918 #define F_GINARRAYTRICONSISTENT 3920 #define F_GIN_TSQUERY_TRICONSISTENT 3921 #define F_INT4RANGE_SUBDIFF 3922 #define F_INT8RANGE_SUBDIFF 3923 #define F_NUMRANGE_SUBDIFF 3924 #define F_DATERANGE_SUBDIFF 3925 #define F_INT8RANGE_CANONICAL 3928 #define F_TSRANGE_SUBDIFF 3929 #define F_TSTZRANGE_SUBDIFF 3930 #define F_JSONB_OBJECT_KEYS 3931 #define F_JSONB_EACH_TEXT 3932 #define F_MXID_AGE 3939 #define F_JSONB_EXTRACT_PATH_TEXT 3940 #define F_ACLDEFAULT_SQL 3943 #define F_TIME_SUPPORT 3944 #define F_JSON_OBJECT_FIELD 3947 #define F_JSON_OBJECT_FIELD_TEXT 3948 #define F_JSON_ARRAY_ELEMENT 3949 #define F_JSON_ARRAY_ELEMENT_TEXT 3950 #define F_JSON_EXTRACT_PATH 3951 #define F_BRIN_SUMMARIZE_NEW_VALUES 3952 #define F_JSON_EXTRACT_PATH_TEXT 3953 #define F_PG_GET_OBJECT_ADDRESS 3954 #define F_JSON_ARRAY_ELEMENTS 3955 #define F_JSON_ARRAY_LENGTH 3956 #define F_JSON_OBJECT_KEYS 3957 #define F_JSON_EACH 3958 #define F_JSON_EACH_TEXT 3959 #define F_JSON_POPULATE_RECORD 3960 #define F_JSON_POPULATE_RECORDSET 3961 #define F_JSON_TYPEOF 3968 #define F_JSON_ARRAY_ELEMENTS_TEXT 3969 #define F_ORDERED_SET_TRANSITION 3970 #define F_ORDERED_SET_TRANSITION_MULTI 3971 #define F_PERCENTILE_DISC_FINAL 3973 #define F_PERCENTILE_CONT_FLOAT8_FINAL 3975 #define F_PERCENTILE_CONT_INTERVAL_FINAL 3977 #define F_PERCENTILE_DISC_MULTI_FINAL 3979 #define F_PERCENTILE_CONT_FLOAT8_MULTI_FINAL 3981 #define F_PERCENTILE_CONT_INTERVAL_MULTI_FINAL 3983 #define F_MODE_FINAL 3985 #define F_HYPOTHETICAL_RANK_FINAL 3987 #define F_HYPOTHETICAL_PERCENT_RANK_FINAL 3989 #define F_HYPOTHETICAL_CUME_DIST_FINAL 3991 #define F_HYPOTHETICAL_DENSE_RANK_FINAL 3993 #define F_GENERATE_SERIES_INT4_SUPPORT 3994 #define F_GENERATE_SERIES_INT8_SUPPORT 3995 #define F_ARRAY_UNNEST_SUPPORT 3996 #define F_GIST_BOX_DISTANCE 3998 #define F_BRIN_SUMMARIZE_RANGE 3999 #define F_JSONPATH_IN 4001 #define F_JSONPATH_RECV 4002 #define F_JSONPATH_OUT 4003 #define F_JSONPATH_SEND 4004 #define F_JSONB_PATH_EXISTS 4005 #define F_JSONB_PATH_QUERY 4006 #define F_JSONB_PATH_QUERY_ARRAY 4007 #define F_JSONB_PATH_QUERY_FIRST 4008 #define F_JSONB_PATH_MATCH 4009 #define F_JSONB_PATH_EXISTS_OPR 4010 #define F_JSONB_PATH_MATCH_OPR 4011 #define F_BRIN_DESUMMARIZE_RANGE 4014 #define F_SPG_QUAD_CONFIG 4018 #define F_SPG_QUAD_CHOOSE 4019 #define F_SPG_QUAD_PICKSPLIT 4020 #define F_SPG_QUAD_INNER_CONSISTENT 4021 #define F_SPG_QUAD_LEAF_CONSISTENT 4022 #define F_SPG_KD_CONFIG 4023 #define F_SPG_KD_CHOOSE 4024 #define F_SPG_KD_PICKSPLIT 4025 #define F_SPG_KD_INNER_CONSISTENT 4026 #define F_SPG_TEXT_CONFIG 4027 #define F_SPG_TEXT_CHOOSE 4028 #define F_SPG_TEXT_PICKSPLIT 4029 #define F_SPG_TEXT_INNER_CONSISTENT 4030 #define F_SPG_TEXT_LEAF_CONSISTENT 4031 #define F_PG_SEQUENCE_LAST_VALUE 4032 #define F_JSONB_NE 4038 #define F_JSONB_LT 4039 #define F_JSONB_GT 4040 #define F_JSONB_LE 4041 #define F_JSONB_GE 4042 #define F_JSONB_EQ 4043 #define F_JSONB_CMP 4044 #define F_JSONB_HASH 4045 #define F_JSONB_CONTAINS 4046 #define F_JSONB_EXISTS 4047 #define F_JSONB_EXISTS_ANY 4048 #define F_JSONB_EXISTS_ALL 4049 #define F_JSONB_CONTAINED 4050 #define F_ARRAY_AGG_ARRAY_TRANSFN 4051 #define F_ARRAY_AGG_ARRAY_FINALFN 4052 #define F_RANGE_MERGE 4057 #define F_INET_MERGE 4063 #define F_BOXES_BOUND_BOX 4067 #define F_INET_SAME_FAMILY 4071 #define F_BINARY_UPGRADE_SET_RECORD_INIT_PRIVS 4083 #define F_REGNAMESPACEIN 4084 #define F_REGNAMESPACEOUT 4085 #define F_TO_REGNAMESPACE 4086 #define F_REGNAMESPACERECV 4087 #define F_REGNAMESPACESEND 4088 #define F_POINT_BOX 4091 #define F_REGROLEOUT 4092 #define F_TO_REGROLE 4093 #define F_REGROLERECV 4094 #define F_REGROLESEND 4095 #define F_REGROLEIN 4098 #define F_PG_ROTATE_LOGFILE 4099 #define F_PG_READ_FILE 4100 #define F_BINARY_UPGRADE_SET_MISSING_VALUE 4101 #define F_BRIN_INCLUSION_OPCINFO 4105 #define F_BRIN_INCLUSION_ADD_VALUE 4106 #define F_BRIN_INCLUSION_CONSISTENT 4107 #define F_BRIN_INCLUSION_UNION 4108 #define F_MACADDR8_IN 4110 #define F_MACADDR8_OUT 4111 #define F_MACADDR8_TRUNC 4112 #define F_MACADDR8_EQ 4113 #define F_MACADDR8_LT 4114 #define F_MACADDR8_LE 4115 #define F_MACADDR8_GT 4116 #define F_MACADDR8_GE 4117 #define F_MACADDR8_NE 4118 #define F_MACADDR8_CMP 4119 #define F_MACADDR8_NOT 4120 #define F_MACADDR8_AND 4121 #define F_MACADDR8_OR 4122 #define F_MACADDRTOMACADDR8 4123 #define F_MACADDR8TOMACADDR 4124 #define F_MACADDR8_SET7BIT 4125 #define F_IN_RANGE_INT8_INT8 4126 #define F_IN_RANGE_INT4_INT8 4127 #define F_IN_RANGE_INT4_INT4 4128 #define F_IN_RANGE_INT4_INT2 4129 #define F_IN_RANGE_INT2_INT8 4130 #define F_IN_RANGE_INT2_INT4 4131 #define F_IN_RANGE_INT2_INT2 4132 #define F_IN_RANGE_DATE_INTERVAL 4133 #define F_IN_RANGE_TIMESTAMP_INTERVAL 4134 #define F_IN_RANGE_TIMESTAMPTZ_INTERVAL 4135 #define F_IN_RANGE_INTERVAL_INTERVAL 4136 #define F_IN_RANGE_TIME_INTERVAL 4137 #define F_IN_RANGE_TIMETZ_INTERVAL 4138 #define F_IN_RANGE_FLOAT8_FLOAT8 4139 #define F_IN_RANGE_FLOAT4_FLOAT8 4140 #define F_IN_RANGE_NUMERIC_NUMERIC 4141 #define F_PG_LSN_LARGER 4187 #define F_PG_LSN_SMALLER 4188 #define F_REGCOLLATIONIN 4193 #define F_REGCOLLATIONOUT 4194 #define F_TO_REGCOLLATION 4195 #define F_REGCOLLATIONRECV 4196 #define F_REGCOLLATIONSEND 4197 #define F_TS_HEADLINE_JSONB_BYID_OPT 4201 #define F_TS_HEADLINE_JSONB_BYID 4202 #define F_TS_HEADLINE_JSONB_OPT 4203 #define F_TS_HEADLINE_JSONB 4204 #define F_TS_HEADLINE_JSON_BYID_OPT 4205 #define F_TS_HEADLINE_JSON_BYID 4206 #define F_TS_HEADLINE_JSON_OPT 4207 #define F_TS_HEADLINE_JSON 4208 #define F_JSONB_STRING_TO_TSVECTOR 4209 #define F_JSON_STRING_TO_TSVECTOR 4210 #define F_JSONB_STRING_TO_TSVECTOR_BYID 4211 #define F_JSON_STRING_TO_TSVECTOR_BYID 4212 #define F_JSONB_TO_TSVECTOR 4213 #define F_JSONB_TO_TSVECTOR_BYID 4214 #define F_JSON_TO_TSVECTOR 4215 #define F_JSON_TO_TSVECTOR_BYID 4216 #define F_PG_COPY_PHYSICAL_REPLICATION_SLOT_A 4220 #define F_PG_COPY_PHYSICAL_REPLICATION_SLOT_B 4221 #define F_PG_COPY_LOGICAL_REPLICATION_SLOT_A 4222 #define F_PG_COPY_LOGICAL_REPLICATION_SLOT_B 4223 #define F_PG_COPY_LOGICAL_REPLICATION_SLOT_C 4224 #define F_UNICODE_NORMALIZE_FUNC 4350 #define F_UNICODE_IS_NORMALIZED 4351 #define F_PG_EVENT_TRIGGER_TABLE_REWRITE_OID 4566 #define F_PG_EVENT_TRIGGER_TABLE_REWRITE_REASON 4567 #define F_PG_EVENT_TRIGGER_DDL_COMMANDS 4568 #define F_PHRASETO_TSQUERY 5001 #define F_TSQUERY_PHRASE 5003 #define F_TSQUERY_PHRASE_DISTANCE 5004 #define F_PHRASETO_TSQUERY_BYID 5006 #define F_WEBSEARCH_TO_TSQUERY_BYID 5007 #define F_WEBSEARCH_TO_TSQUERY 5009 #define F_SPG_BBOX_QUAD_CONFIG 5010 #define F_SPG_POLY_QUAD_COMPRESS 5011 #define F_SPG_BOX_QUAD_CONFIG 5012 #define F_SPG_BOX_QUAD_CHOOSE 5013 #define F_SPG_BOX_QUAD_PICKSPLIT 5014 #define F_SPG_BOX_QUAD_INNER_CONSISTENT 5015 #define F_SPG_BOX_QUAD_LEAF_CONSISTENT 5016 #define F_PG_MCV_LIST_IN 5018 #define F_PG_MCV_LIST_OUT 5019 #define F_PG_MCV_LIST_RECV 5020 #define F_PG_MCV_LIST_SEND 5021 #define F_SATISFIES_HASH_PARTITION 5028 #define F_PG_LS_TMPDIR_NOARGS 5029 #define F_PG_LS_TMPDIR_1ARG 5030 #define F_PG_LS_ARCHIVE_STATUSDIR 5031 #define F_NETWORK_SORTSUPPORT 5033 #define F_XID8LT 5034 #define F_XID8GT 5035 #define F_XID8LE 5036 #define F_XID8GE 5037 #define F_MATCHINGSEL 5040 #define F_MATCHINGJOINSEL 5041 #define F_NUMERIC_MIN_SCALE 5042 #define F_NUMERIC_TRIM_SCALE 5043 #define F_INT4GCD 5044 #define F_INT8GCD 5045 #define F_INT4LCM 5046 #define F_INT8LCM 5047 #define F_NUMERIC_GCD 5048 #define F_NUMERIC_LCM 5049 #define F_BTVARSTREQUALIMAGE 5050 #define F_BTEQUALIMAGE 5051 #define F_PG_GET_SHMEM_ALLOCATIONS 5052 #define F_PG_STAT_GET_INS_SINCE_VACUUM 5053 #define F_JSONB_SET_LAX 5054 #define F_XID8IN 5070 #define F_XID8TOXID 5071 #define F_XID8OUT 5081 #define F_XID8RECV 5082 #define F_XID8SEND 5083 #define F_XID8EQ 5084 #define F_XID8NE 5085 #define F_ANYCOMPATIBLE_IN 5086 #define F_ANYCOMPATIBLE_OUT 5087 #define F_ANYCOMPATIBLEARRAY_IN 5088 #define F_ANYCOMPATIBLEARRAY_OUT 5089 #define F_ANYCOMPATIBLEARRAY_RECV 5090 #define F_ANYCOMPATIBLEARRAY_SEND 5091 #define F_ANYCOMPATIBLENONARRAY_IN 5092 #define F_ANYCOMPATIBLENONARRAY_OUT 5093 #define F_ANYCOMPATIBLERANGE_IN 5094 #define F_ANYCOMPATIBLERANGE_OUT 5095 #define F_XID8CMP 5096 #define F_PG_REPLICATION_ORIGIN_CREATE 6003 #define F_PG_REPLICATION_ORIGIN_DROP 6004 #define F_PG_REPLICATION_ORIGIN_OID 6005 #define F_PG_REPLICATION_ORIGIN_SESSION_SETUP 6006 #define F_PG_REPLICATION_ORIGIN_SESSION_RESET 6007 #define F_PG_REPLICATION_ORIGIN_SESSION_IS_SETUP 6008 #define F_PG_REPLICATION_ORIGIN_SESSION_PROGRESS 6009 #define F_PG_REPLICATION_ORIGIN_XACT_SETUP 6010 #define F_PG_REPLICATION_ORIGIN_XACT_RESET 6011 #define F_PG_REPLICATION_ORIGIN_ADVANCE 6012 #define F_PG_REPLICATION_ORIGIN_PROGRESS 6013 #define F_PG_SHOW_REPLICATION_ORIGIN_STATUS 6014 #define F_PG_STAT_GET_SUBSCRIPTION 6118 #define F_PG_GET_PUBLICATION_TABLES 6119 #define F_PG_GET_REPLICA_IDENTITY_INDEX 6120 #define F_PG_RELATION_IS_PUBLISHABLE 6121 #endif /* FMGROIDS_H */ libpg_query-13-2.1.0/src/postgres/include/utils/fmgrprotos.h000066400000000000000000003653521413137616400240740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fmgrprotos.h * Prototypes for built-in functions. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/backend/utils/Gen_fmgrtab.pl * *------------------------------------------------------------------------- */ #ifndef FMGRPROTOS_H #define FMGRPROTOS_H #include "fmgr.h" extern Datum heap_tableam_handler(PG_FUNCTION_ARGS); extern Datum byteaout(PG_FUNCTION_ARGS); extern Datum charout(PG_FUNCTION_ARGS); extern Datum namein(PG_FUNCTION_ARGS); extern Datum nameout(PG_FUNCTION_ARGS); extern Datum int2in(PG_FUNCTION_ARGS); extern Datum int2out(PG_FUNCTION_ARGS); extern Datum int2vectorin(PG_FUNCTION_ARGS); extern Datum int2vectorout(PG_FUNCTION_ARGS); extern Datum int4in(PG_FUNCTION_ARGS); extern Datum int4out(PG_FUNCTION_ARGS); extern Datum regprocin(PG_FUNCTION_ARGS); extern Datum regprocout(PG_FUNCTION_ARGS); extern Datum textin(PG_FUNCTION_ARGS); extern Datum textout(PG_FUNCTION_ARGS); extern Datum tidin(PG_FUNCTION_ARGS); extern Datum tidout(PG_FUNCTION_ARGS); extern Datum xidin(PG_FUNCTION_ARGS); extern Datum xidout(PG_FUNCTION_ARGS); extern Datum cidin(PG_FUNCTION_ARGS); extern Datum cidout(PG_FUNCTION_ARGS); extern Datum oidvectorin(PG_FUNCTION_ARGS); extern Datum oidvectorout(PG_FUNCTION_ARGS); extern Datum boollt(PG_FUNCTION_ARGS); extern Datum boolgt(PG_FUNCTION_ARGS); extern Datum booleq(PG_FUNCTION_ARGS); extern Datum chareq(PG_FUNCTION_ARGS); extern Datum nameeq(PG_FUNCTION_ARGS); extern Datum int2eq(PG_FUNCTION_ARGS); extern Datum int2lt(PG_FUNCTION_ARGS); extern Datum int4eq(PG_FUNCTION_ARGS); extern Datum int4lt(PG_FUNCTION_ARGS); extern Datum texteq(PG_FUNCTION_ARGS); extern Datum xideq(PG_FUNCTION_ARGS); extern Datum cideq(PG_FUNCTION_ARGS); extern Datum charne(PG_FUNCTION_ARGS); extern Datum charle(PG_FUNCTION_ARGS); extern Datum chargt(PG_FUNCTION_ARGS); extern Datum charge(PG_FUNCTION_ARGS); extern Datum chartoi4(PG_FUNCTION_ARGS); extern Datum i4tochar(PG_FUNCTION_ARGS); extern Datum nameregexeq(PG_FUNCTION_ARGS); extern Datum boolne(PG_FUNCTION_ARGS); extern Datum pg_ddl_command_in(PG_FUNCTION_ARGS); extern Datum pg_ddl_command_out(PG_FUNCTION_ARGS); extern Datum pg_ddl_command_recv(PG_FUNCTION_ARGS); extern Datum pgsql_version(PG_FUNCTION_ARGS); extern Datum pg_ddl_command_send(PG_FUNCTION_ARGS); extern Datum eqsel(PG_FUNCTION_ARGS); extern Datum neqsel(PG_FUNCTION_ARGS); extern Datum scalarltsel(PG_FUNCTION_ARGS); extern Datum scalargtsel(PG_FUNCTION_ARGS); extern Datum eqjoinsel(PG_FUNCTION_ARGS); extern Datum neqjoinsel(PG_FUNCTION_ARGS); extern Datum scalarltjoinsel(PG_FUNCTION_ARGS); extern Datum scalargtjoinsel(PG_FUNCTION_ARGS); extern Datum unknownin(PG_FUNCTION_ARGS); extern Datum unknownout(PG_FUNCTION_ARGS); extern Datum numeric_fac(PG_FUNCTION_ARGS); extern Datum box_above_eq(PG_FUNCTION_ARGS); extern Datum box_below_eq(PG_FUNCTION_ARGS); extern Datum point_in(PG_FUNCTION_ARGS); extern Datum point_out(PG_FUNCTION_ARGS); extern Datum lseg_in(PG_FUNCTION_ARGS); extern Datum lseg_out(PG_FUNCTION_ARGS); extern Datum path_in(PG_FUNCTION_ARGS); extern Datum path_out(PG_FUNCTION_ARGS); extern Datum box_in(PG_FUNCTION_ARGS); extern Datum box_out(PG_FUNCTION_ARGS); extern Datum box_overlap(PG_FUNCTION_ARGS); extern Datum box_ge(PG_FUNCTION_ARGS); extern Datum box_gt(PG_FUNCTION_ARGS); extern Datum box_eq(PG_FUNCTION_ARGS); extern Datum box_lt(PG_FUNCTION_ARGS); extern Datum box_le(PG_FUNCTION_ARGS); extern Datum point_above(PG_FUNCTION_ARGS); extern Datum point_left(PG_FUNCTION_ARGS); extern Datum point_right(PG_FUNCTION_ARGS); extern Datum point_below(PG_FUNCTION_ARGS); extern Datum point_eq(PG_FUNCTION_ARGS); extern Datum on_pb(PG_FUNCTION_ARGS); extern Datum on_ppath(PG_FUNCTION_ARGS); extern Datum box_center(PG_FUNCTION_ARGS); extern Datum areasel(PG_FUNCTION_ARGS); extern Datum areajoinsel(PG_FUNCTION_ARGS); extern Datum int4mul(PG_FUNCTION_ARGS); extern Datum int4ne(PG_FUNCTION_ARGS); extern Datum int2ne(PG_FUNCTION_ARGS); extern Datum int2gt(PG_FUNCTION_ARGS); extern Datum int4gt(PG_FUNCTION_ARGS); extern Datum int2le(PG_FUNCTION_ARGS); extern Datum int4le(PG_FUNCTION_ARGS); extern Datum int4ge(PG_FUNCTION_ARGS); extern Datum int2ge(PG_FUNCTION_ARGS); extern Datum int2mul(PG_FUNCTION_ARGS); extern Datum int2div(PG_FUNCTION_ARGS); extern Datum int4div(PG_FUNCTION_ARGS); extern Datum int2mod(PG_FUNCTION_ARGS); extern Datum int4mod(PG_FUNCTION_ARGS); extern Datum textne(PG_FUNCTION_ARGS); extern Datum int24eq(PG_FUNCTION_ARGS); extern Datum int42eq(PG_FUNCTION_ARGS); extern Datum int24lt(PG_FUNCTION_ARGS); extern Datum int42lt(PG_FUNCTION_ARGS); extern Datum int24gt(PG_FUNCTION_ARGS); extern Datum int42gt(PG_FUNCTION_ARGS); extern Datum int24ne(PG_FUNCTION_ARGS); extern Datum int42ne(PG_FUNCTION_ARGS); extern Datum int24le(PG_FUNCTION_ARGS); extern Datum int42le(PG_FUNCTION_ARGS); extern Datum int24ge(PG_FUNCTION_ARGS); extern Datum int42ge(PG_FUNCTION_ARGS); extern Datum int24mul(PG_FUNCTION_ARGS); extern Datum int42mul(PG_FUNCTION_ARGS); extern Datum int24div(PG_FUNCTION_ARGS); extern Datum int42div(PG_FUNCTION_ARGS); extern Datum int2pl(PG_FUNCTION_ARGS); extern Datum int4pl(PG_FUNCTION_ARGS); extern Datum int24pl(PG_FUNCTION_ARGS); extern Datum int42pl(PG_FUNCTION_ARGS); extern Datum int2mi(PG_FUNCTION_ARGS); extern Datum int4mi(PG_FUNCTION_ARGS); extern Datum int24mi(PG_FUNCTION_ARGS); extern Datum int42mi(PG_FUNCTION_ARGS); extern Datum oideq(PG_FUNCTION_ARGS); extern Datum oidne(PG_FUNCTION_ARGS); extern Datum box_same(PG_FUNCTION_ARGS); extern Datum box_contain(PG_FUNCTION_ARGS); extern Datum box_left(PG_FUNCTION_ARGS); extern Datum box_overleft(PG_FUNCTION_ARGS); extern Datum box_overright(PG_FUNCTION_ARGS); extern Datum box_right(PG_FUNCTION_ARGS); extern Datum box_contained(PG_FUNCTION_ARGS); extern Datum box_contain_pt(PG_FUNCTION_ARGS); extern Datum pg_node_tree_in(PG_FUNCTION_ARGS); extern Datum pg_node_tree_out(PG_FUNCTION_ARGS); extern Datum pg_node_tree_recv(PG_FUNCTION_ARGS); extern Datum pg_node_tree_send(PG_FUNCTION_ARGS); extern Datum float4in(PG_FUNCTION_ARGS); extern Datum float4out(PG_FUNCTION_ARGS); extern Datum float4mul(PG_FUNCTION_ARGS); extern Datum float4div(PG_FUNCTION_ARGS); extern Datum float4pl(PG_FUNCTION_ARGS); extern Datum float4mi(PG_FUNCTION_ARGS); extern Datum float4um(PG_FUNCTION_ARGS); extern Datum float4abs(PG_FUNCTION_ARGS); extern Datum float4_accum(PG_FUNCTION_ARGS); extern Datum float4larger(PG_FUNCTION_ARGS); extern Datum float4smaller(PG_FUNCTION_ARGS); extern Datum int4um(PG_FUNCTION_ARGS); extern Datum int2um(PG_FUNCTION_ARGS); extern Datum float8in(PG_FUNCTION_ARGS); extern Datum float8out(PG_FUNCTION_ARGS); extern Datum float8mul(PG_FUNCTION_ARGS); extern Datum float8div(PG_FUNCTION_ARGS); extern Datum float8pl(PG_FUNCTION_ARGS); extern Datum float8mi(PG_FUNCTION_ARGS); extern Datum float8um(PG_FUNCTION_ARGS); extern Datum float8abs(PG_FUNCTION_ARGS); extern Datum float8_accum(PG_FUNCTION_ARGS); extern Datum float8larger(PG_FUNCTION_ARGS); extern Datum float8smaller(PG_FUNCTION_ARGS); extern Datum lseg_center(PG_FUNCTION_ARGS); extern Datum path_center(PG_FUNCTION_ARGS); extern Datum poly_center(PG_FUNCTION_ARGS); extern Datum dround(PG_FUNCTION_ARGS); extern Datum dtrunc(PG_FUNCTION_ARGS); extern Datum dsqrt(PG_FUNCTION_ARGS); extern Datum dcbrt(PG_FUNCTION_ARGS); extern Datum dpow(PG_FUNCTION_ARGS); extern Datum dexp(PG_FUNCTION_ARGS); extern Datum dlog1(PG_FUNCTION_ARGS); extern Datum i2tod(PG_FUNCTION_ARGS); extern Datum i2tof(PG_FUNCTION_ARGS); extern Datum dtoi2(PG_FUNCTION_ARGS); extern Datum ftoi2(PG_FUNCTION_ARGS); extern Datum line_distance(PG_FUNCTION_ARGS); extern Datum nameeqtext(PG_FUNCTION_ARGS); extern Datum namelttext(PG_FUNCTION_ARGS); extern Datum nameletext(PG_FUNCTION_ARGS); extern Datum namegetext(PG_FUNCTION_ARGS); extern Datum namegttext(PG_FUNCTION_ARGS); extern Datum namenetext(PG_FUNCTION_ARGS); extern Datum btnametextcmp(PG_FUNCTION_ARGS); extern Datum texteqname(PG_FUNCTION_ARGS); extern Datum textltname(PG_FUNCTION_ARGS); extern Datum textlename(PG_FUNCTION_ARGS); extern Datum textgename(PG_FUNCTION_ARGS); extern Datum textgtname(PG_FUNCTION_ARGS); extern Datum textnename(PG_FUNCTION_ARGS); extern Datum bttextnamecmp(PG_FUNCTION_ARGS); extern Datum nameconcatoid(PG_FUNCTION_ARGS); extern Datum table_am_handler_in(PG_FUNCTION_ARGS); extern Datum table_am_handler_out(PG_FUNCTION_ARGS); extern Datum timeofday(PG_FUNCTION_ARGS); extern Datum pg_nextoid(PG_FUNCTION_ARGS); extern Datum float8_combine(PG_FUNCTION_ARGS); extern Datum inter_sl(PG_FUNCTION_ARGS); extern Datum inter_lb(PG_FUNCTION_ARGS); extern Datum float48mul(PG_FUNCTION_ARGS); extern Datum float48div(PG_FUNCTION_ARGS); extern Datum float48pl(PG_FUNCTION_ARGS); extern Datum float48mi(PG_FUNCTION_ARGS); extern Datum float84mul(PG_FUNCTION_ARGS); extern Datum float84div(PG_FUNCTION_ARGS); extern Datum float84pl(PG_FUNCTION_ARGS); extern Datum float84mi(PG_FUNCTION_ARGS); extern Datum float4eq(PG_FUNCTION_ARGS); extern Datum float4ne(PG_FUNCTION_ARGS); extern Datum float4lt(PG_FUNCTION_ARGS); extern Datum float4le(PG_FUNCTION_ARGS); extern Datum float4gt(PG_FUNCTION_ARGS); extern Datum float4ge(PG_FUNCTION_ARGS); extern Datum float8eq(PG_FUNCTION_ARGS); extern Datum float8ne(PG_FUNCTION_ARGS); extern Datum float8lt(PG_FUNCTION_ARGS); extern Datum float8le(PG_FUNCTION_ARGS); extern Datum float8gt(PG_FUNCTION_ARGS); extern Datum float8ge(PG_FUNCTION_ARGS); extern Datum float48eq(PG_FUNCTION_ARGS); extern Datum float48ne(PG_FUNCTION_ARGS); extern Datum float48lt(PG_FUNCTION_ARGS); extern Datum float48le(PG_FUNCTION_ARGS); extern Datum float48gt(PG_FUNCTION_ARGS); extern Datum float48ge(PG_FUNCTION_ARGS); extern Datum float84eq(PG_FUNCTION_ARGS); extern Datum float84ne(PG_FUNCTION_ARGS); extern Datum float84lt(PG_FUNCTION_ARGS); extern Datum float84le(PG_FUNCTION_ARGS); extern Datum float84gt(PG_FUNCTION_ARGS); extern Datum float84ge(PG_FUNCTION_ARGS); extern Datum ftod(PG_FUNCTION_ARGS); extern Datum dtof(PG_FUNCTION_ARGS); extern Datum i2toi4(PG_FUNCTION_ARGS); extern Datum i4toi2(PG_FUNCTION_ARGS); extern Datum pg_jit_available(PG_FUNCTION_ARGS); extern Datum i4tod(PG_FUNCTION_ARGS); extern Datum dtoi4(PG_FUNCTION_ARGS); extern Datum i4tof(PG_FUNCTION_ARGS); extern Datum ftoi4(PG_FUNCTION_ARGS); extern Datum width_bucket_float8(PG_FUNCTION_ARGS); extern Datum json_in(PG_FUNCTION_ARGS); extern Datum json_out(PG_FUNCTION_ARGS); extern Datum json_recv(PG_FUNCTION_ARGS); extern Datum json_send(PG_FUNCTION_ARGS); extern Datum index_am_handler_in(PG_FUNCTION_ARGS); extern Datum index_am_handler_out(PG_FUNCTION_ARGS); extern Datum hashmacaddr8(PG_FUNCTION_ARGS); extern Datum hash_aclitem(PG_FUNCTION_ARGS); extern Datum bthandler(PG_FUNCTION_ARGS); extern Datum hashhandler(PG_FUNCTION_ARGS); extern Datum gisthandler(PG_FUNCTION_ARGS); extern Datum ginhandler(PG_FUNCTION_ARGS); extern Datum spghandler(PG_FUNCTION_ARGS); extern Datum brinhandler(PG_FUNCTION_ARGS); extern Datum scalarlesel(PG_FUNCTION_ARGS); extern Datum scalargesel(PG_FUNCTION_ARGS); extern Datum amvalidate(PG_FUNCTION_ARGS); extern Datum poly_same(PG_FUNCTION_ARGS); extern Datum poly_contain(PG_FUNCTION_ARGS); extern Datum poly_left(PG_FUNCTION_ARGS); extern Datum poly_overleft(PG_FUNCTION_ARGS); extern Datum poly_overright(PG_FUNCTION_ARGS); extern Datum poly_right(PG_FUNCTION_ARGS); extern Datum poly_contained(PG_FUNCTION_ARGS); extern Datum poly_overlap(PG_FUNCTION_ARGS); extern Datum poly_in(PG_FUNCTION_ARGS); extern Datum poly_out(PG_FUNCTION_ARGS); extern Datum btint2cmp(PG_FUNCTION_ARGS); extern Datum btint4cmp(PG_FUNCTION_ARGS); extern Datum btfloat4cmp(PG_FUNCTION_ARGS); extern Datum btfloat8cmp(PG_FUNCTION_ARGS); extern Datum btoidcmp(PG_FUNCTION_ARGS); extern Datum dist_bp(PG_FUNCTION_ARGS); extern Datum btcharcmp(PG_FUNCTION_ARGS); extern Datum btnamecmp(PG_FUNCTION_ARGS); extern Datum bttextcmp(PG_FUNCTION_ARGS); extern Datum lseg_distance(PG_FUNCTION_ARGS); extern Datum lseg_interpt(PG_FUNCTION_ARGS); extern Datum dist_ps(PG_FUNCTION_ARGS); extern Datum dist_pb(PG_FUNCTION_ARGS); extern Datum dist_sb(PG_FUNCTION_ARGS); extern Datum close_ps(PG_FUNCTION_ARGS); extern Datum close_pb(PG_FUNCTION_ARGS); extern Datum close_sb(PG_FUNCTION_ARGS); extern Datum on_ps(PG_FUNCTION_ARGS); extern Datum path_distance(PG_FUNCTION_ARGS); extern Datum dist_ppath(PG_FUNCTION_ARGS); extern Datum on_sb(PG_FUNCTION_ARGS); extern Datum inter_sb(PG_FUNCTION_ARGS); extern Datum text_to_array_null(PG_FUNCTION_ARGS); extern Datum cash_cmp(PG_FUNCTION_ARGS); extern Datum array_append(PG_FUNCTION_ARGS); extern Datum array_prepend(PG_FUNCTION_ARGS); extern Datum dist_sp(PG_FUNCTION_ARGS); extern Datum dist_bs(PG_FUNCTION_ARGS); extern Datum btarraycmp(PG_FUNCTION_ARGS); extern Datum array_cat(PG_FUNCTION_ARGS); extern Datum array_to_text_null(PG_FUNCTION_ARGS); extern Datum scalarlejoinsel(PG_FUNCTION_ARGS); extern Datum array_ne(PG_FUNCTION_ARGS); extern Datum array_lt(PG_FUNCTION_ARGS); extern Datum array_gt(PG_FUNCTION_ARGS); extern Datum array_le(PG_FUNCTION_ARGS); extern Datum text_to_array(PG_FUNCTION_ARGS); extern Datum array_to_text(PG_FUNCTION_ARGS); extern Datum array_ge(PG_FUNCTION_ARGS); extern Datum scalargejoinsel(PG_FUNCTION_ARGS); extern Datum hashmacaddr(PG_FUNCTION_ARGS); extern Datum hashtext(PG_FUNCTION_ARGS); extern Datum rtrim1(PG_FUNCTION_ARGS); extern Datum btoidvectorcmp(PG_FUNCTION_ARGS); extern Datum name_text(PG_FUNCTION_ARGS); extern Datum text_name(PG_FUNCTION_ARGS); extern Datum name_bpchar(PG_FUNCTION_ARGS); extern Datum bpchar_name(PG_FUNCTION_ARGS); extern Datum dist_pathp(PG_FUNCTION_ARGS); extern Datum hashinet(PG_FUNCTION_ARGS); extern Datum hashint4extended(PG_FUNCTION_ARGS); extern Datum hash_numeric(PG_FUNCTION_ARGS); extern Datum macaddr_in(PG_FUNCTION_ARGS); extern Datum macaddr_out(PG_FUNCTION_ARGS); extern Datum pg_num_nulls(PG_FUNCTION_ARGS); extern Datum pg_num_nonnulls(PG_FUNCTION_ARGS); extern Datum hashint2extended(PG_FUNCTION_ARGS); extern Datum hashint8extended(PG_FUNCTION_ARGS); extern Datum hashfloat4extended(PG_FUNCTION_ARGS); extern Datum hashfloat8extended(PG_FUNCTION_ARGS); extern Datum hashoidextended(PG_FUNCTION_ARGS); extern Datum hashcharextended(PG_FUNCTION_ARGS); extern Datum hashnameextended(PG_FUNCTION_ARGS); extern Datum hashtextextended(PG_FUNCTION_ARGS); extern Datum hashint2(PG_FUNCTION_ARGS); extern Datum hashint4(PG_FUNCTION_ARGS); extern Datum hashfloat4(PG_FUNCTION_ARGS); extern Datum hashfloat8(PG_FUNCTION_ARGS); extern Datum hashoid(PG_FUNCTION_ARGS); extern Datum hashchar(PG_FUNCTION_ARGS); extern Datum hashname(PG_FUNCTION_ARGS); extern Datum hashvarlena(PG_FUNCTION_ARGS); extern Datum hashoidvector(PG_FUNCTION_ARGS); extern Datum text_larger(PG_FUNCTION_ARGS); extern Datum text_smaller(PG_FUNCTION_ARGS); extern Datum int8in(PG_FUNCTION_ARGS); extern Datum int8out(PG_FUNCTION_ARGS); extern Datum int8um(PG_FUNCTION_ARGS); extern Datum int8pl(PG_FUNCTION_ARGS); extern Datum int8mi(PG_FUNCTION_ARGS); extern Datum int8mul(PG_FUNCTION_ARGS); extern Datum int8div(PG_FUNCTION_ARGS); extern Datum int8eq(PG_FUNCTION_ARGS); extern Datum int8ne(PG_FUNCTION_ARGS); extern Datum int8lt(PG_FUNCTION_ARGS); extern Datum int8gt(PG_FUNCTION_ARGS); extern Datum int8le(PG_FUNCTION_ARGS); extern Datum int8ge(PG_FUNCTION_ARGS); extern Datum int84eq(PG_FUNCTION_ARGS); extern Datum int84ne(PG_FUNCTION_ARGS); extern Datum int84lt(PG_FUNCTION_ARGS); extern Datum int84gt(PG_FUNCTION_ARGS); extern Datum int84le(PG_FUNCTION_ARGS); extern Datum int84ge(PG_FUNCTION_ARGS); extern Datum int84(PG_FUNCTION_ARGS); extern Datum int48(PG_FUNCTION_ARGS); extern Datum i8tod(PG_FUNCTION_ARGS); extern Datum dtoi8(PG_FUNCTION_ARGS); extern Datum array_larger(PG_FUNCTION_ARGS); extern Datum array_smaller(PG_FUNCTION_ARGS); extern Datum inet_abbrev(PG_FUNCTION_ARGS); extern Datum cidr_abbrev(PG_FUNCTION_ARGS); extern Datum inet_set_masklen(PG_FUNCTION_ARGS); extern Datum oidvectorne(PG_FUNCTION_ARGS); extern Datum hash_array(PG_FUNCTION_ARGS); extern Datum cidr_set_masklen(PG_FUNCTION_ARGS); extern Datum pg_indexam_has_property(PG_FUNCTION_ARGS); extern Datum pg_index_has_property(PG_FUNCTION_ARGS); extern Datum pg_index_column_has_property(PG_FUNCTION_ARGS); extern Datum i8tof(PG_FUNCTION_ARGS); extern Datum ftoi8(PG_FUNCTION_ARGS); extern Datum namelt(PG_FUNCTION_ARGS); extern Datum namele(PG_FUNCTION_ARGS); extern Datum namegt(PG_FUNCTION_ARGS); extern Datum namege(PG_FUNCTION_ARGS); extern Datum namene(PG_FUNCTION_ARGS); extern Datum bpchar(PG_FUNCTION_ARGS); extern Datum varchar(PG_FUNCTION_ARGS); extern Datum pg_indexam_progress_phasename(PG_FUNCTION_ARGS); extern Datum oidvectorlt(PG_FUNCTION_ARGS); extern Datum oidvectorle(PG_FUNCTION_ARGS); extern Datum oidvectoreq(PG_FUNCTION_ARGS); extern Datum oidvectorge(PG_FUNCTION_ARGS); extern Datum oidvectorgt(PG_FUNCTION_ARGS); extern Datum network_network(PG_FUNCTION_ARGS); extern Datum network_netmask(PG_FUNCTION_ARGS); extern Datum network_masklen(PG_FUNCTION_ARGS); extern Datum network_broadcast(PG_FUNCTION_ARGS); extern Datum network_host(PG_FUNCTION_ARGS); extern Datum dist_lp(PG_FUNCTION_ARGS); extern Datum dist_bl(PG_FUNCTION_ARGS); extern Datum dist_ls(PG_FUNCTION_ARGS); extern Datum current_user(PG_FUNCTION_ARGS); extern Datum network_family(PG_FUNCTION_ARGS); extern Datum int82(PG_FUNCTION_ARGS); extern Datum be_lo_create(PG_FUNCTION_ARGS); extern Datum oidlt(PG_FUNCTION_ARGS); extern Datum oidle(PG_FUNCTION_ARGS); extern Datum byteaoctetlen(PG_FUNCTION_ARGS); extern Datum byteaGetByte(PG_FUNCTION_ARGS); extern Datum byteaSetByte(PG_FUNCTION_ARGS); extern Datum byteaGetBit(PG_FUNCTION_ARGS); extern Datum byteaSetBit(PG_FUNCTION_ARGS); extern Datum dist_pl(PG_FUNCTION_ARGS); extern Datum dist_lb(PG_FUNCTION_ARGS); extern Datum dist_sl(PG_FUNCTION_ARGS); extern Datum dist_cpoly(PG_FUNCTION_ARGS); extern Datum poly_distance(PG_FUNCTION_ARGS); extern Datum network_show(PG_FUNCTION_ARGS); extern Datum text_lt(PG_FUNCTION_ARGS); extern Datum text_le(PG_FUNCTION_ARGS); extern Datum text_gt(PG_FUNCTION_ARGS); extern Datum text_ge(PG_FUNCTION_ARGS); extern Datum array_eq(PG_FUNCTION_ARGS); extern Datum session_user(PG_FUNCTION_ARGS); extern Datum array_dims(PG_FUNCTION_ARGS); extern Datum array_ndims(PG_FUNCTION_ARGS); extern Datum byteaoverlay(PG_FUNCTION_ARGS); extern Datum array_in(PG_FUNCTION_ARGS); extern Datum array_out(PG_FUNCTION_ARGS); extern Datum byteaoverlay_no_len(PG_FUNCTION_ARGS); extern Datum macaddr_trunc(PG_FUNCTION_ARGS); extern Datum int28(PG_FUNCTION_ARGS); extern Datum be_lo_import(PG_FUNCTION_ARGS); extern Datum be_lo_export(PG_FUNCTION_ARGS); extern Datum int4inc(PG_FUNCTION_ARGS); extern Datum be_lo_import_with_oid(PG_FUNCTION_ARGS); extern Datum int4larger(PG_FUNCTION_ARGS); extern Datum int4smaller(PG_FUNCTION_ARGS); extern Datum int2larger(PG_FUNCTION_ARGS); extern Datum int2smaller(PG_FUNCTION_ARGS); extern Datum hashvarlenaextended(PG_FUNCTION_ARGS); extern Datum hashoidvectorextended(PG_FUNCTION_ARGS); extern Datum hash_aclitem_extended(PG_FUNCTION_ARGS); extern Datum hashmacaddrextended(PG_FUNCTION_ARGS); extern Datum hashinetextended(PG_FUNCTION_ARGS); extern Datum hash_numeric_extended(PG_FUNCTION_ARGS); extern Datum hashmacaddr8extended(PG_FUNCTION_ARGS); extern Datum hash_array_extended(PG_FUNCTION_ARGS); extern Datum dist_polyc(PG_FUNCTION_ARGS); extern Datum pg_client_encoding(PG_FUNCTION_ARGS); extern Datum current_query(PG_FUNCTION_ARGS); extern Datum macaddr_eq(PG_FUNCTION_ARGS); extern Datum macaddr_lt(PG_FUNCTION_ARGS); extern Datum macaddr_le(PG_FUNCTION_ARGS); extern Datum macaddr_gt(PG_FUNCTION_ARGS); extern Datum macaddr_ge(PG_FUNCTION_ARGS); extern Datum macaddr_ne(PG_FUNCTION_ARGS); extern Datum macaddr_cmp(PG_FUNCTION_ARGS); extern Datum int82pl(PG_FUNCTION_ARGS); extern Datum int82mi(PG_FUNCTION_ARGS); extern Datum int82mul(PG_FUNCTION_ARGS); extern Datum int82div(PG_FUNCTION_ARGS); extern Datum int28pl(PG_FUNCTION_ARGS); extern Datum btint8cmp(PG_FUNCTION_ARGS); extern Datum cash_mul_flt4(PG_FUNCTION_ARGS); extern Datum cash_div_flt4(PG_FUNCTION_ARGS); extern Datum flt4_mul_cash(PG_FUNCTION_ARGS); extern Datum textpos(PG_FUNCTION_ARGS); extern Datum textlike(PG_FUNCTION_ARGS); extern Datum textnlike(PG_FUNCTION_ARGS); extern Datum int48eq(PG_FUNCTION_ARGS); extern Datum int48ne(PG_FUNCTION_ARGS); extern Datum int48lt(PG_FUNCTION_ARGS); extern Datum int48gt(PG_FUNCTION_ARGS); extern Datum int48le(PG_FUNCTION_ARGS); extern Datum int48ge(PG_FUNCTION_ARGS); extern Datum namelike(PG_FUNCTION_ARGS); extern Datum namenlike(PG_FUNCTION_ARGS); extern Datum char_bpchar(PG_FUNCTION_ARGS); extern Datum current_database(PG_FUNCTION_ARGS); extern Datum int4_mul_cash(PG_FUNCTION_ARGS); extern Datum int2_mul_cash(PG_FUNCTION_ARGS); extern Datum cash_mul_int4(PG_FUNCTION_ARGS); extern Datum cash_div_int4(PG_FUNCTION_ARGS); extern Datum cash_mul_int2(PG_FUNCTION_ARGS); extern Datum cash_div_int2(PG_FUNCTION_ARGS); extern Datum lower(PG_FUNCTION_ARGS); extern Datum upper(PG_FUNCTION_ARGS); extern Datum initcap(PG_FUNCTION_ARGS); extern Datum lpad(PG_FUNCTION_ARGS); extern Datum rpad(PG_FUNCTION_ARGS); extern Datum ltrim(PG_FUNCTION_ARGS); extern Datum rtrim(PG_FUNCTION_ARGS); extern Datum text_substr(PG_FUNCTION_ARGS); extern Datum translate(PG_FUNCTION_ARGS); extern Datum ltrim1(PG_FUNCTION_ARGS); extern Datum text_substr_no_len(PG_FUNCTION_ARGS); extern Datum btrim(PG_FUNCTION_ARGS); extern Datum btrim1(PG_FUNCTION_ARGS); extern Datum cash_in(PG_FUNCTION_ARGS); extern Datum cash_out(PG_FUNCTION_ARGS); extern Datum cash_eq(PG_FUNCTION_ARGS); extern Datum cash_ne(PG_FUNCTION_ARGS); extern Datum cash_lt(PG_FUNCTION_ARGS); extern Datum cash_le(PG_FUNCTION_ARGS); extern Datum cash_gt(PG_FUNCTION_ARGS); extern Datum cash_ge(PG_FUNCTION_ARGS); extern Datum cash_pl(PG_FUNCTION_ARGS); extern Datum cash_mi(PG_FUNCTION_ARGS); extern Datum cash_mul_flt8(PG_FUNCTION_ARGS); extern Datum cash_div_flt8(PG_FUNCTION_ARGS); extern Datum cashlarger(PG_FUNCTION_ARGS); extern Datum cashsmaller(PG_FUNCTION_ARGS); extern Datum inet_in(PG_FUNCTION_ARGS); extern Datum inet_out(PG_FUNCTION_ARGS); extern Datum flt8_mul_cash(PG_FUNCTION_ARGS); extern Datum network_eq(PG_FUNCTION_ARGS); extern Datum network_lt(PG_FUNCTION_ARGS); extern Datum network_le(PG_FUNCTION_ARGS); extern Datum network_gt(PG_FUNCTION_ARGS); extern Datum network_ge(PG_FUNCTION_ARGS); extern Datum network_ne(PG_FUNCTION_ARGS); extern Datum network_cmp(PG_FUNCTION_ARGS); extern Datum network_sub(PG_FUNCTION_ARGS); extern Datum network_subeq(PG_FUNCTION_ARGS); extern Datum network_sup(PG_FUNCTION_ARGS); extern Datum network_supeq(PG_FUNCTION_ARGS); extern Datum cash_words(PG_FUNCTION_ARGS); extern Datum generate_series_timestamp(PG_FUNCTION_ARGS); extern Datum generate_series_timestamptz(PG_FUNCTION_ARGS); extern Datum int28mi(PG_FUNCTION_ARGS); extern Datum int28mul(PG_FUNCTION_ARGS); extern Datum text_char(PG_FUNCTION_ARGS); extern Datum int8mod(PG_FUNCTION_ARGS); extern Datum char_text(PG_FUNCTION_ARGS); extern Datum int28div(PG_FUNCTION_ARGS); extern Datum hashint8(PG_FUNCTION_ARGS); extern Datum be_lo_open(PG_FUNCTION_ARGS); extern Datum be_lo_close(PG_FUNCTION_ARGS); extern Datum be_loread(PG_FUNCTION_ARGS); extern Datum be_lowrite(PG_FUNCTION_ARGS); extern Datum be_lo_lseek(PG_FUNCTION_ARGS); extern Datum be_lo_creat(PG_FUNCTION_ARGS); extern Datum be_lo_tell(PG_FUNCTION_ARGS); extern Datum on_pl(PG_FUNCTION_ARGS); extern Datum on_sl(PG_FUNCTION_ARGS); extern Datum close_pl(PG_FUNCTION_ARGS); extern Datum close_sl(PG_FUNCTION_ARGS); extern Datum close_lb(PG_FUNCTION_ARGS); extern Datum be_lo_unlink(PG_FUNCTION_ARGS); extern Datum hashbpcharextended(PG_FUNCTION_ARGS); extern Datum path_inter(PG_FUNCTION_ARGS); extern Datum box_area(PG_FUNCTION_ARGS); extern Datum box_width(PG_FUNCTION_ARGS); extern Datum box_height(PG_FUNCTION_ARGS); extern Datum box_distance(PG_FUNCTION_ARGS); extern Datum path_area(PG_FUNCTION_ARGS); extern Datum box_intersect(PG_FUNCTION_ARGS); extern Datum box_diagonal(PG_FUNCTION_ARGS); extern Datum path_n_lt(PG_FUNCTION_ARGS); extern Datum path_n_gt(PG_FUNCTION_ARGS); extern Datum path_n_eq(PG_FUNCTION_ARGS); extern Datum path_n_le(PG_FUNCTION_ARGS); extern Datum path_n_ge(PG_FUNCTION_ARGS); extern Datum path_length(PG_FUNCTION_ARGS); extern Datum point_ne(PG_FUNCTION_ARGS); extern Datum point_vert(PG_FUNCTION_ARGS); extern Datum point_horiz(PG_FUNCTION_ARGS); extern Datum point_distance(PG_FUNCTION_ARGS); extern Datum point_slope(PG_FUNCTION_ARGS); extern Datum lseg_construct(PG_FUNCTION_ARGS); extern Datum lseg_intersect(PG_FUNCTION_ARGS); extern Datum lseg_parallel(PG_FUNCTION_ARGS); extern Datum lseg_perp(PG_FUNCTION_ARGS); extern Datum lseg_vertical(PG_FUNCTION_ARGS); extern Datum lseg_horizontal(PG_FUNCTION_ARGS); extern Datum lseg_eq(PG_FUNCTION_ARGS); extern Datum be_lo_truncate(PG_FUNCTION_ARGS); extern Datum textlike_support(PG_FUNCTION_ARGS); extern Datum texticregexeq_support(PG_FUNCTION_ARGS); extern Datum texticlike_support(PG_FUNCTION_ARGS); extern Datum timestamptz_izone(PG_FUNCTION_ARGS); extern Datum gist_point_compress(PG_FUNCTION_ARGS); extern Datum aclitemin(PG_FUNCTION_ARGS); extern Datum aclitemout(PG_FUNCTION_ARGS); extern Datum aclinsert(PG_FUNCTION_ARGS); extern Datum aclremove(PG_FUNCTION_ARGS); extern Datum aclcontains(PG_FUNCTION_ARGS); extern Datum getdatabaseencoding(PG_FUNCTION_ARGS); extern Datum bpcharin(PG_FUNCTION_ARGS); extern Datum bpcharout(PG_FUNCTION_ARGS); extern Datum varcharin(PG_FUNCTION_ARGS); extern Datum varcharout(PG_FUNCTION_ARGS); extern Datum bpchareq(PG_FUNCTION_ARGS); extern Datum bpcharlt(PG_FUNCTION_ARGS); extern Datum bpcharle(PG_FUNCTION_ARGS); extern Datum bpchargt(PG_FUNCTION_ARGS); extern Datum bpcharge(PG_FUNCTION_ARGS); extern Datum bpcharne(PG_FUNCTION_ARGS); extern Datum aclitem_eq(PG_FUNCTION_ARGS); extern Datum bpchar_larger(PG_FUNCTION_ARGS); extern Datum bpchar_smaller(PG_FUNCTION_ARGS); extern Datum pg_prepared_xact(PG_FUNCTION_ARGS); extern Datum generate_series_step_int4(PG_FUNCTION_ARGS); extern Datum generate_series_int4(PG_FUNCTION_ARGS); extern Datum generate_series_step_int8(PG_FUNCTION_ARGS); extern Datum generate_series_int8(PG_FUNCTION_ARGS); extern Datum bpcharcmp(PG_FUNCTION_ARGS); extern Datum text_regclass(PG_FUNCTION_ARGS); extern Datum hashbpchar(PG_FUNCTION_ARGS); extern Datum format_type(PG_FUNCTION_ARGS); extern Datum date_in(PG_FUNCTION_ARGS); extern Datum date_out(PG_FUNCTION_ARGS); extern Datum date_eq(PG_FUNCTION_ARGS); extern Datum date_lt(PG_FUNCTION_ARGS); extern Datum date_le(PG_FUNCTION_ARGS); extern Datum date_gt(PG_FUNCTION_ARGS); extern Datum date_ge(PG_FUNCTION_ARGS); extern Datum date_ne(PG_FUNCTION_ARGS); extern Datum date_cmp(PG_FUNCTION_ARGS); extern Datum time_lt(PG_FUNCTION_ARGS); extern Datum time_le(PG_FUNCTION_ARGS); extern Datum time_gt(PG_FUNCTION_ARGS); extern Datum time_ge(PG_FUNCTION_ARGS); extern Datum time_ne(PG_FUNCTION_ARGS); extern Datum time_cmp(PG_FUNCTION_ARGS); extern Datum date_larger(PG_FUNCTION_ARGS); extern Datum date_smaller(PG_FUNCTION_ARGS); extern Datum date_mi(PG_FUNCTION_ARGS); extern Datum date_pli(PG_FUNCTION_ARGS); extern Datum date_mii(PG_FUNCTION_ARGS); extern Datum time_in(PG_FUNCTION_ARGS); extern Datum time_out(PG_FUNCTION_ARGS); extern Datum time_eq(PG_FUNCTION_ARGS); extern Datum circle_add_pt(PG_FUNCTION_ARGS); extern Datum circle_sub_pt(PG_FUNCTION_ARGS); extern Datum circle_mul_pt(PG_FUNCTION_ARGS); extern Datum circle_div_pt(PG_FUNCTION_ARGS); extern Datum timestamptz_in(PG_FUNCTION_ARGS); extern Datum timestamptz_out(PG_FUNCTION_ARGS); extern Datum timestamp_eq(PG_FUNCTION_ARGS); extern Datum timestamp_ne(PG_FUNCTION_ARGS); extern Datum timestamp_lt(PG_FUNCTION_ARGS); extern Datum timestamp_le(PG_FUNCTION_ARGS); extern Datum timestamp_ge(PG_FUNCTION_ARGS); extern Datum timestamp_gt(PG_FUNCTION_ARGS); extern Datum float8_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamptz_zone(PG_FUNCTION_ARGS); extern Datum interval_in(PG_FUNCTION_ARGS); extern Datum interval_out(PG_FUNCTION_ARGS); extern Datum interval_eq(PG_FUNCTION_ARGS); extern Datum interval_ne(PG_FUNCTION_ARGS); extern Datum interval_lt(PG_FUNCTION_ARGS); extern Datum interval_le(PG_FUNCTION_ARGS); extern Datum interval_ge(PG_FUNCTION_ARGS); extern Datum interval_gt(PG_FUNCTION_ARGS); extern Datum interval_um(PG_FUNCTION_ARGS); extern Datum interval_pl(PG_FUNCTION_ARGS); extern Datum interval_mi(PG_FUNCTION_ARGS); extern Datum timestamptz_part(PG_FUNCTION_ARGS); extern Datum interval_part(PG_FUNCTION_ARGS); extern Datum network_subset_support(PG_FUNCTION_ARGS); extern Datum date_timestamptz(PG_FUNCTION_ARGS); extern Datum interval_justify_hours(PG_FUNCTION_ARGS); extern Datum jsonb_path_exists_tz(PG_FUNCTION_ARGS); extern Datum timestamptz_date(PG_FUNCTION_ARGS); extern Datum jsonb_path_query_tz(PG_FUNCTION_ARGS); extern Datum jsonb_path_query_array_tz(PG_FUNCTION_ARGS); extern Datum xid_age(PG_FUNCTION_ARGS); extern Datum timestamp_mi(PG_FUNCTION_ARGS); extern Datum timestamptz_pl_interval(PG_FUNCTION_ARGS); extern Datum timestamptz_mi_interval(PG_FUNCTION_ARGS); extern Datum generate_subscripts(PG_FUNCTION_ARGS); extern Datum generate_subscripts_nodir(PG_FUNCTION_ARGS); extern Datum array_fill(PG_FUNCTION_ARGS); extern Datum dlog10(PG_FUNCTION_ARGS); extern Datum timestamp_smaller(PG_FUNCTION_ARGS); extern Datum timestamp_larger(PG_FUNCTION_ARGS); extern Datum interval_smaller(PG_FUNCTION_ARGS); extern Datum interval_larger(PG_FUNCTION_ARGS); extern Datum timestamptz_age(PG_FUNCTION_ARGS); extern Datum interval_scale(PG_FUNCTION_ARGS); extern Datum timestamptz_trunc(PG_FUNCTION_ARGS); extern Datum interval_trunc(PG_FUNCTION_ARGS); extern Datum int8inc(PG_FUNCTION_ARGS); extern Datum int8abs(PG_FUNCTION_ARGS); extern Datum int8larger(PG_FUNCTION_ARGS); extern Datum int8smaller(PG_FUNCTION_ARGS); extern Datum texticregexeq(PG_FUNCTION_ARGS); extern Datum texticregexne(PG_FUNCTION_ARGS); extern Datum nameicregexeq(PG_FUNCTION_ARGS); extern Datum nameicregexne(PG_FUNCTION_ARGS); extern Datum boolin(PG_FUNCTION_ARGS); extern Datum boolout(PG_FUNCTION_ARGS); extern Datum byteain(PG_FUNCTION_ARGS); extern Datum charin(PG_FUNCTION_ARGS); extern Datum charlt(PG_FUNCTION_ARGS); extern Datum unique_key_recheck(PG_FUNCTION_ARGS); extern Datum int4abs(PG_FUNCTION_ARGS); extern Datum nameregexne(PG_FUNCTION_ARGS); extern Datum int2abs(PG_FUNCTION_ARGS); extern Datum textregexeq(PG_FUNCTION_ARGS); extern Datum textregexne(PG_FUNCTION_ARGS); extern Datum textlen(PG_FUNCTION_ARGS); extern Datum textcat(PG_FUNCTION_ARGS); extern Datum PG_char_to_encoding(PG_FUNCTION_ARGS); extern Datum tidne(PG_FUNCTION_ARGS); extern Datum cidr_in(PG_FUNCTION_ARGS); extern Datum parse_ident(PG_FUNCTION_ARGS); extern Datum pg_column_size(PG_FUNCTION_ARGS); extern Datum overlaps_timetz(PG_FUNCTION_ARGS); extern Datum datetime_timestamp(PG_FUNCTION_ARGS); extern Datum timetz_part(PG_FUNCTION_ARGS); extern Datum int84pl(PG_FUNCTION_ARGS); extern Datum int84mi(PG_FUNCTION_ARGS); extern Datum int84mul(PG_FUNCTION_ARGS); extern Datum int84div(PG_FUNCTION_ARGS); extern Datum int48pl(PG_FUNCTION_ARGS); extern Datum int48mi(PG_FUNCTION_ARGS); extern Datum int48mul(PG_FUNCTION_ARGS); extern Datum int48div(PG_FUNCTION_ARGS); extern Datum quote_ident(PG_FUNCTION_ARGS); extern Datum quote_literal(PG_FUNCTION_ARGS); extern Datum timestamptz_trunc_zone(PG_FUNCTION_ARGS); extern Datum array_fill_with_lower_bounds(PG_FUNCTION_ARGS); extern Datum i8tooid(PG_FUNCTION_ARGS); extern Datum oidtoi8(PG_FUNCTION_ARGS); extern Datum quote_nullable(PG_FUNCTION_ARGS); extern Datum suppress_redundant_updates_trigger(PG_FUNCTION_ARGS); extern Datum tideq(PG_FUNCTION_ARGS); extern Datum currtid_byreloid(PG_FUNCTION_ARGS); extern Datum currtid_byrelname(PG_FUNCTION_ARGS); extern Datum interval_justify_days(PG_FUNCTION_ARGS); extern Datum datetimetz_timestamptz(PG_FUNCTION_ARGS); extern Datum now(PG_FUNCTION_ARGS); extern Datum positionsel(PG_FUNCTION_ARGS); extern Datum positionjoinsel(PG_FUNCTION_ARGS); extern Datum contsel(PG_FUNCTION_ARGS); extern Datum contjoinsel(PG_FUNCTION_ARGS); extern Datum overlaps_timestamp(PG_FUNCTION_ARGS); extern Datum overlaps_time(PG_FUNCTION_ARGS); extern Datum timestamp_in(PG_FUNCTION_ARGS); extern Datum timestamp_out(PG_FUNCTION_ARGS); extern Datum timestamp_cmp(PG_FUNCTION_ARGS); extern Datum interval_cmp(PG_FUNCTION_ARGS); extern Datum timestamp_time(PG_FUNCTION_ARGS); extern Datum bpcharlen(PG_FUNCTION_ARGS); extern Datum interval_div(PG_FUNCTION_ARGS); extern Datum oidvectortypes(PG_FUNCTION_ARGS); extern Datum timetz_in(PG_FUNCTION_ARGS); extern Datum timetz_out(PG_FUNCTION_ARGS); extern Datum timetz_eq(PG_FUNCTION_ARGS); extern Datum timetz_ne(PG_FUNCTION_ARGS); extern Datum timetz_lt(PG_FUNCTION_ARGS); extern Datum timetz_le(PG_FUNCTION_ARGS); extern Datum timetz_ge(PG_FUNCTION_ARGS); extern Datum timetz_gt(PG_FUNCTION_ARGS); extern Datum timetz_cmp(PG_FUNCTION_ARGS); extern Datum network_hostmask(PG_FUNCTION_ARGS); extern Datum textregexeq_support(PG_FUNCTION_ARGS); extern Datum makeaclitem(PG_FUNCTION_ARGS); extern Datum time_interval(PG_FUNCTION_ARGS); extern Datum pg_lock_status(PG_FUNCTION_ARGS); extern Datum date_finite(PG_FUNCTION_ARGS); extern Datum textoctetlen(PG_FUNCTION_ARGS); extern Datum bpcharoctetlen(PG_FUNCTION_ARGS); extern Datum time_larger(PG_FUNCTION_ARGS); extern Datum time_smaller(PG_FUNCTION_ARGS); extern Datum timetz_larger(PG_FUNCTION_ARGS); extern Datum timetz_smaller(PG_FUNCTION_ARGS); extern Datum time_part(PG_FUNCTION_ARGS); extern Datum pg_get_constraintdef(PG_FUNCTION_ARGS); extern Datum timestamptz_timetz(PG_FUNCTION_ARGS); extern Datum timestamp_finite(PG_FUNCTION_ARGS); extern Datum interval_finite(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_start(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_client_addr(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_client_port(PG_FUNCTION_ARGS); extern Datum current_schema(PG_FUNCTION_ARGS); extern Datum current_schemas(PG_FUNCTION_ARGS); extern Datum textoverlay(PG_FUNCTION_ARGS); extern Datum textoverlay_no_len(PG_FUNCTION_ARGS); extern Datum line_parallel(PG_FUNCTION_ARGS); extern Datum line_perp(PG_FUNCTION_ARGS); extern Datum line_vertical(PG_FUNCTION_ARGS); extern Datum line_horizontal(PG_FUNCTION_ARGS); extern Datum circle_center(PG_FUNCTION_ARGS); extern Datum interval_time(PG_FUNCTION_ARGS); extern Datum points_box(PG_FUNCTION_ARGS); extern Datum box_add(PG_FUNCTION_ARGS); extern Datum box_sub(PG_FUNCTION_ARGS); extern Datum box_mul(PG_FUNCTION_ARGS); extern Datum box_div(PG_FUNCTION_ARGS); extern Datum cidr_out(PG_FUNCTION_ARGS); extern Datum poly_contain_pt(PG_FUNCTION_ARGS); extern Datum pt_contained_poly(PG_FUNCTION_ARGS); extern Datum path_isclosed(PG_FUNCTION_ARGS); extern Datum path_isopen(PG_FUNCTION_ARGS); extern Datum path_npoints(PG_FUNCTION_ARGS); extern Datum path_close(PG_FUNCTION_ARGS); extern Datum path_open(PG_FUNCTION_ARGS); extern Datum path_add(PG_FUNCTION_ARGS); extern Datum path_add_pt(PG_FUNCTION_ARGS); extern Datum path_sub_pt(PG_FUNCTION_ARGS); extern Datum path_mul_pt(PG_FUNCTION_ARGS); extern Datum path_div_pt(PG_FUNCTION_ARGS); extern Datum construct_point(PG_FUNCTION_ARGS); extern Datum point_add(PG_FUNCTION_ARGS); extern Datum point_sub(PG_FUNCTION_ARGS); extern Datum point_mul(PG_FUNCTION_ARGS); extern Datum point_div(PG_FUNCTION_ARGS); extern Datum poly_npoints(PG_FUNCTION_ARGS); extern Datum poly_box(PG_FUNCTION_ARGS); extern Datum poly_path(PG_FUNCTION_ARGS); extern Datum box_poly(PG_FUNCTION_ARGS); extern Datum path_poly(PG_FUNCTION_ARGS); extern Datum circle_in(PG_FUNCTION_ARGS); extern Datum circle_out(PG_FUNCTION_ARGS); extern Datum circle_same(PG_FUNCTION_ARGS); extern Datum circle_contain(PG_FUNCTION_ARGS); extern Datum circle_left(PG_FUNCTION_ARGS); extern Datum circle_overleft(PG_FUNCTION_ARGS); extern Datum circle_overright(PG_FUNCTION_ARGS); extern Datum circle_right(PG_FUNCTION_ARGS); extern Datum circle_contained(PG_FUNCTION_ARGS); extern Datum circle_overlap(PG_FUNCTION_ARGS); extern Datum circle_below(PG_FUNCTION_ARGS); extern Datum circle_above(PG_FUNCTION_ARGS); extern Datum circle_eq(PG_FUNCTION_ARGS); extern Datum circle_ne(PG_FUNCTION_ARGS); extern Datum circle_lt(PG_FUNCTION_ARGS); extern Datum circle_gt(PG_FUNCTION_ARGS); extern Datum circle_le(PG_FUNCTION_ARGS); extern Datum circle_ge(PG_FUNCTION_ARGS); extern Datum circle_area(PG_FUNCTION_ARGS); extern Datum circle_diameter(PG_FUNCTION_ARGS); extern Datum circle_radius(PG_FUNCTION_ARGS); extern Datum circle_distance(PG_FUNCTION_ARGS); extern Datum cr_circle(PG_FUNCTION_ARGS); extern Datum poly_circle(PG_FUNCTION_ARGS); extern Datum circle_poly(PG_FUNCTION_ARGS); extern Datum dist_pc(PG_FUNCTION_ARGS); extern Datum circle_contain_pt(PG_FUNCTION_ARGS); extern Datum pt_contained_circle(PG_FUNCTION_ARGS); extern Datum box_circle(PG_FUNCTION_ARGS); extern Datum circle_box(PG_FUNCTION_ARGS); extern Datum lseg_ne(PG_FUNCTION_ARGS); extern Datum lseg_lt(PG_FUNCTION_ARGS); extern Datum lseg_le(PG_FUNCTION_ARGS); extern Datum lseg_gt(PG_FUNCTION_ARGS); extern Datum lseg_ge(PG_FUNCTION_ARGS); extern Datum lseg_length(PG_FUNCTION_ARGS); extern Datum close_ls(PG_FUNCTION_ARGS); extern Datum close_lseg(PG_FUNCTION_ARGS); extern Datum line_in(PG_FUNCTION_ARGS); extern Datum line_out(PG_FUNCTION_ARGS); extern Datum line_eq(PG_FUNCTION_ARGS); extern Datum line_construct_pp(PG_FUNCTION_ARGS); extern Datum line_interpt(PG_FUNCTION_ARGS); extern Datum line_intersect(PG_FUNCTION_ARGS); extern Datum bit_in(PG_FUNCTION_ARGS); extern Datum bit_out(PG_FUNCTION_ARGS); extern Datum pg_get_ruledef(PG_FUNCTION_ARGS); extern Datum nextval_oid(PG_FUNCTION_ARGS); extern Datum currval_oid(PG_FUNCTION_ARGS); extern Datum setval_oid(PG_FUNCTION_ARGS); extern Datum varbit_in(PG_FUNCTION_ARGS); extern Datum varbit_out(PG_FUNCTION_ARGS); extern Datum biteq(PG_FUNCTION_ARGS); extern Datum bitne(PG_FUNCTION_ARGS); extern Datum bitge(PG_FUNCTION_ARGS); extern Datum bitgt(PG_FUNCTION_ARGS); extern Datum bitle(PG_FUNCTION_ARGS); extern Datum bitlt(PG_FUNCTION_ARGS); extern Datum bitcmp(PG_FUNCTION_ARGS); extern Datum PG_encoding_to_char(PG_FUNCTION_ARGS); extern Datum drandom(PG_FUNCTION_ARGS); extern Datum setseed(PG_FUNCTION_ARGS); extern Datum dasin(PG_FUNCTION_ARGS); extern Datum dacos(PG_FUNCTION_ARGS); extern Datum datan(PG_FUNCTION_ARGS); extern Datum datan2(PG_FUNCTION_ARGS); extern Datum dsin(PG_FUNCTION_ARGS); extern Datum dcos(PG_FUNCTION_ARGS); extern Datum dtan(PG_FUNCTION_ARGS); extern Datum dcot(PG_FUNCTION_ARGS); extern Datum degrees(PG_FUNCTION_ARGS); extern Datum radians(PG_FUNCTION_ARGS); extern Datum dpi(PG_FUNCTION_ARGS); extern Datum interval_mul(PG_FUNCTION_ARGS); extern Datum pg_typeof(PG_FUNCTION_ARGS); extern Datum ascii(PG_FUNCTION_ARGS); extern Datum chr(PG_FUNCTION_ARGS); extern Datum repeat(PG_FUNCTION_ARGS); extern Datum similar_escape(PG_FUNCTION_ARGS); extern Datum mul_d_interval(PG_FUNCTION_ARGS); extern Datum texticlike(PG_FUNCTION_ARGS); extern Datum texticnlike(PG_FUNCTION_ARGS); extern Datum nameiclike(PG_FUNCTION_ARGS); extern Datum nameicnlike(PG_FUNCTION_ARGS); extern Datum like_escape(PG_FUNCTION_ARGS); extern Datum oidgt(PG_FUNCTION_ARGS); extern Datum oidge(PG_FUNCTION_ARGS); extern Datum pg_get_viewdef_name(PG_FUNCTION_ARGS); extern Datum pg_get_viewdef(PG_FUNCTION_ARGS); extern Datum pg_get_userbyid(PG_FUNCTION_ARGS); extern Datum pg_get_indexdef(PG_FUNCTION_ARGS); extern Datum RI_FKey_check_ins(PG_FUNCTION_ARGS); extern Datum RI_FKey_check_upd(PG_FUNCTION_ARGS); extern Datum RI_FKey_cascade_del(PG_FUNCTION_ARGS); extern Datum RI_FKey_cascade_upd(PG_FUNCTION_ARGS); extern Datum RI_FKey_restrict_del(PG_FUNCTION_ARGS); extern Datum RI_FKey_restrict_upd(PG_FUNCTION_ARGS); extern Datum RI_FKey_setnull_del(PG_FUNCTION_ARGS); extern Datum RI_FKey_setnull_upd(PG_FUNCTION_ARGS); extern Datum RI_FKey_setdefault_del(PG_FUNCTION_ARGS); extern Datum RI_FKey_setdefault_upd(PG_FUNCTION_ARGS); extern Datum RI_FKey_noaction_del(PG_FUNCTION_ARGS); extern Datum RI_FKey_noaction_upd(PG_FUNCTION_ARGS); extern Datum pg_get_triggerdef(PG_FUNCTION_ARGS); extern Datum pg_get_serial_sequence(PG_FUNCTION_ARGS); extern Datum bit_and(PG_FUNCTION_ARGS); extern Datum bit_or(PG_FUNCTION_ARGS); extern Datum bitxor(PG_FUNCTION_ARGS); extern Datum bitnot(PG_FUNCTION_ARGS); extern Datum bitshiftleft(PG_FUNCTION_ARGS); extern Datum bitshiftright(PG_FUNCTION_ARGS); extern Datum bitcat(PG_FUNCTION_ARGS); extern Datum bitsubstr(PG_FUNCTION_ARGS); extern Datum bitlength(PG_FUNCTION_ARGS); extern Datum bitoctetlength(PG_FUNCTION_ARGS); extern Datum bitfromint4(PG_FUNCTION_ARGS); extern Datum bittoint4(PG_FUNCTION_ARGS); extern Datum bit(PG_FUNCTION_ARGS); extern Datum pg_get_keywords(PG_FUNCTION_ARGS); extern Datum varbit(PG_FUNCTION_ARGS); extern Datum time_hash(PG_FUNCTION_ARGS); extern Datum aclexplode(PG_FUNCTION_ARGS); extern Datum time_mi_time(PG_FUNCTION_ARGS); extern Datum boolle(PG_FUNCTION_ARGS); extern Datum boolge(PG_FUNCTION_ARGS); extern Datum btboolcmp(PG_FUNCTION_ARGS); extern Datum timetz_hash(PG_FUNCTION_ARGS); extern Datum interval_hash(PG_FUNCTION_ARGS); extern Datum bitposition(PG_FUNCTION_ARGS); extern Datum bitsubstr_no_len(PG_FUNCTION_ARGS); extern Datum numeric_in(PG_FUNCTION_ARGS); extern Datum numeric_out(PG_FUNCTION_ARGS); extern Datum numeric(PG_FUNCTION_ARGS); extern Datum numeric_abs(PG_FUNCTION_ARGS); extern Datum numeric_sign(PG_FUNCTION_ARGS); extern Datum numeric_round(PG_FUNCTION_ARGS); extern Datum numeric_trunc(PG_FUNCTION_ARGS); extern Datum numeric_ceil(PG_FUNCTION_ARGS); extern Datum numeric_floor(PG_FUNCTION_ARGS); extern Datum length_in_encoding(PG_FUNCTION_ARGS); extern Datum pg_convert_from(PG_FUNCTION_ARGS); extern Datum inet_to_cidr(PG_FUNCTION_ARGS); extern Datum pg_get_expr(PG_FUNCTION_ARGS); extern Datum pg_convert_to(PG_FUNCTION_ARGS); extern Datum numeric_eq(PG_FUNCTION_ARGS); extern Datum numeric_ne(PG_FUNCTION_ARGS); extern Datum numeric_gt(PG_FUNCTION_ARGS); extern Datum numeric_ge(PG_FUNCTION_ARGS); extern Datum numeric_lt(PG_FUNCTION_ARGS); extern Datum numeric_le(PG_FUNCTION_ARGS); extern Datum numeric_add(PG_FUNCTION_ARGS); extern Datum numeric_sub(PG_FUNCTION_ARGS); extern Datum numeric_mul(PG_FUNCTION_ARGS); extern Datum numeric_div(PG_FUNCTION_ARGS); extern Datum numeric_mod(PG_FUNCTION_ARGS); extern Datum numeric_sqrt(PG_FUNCTION_ARGS); extern Datum numeric_exp(PG_FUNCTION_ARGS); extern Datum numeric_ln(PG_FUNCTION_ARGS); extern Datum numeric_log(PG_FUNCTION_ARGS); extern Datum numeric_power(PG_FUNCTION_ARGS); extern Datum int4_numeric(PG_FUNCTION_ARGS); extern Datum float4_numeric(PG_FUNCTION_ARGS); extern Datum float8_numeric(PG_FUNCTION_ARGS); extern Datum numeric_int4(PG_FUNCTION_ARGS); extern Datum numeric_float4(PG_FUNCTION_ARGS); extern Datum numeric_float8(PG_FUNCTION_ARGS); extern Datum time_pl_interval(PG_FUNCTION_ARGS); extern Datum time_mi_interval(PG_FUNCTION_ARGS); extern Datum timetz_pl_interval(PG_FUNCTION_ARGS); extern Datum timetz_mi_interval(PG_FUNCTION_ARGS); extern Datum numeric_inc(PG_FUNCTION_ARGS); extern Datum setval3_oid(PG_FUNCTION_ARGS); extern Datum numeric_smaller(PG_FUNCTION_ARGS); extern Datum numeric_larger(PG_FUNCTION_ARGS); extern Datum interval_to_char(PG_FUNCTION_ARGS); extern Datum numeric_cmp(PG_FUNCTION_ARGS); extern Datum timestamptz_to_char(PG_FUNCTION_ARGS); extern Datum numeric_uminus(PG_FUNCTION_ARGS); extern Datum numeric_to_char(PG_FUNCTION_ARGS); extern Datum int4_to_char(PG_FUNCTION_ARGS); extern Datum int8_to_char(PG_FUNCTION_ARGS); extern Datum float4_to_char(PG_FUNCTION_ARGS); extern Datum float8_to_char(PG_FUNCTION_ARGS); extern Datum numeric_to_number(PG_FUNCTION_ARGS); extern Datum to_timestamp(PG_FUNCTION_ARGS); extern Datum numeric_int8(PG_FUNCTION_ARGS); extern Datum to_date(PG_FUNCTION_ARGS); extern Datum int8_numeric(PG_FUNCTION_ARGS); extern Datum int2_numeric(PG_FUNCTION_ARGS); extern Datum numeric_int2(PG_FUNCTION_ARGS); extern Datum oidin(PG_FUNCTION_ARGS); extern Datum oidout(PG_FUNCTION_ARGS); extern Datum pg_convert(PG_FUNCTION_ARGS); extern Datum iclikesel(PG_FUNCTION_ARGS); extern Datum icnlikesel(PG_FUNCTION_ARGS); extern Datum iclikejoinsel(PG_FUNCTION_ARGS); extern Datum icnlikejoinsel(PG_FUNCTION_ARGS); extern Datum regexeqsel(PG_FUNCTION_ARGS); extern Datum likesel(PG_FUNCTION_ARGS); extern Datum icregexeqsel(PG_FUNCTION_ARGS); extern Datum regexnesel(PG_FUNCTION_ARGS); extern Datum nlikesel(PG_FUNCTION_ARGS); extern Datum icregexnesel(PG_FUNCTION_ARGS); extern Datum regexeqjoinsel(PG_FUNCTION_ARGS); extern Datum likejoinsel(PG_FUNCTION_ARGS); extern Datum icregexeqjoinsel(PG_FUNCTION_ARGS); extern Datum regexnejoinsel(PG_FUNCTION_ARGS); extern Datum nlikejoinsel(PG_FUNCTION_ARGS); extern Datum icregexnejoinsel(PG_FUNCTION_ARGS); extern Datum float8_avg(PG_FUNCTION_ARGS); extern Datum float8_var_samp(PG_FUNCTION_ARGS); extern Datum float8_stddev_samp(PG_FUNCTION_ARGS); extern Datum numeric_accum(PG_FUNCTION_ARGS); extern Datum int2_accum(PG_FUNCTION_ARGS); extern Datum int4_accum(PG_FUNCTION_ARGS); extern Datum int8_accum(PG_FUNCTION_ARGS); extern Datum numeric_avg(PG_FUNCTION_ARGS); extern Datum numeric_var_samp(PG_FUNCTION_ARGS); extern Datum numeric_stddev_samp(PG_FUNCTION_ARGS); extern Datum int2_sum(PG_FUNCTION_ARGS); extern Datum int4_sum(PG_FUNCTION_ARGS); extern Datum int8_sum(PG_FUNCTION_ARGS); extern Datum interval_accum(PG_FUNCTION_ARGS); extern Datum interval_avg(PG_FUNCTION_ARGS); extern Datum to_ascii_default(PG_FUNCTION_ARGS); extern Datum to_ascii_enc(PG_FUNCTION_ARGS); extern Datum to_ascii_encname(PG_FUNCTION_ARGS); extern Datum int28eq(PG_FUNCTION_ARGS); extern Datum int28ne(PG_FUNCTION_ARGS); extern Datum int28lt(PG_FUNCTION_ARGS); extern Datum int28gt(PG_FUNCTION_ARGS); extern Datum int28le(PG_FUNCTION_ARGS); extern Datum int28ge(PG_FUNCTION_ARGS); extern Datum int82eq(PG_FUNCTION_ARGS); extern Datum int82ne(PG_FUNCTION_ARGS); extern Datum int82lt(PG_FUNCTION_ARGS); extern Datum int82gt(PG_FUNCTION_ARGS); extern Datum int82le(PG_FUNCTION_ARGS); extern Datum int82ge(PG_FUNCTION_ARGS); extern Datum int2and(PG_FUNCTION_ARGS); extern Datum int2or(PG_FUNCTION_ARGS); extern Datum int2xor(PG_FUNCTION_ARGS); extern Datum int2not(PG_FUNCTION_ARGS); extern Datum int2shl(PG_FUNCTION_ARGS); extern Datum int2shr(PG_FUNCTION_ARGS); extern Datum int4and(PG_FUNCTION_ARGS); extern Datum int4or(PG_FUNCTION_ARGS); extern Datum int4xor(PG_FUNCTION_ARGS); extern Datum int4not(PG_FUNCTION_ARGS); extern Datum int4shl(PG_FUNCTION_ARGS); extern Datum int4shr(PG_FUNCTION_ARGS); extern Datum int8and(PG_FUNCTION_ARGS); extern Datum int8or(PG_FUNCTION_ARGS); extern Datum int8xor(PG_FUNCTION_ARGS); extern Datum int8not(PG_FUNCTION_ARGS); extern Datum int8shl(PG_FUNCTION_ARGS); extern Datum int8shr(PG_FUNCTION_ARGS); extern Datum int8up(PG_FUNCTION_ARGS); extern Datum int2up(PG_FUNCTION_ARGS); extern Datum int4up(PG_FUNCTION_ARGS); extern Datum float4up(PG_FUNCTION_ARGS); extern Datum float8up(PG_FUNCTION_ARGS); extern Datum numeric_uplus(PG_FUNCTION_ARGS); extern Datum has_table_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_table_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_table_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_table_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_table_privilege_name(PG_FUNCTION_ARGS); extern Datum has_table_privilege_id(PG_FUNCTION_ARGS); extern Datum pg_stat_get_numscans(PG_FUNCTION_ARGS); extern Datum pg_stat_get_tuples_returned(PG_FUNCTION_ARGS); extern Datum pg_stat_get_tuples_fetched(PG_FUNCTION_ARGS); extern Datum pg_stat_get_tuples_inserted(PG_FUNCTION_ARGS); extern Datum pg_stat_get_tuples_updated(PG_FUNCTION_ARGS); extern Datum pg_stat_get_tuples_deleted(PG_FUNCTION_ARGS); extern Datum pg_stat_get_blocks_fetched(PG_FUNCTION_ARGS); extern Datum pg_stat_get_blocks_hit(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_idset(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_pid(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_dbid(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_userid(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_activity(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_numbackends(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_xact_commit(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_xact_rollback(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_blocks_fetched(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_blocks_hit(PG_FUNCTION_ARGS); extern Datum binary_encode(PG_FUNCTION_ARGS); extern Datum binary_decode(PG_FUNCTION_ARGS); extern Datum byteaeq(PG_FUNCTION_ARGS); extern Datum bytealt(PG_FUNCTION_ARGS); extern Datum byteale(PG_FUNCTION_ARGS); extern Datum byteagt(PG_FUNCTION_ARGS); extern Datum byteage(PG_FUNCTION_ARGS); extern Datum byteane(PG_FUNCTION_ARGS); extern Datum byteacmp(PG_FUNCTION_ARGS); extern Datum timestamp_scale(PG_FUNCTION_ARGS); extern Datum int2_avg_accum(PG_FUNCTION_ARGS); extern Datum int4_avg_accum(PG_FUNCTION_ARGS); extern Datum int8_avg(PG_FUNCTION_ARGS); extern Datum oidlarger(PG_FUNCTION_ARGS); extern Datum oidsmaller(PG_FUNCTION_ARGS); extern Datum timestamptz_scale(PG_FUNCTION_ARGS); extern Datum time_scale(PG_FUNCTION_ARGS); extern Datum timetz_scale(PG_FUNCTION_ARGS); extern Datum pg_stat_get_tuples_hot_updated(PG_FUNCTION_ARGS); extern Datum numeric_div_trunc(PG_FUNCTION_ARGS); extern Datum similar_to_escape_2(PG_FUNCTION_ARGS); extern Datum similar_to_escape_1(PG_FUNCTION_ARGS); extern Datum bytealike(PG_FUNCTION_ARGS); extern Datum byteanlike(PG_FUNCTION_ARGS); extern Datum like_escape_bytea(PG_FUNCTION_ARGS); extern Datum byteacat(PG_FUNCTION_ARGS); extern Datum bytea_substr(PG_FUNCTION_ARGS); extern Datum bytea_substr_no_len(PG_FUNCTION_ARGS); extern Datum byteapos(PG_FUNCTION_ARGS); extern Datum byteatrim(PG_FUNCTION_ARGS); extern Datum timestamptz_time(PG_FUNCTION_ARGS); extern Datum timestamp_trunc(PG_FUNCTION_ARGS); extern Datum timestamp_part(PG_FUNCTION_ARGS); extern Datum pg_stat_get_activity(PG_FUNCTION_ARGS); extern Datum jsonb_path_query_first_tz(PG_FUNCTION_ARGS); extern Datum date_timestamp(PG_FUNCTION_ARGS); extern Datum pg_backend_pid(PG_FUNCTION_ARGS); extern Datum timestamptz_timestamp(PG_FUNCTION_ARGS); extern Datum timestamp_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamp_date(PG_FUNCTION_ARGS); extern Datum jsonb_path_match_tz(PG_FUNCTION_ARGS); extern Datum timestamp_pl_interval(PG_FUNCTION_ARGS); extern Datum timestamp_mi_interval(PG_FUNCTION_ARGS); extern Datum pg_conf_load_time(PG_FUNCTION_ARGS); extern Datum timetz_zone(PG_FUNCTION_ARGS); extern Datum timetz_izone(PG_FUNCTION_ARGS); extern Datum timestamp_hash(PG_FUNCTION_ARGS); extern Datum timetz_time(PG_FUNCTION_ARGS); extern Datum time_timetz(PG_FUNCTION_ARGS); extern Datum timestamp_to_char(PG_FUNCTION_ARGS); extern Datum aggregate_dummy(PG_FUNCTION_ARGS); extern Datum timestamp_age(PG_FUNCTION_ARGS); extern Datum timestamp_zone(PG_FUNCTION_ARGS); extern Datum timestamp_izone(PG_FUNCTION_ARGS); extern Datum date_pl_interval(PG_FUNCTION_ARGS); extern Datum date_mi_interval(PG_FUNCTION_ARGS); extern Datum textregexsubstr(PG_FUNCTION_ARGS); extern Datum bitfromint8(PG_FUNCTION_ARGS); extern Datum bittoint8(PG_FUNCTION_ARGS); extern Datum show_config_by_name(PG_FUNCTION_ARGS); extern Datum set_config_by_name(PG_FUNCTION_ARGS); extern Datum pg_table_is_visible(PG_FUNCTION_ARGS); extern Datum pg_type_is_visible(PG_FUNCTION_ARGS); extern Datum pg_function_is_visible(PG_FUNCTION_ARGS); extern Datum pg_operator_is_visible(PG_FUNCTION_ARGS); extern Datum pg_opclass_is_visible(PG_FUNCTION_ARGS); extern Datum show_all_settings(PG_FUNCTION_ARGS); extern Datum replace_text(PG_FUNCTION_ARGS); extern Datum split_text(PG_FUNCTION_ARGS); extern Datum to_hex32(PG_FUNCTION_ARGS); extern Datum to_hex64(PG_FUNCTION_ARGS); extern Datum array_lower(PG_FUNCTION_ARGS); extern Datum array_upper(PG_FUNCTION_ARGS); extern Datum pg_conversion_is_visible(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_activity_start(PG_FUNCTION_ARGS); extern Datum pg_terminate_backend(PG_FUNCTION_ARGS); extern Datum pg_get_functiondef(PG_FUNCTION_ARGS); extern Datum text_pattern_lt(PG_FUNCTION_ARGS); extern Datum text_pattern_le(PG_FUNCTION_ARGS); extern Datum pg_get_function_arguments(PG_FUNCTION_ARGS); extern Datum text_pattern_ge(PG_FUNCTION_ARGS); extern Datum text_pattern_gt(PG_FUNCTION_ARGS); extern Datum pg_get_function_result(PG_FUNCTION_ARGS); extern Datum bttext_pattern_cmp(PG_FUNCTION_ARGS); extern Datum pg_database_size_name(PG_FUNCTION_ARGS); extern Datum width_bucket_numeric(PG_FUNCTION_ARGS); extern Datum pg_cancel_backend(PG_FUNCTION_ARGS); extern Datum pg_start_backup(PG_FUNCTION_ARGS); extern Datum pg_stop_backup(PG_FUNCTION_ARGS); extern Datum bpchar_pattern_lt(PG_FUNCTION_ARGS); extern Datum bpchar_pattern_le(PG_FUNCTION_ARGS); extern Datum array_length(PG_FUNCTION_ARGS); extern Datum bpchar_pattern_ge(PG_FUNCTION_ARGS); extern Datum bpchar_pattern_gt(PG_FUNCTION_ARGS); extern Datum gist_point_consistent(PG_FUNCTION_ARGS); extern Datum btbpchar_pattern_cmp(PG_FUNCTION_ARGS); extern Datum has_sequence_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_sequence_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_sequence_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_sequence_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_sequence_privilege_name(PG_FUNCTION_ARGS); extern Datum has_sequence_privilege_id(PG_FUNCTION_ARGS); extern Datum btint48cmp(PG_FUNCTION_ARGS); extern Datum btint84cmp(PG_FUNCTION_ARGS); extern Datum btint24cmp(PG_FUNCTION_ARGS); extern Datum btint42cmp(PG_FUNCTION_ARGS); extern Datum btint28cmp(PG_FUNCTION_ARGS); extern Datum btint82cmp(PG_FUNCTION_ARGS); extern Datum btfloat48cmp(PG_FUNCTION_ARGS); extern Datum btfloat84cmp(PG_FUNCTION_ARGS); extern Datum inet_client_addr(PG_FUNCTION_ARGS); extern Datum inet_client_port(PG_FUNCTION_ARGS); extern Datum inet_server_addr(PG_FUNCTION_ARGS); extern Datum inet_server_port(PG_FUNCTION_ARGS); extern Datum regprocedurein(PG_FUNCTION_ARGS); extern Datum regprocedureout(PG_FUNCTION_ARGS); extern Datum regoperin(PG_FUNCTION_ARGS); extern Datum regoperout(PG_FUNCTION_ARGS); extern Datum regoperatorin(PG_FUNCTION_ARGS); extern Datum regoperatorout(PG_FUNCTION_ARGS); extern Datum regclassin(PG_FUNCTION_ARGS); extern Datum regclassout(PG_FUNCTION_ARGS); extern Datum regtypein(PG_FUNCTION_ARGS); extern Datum regtypeout(PG_FUNCTION_ARGS); extern Datum pg_stat_clear_snapshot(PG_FUNCTION_ARGS); extern Datum pg_get_function_identity_arguments(PG_FUNCTION_ARGS); extern Datum hashtid(PG_FUNCTION_ARGS); extern Datum hashtidextended(PG_FUNCTION_ARGS); extern Datum fmgr_internal_validator(PG_FUNCTION_ARGS); extern Datum fmgr_c_validator(PG_FUNCTION_ARGS); extern Datum fmgr_sql_validator(PG_FUNCTION_ARGS); extern Datum has_database_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_database_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_database_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_database_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_database_privilege_name(PG_FUNCTION_ARGS); extern Datum has_database_privilege_id(PG_FUNCTION_ARGS); extern Datum has_function_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_function_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_function_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_function_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_function_privilege_name(PG_FUNCTION_ARGS); extern Datum has_function_privilege_id(PG_FUNCTION_ARGS); extern Datum has_language_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_language_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_language_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_language_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_language_privilege_name(PG_FUNCTION_ARGS); extern Datum has_language_privilege_id(PG_FUNCTION_ARGS); extern Datum has_schema_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_schema_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_schema_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_schema_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_schema_privilege_name(PG_FUNCTION_ARGS); extern Datum has_schema_privilege_id(PG_FUNCTION_ARGS); extern Datum pg_stat_reset(PG_FUNCTION_ARGS); extern Datum textregexreplace_noopt(PG_FUNCTION_ARGS); extern Datum textregexreplace(PG_FUNCTION_ARGS); extern Datum pg_total_relation_size(PG_FUNCTION_ARGS); extern Datum pg_size_pretty(PG_FUNCTION_ARGS); extern Datum pg_options_to_table(PG_FUNCTION_ARGS); extern Datum record_in(PG_FUNCTION_ARGS); extern Datum record_out(PG_FUNCTION_ARGS); extern Datum cstring_in(PG_FUNCTION_ARGS); extern Datum cstring_out(PG_FUNCTION_ARGS); extern Datum any_in(PG_FUNCTION_ARGS); extern Datum any_out(PG_FUNCTION_ARGS); extern Datum anyarray_in(PG_FUNCTION_ARGS); extern Datum anyarray_out(PG_FUNCTION_ARGS); extern Datum void_in(PG_FUNCTION_ARGS); extern Datum void_out(PG_FUNCTION_ARGS); extern Datum trigger_in(PG_FUNCTION_ARGS); extern Datum trigger_out(PG_FUNCTION_ARGS); extern Datum language_handler_in(PG_FUNCTION_ARGS); extern Datum language_handler_out(PG_FUNCTION_ARGS); extern Datum internal_in(PG_FUNCTION_ARGS); extern Datum internal_out(PG_FUNCTION_ARGS); extern Datum pg_stat_get_slru(PG_FUNCTION_ARGS); extern Datum pg_stat_reset_slru(PG_FUNCTION_ARGS); extern Datum dceil(PG_FUNCTION_ARGS); extern Datum dfloor(PG_FUNCTION_ARGS); extern Datum dsign(PG_FUNCTION_ARGS); extern Datum md5_text(PG_FUNCTION_ARGS); extern Datum anyelement_in(PG_FUNCTION_ARGS); extern Datum anyelement_out(PG_FUNCTION_ARGS); extern Datum postgresql_fdw_validator(PG_FUNCTION_ARGS); extern Datum pg_encoding_max_length_sql(PG_FUNCTION_ARGS); extern Datum md5_bytea(PG_FUNCTION_ARGS); extern Datum pg_tablespace_size_oid(PG_FUNCTION_ARGS); extern Datum pg_tablespace_size_name(PG_FUNCTION_ARGS); extern Datum pg_database_size_oid(PG_FUNCTION_ARGS); extern Datum array_unnest(PG_FUNCTION_ARGS); extern Datum pg_relation_size(PG_FUNCTION_ARGS); extern Datum array_agg_transfn(PG_FUNCTION_ARGS); extern Datum array_agg_finalfn(PG_FUNCTION_ARGS); extern Datum date_lt_timestamp(PG_FUNCTION_ARGS); extern Datum date_le_timestamp(PG_FUNCTION_ARGS); extern Datum date_eq_timestamp(PG_FUNCTION_ARGS); extern Datum date_gt_timestamp(PG_FUNCTION_ARGS); extern Datum date_ge_timestamp(PG_FUNCTION_ARGS); extern Datum date_ne_timestamp(PG_FUNCTION_ARGS); extern Datum date_cmp_timestamp(PG_FUNCTION_ARGS); extern Datum date_lt_timestamptz(PG_FUNCTION_ARGS); extern Datum date_le_timestamptz(PG_FUNCTION_ARGS); extern Datum date_eq_timestamptz(PG_FUNCTION_ARGS); extern Datum date_gt_timestamptz(PG_FUNCTION_ARGS); extern Datum date_ge_timestamptz(PG_FUNCTION_ARGS); extern Datum date_ne_timestamptz(PG_FUNCTION_ARGS); extern Datum date_cmp_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamp_lt_date(PG_FUNCTION_ARGS); extern Datum timestamp_le_date(PG_FUNCTION_ARGS); extern Datum timestamp_eq_date(PG_FUNCTION_ARGS); extern Datum timestamp_gt_date(PG_FUNCTION_ARGS); extern Datum timestamp_ge_date(PG_FUNCTION_ARGS); extern Datum timestamp_ne_date(PG_FUNCTION_ARGS); extern Datum timestamp_cmp_date(PG_FUNCTION_ARGS); extern Datum timestamptz_lt_date(PG_FUNCTION_ARGS); extern Datum timestamptz_le_date(PG_FUNCTION_ARGS); extern Datum timestamptz_eq_date(PG_FUNCTION_ARGS); extern Datum timestamptz_gt_date(PG_FUNCTION_ARGS); extern Datum timestamptz_ge_date(PG_FUNCTION_ARGS); extern Datum timestamptz_ne_date(PG_FUNCTION_ARGS); extern Datum timestamptz_cmp_date(PG_FUNCTION_ARGS); extern Datum has_tablespace_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_tablespace_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_tablespace_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_tablespace_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_tablespace_privilege_name(PG_FUNCTION_ARGS); extern Datum has_tablespace_privilege_id(PG_FUNCTION_ARGS); extern Datum shell_in(PG_FUNCTION_ARGS); extern Datum shell_out(PG_FUNCTION_ARGS); extern Datum array_recv(PG_FUNCTION_ARGS); extern Datum array_send(PG_FUNCTION_ARGS); extern Datum record_recv(PG_FUNCTION_ARGS); extern Datum record_send(PG_FUNCTION_ARGS); extern Datum int2recv(PG_FUNCTION_ARGS); extern Datum int2send(PG_FUNCTION_ARGS); extern Datum int4recv(PG_FUNCTION_ARGS); extern Datum int4send(PG_FUNCTION_ARGS); extern Datum int8recv(PG_FUNCTION_ARGS); extern Datum int8send(PG_FUNCTION_ARGS); extern Datum int2vectorrecv(PG_FUNCTION_ARGS); extern Datum int2vectorsend(PG_FUNCTION_ARGS); extern Datum bytearecv(PG_FUNCTION_ARGS); extern Datum byteasend(PG_FUNCTION_ARGS); extern Datum textrecv(PG_FUNCTION_ARGS); extern Datum textsend(PG_FUNCTION_ARGS); extern Datum unknownrecv(PG_FUNCTION_ARGS); extern Datum unknownsend(PG_FUNCTION_ARGS); extern Datum oidrecv(PG_FUNCTION_ARGS); extern Datum oidsend(PG_FUNCTION_ARGS); extern Datum oidvectorrecv(PG_FUNCTION_ARGS); extern Datum oidvectorsend(PG_FUNCTION_ARGS); extern Datum namerecv(PG_FUNCTION_ARGS); extern Datum namesend(PG_FUNCTION_ARGS); extern Datum float4recv(PG_FUNCTION_ARGS); extern Datum float4send(PG_FUNCTION_ARGS); extern Datum float8recv(PG_FUNCTION_ARGS); extern Datum float8send(PG_FUNCTION_ARGS); extern Datum point_recv(PG_FUNCTION_ARGS); extern Datum point_send(PG_FUNCTION_ARGS); extern Datum bpcharrecv(PG_FUNCTION_ARGS); extern Datum bpcharsend(PG_FUNCTION_ARGS); extern Datum varcharrecv(PG_FUNCTION_ARGS); extern Datum varcharsend(PG_FUNCTION_ARGS); extern Datum charrecv(PG_FUNCTION_ARGS); extern Datum charsend(PG_FUNCTION_ARGS); extern Datum boolrecv(PG_FUNCTION_ARGS); extern Datum boolsend(PG_FUNCTION_ARGS); extern Datum tidrecv(PG_FUNCTION_ARGS); extern Datum tidsend(PG_FUNCTION_ARGS); extern Datum xidrecv(PG_FUNCTION_ARGS); extern Datum xidsend(PG_FUNCTION_ARGS); extern Datum cidrecv(PG_FUNCTION_ARGS); extern Datum cidsend(PG_FUNCTION_ARGS); extern Datum regprocrecv(PG_FUNCTION_ARGS); extern Datum regprocsend(PG_FUNCTION_ARGS); extern Datum regprocedurerecv(PG_FUNCTION_ARGS); extern Datum regproceduresend(PG_FUNCTION_ARGS); extern Datum regoperrecv(PG_FUNCTION_ARGS); extern Datum regopersend(PG_FUNCTION_ARGS); extern Datum regoperatorrecv(PG_FUNCTION_ARGS); extern Datum regoperatorsend(PG_FUNCTION_ARGS); extern Datum regclassrecv(PG_FUNCTION_ARGS); extern Datum regclasssend(PG_FUNCTION_ARGS); extern Datum regtyperecv(PG_FUNCTION_ARGS); extern Datum regtypesend(PG_FUNCTION_ARGS); extern Datum bit_recv(PG_FUNCTION_ARGS); extern Datum bit_send(PG_FUNCTION_ARGS); extern Datum varbit_recv(PG_FUNCTION_ARGS); extern Datum varbit_send(PG_FUNCTION_ARGS); extern Datum numeric_recv(PG_FUNCTION_ARGS); extern Datum numeric_send(PG_FUNCTION_ARGS); extern Datum dsinh(PG_FUNCTION_ARGS); extern Datum dcosh(PG_FUNCTION_ARGS); extern Datum dtanh(PG_FUNCTION_ARGS); extern Datum dasinh(PG_FUNCTION_ARGS); extern Datum dacosh(PG_FUNCTION_ARGS); extern Datum datanh(PG_FUNCTION_ARGS); extern Datum date_recv(PG_FUNCTION_ARGS); extern Datum date_send(PG_FUNCTION_ARGS); extern Datum time_recv(PG_FUNCTION_ARGS); extern Datum time_send(PG_FUNCTION_ARGS); extern Datum timetz_recv(PG_FUNCTION_ARGS); extern Datum timetz_send(PG_FUNCTION_ARGS); extern Datum timestamp_recv(PG_FUNCTION_ARGS); extern Datum timestamp_send(PG_FUNCTION_ARGS); extern Datum timestamptz_recv(PG_FUNCTION_ARGS); extern Datum timestamptz_send(PG_FUNCTION_ARGS); extern Datum interval_recv(PG_FUNCTION_ARGS); extern Datum interval_send(PG_FUNCTION_ARGS); extern Datum lseg_recv(PG_FUNCTION_ARGS); extern Datum lseg_send(PG_FUNCTION_ARGS); extern Datum path_recv(PG_FUNCTION_ARGS); extern Datum path_send(PG_FUNCTION_ARGS); extern Datum box_recv(PG_FUNCTION_ARGS); extern Datum box_send(PG_FUNCTION_ARGS); extern Datum poly_recv(PG_FUNCTION_ARGS); extern Datum poly_send(PG_FUNCTION_ARGS); extern Datum line_recv(PG_FUNCTION_ARGS); extern Datum line_send(PG_FUNCTION_ARGS); extern Datum circle_recv(PG_FUNCTION_ARGS); extern Datum circle_send(PG_FUNCTION_ARGS); extern Datum cash_recv(PG_FUNCTION_ARGS); extern Datum cash_send(PG_FUNCTION_ARGS); extern Datum macaddr_recv(PG_FUNCTION_ARGS); extern Datum macaddr_send(PG_FUNCTION_ARGS); extern Datum inet_recv(PG_FUNCTION_ARGS); extern Datum inet_send(PG_FUNCTION_ARGS); extern Datum cidr_recv(PG_FUNCTION_ARGS); extern Datum cidr_send(PG_FUNCTION_ARGS); extern Datum cstring_recv(PG_FUNCTION_ARGS); extern Datum cstring_send(PG_FUNCTION_ARGS); extern Datum anyarray_recv(PG_FUNCTION_ARGS); extern Datum anyarray_send(PG_FUNCTION_ARGS); extern Datum pg_get_ruledef_ext(PG_FUNCTION_ARGS); extern Datum pg_get_viewdef_name_ext(PG_FUNCTION_ARGS); extern Datum pg_get_viewdef_ext(PG_FUNCTION_ARGS); extern Datum pg_get_indexdef_ext(PG_FUNCTION_ARGS); extern Datum pg_get_constraintdef_ext(PG_FUNCTION_ARGS); extern Datum pg_get_expr_ext(PG_FUNCTION_ARGS); extern Datum pg_prepared_statement(PG_FUNCTION_ARGS); extern Datum pg_cursor(PG_FUNCTION_ARGS); extern Datum float8_var_pop(PG_FUNCTION_ARGS); extern Datum float8_stddev_pop(PG_FUNCTION_ARGS); extern Datum numeric_var_pop(PG_FUNCTION_ARGS); extern Datum booland_statefunc(PG_FUNCTION_ARGS); extern Datum boolor_statefunc(PG_FUNCTION_ARGS); extern Datum timestamp_lt_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamp_le_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamp_eq_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamp_gt_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamp_ge_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamp_ne_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamp_cmp_timestamptz(PG_FUNCTION_ARGS); extern Datum timestamptz_lt_timestamp(PG_FUNCTION_ARGS); extern Datum timestamptz_le_timestamp(PG_FUNCTION_ARGS); extern Datum timestamptz_eq_timestamp(PG_FUNCTION_ARGS); extern Datum timestamptz_gt_timestamp(PG_FUNCTION_ARGS); extern Datum timestamptz_ge_timestamp(PG_FUNCTION_ARGS); extern Datum timestamptz_ne_timestamp(PG_FUNCTION_ARGS); extern Datum timestamptz_cmp_timestamp(PG_FUNCTION_ARGS); extern Datum pg_tablespace_databases(PG_FUNCTION_ARGS); extern Datum int4_bool(PG_FUNCTION_ARGS); extern Datum bool_int4(PG_FUNCTION_ARGS); extern Datum lastval(PG_FUNCTION_ARGS); extern Datum pg_postmaster_start_time(PG_FUNCTION_ARGS); extern Datum pg_blocking_pids(PG_FUNCTION_ARGS); extern Datum box_below(PG_FUNCTION_ARGS); extern Datum box_overbelow(PG_FUNCTION_ARGS); extern Datum box_overabove(PG_FUNCTION_ARGS); extern Datum box_above(PG_FUNCTION_ARGS); extern Datum poly_below(PG_FUNCTION_ARGS); extern Datum poly_overbelow(PG_FUNCTION_ARGS); extern Datum poly_overabove(PG_FUNCTION_ARGS); extern Datum poly_above(PG_FUNCTION_ARGS); extern Datum gist_box_consistent(PG_FUNCTION_ARGS); extern Datum jsonb_float8(PG_FUNCTION_ARGS); extern Datum gist_box_penalty(PG_FUNCTION_ARGS); extern Datum gist_box_picksplit(PG_FUNCTION_ARGS); extern Datum gist_box_union(PG_FUNCTION_ARGS); extern Datum gist_box_same(PG_FUNCTION_ARGS); extern Datum gist_poly_consistent(PG_FUNCTION_ARGS); extern Datum gist_poly_compress(PG_FUNCTION_ARGS); extern Datum circle_overbelow(PG_FUNCTION_ARGS); extern Datum circle_overabove(PG_FUNCTION_ARGS); extern Datum gist_circle_consistent(PG_FUNCTION_ARGS); extern Datum gist_circle_compress(PG_FUNCTION_ARGS); extern Datum numeric_stddev_pop(PG_FUNCTION_ARGS); extern Datum domain_in(PG_FUNCTION_ARGS); extern Datum domain_recv(PG_FUNCTION_ARGS); extern Datum pg_timezone_abbrevs(PG_FUNCTION_ARGS); extern Datum xmlexists(PG_FUNCTION_ARGS); extern Datum pg_reload_conf(PG_FUNCTION_ARGS); extern Datum pg_rotate_logfile_v2(PG_FUNCTION_ARGS); extern Datum pg_stat_file_1arg(PG_FUNCTION_ARGS); extern Datum pg_read_file_off_len(PG_FUNCTION_ARGS); extern Datum pg_ls_dir_1arg(PG_FUNCTION_ARGS); extern Datum pg_sleep(PG_FUNCTION_ARGS); extern Datum inetnot(PG_FUNCTION_ARGS); extern Datum inetand(PG_FUNCTION_ARGS); extern Datum inetor(PG_FUNCTION_ARGS); extern Datum inetpl(PG_FUNCTION_ARGS); extern Datum inetmi_int8(PG_FUNCTION_ARGS); extern Datum inetmi(PG_FUNCTION_ARGS); extern Datum statement_timestamp(PG_FUNCTION_ARGS); extern Datum clock_timestamp(PG_FUNCTION_ARGS); extern Datum gin_cmp_prefix(PG_FUNCTION_ARGS); extern Datum pg_has_role_name_name(PG_FUNCTION_ARGS); extern Datum pg_has_role_name_id(PG_FUNCTION_ARGS); extern Datum pg_has_role_id_name(PG_FUNCTION_ARGS); extern Datum pg_has_role_id_id(PG_FUNCTION_ARGS); extern Datum pg_has_role_name(PG_FUNCTION_ARGS); extern Datum pg_has_role_id(PG_FUNCTION_ARGS); extern Datum interval_justify_interval(PG_FUNCTION_ARGS); extern Datum pg_get_triggerdef_ext(PG_FUNCTION_ARGS); extern Datum dasind(PG_FUNCTION_ARGS); extern Datum dacosd(PG_FUNCTION_ARGS); extern Datum datand(PG_FUNCTION_ARGS); extern Datum datan2d(PG_FUNCTION_ARGS); extern Datum dsind(PG_FUNCTION_ARGS); extern Datum dcosd(PG_FUNCTION_ARGS); extern Datum dtand(PG_FUNCTION_ARGS); extern Datum dcotd(PG_FUNCTION_ARGS); extern Datum pg_stop_backup_v2(PG_FUNCTION_ARGS); extern Datum numeric_avg_serialize(PG_FUNCTION_ARGS); extern Datum numeric_avg_deserialize(PG_FUNCTION_ARGS); extern Datum ginarrayextract(PG_FUNCTION_ARGS); extern Datum ginarrayconsistent(PG_FUNCTION_ARGS); extern Datum int8_avg_accum(PG_FUNCTION_ARGS); extern Datum arrayoverlap(PG_FUNCTION_ARGS); extern Datum arraycontains(PG_FUNCTION_ARGS); extern Datum arraycontained(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_tuples_returned(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_tuples_fetched(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_tuples_inserted(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_tuples_updated(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_tuples_deleted(PG_FUNCTION_ARGS); extern Datum regexp_matches_no_flags(PG_FUNCTION_ARGS); extern Datum regexp_matches(PG_FUNCTION_ARGS); extern Datum regexp_split_to_table_no_flags(PG_FUNCTION_ARGS); extern Datum regexp_split_to_table(PG_FUNCTION_ARGS); extern Datum regexp_split_to_array_no_flags(PG_FUNCTION_ARGS); extern Datum regexp_split_to_array(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_timed_checkpoints(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_requested_checkpoints(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_buf_written_checkpoints(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_buf_written_clean(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_maxwritten_clean(PG_FUNCTION_ARGS); extern Datum ginqueryarrayextract(PG_FUNCTION_ARGS); extern Datum pg_stat_get_buf_written_backend(PG_FUNCTION_ARGS); extern Datum anynonarray_in(PG_FUNCTION_ARGS); extern Datum anynonarray_out(PG_FUNCTION_ARGS); extern Datum pg_stat_get_last_vacuum_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_last_autovacuum_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_last_analyze_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_last_autoanalyze_time(PG_FUNCTION_ARGS); extern Datum int8_avg_combine(PG_FUNCTION_ARGS); extern Datum int8_avg_serialize(PG_FUNCTION_ARGS); extern Datum int8_avg_deserialize(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_wait_event_type(PG_FUNCTION_ARGS); extern Datum tidgt(PG_FUNCTION_ARGS); extern Datum tidlt(PG_FUNCTION_ARGS); extern Datum tidge(PG_FUNCTION_ARGS); extern Datum tidle(PG_FUNCTION_ARGS); extern Datum bttidcmp(PG_FUNCTION_ARGS); extern Datum tidlarger(PG_FUNCTION_ARGS); extern Datum tidsmaller(PG_FUNCTION_ARGS); extern Datum int8inc_any(PG_FUNCTION_ARGS); extern Datum int8inc_float8_float8(PG_FUNCTION_ARGS); extern Datum float8_regr_accum(PG_FUNCTION_ARGS); extern Datum float8_regr_sxx(PG_FUNCTION_ARGS); extern Datum float8_regr_syy(PG_FUNCTION_ARGS); extern Datum float8_regr_sxy(PG_FUNCTION_ARGS); extern Datum float8_regr_avgx(PG_FUNCTION_ARGS); extern Datum float8_regr_avgy(PG_FUNCTION_ARGS); extern Datum float8_regr_r2(PG_FUNCTION_ARGS); extern Datum float8_regr_slope(PG_FUNCTION_ARGS); extern Datum float8_regr_intercept(PG_FUNCTION_ARGS); extern Datum float8_covar_pop(PG_FUNCTION_ARGS); extern Datum float8_covar_samp(PG_FUNCTION_ARGS); extern Datum float8_corr(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_blk_read_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_blk_write_time(PG_FUNCTION_ARGS); extern Datum pg_switch_wal(PG_FUNCTION_ARGS); extern Datum pg_current_wal_lsn(PG_FUNCTION_ARGS); extern Datum pg_walfile_name_offset(PG_FUNCTION_ARGS); extern Datum pg_walfile_name(PG_FUNCTION_ARGS); extern Datum pg_current_wal_insert_lsn(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_wait_event(PG_FUNCTION_ARGS); extern Datum pg_my_temp_schema(PG_FUNCTION_ARGS); extern Datum pg_is_other_temp_schema(PG_FUNCTION_ARGS); extern Datum pg_timezone_names(PG_FUNCTION_ARGS); extern Datum pg_stat_get_backend_xact_start(PG_FUNCTION_ARGS); extern Datum numeric_avg_accum(PG_FUNCTION_ARGS); extern Datum pg_stat_get_buf_alloc(PG_FUNCTION_ARGS); extern Datum pg_stat_get_live_tuples(PG_FUNCTION_ARGS); extern Datum pg_stat_get_dead_tuples(PG_FUNCTION_ARGS); extern Datum pg_advisory_lock_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_lock_shared_int8(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_lock_int8(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_lock_shared_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_unlock_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_unlock_shared_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_lock_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_lock_shared_int4(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_lock_int4(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_lock_shared_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_unlock_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_unlock_shared_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_unlock_all(PG_FUNCTION_ARGS); extern Datum xml_in(PG_FUNCTION_ARGS); extern Datum xml_out(PG_FUNCTION_ARGS); extern Datum xmlcomment(PG_FUNCTION_ARGS); extern Datum texttoxml(PG_FUNCTION_ARGS); extern Datum xmlvalidate(PG_FUNCTION_ARGS); extern Datum xml_recv(PG_FUNCTION_ARGS); extern Datum xml_send(PG_FUNCTION_ARGS); extern Datum xmlconcat2(PG_FUNCTION_ARGS); extern Datum varbittypmodin(PG_FUNCTION_ARGS); extern Datum intervaltypmodin(PG_FUNCTION_ARGS); extern Datum intervaltypmodout(PG_FUNCTION_ARGS); extern Datum timestamptypmodin(PG_FUNCTION_ARGS); extern Datum timestamptypmodout(PG_FUNCTION_ARGS); extern Datum timestamptztypmodin(PG_FUNCTION_ARGS); extern Datum timestamptztypmodout(PG_FUNCTION_ARGS); extern Datum timetypmodin(PG_FUNCTION_ARGS); extern Datum timetypmodout(PG_FUNCTION_ARGS); extern Datum timetztypmodin(PG_FUNCTION_ARGS); extern Datum timetztypmodout(PG_FUNCTION_ARGS); extern Datum bpchartypmodin(PG_FUNCTION_ARGS); extern Datum bpchartypmodout(PG_FUNCTION_ARGS); extern Datum varchartypmodin(PG_FUNCTION_ARGS); extern Datum varchartypmodout(PG_FUNCTION_ARGS); extern Datum numerictypmodin(PG_FUNCTION_ARGS); extern Datum numerictypmodout(PG_FUNCTION_ARGS); extern Datum bittypmodin(PG_FUNCTION_ARGS); extern Datum bittypmodout(PG_FUNCTION_ARGS); extern Datum varbittypmodout(PG_FUNCTION_ARGS); extern Datum xmltotext(PG_FUNCTION_ARGS); extern Datum table_to_xml(PG_FUNCTION_ARGS); extern Datum query_to_xml(PG_FUNCTION_ARGS); extern Datum cursor_to_xml(PG_FUNCTION_ARGS); extern Datum table_to_xmlschema(PG_FUNCTION_ARGS); extern Datum query_to_xmlschema(PG_FUNCTION_ARGS); extern Datum cursor_to_xmlschema(PG_FUNCTION_ARGS); extern Datum table_to_xml_and_xmlschema(PG_FUNCTION_ARGS); extern Datum query_to_xml_and_xmlschema(PG_FUNCTION_ARGS); extern Datum xpath(PG_FUNCTION_ARGS); extern Datum schema_to_xml(PG_FUNCTION_ARGS); extern Datum schema_to_xmlschema(PG_FUNCTION_ARGS); extern Datum schema_to_xml_and_xmlschema(PG_FUNCTION_ARGS); extern Datum database_to_xml(PG_FUNCTION_ARGS); extern Datum database_to_xmlschema(PG_FUNCTION_ARGS); extern Datum database_to_xml_and_xmlschema(PG_FUNCTION_ARGS); extern Datum pg_snapshot_in(PG_FUNCTION_ARGS); extern Datum pg_snapshot_out(PG_FUNCTION_ARGS); extern Datum pg_snapshot_recv(PG_FUNCTION_ARGS); extern Datum pg_snapshot_send(PG_FUNCTION_ARGS); extern Datum pg_current_xact_id(PG_FUNCTION_ARGS); extern Datum pg_current_snapshot(PG_FUNCTION_ARGS); extern Datum pg_snapshot_xmin(PG_FUNCTION_ARGS); extern Datum pg_snapshot_xmax(PG_FUNCTION_ARGS); extern Datum pg_snapshot_xip(PG_FUNCTION_ARGS); extern Datum pg_visible_in_snapshot(PG_FUNCTION_ARGS); extern Datum uuid_in(PG_FUNCTION_ARGS); extern Datum uuid_out(PG_FUNCTION_ARGS); extern Datum uuid_lt(PG_FUNCTION_ARGS); extern Datum uuid_le(PG_FUNCTION_ARGS); extern Datum uuid_eq(PG_FUNCTION_ARGS); extern Datum uuid_ge(PG_FUNCTION_ARGS); extern Datum uuid_gt(PG_FUNCTION_ARGS); extern Datum uuid_ne(PG_FUNCTION_ARGS); extern Datum uuid_cmp(PG_FUNCTION_ARGS); extern Datum uuid_recv(PG_FUNCTION_ARGS); extern Datum uuid_send(PG_FUNCTION_ARGS); extern Datum uuid_hash(PG_FUNCTION_ARGS); extern Datum booltext(PG_FUNCTION_ARGS); extern Datum pg_stat_get_function_calls(PG_FUNCTION_ARGS); extern Datum pg_stat_get_function_total_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_function_self_time(PG_FUNCTION_ARGS); extern Datum record_eq(PG_FUNCTION_ARGS); extern Datum record_ne(PG_FUNCTION_ARGS); extern Datum record_lt(PG_FUNCTION_ARGS); extern Datum record_gt(PG_FUNCTION_ARGS); extern Datum record_le(PG_FUNCTION_ARGS); extern Datum record_ge(PG_FUNCTION_ARGS); extern Datum btrecordcmp(PG_FUNCTION_ARGS); extern Datum pg_table_size(PG_FUNCTION_ARGS); extern Datum pg_indexes_size(PG_FUNCTION_ARGS); extern Datum pg_relation_filenode(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_name(PG_FUNCTION_ARGS); extern Datum has_foreign_data_wrapper_privilege_id(PG_FUNCTION_ARGS); extern Datum has_server_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_server_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_server_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_server_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_server_privilege_name(PG_FUNCTION_ARGS); extern Datum has_server_privilege_id(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_name_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_name_attnum(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_id_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_id_attnum(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_name_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_name_attnum(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_id_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_id_attnum(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_name_attnum(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_column_privilege_id_attnum(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_name(PG_FUNCTION_ARGS); extern Datum has_any_column_privilege_id(PG_FUNCTION_ARGS); extern Datum bitoverlay(PG_FUNCTION_ARGS); extern Datum bitoverlay_no_len(PG_FUNCTION_ARGS); extern Datum bitgetbit(PG_FUNCTION_ARGS); extern Datum bitsetbit(PG_FUNCTION_ARGS); extern Datum pg_relation_filepath(PG_FUNCTION_ARGS); extern Datum pg_listening_channels(PG_FUNCTION_ARGS); extern Datum pg_notify(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_numscans(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_returned(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_fetched(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_inserted(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_updated(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_deleted(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_tuples_hot_updated(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_blocks_fetched(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_blocks_hit(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_function_calls(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_function_total_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_xact_function_self_time(PG_FUNCTION_ARGS); extern Datum xpath_exists(PG_FUNCTION_ARGS); extern Datum xml_is_well_formed(PG_FUNCTION_ARGS); extern Datum xml_is_well_formed_document(PG_FUNCTION_ARGS); extern Datum xml_is_well_formed_content(PG_FUNCTION_ARGS); extern Datum pg_stat_get_vacuum_count(PG_FUNCTION_ARGS); extern Datum pg_stat_get_autovacuum_count(PG_FUNCTION_ARGS); extern Datum pg_stat_get_analyze_count(PG_FUNCTION_ARGS); extern Datum pg_stat_get_autoanalyze_count(PG_FUNCTION_ARGS); extern Datum text_concat(PG_FUNCTION_ARGS); extern Datum text_concat_ws(PG_FUNCTION_ARGS); extern Datum text_left(PG_FUNCTION_ARGS); extern Datum text_right(PG_FUNCTION_ARGS); extern Datum text_reverse(PG_FUNCTION_ARGS); extern Datum pg_stat_get_buf_fsync_backend(PG_FUNCTION_ARGS); extern Datum gist_point_distance(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_tablespace(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_lock(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_snapshot(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_bufferpin(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_startup_deadlock(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_all(PG_FUNCTION_ARGS); extern Datum pg_wal_replay_pause(PG_FUNCTION_ARGS); extern Datum pg_wal_replay_resume(PG_FUNCTION_ARGS); extern Datum pg_is_wal_replay_paused(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_stat_reset_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_bgwriter_stat_reset_time(PG_FUNCTION_ARGS); extern Datum ginarrayextract_2args(PG_FUNCTION_ARGS); extern Datum gin_extract_tsvector_2args(PG_FUNCTION_ARGS); extern Datum pg_sequence_parameters(PG_FUNCTION_ARGS); extern Datum pg_available_extensions(PG_FUNCTION_ARGS); extern Datum pg_available_extension_versions(PG_FUNCTION_ARGS); extern Datum pg_extension_update_paths(PG_FUNCTION_ARGS); extern Datum pg_extension_config_dump(PG_FUNCTION_ARGS); extern Datum gin_extract_tsquery_5args(PG_FUNCTION_ARGS); extern Datum gin_tsquery_consistent_6args(PG_FUNCTION_ARGS); extern Datum pg_advisory_xact_lock_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_xact_lock_shared_int8(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_xact_lock_int8(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_xact_lock_shared_int8(PG_FUNCTION_ARGS); extern Datum pg_advisory_xact_lock_int4(PG_FUNCTION_ARGS); extern Datum pg_advisory_xact_lock_shared_int4(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_xact_lock_int4(PG_FUNCTION_ARGS); extern Datum pg_try_advisory_xact_lock_shared_int4(PG_FUNCTION_ARGS); extern Datum varchar_support(PG_FUNCTION_ARGS); extern Datum pg_create_restore_point(PG_FUNCTION_ARGS); extern Datum pg_stat_get_wal_senders(PG_FUNCTION_ARGS); extern Datum window_row_number(PG_FUNCTION_ARGS); extern Datum window_rank(PG_FUNCTION_ARGS); extern Datum window_dense_rank(PG_FUNCTION_ARGS); extern Datum window_percent_rank(PG_FUNCTION_ARGS); extern Datum window_cume_dist(PG_FUNCTION_ARGS); extern Datum window_ntile(PG_FUNCTION_ARGS); extern Datum window_lag(PG_FUNCTION_ARGS); extern Datum window_lag_with_offset(PG_FUNCTION_ARGS); extern Datum window_lag_with_offset_and_default(PG_FUNCTION_ARGS); extern Datum window_lead(PG_FUNCTION_ARGS); extern Datum window_lead_with_offset(PG_FUNCTION_ARGS); extern Datum window_lead_with_offset_and_default(PG_FUNCTION_ARGS); extern Datum window_first_value(PG_FUNCTION_ARGS); extern Datum window_last_value(PG_FUNCTION_ARGS); extern Datum window_nth_value(PG_FUNCTION_ARGS); extern Datum fdw_handler_in(PG_FUNCTION_ARGS); extern Datum fdw_handler_out(PG_FUNCTION_ARGS); extern Datum void_recv(PG_FUNCTION_ARGS); extern Datum void_send(PG_FUNCTION_ARGS); extern Datum btint2sortsupport(PG_FUNCTION_ARGS); extern Datum btint4sortsupport(PG_FUNCTION_ARGS); extern Datum btint8sortsupport(PG_FUNCTION_ARGS); extern Datum btfloat4sortsupport(PG_FUNCTION_ARGS); extern Datum btfloat8sortsupport(PG_FUNCTION_ARGS); extern Datum btoidsortsupport(PG_FUNCTION_ARGS); extern Datum btnamesortsupport(PG_FUNCTION_ARGS); extern Datum date_sortsupport(PG_FUNCTION_ARGS); extern Datum timestamp_sortsupport(PG_FUNCTION_ARGS); extern Datum has_type_privilege_name_name(PG_FUNCTION_ARGS); extern Datum has_type_privilege_name_id(PG_FUNCTION_ARGS); extern Datum has_type_privilege_id_name(PG_FUNCTION_ARGS); extern Datum has_type_privilege_id_id(PG_FUNCTION_ARGS); extern Datum has_type_privilege_name(PG_FUNCTION_ARGS); extern Datum has_type_privilege_id(PG_FUNCTION_ARGS); extern Datum macaddr_not(PG_FUNCTION_ARGS); extern Datum macaddr_and(PG_FUNCTION_ARGS); extern Datum macaddr_or(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_temp_files(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_temp_bytes(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_deadlocks(PG_FUNCTION_ARGS); extern Datum array_to_json(PG_FUNCTION_ARGS); extern Datum array_to_json_pretty(PG_FUNCTION_ARGS); extern Datum row_to_json(PG_FUNCTION_ARGS); extern Datum row_to_json_pretty(PG_FUNCTION_ARGS); extern Datum numeric_support(PG_FUNCTION_ARGS); extern Datum varbit_support(PG_FUNCTION_ARGS); extern Datum pg_get_viewdef_wrap(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpoint_write_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_checkpoint_sync_time(PG_FUNCTION_ARGS); extern Datum pg_collation_for(PG_FUNCTION_ARGS); extern Datum pg_trigger_depth(PG_FUNCTION_ARGS); extern Datum pg_wal_lsn_diff(PG_FUNCTION_ARGS); extern Datum pg_size_pretty_numeric(PG_FUNCTION_ARGS); extern Datum array_remove(PG_FUNCTION_ARGS); extern Datum array_replace(PG_FUNCTION_ARGS); extern Datum rangesel(PG_FUNCTION_ARGS); extern Datum be_lo_lseek64(PG_FUNCTION_ARGS); extern Datum be_lo_tell64(PG_FUNCTION_ARGS); extern Datum be_lo_truncate64(PG_FUNCTION_ARGS); extern Datum json_agg_transfn(PG_FUNCTION_ARGS); extern Datum json_agg_finalfn(PG_FUNCTION_ARGS); extern Datum to_json(PG_FUNCTION_ARGS); extern Datum pg_stat_get_mod_since_analyze(PG_FUNCTION_ARGS); extern Datum numeric_sum(PG_FUNCTION_ARGS); extern Datum array_cardinality(PG_FUNCTION_ARGS); extern Datum json_object_agg_transfn(PG_FUNCTION_ARGS); extern Datum record_image_eq(PG_FUNCTION_ARGS); extern Datum record_image_ne(PG_FUNCTION_ARGS); extern Datum record_image_lt(PG_FUNCTION_ARGS); extern Datum record_image_gt(PG_FUNCTION_ARGS); extern Datum record_image_le(PG_FUNCTION_ARGS); extern Datum record_image_ge(PG_FUNCTION_ARGS); extern Datum btrecordimagecmp(PG_FUNCTION_ARGS); extern Datum pg_stat_get_archiver(PG_FUNCTION_ARGS); extern Datum json_object_agg_finalfn(PG_FUNCTION_ARGS); extern Datum json_build_array(PG_FUNCTION_ARGS); extern Datum json_build_array_noargs(PG_FUNCTION_ARGS); extern Datum json_build_object(PG_FUNCTION_ARGS); extern Datum json_build_object_noargs(PG_FUNCTION_ARGS); extern Datum json_object(PG_FUNCTION_ARGS); extern Datum json_object_two_arg(PG_FUNCTION_ARGS); extern Datum json_to_record(PG_FUNCTION_ARGS); extern Datum json_to_recordset(PG_FUNCTION_ARGS); extern Datum jsonb_array_length(PG_FUNCTION_ARGS); extern Datum jsonb_each(PG_FUNCTION_ARGS); extern Datum jsonb_populate_record(PG_FUNCTION_ARGS); extern Datum jsonb_typeof(PG_FUNCTION_ARGS); extern Datum jsonb_object_field_text(PG_FUNCTION_ARGS); extern Datum jsonb_array_element(PG_FUNCTION_ARGS); extern Datum jsonb_array_element_text(PG_FUNCTION_ARGS); extern Datum jsonb_extract_path(PG_FUNCTION_ARGS); extern Datum width_bucket_array(PG_FUNCTION_ARGS); extern Datum jsonb_array_elements(PG_FUNCTION_ARGS); extern Datum pg_lsn_in(PG_FUNCTION_ARGS); extern Datum pg_lsn_out(PG_FUNCTION_ARGS); extern Datum pg_lsn_lt(PG_FUNCTION_ARGS); extern Datum pg_lsn_le(PG_FUNCTION_ARGS); extern Datum pg_lsn_eq(PG_FUNCTION_ARGS); extern Datum pg_lsn_ge(PG_FUNCTION_ARGS); extern Datum pg_lsn_gt(PG_FUNCTION_ARGS); extern Datum pg_lsn_ne(PG_FUNCTION_ARGS); extern Datum pg_lsn_mi(PG_FUNCTION_ARGS); extern Datum pg_lsn_recv(PG_FUNCTION_ARGS); extern Datum pg_lsn_send(PG_FUNCTION_ARGS); extern Datum pg_lsn_cmp(PG_FUNCTION_ARGS); extern Datum pg_lsn_hash(PG_FUNCTION_ARGS); extern Datum bttextsortsupport(PG_FUNCTION_ARGS); extern Datum generate_series_step_numeric(PG_FUNCTION_ARGS); extern Datum generate_series_numeric(PG_FUNCTION_ARGS); extern Datum json_strip_nulls(PG_FUNCTION_ARGS); extern Datum jsonb_strip_nulls(PG_FUNCTION_ARGS); extern Datum jsonb_object(PG_FUNCTION_ARGS); extern Datum jsonb_object_two_arg(PG_FUNCTION_ARGS); extern Datum jsonb_agg_transfn(PG_FUNCTION_ARGS); extern Datum jsonb_agg_finalfn(PG_FUNCTION_ARGS); extern Datum jsonb_object_agg_transfn(PG_FUNCTION_ARGS); extern Datum jsonb_object_agg_finalfn(PG_FUNCTION_ARGS); extern Datum jsonb_build_array(PG_FUNCTION_ARGS); extern Datum jsonb_build_array_noargs(PG_FUNCTION_ARGS); extern Datum jsonb_build_object(PG_FUNCTION_ARGS); extern Datum jsonb_build_object_noargs(PG_FUNCTION_ARGS); extern Datum dist_ppoly(PG_FUNCTION_ARGS); extern Datum array_position(PG_FUNCTION_ARGS); extern Datum array_position_start(PG_FUNCTION_ARGS); extern Datum array_positions(PG_FUNCTION_ARGS); extern Datum gist_circle_distance(PG_FUNCTION_ARGS); extern Datum numeric_scale(PG_FUNCTION_ARGS); extern Datum gist_point_fetch(PG_FUNCTION_ARGS); extern Datum numeric_sortsupport(PG_FUNCTION_ARGS); extern Datum gist_poly_distance(PG_FUNCTION_ARGS); extern Datum dist_cpoint(PG_FUNCTION_ARGS); extern Datum dist_polyp(PG_FUNCTION_ARGS); extern Datum pg_read_file_v2(PG_FUNCTION_ARGS); extern Datum show_config_by_name_missing_ok(PG_FUNCTION_ARGS); extern Datum pg_read_binary_file(PG_FUNCTION_ARGS); extern Datum pg_notification_queue_usage(PG_FUNCTION_ARGS); extern Datum pg_ls_dir(PG_FUNCTION_ARGS); extern Datum row_security_active(PG_FUNCTION_ARGS); extern Datum row_security_active_name(PG_FUNCTION_ARGS); extern Datum uuid_sortsupport(PG_FUNCTION_ARGS); extern Datum jsonb_concat(PG_FUNCTION_ARGS); extern Datum jsonb_delete(PG_FUNCTION_ARGS); extern Datum jsonb_delete_idx(PG_FUNCTION_ARGS); extern Datum jsonb_delete_path(PG_FUNCTION_ARGS); extern Datum jsonb_set(PG_FUNCTION_ARGS); extern Datum jsonb_pretty(PG_FUNCTION_ARGS); extern Datum pg_stat_file(PG_FUNCTION_ARGS); extern Datum xidneq(PG_FUNCTION_ARGS); extern Datum tsm_handler_in(PG_FUNCTION_ARGS); extern Datum tsm_handler_out(PG_FUNCTION_ARGS); extern Datum tsm_bernoulli_handler(PG_FUNCTION_ARGS); extern Datum tsm_system_handler(PG_FUNCTION_ARGS); extern Datum pg_stat_get_wal_receiver(PG_FUNCTION_ARGS); extern Datum pg_stat_get_progress_info(PG_FUNCTION_ARGS); extern Datum tsvector_filter(PG_FUNCTION_ARGS); extern Datum tsvector_setweight_by_filter(PG_FUNCTION_ARGS); extern Datum tsvector_delete_str(PG_FUNCTION_ARGS); extern Datum tsvector_unnest(PG_FUNCTION_ARGS); extern Datum tsvector_delete_arr(PG_FUNCTION_ARGS); extern Datum int4_avg_combine(PG_FUNCTION_ARGS); extern Datum interval_combine(PG_FUNCTION_ARGS); extern Datum tsvector_to_array(PG_FUNCTION_ARGS); extern Datum array_to_tsvector(PG_FUNCTION_ARGS); extern Datum bpchar_sortsupport(PG_FUNCTION_ARGS); extern Datum show_all_file_settings(PG_FUNCTION_ARGS); extern Datum pg_current_wal_flush_lsn(PG_FUNCTION_ARGS); extern Datum bytea_sortsupport(PG_FUNCTION_ARGS); extern Datum bttext_pattern_sortsupport(PG_FUNCTION_ARGS); extern Datum btbpchar_pattern_sortsupport(PG_FUNCTION_ARGS); extern Datum pg_size_bytes(PG_FUNCTION_ARGS); extern Datum numeric_serialize(PG_FUNCTION_ARGS); extern Datum numeric_deserialize(PG_FUNCTION_ARGS); extern Datum numeric_avg_combine(PG_FUNCTION_ARGS); extern Datum numeric_poly_combine(PG_FUNCTION_ARGS); extern Datum numeric_poly_serialize(PG_FUNCTION_ARGS); extern Datum numeric_poly_deserialize(PG_FUNCTION_ARGS); extern Datum numeric_combine(PG_FUNCTION_ARGS); extern Datum float8_regr_combine(PG_FUNCTION_ARGS); extern Datum jsonb_delete_array(PG_FUNCTION_ARGS); extern Datum cash_mul_int8(PG_FUNCTION_ARGS); extern Datum cash_div_int8(PG_FUNCTION_ARGS); extern Datum pg_current_xact_id_if_assigned(PG_FUNCTION_ARGS); extern Datum pg_get_partkeydef(PG_FUNCTION_ARGS); extern Datum pg_ls_logdir(PG_FUNCTION_ARGS); extern Datum pg_ls_waldir(PG_FUNCTION_ARGS); extern Datum pg_ndistinct_in(PG_FUNCTION_ARGS); extern Datum pg_ndistinct_out(PG_FUNCTION_ARGS); extern Datum pg_ndistinct_recv(PG_FUNCTION_ARGS); extern Datum pg_ndistinct_send(PG_FUNCTION_ARGS); extern Datum macaddr_sortsupport(PG_FUNCTION_ARGS); extern Datum pg_xact_status(PG_FUNCTION_ARGS); extern Datum pg_safe_snapshot_blocking_pids(PG_FUNCTION_ARGS); extern Datum pg_isolation_test_session_is_blocked(PG_FUNCTION_ARGS); extern Datum pg_identify_object_as_address(PG_FUNCTION_ARGS); extern Datum brin_minmax_opcinfo(PG_FUNCTION_ARGS); extern Datum brin_minmax_add_value(PG_FUNCTION_ARGS); extern Datum brin_minmax_consistent(PG_FUNCTION_ARGS); extern Datum brin_minmax_union(PG_FUNCTION_ARGS); extern Datum int8_avg_accum_inv(PG_FUNCTION_ARGS); extern Datum numeric_poly_sum(PG_FUNCTION_ARGS); extern Datum numeric_poly_avg(PG_FUNCTION_ARGS); extern Datum numeric_poly_var_pop(PG_FUNCTION_ARGS); extern Datum numeric_poly_var_samp(PG_FUNCTION_ARGS); extern Datum numeric_poly_stddev_pop(PG_FUNCTION_ARGS); extern Datum numeric_poly_stddev_samp(PG_FUNCTION_ARGS); extern Datum regexp_match_no_flags(PG_FUNCTION_ARGS); extern Datum regexp_match(PG_FUNCTION_ARGS); extern Datum int8_mul_cash(PG_FUNCTION_ARGS); extern Datum pg_config(PG_FUNCTION_ARGS); extern Datum pg_hba_file_rules(PG_FUNCTION_ARGS); extern Datum pg_statistics_obj_is_visible(PG_FUNCTION_ARGS); extern Datum pg_dependencies_in(PG_FUNCTION_ARGS); extern Datum pg_dependencies_out(PG_FUNCTION_ARGS); extern Datum pg_dependencies_recv(PG_FUNCTION_ARGS); extern Datum pg_dependencies_send(PG_FUNCTION_ARGS); extern Datum pg_get_partition_constraintdef(PG_FUNCTION_ARGS); extern Datum time_hash_extended(PG_FUNCTION_ARGS); extern Datum timetz_hash_extended(PG_FUNCTION_ARGS); extern Datum timestamp_hash_extended(PG_FUNCTION_ARGS); extern Datum uuid_hash_extended(PG_FUNCTION_ARGS); extern Datum pg_lsn_hash_extended(PG_FUNCTION_ARGS); extern Datum hashenumextended(PG_FUNCTION_ARGS); extern Datum pg_get_statisticsobjdef(PG_FUNCTION_ARGS); extern Datum jsonb_hash_extended(PG_FUNCTION_ARGS); extern Datum hash_range_extended(PG_FUNCTION_ARGS); extern Datum interval_hash_extended(PG_FUNCTION_ARGS); extern Datum sha224_bytea(PG_FUNCTION_ARGS); extern Datum sha256_bytea(PG_FUNCTION_ARGS); extern Datum sha384_bytea(PG_FUNCTION_ARGS); extern Datum sha512_bytea(PG_FUNCTION_ARGS); extern Datum pg_partition_tree(PG_FUNCTION_ARGS); extern Datum pg_partition_root(PG_FUNCTION_ARGS); extern Datum pg_partition_ancestors(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_checksum_failures(PG_FUNCTION_ARGS); extern Datum pg_stats_ext_mcvlist_items(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_checksum_last_failure(PG_FUNCTION_ARGS); extern Datum gen_random_uuid(PG_FUNCTION_ARGS); extern Datum gtsvector_options(PG_FUNCTION_ARGS); extern Datum pg_promote(PG_FUNCTION_ARGS); extern Datum prefixsel(PG_FUNCTION_ARGS); extern Datum prefixjoinsel(PG_FUNCTION_ARGS); extern Datum pg_control_system(PG_FUNCTION_ARGS); extern Datum pg_control_checkpoint(PG_FUNCTION_ARGS); extern Datum pg_control_recovery(PG_FUNCTION_ARGS); extern Datum pg_control_init(PG_FUNCTION_ARGS); extern Datum pg_import_system_collations(PG_FUNCTION_ARGS); extern Datum macaddr8_recv(PG_FUNCTION_ARGS); extern Datum macaddr8_send(PG_FUNCTION_ARGS); extern Datum pg_collation_actual_version(PG_FUNCTION_ARGS); extern Datum jsonb_numeric(PG_FUNCTION_ARGS); extern Datum jsonb_int2(PG_FUNCTION_ARGS); extern Datum jsonb_int4(PG_FUNCTION_ARGS); extern Datum jsonb_int8(PG_FUNCTION_ARGS); extern Datum jsonb_float4(PG_FUNCTION_ARGS); extern Datum pg_filenode_relation(PG_FUNCTION_ARGS); extern Datum be_lo_from_bytea(PG_FUNCTION_ARGS); extern Datum be_lo_get(PG_FUNCTION_ARGS); extern Datum be_lo_get_fragment(PG_FUNCTION_ARGS); extern Datum be_lo_put(PG_FUNCTION_ARGS); extern Datum make_timestamp(PG_FUNCTION_ARGS); extern Datum make_timestamptz(PG_FUNCTION_ARGS); extern Datum make_timestamptz_at_timezone(PG_FUNCTION_ARGS); extern Datum make_interval(PG_FUNCTION_ARGS); extern Datum jsonb_array_elements_text(PG_FUNCTION_ARGS); extern Datum spg_range_quad_config(PG_FUNCTION_ARGS); extern Datum spg_range_quad_choose(PG_FUNCTION_ARGS); extern Datum spg_range_quad_picksplit(PG_FUNCTION_ARGS); extern Datum spg_range_quad_inner_consistent(PG_FUNCTION_ARGS); extern Datum spg_range_quad_leaf_consistent(PG_FUNCTION_ARGS); extern Datum jsonb_populate_recordset(PG_FUNCTION_ARGS); extern Datum to_regoperator(PG_FUNCTION_ARGS); extern Datum jsonb_object_field(PG_FUNCTION_ARGS); extern Datum to_regprocedure(PG_FUNCTION_ARGS); extern Datum gin_compare_jsonb(PG_FUNCTION_ARGS); extern Datum gin_extract_jsonb(PG_FUNCTION_ARGS); extern Datum gin_extract_jsonb_query(PG_FUNCTION_ARGS); extern Datum gin_consistent_jsonb(PG_FUNCTION_ARGS); extern Datum gin_extract_jsonb_path(PG_FUNCTION_ARGS); extern Datum gin_extract_jsonb_query_path(PG_FUNCTION_ARGS); extern Datum gin_consistent_jsonb_path(PG_FUNCTION_ARGS); extern Datum gin_triconsistent_jsonb(PG_FUNCTION_ARGS); extern Datum gin_triconsistent_jsonb_path(PG_FUNCTION_ARGS); extern Datum jsonb_to_record(PG_FUNCTION_ARGS); extern Datum jsonb_to_recordset(PG_FUNCTION_ARGS); extern Datum to_regoper(PG_FUNCTION_ARGS); extern Datum to_regtype(PG_FUNCTION_ARGS); extern Datum to_regproc(PG_FUNCTION_ARGS); extern Datum to_regclass(PG_FUNCTION_ARGS); extern Datum bool_accum(PG_FUNCTION_ARGS); extern Datum bool_accum_inv(PG_FUNCTION_ARGS); extern Datum bool_alltrue(PG_FUNCTION_ARGS); extern Datum bool_anytrue(PG_FUNCTION_ARGS); extern Datum anyenum_in(PG_FUNCTION_ARGS); extern Datum anyenum_out(PG_FUNCTION_ARGS); extern Datum enum_in(PG_FUNCTION_ARGS); extern Datum enum_out(PG_FUNCTION_ARGS); extern Datum enum_eq(PG_FUNCTION_ARGS); extern Datum enum_ne(PG_FUNCTION_ARGS); extern Datum enum_lt(PG_FUNCTION_ARGS); extern Datum enum_gt(PG_FUNCTION_ARGS); extern Datum enum_le(PG_FUNCTION_ARGS); extern Datum enum_ge(PG_FUNCTION_ARGS); extern Datum enum_cmp(PG_FUNCTION_ARGS); extern Datum hashenum(PG_FUNCTION_ARGS); extern Datum enum_smaller(PG_FUNCTION_ARGS); extern Datum enum_larger(PG_FUNCTION_ARGS); extern Datum enum_first(PG_FUNCTION_ARGS); extern Datum enum_last(PG_FUNCTION_ARGS); extern Datum enum_range_bounds(PG_FUNCTION_ARGS); extern Datum enum_range_all(PG_FUNCTION_ARGS); extern Datum enum_recv(PG_FUNCTION_ARGS); extern Datum enum_send(PG_FUNCTION_ARGS); extern Datum string_agg_transfn(PG_FUNCTION_ARGS); extern Datum string_agg_finalfn(PG_FUNCTION_ARGS); extern Datum pg_describe_object(PG_FUNCTION_ARGS); extern Datum text_format(PG_FUNCTION_ARGS); extern Datum text_format_nv(PG_FUNCTION_ARGS); extern Datum bytea_string_agg_transfn(PG_FUNCTION_ARGS); extern Datum bytea_string_agg_finalfn(PG_FUNCTION_ARGS); extern Datum int8dec(PG_FUNCTION_ARGS); extern Datum int8dec_any(PG_FUNCTION_ARGS); extern Datum numeric_accum_inv(PG_FUNCTION_ARGS); extern Datum interval_accum_inv(PG_FUNCTION_ARGS); extern Datum network_overlap(PG_FUNCTION_ARGS); extern Datum inet_gist_consistent(PG_FUNCTION_ARGS); extern Datum inet_gist_union(PG_FUNCTION_ARGS); extern Datum inet_gist_compress(PG_FUNCTION_ARGS); extern Datum jsonb_bool(PG_FUNCTION_ARGS); extern Datum inet_gist_penalty(PG_FUNCTION_ARGS); extern Datum inet_gist_picksplit(PG_FUNCTION_ARGS); extern Datum inet_gist_same(PG_FUNCTION_ARGS); extern Datum networksel(PG_FUNCTION_ARGS); extern Datum networkjoinsel(PG_FUNCTION_ARGS); extern Datum network_larger(PG_FUNCTION_ARGS); extern Datum network_smaller(PG_FUNCTION_ARGS); extern Datum pg_event_trigger_dropped_objects(PG_FUNCTION_ARGS); extern Datum int2_accum_inv(PG_FUNCTION_ARGS); extern Datum int4_accum_inv(PG_FUNCTION_ARGS); extern Datum int8_accum_inv(PG_FUNCTION_ARGS); extern Datum int2_avg_accum_inv(PG_FUNCTION_ARGS); extern Datum int4_avg_accum_inv(PG_FUNCTION_ARGS); extern Datum int2int4_sum(PG_FUNCTION_ARGS); extern Datum inet_gist_fetch(PG_FUNCTION_ARGS); extern Datum pg_logical_emit_message_text(PG_FUNCTION_ARGS); extern Datum pg_logical_emit_message_bytea(PG_FUNCTION_ARGS); extern Datum jsonb_insert(PG_FUNCTION_ARGS); extern Datum pg_xact_commit_timestamp(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_pg_type_oid(PG_FUNCTION_ARGS); extern Datum pg_last_committed_xact(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_array_pg_type_oid(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_toast_pg_type_oid(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_heap_pg_class_oid(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_index_pg_class_oid(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_toast_pg_class_oid(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_pg_enum_oid(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_next_pg_authid_oid(PG_FUNCTION_ARGS); extern Datum binary_upgrade_create_empty_extension(PG_FUNCTION_ARGS); extern Datum event_trigger_in(PG_FUNCTION_ARGS); extern Datum event_trigger_out(PG_FUNCTION_ARGS); extern Datum tsvectorin(PG_FUNCTION_ARGS); extern Datum tsvectorout(PG_FUNCTION_ARGS); extern Datum tsqueryin(PG_FUNCTION_ARGS); extern Datum tsqueryout(PG_FUNCTION_ARGS); extern Datum tsvector_lt(PG_FUNCTION_ARGS); extern Datum tsvector_le(PG_FUNCTION_ARGS); extern Datum tsvector_eq(PG_FUNCTION_ARGS); extern Datum tsvector_ne(PG_FUNCTION_ARGS); extern Datum tsvector_ge(PG_FUNCTION_ARGS); extern Datum tsvector_gt(PG_FUNCTION_ARGS); extern Datum tsvector_cmp(PG_FUNCTION_ARGS); extern Datum tsvector_strip(PG_FUNCTION_ARGS); extern Datum tsvector_setweight(PG_FUNCTION_ARGS); extern Datum tsvector_concat(PG_FUNCTION_ARGS); extern Datum ts_match_vq(PG_FUNCTION_ARGS); extern Datum ts_match_qv(PG_FUNCTION_ARGS); extern Datum tsvectorsend(PG_FUNCTION_ARGS); extern Datum tsvectorrecv(PG_FUNCTION_ARGS); extern Datum tsquerysend(PG_FUNCTION_ARGS); extern Datum tsqueryrecv(PG_FUNCTION_ARGS); extern Datum gtsvectorin(PG_FUNCTION_ARGS); extern Datum gtsvectorout(PG_FUNCTION_ARGS); extern Datum gtsvector_compress(PG_FUNCTION_ARGS); extern Datum gtsvector_decompress(PG_FUNCTION_ARGS); extern Datum gtsvector_picksplit(PG_FUNCTION_ARGS); extern Datum gtsvector_union(PG_FUNCTION_ARGS); extern Datum gtsvector_same(PG_FUNCTION_ARGS); extern Datum gtsvector_penalty(PG_FUNCTION_ARGS); extern Datum gtsvector_consistent(PG_FUNCTION_ARGS); extern Datum gin_extract_tsvector(PG_FUNCTION_ARGS); extern Datum gin_extract_tsquery(PG_FUNCTION_ARGS); extern Datum gin_tsquery_consistent(PG_FUNCTION_ARGS); extern Datum tsquery_lt(PG_FUNCTION_ARGS); extern Datum tsquery_le(PG_FUNCTION_ARGS); extern Datum tsquery_eq(PG_FUNCTION_ARGS); extern Datum tsquery_ne(PG_FUNCTION_ARGS); extern Datum tsquery_ge(PG_FUNCTION_ARGS); extern Datum tsquery_gt(PG_FUNCTION_ARGS); extern Datum tsquery_cmp(PG_FUNCTION_ARGS); extern Datum tsquery_and(PG_FUNCTION_ARGS); extern Datum tsquery_or(PG_FUNCTION_ARGS); extern Datum tsquery_not(PG_FUNCTION_ARGS); extern Datum tsquery_numnode(PG_FUNCTION_ARGS); extern Datum tsquerytree(PG_FUNCTION_ARGS); extern Datum tsquery_rewrite(PG_FUNCTION_ARGS); extern Datum tsquery_rewrite_query(PG_FUNCTION_ARGS); extern Datum tsmatchsel(PG_FUNCTION_ARGS); extern Datum tsmatchjoinsel(PG_FUNCTION_ARGS); extern Datum ts_typanalyze(PG_FUNCTION_ARGS); extern Datum ts_stat1(PG_FUNCTION_ARGS); extern Datum ts_stat2(PG_FUNCTION_ARGS); extern Datum tsq_mcontains(PG_FUNCTION_ARGS); extern Datum tsq_mcontained(PG_FUNCTION_ARGS); extern Datum gtsquery_compress(PG_FUNCTION_ARGS); extern Datum text_starts_with(PG_FUNCTION_ARGS); extern Datum gtsquery_picksplit(PG_FUNCTION_ARGS); extern Datum gtsquery_union(PG_FUNCTION_ARGS); extern Datum gtsquery_same(PG_FUNCTION_ARGS); extern Datum gtsquery_penalty(PG_FUNCTION_ARGS); extern Datum gtsquery_consistent(PG_FUNCTION_ARGS); extern Datum ts_rank_wttf(PG_FUNCTION_ARGS); extern Datum ts_rank_wtt(PG_FUNCTION_ARGS); extern Datum ts_rank_ttf(PG_FUNCTION_ARGS); extern Datum ts_rank_tt(PG_FUNCTION_ARGS); extern Datum ts_rankcd_wttf(PG_FUNCTION_ARGS); extern Datum ts_rankcd_wtt(PG_FUNCTION_ARGS); extern Datum ts_rankcd_ttf(PG_FUNCTION_ARGS); extern Datum ts_rankcd_tt(PG_FUNCTION_ARGS); extern Datum tsvector_length(PG_FUNCTION_ARGS); extern Datum ts_token_type_byid(PG_FUNCTION_ARGS); extern Datum ts_token_type_byname(PG_FUNCTION_ARGS); extern Datum ts_parse_byid(PG_FUNCTION_ARGS); extern Datum ts_parse_byname(PG_FUNCTION_ARGS); extern Datum prsd_start(PG_FUNCTION_ARGS); extern Datum prsd_nexttoken(PG_FUNCTION_ARGS); extern Datum prsd_end(PG_FUNCTION_ARGS); extern Datum prsd_headline(PG_FUNCTION_ARGS); extern Datum prsd_lextype(PG_FUNCTION_ARGS); extern Datum ts_lexize(PG_FUNCTION_ARGS); extern Datum gin_cmp_tslexeme(PG_FUNCTION_ARGS); extern Datum dsimple_init(PG_FUNCTION_ARGS); extern Datum dsimple_lexize(PG_FUNCTION_ARGS); extern Datum dsynonym_init(PG_FUNCTION_ARGS); extern Datum dsynonym_lexize(PG_FUNCTION_ARGS); extern Datum dispell_init(PG_FUNCTION_ARGS); extern Datum dispell_lexize(PG_FUNCTION_ARGS); extern Datum regconfigin(PG_FUNCTION_ARGS); extern Datum regconfigout(PG_FUNCTION_ARGS); extern Datum regconfigrecv(PG_FUNCTION_ARGS); extern Datum regconfigsend(PG_FUNCTION_ARGS); extern Datum thesaurus_init(PG_FUNCTION_ARGS); extern Datum thesaurus_lexize(PG_FUNCTION_ARGS); extern Datum ts_headline_byid_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_byid(PG_FUNCTION_ARGS); extern Datum to_tsvector_byid(PG_FUNCTION_ARGS); extern Datum to_tsquery_byid(PG_FUNCTION_ARGS); extern Datum plainto_tsquery_byid(PG_FUNCTION_ARGS); extern Datum to_tsvector(PG_FUNCTION_ARGS); extern Datum to_tsquery(PG_FUNCTION_ARGS); extern Datum plainto_tsquery(PG_FUNCTION_ARGS); extern Datum tsvector_update_trigger_byid(PG_FUNCTION_ARGS); extern Datum tsvector_update_trigger_bycolumn(PG_FUNCTION_ARGS); extern Datum ts_headline_opt(PG_FUNCTION_ARGS); extern Datum ts_headline(PG_FUNCTION_ARGS); extern Datum pg_ts_parser_is_visible(PG_FUNCTION_ARGS); extern Datum pg_ts_dict_is_visible(PG_FUNCTION_ARGS); extern Datum pg_ts_config_is_visible(PG_FUNCTION_ARGS); extern Datum get_current_ts_config(PG_FUNCTION_ARGS); extern Datum ts_match_tt(PG_FUNCTION_ARGS); extern Datum ts_match_tq(PG_FUNCTION_ARGS); extern Datum pg_ts_template_is_visible(PG_FUNCTION_ARGS); extern Datum regdictionaryin(PG_FUNCTION_ARGS); extern Datum regdictionaryout(PG_FUNCTION_ARGS); extern Datum regdictionaryrecv(PG_FUNCTION_ARGS); extern Datum regdictionarysend(PG_FUNCTION_ARGS); extern Datum pg_stat_reset_shared(PG_FUNCTION_ARGS); extern Datum pg_stat_reset_single_table_counters(PG_FUNCTION_ARGS); extern Datum pg_stat_reset_single_function_counters(PG_FUNCTION_ARGS); extern Datum pg_tablespace_location(PG_FUNCTION_ARGS); extern Datum pg_create_physical_replication_slot(PG_FUNCTION_ARGS); extern Datum pg_drop_replication_slot(PG_FUNCTION_ARGS); extern Datum pg_get_replication_slots(PG_FUNCTION_ARGS); extern Datum pg_logical_slot_get_changes(PG_FUNCTION_ARGS); extern Datum pg_logical_slot_get_binary_changes(PG_FUNCTION_ARGS); extern Datum pg_logical_slot_peek_changes(PG_FUNCTION_ARGS); extern Datum pg_logical_slot_peek_binary_changes(PG_FUNCTION_ARGS); extern Datum pg_create_logical_replication_slot(PG_FUNCTION_ARGS); extern Datum to_jsonb(PG_FUNCTION_ARGS); extern Datum pg_stat_get_snapshot_timestamp(PG_FUNCTION_ARGS); extern Datum gin_clean_pending_list(PG_FUNCTION_ARGS); extern Datum gtsvector_consistent_oldsig(PG_FUNCTION_ARGS); extern Datum gin_extract_tsquery_oldsig(PG_FUNCTION_ARGS); extern Datum gin_tsquery_consistent_oldsig(PG_FUNCTION_ARGS); extern Datum gtsquery_consistent_oldsig(PG_FUNCTION_ARGS); extern Datum inet_spg_config(PG_FUNCTION_ARGS); extern Datum inet_spg_choose(PG_FUNCTION_ARGS); extern Datum inet_spg_picksplit(PG_FUNCTION_ARGS); extern Datum inet_spg_inner_consistent(PG_FUNCTION_ARGS); extern Datum inet_spg_leaf_consistent(PG_FUNCTION_ARGS); extern Datum pg_current_logfile(PG_FUNCTION_ARGS); extern Datum pg_current_logfile_1arg(PG_FUNCTION_ARGS); extern Datum jsonb_send(PG_FUNCTION_ARGS); extern Datum jsonb_out(PG_FUNCTION_ARGS); extern Datum jsonb_recv(PG_FUNCTION_ARGS); extern Datum jsonb_in(PG_FUNCTION_ARGS); extern Datum pg_get_function_arg_default(PG_FUNCTION_ARGS); extern Datum pg_export_snapshot(PG_FUNCTION_ARGS); extern Datum pg_is_in_recovery(PG_FUNCTION_ARGS); extern Datum int4_cash(PG_FUNCTION_ARGS); extern Datum int8_cash(PG_FUNCTION_ARGS); extern Datum pg_is_in_backup(PG_FUNCTION_ARGS); extern Datum pg_backup_start_time(PG_FUNCTION_ARGS); extern Datum pg_collation_is_visible(PG_FUNCTION_ARGS); extern Datum array_typanalyze(PG_FUNCTION_ARGS); extern Datum arraycontsel(PG_FUNCTION_ARGS); extern Datum arraycontjoinsel(PG_FUNCTION_ARGS); extern Datum pg_get_multixact_members(PG_FUNCTION_ARGS); extern Datum pg_last_wal_receive_lsn(PG_FUNCTION_ARGS); extern Datum pg_last_wal_replay_lsn(PG_FUNCTION_ARGS); extern Datum cash_div_cash(PG_FUNCTION_ARGS); extern Datum cash_numeric(PG_FUNCTION_ARGS); extern Datum numeric_cash(PG_FUNCTION_ARGS); extern Datum pg_read_file_all(PG_FUNCTION_ARGS); extern Datum pg_read_binary_file_off_len(PG_FUNCTION_ARGS); extern Datum pg_read_binary_file_all(PG_FUNCTION_ARGS); extern Datum pg_opfamily_is_visible(PG_FUNCTION_ARGS); extern Datum pg_last_xact_replay_timestamp(PG_FUNCTION_ARGS); extern Datum anyrange_in(PG_FUNCTION_ARGS); extern Datum anyrange_out(PG_FUNCTION_ARGS); extern Datum range_in(PG_FUNCTION_ARGS); extern Datum range_out(PG_FUNCTION_ARGS); extern Datum range_recv(PG_FUNCTION_ARGS); extern Datum range_send(PG_FUNCTION_ARGS); extern Datum pg_identify_object(PG_FUNCTION_ARGS); extern Datum range_constructor2(PG_FUNCTION_ARGS); extern Datum range_constructor3(PG_FUNCTION_ARGS); extern Datum pg_relation_is_updatable(PG_FUNCTION_ARGS); extern Datum pg_column_is_updatable(PG_FUNCTION_ARGS); extern Datum make_date(PG_FUNCTION_ARGS); extern Datum make_time(PG_FUNCTION_ARGS); extern Datum range_lower(PG_FUNCTION_ARGS); extern Datum range_upper(PG_FUNCTION_ARGS); extern Datum range_empty(PG_FUNCTION_ARGS); extern Datum range_lower_inc(PG_FUNCTION_ARGS); extern Datum range_upper_inc(PG_FUNCTION_ARGS); extern Datum range_lower_inf(PG_FUNCTION_ARGS); extern Datum range_upper_inf(PG_FUNCTION_ARGS); extern Datum range_eq(PG_FUNCTION_ARGS); extern Datum range_ne(PG_FUNCTION_ARGS); extern Datum range_overlaps(PG_FUNCTION_ARGS); extern Datum range_contains_elem(PG_FUNCTION_ARGS); extern Datum range_contains(PG_FUNCTION_ARGS); extern Datum elem_contained_by_range(PG_FUNCTION_ARGS); extern Datum range_contained_by(PG_FUNCTION_ARGS); extern Datum range_adjacent(PG_FUNCTION_ARGS); extern Datum range_before(PG_FUNCTION_ARGS); extern Datum range_after(PG_FUNCTION_ARGS); extern Datum range_overleft(PG_FUNCTION_ARGS); extern Datum range_overright(PG_FUNCTION_ARGS); extern Datum range_union(PG_FUNCTION_ARGS); extern Datum range_intersect(PG_FUNCTION_ARGS); extern Datum range_minus(PG_FUNCTION_ARGS); extern Datum range_cmp(PG_FUNCTION_ARGS); extern Datum range_lt(PG_FUNCTION_ARGS); extern Datum range_le(PG_FUNCTION_ARGS); extern Datum range_ge(PG_FUNCTION_ARGS); extern Datum range_gt(PG_FUNCTION_ARGS); extern Datum range_gist_consistent(PG_FUNCTION_ARGS); extern Datum range_gist_union(PG_FUNCTION_ARGS); extern Datum pg_replication_slot_advance(PG_FUNCTION_ARGS); extern Datum range_gist_penalty(PG_FUNCTION_ARGS); extern Datum range_gist_picksplit(PG_FUNCTION_ARGS); extern Datum range_gist_same(PG_FUNCTION_ARGS); extern Datum hash_range(PG_FUNCTION_ARGS); extern Datum int4range_canonical(PG_FUNCTION_ARGS); extern Datum daterange_canonical(PG_FUNCTION_ARGS); extern Datum range_typanalyze(PG_FUNCTION_ARGS); extern Datum timestamp_support(PG_FUNCTION_ARGS); extern Datum interval_support(PG_FUNCTION_ARGS); extern Datum ginarraytriconsistent(PG_FUNCTION_ARGS); extern Datum gin_tsquery_triconsistent(PG_FUNCTION_ARGS); extern Datum int4range_subdiff(PG_FUNCTION_ARGS); extern Datum int8range_subdiff(PG_FUNCTION_ARGS); extern Datum numrange_subdiff(PG_FUNCTION_ARGS); extern Datum daterange_subdiff(PG_FUNCTION_ARGS); extern Datum int8range_canonical(PG_FUNCTION_ARGS); extern Datum tsrange_subdiff(PG_FUNCTION_ARGS); extern Datum tstzrange_subdiff(PG_FUNCTION_ARGS); extern Datum jsonb_object_keys(PG_FUNCTION_ARGS); extern Datum jsonb_each_text(PG_FUNCTION_ARGS); extern Datum mxid_age(PG_FUNCTION_ARGS); extern Datum jsonb_extract_path_text(PG_FUNCTION_ARGS); extern Datum acldefault_sql(PG_FUNCTION_ARGS); extern Datum time_support(PG_FUNCTION_ARGS); extern Datum json_object_field(PG_FUNCTION_ARGS); extern Datum json_object_field_text(PG_FUNCTION_ARGS); extern Datum json_array_element(PG_FUNCTION_ARGS); extern Datum json_array_element_text(PG_FUNCTION_ARGS); extern Datum json_extract_path(PG_FUNCTION_ARGS); extern Datum brin_summarize_new_values(PG_FUNCTION_ARGS); extern Datum json_extract_path_text(PG_FUNCTION_ARGS); extern Datum pg_get_object_address(PG_FUNCTION_ARGS); extern Datum json_array_elements(PG_FUNCTION_ARGS); extern Datum json_array_length(PG_FUNCTION_ARGS); extern Datum json_object_keys(PG_FUNCTION_ARGS); extern Datum json_each(PG_FUNCTION_ARGS); extern Datum json_each_text(PG_FUNCTION_ARGS); extern Datum json_populate_record(PG_FUNCTION_ARGS); extern Datum json_populate_recordset(PG_FUNCTION_ARGS); extern Datum json_typeof(PG_FUNCTION_ARGS); extern Datum json_array_elements_text(PG_FUNCTION_ARGS); extern Datum ordered_set_transition(PG_FUNCTION_ARGS); extern Datum ordered_set_transition_multi(PG_FUNCTION_ARGS); extern Datum percentile_disc_final(PG_FUNCTION_ARGS); extern Datum percentile_cont_float8_final(PG_FUNCTION_ARGS); extern Datum percentile_cont_interval_final(PG_FUNCTION_ARGS); extern Datum percentile_disc_multi_final(PG_FUNCTION_ARGS); extern Datum percentile_cont_float8_multi_final(PG_FUNCTION_ARGS); extern Datum percentile_cont_interval_multi_final(PG_FUNCTION_ARGS); extern Datum mode_final(PG_FUNCTION_ARGS); extern Datum hypothetical_rank_final(PG_FUNCTION_ARGS); extern Datum hypothetical_percent_rank_final(PG_FUNCTION_ARGS); extern Datum hypothetical_cume_dist_final(PG_FUNCTION_ARGS); extern Datum hypothetical_dense_rank_final(PG_FUNCTION_ARGS); extern Datum generate_series_int4_support(PG_FUNCTION_ARGS); extern Datum generate_series_int8_support(PG_FUNCTION_ARGS); extern Datum array_unnest_support(PG_FUNCTION_ARGS); extern Datum gist_box_distance(PG_FUNCTION_ARGS); extern Datum brin_summarize_range(PG_FUNCTION_ARGS); extern Datum jsonpath_in(PG_FUNCTION_ARGS); extern Datum jsonpath_recv(PG_FUNCTION_ARGS); extern Datum jsonpath_out(PG_FUNCTION_ARGS); extern Datum jsonpath_send(PG_FUNCTION_ARGS); extern Datum jsonb_path_exists(PG_FUNCTION_ARGS); extern Datum jsonb_path_query(PG_FUNCTION_ARGS); extern Datum jsonb_path_query_array(PG_FUNCTION_ARGS); extern Datum jsonb_path_query_first(PG_FUNCTION_ARGS); extern Datum jsonb_path_match(PG_FUNCTION_ARGS); extern Datum jsonb_path_exists_opr(PG_FUNCTION_ARGS); extern Datum jsonb_path_match_opr(PG_FUNCTION_ARGS); extern Datum brin_desummarize_range(PG_FUNCTION_ARGS); extern Datum spg_quad_config(PG_FUNCTION_ARGS); extern Datum spg_quad_choose(PG_FUNCTION_ARGS); extern Datum spg_quad_picksplit(PG_FUNCTION_ARGS); extern Datum spg_quad_inner_consistent(PG_FUNCTION_ARGS); extern Datum spg_quad_leaf_consistent(PG_FUNCTION_ARGS); extern Datum spg_kd_config(PG_FUNCTION_ARGS); extern Datum spg_kd_choose(PG_FUNCTION_ARGS); extern Datum spg_kd_picksplit(PG_FUNCTION_ARGS); extern Datum spg_kd_inner_consistent(PG_FUNCTION_ARGS); extern Datum spg_text_config(PG_FUNCTION_ARGS); extern Datum spg_text_choose(PG_FUNCTION_ARGS); extern Datum spg_text_picksplit(PG_FUNCTION_ARGS); extern Datum spg_text_inner_consistent(PG_FUNCTION_ARGS); extern Datum spg_text_leaf_consistent(PG_FUNCTION_ARGS); extern Datum pg_sequence_last_value(PG_FUNCTION_ARGS); extern Datum jsonb_ne(PG_FUNCTION_ARGS); extern Datum jsonb_lt(PG_FUNCTION_ARGS); extern Datum jsonb_gt(PG_FUNCTION_ARGS); extern Datum jsonb_le(PG_FUNCTION_ARGS); extern Datum jsonb_ge(PG_FUNCTION_ARGS); extern Datum jsonb_eq(PG_FUNCTION_ARGS); extern Datum jsonb_cmp(PG_FUNCTION_ARGS); extern Datum jsonb_hash(PG_FUNCTION_ARGS); extern Datum jsonb_contains(PG_FUNCTION_ARGS); extern Datum jsonb_exists(PG_FUNCTION_ARGS); extern Datum jsonb_exists_any(PG_FUNCTION_ARGS); extern Datum jsonb_exists_all(PG_FUNCTION_ARGS); extern Datum jsonb_contained(PG_FUNCTION_ARGS); extern Datum array_agg_array_transfn(PG_FUNCTION_ARGS); extern Datum array_agg_array_finalfn(PG_FUNCTION_ARGS); extern Datum range_merge(PG_FUNCTION_ARGS); extern Datum inet_merge(PG_FUNCTION_ARGS); extern Datum boxes_bound_box(PG_FUNCTION_ARGS); extern Datum inet_same_family(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_record_init_privs(PG_FUNCTION_ARGS); extern Datum regnamespacein(PG_FUNCTION_ARGS); extern Datum regnamespaceout(PG_FUNCTION_ARGS); extern Datum to_regnamespace(PG_FUNCTION_ARGS); extern Datum regnamespacerecv(PG_FUNCTION_ARGS); extern Datum regnamespacesend(PG_FUNCTION_ARGS); extern Datum point_box(PG_FUNCTION_ARGS); extern Datum regroleout(PG_FUNCTION_ARGS); extern Datum to_regrole(PG_FUNCTION_ARGS); extern Datum regrolerecv(PG_FUNCTION_ARGS); extern Datum regrolesend(PG_FUNCTION_ARGS); extern Datum regrolein(PG_FUNCTION_ARGS); extern Datum pg_rotate_logfile(PG_FUNCTION_ARGS); extern Datum pg_read_file(PG_FUNCTION_ARGS); extern Datum binary_upgrade_set_missing_value(PG_FUNCTION_ARGS); extern Datum brin_inclusion_opcinfo(PG_FUNCTION_ARGS); extern Datum brin_inclusion_add_value(PG_FUNCTION_ARGS); extern Datum brin_inclusion_consistent(PG_FUNCTION_ARGS); extern Datum brin_inclusion_union(PG_FUNCTION_ARGS); extern Datum macaddr8_in(PG_FUNCTION_ARGS); extern Datum macaddr8_out(PG_FUNCTION_ARGS); extern Datum macaddr8_trunc(PG_FUNCTION_ARGS); extern Datum macaddr8_eq(PG_FUNCTION_ARGS); extern Datum macaddr8_lt(PG_FUNCTION_ARGS); extern Datum macaddr8_le(PG_FUNCTION_ARGS); extern Datum macaddr8_gt(PG_FUNCTION_ARGS); extern Datum macaddr8_ge(PG_FUNCTION_ARGS); extern Datum macaddr8_ne(PG_FUNCTION_ARGS); extern Datum macaddr8_cmp(PG_FUNCTION_ARGS); extern Datum macaddr8_not(PG_FUNCTION_ARGS); extern Datum macaddr8_and(PG_FUNCTION_ARGS); extern Datum macaddr8_or(PG_FUNCTION_ARGS); extern Datum macaddrtomacaddr8(PG_FUNCTION_ARGS); extern Datum macaddr8tomacaddr(PG_FUNCTION_ARGS); extern Datum macaddr8_set7bit(PG_FUNCTION_ARGS); extern Datum in_range_int8_int8(PG_FUNCTION_ARGS); extern Datum in_range_int4_int8(PG_FUNCTION_ARGS); extern Datum in_range_int4_int4(PG_FUNCTION_ARGS); extern Datum in_range_int4_int2(PG_FUNCTION_ARGS); extern Datum in_range_int2_int8(PG_FUNCTION_ARGS); extern Datum in_range_int2_int4(PG_FUNCTION_ARGS); extern Datum in_range_int2_int2(PG_FUNCTION_ARGS); extern Datum in_range_date_interval(PG_FUNCTION_ARGS); extern Datum in_range_timestamp_interval(PG_FUNCTION_ARGS); extern Datum in_range_timestamptz_interval(PG_FUNCTION_ARGS); extern Datum in_range_interval_interval(PG_FUNCTION_ARGS); extern Datum in_range_time_interval(PG_FUNCTION_ARGS); extern Datum in_range_timetz_interval(PG_FUNCTION_ARGS); extern Datum in_range_float8_float8(PG_FUNCTION_ARGS); extern Datum in_range_float4_float8(PG_FUNCTION_ARGS); extern Datum in_range_numeric_numeric(PG_FUNCTION_ARGS); extern Datum pg_lsn_larger(PG_FUNCTION_ARGS); extern Datum pg_lsn_smaller(PG_FUNCTION_ARGS); extern Datum regcollationin(PG_FUNCTION_ARGS); extern Datum regcollationout(PG_FUNCTION_ARGS); extern Datum to_regcollation(PG_FUNCTION_ARGS); extern Datum regcollationrecv(PG_FUNCTION_ARGS); extern Datum regcollationsend(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb_byid_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb_byid(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_jsonb(PG_FUNCTION_ARGS); extern Datum ts_headline_json_byid_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_json_byid(PG_FUNCTION_ARGS); extern Datum ts_headline_json_opt(PG_FUNCTION_ARGS); extern Datum ts_headline_json(PG_FUNCTION_ARGS); extern Datum jsonb_string_to_tsvector(PG_FUNCTION_ARGS); extern Datum json_string_to_tsvector(PG_FUNCTION_ARGS); extern Datum jsonb_string_to_tsvector_byid(PG_FUNCTION_ARGS); extern Datum json_string_to_tsvector_byid(PG_FUNCTION_ARGS); extern Datum jsonb_to_tsvector(PG_FUNCTION_ARGS); extern Datum jsonb_to_tsvector_byid(PG_FUNCTION_ARGS); extern Datum json_to_tsvector(PG_FUNCTION_ARGS); extern Datum json_to_tsvector_byid(PG_FUNCTION_ARGS); extern Datum pg_copy_physical_replication_slot_a(PG_FUNCTION_ARGS); extern Datum pg_copy_physical_replication_slot_b(PG_FUNCTION_ARGS); extern Datum pg_copy_logical_replication_slot_a(PG_FUNCTION_ARGS); extern Datum pg_copy_logical_replication_slot_b(PG_FUNCTION_ARGS); extern Datum pg_copy_logical_replication_slot_c(PG_FUNCTION_ARGS); extern Datum unicode_normalize_func(PG_FUNCTION_ARGS); extern Datum unicode_is_normalized(PG_FUNCTION_ARGS); extern Datum pg_event_trigger_table_rewrite_oid(PG_FUNCTION_ARGS); extern Datum pg_event_trigger_table_rewrite_reason(PG_FUNCTION_ARGS); extern Datum pg_event_trigger_ddl_commands(PG_FUNCTION_ARGS); extern Datum phraseto_tsquery(PG_FUNCTION_ARGS); extern Datum tsquery_phrase(PG_FUNCTION_ARGS); extern Datum tsquery_phrase_distance(PG_FUNCTION_ARGS); extern Datum phraseto_tsquery_byid(PG_FUNCTION_ARGS); extern Datum websearch_to_tsquery_byid(PG_FUNCTION_ARGS); extern Datum websearch_to_tsquery(PG_FUNCTION_ARGS); extern Datum spg_bbox_quad_config(PG_FUNCTION_ARGS); extern Datum spg_poly_quad_compress(PG_FUNCTION_ARGS); extern Datum spg_box_quad_config(PG_FUNCTION_ARGS); extern Datum spg_box_quad_choose(PG_FUNCTION_ARGS); extern Datum spg_box_quad_picksplit(PG_FUNCTION_ARGS); extern Datum spg_box_quad_inner_consistent(PG_FUNCTION_ARGS); extern Datum spg_box_quad_leaf_consistent(PG_FUNCTION_ARGS); extern Datum pg_mcv_list_in(PG_FUNCTION_ARGS); extern Datum pg_mcv_list_out(PG_FUNCTION_ARGS); extern Datum pg_mcv_list_recv(PG_FUNCTION_ARGS); extern Datum pg_mcv_list_send(PG_FUNCTION_ARGS); extern Datum satisfies_hash_partition(PG_FUNCTION_ARGS); extern Datum pg_ls_tmpdir_noargs(PG_FUNCTION_ARGS); extern Datum pg_ls_tmpdir_1arg(PG_FUNCTION_ARGS); extern Datum pg_ls_archive_statusdir(PG_FUNCTION_ARGS); extern Datum network_sortsupport(PG_FUNCTION_ARGS); extern Datum xid8lt(PG_FUNCTION_ARGS); extern Datum xid8gt(PG_FUNCTION_ARGS); extern Datum xid8le(PG_FUNCTION_ARGS); extern Datum xid8ge(PG_FUNCTION_ARGS); extern Datum matchingsel(PG_FUNCTION_ARGS); extern Datum matchingjoinsel(PG_FUNCTION_ARGS); extern Datum numeric_min_scale(PG_FUNCTION_ARGS); extern Datum numeric_trim_scale(PG_FUNCTION_ARGS); extern Datum int4gcd(PG_FUNCTION_ARGS); extern Datum int8gcd(PG_FUNCTION_ARGS); extern Datum int4lcm(PG_FUNCTION_ARGS); extern Datum int8lcm(PG_FUNCTION_ARGS); extern Datum numeric_gcd(PG_FUNCTION_ARGS); extern Datum numeric_lcm(PG_FUNCTION_ARGS); extern Datum btvarstrequalimage(PG_FUNCTION_ARGS); extern Datum btequalimage(PG_FUNCTION_ARGS); extern Datum pg_get_shmem_allocations(PG_FUNCTION_ARGS); extern Datum pg_stat_get_ins_since_vacuum(PG_FUNCTION_ARGS); extern Datum jsonb_set_lax(PG_FUNCTION_ARGS); extern Datum xid8in(PG_FUNCTION_ARGS); extern Datum xid8toxid(PG_FUNCTION_ARGS); extern Datum xid8out(PG_FUNCTION_ARGS); extern Datum xid8recv(PG_FUNCTION_ARGS); extern Datum xid8send(PG_FUNCTION_ARGS); extern Datum xid8eq(PG_FUNCTION_ARGS); extern Datum xid8ne(PG_FUNCTION_ARGS); extern Datum anycompatible_in(PG_FUNCTION_ARGS); extern Datum anycompatible_out(PG_FUNCTION_ARGS); extern Datum anycompatiblearray_in(PG_FUNCTION_ARGS); extern Datum anycompatiblearray_out(PG_FUNCTION_ARGS); extern Datum anycompatiblearray_recv(PG_FUNCTION_ARGS); extern Datum anycompatiblearray_send(PG_FUNCTION_ARGS); extern Datum anycompatiblenonarray_in(PG_FUNCTION_ARGS); extern Datum anycompatiblenonarray_out(PG_FUNCTION_ARGS); extern Datum anycompatiblerange_in(PG_FUNCTION_ARGS); extern Datum anycompatiblerange_out(PG_FUNCTION_ARGS); extern Datum xid8cmp(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_create(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_drop(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_oid(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_session_setup(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_session_reset(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_session_is_setup(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_session_progress(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_xact_setup(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_xact_reset(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_advance(PG_FUNCTION_ARGS); extern Datum pg_replication_origin_progress(PG_FUNCTION_ARGS); extern Datum pg_show_replication_origin_status(PG_FUNCTION_ARGS); extern Datum pg_stat_get_subscription(PG_FUNCTION_ARGS); extern Datum pg_get_publication_tables(PG_FUNCTION_ARGS); extern Datum pg_get_replica_identity_index(PG_FUNCTION_ARGS); extern Datum pg_relation_is_publishable(PG_FUNCTION_ARGS); #endif /* FMGRPROTOS_H */ libpg_query-13-2.1.0/src/postgres/include/utils/fmgrtab.h000066400000000000000000000026351413137616400233040ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * fmgrtab.h * The function manager's table of internal functions. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/fmgrtab.h * *------------------------------------------------------------------------- */ #ifndef FMGRTAB_H #define FMGRTAB_H #include "access/transam.h" #include "fmgr.h" /* * This table stores info about all the built-in functions (ie, functions * that are compiled into the Postgres executable). */ typedef struct { Oid foid; /* OID of the function */ short nargs; /* 0..FUNC_MAX_ARGS, or -1 if variable count */ bool strict; /* T if function is "strict" */ bool retset; /* T if function returns a set */ const char *funcName; /* C name of the function */ PGFunction func; /* pointer to compiled function */ } FmgrBuiltin; extern const FmgrBuiltin fmgr_builtins[]; extern const int fmgr_nbuiltins; /* number of entries in table */ extern const Oid fmgr_last_builtin_oid; /* highest function OID in table */ /* * Mapping from a builtin function's OID to its index in the fmgr_builtins * array. This is indexed from 0 through fmgr_last_builtin_oid. */ #define InvalidOidBuiltinMapping PG_UINT16_MAX extern const uint16 fmgr_builtin_oid_index[]; #endif /* FMGRTAB_H */ libpg_query-13-2.1.0/src/postgres/include/utils/guc.h000066400000000000000000000403031413137616400224320ustar00rootroot00000000000000/*-------------------------------------------------------------------- * guc.h * * External declarations pertaining to backend/utils/misc/guc.c and * backend/utils/misc/guc-file.l * * Copyright (c) 2000-2020, PostgreSQL Global Development Group * Written by Peter Eisentraut . * * src/include/utils/guc.h *-------------------------------------------------------------------- */ #ifndef GUC_H #define GUC_H #include "nodes/parsenodes.h" #include "tcop/dest.h" #include "utils/array.h" /* upper limit for GUC variables measured in kilobytes of memory */ /* note that various places assume the byte size fits in a "long" variable */ #if SIZEOF_SIZE_T > 4 && SIZEOF_LONG > 4 #define MAX_KILOBYTES INT_MAX #else #define MAX_KILOBYTES (INT_MAX / 1024) #endif /* * Automatic configuration file name for ALTER SYSTEM. * This file will be used to store values of configuration parameters * set by ALTER SYSTEM command. */ #define PG_AUTOCONF_FILENAME "postgresql.auto.conf" /* * Certain options can only be set at certain times. The rules are * like this: * * INTERNAL options cannot be set by the user at all, but only through * internal processes ("server_version" is an example). These are GUC * variables only so they can be shown by SHOW, etc. * * POSTMASTER options can only be set when the postmaster starts, * either from the configuration file or the command line. * * SIGHUP options can only be set at postmaster startup or by changing * the configuration file and sending the HUP signal to the postmaster * or a backend process. (Notice that the signal receipt will not be * evaluated immediately. The postmaster and the backend check it at a * certain point in their main loop. It's safer to wait than to read a * file asynchronously.) * * BACKEND and SU_BACKEND options can only be set at postmaster startup, * from the configuration file, or by client request in the connection * startup packet (e.g., from libpq's PGOPTIONS variable). SU_BACKEND * options can be set from the startup packet only when the user is a * superuser. Furthermore, an already-started backend will ignore changes * to such an option in the configuration file. The idea is that these * options are fixed for a given backend once it's started, but they can * vary across backends. * * SUSET options can be set at postmaster startup, with the SIGHUP * mechanism, or from the startup packet or SQL if you're a superuser. * * USERSET options can be set by anyone any time. */ typedef enum { PGC_INTERNAL, PGC_POSTMASTER, PGC_SIGHUP, PGC_SU_BACKEND, PGC_BACKEND, PGC_SUSET, PGC_USERSET } GucContext; /* * The following type records the source of the current setting. A * new setting can only take effect if the previous setting had the * same or lower level. (E.g, changing the config file doesn't * override the postmaster command line.) Tracking the source allows us * to process sources in any convenient order without affecting results. * Sources <= PGC_S_OVERRIDE will set the default used by RESET, as well * as the current value. Note that source == PGC_S_OVERRIDE should be * used when setting a PGC_INTERNAL option. * * PGC_S_INTERACTIVE isn't actually a source value, but is the * dividing line between "interactive" and "non-interactive" sources for * error reporting purposes. * * PGC_S_TEST is used when testing values to be used later ("doit" will always * be false, so this never gets stored as the actual source of any value). * For example, ALTER DATABASE/ROLE tests proposed per-database or per-user * defaults this way, and CREATE FUNCTION tests proposed function SET clauses * this way. This is an interactive case, but it needs its own source value * because some assign hooks need to make different validity checks in this * case. In particular, references to nonexistent database objects generally * shouldn't throw hard errors in this case, at most NOTICEs, since the * objects might exist by the time the setting is used for real. * * NB: see GucSource_Names in guc.c if you change this. */ typedef enum { PGC_S_DEFAULT, /* hard-wired default ("boot_val") */ PGC_S_DYNAMIC_DEFAULT, /* default computed during initialization */ PGC_S_ENV_VAR, /* postmaster environment variable */ PGC_S_FILE, /* postgresql.conf */ PGC_S_ARGV, /* postmaster command line */ PGC_S_GLOBAL, /* global in-database setting */ PGC_S_DATABASE, /* per-database setting */ PGC_S_USER, /* per-user setting */ PGC_S_DATABASE_USER, /* per-user-and-database setting */ PGC_S_CLIENT, /* from client connection request */ PGC_S_OVERRIDE, /* special case to forcibly set default */ PGC_S_INTERACTIVE, /* dividing line for error reporting */ PGC_S_TEST, /* test per-database or per-user setting */ PGC_S_SESSION /* SET command */ } GucSource; /* * Parsing the configuration file(s) will return a list of name-value pairs * with source location info. We also abuse this data structure to carry * error reports about the config files. An entry reporting an error will * have errmsg != NULL, and might have NULLs for name, value, and/or filename. * * If "ignore" is true, don't attempt to apply the item (it might be an error * report, or an item we determined to be duplicate). "applied" is set true * if we successfully applied, or could have applied, the setting. */ typedef struct ConfigVariable { char *name; char *value; char *errmsg; char *filename; int sourceline; bool ignore; bool applied; struct ConfigVariable *next; } ConfigVariable; extern bool ParseConfigFile(const char *config_file, bool strict, const char *calling_file, int calling_lineno, int depth, int elevel, ConfigVariable **head_p, ConfigVariable **tail_p); extern bool ParseConfigFp(FILE *fp, const char *config_file, int depth, int elevel, ConfigVariable **head_p, ConfigVariable **tail_p); extern bool ParseConfigDirectory(const char *includedir, const char *calling_file, int calling_lineno, int depth, int elevel, ConfigVariable **head_p, ConfigVariable **tail_p); extern void FreeConfigVariables(ConfigVariable *list); /* * The possible values of an enum variable are specified by an array of * name-value pairs. The "hidden" flag means the value is accepted but * won't be displayed when guc.c is asked for a list of acceptable values. */ struct config_enum_entry { const char *name; int val; bool hidden; }; /* * Signatures for per-variable check/assign/show hook functions */ typedef bool (*GucBoolCheckHook) (bool *newval, void **extra, GucSource source); typedef bool (*GucIntCheckHook) (int *newval, void **extra, GucSource source); typedef bool (*GucRealCheckHook) (double *newval, void **extra, GucSource source); typedef bool (*GucStringCheckHook) (char **newval, void **extra, GucSource source); typedef bool (*GucEnumCheckHook) (int *newval, void **extra, GucSource source); typedef void (*GucBoolAssignHook) (bool newval, void *extra); typedef void (*GucIntAssignHook) (int newval, void *extra); typedef void (*GucRealAssignHook) (double newval, void *extra); typedef void (*GucStringAssignHook) (const char *newval, void *extra); typedef void (*GucEnumAssignHook) (int newval, void *extra); typedef const char *(*GucShowHook) (void); /* * Miscellaneous */ typedef enum { /* Types of set_config_option actions */ GUC_ACTION_SET, /* regular SET command */ GUC_ACTION_LOCAL, /* SET LOCAL command */ GUC_ACTION_SAVE /* function SET option, or temp assignment */ } GucAction; #define GUC_QUALIFIER_SEPARATOR '.' /* * bit values in "flags" of a GUC variable */ #define GUC_LIST_INPUT 0x0001 /* input can be list format */ #define GUC_LIST_QUOTE 0x0002 /* double-quote list elements */ #define GUC_NO_SHOW_ALL 0x0004 /* exclude from SHOW ALL */ #define GUC_NO_RESET_ALL 0x0008 /* exclude from RESET ALL */ #define GUC_REPORT 0x0010 /* auto-report changes to client */ #define GUC_NOT_IN_SAMPLE 0x0020 /* not in postgresql.conf.sample */ #define GUC_DISALLOW_IN_FILE 0x0040 /* can't set in postgresql.conf */ #define GUC_CUSTOM_PLACEHOLDER 0x0080 /* placeholder for custom variable */ #define GUC_SUPERUSER_ONLY 0x0100 /* show only to superusers */ #define GUC_IS_NAME 0x0200 /* limit string to NAMEDATALEN-1 */ #define GUC_NOT_WHILE_SEC_REST 0x0400 /* can't set if security restricted */ #define GUC_DISALLOW_IN_AUTO_FILE 0x0800 /* can't set in * PG_AUTOCONF_FILENAME */ #define GUC_UNIT_KB 0x1000 /* value is in kilobytes */ #define GUC_UNIT_BLOCKS 0x2000 /* value is in blocks */ #define GUC_UNIT_XBLOCKS 0x3000 /* value is in xlog blocks */ #define GUC_UNIT_MB 0x4000 /* value is in megabytes */ #define GUC_UNIT_BYTE 0x8000 /* value is in bytes */ #define GUC_UNIT_MEMORY 0xF000 /* mask for size-related units */ #define GUC_UNIT_MS 0x10000 /* value is in milliseconds */ #define GUC_UNIT_S 0x20000 /* value is in seconds */ #define GUC_UNIT_MIN 0x30000 /* value is in minutes */ #define GUC_UNIT_TIME 0xF0000 /* mask for time-related units */ #define GUC_EXPLAIN 0x100000 /* include in explain */ #define GUC_UNIT (GUC_UNIT_MEMORY | GUC_UNIT_TIME) /* GUC vars that are actually declared in guc.c, rather than elsewhere */ extern bool Debug_print_plan; extern bool Debug_print_parse; extern bool Debug_print_rewritten; extern bool Debug_pretty_print; extern bool log_parser_stats; extern bool log_planner_stats; extern bool log_executor_stats; extern bool log_statement_stats; extern bool log_btree_build_stats; extern PGDLLIMPORT __thread bool check_function_bodies; extern bool session_auth_is_superuser; extern bool log_duration; extern int log_parameter_max_length; extern int log_parameter_max_length_on_error; extern int log_min_error_statement; extern PGDLLIMPORT __thread int log_min_messages; extern PGDLLIMPORT __thread int client_min_messages; extern int log_min_duration_sample; extern int log_min_duration_statement; extern int log_temp_files; extern double log_statement_sample_rate; extern double log_xact_sample_rate; extern __thread char *backtrace_functions; extern __thread char *backtrace_symbol_list; extern int temp_file_limit; extern int num_temp_buffers; extern char *cluster_name; extern PGDLLIMPORT char *ConfigFileName; extern char *HbaFileName; extern char *IdentFileName; extern char *external_pid_file; extern PGDLLIMPORT char *application_name; extern int tcp_keepalives_idle; extern int tcp_keepalives_interval; extern int tcp_keepalives_count; extern int tcp_user_timeout; #ifdef TRACE_SORT extern bool trace_sort; #endif /* * Functions exported by guc.c */ extern void SetConfigOption(const char *name, const char *value, GucContext context, GucSource source); extern void DefineCustomBoolVariable(const char *name, const char *short_desc, const char *long_desc, bool *valueAddr, bool bootValue, GucContext context, int flags, GucBoolCheckHook check_hook, GucBoolAssignHook assign_hook, GucShowHook show_hook); extern void DefineCustomIntVariable(const char *name, const char *short_desc, const char *long_desc, int *valueAddr, int bootValue, int minValue, int maxValue, GucContext context, int flags, GucIntCheckHook check_hook, GucIntAssignHook assign_hook, GucShowHook show_hook); extern void DefineCustomRealVariable(const char *name, const char *short_desc, const char *long_desc, double *valueAddr, double bootValue, double minValue, double maxValue, GucContext context, int flags, GucRealCheckHook check_hook, GucRealAssignHook assign_hook, GucShowHook show_hook); extern void DefineCustomStringVariable(const char *name, const char *short_desc, const char *long_desc, char **valueAddr, const char *bootValue, GucContext context, int flags, GucStringCheckHook check_hook, GucStringAssignHook assign_hook, GucShowHook show_hook); extern void DefineCustomEnumVariable(const char *name, const char *short_desc, const char *long_desc, int *valueAddr, int bootValue, const struct config_enum_entry *options, GucContext context, int flags, GucEnumCheckHook check_hook, GucEnumAssignHook assign_hook, GucShowHook show_hook); extern void EmitWarningsOnPlaceholders(const char *className); extern const char *GetConfigOption(const char *name, bool missing_ok, bool restrict_privileged); extern const char *GetConfigOptionResetString(const char *name); extern int GetConfigOptionFlags(const char *name, bool missing_ok); extern void ProcessConfigFile(GucContext context); extern void InitializeGUCOptions(void); extern bool SelectConfigFiles(const char *userDoption, const char *progname); extern void ResetAllOptions(void); extern void AtStart_GUC(void); extern int NewGUCNestLevel(void); extern void AtEOXact_GUC(bool isCommit, int nestLevel); extern void BeginReportingGUCOptions(void); extern void ParseLongOption(const char *string, char **name, char **value); extern bool parse_int(const char *value, int *result, int flags, const char **hintmsg); extern bool parse_real(const char *value, double *result, int flags, const char **hintmsg); extern int set_config_option(const char *name, const char *value, GucContext context, GucSource source, GucAction action, bool changeVal, int elevel, bool is_reload); extern void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt); extern char *GetConfigOptionByName(const char *name, const char **varname, bool missing_ok); extern void GetConfigOptionByNum(int varnum, const char **values, bool *noshow); extern int GetNumConfigOptions(void); extern void SetPGVariable(const char *name, List *args, bool is_local); extern void GetPGVariable(const char *name, DestReceiver *dest); extern TupleDesc GetPGVariableResultDesc(const char *name); extern void ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel); extern char *ExtractSetVariableArgs(VariableSetStmt *stmt); extern void ProcessGUCArray(ArrayType *array, GucContext context, GucSource source, GucAction action); extern ArrayType *GUCArrayAdd(ArrayType *array, const char *name, const char *value); extern ArrayType *GUCArrayDelete(ArrayType *array, const char *name); extern ArrayType *GUCArrayReset(ArrayType *array); #ifdef EXEC_BACKEND extern void write_nondefault_variables(GucContext context); extern void read_nondefault_variables(void); #endif /* GUC serialization */ extern Size EstimateGUCStateSpace(void); extern void SerializeGUCState(Size maxsize, char *start_address); extern void RestoreGUCState(void *gucstate); /* Support for messages reported from GUC check hooks */ extern PGDLLIMPORT char *GUC_check_errmsg_string; extern PGDLLIMPORT char *GUC_check_errdetail_string; extern PGDLLIMPORT char *GUC_check_errhint_string; extern void GUC_check_errcode(int sqlerrcode); #define GUC_check_errmsg \ pre_format_elog_string(errno, TEXTDOMAIN), \ GUC_check_errmsg_string = format_elog_string #define GUC_check_errdetail \ pre_format_elog_string(errno, TEXTDOMAIN), \ GUC_check_errdetail_string = format_elog_string #define GUC_check_errhint \ pre_format_elog_string(errno, TEXTDOMAIN), \ GUC_check_errhint_string = format_elog_string /* * The following functions are not in guc.c, but are declared here to avoid * having to include guc.h in some widely used headers that it really doesn't * belong in. */ /* in commands/tablespace.c */ extern bool check_default_tablespace(char **newval, void **extra, GucSource source); extern bool check_temp_tablespaces(char **newval, void **extra, GucSource source); extern void assign_temp_tablespaces(const char *newval, void *extra); /* in catalog/namespace.c */ extern bool check_search_path(char **newval, void **extra, GucSource source); extern void assign_search_path(const char *newval, void *extra); /* in access/transam/xlog.c */ extern bool check_wal_buffers(int *newval, void **extra, GucSource source); extern void assign_xlog_sync_method(int new_sync_method, void *extra); #endif /* GUC_H */ libpg_query-13-2.1.0/src/postgres/include/utils/guc_tables.h000066400000000000000000000165701413137616400237750ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * guc_tables.h * Declarations of tables used by GUC. * * See src/backend/utils/misc/README for design notes. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/include/utils/guc_tables.h * *------------------------------------------------------------------------- */ #ifndef GUC_TABLES_H #define GUC_TABLES_H 1 #include "utils/guc.h" /* * GUC supports these types of variables: */ enum config_type { PGC_BOOL, PGC_INT, PGC_REAL, PGC_STRING, PGC_ENUM }; union config_var_val { bool boolval; int intval; double realval; char *stringval; int enumval; }; /* * The actual value of a GUC variable can include a malloc'd opaque struct * "extra", which is created by its check_hook and used by its assign_hook. */ typedef struct config_var_value { union config_var_val val; void *extra; } config_var_value; /* * Groupings to help organize all the run-time options for display */ enum config_group { UNGROUPED, FILE_LOCATIONS, CONN_AUTH, CONN_AUTH_SETTINGS, CONN_AUTH_AUTH, CONN_AUTH_SSL, RESOURCES, RESOURCES_MEM, RESOURCES_DISK, RESOURCES_KERNEL, RESOURCES_VACUUM_DELAY, RESOURCES_BGWRITER, RESOURCES_ASYNCHRONOUS, WAL, WAL_SETTINGS, WAL_CHECKPOINTS, WAL_ARCHIVING, WAL_ARCHIVE_RECOVERY, WAL_RECOVERY_TARGET, REPLICATION, REPLICATION_SENDING, REPLICATION_MASTER, REPLICATION_STANDBY, REPLICATION_SUBSCRIBERS, QUERY_TUNING, QUERY_TUNING_METHOD, QUERY_TUNING_COST, QUERY_TUNING_GEQO, QUERY_TUNING_OTHER, LOGGING, LOGGING_WHERE, LOGGING_WHEN, LOGGING_WHAT, PROCESS_TITLE, STATS, STATS_MONITORING, STATS_COLLECTOR, AUTOVACUUM, CLIENT_CONN, CLIENT_CONN_STATEMENT, CLIENT_CONN_LOCALE, CLIENT_CONN_PRELOAD, CLIENT_CONN_OTHER, LOCK_MANAGEMENT, COMPAT_OPTIONS, COMPAT_OPTIONS_PREVIOUS, COMPAT_OPTIONS_CLIENT, ERROR_HANDLING_OPTIONS, PRESET_OPTIONS, CUSTOM_OPTIONS, DEVELOPER_OPTIONS }; /* * Stack entry for saving the state a variable had prior to an uncommitted * transactional change */ typedef enum { /* This is almost GucAction, but we need a fourth state for SET+LOCAL */ GUC_SAVE, /* entry caused by function SET option */ GUC_SET, /* entry caused by plain SET command */ GUC_LOCAL, /* entry caused by SET LOCAL command */ GUC_SET_LOCAL /* entry caused by SET then SET LOCAL */ } GucStackState; typedef struct guc_stack { struct guc_stack *prev; /* previous stack item, if any */ int nest_level; /* nesting depth at which we made entry */ GucStackState state; /* see enum above */ GucSource source; /* source of the prior value */ /* masked value's source must be PGC_S_SESSION, so no need to store it */ GucContext scontext; /* context that set the prior value */ GucContext masked_scontext; /* context that set the masked value */ config_var_value prior; /* previous value of variable */ config_var_value masked; /* SET value in a GUC_SET_LOCAL entry */ } GucStack; /* * Generic fields applicable to all types of variables * * The short description should be less than 80 chars in length. Some * applications may use the long description as well, and will append * it to the short description. (separated by a newline or '. ') * * Note that sourcefile/sourceline are kept here, and not pushed into stacked * values, although in principle they belong with some stacked value if the * active value is session- or transaction-local. This is to avoid bloating * stack entries. We know they are only relevant when source == PGC_S_FILE. */ struct config_generic { /* constant fields, must be set correctly in initial value: */ const char *name; /* name of variable - MUST BE FIRST */ GucContext context; /* context required to set the variable */ enum config_group group; /* to help organize variables by function */ const char *short_desc; /* short desc. of this variable's purpose */ const char *long_desc; /* long desc. of this variable's purpose */ int flags; /* flag bits, see guc.h */ /* variable fields, initialized at runtime: */ enum config_type vartype; /* type of variable (set only at startup) */ int status; /* status bits, see below */ GucSource source; /* source of the current actual value */ GucSource reset_source; /* source of the reset_value */ GucContext scontext; /* context that set the current value */ GucContext reset_scontext; /* context that set the reset value */ GucStack *stack; /* stacked prior values */ void *extra; /* "extra" pointer for current actual value */ char *sourcefile; /* file current setting is from (NULL if not * set in config file) */ int sourceline; /* line in source file */ }; /* bit values in status field */ #define GUC_IS_IN_FILE 0x0001 /* found it in config file */ /* * Caution: the GUC_IS_IN_FILE bit is transient state for ProcessConfigFile. * Do not assume that its value represents useful information elsewhere. */ #define GUC_PENDING_RESTART 0x0002 /* GUC records for specific variable types */ struct config_bool { struct config_generic gen; /* constant fields, must be set correctly in initial value: */ bool *variable; bool boot_val; GucBoolCheckHook check_hook; GucBoolAssignHook assign_hook; GucShowHook show_hook; /* variable fields, initialized at runtime: */ bool reset_val; void *reset_extra; }; struct config_int { struct config_generic gen; /* constant fields, must be set correctly in initial value: */ int *variable; int boot_val; int min; int max; GucIntCheckHook check_hook; GucIntAssignHook assign_hook; GucShowHook show_hook; /* variable fields, initialized at runtime: */ int reset_val; void *reset_extra; }; struct config_real { struct config_generic gen; /* constant fields, must be set correctly in initial value: */ double *variable; double boot_val; double min; double max; GucRealCheckHook check_hook; GucRealAssignHook assign_hook; GucShowHook show_hook; /* variable fields, initialized at runtime: */ double reset_val; void *reset_extra; }; struct config_string { struct config_generic gen; /* constant fields, must be set correctly in initial value: */ char **variable; const char *boot_val; GucStringCheckHook check_hook; GucStringAssignHook assign_hook; GucShowHook show_hook; /* variable fields, initialized at runtime: */ char *reset_val; void *reset_extra; }; struct config_enum { struct config_generic gen; /* constant fields, must be set correctly in initial value: */ int *variable; int boot_val; const struct config_enum_entry *options; GucEnumCheckHook check_hook; GucEnumAssignHook assign_hook; GucShowHook show_hook; /* variable fields, initialized at runtime: */ int reset_val; void *reset_extra; }; /* constant tables corresponding to enums above and in guc.h */ extern const char *const config_group_names[]; extern const char *const config_type_names[]; extern const char *const GucContext_Names[]; extern const char *const GucSource_Names[]; /* get the current set of variables */ extern struct config_generic **get_guc_variables(void); extern void build_guc_variables(void); /* search in enum options */ extern const char *config_enum_lookup_by_value(struct config_enum *record, int val); extern bool config_enum_lookup_by_name(struct config_enum *record, const char *value, int *retval); extern struct config_generic **get_explain_guc_options(int *num); #endif /* GUC_TABLES_H */ libpg_query-13-2.1.0/src/postgres/include/utils/hsearch.h000066400000000000000000000131321413137616400232710ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * hsearch.h * exported definitions for utils/hash/dynahash.c; see notes therein * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/hsearch.h * *------------------------------------------------------------------------- */ #ifndef HSEARCH_H #define HSEARCH_H /* * Hash functions must have this signature. */ typedef uint32 (*HashValueFunc) (const void *key, Size keysize); /* * Key comparison functions must have this signature. Comparison functions * return zero for match, nonzero for no match. (The comparison function * definition is designed to allow memcmp() and strncmp() to be used directly * as key comparison functions.) */ typedef int (*HashCompareFunc) (const void *key1, const void *key2, Size keysize); /* * Key copying functions must have this signature. The return value is not * used. (The definition is set up to allow memcpy() and strlcpy() to be * used directly.) */ typedef void *(*HashCopyFunc) (void *dest, const void *src, Size keysize); /* * Space allocation function for a hashtable --- designed to match malloc(). * Note: there is no free function API; can't destroy a hashtable unless you * use the default allocator. */ typedef void *(*HashAllocFunc) (Size request); /* * HASHELEMENT is the private part of a hashtable entry. The caller's data * follows the HASHELEMENT structure (on a MAXALIGN'd boundary). The hash key * is expected to be at the start of the caller's hash entry data structure. */ typedef struct HASHELEMENT { struct HASHELEMENT *link; /* link to next entry in same bucket */ uint32 hashvalue; /* hash function result for this entry */ } HASHELEMENT; /* Hash table header struct is an opaque type known only within dynahash.c */ typedef struct HASHHDR HASHHDR; /* Hash table control struct is an opaque type known only within dynahash.c */ typedef struct HTAB HTAB; /* Parameter data structure for hash_create */ /* Only those fields indicated by hash_flags need be set */ typedef struct HASHCTL { long num_partitions; /* # partitions (must be power of 2) */ long ssize; /* segment size */ long dsize; /* (initial) directory size */ long max_dsize; /* limit to dsize if dir size is limited */ long ffactor; /* fill factor */ Size keysize; /* hash key length in bytes */ Size entrysize; /* total user element size in bytes */ HashValueFunc hash; /* hash function */ HashCompareFunc match; /* key comparison function */ HashCopyFunc keycopy; /* key copying function */ HashAllocFunc alloc; /* memory allocator */ MemoryContext hcxt; /* memory context to use for allocations */ HASHHDR *hctl; /* location of header in shared mem */ } HASHCTL; /* Flags to indicate which parameters are supplied */ #define HASH_PARTITION 0x0001 /* Hashtable is used w/partitioned locking */ #define HASH_SEGMENT 0x0002 /* Set segment size */ #define HASH_DIRSIZE 0x0004 /* Set directory size (initial and max) */ #define HASH_FFACTOR 0x0008 /* Set fill factor */ #define HASH_ELEM 0x0010 /* Set keysize and entrysize */ #define HASH_BLOBS 0x0020 /* Select support functions for binary keys */ #define HASH_FUNCTION 0x0040 /* Set user defined hash function */ #define HASH_COMPARE 0x0080 /* Set user defined comparison function */ #define HASH_KEYCOPY 0x0100 /* Set user defined key-copying function */ #define HASH_ALLOC 0x0200 /* Set memory allocator */ #define HASH_CONTEXT 0x0400 /* Set memory allocation context */ #define HASH_SHARED_MEM 0x0800 /* Hashtable is in shared memory */ #define HASH_ATTACH 0x1000 /* Do not initialize hctl */ #define HASH_FIXED_SIZE 0x2000 /* Initial size is a hard limit */ /* max_dsize value to indicate expansible directory */ #define NO_MAX_DSIZE (-1) /* hash_search operations */ typedef enum { HASH_FIND, HASH_ENTER, HASH_REMOVE, HASH_ENTER_NULL } HASHACTION; /* hash_seq status (should be considered an opaque type by callers) */ typedef struct { HTAB *hashp; uint32 curBucket; /* index of current bucket */ HASHELEMENT *curEntry; /* current entry in bucket */ } HASH_SEQ_STATUS; /* * prototypes for functions in dynahash.c * * Note: It is deprecated for callers of hash_create to explicitly specify * string_hash, tag_hash, uint32_hash, or oid_hash. Just set HASH_BLOBS or * not. Use HASH_FUNCTION only when you want something other than those. */ extern HTAB *hash_create(const char *tabname, long nelem, HASHCTL *info, int flags); extern void hash_destroy(HTAB *hashp); extern void hash_stats(const char *where, HTAB *hashp); extern void *hash_search(HTAB *hashp, const void *keyPtr, HASHACTION action, bool *foundPtr); extern uint32 get_hash_value(HTAB *hashp, const void *keyPtr); extern void *hash_search_with_hash_value(HTAB *hashp, const void *keyPtr, uint32 hashvalue, HASHACTION action, bool *foundPtr); extern bool hash_update_hash_key(HTAB *hashp, void *existingEntry, const void *newKeyPtr); extern long hash_get_num_entries(HTAB *hashp); extern void hash_seq_init(HASH_SEQ_STATUS *status, HTAB *hashp); extern void *hash_seq_search(HASH_SEQ_STATUS *status); extern void hash_seq_term(HASH_SEQ_STATUS *status); extern void hash_freeze(HTAB *hashp); extern Size hash_estimate_size(long num_entries, Size entrysize); extern long hash_select_dirsize(long num_entries); extern Size hash_get_shared_size(HASHCTL *info, int flags); extern void AtEOXact_HashTables(bool isCommit); extern void AtEOSubXact_HashTables(bool isCommit, int nestDepth); #endif /* HSEARCH_H */ libpg_query-13-2.1.0/src/postgres/include/utils/inval.h000066400000000000000000000033601413137616400227670ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * inval.h * POSTGRES cache invalidation dispatcher definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/inval.h * *------------------------------------------------------------------------- */ #ifndef INVAL_H #define INVAL_H #include "access/htup.h" #include "storage/relfilenode.h" #include "utils/relcache.h" typedef void (*SyscacheCallbackFunction) (Datum arg, int cacheid, uint32 hashvalue); typedef void (*RelcacheCallbackFunction) (Datum arg, Oid relid); extern void AcceptInvalidationMessages(void); extern void AtEOXact_Inval(bool isCommit); extern void AtEOSubXact_Inval(bool isCommit); extern void PostPrepare_Inval(void); extern void CommandEndInvalidationMessages(void); extern void CacheInvalidateHeapTuple(Relation relation, HeapTuple tuple, HeapTuple newtuple); extern void CacheInvalidateCatalog(Oid catalogId); extern void CacheInvalidateRelcache(Relation relation); extern void CacheInvalidateRelcacheAll(void); extern void CacheInvalidateRelcacheByTuple(HeapTuple classTuple); extern void CacheInvalidateRelcacheByRelid(Oid relid); extern void CacheInvalidateSmgr(RelFileNodeBackend rnode); extern void CacheInvalidateRelmap(Oid databaseId); extern void CacheRegisterSyscacheCallback(int cacheid, SyscacheCallbackFunction func, Datum arg); extern void CacheRegisterRelcacheCallback(RelcacheCallbackFunction func, Datum arg); extern void CallSyscacheCallbacks(int cacheid, uint32 hashvalue); extern void InvalidateSystemCaches(void); #endif /* INVAL_H */ libpg_query-13-2.1.0/src/postgres/include/utils/lsyscache.h000066400000000000000000000206111413137616400236320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * lsyscache.h * Convenience routines for common queries in the system catalog cache. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/lsyscache.h * *------------------------------------------------------------------------- */ #ifndef LSYSCACHE_H #define LSYSCACHE_H #include "access/attnum.h" #include "access/htup.h" #include "nodes/pg_list.h" /* Result list element for get_op_btree_interpretation */ typedef struct OpBtreeInterpretation { Oid opfamily_id; /* btree opfamily containing operator */ int strategy; /* its strategy number */ Oid oplefttype; /* declared left input datatype */ Oid oprighttype; /* declared right input datatype */ } OpBtreeInterpretation; /* I/O function selector for get_type_io_data */ typedef enum IOFuncSelector { IOFunc_input, IOFunc_output, IOFunc_receive, IOFunc_send } IOFuncSelector; /* Flag bits for get_attstatsslot */ #define ATTSTATSSLOT_VALUES 0x01 #define ATTSTATSSLOT_NUMBERS 0x02 /* Result struct for get_attstatsslot */ typedef struct AttStatsSlot { /* Always filled: */ Oid staop; /* Actual staop for the found slot */ Oid stacoll; /* Actual collation for the found slot */ /* Filled if ATTSTATSSLOT_VALUES is specified: */ Oid valuetype; /* Actual datatype of the values */ Datum *values; /* slot's "values" array, or NULL if none */ int nvalues; /* length of values[], or 0 */ /* Filled if ATTSTATSSLOT_NUMBERS is specified: */ float4 *numbers; /* slot's "numbers" array, or NULL if none */ int nnumbers; /* length of numbers[], or 0 */ /* Remaining fields are private to get_attstatsslot/free_attstatsslot */ void *values_arr; /* palloc'd values array, if any */ void *numbers_arr; /* palloc'd numbers array, if any */ } AttStatsSlot; /* Hook for plugins to get control in get_attavgwidth() */ typedef int32 (*get_attavgwidth_hook_type) (Oid relid, AttrNumber attnum); extern PGDLLIMPORT get_attavgwidth_hook_type get_attavgwidth_hook; extern bool op_in_opfamily(Oid opno, Oid opfamily); extern int get_op_opfamily_strategy(Oid opno, Oid opfamily); extern Oid get_op_opfamily_sortfamily(Oid opno, Oid opfamily); extern void get_op_opfamily_properties(Oid opno, Oid opfamily, bool ordering_op, int *strategy, Oid *lefttype, Oid *righttype); extern Oid get_opfamily_member(Oid opfamily, Oid lefttype, Oid righttype, int16 strategy); extern bool get_ordering_op_properties(Oid opno, Oid *opfamily, Oid *opcintype, int16 *strategy); extern Oid get_equality_op_for_ordering_op(Oid opno, bool *reverse); extern Oid get_ordering_op_for_equality_op(Oid opno, bool use_lhs_type); extern List *get_mergejoin_opfamilies(Oid opno); extern bool get_compatible_hash_operators(Oid opno, Oid *lhs_opno, Oid *rhs_opno); extern bool get_op_hash_functions(Oid opno, RegProcedure *lhs_procno, RegProcedure *rhs_procno); extern List *get_op_btree_interpretation(Oid opno); extern bool equality_ops_are_compatible(Oid opno1, Oid opno2); extern bool comparison_ops_are_compatible(Oid opno1, Oid opno2); extern Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype, int16 procnum); extern char *get_attname(Oid relid, AttrNumber attnum, bool missing_ok); extern AttrNumber get_attnum(Oid relid, const char *attname); extern int get_attstattarget(Oid relid, AttrNumber attnum); extern char get_attgenerated(Oid relid, AttrNumber attnum); extern Oid get_atttype(Oid relid, AttrNumber attnum); extern void get_atttypetypmodcoll(Oid relid, AttrNumber attnum, Oid *typid, int32 *typmod, Oid *collid); extern Datum get_attoptions(Oid relid, int16 attnum); extern Oid get_cast_oid(Oid sourcetypeid, Oid targettypeid, bool missing_ok); extern char *get_collation_name(Oid colloid); extern bool get_collation_isdeterministic(Oid colloid); extern char *get_constraint_name(Oid conoid); extern char *get_language_name(Oid langoid, bool missing_ok); extern Oid get_opclass_family(Oid opclass); extern Oid get_opclass_input_type(Oid opclass); extern bool get_opclass_opfamily_and_input_type(Oid opclass, Oid *opfamily, Oid *opcintype); extern RegProcedure get_opcode(Oid opno); extern char *get_opname(Oid opno); extern Oid get_op_rettype(Oid opno); extern void op_input_types(Oid opno, Oid *lefttype, Oid *righttype); extern bool op_mergejoinable(Oid opno, Oid inputtype); extern bool op_hashjoinable(Oid opno, Oid inputtype); extern bool op_strict(Oid opno); extern char op_volatile(Oid opno); extern Oid get_commutator(Oid opno); extern Oid get_negator(Oid opno); extern RegProcedure get_oprrest(Oid opno); extern RegProcedure get_oprjoin(Oid opno); extern char *get_func_name(Oid funcid); extern Oid get_func_namespace(Oid funcid); extern Oid get_func_rettype(Oid funcid); extern int get_func_nargs(Oid funcid); extern Oid get_func_signature(Oid funcid, Oid **argtypes, int *nargs); extern Oid get_func_variadictype(Oid funcid); extern bool get_func_retset(Oid funcid); extern bool func_strict(Oid funcid); extern char func_volatile(Oid funcid); extern char func_parallel(Oid funcid); extern char get_func_prokind(Oid funcid); extern bool get_func_leakproof(Oid funcid); extern RegProcedure get_func_support(Oid funcid); extern Oid get_relname_relid(const char *relname, Oid relnamespace); extern char *get_rel_name(Oid relid); extern Oid get_rel_namespace(Oid relid); extern Oid get_rel_type_id(Oid relid); extern char get_rel_relkind(Oid relid); extern bool get_rel_relispartition(Oid relid); extern Oid get_rel_tablespace(Oid relid); extern char get_rel_persistence(Oid relid); extern Oid get_transform_fromsql(Oid typid, Oid langid, List *trftypes); extern Oid get_transform_tosql(Oid typid, Oid langid, List *trftypes); extern bool get_typisdefined(Oid typid); extern int16 get_typlen(Oid typid); extern bool get_typbyval(Oid typid); extern void get_typlenbyval(Oid typid, int16 *typlen, bool *typbyval); extern void get_typlenbyvalalign(Oid typid, int16 *typlen, bool *typbyval, char *typalign); extern Oid getTypeIOParam(HeapTuple typeTuple); extern void get_type_io_data(Oid typid, IOFuncSelector which_func, int16 *typlen, bool *typbyval, char *typalign, char *typdelim, Oid *typioparam, Oid *func); extern char get_typstorage(Oid typid); extern Node *get_typdefault(Oid typid); extern char get_typtype(Oid typid); extern bool type_is_rowtype(Oid typid); extern bool type_is_enum(Oid typid); extern bool type_is_range(Oid typid); extern void get_type_category_preferred(Oid typid, char *typcategory, bool *typispreferred); extern Oid get_typ_typrelid(Oid typid); extern Oid get_element_type(Oid typid); extern Oid get_array_type(Oid typid); extern Oid get_promoted_array_type(Oid typid); extern Oid get_base_element_type(Oid typid); extern void getTypeInputInfo(Oid type, Oid *typInput, Oid *typIOParam); extern void getTypeOutputInfo(Oid type, Oid *typOutput, bool *typIsVarlena); extern void getTypeBinaryInputInfo(Oid type, Oid *typReceive, Oid *typIOParam); extern void getTypeBinaryOutputInfo(Oid type, Oid *typSend, bool *typIsVarlena); extern Oid get_typmodin(Oid typid); extern Oid get_typcollation(Oid typid); extern bool type_is_collatable(Oid typid); extern Oid getBaseType(Oid typid); extern Oid getBaseTypeAndTypmod(Oid typid, int32 *typmod); extern int32 get_typavgwidth(Oid typid, int32 typmod); extern int32 get_attavgwidth(Oid relid, AttrNumber attnum); extern bool get_attstatsslot(AttStatsSlot *sslot, HeapTuple statstuple, int reqkind, Oid reqop, int flags); extern void free_attstatsslot(AttStatsSlot *sslot); extern char *get_namespace_name(Oid nspid); extern char *get_namespace_name_or_temp(Oid nspid); extern Oid get_range_subtype(Oid rangeOid); extern Oid get_range_collation(Oid rangeOid); extern Oid get_index_column_opclass(Oid index_oid, int attno); extern bool get_index_isreplident(Oid index_oid); extern bool get_index_isvalid(Oid index_oid); extern bool get_index_isclustered(Oid index_oid); #define type_is_array(typid) (get_element_type(typid) != InvalidOid) /* type_is_array_domain accepts both plain arrays and domains over arrays */ #define type_is_array_domain(typid) (get_base_element_type(typid) != InvalidOid) #define TypeIsToastable(typid) (get_typstorage(typid) != TYPSTORAGE_PLAIN) #endif /* LSYSCACHE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/memdebug.h000066400000000000000000000042241413137616400234430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * memdebug.h * Memory debugging support. * * Currently, this file either wraps or substitutes * empty definitions for Valgrind client request macros we use. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/memdebug.h * *------------------------------------------------------------------------- */ #ifndef MEMDEBUG_H #define MEMDEBUG_H #ifdef USE_VALGRIND #include #else #define VALGRIND_CHECK_MEM_IS_DEFINED(addr, size) do {} while (0) #define VALGRIND_CREATE_MEMPOOL(context, redzones, zeroed) do {} while (0) #define VALGRIND_DESTROY_MEMPOOL(context) do {} while (0) #define VALGRIND_MAKE_MEM_DEFINED(addr, size) do {} while (0) #define VALGRIND_MAKE_MEM_NOACCESS(addr, size) do {} while (0) #define VALGRIND_MAKE_MEM_UNDEFINED(addr, size) do {} while (0) #define VALGRIND_MEMPOOL_ALLOC(context, addr, size) do {} while (0) #define VALGRIND_MEMPOOL_FREE(context, addr) do {} while (0) #define VALGRIND_MEMPOOL_CHANGE(context, optr, nptr, size) do {} while (0) #endif #ifdef CLOBBER_FREED_MEMORY /* Wipe freed memory for debugging purposes */ static inline void wipe_mem(void *ptr, size_t size) { VALGRIND_MAKE_MEM_UNDEFINED(ptr, size); memset(ptr, 0x7F, size); VALGRIND_MAKE_MEM_NOACCESS(ptr, size); } #endif /* CLOBBER_FREED_MEMORY */ #ifdef MEMORY_CONTEXT_CHECKING static inline void set_sentinel(void *base, Size offset) { char *ptr = (char *) base + offset; VALGRIND_MAKE_MEM_UNDEFINED(ptr, 1); *ptr = 0x7E; VALGRIND_MAKE_MEM_NOACCESS(ptr, 1); } static inline bool sentinel_ok(const void *base, Size offset) { const char *ptr = (const char *) base + offset; bool ret; VALGRIND_MAKE_MEM_DEFINED(ptr, 1); ret = *ptr == 0x7E; VALGRIND_MAKE_MEM_NOACCESS(ptr, 1); return ret; } #endif /* MEMORY_CONTEXT_CHECKING */ #ifdef RANDOMIZE_ALLOCATED_MEMORY void randomize_mem(char *ptr, size_t size); #endif /* RANDOMIZE_ALLOCATED_MEMORY */ #endif /* MEMDEBUG_H */ libpg_query-13-2.1.0/src/postgres/include/utils/memutils.h000066400000000000000000000172561413137616400235260ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * memutils.h * This file contains declarations for memory allocation utility * functions. These are functions that are not quite widely used * enough to justify going in utils/palloc.h, but are still part * of the API of the memory management subsystem. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/memutils.h * *------------------------------------------------------------------------- */ #ifndef MEMUTILS_H #define MEMUTILS_H #include "nodes/memnodes.h" /* * MaxAllocSize, MaxAllocHugeSize * Quasi-arbitrary limits on size of allocations. * * Note: * There is no guarantee that smaller allocations will succeed, but * larger requests will be summarily denied. * * palloc() enforces MaxAllocSize, chosen to correspond to the limiting size * of varlena objects under TOAST. See VARSIZE_4B() and related macros in * postgres.h. Many datatypes assume that any allocatable size can be * represented in a varlena header. This limit also permits a caller to use * an "int" variable for an index into or length of an allocation. Callers * careful to avoid these hazards can access the higher limit with * MemoryContextAllocHuge(). Both limits permit code to assume that it may * compute twice an allocation's size without overflow. */ #define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */ #define AllocSizeIsValid(size) ((Size) (size) <= MaxAllocSize) #define MaxAllocHugeSize (SIZE_MAX / 2) #define AllocHugeSizeIsValid(size) ((Size) (size) <= MaxAllocHugeSize) /* * Standard top-level memory contexts. * * Only TopMemoryContext and ErrorContext are initialized by * MemoryContextInit() itself. */ extern PGDLLIMPORT __thread MemoryContext TopMemoryContext; extern PGDLLIMPORT __thread MemoryContext ErrorContext; extern PGDLLIMPORT MemoryContext PostmasterContext; extern PGDLLIMPORT MemoryContext CacheMemoryContext; extern PGDLLIMPORT MemoryContext MessageContext; extern PGDLLIMPORT MemoryContext TopTransactionContext; extern PGDLLIMPORT MemoryContext CurTransactionContext; /* This is a transient link to the active portal's memory context: */ extern PGDLLIMPORT MemoryContext PortalContext; /* Backwards compatibility macro */ #define MemoryContextResetAndDeleteChildren(ctx) MemoryContextReset(ctx) /* * Memory-context-type-independent functions in mcxt.c */ extern void MemoryContextInit(void); extern void MemoryContextReset(MemoryContext context); extern void MemoryContextDelete(MemoryContext context); extern void MemoryContextResetOnly(MemoryContext context); extern void MemoryContextResetChildren(MemoryContext context); extern void MemoryContextDeleteChildren(MemoryContext context); extern void MemoryContextSetIdentifier(MemoryContext context, const char *id); extern void MemoryContextSetParent(MemoryContext context, MemoryContext new_parent); extern Size GetMemoryChunkSpace(void *pointer); extern MemoryContext MemoryContextGetParent(MemoryContext context); extern bool MemoryContextIsEmpty(MemoryContext context); extern Size MemoryContextMemAllocated(MemoryContext context, bool recurse); extern void MemoryContextStats(MemoryContext context); extern void MemoryContextStatsDetail(MemoryContext context, int max_children); extern void MemoryContextAllowInCriticalSection(MemoryContext context, bool allow); #ifdef MEMORY_CONTEXT_CHECKING extern void MemoryContextCheck(MemoryContext context); #endif extern bool MemoryContextContains(MemoryContext context, void *pointer); /* Handy macro for copying and assigning context ID ... but note double eval */ #define MemoryContextCopyAndSetIdentifier(cxt, id) \ MemoryContextSetIdentifier(cxt, MemoryContextStrdup(cxt, id)) /* * GetMemoryChunkContext * Given a currently-allocated chunk, determine the context * it belongs to. * * All chunks allocated by any memory context manager are required to be * preceded by the corresponding MemoryContext stored, without padding, in the * preceding sizeof(void*) bytes. A currently-allocated chunk must contain a * backpointer to its owning context. The backpointer is used by pfree() and * repalloc() to find the context to call. */ #ifndef FRONTEND static inline MemoryContext GetMemoryChunkContext(void *pointer) { MemoryContext context; /* * Try to detect bogus pointers handed to us, poorly though we can. * Presumably, a pointer that isn't MAXALIGNED isn't pointing at an * allocated chunk. */ Assert(pointer != NULL); Assert(pointer == (void *) MAXALIGN(pointer)); /* * OK, it's probably safe to look at the context. */ context = *(MemoryContext *) (((char *) pointer) - sizeof(void *)); AssertArg(MemoryContextIsValid(context)); return context; } #endif /* * This routine handles the context-type-independent part of memory * context creation. It's intended to be called from context-type- * specific creation routines, and noplace else. */ extern void MemoryContextCreate(MemoryContext node, NodeTag tag, const MemoryContextMethods *methods, MemoryContext parent, const char *name); /* * Memory-context-type-specific functions */ /* aset.c */ extern MemoryContext AllocSetContextCreateInternal(MemoryContext parent, const char *name, Size minContextSize, Size initBlockSize, Size maxBlockSize); extern void AllocSetDeleteFreeList(MemoryContext context); /* * This wrapper macro exists to check for non-constant strings used as context * names; that's no longer supported. (Use MemoryContextSetIdentifier if you * want to provide a variable identifier.) */ #ifdef HAVE__BUILTIN_CONSTANT_P #define AllocSetContextCreate(parent, name, ...) \ (StaticAssertExpr(__builtin_constant_p(name), \ "memory context names must be constant strings"), \ AllocSetContextCreateInternal(parent, name, __VA_ARGS__)) #else #define AllocSetContextCreate \ AllocSetContextCreateInternal #endif /* slab.c */ extern MemoryContext SlabContextCreate(MemoryContext parent, const char *name, Size blockSize, Size chunkSize); /* generation.c */ extern MemoryContext GenerationContextCreate(MemoryContext parent, const char *name, Size blockSize); /* * Recommended default alloc parameters, suitable for "ordinary" contexts * that might hold quite a lot of data. */ #define ALLOCSET_DEFAULT_MINSIZE 0 #define ALLOCSET_DEFAULT_INITSIZE (8 * 1024) #define ALLOCSET_DEFAULT_MAXSIZE (8 * 1024 * 1024) #define ALLOCSET_DEFAULT_SIZES \ ALLOCSET_DEFAULT_MINSIZE, ALLOCSET_DEFAULT_INITSIZE, ALLOCSET_DEFAULT_MAXSIZE /* * Recommended alloc parameters for "small" contexts that are never expected * to contain much data (for example, a context to contain a query plan). */ #define ALLOCSET_SMALL_MINSIZE 0 #define ALLOCSET_SMALL_INITSIZE (1 * 1024) #define ALLOCSET_SMALL_MAXSIZE (8 * 1024) #define ALLOCSET_SMALL_SIZES \ ALLOCSET_SMALL_MINSIZE, ALLOCSET_SMALL_INITSIZE, ALLOCSET_SMALL_MAXSIZE /* * Recommended alloc parameters for contexts that should start out small, * but might sometimes grow big. */ #define ALLOCSET_START_SMALL_SIZES \ ALLOCSET_SMALL_MINSIZE, ALLOCSET_SMALL_INITSIZE, ALLOCSET_DEFAULT_MAXSIZE /* * Threshold above which a request in an AllocSet context is certain to be * allocated separately (and thereby have constant allocation overhead). * Few callers should be interested in this, but tuplesort/tuplestore need * to know it. */ #define ALLOCSET_SEPARATE_THRESHOLD 8192 #define SLAB_DEFAULT_BLOCK_SIZE (8 * 1024) #define SLAB_LARGE_BLOCK_SIZE (8 * 1024 * 1024) #endif /* MEMUTILS_H */ libpg_query-13-2.1.0/src/postgres/include/utils/numeric.h000066400000000000000000000047151413137616400233250ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * numeric.h * Definitions for the exact numeric data type of Postgres * * Original coding 1998, Jan Wieck. Heavily revised 2003, Tom Lane. * * Copyright (c) 1998-2020, PostgreSQL Global Development Group * * src/include/utils/numeric.h * *------------------------------------------------------------------------- */ #ifndef _PG_NUMERIC_H_ #define _PG_NUMERIC_H_ #include "fmgr.h" /* * Limit on the precision (and hence scale) specifiable in a NUMERIC typmod. * Note that the implementation limit on the length of a numeric value is * much larger --- beware of what you use this for! */ #define NUMERIC_MAX_PRECISION 1000 /* * Internal limits on the scales chosen for calculation results */ #define NUMERIC_MAX_DISPLAY_SCALE NUMERIC_MAX_PRECISION #define NUMERIC_MIN_DISPLAY_SCALE 0 #define NUMERIC_MAX_RESULT_SCALE (NUMERIC_MAX_PRECISION * 2) /* * For inherently inexact calculations such as division and square root, * we try to get at least this many significant digits; the idea is to * deliver a result no worse than float8 would. */ #define NUMERIC_MIN_SIG_DIGITS 16 /* The actual contents of Numeric are private to numeric.c */ struct NumericData; typedef struct NumericData *Numeric; /* * fmgr interface macros */ #define DatumGetNumeric(X) ((Numeric) PG_DETOAST_DATUM(X)) #define DatumGetNumericCopy(X) ((Numeric) PG_DETOAST_DATUM_COPY(X)) #define NumericGetDatum(X) PointerGetDatum(X) #define PG_GETARG_NUMERIC(n) DatumGetNumeric(PG_GETARG_DATUM(n)) #define PG_GETARG_NUMERIC_COPY(n) DatumGetNumericCopy(PG_GETARG_DATUM(n)) #define PG_RETURN_NUMERIC(x) return NumericGetDatum(x) /* * Utility functions in numeric.c */ extern bool numeric_is_nan(Numeric num); int32 numeric_maximum_size(int32 typmod); extern char *numeric_out_sci(Numeric num, int scale); extern char *numeric_normalize(Numeric num); extern Numeric numeric_add_opt_error(Numeric num1, Numeric num2, bool *have_error); extern Numeric numeric_sub_opt_error(Numeric num1, Numeric num2, bool *have_error); extern Numeric numeric_mul_opt_error(Numeric num1, Numeric num2, bool *have_error); extern Numeric numeric_div_opt_error(Numeric num1, Numeric num2, bool *have_error); extern Numeric numeric_mod_opt_error(Numeric num1, Numeric num2, bool *have_error); extern int32 numeric_int4_opt_error(Numeric num, bool *error); #endif /* _PG_NUMERIC_H_ */ libpg_query-13-2.1.0/src/postgres/include/utils/palloc.h000066400000000000000000000121471413137616400231330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * palloc.h * POSTGRES memory allocator definitions. * * This file contains the basic memory allocation interface that is * needed by almost every backend module. It is included directly by * postgres.h, so the definitions here are automatically available * everywhere. Keep it lean! * * Memory allocation occurs within "contexts". Every chunk obtained from * palloc()/MemoryContextAlloc() is allocated within a specific context. * The entire contents of a context can be freed easily and quickly by * resetting or deleting the context --- this is both faster and less * prone to memory-leakage bugs than releasing chunks individually. * We organize contexts into context trees to allow fine-grain control * over chunk lifetime while preserving the certainty that we will free * everything that should be freed. See utils/mmgr/README for more info. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/palloc.h * *------------------------------------------------------------------------- */ #ifndef PALLOC_H #define PALLOC_H /* * Type MemoryContextData is declared in nodes/memnodes.h. Most users * of memory allocation should just treat it as an abstract type, so we * do not provide the struct contents here. */ typedef struct MemoryContextData *MemoryContext; /* * A memory context can have callback functions registered on it. Any such * function will be called once just before the context is next reset or * deleted. The MemoryContextCallback struct describing such a callback * typically would be allocated within the context itself, thereby avoiding * any need to manage it explicitly (the reset/delete action will free it). */ typedef void (*MemoryContextCallbackFunction) (void *arg); typedef struct MemoryContextCallback { MemoryContextCallbackFunction func; /* function to call */ void *arg; /* argument to pass it */ struct MemoryContextCallback *next; /* next in list of callbacks */ } MemoryContextCallback; /* * CurrentMemoryContext is the default allocation context for palloc(). * Avoid accessing it directly! Instead, use MemoryContextSwitchTo() * to change the setting. */ extern PGDLLIMPORT __thread MemoryContext CurrentMemoryContext; /* * Flags for MemoryContextAllocExtended. */ #define MCXT_ALLOC_HUGE 0x01 /* allow huge allocation (> 1 GB) */ #define MCXT_ALLOC_NO_OOM 0x02 /* no failure if out-of-memory */ #define MCXT_ALLOC_ZERO 0x04 /* zero allocated memory */ /* * Fundamental memory-allocation operations (more are in utils/memutils.h) */ extern void *MemoryContextAlloc(MemoryContext context, Size size); extern void *MemoryContextAllocZero(MemoryContext context, Size size); extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size); extern void *MemoryContextAllocExtended(MemoryContext context, Size size, int flags); extern void *palloc(Size size); extern void *palloc0(Size size); extern void *palloc_extended(Size size, int flags); extern void *repalloc(void *pointer, Size size); extern void pfree(void *pointer); /* * The result of palloc() is always word-aligned, so we can skip testing * alignment of the pointer when deciding which MemSet variant to use. * Note that this variant does not offer any advantage, and should not be * used, unless its "sz" argument is a compile-time constant; therefore, the * issue that it evaluates the argument multiple times isn't a problem in * practice. */ #define palloc0fast(sz) \ ( MemSetTest(0, sz) ? \ MemoryContextAllocZeroAligned(CurrentMemoryContext, sz) : \ MemoryContextAllocZero(CurrentMemoryContext, sz) ) /* Higher-limit allocators. */ extern void *MemoryContextAllocHuge(MemoryContext context, Size size); extern void *repalloc_huge(void *pointer, Size size); /* * Although this header file is nominally backend-only, certain frontend * programs like pg_controldata include it via postgres.h. For some compilers * it's necessary to hide the inline definition of MemoryContextSwitchTo in * this scenario; hence the #ifndef FRONTEND. */ #ifndef FRONTEND static inline MemoryContext MemoryContextSwitchTo(MemoryContext context) { MemoryContext old = CurrentMemoryContext; CurrentMemoryContext = context; return old; } #endif /* FRONTEND */ /* Registration of memory context reset/delete callbacks */ extern void MemoryContextRegisterResetCallback(MemoryContext context, MemoryContextCallback *cb); /* * These are like standard strdup() except the copied string is * allocated in a context, not with malloc(). */ extern char *MemoryContextStrdup(MemoryContext context, const char *string); extern char *pstrdup(const char *in); extern char *pnstrdup(const char *in, Size len); extern char *pchomp(const char *in); /* sprintf into a palloc'd buffer --- these are in psprintf.c */ extern char *psprintf(const char *fmt,...) pg_attribute_printf(1, 2); extern size_t pvsnprintf(char *buf, size_t len, const char *fmt, va_list args) pg_attribute_printf(3, 0); #endif /* PALLOC_H */ libpg_query-13-2.1.0/src/postgres/include/utils/partcache.h000066400000000000000000000044721413137616400236150ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * partcache.h * * Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/include/utils/partcache.h * *------------------------------------------------------------------------- */ #ifndef PARTCACHE_H #define PARTCACHE_H #include "access/attnum.h" #include "fmgr.h" #include "nodes/pg_list.h" #include "nodes/primnodes.h" #include "partitioning/partdefs.h" #include "utils/relcache.h" /* * Information about the partition key of a relation */ typedef struct PartitionKeyData { char strategy; /* partitioning strategy */ int16 partnatts; /* number of columns in the partition key */ AttrNumber *partattrs; /* attribute numbers of columns in the * partition key or 0 if it's an expr */ List *partexprs; /* list of expressions in the partitioning * key, one for each zero-valued partattrs */ Oid *partopfamily; /* OIDs of operator families */ Oid *partopcintype; /* OIDs of opclass declared input data types */ FmgrInfo *partsupfunc; /* lookup info for support funcs */ /* Partitioning collation per attribute */ Oid *partcollation; /* Type information per attribute */ Oid *parttypid; int32 *parttypmod; int16 *parttyplen; bool *parttypbyval; char *parttypalign; Oid *parttypcoll; } PartitionKeyData; extern PartitionKey RelationGetPartitionKey(Relation rel); extern List *RelationGetPartitionQual(Relation rel); extern Expr *get_partition_qual_relid(Oid relid); /* * PartitionKey inquiry functions */ static inline int get_partition_strategy(PartitionKey key) { return key->strategy; } static inline int get_partition_natts(PartitionKey key) { return key->partnatts; } static inline List * get_partition_exprs(PartitionKey key) { return key->partexprs; } /* * PartitionKey inquiry functions - one column */ static inline int16 get_partition_col_attnum(PartitionKey key, int col) { return key->partattrs[col]; } static inline Oid get_partition_col_typid(PartitionKey key, int col) { return key->parttypid[col]; } static inline int32 get_partition_col_typmod(PartitionKey key, int col) { return key->parttypmod[col]; } static inline Oid get_partition_col_collation(PartitionKey key, int col) { return key->partcollation[col]; } #endif /* PARTCACHE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/pg_locale.h000066400000000000000000000066741413137616400236160ustar00rootroot00000000000000/*----------------------------------------------------------------------- * * PostgreSQL locale utilities * * src/include/utils/pg_locale.h * * Copyright (c) 2002-2020, PostgreSQL Global Development Group * *----------------------------------------------------------------------- */ #ifndef _PG_LOCALE_ #define _PG_LOCALE_ #if defined(LOCALE_T_IN_XLOCALE) || defined(WCSTOMBS_L_IN_XLOCALE) #include #endif #ifdef USE_ICU #include #endif #include "utils/guc.h" #ifdef USE_ICU /* * ucol_strcollUTF8() was introduced in ICU 50, but it is buggy before ICU 53. * (see * ) */ #if U_ICU_VERSION_MAJOR_NUM >= 53 #define HAVE_UCOL_STRCOLLUTF8 1 #else #undef HAVE_UCOL_STRCOLLUTF8 #endif #endif /* GUC settings */ extern char *locale_messages; extern char *locale_monetary; extern char *locale_numeric; extern char *locale_time; /* lc_time localization cache */ extern char *localized_abbrev_days[]; extern char *localized_full_days[]; extern char *localized_abbrev_months[]; extern char *localized_full_months[]; extern bool check_locale_messages(char **newval, void **extra, GucSource source); extern void assign_locale_messages(const char *newval, void *extra); extern bool check_locale_monetary(char **newval, void **extra, GucSource source); extern void assign_locale_monetary(const char *newval, void *extra); extern bool check_locale_numeric(char **newval, void **extra, GucSource source); extern void assign_locale_numeric(const char *newval, void *extra); extern bool check_locale_time(char **newval, void **extra, GucSource source); extern void assign_locale_time(const char *newval, void *extra); extern bool check_locale(int category, const char *locale, char **canonname); extern char *pg_perm_setlocale(int category, const char *locale); extern void check_strxfrm_bug(void); extern bool lc_collate_is_c(Oid collation); extern bool lc_ctype_is_c(Oid collation); /* * Return the POSIX lconv struct (contains number/money formatting * information) with locale information for all categories. */ extern struct lconv *PGLC_localeconv(void); extern void cache_locale_time(void); /* * We define our own wrapper around locale_t so we can keep the same * function signatures for all builds, while not having to create a * fake version of the standard type locale_t in the global namespace. * pg_locale_t is occasionally checked for truth, so make it a pointer. */ struct pg_locale_struct { char provider; bool deterministic; union { #ifdef HAVE_LOCALE_T locale_t lt; #endif #ifdef USE_ICU struct { const char *locale; UCollator *ucol; } icu; #endif int dummy; /* in case we have neither LOCALE_T nor ICU */ } info; }; typedef struct pg_locale_struct *pg_locale_t; extern pg_locale_t pg_newlocale_from_collation(Oid collid); extern char *get_collation_actual_version(char collprovider, const char *collcollate); #ifdef USE_ICU extern int32_t icu_to_uchar(UChar **buff_uchar, const char *buff, size_t nbytes); extern int32_t icu_from_uchar(char **result, const UChar *buff_uchar, int32_t len_uchar); #endif /* These functions convert from/to libc's wchar_t, *not* pg_wchar_t */ extern size_t wchar2char(char *to, const wchar_t *from, size_t tolen, pg_locale_t locale); extern size_t char2wchar(wchar_t *to, size_t tolen, const char *from, size_t fromlen, pg_locale_t locale); #endif /* _PG_LOCALE_ */ libpg_query-13-2.1.0/src/postgres/include/utils/pg_lsn.h000066400000000000000000000015101413137616400231330ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pg_lsn.h * Declarations for operations on log sequence numbers (LSNs) of * PostgreSQL. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/pg_lsn.h * *------------------------------------------------------------------------- */ #ifndef PG_LSN_H #define PG_LSN_H #include "access/xlogdefs.h" #include "fmgr.h" #define DatumGetLSN(X) ((XLogRecPtr) DatumGetInt64(X)) #define LSNGetDatum(X) (Int64GetDatum((int64) (X))) #define PG_GETARG_LSN(n) DatumGetLSN(PG_GETARG_DATUM(n)) #define PG_RETURN_LSN(x) return LSNGetDatum(x) extern XLogRecPtr pg_lsn_in_internal(const char *str, bool *have_error); #endif /* PG_LSN_H */ libpg_query-13-2.1.0/src/postgres/include/utils/pidfile.h000066400000000000000000000041011413137616400232640ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * pidfile.h * Declarations describing the data directory lock file (postmaster.pid) * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/pidfile.h * *------------------------------------------------------------------------- */ #ifndef UTILS_PIDFILE_H #define UTILS_PIDFILE_H /* * As of Postgres 10, the contents of the data-directory lock file are: * * line # * 1 postmaster PID (or negative of a standalone backend's PID) * 2 data directory path * 3 postmaster start timestamp (time_t representation) * 4 port number * 5 first Unix socket directory path (empty if none) * 6 first listen_address (IP address or "*"; empty if no TCP port) * 7 shared memory key (empty on Windows) * 8 postmaster status (see values below) * * Lines 6 and up are added via AddToDataDirLockFile() after initial file * creation; also, line 5 is initially empty and is changed after the first * Unix socket is opened. Onlookers should not assume that lines 4 and up * are filled in any particular order. * * Socket lock file(s), if used, have the same contents as lines 1-5, with * line 5 being their own directory. */ #define LOCK_FILE_LINE_PID 1 #define LOCK_FILE_LINE_DATA_DIR 2 #define LOCK_FILE_LINE_START_TIME 3 #define LOCK_FILE_LINE_PORT 4 #define LOCK_FILE_LINE_SOCKET_DIR 5 #define LOCK_FILE_LINE_LISTEN_ADDR 6 #define LOCK_FILE_LINE_SHMEM_KEY 7 #define LOCK_FILE_LINE_PM_STATUS 8 /* * The PM_STATUS line may contain one of these values. All these strings * must be the same length, per comments for AddToDataDirLockFile(). * We pad with spaces as needed to make that true. */ #define PM_STATUS_STARTING "starting" /* still starting up */ #define PM_STATUS_STOPPING "stopping" /* in shutdown sequence */ #define PM_STATUS_READY "ready " /* ready for connections */ #define PM_STATUS_STANDBY "standby " /* up, won't accept connections */ #endif /* UTILS_PIDFILE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/plancache.h000066400000000000000000000250051413137616400235740ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * plancache.h * Plan cache definitions. * * See plancache.c for comments. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/plancache.h * *------------------------------------------------------------------------- */ #ifndef PLANCACHE_H #define PLANCACHE_H #include "access/tupdesc.h" #include "lib/ilist.h" #include "nodes/params.h" #include "tcop/cmdtag.h" #include "utils/queryenvironment.h" #include "utils/resowner.h" /* Forward declaration, to avoid including parsenodes.h here */ struct RawStmt; /* possible values for plan_cache_mode */ typedef enum { PLAN_CACHE_MODE_AUTO, PLAN_CACHE_MODE_FORCE_GENERIC_PLAN, PLAN_CACHE_MODE_FORCE_CUSTOM_PLAN } PlanCacheMode; /* GUC parameter */ extern int plan_cache_mode; #define CACHEDPLANSOURCE_MAGIC 195726186 #define CACHEDPLAN_MAGIC 953717834 #define CACHEDEXPR_MAGIC 838275847 /* * CachedPlanSource (which might better have been called CachedQuery) * represents a SQL query that we expect to use multiple times. It stores * the query source text, the raw parse tree, and the analyzed-and-rewritten * query tree, as well as adjunct data. Cache invalidation can happen as a * result of DDL affecting objects used by the query. In that case we discard * the analyzed-and-rewritten query tree, and rebuild it when next needed. * * An actual execution plan, represented by CachedPlan, is derived from the * CachedPlanSource when we need to execute the query. The plan could be * either generic (usable with any set of plan parameters) or custom (for a * specific set of parameters). plancache.c contains the logic that decides * which way to do it for any particular execution. If we are using a generic * cached plan then it is meant to be re-used across multiple executions, so * callers must always treat CachedPlans as read-only. * * Once successfully built and "saved", CachedPlanSources typically live * for the life of the backend, although they can be dropped explicitly. * CachedPlans are reference-counted and go away automatically when the last * reference is dropped. A CachedPlan can outlive the CachedPlanSource it * was created from. * * An "unsaved" CachedPlanSource can be used for generating plans, but it * lives in transient storage and will not be updated in response to sinval * events. * * CachedPlans made from saved CachedPlanSources are likewise in permanent * storage, so to avoid memory leaks, the reference-counted references to them * must be held in permanent data structures or ResourceOwners. CachedPlans * made from unsaved CachedPlanSources are in children of the caller's * memory context, so references to them should not be longer-lived than * that context. (Reference counting is somewhat pro forma in that case, * though it may be useful if the CachedPlan can be discarded early.) * * A CachedPlanSource has two associated memory contexts: one that holds the * struct itself, the query source text and the raw parse tree, and another * context that holds the rewritten query tree and associated data. This * allows the query tree to be discarded easily when it is invalidated. * * Some callers wish to use the CachedPlan API even with one-shot queries * that have no reason to be saved at all. We therefore support a "oneshot" * variant that does no data copying or invalidation checking. In this case * there are no separate memory contexts: the CachedPlanSource struct and * all subsidiary data live in the caller's CurrentMemoryContext, and there * is no way to free memory short of clearing that entire context. A oneshot * plan is always treated as unsaved. * * Note: the string referenced by commandTag is not subsidiary storage; * it is assumed to be a compile-time-constant string. As with portals, * commandTag shall be NULL if and only if the original query string (before * rewriting) was an empty string. */ typedef struct CachedPlanSource { int magic; /* should equal CACHEDPLANSOURCE_MAGIC */ struct RawStmt *raw_parse_tree; /* output of raw_parser(), or NULL */ const char *query_string; /* source text of query */ CommandTag commandTag; /* 'nuff said */ Oid *param_types; /* array of parameter type OIDs, or NULL */ int num_params; /* length of param_types array */ ParserSetupHook parserSetup; /* alternative parameter spec method */ void *parserSetupArg; int cursor_options; /* cursor options used for planning */ bool fixed_result; /* disallow change in result tupdesc? */ TupleDesc resultDesc; /* result type; NULL = doesn't return tuples */ MemoryContext context; /* memory context holding all above */ /* These fields describe the current analyzed-and-rewritten query tree: */ List *query_list; /* list of Query nodes, or NIL if not valid */ List *relationOids; /* OIDs of relations the queries depend on */ List *invalItems; /* other dependencies, as PlanInvalItems */ struct OverrideSearchPath *search_path; /* search_path used for parsing * and planning */ MemoryContext query_context; /* context holding the above, or NULL */ Oid rewriteRoleId; /* Role ID we did rewriting for */ bool rewriteRowSecurity; /* row_security used during rewrite */ bool dependsOnRLS; /* is rewritten query specific to the above? */ /* If we have a generic plan, this is a reference-counted link to it: */ struct CachedPlan *gplan; /* generic plan, or NULL if not valid */ /* Some state flags: */ bool is_oneshot; /* is it a "oneshot" plan? */ bool is_complete; /* has CompleteCachedPlan been done? */ bool is_saved; /* has CachedPlanSource been "saved"? */ bool is_valid; /* is the query_list currently valid? */ int generation; /* increments each time we create a plan */ /* If CachedPlanSource has been saved, it is a member of a global list */ dlist_node node; /* list link, if is_saved */ /* State kept to help decide whether to use custom or generic plans: */ double generic_cost; /* cost of generic plan, or -1 if not known */ double total_custom_cost; /* total cost of custom plans so far */ int num_custom_plans; /* number of plans included in total */ } CachedPlanSource; /* * CachedPlan represents an execution plan derived from a CachedPlanSource. * The reference count includes both the link from the parent CachedPlanSource * (if any), and any active plan executions, so the plan can be discarded * exactly when refcount goes to zero. Both the struct itself and the * subsidiary data live in the context denoted by the context field. * This makes it easy to free a no-longer-needed cached plan. (However, * if is_oneshot is true, the context does not belong solely to the CachedPlan * so no freeing is possible.) */ typedef struct CachedPlan { int magic; /* should equal CACHEDPLAN_MAGIC */ List *stmt_list; /* list of PlannedStmts */ bool is_oneshot; /* is it a "oneshot" plan? */ bool is_saved; /* is CachedPlan in a long-lived context? */ bool is_valid; /* is the stmt_list currently valid? */ Oid planRoleId; /* Role ID the plan was created for */ bool dependsOnRole; /* is plan specific to that role? */ TransactionId saved_xmin; /* if valid, replan when TransactionXmin * changes from this value */ int generation; /* parent's generation number for this plan */ int refcount; /* count of live references to this struct */ MemoryContext context; /* context containing this CachedPlan */ } CachedPlan; /* * CachedExpression is a low-overhead mechanism for caching the planned form * of standalone scalar expressions. While such expressions are not usually * subject to cache invalidation events, that can happen, for example because * of replacement of a SQL function that was inlined into the expression. * The plancache takes care of storing the expression tree and marking it * invalid if a cache invalidation occurs, but the caller must notice the * !is_valid status and discard the obsolete expression without reusing it. * We do not store the original parse tree, only the planned expression; * this is an optimization based on the assumption that we usually will not * need to replan for the life of the session. */ typedef struct CachedExpression { int magic; /* should equal CACHEDEXPR_MAGIC */ Node *expr; /* planned form of expression */ bool is_valid; /* is the expression still valid? */ /* remaining fields should be treated as private to plancache.c: */ List *relationOids; /* OIDs of relations the expr depends on */ List *invalItems; /* other dependencies, as PlanInvalItems */ MemoryContext context; /* context containing this CachedExpression */ dlist_node node; /* link in global list of CachedExpressions */ } CachedExpression; extern void InitPlanCache(void); extern void ResetPlanCache(void); extern CachedPlanSource *CreateCachedPlan(struct RawStmt *raw_parse_tree, const char *query_string, CommandTag commandTag); extern CachedPlanSource *CreateOneShotCachedPlan(struct RawStmt *raw_parse_tree, const char *query_string, CommandTag commandTag); extern void CompleteCachedPlan(CachedPlanSource *plansource, List *querytree_list, MemoryContext querytree_context, Oid *param_types, int num_params, ParserSetupHook parserSetup, void *parserSetupArg, int cursor_options, bool fixed_result); extern void SaveCachedPlan(CachedPlanSource *plansource); extern void DropCachedPlan(CachedPlanSource *plansource); extern void CachedPlanSetParentContext(CachedPlanSource *plansource, MemoryContext newcontext); extern CachedPlanSource *CopyCachedPlan(CachedPlanSource *plansource); extern bool CachedPlanIsValid(CachedPlanSource *plansource); extern List *CachedPlanGetTargetList(CachedPlanSource *plansource, QueryEnvironment *queryEnv); extern CachedPlan *GetCachedPlan(CachedPlanSource *plansource, ParamListInfo boundParams, bool useResOwner, QueryEnvironment *queryEnv); extern void ReleaseCachedPlan(CachedPlan *plan, bool useResOwner); extern bool CachedPlanAllowsSimpleValidityCheck(CachedPlanSource *plansource, CachedPlan *plan, ResourceOwner owner); extern bool CachedPlanIsSimplyValid(CachedPlanSource *plansource, CachedPlan *plan, ResourceOwner owner); extern CachedExpression *GetCachedExpression(Node *expr); extern void FreeCachedExpression(CachedExpression *cexpr); #endif /* PLANCACHE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/portal.h000066400000000000000000000234461413137616400231660ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * portal.h * POSTGRES portal definitions. * * A portal is an abstraction which represents the execution state of * a running or runnable query. Portals support both SQL-level CURSORs * and protocol-level portals. * * Scrolling (nonsequential access) and suspension of execution are allowed * only for portals that contain a single SELECT-type query. We do not want * to let the client suspend an update-type query partway through! Because * the query rewriter does not allow arbitrary ON SELECT rewrite rules, * only queries that were originally update-type could produce multiple * plan trees; so the restriction to a single query is not a problem * in practice. * * For SQL cursors, we support three kinds of scroll behavior: * * (1) Neither NO SCROLL nor SCROLL was specified: to remain backward * compatible, we allow backward fetches here, unless it would * impose additional runtime overhead to do so. * * (2) NO SCROLL was specified: don't allow any backward fetches. * * (3) SCROLL was specified: allow all kinds of backward fetches, even * if we need to take a performance hit to do so. (The planner sticks * a Materialize node atop the query plan if needed.) * * Case #1 is converted to #2 or #3 by looking at the query itself and * determining if scrollability can be supported without additional * overhead. * * Protocol-level portals have no nonsequential-fetch API and so the * distinction doesn't matter for them. They are always initialized * to look like NO SCROLL cursors. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/portal.h * *------------------------------------------------------------------------- */ #ifndef PORTAL_H #define PORTAL_H #include "datatype/timestamp.h" #include "executor/execdesc.h" #include "tcop/cmdtag.h" #include "utils/plancache.h" #include "utils/resowner.h" /* * We have several execution strategies for Portals, depending on what * query or queries are to be executed. (Note: in all cases, a Portal * executes just a single source-SQL query, and thus produces just a * single result from the user's viewpoint. However, the rule rewriter * may expand the single source query to zero or many actual queries.) * * PORTAL_ONE_SELECT: the portal contains one single SELECT query. We run * the Executor incrementally as results are demanded. This strategy also * supports holdable cursors (the Executor results can be dumped into a * tuplestore for access after transaction completion). * * PORTAL_ONE_RETURNING: the portal contains a single INSERT/UPDATE/DELETE * query with a RETURNING clause (plus possibly auxiliary queries added by * rule rewriting). On first execution, we run the portal to completion * and dump the primary query's results into the portal tuplestore; the * results are then returned to the client as demanded. (We can't support * suspension of the query partway through, because the AFTER TRIGGER code * can't cope, and also because we don't want to risk failing to execute * all the auxiliary queries.) * * PORTAL_ONE_MOD_WITH: the portal contains one single SELECT query, but * it has data-modifying CTEs. This is currently treated the same as the * PORTAL_ONE_RETURNING case because of the possibility of needing to fire * triggers. It may act more like PORTAL_ONE_SELECT in future. * * PORTAL_UTIL_SELECT: the portal contains a utility statement that returns * a SELECT-like result (for example, EXPLAIN or SHOW). On first execution, * we run the statement and dump its results into the portal tuplestore; * the results are then returned to the client as demanded. * * PORTAL_MULTI_QUERY: all other cases. Here, we do not support partial * execution: the portal's queries will be run to completion on first call. */ typedef enum PortalStrategy { PORTAL_ONE_SELECT, PORTAL_ONE_RETURNING, PORTAL_ONE_MOD_WITH, PORTAL_UTIL_SELECT, PORTAL_MULTI_QUERY } PortalStrategy; /* * A portal is always in one of these states. It is possible to transit * from ACTIVE back to READY if the query is not run to completion; * otherwise we never back up in status. */ typedef enum PortalStatus { PORTAL_NEW, /* freshly created */ PORTAL_DEFINED, /* PortalDefineQuery done */ PORTAL_READY, /* PortalStart complete, can run it */ PORTAL_ACTIVE, /* portal is running (can't delete it) */ PORTAL_DONE, /* portal is finished (don't re-run it) */ PORTAL_FAILED /* portal got error (can't re-run it) */ } PortalStatus; typedef struct PortalData *Portal; typedef struct PortalData { /* Bookkeeping data */ const char *name; /* portal's name */ const char *prepStmtName; /* source prepared statement (NULL if none) */ MemoryContext portalContext; /* subsidiary memory for portal */ ResourceOwner resowner; /* resources owned by portal */ void (*cleanup) (Portal portal); /* cleanup hook */ /* * State data for remembering which subtransaction(s) the portal was * created or used in. If the portal is held over from a previous * transaction, both subxids are InvalidSubTransactionId. Otherwise, * createSubid is the creating subxact and activeSubid is the last subxact * in which we ran the portal. */ SubTransactionId createSubid; /* the creating subxact */ SubTransactionId activeSubid; /* the last subxact with activity */ /* The query or queries the portal will execute */ const char *sourceText; /* text of query (as of 8.4, never NULL) */ CommandTag commandTag; /* command tag for original query */ QueryCompletion qc; /* command completion data for executed query */ List *stmts; /* list of PlannedStmts */ CachedPlan *cplan; /* CachedPlan, if stmts are from one */ ParamListInfo portalParams; /* params to pass to query */ QueryEnvironment *queryEnv; /* environment for query */ /* Features/options */ PortalStrategy strategy; /* see above */ int cursorOptions; /* DECLARE CURSOR option bits */ bool run_once; /* portal will only be run once */ /* Status data */ PortalStatus status; /* see above */ bool portalPinned; /* a pinned portal can't be dropped */ bool autoHeld; /* was automatically converted from pinned to * held (see HoldPinnedPortals()) */ /* If not NULL, Executor is active; call ExecutorEnd eventually: */ QueryDesc *queryDesc; /* info needed for executor invocation */ /* If portal returns tuples, this is their tupdesc: */ TupleDesc tupDesc; /* descriptor for result tuples */ /* and these are the format codes to use for the columns: */ int16 *formats; /* a format code for each column */ /* * Where we store tuples for a held cursor or a PORTAL_ONE_RETURNING or * PORTAL_UTIL_SELECT query. (A cursor held past the end of its * transaction no longer has any active executor state.) */ Tuplestorestate *holdStore; /* store for holdable cursors */ MemoryContext holdContext; /* memory containing holdStore */ /* * Snapshot under which tuples in the holdStore were read. We must keep a * reference to this snapshot if there is any possibility that the tuples * contain TOAST references, because releasing the snapshot could allow * recently-dead rows to be vacuumed away, along with any toast data * belonging to them. In the case of a held cursor, we avoid needing to * keep such a snapshot by forcibly detoasting the data. */ Snapshot holdSnapshot; /* registered snapshot, or NULL if none */ /* * atStart, atEnd and portalPos indicate the current cursor position. * portalPos is zero before the first row, N after fetching N'th row of * query. After we run off the end, portalPos = # of rows in query, and * atEnd is true. Note that atStart implies portalPos == 0, but not the * reverse: we might have backed up only as far as the first row, not to * the start. Also note that various code inspects atStart and atEnd, but * only the portal movement routines should touch portalPos. */ bool atStart; bool atEnd; uint64 portalPos; /* Presentation data, primarily used by the pg_cursors system view */ TimestampTz creation_time; /* time at which this portal was defined */ bool visible; /* include this portal in pg_cursors? */ } PortalData; /* * PortalIsValid * True iff portal is valid. */ #define PortalIsValid(p) PointerIsValid(p) /* Prototypes for functions in utils/mmgr/portalmem.c */ extern void EnablePortalManager(void); extern bool PreCommit_Portals(bool isPrepare); extern void AtAbort_Portals(void); extern void AtCleanup_Portals(void); extern void PortalErrorCleanup(void); extern void AtSubCommit_Portals(SubTransactionId mySubid, SubTransactionId parentSubid, ResourceOwner parentXactOwner); extern void AtSubAbort_Portals(SubTransactionId mySubid, SubTransactionId parentSubid, ResourceOwner myXactOwner, ResourceOwner parentXactOwner); extern void AtSubCleanup_Portals(SubTransactionId mySubid); extern Portal CreatePortal(const char *name, bool allowDup, bool dupSilent); extern Portal CreateNewPortal(void); extern void PinPortal(Portal portal); extern void UnpinPortal(Portal portal); extern void MarkPortalActive(Portal portal); extern void MarkPortalDone(Portal portal); extern void MarkPortalFailed(Portal portal); extern void PortalDrop(Portal portal, bool isTopCommit); extern Portal GetPortalByName(const char *name); extern void PortalDefineQuery(Portal portal, const char *prepStmtName, const char *sourceText, CommandTag commandTag, List *stmts, CachedPlan *cplan); extern PlannedStmt *PortalGetPrimaryStmt(Portal portal); extern void PortalCreateHoldStore(Portal portal); extern void PortalHashTableDeleteAll(void); extern bool ThereAreNoReadyPortals(void); extern void HoldPinnedPortals(void); #endif /* PORTAL_H */ libpg_query-13-2.1.0/src/postgres/include/utils/probes.h000066400000000000000000000166201413137616400231530ustar00rootroot00000000000000#define TRACE_POSTGRESQL_TRANSACTION_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_TRANSACTION_START_ENABLED() (0) #define TRACE_POSTGRESQL_TRANSACTION_COMMIT(INT1) do {} while (0) #define TRACE_POSTGRESQL_TRANSACTION_COMMIT_ENABLED() (0) #define TRACE_POSTGRESQL_TRANSACTION_ABORT(INT1) do {} while (0) #define TRACE_POSTGRESQL_TRANSACTION_ABORT_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_RELEASE(INT1) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_RELEASE_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_WAIT_START(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_WAIT_START_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_WAIT_DONE(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_WAIT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_FAIL(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_CONDACQUIRE_FAIL_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE_OR_WAIT(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE_OR_WAIT_ENABLED() (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE_OR_WAIT_FAIL(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_LWLOCK_ACQUIRE_OR_WAIT_FAIL_ENABLED() (0) #define TRACE_POSTGRESQL_LOCK_WAIT_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_LOCK_WAIT_START_ENABLED() (0) #define TRACE_POSTGRESQL_LOCK_WAIT_DONE(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_LOCK_WAIT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_PARSE_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_PARSE_START_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_PARSE_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_PARSE_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_REWRITE_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_REWRITE_START_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_REWRITE_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_REWRITE_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_PLAN_START() do {} while (0) #define TRACE_POSTGRESQL_QUERY_PLAN_START_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_PLAN_DONE() do {} while (0) #define TRACE_POSTGRESQL_QUERY_PLAN_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_EXECUTE_START() do {} while (0) #define TRACE_POSTGRESQL_QUERY_EXECUTE_START_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_EXECUTE_DONE() do {} while (0) #define TRACE_POSTGRESQL_QUERY_EXECUTE_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_START_ENABLED() (0) #define TRACE_POSTGRESQL_QUERY_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_QUERY_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_STATEMENT_STATUS(INT1) do {} while (0) #define TRACE_POSTGRESQL_STATEMENT_STATUS_ENABLED() (0) #define TRACE_POSTGRESQL_SORT_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_SORT_START_ENABLED() (0) #define TRACE_POSTGRESQL_SORT_DONE(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_SORT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_READ_START(INT1, INT2, INT3, INT4, INT5, INT6, INT7) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_READ_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_READ_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7, INT8) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_READ_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_FLUSH_START(INT1, INT2, INT3, INT4, INT5) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_FLUSH_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_FLUSH_DONE(INT1, INT2, INT3, INT4, INT5) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_FLUSH_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START() do {} while (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_DONE() do {} while (0) #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_START(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_WRITTEN(INT1) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_WRITTEN_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_DONE(INT1, INT2, INT3) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_SYNC_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START(INT1, INT2, INT3, INT4, INT5) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START_ENABLED() (0) #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE(INT1, INT2, INT3, INT4, INT5) do {} while (0) #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_DEADLOCK_FOUND() do {} while (0) #define TRACE_POSTGRESQL_DEADLOCK_FOUND_ENABLED() (0) #define TRACE_POSTGRESQL_CHECKPOINT_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_CHECKPOINT_DONE(INT1, INT2, INT3, INT4, INT5) do {} while (0) #define TRACE_POSTGRESQL_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_CLOG_CHECKPOINT_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_CLOG_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_CLOG_CHECKPOINT_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_CLOG_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_SUBTRANS_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_START(INT1) do {} while (0) #define TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_DONE(INT1) do {} while (0) #define TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_START() do {} while (0) #define TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_START_ENABLED() (0) #define TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_DONE() do {} while (0) #define TRACE_POSTGRESQL_TWOPHASE_CHECKPOINT_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_SMGR_MD_READ_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_SMGR_MD_READ_START_ENABLED() (0) #define TRACE_POSTGRESQL_SMGR_MD_READ_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7, INT8) do {} while (0) #define TRACE_POSTGRESQL_SMGR_MD_READ_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_SMGR_MD_WRITE_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0) #define TRACE_POSTGRESQL_SMGR_MD_WRITE_START_ENABLED() (0) #define TRACE_POSTGRESQL_SMGR_MD_WRITE_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7, INT8) do {} while (0) #define TRACE_POSTGRESQL_SMGR_MD_WRITE_DONE_ENABLED() (0) #define TRACE_POSTGRESQL_WAL_INSERT(INT1, INT2) do {} while (0) #define TRACE_POSTGRESQL_WAL_INSERT_ENABLED() (0) #define TRACE_POSTGRESQL_WAL_SWITCH() do {} while (0) #define TRACE_POSTGRESQL_WAL_SWITCH_ENABLED() (0) #define TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_START() do {} while (0) #define TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_START_ENABLED() (0) #define TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_DONE() do {} while (0) #define TRACE_POSTGRESQL_WAL_BUFFER_WRITE_DIRTY_DONE_ENABLED() (0) libpg_query-13-2.1.0/src/postgres/include/utils/ps_status.h000066400000000000000000000011161413137616400237000ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * ps_status.h * * Declarations for backend/utils/misc/ps_status.c * * src/include/utils/ps_status.h * *------------------------------------------------------------------------- */ #ifndef PS_STATUS_H #define PS_STATUS_H extern bool update_process_title; extern char **save_ps_display_args(int argc, char **argv); extern void init_ps_display(const char *fixed_part); extern void set_ps_display(const char *activity); extern const char *get_ps_display(int *displen); #endif /* PS_STATUS_H */ libpg_query-13-2.1.0/src/postgres/include/utils/queryenvironment.h000066400000000000000000000053721413137616400253150ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * queryenvironment.h * Access to functions to mutate the query environment and retrieve the * actual data related to entries (if any). * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/queryenvironment.h * *------------------------------------------------------------------------- */ #ifndef QUERYENVIRONMENT_H #define QUERYENVIRONMENT_H #include "access/tupdesc.h" typedef enum EphemeralNameRelationType { ENR_NAMED_TUPLESTORE /* named tuplestore relation; e.g., deltas */ } EphemeralNameRelationType; /* * Some ephemeral named relations must match some relation (e.g., trigger * transition tables), so to properly handle cached plans and DDL, we should * carry the OID of that relation. In other cases an ENR might be independent * of any relation which is stored in the system catalogs, so we need to be * able to directly store the TupleDesc. We never need both. */ typedef struct EphemeralNamedRelationMetadataData { char *name; /* name used to identify the relation */ /* only one of the next two fields should be used */ Oid reliddesc; /* oid of relation to get tupdesc */ TupleDesc tupdesc; /* description of result rows */ EphemeralNameRelationType enrtype; /* to identify type of relation */ double enrtuples; /* estimated number of tuples */ } EphemeralNamedRelationMetadataData; typedef EphemeralNamedRelationMetadataData *EphemeralNamedRelationMetadata; /* * Ephemeral Named Relation data; used for parsing named relations not in the * catalog, like transition tables in AFTER triggers. */ typedef struct EphemeralNamedRelationData { EphemeralNamedRelationMetadataData md; void *reldata; /* structure for execution-time access to data */ } EphemeralNamedRelationData; typedef EphemeralNamedRelationData *EphemeralNamedRelation; /* * This is an opaque structure outside of queryenvironment.c itself. The * intention is to be able to change the implementation or add new context * features without needing to change existing code for use of existing * features. */ typedef struct QueryEnvironment QueryEnvironment; extern QueryEnvironment *create_queryEnv(void); extern EphemeralNamedRelationMetadata get_visible_ENR_metadata(QueryEnvironment *queryEnv, const char *refname); extern void register_ENR(QueryEnvironment *queryEnv, EphemeralNamedRelation enr); extern void unregister_ENR(QueryEnvironment *queryEnv, const char *name); extern EphemeralNamedRelation get_ENR(QueryEnvironment *queryEnv, const char *name); extern TupleDesc ENRMetadataGetTupDesc(EphemeralNamedRelationMetadata enrmd); #endif /* QUERYENVIRONMENT_H */ libpg_query-13-2.1.0/src/postgres/include/utils/regproc.h000066400000000000000000000017131413137616400233170ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * regproc.h * Functions for the built-in types regproc, regclass, regtype, etc. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/regproc.h * *------------------------------------------------------------------------- */ #ifndef REGPROC_H #define REGPROC_H #include "nodes/pg_list.h" extern List *stringToQualifiedNameList(const char *string); extern char *format_procedure(Oid procedure_oid); extern char *format_procedure_qualified(Oid procedure_oid); extern void format_procedure_parts(Oid operator_oid, List **objnames, List **objargs); extern char *format_operator(Oid operator_oid); extern char *format_operator_qualified(Oid operator_oid); extern void format_operator_parts(Oid operator_oid, List **objnames, List **objargs); #endif libpg_query-13-2.1.0/src/postgres/include/utils/rel.h000066400000000000000000000546061413137616400224510ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * rel.h * POSTGRES relation descriptor (a/k/a relcache entry) definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/rel.h * *------------------------------------------------------------------------- */ #ifndef REL_H #define REL_H #include "access/tupdesc.h" #include "access/xlog.h" #include "catalog/pg_class.h" #include "catalog/pg_index.h" #include "catalog/pg_publication.h" #include "nodes/bitmapset.h" #include "partitioning/partdefs.h" #include "rewrite/prs2lock.h" #include "storage/block.h" #include "storage/relfilenode.h" #include "utils/relcache.h" #include "utils/reltrigger.h" /* * LockRelId and LockInfo really belong to lmgr.h, but it's more convenient * to declare them here so we can have a LockInfoData field in a Relation. */ typedef struct LockRelId { Oid relId; /* a relation identifier */ Oid dbId; /* a database identifier */ } LockRelId; typedef struct LockInfoData { LockRelId lockRelId; } LockInfoData; typedef LockInfoData *LockInfo; /* * Here are the contents of a relation cache entry. */ typedef struct RelationData { RelFileNode rd_node; /* relation physical identifier */ /* use "struct" here to avoid needing to include smgr.h: */ struct SMgrRelationData *rd_smgr; /* cached file handle, or NULL */ int rd_refcnt; /* reference count */ BackendId rd_backend; /* owning backend id, if temporary relation */ bool rd_islocaltemp; /* rel is a temp rel of this session */ bool rd_isnailed; /* rel is nailed in cache */ bool rd_isvalid; /* relcache entry is valid */ bool rd_indexvalid; /* is rd_indexlist valid? (also rd_pkindex and * rd_replidindex) */ bool rd_statvalid; /* is rd_statlist valid? */ /*---------- * rd_createSubid is the ID of the highest subtransaction the rel has * survived into or zero if the rel or its rd_node was created before the * current top transaction. (IndexStmt.oldNode leads to the case of a new * rel with an old rd_node.) rd_firstRelfilenodeSubid is the ID of the * highest subtransaction an rd_node change has survived into or zero if * rd_node matches the value it had at the start of the current top * transaction. (Rolling back the subtransaction that * rd_firstRelfilenodeSubid denotes would restore rd_node to the value it * had at the start of the current top transaction. Rolling back any * lower subtransaction would not.) Their accuracy is critical to * RelationNeedsWAL(). * * rd_newRelfilenodeSubid is the ID of the highest subtransaction the * most-recent relfilenode change has survived into or zero if not changed * in the current transaction (or we have forgotten changing it). This * field is accurate when non-zero, but it can be zero when a relation has * multiple new relfilenodes within a single transaction, with one of them * occurring in a subsequently aborted subtransaction, e.g. * BEGIN; * TRUNCATE t; * SAVEPOINT save; * TRUNCATE t; * ROLLBACK TO save; * -- rd_newRelfilenodeSubid is now forgotten * * If every rd_*Subid field is zero, they are read-only outside * relcache.c. Files that trigger rd_node changes by updating * pg_class.reltablespace and/or pg_class.relfilenode call * RelationAssumeNewRelfilenode() to update rd_*Subid. * * rd_droppedSubid is the ID of the highest subtransaction that a drop of * the rel has survived into. In entries visible outside relcache.c, this * is always zero. */ SubTransactionId rd_createSubid; /* rel was created in current xact */ SubTransactionId rd_newRelfilenodeSubid; /* highest subxact changing * rd_node to current value */ SubTransactionId rd_firstRelfilenodeSubid; /* highest subxact changing * rd_node to any value */ SubTransactionId rd_droppedSubid; /* dropped with another Subid set */ Form_pg_class rd_rel; /* RELATION tuple */ TupleDesc rd_att; /* tuple descriptor */ Oid rd_id; /* relation's object id */ LockInfoData rd_lockInfo; /* lock mgr's info for locking relation */ RuleLock *rd_rules; /* rewrite rules */ MemoryContext rd_rulescxt; /* private memory cxt for rd_rules, if any */ TriggerDesc *trigdesc; /* Trigger info, or NULL if rel has none */ /* use "struct" here to avoid needing to include rowsecurity.h: */ struct RowSecurityDesc *rd_rsdesc; /* row security policies, or NULL */ /* data managed by RelationGetFKeyList: */ List *rd_fkeylist; /* list of ForeignKeyCacheInfo (see below) */ bool rd_fkeyvalid; /* true if list has been computed */ /* data managed by RelationGetPartitionKey: */ PartitionKey rd_partkey; /* partition key, or NULL */ MemoryContext rd_partkeycxt; /* private context for rd_partkey, if any */ /* data managed by RelationGetPartitionDesc: */ PartitionDesc rd_partdesc; /* partition descriptor, or NULL */ MemoryContext rd_pdcxt; /* private context for rd_partdesc, if any */ /* data managed by RelationGetPartitionQual: */ List *rd_partcheck; /* partition CHECK quals */ bool rd_partcheckvalid; /* true if list has been computed */ MemoryContext rd_partcheckcxt; /* private cxt for rd_partcheck, if any */ /* data managed by RelationGetIndexList: */ List *rd_indexlist; /* list of OIDs of indexes on relation */ Oid rd_pkindex; /* OID of primary key, if any */ Oid rd_replidindex; /* OID of replica identity index, if any */ /* data managed by RelationGetStatExtList: */ List *rd_statlist; /* list of OIDs of extended stats */ /* data managed by RelationGetIndexAttrBitmap: */ Bitmapset *rd_indexattr; /* identifies columns used in indexes */ Bitmapset *rd_keyattr; /* cols that can be ref'd by foreign keys */ Bitmapset *rd_pkattr; /* cols included in primary key */ Bitmapset *rd_idattr; /* included in replica identity index */ PublicationActions *rd_pubactions; /* publication actions */ /* * rd_options is set whenever rd_rel is loaded into the relcache entry. * Note that you can NOT look into rd_rel for this data. NULL means "use * defaults". */ bytea *rd_options; /* parsed pg_class.reloptions */ /* * Oid of the handler for this relation. For an index this is a function * returning IndexAmRoutine, for table like relations a function returning * TableAmRoutine. This is stored separately from rd_indam, rd_tableam as * its lookup requires syscache access, but during relcache bootstrap we * need to be able to initialize rd_tableam without syscache lookups. */ Oid rd_amhandler; /* OID of index AM's handler function */ /* * Table access method. */ const struct TableAmRoutine *rd_tableam; /* These are non-NULL only for an index relation: */ Form_pg_index rd_index; /* pg_index tuple describing this index */ /* use "struct" here to avoid needing to include htup.h: */ struct HeapTupleData *rd_indextuple; /* all of pg_index tuple */ /* * index access support info (used only for an index relation) * * Note: only default support procs for each opclass are cached, namely * those with lefttype and righttype equal to the opclass's opcintype. The * arrays are indexed by support function number, which is a sufficient * identifier given that restriction. */ MemoryContext rd_indexcxt; /* private memory cxt for this stuff */ /* use "struct" here to avoid needing to include amapi.h: */ struct IndexAmRoutine *rd_indam; /* index AM's API struct */ Oid *rd_opfamily; /* OIDs of op families for each index col */ Oid *rd_opcintype; /* OIDs of opclass declared input data types */ RegProcedure *rd_support; /* OIDs of support procedures */ struct FmgrInfo *rd_supportinfo; /* lookup info for support procedures */ int16 *rd_indoption; /* per-column AM-specific flags */ List *rd_indexprs; /* index expression trees, if any */ List *rd_indpred; /* index predicate tree, if any */ Oid *rd_exclops; /* OIDs of exclusion operators, if any */ Oid *rd_exclprocs; /* OIDs of exclusion ops' procs, if any */ uint16 *rd_exclstrats; /* exclusion ops' strategy numbers, if any */ Oid *rd_indcollation; /* OIDs of index collations */ bytea **rd_opcoptions; /* parsed opclass-specific options */ /* * rd_amcache is available for index and table AMs to cache private data * about the relation. This must be just a cache since it may get reset * at any time (in particular, it will get reset by a relcache inval * message for the relation). If used, it must point to a single memory * chunk palloc'd in CacheMemoryContext, or in rd_indexcxt for an index * relation. A relcache reset will include freeing that chunk and setting * rd_amcache = NULL. */ void *rd_amcache; /* available for use by index/table AM */ /* * foreign-table support * * rd_fdwroutine must point to a single memory chunk palloc'd in * CacheMemoryContext. It will be freed and reset to NULL on a relcache * reset. */ /* use "struct" here to avoid needing to include fdwapi.h: */ struct FdwRoutine *rd_fdwroutine; /* cached function pointers, or NULL */ /* * Hack for CLUSTER, rewriting ALTER TABLE, etc: when writing a new * version of a table, we need to make any toast pointers inserted into it * have the existing toast table's OID, not the OID of the transient toast * table. If rd_toastoid isn't InvalidOid, it is the OID to place in * toast pointers inserted into this rel. (Note it's set on the new * version of the main heap, not the toast table itself.) This also * causes toast_save_datum() to try to preserve toast value OIDs. */ Oid rd_toastoid; /* Real TOAST table's OID, or InvalidOid */ /* use "struct" here to avoid needing to include pgstat.h: */ struct PgStat_TableStatus *pgstat_info; /* statistics collection area */ } RelationData; /* * ForeignKeyCacheInfo * Information the relcache can cache about foreign key constraints * * This is basically just an image of relevant columns from pg_constraint. * We make it a subclass of Node so that copyObject() can be used on a list * of these, but we also ensure it is a "flat" object without substructure, * so that list_free_deep() is sufficient to free such a list. * The per-FK-column arrays can be fixed-size because we allow at most * INDEX_MAX_KEYS columns in a foreign key constraint. * * Currently, we mostly cache fields of interest to the planner, but the set * of fields has already grown the constraint OID for other uses. */ typedef struct ForeignKeyCacheInfo { NodeTag type; Oid conoid; /* oid of the constraint itself */ Oid conrelid; /* relation constrained by the foreign key */ Oid confrelid; /* relation referenced by the foreign key */ int nkeys; /* number of columns in the foreign key */ /* these arrays each have nkeys valid entries: */ AttrNumber conkey[INDEX_MAX_KEYS]; /* cols in referencing table */ AttrNumber confkey[INDEX_MAX_KEYS]; /* cols in referenced table */ Oid conpfeqop[INDEX_MAX_KEYS]; /* PK = FK operator OIDs */ } ForeignKeyCacheInfo; /* * StdRdOptions * Standard contents of rd_options for heaps. * * RelationGetFillFactor() and RelationGetTargetPageFreeSpace() can only * be applied to relations that use this format or a superset for * private options data. */ /* autovacuum-related reloptions. */ typedef struct AutoVacOpts { bool enabled; int vacuum_threshold; int vacuum_ins_threshold; int analyze_threshold; int vacuum_cost_limit; int freeze_min_age; int freeze_max_age; int freeze_table_age; int multixact_freeze_min_age; int multixact_freeze_max_age; int multixact_freeze_table_age; int log_min_duration; float8 vacuum_cost_delay; float8 vacuum_scale_factor; float8 vacuum_ins_scale_factor; float8 analyze_scale_factor; } AutoVacOpts; typedef struct StdRdOptions { int32 vl_len_; /* varlena header (do not touch directly!) */ int fillfactor; /* page fill factor in percent (0..100) */ /* fraction of newly inserted tuples prior to trigger index cleanup */ int toast_tuple_target; /* target for tuple toasting */ AutoVacOpts autovacuum; /* autovacuum-related options */ bool user_catalog_table; /* use as an additional catalog relation */ int parallel_workers; /* max number of parallel workers */ bool vacuum_index_cleanup; /* enables index vacuuming and cleanup */ bool vacuum_truncate; /* enables vacuum to truncate a relation */ } StdRdOptions; #define HEAP_MIN_FILLFACTOR 10 #define HEAP_DEFAULT_FILLFACTOR 100 /* * RelationGetToastTupleTarget * Returns the relation's toast_tuple_target. Note multiple eval of argument! */ #define RelationGetToastTupleTarget(relation, defaulttarg) \ ((relation)->rd_options ? \ ((StdRdOptions *) (relation)->rd_options)->toast_tuple_target : (defaulttarg)) /* * RelationGetFillFactor * Returns the relation's fillfactor. Note multiple eval of argument! */ #define RelationGetFillFactor(relation, defaultff) \ ((relation)->rd_options ? \ ((StdRdOptions *) (relation)->rd_options)->fillfactor : (defaultff)) /* * RelationGetTargetPageUsage * Returns the relation's desired space usage per page in bytes. */ #define RelationGetTargetPageUsage(relation, defaultff) \ (BLCKSZ * RelationGetFillFactor(relation, defaultff) / 100) /* * RelationGetTargetPageFreeSpace * Returns the relation's desired freespace per page in bytes. */ #define RelationGetTargetPageFreeSpace(relation, defaultff) \ (BLCKSZ * (100 - RelationGetFillFactor(relation, defaultff)) / 100) /* * RelationIsUsedAsCatalogTable * Returns whether the relation should be treated as a catalog table * from the pov of logical decoding. Note multiple eval of argument! */ #define RelationIsUsedAsCatalogTable(relation) \ ((relation)->rd_options && \ ((relation)->rd_rel->relkind == RELKIND_RELATION || \ (relation)->rd_rel->relkind == RELKIND_MATVIEW) ? \ ((StdRdOptions *) (relation)->rd_options)->user_catalog_table : false) /* * RelationGetParallelWorkers * Returns the relation's parallel_workers reloption setting. * Note multiple eval of argument! */ #define RelationGetParallelWorkers(relation, defaultpw) \ ((relation)->rd_options ? \ ((StdRdOptions *) (relation)->rd_options)->parallel_workers : (defaultpw)) /* ViewOptions->check_option values */ typedef enum ViewOptCheckOption { VIEW_OPTION_CHECK_OPTION_NOT_SET, VIEW_OPTION_CHECK_OPTION_LOCAL, VIEW_OPTION_CHECK_OPTION_CASCADED } ViewOptCheckOption; /* * ViewOptions * Contents of rd_options for views */ typedef struct ViewOptions { int32 vl_len_; /* varlena header (do not touch directly!) */ bool security_barrier; ViewOptCheckOption check_option; } ViewOptions; /* * RelationIsSecurityView * Returns whether the relation is security view, or not. Note multiple * eval of argument! */ #define RelationIsSecurityView(relation) \ (AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \ (relation)->rd_options ? \ ((ViewOptions *) (relation)->rd_options)->security_barrier : false) /* * RelationHasCheckOption * Returns true if the relation is a view defined with either the local * or the cascaded check option. Note multiple eval of argument! */ #define RelationHasCheckOption(relation) \ (AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \ (relation)->rd_options && \ ((ViewOptions *) (relation)->rd_options)->check_option != \ VIEW_OPTION_CHECK_OPTION_NOT_SET) /* * RelationHasLocalCheckOption * Returns true if the relation is a view defined with the local check * option. Note multiple eval of argument! */ #define RelationHasLocalCheckOption(relation) \ (AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \ (relation)->rd_options && \ ((ViewOptions *) (relation)->rd_options)->check_option == \ VIEW_OPTION_CHECK_OPTION_LOCAL) /* * RelationHasCascadedCheckOption * Returns true if the relation is a view defined with the cascaded check * option. Note multiple eval of argument! */ #define RelationHasCascadedCheckOption(relation) \ (AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \ (relation)->rd_options && \ ((ViewOptions *) (relation)->rd_options)->check_option == \ VIEW_OPTION_CHECK_OPTION_CASCADED) /* * RelationIsValid * True iff relation descriptor is valid. */ #define RelationIsValid(relation) PointerIsValid(relation) #define InvalidRelation ((Relation) NULL) /* * RelationHasReferenceCountZero * True iff relation reference count is zero. * * Note: * Assumes relation descriptor is valid. */ #define RelationHasReferenceCountZero(relation) \ ((bool)((relation)->rd_refcnt == 0)) /* * RelationGetForm * Returns pg_class tuple for a relation. * * Note: * Assumes relation descriptor is valid. */ #define RelationGetForm(relation) ((relation)->rd_rel) /* * RelationGetRelid * Returns the OID of the relation */ #define RelationGetRelid(relation) ((relation)->rd_id) /* * RelationGetNumberOfAttributes * Returns the total number of attributes in a relation. */ #define RelationGetNumberOfAttributes(relation) ((relation)->rd_rel->relnatts) /* * IndexRelationGetNumberOfAttributes * Returns the number of attributes in an index. */ #define IndexRelationGetNumberOfAttributes(relation) \ ((relation)->rd_index->indnatts) /* * IndexRelationGetNumberOfKeyAttributes * Returns the number of key attributes in an index. */ #define IndexRelationGetNumberOfKeyAttributes(relation) \ ((relation)->rd_index->indnkeyatts) /* * RelationGetDescr * Returns tuple descriptor for a relation. */ #define RelationGetDescr(relation) ((relation)->rd_att) /* * RelationGetRelationName * Returns the rel's name. * * Note that the name is only unique within the containing namespace. */ #define RelationGetRelationName(relation) \ (NameStr((relation)->rd_rel->relname)) /* * RelationGetNamespace * Returns the rel's namespace OID. */ #define RelationGetNamespace(relation) \ ((relation)->rd_rel->relnamespace) /* * RelationIsMapped * True if the relation uses the relfilenode map. Note multiple eval * of argument! */ #define RelationIsMapped(relation) \ (RELKIND_HAS_STORAGE((relation)->rd_rel->relkind) && \ ((relation)->rd_rel->relfilenode == InvalidOid)) /* * RelationOpenSmgr * Open the relation at the smgr level, if not already done. */ #define RelationOpenSmgr(relation) \ do { \ if ((relation)->rd_smgr == NULL) \ smgrsetowner(&((relation)->rd_smgr), smgropen((relation)->rd_node, (relation)->rd_backend)); \ } while (0) /* * RelationCloseSmgr * Close the relation at the smgr level, if not already done. * * Note: smgrclose should unhook from owner pointer, hence the Assert. */ #define RelationCloseSmgr(relation) \ do { \ if ((relation)->rd_smgr != NULL) \ { \ smgrclose((relation)->rd_smgr); \ Assert((relation)->rd_smgr == NULL); \ } \ } while (0) /* * RelationGetTargetBlock * Fetch relation's current insertion target block. * * Returns InvalidBlockNumber if there is no current target block. Note * that the target block status is discarded on any smgr-level invalidation. */ #define RelationGetTargetBlock(relation) \ ( (relation)->rd_smgr != NULL ? (relation)->rd_smgr->smgr_targblock : InvalidBlockNumber ) /* * RelationSetTargetBlock * Set relation's current insertion target block. */ #define RelationSetTargetBlock(relation, targblock) \ do { \ RelationOpenSmgr(relation); \ (relation)->rd_smgr->smgr_targblock = (targblock); \ } while (0) /* * RelationNeedsWAL * True if relation needs WAL. * * Returns false if wal_level = minimal and this relation is created or * truncated in the current transaction. See "Skipping WAL for New * RelFileNode" in src/backend/access/transam/README. */ #define RelationNeedsWAL(relation) \ ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT && \ (XLogIsNeeded() || \ (relation->rd_createSubid == InvalidSubTransactionId && \ relation->rd_firstRelfilenodeSubid == InvalidSubTransactionId))) /* * RelationUsesLocalBuffers * True if relation's pages are stored in local buffers. */ #define RelationUsesLocalBuffers(relation) \ ((relation)->rd_rel->relpersistence == RELPERSISTENCE_TEMP) /* * RELATION_IS_LOCAL * If a rel is either temp or newly created in the current transaction, * it can be assumed to be accessible only to the current backend. * This is typically used to decide that we can skip acquiring locks. * * Beware of multiple eval of argument */ #define RELATION_IS_LOCAL(relation) \ ((relation)->rd_islocaltemp || \ (relation)->rd_createSubid != InvalidSubTransactionId) /* * RELATION_IS_OTHER_TEMP * Test for a temporary relation that belongs to some other session. * * Beware of multiple eval of argument */ #define RELATION_IS_OTHER_TEMP(relation) \ ((relation)->rd_rel->relpersistence == RELPERSISTENCE_TEMP && \ !(relation)->rd_islocaltemp) /* * RelationIsScannable * Currently can only be false for a materialized view which has not been * populated by its query. This is likely to get more complicated later, * so use a macro which looks like a function. */ #define RelationIsScannable(relation) ((relation)->rd_rel->relispopulated) /* * RelationIsPopulated * Currently, we don't physically distinguish the "populated" and * "scannable" properties of matviews, but that may change later. * Hence, use the appropriate one of these macros in code tests. */ #define RelationIsPopulated(relation) ((relation)->rd_rel->relispopulated) /* * RelationIsAccessibleInLogicalDecoding * True if we need to log enough information to have access via * decoding snapshot. */ #define RelationIsAccessibleInLogicalDecoding(relation) \ (XLogLogicalInfoActive() && \ RelationNeedsWAL(relation) && \ (IsCatalogRelation(relation) || RelationIsUsedAsCatalogTable(relation))) /* * RelationIsLogicallyLogged * True if we need to log enough information to extract the data from the * WAL stream. * * We don't log information for unlogged tables (since they don't WAL log * anyway) and for system tables (their content is hard to make sense of, and * it would complicate decoding slightly for little gain). Note that we *do* * log information for user defined catalog tables since they presumably are * interesting to the user... */ #define RelationIsLogicallyLogged(relation) \ (XLogLogicalInfoActive() && \ RelationNeedsWAL(relation) && \ !IsCatalogRelation(relation)) /* routines in utils/cache/relcache.c */ extern void RelationIncrementReferenceCount(Relation rel); extern void RelationDecrementReferenceCount(Relation rel); #endif /* REL_H */ libpg_query-13-2.1.0/src/postgres/include/utils/relcache.h000066400000000000000000000111311413137616400234170ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * relcache.h * Relation descriptor cache definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/relcache.h * *------------------------------------------------------------------------- */ #ifndef RELCACHE_H #define RELCACHE_H #include "postgres.h" #include "access/tupdesc.h" #include "nodes/bitmapset.h" /* * Name of relcache init file(s), used to speed up backend startup */ #define RELCACHE_INIT_FILENAME "pg_internal.init" typedef struct RelationData *Relation; /* ---------------- * RelationPtr is used in the executor to support index scans * where we have to keep track of several index relations in an * array. -cim 9/10/89 * ---------------- */ typedef Relation *RelationPtr; /* * Routines to open (lookup) and close a relcache entry */ extern Relation RelationIdGetRelation(Oid relationId); extern void RelationClose(Relation relation); /* * Routines to compute/retrieve additional cached information */ extern List *RelationGetFKeyList(Relation relation); extern List *RelationGetIndexList(Relation relation); extern List *RelationGetStatExtList(Relation relation); extern Oid RelationGetPrimaryKeyIndex(Relation relation); extern Oid RelationGetReplicaIndex(Relation relation); extern List *RelationGetIndexExpressions(Relation relation); extern List *RelationGetDummyIndexExpressions(Relation relation); extern List *RelationGetIndexPredicate(Relation relation); extern Datum *RelationGetIndexRawAttOptions(Relation relation); extern bytea **RelationGetIndexAttOptions(Relation relation, bool copy); typedef enum IndexAttrBitmapKind { INDEX_ATTR_BITMAP_ALL, INDEX_ATTR_BITMAP_KEY, INDEX_ATTR_BITMAP_PRIMARY_KEY, INDEX_ATTR_BITMAP_IDENTITY_KEY } IndexAttrBitmapKind; extern Bitmapset *RelationGetIndexAttrBitmap(Relation relation, IndexAttrBitmapKind attrKind); extern void RelationGetExclusionInfo(Relation indexRelation, Oid **operators, Oid **procs, uint16 **strategies); extern void RelationInitIndexAccessInfo(Relation relation); /* caller must include pg_publication.h */ struct PublicationActions; extern struct PublicationActions *GetRelationPublicationActions(Relation relation); extern void RelationInitTableAccessMethod(Relation relation); /* * Routines to support ereport() reports of relation-related errors */ extern int errtable(Relation rel); extern int errtablecol(Relation rel, int attnum); extern int errtablecolname(Relation rel, const char *colname); extern int errtableconstraint(Relation rel, const char *conname); /* * Routines for backend startup */ extern void RelationCacheInitialize(void); extern void RelationCacheInitializePhase2(void); extern void RelationCacheInitializePhase3(void); /* * Routine to create a relcache entry for an about-to-be-created relation */ extern Relation RelationBuildLocalRelation(const char *relname, Oid relnamespace, TupleDesc tupDesc, Oid relid, Oid accessmtd, Oid relfilenode, Oid reltablespace, bool shared_relation, bool mapped_relation, char relpersistence, char relkind); /* * Routines to manage assignment of new relfilenode to a relation */ extern void RelationSetNewRelfilenode(Relation relation, char persistence); extern void RelationAssumeNewRelfilenode(Relation relation); /* * Routines for flushing/rebuilding relcache entries in various scenarios */ extern void RelationForgetRelation(Oid rid); extern void RelationCacheInvalidateEntry(Oid relationId); extern void RelationCacheInvalidate(void); extern void RelationCloseSmgrByOid(Oid relationId); #ifdef USE_ASSERT_CHECKING extern void AssertPendingSyncs_RelationCache(void); #else #define AssertPendingSyncs_RelationCache() do {} while (0) #endif extern void AtEOXact_RelationCache(bool isCommit); extern void AtEOSubXact_RelationCache(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid); /* * Routines to help manage rebuilding of relcache init files */ extern bool RelationIdIsInInitFile(Oid relationId); extern void RelationCacheInitFilePreInvalidate(void); extern void RelationCacheInitFilePostInvalidate(void); extern void RelationCacheInitFileRemove(void); /* should be used only by relcache.c and catcache.c */ extern bool criticalRelcachesBuilt; /* should be used only by relcache.c and postinit.c */ extern bool criticalSharedRelcachesBuilt; #endif /* RELCACHE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/reltrigger.h000066400000000000000000000043221413137616400240230ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * reltrigger.h * POSTGRES relation trigger definitions. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/reltrigger.h * *------------------------------------------------------------------------- */ #ifndef RELTRIGGER_H #define RELTRIGGER_H /* * These struct really belongs to trigger.h, but we put it separately so that * it can be cleanly included in rel.h and other places. */ typedef struct Trigger { Oid tgoid; /* OID of trigger (pg_trigger row) */ /* Remaining fields are copied from pg_trigger, see pg_trigger.h */ char *tgname; Oid tgfoid; int16 tgtype; char tgenabled; bool tgisinternal; bool tgisclone; Oid tgconstrrelid; Oid tgconstrindid; Oid tgconstraint; bool tgdeferrable; bool tginitdeferred; int16 tgnargs; int16 tgnattr; int16 *tgattr; char **tgargs; char *tgqual; char *tgoldtable; char *tgnewtable; } Trigger; typedef struct TriggerDesc { Trigger *triggers; /* array of Trigger structs */ int numtriggers; /* number of array entries */ /* * These flags indicate whether the array contains at least one of each * type of trigger. We use these to skip searching the array if not. */ bool trig_insert_before_row; bool trig_insert_after_row; bool trig_insert_instead_row; bool trig_insert_before_statement; bool trig_insert_after_statement; bool trig_update_before_row; bool trig_update_after_row; bool trig_update_instead_row; bool trig_update_before_statement; bool trig_update_after_statement; bool trig_delete_before_row; bool trig_delete_after_row; bool trig_delete_instead_row; bool trig_delete_before_statement; bool trig_delete_after_statement; /* there are no row-level truncate triggers */ bool trig_truncate_before_statement; bool trig_truncate_after_statement; /* Is there at least one trigger specifying each transition relation? */ bool trig_insert_new_table; bool trig_update_old_table; bool trig_update_new_table; bool trig_delete_old_table; } TriggerDesc; #endif /* RELTRIGGER_H */ libpg_query-13-2.1.0/src/postgres/include/utils/resowner.h000066400000000000000000000054171413137616400235270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * resowner.h * POSTGRES resource owner definitions. * * Query-lifespan resources are tracked by associating them with * ResourceOwner objects. This provides a simple mechanism for ensuring * that such resources are freed at the right time. * See utils/resowner/README for more info. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/resowner.h * *------------------------------------------------------------------------- */ #ifndef RESOWNER_H #define RESOWNER_H /* * ResourceOwner objects are an opaque data structure known only within * resowner.c. */ typedef struct ResourceOwnerData *ResourceOwner; /* * Globally known ResourceOwners */ extern PGDLLIMPORT ResourceOwner CurrentResourceOwner; extern PGDLLIMPORT ResourceOwner CurTransactionResourceOwner; extern PGDLLIMPORT ResourceOwner TopTransactionResourceOwner; extern PGDLLIMPORT ResourceOwner AuxProcessResourceOwner; /* * Resource releasing is done in three phases: pre-locks, locks, and * post-locks. The pre-lock phase must release any resources that are * visible to other backends (such as pinned buffers); this ensures that * when we release a lock that another backend may be waiting on, it will * see us as being fully out of our transaction. The post-lock phase * should be used for backend-internal cleanup. */ typedef enum { RESOURCE_RELEASE_BEFORE_LOCKS, RESOURCE_RELEASE_LOCKS, RESOURCE_RELEASE_AFTER_LOCKS } ResourceReleasePhase; /* * Dynamically loaded modules can get control during ResourceOwnerRelease * by providing a callback of this form. */ typedef void (*ResourceReleaseCallback) (ResourceReleasePhase phase, bool isCommit, bool isTopLevel, void *arg); /* * Functions in resowner.c */ /* generic routines */ extern ResourceOwner ResourceOwnerCreate(ResourceOwner parent, const char *name); extern void ResourceOwnerRelease(ResourceOwner owner, ResourceReleasePhase phase, bool isCommit, bool isTopLevel); extern void ResourceOwnerReleaseAllPlanCacheRefs(ResourceOwner owner); extern void ResourceOwnerDelete(ResourceOwner owner); extern ResourceOwner ResourceOwnerGetParent(ResourceOwner owner); extern void ResourceOwnerNewParent(ResourceOwner owner, ResourceOwner newparent); extern void RegisterResourceReleaseCallback(ResourceReleaseCallback callback, void *arg); extern void UnregisterResourceReleaseCallback(ResourceReleaseCallback callback, void *arg); extern void CreateAuxProcessResourceOwner(void); extern void ReleaseAuxProcessResources(bool isCommit); #endif /* RESOWNER_H */ libpg_query-13-2.1.0/src/postgres/include/utils/rls.h000066400000000000000000000033541413137616400224610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * rls.h * Header file for Row Level Security (RLS) utility commands to be used * with the rowsecurity feature. * * Copyright (c) 2007-2020, PostgreSQL Global Development Group * * src/include/utils/rls.h * *------------------------------------------------------------------------- */ #ifndef RLS_H #define RLS_H /* GUC variable */ extern bool row_security; /* * Used by callers of check_enable_rls. * * RLS could be completely disabled on the tables involved in the query, * which is the simple case, or it may depend on the current environment * (the role which is running the query or the value of the row_security * GUC), or it might be simply enabled as usual. * * If RLS isn't on the table involved then RLS_NONE is returned to indicate * that we don't need to worry about invalidating the query plan for RLS * reasons. If RLS is on the table, but we are bypassing it for now, then * we return RLS_NONE_ENV to indicate that, if the environment changes, * we need to invalidate and replan. Finally, if RLS should be turned on * for the query, then we return RLS_ENABLED, which means we also need to * invalidate if the environment changes. * * Note that RLS_ENABLED will also be returned if noError is true * (indicating that the caller simply want to know if RLS should be applied * for this user but doesn't want an error thrown if it is; this is used * by other error cases where we're just trying to decide if data from the * table should be passed back to the user or not). */ enum CheckEnableRlsResult { RLS_NONE, RLS_NONE_ENV, RLS_ENABLED }; extern int check_enable_rls(Oid relid, Oid checkAsUser, bool noError); #endif /* RLS_H */ libpg_query-13-2.1.0/src/postgres/include/utils/ruleutils.h000066400000000000000000000030631413137616400237060ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * ruleutils.h * Declarations for ruleutils.c * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/ruleutils.h * *------------------------------------------------------------------------- */ #ifndef RULEUTILS_H #define RULEUTILS_H #include "nodes/nodes.h" #include "nodes/parsenodes.h" #include "nodes/pg_list.h" struct Plan; /* avoid including plannodes.h here */ struct PlannedStmt; extern char *pg_get_indexdef_string(Oid indexrelid); extern char *pg_get_indexdef_columns(Oid indexrelid, bool pretty); extern char *pg_get_partkeydef_columns(Oid relid, bool pretty); extern char *pg_get_partconstrdef_string(Oid partitionId, char *aliasname); extern char *pg_get_constraintdef_command(Oid constraintId); extern char *deparse_expression(Node *expr, List *dpcontext, bool forceprefix, bool showimplicit); extern List *deparse_context_for(const char *aliasname, Oid relid); extern List *deparse_context_for_plan_tree(struct PlannedStmt *pstmt, List *rtable_names); extern List *set_deparse_context_plan(List *dpcontext, struct Plan *plan, List *ancestors); extern List *select_rtable_names_for_explain(List *rtable, Bitmapset *rels_used); extern char *generate_collation_name(Oid collid); extern char *generate_opclass_name(Oid opclass); extern char *get_range_partbound_string(List *bound_datums); #endif /* RULEUTILS_H */ libpg_query-13-2.1.0/src/postgres/include/utils/sharedtuplestore.h000066400000000000000000000035631413137616400252600ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sharedtuplestore.h * Simple mechanism for sharing tuples between backends. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/sharedtuplestore.h * *------------------------------------------------------------------------- */ #ifndef SHAREDTUPLESTORE_H #define SHAREDTUPLESTORE_H #include "access/htup.h" #include "storage/fd.h" #include "storage/sharedfileset.h" struct SharedTuplestore; typedef struct SharedTuplestore SharedTuplestore; struct SharedTuplestoreAccessor; typedef struct SharedTuplestoreAccessor SharedTuplestoreAccessor; /* * A flag indicating that the tuplestore will only be scanned once, so backing * files can be unlinked early. */ #define SHARED_TUPLESTORE_SINGLE_PASS 0x01 extern size_t sts_estimate(int participants); extern SharedTuplestoreAccessor *sts_initialize(SharedTuplestore *sts, int participants, int my_participant_number, size_t meta_data_size, int flags, SharedFileSet *fileset, const char *name); extern SharedTuplestoreAccessor *sts_attach(SharedTuplestore *sts, int my_participant_number, SharedFileSet *fileset); extern void sts_end_write(SharedTuplestoreAccessor *accessor); extern void sts_reinitialize(SharedTuplestoreAccessor *accessor); extern void sts_begin_parallel_scan(SharedTuplestoreAccessor *accessor); extern void sts_end_parallel_scan(SharedTuplestoreAccessor *accessor); extern void sts_puttuple(SharedTuplestoreAccessor *accessor, void *meta_data, MinimalTuple tuple); extern MinimalTuple sts_parallel_scan_next(SharedTuplestoreAccessor *accessor, void *meta_data); #endif /* SHAREDTUPLESTORE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/snapmgr.h000066400000000000000000000134441413137616400233310ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * snapmgr.h * POSTGRES snapshot manager * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/snapmgr.h * *------------------------------------------------------------------------- */ #ifndef SNAPMGR_H #define SNAPMGR_H #include "access/transam.h" #include "utils/relcache.h" #include "utils/resowner.h" #include "utils/snapshot.h" /* * The structure used to map times to TransactionId values for the "snapshot * too old" feature must have a few entries at the tail to hold old values; * otherwise the lookup will often fail and the expected early pruning or * vacuum will not usually occur. It is best if this padding is for a number * of minutes greater than a thread would normally be stalled, but it's OK if * early vacuum opportunities are occasionally missed, so there's no need to * use an extreme value or get too fancy. 10 minutes seems plenty. */ #define OLD_SNAPSHOT_PADDING_ENTRIES 10 #define OLD_SNAPSHOT_TIME_MAP_ENTRIES (old_snapshot_threshold + OLD_SNAPSHOT_PADDING_ENTRIES) /* * Common definition of relation properties that allow early pruning/vacuuming * when old_snapshot_threshold >= 0. */ #define RelationAllowsEarlyPruning(rel) \ ( \ (rel)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT \ && !IsCatalogRelation(rel) \ && !RelationIsAccessibleInLogicalDecoding(rel) \ ) #define EarlyPruningEnabled(rel) (old_snapshot_threshold >= 0 && RelationAllowsEarlyPruning(rel)) /* GUC variables */ extern PGDLLIMPORT int old_snapshot_threshold; extern Size SnapMgrShmemSize(void); extern void SnapMgrInit(void); extern TimestampTz GetSnapshotCurrentTimestamp(void); extern TimestampTz GetOldSnapshotThresholdTimestamp(void); extern bool FirstSnapshotSet; extern PGDLLIMPORT TransactionId TransactionXmin; extern PGDLLIMPORT TransactionId RecentXmin; extern PGDLLIMPORT TransactionId RecentGlobalXmin; extern PGDLLIMPORT TransactionId RecentGlobalDataXmin; /* Variables representing various special snapshot semantics */ extern PGDLLIMPORT SnapshotData SnapshotSelfData; extern PGDLLIMPORT SnapshotData SnapshotAnyData; extern PGDLLIMPORT SnapshotData CatalogSnapshotData; #define SnapshotSelf (&SnapshotSelfData) #define SnapshotAny (&SnapshotAnyData) /* * We don't provide a static SnapshotDirty variable because it would be * non-reentrant. Instead, users of that snapshot type should declare a * local variable of type SnapshotData, and initialize it with this macro. */ #define InitDirtySnapshot(snapshotdata) \ ((snapshotdata).snapshot_type = SNAPSHOT_DIRTY) /* * Similarly, some initialization is required for a NonVacuumable snapshot. * The caller must supply the xmin horizon to use (e.g., RecentGlobalXmin). */ #define InitNonVacuumableSnapshot(snapshotdata, xmin_horizon) \ ((snapshotdata).snapshot_type = SNAPSHOT_NON_VACUUMABLE, \ (snapshotdata).xmin = (xmin_horizon)) /* * Similarly, some initialization is required for SnapshotToast. We need * to set lsn and whenTaken correctly to support snapshot_too_old. */ #define InitToastSnapshot(snapshotdata, l, w) \ ((snapshotdata).snapshot_type = SNAPSHOT_TOAST, \ (snapshotdata).lsn = (l), \ (snapshotdata).whenTaken = (w)) /* This macro encodes the knowledge of which snapshots are MVCC-safe */ #define IsMVCCSnapshot(snapshot) \ ((snapshot)->snapshot_type == SNAPSHOT_MVCC || \ (snapshot)->snapshot_type == SNAPSHOT_HISTORIC_MVCC) extern Snapshot GetTransactionSnapshot(void); extern Snapshot GetLatestSnapshot(void); extern void SnapshotSetCommandId(CommandId curcid); extern Snapshot GetOldestSnapshot(void); extern Snapshot GetCatalogSnapshot(Oid relid); extern Snapshot GetNonHistoricCatalogSnapshot(Oid relid); extern void InvalidateCatalogSnapshot(void); extern void InvalidateCatalogSnapshotConditionally(void); extern void PushActiveSnapshot(Snapshot snapshot); extern void PushCopiedSnapshot(Snapshot snapshot); extern void UpdateActiveSnapshotCommandId(void); extern void PopActiveSnapshot(void); extern Snapshot GetActiveSnapshot(void); extern bool ActiveSnapshotSet(void); extern Snapshot RegisterSnapshot(Snapshot snapshot); extern void UnregisterSnapshot(Snapshot snapshot); extern Snapshot RegisterSnapshotOnOwner(Snapshot snapshot, ResourceOwner owner); extern void UnregisterSnapshotFromOwner(Snapshot snapshot, ResourceOwner owner); extern FullTransactionId GetFullRecentGlobalXmin(void); extern void AtSubCommit_Snapshot(int level); extern void AtSubAbort_Snapshot(int level); extern void AtEOXact_Snapshot(bool isCommit, bool resetXmin); extern void ImportSnapshot(const char *idstr); extern bool XactHasExportedSnapshots(void); extern void DeleteAllExportedSnapshotFiles(void); extern bool ThereAreNoPriorRegisteredSnapshots(void); extern TransactionId TransactionIdLimitedForOldSnapshots(TransactionId recentXmin, Relation relation); extern void MaintainOldSnapshotTimeMapping(TimestampTz whenTaken, TransactionId xmin); extern char *ExportSnapshot(Snapshot snapshot); /* * Utility functions for implementing visibility routines in table AMs. */ extern bool XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot); /* Support for catalog timetravel for logical decoding */ struct HTAB; extern struct HTAB *HistoricSnapshotGetTupleCids(void); extern void SetupHistoricSnapshot(Snapshot snapshot_now, struct HTAB *tuplecids); extern void TeardownHistoricSnapshot(bool is_error); extern bool HistoricSnapshotActive(void); extern Size EstimateSnapshotSpace(Snapshot snapshot); extern void SerializeSnapshot(Snapshot snapshot, char *start_address); extern Snapshot RestoreSnapshot(char *start_address); extern void RestoreTransactionSnapshot(Snapshot snapshot, void *master_pgproc); #endif /* SNAPMGR_H */ libpg_query-13-2.1.0/src/postgres/include/utils/snapshot.h000066400000000000000000000166571413137616400235320ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * snapshot.h * POSTGRES snapshot definition * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/snapshot.h * *------------------------------------------------------------------------- */ #ifndef SNAPSHOT_H #define SNAPSHOT_H #include "access/htup.h" #include "access/xlogdefs.h" #include "datatype/timestamp.h" #include "lib/pairingheap.h" #include "storage/buf.h" /* * The different snapshot types. We use SnapshotData structures to represent * both "regular" (MVCC) snapshots and "special" snapshots that have non-MVCC * semantics. The specific semantics of a snapshot are encoded by its type. * * The behaviour of each type of snapshot should be documented alongside its * enum value, best in terms that are not specific to an individual table AM. * * The reason the snapshot type rather than a callback as it used to be is * that that allows to use the same snapshot for different table AMs without * having one callback per AM. */ typedef enum SnapshotType { /*------------------------------------------------------------------------- * A tuple is visible iff the tuple is valid for the given MVCC snapshot. * * Here, we consider the effects of: * - all transactions committed as of the time of the given snapshot * - previous commands of this transaction * * Does _not_ include: * - transactions shown as in-progress by the snapshot * - transactions started after the snapshot was taken * - changes made by the current command * ------------------------------------------------------------------------- */ SNAPSHOT_MVCC = 0, /*------------------------------------------------------------------------- * A tuple is visible iff the tuple is valid "for itself". * * Here, we consider the effects of: * - all committed transactions (as of the current instant) * - previous commands of this transaction * - changes made by the current command * * Does _not_ include: * - in-progress transactions (as of the current instant) * ------------------------------------------------------------------------- */ SNAPSHOT_SELF, /* * Any tuple is visible. */ SNAPSHOT_ANY, /* * A tuple is visible iff the tuple is valid as a TOAST row. */ SNAPSHOT_TOAST, /*------------------------------------------------------------------------- * A tuple is visible iff the tuple is valid including effects of open * transactions. * * Here, we consider the effects of: * - all committed and in-progress transactions (as of the current instant) * - previous commands of this transaction * - changes made by the current command * * This is essentially like SNAPSHOT_SELF as far as effects of the current * transaction and committed/aborted xacts are concerned. However, it * also includes the effects of other xacts still in progress. * * A special hack is that when a snapshot of this type is used to * determine tuple visibility, the passed-in snapshot struct is used as an * output argument to return the xids of concurrent xacts that affected * the tuple. snapshot->xmin is set to the tuple's xmin if that is * another transaction that's still in progress; or to * InvalidTransactionId if the tuple's xmin is committed good, committed * dead, or my own xact. Similarly for snapshot->xmax and the tuple's * xmax. If the tuple was inserted speculatively, meaning that the * inserter might still back down on the insertion without aborting the * whole transaction, the associated token is also returned in * snapshot->speculativeToken. See also InitDirtySnapshot(). * ------------------------------------------------------------------------- */ SNAPSHOT_DIRTY, /* * A tuple is visible iff it follows the rules of SNAPSHOT_MVCC, but * supports being called in timetravel context (for decoding catalog * contents in the context of logical decoding). */ SNAPSHOT_HISTORIC_MVCC, /* * A tuple is visible iff the tuple might be visible to some transaction; * false if it's surely dead to everyone, i.e., vacuumable. * * For visibility checks snapshot->min must have been set up with the xmin * horizon to use. */ SNAPSHOT_NON_VACUUMABLE } SnapshotType; typedef struct SnapshotData *Snapshot; #define InvalidSnapshot ((Snapshot) NULL) /* * Struct representing all kind of possible snapshots. * * There are several different kinds of snapshots: * * Normal MVCC snapshots * * MVCC snapshots taken during recovery (in Hot-Standby mode) * * Historic MVCC snapshots used during logical decoding * * snapshots passed to HeapTupleSatisfiesDirty() * * snapshots passed to HeapTupleSatisfiesNonVacuumable() * * snapshots used for SatisfiesAny, Toast, Self where no members are * accessed. * * TODO: It's probably a good idea to split this struct using a NodeTag * similar to how parser and executor nodes are handled, with one type for * each different kind of snapshot to avoid overloading the meaning of * individual fields. */ typedef struct SnapshotData { SnapshotType snapshot_type; /* type of snapshot */ /* * The remaining fields are used only for MVCC snapshots, and are normally * just zeroes in special snapshots. (But xmin and xmax are used * specially by HeapTupleSatisfiesDirty, and xmin is used specially by * HeapTupleSatisfiesNonVacuumable.) * * An MVCC snapshot can never see the effects of XIDs >= xmax. It can see * the effects of all older XIDs except those listed in the snapshot. xmin * is stored as an optimization to avoid needing to search the XID arrays * for most tuples. */ TransactionId xmin; /* all XID < xmin are visible to me */ TransactionId xmax; /* all XID >= xmax are invisible to me */ /* * For normal MVCC snapshot this contains the all xact IDs that are in * progress, unless the snapshot was taken during recovery in which case * it's empty. For historic MVCC snapshots, the meaning is inverted, i.e. * it contains *committed* transactions between xmin and xmax. * * note: all ids in xip[] satisfy xmin <= xip[i] < xmax */ TransactionId *xip; uint32 xcnt; /* # of xact ids in xip[] */ /* * For non-historic MVCC snapshots, this contains subxact IDs that are in * progress (and other transactions that are in progress if taken during * recovery). For historic snapshot it contains *all* xids assigned to the * replayed transaction, including the toplevel xid. * * note: all ids in subxip[] are >= xmin, but we don't bother filtering * out any that are >= xmax */ TransactionId *subxip; int32 subxcnt; /* # of xact ids in subxip[] */ bool suboverflowed; /* has the subxip array overflowed? */ bool takenDuringRecovery; /* recovery-shaped snapshot? */ bool copied; /* false if it's a static snapshot */ CommandId curcid; /* in my xact, CID < curcid are visible */ /* * An extra return value for HeapTupleSatisfiesDirty, not used in MVCC * snapshots. */ uint32 speculativeToken; /* * Book-keeping information, used by the snapshot manager */ uint32 active_count; /* refcount on ActiveSnapshot stack */ uint32 regd_count; /* refcount on RegisteredSnapshots */ pairingheap_node ph_node; /* link in the RegisteredSnapshots heap */ TimestampTz whenTaken; /* timestamp when snapshot was taken */ XLogRecPtr lsn; /* position in the WAL stream when taken */ } SnapshotData; #endif /* SNAPSHOT_H */ libpg_query-13-2.1.0/src/postgres/include/utils/sortsupport.h000066400000000000000000000253741413137616400243130ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * sortsupport.h * Framework for accelerated sorting. * * Traditionally, PostgreSQL has implemented sorting by repeatedly invoking * an SQL-callable comparison function "cmp(x, y) returns int" on pairs of * values to be compared, where the comparison function is the BTORDER_PROC * pg_amproc support function of the appropriate btree index opclass. * * This file defines alternative APIs that allow sorting to be performed with * reduced overhead. To support lower-overhead sorting, a btree opclass may * provide a BTSORTSUPPORT_PROC pg_amproc entry, which must take a single * argument of type internal and return void. The argument is actually a * pointer to a SortSupportData struct, which is defined below. * * If provided, the BTSORTSUPPORT function will be called during sort setup, * and it must initialize the provided struct with pointers to function(s) * that can be called to perform sorting. This API is defined to allow * multiple acceleration mechanisms to be supported, but no opclass is * required to provide all of them. The BTSORTSUPPORT function should * simply not set any function pointers for mechanisms it doesn't support. * Opclasses that provide BTSORTSUPPORT and don't provide a comparator * function will have a shim set up by sort support automatically. However, * opclasses that support the optional additional abbreviated key capability * must always provide an authoritative comparator used to tie-break * inconclusive abbreviated comparisons and also used when aborting * abbreviation. Furthermore, a converter and abort/costing function must be * provided. * * All sort support functions will be passed the address of the * SortSupportData struct when called, so they can use it to store * additional private data as needed. In particular, for collation-aware * datatypes, the ssup_collation field is set before calling BTSORTSUPPORT * and is available to all support functions. Additional opclass-dependent * data can be stored using the ssup_extra field. Any such data * should be allocated in the ssup_cxt memory context. * * Note: since pg_amproc functions are indexed by (lefttype, righttype) * it is possible to associate a BTSORTSUPPORT function with a cross-type * comparison. This could sensibly be used to provide a fast comparator * function for such cases, but probably not any other acceleration method. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/sortsupport.h * *------------------------------------------------------------------------- */ #ifndef SORTSUPPORT_H #define SORTSUPPORT_H #include "access/attnum.h" #include "utils/relcache.h" typedef struct SortSupportData *SortSupport; typedef struct SortSupportData { /* * These fields are initialized before calling the BTSORTSUPPORT function * and should not be changed later. */ MemoryContext ssup_cxt; /* Context containing sort info */ Oid ssup_collation; /* Collation to use, or InvalidOid */ /* * Additional sorting parameters; but unlike ssup_collation, these can be * changed after BTSORTSUPPORT is called, so don't use them in selecting * sort support functions. */ bool ssup_reverse; /* descending-order sort? */ bool ssup_nulls_first; /* sort nulls first? */ /* * These fields are workspace for callers, and should not be touched by * opclass-specific functions. */ AttrNumber ssup_attno; /* column number to sort */ /* * ssup_extra is zeroed before calling the BTSORTSUPPORT function, and is * not touched subsequently by callers. */ void *ssup_extra; /* Workspace for opclass functions */ /* * Function pointers are zeroed before calling the BTSORTSUPPORT function, * and must be set by it for any acceleration methods it wants to supply. * The comparator pointer must be set, others are optional. */ /* * Comparator function has the same API as the traditional btree * comparison function, ie, return <0, 0, or >0 according as x is less * than, equal to, or greater than y. Note that x and y are guaranteed * not null, and there is no way to return null either. * * This may be either the authoritative comparator, or the abbreviated * comparator. Core code may switch this over the initial preference of * an opclass support function despite originally indicating abbreviation * was applicable, by assigning the authoritative comparator back. */ int (*comparator) (Datum x, Datum y, SortSupport ssup); /* * "Abbreviated key" infrastructure follows. * * All callbacks must be set by sortsupport opclasses that make use of * this optional additional infrastructure (unless for whatever reasons * the opclass doesn't proceed with abbreviation, in which case * abbrev_converter must not be set). * * This allows opclass authors to supply a conversion routine, used to * create an alternative representation of the underlying type (an * "abbreviated key"). This representation must be pass-by-value and * typically will use some ad-hoc format that only the opclass has * knowledge of. An alternative comparator, used only with this * alternative representation must also be provided (which is assigned to * "comparator"). This representation is a simple approximation of the * original Datum. It must be possible to compare datums of this * representation with each other using the supplied alternative * comparator, and have any non-zero return value be a reliable proxy for * what a proper comparison would indicate. Returning zero from the * alternative comparator does not indicate equality, as with a * conventional support routine 1, though -- it indicates that it wasn't * possible to determine how the two abbreviated values compared. A * proper comparison, using "abbrev_full_comparator"/ * ApplySortAbbrevFullComparator() is therefore required. In many cases * this results in most or all comparisons only using the cheap * alternative comparison func, which is typically implemented as code * that compiles to just a few CPU instructions. CPU cache miss penalties * are expensive; to get good overall performance, sort infrastructure * must heavily weigh cache performance. * * Opclass authors must consider the final cardinality of abbreviated keys * when devising an encoding scheme. It's possible for a strategy to work * better than an alternative strategy with one usage pattern, while the * reverse might be true for another usage pattern. All of these factors * must be considered. */ /* * "abbreviate" concerns whether or not the abbreviated key optimization * is applicable in principle (that is, the sortsupport routine needs to * know if its dealing with a key where an abbreviated representation can * usefully be packed together. Conventionally, this is the leading * attribute key). Note, however, that in order to determine that * abbreviation is not in play, the core code always checks whether or not * the opclass has set abbrev_converter. This is a one way, one time * message to the opclass. */ bool abbreviate; /* * Converter to abbreviated format, from original representation. Core * code uses this callback to convert from a pass-by-reference "original" * Datum to a pass-by-value abbreviated key Datum. Note that original is * guaranteed NOT NULL, because it doesn't make sense to factor NULLness * into ad-hoc cost model. * * abbrev_converter is tested to see if abbreviation is in play. Core * code may set it to NULL to indicate abbreviation should not be used * (which is something sortsupport routines need not concern themselves * with). However, sortsupport routines must not set it when it is * immediately established that abbreviation should not proceed (e.g., for * !abbreviate calls, or due to platform-specific impediments to using * abbreviation). */ Datum (*abbrev_converter) (Datum original, SortSupport ssup); /* * abbrev_abort callback allows clients to verify that the current * strategy is working out, using a sortsupport routine defined ad-hoc * cost model. If there is a lot of duplicate abbreviated keys in * practice, it's useful to be able to abandon the strategy before paying * too high a cost in conversion (perhaps certain opclass-specific * adaptations are useful too). */ bool (*abbrev_abort) (int memtupcount, SortSupport ssup); /* * Full, authoritative comparator for key that an abbreviated * representation was generated for, used when an abbreviated comparison * was inconclusive (by calling ApplySortAbbrevFullComparator()), or used * to replace "comparator" when core system ultimately decides against * abbreviation. */ int (*abbrev_full_comparator) (Datum x, Datum y, SortSupport ssup); } SortSupportData; /* * Apply a sort comparator function and return a 3-way comparison result. * This takes care of handling reverse-sort and NULLs-ordering properly. */ static inline int ApplySortComparator(Datum datum1, bool isNull1, Datum datum2, bool isNull2, SortSupport ssup) { int compare; if (isNull1) { if (isNull2) compare = 0; /* NULL "=" NULL */ else if (ssup->ssup_nulls_first) compare = -1; /* NULL "<" NOT_NULL */ else compare = 1; /* NULL ">" NOT_NULL */ } else if (isNull2) { if (ssup->ssup_nulls_first) compare = 1; /* NOT_NULL ">" NULL */ else compare = -1; /* NOT_NULL "<" NULL */ } else { compare = ssup->comparator(datum1, datum2, ssup); if (ssup->ssup_reverse) INVERT_COMPARE_RESULT(compare); } return compare; } /* * Apply a sort comparator function and return a 3-way comparison using full, * authoritative comparator. This takes care of handling reverse-sort and * NULLs-ordering properly. */ static inline int ApplySortAbbrevFullComparator(Datum datum1, bool isNull1, Datum datum2, bool isNull2, SortSupport ssup) { int compare; if (isNull1) { if (isNull2) compare = 0; /* NULL "=" NULL */ else if (ssup->ssup_nulls_first) compare = -1; /* NULL "<" NOT_NULL */ else compare = 1; /* NULL ">" NOT_NULL */ } else if (isNull2) { if (ssup->ssup_nulls_first) compare = 1; /* NOT_NULL ">" NULL */ else compare = -1; /* NOT_NULL "<" NULL */ } else { compare = ssup->abbrev_full_comparator(datum1, datum2, ssup); if (ssup->ssup_reverse) INVERT_COMPARE_RESULT(compare); } return compare; } /* Other functions in utils/sort/sortsupport.c */ extern void PrepareSortSupportComparisonShim(Oid cmpFunc, SortSupport ssup); extern void PrepareSortSupportFromOrderingOp(Oid orderingOp, SortSupport ssup); extern void PrepareSortSupportFromIndexRel(Relation indexRel, int16 strategy, SortSupport ssup); #endif /* SORTSUPPORT_H */ libpg_query-13-2.1.0/src/postgres/include/utils/syscache.h000066400000000000000000000145131413137616400234620ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * syscache.h * System catalog cache definitions. * * See also lsyscache.h, which provides convenience routines for * common cache-lookup operations. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/syscache.h * *------------------------------------------------------------------------- */ #ifndef SYSCACHE_H #define SYSCACHE_H #include "access/attnum.h" #include "access/htup.h" /* we intentionally do not include utils/catcache.h here */ /* * SysCache identifiers. * * The order of these identifiers must match the order * of the entries in the array cacheinfo[] in syscache.c. * Keep them in alphabetical order (renumbering only costs a * backend rebuild). */ enum SysCacheIdentifier { AGGFNOID = 0, AMNAME, AMOID, AMOPOPID, AMOPSTRATEGY, AMPROCNUM, ATTNAME, ATTNUM, AUTHMEMMEMROLE, AUTHMEMROLEMEM, AUTHNAME, AUTHOID, CASTSOURCETARGET, CLAAMNAMENSP, CLAOID, COLLNAMEENCNSP, COLLOID, CONDEFAULT, CONNAMENSP, CONSTROID, CONVOID, DATABASEOID, DEFACLROLENSPOBJ, ENUMOID, ENUMTYPOIDNAME, EVENTTRIGGERNAME, EVENTTRIGGEROID, FOREIGNDATAWRAPPERNAME, FOREIGNDATAWRAPPEROID, FOREIGNSERVERNAME, FOREIGNSERVEROID, FOREIGNTABLEREL, INDEXRELID, LANGNAME, LANGOID, NAMESPACENAME, NAMESPACEOID, OPERNAMENSP, OPEROID, OPFAMILYAMNAMENSP, OPFAMILYOID, PARTRELID, PROCNAMEARGSNSP, PROCOID, PUBLICATIONNAME, PUBLICATIONOID, PUBLICATIONREL, PUBLICATIONRELMAP, RANGETYPE, RELNAMENSP, RELOID, REPLORIGIDENT, REPLORIGNAME, RULERELNAME, SEQRELID, STATEXTDATASTXOID, STATEXTNAMENSP, STATEXTOID, STATRELATTINH, SUBSCRIPTIONNAME, SUBSCRIPTIONOID, SUBSCRIPTIONRELMAP, TABLESPACEOID, TRFOID, TRFTYPELANG, TSCONFIGMAP, TSCONFIGNAMENSP, TSCONFIGOID, TSDICTNAMENSP, TSDICTOID, TSPARSERNAMENSP, TSPARSEROID, TSTEMPLATENAMENSP, TSTEMPLATEOID, TYPENAMENSP, TYPEOID, USERMAPPINGOID, USERMAPPINGUSERSERVER #define SysCacheSize (USERMAPPINGUSERSERVER + 1) }; extern void InitCatalogCache(void); extern void InitCatalogCachePhase2(void); extern HeapTuple SearchSysCache(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); /* * The use of argument specific numbers is encouraged. They're faster, and * insulates the caller from changes in the maximum number of keys. */ extern HeapTuple SearchSysCache1(int cacheId, Datum key1); extern HeapTuple SearchSysCache2(int cacheId, Datum key1, Datum key2); extern HeapTuple SearchSysCache3(int cacheId, Datum key1, Datum key2, Datum key3); extern HeapTuple SearchSysCache4(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); extern void ReleaseSysCache(HeapTuple tuple); /* convenience routines */ extern HeapTuple SearchSysCacheCopy(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); extern bool SearchSysCacheExists(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); extern Oid GetSysCacheOid(int cacheId, AttrNumber oidcol, Datum key1, Datum key2, Datum key3, Datum key4); extern HeapTuple SearchSysCacheAttName(Oid relid, const char *attname); extern HeapTuple SearchSysCacheCopyAttName(Oid relid, const char *attname); extern bool SearchSysCacheExistsAttName(Oid relid, const char *attname); extern HeapTuple SearchSysCacheAttNum(Oid relid, int16 attnum); extern HeapTuple SearchSysCacheCopyAttNum(Oid relid, int16 attnum); extern Datum SysCacheGetAttr(int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull); extern uint32 GetSysCacheHashValue(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4); /* list-search interface. Users of this must import catcache.h too */ struct catclist; extern struct catclist *SearchSysCacheList(int cacheId, int nkeys, Datum key1, Datum key2, Datum key3); extern void SysCacheInvalidate(int cacheId, uint32 hashValue); extern bool RelationInvalidatesSnapshotsOnly(Oid relid); extern bool RelationHasSysCache(Oid relid); extern bool RelationSupportsSysCache(Oid relid); /* * The use of the macros below rather than direct calls to the corresponding * functions is encouraged, as it insulates the caller from changes in the * maximum number of keys. */ #define SearchSysCacheCopy1(cacheId, key1) \ SearchSysCacheCopy(cacheId, key1, 0, 0, 0) #define SearchSysCacheCopy2(cacheId, key1, key2) \ SearchSysCacheCopy(cacheId, key1, key2, 0, 0) #define SearchSysCacheCopy3(cacheId, key1, key2, key3) \ SearchSysCacheCopy(cacheId, key1, key2, key3, 0) #define SearchSysCacheCopy4(cacheId, key1, key2, key3, key4) \ SearchSysCacheCopy(cacheId, key1, key2, key3, key4) #define SearchSysCacheExists1(cacheId, key1) \ SearchSysCacheExists(cacheId, key1, 0, 0, 0) #define SearchSysCacheExists2(cacheId, key1, key2) \ SearchSysCacheExists(cacheId, key1, key2, 0, 0) #define SearchSysCacheExists3(cacheId, key1, key2, key3) \ SearchSysCacheExists(cacheId, key1, key2, key3, 0) #define SearchSysCacheExists4(cacheId, key1, key2, key3, key4) \ SearchSysCacheExists(cacheId, key1, key2, key3, key4) #define GetSysCacheOid1(cacheId, oidcol, key1) \ GetSysCacheOid(cacheId, oidcol, key1, 0, 0, 0) #define GetSysCacheOid2(cacheId, oidcol, key1, key2) \ GetSysCacheOid(cacheId, oidcol, key1, key2, 0, 0) #define GetSysCacheOid3(cacheId, oidcol, key1, key2, key3) \ GetSysCacheOid(cacheId, oidcol, key1, key2, key3, 0) #define GetSysCacheOid4(cacheId, oidcol, key1, key2, key3, key4) \ GetSysCacheOid(cacheId, oidcol, key1, key2, key3, key4) #define GetSysCacheHashValue1(cacheId, key1) \ GetSysCacheHashValue(cacheId, key1, 0, 0, 0) #define GetSysCacheHashValue2(cacheId, key1, key2) \ GetSysCacheHashValue(cacheId, key1, key2, 0, 0) #define GetSysCacheHashValue3(cacheId, key1, key2, key3) \ GetSysCacheHashValue(cacheId, key1, key2, key3, 0) #define GetSysCacheHashValue4(cacheId, key1, key2, key3, key4) \ GetSysCacheHashValue(cacheId, key1, key2, key3, key4) #define SearchSysCacheList1(cacheId, key1) \ SearchSysCacheList(cacheId, 1, key1, 0, 0) #define SearchSysCacheList2(cacheId, key1, key2) \ SearchSysCacheList(cacheId, 2, key1, key2, 0) #define SearchSysCacheList3(cacheId, key1, key2, key3) \ SearchSysCacheList(cacheId, 3, key1, key2, key3) #define ReleaseSysCacheList(x) ReleaseCatCacheList(x) #endif /* SYSCACHE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/timeout.h000066400000000000000000000050331413137616400233430ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * timeout.h * Routines to multiplex SIGALRM interrupts for multiple timeout reasons. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/timeout.h * *------------------------------------------------------------------------- */ #ifndef TIMEOUT_H #define TIMEOUT_H #include "datatype/timestamp.h" /* * Identifiers for timeout reasons. Note that in case multiple timeouts * trigger at the same time, they are serviced in the order of this enum. */ typedef enum TimeoutId { /* Predefined timeout reasons */ STARTUP_PACKET_TIMEOUT, DEADLOCK_TIMEOUT, LOCK_TIMEOUT, STATEMENT_TIMEOUT, STANDBY_DEADLOCK_TIMEOUT, STANDBY_TIMEOUT, STANDBY_LOCK_TIMEOUT, IDLE_IN_TRANSACTION_SESSION_TIMEOUT, /* First user-definable timeout reason */ USER_TIMEOUT, /* Maximum number of timeout reasons */ MAX_TIMEOUTS = 16 } TimeoutId; /* callback function signature */ typedef void (*timeout_handler_proc) (void); /* * Parameter structure for setting multiple timeouts at once */ typedef enum TimeoutType { TMPARAM_AFTER, TMPARAM_AT } TimeoutType; typedef struct { TimeoutId id; /* timeout to set */ TimeoutType type; /* TMPARAM_AFTER or TMPARAM_AT */ int delay_ms; /* only used for TMPARAM_AFTER */ TimestampTz fin_time; /* only used for TMPARAM_AT */ } EnableTimeoutParams; /* * Parameter structure for clearing multiple timeouts at once */ typedef struct { TimeoutId id; /* timeout to clear */ bool keep_indicator; /* keep the indicator flag? */ } DisableTimeoutParams; /* timeout setup */ extern void InitializeTimeouts(void); extern TimeoutId RegisterTimeout(TimeoutId id, timeout_handler_proc handler); extern void reschedule_timeouts(void); /* timeout operation */ extern void enable_timeout_after(TimeoutId id, int delay_ms); extern void enable_timeout_at(TimeoutId id, TimestampTz fin_time); extern void enable_timeouts(const EnableTimeoutParams *timeouts, int count); extern void disable_timeout(TimeoutId id, bool keep_indicator); extern void disable_timeouts(const DisableTimeoutParams *timeouts, int count); extern void disable_all_timeouts(bool keep_indicators); /* accessors */ extern bool get_timeout_active(TimeoutId id); extern bool get_timeout_indicator(TimeoutId id, bool reset_indicator); extern TimestampTz get_timeout_start_time(TimeoutId id); extern TimestampTz get_timeout_finish_time(TimeoutId id); #endif /* TIMEOUT_H */ libpg_query-13-2.1.0/src/postgres/include/utils/timestamp.h000066400000000000000000000103661413137616400236650ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * timestamp.h * Definitions for the SQL "timestamp" and "interval" types. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/timestamp.h * *------------------------------------------------------------------------- */ #ifndef TIMESTAMP_H #define TIMESTAMP_H #include "datatype/timestamp.h" #include "fmgr.h" #include "pgtime.h" /* * Macros for fmgr-callable functions. * * For Timestamp, we make use of the same support routines as for int64. * Therefore Timestamp is pass-by-reference if and only if int64 is! */ #define DatumGetTimestamp(X) ((Timestamp) DatumGetInt64(X)) #define DatumGetTimestampTz(X) ((TimestampTz) DatumGetInt64(X)) #define DatumGetIntervalP(X) ((Interval *) DatumGetPointer(X)) #define TimestampGetDatum(X) Int64GetDatum(X) #define TimestampTzGetDatum(X) Int64GetDatum(X) #define IntervalPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_TIMESTAMP(n) DatumGetTimestamp(PG_GETARG_DATUM(n)) #define PG_GETARG_TIMESTAMPTZ(n) DatumGetTimestampTz(PG_GETARG_DATUM(n)) #define PG_GETARG_INTERVAL_P(n) DatumGetIntervalP(PG_GETARG_DATUM(n)) #define PG_RETURN_TIMESTAMP(x) return TimestampGetDatum(x) #define PG_RETURN_TIMESTAMPTZ(x) return TimestampTzGetDatum(x) #define PG_RETURN_INTERVAL_P(x) return IntervalPGetDatum(x) #define TIMESTAMP_MASK(b) (1 << (b)) #define INTERVAL_MASK(b) (1 << (b)) /* Macros to handle packing and unpacking the typmod field for intervals */ #define INTERVAL_FULL_RANGE (0x7FFF) #define INTERVAL_RANGE_MASK (0x7FFF) #define INTERVAL_FULL_PRECISION (0xFFFF) #define INTERVAL_PRECISION_MASK (0xFFFF) #define INTERVAL_TYPMOD(p,r) ((((r) & INTERVAL_RANGE_MASK) << 16) | ((p) & INTERVAL_PRECISION_MASK)) #define INTERVAL_PRECISION(t) ((t) & INTERVAL_PRECISION_MASK) #define INTERVAL_RANGE(t) (((t) >> 16) & INTERVAL_RANGE_MASK) #define TimestampTzPlusMilliseconds(tz,ms) ((tz) + ((ms) * (int64) 1000)) /* Set at postmaster start */ extern TimestampTz PgStartTime; /* Set at configuration reload */ extern TimestampTz PgReloadTime; /* Internal routines (not fmgr-callable) */ extern int32 anytimestamp_typmod_check(bool istz, int32 typmod); extern TimestampTz GetCurrentTimestamp(void); extern TimestampTz GetSQLCurrentTimestamp(int32 typmod); extern Timestamp GetSQLLocalTimestamp(int32 typmod); extern void TimestampDifference(TimestampTz start_time, TimestampTz stop_time, long *secs, int *microsecs); extern long TimestampDifferenceMilliseconds(TimestampTz start_time, TimestampTz stop_time); extern bool TimestampDifferenceExceeds(TimestampTz start_time, TimestampTz stop_time, int msec); extern TimestampTz time_t_to_timestamptz(pg_time_t tm); extern pg_time_t timestamptz_to_time_t(TimestampTz t); extern const char *timestamptz_to_str(TimestampTz t); extern int tm2timestamp(struct pg_tm *tm, fsec_t fsec, int *tzp, Timestamp *dt); extern int timestamp2tm(Timestamp dt, int *tzp, struct pg_tm *tm, fsec_t *fsec, const char **tzn, pg_tz *attimezone); extern void dt2time(Timestamp dt, int *hour, int *min, int *sec, fsec_t *fsec); extern int interval2tm(Interval span, struct pg_tm *tm, fsec_t *fsec); extern int tm2interval(struct pg_tm *tm, fsec_t fsec, Interval *span); extern Timestamp SetEpochTimestamp(void); extern void GetEpochTime(struct pg_tm *tm); extern int timestamp_cmp_internal(Timestamp dt1, Timestamp dt2); /* timestamp comparison works for timestamptz also */ #define timestamptz_cmp_internal(dt1,dt2) timestamp_cmp_internal(dt1, dt2) extern TimestampTz timestamp2timestamptz_opt_overflow(Timestamp timestamp, int *overflow); extern int32 timestamp_cmp_timestamptz_internal(Timestamp timestampVal, TimestampTz dt2); extern int isoweek2j(int year, int week); extern void isoweek2date(int woy, int *year, int *mon, int *mday); extern void isoweekdate2date(int isoweek, int wday, int *year, int *mon, int *mday); extern int date2isoweek(int year, int mon, int mday); extern int date2isoyear(int year, int mon, int mday); extern int date2isoyearday(int year, int mon, int mday); extern bool TimestampTimestampTzRequiresRewrite(void); #endif /* TIMESTAMP_H */ libpg_query-13-2.1.0/src/postgres/include/utils/tuplesort.h000066400000000000000000000300401413137616400237120ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tuplesort.h * Generalized tuple sorting routines. * * This module handles sorting of heap tuples, index tuples, or single * Datums (and could easily support other kinds of sortable objects, * if necessary). It works efficiently for both small and large amounts * of data. Small amounts are sorted in-memory using qsort(). Large * amounts are sorted using temporary files and a standard external sort * algorithm. Parallel sorts use a variant of this external sort * algorithm, and are typically only used for large amounts of data. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/tuplesort.h * *------------------------------------------------------------------------- */ #ifndef TUPLESORT_H #define TUPLESORT_H #include "access/itup.h" #include "executor/tuptable.h" #include "storage/dsm.h" #include "utils/relcache.h" /* * Tuplesortstate and Sharedsort are opaque types whose details are not * known outside tuplesort.c. */ typedef struct Tuplesortstate Tuplesortstate; typedef struct Sharedsort Sharedsort; /* * Tuplesort parallel coordination state, allocated by each participant in * local memory. Participant caller initializes everything. See usage notes * below. */ typedef struct SortCoordinateData { /* Worker process? If not, must be leader. */ bool isWorker; /* * Leader-process-passed number of participants known launched (workers * set this to -1). Includes state within leader needed for it to * participate as a worker, if any. */ int nParticipants; /* Private opaque state (points to shared memory) */ Sharedsort *sharedsort; } SortCoordinateData; typedef struct SortCoordinateData *SortCoordinate; /* * Data structures for reporting sort statistics. Note that * TuplesortInstrumentation can't contain any pointers because we * sometimes put it in shared memory. * * The parallel-sort infrastructure relies on having a zero TuplesortMethod * to indicate that a worker never did anything, so we assign zero to * SORT_TYPE_STILL_IN_PROGRESS. The other values of this enum can be * OR'ed together to represent a situation where different workers used * different methods, so we need a separate bit for each one. Keep the * NUM_TUPLESORTMETHODS constant in sync with the number of bits! */ typedef enum { SORT_TYPE_STILL_IN_PROGRESS = 0, SORT_TYPE_TOP_N_HEAPSORT = 1 << 0, SORT_TYPE_QUICKSORT = 1 << 1, SORT_TYPE_EXTERNAL_SORT = 1 << 2, SORT_TYPE_EXTERNAL_MERGE = 1 << 3 } TuplesortMethod; #define NUM_TUPLESORTMETHODS 4 typedef enum { SORT_SPACE_TYPE_DISK, SORT_SPACE_TYPE_MEMORY } TuplesortSpaceType; typedef struct TuplesortInstrumentation { TuplesortMethod sortMethod; /* sort algorithm used */ TuplesortSpaceType spaceType; /* type of space spaceUsed represents */ int64 spaceUsed; /* space consumption, in kB */ } TuplesortInstrumentation; /* * We provide multiple interfaces to what is essentially the same code, * since different callers have different data to be sorted and want to * specify the sort key information differently. There are two APIs for * sorting HeapTuples and two more for sorting IndexTuples. Yet another * API supports sorting bare Datums. * * Serial sort callers should pass NULL for their coordinate argument. * * The "heap" API actually stores/sorts MinimalTuples, which means it doesn't * preserve the system columns (tuple identity and transaction visibility * info). The sort keys are specified by column numbers within the tuples * and sort operator OIDs. We save some cycles by passing and returning the * tuples in TupleTableSlots, rather than forming actual HeapTuples (which'd * have to be converted to MinimalTuples). This API works well for sorts * executed as parts of plan trees. * * The "cluster" API stores/sorts full HeapTuples including all visibility * info. The sort keys are specified by reference to a btree index that is * defined on the relation to be sorted. Note that putheaptuple/getheaptuple * go with this API, not the "begin_heap" one! * * The "index_btree" API stores/sorts IndexTuples (preserving all their * header fields). The sort keys are specified by a btree index definition. * * The "index_hash" API is similar to index_btree, but the tuples are * actually sorted by their hash codes not the raw data. * * Parallel sort callers are required to coordinate multiple tuplesort states * in a leader process and one or more worker processes. The leader process * must launch workers, and have each perform an independent "partial" * tuplesort, typically fed by the parallel heap interface. The leader later * produces the final output (internally, it merges runs output by workers). * * Callers must do the following to perform a sort in parallel using multiple * worker processes: * * 1. Request tuplesort-private shared memory for n workers. Use * tuplesort_estimate_shared() to get the required size. * 2. Have leader process initialize allocated shared memory using * tuplesort_initialize_shared(). Launch workers. * 3. Initialize a coordinate argument within both the leader process, and * for each worker process. This has a pointer to the shared * tuplesort-private structure, as well as some caller-initialized fields. * Leader's coordinate argument reliably indicates number of workers * launched (this is unused by workers). * 4. Begin a tuplesort using some appropriate tuplesort_begin* routine, * (passing the coordinate argument) within each worker. The workMem * arguments need not be identical. All other arguments should match * exactly, though. * 5. tuplesort_attach_shared() should be called by all workers. Feed tuples * to each worker, and call tuplesort_performsort() within each when input * is exhausted. * 6. Call tuplesort_end() in each worker process. Worker processes can shut * down once tuplesort_end() returns. * 7. Begin a tuplesort in the leader using the same tuplesort_begin* * routine, passing a leader-appropriate coordinate argument (this can * happen as early as during step 3, actually, since we only need to know * the number of workers successfully launched). The leader must now wait * for workers to finish. Caller must use own mechanism for ensuring that * next step isn't reached until all workers have called and returned from * tuplesort_performsort(). (Note that it's okay if workers have already * also called tuplesort_end() by then.) * 8. Call tuplesort_performsort() in leader. Consume output using the * appropriate tuplesort_get* routine. Leader can skip this step if * tuplesort turns out to be unnecessary. * 9. Call tuplesort_end() in leader. * * This division of labor assumes nothing about how input tuples are produced, * but does require that caller combine the state of multiple tuplesorts for * any purpose other than producing the final output. For example, callers * must consider that tuplesort_get_stats() reports on only one worker's role * in a sort (or the leader's role), and not statistics for the sort as a * whole. * * Note that callers may use the leader process to sort runs as if it was an * independent worker process (prior to the process performing a leader sort * to produce the final sorted output). Doing so only requires a second * "partial" tuplesort within the leader process, initialized like that of a * worker process. The steps above don't touch on this directly. The only * difference is that the tuplesort_attach_shared() call is never needed within * leader process, because the backend as a whole holds the shared fileset * reference. A worker Tuplesortstate in leader is expected to do exactly the * same amount of total initial processing work as a worker process * Tuplesortstate, since the leader process has nothing else to do before * workers finish. * * Note that only a very small amount of memory will be allocated prior to * the leader state first consuming input, and that workers will free the * vast majority of their memory upon returning from tuplesort_performsort(). * Callers can rely on this to arrange for memory to be used in a way that * respects a workMem-style budget across an entire parallel sort operation. * * Callers are responsible for parallel safety in general. However, they * can at least rely on there being no parallel safety hazards within * tuplesort, because tuplesort thinks of the sort as several independent * sorts whose results are combined. Since, in general, the behavior of * sort operators is immutable, caller need only worry about the parallel * safety of whatever the process is through which input tuples are * generated (typically, caller uses a parallel heap scan). */ extern Tuplesortstate *tuplesort_begin_heap(TupleDesc tupDesc, int nkeys, AttrNumber *attNums, Oid *sortOperators, Oid *sortCollations, bool *nullsFirstFlags, int workMem, SortCoordinate coordinate, bool randomAccess); extern Tuplesortstate *tuplesort_begin_cluster(TupleDesc tupDesc, Relation indexRel, int workMem, SortCoordinate coordinate, bool randomAccess); extern Tuplesortstate *tuplesort_begin_index_btree(Relation heapRel, Relation indexRel, bool enforceUnique, int workMem, SortCoordinate coordinate, bool randomAccess); extern Tuplesortstate *tuplesort_begin_index_hash(Relation heapRel, Relation indexRel, uint32 high_mask, uint32 low_mask, uint32 max_buckets, int workMem, SortCoordinate coordinate, bool randomAccess); extern Tuplesortstate *tuplesort_begin_datum(Oid datumType, Oid sortOperator, Oid sortCollation, bool nullsFirstFlag, int workMem, SortCoordinate coordinate, bool randomAccess); extern void tuplesort_set_bound(Tuplesortstate *state, int64 bound); extern bool tuplesort_used_bound(Tuplesortstate *state); extern void tuplesort_puttupleslot(Tuplesortstate *state, TupleTableSlot *slot); extern void tuplesort_putheaptuple(Tuplesortstate *state, HeapTuple tup); extern void tuplesort_putindextuplevalues(Tuplesortstate *state, Relation rel, ItemPointer self, Datum *values, bool *isnull); extern void tuplesort_putdatum(Tuplesortstate *state, Datum val, bool isNull); extern void tuplesort_performsort(Tuplesortstate *state); extern bool tuplesort_gettupleslot(Tuplesortstate *state, bool forward, bool copy, TupleTableSlot *slot, Datum *abbrev); extern HeapTuple tuplesort_getheaptuple(Tuplesortstate *state, bool forward); extern IndexTuple tuplesort_getindextuple(Tuplesortstate *state, bool forward); extern bool tuplesort_getdatum(Tuplesortstate *state, bool forward, Datum *val, bool *isNull, Datum *abbrev); extern bool tuplesort_skiptuples(Tuplesortstate *state, int64 ntuples, bool forward); extern void tuplesort_end(Tuplesortstate *state); extern void tuplesort_reset(Tuplesortstate *state); extern void tuplesort_get_stats(Tuplesortstate *state, TuplesortInstrumentation *stats); extern const char *tuplesort_method_name(TuplesortMethod m); extern const char *tuplesort_space_type_name(TuplesortSpaceType t); extern int tuplesort_merge_order(int64 allowedMem); extern Size tuplesort_estimate_shared(int nworkers); extern void tuplesort_initialize_shared(Sharedsort *shared, int nWorkers, dsm_segment *seg); extern void tuplesort_attach_shared(Sharedsort *shared, dsm_segment *seg); /* * These routines may only be called if randomAccess was specified 'true'. * Likewise, backwards scan in gettuple/getdatum is only allowed if * randomAccess was specified. Note that parallel sorts do not support * randomAccess. */ extern void tuplesort_rescan(Tuplesortstate *state); extern void tuplesort_markpos(Tuplesortstate *state); extern void tuplesort_restorepos(Tuplesortstate *state); #endif /* TUPLESORT_H */ libpg_query-13-2.1.0/src/postgres/include/utils/tuplestore.h000066400000000000000000000065141413137616400240700ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tuplestore.h * Generalized routines for temporary tuple storage. * * This module handles temporary storage of tuples for purposes such * as Materialize nodes, hashjoin batch files, etc. It is essentially * a dumbed-down version of tuplesort.c; it does no sorting of tuples * but can only store and regurgitate a sequence of tuples. However, * because no sort is required, it is allowed to start reading the sequence * before it has all been written. This is particularly useful for cursors, * because it allows random access within the already-scanned portion of * a query without having to process the underlying scan to completion. * Also, it is possible to support multiple independent read pointers. * * A temporary file is used to handle the data if it exceeds the * space limit specified by the caller. * * Beginning in Postgres 8.2, what is stored is just MinimalTuples; * callers cannot expect valid system columns in regurgitated tuples. * Also, we have changed the API to return tuples in TupleTableSlots, * so that there is a check to prevent attempted access to system columns. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/tuplestore.h * *------------------------------------------------------------------------- */ #ifndef TUPLESTORE_H #define TUPLESTORE_H #include "executor/tuptable.h" /* Tuplestorestate is an opaque type whose details are not known outside * tuplestore.c. */ typedef struct Tuplestorestate Tuplestorestate; /* * Currently we only need to store MinimalTuples, but it would be easy * to support the same behavior for IndexTuples and/or bare Datums. */ extern Tuplestorestate *tuplestore_begin_heap(bool randomAccess, bool interXact, int maxKBytes); extern void tuplestore_set_eflags(Tuplestorestate *state, int eflags); extern void tuplestore_puttupleslot(Tuplestorestate *state, TupleTableSlot *slot); extern void tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple); extern void tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc, Datum *values, bool *isnull); /* tuplestore_donestoring() used to be required, but is no longer used */ #define tuplestore_donestoring(state) ((void) 0) extern int tuplestore_alloc_read_pointer(Tuplestorestate *state, int eflags); extern void tuplestore_select_read_pointer(Tuplestorestate *state, int ptr); extern void tuplestore_copy_read_pointer(Tuplestorestate *state, int srcptr, int destptr); extern void tuplestore_trim(Tuplestorestate *state); extern bool tuplestore_in_memory(Tuplestorestate *state); extern bool tuplestore_gettupleslot(Tuplestorestate *state, bool forward, bool copy, TupleTableSlot *slot); extern bool tuplestore_advance(Tuplestorestate *state, bool forward); extern bool tuplestore_skiptuples(Tuplestorestate *state, int64 ntuples, bool forward); extern int64 tuplestore_tuple_count(Tuplestorestate *state); extern bool tuplestore_ateof(Tuplestorestate *state); extern void tuplestore_rescan(Tuplestorestate *state); extern void tuplestore_clear(Tuplestorestate *state); extern void tuplestore_end(Tuplestorestate *state); #endif /* TUPLESTORE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/typcache.h000066400000000000000000000163411413137616400234610ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * typcache.h * Type cache definitions. * * The type cache exists to speed lookup of certain information about data * types that is not directly available from a type's pg_type row. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/typcache.h * *------------------------------------------------------------------------- */ #ifndef TYPCACHE_H #define TYPCACHE_H #include "access/tupdesc.h" #include "fmgr.h" #include "storage/dsm.h" #include "utils/dsa.h" /* DomainConstraintCache is an opaque struct known only within typcache.c */ typedef struct DomainConstraintCache DomainConstraintCache; /* TypeCacheEnumData is an opaque struct known only within typcache.c */ struct TypeCacheEnumData; typedef struct TypeCacheEntry { /* typeId is the hash lookup key and MUST BE FIRST */ Oid type_id; /* OID of the data type */ uint32 type_id_hash; /* hashed value of the OID */ /* some subsidiary information copied from the pg_type row */ int16 typlen; bool typbyval; char typalign; char typstorage; char typtype; Oid typrelid; Oid typelem; Oid typcollation; /* * Information obtained from opfamily entries * * These will be InvalidOid if no match could be found, or if the * information hasn't yet been requested. Also note that for array and * composite types, typcache.c checks that the contained types are * comparable or hashable before allowing eq_opr etc to become set. */ Oid btree_opf; /* the default btree opclass' family */ Oid btree_opintype; /* the default btree opclass' opcintype */ Oid hash_opf; /* the default hash opclass' family */ Oid hash_opintype; /* the default hash opclass' opcintype */ Oid eq_opr; /* the equality operator */ Oid lt_opr; /* the less-than operator */ Oid gt_opr; /* the greater-than operator */ Oid cmp_proc; /* the btree comparison function */ Oid hash_proc; /* the hash calculation function */ Oid hash_extended_proc; /* the extended hash calculation function */ /* * Pre-set-up fmgr call info for the equality operator, the btree * comparison function, and the hash calculation function. These are kept * in the type cache to avoid problems with memory leaks in repeated calls * to functions such as array_eq, array_cmp, hash_array. There is not * currently a need to maintain call info for the lt_opr or gt_opr. */ FmgrInfo eq_opr_finfo; FmgrInfo cmp_proc_finfo; FmgrInfo hash_proc_finfo; FmgrInfo hash_extended_proc_finfo; /* * Tuple descriptor if it's a composite type (row type). NULL if not * composite or information hasn't yet been requested. (NOTE: this is a * reference-counted tupledesc.) * * To simplify caching dependent info, tupDesc_identifier is an identifier * for this tupledesc that is unique for the life of the process, and * changes anytime the tupledesc does. Zero if not yet determined. */ TupleDesc tupDesc; uint64 tupDesc_identifier; /* * Fields computed when TYPECACHE_RANGE_INFO is requested. Zeroes if not * a range type or information hasn't yet been requested. Note that * rng_cmp_proc_finfo could be different from the element type's default * btree comparison function. */ struct TypeCacheEntry *rngelemtype; /* range's element type */ Oid rng_collation; /* collation for comparisons, if any */ FmgrInfo rng_cmp_proc_finfo; /* comparison function */ FmgrInfo rng_canonical_finfo; /* canonicalization function, if any */ FmgrInfo rng_subdiff_finfo; /* difference function, if any */ /* * Domain's base type and typmod if it's a domain type. Zeroes if not * domain, or if information hasn't been requested. */ Oid domainBaseType; int32 domainBaseTypmod; /* * Domain constraint data if it's a domain type. NULL if not domain, or * if domain has no constraints, or if information hasn't been requested. */ DomainConstraintCache *domainData; /* Private data, for internal use of typcache.c only */ int flags; /* flags about what we've computed */ /* * Private information about an enum type. NULL if not enum or * information hasn't been requested. */ struct TypeCacheEnumData *enumData; /* We also maintain a list of all known domain-type cache entries */ struct TypeCacheEntry *nextDomain; } TypeCacheEntry; /* Bit flags to indicate which fields a given caller needs to have set */ #define TYPECACHE_EQ_OPR 0x0001 #define TYPECACHE_LT_OPR 0x0002 #define TYPECACHE_GT_OPR 0x0004 #define TYPECACHE_CMP_PROC 0x0008 #define TYPECACHE_HASH_PROC 0x0010 #define TYPECACHE_EQ_OPR_FINFO 0x0020 #define TYPECACHE_CMP_PROC_FINFO 0x0040 #define TYPECACHE_HASH_PROC_FINFO 0x0080 #define TYPECACHE_TUPDESC 0x0100 #define TYPECACHE_BTREE_OPFAMILY 0x0200 #define TYPECACHE_HASH_OPFAMILY 0x0400 #define TYPECACHE_RANGE_INFO 0x0800 #define TYPECACHE_DOMAIN_BASE_INFO 0x1000 #define TYPECACHE_DOMAIN_CONSTR_INFO 0x2000 #define TYPECACHE_HASH_EXTENDED_PROC 0x4000 #define TYPECACHE_HASH_EXTENDED_PROC_FINFO 0x8000 /* This value will not equal any valid tupledesc identifier, nor 0 */ #define INVALID_TUPLEDESC_IDENTIFIER ((uint64) 1) /* * Callers wishing to maintain a long-lived reference to a domain's constraint * set must store it in one of these. Use InitDomainConstraintRef() and * UpdateDomainConstraintRef() to manage it. Note: DomainConstraintState is * considered an executable expression type, so it's defined in execnodes.h. */ typedef struct DomainConstraintRef { List *constraints; /* list of DomainConstraintState nodes */ MemoryContext refctx; /* context holding DomainConstraintRef */ TypeCacheEntry *tcache; /* typcache entry for domain type */ bool need_exprstate; /* does caller need check_exprstate? */ /* Management data --- treat these fields as private to typcache.c */ DomainConstraintCache *dcc; /* current constraints, or NULL if none */ MemoryContextCallback callback; /* used to release refcount when done */ } DomainConstraintRef; typedef struct SharedRecordTypmodRegistry SharedRecordTypmodRegistry; extern TypeCacheEntry *lookup_type_cache(Oid type_id, int flags); extern void InitDomainConstraintRef(Oid type_id, DomainConstraintRef *ref, MemoryContext refctx, bool need_exprstate); extern void UpdateDomainConstraintRef(DomainConstraintRef *ref); extern bool DomainHasConstraints(Oid type_id); extern TupleDesc lookup_rowtype_tupdesc(Oid type_id, int32 typmod); extern TupleDesc lookup_rowtype_tupdesc_noerror(Oid type_id, int32 typmod, bool noError); extern TupleDesc lookup_rowtype_tupdesc_copy(Oid type_id, int32 typmod); extern TupleDesc lookup_rowtype_tupdesc_domain(Oid type_id, int32 typmod, bool noError); extern void assign_record_type_typmod(TupleDesc tupDesc); extern uint64 assign_record_type_identifier(Oid type_id, int32 typmod); extern int compare_values_of_enum(TypeCacheEntry *tcache, Oid arg1, Oid arg2); extern size_t SharedRecordTypmodRegistryEstimate(void); extern void SharedRecordTypmodRegistryInit(SharedRecordTypmodRegistry *, dsm_segment *segment, dsa_area *area); extern void SharedRecordTypmodRegistryAttach(SharedRecordTypmodRegistry *); #endif /* TYPCACHE_H */ libpg_query-13-2.1.0/src/postgres/include/utils/tzparser.h000066400000000000000000000022071413137616400235270ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * tzparser.h * Timezone offset file parsing definitions. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/tzparser.h * *------------------------------------------------------------------------- */ #ifndef TZPARSER_H #define TZPARSER_H #include "utils/datetime.h" /* * The result of parsing a timezone configuration file is an array of * these structs, in order by abbrev. We export this because datetime.c * needs it. */ typedef struct tzEntry { /* the actual data */ char *abbrev; /* TZ abbreviation (downcased) */ char *zone; /* zone name if dynamic abbrev, else NULL */ /* for a dynamic abbreviation, offset/is_dst are not used */ int offset; /* offset in seconds from UTC */ bool is_dst; /* true if a DST abbreviation */ /* source information (for error messages) */ int lineno; const char *filename; } tzEntry; extern TimeZoneAbbrevTable *load_tzoffsets(const char *filename); #endif /* TZPARSER_H */ libpg_query-13-2.1.0/src/postgres/include/utils/varlena.h000066400000000000000000000027041413137616400233070ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * varlena.h * Functions for the variable-length built-in types. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/varlena.h * *------------------------------------------------------------------------- */ #ifndef VARLENA_H #define VARLENA_H #include "nodes/pg_list.h" #include "utils/sortsupport.h" extern int varstr_cmp(const char *arg1, int len1, const char *arg2, int len2, Oid collid); extern void varstr_sortsupport(SortSupport ssup, Oid typid, Oid collid); extern int varstr_levenshtein(const char *source, int slen, const char *target, int tlen, int ins_c, int del_c, int sub_c, bool trusted); extern int varstr_levenshtein_less_equal(const char *source, int slen, const char *target, int tlen, int ins_c, int del_c, int sub_c, int max_d, bool trusted); extern List *textToQualifiedNameList(text *textval); extern bool SplitIdentifierString(char *rawstring, char separator, List **namelist); extern bool SplitDirectoriesString(char *rawstring, char separator, List **namelist); extern bool SplitGUCList(char *rawstring, char separator, List **namelist); extern text *replace_text_regexp(text *src_text, void *regexp, text *replace_text, bool glob); #endif libpg_query-13-2.1.0/src/postgres/include/utils/xml.h000066400000000000000000000053021413137616400224540ustar00rootroot00000000000000/*------------------------------------------------------------------------- * * xml.h * Declarations for XML data type support. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/utils/xml.h * *------------------------------------------------------------------------- */ #ifndef XML_H #define XML_H #include "executor/tablefunc.h" #include "fmgr.h" #include "nodes/execnodes.h" #include "nodes/primnodes.h" typedef struct varlena xmltype; typedef enum { XML_STANDALONE_YES, XML_STANDALONE_NO, XML_STANDALONE_NO_VALUE, XML_STANDALONE_OMITTED } XmlStandaloneType; typedef enum { XMLBINARY_BASE64, XMLBINARY_HEX } XmlBinaryType; typedef enum { PG_XML_STRICTNESS_LEGACY, /* ignore errors unless function result * indicates error condition */ PG_XML_STRICTNESS_WELLFORMED, /* ignore non-parser messages */ PG_XML_STRICTNESS_ALL /* report all notices/warnings/errors */ } PgXmlStrictness; /* struct PgXmlErrorContext is private to xml.c */ typedef struct PgXmlErrorContext PgXmlErrorContext; #define DatumGetXmlP(X) ((xmltype *) PG_DETOAST_DATUM(X)) #define XmlPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_XML_P(n) DatumGetXmlP(PG_GETARG_DATUM(n)) #define PG_RETURN_XML_P(x) PG_RETURN_POINTER(x) extern void pg_xml_init_library(void); extern PgXmlErrorContext *pg_xml_init(PgXmlStrictness strictness); extern void pg_xml_done(PgXmlErrorContext *errcxt, bool isError); extern bool pg_xml_error_occurred(PgXmlErrorContext *errcxt); extern void xml_ereport(PgXmlErrorContext *errcxt, int level, int sqlcode, const char *msg); extern xmltype *xmlconcat(List *args); extern xmltype *xmlelement(XmlExpr *xexpr, Datum *named_argvalue, bool *named_argnull, Datum *argvalue, bool *argnull); extern xmltype *xmlparse(text *data, XmlOptionType xmloption, bool preserve_whitespace); extern xmltype *xmlpi(const char *target, text *arg, bool arg_is_null, bool *result_is_null); extern xmltype *xmlroot(xmltype *data, text *version, int standalone); extern bool xml_is_document(xmltype *arg); extern text *xmltotext_with_xmloption(xmltype *data, XmlOptionType xmloption_arg); extern char *escape_xml(const char *str); extern char *map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped, bool escape_period); extern char *map_xml_name_to_sql_identifier(const char *name); extern char *map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings); extern int xmlbinary; /* XmlBinaryType, but int for guc enum */ extern int xmloption; /* XmlOptionType, but int for guc enum */ extern const TableFuncRoutine XmlTableRoutine; #endif /* XML_H */ libpg_query-13-2.1.0/src/postgres/src_backend_catalog_namespace.c000066400000000000000000001004141413137616400250300ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - NameListToString * - get_collation_oid *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * namespace.c * code to support accessing and searching namespaces * * This is separate from pg_namespace.c, which contains the routines that * directly manipulate the pg_namespace system catalog. This module * provides routines associated with defining a "namespace search path" * and implementing search-path-controlled searches. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/catalog/namespace.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "access/htup_details.h" #include "access/parallel.h" #include "access/xact.h" #include "access/xlog.h" #include "catalog/dependency.h" #include "catalog/objectaccess.h" #include "catalog/pg_authid.h" #include "catalog/pg_collation.h" #include "catalog/pg_conversion.h" #include "catalog/pg_namespace.h" #include "catalog/pg_opclass.h" #include "catalog/pg_operator.h" #include "catalog/pg_opfamily.h" #include "catalog/pg_proc.h" #include "catalog/pg_statistic_ext.h" #include "catalog/pg_ts_config.h" #include "catalog/pg_ts_dict.h" #include "catalog/pg_ts_parser.h" #include "catalog/pg_ts_template.h" #include "catalog/pg_type.h" #include "commands/dbcommands.h" #include "funcapi.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "parser/parse_func.h" #include "storage/ipc.h" #include "storage/lmgr.h" #include "storage/sinvaladt.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/catcache.h" #include "utils/guc.h" #include "utils/inval.h" #include "utils/lsyscache.h" #include "utils/memutils.h" #include "utils/syscache.h" #include "utils/varlena.h" /* * The namespace search path is a possibly-empty list of namespace OIDs. * In addition to the explicit list, implicitly-searched namespaces * may be included: * * 1. If a TEMP table namespace has been initialized in this session, it * is implicitly searched first. (The only time this doesn't happen is * when we are obeying an override search path spec that says not to use the * temp namespace, or the temp namespace is included in the explicit list.) * * 2. The system catalog namespace is always searched. If the system * namespace is present in the explicit path then it will be searched in * the specified order; otherwise it will be searched after TEMP tables and * *before* the explicit list. (It might seem that the system namespace * should be implicitly last, but this behavior appears to be required by * SQL99. Also, this provides a way to search the system namespace first * without thereby making it the default creation target namespace.) * * For security reasons, searches using the search path will ignore the temp * namespace when searching for any object type other than relations and * types. (We must allow types since temp tables have rowtypes.) * * The default creation target namespace is always the first element of the * explicit list. If the explicit list is empty, there is no default target. * * The textual specification of search_path can include "$user" to refer to * the namespace named the same as the current user, if any. (This is just * ignored if there is no such namespace.) Also, it can include "pg_temp" * to refer to the current backend's temp namespace. This is usually also * ignorable if the temp namespace hasn't been set up, but there's a special * case: if "pg_temp" appears first then it should be the default creation * target. We kluge this case a little bit so that the temp namespace isn't * set up until the first attempt to create something in it. (The reason for * klugery is that we can't create the temp namespace outside a transaction, * but initial GUC processing of search_path happens outside a transaction.) * activeTempCreationPending is true if "pg_temp" appears first in the string * but is not reflected in activeCreationNamespace because the namespace isn't * set up yet. * * In bootstrap mode, the search path is set equal to "pg_catalog", so that * the system namespace is the only one searched or inserted into. * initdb is also careful to set search_path to "pg_catalog" for its * post-bootstrap standalone backend runs. Otherwise the default search * path is determined by GUC. The factory default path contains the PUBLIC * namespace (if it exists), preceded by the user's personal namespace * (if one exists). * * We support a stack of "override" search path settings for use within * specific sections of backend code. namespace_search_path is ignored * whenever the override stack is nonempty. activeSearchPath is always * the actually active path; it points either to the search list of the * topmost stack entry, or to baseSearchPath which is the list derived * from namespace_search_path. * * If baseSearchPathValid is false, then baseSearchPath (and other * derived variables) need to be recomputed from namespace_search_path. * We mark it invalid upon an assignment to namespace_search_path or receipt * of a syscache invalidation event for pg_namespace. The recomputation * is done during the next non-overridden lookup attempt. Note that an * override spec is never subject to recomputation. * * Any namespaces mentioned in namespace_search_path that are not readable * by the current user ID are simply left out of baseSearchPath; so * we have to be willing to recompute the path when current userid changes. * namespaceUser is the userid the path has been computed for. * * Note: all data pointed to by these List variables is in TopMemoryContext. * * activePathGeneration is incremented whenever the effective values of * activeSearchPath/activeCreationNamespace/activeTempCreationPending change. * This can be used to quickly detect whether any change has happened since * a previous examination of the search path state. */ /* These variables define the actually active state: */ /* default place to create stuff; if InvalidOid, no default */ /* if true, activeCreationNamespace is wrong, it should be temp namespace */ /* current generation counter; make sure this is never zero */ /* These variables are the values last derived from namespace_search_path: */ /* The above four values are valid only if baseSearchPathValid */ /* Override requests are remembered in a stack of OverrideStackEntry structs */ typedef struct { List *searchPath; /* the desired search path */ Oid creationNamespace; /* the desired creation namespace */ int nestLevel; /* subtransaction nesting level */ } OverrideStackEntry; /* * myTempNamespace is InvalidOid until and unless a TEMP namespace is set up * in a particular backend session (this happens when a CREATE TEMP TABLE * command is first executed). Thereafter it's the OID of the temp namespace. * * myTempToastNamespace is the OID of the namespace for my temp tables' toast * tables. It is set when myTempNamespace is, and is InvalidOid before that. * * myTempNamespaceSubID shows whether we've created the TEMP namespace in the * current subtransaction. The flag propagates up the subtransaction tree, * so the main transaction will correctly recognize the flag if all * intermediate subtransactions commit. When it is InvalidSubTransactionId, * we either haven't made the TEMP namespace yet, or have successfully * committed its creation, depending on whether myTempNamespace is valid. */ /* * This is the user's textual search path specification --- it's the value * of the GUC variable 'search_path'. */ /* Local functions */ static void recomputeNamespacePath(void); static void AccessTempTableNamespace(bool force); static void InitTempTableNamespace(void); static void RemoveTempRelations(Oid tempNamespaceId); static void RemoveTempRelationsCallback(int code, Datum arg); static void NamespaceCallback(Datum arg, int cacheid, uint32 hashvalue); static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames, int **argnumbers); /* * RangeVarGetRelidExtended * Given a RangeVar describing an existing relation, * select the proper namespace and look up the relation OID. * * If the schema or relation is not found, return InvalidOid if flags contains * RVR_MISSING_OK, otherwise raise an error. * * If flags contains RVR_NOWAIT, throw an error if we'd have to wait for a * lock. * * If flags contains RVR_SKIP_LOCKED, return InvalidOid if we'd have to wait * for a lock. * * flags cannot contain both RVR_NOWAIT and RVR_SKIP_LOCKED. * * Note that if RVR_MISSING_OK and RVR_SKIP_LOCKED are both specified, a * return value of InvalidOid could either mean the relation is missing or it * could not be locked. * * Callback allows caller to check permissions or acquire additional locks * prior to grabbing the relation lock. */ /* * RangeVarGetCreationNamespace * Given a RangeVar describing a to-be-created relation, * choose which namespace to create it in. * * Note: calling this may result in a CommandCounterIncrement operation. * That will happen on the first request for a temp table in any particular * backend run; we will need to either create or clean out the temp schema. */ /* * RangeVarGetAndCheckCreationNamespace * * This function returns the OID of the namespace in which a new relation * with a given name should be created. If the user does not have CREATE * permission on the target namespace, this function will instead signal * an ERROR. * * If non-NULL, *existing_relation_id is set to the OID of any existing relation * with the same name which already exists in that namespace, or to InvalidOid * if no such relation exists. * * If lockmode != NoLock, the specified lock mode is acquired on the existing * relation, if any, provided that the current user owns the target relation. * However, if lockmode != NoLock and the user does not own the target * relation, we throw an ERROR, as we must not try to lock relations the * user does not have permissions on. * * As a side effect, this function acquires AccessShareLock on the target * namespace. Without this, the namespace could be dropped before our * transaction commits, leaving behind relations with relnamespace pointing * to a no-longer-existent namespace. * * As a further side-effect, if the selected namespace is a temporary namespace, * we mark the RangeVar as RELPERSISTENCE_TEMP. */ /* * Adjust the relpersistence for an about-to-be-created relation based on the * creation namespace, and throw an error for invalid combinations. */ /* * RelnameGetRelid * Try to resolve an unqualified relation name. * Returns OID if relation found in search path, else InvalidOid. */ /* * RelationIsVisible * Determine whether a relation (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified relation name". */ /* * TypenameGetTypid * Wrapper for binary compatibility. */ /* * TypenameGetTypidExtended * Try to resolve an unqualified datatype name. * Returns OID if type found in search path, else InvalidOid. * * This is essentially the same as RelnameGetRelid. */ /* * TypeIsVisible * Determine whether a type (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified type name". */ /* * FuncnameGetCandidates * Given a possibly-qualified function name and argument count, * retrieve a list of the possible matches. * * If nargs is -1, we return all functions matching the given name, * regardless of argument count. (argnames must be NIL, and expand_variadic * and expand_defaults must be false, in this case.) * * If argnames isn't NIL, we are considering a named- or mixed-notation call, * and only functions having all the listed argument names will be returned. * (We assume that length(argnames) <= nargs and all the passed-in names are * distinct.) The returned structs will include an argnumbers array showing * the actual argument index for each logical argument position. * * If expand_variadic is true, then variadic functions having the same number * or fewer arguments will be retrieved, with the variadic argument and any * additional argument positions filled with the variadic element type. * nvargs in the returned struct is set to the number of such arguments. * If expand_variadic is false, variadic arguments are not treated specially, * and the returned nvargs will always be zero. * * If expand_defaults is true, functions that could match after insertion of * default argument values will also be retrieved. In this case the returned * structs could have nargs > passed-in nargs, and ndargs is set to the number * of additional args (which can be retrieved from the function's * proargdefaults entry). * * It is not possible for nvargs and ndargs to both be nonzero in the same * list entry, since default insertion allows matches to functions with more * than nargs arguments while the variadic transformation requires the same * number or less. * * When argnames isn't NIL, the returned args[] type arrays are not ordered * according to the functions' declarations, but rather according to the call: * first any positional arguments, then the named arguments, then defaulted * arguments (if needed and allowed by expand_defaults). The argnumbers[] * array can be used to map this back to the catalog information. * argnumbers[k] is set to the proargtypes index of the k'th call argument. * * We search a single namespace if the function name is qualified, else * all namespaces in the search path. In the multiple-namespace case, * we arrange for entries in earlier namespaces to mask identical entries in * later namespaces. * * When expanding variadics, we arrange for non-variadic functions to mask * variadic ones if the expanded argument list is the same. It is still * possible for there to be conflicts between different variadic functions, * however. * * It is guaranteed that the return list will never contain multiple entries * with identical argument lists. When expand_defaults is true, the entries * could have more than nargs positions, but we still guarantee that they are * distinct in the first nargs positions. However, if argnames isn't NIL or * either expand_variadic or expand_defaults is true, there might be multiple * candidate functions that expand to identical argument lists. Rather than * throw error here, we report such situations by returning a single entry * with oid = 0 that represents a set of such conflicting candidates. * The caller might end up discarding such an entry anyway, but if it selects * such an entry it should react as though the call were ambiguous. * * If missing_ok is true, an empty list (NULL) is returned if the name was * schema- qualified with a schema that does not exist. Likewise if no * candidate is found for other reasons. */ /* * MatchNamedCall * Given a pg_proc heap tuple and a call's list of argument names, * check whether the function could match the call. * * The call could match if all supplied argument names are accepted by * the function, in positions after the last positional argument, and there * are defaults for all unsupplied arguments. * * The number of positional arguments is nargs - list_length(argnames). * Note caller has already done basic checks on argument count. * * On match, return true and fill *argnumbers with a palloc'd array showing * the mapping from call argument positions to actual function argument * numbers. Defaulted arguments are included in this map, at positions * after the last supplied argument. */ /* * FunctionIsVisible * Determine whether a function (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified function name with exact argument matches". */ /* * OpernameGetOprid * Given a possibly-qualified operator name and exact input datatypes, * look up the operator. Returns InvalidOid if not found. * * Pass oprleft = InvalidOid for a prefix op, oprright = InvalidOid for * a postfix op. * * If the operator name is not schema-qualified, it is sought in the current * namespace search path. If the name is schema-qualified and the given * schema does not exist, InvalidOid is returned. */ /* * OpernameGetCandidates * Given a possibly-qualified operator name and operator kind, * retrieve a list of the possible matches. * * If oprkind is '\0', we return all operators matching the given name, * regardless of arguments. * * We search a single namespace if the operator name is qualified, else * all namespaces in the search path. The return list will never contain * multiple entries with identical argument lists --- in the multiple- * namespace case, we arrange for entries in earlier namespaces to mask * identical entries in later namespaces. * * The returned items always have two args[] entries --- one or the other * will be InvalidOid for a prefix or postfix oprkind. nargs is 2, too. */ #define SPACE_PER_OP MAXALIGN(offsetof(struct _FuncCandidateList, args) + \ 2 * sizeof(Oid)) /* * OperatorIsVisible * Determine whether an operator (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified operator name with exact argument matches". */ /* * OpclassnameGetOpcid * Try to resolve an unqualified index opclass name. * Returns OID if opclass found in search path, else InvalidOid. * * This is essentially the same as TypenameGetTypid, but we have to have * an extra argument for the index AM OID. */ /* * OpclassIsVisible * Determine whether an opclass (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified opclass name". */ /* * OpfamilynameGetOpfid * Try to resolve an unqualified index opfamily name. * Returns OID if opfamily found in search path, else InvalidOid. * * This is essentially the same as TypenameGetTypid, but we have to have * an extra argument for the index AM OID. */ /* * OpfamilyIsVisible * Determine whether an opfamily (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified opfamily name". */ /* * lookup_collation * If there's a collation of the given name/namespace, and it works * with the given encoding, return its OID. Else return InvalidOid. */ /* * CollationGetCollid * Try to resolve an unqualified collation name. * Returns OID if collation found in search path, else InvalidOid. * * Note that this will only find collations that work with the current * database's encoding. */ /* * CollationIsVisible * Determine whether a collation (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified collation name". * * Note that only collations that work with the current database's encoding * will be considered visible. */ /* * ConversionGetConid * Try to resolve an unqualified conversion name. * Returns OID if conversion found in search path, else InvalidOid. * * This is essentially the same as RelnameGetRelid. */ /* * ConversionIsVisible * Determine whether a conversion (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified conversion name". */ /* * get_statistics_object_oid - find a statistics object by possibly qualified name * * If not found, returns InvalidOid if missing_ok, else throws error */ /* * StatisticsObjIsVisible * Determine whether a statistics object (identified by OID) is visible in * the current search path. Visible means "would be found by searching * for the unqualified statistics object name". */ /* * get_ts_parser_oid - find a TS parser by possibly qualified name * * If not found, returns InvalidOid if missing_ok, else throws error */ /* * TSParserIsVisible * Determine whether a parser (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified parser name". */ /* * get_ts_dict_oid - find a TS dictionary by possibly qualified name * * If not found, returns InvalidOid if missing_ok, else throws error */ /* * TSDictionaryIsVisible * Determine whether a dictionary (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified dictionary name". */ /* * get_ts_template_oid - find a TS template by possibly qualified name * * If not found, returns InvalidOid if missing_ok, else throws error */ /* * TSTemplateIsVisible * Determine whether a template (identified by OID) is visible in the * current search path. Visible means "would be found by searching * for the unqualified template name". */ /* * get_ts_config_oid - find a TS config by possibly qualified name * * If not found, returns InvalidOid if missing_ok, else throws error */ /* * TSConfigIsVisible * Determine whether a text search configuration (identified by OID) * is visible in the current search path. Visible means "would be found * by searching for the unqualified text search configuration name". */ /* * DeconstructQualifiedName * Given a possibly-qualified name expressed as a list of String nodes, * extract the schema name and object name. * * *nspname_p is set to NULL if there is no explicit schema name. */ /* * LookupNamespaceNoError * Look up a schema name. * * Returns the namespace OID, or InvalidOid if not found. * * Note this does NOT perform any permissions check --- callers are * responsible for being sure that an appropriate check is made. * In the majority of cases LookupExplicitNamespace is preferable. */ /* * LookupExplicitNamespace * Process an explicitly-specified schema name: look up the schema * and verify we have USAGE (lookup) rights in it. * * Returns the namespace OID */ /* * LookupCreationNamespace * Look up the schema and verify we have CREATE rights on it. * * This is just like LookupExplicitNamespace except for the different * permission check, and that we are willing to create pg_temp if needed. * * Note: calling this may result in a CommandCounterIncrement operation, * if we have to create or clean out the temp namespace. */ /* * Common checks on switching namespaces. * * We complain if either the old or new namespaces is a temporary schema * (or temporary toast schema), or if either the old or new namespaces is the * TOAST schema. */ /* * QualifiedNameGetCreationNamespace * Given a possibly-qualified name for an object (in List-of-Values * format), determine what namespace the object should be created in. * Also extract and return the object name (last component of list). * * Note: this does not apply any permissions check. Callers must check * for CREATE rights on the selected namespace when appropriate. * * Note: calling this may result in a CommandCounterIncrement operation, * if we have to create or clean out the temp namespace. */ /* * get_namespace_oid - given a namespace name, look up the OID * * If missing_ok is false, throw an error if namespace name not found. If * true, just return InvalidOid. */ /* * makeRangeVarFromNameList * Utility routine to convert a qualified-name list into RangeVar form. */ /* * NameListToString * Utility routine to convert a qualified-name list into a string. * * This is used primarily to form error messages, and so we do not quote * the list elements, for the sake of legibility. * * In most scenarios the list elements should always be Value strings, * but we also allow A_Star for the convenience of ColumnRef processing. */ char * NameListToString(List *names) { StringInfoData string; ListCell *l; initStringInfo(&string); foreach(l, names) { Node *name = (Node *) lfirst(l); if (l != list_head(names)) appendStringInfoChar(&string, '.'); if (IsA(name, String)) appendStringInfoString(&string, strVal(name)); else if (IsA(name, A_Star)) appendStringInfoChar(&string, '*'); else elog(ERROR, "unexpected node type in name list: %d", (int) nodeTag(name)); } return string.data; } /* * NameListToQuotedString * Utility routine to convert a qualified-name list into a string. * * Same as above except that names will be double-quoted where necessary, * so the string could be re-parsed (eg, by textToQualifiedNameList). */ /* * isTempNamespace - is the given namespace my temporary-table namespace? */ /* * isTempToastNamespace - is the given namespace my temporary-toast-table * namespace? */ /* * isTempOrTempToastNamespace - is the given namespace my temporary-table * namespace or my temporary-toast-table namespace? */ /* * isAnyTempNamespace - is the given namespace a temporary-table namespace * (either my own, or another backend's)? Temporary-toast-table namespaces * are included, too. */ /* * isOtherTempNamespace - is the given namespace some other backend's * temporary-table namespace (including temporary-toast-table namespaces)? * * Note: for most purposes in the C code, this function is obsolete. Use * RELATION_IS_OTHER_TEMP() instead to detect non-local temp relations. */ /* * checkTempNamespaceStatus - is the given namespace owned and actively used * by a backend? * * Note: this can be used while scanning relations in pg_class to detect * orphaned temporary tables or namespaces with a backend connected to a * given database. The result may be out of date quickly, so the caller * must be careful how to handle this information. */ /* * GetTempNamespaceBackendId - if the given namespace is a temporary-table * namespace (either my own, or another backend's), return the BackendId * that owns it. Temporary-toast-table namespaces are included, too. * If it isn't a temp namespace, return InvalidBackendId. */ /* * GetTempToastNamespace - get the OID of my temporary-toast-table namespace, * which must already be assigned. (This is only used when creating a toast * table for a temp table, so we must have already done InitTempTableNamespace) */ /* * GetTempNamespaceState - fetch status of session's temporary namespace * * This is used for conveying state to a parallel worker, and is not meant * for general-purpose access. */ /* * SetTempNamespaceState - set status of session's temporary namespace * * This is used for conveying state to a parallel worker, and is not meant for * general-purpose access. By transferring these namespace OIDs to workers, * we ensure they will have the same notion of the search path as their leader * does. */ /* * GetOverrideSearchPath - fetch current search path definition in form * used by PushOverrideSearchPath. * * The result structure is allocated in the specified memory context * (which might or might not be equal to CurrentMemoryContext); but any * junk created by revalidation calculations will be in CurrentMemoryContext. */ /* * CopyOverrideSearchPath - copy the specified OverrideSearchPath. * * The result structure is allocated in CurrentMemoryContext. */ /* * OverrideSearchPathMatchesCurrent - does path match current setting? * * This is tested over and over in some common code paths, and in the typical * scenario where the active search path seldom changes, it'll always succeed. * We make that case fast by keeping a generation counter that is advanced * whenever the active search path changes. */ /* * PushOverrideSearchPath - temporarily override the search path * * We allow nested overrides, hence the push/pop terminology. The GUC * search_path variable is ignored while an override is active. * * It's possible that newpath->useTemp is set but there is no longer any * active temp namespace, if the path was saved during a transaction that * created a temp namespace and was later rolled back. In that case we just * ignore useTemp. A plausible alternative would be to create a new temp * namespace, but for existing callers that's not necessary because an empty * temp namespace wouldn't affect their results anyway. * * It's also worth noting that other schemas listed in newpath might not * exist anymore either. We don't worry about this because OIDs that match * no existing namespace will simply not produce any hits during searches. */ /* * PopOverrideSearchPath - undo a previous PushOverrideSearchPath * * Any push during a (sub)transaction will be popped automatically at abort. * But it's caller error if a push isn't popped in normal control flow. */ /* * get_collation_oid - find a collation by possibly qualified name * * Note that this will only find collations that work with the current * database's encoding. */ Oid get_collation_oid(List *name, bool missing_ok) { return -1; } /* * get_conversion_oid - find a conversion by possibly qualified name */ /* * FindDefaultConversionProc - find default encoding conversion proc */ /* * recomputeNamespacePath - recompute path derived variables if needed. */ /* * AccessTempTableNamespace * Provide access to a temporary namespace, potentially creating it * if not present yet. This routine registers if the namespace gets * in use in this transaction. 'force' can be set to true to allow * the caller to enforce the creation of the temporary namespace for * use in this backend, which happens if its creation is pending. */ /* * InitTempTableNamespace * Initialize temp table namespace on first use in a particular backend */ /* * End-of-transaction cleanup for namespaces. */ /* * AtEOSubXact_Namespace * * At subtransaction commit, propagate the temp-namespace-creation * flag to the parent subtransaction. * * At subtransaction abort, forget the flag if we set it up. */ /* * Remove all relations in the specified temp namespace. * * This is called at backend shutdown (if we made any temp relations). * It is also called when we begin using a pre-existing temp namespace, * in order to clean out any relations that might have been created by * a crashed backend. */ /* * Callback to remove temp relations at backend exit. */ /* * Remove all temp tables from the temporary namespace. */ /* * Routines for handling the GUC variable 'search_path'. */ /* check_hook: validate new search_path value */ /* assign_hook: do extra actions as needed */ /* * InitializeSearchPath: initialize module during InitPostgres. * * This is called after we are up enough to be able to do catalog lookups. */ /* * NamespaceCallback * Syscache inval callback function */ /* * Fetch the active search path. The return value is a palloc'ed list * of OIDs; the caller is responsible for freeing this storage as * appropriate. * * The returned list includes the implicitly-prepended namespaces only if * includeImplicit is true. * * Note: calling this may result in a CommandCounterIncrement operation, * if we have to create or clean out the temp namespace. */ /* * Fetch the active search path into a caller-allocated array of OIDs. * Returns the number of path entries. (If this is more than sarray_len, * then the data didn't fit and is not all stored.) * * The returned list always includes the implicitly-prepended namespaces, * but never includes the temp namespace. (This is suitable for existing * users, which would want to ignore the temp namespace anyway.) This * definition allows us to not worry about initializing the temp namespace. */ /* * Export the FooIsVisible functions as SQL-callable functions. * * Note: as of Postgres 8.4, these will silently return NULL if called on * a nonexistent object OID, rather than failing. This is to avoid race * condition errors when a query that's scanning a catalog using an MVCC * snapshot uses one of these functions. The underlying IsVisible functions * always use an up-to-date snapshot and so might see the object as already * gone when it's still visible to the transaction snapshot. (There is no race * condition in the current coding because we don't accept sinval messages * between the SearchSysCacheExists test and the subsequent lookup.) */ libpg_query-13-2.1.0/src/postgres/src_backend_catalog_pg_proc.c000066400000000000000000000077331413137616400245370ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - function_parse_error_transpose *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pg_proc.c * routines to support manipulation of the pg_proc relation * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/catalog/pg_proc.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "access/htup_details.h" #include "access/table.h" #include "access/xact.h" #include "catalog/catalog.h" #include "catalog/dependency.h" #include "catalog/indexing.h" #include "catalog/objectaccess.h" #include "catalog/pg_language.h" #include "catalog/pg_namespace.h" #include "catalog/pg_proc.h" #include "catalog/pg_transform.h" #include "catalog/pg_type.h" #include "commands/defrem.h" #include "executor/functions.h" #include "funcapi.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "nodes/nodeFuncs.h" #include "parser/parse_coerce.h" #include "parser/parse_type.h" #include "tcop/pquery.h" #include "tcop/tcopprot.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/lsyscache.h" #include "utils/regproc.h" #include "utils/rel.h" #include "utils/syscache.h" typedef struct { char *proname; char *prosrc; } parse_error_callback_arg; static void sql_function_parse_error_callback(void *arg); static int match_prosrc_to_query(const char *prosrc, const char *queryText, int cursorpos); static bool match_prosrc_to_literal(const char *prosrc, const char *literal, int cursorpos, int *newcursorpos); /* ---------------------------------------------------------------- * ProcedureCreate * * Note: allParameterTypes, parameterModes, parameterNames, trftypes, and proconfig * are either arrays of the proper types or NULL. We declare them Datum, * not "ArrayType *", to avoid importing array.h into pg_proc.h. * ---------------------------------------------------------------- */ /* * Validator for internal functions * * Check that the given internal function name (the "prosrc" value) is * a known builtin function. */ /* * Validator for C language functions * * Make sure that the library file exists, is loadable, and contains * the specified link symbol. Also check for a valid function * information record. */ /* * Validator for SQL language functions * * Parse it here in order to be sure that it contains no syntax errors. */ /* * Error context callback for handling errors in SQL function definitions */ /* * Adjust a syntax error occurring inside the function body of a CREATE * FUNCTION or DO command. This can be used by any function validator or * anonymous-block handler, not only for SQL-language functions. * It is assumed that the syntax error position is initially relative to the * function body string (as passed in). If possible, we adjust the position * to reference the original command text; if we can't manage that, we set * up an "internal query" syntax error instead. * * Returns true if a syntax error was processed, false if not. */ bool function_parse_error_transpose(const char *prosrc) { return false; } /* * Try to locate the string literal containing the function body in the * given text of the CREATE FUNCTION or DO command. If successful, return * the character (not byte) index within the command corresponding to the * given character index within the literal. If not successful, return 0. */ /* * Try to match the given source text to a single-quoted literal. * If successful, adjust newcursorpos to correspond to the character * (not byte) index corresponding to cursorpos in the source text. * * At entry, literal points just past a ' character. We must check for the * trailing quote. */ libpg_query-13-2.1.0/src/postgres/src_backend_commands_define.c000066400000000000000000000051131413137616400245150ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - defGetInt32 *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * define.c * Support routines for various kinds of object creation. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/commands/define.c * * DESCRIPTION * The "DefineFoo" routines take the parse tree and pick out the * appropriate arguments/flags, passing the results to the * corresponding "FooDefine" routines (in src/catalog) that do * the actual catalog-munging. These routines also verify permission * of the user to execute the command. * * NOTES * These things must be defined and committed in the following order: * "create function": * input/output, recv/send procedures * "create type": * type * "create operator": * operators * * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include "catalog/namespace.h" #include "commands/defrem.h" #include "nodes/makefuncs.h" #include "parser/parse_type.h" #include "parser/scansup.h" #include "utils/builtins.h" /* * Extract a string value (otherwise uninterpreted) from a DefElem. */ /* * Extract a numeric value (actually double) from a DefElem. */ /* * Extract a boolean value from a DefElem. */ /* * Extract an int32 value from a DefElem. */ int32 defGetInt32(DefElem *def) { if (def->arg == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("%s requires an integer value", def->defname))); switch (nodeTag(def->arg)) { case T_Integer: return (int32) intVal(def->arg); default: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("%s requires an integer value", def->defname))); } return 0; /* keep compiler quiet */ } /* * Extract an int64 value from a DefElem. */ /* * Extract a possibly-qualified name (as a List of Strings) from a DefElem. */ /* * Extract a TypeName from a DefElem. * * Note: we do not accept a List arg here, because the parser will only * return a bare List when the name looks like an operator name. */ /* * Extract a type length indicator (either absolute bytes, or * -1 for "variable") from a DefElem. */ /* * Extract a list of string values (otherwise uninterpreted) from a DefElem. */ libpg_query-13-2.1.0/src/postgres/src_backend_libpq_pqcomm.c000066400000000000000000000451121413137616400240700ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - PqCommMethods *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pqcomm.c * Communication functions between the Frontend and the Backend * * These routines handle the low-level details of communication between * frontend and backend. They just shove data across the communication * channel, and are ignorant of the semantics of the data --- or would be, * except for major brain damage in the design of the old COPY OUT protocol. * Unfortunately, COPY OUT was designed to commandeer the communication * channel (it just transfers data without wrapping it into messages). * No other messages can be sent while COPY OUT is in progress; and if the * copy is aborted by an ereport(ERROR), we need to close out the copy so that * the frontend gets back into sync. Therefore, these routines have to be * aware of COPY OUT state. (New COPY-OUT is message-based and does *not* * set the DoingCopyOut flag.) * * NOTE: generally, it's a bad idea to emit outgoing messages directly with * pq_putbytes(), especially if the message would require multiple calls * to send. Instead, use the routines in pqformat.c to construct the message * in a buffer and then emit it in one call to pq_putmessage. This ensures * that the channel will not be clogged by an incomplete message if execution * is aborted by ereport(ERROR) partway through the message. The only * non-libpq code that should call pq_putbytes directly is old-style COPY OUT. * * At one time, libpq was shared between frontend and backend, but now * the backend's "backend/libpq" is quite separate from "interfaces/libpq". * All that remains is similarities of names to trap the unwary... * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/backend/libpq/pqcomm.c * *------------------------------------------------------------------------- */ /*------------------------ * INTERFACE ROUTINES * * setup/teardown: * StreamServerPort - Open postmaster's server port * StreamConnection - Create new connection with client * StreamClose - Close a client/backend connection * TouchSocketFiles - Protect socket files against /tmp cleaners * pq_init - initialize libpq at backend startup * socket_comm_reset - reset libpq during error recovery * socket_close - shutdown libpq at backend exit * * low-level I/O: * pq_getbytes - get a known number of bytes from connection * pq_getstring - get a null terminated string from connection * pq_getmessage - get a message with length word from connection * pq_getbyte - get next byte from connection * pq_peekbyte - peek at next byte from connection * pq_putbytes - send bytes to connection (not flushed until pq_flush) * pq_flush - flush pending output * pq_flush_if_writable - flush pending output if writable without blocking * pq_getbyte_if_available - get a byte if available without blocking * * message-level I/O (and old-style-COPY-OUT cruft): * pq_putmessage - send a normal message (suppressed in COPY OUT mode) * pq_putmessage_noblock - buffer a normal message (suppressed in COPY OUT) * pq_startcopyout - inform libpq that a COPY OUT transfer is beginning * pq_endcopyout - end a COPY OUT transfer * *------------------------ */ #include "postgres.h" #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_NETINET_TCP_H #include #endif #include #ifdef _MSC_VER /* mstcpip.h is missing on mingw */ #include #endif #include "common/ip.h" #include "libpq/libpq.h" #include "miscadmin.h" #include "port/pg_bswap.h" #include "storage/ipc.h" #include "utils/guc.h" #include "utils/memutils.h" /* * Cope with the various platform-specific ways to spell TCP keepalive socket * options. This doesn't cover Windows, which as usual does its own thing. */ #if defined(TCP_KEEPIDLE) /* TCP_KEEPIDLE is the name of this option on Linux and *BSD */ #define PG_TCP_KEEPALIVE_IDLE TCP_KEEPIDLE #define PG_TCP_KEEPALIVE_IDLE_STR "TCP_KEEPIDLE" #elif defined(TCP_KEEPALIVE_THRESHOLD) /* TCP_KEEPALIVE_THRESHOLD is the name of this option on Solaris >= 11 */ #define PG_TCP_KEEPALIVE_IDLE TCP_KEEPALIVE_THRESHOLD #define PG_TCP_KEEPALIVE_IDLE_STR "TCP_KEEPALIVE_THRESHOLD" #elif defined(TCP_KEEPALIVE) && defined(__darwin__) /* TCP_KEEPALIVE is the name of this option on macOS */ /* Caution: Solaris has this symbol but it means something different */ #define PG_TCP_KEEPALIVE_IDLE TCP_KEEPALIVE #define PG_TCP_KEEPALIVE_IDLE_STR "TCP_KEEPALIVE" #endif /* * Configuration options */ /* Where the Unix socket files are (list of palloc'd strings) */ /* * Buffers for low-level I/O. * * The receive buffer is fixed size. Send buffer is usually 8k, but can be * enlarged by pq_putmessage_noblock() if the message doesn't fit otherwise. */ #define PQ_SEND_BUFFER_SIZE 8192 #define PQ_RECV_BUFFER_SIZE 8192 /* Size send buffer */ /* Next index to store a byte in PqSendBuffer */ /* Next index to send a byte in PqSendBuffer */ /* Next index to read a byte from PqRecvBuffer */ /* End of data available in PqRecvBuffer */ /* * Message status */ /* busy sending data to the client */ /* in the middle of reading a message */ /* in old-protocol COPY OUT processing */ /* Internal functions */ static void socket_comm_reset(void); static void socket_close(int code, Datum arg); static void socket_set_nonblocking(bool nonblocking); static int socket_flush(void); static int socket_flush_if_writable(void); static bool socket_is_send_pending(void); static int socket_putmessage(char msgtype, const char *s, size_t len); static void socket_putmessage_noblock(char msgtype, const char *s, size_t len); static void socket_startcopyout(void); static void socket_endcopyout(bool errorAbort); static int internal_putbytes(const char *s, size_t len); static int internal_flush(void); #ifdef HAVE_UNIX_SOCKETS static int Lock_AF_UNIX(const char *unixSocketDir, const char *unixSocketPath); static int Setup_AF_UNIX(const char *sock_path); #endif /* HAVE_UNIX_SOCKETS */ const PQcommMethods *PqCommMethods = NULL; /* -------------------------------- * pq_init - initialize libpq at backend startup * -------------------------------- */ #ifndef WIN32 #endif /* -------------------------------- * socket_comm_reset - reset libpq during error recovery * * This is called from error recovery at the outer idle loop. It's * just to get us out of trouble if we somehow manage to elog() from * inside a pqcomm.c routine (which ideally will never happen, but...) * -------------------------------- */ /* -------------------------------- * socket_close - shutdown libpq at backend exit * * This is the one pg_on_exit_callback in place during BackendInitialize(). * That function's unusual signal handling constrains that this callback be * safe to run at any instant. * -------------------------------- */ #ifdef ENABLE_GSS #endif /* ENABLE_GSS */ /* * Streams -- wrapper around Unix socket system calls * * * Stream functions are used for vanilla TCP connection protocol. */ /* * StreamServerPort -- open a "listening" port to accept connections. * * family should be AF_UNIX or AF_UNSPEC; portNumber is the port number. * For AF_UNIX ports, hostName should be NULL and unixSocketDir must be * specified. For TCP ports, hostName is either NULL for all interfaces or * the interface to listen on, and unixSocketDir is ignored (can be NULL). * * Successfully opened sockets are added to the ListenSocket[] array (of * length MaxListen), at the first position that isn't PGINVALID_SOCKET. * * RETURNS: STATUS_OK or STATUS_ERROR */ #ifdef HAVE_UNIX_SOCKETS #endif #if !defined(WIN32) || defined(IPV6_V6ONLY) #endif #ifdef HAVE_UNIX_SOCKETS #endif /* HAVE_UNIX_SOCKETS */ #ifdef HAVE_IPV6 #endif #ifdef HAVE_UNIX_SOCKETS #endif #ifdef HAVE_UNIX_SOCKETS #endif #ifndef WIN32 #endif #ifdef IPV6_V6ONLY #endif #ifdef HAVE_UNIX_SOCKETS #endif #ifdef HAVE_UNIX_SOCKETS #endif #ifdef HAVE_UNIX_SOCKETS /* * Lock_AF_UNIX -- configure unix socket file path */ /* * Setup_AF_UNIX -- configure unix socket permissions */ #ifdef WIN32 #else #endif #endif /* HAVE_UNIX_SOCKETS */ /* * StreamConnection -- create a new connection with client using * server port. Set port->sock to the FD of the new connection. * * ASSUME: that this doesn't need to be non-blocking because * the Postmaster uses select() to tell when the server master * socket is ready for accept(). * * RETURNS: STATUS_OK or STATUS_ERROR */ #ifdef WIN32 #endif #ifdef TCP_NODELAY #endif #ifdef WIN32 #endif /* * StreamClose -- close a client/backend connection * * NOTE: this is NOT used to terminate a session; it is just used to release * the file descriptor in a process that should no longer have the socket * open. (For example, the postmaster calls this after passing ownership * of the connection to a child process.) It is expected that someone else * still has the socket open. So, we only want to close the descriptor, * we do NOT want to send anything to the far end. */ /* * TouchSocketFiles -- mark socket files as recently accessed * * This routine should be called every so often to ensure that the socket * files have a recent mod date (ordinary operations on sockets usually won't * change the mod date). That saves them from being removed by * overenthusiastic /tmp-directory-cleaner daemons. (Another reason we should * never have put the socket file in /tmp...) */ /* * RemoveSocketFiles -- unlink socket files at postmaster shutdown */ /* -------------------------------- * Low-level I/O routines begin here. * * These routines communicate with a frontend client across a connection * already established by the preceding routines. * -------------------------------- */ /* -------------------------------- * socket_set_nonblocking - set socket blocking/non-blocking * * Sets the socket non-blocking if nonblocking is true, or sets it * blocking otherwise. * -------------------------------- */ /* -------------------------------- * pq_recvbuf - load some bytes into the input buffer * * returns 0 if OK, EOF if trouble * -------------------------------- */ /* -------------------------------- * pq_getbyte - get a single byte from connection, or return EOF * -------------------------------- */ /* -------------------------------- * pq_peekbyte - peek at next byte from connection * * Same as pq_getbyte() except we don't advance the pointer. * -------------------------------- */ /* -------------------------------- * pq_getbyte_if_available - get a single byte from connection, * if available * * The received byte is stored in *c. Returns 1 if a byte was read, * 0 if no data was available, or EOF if trouble. * -------------------------------- */ /* -------------------------------- * pq_getbytes - get a known number of bytes from connection * * returns 0 if OK, EOF if trouble * -------------------------------- */ /* -------------------------------- * pq_discardbytes - throw away a known number of bytes * * same as pq_getbytes except we do not copy the data to anyplace. * this is used for resynchronizing after read errors. * * returns 0 if OK, EOF if trouble * -------------------------------- */ /* -------------------------------- * pq_getstring - get a null terminated string from connection * * The return value is placed in an expansible StringInfo, which has * already been initialized by the caller. * * This is used only for dealing with old-protocol clients. The idea * is to produce a StringInfo that looks the same as we would get from * pq_getmessage() with a newer client; we will then process it with * pq_getmsgstring. Therefore, no character set conversion is done here, * even though this is presumably useful only for text. * * returns 0 if OK, EOF if trouble * -------------------------------- */ /* -------------------------------- * pq_startmsgread - begin reading a message from the client. * * This must be called before any of the pq_get* functions. * -------------------------------- */ /* -------------------------------- * pq_endmsgread - finish reading message. * * This must be called after reading a V2 protocol message with * pq_getstring() and friends, to indicate that we have read the whole * message. In V3 protocol, pq_getmessage() does this implicitly. * -------------------------------- */ /* -------------------------------- * pq_is_reading_msg - are we currently reading a message? * * This is used in error recovery at the outer idle loop to detect if we have * lost protocol sync, and need to terminate the connection. pq_startmsgread() * will check for that too, but it's nicer to detect it earlier. * -------------------------------- */ /* -------------------------------- * pq_getmessage - get a message with length word from connection * * The return value is placed in an expansible StringInfo, which has * already been initialized by the caller. * Only the message body is placed in the StringInfo; the length word * is removed. Also, s->cursor is initialized to zero for convenience * in scanning the message contents. * * If maxlen is not zero, it is an upper limit on the length of the * message we are willing to accept. We abort the connection (by * returning EOF) if client tries to send more than that. * * returns 0 if OK, EOF if trouble * -------------------------------- */ /* -------------------------------- * pq_putbytes - send bytes to connection (not flushed until pq_flush) * * returns 0 if OK, EOF if trouble * -------------------------------- */ /* -------------------------------- * socket_flush - flush pending output * * returns 0 if OK, EOF if trouble * -------------------------------- */ /* -------------------------------- * internal_flush - flush pending output * * Returns 0 if OK (meaning everything was sent, or operation would block * and the socket is in non-blocking mode), or EOF if trouble. * -------------------------------- */ /* -------------------------------- * pq_flush_if_writable - flush pending output if writable without blocking * * Returns 0 if OK, or EOF if trouble. * -------------------------------- */ /* -------------------------------- * socket_is_send_pending - is there any pending data in the output buffer? * -------------------------------- */ /* -------------------------------- * Message-level I/O routines begin here. * * These routines understand about the old-style COPY OUT protocol. * -------------------------------- */ /* -------------------------------- * socket_putmessage - send a normal message (suppressed in COPY OUT mode) * * If msgtype is not '\0', it is a message type code to place before * the message body. If msgtype is '\0', then the message has no type * code (this is only valid in pre-3.0 protocols). * * len is the length of the message body data at *s. In protocol 3.0 * and later, a message length word (equal to len+4 because it counts * itself too) is inserted by this routine. * * All normal messages are suppressed while old-style COPY OUT is in * progress. (In practice only a few notice messages might get emitted * then; dropping them is annoying, but at least they will still appear * in the postmaster log.) * * We also suppress messages generated while pqcomm.c is busy. This * avoids any possibility of messages being inserted within other * messages. The only known trouble case arises if SIGQUIT occurs * during a pqcomm.c routine --- quickdie() will try to send a warning * message, and the most reasonable approach seems to be to drop it. * * returns 0 if OK, EOF if trouble * -------------------------------- */ /* -------------------------------- * pq_putmessage_noblock - like pq_putmessage, but never blocks * * If the output buffer is too small to hold the message, the buffer * is enlarged. */ /* -------------------------------- * socket_startcopyout - inform libpq that an old-style COPY OUT transfer * is beginning * -------------------------------- */ /* -------------------------------- * socket_endcopyout - end an old-style COPY OUT transfer * * If errorAbort is indicated, we are aborting a COPY OUT due to an error, * and must send a terminator line. Since a partial data line might have * been emitted, send a couple of newlines first (the first one could * get absorbed by a backslash...) Note that old-style COPY OUT does * not allow binary transfers, so a textual terminator is always correct. * -------------------------------- */ /* * Support for TCP Keepalive parameters */ /* * On Windows, we need to set both idle and interval at the same time. * We also cannot reset them to the default (setting to zero will * actually set them to zero, not default), therefore we fallback to * the out-of-the-box default instead. */ #if defined(WIN32) && defined(SIO_KEEPALIVE_VALS) static int pq_setkeepaliveswin32(Port *port, int idle, int interval) { struct tcp_keepalive ka; DWORD retsize; if (idle <= 0) idle = 2 * 60 * 60; /* default = 2 hours */ if (interval <= 0) interval = 1; /* default = 1 second */ ka.onoff = 1; ka.keepalivetime = idle * 1000; ka.keepaliveinterval = interval * 1000; if (WSAIoctl(port->sock, SIO_KEEPALIVE_VALS, (LPVOID) &ka, sizeof(ka), NULL, 0, &retsize, NULL, NULL) != 0) { elog(LOG, "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui", WSAGetLastError()); return STATUS_ERROR; } if (port->keepalives_idle != idle) port->keepalives_idle = idle; if (port->keepalives_interval != interval) port->keepalives_interval = interval; return STATUS_OK; } #endif #if defined(PG_TCP_KEEPALIVE_IDLE) || defined(SIO_KEEPALIVE_VALS) #ifndef WIN32 #else /* WIN32 */ #endif /* WIN32 */ #else #endif #if defined(PG_TCP_KEEPALIVE_IDLE) || defined(SIO_KEEPALIVE_VALS) #ifndef WIN32 #else /* WIN32 */ #endif #else #endif #if defined(TCP_KEEPINTVL) || defined(SIO_KEEPALIVE_VALS) #ifndef WIN32 #else #endif /* WIN32 */ #else #endif #if defined(TCP_KEEPINTVL) || defined(SIO_KEEPALIVE_VALS) #ifndef WIN32 #else /* WIN32 */ #endif #else #endif #ifdef TCP_KEEPCNT #else #endif #ifdef TCP_KEEPCNT #else #endif #ifdef TCP_USER_TIMEOUT #else #endif #ifdef TCP_USER_TIMEOUT #else #endif libpg_query-13-2.1.0/src/postgres/src_backend_nodes_bitmapset.c000066400000000000000000000264621413137616400245740ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - bms_copy * - bms_equal * - bms_is_empty * - bms_first_member * - bms_free * - bms_next_member * - bms_num_members *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * bitmapset.c * PostgreSQL generic bitmap set package * * A bitmap set can represent any set of nonnegative integers, although * it is mainly intended for sets where the maximum value is not large, * say at most a few hundred. By convention, a NULL pointer is always * accepted by all operations to represent the empty set. (But beware * that this is not the only representation of the empty set. Use * bms_is_empty() in preference to testing for NULL.) * * * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/backend/nodes/bitmapset.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "common/hashfn.h" #include "nodes/bitmapset.h" #include "nodes/pg_list.h" #include "port/pg_bitutils.h" #define WORDNUM(x) ((x) / BITS_PER_BITMAPWORD) #define BITNUM(x) ((x) % BITS_PER_BITMAPWORD) #define BITMAPSET_SIZE(nwords) \ (offsetof(Bitmapset, words) + (nwords) * sizeof(bitmapword)) /*---------- * This is a well-known cute trick for isolating the rightmost one-bit * in a word. It assumes two's complement arithmetic. Consider any * nonzero value, and focus attention on the rightmost one. The value is * then something like * xxxxxx10000 * where x's are unspecified bits. The two's complement negative is formed * by inverting all the bits and adding one. Inversion gives * yyyyyy01111 * where each y is the inverse of the corresponding x. Incrementing gives * yyyyyy10000 * and then ANDing with the original value gives * 00000010000 * This works for all cases except original value = zero, where of course * we get zero. *---------- */ #define RIGHTMOST_ONE(x) ((signedbitmapword) (x) & -((signedbitmapword) (x))) #define HAS_MULTIPLE_ONES(x) ((bitmapword) RIGHTMOST_ONE(x) != (x)) /* Select appropriate bit-twiddling functions for bitmap word size */ #if BITS_PER_BITMAPWORD == 32 #define bmw_leftmost_one_pos(w) pg_leftmost_one_pos32(w) #define bmw_rightmost_one_pos(w) pg_rightmost_one_pos32(w) #define bmw_popcount(w) pg_popcount32(w) #elif BITS_PER_BITMAPWORD == 64 #define bmw_leftmost_one_pos(w) pg_leftmost_one_pos64(w) #define bmw_rightmost_one_pos(w) pg_rightmost_one_pos64(w) #define bmw_popcount(w) pg_popcount64(w) #else #error "invalid BITS_PER_BITMAPWORD" #endif /* * bms_copy - make a palloc'd copy of a bitmapset */ Bitmapset * bms_copy(const Bitmapset *a) { Bitmapset *result; size_t size; if (a == NULL) return NULL; size = BITMAPSET_SIZE(a->nwords); result = (Bitmapset *) palloc(size); memcpy(result, a, size); return result; } /* * bms_equal - are two bitmapsets equal? * * This is logical not physical equality; in particular, a NULL pointer will * be reported as equal to a palloc'd value containing no members. */ bool bms_equal(const Bitmapset *a, const Bitmapset *b) { const Bitmapset *shorter; const Bitmapset *longer; int shortlen; int longlen; int i; /* Handle cases where either input is NULL */ if (a == NULL) { if (b == NULL) return true; return bms_is_empty(b); } else if (b == NULL) return bms_is_empty(a); /* Identify shorter and longer input */ if (a->nwords <= b->nwords) { shorter = a; longer = b; } else { shorter = b; longer = a; } /* And process */ shortlen = shorter->nwords; for (i = 0; i < shortlen; i++) { if (shorter->words[i] != longer->words[i]) return false; } longlen = longer->nwords; for (; i < longlen; i++) { if (longer->words[i] != 0) return false; } return true; } /* * bms_compare - qsort-style comparator for bitmapsets * * This guarantees to report values as equal iff bms_equal would say they are * equal. Otherwise, the highest-numbered bit that is set in one value but * not the other determines the result. (This rule means that, for example, * {6} is greater than {5}, which seems plausible.) */ /* * bms_make_singleton - build a bitmapset containing a single member */ /* * bms_free - free a bitmapset * * Same as pfree except for allowing NULL input */ void bms_free(Bitmapset *a) { if (a) pfree(a); } /* * These operations all make a freshly palloc'd result, * leaving their inputs untouched */ /* * bms_union - set union */ /* * bms_intersect - set intersection */ /* * bms_difference - set difference (ie, A without members of B) */ /* * bms_is_subset - is A a subset of B? */ /* * bms_subset_compare - compare A and B for equality/subset relationships * * This is more efficient than testing bms_is_subset in both directions. */ /* * bms_is_member - is X a member of A? */ /* * bms_member_index * determine 0-based index of member x in the bitmap * * Returns (-1) when x is not a member. */ /* * bms_overlap - do sets overlap (ie, have a nonempty intersection)? */ /* * bms_overlap_list - does a set overlap an integer list? */ /* * bms_nonempty_difference - do sets have a nonempty difference? */ /* * bms_singleton_member - return the sole integer member of set * * Raises error if |a| is not 1. */ /* * bms_get_singleton_member * * Test whether the given set is a singleton. * If so, set *member to the value of its sole member, and return true. * If not, return false, without changing *member. * * This is more convenient and faster than calling bms_membership() and then * bms_singleton_member(), if we don't care about distinguishing empty sets * from multiple-member sets. */ /* * bms_num_members - count members of set */ int bms_num_members(const Bitmapset *a) { int result = 0; int nwords; int wordnum; if (a == NULL) return 0; nwords = a->nwords; for (wordnum = 0; wordnum < nwords; wordnum++) { bitmapword w = a->words[wordnum]; /* No need to count the bits in a zero word */ if (w != 0) result += bmw_popcount(w); } return result; } /* * bms_membership - does a set have zero, one, or multiple members? * * This is faster than making an exact count with bms_num_members(). */ /* * bms_is_empty - is a set empty? * * This is even faster than bms_membership(). */ bool bms_is_empty(const Bitmapset *a) { int nwords; int wordnum; if (a == NULL) return true; nwords = a->nwords; for (wordnum = 0; wordnum < nwords; wordnum++) { bitmapword w = a->words[wordnum]; if (w != 0) return false; } return true; } /* * These operations all "recycle" their non-const inputs, ie, either * return the modified input or pfree it if it can't hold the result. * * These should generally be used in the style * * foo = bms_add_member(foo, x); */ /* * bms_add_member - add a specified member to set * * Input set is modified or recycled! */ /* * bms_del_member - remove a specified member from set * * No error if x is not currently a member of set * * Input set is modified in-place! */ /* * bms_add_members - like bms_union, but left input is recycled */ /* * bms_add_range * Add members in the range of 'lower' to 'upper' to the set. * * Note this could also be done by calling bms_add_member in a loop, however, * using this function will be faster when the range is large as we work at * the bitmapword level rather than at bit level. */ /* * bms_int_members - like bms_intersect, but left input is recycled */ /* * bms_del_members - like bms_difference, but left input is recycled */ /* * bms_join - like bms_union, but *both* inputs are recycled */ /* * bms_first_member - find and remove first member of a set * * Returns -1 if set is empty. NB: set is destructively modified! * * This is intended as support for iterating through the members of a set. * The typical pattern is * * while ((x = bms_first_member(inputset)) >= 0) * process member x; * * CAUTION: this destroys the content of "inputset". If the set must * not be modified, use bms_next_member instead. */ int bms_first_member(Bitmapset *a) { int nwords; int wordnum; if (a == NULL) return -1; nwords = a->nwords; for (wordnum = 0; wordnum < nwords; wordnum++) { bitmapword w = a->words[wordnum]; if (w != 0) { int result; w = RIGHTMOST_ONE(w); a->words[wordnum] &= ~w; result = wordnum * BITS_PER_BITMAPWORD; result += bmw_rightmost_one_pos(w); return result; } } return -1; } /* * bms_next_member - find next member of a set * * Returns smallest member greater than "prevbit", or -2 if there is none. * "prevbit" must NOT be less than -1, or the behavior is unpredictable. * * This is intended as support for iterating through the members of a set. * The typical pattern is * * x = -1; * while ((x = bms_next_member(inputset, x)) >= 0) * process member x; * * Notice that when there are no more members, we return -2, not -1 as you * might expect. The rationale for that is to allow distinguishing the * loop-not-started state (x == -1) from the loop-completed state (x == -2). * It makes no difference in simple loop usage, but complex iteration logic * might need such an ability. */ int bms_next_member(const Bitmapset *a, int prevbit) { int nwords; int wordnum; bitmapword mask; if (a == NULL) return -2; nwords = a->nwords; prevbit++; mask = (~(bitmapword) 0) << BITNUM(prevbit); for (wordnum = WORDNUM(prevbit); wordnum < nwords; wordnum++) { bitmapword w = a->words[wordnum]; /* ignore bits before prevbit */ w &= mask; if (w != 0) { int result; result = wordnum * BITS_PER_BITMAPWORD; result += bmw_rightmost_one_pos(w); return result; } /* in subsequent words, consider all bits */ mask = (~(bitmapword) 0); } return -2; } /* * bms_prev_member - find prev member of a set * * Returns largest member less than "prevbit", or -2 if there is none. * "prevbit" must NOT be more than one above the highest possible bit that can * be set at the Bitmapset at its current size. * * To ease finding the highest set bit for the initial loop, the special * prevbit value of -1 can be passed to have the function find the highest * valued member in the set. * * This is intended as support for iterating through the members of a set in * reverse. The typical pattern is * * x = -1; * while ((x = bms_prev_member(inputset, x)) >= 0) * process member x; * * Notice that when there are no more members, we return -2, not -1 as you * might expect. The rationale for that is to allow distinguishing the * loop-not-started state (x == -1) from the loop-completed state (x == -2). * It makes no difference in simple loop usage, but complex iteration logic * might need such an ability. */ /* * bms_hash_value - compute a hash key for a Bitmapset * * Note: we must ensure that any two bitmapsets that are bms_equal() will * hash to the same value; in practice this means that trailing all-zero * words must not affect the result. Hence we strip those before applying * hash_any(). */ /* * bitmap_hash - hash function for keys that are (pointers to) Bitmapsets * * Note: don't forget to specify bitmap_match as the match function! */ /* * bitmap_match - match function to use with bitmap_hash */ libpg_query-13-2.1.0/src/postgres/src_backend_nodes_copyfuncs.c000066400000000000000000003721031413137616400246110ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - copyObjectImpl * - _copyPlannedStmt * - _copyPlan * - CopyPlanFields * - _copyResult * - _copyProjectSet * - _copyModifyTable * - _copyAppend * - _copyMergeAppend * - _copyRecursiveUnion * - _copyBitmapAnd * - _copyBitmapOr * - _copyScan * - CopyScanFields * - _copyGather * - _copyGatherMerge * - _copySeqScan * - _copySampleScan * - _copyIndexScan * - _copyIndexOnlyScan * - _copyBitmapIndexScan * - _copyBitmapHeapScan * - _copyTidScan * - _copySubqueryScan * - _copyFunctionScan * - _copyTableFuncScan * - _copyValuesScan * - _copyCteScan * - _copyNamedTuplestoreScan * - _copyWorkTableScan * - _copyForeignScan * - _copyCustomScan * - _copyJoin * - CopyJoinFields * - _copyNestLoop * - _copyMergeJoin * - _copyHashJoin * - _copyMaterial * - _copySort * - CopySortFields * - _copyIncrementalSort * - _copyGroup * - _copyAgg * - _copyWindowAgg * - _copyUnique * - _copyHash * - _copySetOp * - _copyLockRows * - _copyLimit * - _copyNestLoopParam * - _copyPlanRowMark * - _copyPartitionPruneInfo * - _copyPartitionedRelPruneInfo * - _copyPartitionPruneStepOp * - _copyPartitionPruneStepCombine * - _copyPlanInvalItem * - _copyAlias * - _copyRangeVar * - _copyTableFunc * - _copyIntoClause * - _copyVar * - _copyConst * - _copyParam * - _copyAggref * - _copyGroupingFunc * - _copyWindowFunc * - _copySubscriptingRef * - _copyFuncExpr * - _copyNamedArgExpr * - _copyOpExpr * - _copyDistinctExpr * - _copyNullIfExpr * - _copyScalarArrayOpExpr * - _copyBoolExpr * - _copySubLink * - _copySubPlan * - _copyAlternativeSubPlan * - _copyFieldSelect * - _copyFieldStore * - _copyRelabelType * - _copyCoerceViaIO * - _copyArrayCoerceExpr * - _copyConvertRowtypeExpr * - _copyCollateExpr * - _copyCaseExpr * - _copyCaseWhen * - _copyCaseTestExpr * - _copyArrayExpr * - _copyRowExpr * - _copyRowCompareExpr * - _copyCoalesceExpr * - _copyMinMaxExpr * - _copySQLValueFunction * - _copyXmlExpr * - _copyNullTest * - _copyBooleanTest * - _copyCoerceToDomain * - _copyCoerceToDomainValue * - _copySetToDefault * - _copyCurrentOfExpr * - _copyNextValueExpr * - _copyInferenceElem * - _copyTargetEntry * - _copyRangeTblRef * - _copyJoinExpr * - _copyFromExpr * - _copyOnConflictExpr * - _copyPathKey * - _copyRestrictInfo * - _copyPlaceHolderVar * - _copySpecialJoinInfo * - _copyAppendRelInfo * - _copyPlaceHolderInfo * - _copyValue * - _copyExtensibleNode * - _copyQuery * - _copyRawStmt * - _copyInsertStmt * - _copyDeleteStmt * - _copyUpdateStmt * - _copySelectStmt * - _copySetOperationStmt * - _copyAlterTableStmt * - _copyAlterTableCmd * - _copyAlterCollationStmt * - _copyAlterDomainStmt * - _copyGrantStmt * - _copyGrantRoleStmt * - _copyAlterDefaultPrivilegesStmt * - _copyDeclareCursorStmt * - _copyClosePortalStmt * - _copyCallStmt * - _copyClusterStmt * - _copyCopyStmt * - _copyCreateStmt * - CopyCreateStmtFields * - _copyTableLikeClause * - _copyDefineStmt * - _copyDropStmt * - _copyTruncateStmt * - _copyCommentStmt * - _copySecLabelStmt * - _copyFetchStmt * - _copyIndexStmt * - _copyCreateStatsStmt * - _copyAlterStatsStmt * - _copyCreateFunctionStmt * - _copyFunctionParameter * - _copyAlterFunctionStmt * - _copyDoStmt * - _copyRenameStmt * - _copyAlterObjectDependsStmt * - _copyAlterObjectSchemaStmt * - _copyAlterOwnerStmt * - _copyAlterOperatorStmt * - _copyAlterTypeStmt * - _copyRuleStmt * - _copyNotifyStmt * - _copyListenStmt * - _copyUnlistenStmt * - _copyTransactionStmt * - _copyCompositeTypeStmt * - _copyCreateEnumStmt * - _copyCreateRangeStmt * - _copyAlterEnumStmt * - _copyViewStmt * - _copyLoadStmt * - _copyCreateDomainStmt * - _copyCreateOpClassStmt * - _copyCreateOpClassItem * - _copyCreateOpFamilyStmt * - _copyAlterOpFamilyStmt * - _copyCreatedbStmt * - _copyAlterDatabaseStmt * - _copyAlterDatabaseSetStmt * - _copyDropdbStmt * - _copyVacuumStmt * - _copyVacuumRelation * - _copyExplainStmt * - _copyCreateTableAsStmt * - _copyRefreshMatViewStmt * - _copyReplicaIdentityStmt * - _copyAlterSystemStmt * - _copyCreateSeqStmt * - _copyAlterSeqStmt * - _copyVariableSetStmt * - _copyVariableShowStmt * - _copyDiscardStmt * - _copyCreateTableSpaceStmt * - _copyDropTableSpaceStmt * - _copyAlterTableSpaceOptionsStmt * - _copyAlterTableMoveAllStmt * - _copyCreateExtensionStmt * - _copyAlterExtensionStmt * - _copyAlterExtensionContentsStmt * - _copyCreateFdwStmt * - _copyAlterFdwStmt * - _copyCreateForeignServerStmt * - _copyAlterForeignServerStmt * - _copyCreateUserMappingStmt * - _copyAlterUserMappingStmt * - _copyDropUserMappingStmt * - _copyCreateForeignTableStmt * - _copyImportForeignSchemaStmt * - _copyCreateTransformStmt * - _copyCreateAmStmt * - _copyCreateTrigStmt * - _copyCreateEventTrigStmt * - _copyAlterEventTrigStmt * - _copyCreatePLangStmt * - _copyCreateRoleStmt * - _copyAlterRoleStmt * - _copyAlterRoleSetStmt * - _copyDropRoleStmt * - _copyLockStmt * - _copyConstraintsSetStmt * - _copyReindexStmt * - _copyCreateSchemaStmt * - _copyCreateConversionStmt * - _copyCreateCastStmt * - _copyPrepareStmt * - _copyExecuteStmt * - _copyDeallocateStmt * - _copyDropOwnedStmt * - _copyReassignOwnedStmt * - _copyAlterTSDictionaryStmt * - _copyAlterTSConfigurationStmt * - _copyCreatePolicyStmt * - _copyAlterPolicyStmt * - _copyCreatePublicationStmt * - _copyAlterPublicationStmt * - _copyCreateSubscriptionStmt * - _copyAlterSubscriptionStmt * - _copyDropSubscriptionStmt * - _copyAExpr * - _copyColumnRef * - _copyParamRef * - _copyAConst * - _copyFuncCall * - _copyAStar * - _copyAIndices * - _copyA_Indirection * - _copyA_ArrayExpr * - _copyResTarget * - _copyMultiAssignRef * - _copyTypeCast * - _copyCollateClause * - _copySortBy * - _copyWindowDef * - _copyRangeSubselect * - _copyRangeFunction * - _copyRangeTableSample * - _copyRangeTableFunc * - _copyRangeTableFuncCol * - _copyTypeName * - _copyIndexElem * - _copyColumnDef * - _copyConstraint * - _copyDefElem * - _copyLockingClause * - _copyRangeTblEntry * - _copyRangeTblFunction * - _copyTableSampleClause * - _copyWithCheckOption * - _copySortGroupClause * - _copyGroupingSet * - _copyWindowClause * - _copyRowMarkClause * - _copyWithClause * - _copyInferClause * - _copyOnConflictClause * - _copyCommonTableExpr * - _copyObjectWithArgs * - _copyAccessPriv * - _copyXmlSerialize * - _copyRoleSpec * - _copyTriggerTransition * - _copyPartitionElem * - _copyPartitionSpec * - _copyPartitionBoundSpec * - _copyPartitionRangeDatum * - _copyPartitionCmd * - _copyForeignKeyCacheInfo *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * copyfuncs.c * Copy functions for Postgres tree nodes. * * NOTE: we currently support copying all node types found in parse and * plan trees. We do not support copying executor state trees; there * is no need for that, and no point in maintaining all the code that * would be needed. We also do not support copying Path trees, mainly * because the circular linkages between RelOptInfo and Path nodes can't * be handled easily in a simple depth-first traversal. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/nodes/copyfuncs.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "miscadmin.h" #include "nodes/extensible.h" #include "nodes/pathnodes.h" #include "nodes/plannodes.h" #include "utils/datum.h" #include "utils/rel.h" /* * Macros to simplify copying of different kinds of fields. Use these * wherever possible to reduce the chance for silly typos. Note that these * hard-wire the convention that the local variables in a Copy routine are * named 'newnode' and 'from'. */ /* Copy a simple scalar field (int, float, bool, enum, etc) */ #define COPY_SCALAR_FIELD(fldname) \ (newnode->fldname = from->fldname) /* Copy a field that is a pointer to some kind of Node or Node tree */ #define COPY_NODE_FIELD(fldname) \ (newnode->fldname = copyObjectImpl(from->fldname)) /* Copy a field that is a pointer to a Bitmapset */ #define COPY_BITMAPSET_FIELD(fldname) \ (newnode->fldname = bms_copy(from->fldname)) /* Copy a field that is a pointer to a C string, or perhaps NULL */ #define COPY_STRING_FIELD(fldname) \ (newnode->fldname = from->fldname ? pstrdup(from->fldname) : (char *) NULL) /* Copy a field that is a pointer to a simple palloc'd object of size sz */ #define COPY_POINTER_FIELD(fldname, sz) \ do { \ Size _size = (sz); \ newnode->fldname = palloc(_size); \ memcpy(newnode->fldname, from->fldname, _size); \ } while (0) /* Copy a parse location field (for Copy, this is same as scalar case) */ #define COPY_LOCATION_FIELD(fldname) \ (newnode->fldname = from->fldname) /* **************************************************************** * plannodes.h copy functions * **************************************************************** */ /* * _copyPlannedStmt */ static PlannedStmt * _copyPlannedStmt(const PlannedStmt *from) { PlannedStmt *newnode = makeNode(PlannedStmt); COPY_SCALAR_FIELD(commandType); COPY_SCALAR_FIELD(queryId); COPY_SCALAR_FIELD(hasReturning); COPY_SCALAR_FIELD(hasModifyingCTE); COPY_SCALAR_FIELD(canSetTag); COPY_SCALAR_FIELD(transientPlan); COPY_SCALAR_FIELD(dependsOnRole); COPY_SCALAR_FIELD(parallelModeNeeded); COPY_SCALAR_FIELD(jitFlags); COPY_NODE_FIELD(planTree); COPY_NODE_FIELD(rtable); COPY_NODE_FIELD(resultRelations); COPY_NODE_FIELD(rootResultRelations); COPY_NODE_FIELD(appendRelations); COPY_NODE_FIELD(subplans); COPY_BITMAPSET_FIELD(rewindPlanIDs); COPY_NODE_FIELD(rowMarks); COPY_NODE_FIELD(relationOids); COPY_NODE_FIELD(invalItems); COPY_NODE_FIELD(paramExecTypes); COPY_NODE_FIELD(utilityStmt); COPY_LOCATION_FIELD(stmt_location); COPY_SCALAR_FIELD(stmt_len); return newnode; } /* * CopyPlanFields * * This function copies the fields of the Plan node. It is used by * all the copy functions for classes which inherit from Plan. */ static void CopyPlanFields(const Plan *from, Plan *newnode) { COPY_SCALAR_FIELD(startup_cost); COPY_SCALAR_FIELD(total_cost); COPY_SCALAR_FIELD(plan_rows); COPY_SCALAR_FIELD(plan_width); COPY_SCALAR_FIELD(parallel_aware); COPY_SCALAR_FIELD(parallel_safe); COPY_SCALAR_FIELD(plan_node_id); COPY_NODE_FIELD(targetlist); COPY_NODE_FIELD(qual); COPY_NODE_FIELD(lefttree); COPY_NODE_FIELD(righttree); COPY_NODE_FIELD(initPlan); COPY_BITMAPSET_FIELD(extParam); COPY_BITMAPSET_FIELD(allParam); } /* * _copyPlan */ static Plan * _copyPlan(const Plan *from) { Plan *newnode = makeNode(Plan); /* * copy node superclass fields */ CopyPlanFields(from, newnode); return newnode; } /* * _copyResult */ static Result * _copyResult(const Result *from) { Result *newnode = makeNode(Result); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(resconstantqual); return newnode; } /* * _copyProjectSet */ static ProjectSet * _copyProjectSet(const ProjectSet *from) { ProjectSet *newnode = makeNode(ProjectSet); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); return newnode; } /* * _copyModifyTable */ static ModifyTable * _copyModifyTable(const ModifyTable *from) { ModifyTable *newnode = makeNode(ModifyTable); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(operation); COPY_SCALAR_FIELD(canSetTag); COPY_SCALAR_FIELD(nominalRelation); COPY_SCALAR_FIELD(rootRelation); COPY_SCALAR_FIELD(partColsUpdated); COPY_NODE_FIELD(resultRelations); COPY_SCALAR_FIELD(resultRelIndex); COPY_SCALAR_FIELD(rootResultRelIndex); COPY_NODE_FIELD(plans); COPY_NODE_FIELD(withCheckOptionLists); COPY_NODE_FIELD(returningLists); COPY_NODE_FIELD(fdwPrivLists); COPY_BITMAPSET_FIELD(fdwDirectModifyPlans); COPY_NODE_FIELD(rowMarks); COPY_SCALAR_FIELD(epqParam); COPY_SCALAR_FIELD(onConflictAction); COPY_NODE_FIELD(arbiterIndexes); COPY_NODE_FIELD(onConflictSet); COPY_NODE_FIELD(onConflictWhere); COPY_SCALAR_FIELD(exclRelRTI); COPY_NODE_FIELD(exclRelTlist); return newnode; } /* * _copyAppend */ static Append * _copyAppend(const Append *from) { Append *newnode = makeNode(Append); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_BITMAPSET_FIELD(apprelids); COPY_NODE_FIELD(appendplans); COPY_SCALAR_FIELD(first_partial_plan); COPY_NODE_FIELD(part_prune_info); return newnode; } /* * _copyMergeAppend */ static MergeAppend * _copyMergeAppend(const MergeAppend *from) { MergeAppend *newnode = makeNode(MergeAppend); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_BITMAPSET_FIELD(apprelids); COPY_NODE_FIELD(mergeplans); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); COPY_NODE_FIELD(part_prune_info); return newnode; } /* * _copyRecursiveUnion */ static RecursiveUnion * _copyRecursiveUnion(const RecursiveUnion *from) { RecursiveUnion *newnode = makeNode(RecursiveUnion); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(wtParam); COPY_SCALAR_FIELD(numCols); if (from->numCols > 0) { COPY_POINTER_FIELD(dupColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(dupOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(dupCollations, from->numCols * sizeof(Oid)); } COPY_SCALAR_FIELD(numGroups); return newnode; } /* * _copyBitmapAnd */ static BitmapAnd * _copyBitmapAnd(const BitmapAnd *from) { BitmapAnd *newnode = makeNode(BitmapAnd); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(bitmapplans); return newnode; } /* * _copyBitmapOr */ static BitmapOr * _copyBitmapOr(const BitmapOr *from) { BitmapOr *newnode = makeNode(BitmapOr); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(isshared); COPY_NODE_FIELD(bitmapplans); return newnode; } /* * _copyGather */ static Gather * _copyGather(const Gather *from) { Gather *newnode = makeNode(Gather); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(num_workers); COPY_SCALAR_FIELD(rescan_param); COPY_SCALAR_FIELD(single_copy); COPY_SCALAR_FIELD(invisible); COPY_BITMAPSET_FIELD(initParam); return newnode; } /* * _copyGatherMerge */ static GatherMerge * _copyGatherMerge(const GatherMerge *from) { GatherMerge *newnode = makeNode(GatherMerge); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(num_workers); COPY_SCALAR_FIELD(rescan_param); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); COPY_BITMAPSET_FIELD(initParam); return newnode; } /* * CopyScanFields * * This function copies the fields of the Scan node. It is used by * all the copy functions for classes which inherit from Scan. */ static void CopyScanFields(const Scan *from, Scan *newnode) { CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(scanrelid); } /* * _copyScan */ static Scan * _copyScan(const Scan *from) { Scan *newnode = makeNode(Scan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); return newnode; } /* * _copySeqScan */ static SeqScan * _copySeqScan(const SeqScan *from) { SeqScan *newnode = makeNode(SeqScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); return newnode; } /* * _copySampleScan */ static SampleScan * _copySampleScan(const SampleScan *from) { SampleScan *newnode = makeNode(SampleScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(tablesample); return newnode; } /* * _copyIndexScan */ static IndexScan * _copyIndexScan(const IndexScan *from) { IndexScan *newnode = makeNode(IndexScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(indexid); COPY_NODE_FIELD(indexqual); COPY_NODE_FIELD(indexqualorig); COPY_NODE_FIELD(indexorderby); COPY_NODE_FIELD(indexorderbyorig); COPY_NODE_FIELD(indexorderbyops); COPY_SCALAR_FIELD(indexorderdir); return newnode; } /* * _copyIndexOnlyScan */ static IndexOnlyScan * _copyIndexOnlyScan(const IndexOnlyScan *from) { IndexOnlyScan *newnode = makeNode(IndexOnlyScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(indexid); COPY_NODE_FIELD(indexqual); COPY_NODE_FIELD(indexorderby); COPY_NODE_FIELD(indextlist); COPY_SCALAR_FIELD(indexorderdir); return newnode; } /* * _copyBitmapIndexScan */ static BitmapIndexScan * _copyBitmapIndexScan(const BitmapIndexScan *from) { BitmapIndexScan *newnode = makeNode(BitmapIndexScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(indexid); COPY_SCALAR_FIELD(isshared); COPY_NODE_FIELD(indexqual); COPY_NODE_FIELD(indexqualorig); return newnode; } /* * _copyBitmapHeapScan */ static BitmapHeapScan * _copyBitmapHeapScan(const BitmapHeapScan *from) { BitmapHeapScan *newnode = makeNode(BitmapHeapScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(bitmapqualorig); return newnode; } /* * _copyTidScan */ static TidScan * _copyTidScan(const TidScan *from) { TidScan *newnode = makeNode(TidScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(tidquals); return newnode; } /* * _copySubqueryScan */ static SubqueryScan * _copySubqueryScan(const SubqueryScan *from) { SubqueryScan *newnode = makeNode(SubqueryScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(subplan); return newnode; } /* * _copyFunctionScan */ static FunctionScan * _copyFunctionScan(const FunctionScan *from) { FunctionScan *newnode = makeNode(FunctionScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(functions); COPY_SCALAR_FIELD(funcordinality); return newnode; } /* * _copyTableFuncScan */ static TableFuncScan * _copyTableFuncScan(const TableFuncScan *from) { TableFuncScan *newnode = makeNode(TableFuncScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(tablefunc); return newnode; } /* * _copyValuesScan */ static ValuesScan * _copyValuesScan(const ValuesScan *from) { ValuesScan *newnode = makeNode(ValuesScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(values_lists); return newnode; } /* * _copyCteScan */ static CteScan * _copyCteScan(const CteScan *from) { CteScan *newnode = makeNode(CteScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(ctePlanId); COPY_SCALAR_FIELD(cteParam); return newnode; } /* * _copyNamedTuplestoreScan */ static NamedTuplestoreScan * _copyNamedTuplestoreScan(const NamedTuplestoreScan *from) { NamedTuplestoreScan *newnode = makeNode(NamedTuplestoreScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_STRING_FIELD(enrname); return newnode; } /* * _copyWorkTableScan */ static WorkTableScan * _copyWorkTableScan(const WorkTableScan *from) { WorkTableScan *newnode = makeNode(WorkTableScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(wtParam); return newnode; } /* * _copyForeignScan */ static ForeignScan * _copyForeignScan(const ForeignScan *from) { ForeignScan *newnode = makeNode(ForeignScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(operation); COPY_SCALAR_FIELD(fs_server); COPY_NODE_FIELD(fdw_exprs); COPY_NODE_FIELD(fdw_private); COPY_NODE_FIELD(fdw_scan_tlist); COPY_NODE_FIELD(fdw_recheck_quals); COPY_BITMAPSET_FIELD(fs_relids); COPY_SCALAR_FIELD(fsSystemCol); return newnode; } /* * _copyCustomScan */ static CustomScan * _copyCustomScan(const CustomScan *from) { CustomScan *newnode = makeNode(CustomScan); /* * copy node superclass fields */ CopyScanFields((const Scan *) from, (Scan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(flags); COPY_NODE_FIELD(custom_plans); COPY_NODE_FIELD(custom_exprs); COPY_NODE_FIELD(custom_private); COPY_NODE_FIELD(custom_scan_tlist); COPY_BITMAPSET_FIELD(custom_relids); /* * NOTE: The method field of CustomScan is required to be a pointer to a * static table of callback functions. So we don't copy the table itself, * just reference the original one. */ COPY_SCALAR_FIELD(methods); return newnode; } /* * CopyJoinFields * * This function copies the fields of the Join node. It is used by * all the copy functions for classes which inherit from Join. */ static void CopyJoinFields(const Join *from, Join *newnode) { CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(jointype); COPY_SCALAR_FIELD(inner_unique); COPY_NODE_FIELD(joinqual); } /* * _copyJoin */ static Join * _copyJoin(const Join *from) { Join *newnode = makeNode(Join); /* * copy node superclass fields */ CopyJoinFields(from, newnode); return newnode; } /* * _copyNestLoop */ static NestLoop * _copyNestLoop(const NestLoop *from) { NestLoop *newnode = makeNode(NestLoop); /* * copy node superclass fields */ CopyJoinFields((const Join *) from, (Join *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(nestParams); return newnode; } /* * _copyMergeJoin */ static MergeJoin * _copyMergeJoin(const MergeJoin *from) { MergeJoin *newnode = makeNode(MergeJoin); int numCols; /* * copy node superclass fields */ CopyJoinFields((const Join *) from, (Join *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(skip_mark_restore); COPY_NODE_FIELD(mergeclauses); numCols = list_length(from->mergeclauses); if (numCols > 0) { COPY_POINTER_FIELD(mergeFamilies, numCols * sizeof(Oid)); COPY_POINTER_FIELD(mergeCollations, numCols * sizeof(Oid)); COPY_POINTER_FIELD(mergeStrategies, numCols * sizeof(int)); COPY_POINTER_FIELD(mergeNullsFirst, numCols * sizeof(bool)); } return newnode; } /* * _copyHashJoin */ static HashJoin * _copyHashJoin(const HashJoin *from) { HashJoin *newnode = makeNode(HashJoin); /* * copy node superclass fields */ CopyJoinFields((const Join *) from, (Join *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(hashclauses); COPY_NODE_FIELD(hashoperators); COPY_NODE_FIELD(hashcollations); COPY_NODE_FIELD(hashkeys); return newnode; } /* * _copyMaterial */ static Material * _copyMaterial(const Material *from) { Material *newnode = makeNode(Material); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); return newnode; } /* * CopySortFields * * This function copies the fields of the Sort node. It is used by * all the copy functions for classes which inherit from Sort. */ static void CopySortFields(const Sort *from, Sort *newnode) { CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(collations, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); } /* * _copySort */ static Sort * _copySort(const Sort *from) { Sort *newnode = makeNode(Sort); /* * copy node superclass fields */ CopySortFields(from, newnode); return newnode; } /* * _copyIncrementalSort */ static IncrementalSort * _copyIncrementalSort(const IncrementalSort *from) { IncrementalSort *newnode = makeNode(IncrementalSort); /* * copy node superclass fields */ CopySortFields((const Sort *) from, (Sort *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(nPresortedCols); return newnode; } /* * _copyGroup */ static Group * _copyGroup(const Group *from) { Group *newnode = makeNode(Group); CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(grpColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(grpOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(grpCollations, from->numCols * sizeof(Oid)); return newnode; } /* * _copyAgg */ static Agg * _copyAgg(const Agg *from) { Agg *newnode = makeNode(Agg); CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(aggstrategy); COPY_SCALAR_FIELD(aggsplit); COPY_SCALAR_FIELD(numCols); if (from->numCols > 0) { COPY_POINTER_FIELD(grpColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(grpOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(grpCollations, from->numCols * sizeof(Oid)); } COPY_SCALAR_FIELD(numGroups); COPY_SCALAR_FIELD(transitionSpace); COPY_BITMAPSET_FIELD(aggParams); COPY_NODE_FIELD(groupingSets); COPY_NODE_FIELD(chain); return newnode; } /* * _copyWindowAgg */ static WindowAgg * _copyWindowAgg(const WindowAgg *from) { WindowAgg *newnode = makeNode(WindowAgg); CopyPlanFields((const Plan *) from, (Plan *) newnode); COPY_SCALAR_FIELD(winref); COPY_SCALAR_FIELD(partNumCols); if (from->partNumCols > 0) { COPY_POINTER_FIELD(partColIdx, from->partNumCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(partOperators, from->partNumCols * sizeof(Oid)); COPY_POINTER_FIELD(partCollations, from->partNumCols * sizeof(Oid)); } COPY_SCALAR_FIELD(ordNumCols); if (from->ordNumCols > 0) { COPY_POINTER_FIELD(ordColIdx, from->ordNumCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(ordOperators, from->ordNumCols * sizeof(Oid)); COPY_POINTER_FIELD(ordCollations, from->ordNumCols * sizeof(Oid)); } COPY_SCALAR_FIELD(frameOptions); COPY_NODE_FIELD(startOffset); COPY_NODE_FIELD(endOffset); COPY_SCALAR_FIELD(startInRangeFunc); COPY_SCALAR_FIELD(endInRangeFunc); COPY_SCALAR_FIELD(inRangeColl); COPY_SCALAR_FIELD(inRangeAsc); COPY_SCALAR_FIELD(inRangeNullsFirst); return newnode; } /* * _copyUnique */ static Unique * _copyUnique(const Unique *from) { Unique *newnode = makeNode(Unique); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(uniqColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(uniqOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(uniqCollations, from->numCols * sizeof(Oid)); return newnode; } /* * _copyHash */ static Hash * _copyHash(const Hash *from) { Hash *newnode = makeNode(Hash); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(hashkeys); COPY_SCALAR_FIELD(skewTable); COPY_SCALAR_FIELD(skewColumn); COPY_SCALAR_FIELD(skewInherit); COPY_SCALAR_FIELD(rows_total); return newnode; } /* * _copySetOp */ static SetOp * _copySetOp(const SetOp *from) { SetOp *newnode = makeNode(SetOp); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_SCALAR_FIELD(cmd); COPY_SCALAR_FIELD(strategy); COPY_SCALAR_FIELD(numCols); COPY_POINTER_FIELD(dupColIdx, from->numCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(dupOperators, from->numCols * sizeof(Oid)); COPY_POINTER_FIELD(dupCollations, from->numCols * sizeof(Oid)); COPY_SCALAR_FIELD(flagColIdx); COPY_SCALAR_FIELD(firstFlag); COPY_SCALAR_FIELD(numGroups); return newnode; } /* * _copyLockRows */ static LockRows * _copyLockRows(const LockRows *from) { LockRows *newnode = makeNode(LockRows); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(rowMarks); COPY_SCALAR_FIELD(epqParam); return newnode; } /* * _copyLimit */ static Limit * _copyLimit(const Limit *from) { Limit *newnode = makeNode(Limit); /* * copy node superclass fields */ CopyPlanFields((const Plan *) from, (Plan *) newnode); /* * copy remainder of node */ COPY_NODE_FIELD(limitOffset); COPY_NODE_FIELD(limitCount); COPY_SCALAR_FIELD(limitOption); COPY_SCALAR_FIELD(uniqNumCols); COPY_POINTER_FIELD(uniqColIdx, from->uniqNumCols * sizeof(AttrNumber)); COPY_POINTER_FIELD(uniqOperators, from->uniqNumCols * sizeof(Oid)); COPY_POINTER_FIELD(uniqCollations, from->uniqNumCols * sizeof(Oid)); return newnode; } /* * _copyNestLoopParam */ static NestLoopParam * _copyNestLoopParam(const NestLoopParam *from) { NestLoopParam *newnode = makeNode(NestLoopParam); COPY_SCALAR_FIELD(paramno); COPY_NODE_FIELD(paramval); return newnode; } /* * _copyPlanRowMark */ static PlanRowMark * _copyPlanRowMark(const PlanRowMark *from) { PlanRowMark *newnode = makeNode(PlanRowMark); COPY_SCALAR_FIELD(rti); COPY_SCALAR_FIELD(prti); COPY_SCALAR_FIELD(rowmarkId); COPY_SCALAR_FIELD(markType); COPY_SCALAR_FIELD(allMarkTypes); COPY_SCALAR_FIELD(strength); COPY_SCALAR_FIELD(waitPolicy); COPY_SCALAR_FIELD(isParent); return newnode; } static PartitionPruneInfo * _copyPartitionPruneInfo(const PartitionPruneInfo *from) { PartitionPruneInfo *newnode = makeNode(PartitionPruneInfo); COPY_NODE_FIELD(prune_infos); COPY_BITMAPSET_FIELD(other_subplans); return newnode; } static PartitionedRelPruneInfo * _copyPartitionedRelPruneInfo(const PartitionedRelPruneInfo *from) { PartitionedRelPruneInfo *newnode = makeNode(PartitionedRelPruneInfo); COPY_SCALAR_FIELD(rtindex); COPY_BITMAPSET_FIELD(present_parts); COPY_SCALAR_FIELD(nparts); COPY_POINTER_FIELD(subplan_map, from->nparts * sizeof(int)); COPY_POINTER_FIELD(subpart_map, from->nparts * sizeof(int)); COPY_POINTER_FIELD(relid_map, from->nparts * sizeof(Oid)); COPY_NODE_FIELD(initial_pruning_steps); COPY_NODE_FIELD(exec_pruning_steps); COPY_BITMAPSET_FIELD(execparamids); return newnode; } /* * _copyPartitionPruneStepOp */ static PartitionPruneStepOp * _copyPartitionPruneStepOp(const PartitionPruneStepOp *from) { PartitionPruneStepOp *newnode = makeNode(PartitionPruneStepOp); COPY_SCALAR_FIELD(step.step_id); COPY_SCALAR_FIELD(opstrategy); COPY_NODE_FIELD(exprs); COPY_NODE_FIELD(cmpfns); COPY_BITMAPSET_FIELD(nullkeys); return newnode; } /* * _copyPartitionPruneStepCombine */ static PartitionPruneStepCombine * _copyPartitionPruneStepCombine(const PartitionPruneStepCombine *from) { PartitionPruneStepCombine *newnode = makeNode(PartitionPruneStepCombine); COPY_SCALAR_FIELD(step.step_id); COPY_SCALAR_FIELD(combineOp); COPY_NODE_FIELD(source_stepids); return newnode; } /* * _copyPlanInvalItem */ static PlanInvalItem * _copyPlanInvalItem(const PlanInvalItem *from) { PlanInvalItem *newnode = makeNode(PlanInvalItem); COPY_SCALAR_FIELD(cacheId); COPY_SCALAR_FIELD(hashValue); return newnode; } /* **************************************************************** * primnodes.h copy functions * **************************************************************** */ /* * _copyAlias */ static Alias * _copyAlias(const Alias *from) { Alias *newnode = makeNode(Alias); COPY_STRING_FIELD(aliasname); COPY_NODE_FIELD(colnames); return newnode; } /* * _copyRangeVar */ static RangeVar * _copyRangeVar(const RangeVar *from) { RangeVar *newnode = makeNode(RangeVar); COPY_STRING_FIELD(catalogname); COPY_STRING_FIELD(schemaname); COPY_STRING_FIELD(relname); COPY_SCALAR_FIELD(inh); COPY_SCALAR_FIELD(relpersistence); COPY_NODE_FIELD(alias); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyTableFunc */ static TableFunc * _copyTableFunc(const TableFunc *from) { TableFunc *newnode = makeNode(TableFunc); COPY_NODE_FIELD(ns_uris); COPY_NODE_FIELD(ns_names); COPY_NODE_FIELD(docexpr); COPY_NODE_FIELD(rowexpr); COPY_NODE_FIELD(colnames); COPY_NODE_FIELD(coltypes); COPY_NODE_FIELD(coltypmods); COPY_NODE_FIELD(colcollations); COPY_NODE_FIELD(colexprs); COPY_NODE_FIELD(coldefexprs); COPY_BITMAPSET_FIELD(notnulls); COPY_SCALAR_FIELD(ordinalitycol); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyIntoClause */ static IntoClause * _copyIntoClause(const IntoClause *from) { IntoClause *newnode = makeNode(IntoClause); COPY_NODE_FIELD(rel); COPY_NODE_FIELD(colNames); COPY_STRING_FIELD(accessMethod); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(onCommit); COPY_STRING_FIELD(tableSpaceName); COPY_NODE_FIELD(viewQuery); COPY_SCALAR_FIELD(skipData); return newnode; } /* * We don't need a _copyExpr because Expr is an abstract supertype which * should never actually get instantiated. Also, since it has no common * fields except NodeTag, there's no need for a helper routine to factor * out copying the common fields... */ /* * _copyVar */ static Var * _copyVar(const Var *from) { Var *newnode = makeNode(Var); COPY_SCALAR_FIELD(varno); COPY_SCALAR_FIELD(varattno); COPY_SCALAR_FIELD(vartype); COPY_SCALAR_FIELD(vartypmod); COPY_SCALAR_FIELD(varcollid); COPY_SCALAR_FIELD(varlevelsup); COPY_SCALAR_FIELD(varnosyn); COPY_SCALAR_FIELD(varattnosyn); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyConst */ static Const * _copyConst(const Const *from) { Const *newnode = makeNode(Const); COPY_SCALAR_FIELD(consttype); COPY_SCALAR_FIELD(consttypmod); COPY_SCALAR_FIELD(constcollid); COPY_SCALAR_FIELD(constlen); if (from->constbyval || from->constisnull) { /* * passed by value so just copy the datum. Also, don't try to copy * struct when value is null! */ newnode->constvalue = from->constvalue; } else { /* * passed by reference. We need a palloc'd copy. */ newnode->constvalue = datumCopy(from->constvalue, from->constbyval, from->constlen); } COPY_SCALAR_FIELD(constisnull); COPY_SCALAR_FIELD(constbyval); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyParam */ static Param * _copyParam(const Param *from) { Param *newnode = makeNode(Param); COPY_SCALAR_FIELD(paramkind); COPY_SCALAR_FIELD(paramid); COPY_SCALAR_FIELD(paramtype); COPY_SCALAR_FIELD(paramtypmod); COPY_SCALAR_FIELD(paramcollid); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyAggref */ static Aggref * _copyAggref(const Aggref *from) { Aggref *newnode = makeNode(Aggref); COPY_SCALAR_FIELD(aggfnoid); COPY_SCALAR_FIELD(aggtype); COPY_SCALAR_FIELD(aggcollid); COPY_SCALAR_FIELD(inputcollid); COPY_SCALAR_FIELD(aggtranstype); COPY_NODE_FIELD(aggargtypes); COPY_NODE_FIELD(aggdirectargs); COPY_NODE_FIELD(args); COPY_NODE_FIELD(aggorder); COPY_NODE_FIELD(aggdistinct); COPY_NODE_FIELD(aggfilter); COPY_SCALAR_FIELD(aggstar); COPY_SCALAR_FIELD(aggvariadic); COPY_SCALAR_FIELD(aggkind); COPY_SCALAR_FIELD(agglevelsup); COPY_SCALAR_FIELD(aggsplit); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyGroupingFunc */ static GroupingFunc * _copyGroupingFunc(const GroupingFunc *from) { GroupingFunc *newnode = makeNode(GroupingFunc); COPY_NODE_FIELD(args); COPY_NODE_FIELD(refs); COPY_NODE_FIELD(cols); COPY_SCALAR_FIELD(agglevelsup); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyWindowFunc */ static WindowFunc * _copyWindowFunc(const WindowFunc *from) { WindowFunc *newnode = makeNode(WindowFunc); COPY_SCALAR_FIELD(winfnoid); COPY_SCALAR_FIELD(wintype); COPY_SCALAR_FIELD(wincollid); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_NODE_FIELD(aggfilter); COPY_SCALAR_FIELD(winref); COPY_SCALAR_FIELD(winstar); COPY_SCALAR_FIELD(winagg); COPY_LOCATION_FIELD(location); return newnode; } /* * _copySubscriptingRef */ static SubscriptingRef * _copySubscriptingRef(const SubscriptingRef *from) { SubscriptingRef *newnode = makeNode(SubscriptingRef); COPY_SCALAR_FIELD(refcontainertype); COPY_SCALAR_FIELD(refelemtype); COPY_SCALAR_FIELD(reftypmod); COPY_SCALAR_FIELD(refcollid); COPY_NODE_FIELD(refupperindexpr); COPY_NODE_FIELD(reflowerindexpr); COPY_NODE_FIELD(refexpr); COPY_NODE_FIELD(refassgnexpr); return newnode; } /* * _copyFuncExpr */ static FuncExpr * _copyFuncExpr(const FuncExpr *from) { FuncExpr *newnode = makeNode(FuncExpr); COPY_SCALAR_FIELD(funcid); COPY_SCALAR_FIELD(funcresulttype); COPY_SCALAR_FIELD(funcretset); COPY_SCALAR_FIELD(funcvariadic); COPY_SCALAR_FIELD(funcformat); COPY_SCALAR_FIELD(funccollid); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyNamedArgExpr * */ static NamedArgExpr * _copyNamedArgExpr(const NamedArgExpr *from) { NamedArgExpr *newnode = makeNode(NamedArgExpr); COPY_NODE_FIELD(arg); COPY_STRING_FIELD(name); COPY_SCALAR_FIELD(argnumber); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyOpExpr */ static OpExpr * _copyOpExpr(const OpExpr *from) { OpExpr *newnode = makeNode(OpExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_SCALAR_FIELD(opcollid); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyDistinctExpr (same as OpExpr) */ static DistinctExpr * _copyDistinctExpr(const DistinctExpr *from) { DistinctExpr *newnode = makeNode(DistinctExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_SCALAR_FIELD(opcollid); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyNullIfExpr (same as OpExpr) */ static NullIfExpr * _copyNullIfExpr(const NullIfExpr *from) { NullIfExpr *newnode = makeNode(NullIfExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(opresulttype); COPY_SCALAR_FIELD(opretset); COPY_SCALAR_FIELD(opcollid); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyScalarArrayOpExpr */ static ScalarArrayOpExpr * _copyScalarArrayOpExpr(const ScalarArrayOpExpr *from) { ScalarArrayOpExpr *newnode = makeNode(ScalarArrayOpExpr); COPY_SCALAR_FIELD(opno); COPY_SCALAR_FIELD(opfuncid); COPY_SCALAR_FIELD(useOr); COPY_SCALAR_FIELD(inputcollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyBoolExpr */ static BoolExpr * _copyBoolExpr(const BoolExpr *from) { BoolExpr *newnode = makeNode(BoolExpr); COPY_SCALAR_FIELD(boolop); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copySubLink */ static SubLink * _copySubLink(const SubLink *from) { SubLink *newnode = makeNode(SubLink); COPY_SCALAR_FIELD(subLinkType); COPY_SCALAR_FIELD(subLinkId); COPY_NODE_FIELD(testexpr); COPY_NODE_FIELD(operName); COPY_NODE_FIELD(subselect); COPY_LOCATION_FIELD(location); return newnode; } /* * _copySubPlan */ static SubPlan * _copySubPlan(const SubPlan *from) { SubPlan *newnode = makeNode(SubPlan); COPY_SCALAR_FIELD(subLinkType); COPY_NODE_FIELD(testexpr); COPY_NODE_FIELD(paramIds); COPY_SCALAR_FIELD(plan_id); COPY_STRING_FIELD(plan_name); COPY_SCALAR_FIELD(firstColType); COPY_SCALAR_FIELD(firstColTypmod); COPY_SCALAR_FIELD(firstColCollation); COPY_SCALAR_FIELD(useHashTable); COPY_SCALAR_FIELD(unknownEqFalse); COPY_SCALAR_FIELD(parallel_safe); COPY_NODE_FIELD(setParam); COPY_NODE_FIELD(parParam); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(startup_cost); COPY_SCALAR_FIELD(per_call_cost); return newnode; } /* * _copyAlternativeSubPlan */ static AlternativeSubPlan * _copyAlternativeSubPlan(const AlternativeSubPlan *from) { AlternativeSubPlan *newnode = makeNode(AlternativeSubPlan); COPY_NODE_FIELD(subplans); return newnode; } /* * _copyFieldSelect */ static FieldSelect * _copyFieldSelect(const FieldSelect *from) { FieldSelect *newnode = makeNode(FieldSelect); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(fieldnum); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(resultcollid); return newnode; } /* * _copyFieldStore */ static FieldStore * _copyFieldStore(const FieldStore *from) { FieldStore *newnode = makeNode(FieldStore); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(newvals); COPY_NODE_FIELD(fieldnums); COPY_SCALAR_FIELD(resulttype); return newnode; } /* * _copyRelabelType */ static RelabelType * _copyRelabelType(const RelabelType *from) { RelabelType *newnode = makeNode(RelabelType); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(resultcollid); COPY_SCALAR_FIELD(relabelformat); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCoerceViaIO */ static CoerceViaIO * _copyCoerceViaIO(const CoerceViaIO *from) { CoerceViaIO *newnode = makeNode(CoerceViaIO); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resultcollid); COPY_SCALAR_FIELD(coerceformat); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyArrayCoerceExpr */ static ArrayCoerceExpr * _copyArrayCoerceExpr(const ArrayCoerceExpr *from) { ArrayCoerceExpr *newnode = makeNode(ArrayCoerceExpr); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(elemexpr); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(resultcollid); COPY_SCALAR_FIELD(coerceformat); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyConvertRowtypeExpr */ static ConvertRowtypeExpr * _copyConvertRowtypeExpr(const ConvertRowtypeExpr *from) { ConvertRowtypeExpr *newnode = makeNode(ConvertRowtypeExpr); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(convertformat); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCollateExpr */ static CollateExpr * _copyCollateExpr(const CollateExpr *from) { CollateExpr *newnode = makeNode(CollateExpr); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(collOid); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCaseExpr */ static CaseExpr * _copyCaseExpr(const CaseExpr *from) { CaseExpr *newnode = makeNode(CaseExpr); COPY_SCALAR_FIELD(casetype); COPY_SCALAR_FIELD(casecollid); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(args); COPY_NODE_FIELD(defresult); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCaseWhen */ static CaseWhen * _copyCaseWhen(const CaseWhen *from) { CaseWhen *newnode = makeNode(CaseWhen); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(result); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCaseTestExpr */ static CaseTestExpr * _copyCaseTestExpr(const CaseTestExpr *from) { CaseTestExpr *newnode = makeNode(CaseTestExpr); COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); COPY_SCALAR_FIELD(collation); return newnode; } /* * _copyArrayExpr */ static ArrayExpr * _copyArrayExpr(const ArrayExpr *from) { ArrayExpr *newnode = makeNode(ArrayExpr); COPY_SCALAR_FIELD(array_typeid); COPY_SCALAR_FIELD(array_collid); COPY_SCALAR_FIELD(element_typeid); COPY_NODE_FIELD(elements); COPY_SCALAR_FIELD(multidims); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyRowExpr */ static RowExpr * _copyRowExpr(const RowExpr *from) { RowExpr *newnode = makeNode(RowExpr); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(row_typeid); COPY_SCALAR_FIELD(row_format); COPY_NODE_FIELD(colnames); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyRowCompareExpr */ static RowCompareExpr * _copyRowCompareExpr(const RowCompareExpr *from) { RowCompareExpr *newnode = makeNode(RowCompareExpr); COPY_SCALAR_FIELD(rctype); COPY_NODE_FIELD(opnos); COPY_NODE_FIELD(opfamilies); COPY_NODE_FIELD(inputcollids); COPY_NODE_FIELD(largs); COPY_NODE_FIELD(rargs); return newnode; } /* * _copyCoalesceExpr */ static CoalesceExpr * _copyCoalesceExpr(const CoalesceExpr *from) { CoalesceExpr *newnode = makeNode(CoalesceExpr); COPY_SCALAR_FIELD(coalescetype); COPY_SCALAR_FIELD(coalescecollid); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyMinMaxExpr */ static MinMaxExpr * _copyMinMaxExpr(const MinMaxExpr *from) { MinMaxExpr *newnode = makeNode(MinMaxExpr); COPY_SCALAR_FIELD(minmaxtype); COPY_SCALAR_FIELD(minmaxcollid); COPY_SCALAR_FIELD(inputcollid); COPY_SCALAR_FIELD(op); COPY_NODE_FIELD(args); COPY_LOCATION_FIELD(location); return newnode; } /* * _copySQLValueFunction */ static SQLValueFunction * _copySQLValueFunction(const SQLValueFunction *from) { SQLValueFunction *newnode = makeNode(SQLValueFunction); COPY_SCALAR_FIELD(op); COPY_SCALAR_FIELD(type); COPY_SCALAR_FIELD(typmod); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyXmlExpr */ static XmlExpr * _copyXmlExpr(const XmlExpr *from) { XmlExpr *newnode = makeNode(XmlExpr); COPY_SCALAR_FIELD(op); COPY_STRING_FIELD(name); COPY_NODE_FIELD(named_args); COPY_NODE_FIELD(arg_names); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(xmloption); COPY_SCALAR_FIELD(type); COPY_SCALAR_FIELD(typmod); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyNullTest */ static NullTest * _copyNullTest(const NullTest *from) { NullTest *newnode = makeNode(NullTest); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(nulltesttype); COPY_SCALAR_FIELD(argisrow); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyBooleanTest */ static BooleanTest * _copyBooleanTest(const BooleanTest *from) { BooleanTest *newnode = makeNode(BooleanTest); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(booltesttype); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCoerceToDomain */ static CoerceToDomain * _copyCoerceToDomain(const CoerceToDomain *from) { CoerceToDomain *newnode = makeNode(CoerceToDomain); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(resulttype); COPY_SCALAR_FIELD(resulttypmod); COPY_SCALAR_FIELD(resultcollid); COPY_SCALAR_FIELD(coercionformat); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCoerceToDomainValue */ static CoerceToDomainValue * _copyCoerceToDomainValue(const CoerceToDomainValue *from) { CoerceToDomainValue *newnode = makeNode(CoerceToDomainValue); COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); COPY_SCALAR_FIELD(collation); COPY_LOCATION_FIELD(location); return newnode; } /* * _copySetToDefault */ static SetToDefault * _copySetToDefault(const SetToDefault *from) { SetToDefault *newnode = makeNode(SetToDefault); COPY_SCALAR_FIELD(typeId); COPY_SCALAR_FIELD(typeMod); COPY_SCALAR_FIELD(collation); COPY_LOCATION_FIELD(location); return newnode; } /* * _copyCurrentOfExpr */ static CurrentOfExpr * _copyCurrentOfExpr(const CurrentOfExpr *from) { CurrentOfExpr *newnode = makeNode(CurrentOfExpr); COPY_SCALAR_FIELD(cvarno); COPY_STRING_FIELD(cursor_name); COPY_SCALAR_FIELD(cursor_param); return newnode; } /* * _copyNextValueExpr */ static NextValueExpr * _copyNextValueExpr(const NextValueExpr *from) { NextValueExpr *newnode = makeNode(NextValueExpr); COPY_SCALAR_FIELD(seqid); COPY_SCALAR_FIELD(typeId); return newnode; } /* * _copyInferenceElem */ static InferenceElem * _copyInferenceElem(const InferenceElem *from) { InferenceElem *newnode = makeNode(InferenceElem); COPY_NODE_FIELD(expr); COPY_SCALAR_FIELD(infercollid); COPY_SCALAR_FIELD(inferopclass); return newnode; } /* * _copyTargetEntry */ static TargetEntry * _copyTargetEntry(const TargetEntry *from) { TargetEntry *newnode = makeNode(TargetEntry); COPY_NODE_FIELD(expr); COPY_SCALAR_FIELD(resno); COPY_STRING_FIELD(resname); COPY_SCALAR_FIELD(ressortgroupref); COPY_SCALAR_FIELD(resorigtbl); COPY_SCALAR_FIELD(resorigcol); COPY_SCALAR_FIELD(resjunk); return newnode; } /* * _copyRangeTblRef */ static RangeTblRef * _copyRangeTblRef(const RangeTblRef *from) { RangeTblRef *newnode = makeNode(RangeTblRef); COPY_SCALAR_FIELD(rtindex); return newnode; } /* * _copyJoinExpr */ static JoinExpr * _copyJoinExpr(const JoinExpr *from) { JoinExpr *newnode = makeNode(JoinExpr); COPY_SCALAR_FIELD(jointype); COPY_SCALAR_FIELD(isNatural); COPY_NODE_FIELD(larg); COPY_NODE_FIELD(rarg); COPY_NODE_FIELD(usingClause); COPY_NODE_FIELD(quals); COPY_NODE_FIELD(alias); COPY_SCALAR_FIELD(rtindex); return newnode; } /* * _copyFromExpr */ static FromExpr * _copyFromExpr(const FromExpr *from) { FromExpr *newnode = makeNode(FromExpr); COPY_NODE_FIELD(fromlist); COPY_NODE_FIELD(quals); return newnode; } /* * _copyOnConflictExpr */ static OnConflictExpr * _copyOnConflictExpr(const OnConflictExpr *from) { OnConflictExpr *newnode = makeNode(OnConflictExpr); COPY_SCALAR_FIELD(action); COPY_NODE_FIELD(arbiterElems); COPY_NODE_FIELD(arbiterWhere); COPY_SCALAR_FIELD(constraint); COPY_NODE_FIELD(onConflictSet); COPY_NODE_FIELD(onConflictWhere); COPY_SCALAR_FIELD(exclRelIndex); COPY_NODE_FIELD(exclRelTlist); return newnode; } /* **************************************************************** * pathnodes.h copy functions * * We don't support copying RelOptInfo, IndexOptInfo, or Path nodes. * There are some subsidiary structs that are useful to copy, though. * **************************************************************** */ /* * _copyPathKey */ static PathKey * _copyPathKey(const PathKey *from) { PathKey *newnode = makeNode(PathKey); /* EquivalenceClasses are never moved, so just shallow-copy the pointer */ COPY_SCALAR_FIELD(pk_eclass); COPY_SCALAR_FIELD(pk_opfamily); COPY_SCALAR_FIELD(pk_strategy); COPY_SCALAR_FIELD(pk_nulls_first); return newnode; } /* * _copyRestrictInfo */ static RestrictInfo * _copyRestrictInfo(const RestrictInfo *from) { RestrictInfo *newnode = makeNode(RestrictInfo); COPY_NODE_FIELD(clause); COPY_SCALAR_FIELD(is_pushed_down); COPY_SCALAR_FIELD(outerjoin_delayed); COPY_SCALAR_FIELD(can_join); COPY_SCALAR_FIELD(pseudoconstant); COPY_SCALAR_FIELD(leakproof); COPY_SCALAR_FIELD(security_level); COPY_BITMAPSET_FIELD(clause_relids); COPY_BITMAPSET_FIELD(required_relids); COPY_BITMAPSET_FIELD(outer_relids); COPY_BITMAPSET_FIELD(nullable_relids); COPY_BITMAPSET_FIELD(left_relids); COPY_BITMAPSET_FIELD(right_relids); COPY_NODE_FIELD(orclause); /* EquivalenceClasses are never copied, so shallow-copy the pointers */ COPY_SCALAR_FIELD(parent_ec); COPY_SCALAR_FIELD(eval_cost); COPY_SCALAR_FIELD(norm_selec); COPY_SCALAR_FIELD(outer_selec); COPY_NODE_FIELD(mergeopfamilies); /* EquivalenceClasses are never copied, so shallow-copy the pointers */ COPY_SCALAR_FIELD(left_ec); COPY_SCALAR_FIELD(right_ec); COPY_SCALAR_FIELD(left_em); COPY_SCALAR_FIELD(right_em); /* MergeScanSelCache isn't a Node, so hard to copy; just reset cache */ newnode->scansel_cache = NIL; COPY_SCALAR_FIELD(outer_is_left); COPY_SCALAR_FIELD(hashjoinoperator); COPY_SCALAR_FIELD(left_bucketsize); COPY_SCALAR_FIELD(right_bucketsize); COPY_SCALAR_FIELD(left_mcvfreq); COPY_SCALAR_FIELD(right_mcvfreq); return newnode; } /* * _copyPlaceHolderVar */ static PlaceHolderVar * _copyPlaceHolderVar(const PlaceHolderVar *from) { PlaceHolderVar *newnode = makeNode(PlaceHolderVar); COPY_NODE_FIELD(phexpr); COPY_BITMAPSET_FIELD(phrels); COPY_SCALAR_FIELD(phid); COPY_SCALAR_FIELD(phlevelsup); return newnode; } /* * _copySpecialJoinInfo */ static SpecialJoinInfo * _copySpecialJoinInfo(const SpecialJoinInfo *from) { SpecialJoinInfo *newnode = makeNode(SpecialJoinInfo); COPY_BITMAPSET_FIELD(min_lefthand); COPY_BITMAPSET_FIELD(min_righthand); COPY_BITMAPSET_FIELD(syn_lefthand); COPY_BITMAPSET_FIELD(syn_righthand); COPY_SCALAR_FIELD(jointype); COPY_SCALAR_FIELD(lhs_strict); COPY_SCALAR_FIELD(delay_upper_joins); COPY_SCALAR_FIELD(semi_can_btree); COPY_SCALAR_FIELD(semi_can_hash); COPY_NODE_FIELD(semi_operators); COPY_NODE_FIELD(semi_rhs_exprs); return newnode; } /* * _copyAppendRelInfo */ static AppendRelInfo * _copyAppendRelInfo(const AppendRelInfo *from) { AppendRelInfo *newnode = makeNode(AppendRelInfo); COPY_SCALAR_FIELD(parent_relid); COPY_SCALAR_FIELD(child_relid); COPY_SCALAR_FIELD(parent_reltype); COPY_SCALAR_FIELD(child_reltype); COPY_NODE_FIELD(translated_vars); COPY_SCALAR_FIELD(num_child_cols); COPY_POINTER_FIELD(parent_colnos, from->num_child_cols * sizeof(AttrNumber)); COPY_SCALAR_FIELD(parent_reloid); return newnode; } /* * _copyPlaceHolderInfo */ static PlaceHolderInfo * _copyPlaceHolderInfo(const PlaceHolderInfo *from) { PlaceHolderInfo *newnode = makeNode(PlaceHolderInfo); COPY_SCALAR_FIELD(phid); COPY_NODE_FIELD(ph_var); COPY_BITMAPSET_FIELD(ph_eval_at); COPY_BITMAPSET_FIELD(ph_lateral); COPY_BITMAPSET_FIELD(ph_needed); COPY_SCALAR_FIELD(ph_width); return newnode; } /* **************************************************************** * parsenodes.h copy functions * **************************************************************** */ static RangeTblEntry * _copyRangeTblEntry(const RangeTblEntry *from) { RangeTblEntry *newnode = makeNode(RangeTblEntry); COPY_SCALAR_FIELD(rtekind); COPY_SCALAR_FIELD(relid); COPY_SCALAR_FIELD(relkind); COPY_SCALAR_FIELD(rellockmode); COPY_NODE_FIELD(tablesample); COPY_NODE_FIELD(subquery); COPY_SCALAR_FIELD(security_barrier); COPY_SCALAR_FIELD(jointype); COPY_SCALAR_FIELD(joinmergedcols); COPY_NODE_FIELD(joinaliasvars); COPY_NODE_FIELD(joinleftcols); COPY_NODE_FIELD(joinrightcols); COPY_NODE_FIELD(functions); COPY_SCALAR_FIELD(funcordinality); COPY_NODE_FIELD(tablefunc); COPY_NODE_FIELD(values_lists); COPY_STRING_FIELD(ctename); COPY_SCALAR_FIELD(ctelevelsup); COPY_SCALAR_FIELD(self_reference); COPY_NODE_FIELD(coltypes); COPY_NODE_FIELD(coltypmods); COPY_NODE_FIELD(colcollations); COPY_STRING_FIELD(enrname); COPY_SCALAR_FIELD(enrtuples); COPY_NODE_FIELD(alias); COPY_NODE_FIELD(eref); COPY_SCALAR_FIELD(lateral); COPY_SCALAR_FIELD(inh); COPY_SCALAR_FIELD(inFromCl); COPY_SCALAR_FIELD(requiredPerms); COPY_SCALAR_FIELD(checkAsUser); COPY_BITMAPSET_FIELD(selectedCols); COPY_BITMAPSET_FIELD(insertedCols); COPY_BITMAPSET_FIELD(updatedCols); COPY_BITMAPSET_FIELD(extraUpdatedCols); COPY_NODE_FIELD(securityQuals); return newnode; } static RangeTblFunction * _copyRangeTblFunction(const RangeTblFunction *from) { RangeTblFunction *newnode = makeNode(RangeTblFunction); COPY_NODE_FIELD(funcexpr); COPY_SCALAR_FIELD(funccolcount); COPY_NODE_FIELD(funccolnames); COPY_NODE_FIELD(funccoltypes); COPY_NODE_FIELD(funccoltypmods); COPY_NODE_FIELD(funccolcollations); COPY_BITMAPSET_FIELD(funcparams); return newnode; } static TableSampleClause * _copyTableSampleClause(const TableSampleClause *from) { TableSampleClause *newnode = makeNode(TableSampleClause); COPY_SCALAR_FIELD(tsmhandler); COPY_NODE_FIELD(args); COPY_NODE_FIELD(repeatable); return newnode; } static WithCheckOption * _copyWithCheckOption(const WithCheckOption *from) { WithCheckOption *newnode = makeNode(WithCheckOption); COPY_SCALAR_FIELD(kind); COPY_STRING_FIELD(relname); COPY_STRING_FIELD(polname); COPY_NODE_FIELD(qual); COPY_SCALAR_FIELD(cascaded); return newnode; } static SortGroupClause * _copySortGroupClause(const SortGroupClause *from) { SortGroupClause *newnode = makeNode(SortGroupClause); COPY_SCALAR_FIELD(tleSortGroupRef); COPY_SCALAR_FIELD(eqop); COPY_SCALAR_FIELD(sortop); COPY_SCALAR_FIELD(nulls_first); COPY_SCALAR_FIELD(hashable); return newnode; } static GroupingSet * _copyGroupingSet(const GroupingSet *from) { GroupingSet *newnode = makeNode(GroupingSet); COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(content); COPY_LOCATION_FIELD(location); return newnode; } static WindowClause * _copyWindowClause(const WindowClause *from) { WindowClause *newnode = makeNode(WindowClause); COPY_STRING_FIELD(name); COPY_STRING_FIELD(refname); COPY_NODE_FIELD(partitionClause); COPY_NODE_FIELD(orderClause); COPY_SCALAR_FIELD(frameOptions); COPY_NODE_FIELD(startOffset); COPY_NODE_FIELD(endOffset); COPY_SCALAR_FIELD(startInRangeFunc); COPY_SCALAR_FIELD(endInRangeFunc); COPY_SCALAR_FIELD(inRangeColl); COPY_SCALAR_FIELD(inRangeAsc); COPY_SCALAR_FIELD(inRangeNullsFirst); COPY_SCALAR_FIELD(winref); COPY_SCALAR_FIELD(copiedOrder); return newnode; } static RowMarkClause * _copyRowMarkClause(const RowMarkClause *from) { RowMarkClause *newnode = makeNode(RowMarkClause); COPY_SCALAR_FIELD(rti); COPY_SCALAR_FIELD(strength); COPY_SCALAR_FIELD(waitPolicy); COPY_SCALAR_FIELD(pushedDown); return newnode; } static WithClause * _copyWithClause(const WithClause *from) { WithClause *newnode = makeNode(WithClause); COPY_NODE_FIELD(ctes); COPY_SCALAR_FIELD(recursive); COPY_LOCATION_FIELD(location); return newnode; } static InferClause * _copyInferClause(const InferClause *from) { InferClause *newnode = makeNode(InferClause); COPY_NODE_FIELD(indexElems); COPY_NODE_FIELD(whereClause); COPY_STRING_FIELD(conname); COPY_LOCATION_FIELD(location); return newnode; } static OnConflictClause * _copyOnConflictClause(const OnConflictClause *from) { OnConflictClause *newnode = makeNode(OnConflictClause); COPY_SCALAR_FIELD(action); COPY_NODE_FIELD(infer); COPY_NODE_FIELD(targetList); COPY_NODE_FIELD(whereClause); COPY_LOCATION_FIELD(location); return newnode; } static CommonTableExpr * _copyCommonTableExpr(const CommonTableExpr *from) { CommonTableExpr *newnode = makeNode(CommonTableExpr); COPY_STRING_FIELD(ctename); COPY_NODE_FIELD(aliascolnames); COPY_SCALAR_FIELD(ctematerialized); COPY_NODE_FIELD(ctequery); COPY_LOCATION_FIELD(location); COPY_SCALAR_FIELD(cterecursive); COPY_SCALAR_FIELD(cterefcount); COPY_NODE_FIELD(ctecolnames); COPY_NODE_FIELD(ctecoltypes); COPY_NODE_FIELD(ctecoltypmods); COPY_NODE_FIELD(ctecolcollations); return newnode; } static A_Expr * _copyAExpr(const A_Expr *from) { A_Expr *newnode = makeNode(A_Expr); COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(name); COPY_NODE_FIELD(lexpr); COPY_NODE_FIELD(rexpr); COPY_LOCATION_FIELD(location); return newnode; } static ColumnRef * _copyColumnRef(const ColumnRef *from) { ColumnRef *newnode = makeNode(ColumnRef); COPY_NODE_FIELD(fields); COPY_LOCATION_FIELD(location); return newnode; } static ParamRef * _copyParamRef(const ParamRef *from) { ParamRef *newnode = makeNode(ParamRef); COPY_SCALAR_FIELD(number); COPY_LOCATION_FIELD(location); return newnode; } static A_Const * _copyAConst(const A_Const *from) { A_Const *newnode = makeNode(A_Const); /* This part must duplicate _copyValue */ COPY_SCALAR_FIELD(val.type); switch (from->val.type) { case T_Integer: COPY_SCALAR_FIELD(val.val.ival); break; case T_Float: case T_String: case T_BitString: COPY_STRING_FIELD(val.val.str); break; case T_Null: /* nothing to do */ break; default: elog(ERROR, "unrecognized node type: %d", (int) from->val.type); break; } COPY_LOCATION_FIELD(location); return newnode; } static FuncCall * _copyFuncCall(const FuncCall *from) { FuncCall *newnode = makeNode(FuncCall); COPY_NODE_FIELD(funcname); COPY_NODE_FIELD(args); COPY_NODE_FIELD(agg_order); COPY_NODE_FIELD(agg_filter); COPY_SCALAR_FIELD(agg_within_group); COPY_SCALAR_FIELD(agg_star); COPY_SCALAR_FIELD(agg_distinct); COPY_SCALAR_FIELD(func_variadic); COPY_NODE_FIELD(over); COPY_LOCATION_FIELD(location); return newnode; } static A_Star * _copyAStar(const A_Star *from) { A_Star *newnode = makeNode(A_Star); return newnode; } static A_Indices * _copyAIndices(const A_Indices *from) { A_Indices *newnode = makeNode(A_Indices); COPY_SCALAR_FIELD(is_slice); COPY_NODE_FIELD(lidx); COPY_NODE_FIELD(uidx); return newnode; } static A_Indirection * _copyA_Indirection(const A_Indirection *from) { A_Indirection *newnode = makeNode(A_Indirection); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(indirection); return newnode; } static A_ArrayExpr * _copyA_ArrayExpr(const A_ArrayExpr *from) { A_ArrayExpr *newnode = makeNode(A_ArrayExpr); COPY_NODE_FIELD(elements); COPY_LOCATION_FIELD(location); return newnode; } static ResTarget * _copyResTarget(const ResTarget *from) { ResTarget *newnode = makeNode(ResTarget); COPY_STRING_FIELD(name); COPY_NODE_FIELD(indirection); COPY_NODE_FIELD(val); COPY_LOCATION_FIELD(location); return newnode; } static MultiAssignRef * _copyMultiAssignRef(const MultiAssignRef *from) { MultiAssignRef *newnode = makeNode(MultiAssignRef); COPY_NODE_FIELD(source); COPY_SCALAR_FIELD(colno); COPY_SCALAR_FIELD(ncolumns); return newnode; } static TypeName * _copyTypeName(const TypeName *from) { TypeName *newnode = makeNode(TypeName); COPY_NODE_FIELD(names); COPY_SCALAR_FIELD(typeOid); COPY_SCALAR_FIELD(setof); COPY_SCALAR_FIELD(pct_type); COPY_NODE_FIELD(typmods); COPY_SCALAR_FIELD(typemod); COPY_NODE_FIELD(arrayBounds); COPY_LOCATION_FIELD(location); return newnode; } static SortBy * _copySortBy(const SortBy *from) { SortBy *newnode = makeNode(SortBy); COPY_NODE_FIELD(node); COPY_SCALAR_FIELD(sortby_dir); COPY_SCALAR_FIELD(sortby_nulls); COPY_NODE_FIELD(useOp); COPY_LOCATION_FIELD(location); return newnode; } static WindowDef * _copyWindowDef(const WindowDef *from) { WindowDef *newnode = makeNode(WindowDef); COPY_STRING_FIELD(name); COPY_STRING_FIELD(refname); COPY_NODE_FIELD(partitionClause); COPY_NODE_FIELD(orderClause); COPY_SCALAR_FIELD(frameOptions); COPY_NODE_FIELD(startOffset); COPY_NODE_FIELD(endOffset); COPY_LOCATION_FIELD(location); return newnode; } static RangeSubselect * _copyRangeSubselect(const RangeSubselect *from) { RangeSubselect *newnode = makeNode(RangeSubselect); COPY_SCALAR_FIELD(lateral); COPY_NODE_FIELD(subquery); COPY_NODE_FIELD(alias); return newnode; } static RangeFunction * _copyRangeFunction(const RangeFunction *from) { RangeFunction *newnode = makeNode(RangeFunction); COPY_SCALAR_FIELD(lateral); COPY_SCALAR_FIELD(ordinality); COPY_SCALAR_FIELD(is_rowsfrom); COPY_NODE_FIELD(functions); COPY_NODE_FIELD(alias); COPY_NODE_FIELD(coldeflist); return newnode; } static RangeTableSample * _copyRangeTableSample(const RangeTableSample *from) { RangeTableSample *newnode = makeNode(RangeTableSample); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(method); COPY_NODE_FIELD(args); COPY_NODE_FIELD(repeatable); COPY_LOCATION_FIELD(location); return newnode; } static RangeTableFunc * _copyRangeTableFunc(const RangeTableFunc *from) { RangeTableFunc *newnode = makeNode(RangeTableFunc); COPY_SCALAR_FIELD(lateral); COPY_NODE_FIELD(docexpr); COPY_NODE_FIELD(rowexpr); COPY_NODE_FIELD(namespaces); COPY_NODE_FIELD(columns); COPY_NODE_FIELD(alias); COPY_LOCATION_FIELD(location); return newnode; } static RangeTableFuncCol * _copyRangeTableFuncCol(const RangeTableFuncCol *from) { RangeTableFuncCol *newnode = makeNode(RangeTableFuncCol); COPY_STRING_FIELD(colname); COPY_NODE_FIELD(typeName); COPY_SCALAR_FIELD(for_ordinality); COPY_SCALAR_FIELD(is_not_null); COPY_NODE_FIELD(colexpr); COPY_NODE_FIELD(coldefexpr); COPY_LOCATION_FIELD(location); return newnode; } static TypeCast * _copyTypeCast(const TypeCast *from) { TypeCast *newnode = makeNode(TypeCast); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(typeName); COPY_LOCATION_FIELD(location); return newnode; } static CollateClause * _copyCollateClause(const CollateClause *from) { CollateClause *newnode = makeNode(CollateClause); COPY_NODE_FIELD(arg); COPY_NODE_FIELD(collname); COPY_LOCATION_FIELD(location); return newnode; } static IndexElem * _copyIndexElem(const IndexElem *from) { IndexElem *newnode = makeNode(IndexElem); COPY_STRING_FIELD(name); COPY_NODE_FIELD(expr); COPY_STRING_FIELD(indexcolname); COPY_NODE_FIELD(collation); COPY_NODE_FIELD(opclass); COPY_NODE_FIELD(opclassopts); COPY_SCALAR_FIELD(ordering); COPY_SCALAR_FIELD(nulls_ordering); return newnode; } static ColumnDef * _copyColumnDef(const ColumnDef *from) { ColumnDef *newnode = makeNode(ColumnDef); COPY_STRING_FIELD(colname); COPY_NODE_FIELD(typeName); COPY_SCALAR_FIELD(inhcount); COPY_SCALAR_FIELD(is_local); COPY_SCALAR_FIELD(is_not_null); COPY_SCALAR_FIELD(is_from_type); COPY_SCALAR_FIELD(storage); COPY_NODE_FIELD(raw_default); COPY_NODE_FIELD(cooked_default); COPY_SCALAR_FIELD(identity); COPY_NODE_FIELD(identitySequence); COPY_SCALAR_FIELD(generated); COPY_NODE_FIELD(collClause); COPY_SCALAR_FIELD(collOid); COPY_NODE_FIELD(constraints); COPY_NODE_FIELD(fdwoptions); COPY_LOCATION_FIELD(location); return newnode; } static Constraint * _copyConstraint(const Constraint *from) { Constraint *newnode = makeNode(Constraint); COPY_SCALAR_FIELD(contype); COPY_STRING_FIELD(conname); COPY_SCALAR_FIELD(deferrable); COPY_SCALAR_FIELD(initdeferred); COPY_LOCATION_FIELD(location); COPY_SCALAR_FIELD(is_no_inherit); COPY_NODE_FIELD(raw_expr); COPY_STRING_FIELD(cooked_expr); COPY_SCALAR_FIELD(generated_when); COPY_NODE_FIELD(keys); COPY_NODE_FIELD(including); COPY_NODE_FIELD(exclusions); COPY_NODE_FIELD(options); COPY_STRING_FIELD(indexname); COPY_STRING_FIELD(indexspace); COPY_SCALAR_FIELD(reset_default_tblspc); COPY_STRING_FIELD(access_method); COPY_NODE_FIELD(where_clause); COPY_NODE_FIELD(pktable); COPY_NODE_FIELD(fk_attrs); COPY_NODE_FIELD(pk_attrs); COPY_SCALAR_FIELD(fk_matchtype); COPY_SCALAR_FIELD(fk_upd_action); COPY_SCALAR_FIELD(fk_del_action); COPY_NODE_FIELD(old_conpfeqop); COPY_SCALAR_FIELD(old_pktable_oid); COPY_SCALAR_FIELD(skip_validation); COPY_SCALAR_FIELD(initially_valid); return newnode; } static DefElem * _copyDefElem(const DefElem *from) { DefElem *newnode = makeNode(DefElem); COPY_STRING_FIELD(defnamespace); COPY_STRING_FIELD(defname); COPY_NODE_FIELD(arg); COPY_SCALAR_FIELD(defaction); COPY_LOCATION_FIELD(location); return newnode; } static LockingClause * _copyLockingClause(const LockingClause *from) { LockingClause *newnode = makeNode(LockingClause); COPY_NODE_FIELD(lockedRels); COPY_SCALAR_FIELD(strength); COPY_SCALAR_FIELD(waitPolicy); return newnode; } static XmlSerialize * _copyXmlSerialize(const XmlSerialize *from) { XmlSerialize *newnode = makeNode(XmlSerialize); COPY_SCALAR_FIELD(xmloption); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(typeName); COPY_LOCATION_FIELD(location); return newnode; } static RoleSpec * _copyRoleSpec(const RoleSpec *from) { RoleSpec *newnode = makeNode(RoleSpec); COPY_SCALAR_FIELD(roletype); COPY_STRING_FIELD(rolename); COPY_LOCATION_FIELD(location); return newnode; } static TriggerTransition * _copyTriggerTransition(const TriggerTransition *from) { TriggerTransition *newnode = makeNode(TriggerTransition); COPY_STRING_FIELD(name); COPY_SCALAR_FIELD(isNew); COPY_SCALAR_FIELD(isTable); return newnode; } static Query * _copyQuery(const Query *from) { Query *newnode = makeNode(Query); COPY_SCALAR_FIELD(commandType); COPY_SCALAR_FIELD(querySource); COPY_SCALAR_FIELD(queryId); COPY_SCALAR_FIELD(canSetTag); COPY_NODE_FIELD(utilityStmt); COPY_SCALAR_FIELD(resultRelation); COPY_SCALAR_FIELD(hasAggs); COPY_SCALAR_FIELD(hasWindowFuncs); COPY_SCALAR_FIELD(hasTargetSRFs); COPY_SCALAR_FIELD(hasSubLinks); COPY_SCALAR_FIELD(hasDistinctOn); COPY_SCALAR_FIELD(hasRecursive); COPY_SCALAR_FIELD(hasModifyingCTE); COPY_SCALAR_FIELD(hasForUpdate); COPY_SCALAR_FIELD(hasRowSecurity); COPY_NODE_FIELD(cteList); COPY_NODE_FIELD(rtable); COPY_NODE_FIELD(jointree); COPY_NODE_FIELD(targetList); COPY_SCALAR_FIELD(override); COPY_NODE_FIELD(onConflict); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(groupClause); COPY_NODE_FIELD(groupingSets); COPY_NODE_FIELD(havingQual); COPY_NODE_FIELD(windowClause); COPY_NODE_FIELD(distinctClause); COPY_NODE_FIELD(sortClause); COPY_NODE_FIELD(limitOffset); COPY_NODE_FIELD(limitCount); COPY_SCALAR_FIELD(limitOption); COPY_NODE_FIELD(rowMarks); COPY_NODE_FIELD(setOperations); COPY_NODE_FIELD(constraintDeps); COPY_NODE_FIELD(withCheckOptions); COPY_LOCATION_FIELD(stmt_location); COPY_SCALAR_FIELD(stmt_len); return newnode; } static RawStmt * _copyRawStmt(const RawStmt *from) { RawStmt *newnode = makeNode(RawStmt); COPY_NODE_FIELD(stmt); COPY_LOCATION_FIELD(stmt_location); COPY_SCALAR_FIELD(stmt_len); return newnode; } static InsertStmt * _copyInsertStmt(const InsertStmt *from) { InsertStmt *newnode = makeNode(InsertStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(cols); COPY_NODE_FIELD(selectStmt); COPY_NODE_FIELD(onConflictClause); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(withClause); COPY_SCALAR_FIELD(override); return newnode; } static DeleteStmt * _copyDeleteStmt(const DeleteStmt *from) { DeleteStmt *newnode = makeNode(DeleteStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(usingClause); COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(withClause); return newnode; } static UpdateStmt * _copyUpdateStmt(const UpdateStmt *from) { UpdateStmt *newnode = makeNode(UpdateStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(targetList); COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(fromClause); COPY_NODE_FIELD(returningList); COPY_NODE_FIELD(withClause); return newnode; } static SelectStmt * _copySelectStmt(const SelectStmt *from) { SelectStmt *newnode = makeNode(SelectStmt); COPY_NODE_FIELD(distinctClause); COPY_NODE_FIELD(intoClause); COPY_NODE_FIELD(targetList); COPY_NODE_FIELD(fromClause); COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(groupClause); COPY_NODE_FIELD(havingClause); COPY_NODE_FIELD(windowClause); COPY_NODE_FIELD(valuesLists); COPY_NODE_FIELD(sortClause); COPY_NODE_FIELD(limitOffset); COPY_NODE_FIELD(limitCount); COPY_SCALAR_FIELD(limitOption); COPY_NODE_FIELD(lockingClause); COPY_NODE_FIELD(withClause); COPY_SCALAR_FIELD(op); COPY_SCALAR_FIELD(all); COPY_NODE_FIELD(larg); COPY_NODE_FIELD(rarg); return newnode; } static SetOperationStmt * _copySetOperationStmt(const SetOperationStmt *from) { SetOperationStmt *newnode = makeNode(SetOperationStmt); COPY_SCALAR_FIELD(op); COPY_SCALAR_FIELD(all); COPY_NODE_FIELD(larg); COPY_NODE_FIELD(rarg); COPY_NODE_FIELD(colTypes); COPY_NODE_FIELD(colTypmods); COPY_NODE_FIELD(colCollations); COPY_NODE_FIELD(groupClauses); return newnode; } static AlterTableStmt * _copyAlterTableStmt(const AlterTableStmt *from) { AlterTableStmt *newnode = makeNode(AlterTableStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(cmds); COPY_SCALAR_FIELD(relkind); COPY_SCALAR_FIELD(missing_ok); return newnode; } static AlterTableCmd * _copyAlterTableCmd(const AlterTableCmd *from) { AlterTableCmd *newnode = makeNode(AlterTableCmd); COPY_SCALAR_FIELD(subtype); COPY_STRING_FIELD(name); COPY_SCALAR_FIELD(num); COPY_NODE_FIELD(newowner); COPY_NODE_FIELD(def); COPY_SCALAR_FIELD(behavior); COPY_SCALAR_FIELD(missing_ok); return newnode; } static AlterCollationStmt * _copyAlterCollationStmt(const AlterCollationStmt *from) { AlterCollationStmt *newnode = makeNode(AlterCollationStmt); COPY_NODE_FIELD(collname); return newnode; } static AlterDomainStmt * _copyAlterDomainStmt(const AlterDomainStmt *from) { AlterDomainStmt *newnode = makeNode(AlterDomainStmt); COPY_SCALAR_FIELD(subtype); COPY_NODE_FIELD(typeName); COPY_STRING_FIELD(name); COPY_NODE_FIELD(def); COPY_SCALAR_FIELD(behavior); COPY_SCALAR_FIELD(missing_ok); return newnode; } static GrantStmt * _copyGrantStmt(const GrantStmt *from) { GrantStmt *newnode = makeNode(GrantStmt); COPY_SCALAR_FIELD(is_grant); COPY_SCALAR_FIELD(targtype); COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(objects); COPY_NODE_FIELD(privileges); COPY_NODE_FIELD(grantees); COPY_SCALAR_FIELD(grant_option); COPY_SCALAR_FIELD(behavior); return newnode; } static ObjectWithArgs * _copyObjectWithArgs(const ObjectWithArgs *from) { ObjectWithArgs *newnode = makeNode(ObjectWithArgs); COPY_NODE_FIELD(objname); COPY_NODE_FIELD(objargs); COPY_SCALAR_FIELD(args_unspecified); return newnode; } static AccessPriv * _copyAccessPriv(const AccessPriv *from) { AccessPriv *newnode = makeNode(AccessPriv); COPY_STRING_FIELD(priv_name); COPY_NODE_FIELD(cols); return newnode; } static GrantRoleStmt * _copyGrantRoleStmt(const GrantRoleStmt *from) { GrantRoleStmt *newnode = makeNode(GrantRoleStmt); COPY_NODE_FIELD(granted_roles); COPY_NODE_FIELD(grantee_roles); COPY_SCALAR_FIELD(is_grant); COPY_SCALAR_FIELD(admin_opt); COPY_NODE_FIELD(grantor); COPY_SCALAR_FIELD(behavior); return newnode; } static AlterDefaultPrivilegesStmt * _copyAlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt *from) { AlterDefaultPrivilegesStmt *newnode = makeNode(AlterDefaultPrivilegesStmt); COPY_NODE_FIELD(options); COPY_NODE_FIELD(action); return newnode; } static DeclareCursorStmt * _copyDeclareCursorStmt(const DeclareCursorStmt *from) { DeclareCursorStmt *newnode = makeNode(DeclareCursorStmt); COPY_STRING_FIELD(portalname); COPY_SCALAR_FIELD(options); COPY_NODE_FIELD(query); return newnode; } static ClosePortalStmt * _copyClosePortalStmt(const ClosePortalStmt *from) { ClosePortalStmt *newnode = makeNode(ClosePortalStmt); COPY_STRING_FIELD(portalname); return newnode; } static CallStmt * _copyCallStmt(const CallStmt *from) { CallStmt *newnode = makeNode(CallStmt); COPY_NODE_FIELD(funccall); COPY_NODE_FIELD(funcexpr); return newnode; } static ClusterStmt * _copyClusterStmt(const ClusterStmt *from) { ClusterStmt *newnode = makeNode(ClusterStmt); COPY_NODE_FIELD(relation); COPY_STRING_FIELD(indexname); COPY_SCALAR_FIELD(options); return newnode; } static CopyStmt * _copyCopyStmt(const CopyStmt *from) { CopyStmt *newnode = makeNode(CopyStmt); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(query); COPY_NODE_FIELD(attlist); COPY_SCALAR_FIELD(is_from); COPY_SCALAR_FIELD(is_program); COPY_STRING_FIELD(filename); COPY_NODE_FIELD(options); COPY_NODE_FIELD(whereClause); return newnode; } /* * CopyCreateStmtFields * * This function copies the fields of the CreateStmt node. It is used by * copy functions for classes which inherit from CreateStmt. */ static void CopyCreateStmtFields(const CreateStmt *from, CreateStmt *newnode) { COPY_NODE_FIELD(relation); COPY_NODE_FIELD(tableElts); COPY_NODE_FIELD(inhRelations); COPY_NODE_FIELD(partspec); COPY_NODE_FIELD(partbound); COPY_NODE_FIELD(ofTypename); COPY_NODE_FIELD(constraints); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(oncommit); COPY_STRING_FIELD(tablespacename); COPY_STRING_FIELD(accessMethod); COPY_SCALAR_FIELD(if_not_exists); } static CreateStmt * _copyCreateStmt(const CreateStmt *from) { CreateStmt *newnode = makeNode(CreateStmt); CopyCreateStmtFields(from, newnode); return newnode; } static TableLikeClause * _copyTableLikeClause(const TableLikeClause *from) { TableLikeClause *newnode = makeNode(TableLikeClause); COPY_NODE_FIELD(relation); COPY_SCALAR_FIELD(options); COPY_SCALAR_FIELD(relationOid); return newnode; } static DefineStmt * _copyDefineStmt(const DefineStmt *from) { DefineStmt *newnode = makeNode(DefineStmt); COPY_SCALAR_FIELD(kind); COPY_SCALAR_FIELD(oldstyle); COPY_NODE_FIELD(defnames); COPY_NODE_FIELD(args); COPY_NODE_FIELD(definition); COPY_SCALAR_FIELD(if_not_exists); COPY_SCALAR_FIELD(replace); return newnode; } static DropStmt * _copyDropStmt(const DropStmt *from) { DropStmt *newnode = makeNode(DropStmt); COPY_NODE_FIELD(objects); COPY_SCALAR_FIELD(removeType); COPY_SCALAR_FIELD(behavior); COPY_SCALAR_FIELD(missing_ok); COPY_SCALAR_FIELD(concurrent); return newnode; } static TruncateStmt * _copyTruncateStmt(const TruncateStmt *from) { TruncateStmt *newnode = makeNode(TruncateStmt); COPY_NODE_FIELD(relations); COPY_SCALAR_FIELD(restart_seqs); COPY_SCALAR_FIELD(behavior); return newnode; } static CommentStmt * _copyCommentStmt(const CommentStmt *from) { CommentStmt *newnode = makeNode(CommentStmt); COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(object); COPY_STRING_FIELD(comment); return newnode; } static SecLabelStmt * _copySecLabelStmt(const SecLabelStmt *from) { SecLabelStmt *newnode = makeNode(SecLabelStmt); COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(object); COPY_STRING_FIELD(provider); COPY_STRING_FIELD(label); return newnode; } static FetchStmt * _copyFetchStmt(const FetchStmt *from) { FetchStmt *newnode = makeNode(FetchStmt); COPY_SCALAR_FIELD(direction); COPY_SCALAR_FIELD(howMany); COPY_STRING_FIELD(portalname); COPY_SCALAR_FIELD(ismove); return newnode; } static IndexStmt * _copyIndexStmt(const IndexStmt *from) { IndexStmt *newnode = makeNode(IndexStmt); COPY_STRING_FIELD(idxname); COPY_NODE_FIELD(relation); COPY_STRING_FIELD(accessMethod); COPY_STRING_FIELD(tableSpace); COPY_NODE_FIELD(indexParams); COPY_NODE_FIELD(indexIncludingParams); COPY_NODE_FIELD(options); COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(excludeOpNames); COPY_STRING_FIELD(idxcomment); COPY_SCALAR_FIELD(indexOid); COPY_SCALAR_FIELD(oldNode); COPY_SCALAR_FIELD(oldCreateSubid); COPY_SCALAR_FIELD(oldFirstRelfilenodeSubid); COPY_SCALAR_FIELD(unique); COPY_SCALAR_FIELD(primary); COPY_SCALAR_FIELD(isconstraint); COPY_SCALAR_FIELD(deferrable); COPY_SCALAR_FIELD(initdeferred); COPY_SCALAR_FIELD(transformed); COPY_SCALAR_FIELD(concurrent); COPY_SCALAR_FIELD(if_not_exists); COPY_SCALAR_FIELD(reset_default_tblspc); return newnode; } static CreateStatsStmt * _copyCreateStatsStmt(const CreateStatsStmt *from) { CreateStatsStmt *newnode = makeNode(CreateStatsStmt); COPY_NODE_FIELD(defnames); COPY_NODE_FIELD(stat_types); COPY_NODE_FIELD(exprs); COPY_NODE_FIELD(relations); COPY_STRING_FIELD(stxcomment); COPY_SCALAR_FIELD(if_not_exists); return newnode; } static AlterStatsStmt * _copyAlterStatsStmt(const AlterStatsStmt *from) { AlterStatsStmt *newnode = makeNode(AlterStatsStmt); COPY_NODE_FIELD(defnames); COPY_SCALAR_FIELD(stxstattarget); COPY_SCALAR_FIELD(missing_ok); return newnode; } static CreateFunctionStmt * _copyCreateFunctionStmt(const CreateFunctionStmt *from) { CreateFunctionStmt *newnode = makeNode(CreateFunctionStmt); COPY_SCALAR_FIELD(is_procedure); COPY_SCALAR_FIELD(replace); COPY_NODE_FIELD(funcname); COPY_NODE_FIELD(parameters); COPY_NODE_FIELD(returnType); COPY_NODE_FIELD(options); return newnode; } static FunctionParameter * _copyFunctionParameter(const FunctionParameter *from) { FunctionParameter *newnode = makeNode(FunctionParameter); COPY_STRING_FIELD(name); COPY_NODE_FIELD(argType); COPY_SCALAR_FIELD(mode); COPY_NODE_FIELD(defexpr); return newnode; } static AlterFunctionStmt * _copyAlterFunctionStmt(const AlterFunctionStmt *from) { AlterFunctionStmt *newnode = makeNode(AlterFunctionStmt); COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(func); COPY_NODE_FIELD(actions); return newnode; } static DoStmt * _copyDoStmt(const DoStmt *from) { DoStmt *newnode = makeNode(DoStmt); COPY_NODE_FIELD(args); return newnode; } static RenameStmt * _copyRenameStmt(const RenameStmt *from) { RenameStmt *newnode = makeNode(RenameStmt); COPY_SCALAR_FIELD(renameType); COPY_SCALAR_FIELD(relationType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); COPY_STRING_FIELD(subname); COPY_STRING_FIELD(newname); COPY_SCALAR_FIELD(behavior); COPY_SCALAR_FIELD(missing_ok); return newnode; } static AlterObjectDependsStmt * _copyAlterObjectDependsStmt(const AlterObjectDependsStmt *from) { AlterObjectDependsStmt *newnode = makeNode(AlterObjectDependsStmt); COPY_SCALAR_FIELD(objectType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); COPY_NODE_FIELD(extname); COPY_SCALAR_FIELD(remove); return newnode; } static AlterObjectSchemaStmt * _copyAlterObjectSchemaStmt(const AlterObjectSchemaStmt *from) { AlterObjectSchemaStmt *newnode = makeNode(AlterObjectSchemaStmt); COPY_SCALAR_FIELD(objectType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); COPY_STRING_FIELD(newschema); COPY_SCALAR_FIELD(missing_ok); return newnode; } static AlterOwnerStmt * _copyAlterOwnerStmt(const AlterOwnerStmt *from) { AlterOwnerStmt *newnode = makeNode(AlterOwnerStmt); COPY_SCALAR_FIELD(objectType); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(object); COPY_NODE_FIELD(newowner); return newnode; } static AlterOperatorStmt * _copyAlterOperatorStmt(const AlterOperatorStmt *from) { AlterOperatorStmt *newnode = makeNode(AlterOperatorStmt); COPY_NODE_FIELD(opername); COPY_NODE_FIELD(options); return newnode; } static AlterTypeStmt * _copyAlterTypeStmt(const AlterTypeStmt *from) { AlterTypeStmt *newnode = makeNode(AlterTypeStmt); COPY_NODE_FIELD(typeName); COPY_NODE_FIELD(options); return newnode; } static RuleStmt * _copyRuleStmt(const RuleStmt *from) { RuleStmt *newnode = makeNode(RuleStmt); COPY_NODE_FIELD(relation); COPY_STRING_FIELD(rulename); COPY_NODE_FIELD(whereClause); COPY_SCALAR_FIELD(event); COPY_SCALAR_FIELD(instead); COPY_NODE_FIELD(actions); COPY_SCALAR_FIELD(replace); return newnode; } static NotifyStmt * _copyNotifyStmt(const NotifyStmt *from) { NotifyStmt *newnode = makeNode(NotifyStmt); COPY_STRING_FIELD(conditionname); COPY_STRING_FIELD(payload); return newnode; } static ListenStmt * _copyListenStmt(const ListenStmt *from) { ListenStmt *newnode = makeNode(ListenStmt); COPY_STRING_FIELD(conditionname); return newnode; } static UnlistenStmt * _copyUnlistenStmt(const UnlistenStmt *from) { UnlistenStmt *newnode = makeNode(UnlistenStmt); COPY_STRING_FIELD(conditionname); return newnode; } static TransactionStmt * _copyTransactionStmt(const TransactionStmt *from) { TransactionStmt *newnode = makeNode(TransactionStmt); COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(options); COPY_STRING_FIELD(savepoint_name); COPY_STRING_FIELD(gid); COPY_SCALAR_FIELD(chain); return newnode; } static CompositeTypeStmt * _copyCompositeTypeStmt(const CompositeTypeStmt *from) { CompositeTypeStmt *newnode = makeNode(CompositeTypeStmt); COPY_NODE_FIELD(typevar); COPY_NODE_FIELD(coldeflist); return newnode; } static CreateEnumStmt * _copyCreateEnumStmt(const CreateEnumStmt *from) { CreateEnumStmt *newnode = makeNode(CreateEnumStmt); COPY_NODE_FIELD(typeName); COPY_NODE_FIELD(vals); return newnode; } static CreateRangeStmt * _copyCreateRangeStmt(const CreateRangeStmt *from) { CreateRangeStmt *newnode = makeNode(CreateRangeStmt); COPY_NODE_FIELD(typeName); COPY_NODE_FIELD(params); return newnode; } static AlterEnumStmt * _copyAlterEnumStmt(const AlterEnumStmt *from) { AlterEnumStmt *newnode = makeNode(AlterEnumStmt); COPY_NODE_FIELD(typeName); COPY_STRING_FIELD(oldVal); COPY_STRING_FIELD(newVal); COPY_STRING_FIELD(newValNeighbor); COPY_SCALAR_FIELD(newValIsAfter); COPY_SCALAR_FIELD(skipIfNewValExists); return newnode; } static ViewStmt * _copyViewStmt(const ViewStmt *from) { ViewStmt *newnode = makeNode(ViewStmt); COPY_NODE_FIELD(view); COPY_NODE_FIELD(aliases); COPY_NODE_FIELD(query); COPY_SCALAR_FIELD(replace); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(withCheckOption); return newnode; } static LoadStmt * _copyLoadStmt(const LoadStmt *from) { LoadStmt *newnode = makeNode(LoadStmt); COPY_STRING_FIELD(filename); return newnode; } static CreateDomainStmt * _copyCreateDomainStmt(const CreateDomainStmt *from) { CreateDomainStmt *newnode = makeNode(CreateDomainStmt); COPY_NODE_FIELD(domainname); COPY_NODE_FIELD(typeName); COPY_NODE_FIELD(collClause); COPY_NODE_FIELD(constraints); return newnode; } static CreateOpClassStmt * _copyCreateOpClassStmt(const CreateOpClassStmt *from) { CreateOpClassStmt *newnode = makeNode(CreateOpClassStmt); COPY_NODE_FIELD(opclassname); COPY_NODE_FIELD(opfamilyname); COPY_STRING_FIELD(amname); COPY_NODE_FIELD(datatype); COPY_NODE_FIELD(items); COPY_SCALAR_FIELD(isDefault); return newnode; } static CreateOpClassItem * _copyCreateOpClassItem(const CreateOpClassItem *from) { CreateOpClassItem *newnode = makeNode(CreateOpClassItem); COPY_SCALAR_FIELD(itemtype); COPY_NODE_FIELD(name); COPY_SCALAR_FIELD(number); COPY_NODE_FIELD(order_family); COPY_NODE_FIELD(class_args); COPY_NODE_FIELD(storedtype); return newnode; } static CreateOpFamilyStmt * _copyCreateOpFamilyStmt(const CreateOpFamilyStmt *from) { CreateOpFamilyStmt *newnode = makeNode(CreateOpFamilyStmt); COPY_NODE_FIELD(opfamilyname); COPY_STRING_FIELD(amname); return newnode; } static AlterOpFamilyStmt * _copyAlterOpFamilyStmt(const AlterOpFamilyStmt *from) { AlterOpFamilyStmt *newnode = makeNode(AlterOpFamilyStmt); COPY_NODE_FIELD(opfamilyname); COPY_STRING_FIELD(amname); COPY_SCALAR_FIELD(isDrop); COPY_NODE_FIELD(items); return newnode; } static CreatedbStmt * _copyCreatedbStmt(const CreatedbStmt *from) { CreatedbStmt *newnode = makeNode(CreatedbStmt); COPY_STRING_FIELD(dbname); COPY_NODE_FIELD(options); return newnode; } static AlterDatabaseStmt * _copyAlterDatabaseStmt(const AlterDatabaseStmt *from) { AlterDatabaseStmt *newnode = makeNode(AlterDatabaseStmt); COPY_STRING_FIELD(dbname); COPY_NODE_FIELD(options); return newnode; } static AlterDatabaseSetStmt * _copyAlterDatabaseSetStmt(const AlterDatabaseSetStmt *from) { AlterDatabaseSetStmt *newnode = makeNode(AlterDatabaseSetStmt); COPY_STRING_FIELD(dbname); COPY_NODE_FIELD(setstmt); return newnode; } static DropdbStmt * _copyDropdbStmt(const DropdbStmt *from) { DropdbStmt *newnode = makeNode(DropdbStmt); COPY_STRING_FIELD(dbname); COPY_SCALAR_FIELD(missing_ok); COPY_NODE_FIELD(options); return newnode; } static VacuumStmt * _copyVacuumStmt(const VacuumStmt *from) { VacuumStmt *newnode = makeNode(VacuumStmt); COPY_NODE_FIELD(options); COPY_NODE_FIELD(rels); COPY_SCALAR_FIELD(is_vacuumcmd); return newnode; } static VacuumRelation * _copyVacuumRelation(const VacuumRelation *from) { VacuumRelation *newnode = makeNode(VacuumRelation); COPY_NODE_FIELD(relation); COPY_SCALAR_FIELD(oid); COPY_NODE_FIELD(va_cols); return newnode; } static ExplainStmt * _copyExplainStmt(const ExplainStmt *from) { ExplainStmt *newnode = makeNode(ExplainStmt); COPY_NODE_FIELD(query); COPY_NODE_FIELD(options); return newnode; } static CreateTableAsStmt * _copyCreateTableAsStmt(const CreateTableAsStmt *from) { CreateTableAsStmt *newnode = makeNode(CreateTableAsStmt); COPY_NODE_FIELD(query); COPY_NODE_FIELD(into); COPY_SCALAR_FIELD(relkind); COPY_SCALAR_FIELD(is_select_into); COPY_SCALAR_FIELD(if_not_exists); return newnode; } static RefreshMatViewStmt * _copyRefreshMatViewStmt(const RefreshMatViewStmt *from) { RefreshMatViewStmt *newnode = makeNode(RefreshMatViewStmt); COPY_SCALAR_FIELD(concurrent); COPY_SCALAR_FIELD(skipData); COPY_NODE_FIELD(relation); return newnode; } static ReplicaIdentityStmt * _copyReplicaIdentityStmt(const ReplicaIdentityStmt *from) { ReplicaIdentityStmt *newnode = makeNode(ReplicaIdentityStmt); COPY_SCALAR_FIELD(identity_type); COPY_STRING_FIELD(name); return newnode; } static AlterSystemStmt * _copyAlterSystemStmt(const AlterSystemStmt *from) { AlterSystemStmt *newnode = makeNode(AlterSystemStmt); COPY_NODE_FIELD(setstmt); return newnode; } static CreateSeqStmt * _copyCreateSeqStmt(const CreateSeqStmt *from) { CreateSeqStmt *newnode = makeNode(CreateSeqStmt); COPY_NODE_FIELD(sequence); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(ownerId); COPY_SCALAR_FIELD(for_identity); COPY_SCALAR_FIELD(if_not_exists); return newnode; } static AlterSeqStmt * _copyAlterSeqStmt(const AlterSeqStmt *from) { AlterSeqStmt *newnode = makeNode(AlterSeqStmt); COPY_NODE_FIELD(sequence); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(for_identity); COPY_SCALAR_FIELD(missing_ok); return newnode; } static VariableSetStmt * _copyVariableSetStmt(const VariableSetStmt *from) { VariableSetStmt *newnode = makeNode(VariableSetStmt); COPY_SCALAR_FIELD(kind); COPY_STRING_FIELD(name); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(is_local); return newnode; } static VariableShowStmt * _copyVariableShowStmt(const VariableShowStmt *from) { VariableShowStmt *newnode = makeNode(VariableShowStmt); COPY_STRING_FIELD(name); return newnode; } static DiscardStmt * _copyDiscardStmt(const DiscardStmt *from) { DiscardStmt *newnode = makeNode(DiscardStmt); COPY_SCALAR_FIELD(target); return newnode; } static CreateTableSpaceStmt * _copyCreateTableSpaceStmt(const CreateTableSpaceStmt *from) { CreateTableSpaceStmt *newnode = makeNode(CreateTableSpaceStmt); COPY_STRING_FIELD(tablespacename); COPY_NODE_FIELD(owner); COPY_STRING_FIELD(location); COPY_NODE_FIELD(options); return newnode; } static DropTableSpaceStmt * _copyDropTableSpaceStmt(const DropTableSpaceStmt *from) { DropTableSpaceStmt *newnode = makeNode(DropTableSpaceStmt); COPY_STRING_FIELD(tablespacename); COPY_SCALAR_FIELD(missing_ok); return newnode; } static AlterTableSpaceOptionsStmt * _copyAlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt *from) { AlterTableSpaceOptionsStmt *newnode = makeNode(AlterTableSpaceOptionsStmt); COPY_STRING_FIELD(tablespacename); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(isReset); return newnode; } static AlterTableMoveAllStmt * _copyAlterTableMoveAllStmt(const AlterTableMoveAllStmt *from) { AlterTableMoveAllStmt *newnode = makeNode(AlterTableMoveAllStmt); COPY_STRING_FIELD(orig_tablespacename); COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(roles); COPY_STRING_FIELD(new_tablespacename); COPY_SCALAR_FIELD(nowait); return newnode; } static CreateExtensionStmt * _copyCreateExtensionStmt(const CreateExtensionStmt *from) { CreateExtensionStmt *newnode = makeNode(CreateExtensionStmt); COPY_STRING_FIELD(extname); COPY_SCALAR_FIELD(if_not_exists); COPY_NODE_FIELD(options); return newnode; } static AlterExtensionStmt * _copyAlterExtensionStmt(const AlterExtensionStmt *from) { AlterExtensionStmt *newnode = makeNode(AlterExtensionStmt); COPY_STRING_FIELD(extname); COPY_NODE_FIELD(options); return newnode; } static AlterExtensionContentsStmt * _copyAlterExtensionContentsStmt(const AlterExtensionContentsStmt *from) { AlterExtensionContentsStmt *newnode = makeNode(AlterExtensionContentsStmt); COPY_STRING_FIELD(extname); COPY_SCALAR_FIELD(action); COPY_SCALAR_FIELD(objtype); COPY_NODE_FIELD(object); return newnode; } static CreateFdwStmt * _copyCreateFdwStmt(const CreateFdwStmt *from) { CreateFdwStmt *newnode = makeNode(CreateFdwStmt); COPY_STRING_FIELD(fdwname); COPY_NODE_FIELD(func_options); COPY_NODE_FIELD(options); return newnode; } static AlterFdwStmt * _copyAlterFdwStmt(const AlterFdwStmt *from) { AlterFdwStmt *newnode = makeNode(AlterFdwStmt); COPY_STRING_FIELD(fdwname); COPY_NODE_FIELD(func_options); COPY_NODE_FIELD(options); return newnode; } static CreateForeignServerStmt * _copyCreateForeignServerStmt(const CreateForeignServerStmt *from) { CreateForeignServerStmt *newnode = makeNode(CreateForeignServerStmt); COPY_STRING_FIELD(servername); COPY_STRING_FIELD(servertype); COPY_STRING_FIELD(version); COPY_STRING_FIELD(fdwname); COPY_SCALAR_FIELD(if_not_exists); COPY_NODE_FIELD(options); return newnode; } static AlterForeignServerStmt * _copyAlterForeignServerStmt(const AlterForeignServerStmt *from) { AlterForeignServerStmt *newnode = makeNode(AlterForeignServerStmt); COPY_STRING_FIELD(servername); COPY_STRING_FIELD(version); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(has_version); return newnode; } static CreateUserMappingStmt * _copyCreateUserMappingStmt(const CreateUserMappingStmt *from) { CreateUserMappingStmt *newnode = makeNode(CreateUserMappingStmt); COPY_NODE_FIELD(user); COPY_STRING_FIELD(servername); COPY_SCALAR_FIELD(if_not_exists); COPY_NODE_FIELD(options); return newnode; } static AlterUserMappingStmt * _copyAlterUserMappingStmt(const AlterUserMappingStmt *from) { AlterUserMappingStmt *newnode = makeNode(AlterUserMappingStmt); COPY_NODE_FIELD(user); COPY_STRING_FIELD(servername); COPY_NODE_FIELD(options); return newnode; } static DropUserMappingStmt * _copyDropUserMappingStmt(const DropUserMappingStmt *from) { DropUserMappingStmt *newnode = makeNode(DropUserMappingStmt); COPY_NODE_FIELD(user); COPY_STRING_FIELD(servername); COPY_SCALAR_FIELD(missing_ok); return newnode; } static CreateForeignTableStmt * _copyCreateForeignTableStmt(const CreateForeignTableStmt *from) { CreateForeignTableStmt *newnode = makeNode(CreateForeignTableStmt); CopyCreateStmtFields((const CreateStmt *) from, (CreateStmt *) newnode); COPY_STRING_FIELD(servername); COPY_NODE_FIELD(options); return newnode; } static ImportForeignSchemaStmt * _copyImportForeignSchemaStmt(const ImportForeignSchemaStmt *from) { ImportForeignSchemaStmt *newnode = makeNode(ImportForeignSchemaStmt); COPY_STRING_FIELD(server_name); COPY_STRING_FIELD(remote_schema); COPY_STRING_FIELD(local_schema); COPY_SCALAR_FIELD(list_type); COPY_NODE_FIELD(table_list); COPY_NODE_FIELD(options); return newnode; } static CreateTransformStmt * _copyCreateTransformStmt(const CreateTransformStmt *from) { CreateTransformStmt *newnode = makeNode(CreateTransformStmt); COPY_SCALAR_FIELD(replace); COPY_NODE_FIELD(type_name); COPY_STRING_FIELD(lang); COPY_NODE_FIELD(fromsql); COPY_NODE_FIELD(tosql); return newnode; } static CreateAmStmt * _copyCreateAmStmt(const CreateAmStmt *from) { CreateAmStmt *newnode = makeNode(CreateAmStmt); COPY_STRING_FIELD(amname); COPY_NODE_FIELD(handler_name); COPY_SCALAR_FIELD(amtype); return newnode; } static CreateTrigStmt * _copyCreateTrigStmt(const CreateTrigStmt *from) { CreateTrigStmt *newnode = makeNode(CreateTrigStmt); COPY_STRING_FIELD(trigname); COPY_NODE_FIELD(relation); COPY_NODE_FIELD(funcname); COPY_NODE_FIELD(args); COPY_SCALAR_FIELD(row); COPY_SCALAR_FIELD(timing); COPY_SCALAR_FIELD(events); COPY_NODE_FIELD(columns); COPY_NODE_FIELD(whenClause); COPY_SCALAR_FIELD(isconstraint); COPY_NODE_FIELD(transitionRels); COPY_SCALAR_FIELD(deferrable); COPY_SCALAR_FIELD(initdeferred); COPY_NODE_FIELD(constrrel); return newnode; } static CreateEventTrigStmt * _copyCreateEventTrigStmt(const CreateEventTrigStmt *from) { CreateEventTrigStmt *newnode = makeNode(CreateEventTrigStmt); COPY_STRING_FIELD(trigname); COPY_STRING_FIELD(eventname); COPY_NODE_FIELD(whenclause); COPY_NODE_FIELD(funcname); return newnode; } static AlterEventTrigStmt * _copyAlterEventTrigStmt(const AlterEventTrigStmt *from) { AlterEventTrigStmt *newnode = makeNode(AlterEventTrigStmt); COPY_STRING_FIELD(trigname); COPY_SCALAR_FIELD(tgenabled); return newnode; } static CreatePLangStmt * _copyCreatePLangStmt(const CreatePLangStmt *from) { CreatePLangStmt *newnode = makeNode(CreatePLangStmt); COPY_SCALAR_FIELD(replace); COPY_STRING_FIELD(plname); COPY_NODE_FIELD(plhandler); COPY_NODE_FIELD(plinline); COPY_NODE_FIELD(plvalidator); COPY_SCALAR_FIELD(pltrusted); return newnode; } static CreateRoleStmt * _copyCreateRoleStmt(const CreateRoleStmt *from) { CreateRoleStmt *newnode = makeNode(CreateRoleStmt); COPY_SCALAR_FIELD(stmt_type); COPY_STRING_FIELD(role); COPY_NODE_FIELD(options); return newnode; } static AlterRoleStmt * _copyAlterRoleStmt(const AlterRoleStmt *from) { AlterRoleStmt *newnode = makeNode(AlterRoleStmt); COPY_NODE_FIELD(role); COPY_NODE_FIELD(options); COPY_SCALAR_FIELD(action); return newnode; } static AlterRoleSetStmt * _copyAlterRoleSetStmt(const AlterRoleSetStmt *from) { AlterRoleSetStmt *newnode = makeNode(AlterRoleSetStmt); COPY_NODE_FIELD(role); COPY_STRING_FIELD(database); COPY_NODE_FIELD(setstmt); return newnode; } static DropRoleStmt * _copyDropRoleStmt(const DropRoleStmt *from) { DropRoleStmt *newnode = makeNode(DropRoleStmt); COPY_NODE_FIELD(roles); COPY_SCALAR_FIELD(missing_ok); return newnode; } static LockStmt * _copyLockStmt(const LockStmt *from) { LockStmt *newnode = makeNode(LockStmt); COPY_NODE_FIELD(relations); COPY_SCALAR_FIELD(mode); COPY_SCALAR_FIELD(nowait); return newnode; } static ConstraintsSetStmt * _copyConstraintsSetStmt(const ConstraintsSetStmt *from) { ConstraintsSetStmt *newnode = makeNode(ConstraintsSetStmt); COPY_NODE_FIELD(constraints); COPY_SCALAR_FIELD(deferred); return newnode; } static ReindexStmt * _copyReindexStmt(const ReindexStmt *from) { ReindexStmt *newnode = makeNode(ReindexStmt); COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(relation); COPY_STRING_FIELD(name); COPY_SCALAR_FIELD(options); COPY_SCALAR_FIELD(concurrent); return newnode; } static CreateSchemaStmt * _copyCreateSchemaStmt(const CreateSchemaStmt *from) { CreateSchemaStmt *newnode = makeNode(CreateSchemaStmt); COPY_STRING_FIELD(schemaname); COPY_NODE_FIELD(authrole); COPY_NODE_FIELD(schemaElts); COPY_SCALAR_FIELD(if_not_exists); return newnode; } static CreateConversionStmt * _copyCreateConversionStmt(const CreateConversionStmt *from) { CreateConversionStmt *newnode = makeNode(CreateConversionStmt); COPY_NODE_FIELD(conversion_name); COPY_STRING_FIELD(for_encoding_name); COPY_STRING_FIELD(to_encoding_name); COPY_NODE_FIELD(func_name); COPY_SCALAR_FIELD(def); return newnode; } static CreateCastStmt * _copyCreateCastStmt(const CreateCastStmt *from) { CreateCastStmt *newnode = makeNode(CreateCastStmt); COPY_NODE_FIELD(sourcetype); COPY_NODE_FIELD(targettype); COPY_NODE_FIELD(func); COPY_SCALAR_FIELD(context); COPY_SCALAR_FIELD(inout); return newnode; } static PrepareStmt * _copyPrepareStmt(const PrepareStmt *from) { PrepareStmt *newnode = makeNode(PrepareStmt); COPY_STRING_FIELD(name); COPY_NODE_FIELD(argtypes); COPY_NODE_FIELD(query); return newnode; } static ExecuteStmt * _copyExecuteStmt(const ExecuteStmt *from) { ExecuteStmt *newnode = makeNode(ExecuteStmt); COPY_STRING_FIELD(name); COPY_NODE_FIELD(params); return newnode; } static DeallocateStmt * _copyDeallocateStmt(const DeallocateStmt *from) { DeallocateStmt *newnode = makeNode(DeallocateStmt); COPY_STRING_FIELD(name); return newnode; } static DropOwnedStmt * _copyDropOwnedStmt(const DropOwnedStmt *from) { DropOwnedStmt *newnode = makeNode(DropOwnedStmt); COPY_NODE_FIELD(roles); COPY_SCALAR_FIELD(behavior); return newnode; } static ReassignOwnedStmt * _copyReassignOwnedStmt(const ReassignOwnedStmt *from) { ReassignOwnedStmt *newnode = makeNode(ReassignOwnedStmt); COPY_NODE_FIELD(roles); COPY_NODE_FIELD(newrole); return newnode; } static AlterTSDictionaryStmt * _copyAlterTSDictionaryStmt(const AlterTSDictionaryStmt *from) { AlterTSDictionaryStmt *newnode = makeNode(AlterTSDictionaryStmt); COPY_NODE_FIELD(dictname); COPY_NODE_FIELD(options); return newnode; } static AlterTSConfigurationStmt * _copyAlterTSConfigurationStmt(const AlterTSConfigurationStmt *from) { AlterTSConfigurationStmt *newnode = makeNode(AlterTSConfigurationStmt); COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(cfgname); COPY_NODE_FIELD(tokentype); COPY_NODE_FIELD(dicts); COPY_SCALAR_FIELD(override); COPY_SCALAR_FIELD(replace); COPY_SCALAR_FIELD(missing_ok); return newnode; } static CreatePolicyStmt * _copyCreatePolicyStmt(const CreatePolicyStmt *from) { CreatePolicyStmt *newnode = makeNode(CreatePolicyStmt); COPY_STRING_FIELD(policy_name); COPY_NODE_FIELD(table); COPY_STRING_FIELD(cmd_name); COPY_SCALAR_FIELD(permissive); COPY_NODE_FIELD(roles); COPY_NODE_FIELD(qual); COPY_NODE_FIELD(with_check); return newnode; } static AlterPolicyStmt * _copyAlterPolicyStmt(const AlterPolicyStmt *from) { AlterPolicyStmt *newnode = makeNode(AlterPolicyStmt); COPY_STRING_FIELD(policy_name); COPY_NODE_FIELD(table); COPY_NODE_FIELD(roles); COPY_NODE_FIELD(qual); COPY_NODE_FIELD(with_check); return newnode; } static PartitionElem * _copyPartitionElem(const PartitionElem *from) { PartitionElem *newnode = makeNode(PartitionElem); COPY_STRING_FIELD(name); COPY_NODE_FIELD(expr); COPY_NODE_FIELD(collation); COPY_NODE_FIELD(opclass); COPY_LOCATION_FIELD(location); return newnode; } static PartitionSpec * _copyPartitionSpec(const PartitionSpec *from) { PartitionSpec *newnode = makeNode(PartitionSpec); COPY_STRING_FIELD(strategy); COPY_NODE_FIELD(partParams); COPY_LOCATION_FIELD(location); return newnode; } static PartitionBoundSpec * _copyPartitionBoundSpec(const PartitionBoundSpec *from) { PartitionBoundSpec *newnode = makeNode(PartitionBoundSpec); COPY_SCALAR_FIELD(strategy); COPY_SCALAR_FIELD(is_default); COPY_SCALAR_FIELD(modulus); COPY_SCALAR_FIELD(remainder); COPY_NODE_FIELD(listdatums); COPY_NODE_FIELD(lowerdatums); COPY_NODE_FIELD(upperdatums); COPY_LOCATION_FIELD(location); return newnode; } static PartitionRangeDatum * _copyPartitionRangeDatum(const PartitionRangeDatum *from) { PartitionRangeDatum *newnode = makeNode(PartitionRangeDatum); COPY_SCALAR_FIELD(kind); COPY_NODE_FIELD(value); COPY_LOCATION_FIELD(location); return newnode; } static PartitionCmd * _copyPartitionCmd(const PartitionCmd *from) { PartitionCmd *newnode = makeNode(PartitionCmd); COPY_NODE_FIELD(name); COPY_NODE_FIELD(bound); return newnode; } static CreatePublicationStmt * _copyCreatePublicationStmt(const CreatePublicationStmt *from) { CreatePublicationStmt *newnode = makeNode(CreatePublicationStmt); COPY_STRING_FIELD(pubname); COPY_NODE_FIELD(options); COPY_NODE_FIELD(tables); COPY_SCALAR_FIELD(for_all_tables); return newnode; } static AlterPublicationStmt * _copyAlterPublicationStmt(const AlterPublicationStmt *from) { AlterPublicationStmt *newnode = makeNode(AlterPublicationStmt); COPY_STRING_FIELD(pubname); COPY_NODE_FIELD(options); COPY_NODE_FIELD(tables); COPY_SCALAR_FIELD(for_all_tables); COPY_SCALAR_FIELD(tableAction); return newnode; } static CreateSubscriptionStmt * _copyCreateSubscriptionStmt(const CreateSubscriptionStmt *from) { CreateSubscriptionStmt *newnode = makeNode(CreateSubscriptionStmt); COPY_STRING_FIELD(subname); COPY_STRING_FIELD(conninfo); COPY_NODE_FIELD(publication); COPY_NODE_FIELD(options); return newnode; } static AlterSubscriptionStmt * _copyAlterSubscriptionStmt(const AlterSubscriptionStmt *from) { AlterSubscriptionStmt *newnode = makeNode(AlterSubscriptionStmt); COPY_SCALAR_FIELD(kind); COPY_STRING_FIELD(subname); COPY_STRING_FIELD(conninfo); COPY_NODE_FIELD(publication); COPY_NODE_FIELD(options); return newnode; } static DropSubscriptionStmt * _copyDropSubscriptionStmt(const DropSubscriptionStmt *from) { DropSubscriptionStmt *newnode = makeNode(DropSubscriptionStmt); COPY_STRING_FIELD(subname); COPY_SCALAR_FIELD(missing_ok); COPY_SCALAR_FIELD(behavior); return newnode; } /* **************************************************************** * extensible.h copy functions * **************************************************************** */ static ExtensibleNode * _copyExtensibleNode(const ExtensibleNode *from) { ExtensibleNode *newnode; const ExtensibleNodeMethods *methods; methods = GetExtensibleNodeMethods(from->extnodename, false); newnode = (ExtensibleNode *) newNode(methods->node_size, T_ExtensibleNode); COPY_STRING_FIELD(extnodename); /* copy the private fields */ methods->nodeCopy(newnode, from); return newnode; } /* **************************************************************** * value.h copy functions * **************************************************************** */ static Value * _copyValue(const Value *from) { Value *newnode = makeNode(Value); /* See also _copyAConst when changing this code! */ COPY_SCALAR_FIELD(type); switch (from->type) { case T_Integer: COPY_SCALAR_FIELD(val.ival); break; case T_Float: case T_String: case T_BitString: COPY_STRING_FIELD(val.str); break; case T_Null: /* nothing to do */ break; default: elog(ERROR, "unrecognized node type: %d", (int) from->type); break; } return newnode; } static ForeignKeyCacheInfo * _copyForeignKeyCacheInfo(const ForeignKeyCacheInfo *from) { ForeignKeyCacheInfo *newnode = makeNode(ForeignKeyCacheInfo); COPY_SCALAR_FIELD(conoid); COPY_SCALAR_FIELD(conrelid); COPY_SCALAR_FIELD(confrelid); COPY_SCALAR_FIELD(nkeys); /* COPY_SCALAR_FIELD might work for these, but let's not assume that */ memcpy(newnode->conkey, from->conkey, sizeof(newnode->conkey)); memcpy(newnode->confkey, from->confkey, sizeof(newnode->confkey)); memcpy(newnode->conpfeqop, from->conpfeqop, sizeof(newnode->conpfeqop)); return newnode; } /* * copyObjectImpl -- implementation of copyObject(); see nodes/nodes.h * * Create a copy of a Node tree or list. This is a "deep" copy: all * substructure is copied too, recursively. */ void * copyObjectImpl(const void *from) { void *retval; if (from == NULL) return NULL; /* Guard against stack overflow due to overly complex expressions */ check_stack_depth(); switch (nodeTag(from)) { /* * PLAN NODES */ case T_PlannedStmt: retval = _copyPlannedStmt(from); break; case T_Plan: retval = _copyPlan(from); break; case T_Result: retval = _copyResult(from); break; case T_ProjectSet: retval = _copyProjectSet(from); break; case T_ModifyTable: retval = _copyModifyTable(from); break; case T_Append: retval = _copyAppend(from); break; case T_MergeAppend: retval = _copyMergeAppend(from); break; case T_RecursiveUnion: retval = _copyRecursiveUnion(from); break; case T_BitmapAnd: retval = _copyBitmapAnd(from); break; case T_BitmapOr: retval = _copyBitmapOr(from); break; case T_Scan: retval = _copyScan(from); break; case T_Gather: retval = _copyGather(from); break; case T_GatherMerge: retval = _copyGatherMerge(from); break; case T_SeqScan: retval = _copySeqScan(from); break; case T_SampleScan: retval = _copySampleScan(from); break; case T_IndexScan: retval = _copyIndexScan(from); break; case T_IndexOnlyScan: retval = _copyIndexOnlyScan(from); break; case T_BitmapIndexScan: retval = _copyBitmapIndexScan(from); break; case T_BitmapHeapScan: retval = _copyBitmapHeapScan(from); break; case T_TidScan: retval = _copyTidScan(from); break; case T_SubqueryScan: retval = _copySubqueryScan(from); break; case T_FunctionScan: retval = _copyFunctionScan(from); break; case T_TableFuncScan: retval = _copyTableFuncScan(from); break; case T_ValuesScan: retval = _copyValuesScan(from); break; case T_CteScan: retval = _copyCteScan(from); break; case T_NamedTuplestoreScan: retval = _copyNamedTuplestoreScan(from); break; case T_WorkTableScan: retval = _copyWorkTableScan(from); break; case T_ForeignScan: retval = _copyForeignScan(from); break; case T_CustomScan: retval = _copyCustomScan(from); break; case T_Join: retval = _copyJoin(from); break; case T_NestLoop: retval = _copyNestLoop(from); break; case T_MergeJoin: retval = _copyMergeJoin(from); break; case T_HashJoin: retval = _copyHashJoin(from); break; case T_Material: retval = _copyMaterial(from); break; case T_Sort: retval = _copySort(from); break; case T_IncrementalSort: retval = _copyIncrementalSort(from); break; case T_Group: retval = _copyGroup(from); break; case T_Agg: retval = _copyAgg(from); break; case T_WindowAgg: retval = _copyWindowAgg(from); break; case T_Unique: retval = _copyUnique(from); break; case T_Hash: retval = _copyHash(from); break; case T_SetOp: retval = _copySetOp(from); break; case T_LockRows: retval = _copyLockRows(from); break; case T_Limit: retval = _copyLimit(from); break; case T_NestLoopParam: retval = _copyNestLoopParam(from); break; case T_PlanRowMark: retval = _copyPlanRowMark(from); break; case T_PartitionPruneInfo: retval = _copyPartitionPruneInfo(from); break; case T_PartitionedRelPruneInfo: retval = _copyPartitionedRelPruneInfo(from); break; case T_PartitionPruneStepOp: retval = _copyPartitionPruneStepOp(from); break; case T_PartitionPruneStepCombine: retval = _copyPartitionPruneStepCombine(from); break; case T_PlanInvalItem: retval = _copyPlanInvalItem(from); break; /* * PRIMITIVE NODES */ case T_Alias: retval = _copyAlias(from); break; case T_RangeVar: retval = _copyRangeVar(from); break; case T_TableFunc: retval = _copyTableFunc(from); break; case T_IntoClause: retval = _copyIntoClause(from); break; case T_Var: retval = _copyVar(from); break; case T_Const: retval = _copyConst(from); break; case T_Param: retval = _copyParam(from); break; case T_Aggref: retval = _copyAggref(from); break; case T_GroupingFunc: retval = _copyGroupingFunc(from); break; case T_WindowFunc: retval = _copyWindowFunc(from); break; case T_SubscriptingRef: retval = _copySubscriptingRef(from); break; case T_FuncExpr: retval = _copyFuncExpr(from); break; case T_NamedArgExpr: retval = _copyNamedArgExpr(from); break; case T_OpExpr: retval = _copyOpExpr(from); break; case T_DistinctExpr: retval = _copyDistinctExpr(from); break; case T_NullIfExpr: retval = _copyNullIfExpr(from); break; case T_ScalarArrayOpExpr: retval = _copyScalarArrayOpExpr(from); break; case T_BoolExpr: retval = _copyBoolExpr(from); break; case T_SubLink: retval = _copySubLink(from); break; case T_SubPlan: retval = _copySubPlan(from); break; case T_AlternativeSubPlan: retval = _copyAlternativeSubPlan(from); break; case T_FieldSelect: retval = _copyFieldSelect(from); break; case T_FieldStore: retval = _copyFieldStore(from); break; case T_RelabelType: retval = _copyRelabelType(from); break; case T_CoerceViaIO: retval = _copyCoerceViaIO(from); break; case T_ArrayCoerceExpr: retval = _copyArrayCoerceExpr(from); break; case T_ConvertRowtypeExpr: retval = _copyConvertRowtypeExpr(from); break; case T_CollateExpr: retval = _copyCollateExpr(from); break; case T_CaseExpr: retval = _copyCaseExpr(from); break; case T_CaseWhen: retval = _copyCaseWhen(from); break; case T_CaseTestExpr: retval = _copyCaseTestExpr(from); break; case T_ArrayExpr: retval = _copyArrayExpr(from); break; case T_RowExpr: retval = _copyRowExpr(from); break; case T_RowCompareExpr: retval = _copyRowCompareExpr(from); break; case T_CoalesceExpr: retval = _copyCoalesceExpr(from); break; case T_MinMaxExpr: retval = _copyMinMaxExpr(from); break; case T_SQLValueFunction: retval = _copySQLValueFunction(from); break; case T_XmlExpr: retval = _copyXmlExpr(from); break; case T_NullTest: retval = _copyNullTest(from); break; case T_BooleanTest: retval = _copyBooleanTest(from); break; case T_CoerceToDomain: retval = _copyCoerceToDomain(from); break; case T_CoerceToDomainValue: retval = _copyCoerceToDomainValue(from); break; case T_SetToDefault: retval = _copySetToDefault(from); break; case T_CurrentOfExpr: retval = _copyCurrentOfExpr(from); break; case T_NextValueExpr: retval = _copyNextValueExpr(from); break; case T_InferenceElem: retval = _copyInferenceElem(from); break; case T_TargetEntry: retval = _copyTargetEntry(from); break; case T_RangeTblRef: retval = _copyRangeTblRef(from); break; case T_JoinExpr: retval = _copyJoinExpr(from); break; case T_FromExpr: retval = _copyFromExpr(from); break; case T_OnConflictExpr: retval = _copyOnConflictExpr(from); break; /* * RELATION NODES */ case T_PathKey: retval = _copyPathKey(from); break; case T_RestrictInfo: retval = _copyRestrictInfo(from); break; case T_PlaceHolderVar: retval = _copyPlaceHolderVar(from); break; case T_SpecialJoinInfo: retval = _copySpecialJoinInfo(from); break; case T_AppendRelInfo: retval = _copyAppendRelInfo(from); break; case T_PlaceHolderInfo: retval = _copyPlaceHolderInfo(from); break; /* * VALUE NODES */ case T_Integer: case T_Float: case T_String: case T_BitString: case T_Null: retval = _copyValue(from); break; /* * LIST NODES */ case T_List: retval = list_copy_deep(from); break; /* * Lists of integers and OIDs don't need to be deep-copied, so we * perform a shallow copy via list_copy() */ case T_IntList: case T_OidList: retval = list_copy(from); break; /* * EXTENSIBLE NODES */ case T_ExtensibleNode: retval = _copyExtensibleNode(from); break; /* * PARSE NODES */ case T_Query: retval = _copyQuery(from); break; case T_RawStmt: retval = _copyRawStmt(from); break; case T_InsertStmt: retval = _copyInsertStmt(from); break; case T_DeleteStmt: retval = _copyDeleteStmt(from); break; case T_UpdateStmt: retval = _copyUpdateStmt(from); break; case T_SelectStmt: retval = _copySelectStmt(from); break; case T_SetOperationStmt: retval = _copySetOperationStmt(from); break; case T_AlterTableStmt: retval = _copyAlterTableStmt(from); break; case T_AlterTableCmd: retval = _copyAlterTableCmd(from); break; case T_AlterCollationStmt: retval = _copyAlterCollationStmt(from); break; case T_AlterDomainStmt: retval = _copyAlterDomainStmt(from); break; case T_GrantStmt: retval = _copyGrantStmt(from); break; case T_GrantRoleStmt: retval = _copyGrantRoleStmt(from); break; case T_AlterDefaultPrivilegesStmt: retval = _copyAlterDefaultPrivilegesStmt(from); break; case T_DeclareCursorStmt: retval = _copyDeclareCursorStmt(from); break; case T_ClosePortalStmt: retval = _copyClosePortalStmt(from); break; case T_CallStmt: retval = _copyCallStmt(from); break; case T_ClusterStmt: retval = _copyClusterStmt(from); break; case T_CopyStmt: retval = _copyCopyStmt(from); break; case T_CreateStmt: retval = _copyCreateStmt(from); break; case T_TableLikeClause: retval = _copyTableLikeClause(from); break; case T_DefineStmt: retval = _copyDefineStmt(from); break; case T_DropStmt: retval = _copyDropStmt(from); break; case T_TruncateStmt: retval = _copyTruncateStmt(from); break; case T_CommentStmt: retval = _copyCommentStmt(from); break; case T_SecLabelStmt: retval = _copySecLabelStmt(from); break; case T_FetchStmt: retval = _copyFetchStmt(from); break; case T_IndexStmt: retval = _copyIndexStmt(from); break; case T_CreateStatsStmt: retval = _copyCreateStatsStmt(from); break; case T_AlterStatsStmt: retval = _copyAlterStatsStmt(from); break; case T_CreateFunctionStmt: retval = _copyCreateFunctionStmt(from); break; case T_FunctionParameter: retval = _copyFunctionParameter(from); break; case T_AlterFunctionStmt: retval = _copyAlterFunctionStmt(from); break; case T_DoStmt: retval = _copyDoStmt(from); break; case T_RenameStmt: retval = _copyRenameStmt(from); break; case T_AlterObjectDependsStmt: retval = _copyAlterObjectDependsStmt(from); break; case T_AlterObjectSchemaStmt: retval = _copyAlterObjectSchemaStmt(from); break; case T_AlterOwnerStmt: retval = _copyAlterOwnerStmt(from); break; case T_AlterOperatorStmt: retval = _copyAlterOperatorStmt(from); break; case T_AlterTypeStmt: retval = _copyAlterTypeStmt(from); break; case T_RuleStmt: retval = _copyRuleStmt(from); break; case T_NotifyStmt: retval = _copyNotifyStmt(from); break; case T_ListenStmt: retval = _copyListenStmt(from); break; case T_UnlistenStmt: retval = _copyUnlistenStmt(from); break; case T_TransactionStmt: retval = _copyTransactionStmt(from); break; case T_CompositeTypeStmt: retval = _copyCompositeTypeStmt(from); break; case T_CreateEnumStmt: retval = _copyCreateEnumStmt(from); break; case T_CreateRangeStmt: retval = _copyCreateRangeStmt(from); break; case T_AlterEnumStmt: retval = _copyAlterEnumStmt(from); break; case T_ViewStmt: retval = _copyViewStmt(from); break; case T_LoadStmt: retval = _copyLoadStmt(from); break; case T_CreateDomainStmt: retval = _copyCreateDomainStmt(from); break; case T_CreateOpClassStmt: retval = _copyCreateOpClassStmt(from); break; case T_CreateOpClassItem: retval = _copyCreateOpClassItem(from); break; case T_CreateOpFamilyStmt: retval = _copyCreateOpFamilyStmt(from); break; case T_AlterOpFamilyStmt: retval = _copyAlterOpFamilyStmt(from); break; case T_CreatedbStmt: retval = _copyCreatedbStmt(from); break; case T_AlterDatabaseStmt: retval = _copyAlterDatabaseStmt(from); break; case T_AlterDatabaseSetStmt: retval = _copyAlterDatabaseSetStmt(from); break; case T_DropdbStmt: retval = _copyDropdbStmt(from); break; case T_VacuumStmt: retval = _copyVacuumStmt(from); break; case T_VacuumRelation: retval = _copyVacuumRelation(from); break; case T_ExplainStmt: retval = _copyExplainStmt(from); break; case T_CreateTableAsStmt: retval = _copyCreateTableAsStmt(from); break; case T_RefreshMatViewStmt: retval = _copyRefreshMatViewStmt(from); break; case T_ReplicaIdentityStmt: retval = _copyReplicaIdentityStmt(from); break; case T_AlterSystemStmt: retval = _copyAlterSystemStmt(from); break; case T_CreateSeqStmt: retval = _copyCreateSeqStmt(from); break; case T_AlterSeqStmt: retval = _copyAlterSeqStmt(from); break; case T_VariableSetStmt: retval = _copyVariableSetStmt(from); break; case T_VariableShowStmt: retval = _copyVariableShowStmt(from); break; case T_DiscardStmt: retval = _copyDiscardStmt(from); break; case T_CreateTableSpaceStmt: retval = _copyCreateTableSpaceStmt(from); break; case T_DropTableSpaceStmt: retval = _copyDropTableSpaceStmt(from); break; case T_AlterTableSpaceOptionsStmt: retval = _copyAlterTableSpaceOptionsStmt(from); break; case T_AlterTableMoveAllStmt: retval = _copyAlterTableMoveAllStmt(from); break; case T_CreateExtensionStmt: retval = _copyCreateExtensionStmt(from); break; case T_AlterExtensionStmt: retval = _copyAlterExtensionStmt(from); break; case T_AlterExtensionContentsStmt: retval = _copyAlterExtensionContentsStmt(from); break; case T_CreateFdwStmt: retval = _copyCreateFdwStmt(from); break; case T_AlterFdwStmt: retval = _copyAlterFdwStmt(from); break; case T_CreateForeignServerStmt: retval = _copyCreateForeignServerStmt(from); break; case T_AlterForeignServerStmt: retval = _copyAlterForeignServerStmt(from); break; case T_CreateUserMappingStmt: retval = _copyCreateUserMappingStmt(from); break; case T_AlterUserMappingStmt: retval = _copyAlterUserMappingStmt(from); break; case T_DropUserMappingStmt: retval = _copyDropUserMappingStmt(from); break; case T_CreateForeignTableStmt: retval = _copyCreateForeignTableStmt(from); break; case T_ImportForeignSchemaStmt: retval = _copyImportForeignSchemaStmt(from); break; case T_CreateTransformStmt: retval = _copyCreateTransformStmt(from); break; case T_CreateAmStmt: retval = _copyCreateAmStmt(from); break; case T_CreateTrigStmt: retval = _copyCreateTrigStmt(from); break; case T_CreateEventTrigStmt: retval = _copyCreateEventTrigStmt(from); break; case T_AlterEventTrigStmt: retval = _copyAlterEventTrigStmt(from); break; case T_CreatePLangStmt: retval = _copyCreatePLangStmt(from); break; case T_CreateRoleStmt: retval = _copyCreateRoleStmt(from); break; case T_AlterRoleStmt: retval = _copyAlterRoleStmt(from); break; case T_AlterRoleSetStmt: retval = _copyAlterRoleSetStmt(from); break; case T_DropRoleStmt: retval = _copyDropRoleStmt(from); break; case T_LockStmt: retval = _copyLockStmt(from); break; case T_ConstraintsSetStmt: retval = _copyConstraintsSetStmt(from); break; case T_ReindexStmt: retval = _copyReindexStmt(from); break; case T_CheckPointStmt: retval = (void *) makeNode(CheckPointStmt); break; case T_CreateSchemaStmt: retval = _copyCreateSchemaStmt(from); break; case T_CreateConversionStmt: retval = _copyCreateConversionStmt(from); break; case T_CreateCastStmt: retval = _copyCreateCastStmt(from); break; case T_PrepareStmt: retval = _copyPrepareStmt(from); break; case T_ExecuteStmt: retval = _copyExecuteStmt(from); break; case T_DeallocateStmt: retval = _copyDeallocateStmt(from); break; case T_DropOwnedStmt: retval = _copyDropOwnedStmt(from); break; case T_ReassignOwnedStmt: retval = _copyReassignOwnedStmt(from); break; case T_AlterTSDictionaryStmt: retval = _copyAlterTSDictionaryStmt(from); break; case T_AlterTSConfigurationStmt: retval = _copyAlterTSConfigurationStmt(from); break; case T_CreatePolicyStmt: retval = _copyCreatePolicyStmt(from); break; case T_AlterPolicyStmt: retval = _copyAlterPolicyStmt(from); break; case T_CreatePublicationStmt: retval = _copyCreatePublicationStmt(from); break; case T_AlterPublicationStmt: retval = _copyAlterPublicationStmt(from); break; case T_CreateSubscriptionStmt: retval = _copyCreateSubscriptionStmt(from); break; case T_AlterSubscriptionStmt: retval = _copyAlterSubscriptionStmt(from); break; case T_DropSubscriptionStmt: retval = _copyDropSubscriptionStmt(from); break; case T_A_Expr: retval = _copyAExpr(from); break; case T_ColumnRef: retval = _copyColumnRef(from); break; case T_ParamRef: retval = _copyParamRef(from); break; case T_A_Const: retval = _copyAConst(from); break; case T_FuncCall: retval = _copyFuncCall(from); break; case T_A_Star: retval = _copyAStar(from); break; case T_A_Indices: retval = _copyAIndices(from); break; case T_A_Indirection: retval = _copyA_Indirection(from); break; case T_A_ArrayExpr: retval = _copyA_ArrayExpr(from); break; case T_ResTarget: retval = _copyResTarget(from); break; case T_MultiAssignRef: retval = _copyMultiAssignRef(from); break; case T_TypeCast: retval = _copyTypeCast(from); break; case T_CollateClause: retval = _copyCollateClause(from); break; case T_SortBy: retval = _copySortBy(from); break; case T_WindowDef: retval = _copyWindowDef(from); break; case T_RangeSubselect: retval = _copyRangeSubselect(from); break; case T_RangeFunction: retval = _copyRangeFunction(from); break; case T_RangeTableSample: retval = _copyRangeTableSample(from); break; case T_RangeTableFunc: retval = _copyRangeTableFunc(from); break; case T_RangeTableFuncCol: retval = _copyRangeTableFuncCol(from); break; case T_TypeName: retval = _copyTypeName(from); break; case T_IndexElem: retval = _copyIndexElem(from); break; case T_ColumnDef: retval = _copyColumnDef(from); break; case T_Constraint: retval = _copyConstraint(from); break; case T_DefElem: retval = _copyDefElem(from); break; case T_LockingClause: retval = _copyLockingClause(from); break; case T_RangeTblEntry: retval = _copyRangeTblEntry(from); break; case T_RangeTblFunction: retval = _copyRangeTblFunction(from); break; case T_TableSampleClause: retval = _copyTableSampleClause(from); break; case T_WithCheckOption: retval = _copyWithCheckOption(from); break; case T_SortGroupClause: retval = _copySortGroupClause(from); break; case T_GroupingSet: retval = _copyGroupingSet(from); break; case T_WindowClause: retval = _copyWindowClause(from); break; case T_RowMarkClause: retval = _copyRowMarkClause(from); break; case T_WithClause: retval = _copyWithClause(from); break; case T_InferClause: retval = _copyInferClause(from); break; case T_OnConflictClause: retval = _copyOnConflictClause(from); break; case T_CommonTableExpr: retval = _copyCommonTableExpr(from); break; case T_ObjectWithArgs: retval = _copyObjectWithArgs(from); break; case T_AccessPriv: retval = _copyAccessPriv(from); break; case T_XmlSerialize: retval = _copyXmlSerialize(from); break; case T_RoleSpec: retval = _copyRoleSpec(from); break; case T_TriggerTransition: retval = _copyTriggerTransition(from); break; case T_PartitionElem: retval = _copyPartitionElem(from); break; case T_PartitionSpec: retval = _copyPartitionSpec(from); break; case T_PartitionBoundSpec: retval = _copyPartitionBoundSpec(from); break; case T_PartitionRangeDatum: retval = _copyPartitionRangeDatum(from); break; case T_PartitionCmd: retval = _copyPartitionCmd(from); break; /* * MISCELLANEOUS NODES */ case T_ForeignKeyCacheInfo: retval = _copyForeignKeyCacheInfo(from); break; default: elog(ERROR, "unrecognized node type: %d", (int) nodeTag(from)); retval = 0; /* keep compiler quiet */ break; } return retval; } libpg_query-13-2.1.0/src/postgres/src_backend_nodes_equalfuncs.c000066400000000000000000002641251413137616400247520ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - equal * - _equalAlias * - _equalRangeVar * - _equalTableFunc * - _equalIntoClause * - _equalVar * - _equalConst * - _equalParam * - _equalAggref * - _equalGroupingFunc * - _equalWindowFunc * - _equalSubscriptingRef * - _equalFuncExpr * - _equalNamedArgExpr * - _equalOpExpr * - _equalDistinctExpr * - _equalNullIfExpr * - _equalScalarArrayOpExpr * - _equalBoolExpr * - _equalSubLink * - _equalSubPlan * - _equalAlternativeSubPlan * - _equalFieldSelect * - _equalFieldStore * - _equalRelabelType * - _equalCoerceViaIO * - _equalArrayCoerceExpr * - _equalConvertRowtypeExpr * - _equalCollateExpr * - _equalCaseExpr * - _equalCaseWhen * - _equalCaseTestExpr * - _equalArrayExpr * - _equalRowExpr * - _equalRowCompareExpr * - _equalCoalesceExpr * - _equalMinMaxExpr * - _equalSQLValueFunction * - _equalXmlExpr * - _equalNullTest * - _equalBooleanTest * - _equalCoerceToDomain * - _equalCoerceToDomainValue * - _equalSetToDefault * - _equalCurrentOfExpr * - _equalNextValueExpr * - _equalInferenceElem * - _equalTargetEntry * - _equalRangeTblRef * - _equalFromExpr * - _equalOnConflictExpr * - _equalJoinExpr * - _equalPathKey * - _equalRestrictInfo * - _equalPlaceHolderVar * - _equalSpecialJoinInfo * - _equalAppendRelInfo * - _equalPlaceHolderInfo * - _equalList * - _equalValue * - _equalExtensibleNode * - _equalQuery * - _equalRawStmt * - _equalInsertStmt * - _equalDeleteStmt * - _equalUpdateStmt * - _equalSelectStmt * - _equalSetOperationStmt * - _equalAlterTableStmt * - _equalAlterTableCmd * - _equalAlterCollationStmt * - _equalAlterDomainStmt * - _equalGrantStmt * - _equalGrantRoleStmt * - _equalAlterDefaultPrivilegesStmt * - _equalDeclareCursorStmt * - _equalClosePortalStmt * - _equalCallStmt * - _equalClusterStmt * - _equalCopyStmt * - _equalCreateStmt * - _equalTableLikeClause * - _equalDefineStmt * - _equalDropStmt * - _equalTruncateStmt * - _equalCommentStmt * - _equalSecLabelStmt * - _equalFetchStmt * - _equalIndexStmt * - _equalCreateStatsStmt * - _equalAlterStatsStmt * - _equalCreateFunctionStmt * - _equalFunctionParameter * - _equalAlterFunctionStmt * - _equalDoStmt * - _equalRenameStmt * - _equalAlterObjectDependsStmt * - _equalAlterObjectSchemaStmt * - _equalAlterOwnerStmt * - _equalAlterOperatorStmt * - _equalAlterTypeStmt * - _equalRuleStmt * - _equalNotifyStmt * - _equalListenStmt * - _equalUnlistenStmt * - _equalTransactionStmt * - _equalCompositeTypeStmt * - _equalCreateEnumStmt * - _equalCreateRangeStmt * - _equalAlterEnumStmt * - _equalViewStmt * - _equalLoadStmt * - _equalCreateDomainStmt * - _equalCreateOpClassStmt * - _equalCreateOpClassItem * - _equalCreateOpFamilyStmt * - _equalAlterOpFamilyStmt * - _equalCreatedbStmt * - _equalAlterDatabaseStmt * - _equalAlterDatabaseSetStmt * - _equalDropdbStmt * - _equalVacuumStmt * - _equalVacuumRelation * - _equalExplainStmt * - _equalCreateTableAsStmt * - _equalRefreshMatViewStmt * - _equalReplicaIdentityStmt * - _equalAlterSystemStmt * - _equalCreateSeqStmt * - _equalAlterSeqStmt * - _equalVariableSetStmt * - _equalVariableShowStmt * - _equalDiscardStmt * - _equalCreateTableSpaceStmt * - _equalDropTableSpaceStmt * - _equalAlterTableSpaceOptionsStmt * - _equalAlterTableMoveAllStmt * - _equalCreateExtensionStmt * - _equalAlterExtensionStmt * - _equalAlterExtensionContentsStmt * - _equalCreateFdwStmt * - _equalAlterFdwStmt * - _equalCreateForeignServerStmt * - _equalAlterForeignServerStmt * - _equalCreateUserMappingStmt * - _equalAlterUserMappingStmt * - _equalDropUserMappingStmt * - _equalCreateForeignTableStmt * - _equalImportForeignSchemaStmt * - _equalCreateTransformStmt * - _equalCreateAmStmt * - _equalCreateTrigStmt * - _equalCreateEventTrigStmt * - _equalAlterEventTrigStmt * - _equalCreatePLangStmt * - _equalCreateRoleStmt * - _equalAlterRoleStmt * - _equalAlterRoleSetStmt * - _equalDropRoleStmt * - _equalLockStmt * - _equalConstraintsSetStmt * - _equalReindexStmt * - _equalCreateSchemaStmt * - _equalCreateConversionStmt * - _equalCreateCastStmt * - _equalPrepareStmt * - _equalExecuteStmt * - _equalDeallocateStmt * - _equalDropOwnedStmt * - _equalReassignOwnedStmt * - _equalAlterTSDictionaryStmt * - _equalAlterTSConfigurationStmt * - _equalCreatePolicyStmt * - _equalAlterPolicyStmt * - _equalCreatePublicationStmt * - _equalAlterPublicationStmt * - _equalCreateSubscriptionStmt * - _equalAlterSubscriptionStmt * - _equalDropSubscriptionStmt * - _equalAExpr * - _equalColumnRef * - _equalParamRef * - _equalAConst * - _equalFuncCall * - _equalAStar * - _equalAIndices * - _equalA_Indirection * - _equalA_ArrayExpr * - _equalResTarget * - _equalMultiAssignRef * - _equalTypeCast * - _equalCollateClause * - _equalSortBy * - _equalWindowDef * - _equalRangeSubselect * - _equalRangeFunction * - _equalRangeTableSample * - _equalRangeTableFunc * - _equalRangeTableFuncCol * - _equalTypeName * - _equalIndexElem * - _equalColumnDef * - _equalConstraint * - _equalDefElem * - _equalLockingClause * - _equalRangeTblEntry * - _equalRangeTblFunction * - _equalTableSampleClause * - _equalWithCheckOption * - _equalSortGroupClause * - _equalGroupingSet * - _equalWindowClause * - _equalRowMarkClause * - _equalWithClause * - _equalInferClause * - _equalOnConflictClause * - _equalCommonTableExpr * - _equalObjectWithArgs * - _equalAccessPriv * - _equalXmlSerialize * - _equalRoleSpec * - _equalTriggerTransition * - _equalPartitionElem * - _equalPartitionSpec * - _equalPartitionBoundSpec * - _equalPartitionRangeDatum * - _equalPartitionCmd *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * equalfuncs.c * Equality functions to compare node trees. * * NOTE: we currently support comparing all node types found in parse * trees. We do not support comparing executor state trees; there * is no need for that, and no point in maintaining all the code that * would be needed. We also do not support comparing Path trees, mainly * because the circular linkages between RelOptInfo and Path nodes can't * be handled easily in a simple depth-first traversal. * * Currently, in fact, equal() doesn't know how to compare Plan trees * either. This might need to be fixed someday. * * NOTE: it is intentional that parse location fields (in nodes that have * one) are not compared. This is because we want, for example, a variable * "x" to be considered equal() to another reference to "x" in the query. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/nodes/equalfuncs.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "miscadmin.h" #include "nodes/extensible.h" #include "nodes/pathnodes.h" #include "utils/datum.h" /* * Macros to simplify comparison of different kinds of fields. Use these * wherever possible to reduce the chance for silly typos. Note that these * hard-wire the convention that the local variables in an Equal routine are * named 'a' and 'b'. */ /* Compare a simple scalar field (int, float, bool, enum, etc) */ #define COMPARE_SCALAR_FIELD(fldname) \ do { \ if (a->fldname != b->fldname) \ return false; \ } while (0) /* Compare a field that is a pointer to some kind of Node or Node tree */ #define COMPARE_NODE_FIELD(fldname) \ do { \ if (!equal(a->fldname, b->fldname)) \ return false; \ } while (0) /* Compare a field that is a pointer to a Bitmapset */ #define COMPARE_BITMAPSET_FIELD(fldname) \ do { \ if (!bms_equal(a->fldname, b->fldname)) \ return false; \ } while (0) /* Compare a field that is a pointer to a C string, or perhaps NULL */ #define COMPARE_STRING_FIELD(fldname) \ do { \ if (!equalstr(a->fldname, b->fldname)) \ return false; \ } while (0) /* Macro for comparing string fields that might be NULL */ #define equalstr(a, b) \ (((a) != NULL && (b) != NULL) ? (strcmp(a, b) == 0) : (a) == (b)) /* Compare a field that is a pointer to a simple palloc'd object of size sz */ #define COMPARE_POINTER_FIELD(fldname, sz) \ do { \ if (memcmp(a->fldname, b->fldname, (sz)) != 0) \ return false; \ } while (0) /* Compare a parse location field (this is a no-op, per note above) */ #define COMPARE_LOCATION_FIELD(fldname) \ ((void) 0) /* Compare a CoercionForm field (also a no-op, per comment in primnodes.h) */ #define COMPARE_COERCIONFORM_FIELD(fldname) \ ((void) 0) /* * Stuff from primnodes.h */ static bool _equalAlias(const Alias *a, const Alias *b) { COMPARE_STRING_FIELD(aliasname); COMPARE_NODE_FIELD(colnames); return true; } static bool _equalRangeVar(const RangeVar *a, const RangeVar *b) { COMPARE_STRING_FIELD(catalogname); COMPARE_STRING_FIELD(schemaname); COMPARE_STRING_FIELD(relname); COMPARE_SCALAR_FIELD(inh); COMPARE_SCALAR_FIELD(relpersistence); COMPARE_NODE_FIELD(alias); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalTableFunc(const TableFunc *a, const TableFunc *b) { COMPARE_NODE_FIELD(ns_uris); COMPARE_NODE_FIELD(ns_names); COMPARE_NODE_FIELD(docexpr); COMPARE_NODE_FIELD(rowexpr); COMPARE_NODE_FIELD(colnames); COMPARE_NODE_FIELD(coltypes); COMPARE_NODE_FIELD(coltypmods); COMPARE_NODE_FIELD(colcollations); COMPARE_NODE_FIELD(colexprs); COMPARE_NODE_FIELD(coldefexprs); COMPARE_BITMAPSET_FIELD(notnulls); COMPARE_SCALAR_FIELD(ordinalitycol); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalIntoClause(const IntoClause *a, const IntoClause *b) { COMPARE_NODE_FIELD(rel); COMPARE_NODE_FIELD(colNames); COMPARE_STRING_FIELD(accessMethod); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(onCommit); COMPARE_STRING_FIELD(tableSpaceName); COMPARE_NODE_FIELD(viewQuery); COMPARE_SCALAR_FIELD(skipData); return true; } /* * We don't need an _equalExpr because Expr is an abstract supertype which * should never actually get instantiated. Also, since it has no common * fields except NodeTag, there's no need for a helper routine to factor * out comparing the common fields... */ static bool _equalVar(const Var *a, const Var *b) { COMPARE_SCALAR_FIELD(varno); COMPARE_SCALAR_FIELD(varattno); COMPARE_SCALAR_FIELD(vartype); COMPARE_SCALAR_FIELD(vartypmod); COMPARE_SCALAR_FIELD(varcollid); COMPARE_SCALAR_FIELD(varlevelsup); /* * varnosyn/varattnosyn are intentionally ignored here, because Vars with * different syntactic identifiers are semantically the same as long as * their varno/varattno match. */ COMPARE_LOCATION_FIELD(location); return true; } static bool _equalConst(const Const *a, const Const *b) { COMPARE_SCALAR_FIELD(consttype); COMPARE_SCALAR_FIELD(consttypmod); COMPARE_SCALAR_FIELD(constcollid); COMPARE_SCALAR_FIELD(constlen); COMPARE_SCALAR_FIELD(constisnull); COMPARE_SCALAR_FIELD(constbyval); COMPARE_LOCATION_FIELD(location); /* * We treat all NULL constants of the same type as equal. Someday this * might need to change? But datumIsEqual doesn't work on nulls, so... */ if (a->constisnull) return true; return datumIsEqual(a->constvalue, b->constvalue, a->constbyval, a->constlen); } static bool _equalParam(const Param *a, const Param *b) { COMPARE_SCALAR_FIELD(paramkind); COMPARE_SCALAR_FIELD(paramid); COMPARE_SCALAR_FIELD(paramtype); COMPARE_SCALAR_FIELD(paramtypmod); COMPARE_SCALAR_FIELD(paramcollid); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalAggref(const Aggref *a, const Aggref *b) { COMPARE_SCALAR_FIELD(aggfnoid); COMPARE_SCALAR_FIELD(aggtype); COMPARE_SCALAR_FIELD(aggcollid); COMPARE_SCALAR_FIELD(inputcollid); /* ignore aggtranstype since it might not be set yet */ COMPARE_NODE_FIELD(aggargtypes); COMPARE_NODE_FIELD(aggdirectargs); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(aggorder); COMPARE_NODE_FIELD(aggdistinct); COMPARE_NODE_FIELD(aggfilter); COMPARE_SCALAR_FIELD(aggstar); COMPARE_SCALAR_FIELD(aggvariadic); COMPARE_SCALAR_FIELD(aggkind); COMPARE_SCALAR_FIELD(agglevelsup); COMPARE_SCALAR_FIELD(aggsplit); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalGroupingFunc(const GroupingFunc *a, const GroupingFunc *b) { COMPARE_NODE_FIELD(args); /* * We must not compare the refs or cols field */ COMPARE_SCALAR_FIELD(agglevelsup); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalWindowFunc(const WindowFunc *a, const WindowFunc *b) { COMPARE_SCALAR_FIELD(winfnoid); COMPARE_SCALAR_FIELD(wintype); COMPARE_SCALAR_FIELD(wincollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(aggfilter); COMPARE_SCALAR_FIELD(winref); COMPARE_SCALAR_FIELD(winstar); COMPARE_SCALAR_FIELD(winagg); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalSubscriptingRef(const SubscriptingRef *a, const SubscriptingRef *b) { COMPARE_SCALAR_FIELD(refcontainertype); COMPARE_SCALAR_FIELD(refelemtype); COMPARE_SCALAR_FIELD(reftypmod); COMPARE_SCALAR_FIELD(refcollid); COMPARE_NODE_FIELD(refupperindexpr); COMPARE_NODE_FIELD(reflowerindexpr); COMPARE_NODE_FIELD(refexpr); COMPARE_NODE_FIELD(refassgnexpr); return true; } static bool _equalFuncExpr(const FuncExpr *a, const FuncExpr *b) { COMPARE_SCALAR_FIELD(funcid); COMPARE_SCALAR_FIELD(funcresulttype); COMPARE_SCALAR_FIELD(funcretset); COMPARE_SCALAR_FIELD(funcvariadic); COMPARE_COERCIONFORM_FIELD(funcformat); COMPARE_SCALAR_FIELD(funccollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalNamedArgExpr(const NamedArgExpr *a, const NamedArgExpr *b) { COMPARE_NODE_FIELD(arg); COMPARE_STRING_FIELD(name); COMPARE_SCALAR_FIELD(argnumber); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalOpExpr(const OpExpr *a, const OpExpr *b) { COMPARE_SCALAR_FIELD(opno); /* * Special-case opfuncid: it is allowable for it to differ if one node * contains zero and the other doesn't. This just means that the one node * isn't as far along in the parse/plan pipeline and hasn't had the * opfuncid cache filled yet. */ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0) return false; COMPARE_SCALAR_FIELD(opresulttype); COMPARE_SCALAR_FIELD(opretset); COMPARE_SCALAR_FIELD(opcollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalDistinctExpr(const DistinctExpr *a, const DistinctExpr *b) { COMPARE_SCALAR_FIELD(opno); /* * Special-case opfuncid: it is allowable for it to differ if one node * contains zero and the other doesn't. This just means that the one node * isn't as far along in the parse/plan pipeline and hasn't had the * opfuncid cache filled yet. */ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0) return false; COMPARE_SCALAR_FIELD(opresulttype); COMPARE_SCALAR_FIELD(opretset); COMPARE_SCALAR_FIELD(opcollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalNullIfExpr(const NullIfExpr *a, const NullIfExpr *b) { COMPARE_SCALAR_FIELD(opno); /* * Special-case opfuncid: it is allowable for it to differ if one node * contains zero and the other doesn't. This just means that the one node * isn't as far along in the parse/plan pipeline and hasn't had the * opfuncid cache filled yet. */ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0) return false; COMPARE_SCALAR_FIELD(opresulttype); COMPARE_SCALAR_FIELD(opretset); COMPARE_SCALAR_FIELD(opcollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalScalarArrayOpExpr(const ScalarArrayOpExpr *a, const ScalarArrayOpExpr *b) { COMPARE_SCALAR_FIELD(opno); /* * Special-case opfuncid: it is allowable for it to differ if one node * contains zero and the other doesn't. This just means that the one node * isn't as far along in the parse/plan pipeline and hasn't had the * opfuncid cache filled yet. */ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0) return false; COMPARE_SCALAR_FIELD(useOr); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalBoolExpr(const BoolExpr *a, const BoolExpr *b) { COMPARE_SCALAR_FIELD(boolop); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalSubLink(const SubLink *a, const SubLink *b) { COMPARE_SCALAR_FIELD(subLinkType); COMPARE_SCALAR_FIELD(subLinkId); COMPARE_NODE_FIELD(testexpr); COMPARE_NODE_FIELD(operName); COMPARE_NODE_FIELD(subselect); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalSubPlan(const SubPlan *a, const SubPlan *b) { COMPARE_SCALAR_FIELD(subLinkType); COMPARE_NODE_FIELD(testexpr); COMPARE_NODE_FIELD(paramIds); COMPARE_SCALAR_FIELD(plan_id); COMPARE_STRING_FIELD(plan_name); COMPARE_SCALAR_FIELD(firstColType); COMPARE_SCALAR_FIELD(firstColTypmod); COMPARE_SCALAR_FIELD(firstColCollation); COMPARE_SCALAR_FIELD(useHashTable); COMPARE_SCALAR_FIELD(unknownEqFalse); COMPARE_SCALAR_FIELD(parallel_safe); COMPARE_NODE_FIELD(setParam); COMPARE_NODE_FIELD(parParam); COMPARE_NODE_FIELD(args); COMPARE_SCALAR_FIELD(startup_cost); COMPARE_SCALAR_FIELD(per_call_cost); return true; } static bool _equalAlternativeSubPlan(const AlternativeSubPlan *a, const AlternativeSubPlan *b) { COMPARE_NODE_FIELD(subplans); return true; } static bool _equalFieldSelect(const FieldSelect *a, const FieldSelect *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(fieldnum); COMPARE_SCALAR_FIELD(resulttype); COMPARE_SCALAR_FIELD(resulttypmod); COMPARE_SCALAR_FIELD(resultcollid); return true; } static bool _equalFieldStore(const FieldStore *a, const FieldStore *b) { COMPARE_NODE_FIELD(arg); COMPARE_NODE_FIELD(newvals); COMPARE_NODE_FIELD(fieldnums); COMPARE_SCALAR_FIELD(resulttype); return true; } static bool _equalRelabelType(const RelabelType *a, const RelabelType *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(resulttype); COMPARE_SCALAR_FIELD(resulttypmod); COMPARE_SCALAR_FIELD(resultcollid); COMPARE_COERCIONFORM_FIELD(relabelformat); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCoerceViaIO(const CoerceViaIO *a, const CoerceViaIO *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(resulttype); COMPARE_SCALAR_FIELD(resultcollid); COMPARE_COERCIONFORM_FIELD(coerceformat); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalArrayCoerceExpr(const ArrayCoerceExpr *a, const ArrayCoerceExpr *b) { COMPARE_NODE_FIELD(arg); COMPARE_NODE_FIELD(elemexpr); COMPARE_SCALAR_FIELD(resulttype); COMPARE_SCALAR_FIELD(resulttypmod); COMPARE_SCALAR_FIELD(resultcollid); COMPARE_COERCIONFORM_FIELD(coerceformat); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalConvertRowtypeExpr(const ConvertRowtypeExpr *a, const ConvertRowtypeExpr *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(resulttype); COMPARE_COERCIONFORM_FIELD(convertformat); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCollateExpr(const CollateExpr *a, const CollateExpr *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(collOid); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCaseExpr(const CaseExpr *a, const CaseExpr *b) { COMPARE_SCALAR_FIELD(casetype); COMPARE_SCALAR_FIELD(casecollid); COMPARE_NODE_FIELD(arg); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(defresult); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCaseWhen(const CaseWhen *a, const CaseWhen *b) { COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(result); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCaseTestExpr(const CaseTestExpr *a, const CaseTestExpr *b) { COMPARE_SCALAR_FIELD(typeId); COMPARE_SCALAR_FIELD(typeMod); COMPARE_SCALAR_FIELD(collation); return true; } static bool _equalArrayExpr(const ArrayExpr *a, const ArrayExpr *b) { COMPARE_SCALAR_FIELD(array_typeid); COMPARE_SCALAR_FIELD(array_collid); COMPARE_SCALAR_FIELD(element_typeid); COMPARE_NODE_FIELD(elements); COMPARE_SCALAR_FIELD(multidims); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRowExpr(const RowExpr *a, const RowExpr *b) { COMPARE_NODE_FIELD(args); COMPARE_SCALAR_FIELD(row_typeid); COMPARE_COERCIONFORM_FIELD(row_format); COMPARE_NODE_FIELD(colnames); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRowCompareExpr(const RowCompareExpr *a, const RowCompareExpr *b) { COMPARE_SCALAR_FIELD(rctype); COMPARE_NODE_FIELD(opnos); COMPARE_NODE_FIELD(opfamilies); COMPARE_NODE_FIELD(inputcollids); COMPARE_NODE_FIELD(largs); COMPARE_NODE_FIELD(rargs); return true; } static bool _equalCoalesceExpr(const CoalesceExpr *a, const CoalesceExpr *b) { COMPARE_SCALAR_FIELD(coalescetype); COMPARE_SCALAR_FIELD(coalescecollid); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalMinMaxExpr(const MinMaxExpr *a, const MinMaxExpr *b) { COMPARE_SCALAR_FIELD(minmaxtype); COMPARE_SCALAR_FIELD(minmaxcollid); COMPARE_SCALAR_FIELD(inputcollid); COMPARE_SCALAR_FIELD(op); COMPARE_NODE_FIELD(args); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalSQLValueFunction(const SQLValueFunction *a, const SQLValueFunction *b) { COMPARE_SCALAR_FIELD(op); COMPARE_SCALAR_FIELD(type); COMPARE_SCALAR_FIELD(typmod); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalXmlExpr(const XmlExpr *a, const XmlExpr *b) { COMPARE_SCALAR_FIELD(op); COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(named_args); COMPARE_NODE_FIELD(arg_names); COMPARE_NODE_FIELD(args); COMPARE_SCALAR_FIELD(xmloption); COMPARE_SCALAR_FIELD(type); COMPARE_SCALAR_FIELD(typmod); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalNullTest(const NullTest *a, const NullTest *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(nulltesttype); COMPARE_SCALAR_FIELD(argisrow); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalBooleanTest(const BooleanTest *a, const BooleanTest *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(booltesttype); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCoerceToDomain(const CoerceToDomain *a, const CoerceToDomain *b) { COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(resulttype); COMPARE_SCALAR_FIELD(resulttypmod); COMPARE_SCALAR_FIELD(resultcollid); COMPARE_COERCIONFORM_FIELD(coercionformat); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCoerceToDomainValue(const CoerceToDomainValue *a, const CoerceToDomainValue *b) { COMPARE_SCALAR_FIELD(typeId); COMPARE_SCALAR_FIELD(typeMod); COMPARE_SCALAR_FIELD(collation); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalSetToDefault(const SetToDefault *a, const SetToDefault *b) { COMPARE_SCALAR_FIELD(typeId); COMPARE_SCALAR_FIELD(typeMod); COMPARE_SCALAR_FIELD(collation); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCurrentOfExpr(const CurrentOfExpr *a, const CurrentOfExpr *b) { COMPARE_SCALAR_FIELD(cvarno); COMPARE_STRING_FIELD(cursor_name); COMPARE_SCALAR_FIELD(cursor_param); return true; } static bool _equalNextValueExpr(const NextValueExpr *a, const NextValueExpr *b) { COMPARE_SCALAR_FIELD(seqid); COMPARE_SCALAR_FIELD(typeId); return true; } static bool _equalInferenceElem(const InferenceElem *a, const InferenceElem *b) { COMPARE_NODE_FIELD(expr); COMPARE_SCALAR_FIELD(infercollid); COMPARE_SCALAR_FIELD(inferopclass); return true; } static bool _equalTargetEntry(const TargetEntry *a, const TargetEntry *b) { COMPARE_NODE_FIELD(expr); COMPARE_SCALAR_FIELD(resno); COMPARE_STRING_FIELD(resname); COMPARE_SCALAR_FIELD(ressortgroupref); COMPARE_SCALAR_FIELD(resorigtbl); COMPARE_SCALAR_FIELD(resorigcol); COMPARE_SCALAR_FIELD(resjunk); return true; } static bool _equalRangeTblRef(const RangeTblRef *a, const RangeTblRef *b) { COMPARE_SCALAR_FIELD(rtindex); return true; } static bool _equalJoinExpr(const JoinExpr *a, const JoinExpr *b) { COMPARE_SCALAR_FIELD(jointype); COMPARE_SCALAR_FIELD(isNatural); COMPARE_NODE_FIELD(larg); COMPARE_NODE_FIELD(rarg); COMPARE_NODE_FIELD(usingClause); COMPARE_NODE_FIELD(quals); COMPARE_NODE_FIELD(alias); COMPARE_SCALAR_FIELD(rtindex); return true; } static bool _equalFromExpr(const FromExpr *a, const FromExpr *b) { COMPARE_NODE_FIELD(fromlist); COMPARE_NODE_FIELD(quals); return true; } static bool _equalOnConflictExpr(const OnConflictExpr *a, const OnConflictExpr *b) { COMPARE_SCALAR_FIELD(action); COMPARE_NODE_FIELD(arbiterElems); COMPARE_NODE_FIELD(arbiterWhere); COMPARE_SCALAR_FIELD(constraint); COMPARE_NODE_FIELD(onConflictSet); COMPARE_NODE_FIELD(onConflictWhere); COMPARE_SCALAR_FIELD(exclRelIndex); COMPARE_NODE_FIELD(exclRelTlist); return true; } /* * Stuff from pathnodes.h */ static bool _equalPathKey(const PathKey *a, const PathKey *b) { /* We assume pointer equality is sufficient to compare the eclasses */ COMPARE_SCALAR_FIELD(pk_eclass); COMPARE_SCALAR_FIELD(pk_opfamily); COMPARE_SCALAR_FIELD(pk_strategy); COMPARE_SCALAR_FIELD(pk_nulls_first); return true; } static bool _equalRestrictInfo(const RestrictInfo *a, const RestrictInfo *b) { COMPARE_NODE_FIELD(clause); COMPARE_SCALAR_FIELD(is_pushed_down); COMPARE_SCALAR_FIELD(outerjoin_delayed); COMPARE_SCALAR_FIELD(security_level); COMPARE_BITMAPSET_FIELD(required_relids); COMPARE_BITMAPSET_FIELD(outer_relids); COMPARE_BITMAPSET_FIELD(nullable_relids); /* * We ignore all the remaining fields, since they may not be set yet, and * should be derivable from the clause anyway. */ return true; } static bool _equalPlaceHolderVar(const PlaceHolderVar *a, const PlaceHolderVar *b) { /* * We intentionally do not compare phexpr. Two PlaceHolderVars with the * same ID and levelsup should be considered equal even if the contained * expressions have managed to mutate to different states. This will * happen during final plan construction when there are nested PHVs, since * the inner PHV will get replaced by a Param in some copies of the outer * PHV. Another way in which it can happen is that initplan sublinks * could get replaced by differently-numbered Params when sublink folding * is done. (The end result of such a situation would be some * unreferenced initplans, which is annoying but not really a problem.) On * the same reasoning, there is no need to examine phrels. * * COMPARE_NODE_FIELD(phexpr); * * COMPARE_BITMAPSET_FIELD(phrels); */ COMPARE_SCALAR_FIELD(phid); COMPARE_SCALAR_FIELD(phlevelsup); return true; } static bool _equalSpecialJoinInfo(const SpecialJoinInfo *a, const SpecialJoinInfo *b) { COMPARE_BITMAPSET_FIELD(min_lefthand); COMPARE_BITMAPSET_FIELD(min_righthand); COMPARE_BITMAPSET_FIELD(syn_lefthand); COMPARE_BITMAPSET_FIELD(syn_righthand); COMPARE_SCALAR_FIELD(jointype); COMPARE_SCALAR_FIELD(lhs_strict); COMPARE_SCALAR_FIELD(delay_upper_joins); COMPARE_SCALAR_FIELD(semi_can_btree); COMPARE_SCALAR_FIELD(semi_can_hash); COMPARE_NODE_FIELD(semi_operators); COMPARE_NODE_FIELD(semi_rhs_exprs); return true; } static bool _equalAppendRelInfo(const AppendRelInfo *a, const AppendRelInfo *b) { COMPARE_SCALAR_FIELD(parent_relid); COMPARE_SCALAR_FIELD(child_relid); COMPARE_SCALAR_FIELD(parent_reltype); COMPARE_SCALAR_FIELD(child_reltype); COMPARE_NODE_FIELD(translated_vars); COMPARE_SCALAR_FIELD(num_child_cols); COMPARE_POINTER_FIELD(parent_colnos, a->num_child_cols * sizeof(AttrNumber)); COMPARE_SCALAR_FIELD(parent_reloid); return true; } static bool _equalPlaceHolderInfo(const PlaceHolderInfo *a, const PlaceHolderInfo *b) { COMPARE_SCALAR_FIELD(phid); COMPARE_NODE_FIELD(ph_var); /* should be redundant */ COMPARE_BITMAPSET_FIELD(ph_eval_at); COMPARE_BITMAPSET_FIELD(ph_lateral); COMPARE_BITMAPSET_FIELD(ph_needed); COMPARE_SCALAR_FIELD(ph_width); return true; } /* * Stuff from extensible.h */ static bool _equalExtensibleNode(const ExtensibleNode *a, const ExtensibleNode *b) { const ExtensibleNodeMethods *methods; COMPARE_STRING_FIELD(extnodename); /* At this point, we know extnodename is the same for both nodes. */ methods = GetExtensibleNodeMethods(a->extnodename, false); /* compare the private fields */ if (!methods->nodeEqual(a, b)) return false; return true; } /* * Stuff from parsenodes.h */ static bool _equalQuery(const Query *a, const Query *b) { COMPARE_SCALAR_FIELD(commandType); COMPARE_SCALAR_FIELD(querySource); /* we intentionally ignore queryId, since it might not be set */ COMPARE_SCALAR_FIELD(canSetTag); COMPARE_NODE_FIELD(utilityStmt); COMPARE_SCALAR_FIELD(resultRelation); COMPARE_SCALAR_FIELD(hasAggs); COMPARE_SCALAR_FIELD(hasWindowFuncs); COMPARE_SCALAR_FIELD(hasTargetSRFs); COMPARE_SCALAR_FIELD(hasSubLinks); COMPARE_SCALAR_FIELD(hasDistinctOn); COMPARE_SCALAR_FIELD(hasRecursive); COMPARE_SCALAR_FIELD(hasModifyingCTE); COMPARE_SCALAR_FIELD(hasForUpdate); COMPARE_SCALAR_FIELD(hasRowSecurity); COMPARE_NODE_FIELD(cteList); COMPARE_NODE_FIELD(rtable); COMPARE_NODE_FIELD(jointree); COMPARE_NODE_FIELD(targetList); COMPARE_SCALAR_FIELD(override); COMPARE_NODE_FIELD(onConflict); COMPARE_NODE_FIELD(returningList); COMPARE_NODE_FIELD(groupClause); COMPARE_NODE_FIELD(groupingSets); COMPARE_NODE_FIELD(havingQual); COMPARE_NODE_FIELD(windowClause); COMPARE_NODE_FIELD(distinctClause); COMPARE_NODE_FIELD(sortClause); COMPARE_NODE_FIELD(limitOffset); COMPARE_NODE_FIELD(limitCount); COMPARE_SCALAR_FIELD(limitOption); COMPARE_NODE_FIELD(rowMarks); COMPARE_NODE_FIELD(setOperations); COMPARE_NODE_FIELD(constraintDeps); COMPARE_NODE_FIELD(withCheckOptions); COMPARE_LOCATION_FIELD(stmt_location); COMPARE_SCALAR_FIELD(stmt_len); return true; } static bool _equalRawStmt(const RawStmt *a, const RawStmt *b) { COMPARE_NODE_FIELD(stmt); COMPARE_LOCATION_FIELD(stmt_location); COMPARE_SCALAR_FIELD(stmt_len); return true; } static bool _equalInsertStmt(const InsertStmt *a, const InsertStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(cols); COMPARE_NODE_FIELD(selectStmt); COMPARE_NODE_FIELD(onConflictClause); COMPARE_NODE_FIELD(returningList); COMPARE_NODE_FIELD(withClause); COMPARE_SCALAR_FIELD(override); return true; } static bool _equalDeleteStmt(const DeleteStmt *a, const DeleteStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(usingClause); COMPARE_NODE_FIELD(whereClause); COMPARE_NODE_FIELD(returningList); COMPARE_NODE_FIELD(withClause); return true; } static bool _equalUpdateStmt(const UpdateStmt *a, const UpdateStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(targetList); COMPARE_NODE_FIELD(whereClause); COMPARE_NODE_FIELD(fromClause); COMPARE_NODE_FIELD(returningList); COMPARE_NODE_FIELD(withClause); return true; } static bool _equalSelectStmt(const SelectStmt *a, const SelectStmt *b) { COMPARE_NODE_FIELD(distinctClause); COMPARE_NODE_FIELD(intoClause); COMPARE_NODE_FIELD(targetList); COMPARE_NODE_FIELD(fromClause); COMPARE_NODE_FIELD(whereClause); COMPARE_NODE_FIELD(groupClause); COMPARE_NODE_FIELD(havingClause); COMPARE_NODE_FIELD(windowClause); COMPARE_NODE_FIELD(valuesLists); COMPARE_NODE_FIELD(sortClause); COMPARE_NODE_FIELD(limitOffset); COMPARE_NODE_FIELD(limitCount); COMPARE_SCALAR_FIELD(limitOption); COMPARE_NODE_FIELD(lockingClause); COMPARE_NODE_FIELD(withClause); COMPARE_SCALAR_FIELD(op); COMPARE_SCALAR_FIELD(all); COMPARE_NODE_FIELD(larg); COMPARE_NODE_FIELD(rarg); return true; } static bool _equalSetOperationStmt(const SetOperationStmt *a, const SetOperationStmt *b) { COMPARE_SCALAR_FIELD(op); COMPARE_SCALAR_FIELD(all); COMPARE_NODE_FIELD(larg); COMPARE_NODE_FIELD(rarg); COMPARE_NODE_FIELD(colTypes); COMPARE_NODE_FIELD(colTypmods); COMPARE_NODE_FIELD(colCollations); COMPARE_NODE_FIELD(groupClauses); return true; } static bool _equalAlterTableStmt(const AlterTableStmt *a, const AlterTableStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(cmds); COMPARE_SCALAR_FIELD(relkind); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalAlterTableCmd(const AlterTableCmd *a, const AlterTableCmd *b) { COMPARE_SCALAR_FIELD(subtype); COMPARE_STRING_FIELD(name); COMPARE_SCALAR_FIELD(num); COMPARE_NODE_FIELD(newowner); COMPARE_NODE_FIELD(def); COMPARE_SCALAR_FIELD(behavior); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalAlterCollationStmt(const AlterCollationStmt *a, const AlterCollationStmt *b) { COMPARE_NODE_FIELD(collname); return true; } static bool _equalAlterDomainStmt(const AlterDomainStmt *a, const AlterDomainStmt *b) { COMPARE_SCALAR_FIELD(subtype); COMPARE_NODE_FIELD(typeName); COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(def); COMPARE_SCALAR_FIELD(behavior); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalGrantStmt(const GrantStmt *a, const GrantStmt *b) { COMPARE_SCALAR_FIELD(is_grant); COMPARE_SCALAR_FIELD(targtype); COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(objects); COMPARE_NODE_FIELD(privileges); COMPARE_NODE_FIELD(grantees); COMPARE_SCALAR_FIELD(grant_option); COMPARE_SCALAR_FIELD(behavior); return true; } static bool _equalObjectWithArgs(const ObjectWithArgs *a, const ObjectWithArgs *b) { COMPARE_NODE_FIELD(objname); COMPARE_NODE_FIELD(objargs); COMPARE_SCALAR_FIELD(args_unspecified); return true; } static bool _equalAccessPriv(const AccessPriv *a, const AccessPriv *b) { COMPARE_STRING_FIELD(priv_name); COMPARE_NODE_FIELD(cols); return true; } static bool _equalGrantRoleStmt(const GrantRoleStmt *a, const GrantRoleStmt *b) { COMPARE_NODE_FIELD(granted_roles); COMPARE_NODE_FIELD(grantee_roles); COMPARE_SCALAR_FIELD(is_grant); COMPARE_SCALAR_FIELD(admin_opt); COMPARE_NODE_FIELD(grantor); COMPARE_SCALAR_FIELD(behavior); return true; } static bool _equalAlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt *a, const AlterDefaultPrivilegesStmt *b) { COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(action); return true; } static bool _equalDeclareCursorStmt(const DeclareCursorStmt *a, const DeclareCursorStmt *b) { COMPARE_STRING_FIELD(portalname); COMPARE_SCALAR_FIELD(options); COMPARE_NODE_FIELD(query); return true; } static bool _equalClosePortalStmt(const ClosePortalStmt *a, const ClosePortalStmt *b) { COMPARE_STRING_FIELD(portalname); return true; } static bool _equalCallStmt(const CallStmt *a, const CallStmt *b) { COMPARE_NODE_FIELD(funccall); COMPARE_NODE_FIELD(funcexpr); return true; } static bool _equalClusterStmt(const ClusterStmt *a, const ClusterStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_STRING_FIELD(indexname); COMPARE_SCALAR_FIELD(options); return true; } static bool _equalCopyStmt(const CopyStmt *a, const CopyStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(query); COMPARE_NODE_FIELD(attlist); COMPARE_SCALAR_FIELD(is_from); COMPARE_SCALAR_FIELD(is_program); COMPARE_STRING_FIELD(filename); COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(whereClause); return true; } static bool _equalCreateStmt(const CreateStmt *a, const CreateStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(tableElts); COMPARE_NODE_FIELD(inhRelations); COMPARE_NODE_FIELD(partbound); COMPARE_NODE_FIELD(partspec); COMPARE_NODE_FIELD(ofTypename); COMPARE_NODE_FIELD(constraints); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(oncommit); COMPARE_STRING_FIELD(tablespacename); COMPARE_STRING_FIELD(accessMethod); COMPARE_SCALAR_FIELD(if_not_exists); return true; } static bool _equalTableLikeClause(const TableLikeClause *a, const TableLikeClause *b) { COMPARE_NODE_FIELD(relation); COMPARE_SCALAR_FIELD(options); COMPARE_SCALAR_FIELD(relationOid); return true; } static bool _equalDefineStmt(const DefineStmt *a, const DefineStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_SCALAR_FIELD(oldstyle); COMPARE_NODE_FIELD(defnames); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(definition); COMPARE_SCALAR_FIELD(if_not_exists); COMPARE_SCALAR_FIELD(replace); return true; } static bool _equalDropStmt(const DropStmt *a, const DropStmt *b) { COMPARE_NODE_FIELD(objects); COMPARE_SCALAR_FIELD(removeType); COMPARE_SCALAR_FIELD(behavior); COMPARE_SCALAR_FIELD(missing_ok); COMPARE_SCALAR_FIELD(concurrent); return true; } static bool _equalTruncateStmt(const TruncateStmt *a, const TruncateStmt *b) { COMPARE_NODE_FIELD(relations); COMPARE_SCALAR_FIELD(restart_seqs); COMPARE_SCALAR_FIELD(behavior); return true; } static bool _equalCommentStmt(const CommentStmt *a, const CommentStmt *b) { COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(object); COMPARE_STRING_FIELD(comment); return true; } static bool _equalSecLabelStmt(const SecLabelStmt *a, const SecLabelStmt *b) { COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(object); COMPARE_STRING_FIELD(provider); COMPARE_STRING_FIELD(label); return true; } static bool _equalFetchStmt(const FetchStmt *a, const FetchStmt *b) { COMPARE_SCALAR_FIELD(direction); COMPARE_SCALAR_FIELD(howMany); COMPARE_STRING_FIELD(portalname); COMPARE_SCALAR_FIELD(ismove); return true; } static bool _equalIndexStmt(const IndexStmt *a, const IndexStmt *b) { COMPARE_STRING_FIELD(idxname); COMPARE_NODE_FIELD(relation); COMPARE_STRING_FIELD(accessMethod); COMPARE_STRING_FIELD(tableSpace); COMPARE_NODE_FIELD(indexParams); COMPARE_NODE_FIELD(indexIncludingParams); COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(whereClause); COMPARE_NODE_FIELD(excludeOpNames); COMPARE_STRING_FIELD(idxcomment); COMPARE_SCALAR_FIELD(indexOid); COMPARE_SCALAR_FIELD(oldNode); COMPARE_SCALAR_FIELD(oldCreateSubid); COMPARE_SCALAR_FIELD(oldFirstRelfilenodeSubid); COMPARE_SCALAR_FIELD(unique); COMPARE_SCALAR_FIELD(primary); COMPARE_SCALAR_FIELD(isconstraint); COMPARE_SCALAR_FIELD(deferrable); COMPARE_SCALAR_FIELD(initdeferred); COMPARE_SCALAR_FIELD(transformed); COMPARE_SCALAR_FIELD(concurrent); COMPARE_SCALAR_FIELD(if_not_exists); COMPARE_SCALAR_FIELD(reset_default_tblspc); return true; } static bool _equalCreateStatsStmt(const CreateStatsStmt *a, const CreateStatsStmt *b) { COMPARE_NODE_FIELD(defnames); COMPARE_NODE_FIELD(stat_types); COMPARE_NODE_FIELD(exprs); COMPARE_NODE_FIELD(relations); COMPARE_STRING_FIELD(stxcomment); COMPARE_SCALAR_FIELD(if_not_exists); return true; } static bool _equalAlterStatsStmt(const AlterStatsStmt *a, const AlterStatsStmt *b) { COMPARE_NODE_FIELD(defnames); COMPARE_SCALAR_FIELD(stxstattarget); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalCreateFunctionStmt(const CreateFunctionStmt *a, const CreateFunctionStmt *b) { COMPARE_SCALAR_FIELD(is_procedure); COMPARE_SCALAR_FIELD(replace); COMPARE_NODE_FIELD(funcname); COMPARE_NODE_FIELD(parameters); COMPARE_NODE_FIELD(returnType); COMPARE_NODE_FIELD(options); return true; } static bool _equalFunctionParameter(const FunctionParameter *a, const FunctionParameter *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(argType); COMPARE_SCALAR_FIELD(mode); COMPARE_NODE_FIELD(defexpr); return true; } static bool _equalAlterFunctionStmt(const AlterFunctionStmt *a, const AlterFunctionStmt *b) { COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(func); COMPARE_NODE_FIELD(actions); return true; } static bool _equalDoStmt(const DoStmt *a, const DoStmt *b) { COMPARE_NODE_FIELD(args); return true; } static bool _equalRenameStmt(const RenameStmt *a, const RenameStmt *b) { COMPARE_SCALAR_FIELD(renameType); COMPARE_SCALAR_FIELD(relationType); COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(object); COMPARE_STRING_FIELD(subname); COMPARE_STRING_FIELD(newname); COMPARE_SCALAR_FIELD(behavior); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalAlterObjectDependsStmt(const AlterObjectDependsStmt *a, const AlterObjectDependsStmt *b) { COMPARE_SCALAR_FIELD(objectType); COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(object); COMPARE_NODE_FIELD(extname); COMPARE_SCALAR_FIELD(remove); return true; } static bool _equalAlterObjectSchemaStmt(const AlterObjectSchemaStmt *a, const AlterObjectSchemaStmt *b) { COMPARE_SCALAR_FIELD(objectType); COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(object); COMPARE_STRING_FIELD(newschema); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalAlterOwnerStmt(const AlterOwnerStmt *a, const AlterOwnerStmt *b) { COMPARE_SCALAR_FIELD(objectType); COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(object); COMPARE_NODE_FIELD(newowner); return true; } static bool _equalAlterOperatorStmt(const AlterOperatorStmt *a, const AlterOperatorStmt *b) { COMPARE_NODE_FIELD(opername); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterTypeStmt(const AlterTypeStmt *a, const AlterTypeStmt *b) { COMPARE_NODE_FIELD(typeName); COMPARE_NODE_FIELD(options); return true; } static bool _equalRuleStmt(const RuleStmt *a, const RuleStmt *b) { COMPARE_NODE_FIELD(relation); COMPARE_STRING_FIELD(rulename); COMPARE_NODE_FIELD(whereClause); COMPARE_SCALAR_FIELD(event); COMPARE_SCALAR_FIELD(instead); COMPARE_NODE_FIELD(actions); COMPARE_SCALAR_FIELD(replace); return true; } static bool _equalNotifyStmt(const NotifyStmt *a, const NotifyStmt *b) { COMPARE_STRING_FIELD(conditionname); COMPARE_STRING_FIELD(payload); return true; } static bool _equalListenStmt(const ListenStmt *a, const ListenStmt *b) { COMPARE_STRING_FIELD(conditionname); return true; } static bool _equalUnlistenStmt(const UnlistenStmt *a, const UnlistenStmt *b) { COMPARE_STRING_FIELD(conditionname); return true; } static bool _equalTransactionStmt(const TransactionStmt *a, const TransactionStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(options); COMPARE_STRING_FIELD(savepoint_name); COMPARE_STRING_FIELD(gid); COMPARE_SCALAR_FIELD(chain); return true; } static bool _equalCompositeTypeStmt(const CompositeTypeStmt *a, const CompositeTypeStmt *b) { COMPARE_NODE_FIELD(typevar); COMPARE_NODE_FIELD(coldeflist); return true; } static bool _equalCreateEnumStmt(const CreateEnumStmt *a, const CreateEnumStmt *b) { COMPARE_NODE_FIELD(typeName); COMPARE_NODE_FIELD(vals); return true; } static bool _equalCreateRangeStmt(const CreateRangeStmt *a, const CreateRangeStmt *b) { COMPARE_NODE_FIELD(typeName); COMPARE_NODE_FIELD(params); return true; } static bool _equalAlterEnumStmt(const AlterEnumStmt *a, const AlterEnumStmt *b) { COMPARE_NODE_FIELD(typeName); COMPARE_STRING_FIELD(oldVal); COMPARE_STRING_FIELD(newVal); COMPARE_STRING_FIELD(newValNeighbor); COMPARE_SCALAR_FIELD(newValIsAfter); COMPARE_SCALAR_FIELD(skipIfNewValExists); return true; } static bool _equalViewStmt(const ViewStmt *a, const ViewStmt *b) { COMPARE_NODE_FIELD(view); COMPARE_NODE_FIELD(aliases); COMPARE_NODE_FIELD(query); COMPARE_SCALAR_FIELD(replace); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(withCheckOption); return true; } static bool _equalLoadStmt(const LoadStmt *a, const LoadStmt *b) { COMPARE_STRING_FIELD(filename); return true; } static bool _equalCreateDomainStmt(const CreateDomainStmt *a, const CreateDomainStmt *b) { COMPARE_NODE_FIELD(domainname); COMPARE_NODE_FIELD(typeName); COMPARE_NODE_FIELD(collClause); COMPARE_NODE_FIELD(constraints); return true; } static bool _equalCreateOpClassStmt(const CreateOpClassStmt *a, const CreateOpClassStmt *b) { COMPARE_NODE_FIELD(opclassname); COMPARE_NODE_FIELD(opfamilyname); COMPARE_STRING_FIELD(amname); COMPARE_NODE_FIELD(datatype); COMPARE_NODE_FIELD(items); COMPARE_SCALAR_FIELD(isDefault); return true; } static bool _equalCreateOpClassItem(const CreateOpClassItem *a, const CreateOpClassItem *b) { COMPARE_SCALAR_FIELD(itemtype); COMPARE_NODE_FIELD(name); COMPARE_SCALAR_FIELD(number); COMPARE_NODE_FIELD(order_family); COMPARE_NODE_FIELD(class_args); COMPARE_NODE_FIELD(storedtype); return true; } static bool _equalCreateOpFamilyStmt(const CreateOpFamilyStmt *a, const CreateOpFamilyStmt *b) { COMPARE_NODE_FIELD(opfamilyname); COMPARE_STRING_FIELD(amname); return true; } static bool _equalAlterOpFamilyStmt(const AlterOpFamilyStmt *a, const AlterOpFamilyStmt *b) { COMPARE_NODE_FIELD(opfamilyname); COMPARE_STRING_FIELD(amname); COMPARE_SCALAR_FIELD(isDrop); COMPARE_NODE_FIELD(items); return true; } static bool _equalCreatedbStmt(const CreatedbStmt *a, const CreatedbStmt *b) { COMPARE_STRING_FIELD(dbname); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterDatabaseStmt(const AlterDatabaseStmt *a, const AlterDatabaseStmt *b) { COMPARE_STRING_FIELD(dbname); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterDatabaseSetStmt(const AlterDatabaseSetStmt *a, const AlterDatabaseSetStmt *b) { COMPARE_STRING_FIELD(dbname); COMPARE_NODE_FIELD(setstmt); return true; } static bool _equalDropdbStmt(const DropdbStmt *a, const DropdbStmt *b) { COMPARE_STRING_FIELD(dbname); COMPARE_SCALAR_FIELD(missing_ok); COMPARE_NODE_FIELD(options); return true; } static bool _equalVacuumStmt(const VacuumStmt *a, const VacuumStmt *b) { COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(rels); COMPARE_SCALAR_FIELD(is_vacuumcmd); return true; } static bool _equalVacuumRelation(const VacuumRelation *a, const VacuumRelation *b) { COMPARE_NODE_FIELD(relation); COMPARE_SCALAR_FIELD(oid); COMPARE_NODE_FIELD(va_cols); return true; } static bool _equalExplainStmt(const ExplainStmt *a, const ExplainStmt *b) { COMPARE_NODE_FIELD(query); COMPARE_NODE_FIELD(options); return true; } static bool _equalCreateTableAsStmt(const CreateTableAsStmt *a, const CreateTableAsStmt *b) { COMPARE_NODE_FIELD(query); COMPARE_NODE_FIELD(into); COMPARE_SCALAR_FIELD(relkind); COMPARE_SCALAR_FIELD(is_select_into); COMPARE_SCALAR_FIELD(if_not_exists); return true; } static bool _equalRefreshMatViewStmt(const RefreshMatViewStmt *a, const RefreshMatViewStmt *b) { COMPARE_SCALAR_FIELD(concurrent); COMPARE_SCALAR_FIELD(skipData); COMPARE_NODE_FIELD(relation); return true; } static bool _equalReplicaIdentityStmt(const ReplicaIdentityStmt *a, const ReplicaIdentityStmt *b) { COMPARE_SCALAR_FIELD(identity_type); COMPARE_STRING_FIELD(name); return true; } static bool _equalAlterSystemStmt(const AlterSystemStmt *a, const AlterSystemStmt *b) { COMPARE_NODE_FIELD(setstmt); return true; } static bool _equalCreateSeqStmt(const CreateSeqStmt *a, const CreateSeqStmt *b) { COMPARE_NODE_FIELD(sequence); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(ownerId); COMPARE_SCALAR_FIELD(for_identity); COMPARE_SCALAR_FIELD(if_not_exists); return true; } static bool _equalAlterSeqStmt(const AlterSeqStmt *a, const AlterSeqStmt *b) { COMPARE_NODE_FIELD(sequence); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(for_identity); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalVariableSetStmt(const VariableSetStmt *a, const VariableSetStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(args); COMPARE_SCALAR_FIELD(is_local); return true; } static bool _equalVariableShowStmt(const VariableShowStmt *a, const VariableShowStmt *b) { COMPARE_STRING_FIELD(name); return true; } static bool _equalDiscardStmt(const DiscardStmt *a, const DiscardStmt *b) { COMPARE_SCALAR_FIELD(target); return true; } static bool _equalCreateTableSpaceStmt(const CreateTableSpaceStmt *a, const CreateTableSpaceStmt *b) { COMPARE_STRING_FIELD(tablespacename); COMPARE_NODE_FIELD(owner); COMPARE_STRING_FIELD(location); COMPARE_NODE_FIELD(options); return true; } static bool _equalDropTableSpaceStmt(const DropTableSpaceStmt *a, const DropTableSpaceStmt *b) { COMPARE_STRING_FIELD(tablespacename); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalAlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt *a, const AlterTableSpaceOptionsStmt *b) { COMPARE_STRING_FIELD(tablespacename); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(isReset); return true; } static bool _equalAlterTableMoveAllStmt(const AlterTableMoveAllStmt *a, const AlterTableMoveAllStmt *b) { COMPARE_STRING_FIELD(orig_tablespacename); COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(roles); COMPARE_STRING_FIELD(new_tablespacename); COMPARE_SCALAR_FIELD(nowait); return true; } static bool _equalCreateExtensionStmt(const CreateExtensionStmt *a, const CreateExtensionStmt *b) { COMPARE_STRING_FIELD(extname); COMPARE_SCALAR_FIELD(if_not_exists); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterExtensionStmt(const AlterExtensionStmt *a, const AlterExtensionStmt *b) { COMPARE_STRING_FIELD(extname); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterExtensionContentsStmt(const AlterExtensionContentsStmt *a, const AlterExtensionContentsStmt *b) { COMPARE_STRING_FIELD(extname); COMPARE_SCALAR_FIELD(action); COMPARE_SCALAR_FIELD(objtype); COMPARE_NODE_FIELD(object); return true; } static bool _equalCreateFdwStmt(const CreateFdwStmt *a, const CreateFdwStmt *b) { COMPARE_STRING_FIELD(fdwname); COMPARE_NODE_FIELD(func_options); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterFdwStmt(const AlterFdwStmt *a, const AlterFdwStmt *b) { COMPARE_STRING_FIELD(fdwname); COMPARE_NODE_FIELD(func_options); COMPARE_NODE_FIELD(options); return true; } static bool _equalCreateForeignServerStmt(const CreateForeignServerStmt *a, const CreateForeignServerStmt *b) { COMPARE_STRING_FIELD(servername); COMPARE_STRING_FIELD(servertype); COMPARE_STRING_FIELD(version); COMPARE_STRING_FIELD(fdwname); COMPARE_SCALAR_FIELD(if_not_exists); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterForeignServerStmt(const AlterForeignServerStmt *a, const AlterForeignServerStmt *b) { COMPARE_STRING_FIELD(servername); COMPARE_STRING_FIELD(version); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(has_version); return true; } static bool _equalCreateUserMappingStmt(const CreateUserMappingStmt *a, const CreateUserMappingStmt *b) { COMPARE_NODE_FIELD(user); COMPARE_STRING_FIELD(servername); COMPARE_SCALAR_FIELD(if_not_exists); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterUserMappingStmt(const AlterUserMappingStmt *a, const AlterUserMappingStmt *b) { COMPARE_NODE_FIELD(user); COMPARE_STRING_FIELD(servername); COMPARE_NODE_FIELD(options); return true; } static bool _equalDropUserMappingStmt(const DropUserMappingStmt *a, const DropUserMappingStmt *b) { COMPARE_NODE_FIELD(user); COMPARE_STRING_FIELD(servername); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalCreateForeignTableStmt(const CreateForeignTableStmt *a, const CreateForeignTableStmt *b) { if (!_equalCreateStmt(&a->base, &b->base)) return false; COMPARE_STRING_FIELD(servername); COMPARE_NODE_FIELD(options); return true; } static bool _equalImportForeignSchemaStmt(const ImportForeignSchemaStmt *a, const ImportForeignSchemaStmt *b) { COMPARE_STRING_FIELD(server_name); COMPARE_STRING_FIELD(remote_schema); COMPARE_STRING_FIELD(local_schema); COMPARE_SCALAR_FIELD(list_type); COMPARE_NODE_FIELD(table_list); COMPARE_NODE_FIELD(options); return true; } static bool _equalCreateTransformStmt(const CreateTransformStmt *a, const CreateTransformStmt *b) { COMPARE_SCALAR_FIELD(replace); COMPARE_NODE_FIELD(type_name); COMPARE_STRING_FIELD(lang); COMPARE_NODE_FIELD(fromsql); COMPARE_NODE_FIELD(tosql); return true; } static bool _equalCreateAmStmt(const CreateAmStmt *a, const CreateAmStmt *b) { COMPARE_STRING_FIELD(amname); COMPARE_NODE_FIELD(handler_name); COMPARE_SCALAR_FIELD(amtype); return true; } static bool _equalCreateTrigStmt(const CreateTrigStmt *a, const CreateTrigStmt *b) { COMPARE_STRING_FIELD(trigname); COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(funcname); COMPARE_NODE_FIELD(args); COMPARE_SCALAR_FIELD(row); COMPARE_SCALAR_FIELD(timing); COMPARE_SCALAR_FIELD(events); COMPARE_NODE_FIELD(columns); COMPARE_NODE_FIELD(whenClause); COMPARE_SCALAR_FIELD(isconstraint); COMPARE_NODE_FIELD(transitionRels); COMPARE_SCALAR_FIELD(deferrable); COMPARE_SCALAR_FIELD(initdeferred); COMPARE_NODE_FIELD(constrrel); return true; } static bool _equalCreateEventTrigStmt(const CreateEventTrigStmt *a, const CreateEventTrigStmt *b) { COMPARE_STRING_FIELD(trigname); COMPARE_STRING_FIELD(eventname); COMPARE_NODE_FIELD(whenclause); COMPARE_NODE_FIELD(funcname); return true; } static bool _equalAlterEventTrigStmt(const AlterEventTrigStmt *a, const AlterEventTrigStmt *b) { COMPARE_STRING_FIELD(trigname); COMPARE_SCALAR_FIELD(tgenabled); return true; } static bool _equalCreatePLangStmt(const CreatePLangStmt *a, const CreatePLangStmt *b) { COMPARE_SCALAR_FIELD(replace); COMPARE_STRING_FIELD(plname); COMPARE_NODE_FIELD(plhandler); COMPARE_NODE_FIELD(plinline); COMPARE_NODE_FIELD(plvalidator); COMPARE_SCALAR_FIELD(pltrusted); return true; } static bool _equalCreateRoleStmt(const CreateRoleStmt *a, const CreateRoleStmt *b) { COMPARE_SCALAR_FIELD(stmt_type); COMPARE_STRING_FIELD(role); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterRoleStmt(const AlterRoleStmt *a, const AlterRoleStmt *b) { COMPARE_NODE_FIELD(role); COMPARE_NODE_FIELD(options); COMPARE_SCALAR_FIELD(action); return true; } static bool _equalAlterRoleSetStmt(const AlterRoleSetStmt *a, const AlterRoleSetStmt *b) { COMPARE_NODE_FIELD(role); COMPARE_STRING_FIELD(database); COMPARE_NODE_FIELD(setstmt); return true; } static bool _equalDropRoleStmt(const DropRoleStmt *a, const DropRoleStmt *b) { COMPARE_NODE_FIELD(roles); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalLockStmt(const LockStmt *a, const LockStmt *b) { COMPARE_NODE_FIELD(relations); COMPARE_SCALAR_FIELD(mode); COMPARE_SCALAR_FIELD(nowait); return true; } static bool _equalConstraintsSetStmt(const ConstraintsSetStmt *a, const ConstraintsSetStmt *b) { COMPARE_NODE_FIELD(constraints); COMPARE_SCALAR_FIELD(deferred); return true; } static bool _equalReindexStmt(const ReindexStmt *a, const ReindexStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(relation); COMPARE_STRING_FIELD(name); COMPARE_SCALAR_FIELD(options); COMPARE_SCALAR_FIELD(concurrent); return true; } static bool _equalCreateSchemaStmt(const CreateSchemaStmt *a, const CreateSchemaStmt *b) { COMPARE_STRING_FIELD(schemaname); COMPARE_NODE_FIELD(authrole); COMPARE_NODE_FIELD(schemaElts); COMPARE_SCALAR_FIELD(if_not_exists); return true; } static bool _equalCreateConversionStmt(const CreateConversionStmt *a, const CreateConversionStmt *b) { COMPARE_NODE_FIELD(conversion_name); COMPARE_STRING_FIELD(for_encoding_name); COMPARE_STRING_FIELD(to_encoding_name); COMPARE_NODE_FIELD(func_name); COMPARE_SCALAR_FIELD(def); return true; } static bool _equalCreateCastStmt(const CreateCastStmt *a, const CreateCastStmt *b) { COMPARE_NODE_FIELD(sourcetype); COMPARE_NODE_FIELD(targettype); COMPARE_NODE_FIELD(func); COMPARE_SCALAR_FIELD(context); COMPARE_SCALAR_FIELD(inout); return true; } static bool _equalPrepareStmt(const PrepareStmt *a, const PrepareStmt *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(argtypes); COMPARE_NODE_FIELD(query); return true; } static bool _equalExecuteStmt(const ExecuteStmt *a, const ExecuteStmt *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(params); return true; } static bool _equalDeallocateStmt(const DeallocateStmt *a, const DeallocateStmt *b) { COMPARE_STRING_FIELD(name); return true; } static bool _equalDropOwnedStmt(const DropOwnedStmt *a, const DropOwnedStmt *b) { COMPARE_NODE_FIELD(roles); COMPARE_SCALAR_FIELD(behavior); return true; } static bool _equalReassignOwnedStmt(const ReassignOwnedStmt *a, const ReassignOwnedStmt *b) { COMPARE_NODE_FIELD(roles); COMPARE_NODE_FIELD(newrole); return true; } static bool _equalAlterTSDictionaryStmt(const AlterTSDictionaryStmt *a, const AlterTSDictionaryStmt *b) { COMPARE_NODE_FIELD(dictname); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterTSConfigurationStmt(const AlterTSConfigurationStmt *a, const AlterTSConfigurationStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(cfgname); COMPARE_NODE_FIELD(tokentype); COMPARE_NODE_FIELD(dicts); COMPARE_SCALAR_FIELD(override); COMPARE_SCALAR_FIELD(replace); COMPARE_SCALAR_FIELD(missing_ok); return true; } static bool _equalCreatePublicationStmt(const CreatePublicationStmt *a, const CreatePublicationStmt *b) { COMPARE_STRING_FIELD(pubname); COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(tables); COMPARE_SCALAR_FIELD(for_all_tables); return true; } static bool _equalAlterPublicationStmt(const AlterPublicationStmt *a, const AlterPublicationStmt *b) { COMPARE_STRING_FIELD(pubname); COMPARE_NODE_FIELD(options); COMPARE_NODE_FIELD(tables); COMPARE_SCALAR_FIELD(for_all_tables); COMPARE_SCALAR_FIELD(tableAction); return true; } static bool _equalCreateSubscriptionStmt(const CreateSubscriptionStmt *a, const CreateSubscriptionStmt *b) { COMPARE_STRING_FIELD(subname); COMPARE_STRING_FIELD(conninfo); COMPARE_NODE_FIELD(publication); COMPARE_NODE_FIELD(options); return true; } static bool _equalAlterSubscriptionStmt(const AlterSubscriptionStmt *a, const AlterSubscriptionStmt *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_STRING_FIELD(subname); COMPARE_STRING_FIELD(conninfo); COMPARE_NODE_FIELD(publication); COMPARE_NODE_FIELD(options); return true; } static bool _equalDropSubscriptionStmt(const DropSubscriptionStmt *a, const DropSubscriptionStmt *b) { COMPARE_STRING_FIELD(subname); COMPARE_SCALAR_FIELD(missing_ok); COMPARE_SCALAR_FIELD(behavior); return true; } static bool _equalCreatePolicyStmt(const CreatePolicyStmt *a, const CreatePolicyStmt *b) { COMPARE_STRING_FIELD(policy_name); COMPARE_NODE_FIELD(table); COMPARE_STRING_FIELD(cmd_name); COMPARE_SCALAR_FIELD(permissive); COMPARE_NODE_FIELD(roles); COMPARE_NODE_FIELD(qual); COMPARE_NODE_FIELD(with_check); return true; } static bool _equalAlterPolicyStmt(const AlterPolicyStmt *a, const AlterPolicyStmt *b) { COMPARE_STRING_FIELD(policy_name); COMPARE_NODE_FIELD(table); COMPARE_NODE_FIELD(roles); COMPARE_NODE_FIELD(qual); COMPARE_NODE_FIELD(with_check); return true; } static bool _equalAExpr(const A_Expr *a, const A_Expr *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(name); COMPARE_NODE_FIELD(lexpr); COMPARE_NODE_FIELD(rexpr); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalColumnRef(const ColumnRef *a, const ColumnRef *b) { COMPARE_NODE_FIELD(fields); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalParamRef(const ParamRef *a, const ParamRef *b) { COMPARE_SCALAR_FIELD(number); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalAConst(const A_Const *a, const A_Const *b) { if (!equal(&a->val, &b->val)) /* hack for in-line Value field */ return false; COMPARE_LOCATION_FIELD(location); return true; } static bool _equalFuncCall(const FuncCall *a, const FuncCall *b) { COMPARE_NODE_FIELD(funcname); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(agg_order); COMPARE_NODE_FIELD(agg_filter); COMPARE_SCALAR_FIELD(agg_within_group); COMPARE_SCALAR_FIELD(agg_star); COMPARE_SCALAR_FIELD(agg_distinct); COMPARE_SCALAR_FIELD(func_variadic); COMPARE_NODE_FIELD(over); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalAStar(const A_Star *a, const A_Star *b) { return true; } static bool _equalAIndices(const A_Indices *a, const A_Indices *b) { COMPARE_SCALAR_FIELD(is_slice); COMPARE_NODE_FIELD(lidx); COMPARE_NODE_FIELD(uidx); return true; } static bool _equalA_Indirection(const A_Indirection *a, const A_Indirection *b) { COMPARE_NODE_FIELD(arg); COMPARE_NODE_FIELD(indirection); return true; } static bool _equalA_ArrayExpr(const A_ArrayExpr *a, const A_ArrayExpr *b) { COMPARE_NODE_FIELD(elements); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalResTarget(const ResTarget *a, const ResTarget *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(indirection); COMPARE_NODE_FIELD(val); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalMultiAssignRef(const MultiAssignRef *a, const MultiAssignRef *b) { COMPARE_NODE_FIELD(source); COMPARE_SCALAR_FIELD(colno); COMPARE_SCALAR_FIELD(ncolumns); return true; } static bool _equalTypeName(const TypeName *a, const TypeName *b) { COMPARE_NODE_FIELD(names); COMPARE_SCALAR_FIELD(typeOid); COMPARE_SCALAR_FIELD(setof); COMPARE_SCALAR_FIELD(pct_type); COMPARE_NODE_FIELD(typmods); COMPARE_SCALAR_FIELD(typemod); COMPARE_NODE_FIELD(arrayBounds); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalTypeCast(const TypeCast *a, const TypeCast *b) { COMPARE_NODE_FIELD(arg); COMPARE_NODE_FIELD(typeName); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCollateClause(const CollateClause *a, const CollateClause *b) { COMPARE_NODE_FIELD(arg); COMPARE_NODE_FIELD(collname); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalSortBy(const SortBy *a, const SortBy *b) { COMPARE_NODE_FIELD(node); COMPARE_SCALAR_FIELD(sortby_dir); COMPARE_SCALAR_FIELD(sortby_nulls); COMPARE_NODE_FIELD(useOp); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalWindowDef(const WindowDef *a, const WindowDef *b) { COMPARE_STRING_FIELD(name); COMPARE_STRING_FIELD(refname); COMPARE_NODE_FIELD(partitionClause); COMPARE_NODE_FIELD(orderClause); COMPARE_SCALAR_FIELD(frameOptions); COMPARE_NODE_FIELD(startOffset); COMPARE_NODE_FIELD(endOffset); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRangeSubselect(const RangeSubselect *a, const RangeSubselect *b) { COMPARE_SCALAR_FIELD(lateral); COMPARE_NODE_FIELD(subquery); COMPARE_NODE_FIELD(alias); return true; } static bool _equalRangeFunction(const RangeFunction *a, const RangeFunction *b) { COMPARE_SCALAR_FIELD(lateral); COMPARE_SCALAR_FIELD(ordinality); COMPARE_SCALAR_FIELD(is_rowsfrom); COMPARE_NODE_FIELD(functions); COMPARE_NODE_FIELD(alias); COMPARE_NODE_FIELD(coldeflist); return true; } static bool _equalRangeTableSample(const RangeTableSample *a, const RangeTableSample *b) { COMPARE_NODE_FIELD(relation); COMPARE_NODE_FIELD(method); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(repeatable); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRangeTableFunc(const RangeTableFunc *a, const RangeTableFunc *b) { COMPARE_SCALAR_FIELD(lateral); COMPARE_NODE_FIELD(docexpr); COMPARE_NODE_FIELD(rowexpr); COMPARE_NODE_FIELD(namespaces); COMPARE_NODE_FIELD(columns); COMPARE_NODE_FIELD(alias); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRangeTableFuncCol(const RangeTableFuncCol *a, const RangeTableFuncCol *b) { COMPARE_STRING_FIELD(colname); COMPARE_NODE_FIELD(typeName); COMPARE_SCALAR_FIELD(for_ordinality); COMPARE_SCALAR_FIELD(is_not_null); COMPARE_NODE_FIELD(colexpr); COMPARE_NODE_FIELD(coldefexpr); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalIndexElem(const IndexElem *a, const IndexElem *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(expr); COMPARE_STRING_FIELD(indexcolname); COMPARE_NODE_FIELD(collation); COMPARE_NODE_FIELD(opclass); COMPARE_NODE_FIELD(opclassopts); COMPARE_SCALAR_FIELD(ordering); COMPARE_SCALAR_FIELD(nulls_ordering); return true; } static bool _equalColumnDef(const ColumnDef *a, const ColumnDef *b) { COMPARE_STRING_FIELD(colname); COMPARE_NODE_FIELD(typeName); COMPARE_SCALAR_FIELD(inhcount); COMPARE_SCALAR_FIELD(is_local); COMPARE_SCALAR_FIELD(is_not_null); COMPARE_SCALAR_FIELD(is_from_type); COMPARE_SCALAR_FIELD(storage); COMPARE_NODE_FIELD(raw_default); COMPARE_NODE_FIELD(cooked_default); COMPARE_SCALAR_FIELD(identity); COMPARE_NODE_FIELD(identitySequence); COMPARE_SCALAR_FIELD(generated); COMPARE_NODE_FIELD(collClause); COMPARE_SCALAR_FIELD(collOid); COMPARE_NODE_FIELD(constraints); COMPARE_NODE_FIELD(fdwoptions); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalConstraint(const Constraint *a, const Constraint *b) { COMPARE_SCALAR_FIELD(contype); COMPARE_STRING_FIELD(conname); COMPARE_SCALAR_FIELD(deferrable); COMPARE_SCALAR_FIELD(initdeferred); COMPARE_LOCATION_FIELD(location); COMPARE_SCALAR_FIELD(is_no_inherit); COMPARE_NODE_FIELD(raw_expr); COMPARE_STRING_FIELD(cooked_expr); COMPARE_SCALAR_FIELD(generated_when); COMPARE_NODE_FIELD(keys); COMPARE_NODE_FIELD(including); COMPARE_NODE_FIELD(exclusions); COMPARE_NODE_FIELD(options); COMPARE_STRING_FIELD(indexname); COMPARE_STRING_FIELD(indexspace); COMPARE_SCALAR_FIELD(reset_default_tblspc); COMPARE_STRING_FIELD(access_method); COMPARE_NODE_FIELD(where_clause); COMPARE_NODE_FIELD(pktable); COMPARE_NODE_FIELD(fk_attrs); COMPARE_NODE_FIELD(pk_attrs); COMPARE_SCALAR_FIELD(fk_matchtype); COMPARE_SCALAR_FIELD(fk_upd_action); COMPARE_SCALAR_FIELD(fk_del_action); COMPARE_NODE_FIELD(old_conpfeqop); COMPARE_SCALAR_FIELD(old_pktable_oid); COMPARE_SCALAR_FIELD(skip_validation); COMPARE_SCALAR_FIELD(initially_valid); return true; } static bool _equalDefElem(const DefElem *a, const DefElem *b) { COMPARE_STRING_FIELD(defnamespace); COMPARE_STRING_FIELD(defname); COMPARE_NODE_FIELD(arg); COMPARE_SCALAR_FIELD(defaction); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalLockingClause(const LockingClause *a, const LockingClause *b) { COMPARE_NODE_FIELD(lockedRels); COMPARE_SCALAR_FIELD(strength); COMPARE_SCALAR_FIELD(waitPolicy); return true; } static bool _equalRangeTblEntry(const RangeTblEntry *a, const RangeTblEntry *b) { COMPARE_SCALAR_FIELD(rtekind); COMPARE_SCALAR_FIELD(relid); COMPARE_SCALAR_FIELD(relkind); COMPARE_SCALAR_FIELD(rellockmode); COMPARE_NODE_FIELD(tablesample); COMPARE_NODE_FIELD(subquery); COMPARE_SCALAR_FIELD(security_barrier); COMPARE_SCALAR_FIELD(jointype); COMPARE_SCALAR_FIELD(joinmergedcols); COMPARE_NODE_FIELD(joinaliasvars); COMPARE_NODE_FIELD(joinleftcols); COMPARE_NODE_FIELD(joinrightcols); COMPARE_NODE_FIELD(functions); COMPARE_SCALAR_FIELD(funcordinality); COMPARE_NODE_FIELD(tablefunc); COMPARE_NODE_FIELD(values_lists); COMPARE_STRING_FIELD(ctename); COMPARE_SCALAR_FIELD(ctelevelsup); COMPARE_SCALAR_FIELD(self_reference); COMPARE_NODE_FIELD(coltypes); COMPARE_NODE_FIELD(coltypmods); COMPARE_NODE_FIELD(colcollations); COMPARE_STRING_FIELD(enrname); COMPARE_SCALAR_FIELD(enrtuples); COMPARE_NODE_FIELD(alias); COMPARE_NODE_FIELD(eref); COMPARE_SCALAR_FIELD(lateral); COMPARE_SCALAR_FIELD(inh); COMPARE_SCALAR_FIELD(inFromCl); COMPARE_SCALAR_FIELD(requiredPerms); COMPARE_SCALAR_FIELD(checkAsUser); COMPARE_BITMAPSET_FIELD(selectedCols); COMPARE_BITMAPSET_FIELD(insertedCols); COMPARE_BITMAPSET_FIELD(updatedCols); COMPARE_BITMAPSET_FIELD(extraUpdatedCols); COMPARE_NODE_FIELD(securityQuals); return true; } static bool _equalRangeTblFunction(const RangeTblFunction *a, const RangeTblFunction *b) { COMPARE_NODE_FIELD(funcexpr); COMPARE_SCALAR_FIELD(funccolcount); COMPARE_NODE_FIELD(funccolnames); COMPARE_NODE_FIELD(funccoltypes); COMPARE_NODE_FIELD(funccoltypmods); COMPARE_NODE_FIELD(funccolcollations); COMPARE_BITMAPSET_FIELD(funcparams); return true; } static bool _equalTableSampleClause(const TableSampleClause *a, const TableSampleClause *b) { COMPARE_SCALAR_FIELD(tsmhandler); COMPARE_NODE_FIELD(args); COMPARE_NODE_FIELD(repeatable); return true; } static bool _equalWithCheckOption(const WithCheckOption *a, const WithCheckOption *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_STRING_FIELD(relname); COMPARE_STRING_FIELD(polname); COMPARE_NODE_FIELD(qual); COMPARE_SCALAR_FIELD(cascaded); return true; } static bool _equalSortGroupClause(const SortGroupClause *a, const SortGroupClause *b) { COMPARE_SCALAR_FIELD(tleSortGroupRef); COMPARE_SCALAR_FIELD(eqop); COMPARE_SCALAR_FIELD(sortop); COMPARE_SCALAR_FIELD(nulls_first); COMPARE_SCALAR_FIELD(hashable); return true; } static bool _equalGroupingSet(const GroupingSet *a, const GroupingSet *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(content); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalWindowClause(const WindowClause *a, const WindowClause *b) { COMPARE_STRING_FIELD(name); COMPARE_STRING_FIELD(refname); COMPARE_NODE_FIELD(partitionClause); COMPARE_NODE_FIELD(orderClause); COMPARE_SCALAR_FIELD(frameOptions); COMPARE_NODE_FIELD(startOffset); COMPARE_NODE_FIELD(endOffset); COMPARE_SCALAR_FIELD(startInRangeFunc); COMPARE_SCALAR_FIELD(endInRangeFunc); COMPARE_SCALAR_FIELD(inRangeColl); COMPARE_SCALAR_FIELD(inRangeAsc); COMPARE_SCALAR_FIELD(inRangeNullsFirst); COMPARE_SCALAR_FIELD(winref); COMPARE_SCALAR_FIELD(copiedOrder); return true; } static bool _equalRowMarkClause(const RowMarkClause *a, const RowMarkClause *b) { COMPARE_SCALAR_FIELD(rti); COMPARE_SCALAR_FIELD(strength); COMPARE_SCALAR_FIELD(waitPolicy); COMPARE_SCALAR_FIELD(pushedDown); return true; } static bool _equalWithClause(const WithClause *a, const WithClause *b) { COMPARE_NODE_FIELD(ctes); COMPARE_SCALAR_FIELD(recursive); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalInferClause(const InferClause *a, const InferClause *b) { COMPARE_NODE_FIELD(indexElems); COMPARE_NODE_FIELD(whereClause); COMPARE_STRING_FIELD(conname); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalOnConflictClause(const OnConflictClause *a, const OnConflictClause *b) { COMPARE_SCALAR_FIELD(action); COMPARE_NODE_FIELD(infer); COMPARE_NODE_FIELD(targetList); COMPARE_NODE_FIELD(whereClause); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalCommonTableExpr(const CommonTableExpr *a, const CommonTableExpr *b) { COMPARE_STRING_FIELD(ctename); COMPARE_NODE_FIELD(aliascolnames); COMPARE_SCALAR_FIELD(ctematerialized); COMPARE_NODE_FIELD(ctequery); COMPARE_LOCATION_FIELD(location); COMPARE_SCALAR_FIELD(cterecursive); COMPARE_SCALAR_FIELD(cterefcount); COMPARE_NODE_FIELD(ctecolnames); COMPARE_NODE_FIELD(ctecoltypes); COMPARE_NODE_FIELD(ctecoltypmods); COMPARE_NODE_FIELD(ctecolcollations); return true; } static bool _equalXmlSerialize(const XmlSerialize *a, const XmlSerialize *b) { COMPARE_SCALAR_FIELD(xmloption); COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(typeName); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalRoleSpec(const RoleSpec *a, const RoleSpec *b) { COMPARE_SCALAR_FIELD(roletype); COMPARE_STRING_FIELD(rolename); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalTriggerTransition(const TriggerTransition *a, const TriggerTransition *b) { COMPARE_STRING_FIELD(name); COMPARE_SCALAR_FIELD(isNew); COMPARE_SCALAR_FIELD(isTable); return true; } static bool _equalPartitionElem(const PartitionElem *a, const PartitionElem *b) { COMPARE_STRING_FIELD(name); COMPARE_NODE_FIELD(expr); COMPARE_NODE_FIELD(collation); COMPARE_NODE_FIELD(opclass); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalPartitionSpec(const PartitionSpec *a, const PartitionSpec *b) { COMPARE_STRING_FIELD(strategy); COMPARE_NODE_FIELD(partParams); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalPartitionBoundSpec(const PartitionBoundSpec *a, const PartitionBoundSpec *b) { COMPARE_SCALAR_FIELD(strategy); COMPARE_SCALAR_FIELD(is_default); COMPARE_SCALAR_FIELD(modulus); COMPARE_SCALAR_FIELD(remainder); COMPARE_NODE_FIELD(listdatums); COMPARE_NODE_FIELD(lowerdatums); COMPARE_NODE_FIELD(upperdatums); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalPartitionRangeDatum(const PartitionRangeDatum *a, const PartitionRangeDatum *b) { COMPARE_SCALAR_FIELD(kind); COMPARE_NODE_FIELD(value); COMPARE_LOCATION_FIELD(location); return true; } static bool _equalPartitionCmd(const PartitionCmd *a, const PartitionCmd *b) { COMPARE_NODE_FIELD(name); COMPARE_NODE_FIELD(bound); return true; } /* * Stuff from pg_list.h */ static bool _equalList(const List *a, const List *b) { const ListCell *item_a; const ListCell *item_b; /* * Try to reject by simple scalar checks before grovelling through all the * list elements... */ COMPARE_SCALAR_FIELD(type); COMPARE_SCALAR_FIELD(length); /* * We place the switch outside the loop for the sake of efficiency; this * may not be worth doing... */ switch (a->type) { case T_List: forboth(item_a, a, item_b, b) { if (!equal(lfirst(item_a), lfirst(item_b))) return false; } break; case T_IntList: forboth(item_a, a, item_b, b) { if (lfirst_int(item_a) != lfirst_int(item_b)) return false; } break; case T_OidList: forboth(item_a, a, item_b, b) { if (lfirst_oid(item_a) != lfirst_oid(item_b)) return false; } break; default: elog(ERROR, "unrecognized list node type: %d", (int) a->type); return false; /* keep compiler quiet */ } /* * If we got here, we should have run out of elements of both lists */ Assert(item_a == NULL); Assert(item_b == NULL); return true; } /* * Stuff from value.h */ static bool _equalValue(const Value *a, const Value *b) { COMPARE_SCALAR_FIELD(type); switch (a->type) { case T_Integer: COMPARE_SCALAR_FIELD(val.ival); break; case T_Float: case T_String: case T_BitString: COMPARE_STRING_FIELD(val.str); break; case T_Null: /* nothing to do */ break; default: elog(ERROR, "unrecognized node type: %d", (int) a->type); break; } return true; } /* * equal * returns whether two nodes are equal */ bool equal(const void *a, const void *b) { bool retval; if (a == b) return true; /* * note that a!=b, so only one of them can be NULL */ if (a == NULL || b == NULL) return false; /* * are they the same type of nodes? */ if (nodeTag(a) != nodeTag(b)) return false; /* Guard against stack overflow due to overly complex expressions */ check_stack_depth(); switch (nodeTag(a)) { /* * PRIMITIVE NODES */ case T_Alias: retval = _equalAlias(a, b); break; case T_RangeVar: retval = _equalRangeVar(a, b); break; case T_TableFunc: retval = _equalTableFunc(a, b); break; case T_IntoClause: retval = _equalIntoClause(a, b); break; case T_Var: retval = _equalVar(a, b); break; case T_Const: retval = _equalConst(a, b); break; case T_Param: retval = _equalParam(a, b); break; case T_Aggref: retval = _equalAggref(a, b); break; case T_GroupingFunc: retval = _equalGroupingFunc(a, b); break; case T_WindowFunc: retval = _equalWindowFunc(a, b); break; case T_SubscriptingRef: retval = _equalSubscriptingRef(a, b); break; case T_FuncExpr: retval = _equalFuncExpr(a, b); break; case T_NamedArgExpr: retval = _equalNamedArgExpr(a, b); break; case T_OpExpr: retval = _equalOpExpr(a, b); break; case T_DistinctExpr: retval = _equalDistinctExpr(a, b); break; case T_NullIfExpr: retval = _equalNullIfExpr(a, b); break; case T_ScalarArrayOpExpr: retval = _equalScalarArrayOpExpr(a, b); break; case T_BoolExpr: retval = _equalBoolExpr(a, b); break; case T_SubLink: retval = _equalSubLink(a, b); break; case T_SubPlan: retval = _equalSubPlan(a, b); break; case T_AlternativeSubPlan: retval = _equalAlternativeSubPlan(a, b); break; case T_FieldSelect: retval = _equalFieldSelect(a, b); break; case T_FieldStore: retval = _equalFieldStore(a, b); break; case T_RelabelType: retval = _equalRelabelType(a, b); break; case T_CoerceViaIO: retval = _equalCoerceViaIO(a, b); break; case T_ArrayCoerceExpr: retval = _equalArrayCoerceExpr(a, b); break; case T_ConvertRowtypeExpr: retval = _equalConvertRowtypeExpr(a, b); break; case T_CollateExpr: retval = _equalCollateExpr(a, b); break; case T_CaseExpr: retval = _equalCaseExpr(a, b); break; case T_CaseWhen: retval = _equalCaseWhen(a, b); break; case T_CaseTestExpr: retval = _equalCaseTestExpr(a, b); break; case T_ArrayExpr: retval = _equalArrayExpr(a, b); break; case T_RowExpr: retval = _equalRowExpr(a, b); break; case T_RowCompareExpr: retval = _equalRowCompareExpr(a, b); break; case T_CoalesceExpr: retval = _equalCoalesceExpr(a, b); break; case T_MinMaxExpr: retval = _equalMinMaxExpr(a, b); break; case T_SQLValueFunction: retval = _equalSQLValueFunction(a, b); break; case T_XmlExpr: retval = _equalXmlExpr(a, b); break; case T_NullTest: retval = _equalNullTest(a, b); break; case T_BooleanTest: retval = _equalBooleanTest(a, b); break; case T_CoerceToDomain: retval = _equalCoerceToDomain(a, b); break; case T_CoerceToDomainValue: retval = _equalCoerceToDomainValue(a, b); break; case T_SetToDefault: retval = _equalSetToDefault(a, b); break; case T_CurrentOfExpr: retval = _equalCurrentOfExpr(a, b); break; case T_NextValueExpr: retval = _equalNextValueExpr(a, b); break; case T_InferenceElem: retval = _equalInferenceElem(a, b); break; case T_TargetEntry: retval = _equalTargetEntry(a, b); break; case T_RangeTblRef: retval = _equalRangeTblRef(a, b); break; case T_FromExpr: retval = _equalFromExpr(a, b); break; case T_OnConflictExpr: retval = _equalOnConflictExpr(a, b); break; case T_JoinExpr: retval = _equalJoinExpr(a, b); break; /* * RELATION NODES */ case T_PathKey: retval = _equalPathKey(a, b); break; case T_RestrictInfo: retval = _equalRestrictInfo(a, b); break; case T_PlaceHolderVar: retval = _equalPlaceHolderVar(a, b); break; case T_SpecialJoinInfo: retval = _equalSpecialJoinInfo(a, b); break; case T_AppendRelInfo: retval = _equalAppendRelInfo(a, b); break; case T_PlaceHolderInfo: retval = _equalPlaceHolderInfo(a, b); break; case T_List: case T_IntList: case T_OidList: retval = _equalList(a, b); break; case T_Integer: case T_Float: case T_String: case T_BitString: case T_Null: retval = _equalValue(a, b); break; /* * EXTENSIBLE NODES */ case T_ExtensibleNode: retval = _equalExtensibleNode(a, b); break; /* * PARSE NODES */ case T_Query: retval = _equalQuery(a, b); break; case T_RawStmt: retval = _equalRawStmt(a, b); break; case T_InsertStmt: retval = _equalInsertStmt(a, b); break; case T_DeleteStmt: retval = _equalDeleteStmt(a, b); break; case T_UpdateStmt: retval = _equalUpdateStmt(a, b); break; case T_SelectStmt: retval = _equalSelectStmt(a, b); break; case T_SetOperationStmt: retval = _equalSetOperationStmt(a, b); break; case T_AlterTableStmt: retval = _equalAlterTableStmt(a, b); break; case T_AlterTableCmd: retval = _equalAlterTableCmd(a, b); break; case T_AlterCollationStmt: retval = _equalAlterCollationStmt(a, b); break; case T_AlterDomainStmt: retval = _equalAlterDomainStmt(a, b); break; case T_GrantStmt: retval = _equalGrantStmt(a, b); break; case T_GrantRoleStmt: retval = _equalGrantRoleStmt(a, b); break; case T_AlterDefaultPrivilegesStmt: retval = _equalAlterDefaultPrivilegesStmt(a, b); break; case T_DeclareCursorStmt: retval = _equalDeclareCursorStmt(a, b); break; case T_ClosePortalStmt: retval = _equalClosePortalStmt(a, b); break; case T_CallStmt: retval = _equalCallStmt(a, b); break; case T_ClusterStmt: retval = _equalClusterStmt(a, b); break; case T_CopyStmt: retval = _equalCopyStmt(a, b); break; case T_CreateStmt: retval = _equalCreateStmt(a, b); break; case T_TableLikeClause: retval = _equalTableLikeClause(a, b); break; case T_DefineStmt: retval = _equalDefineStmt(a, b); break; case T_DropStmt: retval = _equalDropStmt(a, b); break; case T_TruncateStmt: retval = _equalTruncateStmt(a, b); break; case T_CommentStmt: retval = _equalCommentStmt(a, b); break; case T_SecLabelStmt: retval = _equalSecLabelStmt(a, b); break; case T_FetchStmt: retval = _equalFetchStmt(a, b); break; case T_IndexStmt: retval = _equalIndexStmt(a, b); break; case T_CreateStatsStmt: retval = _equalCreateStatsStmt(a, b); break; case T_AlterStatsStmt: retval = _equalAlterStatsStmt(a, b); break; case T_CreateFunctionStmt: retval = _equalCreateFunctionStmt(a, b); break; case T_FunctionParameter: retval = _equalFunctionParameter(a, b); break; case T_AlterFunctionStmt: retval = _equalAlterFunctionStmt(a, b); break; case T_DoStmt: retval = _equalDoStmt(a, b); break; case T_RenameStmt: retval = _equalRenameStmt(a, b); break; case T_AlterObjectDependsStmt: retval = _equalAlterObjectDependsStmt(a, b); break; case T_AlterObjectSchemaStmt: retval = _equalAlterObjectSchemaStmt(a, b); break; case T_AlterOwnerStmt: retval = _equalAlterOwnerStmt(a, b); break; case T_AlterOperatorStmt: retval = _equalAlterOperatorStmt(a, b); break; case T_AlterTypeStmt: retval = _equalAlterTypeStmt(a, b); break; case T_RuleStmt: retval = _equalRuleStmt(a, b); break; case T_NotifyStmt: retval = _equalNotifyStmt(a, b); break; case T_ListenStmt: retval = _equalListenStmt(a, b); break; case T_UnlistenStmt: retval = _equalUnlistenStmt(a, b); break; case T_TransactionStmt: retval = _equalTransactionStmt(a, b); break; case T_CompositeTypeStmt: retval = _equalCompositeTypeStmt(a, b); break; case T_CreateEnumStmt: retval = _equalCreateEnumStmt(a, b); break; case T_CreateRangeStmt: retval = _equalCreateRangeStmt(a, b); break; case T_AlterEnumStmt: retval = _equalAlterEnumStmt(a, b); break; case T_ViewStmt: retval = _equalViewStmt(a, b); break; case T_LoadStmt: retval = _equalLoadStmt(a, b); break; case T_CreateDomainStmt: retval = _equalCreateDomainStmt(a, b); break; case T_CreateOpClassStmt: retval = _equalCreateOpClassStmt(a, b); break; case T_CreateOpClassItem: retval = _equalCreateOpClassItem(a, b); break; case T_CreateOpFamilyStmt: retval = _equalCreateOpFamilyStmt(a, b); break; case T_AlterOpFamilyStmt: retval = _equalAlterOpFamilyStmt(a, b); break; case T_CreatedbStmt: retval = _equalCreatedbStmt(a, b); break; case T_AlterDatabaseStmt: retval = _equalAlterDatabaseStmt(a, b); break; case T_AlterDatabaseSetStmt: retval = _equalAlterDatabaseSetStmt(a, b); break; case T_DropdbStmt: retval = _equalDropdbStmt(a, b); break; case T_VacuumStmt: retval = _equalVacuumStmt(a, b); break; case T_VacuumRelation: retval = _equalVacuumRelation(a, b); break; case T_ExplainStmt: retval = _equalExplainStmt(a, b); break; case T_CreateTableAsStmt: retval = _equalCreateTableAsStmt(a, b); break; case T_RefreshMatViewStmt: retval = _equalRefreshMatViewStmt(a, b); break; case T_ReplicaIdentityStmt: retval = _equalReplicaIdentityStmt(a, b); break; case T_AlterSystemStmt: retval = _equalAlterSystemStmt(a, b); break; case T_CreateSeqStmt: retval = _equalCreateSeqStmt(a, b); break; case T_AlterSeqStmt: retval = _equalAlterSeqStmt(a, b); break; case T_VariableSetStmt: retval = _equalVariableSetStmt(a, b); break; case T_VariableShowStmt: retval = _equalVariableShowStmt(a, b); break; case T_DiscardStmt: retval = _equalDiscardStmt(a, b); break; case T_CreateTableSpaceStmt: retval = _equalCreateTableSpaceStmt(a, b); break; case T_DropTableSpaceStmt: retval = _equalDropTableSpaceStmt(a, b); break; case T_AlterTableSpaceOptionsStmt: retval = _equalAlterTableSpaceOptionsStmt(a, b); break; case T_AlterTableMoveAllStmt: retval = _equalAlterTableMoveAllStmt(a, b); break; case T_CreateExtensionStmt: retval = _equalCreateExtensionStmt(a, b); break; case T_AlterExtensionStmt: retval = _equalAlterExtensionStmt(a, b); break; case T_AlterExtensionContentsStmt: retval = _equalAlterExtensionContentsStmt(a, b); break; case T_CreateFdwStmt: retval = _equalCreateFdwStmt(a, b); break; case T_AlterFdwStmt: retval = _equalAlterFdwStmt(a, b); break; case T_CreateForeignServerStmt: retval = _equalCreateForeignServerStmt(a, b); break; case T_AlterForeignServerStmt: retval = _equalAlterForeignServerStmt(a, b); break; case T_CreateUserMappingStmt: retval = _equalCreateUserMappingStmt(a, b); break; case T_AlterUserMappingStmt: retval = _equalAlterUserMappingStmt(a, b); break; case T_DropUserMappingStmt: retval = _equalDropUserMappingStmt(a, b); break; case T_CreateForeignTableStmt: retval = _equalCreateForeignTableStmt(a, b); break; case T_ImportForeignSchemaStmt: retval = _equalImportForeignSchemaStmt(a, b); break; case T_CreateTransformStmt: retval = _equalCreateTransformStmt(a, b); break; case T_CreateAmStmt: retval = _equalCreateAmStmt(a, b); break; case T_CreateTrigStmt: retval = _equalCreateTrigStmt(a, b); break; case T_CreateEventTrigStmt: retval = _equalCreateEventTrigStmt(a, b); break; case T_AlterEventTrigStmt: retval = _equalAlterEventTrigStmt(a, b); break; case T_CreatePLangStmt: retval = _equalCreatePLangStmt(a, b); break; case T_CreateRoleStmt: retval = _equalCreateRoleStmt(a, b); break; case T_AlterRoleStmt: retval = _equalAlterRoleStmt(a, b); break; case T_AlterRoleSetStmt: retval = _equalAlterRoleSetStmt(a, b); break; case T_DropRoleStmt: retval = _equalDropRoleStmt(a, b); break; case T_LockStmt: retval = _equalLockStmt(a, b); break; case T_ConstraintsSetStmt: retval = _equalConstraintsSetStmt(a, b); break; case T_ReindexStmt: retval = _equalReindexStmt(a, b); break; case T_CheckPointStmt: retval = true; break; case T_CreateSchemaStmt: retval = _equalCreateSchemaStmt(a, b); break; case T_CreateConversionStmt: retval = _equalCreateConversionStmt(a, b); break; case T_CreateCastStmt: retval = _equalCreateCastStmt(a, b); break; case T_PrepareStmt: retval = _equalPrepareStmt(a, b); break; case T_ExecuteStmt: retval = _equalExecuteStmt(a, b); break; case T_DeallocateStmt: retval = _equalDeallocateStmt(a, b); break; case T_DropOwnedStmt: retval = _equalDropOwnedStmt(a, b); break; case T_ReassignOwnedStmt: retval = _equalReassignOwnedStmt(a, b); break; case T_AlterTSDictionaryStmt: retval = _equalAlterTSDictionaryStmt(a, b); break; case T_AlterTSConfigurationStmt: retval = _equalAlterTSConfigurationStmt(a, b); break; case T_CreatePolicyStmt: retval = _equalCreatePolicyStmt(a, b); break; case T_AlterPolicyStmt: retval = _equalAlterPolicyStmt(a, b); break; case T_CreatePublicationStmt: retval = _equalCreatePublicationStmt(a, b); break; case T_AlterPublicationStmt: retval = _equalAlterPublicationStmt(a, b); break; case T_CreateSubscriptionStmt: retval = _equalCreateSubscriptionStmt(a, b); break; case T_AlterSubscriptionStmt: retval = _equalAlterSubscriptionStmt(a, b); break; case T_DropSubscriptionStmt: retval = _equalDropSubscriptionStmt(a, b); break; case T_A_Expr: retval = _equalAExpr(a, b); break; case T_ColumnRef: retval = _equalColumnRef(a, b); break; case T_ParamRef: retval = _equalParamRef(a, b); break; case T_A_Const: retval = _equalAConst(a, b); break; case T_FuncCall: retval = _equalFuncCall(a, b); break; case T_A_Star: retval = _equalAStar(a, b); break; case T_A_Indices: retval = _equalAIndices(a, b); break; case T_A_Indirection: retval = _equalA_Indirection(a, b); break; case T_A_ArrayExpr: retval = _equalA_ArrayExpr(a, b); break; case T_ResTarget: retval = _equalResTarget(a, b); break; case T_MultiAssignRef: retval = _equalMultiAssignRef(a, b); break; case T_TypeCast: retval = _equalTypeCast(a, b); break; case T_CollateClause: retval = _equalCollateClause(a, b); break; case T_SortBy: retval = _equalSortBy(a, b); break; case T_WindowDef: retval = _equalWindowDef(a, b); break; case T_RangeSubselect: retval = _equalRangeSubselect(a, b); break; case T_RangeFunction: retval = _equalRangeFunction(a, b); break; case T_RangeTableSample: retval = _equalRangeTableSample(a, b); break; case T_RangeTableFunc: retval = _equalRangeTableFunc(a, b); break; case T_RangeTableFuncCol: retval = _equalRangeTableFuncCol(a, b); break; case T_TypeName: retval = _equalTypeName(a, b); break; case T_IndexElem: retval = _equalIndexElem(a, b); break; case T_ColumnDef: retval = _equalColumnDef(a, b); break; case T_Constraint: retval = _equalConstraint(a, b); break; case T_DefElem: retval = _equalDefElem(a, b); break; case T_LockingClause: retval = _equalLockingClause(a, b); break; case T_RangeTblEntry: retval = _equalRangeTblEntry(a, b); break; case T_RangeTblFunction: retval = _equalRangeTblFunction(a, b); break; case T_TableSampleClause: retval = _equalTableSampleClause(a, b); break; case T_WithCheckOption: retval = _equalWithCheckOption(a, b); break; case T_SortGroupClause: retval = _equalSortGroupClause(a, b); break; case T_GroupingSet: retval = _equalGroupingSet(a, b); break; case T_WindowClause: retval = _equalWindowClause(a, b); break; case T_RowMarkClause: retval = _equalRowMarkClause(a, b); break; case T_WithClause: retval = _equalWithClause(a, b); break; case T_InferClause: retval = _equalInferClause(a, b); break; case T_OnConflictClause: retval = _equalOnConflictClause(a, b); break; case T_CommonTableExpr: retval = _equalCommonTableExpr(a, b); break; case T_ObjectWithArgs: retval = _equalObjectWithArgs(a, b); break; case T_AccessPriv: retval = _equalAccessPriv(a, b); break; case T_XmlSerialize: retval = _equalXmlSerialize(a, b); break; case T_RoleSpec: retval = _equalRoleSpec(a, b); break; case T_TriggerTransition: retval = _equalTriggerTransition(a, b); break; case T_PartitionElem: retval = _equalPartitionElem(a, b); break; case T_PartitionSpec: retval = _equalPartitionSpec(a, b); break; case T_PartitionBoundSpec: retval = _equalPartitionBoundSpec(a, b); break; case T_PartitionRangeDatum: retval = _equalPartitionRangeDatum(a, b); break; case T_PartitionCmd: retval = _equalPartitionCmd(a, b); break; default: elog(ERROR, "unrecognized node type: %d", (int) nodeTag(a)); retval = false; /* keep compiler quiet */ break; } return retval; } libpg_query-13-2.1.0/src/postgres/src_backend_nodes_extensible.c000066400000000000000000000046511413137616400247420ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - GetExtensibleNodeMethods * - GetExtensibleNodeEntry * - extensible_node_methods *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * extensible.c * Support for extensible node types * * Loadable modules can define what are in effect new types of nodes using * the routines in this file. All such nodes are flagged T_ExtensibleNode, * with the extnodename field distinguishing the specific type. Use * RegisterExtensibleNodeMethods to register a new type of extensible node, * and GetExtensibleNodeMethods to get information about a previously * registered type of extensible node. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/nodes/extensible.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "nodes/extensible.h" #include "utils/hsearch.h" static __thread HTAB *extensible_node_methods = NULL; typedef struct { char extnodename[EXTNODENAME_MAX_LEN]; const void *extnodemethods; } ExtensibleNodeEntry; /* * An internal function to register a new callback structure */ /* * Register a new type of extensible node. */ /* * Register a new type of custom scan node */ /* * An internal routine to get an ExtensibleNodeEntry by the given identifier */ static const void * GetExtensibleNodeEntry(HTAB *htable, const char *extnodename, bool missing_ok) { ExtensibleNodeEntry *entry = NULL; if (htable != NULL) entry = (ExtensibleNodeEntry *) hash_search(htable, extnodename, HASH_FIND, NULL); if (!entry) { if (missing_ok) return NULL; ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("ExtensibleNodeMethods \"%s\" was not registered", extnodename))); } return entry->extnodemethods; } /* * Get the methods for a given type of extensible node. */ const ExtensibleNodeMethods * GetExtensibleNodeMethods(const char *extnodename, bool missing_ok) { return (const ExtensibleNodeMethods *) GetExtensibleNodeEntry(extensible_node_methods, extnodename, missing_ok); } /* * Get the methods for a given name of CustomScanMethods */ libpg_query-13-2.1.0/src/postgres/src_backend_nodes_list.c000066400000000000000000000573741413137616400235650ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - lappend * - new_list * - new_tail_cell * - enlarge_list * - check_list_invariants * - list_make1_impl * - list_make2_impl * - list_concat * - list_copy * - lcons * - new_head_cell * - list_make3_impl * - list_make4_impl * - list_delete_cell * - list_delete_nth_cell * - list_free * - list_free_private * - list_copy_deep * - list_copy_tail * - list_truncate *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * list.c * implementation for PostgreSQL generic list package * * See comments in pg_list.h. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/nodes/list.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "nodes/pg_list.h" #include "port/pg_bitutils.h" #include "utils/memdebug.h" #include "utils/memutils.h" /* * The previous List implementation, since it used a separate palloc chunk * for each cons cell, had the property that adding or deleting list cells * did not move the storage of other existing cells in the list. Quite a * bit of existing code depended on that, by retaining ListCell pointers * across such operations on a list. There is no such guarantee in this * implementation, so instead we have debugging support that is meant to * help flush out now-broken assumptions. Defining DEBUG_LIST_MEMORY_USAGE * while building this file causes the List operations to forcibly move * all cells in a list whenever a cell is added or deleted. In combination * with MEMORY_CONTEXT_CHECKING and/or Valgrind, this can usually expose * broken code. It's a bit expensive though, as there's many more palloc * cycles and a lot more data-copying than in a default build. * * By default, we enable this when building for Valgrind. */ #ifdef USE_VALGRIND #define DEBUG_LIST_MEMORY_USAGE #endif /* Overhead for the fixed part of a List header, measured in ListCells */ #define LIST_HEADER_OVERHEAD \ ((int) ((offsetof(List, initial_elements) - 1) / sizeof(ListCell) + 1)) /* * Macros to simplify writing assertions about the type of a list; a * NIL list is considered to be an empty list of any type. */ #define IsPointerList(l) ((l) == NIL || IsA((l), List)) #define IsIntegerList(l) ((l) == NIL || IsA((l), IntList)) #define IsOidList(l) ((l) == NIL || IsA((l), OidList)) #ifdef USE_ASSERT_CHECKING /* * Check that the specified List is valid (so far as we can tell). */ static void check_list_invariants(const List *list) { if (list == NIL) return; Assert(list->length > 0); Assert(list->length <= list->max_length); Assert(list->elements != NULL); Assert(list->type == T_List || list->type == T_IntList || list->type == T_OidList); } #else #define check_list_invariants(l) ((void) 0) #endif /* USE_ASSERT_CHECKING */ /* * Return a freshly allocated List with room for at least min_size cells. * * Since empty non-NIL lists are invalid, new_list() sets the initial length * to min_size, effectively marking that number of cells as valid; the caller * is responsible for filling in their data. */ static List * new_list(NodeTag type, int min_size) { List *newlist; int max_size; Assert(min_size > 0); /* * We allocate all the requested cells, and possibly some more, as part of * the same palloc request as the List header. This is a big win for the * typical case of short fixed-length lists. It can lose if we allocate a * moderately long list and then it gets extended; we'll be wasting more * initial_elements[] space than if we'd made the header small. However, * rounding up the request as we do in the normal code path provides some * defense against small extensions. */ #ifndef DEBUG_LIST_MEMORY_USAGE /* * Normally, we set up a list with some extra cells, to allow it to grow * without a repalloc. Prefer cell counts chosen to make the total * allocation a power-of-2, since palloc would round it up to that anyway. * (That stops being true for very large allocations, but very long lists * are infrequent, so it doesn't seem worth special logic for such cases.) * * The minimum allocation is 8 ListCell units, providing either 4 or 5 * available ListCells depending on the machine's word width. Counting * palloc's overhead, this uses the same amount of space as a one-cell * list did in the old implementation, and less space for any longer list. * * We needn't worry about integer overflow; no caller passes min_size * that's more than twice the size of an existing list, so the size limits * within palloc will ensure that we don't overflow here. */ max_size = pg_nextpower2_32(Max(8, min_size + LIST_HEADER_OVERHEAD)); max_size -= LIST_HEADER_OVERHEAD; #else /* * For debugging, don't allow any extra space. This forces any cell * addition to go through enlarge_list() and thus move the existing data. */ max_size = min_size; #endif newlist = (List *) palloc(offsetof(List, initial_elements) + max_size * sizeof(ListCell)); newlist->type = type; newlist->length = min_size; newlist->max_length = max_size; newlist->elements = newlist->initial_elements; return newlist; } /* * Enlarge an existing non-NIL List to have room for at least min_size cells. * * This does *not* update list->length, as some callers would find that * inconvenient. (list->length had better be the correct number of existing * valid cells, though.) */ static void enlarge_list(List *list, int min_size) { int new_max_len; Assert(min_size > list->max_length); /* else we shouldn't be here */ #ifndef DEBUG_LIST_MEMORY_USAGE /* * As above, we prefer power-of-two total allocations; but here we need * not account for list header overhead. */ /* clamp the minimum value to 16, a semi-arbitrary small power of 2 */ new_max_len = pg_nextpower2_32(Max(16, min_size)); #else /* As above, don't allocate anything extra */ new_max_len = min_size; #endif if (list->elements == list->initial_elements) { /* * Replace original in-line allocation with a separate palloc block. * Ensure it is in the same memory context as the List header. (The * previous List implementation did not offer any guarantees about * keeping all list cells in the same context, but it seems reasonable * to create such a guarantee now.) */ list->elements = (ListCell *) MemoryContextAlloc(GetMemoryChunkContext(list), new_max_len * sizeof(ListCell)); memcpy(list->elements, list->initial_elements, list->length * sizeof(ListCell)); /* * We must not move the list header, so it's unsafe to try to reclaim * the initial_elements[] space via repalloc. In debugging builds, * however, we can clear that space and/or mark it inaccessible. * (wipe_mem includes VALGRIND_MAKE_MEM_NOACCESS.) */ #ifdef CLOBBER_FREED_MEMORY wipe_mem(list->initial_elements, list->max_length * sizeof(ListCell)); #else VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements, list->max_length * sizeof(ListCell)); #endif } else { #ifndef DEBUG_LIST_MEMORY_USAGE /* Normally, let repalloc deal with enlargement */ list->elements = (ListCell *) repalloc(list->elements, new_max_len * sizeof(ListCell)); #else /* * repalloc() might enlarge the space in-place, which we don't want * for debugging purposes, so forcibly move the data somewhere else. */ ListCell *newelements; newelements = (ListCell *) MemoryContextAlloc(GetMemoryChunkContext(list), new_max_len * sizeof(ListCell)); memcpy(newelements, list->elements, list->length * sizeof(ListCell)); pfree(list->elements); list->elements = newelements; #endif } list->max_length = new_max_len; } /* * Convenience functions to construct short Lists from given values. * (These are normally invoked via the list_makeN macros.) */ List * list_make1_impl(NodeTag t, ListCell datum1) { List *list = new_list(t, 1); list->elements[0] = datum1; check_list_invariants(list); return list; } List * list_make2_impl(NodeTag t, ListCell datum1, ListCell datum2) { List *list = new_list(t, 2); list->elements[0] = datum1; list->elements[1] = datum2; check_list_invariants(list); return list; } List * list_make3_impl(NodeTag t, ListCell datum1, ListCell datum2, ListCell datum3) { List *list = new_list(t, 3); list->elements[0] = datum1; list->elements[1] = datum2; list->elements[2] = datum3; check_list_invariants(list); return list; } List * list_make4_impl(NodeTag t, ListCell datum1, ListCell datum2, ListCell datum3, ListCell datum4) { List *list = new_list(t, 4); list->elements[0] = datum1; list->elements[1] = datum2; list->elements[2] = datum3; list->elements[3] = datum4; check_list_invariants(list); return list; } /* * Make room for a new head cell in the given (non-NIL) list. * * The data in the new head cell is undefined; the caller should be * sure to fill it in */ static void new_head_cell(List *list) { /* Enlarge array if necessary */ if (list->length >= list->max_length) enlarge_list(list, list->length + 1); /* Now shove the existing data over */ memmove(&list->elements[1], &list->elements[0], list->length * sizeof(ListCell)); list->length++; } /* * Make room for a new tail cell in the given (non-NIL) list. * * The data in the new tail cell is undefined; the caller should be * sure to fill it in */ static void new_tail_cell(List *list) { /* Enlarge array if necessary */ if (list->length >= list->max_length) enlarge_list(list, list->length + 1); list->length++; } /* * Append a pointer to the list. A pointer to the modified list is * returned. Note that this function may or may not destructively * modify the list; callers should always use this function's return * value, rather than continuing to use the pointer passed as the * first argument. */ List * lappend(List *list, void *datum) { Assert(IsPointerList(list)); if (list == NIL) list = new_list(T_List, 1); else new_tail_cell(list); lfirst(list_tail(list)) = datum; check_list_invariants(list); return list; } /* * Append an integer to the specified list. See lappend() */ /* * Append an OID to the specified list. See lappend() */ /* * Make room for a new cell at position 'pos' (measured from 0). * The data in the cell is left undefined, and must be filled in by the * caller. 'list' is assumed to be non-NIL, and 'pos' must be a valid * list position, ie, 0 <= pos <= list's length. * Returns address of the new cell. */ /* * Insert the given datum at position 'pos' (measured from 0) in the list. * 'pos' must be valid, ie, 0 <= pos <= list's length. */ /* * Prepend a new element to the list. A pointer to the modified list * is returned. Note that this function may or may not destructively * modify the list; callers should always use this function's return * value, rather than continuing to use the pointer passed as the * second argument. * * Caution: before Postgres 8.0, the original List was unmodified and * could be considered to retain its separate identity. This is no longer * the case. */ List * lcons(void *datum, List *list) { Assert(IsPointerList(list)); if (list == NIL) list = new_list(T_List, 1); else new_head_cell(list); lfirst(list_head(list)) = datum; check_list_invariants(list); return list; } /* * Prepend an integer to the list. See lcons() */ /* * Prepend an OID to the list. See lcons() */ /* * Concatenate list2 to the end of list1, and return list1. * * This is equivalent to lappend'ing each element of list2, in order, to list1. * list1 is destructively changed, list2 is not. (However, in the case of * pointer lists, list1 and list2 will point to the same structures.) * * Callers should be sure to use the return value as the new pointer to the * concatenated list: the 'list1' input pointer may or may not be the same * as the returned pointer. */ List * list_concat(List *list1, const List *list2) { int new_len; if (list1 == NIL) return list_copy(list2); if (list2 == NIL) return list1; Assert(list1->type == list2->type); new_len = list1->length + list2->length; /* Enlarge array if necessary */ if (new_len > list1->max_length) enlarge_list(list1, new_len); /* Even if list1 == list2, using memcpy should be safe here */ memcpy(&list1->elements[list1->length], &list2->elements[0], list2->length * sizeof(ListCell)); list1->length = new_len; check_list_invariants(list1); return list1; } /* * Form a new list by concatenating the elements of list1 and list2. * * Neither input list is modified. (However, if they are pointer lists, * the output list will point to the same structures.) * * This is equivalent to, but more efficient than, * list_concat(list_copy(list1), list2). * Note that some pre-v13 code might list_copy list2 as well, but that's * pointless now. */ /* * Truncate 'list' to contain no more than 'new_size' elements. This * modifies the list in-place! Despite this, callers should use the * pointer returned by this function to refer to the newly truncated * list -- it may or may not be the same as the pointer that was * passed. * * Note that any cells removed by list_truncate() are NOT pfree'd. */ List * list_truncate(List *list, int new_size) { if (new_size <= 0) return NIL; /* truncate to zero length */ /* If asked to effectively extend the list, do nothing */ if (new_size < list_length(list)) list->length = new_size; /* * Note: unlike the individual-list-cell deletion functions, we don't move * the list cells to new storage, even in DEBUG_LIST_MEMORY_USAGE mode. * This is because none of them can move in this operation, so just like * in the old cons-cell-based implementation, this function doesn't * invalidate any pointers to cells of the list. This is also the reason * for not wiping the memory of the deleted cells: the old code didn't * free them either. Perhaps later we'll tighten this up. */ return list; } /* * Return true iff 'datum' is a member of the list. Equality is * determined via equal(), so callers should ensure that they pass a * Node as 'datum'. */ /* * Return true iff 'datum' is a member of the list. Equality is * determined by using simple pointer comparison. */ /* * Return true iff the integer 'datum' is a member of the list. */ /* * Return true iff the OID 'datum' is a member of the list. */ /* * Delete the n'th cell (counting from 0) in list. * * The List is pfree'd if this was the last member. */ List * list_delete_nth_cell(List *list, int n) { check_list_invariants(list); Assert(n >= 0 && n < list->length); /* * If we're about to delete the last node from the list, free the whole * list instead and return NIL, which is the only valid representation of * a zero-length list. */ if (list->length == 1) { list_free(list); return NIL; } /* * Otherwise, we normally just collapse out the removed element. But for * debugging purposes, move the whole list contents someplace else. * * (Note that we *must* keep the contents in the same memory context.) */ #ifndef DEBUG_LIST_MEMORY_USAGE memmove(&list->elements[n], &list->elements[n + 1], (list->length - 1 - n) * sizeof(ListCell)); list->length--; #else { ListCell *newelems; int newmaxlen = list->length - 1; newelems = (ListCell *) MemoryContextAlloc(GetMemoryChunkContext(list), newmaxlen * sizeof(ListCell)); memcpy(newelems, list->elements, n * sizeof(ListCell)); memcpy(&newelems[n], &list->elements[n + 1], (list->length - 1 - n) * sizeof(ListCell)); if (list->elements != list->initial_elements) pfree(list->elements); else { /* * As in enlarge_list(), clear the initial_elements[] space and/or * mark it inaccessible. */ #ifdef CLOBBER_FREED_MEMORY wipe_mem(list->initial_elements, list->max_length * sizeof(ListCell)); #else VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements, list->max_length * sizeof(ListCell)); #endif } list->elements = newelems; list->max_length = newmaxlen; list->length--; check_list_invariants(list); } #endif return list; } /* * Delete 'cell' from 'list'. * * The List is pfree'd if this was the last member. However, we do not * touch any data the cell might've been pointing to. */ List * list_delete_cell(List *list, ListCell *cell) { return list_delete_nth_cell(list, cell - list->elements); } /* * Delete the first cell in list that matches datum, if any. * Equality is determined via equal(). */ /* As above, but use simple pointer equality */ /* As above, but for integers */ /* As above, but for OIDs */ /* * Delete the first element of the list. * * This is useful to replace the Lisp-y code "list = lnext(list);" in cases * where the intent is to alter the list rather than just traverse it. * Beware that the list is modified, whereas the Lisp-y coding leaves * the original list head intact in case there's another pointer to it. */ /* * Delete the last element of the list. * * This is the opposite of list_delete_first(), but is noticeably cheaper * with a long list, since no data need be moved. */ /* * Generate the union of two lists. This is calculated by copying * list1 via list_copy(), then adding to it all the members of list2 * that aren't already in list1. * * Whether an element is already a member of the list is determined * via equal(). * * The returned list is newly-allocated, although the content of the * cells is the same (i.e. any pointed-to objects are not copied). * * NB: this function will NOT remove any duplicates that are present * in list1 (so it only performs a "union" if list1 is known unique to * start with). Also, if you are about to write "x = list_union(x, y)" * you probably want to use list_concat_unique() instead to avoid wasting * the storage of the old x list. * * This function could probably be implemented a lot faster if it is a * performance bottleneck. */ /* * This variant of list_union() determines duplicates via simple * pointer comparison. */ /* * This variant of list_union() operates upon lists of integers. */ /* * This variant of list_union() operates upon lists of OIDs. */ /* * Return a list that contains all the cells that are in both list1 and * list2. The returned list is freshly allocated via palloc(), but the * cells themselves point to the same objects as the cells of the * input lists. * * Duplicate entries in list1 will not be suppressed, so it's only a true * "intersection" if list1 is known unique beforehand. * * This variant works on lists of pointers, and determines list * membership via equal(). Note that the list1 member will be pointed * to in the result. */ /* * As list_intersection but operates on lists of integers. */ /* * Return a list that contains all the cells in list1 that are not in * list2. The returned list is freshly allocated via palloc(), but the * cells themselves point to the same objects as the cells of the * input lists. * * This variant works on lists of pointers, and determines list * membership via equal() */ /* * This variant of list_difference() determines list membership via * simple pointer equality. */ /* * This variant of list_difference() operates upon lists of integers. */ /* * This variant of list_difference() operates upon lists of OIDs. */ /* * Append datum to list, but only if it isn't already in the list. * * Whether an element is already a member of the list is determined * via equal(). */ /* * This variant of list_append_unique() determines list membership via * simple pointer equality. */ /* * This variant of list_append_unique() operates upon lists of integers. */ /* * This variant of list_append_unique() operates upon lists of OIDs. */ /* * Append to list1 each member of list2 that isn't already in list1. * * Whether an element is already a member of the list is determined * via equal(). * * This is almost the same functionality as list_union(), but list1 is * modified in-place rather than being copied. However, callers of this * function may have strict ordering expectations -- i.e. that the relative * order of those list2 elements that are not duplicates is preserved. */ /* * This variant of list_concat_unique() determines list membership via * simple pointer equality. */ /* * This variant of list_concat_unique() operates upon lists of integers. */ /* * This variant of list_concat_unique() operates upon lists of OIDs. */ /* * Remove adjacent duplicates in a list of OIDs. * * It is caller's responsibility to have sorted the list to bring duplicates * together, perhaps via list_sort(list, list_oid_cmp). */ /* * Free all storage in a list, and optionally the pointed-to elements */ static void list_free_private(List *list, bool deep) { if (list == NIL) return; /* nothing to do */ check_list_invariants(list); if (deep) { for (int i = 0; i < list->length; i++) pfree(lfirst(&list->elements[i])); } if (list->elements != list->initial_elements) pfree(list->elements); pfree(list); } /* * Free all the cells of the list, as well as the list itself. Any * objects that are pointed-to by the cells of the list are NOT * free'd. * * On return, the argument to this function has been freed, so the * caller would be wise to set it to NIL for safety's sake. */ void list_free(List *list) { list_free_private(list, false); } /* * Free all the cells of the list, the list itself, and all the * objects pointed-to by the cells of the list (each element in the * list must contain a pointer to a palloc()'d region of memory!) * * On return, the argument to this function has been freed, so the * caller would be wise to set it to NIL for safety's sake. */ /* * Return a shallow copy of the specified list. */ List * list_copy(const List *oldlist) { List *newlist; if (oldlist == NIL) return NIL; newlist = new_list(oldlist->type, oldlist->length); memcpy(newlist->elements, oldlist->elements, newlist->length * sizeof(ListCell)); check_list_invariants(newlist); return newlist; } /* * Return a shallow copy of the specified list, without the first N elements. */ List * list_copy_tail(const List *oldlist, int nskip) { List *newlist; if (nskip < 0) nskip = 0; /* would it be better to elog? */ if (oldlist == NIL || nskip >= oldlist->length) return NIL; newlist = new_list(oldlist->type, oldlist->length - nskip); memcpy(newlist->elements, &oldlist->elements[nskip], newlist->length * sizeof(ListCell)); check_list_invariants(newlist); return newlist; } /* * Return a deep copy of the specified list. * * The list elements are copied via copyObject(), so that this function's * idea of a "deep" copy is considerably deeper than what list_free_deep() * means by the same word. */ List * list_copy_deep(const List *oldlist) { List *newlist; if (oldlist == NIL) return NIL; /* This is only sensible for pointer Lists */ Assert(IsA(oldlist, List)); newlist = new_list(oldlist->type, oldlist->length); for (int i = 0; i < newlist->length; i++) lfirst(&newlist->elements[i]) = copyObjectImpl(lfirst(&oldlist->elements[i])); check_list_invariants(newlist); return newlist; } /* * Sort a list according to the specified comparator function. * * The list is sorted in-place. * * The comparator function is declared to receive arguments of type * const ListCell *; this allows it to use lfirst() and variants * without casting its arguments. Otherwise it behaves the same as * the comparator function for standard qsort(). * * Like qsort(), this provides no guarantees about sort stability * for equal keys. */ /* * list_sort comparator for sorting a list into ascending OID order. */ libpg_query-13-2.1.0/src/postgres/src_backend_nodes_makefuncs.c000066400000000000000000000205641413137616400245550ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - makeDefElem * - makeTypeNameFromNameList * - makeDefElemExtended * - makeVacuumRelation * - makeAlias * - makeSimpleA_Expr * - makeGroupingSet * - makeTypeName * - makeFuncCall * - makeA_Expr * - makeRangeVar * - makeBoolExpr *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * makefuncs.c * creator functions for various nodes. The functions here are for the * most frequently created nodes. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/nodes/makefuncs.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "catalog/pg_class.h" #include "catalog/pg_type.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "utils/lsyscache.h" /* * makeA_Expr - * makes an A_Expr node */ A_Expr * makeA_Expr(A_Expr_Kind kind, List *name, Node *lexpr, Node *rexpr, int location) { A_Expr *a = makeNode(A_Expr); a->kind = kind; a->name = name; a->lexpr = lexpr; a->rexpr = rexpr; a->location = location; return a; } /* * makeSimpleA_Expr - * As above, given a simple (unqualified) operator name */ A_Expr * makeSimpleA_Expr(A_Expr_Kind kind, char *name, Node *lexpr, Node *rexpr, int location) { A_Expr *a = makeNode(A_Expr); a->kind = kind; a->name = list_make1(makeString((char *) name)); a->lexpr = lexpr; a->rexpr = rexpr; a->location = location; return a; } /* * makeVar - * creates a Var node */ /* * makeVarFromTargetEntry - * convenience function to create a same-level Var node from a * TargetEntry */ /* * makeWholeRowVar - * creates a Var node representing a whole row of the specified RTE * * A whole-row reference is a Var with varno set to the correct range * table entry, and varattno == 0 to signal that it references the whole * tuple. (Use of zero here is unclean, since it could easily be confused * with error cases, but it's not worth changing now.) The vartype indicates * a rowtype; either a named composite type, or a domain over a named * composite type (only possible if the RTE is a function returning that), * or RECORD. This function encapsulates the logic for determining the * correct rowtype OID to use. * * If allowScalar is true, then for the case where the RTE is a single function * returning a non-composite result type, we produce a normal Var referencing * the function's result directly, instead of the single-column composite * value that the whole-row notation might otherwise suggest. */ /* * makeTargetEntry - * creates a TargetEntry node */ /* * flatCopyTargetEntry - * duplicate a TargetEntry, but don't copy substructure * * This is commonly used when we just want to modify the resno or substitute * a new expression. */ /* * makeFromExpr - * creates a FromExpr node */ /* * makeConst - * creates a Const node */ /* * makeNullConst - * creates a Const node representing a NULL of the specified type/typmod * * This is a convenience routine that just saves a lookup of the type's * storage properties. */ /* * makeBoolConst - * creates a Const node representing a boolean value (can be NULL too) */ /* * makeBoolExpr - * creates a BoolExpr node */ Expr * makeBoolExpr(BoolExprType boolop, List *args, int location) { BoolExpr *b = makeNode(BoolExpr); b->boolop = boolop; b->args = args; b->location = location; return (Expr *) b; } /* * makeAlias - * creates an Alias node * * NOTE: the given name is copied, but the colnames list (if any) isn't. */ Alias * makeAlias(const char *aliasname, List *colnames) { Alias *a = makeNode(Alias); a->aliasname = pstrdup(aliasname); a->colnames = colnames; return a; } /* * makeRelabelType - * creates a RelabelType node */ /* * makeRangeVar - * creates a RangeVar node (rather oversimplified case) */ RangeVar * makeRangeVar(char *schemaname, char *relname, int location) { RangeVar *r = makeNode(RangeVar); r->catalogname = NULL; r->schemaname = schemaname; r->relname = relname; r->inh = true; r->relpersistence = RELPERSISTENCE_PERMANENT; r->alias = NULL; r->location = location; return r; } /* * makeTypeName - * build a TypeName node for an unqualified name. * * typmod is defaulted, but can be changed later by caller. */ TypeName * makeTypeName(char *typnam) { return makeTypeNameFromNameList(list_make1(makeString(typnam))); } /* * makeTypeNameFromNameList - * build a TypeName node for a String list representing a qualified name. * * typmod is defaulted, but can be changed later by caller. */ TypeName * makeTypeNameFromNameList(List *names) { TypeName *n = makeNode(TypeName); n->names = names; n->typmods = NIL; n->typemod = -1; n->location = -1; return n; } /* * makeTypeNameFromOid - * build a TypeName node to represent a type already known by OID/typmod. */ /* * makeColumnDef - * build a ColumnDef node to represent a simple column definition. * * Type and collation are specified by OID. * Other properties are all basic to start with. */ /* * makeFuncExpr - * build an expression tree representing a function call. * * The argument expressions must have been transformed already. */ /* * makeDefElem - * build a DefElem node * * This is sufficient for the "typical" case with an unqualified option name * and no special action. */ DefElem * makeDefElem(char *name, Node *arg, int location) { DefElem *res = makeNode(DefElem); res->defnamespace = NULL; res->defname = name; res->arg = arg; res->defaction = DEFELEM_UNSPEC; res->location = location; return res; } /* * makeDefElemExtended - * build a DefElem node with all fields available to be specified */ DefElem * makeDefElemExtended(char *nameSpace, char *name, Node *arg, DefElemAction defaction, int location) { DefElem *res = makeNode(DefElem); res->defnamespace = nameSpace; res->defname = name; res->arg = arg; res->defaction = defaction; res->location = location; return res; } /* * makeFuncCall - * * Initialize a FuncCall struct with the information every caller must * supply. Any non-default parameters have to be inserted by the caller. */ FuncCall * makeFuncCall(List *name, List *args, int location) { FuncCall *n = makeNode(FuncCall); n->funcname = name; n->args = args; n->agg_order = NIL; n->agg_filter = NULL; n->agg_within_group = false; n->agg_star = false; n->agg_distinct = false; n->func_variadic = false; n->over = NULL; n->location = location; return n; } /* * make_opclause * Creates an operator clause given its operator info, left operand * and right operand (pass NULL to create single-operand clause), * and collation info. */ /* * make_andclause * * Creates an 'and' clause given a list of its subclauses. */ /* * make_orclause * * Creates an 'or' clause given a list of its subclauses. */ /* * make_notclause * * Create a 'not' clause given the expression to be negated. */ /* * make_and_qual * * Variant of make_andclause for ANDing two qual conditions together. * Qual conditions have the property that a NULL nodetree is interpreted * as 'true'. * * NB: this makes no attempt to preserve AND/OR flatness; so it should not * be used on a qual that has already been run through prepqual.c. */ /* * The planner and executor usually represent qualification expressions * as lists of boolean expressions with implicit AND semantics. * * These functions convert between an AND-semantics expression list and the * ordinary representation of a boolean expression. * * Note that an empty list is considered equivalent to TRUE. */ /* * makeIndexInfo * create an IndexInfo node */ /* * makeGroupingSet * */ GroupingSet * makeGroupingSet(GroupingSetKind kind, List *content, int location) { GroupingSet *n = makeNode(GroupingSet); n->kind = kind; n->content = content; n->location = location; return n; } /* * makeVacuumRelation - * create a VacuumRelation node */ VacuumRelation * makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols) { VacuumRelation *v = makeNode(VacuumRelation); v->relation = relation; v->oid = oid; v->va_cols = va_cols; return v; } libpg_query-13-2.1.0/src/postgres/src_backend_nodes_nodeFuncs.c000066400000000000000000001213451413137616400245240ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - exprLocation * - leftmostLoc * - raw_expression_tree_walker *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * nodeFuncs.c * Various general-purpose manipulations of Node trees * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/nodes/nodeFuncs.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "catalog/pg_collation.h" #include "catalog/pg_type.h" #include "miscadmin.h" #include "nodes/execnodes.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "nodes/pathnodes.h" #include "utils/builtins.h" #include "utils/lsyscache.h" static bool expression_returns_set_walker(Node *node, void *context); static int leftmostLoc(int loc1, int loc2); static bool fix_opfuncids_walker(Node *node, void *context); static bool planstate_walk_subplans(List *plans, bool (*walker) (), void *context); static bool planstate_walk_members(PlanState **planstates, int nplans, bool (*walker) (), void *context); /* * exprType - * returns the Oid of the type of the expression's result. */ /* * exprTypmod - * returns the type-specific modifier of the expression's result type, * if it can be determined. In many cases, it can't and we return -1. */ /* * exprIsLengthCoercion * Detect whether an expression tree is an application of a datatype's * typmod-coercion function. Optionally extract the result's typmod. * * If coercedTypmod is not NULL, the typmod is stored there if the expression * is a length-coercion function, else -1 is stored there. * * Note that a combined type-and-length coercion will be treated as a * length coercion by this routine. */ /* * applyRelabelType * Add a RelabelType node if needed to make the expression expose * the specified type, typmod, and collation. * * This is primarily intended to be used during planning. Therefore, it must * maintain the post-eval_const_expressions invariants that there are not * adjacent RelabelTypes, and that the tree is fully const-folded (hence, * we mustn't return a RelabelType atop a Const). If we do find a Const, * we'll modify it in-place if "overwrite_ok" is true; that should only be * passed as true if caller knows the Const is newly generated. */ /* * relabel_to_typmod * Add a RelabelType node that changes just the typmod of the expression. * * Convenience function for a common usage of applyRelabelType. */ /* * strip_implicit_coercions: remove implicit coercions at top level of tree * * This doesn't modify or copy the input expression tree, just return a * pointer to a suitable place within it. * * Note: there isn't any useful thing we can do with a RowExpr here, so * just return it unchanged, even if it's marked as an implicit coercion. */ /* * expression_returns_set * Test whether an expression returns a set result. * * Because we use expression_tree_walker(), this can also be applied to * whole targetlists; it'll produce true if any one of the tlist items * returns a set. */ /* * exprCollation - * returns the Oid of the collation of the expression's result. * * Note: expression nodes that can invoke functions generally have an * "inputcollid" field, which is what the function should use as collation. * That is the resolved common collation of the node's inputs. It is often * but not always the same as the result collation; in particular, if the * function produces a non-collatable result type from collatable inputs * or vice versa, the two are different. */ /* * exprInputCollation - * returns the Oid of the collation a function should use, if available. * * Result is InvalidOid if the node type doesn't store this information. */ /* * exprSetCollation - * Assign collation information to an expression tree node. * * Note: since this is only used during parse analysis, we don't need to * worry about subplans or PlaceHolderVars. */ #ifdef USE_ASSERT_CHECKING #endif /* USE_ASSERT_CHECKING */ /* * exprSetInputCollation - * Assign input-collation information to an expression tree node. * * This is a no-op for node types that don't store their input collation. * Note we omit RowCompareExpr, which needs special treatment since it * contains multiple input collation OIDs. */ /* * exprLocation - * returns the parse location of an expression tree, for error reports * * -1 is returned if the location can't be determined. * * For expressions larger than a single token, the intent here is to * return the location of the expression's leftmost token, not necessarily * the topmost Node's location field. For example, an OpExpr's location * field will point at the operator name, but if it is not a prefix operator * then we should return the location of the left-hand operand instead. * The reason is that we want to reference the entire expression not just * that operator, and pointing to its start seems to be the most natural way. * * The location is not perfect --- for example, since the grammar doesn't * explicitly represent parentheses in the parsetree, given something that * had been written "(a + b) * c" we are going to point at "a" not "(". * But it should be plenty good enough for error reporting purposes. * * You might think that this code is overly general, for instance why check * the operands of a FuncExpr node, when the function name can be expected * to be to the left of them? There are a couple of reasons. The grammar * sometimes builds expressions that aren't quite what the user wrote; * for instance x IS NOT BETWEEN ... becomes a NOT-expression whose keyword * pointer is to the right of its leftmost argument. Also, nodes that were * inserted implicitly by parse analysis (such as FuncExprs for implicit * coercions) will have location -1, and so we can have odd combinations of * known and unknown locations in a tree. */ int exprLocation(const Node *expr) { int loc; if (expr == NULL) return -1; switch (nodeTag(expr)) { case T_RangeVar: loc = ((const RangeVar *) expr)->location; break; case T_TableFunc: loc = ((const TableFunc *) expr)->location; break; case T_Var: loc = ((const Var *) expr)->location; break; case T_Const: loc = ((const Const *) expr)->location; break; case T_Param: loc = ((const Param *) expr)->location; break; case T_Aggref: /* function name should always be the first thing */ loc = ((const Aggref *) expr)->location; break; case T_GroupingFunc: loc = ((const GroupingFunc *) expr)->location; break; case T_WindowFunc: /* function name should always be the first thing */ loc = ((const WindowFunc *) expr)->location; break; case T_SubscriptingRef: /* just use container argument's location */ loc = exprLocation((Node *) ((const SubscriptingRef *) expr)->refexpr); break; case T_FuncExpr: { const FuncExpr *fexpr = (const FuncExpr *) expr; /* consider both function name and leftmost arg */ loc = leftmostLoc(fexpr->location, exprLocation((Node *) fexpr->args)); } break; case T_NamedArgExpr: { const NamedArgExpr *na = (const NamedArgExpr *) expr; /* consider both argument name and value */ loc = leftmostLoc(na->location, exprLocation((Node *) na->arg)); } break; case T_OpExpr: case T_DistinctExpr: /* struct-equivalent to OpExpr */ case T_NullIfExpr: /* struct-equivalent to OpExpr */ { const OpExpr *opexpr = (const OpExpr *) expr; /* consider both operator name and leftmost arg */ loc = leftmostLoc(opexpr->location, exprLocation((Node *) opexpr->args)); } break; case T_ScalarArrayOpExpr: { const ScalarArrayOpExpr *saopexpr = (const ScalarArrayOpExpr *) expr; /* consider both operator name and leftmost arg */ loc = leftmostLoc(saopexpr->location, exprLocation((Node *) saopexpr->args)); } break; case T_BoolExpr: { const BoolExpr *bexpr = (const BoolExpr *) expr; /* * Same as above, to handle either NOT or AND/OR. We can't * special-case NOT because of the way that it's used for * things like IS NOT BETWEEN. */ loc = leftmostLoc(bexpr->location, exprLocation((Node *) bexpr->args)); } break; case T_SubLink: { const SubLink *sublink = (const SubLink *) expr; /* check the testexpr, if any, and the operator/keyword */ loc = leftmostLoc(exprLocation(sublink->testexpr), sublink->location); } break; case T_FieldSelect: /* just use argument's location */ loc = exprLocation((Node *) ((const FieldSelect *) expr)->arg); break; case T_FieldStore: /* just use argument's location */ loc = exprLocation((Node *) ((const FieldStore *) expr)->arg); break; case T_RelabelType: { const RelabelType *rexpr = (const RelabelType *) expr; /* Much as above */ loc = leftmostLoc(rexpr->location, exprLocation((Node *) rexpr->arg)); } break; case T_CoerceViaIO: { const CoerceViaIO *cexpr = (const CoerceViaIO *) expr; /* Much as above */ loc = leftmostLoc(cexpr->location, exprLocation((Node *) cexpr->arg)); } break; case T_ArrayCoerceExpr: { const ArrayCoerceExpr *cexpr = (const ArrayCoerceExpr *) expr; /* Much as above */ loc = leftmostLoc(cexpr->location, exprLocation((Node *) cexpr->arg)); } break; case T_ConvertRowtypeExpr: { const ConvertRowtypeExpr *cexpr = (const ConvertRowtypeExpr *) expr; /* Much as above */ loc = leftmostLoc(cexpr->location, exprLocation((Node *) cexpr->arg)); } break; case T_CollateExpr: /* just use argument's location */ loc = exprLocation((Node *) ((const CollateExpr *) expr)->arg); break; case T_CaseExpr: /* CASE keyword should always be the first thing */ loc = ((const CaseExpr *) expr)->location; break; case T_CaseWhen: /* WHEN keyword should always be the first thing */ loc = ((const CaseWhen *) expr)->location; break; case T_ArrayExpr: /* the location points at ARRAY or [, which must be leftmost */ loc = ((const ArrayExpr *) expr)->location; break; case T_RowExpr: /* the location points at ROW or (, which must be leftmost */ loc = ((const RowExpr *) expr)->location; break; case T_RowCompareExpr: /* just use leftmost argument's location */ loc = exprLocation((Node *) ((const RowCompareExpr *) expr)->largs); break; case T_CoalesceExpr: /* COALESCE keyword should always be the first thing */ loc = ((const CoalesceExpr *) expr)->location; break; case T_MinMaxExpr: /* GREATEST/LEAST keyword should always be the first thing */ loc = ((const MinMaxExpr *) expr)->location; break; case T_SQLValueFunction: /* function keyword should always be the first thing */ loc = ((const SQLValueFunction *) expr)->location; break; case T_XmlExpr: { const XmlExpr *xexpr = (const XmlExpr *) expr; /* consider both function name and leftmost arg */ loc = leftmostLoc(xexpr->location, exprLocation((Node *) xexpr->args)); } break; case T_NullTest: { const NullTest *nexpr = (const NullTest *) expr; /* Much as above */ loc = leftmostLoc(nexpr->location, exprLocation((Node *) nexpr->arg)); } break; case T_BooleanTest: { const BooleanTest *bexpr = (const BooleanTest *) expr; /* Much as above */ loc = leftmostLoc(bexpr->location, exprLocation((Node *) bexpr->arg)); } break; case T_CoerceToDomain: { const CoerceToDomain *cexpr = (const CoerceToDomain *) expr; /* Much as above */ loc = leftmostLoc(cexpr->location, exprLocation((Node *) cexpr->arg)); } break; case T_CoerceToDomainValue: loc = ((const CoerceToDomainValue *) expr)->location; break; case T_SetToDefault: loc = ((const SetToDefault *) expr)->location; break; case T_TargetEntry: /* just use argument's location */ loc = exprLocation((Node *) ((const TargetEntry *) expr)->expr); break; case T_IntoClause: /* use the contained RangeVar's location --- close enough */ loc = exprLocation((Node *) ((const IntoClause *) expr)->rel); break; case T_List: { /* report location of first list member that has a location */ ListCell *lc; loc = -1; /* just to suppress compiler warning */ foreach(lc, (const List *) expr) { loc = exprLocation((Node *) lfirst(lc)); if (loc >= 0) break; } } break; case T_A_Expr: { const A_Expr *aexpr = (const A_Expr *) expr; /* use leftmost of operator or left operand (if any) */ /* we assume right operand can't be to left of operator */ loc = leftmostLoc(aexpr->location, exprLocation(aexpr->lexpr)); } break; case T_ColumnRef: loc = ((const ColumnRef *) expr)->location; break; case T_ParamRef: loc = ((const ParamRef *) expr)->location; break; case T_A_Const: loc = ((const A_Const *) expr)->location; break; case T_FuncCall: { const FuncCall *fc = (const FuncCall *) expr; /* consider both function name and leftmost arg */ /* (we assume any ORDER BY nodes must be to right of name) */ loc = leftmostLoc(fc->location, exprLocation((Node *) fc->args)); } break; case T_A_ArrayExpr: /* the location points at ARRAY or [, which must be leftmost */ loc = ((const A_ArrayExpr *) expr)->location; break; case T_ResTarget: /* we need not examine the contained expression (if any) */ loc = ((const ResTarget *) expr)->location; break; case T_MultiAssignRef: loc = exprLocation(((const MultiAssignRef *) expr)->source); break; case T_TypeCast: { const TypeCast *tc = (const TypeCast *) expr; /* * This could represent CAST(), ::, or TypeName 'literal', so * any of the components might be leftmost. */ loc = exprLocation(tc->arg); loc = leftmostLoc(loc, tc->typeName->location); loc = leftmostLoc(loc, tc->location); } break; case T_CollateClause: /* just use argument's location */ loc = exprLocation(((const CollateClause *) expr)->arg); break; case T_SortBy: /* just use argument's location (ignore operator, if any) */ loc = exprLocation(((const SortBy *) expr)->node); break; case T_WindowDef: loc = ((const WindowDef *) expr)->location; break; case T_RangeTableSample: loc = ((const RangeTableSample *) expr)->location; break; case T_TypeName: loc = ((const TypeName *) expr)->location; break; case T_ColumnDef: loc = ((const ColumnDef *) expr)->location; break; case T_Constraint: loc = ((const Constraint *) expr)->location; break; case T_FunctionParameter: /* just use typename's location */ loc = exprLocation((Node *) ((const FunctionParameter *) expr)->argType); break; case T_XmlSerialize: /* XMLSERIALIZE keyword should always be the first thing */ loc = ((const XmlSerialize *) expr)->location; break; case T_GroupingSet: loc = ((const GroupingSet *) expr)->location; break; case T_WithClause: loc = ((const WithClause *) expr)->location; break; case T_InferClause: loc = ((const InferClause *) expr)->location; break; case T_OnConflictClause: loc = ((const OnConflictClause *) expr)->location; break; case T_CommonTableExpr: loc = ((const CommonTableExpr *) expr)->location; break; case T_PlaceHolderVar: /* just use argument's location */ loc = exprLocation((Node *) ((const PlaceHolderVar *) expr)->phexpr); break; case T_InferenceElem: /* just use nested expr's location */ loc = exprLocation((Node *) ((const InferenceElem *) expr)->expr); break; case T_PartitionElem: loc = ((const PartitionElem *) expr)->location; break; case T_PartitionSpec: loc = ((const PartitionSpec *) expr)->location; break; case T_PartitionBoundSpec: loc = ((const PartitionBoundSpec *) expr)->location; break; case T_PartitionRangeDatum: loc = ((const PartitionRangeDatum *) expr)->location; break; default: /* for any other node type it's just unknown... */ loc = -1; break; } return loc; } /* * leftmostLoc - support for exprLocation * * Take the minimum of two parse location values, but ignore unknowns */ static int leftmostLoc(int loc1, int loc2) { if (loc1 < 0) return loc2; else if (loc2 < 0) return loc1; else return Min(loc1, loc2); } /* * fix_opfuncids * Calculate opfuncid field from opno for each OpExpr node in given tree. * The given tree can be anything expression_tree_walker handles. * * The argument is modified in-place. (This is OK since we'd want the * same change for any node, even if it gets visited more than once due to * shared structure.) */ /* * set_opfuncid * Set the opfuncid (procedure OID) in an OpExpr node, * if it hasn't been set already. * * Because of struct equivalence, this can also be used for * DistinctExpr and NullIfExpr nodes. */ /* * set_sa_opfuncid * As above, for ScalarArrayOpExpr nodes. */ /* * check_functions_in_node - * apply checker() to each function OID contained in given expression node * * Returns true if the checker() function does; for nodes representing more * than one function call, returns true if the checker() function does so * for any of those functions. Returns false if node does not invoke any * SQL-visible function. Caller must not pass node == NULL. * * This function examines only the given node; it does not recurse into any * sub-expressions. Callers typically prefer to keep control of the recursion * for themselves, in case additional checks should be made, or because they * have special rules about which parts of the tree need to be visited. * * Note: we ignore MinMaxExpr, SQLValueFunction, XmlExpr, CoerceToDomain, * and NextValueExpr nodes, because they do not contain SQL function OIDs. * However, they can invoke SQL-visible functions, so callers should take * thought about how to treat them. */ /* * Standard expression-tree walking support * * We used to have near-duplicate code in many different routines that * understood how to recurse through an expression node tree. That was * a pain to maintain, and we frequently had bugs due to some particular * routine neglecting to support a particular node type. In most cases, * these routines only actually care about certain node types, and don't * care about other types except insofar as they have to recurse through * non-primitive node types. Therefore, we now provide generic tree-walking * logic to consolidate the redundant "boilerplate" code. There are * two versions: expression_tree_walker() and expression_tree_mutator(). */ /* * expression_tree_walker() is designed to support routines that traverse * a tree in a read-only fashion (although it will also work for routines * that modify nodes in-place but never add/delete/replace nodes). * A walker routine should look like this: * * bool my_walker (Node *node, my_struct *context) * { * if (node == NULL) * return false; * // check for nodes that special work is required for, eg: * if (IsA(node, Var)) * { * ... do special actions for Var nodes * } * else if (IsA(node, ...)) * { * ... do special actions for other node types * } * // for any node type not specially processed, do: * return expression_tree_walker(node, my_walker, (void *) context); * } * * The "context" argument points to a struct that holds whatever context * information the walker routine needs --- it can be used to return data * gathered by the walker, too. This argument is not touched by * expression_tree_walker, but it is passed down to recursive sub-invocations * of my_walker. The tree walk is started from a setup routine that * fills in the appropriate context struct, calls my_walker with the top-level * node of the tree, and then examines the results. * * The walker routine should return "false" to continue the tree walk, or * "true" to abort the walk and immediately return "true" to the top-level * caller. This can be used to short-circuit the traversal if the walker * has found what it came for. "false" is returned to the top-level caller * iff no invocation of the walker returned "true". * * The node types handled by expression_tree_walker include all those * normally found in target lists and qualifier clauses during the planning * stage. In particular, it handles List nodes since a cnf-ified qual clause * will have List structure at the top level, and it handles TargetEntry nodes * so that a scan of a target list can be handled without additional code. * Also, RangeTblRef, FromExpr, JoinExpr, and SetOperationStmt nodes are * handled, so that query jointrees and setOperation trees can be processed * without additional code. * * expression_tree_walker will handle SubLink nodes by recursing normally * into the "testexpr" subtree (which is an expression belonging to the outer * plan). It will also call the walker on the sub-Query node; however, when * expression_tree_walker itself is called on a Query node, it does nothing * and returns "false". The net effect is that unless the walker does * something special at a Query node, sub-selects will not be visited during * an expression tree walk. This is exactly the behavior wanted in many cases * --- and for those walkers that do want to recurse into sub-selects, special * behavior is typically needed anyway at the entry to a sub-select (such as * incrementing a depth counter). A walker that wants to examine sub-selects * should include code along the lines of: * * if (IsA(node, Query)) * { * adjust context for subquery; * result = query_tree_walker((Query *) node, my_walker, context, * 0); // adjust flags as needed * restore context if needed; * return result; * } * * query_tree_walker is a convenience routine (see below) that calls the * walker on all the expression subtrees of the given Query node. * * expression_tree_walker will handle SubPlan nodes by recursing normally * into the "testexpr" and the "args" list (which are expressions belonging to * the outer plan). It will not touch the completed subplan, however. Since * there is no link to the original Query, it is not possible to recurse into * subselects of an already-planned expression tree. This is OK for current * uses, but may need to be revisited in future. */ /* * query_tree_walker --- initiate a walk of a Query's expressions * * This routine exists just to reduce the number of places that need to know * where all the expression subtrees of a Query are. Note it can be used * for starting a walk at top level of a Query regardless of whether the * walker intends to descend into subqueries. It is also useful for * descending into subqueries within a walker. * * Some callers want to suppress visitation of certain items in the sub-Query, * typically because they need to process them specially, or don't actually * want to recurse into subqueries. This is supported by the flags argument, * which is the bitwise OR of flag values to add or suppress visitation of * indicated items. (More flag bits may be added as needed.) */ /* * range_table_walker is just the part of query_tree_walker that scans * a query's rangetable. This is split out since it can be useful on * its own. */ /* * Some callers even want to scan the expressions in individual RTEs. */ /* * expression_tree_mutator() is designed to support routines that make a * modified copy of an expression tree, with some nodes being added, * removed, or replaced by new subtrees. The original tree is (normally) * not changed. Each recursion level is responsible for returning a copy of * (or appropriately modified substitute for) the subtree it is handed. * A mutator routine should look like this: * * Node * my_mutator (Node *node, my_struct *context) * { * if (node == NULL) * return NULL; * // check for nodes that special work is required for, eg: * if (IsA(node, Var)) * { * ... create and return modified copy of Var node * } * else if (IsA(node, ...)) * { * ... do special transformations of other node types * } * // for any node type not specially processed, do: * return expression_tree_mutator(node, my_mutator, (void *) context); * } * * The "context" argument points to a struct that holds whatever context * information the mutator routine needs --- it can be used to return extra * data gathered by the mutator, too. This argument is not touched by * expression_tree_mutator, but it is passed down to recursive sub-invocations * of my_mutator. The tree walk is started from a setup routine that * fills in the appropriate context struct, calls my_mutator with the * top-level node of the tree, and does any required post-processing. * * Each level of recursion must return an appropriately modified Node. * If expression_tree_mutator() is called, it will make an exact copy * of the given Node, but invoke my_mutator() to copy the sub-node(s) * of that Node. In this way, my_mutator() has full control over the * copying process but need not directly deal with expression trees * that it has no interest in. * * Just as for expression_tree_walker, the node types handled by * expression_tree_mutator include all those normally found in target lists * and qualifier clauses during the planning stage. * * expression_tree_mutator will handle SubLink nodes by recursing normally * into the "testexpr" subtree (which is an expression belonging to the outer * plan). It will also call the mutator on the sub-Query node; however, when * expression_tree_mutator itself is called on a Query node, it does nothing * and returns the unmodified Query node. The net effect is that unless the * mutator does something special at a Query node, sub-selects will not be * visited or modified; the original sub-select will be linked to by the new * SubLink node. Mutators that want to descend into sub-selects will usually * do so by recognizing Query nodes and calling query_tree_mutator (below). * * expression_tree_mutator will handle a SubPlan node by recursing into the * "testexpr" and the "args" list (which belong to the outer plan), but it * will simply copy the link to the inner plan, since that's typically what * expression tree mutators want. A mutator that wants to modify the subplan * can force appropriate behavior by recognizing SubPlan expression nodes * and doing the right thing. */ #define FLATCOPY(newnode, node, nodetype) \ ( (newnode) = (nodetype *) palloc(sizeof(nodetype)), \ memcpy((newnode), (node), sizeof(nodetype)) ) #define CHECKFLATCOPY(newnode, node, nodetype) \ ( AssertMacro(IsA((node), nodetype)), \ (newnode) = (nodetype *) palloc(sizeof(nodetype)), \ memcpy((newnode), (node), sizeof(nodetype)) ) #define MUTATE(newfield, oldfield, fieldtype) \ ( (newfield) = (fieldtype) mutator((Node *) (oldfield), context) ) /* * query_tree_mutator --- initiate modification of a Query's expressions * * This routine exists just to reduce the number of places that need to know * where all the expression subtrees of a Query are. Note it can be used * for starting a walk at top level of a Query regardless of whether the * mutator intends to descend into subqueries. It is also useful for * descending into subqueries within a mutator. * * Some callers want to suppress mutating of certain items in the Query, * typically because they need to process them specially, or don't actually * want to recurse into subqueries. This is supported by the flags argument, * which is the bitwise OR of flag values to suppress mutating of * indicated items. (More flag bits may be added as needed.) * * Normally the Query node itself is copied, but some callers want it to be * modified in-place; they must pass QTW_DONT_COPY_QUERY in flags. All * modified substructure is safely copied in any case. */ /* * range_table_mutator is just the part of query_tree_mutator that processes * a query's rangetable. This is split out since it can be useful on * its own. */ /* * query_or_expression_tree_walker --- hybrid form * * This routine will invoke query_tree_walker if called on a Query node, * else will invoke the walker directly. This is a useful way of starting * the recursion when the walker's normal change of state is not appropriate * for the outermost Query node. */ /* * query_or_expression_tree_mutator --- hybrid form * * This routine will invoke query_tree_mutator if called on a Query node, * else will invoke the mutator directly. This is a useful way of starting * the recursion when the mutator's normal change of state is not appropriate * for the outermost Query node. */ /* * raw_expression_tree_walker --- walk raw parse trees * * This has exactly the same API as expression_tree_walker, but instead of * walking post-analysis parse trees, it knows how to walk the node types * found in raw grammar output. (There is not currently any need for a * combined walker, so we keep them separate in the name of efficiency.) * Unlike expression_tree_walker, there is no special rule about query * boundaries: we descend to everything that's possibly interesting. * * Currently, the node type coverage here extends only to DML statements * (SELECT/INSERT/UPDATE/DELETE) and nodes that can appear in them, because * this is used mainly during analysis of CTEs, and only DML statements can * appear in CTEs. */ bool raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) { ListCell *temp; /* * The walker has already visited the current node, and so we need only * recurse into any sub-nodes it has. */ if (node == NULL) return false; /* Guard against stack overflow due to overly complex expressions */ check_stack_depth(); switch (nodeTag(node)) { case T_SetToDefault: case T_CurrentOfExpr: case T_SQLValueFunction: case T_Integer: case T_Float: case T_String: case T_BitString: case T_Null: case T_ParamRef: case T_A_Const: case T_A_Star: /* primitive node types with no subnodes */ break; case T_Alias: /* we assume the colnames list isn't interesting */ break; case T_RangeVar: return walker(((RangeVar *) node)->alias, context); case T_GroupingFunc: return walker(((GroupingFunc *) node)->args, context); case T_SubLink: { SubLink *sublink = (SubLink *) node; if (walker(sublink->testexpr, context)) return true; /* we assume the operName is not interesting */ if (walker(sublink->subselect, context)) return true; } break; case T_CaseExpr: { CaseExpr *caseexpr = (CaseExpr *) node; if (walker(caseexpr->arg, context)) return true; /* we assume walker doesn't care about CaseWhens, either */ foreach(temp, caseexpr->args) { CaseWhen *when = lfirst_node(CaseWhen, temp); if (walker(when->expr, context)) return true; if (walker(when->result, context)) return true; } if (walker(caseexpr->defresult, context)) return true; } break; case T_RowExpr: /* Assume colnames isn't interesting */ return walker(((RowExpr *) node)->args, context); case T_CoalesceExpr: return walker(((CoalesceExpr *) node)->args, context); case T_MinMaxExpr: return walker(((MinMaxExpr *) node)->args, context); case T_XmlExpr: { XmlExpr *xexpr = (XmlExpr *) node; if (walker(xexpr->named_args, context)) return true; /* we assume walker doesn't care about arg_names */ if (walker(xexpr->args, context)) return true; } break; case T_NullTest: return walker(((NullTest *) node)->arg, context); case T_BooleanTest: return walker(((BooleanTest *) node)->arg, context); case T_JoinExpr: { JoinExpr *join = (JoinExpr *) node; if (walker(join->larg, context)) return true; if (walker(join->rarg, context)) return true; if (walker(join->quals, context)) return true; if (walker(join->alias, context)) return true; /* using list is deemed uninteresting */ } break; case T_IntoClause: { IntoClause *into = (IntoClause *) node; if (walker(into->rel, context)) return true; /* colNames, options are deemed uninteresting */ /* viewQuery should be null in raw parsetree, but check it */ if (walker(into->viewQuery, context)) return true; } break; case T_List: foreach(temp, (List *) node) { if (walker((Node *) lfirst(temp), context)) return true; } break; case T_InsertStmt: { InsertStmt *stmt = (InsertStmt *) node; if (walker(stmt->relation, context)) return true; if (walker(stmt->cols, context)) return true; if (walker(stmt->selectStmt, context)) return true; if (walker(stmt->onConflictClause, context)) return true; if (walker(stmt->returningList, context)) return true; if (walker(stmt->withClause, context)) return true; } break; case T_DeleteStmt: { DeleteStmt *stmt = (DeleteStmt *) node; if (walker(stmt->relation, context)) return true; if (walker(stmt->usingClause, context)) return true; if (walker(stmt->whereClause, context)) return true; if (walker(stmt->returningList, context)) return true; if (walker(stmt->withClause, context)) return true; } break; case T_UpdateStmt: { UpdateStmt *stmt = (UpdateStmt *) node; if (walker(stmt->relation, context)) return true; if (walker(stmt->targetList, context)) return true; if (walker(stmt->whereClause, context)) return true; if (walker(stmt->fromClause, context)) return true; if (walker(stmt->returningList, context)) return true; if (walker(stmt->withClause, context)) return true; } break; case T_SelectStmt: { SelectStmt *stmt = (SelectStmt *) node; if (walker(stmt->distinctClause, context)) return true; if (walker(stmt->intoClause, context)) return true; if (walker(stmt->targetList, context)) return true; if (walker(stmt->fromClause, context)) return true; if (walker(stmt->whereClause, context)) return true; if (walker(stmt->groupClause, context)) return true; if (walker(stmt->havingClause, context)) return true; if (walker(stmt->windowClause, context)) return true; if (walker(stmt->valuesLists, context)) return true; if (walker(stmt->sortClause, context)) return true; if (walker(stmt->limitOffset, context)) return true; if (walker(stmt->limitCount, context)) return true; if (walker(stmt->lockingClause, context)) return true; if (walker(stmt->withClause, context)) return true; if (walker(stmt->larg, context)) return true; if (walker(stmt->rarg, context)) return true; } break; case T_A_Expr: { A_Expr *expr = (A_Expr *) node; if (walker(expr->lexpr, context)) return true; if (walker(expr->rexpr, context)) return true; /* operator name is deemed uninteresting */ } break; case T_BoolExpr: { BoolExpr *expr = (BoolExpr *) node; if (walker(expr->args, context)) return true; } break; case T_ColumnRef: /* we assume the fields contain nothing interesting */ break; case T_FuncCall: { FuncCall *fcall = (FuncCall *) node; if (walker(fcall->args, context)) return true; if (walker(fcall->agg_order, context)) return true; if (walker(fcall->agg_filter, context)) return true; if (walker(fcall->over, context)) return true; /* function name is deemed uninteresting */ } break; case T_NamedArgExpr: return walker(((NamedArgExpr *) node)->arg, context); case T_A_Indices: { A_Indices *indices = (A_Indices *) node; if (walker(indices->lidx, context)) return true; if (walker(indices->uidx, context)) return true; } break; case T_A_Indirection: { A_Indirection *indir = (A_Indirection *) node; if (walker(indir->arg, context)) return true; if (walker(indir->indirection, context)) return true; } break; case T_A_ArrayExpr: return walker(((A_ArrayExpr *) node)->elements, context); case T_ResTarget: { ResTarget *rt = (ResTarget *) node; if (walker(rt->indirection, context)) return true; if (walker(rt->val, context)) return true; } break; case T_MultiAssignRef: return walker(((MultiAssignRef *) node)->source, context); case T_TypeCast: { TypeCast *tc = (TypeCast *) node; if (walker(tc->arg, context)) return true; if (walker(tc->typeName, context)) return true; } break; case T_CollateClause: return walker(((CollateClause *) node)->arg, context); case T_SortBy: return walker(((SortBy *) node)->node, context); case T_WindowDef: { WindowDef *wd = (WindowDef *) node; if (walker(wd->partitionClause, context)) return true; if (walker(wd->orderClause, context)) return true; if (walker(wd->startOffset, context)) return true; if (walker(wd->endOffset, context)) return true; } break; case T_RangeSubselect: { RangeSubselect *rs = (RangeSubselect *) node; if (walker(rs->subquery, context)) return true; if (walker(rs->alias, context)) return true; } break; case T_RangeFunction: { RangeFunction *rf = (RangeFunction *) node; if (walker(rf->functions, context)) return true; if (walker(rf->alias, context)) return true; if (walker(rf->coldeflist, context)) return true; } break; case T_RangeTableSample: { RangeTableSample *rts = (RangeTableSample *) node; if (walker(rts->relation, context)) return true; /* method name is deemed uninteresting */ if (walker(rts->args, context)) return true; if (walker(rts->repeatable, context)) return true; } break; case T_RangeTableFunc: { RangeTableFunc *rtf = (RangeTableFunc *) node; if (walker(rtf->docexpr, context)) return true; if (walker(rtf->rowexpr, context)) return true; if (walker(rtf->namespaces, context)) return true; if (walker(rtf->columns, context)) return true; if (walker(rtf->alias, context)) return true; } break; case T_RangeTableFuncCol: { RangeTableFuncCol *rtfc = (RangeTableFuncCol *) node; if (walker(rtfc->colexpr, context)) return true; if (walker(rtfc->coldefexpr, context)) return true; } break; case T_TypeName: { TypeName *tn = (TypeName *) node; if (walker(tn->typmods, context)) return true; if (walker(tn->arrayBounds, context)) return true; /* type name itself is deemed uninteresting */ } break; case T_ColumnDef: { ColumnDef *coldef = (ColumnDef *) node; if (walker(coldef->typeName, context)) return true; if (walker(coldef->raw_default, context)) return true; if (walker(coldef->collClause, context)) return true; /* for now, constraints are ignored */ } break; case T_IndexElem: { IndexElem *indelem = (IndexElem *) node; if (walker(indelem->expr, context)) return true; /* collation and opclass names are deemed uninteresting */ } break; case T_GroupingSet: return walker(((GroupingSet *) node)->content, context); case T_LockingClause: return walker(((LockingClause *) node)->lockedRels, context); case T_XmlSerialize: { XmlSerialize *xs = (XmlSerialize *) node; if (walker(xs->expr, context)) return true; if (walker(xs->typeName, context)) return true; } break; case T_WithClause: return walker(((WithClause *) node)->ctes, context); case T_InferClause: { InferClause *stmt = (InferClause *) node; if (walker(stmt->indexElems, context)) return true; if (walker(stmt->whereClause, context)) return true; } break; case T_OnConflictClause: { OnConflictClause *stmt = (OnConflictClause *) node; if (walker(stmt->infer, context)) return true; if (walker(stmt->targetList, context)) return true; if (walker(stmt->whereClause, context)) return true; } break; case T_CommonTableExpr: return walker(((CommonTableExpr *) node)->ctequery, context); default: elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); break; } return false; } /* * planstate_tree_walker --- walk plan state trees * * The walker has already visited the current node, and so we need only * recurse into any sub-nodes it has. */ /* * Walk a list of SubPlans (or initPlans, which also use SubPlan nodes). */ /* * Walk the constituent plans of a ModifyTable, Append, MergeAppend, * BitmapAnd, or BitmapOr node. */ libpg_query-13-2.1.0/src/postgres/src_backend_nodes_value.c000066400000000000000000000025571413137616400237170ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - makeString * - makeInteger * - makeFloat * - makeBitString *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * value.c * implementation of Value nodes * * * Copyright (c) 2003-2020, PostgreSQL Global Development Group * * * IDENTIFICATION * src/backend/nodes/value.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "nodes/parsenodes.h" /* * makeInteger */ Value * makeInteger(int i) { Value *v = makeNode(Value); v->type = T_Integer; v->val.ival = i; return v; } /* * makeFloat * * Caller is responsible for passing a palloc'd string. */ Value * makeFloat(char *numericStr) { Value *v = makeNode(Value); v->type = T_Float; v->val.str = numericStr; return v; } /* * makeString * * Caller is responsible for passing a palloc'd string. */ Value * makeString(char *str) { Value *v = makeNode(Value); v->type = T_String; v->val.str = str; return v; } /* * makeBitString * * Caller is responsible for passing a palloc'd string. */ Value * makeBitString(char *str) { Value *v = makeNode(Value); v->type = T_BitString; v->val.str = str; return v; } libpg_query-13-2.1.0/src/postgres/src_backend_parser_gram.c000066400000000000000000110745211413137616400237170ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - parser_init * - base_yyparse * - SystemTypeName * - SystemFuncName * - yypact * - yytranslate * - yycheck * - yytable * - yydefact * - yyr2 * - updateRawStmtEnd * - makeRawStmt * - makeParamRef * - makeStringConst * - makeAConst * - makeStringConstCast * - makeIntConst * - processCASbits * - makeRangeVarFromAnyName * - SplitColQualList * - doNegateFloat * - makeRoleSpec * - mergeTableFuncParameters * - TableFuncTypeName * - extractArgTypes * - check_func_name * - makeOrderedSetArgs * - extractAggrArgTypes * - makeRecursiveViewSelect * - check_indirection * - insertSelectOptions * - makeSetOp * - makeNullAConst * - doNegate * - makeFloatConst * - makeTypeCast * - makeInterval_or_AExprOp * - makeAndExpr * - makeOrExpr * - makeNotExpr * - makeXmlExpr * - makeSQLValueFunction * - makeBoolAConst * - makeAArrayExpr * - makeColumnRef * - check_qualified_name * - makeBitStringConst * - makeParamRefCast * - yyr1 * - yypgoto * - yydefgoto * - base_yyerror * - yydestruct * - yystos *-------------------------------------------------------------------- */ /* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Using locations. */ #define YYLSP_NEEDED 1 /* Substitute the variable and function names. */ #define yyparse base_yyparse #define yylex base_yylex #define yyerror base_yyerror #define yylval base_yylval #define yychar base_yychar #define yydebug base_yydebug #define yynerrs base_yynerrs #define yylloc base_yylloc /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { IDENT = 258, UIDENT = 259, FCONST = 260, SCONST = 261, USCONST = 262, BCONST = 263, XCONST = 264, Op = 265, ICONST = 266, PARAM = 267, TYPECAST = 268, DOT_DOT = 269, COLON_EQUALS = 270, EQUALS_GREATER = 271, LESS_EQUALS = 272, GREATER_EQUALS = 273, NOT_EQUALS = 274, SQL_COMMENT = 275, C_COMMENT = 276, ABORT_P = 277, ABSOLUTE_P = 278, ACCESS = 279, ACTION = 280, ADD_P = 281, ADMIN = 282, AFTER = 283, AGGREGATE = 284, ALL = 285, ALSO = 286, ALTER = 287, ALWAYS = 288, ANALYSE = 289, ANALYZE = 290, AND = 291, ANY = 292, ARRAY = 293, AS = 294, ASC = 295, ASSERTION = 296, ASSIGNMENT = 297, ASYMMETRIC = 298, AT = 299, ATTACH = 300, ATTRIBUTE = 301, AUTHORIZATION = 302, BACKWARD = 303, BEFORE = 304, BEGIN_P = 305, BETWEEN = 306, BIGINT = 307, BINARY = 308, BIT = 309, BOOLEAN_P = 310, BOTH = 311, BY = 312, CACHE = 313, CALL = 314, CALLED = 315, CASCADE = 316, CASCADED = 317, CASE = 318, CAST = 319, CATALOG_P = 320, CHAIN = 321, CHAR_P = 322, CHARACTER = 323, CHARACTERISTICS = 324, CHECK = 325, CHECKPOINT = 326, CLASS = 327, CLOSE = 328, CLUSTER = 329, COALESCE = 330, COLLATE = 331, COLLATION = 332, COLUMN = 333, COLUMNS = 334, COMMENT = 335, COMMENTS = 336, COMMIT = 337, COMMITTED = 338, CONCURRENTLY = 339, CONFIGURATION = 340, CONFLICT = 341, CONNECTION = 342, CONSTRAINT = 343, CONSTRAINTS = 344, CONTENT_P = 345, CONTINUE_P = 346, CONVERSION_P = 347, COPY = 348, COST = 349, CREATE = 350, CROSS = 351, CSV = 352, CUBE = 353, CURRENT_P = 354, CURRENT_CATALOG = 355, CURRENT_DATE = 356, CURRENT_ROLE = 357, CURRENT_SCHEMA = 358, CURRENT_TIME = 359, CURRENT_TIMESTAMP = 360, CURRENT_USER = 361, CURSOR = 362, CYCLE = 363, DATA_P = 364, DATABASE = 365, DAY_P = 366, DEALLOCATE = 367, DEC = 368, DECIMAL_P = 369, DECLARE = 370, DEFAULT = 371, DEFAULTS = 372, DEFERRABLE = 373, DEFERRED = 374, DEFINER = 375, DELETE_P = 376, DELIMITER = 377, DELIMITERS = 378, DEPENDS = 379, DESC = 380, DETACH = 381, DICTIONARY = 382, DISABLE_P = 383, DISCARD = 384, DISTINCT = 385, DO = 386, DOCUMENT_P = 387, DOMAIN_P = 388, DOUBLE_P = 389, DROP = 390, EACH = 391, ELSE = 392, ENABLE_P = 393, ENCODING = 394, ENCRYPTED = 395, END_P = 396, ENUM_P = 397, ESCAPE = 398, EVENT = 399, EXCEPT = 400, EXCLUDE = 401, EXCLUDING = 402, EXCLUSIVE = 403, EXECUTE = 404, EXISTS = 405, EXPLAIN = 406, EXPRESSION = 407, EXTENSION = 408, EXTERNAL = 409, EXTRACT = 410, FALSE_P = 411, FAMILY = 412, FETCH = 413, FILTER = 414, FIRST_P = 415, FLOAT_P = 416, FOLLOWING = 417, FOR = 418, FORCE = 419, FOREIGN = 420, FORWARD = 421, FREEZE = 422, FROM = 423, FULL = 424, FUNCTION = 425, FUNCTIONS = 426, GENERATED = 427, GLOBAL = 428, GRANT = 429, GRANTED = 430, GREATEST = 431, GROUP_P = 432, GROUPING = 433, GROUPS = 434, HANDLER = 435, HAVING = 436, HEADER_P = 437, HOLD = 438, HOUR_P = 439, IDENTITY_P = 440, IF_P = 441, ILIKE = 442, IMMEDIATE = 443, IMMUTABLE = 444, IMPLICIT_P = 445, IMPORT_P = 446, IN_P = 447, INCLUDE = 448, INCLUDING = 449, INCREMENT = 450, INDEX = 451, INDEXES = 452, INHERIT = 453, INHERITS = 454, INITIALLY = 455, INLINE_P = 456, INNER_P = 457, INOUT = 458, INPUT_P = 459, INSENSITIVE = 460, INSERT = 461, INSTEAD = 462, INT_P = 463, INTEGER = 464, INTERSECT = 465, INTERVAL = 466, INTO = 467, INVOKER = 468, IS = 469, ISNULL = 470, ISOLATION = 471, JOIN = 472, KEY = 473, LABEL = 474, LANGUAGE = 475, LARGE_P = 476, LAST_P = 477, LATERAL_P = 478, LEADING = 479, LEAKPROOF = 480, LEAST = 481, LEFT = 482, LEVEL = 483, LIKE = 484, LIMIT = 485, LISTEN = 486, LOAD = 487, LOCAL = 488, LOCALTIME = 489, LOCALTIMESTAMP = 490, LOCATION = 491, LOCK_P = 492, LOCKED = 493, LOGGED = 494, MAPPING = 495, MATCH = 496, MATERIALIZED = 497, MAXVALUE = 498, METHOD = 499, MINUTE_P = 500, MINVALUE = 501, MODE = 502, MONTH_P = 503, MOVE = 504, NAME_P = 505, NAMES = 506, NATIONAL = 507, NATURAL = 508, NCHAR = 509, NEW = 510, NEXT = 511, NFC = 512, NFD = 513, NFKC = 514, NFKD = 515, NO = 516, NONE = 517, NORMALIZE = 518, NORMALIZED = 519, NOT = 520, NOTHING = 521, NOTIFY = 522, NOTNULL = 523, NOWAIT = 524, NULL_P = 525, NULLIF = 526, NULLS_P = 527, NUMERIC = 528, OBJECT_P = 529, OF = 530, OFF = 531, OFFSET = 532, OIDS = 533, OLD = 534, ON = 535, ONLY = 536, OPERATOR = 537, OPTION = 538, OPTIONS = 539, OR = 540, ORDER = 541, ORDINALITY = 542, OTHERS = 543, OUT_P = 544, OUTER_P = 545, OVER = 546, OVERLAPS = 547, OVERLAY = 548, OVERRIDING = 549, OWNED = 550, OWNER = 551, PARALLEL = 552, PARSER = 553, PARTIAL = 554, PARTITION = 555, PASSING = 556, PASSWORD = 557, PLACING = 558, PLANS = 559, POLICY = 560, POSITION = 561, PRECEDING = 562, PRECISION = 563, PRESERVE = 564, PREPARE = 565, PREPARED = 566, PRIMARY = 567, PRIOR = 568, PRIVILEGES = 569, PROCEDURAL = 570, PROCEDURE = 571, PROCEDURES = 572, PROGRAM = 573, PUBLICATION = 574, QUOTE = 575, RANGE = 576, READ = 577, REAL = 578, REASSIGN = 579, RECHECK = 580, RECURSIVE = 581, REF = 582, REFERENCES = 583, REFERENCING = 584, REFRESH = 585, REINDEX = 586, RELATIVE_P = 587, RELEASE = 588, RENAME = 589, REPEATABLE = 590, REPLACE = 591, REPLICA = 592, RESET = 593, RESTART = 594, RESTRICT = 595, RETURNING = 596, RETURNS = 597, REVOKE = 598, RIGHT = 599, ROLE = 600, ROLLBACK = 601, ROLLUP = 602, ROUTINE = 603, ROUTINES = 604, ROW = 605, ROWS = 606, RULE = 607, SAVEPOINT = 608, SCHEMA = 609, SCHEMAS = 610, SCROLL = 611, SEARCH = 612, SECOND_P = 613, SECURITY = 614, SELECT = 615, SEQUENCE = 616, SEQUENCES = 617, SERIALIZABLE = 618, SERVER = 619, SESSION = 620, SESSION_USER = 621, SET = 622, SETS = 623, SETOF = 624, SHARE = 625, SHOW = 626, SIMILAR = 627, SIMPLE = 628, SKIP = 629, SMALLINT = 630, SNAPSHOT = 631, SOME = 632, SQL_P = 633, STABLE = 634, STANDALONE_P = 635, START = 636, STATEMENT = 637, STATISTICS = 638, STDIN = 639, STDOUT = 640, STORAGE = 641, STORED = 642, STRICT_P = 643, STRIP_P = 644, SUBSCRIPTION = 645, SUBSTRING = 646, SUPPORT = 647, SYMMETRIC = 648, SYSID = 649, SYSTEM_P = 650, TABLE = 651, TABLES = 652, TABLESAMPLE = 653, TABLESPACE = 654, TEMP = 655, TEMPLATE = 656, TEMPORARY = 657, TEXT_P = 658, THEN = 659, TIES = 660, TIME = 661, TIMESTAMP = 662, TO = 663, TRAILING = 664, TRANSACTION = 665, TRANSFORM = 666, TREAT = 667, TRIGGER = 668, TRIM = 669, TRUE_P = 670, TRUNCATE = 671, TRUSTED = 672, TYPE_P = 673, TYPES_P = 674, UESCAPE = 675, UNBOUNDED = 676, UNCOMMITTED = 677, UNENCRYPTED = 678, UNION = 679, UNIQUE = 680, UNKNOWN = 681, UNLISTEN = 682, UNLOGGED = 683, UNTIL = 684, UPDATE = 685, USER = 686, USING = 687, VACUUM = 688, VALID = 689, VALIDATE = 690, VALIDATOR = 691, VALUE_P = 692, VALUES = 693, VARCHAR = 694, VARIADIC = 695, VARYING = 696, VERBOSE = 697, VERSION_P = 698, VIEW = 699, VIEWS = 700, VOLATILE = 701, WHEN = 702, WHERE = 703, WHITESPACE_P = 704, WINDOW = 705, WITH = 706, WITHIN = 707, WITHOUT = 708, WORK = 709, WRAPPER = 710, WRITE = 711, XML_P = 712, XMLATTRIBUTES = 713, XMLCONCAT = 714, XMLELEMENT = 715, XMLEXISTS = 716, XMLFOREST = 717, XMLNAMESPACES = 718, XMLPARSE = 719, XMLPI = 720, XMLROOT = 721, XMLSERIALIZE = 722, XMLTABLE = 723, YEAR_P = 724, YES_P = 725, ZONE = 726, NOT_LA = 727, NULLS_LA = 728, WITH_LA = 729, POSTFIXOP = 730, UMINUS = 731 }; #endif /* Tokens. */ #define IDENT 258 #define UIDENT 259 #define FCONST 260 #define SCONST 261 #define USCONST 262 #define BCONST 263 #define XCONST 264 #define Op 265 #define ICONST 266 #define PARAM 267 #define TYPECAST 268 #define DOT_DOT 269 #define COLON_EQUALS 270 #define EQUALS_GREATER 271 #define LESS_EQUALS 272 #define GREATER_EQUALS 273 #define NOT_EQUALS 274 #define SQL_COMMENT 275 #define C_COMMENT 276 #define ABORT_P 277 #define ABSOLUTE_P 278 #define ACCESS 279 #define ACTION 280 #define ADD_P 281 #define ADMIN 282 #define AFTER 283 #define AGGREGATE 284 #define ALL 285 #define ALSO 286 #define ALTER 287 #define ALWAYS 288 #define ANALYSE 289 #define ANALYZE 290 #define AND 291 #define ANY 292 #define ARRAY 293 #define AS 294 #define ASC 295 #define ASSERTION 296 #define ASSIGNMENT 297 #define ASYMMETRIC 298 #define AT 299 #define ATTACH 300 #define ATTRIBUTE 301 #define AUTHORIZATION 302 #define BACKWARD 303 #define BEFORE 304 #define BEGIN_P 305 #define BETWEEN 306 #define BIGINT 307 #define BINARY 308 #define BIT 309 #define BOOLEAN_P 310 #define BOTH 311 #define BY 312 #define CACHE 313 #define CALL 314 #define CALLED 315 #define CASCADE 316 #define CASCADED 317 #define CASE 318 #define CAST 319 #define CATALOG_P 320 #define CHAIN 321 #define CHAR_P 322 #define CHARACTER 323 #define CHARACTERISTICS 324 #define CHECK 325 #define CHECKPOINT 326 #define CLASS 327 #define CLOSE 328 #define CLUSTER 329 #define COALESCE 330 #define COLLATE 331 #define COLLATION 332 #define COLUMN 333 #define COLUMNS 334 #define COMMENT 335 #define COMMENTS 336 #define COMMIT 337 #define COMMITTED 338 #define CONCURRENTLY 339 #define CONFIGURATION 340 #define CONFLICT 341 #define CONNECTION 342 #define CONSTRAINT 343 #define CONSTRAINTS 344 #define CONTENT_P 345 #define CONTINUE_P 346 #define CONVERSION_P 347 #define COPY 348 #define COST 349 #define CREATE 350 #define CROSS 351 #define CSV 352 #define CUBE 353 #define CURRENT_P 354 #define CURRENT_CATALOG 355 #define CURRENT_DATE 356 #define CURRENT_ROLE 357 #define CURRENT_SCHEMA 358 #define CURRENT_TIME 359 #define CURRENT_TIMESTAMP 360 #define CURRENT_USER 361 #define CURSOR 362 #define CYCLE 363 #define DATA_P 364 #define DATABASE 365 #define DAY_P 366 #define DEALLOCATE 367 #define DEC 368 #define DECIMAL_P 369 #define DECLARE 370 #define DEFAULT 371 #define DEFAULTS 372 #define DEFERRABLE 373 #define DEFERRED 374 #define DEFINER 375 #define DELETE_P 376 #define DELIMITER 377 #define DELIMITERS 378 #define DEPENDS 379 #define DESC 380 #define DETACH 381 #define DICTIONARY 382 #define DISABLE_P 383 #define DISCARD 384 #define DISTINCT 385 #define DO 386 #define DOCUMENT_P 387 #define DOMAIN_P 388 #define DOUBLE_P 389 #define DROP 390 #define EACH 391 #define ELSE 392 #define ENABLE_P 393 #define ENCODING 394 #define ENCRYPTED 395 #define END_P 396 #define ENUM_P 397 #define ESCAPE 398 #define EVENT 399 #define EXCEPT 400 #define EXCLUDE 401 #define EXCLUDING 402 #define EXCLUSIVE 403 #define EXECUTE 404 #define EXISTS 405 #define EXPLAIN 406 #define EXPRESSION 407 #define EXTENSION 408 #define EXTERNAL 409 #define EXTRACT 410 #define FALSE_P 411 #define FAMILY 412 #define FETCH 413 #define FILTER 414 #define FIRST_P 415 #define FLOAT_P 416 #define FOLLOWING 417 #define FOR 418 #define FORCE 419 #define FOREIGN 420 #define FORWARD 421 #define FREEZE 422 #define FROM 423 #define FULL 424 #define FUNCTION 425 #define FUNCTIONS 426 #define GENERATED 427 #define GLOBAL 428 #define GRANT 429 #define GRANTED 430 #define GREATEST 431 #define GROUP_P 432 #define GROUPING 433 #define GROUPS 434 #define HANDLER 435 #define HAVING 436 #define HEADER_P 437 #define HOLD 438 #define HOUR_P 439 #define IDENTITY_P 440 #define IF_P 441 #define ILIKE 442 #define IMMEDIATE 443 #define IMMUTABLE 444 #define IMPLICIT_P 445 #define IMPORT_P 446 #define IN_P 447 #define INCLUDE 448 #define INCLUDING 449 #define INCREMENT 450 #define INDEX 451 #define INDEXES 452 #define INHERIT 453 #define INHERITS 454 #define INITIALLY 455 #define INLINE_P 456 #define INNER_P 457 #define INOUT 458 #define INPUT_P 459 #define INSENSITIVE 460 #define INSERT 461 #define INSTEAD 462 #define INT_P 463 #define INTEGER 464 #define INTERSECT 465 #define INTERVAL 466 #define INTO 467 #define INVOKER 468 #define IS 469 #define ISNULL 470 #define ISOLATION 471 #define JOIN 472 #define KEY 473 #define LABEL 474 #define LANGUAGE 475 #define LARGE_P 476 #define LAST_P 477 #define LATERAL_P 478 #define LEADING 479 #define LEAKPROOF 480 #define LEAST 481 #define LEFT 482 #define LEVEL 483 #define LIKE 484 #define LIMIT 485 #define LISTEN 486 #define LOAD 487 #define LOCAL 488 #define LOCALTIME 489 #define LOCALTIMESTAMP 490 #define LOCATION 491 #define LOCK_P 492 #define LOCKED 493 #define LOGGED 494 #define MAPPING 495 #define MATCH 496 #define MATERIALIZED 497 #define MAXVALUE 498 #define METHOD 499 #define MINUTE_P 500 #define MINVALUE 501 #define MODE 502 #define MONTH_P 503 #define MOVE 504 #define NAME_P 505 #define NAMES 506 #define NATIONAL 507 #define NATURAL 508 #define NCHAR 509 #define NEW 510 #define NEXT 511 #define NFC 512 #define NFD 513 #define NFKC 514 #define NFKD 515 #define NO 516 #define NONE 517 #define NORMALIZE 518 #define NORMALIZED 519 #define NOT 520 #define NOTHING 521 #define NOTIFY 522 #define NOTNULL 523 #define NOWAIT 524 #define NULL_P 525 #define NULLIF 526 #define NULLS_P 527 #define NUMERIC 528 #define OBJECT_P 529 #define OF 530 #define OFF 531 #define OFFSET 532 #define OIDS 533 #define OLD 534 #define ON 535 #define ONLY 536 #define OPERATOR 537 #define OPTION 538 #define OPTIONS 539 #define OR 540 #define ORDER 541 #define ORDINALITY 542 #define OTHERS 543 #define OUT_P 544 #define OUTER_P 545 #define OVER 546 #define OVERLAPS 547 #define OVERLAY 548 #define OVERRIDING 549 #define OWNED 550 #define OWNER 551 #define PARALLEL 552 #define PARSER 553 #define PARTIAL 554 #define PARTITION 555 #define PASSING 556 #define PASSWORD 557 #define PLACING 558 #define PLANS 559 #define POLICY 560 #define POSITION 561 #define PRECEDING 562 #define PRECISION 563 #define PRESERVE 564 #define PREPARE 565 #define PREPARED 566 #define PRIMARY 567 #define PRIOR 568 #define PRIVILEGES 569 #define PROCEDURAL 570 #define PROCEDURE 571 #define PROCEDURES 572 #define PROGRAM 573 #define PUBLICATION 574 #define QUOTE 575 #define RANGE 576 #define READ 577 #define REAL 578 #define REASSIGN 579 #define RECHECK 580 #define RECURSIVE 581 #define REF 582 #define REFERENCES 583 #define REFERENCING 584 #define REFRESH 585 #define REINDEX 586 #define RELATIVE_P 587 #define RELEASE 588 #define RENAME 589 #define REPEATABLE 590 #define REPLACE 591 #define REPLICA 592 #define RESET 593 #define RESTART 594 #define RESTRICT 595 #define RETURNING 596 #define RETURNS 597 #define REVOKE 598 #define RIGHT 599 #define ROLE 600 #define ROLLBACK 601 #define ROLLUP 602 #define ROUTINE 603 #define ROUTINES 604 #define ROW 605 #define ROWS 606 #define RULE 607 #define SAVEPOINT 608 #define SCHEMA 609 #define SCHEMAS 610 #define SCROLL 611 #define SEARCH 612 #define SECOND_P 613 #define SECURITY 614 #define SELECT 615 #define SEQUENCE 616 #define SEQUENCES 617 #define SERIALIZABLE 618 #define SERVER 619 #define SESSION 620 #define SESSION_USER 621 #define SET 622 #define SETS 623 #define SETOF 624 #define SHARE 625 #define SHOW 626 #define SIMILAR 627 #define SIMPLE 628 #define SKIP 629 #define SMALLINT 630 #define SNAPSHOT 631 #define SOME 632 #define SQL_P 633 #define STABLE 634 #define STANDALONE_P 635 #define START 636 #define STATEMENT 637 #define STATISTICS 638 #define STDIN 639 #define STDOUT 640 #define STORAGE 641 #define STORED 642 #define STRICT_P 643 #define STRIP_P 644 #define SUBSCRIPTION 645 #define SUBSTRING 646 #define SUPPORT 647 #define SYMMETRIC 648 #define SYSID 649 #define SYSTEM_P 650 #define TABLE 651 #define TABLES 652 #define TABLESAMPLE 653 #define TABLESPACE 654 #define TEMP 655 #define TEMPLATE 656 #define TEMPORARY 657 #define TEXT_P 658 #define THEN 659 #define TIES 660 #define TIME 661 #define TIMESTAMP 662 #define TO 663 #define TRAILING 664 #define TRANSACTION 665 #define TRANSFORM 666 #define TREAT 667 #define TRIGGER 668 #define TRIM 669 #define TRUE_P 670 #define TRUNCATE 671 #define TRUSTED 672 #define TYPE_P 673 #define TYPES_P 674 #define UESCAPE 675 #define UNBOUNDED 676 #define UNCOMMITTED 677 #define UNENCRYPTED 678 #define UNION 679 #define UNIQUE 680 #define UNKNOWN 681 #define UNLISTEN 682 #define UNLOGGED 683 #define UNTIL 684 #define UPDATE 685 #define USER 686 #define USING 687 #define VACUUM 688 #define VALID 689 #define VALIDATE 690 #define VALIDATOR 691 #define VALUE_P 692 #define VALUES 693 #define VARCHAR 694 #define VARIADIC 695 #define VARYING 696 #define VERBOSE 697 #define VERSION_P 698 #define VIEW 699 #define VIEWS 700 #define VOLATILE 701 #define WHEN 702 #define WHERE 703 #define WHITESPACE_P 704 #define WINDOW 705 #define WITH 706 #define WITHIN 707 #define WITHOUT 708 #define WORK 709 #define WRAPPER 710 #define WRITE 711 #define XML_P 712 #define XMLATTRIBUTES 713 #define XMLCONCAT 714 #define XMLELEMENT 715 #define XMLEXISTS 716 #define XMLFOREST 717 #define XMLNAMESPACES 718 #define XMLPARSE 719 #define XMLPI 720 #define XMLROOT 721 #define XMLSERIALIZE 722 #define XMLTABLE 723 #define YEAR_P 724 #define YES_P 725 #define ZONE 726 #define NOT_LA 727 #define NULLS_LA 728 #define WITH_LA 729 #define POSTFIXOP 730 #define UMINUS 731 /* Copy the first part of user declarations. */ #line 1 "gram.y" /*#define YYDEBUG 1*/ /*------------------------------------------------------------------------- * * gram.y * POSTGRESQL BISON rules/actions * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/parser/gram.y * * HISTORY * AUTHOR DATE MAJOR EVENT * Andrew Yu Sept, 1994 POSTQUEL to SQL conversion * Andrew Yu Oct, 1994 lispy code conversion * * NOTES * CAPITALS are used to represent terminal symbols. * non-capitals are used to represent non-terminals. * * In general, nothing in this file should initiate database accesses * nor depend on changeable state (such as SET variables). If you do * database accesses, your code will fail when we have aborted the * current transaction and are just parsing commands to find the next * ROLLBACK or COMMIT. If you make use of SET variables, then you * will do the wrong thing in multi-query strings like this: * SET constraint_exclusion TO off; SELECT * FROM foo; * because the entire string is parsed by gram.y before the SET gets * executed. Anything that depends on the database or changeable state * should be handled during parse analysis so that it happens at the * right time not the wrong time. * * WARNINGS * If you use a list, make sure the datum is a node so that the printing * routines work. * * Sometimes we assign constants to makeStrings. Make sure we don't free * those. * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include "access/tableam.h" #include "catalog/index.h" #include "catalog/namespace.h" #include "catalog/pg_am.h" #include "catalog/pg_trigger.h" #include "commands/defrem.h" #include "commands/trigger.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "parser/gramparse.h" #include "parser/parser.h" #include "parser/parse_expr.h" #include "storage/lmgr.h" #include "utils/date.h" #include "utils/datetime.h" #include "utils/numeric.h" #include "utils/xml.h" /* * Location tracking support --- simpler than bison's default, since we only * want to track the start position not the end position of each nonterminal. */ #define YYLLOC_DEFAULT(Current, Rhs, N) \ do { \ if ((N) > 0) \ (Current) = (Rhs)[1]; \ else \ (Current) = (-1); \ } while (0) /* * The above macro assigns -1 (unknown) as the parse location of any * nonterminal that was reduced from an empty rule, or whose leftmost * component was reduced from an empty rule. This is problematic * for nonterminals defined like * OptFooList: / * EMPTY * / { ... } | OptFooList Foo { ... } ; * because we'll set -1 as the location during the first reduction and then * copy it during each subsequent reduction, leaving us with -1 for the * location even when the list is not empty. To fix that, do this in the * action for the nonempty rule(s): * if (@$ < 0) @$ = @2; * (Although we have many nonterminals that follow this pattern, we only * bother with fixing @$ like this when the nonterminal's parse location * is actually referenced in some rule.) * * A cleaner answer would be to make YYLLOC_DEFAULT scan all the Rhs * locations until it's found one that's not -1. Then we'd get a correct * location for any nonterminal that isn't entirely empty. But this way * would add overhead to every rule reduction, and so far there's not been * a compelling reason to pay that overhead. */ /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents * memory leaks if we error out during parsing. Note this only works with * bison >= 2.0. However, in bison 1.875 the default is to use alloca() * if possible, so there's not really much problem anyhow, at least if * you're building with gcc. */ #define YYMALLOC palloc #define YYFREE pfree /* Private struct for the result of privilege_target production */ typedef struct PrivTarget { GrantTargetType targtype; ObjectType objtype; List *objs; } PrivTarget; /* Private struct for the result of import_qualification production */ typedef struct ImportQual { ImportForeignSchemaType type; List *table_names; } ImportQual; /* Private struct for the result of opt_select_limit production */ typedef struct SelectLimit { Node *limitOffset; Node *limitCount; LimitOption limitOption; } SelectLimit; /* ConstraintAttributeSpec yields an integer bitmask of these flags: */ #define CAS_NOT_DEFERRABLE 0x01 #define CAS_DEFERRABLE 0x02 #define CAS_INITIALLY_IMMEDIATE 0x04 #define CAS_INITIALLY_DEFERRED 0x08 #define CAS_NOT_VALID 0x10 #define CAS_NO_INHERIT 0x20 #define parser_yyerror(msg) scanner_yyerror(msg, yyscanner) #define parser_errposition(pos) scanner_errposition(pos, yyscanner) static void base_yyerror(YYLTYPE *yylloc, core_yyscan_t yyscanner, const char *msg); static RawStmt *makeRawStmt(Node *stmt, int stmt_location); static void updateRawStmtEnd(RawStmt *rs, int end_location); static Node *makeColumnRef(char *colname, List *indirection, int location, core_yyscan_t yyscanner); static Node *makeTypeCast(Node *arg, TypeName *typename, int location); static Node *makeStringConst(char *str, int location); static Node *makeStringConstCast(char *str, int location, TypeName *typename); static Node *makeIntConst(int val, int location); static Node *makeFloatConst(char *str, int location); static Node *makeBitStringConst(char *str, int location); static Node *makeNullAConst(int location); static Node *makeAConst(Value *v, int location); static Node *makeBoolAConst(bool state, int location); static Node *makeParamRef(int number, int location); static Node *makeParamRefCast(int number, int location, TypeName *typename); static Node *makeInterval_or_AExprOp(Node *lexpr, Node *rexpr, int location); static RoleSpec *makeRoleSpec(RoleSpecType type, int location); static void check_qualified_name(List *names, core_yyscan_t yyscanner); static List *check_func_name(List *names, core_yyscan_t yyscanner); static List *check_indirection(List *indirection, core_yyscan_t yyscanner); static List *extractArgTypes(List *parameters); static List *extractAggrArgTypes(List *aggrargs); static List *makeOrderedSetArgs(List *directargs, List *orderedargs, core_yyscan_t yyscanner); static void insertSelectOptions(SelectStmt *stmt, List *sortClause, List *lockingClause, SelectLimit *limitClause, WithClause *withClause, core_yyscan_t yyscanner); static Node *makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg); static Node *doNegate(Node *n, int location); static void doNegateFloat(Value *v); static Node *makeAndExpr(Node *lexpr, Node *rexpr, int location); static Node *makeOrExpr(Node *lexpr, Node *rexpr, int location); static Node *makeNotExpr(Node *expr, int location); static Node *makeAArrayExpr(List *elements, int location); static Node *makeSQLValueFunction(SQLValueFunctionOp op, int32 typmod, int location); static Node *makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args, int location); static List *mergeTableFuncParameters(List *func_args, List *columns); static TypeName *TableFuncTypeName(List *columns); static RangeVar *makeRangeVarFromAnyName(List *names, int position, core_yyscan_t yyscanner); static void SplitColQualList(List *qualList, List **constraintList, CollateClause **collClause, core_yyscan_t yyscanner); static void processCASbits(int cas_bits, int location, const char *constrType, bool *deferrable, bool *initdeferred, bool *not_valid, bool *no_inherit, core_yyscan_t yyscanner); static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 214 "gram.y" { core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; char *str; const char *keyword; char chr; bool boolean; JoinType jtype; DropBehavior dbehavior; OnCommitAction oncommit; List *list; Node *node; Value *value; ObjectType objtype; TypeName *typnam; FunctionParameter *fun_param; FunctionParameterMode fun_param_mode; ObjectWithArgs *objwithargs; DefElem *defelt; SortBy *sortby; WindowDef *windef; JoinExpr *jexpr; IndexElem *ielem; Alias *alias; RangeVar *range; IntoClause *into; WithClause *with; InferClause *infer; OnConflictClause *onconflict; A_Indices *aind; ResTarget *target; struct PrivTarget *privtarget; AccessPriv *accesspriv; struct ImportQual *importqual; InsertStmt *istmt; VariableSetStmt *vsetstmt; PartitionElem *partelem; PartitionSpec *partspec; PartitionBoundSpec *partboundspec; RoleSpec *rolespec; struct SelectLimit *selectlimit; } /* Line 193 of yacc.c. */ #line 1305 "gram.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; } YYLTYPE; # define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif /* Copy the second part of user declarations. */ /* Line 216 of yacc.c. */ #line 1330 "gram.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int i) #else static int YYID (i) int i; #endif { return i; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss; YYSTYPE yyvs; YYLTYPE yyls; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + 2 * YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 837 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 105637 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 495 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 673 /* YYNRULES -- Number of rules. */ #define YYNRULES 2788 /* YYNRULES -- Number of states. */ #define YYNSTATES 5592 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 731 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 484, 2, 2, 489, 490, 482, 480, 493, 481, 491, 483, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 494, 492, 475, 477, 476, 478, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 487, 2, 488, 485, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 479, 486 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 5, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233, 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 259, 261, 262, 265, 271, 273, 275, 276, 279, 280, 283, 284, 287, 290, 293, 296, 300, 304, 308, 312, 314, 318, 322, 325, 327, 329, 332, 335, 338, 342, 346, 352, 358, 364, 365, 369, 375, 381, 387, 393, 397, 403, 407, 413, 417, 423, 429, 436, 438, 440, 447, 452, 462, 470, 472, 473, 476, 477, 479, 481, 483, 485, 487, 489, 492, 496, 500, 503, 509, 511, 515, 519, 523, 527, 529, 533, 537, 540, 543, 546, 549, 552, 555, 558, 561, 565, 569, 573, 577, 581, 585, 587, 591, 593, 597, 599, 601, 603, 605, 608, 611, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 636, 642, 644, 646, 648, 650, 652, 653, 655, 657, 660, 662, 665, 669, 672, 674, 676, 679, 681, 684, 686, 689, 693, 698, 702, 705, 710, 712, 714, 716, 718, 720, 723, 726, 729, 732, 735, 740, 747, 752, 759, 770, 784, 789, 796, 801, 812, 826, 831, 838, 843, 850, 856, 864, 876, 891, 893, 897, 902, 906, 910, 913, 919, 923, 930, 935, 942, 949, 955, 963, 970, 977, 983, 989, 996, 1006, 1011, 1017, 1025, 1032, 1037, 1046, 1051, 1054, 1059, 1063, 1070, 1075, 1079, 1083, 1087, 1090, 1093, 1097, 1102, 1107, 1111, 1115, 1119, 1123, 1127, 1131, 1136, 1141, 1145, 1148, 1152, 1155, 1158, 1162, 1166, 1169, 1172, 1176, 1181, 1186, 1191, 1197, 1199, 1203, 1206, 1208, 1210, 1211, 1214, 1215, 1218, 1219, 1221, 1223, 1225, 1229, 1233, 1236, 1237, 1239, 1243, 1247, 1249, 1255, 1259, 1261, 1264, 1266, 1270, 1273, 1277, 1284, 1291, 1302, 1304, 1307, 1309, 1313, 1318, 1320, 1324, 1329, 1336, 1341, 1350, 1353, 1356, 1368, 1378, 1380, 1382, 1384, 1385, 1387, 1389, 1391, 1393, 1397, 1400, 1401, 1403, 1405, 1409, 1413, 1415, 1417, 1421, 1425, 1429, 1433, 1438, 1442, 1445, 1447, 1448, 1452, 1453, 1455, 1456, 1458, 1462, 1465, 1467, 1469, 1471, 1475, 1476, 1478, 1482, 1484, 1498, 1515, 1528, 1544, 1559, 1577, 1579, 1581, 1584, 1587, 1590, 1593, 1595, 1596, 1598, 1599, 1603, 1604, 1606, 1610, 1612, 1616, 1618, 1620, 1622, 1624, 1626, 1631, 1634, 1639, 1642, 1643, 1647, 1649, 1651, 1654, 1657, 1659, 1663, 1668, 1674, 1677, 1683, 1691, 1697, 1699, 1702, 1704, 1707, 1710, 1713, 1717, 1721, 1725, 1726, 1728, 1730, 1732, 1734, 1736, 1738, 1740, 1742, 1744, 1748, 1750, 1756, 1765, 1769, 1779, 1784, 1795, 1807, 1810, 1811, 1815, 1816, 1818, 1822, 1824, 1829, 1830, 1833, 1836, 1839, 1840, 1842, 1846, 1850, 1857, 1862, 1863, 1865, 1867, 1870, 1873, 1874, 1878, 1882, 1885, 1887, 1889, 1892, 1895, 1900, 1901, 1903, 1904, 1911, 1913, 1917, 1921, 1925, 1931, 1934, 1935, 1938, 1941, 1942, 1946, 1951, 1956, 1957, 1960, 1961, 1966, 1967, 1971, 1980, 1992, 1999, 2008, 2016, 2027, 2034, 2037, 2041, 2042, 2051, 2063, 2069, 2071, 2072, 2079, 2085, 2094, 2099, 2106, 2108, 2109, 2113, 2114, 2116, 2119, 2122, 2125, 2127, 2130, 2134, 2137, 2140, 2143, 2146, 2150, 2154, 2158, 2160, 2164, 2166, 2167, 2169, 2172, 2175, 2177, 2179, 2183, 2190, 2201, 2203, 2204, 2206, 2209, 2212, 2213, 2216, 2219, 2221, 2222, 2228, 2236, 2238, 2239, 2247, 2250, 2251, 2255, 2261, 2267, 2276, 2279, 2280, 2283, 2286, 2289, 2291, 2297, 2300, 2301, 2304, 2312, 2319, 2330, 2337, 2344, 2351, 2358, 2366, 2373, 2383, 2393, 2400, 2407, 2414, 2422, 2429, 2438, 2447, 2456, 2465, 2472, 2479, 2487, 2495, 2504, 2511, 2521, 2528, 2536, 2539, 2542, 2545, 2548, 2550, 2553, 2555, 2556, 2564, 2571, 2576, 2577, 2579, 2583, 2588, 2590, 2594, 2596, 2599, 2602, 2605, 2608, 2610, 2612, 2623, 2637, 2640, 2641, 2644, 2647, 2649, 2650, 2656, 2661, 2666, 2678, 2693, 2706, 2722, 2728, 2736, 2748, 2751, 2753, 2758, 2759, 2768, 2780, 2782, 2784, 2792, 2802, 2811, 2822, 2831, 2836, 2837, 2843, 2844, 2847, 2848, 2851, 2852, 2855, 2856, 2859, 2860, 2862, 2864, 2866, 2868, 2870, 2879, 2881, 2883, 2900, 2921, 2923, 2925, 2928, 2930, 2934, 2936, 2938, 2940, 2944, 2946, 2949, 2950, 2952, 2955, 2960, 2962, 2964, 2966, 2968, 2970, 2974, 2975, 2977, 2978, 2980, 2982, 2987, 2988, 2990, 2992, 2994, 2998, 2999, 3001, 3003, 3005, 3007, 3010, 3011, 3012, 3015, 3018, 3020, 3023, 3026, 3029, 3032, 3044, 3058, 3060, 3064, 3070, 3072, 3076, 3082, 3084, 3087, 3090, 3092, 3101, 3108, 3114, 3119, 3124, 3128, 3136, 3145, 3152, 3159, 3166, 3173, 3180, 3185, 3193, 3199, 3208, 3212, 3214, 3218, 3222, 3224, 3226, 3228, 3230, 3232, 3234, 3236, 3240, 3242, 3246, 3250, 3252, 3253, 3255, 3259, 3267, 3277, 3287, 3296, 3300, 3301, 3315, 3317, 3321, 3327, 3333, 3337, 3344, 3347, 3349, 3350, 3353, 3354, 3357, 3362, 3363, 3365, 3366, 3373, 3382, 3391, 3393, 3397, 3403, 3409, 3417, 3427, 3435, 3445, 3451, 3458, 3465, 3470, 3477, 3482, 3489, 3498, 3503, 3510, 3515, 3522, 3528, 3536, 3538, 3540, 3542, 3545, 3547, 3550, 3552, 3554, 3556, 3560, 3564, 3568, 3572, 3575, 3578, 3580, 3584, 3586, 3588, 3590, 3592, 3594, 3596, 3598, 3602, 3604, 3607, 3610, 3614, 3616, 3620, 3626, 3629, 3632, 3633, 3640, 3647, 3654, 3661, 3668, 3675, 3682, 3691, 3701, 3710, 3717, 3724, 3733, 3743, 3752, 3762, 3772, 3780, 3791, 3793, 3795, 3797, 3799, 3801, 3803, 3806, 3808, 3810, 3813, 3817, 3821, 3825, 3829, 3832, 3834, 3837, 3839, 3843, 3846, 3848, 3850, 3852, 3854, 3856, 3858, 3860, 3862, 3871, 3880, 3889, 3898, 3907, 3916, 3926, 3935, 3944, 3947, 3948, 3950, 3953, 3955, 3957, 3959, 3962, 3964, 3967, 3970, 3972, 3974, 3976, 3978, 3980, 3982, 3984, 3987, 3990, 3992, 3995, 3999, 4003, 4007, 4011, 4016, 4021, 4025, 4029, 4033, 4038, 4043, 4047, 4052, 4057, 4059, 4061, 4063, 4064, 4072, 4080, 4091, 4093, 4095, 4098, 4103, 4109, 4111, 4115, 4118, 4121, 4124, 4127, 4129, 4132, 4135, 4140, 4144, 4147, 4150, 4153, 4156, 4159, 4162, 4166, 4169, 4172, 4175, 4181, 4187, 4193, 4199, 4205, 4207, 4211, 4213, 4216, 4220, 4221, 4228, 4235, 4245, 4249, 4250, 4254, 4255, 4261, 4264, 4265, 4269, 4273, 4277, 4285, 4293, 4304, 4306, 4308, 4310, 4312, 4314, 4316, 4332, 4351, 4353, 4354, 4356, 4357, 4359, 4360, 4363, 4364, 4366, 4370, 4375, 4381, 4384, 4387, 4392, 4397, 4398, 4400, 4404, 4407, 4408, 4410, 4411, 4413, 4415, 4416, 4419, 4422, 4423, 4432, 4444, 4451, 4458, 4461, 4462, 4466, 4469, 4471, 4475, 4477, 4481, 4484, 4486, 4488, 4491, 4495, 4498, 4500, 4504, 4508, 4512, 4515, 4518, 4520, 4522, 4524, 4526, 4529, 4531, 4533, 4535, 4537, 4542, 4548, 4550, 4554, 4558, 4560, 4564, 4568, 4574, 4581, 4583, 4587, 4590, 4592, 4596, 4598, 4601, 4606, 4612, 4614, 4616, 4618, 4620, 4624, 4628, 4631, 4634, 4636, 4639, 4642, 4645, 4648, 4650, 4653, 4656, 4659, 4662, 4664, 4666, 4668, 4672, 4676, 4682, 4685, 4686, 4689, 4691, 4695, 4701, 4707, 4713, 4715, 4718, 4720, 4721, 4726, 4733, 4738, 4745, 4750, 4757, 4762, 4769, 4774, 4781, 4785, 4791, 4797, 4803, 4805, 4809, 4811, 4815, 4818, 4821, 4823, 4826, 4828, 4831, 4843, 4854, 4865, 4868, 4871, 4872, 4882, 4885, 4886, 4897, 4909, 4921, 4927, 4933, 4942, 4947, 4952, 4960, 4968, 4970, 4972, 4974, 4976, 4978, 4980, 4984, 4986, 4992, 4998, 5005, 5012, 5019, 5026, 5033, 5042, 5051, 5058, 5065, 5073, 5083, 5093, 5102, 5113, 5120, 5127, 5134, 5141, 5148, 5155, 5162, 5171, 5178, 5187, 5194, 5203, 5211, 5221, 5228, 5237, 5245, 5255, 5264, 5275, 5284, 5295, 5305, 5317, 5326, 5337, 5347, 5359, 5368, 5377, 5385, 5392, 5399, 5406, 5413, 5422, 5431, 5440, 5449, 5456, 5466, 5468, 5469, 5472, 5473, 5482, 5491, 5500, 5511, 5521, 5530, 5532, 5533, 5540, 5547, 5554, 5561, 5568, 5575, 5582, 5592, 5602, 5609, 5616, 5623, 5632, 5639, 5648, 5657, 5666, 5675, 5682, 5691, 5698, 5707, 5715, 5725, 5733, 5743, 5750, 5758, 5760, 5764, 5768, 5772, 5774, 5776, 5778, 5780, 5782, 5790, 5797, 5804, 5811, 5818, 5825, 5832, 5840, 5848, 5855, 5865, 5875, 5882, 5889, 5896, 5903, 5910, 5917, 5926, 5935, 5944, 5951, 5959, 5966, 5973, 5979, 5981, 5982, 5986, 5990, 5996, 6003, 6010, 6017, 6026, 6028, 6032, 6034, 6040, 6046, 6053, 6061, 6066, 6071, 6076, 6083, 6097, 6099, 6101, 6105, 6109, 6111, 6113, 6115, 6117, 6119, 6121, 6123, 6124, 6126, 6128, 6130, 6132, 6134, 6136, 6137, 6141, 6144, 6145, 6148, 6151, 6154, 6158, 6162, 6166, 6170, 6174, 6178, 6181, 6185, 6188, 6194, 6199, 6203, 6207, 6211, 6213, 6215, 6216, 6220, 6223, 6226, 6228, 6231, 6233, 6237, 6240, 6242, 6243, 6246, 6250, 6251, 6261, 6273, 6286, 6301, 6305, 6310, 6315, 6316, 6319, 6325, 6327, 6328, 6330, 6333, 6337, 6341, 6345, 6347, 6350, 6352, 6354, 6356, 6358, 6360, 6362, 6363, 6369, 6374, 6381, 6386, 6390, 6396, 6404, 6414, 6416, 6420, 6422, 6428, 6433, 6438, 6445, 6450, 6457, 6464, 6470, 6478, 6488, 6495, 6497, 6498, 6505, 6517, 6529, 6541, 6555, 6565, 6577, 6579, 6581, 6592, 6597, 6600, 6606, 6609, 6610, 6617, 6623, 6627, 6633, 6635, 6639, 6641, 6643, 6646, 6648, 6650, 6652, 6654, 6655, 6657, 6658, 6660, 6661, 6663, 6664, 6666, 6667, 6671, 6672, 6675, 6677, 6681, 6683, 6684, 6687, 6692, 6696, 6702, 6704, 6706, 6708, 6710, 6712, 6714, 6716, 6718, 6720, 6722, 6726, 6729, 6731, 6733, 6735, 6737, 6738, 6744, 6748, 6749, 6751, 6753, 6755, 6757, 6761, 6771, 6784, 6788, 6789, 6792, 6796, 6799, 6803, 6811, 6813, 6817, 6819, 6824, 6829, 6837, 6840, 6842, 6844, 6846, 6850, 6853, 6862, 6868, 6869, 6874, 6878, 6879, 6882, 6883, 6891, 6894, 6895, 6901, 6905, 6906, 6909, 6912, 6915, 6919, 6921, 6925, 6927, 6930, 6932, 6933, 6935, 6938, 6939, 6948, 6950, 6954, 6958, 6964, 6967, 6969, 6973, 6981, 6983, 6984, 6988, 6991, 6994, 6997, 6998, 7001, 7004, 7006, 7008, 7012, 7016, 7018, 7021, 7026, 7031, 7034, 7038, 7044, 7050, 7052, 7054, 7064, 7074, 7076, 7079, 7084, 7089, 7094, 7097, 7100, 7104, 7106, 7110, 7118, 7120, 7123, 7124, 7126, 7127, 7130, 7131, 7135, 7139, 7144, 7149, 7154, 7159, 7163, 7166, 7168, 7170, 7171, 7173, 7175, 7176, 7178, 7184, 7186, 7187, 7189, 7190, 7194, 7196, 7200, 7205, 7209, 7212, 7215, 7217, 7219, 7221, 7222, 7225, 7230, 7236, 7243, 7248, 7254, 7257, 7261, 7263, 7265, 7267, 7269, 7272, 7275, 7277, 7279, 7281, 7283, 7285, 7287, 7291, 7292, 7294, 7298, 7300, 7302, 7304, 7306, 7308, 7311, 7316, 7321, 7327, 7330, 7331, 7333, 7337, 7339, 7340, 7342, 7345, 7349, 7352, 7357, 7360, 7364, 7367, 7368, 7373, 7379, 7382, 7383, 7385, 7389, 7392, 7396, 7399, 7403, 7406, 7410, 7413, 7417, 7419, 7424, 7428, 7433, 7439, 7444, 7450, 7455, 7461, 7464, 7469, 7471, 7473, 7474, 7476, 7481, 7487, 7492, 7493, 7496, 7499, 7502, 7504, 7506, 7507, 7512, 7515, 7517, 7520, 7523, 7528, 7530, 7534, 7536, 7539, 7543, 7550, 7555, 7556, 7559, 7566, 7569, 7571, 7575, 7580, 7581, 7584, 7585, 7588, 7589, 7592, 7597, 7598, 7600, 7601, 7603, 7607, 7611, 7619, 7632, 7634, 7638, 7641, 7645, 7649, 7651, 7654, 7657, 7660, 7663, 7665, 7667, 7671, 7675, 7678, 7681, 7685, 7691, 7698, 7701, 7705, 7709, 7714, 7715, 7717, 7719, 7721, 7723, 7725, 7728, 7733, 7735, 7737, 7739, 7741, 7744, 7748, 7752, 7753, 7755, 7757, 7759, 7761, 7763, 7766, 7769, 7772, 7775, 7778, 7780, 7784, 7785, 7787, 7789, 7791, 7793, 7799, 7802, 7804, 7806, 7808, 7810, 7815, 7817, 7820, 7823, 7825, 7829, 7833, 7836, 7838, 7839, 7845, 7848, 7854, 7857, 7859, 7863, 7867, 7868, 7870, 7872, 7874, 7876, 7878, 7880, 7884, 7888, 7892, 7896, 7900, 7904, 7908, 7909, 7911, 7916, 7918, 7922, 7926, 7932, 7935, 7938, 7942, 7946, 7950, 7954, 7958, 7962, 7966, 7970, 7974, 7978, 7982, 7986, 7990, 7993, 7996, 8000, 8003, 8007, 8011, 8014, 8017, 8021, 8027, 8032, 8039, 8043, 8049, 8054, 8061, 8066, 8073, 8079, 8087, 8091, 8094, 8099, 8102, 8106, 8110, 8115, 8119, 8124, 8128, 8133, 8139, 8146, 8153, 8161, 8168, 8176, 8183, 8191, 8195, 8200, 8205, 8212, 8215, 8219, 8224, 8228, 8233, 8238, 8244, 8246, 8248, 8252, 8255, 8258, 8262, 8266, 8270, 8274, 8278, 8282, 8286, 8290, 8294, 8298, 8302, 8306, 8310, 8313, 8317, 8320, 8323, 8329, 8336, 8343, 8351, 8355, 8360, 8362, 8364, 8367, 8370, 8375, 8377, 8379, 8381, 8384, 8387, 8390, 8393, 8395, 8397, 8402, 8406, 8412, 8419, 8428, 8435, 8442, 8447, 8452, 8454, 8456, 8458, 8464, 8466, 8468, 8473, 8475, 8480, 8482, 8487, 8489, 8494, 8496, 8498, 8500, 8502, 8504, 8506, 8513, 8518, 8523, 8530, 8535, 8540, 8545, 8552, 8558, 8564, 8570, 8575, 8582, 8587, 8592, 8597, 8602, 8608, 8616, 8624, 8634, 8640, 8645, 8652, 8658, 8666, 8674, 8682, 8685, 8689, 8693, 8697, 8702, 8703, 8708, 8710, 8714, 8718, 8720, 8722, 8724, 8727, 8730, 8731, 8734, 8738, 8742, 8747, 8750, 8753, 8759, 8760, 8766, 8767, 8770, 8771, 8773, 8777, 8781, 8784, 8787, 8788, 8795, 8797, 8798, 8802, 8803, 8807, 8811, 8815, 8816, 8818, 8823, 8826, 8829, 8832, 8835, 8838, 8842, 8845, 8848, 8852, 8853, 8858, 8862, 8868, 8873, 8877, 8883, 8885, 8887, 8889, 8891, 8893, 8895, 8897, 8899, 8901, 8903, 8905, 8907, 8909, 8911, 8913, 8915, 8917, 8919, 8921, 8926, 8928, 8933, 8935, 8940, 8942, 8945, 8947, 8950, 8952, 8956, 8958, 8962, 8964, 8968, 8972, 8974, 8978, 8982, 8986, 8989, 8991, 8995, 8999, 9003, 9007, 9008, 9010, 9012, 9014, 9016, 9018, 9020, 9022, 9024, 9026, 9028, 9030, 9032, 9037, 9041, 9044, 9048, 9049, 9053, 9057, 9060, 9063, 9065, 9066, 9069, 9072, 9076, 9079, 9081, 9083, 9087, 9093, 9095, 9098, 9103, 9106, 9107, 9109, 9110, 9112, 9115, 9118, 9121, 9125, 9131, 9133, 9134, 9136, 9139, 9140, 9143, 9145, 9146, 9148, 9149, 9151, 9155, 9159, 9162, 9164, 9166, 9168, 9172, 9174, 9177, 9179, 9183, 9185, 9187, 9189, 9191, 9193, 9195, 9197, 9200, 9202, 9204, 9206, 9208, 9210, 9213, 9220, 9223, 9230, 9233, 9237, 9243, 9246, 9250, 9256, 9262, 9264, 9266, 9268, 9270, 9272, 9274, 9277, 9280, 9282, 9284, 9286, 9288, 9290, 9294, 9296, 9298, 9300, 9302, 9304, 9306, 9308, 9310, 9312, 9314, 9316, 9318, 9320, 9322, 9324, 9326, 9328, 9330, 9332, 9334, 9336, 9338, 9340, 9342, 9344, 9346, 9348, 9350, 9352, 9354, 9356, 9358, 9360, 9362, 9364, 9366, 9368, 9370, 9372, 9374, 9376, 9378, 9380, 9382, 9384, 9386, 9388, 9390, 9392, 9394, 9396, 9398, 9400, 9402, 9404, 9406, 9408, 9410, 9412, 9414, 9416, 9418, 9420, 9422, 9424, 9426, 9428, 9430, 9432, 9434, 9436, 9438, 9440, 9442, 9444, 9446, 9448, 9450, 9452, 9454, 9456, 9458, 9460, 9462, 9464, 9466, 9468, 9470, 9472, 9474, 9476, 9478, 9480, 9482, 9484, 9486, 9488, 9490, 9492, 9494, 9496, 9498, 9500, 9502, 9504, 9506, 9508, 9510, 9512, 9514, 9516, 9518, 9520, 9522, 9524, 9526, 9528, 9530, 9532, 9534, 9536, 9538, 9540, 9542, 9544, 9546, 9548, 9550, 9552, 9554, 9556, 9558, 9560, 9562, 9564, 9566, 9568, 9570, 9572, 9574, 9576, 9578, 9580, 9582, 9584, 9586, 9588, 9590, 9592, 9594, 9596, 9598, 9600, 9602, 9604, 9606, 9608, 9610, 9612, 9614, 9616, 9618, 9620, 9622, 9624, 9626, 9628, 9630, 9632, 9634, 9636, 9638, 9640, 9642, 9644, 9646, 9648, 9650, 9652, 9654, 9656, 9658, 9660, 9662, 9664, 9666, 9668, 9670, 9672, 9674, 9676, 9678, 9680, 9682, 9684, 9686, 9688, 9690, 9692, 9694, 9696, 9698, 9700, 9702, 9704, 9706, 9708, 9710, 9712, 9714, 9716, 9718, 9720, 9722, 9724, 9726, 9728, 9730, 9732, 9734, 9736, 9738, 9740, 9742, 9744, 9746, 9748, 9750, 9752, 9754, 9756, 9758, 9760, 9762, 9764, 9766, 9768, 9770, 9772, 9774, 9776, 9778, 9780, 9782, 9784, 9786, 9788, 9790, 9792, 9794, 9796, 9798, 9800, 9802, 9804, 9806, 9808, 9810, 9812, 9814, 9816, 9818, 9820, 9822, 9824, 9826, 9828, 9830, 9832, 9834, 9836, 9838, 9840, 9842, 9844, 9846, 9848, 9850, 9852, 9854, 9856, 9858, 9860, 9862, 9864, 9866, 9868, 9870, 9872, 9874, 9876, 9878, 9880, 9882, 9884, 9886, 9888, 9890, 9892, 9894, 9896, 9898, 9900, 9902, 9904, 9906, 9908, 9910, 9912, 9914, 9916, 9918, 9920, 9922, 9924, 9926, 9928, 9930, 9932, 9934, 9936, 9938, 9940, 9942, 9944, 9946, 9948, 9950, 9952, 9954, 9956, 9958, 9960, 9962, 9964, 9966, 9968, 9970, 9972, 9974, 9976, 9978, 9980, 9982, 9984, 9986, 9988, 9990, 9992, 9994, 9996, 9998, 10000, 10002, 10004, 10006, 10008, 10010, 10012, 10014, 10016, 10018, 10020, 10022, 10024, 10026, 10028, 10030, 10032, 10034, 10036, 10038, 10040, 10042, 10044, 10046, 10048, 10050, 10052, 10054, 10056, 10058, 10060, 10062, 10064, 10066, 10068, 10070, 10072, 10074, 10076, 10078, 10080, 10082, 10084, 10086, 10088, 10090, 10092, 10094, 10096, 10098, 10100, 10102, 10104, 10106, 10108, 10110, 10112, 10114, 10116, 10118, 10120, 10122, 10124, 10126, 10128, 10130, 10132, 10134, 10136, 10138, 10140, 10142, 10144, 10146, 10148, 10150, 10152, 10154, 10156, 10158, 10160, 10162, 10164, 10166, 10168, 10170, 10172, 10174, 10176, 10178, 10180, 10182, 10184, 10186, 10188, 10190, 10192, 10194, 10196, 10198, 10200, 10202, 10204, 10206, 10208, 10210, 10212, 10214, 10216, 10218, 10220, 10222 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 496, 0, -1, 497, -1, 497, 492, 498, -1, 498, -1, 721, -1, 911, -1, 906, -1, 907, -1, 787, -1, 914, -1, 734, -1, 655, -1, 658, -1, 663, -1, 676, -1, 678, -1, 833, -1, 512, -1, 862, -1, 864, -1, 870, -1, 865, -1, 869, -1, 687, -1, 633, -1, 912, -1, 541, -1, 858, -1, 560, -1, 874, -1, 509, -1, 507, -1, 878, -1, 624, -1, 917, -1, 916, -1, 685, -1, 923, -1, 499, -1, 539, -1, 563, -1, 920, -1, 761, -1, 536, -1, 564, -1, 695, -1, 625, -1, 723, -1, 846, -1, 919, -1, 913, -1, 652, -1, 659, -1, 672, -1, 677, -1, 806, -1, 511, -1, 628, -1, 736, -1, 743, -1, 871, -1, 744, -1, 686, -1, 641, -1, 514, -1, 632, -1, 579, -1, 875, -1, 623, -1, 649, -1, 850, -1, 697, -1, 717, -1, 500, -1, 506, -1, 682, -1, 900, -1, 948, -1, 970, -1, 724, -1, 958, -1, 540, -1, 843, -1, 848, -1, 747, -1, 748, -1, 749, -1, 647, -1, 751, -1, 879, -1, 651, -1, 852, -1, 510, -1, 684, -1, 908, -1, 946, -1, 937, -1, 770, -1, 774, -1, 783, -1, 679, -1, 792, -1, 949, -1, 889, -1, 631, -1, 899, -1, 960, -1, 887, -1, 943, -1, 750, -1, 853, -1, 837, -1, 836, -1, 838, -1, 859, -1, 775, -1, 784, -1, 880, -1, 765, -1, 974, -1, 891, -1, 759, -1, 890, -1, 965, -1, 922, -1, 530, -1, 518, -1, 535, -1, 897, -1, -1, 59, 1077, -1, 95, 345, 1157, 501, 502, -1, 451, -1, 474, -1, -1, 502, 505, -1, -1, 503, 504, -1, -1, 302, 1155, -1, 302, 12, -1, 302, 478, -1, 302, 270, -1, 140, 302, 1155, -1, 140, 302, 12, -1, 140, 302, 478, -1, 423, 302, 1155, -1, 198, -1, 87, 230, 1156, -1, 434, 429, 1155, -1, 431, 1159, -1, 3, -1, 504, -1, 394, 1154, -1, 27, 1159, -1, 345, 1159, -1, 192, 345, 1159, -1, 192, 177, 1159, -1, 95, 431, 1157, 501, 502, -1, 32, 345, 1158, 501, 503, -1, 32, 431, 1158, 501, 503, -1, -1, 192, 110, 1147, -1, 32, 345, 1158, 508, 533, -1, 32, 345, 30, 508, 533, -1, 32, 431, 1158, 508, 533, -1, 32, 431, 30, 508, 533, -1, 135, 345, 1159, -1, 135, 345, 186, 150, 1159, -1, 135, 431, 1159, -1, 135, 431, 186, 150, 1159, -1, 135, 177, 1159, -1, 135, 177, 186, 150, 1159, -1, 95, 177, 1157, 501, 502, -1, 32, 177, 1158, 513, 431, 1159, -1, 26, -1, 135, -1, 95, 354, 515, 47, 1158, 516, -1, 95, 354, 1160, 516, -1, 95, 354, 186, 265, 150, 515, 47, 1158, 516, -1, 95, 354, 186, 265, 150, 1160, 516, -1, 1160, -1, -1, 516, 517, -1, -1, 579, -1, 792, -1, 632, -1, 697, -1, 774, -1, 897, -1, 367, 519, -1, 367, 233, 519, -1, 367, 365, 519, -1, 410, 894, -1, 365, 69, 39, 410, 894, -1, 521, -1, 522, 408, 523, -1, 522, 477, 523, -1, 522, 408, 116, -1, 522, 477, 116, -1, 520, -1, 522, 168, 99, -1, 406, 471, 527, -1, 65, 1155, -1, 354, 1155, -1, 354, 12, -1, 354, 478, -1, 251, 528, -1, 345, 529, -1, 345, 12, -1, 345, 478, -1, 365, 47, 529, -1, 365, 47, 12, -1, 365, 47, 478, -1, 365, 47, 116, -1, 457, 283, 1086, -1, 410, 376, 1155, -1, 1160, -1, 522, 491, 1160, -1, 524, -1, 523, 493, 524, -1, 526, -1, 639, -1, 12, -1, 478, -1, 322, 422, -1, 322, 83, -1, 335, 322, -1, 363, -1, 415, -1, 156, -1, 280, -1, 529, -1, 1155, -1, 12, -1, 478, -1, 3, -1, 1070, 1155, 1072, -1, 1070, 489, 1154, 490, 1155, -1, 639, -1, 116, -1, 233, -1, 1155, -1, 116, -1, -1, 1162, -1, 1155, -1, 338, 531, -1, 532, -1, 406, 471, -1, 410, 216, 228, -1, 365, 47, -1, 522, -1, 30, -1, 367, 519, -1, 530, -1, 367, 521, -1, 530, -1, 371, 522, -1, 371, 406, 471, -1, 371, 410, 216, 228, -1, 371, 365, 47, -1, 371, 30, -1, 367, 89, 537, 538, -1, 30, -1, 1143, -1, 119, -1, 188, -1, 71, -1, 129, 30, -1, 129, 400, -1, 129, 402, -1, 129, 304, -1, 129, 362, -1, 32, 396, 1029, 542, -1, 32, 396, 186, 150, 1029, 542, -1, 32, 396, 1029, 543, -1, 32, 396, 186, 150, 1029, 543, -1, 32, 396, 30, 192, 399, 1146, 367, 399, 1146, 963, -1, 32, 396, 30, 192, 399, 1146, 295, 57, 1159, 367, 399, 1146, 963, -1, 32, 196, 1144, 542, -1, 32, 196, 186, 150, 1144, 542, -1, 32, 196, 1144, 544, -1, 32, 196, 30, 192, 399, 1146, 367, 399, 1146, 963, -1, 32, 196, 30, 192, 399, 1146, 295, 57, 1159, 367, 399, 1146, 963, -1, 32, 361, 1144, 542, -1, 32, 361, 186, 150, 1144, 542, -1, 32, 444, 1144, 542, -1, 32, 444, 186, 150, 1144, 542, -1, 32, 242, 444, 1144, 542, -1, 32, 242, 444, 186, 150, 1144, 542, -1, 32, 242, 444, 30, 192, 399, 1146, 367, 399, 1146, 963, -1, 32, 242, 444, 30, 192, 399, 1146, 295, 57, 1159, 367, 399, 1146, 963, -1, 545, -1, 542, 493, 545, -1, 45, 300, 1144, 557, -1, 126, 300, 1144, -1, 45, 300, 1144, -1, 26, 587, -1, 26, 186, 265, 150, 587, -1, 26, 78, 587, -1, 26, 78, 186, 265, 150, 587, -1, 32, 860, 1160, 546, -1, 32, 860, 1160, 135, 265, 270, -1, 32, 860, 1160, 367, 265, 270, -1, 32, 860, 1160, 135, 152, -1, 32, 860, 1160, 135, 152, 186, 150, -1, 32, 860, 1160, 367, 383, 1156, -1, 32, 860, 1154, 367, 383, 1156, -1, 32, 860, 1160, 367, 551, -1, 32, 860, 1160, 338, 551, -1, 32, 860, 1160, 367, 386, 1160, -1, 32, 860, 1160, 26, 172, 592, 39, 185, 635, -1, 32, 860, 1160, 555, -1, 32, 860, 1160, 135, 185, -1, 32, 860, 1160, 135, 185, 186, 150, -1, 135, 860, 186, 150, 1160, 547, -1, 135, 860, 1160, 547, -1, 32, 860, 1160, 861, 418, 1051, 548, 549, -1, 32, 860, 1160, 666, -1, 26, 597, -1, 32, 88, 1146, 715, -1, 435, 88, 1146, -1, 135, 88, 186, 150, 1146, 547, -1, 135, 88, 1146, 547, -1, 367, 453, 278, -1, 74, 280, 1146, -1, 367, 453, 74, -1, 367, 239, -1, 367, 428, -1, 138, 413, 1146, -1, 138, 33, 413, 1146, -1, 138, 337, 413, 1146, -1, 138, 413, 30, -1, 138, 413, 431, -1, 128, 413, 1146, -1, 128, 413, 30, -1, 128, 413, 431, -1, 138, 352, 1146, -1, 138, 33, 352, 1146, -1, 138, 337, 352, 1146, -1, 128, 352, 1146, -1, 198, 1144, -1, 261, 198, 1144, -1, 275, 756, -1, 265, 275, -1, 296, 408, 1158, -1, 367, 399, 1146, -1, 367, 551, -1, 338, 551, -1, 337, 185, 550, -1, 138, 350, 228, 359, -1, 128, 350, 228, 359, -1, 164, 350, 228, 359, -1, 261, 164, 350, 228, 359, -1, 666, -1, 367, 116, 1074, -1, 135, 116, -1, 61, -1, 340, -1, -1, 76, 756, -1, -1, 432, 1074, -1, -1, 266, -1, 169, -1, 116, -1, 432, 196, 1146, -1, 489, 553, 490, -1, 451, 551, -1, -1, 554, -1, 553, 493, 554, -1, 1163, 477, 728, -1, 1163, -1, 1163, 491, 1163, 477, 728, -1, 1163, 491, 1163, -1, 556, -1, 555, 556, -1, 339, -1, 339, 501, 639, -1, 367, 637, -1, 367, 172, 592, -1, 163, 438, 451, 489, 559, 490, -1, 163, 438, 192, 489, 1112, 490, -1, 163, 438, 168, 489, 1112, 490, 408, 489, 1112, 490, -1, 116, -1, 1162, 1154, -1, 558, -1, 559, 493, 558, -1, 32, 418, 756, 561, -1, 562, -1, 561, 493, 562, -1, 26, 46, 1043, 547, -1, 135, 46, 186, 150, 1160, 547, -1, 135, 46, 1160, 547, -1, 32, 46, 1160, 861, 418, 1051, 548, 547, -1, 73, 971, -1, 73, 30, -1, 93, 571, 1144, 600, 565, 566, 567, 572, 501, 568, 1039, -1, 93, 489, 945, 490, 408, 566, 567, 501, 568, -1, 168, -1, 408, -1, 318, -1, -1, 1155, -1, 384, -1, 385, -1, 569, -1, 489, 574, 490, -1, 569, 570, -1, -1, 53, -1, 167, -1, 122, 915, 1155, -1, 270, 915, 1155, -1, 97, -1, 182, -1, 320, 915, 1155, -1, 143, 915, 1155, -1, 164, 320, 601, -1, 164, 320, 482, -1, 164, 265, 270, 601, -1, 164, 270, 601, -1, 139, 1155, -1, 53, -1, -1, 573, 123, 1155, -1, -1, 432, -1, -1, 575, -1, 574, 493, 575, -1, 1163, 576, -1, 526, -1, 639, -1, 482, -1, 489, 577, 490, -1, -1, 578, -1, 577, 493, 578, -1, 526, -1, 95, 580, 396, 1144, 489, 581, 490, 612, 613, 617, 618, 619, 620, -1, 95, 580, 396, 186, 265, 150, 1144, 489, 581, 490, 612, 613, 617, 618, 619, 620, -1, 95, 580, 396, 1144, 275, 756, 582, 613, 617, 618, 619, 620, -1, 95, 580, 396, 186, 265, 150, 1144, 275, 756, 582, 613, 617, 618, 619, 620, -1, 95, 580, 396, 1144, 300, 275, 1144, 582, 557, 613, 617, 618, 619, 620, -1, 95, 580, 396, 186, 265, 150, 1144, 300, 275, 1144, 582, 557, 613, 617, 618, 619, 620, -1, 402, -1, 400, -1, 233, 402, -1, 233, 400, -1, 173, 402, -1, 173, 400, -1, 428, -1, -1, 583, -1, -1, 489, 584, 490, -1, -1, 585, -1, 583, 493, 585, -1, 586, -1, 584, 493, 586, -1, 587, -1, 594, -1, 597, -1, 588, -1, 597, -1, 1160, 1051, 664, 589, -1, 1160, 589, -1, 1160, 451, 284, 589, -1, 589, 590, -1, -1, 88, 1146, 591, -1, 591, -1, 593, -1, 76, 756, -1, 265, 270, -1, 270, -1, 425, 830, 621, -1, 312, 218, 830, 621, -1, 70, 489, 1074, 490, 599, -1, 116, 1075, -1, 172, 592, 39, 185, 635, -1, 172, 592, 39, 489, 1074, 490, 387, -1, 328, 1144, 600, 604, 608, -1, 33, -1, 57, 116, -1, 118, -1, 265, 118, -1, 200, 119, -1, 200, 188, -1, 229, 1144, 595, -1, 595, 194, 596, -1, 595, 147, 596, -1, -1, 81, -1, 89, -1, 117, -1, 185, -1, 172, -1, 197, -1, 383, -1, 386, -1, 30, -1, 88, 1146, 598, -1, 598, -1, 70, 489, 1074, 490, 715, -1, 425, 489, 601, 490, 603, 830, 621, 715, -1, 425, 622, 715, -1, 312, 218, 489, 601, 490, 603, 830, 621, 715, -1, 312, 218, 622, 715, -1, 146, 796, 489, 605, 490, 603, 830, 621, 607, 715, -1, 165, 218, 489, 601, 490, 328, 1144, 600, 604, 608, 715, -1, 261, 198, -1, -1, 489, 601, 490, -1, -1, 602, -1, 601, 493, 602, -1, 1160, -1, 193, 489, 601, 490, -1, -1, 241, 169, -1, 241, 299, -1, 241, 373, -1, -1, 606, -1, 605, 493, 606, -1, 799, 451, 840, -1, 799, 451, 282, 489, 840, 490, -1, 448, 489, 1074, 490, -1, -1, 609, -1, 610, -1, 609, 610, -1, 610, 609, -1, -1, 280, 430, 611, -1, 280, 121, 611, -1, 261, 25, -1, 340, -1, 61, -1, 367, 270, -1, 367, 116, -1, 199, 489, 1143, 490, -1, -1, 614, -1, -1, 300, 57, 1160, 489, 615, 490, -1, 616, -1, 615, 493, 616, -1, 1160, 802, 803, -1, 1079, 802, 803, -1, 489, 1074, 490, 802, 803, -1, 432, 1148, -1, -1, 451, 551, -1, 453, 278, -1, -1, 280, 82, 135, -1, 280, 82, 121, 351, -1, 280, 82, 309, 351, -1, -1, 399, 1146, -1, -1, 432, 196, 399, 1146, -1, -1, 432, 196, 1150, -1, 95, 383, 756, 933, 280, 1112, 168, 1020, -1, 95, 383, 186, 265, 150, 756, 933, 280, 1112, 168, 1020, -1, 32, 383, 756, 367, 383, 1156, -1, 32, 383, 186, 150, 756, 367, 383, 1156, -1, 95, 580, 396, 626, 39, 974, 627, -1, 95, 580, 396, 186, 265, 150, 626, 39, 974, 627, -1, 1144, 600, 617, 618, 619, 620, -1, 451, 109, -1, 451, 261, 109, -1, -1, 95, 630, 242, 444, 629, 39, 974, 627, -1, 95, 630, 242, 444, 186, 265, 150, 629, 39, 974, 627, -1, 1144, 600, 617, 552, 620, -1, 428, -1, -1, 330, 242, 444, 794, 1144, 627, -1, 95, 580, 361, 1144, 634, -1, 95, 580, 361, 186, 265, 150, 1144, 634, -1, 32, 361, 1144, 636, -1, 32, 361, 186, 150, 1144, 636, -1, 636, -1, -1, 489, 636, 490, -1, -1, 637, -1, 636, 637, -1, 39, 1053, -1, 58, 639, -1, 108, -1, 261, 108, -1, 195, 638, 639, -1, 243, 639, -1, 246, 639, -1, 261, 243, -1, 261, 246, -1, 295, 57, 756, -1, 361, 250, 756, -1, 381, 501, 639, -1, 339, -1, 339, 501, 639, -1, 57, -1, -1, 5, -1, 480, 5, -1, 481, 5, -1, 1156, -1, 639, -1, 640, 493, 639, -1, 95, 807, 642, 648, 220, 529, -1, 95, 807, 642, 648, 220, 529, 180, 643, 644, 646, -1, 417, -1, -1, 1146, -1, 1146, 757, -1, 201, 643, -1, -1, 436, 643, -1, 261, 436, -1, 645, -1, -1, 135, 648, 220, 529, 547, -1, 135, 648, 220, 186, 150, 529, 547, -1, 315, -1, -1, 95, 399, 1146, 650, 236, 1155, 552, -1, 296, 1158, -1, -1, 135, 399, 1146, -1, 135, 399, 186, 150, 1146, -1, 95, 153, 1146, 501, 653, -1, 95, 153, 186, 265, 150, 1146, 501, 653, -1, 653, 654, -1, -1, 354, 1146, -1, 443, 529, -1, 168, 529, -1, 61, -1, 32, 153, 1146, 430, 656, -1, 656, 657, -1, -1, 408, 529, -1, 32, 153, 1146, 513, 24, 244, 1146, -1, 32, 153, 1146, 513, 29, 823, -1, 32, 153, 1146, 513, 64, 489, 1051, 39, 1051, 490, -1, 32, 153, 1146, 513, 77, 756, -1, 32, 153, 1146, 513, 92, 756, -1, 32, 153, 1146, 513, 133, 1051, -1, 32, 153, 1146, 513, 170, 811, -1, 32, 153, 1146, 513, 648, 220, 1146, -1, 32, 153, 1146, 513, 282, 842, -1, 32, 153, 1146, 513, 282, 72, 756, 432, 1148, -1, 32, 153, 1146, 513, 282, 157, 756, 432, 1148, -1, 32, 153, 1146, 513, 316, 811, -1, 32, 153, 1146, 513, 348, 811, -1, 32, 153, 1146, 513, 354, 1146, -1, 32, 153, 1146, 513, 144, 413, 1146, -1, 32, 153, 1146, 513, 396, 756, -1, 32, 153, 1146, 513, 403, 357, 298, 756, -1, 32, 153, 1146, 513, 403, 357, 127, 756, -1, 32, 153, 1146, 513, 403, 357, 401, 756, -1, 32, 153, 1146, 513, 403, 357, 85, 756, -1, 32, 153, 1146, 513, 361, 756, -1, 32, 153, 1146, 513, 444, 756, -1, 32, 153, 1146, 513, 242, 444, 756, -1, 32, 153, 1146, 513, 165, 396, 756, -1, 32, 153, 1146, 513, 165, 109, 455, 1146, -1, 32, 153, 1146, 513, 364, 1146, -1, 32, 153, 1146, 513, 411, 163, 1051, 220, 1146, -1, 32, 153, 1146, 513, 418, 1051, -1, 95, 165, 109, 455, 1146, 662, 664, -1, 180, 643, -1, 261, 180, -1, 436, 643, -1, 261, 436, -1, 660, -1, 661, 660, -1, 661, -1, -1, 32, 165, 109, 455, 1146, 662, 666, -1, 32, 165, 109, 455, 1146, 661, -1, 284, 489, 665, 490, -1, -1, 669, -1, 665, 493, 669, -1, 284, 489, 667, 490, -1, 668, -1, 667, 493, 668, -1, 669, -1, 367, 669, -1, 26, 669, -1, 135, 670, -1, 670, 671, -1, 1163, -1, 1155, -1, 95, 364, 1146, 673, 675, 165, 109, 455, 1146, 664, -1, 95, 364, 186, 265, 150, 1146, 673, 675, 165, 109, 455, 1146, 664, -1, 418, 1155, -1, -1, 443, 1155, -1, 443, 270, -1, 674, -1, -1, 32, 364, 1146, 674, 666, -1, 32, 364, 1146, 674, -1, 32, 364, 1146, 666, -1, 95, 165, 396, 1144, 489, 581, 490, 612, 364, 1146, 664, -1, 95, 165, 396, 186, 265, 150, 1144, 489, 581, 490, 612, 364, 1146, 664, -1, 95, 165, 396, 1144, 300, 275, 1144, 582, 557, 364, 1146, 664, -1, 95, 165, 396, 186, 265, 150, 1144, 300, 275, 1144, 582, 557, 364, 1146, 664, -1, 32, 165, 396, 1029, 542, -1, 32, 165, 396, 186, 150, 1029, 542, -1, 191, 165, 354, 1146, 681, 168, 364, 1146, 212, 1146, 664, -1, 230, 408, -1, 145, -1, 680, 489, 1030, 490, -1, -1, 95, 431, 240, 163, 683, 364, 1146, 664, -1, 95, 431, 240, 186, 265, 150, 163, 683, 364, 1146, 664, -1, 1158, -1, 431, -1, 135, 431, 240, 163, 683, 364, 1146, -1, 135, 431, 240, 186, 150, 163, 683, 364, 1146, -1, 32, 431, 240, 163, 683, 364, 1146, 666, -1, 95, 305, 1146, 280, 1144, 692, 693, 690, 688, 689, -1, 32, 305, 1146, 280, 1144, 691, 688, 689, -1, 432, 489, 1074, 490, -1, -1, 451, 70, 489, 1074, 490, -1, -1, 408, 1159, -1, -1, 408, 1159, -1, -1, 39, 3, -1, -1, 163, 694, -1, -1, 30, -1, 360, -1, 206, -1, 430, -1, 121, -1, 95, 24, 244, 1146, 418, 696, 180, 643, -1, 196, -1, 396, -1, 95, 413, 1146, 698, 699, 280, 1144, 701, 707, 710, 149, 711, 1152, 489, 712, 490, -1, 95, 88, 413, 1146, 28, 699, 280, 1144, 714, 715, 163, 136, 350, 710, 149, 711, 1152, 489, 712, 490, -1, 49, -1, 28, -1, 207, 275, -1, 700, -1, 699, 285, 700, -1, 206, -1, 121, -1, 430, -1, 430, 275, 601, -1, 416, -1, 329, 702, -1, -1, 703, -1, 702, 703, -1, 704, 705, 915, 706, -1, 255, -1, 279, -1, 396, -1, 350, -1, 1160, -1, 163, 708, 709, -1, -1, 136, -1, -1, 350, -1, 382, -1, 447, 489, 1074, 490, -1, -1, 170, -1, 316, -1, 713, -1, 712, 493, 713, -1, -1, 1154, -1, 5, -1, 1155, -1, 1163, -1, 168, 1144, -1, -1, -1, 715, 716, -1, 265, 118, -1, 118, -1, 200, 188, -1, 200, 119, -1, 265, 434, -1, 261, 198, -1, 95, 144, 413, 1146, 280, 1163, 149, 711, 1152, 489, 490, -1, 95, 144, 413, 1146, 280, 1163, 447, 718, 149, 711, 1152, 489, 490, -1, 719, -1, 718, 36, 719, -1, 1160, 192, 489, 720, 490, -1, 6, -1, 720, 493, 6, -1, 32, 144, 413, 1146, 722, -1, 138, -1, 138, 337, -1, 138, 33, -1, 128, -1, 95, 41, 756, 70, 489, 1074, 490, 715, -1, 95, 807, 29, 1152, 821, 725, -1, 95, 807, 29, 1152, 729, -1, 95, 282, 840, 725, -1, 95, 418, 756, 725, -1, 95, 418, 756, -1, 95, 418, 756, 39, 489, 1041, 490, -1, 95, 418, 756, 39, 142, 489, 732, 490, -1, 95, 418, 756, 39, 321, 725, -1, 95, 403, 357, 298, 756, 725, -1, 95, 403, 357, 127, 756, 725, -1, 95, 403, 357, 401, 756, 725, -1, 95, 403, 357, 85, 756, 725, -1, 95, 77, 756, 725, -1, 95, 77, 186, 265, 150, 756, 725, -1, 95, 77, 756, 168, 756, -1, 95, 77, 186, 265, 150, 756, 168, 756, -1, 489, 726, 490, -1, 727, -1, 726, 493, 727, -1, 1163, 477, 728, -1, 1163, -1, 818, -1, 1167, -1, 1110, -1, 639, -1, 1155, -1, 262, -1, 489, 730, 490, -1, 731, -1, 730, 493, 731, -1, 3, 477, 728, -1, 733, -1, -1, 1155, -1, 733, 493, 1155, -1, 32, 418, 756, 26, 437, 735, 1155, -1, 32, 418, 756, 26, 437, 735, 1155, 49, 1155, -1, 32, 418, 756, 26, 437, 735, 1155, 28, 1155, -1, 32, 418, 756, 334, 437, 1155, 408, 1155, -1, 186, 265, 150, -1, -1, 95, 282, 72, 756, 739, 163, 418, 1051, 432, 1148, 740, 39, 737, -1, 738, -1, 737, 493, 738, -1, 282, 1154, 840, 741, 742, -1, 282, 1154, 842, 741, 742, -1, 170, 1154, 811, -1, 170, 1154, 489, 1115, 490, 811, -1, 386, 1051, -1, 116, -1, -1, 157, 756, -1, -1, 163, 357, -1, 163, 286, 57, 756, -1, -1, 325, -1, -1, 95, 282, 157, 756, 432, 1148, -1, 32, 282, 157, 756, 432, 1148, 26, 737, -1, 32, 282, 157, 756, 432, 1148, 135, 745, -1, 746, -1, 745, 493, 746, -1, 282, 1154, 489, 1115, 490, -1, 170, 1154, 489, 1115, 490, -1, 135, 282, 72, 756, 432, 1148, 547, -1, 135, 282, 72, 186, 150, 756, 432, 1148, 547, -1, 135, 282, 157, 756, 432, 1148, 547, -1, 135, 282, 157, 186, 150, 756, 432, 1148, 547, -1, 135, 295, 57, 1159, 547, -1, 324, 295, 57, 1159, 408, 1158, -1, 135, 752, 186, 150, 755, 547, -1, 135, 752, 755, 547, -1, 135, 753, 186, 150, 1145, 547, -1, 135, 753, 1145, 547, -1, 135, 754, 1146, 280, 756, 547, -1, 135, 754, 186, 150, 1146, 280, 756, 547, -1, 135, 418, 758, 547, -1, 135, 418, 186, 150, 758, 547, -1, 135, 133, 758, 547, -1, 135, 133, 186, 150, 758, 547, -1, 135, 196, 84, 755, 547, -1, 135, 196, 84, 186, 150, 755, 547, -1, 396, -1, 361, -1, 444, -1, 242, 444, -1, 196, -1, 165, 396, -1, 77, -1, 92, -1, 383, -1, 403, 357, 298, -1, 403, 357, 127, -1, 403, 357, 401, -1, 403, 357, 85, -1, 24, 244, -1, 144, 413, -1, 153, -1, 165, 109, 455, -1, 319, -1, 354, -1, 364, -1, 305, -1, 352, -1, 413, -1, 756, -1, 755, 493, 756, -1, 1160, -1, 1160, 757, -1, 491, 1149, -1, 757, 491, 1149, -1, 1051, -1, 758, 493, 1051, -1, 416, 986, 1030, 760, 547, -1, 91, 185, -1, 339, 185, -1, -1, 80, 280, 762, 756, 214, 764, -1, 80, 280, 763, 1146, 214, 764, -1, 80, 280, 418, 1051, 214, 764, -1, 80, 280, 133, 1051, 214, 764, -1, 80, 280, 29, 823, 214, 764, -1, 80, 280, 170, 811, 214, 764, -1, 80, 280, 282, 842, 214, 764, -1, 80, 280, 88, 1146, 280, 756, 214, 764, -1, 80, 280, 88, 1146, 280, 133, 756, 214, 764, -1, 80, 280, 305, 1146, 280, 756, 214, 764, -1, 80, 280, 316, 811, 214, 764, -1, 80, 280, 348, 811, 214, 764, -1, 80, 280, 352, 1146, 280, 756, 214, 764, -1, 80, 280, 411, 163, 1051, 220, 1146, 214, 764, -1, 80, 280, 413, 1146, 280, 756, 214, 764, -1, 80, 280, 282, 72, 756, 432, 1148, 214, 764, -1, 80, 280, 282, 157, 756, 432, 1148, 214, 764, -1, 80, 280, 221, 274, 639, 214, 764, -1, 80, 280, 64, 489, 1051, 39, 1051, 490, 214, 764, -1, 78, -1, 196, -1, 361, -1, 383, -1, 396, -1, 444, -1, 242, 444, -1, 77, -1, 92, -1, 165, 396, -1, 403, 357, 85, -1, 403, 357, 127, -1, 403, 357, 298, -1, 403, 357, 401, -1, 24, 244, -1, 110, -1, 144, 413, -1, 153, -1, 165, 109, 455, -1, 648, 220, -1, 319, -1, 345, -1, 354, -1, 364, -1, 390, -1, 399, -1, 1155, -1, 270, -1, 359, 219, 766, 280, 767, 756, 214, 769, -1, 359, 219, 766, 280, 768, 1146, 214, 769, -1, 359, 219, 766, 280, 418, 1051, 214, 769, -1, 359, 219, 766, 280, 133, 1051, 214, 769, -1, 359, 219, 766, 280, 29, 823, 214, 769, -1, 359, 219, 766, 280, 170, 811, 214, 769, -1, 359, 219, 766, 280, 221, 274, 639, 214, 769, -1, 359, 219, 766, 280, 316, 811, 214, 769, -1, 359, 219, 766, 280, 348, 811, 214, 769, -1, 163, 529, -1, -1, 78, -1, 165, 396, -1, 361, -1, 396, -1, 444, -1, 242, 444, -1, 110, -1, 144, 413, -1, 648, 220, -1, 319, -1, 345, -1, 354, -1, 390, -1, 399, -1, 1155, -1, 270, -1, 158, 771, -1, 249, 771, -1, 971, -1, 772, 971, -1, 256, 773, 971, -1, 313, 773, 971, -1, 160, 773, 971, -1, 222, 773, 971, -1, 23, 1156, 773, 971, -1, 332, 1156, 773, 971, -1, 1156, 773, 971, -1, 30, 773, 971, -1, 166, 773, 971, -1, 166, 1156, 773, 971, -1, 166, 30, 773, 971, -1, 48, 773, 971, -1, 48, 1156, 773, 971, -1, 48, 30, 773, 971, -1, 168, -1, 192, -1, 772, -1, -1, 174, 776, 280, 779, 408, 780, 782, -1, 343, 776, 280, 779, 168, 780, 547, -1, 343, 174, 283, 163, 776, 280, 779, 168, 780, 547, -1, 777, -1, 30, -1, 30, 314, -1, 30, 489, 601, 490, -1, 30, 314, 489, 601, 490, -1, 778, -1, 777, 493, 778, -1, 360, 600, -1, 328, 600, -1, 95, 600, -1, 1160, 600, -1, 1143, -1, 396, 1143, -1, 361, 1143, -1, 165, 109, 455, 1145, -1, 165, 364, 1145, -1, 170, 810, -1, 316, 810, -1, 348, 810, -1, 110, 1145, -1, 133, 755, -1, 220, 1145, -1, 221, 274, 640, -1, 354, 1145, -1, 399, 1145, -1, 418, 755, -1, 30, 397, 192, 354, 1145, -1, 30, 362, 192, 354, 1145, -1, 30, 171, 192, 354, 1145, -1, 30, 317, 192, 354, 1145, -1, 30, 349, 192, 354, 1145, -1, 781, -1, 780, 493, 781, -1, 1158, -1, 177, 1158, -1, 451, 174, 283, -1, -1, 174, 777, 408, 1159, 785, 786, -1, 343, 777, 168, 1159, 786, 547, -1, 343, 27, 283, 163, 777, 168, 1159, 786, 547, -1, 451, 27, 283, -1, -1, 175, 57, 1158, -1, -1, 32, 116, 314, 788, 790, -1, 788, 789, -1, -1, 192, 354, 1145, -1, 163, 345, 1159, -1, 163, 431, 1159, -1, 174, 776, 280, 791, 408, 780, 782, -1, 343, 776, 280, 791, 168, 780, 547, -1, 343, 174, 283, 163, 776, 280, 791, 168, 780, 547, -1, 397, -1, 171, -1, 349, -1, 362, -1, 419, -1, 355, -1, 95, 793, 196, 794, 795, 280, 1029, 796, 489, 797, 490, 800, 552, 620, 1039, -1, 95, 793, 196, 794, 186, 265, 150, 1150, 280, 1029, 796, 489, 797, 490, 800, 552, 620, 1039, -1, 425, -1, -1, 84, -1, -1, 1150, -1, -1, 432, 1148, -1, -1, 799, -1, 797, 493, 799, -1, 802, 803, 804, 805, -1, 802, 756, 551, 804, 805, -1, 1160, 798, -1, 1079, 798, -1, 489, 1074, 490, 798, -1, 193, 489, 801, 490, -1, -1, 799, -1, 801, 493, 799, -1, 76, 756, -1, -1, 756, -1, -1, 40, -1, 125, -1, -1, 473, 160, -1, 473, 222, -1, -1, 95, 807, 170, 1152, 812, 342, 817, 825, -1, 95, 807, 170, 1152, 812, 342, 396, 489, 832, 490, 825, -1, 95, 807, 170, 1152, 812, 825, -1, 95, 807, 316, 1152, 812, 825, -1, 285, 336, -1, -1, 489, 809, 490, -1, 489, 490, -1, 814, -1, 809, 493, 814, -1, 811, -1, 810, 493, 811, -1, 1152, 808, -1, 1166, -1, 1160, -1, 1160, 1137, -1, 489, 813, 490, -1, 489, 490, -1, 819, -1, 813, 493, 819, -1, 815, 816, 818, -1, 816, 815, 818, -1, 816, 818, -1, 815, 818, -1, 818, -1, 192, -1, 289, -1, 203, -1, 192, 289, -1, 440, -1, 1161, -1, 818, -1, 1051, -1, 1161, 757, 484, 418, -1, 369, 1161, 757, 484, 418, -1, 814, -1, 814, 116, 1074, -1, 814, 477, 1074, -1, 814, -1, 489, 482, 490, -1, 489, 822, 490, -1, 489, 286, 57, 822, 490, -1, 489, 822, 286, 57, 822, 490, -1, 820, -1, 822, 493, 820, -1, 1152, 821, -1, 823, -1, 824, 493, 823, -1, 827, -1, 825, 827, -1, 60, 280, 270, 204, -1, 342, 270, 280, 270, 204, -1, 388, -1, 189, -1, 379, -1, 446, -1, 154, 359, 120, -1, 154, 359, 213, -1, 359, 120, -1, 359, 213, -1, 225, -1, 265, 225, -1, 94, 639, -1, 351, 639, -1, 392, 756, -1, 534, -1, 297, 1160, -1, 39, 828, -1, 220, 529, -1, 411, 829, -1, 450, -1, 826, -1, 1155, -1, 1155, 493, 1155, -1, 163, 418, 1051, -1, 829, 493, 163, 418, 1051, -1, 451, 725, -1, -1, 816, 818, -1, 831, -1, 832, 493, 831, -1, 32, 170, 811, 834, 835, -1, 32, 316, 811, 834, 835, -1, 32, 348, 811, 834, 835, -1, 826, -1, 834, 826, -1, 340, -1, -1, 135, 170, 810, 547, -1, 135, 170, 186, 150, 810, 547, -1, 135, 316, 810, 547, -1, 135, 316, 186, 150, 810, 547, -1, 135, 348, 810, 547, -1, 135, 348, 186, 150, 810, 547, -1, 135, 29, 824, 547, -1, 135, 29, 186, 150, 824, 547, -1, 135, 282, 841, 547, -1, 135, 282, 186, 150, 841, 547, -1, 489, 1051, 490, -1, 489, 1051, 493, 1051, 490, -1, 489, 262, 493, 1051, 490, -1, 489, 1051, 493, 262, 490, -1, 1107, -1, 1160, 491, 840, -1, 842, -1, 841, 493, 842, -1, 840, 839, -1, 131, 844, -1, 845, -1, 844, 845, -1, 1155, -1, 220, 529, -1, 95, 64, 489, 1051, 39, 1051, 490, 451, 170, 811, 847, -1, 95, 64, 489, 1051, 39, 1051, 490, 453, 170, 847, -1, 95, 64, 489, 1051, 39, 1051, 490, 451, 203, 847, -1, 39, 190, -1, 39, 42, -1, -1, 135, 64, 849, 489, 1051, 39, 1051, 490, 547, -1, 186, 150, -1, -1, 95, 807, 411, 163, 1051, 220, 1146, 489, 851, 490, -1, 168, 378, 451, 170, 811, 493, 408, 378, 451, 170, 811, -1, 408, 378, 451, 170, 811, 493, 168, 378, 451, 170, 811, -1, 168, 378, 451, 170, 811, -1, 408, 378, 451, 170, 811, -1, 135, 411, 849, 163, 1051, 220, 1146, 547, -1, 331, 854, 794, 1144, -1, 331, 855, 794, 1146, -1, 331, 489, 856, 490, 854, 794, 1144, -1, 331, 489, 856, 490, 855, 794, 1146, -1, 196, -1, 396, -1, 354, -1, 395, -1, 110, -1, 857, -1, 856, 493, 857, -1, 442, -1, 32, 399, 1146, 367, 551, -1, 32, 399, 1146, 338, 551, -1, 32, 29, 823, 334, 408, 1146, -1, 32, 77, 756, 334, 408, 1146, -1, 32, 92, 756, 334, 408, 1146, -1, 32, 110, 1147, 334, 408, 1147, -1, 32, 133, 756, 334, 408, 1146, -1, 32, 133, 756, 334, 88, 1146, 408, 1146, -1, 32, 165, 109, 455, 1146, 334, 408, 1146, -1, 32, 170, 811, 334, 408, 1146, -1, 32, 177, 1157, 334, 408, 1157, -1, 32, 648, 220, 1146, 334, 408, 1146, -1, 32, 282, 72, 756, 432, 1148, 334, 408, 1146, -1, 32, 282, 157, 756, 432, 1148, 334, 408, 1146, -1, 32, 305, 1146, 280, 1144, 334, 408, 1146, -1, 32, 305, 186, 150, 1146, 280, 1144, 334, 408, 1146, -1, 32, 316, 811, 334, 408, 1146, -1, 32, 319, 1146, 334, 408, 1146, -1, 32, 348, 811, 334, 408, 1146, -1, 32, 354, 1146, 334, 408, 1146, -1, 32, 364, 1146, 334, 408, 1146, -1, 32, 390, 1146, 334, 408, 1146, -1, 32, 396, 1029, 334, 408, 1146, -1, 32, 396, 186, 150, 1029, 334, 408, 1146, -1, 32, 361, 1144, 334, 408, 1146, -1, 32, 361, 186, 150, 1144, 334, 408, 1146, -1, 32, 444, 1144, 334, 408, 1146, -1, 32, 444, 186, 150, 1144, 334, 408, 1146, -1, 32, 242, 444, 1144, 334, 408, 1146, -1, 32, 242, 444, 186, 150, 1144, 334, 408, 1146, -1, 32, 196, 1144, 334, 408, 1146, -1, 32, 196, 186, 150, 1144, 334, 408, 1146, -1, 32, 165, 396, 1029, 334, 408, 1146, -1, 32, 165, 396, 186, 150, 1029, 334, 408, 1146, -1, 32, 396, 1029, 334, 860, 1146, 408, 1146, -1, 32, 396, 186, 150, 1029, 334, 860, 1146, 408, 1146, -1, 32, 444, 1144, 334, 860, 1146, 408, 1146, -1, 32, 444, 186, 150, 1144, 334, 860, 1146, 408, 1146, -1, 32, 242, 444, 1144, 334, 860, 1146, 408, 1146, -1, 32, 242, 444, 186, 150, 1144, 334, 860, 1146, 408, 1146, -1, 32, 396, 1029, 334, 88, 1146, 408, 1146, -1, 32, 396, 186, 150, 1029, 334, 88, 1146, 408, 1146, -1, 32, 165, 396, 1029, 334, 860, 1146, 408, 1146, -1, 32, 165, 396, 186, 150, 1029, 334, 860, 1146, 408, 1146, -1, 32, 352, 1146, 280, 1144, 334, 408, 1146, -1, 32, 413, 1146, 280, 1144, 334, 408, 1146, -1, 32, 144, 413, 1146, 334, 408, 1146, -1, 32, 345, 1157, 334, 408, 1157, -1, 32, 431, 1157, 334, 408, 1157, -1, 32, 399, 1146, 334, 408, 1146, -1, 32, 383, 756, 334, 408, 1146, -1, 32, 403, 357, 298, 756, 334, 408, 1146, -1, 32, 403, 357, 127, 756, 334, 408, 1146, -1, 32, 403, 357, 401, 756, 334, 408, 1146, -1, 32, 403, 357, 85, 756, 334, 408, 1146, -1, 32, 418, 756, 334, 408, 1146, -1, 32, 418, 756, 334, 46, 1146, 408, 1146, 547, -1, 78, -1, -1, 367, 109, -1, -1, 32, 170, 811, 863, 124, 280, 153, 1146, -1, 32, 316, 811, 863, 124, 280, 153, 1146, -1, 32, 348, 811, 863, 124, 280, 153, 1146, -1, 32, 413, 1146, 280, 1144, 863, 124, 280, 153, 1146, -1, 32, 242, 444, 1144, 863, 124, 280, 153, 1146, -1, 32, 196, 1144, 863, 124, 280, 153, 1146, -1, 261, -1, -1, 32, 29, 823, 367, 354, 1146, -1, 32, 77, 756, 367, 354, 1146, -1, 32, 92, 756, 367, 354, 1146, -1, 32, 133, 756, 367, 354, 1146, -1, 32, 153, 1146, 367, 354, 1146, -1, 32, 170, 811, 367, 354, 1146, -1, 32, 282, 842, 367, 354, 1146, -1, 32, 282, 72, 756, 432, 1148, 367, 354, 1146, -1, 32, 282, 157, 756, 432, 1148, 367, 354, 1146, -1, 32, 316, 811, 367, 354, 1146, -1, 32, 348, 811, 367, 354, 1146, -1, 32, 396, 1029, 367, 354, 1146, -1, 32, 396, 186, 150, 1029, 367, 354, 1146, -1, 32, 383, 756, 367, 354, 1146, -1, 32, 403, 357, 298, 756, 367, 354, 1146, -1, 32, 403, 357, 127, 756, 367, 354, 1146, -1, 32, 403, 357, 401, 756, 367, 354, 1146, -1, 32, 403, 357, 85, 756, 367, 354, 1146, -1, 32, 361, 1144, 367, 354, 1146, -1, 32, 361, 186, 150, 1144, 367, 354, 1146, -1, 32, 444, 1144, 367, 354, 1146, -1, 32, 444, 186, 150, 1144, 367, 354, 1146, -1, 32, 242, 444, 1144, 367, 354, 1146, -1, 32, 242, 444, 186, 150, 1144, 367, 354, 1146, -1, 32, 165, 396, 1029, 367, 354, 1146, -1, 32, 165, 396, 186, 150, 1029, 367, 354, 1146, -1, 32, 418, 756, 367, 354, 1146, -1, 32, 282, 842, 367, 489, 866, 490, -1, 867, -1, 866, 493, 867, -1, 1163, 477, 262, -1, 1163, 477, 868, -1, 818, -1, 1167, -1, 1110, -1, 639, -1, 1155, -1, 32, 418, 756, 367, 489, 866, 490, -1, 32, 29, 823, 296, 408, 1158, -1, 32, 77, 756, 296, 408, 1158, -1, 32, 92, 756, 296, 408, 1158, -1, 32, 110, 1147, 296, 408, 1158, -1, 32, 133, 756, 296, 408, 1158, -1, 32, 170, 811, 296, 408, 1158, -1, 32, 648, 220, 1146, 296, 408, 1158, -1, 32, 221, 274, 639, 296, 408, 1158, -1, 32, 282, 842, 296, 408, 1158, -1, 32, 282, 72, 756, 432, 1148, 296, 408, 1158, -1, 32, 282, 157, 756, 432, 1148, 296, 408, 1158, -1, 32, 316, 811, 296, 408, 1158, -1, 32, 348, 811, 296, 408, 1158, -1, 32, 354, 1146, 296, 408, 1158, -1, 32, 418, 756, 296, 408, 1158, -1, 32, 399, 1146, 296, 408, 1158, -1, 32, 383, 756, 296, 408, 1158, -1, 32, 403, 357, 127, 756, 296, 408, 1158, -1, 32, 403, 357, 85, 756, 296, 408, 1158, -1, 32, 165, 109, 455, 1146, 296, 408, 1158, -1, 32, 364, 1146, 296, 408, 1158, -1, 32, 144, 413, 1146, 296, 408, 1158, -1, 32, 319, 1146, 296, 408, 1158, -1, 32, 390, 1146, 296, 408, 1158, -1, 95, 319, 1146, 872, 830, -1, 873, -1, -1, 163, 396, 1030, -1, 163, 30, 397, -1, 32, 319, 1146, 367, 725, -1, 32, 319, 1146, 26, 396, 1030, -1, 32, 319, 1146, 367, 396, 1030, -1, 32, 319, 1146, 135, 396, 1030, -1, 95, 390, 1146, 87, 1155, 319, 876, 830, -1, 877, -1, 876, 493, 877, -1, 1163, -1, 32, 390, 1146, 367, 725, -1, 32, 390, 1146, 87, 1155, -1, 32, 390, 1146, 330, 319, 830, -1, 32, 390, 1146, 367, 319, 876, 830, -1, 32, 390, 1146, 138, -1, 32, 390, 1146, 128, -1, 135, 390, 1146, 547, -1, 135, 390, 186, 150, 1146, 547, -1, 95, 807, 352, 1146, 39, 280, 885, 408, 1144, 1039, 131, 886, 881, -1, 266, -1, 883, -1, 489, 882, 490, -1, 882, 492, 884, -1, 884, -1, 974, -1, 949, -1, 965, -1, 958, -1, 887, -1, 883, -1, -1, 360, -1, 430, -1, 121, -1, 206, -1, 207, -1, 31, -1, -1, 267, 1160, 888, -1, 493, 1155, -1, -1, 231, 1160, -1, 427, 1160, -1, 427, 482, -1, 22, 892, 896, -1, 50, 892, 895, -1, 381, 410, 895, -1, 82, 892, 896, -1, 141, 892, 896, -1, 346, 892, 896, -1, 353, 1160, -1, 333, 353, 1160, -1, 333, 1160, -1, 346, 892, 408, 353, 1160, -1, 346, 892, 408, 1160, -1, 310, 410, 1155, -1, 82, 311, 1155, -1, 346, 311, 1155, -1, 454, -1, 410, -1, -1, 216, 228, 525, -1, 322, 281, -1, 322, 456, -1, 118, -1, 265, 118, -1, 893, -1, 894, 493, 893, -1, 894, 893, -1, 894, -1, -1, 36, 66, -1, 36, 261, 66, -1, -1, 95, 580, 444, 1144, 600, 552, 39, 974, 898, -1, 95, 285, 336, 580, 444, 1144, 600, 552, 39, 974, 898, -1, 95, 580, 326, 444, 1144, 489, 601, 490, 552, 39, 974, 898, -1, 95, 285, 336, 580, 326, 444, 1144, 489, 601, 490, 552, 39, 974, 898, -1, 451, 70, 283, -1, 451, 62, 70, 283, -1, 451, 233, 70, 283, -1, -1, 232, 1151, -1, 95, 110, 1147, 501, 901, -1, 902, -1, -1, 903, -1, 902, 903, -1, 904, 905, 1156, -1, 904, 905, 526, -1, 904, 905, 116, -1, 3, -1, 87, 230, -1, 139, -1, 236, -1, 296, -1, 399, -1, 401, -1, 477, -1, -1, 32, 110, 1147, 451, 901, -1, 32, 110, 1147, 901, -1, 32, 110, 1147, 367, 399, 1146, -1, 32, 110, 1147, 533, -1, 135, 110, 1147, -1, 135, 110, 186, 150, 1147, -1, 135, 110, 1147, 501, 489, 909, 490, -1, 135, 110, 186, 150, 1147, 501, 489, 909, 490, -1, 910, -1, 909, 493, 910, -1, 164, -1, 32, 77, 756, 330, 443, -1, 32, 395, 367, 520, -1, 32, 395, 338, 532, -1, 95, 133, 756, 915, 1051, 589, -1, 32, 133, 756, 546, -1, 32, 133, 756, 135, 265, 270, -1, 32, 133, 756, 367, 265, 270, -1, 32, 133, 756, 26, 597, -1, 32, 133, 756, 135, 88, 1146, 547, -1, 32, 133, 756, 135, 88, 186, 150, 1146, 547, -1, 32, 133, 756, 435, 88, 1146, -1, 39, -1, -1, 32, 403, 357, 127, 756, 725, -1, 32, 403, 357, 85, 756, 26, 240, 163, 1145, 918, 755, -1, 32, 403, 357, 85, 756, 32, 240, 163, 1145, 918, 755, -1, 32, 403, 357, 85, 756, 32, 240, 336, 756, 918, 756, -1, 32, 403, 357, 85, 756, 32, 240, 163, 1145, 336, 756, 918, 756, -1, 32, 403, 357, 85, 756, 135, 240, 163, 1145, -1, 32, 403, 357, 85, 756, 135, 240, 186, 150, 163, 1145, -1, 451, -1, 474, -1, 95, 739, 92, 756, 163, 1155, 408, 1155, 168, 756, -1, 74, 930, 1144, 921, -1, 74, 930, -1, 74, 930, 1150, 280, 1144, -1, 432, 1150, -1, -1, 433, 931, 932, 930, 929, 936, -1, 433, 489, 924, 490, 936, -1, 925, 930, 936, -1, 925, 489, 924, 490, 936, -1, 926, -1, 924, 493, 926, -1, 35, -1, 34, -1, 927, 928, -1, 1162, -1, 925, -1, 526, -1, 639, -1, -1, 925, -1, -1, 442, -1, -1, 169, -1, -1, 167, -1, -1, 489, 1145, 490, -1, -1, 1144, 933, -1, 934, -1, 935, 493, 934, -1, 935, -1, -1, 151, 938, -1, 151, 925, 930, 938, -1, 151, 442, 938, -1, 151, 489, 939, 490, 938, -1, 974, -1, 949, -1, 965, -1, 958, -1, 970, -1, 625, -1, 628, -1, 631, -1, 946, -1, 940, -1, 939, 493, 940, -1, 941, 942, -1, 1162, -1, 925, -1, 526, -1, 639, -1, -1, 310, 1146, 944, 39, 945, -1, 489, 1115, 490, -1, -1, 974, -1, 949, -1, 965, -1, 958, -1, 149, 1146, 947, -1, 95, 580, 396, 626, 39, 149, 1146, 947, 627, -1, 95, 580, 396, 186, 265, 150, 626, 39, 149, 1146, 947, 627, -1, 489, 1112, 490, -1, -1, 112, 1146, -1, 112, 310, 1146, -1, 112, 30, -1, 112, 310, 30, -1, 983, 206, 212, 950, 951, 955, 957, -1, 1144, -1, 1144, 39, 1160, -1, 974, -1, 294, 952, 437, 974, -1, 489, 953, 490, 974, -1, 489, 953, 490, 294, 952, 437, 974, -1, 116, 438, -1, 431, -1, 395, -1, 954, -1, 953, 493, 954, -1, 1160, 1138, -1, 280, 86, 956, 131, 430, 367, 966, 1039, -1, 280, 86, 956, 131, 266, -1, -1, 489, 797, 490, 1039, -1, 280, 88, 1146, -1, -1, 341, 1141, -1, -1, 983, 121, 168, 1031, 959, 1040, 957, -1, 432, 1020, -1, -1, 237, 986, 1030, 961, 963, -1, 192, 962, 247, -1, -1, 24, 370, -1, 350, 370, -1, 350, 148, -1, 370, 430, 148, -1, 370, -1, 370, 350, 148, -1, 148, -1, 24, 148, -1, 269, -1, -1, 269, -1, 374, 238, -1, -1, 983, 430, 1031, 367, 966, 1019, 1040, 957, -1, 967, -1, 966, 493, 967, -1, 968, 477, 1074, -1, 489, 969, 490, 477, 1074, -1, 1160, 1138, -1, 968, -1, 969, 493, 968, -1, 115, 971, 972, 107, 973, 163, 974, -1, 1146, -1, -1, 972, 261, 356, -1, 972, 356, -1, 972, 53, -1, 972, 205, -1, -1, 451, 183, -1, 453, 183, -1, 976, -1, 975, -1, 489, 976, 490, -1, 489, 975, 490, -1, 978, -1, 977, 991, -1, 977, 990, 1012, 995, -1, 977, 990, 994, 1013, -1, 979, 977, -1, 979, 977, 991, -1, 979, 977, 990, 1012, 995, -1, 979, 977, 990, 994, 1013, -1, 978, -1, 975, -1, 360, 989, 1140, 984, 1019, 1039, 1004, 1011, 1092, -1, 360, 988, 1141, 984, 1019, 1039, 1004, 1011, 1092, -1, 1018, -1, 396, 1029, -1, 977, 424, 987, 977, -1, 977, 210, 987, 977, -1, 977, 145, 987, 977, -1, 451, 980, -1, 474, 980, -1, 451, 326, 980, -1, 981, -1, 980, 493, 981, -1, 1146, 933, 39, 982, 489, 945, 490, -1, 242, -1, 265, 242, -1, -1, 979, -1, -1, 212, 985, -1, -1, 402, 986, 1144, -1, 400, 986, 1144, -1, 233, 402, 986, 1144, -1, 233, 400, 986, 1144, -1, 173, 402, 986, 1144, -1, 173, 400, 986, 1144, -1, 428, 986, 1144, -1, 396, 1144, -1, 1144, -1, 396, -1, -1, 30, -1, 130, -1, -1, 130, -1, 130, 280, 489, 1112, 490, -1, 30, -1, -1, 991, -1, -1, 286, 57, 992, -1, 993, -1, 992, 493, 993, -1, 1074, 432, 1110, 805, -1, 1074, 804, 805, -1, 996, 997, -1, 997, 996, -1, 996, -1, 997, -1, 994, -1, -1, 230, 998, -1, 230, 998, 493, 999, -1, 158, 1003, 1000, 1002, 281, -1, 158, 1003, 1000, 1002, 451, 405, -1, 158, 1003, 1002, 281, -1, 158, 1003, 1002, 451, 405, -1, 277, 999, -1, 277, 1000, 1002, -1, 1074, -1, 30, -1, 1074, -1, 1076, -1, 480, 1001, -1, 481, 1001, -1, 1154, -1, 5, -1, 350, -1, 351, -1, 160, -1, 256, -1, 177, 57, 1005, -1, -1, 1006, -1, 1005, 493, 1006, -1, 1074, -1, 1007, -1, 1009, -1, 1008, -1, 1010, -1, 489, 490, -1, 347, 489, 1112, 490, -1, 98, 489, 1112, 490, -1, 178, 368, 489, 1005, 490, -1, 181, 1074, -1, -1, 1014, -1, 163, 322, 281, -1, 1012, -1, -1, 1015, -1, 1014, 1015, -1, 1016, 1017, 964, -1, 163, 430, -1, 163, 261, 218, 430, -1, 163, 370, -1, 163, 218, 370, -1, 275, 1143, -1, -1, 438, 489, 1112, 490, -1, 1018, 493, 489, 1112, 490, -1, 168, 1020, -1, -1, 1021, -1, 1020, 493, 1021, -1, 1029, 1024, -1, 1029, 1024, 1032, -1, 1034, 1025, -1, 223, 1034, 1025, -1, 1044, 1024, -1, 223, 1044, 1024, -1, 975, 1024, -1, 223, 975, 1024, -1, 1022, -1, 489, 1022, 490, 1023, -1, 489, 1022, 490, -1, 1021, 96, 217, 1021, -1, 1021, 1026, 217, 1021, 1028, -1, 1021, 217, 1021, 1028, -1, 1021, 253, 1026, 217, 1021, -1, 1021, 253, 217, 1021, -1, 39, 1160, 489, 1145, 490, -1, 39, 1160, -1, 1160, 489, 1145, 490, -1, 1160, -1, 1023, -1, -1, 1023, -1, 39, 489, 1042, 490, -1, 39, 1160, 489, 1042, 490, -1, 1160, 489, 1042, 490, -1, -1, 169, 1027, -1, 227, 1027, -1, 344, 1027, -1, 202, -1, 290, -1, -1, 432, 489, 1145, 490, -1, 280, 1074, -1, 1144, -1, 1144, 482, -1, 281, 1144, -1, 281, 489, 1144, 490, -1, 1029, -1, 1030, 493, 1029, -1, 1029, -1, 1029, 1160, -1, 1029, 39, 1160, -1, 398, 1152, 489, 1112, 490, 1033, -1, 335, 489, 1074, 490, -1, -1, 1079, 1038, -1, 351, 168, 489, 1036, 490, 1038, -1, 1079, 1037, -1, 1035, -1, 1036, 493, 1035, -1, 39, 489, 1042, 490, -1, -1, 474, 287, -1, -1, 448, 1074, -1, -1, 448, 1074, -1, 448, 99, 275, 971, -1, -1, 1042, -1, -1, 1043, -1, 1042, 493, 1043, -1, 1160, 1051, 548, -1, 468, 489, 1076, 1088, 79, 1045, 490, -1, 468, 489, 463, 489, 1049, 490, 493, 1076, 1088, 79, 1045, 490, -1, 1046, -1, 1045, 493, 1046, -1, 1160, 1051, -1, 1160, 1051, 1047, -1, 1160, 163, 287, -1, 1048, -1, 1047, 1048, -1, 3, 1075, -1, 116, 1075, -1, 265, 270, -1, 270, -1, 1050, -1, 1049, 493, 1050, -1, 1075, 39, 1163, -1, 116, 1075, -1, 1053, 1052, -1, 369, 1053, 1052, -1, 1053, 38, 487, 1154, 488, -1, 369, 1053, 38, 487, 1154, 488, -1, 1053, 38, -1, 369, 1053, 38, -1, 1052, 487, 488, -1, 1052, 487, 1154, 488, -1, -1, 1055, -1, 1057, -1, 1059, -1, 1063, -1, 1069, -1, 1070, 1072, -1, 1070, 489, 1154, 490, -1, 1057, -1, 1060, -1, 1064, -1, 1069, -1, 1161, 1056, -1, 1161, 757, 1056, -1, 489, 1112, 490, -1, -1, 208, -1, 209, -1, 375, -1, 52, -1, 323, -1, 161, 1058, -1, 134, 308, -1, 114, 1056, -1, 113, 1056, -1, 273, 1056, -1, 55, -1, 489, 1154, 490, -1, -1, 1061, -1, 1062, -1, 1061, -1, 1062, -1, 54, 1068, 489, 1112, 490, -1, 54, 1068, -1, 1065, -1, 1066, -1, 1065, -1, 1066, -1, 1067, 489, 1154, 490, -1, 1067, -1, 68, 1068, -1, 67, 1068, -1, 439, -1, 252, 68, 1068, -1, 252, 67, 1068, -1, 254, 1068, -1, 441, -1, -1, 407, 489, 1154, 490, 1071, -1, 407, 1071, -1, 406, 489, 1154, 490, 1071, -1, 406, 1071, -1, 211, -1, 474, 406, 471, -1, 453, 406, 471, -1, -1, 469, -1, 248, -1, 111, -1, 184, -1, 245, -1, 1073, -1, 469, 408, 248, -1, 111, 408, 184, -1, 111, 408, 245, -1, 111, 408, 1073, -1, 184, 408, 245, -1, 184, 408, 1073, -1, 245, 408, 1073, -1, -1, 358, -1, 358, 489, 1154, 490, -1, 1076, -1, 1074, 13, 1051, -1, 1074, 76, 756, -1, 1074, 44, 406, 471, 1074, -1, 480, 1074, -1, 481, 1074, -1, 1074, 480, 1074, -1, 1074, 481, 1074, -1, 1074, 482, 1074, -1, 1074, 483, 1074, -1, 1074, 484, 1074, -1, 1074, 485, 1074, -1, 1074, 475, 1074, -1, 1074, 476, 1074, -1, 1074, 477, 1074, -1, 1074, 17, 1074, -1, 1074, 18, 1074, -1, 1074, 19, 1074, -1, 1074, 1109, 1074, -1, 1109, 1074, -1, 1074, 1109, -1, 1074, 478, 1074, -1, 1074, 478, -1, 1074, 36, 1074, -1, 1074, 285, 1074, -1, 265, 1074, -1, 472, 1074, -1, 1074, 229, 1074, -1, 1074, 229, 1074, 143, 1074, -1, 1074, 472, 229, 1074, -1, 1074, 472, 229, 1074, 143, 1074, -1, 1074, 187, 1074, -1, 1074, 187, 1074, 143, 1074, -1, 1074, 472, 187, 1074, -1, 1074, 472, 187, 1074, 143, 1074, -1, 1074, 372, 408, 1074, -1, 1074, 372, 408, 1074, 143, 1074, -1, 1074, 472, 372, 408, 1074, -1, 1074, 472, 372, 408, 1074, 143, 1074, -1, 1074, 214, 270, -1, 1074, 215, -1, 1074, 214, 265, 270, -1, 1074, 268, -1, 1103, 292, 1103, -1, 1074, 214, 415, -1, 1074, 214, 265, 415, -1, 1074, 214, 156, -1, 1074, 214, 265, 156, -1, 1074, 214, 426, -1, 1074, 214, 265, 426, -1, 1074, 214, 130, 168, 1074, -1, 1074, 214, 265, 130, 168, 1074, -1, 1074, 214, 275, 489, 1115, 490, -1, 1074, 214, 265, 275, 489, 1115, 490, -1, 1074, 51, 1139, 1075, 36, 1074, -1, 1074, 472, 51, 1139, 1075, 36, 1074, -1, 1074, 51, 393, 1075, 36, 1074, -1, 1074, 472, 51, 393, 1075, 36, 1074, -1, 1074, 192, 1128, -1, 1074, 472, 192, 1128, -1, 1074, 1111, 1106, 975, -1, 1074, 1111, 1106, 489, 1074, 490, -1, 425, 975, -1, 1074, 214, 132, -1, 1074, 214, 265, 132, -1, 1074, 214, 264, -1, 1074, 214, 1120, 264, -1, 1074, 214, 265, 264, -1, 1074, 214, 265, 1120, 264, -1, 116, -1, 1076, -1, 1075, 13, 1051, -1, 480, 1075, -1, 481, 1075, -1, 1075, 480, 1075, -1, 1075, 481, 1075, -1, 1075, 482, 1075, -1, 1075, 483, 1075, -1, 1075, 484, 1075, -1, 1075, 485, 1075, -1, 1075, 475, 1075, -1, 1075, 476, 1075, -1, 1075, 477, 1075, -1, 1075, 17, 1075, -1, 1075, 18, 1075, -1, 1075, 19, 1075, -1, 1075, 478, 1075, -1, 1075, 478, -1, 1075, 1109, 1075, -1, 1109, 1075, -1, 1075, 1109, -1, 1075, 214, 130, 168, 1075, -1, 1075, 214, 265, 130, 168, 1075, -1, 1075, 214, 275, 489, 1115, 490, -1, 1075, 214, 265, 275, 489, 1115, 490, -1, 1075, 214, 132, -1, 1075, 214, 265, 132, -1, 1134, -1, 1153, -1, 12, 1138, -1, 478, 1138, -1, 489, 1074, 490, 1138, -1, 1129, -1, 1078, -1, 975, -1, 975, 1137, -1, 150, 975, -1, 38, 975, -1, 38, 1116, -1, 1104, -1, 1105, -1, 178, 489, 1112, 490, -1, 1152, 489, 490, -1, 1152, 489, 1113, 990, 490, -1, 1152, 489, 440, 1114, 990, 490, -1, 1152, 489, 1113, 493, 440, 1114, 990, 490, -1, 1152, 489, 30, 1113, 990, 490, -1, 1152, 489, 130, 1113, 990, 490, -1, 1152, 489, 482, 490, -1, 1077, 1090, 1091, 1095, -1, 1080, -1, 1077, -1, 1080, -1, 77, 163, 489, 1074, 490, -1, 101, -1, 104, -1, 104, 489, 1154, 490, -1, 105, -1, 105, 489, 1154, 490, -1, 234, -1, 234, 489, 1154, 490, -1, 235, -1, 235, 489, 1154, 490, -1, 102, -1, 106, -1, 366, -1, 431, -1, 100, -1, 103, -1, 64, 489, 1074, 39, 1051, 490, -1, 155, 489, 1118, 490, -1, 263, 489, 1074, 490, -1, 263, 489, 1074, 493, 1120, 490, -1, 293, 489, 1121, 490, -1, 306, 489, 1123, 490, -1, 391, 489, 1124, 490, -1, 412, 489, 1074, 39, 1051, 490, -1, 414, 489, 56, 1127, 490, -1, 414, 489, 224, 1127, 490, -1, 414, 489, 409, 1127, 490, -1, 414, 489, 1127, 490, -1, 271, 489, 1074, 493, 1074, 490, -1, 75, 489, 1112, 490, -1, 176, 489, 1112, 490, -1, 226, 489, 1112, 490, -1, 459, 489, 1112, 490, -1, 460, 489, 250, 1163, 490, -1, 460, 489, 250, 1163, 493, 1083, 490, -1, 460, 489, 250, 1163, 493, 1112, 490, -1, 460, 489, 250, 1163, 493, 1083, 493, 1112, 490, -1, 461, 489, 1076, 1088, 490, -1, 462, 489, 1084, 490, -1, 464, 489, 1086, 1074, 1087, 490, -1, 465, 489, 250, 1163, 490, -1, 465, 489, 250, 1163, 493, 1074, 490, -1, 466, 489, 1074, 493, 1081, 1082, 490, -1, 467, 489, 1086, 1074, 39, 1053, 490, -1, 443, 1074, -1, 443, 261, 437, -1, 493, 380, 470, -1, 493, 380, 261, -1, 493, 380, 261, 437, -1, -1, 458, 489, 1084, 490, -1, 1085, -1, 1084, 493, 1085, -1, 1074, 39, 1163, -1, 1074, -1, 132, -1, 90, -1, 309, 449, -1, 389, 449, -1, -1, 301, 1076, -1, 301, 1076, 1089, -1, 301, 1089, 1076, -1, 301, 1089, 1076, 1089, -1, 57, 327, -1, 57, 437, -1, 452, 177, 489, 991, 490, -1, -1, 159, 489, 448, 1074, 490, -1, -1, 450, 1093, -1, -1, 1094, -1, 1093, 493, 1094, -1, 1160, 39, 1096, -1, 291, 1096, -1, 291, 1160, -1, -1, 489, 1097, 1098, 990, 1099, 490, -1, 1160, -1, -1, 300, 57, 1112, -1, -1, 321, 1100, 1102, -1, 351, 1100, 1102, -1, 179, 1100, 1102, -1, -1, 1101, -1, 51, 1101, 36, 1101, -1, 421, 307, -1, 421, 162, -1, 99, 350, -1, 1074, 307, -1, 1074, 162, -1, 146, 99, 350, -1, 146, 177, -1, 146, 405, -1, 146, 261, 288, -1, -1, 350, 489, 1112, 490, -1, 350, 489, 490, -1, 489, 1112, 493, 1074, 490, -1, 350, 489, 1112, 490, -1, 350, 489, 490, -1, 489, 1112, 493, 1074, 490, -1, 37, -1, 377, -1, 30, -1, 10, -1, 1108, -1, 480, -1, 481, -1, 482, -1, 483, -1, 484, -1, 485, -1, 475, -1, 476, -1, 477, -1, 17, -1, 18, -1, 19, -1, 478, -1, 10, -1, 282, 489, 840, 490, -1, 1107, -1, 282, 489, 840, 490, -1, 1107, -1, 282, 489, 840, 490, -1, 229, -1, 472, 229, -1, 187, -1, 472, 187, -1, 1074, -1, 1112, 493, 1074, -1, 1114, -1, 1113, 493, 1114, -1, 1074, -1, 816, 15, 1074, -1, 816, 16, 1074, -1, 1051, -1, 1115, 493, 1051, -1, 487, 1112, 488, -1, 487, 1117, 488, -1, 487, 488, -1, 1116, -1, 1117, 493, 1116, -1, 1119, 168, 1074, -1, 12, 168, 1074, -1, 478, 168, 1074, -1, -1, 3, -1, 469, -1, 248, -1, 111, -1, 184, -1, 245, -1, 358, -1, 1155, -1, 257, -1, 258, -1, 259, -1, 260, -1, 1074, 1122, 1125, 1126, -1, 1074, 1122, 1125, -1, 303, 1074, -1, 1075, 192, 1075, -1, -1, 1074, 1125, 1126, -1, 1074, 1126, 1125, -1, 1074, 1125, -1, 1074, 1126, -1, 1112, -1, -1, 168, 1074, -1, 163, 1074, -1, 1074, 168, 1112, -1, 168, 1112, -1, 1112, -1, 975, -1, 489, 1112, 490, -1, 63, 1133, 1130, 1132, 141, -1, 1131, -1, 1130, 1131, -1, 447, 1074, 404, 1074, -1, 137, 1074, -1, -1, 1074, -1, -1, 1160, -1, 1160, 1137, -1, 491, 1149, -1, 491, 482, -1, 487, 1074, 488, -1, 487, 1136, 494, 1136, 488, -1, 1074, -1, -1, 1135, -1, 1137, 1135, -1, -1, 1138, 1135, -1, 43, -1, -1, 1141, -1, -1, 1142, -1, 1141, 493, 1142, -1, 1074, 39, 1163, -1, 1074, 3, -1, 1074, -1, 482, -1, 1144, -1, 1143, 493, 1144, -1, 1160, -1, 1160, 1137, -1, 1146, -1, 1145, 493, 1146, -1, 1160, -1, 1160, -1, 1160, -1, 1163, -1, 1160, -1, 1155, -1, 1161, -1, 1160, 1137, -1, 1154, -1, 5, -1, 1155, -1, 8, -1, 9, -1, 1152, 1155, -1, 1152, 489, 1113, 990, 490, 1155, -1, 1152, 12, -1, 1152, 489, 1113, 990, 490, 12, -1, 1054, 1155, -1, 1070, 1155, 1072, -1, 1070, 489, 1154, 490, 1155, -1, 1054, 12, -1, 1070, 12, 1072, -1, 1070, 489, 1154, 490, 12, -1, 1070, 489, 1154, 490, 478, -1, 415, -1, 156, -1, 270, -1, 11, -1, 6, -1, 1154, -1, 480, 1154, -1, 481, 1154, -1, 1158, -1, 1162, -1, 106, -1, 366, -1, 1158, -1, 1159, 493, 1158, -1, 3, -1, 1164, -1, 1165, -1, 3, -1, 1164, -1, 1166, -1, 3, -1, 1164, -1, 1165, -1, 1166, -1, 3, -1, 1164, -1, 1165, -1, 1166, -1, 1167, -1, 22, -1, 23, -1, 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, 29, -1, 31, -1, 32, -1, 33, -1, 41, -1, 42, -1, 44, -1, 45, -1, 46, -1, 48, -1, 49, -1, 50, -1, 57, -1, 58, -1, 59, -1, 60, -1, 61, -1, 62, -1, 65, -1, 66, -1, 69, -1, 71, -1, 72, -1, 73, -1, 74, -1, 79, -1, 80, -1, 81, -1, 82, -1, 83, -1, 85, -1, 86, -1, 87, -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, 94, -1, 97, -1, 98, -1, 99, -1, 107, -1, 108, -1, 109, -1, 110, -1, 111, -1, 112, -1, 115, -1, 117, -1, 119, -1, 120, -1, 121, -1, 122, -1, 123, -1, 124, -1, 126, -1, 127, -1, 128, -1, 129, -1, 132, -1, 133, -1, 134, -1, 135, -1, 136, -1, 138, -1, 139, -1, 140, -1, 142, -1, 143, -1, 144, -1, 146, -1, 147, -1, 148, -1, 149, -1, 151, -1, 152, -1, 153, -1, 154, -1, 157, -1, 159, -1, 160, -1, 162, -1, 164, -1, 166, -1, 170, -1, 171, -1, 172, -1, 173, -1, 175, -1, 179, -1, 180, -1, 182, -1, 183, -1, 184, -1, 185, -1, 186, -1, 188, -1, 189, -1, 190, -1, 191, -1, 193, -1, 194, -1, 195, -1, 196, -1, 197, -1, 198, -1, 199, -1, 201, -1, 204, -1, 205, -1, 206, -1, 207, -1, 213, -1, 216, -1, 218, -1, 219, -1, 220, -1, 221, -1, 222, -1, 225, -1, 228, -1, 231, -1, 232, -1, 233, -1, 236, -1, 237, -1, 238, -1, 239, -1, 240, -1, 241, -1, 242, -1, 243, -1, 244, -1, 245, -1, 246, -1, 247, -1, 248, -1, 249, -1, 250, -1, 251, -1, 255, -1, 256, -1, 257, -1, 258, -1, 259, -1, 260, -1, 261, -1, 264, -1, 266, -1, 267, -1, 269, -1, 272, -1, 274, -1, 275, -1, 276, -1, 278, -1, 279, -1, 282, -1, 283, -1, 284, -1, 287, -1, 288, -1, 291, -1, 294, -1, 295, -1, 296, -1, 297, -1, 298, -1, 299, -1, 300, -1, 301, -1, 302, -1, 304, -1, 305, -1, 307, -1, 310, -1, 311, -1, 309, -1, 313, -1, 314, -1, 315, -1, 316, -1, 317, -1, 318, -1, 319, -1, 320, -1, 321, -1, 322, -1, 324, -1, 325, -1, 326, -1, 327, -1, 329, -1, 330, -1, 331, -1, 332, -1, 333, -1, 334, -1, 335, -1, 336, -1, 337, -1, 338, -1, 339, -1, 340, -1, 342, -1, 343, -1, 345, -1, 346, -1, 347, -1, 348, -1, 349, -1, 351, -1, 352, -1, 353, -1, 354, -1, 355, -1, 356, -1, 357, -1, 358, -1, 359, -1, 361, -1, 362, -1, 363, -1, 364, -1, 365, -1, 367, -1, 368, -1, 370, -1, 371, -1, 373, -1, 374, -1, 376, -1, 378, -1, 379, -1, 380, -1, 381, -1, 382, -1, 383, -1, 384, -1, 385, -1, 386, -1, 387, -1, 388, -1, 389, -1, 390, -1, 392, -1, 394, -1, 395, -1, 397, -1, 399, -1, 400, -1, 401, -1, 402, -1, 403, -1, 405, -1, 410, -1, 411, -1, 413, -1, 416, -1, 417, -1, 418, -1, 419, -1, 420, -1, 421, -1, 422, -1, 423, -1, 426, -1, 427, -1, 428, -1, 429, -1, 430, -1, 433, -1, 434, -1, 435, -1, 436, -1, 437, -1, 441, -1, 443, -1, 444, -1, 445, -1, 446, -1, 449, -1, 452, -1, 453, -1, 454, -1, 455, -1, 456, -1, 457, -1, 469, -1, 470, -1, 471, -1, 51, -1, 52, -1, 54, -1, 55, -1, 67, -1, 68, -1, 75, -1, 113, -1, 114, -1, 150, -1, 155, -1, 161, -1, 176, -1, 178, -1, 203, -1, 208, -1, 209, -1, 211, -1, 226, -1, 252, -1, 254, -1, 262, -1, 263, -1, 271, -1, 273, -1, 289, -1, 293, -1, 306, -1, 308, -1, 323, -1, 350, -1, 369, -1, 375, -1, 391, -1, 406, -1, 407, -1, 412, -1, 414, -1, 438, -1, 439, -1, 458, -1, 459, -1, 460, -1, 461, -1, 462, -1, 463, -1, 464, -1, 465, -1, 466, -1, 467, -1, 468, -1, 47, -1, 53, -1, 77, -1, 84, -1, 96, -1, 103, -1, 167, -1, 169, -1, 187, -1, 202, -1, 214, -1, 215, -1, 217, -1, 227, -1, 229, -1, 253, -1, 268, -1, 290, -1, 292, -1, 344, -1, 372, -1, 398, -1, 442, -1, 30, -1, 34, -1, 35, -1, 36, -1, 37, -1, 38, -1, 39, -1, 40, -1, 43, -1, 56, -1, 63, -1, 64, -1, 70, -1, 76, -1, 78, -1, 88, -1, 95, -1, 100, -1, 101, -1, 102, -1, 104, -1, 105, -1, 106, -1, 116, -1, 118, -1, 125, -1, 130, -1, 131, -1, 137, -1, 141, -1, 145, -1, 156, -1, 158, -1, 163, -1, 165, -1, 168, -1, 174, -1, 177, -1, 181, -1, 192, -1, 200, -1, 210, -1, 212, -1, 223, -1, 224, -1, 230, -1, 234, -1, 235, -1, 265, -1, 270, -1, 277, -1, 280, -1, 281, -1, 285, -1, 286, -1, 303, -1, 312, -1, 328, -1, 341, -1, 360, -1, 366, -1, 377, -1, 393, -1, 396, -1, 404, -1, 408, -1, 409, -1, 415, -1, 424, -1, 425, -1, 431, -1, 432, -1, 440, -1, 447, -1, 448, -1, 450, -1, 451, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 809, 809, 825, 837, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 973, 982, 997, 1008, 1009, 1010, 1019, 1020, 1024, 1025, 1029, 1034, 1039, 1044, 1048, 1058, 1068, 1078, 1086, 1090, 1094, 1099, 1103, 1151, 1153, 1157, 1161, 1165, 1169, 1183, 1201, 1209, 1220, 1221, 1225, 1233, 1241, 1249, 1270, 1277, 1284, 1291, 1298, 1305, 1322, 1340, 1351, 1352, 1363, 1373, 1383, 1398, 1416, 1417, 1421, 1428, 1436, 1437, 1438, 1439, 1440, 1441, 1455, 1461, 1467, 1476, 1484, 1492, 1496, 1504, 1512, 1519, 1529, 1530, 1538, 1549, 1557, 1565, 1573, 1581, 1592, 1600, 1608, 1616, 1624, 1632, 1640, 1647, 1656, 1666, 1667, 1671, 1672, 1675, 1677, 1679, 1681, 1685, 1686, 1687, 1688, 1692, 1693, 1694, 1700, 1712, 1716, 1720, 1724, 1728, 1743, 1750, 1751, 1752, 1756, 1757, 1758, 1762, 1763, 1767, 1771, 1772, 1779, 1786, 1796, 1803, 1813, 1814, 1819, 1820, 1825, 1831, 1837, 1843, 1849, 1859, 1869, 1870, 1874, 1875, 1883, 1898, 1904, 1910, 1916, 1922, 1941, 1950, 1959, 1968, 1977, 1988, 1999, 2008, 2017, 2026, 2037, 2048, 2057, 2066, 2075, 2084, 2093, 2102, 2113, 2127, 2128, 2133, 2146, 2162, 2178, 2187, 2196, 2205, 2214, 2223, 2231, 2239, 2247, 2256, 2265, 2281, 2290, 2299, 2308, 2325, 2334, 2343, 2352, 2362, 2375, 2390, 2399, 2407, 2422, 2430, 2440, 2450, 2457, 2465, 2473, 2480, 2487, 2495, 2503, 2511, 2518, 2525, 2533, 2540, 2547, 2555, 2563, 2571, 2579, 2587, 2595, 2605, 2612, 2620, 2628, 2636, 2644, 2652, 2659, 2666, 2673, 2679, 2689, 2690, 2694, 2695, 2696, 2700, 2708, 2712, 2713, 2717, 2724, 2731, 2738, 2748, 2751, 2752, 2756, 2757, 2762, 2766, 2770, 2775, 2782, 2784, 2789, 2793, 2797, 2808, 2816, 2869, 2882, 2896, 2908, 2915, 2919, 2933, 2946, 2947, 2952, 2961, 2971, 2981, 3007, 3013, 3046, 3081, 3103, 3104, 3108, 3109, 3118, 3119, 3120, 3123, 3124, 3129, 3130, 3134, 3138, 3142, 3146, 3150, 3154, 3158, 3162, 3166, 3170, 3174, 3178, 3182, 3191, 3195, 3199, 3203, 3207, 3208, 3213, 3217, 3224, 3231, 3232, 3233, 3234, 3235, 3239, 3243, 3251, 3262, 3281, 3300, 3320, 3340, 3360, 3393, 3394, 3395, 3396, 3397, 3404, 3411, 3412, 3416, 3417, 3421, 3422, 3426, 3430, 3437, 3441, 3448, 3449, 3450, 3454, 3455, 3458, 3479, 3497, 3518, 3519, 3523, 3530, 3531, 3532, 3563, 3570, 3577, 3588, 3599, 3611, 3620, 3629, 3652, 3670, 3671, 3690, 3697, 3704, 3711, 3722, 3733, 3734, 3735, 3739, 3740, 3741, 3742, 3743, 3744, 3745, 3746, 3747, 3756, 3763, 3767, 3780, 3796, 3811, 3827, 3842, 3861, 3882, 3883, 3887, 3888, 3892, 3893, 3896, 3902, 3903, 3906, 3910, 3918, 3923, 3929, 3930, 3934, 3939, 3946, 3947, 3957, 3959, 3961, 3963, 3966, 3969, 3972, 3976, 3977, 3978, 3979, 3980, 3983, 3984, 3988, 3989, 3992, 4004, 4005, 4008, 4019, 4030, 4044, 4045, 4050, 4051, 4052, 4055, 4056, 4057, 4058, 4061, 4062, 4065, 4066, 4069, 4087, 4099, 4123, 4131, 4152, 4165, 4181, 4197, 4198, 4199, 4211, 4224, 4240, 4254, 4255, 4267, 4287, 4297, 4310, 4318, 4329, 4330, 4333, 4334, 4337, 4338, 4341, 4345, 4349, 4353, 4357, 4361, 4365, 4369, 4373, 4377, 4381, 4386, 4390, 4394, 4400, 4401, 4405, 4406, 4407, 4412, 4415, 4416, 4428, 4443, 4458, 4459, 4467, 4468, 4472, 4473, 4477, 4478, 4482, 4483, 4487, 4497, 4510, 4511, 4521, 4532, 4533, 4546, 4553, 4570, 4578, 4589, 4592, 4596, 4600, 4604, 4611, 4623, 4633, 4636, 4640, 4653, 4662, 4671, 4680, 4689, 4698, 4707, 4716, 4725, 4734, 4743, 4752, 4761, 4770, 4779, 4788, 4797, 4806, 4815, 4824, 4833, 4842, 4851, 4860, 4869, 4878, 4887, 4896, 4914, 4925, 4926, 4927, 4928, 4932, 4933, 4937, 4938, 4948, 4956, 4968, 4969, 4973, 4977, 4985, 4989, 4993, 5000, 5004, 5009, 5014, 5021, 5028, 5033, 5043, 5055, 5070, 5071, 5076, 5077, 5081, 5082, 5092, 5101, 5109, 5126, 5146, 5166, 5187, 5218, 5227, 5248, 5263, 5264, 5268, 5276, 5291, 5300, 5312, 5313, 5325, 5333, 5350, 5374, 5391, 5405, 5406, 5410, 5411, 5415, 5416, 5420, 5421, 5425, 5439, 5443, 5444, 5448, 5449, 5450, 5451, 5452, 5462, 5473, 5474, 5485, 5506, 5532, 5533, 5534, 5538, 5540, 5562, 5564, 5566, 5568, 5570, 5575, 5576, 5580, 5581, 5585, 5596, 5597, 5601, 5610, 5614, 5618, 5623, 5633, 5634, 5638, 5639, 5643, 5644, 5648, 5649, 5653, 5654, 5655, 5659, 5663, 5664, 5665, 5669, 5670, 5675, 5676, 5703, 5704, 5705, 5706, 5707, 5708, 5721, 5731, 5745, 5747, 5752, 5757, 5759, 5764, 5774, 5775, 5776, 5777, 5788, 5807, 5818, 5830, 5840, 5850, 5861, 5870, 5877, 5884, 5893, 5902, 5911, 5920, 5929, 5939, 5948, 5960, 5963, 5964, 5967, 5971, 5978, 5979, 5980, 5981, 5982, 5983, 5986, 5989, 5990, 5998, 6005, 6006, 6009, 6011, 6022, 6033, 6044, 6055, 6068, 6069, 6085, 6100, 6101, 6105, 6117, 6127, 6135, 6144, 6153, 6154, 6157, 6158, 6161, 6162, 6163, 6166, 6180, 6185, 6195, 6204, 6216, 6217, 6221, 6229, 6241, 6251, 6264, 6274, 6296, 6306, 6324, 6334, 6344, 6354, 6364, 6374, 6384, 6394, 6404, 6414, 6424, 6434, 6448, 6449, 6450, 6451, 6452, 6453, 6454, 6455, 6456, 6457, 6458, 6459, 6460, 6465, 6466, 6467, 6468, 6469, 6470, 6471, 6476, 6477, 6478, 6482, 6483, 6486, 6487, 6490, 6492, 6497, 6498, 6509, 6520, 6521, 6522, 6556, 6564, 6572, 6580, 6588, 6596, 6604, 6612, 6620, 6633, 6641, 6649, 6657, 6665, 6673, 6681, 6689, 6697, 6705, 6717, 6718, 6719, 6720, 6721, 6722, 6723, 6724, 6725, 6726, 6727, 6728, 6729, 6730, 6735, 6736, 6737, 6738, 6739, 6740, 6741, 6742, 6743, 6744, 6745, 6746, 6750, 6751, 6765, 6775, 6785, 6795, 6805, 6815, 6825, 6835, 6845, 6857, 6858, 6863, 6864, 6865, 6866, 6867, 6868, 6873, 6874, 6875, 6876, 6877, 6878, 6879, 6880, 6883, 6884, 6894, 6900, 6908, 6916, 6924, 6932, 6940, 6948, 6956, 6964, 6972, 6980, 6988, 6996, 7004, 7012, 7020, 7028, 7038, 7039, 7042, 7043, 7053, 7069, 7083, 7109, 7111, 7113, 7115, 7122, 7131, 7132, 7135, 7142, 7149, 7156, 7170, 7178, 7186, 7194, 7202, 7210, 7218, 7226, 7234, 7242, 7250, 7258, 7266, 7274, 7282, 7290, 7298, 7306, 7314, 7322, 7334, 7335, 7339, 7340, 7345, 7346, 7356, 7369, 7379, 7391, 7392, 7395, 7396, 7406, 7416, 7417, 7421, 7425, 7429, 7440, 7453, 7467, 7484, 7485, 7486, 7487, 7488, 7489, 7501, 7531, 7564, 7565, 7569, 7570, 7574, 7575, 7579, 7580, 7583, 7584, 7589, 7601, 7620, 7625, 7630, 7637, 7638, 7641, 7642, 7645, 7646, 7649, 7650, 7653, 7654, 7655, 7658, 7659, 7660, 7676, 7688, 7701, 7713, 7728, 7729, 7732, 7733, 7737, 7738, 7742, 7743, 7748, 7760, 7767, 7774, 7789, 7790, 7794, 7795, 7810, 7819, 7828, 7837, 7846, 7858, 7859, 7860, 7861, 7862, 7868, 7872, 7887, 7888, 7894, 7904, 7908, 7913, 7921, 7962, 7966, 7970, 7974, 7982, 7983, 7987, 7997, 7998, 8004, 8005, 8012, 8016, 8020, 8024, 8028, 8032, 8036, 8040, 8044, 8048, 8052, 8056, 8060, 8064, 8068, 8072, 8077, 8084, 8088, 8092, 8096, 8100, 8106, 8107, 8114, 8115, 8119, 8120, 8123, 8135, 8139, 8154, 8162, 8170, 8182, 8183, 8188, 8189, 8206, 8216, 8226, 8236, 8246, 8256, 8269, 8279, 8292, 8302, 8315, 8323, 8325, 8327, 8332, 8334, 8339, 8340, 8345, 8363, 8372, 8373, 8377, 8381, 8393, 8404, 8415, 8428, 8429, 8430, 8434, 8446, 8447, 8457, 8469, 8473, 8477, 8481, 8488, 8508, 8518, 8528, 8538, 8550, 8551, 8554, 8555, 8556, 8559, 8560, 8563, 8573, 8582, 8599, 8608, 8617, 8626, 8635, 8644, 8653, 8662, 8671, 8680, 8689, 8698, 8707, 8717, 8727, 8736, 8745, 8754, 8763, 8772, 8781, 8791, 8801, 8811, 8821, 8831, 8841, 8851, 8861, 8871, 8881, 8891, 8901, 8912, 8923, 8934, 8945, 8956, 8967, 8977, 8987, 8998, 9009, 9019, 9029, 9037, 9046, 9055, 9064, 9073, 9082, 9091, 9100, 9109, 9118, 9132, 9133, 9136, 9137, 9147, 9156, 9165, 9174, 9184, 9193, 9204, 9205, 9215, 9224, 9233, 9242, 9251, 9260, 9269, 9278, 9287, 9296, 9305, 9314, 9323, 9332, 9341, 9350, 9359, 9368, 9377, 9386, 9395, 9404, 9413, 9422, 9431, 9440, 9449, 9467, 9476, 9477, 9480, 9482, 9488, 9489, 9490, 9491, 9492, 9504, 9519, 9527, 9535, 9543, 9551, 9559, 9567, 9575, 9583, 9591, 9599, 9607, 9615, 9623, 9631, 9639, 9647, 9655, 9663, 9671, 9679, 9687, 9695, 9703, 9721, 9740, 9741, 9745, 9749, 9769, 9776, 9784, 9792, 9809, 9822, 9826, 9833, 9842, 9851, 9860, 9869, 9879, 9889, 9907, 9915, 9931, 9948, 9949, 9950, 9955, 9961, 9970, 9971, 9972, 9973, 9974, 9978, 9979, 9982, 9983, 9984, 9985, 9989, 9990, 9991, 10003, 10013, 10014, 10017, 10026, 10032, 10051, 10059, 10066, 10073, 10081, 10089, 10097, 10104, 10111, 10118, 10125, 10132, 10139, 10146, 10155, 10156, 10157, 10161, 10164, 10167, 10170, 10173, 10180, 10182, 10184, 10189, 10191, 10195, 10196, 10197, 10209, 10222, 10235, 10253, 10274, 10275, 10276, 10277, 10287, 10303, 10313, 10314, 10318, 10319, 10323, 10327, 10331, 10349, 10350, 10351, 10352, 10353, 10354, 10355, 10362, 10363, 10374, 10381, 10388, 10399, 10416, 10424, 10432, 10440, 10451, 10455, 10466, 10478, 10495, 10501, 10517, 10530, 10539, 10547, 10555, 10564, 10575, 10586, 10596, 10597, 10608, 10618, 10629, 10640, 10651, 10662, 10671, 10683, 10684, 10698, 10721, 10731, 10742, 10755, 10756, 10768, 10788, 10798, 10809, 10820, 10824, 10831, 10832, 10836, 10843, 10844, 10848, 10849, 10850, 10854, 10855, 10859, 10860, 10863, 10864, 10867, 10868, 10872, 10873, 10877, 10884, 10886, 10891, 10892, 10905, 10912, 10922, 10929, 10939, 10940, 10941, 10942, 10943, 10944, 10945, 10946, 10947, 10951, 10955, 10962, 10969, 10970, 10974, 10975, 10976, 10986, 10996, 10997, 11001, 11002, 11003, 11004, 11014, 11021, 11038, 11057, 11058, 11068, 11074, 11080, 11086, 11102, 11120, 11124, 11132, 11138, 11145, 11151, 11158, 11167, 11168, 11172, 11174, 11179, 11190, 11200, 11210, 11216, 11225, 11234, 11240, 11241, 11252, 11266, 11267, 11278, 11289, 11290, 11293, 11294, 11295, 11296, 11297, 11298, 11299, 11300, 11303, 11304, 11308, 11309, 11310, 11321, 11339, 11340, 11344, 11349, 11373, 11384, 11385, 11395, 11406, 11409, 11410, 11411, 11412, 11413, 11416, 11417, 11418, 11466, 11467, 11471, 11472, 11487, 11488, 11495, 11503, 11511, 11519, 11527, 11535, 11546, 11547, 11574, 11588, 11603, 11604, 11623, 11627, 11631, 11648, 11655, 11662, 11672, 11673, 11676, 11689, 11690, 11691, 11695, 11696, 11700, 11712, 11720, 11725, 11730, 11735, 11740, 11748, 11756, 11761, 11766, 11773, 11774, 11778, 11779, 11780, 11787, 11788, 11792, 11793, 11797, 11798, 11802, 11806, 11807, 11810, 11819, 11832, 11837, 11842, 11846, 11857, 11858, 11862, 11870, 11886, 11894, 11902, 11910, 11921, 11924, 11929, 11930, 11938, 11958, 11959, 11961, 11966, 11967, 11971, 11972, 11975, 11976, 12001, 12002, 12006, 12007, 12011, 12012, 12013, 12014, 12015, 12019, 12032, 12039, 12046, 12053, 12054, 12058, 12059, 12063, 12064, 12068, 12069, 12073, 12084, 12085, 12086, 12087, 12091, 12092, 12102, 12108, 12126, 12127, 12131, 12132, 12138, 12143, 12151, 12158, 12166, 12172, 12179, 12214, 12239, 12243, 12269, 12273, 12285, 12298, 12312, 12323, 12338, 12344, 12349, 12355, 12362, 12363, 12371, 12375, 12379, 12385, 12392, 12397, 12398, 12399, 12400, 12404, 12405, 12417, 12418, 12423, 12430, 12437, 12444, 12455, 12456, 12469, 12473, 12480, 12493, 12506, 12507, 12522, 12532, 12544, 12549, 12550, 12553, 12554, 12557, 12558, 12563, 12564, 12569, 12570, 12578, 12583, 12584, 12588, 12592, 12598, 12622, 12632, 12645, 12646, 12650, 12664, 12721, 12735, 12737, 12742, 12744, 12746, 12748, 12753, 12755, 12760, 12768, 12788, 12793, 12800, 12805, 12811, 12816, 12825, 12827, 12830, 12834, 12835, 12836, 12837, 12838, 12839, 12844, 12864, 12865, 12866, 12867, 12878, 12884, 12892, 12893, 12899, 12904, 12909, 12914, 12919, 12924, 12929, 12934, 12940, 12946, 12952, 12959, 12981, 12990, 12994, 13002, 13006, 13014, 13026, 13047, 13051, 13057, 13061, 13074, 13082, 13092, 13094, 13096, 13098, 13100, 13102, 13107, 13108, 13115, 13124, 13132, 13141, 13152, 13160, 13161, 13162, 13166, 13168, 13170, 13172, 13174, 13176, 13178, 13183, 13188, 13194, 13202, 13207, 13214, 13221, 13225, 13229, 13265, 13266, 13268, 13276, 13291, 13293, 13295, 13297, 13299, 13301, 13303, 13305, 13307, 13309, 13311, 13313, 13315, 13317, 13320, 13322, 13324, 13327, 13329, 13332, 13334, 13336, 13338, 13341, 13346, 13354, 13359, 13367, 13372, 13380, 13385, 13394, 13402, 13410, 13418, 13436, 13444, 13452, 13460, 13468, 13484, 13492, 13500, 13508, 13516, 13524, 13532, 13536, 13540, 13544, 13548, 13556, 13564, 13572, 13580, 13600, 13622, 13633, 13640, 13656, 13661, 13667, 13671, 13675, 13679, 13683, 13708, 13710, 13712, 13714, 13716, 13718, 13720, 13722, 13724, 13726, 13728, 13730, 13732, 13734, 13736, 13738, 13740, 13742, 13744, 13746, 13748, 13750, 13754, 13758, 13762, 13766, 13771, 13787, 13788, 13789, 13804, 13819, 13853, 13855, 13857, 13868, 13892, 13903, 13914, 13921, 13931, 13941, 13950, 13954, 13960, 13967, 13974, 13984, 13991, 14019, 14054, 14065, 14066, 14073, 14079, 14083, 14087, 14091, 14095, 14099, 14103, 14107, 14111, 14115, 14119, 14123, 14127, 14131, 14135, 14139, 14141, 14145, 14149, 14153, 14162, 14167, 14174, 14189, 14196, 14200, 14204, 14208, 14212, 14219, 14227, 14235, 14239, 14243, 14247, 14251, 14255, 14261, 14265, 14274, 14278, 14282, 14287, 14301, 14303, 14307, 14309, 14311, 14314, 14317, 14320, 14321, 14324, 14332, 14342, 14343, 14346, 14347, 14348, 14353, 14357, 14361, 14365, 14372, 14373, 14381, 14382, 14386, 14387, 14395, 14396, 14400, 14401, 14406, 14414, 14416, 14430, 14433, 14460, 14461, 14464, 14465, 14473, 14480, 14487, 14495, 14504, 14521, 14566, 14574, 14582, 14590, 14598, 14609, 14610, 14611, 14612, 14613, 14627, 14628, 14629, 14632, 14633, 14636, 14639, 14640, 14641, 14644, 14645, 14648, 14649, 14650, 14651, 14652, 14653, 14654, 14655, 14656, 14657, 14658, 14659, 14660, 14663, 14665, 14670, 14672, 14677, 14679, 14681, 14683, 14685, 14687, 14699, 14703, 14710, 14714, 14720, 14724, 14733, 14744, 14745, 14748, 14752, 14756, 14762, 14763, 14768, 14772, 14776, 14780, 14787, 14788, 14789, 14790, 14791, 14792, 14793, 14794, 14798, 14799, 14800, 14801, 14811, 14815, 14822, 14829, 14830, 14846, 14850, 14855, 14859, 14874, 14879, 14883, 14886, 14889, 14890, 14891, 14894, 14901, 14911, 14925, 14926, 14930, 14941, 14942, 14945, 14946, 14949, 14953, 14960, 14964, 14968, 14976, 14987, 14988, 14992, 14993, 14997, 14998, 15001, 15002, 15012, 15013, 15017, 15018, 15021, 15037, 15045, 15053, 15075, 15076, 15087, 15091, 15118, 15120, 15125, 15128, 15131, 15133, 15135, 15137, 15147, 15149, 15160, 15164, 15168, 15172, 15176, 15185, 15192, 15224, 15231, 15263, 15267, 15273, 15280, 15284, 15290, 15298, 15305, 15309, 15313, 15319, 15320, 15322, 15323, 15324, 15328, 15361, 15388, 15392, 15398, 15400, 15417, 15418, 15419, 15424, 15425, 15426, 15431, 15432, 15433, 15434, 15440, 15441, 15442, 15443, 15444, 15464, 15465, 15466, 15467, 15468, 15469, 15470, 15471, 15472, 15473, 15474, 15475, 15476, 15477, 15478, 15479, 15480, 15481, 15482, 15483, 15484, 15485, 15486, 15487, 15488, 15489, 15490, 15491, 15492, 15493, 15494, 15495, 15496, 15497, 15498, 15499, 15500, 15501, 15502, 15503, 15504, 15505, 15506, 15507, 15508, 15509, 15510, 15511, 15512, 15513, 15514, 15515, 15516, 15517, 15518, 15519, 15520, 15521, 15522, 15523, 15524, 15525, 15526, 15527, 15528, 15529, 15530, 15531, 15532, 15533, 15534, 15535, 15536, 15537, 15538, 15539, 15540, 15541, 15542, 15543, 15544, 15545, 15546, 15547, 15548, 15549, 15550, 15551, 15552, 15553, 15554, 15555, 15556, 15557, 15558, 15559, 15560, 15561, 15562, 15563, 15564, 15565, 15566, 15567, 15568, 15569, 15570, 15571, 15572, 15573, 15574, 15575, 15576, 15577, 15578, 15579, 15580, 15581, 15582, 15583, 15584, 15585, 15586, 15587, 15588, 15589, 15590, 15591, 15592, 15593, 15594, 15595, 15596, 15597, 15598, 15599, 15600, 15601, 15602, 15603, 15604, 15605, 15606, 15607, 15608, 15609, 15610, 15611, 15612, 15613, 15614, 15615, 15616, 15617, 15618, 15619, 15620, 15621, 15622, 15623, 15624, 15625, 15626, 15627, 15628, 15629, 15630, 15631, 15632, 15633, 15634, 15635, 15636, 15637, 15638, 15639, 15640, 15641, 15642, 15643, 15644, 15645, 15646, 15647, 15648, 15649, 15650, 15651, 15652, 15653, 15654, 15655, 15656, 15657, 15658, 15659, 15660, 15661, 15662, 15663, 15664, 15665, 15666, 15667, 15668, 15669, 15670, 15671, 15672, 15673, 15674, 15675, 15676, 15677, 15678, 15679, 15680, 15681, 15682, 15683, 15684, 15685, 15686, 15687, 15688, 15689, 15690, 15691, 15692, 15693, 15694, 15695, 15696, 15697, 15698, 15699, 15700, 15701, 15702, 15703, 15704, 15705, 15706, 15707, 15708, 15709, 15710, 15711, 15712, 15713, 15714, 15715, 15716, 15717, 15718, 15719, 15720, 15721, 15722, 15723, 15724, 15725, 15726, 15727, 15728, 15729, 15730, 15731, 15732, 15733, 15734, 15735, 15736, 15737, 15738, 15739, 15740, 15741, 15742, 15743, 15744, 15745, 15746, 15747, 15748, 15749, 15750, 15751, 15752, 15753, 15754, 15755, 15756, 15757, 15758, 15759, 15760, 15761, 15762, 15776, 15777, 15778, 15779, 15780, 15781, 15782, 15783, 15784, 15785, 15786, 15787, 15788, 15789, 15790, 15791, 15792, 15793, 15794, 15795, 15796, 15797, 15798, 15799, 15800, 15801, 15802, 15803, 15804, 15805, 15806, 15807, 15808, 15809, 15810, 15811, 15812, 15813, 15814, 15815, 15816, 15817, 15818, 15819, 15820, 15821, 15822, 15823, 15824, 15825, 15826, 15840, 15841, 15842, 15843, 15844, 15845, 15846, 15847, 15848, 15849, 15850, 15851, 15852, 15853, 15854, 15855, 15856, 15857, 15858, 15859, 15860, 15861, 15862, 15872, 15873, 15874, 15875, 15876, 15877, 15878, 15879, 15880, 15881, 15882, 15883, 15884, 15885, 15886, 15887, 15888, 15889, 15890, 15891, 15892, 15893, 15894, 15895, 15896, 15897, 15898, 15899, 15900, 15901, 15902, 15903, 15904, 15905, 15906, 15907, 15908, 15909, 15910, 15911, 15912, 15913, 15914, 15915, 15916, 15917, 15918, 15919, 15920, 15921, 15922, 15923, 15924, 15925, 15926, 15927, 15928, 15929, 15930, 15931, 15932, 15933, 15934, 15935, 15936, 15937, 15938, 15939, 15940, 15941, 15942, 15943, 15944, 15945, 15946, 15947, 15948 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "IDENT", "UIDENT", "FCONST", "SCONST", "USCONST", "BCONST", "XCONST", "Op", "ICONST", "PARAM", "TYPECAST", "DOT_DOT", "COLON_EQUALS", "EQUALS_GREATER", "LESS_EQUALS", "GREATER_EQUALS", "NOT_EQUALS", "SQL_COMMENT", "C_COMMENT", "ABORT_P", "ABSOLUTE_P", "ACCESS", "ACTION", "ADD_P", "ADMIN", "AFTER", "AGGREGATE", "ALL", "ALSO", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", "ASSERTION", "ASSIGNMENT", "ASYMMETRIC", "AT", "ATTACH", "ATTRIBUTE", "AUTHORIZATION", "BACKWARD", "BEFORE", "BEGIN_P", "BETWEEN", "BIGINT", "BINARY", "BIT", "BOOLEAN_P", "BOTH", "BY", "CACHE", "CALL", "CALLED", "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG_P", "CHAIN", "CHAR_P", "CHARACTER", "CHARACTERISTICS", "CHECK", "CHECKPOINT", "CLASS", "CLOSE", "CLUSTER", "COALESCE", "COLLATE", "COLLATION", "COLUMN", "COLUMNS", "COMMENT", "COMMENTS", "COMMIT", "COMMITTED", "CONCURRENTLY", "CONFIGURATION", "CONFLICT", "CONNECTION", "CONSTRAINT", "CONSTRAINTS", "CONTENT_P", "CONTINUE_P", "CONVERSION_P", "COPY", "COST", "CREATE", "CROSS", "CSV", "CUBE", "CURRENT_P", "CURRENT_CATALOG", "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_SCHEMA", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "CYCLE", "DATA_P", "DATABASE", "DAY_P", "DEALLOCATE", "DEC", "DECIMAL_P", "DECLARE", "DEFAULT", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEFINER", "DELETE_P", "DELIMITER", "DELIMITERS", "DEPENDS", "DESC", "DETACH", "DICTIONARY", "DISABLE_P", "DISCARD", "DISTINCT", "DO", "DOCUMENT_P", "DOMAIN_P", "DOUBLE_P", "DROP", "EACH", "ELSE", "ENABLE_P", "ENCODING", "ENCRYPTED", "END_P", "ENUM_P", "ESCAPE", "EVENT", "EXCEPT", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXECUTE", "EXISTS", "EXPLAIN", "EXPRESSION", "EXTENSION", "EXTERNAL", "EXTRACT", "FALSE_P", "FAMILY", "FETCH", "FILTER", "FIRST_P", "FLOAT_P", "FOLLOWING", "FOR", "FORCE", "FOREIGN", "FORWARD", "FREEZE", "FROM", "FULL", "FUNCTION", "FUNCTIONS", "GENERATED", "GLOBAL", "GRANT", "GRANTED", "GREATEST", "GROUP_P", "GROUPING", "GROUPS", "HANDLER", "HAVING", "HEADER_P", "HOLD", "HOUR_P", "IDENTITY_P", "IF_P", "ILIKE", "IMMEDIATE", "IMMUTABLE", "IMPLICIT_P", "IMPORT_P", "IN_P", "INCLUDE", "INCLUDING", "INCREMENT", "INDEX", "INDEXES", "INHERIT", "INHERITS", "INITIALLY", "INLINE_P", "INNER_P", "INOUT", "INPUT_P", "INSENSITIVE", "INSERT", "INSTEAD", "INT_P", "INTEGER", "INTERSECT", "INTERVAL", "INTO", "INVOKER", "IS", "ISNULL", "ISOLATION", "JOIN", "KEY", "LABEL", "LANGUAGE", "LARGE_P", "LAST_P", "LATERAL_P", "LEADING", "LEAKPROOF", "LEAST", "LEFT", "LEVEL", "LIKE", "LIMIT", "LISTEN", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", "LOCATION", "LOCK_P", "LOCKED", "LOGGED", "MAPPING", "MATCH", "MATERIALIZED", "MAXVALUE", "METHOD", "MINUTE_P", "MINVALUE", "MODE", "MONTH_P", "MOVE", "NAME_P", "NAMES", "NATIONAL", "NATURAL", "NCHAR", "NEW", "NEXT", "NFC", "NFD", "NFKC", "NFKD", "NO", "NONE", "NORMALIZE", "NORMALIZED", "NOT", "NOTHING", "NOTIFY", "NOTNULL", "NOWAIT", "NULL_P", "NULLIF", "NULLS_P", "NUMERIC", "OBJECT_P", "OF", "OFF", "OFFSET", "OIDS", "OLD", "ON", "ONLY", "OPERATOR", "OPTION", "OPTIONS", "OR", "ORDER", "ORDINALITY", "OTHERS", "OUT_P", "OUTER_P", "OVER", "OVERLAPS", "OVERLAY", "OVERRIDING", "OWNED", "OWNER", "PARALLEL", "PARSER", "PARTIAL", "PARTITION", "PASSING", "PASSWORD", "PLACING", "PLANS", "POLICY", "POSITION", "PRECEDING", "PRECISION", "PRESERVE", "PREPARE", "PREPARED", "PRIMARY", "PRIOR", "PRIVILEGES", "PROCEDURAL", "PROCEDURE", "PROCEDURES", "PROGRAM", "PUBLICATION", "QUOTE", "RANGE", "READ", "REAL", "REASSIGN", "RECHECK", "RECURSIVE", "REF", "REFERENCES", "REFERENCING", "REFRESH", "REINDEX", "RELATIVE_P", "RELEASE", "RENAME", "REPEATABLE", "REPLACE", "REPLICA", "RESET", "RESTART", "RESTRICT", "RETURNING", "RETURNS", "REVOKE", "RIGHT", "ROLE", "ROLLBACK", "ROLLUP", "ROUTINE", "ROUTINES", "ROW", "ROWS", "RULE", "SAVEPOINT", "SCHEMA", "SCHEMAS", "SCROLL", "SEARCH", "SECOND_P", "SECURITY", "SELECT", "SEQUENCE", "SEQUENCES", "SERIALIZABLE", "SERVER", "SESSION", "SESSION_USER", "SET", "SETS", "SETOF", "SHARE", "SHOW", "SIMILAR", "SIMPLE", "SKIP", "SMALLINT", "SNAPSHOT", "SOME", "SQL_P", "STABLE", "STANDALONE_P", "START", "STATEMENT", "STATISTICS", "STDIN", "STDOUT", "STORAGE", "STORED", "STRICT_P", "STRIP_P", "SUBSCRIPTION", "SUBSTRING", "SUPPORT", "SYMMETRIC", "SYSID", "SYSTEM_P", "TABLE", "TABLES", "TABLESAMPLE", "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", "TEXT_P", "THEN", "TIES", "TIME", "TIMESTAMP", "TO", "TRAILING", "TRANSACTION", "TRANSFORM", "TREAT", "TRIGGER", "TRIM", "TRUE_P", "TRUNCATE", "TRUSTED", "TYPE_P", "TYPES_P", "UESCAPE", "UNBOUNDED", "UNCOMMITTED", "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", "UNLOGGED", "UNTIL", "UPDATE", "USER", "USING", "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VALUE_P", "VALUES", "VARCHAR", "VARIADIC", "VARYING", "VERBOSE", "VERSION_P", "VIEW", "VIEWS", "VOLATILE", "WHEN", "WHERE", "WHITESPACE_P", "WINDOW", "WITH", "WITHIN", "WITHOUT", "WORK", "WRAPPER", "WRITE", "XML_P", "XMLATTRIBUTES", "XMLCONCAT", "XMLELEMENT", "XMLEXISTS", "XMLFOREST", "XMLNAMESPACES", "XMLPARSE", "XMLPI", "XMLROOT", "XMLSERIALIZE", "XMLTABLE", "YEAR_P", "YES_P", "ZONE", "NOT_LA", "NULLS_LA", "WITH_LA", "'<'", "'>'", "'='", "'?'", "POSTFIXOP", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "UMINUS", "'['", "']'", "'('", "')'", "'.'", "';'", "','", "':'", "$accept", "stmtblock", "stmtmulti", "stmt", "CallStmt", "CreateRoleStmt", "opt_with", "OptRoleList", "AlterOptRoleList", "AlterOptRoleElem", "CreateOptRoleElem", "CreateUserStmt", "AlterRoleStmt", "opt_in_database", "AlterRoleSetStmt", "DropRoleStmt", "CreateGroupStmt", "AlterGroupStmt", "add_drop", "CreateSchemaStmt", "OptSchemaName", "OptSchemaEltList", "schema_stmt", "VariableSetStmt", "set_rest", "generic_set", "set_rest_more", "var_name", "var_list", "var_value", "iso_level", "opt_boolean_or_string", "zone_value", "opt_encoding", "NonReservedWord_or_Sconst", "VariableResetStmt", "reset_rest", "generic_reset", "SetResetClause", "FunctionSetResetClause", "VariableShowStmt", "ConstraintsSetStmt", "constraints_set_list", "constraints_set_mode", "CheckPointStmt", "DiscardStmt", "AlterTableStmt", "alter_table_cmds", "partition_cmd", "index_partition_cmd", "alter_table_cmd", "alter_column_default", "opt_drop_behavior", "opt_collate_clause", "alter_using", "replica_identity", "reloptions", "opt_reloptions", "reloption_list", "reloption_elem", "alter_identity_column_option_list", "alter_identity_column_option", "PartitionBoundSpec", "hash_partbound_elem", "hash_partbound", "AlterCompositeTypeStmt", "alter_type_cmds", "alter_type_cmd", "ClosePortalStmt", "CopyStmt", "copy_from", "opt_program", "copy_file_name", "copy_options", "copy_opt_list", "copy_opt_item", "opt_binary", "copy_delimiter", "opt_using", "copy_generic_opt_list", "copy_generic_opt_elem", "copy_generic_opt_arg", "copy_generic_opt_arg_list", "copy_generic_opt_arg_list_item", "CreateStmt", "OptTemp", "OptTableElementList", "OptTypedTableElementList", "TableElementList", "TypedTableElementList", "TableElement", "TypedTableElement", "columnDef", "columnOptions", "ColQualList", "ColConstraint", "ColConstraintElem", "generated_when", "ConstraintAttr", "TableLikeClause", "TableLikeOptionList", "TableLikeOption", "TableConstraint", "ConstraintElem", "opt_no_inherit", "opt_column_list", "columnList", "columnElem", "opt_c_include", "key_match", "ExclusionConstraintList", "ExclusionConstraintElem", "ExclusionWhereClause", "key_actions", "key_update", "key_delete", "key_action", "OptInherit", "OptPartitionSpec", "PartitionSpec", "part_params", "part_elem", "table_access_method_clause", "OptWith", "OnCommitOption", "OptTableSpace", "OptConsTableSpace", "ExistingIndex", "CreateStatsStmt", "AlterStatsStmt", "CreateAsStmt", "create_as_target", "opt_with_data", "CreateMatViewStmt", "create_mv_target", "OptNoLog", "RefreshMatViewStmt", "CreateSeqStmt", "AlterSeqStmt", "OptSeqOptList", "OptParenthesizedSeqOptList", "SeqOptList", "SeqOptElem", "opt_by", "NumericOnly", "NumericOnly_list", "CreatePLangStmt", "opt_trusted", "handler_name", "opt_inline_handler", "validator_clause", "opt_validator", "DropPLangStmt", "opt_procedural", "CreateTableSpaceStmt", "OptTableSpaceOwner", "DropTableSpaceStmt", "CreateExtensionStmt", "create_extension_opt_list", "create_extension_opt_item", "AlterExtensionStmt", "alter_extension_opt_list", "alter_extension_opt_item", "AlterExtensionContentsStmt", "CreateFdwStmt", "fdw_option", "fdw_options", "opt_fdw_options", "AlterFdwStmt", "create_generic_options", "generic_option_list", "alter_generic_options", "alter_generic_option_list", "alter_generic_option_elem", "generic_option_elem", "generic_option_name", "generic_option_arg", "CreateForeignServerStmt", "opt_type", "foreign_server_version", "opt_foreign_server_version", "AlterForeignServerStmt", "CreateForeignTableStmt", "AlterForeignTableStmt", "ImportForeignSchemaStmt", "import_qualification_type", "import_qualification", "CreateUserMappingStmt", "auth_ident", "DropUserMappingStmt", "AlterUserMappingStmt", "CreatePolicyStmt", "AlterPolicyStmt", "RowSecurityOptionalExpr", "RowSecurityOptionalWithCheck", "RowSecurityDefaultToRole", "RowSecurityOptionalToRole", "RowSecurityDefaultPermissive", "RowSecurityDefaultForCmd", "row_security_cmd", "CreateAmStmt", "am_type", "CreateTrigStmt", "TriggerActionTime", "TriggerEvents", "TriggerOneEvent", "TriggerReferencing", "TriggerTransitions", "TriggerTransition", "TransitionOldOrNew", "TransitionRowOrTable", "TransitionRelName", "TriggerForSpec", "TriggerForOptEach", "TriggerForType", "TriggerWhen", "FUNCTION_or_PROCEDURE", "TriggerFuncArgs", "TriggerFuncArg", "OptConstrFromTable", "ConstraintAttributeSpec", "ConstraintAttributeElem", "CreateEventTrigStmt", "event_trigger_when_list", "event_trigger_when_item", "event_trigger_value_list", "AlterEventTrigStmt", "enable_trigger", "CreateAssertionStmt", "DefineStmt", "definition", "def_list", "def_elem", "def_arg", "old_aggr_definition", "old_aggr_list", "old_aggr_elem", "opt_enum_val_list", "enum_val_list", "AlterEnumStmt", "opt_if_not_exists", "CreateOpClassStmt", "opclass_item_list", "opclass_item", "opt_default", "opt_opfamily", "opclass_purpose", "opt_recheck", "CreateOpFamilyStmt", "AlterOpFamilyStmt", "opclass_drop_list", "opclass_drop", "DropOpClassStmt", "DropOpFamilyStmt", "DropOwnedStmt", "ReassignOwnedStmt", "DropStmt", "drop_type_any_name", "drop_type_name", "drop_type_name_on_any_name", "any_name_list", "any_name", "attrs", "type_name_list", "TruncateStmt", "opt_restart_seqs", "CommentStmt", "comment_type_any_name", "comment_type_name", "comment_text", "SecLabelStmt", "opt_provider", "security_label_type_any_name", "security_label_type_name", "security_label", "FetchStmt", "fetch_args", "from_in", "opt_from_in", "GrantStmt", "RevokeStmt", "privileges", "privilege_list", "privilege", "privilege_target", "grantee_list", "grantee", "opt_grant_grant_option", "GrantRoleStmt", "RevokeRoleStmt", "opt_grant_admin_option", "opt_granted_by", "AlterDefaultPrivilegesStmt", "DefACLOptionList", "DefACLOption", "DefACLAction", "defacl_privilege_target", "IndexStmt", "opt_unique", "opt_concurrently", "opt_index_name", "access_method_clause", "index_params", "index_elem_options", "index_elem", "opt_include", "index_including_params", "opt_collate", "opt_class", "opt_asc_desc", "opt_nulls_order", "CreateFunctionStmt", "opt_or_replace", "func_args", "func_args_list", "function_with_argtypes_list", "function_with_argtypes", "func_args_with_defaults", "func_args_with_defaults_list", "func_arg", "arg_class", "param_name", "func_return", "func_type", "func_arg_with_default", "aggr_arg", "aggr_args", "aggr_args_list", "aggregate_with_argtypes", "aggregate_with_argtypes_list", "createfunc_opt_list", "common_func_opt_item", "createfunc_opt_item", "func_as", "transform_type_list", "opt_definition", "table_func_column", "table_func_column_list", "AlterFunctionStmt", "alterfunc_opt_list", "opt_restrict", "RemoveFuncStmt", "RemoveAggrStmt", "RemoveOperStmt", "oper_argtypes", "any_operator", "operator_with_argtypes_list", "operator_with_argtypes", "DoStmt", "dostmt_opt_list", "dostmt_opt_item", "CreateCastStmt", "cast_context", "DropCastStmt", "opt_if_exists", "CreateTransformStmt", "transform_element_list", "DropTransformStmt", "ReindexStmt", "reindex_target_type", "reindex_target_multitable", "reindex_option_list", "reindex_option_elem", "AlterTblSpcStmt", "RenameStmt", "opt_column", "opt_set_data", "AlterObjectDependsStmt", "opt_no", "AlterObjectSchemaStmt", "AlterOperatorStmt", "operator_def_list", "operator_def_elem", "operator_def_arg", "AlterTypeStmt", "AlterOwnerStmt", "CreatePublicationStmt", "opt_publication_for_tables", "publication_for_tables", "AlterPublicationStmt", "CreateSubscriptionStmt", "publication_name_list", "publication_name_item", "AlterSubscriptionStmt", "DropSubscriptionStmt", "RuleStmt", "RuleActionList", "RuleActionMulti", "RuleActionStmt", "RuleActionStmtOrEmpty", "event", "opt_instead", "NotifyStmt", "notify_payload", "ListenStmt", "UnlistenStmt", "TransactionStmt", "opt_transaction", "transaction_mode_item", "transaction_mode_list", "transaction_mode_list_or_empty", "opt_transaction_chain", "ViewStmt", "opt_check_option", "LoadStmt", "CreatedbStmt", "createdb_opt_list", "createdb_opt_items", "createdb_opt_item", "createdb_opt_name", "opt_equal", "AlterDatabaseStmt", "AlterDatabaseSetStmt", "DropdbStmt", "drop_option_list", "drop_option", "AlterCollationStmt", "AlterSystemStmt", "CreateDomainStmt", "AlterDomainStmt", "opt_as", "AlterTSDictionaryStmt", "AlterTSConfigurationStmt", "any_with", "CreateConversionStmt", "ClusterStmt", "cluster_index_specification", "VacuumStmt", "AnalyzeStmt", "vac_analyze_option_list", "analyze_keyword", "vac_analyze_option_elem", "vac_analyze_option_name", "vac_analyze_option_arg", "opt_analyze", "opt_verbose", "opt_full", "opt_freeze", "opt_name_list", "vacuum_relation", "vacuum_relation_list", "opt_vacuum_relation_list", "ExplainStmt", "ExplainableStmt", "explain_option_list", "explain_option_elem", "explain_option_name", "explain_option_arg", "PrepareStmt", "prep_type_clause", "PreparableStmt", "ExecuteStmt", "execute_param_clause", "DeallocateStmt", "InsertStmt", "insert_target", "insert_rest", "override_kind", "insert_column_list", "insert_column_item", "opt_on_conflict", "opt_conf_expr", "returning_clause", "DeleteStmt", "using_clause", "LockStmt", "opt_lock", "lock_type", "opt_nowait", "opt_nowait_or_skip", "UpdateStmt", "set_clause_list", "set_clause", "set_target", "set_target_list", "DeclareCursorStmt", "cursor_name", "cursor_options", "opt_hold", "SelectStmt", "select_with_parens", "select_no_parens", "select_clause", "simple_select", "with_clause", "cte_list", "common_table_expr", "opt_materialized", "opt_with_clause", "into_clause", "OptTempTableName", "opt_table", "all_or_distinct", "distinct_clause", "opt_all_clause", "opt_sort_clause", "sort_clause", "sortby_list", "sortby", "select_limit", "opt_select_limit", "limit_clause", "offset_clause", "select_limit_value", "select_offset_value", "select_fetch_first_value", "I_or_F_const", "row_or_rows", "first_or_next", "group_clause", "group_by_list", "group_by_item", "empty_grouping_set", "rollup_clause", "cube_clause", "grouping_sets_clause", "having_clause", "for_locking_clause", "opt_for_locking_clause", "for_locking_items", "for_locking_item", "for_locking_strength", "locked_rels_list", "values_clause", "from_clause", "from_list", "table_ref", "joined_table", "alias_clause", "opt_alias_clause", "func_alias_clause", "join_type", "join_outer", "join_qual", "relation_expr", "relation_expr_list", "relation_expr_opt_alias", "tablesample_clause", "opt_repeatable_clause", "func_table", "rowsfrom_item", "rowsfrom_list", "opt_col_def_list", "opt_ordinality", "where_clause", "where_or_current_clause", "OptTableFuncElementList", "TableFuncElementList", "TableFuncElement", "xmltable", "xmltable_column_list", "xmltable_column_el", "xmltable_column_option_list", "xmltable_column_option_el", "xml_namespace_list", "xml_namespace_el", "Typename", "opt_array_bounds", "SimpleTypename", "ConstTypename", "GenericType", "opt_type_modifiers", "Numeric", "opt_float", "Bit", "ConstBit", "BitWithLength", "BitWithoutLength", "Character", "ConstCharacter", "CharacterWithLength", "CharacterWithoutLength", "character", "opt_varying", "ConstDatetime", "ConstInterval", "opt_timezone", "opt_interval", "interval_second", "a_expr", "b_expr", "c_expr", "func_application", "func_expr", "func_expr_windowless", "func_expr_common_subexpr", "xml_root_version", "opt_xml_root_standalone", "xml_attributes", "xml_attribute_list", "xml_attribute_el", "document_or_content", "xml_whitespace_option", "xmlexists_argument", "xml_passing_mech", "within_group_clause", "filter_clause", "window_clause", "window_definition_list", "window_definition", "over_clause", "window_specification", "opt_existing_window_name", "opt_partition_clause", "opt_frame_clause", "frame_extent", "frame_bound", "opt_window_exclusion_clause", "row", "explicit_row", "implicit_row", "sub_type", "all_Op", "MathOp", "qual_Op", "qual_all_Op", "subquery_Op", "expr_list", "func_arg_list", "func_arg_expr", "type_list", "array_expr", "array_expr_list", "extract_list", "extract_arg", "unicode_normal_form", "overlay_list", "overlay_placing", "position_list", "substr_list", "substr_from", "substr_for", "trim_list", "in_expr", "case_expr", "when_clause_list", "when_clause", "case_default", "case_arg", "columnref", "indirection_el", "opt_slice_bound", "indirection", "opt_indirection", "opt_asymmetric", "opt_target_list", "target_list", "target_el", "qualified_name_list", "qualified_name", "name_list", "name", "database_name", "access_method", "attr_name", "index_name", "file_name", "func_name", "AexprConst", "Iconst", "Sconst", "SignedIconst", "RoleId", "RoleSpec", "role_list", "ColId", "type_function_name", "NonReservedWord", "ColLabel", "unreserved_keyword", "col_name_keyword", "type_func_name_keyword", "reserved_keyword", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 60, 62, 61, 63, 730, 43, 45, 42, 47, 37, 94, 731, 91, 93, 40, 41, 46, 59, 44, 58 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { 0, 495, 496, 497, 497, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, 499, 500, 501, 501, 501, 502, 502, 503, 503, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 505, 505, 505, 505, 505, 505, 506, 507, 507, 508, 508, 509, 509, 509, 509, 510, 510, 510, 510, 510, 510, 511, 512, 513, 513, 514, 514, 514, 514, 515, 515, 516, 516, 517, 517, 517, 517, 517, 517, 518, 518, 518, 519, 519, 519, 520, 520, 520, 520, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 522, 522, 523, 523, 524, 524, 524, 524, 525, 525, 525, 525, 526, 526, 526, 526, 527, 527, 527, 527, 527, 527, 527, 527, 527, 528, 528, 528, 529, 529, 530, 531, 531, 531, 531, 532, 532, 533, 533, 534, 534, 535, 535, 535, 535, 535, 536, 537, 537, 538, 538, 539, 540, 540, 540, 540, 540, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, 542, 542, 543, 543, 544, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 546, 546, 547, 547, 547, 548, 548, 549, 549, 550, 550, 550, 550, 551, 552, 552, 553, 553, 554, 554, 554, 554, 555, 555, 556, 556, 556, 556, 557, 557, 557, 557, 558, 559, 559, 560, 561, 561, 562, 562, 562, 562, 563, 563, 564, 564, 565, 565, 566, 566, 567, 567, 567, 568, 568, 569, 569, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 571, 571, 572, 572, 573, 573, 574, 574, 575, 576, 576, 576, 576, 576, 577, 577, 578, 579, 579, 579, 579, 579, 579, 580, 580, 580, 580, 580, 580, 580, 580, 581, 581, 582, 582, 583, 583, 584, 584, 585, 585, 585, 586, 586, 587, 588, 588, 589, 589, 590, 590, 590, 590, 591, 591, 591, 591, 591, 591, 591, 591, 591, 592, 592, 593, 593, 593, 593, 594, 595, 595, 595, 596, 596, 596, 596, 596, 596, 596, 596, 596, 597, 597, 598, 598, 598, 598, 598, 598, 598, 599, 599, 600, 600, 601, 601, 602, 603, 603, 604, 604, 604, 604, 605, 605, 606, 606, 607, 607, 608, 608, 608, 608, 608, 609, 610, 611, 611, 611, 611, 611, 612, 612, 613, 613, 614, 615, 615, 616, 616, 616, 617, 617, 618, 618, 618, 619, 619, 619, 619, 620, 620, 621, 621, 622, 623, 623, 624, 624, 625, 625, 626, 627, 627, 627, 628, 628, 629, 630, 630, 631, 632, 632, 633, 633, 634, 634, 635, 635, 636, 636, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 638, 638, 639, 639, 639, 639, 640, 640, 641, 641, 642, 642, 643, 643, 644, 644, 645, 645, 646, 646, 647, 647, 648, 648, 649, 650, 650, 651, 651, 652, 652, 653, 653, 654, 654, 654, 654, 655, 656, 656, 657, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 659, 660, 660, 660, 660, 661, 661, 662, 662, 663, 663, 664, 664, 665, 665, 666, 667, 667, 668, 668, 668, 668, 669, 670, 671, 672, 672, 673, 673, 674, 674, 675, 675, 676, 676, 676, 677, 677, 677, 677, 678, 678, 679, 680, 680, 681, 681, 682, 682, 683, 683, 684, 684, 685, 686, 687, 688, 688, 689, 689, 690, 690, 691, 691, 692, 692, 693, 693, 694, 694, 694, 694, 694, 695, 696, 696, 697, 697, 698, 698, 698, 699, 699, 700, 700, 700, 700, 700, 701, 701, 702, 702, 703, 704, 704, 705, 705, 706, 707, 707, 708, 708, 709, 709, 710, 710, 711, 711, 712, 712, 712, 713, 713, 713, 713, 714, 714, 715, 715, 716, 716, 716, 716, 716, 716, 717, 717, 718, 718, 719, 720, 720, 721, 722, 722, 722, 722, 723, 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, 725, 726, 726, 727, 727, 728, 728, 728, 728, 728, 728, 729, 730, 730, 731, 732, 732, 733, 733, 734, 734, 734, 734, 735, 735, 736, 737, 737, 738, 738, 738, 738, 738, 739, 739, 740, 740, 741, 741, 741, 742, 742, 743, 744, 744, 745, 745, 746, 746, 747, 747, 748, 748, 749, 750, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 752, 752, 752, 752, 752, 752, 752, 752, 752, 752, 752, 752, 752, 753, 753, 753, 753, 753, 753, 753, 754, 754, 754, 755, 755, 756, 756, 757, 757, 758, 758, 759, 760, 760, 760, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, 764, 764, 765, 765, 765, 765, 765, 765, 765, 765, 765, 766, 766, 767, 767, 767, 767, 767, 767, 768, 768, 768, 768, 768, 768, 768, 768, 769, 769, 770, 770, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 772, 772, 773, 773, 774, 775, 775, 776, 776, 776, 776, 776, 777, 777, 778, 778, 778, 778, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 779, 780, 780, 781, 781, 782, 782, 783, 784, 784, 785, 785, 786, 786, 787, 788, 788, 789, 789, 789, 790, 790, 790, 791, 791, 791, 791, 791, 791, 792, 792, 793, 793, 794, 794, 795, 795, 796, 796, 797, 797, 798, 798, 799, 799, 799, 800, 800, 801, 801, 802, 802, 803, 803, 804, 804, 804, 805, 805, 805, 806, 806, 806, 806, 807, 807, 808, 808, 809, 809, 810, 810, 811, 811, 811, 811, 812, 812, 813, 813, 814, 814, 814, 814, 814, 815, 815, 815, 815, 815, 816, 817, 818, 818, 818, 819, 819, 819, 820, 821, 821, 821, 821, 822, 822, 823, 824, 824, 825, 825, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, 827, 827, 827, 827, 827, 828, 828, 829, 829, 830, 830, 831, 832, 832, 833, 833, 833, 834, 834, 835, 835, 836, 836, 836, 836, 836, 836, 837, 837, 838, 838, 839, 839, 839, 839, 840, 840, 841, 841, 842, 843, 844, 844, 845, 845, 846, 846, 846, 847, 847, 847, 848, 849, 849, 850, 851, 851, 851, 851, 852, 853, 853, 853, 853, 854, 854, 855, 855, 855, 856, 856, 857, 858, 858, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, 860, 860, 861, 861, 862, 862, 862, 862, 862, 862, 863, 863, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, 865, 866, 866, 867, 867, 868, 868, 868, 868, 868, 869, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, 871, 872, 872, 873, 873, 874, 874, 874, 874, 875, 876, 876, 877, 878, 878, 878, 878, 878, 878, 879, 879, 880, 881, 881, 881, 882, 882, 883, 883, 883, 883, 883, 884, 884, 885, 885, 885, 885, 886, 886, 886, 887, 888, 888, 889, 890, 890, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 892, 892, 892, 893, 893, 893, 893, 893, 894, 894, 894, 895, 895, 896, 896, 896, 897, 897, 897, 897, 898, 898, 898, 898, 899, 900, 901, 901, 902, 902, 903, 903, 903, 904, 904, 904, 904, 904, 904, 904, 905, 905, 906, 906, 906, 907, 908, 908, 908, 908, 909, 909, 910, 911, 912, 912, 913, 914, 914, 914, 914, 914, 914, 914, 915, 915, 916, 917, 917, 917, 917, 917, 917, 918, 918, 919, 920, 920, 920, 921, 921, 922, 922, 923, 923, 924, 924, 925, 925, 926, 927, 927, 928, 928, 928, 929, 929, 930, 930, 931, 931, 932, 932, 933, 933, 934, 935, 935, 936, 936, 937, 937, 937, 937, 938, 938, 938, 938, 938, 938, 938, 938, 938, 939, 939, 940, 941, 941, 942, 942, 942, 943, 944, 944, 945, 945, 945, 945, 946, 946, 946, 947, 947, 948, 948, 948, 948, 949, 950, 950, 951, 951, 951, 951, 951, 952, 952, 953, 953, 954, 955, 955, 955, 956, 956, 956, 957, 957, 958, 959, 959, 960, 961, 961, 962, 962, 962, 962, 962, 962, 962, 962, 963, 963, 964, 964, 964, 965, 966, 966, 967, 967, 968, 969, 969, 970, 971, 972, 972, 972, 972, 972, 973, 973, 973, 974, 974, 975, 975, 976, 976, 976, 976, 976, 976, 976, 976, 977, 977, 978, 978, 978, 978, 978, 978, 978, 979, 979, 979, 980, 980, 981, 982, 982, 982, 983, 983, 984, 984, 985, 985, 985, 985, 985, 985, 985, 985, 985, 986, 986, 987, 987, 987, 988, 988, 989, 989, 990, 990, 991, 992, 992, 993, 993, 994, 994, 994, 994, 995, 995, 996, 996, 996, 996, 996, 996, 997, 997, 998, 998, 999, 1000, 1000, 1000, 1001, 1001, 1002, 1002, 1003, 1003, 1004, 1004, 1005, 1005, 1006, 1006, 1006, 1006, 1006, 1007, 1008, 1009, 1010, 1011, 1011, 1012, 1012, 1013, 1013, 1014, 1014, 1015, 1016, 1016, 1016, 1016, 1017, 1017, 1018, 1018, 1019, 1019, 1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1022, 1022, 1022, 1022, 1022, 1022, 1023, 1023, 1023, 1023, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1026, 1026, 1026, 1026, 1027, 1027, 1028, 1028, 1029, 1029, 1029, 1029, 1030, 1030, 1031, 1031, 1031, 1032, 1033, 1033, 1034, 1034, 1035, 1036, 1036, 1037, 1037, 1038, 1038, 1039, 1039, 1040, 1040, 1040, 1041, 1041, 1042, 1042, 1043, 1044, 1044, 1045, 1045, 1046, 1046, 1046, 1047, 1047, 1048, 1048, 1048, 1048, 1049, 1049, 1050, 1050, 1051, 1051, 1051, 1051, 1051, 1051, 1052, 1052, 1052, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1054, 1054, 1054, 1054, 1055, 1055, 1056, 1056, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1058, 1058, 1059, 1059, 1060, 1060, 1061, 1062, 1063, 1063, 1064, 1064, 1065, 1066, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1069, 1069, 1069, 1069, 1070, 1071, 1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1073, 1073, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1078, 1078, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1082, 1082, 1082, 1082, 1083, 1084, 1084, 1085, 1085, 1086, 1086, 1087, 1087, 1087, 1088, 1088, 1088, 1088, 1089, 1089, 1090, 1090, 1091, 1091, 1092, 1092, 1093, 1093, 1094, 1095, 1095, 1095, 1096, 1097, 1097, 1098, 1098, 1099, 1099, 1099, 1099, 1100, 1100, 1101, 1101, 1101, 1101, 1101, 1102, 1102, 1102, 1102, 1102, 1103, 1103, 1103, 1104, 1104, 1105, 1106, 1106, 1106, 1107, 1107, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1109, 1109, 1110, 1110, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112, 1113, 1113, 1114, 1114, 1114, 1115, 1115, 1116, 1116, 1116, 1117, 1117, 1118, 1118, 1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1120, 1120, 1120, 1120, 1121, 1121, 1122, 1123, 1123, 1124, 1124, 1124, 1124, 1124, 1124, 1125, 1126, 1127, 1127, 1127, 1128, 1128, 1129, 1130, 1130, 1131, 1132, 1132, 1133, 1133, 1134, 1134, 1135, 1135, 1135, 1135, 1136, 1136, 1137, 1137, 1138, 1138, 1139, 1139, 1140, 1140, 1141, 1141, 1142, 1142, 1142, 1142, 1143, 1143, 1144, 1144, 1145, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1152, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1154, 1155, 1156, 1156, 1156, 1157, 1158, 1158, 1158, 1159, 1159, 1160, 1160, 1160, 1161, 1161, 1161, 1162, 1162, 1162, 1162, 1163, 1163, 1163, 1163, 1163, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 5, 1, 1, 0, 2, 0, 2, 0, 2, 2, 2, 2, 3, 3, 3, 3, 1, 3, 3, 2, 1, 1, 2, 2, 2, 3, 3, 5, 5, 5, 0, 3, 5, 5, 5, 5, 3, 5, 3, 5, 3, 5, 5, 6, 1, 1, 6, 4, 9, 7, 1, 0, 2, 0, 1, 1, 1, 1, 1, 1, 2, 3, 3, 2, 5, 1, 3, 3, 3, 3, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 1, 1, 1, 1, 1, 0, 1, 1, 2, 1, 2, 3, 2, 1, 1, 2, 1, 2, 1, 2, 3, 4, 3, 2, 4, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 4, 6, 4, 6, 10, 13, 4, 6, 4, 10, 13, 4, 6, 4, 6, 5, 7, 11, 14, 1, 3, 4, 3, 3, 2, 5, 3, 6, 4, 6, 6, 5, 7, 6, 6, 5, 5, 6, 9, 4, 5, 7, 6, 4, 8, 4, 2, 4, 3, 6, 4, 3, 3, 3, 2, 2, 3, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, 2, 3, 2, 2, 3, 3, 2, 2, 3, 4, 4, 4, 5, 1, 3, 2, 1, 1, 0, 2, 0, 2, 0, 1, 1, 1, 3, 3, 2, 0, 1, 3, 3, 1, 5, 3, 1, 2, 1, 3, 2, 3, 6, 6, 10, 1, 2, 1, 3, 4, 1, 3, 4, 6, 4, 8, 2, 2, 11, 9, 1, 1, 1, 0, 1, 1, 1, 1, 3, 2, 0, 1, 1, 3, 3, 1, 1, 3, 3, 3, 3, 4, 3, 2, 1, 0, 3, 0, 1, 0, 1, 3, 2, 1, 1, 1, 3, 0, 1, 3, 1, 13, 16, 12, 15, 14, 17, 1, 1, 2, 2, 2, 2, 1, 0, 1, 0, 3, 0, 1, 3, 1, 3, 1, 1, 1, 1, 1, 4, 2, 4, 2, 0, 3, 1, 1, 2, 2, 1, 3, 4, 5, 2, 5, 7, 5, 1, 2, 1, 2, 2, 2, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 5, 8, 3, 9, 4, 10, 11, 2, 0, 3, 0, 1, 3, 1, 4, 0, 2, 2, 2, 0, 1, 3, 3, 6, 4, 0, 1, 1, 2, 2, 0, 3, 3, 2, 1, 1, 2, 2, 4, 0, 1, 0, 6, 1, 3, 3, 3, 5, 2, 0, 2, 2, 0, 3, 4, 4, 0, 2, 0, 4, 0, 3, 8, 11, 6, 8, 7, 10, 6, 2, 3, 0, 8, 11, 5, 1, 0, 6, 5, 8, 4, 6, 1, 0, 3, 0, 1, 2, 2, 2, 1, 2, 3, 2, 2, 2, 2, 3, 3, 3, 1, 3, 1, 0, 1, 2, 2, 1, 1, 3, 6, 10, 1, 0, 1, 2, 2, 0, 2, 2, 1, 0, 5, 7, 1, 0, 7, 2, 0, 3, 5, 5, 8, 2, 0, 2, 2, 2, 1, 5, 2, 0, 2, 7, 6, 10, 6, 6, 6, 6, 7, 6, 9, 9, 6, 6, 6, 7, 6, 8, 8, 8, 8, 6, 6, 7, 7, 8, 6, 9, 6, 7, 2, 2, 2, 2, 1, 2, 1, 0, 7, 6, 4, 0, 1, 3, 4, 1, 3, 1, 2, 2, 2, 2, 1, 1, 10, 13, 2, 0, 2, 2, 1, 0, 5, 4, 4, 11, 14, 12, 15, 5, 7, 11, 2, 1, 4, 0, 8, 11, 1, 1, 7, 9, 8, 10, 8, 4, 0, 5, 0, 2, 0, 2, 0, 2, 0, 2, 0, 1, 1, 1, 1, 1, 8, 1, 1, 16, 20, 1, 1, 2, 1, 3, 1, 1, 1, 3, 1, 2, 0, 1, 2, 4, 1, 1, 1, 1, 1, 3, 0, 1, 0, 1, 1, 4, 0, 1, 1, 1, 3, 0, 1, 1, 1, 1, 2, 0, 0, 2, 2, 1, 2, 2, 2, 2, 11, 13, 1, 3, 5, 1, 3, 5, 1, 2, 2, 1, 8, 6, 5, 4, 4, 3, 7, 8, 6, 6, 6, 6, 6, 4, 7, 5, 8, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 3, 1, 0, 1, 3, 7, 9, 9, 8, 3, 0, 13, 1, 3, 5, 5, 3, 6, 2, 1, 0, 2, 0, 2, 4, 0, 1, 0, 6, 8, 8, 1, 3, 5, 5, 7, 9, 7, 9, 5, 6, 6, 4, 6, 4, 6, 8, 4, 6, 4, 6, 5, 7, 1, 1, 1, 2, 1, 2, 1, 1, 1, 3, 3, 3, 3, 2, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 3, 1, 3, 5, 2, 2, 0, 6, 6, 6, 6, 6, 6, 6, 8, 9, 8, 6, 6, 8, 9, 8, 9, 9, 7, 10, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 3, 3, 3, 3, 2, 1, 2, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 9, 8, 8, 2, 0, 1, 2, 1, 1, 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 3, 4, 4, 1, 1, 1, 0, 7, 7, 10, 1, 1, 2, 4, 5, 1, 3, 2, 2, 2, 2, 1, 2, 2, 4, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 5, 5, 5, 5, 5, 1, 3, 1, 2, 3, 0, 6, 6, 9, 3, 0, 3, 0, 5, 2, 0, 3, 3, 3, 7, 7, 10, 1, 1, 1, 1, 1, 1, 15, 18, 1, 0, 1, 0, 1, 0, 2, 0, 1, 3, 4, 5, 2, 2, 4, 4, 0, 1, 3, 2, 0, 1, 0, 1, 1, 0, 2, 2, 0, 8, 11, 6, 6, 2, 0, 3, 2, 1, 3, 1, 3, 2, 1, 1, 2, 3, 2, 1, 3, 3, 3, 2, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 4, 5, 1, 3, 3, 1, 3, 3, 5, 6, 1, 3, 2, 1, 3, 1, 2, 4, 5, 1, 1, 1, 1, 3, 3, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 3, 3, 5, 2, 0, 2, 1, 3, 5, 5, 5, 1, 2, 1, 0, 4, 6, 4, 6, 4, 6, 4, 6, 4, 6, 3, 5, 5, 5, 1, 3, 1, 3, 2, 2, 1, 2, 1, 2, 11, 10, 10, 2, 2, 0, 9, 2, 0, 10, 11, 11, 5, 5, 8, 4, 4, 7, 7, 1, 1, 1, 1, 1, 1, 3, 1, 5, 5, 6, 6, 6, 6, 6, 8, 8, 6, 6, 7, 9, 9, 8, 10, 6, 6, 6, 6, 6, 6, 6, 8, 6, 8, 6, 8, 7, 9, 6, 8, 7, 9, 8, 10, 8, 10, 9, 11, 8, 10, 9, 11, 8, 8, 7, 6, 6, 6, 6, 8, 8, 8, 8, 6, 9, 1, 0, 2, 0, 8, 8, 8, 10, 9, 8, 1, 0, 6, 6, 6, 6, 6, 6, 6, 9, 9, 6, 6, 6, 8, 6, 8, 8, 8, 8, 6, 8, 6, 8, 7, 9, 7, 9, 6, 7, 1, 3, 3, 3, 1, 1, 1, 1, 1, 7, 6, 6, 6, 6, 6, 6, 7, 7, 6, 9, 9, 6, 6, 6, 6, 6, 6, 8, 8, 8, 6, 7, 6, 6, 5, 1, 0, 3, 3, 5, 6, 6, 6, 8, 1, 3, 1, 5, 5, 6, 7, 4, 4, 4, 6, 13, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 3, 2, 0, 2, 2, 2, 3, 3, 3, 3, 3, 3, 2, 3, 2, 5, 4, 3, 3, 3, 1, 1, 0, 3, 2, 2, 1, 2, 1, 3, 2, 1, 0, 2, 3, 0, 9, 11, 12, 14, 3, 4, 4, 0, 2, 5, 1, 0, 1, 2, 3, 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, 0, 5, 4, 6, 4, 3, 5, 7, 9, 1, 3, 1, 5, 4, 4, 6, 4, 6, 6, 5, 7, 9, 6, 1, 0, 6, 11, 11, 11, 13, 9, 11, 1, 1, 10, 4, 2, 5, 2, 0, 6, 5, 3, 5, 1, 3, 1, 1, 2, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 2, 1, 3, 1, 0, 2, 4, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 0, 5, 3, 0, 1, 1, 1, 1, 3, 9, 12, 3, 0, 2, 3, 2, 3, 7, 1, 3, 1, 4, 4, 7, 2, 1, 1, 1, 3, 2, 8, 5, 0, 4, 3, 0, 2, 0, 7, 2, 0, 5, 3, 0, 2, 2, 2, 3, 1, 3, 1, 2, 1, 0, 1, 2, 0, 8, 1, 3, 3, 5, 2, 1, 3, 7, 1, 0, 3, 2, 2, 2, 0, 2, 2, 1, 1, 3, 3, 1, 2, 4, 4, 2, 3, 5, 5, 1, 1, 9, 9, 1, 2, 4, 4, 4, 2, 2, 3, 1, 3, 7, 1, 2, 0, 1, 0, 2, 0, 3, 3, 4, 4, 4, 4, 3, 2, 1, 1, 0, 1, 1, 0, 1, 5, 1, 0, 1, 0, 3, 1, 3, 4, 3, 2, 2, 1, 1, 1, 0, 2, 4, 5, 6, 4, 5, 2, 3, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3, 0, 1, 3, 1, 1, 1, 1, 1, 2, 4, 4, 5, 2, 0, 1, 3, 1, 0, 1, 2, 3, 2, 4, 2, 3, 2, 0, 4, 5, 2, 0, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 1, 4, 3, 4, 5, 4, 5, 4, 5, 2, 4, 1, 1, 0, 1, 4, 5, 4, 0, 2, 2, 2, 1, 1, 0, 4, 2, 1, 2, 2, 4, 1, 3, 1, 2, 3, 6, 4, 0, 2, 6, 2, 1, 3, 4, 0, 2, 0, 2, 0, 2, 4, 0, 1, 0, 1, 3, 3, 7, 12, 1, 3, 2, 3, 3, 1, 2, 2, 2, 2, 1, 1, 3, 3, 2, 2, 3, 5, 6, 2, 3, 3, 4, 0, 1, 1, 1, 1, 1, 2, 4, 1, 1, 1, 1, 2, 3, 3, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 3, 0, 1, 1, 1, 1, 5, 2, 1, 1, 1, 1, 4, 1, 2, 2, 1, 3, 3, 2, 1, 0, 5, 2, 5, 2, 1, 3, 3, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 0, 1, 4, 1, 3, 3, 5, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 2, 3, 3, 2, 2, 3, 5, 4, 6, 3, 5, 4, 6, 4, 6, 5, 7, 3, 2, 4, 2, 3, 3, 4, 3, 4, 3, 4, 5, 6, 6, 7, 6, 7, 6, 7, 3, 4, 4, 6, 2, 3, 4, 3, 4, 4, 5, 1, 1, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 2, 2, 5, 6, 6, 7, 3, 4, 1, 1, 2, 2, 4, 1, 1, 1, 2, 2, 2, 2, 1, 1, 4, 3, 5, 6, 8, 6, 6, 4, 4, 1, 1, 1, 5, 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1, 1, 1, 1, 1, 6, 4, 4, 6, 4, 4, 4, 6, 5, 5, 5, 4, 6, 4, 4, 4, 4, 5, 7, 7, 9, 5, 4, 6, 5, 7, 7, 7, 2, 3, 3, 3, 4, 0, 4, 1, 3, 3, 1, 1, 1, 2, 2, 0, 2, 3, 3, 4, 2, 2, 5, 0, 5, 0, 2, 0, 1, 3, 3, 2, 2, 0, 6, 1, 0, 3, 0, 3, 3, 3, 0, 1, 4, 2, 2, 2, 2, 2, 3, 2, 2, 3, 0, 4, 3, 5, 4, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 4, 1, 4, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 1, 3, 3, 3, 2, 1, 3, 3, 3, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 2, 3, 0, 3, 3, 2, 2, 1, 0, 2, 2, 3, 2, 1, 1, 3, 5, 1, 2, 4, 2, 0, 1, 0, 1, 2, 2, 2, 3, 5, 1, 0, 1, 2, 0, 2, 1, 0, 1, 0, 1, 3, 3, 2, 1, 1, 1, 3, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 6, 2, 6, 2, 3, 5, 2, 3, 5, 5, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint16 yydefact[] = { 1694, 1460, 636, 1546, 1545, 1460, 0, 270, 0, 1556, 0, 1460, 429, 1132, 0, 0, 0, 0, 636, 1460, 0, 1694, 0, 0, 0, 0, 0, 1707, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1460, 0, 0, 1714, 0, 0, 0, 0, 1707, 0, 1558, 0, 0, 0, 0, 0, 2, 4, 39, 74, 75, 32, 31, 93, 57, 18, 65, 127, 126, 128, 44, 40, 82, 27, 29, 41, 45, 67, 69, 34, 47, 58, 105, 66, 25, 64, 88, 70, 91, 52, 12, 13, 53, 14, 54, 15, 55, 16, 101, 76, 94, 37, 63, 24, 46, 72, 73, 5, 48, 80, 11, 59, 60, 62, 85, 86, 87, 110, 89, 122, 43, 119, 98, 99, 116, 100, 117, 9, 102, 56, 17, 113, 112, 114, 83, 49, 84, 71, 92, 111, 28, 115, 19, 20, 22, 23, 21, 61, 30, 68, 33, 90, 118, 108, 104, 123, 121, 129, 106, 77, 7, 8, 95, 6, 26, 51, 10, 36, 35, 50, 42, 125, 38, 1556, 97, 109, 96, 78, 103, 81, 107, 124, 79, 120, 1664, 1663, 1716, 1667, 1693, 0, 1679, 1459, 1458, 1473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1470, 2324, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2689, 2355, 2356, 2357, 2638, 2639, 2690, 2640, 2641, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2642, 2643, 2366, 2367, 2368, 2369, 2370, 2644, 2691, 2371, 2372, 2373, 2374, 2375, 2692, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2693, 2385, 2386, 2387, 2694, 2388, 2389, 2390, 2391, 2392, 2393, 2645, 2646, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2420, 2647, 2421, 2422, 2423, 2424, 2648, 2425, 2426, 2427, 2649, 2428, 2429, 2430, 2695, 2696, 2431, 2432, 2433, 2434, 2435, 2650, 2651, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2697, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2698, 2652, 2455, 2456, 2457, 2458, 2653, 2654, 2655, 2459, 2699, 2700, 2460, 2701, 2461, 2462, 2463, 2464, 2465, 2466, 2656, 2702, 2467, 2703, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2657, 2704, 2658, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2659, 2660, 2494, 2495, 2496, 2705, 2497, 2661, 2498, 2662, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2663, 2706, 2509, 2707, 2664, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2665, 2521, 2666, 2524, 2522, 2523, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2667, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2708, 2553, 2554, 2555, 2556, 2557, 2668, 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2669, 2574, 2575, 2709, 2576, 2577, 2670, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2671, 2592, 2593, 2594, 2595, 2710, 2596, 2597, 2598, 2599, 2600, 2601, 2672, 2673, 2602, 2603, 2674, 2604, 2675, 2605, 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2676, 2677, 2623, 2711, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2678, 2679, 2680, 2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688, 2635, 2636, 2637, 131, 0, 0, 2292, 2325, 2326, 2329, 2324, 401, 400, 1654, 2286, 2325, 1555, 1535, 636, 0, 1473, 428, 1694, 0, 0, 0, 0, 0, 0, 0, 869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 0, 0, 0, 0, 452, 451, 0, 0, 0, 1098, 457, 0, 0, 0, 0, 0, 624, 1603, 2522, 1601, 1655, 271, 274, 275, 272, 273, 2314, 0, 1234, 1235, 1237, 0, 0, 1247, 909, 910, 0, 0, 0, 918, 0, 0, 0, 907, 0, 0, 0, 923, 0, 920, 0, 0, 924, 921, 904, 922, 911, 0, 903, 0, 0, 1247, 925, 0, 0, 905, 0, 0, 0, 0, 1473, 1600, 458, 1694, 0, 1577, 1578, 1579, 1556, 1568, 1580, 1573, 1575, 1574, 1576, 1572, 2313, 2340, 1033, 1033, 1033, 1033, 1030, 1031, 1033, 1033, 1033, 2542, 0, 0, 1012, 0, 1014, 2315, 1033, 1038, 521, 521, 521, 0, 1037, 1042, 521, 0, 1441, 1482, 2291, 1706, 0, 1013, 1440, 2602, 1591, 0, 0, 1262, 1258, 1260, 1261, 1259, 0, 1101, 1101, 2560, 1452, 255, 2571, 2672, 2602, 254, 249, 250, 219, 2344, 0, 0, 1037, 0, 1473, 1450, 995, 1713, 1711, 0, 2273, 2364, 2379, 2470, 246, 2553, 2561, 2571, 2672, 2602, 2634, 192, 202, 197, 0, 264, 2571, 2672, 2602, 260, 1470, 0, 1680, 1817, 2282, 0, 1443, 1442, 1557, 0, 1560, 0, 2537, 1684, 1687, 1562, 1685, 1676, 0, 0, 1, 1694, 0, 1567, 1710, 1710, 0, 1710, 0, 1668, 1676, 1671, 1675, 0, 0, 0, 0, 0, 1444, 0, 0, 0, 928, 0, 1485, 2287, 1083, 0, 0, 0, 0, 0, 1334, 0, 1141, 1140, 2330, 2320, 2321, 0, 2318, 2319, 2331, 2332, 2333, 0, 2442, 1334, 0, 0, 2177, 2188, 2189, 2190, 2368, 2425, 2185, 2186, 2187, 2191, 2179, 2180, 2181, 2182, 2183, 2184, 0, 0, 1229, 2178, 0, 2442, 0, 1334, 0, 162, 0, 135, 1334, 0, 0, 2442, 0, 0, 2442, 0, 0, 0, 0, 0, 2442, 0, 0, 0, 0, 0, 162, 2475, 0, 135, 2442, 0, 0, 1464, 0, 0, 0, 1466, 1469, 1445, 0, 2265, 0, 2266, 2293, 1538, 0, 2282, 0, 0, 0, 964, 957, 0, 965, 972, 0, 0, 974, 0, 0, 958, 0, 0, 0, 0, 0, 977, 978, 0, 0, 979, 959, 980, 960, 981, 961, 982, 0, 0, 0, 0, 962, 0, 0, 0, 1456, 1447, 0, 1593, 1595, 1594, 1592, 521, 0, 0, 0, 2442, 0, 0, 135, 1523, 0, 2442, 135, 0, 0, 456, 455, 135, 2318, 454, 453, 2368, 2425, 0, 1131, 0, 1399, 135, 2442, 0, 185, 2442, 710, 2442, 1562, 0, 639, 0, 0, 824, 2475, 135, 0, 0, 0, 0, 0, 0, 1101, 0, 0, 0, 0, 0, 623, 636, 1604, 1602, 0, 1238, 248, 247, 1236, 916, 2442, 1173, 362, 0, 0, 2442, 1504, 2327, 1892, 1921, 1899, 1921, 1921, 1888, 1888, 2408, 1901, 2442, 1889, 1890, 1926, 0, 1921, 1888, 1893, 0, 1891, 1929, 1929, 1916, 362, 932, 1873, 1874, 1875, 1876, 1902, 1903, 1877, 1908, 1909, 1913, 1878, 1943, 1888, 2328, 917, 0, 908, 2442, 362, 1137, 2442, 2322, 172, 0, 906, 2368, 2425, 2442, 362, 1231, 0, 2442, 362, 2442, 168, 2442, 362, 2442, 362, 2442, 640, 0, 0, 2442, 362, 2442, 2475, 170, 0, 2442, 362, 926, 2442, 362, 2284, 2442, 0, 1448, 0, 1596, 0, 1570, 2676, 1585, 0, 1581, 1588, 1584, 1694, 1033, 1032, 0, 1033, 0, 1033, 0, 1033, 0, 1033, 0, 0, 0, 1033, 2316, 2317, 1015, 0, 1039, 0, 0, 1046, 1045, 1044, 0, 0, 0, 1047, 0, 1821, 1631, 0, 1438, 1455, 0, 0, 0, 1101, 1265, 0, 1263, 1100, 0, 0, 1451, 253, 251, 0, 0, 0, 0, 0, 0, 1457, 0, 1449, 0, 0, 0, 2295, 2297, 2298, 2192, 2268, 0, 2639, 2640, 2641, 2257, 0, 2642, 2643, 2644, 2691, 2083, 2070, 2079, 2084, 2071, 2073, 2080, 2645, 2646, 2015, 2647, 2648, 2311, 2649, 2650, 2651, 2653, 2654, 2655, 2656, 2075, 2077, 2657, 2658, 2660, 0, 2312, 2661, 2662, 2504, 2664, 2665, 2667, 2668, 2081, 2670, 2671, 2672, 2673, 2674, 2675, 2310, 0, 2082, 2677, 2679, 2680, 2681, 2682, 2684, 2685, 2686, 2687, 0, 2268, 0, 0, 2279, 0, 2050, 0, 1881, 1882, 1904, 1905, 1883, 1910, 1911, 1884, 0, 2278, 1946, 2136, 2049, 2066, 0, 2055, 2056, 0, 2048, 2043, 1696, 2274, 0, 2044, 2294, 2296, 2258, 1696, 2272, 205, 266, 0, 267, 2280, 2571, 193, 245, 209, 244, 211, 212, 210, 207, 208, 206, 0, 2366, 194, 0, 0, 195, 0, 0, 0, 0, 263, 261, 0, 1446, 0, 1819, 1818, 2283, 937, 0, 1549, 1543, 1552, 1548, 1559, 1556, 2202, 0, 1686, 0, 0, 0, 1666, 1665, 3, 0, 1564, 1566, 1541, 1562, 1708, 1709, 0, 0, 0, 0, 0, 0, 0, 0, 1766, 1724, 1725, 1727, 1763, 1767, 1775, 0, 1672, 0, 0, 1823, 0, 0, 1471, 0, 0, 0, 0, 0, 1172, 0, 0, 0, 0, 0, 929, 0, 0, 0, 1491, 0, 1493, 1494, 1495, 0, 0, 1496, 1497, 1485, 257, 1503, 1501, 1484, 1486, 1499, 0, 0, 0, 0, 0, 0, 0, 1515, 0, 176, 177, 0, 652, 636, 0, 2442, 0, 0, 0, 0, 1180, 1187, 1333, 0, 0, 0, 0, 0, 0, 0, 0, 1181, 1179, 0, 1182, 259, 1192, 1211, 1214, 0, 0, 1139, 1142, 0, 0, 0, 0, 0, 1324, 0, 0, 0, 1324, 0, 0, 0, 1333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 282, 284, 295, 357, 0, 615, 0, 0, 0, 618, 0, 2442, 1334, 0, 0, 0, 1233, 0, 0, 0, 0, 0, 0, 0, 0, 1214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 134, 139, 0, 0, 0, 0, 1214, 0, 0, 0, 0, 0, 0, 0, 601, 614, 0, 0, 0, 0, 0, 611, 0, 0, 135, 287, 591, 597, 0, 0, 0, 717, 716, 0, 0, 0, 0, 0, 1415, 1414, 0, 0, 0, 0, 1513, 1512, 0, 0, 0, 0, 0, 0, 1324, 0, 276, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 393, 394, 0, 0, 0, 139, 0, 0, 1324, 0, 289, 0, 0, 1465, 1462, 1463, 0, 1468, 0, 0, 0, 0, 2058, 0, 2206, 1716, 2204, 2292, 2264, 0, 2334, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735, 2736, 2737, 2738, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2777, 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2261, 2260, 2289, 2335, 2336, 2337, 2338, 2267, 0, 1534, 0, 971, 0, 0, 0, 0, 973, 0, 966, 0, 0, 963, 2368, 2425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 832, 0, 1485, 1522, 0, 0, 0, 645, 0, 2442, 0, 137, 870, 0, 822, 457, 0, 0, 0, 1204, 1398, 137, 0, 0, 179, 0, 0, 714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 761, 760, 0, 0, 0, 823, 0, 0, 137, 0, 2442, 594, 2442, 0, 521, 521, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 1658, 1660, 1659, 0, 1657, 0, 360, 361, 0, 1221, 1246, 0, 0, 0, 1920, 1907, 1915, 1914, 0, 1897, 1896, 1895, 0, 1894, 0, 1921, 1921, 1919, 1898, 1873, 0, 0, 0, 1925, 0, 1923, 0, 899, 1869, 1865, 0, 1932, 1933, 1934, 1931, 1944, 1930, 0, 1879, 1935, 1888, 1885, 919, 0, 0, 1215, 0, 0, 2442, 362, 2442, 0, 2442, 0, 0, 0, 1223, 362, 0, 1217, 0, 0, 1219, 0, 1416, 0, 915, 913, 912, 914, 0, 0, 897, 0, 0, 0, 2442, 362, 0, 0, 892, 0, 0, 894, 0, 0, 0, 0, 1694, 0, 232, 233, 231, 1586, 234, 1587, 1583, 1569, 0, 1023, 0, 1027, 0, 1018, 0, 1024, 0, 1019, 1016, 1017, 0, 1022, 0, 0, 522, 524, 0, 0, 2391, 2407, 0, 2431, 2463, 2464, 2528, 2556, 2561, 2567, 0, 2596, 2607, 0, 1048, 1078, 1043, 728, 0, 0, 1641, 1439, 2209, 0, 1694, 0, 0, 0, 0, 1254, 1255, 252, 220, 0, 0, 0, 1080, 2560, 1454, 994, 636, 0, 2045, 0, 2053, 2054, 2256, 0, 0, 0, 0, 0, 0, 2052, 2219, 0, 0, 0, 0, 0, 0, 1971, 0, 0, 0, 2236, 0, 2242, 0, 0, 2008, 0, 0, 0, 0, 0, 0, 0, 0, 1972, 2046, 1950, 1951, 2050, 2202, 0, 2051, 2306, 2303, 1943, 0, 1943, 2277, 2192, 0, 2188, 2189, 2190, 0, 0, 0, 2271, 0, 2200, 0, 0, 1986, 2198, 1988, 0, 0, 0, 0, 2185, 2186, 2187, 1968, 2179, 2180, 2181, 2182, 2183, 2184, 2196, 1966, 0, 0, 2138, 0, 1965, 0, 0, 1779, 2301, 0, 2299, 2259, 1779, 268, 269, 265, 0, 0, 214, 216, 215, 213, 0, 238, 236, 242, 243, 237, 204, 241, 0, 235, 218, 2125, 2124, 217, 203, 225, 200, 226, 198, 221, 223, 224, 201, 199, 262, 0, 0, 0, 362, 1567, 0, 1550, 1551, 1547, 1554, 1776, 0, 1688, 0, 1692, 1567, 0, 1563, 1683, 1682, 1717, 1718, 1123, 1681, 1746, 1747, 0, 0, 0, 0, 1772, 1770, 1737, 1728, 1736, 0, 0, 1734, 0, 1738, 1946, 1765, 1670, 1722, 1723, 1726, 1669, 0, 1768, 0, 1644, 1766, 1727, 1628, 0, 1606, 0, 1824, 0, 0, 1472, 0, 0, 0, 1152, 1154, 0, 1153, 0, 1156, 0, 1165, 0, 0, 1151, 1170, 0, 1159, 1157, 0, 1511, 0, 0, 930, 0, 0, 0, 0, 1492, 0, 0, 2596, 256, 1495, 1500, 1487, 1498, 0, 0, 0, 0, 0, 1082, 1081, 0, 0, 1105, 0, 0, 0, 1518, 510, 0, 359, 0, 0, 0, 0, 0, 0, 0, 0, 818, 815, 0, 0, 814, 0, 650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 690, 0, 1324, 0, 722, 0, 1189, 0, 1188, 0, 1193, 0, 0, 1190, 1185, 1186, 2561, 2571, 2602, 258, 1191, 1213, 0, 1212, 1208, 0, 1134, 0, 1135, 0, 0, 0, 0, 0, 2417, 2442, 300, 322, 0, 1323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, 0, 0, 347, 346, 0, 0, 0, 0, 0, 351, 330, 0, 331, 0, 350, 0, 0, 0, 616, 617, 0, 0, 0, 1324, 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, 1230, 0, 745, 0, 0, 2561, 1209, 0, 0, 0, 0, 0, 0, 1402, 0, 0, 165, 0, 160, 164, 0, 0, 2561, 1210, 0, 0, 0, 0, 0, 599, 600, 613, 0, 604, 605, 602, 606, 607, 0, 0, 0, 0, 0, 0, 0, 598, 0, 0, 712, 711, 715, 0, 0, 0, 0, 0, 1411, 0, 1204, 0, 0, 1410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1267, 1266, 0, 0, 0, 0, 1334, 0, 860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 732, 0, 731, 0, 161, 166, 0, 0, 0, 0, 0, 0, 0, 0, 230, 1461, 1467, 1716, 1716, 1716, 2064, 0, 0, 0, 0, 1715, 2262, 2265, 1537, 2290, 1536, 0, 0, 0, 0, 975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 967, 968, 969, 970, 0, 0, 0, 0, 0, 407, 404, 405, 407, 0, 0, 0, 0, 834, 0, 837, 840, 0, 1483, 476, 0, 0, 642, 690, 0, 0, 460, 174, 0, 0, 0, 0, 747, 0, 0, 0, 1397, 132, 183, 185, 458, 0, 184, 186, 188, 189, 190, 187, 191, 0, 709, 713, 0, 0, 0, 0, 638, 0, 0, 0, 0, 0, 762, 766, 765, 769, 767, 0, 763, 0, 0, 1844, 0, 0, 159, 0, 0, 589, 593, 0, 0, 0, 0, 460, 560, 373, 2442, 0, 521, 0, 2442, 0, 1102, 0, 821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1656, 362, 1174, 0, 1505, 0, 0, 0, 0, 362, 1918, 1917, 1870, 1866, 0, 0, 0, 0, 933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1886, 362, 1138, 173, 2323, 0, 901, 0, 0, 0, 0, 362, 1232, 889, 362, 169, 362, 362, 641, 0, 362, 171, 0, 0, 0, 633, 362, 927, 362, 2285, 0, 362, 1599, 2442, 521, 1571, 1582, 1020, 1029, 1028, 1026, 1025, 1021, 0, 1040, 0, 520, 0, 0, 0, 0, 0, 1056, 1057, 0, 0, 1053, 1058, 0, 1054, 1055, 1060, 1050, 1049, 1061, 1062, 0, 0, 1080, 726, 0, 0, 0, 0, 1638, 0, 1636, 0, 1822, 1640, 1629, 1590, 0, 1589, 0, 582, 1101, 1101, 1264, 0, 0, 1037, 0, 0, 362, 1453, 0, 996, 1002, 0, 0, 0, 0, 0, 0, 0, 1005, 1006, 0, 1007, 998, 1008, 999, 1009, 0, 1000, 0, 0, 0, 0, 2269, 2213, 0, 2214, 0, 0, 2255, 2251, 0, 0, 0, 0, 0, 2220, 0, 2223, 2224, 2225, 2222, 2226, 2221, 0, 0, 0, 2227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2668, 0, 0, 0, 0, 2016, 0, 0, 2172, 0, 2202, 2241, 0, 0, 0, 0, 0, 0, 2202, 2247, 0, 0, 0, 0, 2123, 0, 2120, 0, 0, 0, 0, 2268, 0, 2307, 0, 2304, 1947, 1961, 1962, 1963, 1969, 2276, 0, 2270, 0, 0, 1948, 1977, 0, 2248, 2004, 0, 2009, 1992, 2228, 2229, 2230, 2231, 2011, 0, 1985, 0, 1990, 1994, 0, 1973, 0, 1970, 0, 2271, 2201, 0, 2199, 0, 1958, 1959, 1960, 1967, 1952, 1953, 1954, 1955, 1956, 1957, 1964, 2176, 2174, 2175, 0, 0, 0, 2146, 0, 0, 1989, 2434, 2470, 0, 1707, 1707, 1707, 1695, 1705, 2275, 0, 1839, 1716, 1839, 2281, 0, 0, 1943, 0, 1820, 935, 936, 934, 1540, 1544, 1553, 1567, 2203, 1561, 1690, 0, 0, 1542, 1565, 0, 1121, 1122, 0, 1126, 2668, 2558, 0, 0, 0, 0, 1739, 1773, 0, 1764, 0, 2295, 1740, 2294, 1741, 1744, 1745, 1735, 1774, 1642, 0, 1769, 1674, 1673, 0, 1842, 0, 0, 0, 1620, 1608, 0, 1825, 0, 1779, 1646, 0, 2268, 1777, 1373, 1268, 1335, 1155, 0, 1888, 1166, 0, 1150, 0, 1149, 1888, 0, 1167, 0, 1888, 1374, 1269, 1336, 931, 1375, 1270, 1337, 1376, 1271, 1502, 1490, 1489, 1488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 799, 2442, 362, 1516, 1377, 0, 1272, 358, 1517, 1338, 1521, 817, 816, 0, 0, 1339, 0, 651, 0, 655, 0, 657, 658, 659, 0, 0, 0, 660, 0, 2368, 2425, 662, 665, 666, 667, 674, 679, 669, 0, 0, 681, 675, 0, 0, 0, 0, 0, 0, 687, 692, 0, 0, 0, 0, 0, 0, 1183, 1184, 1378, 1275, 0, 1340, 0, 1133, 0, 1276, 175, 0, 0, 283, 2442, 302, 0, 694, 799, 0, 1326, 299, 328, 0, 343, 338, 339, 337, 2442, 362, 2442, 362, 0, 0, 0, 0, 0, 340, 335, 336, 332, 0, 0, 345, 2343, 2409, 2572, 0, 698, 700, 0, 705, 348, 1296, 369, 368, 367, 0, 352, 0, 374, 377, 349, 329, 327, 324, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2288, 0, 0, 1225, 0, 1381, 1341, 0, 1363, 0, 0, 0, 0, 739, 1384, 1282, 1344, 0, 1403, 1405, 1395, 1283, 1404, 163, 1313, 152, 0, 0, 148, 0, 0, 0, 0, 138, 1385, 1284, 1345, 0, 0, 1386, 1285, 0, 0, 288, 592, 603, 608, 1290, 612, 609, 1353, 610, 1393, 1286, 0, 1389, 1316, 1348, 575, 1396, 1412, 1287, 1204, 1407, 1409, 0, 1324, 0, 277, 279, 0, 298, 0, 1288, 0, 1346, 1388, 1315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1524, 0, 0, 0, 0, 0, 0, 362, 0, 0, 0, 1326, 2442, 362, 1387, 0, 1321, 0, 1361, 0, 0, 395, 0, 1314, 1324, 0, 290, 1292, 0, 1355, 0, 0, 228, 227, 229, 0, 0, 0, 0, 2207, 2208, 0, 2205, 2059, 2264, 0, 984, 942, 983, 0, 2407, 0, 941, 943, 0, 0, 0, 944, 0, 948, 949, 0, 0, 0, 940, 938, 939, 406, 0, 0, 756, 757, 0, 0, 0, 0, 836, 0, 0, 0, 1514, 0, 135, 649, 0, 0, 0, 644, 689, 694, 0, 0, 0, 0, 459, 463, 467, 468, 469, 0, 0, 0, 0, 153, 136, 0, 878, 0, 521, 0, 749, 1401, 1400, 1203, 0, 185, 178, 0, 0, 710, 0, 1562, 0, 0, 373, 831, 829, 828, 830, 0, 0, 0, 852, 827, 0, 1843, 1845, 0, 0, 0, 0, 0, 0, 582, 462, 0, 0, 524, 0, 563, 0, 0, 0, 0, 560, 0, 0, 0, 2327, 0, 848, 820, 1144, 0, 1162, 1145, 0, 0, 0, 0, 1197, 1129, 1198, 1175, 1130, 0, 0, 621, 1661, 1662, 0, 1222, 0, 0, 1510, 0, 1508, 0, 1887, 1900, 900, 0, 1928, 1927, 1929, 1929, 0, 1871, 0, 1912, 1937, 1938, 1939, 1940, 1941, 1942, 0, 1936, 1880, 1216, 362, 0, 362, 0, 362, 1224, 1218, 1220, 1417, 0, 898, 0, 0, 362, 891, 893, 0, 895, 0, 1041, 523, 0, 0, 0, 0, 0, 0, 1052, 619, 1059, 0, 1073, 1068, 1070, 0, 1074, 725, 0, 0, 1639, 1632, 1634, 1633, 0, 0, 1630, 2210, 890, 0, 588, 0, 0, 0, 0, 362, 0, 1075, 0, 0, 1003, 997, 0, 0, 1001, 0, 0, 0, 1004, 0, 0, 1712, 2211, 2212, 0, 0, 0, 2252, 0, 0, 2098, 0, 2072, 2074, 0, 0, 2086, 0, 2099, 2057, 2100, 2076, 2078, 2087, 0, 0, 2193, 0, 0, 2089, 0, 2018, 2019, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2033, 0, 0, 0, 0, 0, 0, 2036, 2035, 2090, 2171, 0, 0, 2239, 2240, 2091, 0, 0, 2246, 0, 0, 0, 2096, 2101, 0, 0, 0, 0, 2107, 0, 2128, 0, 0, 0, 2047, 2203, 0, 0, 0, 0, 0, 0, 0, 0, 2010, 1993, 2013, 1987, 0, 1991, 1995, 0, 0, 2012, 0, 0, 1981, 0, 0, 1979, 2005, 1975, 0, 0, 2006, 0, 0, 0, 2065, 0, 0, 1707, 1707, 1707, 1707, 1704, 0, 0, 0, 0, 2558, 2688, 0, 1803, 1778, 1780, 1790, 1803, 1808, 1803, 2067, 1837, 2068, 2282, 0, 1749, 0, 1749, 196, 0, 239, 222, 1539, 1691, 1694, 1719, 0, 2194, 1126, 0, 1721, 1743, 1742, 0, 1732, 0, 1771, 1729, 1643, 1627, 0, 1625, 1612, 1614, 1613, 0, 0, 1615, 2268, 0, 1625, 1607, 1651, 0, 0, 1842, 0, 1650, 0, 1888, 1147, 1148, 0, 1171, 0, 1085, 1086, 0, 1084, 0, 0, 0, 509, 1104, 0, 0, 0, 799, 0, 0, 513, 0, 1519, 0, 1394, 1312, 653, 654, 0, 668, 0, 677, 676, 0, 0, 0, 0, 0, 0, 0, 661, 683, 625, 684, 686, 0, 0, 685, 688, 691, 1324, 0, 723, 1298, 0, 1359, 1177, 0, 0, 1136, 0, 0, 0, 0, 0, 0, 476, 323, 0, 0, 0, 0, 382, 0, 304, 315, 380, 321, 0, 354, 0, 326, 0, 319, 341, 333, 342, 334, 353, 355, 0, 702, 703, 701, 697, 0, 704, 706, 0, 371, 0, 0, 0, 0, 1380, 0, 1324, 0, 292, 1294, 0, 1357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1362, 0, 0, 0, 0, 744, 0, 741, 0, 0, 0, 141, 143, 142, 140, 0, 151, 0, 0, 0, 0, 0, 0, 0, 1413, 0, 0, 0, 0, 0, 0, 389, 0, 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 364, 0, 855, 0, 0, 0, 398, 0, 0, 1372, 0, 0, 0, 0, 0, 1379, 1277, 2062, 2063, 2060, 1716, 2263, 0, 0, 0, 955, 0, 0, 0, 0, 0, 0, 409, 410, 135, 408, 431, 0, 799, 0, 0, 833, 838, 846, 2504, 2179, 2180, 844, 839, 841, 843, 845, 842, 0, 0, 0, 0, 0, 492, 0, 0, 0, 482, 0, 0, 1204, 475, 478, 479, 0, 0, 645, 648, 646, 647, 682, 0, 462, 499, 550, 0, 155, 0, 0, 156, 154, 0, 0, 373, 746, 0, 743, 0, 181, 458, 0, 714, 0, 0, 0, 1204, 637, 768, 771, 764, 0, 851, 853, 825, 0, 694, 0, 0, 594, 0, 521, 1600, 577, 0, 552, 462, 550, 559, 0, 0, 567, 372, 0, 0, 582, 373, 0, 0, 1105, 0, 847, 0, 1143, 0, 0, 0, 1194, 1199, 1195, 0, 0, 1158, 0, 1196, 1176, 1433, 1434, 1431, 1432, 0, 0, 0, 1653, 0, 0, 1506, 0, 1906, 0, 1924, 1922, 1867, 1872, 1945, 902, 0, 885, 0, 887, 362, 733, 0, 634, 362, 0, 0, 0, 0, 0, 0, 1051, 0, 1071, 0, 0, 1034, 1077, 0, 0, 1637, 1635, 580, 0, 1256, 1257, 1080, 0, 1035, 1079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2215, 0, 2254, 2250, 0, 2069, 2217, 2218, 2216, 0, 0, 2234, 2233, 2172, 0, 0, 2017, 2029, 2030, 2031, 2235, 0, 2041, 0, 0, 2026, 2027, 2028, 2032, 2020, 2021, 2022, 2023, 2024, 2025, 2034, 2244, 2243, 2237, 2238, 0, 2093, 2094, 2095, 2245, 2102, 0, 2358, 2129, 0, 2106, 2122, 2121, 0, 0, 0, 2109, 0, 0, 2118, 0, 2173, 2308, 2309, 2305, 1949, 0, 0, 1978, 2249, 1996, 0, 0, 2014, 0, 1974, 2193, 0, 0, 0, 0, 0, 1983, 0, 0, 0, 2149, 2144, 2145, 2169, 0, 0, 0, 0, 0, 0, 1698, 1697, 1703, 1803, 1808, 1803, 0, 0, 1676, 0, 1790, 0, 1802, 1788, 1801, 0, 0, 1814, 1812, 0, 1814, 0, 1814, 0, 1782, 0, 1804, 1784, 1801, 1786, 0, 1829, 2283, 1838, 0, 1762, 2059, 1762, 0, 0, 0, 1720, 1124, 1125, 1730, 0, 1733, 2387, 1840, 0, 1626, 0, 0, 0, 1617, 1623, 1605, 0, 0, 1647, 1625, 1648, 1168, 0, 0, 1160, 1091, 1092, 1095, 1093, 1090, 1094, 0, 0, 0, 799, 0, 0, 531, 0, 1118, 1118, 0, 0, 515, 572, 526, 802, 0, 0, 0, 800, 362, 1273, 0, 678, 0, 0, 673, 671, 670, 672, 0, 626, 1392, 1274, 0, 0, 0, 0, 1178, 1327, 0, 0, 1297, 0, 301, 0, 472, 0, 0, 307, 316, 0, 312, 0, 1325, 0, 0, 0, 0, 311, 384, 0, 381, 0, 362, 362, 356, 699, 370, 375, 376, 379, 1332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 862, 0, 0, 880, 881, 0, 0, 0, 1227, 1228, 1226, 1364, 1365, 1370, 1367, 1366, 1369, 1371, 1368, 0, 1280, 0, 0, 737, 1328, 149, 145, 146, 144, 147, 150, 1329, 1310, 1291, 1354, 576, 1408, 0, 0, 0, 1289, 0, 1347, 0, 1306, 1300, 0, 0, 0, 0, 0, 1391, 1320, 1352, 1390, 1318, 1350, 1317, 1349, 1319, 1351, 1311, 0, 0, 1847, 859, 0, 0, 0, 362, 362, 858, 735, 1293, 0, 1356, 1302, 0, 0, 0, 945, 0, 0, 947, 950, 0, 952, 414, 432, 135, 0, 755, 819, 0, 0, 835, 798, 0, 480, 0, 486, 490, 0, 0, 494, 495, 493, 481, 1204, 521, 571, 788, 789, 0, 0, 809, 0, 643, 0, 460, 0, 496, 0, 0, 464, 158, 157, 0, 0, 0, 750, 754, 752, 751, 753, 748, 0, 739, 185, 2442, 0, 0, 0, 0, 573, 1406, 0, 781, 826, 0, 1846, 729, 0, 373, 590, 0, 0, 0, 460, 582, 0, 465, 470, 471, 476, 0, 560, 551, 0, 552, 561, 562, 0, 569, 1481, 0, 583, 569, 0, 0, 0, 850, 0, 849, 1146, 1163, 1164, 0, 0, 1127, 0, 0, 0, 0, 628, 362, 0, 1509, 1868, 362, 362, 1253, 0, 896, 1065, 1066, 1067, 1064, 1063, 620, 0, 1069, 727, 0, 581, 362, 0, 1011, 989, 1010, 988, 990, 0, 992, 993, 987, 985, 986, 2253, 2085, 2088, 2097, 2232, 2171, 2203, 0, 0, 2042, 0, 0, 2092, 2678, 0, 0, 2133, 2134, 0, 2130, 2131, 2126, 2127, 2108, 0, 2493, 2113, 0, 0, 0, 2002, 2000, 1997, 0, 1998, 1982, 0, 0, 1980, 1976, 0, 2007, 2135, 0, 2151, 2148, 2168, 2203, 1702, 1701, 1700, 1699, 1789, 1785, 1787, 0, 2683, 0, 1792, 1799, 0, 1781, 0, 1813, 1809, 0, 1810, 0, 0, 1811, 0, 0, 1783, 0, 1799, 0, 1836, 0, 0, 2140, 2302, 2300, 2140, 240, 1689, 0, 1731, 0, 1624, 1609, 0, 1610, 1616, 0, 0, 0, 0, 1652, 1645, 1161, 1169, 0, 0, 0, 511, 0, 526, 0, 0, 0, 1111, 1120, 1110, 0, 526, 0, 1204, 804, 803, 806, 801, 805, 1520, 0, 663, 664, 680, 1299, 0, 1360, 1308, 0, 1641, 303, 0, 695, 310, 0, 0, 0, 305, 383, 385, 306, 309, 313, 364, 325, 318, 0, 0, 0, 1295, 0, 1358, 1304, 1331, 1382, 1278, 1342, 0, 0, 868, 0, 0, 0, 0, 1383, 1279, 1343, 0, 0, 0, 0, 1641, 0, 0, 0, 0, 0, 0, 0, 0, 1529, 0, 0, 363, 857, 856, 364, 397, 1322, 0, 2061, 0, 946, 953, 954, 951, 0, 403, 411, 414, 0, 0, 1244, 1244, 0, 799, 0, 0, 477, 491, 0, 571, 530, 0, 483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 742, 741, 180, 0, 460, 0, 694, 0, 775, 776, 770, 772, 0, 783, 787, 854, 0, 0, 0, 582, 462, 0, 0, 1597, 461, 0, 0, 473, 0, 563, 552, 560, 0, 0, 579, 0, 1474, 0, 585, 0, 0, 0, 1200, 0, 1206, 0, 1157, 1201, 0, 1839, 0, 0, 0, 0, 632, 1245, 1507, 886, 888, 734, 1072, 0, 1076, 362, 991, 2173, 2037, 0, 0, 0, 0, 2103, 0, 2104, 2132, 2110, 2114, 0, 2111, 2112, 1999, 2003, 2001, 1984, 2137, 0, 1716, 2170, 1832, 0, 1835, 0, 0, 1791, 0, 0, 1793, 0, 0, 1795, 1797, 0, 0, 0, 0, 0, 0, 2286, 2386, 2651, 2555, 0, 1748, 1750, 1753, 1755, 1754, 1756, 1752, 1761, 0, 1678, 1677, 2195, 1841, 0, 0, 0, 1106, 0, 1649, 1073, 0, 362, 1118, 1204, 532, 2504, 533, 1117, 1119, 1123, 0, 1204, 0, 571, 656, 0, 0, 285, 693, 0, 0, 308, 317, 366, 378, 0, 1641, 0, 0, 866, 875, 875, 863, 0, 0, 882, 1281, 738, 0, 0, 280, 1307, 1301, 0, 0, 0, 1531, 1532, 0, 0, 0, 0, 0, 1330, 362, 1303, 956, 0, 434, 441, 415, 419, 1523, 0, 1523, 0, 416, 420, 1523, 1523, 413, 1839, 430, 1244, 0, 1241, 1240, 797, 0, 519, 596, 0, 484, 0, 541, 0, 0, 810, 0, 0, 462, 550, 0, 508, 500, 501, 502, 504, 503, 505, 506, 507, 498, 497, 0, 694, 872, 373, 1481, 736, 0, 0, 707, 0, 773, 778, 777, 1523, 782, 0, 0, 0, 694, 0, 1600, 578, 552, 462, 550, 466, 476, 0, 567, 560, 563, 0, 564, 0, 568, 0, 0, 0, 582, 1533, 1105, 0, 1205, 0, 0, 0, 0, 0, 0, 1248, 627, 0, 0, 631, 622, 694, 1036, 2038, 0, 2039, 0, 0, 2116, 2115, 0, 2155, 1837, 0, 0, 1831, 0, 0, 1861, 0, 0, 0, 1800, 1816, 0, 1796, 1794, 0, 1805, 0, 1807, 0, 0, 0, 1757, 0, 2139, 2141, 0, 0, 1622, 1839, 0, 1619, 0, 1087, 0, 1088, 1112, 571, 0, 1123, 1126, 521, 571, 0, 799, 1309, 0, 696, 596, 0, 320, 0, 293, 1305, 0, 0, 877, 877, 0, 0, 0, 0, 0, 0, 391, 0, 0, 1525, 0, 1526, 1527, 1530, 399, 412, 0, 439, 0, 437, 436, 438, 0, 427, 0, 0, 0, 0, 0, 0, 402, 1239, 1243, 1242, 0, 0, 485, 0, 487, 0, 527, 528, 529, 0, 489, 537, 538, 0, 807, 0, 812, 0, 0, 0, 694, 549, 718, 0, 0, 0, 1475, 0, 0, 574, 0, 784, 785, 780, 0, 0, 730, 1481, 582, 560, 0, 552, 474, 0, 569, 563, 567, 565, 566, 0, 1478, 0, 584, 0, 1114, 1128, 1207, 1202, 1437, 0, 0, 630, 629, 724, 2040, 2119, 2105, 2117, 2150, 0, 0, 0, 0, 1830, 1833, 0, 1864, 0, 0, 0, 0, 1850, 0, 1798, 0, 0, 1806, 0, 0, 0, 1751, 0, 0, 1611, 1621, 1107, 0, 0, 536, 0, 1126, 1108, 530, 799, 525, 512, 1641, 314, 365, 0, 0, 0, 873, 876, 864, 865, 884, 883, 740, 1641, 0, 387, 386, 0, 390, 0, 435, 444, 0, 442, 417, 422, 0, 426, 424, 423, 418, 421, 0, 518, 0, 0, 0, 0, 0, 539, 0, 540, 570, 0, 811, 0, 0, 0, 720, 871, 0, 0, 460, 694, 774, 779, 0, 0, 1476, 1598, 563, 552, 560, 0, 0, 554, 1118, 1118, 447, 567, 569, 1479, 1480, 0, 0, 373, 1436, 1435, 1694, 0, 0, 2638, 2387, 2610, 0, 2167, 2156, 2167, 2167, 2147, 0, 0, 1862, 1863, 1848, 0, 0, 1852, 1815, 1828, 1759, 0, 1758, 2142, 2143, 1839, 362, 0, 799, 534, 1109, 541, 514, 286, 1641, 867, 0, 281, 0, 392, 1528, 440, 0, 425, 787, 595, 488, 546, 0, 545, 0, 543, 542, 808, 813, 0, 694, 861, 1481, 708, 786, 0, 567, 560, 563, 0, 553, 0, 1120, 1120, 569, 445, 0, 0, 569, 1419, 1694, 1418, 1420, 1428, 1425, 1427, 1426, 1424, 1251, 1252, 0, 2160, 2159, 2158, 2162, 2161, 0, 2154, 2152, 2153, 1834, 0, 1851, 1854, 0, 0, 0, 1860, 1853, 1855, 0, 1826, 1760, 1618, 1089, 0, 516, 799, 294, 874, 0, 443, 0, 544, 548, 547, 694, 719, 1477, 792, 569, 563, 567, 1118, 555, 1119, 557, 556, 449, 1114, 1115, 0, 1839, 0, 1429, 1423, 1676, 1663, 0, 0, 0, 0, 2164, 0, 2165, 0, 1857, 1858, 1859, 1856, 0, 0, 517, 0, 0, 721, 794, 0, 790, 793, 795, 796, 448, 567, 569, 1120, 373, 1113, 0, 1096, 1421, 1694, 0, 0, 2157, 2163, 2166, 0, 0, 535, 388, 0, 758, 0, 569, 446, 558, 569, 1116, 1422, 0, 0, 0, 1827, 0, 791, 450, 1839, 0, 0, 1849, 792, 1097, 0, 0, 0, 1249, 1250, 759 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 52, 53, 54, 55, 56, 1543, 2535, 2386, 3333, 3334, 57, 58, 1539, 59, 60, 61, 62, 1453, 63, 1028, 1789, 2550, 64, 2219, 809, 810, 811, 2120, 2121, 2474, 2122, 2108, 1336, 1931, 1475, 783, 784, 1435, 1476, 66, 67, 1330, 2095, 68, 69, 70, 1506, 1597, 1507, 1508, 1447, 1836, 4401, 5149, 3125, 2348, 3381, 3126, 3127, 3768, 3769, 3850, 5163, 5164, 71, 1613, 1614, 72, 73, 2516, 3298, 3903, 4765, 4766, 4999, 622, 4426, 4427, 4986, 4987, 5177, 5319, 5320, 2551, 1781, 3376, 3988, 3324, 4497, 3325, 4498, 3326, 4499, 3310, 3935, 3936, 4440, 3937, 3327, 4458, 5031, 3328, 2238, 5193, 2592, 1953, 1951, 4681, 5013, 4255, 4256, 5405, 5201, 5202, 5203, 5428, 4460, 4503, 4504, 5361, 5362, 3379, 3994, 4510, 4831, 4782, 3011, 75, 76, 718, 1815, 3489, 719, 2595, 656, 720, 2552, 81, 2585, 5195, 2586, 1569, 2400, 3916, 3469, 82, 1054, 3734, 4851, 5086, 5087, 83, 226, 84, 1797, 85, 86, 2530, 3317, 87, 2255, 3028, 88, 89, 3059, 3060, 3061, 90, 3759, 4699, 1509, 3114, 3115, 3116, 3117, 3789, 91, 1792, 2559, 2560, 92, 93, 94, 95, 2712, 2713, 96, 2460, 97, 98, 99, 100, 3824, 4360, 4474, 3156, 3340, 3960, 4472, 101, 3302, 2553, 1805, 2575, 2576, 4484, 4807, 4808, 4809, 5046, 5351, 4811, 5048, 5224, 5050, 4450, 5540, 5541, 4773, 3713, 4269, 103, 4451, 4452, 5208, 104, 2253, 105, 106, 1765, 2522, 2523, 3917, 2602, 3389, 3390, 3974, 3975, 107, 3240, 108, 4336, 4337, 657, 5215, 5155, 5305, 109, 110, 4340, 4341, 111, 112, 113, 114, 115, 710, 711, 712, 1145, 1146, 2983, 1093, 116, 2130, 117, 991, 992, 3277, 118, 1221, 2758, 2759, 4555, 119, 743, 1165, 1166, 2554, 121, 752, 2732, 754, 1968, 3471, 3472, 4059, 122, 123, 2709, 2735, 124, 1440, 2229, 2230, 4250, 2555, 658, 1206, 2599, 3006, 4924, 4675, 4925, 5372, 5514, 4676, 4938, 2928, 3663, 126, 659, 1481, 2305, 1113, 1114, 2605, 3393, 2198, 2199, 2200, 4014, 2201, 3395, 2202, 1414, 2203, 1064, 1065, 3401, 3402, 3403, 4010, 4017, 2544, 4841, 4842, 127, 1478, 2302, 128, 129, 130, 1522, 903, 1123, 1124, 131, 671, 672, 132, 5004, 133, 1067, 134, 4849, 135, 136, 774, 775, 1203, 1204, 137, 138, 2319, 3771, 139, 1479, 140, 141, 3150, 3151, 4352, 142, 143, 144, 1784, 1785, 145, 146, 3205, 3206, 147, 148, 149, 5454, 5516, 5517, 5518, 4023, 5375, 5456, 1196, 151, 152, 153, 190, 944, 945, 946, 855, 2556, 4833, 155, 156, 1436, 1437, 1438, 1439, 2224, 157, 158, 159, 3415, 3416, 160, 161, 162, 163, 1769, 164, 165, 4977, 166, 167, 1730, 168, 169, 1363, 1364, 1365, 1366, 2135, 2916, 616, 827, 1369, 1375, 1380, 1381, 1382, 171, 722, 1159, 1160, 1161, 1933, 172, 1199, 995, 723, 1154, 174, 724, 2181, 2958, 3678, 3679, 3680, 3683, 4660, 4228, 725, 2954, 177, 1975, 2718, 2721, 2950, 726, 2963, 2964, 2965, 3686, 727, 745, 1057, 2612, 728, 1297, 182, 183, 184, 836, 830, 831, 2921, 186, 2087, 2897, 761, 1386, 796, 797, 845, 2484, 2147, 2148, 2172, 2173, 1395, 1396, 2160, 2164, 2165, 2941, 2934, 2153, 4213, 4909, 4910, 4911, 4912, 4913, 4914, 4644, 2168, 2169, 1398, 1399, 1400, 2177, 187, 2901, 3637, 3638, 3639, 4190, 4191, 4205, 4201, 4629, 4896, 3640, 1194, 1406, 4637, 5484, 3641, 4885, 4886, 5102, 4209, 3648, 3674, 3364, 3365, 3366, 3642, 5271, 5272, 5481, 5482, 5104, 5105, 2204, 1866, 1095, 1298, 1096, 1878, 1299, 1850, 1098, 1300, 1301, 1302, 1101, 1303, 1304, 1305, 1104, 1842, 1306, 1307, 1860, 1875, 1876, 1370, 5106, 1309, 1310, 1311, 3644, 1312, 4141, 4593, 4579, 2821, 2822, 2115, 4137, 3579, 4131, 2082, 2887, 4918, 5123, 5124, 3621, 4169, 4609, 4883, 5263, 5382, 5383, 5470, 1313, 1314, 1315, 2884, 2078, 906, 1316, 3919, 2080, 2815, 1638, 1639, 1978, 2000, 2765, 2783, 2784, 2860, 2795, 3537, 2803, 2808, 3566, 3567, 2816, 2846, 1317, 2767, 2768, 3517, 2002, 1318, 950, 1642, 951, 1997, 2841, 1326, 1319, 1320, 1969, 820, 4892, 1149, 861, 3142, 1722, 953, 758, 1321, 1322, 1323, 1324, 1515, 876, 1116, 1117, 613, 605, 878, 3118, 614, 607, 608, 1727 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -4998 static const int yypact[] = { 10978, 93, 17662, -4998, -4998, 93, 64034, -4998, 72007, 998, 1252, 103, 188, 17236, 72476, 79511, 263, 357, 18109, 93, 79511, 3904, 54184, 69193, 1381, 79511, 1644, 1422, 54184, 79511, 79980, 1551, 1592, 883, 80449, 72945, 67786, 1150, 79511, 1743, 1413, 80918, 73414, 1555, 73883, 1422, 49969, 123, 1540, 81387, 79511, 1665, 1911, 1562, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 28, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 1539, -4998, 1166, 1690, 2000, 992, 1595, -4998, -4998, 2079, 64034, 79511, 79511, 79511, 1812, 79511, 1732, 79511, 200, 64034, 60282, 74352, 1884, 1717, 46217, 81856, -4998, 64034, 79511, 58406, 64034, 79511, 79511, 82325, 79511, 82794, 79511, 131, 70600, 79511, 1864, 79511, 79511, 58875, 83263, 1979, 1186, 256, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 1719, 541, -4998, 282, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 79511, 18512, 1644, 2079, -4998, 1665, 79511, 2038, 79511, 1829, 83732, 1920, 79511, -4998, 79511, 1944, 84201, 818, 1706, 60282, 1995, 46686, 2029, 79511, 79511, 60282, 84670, 85139, 85608, 79511, 79511, -4998, -4998, 2059, 79511, 79511, -4998, 2192, 60751, 1647, 2214, 2277, 2271, 907, -4998, 74821, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 63096, 357, -4998, -4998, 2251, 64503, 2291, -4998, -4998, 86077, 102891, 2091, -4998, 828, 64972, 61220, 2424, 2093, 47155, 2462, -4998, 65441, -4998, 61689, 65910, -4998, -4998, -4998, -4998, -4998, 86546, -4998, 87015, 2169, 2291, -4998,103346, 62158, -4998, 2333, 87484, 87953, 88422, 2079, 2053, 1909, 1390, 41982, -4998, -4998, -4998, 998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 417, 1445, 234, 216, 252, -4998, -4998, 225, 226, 238, 417, 2559, 2559, -4998, 79511, -4998, -4998, 1445, 641, 2086, 2086, 2086, 2312, 60, -4998, 2086, 2249, -4998, -4998, -4998, -4998, 73883, -4998, 2115, 1644, 2128, 2565, 2190, -4998, -4998, -4998, -4998, -4998, 2230, 2584, 2584, 79511, -4998, -4998, 2631, 2210, 2471, 2200, -4998, -4998, -4998, 2414, 2421, 2434, 183, 1644, 231, -4998, 2564, -4998, 2453, 28137, 28137, 1644, 75290, 88891, 259, 55123, 367, 75759, 2275, 1358, 2472, -4998, -4998, -4998, 807, -4998, 2692, 2283, 2551, 2200, 1186, 43389, -4998, 2280, 541, 73883, -4998, -4998, -4998, 62627, 2607, 30065, 79511, 2294, -4998, 2325, 2294, 2304, 2341, 2000, -4998, 10978, 62627, 79511, 1501, 1501, 2766, 1501, 1577, 1869, -4998, 2409, -4998, 2668, 2632, 73883, 2356, 299, -4998, 1431, 2366, 158, 2368, 1534, 968, -4998, -4998, 948, 79511, 523, 2420, 76228, 9513, 2390, 541, 2395, -4998, -4998, -4998, 2577, 1037, -4998, -4998, -4998, -4998, 2707, 2751, 7704, 355, 76697, -4998, -4998, -4998, -4998, 79511, 79511, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 2423, 1206, -4998, -4998, 2425, 2771, 2649, 10285, 938, 2738, 2604, 1301, 10309, 2680, 1326, 2794, 16467, 1472, 2815, 1565, 1744, 77166, 79511, 2778, 2821, 6462, 1842, 1015, 2695, 926, 2738, 2813, 2648, 1301, 2836, 5493, 79511, -4998, 2762, 2873, 835, -4998, 440, -4998, 22885, 30065, 49500, -4998, 541, 2569, 2716, 72, 2758, 64034, 2521, -4998, -4998, 79511, -4998, -4998,103801, 2614, -4998, 859, 64034, -4998, 2754, 2602, 47624, 79511, 64034, -4998, -4998, 64034, 79511, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 2702, 2889, 79511,103801, -4998, 2845, 79511, 79511, -4998, -4998, 2576, -4998, -4998, -4998, -4998, 2086, 79511, 2997,103801, 2806, 220, 79511, 44, 3050, 79511, 2825, 44, 2639, 89360, -4998, -4998, 44, -4998, -4998, -4998, 79511, 79511, 2611, 1192, 2834, 2952, 44, 2855, 3074, 3078, 2866, 2715, 2879, 2325, 3051, 2862, 1025, 373, 203, 2001, 44, 2721, 89829, 90298, 79511, 2729, 79511, 2584, 64034, 64034, 64034, 79511, 3016, -4998, 2865, -4998, -4998, 1098, -4998, -4998, -4998, -4998, -4998, 3010, -4998, 194, 3035, 2708, 3042, 1670, -4998, -4998, 2763, -4998, 2763, 2763, 2714, 2714, 2897, 2717, 3057, -4998, -4998, -4998, 1934, 2763, 2714, -4998,104711, -4998, 1586, 1738, -4998, 230, -4998, 3171, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 2723, -4998, 997, 1957, -4998, -4998, 2755, -4998, 3063, 294, -4998, 3064, -4998, 2722, 90767, -4998, 91236, 91705, 3066, 322, -4998, 60282, 3068, 294, 3069, 2722, 3070, 294, 3072, 585, 3073, -4998, 1056, 3061, 3075, 230, 3076, 2039, 2722, 63565, 3077, 391, -4998, 3080, 400, -4998, 3082, 2953, -4998, 30065, -4998, 2839, -4998, 1540, -4998, 1851, -4998, 53242, -4998, 1390, 1445, -4998, 79511, 1445, 79511, 1445, 79511, 1445, 79511, 1445, 79511, 79511, 79511, 1445, -4998, -4998, -4998, 79511, 2747, 79511, 79511, -4998, -4998, -4998, 69662, 60282, 70131, -4998, 79511, -4998, 167, 1644, -4998, -4998,103801, 3199, 60282, 2584, -4998, 1943, -4998, -4998, 79511, 79511, -4998, -4998, -4998, 3011, 79511, 3081, 3088, 69662, 60282, -4998, 92174, -4998, 63096, 2972, 2764, -4998, -4998, -4998, -4998, -4998, 2082, 1637, 248, 1859, 30065, 2767, 248, 248, 2769, 3091, -4998, -4998, -4998, 306, 2772, 2773, -4998, 307, 307, -4998, 2780, 2786, -4998, 324, 2787, 2789, 2188, 2234, 325, 2793, 2795, 2796, 1934, 248, 2797, 30065, -4998, 2798, 307, 2799, 2801, 2802, 2316, 2803, -4998, 2319, 2804, 336, 350, 2805, 2807, -4998, 2780, -4998, 329, 2808, 2809, 2810, 2811, 2812, 2814, 2816, 2818, 30065, -4998, 30065, 30065, -4998, 26686, 541, 2326, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 332, 6591, -4998, 2831, -4998, -4998, 2963, -4998, -4998, 30065, -4998, -4998, 435, -4998, 337, -4998, -4998, -4998, 541, 3048, 2817, -4998, -4998, 935, 2819, -4998, 1808, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 54654, 3265, -4998, 375, 1644, 440, 1008, 3209, 51829, 52300, -4998, -4998, 3083, -4998, 79511, -4998, -4998, 541, 160, 1978, -4998, -4998, 53242, -4998, -4998, 998, 16639, 1988, 2294, 79511, 79511, 3270, -4998, -4998, -4998, 1998, -4998, 2820, -4998, 2325, -4998, -4998, 2000, 2000, 30065, 2000, 296, 1341, 28619, 30547, 3154, 3041, 1297, 1543, 3156, -4998, 3045, 1577, 1869, 73883, 79511, 92643, 2955, 30065, -4998, 3257, 2916, 2919, 2975, 50907, -4998, 2922, 2890, 2924, 2980, 56530, 2846, 2930, 2931, 2986, -4998, 3112, -4998, -4998, 2935, 2936, 93112, -4998, -4998, 993, -4998, -4998, -4998, 993, -4998, 2868, 1559, 959, 1293, 2939, 321, 212, 3260, -4998, 1387, -4998, -4998, 2995, -4998, 5913, 79511, 3200, 5647, 3071, 355, 2993, -4998, -4998, -4998, 3130, 2954, 79511, 2958, 3097, 355, 330, 93581, -4998, -4998, 79511, -4998, -4998, -4998, -4998, 7042, 3237, 25776, -4998, 2009, 2960, 2942, 2971, 79511, 66848, 2205, 3084, 3095, 1587, 2212, 257, 3026, 79511, 1668, 3102, 79511, 2893, 2978, 2982, 3198, 2899, 1460, 3303, 2900, -4998, -4998, -4998, 3268, -4998, 2340, 2361, 3099, -4998, 3206, 3250, 8071, 2969, 2970,101526, -4998, 2996, 1076, 48093, 79511, 79511, 2998, 2999, 94050, 7042, 3279, 3009, 3012, 3002, 3003, 50, 3304, 1378, 3005, -4998, -4998, -4998, 1378, 3007, 3008, 94519, 7042, 3293, 79511, 3014, 3015, 79511,104711, 355, -4998, 3362, 355, 355, 1925, 3363, 3020, 268, 3185, 1356, 44, 2900, 2718, -4998, 3029, 3030, 963, -4998, 3157, 79511, 3036, 3043, 1799, 1644, -4998, -4998, 3049, 3134, 3052, 106, -4998, -4998, 1345, 3059, 73883, 3159, 3161, 1668, 394, 1389, 2900, -4998, 3054, 3055, 2899, 2899, 79511, 79511, 79511, 79511, 79511, 269, 3410, 3418, 3062, 433, 1087, 2976, -4998, 1378, 59344, 3065, -4998, 1378, 79511, 180, 1409, 2900, 1676, 1714, -4998, -4998, -4998, 1186, -4998, 30065, 30065, 30065, 2985, -4998, 1674, 16639, 109, -4998, 2363, 7184, 2984, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 79511, -4998, 79511, -4998, 3251,103801, 3192, 3262, -4998, 3025, -4998, 3267, 355, -4998, 79511, 79511, 3272, 3208, 3276, 3277, 3212, 1059,103801, 3213, 3281, -4998, 3282, 3283, 3090, 179, 3085, 3013, 3460, 3350, 79511, 56530, -4998, 3479, 993, -4998,103801, 3228, 3364, -4998, 79511, 3246, 647, -4998, 3397, 3087, -4998, -4998, 634, 79511, 236, 3086, -4998, -4998, 3365, 60282, 930, 3366, 1644, 3093, 3371, 3243, 1644, 60282, 3288, 79511, 79511, 79511, 79511, -4998, -4998, 3252, 845, 290, -4998, 59344, 3261, -4998, 79511, 3264, 2718, 3269, 3503, 649, 2086, 94988, 3380, 95457, 3089, 3092, 3092, 3518,103801, 3340, -4998, 2135, -4998, 3205, -4998, 64034, -4998, -4998, 64034, -4998, -4998,103801, 79511, 3094, -4998, 3104, -4998, -4998, 30065, -4998, -4998, -4998, 2559, -4998,103801, 2763, 2763, -4998, -4998, 3524, 3158, 3160, 2559, -4998, 2559, -4998,103801, -4998, 3101, 3108, 2559, 3162, 3169, 3172, -4998, 3107, 3174, 2559, -4998, -4998, 2127, -4998, -4998, 64034, 64034, -4998, 60282, 60282, 3415, 391, 3417, 3137, 3429, 3165, 48093, 48093, -4998, 412, 64034, -4998, 60282, 64034, -4998, 79511, -4998, 79511, -4998, -4998, -4998, -4998,103801,103801, -4998, 60282, 59344, 3441, 3448, 585, 79511, 79511, -4998, 79511, 79511, -4998, 79511, 79511, 2012, 95926, 1390, 62627, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 79511, -4998, 79511, -4998, 79511, -4998, 79511, -4998, 79511, -4998, -4998, -4998, 79511, -4998, 79511, 2016, -4998, -4998, 2027, 1461, 79511, 79511, 798, 64034, 79511, 3326, 64034, 64034, 79511, 79511, 79511, 79511, 79511, 3194, 2819, 972, -4998, 1308, 882, 73883, 3338, -4998, -4998, 2037, 1665, 1095, 79511, 1182, 2230, -4998, -4998, -4998, -4998, 70131, 69193, 3440, 120, 79511, -4998, -4998, 5860, 30065, 541, 27650, -4998, -4998, 16639, 3164, 30065, 30065, 3128, 2559, 2559, -4998, 409, 30065, 30065, 30065, 2559, 2559, 30065, 5054, 30065, 48093, 30065, 35367, 23861, 30065, 30065, 27168, -4998, 30065, 3368, 36807, 30065, 1008, 3369, 30065, 1008, 5054, 541, 3609, 3609, 2777, 6966, 3135, 541, -4998, -4998, 1165, 2559, 1165, -4998, 274,103801, 30065, 30065, 30065, 30065, 56530, 3221, 235, 79511, 30065, 3142, 2165, -4998, 30065, -4998, 3143, 30065, 3225, 272, 30065, 30065, 30065, 37278, 30065, 30065, 30065, 30065, 30065, 30065, -4998, 38699, 408, 3465, 3487, 994, 498, 77635, 28137, 3481, -4998, 22885, -4998, 293, 3481, -4998, -4998, -4998, 79511, 3265, -4998, -4998, -4998, -4998, 3240, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 214, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 3163, -4998, -4998, -4998, -4998, 3163, -4998, 3167, 3462, 3466, 585, 79511, 62627, -4998, -4998, -4998, 2427, -4998, 30065, -4998, 2048, 1965, 79511, 79511, -4998, 3442, -4998, 3168, -4998, 7244, 3442, -4998, -4998, 35846, 3284, 3435, 3377, -4998, -4998, -4998, 3175, 16639, 31029, 31029, -4998, 2122, 16639, 2132, -4998, -4998, -4998, -4998, -4998, -4998, 205, -4998, 79511, 171, 3154, 1543, 3232, 130, 3621, 79511, -4998, 43858, 2057, -4998, 60282, 79511, 79511, 3376, -4998, 3613, -4998,104711, -4998, 3181, -4998,104256, 100147, -4998, -4998, 702, -4998, 884, 60282, -4998, 79511, 79511, -4998, 56530, 60282, 79511, 79511, -4998, 60282, 79511, 79511, -4998, -4998, -4998, -4998, -4998, 53713, 115, 69193, 3318, 68255, -4998, -4998, 3184, 79511, 3244, 3457, 3461, 1332, -4998, -4998, 96395, -4998, 3408, 60282, 79511, 79511, 30065, 3412, 79511, 79511, -4998, 334, 3278, 3286, -4998, 79511, 3287, 3436, 64034, 3195, 79511, 79511,103801, 3274, 878, 64034, 3245, 48562, 64034, 64034, 79511, 79511, 79511, 79511, 3335, 3533,103801, 79511, 3477, 1311, 73883, 242, 1696, 2900, 3428, -4998, 331, -4998, 60282, -4998, 79511, 3420, -4998, -4998, -4998, 55592, 3657, 3331, -4998, -4998, -4998, 96864, -4998, -4998, 3431, -4998, 2075, -4998, 60282, 60282, 79511, 8276, 97333, 1419, 3443, -4998, -4998,103801, -4998, 79511, 78104, 79511, 79511, 3482, 79511, 71069, 97802, 98271, 1528, 1622, 3485, 79511, 71538, 3486, -4998, 3359, 79511, -4998, -4998, 56999, 60282, 79511, 815, 56530, -4998, -4998, 79511, -4998, 942, -4998, 79511, 3791, 3437, -4998, -4998, 3307, 3317, 79511, 333, 1870, 2900, 3594, 79511, 79511, 3226, 2088, 60282, 79511, 56530, -4998, 3446, 133, 60282, 79511, 55592, -4998, 3452, 73883, 73883, 60282, 79511, 73883, -4998, 79511, 88891, -4998, 60282, 886, -4998, 60282, 79511, 55592, -4998, 3459, 3406, 60282, 79511, 17960, -4998, -4998, -4998, 355, -4998, -4998, -4998, -4998, -4998, 79511, 79511, 355, 79511, 79511, 355, 1258, -4998, 60282, 79511, -4998, -4998, -4998, 3375, 60282, 79511, 79511, 417, -4998, 60282, 3086, 79511, 56530, -4998, 79511, 7489, 79511, 79511, 79511, 79511, 79511, 79511, 60282, 79511, -4998, -4998, 1062, 1173, 1143, 1768, 762, 79511, 3557, 79511, 98740, 60282, 79511, 79511, 1644, 79511, 56530, 1632, -4998, -4998, 3381, -4998, 60282, 886, -4998, 8864, 79511, 79511, 79511, 3336, 3339, 317, 3426, -4998, -4998, -4998, 110, 110, 3463, -4998, 30065, 30065, 29101, 3273, -4998, -4998, 30065, -4998, -4998, -4998, 1044, 3711, 99209, 1044, -4998, 1044, 3538, 3322, 3323, 1044, 79511, 1044, 1044, 79511, -4998, -4998, -4998, -4998, 3537, 79511, 1044, 1044, 1044, 3444, -4998, -4998, 3444, 195, 30065,103801, 79511, -4998, 2094, -4998, 3289, 845, -4998, -4998, 56530, 79511, 186, 872, 3610, 3484, 67317, 3254, 3601, 79511, 3321, 79511, 3728, 3373, 73883, 2611, -4998, 3254, 79511, -4998, 1694, 69193, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 79511, -4998, -4998, 3603, 79511, 30065, 3453, -4998, 1644, 2611, 2611, 2611, 2611, -4998, -4998, -4998, -4998, 3496, 2019, -4998, 3285, 2611, 79511, 3409, 3625, 3254, 3291, 3626, -4998, 2718, 3627, 1078, 79511, 3506, 67317, 3353, 3337, 3517, 3747, 2086, 1644, 3522, 3509, -4998, 51368, -4998, 2611, 26231, 3667, 6524, 3510, 3571, 63096, 3611, 3614, 3629, -4998, 194, -4998, 3754, 1670, 3634, 30065, 2108, 3309, 230, -4998, -4998, 3313, 3108, 3332, 3333, 3312, 3315, -4998, 2559, 228, 3316, 1115, 808, 3449, 2559, 3560, 3319, -4998, 294, -4998, 2722, -4998, 79511, -4998, 79511, 79511, 79511, 79511, 322, -4998, -4998, 294, 2722, 294, 585, -4998, 3590, 230, 2722, 3447, 3649, 63096, -4998, 391, -4998, 400, -4998, 3534, 585, -4998, 3548, 2086, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 2117, -4998, 79511, -4998, 3623, 3624, 3628, 3630, 3632, 3325, 3334, 3370, 79511, 3341, 3325, 355, 3341, 3341, 3325, 2819, 2819, 3325, 3334, 59813, 3792, 3651, -4998, 3422, 3342, 3664, 192, -4998, 209, 108, 3586, -4998, -4998, -4998, -4998,103801, -4998, 60282, 3384, 2584, 2584, -4998, 201, 3567, 3355, 59813, 3794, 585, -4998, 64034, -4998, -4998, 103801, 3439, 3458, 64034, 3575, 3416, 64034, -4998, -4998, 64034, -4998, -4998, -4998, -4998, -4998,103801, -4998, 3633, 79511, 79511, 2119, -4998, -4998, 1900, -4998, 1916, 30065, 468, -4998, 14479, 2137, 30065, 3374, 3385, -4998, 3691, -4998, -4998, -4998, -4998, -4998, -4998, 3693, 3398, 3698, -4998, 2139, 2167, 2168, 3400, 3401, 2949, 5689, 3404, 14578, 3407, 3378, 35367, 35367, 26686, 2171, -4998, 35367, 3411, 3582, 2174, 13332, 3405, 3419, 14808, 29583, 30065, 29583, 29583, 15400, 3405, 3427, 2180, 56530, 3598, 15910, 2199, -4998, 30065, 56530, 5998, 30065, -4998, 30065, -4998, 3432, -4998, -4998, 2765, 2765, 2765, 5054, -4998, 3454, -4998, 35367, 35367, -4998, 1319, 26686, -4998, -4998, 3732, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 2785, -4998, 3413, -4998, -4998, 3659, 2408, 48093, 4503, 30065, 303, 30065, 3142, 30065, 3516, 2765, 2765, 2765, 1014, 418, 418, 288, 288, 288, 1904, 498, -4998, -4998, -4998, 3445, 3451, 3455, 3637, 3456, 30065, -4998, 2233, 2332, 79511, 4195, 5347, 5655, -4998, -4998, -4998, 39637, 3483, 109, 3483, -4998, 1186, 2559, 1165, 52771, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 79511, 16639, -4998, -4998, 3688, 3464, -4998, -4998, 30065, -4998, -4998, 2225, 3468, 957, 814, 2362, 2362, 2122, 960, -4998, -4998, 3505, -4998, 30065, 2198, -4998, 2209, -4998, -4998, -4998, -4998, 2819, -4998, 3704, -4998, -4998, -4998, 39637, 3498, 3511, 687, 42920, 3668, -4998, 79511, -4998, 79511, 359, -4998, 3470, -4998, -4998, -4998, -4998, -4998, -4998,100147, 1957, -4998,104256, -4998,104256, -4998, 1957, 3893, -4998,100147, 1826, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 60282, 60282, 3671, 79511, 3669, 3674, 30065, 343, 79511, 3467, 3471, 1462, 3761, 79511, -4998, 3809, 585, -4998, -4998, 3553, -4998, 16639, -4998, -4998, -4998, -4998, -4998, 60282, 79511, -4998, 63096, -4998, 79511, -4998,103801, -4998, -4998, -4998, 79511, 3508, 79511, -4998, 79511, 79511, 79511, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 1108, 103801, -4998, -4998, 79511, 79511, 876, 3558, 3559, 79511, -4998, 149, 3157, 9012, 79511, 79511, 79511, 3764, -4998, -4998, -4998, -4998, 3695, -4998, 3816, -4998,100147, -4998, 2722, 1117, 3562, 2900, 3706, -4998, 3823, 3692, -4998, 3608, 1096, -4998, -4998, 3618, -4998, -4998, -4998, -4998, 3828, 585, 3829, 585, 79511, 79511, 79511, 79511, 3631, -4998, -4998, -4998, -4998, 3635, 3756, -4998, 56530, 56530, 56530, 2203, -4998, -4998, 1644, -4998, -4998, -4998, -4998, -4998, -4998, 3786, -4998, 2236, -4998, 16, -4998, -4998, -4998, -4998, -4998, 3832, 60282, 79511, 9287, 79511, 79511, 79511, 3707, 1611, -4998, 1083,103801, -4998,101981, -4998, -4998, 2257, -4998, 3515, 79511, 3585, 60282, 3564, -4998, -4998, -4998, 3844, 3507, 3507, -4998, -4998, 3507, -4998, -4998, -4998, 3771, 3702, -4998, 327, 3705, 60282, 3577, -4998, -4998, -4998, -4998, 3855, 3604, -4998, -4998, 3605, 1962, 2900, 2718, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 3639, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 1432, -4998, -4998, 1271, 424, 2032, 2900, -4998, 365, -4998, 3606, -4998, 3607, -4998, -4998, -4998, 3776, 3777, 3783, 3616, 3617, 3675, 3620, 3640, 3677, -4998, 3641, 3682, 3642, 3684, 3643, 3887, 585,103801, 3774, 1644, 3678, 3891, 585, -4998, 3650, -4998, 3652, -4998, 2258, 4001, -4998, 79511, -4998, 338, 2136, 2900, -4998, 3653, -4998, 60282, 79511, -4998, -4998, -4998, 30065, 3573, 3574, 3578, 16639, 16639, 30065, -4998, -4998, 16639, 3569, -4998, -4998, -4998,103801, 79511, 3851, -4998, -4998, 1044, 79511, 79511, -4998, 3853, -4998, -4998, 3856, 79511, 3858, -4998, -4998, -4998, -4998, 490, 490, -4998, -4998, 3896, 7909, 3583, 348, -4998, 56530, 45265, 2157, 2292, 304, 44, -4998, 63096, 79511, 63096, -4998, 872, 3692, 79511, 79511, 79511, 3591, 3587, -4998, -4998, -4998, -4998, 60282, 761, 60282, 2559, -4998, -4998, 3665, -4998, 79511, 2086, 4079, 3921, -4998, 3507, -4998, 4038, 3078, 930, 3750, 1759, 2715, 3979, 2325, 361, 56530, 3337, -4998, -4998, -4998, -4998, 79511, 79511, 845, 1644, -4998, 3600, 3599, -4998, 79511, 3934, 79511, 79511, 79511, 79511, 3384, 3612, 79511, 3615,103801, 79511, 2175, 2899, 4059, 3952, 1665, 3353, 3696, 3953, 73883, 3638, 2268, -4998, -4998, -4998, 2273, 191, -4998, 1644, 63096,101071, 3943, -4998, 6524, -4998, -4998, 6524, 920, 79511, 3927, -4998, -4998, 1665, -4998,103801, 3619, -4998, 2278, -4998, 2279, -4998, -4998, -4998, 2559, -4998, -4998, 962, 962, 3622, -4998, 3644, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 3636, -4998, -4998, -4998, 391, 3679, 585, 3680, 585, -4998, -4998, -4998, -4998, 79511, -4998, 79511, 59344, 585, -4998, -4998, 79511, -4998, 3959, -4998, -4998, 3760, 3762, 3765, 3766, 3782, 79511, 3325, -4998, 3645, 60282, 1502, -4998, -4998, 3835, -4998, -4998, 73883, 3767, -4998, -4998, -4998, -4998, 3982, 3992, -4998, -4998, -4998, 1036, -4998, 79511, 79511, 60282, 69662, 423, 60282, -4998, 3930, 3931, -4998, -4998, 3935, 355, -4998, 3936, 3938, 3940, -4998, 3941, 3945, -4998, -4998, -4998, 3654, 15356, 30065, -4998, 4007,103801, -4998, 8303, -4998, -4998, 30065, 30065, -4998, 30065, -4998, -4998, -4998, -4998, -4998, -4998, 2265, 30065, -4998, 30065, 3995, -4998, 24349, 4151, 4151, 3672,103801, 35367, 35367, 35367, 35367, 1649, 2799, 35367, 35367, 35367, 36328, 35367, 35367, 35367, 35367, 35367, 35367, 36328, 586, -4998, 3874, 30065, 30065, 4009, 3995, -4998,103801, 3683, 3405, 3694, 3699, 30065, -4998, -4998, 2295, 37757, 3703, 56530, -4998, 30065, 13825, 2305, 3731, 15934, 541, 8324, 370, 30065, 3253, 3361, 30065, 2309, 30065, 4010, -4998, -4998, -4998, -4998, 3697, -4998, -4998, 3917,103801, -4998, 30065, 3709, 3845, 35367, 35367, 4562, -4998, 5586, 30065, 26686, -4998, 3463, 3734, 44327, -4998, 24837, 3701, 1422, 1422, 1422, 1422, -4998, 79511, 79511, 79511, 40106, 4017, 3712, 39168, 78573, 3710, 2467, -4998, 78573, 79042, 78573, -4998, 3714, -4998, 541, 30065, 4015, 3716, 4015, 440, 3717, -4998, -4998, -4998, -4998, 1665, -4998, 3713, -4998, 3468, 1568, -4998, -4998, -4998, 1075, -4998, 3795, -4998, -4998, -4998, 3710, 31511, 3863, -4998, -4998, -4998, 3759, 2310, -4998, -4998, 4122, 3863, -4998, -4998, 2322, 43858, 3498, 30065, 541, 2328, 1910, -4998, -4998,100147, -4998, 3793, 2722, 2722, 1755, 3325, 4047, 1755, 8849, -4998, -4998, 40575, 79511, 79511, -4998, 79511, 2334, 1554, 79511, -4998, 79511, -4998, -4998, -4998, -4998, 4174, -4998, 79511, -4998, -4998, 3784, 3787, 79511, 79511, 79511, 79511, 3994, -4998, -4998, 2368, -4998, -4998, 60282, 79511, -4998, -4998, -4998, 396, 2443, 2900, -4998, 3807, -4998, -4998, 4014, 79511, -4998, 4163, 3824, 79511, 4072, 79511, 3735, -4998, 1554, 3846, 4056, 291, 2899, 268, 4979, -4998, 148, -4998, -4998, 3815, -4998, 79511, -4998, 79511, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 3876, -4998, -4998, -4998, -4998, 56999, -4998, -4998, 79511, -4998, 56530, 45265, 56530, 79511, -4998, 1446, 443, 2520, 2900, -4998, 3830, -4998, 4083, 3833, 3834, 3883, 204, 266, 3836, 3838, 3886, 3753, 3757, 3763, -4998, 56530, 45748, 3915, 79511, 2722, 3768, 3799, 79511, 417, 393, -4998, -4998, -4998, -4998, 1644, 2722, 1644, 79511, 79511, 79511, 79511, 417, 56530, -4998, 4194, 3859, 79511, 79511, 79511, 79511, -4998, 3817, -4998, 79511, 79511, 4091, 240, 2102, 60282, 79511, 79511, 60282, 79511, 79511, 79511, 79511, 79511, 79511, 79511, 3980, -4998, 4183, 4111, 2085, 4153, 3847, 79511, -4998, 79511, 1644, -4998, 3157, 79511, 79511, 79511, 79511, -4998, -4998, -4998, -4998, -4998, 3463, -4998, 3773, 4052, 1044, -4998, 4053, 4060, 1044, 1044, 4068, 1044, -4998, -4998, 44, -4998, 211, 79511, -4998, 2357, 79511, -4998, -4998, -4998, 3713, 2340, 2361, -4998, -4998, -4998, -4998, -4998, -4998, 79511, 3781, 79511, 79511, 35367, -4998, 1816, 1490, 984, -4998, 4065, 79511, 3086, -4998, -4998, -4998, 933, 79511, -4998, -4998, -4998, -4998, -4998, 759, 3612, -4998, 4085, 67317, 2722, 60282, 60282, 2722, -4998,103801, 3797, 3337, -4998, 229, 3881, 60282, 930, 1216, 99678, 3093, 3837, 4013, 39637, 1432, -4998, 3801, 3966, -4998, 3806, 3804, -4998, -4998, 79511, 3692, 59344, 2347, 2718, 4260, 811, 2053, -4998, 68724, 4003, 3612, 4085, -4998, 2899, 4023, 4024, -4998, 1665, 79511, 3384, 3337, 1644, 79511, 3244, 45265, -4998, 4302, -4998,100147, 30065, 30065, -4998, 3813, -4998, 3818, 6524, -4998, 3890, 3819, -4998, -4998, -4998, -4998, -4998, 3901, 3821, 79511, -4998, 3825, 3634, -4998, 3634, -4998, 3831, -4998, -4998, -4998, -4998, -4998, -4998, 79511, -4998, 79511, -4998, 585, -4998, 3947, -4998, 585, 79511, 79511, 79511, 79511, 79511, 79511, 3325, 355, -4998, 4139, 59813, -4998, -4998, 2353, 79511, -4998, -4998, -4998, 4207, -4998, -4998, 120, 4152, -4998, -4998, 1068, 1068, 1068, 4108, 1068, 1068, 1068, 1068, 1068, -4998, 30065, 16639, -4998, 3842, -4998, 16639, 16639, 16639, 3843, 9161, 16639, 4009, -4998, 2359, 30065, -4998, 4326, 4326, 4326, 4575, 4156, -4998, 1275, 3848, 4326, 4326, 4326, 429, 376, 376, 237, 237, 237, 4151, 586, 16639, 16639, -4998, -4998, 3860, -4998, -4998, -4998, 3405, -4998, 31993, 1091, 4277, 36807, -4998, -4998, -4998, 3889, 3892, 3861, -4998, 30065, 32475, 3864,104711, 4043, -4998, -4998, -4998, 1711, 30065, 30065, 4637, -4998, 7749, 30065,103801, -4998, 2360, 4637, 500, 30065, 3430, 4262, 30065, 30065, 5641, 9776, 3866, 30065,100602, -4998, -4998, -4998, 2364, 30065, 79511, 79511, 79511, 79511, -4998, -4998, -4998, 78573, 79042, 78573, 3865, 38228, 25307, 2467, 3869, 79511, -4998, -4998, 3872, 39637, 4131, 4074, -4998, 39637, 4074, 1452, 4074, 4132, 3964, 44796, -4998, -4998, 3877, -4998, 4078, -4998, 2009, 16639, 4310, 4187, 2377, 4187, 1644, 3880, 48093, -4998, -4998, -4998, -4998, 3969, -4998, 4096, 16639, 28137, -4998, 1665, 2567, 79511, 541, 112, -4998, 3900, 79511, -4998, 3863, 16639, -4998, 3962, 2373, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 3973, 69193, 4214, -4998, 30065, 2374, -4998, 3932, 4308, 193, 2375, 2379, 1554, -4998, 4193, -4998, 1731, 4189, 227, -4998, 585, -4998,103801, -4998, 79511, 79511, -4998, -4998, -4998, -4998, 79511, 2846, -4998, -4998, 79511, 79511, 79511, 79511, -4998, -4998, 60282, 79511, -4998, 79511, -4998, 56530, 2292, 417, 1816, 4202, 4203, 4120, -4998, 355, -4998, 1816, 4121, 417, 79511, -4998, -4998, 3360, -4998,103801, 585, 585, -4998, -4998, -4998, -4998, -4998, 3918, -4998, 4335, 3998, 79511, 79511, 79511, 79511, 79511, 60282, 79511, 79511, 2559, 2559,103801, 3905, -4998, 2559, 2559, 3906, -4998, 60282, 79511, 79511, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 3993, -4998, 30065, 4330, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 60282, 79511, 3996, -4998, 4000, -4998, 728, -4998, -4998, 79511, 79511, 79511, 79511, 4252, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 4250, 79511, -4998, -4998, 1644, 1644,103801, 585, 585, -4998, -4998, -4998, 4004, -4998, -4998, 3916, 4197, 1044, -4998, 1044, 1044, -4998, -4998, 1044, -4998, 3920, -4998, 44, 4290, -4998, 1554, 1796, 4244, -4998, 4248, 30065, -4998, 2014, 4575, -4998, 4301, 4380, -4998, -4998, -4998, -4998, 3086, 2086, 3988, -4998, -4998, 64034, 401, -4998, 4229, 186, 4147, 67317, 365, 328, 3937, 4063, -4998, 2722, 2722, 3991, 79511, 4385, -4998, -4998, -4998, -4998, -4998, -4998, 60282, 3564, -4998, 4166, 1046, 4267, 79511, 30065, 3710, -4998, 1692, 4270, -4998, 1644, -4998, -4998, 4070, 3337, -4998, 1079, 79511, 4160, 67317, 3384, 2380, -4998, -4998, -4998, 3985, 4381, 3353, -4998, 365, 4003, -4998, -4998, 4355, 4040, 3990, 4403, -4998, 4040, 4275, 4165, 3958, -4998, 3638, -4998, -4998, 16639, 16639, 1644,105166, 6524,103801, 4283, 79511, 190, 4247, 585, 2388, -4998, -4998, 585, 585, -4998, 79511, -4998, 3325, 3325, 3325, 3325, 3325, -4998, 4168, -4998, -4998, 4237, -4998, 585, 59813, -4998, -4998, -4998, -4998, -4998, 1068, -4998, -4998, -4998, -4998, -4998, 16639, -4998, -4998, -4998, -4998, -4998, 9823, 35367, 4284, -4998, 3965,103801, -4998, 3967, 2412, 2413, -4998, -4998, 1091, -4998, 4277, -4998, -4998, -4998, 10009, 4016, 16639, 4075, 3968, 3970, 4637, 4637, 7749, 2435, -4998, 4637, 30065, 30065, 4637, 4637, 30065, -4998, -4998, 10132, 4161, -4998, -4998, 10723, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 57468, 3974, 3598, 78573, 3976, 79511, 2467, 39637, -4998, -4998, 2397, -4998, 39637, 4245, -4998, 39637, 64034, -4998, 79511, 3977, 79511, -4998, 32957, 30065, 4018, -4998, -4998, 4018, -4998, -4998, 3983, -4998, 79511, 2817, -4998, 687, -4998, -4998, 4379, 40575, 4338, 30065, -4998, -4998, -4998, -4998, 59813, 4190, 59813, 1554, 10950, 4193, 40575, 49031, 79511, -4998, 79511, -4998, 4149, 4193, 3989, 3086, -4998, -4998, -4998, -4998, -4998, -4998, 4002, -4998, -4998, -4998, -4998, 4071, -4998, -4998, 62, 3338, -4998, 2441, -4998, -4998, 4441, 4332, 4333, -4998, -4998, -4998, -4998, -4998, -4998, 4183, -4998, -4998, 45265, 60282, 79511, -4998, 4076, -4998, -4998, -4998, -4998, -4998, -4998, 42451, 48093, -4998, 204, 3997, 3999, 266, -4998, -4998, -4998, 79511, 11231, 4008, 636, 3338, 79511, 79511, 4011, 4012, 4019, 1667, 1255, 1845, 3325, 4322, 79511, -4998, -4998, -4998, 4183, -4998, -4998, 79511, -4998, 1044, -4998, -4998, -4998, -4998, 56530, -4998, 3957, 3920, 1644, 64034, 4451, 4451, 79511, -4998, 11582, 4221, -4998, -4998, 732, 3988, 4255, 4297, -4998, 4020, 79511, 933, 4021, 79511, 4022, 4134, 1655, 1655, 79511, 79511, 79511, 2446, 1665, 2722, 3799, 930, 4352, 67317, 4394, 3692, 386, -4998, -4998, 1692, -4998, 1094, 4369, 4067, -4998, 79511, 4468, 79511, 3384, 3612, 79511, 4025, -4998, -4998, 68724, 4233, 2292, 79511, 2175, 4003, 3353, 1321, 79511, -4998, 924, -4998, 1665, -4998, 79511, 73883, 40575, -4998, 104256, -4998, 2456, -4998, -4998, 4100, 3483, 4141, 4148, 4035, 79511, 928, -4998, -4998, -4998, -4998, -4998, -4998, 79511, -4998, 423, -4998, -4998, 4913, 35367,103801, 2460, 30065, -4998, 30065, -4998, -4998, -4998, -4998, 669, -4998, -4998, -4998, 4637, 4637, 4637, -4998, 4470, 3463, -4998, -4998, 2465, 4489, 34403, 4450, -4998, 79511, 2479, -4998, 30065, 4041, -4998, -4998, 39637, 2397, 4042, 2490, 79511, 2491,103801, 4044, 721, 4045, 23373, 4048, -4998, -4998, -4998, -4998, -4998, 16639, 16639, 79511, -4998, -4998, -4998, -4998, 4098, 79511, 2505, -4998, 809, 16639, 1502, 1755, 423, 4308, 3086, -4998, 4049, -4998, -4998, 2899, 1517, 79511, 3086, 79511, 3988, -4998, 79511, 4138, -4998, -4998, 56530, 4357, -4998, -4998, 4113, -4998, 986, 3338, 79511,103801, -4998, 126, 4383, -4998,103801,103801, -4998, -4998, -4998, 30065, 4144, -4998, -4998, -4998, 30065, 30065, 66379, -4998, -4998, 79511, 79511, 79511, 79511, 79511, -4998, 585, -4998, -4998, 2513, -4998, 41513, -4998, -4998, 3050, 1644, 3050, 1878, -4998, -4998, 3050, 3050, -4998, 3483, -4998, 4451, 1018, -4998, -4998, -4998, 2015, 4287, 4061, 30065, -4998, 1172, 4269, 4154, 4066, -4998, 64034, 4545, 3612, 4085, 79511, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 2518, 3692, 4398, 3337, 3990, -4998, 79511, 4102, -4998, 39637, -4998, -4998, -4998, 3050, -4998, 737, 4073, 4410, 3692, 1665, 2053, -4998, 4003, 3612, 4085, -4998, -4998, 4080, 4024, 3353, 2175, 4209, -4998, 4210, -4998, 4494, 4282, 4497, 3384, -4998, 3244, 2524, -4998, 6524,105166,103801, 4437, 4119, 4123, -4998, -4998, 4137, 79511, -4998, -4998, 3692, -4998, 4913, 2526, -4998, 2530, 2539, 4140, -4998, 30065, 1254, 3714, 57468, 4087, -4998, 35367, 2546, -4998, 2706, 79511, 2558, -4998, 16639, 79511, -4998, -4998, 30065, -4998, 2560, -4998, 30065, 4089, 30065, -4998, 32957, 4088, -4998, 4541, 1665, -4998, 3483, 40575, -4998, 4215, -4998, 4415, -4998, -4998, 3988, 48093, 1517, 3468, 2086, 3988, 2568, -4998, -4998, 79511, -4998, 4061, 30065, -4998, 4188, -4998, -4998, 2583, 1402, 4261, 4261, 2585, 2587, 11709, 79511, 2592, 2593, -4998, 2594, 2559, 3334, 1845, 3334, -4998, 3325, -4998, -4998, 56530, -4998, 57937, -4998, -4998, -4998, 1644, -4998, 1644, 4319, 79511, 50438, 1644, 1644, -4998, -4998, -4998, -4998, 4454, 4400, -4998, 2718, -4998, 12241, -4998, -4998, -4998, 451, -4998, 4320, 4321, 79511, -4998, 4114, -4998, 2598, 365, 4240, 3692, -4998, -4998, 79511, 4566, 4570, -4998, 1093, 79511, 3710, 79511, -4998, -4998, -4998, 30065, 933, -4998, 3990, 3384, 3353, 365, 4003, 2292, 41044, 4040, 2175, 4024, -4998, -4998, 4327, -4998, 4328, -4998, 4126, 4419, 6524, -4998, -4998, 354, 4446, 4448, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 3405, 33439, 33439, 33439, 4130, -4998, -4998, 79511, 4575, 4129, 34403, 56530, 2623, -4998,102436, -4998, 2629, 2636, -4998, 2637, 32957, 2650, -4998, 79511, 4135, -4998, -4998, -4998, 43858, 59813, 4175, 4143, 3468, -4998, 4255, -4998, -4998, 1554, 3338, -4998, 16639, 79511, 64034, 4568, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 3338, 4223, -4998, -4998, 66379, -4998, 79511, -4998, -4998, 2652, -4998, -4998, -4998, 79511, 3801, -4998, 3801, -4998, -4998, 4285, -4998, 2731, 4253, 1197, 1197, 4518, -4998, 4211, -4998, -4998, 4158, -4998, 4636, 4280, 79511, -4998, -4998, 204, 1665, 67317, 3692, -4998, -4998, 12486, 64034, -4998, -4998, 2175, 4003, 3353, 30065, 2656, -4998, 4308, 193, -4998, 4024, 4040, -4998, -4998, 40575, 4167, 3337, -4998, -4998, 2339, 64034, 64034, 34885, 4299, 836, 14065, 4506, -4998, 4506, 4506, -4998, 2658, 36807, -4998, -4998, -4998, 79511, 4370, 1316, -4998, 4323, -4998, 2660, -4998, -4998, -4998, 30, 423, 4170, -4998, -4998, -4998, 4269, 1554, -4998, 3338, -4998, 79511, -4998, 4171, -4998, -4998, -4998, 57937, 3801, 4067, -4998, -4998, -4998, 4638, -4998, 976, -4998, -4998, -4998, -4998, 79511, 3692, 3905, 3990, -4998, -4998, 4172, 4024, 3353, 2175, 12826, -4998, 41044, 79511, 79511, 4040, -4998, 2662, 40575, 4040, -4998, 1767, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 4169, 4176, 4628, -4998, -4998, -4998, -4998, -4998, 1022, -4998, -4998, -4998, -4998, 3598, -4998, -4998, 35367, 35367, 4402, -4998, 1316, -4998, 4184, -4998, -4998, -4998, -4998, 30065, 1554, -4998, -4998, -4998, 30065, -4998, 4525, -4998, -4998, -4998, 3692, -4998, -4998, 56061, 4040, 2175, 4024, 4308, -4998, -4998, -4998, -4998, -4998, 4419, -4998, 2664, 3483, 2289, -4998, -4998, 2405, 2341, 4268, 4507, 33921, 4329, -4998, 4389, -4998, 4599, 4575, 4575, -4998, -4998, 30065, 13143, 1554, 2666, 933, -4998, -4998, 2681, -4998, -4998, -4998, -4998, -4998, 4024, 4040, 79511, 3337, -4998, 40575, -4998, -4998, 1767, 4305, 4306, -4998, -4998, -4998, 79511, 13217, -4998, -4998, 64034, -4998, 56061, 4040, -4998, -4998, 4040, -4998, -4998, 4241, 4242, 2682, -4998, 4191, -4998, -4998, 3483, 4524, 4526, -4998, 56061, -4998, 64034, 64034, 2703, -4998, -4998, -4998 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -4998, -4998, -4998, 3868, -4998, -4998, -914, 482, 3079, -1931, -4998, -4998, -4998, 1259, -4998, -4998, -4998, -4998, 3822, -4998, 2152, -2451, -4998, -4998, 159, 3778, -1303, 124, 3349, 1801, -4998, -1148, -4998, -4998, -572, 85, -4998, 3780, 241, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -790, 2276, -4998, 2365, 1625, 7340, -2724, -4998, -4998, -1458, -3274, -4998, 921, -4998, 953, -4274, -598, -4998, -4998, -4998, 2266, -4998, -4998, -4998, 2206, 1426, -40, -4998, -4998, -4998, -4998, -4998, -4998, -447, -4998, -4998, -691, 153, 46, -2467, -3800, -4998, -4998, 780, -92, -1445, -4998, -3628, -4998, 295, -3801, -4998, -4998, -4998, -58, -1426, 1730, -4998, -700, -1163, 2049, -2905, -543, -4998, 79, -4998, -653, -446, -444, -575, -3856, -4356, -4998, -4998, -684, -3273, -4622, -4833, -4240, -3980, 1753, -4998, -4998, 161, -3180, -3260, 163, 765, -4998, 168, 170, -4998, 782, -382, -918, -1547, -4998, -524, -4998, -4998, -4998, -2980, -4998, -4998, -4998, -4998, 81, -4998, -4998, -4998, -4998, 827, -4998, -4998, -4998, -4998, -4998, -4998, -2736, 2237, 2239, -4998, -2922, -4998, -864, -4998, 988, -2994, 1660, -4998, -4998, 1425, 3857, 817, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -1713, -4998, -4998, -4998, -4998, 305, -14, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 172, -4998, 2262, 1429, -4998, -4998, -15, -4998, -4998, -4998, -4998, -4998, -4998, -627, -4605, -785, -766, -4998, -3003, -4998, -4998, -4998, 21, -4998, -4998, -4998, -4998, -4998, -873, -4998, 1506, -3650, -4998, -4998, 810, -4998, -4998, -4998, -4998, -4998, -530, 90, 3044, -4998, -140, -333, -4998, -4998, -4998, 91, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -1084, 9082, -811, -582, -4998, -4998, -4998, -4998, -4998, -2185, -4998, -4998, -4998, -4998, -3794, -4998, 4797, 2385, 416, 173, -4998, -12, 67, 3647, -1141, -2647, 768, -101, -4998, -4998, -4998, -2601, -4998, -4998, -4998, -4998, -3582, 174, -4998, -670, -4998, -3879, -4623, -4064, -3607, -679, -4998, -3943, -4997, -3962, -3560, -4998, -4998, -4998, -4998, -558, -167, 3017, -4998, -1414, 2628, -931, -4998, -2112, 832, 1852, 3021, -2796, -126, 3018, -2544, -640, -3286, -4998, -4998, -2317, -242, -4998, -4998, 1535, 697, -4998, -4998, -4998, -4998, -633, 2956, -194, -4998, -4998, 4177, -4998, -3842, -4998, 4142, -4998, -4998, -4998, -4998, 2861, 2863, -4998, 2869, -4998, -4998, -1385, 1608, -4998, -759, -4998, -4998, 2398, 1033, -4998, -4998, -4998, -4998, -4998, -4998, -4998, -4998, 1500, 1016, -4998, -4998, -4998, -4998, -4998, -520, -695, -4998, -4998, 175, -4998, -4998, -4998, -4998, 2244, -902, -736, 4050, 895, 181, -4794, -4998, -4998, -1127, -4998, 3423, -4998, -4998, -4998, -4998, -4998, 834, 838, -4998, -4998, -4998, -4998, -2528, -4998, -4998, -4470, -4998, -4998, -4998, -4998, -4998, 4031, 116, 2732, -4998, -4998, -4998, -30, -4998, -4998, -964, 2728, -4998, -1939, -4998, -594, -4998, 2947, -4998, -4998, -4998, -4998, -1896, 182, -3840, -4998, 6, -4998, -4998, 219, -4998, 645, -4998, -4998, -3469, 9, -4998, -4998, -4998, -4998, -4490, -4998, 12, -410, 1191, -2848, -4998, 184, -1, -4998, -4998, 2, 2226, -43, -53, -44, 5, 119, 3512, -4998, -4998, 3554, -4998, 13, 2196, -4998, -4998, -821, -173, -4998, 1955, -648, 2704, 3488, 3491, -4998, 1942, 2734, -1992, -1988, -4998, 1239, -389, -231, -4998, -4998, -4998, -4998, 678, -644, 2719, -4998, 3497, -4998, -4998, -4998, -1945, -2877, -3507, 1264, -3489, -3405, 712, 701, -1368, 4, -41, -765, 3501, -4998, -4998, 1269, -195, -4998, -4998, -193, -2850, 1219, -4998, -4417, -2368, 1276, -651, -482, -4998, -569, -4998, -356, 2522, 3058, -1049, -4998, -4998, -1013, 14010, -4998, -4998, -4998, 14165, 14439, -4998, -4998, 15771, 15795, -4998, -863, 16303, 13488, -1019, -1886, -334, 12660, -449, 326, 121, -4998, -3587, -1961, -4998, -4998, -4998, 48, 1334, -705, -4998, -4465, -3890, -4998, -4998, 270, -4998, -364, -4998, -363, -4998, -4998, -4998, -2665, -4988, -2722, 2838, -4998, -4998, -4998, -174, -4998, 17345, -2773, -4998, -345, -1329, -1539, -3475, -1894, -4998, -4998, -4998, -2676, -4998, -4998, -4998, -4998, -3057, -3360, -393, 2055, -4998, -4998, 2158, -4998, -4998, -4998, -904, 2438, -761, -1224, 2062, -4998, -772, 2842, -762, 12023, -693, 8506, -544, -2281, -1255, -1658, -4998, 1237, -4998, 1163, 6387, 24, -135, 5495, -616, -6, 12836, -578, -895, 4500, 11757, 9868, -3202 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -2695 static const yytype_int16 yytable[] = { 604, 1568, 180, 819, 1022, 185, 175, 611, 835, 176, 846, 904, 178, 1930, 663, 2237, 1636, 755, 1148, 757, 1950, 2413, 1618, 763, 788, 1327, 185, 1401, 777, 785, 755, 905, 792, 869, 1886, 785, 785, 1331, 821, 1856, 824, 910, 2314, 1630, 915, 2343, 747, 1728, 1420, 1185, 1186, 1187, 747, 3650, 1723, 1191, 1573, 1362, 822, 655, 1361, 2315, 3404, 1846, 1847, 856, 2306, 3323, 2035, 1794, 1349, 2487, 1862, 1855, 1990, 913, 3672, 1129, 3740, 3237, 3970, 3144, 3760, 2724, 1007, 65, 3494, 2976, 2978, 935, 753, 1142, 1060, 1767, 2478, 2580, 3346, 1772, 1058, 709, 4257, 4219, 1776, 789, 2764, 1207, 3921, 2326, 3475, 3203, 1482, 3999, 1786, 3986, 3685, 4018, 170, 3784, 4018, 3786, 4258, 4252, 1156, 4517, 1139, 1510, 1810, 602, 4187, 1567, 4156, 4296, 848, 1127, 4506, 1069, 1131, 721, 1596, 1162, 840, 849, 2440, 2441, 4320, 4496, 4457, 2903, 1623, 1779, 4828, 1532, 4204, 74, 3661, 1840, 1549, 4889, 2829, 782, 2831, 77, 2600, 78, 2210, 1807, 816, 2297, 79, 833, 80, 2943, 102, 120, 125, 150, 3691, 2946, 928, 3604, 5017, 154, 173, 4789, 179, 604, 859, 859, 862, 4505, 859, 3983, 2913, 1361, 871, 4677, 821, 1394, 2663, 907, 808, 1397, 871, 2922, 5061, 871, 4120, 4946, 821, 2436, 859, 1843, 1844, 821, 4234, 5074, -2427, 859, 2133, 821, 669, 4901, 1854, 4903, 1060, -2465, -2488, 2297, 5235, 1477, 1340, 4827, 1846, 1847, -2355, 4202, 2467, 4207, -2525, 729, 4584, 620, 1806, 5217, 2297, 729, 2955, 3313, 1367, 4969, 3543, 2128, -2430, 1855, -1921, 1833, 3336, 1862, 2317, 4467, -1921, 1367, -2327, 729, 1167, 669, 2541, 854, -2327, 4674, 1477, -2327, -2327, -135, 4835, 1477, 4979, 4980, 2839, -135, 4557, 4558, 1171, 4560, 4561, 4562, 4563, 4564, -2328, 5154, 2327, 1833, 825, 664, -2328, 2734, 1877, -2328, -2328, -2293, 1758, 2049, 2476, 2477, -2177, -2293, 2221, 4008, 3282, 867, 3283, -2177, -2694, -1888, 3287, 2447, 3289, 3290, -2694, -1888, 2317, -2694, -2694, 2865, 3741, 3294, 3295, 3296, 2245, 3054, -1901, -1926, 2055, 669, -433, -1916, -1901, -1926, 669, 3828, 3479, -1916, -1929, 669, 2044, 4685, 2839, 2514, -1929, 2088, 4468, 1216, -2290, 4518, 3314, 1833, -1929, 3481, 4847, 1973, 1511, 1514, -1929, 669, 2057, 1408, 729, 3022, 3442, 3492, 3444, 1843, 1844, 669, 4333, 1335, 669, 1820, 2103, 1341, 1511, 669, 4144, 1833, 735, 5373, 729, 2104, 1763, 3543, 5463, 3300, 4658, 735, 735, 843, 843, 3944, 1854, 669, 3262, 1802, 735, 4384, 5367, 4363, 735, 2240, 736, 2243, 3055, 2317, 2774, 2231, 618, 669, 2317, 736, 736, 2144, 735, 2775, 1803, 2154, 2956, 2428, 736, -2486, 729, 4945, 736, 2049, 2577, -689, 5355, 4469, 4338, 4784, 2881, 1226, 2948, 5237, 3543, 4299, 736, 2882, 2380, 1630, 5509, 5510, 2292, 3067, 1833, 3938, 1415, 3176, 2151, 1728, 3483, 2866, 2997, 1833, 2055, 905, 2867, 5151, 2155, 3154, 1189, 924, 615, 5062, 2317, 1833, 2317, 4790, 4300, 2246, 3647, 2452, 4094, 3848, 2434, 1371, 1833, 5116, 4334, 3765, 1416, 2233, 40, 2105, 1417, 3794, 2057, 1541, 669, 4702, 925, 2129, 1016, 2868, 2317, 188, 4707, 2397, 1026, 3795, 2234, 1894, 4121, 2049, 3844, 188, 905, 4311, 3909, 839, 1542, 1040, 2776, 2317, 4791, 3687, 1723, 1418, 44, 2900, 3849, 3968, -2197, 1981, 3176, 5447, 1834, 5557, 2041, -2197, 3484, 1764, 3315, 3155, 2055, 2293, 3068, 2949, 2998, 189, 4339, 1449, 4785, 5569, 2152, 1190, 5042, 1884, 4301, 189, 940, 948, 1409, 5374, 3480, 949, 2091, 1060, 2247, 665, 48, 1934, 1834, 1914, 5333, 1970, 2057, 2157, 4385, 670, 1728, 3482, 1804, 49, 3741, 1060, 1980, 3058, 1083, 2515, 2466, 4470, 4335, 3301, 3921, 2777, 2328, 1764, 868, 3829, 4848, 3543, 1991, 4659, 2482, 3265, 50, 3515, 5503, 2329, 2106, 2330, 954, 2578, 826, 1884, 5366, 1521, 821, 4355, 859, 2957, 859, 5354, 862, 999, 859, 666, 185, 996, 2840, 3316, 997, 907, 2542, 998, 1834, 2158, 1029, 1932, 859, 1218, 2526, 5501, 1060, 4425, 2869, 859, 1833, 2085, 1994, 2408, 3063, -2177, 2411, 1974, 2778, 2235, 941, 2779, 1450, 4471, 1974, 4686, 1834, 667, 2381, 668, 2282, -2486, 4009, 604, 2331, 3023, 5547, 862, 835, 1402, 1190, 621, 871, 4598, 948, 2140, 907, 4466, 949, 871, 4626, 1835, 871, 1841, 4630, 1163, 1764, 4204, 1190, 4871, 3610, 5316, 990, 5230, 1636, 1636, 1636, 2906, 859, 942, 2448, 4262, -2427, 1764, 2418, 3549, 2429, 5567, 741, 742, 3427, -2465, -2488, 1541, 1193, 185, 3559, 1863, 3706, 4514, -2355, 2475, 2359, 2244, -2525, 1834, 741, 742, 4569, 5439, -2486, -1921, 4513, 3263, 1834, 3138, 1542, 1180, -2430, -2327, 3880, 5449, -135, -135, -2486, 3939, 1834, 2178, 1164, 821, 1169, 2179, 1173, 2360, 2902, 1155, 943, 1834, 1177, 4861, 1060, 2780, 2236, 4663, 1208, -2328, 2101, 2077, 1060, 1060, 4617, 1745, 4619, 2579, 948, 1193, -2293, 848, 949, 2883, 2684, 1881, 1060, 1857, 1325, 1325, 849, 821, 785, -2694, 1845, 905, 785, 5011, 1740, 3921, 2435, 1857, 4284, 3830, 1747, 5410, 1923, 1748, 1858, 1405, 821, 1849, -1926, 1892, 821, 2483, -1916, 5505, 5414, 2045, 1325, 2109, 1858, 1859, 2089, 1456, 2123, 2123, 1733, 2667, 3845, 1158, 821, 1512, 1513, 1764, 2301, 1861, 180, 2453, 2134, 185, 175, 1342, 821, 176, 4145, 5387, 178, 4325, 3687, 2107, 2138, 1512, 1513, 4091, 3556, 3557, 3558, 3559, 821, 3693, 2641, 3694, 3082, 5135, 3983, 2524, 2454, 4364, 2694, 4824, 3901, 3902, 5359, -2197, 2781, 2138, 821, 5334, 5546, 2706, 1916, 859, 859, 2782, 3841, 3168, 1451, 2301, 2368, 1919, 3962, 3064, 4742, 741, 742, 4242, 2074, 2075, 2076, 2077, 4429, 1884, 2714, 2695, 2301, 3554, 3555, 3556, 3557, 3558, 3559, 2766, 4058, 5009, 785, 785, 4743, 5491, -1888, 65, 2589, 1834, 4428, 1012, 2086, 5005, 5095, 3121, 5564, 1629, 2284, 5343, 1048, 1110, 3951, 3645, 2943, 1325, 1325, 3272, 2291, 3666, 1434, 2533, 1372, 2590, 604, 2040, 1607, 1452, 170, 1182, 2987, 5358, 1608, 1334, 2538, 871, 5143, 1346, 1533, 907, 2571, 871, 1738, 669, 871, 1424, 3139, 3169, 1441, 1351, 5139, 3655, 2072, 2073, 2074, 2075, 2076, 2077, 3122, 859, 5068, 3036, 2980, 2623, 2624, 74, 3645, 768, 5069, 5365, 1424, 2297, 5465, 77, -1888, 78, 5440, 4968, 3895, 3896, 79, 821, 80, 5528, 102, 120, 125, 150, 859, 859, 3130, 5055, 3688, 154, 173, 3653, 179, 1462, 2048, 2548, 3170, 2049, 948, 2231, 2715, 2398, 949, 4887, 2401, 2402, 821, 821, 821, 2413, 859, 4019, 604, 604, 604, 4531, 4353, 2232, 782, 1588, 669, 2572, 3054, 3433, 2093, 1425, 3736, 4488, 2055, 4455, 5189, 1609, 2186, 1449, 4953, 4257, 3554, 3555, 3556, 3557, 3558, 3559, 4258, 1534, 669, 5130, 2995, 1049, 2539, 769, 1425, 3123, 3676, 1442, 3171, 4258, 4493, 5222, 3221, 5119, 2057, 4481, 5497, 2761, 3222, -1745, 3235, 3991, 2113, 3894, 1602, 4866, 4443, 4448, 2549, 2233, 3952, 1426, 1868, 3809, 1798, 4494, 859, 850, 859, 859, 1627, 2593, 3677, 5223, 4893, 5524, 3762, 2094, 2234, 4897, 4020, 5448, 4899, 1884, 1183, 2761, 1426, 3055, 4890, 1826, 2534, 1728, 2591, 5096, 2114, 1903, 1603, 5466, 2504, 4065, 1856, 1325, 1168, 1170, 1172, 1827, 1799, 1174, 1175, 1176, 5289, 5070, 1636, 2837, 5188, 5294, 2696, 1181, 5210, 1936, 1872, 1938, 185, 1940, -1888, 1942, 1450, 1944, 1945, 1946, 5291, 1952, 1952, 4744, 1948, 1869, 821, 1904, 755, 746, 2505, 1728, 3172, 5084, 3394, 746, 2981, 3728, 5244, 2982, 3918, 3223, 851, 5525, 821, 5232, 2703, 2704, 1427, 1828, 1987, 5511, 5190, 821, 2011, 5515, 1993, 5229, 1013, 1352, 4814, 2496, 3810, 5209, 3131, 5010, 1610, 1050, 1111, 2669, 1325, 3372, 4815, 1427, 4826, 3763, 2716, 2416, 1535, 3729, 4820, 770, -1744, 5131, 4018, 3667, 1870, 603, 1443, 1871, 5498, 3124, 4456, 4449, 4669, 4258, 2717, 835, 4444, 1739, 5231, 1325, 5424, 1051, 1611, 2573, 2693, 5545, 1428, -1745, 2698, 2644, 2975, 2622, 2702, 2235, 1536, 2705, 3037, 2574, 1868, 2041, 771, 772, 4021, 2656, 1444, 5526, 1353, 1325, 4015, 1325, 1325, 2220, 1325, 1628, 768, 1612, 2662, 2617, 2064, 4066, 1212, 3430, 4495, 4700, 1429, 1829, 940, 1537, 35, 5568, 3058, 3173, 1325, 841, 3737, 1604, 3276, 1445, 1723, 3174, 1052, 5477, 3175, 2589, 2642, 1800, 1053, 2823, 2661, 5579, 2826, 2048, 5580, 2676, 2049, 2145, 2146, 1430, 2150, 2655, 4554, 2136, 2657, 5197, 849, 849, 2888, 849, 2590, 5133, 1162, 1869, 4022, 905, 821, 5150, 1905, 1872, 4222, 2506, 3224, 1830, 3431, -1888, 1405, 2055, 5085, 634, 2403, 1431, 4493, 1432, -2695, -1888, 773, 1845, -1888, 1419, 842, -1888, 769, 3811, 1499, 2239, 1325, 1446, 2236, 2793, 1325, 1325, 4662, 634, 5091, 5112, 1431, 4494, 1432, 2057, 3225, 821, 821, 2184, 2697, 1325, 941, 2700, 2701, 4573, 3730, 4574, -1744, 2240, 1870, 3668, 3753, 1871, 2947, 1857, 1605, 3812, 4581, 1433, 5445, 5446, 852, 2708, 785, 636, 1801, 5527, 857, 3226, 2366, 5233, 5478, 5260, 3764, 3765, 1858, 870, 40, 40, 615, 2455, 5064, 794, 5044, 870, 3539, 3128, 870, 636, 3813, 942, 843, 2710, 1831, 1390, 5065, 1906, 5425, 2288, 2507, 790, 3593, 3766, 785, 1884, 1873, 859, 4552, 3227, 4526, 5198, 3152, 1872, 44, 44, 940, 3231, 3187, 1884, 821, 2316, 5153, 2889, 3754, 715, 1874, 5157, 5158, 821, 5045, 3054, 859, 1538, 2072, 2073, 2074, 2075, 2076, 2077, 2620, 2404, 1523, 2725, 2405, 15, -2695, 3228, 943, 3731, 3232, -2695, 3921, 4887, 994, 2249, 48, 48, -458, 907, 3080, 821, 5286, 1872, 785, 2250, 4223, 1392, 4582, 49, 49, 1384, 617, 3207, 2277, 4801, 770, 5426, 2711, 20, 3229, 785, 4258, 795, 821, 5199, 756, 821, -2695, 2431, 4575, 1636, 50, 50, 1367, 5063, 5054, 2925, 2241, 2154, 188, 3152, 3440, 5548, 5427, 2367, 3842, 51, 51, 859, 3230, 2800, 3055, 1524, 941, 5261, 2456, 771, 772, 5292, 1935, 5479, 5349, 1937, 821, 1939, 5480, 1941, 1884, 1943, 844, 4978, 647, 1947, 648, 2344, 859, 859, 859, 859, 821, 2064, 2155, 3587, 189, 5262, 3186, 3056, 1152, 4441, 4487, 3161, 3162, 735, 821, 3165, 647, 4447, 648, 4082, 1780, 4195, 1551, 942, 1434, 1325, 1325, 1325, 2344, 1434, 5066, 1385, 2688, 3311, 1873, -2318, -458, 736, 3843, -162, 2413, 3211, 2926, -1892, 1780, 3057, 1060, 5363, 2344, -1892, 669, 2760, 4482, 2763, 4196, 3266, 3267, 3268, 3250, 2770, 1552, 3752, 1764, 2156, 1608, 2786, 2787, 2788, -162, 4632, 3343, 3645, 4265, 2992, 3645, 3256, 2805, 2807, 4442, 4198, 943, 2817, 3918, 2251, -1676, 5022, 1219, 3236, 5302, 2480, 2481, -2695, 3077, 3355, 3356, 3357, 3358, -1676, 2653, 2344, 1434, 1390, -1676, 3413, 1434, 3363, 4975, 4351, 4417, 2615, 2410, 2157, 4420, 4421, 2643, 4423, 35, 905, 905, 2167, 32, 2252, 2225, 2488, 2049, 821, 3272, 1410, 4220, 4976, 3391, 5407, 3889, 2226, 1348, 1390, 5023, 859, 859, 4045, 1391, 4323, 3690, 2437, 5024, 2383, 3645, 3058, 1919, -1676, 40, 2227, 1541, 1352, 4266, 2345, 1499, 859, 4536, 5303, 4537, 4217, 5216, 2468, 3009, 1411, 4932, 1609, 1570, -1676, 5007, 2158, 5025, 1392, 4940, 1542, 821, 3342, 2689, 4103, 2384, 4104, 627, 4258, 2346, 2387, 44, 2057, 2345, 5236, 4221, -2695, 859, 859, 859, 859, 4200, 2071, 1412, 2072, 2073, 2074, 2075, 2076, 2077, 821, 1571, 1392, 2345, 2347, 2690, 5243, 821, 4324, 2488, 4267, -1676, 2346, 760, 4268, 1393, 3010, 1353, 2691, 3846, -1676, 604, 5026, 48, 604, 1421, 1579, 2334, 862, 767, -1675, 1212, 2346, 3166, 1325, 5027, 49, 2347, 5513, 905, 2342, 766, 3712, -1675, 4438, 4682, 3005, 5028, -1675, 1393, 1344, 2458, 5363, 2692, 2345, 2464, 1576, 2347, 4258, 50, -1899, 2335, 634, 1422, 3881, 5083, -1899, 1580, 4439, 871, 871, 3188, 2097, 2342, 51, 3099, 5041, 1581, 2543, 3191, 907, 907, 3194, 2346, 871, -1099, 3918, 871, 746, 3009, 746, 3384, 746, 2342, 1577, -1675, 1423, 2228, 746, 1178, 1179, 4860, 3806, -1105, 859, 859, 837, 857, 2347, 4105, 1572, 859, 2049, 821, 4683, -1675, 870, 3995, 3577, 4106, 3840, 4244, 636, 870, 3584, 185, 870, 1578, 2719, 2678, 2344, 2679, 2322, 2680, 2323, 2681, 3100, 2682, 1952, 5571, 3807, 2683, 4805, 2055, 2342, 859, 3709, 871, 4057, 5146, 871, 871, 5357, 821, 821, 4018, 859, 793, -1676, 4258, 817, 4769, -1675, 821, 5356, 2641, 4806, 2469, 1041, 3101, 821, -1675, 2731, 3808, 3347, 2057, 999, 755, 755, 185, 996, 2736, 4952, 997, 4788, 1325, 998, 1325, 4689, 4690, 4058, 5079, 1325, 1325, 4770, 2324, 1852, 1853, 3467, 1325, 1325, 1325, 3645, 1042, 1325, 2470, 1325, 907, 1325, 1325, 1325, 1325, 1325, 1325, 4928, 1325, 4930, 1325, 1325, 4799, 40, 1325, -1715, 4819, 828, 4983, 1060, -1715, 2403, 29, 3102, 2471, 3407, 5029, 1857, 1582, 5030, 1158, 1043, 1325, 1325, 1325, 1325, 746, 2472, 3065, 859, 1325, 4263, 838, 2730, 1325, 3490, 3491, 1325, 1858, 44, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 3042, 1325, 1583, 1859, 2757, 2473, 1584, 821, 1325, 3649, 634, 1325, 3923, 1041, 5441, 1060, 853, 2334, 821, 1044, 905, 3453, 647, 2345, 648, 3038, 5451, -1715, 3043, 3044, 3233, 48, 4245, 5253, 1014, 650, 1015, 2344, 4246, 1585, 5213, 4403, -1675, 854, 49, 4247, 4975, 652, 1042, 1541, 1780, 2335, 2346, 821, 863, 40, 4779, 5227, 3926, 3030, 1325, 4265, 4404, 3234, 821, 821, 1598, 50, 5296, 4976, 636, 5182, 1542, 865, -1715, 1325, 5183, 2347, 5187, -587, 4248, 2422, 51, 3964, 1325, 1325, 885, -135, 1919, 886, 3692, 44, 1808, 5220, 5254, 5504, 2404, 3651, 821, 2405, 3076, 1544, 4249, 3468, 1599, 2961, 5191, 2966, 1600, 1226, 2423, 2959, 3543, 2342, 3928, 1809, 3544, 3545, 3546, 1857, 1615, 857, -1889, 1619, 3971, 3742, 5184, 939, -1889, 2344, 1911, 1044, 870, 48, 3981, 2919, 947, 1601, 870, 862, 1858, 870, 2999, 4266, 3002, 3352, 49, 4310, 755, 930, 755, 3770, 3140, 1912, 181, 1861, 2374, 3608, 2920, 4760, 3645, 4761, 4762, 887, 3645, 4763, 3062, 1325, -1890, 50, 888, 889, 890, 2391, -1890, 181, 2996, 227, 3167, 604, 2915, 859, 859, 619, 51, -1430, 871, -1430, 907, 871, 871, 713, 859, 4386, 859, 4489, 2545, 2345, 859, 2344, 3745, 821, 3417, 5570, 4267, 834, 5285, 4775, 4268, 791, 1001, 2317, 3931, 1821, 1822, 1823, 4387, 5345, 2317, 5409, 2582, 2318, 785, 2847, 4975, 2848, 2346, 3360, 2325, 3432, 3434, 3435, 3361, 2316, 4302, 3701, 4309, 647, 3697, 648, 4294, 3087, 821, 1845, 3838, 2211, 1003, 4976, 3098, 2849, -1893, 2347, 746, -1891, 3932, 3253, -1893, 821, 1060, -1891, 669, 1006, 1636, 1193, 1193, 653, 2042, 1193, 1636, 1925, 3933, 4516, 1926, 2352, 2801, 3801, 3540, 3541, 821, 729, 4070, 3561, 2819, 3143, 3143, 1009, 4285, 2342, 40, 2345, 3923, 3547, 4942, 1023, 2353, 3664, 3924, 1046, 821, 821, 729, 729, 821, 2344, 862, 785, -1157, -1157, 3925, 3698, 3699, 669, 2123, 3548, 3847, 3967, 3511, 4645, 2346, 3591, 3592, 2138, 4241, 1018, 44, 1019, 3940, 1845, 859, 2211, 5489, 859, 3512, 4033, 4034, 744, 3926, 3513, 3927, 847, 2524, 744, 4326, 2347, 1036, 3570, 2048, 3572, 3573, 2049, 2850, 2851, 2852, 2853, 821, 821, 5436, 2854, 2855, 2345, 3910, 1982, -586, 2856, 1983, 3922, 48, 3934, 2857, 3238, 3361, 3241, 3243, 1531, 1845, 3201, 1419, 1060, 1548, 2342, 2055, 3549, 3542, 3719, 1045, 4232, 3207, -2695, 2346, 3, 4, 5179, 3928, 5181, 3571, 1047, 2131, 5185, 5186, 2132, 2944, 2945, 1325, 1325, 1325, 1066, 2137, 2935, 1325, 2138, -1739, -1739, 2057, 2347, 859, 5535, 2142, 51, 3882, 2132, 3929, 4194, 859, 1062, 948, 859, -2293, 3594, 949, 1193, 2673, 859, 1109, 2138, 2685, 3659, 1118, 2686, 746, 5500, 1325, 5035, 859, 746, 746, 2687, 5221, 1125, 2686, 2342, 2850, 2851, 2852, 2853, 1136, 2722, 2316, 746, 2723, 3143, 5246, 821, 4507, 2345, 821, 1119, 2918, 3822, 3345, 1919, 1153, 755, 3623, 4260, 4261, 2967, -1743, -1743, 2138, 3607, 5486, 1143, 841, 859, 1325, 3930, 3833, -1742, -1742, 4500, 3931, 4194, 2346, 3074, 4195, -1716, 3075, 1998, 729, 51, -1716, 3238, 4985, 1184, 3501, 5538, 3146, 3504, 2858, 3147, 3505, 859, 3306, 3377, 2610, 3307, 2611, 2347, 3373, 2859, 1188, 3394, 3348, -2695, 5384, 5385, 3418, 4196, -2695, 2138, 3918, 1192, 3932, 5452, 29, 3459, 1195, 3510, 2686, 3497, 2138, 1325, 4197, 5136, 1845, 1198, 2211, 842, 3933, 746, 1200, 5141, 4198, 2342, 3992, 3519, 3993, 3527, 2138, 746, 2138, 3624, 1201, 3625, 4195, -2695, 3957, -1716, 859, 5403, 859, 3143, 859, 3143, 3550, 3551, 3552, 3553, 4199, 3554, 3555, 3556, 3557, 3558, 3559, 3528, 3529, 3645, 2138, 2138, 5471, 5472, 3563, 5552, 3645, 2138, 1205, 4196, 3576, 3645, 1202, 2138, 3645, 1178, 1179, 4894, 1209, 2641, 1952, 1210, 2344, 2761, 4197, 4133, -1716, 1211, 905, 3581, 2064, 1212, 3582, 3787, 4198, 843, 3788, 1213, 3645, 40, 893, 894, 895, 896, 1214, 897, 898, 899, 900, 901, 902, 3645, 4061, 3950, 1215, 3953, 1226, 3934, 746, 3543, 4199, 746, 746, 3544, 3545, 3546, 3792, 1220, 5075, 3793, 5585, 604, 3626, 1222, 3627, 44, 1060, 871, 1060, 1354, 871, 4200, 3941, 871, 3943, 5270, 1347, 3817, 3878, 1630, 3818, 3818, 859, 3660, 1355, 1350, 835, 1554, 4004, 2344, 1325, 4005, 1360, 4006, 4310, 1325, 4007, 1356, 4029, 4031, 1554, 4030, 2138, 4054, 1368, 2048, 1555, 48, 2049, 5553, -2695, 5554, -2695, -2695, -2695, 4127, 2761, 1373, 4128, 1555, 49, 1325, 1325, 1325, 1376, 4138, 1325, 4286, 4139, 4151, 4230, 835, 2138, 4231, 1325, 1325, 1325, 1325, 4430, 2055, 4431, 4200, 4235, 50, 1374, 4236, 2056, 1325, 4240, 1060, 1325, 2982, 1325, 1388, 4264, 4012, 1556, 2686, 5453, 4895, 4631, 1377, 4634, 844, 1325, 1325, 1403, 4490, 1325, 1556, 2686, 2057, 2345, 4549, 1404, 1407, 1974, 181, 4698, 4570, 4599, 4303, 2138, 2723, 4611, 1413, 907, 2138, 1325, 1419, 1325, 4655, 1325, 4665, 4671, 4678, 2982, 4672, 2686, 4679, 4821, 2346, 2686, 4822, 4327, 1454, 4069, 3645, 4853, 1480, -2695, 4030, 4819, 1325, -2329, 4210, 2071, 821, 2072, 2073, 2074, 2075, 2076, 2077, 3646, 1376, 2347, -1664, 3128, 1485, 4321, 1486, 4868, 4870, 746, 4869, 2138, 3629, 3630, 3631, 821, 1483, 1521, 1557, 835, 3596, 1525, 3597, 1325, 2345, 3548, 1526, -1676, 3152, 4281, 4877, 1557, 40, 2723, 1527, 1538, 4947, 2342, 1325, 4948, -1676, 5036, 3645, 1540, 2686, -1676, 3598, 181, 834, 1553, 3207, 5076, 3646, 2346, 5077, 5092, 3681, 2058, 2723, 3684, 5099, 2966, 2059, 5100, 2048, 1550, 1558, 2049, 44, 1559, 1575, 2050, 2051, 2052, 5109, 1589, 1590, 1919, 2347, 1558, 1606, 1616, 1559, 4076, 2412, 5115, 5117, 1617, 3978, 3978, 2053, 1620, -1676, 3549, 4424, 1625, 1626, 2412, 2055, 2062, 5128, 1731, 1325, 5129, 3143, 2056, 1729, 1732, 5172, 1952, 48, 5173, -1676, 5212, 2342, 1734, 2096, 2621, 1561, 5245, 4409, 5255, 5129, 49, 2723, 5256, 3643, 2629, 3582, 2630, 2057, 1561, 1737, 1741, 5257, 2634, 859, 2138, 859, 859, 859, 5268, 2640, 1387, 5269, 1389, 50, 2850, 2851, 2852, 2853, 1742, 2064, 5274, 3599, 5277, 1919, 1751, 3978, -1676, 3600, 51, 1563, 5295, 1750, 3601, 2686, 847, -1676, 181, 1754, 1757, 1760, 4414, 857, 1563, 1762, 857, 5301, 3643, 5307, 2723, 5308, 2723, 1564, 2723, 3645, 5311, 5312, 5313, 2138, 2138, 5314, 5341, 1768, 1771, 5342, 1564, 4594, 1773, 4099, 4100, 4101, 4102, 1566, 1764, 4107, 4108, 4109, 4110, 4111, 4112, 4113, 4114, 4115, 4116, 4117, 1566, 5391, 1782, 1783, 5392, 870, 870, 5395, 1787, 1788, 1919, 2801, 2801, -182, 5396, 5397, 2801, 2138, 2138, 1790, 870, 1791, 3660, 870, 2058, 2066, 1795, 3645, 5399, 2059, 5418, 2138, 1793, 5419, 5443, 821, 5473, 5444, 5485, 3978, 5512, 5122, 5550, 5129, 5563, 5551, 1796, 2138, 1832, 4160, 4161, 2060, 2061, 1811, 2801, 2801, 3645, 2772, 2773, 5565, 5583, 1818, 5566, 5392, 2789, 2790, 2062, 1825, 207, 3550, 3551, 3552, 3553, 1837, 3554, 3555, 3556, 3557, 3558, 3559, 1839, 5591, 4096, 870, 5566, 1838, 870, 870, 3602, -1676, 1094, 1845, 1841, 1848, 1849, 1851, 2830, 1865, 1879, 3603, 1867, 1880, 1883, 1884, 1891, 2063, 1895, 1897, 1898, 5422, 1900, 1902, 1907, 1908, 1910, 1915, 1094, 4126, 1918, 2064, 1921, 1922, 2065, 1924, 1949, 2067, 1979, 1986, -2695, -2695, -2695, 2071, 1988, 2072, 2073, 2074, 2075, 2076, 2077, 1989, 1995, 1996, 2005, 2083, 2003, 3168, 2004, 1325, 2085, 2006, 2007, 1226, 948, 1325, 3543, 1376, 949, 51, 3544, 3545, 3546, 3645, 859, 2009, 2010, 4172, 2011, 3143, 3143, 3329, 2012, 2081, 2013, 2014, 2015, 2017, 2018, 4148, 2019, 2020, 2021, 2022, 2023, 4350, 2024, 2026, 2027, 2028, 2029, 2030, 4795, 2031, 2102, 2032, 1728, 2033, 2116, 2141, 2086, 2126, 2096, 2143, 821, 821, 821, 1391, 1393, 2174, 2176, 2066, 2185, 2187, 2188, 2942, 2942, 2189, 2761, 2190, 2206, 821, 2208, 2207, 2209, 4462, 4463, 2211, 2212, 2213, 2214, 3169, 2215, 2216, 2217, 2223, 4002, 2242, 2248, 2254, 2279, 2283, 2285, 1952, 821, 2286, 4541, 4542, 4543, 4544, 4545, 2303, 2287, 1952, 821, 821, 2289, 2290, 2307, 821, 2309, 1226, 3143, 2308, 3543, 2321, 2332, 2336, 3544, 3545, 3546, 821, 2338, 2341, 2320, 3998, 2339, 746, 2342, 181, 2340, 2349, 2351, 2350, 3170, 2354, 4500, 4149, 2355, 1554, 2356, 2361, 2362, 2375, 2365, 2376, 2371, 2372, 2377, 3645, 2378, 2379, 4026, 2385, 2382, 2388, 2389, 2392, 1555, 2399, 2406, 2067, 2394, 2395, 2068, 2069, 2070, 2071, 2407, 2072, 2073, 2074, 2075, 2076, 2077, 2409, 1193, 2414, 2415, 3532, 1226, 1499, 3533, 3543, 2420, 4166, 3330, 3544, 3545, 3546, 859, 2421, 3171, 2426, 1999, 4653, 2449, 2425, 2430, 2432, 2427, 2433, 2438, 2439, 2450, 2490, 4601, 3548, 1556, 2457, 2451, 821, 2492, 2462, 2008, 2479, 2493, 4437, 2486, 5138, 2494, 2495, 3086, 3645, 821, 1736, 2499, 821, 2500, 3645, 2501, 2502, 2503, 2509, 857, 2510, 2511, 2512, 2513, 2519, 2520, 870, 2518, 2517, 870, 870, 2025, 2525, 2528, 1325, 1753, 2532, 4767, 629, 2529, 2546, 2557, 1325, 1325, 2537, 1325, 2561, 2038, 2562, 2565, 1761, 2581, 2570, 1325, 2584, 1325, 4546, 4305, 1325, 2587, 3549, 1572, 2543, 1325, 1325, 1325, 1325, 2588, 2597, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1557, 3172, 2607, 1325, 1325, 2609, 2613, 2625, 746, 2627, 2646, 2628, 2648, 1325, 2649, 2635, 746, 1325, 835, 746, 3548, 1325, 2636, 2601, 2650, 2637, 2604, 2639, 2618, 1325, 4650, 746, 1325, 2632, 1325, 3645, 2664, 835, 2619, 4840, 2633, 2638, 2651, 2665, 3331, 2699, 1325, 2707, 1558, 1325, 1325, 1559, 2720, 2733, 1325, 1325, 2766, 847, 847, 4170, 847, 1325, 2771, 2818, 2824, 3660, 2412, 2049, 821, 821, 821, 604, 2838, 2828, 3646, 4192, 2844, 2862, 2864, 4192, 4206, 4192, 4174, 4175, 4176, 4177, 1325, 2885, 3549, 3548, 3660, 2886, 2910, 3332, 2900, 2905, 2911, 842, 2937, 2936, 1561, 2908, 2909, 2938, 999, 2960, 2924, 185, 996, 2953, 2971, 997, 1325, 2939, 998, 2972, 2974, 3000, 3003, 4696, 3007, 3005, 3173, 3014, 3008, 3029, 2966, 3019, 1325, 3031, 3174, 3024, 3035, 3175, 3039, 4745, 4746, 3049, 4748, 3025, 3027, 3050, 3053, 3066, 1563, 3071, 4259, 1952, 1952, 1344, 2488, 3396, 1348, 3083, 3109, 3090, 3073, 3549, 3103, 3108, 3135, 3136, 3134, 3141, 3145, 1977, 1564, 859, 859, 859, 859, 3153, 1457, 3550, 3551, 3552, 3553, 3160, 3554, 3555, 3556, 3557, 3558, 3559, 3180, 3181, 1566, 3197, 3239, 3260, 3252, 4780, 3261, 3264, 843, 3279, 2316, 3284, 3643, 3285, 3286, 3643, 3292, 4738, 3321, 3320, 1458, 3297, 3273, 3335, 3337, 3308, 3339, 3350, 4315, 3341, 3359, 3353, 3367, 3362, 3368, 3370, 3371, 5142, 4706, 3369, 3375, 3382, 4580, 2413, 3378, 3383, 3386, 3380, 3387, 3405, 3406, 3410, 3412, 3408, 3426, 3428, 3409, 3414, 3419, 3421, 3436, 3424, 3422, 3423, 3425, 3429, 1872, 3437, 3438, 3449, 3451, 3452, 3458, 3456, 3461, 3462, 1487, 1919, 3474, 3463, 1459, 3464, 1488, 3465, 3466, 2734, 1916, 3643, 3660, 3476, 3477, 3478, 3485, 1881, 3488, 3550, 3551, 3552, 3553, 5176, 3554, 3555, 3556, 3557, 3558, 3559, 3493, 1190, 3502, 4362, 3495, 3499, 3507, 3500, 2048, 1460, 4797, 2049, 3523, 3503, 3524, 746, 4372, 3521, 1490, 3526, 3539, 4406, 4988, 2801, 2801, 2801, 2801, -2169, 3522, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 3397, 3525, 2055, 3530, 3531, 1461, 5166, 3535, 5168, -2695, 3538, 2138, 3578, 3595, 3562, 3605, 859, 4130, 3550, 3551, 3552, 3553, 3568, 3554, 3555, 3556, 3557, 3558, 3559, 821, 3575, 859, 1491, 1325, 2057, 3589, 3606, 3615, 3590, 1492, 821, 3620, 1493, 3656, 3647, 1463, 4453, 3616, 3669, 2801, 2801, 3, 4, 3618, 3662, 3671, 2316, 3619, 3622, 3673, 3689, 3682, 3675, 3695, 3700, 3702, 3657, 3703, 1494, 3707, 3711, 821, 3714, 3708, 3716, 3646, 3723, 1465, 3750, 3738, 3739, 3749, 3751, 3755, 3756, 3238, 3757, 857, 3761, 3758, 3772, 3773, 3775, 870, 4501, 3791, 870, 3783, 3796, 870, 3805, 4159, 1495, 3781, 821, 3819, 3821, 3782, 2488, 3823, 3825, 4511, 715, 1974, 3826, 1325, 1325, 3827, 35, 3834, 3832, 3835, 3398, 4989, 3867, 3836, 3837, 3851, 3852, 3853, 3854, 1468, 15, 5324, 5326, 3839, 3855, 3856, 3857, 1469, 5318, 3859, 3858, 5033, 3861, -2695, 3143, 2300, 3143, 3863, -2695, 3865, 3870, 4935, 3874, 821, 2364, 905, 3872, 1471, 2447, 3860, 3862, 3864, 3866, 1593, 20, 4990, 1472, 1497, 3890, 3876, 1473, 3877, 3883, 5098, 3886, 3887, 3893, 1498, 3897, 3888, 3652, 3898, 746, 3900, 3908, -2695, 1499, 3906, 1325, 3399, 4991, 3949, 3948, 3958, 3955, 3959, 3961, 3963, 1500, 3966, 3643, 3977, 1325, 3978, 4959, 3665, 3665, 4992, 3980, 3996, 4954, 4993, 3987, 3997, 4001, 4000, 3990, 4016, 4025, 4028, 4048, 4035, 4039, 4041, 1474, 4049, 4003, 4050, 3400, 4060, 4051, 4052, 4994, 1325, 4863, 4995, 1325, 4037, 2064, 1502, 1503, 4063, 4062, 4036, 1325, 1325, 4804, 4053, 603, 4055, 4996, 4064, 1998, 1325, 1325, 4073, 4074, 4840, 1325, 4085, 4075, 4077, 181, 4078, 1325, 4079, 4080, 1325, 1325, 1504, 4081, 5420, 1325, 4610, 3565, 3543, 4097, -2168, 1325, 821, 821, 821, 821, 3564, 4123, 4140, 4192, 4206, 4192, 4153, 1325, 4192, 4155, 4167, 4624, 4124, 4184, 4154, 3646, 4208, 4125, 603, 3646, 4212, 4132, 4173, -2597, 4229, 4639, 5108, 4158, 4224, 4185, 4218, 4193, 4227, 181, 4214, 4216, 4233, 5108, 4251, 4243, 907, 4272, 4280, 4287, 4274, -2695, 4288, 4275, 4290, 1325, 4293, 4291, 4295, 3681, 1505, 4997, 4298, 4297, 2966, 4654, 4656, 4313, 32, 4316, 4329, 4332, 4328, 4667, 4344, 4330, 4331, 4345, 4342, 755, 4343, 4346, 1325, 4356, 4359, 4374, 2801, 4347, 4383, 4380, 2491, 4358, 4375, 4400, 4399, 4402, 4304, 4415, 40, 4405, 4416, 4418, 3143, 3143, 4434, 5318, 1226, 2508, 4419, 3543, 5331, 4998, 4988, 3544, 3545, 3546, 4422, 4445, 4459, 2845, 4465, 2316, 5170, 4473, -2597, 2527, 4479, 4480, 2686, 4483, 4485, 4486, 4602, 4492, 44, 4508, 4710, 4502, 4509, 4519, 4524, 4525, 4527, 4529, 4530, 4539, 4528, 4547, 3643, 4532, 4551, -2695, 3643, 4535, 4553, 4701, 4559, 2071, 4572, 2072, 2073, 2074, 2075, 2076, 2077, 4709, 4566, 4567, 4583, -2170, 1226, 4576, 4586, 3543, -2597, 4587, 48, -2695, -2695, -2695, 716, 2608, 4627, 4635, 4577, 4588, 1325, -2597, 4620, 49, 4607, 4592, -2597, 4623, 2616, 4625, 4636, -2597, 4628, 4641, 4640, 4642, 4643, -2597, 4649, 4652, -2597, 1094, 4651, 5390, -2597, 4661, 50, 859, 4664, 4666, 4668, 4673, 4674, 2631, 4680, 4684, 4703, 4704, 4705, 4708, 4715, 717, 859, 4714, 5165, 4716, 4728, 4731, 4737, 4735, 4749, 4750, 4740, -2597, 4758, 181, 4741, 4764, 1060, 4759, 4757, 4768, 4771, 5090, 4772, 4777, 5275, 4778, 4781, 4786, 4787, 4794, 4796, -2597, 4792, 4793, 1325, 2660, 1094, 4800, 4802, 4810, 4813, 4818, 4823, 4829, 4825, 4830, 5293, 4832, 4834, 4836, 604, 4837, 4845, 4838, 4850, 4858, 2316, 4857, 4864, 4873, 4865, 4874, 4867, 4585, 4875, 1952, 4876, 4882, 4898, 4888, 5178, 4891, 4902, 4923, 4917, 4926, 4929, 746, -2597, 4920, 1325, -2597, 3548, 4939, 4941, 4944, 4949, -2597, 4950, 4951, 4956, 4981, 4962, 859, 4963, 3377, 5003, 4444, 4943, 5014, 4816, 3954, 5012, 4967, 5021, 905, 4972, 4973, 5039, 5040, 5290, 5047, 606, 5052, 4974, 5015, 5018, 4622, 5020, 2048, 5049, 5057, 2049, 5059, 5078, 5080, 2050, 2051, 2052, 821, 5094, 5082, 5081, 5097, 5101, 5107, 5111, 5114, 4960, 5118, 5120, 5126, -2597, 5145, 5137, 2053, 3660, 5122, 5147, 5160, 3549, 5148, 5154, 2055, 5192, 5200, 5194, 5207, 905, 5204, 2056, 5214, 5205, 5219, 4958, 5226, 5238, 5239, 5225, 2040, 5240, 5241, 1325, 5242, 5249, 5234, 5250, 2832, 2048, 5252, 5251, 2049, 5266, 5258, 5279, 2057, 5283, 5282, 5287, 5288, 4032, 1226, 5304, 5300, 3543, 5323, 5329, 760, 3544, 3545, 3546, 1325, 1325, 1060, 5330, 1325, 5335, 5337, 5002, 5340, 5344, 5347, 2055, 5544, 3549, 5348, 5368, 5369, 5371, -2695, 604, 5370, 5376, 4192, 5377, -2597, 5386, 3646, 5388, 5404, 4168, 5413, 3646, 5161, 5162, 3646, 604, 5415, 3238, 5406, 4904, 5421, 1325, 1325, 2057, 5333, 5423, 5334, 5431, -2597, 5432, -2597, -2597, 2048, 5430, 5464, 2049, 4921, 5469, 4259, 5267, 1325, 5450, 5476, 5483, 5488, 5493, 5502, 5521, 5496, 5523, 746, 4259, 907, 859, 5522, 859, 5544, 5531, 5533, 5537, 5556, 5555, 5559, 5560, 5558, 5584, 2055, -2597, 5573, 5574, -2597, -2597, -2597, -2695, 5544, 2058, 606, 5581, 5582, 5586, 2059, 5587, 2463, 3344, 1484, 606, 879, 2125, 1587, 1586, 4162, 1378, 3212, 606, 3654, 879, 606, 3767, 2057, 4319, 3133, 5416, 2060, 2061, 871, 907, 4312, 3299, 3251, 879, 3905, 5317, 5000, 5494, 4461, 5058, 4776, 2062, 5032, 3705, 3460, 5165, 3550, 3551, 3552, 3553, 3643, 3554, 3555, 3556, 3557, 3558, 3559, 3643, -2695, 5408, 4933, 5259, 3643, -2695, 5490, 3643, 5338, 5336, 5429, 5507, 3710, 4512, 871, 4491, 5298, 821, 4454, 3318, 5276, 3319, 2063, 3785, 5278, 3965, 5280, 4317, 1574, 4453, 4798, 3643, 821, 4478, 3034, 5038, 2064, 821, 3309, 3143, 3548, 3973, -2695, 5043, 3643, 5495, 2316, 5073, 3051, 5037, 5588, 5578, -2695, -2695, -2695, 3553, 5016, 3554, 3555, 3556, 3557, 3558, 3559, 821, 3911, 181, 4520, 4501, 5434, 4961, 5060, 5156, 2536, 4964, 5306, -2695, 762, 4548, 5132, 2977, -2695, 859, 821, 4259, 5549, 3696, 5247, 5071, 1971, 3084, 4521, 2606, 1060, 2603, 2727, 2064, 2728, 1137, 2652, 1061, 3873, 2614, 4348, 2729, 3969, 3249, 5455, 4373, 3549, 1325, 5572, 2222, 1325, 4533, 1325, 2914, 835, -2695, 1357, 4534, 603, 1379, 2923, 603, 2677, 4922, 2066, 4657, 5402, 4237, 3658, 2092, 3670, 1325, 2952, 2171, 2139, 2170, 2933, 1325, 4215, 5398, 5281, 3646, 4647, 4618, 2175, 4904, 2951, 2801, 4188, 4633, 4182, 1325, 5113, 2180, 5265, 5264, 4238, 4183, 5575, 5475, 5125, 5532, 5389, 2626, 5093, 4134, 4919, 5400, 2064, 5401, 2890, 3613, 1226, 3275, 3516, 3543, 3611, 2899, 0, 3544, 3545, 3546, 821, -2695, 1952, 0, 0, 0, 0, 0, 0, 0, 0, 603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 746, 0, 3643, 0, 1325, 0, 905, 0, 0, 1325, 1325, 0, 0, 0, 859, 859, 859, 859, 2067, 0, 0, 2068, 2069, 2070, 2071, 746, 2072, 2073, 2074, 2075, 2076, 2077, 746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 746, 0, 1325, 0, 0, 0, 0, -2695, 0, 604, 0, 0, 0, 0, 0, 0, 1554, 3643, 0, 0, 0, 0, 0, 2038, 0, 0, 5529, 5530, 0, 0, 0, 821, -2695, 0, 3646, 1555, 0, 0, 2071, 3304, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 3550, 3551, 3552, 3553, 5228, 3554, 3555, 3556, 3557, 3558, 3559, 0, 0, 0, 2048, 0, 0, 2049, 0, 0, 2038, 2050, 2051, 2052, 0, 0, 0, 1178, 1179, 0, 0, 0, 0, 0, 0, 0, 0, 1556, 4304, 0, 0, 1325, 0, 2845, 604, 2245, 0, 1325, 2055, 0, 0, 5273, 0, 0, 0, 2056, 0, 0, 1325, -2695, 3617, 0, 1325, 0, 1325, 2071, 1325, 2072, 2073, 2074, 2075, 2076, 2077, 4259, 0, 0, 3636, -2695, 5284, 0, 2057, 907, 0, 0, 5412, 879, 0, 0, 0, 0, 0, 879, 1325, 0, 0, 0, 0, 0, 5536, 0, 0, 4305, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 3643, 0, 0, 746, 0, 0, 0, 879, 0, 0, 0, 1557, 606, 0, 1952, 1952, 3636, 1108, 0, 0, 834, 606, 879, 0, 0, 0, 0, 2801, 606, 0, 879, 606, 3549, 0, 0, 0, 0, 0, 0, 0, 0, 0, 603, 1108, 879, 859, 5461, 5462, 0, 0, 0, 2801, 5352, 0, 879, 746, 1325, 0, 3643, 1558, 0, 0, 1559, 0, 0, 5364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2412, 2058, 0, 0, 4306, 3486, 2059, 0, 0, 0, 3643, 0, 0, 0, 1325, 1325, 1325, 0, 0, 0, 3238, 0, 3498, 1325, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 1325, 1561, 0, 5125, 3506, 0, 0, 0, 2966, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 871, 606, 606, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 859, 0, 0, 0, 0, 0, 0, 1952, 1563, 0, 0, 0, 2063, 0, 0, 0, 879, 0, 606, 0, 0, 0, 0, 0, 0, 0, 2064, 0, 0, 879, 1564, 0, 0, 2316, 0, 0, 0, -2599, 604, 0, 5435, 0, 0, 0, 1325, 3643, 0, 0, 0, 0, 1566, 0, 4307, 0, 4259, 4308, 0, 0, 0, 0, 871, 871, 1325, 0, 0, 0, 0, 5460, 0, 0, 185, 5457, 1325, 0, 5458, 0, 5273, 5459, 3550, 3551, 3552, 3553, 0, 3554, 3555, 3556, 3557, 3558, 3559, 0, 0, 0, 0, 0, 0, 0, 0, 859, 0, 0, 5520, 0, 0, 0, 0, 0, 0, 0, 0, 5589, 5590, 0, 0, 0, 0, 0, 2066, 0, 0, 2801, 603, 0, 0, 0, 603, 0, 0, 0, 5364, 859, 859, 0, -2599, 0, 4259, 0, 0, 606, 606, 1724, 0, 0, 0, 0, 0, 5460, 606, 0, 185, 5457, 746, 0, 5458, 1108, 0, 5459, 746, 606, 2342, 0, 746, 1325, 1325, 606, 0, 0, 606, 0, 0, 0, 0, 0, 1325, 0, 0, 0, 0, 1325, 1108, 0, 0, 3643, -2599, 0, 0, 0, 4725, 4726, 0, 0, 0, 4729, 4730, 1108, 0, -2599, 0, 0, 0, 0, -2599, 0, 0, 0, 0, -2599, 0, 1325, 0, 1487, 0, -2599, 0, 0, -2599, 1488, 2067, 1325, -2599, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 859, 0, 0, 4259, 0, 0, 606, 606, 606, 0, 0, 3721, 5273, 0, 5460, -2599, 604, 185, 5457, 0, 0, 5458, 0, 3643, 5459, 1490, 0, 0, 0, 3643, 3732, 0, 0, 0, 0, -2599, 0, 0, 871, 871, 0, 0, 0, 0, 0, 0, 1108, 0, 0, 0, 0, 0, 0, 2801, 2048, 0, 0, 2049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1491, 0, 0, -2599, 879, 0, -2599, 1492, 0, 2055, 1493, 0, -2599, 0, 0, 181, -2695, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 2048, 0, 606, 2049, -2615, 0, 1494, 0, 0, 0, 879, 2057, 0, 0, 0, 0, 3814, 0, 3816, 0, 0, 3643, 1487, 0, 0, 0, 0, 0, 1488, 0, 0, 0, 0, 0, 2055, 0, 4783, -2599, 879, 0, 1495, -2695, 0, 0, 0, 877, 0, 1108, 2048, 879, 0, 2049, 0, 0, 914, 2050, 2051, 2052, 0, 0, 0, 0, 0, 5474, 0, 879, 2057, 0, 936, 879, 1490, 0, 0, 0, 2053, 0, 0, 0, 4163, 0, 0, 606, 2055, 0, 0, 0, 0, 0, 0, 2056, 0, 0, 760, 0, 0, 0, 0, 0, 0, -2615, 0, 0, 0, 1593, 0, 0, 0, 1497, 0, 3869, 0, 0, 606, 0, 2057, 0, 0, 1498, 0, 0, -2599, 0, -2695, 0, 1491, 0, 1499, -2695, 0, 0, 0, 1492, 0, 4605, 1493, 0, 0, 0, 1500, 0, 606, 0, 606, 606, -2599, 606, -2599, -2599, 0, -2615, 3891, 0, 2801, 2801, 0, 0, 0, 0, 0, 0, 1494, 0, -2615, 0, -2695, 606, 0, -2615, 0, 0, 0, 0, -2615, 0, 0, 0, 1621, -2695, -2615, 1502, 1503, -2615, -2695, -2599, 0, -2615, -2599, -2599, -2599, 0, 0, 2038, 0, 879, 1495, 0, 0, 0, 0, 0, 0, 879, 879, 0, 0, 0, 603, 4181, 0, 1622, 4186, 0, 0, 603, -2615, 879, 0, 2064, 603, -2695, 0, 603, 4900, 0, 0, 2058, 746, 0, 0, 0, 2059, 0, 181, 0, -2615, 0, 0, 606, 2737, 0, 0, 606, 606, 0, 0, 603, 0, 0, 3084, 0, 0, 0, 2060, 2061, 0, 0, 606, 1593, 603, 0, 0, 1497, 1108, 0, 0, 0, 0, 2062, 1724, 0, 0, 1498, 2064, 0, 0, 0, 0, 1505, 0, 0, 1499, -2615, 0, 4027, -2615, 0, 2256, 2738, 0, 0, -2615, 2257, 1500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063, -2695, 0, 0, 0, 870, 0, 0, 0, 0, 0, 0, 0, 2739, 2064, 0, 0, 2065, 0, 0, 2258, 0, 0, 1108, 2280, 0, 0, 1502, 1503, 0, 0, 0, 0, 2259, 0, 0, 2740, 0, 0, -2615, 0, 0, 0, 0, 0, 0, 0, 2741, 2260, 870, 0, 2048, 0, 0, 2049, 0, -2695, 2281, 2050, 2051, 2052, 0, 0, 0, 1108, 0, 0, 0, 2742, 0, 0, 0, 0, 2743, 0, 0, 0, 2053, 0, 0, 0, 0, 0, 4086, 0, 2055, 0, 0, 0, 2261, 0, 0, 2056, 0, 760, 0, 0, 1108, 0, 0, 2262, -2695, 0, 0, 2066, 0, 0, 2071, 4098, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 2057, 603, 0, 0, 2263, -2615, 0, 2744, 1505, 2264, 0, 0, 0, 0, 0, 0, 0, 4122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2745, -2615, 0, -2615, -2615, 0, 0, 0, 0, 0, 0, -2695, 0, 0, 879, 0, 0, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 1977, 0, 0, 1017, 606, 606, 606, 0, 603, 1017, 0, 0, 0, 0, 0, -2615, 0, 0, -2615, -2615, -2615, 0, 1017, 0, 746, 0, 0, 0, 2265, 0, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 207, 2746, 0, 0, 2747, 0, 0, 3534, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 3636, 2266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2748, 0, 0, 2749, 0, 0, 0, 2060, 2061, 2750, 0, 0, 0, 0, 0, 0, 2751, 181, 0, 0, 0, 0, 2062, 207, 2267, 0, 0, 0, 0, 1108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2752, 1108, 0, 0, 5206, 0, 2753, 0, 0, 2754, 0, 2268, 0, 0, 1724, 0, 2063, 2269, 0, 1108, 0, 0, 0, 0, 2270, 0, 0, 2271, 2755, 603, 2064, 0, 0, 2065, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 2756, 0, 0, 0, 879, 2272, 0, 0, 0, 0, 0, 0, 2273, 0, 0, 0, 0, 0, 0, 0, 2274, 1108, 0, 0, 5315, 0, 0, 2275, 606, 0, 0, 606, 0, 603, 1108, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, 1108, 0, 0, 0, 0, 0, 2276, 0, 0, 0, 0, 0, 1108, 0, 0, 603, 0, 0, 0, 2066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 606, 0, 879, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 879, 606, 0, 0, 0, 0, 0, 673, 0, 0, 1108, 1108, 0, 879, 879, 0, 759, 0, 0, 0, 0, 0, 3636, 0, 0, 0, 3636, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 181, 0, 606, 0, 0, 606, 606, 0, 0, 0, 0, 0, 0, 0, 2067, 603, 0, 2068, 2069, 2070, 2071, 4464, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 1487, 0, 0, 3585, 0, 0, 1488, 0, 606, 0, 606, 0, 0, 0, 0, 606, 606, 0, 0, 1591, 0, 0, 606, 606, 606, 0, 0, 606, 0, 606, 0, 606, 606, 606, 606, 606, 606, 0, 606, 0, 606, 606, 0, 0, 606, 0, 0, 0, 1490, 0, 870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1108, 606, 606, 606, 606, 1724, 0, 0, 0, 606, 0, 0, 0, 606, 3396, 0, 606, 0, 0, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 0, 606, 0, 0, 0, 0, 1457, 0, 606, 0, 1592, 606, 1491, 5438, 0, 0, 2047, 0, 0, 1492, 0, 0, 1493, 2048, 0, 0, 2049, 0, 0, 603, 2050, 2051, 2052, 0, 0, 870, 870, 0, 0, 0, 1458, 0, 0, 0, 0, 0, 0, 0, 1494, 2053, 0, 0, 2054, 0, 879, 0, 0, 2055, 0, 0, 606, 0, 0, 0, 2056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, 0, 1495, 0, 606, 606, 0, 5542, 0, 2057, 0, 0, 0, 0, 0, 0, 0, 0, 1977, 0, 1459, 0, 0, 603, 0, 0, 0, 0, 0, 603, 879, 0, 0, 0, 0, 0, 0, 1108, 0, 0, 0, 1108, 1108, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 1724, 879, 1460, 0, 0, 879, 0, 181, 0, 0, 0, 0, 1593, 879, 0, 0, 1497, 0, 5542, 0, 0, 0, 0, 0, 0, 0, 1498, 0, 0, 0, 0, 879, 0, 3397, 606, 1499, 5542, 0, 1461, 0, 0, 0, 0, 0, 0, 0, 606, 1500, 0, 0, 1108, 0, 0, 606, 0, 0, 606, 606, 0, 0, 0, 0, 0, 0, 1108, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 879, 603, 1463, 0, 0, 0, 0, 4688, 0, 1594, 0, 0, 1502, 1503, 5577, 0, 0, 0, 2060, 2061, 879, 879, 0, 0, 0, 0, 0, 0, 0, 1108, 0, 0, 0, 2062, 1465, 0, 870, 870, 0, 0, 0, 0, 1595, 0, 0, 0, 0, 0, 4711, 0, 0, 1724, 879, 0, 0, 1724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3636, 0, 0, 0, 4727, 3636, 2063, 0, 3636, 35, 0, 0, 879, 1467, 1724, 0, 0, 0, 879, 0, 2064, 0, 1468, 2065, 0, 879, 0, 0, 0, 0, 1469, 0, 879, 0, 0, 879, 0, 0, 2300, 0, 0, 879, 0, 0, 1505, 0, 0, 0, 0, 0, 1471, 0, 0, 0, 0, 0, 0, 0, 0, 1472, 0, 879, 0, 1473, 0, 0, 0, 879, 0, 0, 0, 0, 879, 0, 4754, 1724, 0, 0, 0, 0, 0, 0, 3399, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 1724, 0, 0, 0, 0, 0, 879, 2066, 0, 0, 0, 0, 0, 0, 1474, 0, 0, 0, 3400, 0, 2048, 0, 0, 2049, 606, 606, 606, 2050, 2051, 2052, 606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 0, 0, 993, 0, 0, 0, 0, 2055, 0, 0, 0, 0, 0, 0, 2056, 606, 1108, 0, 0, 181, 0, 0, 0, 0, 0, 1724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2057, 0, 0, 0, 0, 0, 0, 4844, 0, 0, 0, 0, 0, 0, 0, 1059, 673, 0, 181, 0, 606, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1977, 0, 0, 1108, 1457, 0, 1108, 0, 0, 0, 0, 879, 0, 2461, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 0, 3636, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2038, 0, 1458, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1197, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1217, 0, 0, 2060, 2061, 0, 0, 0, 1328, 0, 0, 1337, 1059, 1343, 0, 0, 0, 2048, 2062, 1459, 2049, 0, 0, 0, 2050, 2051, 2052, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 0, 0, 1108, 0, 879, 0, 0, 2055, 0, 0, 1460, 0, 879, 2063, 2056, 0, 606, 0, 0, 1108, 0, 0, 606, 0, 0, 606, 0, 2064, 606, 0, 2065, 0, 0, 2048, 1108, 0, 2049, 0, 0, 2057, 2050, 2051, 2052, 0, 0, 606, 1461, 3636, 0, 0, 606, 0, 0, 0, 0, 0, 0, 181, 0, 2053, 0, 0, 2547, 2925, 0, 0, 0, 2055, 0, 0, 2564, 0, 0, 0, 2056, 0, 606, 606, 606, 0, 0, 606, 2461, 0, 0, 0, 1463, 0, 0, 606, 606, 606, 606, 0, 0, 0, 0, 1724, 0, 2057, 0, 0, 606, 1724, 0, 606, 0, 606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2066, 1465, 606, 606, 0, 0, 606, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 606, 0, 606, 2926, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 2645, 35, 0, 2299, 0, 1467, 0, 0, 1977, 0, 606, 0, 0, 0, 1468, 0, 0, 0, 0, 2060, 2061, 606, 1469, 0, 0, 0, 0, 2461, 0, 879, 2300, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 1471, 0, 0, 606, 0, 3869, 0, 0, 0, 1472, 2058, 0, 0, 1473, 0, 2059, 0, 2067, 606, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 2063, 606, 0, 0, 2827, 0, 2060, 2061, 0, 0, 0, 0, 0, 0, 2064, 0, 0, 2065, 0, 0, 1108, 2062, 0, 1108, 0, 1108, 0, 1977, 0, 0, 1108, 0, 1977, 1977, 0, 0, 1474, 0, 0, 0, 0, 0, 0, 0, 0, 879, 879, 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 1487, 0, 0, 0, 0, 0, 1488, 0, 0, 879, 0, 2064, 879, 0, 2065, 1059, 1108, 0, 0, 1591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1059, 0, 1108, 0, 0, 0, 0, 0, 2066, 0, 0, 0, 0, 0, 0, 1490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 1108, 0, 0, 0, 0, 0, 0, 1976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5248, 181, 0, 0, 0, 0, 0, 1059, 0, 0, 0, 1724, 1724, 1724, 0, 1592, 2066, 1491, 0, 0, 0, 0, 0, 0, 1492, 0, 0, 1493, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1108, 0, 1108, 0, 0, 0, 0, 0, 1494, 0, 879, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 2485, 0, 879, 0, 2927, 0, 0, 5519, 0, 0, 0, 2968, 0, 2043, 0, 1495, 0, 0, 0, 0, 0, 0, 2046, 0, 0, 0, 0, 0, 0, 2984, 0, 0, 0, 0, 0, 2988, 2090, 0, 0, 2991, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 1487, 1059, 0, 0, 2111, 2112, 1488, 3015, 1108, 1059, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 1489, 1593, 0, 0, 1059, 1497, 0, 0, 0, 0, 2048, 879, 0, 2049, 0, 1498, 606, 2050, 2051, 2052, 0, 0, 606, 0, 1499, 0, 0, 0, 0, 1490, 1108, 181, 0, 3069, 0, 0, 1500, 0, 0, 0, 0, 0, 0, 0, 2055, 0, 5394, 0, 0, 0, 0, 2056, 0, 1017, 0, 0, 0, 0, 1724, 1108, 0, 0, 0, 0, 0, 879, 0, 879, 0, 0, 0, 0, 0, 0, 3209, 0, 2057, 1502, 1503, 0, 879, 0, 879, 1491, 0, 3119, 0, 0, 0, 0, 1492, 0, 0, 1493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1724, 0, 0, 3210, 0, 0, 0, 3148, 0, 0, 0, 0, 0, 3157, 0, 1494, 0, 0, 0, 0, 3163, 0, 0, 0, 1108, 0, 0, 1017, 0, 0, 3177, 0, 0, 0, 0, 0, 3182, 0, 0, 0, 0, 0, 0, 0, 879, 1108, 0, 0, 0, 1495, 0, 0, 0, 0, 0, 0, 3195, 0, 0, 1108, 0, 0, 3198, 0, 0, 0, 2048, 3202, 0, 2049, 0, 1505, 0, 2050, 2051, 2052, 0, 0, 0, 0, 3219, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 2053, 3244, 0, 0, 0, 0, 0, 879, 2055, 0, 0, 0, 1017, 0, 2417, 2056, 0, 0, -2695, -2695, 1496, 2424, 0, 0, 1497, 879, 0, 0, 0, 0, 0, 0, 0, 2062, 1498, 0, 0, 0, 0, 0, 2057, 0, 0, 1499, 0, 0, 0, 879, 0, 0, 879, 0, 0, 0, 0, 1500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, -2695, 1108, 0, 0, 0, 0, 606, 606, 0, 606, 0, 0, 0, 0, 2064, 0, 0, 606, 0, 606, 0, 1501, 606, 0, 1502, 1503, 1108, 606, 606, 606, 606, 0, 0, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, 0, 0, 0, 606, 606, 0, 0, 0, 1108, 0, 1504, 0, 0, 606, 0, 0, 0, 606, 0, 1724, 0, 606, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 606, 0, 606, 2058, 1487, 0, 0, 0, 2059, 0, 1488, 0, 1108, 0, 606, 0, 0, 606, 606, 0, 0, 0, 606, 606, 0, 0, 0, 0, 2066, 606, 2060, 2061, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 606, 0, 0, 2062, 1505, 0, 0, 0, 0, 0, 1490, 0, 606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 2063, 2558, 0, 0, 0, 2563, 0, 0, 0, 0, 0, 0, 606, 0, 2064, 0, 0, 2065, 1108, 0, 0, 0, 1491, 0, 0, 3473, 0, 0, 0, 1492, 606, 0, 1493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3487, 2067, 0, 0, 2068, 2069, 2070, 2071, 3473, 2072, 2073, 2074, 2075, 2076, 2077, 1494, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2066, 0, 0, 0, 0, 0, 0, 1724, 0, 0, 0, 0, 1724, 1108, 1724, 0, 0, 0, 0, 0, 0, 1487, 0, 0, 0, 0, 0, 1488, 0, 0, 0, 0, 2048, 0, 0, 2049, 0, 1724, 1108, 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1496, 0, 2048, 0, 1497, 2049, 0, 2053, 1724, 2050, 2051, 2052, 0, 0, 1498, 2055, 0, 0, 1490, 0, 0, 0, 2056, 1499, 879, 0, 0, 879, 2053, 0, 0, 0, 0, 0, 0, 1500, 2055, 0, 0, 0, 0, 0, 0, 2056, 0, 0, 0, 2057, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 2785, 0, 0, 3907, 2057, 0, 0, 0, 1491, 2357, 0, 0, 1502, 1503, 0, 1492, 0, 0, 1493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, 0, 1864, 0, 0, 0, 0, 2358, 0, 1494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 879, 1882, 0, 1108, 0, 0, 0, 0, 0, 879, 0, 1893, 0, 0, 0, 1896, 606, 0, 0, 1899, 0, 1901, 1495, 0, 0, 0, 0, 1909, 879, 0, 0, 0, 0, 1917, 0, 0, 1920, 0, 2058, 0, 0, 0, 0, 2059, 0, 2907, 0, 0, 0, 0, 0, 1108, 0, 0, 1505, 1108, 606, 606, 0, 2058, 0, 0, 612, 0, 2059, 2060, 2061, 3717, 662, 612, 0, 0, 0, 0, 714, 0, 612, 0, 0, 0, 2062, 0, 612, 0, 765, 1593, 2060, 2061, 0, 1497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1498, 0, 2062, 0, 832, 832, 0, 879, 0, 1499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 1500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 2064, 0, 0, 2065, 0, 0, 0, 2063, 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, 0, 0, 0, 2064, 0, 0, 2065, 3079, 1059, 0, 1502, 1503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 3797, 606, 0, 0, 0, 0, 0, 0, 0, 606, 606, 0, 1108, 1504, 0, 0, 0, 0, 606, 606, 0, 0, 0, 606, 1108, 0, 0, 0, 0, 606, 0, 0, 606, 606, 0, 0, 0, 606, 0, 0, 0, 0, 0, 606, 0, 2066, 0, 0, 0, 0, 0, 1343, 0, 0, 0, 606, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 2066, 606, 0, 0, 0, 0, 0, 0, 866, 0, 0, 0, 0, 0, 0, 1505, 909, 0, 0, 911, 0, 0, 916, 917, 0, 920, 0, 923, 0, 0, 929, 606, 931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 3884, 0, 0, 0, 0, 1343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1108, 0, 0, 2067, 0, 1343, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 879, 0, 0, 4087, 0, 1724, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 1108, 4143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 1108, 0, 0, 0, 0, 0, 3247, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 2048, 0, 0, 2049, 0, 0, 0, 2050, 2051, 2052, 0, 0, 0, 0, 0, 879, 0, 0, 3278, 0, 0, 3278, 0, 3278, 0, 0, 2053, 3278, 0, 3278, 3278, 1487, 0, 0, 2055, 0, 0, 1488, 3278, 3278, 3278, 2056, 0, 0, 0, 0, 1108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2057, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 1490, 0, 0, 0, 0, 0, 0, 0, 0, 2461, 0, 0, 606, 0, 3354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4056, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 3385, 0, 0, 0, 0, 0, 4072, 0, 1491, 0, 0, 0, 1059, 0, 0, 1492, 0, 0, 1493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1108, 0, 1108, 1494, 0, 0, 0, 0, 0, 0, 0, 2058, 0, 1487, 0, 0, 2059, 0, 0, 1488, 0, 0, 0, 0, 0, 0, 0, 1059, 879, 0, 0, 0, 0, 0, 0, 0, 0, 1495, 2060, 2061, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 1108, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 1490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 606, 0, 0, 606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 606, 0, 0, 0, 0, 1593, 0, 606, 0, 1497, 0, 2064, 606, 0, 2065, 606, 606, 0, 1011, 1498, 1491, 0, 606, 606, 0, 1024, 1025, 1492, 1499, 1031, 1493, 1034, 1035, 0, 0, 0, 1037, 0, 0, 606, 1500, 606, 0, 0, 0, 0, 879, 1056, 879, 0, 0, 2048, 606, 0, 2049, 0, 1494, 0, 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 3254, 0, 0, 1502, 1503, 0, 0, 2055, 1133, 0, 1135, 0, 1495, 0, 2056, 0, 1108, 879, 0, 0, 1151, 0, 0, 2066, 0, 0, 0, 606, 2647, 0, 0, 0, 0, 3255, 0, 4282, 2654, 0, 0, 2057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 612, 0, 0, 0, 2666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1724, 0, 0, 0, 0, 606, 0, 0, 0, 1593, 858, 860, 0, 1497, 864, 0, 0, 0, 0, 0, 0, 0, 0, 1498, 0, 0, 0, 0, 0, 0, 0, 1059, 1499, 0, 922, 1505, 0, 0, 0, 0, 0, 932, 0, 0, 1500, 0, 0, 0, 0, 1487, 0, 0, 0, 0, 0, 1488, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 832, 0, 0, 606, 4253, 1108, 0, 0, 0, 0, 0, 3743, 0, 2058, 1502, 1503, 4388, 0, 2059, 4391, 0, 0, 0, 0, 0, 0, 1490, 0, 0, 606, 1108, 0, 606, 0, 606, 0, 1448, 0, 0, 0, 2060, 2061, 0, 0, 3744, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 2062, 0, 0, 0, 606, 0, 0, 0, 606, 0, 0, 0, 0, 0, 1108, 0, 0, 0, 606, 0, 0, 0, 0, 0, 1059, 1491, 0, 0, 0, 0, 0, 0, 1492, 0, 0, 1493, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2064, 0, 1624, 2065, 1505, 1724, 0, 0, 1494, 0, 0, 0, 0, 4475, 1108, 0, 0, 0, 0, 1108, 1108, 0, 0, 1735, 606, 0, 0, 2912, 0, 606, 606, 879, 2461, 0, 0, 1746, 0, 0, 0, 0, 1749, 0, 1495, 0, 0, 879, 0, 0, 0, 0, 1752, 0, 0, 0, 0, 1756, 0, 0, 0, 0, 0, 3790, 0, 0, 1759, 0, 0, 606, 0, 1766, 0, 0, 1770, 0, 606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2066, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, 1593, 0, 0, 0, 1497, 3473, 0, 0, 0, 1824, 0, 3831, 0, 0, 1498, 0, 0, 0, 0, 0, 0, 0, 0, 1499, 0, 1457, 0, 0, 0, 1108, 1108, 0, 0, 0, 0, 1500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 606, 0, 0, 606, 0, 0, 0, 1458, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 606, 0, 606, 3799, 606, 0, 1502, 1503, 0, 3871, 0, 606, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 606, 0, 0, 4568, 0, 0, 3800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1459, 0, 0, 0, 3278, 612, 1724, 612, 879, 612, 0, 612, 0, 612, 612, 612, 0, 0, 3904, 3904, 612, 0, 0, 0, 0, 0, 0, 0, 3920, 0, 0, 1972, 0, 0, 1059, 1460, 1059, 0, 0, 1002, 0, 1005, 0, 0, 0, 1008, 1985, 0, 0, 0, 0, 0, 0, 0, 0, 1505, 0, 0, 606, 1033, 0, 0, 0, 0, 0, 0, 1038, 606, 0, 0, 0, 1461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 606, 606, 0, 0, 0, 0, 0, 0, 606, 1724, 0, 0, 1108, 1462, 0, 0, 0, 1463, 606, 0, 0, 0, 4011, 1059, 0, 2048, 0, 879, 2049, 0, 0, 0, 2050, 2051, 2052, 0, 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, 0, 0, 1464, 1465, 0, 2053, 0, 879, 0, 0, 0, 0, 0, 2055, 0, 0, 0, 0, 4722, 0, 2056, 0, 0, 0, 0, 0, 2048, 0, 0, 2049, 4732, 0, 0, 2050, 2051, 2052, 0, 0, 0, 0, 1466, 0, 0, 0, 35, 2057, 0, 606, 1467, 0, 0, 0, 2053, 606, 0, 0, 0, 1468, 0, 0, 2055, 0, 0, 606, 0, 1469, 0, 2056, 0, 606, 606, 606, 832, 1470, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 1471, 0, 0, 0, 0, 0, 0, 2057, 0, 1472, 0, 0, 0, 1473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, 606, 0, 0, 0, 3411, 0, 0, 0, 0, 1474, 2278, 0, 3420, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 0, 1519, 1520, 0, 4146, 606, 606, 0, 0, 0, 3439, 0, 0, 0, 0, 0, 606, 0, 2060, 2061, 3445, 606, 0, 3446, 0, 3447, 3448, 0, 0, 3450, 1724, 0, 0, 2062, 0, 3454, 0, 3455, 2058, 0, 3457, 0, 0, 2059, 0, 0, 0, 2048, 0, 0, 2049, 606, 0, 0, 2050, 2051, 2052, 0, 0, 0, 2369, 606, 0, 0, 0, 2060, 2061, 0, 0, 0, 0, 0, 2063, 2053, 0, 0, 3473, 0, 0, 606, 2062, 2055, 0, 0, 0, 0, 2064, 0, 2056, 2065, 0, 0, 606, 0, 1724, 0, 872, 881, 0, 0, 0, 1755, 0, 3496, 872, 0, 881, 872, 0, 0, 0, 0, 1724, 2057, 606, 606, 0, 0, 0, 2063, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1777, 1778, 0, 2064, 0, 0, 2065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 2049, 0, 0, 2066, 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3473, 0, 3473, 0, 0, 0, 0, 2053, 0, 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, 0, 3920, 0, 2056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2066, 2058, 0, 0, 0, 0, 2059, 1888, 1890, 0, 0, 4354, 0, 2057, 0, 0, 0, 0, 0, 4365, 0, 0, 0, 0, 4366, 0, 4367, 0, 2060, 2061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 4408, 0, 4606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 2531, 3278, 0, 0, 0, 3278, 3278, 0, 3278, 0, 0, 0, 2064, 0, 0, 2065, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 4862, 0, 0, 0, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1457, 2060, 2061, 0, 0, 0, 0, 0, 3715, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 1457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1458, 0, 2066, 0, 0, 0, 0, 0, 4515, 0, 0, 3920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 1458, 0, 0, 2658, 0, 2659, 0, 0, 0, 0, 0, 2064, 0, 0, 2065, 0, 0, 0, 0, 0, 0, 0, 2670, 0, 2671, 0, 0, 0, 0, 0, 0, 0, 0, 3774, 0, 3776, 1459, 0, 612, 0, 612, 0, 612, 0, 612, 0, 612, 0, 0, 0, 612, 0, 0, 0, 0, 0, 0, 4556, 4556, 4556, 1459, 4556, 4556, 4556, 4556, 4556, 0, 0, 0, 0, 0, 1460, 0, 0, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 1460, 4872, 0, 0, 0, 881, 2066, 0, 0, 0, 0, 881, 1461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1461, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 1462, 0, 0, 0, 1463, 0, 872, 881, 0, 2298, 0, 0, 0, 872, 0, 881, 872, 0, 0, 0, 0, 0, 0, 0, 1462, 0, 0, 0, 1463, 881, 0, 3868, 0, 0, 2337, 1528, 1465, 3875, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4646, 0, 4648, 2067, 1545, 1465, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 1529, 0, 0, 4881, 35, 0, 0, 0, 1467, 0, 0, 0, 0, 0, 0, 0, 0, 1468, 0, 0, 0, 0, 0, 0, 1546, 1469, 0, 0, 35, 0, 0, 0, 1467, 1530, 0, 0, 0, 0, 2419, 0, 0, 1468, 0, 0, 0, 1471, 0, 0, 0, 1469, 0, 881, 0, 0, 1472, 0, 0, 1547, 1473, 0, 0, 0, 0, 0, 0, 2442, 2443, 2444, 2445, 1471, 0, 0, 0, 0, 0, 881, 2969, 2970, 1472, 0, 0, 0, 1473, 0, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 2985, 2986, 0, 0, 0, 2989, 2990, 0, 0, 0, 2993, 0, 0, 0, 0, 0, 0, 1474, 0, 2048, 0, 0, 2049, 0, 3004, 0, 2050, 2051, 2052, 0, 0, 3013, 0, 0, 0, 3016, 3017, 0, 0, 3020, 3021, 1474, 0, 0, 0, 2053, 3026, 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, 0, 0, 0, 2056, 3045, 0, 3047, 0, 0, 4038, 0, 4040, 3473, 4042, 0, 0, 0, 0, 0, 4752, 4753, 0, 4046, 0, 3070, 0, 0, 0, 2057, 3072, 0, 0, 3278, 0, 3278, 3278, 0, 0, 3278, 0, 0, 0, 0, 0, 3078, 0, 1726, 0, 0, 0, 0, 0, 0, 3085, 2497, 2498, 3089, 0, 3091, 3094, 3096, 0, 0, 4071, 872, 3104, 3107, 0, 0, 0, 872, 0, 0, 872, 2521, 3120, 0, 0, 0, 0, 3129, 0, 0, 0, 3132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3149, 4812, 0, 0, 0, 0, 3158, 3159, 2566, 2567, 2568, 2569, 0, 3164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3178, 3179, 0, 0, 0, 0, 3183, 0, 0, 0, 0, 0, 0, 0, 0, 2058, 4839, 0, 3190, 0, 2059, 3193, 0, 0, 0, 0, 3196, 0, 0, 0, 0, 0, 3199, 3200, 0, 0, 0, 0, 3204, 0, 0, 3208, 2060, 2061, 0, 3215, 3216, 3217, 3218, 0, 3220, 4556, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 3245, 3246, 2048, 3248, 0, 2049, 0, 0, 0, 2050, 2051, 2052, 0, 0, 3257, 3258, 3259, 0, 0, 0, -130, 0, 0, 0, 0, 0, 0, 0, 2053, 0, 0, 0, 0, 2063, 0, 881, 2055, 0, 0, 0, 2668, 0, 1, 2056, 0, 0, 2672, 2064, 0, 0, 2065, 0, 2, 881, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2057, 0, 5, 881, 0, 0, 0, 0, 0, 3312, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 9, 0, 0, 0, 0, 881, 10, 0, 11, 0, 0, 3349, 0, 0, 0, 0, 881, 0, 0, 12, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, 0, 0, 881, 0, 14, 0, 0, 15, 0, 2066, 0, 0, 0, 0, 0, 3920, 0, 0, 0, 0, 0, 16, 0, 17, 0, 0, 0, 18, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, 0, 0, 0, 0, 0, 0, 22, 2058, 0, 2842, 0, 0, 2059, 0, 0, 0, 3278, 0, 0, 0, 0, 0, 23, 0, 0, 5001, 0, 0, 0, 0, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 25, 26, 0, 881, 4884, 0, 27, 0, 0, 2063, 0, 881, 881, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 2064, 0, 881, 2065, 0, 0, 0, 0, 0, 2048, 0, 0, 2049, 29, 0, 0, 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3509, 0, 2053, 0, 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, 0, 0, 0, 2056, 0, 0, 0, 0, 1726, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 2057, 32, 33, 0, 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 2066, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 40, 0, 0, 3032, 3033, 0, 0, 41, 0, 0, 0, 42, 0, 0, 3046, 0, 3048, 0, 0, 0, 3052, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1059, 0, 0, 0, 5180, 0, 0, 0, 4538, 0, 0, 0, 4540, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 48, 0, 2058, 0, 0, 0, 2067, 2059, 0, 2068, 2069, 2070, 2071, 49, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 4931, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 51, 0, 0, -130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, 0, 0, 3189, 0, 0, 3192, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2064, 0, 0, 2065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3718, 0, 0, 0, 3720, 0, 0, 0, 0, 0, 3722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3733, 3735, 0, 1059, 0, 3735, 0, 5321, 0, 5322, 3746, 3747, 3748, 5327, 5328, 3281, 0, 0, 0, 0, 0, 0, 0, 3288, 0, 0, 3291, 0, 0, 0, 0, 0, 3293, 2048, 0, 0, 2049, 0, 0, 0, 2050, 2051, 2052, 3305, 2066, 0, 3777, 3778, 3779, 3780, 0, 4687, 0, 0, 0, 0, 0, 0, 0, 2053, 0, 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, 0, 0, 1726, 2056, 0, 0, 0, 0, 0, 0, 0, 0, 3798, 3351, 3802, 3803, 3804, 0, 0, 0, 0, 0, 0, 0, 4712, 4713, 881, 0, 2057, 0, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 3374, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 2048, 0, 4966, 2049, 0, 0, 0, 2050, 2051, 2052, 0, 3441, 0, 3443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 4755, 4756, 872, 872, 0, 881, 881, 2055, 0, 0, 0, 0, 3879, 0, 2056, 0, 0, 872, 0, 881, 872, 3885, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 881, 881, 0, 0, 0, 0, 0, 2057, 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, 2060, 2061, 3899, 0, 0, 0, 0, 0, 0, 0, 1059, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3942, 0, 0, 0, 0, 872, 0, 0, 872, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2064, 0, 0, 2065, 0, 0, 0, 0, 4852, 3979, 0, 0, 4854, 4855, 3985, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5543, 0, 0, 4859, 0, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1726, 2060, 2061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5543, 2066, 4043, 0, 4044, 880, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 5543, 0, 0, 0, 0, 0, 2063, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2064, 0, 0, 2065, 0, 0, 4068, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, 0, 881, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 5008, 0, 881, 0, 0, 0, 0, 1726, 881, 2066, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 3724, 0, 3725, 3726, 3727, 0, 0, 0, 0, 0, 0, 0, 0, 872, 0, 0, 872, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 881, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 5309, 5089, 0, 0, 0, 0, 0, 1726, 881, 0, 0, 1726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4270, 0, 4271, 0, 0, 884, 0, 0, 0, 4273, 0, 0, 0, 881, 0, 1726, 0, 919, 0, 881, 0, 0, 0, 0, 0, 4283, 881, 0, 938, 0, 0, 2048, 0, 881, 2049, 0, 881, 4289, 2050, 2051, 2052, 4292, 881, 0, 0, 0, 0, 0, 0, 0, 5134, 0, 0, 0, 0, 0, 0, 2053, 0, 4314, 0, 0, 881, 0, 0, 2055, 0, 0, 881, 0, 0, 0, 2056, 881, 0, 0, 1726, 4318, 0, 0, 0, 0, 4322, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2057, 0, 881, 0, 0, 0, 5171, 1726, 0, 0, 4357, 0, 0, 881, 4361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4368, 4369, 4370, 4371, 0, 0, 0, 0, 0, 4376, 4377, 4378, 4379, 0, 0, 0, 4381, 4382, 0, 0, 0, 3892, 4389, 4390, 0, 4392, 4393, 4394, 4395, 4396, 4397, 4398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4407, 0, 0, 0, 4410, 4411, 4412, 4413, 0, 0, 880, 0, 0, 0, 1726, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 3735, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 2058, 0, 0, 4436, 0, 2059, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 880, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 2049, 0, 0, 0, 2050, 2051, 2052, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 2064, 0, 0, 2065, 0, 0, 0, 2055, 3735, 0, 881, 0, 0, 0, 2056, 4047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 2057, 0, 0, 0, 0, 0, 4550, 0, 0, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, 0, 880, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 872, 0, 2066, 872, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 952, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 0, 0, 0, 0, 1726, 0, 0, 0, 0, 0, 1726, 0, 0, 0, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 0, 1725, 0, 0, 0, 0, 0, 0, 2067, 0, 2062, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 5332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2064, 0, 0, 2065, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4691, 0, 0, 0, 4692, 4693, 4694, 4695, 0, 0, 0, 4697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4276, 4277, 4278, 4279, 0, 0, 0, 0, 0, 0, 0, 0, 1332, 0, 0, 0, 0, 0, 0, 0, 0, 4717, 4718, 4719, 4720, 4721, 2048, 4723, 4724, 2049, 0, 1359, 0, 2050, 2051, 2052, 0, 0, 0, 4733, 4734, 0, 0, 0, 0, 0, 0, 0, 2066, 0, 0, 0, 2053, 1383, 0, 881, 881, 0, 0, 0, 2055, 0, 0, 0, 0, 0, 0, 2056, 0, 0, 0, 4739, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, 0, 881, 0, 0, 0, 0, 880, 0, 2057, 0, 0, 0, 0, 0, 0, 1518, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 880, 0, 0, 5437, 880, 0, 1726, 1726, 1726, 0, 0, 0, 4803, 0, 0, 0, 0, 0, 4432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, 0, 4435, 0, 0, 0, 0, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1775, 0, 0, 0, 2060, 2061, 881, 0, 0, 4856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1813, 1816, 1817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 2064, 880, 880, 2065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 2049, 0, 612, 0, 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1726, 1725, 0, 0, 2053, 0, 0, 881, 0, 881, 0, 0, 2055, 0, 0, 0, 0, 0, 0, 2056, 0, 0, 881, 2066, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1332, 0, 0, 0, 0, 0, 0, 0, 2057, 0, 1726, 4955, 0, 0, 0, 0, 2048, 0, 1984, 2049, 0, 0, 0, 2050, 2051, 2052, 0, 1332, 0, 0, 4965, 0, 0, 0, 0, 4970, 4971, 0, 0, 0, 0, 0, 2053, 0, 0, 4982, 0, 0, 0, 0, 2055, 0, 4984, 0, 881, 0, 0, 2056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2057, 0, 0, 0, 0, 2067, 5034, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 5506, 0, 0, 5051, 881, 5053, 0, 0, 0, 0, 0, 0, 0, 0, 2058, 0, 0, 0, 0, 2059, 5067, 0, 881, 0, 0, 0, 2048, 0, 0, 2049, 0, 0, 0, 2050, 2051, 2052, 0, 0, 0, 0, 3735, 2060, 2061, 0, 881, 0, 0, 881, 5088, 0, 0, 0, 2053, 0, 0, 0, 2062, 880, 0, 0, 2055, 0, 0, 0, 0, 2127, 0, 2056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2058, 0, 0, 0, 2057, 2059, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2064, 0, 2182, 2065, 5127, 0, 2060, 2061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 1726, 0, 5144, 0, 0, 0, 0, 0, 1308, 1308, 0, 0, 0, 0, 5152, 0, 0, 0, 0, 4747, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4751, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3564, 0, 0, 0, 2064, 3565, 0, 2065, 0, 0, 0, 0, 0, 0, 2310, 0, 0, 0, 0, 0, 2066, 1107, 0, 2333, 2058, 0, 1725, 0, 0, 2059, 0, 0, 5211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 880, 2060, 2061, 0, 0, 2370, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 2393, 0, 4817, 2396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2066, 0, 3735, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 881, 1637, 1641, 0, 0, 0, 0, 0, 2064, 2067, 0, 2065, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 2446, 0, 0, 0, 5562, 0, 0, 0, 0, 0, 0, 880, 880, 0, 2465, 0, 0, 0, 0, 0, 0, 0, 5297, 0, 0, 880, 0, 1726, 0, 0, 0, 0, 1726, 0, 1726, 0, 0, 5310, 880, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 1726, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 2066, 0, 0, 5576, 1726, 0, 5339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 5350, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2489, 0, 4936, 0, 4937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 2067, 2540, 5411, 2068, 2069, 2070, 2071, 1725, 2072, 2073, 2074, 2075, 2076, 2077, 0, 881, 881, 0, 0, 0, 1107, 0, 0, 0, 0, 881, 0, 0, 0, 0, 2583, 2048, 0, 0, 2049, 1107, 0, 2596, 2050, 2051, 2052, 0, 0, 0, 881, 0, 5433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 0, 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, 0, 0, 0, 2056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 2001, 0, 0, 0, 0, 0, 0, 0, 0, 2057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5072, 0, 0, 0, 0, 2016, 1107, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5499, 0, 0, 0, 0, 0, 0, 880, 0, 2675, 0, 0, 0, 2034, 0, 2036, 2037, 0, 2039, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 1725, 880, 0, 0, 0, 880, 0, 0, 2084, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 1332, 1332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 2726, 0, 0, 0, 0, 0, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 880, 0, 0, 0, 2149, 0, 0, 0, 2161, 2166, 2062, 0, 0, 0, 0, 0, 5167, 0, 5169, 0, 880, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 2049, 0, 0, 0, 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 1725, 880, 0, 0, 1725, 0, 2053, 0, 0, 0, 0, 0, 2064, 2898, 2055, 2065, 0, 0, 0, 0, 0, 2056, 0, 0, 2904, 0, 0, 880, 0, 1725, 0, 0, 0, 880, 0, 0, 0, 0, 0, 4135, 880, 0, 0, 0, 0, 0, 2057, 880, 0, 0, 880, 0, 0, 0, 0, 0, 880, 0, 0, 1383, 0, 0, 0, 881, 0, 0, 0, 0, 1726, 0, 1383, 1383, 0, 1106, 0, 0, 880, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 880, 0, 0, 1725, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 880, 0, 2066, 881, 1332, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 881, 0, 0, 1725, 4136, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 5467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 0, 0, 0, 0, 0, 0, 2205, 0, 0, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 0, 1725, 0, 0, 0, 0, 0, 1637, 1637, 1637, 2062, 0, 5346, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 0, 2205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 881, 0, 3088, 0, 0, 0, 2064, 0, 0, 2065, 0, 0, 0, 0, 0, 0, 1107, 3110, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 5468, 0, 0, 0, 0, 0, 0, 3137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 0, 0, 0, 5417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 3213, 3214, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 1640, 1640, 1640, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 2048, 880, 1106, 2049, 0, 0, 5492, 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 0, 0, 3518, 0, 0, 0, 0, 2055, 0, 0, 0, 5508, 5508, 0, 2056, 0, 0, 0, 881, 0, 881, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 2057, 0, 0, 0, 0, 0, 0, 3338, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 1725, 1106, 0, 0, 0, 0, 1725, 0, 881, 0, 0, 0, 1107, 2048, 0, 0, 2049, 0, 872, 0, 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 0, 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, 0, 0, 0, 2056, 5508, 0, 1726, 0, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2057, 0, 0, 0, 0, 0, 0, 1107, 0, 2769, 0, 880, 2058, 0, 0, 0, 0, 2059, 0, 0, 1107, 2791, 0, 2792, 0, 2794, 0, 0, 2806, 2809, 2814, 0, 1106, 1107, 0, 2820, 1097, 0, 2825, 2060, 2061, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 2833, 2834, 2835, 2836, 0, 0, 1097, 0, 2843, 0, 0, 0, 2861, 0, 0, 2863, 0, 0, 2870, 2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 0, 2880, 0, 0, 0, 1107, 1107, 0, 1308, 2063, 0, 1637, 0, 0, 0, 0, 880, 880, 0, 0, 0, 0, 0, 2064, 0, 0, 2065, 2058, 0, 0, 0, 0, 2059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 0, 2917, 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, 1726, 0, 2048, 0, 0, 2049, 2036, 2037, 0, 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 2110, 0, 0, 0, 0, 0, 0, 881, 0, 2053, 1099, 2063, 3569, 0, 0, 0, 2066, 2055, 0, 0, 0, 881, 0, 0, 2056, 2064, 0, 0, 2065, 0, 0, 0, 0, 1725, 1725, 1725, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3536, 0, 0, 2057, 1107, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 3018, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 3628, 0, 0, 0, 0, 0, 0, 0, 0, 1640, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 1383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2066, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 1106, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2058, 0, 0, 1097, 0, 2059, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 1097, 0, 0, 0, 880, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 0, 0, 0, 0, 2973, 0, 0, 0, 2205, 2979, 2062, 0, 0, 0, 1726, 1106, 881, 0, 0, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 1725, 0, 0, 0, 0, 0, 0, 880, 0, 880, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 880, 0, 2064, 0, 0, 2065, 0, 0, 0, 1107, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1725, 1107, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1726, 0, 3269, 3270, 1637, 0, 0, 1100, 3274, 0, 0, 0, 0, 0, 1107, 1099, 880, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 872, 0, 0, 0, 0, 0, 0, 3820, 0, 3303, 0, 2066, 0, 881, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1097, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 872, 872, 0, 0, 0, 880, 0, 0, 880, 1099, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 881, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 1640, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1725, 0, 1106, 0, 0, 0, 3945, 3946, 3947, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 1107, 0, 0, 0, 0, 3956, 0, 0, 1099, 0, 0, 2048, 0, 0, 2049, 1726, 0, 0, 2050, 2051, 2052, 0, 0, 0, 0, 0, 0, 0, 3972, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 3982, 3984, 1106, 1106, 0, 3989, 0, 2055, 0, 1100, 0, 0, 0, 0, 2056, 0, 0, 2048, 0, 0, 2049, 0, 0, 0, 2050, 2051, 2052, 0, 0, 0, 1097, 0, 0, 3514, 1100, 0, 0, 0, 3520, 2057, 0, 1726, 0, 2053, 2205, 0, 0, 2205, 0, 1100, 0, 2055, 0, 0, 0, 0, 0, 0, 2056, 1726, 0, 872, 872, 0, 0, 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2814, 0, 2814, 2814, 0, 0, 2057, 0, 0, 0, 0, 0, 0, 3583, 0, 0, 3586, 0, 3588, 0, 1097, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4067, 0, 0, 1332, 0, 0, 0, 0, 0, 0, 0, 3609, 0, 3612, 1100, 3614, 0, 0, 1097, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 2058, 0, 1725, 0, 0, 2059, 0, 1725, 0, 1725, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 1097, 0, 0, 0, 3574, 0, 2060, 2061, 0, 0, 0, 1725, 1107, 0, 1099, 0, 0, 0, 0, 0, 2149, 2062, 0, 2058, 0, 0, 0, 1107, 2059, 0, 0, 0, 0, 1725, 0, 2166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 2060, 2061, 880, 0, 0, 0, 0, 0, 0, 0, 2063, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 1100, 2064, 0, 0, 2065, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 4178, 4179, 4180, 0, 0, 0, 0, 0, 0, 0, 0, 3704, 0, 0, 0, 0, 2063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2064, 1106, 0, 2065, 1099, 1106, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 880, 0, 0, 0, 0, 0, 0, 0, 0, 880, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 2066, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4083, 1097, 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 2066, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 2205, 0, 0, 2979, 0, 2979, 0, 880, 0, 0, 2205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 1097, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 2067, 1097, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 1107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2205, 0, 0, 0, 0, 1099, 1097, 1097, 1100, 2048, 0, 0, 2049, 0, 1637, 0, 2050, 2051, 2052, 0, 1637, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2048, 4433, 2053, 2049, 0, 3580, 0, 2050, 2051, 2052, 2055, 0, 4446, 0, 0, 0, 1100, 2056, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 0, 0, 4142, 0, 0, 0, 0, 2055, 0, 0, 1107, 0, 1107, 0, 2056, 2057, 4477, 0, 0, 1099, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 1106, 0, 0, 2057, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 2596, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 1725, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2675, 1099, 1099, 1107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 1106, 0, 0, 1106, 0, 0, 0, 0, 2058, 0, 880, 0, 1640, 2059, 0, 0, 0, 0, 1640, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 0, 2058, 0, 0, 2060, 2061, 2059, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 2979, 0, 0, 0, 2060, 2061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 4084, 0, 0, 2063, 0, 0, 0, 0, 4088, 4089, 0, 4090, 0, 0, 0, 1100, 0, 2064, 0, 4092, 2065, 4093, 4613, 4614, 4615, 4616, 0, 2063, 0, 0, 1097, 0, 0, 1100, 1097, 1097, 1106, 0, 1107, 1099, 0, 2064, 0, 0, 2065, 0, 0, 0, 0, 4118, 4119, 0, 0, 1106, 0, 880, 0, 0, 0, 2979, 0, 0, 0, 0, 0, 0, 0, 2820, 1106, 0, 0, 0, 0, 1107, 0, 4147, 0, 0, 4150, 0, 4152, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 4157, 0, 0, 0, 1097, 0, 0, 0, 4164, 4165, 1100, 0, 0, 0, 0, 2066, 0, 0, 1097, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 2066, 4211, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 1100, 0, 4239, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 1099, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 880, 0, 880, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 1107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 1106, 0, 1106, 0, 0, 0, 0, 1106, 0, 880, 0, 0, 1103, 0, 1102, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 1487, 0, 0, 0, 0, 0, 1488, 0, 1103, 0, 0, 0, 0, 1554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 1725, 0, 0, 0, 1555, 0, 0, 0, 1097, 0, 2205, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 1490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1491, 0, 0, 0, 0, 0, 0, 1492, 0, 0, 1493, 0, 0, 0, 0, 0, 1097, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2979, 1494, 0, 1106, 1100, 1106, 0, 0, 1100, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 2049, 0, 0, 2979, 2050, 2051, 2052, 0, 0, 0, 1557, 0, 0, 1495, 0, 0, 4522, 4523, 0, 0, 0, 0, 0, 2053, 0, 0, 0, 0, 0, 0, 0, 2055, 1099, 0, 0, 0, 0, 0, 2056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 1725, 0, 0, 0, 0, 1558, 0, 0, 1559, 1100, 2057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 1560, 0, 0, 880, 1497, 1097, 1102, 0, 0, 0, 0, 0, 0, 0, 1498, 4565, 0, 880, 0, 0, 0, 0, 1097, 1499, 0, 0, 0, 1100, 0, 4571, 1103, 1102, 0, 0, 1561, 1500, 0, 1097, 1099, 1106, 0, 1099, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 5006, 1106, 0, 1103, 4589, 4591, 1562, 0, 0, 1502, 1503, 1563, 0, 4595, 4596, 5019, 0, 0, 4597, 0, 1332, 0, 0, 0, 4600, 0, 0, 4603, 4604, 0, 0, 2058, 4608, 1564, 0, 0, 2059, 0, 4612, 1565, 0, 0, 0, 0, 2979, 0, 5056, 0, 2205, 0, 0, 0, 0, 1566, 0, 0, 0, 0, 2060, 2061, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 1106, 0, 0, 2062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 1106, 1308, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 1505, 0, 0, 1099, 0, 2063, 0, 0, 0, 0, 0, 0, 4670, 0, 0, 0, 0, 0, 1099, 2064, 0, 0, 2065, 0, 0, 0, 0, 0, 1725, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 5140, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 1097, 1105, 0, 1097, 0, 1097, 0, 0, 1107, 0, 1097, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 1105, 0, 2066, 0, 0, 0, 0, 0, 0, 4736, 0, 0, 0, 0, 0, 0, 0, 0, 1725, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 1097, 0, 1100, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 1097, 0, 5218, 0, 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 1106, 4774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 2067, 0, 0, 2068, 2069, 2070, 2071, 0, 2072, 2073, 2074, 2075, 2076, 2077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 1099, 0, 1099, 0, 0, 0, 0, 1099, 0, 1107, 0, 0, 0, 0, 0, 1097, 0, 1097, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 880, 0, 0, 1100, 0, 0, 0, 1106, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 1107, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 1725, 623, 4878, 4879, 0, 0, 4880, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 624, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 1097, 0, 1105, 1102, 0, 0, 0, 0, 0, 0, 0, 625, 0, 4915, 4916, 0, 0, 1105, 1106, 0, 0, 1099, 0, 1099, 626, 0, 0, 1103, 0, 1097, 0, 0, 4927, 0, 1725, 627, 1102, 0, 0, -870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1725, 0, 0, 0, 0, 628, 0, 0, 1103, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 4843, 0, 1107, 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 631, 0, 0, 0, 0, 0, 0, 1097, 0, 632, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 633, 0, 1099, 0, 0, 0, 0, 1097, 634, 0, 1100, 1107, 635, 1100, 0, 1100, 0, 0, 0, 0, 1100, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1106, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 636, 1100, 0, 0, 1099, 0, 0, 0, 0, -587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 1106, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 637, 0, 0, 638, 1102, 0, 0, 0, 0, 2820, 1097, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 639, 1099, 0, 0, 0, 1103, 0, 0, 0, 2979, 0, 0, 1097, 5110, 640, 0, 0, 0, 0, 0, 0, -458, 1099, 1103, 0, 0, 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 1097, 0, 641, 0, 0, 1100, 0, 1100, 0, 0, 0, 642, 0, 0, 0, 0, 0, 1102, -458, 0, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 644, 1103, 0, 1102, 0, 0, 0, 645, 5159, 0, 0, 1106, 0, -458, 1103, 1102, 646, 647, 0, 648, 649, 0, 0, 1106, 0, 0, 0, 1103, 0, 0, 650, 0, 0, 0, 0, 651, 0, 0, 0, 1103, 0, 0, 652, 0, 0, 653, 0, 0, 654, 0, 0, 5196, 0, 0, 0, 0, 0, 2979, 1100, 1102, 1102, -458, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 1103, 1103, 0, 1097, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 192, 1107, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 194, 0, 0, 0, 0, 0, 195, 0, 0, 0, 4915, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1107, 0, 196, 0, 0, 1107, 1107, 0, 1106, 0, 0, 1097, 0, 197, 0, 5299, 0, 0, 0, 0, 0, 0, 198, 1100, 0, 0, 0, 1102, 0, 0, 1106, 1105, 0, 0, 199, 0, 1097, 0, 0, 200, 0, 0, 0, 0, 1100, 0, 201, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 1105, 202, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, 0, 5353, 0, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 4843, 1107, 0, 0, 0, 0, 0, 5381, 5381, 5381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4915, 0, 0, 0, 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 1099, 0, 0, 0, 0, 0, 1097, 1102, 206, 0, 0, 1102, 1102, 0, 0, 0, 0, 0, 207, 208, 0, 0, 209, 1100, 0, 1099, 0, 1487, 0, 0, 0, 1103, 0, 1488, 0, 1103, 1103, 0, 0, 0, 1554, 0, 0, 0, 0, 0, 0, 0, 210, 1100, 0, 211, 0, 0, 1097, 212, 1106, 213, 1097, 1555, 0, 5442, 0, 0, 214, 0, 0, 215, 0, 0, 0, 0, 0, 1102, 0, 1490, 0, 0, 1105, 5381, 0, 0, 0, 0, 0, 1100, 216, 1102, 0, 0, 0, 0, 0, 217, 0, 1105, 0, 1103, 218, 219, 0, 0, 220, 0, 0, 1106, 221, 0, 0, 1556, 0, 1103, 0, 1105, 0, 0, 222, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 1102, 1491, 0, 0, 0, 0, 224, 0, 1492, 0, 0, 1493, 0, 0, 0, 0, 0, 0, 0, 225, 0, 0, 1107, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 1494, 0, 0, 0, 1105, 0, 0, 0, 0, 674, 1100, 0, 0, 0, 675, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 5534, 0, 0, 0, 1097, 0, 1105, 1557, 0, 0, 1495, 0, 0, 0, 0, 0, 1097, 0, 1105, 0, 1099, 0, 0, 0, 1099, 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5381, 0, 0, 677, 0, 0, 0, 0, 0, 0, 5561, 0, 0, 0, 0, 0, 0, 0, 678, 1106, 1558, 0, 0, 1559, 0, 0, 0, 1105, 1105, 0, 0, 0, 0, 0, 0, 0, 679, 0, 1560, 0, 0, 0, 1497, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 1498, 0, 0, 0, 0, 0, 0, 680, 0, 1499, 0, 0, 0, 0, 0, 0, 0, 0, 681, 0, 1561, 1500, 0, 1100, 0, 0, 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 683, 0, 0, 0, 0, 684, 0, 0, 1097, 0, 0, 0, 685, 0, 0, 0, 1102, 0, 0, 0, 3184, 0, 0, 1502, 1503, 1563, 0, 0, 0, 0, 0, 686, 0, 1099, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 1099, 0, 1564, 0, 1097, 0, 0, 0, 3185, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1566, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 687, 1105, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 688, 1106, 0, 1100, 1505, 1103, 0, 0, 1103, 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, 0, 0, 0, 0, 690, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 207, 691, 0, 0, 692, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 1100, 0, 0, 1106, 1100, 0, 0, 0, 1106, 1106, 0, 0, 693, 0, 0, 694, 0, 0, 0, 695, 0, 696, 0, 0, 0, 0, 0, 0, 697, 0, 0, 698, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 699, 0, 1102, 0, 0, 0, 1105, 700, 1099, 0, 1105, 1105, 0, 701, 0, 0, 702, 0, 0, 1102, 703, 0, 0, 0, 0, 0, 1103, 0, 704, 0, 705, 0, 0, 0, 1102, 706, 0, 0, 0, 0, 0, 0, 0, 1103, 955, 1097, 0, 0, 707, 956, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 1106, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 957, 0, 1105, 0, 0, 1100, 0, 0, 0, 0, 1097, 0, 0, 958, 959, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 960, 0, 0, 0, 961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 963, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 964, 0, 0, 0, 0, 0, 0, 0, 0, 965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 966, 0, 0, 0, 0, 967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 968, 0, 0, 1100, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 969, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 1102, 0, 0, 1102, 0, 1102, 0, 0, 0, 1100, 1102, 970, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 1103, 0, 0, 1103, 0, 1103, 0, 1100, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 971, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 972, 0, 0, 0, 1102, 1105, 0, 0, 0, 1103, 207, 973, 0, 0, 974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 1103, 1102, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 975, 0, 0, 976, 0, 0, 0, 977, 0, 978, 0, 0, 0, 1103, 0, 0, 979, 0, 1097, 980, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 981, 0, 0, 0, 0, 0, 0, 982, 0, 1105, 0, 0, 1105, 983, 0, 0, 984, 0, 0, 1097, 985, 1102, 0, 1102, 0, 0, 0, 0, 986, 0, 987, 0, 0, 0, 0, 988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 1097, 0, 0, 0, 0, 1097, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 1099, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 1099, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 1105, 1100, 1105, 0, 0, 1097, 0, 1105, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 1103, 0, 1102, 0, 0, 1100, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 1103, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 1105, 2079, 0, 2079, 2079, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 1103, 1100, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 1103, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 1103, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 2079, 2079, 0, 2079, 0, 0, 2802, 2802, 0, 3560, 0, 2802, 0, 0, 0, 2079, 0, 0, 2079, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 1102, 0, 2079, 2079, 2079, 2079, 0, 0, 0, 2802, 2802, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 2079, 0, 2079, 0, 0, 0, 0, 0, 0, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 2079, 2079, 1105, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 1102, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 1102, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 1103, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 3560, 3560, 0, 0, 2802, 2802, 2802, 2802, 0, 0, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 3560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 2079, 0, 2079, 0, 0, 3560, 3560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 2802, 2802, 2079, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 1105, 1105, 0, 0, 0, 0, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 2079, 2079, 2079, 0, 2079, 2079, 0, 0, 0, 0, 0, 3560, 3560, 3560, 3560, 0, 0, 0, 0, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 2079, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 2079, 0, 2079, 0, 0, 0, 0, 2079, 0, 0, 3560, 3560, 0, 0, 2079, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 2079, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 2079, 0, 0, 0, 2079, 2079, 2079, 0, 0, 2079, 0, 0, 2079, 2079, 0, 0, 0, 2079, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3560, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 2079, 2079, 0, 0, 0, 0, 0, 0, 0, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2802, 0, 0, 3560, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3560, 0, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2802, 2802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3560, 3560, 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 1223, 669, 0, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 2079, 229, 230, 231, 232, 233, 234, 235, 236, 1631, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 1632, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 1633, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 1634, 0, 0, 0, 0, 0, 0, 1296, 1635, 228, 0, 1223, 669, 0, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 40, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 44, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 1157, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 49, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 50, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 0, 0, 0, 0, 1296, 5121, 228, 0, 1223, 669, 0, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 0, 0, 0, 0, 1296, 2804, 228, 0, 1223, 669, 0, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 0, 0, 0, 0, 1296, 4095, 228, 0, 1223, 669, 0, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 609, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 0, 0, 0, 0, 1296, 4171, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 4189, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, -1803, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, -1803, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, -1803, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, -1803, 382, 383, 384, 385, 386, 0, 0, 387, 388, -1803, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, -1803, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, -1803, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1376, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 2191, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 2192, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 2194, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 2195, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 2196, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 2304, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 2191, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 2192, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 2194, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 2195, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 2196, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 228, 0, 1223, 669, 0, 1224, 1225, 1226, 729, 1227, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 3392, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 40, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 44, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 1157, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 49, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 50, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 2810, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 2811, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 2812, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 2813, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 0, 0, 1998, 2762, 1296, 228, 0, 1223, 669, 0, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 1295, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 2159, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 3271, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 2811, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 2162, 2163, 0, 0, 0, 228, 0, 2940, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 4225, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 4578, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 4590, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 4905, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 4906, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 4907, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 4908, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 5378, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 5379, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 5380, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 5379, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 5380, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 1291, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 5103, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 2796, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, 0, 0, 0, 0, 0, 1292, 0, 2797, 2798, 0, 0, 0, 228, 0, 1223, 669, 2799, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, -2695, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 5379, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, -2695, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 0, 0, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, -2695, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 0, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, -2695, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 5380, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, -2695, 0, 0, 0, 0, 0, 1292, 0, 1293, 1294, 0, 0, 0, 228, 0, 1223, 669, 1296, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 2796, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, 0, 0, 0, 0, 0, 1292, 0, 2797, 2798, 228, 0, 1223, 669, 0, 1224, 1225, 2799, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 2929, 2930, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, 0, 0, 0, 0, 0, 1292, 0, 2931, 2932, 0, 0, 0, 228, 0, 1223, 669, 2799, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 0, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 2796, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, 0, 0, 0, 0, 0, 0, 0, 2797, 2798, 228, 0, 1223, 669, 0, 1224, 1225, 2799, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 2796, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, 0, 228, 0, 1223, 669, 1292, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 2799, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, -2191, 237, 238, 239, 0, 0, 0, -2191, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 0, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 0, 0, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 0, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 0, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 0, 519, 520, 1273, 522, -2191, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, 0, 0, 0, 0, 0, 0, 0, 1293, 1294, 228, 0, 1223, 669, 0, 1224, 1225, 1296, 729, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 4129, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 2796, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, 0, 228, 0, 1223, 669, 1292, 1224, 1225, 0, 729, 1227, 0, 0, 0, 0, 0, 2799, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 2796, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 4621, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 0, 0, 228, 0, 1223, 669, 1292, 1224, 1225, 1226, 729, 1227, 0, 0, 0, 0, 0, 2799, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 1228, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1229, 251, 1230, 1231, 0, 254, 255, 256, 257, 258, 259, 1232, 1233, 260, 261, 1234, 1235, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 1245, 1246, 299, 1247, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 0, 321, 0, 322, 323, 324, 325, 1248, 327, 328, 329, 330, 1249, 1250, 332, 0, 333, 334, 1251, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 1253, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 1254, 1255, 0, 1256, 0, 377, 0, 0, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 0, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1260, 412, 1261, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 1263, 424, 425, 0, 427, 1264, 1265, 429, 1266, 431, 432, 433, 0, 434, 435, 0, 0, 1267, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1270, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 1271, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 0, 519, 520, 1273, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1275, 1276, 0, 0, 550, 551, 1277, 553, 1278, 1279, 555, 556, 557, 558, 559, 560, 561, 562, 0, 1280, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 1282, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, 0, 1293, 1294, 0, 0, 0, 0, 0, 0, 0, 1296, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 1233, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1249, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 3632, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 0, 1265, 429, 430, 431, 432, 433, 0, 434, 435, 0, 818, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 3633, 500, 501, 502, 503, 504, 505, 506, 507, 40, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 44, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 1277, 553, 1278, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 1157, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 49, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 3634, 599, 600, 601, 228, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3635, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 1233, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1249, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 3632, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 0, 1265, 429, 430, 431, 432, 433, 0, 434, 435, 0, 818, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 3633, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 1277, 553, 1278, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 3634, 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3635, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 1233, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1249, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 0, 1265, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 3633, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 1277, 553, 1278, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 3634, 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 1233, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1249, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 0, 1265, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 1277, 553, 1278, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4254, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 1233, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1249, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 0, 1265, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 1277, 553, 1278, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 873, 0, 1511, 669, 0, 0, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 5360, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1927, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 1928, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 1929, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 1512, 1513, 5174, 0, 0, 0, 0, 0, 0, 5175, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 3, 4, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 40, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 44, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 1157, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 49, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 228, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4957, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 40, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 44, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 1157, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 49, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1358, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2962, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4168, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 1070, 0, 1511, 669, 0, 0, 0, 887, 729, 0, 0, 0, 0, 0, 888, 889, 890, 4638, 0, 229, 230, 231, 232, 233, 234, 235, 236, 1644, 237, 238, 239, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 240, 241, 1652, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 1653, 254, 255, 256, 257, 258, 259, 1654, 1655, 260, 261, 1074, 1075, 264, 1656, 265, 266, 267, 268, 0, 1657, 270, 1658, 271, 272, 273, 274, 275, 276, 277, 278, 279, 1659, 280, 281, 282, 283, 284, 285, 1660, 286, 287, 288, 289, 1661, 1662, 1663, 290, 1664, 1665, 1666, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 1667, 300, 1668, 301, 302, 303, 304, 305, 306, 1669, 307, 308, 309, 310, 1670, 1671, 311, 312, 1078, 314, 315, 1672, 316, 317, 318, 1673, 319, 320, 321, 1674, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 1675, 332, 1676, 333, 334, 1079, 336, 1677, 337, 1678, 338, 339, 1679, 340, 341, 342, 343, 344, 1680, 345, 0, 1681, 0, 348, 349, 1682, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 1683, 360, 361, 362, 363, 364, 365, 366, 1684, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 1685, 1083, 1686, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1687, 1688, 387, 0, 389, 390, 391, 1689, 392, 393, 394, 1690, 1691, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 3912, 0, 423, 1692, 424, 425, 426, 427, 1693, 0, 429, 1086, 431, 432, 433, 1694, 434, 435, 1695, 1696, 3913, 437, 438, 1697, 1698, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 1699, 455, 456, 0, 458, 0, 460, 461, 462, 1700, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 1701, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 1702, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 1703, 508, 509, 510, 511, 512, 1704, 513, 514, 2195, 516, 517, 518, 519, 520, 1089, 522, 1705, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 1706, 538, 539, 1707, 540, 541, 542, 543, 544, 545, 546, 1708, 547, 1090, 1091, 1709, 1710, 550, 551, 0, 553, 0, 1711, 555, 556, 557, 558, 559, 560, 561, 562, 1712, 1713, 563, 564, 565, 566, 567, 1714, 1715, 568, 569, 570, 571, 572, 0, 1092, 1716, 575, 576, 577, 578, 579, 580, 1717, 1718, 581, 1719, 1720, 582, 583, 584, 585, 586, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 893, 894, 895, 896, 0, 3914, 3915, 899, 900, 901, 902, 1070, 0, 1511, 669, 0, 0, 0, 887, 729, 0, 0, 0, 0, 0, 888, 889, 890, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 1644, 237, 238, 239, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 240, 241, 1652, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 1653, 254, 255, 256, 257, 258, 259, 1654, 1655, 260, 261, 1074, 1075, 264, 1656, 265, 266, 267, 268, 0, 1657, 270, 1658, 271, 272, 273, 274, 275, 276, 277, 278, 279, 1659, 280, 281, 282, 283, 284, 285, 1660, 286, 287, 288, 289, 1661, 1662, 1663, 290, 1664, 1665, 1666, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 1667, 300, 1668, 301, 302, 303, 304, 305, 306, 1669, 307, 308, 309, 310, 1670, 1671, 311, 312, 1078, 314, 315, 1672, 316, 317, 318, 1673, 319, 320, 321, 1674, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 1675, 332, 1676, 333, 334, 1079, 336, 1677, 337, 1678, 338, 339, 1679, 340, 341, 342, 343, 344, 1680, 345, 0, 1681, 0, 348, 349, 1682, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 1683, 360, 361, 362, 363, 364, 365, 366, 1684, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 1685, 1083, 1686, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1687, 1688, 387, 0, 389, 390, 391, 1689, 392, 393, 394, 1690, 1691, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 4349, 0, 423, 1692, 424, 425, 426, 427, 1693, 0, 429, 1086, 431, 432, 433, 1694, 434, 435, 1695, 1696, 3913, 437, 438, 1697, 1698, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 1699, 455, 456, 0, 458, 0, 460, 461, 462, 1700, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 1701, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 1702, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 1703, 508, 509, 510, 511, 512, 1704, 513, 514, 2195, 516, 517, 518, 519, 520, 1089, 522, 1705, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 1706, 538, 539, 1707, 540, 541, 542, 543, 544, 545, 546, 1708, 547, 1090, 1091, 1709, 1710, 550, 551, 0, 553, 0, 1711, 555, 556, 557, 558, 559, 560, 561, 562, 1712, 1713, 563, 564, 565, 566, 567, 1714, 1715, 568, 569, 570, 571, 572, 0, 1092, 1716, 575, 576, 577, 578, 579, 580, 1717, 1718, 581, 1719, 1720, 582, 583, 584, 585, 586, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 609, 0, 0, 893, 894, 895, 896, 887, 3914, 3915, 899, 900, 901, 902, 888, 889, 890, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 891, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 892, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 893, 894, 895, 896, 887, 897, 898, 899, 900, 901, 902, 888, 889, 890, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 1020, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 1021, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 893, 894, 895, 896, 887, 897, 898, 899, 900, 901, 902, 888, 889, 890, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 1120, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 1121, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1122, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 893, 894, 895, 896, 887, 897, 898, 899, 900, 901, 902, 888, 889, 890, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 1743, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 1744, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 893, 894, 895, 896, 887, 897, 898, 899, 900, 901, 902, 888, 889, 890, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 893, 894, 895, 896, 887, 897, 898, 899, 900, 901, 902, 888, 889, 890, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 3040, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 3041, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 893, 894, 895, 896, 887, 897, 898, 899, 900, 901, 902, 888, 889, 890, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 4934, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 1643, 0, 0, 893, 894, 895, 896, 0, 897, 898, 899, 900, 901, 902, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 1644, 237, 238, 239, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 240, 241, 1652, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 1653, 254, 255, 256, 257, 258, 259, 1654, 1655, 260, 261, 262, 263, 264, 1656, 265, 266, 267, 268, 269, 1657, 270, 1658, 271, 272, 273, 274, 275, 276, 277, 278, 279, 1659, 280, 281, 282, 283, 284, 285, 1660, 286, 287, 288, 289, 1661, 1662, 1663, 290, 1664, 1665, 1666, 291, 292, 293, 294, 295, 296, 297, 298, 299, 1667, 300, 1668, 301, 302, 303, 304, 305, 306, 1669, 307, 308, 309, 310, 1670, 1671, 311, 312, 313, 314, 315, 1672, 316, 317, 318, 1673, 319, 320, 321, 1674, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1675, 332, 1676, 333, 334, 335, 336, 1677, 337, 1678, 338, 339, 1679, 340, 341, 342, 343, 344, 1680, 345, 346, 1681, 347, 348, 349, 1682, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 1683, 360, 361, 362, 363, 364, 365, 366, 1684, 367, 368, 369, 370, 371, 372, 373, 374, 375, 1685, 376, 1686, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1687, 1688, 387, 388, 389, 390, 391, 1689, 392, 393, 394, 1690, 1691, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 1692, 424, 425, 426, 427, 1693, 428, 429, 430, 431, 432, 433, 1694, 434, 435, 1695, 1696, 436, 437, 438, 1697, 1698, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 1699, 455, 456, 457, 458, 459, 460, 461, 462, 1700, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 1701, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 1702, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 1703, 508, 509, 510, 511, 512, 1704, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 1705, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 1706, 538, 539, 1707, 540, 541, 542, 543, 544, 545, 546, 1708, 547, 548, 549, 1709, 1710, 550, 551, 552, 553, 554, 1711, 555, 556, 557, 558, 559, 560, 561, 562, 1712, 1713, 563, 564, 565, 566, 567, 1714, 1715, 568, 569, 570, 571, 572, 573, 574, 1716, 575, 576, 577, 578, 579, 580, 1717, 1718, 581, 1719, 1720, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1721, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 823, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5325, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 2191, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 2192, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 2193, 439, 440, 2194, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 2195, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 2196, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 0, 0, 0, 0, 0, 0, 3388, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2197, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 2191, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 2192, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 2193, 439, 440, 2194, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 2195, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 2196, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 0, 0, 0, 0, 0, 0, 873, 0, 1511, 669, 0, 599, 600, 601, 729, 2117, 0, 0, 0, 0, 0, 0, 0, 0, 2197, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 2118, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1927, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 1928, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 1929, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 0, 0, 873, 0, 1511, 669, 2119, 0, 1512, 1513, 729, 2117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 2124, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1927, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 1928, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 1929, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 0, 0, 873, 0, 1511, 669, 2119, 0, 1512, 1513, 729, 2117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1927, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 1928, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 1929, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 0, 0, 873, 0, 1511, 669, 2119, 0, 1512, 1513, 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1927, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 1928, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 1929, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 0, 0, 873, 0, 0, 669, 0, 0, 1512, 1513, 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 2994, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1927, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 1928, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 1929, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 0, 0, 609, 0, 0, 0, 0, 0, 741, 742, 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 730, 231, 232, 233, 234, 235, 236, 731, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 732, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 733, 335, 336, 0, 337, 0, 734, 0, 735, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 736, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 737, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 738, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 739, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 740, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 0, 873, 0, 0, 669, 0, 0, 0, 741, 742, 2098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 2099, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 669, 0, 0, 2100, 0, 0, 1338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 669, 0, 0, 1339, 0, 0, 1341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 1643, 0, 5539, 669, 0, 0, 1342, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 1644, 237, 238, 239, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 240, 241, 1652, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 1653, 254, 255, 256, 257, 258, 259, 1654, 1655, 260, 261, 262, 263, 264, 1656, 265, 266, 267, 268, 269, 1657, 270, 1658, 271, 272, 273, 274, 275, 276, 277, 278, 279, 1659, 280, 281, 282, 283, 284, 285, 1660, 286, 287, 288, 289, 1661, 1662, 1663, 290, 1664, 1665, 1666, 291, 292, 293, 294, 295, 296, 297, 298, 299, 1667, 300, 1668, 301, 302, 303, 304, 305, 306, 1669, 307, 308, 309, 310, 1670, 1671, 311, 312, 313, 314, 315, 1672, 316, 317, 318, 1673, 319, 320, 321, 1674, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1675, 332, 1676, 333, 334, 335, 336, 1677, 337, 1678, 338, 339, 1679, 340, 341, 342, 343, 344, 1680, 345, 346, 1681, 347, 348, 349, 1682, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 1683, 360, 361, 362, 363, 364, 365, 366, 1684, 367, 368, 369, 370, 371, 372, 373, 374, 375, 1685, 376, 1686, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1687, 1688, 387, 388, 389, 390, 391, 1689, 392, 393, 394, 1690, 1691, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 1692, 424, 425, 426, 427, 1693, 428, 429, 430, 431, 432, 433, 1694, 434, 435, 1695, 1696, 436, 437, 438, 1697, 1698, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 1699, 455, 456, 457, 458, 459, 460, 461, 462, 1700, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 1701, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 1702, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 1703, 508, 509, 510, 511, 512, 1704, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 1705, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 1706, 538, 539, 1707, 540, 541, 542, 543, 544, 545, 546, 1708, 547, 548, 549, 1709, 1710, 550, 551, 552, 553, 554, 1711, 555, 556, 557, 558, 559, 560, 561, 562, 1712, 1713, 563, 564, 565, 566, 567, 1714, 1715, 568, 569, 570, 571, 572, 573, 574, 1716, 575, 576, 577, 578, 579, 580, 1717, 1718, 581, 1719, 1720, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 1643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 1644, 237, 238, 239, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 240, 241, 1652, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 1653, 254, 255, 256, 257, 258, 259, 1654, 1655, 260, 261, 262, 263, 264, 1656, 265, 266, 267, 268, 269, 1657, 270, 1658, 271, 272, 273, 274, 275, 276, 277, 278, 279, 1659, 280, 281, 282, 283, 284, 285, 1660, 286, 287, 288, 289, 1661, 1662, 1663, 290, 1664, 1665, 1666, 291, 292, 293, 294, 295, 296, 297, 298, 299, 1667, 300, 1668, 301, 302, 303, 304, 305, 306, 1669, 307, 308, 309, 310, 1670, 1671, 311, 312, 313, 314, 315, 1672, 316, 317, 318, 1673, 319, 320, 321, 1674, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1675, 332, 1676, 333, 334, 335, 336, 1677, 337, 1678, 338, 339, 1679, 340, 341, 342, 343, 344, 1680, 345, 346, 1681, 347, 348, 349, 1682, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 1683, 360, 361, 362, 363, 364, 365, 366, 1684, 367, 368, 369, 370, 371, 372, 373, 374, 375, 1685, 376, 1686, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1687, 1688, 387, 388, 389, 390, 391, 1689, 392, 393, 394, 1690, 1691, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 1692, 424, 425, 426, 427, 1693, 428, 429, 430, 431, 432, 433, 1694, 434, 435, 1695, 1696, 436, 437, 438, 1697, 1698, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 1699, 455, 456, 457, 458, 459, 460, 461, 462, 1700, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 1701, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 1702, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 1703, 508, 509, 510, 511, 512, 1704, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 1705, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 1706, 538, 539, 1707, 540, 541, 542, 543, 544, 545, 546, 1708, 547, 548, 549, 1709, 1710, 550, 551, 552, 553, 554, 1711, 555, 556, 557, 558, 559, 560, 561, 562, 1712, 1713, 563, 564, 565, 566, 567, 1714, 1715, 568, 569, 570, 571, 572, 573, 574, 1716, 575, 576, 577, 578, 579, 580, 1717, 1718, 581, 1719, 1720, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 1643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 3111, 234, 235, 236, 1644, 237, 238, 239, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 240, 241, 1652, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 1653, 254, 255, 256, 257, 258, 259, 1654, 1655, 260, 261, 262, 263, 264, 1656, 265, 266, 267, 268, 269, 1657, 270, 1658, 271, 272, 273, 274, 275, 276, 277, 278, 279, 1659, 280, 281, 282, 283, 284, 285, 1660, 286, 287, 288, 289, 1661, 1662, 1663, 290, 1664, 1665, 1666, 291, 292, 293, 294, 295, 296, 297, 298, 299, 1667, 300, 1668, 301, 302, 303, 304, 305, 306, 1669, 307, 308, 309, 310, 1670, 1671, 311, 312, 313, 3112, 315, 1672, 316, 317, 318, 1673, 319, 320, 321, 1674, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1675, 332, 1676, 333, 334, 335, 336, 1677, 337, 1678, 338, 339, 1679, 340, 341, 342, 343, 344, 1680, 345, 346, 1681, 347, 348, 349, 1682, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 1683, 360, 361, 362, 363, 364, 365, 366, 1684, 367, 368, 369, 370, 371, 372, 373, 374, 375, 1685, 376, 1686, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1687, 1688, 387, 388, 389, 390, 391, 1689, 392, 393, 394, 1690, 1691, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 1692, 424, 425, 426, 427, 1693, 428, 429, 430, 431, 432, 433, 1694, 434, 435, 1695, 1696, 436, 437, 438, 1697, 1698, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 1699, 455, 456, 457, 458, 459, 460, 461, 462, 1700, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 1701, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 1702, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 1703, 508, 509, 510, 511, 512, 1704, 3113, 514, 515, 516, 517, 518, 519, 520, 521, 522, 1705, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 1706, 538, 539, 1707, 540, 541, 542, 543, 544, 545, 546, 1708, 547, 548, 549, 1709, 1710, 550, 551, 552, 553, 554, 1711, 555, 556, 557, 558, 559, 560, 561, 562, 1712, 1713, 563, 564, 565, 566, 567, 1714, 1715, 568, 569, 570, 571, 572, 573, 574, 1716, 575, 576, 577, 578, 579, 580, 1717, 1718, 581, 1719, 1720, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 1233, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 1236, 0, 1237, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 1249, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 1252, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 1257, 389, 390, 391, 0, 392, 393, 394, 1258, 1259, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 1262, 423, 0, 424, 425, 426, 427, 0, 1265, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 1268, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 1269, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 1272, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 1274, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 1277, 553, 1278, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 1281, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 1283, 1284, 1285, 1286, 593, 1287, 1288, 1289, 1290, 598, 599, 600, 601, 873, 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 1927, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 1928, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 1929, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 912, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 874, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 875, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 933, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 874, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 934, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 875, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 874, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 875, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 2459, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 874, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 3470, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 875, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 874, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 875, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 874, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 1039, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 875, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 874, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1115, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 875, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 874, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1128, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 875, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 874, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1140, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 1141, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 875, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 3, 4, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1913, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1063, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1112, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1126, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1130, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 388, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 426, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 2231, 265, 266, 267, 268, 269, 0, 0, 2311, 271, 272, 273, 274, 275, 0, 277, 278, 279, 2232, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 2312, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 2234, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 2313, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 2235, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 2236, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 2231, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 2232, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 2312, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 2234, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 3322, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 2235, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 2236, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 786, 235, 236, 748, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 749, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 787, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 750, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 751, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 748, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 749, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 3001, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 750, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 751, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 2231, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 2232, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 2312, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 2234, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 2235, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 2236, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 748, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 749, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 750, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 751, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 1954, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 1955, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 1956, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 1957, 338, 0, 0, 0, 1958, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 1959, 1960, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 1961, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 1962, 497, 498, 499, 500, 501, 1963, 503, 504, 505, 506, 507, 0, 1964, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 1965, 540, 0, 1966, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 1967, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 749, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 750, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 751, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 926, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 927, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 818, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 3092, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 3093, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 3105, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 3106, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 610, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 660, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 661, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 778, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 779, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 780, 549, 0, 0, 781, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 812, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 813, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 814, 549, 0, 0, 815, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 818, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 882, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 883, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 1055, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 1329, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 1344, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 798, 261, 262, 263, 1345, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 801, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 802, 494, 495, 496, 497, 498, 499, 500, 501, 803, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 1333, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 805, 549, 0, 0, 806, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 807, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1455, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 818, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 1516, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1517, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 778, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 2891, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 2892, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 2893, 540, 0, 542, 2894, 544, 2895, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 2896, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 4189, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 4203, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 764, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 776, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 798, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 799, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 800, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 801, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 802, 494, 495, 496, 497, 498, 499, 500, 501, 803, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 804, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 805, 549, 0, 0, 806, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 807, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 829, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 908, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 918, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 921, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 937, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1004, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1010, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1027, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1030, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1032, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1068, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1132, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1134, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1144, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1147, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1150, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 798, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 801, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 802, 494, 495, 496, 497, 498, 499, 500, 501, 803, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 1333, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 805, 549, 0, 0, 806, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 807, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1774, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1812, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1814, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1885, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1887, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 1889, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 1992, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 2183, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 0, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 798, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 801, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 802, 494, 495, 496, 497, 498, 499, 500, 501, 803, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 1333, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 2218, 543, 544, 545, 546, 0, 547, 805, 549, 0, 0, 806, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 807, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 798, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 801, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 802, 494, 495, 496, 497, 498, 499, 500, 501, 2294, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 2295, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 805, 549, 0, 0, 2296, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 807, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 798, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 801, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 802, 494, 495, 496, 497, 498, 499, 500, 501, 2373, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 2295, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 805, 549, 0, 0, 2296, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 807, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 798, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 801, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 802, 494, 495, 496, 497, 498, 499, 500, 501, 2390, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 2295, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 805, 549, 0, 0, 2296, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 807, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 2594, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 2598, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 2674, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 3012, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 798, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 801, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 802, 494, 495, 496, 497, 498, 499, 500, 501, 803, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 2295, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 805, 549, 0, 0, 2296, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 807, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 3081, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 3095, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 3097, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 3242, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 3280, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 348, 349, 0, 350, 351, 352, 353, 4476, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 2191, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 2192, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 2194, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 2195, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 2196, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 0, 246, 247, 248, 249, 250, 0, 252, 253, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 262, 263, 264, 0, 265, 266, 267, 268, 269, 0, 0, 0, 271, 272, 273, 274, 275, 0, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 0, 287, 288, 289, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 0, 332, 0, 333, 334, 335, 336, 0, 337, 0, 338, 0, 0, 0, 341, 342, 343, 344, 0, 345, 346, 0, 347, 0, 349, 0, 350, 351, 352, 353, 354, 0, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 0, 369, 370, 371, 372, 373, 374, 375, 0, 376, 0, 377, 0, 0, 380, 0, 382, 383, 384, 385, 386, 0, 0, 387, 388, 0, 390, 0, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 0, 424, 425, 0, 427, 0, 428, 429, 430, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 441, 0, 443, 0, 445, 446, 447, 448, 449, 450, 451, 0, 453, 454, 0, 455, 456, 457, 458, 459, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 0, 472, 473, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 0, 493, 494, 495, 496, 497, 498, 0, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 515, 516, 517, 0, 519, 520, 521, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 0, 538, 539, 0, 540, 0, 542, 543, 544, 545, 546, 0, 547, 548, 549, 0, 0, 550, 551, 552, 553, 554, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 573, 574, 0, 575, 0, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 2290, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 2195, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 4013, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 2363, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 1088, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 3815, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 1088, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 5393, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 1088, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 1080, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 1088, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 1138, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 1088, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 1088, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 2195, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 1071, 251, 1072, 1073, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 1074, 1075, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 1076, 1077, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 1078, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 1079, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, 370, 371, 372, 373, 1081, 1082, 0, 1083, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 1084, 412, 1085, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 1086, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 1087, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 0, 516, 517, 518, 519, 520, 1089, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 1090, 1091, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 1092, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 1070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 240, 241, 0, 242, 243, 244, 245, 246, 247, 248, 0, 0, 251, 0, 0, 0, 254, 255, 256, 257, 258, 259, 0, 0, 260, 261, 0, 0, 264, 0, 265, 266, 267, 268, 0, 0, 270, 0, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 280, 281, 282, 283, 284, 285, 0, 286, 287, 288, 289, 0, 0, 0, 290, 0, 0, 0, 291, 292, 293, 294, 295, 296, 0, 0, 299, 0, 300, 0, 301, 302, 303, 304, 305, 306, 0, 307, 308, 309, 310, 0, 0, 311, 312, 313, 314, 315, 0, 316, 317, 318, 0, 319, 320, 321, 0, 322, 323, 324, 325, 0, 327, 328, 329, 330, 0, 0, 332, 0, 333, 334, 0, 336, 0, 337, 0, 338, 339, 0, 340, 341, 342, 343, 344, 0, 345, 0, 0, 0, 348, 349, 0, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 0, 360, 361, 362, 363, 364, 365, 366, 0, 367, 368, 0, 370, 371, 372, 373, 0, 0, 0, 0, 0, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 0, 0, 387, 0, 389, 390, 391, 0, 392, 393, 394, 0, 0, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 0, 412, 0, 414, 415, 416, 417, 418, 419, 420, 0, 0, 423, 0, 424, 425, 426, 427, 0, 0, 429, 0, 431, 432, 433, 0, 434, 435, 0, 0, 436, 437, 438, 0, 0, 439, 440, 0, 442, 443, 444, 0, 446, 447, 448, 449, 450, 451, 452, 453, 454, 0, 455, 456, 0, 458, 0, 460, 461, 462, 0, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 0, 474, 475, 476, 477, 0, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 0, 490, 491, 492, 493, 494, 495, 496, 497, 0, 499, 500, 501, 502, 503, 504, 505, 506, 507, 0, 508, 509, 510, 511, 512, 0, 513, 514, 0, 516, 517, 518, 519, 520, 0, 522, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 0, 537, 0, 538, 539, 0, 540, 541, 542, 543, 544, 545, 546, 0, 547, 0, 0, 0, 0, 550, 551, 0, 553, 0, 0, 555, 556, 557, 558, 559, 560, 561, 562, 0, 0, 563, 564, 565, 566, 567, 0, 0, 568, 569, 570, 571, 572, 0, 0, 0, 575, 576, 577, 578, 579, 580, 0, 0, 581, 0, 0, 582, 583, 584, 585, 586, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601 }; static const yytype_int16 yycheck[] = { 6, 919, 0, 44, 637, 0, 0, 8, 51, 0, 183, 205, 0, 1161, 15, 1441, 947, 23, 711, 25, 1183, 1568, 936, 29, 36, 797, 21, 848, 34, 35, 36, 205, 38, 200, 1118, 41, 42, 799, 44, 1088, 46, 208, 1487, 945, 211, 1503, 22, 951, 859, 749, 750, 751, 28, 2903, 949, 755, 920, 822, 45, 13, 821, 1487, 2606, 1076, 1077, 191, 1480, 2534, 1292, 1033, 806, 1729, 1091, 1086, 1215, 210, 2953, 693, 3058, 2447, 3354, 2362, 3085, 1979, 628, 0, 2733, 2199, 2200, 224, 23, 707, 670, 1007, 1633, 1808, 2547, 1011, 670, 18, 3707, 3661, 1016, 36, 1998, 775, 3308, 1492, 2709, 2426, 871, 3384, 1026, 3373, 2962, 3401, 0, 3111, 3404, 3113, 3707, 3703, 716, 4002, 706, 884, 1040, 6, 3635, 919, 3605, 3759, 185, 691, 3990, 679, 694, 21, 928, 717, 170, 185, 1600, 1601, 3794, 3985, 3946, 2092, 938, 1022, 4506, 910, 3641, 0, 2927, 1069, 915, 4622, 2044, 35, 2046, 0, 1820, 0, 1419, 1038, 42, 1470, 0, 50, 0, 2163, 0, 0, 0, 0, 2972, 2165, 219, 2855, 4785, 0, 0, 4457, 0, 191, 192, 193, 194, 3989, 196, 3371, 2131, 954, 200, 4259, 202, 845, 1911, 205, 41, 845, 208, 2142, 4826, 211, 3566, 4697, 214, 1594, 216, 1074, 1075, 219, 3683, 4838, 0, 223, 1366, 225, 6, 4638, 1085, 4640, 802, 0, 0, 1530, 5061, 869, 802, 4505, 1245, 1246, 0, 3640, 1621, 3642, 0, 11, 4130, 53, 39, 5037, 1547, 11, 116, 61, 826, 4739, 13, 91, 0, 1266, 6, 61, 2537, 1276, 78, 30, 12, 839, 6, 11, 30, 6, 30, 36, 12, 76, 910, 15, 16, 5, 4514, 915, 4746, 4747, 43, 11, 4074, 4075, 30, 4077, 4078, 4079, 4080, 4081, 6, 163, 33, 61, 169, 30, 12, 175, 1107, 15, 16, 6, 1000, 13, 1631, 1632, 30, 12, 1433, 116, 2493, 109, 2495, 37, 6, 6, 2499, 46, 2501, 2502, 12, 12, 78, 15, 16, 51, 3060, 2510, 2511, 2512, 116, 180, 6, 6, 44, 6, 123, 6, 12, 12, 6, 12, 148, 12, 6, 6, 12, 118, 43, 168, 12, 12, 121, 168, 280, 4003, 168, 61, 6, 148, 168, 192, 5, 885, 12, 6, 76, 66, 11, 33, 2649, 168, 2651, 1234, 1235, 6, 170, 116, 6, 1047, 3, 12, 5, 6, 12, 61, 168, 31, 11, 12, 168, 13, 5378, 196, 280, 168, 168, 286, 286, 3319, 1261, 6, 83, 28, 168, 163, 5237, 12, 168, 116, 192, 88, 261, 78, 3, 70, 311, 6, 78, 192, 192, 1383, 168, 12, 49, 218, 294, 319, 192, 168, 11, 367, 192, 13, 142, 284, 5228, 206, 170, 36, 30, 10, 269, 5063, 13, 152, 192, 37, 396, 1349, 5445, 5446, 120, 120, 61, 149, 296, 2386, 160, 1361, 350, 187, 345, 61, 44, 637, 192, 4955, 261, 334, 408, 338, 442, 4827, 78, 61, 78, 147, 185, 265, 448, 46, 3537, 116, 88, 828, 61, 4902, 282, 339, 330, 146, 360, 116, 334, 477, 76, 451, 6, 4298, 367, 339, 635, 229, 78, 410, 4305, 1554, 641, 491, 165, 1125, 3567, 13, 88, 410, 688, 367, 168, 489, 474, 654, 111, 78, 194, 493, 1419, 367, 396, 168, 163, 168, 30, 1201, 2463, 5366, 340, 5523, 1297, 37, 430, 489, 354, 408, 44, 213, 213, 374, 431, 454, 282, 26, 149, 5548, 256, 493, 168, 493, 265, 454, 118, 487, 261, 207, 370, 491, 1325, 1143, 354, 304, 438, 1163, 340, 1143, 121, 1189, 76, 370, 336, 220, 1482, 370, 207, 451, 3318, 1161, 1200, 436, 211, 408, 408, 360, 386, 396, 3794, 184, 337, 489, 396, 270, 408, 13, 1216, 489, 493, 493, 474, 137, 5439, 350, 233, 352, 616, 321, 489, 493, 5236, 489, 622, 3819, 624, 489, 626, 5226, 628, 621, 630, 362, 621, 621, 393, 443, 621, 637, 396, 621, 340, 430, 642, 1161, 644, 408, 1767, 5435, 1220, 432, 372, 651, 61, 212, 1220, 1563, 408, 377, 1566, 493, 245, 312, 216, 248, 135, 430, 493, 434, 340, 400, 1537, 402, 1456, 408, 477, 675, 413, 337, 5505, 679, 717, 848, 493, 489, 684, 4154, 487, 1374, 688, 3957, 491, 691, 4193, 493, 694, 441, 4197, 721, 489, 4182, 493, 4585, 393, 5167, 617, 5055, 1631, 1632, 1633, 489, 710, 265, 437, 3710, 492, 489, 1574, 282, 1585, 5546, 480, 481, 488, 492, 492, 451, 761, 716, 485, 493, 3005, 3999, 492, 1629, 1518, 408, 492, 340, 480, 481, 4094, 5357, 477, 489, 3998, 422, 340, 408, 474, 744, 492, 489, 408, 5370, 480, 481, 491, 447, 340, 1401, 730, 761, 732, 1401, 734, 1518, 2089, 715, 322, 340, 740, 4559, 1344, 358, 425, 4238, 776, 489, 1344, 485, 1352, 1353, 4181, 971, 4183, 489, 487, 822, 489, 836, 491, 377, 1949, 493, 1366, 453, 796, 797, 836, 799, 800, 489, 489, 971, 804, 4779, 967, 4003, 408, 453, 408, 478, 973, 5297, 1153, 976, 474, 852, 818, 489, 489, 493, 822, 1638, 489, 5441, 5310, 489, 828, 1347, 474, 489, 489, 868, 1352, 1353, 956, 1915, 408, 717, 840, 480, 481, 489, 1478, 489, 838, 408, 1366, 838, 838, 478, 852, 838, 478, 5266, 838, 408, 493, 478, 493, 480, 481, 3533, 482, 483, 484, 485, 868, 2975, 1877, 2977, 2311, 4931, 4048, 1764, 437, 478, 1956, 4501, 384, 385, 5232, 377, 469, 493, 886, 430, 5504, 1967, 493, 891, 892, 478, 3205, 3, 367, 1531, 1525, 493, 3345, 2280, 168, 480, 481, 3695, 482, 483, 484, 485, 3907, 493, 24, 109, 1548, 480, 481, 482, 483, 484, 485, 447, 493, 185, 924, 925, 192, 5411, 38, 838, 275, 340, 3906, 109, 493, 4771, 261, 116, 5537, 493, 1458, 5209, 29, 109, 177, 2900, 2932, 947, 948, 2482, 1468, 2933, 861, 300, 829, 300, 956, 1296, 26, 430, 838, 314, 2211, 5231, 32, 800, 326, 967, 4942, 804, 26, 971, 121, 973, 109, 6, 976, 3, 2357, 87, 26, 168, 4938, 2916, 480, 481, 482, 483, 484, 485, 169, 991, 62, 109, 286, 1852, 1853, 838, 2953, 110, 70, 5235, 3, 2300, 162, 838, 116, 838, 5358, 367, 3285, 3286, 838, 1013, 838, 5474, 838, 838, 838, 838, 1020, 1021, 74, 4817, 2963, 838, 838, 2907, 838, 261, 10, 95, 140, 13, 487, 70, 148, 1555, 491, 4620, 1558, 1559, 1042, 1043, 1044, 2586, 1046, 121, 1048, 1049, 1050, 4025, 3819, 88, 924, 925, 6, 206, 180, 245, 119, 87, 180, 3979, 44, 300, 42, 135, 1407, 26, 4714, 4672, 480, 481, 482, 483, 484, 485, 4659, 135, 6, 266, 2224, 170, 444, 196, 87, 266, 395, 135, 198, 4672, 275, 350, 26, 368, 76, 3968, 116, 1997, 32, 281, 334, 3378, 90, 3284, 85, 4576, 118, 170, 174, 146, 345, 139, 111, 26, 85, 300, 1118, 121, 1120, 1121, 281, 1817, 431, 382, 4627, 99, 26, 188, 165, 4632, 206, 5367, 4635, 493, 489, 2035, 139, 261, 4623, 1054, 489, 2041, 489, 470, 132, 85, 127, 307, 85, 109, 2195, 1153, 732, 733, 734, 53, 127, 737, 738, 739, 5136, 233, 2089, 2054, 5002, 5141, 364, 747, 5020, 1166, 358, 1168, 1163, 1170, 286, 1172, 135, 1174, 1175, 1176, 5138, 1183, 1184, 451, 1181, 184, 1188, 127, 1190, 22, 127, 2091, 302, 261, 2604, 28, 490, 85, 5073, 493, 3308, 135, 206, 177, 1206, 5057, 1964, 1965, 236, 107, 1212, 5447, 190, 1215, 489, 5451, 1218, 5053, 396, 408, 4490, 1741, 135, 5019, 278, 489, 296, 316, 396, 1918, 1232, 149, 149, 236, 4503, 135, 350, 270, 296, 127, 4496, 354, 281, 430, 4526, 281, 245, 6, 296, 248, 270, 432, 489, 316, 4253, 4838, 370, 1296, 270, 396, 5056, 1263, 61, 352, 334, 416, 1955, 5503, 296, 451, 1959, 1883, 2199, 1851, 1963, 312, 334, 1966, 396, 430, 111, 2038, 395, 396, 360, 1897, 334, 261, 477, 1291, 3398, 1293, 1294, 296, 1296, 456, 110, 367, 1910, 1839, 282, 261, 491, 184, 489, 4295, 334, 205, 118, 367, 338, 5547, 436, 423, 1316, 145, 436, 298, 270, 367, 2211, 431, 411, 3, 434, 275, 1880, 298, 417, 2030, 1908, 5567, 2033, 10, 5570, 1925, 13, 1386, 1387, 367, 1389, 1895, 270, 1369, 1898, 169, 1386, 1387, 350, 1389, 300, 4929, 1926, 184, 430, 1525, 1358, 367, 298, 358, 281, 298, 296, 261, 245, 477, 1403, 44, 436, 173, 108, 399, 275, 401, 51, 487, 489, 489, 490, 491, 210, 493, 196, 296, 284, 88, 1388, 435, 425, 2018, 1392, 1393, 4236, 173, 4865, 4898, 399, 300, 401, 76, 334, 1403, 1404, 1405, 1958, 1407, 216, 1961, 1962, 130, 298, 132, 451, 116, 245, 451, 295, 248, 2176, 453, 401, 334, 327, 451, 5363, 5364, 430, 451, 1430, 233, 401, 405, 191, 367, 354, 5059, 116, 179, 338, 339, 474, 200, 360, 360, 442, 354, 121, 30, 350, 208, 489, 2342, 211, 233, 367, 265, 286, 145, 356, 158, 135, 401, 261, 1465, 401, 311, 143, 367, 1470, 493, 469, 1473, 4069, 296, 4014, 299, 2367, 358, 396, 396, 118, 334, 2396, 493, 1486, 1487, 4957, 489, 367, 95, 489, 4962, 4963, 1495, 396, 180, 1498, 192, 480, 481, 482, 483, 484, 485, 1845, 243, 296, 408, 246, 115, 187, 334, 322, 401, 367, 192, 4714, 5100, 619, 128, 438, 438, 326, 1525, 2310, 1527, 5129, 358, 1530, 138, 451, 230, 437, 451, 451, 30, 280, 2428, 1453, 489, 354, 340, 230, 149, 367, 1547, 5129, 130, 1550, 373, 165, 1553, 229, 1590, 275, 2482, 474, 474, 2132, 4828, 4816, 40, 265, 218, 410, 2456, 2646, 5506, 367, 489, 295, 489, 489, 1575, 2443, 2020, 261, 367, 216, 321, 489, 395, 396, 5139, 1164, 265, 489, 1167, 1590, 1169, 270, 1171, 493, 1173, 424, 336, 400, 1177, 402, 239, 1602, 1603, 1604, 1605, 1606, 282, 261, 2827, 454, 351, 2396, 296, 713, 119, 3978, 2376, 2377, 168, 1620, 2380, 400, 3934, 402, 3513, 428, 169, 296, 265, 1539, 1631, 1632, 1633, 239, 1544, 309, 130, 171, 2528, 469, 334, 444, 192, 367, 338, 3187, 2431, 125, 6, 428, 334, 2224, 5234, 239, 12, 6, 1996, 3969, 1998, 202, 2476, 2477, 2478, 26, 2004, 334, 3075, 489, 322, 32, 2010, 2011, 2012, 367, 217, 2543, 3632, 118, 2217, 3635, 2465, 2021, 2022, 188, 227, 322, 2026, 3794, 296, 145, 30, 791, 2446, 286, 15, 16, 372, 2308, 2566, 2567, 2568, 2569, 158, 1892, 239, 1615, 158, 163, 2617, 1619, 2578, 451, 3819, 3893, 1835, 354, 370, 3897, 3898, 1881, 3900, 338, 1891, 1892, 1393, 330, 334, 163, 1729, 13, 1731, 3265, 296, 160, 474, 2603, 5291, 3271, 174, 376, 158, 81, 1743, 1744, 3452, 163, 295, 2966, 354, 89, 367, 3707, 436, 493, 210, 360, 192, 451, 408, 200, 399, 284, 1763, 4039, 357, 4041, 3657, 5036, 354, 432, 334, 4671, 135, 296, 230, 4773, 430, 117, 230, 4679, 474, 1782, 2542, 317, 130, 1539, 132, 88, 5370, 428, 1544, 396, 76, 399, 5062, 222, 472, 1798, 1799, 1800, 1801, 344, 478, 367, 480, 481, 482, 483, 484, 485, 1811, 334, 230, 399, 453, 349, 5071, 1818, 367, 1820, 261, 277, 428, 396, 265, 277, 489, 477, 362, 3209, 286, 1832, 172, 438, 1835, 296, 87, 164, 1839, 242, 145, 491, 428, 2382, 1845, 185, 451, 453, 5450, 2018, 489, 295, 3010, 158, 33, 119, 432, 197, 163, 277, 47, 1615, 5444, 397, 399, 1619, 296, 453, 5450, 474, 6, 198, 173, 334, 3254, 4850, 12, 128, 57, 1880, 1881, 2400, 69, 489, 489, 352, 4803, 138, 451, 2408, 1891, 1892, 2411, 428, 1895, 196, 4003, 1898, 730, 432, 732, 2596, 734, 489, 334, 210, 367, 343, 740, 741, 742, 4553, 296, 489, 1915, 1916, 0, 675, 453, 265, 443, 1922, 13, 1924, 188, 230, 684, 3380, 2818, 275, 493, 171, 233, 691, 2824, 1925, 694, 367, 1974, 1935, 239, 1937, 350, 1939, 352, 1941, 413, 1943, 1949, 5551, 334, 1947, 255, 44, 489, 1956, 489, 1958, 451, 4948, 1961, 1962, 5230, 1964, 1965, 5246, 1967, 219, 424, 5551, 410, 170, 277, 1974, 5229, 2983, 279, 296, 326, 352, 1981, 286, 1989, 367, 285, 76, 1979, 1988, 1989, 1979, 1979, 1992, 4711, 1979, 4456, 1996, 1979, 1998, 4274, 4275, 493, 4846, 2003, 2004, 203, 413, 67, 68, 2696, 2010, 2011, 2012, 3968, 361, 2015, 334, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 4666, 2026, 4668, 2028, 2029, 4475, 360, 2032, 158, 4495, 489, 4754, 2609, 163, 108, 267, 413, 322, 2609, 383, 453, 296, 386, 1926, 396, 2050, 2051, 2052, 2053, 885, 335, 354, 2057, 2058, 3711, 492, 1988, 2062, 2727, 2728, 2065, 474, 396, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2266, 2079, 330, 489, 1995, 363, 334, 2085, 2086, 2902, 173, 2089, 70, 326, 5359, 2665, 493, 164, 2096, 444, 2266, 2665, 400, 399, 402, 2264, 5372, 230, 2267, 2268, 334, 438, 349, 5085, 400, 413, 402, 239, 355, 367, 5034, 28, 424, 36, 451, 362, 451, 425, 361, 451, 428, 198, 428, 2131, 314, 360, 4445, 5051, 116, 2257, 2138, 118, 49, 367, 2142, 2143, 296, 474, 5143, 474, 233, 265, 474, 413, 277, 2153, 270, 453, 5000, 242, 397, 354, 489, 396, 2162, 2163, 274, 489, 493, 444, 2973, 396, 163, 5042, 5088, 5440, 243, 2905, 2176, 246, 2307, 914, 419, 2699, 334, 2183, 163, 2185, 338, 10, 383, 2181, 13, 489, 172, 186, 17, 18, 19, 453, 933, 956, 6, 936, 3359, 3061, 320, 220, 12, 239, 163, 444, 967, 438, 3369, 242, 489, 367, 973, 2217, 474, 976, 2226, 200, 2228, 2562, 451, 3766, 2226, 357, 2228, 3087, 354, 186, 0, 489, 1531, 2862, 265, 4416, 4193, 4418, 4419, 10, 4197, 4422, 2279, 2245, 6, 474, 17, 18, 19, 1548, 12, 21, 2224, 5, 2385, 2257, 2136, 2259, 2260, 11, 489, 490, 2264, 492, 2266, 2267, 2268, 19, 2270, 163, 2272, 3980, 1786, 399, 2276, 239, 3062, 2279, 2619, 5549, 261, 51, 5128, 265, 265, 37, 244, 78, 270, 1048, 1049, 1050, 186, 5211, 78, 5294, 1810, 88, 2300, 130, 451, 132, 428, 280, 88, 2635, 2636, 2637, 285, 2311, 3764, 3000, 3766, 400, 484, 402, 3757, 2319, 2320, 489, 354, 491, 489, 474, 2326, 156, 6, 453, 1161, 6, 312, 2462, 12, 2335, 2908, 12, 6, 413, 3265, 2376, 2377, 428, 12, 2380, 3271, 490, 328, 4001, 493, 5, 2020, 3137, 2797, 2798, 2356, 11, 3493, 2802, 2028, 2361, 2362, 413, 3743, 489, 360, 399, 70, 192, 4681, 336, 5, 5, 76, 92, 2376, 2377, 11, 11, 2380, 239, 2382, 2383, 15, 16, 88, 2997, 2998, 6, 2908, 214, 354, 3351, 488, 12, 428, 2840, 2841, 493, 484, 400, 396, 402, 3312, 489, 2406, 491, 5405, 2409, 488, 3424, 3425, 22, 116, 493, 118, 185, 3307, 28, 3799, 453, 357, 2810, 10, 2812, 2813, 13, 257, 258, 259, 260, 2432, 2433, 5350, 264, 265, 399, 3305, 490, 242, 270, 493, 280, 438, 425, 275, 2447, 285, 2449, 2450, 910, 489, 2423, 491, 3027, 915, 489, 44, 282, 2799, 3027, 242, 3681, 3353, 51, 428, 34, 35, 4991, 172, 4993, 2811, 196, 490, 4997, 4998, 493, 350, 351, 2480, 2481, 2482, 186, 490, 2153, 2486, 493, 350, 351, 76, 453, 2492, 5490, 490, 489, 354, 493, 200, 96, 2500, 244, 487, 2503, 489, 2844, 491, 2542, 490, 2509, 413, 493, 490, 282, 84, 493, 1347, 5433, 2518, 4794, 2520, 1352, 1353, 490, 5046, 57, 493, 489, 257, 258, 259, 260, 357, 490, 2534, 1366, 493, 2537, 5076, 2539, 3992, 399, 2542, 444, 490, 3155, 2546, 493, 489, 2549, 2889, 3708, 3709, 490, 350, 351, 493, 143, 5402, 220, 145, 2561, 2562, 265, 3174, 350, 351, 3987, 270, 96, 428, 490, 169, 158, 493, 487, 11, 489, 163, 2579, 4759, 489, 2743, 5499, 490, 2746, 415, 493, 2749, 2589, 490, 2591, 451, 493, 453, 453, 2588, 426, 280, 4007, 2548, 187, 5261, 5262, 490, 202, 192, 493, 4714, 354, 312, 266, 267, 490, 493, 490, 493, 2737, 493, 2619, 217, 4932, 489, 489, 491, 210, 328, 1458, 57, 4940, 227, 489, 451, 490, 453, 490, 493, 1468, 493, 400, 444, 402, 169, 229, 3338, 230, 2646, 5288, 2648, 2649, 2650, 2651, 475, 476, 477, 478, 253, 480, 481, 482, 483, 484, 485, 490, 490, 4620, 493, 493, 5384, 5385, 490, 5515, 4627, 493, 84, 202, 490, 4632, 442, 493, 4635, 1512, 1513, 280, 47, 3692, 2686, 471, 239, 3587, 217, 3580, 277, 216, 2862, 490, 282, 491, 493, 490, 227, 286, 493, 283, 4659, 360, 475, 476, 477, 478, 283, 480, 481, 482, 483, 484, 485, 4672, 3477, 3329, 280, 3331, 10, 425, 1555, 13, 253, 1558, 1559, 17, 18, 19, 490, 163, 4840, 493, 5580, 2737, 400, 280, 402, 396, 3314, 2743, 3316, 47, 2746, 344, 3314, 2749, 3316, 39, 471, 490, 490, 3651, 493, 493, 2758, 2927, 471, 283, 2799, 39, 490, 239, 2766, 493, 482, 490, 4311, 2771, 493, 216, 490, 490, 39, 493, 493, 3466, 167, 10, 58, 438, 13, 490, 372, 492, 17, 18, 19, 490, 3690, 493, 493, 58, 451, 2797, 2798, 2799, 490, 490, 2802, 354, 493, 490, 490, 2844, 493, 493, 2810, 2811, 2812, 2813, 451, 44, 453, 344, 490, 474, 489, 493, 51, 2823, 490, 3397, 2826, 493, 2828, 57, 490, 3397, 108, 493, 489, 432, 4198, 490, 4200, 424, 2840, 2841, 168, 490, 2844, 108, 493, 76, 399, 490, 212, 489, 493, 621, 4293, 490, 490, 3765, 493, 493, 490, 489, 2862, 493, 2864, 491, 2866, 294, 2868, 490, 490, 490, 493, 493, 493, 490, 490, 428, 493, 493, 354, 455, 3492, 4838, 490, 489, 472, 493, 5349, 2889, 489, 3646, 478, 2893, 480, 481, 482, 483, 484, 485, 2900, 490, 453, 492, 3793, 192, 3795, 150, 490, 490, 1741, 493, 493, 2894, 2895, 2896, 2916, 334, 489, 195, 2957, 130, 491, 132, 2924, 399, 214, 150, 145, 3818, 3735, 490, 195, 360, 493, 280, 192, 490, 489, 2939, 493, 158, 490, 4898, 334, 493, 163, 156, 716, 717, 150, 3840, 490, 2953, 428, 493, 490, 2957, 187, 493, 2960, 490, 2962, 192, 493, 10, 280, 243, 13, 396, 246, 150, 17, 18, 19, 490, 192, 150, 493, 453, 243, 280, 163, 246, 3502, 261, 490, 490, 334, 493, 493, 36, 150, 210, 282, 3903, 228, 118, 261, 44, 229, 490, 280, 3003, 493, 3005, 51, 432, 244, 490, 3010, 438, 493, 230, 490, 489, 489, 493, 1849, 295, 490, 3879, 490, 493, 451, 493, 490, 2900, 1859, 493, 1861, 76, 295, 413, 274, 490, 1867, 3037, 493, 3039, 3040, 3041, 490, 1874, 842, 493, 844, 474, 257, 258, 259, 260, 444, 282, 490, 264, 490, 493, 163, 493, 277, 270, 489, 339, 490, 357, 275, 493, 836, 286, 838, 220, 490, 70, 3889, 1832, 339, 265, 1835, 490, 2953, 490, 493, 490, 493, 361, 493, 5042, 490, 490, 490, 493, 493, 493, 490, 39, 265, 493, 361, 4142, 455, 3544, 3545, 3546, 3547, 381, 489, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560, 381, 490, 280, 163, 493, 1880, 1881, 490, 265, 47, 493, 2797, 2798, 47, 490, 490, 2802, 493, 493, 265, 1895, 418, 3308, 1898, 187, 372, 87, 5100, 490, 192, 490, 493, 265, 493, 490, 3153, 490, 493, 490, 493, 490, 493, 490, 493, 490, 493, 296, 493, 150, 3610, 3611, 214, 215, 444, 2840, 2841, 5129, 2006, 2007, 490, 490, 444, 493, 493, 2013, 2014, 229, 163, 315, 475, 476, 477, 478, 150, 480, 481, 482, 483, 484, 485, 150, 490, 3539, 1958, 493, 489, 1961, 1962, 415, 424, 680, 489, 441, 308, 489, 150, 2045, 38, 455, 426, 489, 150, 150, 493, 150, 268, 150, 150, 150, 490, 150, 150, 163, 150, 150, 150, 706, 3574, 150, 282, 150, 280, 285, 396, 489, 472, 39, 228, 475, 476, 477, 478, 163, 480, 481, 482, 483, 484, 485, 163, 280, 489, 163, 292, 489, 3, 489, 3265, 212, 489, 489, 10, 487, 3271, 13, 490, 491, 489, 17, 18, 19, 5234, 3280, 489, 489, 3622, 489, 3285, 3286, 27, 489, 452, 489, 489, 489, 489, 489, 36, 489, 489, 489, 489, 489, 3819, 489, 489, 489, 489, 489, 489, 4465, 489, 39, 489, 4210, 489, 99, 39, 493, 228, 493, 493, 3320, 3321, 3322, 163, 277, 163, 275, 372, 367, 66, 408, 2162, 2163, 408, 4232, 354, 408, 3337, 408, 443, 354, 3951, 3952, 491, 408, 408, 354, 87, 230, 408, 408, 477, 3387, 408, 88, 354, 150, 280, 359, 3359, 3360, 225, 4049, 4050, 4051, 4052, 4053, 124, 408, 3369, 3370, 3371, 408, 270, 408, 3375, 399, 10, 3378, 431, 13, 280, 350, 275, 17, 18, 19, 3387, 489, 185, 300, 3383, 408, 2224, 489, 1163, 408, 88, 124, 493, 140, 296, 4822, 36, 192, 39, 150, 432, 432, 124, 408, 396, 408, 408, 396, 5370, 408, 408, 3410, 408, 110, 408, 408, 124, 58, 57, 57, 472, 408, 408, 475, 476, 477, 478, 408, 480, 481, 482, 483, 484, 485, 250, 3477, 408, 408, 490, 10, 284, 493, 13, 408, 3618, 192, 17, 18, 19, 3456, 408, 198, 319, 1228, 4227, 46, 408, 399, 300, 408, 300, 408, 408, 46, 214, 36, 214, 108, 493, 408, 3477, 280, 408, 1248, 490, 214, 3926, 494, 4937, 455, 214, 2319, 5444, 3490, 963, 214, 3493, 280, 5450, 214, 214, 280, 280, 2257, 214, 214, 214, 408, 39, 150, 2264, 489, 418, 2267, 2268, 1280, 28, 280, 3515, 988, 265, 4426, 116, 150, 150, 150, 3523, 3524, 432, 3526, 150, 1296, 280, 236, 1003, 265, 275, 3534, 265, 3536, 4055, 172, 3539, 265, 282, 443, 451, 3544, 3545, 3546, 3547, 39, 163, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560, 195, 302, 39, 3564, 3565, 220, 356, 38, 2400, 406, 150, 406, 150, 3574, 432, 408, 2408, 3578, 3616, 2411, 214, 3582, 408, 489, 150, 408, 489, 408, 489, 3590, 4218, 2423, 3593, 487, 3595, 5551, 150, 3635, 489, 4525, 487, 489, 432, 150, 345, 274, 3607, 408, 243, 3610, 3611, 246, 269, 168, 3615, 3616, 447, 1386, 1387, 3620, 1389, 3622, 489, 250, 250, 3794, 261, 13, 3629, 3630, 3631, 3632, 406, 493, 3635, 3636, 489, 489, 408, 3640, 3641, 3642, 3624, 3625, 3626, 3627, 3647, 177, 282, 214, 3819, 159, 185, 394, 168, 410, 185, 210, 218, 370, 295, 493, 490, 281, 3657, 39, 493, 3657, 3657, 432, 289, 3657, 3673, 493, 3657, 57, 490, 354, 489, 4290, 218, 432, 423, 270, 218, 244, 3687, 270, 3689, 489, 431, 408, 413, 434, 444, 4383, 4384, 357, 4386, 408, 408, 163, 220, 270, 339, 280, 3707, 3708, 3709, 47, 3711, 39, 376, 265, 350, 228, 280, 282, 228, 228, 408, 399, 280, 124, 493, 1198, 361, 3728, 3729, 3730, 3731, 280, 60, 475, 476, 477, 478, 280, 480, 481, 482, 483, 484, 485, 280, 334, 381, 367, 186, 408, 364, 4446, 408, 322, 286, 39, 3757, 214, 3632, 432, 432, 3635, 220, 4374, 275, 150, 94, 318, 490, 163, 444, 477, 39, 165, 3775, 397, 275, 319, 364, 489, 150, 150, 150, 4941, 4303, 489, 275, 265, 4128, 5331, 432, 39, 265, 451, 280, 280, 220, 163, 39, 183, 2632, 2633, 183, 164, 490, 487, 2638, 490, 471, 471, 490, 490, 358, 248, 490, 220, 364, 163, 265, 280, 192, 192, 26, 493, 27, 192, 154, 192, 32, 192, 455, 175, 493, 3707, 4003, 408, 489, 168, 247, 493, 451, 475, 476, 477, 478, 4988, 480, 481, 482, 483, 484, 485, 280, 493, 274, 3826, 57, 413, 220, 396, 10, 189, 4473, 13, 168, 444, 168, 2699, 3839, 490, 74, 168, 489, 3874, 4764, 3544, 3545, 3546, 3547, 292, 490, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560, 220, 490, 44, 490, 490, 225, 4977, 490, 4979, 51, 490, 493, 301, 168, 490, 489, 3909, 3578, 475, 476, 477, 478, 490, 480, 481, 482, 483, 484, 485, 3922, 490, 3924, 128, 3926, 76, 490, 264, 408, 471, 135, 3933, 291, 138, 242, 448, 265, 3939, 489, 430, 3610, 3611, 34, 35, 489, 473, 238, 3949, 489, 489, 448, 477, 280, 438, 57, 280, 283, 489, 280, 164, 489, 196, 3964, 150, 489, 408, 3968, 455, 297, 270, 408, 408, 204, 153, 408, 265, 3978, 150, 2737, 367, 284, 359, 150, 150, 2743, 3987, 196, 2746, 228, 153, 2749, 280, 143, 198, 359, 3997, 477, 408, 359, 4001, 432, 153, 3996, 95, 493, 230, 4008, 4009, 302, 338, 429, 302, 153, 342, 53, 124, 408, 408, 408, 408, 240, 240, 351, 115, 5183, 5184, 383, 240, 408, 408, 359, 5175, 408, 354, 4792, 354, 187, 4039, 367, 4041, 354, 192, 354, 265, 4673, 150, 4048, 1521, 4218, 367, 379, 46, 408, 408, 408, 408, 261, 149, 97, 388, 265, 488, 408, 392, 408, 408, 4883, 490, 490, 214, 275, 214, 490, 2906, 214, 2908, 214, 490, 229, 284, 180, 4083, 411, 122, 493, 490, 3, 418, 163, 47, 336, 296, 109, 3968, 490, 4097, 493, 4726, 2931, 2932, 139, 163, 39, 4715, 143, 489, 150, 150, 408, 490, 163, 180, 489, 150, 488, 432, 432, 446, 354, 477, 354, 450, 283, 354, 354, 164, 4128, 4572, 167, 4131, 490, 282, 337, 338, 148, 364, 488, 4139, 4140, 4480, 354, 2900, 493, 182, 148, 487, 4148, 4149, 214, 214, 5077, 4153, 141, 214, 214, 1925, 214, 4159, 214, 214, 4162, 4163, 367, 214, 5323, 4167, 4168, 168, 13, 493, 292, 4173, 4174, 4175, 4176, 4177, 163, 490, 443, 4181, 4182, 4183, 168, 4185, 4186, 264, 448, 4189, 490, 168, 489, 4193, 474, 490, 2953, 4197, 177, 490, 493, 0, 437, 4203, 4891, 490, 405, 489, 489, 493, 341, 1979, 490, 490, 86, 4902, 163, 418, 4218, 39, 220, 408, 432, 372, 204, 432, 57, 4227, 150, 399, 489, 4231, 435, 270, 172, 383, 4236, 4229, 4230, 418, 330, 359, 153, 354, 408, 4251, 354, 408, 408, 490, 408, 4251, 408, 490, 4254, 334, 451, 57, 3926, 490, 163, 438, 1734, 489, 399, 76, 280, 150, 109, 490, 360, 418, 214, 214, 4274, 4275, 489, 5419, 10, 1751, 214, 13, 5194, 320, 5173, 17, 18, 19, 214, 218, 199, 2059, 489, 4293, 4981, 408, 95, 1769, 455, 280, 493, 329, 490, 493, 36, 39, 396, 278, 4308, 300, 280, 3, 493, 489, 418, 408, 489, 364, 493, 174, 4193, 490, 109, 472, 4197, 488, 168, 4297, 214, 478, 168, 480, 481, 482, 483, 484, 485, 4307, 490, 490, 57, 292, 10, 489, 449, 13, 145, 449, 438, 17, 18, 19, 442, 1825, 217, 217, 490, 490, 4358, 158, 489, 451, 490, 493, 163, 490, 1838, 489, 398, 168, 290, 287, 489, 57, 181, 174, 490, 275, 177, 1851, 405, 5270, 181, 477, 474, 4385, 418, 408, 168, 451, 76, 1863, 193, 198, 186, 186, 270, 270, 57, 489, 4400, 477, 4974, 399, 493, 493, 70, 408, 150, 153, 408, 210, 490, 2181, 408, 489, 4988, 214, 408, 123, 170, 4864, 168, 116, 5111, 39, 432, 192, 275, 432, 39, 230, 489, 364, 4434, 1907, 1908, 265, 165, 163, 364, 275, 451, 82, 57, 399, 5140, 451, 39, 168, 4450, 280, 163, 489, 201, 212, 4456, 283, 168, 437, 489, 380, 489, 4131, 490, 4465, 490, 300, 217, 489, 4988, 489, 489, 88, 450, 131, 280, 3308, 277, 490, 4480, 280, 214, 328, 489, 408, 39, 286, 150, 150, 408, 163, 489, 4493, 489, 4495, 39, 270, 490, 196, 4492, 3332, 241, 489, 364, 4673, 489, 489, 150, 109, 5137, 136, 6, 39, 489, 489, 489, 4185, 490, 10, 447, 490, 13, 284, 418, 378, 17, 18, 19, 4529, 4869, 490, 378, 57, 39, 79, 489, 489, 4726, 489, 489, 437, 341, 399, 489, 36, 4714, 493, 185, 399, 282, 432, 163, 44, 261, 280, 489, 6, 4726, 399, 51, 157, 490, 455, 4725, 149, 351, 351, 489, 4908, 70, 283, 4572, 70, 131, 489, 451, 2049, 10, 436, 451, 13, 489, 437, 489, 76, 39, 493, 367, 168, 3421, 10, 325, 399, 13, 270, 136, 396, 17, 18, 19, 4601, 4602, 5175, 198, 4605, 280, 280, 4769, 489, 364, 39, 44, 5502, 282, 39, 283, 283, 193, 51, 4620, 489, 170, 4623, 170, 424, 490, 4627, 493, 448, 489, 57, 4632, 4972, 4973, 4635, 4636, 408, 4638, 490, 4640, 350, 4642, 4643, 76, 121, 387, 430, 6, 448, 364, 450, 451, 10, 490, 350, 13, 4652, 146, 4659, 5103, 4661, 489, 287, 335, 489, 489, 489, 493, 25, 36, 3502, 4672, 4673, 4674, 493, 4676, 5566, 270, 489, 149, 168, 408, 288, 79, 350, 489, 44, 487, 378, 378, 490, 491, 492, 51, 5584, 187, 191, 451, 451, 170, 192, 170, 1618, 2546, 877, 200, 201, 1353, 925, 924, 143, 838, 2431, 208, 2908, 210, 211, 3087, 76, 3793, 2350, 5314, 214, 215, 4725, 4726, 3768, 2516, 2457, 224, 3299, 5173, 4767, 5419, 3949, 4822, 4436, 229, 4791, 3004, 2686, 5314, 475, 476, 477, 478, 4620, 480, 481, 482, 483, 484, 485, 4627, 187, 5293, 4672, 5097, 4632, 192, 5408, 4635, 5203, 5202, 5334, 5444, 3008, 3997, 4769, 3982, 5147, 4772, 3940, 2531, 5114, 2531, 268, 3112, 5118, 3349, 5120, 3788, 920, 4784, 4474, 4659, 4787, 3965, 2261, 4798, 282, 4792, 2525, 4794, 214, 3361, 229, 4807, 4672, 5421, 4801, 4837, 2275, 4796, 5584, 5566, 475, 476, 477, 478, 4784, 480, 481, 482, 483, 484, 485, 4818, 3307, 2588, 4005, 4822, 5347, 4728, 4825, 4960, 1777, 4731, 5156, 187, 28, 4058, 4928, 2200, 192, 4836, 4837, 4838, 5512, 2982, 5077, 4834, 1190, 2316, 4007, 1823, 5419, 1821, 1982, 282, 1982, 704, 1891, 671, 3241, 1832, 3818, 1983, 3353, 2456, 5375, 3840, 282, 4864, 5554, 1437, 4867, 4028, 4869, 2132, 4908, 229, 817, 4030, 3632, 839, 2143, 3635, 1926, 4655, 372, 4231, 5287, 3687, 2924, 1326, 2939, 4888, 2179, 1396, 1373, 1395, 2153, 4894, 3650, 5279, 5122, 4898, 4215, 4182, 1398, 4902, 2178, 4572, 3635, 4199, 3632, 4908, 4899, 1403, 5100, 5099, 3688, 3632, 5560, 5392, 4917, 5481, 5269, 1856, 4867, 3582, 4647, 5282, 282, 5283, 2083, 2867, 10, 2486, 2767, 13, 2865, 2086, -1, 17, 18, 19, 4939, 372, 4941, -1, -1, -1, -1, -1, -1, -1, -1, 3707, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3794, -1, 4838, -1, 4967, -1, 5137, -1, -1, 4972, 4973, -1, -1, -1, 4977, 4978, 4979, 4980, 472, -1, -1, 475, 476, 477, 478, 3819, 480, 481, 482, 483, 484, 485, 3826, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3839, -1, 5010, -1, -1, -1, -1, 372, -1, 5017, -1, -1, -1, -1, -1, -1, 39, 4898, -1, -1, -1, -1, -1, 2799, -1, -1, 5477, 5478, -1, -1, -1, 5039, 472, -1, 5042, 58, -1, -1, 478, 2519, 480, 481, 482, 483, 484, 485, -1, -1, 475, 476, 477, 478, 5052, 480, 481, 482, 483, 484, 485, -1, -1, -1, 10, -1, -1, 13, -1, -1, 2844, 17, 18, 19, -1, -1, -1, 3914, 3915, -1, -1, -1, -1, -1, -1, -1, -1, 108, 109, -1, -1, 5097, -1, 2867, 5100, 116, -1, 5103, 44, -1, -1, 5107, -1, -1, -1, 51, -1, -1, 5114, 472, 2884, -1, 5118, -1, 5120, 478, 5122, 480, 481, 482, 483, 484, 485, 5129, -1, -1, 2900, 214, 5126, -1, 76, 5137, -1, -1, 5301, 635, -1, -1, -1, -1, -1, 641, 5148, -1, -1, -1, -1, -1, 5493, -1, -1, 172, -1, -1, 654, -1, -1, -1, -1, -1, -1, -1, -1, 5042, -1, -1, 4003, -1, -1, -1, 670, -1, -1, -1, 195, 675, -1, 5183, 5184, 2953, 680, -1, -1, 2957, 684, 685, -1, -1, -1, -1, 4864, 691, -1, 693, 694, 282, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3968, 706, 707, 5214, 5376, 5377, -1, -1, -1, 4888, 5221, -1, 717, 4055, 5225, -1, 5100, 243, -1, -1, 246, -1, -1, 5234, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, 187, -1, -1, 265, 2723, 192, -1, -1, -1, 5129, -1, -1, -1, 5260, 5261, 5262, -1, -1, -1, 5266, -1, 2740, 5269, -1, -1, -1, -1, 214, 215, -1, -1, -1, 5279, 295, -1, 5282, 2755, -1, -1, -1, 5287, -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5301, 796, 797, -1, -1, -1, -1, 802, -1, -1, -1, -1, -1, -1, -1, 5316, -1, -1, -1, -1, -1, -1, 5323, 339, -1, -1, -1, 268, -1, -1, -1, 826, -1, 828, -1, -1, -1, -1, -1, -1, -1, 282, -1, -1, 839, 361, -1, -1, 5349, -1, -1, -1, 0, 5354, -1, 5348, -1, -1, -1, 5360, 5234, -1, -1, -1, -1, 381, -1, 383, -1, 5370, 386, -1, -1, -1, -1, 5376, 5377, 5378, -1, -1, -1, -1, 5375, -1, -1, 5375, 5375, 5388, -1, 5375, -1, 5392, 5375, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, -1, -1, 5413, -1, -1, 5453, -1, -1, -1, -1, -1, -1, -1, -1, 5586, 5587, -1, -1, -1, -1, -1, 372, -1, -1, 5103, 4193, -1, -1, -1, 4197, -1, -1, -1, 5444, 5445, 5446, -1, 95, -1, 5450, -1, -1, 947, 948, 949, -1, -1, -1, -1, -1, 5453, 956, -1, 5453, 5453, 4297, -1, 5453, 963, -1, 5453, 4303, 967, 489, -1, 4307, 5477, 5478, 973, -1, -1, 976, -1, -1, -1, -1, -1, 5488, -1, -1, -1, -1, 5493, 988, -1, -1, 5370, 145, -1, -1, -1, 4333, 4334, -1, -1, -1, 4338, 4339, 1003, -1, 158, -1, -1, -1, -1, 163, -1, -1, -1, -1, 168, -1, 5523, -1, 26, -1, 174, -1, -1, 177, 32, 472, 5533, 181, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, 5548, -1, -1, 5551, -1, -1, 1048, 1049, 1050, -1, -1, 3031, 5560, -1, 5554, 210, 5564, 5554, 5554, -1, -1, 5554, -1, 5444, 5554, 74, -1, -1, -1, 5450, 3050, -1, -1, -1, -1, 230, -1, -1, 5586, 5587, -1, -1, -1, -1, -1, -1, 1088, -1, -1, -1, -1, -1, -1, 5269, 10, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3383, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, 277, 1125, -1, 280, 135, -1, 44, 138, -1, 286, -1, -1, 3410, 51, -1, -1, -1, -1, -1, 1143, -1, -1, -1, -1, -1, -1, -1, 10, -1, 1153, 13, 0, -1, 164, -1, -1, -1, 1161, 76, -1, -1, -1, -1, 3145, -1, 3147, -1, -1, 5551, 26, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, 44, -1, 4450, 341, 1189, -1, 198, 51, -1, -1, -1, 201, -1, 1198, 10, 1200, -1, 13, -1, -1, 210, 17, 18, 19, -1, -1, -1, -1, -1, 5388, -1, 1216, 76, -1, 224, 1220, 74, -1, -1, -1, 36, -1, -1, -1, 143, -1, -1, 1232, 44, -1, -1, -1, -1, -1, -1, 51, -1, -1, 396, -1, -1, -1, -1, -1, -1, 95, -1, -1, -1, 261, -1, -1, -1, 265, -1, 3238, -1, -1, 1263, -1, 76, -1, -1, 275, -1, -1, 424, -1, 187, -1, 128, -1, 284, 192, -1, -1, -1, 135, -1, 143, 138, -1, -1, -1, 296, -1, 1291, -1, 1293, 1294, 448, 1296, 450, 451, -1, 145, 3279, -1, 5477, 5478, -1, -1, -1, -1, -1, -1, 164, -1, 158, -1, 229, 1316, -1, 163, -1, -1, -1, -1, 168, -1, -1, -1, 334, 187, 174, 337, 338, 177, 192, 487, -1, 181, 490, 491, 492, -1, -1, 3616, -1, 1344, 198, -1, -1, -1, -1, -1, -1, 1352, 1353, -1, -1, -1, 4620, 3632, -1, 367, 3635, -1, -1, 4627, 210, 1366, -1, 282, 4632, 229, -1, 4635, 4636, -1, -1, 187, 4714, -1, -1, -1, 192, -1, 3657, -1, 230, -1, -1, 1388, 29, -1, -1, 1392, 1393, -1, -1, 4659, -1, -1, 3377, -1, -1, -1, 214, 215, -1, -1, 1407, 261, 4672, -1, -1, 265, 1413, -1, -1, -1, -1, 229, 1419, -1, -1, 275, 282, -1, -1, -1, -1, 435, -1, -1, 284, 277, -1, 3412, 280, -1, 24, 78, -1, -1, 286, 29, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 372, -1, -1, -1, 4725, -1, -1, -1, -1, -1, -1, -1, 110, 282, -1, -1, 285, -1, -1, 64, -1, -1, 1480, 334, -1, -1, 337, 338, -1, -1, -1, -1, 77, -1, -1, 133, -1, -1, 341, -1, -1, -1, -1, -1, -1, -1, 144, 92, 4769, -1, 10, -1, -1, 13, -1, 372, 367, 17, 18, 19, -1, -1, -1, 1521, -1, -1, -1, 165, -1, -1, -1, -1, 170, -1, -1, -1, 36, -1, -1, -1, -1, -1, 3518, -1, 44, -1, -1, -1, 133, -1, -1, 51, -1, 396, -1, -1, 1554, -1, -1, 144, 472, -1, -1, 372, -1, -1, 478, 3543, 480, 481, 482, 483, 484, 485, -1, -1, 76, 4838, -1, -1, 165, 424, -1, 221, 435, 170, -1, -1, -1, -1, -1, -1, -1, 3569, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 242, 448, -1, 450, 451, -1, -1, -1, -1, -1, -1, 472, -1, -1, 1616, -1, -1, 478, -1, 480, 481, 482, 483, 484, 485, 3605, -1, -1, 635, 1631, 1632, 1633, -1, 4898, 641, -1, -1, -1, -1, -1, 487, -1, -1, 490, 491, 492, -1, 654, -1, 4988, -1, -1, -1, 242, -1, -1, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 315, 316, -1, -1, 319, -1, -1, 493, -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, 3968, 282, -1, -1, -1, -1, -1, -1, -1, -1, -1, 345, -1, -1, 348, -1, -1, -1, 214, 215, 354, -1, -1, -1, -1, -1, -1, 361, 3996, -1, -1, -1, -1, 229, 315, 316, -1, -1, -1, -1, 1734, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 390, 1751, -1, -1, 5017, -1, 396, -1, -1, 399, -1, 348, -1, -1, 1764, -1, 268, 354, -1, 1769, -1, -1, -1, -1, 361, -1, -1, 364, 418, 5042, 282, -1, -1, 285, -1, -1, -1, -1, 1788, -1, -1, -1, -1, -1, -1, -1, 1796, -1, -1, -1, -1, -1, -1, -1, 444, -1, -1, -1, 1808, 396, -1, -1, -1, -1, -1, -1, 403, -1, -1, -1, -1, -1, -1, -1, 411, 1825, -1, -1, 5165, -1, -1, 418, 1832, -1, -1, 1835, -1, 5100, 1838, -1, -1, -1, -1, -1, -1, 1845, -1, -1, -1, -1, -1, 1851, -1, -1, -1, -1, -1, 444, -1, -1, -1, -1, -1, 1863, -1, -1, 5129, -1, -1, -1, 372, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1880, 1881, -1, 1883, 1884, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1895, -1, 1897, 1898, -1, -1, -1, -1, -1, 17, -1, -1, 1907, 1908, -1, 1910, 1911, -1, 26, -1, -1, -1, -1, -1, 4193, -1, -1, -1, 4197, -1, -1, 1926, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4229, 4230, -1, 1958, -1, -1, 1961, 1962, -1, -1, -1, -1, -1, -1, -1, 472, 5234, -1, 475, 476, 477, 478, 3955, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, 26, -1, -1, 493, -1, -1, 32, -1, 1996, -1, 1998, -1, -1, -1, -1, 2003, 2004, -1, -1, 45, -1, -1, 2010, 2011, 2012, -1, -1, 2015, -1, 2017, -1, 2019, 2020, 2021, 2022, 2023, 2024, -1, 2026, -1, 2028, 2029, -1, -1, 2032, -1, -1, -1, 74, -1, 5301, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2049, 2050, 2051, 2052, 2053, 2054, -1, -1, -1, 2058, -1, -1, -1, 2062, 39, -1, 2065, -1, -1, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, -1, 2079, -1, -1, -1, -1, 60, -1, 2086, -1, 126, 2089, 128, 5354, -1, -1, 3, -1, -1, 135, -1, -1, 138, 10, -1, -1, 13, -1, -1, 5370, 17, 18, 19, -1, -1, 5376, 5377, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, 164, 36, -1, -1, 39, -1, 2132, -1, -1, 44, -1, -1, 2138, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2153, -1, -1, -1, -1, -1, -1, 198, -1, 2162, 2163, -1, 5502, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, 4154, -1, 154, -1, -1, 5444, -1, -1, -1, -1, -1, 5450, 2188, -1, -1, -1, -1, -1, -1, 2195, -1, -1, -1, 2199, 2200, -1, -1, -1, -1, -1, 2206, -1, -1, -1, -1, 2211, 2212, 189, -1, -1, 2216, -1, 4492, -1, -1, -1, -1, 261, 2224, -1, -1, 265, -1, 5566, -1, -1, -1, -1, -1, -1, -1, 275, -1, -1, -1, -1, 2242, -1, 220, 2245, 284, 5584, -1, 225, -1, -1, -1, -1, -1, -1, -1, 2257, 296, -1, -1, 2261, -1, -1, 2264, -1, -1, 2267, 2268, -1, -1, -1, -1, -1, -1, 2275, -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, 2287, 5551, 265, -1, -1, -1, -1, 4272, -1, 334, -1, -1, 337, 338, 5564, -1, -1, -1, 214, 215, 2307, 2308, -1, -1, -1, -1, -1, -1, -1, 2316, -1, -1, -1, 229, 297, -1, 5586, 5587, -1, -1, -1, -1, 367, -1, -1, -1, -1, -1, 4313, -1, -1, 2338, 2339, -1, -1, 2342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4627, -1, -1, -1, 4335, 4632, 268, -1, 4635, 338, -1, -1, 2365, 342, 2367, -1, -1, -1, 2371, -1, 282, -1, 351, 285, -1, 2378, -1, -1, -1, -1, 359, -1, 2385, -1, -1, 2388, -1, -1, 367, -1, -1, 2394, -1, -1, 435, -1, -1, -1, -1, -1, 379, -1, -1, -1, -1, -1, -1, -1, -1, 388, -1, 2414, -1, 392, -1, -1, -1, 2420, -1, -1, -1, -1, 2425, -1, 4405, 2428, -1, -1, -1, -1, -1, -1, 411, -1, -1, 2438, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2451, -1, -1, -1, -1, 2456, -1, -1, -1, -1, -1, 2462, 372, -1, -1, -1, -1, -1, -1, 446, -1, -1, -1, 450, -1, 10, -1, -1, 13, 2480, 2481, 2482, 17, 18, 19, 2486, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 618, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, 51, 2518, 2519, -1, -1, 4796, -1, -1, -1, -1, -1, 2528, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, 4527, -1, -1, -1, -1, -1, -1, -1, 670, 671, -1, 4834, -1, 2562, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4576, -1, -1, 2601, 60, -1, 2604, -1, -1, -1, -1, 2609, -1, 1616, -1, -1, -1, -1, -1, -1, -1, 2619, -1, -1, -1, -1, 4898, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4908, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 764, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, -1, -1, -1, 2665, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 790, -1, -1, 214, 215, -1, -1, -1, 798, -1, -1, 801, 802, 803, -1, -1, -1, 10, 229, 154, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, 2707, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 2723, -1, 2725, -1, -1, 44, -1, -1, 189, -1, 2733, 268, 51, -1, 2737, -1, -1, 2740, -1, -1, 2743, -1, -1, 2746, -1, 282, 2749, -1, 285, -1, -1, 10, 2755, -1, 13, -1, -1, 76, 17, 18, 19, -1, -1, 2766, 225, 5042, -1, -1, 2771, -1, -1, -1, -1, -1, -1, 5052, -1, 36, -1, -1, 1788, 40, -1, -1, -1, 44, -1, -1, 1796, -1, -1, -1, 51, -1, 2797, 2798, 2799, -1, -1, 2802, 1808, -1, -1, -1, 265, -1, -1, 2810, 2811, 2812, 2813, -1, -1, -1, -1, 2818, -1, 76, -1, -1, 2823, 2824, -1, 2826, -1, 2828, -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, 297, 2840, 2841, -1, -1, 2844, -1, -1, -1, -1, -1, -1, -1, 5126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2864, -1, 2866, -1, 2868, 125, -1, 187, -1, -1, -1, -1, 192, -1, -1, 1884, 338, -1, 340, -1, 342, -1, -1, 4865, -1, 2889, -1, -1, -1, 351, -1, -1, -1, -1, 214, 215, 2900, 359, -1, -1, -1, -1, 1911, -1, 2908, 367, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, 379, -1, -1, 2924, -1, 4904, -1, -1, -1, 388, 187, -1, -1, 392, -1, 192, -1, 472, 2939, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 268, 2953, -1, -1, 490, -1, 214, 215, -1, -1, -1, -1, -1, -1, 282, -1, -1, 285, -1, -1, 2972, 229, -1, 2975, -1, 2977, -1, 4957, -1, -1, 2982, -1, 4962, 4963, -1, -1, 446, -1, -1, -1, -1, -1, -1, -1, -1, 2997, 2998, -1, -1, -1, -1, 3003, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, 26, -1, -1, -1, -1, -1, 32, -1, -1, 3024, -1, 282, 3027, -1, 285, 1143, 3031, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1161, -1, 3050, -1, -1, -1, -1, -1, 372, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5348, 3075, -1, -1, -1, -1, -1, -1, 1195, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5078, 5375, -1, -1, -1, -1, -1, 1220, -1, -1, -1, 3111, 3112, 3113, -1, 126, 372, 128, -1, -1, -1, -1, -1, -1, 135, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, 3135, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3145, -1, 3147, -1, -1, -1, -1, -1, 164, -1, 3155, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, 488, -1, 3174, -1, 432, -1, -1, 5453, -1, -1, -1, 2188, -1, 1298, -1, 198, -1, -1, -1, -1, -1, -1, 1307, -1, -1, -1, -1, -1, -1, 2206, -1, -1, -1, -1, -1, 2212, 1321, -1, -1, 2216, -1, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 26, 1344, -1, -1, 1347, 1348, 32, 2242, 3238, 1352, 1353, -1, -1, -1, -1, -1, -1, -1, -1, 45, 261, -1, -1, 1366, 265, -1, -1, -1, -1, 10, 3260, -1, 13, -1, 275, 3265, 17, 18, 19, -1, -1, 3271, -1, 284, -1, -1, -1, -1, 74, 3279, 5554, -1, 2287, -1, -1, 296, -1, -1, -1, -1, -1, -1, -1, 44, -1, 5273, -1, -1, -1, -1, 51, -1, 2307, -1, -1, -1, -1, 3307, 3308, -1, -1, -1, -1, -1, 3314, -1, 3316, -1, -1, -1, -1, -1, -1, 334, -1, 76, 337, 338, -1, 3329, -1, 3331, 128, -1, 2339, -1, -1, -1, -1, 135, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3353, -1, -1, 367, -1, -1, -1, 2365, -1, -1, -1, -1, -1, 2371, -1, 164, -1, -1, -1, -1, 2378, -1, -1, -1, 3377, -1, -1, 2385, -1, -1, 2388, -1, -1, -1, -1, -1, 2394, -1, -1, -1, -1, -1, -1, -1, 3397, 3398, -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, 2414, -1, -1, 3412, -1, -1, 2420, -1, -1, -1, 10, 2425, -1, 13, -1, 435, -1, 17, 18, 19, -1, -1, -1, -1, 2438, -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, 36, 2451, -1, -1, -1, -1, -1, 3452, 44, -1, -1, -1, 2462, -1, 1572, 51, -1, -1, 214, 215, 261, 1579, -1, -1, 265, 3470, -1, -1, -1, -1, -1, -1, -1, 229, 275, -1, -1, -1, -1, -1, 76, -1, -1, 284, -1, -1, -1, 3492, -1, -1, 3495, -1, -1, -1, -1, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3515, -1, 268, 3518, -1, -1, -1, -1, 3523, 3524, -1, 3526, -1, -1, -1, -1, 282, -1, -1, 3534, -1, 3536, -1, 334, 3539, -1, 337, 338, 3543, 3544, 3545, 3546, 3547, -1, -1, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560, -1, -1, -1, 3564, 3565, -1, -1, -1, 3569, -1, 367, -1, -1, 3574, -1, -1, -1, 3578, -1, 3580, -1, 3582, -1, -1, -1, -1, -1, -1, -1, 3590, -1, -1, 3593, -1, 3595, 187, 26, -1, -1, -1, 192, -1, 32, -1, 3605, -1, 3607, -1, -1, 3610, 3611, -1, -1, -1, 3615, 3616, -1, -1, -1, -1, 372, 3622, 214, 215, -1, -1, -1, -1, -1, -1, -1, 3632, -1, -1, 3635, -1, -1, 229, 435, -1, -1, -1, -1, -1, 74, -1, 3647, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3673, -1, -1, -1, 268, 1791, -1, -1, -1, 1795, -1, -1, -1, -1, -1, -1, 3689, -1, 282, -1, -1, 285, 3695, -1, -1, -1, 128, -1, -1, 2707, -1, -1, -1, 135, 3707, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2725, 472, -1, -1, 475, 476, 477, 478, 2733, 480, 481, 482, 483, 484, 485, 164, -1, -1, 3738, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, -1, -1, -1, -1, -1, -1, 3788, -1, -1, -1, -1, 3793, 3794, 3795, -1, -1, -1, -1, -1, -1, 26, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, 10, -1, -1, 13, -1, 3818, 3819, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, -1, 10, -1, 265, 13, -1, 36, 3840, 17, 18, 19, -1, -1, 275, 44, -1, -1, 74, -1, -1, -1, 51, 284, 3856, -1, -1, 3859, 36, -1, -1, -1, -1, -1, -1, 296, 44, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, 76, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, 2009, -1, -1, 490, 76, -1, -1, -1, 128, 334, -1, -1, 337, 338, -1, 135, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3926, -1, -1, -1, -1, -1, -1, 1093, -1, -1, -1, -1, 367, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3951, 3952, 1113, -1, 3955, -1, -1, -1, -1, -1, 3961, -1, 1123, -1, -1, -1, 1127, 3968, -1, -1, 1131, -1, 1133, 198, -1, -1, -1, -1, 1139, 3980, -1, -1, -1, -1, 1145, -1, -1, 1148, -1, 187, -1, -1, -1, -1, 192, -1, 2110, -1, -1, -1, -1, -1, 4003, -1, -1, 435, 4007, 4008, 4009, -1, 187, -1, -1, 8, -1, 192, 214, 215, 3024, 14, 15, -1, -1, -1, -1, 20, -1, 22, -1, -1, -1, 229, -1, 28, -1, 30, 261, 214, 215, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, -1, 229, -1, 49, 50, -1, 4058, -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4083, -1, 282, -1, -1, 285, -1, -1, -1, 268, -1, -1, -1, -1, 4097, -1, -1, -1, -1, -1, -1, -1, -1, 282, -1, -1, 285, 334, 2224, -1, 337, 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4128, -1, 3135, 4131, -1, -1, -1, -1, -1, -1, -1, 4139, 4140, -1, 4142, 367, -1, -1, -1, -1, 4148, 4149, -1, -1, -1, 4153, 4154, -1, -1, -1, -1, 4159, -1, -1, 4162, 4163, -1, -1, -1, 4167, -1, -1, -1, -1, -1, 4173, -1, 372, -1, -1, -1, -1, -1, 2294, -1, -1, -1, 4185, -1, -1, -1, -1, -1, -1, -1, 4193, -1, -1, 372, 4197, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, -1, -1, -1, 435, 206, -1, -1, 209, -1, -1, 212, 213, -1, 215, -1, 217, -1, -1, 220, 4227, 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4254, 3260, -1, -1, -1, -1, 2373, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, 472, -1, 2390, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, 4290, -1, -1, 490, -1, 4295, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, 4313, 490, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4330, -1, -1, -1, -1, 4335, -1, -1, -1, -1, -1, 2454, 4342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4358, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, 4374, -1, -1, 2490, -1, -1, 2493, -1, 2495, -1, -1, 36, 2499, -1, 2501, 2502, 26, -1, -1, 44, -1, -1, 32, 2510, 2511, 2512, 51, -1, -1, -1, -1, 4405, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, 4434, -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, 3452, -1, -1, 4450, -1, 2565, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3470, -1, -1, -1, -1, -1, -1, -1, 4473, -1, -1, -1, -1, -1, -1, 4480, -1, -1, -1, 2597, -1, -1, -1, -1, -1, 3495, -1, 128, -1, -1, -1, 2609, -1, -1, 135, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4525, -1, 4527, 164, -1, -1, -1, -1, -1, -1, -1, 187, -1, 26, -1, -1, 192, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, 2665, 4553, -1, -1, -1, -1, -1, -1, -1, -1, 198, 214, 215, -1, -1, -1, -1, -1, -1, -1, 4572, -1, -1, -1, 4576, -1, 229, -1, -1, -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4601, 4602, -1, -1, 4605, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, 4620, -1, -1, -1, -1, 261, -1, 4627, -1, 265, -1, 282, 4632, -1, 285, 4635, 4636, -1, 632, 275, 128, -1, 4642, 4643, -1, 639, 640, 135, 284, 643, 138, 645, 646, -1, -1, -1, 650, -1, -1, 4659, 296, 4661, -1, -1, -1, -1, 4666, 661, 4668, -1, -1, 10, 4672, -1, 13, -1, 164, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, 334, -1, -1, 337, 338, -1, -1, 44, 700, -1, 702, -1, 198, -1, 51, -1, 4714, 4715, -1, -1, 712, -1, -1, 372, -1, -1, -1, 4725, 1886, -1, -1, -1, -1, 367, -1, 3738, 1894, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 744, -1, -1, -1, 1914, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4764, -1, -1, -1, -1, 4769, -1, -1, -1, 261, 192, 193, -1, 265, 196, -1, -1, -1, -1, -1, -1, -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, 2908, 284, -1, 216, 435, -1, -1, -1, -1, -1, 223, -1, -1, 296, -1, -1, -1, -1, 26, -1, -1, -1, -1, -1, 32, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 829, -1, -1, 4838, 490, 4840, -1, -1, -1, -1, -1, 334, -1, 187, 337, 338, 3856, -1, 192, 3859, -1, -1, -1, -1, -1, -1, 74, -1, -1, 4864, 4865, -1, 4867, -1, 4869, -1, 865, -1, -1, -1, 214, 215, -1, -1, 367, -1, -1, -1, -1, -1, -1, -1, -1, 4888, -1, 229, -1, -1, -1, 4894, -1, -1, -1, 4898, -1, -1, -1, -1, -1, 4904, -1, -1, -1, 4908, -1, -1, -1, -1, -1, 3027, 128, -1, -1, -1, -1, -1, -1, 135, -1, -1, 138, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282, -1, 939, 285, 435, 4948, -1, -1, 164, -1, -1, -1, -1, 3961, 4957, -1, -1, -1, -1, 4962, 4963, -1, -1, 960, 4967, -1, -1, 2130, -1, 4972, 4973, 4974, 3980, -1, -1, 972, -1, -1, -1, -1, 977, -1, 198, -1, -1, 4988, -1, -1, -1, -1, 987, -1, -1, -1, -1, 992, -1, -1, -1, -1, -1, 3117, -1, -1, 1001, -1, -1, 5010, -1, 1006, -1, -1, 1009, -1, 5017, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, -1, -1, -1, -1, -1, -1, -1, -1, 5042, -1, -1, -1, -1, -1, 261, -1, -1, -1, 265, 4058, -1, -1, -1, 1051, -1, 3172, -1, -1, 275, -1, -1, -1, -1, -1, -1, -1, -1, 284, -1, 60, -1, -1, -1, 5077, 5078, -1, -1, -1, -1, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5097, -1, -1, 5100, -1, -1, 5103, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, 5114, -1, -1, -1, 5118, -1, 5120, 334, 5122, -1, 337, 338, -1, 3240, -1, 5129, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, 5148, -1, -1, 490, -1, -1, 367, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, -1, 3284, 1166, 5173, 1168, 5175, 1170, -1, 1172, -1, 1174, 1175, 1176, -1, -1, 3298, 3299, 1181, -1, -1, -1, -1, -1, -1, -1, 3308, -1, -1, 1192, -1, -1, 3314, 189, 3316, -1, -1, 624, -1, 626, -1, -1, -1, 630, 1207, -1, -1, -1, -1, -1, -1, -1, -1, 435, -1, -1, 5225, 644, -1, -1, -1, -1, -1, -1, 651, 5234, -1, -1, -1, 225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3362, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5260, 5261, 5262, -1, -1, -1, -1, -1, -1, 5269, 5270, -1, -1, 5273, 261, -1, -1, -1, 265, 5279, -1, -1, -1, 3396, 3397, -1, 10, -1, 5288, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, 5301, -1, -1, -1, -1, -1, -1, -1, 296, 297, -1, 36, -1, 5314, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, 4330, -1, 51, -1, -1, -1, -1, -1, 10, -1, -1, 13, 4342, -1, -1, 17, 18, 19, -1, -1, -1, -1, 334, -1, -1, -1, 338, 76, -1, 5354, 342, -1, -1, -1, 36, 5360, -1, -1, -1, 351, -1, -1, 44, -1, -1, 5370, -1, 359, -1, 51, -1, 5376, 5377, 5378, 1373, 367, -1, -1, -1, -1, -1, -1, -1, 5388, -1, -1, -1, 379, -1, -1, -1, -1, -1, -1, 76, -1, 388, -1, -1, -1, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5419, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5444, -1, -1, -1, -1, -1, 5450, -1, -1, -1, 2614, -1, -1, -1, -1, 446, 1454, -1, 2622, 187, -1, -1, -1, -1, 192, -1, -1, -1, -1, 891, 892, -1, 3589, 5477, 5478, -1, -1, -1, 2642, -1, -1, -1, -1, -1, 5488, -1, 214, 215, 2652, 5493, -1, 2655, -1, 2657, 2658, -1, -1, 2661, 5502, -1, -1, 229, -1, 2667, -1, 2669, 187, -1, 2672, -1, -1, 192, -1, -1, -1, 10, -1, -1, 13, 5523, -1, -1, 17, 18, 19, -1, -1, -1, 1526, 5533, -1, -1, -1, 214, 215, -1, -1, -1, -1, -1, 268, 36, -1, -1, 4553, -1, -1, 5551, 229, 44, -1, -1, -1, -1, 282, -1, 51, 285, -1, -1, 5564, -1, 5566, -1, 200, 201, -1, -1, -1, 991, -1, 2735, 208, -1, 210, 211, -1, -1, -1, -1, 5584, 76, 5586, 5587, -1, -1, -1, 268, 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1020, 1021, -1, 282, -1, -1, 285, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1046, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, 372, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4666, -1, 4668, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, 3794, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, 187, -1, -1, -1, -1, 192, 1120, 1121, -1, -1, 3819, -1, 76, -1, -1, -1, -1, -1, 3827, -1, -1, -1, -1, 3832, -1, 3834, -1, 214, 215, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, 3877, -1, 490, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 1773, 3893, -1, -1, -1, 3897, 3898, -1, 3900, -1, -1, -1, 282, -1, -1, 285, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, 490, -1, -1, -1, -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 214, 215, -1, -1, -1, -1, -1, 3013, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, 372, -1, -1, -1, -1, -1, 4000, -1, -1, 4003, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, 94, -1, -1, 1900, -1, 1902, -1, -1, -1, -1, -1, 282, -1, -1, 285, -1, -1, -1, -1, -1, -1, -1, 1919, -1, 1921, -1, -1, -1, -1, -1, -1, -1, -1, 3096, -1, 3098, 154, -1, 1935, -1, 1937, -1, 1939, -1, 1941, -1, 1943, -1, -1, -1, 1947, -1, -1, -1, -1, -1, -1, 4073, 4074, 4075, 154, 4077, 4078, 4079, 4080, 4081, -1, -1, -1, -1, -1, 189, -1, -1, -1, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, 189, 490, -1, -1, -1, 635, 372, -1, -1, -1, -1, 641, 225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 654, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 225, -1, -1, -1, 670, -1, -1, -1, -1, -1, -1, -1, 261, -1, -1, -1, 265, -1, 684, 685, -1, 1473, -1, -1, -1, 691, -1, 693, 694, -1, -1, -1, -1, -1, -1, -1, 261, -1, -1, -1, 265, 707, -1, 3237, -1, -1, 1498, 296, 297, 3243, -1, 717, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4214, -1, 4216, 472, 296, 297, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, 334, -1, -1, 490, 338, -1, -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, -1, -1, -1, 334, 359, -1, -1, 338, -1, -1, -1, 342, 367, -1, -1, -1, -1, 1575, -1, -1, 351, -1, -1, -1, 379, -1, -1, -1, 359, -1, 802, -1, -1, 388, -1, -1, 367, 392, -1, -1, -1, -1, -1, -1, 1602, 1603, 1604, 1605, 379, -1, -1, -1, -1, -1, 826, 2189, 2190, 388, -1, -1, -1, 392, -1, -1, -1, -1, -1, 839, -1, -1, -1, -1, -1, -1, 2208, 2209, -1, -1, -1, 2213, 2214, -1, -1, -1, 2218, -1, -1, -1, -1, -1, -1, 446, -1, 10, -1, -1, 13, -1, 2232, -1, 17, 18, 19, -1, -1, 2239, -1, -1, -1, 2243, 2244, -1, -1, 2247, 2248, 446, -1, -1, -1, 36, 2254, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, 51, 2269, -1, 2271, -1, -1, 3440, -1, 3442, 5288, 3444, -1, -1, -1, -1, -1, 4403, 4404, -1, 3453, -1, 2289, -1, -1, -1, 76, 2294, -1, -1, 4416, -1, 4418, 4419, -1, -1, 4422, -1, -1, -1, -1, -1, 2309, -1, 949, -1, -1, -1, -1, -1, -1, 2318, 1743, 1744, 2321, -1, 2323, 2324, 2325, -1, -1, 3494, 967, 2330, 2331, -1, -1, -1, 973, -1, -1, 976, 1763, 2340, -1, -1, -1, -1, 2345, -1, -1, -1, 2349, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2366, 4486, -1, -1, -1, -1, 2372, 2373, 1798, 1799, 1800, 1801, -1, 2379, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2389, 2390, -1, -1, -1, -1, 2395, -1, -1, -1, -1, -1, -1, -1, -1, 187, 4524, -1, 2407, -1, 192, 2410, -1, -1, -1, -1, 2415, -1, -1, -1, -1, -1, 2421, 2422, -1, -1, -1, -1, 2427, -1, -1, 2430, 214, 215, -1, 2434, 2435, 2436, 2437, -1, 2439, 4559, -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, 2452, 2453, 10, 2455, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, 2466, 2467, 2468, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, 268, -1, 1125, 44, -1, -1, -1, 1916, -1, 22, 51, -1, -1, 1922, 282, -1, -1, 285, -1, 32, 1143, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, 50, 1161, -1, -1, -1, -1, -1, 2529, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, 73, 74, -1, -1, -1, -1, 1189, 80, -1, 82, -1, -1, 2557, -1, -1, -1, -1, 1200, -1, -1, 93, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1216, -1, -1, -1, 1220, -1, 112, -1, -1, 115, -1, 372, -1, -1, -1, -1, -1, 4714, -1, -1, -1, -1, -1, 129, -1, 131, -1, -1, -1, 135, -1, -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, -1, -1, 149, -1, 151, -1, -1, -1, -1, -1, -1, 158, 187, -1, 2057, -1, -1, 192, -1, -1, -1, 4759, -1, -1, -1, -1, -1, 174, -1, -1, 4768, -1, -1, -1, -1, -1, -1, -1, -1, 214, 215, -1, -1, -1, 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 231, 232, -1, 1344, 490, -1, 237, -1, -1, 268, -1, 1352, 1353, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, 282, -1, 1366, 285, -1, -1, -1, -1, -1, 10, -1, -1, 13, 267, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2759, -1, 36, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, 1419, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 324, -1, -1, -1, -1, 76, 330, 331, -1, 333, -1, -1, -1, -1, 338, -1, -1, -1, -1, 343, 372, -1, 346, -1, -1, -1, -1, -1, -1, 353, -1, -1, -1, -1, -1, 359, 360, -1, -1, 2259, 2260, -1, -1, 367, -1, -1, -1, 371, -1, -1, 2270, -1, 2272, -1, -1, -1, 2276, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, 4988, -1, -1, -1, 4992, -1, -1, -1, 4043, -1, -1, -1, 4047, -1, -1, -1, -1, -1, -1, 416, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 427, -1, -1, -1, -1, -1, 433, -1, -1, -1, -1, 438, -1, 187, -1, -1, -1, 472, 192, -1, 475, 476, 477, 478, 451, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, 490, -1, -1, -1, -1, 214, 215, -1, -1, -1, -1, -1, 474, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, 489, -1, -1, 492, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1616, -1, -1, -1, 2406, -1, -1, 2409, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282, -1, -1, 285, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3025, -1, -1, -1, 3029, -1, -1, -1, -1, -1, 3035, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3053, 3054, -1, 5175, -1, 3058, -1, 5179, -1, 5181, 3063, 3064, 3065, 5185, 5186, 2492, -1, -1, -1, -1, -1, -1, -1, 2500, -1, -1, 2503, -1, -1, -1, -1, -1, 2509, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, 2520, 372, -1, 3099, 3100, 3101, 3102, -1, 4270, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, 1764, 51, -1, -1, -1, -1, -1, -1, -1, -1, 3136, 2561, 3138, 3139, 3140, -1, -1, -1, -1, -1, -1, -1, 4314, 4315, 1788, -1, 76, -1, -1, -1, -1, -1, 1796, -1, -1, -1, -1, -1, -1, 2589, -1, -1, -1, -1, 1808, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, 10, -1, 490, 13, -1, -1, -1, 17, 18, 19, -1, 2648, -1, 2650, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, 4406, 4407, 1880, 1881, -1, 1883, 1884, 44, -1, -1, -1, -1, 3252, -1, 51, -1, -1, 1895, -1, 1897, 1898, 3261, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, 1910, 1911, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, 1926, -1, 214, 215, 3292, -1, -1, -1, -1, -1, -1, -1, 5419, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3315, -1, -1, -1, -1, 1958, -1, -1, 1961, 1962, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2758, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282, -1, -1, 285, -1, -1, -1, -1, 4532, 3367, -1, -1, 4536, 4537, 3372, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5502, -1, -1, 4552, -1, -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3406, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2054, 214, 215, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5566, 372, 3449, -1, 3451, 201, -1, -1, -1, -1, -1, -1, -1, -1, 210, -1, -1, -1, 5584, -1, -1, -1, -1, -1, 268, -1, -1, -1, 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282, -1, -1, 285, -1, -1, 3491, -1, -1, 2132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, 2188, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, 490, -1, 2206, -1, -1, -1, -1, 2211, 2212, 372, -1, -1, 2216, -1, -1, -1, -1, -1, -1, -1, 2224, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2242, -1, -1, -1, -1, -1, -1, -1, -1, 3037, -1, 3039, 3040, 3041, -1, -1, -1, -1, -1, -1, -1, -1, 2264, -1, -1, 2267, 2268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2287, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2307, 2308, -1, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, 490, 4860, -1, -1, -1, -1, -1, 2338, 2339, -1, -1, 2342, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3714, -1, 3716, -1, -1, 202, -1, -1, -1, 3723, -1, -1, -1, 2365, -1, 2367, -1, 214, -1, 2371, -1, -1, -1, -1, -1, 3739, 2378, -1, 225, -1, -1, 10, -1, 2385, 13, -1, 2388, 3751, 17, 18, 19, 3755, 2394, -1, -1, -1, -1, -1, -1, -1, 4930, -1, -1, -1, -1, -1, -1, 36, -1, 3773, -1, -1, 2414, -1, -1, 44, -1, -1, 2420, -1, -1, -1, 51, 2425, -1, -1, 2428, 3791, -1, -1, -1, -1, 3796, -1, -1, -1, 2438, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, 2451, -1, -1, -1, 4983, 2456, -1, -1, 3821, -1, -1, 2462, 3825, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3835, 3836, 3837, 3838, -1, -1, -1, -1, -1, 3844, 3845, 3846, 3847, -1, -1, -1, 3851, 3852, -1, -1, -1, 3280, 3857, 3858, -1, 3860, 3861, 3862, 3863, 3864, 3865, 3866, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3876, -1, -1, -1, 3880, 3881, 3882, 3883, -1, -1, 635, -1, -1, -1, 2528, -1, 641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 654, 3906, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 670, 187, -1, -1, 3925, -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, 685, -1, -1, -1, -1, -1, -1, -1, 693, -1, -1, -1, -1, 214, 215, -1, -1, -1, -1, -1, -1, -1, 707, -1, -1, -1, -1, -1, 229, -1, -1, -1, 717, -1, -1, 2609, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, 282, -1, -1, 285, -1, -1, -1, 44, 4025, -1, 2665, -1, -1, -1, 51, 3456, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802, -1, -1, 76, -1, -1, -1, -1, -1, 4062, -1, -1, -1, -1, -1, -1, 2707, -1, -1, -1, -1, -1, -1, -1, 826, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2725, -1, -1, 839, -1, -1, -1, -1, 2733, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2743, -1, 372, 2746, -1, -1, 2749, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 616, -1, -1, -1, -1, -1, 622, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, -1, -1, -1, -1, 2818, -1, -1, -1, -1, -1, 2824, -1, -1, -1, -1, -1, -1, -1, 214, 215, -1, -1, -1, -1, 949, -1, -1, -1, -1, -1, -1, 472, -1, 229, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, 490, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5403, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282, -1, -1, 285, -1, -1, -1, -1, 2908, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4280, -1, -1, -1, 4284, 4285, 4286, 4287, -1, -1, -1, 4291, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3728, 3729, 3730, 3731, -1, -1, -1, -1, -1, -1, -1, -1, 799, -1, -1, -1, -1, -1, -1, -1, -1, 4325, 4326, 4327, 4328, 4329, 10, 4331, 4332, 13, -1, 818, -1, 17, 18, 19, -1, -1, -1, 4343, 4344, -1, -1, -1, -1, -1, -1, -1, 372, -1, -1, -1, 36, 840, -1, 2997, 2998, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, 4375, 1125, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3024, -1, -1, 3027, -1, -1, -1, -1, 1143, -1, 76, -1, -1, -1, -1, -1, -1, 886, -1, -1, -1, -1, -1, -1, -1, -1, 1161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1189, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1200, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, 1216, -1, -1, 490, 1220, -1, 3111, 3112, 3113, -1, -1, -1, 4479, -1, -1, -1, -1, -1, 3909, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3135, -1, -1, 3924, -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, -1, 3155, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1013, -1, -1, -1, 214, 215, 3174, -1, -1, 4539, -1, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1042, 1043, 1044, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, 1344, -1, -1, -1, -1, -1, -1, 282, 1352, 1353, 285, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1366, -1, -1, -1, -1, 3260, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, 4652, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3307, 1419, -1, -1, 36, -1, -1, 3314, -1, 3316, -1, -1, 44, -1, -1, -1, -1, -1, -1, 51, -1, -1, 3329, 372, 3331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1188, -1, -1, -1, -1, -1, -1, -1, 76, -1, 3353, 4716, -1, -1, -1, -1, 10, -1, 1206, 13, -1, -1, -1, 17, 18, 19, -1, 1215, -1, -1, 4735, -1, -1, -1, -1, 4740, 4741, -1, -1, -1, -1, -1, 36, -1, -1, 4750, -1, -1, -1, -1, 44, -1, 4757, -1, 3397, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, 472, 4793, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, 490, -1, -1, 4813, 3452, 4815, -1, -1, -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, -1, 192, 4830, -1, 3470, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, 4850, 214, 215, -1, 3492, -1, -1, 3495, 4858, -1, -1, -1, 36, -1, -1, -1, 229, 1616, -1, -1, 44, -1, -1, -1, -1, 1358, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, 76, 192, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282, -1, 1404, 285, 4923, -1, 214, 215, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 3580, -1, 4944, -1, -1, -1, -1, -1, 796, 797, -1, -1, -1, -1, 4956, -1, -1, -1, -1, 4385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4400, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, 282, 168, -1, 285, -1, -1, -1, -1, -1, -1, 1486, -1, -1, -1, -1, -1, 372, 680, -1, 1495, 187, -1, 1764, -1, -1, 192, -1, -1, 5021, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 706, -1, -1, 1788, 214, 215, -1, -1, 1527, -1, -1, 1796, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, -1, 1808, -1, -1, -1, -1, -1, -1, -1, 1550, -1, 4493, 1553, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, -1, 5085, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, 3738, 947, 948, -1, -1, -1, -1, -1, 282, 472, -1, 285, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 1606, -1, -1, -1, 490, -1, -1, -1, -1, -1, -1, 1883, 1884, -1, 1620, -1, -1, -1, -1, -1, -1, -1, 5145, -1, -1, 1897, -1, 3788, -1, -1, -1, -1, 3793, -1, 3795, -1, -1, 5160, 1910, 1911, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1926, -1, -1, 3818, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, 372, -1, -1, 490, 3840, -1, 5204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3856, 5219, -1, 3859, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1731, -1, 4674, -1, 4676, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 947, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 963, -1, -1, -1, -1, 472, 1782, 5300, 475, 476, 477, 478, 2054, 480, 481, 482, 483, 484, 485, -1, 3951, 3952, -1, -1, -1, 988, -1, -1, -1, -1, 3961, -1, -1, -1, -1, 1811, 10, -1, -1, 13, 1003, -1, 1818, 17, 18, 19, -1, -1, -1, 3980, -1, 5344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2132, -1, -1, 1232, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4836, -1, -1, -1, -1, 1263, 1088, -1, 4058, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5432, -1, -1, -1, -1, -1, -1, 2188, -1, 1924, -1, -1, -1, 1291, -1, 1293, 1294, -1, 1296, -1, -1, -1, -1, -1, -1, 2206, -1, -1, -1, -1, 2211, 2212, -1, -1, -1, 2216, -1, -1, 1316, -1, -1, -1, -1, 2224, -1, -1, -1, -1, -1, 1964, 1965, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2242, -1, -1, -1, -1, 1981, -1, -1, -1, -1, -1, -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1198, -1, -1, -1, -1, 214, 215, -1, -1, -1, 2287, -1, -1, -1, 1388, -1, -1, -1, 1392, 1393, 229, -1, -1, -1, -1, -1, 4978, -1, 4980, -1, 2307, 2308, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 2338, 2339, -1, -1, 2342, -1, 36, -1, -1, -1, -1, -1, 282, 2085, 44, 285, -1, -1, -1, -1, -1, 51, -1, -1, 2096, -1, -1, 2365, -1, 2367, -1, -1, -1, 2371, -1, -1, -1, -1, -1, 309, 2378, -1, -1, -1, -1, -1, 76, 2385, -1, -1, 2388, -1, -1, -1, -1, -1, 2394, -1, -1, 2131, -1, -1, -1, 4290, -1, -1, -1, -1, 4295, -1, 2142, 2143, -1, 680, -1, -1, 2414, -1, -1, -1, -1, -1, 2420, -1, -1, -1, -1, 2425, -1, -1, 2428, -1, -1, -1, -1, -1, -1, -1, -1, 706, 2438, -1, 372, 4330, 2176, -1, -1, -1, -1, -1, -1, -1, -1, 2451, -1, 4342, -1, -1, 2456, 389, -1, -1, -1, -1, 2462, -1, -1, -1, -1, -1, -1, -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4374, -1, -1, -1, -1, -1, -1, 1413, -1, -1, 187, -1, -1, -1, -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, 215, -1, -1, -1, -1, 2528, -1, -1, -1, -1, -1, 1631, 1632, 1633, 229, -1, 5214, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, 1480, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, 4473, -1, 2320, -1, -1, -1, 282, -1, -1, 285, -1, -1, -1, -1, -1, -1, 1521, 2335, -1, -1, -1, -1, -1, -1, -1, 2609, -1, -1, -1, -1, -1, 307, -1, -1, -1, -1, -1, -1, 2356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1554, -1, -1, -1, -1, -1, -1, -1, 5316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4553, 2665, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 963, -1, -1, -1, 2432, 2433, -1, -1, -1, -1, -1, -1, -1, 2707, -1, -1, 1631, 1632, 1633, -1, -1, -1, -1, -1, -1, 988, -1, -1, -1, -1, -1, 2725, -1, -1, -1, -1, -1, -1, 10, 2733, 1003, 13, -1, -1, 5413, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, -1, -1, -1, -1, 44, -1, -1, -1, 5445, 5446, -1, 51, -1, -1, -1, 4666, -1, 4668, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, 2539, -1, -1, -1, -1, -1, -1, -1, 1734, -1, -1, -1, -1, 2818, 1088, -1, -1, -1, -1, 2824, -1, 4715, -1, -1, -1, 1751, 10, -1, -1, 13, -1, 4725, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, 1769, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, -1, 51, 5548, -1, 4764, -1, -1, -1, -1, 4769, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, 1825, -1, 2003, -1, 2908, 187, -1, -1, -1, -1, 192, -1, -1, 1838, 2015, -1, 2017, -1, 2019, -1, -1, 2022, 2023, 2024, -1, 1198, 1851, -1, 2029, 680, -1, 2032, 214, 215, -1, -1, -1, -1, 1863, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 2050, 2051, 2052, 2053, -1, -1, 706, -1, 2058, -1, -1, -1, 2062, -1, -1, 2065, -1, -1, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, -1, 2079, -1, -1, -1, 1907, 1908, -1, 2086, 268, -1, 2089, -1, -1, -1, -1, 2997, 2998, -1, -1, -1, -1, -1, 282, -1, -1, 285, 187, -1, -1, -1, -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3024, -1, -1, 3027, -1, -1, -1, -1, -1, -1, -1, 214, 215, -1, -1, -1, -1, 2138, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, 4948, -1, 10, -1, -1, 13, 2162, 2163, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, 1347, -1, -1, -1, -1, -1, -1, 4974, -1, 36, 680, 268, 39, -1, -1, -1, 372, 44, -1, -1, -1, 4988, -1, -1, 51, 282, -1, -1, 285, -1, -1, -1, -1, 3111, 3112, 3113, 706, -1, -1, -1, -1, -1, -1, -1, -1, -1, 303, -1, -1, 76, 2049, -1, -1, -1, -1, -1, -1, 3135, -1, -1, -1, -1, -1, -1, -1, -1, 1413, -1, -1, -1, 2245, -1, -1, -1, -1, -1, -1, 3155, -1, -1, -1, 2893, -1, -1, -1, -1, -1, -1, -1, -1, 2089, -1, -1, -1, -1, -1, 3174, -1, -1, -1, -1, -1, -1, -1, 2916, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 372, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, 1480, -1, -1, -1, -1, 963, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 187, -1, -1, 988, -1, 192, -1, -1, -1, -1, -1, -1, -1, -1, 1521, -1, -1, -1, 1003, -1, -1, -1, 3260, -1, -1, -1, -1, 214, 215, -1, -1, -1, -1, -1, -1, -1, 2195, -1, -1, -1, 2199, 2200, 229, -1, -1, -1, 5173, 1554, 5175, -1, -1, -1, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 3307, -1, -1, -1, -1, -1, -1, 3314, -1, 3316, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3329, -1, 3331, -1, 282, -1, -1, 285, -1, -1, -1, 2261, 1088, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3353, 2275, -1, -1, -1, -1, -1, -1, -1, 680, -1, -1, -1, -1, -1, -1, -1, -1, 963, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5270, -1, 2480, 2481, 2482, -1, -1, 706, 2486, -1, -1, -1, -1, -1, 2316, 988, 3397, -1, 5288, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1003, 5301, -1, -1, -1, -1, -1, -1, 3153, -1, 2518, -1, 372, -1, 5314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1198, 3452, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1734, -1, -1, -1, -1, 3470, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1751, -1, -1, -1, -1, 5376, 5377, -1, -1, -1, 3492, -1, -1, 3495, 1088, -1, -1, -1, 1769, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, 5419, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1825, -1, -1, -1, -1, 2482, -1, -1, -1, -1, -1, -1, -1, 1838, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3580, -1, 1851, -1, -1, -1, 3320, 3321, 3322, -1, -1, -1, -1, -1, 1863, -1, -1, -1, 2519, -1, -1, -1, -1, 3337, -1, -1, 1198, -1, -1, 10, -1, -1, 13, 5502, -1, -1, 17, 18, 19, -1, -1, -1, -1, -1, -1, -1, 3360, -1, -1, -1, -1, -1, -1, -1, -1, 36, 3370, 3371, 1907, 1908, -1, 3375, -1, 44, -1, 963, -1, -1, -1, -1, 51, -1, -1, 10, -1, -1, 13, -1, -1, -1, 17, 18, 19, -1, -1, -1, 1413, -1, -1, 2766, 988, -1, -1, -1, 2771, 76, -1, 5566, -1, 36, 2601, -1, -1, 2604, -1, 1003, -1, 44, -1, -1, -1, -1, -1, -1, 51, 5584, -1, 5586, 5587, -1, -1, -1, 2799, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2810, -1, 2812, 2813, -1, -1, 76, -1, -1, -1, -1, -1, -1, 2823, -1, -1, 2826, -1, 2828, -1, 1480, -1, -1, -1, -1, 3738, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3490, -1, -1, 3493, -1, -1, -1, -1, -1, -1, -1, 2864, -1, 2866, 1088, 2868, -1, -1, 1521, -1, -1, -1, -1, -1, 2049, -1, -1, -1, -1, -1, 187, -1, 3788, -1, -1, 192, -1, 3793, -1, 3795, -1, -1, -1, -1, -1, -1, 2723, -1, -1, -1, -1, 1554, -1, -1, -1, 168, -1, 214, 215, -1, -1, -1, 3818, 2740, -1, 1413, -1, -1, -1, -1, -1, 2924, 229, -1, 187, -1, -1, -1, 2755, 192, -1, -1, -1, -1, 3840, -1, 2939, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3856, 214, 215, 3859, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, 1198, 282, -1, -1, 285, -1, -1, -1, 1480, -1, -1, -1, -1, -1, -1, 3629, 3630, 3631, -1, -1, -1, -1, -1, -1, -1, -1, 3003, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282, 2195, -1, 285, 1521, 2199, 2200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3951, 3952, -1, -1, -1, -1, -1, -1, -1, -1, 3961, 1554, -1, -1, -1, -1, -1, -1, -1, -1, 372, -1, -1, -1, -1, -1, -1, -1, -1, 3980, -1, -1, -1, -1, -1, -1, 1734, -1, -1, -1, -1, 2261, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 404, 1751, -1, 2275, -1, -1, -1, -1, -1, -1, -1, -1, 372, -1, -1, -1, -1, -1, -1, 1769, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2316, -1, -1, -1, 2972, -1, -1, 2975, -1, 2977, -1, 4058, -1, -1, 2982, -1, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, 475, 476, 477, 478, 1825, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, 1838, -1, -1, -1, 1413, -1, -1, -1, -1, -1, -1, -1, -1, 1851, -1, -1, -1, -1, -1, 3031, -1, -1, -1, -1, 472, 1863, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 3050, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1734, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3075, -1, -1, -1, -1, 1751, 1907, 1908, 1480, 10, -1, -1, 13, -1, 3265, -1, 17, 18, 19, -1, 3271, -1, -1, 1769, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, 3922, 36, 13, -1, 39, -1, 17, 18, 19, 44, -1, 3933, -1, -1, -1, 1521, 51, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, -1, -1, -1, -1, 44, -1, -1, 3145, -1, 3147, -1, 51, 76, 3964, -1, -1, 1825, -1, -1, 1554, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1838, -1, -1, -1, 2519, -1, -1, 76, -1, -1, -1, -1, -1, 1851, -1, -1, -1, 3997, -1, -1, -1, -1, -1, -1, -1, 1863, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4290, -1, -1, -1, -1, 4295, -1, -1, -1, -1, -1, -1, 2049, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4048, 1907, 1908, 3238, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4330, -1, 2601, -1, -1, 2604, -1, -1, -1, -1, 187, -1, 4342, -1, 3265, 192, -1, -1, -1, -1, 3271, -1, -1, -1, -1, -1, -1, -1, 3279, -1, -1, -1, -1, -1, 187, -1, -1, 214, 215, 192, -1, -1, -1, -1, 4374, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, 3308, -1, -1, -1, 214, 215, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1734, -1, 3515, -1, -1, 268, -1, -1, -1, -1, 3523, 3524, -1, 3526, -1, -1, -1, 1751, -1, 282, -1, 3534, 285, 3536, 4174, 4175, 4176, 4177, -1, 268, -1, -1, 2195, -1, -1, 1769, 2199, 2200, 2723, -1, 3377, 2049, -1, 282, -1, -1, 285, -1, -1, -1, -1, 3564, 3565, -1, -1, 2740, -1, 4473, -1, -1, -1, 3398, -1, -1, -1, -1, -1, -1, -1, 3582, 2755, -1, -1, -1, -1, 3412, -1, 3590, -1, -1, 3593, -1, 3595, -1, -1, -1, -1, -1, -1, -1, -1, 1825, -1, -1, 3607, -1, -1, -1, 2261, -1, -1, -1, 3615, 3616, 1838, -1, -1, -1, -1, 372, -1, -1, 2275, -1, -1, -1, -1, 1851, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1863, -1, -1, -1, 372, 3647, -1, -1, 4553, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2316, -1, -1, -1, -1, -1, -1, 3673, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1907, 1908, -1, 3689, -1, -1, -1, -1, 3518, -1, -1, -1, -1, -1, 2195, -1, -1, -1, 2199, 2200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3543, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3569, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, 4666, -1, 4668, 2261, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2275, 3605, -1, -1, -1, -1, -1, -1, -1, -1, -1, 680, -1, -1, -1, -1, -1, -1, -1, -1, 2972, -1, -1, 2975, -1, 2977, -1, -1, -1, -1, 2982, -1, 4715, -1, -1, 680, -1, 706, -1, -1, -1, 2316, -1, -1, -1, -1, -1, -1, 2049, -1, -1, -1, -1, 26, -1, -1, -1, -1, -1, 32, -1, 706, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3031, -1, 4764, -1, -1, -1, 58, -1, -1, -1, 2519, -1, 3695, -1, -1, -1, -1, -1, -1, 3050, -1, -1, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4529, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3075, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, 135, -1, -1, 138, -1, -1, -1, -1, -1, 2601, -1, -1, 2604, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3794, 164, -1, 3145, 2195, 3147, -1, -1, 2199, 2200, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, -1, -1, 13, -1, -1, 3819, 17, 18, 19, -1, -1, -1, 195, -1, -1, 198, -1, -1, 4008, 4009, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, 44, 2519, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2261, -1, -1, -1, -1, 4948, -1, -1, -1, -1, 243, -1, -1, 246, 2275, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3238, -1, 261, -1, -1, 4974, 265, 2723, 963, -1, -1, -1, -1, -1, -1, -1, 275, 4083, -1, 4988, -1, -1, -1, -1, 2740, 284, -1, -1, -1, 2316, -1, 4097, 963, 988, -1, -1, 295, 296, -1, 2755, 2601, 3279, -1, 2604, -1, -1, -1, -1, 1003, -1, -1, -1, -1, -1, -1, -1, -1, 988, -1, -1, -1, -1, -1, -1, -1, 3955, -1, -1, -1, 4772, 3308, -1, 1003, 4139, 4140, 334, -1, -1, 337, 338, 339, -1, 4148, 4149, 4787, -1, -1, 4153, -1, 4792, -1, -1, -1, 4159, -1, -1, 4162, 4163, -1, -1, 187, 4167, 361, -1, -1, 192, -1, 4173, 367, -1, -1, -1, -1, 4003, -1, 4818, -1, 4007, -1, -1, -1, -1, 381, -1, -1, -1, -1, 214, 215, -1, -1, -1, -1, 1088, -1, -1, -1, -1, -1, 3377, -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1088, -1, -1, 3398, 4227, 2723, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3412, -1, 435, -1, -1, 2740, -1, 268, -1, -1, -1, -1, -1, -1, 4254, -1, -1, -1, -1, -1, 2755, 282, -1, -1, 285, -1, -1, -1, -1, -1, 5173, -1, 5175, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2519, -1, -1, -1, 4939, -1, -1, -1, -1, -1, -1, 1198, -1, -1, -1, -1, -1, -1, -1, -1, 4142, -1, -1, -1, 2972, 680, -1, 2975, -1, 2977, -1, -1, 4154, -1, 2982, 1198, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3518, -1, -1, 706, -1, 372, -1, -1, -1, -1, -1, -1, 4358, -1, -1, -1, -1, -1, -1, -1, -1, 5270, -1, -1, -1, 3543, -1, -1, -1, -1, -1, -1, -1, -1, 2601, 3031, -1, 2604, -1, 5288, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3569, -1, -1, 3050, -1, 5039, -1, -1, -1, -1, -1, -1, -1, -1, 5314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3075, -1, -1, -1, -1, -1, -1, -1, 3605, 4434, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, 472, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2972, -1, -1, 2975, -1, 2977, -1, -1, -1, -1, 2982, -1, 4313, -1, -1, -1, -1, -1, 3145, -1, 3147, -1, -1, -1, -1, 2723, -1, -1, -1, -1, -1, -1, -1, -1, 4335, -1, -1, -1, -1, 5419, -1, -1, 2740, -1, -1, -1, 3695, 1413, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2755, -1, 3031, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1413, -1, -1, -1, -1, -1, -1, 3050, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3075, 4405, -1, -1, -1, -1, -1, -1, 3238, -1, -1, 1480, -1, -1, -1, -1, -1, -1, -1, 5502, 24, 4601, 4602, -1, -1, 4605, 963, -1, -1, -1, -1, -1, -1, -1, -1, 1480, -1, 41, -1, -1, -1, -1, 3794, -1, -1, -1, -1, -1, -1, 3279, -1, 988, 1521, -1, -1, -1, -1, -1, -1, -1, 64, -1, 4642, 4643, -1, -1, 1003, 3819, -1, -1, 3145, -1, 3147, 77, -1, -1, 1521, -1, 3308, -1, -1, 4661, -1, 5566, 88, 1554, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5584, -1, -1, -1, -1, 110, -1, -1, 1554, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, 4525, -1, 4527, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 144, -1, -1, -1, -1, -1, -1, 3377, -1, 153, -1, 1088, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, 3238, -1, -1, -1, -1, 3398, 173, -1, 2972, 4576, 177, 2975, -1, 2977, -1, -1, -1, -1, 2982, 3412, -1, -1, -1, -1, -1, -1, -1, -1, -1, 196, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3955, 3279, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 233, 3031, -1, -1, 3308, -1, -1, -1, -1, 242, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3050, -1, 4003, -1, -1, -1, 4007, -1, -1, -1, -1, -1, 1198, -1, -1, -1, 1734, -1, -1, -1, -1, -1, -1, -1, -1, 3075, -1, -1, -1, 282, -1, -1, 285, 1751, -1, -1, -1, -1, 4867, 3518, 1734, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1769, 305, 3377, -1, -1, -1, 1751, -1, -1, -1, 4714, -1, -1, 3543, 4894, 319, -1, -1, -1, -1, -1, -1, 326, 3398, 1769, -1, -1, -1, 4908, -1, -1, -1, -1, -1, -1, -1, -1, 3412, -1, 3569, -1, 345, -1, -1, 3145, -1, 3147, -1, -1, -1, 354, -1, -1, -1, -1, -1, 1825, 361, -1, -1, 364, -1, -1, -1, -1, -1, -1, -1, -1, 1838, -1, -1, -1, -1, -1, 3605, -1, -1, -1, 383, 1825, -1, 1851, -1, -1, -1, 390, 4967, -1, -1, 4142, -1, 396, 1838, 1863, 399, 400, -1, 402, 403, -1, -1, 4154, -1, -1, -1, 1851, -1, -1, 413, -1, -1, -1, -1, 418, -1, -1, -1, 1863, -1, -1, 425, -1, -1, 428, -1, -1, 431, -1, -1, 5010, -1, -1, -1, -1, -1, 4840, 3238, 1907, 1908, 444, -1, -1, 3518, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4865, 1907, 1908, -1, 3695, -1, -1, 3543, -1, -1, -1, -1, -1, -1, -1, 1413, -1, 3279, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3569, -1, -1, -1, -1, 77, 4904, -1, -1, -1, -1, -1, -1, 3308, -1, -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3605, -1, 110, -1, -1, -1, -1, -1, 116, -1, -1, -1, 5122, 1480, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4957, -1, 133, -1, -1, 4962, 4963, -1, 4313, -1, -1, 3794, -1, 144, -1, 5148, -1, -1, -1, -1, -1, -1, 153, 3377, -1, -1, -1, 2049, -1, -1, 4335, 1521, -1, -1, 165, -1, 3819, -1, -1, 170, -1, -1, -1, -1, 3398, -1, 177, -1, -1, -1, -1, 2049, -1, -1, -1, -1, -1, -1, 3412, -1, -1, -1, -1, -1, 1554, 196, -1, 3695, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, 5225, -1, -1, -1, -1, -1, -1, -1, 4405, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 242, -1, -1, -1, -1, -1, -1, -1, -1, 5077, 5078, -1, -1, -1, -1, -1, 5260, 5261, 5262, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5279, -1, -1, -1, -1, 282, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3518, -1, 3794, -1, -1, -1, -1, -1, 3955, 2195, 305, -1, -1, 2199, 2200, -1, -1, -1, -1, -1, 315, 316, -1, -1, 319, 3543, -1, 3819, -1, 26, -1, -1, -1, 2195, -1, 32, -1, 2199, 2200, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, 345, 3569, -1, 348, -1, -1, 4003, 352, 4527, 354, 4007, 58, -1, 5360, -1, -1, 361, -1, -1, 364, -1, -1, -1, -1, -1, 2261, -1, 74, -1, -1, 1734, 5378, -1, -1, -1, -1, -1, 3605, 383, 2275, -1, -1, -1, -1, -1, 390, -1, 1751, -1, 2261, 395, 396, -1, -1, 399, -1, -1, 4576, 403, -1, -1, 108, -1, 2275, -1, 1769, -1, -1, 413, -1, -1, -1, -1, 418, -1, -1, -1, -1, -1, -1, 2316, 128, -1, -1, -1, -1, 431, -1, 135, -1, -1, 138, -1, -1, -1, -1, -1, -1, -1, 444, -1, -1, 5273, -1, 2316, -1, -1, -1, -1, -1, -1, -1, -1, 3955, -1, -1, -1, 164, -1, -1, -1, 1825, -1, -1, -1, -1, 24, 3695, -1, -1, -1, 29, -1, -1, 1838, -1, -1, -1, -1, -1, -1, 5488, -1, -1, -1, 4142, -1, 1851, 195, -1, -1, 198, -1, -1, -1, -1, -1, 4154, -1, 1863, -1, 4003, -1, -1, -1, 4007, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5523, -1, -1, 77, -1, -1, -1, -1, -1, -1, 5533, -1, -1, -1, -1, -1, -1, -1, 92, 4714, 243, -1, -1, 246, -1, -1, -1, 1907, 1908, -1, -1, -1, -1, -1, -1, -1, 110, -1, 261, -1, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, 3794, -1, 275, -1, -1, -1, -1, -1, -1, 133, -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, 144, -1, 295, 296, -1, 3819, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, 170, -1, -1, 4272, -1, -1, -1, 177, -1, -1, -1, 2519, -1, -1, -1, 334, -1, -1, 337, 338, 339, -1, -1, -1, -1, -1, 196, -1, 4142, -1, -1, -1, -1, -1, -1, 2519, -1, -1, -1, -1, 4154, -1, 361, -1, 4313, -1, -1, -1, 367, 4840, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, -1, -1, -1, 4335, -1, -1, -1, -1, -1, 242, 2049, 4865, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2601, -1, -1, 2604, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282, 4904, -1, 3955, 435, 2601, -1, -1, 2604, -1, -1, -1, -1, 295, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 4405, -1, -1, -1, -1, -1, -1, -1, -1, 315, 316, -1, -1, 319, -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, -1, -1, 4003, -1, -1, 4957, 4007, -1, -1, -1, 4962, 4963, -1, -1, 345, -1, -1, 348, -1, -1, -1, 352, -1, 354, -1, -1, -1, -1, -1, -1, 361, -1, -1, 364, -1, -1, -1, -1, 4313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 383, -1, 2723, -1, -1, -1, 2195, 390, 4335, -1, 2199, 2200, -1, 396, -1, -1, 399, -1, -1, 2740, 403, -1, -1, -1, -1, -1, 2723, -1, 411, -1, 413, -1, -1, -1, 2755, 418, -1, -1, -1, -1, -1, -1, -1, 2740, 24, 4527, -1, -1, 431, 29, -1, -1, -1, -1, -1, -1, -1, -1, 2755, -1, -1, 444, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2261, -1, 5078, -1, -1, -1, 4405, -1, -1, -1, -1, -1, 64, -1, 2275, -1, -1, 4142, -1, -1, -1, -1, 4576, -1, -1, 77, 78, -1, -1, 4154, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2316, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, -1, -1, -1, 1308, -1, -1, 144, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4527, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 196, -1, -1, 4272, -1, -1, -1, 1370, -1, -1, -1, -1, -1, -1, -1, -1, 4714, -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, -1, 4576, -1, 2972, -1, -1, 2975, -1, 2977, -1, -1, -1, 4313, 2982, 242, -1, -1, -1, -1, -1, -1, 5273, -1, -1, -1, -1, -1, 2972, -1, -1, 2975, -1, 2977, -1, 4335, -1, -1, 2982, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 282, -1, -1, -1, -1, -1, -1, -1, 3031, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, -1, -1, -1, 3050, 2519, -1, -1, -1, 3031, 315, 316, -1, -1, 319, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4405, 3050, 3075, -1, -1, -1, 4840, -1, -1, -1, -1, -1, -1, 345, -1, -1, 348, -1, -1, -1, 352, -1, 354, -1, -1, -1, 3075, -1, -1, 361, -1, 4865, 364, -1, -1, 4714, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 383, -1, -1, -1, -1, -1, -1, 390, -1, 2601, -1, -1, 2604, 396, -1, -1, 399, -1, -1, 4904, 403, 3145, -1, 3147, -1, -1, -1, -1, 411, -1, 413, -1, -1, -1, -1, 418, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3145, -1, 3147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4527, 4957, -1, -1, -1, -1, 4962, 4963, -1, -1, -1, -1, -1, -1, -1, -1, 1637, -1, -1, -1, 1641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4840, -1, -1, -1, 3238, -1, -1, -1, -1, -1, 4576, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2723, -1, -1, -1, 4865, -1, -1, 3238, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2740, -1, -1, -1, -1, -1, -1, 3279, -1, -1, -1, -1, -1, -1, -1, 2755, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4904, -1, -1, -1, -1, 3279, -1, -1, -1, -1, 3308, -1, -1, -1, -1, -1, -1, -1, -1, 5078, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3308, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4957, -1, -1, -1, -1, 4962, 4963, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3377, -1, -1, -1, -1, 4714, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3398, -1, -1, 3377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3412, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3398, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3412, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5078, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2972, -1, -1, 2975, 4840, 2977, -1, -1, 5273, -1, 2982, -1, -1, -1, 3518, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4865, -1, -1, -1, -1, -1, -1, -1, -1, 3518, 3543, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3031, -1, -1, -1, 3543, -1, 3569, -1, -1, 4904, -1, -1, 2001, -1, -1, -1, -1, -1, -1, 3050, -1, -1, -1, -1, -1, -1, -1, 2016, -1, -1, 3569, 2020, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3605, -1, 3075, 2034, -1, 2036, 2037, -1, 2039, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4957, -1, -1, -1, 3605, 4962, 4963, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2084, -1, -1, -1, -1, -1, -1, -1, -1, 5273, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3145, -1, 3147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3695, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3695, -1, -1, -1, 2149, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2161, -1, -1, -1, -1, 2166, -1, -1, -1, -1, -1, 5078, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3238, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3794, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3279, -1, -1, -1, -1, -1, -1, 3794, 3819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3308, -1, -1, 3819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3398, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5273, -1, -1, 3412, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3955, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3955, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4003, -1, -1, -1, 4007, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4003, -1, -1, -1, 4007, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3518, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3543, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3569, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3605, -1, -1, -1, -1, 4142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3695, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3794, -1, -1, -1, -1, -1, -1, -1, -1, 4335, -1, 4313, -1, -1, -1, -1, -1, 2769, -1, -1, -1, -1, -1, -1, -1, 3819, -1, -1, -1, -1, -1, -1, -1, 4335, -1, -1, -1, -1, -1, 2791, 2792, -1, 2794, -1, -1, 2797, 2798, -1, 2800, -1, 2802, -1, -1, -1, 2806, -1, -1, 2809, -1, -1, -1, -1, 2814, -1, -1, -1, -1, -1, 2820, -1, -1, -1, -1, 2825, -1, -1, -1, -1, -1, 4405, -1, 2833, 2834, 2835, 2836, -1, -1, -1, 2840, 2841, -1, 2843, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4405, -1, -1, -1, -1, -1, 2861, -1, 2863, -1, -1, -1, -1, -1, -1, 2870, 2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 2880, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3955, -1, -1, -1, 2917, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4527, -1, -1, -1, -1, -1, -1, -1, 4003, -1, -1, -1, 4007, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4527, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4576, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3018, -1, -1, -1, -1, -1, -1, -1, 4576, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4714, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4714, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4840, -1, -1, 3269, 3270, 4313, -1, -1, 3274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4840, 4865, -1, 4335, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4865, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4904, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4904, -1, -1, -1, -1, -1, -1, -1, -1, 4405, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4957, -1, -1, -1, -1, 4962, 4963, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4957, -1, -1, -1, -1, 4962, 4963, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4527, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5078, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3514, -1, -1, -1, -1, -1, 3520, -1, -1, -1, -1, -1, -1, -1, 5078, -1, -1, -1, -1, -1, 4576, -1, -1, -1, -1, -1, 3540, 3541, -1, -1, 3544, 3545, 3546, 3547, -1, -1, 3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560, 3561, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3583, -1, -1, 3586, -1, 3588, -1, -1, 3591, 3592, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3609, 3610, 3611, 3612, -1, 3614, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4714, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5273, -1, -1, -1, -1, 3704, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5273, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4840, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4865, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4904, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4957, -1, -1, -1, -1, 4962, 4963, -1, -1, -1, -1, 3926, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5078, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4084, -1, -1, -1, 4088, 4089, 4090, -1, 4092, 4093, -1, -1, -1, -1, -1, 4099, 4100, 4101, 4102, -1, -1, -1, -1, 4107, 4108, 4109, 4110, 4111, 4112, 4113, 4114, 4115, 4116, 4117, 4118, 4119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4147, -1, -1, 4150, -1, 4152, -1, -1, -1, -1, 4157, -1, -1, 4160, 4161, -1, -1, 4164, 4165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4226, -1, -1, -1, -1, 5273, -1, -1, -1, -1, -1, -1, -1, 4239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4437, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4522, 4523, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4565, -1, -1, -1, -1, -1, 4571, 4572, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4589, -1, 4591, -1, -1, -1, 4595, 4596, 4597, -1, -1, 4600, -1, -1, 4603, 4604, -1, -1, -1, 4608, -1, -1, -1, 4612, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4670, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4736, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4774, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4863, 4864, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4878, 4879, 4880, -1, -1, -1, -1, -1, -1, -1, 4888, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4915, 4916, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4927, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5090, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5103, -1, -1, 5106, -1, -1, -1, 5110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5196, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5267, -1, 5269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5381, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5442, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5477, 5478, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5529, 5530, -1, -1, -1, 5534, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, 5561, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, 130, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, 482, -1, -1, -1, -1, -1, -1, 489, 490, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, 474, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, -1, -1, -1, -1, 489, 490, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, -1, -1, -1, -1, 489, 490, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, -1, -1, -1, -1, 489, 490, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 3, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, -1, -1, -1, -1, 489, 490, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 490, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, 490, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, 490, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, 474, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, 168, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, 224, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, -1, -1, 487, 488, 489, 3, -1, 5, 6, -1, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, 482, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, 168, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, -1, -1, -1, -1, 478, -1, 480, 481, 3, -1, 5, 6, -1, 8, 9, 489, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, -1, -1, -1, -1, 478, -1, 480, 481, -1, -1, -1, 3, -1, 5, 6, 489, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, -1, -1, -1, -1, -1, -1, 480, 481, 3, -1, 5, 6, -1, 8, 9, 489, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, 3, -1, 5, 6, 478, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, 489, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, 37, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, -1, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, -1, -1, -1, -1, -1, -1, 480, 481, 3, -1, 5, 6, -1, 8, 9, 489, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, 3, -1, 5, 6, 478, 8, 9, -1, 11, 12, -1, -1, -1, -1, -1, 489, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, 3, -1, 5, 6, 478, 8, 9, 10, 11, 12, -1, -1, -1, -1, -1, 489, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, 38, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, -1, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, -1, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, 480, 481, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, 474, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, 5, 6, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, 480, 481, 482, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, 474, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, 396, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, 474, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, 5, 6, -1, -1, -1, 10, 11, -1, -1, -1, -1, -1, 17, 18, 19, 489, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, -1, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, -1, 307, -1, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, 413, -1, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, 3, -1, 5, 6, -1, -1, -1, 10, 11, -1, -1, -1, -1, -1, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, -1, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, -1, 264, 265, 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, -1, 307, -1, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, -1, 413, -1, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, 3, -1, -1, 475, 476, 477, 478, 10, 480, 481, 482, 483, 484, 485, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 475, 476, 477, 478, 10, 480, 481, 482, 483, 484, 485, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 475, 476, 477, 478, 10, 480, 481, 482, 483, 484, 485, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 475, 476, 477, 478, 10, 480, 481, 482, 483, 484, 485, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 475, 476, 477, 478, 10, 480, 481, 482, 483, 484, 485, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 475, 476, 477, 478, 10, 480, 481, 482, 483, 484, 485, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 475, 476, 477, 478, 10, 480, 481, 482, 483, 484, 485, 17, 18, 19, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 475, 476, 477, 478, -1, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 482, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, 286, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, -1, -1, -1, -1, -1, -1, 3, -1, 5, 6, -1, 469, 470, 471, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, 482, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, 3, -1, 5, 6, 478, -1, 480, 481, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, 3, -1, 5, 6, 478, -1, 480, 481, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, 3, -1, 5, 6, 478, -1, 480, 481, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, 3, -1, -1, 6, -1, -1, 480, 481, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, -1, 3, -1, -1, -1, -1, -1, 480, 481, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, 168, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, -1, 3, -1, -1, 6, -1, -1, -1, 480, 481, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 6, -1, -1, 478, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 6, -1, -1, 478, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, 5, 6, -1, -1, 478, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, 64, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, 280, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, 177, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, 226, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, 165, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, 165, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, 174, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, 174, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, 165, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, 425, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, 165, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, 396, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, 431, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, 396, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, 39, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, -1, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, 179, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, 440, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, -1, 48, 49, 50, 51, 52, -1, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, -1, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, -1, 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, -1, -1, -1, 170, 171, 172, 173, -1, 175, 176, -1, 178, -1, 180, -1, 182, 183, 184, 185, 186, -1, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, -1, 203, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, -1, -1, 216, -1, 218, 219, 220, 221, 222, -1, -1, 225, 226, -1, 228, -1, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, -1, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, 269, -1, 271, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, 289, -1, 291, -1, 293, 294, 295, 296, 297, 298, 299, -1, 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, -1, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, -1, 345, 346, 347, 348, 349, 350, -1, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, -1, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, 394, 395, -1, 397, -1, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, 412, 413, 414, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, 438, 439, -1, 441, -1, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, 270, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, 163, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, 52, 53, 54, 55, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, 67, 68, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, 161, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, 204, 205, 206, 207, 208, 209, -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, 273, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, -1, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, 406, 407, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, 439, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471, -1, -1, -1, -1, -1, 22, 23, 24, 25, 26, 27, 28, 29, -1, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, 41, 42, -1, 44, 45, 46, 47, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, 59, 60, 61, 62, -1, -1, 65, 66, -1, -1, 69, -1, 71, 72, 73, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, -1, 96, 97, 98, 99, -1, -1, -1, 103, -1, -1, -1, 107, 108, 109, 110, 111, 112, -1, -1, 115, -1, 117, -1, 119, 120, 121, 122, 123, 124, -1, 126, 127, 128, 129, -1, -1, 132, 133, 134, 135, 136, -1, 138, 139, 140, -1, 142, 143, 144, -1, 146, 147, 148, 149, -1, 151, 152, 153, 154, -1, -1, 157, -1, 159, 160, -1, 162, -1, 164, -1, 166, 167, -1, 169, 170, 171, 172, 173, -1, 175, -1, -1, -1, 179, 180, -1, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, -1, 193, 194, 195, 196, 197, 198, 199, -1, 201, 202, -1, 204, 205, 206, 207, -1, -1, -1, -1, -1, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, -1, -1, 225, -1, 227, 228, 229, -1, 231, 232, 233, -1, -1, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, -1, 253, -1, 255, 256, 257, 258, 259, 260, 261, -1, -1, 264, -1, 266, 267, 268, 269, -1, -1, 272, -1, 274, 275, 276, -1, 278, 279, -1, -1, 282, 283, 284, -1, -1, 287, 288, -1, 290, 291, 292, -1, 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 304, 305, -1, 307, -1, 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, -1, 324, 325, 326, 327, -1, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, 342, 343, 344, 345, 346, 347, 348, 349, -1, 351, 352, 353, 354, 355, 356, 357, 358, 359, -1, 361, 362, 363, 364, 365, -1, 367, 368, -1, 370, 371, 372, 373, 374, -1, 376, -1, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, -1, 394, 395, -1, 397, 398, 399, 400, 401, 402, 403, -1, 405, -1, -1, -1, -1, 410, 411, -1, 413, -1, -1, 416, 417, 418, 419, 420, 421, 422, 423, -1, -1, 426, 427, 428, 429, 430, -1, -1, 433, 434, 435, 436, 437, -1, -1, -1, 441, 442, 443, 444, 445, 446, -1, -1, 449, -1, -1, 452, 453, 454, 455, 456, 457, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 469, 470, 471 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { 0, 22, 32, 34, 35, 50, 59, 71, 73, 74, 80, 82, 93, 95, 112, 115, 129, 131, 135, 141, 149, 151, 158, 174, 191, 231, 232, 237, 249, 267, 310, 324, 330, 331, 333, 338, 343, 346, 353, 359, 360, 367, 371, 381, 396, 416, 427, 433, 438, 451, 474, 489, 496, 497, 498, 499, 500, 506, 507, 509, 510, 511, 512, 514, 518, 530, 535, 536, 539, 540, 541, 560, 563, 564, 579, 623, 624, 625, 628, 631, 632, 633, 641, 647, 649, 651, 652, 655, 658, 659, 663, 672, 676, 677, 678, 679, 682, 684, 685, 686, 687, 695, 697, 717, 721, 723, 724, 734, 736, 743, 744, 747, 748, 749, 750, 751, 759, 761, 765, 770, 774, 775, 783, 784, 787, 792, 806, 833, 836, 837, 838, 843, 846, 848, 850, 852, 853, 858, 859, 862, 864, 865, 869, 870, 871, 874, 875, 878, 879, 880, 887, 889, 890, 891, 897, 899, 900, 906, 907, 908, 911, 912, 913, 914, 916, 917, 919, 920, 922, 923, 925, 937, 943, 946, 948, 949, 958, 960, 965, 970, 974, 975, 976, 977, 978, 979, 983, 1018, 410, 454, 892, 29, 77, 92, 110, 116, 133, 144, 153, 165, 170, 177, 196, 221, 242, 282, 305, 315, 316, 319, 345, 348, 352, 354, 361, 364, 383, 390, 395, 396, 399, 403, 413, 418, 431, 444, 648, 892, 3, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 69, 71, 72, 73, 74, 75, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 103, 107, 108, 109, 110, 111, 112, 113, 114, 115, 117, 119, 120, 121, 122, 123, 124, 126, 127, 128, 129, 132, 133, 134, 135, 136, 138, 139, 140, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 159, 160, 161, 162, 164, 166, 167, 169, 170, 171, 172, 173, 175, 176, 178, 179, 180, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 193, 194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 225, 226, 227, 228, 229, 231, 232, 233, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 271, 272, 273, 274, 275, 276, 278, 279, 282, 283, 284, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 304, 305, 306, 307, 308, 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 361, 362, 363, 364, 365, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 394, 395, 397, 398, 399, 400, 401, 402, 403, 405, 406, 407, 410, 411, 412, 413, 414, 416, 417, 418, 419, 420, 421, 422, 423, 426, 427, 428, 429, 430, 433, 434, 435, 436, 437, 438, 439, 441, 442, 443, 444, 445, 446, 449, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 1077, 1152, 1160, 1161, 1164, 1165, 1166, 3, 30, 971, 1146, 1160, 1164, 442, 930, 280, 311, 892, 53, 489, 571, 24, 41, 64, 77, 88, 110, 116, 133, 144, 153, 165, 173, 177, 233, 282, 285, 305, 319, 345, 354, 364, 383, 390, 399, 400, 402, 403, 413, 418, 425, 428, 431, 580, 630, 739, 793, 807, 30, 310, 1146, 971, 30, 304, 362, 400, 402, 6, 220, 844, 845, 1155, 24, 29, 64, 77, 92, 110, 133, 144, 153, 165, 170, 177, 196, 242, 282, 295, 305, 316, 319, 345, 348, 352, 354, 361, 364, 383, 390, 396, 399, 403, 411, 413, 418, 431, 444, 648, 752, 753, 754, 892, 1146, 95, 442, 489, 625, 628, 631, 925, 938, 946, 949, 958, 965, 970, 974, 11, 23, 30, 48, 160, 166, 168, 192, 222, 256, 313, 332, 480, 481, 771, 772, 971, 1154, 1156, 30, 95, 328, 360, 776, 777, 778, 1160, 165, 1160, 1151, 1155, 396, 986, 771, 1160, 410, 1146, 295, 242, 110, 196, 354, 395, 396, 489, 854, 855, 353, 1160, 30, 365, 406, 410, 522, 531, 532, 1160, 27, 174, 776, 777, 311, 892, 1160, 219, 30, 130, 988, 989, 65, 89, 233, 251, 345, 354, 365, 406, 410, 457, 519, 520, 521, 522, 30, 365, 406, 410, 522, 410, 281, 1029, 1144, 1160, 986, 482, 1160, 169, 489, 931, 489, 326, 980, 981, 1146, 980, 975, 976, 979, 0, 492, 489, 930, 145, 210, 286, 424, 990, 991, 975, 977, 978, 121, 206, 430, 493, 36, 896, 823, 1152, 756, 1160, 756, 1147, 1160, 314, 756, 413, 1146, 109, 396, 811, 1152, 1160, 1166, 3, 106, 366, 1157, 1158, 1162, 1164, 1165, 1166, 30, 186, 1144, 274, 444, 10, 17, 18, 19, 72, 157, 475, 476, 477, 478, 480, 481, 482, 483, 484, 485, 840, 842, 1107, 1108, 1160, 186, 1146, 811, 1146, 30, 1157, 1158, 811, 1146, 1146, 186, 1144, 1146, 186, 756, 1146, 338, 367, 30, 186, 1029, 1146, 357, 1146, 756, 30, 240, 1157, 1158, 186, 1144, 220, 118, 216, 265, 322, 893, 894, 895, 489, 487, 491, 1135, 1137, 1144, 1150, 1160, 24, 29, 64, 77, 78, 88, 92, 110, 133, 144, 153, 165, 170, 196, 221, 242, 282, 305, 316, 319, 345, 348, 352, 354, 361, 364, 383, 390, 396, 399, 403, 411, 413, 418, 444, 648, 762, 763, 1155, 896, 945, 949, 958, 965, 974, 1144, 244, 756, 489, 186, 756, 413, 1147, 756, 413, 186, 1146, 109, 396, 400, 402, 1157, 1158, 400, 402, 72, 157, 840, 336, 1146, 1146, 1157, 186, 515, 1160, 186, 1146, 186, 756, 1146, 1146, 357, 1146, 756, 240, 1157, 326, 361, 396, 444, 242, 92, 196, 29, 170, 316, 352, 411, 417, 642, 30, 1146, 972, 529, 1155, 1162, 845, 244, 186, 823, 824, 186, 849, 186, 1147, 3, 52, 54, 55, 67, 68, 113, 114, 134, 161, 186, 208, 209, 211, 252, 254, 273, 323, 369, 375, 406, 407, 439, 758, 1051, 1053, 1055, 1057, 1059, 1061, 1062, 1063, 1065, 1066, 1067, 1069, 1070, 1161, 1164, 413, 109, 396, 186, 810, 811, 186, 1158, 1159, 84, 444, 72, 157, 186, 841, 842, 57, 186, 810, 186, 1159, 186, 810, 186, 1146, 186, 1146, 357, 849, 186, 758, 186, 240, 1159, 220, 186, 755, 756, 186, 1145, 1146, 186, 1146, 896, 489, 947, 580, 938, 438, 925, 939, 940, 941, 1162, 930, 1156, 772, 773, 30, 773, 1156, 773, 30, 773, 1156, 773, 773, 773, 1156, 1154, 1154, 971, 773, 314, 489, 489, 600, 600, 600, 280, 408, 493, 600, 354, 1029, 1030, 493, 888, 1155, 489, 944, 57, 444, 442, 856, 857, 84, 794, 794, 1160, 47, 471, 216, 491, 283, 283, 280, 168, 1155, 408, 896, 163, 766, 280, 5, 8, 9, 10, 12, 38, 52, 54, 55, 63, 64, 67, 68, 75, 77, 100, 101, 102, 103, 104, 105, 106, 113, 114, 116, 150, 155, 156, 161, 176, 178, 208, 209, 211, 226, 234, 235, 252, 254, 263, 265, 270, 271, 273, 282, 293, 306, 323, 350, 366, 375, 391, 406, 407, 412, 414, 415, 425, 431, 439, 459, 460, 461, 462, 464, 465, 466, 467, 472, 478, 480, 481, 482, 489, 975, 1054, 1057, 1060, 1061, 1062, 1064, 1065, 1066, 1069, 1070, 1074, 1076, 1077, 1078, 1080, 1103, 1104, 1105, 1109, 1129, 1134, 1141, 1142, 1152, 1153, 1154, 1155, 1160, 1140, 1141, 1155, 30, 537, 1143, 1144, 365, 519, 116, 528, 1155, 12, 478, 529, 12, 478, 1155, 47, 69, 519, 471, 376, 894, 283, 168, 408, 477, 47, 471, 216, 895, 489, 1144, 482, 1137, 1030, 924, 925, 926, 927, 1162, 167, 932, 1074, 1112, 980, 493, 489, 933, 490, 490, 498, 924, 934, 935, 936, 1144, 30, 130, 987, 987, 57, 987, 158, 163, 230, 277, 994, 996, 997, 1012, 1014, 1015, 1016, 990, 991, 168, 212, 1029, 1031, 489, 66, 261, 296, 334, 367, 489, 821, 296, 330, 334, 367, 491, 757, 296, 334, 367, 3, 87, 139, 236, 296, 334, 367, 399, 401, 451, 530, 533, 901, 902, 903, 904, 788, 26, 135, 296, 334, 367, 435, 546, 1146, 26, 135, 367, 430, 513, 455, 186, 1029, 60, 94, 154, 189, 225, 261, 265, 296, 297, 334, 342, 351, 359, 367, 379, 388, 392, 446, 530, 534, 826, 834, 863, 489, 808, 1137, 334, 513, 192, 150, 26, 32, 45, 74, 128, 135, 138, 164, 198, 261, 265, 275, 284, 296, 334, 337, 338, 367, 435, 542, 544, 545, 666, 863, 5, 480, 481, 639, 1156, 30, 186, 1144, 756, 756, 489, 839, 296, 367, 491, 150, 280, 296, 334, 367, 834, 863, 26, 135, 296, 334, 367, 192, 508, 334, 451, 474, 501, 508, 296, 334, 367, 834, 863, 280, 296, 334, 150, 39, 58, 108, 195, 243, 246, 261, 295, 334, 339, 361, 367, 381, 542, 636, 637, 296, 334, 443, 666, 674, 150, 296, 334, 367, 87, 128, 138, 296, 330, 334, 367, 532, 520, 522, 192, 150, 45, 126, 261, 334, 367, 542, 543, 296, 334, 338, 367, 85, 127, 298, 401, 280, 26, 32, 135, 296, 334, 367, 561, 562, 508, 163, 334, 501, 508, 150, 334, 367, 542, 1146, 228, 118, 281, 456, 493, 893, 30, 130, 440, 482, 490, 816, 1074, 1113, 1114, 1161, 1074, 1136, 3, 30, 34, 35, 36, 37, 38, 39, 40, 43, 56, 63, 64, 70, 76, 78, 88, 95, 100, 101, 102, 104, 105, 106, 116, 118, 125, 130, 131, 137, 141, 145, 156, 158, 163, 165, 168, 174, 177, 181, 192, 200, 210, 212, 223, 224, 230, 234, 235, 265, 270, 277, 280, 281, 285, 286, 303, 312, 328, 341, 360, 366, 377, 393, 396, 404, 408, 409, 415, 424, 425, 431, 432, 440, 447, 448, 450, 451, 482, 1149, 1163, 1164, 1165, 1166, 1167, 1135, 432, 921, 280, 244, 823, 489, 1146, 1051, 413, 109, 396, 811, 274, 444, 72, 157, 842, 1146, 811, 811, 1146, 357, 163, 1146, 1051, 220, 756, 1146, 490, 600, 1146, 70, 1051, 265, 168, 489, 725, 1146, 501, 39, 915, 1146, 265, 501, 455, 186, 1144, 501, 756, 756, 725, 428, 580, 280, 163, 872, 873, 501, 265, 47, 516, 265, 418, 673, 265, 933, 87, 296, 650, 85, 127, 298, 401, 28, 49, 207, 698, 39, 725, 163, 186, 501, 444, 186, 1144, 186, 626, 1144, 1144, 444, 756, 794, 1152, 1152, 1152, 1146, 163, 648, 53, 107, 205, 261, 356, 150, 61, 340, 493, 547, 150, 489, 150, 501, 441, 1068, 1068, 1068, 489, 1056, 1056, 308, 489, 1058, 150, 67, 68, 1068, 1056, 1053, 453, 474, 489, 1071, 489, 1071, 493, 547, 38, 1052, 489, 111, 184, 245, 248, 358, 469, 489, 1072, 1073, 757, 1056, 455, 150, 493, 547, 150, 493, 186, 755, 186, 756, 186, 756, 150, 493, 547, 1159, 150, 547, 150, 150, 547, 150, 547, 150, 85, 127, 298, 401, 163, 150, 547, 150, 163, 186, 186, 529, 150, 493, 547, 150, 493, 547, 150, 280, 1112, 396, 490, 493, 156, 280, 415, 526, 529, 639, 942, 938, 773, 971, 773, 971, 773, 971, 773, 971, 773, 971, 971, 971, 773, 971, 489, 601, 602, 1160, 601, 30, 110, 133, 165, 170, 220, 221, 316, 348, 354, 361, 396, 399, 418, 779, 1143, 1159, 778, 1146, 192, 493, 961, 1155, 1051, 1115, 39, 1159, 794, 490, 493, 1144, 1146, 228, 1160, 163, 163, 779, 1159, 353, 1160, 529, 280, 489, 1138, 487, 975, 1116, 1074, 1133, 489, 489, 163, 489, 489, 975, 489, 489, 489, 489, 489, 489, 489, 1074, 489, 489, 489, 489, 489, 489, 489, 489, 975, 489, 489, 489, 489, 489, 489, 489, 489, 1074, 1138, 1074, 1074, 975, 1074, 1112, 1137, 12, 1155, 12, 489, 1155, 3, 10, 13, 17, 18, 19, 36, 39, 44, 51, 76, 187, 192, 214, 215, 229, 268, 282, 285, 372, 472, 475, 476, 477, 478, 480, 481, 482, 483, 484, 485, 1107, 1109, 1111, 452, 1090, 292, 1074, 212, 493, 984, 12, 489, 1155, 1137, 984, 119, 188, 538, 493, 69, 12, 116, 478, 529, 39, 3, 12, 116, 233, 478, 527, 639, 1070, 1155, 1155, 90, 132, 1086, 99, 12, 116, 478, 523, 524, 526, 639, 116, 523, 228, 1144, 91, 339, 760, 490, 493, 526, 639, 928, 930, 490, 493, 981, 1145, 39, 490, 493, 933, 977, 977, 992, 993, 1074, 977, 160, 256, 1003, 218, 261, 322, 370, 430, 30, 998, 1074, 480, 481, 999, 1000, 1074, 1076, 1012, 1013, 997, 996, 994, 995, 163, 1015, 275, 1017, 994, 1012, 1031, 950, 1144, 39, 1160, 367, 1112, 66, 408, 408, 354, 192, 203, 286, 289, 369, 440, 482, 814, 815, 816, 818, 820, 822, 1051, 1161, 408, 443, 408, 354, 1149, 491, 408, 408, 354, 230, 408, 408, 399, 519, 296, 901, 903, 477, 905, 163, 174, 192, 343, 789, 790, 70, 88, 146, 165, 312, 425, 597, 598, 88, 116, 265, 408, 88, 408, 116, 265, 354, 88, 128, 138, 296, 334, 722, 354, 656, 24, 29, 64, 77, 92, 133, 144, 165, 170, 242, 282, 316, 348, 354, 361, 364, 396, 403, 411, 418, 444, 648, 1146, 150, 334, 367, 542, 280, 639, 359, 225, 408, 1160, 408, 270, 639, 120, 213, 354, 365, 410, 521, 756, 340, 367, 826, 835, 124, 490, 809, 814, 408, 431, 399, 1144, 78, 146, 186, 587, 597, 1160, 78, 88, 860, 300, 280, 350, 352, 413, 88, 860, 33, 337, 350, 352, 413, 350, 1144, 164, 198, 275, 756, 489, 408, 408, 185, 489, 551, 239, 399, 428, 453, 551, 88, 493, 124, 5, 5, 296, 192, 150, 334, 367, 542, 863, 432, 432, 262, 1051, 408, 354, 489, 840, 1146, 1144, 408, 408, 354, 835, 124, 396, 396, 408, 408, 396, 725, 110, 367, 533, 408, 503, 533, 408, 408, 354, 835, 124, 1144, 408, 408, 1144, 1053, 639, 57, 638, 639, 639, 108, 243, 246, 57, 408, 501, 250, 354, 501, 261, 637, 408, 408, 270, 1155, 666, 756, 408, 408, 354, 383, 1155, 408, 319, 408, 319, 725, 399, 1029, 300, 300, 88, 408, 860, 354, 408, 408, 551, 551, 756, 756, 756, 756, 1144, 46, 437, 46, 46, 408, 46, 408, 437, 354, 489, 493, 533, 431, 683, 1158, 408, 503, 533, 1144, 408, 860, 354, 296, 334, 322, 335, 363, 525, 893, 1113, 1113, 1114, 490, 15, 16, 493, 990, 991, 488, 494, 1150, 1160, 1144, 214, 1051, 280, 214, 455, 214, 639, 756, 756, 214, 280, 214, 214, 280, 85, 127, 298, 401, 1051, 280, 214, 214, 214, 408, 168, 408, 565, 418, 489, 39, 150, 756, 726, 727, 1163, 28, 901, 1051, 280, 150, 653, 1146, 265, 300, 489, 502, 739, 432, 326, 444, 1144, 30, 396, 451, 830, 502, 150, 1158, 95, 174, 517, 579, 632, 697, 774, 792, 897, 150, 1155, 674, 675, 150, 280, 1155, 1158, 236, 756, 756, 756, 756, 275, 121, 206, 416, 430, 699, 700, 142, 321, 489, 683, 265, 502, 1144, 265, 634, 636, 265, 39, 275, 300, 489, 600, 600, 186, 629, 1144, 163, 186, 795, 1150, 489, 729, 821, 489, 812, 812, 39, 1051, 220, 451, 453, 973, 356, 824, 823, 1051, 1147, 489, 489, 1112, 1154, 758, 1068, 1068, 38, 1052, 406, 406, 1154, 1154, 1051, 487, 487, 1154, 408, 408, 408, 489, 408, 1154, 1056, 810, 811, 1159, 1158, 150, 547, 150, 432, 150, 432, 841, 842, 547, 810, 1159, 810, 1146, 1146, 1051, 758, 1159, 683, 150, 150, 547, 755, 756, 1145, 1146, 1146, 756, 490, 186, 1144, 938, 940, 971, 971, 971, 971, 971, 971, 601, 490, 493, 490, 171, 317, 349, 362, 397, 1145, 755, 109, 364, 810, 1145, 274, 810, 810, 1145, 1143, 1143, 1145, 755, 408, 451, 785, 145, 230, 680, 681, 24, 148, 350, 370, 962, 1029, 269, 963, 490, 493, 945, 408, 1144, 854, 855, 857, 777, 776, 777, 168, 175, 786, 1160, 29, 78, 110, 133, 144, 165, 170, 221, 242, 316, 319, 345, 348, 354, 361, 390, 396, 399, 418, 444, 648, 767, 768, 1112, 1135, 488, 1112, 1116, 1117, 447, 1130, 1131, 1074, 1112, 489, 1154, 1154, 3, 12, 111, 184, 245, 248, 358, 469, 478, 1118, 1119, 1155, 1112, 1112, 1112, 1154, 1154, 1074, 1074, 840, 1074, 1121, 350, 480, 481, 489, 1075, 1076, 1109, 1123, 490, 1112, 1074, 1112, 1124, 1074, 56, 168, 224, 409, 1074, 1112, 1127, 1112, 250, 1076, 1074, 1084, 1085, 1086, 250, 1074, 1086, 490, 493, 1072, 1154, 1072, 1051, 1074, 1074, 1074, 1074, 1163, 406, 43, 393, 1139, 756, 1074, 489, 975, 1128, 130, 132, 156, 257, 258, 259, 260, 264, 265, 270, 275, 415, 426, 1120, 1074, 489, 1074, 408, 51, 187, 192, 229, 372, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 30, 37, 377, 1106, 177, 159, 1091, 350, 489, 1103, 173, 233, 396, 400, 402, 428, 985, 1144, 1142, 168, 1019, 1113, 1019, 1144, 410, 489, 1155, 493, 490, 185, 185, 547, 936, 926, 925, 929, 1074, 490, 242, 265, 982, 936, 934, 493, 40, 125, 432, 804, 350, 351, 480, 481, 1000, 1002, 1076, 370, 218, 281, 493, 5, 1001, 1154, 1001, 350, 351, 1002, 1143, 269, 374, 964, 1013, 995, 432, 959, 116, 294, 489, 951, 974, 39, 1160, 489, 966, 967, 968, 1160, 490, 1158, 1146, 1146, 289, 57, 1161, 490, 816, 818, 815, 818, 1161, 286, 490, 493, 757, 1158, 1146, 1146, 1149, 1158, 1146, 1146, 1158, 1147, 1146, 116, 526, 1156, 345, 431, 776, 354, 174, 776, 489, 1146, 432, 796, 218, 218, 432, 489, 622, 186, 1146, 270, 1158, 1146, 1146, 1074, 270, 1146, 1146, 33, 337, 408, 408, 1146, 408, 657, 244, 823, 489, 756, 756, 1051, 413, 109, 396, 811, 444, 72, 157, 842, 811, 811, 1146, 756, 1146, 756, 357, 163, 1051, 756, 220, 180, 261, 296, 334, 436, 660, 661, 662, 1029, 408, 860, 354, 270, 120, 213, 1158, 1146, 280, 1146, 280, 490, 493, 1157, 1159, 1146, 334, 542, 186, 587, 265, 1051, 1146, 1154, 1160, 1144, 1146, 228, 1146, 30, 431, 1146, 186, 1146, 186, 1160, 352, 413, 352, 413, 228, 1146, 30, 431, 1146, 228, 350, 1144, 26, 135, 367, 667, 668, 669, 670, 1163, 1158, 1146, 116, 169, 266, 432, 550, 553, 554, 1163, 1146, 74, 278, 1146, 545, 280, 408, 399, 1144, 408, 860, 354, 124, 1148, 1160, 1148, 493, 490, 493, 1158, 1146, 866, 867, 1163, 280, 334, 408, 691, 1158, 1146, 1146, 280, 1030, 1030, 1158, 1146, 1030, 1147, 1157, 3, 87, 140, 198, 302, 423, 431, 434, 504, 1158, 1146, 1146, 280, 334, 1158, 1146, 334, 367, 542, 636, 639, 756, 1146, 639, 756, 1146, 639, 1158, 1146, 367, 1158, 1146, 1146, 1156, 1158, 830, 1146, 876, 877, 1163, 1146, 334, 367, 542, 543, 1144, 1144, 1146, 1146, 1146, 1146, 1158, 1146, 26, 32, 135, 296, 334, 367, 296, 334, 367, 725, 334, 367, 334, 367, 334, 863, 1043, 1160, 186, 735, 1160, 186, 1160, 1158, 1146, 1146, 1155, 1146, 866, 26, 562, 364, 1157, 334, 367, 542, 1146, 1146, 1146, 408, 408, 83, 422, 322, 493, 990, 990, 990, 1074, 1074, 440, 1114, 490, 1074, 1136, 270, 764, 1155, 39, 133, 756, 764, 764, 214, 432, 432, 764, 756, 764, 764, 756, 220, 756, 764, 764, 764, 318, 566, 566, 196, 396, 696, 1074, 1051, 756, 490, 493, 477, 699, 589, 1163, 1146, 61, 168, 354, 443, 654, 661, 662, 150, 275, 229, 581, 583, 585, 587, 594, 597, 27, 192, 345, 394, 504, 505, 163, 1148, 444, 1144, 39, 692, 397, 1030, 725, 515, 1160, 516, 285, 580, 1146, 165, 756, 1112, 319, 1155, 725, 725, 725, 725, 275, 280, 285, 489, 725, 1041, 1042, 1043, 364, 150, 489, 150, 150, 149, 974, 756, 275, 581, 1160, 432, 617, 451, 552, 265, 39, 600, 1155, 265, 280, 3, 730, 731, 725, 490, 813, 814, 819, 39, 220, 342, 411, 450, 825, 826, 827, 825, 280, 220, 529, 183, 183, 163, 547, 39, 501, 164, 909, 910, 1112, 490, 490, 547, 487, 471, 471, 490, 490, 1154, 488, 1154, 490, 184, 245, 1073, 245, 1073, 1073, 1154, 248, 490, 547, 755, 756, 1148, 756, 1148, 547, 547, 547, 547, 220, 547, 364, 163, 529, 547, 547, 280, 547, 265, 490, 602, 192, 192, 192, 192, 192, 455, 1145, 639, 640, 177, 780, 781, 1158, 27, 786, 408, 489, 168, 148, 370, 148, 370, 350, 430, 247, 1051, 1158, 451, 627, 794, 794, 168, 280, 780, 57, 547, 823, 1051, 413, 396, 811, 274, 444, 811, 811, 1051, 220, 756, 1146, 490, 488, 488, 493, 1074, 137, 1131, 1132, 39, 490, 1074, 490, 490, 168, 168, 490, 168, 490, 490, 490, 490, 490, 490, 493, 493, 490, 303, 1122, 490, 489, 1075, 1075, 1112, 13, 17, 18, 19, 192, 214, 282, 475, 476, 477, 478, 480, 481, 482, 483, 484, 485, 1109, 1075, 490, 490, 163, 168, 1125, 1126, 490, 39, 1127, 1112, 1127, 1127, 168, 490, 490, 1163, 301, 1088, 39, 490, 493, 1074, 1163, 493, 1074, 1138, 1074, 490, 471, 1075, 1075, 143, 1112, 168, 130, 132, 156, 264, 270, 275, 415, 426, 1120, 489, 264, 143, 840, 1074, 393, 1139, 1074, 1128, 1074, 408, 489, 975, 489, 489, 291, 1095, 489, 1112, 400, 402, 400, 402, 1144, 986, 986, 986, 223, 351, 468, 489, 975, 1020, 1021, 1022, 1029, 1034, 1044, 1077, 1079, 1080, 1160, 448, 1039, 990, 1039, 894, 1154, 1072, 524, 936, 242, 489, 993, 282, 1107, 1110, 473, 805, 5, 1154, 1002, 281, 451, 430, 999, 238, 1020, 448, 1040, 438, 395, 431, 952, 953, 954, 1160, 280, 955, 1160, 968, 969, 493, 1019, 477, 1138, 822, 757, 818, 818, 57, 820, 484, 1159, 1159, 280, 1145, 283, 280, 1074, 598, 1148, 489, 489, 489, 622, 196, 601, 715, 150, 547, 408, 1158, 1146, 529, 1146, 1051, 1146, 455, 756, 756, 756, 756, 85, 127, 298, 401, 1051, 1146, 643, 1146, 180, 436, 408, 408, 643, 660, 666, 334, 367, 542, 1146, 1146, 1146, 204, 270, 153, 814, 295, 367, 408, 265, 150, 284, 664, 715, 367, 26, 135, 338, 339, 367, 546, 555, 556, 666, 861, 359, 150, 547, 150, 547, 1146, 1146, 1146, 1146, 359, 359, 228, 669, 670, 669, 490, 493, 671, 1155, 196, 490, 493, 477, 491, 153, 1158, 1146, 334, 367, 542, 1146, 1146, 1146, 280, 296, 334, 367, 26, 135, 296, 334, 367, 1051, 262, 1051, 490, 493, 477, 1144, 408, 1159, 432, 688, 153, 230, 302, 12, 270, 478, 1155, 302, 1159, 429, 153, 408, 408, 354, 383, 493, 830, 295, 367, 88, 408, 860, 354, 116, 163, 557, 408, 408, 240, 240, 240, 408, 408, 354, 408, 408, 354, 408, 354, 408, 354, 408, 124, 547, 1051, 265, 1155, 367, 861, 150, 547, 408, 408, 490, 1146, 408, 860, 354, 408, 1158, 1146, 490, 490, 490, 1114, 488, 1051, 756, 214, 764, 1148, 1148, 214, 214, 1146, 214, 384, 385, 567, 1155, 567, 180, 490, 490, 168, 725, 727, 262, 282, 480, 481, 639, 728, 818, 1110, 1155, 1167, 280, 70, 76, 88, 116, 118, 172, 200, 265, 270, 312, 328, 425, 590, 591, 593, 149, 447, 501, 529, 1146, 529, 664, 1144, 1144, 1144, 490, 493, 1159, 177, 345, 1159, 1154, 418, 1144, 600, 3, 163, 693, 47, 516, 336, 396, 673, 109, 933, 168, 876, 552, 601, 1144, 700, 732, 733, 1155, 490, 493, 1146, 163, 601, 1144, 626, 1144, 1146, 627, 489, 582, 1144, 490, 1148, 451, 453, 618, 551, 39, 150, 974, 617, 408, 150, 1029, 477, 490, 493, 490, 493, 116, 477, 828, 1155, 529, 396, 817, 818, 163, 829, 827, 121, 206, 360, 430, 885, 1146, 180, 974, 1051, 489, 490, 493, 490, 1154, 1071, 1071, 488, 488, 490, 547, 432, 547, 432, 547, 1146, 1146, 683, 547, 756, 150, 354, 354, 354, 354, 354, 1145, 493, 1158, 451, 493, 782, 283, 1030, 364, 148, 148, 109, 261, 1144, 1146, 1159, 779, 547, 1158, 214, 214, 214, 639, 214, 214, 214, 214, 214, 1116, 404, 1074, 141, 1051, 490, 1074, 1074, 1074, 1120, 1074, 1074, 1125, 490, 1112, 493, 1051, 1075, 1075, 1075, 1075, 130, 132, 265, 275, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1074, 1074, 1126, 1125, 1051, 490, 490, 490, 1112, 490, 493, 57, 1076, 1089, 490, 1163, 1085, 309, 389, 1087, 490, 493, 443, 1081, 39, 490, 12, 478, 1155, 1074, 36, 36, 1074, 490, 1074, 168, 489, 264, 1115, 1074, 490, 143, 1075, 1075, 143, 143, 1074, 1074, 991, 448, 489, 1096, 1160, 490, 1112, 493, 986, 986, 986, 986, 1144, 1144, 1144, 975, 1034, 1044, 168, 489, 975, 1021, 1022, 39, 1023, 1024, 1160, 493, 96, 169, 202, 217, 227, 253, 344, 1026, 1024, 39, 1023, 1025, 1160, 1024, 474, 1038, 1137, 1074, 177, 1004, 490, 1004, 490, 945, 489, 805, 160, 222, 281, 451, 405, 99, 1074, 341, 957, 437, 490, 493, 1138, 86, 957, 490, 493, 967, 1040, 1074, 490, 484, 822, 418, 171, 349, 355, 362, 397, 419, 791, 163, 791, 490, 489, 605, 606, 799, 1079, 1160, 601, 601, 715, 1150, 490, 118, 200, 261, 265, 716, 1146, 1146, 39, 1146, 432, 432, 756, 756, 756, 756, 220, 757, 1158, 1146, 408, 860, 354, 408, 204, 1146, 57, 399, 1146, 150, 587, 489, 589, 383, 172, 152, 185, 265, 551, 501, 109, 172, 265, 383, 386, 551, 637, 367, 556, 418, 1146, 1160, 359, 668, 1146, 554, 728, 1163, 1146, 295, 367, 408, 860, 354, 408, 153, 408, 408, 354, 170, 282, 386, 737, 738, 170, 282, 745, 746, 408, 408, 354, 490, 490, 490, 867, 262, 639, 818, 868, 1110, 1155, 1167, 334, 1146, 489, 451, 689, 1146, 1156, 12, 478, 1155, 1155, 1155, 1146, 1146, 1146, 1146, 1156, 877, 57, 399, 1146, 1146, 1146, 1146, 438, 1146, 1146, 163, 163, 336, 163, 186, 1158, 1146, 1146, 1158, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 280, 76, 548, 150, 28, 49, 418, 1160, 1146, 1155, 666, 1146, 1146, 1146, 1146, 990, 490, 214, 764, 214, 214, 764, 764, 214, 764, 501, 432, 572, 573, 643, 715, 451, 453, 756, 1144, 489, 756, 1146, 1075, 33, 57, 592, 119, 188, 118, 270, 218, 1144, 830, 170, 316, 711, 718, 719, 1160, 653, 300, 489, 582, 595, 199, 612, 585, 1159, 1159, 1051, 489, 552, 30, 121, 206, 360, 430, 694, 408, 690, 1158, 186, 1144, 675, 455, 280, 1020, 830, 329, 701, 490, 493, 1043, 664, 683, 490, 634, 39, 275, 300, 489, 947, 584, 586, 588, 597, 1160, 300, 613, 614, 582, 612, 551, 278, 280, 619, 974, 629, 627, 552, 1155, 1150, 796, 728, 3, 731, 819, 1074, 1074, 493, 489, 825, 418, 493, 408, 489, 643, 490, 909, 910, 488, 1148, 1148, 547, 364, 547, 1145, 1145, 1145, 1145, 1145, 639, 174, 781, 490, 1146, 109, 786, 168, 270, 769, 1155, 769, 769, 214, 769, 769, 769, 769, 769, 1074, 490, 490, 490, 1126, 490, 1074, 168, 130, 132, 275, 489, 490, 458, 1083, 1112, 327, 437, 57, 1089, 1076, 449, 449, 490, 1074, 261, 1074, 493, 1082, 1053, 1074, 1074, 1074, 1115, 490, 1074, 36, 36, 1074, 1074, 143, 490, 490, 1074, 1097, 1160, 490, 1074, 1144, 1144, 1144, 1144, 1024, 1025, 1024, 489, 463, 1076, 490, 1160, 489, 1021, 217, 290, 1027, 1021, 1027, 217, 1026, 1027, 217, 398, 1032, 489, 1160, 489, 287, 57, 181, 1011, 12, 1155, 1011, 1155, 490, 840, 405, 275, 1141, 974, 294, 974, 954, 280, 489, 956, 477, 968, 957, 418, 490, 408, 776, 168, 715, 1074, 490, 493, 451, 76, 798, 802, 798, 490, 490, 193, 603, 119, 188, 198, 118, 434, 547, 1051, 1148, 1148, 1146, 1146, 1146, 1146, 1146, 1159, 1146, 587, 665, 669, 1156, 592, 186, 186, 270, 639, 592, 270, 1156, 1160, 1051, 547, 547, 477, 57, 399, 1146, 1146, 1146, 1146, 1146, 1158, 1146, 1146, 1154, 1154, 1051, 493, 1154, 1154, 493, 1158, 1146, 1146, 408, 1074, 70, 1159, 1146, 408, 408, 168, 192, 451, 1145, 1145, 756, 1145, 150, 153, 756, 1155, 1155, 1051, 547, 547, 408, 490, 214, 764, 764, 764, 764, 489, 568, 569, 501, 123, 170, 203, 170, 168, 714, 1074, 265, 591, 116, 39, 830, 600, 432, 621, 1152, 36, 149, 192, 275, 581, 557, 147, 194, 489, 364, 432, 601, 39, 1159, 688, 516, 265, 489, 165, 1146, 1112, 255, 279, 702, 703, 704, 163, 707, 1155, 364, 552, 149, 974, 756, 275, 581, 627, 490, 493, 451, 589, 57, 617, 557, 613, 82, 399, 620, 451, 898, 39, 620, 168, 280, 489, 1155, 816, 831, 832, 1161, 1051, 163, 1144, 168, 408, 851, 201, 644, 547, 490, 547, 547, 1146, 283, 212, 547, 780, 769, 490, 1075, 168, 489, 1115, 489, 490, 493, 490, 1089, 490, 437, 380, 490, 490, 490, 1074, 1074, 1074, 490, 300, 1098, 490, 1035, 1036, 1079, 489, 1088, 1023, 489, 1145, 1021, 280, 432, 1028, 1021, 217, 1021, 1152, 1042, 489, 1042, 1160, 98, 178, 347, 489, 1005, 1006, 1007, 1008, 1009, 1010, 1074, 1074, 450, 1092, 1092, 490, 971, 952, 88, 797, 799, 131, 1074, 780, 280, 780, 490, 603, 606, 282, 840, 756, 756, 803, 328, 603, 489, 830, 490, 408, 367, 963, 490, 493, 39, 150, 150, 548, 728, 1159, 1146, 408, 489, 811, 840, 842, 738, 489, 489, 746, 1146, 490, 489, 367, 963, 1146, 1146, 489, 489, 489, 451, 474, 918, 336, 918, 918, 163, 1146, 548, 1146, 764, 574, 575, 1163, 53, 97, 122, 139, 143, 164, 167, 182, 270, 320, 570, 568, 1155, 811, 39, 847, 847, 1144, 715, 490, 185, 489, 621, 241, 604, 196, 489, 719, 711, 489, 1144, 490, 364, 30, 81, 89, 117, 172, 185, 197, 383, 386, 596, 596, 1143, 1146, 1148, 490, 974, 689, 150, 109, 664, 168, 703, 350, 396, 705, 136, 708, 447, 710, 1146, 39, 1146, 627, 582, 1144, 490, 586, 284, 1160, 618, 613, 617, 121, 135, 309, 1146, 62, 70, 233, 974, 756, 1029, 797, 818, 490, 493, 418, 1039, 378, 378, 490, 643, 261, 436, 645, 646, 1146, 547, 1075, 1115, 490, 1084, 1112, 261, 470, 57, 990, 490, 493, 39, 1037, 116, 1049, 1050, 1075, 79, 1145, 490, 1074, 489, 1021, 1028, 489, 490, 1042, 490, 489, 368, 489, 490, 493, 1093, 1094, 1160, 437, 1146, 490, 493, 266, 430, 782, 791, 547, 798, 830, 489, 551, 804, 1144, 830, 601, 621, 1146, 399, 669, 185, 432, 549, 367, 963, 1146, 1115, 163, 741, 741, 1115, 1115, 1074, 399, 1112, 1112, 558, 559, 1162, 755, 756, 755, 756, 1145, 547, 490, 493, 482, 489, 526, 576, 639, 915, 1155, 915, 265, 270, 320, 915, 915, 1039, 847, 42, 190, 163, 261, 599, 489, 635, 1074, 169, 299, 373, 280, 608, 609, 610, 399, 490, 1152, 6, 720, 582, 612, 1146, 490, 664, 157, 740, 552, 898, 1144, 455, 1020, 915, 350, 382, 709, 489, 149, 664, 974, 947, 613, 582, 612, 589, 489, 619, 617, 618, 351, 351, 70, 283, 70, 627, 796, 490, 825, 831, 1051, 131, 451, 451, 436, 643, 664, 490, 490, 490, 437, 1112, 179, 321, 351, 1099, 1038, 1035, 489, 1075, 490, 493, 39, 1045, 1046, 1160, 490, 1145, 1112, 490, 1112, 489, 1112, 1006, 493, 39, 974, 1039, 799, 367, 168, 621, 840, 804, 805, 600, 621, 490, 715, 1146, 635, 1074, 399, 490, 286, 357, 325, 742, 742, 490, 490, 490, 1146, 490, 490, 490, 493, 1154, 918, 575, 526, 577, 578, 1155, 1155, 270, 601, 482, 601, 1155, 1155, 136, 198, 636, 490, 121, 430, 280, 610, 280, 609, 1146, 489, 490, 493, 557, 364, 664, 756, 39, 39, 489, 1146, 706, 1160, 1074, 711, 898, 627, 617, 557, 613, 489, 615, 616, 1079, 1160, 620, 618, 619, 283, 283, 489, 193, 800, 31, 207, 886, 170, 170, 51, 99, 421, 1074, 1100, 1101, 1100, 1100, 490, 1042, 493, 1050, 1163, 490, 493, 163, 1051, 490, 490, 490, 1005, 490, 1094, 1096, 966, 780, 448, 607, 490, 805, 604, 715, 963, 1146, 811, 57, 963, 408, 558, 756, 490, 493, 601, 350, 490, 387, 61, 261, 340, 367, 611, 611, 490, 6, 364, 1146, 737, 974, 664, 490, 1152, 618, 613, 617, 1074, 490, 493, 802, 802, 619, 620, 797, 489, 552, 266, 489, 881, 883, 887, 949, 958, 965, 974, 811, 811, 1101, 350, 162, 307, 162, 307, 146, 1102, 1102, 1102, 490, 1076, 1046, 287, 3, 116, 265, 270, 1047, 1048, 335, 1033, 490, 1039, 547, 489, 715, 608, 963, 756, 489, 578, 710, 25, 116, 270, 1146, 664, 898, 489, 619, 617, 618, 490, 616, 756, 803, 803, 620, 490, 799, 801, 620, 882, 883, 884, 975, 976, 493, 493, 36, 99, 177, 261, 405, 1088, 1075, 1075, 270, 1048, 489, 1074, 715, 1112, 149, 664, 5, 712, 713, 1154, 1155, 1163, 620, 618, 619, 802, 800, 490, 493, 1039, 490, 492, 408, 168, 1101, 350, 288, 79, 1074, 490, 490, 711, 490, 493, 619, 620, 803, 552, 799, 884, 378, 378, 1045, 490, 1152, 713, 620, 620, 451, 451, 490, 489, 1039, 170, 170, 712, 811, 811, 490 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (&yylloc, yyscanner, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) #else # define YYLEX yylex (&yylval, &yylloc, yyscanner) #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value, Location, yyscanner); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; YYLTYPE const * const yylocationp; core_yyscan_t yyscanner; #endif { if (!yyvaluep) return; YYUSE (yylocationp); YYUSE (yyscanner); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, core_yyscan_t yyscanner) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; YYLTYPE const * const yylocationp; core_yyscan_t yyscanner; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) #else static void yy_stack_print (bottom, top) yytype_int16 *bottom; yytype_int16 *top; #endif { YYFPRINTF (stderr, "Stack now"); for (; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, core_yyscan_t yyscanner) #else static void yy_reduce_print (yyvsp, yylsp, yyrule, yyscanner) YYSTYPE *yyvsp; YYLTYPE *yylsp; int yyrule; core_yyscan_t yyscanner; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) , &(yylsp[(yyi + 1) - (yynrhs)]) , yyscanner); fprintf (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, yylsp, Rule, yyscanner); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, core_yyscan_t yyscanner) #else static void yydestruct (yymsg, yytype, yyvaluep, yylocationp, yyscanner) const char *yymsg; int yytype; YYSTYPE *yyvaluep; YYLTYPE *yylocationp; core_yyscan_t yyscanner; #endif { YYUSE (yyvaluep); YYUSE (yylocationp); YYUSE (yyscanner); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (core_yyscan_t yyscanner); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (core_yyscan_t yyscanner) #else int yyparse (yyscanner) core_yyscan_t yyscanner; #endif #endif { /* The look-ahead symbol. */ int yychar; /* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /* Location data for the look-ahead symbol. */ YYLTYPE yylloc; int yystate; int yyn; int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif /* Three stacks and their tools: `yyss': related to states, `yyvs': related to semantic values, `yyls': related to locations. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss = yyssa; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp; /* The location stack. */ YYLTYPE yylsa[YYINITDEPTH]; YYLTYPE *yyls = yylsa; YYLTYPE *yylsp; /* The locations where the error started and ended. */ YYLTYPE yyerror_range[2]; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) YYSIZE_T yystacksize = YYINITDEPTH; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; YYLTYPE yyloc; /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; yylsp = yyls; #if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL /* Initialize the default location before parsing starts. */ yylloc.first_line = yylloc.last_line = 1; yylloc.first_column = yylloc.last_column = 0; #endif goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; YYLTYPE *yyls1 = yyls; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yyls1, yysize * sizeof (*yylsp), &yystacksize); yyls = yyls1; yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); YYSTACK_RELOCATE (yyls); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a look-ahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a look-ahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == YYFINAL) YYACCEPT; /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; *++yylsp = yylloc; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; /* Default location. */ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: #line 810 "gram.y" { pg_yyget_extra(yyscanner)->parsetree = (yyvsp[(1) - (1)].list); ;} break; case 3: #line 826 "gram.y" { if ((yyvsp[(1) - (3)].list) != NIL) { /* update length of previous stmt */ updateRawStmtEnd(llast_node(RawStmt, (yyvsp[(1) - (3)].list)), (yylsp[(2) - (3)])); } if ((yyvsp[(3) - (3)].node) != NULL) (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeRawStmt((yyvsp[(3) - (3)].node), (yylsp[(2) - (3)]) + 1)); else (yyval.list) = (yyvsp[(1) - (3)].list); ;} break; case 4: #line 838 "gram.y" { if ((yyvsp[(1) - (1)].node) != NULL) (yyval.list) = list_make1(makeRawStmt((yyvsp[(1) - (1)].node), 0)); else (yyval.list) = NIL; ;} break; case 130: #line 973 "gram.y" { (yyval.node) = NULL; ;} break; case 131: #line 983 "gram.y" { CallStmt *n = makeNode(CallStmt); n->funccall = castNode(FuncCall, (yyvsp[(2) - (2)].node)); (yyval.node) = (Node *)n; ;} break; case 132: #line 998 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_ROLE; n->role = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 133: #line 1008 "gram.y" {;} break; case 134: #line 1009 "gram.y" {;} break; case 135: #line 1010 "gram.y" {;} break; case 136: #line 1019 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 137: #line 1020 "gram.y" { (yyval.list) = NIL; ;} break; case 138: #line 1024 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 139: #line 1025 "gram.y" { (yyval.list) = NIL; ;} break; case 140: #line 1030 "gram.y" { (yyval.defelt) = makeDefElem("password", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 141: #line 1035 "gram.y" { (yyval.defelt) = makeDefElem("password", (Node *)makeParamRef((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)])), (yylsp[(1) - (2)])); ;} break; case 142: #line 1040 "gram.y" { (yyval.defelt) = makeDefElem("password", (Node *)makeParamRef(0, (yylsp[(2) - (2)])), (yylsp[(1) - (2)])); ;} break; case 143: #line 1045 "gram.y" { (yyval.defelt) = makeDefElem("password", NULL, (yylsp[(1) - (2)])); ;} break; case 144: #line 1049 "gram.y" { /* * These days, passwords are always stored in encrypted * form, so there is no difference between PASSWORD and * ENCRYPTED PASSWORD. */ (yyval.defelt) = makeDefElem("password", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 145: #line 1059 "gram.y" { /* * These days, passwords are always stored in encrypted * form, so there is no difference between PASSWORD and * ENCRYPTED PASSWORD. */ (yyval.defelt) = makeDefElem("password", (Node *)makeParamRef((yyvsp[(3) - (3)].ival), (yylsp[(3) - (3)])), (yylsp[(1) - (3)])); ;} break; case 146: #line 1069 "gram.y" { /* * These days, passwords are always stored in encrypted * form, so there is no difference between PASSWORD and * ENCRYPTED PASSWORD. */ (yyval.defelt) = makeDefElem("password", (Node *)makeParamRef(0, (yylsp[(3) - (3)])), (yylsp[(1) - (3)])); ;} break; case 147: #line 1079 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("UNENCRYPTED PASSWORD is no longer supported"), errhint("Remove UNENCRYPTED to store the password in encrypted form instead."), parser_errposition((yylsp[(1) - (3)])))); ;} break; case 148: #line 1087 "gram.y" { (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; case 149: #line 1091 "gram.y" { (yyval.defelt) = makeDefElem("connectionlimit", (Node *)makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); ;} break; case 150: #line 1095 "gram.y" { (yyval.defelt) = makeDefElem("validUntil", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 151: #line 1100 "gram.y" { (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 152: #line 1104 "gram.y" { /* * We handle identifiers that aren't parser keywords with * the following special-case codes, to avoid bloating the * size of the main parser. */ if (strcmp((yyvsp[(1) - (1)].str), "superuser") == 0) (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nosuperuser") == 0) (yyval.defelt) = makeDefElem("superuser", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "createrole") == 0) (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nocreaterole") == 0) (yyval.defelt) = makeDefElem("createrole", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "replication") == 0) (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "noreplication") == 0) (yyval.defelt) = makeDefElem("isreplication", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "createdb") == 0) (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nocreatedb") == 0) (yyval.defelt) = makeDefElem("createdb", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "login") == 0) (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nologin") == 0) (yyval.defelt) = makeDefElem("canlogin", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "bypassrls") == 0) (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(true), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "nobypassrls") == 0) (yyval.defelt) = makeDefElem("bypassrls", (Node *)makeInteger(false), (yylsp[(1) - (1)])); else if (strcmp((yyvsp[(1) - (1)].str), "noinherit") == 0) { /* * Note that INHERIT is a keyword, so it's handled by main parser, but * NOINHERIT is handled here. */ (yyval.defelt) = makeDefElem("inherit", (Node *)makeInteger(false), (yylsp[(1) - (1)])); } else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("unrecognized role option \"%s\"", (yyvsp[(1) - (1)].str)), parser_errposition((yylsp[(1) - (1)])))); ;} break; case 153: #line 1151 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; case 154: #line 1154 "gram.y" { (yyval.defelt) = makeDefElem("sysid", (Node *)makeInteger((yyvsp[(2) - (2)].ival)), (yylsp[(1) - (2)])); ;} break; case 155: #line 1158 "gram.y" { (yyval.defelt) = makeDefElem("adminmembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 156: #line 1162 "gram.y" { (yyval.defelt) = makeDefElem("rolemembers", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 157: #line 1166 "gram.y" { (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 158: #line 1170 "gram.y" { (yyval.defelt) = makeDefElem("addroleto", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 159: #line 1184 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_USER; n->role = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 160: #line 1202 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); n->role = (yyvsp[(3) - (5)].rolespec); n->action = +1; /* add, if there are members */ n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 161: #line 1210 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); n->role = (yyvsp[(3) - (5)].rolespec); n->action = +1; /* add, if there are members */ n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 162: #line 1220 "gram.y" { (yyval.str) = NULL; ;} break; case 163: #line 1221 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].str); ;} break; case 164: #line 1226 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = (yyvsp[(3) - (5)].rolespec); n->database = (yyvsp[(4) - (5)].str); n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; ;} break; case 165: #line 1234 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = NULL; n->database = (yyvsp[(4) - (5)].str); n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; ;} break; case 166: #line 1242 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = (yyvsp[(3) - (5)].rolespec); n->database = (yyvsp[(4) - (5)].str); n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; ;} break; case 167: #line 1250 "gram.y" { AlterRoleSetStmt *n = makeNode(AlterRoleSetStmt); n->role = NULL; n->database = (yyvsp[(4) - (5)].str); n->setstmt = (yyvsp[(5) - (5)].vsetstmt); (yyval.node) = (Node *)n; ;} break; case 168: #line 1271 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; ;} break; case 169: #line 1278 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = true; n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 170: #line 1285 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; ;} break; case 171: #line 1292 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->roles = (yyvsp[(5) - (5)].list); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 172: #line 1299 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = false; n->roles = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; ;} break; case 173: #line 1306 "gram.y" { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = true; n->roles = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 174: #line 1323 "gram.y" { CreateRoleStmt *n = makeNode(CreateRoleStmt); n->stmt_type = ROLESTMT_GROUP; n->role = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 175: #line 1341 "gram.y" { AlterRoleStmt *n = makeNode(AlterRoleStmt); n->role = (yyvsp[(3) - (6)].rolespec); n->action = (yyvsp[(4) - (6)].ival); n->options = list_make1(makeDefElem("rolemembers", (Node *)(yyvsp[(6) - (6)].list), (yylsp[(6) - (6)]))); (yyval.node) = (Node *)n; ;} break; case 176: #line 1351 "gram.y" { (yyval.ival) = +1; ;} break; case 177: #line 1352 "gram.y" { (yyval.ival) = -1; ;} break; case 178: #line 1364 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* One can omit the schema name or the authorization id. */ n->schemaname = (yyvsp[(3) - (6)].str); n->authrole = (yyvsp[(5) - (6)].rolespec); n->schemaElts = (yyvsp[(6) - (6)].list); n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; case 179: #line 1374 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* ...but not both */ n->schemaname = (yyvsp[(3) - (4)].str); n->authrole = NULL; n->schemaElts = (yyvsp[(4) - (4)].list); n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; case 180: #line 1384 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* schema name can be omitted here, too */ n->schemaname = (yyvsp[(6) - (9)].str); n->authrole = (yyvsp[(8) - (9)].rolespec); if ((yyvsp[(9) - (9)].list) != NIL) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), parser_errposition((yylsp[(9) - (9)])))); n->schemaElts = (yyvsp[(9) - (9)].list); n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; case 181: #line 1399 "gram.y" { CreateSchemaStmt *n = makeNode(CreateSchemaStmt); /* ...but not here */ n->schemaname = (yyvsp[(6) - (7)].str); n->authrole = NULL; if ((yyvsp[(7) - (7)].list) != NIL) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE SCHEMA IF NOT EXISTS cannot include schema elements"), parser_errposition((yylsp[(7) - (7)])))); n->schemaElts = (yyvsp[(7) - (7)].list); n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; case 182: #line 1416 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 183: #line 1417 "gram.y" { (yyval.str) = NULL; ;} break; case 184: #line 1422 "gram.y" { if ((yyloc) < 0) /* see comments for YYLLOC_DEFAULT */ (yyloc) = (yylsp[(2) - (2)]); (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 185: #line 1428 "gram.y" { (yyval.list) = NIL; ;} break; case 192: #line 1456 "gram.y" { VariableSetStmt *n = (yyvsp[(2) - (2)].vsetstmt); n->is_local = false; (yyval.node) = (Node *) n; ;} break; case 193: #line 1462 "gram.y" { VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = true; (yyval.node) = (Node *) n; ;} break; case 194: #line 1468 "gram.y" { VariableSetStmt *n = (yyvsp[(3) - (3)].vsetstmt); n->is_local = false; (yyval.node) = (Node *) n; ;} break; case 195: #line 1477 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; n->name = "TRANSACTION"; n->args = (yyvsp[(2) - (2)].list); (yyval.vsetstmt) = n; ;} break; case 196: #line 1485 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; n->name = "SESSION CHARACTERISTICS"; n->args = (yyvsp[(5) - (5)].list); (yyval.vsetstmt) = n; ;} break; case 198: #line 1497 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = (yyvsp[(1) - (3)].str); n->args = (yyvsp[(3) - (3)].list); (yyval.vsetstmt) = n; ;} break; case 199: #line 1505 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = (yyvsp[(1) - (3)].str); n->args = (yyvsp[(3) - (3)].list); (yyval.vsetstmt) = n; ;} break; case 200: #line 1513 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; ;} break; case 201: #line 1520 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; ;} break; case 202: #line 1529 "gram.y" {(yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt);;} break; case 203: #line 1531 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_CURRENT; n->name = (yyvsp[(1) - (3)].str); (yyval.vsetstmt) = n; ;} break; case 204: #line 1539 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "timezone"; if ((yyvsp[(3) - (3)].node) != NULL) n->args = list_make1((yyvsp[(3) - (3)].node)); else n->kind = VAR_SET_DEFAULT; (yyval.vsetstmt) = n; ;} break; case 205: #line 1550 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("current database cannot be changed"), parser_errposition((yylsp[(2) - (2)])))); (yyval.vsetstmt) = NULL; /*not reached*/ ;} break; case 206: #line 1558 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "search_path"; n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; ;} break; case 207: #line 1566 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "search_path"; n->args = list_make1(makeParamRef((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; ;} break; case 208: #line 1574 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "search_path"; n->args = list_make1(makeParamRef(0, (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; ;} break; case 209: #line 1582 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "client_encoding"; if ((yyvsp[(2) - (2)].str) != NULL) n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); else n->kind = VAR_SET_DEFAULT; (yyval.vsetstmt) = n; ;} break; case 210: #line 1593 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "role"; n->args = list_make1(makeStringConst((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; ;} break; case 211: #line 1601 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "role"; n->args = list_make1(makeParamRef((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; ;} break; case 212: #line 1609 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "role"; n->args = list_make1(makeParamRef(0, (yylsp[(2) - (2)]))); (yyval.vsetstmt) = n; ;} break; case 213: #line 1617 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "session_authorization"; n->args = list_make1(makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; ;} break; case 214: #line 1625 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "session_authorization"; n->args = list_make1(makeParamRef((yyvsp[(3) - (3)].ival), (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; ;} break; case 215: #line 1633 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "session_authorization"; n->args = list_make1(makeParamRef(0, (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; ;} break; case 216: #line 1641 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_DEFAULT; n->name = "session_authorization"; (yyval.vsetstmt) = n; ;} break; case 217: #line 1648 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; n->name = "xmloption"; n->args = list_make1(makeStringConst((yyvsp[(3) - (3)].ival) == XMLOPTION_DOCUMENT ? "DOCUMENT" : "CONTENT", (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; ;} break; case 218: #line 1657 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_MULTI; n->name = "TRANSACTION SNAPSHOT"; n->args = list_make1(makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)]))); (yyval.vsetstmt) = n; ;} break; case 219: #line 1666 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 220: #line 1668 "gram.y" { (yyval.str) = psprintf("%s.%s", (yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str)); ;} break; case 221: #line 1671 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 222: #line 1672 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 223: #line 1676 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 224: #line 1678 "gram.y" { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); ;} break; case 225: #line 1680 "gram.y" { (yyval.node) = makeParamRef((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; case 226: #line 1682 "gram.y" { (yyval.node) = makeParamRef(0, (yylsp[(1) - (1)])); ;} break; case 227: #line 1685 "gram.y" { (yyval.str) = "read uncommitted"; ;} break; case 228: #line 1686 "gram.y" { (yyval.str) = "read committed"; ;} break; case 229: #line 1687 "gram.y" { (yyval.str) = "repeatable read"; ;} break; case 230: #line 1688 "gram.y" { (yyval.str) = "serializable"; ;} break; case 231: #line 1692 "gram.y" { (yyval.str) = "true"; ;} break; case 232: #line 1693 "gram.y" { (yyval.str) = "false"; ;} break; case 233: #line 1694 "gram.y" { (yyval.str) = "on"; ;} break; case 234: #line 1700 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 235: #line 1713 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 236: #line 1717 "gram.y" { (yyval.node) = makeParamRef((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; case 237: #line 1721 "gram.y" { (yyval.node) = makeParamRef(0, (yylsp[(1) - (1)])); ;} break; case 238: #line 1725 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 239: #line 1729 "gram.y" { TypeName *t = (yyvsp[(1) - (3)].typnam); if ((yyvsp[(3) - (3)].list) != NIL) { A_Const *n = (A_Const *) linitial((yyvsp[(3) - (3)].list)); if ((n->val.val.ival & ~(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE))) != 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("time zone interval must be HOUR or HOUR TO MINUTE"), parser_errposition((yylsp[(3) - (3)])))); } t->typmods = (yyvsp[(3) - (3)].list); (yyval.node) = makeStringConstCast((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), t); ;} break; case 240: #line 1744 "gram.y" { TypeName *t = (yyvsp[(1) - (5)].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); (yyval.node) = makeStringConstCast((yyvsp[(5) - (5)].str), (yylsp[(5) - (5)]), t); ;} break; case 241: #line 1750 "gram.y" { (yyval.node) = makeAConst((yyvsp[(1) - (1)].value), (yylsp[(1) - (1)])); ;} break; case 242: #line 1751 "gram.y" { (yyval.node) = NULL; ;} break; case 243: #line 1752 "gram.y" { (yyval.node) = NULL; ;} break; case 244: #line 1756 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 245: #line 1757 "gram.y" { (yyval.str) = NULL; ;} break; case 246: #line 1758 "gram.y" { (yyval.str) = NULL; ;} break; case 247: #line 1762 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 248: #line 1763 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 249: #line 1767 "gram.y" { (yyval.node) = (Node *) (yyvsp[(2) - (2)].vsetstmt); ;} break; case 250: #line 1771 "gram.y" { (yyval.vsetstmt) = (yyvsp[(1) - (1)].vsetstmt); ;} break; case 251: #line 1773 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "timezone"; (yyval.vsetstmt) = n; ;} break; case 252: #line 1780 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "transaction_isolation"; (yyval.vsetstmt) = n; ;} break; case 253: #line 1787 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = "session_authorization"; (yyval.vsetstmt) = n; ;} break; case 254: #line 1797 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET; n->name = (yyvsp[(1) - (1)].str); (yyval.vsetstmt) = n; ;} break; case 255: #line 1804 "gram.y" { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_RESET_ALL; (yyval.vsetstmt) = n; ;} break; case 256: #line 1813 "gram.y" { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); ;} break; case 257: #line 1814 "gram.y" { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); ;} break; case 258: #line 1819 "gram.y" { (yyval.vsetstmt) = (yyvsp[(2) - (2)].vsetstmt); ;} break; case 259: #line 1820 "gram.y" { (yyval.vsetstmt) = (VariableSetStmt *) (yyvsp[(1) - (1)].node); ;} break; case 260: #line 1826 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 261: #line 1832 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "timezone"; (yyval.node) = (Node *) n; ;} break; case 262: #line 1838 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "transaction_isolation"; (yyval.node) = (Node *) n; ;} break; case 263: #line 1844 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "session_authorization"; (yyval.node) = (Node *) n; ;} break; case 264: #line 1850 "gram.y" { VariableShowStmt *n = makeNode(VariableShowStmt); n->name = "all"; (yyval.node) = (Node *) n; ;} break; case 265: #line 1860 "gram.y" { ConstraintsSetStmt *n = makeNode(ConstraintsSetStmt); n->constraints = (yyvsp[(3) - (4)].list); n->deferred = (yyvsp[(4) - (4)].boolean); (yyval.node) = (Node *) n; ;} break; case 266: #line 1869 "gram.y" { (yyval.list) = NIL; ;} break; case 267: #line 1870 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 268: #line 1874 "gram.y" { (yyval.boolean) = true; ;} break; case 269: #line 1875 "gram.y" { (yyval.boolean) = false; ;} break; case 270: #line 1884 "gram.y" { CheckPointStmt *n = makeNode(CheckPointStmt); (yyval.node) = (Node *)n; ;} break; case 271: #line 1899 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_ALL; (yyval.node) = (Node *) n; ;} break; case 272: #line 1905 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; (yyval.node) = (Node *) n; ;} break; case 273: #line 1911 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_TEMP; (yyval.node) = (Node *) n; ;} break; case 274: #line 1917 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_PLANS; (yyval.node) = (Node *) n; ;} break; case 275: #line 1923 "gram.y" { DiscardStmt *n = makeNode(DiscardStmt); n->target = DISCARD_SEQUENCES; (yyval.node) = (Node *) n; ;} break; case 276: #line 1942 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_TABLE; n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 277: #line 1951 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_TABLE; n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 278: #line 1960 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = list_make1((yyvsp[(4) - (4)].node)); n->relkind = OBJECT_TABLE; n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 279: #line 1969 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); n->cmds = list_make1((yyvsp[(6) - (6)].node)); n->relkind = OBJECT_TABLE; n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 280: #line 1978 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); n->orig_tablespacename = (yyvsp[(6) - (10)].str); n->objtype = OBJECT_TABLE; n->roles = NIL; n->new_tablespacename = (yyvsp[(9) - (10)].str); n->nowait = (yyvsp[(10) - (10)].boolean); (yyval.node) = (Node *)n; ;} break; case 281: #line 1989 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); n->orig_tablespacename = (yyvsp[(6) - (13)].str); n->objtype = OBJECT_TABLE; n->roles = (yyvsp[(9) - (13)].list); n->new_tablespacename = (yyvsp[(12) - (13)].str); n->nowait = (yyvsp[(13) - (13)].boolean); (yyval.node) = (Node *)n; ;} break; case 282: #line 2000 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_INDEX; n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 283: #line 2009 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_INDEX; n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 284: #line 2018 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = list_make1((yyvsp[(4) - (4)].node)); n->relkind = OBJECT_INDEX; n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 285: #line 2027 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); n->orig_tablespacename = (yyvsp[(6) - (10)].str); n->objtype = OBJECT_INDEX; n->roles = NIL; n->new_tablespacename = (yyvsp[(9) - (10)].str); n->nowait = (yyvsp[(10) - (10)].boolean); (yyval.node) = (Node *)n; ;} break; case 286: #line 2038 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); n->orig_tablespacename = (yyvsp[(6) - (13)].str); n->objtype = OBJECT_INDEX; n->roles = (yyvsp[(9) - (13)].list); n->new_tablespacename = (yyvsp[(12) - (13)].str); n->nowait = (yyvsp[(13) - (13)].boolean); (yyval.node) = (Node *)n; ;} break; case 287: #line 2049 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_SEQUENCE; n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 288: #line 2058 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_SEQUENCE; n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 289: #line 2067 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(3) - (4)].range); n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_VIEW; n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 290: #line 2076 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(5) - (6)].range); n->cmds = (yyvsp[(6) - (6)].list); n->relkind = OBJECT_VIEW; n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 291: #line 2085 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(4) - (5)].range); n->cmds = (yyvsp[(5) - (5)].list); n->relkind = OBJECT_MATVIEW; n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 292: #line 2094 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(6) - (7)].range); n->cmds = (yyvsp[(7) - (7)].list); n->relkind = OBJECT_MATVIEW; n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 293: #line 2103 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); n->orig_tablespacename = (yyvsp[(7) - (11)].str); n->objtype = OBJECT_MATVIEW; n->roles = NIL; n->new_tablespacename = (yyvsp[(10) - (11)].str); n->nowait = (yyvsp[(11) - (11)].boolean); (yyval.node) = (Node *)n; ;} break; case 294: #line 2114 "gram.y" { AlterTableMoveAllStmt *n = makeNode(AlterTableMoveAllStmt); n->orig_tablespacename = (yyvsp[(7) - (14)].str); n->objtype = OBJECT_MATVIEW; n->roles = (yyvsp[(10) - (14)].list); n->new_tablespacename = (yyvsp[(13) - (14)].str); n->nowait = (yyvsp[(14) - (14)].boolean); (yyval.node) = (Node *)n; ;} break; case 295: #line 2127 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 296: #line 2128 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 297: #line 2134 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); PartitionCmd *cmd = makeNode(PartitionCmd); n->subtype = AT_AttachPartition; cmd->name = (yyvsp[(3) - (4)].range); cmd->bound = (yyvsp[(4) - (4)].partboundspec); n->def = (Node *) cmd; (yyval.node) = (Node *) n; ;} break; case 298: #line 2147 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); PartitionCmd *cmd = makeNode(PartitionCmd); n->subtype = AT_DetachPartition; cmd->name = (yyvsp[(3) - (3)].range); cmd->bound = NULL; n->def = (Node *) cmd; (yyval.node) = (Node *) n; ;} break; case 299: #line 2163 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); PartitionCmd *cmd = makeNode(PartitionCmd); n->subtype = AT_AttachPartition; cmd->name = (yyvsp[(3) - (3)].range); cmd->bound = NULL; n->def = (Node *) cmd; (yyval.node) = (Node *) n; ;} break; case 300: #line 2179 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; n->def = (yyvsp[(2) - (2)].node); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 301: #line 2188 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; n->def = (yyvsp[(5) - (5)].node); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 302: #line 2197 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; n->def = (yyvsp[(3) - (3)].node); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 303: #line 2206 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; n->def = (yyvsp[(6) - (6)].node); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 304: #line 2215 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ColumnDefault; n->name = (yyvsp[(3) - (4)].str); n->def = (yyvsp[(4) - (4)].node); (yyval.node) = (Node *)n; ;} break; case 305: #line 2224 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropNotNull; n->name = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *)n; ;} break; case 306: #line 2232 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetNotNull; n->name = (yyvsp[(3) - (6)].str); (yyval.node) = (Node *)n; ;} break; case 307: #line 2240 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropExpression; n->name = (yyvsp[(3) - (5)].str); (yyval.node) = (Node *)n; ;} break; case 308: #line 2248 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropExpression; n->name = (yyvsp[(3) - (7)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 309: #line 2257 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStatistics; n->name = (yyvsp[(3) - (6)].str); n->def = (Node *) makeInteger((yyvsp[(6) - (6)].ival)); (yyval.node) = (Node *)n; ;} break; case 310: #line 2266 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); if ((yyvsp[(3) - (6)].ival) <= 0 || (yyvsp[(3) - (6)].ival) > PG_INT16_MAX) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("column number must be in range from 1 to %d", PG_INT16_MAX), parser_errposition((yylsp[(3) - (6)])))); n->subtype = AT_SetStatistics; n->num = (int16) (yyvsp[(3) - (6)].ival); n->def = (Node *) makeInteger((yyvsp[(6) - (6)].ival)); (yyval.node) = (Node *)n; ;} break; case 311: #line 2282 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetOptions; n->name = (yyvsp[(3) - (5)].str); n->def = (Node *) (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 312: #line 2291 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetOptions; n->name = (yyvsp[(3) - (5)].str); n->def = (Node *) (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 313: #line 2300 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetStorage; n->name = (yyvsp[(3) - (6)].str); n->def = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *)n; ;} break; case 314: #line 2309 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); Constraint *c = makeNode(Constraint); c->contype = CONSTR_IDENTITY; c->generated_when = (yyvsp[(6) - (9)].ival); c->options = (yyvsp[(9) - (9)].list); c->location = (yylsp[(5) - (9)]); n->subtype = AT_AddIdentity; n->name = (yyvsp[(3) - (9)].str); n->def = (Node *) c; (yyval.node) = (Node *)n; ;} break; case 315: #line 2326 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetIdentity; n->name = (yyvsp[(3) - (4)].str); n->def = (Node *) (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; ;} break; case 316: #line 2335 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropIdentity; n->name = (yyvsp[(3) - (5)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 317: #line 2344 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropIdentity; n->name = (yyvsp[(3) - (7)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 318: #line 2353 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; n->name = (yyvsp[(5) - (6)].str); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 319: #line 2363 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; n->name = (yyvsp[(3) - (4)].str); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 320: #line 2376 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); ColumnDef *def = makeNode(ColumnDef); n->subtype = AT_AlterColumnType; n->name = (yyvsp[(3) - (8)].str); n->def = (Node *) def; /* We only use these fields of the ColumnDef node */ def->typeName = (yyvsp[(6) - (8)].typnam); def->collClause = (CollateClause *) (yyvsp[(7) - (8)].node); def->raw_default = (yyvsp[(8) - (8)].node); def->location = (yylsp[(3) - (8)]); (yyval.node) = (Node *)n; ;} break; case 321: #line 2391 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AlterColumnGenericOptions; n->name = (yyvsp[(3) - (4)].str); n->def = (Node *) (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; ;} break; case 322: #line 2400 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddConstraint; n->def = (yyvsp[(2) - (2)].node); (yyval.node) = (Node *)n; ;} break; case 323: #line 2408 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); Constraint *c = makeNode(Constraint); n->subtype = AT_AlterConstraint; n->def = (Node *) c; c->contype = CONSTR_FOREIGN; /* others not supported, yet */ c->conname = (yyvsp[(3) - (4)].str); processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "ALTER CONSTRAINT statement", &c->deferrable, &c->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; ;} break; case 324: #line 2423 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ValidateConstraint; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 325: #line 2431 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropConstraint; n->name = (yyvsp[(5) - (6)].str); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 326: #line 2441 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropConstraint; n->name = (yyvsp[(3) - (4)].str); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 327: #line 2451 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOids; (yyval.node) = (Node *)n; ;} break; case 328: #line 2458 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ClusterOn; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 329: #line 2466 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropCluster; n->name = NULL; (yyval.node) = (Node *)n; ;} break; case 330: #line 2474 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetLogged; (yyval.node) = (Node *)n; ;} break; case 331: #line 2481 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetUnLogged; (yyval.node) = (Node *)n; ;} break; case 332: #line 2488 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrig; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 333: #line 2496 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysTrig; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; ;} break; case 334: #line 2504 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaTrig; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; ;} break; case 335: #line 2512 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigAll; (yyval.node) = (Node *)n; ;} break; case 336: #line 2519 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableTrigUser; (yyval.node) = (Node *)n; ;} break; case 337: #line 2526 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrig; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 338: #line 2534 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigAll; (yyval.node) = (Node *)n; ;} break; case 339: #line 2541 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableTrigUser; (yyval.node) = (Node *)n; ;} break; case 340: #line 2548 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRule; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 341: #line 2556 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableAlwaysRule; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; ;} break; case 342: #line 2564 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableReplicaRule; n->name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; ;} break; case 343: #line 2572 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRule; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 344: #line 2580 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddInherit; n->def = (Node *) (yyvsp[(2) - (2)].range); (yyval.node) = (Node *)n; ;} break; case 345: #line 2588 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropInherit; n->def = (Node *) (yyvsp[(3) - (3)].range); (yyval.node) = (Node *)n; ;} break; case 346: #line 2596 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); TypeName *def = makeTypeNameFromNameList((yyvsp[(2) - (2)].list)); def->location = (yylsp[(2) - (2)]); n->subtype = AT_AddOf; n->def = (Node *) def; (yyval.node) = (Node *)n; ;} break; case 347: #line 2606 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropOf; (yyval.node) = (Node *)n; ;} break; case 348: #line 2613 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ChangeOwner; n->newowner = (yyvsp[(3) - (3)].rolespec); (yyval.node) = (Node *)n; ;} break; case 349: #line 2621 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetTableSpace; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 350: #line 2629 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_SetRelOptions; n->def = (Node *)(yyvsp[(2) - (2)].list); (yyval.node) = (Node *)n; ;} break; case 351: #line 2637 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ResetRelOptions; n->def = (Node *)(yyvsp[(2) - (2)].list); (yyval.node) = (Node *)n; ;} break; case 352: #line 2645 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ReplicaIdentity; n->def = (yyvsp[(3) - (3)].node); (yyval.node) = (Node *)n; ;} break; case 353: #line 2653 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_EnableRowSecurity; (yyval.node) = (Node *)n; ;} break; case 354: #line 2660 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DisableRowSecurity; (yyval.node) = (Node *)n; ;} break; case 355: #line 2667 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_ForceRowSecurity; (yyval.node) = (Node *)n; ;} break; case 356: #line 2674 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_NoForceRowSecurity; (yyval.node) = (Node *)n; ;} break; case 357: #line 2680 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_GenericOptions; n->def = (Node *)(yyvsp[(1) - (1)].list); (yyval.node) = (Node *) n; ;} break; case 358: #line 2689 "gram.y" { (yyval.node) = (yyvsp[(3) - (3)].node); ;} break; case 359: #line 2690 "gram.y" { (yyval.node) = NULL; ;} break; case 360: #line 2694 "gram.y" { (yyval.dbehavior) = DROP_CASCADE; ;} break; case 361: #line 2695 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; ;} break; case 362: #line 2696 "gram.y" { (yyval.dbehavior) = DROP_RESTRICT; /* default */ ;} break; case 363: #line 2701 "gram.y" { CollateClause *n = makeNode(CollateClause); n->arg = NULL; n->collname = (yyvsp[(2) - (2)].list); n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; ;} break; case 364: #line 2708 "gram.y" { (yyval.node) = NULL; ;} break; case 365: #line 2712 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 366: #line 2713 "gram.y" { (yyval.node) = NULL; ;} break; case 367: #line 2718 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_NOTHING; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 368: #line 2725 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_FULL; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 369: #line 2732 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_DEFAULT; n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 370: #line 2739 "gram.y" { ReplicaIdentityStmt *n = makeNode(ReplicaIdentityStmt); n->identity_type = REPLICA_IDENTITY_INDEX; n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 371: #line 2748 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 372: #line 2751 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 373: #line 2752 "gram.y" { (yyval.list) = NIL; ;} break; case 374: #line 2756 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 375: #line 2757 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 376: #line 2763 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 377: #line 2767 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; case 378: #line 2771 "gram.y" { (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (5)].str), (yyvsp[(3) - (5)].str), (Node *) (yyvsp[(5) - (5)].node), DEFELEM_UNSPEC, (yylsp[(1) - (5)])); ;} break; case 379: #line 2776 "gram.y" { (yyval.defelt) = makeDefElemExtended((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str), NULL, DEFELEM_UNSPEC, (yylsp[(1) - (3)])); ;} break; case 380: #line 2783 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 381: #line 2785 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 382: #line 2790 "gram.y" { (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); ;} break; case 383: #line 2794 "gram.y" { (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; case 384: #line 2798 "gram.y" { if (strcmp((yyvsp[(2) - (2)].defelt)->defname, "as") == 0 || strcmp((yyvsp[(2) - (2)].defelt)->defname, "restart") == 0 || strcmp((yyvsp[(2) - (2)].defelt)->defname, "owned_by") == 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("sequence option \"%s\" not supported here", (yyvsp[(2) - (2)].defelt)->defname), parser_errposition((yylsp[(2) - (2)])))); (yyval.defelt) = (yyvsp[(2) - (2)].defelt); ;} break; case 385: #line 2809 "gram.y" { (yyval.defelt) = makeDefElem("generated", (Node *) makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); ;} break; case 386: #line 2817 "gram.y" { ListCell *lc; PartitionBoundSpec *n = makeNode(PartitionBoundSpec); n->strategy = PARTITION_STRATEGY_HASH; n->modulus = n->remainder = -1; foreach (lc, (yyvsp[(5) - (6)].list)) { DefElem *opt = lfirst_node(DefElem, lc); if (strcmp(opt->defname, "modulus") == 0) { if (n->modulus != -1) ereport(ERROR, (errcode(ERRCODE_DUPLICATE_OBJECT), errmsg("modulus for hash partition provided more than once"), parser_errposition(opt->location))); n->modulus = defGetInt32(opt); } else if (strcmp(opt->defname, "remainder") == 0) { if (n->remainder != -1) ereport(ERROR, (errcode(ERRCODE_DUPLICATE_OBJECT), errmsg("remainder for hash partition provided more than once"), parser_errposition(opt->location))); n->remainder = defGetInt32(opt); } else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("unrecognized hash partition bound specification \"%s\"", opt->defname), parser_errposition(opt->location))); } if (n->modulus == -1) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("modulus for hash partition must be specified"))); if (n->remainder == -1) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("remainder for hash partition must be specified"))); n->location = (yylsp[(3) - (6)]); (yyval.partboundspec) = n; ;} break; case 387: #line 2870 "gram.y" { PartitionBoundSpec *n = makeNode(PartitionBoundSpec); n->strategy = PARTITION_STRATEGY_LIST; n->is_default = false; n->listdatums = (yyvsp[(5) - (6)].list); n->location = (yylsp[(3) - (6)]); (yyval.partboundspec) = n; ;} break; case 388: #line 2883 "gram.y" { PartitionBoundSpec *n = makeNode(PartitionBoundSpec); n->strategy = PARTITION_STRATEGY_RANGE; n->is_default = false; n->lowerdatums = (yyvsp[(5) - (10)].list); n->upperdatums = (yyvsp[(9) - (10)].list); n->location = (yylsp[(3) - (10)]); (yyval.partboundspec) = n; ;} break; case 389: #line 2897 "gram.y" { PartitionBoundSpec *n = makeNode(PartitionBoundSpec); n->is_default = true; n->location = (yylsp[(1) - (1)]); (yyval.partboundspec) = n; ;} break; case 390: #line 2909 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (Node *)makeInteger((yyvsp[(2) - (2)].ival)), (yylsp[(1) - (2)])); ;} break; case 391: #line 2916 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 392: #line 2920 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 393: #line 2934 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); /* can't use qualified_name, sigh */ n->relation = makeRangeVarFromAnyName((yyvsp[(3) - (4)].list), (yylsp[(3) - (4)]), yyscanner); n->cmds = (yyvsp[(4) - (4)].list); n->relkind = OBJECT_TYPE; (yyval.node) = (Node *)n; ;} break; case 394: #line 2946 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 395: #line 2947 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 396: #line 2953 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_AddColumn; n->def = (yyvsp[(3) - (4)].node); n->behavior = (yyvsp[(4) - (4)].dbehavior); (yyval.node) = (Node *)n; ;} break; case 397: #line 2962 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; n->name = (yyvsp[(5) - (6)].str); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 398: #line 2972 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); n->subtype = AT_DropColumn; n->name = (yyvsp[(3) - (4)].str); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 399: #line 2982 "gram.y" { AlterTableCmd *n = makeNode(AlterTableCmd); ColumnDef *def = makeNode(ColumnDef); n->subtype = AT_AlterColumnType; n->name = (yyvsp[(3) - (8)].str); n->def = (Node *) def; n->behavior = (yyvsp[(8) - (8)].dbehavior); /* We only use these fields of the ColumnDef node */ def->typeName = (yyvsp[(6) - (8)].typnam); def->collClause = (CollateClause *) (yyvsp[(7) - (8)].node); def->raw_default = NULL; def->location = (yylsp[(3) - (8)]); (yyval.node) = (Node *)n; ;} break; case 400: #line 3008 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; ;} break; case 401: #line 3014 "gram.y" { ClosePortalStmt *n = makeNode(ClosePortalStmt); n->portalname = NULL; (yyval.node) = (Node *)n; ;} break; case 402: #line 3049 "gram.y" { CopyStmt *n = makeNode(CopyStmt); n->relation = (yyvsp[(3) - (11)].range); n->query = NULL; n->attlist = (yyvsp[(4) - (11)].list); n->is_from = (yyvsp[(5) - (11)].boolean); n->is_program = (yyvsp[(6) - (11)].boolean); n->filename = (yyvsp[(7) - (11)].str); n->whereClause = (yyvsp[(11) - (11)].node); if (n->is_program && n->filename == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("STDIN/STDOUT not allowed with PROGRAM"), parser_errposition((yylsp[(8) - (11)])))); if (!n->is_from && n->whereClause != NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("WHERE clause not allowed with COPY TO"), parser_errposition((yylsp[(11) - (11)])))); n->options = NIL; /* Concatenate user-supplied flags */ if ((yyvsp[(2) - (11)].defelt)) n->options = lappend(n->options, (yyvsp[(2) - (11)].defelt)); if ((yyvsp[(8) - (11)].defelt)) n->options = lappend(n->options, (yyvsp[(8) - (11)].defelt)); if ((yyvsp[(10) - (11)].list)) n->options = list_concat(n->options, (yyvsp[(10) - (11)].list)); (yyval.node) = (Node *)n; ;} break; case 403: #line 3082 "gram.y" { CopyStmt *n = makeNode(CopyStmt); n->relation = NULL; n->query = (yyvsp[(3) - (9)].node); n->attlist = NIL; n->is_from = false; n->is_program = (yyvsp[(6) - (9)].boolean); n->filename = (yyvsp[(7) - (9)].str); n->options = (yyvsp[(9) - (9)].list); if (n->is_program && n->filename == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("STDIN/STDOUT not allowed with PROGRAM"), parser_errposition((yylsp[(5) - (9)])))); (yyval.node) = (Node *)n; ;} break; case 404: #line 3103 "gram.y" { (yyval.boolean) = true; ;} break; case 405: #line 3104 "gram.y" { (yyval.boolean) = false; ;} break; case 406: #line 3108 "gram.y" { (yyval.boolean) = true; ;} break; case 407: #line 3109 "gram.y" { (yyval.boolean) = false; ;} break; case 408: #line 3118 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 409: #line 3119 "gram.y" { (yyval.str) = NULL; ;} break; case 410: #line 3120 "gram.y" { (yyval.str) = NULL; ;} break; case 411: #line 3123 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 412: #line 3124 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 413: #line 3129 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 414: #line 3130 "gram.y" { (yyval.list) = NIL; ;} break; case 415: #line 3135 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary"), (yylsp[(1) - (1)])); ;} break; case 416: #line 3139 "gram.y" { (yyval.defelt) = makeDefElem("freeze", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; case 417: #line 3143 "gram.y" { (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 418: #line 3147 "gram.y" { (yyval.defelt) = makeDefElem("null", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 419: #line 3151 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *)makeString("csv"), (yylsp[(1) - (1)])); ;} break; case 420: #line 3155 "gram.y" { (yyval.defelt) = makeDefElem("header", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; case 421: #line 3159 "gram.y" { (yyval.defelt) = makeDefElem("quote", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 422: #line 3163 "gram.y" { (yyval.defelt) = makeDefElem("escape", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 423: #line 3167 "gram.y" { (yyval.defelt) = makeDefElem("force_quote", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 424: #line 3171 "gram.y" { (yyval.defelt) = makeDefElem("force_quote", (Node *)makeNode(A_Star), (yylsp[(1) - (3)])); ;} break; case 425: #line 3175 "gram.y" { (yyval.defelt) = makeDefElem("force_not_null", (Node *)(yyvsp[(4) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 426: #line 3179 "gram.y" { (yyval.defelt) = makeDefElem("force_null", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 427: #line 3183 "gram.y" { (yyval.defelt) = makeDefElem("encoding", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 428: #line 3192 "gram.y" { (yyval.defelt) = makeDefElem("format", (Node *)makeString("binary"), (yylsp[(1) - (1)])); ;} break; case 429: #line 3195 "gram.y" { (yyval.defelt) = NULL; ;} break; case 430: #line 3200 "gram.y" { (yyval.defelt) = makeDefElem("delimiter", (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(2) - (3)])); ;} break; case 431: #line 3203 "gram.y" { (yyval.defelt) = NULL; ;} break; case 432: #line 3207 "gram.y" {;} break; case 433: #line 3208 "gram.y" {;} break; case 434: #line 3214 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 435: #line 3218 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 436: #line 3225 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 437: #line 3231 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 438: #line 3232 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].value); ;} break; case 439: #line 3233 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); ;} break; case 440: #line 3234 "gram.y" { (yyval.node) = (Node *) (yyvsp[(2) - (3)].list); ;} break; case 441: #line 3235 "gram.y" { (yyval.node) = NULL; ;} break; case 442: #line 3240 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 443: #line 3244 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 444: #line 3251 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 445: #line 3265 "gram.y" { CreateStmt *n = makeNode(CreateStmt); (yyvsp[(4) - (13)].range)->relpersistence = (yyvsp[(2) - (13)].ival); n->relation = (yyvsp[(4) - (13)].range); n->tableElts = (yyvsp[(6) - (13)].list); n->inhRelations = (yyvsp[(8) - (13)].list); n->partspec = (yyvsp[(9) - (13)].partspec); n->ofTypename = NULL; n->constraints = NIL; n->accessMethod = (yyvsp[(10) - (13)].str); n->options = (yyvsp[(11) - (13)].list); n->oncommit = (yyvsp[(12) - (13)].oncommit); n->tablespacename = (yyvsp[(13) - (13)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; case 446: #line 3284 "gram.y" { CreateStmt *n = makeNode(CreateStmt); (yyvsp[(7) - (16)].range)->relpersistence = (yyvsp[(2) - (16)].ival); n->relation = (yyvsp[(7) - (16)].range); n->tableElts = (yyvsp[(9) - (16)].list); n->inhRelations = (yyvsp[(11) - (16)].list); n->partspec = (yyvsp[(12) - (16)].partspec); n->ofTypename = NULL; n->constraints = NIL; n->accessMethod = (yyvsp[(13) - (16)].str); n->options = (yyvsp[(14) - (16)].list); n->oncommit = (yyvsp[(15) - (16)].oncommit); n->tablespacename = (yyvsp[(16) - (16)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; case 447: #line 3303 "gram.y" { CreateStmt *n = makeNode(CreateStmt); (yyvsp[(4) - (12)].range)->relpersistence = (yyvsp[(2) - (12)].ival); n->relation = (yyvsp[(4) - (12)].range); n->tableElts = (yyvsp[(7) - (12)].list); n->inhRelations = NIL; n->partspec = (yyvsp[(8) - (12)].partspec); n->ofTypename = makeTypeNameFromNameList((yyvsp[(6) - (12)].list)); n->ofTypename->location = (yylsp[(6) - (12)]); n->constraints = NIL; n->accessMethod = (yyvsp[(9) - (12)].str); n->options = (yyvsp[(10) - (12)].list); n->oncommit = (yyvsp[(11) - (12)].oncommit); n->tablespacename = (yyvsp[(12) - (12)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; case 448: #line 3323 "gram.y" { CreateStmt *n = makeNode(CreateStmt); (yyvsp[(7) - (15)].range)->relpersistence = (yyvsp[(2) - (15)].ival); n->relation = (yyvsp[(7) - (15)].range); n->tableElts = (yyvsp[(10) - (15)].list); n->inhRelations = NIL; n->partspec = (yyvsp[(11) - (15)].partspec); n->ofTypename = makeTypeNameFromNameList((yyvsp[(9) - (15)].list)); n->ofTypename->location = (yylsp[(9) - (15)]); n->constraints = NIL; n->accessMethod = (yyvsp[(12) - (15)].str); n->options = (yyvsp[(13) - (15)].list); n->oncommit = (yyvsp[(14) - (15)].oncommit); n->tablespacename = (yyvsp[(15) - (15)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; case 449: #line 3343 "gram.y" { CreateStmt *n = makeNode(CreateStmt); (yyvsp[(4) - (14)].range)->relpersistence = (yyvsp[(2) - (14)].ival); n->relation = (yyvsp[(4) - (14)].range); n->tableElts = (yyvsp[(8) - (14)].list); n->inhRelations = list_make1((yyvsp[(7) - (14)].range)); n->partbound = (yyvsp[(9) - (14)].partboundspec); n->partspec = (yyvsp[(10) - (14)].partspec); n->ofTypename = NULL; n->constraints = NIL; n->accessMethod = (yyvsp[(11) - (14)].str); n->options = (yyvsp[(12) - (14)].list); n->oncommit = (yyvsp[(13) - (14)].oncommit); n->tablespacename = (yyvsp[(14) - (14)].str); n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; case 450: #line 3363 "gram.y" { CreateStmt *n = makeNode(CreateStmt); (yyvsp[(7) - (17)].range)->relpersistence = (yyvsp[(2) - (17)].ival); n->relation = (yyvsp[(7) - (17)].range); n->tableElts = (yyvsp[(11) - (17)].list); n->inhRelations = list_make1((yyvsp[(10) - (17)].range)); n->partbound = (yyvsp[(12) - (17)].partboundspec); n->partspec = (yyvsp[(13) - (17)].partspec); n->ofTypename = NULL; n->constraints = NIL; n->accessMethod = (yyvsp[(14) - (17)].str); n->options = (yyvsp[(15) - (17)].list); n->oncommit = (yyvsp[(16) - (17)].oncommit); n->tablespacename = (yyvsp[(17) - (17)].str); n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; case 451: #line 3393 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 452: #line 3394 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 453: #line 3395 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 454: #line 3396 "gram.y" { (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 455: #line 3398 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 456: #line 3405 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = RELPERSISTENCE_TEMP; ;} break; case 457: #line 3411 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; ;} break; case 458: #line 3412 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} break; case 459: #line 3416 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 460: #line 3417 "gram.y" { (yyval.list) = NIL; ;} break; case 461: #line 3421 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 462: #line 3422 "gram.y" { (yyval.list) = NIL; ;} break; case 463: #line 3427 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 464: #line 3431 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 465: #line 3438 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 466: #line 3442 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 467: #line 3448 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 468: #line 3449 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 469: #line 3450 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 470: #line 3454 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 471: #line 3455 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 472: #line 3459 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[(1) - (4)].str); n->typeName = (yyvsp[(2) - (4)].typnam); n->inhcount = 0; n->is_local = true; n->is_not_null = false; n->is_from_type = false; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; n->collOid = InvalidOid; n->fdwoptions = (yyvsp[(3) - (4)].list); SplitColQualList((yyvsp[(4) - (4)].list), &n->constraints, &n->collClause, yyscanner); n->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)n; ;} break; case 473: #line 3480 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[(1) - (2)].str); n->typeName = NULL; n->inhcount = 0; n->is_local = true; n->is_not_null = false; n->is_from_type = false; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; n->collOid = InvalidOid; SplitColQualList((yyvsp[(2) - (2)].list), &n->constraints, &n->collClause, yyscanner); n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; ;} break; case 474: #line 3498 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[(1) - (4)].str); n->typeName = NULL; n->inhcount = 0; n->is_local = true; n->is_not_null = false; n->is_from_type = false; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; n->collOid = InvalidOid; SplitColQualList((yyvsp[(4) - (4)].list), &n->constraints, &n->collClause, yyscanner); n->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)n; ;} break; case 475: #line 3518 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 476: #line 3519 "gram.y" { (yyval.list) = NIL; ;} break; case 477: #line 3524 "gram.y" { Constraint *n = castNode(Constraint, (yyvsp[(3) - (3)].node)); n->conname = (yyvsp[(2) - (3)].str); n->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) n; ;} break; case 478: #line 3530 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 479: #line 3531 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 480: #line 3533 "gram.y" { /* * Note: the CollateClause is momentarily included in * the list built by ColQualList, but we split it out * again in SplitColQualList. */ CollateClause *n = makeNode(CollateClause); n->arg = NULL; n->collname = (yyvsp[(2) - (2)].list); n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) n; ;} break; case 481: #line 3564 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NOTNULL; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; ;} break; case 482: #line 3571 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NULL; n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; ;} break; case 483: #line 3578 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; n->location = (yylsp[(1) - (3)]); n->keys = NULL; n->options = (yyvsp[(2) - (3)].list); n->indexname = NULL; n->indexspace = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 484: #line 3589 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; n->location = (yylsp[(1) - (4)]); n->keys = NULL; n->options = (yyvsp[(3) - (4)].list); n->indexname = NULL; n->indexspace = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; ;} break; case 485: #line 3600 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; n->location = (yylsp[(1) - (5)]); n->is_no_inherit = (yyvsp[(5) - (5)].boolean); n->raw_expr = (yyvsp[(3) - (5)].node); n->cooked_expr = NULL; n->skip_validation = false; n->initially_valid = true; (yyval.node) = (Node *)n; ;} break; case 486: #line 3612 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_DEFAULT; n->location = (yylsp[(1) - (2)]); n->raw_expr = (yyvsp[(2) - (2)].node); n->cooked_expr = NULL; (yyval.node) = (Node *)n; ;} break; case 487: #line 3621 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_IDENTITY; n->generated_when = (yyvsp[(2) - (5)].ival); n->options = (yyvsp[(5) - (5)].list); n->location = (yylsp[(1) - (5)]); (yyval.node) = (Node *)n; ;} break; case 488: #line 3630 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_GENERATED; n->generated_when = (yyvsp[(2) - (7)].ival); n->raw_expr = (yyvsp[(5) - (7)].node); n->cooked_expr = NULL; n->location = (yylsp[(1) - (7)]); /* * Can't do this in the grammar because of shift/reduce * conflicts. (IDENTITY allows both ALWAYS and BY * DEFAULT, but generated columns only allow ALWAYS.) We * can also give a more useful error message and location. */ if ((yyvsp[(2) - (7)].ival) != ATTRIBUTE_IDENTITY_ALWAYS) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("for a generated column, GENERATED ALWAYS must be specified"), parser_errposition((yylsp[(2) - (7)])))); (yyval.node) = (Node *)n; ;} break; case 489: #line 3653 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_FOREIGN; n->location = (yylsp[(1) - (5)]); n->pktable = (yyvsp[(2) - (5)].range); n->fk_attrs = NIL; n->pk_attrs = (yyvsp[(3) - (5)].list); n->fk_matchtype = (yyvsp[(4) - (5)].ival); n->fk_upd_action = (char) ((yyvsp[(5) - (5)].ival) >> 8); n->fk_del_action = (char) ((yyvsp[(5) - (5)].ival) & 0xFF); n->skip_validation = false; n->initially_valid = true; (yyval.node) = (Node *)n; ;} break; case 490: #line 3670 "gram.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_ALWAYS; ;} break; case 491: #line 3671 "gram.y" { (yyval.ival) = ATTRIBUTE_IDENTITY_BY_DEFAULT; ;} break; case 492: #line 3691 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRABLE; n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; ;} break; case 493: #line 3698 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_NOT_DEFERRABLE; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; ;} break; case 494: #line 3705 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_DEFERRED; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; ;} break; case 495: #line 3712 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_ATTR_IMMEDIATE; n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; ;} break; case 496: #line 3723 "gram.y" { TableLikeClause *n = makeNode(TableLikeClause); n->relation = (yyvsp[(2) - (3)].range); n->options = (yyvsp[(3) - (3)].ival); n->relationOid = InvalidOid; (yyval.node) = (Node *)n; ;} break; case 497: #line 3733 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} break; case 498: #line 3734 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) & ~(yyvsp[(3) - (3)].ival); ;} break; case 499: #line 3735 "gram.y" { (yyval.ival) = 0; ;} break; case 500: #line 3739 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_COMMENTS; ;} break; case 501: #line 3740 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_CONSTRAINTS; ;} break; case 502: #line 3741 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_DEFAULTS; ;} break; case 503: #line 3742 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_IDENTITY; ;} break; case 504: #line 3743 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_GENERATED; ;} break; case 505: #line 3744 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_INDEXES; ;} break; case 506: #line 3745 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_STATISTICS; ;} break; case 507: #line 3746 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_STORAGE; ;} break; case 508: #line 3747 "gram.y" { (yyval.ival) = CREATE_TABLE_LIKE_ALL; ;} break; case 509: #line 3757 "gram.y" { Constraint *n = castNode(Constraint, (yyvsp[(3) - (3)].node)); n->conname = (yyvsp[(2) - (3)].str); n->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) n; ;} break; case 510: #line 3763 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 511: #line 3768 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; n->location = (yylsp[(1) - (5)]); n->raw_expr = (yyvsp[(3) - (5)].node); n->cooked_expr = NULL; processCASbits((yyvsp[(5) - (5)].ival), (yylsp[(5) - (5)]), "CHECK", NULL, NULL, &n->skip_validation, &n->is_no_inherit, yyscanner); n->initially_valid = !n->skip_validation; (yyval.node) = (Node *)n; ;} break; case 512: #line 3782 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; n->location = (yylsp[(1) - (8)]); n->keys = (yyvsp[(3) - (8)].list); n->including = (yyvsp[(5) - (8)].list); n->options = (yyvsp[(6) - (8)].list); n->indexname = NULL; n->indexspace = (yyvsp[(7) - (8)].str); processCASbits((yyvsp[(8) - (8)].ival), (yylsp[(8) - (8)]), "UNIQUE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; ;} break; case 513: #line 3797 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; n->location = (yylsp[(1) - (3)]); n->keys = NIL; n->including = NIL; n->options = NIL; n->indexname = (yyvsp[(2) - (3)].str); n->indexspace = NULL; processCASbits((yyvsp[(3) - (3)].ival), (yylsp[(3) - (3)]), "UNIQUE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; ;} break; case 514: #line 3813 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; n->location = (yylsp[(1) - (9)]); n->keys = (yyvsp[(4) - (9)].list); n->including = (yyvsp[(6) - (9)].list); n->options = (yyvsp[(7) - (9)].list); n->indexname = NULL; n->indexspace = (yyvsp[(8) - (9)].str); processCASbits((yyvsp[(9) - (9)].ival), (yylsp[(9) - (9)]), "PRIMARY KEY", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; ;} break; case 515: #line 3828 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; n->location = (yylsp[(1) - (4)]); n->keys = NIL; n->including = NIL; n->options = NIL; n->indexname = (yyvsp[(3) - (4)].str); n->indexspace = NULL; processCASbits((yyvsp[(4) - (4)].ival), (yylsp[(4) - (4)]), "PRIMARY KEY", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; ;} break; case 516: #line 3845 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_EXCLUSION; n->location = (yylsp[(1) - (10)]); n->access_method = (yyvsp[(2) - (10)].str); n->exclusions = (yyvsp[(4) - (10)].list); n->including = (yyvsp[(6) - (10)].list); n->options = (yyvsp[(7) - (10)].list); n->indexname = NULL; n->indexspace = (yyvsp[(8) - (10)].str); n->where_clause = (yyvsp[(9) - (10)].node); processCASbits((yyvsp[(10) - (10)].ival), (yylsp[(10) - (10)]), "EXCLUDE", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); (yyval.node) = (Node *)n; ;} break; case 517: #line 3863 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_FOREIGN; n->location = (yylsp[(1) - (11)]); n->pktable = (yyvsp[(7) - (11)].range); n->fk_attrs = (yyvsp[(4) - (11)].list); n->pk_attrs = (yyvsp[(8) - (11)].list); n->fk_matchtype = (yyvsp[(9) - (11)].ival); n->fk_upd_action = (char) ((yyvsp[(10) - (11)].ival) >> 8); n->fk_del_action = (char) ((yyvsp[(10) - (11)].ival) & 0xFF); processCASbits((yyvsp[(11) - (11)].ival), (yylsp[(11) - (11)]), "FOREIGN KEY", &n->deferrable, &n->initdeferred, &n->skip_validation, NULL, yyscanner); n->initially_valid = !n->skip_validation; (yyval.node) = (Node *)n; ;} break; case 518: #line 3882 "gram.y" { (yyval.boolean) = true; ;} break; case 519: #line 3883 "gram.y" { (yyval.boolean) = false; ;} break; case 520: #line 3887 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 521: #line 3888 "gram.y" { (yyval.list) = NIL; ;} break; case 522: #line 3892 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 523: #line 3893 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 524: #line 3897 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 525: #line 3902 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 526: #line 3903 "gram.y" { (yyval.list) = NIL; ;} break; case 527: #line 3907 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_FULL; ;} break; case 528: #line 3911 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("MATCH PARTIAL not yet implemented"), parser_errposition((yylsp[(1) - (2)])))); (yyval.ival) = FKCONSTR_MATCH_PARTIAL; ;} break; case 529: #line 3919 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; ;} break; case 530: #line 3923 "gram.y" { (yyval.ival) = FKCONSTR_MATCH_SIMPLE; ;} break; case 531: #line 3929 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; case 532: #line 3931 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; case 533: #line 3935 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (3)].ielem), (yyvsp[(3) - (3)].list)); ;} break; case 534: #line 3940 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (6)].ielem), (yyvsp[(5) - (6)].list)); ;} break; case 535: #line 3946 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 536: #line 3947 "gram.y" { (yyval.node) = NULL; ;} break; case 537: #line 3958 "gram.y" { (yyval.ival) = ((yyvsp[(1) - (1)].ival) << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); ;} break; case 538: #line 3960 "gram.y" { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | ((yyvsp[(1) - (1)].ival) & 0xFF); ;} break; case 539: #line 3962 "gram.y" { (yyval.ival) = ((yyvsp[(1) - (2)].ival) << 8) | ((yyvsp[(2) - (2)].ival) & 0xFF); ;} break; case 540: #line 3964 "gram.y" { (yyval.ival) = ((yyvsp[(2) - (2)].ival) << 8) | ((yyvsp[(1) - (2)].ival) & 0xFF); ;} break; case 541: #line 3966 "gram.y" { (yyval.ival) = (FKCONSTR_ACTION_NOACTION << 8) | (FKCONSTR_ACTION_NOACTION & 0xFF); ;} break; case 542: #line 3969 "gram.y" { (yyval.ival) = (yyvsp[(3) - (3)].ival); ;} break; case 543: #line 3972 "gram.y" { (yyval.ival) = (yyvsp[(3) - (3)].ival); ;} break; case 544: #line 3976 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_NOACTION; ;} break; case 545: #line 3977 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_RESTRICT; ;} break; case 546: #line 3978 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_CASCADE; ;} break; case 547: #line 3979 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_SETNULL; ;} break; case 548: #line 3980 "gram.y" { (yyval.ival) = FKCONSTR_ACTION_SETDEFAULT; ;} break; case 549: #line 3983 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 550: #line 3984 "gram.y" { (yyval.list) = NIL; ;} break; case 551: #line 3988 "gram.y" { (yyval.partspec) = (yyvsp[(1) - (1)].partspec); ;} break; case 552: #line 3989 "gram.y" { (yyval.partspec) = NULL; ;} break; case 553: #line 3993 "gram.y" { PartitionSpec *n = makeNode(PartitionSpec); n->strategy = (yyvsp[(3) - (6)].str); n->partParams = (yyvsp[(5) - (6)].list); n->location = (yylsp[(1) - (6)]); (yyval.partspec) = n; ;} break; case 554: #line 4004 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].partelem)); ;} break; case 555: #line 4005 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].partelem)); ;} break; case 556: #line 4009 "gram.y" { PartitionElem *n = makeNode(PartitionElem); n->name = (yyvsp[(1) - (3)].str); n->expr = NULL; n->collation = (yyvsp[(2) - (3)].list); n->opclass = (yyvsp[(3) - (3)].list); n->location = (yylsp[(1) - (3)]); (yyval.partelem) = n; ;} break; case 557: #line 4020 "gram.y" { PartitionElem *n = makeNode(PartitionElem); n->name = NULL; n->expr = (yyvsp[(1) - (3)].node); n->collation = (yyvsp[(2) - (3)].list); n->opclass = (yyvsp[(3) - (3)].list); n->location = (yylsp[(1) - (3)]); (yyval.partelem) = n; ;} break; case 558: #line 4031 "gram.y" { PartitionElem *n = makeNode(PartitionElem); n->name = NULL; n->expr = (yyvsp[(2) - (5)].node); n->collation = (yyvsp[(4) - (5)].list); n->opclass = (yyvsp[(5) - (5)].list); n->location = (yylsp[(1) - (5)]); (yyval.partelem) = n; ;} break; case 559: #line 4044 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 560: #line 4045 "gram.y" { (yyval.str) = NULL; ;} break; case 561: #line 4050 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 562: #line 4051 "gram.y" { (yyval.list) = NIL; ;} break; case 563: #line 4052 "gram.y" { (yyval.list) = NIL; ;} break; case 564: #line 4055 "gram.y" { (yyval.oncommit) = ONCOMMIT_DROP; ;} break; case 565: #line 4056 "gram.y" { (yyval.oncommit) = ONCOMMIT_DELETE_ROWS; ;} break; case 566: #line 4057 "gram.y" { (yyval.oncommit) = ONCOMMIT_PRESERVE_ROWS; ;} break; case 567: #line 4058 "gram.y" { (yyval.oncommit) = ONCOMMIT_NOOP; ;} break; case 568: #line 4061 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 569: #line 4062 "gram.y" { (yyval.str) = NULL; ;} break; case 570: #line 4065 "gram.y" { (yyval.str) = (yyvsp[(4) - (4)].str); ;} break; case 571: #line 4066 "gram.y" { (yyval.str) = NULL; ;} break; case 572: #line 4069 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].str); ;} break; case 573: #line 4089 "gram.y" { CreateStatsStmt *n = makeNode(CreateStatsStmt); n->defnames = (yyvsp[(3) - (8)].list); n->stat_types = (yyvsp[(4) - (8)].list); n->exprs = (yyvsp[(6) - (8)].list); n->relations = (yyvsp[(8) - (8)].list); n->stxcomment = NULL; n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; case 574: #line 4101 "gram.y" { CreateStatsStmt *n = makeNode(CreateStatsStmt); n->defnames = (yyvsp[(6) - (11)].list); n->stat_types = (yyvsp[(7) - (11)].list); n->exprs = (yyvsp[(9) - (11)].list); n->relations = (yyvsp[(11) - (11)].list); n->stxcomment = NULL; n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; case 575: #line 4124 "gram.y" { AlterStatsStmt *n = makeNode(AlterStatsStmt); n->defnames = (yyvsp[(3) - (6)].list); n->missing_ok = false; n->stxstattarget = (yyvsp[(6) - (6)].ival); (yyval.node) = (Node *)n; ;} break; case 576: #line 4132 "gram.y" { AlterStatsStmt *n = makeNode(AlterStatsStmt); n->defnames = (yyvsp[(5) - (8)].list); n->missing_ok = true; n->stxstattarget = (yyvsp[(8) - (8)].ival); (yyval.node) = (Node *)n; ;} break; case 577: #line 4153 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(6) - (7)].node); ctas->into = (yyvsp[(4) - (7)].into); ctas->relkind = OBJECT_TABLE; ctas->is_select_into = false; ctas->if_not_exists = false; /* cram additional flags into the IntoClause */ (yyvsp[(4) - (7)].into)->rel->relpersistence = (yyvsp[(2) - (7)].ival); (yyvsp[(4) - (7)].into)->skipData = !((yyvsp[(7) - (7)].boolean)); (yyval.node) = (Node *) ctas; ;} break; case 578: #line 4166 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(9) - (10)].node); ctas->into = (yyvsp[(7) - (10)].into); ctas->relkind = OBJECT_TABLE; ctas->is_select_into = false; ctas->if_not_exists = true; /* cram additional flags into the IntoClause */ (yyvsp[(7) - (10)].into)->rel->relpersistence = (yyvsp[(2) - (10)].ival); (yyvsp[(7) - (10)].into)->skipData = !((yyvsp[(10) - (10)].boolean)); (yyval.node) = (Node *) ctas; ;} break; case 579: #line 4183 "gram.y" { (yyval.into) = makeNode(IntoClause); (yyval.into)->rel = (yyvsp[(1) - (6)].range); (yyval.into)->colNames = (yyvsp[(2) - (6)].list); (yyval.into)->accessMethod = (yyvsp[(3) - (6)].str); (yyval.into)->options = (yyvsp[(4) - (6)].list); (yyval.into)->onCommit = (yyvsp[(5) - (6)].oncommit); (yyval.into)->tableSpaceName = (yyvsp[(6) - (6)].str); (yyval.into)->viewQuery = NULL; (yyval.into)->skipData = false; /* might get changed later */ ;} break; case 580: #line 4197 "gram.y" { (yyval.boolean) = true; ;} break; case 581: #line 4198 "gram.y" { (yyval.boolean) = false; ;} break; case 582: #line 4199 "gram.y" { (yyval.boolean) = true; ;} break; case 583: #line 4212 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(7) - (8)].node); ctas->into = (yyvsp[(5) - (8)].into); ctas->relkind = OBJECT_MATVIEW; ctas->is_select_into = false; ctas->if_not_exists = false; /* cram additional flags into the IntoClause */ (yyvsp[(5) - (8)].into)->rel->relpersistence = (yyvsp[(2) - (8)].ival); (yyvsp[(5) - (8)].into)->skipData = !((yyvsp[(8) - (8)].boolean)); (yyval.node) = (Node *) ctas; ;} break; case 584: #line 4225 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ctas->query = (yyvsp[(10) - (11)].node); ctas->into = (yyvsp[(8) - (11)].into); ctas->relkind = OBJECT_MATVIEW; ctas->is_select_into = false; ctas->if_not_exists = true; /* cram additional flags into the IntoClause */ (yyvsp[(8) - (11)].into)->rel->relpersistence = (yyvsp[(2) - (11)].ival); (yyvsp[(8) - (11)].into)->skipData = !((yyvsp[(11) - (11)].boolean)); (yyval.node) = (Node *) ctas; ;} break; case 585: #line 4241 "gram.y" { (yyval.into) = makeNode(IntoClause); (yyval.into)->rel = (yyvsp[(1) - (5)].range); (yyval.into)->colNames = (yyvsp[(2) - (5)].list); (yyval.into)->accessMethod = (yyvsp[(3) - (5)].str); (yyval.into)->options = (yyvsp[(4) - (5)].list); (yyval.into)->onCommit = ONCOMMIT_NOOP; (yyval.into)->tableSpaceName = (yyvsp[(5) - (5)].str); (yyval.into)->viewQuery = NULL; /* filled at analysis time */ (yyval.into)->skipData = false; /* might get changed later */ ;} break; case 586: #line 4254 "gram.y" { (yyval.ival) = RELPERSISTENCE_UNLOGGED; ;} break; case 587: #line 4255 "gram.y" { (yyval.ival) = RELPERSISTENCE_PERMANENT; ;} break; case 588: #line 4268 "gram.y" { RefreshMatViewStmt *n = makeNode(RefreshMatViewStmt); n->concurrent = (yyvsp[(4) - (6)].boolean); n->relation = (yyvsp[(5) - (6)].range); n->skipData = !((yyvsp[(6) - (6)].boolean)); (yyval.node) = (Node *) n; ;} break; case 589: #line 4288 "gram.y" { CreateSeqStmt *n = makeNode(CreateSeqStmt); (yyvsp[(4) - (5)].range)->relpersistence = (yyvsp[(2) - (5)].ival); n->sequence = (yyvsp[(4) - (5)].range); n->options = (yyvsp[(5) - (5)].list); n->ownerId = InvalidOid; n->if_not_exists = false; (yyval.node) = (Node *)n; ;} break; case 590: #line 4298 "gram.y" { CreateSeqStmt *n = makeNode(CreateSeqStmt); (yyvsp[(7) - (8)].range)->relpersistence = (yyvsp[(2) - (8)].ival); n->sequence = (yyvsp[(7) - (8)].range); n->options = (yyvsp[(8) - (8)].list); n->ownerId = InvalidOid; n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; case 591: #line 4311 "gram.y" { AlterSeqStmt *n = makeNode(AlterSeqStmt); n->sequence = (yyvsp[(3) - (4)].range); n->options = (yyvsp[(4) - (4)].list); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 592: #line 4319 "gram.y" { AlterSeqStmt *n = makeNode(AlterSeqStmt); n->sequence = (yyvsp[(5) - (6)].range); n->options = (yyvsp[(6) - (6)].list); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 593: #line 4329 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 594: #line 4330 "gram.y" { (yyval.list) = NIL; ;} break; case 595: #line 4333 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 596: #line 4334 "gram.y" { (yyval.list) = NIL; ;} break; case 597: #line 4337 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 598: #line 4338 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 599: #line 4342 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[(2) - (2)].typnam), (yylsp[(1) - (2)])); ;} break; case 600: #line 4346 "gram.y" { (yyval.defelt) = makeDefElem("cache", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; case 601: #line 4350 "gram.y" { (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; case 602: #line 4354 "gram.y" { (yyval.defelt) = makeDefElem("cycle", (Node *)makeInteger(false), (yylsp[(1) - (2)])); ;} break; case 603: #line 4358 "gram.y" { (yyval.defelt) = makeDefElem("increment", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; case 604: #line 4362 "gram.y" { (yyval.defelt) = makeDefElem("maxvalue", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; case 605: #line 4366 "gram.y" { (yyval.defelt) = makeDefElem("minvalue", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; case 606: #line 4370 "gram.y" { (yyval.defelt) = makeDefElem("maxvalue", NULL, (yylsp[(1) - (2)])); ;} break; case 607: #line 4374 "gram.y" { (yyval.defelt) = makeDefElem("minvalue", NULL, (yylsp[(1) - (2)])); ;} break; case 608: #line 4378 "gram.y" { (yyval.defelt) = makeDefElem("owned_by", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 609: #line 4382 "gram.y" { /* not documented, only used by pg_dump */ (yyval.defelt) = makeDefElem("sequence_name", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 610: #line 4387 "gram.y" { (yyval.defelt) = makeDefElem("start", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; case 611: #line 4391 "gram.y" { (yyval.defelt) = makeDefElem("restart", NULL, (yylsp[(1) - (1)])); ;} break; case 612: #line 4395 "gram.y" { (yyval.defelt) = makeDefElem("restart", (Node *)(yyvsp[(3) - (3)].value), (yylsp[(1) - (3)])); ;} break; case 613: #line 4400 "gram.y" {;} break; case 614: #line 4401 "gram.y" {;} break; case 615: #line 4405 "gram.y" { (yyval.value) = makeFloat((yyvsp[(1) - (1)].str)); ;} break; case 616: #line 4406 "gram.y" { (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); ;} break; case 617: #line 4408 "gram.y" { (yyval.value) = makeFloat((yyvsp[(2) - (2)].str)); doNegateFloat((yyval.value)); ;} break; case 618: #line 4412 "gram.y" { (yyval.value) = makeInteger((yyvsp[(1) - (1)].ival)); ;} break; case 619: #line 4415 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); ;} break; case 620: #line 4416 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); ;} break; case 621: #line 4429 "gram.y" { /* * We now interpret parameterless CREATE LANGUAGE as * CREATE EXTENSION. "OR REPLACE" is silently translated * to "IF NOT EXISTS", which isn't quite the same, but * seems more useful than throwing an error. We just * ignore TRUSTED, as the previous code would have too. */ CreateExtensionStmt *n = makeNode(CreateExtensionStmt); n->if_not_exists = (yyvsp[(2) - (6)].boolean); n->extname = (yyvsp[(6) - (6)].str); n->options = NIL; (yyval.node) = (Node *)n; ;} break; case 622: #line 4445 "gram.y" { CreatePLangStmt *n = makeNode(CreatePLangStmt); n->replace = (yyvsp[(2) - (10)].boolean); n->plname = (yyvsp[(6) - (10)].str); n->plhandler = (yyvsp[(8) - (10)].list); n->plinline = (yyvsp[(9) - (10)].list); n->plvalidator = (yyvsp[(10) - (10)].list); n->pltrusted = (yyvsp[(3) - (10)].boolean); (yyval.node) = (Node *)n; ;} break; case 623: #line 4458 "gram.y" { (yyval.boolean) = true; ;} break; case 624: #line 4459 "gram.y" { (yyval.boolean) = false; ;} break; case 625: #line 4467 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 626: #line 4468 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} break; case 627: #line 4472 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 628: #line 4473 "gram.y" { (yyval.list) = NIL; ;} break; case 629: #line 4477 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 630: #line 4478 "gram.y" { (yyval.list) = NIL; ;} break; case 631: #line 4482 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 632: #line 4483 "gram.y" { (yyval.list) = NIL; ;} break; case 633: #line 4488 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_LANGUAGE; n->objects = list_make1(makeString((yyvsp[(4) - (5)].str))); n->behavior = (yyvsp[(5) - (5)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 634: #line 4498 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_LANGUAGE; n->objects = list_make1(makeString((yyvsp[(6) - (7)].str))); n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 635: #line 4510 "gram.y" {;} break; case 636: #line 4511 "gram.y" {;} break; case 637: #line 4522 "gram.y" { CreateTableSpaceStmt *n = makeNode(CreateTableSpaceStmt); n->tablespacename = (yyvsp[(3) - (7)].str); n->owner = (yyvsp[(4) - (7)].rolespec); n->location = (yyvsp[(6) - (7)].str); n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; ;} break; case 638: #line 4532 "gram.y" { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); ;} break; case 639: #line 4533 "gram.y" { (yyval.rolespec) = NULL; ;} break; case 640: #line 4547 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); n->tablespacename = (yyvsp[(3) - (3)].str); n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 641: #line 4554 "gram.y" { DropTableSpaceStmt *n = makeNode(DropTableSpaceStmt); n->tablespacename = (yyvsp[(5) - (5)].str); n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 642: #line 4571 "gram.y" { CreateExtensionStmt *n = makeNode(CreateExtensionStmt); n->extname = (yyvsp[(3) - (5)].str); n->if_not_exists = false; n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 643: #line 4579 "gram.y" { CreateExtensionStmt *n = makeNode(CreateExtensionStmt); n->extname = (yyvsp[(6) - (8)].str); n->if_not_exists = true; n->options = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; ;} break; case 644: #line 4590 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 645: #line 4592 "gram.y" { (yyval.list) = NIL; ;} break; case 646: #line 4597 "gram.y" { (yyval.defelt) = makeDefElem("schema", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 647: #line 4601 "gram.y" { (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 648: #line 4605 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE EXTENSION ... FROM is no longer supported"), parser_errposition((yylsp[(1) - (2)])))); ;} break; case 649: #line 4612 "gram.y" { (yyval.defelt) = makeDefElem("cascade", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; case 650: #line 4624 "gram.y" { AlterExtensionStmt *n = makeNode(AlterExtensionStmt); n->extname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 651: #line 4634 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 652: #line 4636 "gram.y" { (yyval.list) = NIL; ;} break; case 653: #line 4641 "gram.y" { (yyval.defelt) = makeDefElem("new_version", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 654: #line 4654 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (7)].str); n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_ACCESS_METHOD; n->object = (Node *) makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; ;} break; case 655: #line 4663 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_AGGREGATE; n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; ;} break; case 656: #line 4672 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (10)].str); n->action = (yyvsp[(4) - (10)].ival); n->objtype = OBJECT_CAST; n->object = (Node *) list_make2((yyvsp[(7) - (10)].typnam), (yyvsp[(9) - (10)].typnam)); (yyval.node) = (Node *) n; ;} break; case 657: #line 4681 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_COLLATION; n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 658: #line 4690 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_CONVERSION; n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 659: #line 4699 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_DOMAIN; n->object = (Node *) (yyvsp[(6) - (6)].typnam); (yyval.node) = (Node *)n; ;} break; case 660: #line 4708 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_FUNCTION; n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; ;} break; case 661: #line 4717 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (7)].str); n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_LANGUAGE; n->object = (Node *) makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; ;} break; case 662: #line 4726 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_OPERATOR; n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; ;} break; case 663: #line 4735 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (9)].str); n->action = (yyvsp[(4) - (9)].ival); n->objtype = OBJECT_OPCLASS; n->object = (Node *) lcons(makeString((yyvsp[(9) - (9)].str)), (yyvsp[(7) - (9)].list)); (yyval.node) = (Node *)n; ;} break; case 664: #line 4744 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (9)].str); n->action = (yyvsp[(4) - (9)].ival); n->objtype = OBJECT_OPFAMILY; n->object = (Node *) lcons(makeString((yyvsp[(9) - (9)].str)), (yyvsp[(7) - (9)].list)); (yyval.node) = (Node *)n; ;} break; case 665: #line 4753 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_PROCEDURE; n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; ;} break; case 666: #line 4762 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_ROUTINE; n->object = (Node *) (yyvsp[(6) - (6)].objwithargs); (yyval.node) = (Node *)n; ;} break; case 667: #line 4771 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_SCHEMA; n->object = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *)n; ;} break; case 668: #line 4780 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (7)].str); n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_EVENT_TRIGGER; n->object = (Node *) makeString((yyvsp[(7) - (7)].str)); (yyval.node) = (Node *)n; ;} break; case 669: #line 4789 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_TABLE; n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 670: #line 4798 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (8)].str); n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSPARSER; n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; ;} break; case 671: #line 4807 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (8)].str); n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSDICTIONARY; n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; ;} break; case 672: #line 4816 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (8)].str); n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSTEMPLATE; n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; ;} break; case 673: #line 4825 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (8)].str); n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_TSCONFIGURATION; n->object = (Node *) (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; ;} break; case 674: #line 4834 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_SEQUENCE; n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 675: #line 4843 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_VIEW; n->object = (Node *) (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 676: #line 4852 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (7)].str); n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_MATVIEW; n->object = (Node *) (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; ;} break; case 677: #line 4861 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (7)].str); n->action = (yyvsp[(4) - (7)].ival); n->objtype = OBJECT_FOREIGN_TABLE; n->object = (Node *) (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; ;} break; case 678: #line 4870 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (8)].str); n->action = (yyvsp[(4) - (8)].ival); n->objtype = OBJECT_FDW; n->object = (Node *) makeString((yyvsp[(8) - (8)].str)); (yyval.node) = (Node *)n; ;} break; case 679: #line 4879 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_FOREIGN_SERVER; n->object = (Node *) makeString((yyvsp[(6) - (6)].str)); (yyval.node) = (Node *)n; ;} break; case 680: #line 4888 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (9)].str); n->action = (yyvsp[(4) - (9)].ival); n->objtype = OBJECT_TRANSFORM; n->object = (Node *) list_make2((yyvsp[(7) - (9)].typnam), makeString((yyvsp[(9) - (9)].str))); (yyval.node) = (Node *)n; ;} break; case 681: #line 4897 "gram.y" { AlterExtensionContentsStmt *n = makeNode(AlterExtensionContentsStmt); n->extname = (yyvsp[(3) - (6)].str); n->action = (yyvsp[(4) - (6)].ival); n->objtype = OBJECT_TYPE; n->object = (Node *) (yyvsp[(6) - (6)].typnam); (yyval.node) = (Node *)n; ;} break; case 682: #line 4915 "gram.y" { CreateFdwStmt *n = makeNode(CreateFdwStmt); n->fdwname = (yyvsp[(5) - (7)].str); n->func_options = (yyvsp[(6) - (7)].list); n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; ;} break; case 683: #line 4925 "gram.y" { (yyval.defelt) = makeDefElem("handler", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 684: #line 4926 "gram.y" { (yyval.defelt) = makeDefElem("handler", NULL, (yylsp[(1) - (2)])); ;} break; case 685: #line 4927 "gram.y" { (yyval.defelt) = makeDefElem("validator", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 686: #line 4928 "gram.y" { (yyval.defelt) = makeDefElem("validator", NULL, (yylsp[(1) - (2)])); ;} break; case 687: #line 4932 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 688: #line 4933 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 689: #line 4937 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 690: #line 4938 "gram.y" { (yyval.list) = NIL; ;} break; case 691: #line 4949 "gram.y" { AlterFdwStmt *n = makeNode(AlterFdwStmt); n->fdwname = (yyvsp[(5) - (7)].str); n->func_options = (yyvsp[(6) - (7)].list); n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *) n; ;} break; case 692: #line 4957 "gram.y" { AlterFdwStmt *n = makeNode(AlterFdwStmt); n->fdwname = (yyvsp[(5) - (6)].str); n->func_options = (yyvsp[(6) - (6)].list); n->options = NIL; (yyval.node) = (Node *) n; ;} break; case 693: #line 4968 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 694: #line 4969 "gram.y" { (yyval.list) = NIL; ;} break; case 695: #line 4974 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 696: #line 4978 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 697: #line 4985 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 698: #line 4990 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 699: #line 4994 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 700: #line 5001 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; case 701: #line 5005 "gram.y" { (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_SET; ;} break; case 702: #line 5010 "gram.y" { (yyval.defelt) = (yyvsp[(2) - (2)].defelt); (yyval.defelt)->defaction = DEFELEM_ADD; ;} break; case 703: #line 5015 "gram.y" { (yyval.defelt) = makeDefElemExtended(NULL, (yyvsp[(2) - (2)].str), NULL, DEFELEM_DROP, (yylsp[(2) - (2)])); ;} break; case 704: #line 5022 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 705: #line 5028 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 706: #line 5033 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 707: #line 5045 "gram.y" { CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); n->servername = (yyvsp[(3) - (10)].str); n->servertype = (yyvsp[(4) - (10)].str); n->version = (yyvsp[(5) - (10)].str); n->fdwname = (yyvsp[(9) - (10)].str); n->options = (yyvsp[(10) - (10)].list); n->if_not_exists = false; (yyval.node) = (Node *) n; ;} break; case 708: #line 5057 "gram.y" { CreateForeignServerStmt *n = makeNode(CreateForeignServerStmt); n->servername = (yyvsp[(6) - (13)].str); n->servertype = (yyvsp[(7) - (13)].str); n->version = (yyvsp[(8) - (13)].str); n->fdwname = (yyvsp[(12) - (13)].str); n->options = (yyvsp[(13) - (13)].list); n->if_not_exists = true; (yyval.node) = (Node *) n; ;} break; case 709: #line 5070 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 710: #line 5071 "gram.y" { (yyval.str) = NULL; ;} break; case 711: #line 5076 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 712: #line 5077 "gram.y" { (yyval.str) = NULL; ;} break; case 713: #line 5081 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 714: #line 5082 "gram.y" { (yyval.str) = NULL; ;} break; case 715: #line 5093 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); n->servername = (yyvsp[(3) - (5)].str); n->version = (yyvsp[(4) - (5)].str); n->options = (yyvsp[(5) - (5)].list); n->has_version = true; (yyval.node) = (Node *) n; ;} break; case 716: #line 5102 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); n->servername = (yyvsp[(3) - (4)].str); n->version = (yyvsp[(4) - (4)].str); n->has_version = true; (yyval.node) = (Node *) n; ;} break; case 717: #line 5110 "gram.y" { AlterForeignServerStmt *n = makeNode(AlterForeignServerStmt); n->servername = (yyvsp[(3) - (4)].str); n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *) n; ;} break; case 718: #line 5129 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(4) - (11)].range)->relpersistence = RELPERSISTENCE_PERMANENT; n->base.relation = (yyvsp[(4) - (11)].range); n->base.tableElts = (yyvsp[(6) - (11)].list); n->base.inhRelations = (yyvsp[(8) - (11)].list); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; n->base.oncommit = ONCOMMIT_NOOP; n->base.tablespacename = NULL; n->base.if_not_exists = false; /* FDW-specific data */ n->servername = (yyvsp[(10) - (11)].str); n->options = (yyvsp[(11) - (11)].list); (yyval.node) = (Node *) n; ;} break; case 719: #line 5149 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(7) - (14)].range)->relpersistence = RELPERSISTENCE_PERMANENT; n->base.relation = (yyvsp[(7) - (14)].range); n->base.tableElts = (yyvsp[(9) - (14)].list); n->base.inhRelations = (yyvsp[(11) - (14)].list); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; n->base.oncommit = ONCOMMIT_NOOP; n->base.tablespacename = NULL; n->base.if_not_exists = true; /* FDW-specific data */ n->servername = (yyvsp[(13) - (14)].str); n->options = (yyvsp[(14) - (14)].list); (yyval.node) = (Node *) n; ;} break; case 720: #line 5169 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(4) - (12)].range)->relpersistence = RELPERSISTENCE_PERMANENT; n->base.relation = (yyvsp[(4) - (12)].range); n->base.inhRelations = list_make1((yyvsp[(7) - (12)].range)); n->base.tableElts = (yyvsp[(8) - (12)].list); n->base.partbound = (yyvsp[(9) - (12)].partboundspec); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; n->base.oncommit = ONCOMMIT_NOOP; n->base.tablespacename = NULL; n->base.if_not_exists = false; /* FDW-specific data */ n->servername = (yyvsp[(11) - (12)].str); n->options = (yyvsp[(12) - (12)].list); (yyval.node) = (Node *) n; ;} break; case 721: #line 5190 "gram.y" { CreateForeignTableStmt *n = makeNode(CreateForeignTableStmt); (yyvsp[(7) - (15)].range)->relpersistence = RELPERSISTENCE_PERMANENT; n->base.relation = (yyvsp[(7) - (15)].range); n->base.inhRelations = list_make1((yyvsp[(10) - (15)].range)); n->base.tableElts = (yyvsp[(11) - (15)].list); n->base.partbound = (yyvsp[(12) - (15)].partboundspec); n->base.ofTypename = NULL; n->base.constraints = NIL; n->base.options = NIL; n->base.oncommit = ONCOMMIT_NOOP; n->base.tablespacename = NULL; n->base.if_not_exists = true; /* FDW-specific data */ n->servername = (yyvsp[(14) - (15)].str); n->options = (yyvsp[(15) - (15)].list); (yyval.node) = (Node *) n; ;} break; case 722: #line 5219 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(4) - (5)].range); n->cmds = (yyvsp[(5) - (5)].list); n->relkind = OBJECT_FOREIGN_TABLE; n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 723: #line 5228 "gram.y" { AlterTableStmt *n = makeNode(AlterTableStmt); n->relation = (yyvsp[(6) - (7)].range); n->cmds = (yyvsp[(7) - (7)].list); n->relkind = OBJECT_FOREIGN_TABLE; n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 724: #line 5250 "gram.y" { ImportForeignSchemaStmt *n = makeNode(ImportForeignSchemaStmt); n->server_name = (yyvsp[(8) - (11)].str); n->remote_schema = (yyvsp[(4) - (11)].str); n->local_schema = (yyvsp[(10) - (11)].str); n->list_type = (yyvsp[(5) - (11)].importqual)->type; n->table_list = (yyvsp[(5) - (11)].importqual)->table_names; n->options = (yyvsp[(11) - (11)].list); (yyval.node) = (Node *) n; ;} break; case 725: #line 5263 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_LIMIT_TO; ;} break; case 726: #line 5264 "gram.y" { (yyval.ival) = FDW_IMPORT_SCHEMA_EXCEPT; ;} break; case 727: #line 5269 "gram.y" { ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); n->type = (yyvsp[(1) - (4)].ival); n->table_names = (yyvsp[(3) - (4)].list); (yyval.importqual) = n; ;} break; case 728: #line 5276 "gram.y" { ImportQual *n = (ImportQual *) palloc(sizeof(ImportQual)); n->type = FDW_IMPORT_SCHEMA_ALL; n->table_names = NIL; (yyval.importqual) = n; ;} break; case 729: #line 5292 "gram.y" { CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); n->user = (yyvsp[(5) - (8)].rolespec); n->servername = (yyvsp[(7) - (8)].str); n->options = (yyvsp[(8) - (8)].list); n->if_not_exists = false; (yyval.node) = (Node *) n; ;} break; case 730: #line 5301 "gram.y" { CreateUserMappingStmt *n = makeNode(CreateUserMappingStmt); n->user = (yyvsp[(8) - (11)].rolespec); n->servername = (yyvsp[(10) - (11)].str); n->options = (yyvsp[(11) - (11)].list); n->if_not_exists = true; (yyval.node) = (Node *) n; ;} break; case 731: #line 5312 "gram.y" { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); ;} break; case 732: #line 5313 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); ;} break; case 733: #line 5326 "gram.y" { DropUserMappingStmt *n = makeNode(DropUserMappingStmt); n->user = (yyvsp[(5) - (7)].rolespec); n->servername = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *) n; ;} break; case 734: #line 5334 "gram.y" { DropUserMappingStmt *n = makeNode(DropUserMappingStmt); n->user = (yyvsp[(7) - (9)].rolespec); n->servername = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *) n; ;} break; case 735: #line 5351 "gram.y" { AlterUserMappingStmt *n = makeNode(AlterUserMappingStmt); n->user = (yyvsp[(5) - (8)].rolespec); n->servername = (yyvsp[(7) - (8)].str); n->options = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; ;} break; case 736: #line 5377 "gram.y" { CreatePolicyStmt *n = makeNode(CreatePolicyStmt); n->policy_name = (yyvsp[(3) - (10)].str); n->table = (yyvsp[(5) - (10)].range); n->permissive = (yyvsp[(6) - (10)].boolean); n->cmd_name = (yyvsp[(7) - (10)].str); n->roles = (yyvsp[(8) - (10)].list); n->qual = (yyvsp[(9) - (10)].node); n->with_check = (yyvsp[(10) - (10)].node); (yyval.node) = (Node *) n; ;} break; case 737: #line 5393 "gram.y" { AlterPolicyStmt *n = makeNode(AlterPolicyStmt); n->policy_name = (yyvsp[(3) - (8)].str); n->table = (yyvsp[(5) - (8)].range); n->roles = (yyvsp[(6) - (8)].list); n->qual = (yyvsp[(7) - (8)].node); n->with_check = (yyvsp[(8) - (8)].node); (yyval.node) = (Node *) n; ;} break; case 738: #line 5405 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 739: #line 5406 "gram.y" { (yyval.node) = NULL; ;} break; case 740: #line 5410 "gram.y" { (yyval.node) = (yyvsp[(4) - (5)].node); ;} break; case 741: #line 5411 "gram.y" { (yyval.node) = NULL; ;} break; case 742: #line 5415 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 743: #line 5416 "gram.y" { (yyval.list) = list_make1(makeRoleSpec(ROLESPEC_PUBLIC, -1)); ;} break; case 744: #line 5420 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 745: #line 5421 "gram.y" { (yyval.list) = NULL; ;} break; case 746: #line 5426 "gram.y" { if (strcmp((yyvsp[(2) - (2)].str), "permissive") == 0) (yyval.boolean) = true; else if (strcmp((yyvsp[(2) - (2)].str), "restrictive") == 0) (yyval.boolean) = false; else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("unrecognized row security option \"%s\"", (yyvsp[(2) - (2)].str)), errhint("Only PERMISSIVE or RESTRICTIVE policies are supported currently."), parser_errposition((yylsp[(2) - (2)])))); ;} break; case 747: #line 5439 "gram.y" { (yyval.boolean) = true; ;} break; case 748: #line 5443 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 749: #line 5444 "gram.y" { (yyval.str) = "all"; ;} break; case 750: #line 5448 "gram.y" { (yyval.str) = "all"; ;} break; case 751: #line 5449 "gram.y" { (yyval.str) = "select"; ;} break; case 752: #line 5450 "gram.y" { (yyval.str) = "insert"; ;} break; case 753: #line 5451 "gram.y" { (yyval.str) = "update"; ;} break; case 754: #line 5452 "gram.y" { (yyval.str) = "delete"; ;} break; case 755: #line 5463 "gram.y" { CreateAmStmt *n = makeNode(CreateAmStmt); n->amname = (yyvsp[(4) - (8)].str); n->handler_name = (yyvsp[(8) - (8)].list); n->amtype = (yyvsp[(6) - (8)].chr); (yyval.node) = (Node *) n; ;} break; case 756: #line 5473 "gram.y" { (yyval.chr) = AMTYPE_INDEX; ;} break; case 757: #line 5474 "gram.y" { (yyval.chr) = AMTYPE_TABLE; ;} break; case 758: #line 5488 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = (yyvsp[(3) - (16)].str); n->relation = (yyvsp[(7) - (16)].range); n->funcname = (yyvsp[(13) - (16)].list); n->args = (yyvsp[(15) - (16)].list); n->row = (yyvsp[(9) - (16)].boolean); n->timing = (yyvsp[(4) - (16)].ival); n->events = intVal(linitial((yyvsp[(5) - (16)].list))); n->columns = (List *) lsecond((yyvsp[(5) - (16)].list)); n->whenClause = (yyvsp[(10) - (16)].node); n->transitionRels = (yyvsp[(8) - (16)].list); n->isconstraint = false; n->deferrable = false; n->initdeferred = false; n->constrrel = NULL; (yyval.node) = (Node *)n; ;} break; case 759: #line 5510 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = (yyvsp[(4) - (20)].str); n->relation = (yyvsp[(8) - (20)].range); n->funcname = (yyvsp[(17) - (20)].list); n->args = (yyvsp[(19) - (20)].list); n->row = true; n->timing = TRIGGER_TYPE_AFTER; n->events = intVal(linitial((yyvsp[(6) - (20)].list))); n->columns = (List *) lsecond((yyvsp[(6) - (20)].list)); n->whenClause = (yyvsp[(14) - (20)].node); n->transitionRels = NIL; n->isconstraint = true; processCASbits((yyvsp[(10) - (20)].ival), (yylsp[(10) - (20)]), "TRIGGER", &n->deferrable, &n->initdeferred, NULL, NULL, yyscanner); n->constrrel = (yyvsp[(9) - (20)].range); (yyval.node) = (Node *)n; ;} break; case 760: #line 5532 "gram.y" { (yyval.ival) = TRIGGER_TYPE_BEFORE; ;} break; case 761: #line 5533 "gram.y" { (yyval.ival) = TRIGGER_TYPE_AFTER; ;} break; case 762: #line 5534 "gram.y" { (yyval.ival) = TRIGGER_TYPE_INSTEAD; ;} break; case 763: #line 5539 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 764: #line 5541 "gram.y" { int events1 = intVal(linitial((yyvsp[(1) - (3)].list))); int events2 = intVal(linitial((yyvsp[(3) - (3)].list))); List *columns1 = (List *) lsecond((yyvsp[(1) - (3)].list)); List *columns2 = (List *) lsecond((yyvsp[(3) - (3)].list)); if (events1 & events2) parser_yyerror("duplicate trigger events specified"); /* * concat'ing the columns lists loses information about * which columns went with which event, but so long as * only UPDATE carries columns and we disallow multiple * UPDATE items, it doesn't matter. Command execution * should just ignore the columns for non-UPDATE events. */ (yyval.list) = list_make2(makeInteger(events1 | events2), list_concat(columns1, columns2)); ;} break; case 765: #line 5563 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_INSERT), NIL); ;} break; case 766: #line 5565 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_DELETE), NIL); ;} break; case 767: #line 5567 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), NIL); ;} break; case 768: #line 5569 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_UPDATE), (yyvsp[(3) - (3)].list)); ;} break; case 769: #line 5571 "gram.y" { (yyval.list) = list_make2(makeInteger(TRIGGER_TYPE_TRUNCATE), NIL); ;} break; case 770: #line 5575 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 771: #line 5576 "gram.y" { (yyval.list) = NIL; ;} break; case 772: #line 5580 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 773: #line 5581 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 774: #line 5586 "gram.y" { TriggerTransition *n = makeNode(TriggerTransition); n->name = (yyvsp[(4) - (4)].str); n->isNew = (yyvsp[(1) - (4)].boolean); n->isTable = (yyvsp[(2) - (4)].boolean); (yyval.node) = (Node *)n; ;} break; case 775: #line 5596 "gram.y" { (yyval.boolean) = true; ;} break; case 776: #line 5597 "gram.y" { (yyval.boolean) = false; ;} break; case 777: #line 5601 "gram.y" { (yyval.boolean) = true; ;} break; case 778: #line 5610 "gram.y" { (yyval.boolean) = false; ;} break; case 779: #line 5614 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 780: #line 5619 "gram.y" { (yyval.boolean) = (yyvsp[(3) - (3)].boolean); ;} break; case 781: #line 5623 "gram.y" { /* * If ROW/STATEMENT not specified, default to * STATEMENT, per SQL */ (yyval.boolean) = false; ;} break; case 782: #line 5633 "gram.y" {;} break; case 783: #line 5634 "gram.y" {;} break; case 784: #line 5638 "gram.y" { (yyval.boolean) = true; ;} break; case 785: #line 5639 "gram.y" { (yyval.boolean) = false; ;} break; case 786: #line 5643 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 787: #line 5644 "gram.y" { (yyval.node) = NULL; ;} break; case 790: #line 5653 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); ;} break; case 791: #line 5654 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); ;} break; case 792: #line 5655 "gram.y" { (yyval.list) = NIL; ;} break; case 793: #line 5660 "gram.y" { (yyval.value) = makeString(psprintf("%d", (yyvsp[(1) - (1)].ival))); ;} break; case 794: #line 5663 "gram.y" { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); ;} break; case 795: #line 5664 "gram.y" { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); ;} break; case 796: #line 5665 "gram.y" { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); ;} break; case 797: #line 5669 "gram.y" { (yyval.range) = (yyvsp[(2) - (2)].range); ;} break; case 798: #line 5670 "gram.y" { (yyval.range) = NULL; ;} break; case 799: #line 5675 "gram.y" { (yyval.ival) = 0; ;} break; case 800: #line 5677 "gram.y" { /* * We must complain about conflicting options. * We could, but choose not to, complain about redundant * options (ie, where $2's bit is already set in $1). */ int newspec = (yyvsp[(1) - (2)].ival) | (yyvsp[(2) - (2)].ival); /* special message for this case */ if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), parser_errposition((yylsp[(2) - (2)])))); /* generic message for other conflicts */ if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("conflicting constraint properties"), parser_errposition((yylsp[(2) - (2)])))); (yyval.ival) = newspec; ;} break; case 801: #line 5703 "gram.y" { (yyval.ival) = CAS_NOT_DEFERRABLE; ;} break; case 802: #line 5704 "gram.y" { (yyval.ival) = CAS_DEFERRABLE; ;} break; case 803: #line 5705 "gram.y" { (yyval.ival) = CAS_INITIALLY_IMMEDIATE; ;} break; case 804: #line 5706 "gram.y" { (yyval.ival) = CAS_INITIALLY_DEFERRED; ;} break; case 805: #line 5707 "gram.y" { (yyval.ival) = CAS_NOT_VALID; ;} break; case 806: #line 5708 "gram.y" { (yyval.ival) = CAS_NO_INHERIT; ;} break; case 807: #line 5723 "gram.y" { CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); n->trigname = (yyvsp[(4) - (11)].str); n->eventname = (yyvsp[(6) - (11)].str); n->whenclause = NULL; n->funcname = (yyvsp[(9) - (11)].list); (yyval.node) = (Node *)n; ;} break; case 808: #line 5734 "gram.y" { CreateEventTrigStmt *n = makeNode(CreateEventTrigStmt); n->trigname = (yyvsp[(4) - (13)].str); n->eventname = (yyvsp[(6) - (13)].str); n->whenclause = (yyvsp[(8) - (13)].list); n->funcname = (yyvsp[(11) - (13)].list); (yyval.node) = (Node *)n; ;} break; case 809: #line 5746 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 810: #line 5748 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 811: #line 5753 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (5)].str), (Node *) (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; case 812: #line 5758 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 813: #line 5760 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 814: #line 5765 "gram.y" { AlterEventTrigStmt *n = makeNode(AlterEventTrigStmt); n->trigname = (yyvsp[(4) - (5)].str); n->tgenabled = (yyvsp[(5) - (5)].chr); (yyval.node) = (Node *) n; ;} break; case 815: #line 5774 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_ORIGIN; ;} break; case 816: #line 5775 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ON_REPLICA; ;} break; case 817: #line 5776 "gram.y" { (yyval.chr) = TRIGGER_FIRES_ALWAYS; ;} break; case 818: #line 5777 "gram.y" { (yyval.chr) = TRIGGER_DISABLED; ;} break; case 819: #line 5789 "gram.y" { ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("CREATE ASSERTION is not yet implemented"))); (yyval.node) = NULL; ;} break; case 820: #line 5808 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_AGGREGATE; n->oldstyle = false; n->replace = (yyvsp[(2) - (6)].boolean); n->defnames = (yyvsp[(4) - (6)].list); n->args = (yyvsp[(5) - (6)].list); n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 821: #line 5819 "gram.y" { /* old-style (pre-8.2) syntax for CREATE AGGREGATE */ DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_AGGREGATE; n->oldstyle = true; n->replace = (yyvsp[(2) - (5)].boolean); n->defnames = (yyvsp[(4) - (5)].list); n->args = NIL; n->definition = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 822: #line 5831 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_OPERATOR; n->oldstyle = false; n->defnames = (yyvsp[(3) - (4)].list); n->args = NIL; n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; ;} break; case 823: #line 5841 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TYPE; n->oldstyle = false; n->defnames = (yyvsp[(3) - (4)].list); n->args = NIL; n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; ;} break; case 824: #line 5851 "gram.y" { /* Shell type (identified by lack of definition) */ DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TYPE; n->oldstyle = false; n->defnames = (yyvsp[(3) - (3)].list); n->args = NIL; n->definition = NIL; (yyval.node) = (Node *)n; ;} break; case 825: #line 5862 "gram.y" { CompositeTypeStmt *n = makeNode(CompositeTypeStmt); /* can't use qualified_name, sigh */ n->typevar = makeRangeVarFromAnyName((yyvsp[(3) - (7)].list), (yylsp[(3) - (7)]), yyscanner); n->coldeflist = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *)n; ;} break; case 826: #line 5871 "gram.y" { CreateEnumStmt *n = makeNode(CreateEnumStmt); n->typeName = (yyvsp[(3) - (8)].list); n->vals = (yyvsp[(7) - (8)].list); (yyval.node) = (Node *)n; ;} break; case 827: #line 5878 "gram.y" { CreateRangeStmt *n = makeNode(CreateRangeStmt); n->typeName = (yyvsp[(3) - (6)].list); n->params = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 828: #line 5885 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSPARSER; n->args = NIL; n->defnames = (yyvsp[(5) - (6)].list); n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 829: #line 5894 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSDICTIONARY; n->args = NIL; n->defnames = (yyvsp[(5) - (6)].list); n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 830: #line 5903 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSTEMPLATE; n->args = NIL; n->defnames = (yyvsp[(5) - (6)].list); n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 831: #line 5912 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_TSCONFIGURATION; n->args = NIL; n->defnames = (yyvsp[(5) - (6)].list); n->definition = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 832: #line 5921 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; n->defnames = (yyvsp[(3) - (4)].list); n->definition = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; ;} break; case 833: #line 5930 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; n->defnames = (yyvsp[(6) - (7)].list); n->definition = (yyvsp[(7) - (7)].list); n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; case 834: #line 5940 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; n->defnames = (yyvsp[(3) - (5)].list); n->definition = list_make1(makeDefElem("from", (Node *) (yyvsp[(5) - (5)].list), (yylsp[(5) - (5)]))); (yyval.node) = (Node *)n; ;} break; case 835: #line 5949 "gram.y" { DefineStmt *n = makeNode(DefineStmt); n->kind = OBJECT_COLLATION; n->args = NIL; n->defnames = (yyvsp[(6) - (8)].list); n->definition = list_make1(makeDefElem("from", (Node *) (yyvsp[(8) - (8)].list), (yylsp[(8) - (8)]))); n->if_not_exists = true; (yyval.node) = (Node *)n; ;} break; case 836: #line 5960 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 837: #line 5963 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 838: #line 5964 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 839: #line 5968 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 840: #line 5972 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (1)].str), NULL, (yylsp[(1) - (1)])); ;} break; case 841: #line 5978 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].typnam); ;} break; case 842: #line 5979 "gram.y" { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; case 843: #line 5980 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].list); ;} break; case 844: #line 5981 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].value); ;} break; case 845: #line 5982 "gram.y" { (yyval.node) = (Node *)makeString((yyvsp[(1) - (1)].str)); ;} break; case 846: #line 5983 "gram.y" { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; case 847: #line 5986 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 848: #line 5989 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 849: #line 5990 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 850: #line 5999 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)(yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 851: #line 6005 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 852: #line 6006 "gram.y" { (yyval.list) = NIL; ;} break; case 853: #line 6010 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 854: #line 6012 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 855: #line 6023 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = (yyvsp[(3) - (7)].list); n->oldVal = NULL; n->newVal = (yyvsp[(7) - (7)].str); n->newValNeighbor = NULL; n->newValIsAfter = true; n->skipIfNewValExists = (yyvsp[(6) - (7)].boolean); (yyval.node) = (Node *) n; ;} break; case 856: #line 6034 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = (yyvsp[(3) - (9)].list); n->oldVal = NULL; n->newVal = (yyvsp[(7) - (9)].str); n->newValNeighbor = (yyvsp[(9) - (9)].str); n->newValIsAfter = false; n->skipIfNewValExists = (yyvsp[(6) - (9)].boolean); (yyval.node) = (Node *) n; ;} break; case 857: #line 6045 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = (yyvsp[(3) - (9)].list); n->oldVal = NULL; n->newVal = (yyvsp[(7) - (9)].str); n->newValNeighbor = (yyvsp[(9) - (9)].str); n->newValIsAfter = true; n->skipIfNewValExists = (yyvsp[(6) - (9)].boolean); (yyval.node) = (Node *) n; ;} break; case 858: #line 6056 "gram.y" { AlterEnumStmt *n = makeNode(AlterEnumStmt); n->typeName = (yyvsp[(3) - (8)].list); n->oldVal = (yyvsp[(6) - (8)].str); n->newVal = (yyvsp[(8) - (8)].str); n->newValNeighbor = NULL; n->newValIsAfter = false; n->skipIfNewValExists = false; (yyval.node) = (Node *) n; ;} break; case 859: #line 6068 "gram.y" { (yyval.boolean) = true; ;} break; case 860: #line 6069 "gram.y" { (yyval.boolean) = false; ;} break; case 861: #line 6087 "gram.y" { CreateOpClassStmt *n = makeNode(CreateOpClassStmt); n->opclassname = (yyvsp[(4) - (13)].list); n->isDefault = (yyvsp[(5) - (13)].boolean); n->datatype = (yyvsp[(8) - (13)].typnam); n->amname = (yyvsp[(10) - (13)].str); n->opfamilyname = (yyvsp[(11) - (13)].list); n->items = (yyvsp[(13) - (13)].list); (yyval.node) = (Node *) n; ;} break; case 862: #line 6100 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 863: #line 6101 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 864: #line 6106 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); ObjectWithArgs *owa = makeNode(ObjectWithArgs); owa->objname = (yyvsp[(3) - (5)].list); owa->objargs = NIL; n->itemtype = OPCLASS_ITEM_OPERATOR; n->name = owa; n->number = (yyvsp[(2) - (5)].ival); n->order_family = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 865: #line 6119 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; n->name = (yyvsp[(3) - (5)].objwithargs); n->number = (yyvsp[(2) - (5)].ival); n->order_family = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 866: #line 6128 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; n->name = (yyvsp[(3) - (3)].objwithargs); n->number = (yyvsp[(2) - (3)].ival); (yyval.node) = (Node *) n; ;} break; case 867: #line 6136 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; n->name = (yyvsp[(6) - (6)].objwithargs); n->number = (yyvsp[(2) - (6)].ival); n->class_args = (yyvsp[(4) - (6)].list); (yyval.node) = (Node *) n; ;} break; case 868: #line 6145 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_STORAGETYPE; n->storedtype = (yyvsp[(2) - (2)].typnam); (yyval.node) = (Node *) n; ;} break; case 869: #line 6153 "gram.y" { (yyval.boolean) = true; ;} break; case 870: #line 6154 "gram.y" { (yyval.boolean) = false; ;} break; case 871: #line 6157 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 872: #line 6158 "gram.y" { (yyval.list) = NIL; ;} break; case 873: #line 6161 "gram.y" { (yyval.list) = NIL; ;} break; case 874: #line 6162 "gram.y" { (yyval.list) = (yyvsp[(4) - (4)].list); ;} break; case 875: #line 6163 "gram.y" { (yyval.list) = NIL; ;} break; case 876: #line 6167 "gram.y" { /* * RECHECK no longer does anything in opclass definitions, * but we still accept it to ease porting of old database * dumps. */ ereport(NOTICE, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("RECHECK is no longer required"), errhint("Update your data type."), parser_errposition((yylsp[(1) - (1)])))); (yyval.boolean) = true; ;} break; case 877: #line 6180 "gram.y" { (yyval.boolean) = false; ;} break; case 878: #line 6186 "gram.y" { CreateOpFamilyStmt *n = makeNode(CreateOpFamilyStmt); n->opfamilyname = (yyvsp[(4) - (6)].list); n->amname = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 879: #line 6196 "gram.y" { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); n->opfamilyname = (yyvsp[(4) - (8)].list); n->amname = (yyvsp[(6) - (8)].str); n->isDrop = false; n->items = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; ;} break; case 880: #line 6205 "gram.y" { AlterOpFamilyStmt *n = makeNode(AlterOpFamilyStmt); n->opfamilyname = (yyvsp[(4) - (8)].list); n->amname = (yyvsp[(6) - (8)].str); n->isDrop = true; n->items = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *) n; ;} break; case 881: #line 6216 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 882: #line 6217 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 883: #line 6222 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_OPERATOR; n->number = (yyvsp[(2) - (5)].ival); n->class_args = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 884: #line 6230 "gram.y" { CreateOpClassItem *n = makeNode(CreateOpClassItem); n->itemtype = OPCLASS_ITEM_FUNCTION; n->number = (yyvsp[(2) - (5)].ival); n->class_args = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 885: #line 6242 "gram.y" { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString((yyvsp[(6) - (7)].str)), (yyvsp[(4) - (7)].list))); n->removeType = OBJECT_OPCLASS; n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 886: #line 6252 "gram.y" { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString((yyvsp[(8) - (9)].str)), (yyvsp[(6) - (9)].list))); n->removeType = OBJECT_OPCLASS; n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 887: #line 6265 "gram.y" { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString((yyvsp[(6) - (7)].str)), (yyvsp[(4) - (7)].list))); n->removeType = OBJECT_OPFAMILY; n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 888: #line 6275 "gram.y" { DropStmt *n = makeNode(DropStmt); n->objects = list_make1(lcons(makeString((yyvsp[(8) - (9)].str)), (yyvsp[(6) - (9)].list))); n->removeType = OBJECT_OPFAMILY; n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 889: #line 6297 "gram.y" { DropOwnedStmt *n = makeNode(DropOwnedStmt); n->roles = (yyvsp[(4) - (5)].list); n->behavior = (yyvsp[(5) - (5)].dbehavior); (yyval.node) = (Node *)n; ;} break; case 890: #line 6307 "gram.y" { ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); n->roles = (yyvsp[(4) - (6)].list); n->newrole = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 891: #line 6325 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (6)].objtype); n->missing_ok = true; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 892: #line 6335 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (4)].objtype); n->missing_ok = false; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 893: #line 6345 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (6)].objtype); n->missing_ok = true; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 894: #line 6355 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (4)].objtype); n->missing_ok = false; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 895: #line 6365 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (6)].objtype); n->objects = list_make1(lappend((yyvsp[(5) - (6)].list), makeString((yyvsp[(3) - (6)].str)))); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 896: #line 6375 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = (yyvsp[(2) - (8)].objtype); n->objects = list_make1(lappend((yyvsp[(7) - (8)].list), makeString((yyvsp[(5) - (8)].str)))); n->behavior = (yyvsp[(8) - (8)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 897: #line 6385 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TYPE; n->missing_ok = false; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 898: #line 6395 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TYPE; n->missing_ok = true; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 899: #line 6405 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_DOMAIN; n->missing_ok = false; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 900: #line 6415 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_DOMAIN; n->missing_ok = true; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->concurrent = false; (yyval.node) = (Node *) n; ;} break; case 901: #line 6425 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_INDEX; n->missing_ok = false; n->objects = (yyvsp[(4) - (5)].list); n->behavior = (yyvsp[(5) - (5)].dbehavior); n->concurrent = true; (yyval.node) = (Node *)n; ;} break; case 902: #line 6435 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_INDEX; n->missing_ok = true; n->objects = (yyvsp[(6) - (7)].list); n->behavior = (yyvsp[(7) - (7)].dbehavior); n->concurrent = true; (yyval.node) = (Node *)n; ;} break; case 903: #line 6448 "gram.y" { (yyval.objtype) = OBJECT_TABLE; ;} break; case 904: #line 6449 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; ;} break; case 905: #line 6450 "gram.y" { (yyval.objtype) = OBJECT_VIEW; ;} break; case 906: #line 6451 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; ;} break; case 907: #line 6452 "gram.y" { (yyval.objtype) = OBJECT_INDEX; ;} break; case 908: #line 6453 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; ;} break; case 909: #line 6454 "gram.y" { (yyval.objtype) = OBJECT_COLLATION; ;} break; case 910: #line 6455 "gram.y" { (yyval.objtype) = OBJECT_CONVERSION; ;} break; case 911: #line 6456 "gram.y" { (yyval.objtype) = OBJECT_STATISTIC_EXT; ;} break; case 912: #line 6457 "gram.y" { (yyval.objtype) = OBJECT_TSPARSER; ;} break; case 913: #line 6458 "gram.y" { (yyval.objtype) = OBJECT_TSDICTIONARY; ;} break; case 914: #line 6459 "gram.y" { (yyval.objtype) = OBJECT_TSTEMPLATE; ;} break; case 915: #line 6460 "gram.y" { (yyval.objtype) = OBJECT_TSCONFIGURATION; ;} break; case 916: #line 6465 "gram.y" { (yyval.objtype) = OBJECT_ACCESS_METHOD; ;} break; case 917: #line 6466 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; ;} break; case 918: #line 6467 "gram.y" { (yyval.objtype) = OBJECT_EXTENSION; ;} break; case 919: #line 6468 "gram.y" { (yyval.objtype) = OBJECT_FDW; ;} break; case 920: #line 6469 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; ;} break; case 921: #line 6470 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; ;} break; case 922: #line 6471 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_SERVER; ;} break; case 923: #line 6476 "gram.y" { (yyval.objtype) = OBJECT_POLICY; ;} break; case 924: #line 6477 "gram.y" { (yyval.objtype) = OBJECT_RULE; ;} break; case 925: #line 6478 "gram.y" { (yyval.objtype) = OBJECT_TRIGGER; ;} break; case 926: #line 6482 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; case 927: #line 6483 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; case 928: #line 6486 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 929: #line 6487 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)); ;} break; case 930: #line 6491 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(2) - (2)].str))); ;} break; case 931: #line 6493 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 932: #line 6497 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} break; case 933: #line 6498 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} break; case 934: #line 6510 "gram.y" { TruncateStmt *n = makeNode(TruncateStmt); n->relations = (yyvsp[(3) - (5)].list); n->restart_seqs = (yyvsp[(4) - (5)].boolean); n->behavior = (yyvsp[(5) - (5)].dbehavior); (yyval.node) = (Node *)n; ;} break; case 935: #line 6520 "gram.y" { (yyval.boolean) = false; ;} break; case 936: #line 6521 "gram.y" { (yyval.boolean) = true; ;} break; case 937: #line 6522 "gram.y" { (yyval.boolean) = false; ;} break; case 938: #line 6557 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = (yyvsp[(3) - (6)].objtype); n->object = (Node *) (yyvsp[(4) - (6)].list); n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 939: #line 6565 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = (yyvsp[(3) - (6)].objtype); n->object = (Node *) makeString((yyvsp[(4) - (6)].str)); n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 940: #line 6573 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TYPE; n->object = (Node *) (yyvsp[(4) - (6)].typnam); n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 941: #line 6581 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_DOMAIN; n->object = (Node *) (yyvsp[(4) - (6)].typnam); n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 942: #line 6589 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_AGGREGATE; n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 943: #line 6597 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_FUNCTION; n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 944: #line 6605 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPERATOR; n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 945: #line 6613 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TABCONSTRAINT; n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 946: #line 6621 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_DOMCONSTRAINT; /* * should use Typename not any_name in the production, but * there's a shift/reduce conflict if we do that, so fix it * up here. */ n->object = (Node *) list_make2(makeTypeNameFromNameList((yyvsp[(7) - (9)].list)), makeString((yyvsp[(4) - (9)].str))); n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; ;} break; case 947: #line 6634 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_POLICY; n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 948: #line 6642 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_PROCEDURE; n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 949: #line 6650 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_ROUTINE; n->object = (Node *) (yyvsp[(4) - (6)].objwithargs); n->comment = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *) n; ;} break; case 950: #line 6658 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_RULE; n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 951: #line 6666 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRANSFORM; n->object = (Node *) list_make2((yyvsp[(5) - (9)].typnam), makeString((yyvsp[(7) - (9)].str))); n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; ;} break; case 952: #line 6674 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_TRIGGER; n->object = (Node *) lappend((yyvsp[(6) - (8)].list), makeString((yyvsp[(4) - (8)].str))); n->comment = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 953: #line 6682 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPCLASS; n->object = (Node *) lcons(makeString((yyvsp[(7) - (9)].str)), (yyvsp[(5) - (9)].list)); n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; ;} break; case 954: #line 6690 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_OPFAMILY; n->object = (Node *) lcons(makeString((yyvsp[(7) - (9)].str)), (yyvsp[(5) - (9)].list)); n->comment = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; ;} break; case 955: #line 6698 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_LARGEOBJECT; n->object = (Node *) (yyvsp[(5) - (7)].value); n->comment = (yyvsp[(7) - (7)].str); (yyval.node) = (Node *) n; ;} break; case 956: #line 6706 "gram.y" { CommentStmt *n = makeNode(CommentStmt); n->objtype = OBJECT_CAST; n->object = (Node *) list_make2((yyvsp[(5) - (10)].typnam), (yyvsp[(7) - (10)].typnam)); n->comment = (yyvsp[(10) - (10)].str); (yyval.node) = (Node *) n; ;} break; case 957: #line 6717 "gram.y" { (yyval.objtype) = OBJECT_COLUMN; ;} break; case 958: #line 6718 "gram.y" { (yyval.objtype) = OBJECT_INDEX; ;} break; case 959: #line 6719 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; ;} break; case 960: #line 6720 "gram.y" { (yyval.objtype) = OBJECT_STATISTIC_EXT; ;} break; case 961: #line 6721 "gram.y" { (yyval.objtype) = OBJECT_TABLE; ;} break; case 962: #line 6722 "gram.y" { (yyval.objtype) = OBJECT_VIEW; ;} break; case 963: #line 6723 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; ;} break; case 964: #line 6724 "gram.y" { (yyval.objtype) = OBJECT_COLLATION; ;} break; case 965: #line 6725 "gram.y" { (yyval.objtype) = OBJECT_CONVERSION; ;} break; case 966: #line 6726 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; ;} break; case 967: #line 6727 "gram.y" { (yyval.objtype) = OBJECT_TSCONFIGURATION; ;} break; case 968: #line 6728 "gram.y" { (yyval.objtype) = OBJECT_TSDICTIONARY; ;} break; case 969: #line 6729 "gram.y" { (yyval.objtype) = OBJECT_TSPARSER; ;} break; case 970: #line 6730 "gram.y" { (yyval.objtype) = OBJECT_TSTEMPLATE; ;} break; case 971: #line 6735 "gram.y" { (yyval.objtype) = OBJECT_ACCESS_METHOD; ;} break; case 972: #line 6736 "gram.y" { (yyval.objtype) = OBJECT_DATABASE; ;} break; case 973: #line 6737 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; ;} break; case 974: #line 6738 "gram.y" { (yyval.objtype) = OBJECT_EXTENSION; ;} break; case 975: #line 6739 "gram.y" { (yyval.objtype) = OBJECT_FDW; ;} break; case 976: #line 6740 "gram.y" { (yyval.objtype) = OBJECT_LANGUAGE; ;} break; case 977: #line 6741 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; ;} break; case 978: #line 6742 "gram.y" { (yyval.objtype) = OBJECT_ROLE; ;} break; case 979: #line 6743 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; ;} break; case 980: #line 6744 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_SERVER; ;} break; case 981: #line 6745 "gram.y" { (yyval.objtype) = OBJECT_SUBSCRIPTION; ;} break; case 982: #line 6746 "gram.y" { (yyval.objtype) = OBJECT_TABLESPACE; ;} break; case 983: #line 6750 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 984: #line 6751 "gram.y" { (yyval.str) = NULL; ;} break; case 985: #line 6767 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); n->objtype = (yyvsp[(5) - (8)].objtype); n->object = (Node *) (yyvsp[(6) - (8)].list); n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 986: #line 6777 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); n->objtype = (yyvsp[(5) - (8)].objtype); n->object = (Node *) makeString((yyvsp[(6) - (8)].str)); n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 987: #line 6787 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_TYPE; n->object = (Node *) (yyvsp[(6) - (8)].typnam); n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 988: #line 6797 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_DOMAIN; n->object = (Node *) (yyvsp[(6) - (8)].typnam); n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 989: #line 6807 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_AGGREGATE; n->object = (Node *) (yyvsp[(6) - (8)].objwithargs); n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 990: #line 6817 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_FUNCTION; n->object = (Node *) (yyvsp[(6) - (8)].objwithargs); n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 991: #line 6827 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (9)].str); n->objtype = OBJECT_LARGEOBJECT; n->object = (Node *) (yyvsp[(7) - (9)].value); n->label = (yyvsp[(9) - (9)].str); (yyval.node) = (Node *) n; ;} break; case 992: #line 6837 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_PROCEDURE; n->object = (Node *) (yyvsp[(6) - (8)].objwithargs); n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 993: #line 6847 "gram.y" { SecLabelStmt *n = makeNode(SecLabelStmt); n->provider = (yyvsp[(3) - (8)].str); n->objtype = OBJECT_ROUTINE; n->object = (Node *) (yyvsp[(6) - (8)].objwithargs); n->label = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *) n; ;} break; case 994: #line 6857 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 995: #line 6858 "gram.y" { (yyval.str) = NULL; ;} break; case 996: #line 6863 "gram.y" { (yyval.objtype) = OBJECT_COLUMN; ;} break; case 997: #line 6864 "gram.y" { (yyval.objtype) = OBJECT_FOREIGN_TABLE; ;} break; case 998: #line 6865 "gram.y" { (yyval.objtype) = OBJECT_SEQUENCE; ;} break; case 999: #line 6866 "gram.y" { (yyval.objtype) = OBJECT_TABLE; ;} break; case 1000: #line 6867 "gram.y" { (yyval.objtype) = OBJECT_VIEW; ;} break; case 1001: #line 6868 "gram.y" { (yyval.objtype) = OBJECT_MATVIEW; ;} break; case 1002: #line 6873 "gram.y" { (yyval.objtype) = OBJECT_DATABASE; ;} break; case 1003: #line 6874 "gram.y" { (yyval.objtype) = OBJECT_EVENT_TRIGGER; ;} break; case 1004: #line 6875 "gram.y" { (yyval.objtype) = OBJECT_LANGUAGE; ;} break; case 1005: #line 6876 "gram.y" { (yyval.objtype) = OBJECT_PUBLICATION; ;} break; case 1006: #line 6877 "gram.y" { (yyval.objtype) = OBJECT_ROLE; ;} break; case 1007: #line 6878 "gram.y" { (yyval.objtype) = OBJECT_SCHEMA; ;} break; case 1008: #line 6879 "gram.y" { (yyval.objtype) = OBJECT_SUBSCRIPTION; ;} break; case 1009: #line 6880 "gram.y" { (yyval.objtype) = OBJECT_TABLESPACE; ;} break; case 1010: #line 6883 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1011: #line 6884 "gram.y" { (yyval.str) = NULL; ;} break; case 1012: #line 6895 "gram.y" { FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); n->ismove = false; (yyval.node) = (Node *)n; ;} break; case 1013: #line 6901 "gram.y" { FetchStmt *n = (FetchStmt *) (yyvsp[(2) - (2)].node); n->ismove = true; (yyval.node) = (Node *)n; ;} break; case 1014: #line 6909 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(1) - (1)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; ;} break; case 1015: #line 6917 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(2) - (2)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; ;} break; case 1016: #line 6925 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; ;} break; case 1017: #line 6933 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_BACKWARD; n->howMany = 1; (yyval.node) = (Node *)n; ;} break; case 1018: #line 6941 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_ABSOLUTE; n->howMany = 1; (yyval.node) = (Node *)n; ;} break; case 1019: #line 6949 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_ABSOLUTE; n->howMany = -1; (yyval.node) = (Node *)n; ;} break; case 1020: #line 6957 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_ABSOLUTE; n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; ;} break; case 1021: #line 6965 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_RELATIVE; n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; ;} break; case 1022: #line 6973 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; n->howMany = (yyvsp[(1) - (3)].ival); (yyval.node) = (Node *)n; ;} break; case 1023: #line 6981 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; n->howMany = FETCH_ALL; (yyval.node) = (Node *)n; ;} break; case 1024: #line 6989 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_FORWARD; n->howMany = 1; (yyval.node) = (Node *)n; ;} break; case 1025: #line 6997 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_FORWARD; n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; ;} break; case 1026: #line 7005 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_FORWARD; n->howMany = FETCH_ALL; (yyval.node) = (Node *)n; ;} break; case 1027: #line 7013 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(3) - (3)].str); n->direction = FETCH_BACKWARD; n->howMany = 1; (yyval.node) = (Node *)n; ;} break; case 1028: #line 7021 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_BACKWARD; n->howMany = (yyvsp[(2) - (4)].ival); (yyval.node) = (Node *)n; ;} break; case 1029: #line 7029 "gram.y" { FetchStmt *n = makeNode(FetchStmt); n->portalname = (yyvsp[(4) - (4)].str); n->direction = FETCH_BACKWARD; n->howMany = FETCH_ALL; (yyval.node) = (Node *)n; ;} break; case 1030: #line 7038 "gram.y" {;} break; case 1031: #line 7039 "gram.y" {;} break; case 1032: #line 7042 "gram.y" {;} break; case 1033: #line 7043 "gram.y" {;} break; case 1034: #line 7055 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = true; n->privileges = (yyvsp[(2) - (7)].list); n->targtype = ((yyvsp[(4) - (7)].privtarget))->targtype; n->objtype = ((yyvsp[(4) - (7)].privtarget))->objtype; n->objects = ((yyvsp[(4) - (7)].privtarget))->objs; n->grantees = (yyvsp[(6) - (7)].list); n->grant_option = (yyvsp[(7) - (7)].boolean); (yyval.node) = (Node*)n; ;} break; case 1035: #line 7071 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = false; n->privileges = (yyvsp[(2) - (7)].list); n->targtype = ((yyvsp[(4) - (7)].privtarget))->targtype; n->objtype = ((yyvsp[(4) - (7)].privtarget))->objtype; n->objects = ((yyvsp[(4) - (7)].privtarget))->objs; n->grantees = (yyvsp[(6) - (7)].list); n->behavior = (yyvsp[(7) - (7)].dbehavior); (yyval.node) = (Node *)n; ;} break; case 1036: #line 7085 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = true; n->privileges = (yyvsp[(5) - (10)].list); n->targtype = ((yyvsp[(7) - (10)].privtarget))->targtype; n->objtype = ((yyvsp[(7) - (10)].privtarget))->objtype; n->objects = ((yyvsp[(7) - (10)].privtarget))->objs; n->grantees = (yyvsp[(9) - (10)].list); n->behavior = (yyvsp[(10) - (10)].dbehavior); (yyval.node) = (Node *)n; ;} break; case 1037: #line 7110 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1038: #line 7112 "gram.y" { (yyval.list) = NIL; ;} break; case 1039: #line 7114 "gram.y" { (yyval.list) = NIL; ;} break; case 1040: #line 7116 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; n->cols = (yyvsp[(3) - (4)].list); (yyval.list) = list_make1(n); ;} break; case 1041: #line 7123 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = NULL; n->cols = (yyvsp[(4) - (5)].list); (yyval.list) = list_make1(n); ;} break; case 1042: #line 7131 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].accesspriv)); ;} break; case 1043: #line 7132 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].accesspriv)); ;} break; case 1044: #line 7136 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; ;} break; case 1045: #line 7143 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; ;} break; case 1046: #line 7150 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = pstrdup((yyvsp[(1) - (2)].keyword)); n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; ;} break; case 1047: #line 7157 "gram.y" { AccessPriv *n = makeNode(AccessPriv); n->priv_name = (yyvsp[(1) - (2)].str); n->cols = (yyvsp[(2) - (2)].list); (yyval.accesspriv) = n; ;} break; case 1048: #line 7171 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_TABLE; n->objs = (yyvsp[(1) - (1)].list); (yyval.privtarget) = n; ;} break; case 1049: #line 7179 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_TABLE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1050: #line 7187 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_SEQUENCE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1051: #line 7195 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_FDW; n->objs = (yyvsp[(4) - (4)].list); (yyval.privtarget) = n; ;} break; case 1052: #line 7203 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_FOREIGN_SERVER; n->objs = (yyvsp[(3) - (3)].list); (yyval.privtarget) = n; ;} break; case 1053: #line 7211 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_FUNCTION; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1054: #line 7219 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_PROCEDURE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1055: #line 7227 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_ROUTINE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1056: #line 7235 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_DATABASE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1057: #line 7243 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_DOMAIN; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1058: #line 7251 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_LANGUAGE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1059: #line 7259 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_LARGEOBJECT; n->objs = (yyvsp[(3) - (3)].list); (yyval.privtarget) = n; ;} break; case 1060: #line 7267 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_SCHEMA; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1061: #line 7275 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_TABLESPACE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1062: #line 7283 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_OBJECT; n->objtype = OBJECT_TYPE; n->objs = (yyvsp[(2) - (2)].list); (yyval.privtarget) = n; ;} break; case 1063: #line 7291 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = OBJECT_TABLE; n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; ;} break; case 1064: #line 7299 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = OBJECT_SEQUENCE; n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; ;} break; case 1065: #line 7307 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = OBJECT_FUNCTION; n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; ;} break; case 1066: #line 7315 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = OBJECT_PROCEDURE; n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; ;} break; case 1067: #line 7323 "gram.y" { PrivTarget *n = (PrivTarget *) palloc(sizeof(PrivTarget)); n->targtype = ACL_TARGET_ALL_IN_SCHEMA; n->objtype = OBJECT_ROUTINE; n->objs = (yyvsp[(5) - (5)].list); (yyval.privtarget) = n; ;} break; case 1068: #line 7334 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); ;} break; case 1069: #line 7335 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); ;} break; case 1070: #line 7339 "gram.y" { (yyval.rolespec) = (yyvsp[(1) - (1)].rolespec); ;} break; case 1071: #line 7340 "gram.y" { (yyval.rolespec) = (yyvsp[(2) - (2)].rolespec); ;} break; case 1072: #line 7345 "gram.y" { (yyval.boolean) = true; ;} break; case 1073: #line 7346 "gram.y" { (yyval.boolean) = false; ;} break; case 1074: #line 7357 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = true; n->granted_roles = (yyvsp[(2) - (6)].list); n->grantee_roles = (yyvsp[(4) - (6)].list); n->admin_opt = (yyvsp[(5) - (6)].boolean); n->grantor = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node*)n; ;} break; case 1075: #line 7370 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; n->admin_opt = false; n->granted_roles = (yyvsp[(2) - (6)].list); n->grantee_roles = (yyvsp[(4) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); (yyval.node) = (Node*)n; ;} break; case 1076: #line 7380 "gram.y" { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; n->admin_opt = true; n->granted_roles = (yyvsp[(5) - (9)].list); n->grantee_roles = (yyvsp[(7) - (9)].list); n->behavior = (yyvsp[(9) - (9)].dbehavior); (yyval.node) = (Node*)n; ;} break; case 1077: #line 7391 "gram.y" { (yyval.boolean) = true; ;} break; case 1078: #line 7392 "gram.y" { (yyval.boolean) = false; ;} break; case 1079: #line 7395 "gram.y" { (yyval.rolespec) = (yyvsp[(3) - (3)].rolespec); ;} break; case 1080: #line 7396 "gram.y" { (yyval.rolespec) = NULL; ;} break; case 1081: #line 7407 "gram.y" { AlterDefaultPrivilegesStmt *n = makeNode(AlterDefaultPrivilegesStmt); n->options = (yyvsp[(4) - (5)].list); n->action = (GrantStmt *) (yyvsp[(5) - (5)].node); (yyval.node) = (Node*)n; ;} break; case 1082: #line 7416 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1083: #line 7417 "gram.y" { (yyval.list) = NIL; ;} break; case 1084: #line 7422 "gram.y" { (yyval.defelt) = makeDefElem("schemas", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 1085: #line 7426 "gram.y" { (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 1086: #line 7430 "gram.y" { (yyval.defelt) = makeDefElem("roles", (Node *)(yyvsp[(3) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 1087: #line 7442 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = true; n->privileges = (yyvsp[(2) - (7)].list); n->targtype = ACL_TARGET_DEFAULTS; n->objtype = (yyvsp[(4) - (7)].ival); n->objects = NIL; n->grantees = (yyvsp[(6) - (7)].list); n->grant_option = (yyvsp[(7) - (7)].boolean); (yyval.node) = (Node*)n; ;} break; case 1088: #line 7455 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = false; n->privileges = (yyvsp[(2) - (7)].list); n->targtype = ACL_TARGET_DEFAULTS; n->objtype = (yyvsp[(4) - (7)].ival); n->objects = NIL; n->grantees = (yyvsp[(6) - (7)].list); n->behavior = (yyvsp[(7) - (7)].dbehavior); (yyval.node) = (Node *)n; ;} break; case 1089: #line 7469 "gram.y" { GrantStmt *n = makeNode(GrantStmt); n->is_grant = false; n->grant_option = true; n->privileges = (yyvsp[(5) - (10)].list); n->targtype = ACL_TARGET_DEFAULTS; n->objtype = (yyvsp[(7) - (10)].ival); n->objects = NIL; n->grantees = (yyvsp[(9) - (10)].list); n->behavior = (yyvsp[(10) - (10)].dbehavior); (yyval.node) = (Node *)n; ;} break; case 1090: #line 7484 "gram.y" { (yyval.ival) = OBJECT_TABLE; ;} break; case 1091: #line 7485 "gram.y" { (yyval.ival) = OBJECT_FUNCTION; ;} break; case 1092: #line 7486 "gram.y" { (yyval.ival) = OBJECT_FUNCTION; ;} break; case 1093: #line 7487 "gram.y" { (yyval.ival) = OBJECT_SEQUENCE; ;} break; case 1094: #line 7488 "gram.y" { (yyval.ival) = OBJECT_TYPE; ;} break; case 1095: #line 7489 "gram.y" { (yyval.ival) = OBJECT_SCHEMA; ;} break; case 1096: #line 7504 "gram.y" { IndexStmt *n = makeNode(IndexStmt); n->unique = (yyvsp[(2) - (15)].boolean); n->concurrent = (yyvsp[(4) - (15)].boolean); n->idxname = (yyvsp[(5) - (15)].str); n->relation = (yyvsp[(7) - (15)].range); n->accessMethod = (yyvsp[(8) - (15)].str); n->indexParams = (yyvsp[(10) - (15)].list); n->indexIncludingParams = (yyvsp[(12) - (15)].list); n->options = (yyvsp[(13) - (15)].list); n->tableSpace = (yyvsp[(14) - (15)].str); n->whereClause = (yyvsp[(15) - (15)].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; n->oldNode = InvalidOid; n->oldCreateSubid = InvalidSubTransactionId; n->oldFirstRelfilenodeSubid = InvalidSubTransactionId; n->primary = false; n->isconstraint = false; n->deferrable = false; n->initdeferred = false; n->transformed = false; n->if_not_exists = false; n->reset_default_tblspc = false; (yyval.node) = (Node *)n; ;} break; case 1097: #line 7534 "gram.y" { IndexStmt *n = makeNode(IndexStmt); n->unique = (yyvsp[(2) - (18)].boolean); n->concurrent = (yyvsp[(4) - (18)].boolean); n->idxname = (yyvsp[(8) - (18)].str); n->relation = (yyvsp[(10) - (18)].range); n->accessMethod = (yyvsp[(11) - (18)].str); n->indexParams = (yyvsp[(13) - (18)].list); n->indexIncludingParams = (yyvsp[(15) - (18)].list); n->options = (yyvsp[(16) - (18)].list); n->tableSpace = (yyvsp[(17) - (18)].str); n->whereClause = (yyvsp[(18) - (18)].node); n->excludeOpNames = NIL; n->idxcomment = NULL; n->indexOid = InvalidOid; n->oldNode = InvalidOid; n->oldCreateSubid = InvalidSubTransactionId; n->oldFirstRelfilenodeSubid = InvalidSubTransactionId; n->primary = false; n->isconstraint = false; n->deferrable = false; n->initdeferred = false; n->transformed = false; n->if_not_exists = true; n->reset_default_tblspc = false; (yyval.node) = (Node *)n; ;} break; case 1098: #line 7564 "gram.y" { (yyval.boolean) = true; ;} break; case 1099: #line 7565 "gram.y" { (yyval.boolean) = false; ;} break; case 1100: #line 7569 "gram.y" { (yyval.boolean) = true; ;} break; case 1101: #line 7570 "gram.y" { (yyval.boolean) = false; ;} break; case 1102: #line 7574 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1103: #line 7575 "gram.y" { (yyval.str) = NULL; ;} break; case 1104: #line 7579 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 1105: #line 7580 "gram.y" { (yyval.str) = DEFAULT_INDEX_TYPE; ;} break; case 1106: #line 7583 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); ;} break; case 1107: #line 7584 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); ;} break; case 1108: #line 7590 "gram.y" { (yyval.ielem) = makeNode(IndexElem); (yyval.ielem)->name = NULL; (yyval.ielem)->expr = NULL; (yyval.ielem)->indexcolname = NULL; (yyval.ielem)->collation = (yyvsp[(1) - (4)].list); (yyval.ielem)->opclass = (yyvsp[(2) - (4)].list); (yyval.ielem)->opclassopts = NIL; (yyval.ielem)->ordering = (yyvsp[(3) - (4)].ival); (yyval.ielem)->nulls_ordering = (yyvsp[(4) - (4)].ival); ;} break; case 1109: #line 7602 "gram.y" { (yyval.ielem) = makeNode(IndexElem); (yyval.ielem)->name = NULL; (yyval.ielem)->expr = NULL; (yyval.ielem)->indexcolname = NULL; (yyval.ielem)->collation = (yyvsp[(1) - (5)].list); (yyval.ielem)->opclass = (yyvsp[(2) - (5)].list); (yyval.ielem)->opclassopts = (yyvsp[(3) - (5)].list); (yyval.ielem)->ordering = (yyvsp[(4) - (5)].ival); (yyval.ielem)->nulls_ordering = (yyvsp[(5) - (5)].ival); ;} break; case 1110: #line 7621 "gram.y" { (yyval.ielem) = (yyvsp[(2) - (2)].ielem); (yyval.ielem)->name = (yyvsp[(1) - (2)].str); ;} break; case 1111: #line 7626 "gram.y" { (yyval.ielem) = (yyvsp[(2) - (2)].ielem); (yyval.ielem)->expr = (yyvsp[(1) - (2)].node); ;} break; case 1112: #line 7631 "gram.y" { (yyval.ielem) = (yyvsp[(4) - (4)].ielem); (yyval.ielem)->expr = (yyvsp[(2) - (4)].node); ;} break; case 1113: #line 7637 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 1114: #line 7638 "gram.y" { (yyval.list) = NIL; ;} break; case 1115: #line 7641 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].ielem)); ;} break; case 1116: #line 7642 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].ielem)); ;} break; case 1117: #line 7645 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1118: #line 7646 "gram.y" { (yyval.list) = NIL; ;} break; case 1119: #line 7649 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1120: #line 7650 "gram.y" { (yyval.list) = NIL; ;} break; case 1121: #line 7653 "gram.y" { (yyval.ival) = SORTBY_ASC; ;} break; case 1122: #line 7654 "gram.y" { (yyval.ival) = SORTBY_DESC; ;} break; case 1123: #line 7655 "gram.y" { (yyval.ival) = SORTBY_DEFAULT; ;} break; case 1124: #line 7658 "gram.y" { (yyval.ival) = SORTBY_NULLS_FIRST; ;} break; case 1125: #line 7659 "gram.y" { (yyval.ival) = SORTBY_NULLS_LAST; ;} break; case 1126: #line 7660 "gram.y" { (yyval.ival) = SORTBY_NULLS_DEFAULT; ;} break; case 1127: #line 7678 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); n->is_procedure = false; n->replace = (yyvsp[(2) - (8)].boolean); n->funcname = (yyvsp[(4) - (8)].list); n->parameters = (yyvsp[(5) - (8)].list); n->returnType = (yyvsp[(7) - (8)].typnam); n->options = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; ;} break; case 1128: #line 7690 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); n->is_procedure = false; n->replace = (yyvsp[(2) - (11)].boolean); n->funcname = (yyvsp[(4) - (11)].list); n->parameters = mergeTableFuncParameters((yyvsp[(5) - (11)].list), (yyvsp[(9) - (11)].list)); n->returnType = TableFuncTypeName((yyvsp[(9) - (11)].list)); n->returnType->location = (yylsp[(7) - (11)]); n->options = (yyvsp[(11) - (11)].list); (yyval.node) = (Node *)n; ;} break; case 1129: #line 7703 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); n->is_procedure = false; n->replace = (yyvsp[(2) - (6)].boolean); n->funcname = (yyvsp[(4) - (6)].list); n->parameters = (yyvsp[(5) - (6)].list); n->returnType = NULL; n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 1130: #line 7715 "gram.y" { CreateFunctionStmt *n = makeNode(CreateFunctionStmt); n->is_procedure = true; n->replace = (yyvsp[(2) - (6)].boolean); n->funcname = (yyvsp[(4) - (6)].list); n->parameters = (yyvsp[(5) - (6)].list); n->returnType = NULL; n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 1131: #line 7728 "gram.y" { (yyval.boolean) = true; ;} break; case 1132: #line 7729 "gram.y" { (yyval.boolean) = false; ;} break; case 1133: #line 7732 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1134: #line 7733 "gram.y" { (yyval.list) = NIL; ;} break; case 1135: #line 7737 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1136: #line 7738 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1137: #line 7742 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; case 1138: #line 7744 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; case 1139: #line 7749 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = (yyvsp[(1) - (2)].list); n->objargs = extractArgTypes((yyvsp[(2) - (2)].list)); (yyval.objwithargs) = n; ;} break; case 1140: #line 7761 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = list_make1(makeString(pstrdup((yyvsp[(1) - (1)].keyword)))); n->args_unspecified = true; (yyval.objwithargs) = n; ;} break; case 1141: #line 7768 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = list_make1(makeString((yyvsp[(1) - (1)].str))); n->args_unspecified = true; (yyval.objwithargs) = n; ;} break; case 1142: #line 7775 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), yyscanner); n->args_unspecified = true; (yyval.objwithargs) = n; ;} break; case 1143: #line 7789 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1144: #line 7790 "gram.y" { (yyval.list) = NIL; ;} break; case 1145: #line 7794 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1146: #line 7796 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1147: #line 7811 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[(2) - (3)].str); n->argType = (yyvsp[(3) - (3)].typnam); n->mode = (yyvsp[(1) - (3)].fun_param_mode); n->defexpr = NULL; (yyval.fun_param) = n; ;} break; case 1148: #line 7820 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[(1) - (3)].str); n->argType = (yyvsp[(3) - (3)].typnam); n->mode = (yyvsp[(2) - (3)].fun_param_mode); n->defexpr = NULL; (yyval.fun_param) = n; ;} break; case 1149: #line 7829 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[(1) - (2)].str); n->argType = (yyvsp[(2) - (2)].typnam); n->mode = FUNC_PARAM_IN; n->defexpr = NULL; (yyval.fun_param) = n; ;} break; case 1150: #line 7838 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; n->argType = (yyvsp[(2) - (2)].typnam); n->mode = (yyvsp[(1) - (2)].fun_param_mode); n->defexpr = NULL; (yyval.fun_param) = n; ;} break; case 1151: #line 7847 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = NULL; n->argType = (yyvsp[(1) - (1)].typnam); n->mode = FUNC_PARAM_IN; n->defexpr = NULL; (yyval.fun_param) = n; ;} break; case 1152: #line 7858 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_IN; ;} break; case 1153: #line 7859 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_OUT; ;} break; case 1154: #line 7860 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; ;} break; case 1155: #line 7861 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_INOUT; ;} break; case 1156: #line 7862 "gram.y" { (yyval.fun_param_mode) = FUNC_PARAM_VARIADIC; ;} break; case 1158: #line 7873 "gram.y" { /* We can catch over-specified results here if we want to, * but for now better to silently swallow typmod, etc. * - thomas 2000-03-22 */ (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1159: #line 7887 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1160: #line 7889 "gram.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (4)].str)), (yyvsp[(2) - (4)].list))); (yyval.typnam)->pct_type = true; (yyval.typnam)->location = (yylsp[(1) - (4)]); ;} break; case 1161: #line 7895 "gram.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(2) - (5)].str)), (yyvsp[(3) - (5)].list))); (yyval.typnam)->pct_type = true; (yyval.typnam)->setof = true; (yyval.typnam)->location = (yylsp[(2) - (5)]); ;} break; case 1162: #line 7905 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (1)].fun_param); ;} break; case 1163: #line 7909 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); ;} break; case 1164: #line 7914 "gram.y" { (yyval.fun_param) = (yyvsp[(1) - (3)].fun_param); (yyval.fun_param)->defexpr = (yyvsp[(3) - (3)].node); ;} break; case 1165: #line 7922 "gram.y" { if (!((yyvsp[(1) - (1)].fun_param)->mode == FUNC_PARAM_IN || (yyvsp[(1) - (1)].fun_param)->mode == FUNC_PARAM_VARIADIC)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("aggregates cannot have output arguments"), parser_errposition((yylsp[(1) - (1)])))); (yyval.fun_param) = (yyvsp[(1) - (1)].fun_param); ;} break; case 1166: #line 7963 "gram.y" { (yyval.list) = list_make2(NIL, makeInteger(-1)); ;} break; case 1167: #line 7967 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (3)].list), makeInteger(-1)); ;} break; case 1168: #line 7971 "gram.y" { (yyval.list) = list_make2((yyvsp[(4) - (5)].list), makeInteger(0)); ;} break; case 1169: #line 7975 "gram.y" { /* this is the only case requiring consistency checking */ (yyval.list) = makeOrderedSetArgs((yyvsp[(2) - (6)].list), (yyvsp[(5) - (6)].list), yyscanner); ;} break; case 1170: #line 7982 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1171: #line 7983 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1172: #line 7988 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = (yyvsp[(1) - (2)].list); n->objargs = extractAggrArgTypes((yyvsp[(2) - (2)].list)); (yyval.objwithargs) = n; ;} break; case 1173: #line 7997 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; case 1174: #line 7999 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; case 1175: #line 8004 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1176: #line 8005 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1177: #line 8013 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(false), (yylsp[(1) - (4)])); ;} break; case 1178: #line 8017 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(true), (yylsp[(1) - (5)])); ;} break; case 1179: #line 8021 "gram.y" { (yyval.defelt) = makeDefElem("strict", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; case 1180: #line 8025 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("immutable"), (yylsp[(1) - (1)])); ;} break; case 1181: #line 8029 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("stable"), (yylsp[(1) - (1)])); ;} break; case 1182: #line 8033 "gram.y" { (yyval.defelt) = makeDefElem("volatility", (Node *)makeString("volatile"), (yylsp[(1) - (1)])); ;} break; case 1183: #line 8037 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(true), (yylsp[(1) - (3)])); ;} break; case 1184: #line 8041 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(false), (yylsp[(1) - (3)])); ;} break; case 1185: #line 8045 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(true), (yylsp[(1) - (2)])); ;} break; case 1186: #line 8049 "gram.y" { (yyval.defelt) = makeDefElem("security", (Node *)makeInteger(false), (yylsp[(1) - (2)])); ;} break; case 1187: #line 8053 "gram.y" { (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; case 1188: #line 8057 "gram.y" { (yyval.defelt) = makeDefElem("leakproof", (Node *)makeInteger(false), (yylsp[(1) - (2)])); ;} break; case 1189: #line 8061 "gram.y" { (yyval.defelt) = makeDefElem("cost", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; case 1190: #line 8065 "gram.y" { (yyval.defelt) = makeDefElem("rows", (Node *)(yyvsp[(2) - (2)].value), (yylsp[(1) - (2)])); ;} break; case 1191: #line 8069 "gram.y" { (yyval.defelt) = makeDefElem("support", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 1192: #line 8073 "gram.y" { /* we abuse the normal content of a DefElem here */ (yyval.defelt) = makeDefElem("set", (Node *)(yyvsp[(1) - (1)].vsetstmt), (yylsp[(1) - (1)])); ;} break; case 1193: #line 8078 "gram.y" { (yyval.defelt) = makeDefElem("parallel", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 1194: #line 8085 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 1195: #line 8089 "gram.y" { (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 1196: #line 8093 "gram.y" { (yyval.defelt) = makeDefElem("transform", (Node *)(yyvsp[(2) - (2)].list), (yylsp[(1) - (2)])); ;} break; case 1197: #line 8097 "gram.y" { (yyval.defelt) = makeDefElem("window", (Node *)makeInteger(true), (yylsp[(1) - (1)])); ;} break; case 1198: #line 8101 "gram.y" { (yyval.defelt) = (yyvsp[(1) - (1)].defelt); ;} break; case 1199: #line 8106 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 1200: #line 8108 "gram.y" { (yyval.list) = list_make2(makeString((yyvsp[(1) - (3)].str)), makeString((yyvsp[(3) - (3)].str))); ;} break; case 1201: #line 8114 "gram.y" { (yyval.list) = list_make1((yyvsp[(3) - (3)].typnam)); ;} break; case 1202: #line 8115 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (5)].list), (yyvsp[(5) - (5)].typnam)); ;} break; case 1203: #line 8119 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1204: #line 8120 "gram.y" { (yyval.list) = NIL; ;} break; case 1205: #line 8124 "gram.y" { FunctionParameter *n = makeNode(FunctionParameter); n->name = (yyvsp[(1) - (2)].str); n->argType = (yyvsp[(2) - (2)].typnam); n->mode = FUNC_PARAM_TABLE; n->defexpr = NULL; (yyval.fun_param) = n; ;} break; case 1206: #line 8136 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].fun_param)); ;} break; case 1207: #line 8140 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].fun_param)); ;} break; case 1208: #line 8155 "gram.y" { AlterFunctionStmt *n = makeNode(AlterFunctionStmt); n->objtype = OBJECT_FUNCTION; n->func = (yyvsp[(3) - (5)].objwithargs); n->actions = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1209: #line 8163 "gram.y" { AlterFunctionStmt *n = makeNode(AlterFunctionStmt); n->objtype = OBJECT_PROCEDURE; n->func = (yyvsp[(3) - (5)].objwithargs); n->actions = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1210: #line 8171 "gram.y" { AlterFunctionStmt *n = makeNode(AlterFunctionStmt); n->objtype = OBJECT_ROUTINE; n->func = (yyvsp[(3) - (5)].objwithargs); n->actions = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1211: #line 8182 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1212: #line 8183 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1215: #line 8207 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_FUNCTION; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1216: #line 8217 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_FUNCTION; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1217: #line 8227 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_PROCEDURE; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1218: #line 8237 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_PROCEDURE; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1219: #line 8247 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_ROUTINE; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1220: #line 8257 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_ROUTINE; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1221: #line 8270 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_AGGREGATE; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1222: #line 8280 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_AGGREGATE; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1223: #line 8293 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_OPERATOR; n->objects = (yyvsp[(3) - (4)].list); n->behavior = (yyvsp[(4) - (4)].dbehavior); n->missing_ok = false; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1224: #line 8303 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_OPERATOR; n->objects = (yyvsp[(5) - (6)].list); n->behavior = (yyvsp[(6) - (6)].dbehavior); n->missing_ok = true; n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1225: #line 8316 "gram.y" { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("missing argument"), errhint("Use NONE to denote the missing argument of a unary operator."), parser_errposition((yylsp[(3) - (3)])))); ;} break; case 1226: #line 8324 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), (yyvsp[(4) - (5)].typnam)); ;} break; case 1227: #line 8326 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(4) - (5)].typnam)); ;} break; case 1228: #line 8328 "gram.y" { (yyval.list) = list_make2((yyvsp[(2) - (5)].typnam), NULL); ;} break; case 1229: #line 8333 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 1230: #line 8335 "gram.y" { (yyval.list) = lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(3) - (3)].list)); ;} break; case 1231: #line 8339 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].objwithargs)); ;} break; case 1232: #line 8341 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].objwithargs)); ;} break; case 1233: #line 8346 "gram.y" { ObjectWithArgs *n = makeNode(ObjectWithArgs); n->objname = (yyvsp[(1) - (2)].list); n->objargs = (yyvsp[(2) - (2)].list); (yyval.objwithargs) = n; ;} break; case 1234: #line 8364 "gram.y" { DoStmt *n = makeNode(DoStmt); n->args = (yyvsp[(2) - (2)].list); (yyval.node) = (Node *)n; ;} break; case 1235: #line 8372 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1236: #line 8373 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1237: #line 8378 "gram.y" { (yyval.defelt) = makeDefElem("as", (Node *)makeString((yyvsp[(1) - (1)].str)), (yylsp[(1) - (1)])); ;} break; case 1238: #line 8382 "gram.y" { (yyval.defelt) = makeDefElem("language", (Node *)makeString((yyvsp[(2) - (2)].str)), (yylsp[(1) - (2)])); ;} break; case 1239: #line 8395 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); n->sourcetype = (yyvsp[(4) - (11)].typnam); n->targettype = (yyvsp[(6) - (11)].typnam); n->func = (yyvsp[(10) - (11)].objwithargs); n->context = (CoercionContext) (yyvsp[(11) - (11)].ival); n->inout = false; (yyval.node) = (Node *)n; ;} break; case 1240: #line 8406 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); n->sourcetype = (yyvsp[(4) - (10)].typnam); n->targettype = (yyvsp[(6) - (10)].typnam); n->func = NULL; n->context = (CoercionContext) (yyvsp[(10) - (10)].ival); n->inout = false; (yyval.node) = (Node *)n; ;} break; case 1241: #line 8417 "gram.y" { CreateCastStmt *n = makeNode(CreateCastStmt); n->sourcetype = (yyvsp[(4) - (10)].typnam); n->targettype = (yyvsp[(6) - (10)].typnam); n->func = NULL; n->context = (CoercionContext) (yyvsp[(10) - (10)].ival); n->inout = true; (yyval.node) = (Node *)n; ;} break; case 1242: #line 8428 "gram.y" { (yyval.ival) = COERCION_IMPLICIT; ;} break; case 1243: #line 8429 "gram.y" { (yyval.ival) = COERCION_ASSIGNMENT; ;} break; case 1244: #line 8430 "gram.y" { (yyval.ival) = COERCION_EXPLICIT; ;} break; case 1245: #line 8435 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_CAST; n->objects = list_make1(list_make2((yyvsp[(5) - (9)].typnam), (yyvsp[(7) - (9)].typnam))); n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = (yyvsp[(3) - (9)].boolean); n->concurrent = false; (yyval.node) = (Node *)n; ;} break; case 1246: #line 8446 "gram.y" { (yyval.boolean) = true; ;} break; case 1247: #line 8447 "gram.y" { (yyval.boolean) = false; ;} break; case 1248: #line 8458 "gram.y" { CreateTransformStmt *n = makeNode(CreateTransformStmt); n->replace = (yyvsp[(2) - (10)].boolean); n->type_name = (yyvsp[(5) - (10)].typnam); n->lang = (yyvsp[(7) - (10)].str); n->fromsql = linitial((yyvsp[(9) - (10)].list)); n->tosql = lsecond((yyvsp[(9) - (10)].list)); (yyval.node) = (Node *)n; ;} break; case 1249: #line 8470 "gram.y" { (yyval.list) = list_make2((yyvsp[(5) - (11)].objwithargs), (yyvsp[(11) - (11)].objwithargs)); ;} break; case 1250: #line 8474 "gram.y" { (yyval.list) = list_make2((yyvsp[(11) - (11)].objwithargs), (yyvsp[(5) - (11)].objwithargs)); ;} break; case 1251: #line 8478 "gram.y" { (yyval.list) = list_make2((yyvsp[(5) - (5)].objwithargs), NULL); ;} break; case 1252: #line 8482 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(5) - (5)].objwithargs)); ;} break; case 1253: #line 8489 "gram.y" { DropStmt *n = makeNode(DropStmt); n->removeType = OBJECT_TRANSFORM; n->objects = list_make1(list_make2((yyvsp[(5) - (8)].typnam), makeString((yyvsp[(7) - (8)].str)))); n->behavior = (yyvsp[(8) - (8)].dbehavior); n->missing_ok = (yyvsp[(3) - (8)].boolean); (yyval.node) = (Node *)n; ;} break; case 1254: #line 8509 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[(2) - (4)].ival); n->concurrent = (yyvsp[(3) - (4)].boolean); n->relation = (yyvsp[(4) - (4)].range); n->name = NULL; n->options = 0; (yyval.node) = (Node *)n; ;} break; case 1255: #line 8519 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[(2) - (4)].ival); n->concurrent = (yyvsp[(3) - (4)].boolean); n->name = (yyvsp[(4) - (4)].str); n->relation = NULL; n->options = 0; (yyval.node) = (Node *)n; ;} break; case 1256: #line 8529 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[(5) - (7)].ival); n->concurrent = (yyvsp[(6) - (7)].boolean); n->relation = (yyvsp[(7) - (7)].range); n->name = NULL; n->options = (yyvsp[(3) - (7)].ival); (yyval.node) = (Node *)n; ;} break; case 1257: #line 8539 "gram.y" { ReindexStmt *n = makeNode(ReindexStmt); n->kind = (yyvsp[(5) - (7)].ival); n->concurrent = (yyvsp[(6) - (7)].boolean); n->name = (yyvsp[(7) - (7)].str); n->relation = NULL; n->options = (yyvsp[(3) - (7)].ival); (yyval.node) = (Node *)n; ;} break; case 1258: #line 8550 "gram.y" { (yyval.ival) = REINDEX_OBJECT_INDEX; ;} break; case 1259: #line 8551 "gram.y" { (yyval.ival) = REINDEX_OBJECT_TABLE; ;} break; case 1260: #line 8554 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SCHEMA; ;} break; case 1261: #line 8555 "gram.y" { (yyval.ival) = REINDEX_OBJECT_SYSTEM; ;} break; case 1262: #line 8556 "gram.y" { (yyval.ival) = REINDEX_OBJECT_DATABASE; ;} break; case 1263: #line 8559 "gram.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; case 1264: #line 8560 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival); ;} break; case 1265: #line 8563 "gram.y" { (yyval.ival) = REINDEXOPT_VERBOSE; ;} break; case 1266: #line 8574 "gram.y" { AlterTableSpaceOptionsStmt *n = makeNode(AlterTableSpaceOptionsStmt); n->tablespacename = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); n->isReset = false; (yyval.node) = (Node *)n; ;} break; case 1267: #line 8583 "gram.y" { AlterTableSpaceOptionsStmt *n = makeNode(AlterTableSpaceOptionsStmt); n->tablespacename = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); n->isReset = true; (yyval.node) = (Node *)n; ;} break; case 1268: #line 8600 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_AGGREGATE; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1269: #line 8609 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLLATION; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1270: #line 8618 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_CONVERSION; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1271: #line 8627 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DATABASE; n->subname = (yyvsp[(3) - (6)].str); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1272: #line 8636 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DOMAIN; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1273: #line 8645 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_DOMCONSTRAINT; n->object = (Node *) (yyvsp[(3) - (8)].list); n->subname = (yyvsp[(6) - (8)].str); n->newname = (yyvsp[(8) - (8)].str); (yyval.node) = (Node *)n; ;} break; case 1274: #line 8654 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FDW; n->object = (Node *) makeString((yyvsp[(5) - (8)].str)); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1275: #line 8663 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FUNCTION; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1276: #line 8672 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; n->subname = (yyvsp[(3) - (6)].str); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1277: #line 8681 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_LANGUAGE; n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); n->newname = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1278: #line 8690 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPCLASS; n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1279: #line 8699 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_OPFAMILY; n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1280: #line 8708 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_POLICY; n->relation = (yyvsp[(5) - (8)].range); n->subname = (yyvsp[(3) - (8)].str); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1281: #line 8718 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_POLICY; n->relation = (yyvsp[(7) - (10)].range); n->subname = (yyvsp[(5) - (10)].str); n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1282: #line 8728 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_PROCEDURE; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1283: #line 8737 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_PUBLICATION; n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1284: #line 8746 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROUTINE; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1285: #line 8755 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SCHEMA; n->subname = (yyvsp[(3) - (6)].str); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1286: #line 8764 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_SERVER; n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1287: #line 8773 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SUBSCRIPTION; n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1288: #line 8782 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLE; n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1289: #line 8792 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLE; n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1290: #line 8802 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SEQUENCE; n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1291: #line 8812 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_SEQUENCE; n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1292: #line 8822 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_VIEW; n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1293: #line 8832 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_VIEW; n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1294: #line 8842 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_MATVIEW; n->relation = (yyvsp[(4) - (7)].range); n->subname = NULL; n->newname = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1295: #line 8852 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_MATVIEW; n->relation = (yyvsp[(6) - (9)].range); n->subname = NULL; n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1296: #line 8862 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_INDEX; n->relation = (yyvsp[(3) - (6)].range); n->subname = NULL; n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1297: #line 8872 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_INDEX; n->relation = (yyvsp[(5) - (8)].range); n->subname = NULL; n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1298: #line 8882 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_TABLE; n->relation = (yyvsp[(4) - (7)].range); n->subname = NULL; n->newname = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1299: #line 8892 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_FOREIGN_TABLE; n->relation = (yyvsp[(6) - (9)].range); n->subname = NULL; n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1300: #line 8902 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_TABLE; n->relation = (yyvsp[(3) - (8)].range); n->subname = (yyvsp[(6) - (8)].str); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1301: #line 8913 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_TABLE; n->relation = (yyvsp[(5) - (10)].range); n->subname = (yyvsp[(8) - (10)].str); n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1302: #line 8924 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_VIEW; n->relation = (yyvsp[(3) - (8)].range); n->subname = (yyvsp[(6) - (8)].str); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1303: #line 8935 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_VIEW; n->relation = (yyvsp[(5) - (10)].range); n->subname = (yyvsp[(8) - (10)].str); n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1304: #line 8946 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_MATVIEW; n->relation = (yyvsp[(4) - (9)].range); n->subname = (yyvsp[(7) - (9)].str); n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1305: #line 8957 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_MATVIEW; n->relation = (yyvsp[(6) - (11)].range); n->subname = (yyvsp[(9) - (11)].str); n->newname = (yyvsp[(11) - (11)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1306: #line 8968 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABCONSTRAINT; n->relation = (yyvsp[(3) - (8)].range); n->subname = (yyvsp[(6) - (8)].str); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1307: #line 8978 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABCONSTRAINT; n->relation = (yyvsp[(5) - (10)].range); n->subname = (yyvsp[(8) - (10)].str); n->newname = (yyvsp[(10) - (10)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1308: #line 8988 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_FOREIGN_TABLE; n->relation = (yyvsp[(4) - (9)].range); n->subname = (yyvsp[(7) - (9)].str); n->newname = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1309: #line 8999 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_COLUMN; n->relationType = OBJECT_FOREIGN_TABLE; n->relation = (yyvsp[(6) - (11)].range); n->subname = (yyvsp[(9) - (11)].str); n->newname = (yyvsp[(11) - (11)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1310: #line 9010 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_RULE; n->relation = (yyvsp[(5) - (8)].range); n->subname = (yyvsp[(3) - (8)].str); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1311: #line 9020 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TRIGGER; n->relation = (yyvsp[(5) - (8)].range); n->subname = (yyvsp[(3) - (8)].str); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1312: #line 9030 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_EVENT_TRIGGER; n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); n->newname = (yyvsp[(7) - (7)].str); (yyval.node) = (Node *)n; ;} break; case 1313: #line 9038 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; n->subname = (yyvsp[(3) - (6)].str); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1314: #line 9047 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ROLE; n->subname = (yyvsp[(3) - (6)].str); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1315: #line 9056 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TABLESPACE; n->subname = (yyvsp[(3) - (6)].str); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1316: #line 9065 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_STATISTIC_EXT; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1317: #line 9074 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSPARSER; n->object = (Node *) (yyvsp[(5) - (8)].list); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1318: #line 9083 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSDICTIONARY; n->object = (Node *) (yyvsp[(5) - (8)].list); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1319: #line 9092 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSTEMPLATE; n->object = (Node *) (yyvsp[(5) - (8)].list); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1320: #line 9101 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TSCONFIGURATION; n->object = (Node *) (yyvsp[(5) - (8)].list); n->newname = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1321: #line 9110 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_TYPE; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newname = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1322: #line 9119 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->renameType = OBJECT_ATTRIBUTE; n->relationType = OBJECT_TYPE; n->relation = makeRangeVarFromAnyName((yyvsp[(3) - (9)].list), (yylsp[(3) - (9)]), yyscanner); n->subname = (yyvsp[(6) - (9)].str); n->newname = (yyvsp[(8) - (9)].str); n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1323: #line 9132 "gram.y" { (yyval.ival) = COLUMN; ;} break; case 1324: #line 9133 "gram.y" { (yyval.ival) = 0; ;} break; case 1325: #line 9136 "gram.y" { (yyval.ival) = 1; ;} break; case 1326: #line 9137 "gram.y" { (yyval.ival) = 0; ;} break; case 1327: #line 9148 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_FUNCTION; n->object = (Node *) (yyvsp[(3) - (8)].objwithargs); n->extname = makeString((yyvsp[(8) - (8)].str)); n->remove = (yyvsp[(4) - (8)].boolean); (yyval.node) = (Node *)n; ;} break; case 1328: #line 9157 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_PROCEDURE; n->object = (Node *) (yyvsp[(3) - (8)].objwithargs); n->extname = makeString((yyvsp[(8) - (8)].str)); n->remove = (yyvsp[(4) - (8)].boolean); (yyval.node) = (Node *)n; ;} break; case 1329: #line 9166 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_ROUTINE; n->object = (Node *) (yyvsp[(3) - (8)].objwithargs); n->extname = makeString((yyvsp[(8) - (8)].str)); n->remove = (yyvsp[(4) - (8)].boolean); (yyval.node) = (Node *)n; ;} break; case 1330: #line 9175 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_TRIGGER; n->relation = (yyvsp[(5) - (10)].range); n->object = (Node *) list_make1(makeString((yyvsp[(3) - (10)].str))); n->extname = makeString((yyvsp[(10) - (10)].str)); n->remove = (yyvsp[(6) - (10)].boolean); (yyval.node) = (Node *)n; ;} break; case 1331: #line 9185 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_MATVIEW; n->relation = (yyvsp[(4) - (9)].range); n->extname = makeString((yyvsp[(9) - (9)].str)); n->remove = (yyvsp[(5) - (9)].boolean); (yyval.node) = (Node *)n; ;} break; case 1332: #line 9194 "gram.y" { AlterObjectDependsStmt *n = makeNode(AlterObjectDependsStmt); n->objectType = OBJECT_INDEX; n->relation = (yyvsp[(3) - (8)].range); n->extname = makeString((yyvsp[(8) - (8)].str)); n->remove = (yyvsp[(4) - (8)].boolean); (yyval.node) = (Node *)n; ;} break; case 1333: #line 9204 "gram.y" { (yyval.boolean) = true; ;} break; case 1334: #line 9205 "gram.y" { (yyval.boolean) = false; ;} break; case 1335: #line 9216 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_AGGREGATE; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1336: #line 9225 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_COLLATION; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1337: #line 9234 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_CONVERSION; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1338: #line 9243 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_DOMAIN; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1339: #line 9252 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_EXTENSION; n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1340: #line 9261 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FUNCTION; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1341: #line 9270 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPERATOR; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1342: #line 9279 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPCLASS; n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1343: #line 9288 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPFAMILY; n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1344: #line 9297 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_PROCEDURE; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1345: #line 9306 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_ROUTINE; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1346: #line 9315 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TABLE; n->relation = (yyvsp[(3) - (6)].range); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1347: #line 9324 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TABLE; n->relation = (yyvsp[(5) - (8)].range); n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1348: #line 9333 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_STATISTIC_EXT; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1349: #line 9342 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSPARSER; n->object = (Node *) (yyvsp[(5) - (8)].list); n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1350: #line 9351 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSDICTIONARY; n->object = (Node *) (yyvsp[(5) - (8)].list); n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1351: #line 9360 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSTEMPLATE; n->object = (Node *) (yyvsp[(5) - (8)].list); n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1352: #line 9369 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TSCONFIGURATION; n->object = (Node *) (yyvsp[(5) - (8)].list); n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1353: #line 9378 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_SEQUENCE; n->relation = (yyvsp[(3) - (6)].range); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1354: #line 9387 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_SEQUENCE; n->relation = (yyvsp[(5) - (8)].range); n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1355: #line 9396 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_VIEW; n->relation = (yyvsp[(3) - (6)].range); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1356: #line 9405 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_VIEW; n->relation = (yyvsp[(5) - (8)].range); n->newschema = (yyvsp[(8) - (8)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1357: #line 9414 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_MATVIEW; n->relation = (yyvsp[(4) - (7)].range); n->newschema = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1358: #line 9423 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_MATVIEW; n->relation = (yyvsp[(6) - (9)].range); n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1359: #line 9432 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FOREIGN_TABLE; n->relation = (yyvsp[(4) - (7)].range); n->newschema = (yyvsp[(7) - (7)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1360: #line 9441 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_FOREIGN_TABLE; n->relation = (yyvsp[(6) - (9)].range); n->newschema = (yyvsp[(9) - (9)].str); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1361: #line 9450 "gram.y" { AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_TYPE; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newschema = (yyvsp[(6) - (6)].str); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1362: #line 9468 "gram.y" { AlterOperatorStmt *n = makeNode(AlterOperatorStmt); n->opername = (yyvsp[(3) - (7)].objwithargs); n->options = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *)n; ;} break; case 1363: #line 9476 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1364: #line 9477 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1365: #line 9481 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); ;} break; case 1366: #line 9483 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *) (yyvsp[(3) - (3)].node), (yylsp[(1) - (3)])); ;} break; case 1367: #line 9488 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].typnam); ;} break; case 1368: #line 9489 "gram.y" { (yyval.node) = (Node *)makeString(pstrdup((yyvsp[(1) - (1)].keyword))); ;} break; case 1369: #line 9490 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].list); ;} break; case 1370: #line 9491 "gram.y" { (yyval.node) = (Node *)(yyvsp[(1) - (1)].value); ;} break; case 1371: #line 9492 "gram.y" { (yyval.node) = (Node *)makeString((yyvsp[(1) - (1)].str)); ;} break; case 1372: #line 9505 "gram.y" { AlterTypeStmt *n = makeNode(AlterTypeStmt); n->typeName = (yyvsp[(3) - (7)].list); n->options = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *)n; ;} break; case 1373: #line 9520 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_AGGREGATE; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1374: #line 9528 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_COLLATION; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1375: #line 9536 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_CONVERSION; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1376: #line 9544 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DATABASE; n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1377: #line 9552 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_DOMAIN; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1378: #line 9560 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FUNCTION; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1379: #line 9568 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LANGUAGE; n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); n->newowner = (yyvsp[(7) - (7)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1380: #line 9576 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_LARGEOBJECT; n->object = (Node *) (yyvsp[(4) - (7)].value); n->newowner = (yyvsp[(7) - (7)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1381: #line 9584 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPERATOR; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1382: #line 9592 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPCLASS; n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); n->newowner = (yyvsp[(9) - (9)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1383: #line 9600 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_OPFAMILY; n->object = (Node *) lcons(makeString((yyvsp[(6) - (9)].str)), (yyvsp[(4) - (9)].list)); n->newowner = (yyvsp[(9) - (9)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1384: #line 9608 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_PROCEDURE; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1385: #line 9616 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_ROUTINE; n->object = (Node *) (yyvsp[(3) - (6)].objwithargs); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1386: #line 9624 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_SCHEMA; n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1387: #line 9632 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TYPE; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1388: #line 9640 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TABLESPACE; n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1389: #line 9648 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_STATISTIC_EXT; n->object = (Node *) (yyvsp[(3) - (6)].list); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1390: #line 9656 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TSDICTIONARY; n->object = (Node *) (yyvsp[(5) - (8)].list); n->newowner = (yyvsp[(8) - (8)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1391: #line 9664 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_TSCONFIGURATION; n->object = (Node *) (yyvsp[(5) - (8)].list); n->newowner = (yyvsp[(8) - (8)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1392: #line 9672 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FDW; n->object = (Node *) makeString((yyvsp[(5) - (8)].str)); n->newowner = (yyvsp[(8) - (8)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1393: #line 9680 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_FOREIGN_SERVER; n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1394: #line 9688 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_EVENT_TRIGGER; n->object = (Node *) makeString((yyvsp[(4) - (7)].str)); n->newowner = (yyvsp[(7) - (7)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1395: #line 9696 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_PUBLICATION; n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1396: #line 9704 "gram.y" { AlterOwnerStmt *n = makeNode(AlterOwnerStmt); n->objectType = OBJECT_SUBSCRIPTION; n->object = (Node *) makeString((yyvsp[(3) - (6)].str)); n->newowner = (yyvsp[(6) - (6)].rolespec); (yyval.node) = (Node *)n; ;} break; case 1397: #line 9722 "gram.y" { CreatePublicationStmt *n = makeNode(CreatePublicationStmt); n->pubname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); if ((yyvsp[(4) - (5)].node) != NULL) { /* FOR TABLE */ if (IsA((yyvsp[(4) - (5)].node), List)) n->tables = (List *)(yyvsp[(4) - (5)].node); /* FOR ALL TABLES */ else n->for_all_tables = true; } (yyval.node) = (Node *)n; ;} break; case 1398: #line 9740 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1399: #line 9741 "gram.y" { (yyval.node) = NULL; ;} break; case 1400: #line 9746 "gram.y" { (yyval.node) = (Node *) (yyvsp[(3) - (3)].list); ;} break; case 1401: #line 9750 "gram.y" { (yyval.node) = (Node *) makeInteger(true); ;} break; case 1402: #line 9770 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 1403: #line 9777 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (6)].str); n->tables = (yyvsp[(6) - (6)].list); n->tableAction = DEFELEM_ADD; (yyval.node) = (Node *)n; ;} break; case 1404: #line 9785 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (6)].str); n->tables = (yyvsp[(6) - (6)].list); n->tableAction = DEFELEM_SET; (yyval.node) = (Node *)n; ;} break; case 1405: #line 9793 "gram.y" { AlterPublicationStmt *n = makeNode(AlterPublicationStmt); n->pubname = (yyvsp[(3) - (6)].str); n->tables = (yyvsp[(6) - (6)].list); n->tableAction = DEFELEM_DROP; (yyval.node) = (Node *)n; ;} break; case 1406: #line 9810 "gram.y" { CreateSubscriptionStmt *n = makeNode(CreateSubscriptionStmt); n->subname = (yyvsp[(3) - (8)].str); n->conninfo = (yyvsp[(5) - (8)].str); n->publication = (yyvsp[(7) - (8)].list); n->options = (yyvsp[(8) - (8)].list); (yyval.node) = (Node *)n; ;} break; case 1407: #line 9823 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].value)); ;} break; case 1408: #line 9827 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].value)); ;} break; case 1409: #line 9833 "gram.y" { (yyval.value) = makeString((yyvsp[(1) - (1)].str)); ;} break; case 1410: #line 9843 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_OPTIONS; n->subname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 1411: #line 9852 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_CONNECTION; n->subname = (yyvsp[(3) - (5)].str); n->conninfo = (yyvsp[(5) - (5)].str); (yyval.node) = (Node *)n; ;} break; case 1412: #line 9861 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_REFRESH; n->subname = (yyvsp[(3) - (6)].str); n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 1413: #line 9870 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_PUBLICATION; n->subname = (yyvsp[(3) - (7)].str); n->publication = (yyvsp[(6) - (7)].list); n->options = (yyvsp[(7) - (7)].list); (yyval.node) = (Node *)n; ;} break; case 1414: #line 9880 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_ENABLED; n->subname = (yyvsp[(3) - (4)].str); n->options = list_make1(makeDefElem("enabled", (Node *)makeInteger(true), (yylsp[(1) - (4)]))); (yyval.node) = (Node *)n; ;} break; case 1415: #line 9890 "gram.y" { AlterSubscriptionStmt *n = makeNode(AlterSubscriptionStmt); n->kind = ALTER_SUBSCRIPTION_ENABLED; n->subname = (yyvsp[(3) - (4)].str); n->options = list_make1(makeDefElem("enabled", (Node *)makeInteger(false), (yylsp[(1) - (4)]))); (yyval.node) = (Node *)n; ;} break; case 1416: #line 9908 "gram.y" { DropSubscriptionStmt *n = makeNode(DropSubscriptionStmt); n->subname = (yyvsp[(3) - (4)].str); n->missing_ok = false; n->behavior = (yyvsp[(4) - (4)].dbehavior); (yyval.node) = (Node *) n; ;} break; case 1417: #line 9916 "gram.y" { DropSubscriptionStmt *n = makeNode(DropSubscriptionStmt); n->subname = (yyvsp[(5) - (6)].str); n->missing_ok = true; n->behavior = (yyvsp[(6) - (6)].dbehavior); (yyval.node) = (Node *) n; ;} break; case 1418: #line 9934 "gram.y" { RuleStmt *n = makeNode(RuleStmt); n->replace = (yyvsp[(2) - (13)].boolean); n->relation = (yyvsp[(9) - (13)].range); n->rulename = (yyvsp[(4) - (13)].str); n->whereClause = (yyvsp[(10) - (13)].node); n->event = (yyvsp[(7) - (13)].ival); n->instead = (yyvsp[(12) - (13)].boolean); n->actions = (yyvsp[(13) - (13)].list); (yyval.node) = (Node *)n; ;} break; case 1419: #line 9948 "gram.y" { (yyval.list) = NIL; ;} break; case 1420: #line 9949 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1421: #line 9950 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1422: #line 9956 "gram.y" { if ((yyvsp[(3) - (3)].node) != NULL) (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); else (yyval.list) = (yyvsp[(1) - (3)].list); ;} break; case 1423: #line 9962 "gram.y" { if ((yyvsp[(1) - (1)].node) != NULL) (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); else (yyval.list) = NIL; ;} break; case 1429: #line 9978 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1430: #line 9979 "gram.y" { (yyval.node) = NULL; ;} break; case 1431: #line 9982 "gram.y" { (yyval.ival) = CMD_SELECT; ;} break; case 1432: #line 9983 "gram.y" { (yyval.ival) = CMD_UPDATE; ;} break; case 1433: #line 9984 "gram.y" { (yyval.ival) = CMD_DELETE; ;} break; case 1434: #line 9985 "gram.y" { (yyval.ival) = CMD_INSERT; ;} break; case 1435: #line 9989 "gram.y" { (yyval.boolean) = true; ;} break; case 1436: #line 9990 "gram.y" { (yyval.boolean) = false; ;} break; case 1437: #line 9991 "gram.y" { (yyval.boolean) = false; ;} break; case 1438: #line 10004 "gram.y" { NotifyStmt *n = makeNode(NotifyStmt); n->conditionname = (yyvsp[(2) - (3)].str); n->payload = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 1439: #line 10013 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 1440: #line 10014 "gram.y" { (yyval.str) = NULL; ;} break; case 1441: #line 10018 "gram.y" { ListenStmt *n = makeNode(ListenStmt); n->conditionname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; ;} break; case 1442: #line 10027 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->conditionname = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; ;} break; case 1443: #line 10033 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->conditionname = NULL; (yyval.node) = (Node *)n; ;} break; case 1444: #line 10052 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *)n; ;} break; case 1445: #line 10060 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_BEGIN; n->options = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; ;} break; case 1446: #line 10067 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_START; n->options = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *)n; ;} break; case 1447: #line 10074 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *)n; ;} break; case 1448: #line 10082 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *)n; ;} break; case 1449: #line 10090 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK; n->options = NIL; n->chain = (yyvsp[(3) - (3)].boolean); (yyval.node) = (Node *)n; ;} break; case 1450: #line 10098 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_SAVEPOINT; n->savepoint_name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; ;} break; case 1451: #line 10105 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->savepoint_name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 1452: #line 10112 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_RELEASE; n->savepoint_name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; ;} break; case 1453: #line 10119 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->savepoint_name = (yyvsp[(5) - (5)].str); (yyval.node) = (Node *)n; ;} break; case 1454: #line 10126 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_TO; n->savepoint_name = (yyvsp[(4) - (4)].str); (yyval.node) = (Node *)n; ;} break; case 1455: #line 10133 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_PREPARE; n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 1456: #line 10140 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_COMMIT_PREPARED; n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 1457: #line 10147 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->kind = TRANS_STMT_ROLLBACK_PREPARED; n->gid = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *)n; ;} break; case 1458: #line 10155 "gram.y" {;} break; case 1459: #line 10156 "gram.y" {;} break; case 1460: #line 10157 "gram.y" {;} break; case 1461: #line 10162 "gram.y" { (yyval.defelt) = makeDefElem("transaction_isolation", makeStringConst((yyvsp[(3) - (3)].str), (yylsp[(3) - (3)])), (yylsp[(1) - (3)])); ;} break; case 1462: #line 10165 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", makeIntConst(true, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; case 1463: #line 10168 "gram.y" { (yyval.defelt) = makeDefElem("transaction_read_only", makeIntConst(false, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; case 1464: #line 10171 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", makeIntConst(true, (yylsp[(1) - (1)])), (yylsp[(1) - (1)])); ;} break; case 1465: #line 10174 "gram.y" { (yyval.defelt) = makeDefElem("transaction_deferrable", makeIntConst(false, (yylsp[(1) - (2)])), (yylsp[(1) - (2)])); ;} break; case 1466: #line 10181 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1467: #line 10183 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1468: #line 10185 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1470: #line 10191 "gram.y" { (yyval.list) = NIL; ;} break; case 1471: #line 10195 "gram.y" { (yyval.boolean) = true; ;} break; case 1472: #line 10196 "gram.y" { (yyval.boolean) = false; ;} break; case 1473: #line 10197 "gram.y" { (yyval.boolean) = false; ;} break; case 1474: #line 10211 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->view = (yyvsp[(4) - (9)].range); n->view->relpersistence = (yyvsp[(2) - (9)].ival); n->aliases = (yyvsp[(5) - (9)].list); n->query = (yyvsp[(8) - (9)].node); n->replace = false; n->options = (yyvsp[(6) - (9)].list); n->withCheckOption = (yyvsp[(9) - (9)].ival); (yyval.node) = (Node *) n; ;} break; case 1475: #line 10224 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->view = (yyvsp[(6) - (11)].range); n->view->relpersistence = (yyvsp[(4) - (11)].ival); n->aliases = (yyvsp[(7) - (11)].list); n->query = (yyvsp[(10) - (11)].node); n->replace = true; n->options = (yyvsp[(8) - (11)].list); n->withCheckOption = (yyvsp[(11) - (11)].ival); (yyval.node) = (Node *) n; ;} break; case 1476: #line 10237 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->view = (yyvsp[(5) - (12)].range); n->view->relpersistence = (yyvsp[(2) - (12)].ival); n->aliases = (yyvsp[(7) - (12)].list); n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[(11) - (12)].node)); n->replace = false; n->options = (yyvsp[(9) - (12)].list); n->withCheckOption = (yyvsp[(12) - (12)].ival); if (n->withCheckOption != NO_CHECK_OPTION) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("WITH CHECK OPTION not supported on recursive views"), parser_errposition((yylsp[(12) - (12)])))); (yyval.node) = (Node *) n; ;} break; case 1477: #line 10255 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->view = (yyvsp[(7) - (14)].range); n->view->relpersistence = (yyvsp[(4) - (14)].ival); n->aliases = (yyvsp[(9) - (14)].list); n->query = makeRecursiveViewSelect(n->view->relname, n->aliases, (yyvsp[(13) - (14)].node)); n->replace = true; n->options = (yyvsp[(11) - (14)].list); n->withCheckOption = (yyvsp[(14) - (14)].ival); if (n->withCheckOption != NO_CHECK_OPTION) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("WITH CHECK OPTION not supported on recursive views"), parser_errposition((yylsp[(14) - (14)])))); (yyval.node) = (Node *) n; ;} break; case 1478: #line 10274 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; ;} break; case 1479: #line 10275 "gram.y" { (yyval.ival) = CASCADED_CHECK_OPTION; ;} break; case 1480: #line 10276 "gram.y" { (yyval.ival) = LOCAL_CHECK_OPTION; ;} break; case 1481: #line 10277 "gram.y" { (yyval.ival) = NO_CHECK_OPTION; ;} break; case 1482: #line 10288 "gram.y" { LoadStmt *n = makeNode(LoadStmt); n->filename = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *)n; ;} break; case 1483: #line 10304 "gram.y" { CreatedbStmt *n = makeNode(CreatedbStmt); n->dbname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 1484: #line 10313 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1485: #line 10314 "gram.y" { (yyval.list) = NIL; ;} break; case 1486: #line 10318 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1487: #line 10319 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1488: #line 10324 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)makeInteger((yyvsp[(3) - (3)].ival)), (yylsp[(1) - (3)])); ;} break; case 1489: #line 10328 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), (Node *)makeString((yyvsp[(3) - (3)].str)), (yylsp[(1) - (3)])); ;} break; case 1490: #line 10332 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (3)].str), NULL, (yylsp[(1) - (3)])); ;} break; case 1491: #line 10349 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1492: #line 10350 "gram.y" { (yyval.str) = pstrdup("connection_limit"); ;} break; case 1493: #line 10351 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1494: #line 10352 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1495: #line 10353 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1496: #line 10354 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1497: #line 10355 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 1498: #line 10362 "gram.y" {;} break; case 1499: #line 10363 "gram.y" {;} break; case 1500: #line 10375 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[(3) - (5)].str); n->options = (yyvsp[(5) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 1501: #line 10382 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[(3) - (4)].str); n->options = (yyvsp[(4) - (4)].list); (yyval.node) = (Node *)n; ;} break; case 1502: #line 10389 "gram.y" { AlterDatabaseStmt *n = makeNode(AlterDatabaseStmt); n->dbname = (yyvsp[(3) - (6)].str); n->options = list_make1(makeDefElem("tablespace", (Node *)makeString((yyvsp[(6) - (6)].str)), (yylsp[(6) - (6)]))); (yyval.node) = (Node *)n; ;} break; case 1503: #line 10400 "gram.y" { AlterDatabaseSetStmt *n = makeNode(AlterDatabaseSetStmt); n->dbname = (yyvsp[(3) - (4)].str); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *)n; ;} break; case 1504: #line 10417 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = (yyvsp[(3) - (3)].str); n->missing_ok = false; n->options = NULL; (yyval.node) = (Node *)n; ;} break; case 1505: #line 10425 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = (yyvsp[(5) - (5)].str); n->missing_ok = true; n->options = NULL; (yyval.node) = (Node *)n; ;} break; case 1506: #line 10433 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = (yyvsp[(3) - (7)].str); n->missing_ok = false; n->options = (yyvsp[(6) - (7)].list); (yyval.node) = (Node *)n; ;} break; case 1507: #line 10441 "gram.y" { DropdbStmt *n = makeNode(DropdbStmt); n->dbname = (yyvsp[(5) - (9)].str); n->missing_ok = true; n->options = (yyvsp[(8) - (9)].list); (yyval.node) = (Node *)n; ;} break; case 1508: #line 10452 "gram.y" { (yyval.list) = list_make1((Node *) (yyvsp[(1) - (1)].defelt)); ;} break; case 1509: #line 10456 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (Node *) (yyvsp[(3) - (3)].defelt)); ;} break; case 1510: #line 10467 "gram.y" { (yyval.defelt) = makeDefElem("force", NULL, (yylsp[(1) - (1)])); ;} break; case 1511: #line 10479 "gram.y" { AlterCollationStmt *n = makeNode(AlterCollationStmt); n->collname = (yyvsp[(3) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 1512: #line 10496 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *)n; ;} break; case 1513: #line 10502 "gram.y" { AlterSystemStmt *n = makeNode(AlterSystemStmt); n->setstmt = (yyvsp[(4) - (4)].vsetstmt); (yyval.node) = (Node *)n; ;} break; case 1514: #line 10518 "gram.y" { CreateDomainStmt *n = makeNode(CreateDomainStmt); n->domainname = (yyvsp[(3) - (6)].list); n->typeName = (yyvsp[(5) - (6)].typnam); SplitColQualList((yyvsp[(6) - (6)].list), &n->constraints, &n->collClause, yyscanner); (yyval.node) = (Node *)n; ;} break; case 1515: #line 10531 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'T'; n->typeName = (yyvsp[(3) - (4)].list); n->def = (yyvsp[(4) - (4)].node); (yyval.node) = (Node *)n; ;} break; case 1516: #line 10540 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'N'; n->typeName = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 1517: #line 10548 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'O'; n->typeName = (yyvsp[(3) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 1518: #line 10556 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'C'; n->typeName = (yyvsp[(3) - (5)].list); n->def = (yyvsp[(5) - (5)].node); (yyval.node) = (Node *)n; ;} break; case 1519: #line 10565 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'X'; n->typeName = (yyvsp[(3) - (7)].list); n->name = (yyvsp[(6) - (7)].str); n->behavior = (yyvsp[(7) - (7)].dbehavior); n->missing_ok = false; (yyval.node) = (Node *)n; ;} break; case 1520: #line 10576 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'X'; n->typeName = (yyvsp[(3) - (9)].list); n->name = (yyvsp[(8) - (9)].str); n->behavior = (yyvsp[(9) - (9)].dbehavior); n->missing_ok = true; (yyval.node) = (Node *)n; ;} break; case 1521: #line 10587 "gram.y" { AlterDomainStmt *n = makeNode(AlterDomainStmt); n->subtype = 'V'; n->typeName = (yyvsp[(3) - (6)].list); n->name = (yyvsp[(6) - (6)].str); (yyval.node) = (Node *)n; ;} break; case 1522: #line 10596 "gram.y" {;} break; case 1523: #line 10597 "gram.y" {;} break; case 1524: #line 10609 "gram.y" { AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt); n->dictname = (yyvsp[(5) - (6)].list); n->options = (yyvsp[(6) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 1525: #line 10619 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_ADD_MAPPING; n->cfgname = (yyvsp[(5) - (11)].list); n->tokentype = (yyvsp[(9) - (11)].list); n->dicts = (yyvsp[(11) - (11)].list); n->override = false; n->replace = false; (yyval.node) = (Node*)n; ;} break; case 1526: #line 10630 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN; n->cfgname = (yyvsp[(5) - (11)].list); n->tokentype = (yyvsp[(9) - (11)].list); n->dicts = (yyvsp[(11) - (11)].list); n->override = true; n->replace = false; (yyval.node) = (Node*)n; ;} break; case 1527: #line 10641 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_REPLACE_DICT; n->cfgname = (yyvsp[(5) - (11)].list); n->tokentype = NIL; n->dicts = list_make2((yyvsp[(9) - (11)].list),(yyvsp[(11) - (11)].list)); n->override = false; n->replace = true; (yyval.node) = (Node*)n; ;} break; case 1528: #line 10652 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN; n->cfgname = (yyvsp[(5) - (13)].list); n->tokentype = (yyvsp[(9) - (13)].list); n->dicts = list_make2((yyvsp[(11) - (13)].list),(yyvsp[(13) - (13)].list)); n->override = false; n->replace = true; (yyval.node) = (Node*)n; ;} break; case 1529: #line 10663 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_DROP_MAPPING; n->cfgname = (yyvsp[(5) - (9)].list); n->tokentype = (yyvsp[(9) - (9)].list); n->missing_ok = false; (yyval.node) = (Node*)n; ;} break; case 1530: #line 10672 "gram.y" { AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt); n->kind = ALTER_TSCONFIG_DROP_MAPPING; n->cfgname = (yyvsp[(5) - (11)].list); n->tokentype = (yyvsp[(11) - (11)].list); n->missing_ok = true; (yyval.node) = (Node*)n; ;} break; case 1531: #line 10683 "gram.y" {;} break; case 1532: #line 10684 "gram.y" {;} break; case 1533: #line 10700 "gram.y" { CreateConversionStmt *n = makeNode(CreateConversionStmt); n->conversion_name = (yyvsp[(4) - (10)].list); n->for_encoding_name = (yyvsp[(6) - (10)].str); n->to_encoding_name = (yyvsp[(8) - (10)].str); n->func_name = (yyvsp[(10) - (10)].list); n->def = (yyvsp[(2) - (10)].boolean); (yyval.node) = (Node *)n; ;} break; case 1534: #line 10722 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = (yyvsp[(3) - (4)].range); n->indexname = (yyvsp[(4) - (4)].str); n->options = 0; if ((yyvsp[(2) - (4)].boolean)) n->options |= CLUOPT_VERBOSE; (yyval.node) = (Node*)n; ;} break; case 1535: #line 10732 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = NULL; n->indexname = NULL; n->options = 0; if ((yyvsp[(2) - (2)].boolean)) n->options |= CLUOPT_VERBOSE; (yyval.node) = (Node*)n; ;} break; case 1536: #line 10743 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relation = (yyvsp[(5) - (5)].range); n->indexname = (yyvsp[(3) - (5)].str); n->options = 0; if ((yyvsp[(2) - (5)].boolean)) n->options |= CLUOPT_VERBOSE; (yyval.node) = (Node*)n; ;} break; case 1537: #line 10755 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].str); ;} break; case 1538: #line 10756 "gram.y" { (yyval.str) = NULL; ;} break; case 1539: #line 10769 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = NIL; if ((yyvsp[(2) - (6)].boolean)) n->options = lappend(n->options, makeDefElem("full", NULL, (yylsp[(2) - (6)]))); if ((yyvsp[(3) - (6)].boolean)) n->options = lappend(n->options, makeDefElem("freeze", NULL, (yylsp[(3) - (6)]))); if ((yyvsp[(4) - (6)].boolean)) n->options = lappend(n->options, makeDefElem("verbose", NULL, (yylsp[(4) - (6)]))); if ((yyvsp[(5) - (6)].boolean)) n->options = lappend(n->options, makeDefElem("analyze", NULL, (yylsp[(5) - (6)]))); n->rels = (yyvsp[(6) - (6)].list); n->is_vacuumcmd = true; (yyval.node) = (Node *)n; ;} break; case 1540: #line 10789 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = (yyvsp[(3) - (5)].list); n->rels = (yyvsp[(5) - (5)].list); n->is_vacuumcmd = true; (yyval.node) = (Node *) n; ;} break; case 1541: #line 10799 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = NIL; if ((yyvsp[(2) - (3)].boolean)) n->options = lappend(n->options, makeDefElem("verbose", NULL, (yylsp[(2) - (3)]))); n->rels = (yyvsp[(3) - (3)].list); n->is_vacuumcmd = false; (yyval.node) = (Node *)n; ;} break; case 1542: #line 10810 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->options = (yyvsp[(3) - (5)].list); n->rels = (yyvsp[(5) - (5)].list); n->is_vacuumcmd = false; (yyval.node) = (Node *) n; ;} break; case 1543: #line 10821 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1544: #line 10825 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1545: #line 10831 "gram.y" {;} break; case 1546: #line 10832 "gram.y" {;} break; case 1547: #line 10837 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1548: #line 10843 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1549: #line 10844 "gram.y" { (yyval.str) = "analyze"; ;} break; case 1550: #line 10848 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 1551: #line 10849 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].value); ;} break; case 1552: #line 10850 "gram.y" { (yyval.node) = NULL; ;} break; case 1553: #line 10854 "gram.y" { (yyval.boolean) = true; ;} break; case 1554: #line 10855 "gram.y" { (yyval.boolean) = false; ;} break; case 1555: #line 10859 "gram.y" { (yyval.boolean) = true; ;} break; case 1556: #line 10860 "gram.y" { (yyval.boolean) = false; ;} break; case 1557: #line 10863 "gram.y" { (yyval.boolean) = true; ;} break; case 1558: #line 10864 "gram.y" { (yyval.boolean) = false; ;} break; case 1559: #line 10867 "gram.y" { (yyval.boolean) = true; ;} break; case 1560: #line 10868 "gram.y" { (yyval.boolean) = false; ;} break; case 1561: #line 10872 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1562: #line 10873 "gram.y" { (yyval.list) = NIL; ;} break; case 1563: #line 10878 "gram.y" { (yyval.node) = (Node *) makeVacuumRelation((yyvsp[(1) - (2)].range), InvalidOid, (yyvsp[(2) - (2)].list)); ;} break; case 1564: #line 10885 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1565: #line 10887 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1566: #line 10891 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1567: #line 10892 "gram.y" { (yyval.list) = NIL; ;} break; case 1568: #line 10906 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(2) - (2)].node); n->options = NIL; (yyval.node) = (Node *) n; ;} break; case 1569: #line 10913 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(4) - (4)].node); n->options = list_make1(makeDefElem("analyze", NULL, (yylsp[(2) - (4)]))); if ((yyvsp[(3) - (4)].boolean)) n->options = lappend(n->options, makeDefElem("verbose", NULL, (yylsp[(3) - (4)]))); (yyval.node) = (Node *) n; ;} break; case 1570: #line 10923 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(3) - (3)].node); n->options = list_make1(makeDefElem("verbose", NULL, (yylsp[(2) - (3)]))); (yyval.node) = (Node *) n; ;} break; case 1571: #line 10930 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->query = (yyvsp[(5) - (5)].node); n->options = (yyvsp[(3) - (5)].list); (yyval.node) = (Node *) n; ;} break; case 1581: #line 10952 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1582: #line 10956 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].defelt)); ;} break; case 1583: #line 10963 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1584: #line 10969 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1585: #line 10970 "gram.y" { (yyval.str) = "analyze"; ;} break; case 1586: #line 10974 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(1) - (1)].str)); ;} break; case 1587: #line 10975 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].value); ;} break; case 1588: #line 10976 "gram.y" { (yyval.node) = NULL; ;} break; case 1589: #line 10987 "gram.y" { PrepareStmt *n = makeNode(PrepareStmt); n->name = (yyvsp[(2) - (5)].str); n->argtypes = (yyvsp[(3) - (5)].list); n->query = (yyvsp[(5) - (5)].node); (yyval.node) = (Node *) n; ;} break; case 1590: #line 10996 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1591: #line 10997 "gram.y" { (yyval.list) = NIL; ;} break; case 1596: #line 11015 "gram.y" { ExecuteStmt *n = makeNode(ExecuteStmt); n->name = (yyvsp[(2) - (3)].str); n->params = (yyvsp[(3) - (3)].list); (yyval.node) = (Node *) n; ;} break; case 1597: #line 11023 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ExecuteStmt *n = makeNode(ExecuteStmt); n->name = (yyvsp[(7) - (9)].str); n->params = (yyvsp[(8) - (9)].list); ctas->query = (Node *) n; ctas->into = (yyvsp[(4) - (9)].into); ctas->relkind = OBJECT_TABLE; ctas->is_select_into = false; ctas->if_not_exists = false; /* cram additional flags into the IntoClause */ (yyvsp[(4) - (9)].into)->rel->relpersistence = (yyvsp[(2) - (9)].ival); (yyvsp[(4) - (9)].into)->skipData = !((yyvsp[(9) - (9)].boolean)); (yyval.node) = (Node *) ctas; ;} break; case 1598: #line 11040 "gram.y" { CreateTableAsStmt *ctas = makeNode(CreateTableAsStmt); ExecuteStmt *n = makeNode(ExecuteStmt); n->name = (yyvsp[(10) - (12)].str); n->params = (yyvsp[(11) - (12)].list); ctas->query = (Node *) n; ctas->into = (yyvsp[(7) - (12)].into); ctas->relkind = OBJECT_TABLE; ctas->is_select_into = false; ctas->if_not_exists = true; /* cram additional flags into the IntoClause */ (yyvsp[(7) - (12)].into)->rel->relpersistence = (yyvsp[(2) - (12)].ival); (yyvsp[(7) - (12)].into)->skipData = !((yyvsp[(12) - (12)].boolean)); (yyval.node) = (Node *) ctas; ;} break; case 1599: #line 11057 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1600: #line 11058 "gram.y" { (yyval.list) = NIL; ;} break; case 1601: #line 11069 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = (yyvsp[(2) - (2)].str); (yyval.node) = (Node *) n; ;} break; case 1602: #line 11075 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = (yyvsp[(3) - (3)].str); (yyval.node) = (Node *) n; ;} break; case 1603: #line 11081 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 1604: #line 11087 "gram.y" { DeallocateStmt *n = makeNode(DeallocateStmt); n->name = NULL; (yyval.node) = (Node *) n; ;} break; case 1605: #line 11104 "gram.y" { (yyvsp[(5) - (7)].istmt)->relation = (yyvsp[(4) - (7)].range); (yyvsp[(5) - (7)].istmt)->onConflictClause = (yyvsp[(6) - (7)].onconflict); (yyvsp[(5) - (7)].istmt)->returningList = (yyvsp[(7) - (7)].list); (yyvsp[(5) - (7)].istmt)->withClause = (yyvsp[(1) - (7)].with); (yyval.node) = (Node *) (yyvsp[(5) - (7)].istmt); ;} break; case 1606: #line 11121 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; case 1607: #line 11125 "gram.y" { (yyvsp[(1) - (3)].range)->alias = makeAlias((yyvsp[(3) - (3)].str), NIL); (yyval.range) = (yyvsp[(1) - (3)].range); ;} break; case 1608: #line 11133 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; (yyval.istmt)->selectStmt = (yyvsp[(1) - (1)].node); ;} break; case 1609: #line 11139 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; (yyval.istmt)->override = (yyvsp[(2) - (4)].ival); (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); ;} break; case 1610: #line 11146 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = (yyvsp[(2) - (4)].list); (yyval.istmt)->selectStmt = (yyvsp[(4) - (4)].node); ;} break; case 1611: #line 11152 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = (yyvsp[(2) - (7)].list); (yyval.istmt)->override = (yyvsp[(5) - (7)].ival); (yyval.istmt)->selectStmt = (yyvsp[(7) - (7)].node); ;} break; case 1612: #line 11159 "gram.y" { (yyval.istmt) = makeNode(InsertStmt); (yyval.istmt)->cols = NIL; (yyval.istmt)->selectStmt = NULL; ;} break; case 1613: #line 11167 "gram.y" { (yyval.ival) = OVERRIDING_USER_VALUE; ;} break; case 1614: #line 11168 "gram.y" { (yyval.ival) = OVERRIDING_SYSTEM_VALUE; ;} break; case 1615: #line 11173 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 1616: #line 11175 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 1617: #line 11180 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(1) - (2)].str); (yyval.target)->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.target)->val = NULL; (yyval.target)->location = (yylsp[(1) - (2)]); ;} break; case 1618: #line 11191 "gram.y" { (yyval.onconflict) = makeNode(OnConflictClause); (yyval.onconflict)->action = ONCONFLICT_UPDATE; (yyval.onconflict)->infer = (yyvsp[(3) - (8)].infer); (yyval.onconflict)->targetList = (yyvsp[(7) - (8)].list); (yyval.onconflict)->whereClause = (yyvsp[(8) - (8)].node); (yyval.onconflict)->location = (yylsp[(1) - (8)]); ;} break; case 1619: #line 11201 "gram.y" { (yyval.onconflict) = makeNode(OnConflictClause); (yyval.onconflict)->action = ONCONFLICT_NOTHING; (yyval.onconflict)->infer = (yyvsp[(3) - (5)].infer); (yyval.onconflict)->targetList = NIL; (yyval.onconflict)->whereClause = NULL; (yyval.onconflict)->location = (yylsp[(1) - (5)]); ;} break; case 1620: #line 11210 "gram.y" { (yyval.onconflict) = NULL; ;} break; case 1621: #line 11217 "gram.y" { (yyval.infer) = makeNode(InferClause); (yyval.infer)->indexElems = (yyvsp[(2) - (4)].list); (yyval.infer)->whereClause = (yyvsp[(4) - (4)].node); (yyval.infer)->conname = NULL; (yyval.infer)->location = (yylsp[(1) - (4)]); ;} break; case 1622: #line 11226 "gram.y" { (yyval.infer) = makeNode(InferClause); (yyval.infer)->indexElems = NIL; (yyval.infer)->whereClause = NULL; (yyval.infer)->conname = (yyvsp[(3) - (3)].str); (yyval.infer)->location = (yylsp[(1) - (3)]); ;} break; case 1623: #line 11234 "gram.y" { (yyval.infer) = NULL; ;} break; case 1624: #line 11240 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1625: #line 11241 "gram.y" { (yyval.list) = NIL; ;} break; case 1626: #line 11254 "gram.y" { DeleteStmt *n = makeNode(DeleteStmt); n->relation = (yyvsp[(4) - (7)].range); n->usingClause = (yyvsp[(5) - (7)].list); n->whereClause = (yyvsp[(6) - (7)].node); n->returningList = (yyvsp[(7) - (7)].list); n->withClause = (yyvsp[(1) - (7)].with); (yyval.node) = (Node *)n; ;} break; case 1627: #line 11266 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1628: #line 11267 "gram.y" { (yyval.list) = NIL; ;} break; case 1629: #line 11279 "gram.y" { LockStmt *n = makeNode(LockStmt); n->relations = (yyvsp[(3) - (5)].list); n->mode = (yyvsp[(4) - (5)].ival); n->nowait = (yyvsp[(5) - (5)].boolean); (yyval.node) = (Node *)n; ;} break; case 1630: #line 11289 "gram.y" { (yyval.ival) = (yyvsp[(2) - (3)].ival); ;} break; case 1631: #line 11290 "gram.y" { (yyval.ival) = AccessExclusiveLock; ;} break; case 1632: #line 11293 "gram.y" { (yyval.ival) = AccessShareLock; ;} break; case 1633: #line 11294 "gram.y" { (yyval.ival) = RowShareLock; ;} break; case 1634: #line 11295 "gram.y" { (yyval.ival) = RowExclusiveLock; ;} break; case 1635: #line 11296 "gram.y" { (yyval.ival) = ShareUpdateExclusiveLock; ;} break; case 1636: #line 11297 "gram.y" { (yyval.ival) = ShareLock; ;} break; case 1637: #line 11298 "gram.y" { (yyval.ival) = ShareRowExclusiveLock; ;} break; case 1638: #line 11299 "gram.y" { (yyval.ival) = ExclusiveLock; ;} break; case 1639: #line 11300 "gram.y" { (yyval.ival) = AccessExclusiveLock; ;} break; case 1640: #line 11303 "gram.y" { (yyval.boolean) = true; ;} break; case 1641: #line 11304 "gram.y" { (yyval.boolean) = false; ;} break; case 1642: #line 11308 "gram.y" { (yyval.ival) = LockWaitError; ;} break; case 1643: #line 11309 "gram.y" { (yyval.ival) = LockWaitSkip; ;} break; case 1644: #line 11310 "gram.y" { (yyval.ival) = LockWaitBlock; ;} break; case 1645: #line 11326 "gram.y" { UpdateStmt *n = makeNode(UpdateStmt); n->relation = (yyvsp[(3) - (8)].range); n->targetList = (yyvsp[(5) - (8)].list); n->fromClause = (yyvsp[(6) - (8)].list); n->whereClause = (yyvsp[(7) - (8)].node); n->returningList = (yyvsp[(8) - (8)].list); n->withClause = (yyvsp[(1) - (8)].with); (yyval.node) = (Node *)n; ;} break; case 1646: #line 11339 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1647: #line 11340 "gram.y" { (yyval.list) = list_concat((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].list)); ;} break; case 1648: #line 11345 "gram.y" { (yyvsp[(1) - (3)].target)->val = (Node *) (yyvsp[(3) - (3)].node); (yyval.list) = list_make1((yyvsp[(1) - (3)].target)); ;} break; case 1649: #line 11350 "gram.y" { int ncolumns = list_length((yyvsp[(2) - (5)].list)); int i = 1; ListCell *col_cell; /* Create a MultiAssignRef source for each target */ foreach(col_cell, (yyvsp[(2) - (5)].list)) { ResTarget *res_col = (ResTarget *) lfirst(col_cell); MultiAssignRef *r = makeNode(MultiAssignRef); r->source = (Node *) (yyvsp[(5) - (5)].node); r->colno = i; r->ncolumns = ncolumns; res_col->val = (Node *) r; i++; } (yyval.list) = (yyvsp[(2) - (5)].list); ;} break; case 1650: #line 11374 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(1) - (2)].str); (yyval.target)->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.target)->val = NULL; /* upper production sets this */ (yyval.target)->location = (yylsp[(1) - (2)]); ;} break; case 1651: #line 11384 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 1652: #line 11385 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].target)); ;} break; case 1653: #line 11396 "gram.y" { DeclareCursorStmt *n = makeNode(DeclareCursorStmt); n->portalname = (yyvsp[(2) - (7)].str); /* currently we always set FAST_PLAN option */ n->options = (yyvsp[(3) - (7)].ival) | (yyvsp[(5) - (7)].ival) | CURSOR_OPT_FAST_PLAN; n->query = (yyvsp[(7) - (7)].node); (yyval.node) = (Node *)n; ;} break; case 1654: #line 11406 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 1655: #line 11409 "gram.y" { (yyval.ival) = 0; ;} break; case 1656: #line 11410 "gram.y" { (yyval.ival) = (yyvsp[(1) - (3)].ival) | CURSOR_OPT_NO_SCROLL; ;} break; case 1657: #line 11411 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_SCROLL; ;} break; case 1658: #line 11412 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_BINARY; ;} break; case 1659: #line 11413 "gram.y" { (yyval.ival) = (yyvsp[(1) - (2)].ival) | CURSOR_OPT_INSENSITIVE; ;} break; case 1660: #line 11416 "gram.y" { (yyval.ival) = 0; ;} break; case 1661: #line 11417 "gram.y" { (yyval.ival) = CURSOR_OPT_HOLD; ;} break; case 1662: #line 11418 "gram.y" { (yyval.ival) = 0; ;} break; case 1665: #line 11471 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 1666: #line 11472 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 1667: #line 11487 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1668: #line 11489 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list), NIL, NULL, NULL, yyscanner); (yyval.node) = (yyvsp[(1) - (2)].node); ;} break; case 1669: #line 11496 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(3) - (4)].list), (yyvsp[(4) - (4)].selectlimit), NULL, yyscanner); (yyval.node) = (yyvsp[(1) - (4)].node); ;} break; case 1670: #line 11504 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].list), (yyvsp[(4) - (4)].list), (yyvsp[(3) - (4)].selectlimit), NULL, yyscanner); (yyval.node) = (yyvsp[(1) - (4)].node); ;} break; case 1671: #line 11512 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(2) - (2)].node), NULL, NIL, NULL, (yyvsp[(1) - (2)].with), yyscanner); (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1672: #line 11520 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].list), NIL, NULL, (yyvsp[(1) - (3)].with), yyscanner); (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 1673: #line 11528 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(4) - (5)].list), (yyvsp[(5) - (5)].selectlimit), (yyvsp[(1) - (5)].with), yyscanner); (yyval.node) = (yyvsp[(2) - (5)].node); ;} break; case 1674: #line 11536 "gram.y" { insertSelectOptions((SelectStmt *) (yyvsp[(2) - (5)].node), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list), (yyvsp[(4) - (5)].selectlimit), (yyvsp[(1) - (5)].with), yyscanner); (yyval.node) = (yyvsp[(2) - (5)].node); ;} break; case 1675: #line 11546 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1676: #line 11547 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1677: #line 11577 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->targetList = (yyvsp[(3) - (9)].list); n->intoClause = (yyvsp[(4) - (9)].into); n->fromClause = (yyvsp[(5) - (9)].list); n->whereClause = (yyvsp[(6) - (9)].node); n->groupClause = (yyvsp[(7) - (9)].list); n->havingClause = (yyvsp[(8) - (9)].node); n->windowClause = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *)n; ;} break; case 1678: #line 11591 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->distinctClause = (yyvsp[(2) - (9)].list); n->targetList = (yyvsp[(3) - (9)].list); n->intoClause = (yyvsp[(4) - (9)].into); n->fromClause = (yyvsp[(5) - (9)].list); n->whereClause = (yyvsp[(6) - (9)].node); n->groupClause = (yyvsp[(7) - (9)].list); n->havingClause = (yyvsp[(8) - (9)].node); n->windowClause = (yyvsp[(9) - (9)].list); (yyval.node) = (Node *)n; ;} break; case 1679: #line 11603 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1680: #line 11605 "gram.y" { /* same as SELECT * FROM relation_expr */ ColumnRef *cr = makeNode(ColumnRef); ResTarget *rt = makeNode(ResTarget); SelectStmt *n = makeNode(SelectStmt); cr->fields = list_make1(makeNode(A_Star)); cr->location = -1; rt->name = NULL; rt->indirection = NIL; rt->val = (Node *)cr; rt->location = -1; n->targetList = list_make1(rt); n->fromClause = list_make1((yyvsp[(2) - (2)].range)); (yyval.node) = (Node *)n; ;} break; case 1681: #line 11624 "gram.y" { (yyval.node) = makeSetOp(SETOP_UNION, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; case 1682: #line 11628 "gram.y" { (yyval.node) = makeSetOp(SETOP_INTERSECT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; case 1683: #line 11632 "gram.y" { (yyval.node) = makeSetOp(SETOP_EXCEPT, (yyvsp[(3) - (4)].boolean), (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; case 1684: #line 11649 "gram.y" { (yyval.with) = makeNode(WithClause); (yyval.with)->ctes = (yyvsp[(2) - (2)].list); (yyval.with)->recursive = false; (yyval.with)->location = (yylsp[(1) - (2)]); ;} break; case 1685: #line 11656 "gram.y" { (yyval.with) = makeNode(WithClause); (yyval.with)->ctes = (yyvsp[(2) - (2)].list); (yyval.with)->recursive = false; (yyval.with)->location = (yylsp[(1) - (2)]); ;} break; case 1686: #line 11663 "gram.y" { (yyval.with) = makeNode(WithClause); (yyval.with)->ctes = (yyvsp[(3) - (3)].list); (yyval.with)->recursive = true; (yyval.with)->location = (yylsp[(1) - (3)]); ;} break; case 1687: #line 11672 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1688: #line 11673 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1689: #line 11677 "gram.y" { CommonTableExpr *n = makeNode(CommonTableExpr); n->ctename = (yyvsp[(1) - (7)].str); n->aliascolnames = (yyvsp[(2) - (7)].list); n->ctematerialized = (yyvsp[(4) - (7)].ival); n->ctequery = (yyvsp[(6) - (7)].node); n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *) n; ;} break; case 1690: #line 11689 "gram.y" { (yyval.ival) = CTEMaterializeAlways; ;} break; case 1691: #line 11690 "gram.y" { (yyval.ival) = CTEMaterializeNever; ;} break; case 1692: #line 11691 "gram.y" { (yyval.ival) = CTEMaterializeDefault; ;} break; case 1693: #line 11695 "gram.y" { (yyval.with) = (yyvsp[(1) - (1)].with); ;} break; case 1694: #line 11696 "gram.y" { (yyval.with) = NULL; ;} break; case 1695: #line 11701 "gram.y" { (yyval.into) = makeNode(IntoClause); (yyval.into)->rel = (yyvsp[(2) - (2)].range); (yyval.into)->colNames = NIL; (yyval.into)->options = NIL; (yyval.into)->onCommit = ONCOMMIT_NOOP; (yyval.into)->tableSpaceName = NULL; (yyval.into)->viewQuery = NULL; (yyval.into)->skipData = false; ;} break; case 1696: #line 11712 "gram.y" { (yyval.into) = NULL; ;} break; case 1697: #line 11721 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1698: #line 11726 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1699: #line 11731 "gram.y" { (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1700: #line 11736 "gram.y" { (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1701: #line 11741 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), parser_errposition((yylsp[(1) - (4)])))); (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1702: #line 11749 "gram.y" { ereport(WARNING, (errmsg("GLOBAL is deprecated in temporary table creation"), parser_errposition((yylsp[(1) - (4)])))); (yyval.range) = (yyvsp[(4) - (4)].range); (yyval.range)->relpersistence = RELPERSISTENCE_TEMP; ;} break; case 1703: #line 11757 "gram.y" { (yyval.range) = (yyvsp[(3) - (3)].range); (yyval.range)->relpersistence = RELPERSISTENCE_UNLOGGED; ;} break; case 1704: #line 11762 "gram.y" { (yyval.range) = (yyvsp[(2) - (2)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; ;} break; case 1705: #line 11767 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); (yyval.range)->relpersistence = RELPERSISTENCE_PERMANENT; ;} break; case 1706: #line 11773 "gram.y" {;} break; case 1707: #line 11774 "gram.y" {;} break; case 1708: #line 11778 "gram.y" { (yyval.boolean) = true; ;} break; case 1709: #line 11779 "gram.y" { (yyval.boolean) = false; ;} break; case 1710: #line 11780 "gram.y" { (yyval.boolean) = false; ;} break; case 1711: #line 11787 "gram.y" { (yyval.list) = list_make1(NIL); ;} break; case 1712: #line 11788 "gram.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; case 1713: #line 11792 "gram.y" { (yyval.list) = NIL;;} break; case 1714: #line 11793 "gram.y" { (yyval.list) = NIL; ;} break; case 1715: #line 11797 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list);;} break; case 1716: #line 11798 "gram.y" { (yyval.list) = NIL; ;} break; case 1717: #line 11802 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; case 1718: #line 11806 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].sortby)); ;} break; case 1719: #line 11807 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].sortby)); ;} break; case 1720: #line 11811 "gram.y" { (yyval.sortby) = makeNode(SortBy); (yyval.sortby)->node = (yyvsp[(1) - (4)].node); (yyval.sortby)->sortby_dir = SORTBY_USING; (yyval.sortby)->sortby_nulls = (yyvsp[(4) - (4)].ival); (yyval.sortby)->useOp = (yyvsp[(3) - (4)].list); (yyval.sortby)->location = (yylsp[(3) - (4)]); ;} break; case 1721: #line 11820 "gram.y" { (yyval.sortby) = makeNode(SortBy); (yyval.sortby)->node = (yyvsp[(1) - (3)].node); (yyval.sortby)->sortby_dir = (yyvsp[(2) - (3)].ival); (yyval.sortby)->sortby_nulls = (yyvsp[(3) - (3)].ival); (yyval.sortby)->useOp = NIL; (yyval.sortby)->location = -1; /* no operator */ ;} break; case 1722: #line 11833 "gram.y" { (yyval.selectlimit) = (yyvsp[(1) - (2)].selectlimit); ((yyval.selectlimit))->limitOffset = (yyvsp[(2) - (2)].node); ;} break; case 1723: #line 11838 "gram.y" { (yyval.selectlimit) = (yyvsp[(2) - (2)].selectlimit); ((yyval.selectlimit))->limitOffset = (yyvsp[(1) - (2)].node); ;} break; case 1724: #line 11843 "gram.y" { (yyval.selectlimit) = (yyvsp[(1) - (1)].selectlimit); ;} break; case 1725: #line 11847 "gram.y" { SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); n->limitOffset = (yyvsp[(1) - (1)].node); n->limitCount = NULL; n->limitOption = LIMIT_OPTION_COUNT; (yyval.selectlimit) = n; ;} break; case 1726: #line 11857 "gram.y" { (yyval.selectlimit) = (yyvsp[(1) - (1)].selectlimit); ;} break; case 1727: #line 11858 "gram.y" { (yyval.selectlimit) = NULL; ;} break; case 1728: #line 11863 "gram.y" { SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); n->limitOffset = NULL; n->limitCount = (yyvsp[(2) - (2)].node); n->limitOption = LIMIT_OPTION_COUNT; (yyval.selectlimit) = n; ;} break; case 1729: #line 11871 "gram.y" { /* Disabled because it was too confusing, bjm 2002-02-18 */ ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("LIMIT #,# syntax is not supported"), errhint("Use separate LIMIT and OFFSET clauses."), parser_errposition((yylsp[(1) - (4)])))); ;} break; case 1730: #line 11887 "gram.y" { SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); n->limitOffset = NULL; n->limitCount = (yyvsp[(3) - (5)].node); n->limitOption = LIMIT_OPTION_COUNT; (yyval.selectlimit) = n; ;} break; case 1731: #line 11895 "gram.y" { SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); n->limitOffset = NULL; n->limitCount = (yyvsp[(3) - (6)].node); n->limitOption = LIMIT_OPTION_WITH_TIES; (yyval.selectlimit) = n; ;} break; case 1732: #line 11903 "gram.y" { SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); n->limitOffset = NULL; n->limitCount = makeIntConst(1, -1); n->limitOption = LIMIT_OPTION_COUNT; (yyval.selectlimit) = n; ;} break; case 1733: #line 11911 "gram.y" { SelectLimit *n = (SelectLimit *) palloc(sizeof(SelectLimit)); n->limitOffset = NULL; n->limitCount = makeIntConst(1, -1); n->limitOption = LIMIT_OPTION_WITH_TIES; (yyval.selectlimit) = n; ;} break; case 1734: #line 11922 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1735: #line 11925 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 1736: #line 11929 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1737: #line 11931 "gram.y" { /* LIMIT ALL is represented as a NULL constant */ (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} break; case 1738: #line 11938 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1739: #line 11958 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1740: #line 11960 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1741: #line 11962 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1742: #line 11966 "gram.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival),(yylsp[(1) - (1)])); ;} break; case 1743: #line 11967 "gram.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str),(yylsp[(1) - (1)])); ;} break; case 1744: #line 11971 "gram.y" { (yyval.ival) = 0; ;} break; case 1745: #line 11972 "gram.y" { (yyval.ival) = 0; ;} break; case 1746: #line 11975 "gram.y" { (yyval.ival) = 0; ;} break; case 1747: #line 11976 "gram.y" { (yyval.ival) = 0; ;} break; case 1748: #line 12001 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; case 1749: #line 12002 "gram.y" { (yyval.list) = NIL; ;} break; case 1750: #line 12006 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1751: #line 12007 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list),(yyvsp[(3) - (3)].node)); ;} break; case 1752: #line 12011 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1753: #line 12012 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1754: #line 12013 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1755: #line 12014 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1756: #line 12015 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1757: #line 12020 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_EMPTY, NIL, (yylsp[(1) - (2)])); ;} break; case 1758: #line 12033 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_ROLLUP, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 1759: #line 12040 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_CUBE, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 1760: #line 12047 "gram.y" { (yyval.node) = (Node *) makeGroupingSet(GROUPING_SET_SETS, (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; case 1761: #line 12053 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1762: #line 12054 "gram.y" { (yyval.node) = NULL; ;} break; case 1763: #line 12058 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1764: #line 12059 "gram.y" { (yyval.list) = NIL; ;} break; case 1765: #line 12063 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1766: #line 12064 "gram.y" { (yyval.list) = NIL; ;} break; case 1767: #line 12068 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1768: #line 12069 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 1769: #line 12074 "gram.y" { LockingClause *n = makeNode(LockingClause); n->lockedRels = (yyvsp[(2) - (3)].list); n->strength = (yyvsp[(1) - (3)].ival); n->waitPolicy = (yyvsp[(3) - (3)].ival); (yyval.node) = (Node *) n; ;} break; case 1770: #line 12084 "gram.y" { (yyval.ival) = LCS_FORUPDATE; ;} break; case 1771: #line 12085 "gram.y" { (yyval.ival) = LCS_FORNOKEYUPDATE; ;} break; case 1772: #line 12086 "gram.y" { (yyval.ival) = LCS_FORSHARE; ;} break; case 1773: #line 12087 "gram.y" { (yyval.ival) = LCS_FORKEYSHARE; ;} break; case 1774: #line 12091 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1775: #line 12092 "gram.y" { (yyval.list) = NIL; ;} break; case 1776: #line 12103 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->valuesLists = list_make1((yyvsp[(3) - (4)].list)); (yyval.node) = (Node *) n; ;} break; case 1777: #line 12109 "gram.y" { SelectStmt *n = (SelectStmt *) (yyvsp[(1) - (5)].node); n->valuesLists = lappend(n->valuesLists, (yyvsp[(4) - (5)].list)); (yyval.node) = (Node *) n; ;} break; case 1778: #line 12126 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 1779: #line 12127 "gram.y" { (yyval.list) = NIL; ;} break; case 1780: #line 12131 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1781: #line 12132 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1782: #line 12139 "gram.y" { (yyvsp[(1) - (2)].range)->alias = (yyvsp[(2) - (2)].alias); (yyval.node) = (Node *) (yyvsp[(1) - (2)].range); ;} break; case 1783: #line 12144 "gram.y" { RangeTableSample *n = (RangeTableSample *) (yyvsp[(3) - (3)].node); (yyvsp[(1) - (3)].range)->alias = (yyvsp[(2) - (3)].alias); /* relation_expr goes inside the RangeTableSample node */ n->relation = (Node *) (yyvsp[(1) - (3)].range); (yyval.node) = (Node *) n; ;} break; case 1784: #line 12152 "gram.y" { RangeFunction *n = (RangeFunction *) (yyvsp[(1) - (2)].node); n->alias = linitial((yyvsp[(2) - (2)].list)); n->coldeflist = lsecond((yyvsp[(2) - (2)].list)); (yyval.node) = (Node *) n; ;} break; case 1785: #line 12159 "gram.y" { RangeFunction *n = (RangeFunction *) (yyvsp[(2) - (3)].node); n->lateral = true; n->alias = linitial((yyvsp[(3) - (3)].list)); n->coldeflist = lsecond((yyvsp[(3) - (3)].list)); (yyval.node) = (Node *) n; ;} break; case 1786: #line 12167 "gram.y" { RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(1) - (2)].node); n->alias = (yyvsp[(2) - (2)].alias); (yyval.node) = (Node *) n; ;} break; case 1787: #line 12173 "gram.y" { RangeTableFunc *n = (RangeTableFunc *) (yyvsp[(2) - (3)].node); n->lateral = true; n->alias = (yyvsp[(3) - (3)].alias); (yyval.node) = (Node *) n; ;} break; case 1788: #line 12180 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = false; n->subquery = (yyvsp[(1) - (2)].node); n->alias = (yyvsp[(2) - (2)].alias); /* * The SQL spec does not permit a subselect * () without an alias clause, * so we don't either. This avoids the problem * of needing to invent a unique refname for it. * That could be surmounted if there's sufficient * popular demand, but for now let's just implement * the spec and see if anyone complains. * However, it does seem like a good idea to emit * an error message that's better than "syntax error". */ if ((yyvsp[(2) - (2)].alias) == NULL) { if (IsA((yyvsp[(1) - (2)].node), SelectStmt) && ((SelectStmt *) (yyvsp[(1) - (2)].node))->valuesLists) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("VALUES in FROM must have an alias"), errhint("For example, FROM (VALUES ...) [AS] foo."), parser_errposition((yylsp[(1) - (2)])))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM must have an alias"), errhint("For example, FROM (SELECT ...) [AS] foo."), parser_errposition((yylsp[(1) - (2)])))); } (yyval.node) = (Node *) n; ;} break; case 1789: #line 12215 "gram.y" { RangeSubselect *n = makeNode(RangeSubselect); n->lateral = true; n->subquery = (yyvsp[(2) - (3)].node); n->alias = (yyvsp[(3) - (3)].alias); /* same comment as above */ if ((yyvsp[(3) - (3)].alias) == NULL) { if (IsA((yyvsp[(2) - (3)].node), SelectStmt) && ((SelectStmt *) (yyvsp[(2) - (3)].node))->valuesLists) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("VALUES in FROM must have an alias"), errhint("For example, FROM (VALUES ...) [AS] foo."), parser_errposition((yylsp[(2) - (3)])))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM must have an alias"), errhint("For example, FROM (SELECT ...) [AS] foo."), parser_errposition((yylsp[(2) - (3)])))); } (yyval.node) = (Node *) n; ;} break; case 1790: #line 12240 "gram.y" { (yyval.node) = (Node *) (yyvsp[(1) - (1)].jexpr); ;} break; case 1791: #line 12244 "gram.y" { (yyvsp[(2) - (4)].jexpr)->alias = (yyvsp[(4) - (4)].alias); (yyval.node) = (Node *) (yyvsp[(2) - (4)].jexpr); ;} break; case 1792: #line 12270 "gram.y" { (yyval.jexpr) = (yyvsp[(2) - (3)].jexpr); ;} break; case 1793: #line 12274 "gram.y" { /* CROSS JOIN is same as unqualified inner join */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; n->isNatural = false; n->larg = (yyvsp[(1) - (4)].node); n->rarg = (yyvsp[(4) - (4)].node); n->usingClause = NIL; n->quals = NULL; (yyval.jexpr) = n; ;} break; case 1794: #line 12286 "gram.y" { JoinExpr *n = makeNode(JoinExpr); n->jointype = (yyvsp[(2) - (5)].jtype); n->isNatural = false; n->larg = (yyvsp[(1) - (5)].node); n->rarg = (yyvsp[(4) - (5)].node); if ((yyvsp[(5) - (5)].node) != NULL && IsA((yyvsp[(5) - (5)].node), List)) n->usingClause = (List *) (yyvsp[(5) - (5)].node); /* USING clause */ else n->quals = (yyvsp[(5) - (5)].node); /* ON clause */ (yyval.jexpr) = n; ;} break; case 1795: #line 12299 "gram.y" { /* letting join_type reduce to empty doesn't work */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; n->isNatural = false; n->larg = (yyvsp[(1) - (4)].node); n->rarg = (yyvsp[(3) - (4)].node); if ((yyvsp[(4) - (4)].node) != NULL && IsA((yyvsp[(4) - (4)].node), List)) n->usingClause = (List *) (yyvsp[(4) - (4)].node); /* USING clause */ else n->quals = (yyvsp[(4) - (4)].node); /* ON clause */ (yyval.jexpr) = n; ;} break; case 1796: #line 12313 "gram.y" { JoinExpr *n = makeNode(JoinExpr); n->jointype = (yyvsp[(3) - (5)].jtype); n->isNatural = true; n->larg = (yyvsp[(1) - (5)].node); n->rarg = (yyvsp[(5) - (5)].node); n->usingClause = NIL; /* figure out which columns later... */ n->quals = NULL; /* fill later */ (yyval.jexpr) = n; ;} break; case 1797: #line 12324 "gram.y" { /* letting join_type reduce to empty doesn't work */ JoinExpr *n = makeNode(JoinExpr); n->jointype = JOIN_INNER; n->isNatural = true; n->larg = (yyvsp[(1) - (4)].node); n->rarg = (yyvsp[(4) - (4)].node); n->usingClause = NIL; /* figure out which columns later... */ n->quals = NULL; /* fill later */ (yyval.jexpr) = n; ;} break; case 1798: #line 12339 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(2) - (5)].str); (yyval.alias)->colnames = (yyvsp[(4) - (5)].list); ;} break; case 1799: #line 12345 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(2) - (2)].str); ;} break; case 1800: #line 12350 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(1) - (4)].str); (yyval.alias)->colnames = (yyvsp[(3) - (4)].list); ;} break; case 1801: #line 12356 "gram.y" { (yyval.alias) = makeNode(Alias); (yyval.alias)->aliasname = (yyvsp[(1) - (1)].str); ;} break; case 1802: #line 12362 "gram.y" { (yyval.alias) = (yyvsp[(1) - (1)].alias); ;} break; case 1803: #line 12363 "gram.y" { (yyval.alias) = NULL; ;} break; case 1804: #line 12372 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (1)].alias), NIL); ;} break; case 1805: #line 12376 "gram.y" { (yyval.list) = list_make2(NULL, (yyvsp[(3) - (4)].list)); ;} break; case 1806: #line 12380 "gram.y" { Alias *a = makeNode(Alias); a->aliasname = (yyvsp[(2) - (5)].str); (yyval.list) = list_make2(a, (yyvsp[(4) - (5)].list)); ;} break; case 1807: #line 12386 "gram.y" { Alias *a = makeNode(Alias); a->aliasname = (yyvsp[(1) - (4)].str); (yyval.list) = list_make2(a, (yyvsp[(3) - (4)].list)); ;} break; case 1808: #line 12392 "gram.y" { (yyval.list) = list_make2(NULL, NIL); ;} break; case 1809: #line 12397 "gram.y" { (yyval.jtype) = JOIN_FULL; ;} break; case 1810: #line 12398 "gram.y" { (yyval.jtype) = JOIN_LEFT; ;} break; case 1811: #line 12399 "gram.y" { (yyval.jtype) = JOIN_RIGHT; ;} break; case 1812: #line 12400 "gram.y" { (yyval.jtype) = JOIN_INNER; ;} break; case 1813: #line 12404 "gram.y" { (yyval.node) = NULL; ;} break; case 1814: #line 12405 "gram.y" { (yyval.node) = NULL; ;} break; case 1815: #line 12417 "gram.y" { (yyval.node) = (Node *) (yyvsp[(3) - (4)].list); ;} break; case 1816: #line 12418 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1817: #line 12424 "gram.y" { /* inheritance query, implicitly */ (yyval.range) = (yyvsp[(1) - (1)].range); (yyval.range)->inh = true; (yyval.range)->alias = NULL; ;} break; case 1818: #line 12431 "gram.y" { /* inheritance query, explicitly */ (yyval.range) = (yyvsp[(1) - (2)].range); (yyval.range)->inh = true; (yyval.range)->alias = NULL; ;} break; case 1819: #line 12438 "gram.y" { /* no inheritance */ (yyval.range) = (yyvsp[(2) - (2)].range); (yyval.range)->inh = false; (yyval.range)->alias = NULL; ;} break; case 1820: #line 12445 "gram.y" { /* no inheritance, SQL99-style syntax */ (yyval.range) = (yyvsp[(3) - (4)].range); (yyval.range)->inh = false; (yyval.range)->alias = NULL; ;} break; case 1821: #line 12455 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} break; case 1822: #line 12456 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} break; case 1823: #line 12470 "gram.y" { (yyval.range) = (yyvsp[(1) - (1)].range); ;} break; case 1824: #line 12474 "gram.y" { Alias *alias = makeNode(Alias); alias->aliasname = (yyvsp[(2) - (2)].str); (yyvsp[(1) - (2)].range)->alias = alias; (yyval.range) = (yyvsp[(1) - (2)].range); ;} break; case 1825: #line 12481 "gram.y" { Alias *alias = makeNode(Alias); alias->aliasname = (yyvsp[(3) - (3)].str); (yyvsp[(1) - (3)].range)->alias = alias; (yyval.range) = (yyvsp[(1) - (3)].range); ;} break; case 1826: #line 12494 "gram.y" { RangeTableSample *n = makeNode(RangeTableSample); /* n->relation will be filled in later */ n->method = (yyvsp[(2) - (6)].list); n->args = (yyvsp[(4) - (6)].list); n->repeatable = (yyvsp[(6) - (6)].node); n->location = (yylsp[(2) - (6)]); (yyval.node) = (Node *) n; ;} break; case 1827: #line 12506 "gram.y" { (yyval.node) = (Node *) (yyvsp[(3) - (4)].node); ;} break; case 1828: #line 12507 "gram.y" { (yyval.node) = NULL; ;} break; case 1829: #line 12523 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->lateral = false; n->ordinality = (yyvsp[(2) - (2)].boolean); n->is_rowsfrom = false; n->functions = list_make1(list_make2((yyvsp[(1) - (2)].node), NIL)); /* alias and coldeflist are set by table_ref production */ (yyval.node) = (Node *) n; ;} break; case 1830: #line 12533 "gram.y" { RangeFunction *n = makeNode(RangeFunction); n->lateral = false; n->ordinality = (yyvsp[(6) - (6)].boolean); n->is_rowsfrom = true; n->functions = (yyvsp[(4) - (6)].list); /* alias and coldeflist are set by table_ref production */ (yyval.node) = (Node *) n; ;} break; case 1831: #line 12545 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].list)); ;} break; case 1832: #line 12549 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].list)); ;} break; case 1833: #line 12550 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)); ;} break; case 1834: #line 12553 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 1835: #line 12554 "gram.y" { (yyval.list) = NIL; ;} break; case 1836: #line 12557 "gram.y" { (yyval.boolean) = true; ;} break; case 1837: #line 12558 "gram.y" { (yyval.boolean) = false; ;} break; case 1838: #line 12563 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1839: #line 12564 "gram.y" { (yyval.node) = NULL; ;} break; case 1840: #line 12569 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 1841: #line 12571 "gram.y" { CurrentOfExpr *n = makeNode(CurrentOfExpr); /* cvarno is filled in by parse analysis */ n->cursor_name = (yyvsp[(4) - (4)].str); n->cursor_param = 0; (yyval.node) = (Node *) n; ;} break; case 1842: #line 12578 "gram.y" { (yyval.node) = NULL; ;} break; case 1843: #line 12583 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1844: #line 12584 "gram.y" { (yyval.list) = NIL; ;} break; case 1845: #line 12589 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1846: #line 12593 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1847: #line 12599 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = (yyvsp[(1) - (3)].str); n->typeName = (yyvsp[(2) - (3)].typnam); n->inhcount = 0; n->is_local = true; n->is_not_null = false; n->is_from_type = false; n->storage = 0; n->raw_default = NULL; n->cooked_default = NULL; n->collClause = (CollateClause *) (yyvsp[(3) - (3)].node); n->collOid = InvalidOid; n->constraints = NIL; n->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *)n; ;} break; case 1848: #line 12623 "gram.y" { RangeTableFunc *n = makeNode(RangeTableFunc); n->rowexpr = (yyvsp[(3) - (7)].node); n->docexpr = (yyvsp[(4) - (7)].node); n->columns = (yyvsp[(6) - (7)].list); n->namespaces = NIL; n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *)n; ;} break; case 1849: #line 12634 "gram.y" { RangeTableFunc *n = makeNode(RangeTableFunc); n->rowexpr = (yyvsp[(8) - (12)].node); n->docexpr = (yyvsp[(9) - (12)].node); n->columns = (yyvsp[(11) - (12)].list); n->namespaces = (yyvsp[(5) - (12)].list); n->location = (yylsp[(1) - (12)]); (yyval.node) = (Node *)n; ;} break; case 1850: #line 12645 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 1851: #line 12646 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 1852: #line 12651 "gram.y" { RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); fc->colname = (yyvsp[(1) - (2)].str); fc->for_ordinality = false; fc->typeName = (yyvsp[(2) - (2)].typnam); fc->is_not_null = false; fc->colexpr = NULL; fc->coldefexpr = NULL; fc->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *) fc; ;} break; case 1853: #line 12665 "gram.y" { RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); ListCell *option; bool nullability_seen = false; fc->colname = (yyvsp[(1) - (3)].str); fc->typeName = (yyvsp[(2) - (3)].typnam); fc->for_ordinality = false; fc->is_not_null = false; fc->colexpr = NULL; fc->coldefexpr = NULL; fc->location = (yylsp[(1) - (3)]); foreach(option, (yyvsp[(3) - (3)].list)) { DefElem *defel = (DefElem *) lfirst(option); if (strcmp(defel->defname, "default") == 0) { if (fc->coldefexpr != NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("only one DEFAULT value is allowed"), parser_errposition(defel->location))); fc->coldefexpr = defel->arg; } else if (strcmp(defel->defname, "path") == 0) { if (fc->colexpr != NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("only one PATH value per column is allowed"), parser_errposition(defel->location))); fc->colexpr = defel->arg; } else if (strcmp(defel->defname, "is_not_null") == 0) { if (nullability_seen) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("conflicting or redundant NULL / NOT NULL declarations for column \"%s\"", fc->colname), parser_errposition(defel->location))); fc->is_not_null = intVal(defel->arg); nullability_seen = true; } else { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("unrecognized column option \"%s\"", defel->defname), parser_errposition(defel->location))); } } (yyval.node) = (Node *) fc; ;} break; case 1854: #line 12722 "gram.y" { RangeTableFuncCol *fc = makeNode(RangeTableFuncCol); fc->colname = (yyvsp[(1) - (3)].str); fc->for_ordinality = true; /* other fields are ignored, initialized by makeNode */ fc->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) fc; ;} break; case 1855: #line 12736 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].defelt)); ;} break; case 1856: #line 12738 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].defelt)); ;} break; case 1857: #line 12743 "gram.y" { (yyval.defelt) = makeDefElem((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1858: #line 12745 "gram.y" { (yyval.defelt) = makeDefElem("default", (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1859: #line 12747 "gram.y" { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeInteger(true), (yylsp[(1) - (2)])); ;} break; case 1860: #line 12749 "gram.y" { (yyval.defelt) = makeDefElem("is_not_null", (Node *) makeInteger(false), (yylsp[(1) - (1)])); ;} break; case 1861: #line 12754 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 1862: #line 12756 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 1863: #line 12761 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(3) - (3)].str); (yyval.target)->indirection = NIL; (yyval.target)->val = (yyvsp[(1) - (3)].node); (yyval.target)->location = (yylsp[(1) - (3)]); ;} break; case 1864: #line 12769 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; (yyval.target)->val = (yyvsp[(2) - (2)].node); (yyval.target)->location = (yylsp[(1) - (2)]); ;} break; case 1865: #line 12789 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->arrayBounds = (yyvsp[(2) - (2)].list); ;} break; case 1866: #line 12794 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (3)].typnam); (yyval.typnam)->arrayBounds = (yyvsp[(3) - (3)].list); (yyval.typnam)->setof = true; ;} break; case 1867: #line 12801 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (5)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(4) - (5)].ival))); ;} break; case 1868: #line 12806 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (6)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger((yyvsp[(5) - (6)].ival))); (yyval.typnam)->setof = true; ;} break; case 1869: #line 12812 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); ;} break; case 1870: #line 12817 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (3)].typnam); (yyval.typnam)->arrayBounds = list_make1(makeInteger(-1)); (yyval.typnam)->setof = true; ;} break; case 1871: #line 12826 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeInteger(-1)); ;} break; case 1872: #line 12828 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (4)].list), makeInteger((yyvsp[(3) - (4)].ival))); ;} break; case 1873: #line 12830 "gram.y" { (yyval.list) = NIL; ;} break; case 1874: #line 12834 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1875: #line 12835 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1876: #line 12836 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1877: #line 12837 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1878: #line 12838 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1879: #line 12840 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (2)].typnam); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); ;} break; case 1880: #line 12845 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (4)].typnam); (yyval.typnam)->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); ;} break; case 1881: #line 12864 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1882: #line 12865 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1883: #line 12866 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1884: #line 12867 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1885: #line 12879 "gram.y" { (yyval.typnam) = makeTypeName((yyvsp[(1) - (2)].str)); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1886: #line 12885 "gram.y" { (yyval.typnam) = makeTypeNameFromNameList(lcons(makeString((yyvsp[(1) - (3)].str)), (yyvsp[(2) - (3)].list))); (yyval.typnam)->typmods = (yyvsp[(3) - (3)].list); (yyval.typnam)->location = (yylsp[(1) - (3)]); ;} break; case 1887: #line 12892 "gram.y" { (yyval.list) = (yyvsp[(2) - (3)].list); ;} break; case 1888: #line 12893 "gram.y" { (yyval.list) = NIL; ;} break; case 1889: #line 12900 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1890: #line 12905 "gram.y" { (yyval.typnam) = SystemTypeName("int4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1891: #line 12910 "gram.y" { (yyval.typnam) = SystemTypeName("int2"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1892: #line 12915 "gram.y" { (yyval.typnam) = SystemTypeName("int8"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1893: #line 12920 "gram.y" { (yyval.typnam) = SystemTypeName("float4"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1894: #line 12925 "gram.y" { (yyval.typnam) = (yyvsp[(2) - (2)].typnam); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1895: #line 12930 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1896: #line 12935 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1897: #line 12941 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1898: #line 12947 "gram.y" { (yyval.typnam) = SystemTypeName("numeric"); (yyval.typnam)->typmods = (yyvsp[(2) - (2)].list); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1899: #line 12953 "gram.y" { (yyval.typnam) = SystemTypeName("bool"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1900: #line 12960 "gram.y" { /* * Check FLOAT() precision limits assuming IEEE floating * types - thomas 1997-09-18 */ if ((yyvsp[(2) - (3)].ival) < 1) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("precision for type float must be at least 1 bit"), parser_errposition((yylsp[(2) - (3)])))); else if ((yyvsp[(2) - (3)].ival) <= 24) (yyval.typnam) = SystemTypeName("float4"); else if ((yyvsp[(2) - (3)].ival) <= 53) (yyval.typnam) = SystemTypeName("float8"); else ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("precision for type float must be less than 54 bits"), parser_errposition((yylsp[(2) - (3)])))); ;} break; case 1901: #line 12981 "gram.y" { (yyval.typnam) = SystemTypeName("float8"); ;} break; case 1902: #line 12991 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1903: #line 12995 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1904: #line 13003 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1905: #line 13007 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); (yyval.typnam)->typmods = NIL; ;} break; case 1906: #line 13015 "gram.y" { char *typname; typname = (yyvsp[(2) - (5)].boolean) ? "varbit" : "bit"; (yyval.typnam) = SystemTypeName(typname); (yyval.typnam)->typmods = (yyvsp[(4) - (5)].list); (yyval.typnam)->location = (yylsp[(1) - (5)]); ;} break; case 1907: #line 13027 "gram.y" { /* bit defaults to bit(1), varbit to no limit */ if ((yyvsp[(2) - (2)].boolean)) { (yyval.typnam) = SystemTypeName("varbit"); } else { (yyval.typnam) = SystemTypeName("bit"); (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); } (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1908: #line 13048 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1909: #line 13052 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1910: #line 13058 "gram.y" { (yyval.typnam) = (yyvsp[(1) - (1)].typnam); ;} break; case 1911: #line 13062 "gram.y" { /* Length was not specified so allow to be unrestricted. * This handles problems with fixed-length (bpchar) strings * which in column definitions must default to a length * of one, but should not be constrained if the length * was not specified. */ (yyval.typnam) = (yyvsp[(1) - (1)].typnam); (yyval.typnam)->typmods = NIL; ;} break; case 1912: #line 13075 "gram.y" { (yyval.typnam) = SystemTypeName((yyvsp[(1) - (4)].str)); (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); (yyval.typnam)->location = (yylsp[(1) - (4)]); ;} break; case 1913: #line 13083 "gram.y" { (yyval.typnam) = SystemTypeName((yyvsp[(1) - (1)].str)); /* char defaults to char(1), varchar to no limit */ if (strcmp((yyvsp[(1) - (1)].str), "bpchar") == 0) (yyval.typnam)->typmods = list_make1(makeIntConst(1, -1)); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1914: #line 13093 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; case 1915: #line 13095 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; case 1916: #line 13097 "gram.y" { (yyval.str) = "varchar"; ;} break; case 1917: #line 13099 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} break; case 1918: #line 13101 "gram.y" { (yyval.str) = (yyvsp[(3) - (3)].boolean) ? "varchar": "bpchar"; ;} break; case 1919: #line 13103 "gram.y" { (yyval.str) = (yyvsp[(2) - (2)].boolean) ? "varchar": "bpchar"; ;} break; case 1920: #line 13107 "gram.y" { (yyval.boolean) = true; ;} break; case 1921: #line 13108 "gram.y" { (yyval.boolean) = false; ;} break; case 1922: #line 13116 "gram.y" { if ((yyvsp[(5) - (5)].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); else (yyval.typnam) = SystemTypeName("timestamp"); (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); (yyval.typnam)->location = (yylsp[(1) - (5)]); ;} break; case 1923: #line 13125 "gram.y" { if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timestamptz"); else (yyval.typnam) = SystemTypeName("timestamp"); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1924: #line 13133 "gram.y" { if ((yyvsp[(5) - (5)].boolean)) (yyval.typnam) = SystemTypeName("timetz"); else (yyval.typnam) = SystemTypeName("time"); (yyval.typnam)->typmods = list_make1(makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); (yyval.typnam)->location = (yylsp[(1) - (5)]); ;} break; case 1925: #line 13142 "gram.y" { if ((yyvsp[(2) - (2)].boolean)) (yyval.typnam) = SystemTypeName("timetz"); else (yyval.typnam) = SystemTypeName("time"); (yyval.typnam)->location = (yylsp[(1) - (2)]); ;} break; case 1926: #line 13153 "gram.y" { (yyval.typnam) = SystemTypeName("interval"); (yyval.typnam)->location = (yylsp[(1) - (1)]); ;} break; case 1927: #line 13160 "gram.y" { (yyval.boolean) = true; ;} break; case 1928: #line 13161 "gram.y" { (yyval.boolean) = false; ;} break; case 1929: #line 13162 "gram.y" { (yyval.boolean) = false; ;} break; case 1930: #line 13167 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR), (yylsp[(1) - (1)]))); ;} break; case 1931: #line 13169 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MONTH), (yylsp[(1) - (1)]))); ;} break; case 1932: #line 13171 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY), (yylsp[(1) - (1)]))); ;} break; case 1933: #line 13173 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR), (yylsp[(1) - (1)]))); ;} break; case 1934: #line 13175 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(MINUTE), (yylsp[(1) - (1)]))); ;} break; case 1935: #line 13177 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 1936: #line 13179 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH), (yylsp[(1) - (3)]))); ;} break; case 1937: #line 13184 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR), (yylsp[(1) - (3)]))); ;} break; case 1938: #line 13189 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); ;} break; case 1939: #line 13195 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); ;} break; case 1940: #line 13203 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE), (yylsp[(1) - (3)]))); ;} break; case 1941: #line 13208 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); ;} break; case 1942: #line 13215 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); linitial((yyval.list)) = makeIntConst(INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND), (yylsp[(1) - (3)])); ;} break; case 1943: #line 13221 "gram.y" { (yyval.list) = NIL; ;} break; case 1944: #line 13226 "gram.y" { (yyval.list) = list_make1(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (1)]))); ;} break; case 1945: #line 13230 "gram.y" { (yyval.list) = list_make2(makeIntConst(INTERVAL_MASK(SECOND), (yylsp[(1) - (4)])), makeIntConst((yyvsp[(3) - (4)].ival), (yylsp[(3) - (4)]))); ;} break; case 1946: #line 13265 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 1947: #line 13267 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); ;} break; case 1948: #line 13269 "gram.y" { CollateClause *n = makeNode(CollateClause); n->arg = (yyvsp[(1) - (3)].node); n->collname = (yyvsp[(3) - (3)].list); n->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *) n; ;} break; case 1949: #line 13277 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("timezone"), list_make2((yyvsp[(5) - (5)].node), (yyvsp[(1) - (5)].node)), (yylsp[(2) - (5)])); ;} break; case 1950: #line 13292 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1951: #line 13294 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1952: #line 13296 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1953: #line 13298 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1954: #line 13300 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1955: #line 13302 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1956: #line 13304 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1957: #line 13306 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1958: #line 13308 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1959: #line 13310 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1960: #line 13312 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1961: #line 13314 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1962: #line 13316 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1963: #line 13318 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1964: #line 13321 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1965: #line 13323 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1966: #line 13325 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} break; case 1967: #line 13328 "gram.y" { (yyval.node) = makeInterval_or_AExprOp((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1968: #line 13330 "gram.y" { (yyval.node) = makeInterval_or_AExprOp((yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} break; case 1969: #line 13333 "gram.y" { (yyval.node) = makeAndExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1970: #line 13335 "gram.y" { (yyval.node) = makeOrExpr((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1971: #line 13337 "gram.y" { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1972: #line 13339 "gram.y" { (yyval.node) = makeNotExpr((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 1973: #line 13342 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "~~", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1974: #line 13347 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "~~", (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); ;} break; case 1975: #line 13355 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "!~~", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); ;} break; case 1976: #line 13360 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_LIKE, "!~~", (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); ;} break; case 1977: #line 13368 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "~~*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 1978: #line 13373 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node)), (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "~~*", (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); ;} break; case 1979: #line 13381 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "!~~*", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); ;} break; case 1980: #line 13386 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("like_escape"), list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_ILIKE, "!~~*", (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); ;} break; case 1981: #line 13395 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), list_make1((yyvsp[(4) - (4)].node)), (yylsp[(2) - (4)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "~", (yyvsp[(1) - (4)].node), (Node *) n, (yylsp[(2) - (4)])); ;} break; case 1982: #line 13403 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), (yylsp[(2) - (6)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "~", (yyvsp[(1) - (6)].node), (Node *) n, (yylsp[(2) - (6)])); ;} break; case 1983: #line 13411 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), list_make1((yyvsp[(5) - (5)].node)), (yylsp[(2) - (5)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "!~", (yyvsp[(1) - (5)].node), (Node *) n, (yylsp[(2) - (5)])); ;} break; case 1984: #line 13419 "gram.y" { FuncCall *n = makeFuncCall(SystemFuncName("similar_to_escape"), list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), (yylsp[(2) - (7)])); (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_SIMILAR, "!~", (yyvsp[(1) - (7)].node), (Node *) n, (yylsp[(2) - (7)])); ;} break; case 1985: #line 13437 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[(1) - (3)].node); n->nulltesttype = IS_NULL; n->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)n; ;} break; case 1986: #line 13445 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[(1) - (2)].node); n->nulltesttype = IS_NULL; n->location = (yylsp[(2) - (2)]); (yyval.node) = (Node *)n; ;} break; case 1987: #line 13453 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[(1) - (4)].node); n->nulltesttype = IS_NOT_NULL; n->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)n; ;} break; case 1988: #line 13461 "gram.y" { NullTest *n = makeNode(NullTest); n->arg = (Expr *) (yyvsp[(1) - (2)].node); n->nulltesttype = IS_NOT_NULL; n->location = (yylsp[(2) - (2)]); (yyval.node) = (Node *)n; ;} break; case 1989: #line 13469 "gram.y" { if (list_length((yyvsp[(1) - (3)].list)) != 2) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("wrong number of parameters on left side of OVERLAPS expression"), parser_errposition((yylsp[(1) - (3)])))); if (list_length((yyvsp[(3) - (3)].list)) != 2) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("wrong number of parameters on right side of OVERLAPS expression"), parser_errposition((yylsp[(3) - (3)])))); (yyval.node) = (Node *) makeFuncCall(SystemFuncName("overlaps"), list_concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list)), (yylsp[(2) - (3)])); ;} break; case 1990: #line 13485 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (3)].node); b->booltesttype = IS_TRUE; b->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)b; ;} break; case 1991: #line 13493 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (4)].node); b->booltesttype = IS_NOT_TRUE; b->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)b; ;} break; case 1992: #line 13501 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (3)].node); b->booltesttype = IS_FALSE; b->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)b; ;} break; case 1993: #line 13509 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (4)].node); b->booltesttype = IS_NOT_FALSE; b->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)b; ;} break; case 1994: #line 13517 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (3)].node); b->booltesttype = IS_UNKNOWN; b->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)b; ;} break; case 1995: #line 13525 "gram.y" { BooleanTest *b = makeNode(BooleanTest); b->arg = (Expr *) (yyvsp[(1) - (4)].node); b->booltesttype = IS_NOT_UNKNOWN; b->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)b; ;} break; case 1996: #line 13533 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); ;} break; case 1997: #line 13537 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); ;} break; case 1998: #line 13541 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (Node *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); ;} break; case 1999: #line 13545 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (Node *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); ;} break; case 2000: #line 13549 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_BETWEEN, "BETWEEN", (yyvsp[(1) - (6)].node), (Node *) list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), (yylsp[(2) - (6)])); ;} break; case 2001: #line 13557 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_BETWEEN, "NOT BETWEEN", (yyvsp[(1) - (7)].node), (Node *) list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), (yylsp[(2) - (7)])); ;} break; case 2002: #line 13565 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_BETWEEN_SYM, "BETWEEN SYMMETRIC", (yyvsp[(1) - (6)].node), (Node *) list_make2((yyvsp[(4) - (6)].node), (yyvsp[(6) - (6)].node)), (yylsp[(2) - (6)])); ;} break; case 2003: #line 13573 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_BETWEEN_SYM, "NOT BETWEEN SYMMETRIC", (yyvsp[(1) - (7)].node), (Node *) list_make2((yyvsp[(5) - (7)].node), (yyvsp[(7) - (7)].node)), (yylsp[(2) - (7)])); ;} break; case 2004: #line 13581 "gram.y" { /* in_expr returns a SubLink or a list of a_exprs */ if (IsA((yyvsp[(3) - (3)].node), SubLink)) { /* generate foo = ANY (subquery) */ SubLink *n = (SubLink *) (yyvsp[(3) - (3)].node); n->subLinkType = ANY_SUBLINK; n->subLinkId = 0; n->testexpr = (yyvsp[(1) - (3)].node); n->operName = NIL; /* show it's IN not = ANY */ n->location = (yylsp[(2) - (3)]); (yyval.node) = (Node *)n; } else { /* generate scalar IN expression */ (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_IN, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); } ;} break; case 2005: #line 13601 "gram.y" { /* in_expr returns a SubLink or a list of a_exprs */ if (IsA((yyvsp[(4) - (4)].node), SubLink)) { /* generate NOT (foo = ANY (subquery)) */ /* Make an = ANY node */ SubLink *n = (SubLink *) (yyvsp[(4) - (4)].node); n->subLinkType = ANY_SUBLINK; n->subLinkId = 0; n->testexpr = (yyvsp[(1) - (4)].node); n->operName = NIL; /* show it's IN not = ANY */ n->location = (yylsp[(2) - (4)]); /* Stick a NOT on top; must have same parse location */ (yyval.node) = makeNotExpr((Node *) n, (yylsp[(2) - (4)])); } else { /* generate scalar NOT IN expression */ (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_IN, "<>", (yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node), (yylsp[(2) - (4)])); } ;} break; case 2006: #line 13623 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = (yyvsp[(3) - (4)].ival); n->subLinkId = 0; n->testexpr = (yyvsp[(1) - (4)].node); n->operName = (yyvsp[(2) - (4)].list); n->subselect = (yyvsp[(4) - (4)].node); n->location = (yylsp[(2) - (4)]); (yyval.node) = (Node *)n; ;} break; case 2007: #line 13634 "gram.y" { if ((yyvsp[(3) - (6)].ival) == ANY_SUBLINK) (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ANY, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); else (yyval.node) = (Node *) makeA_Expr(AEXPR_OP_ALL, (yyvsp[(2) - (6)].list), (yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(2) - (6)])); ;} break; case 2008: #line 13641 "gram.y" { /* Not sure how to get rid of the parentheses * but there are lots of shift/reduce errors without them. * * Should be able to implement this by plopping the entire * select into a node, then transforming the target expressions * from whatever they are into count(*), and testing the * entire result equal to one. * But, will probably implement a separate node in the executor. */ ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("UNIQUE predicate is not yet implemented"), parser_errposition((yylsp[(1) - (2)])))); ;} break; case 2009: #line 13657 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); ;} break; case 2010: #line 13662 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), (yylsp[(2) - (4)])); ;} break; case 2011: #line 13668 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); ;} break; case 2012: #line 13672 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make2((yyvsp[(1) - (4)].node), makeStringConst((yyvsp[(3) - (4)].str), (yylsp[(3) - (4)]))), (yylsp[(2) - (4)])); ;} break; case 2013: #line 13676 "gram.y" { (yyval.node) = makeNotExpr((Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), (yylsp[(2) - (4)])); ;} break; case 2014: #line 13680 "gram.y" { (yyval.node) = makeNotExpr((Node *) makeFuncCall(SystemFuncName("is_normalized"), list_make2((yyvsp[(1) - (5)].node), makeStringConst((yyvsp[(4) - (5)].str), (yylsp[(4) - (5)]))), (yylsp[(2) - (5)])), (yylsp[(2) - (5)])); ;} break; case 2015: #line 13684 "gram.y" { /* * The SQL spec only allows DEFAULT in "contextually typed * expressions", but for us, it's easier to allow it in * any a_expr and then throw error during parse analysis * if it's in an inappropriate context. This way also * lets us say something smarter than "syntax error". */ SetToDefault *n = makeNode(SetToDefault); /* parse analysis will fill in the rest */ n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; ;} break; case 2016: #line 13709 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2017: #line 13711 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].typnam), (yylsp[(2) - (3)])); ;} break; case 2018: #line 13713 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2019: #line 13715 "gram.y" { (yyval.node) = doNegate((yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2020: #line 13717 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2021: #line 13719 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2022: #line 13721 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2023: #line 13723 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2024: #line 13725 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2025: #line 13727 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2026: #line 13729 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2027: #line 13731 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2028: #line 13733 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2029: #line 13735 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2030: #line 13737 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2031: #line 13739 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2032: #line 13741 "gram.y" { (yyval.node) = makeInterval_or_AExprOp((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2033: #line 13743 "gram.y" { (yyval.node) = makeInterval_or_AExprOp((yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} break; case 2034: #line 13745 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (3)].list), (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yylsp[(2) - (3)])); ;} break; case 2035: #line 13747 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(1) - (2)].list), NULL, (yyvsp[(2) - (2)].node), (yylsp[(1) - (2)])); ;} break; case 2036: #line 13749 "gram.y" { (yyval.node) = (Node *) makeA_Expr(AEXPR_OP, (yyvsp[(2) - (2)].list), (yyvsp[(1) - (2)].node), NULL, (yylsp[(2) - (2)])); ;} break; case 2037: #line 13751 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", (yyvsp[(1) - (5)].node), (yyvsp[(5) - (5)].node), (yylsp[(2) - (5)])); ;} break; case 2038: #line 13755 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", (yyvsp[(1) - (6)].node), (yyvsp[(6) - (6)].node), (yylsp[(2) - (6)])); ;} break; case 2039: #line 13759 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", (yyvsp[(1) - (6)].node), (Node *) (yyvsp[(5) - (6)].list), (yylsp[(2) - (6)])); ;} break; case 2040: #line 13763 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", (yyvsp[(1) - (7)].node), (Node *) (yyvsp[(6) - (7)].list), (yylsp[(2) - (7)])); ;} break; case 2041: #line 13767 "gram.y" { (yyval.node) = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (3)].node)), (yylsp[(2) - (3)])); ;} break; case 2042: #line 13772 "gram.y" { (yyval.node) = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1((yyvsp[(1) - (4)].node)), (yylsp[(2) - (4)])), (yylsp[(2) - (4)])); ;} break; case 2043: #line 13787 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2044: #line 13788 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2045: #line 13790 "gram.y" { ParamRef *p = makeNode(ParamRef); p->number = (yyvsp[(1) - (2)].ival); p->location = (yylsp[(1) - (2)]); if ((yyvsp[(2) - (2)].list)) { A_Indirection *n = makeNode(A_Indirection); n->arg = (Node *) p; n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.node) = (Node *) n; } else (yyval.node) = (Node *) p; ;} break; case 2046: #line 13805 "gram.y" { ParamRef *p = makeNode(ParamRef); p->number = 0; p->location = (yylsp[(1) - (2)]); if ((yyvsp[(2) - (2)].list)) { A_Indirection *n = makeNode(A_Indirection); n->arg = (Node *) p; n->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.node) = (Node *) n; } else (yyval.node) = (Node *) p; ;} break; case 2047: #line 13820 "gram.y" { if ((yyvsp[(4) - (4)].list)) { A_Indirection *n = makeNode(A_Indirection); n->arg = (yyvsp[(2) - (4)].node); n->indirection = check_indirection((yyvsp[(4) - (4)].list), yyscanner); (yyval.node) = (Node *)n; } else if (operator_precedence_warning) { /* * If precedence warnings are enabled, insert * AEXPR_PAREN nodes wrapping all explicitly * parenthesized subexpressions; this prevents bogus * warnings from being issued when the ordering has * been forced by parentheses. Take care that an * AEXPR_PAREN node has the same exprLocation as its * child, so as not to cause surprising changes in * error cursor positioning. * * In principle we should not be relying on a GUC to * decide whether to insert AEXPR_PAREN nodes. * However, since they have no effect except to * suppress warnings, it's probably safe enough; and * we'd just as soon not waste cycles on dummy parse * nodes if we don't have to. */ (yyval.node) = (Node *) makeA_Expr(AEXPR_PAREN, NIL, (yyvsp[(2) - (4)].node), NULL, exprLocation((yyvsp[(2) - (4)].node))); } else (yyval.node) = (yyvsp[(2) - (4)].node); ;} break; case 2048: #line 13854 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2049: #line 13856 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2050: #line 13858 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = EXPR_SUBLINK; n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; n->subselect = (yyvsp[(1) - (1)].node); n->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)n; ;} break; case 2051: #line 13869 "gram.y" { /* * Because the select_with_parens nonterminal is designed * to "eat" as many levels of parens as possible, the * '(' a_expr ')' opt_indirection production above will * fail to match a sub-SELECT with indirection decoration; * the sub-SELECT won't be regarded as an a_expr as long * as there are parens around it. To support applying * subscripting or field selection to a sub-SELECT result, * we need this redundant-looking production. */ SubLink *n = makeNode(SubLink); A_Indirection *a = makeNode(A_Indirection); n->subLinkType = EXPR_SUBLINK; n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; n->subselect = (yyvsp[(1) - (2)].node); n->location = (yylsp[(1) - (2)]); a->arg = (Node *)n; a->indirection = check_indirection((yyvsp[(2) - (2)].list), yyscanner); (yyval.node) = (Node *)a; ;} break; case 2052: #line 13893 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = EXISTS_SUBLINK; n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; n->subselect = (yyvsp[(2) - (2)].node); n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; ;} break; case 2053: #line 13904 "gram.y" { SubLink *n = makeNode(SubLink); n->subLinkType = ARRAY_SUBLINK; n->subLinkId = 0; n->testexpr = NULL; n->operName = NIL; n->subselect = (yyvsp[(2) - (2)].node); n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; ;} break; case 2054: #line 13915 "gram.y" { A_ArrayExpr *n = castNode(A_ArrayExpr, (yyvsp[(2) - (2)].node)); /* point outermost A_ArrayExpr to the ARRAY keyword */ n->location = (yylsp[(1) - (2)]); (yyval.node) = (Node *)n; ;} break; case 2055: #line 13922 "gram.y" { RowExpr *r = makeNode(RowExpr); r->args = (yyvsp[(1) - (1)].list); r->row_typeid = InvalidOid; /* not analyzed yet */ r->colnames = NIL; /* to be filled in during analysis */ r->row_format = COERCE_EXPLICIT_CALL; /* abuse */ r->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)r; ;} break; case 2056: #line 13932 "gram.y" { RowExpr *r = makeNode(RowExpr); r->args = (yyvsp[(1) - (1)].list); r->row_typeid = InvalidOid; /* not analyzed yet */ r->colnames = NIL; /* to be filled in during analysis */ r->row_format = COERCE_IMPLICIT_CAST; /* abuse */ r->location = (yylsp[(1) - (1)]); (yyval.node) = (Node *)r; ;} break; case 2057: #line 13942 "gram.y" { GroupingFunc *g = makeNode(GroupingFunc); g->args = (yyvsp[(3) - (4)].list); g->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)g; ;} break; case 2058: #line 13951 "gram.y" { (yyval.node) = (Node *) makeFuncCall((yyvsp[(1) - (3)].list), NIL, (yylsp[(1) - (3)])); ;} break; case 2059: #line 13955 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (5)].list), (yyvsp[(3) - (5)].list), (yylsp[(1) - (5)])); n->agg_order = (yyvsp[(4) - (5)].list); (yyval.node) = (Node *)n; ;} break; case 2060: #line 13961 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), list_make1((yyvsp[(4) - (6)].node)), (yylsp[(1) - (6)])); n->func_variadic = true; n->agg_order = (yyvsp[(5) - (6)].list); (yyval.node) = (Node *)n; ;} break; case 2061: #line 13968 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (8)].list), lappend((yyvsp[(3) - (8)].list), (yyvsp[(6) - (8)].node)), (yylsp[(1) - (8)])); n->func_variadic = true; n->agg_order = (yyvsp[(7) - (8)].list); (yyval.node) = (Node *)n; ;} break; case 2062: #line 13975 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), (yylsp[(1) - (6)])); n->agg_order = (yyvsp[(5) - (6)].list); /* Ideally we'd mark the FuncCall node to indicate * "must be an aggregate", but there's no provision * for that in FuncCall at the moment. */ (yyval.node) = (Node *)n; ;} break; case 2063: #line 13985 "gram.y" { FuncCall *n = makeFuncCall((yyvsp[(1) - (6)].list), (yyvsp[(4) - (6)].list), (yylsp[(1) - (6)])); n->agg_order = (yyvsp[(5) - (6)].list); n->agg_distinct = true; (yyval.node) = (Node *)n; ;} break; case 2064: #line 13992 "gram.y" { /* * We consider AGGREGATE(*) to invoke a parameterless * aggregate. This does the right thing for COUNT(*), * and there are no other aggregates in SQL that accept * '*' as parameter. * * The FuncCall node is also marked agg_star = true, * so that later processing can detect what the argument * really was. */ FuncCall *n = makeFuncCall((yyvsp[(1) - (4)].list), NIL, (yylsp[(1) - (4)])); n->agg_star = true; (yyval.node) = (Node *)n; ;} break; case 2065: #line 14020 "gram.y" { FuncCall *n = (FuncCall *) (yyvsp[(1) - (4)].node); /* * The order clause for WITHIN GROUP and the one for * plain-aggregate ORDER BY share a field, so we have to * check here that at most one is present. We also check * for DISTINCT and VARIADIC here to give a better error * location. Other consistency checks are deferred to * parse analysis. */ if ((yyvsp[(2) - (4)].list) != NIL) { if (n->agg_order != NIL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot use multiple ORDER BY clauses with WITHIN GROUP"), parser_errposition((yylsp[(2) - (4)])))); if (n->agg_distinct) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot use DISTINCT with WITHIN GROUP"), parser_errposition((yylsp[(2) - (4)])))); if (n->func_variadic) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot use VARIADIC with WITHIN GROUP"), parser_errposition((yylsp[(2) - (4)])))); n->agg_order = (yyvsp[(2) - (4)].list); n->agg_within_group = true; } n->agg_filter = (yyvsp[(3) - (4)].node); n->over = (yyvsp[(4) - (4)].windef); (yyval.node) = (Node *) n; ;} break; case 2066: #line 14055 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2067: #line 14065 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2068: #line 14066 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2069: #line 14074 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("pg_collation_for"), list_make1((yyvsp[(4) - (5)].node)), (yylsp[(1) - (5)])); ;} break; case 2070: #line 14080 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_DATE, -1, (yylsp[(1) - (1)])); ;} break; case 2071: #line 14084 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME, -1, (yylsp[(1) - (1)])); ;} break; case 2072: #line 14088 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2073: #line 14092 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP, -1, (yylsp[(1) - (1)])); ;} break; case 2074: #line 14096 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_TIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2075: #line 14100 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME, -1, (yylsp[(1) - (1)])); ;} break; case 2076: #line 14104 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIME_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2077: #line 14108 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP, -1, (yylsp[(1) - (1)])); ;} break; case 2078: #line 14112 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_LOCALTIMESTAMP_N, (yyvsp[(3) - (4)].ival), (yylsp[(1) - (4)])); ;} break; case 2079: #line 14116 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_ROLE, -1, (yylsp[(1) - (1)])); ;} break; case 2080: #line 14120 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_USER, -1, (yylsp[(1) - (1)])); ;} break; case 2081: #line 14124 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_SESSION_USER, -1, (yylsp[(1) - (1)])); ;} break; case 2082: #line 14128 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_USER, -1, (yylsp[(1) - (1)])); ;} break; case 2083: #line 14132 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_CATALOG, -1, (yylsp[(1) - (1)])); ;} break; case 2084: #line 14136 "gram.y" { (yyval.node) = makeSQLValueFunction(SVFOP_CURRENT_SCHEMA, -1, (yylsp[(1) - (1)])); ;} break; case 2085: #line 14140 "gram.y" { (yyval.node) = makeTypeCast((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].typnam), (yylsp[(1) - (6)])); ;} break; case 2086: #line 14142 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("date_part"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 2087: #line 14146 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("normalize"), list_make1((yyvsp[(3) - (4)].node)), (yylsp[(1) - (4)])); ;} break; case 2088: #line 14150 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("normalize"), list_make2((yyvsp[(3) - (6)].node), makeStringConst((yyvsp[(5) - (6)].str), (yylsp[(5) - (6)]))), (yylsp[(1) - (6)])); ;} break; case 2089: #line 14154 "gram.y" { /* overlay(A PLACING B FROM C FOR D) is converted to * overlay(A, B, C, D) * overlay(A PLACING B FROM C) is converted to * overlay(A, B, C) */ (yyval.node) = (Node *) makeFuncCall(SystemFuncName("overlay"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 2090: #line 14163 "gram.y" { /* position(A in B) is converted to position(B, A) */ (yyval.node) = (Node *) makeFuncCall(SystemFuncName("position"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 2091: #line 14168 "gram.y" { /* substring(A from B for C) is converted to * substring(A, B, C) - thomas 2000-11-28 */ (yyval.node) = (Node *) makeFuncCall(SystemFuncName("substring"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 2092: #line 14175 "gram.y" { /* TREAT(expr AS target) converts expr of a particular type to target, * which is defined to be a subtype of the original expression. * In SQL99, this is intended for use with structured UDTs, * but let's make this a generally useful form allowing stronger * coercions than are handled by implicit casting. * * Convert SystemTypeName() to SystemFuncName() even though * at the moment they result in the same thing. */ (yyval.node) = (Node *) makeFuncCall(SystemFuncName(((Value *)llast((yyvsp[(5) - (6)].typnam)->names))->val.str), list_make1((yyvsp[(3) - (6)].node)), (yylsp[(1) - (6)])); ;} break; case 2093: #line 14190 "gram.y" { /* various trim expressions are defined in SQL * - thomas 1997-07-19 */ (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; case 2094: #line 14197 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("ltrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; case 2095: #line 14201 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("rtrim"), (yyvsp[(4) - (5)].list), (yylsp[(1) - (5)])); ;} break; case 2096: #line 14205 "gram.y" { (yyval.node) = (Node *) makeFuncCall(SystemFuncName("btrim"), (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 2097: #line 14209 "gram.y" { (yyval.node) = (Node *) makeSimpleA_Expr(AEXPR_NULLIF, "=", (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node), (yylsp[(1) - (6)])); ;} break; case 2098: #line 14213 "gram.y" { CoalesceExpr *c = makeNode(CoalesceExpr); c->args = (yyvsp[(3) - (4)].list); c->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)c; ;} break; case 2099: #line 14220 "gram.y" { MinMaxExpr *v = makeNode(MinMaxExpr); v->args = (yyvsp[(3) - (4)].list); v->op = IS_GREATEST; v->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)v; ;} break; case 2100: #line 14228 "gram.y" { MinMaxExpr *v = makeNode(MinMaxExpr); v->args = (yyvsp[(3) - (4)].list); v->op = IS_LEAST; v->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)v; ;} break; case 2101: #line 14236 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLCONCAT, NULL, NIL, (yyvsp[(3) - (4)].list), (yylsp[(1) - (4)])); ;} break; case 2102: #line 14240 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (5)].str), NIL, NIL, (yylsp[(1) - (5)])); ;} break; case 2103: #line 14244 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), (yyvsp[(6) - (7)].list), NIL, (yylsp[(1) - (7)])); ;} break; case 2104: #line 14248 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (7)].str), NIL, (yyvsp[(6) - (7)].list), (yylsp[(1) - (7)])); ;} break; case 2105: #line 14252 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLELEMENT, (yyvsp[(4) - (9)].str), (yyvsp[(6) - (9)].list), (yyvsp[(8) - (9)].list), (yylsp[(1) - (9)])); ;} break; case 2106: #line 14256 "gram.y" { /* xmlexists(A PASSING [BY REF] B [BY REF]) is * converted to xmlexists(A, B)*/ (yyval.node) = (Node *) makeFuncCall(SystemFuncName("xmlexists"), list_make2((yyvsp[(3) - (5)].node), (yyvsp[(4) - (5)].node)), (yylsp[(1) - (5)])); ;} break; case 2107: #line 14262 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLFOREST, NULL, (yyvsp[(3) - (4)].list), NIL, (yylsp[(1) - (4)])); ;} break; case 2108: #line 14266 "gram.y" { XmlExpr *x = (XmlExpr *) makeXmlExpr(IS_XMLPARSE, NULL, NIL, list_make2((yyvsp[(4) - (6)].node), makeBoolAConst((yyvsp[(5) - (6)].boolean), -1)), (yylsp[(1) - (6)])); x->xmloption = (yyvsp[(3) - (6)].ival); (yyval.node) = (Node *)x; ;} break; case 2109: #line 14275 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (5)].str), NULL, NIL, (yylsp[(1) - (5)])); ;} break; case 2110: #line 14279 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLPI, (yyvsp[(4) - (7)].str), NULL, list_make1((yyvsp[(6) - (7)].node)), (yylsp[(1) - (7)])); ;} break; case 2111: #line 14283 "gram.y" { (yyval.node) = makeXmlExpr(IS_XMLROOT, NULL, NIL, list_make3((yyvsp[(3) - (7)].node), (yyvsp[(5) - (7)].node), (yyvsp[(6) - (7)].node)), (yylsp[(1) - (7)])); ;} break; case 2112: #line 14288 "gram.y" { XmlSerialize *n = makeNode(XmlSerialize); n->xmloption = (yyvsp[(3) - (7)].ival); n->expr = (yyvsp[(4) - (7)].node); n->typeName = (yyvsp[(6) - (7)].typnam); n->location = (yylsp[(1) - (7)]); (yyval.node) = (Node *)n; ;} break; case 2113: #line 14302 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2114: #line 14304 "gram.y" { (yyval.node) = makeNullAConst(-1); ;} break; case 2115: #line 14308 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_YES, -1); ;} break; case 2116: #line 14310 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO, -1); ;} break; case 2117: #line 14312 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_NO_VALUE, -1); ;} break; case 2118: #line 14314 "gram.y" { (yyval.node) = makeIntConst(XML_STANDALONE_OMITTED, -1); ;} break; case 2119: #line 14317 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2120: #line 14320 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 2121: #line 14321 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 2122: #line 14325 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(3) - (3)].str); (yyval.target)->indirection = NIL; (yyval.target)->val = (Node *) (yyvsp[(1) - (3)].node); (yyval.target)->location = (yylsp[(1) - (3)]); ;} break; case 2123: #line 14333 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; (yyval.target)->val = (Node *) (yyvsp[(1) - (1)].node); (yyval.target)->location = (yylsp[(1) - (1)]); ;} break; case 2124: #line 14342 "gram.y" { (yyval.ival) = XMLOPTION_DOCUMENT; ;} break; case 2125: #line 14343 "gram.y" { (yyval.ival) = XMLOPTION_CONTENT; ;} break; case 2126: #line 14346 "gram.y" { (yyval.boolean) = true; ;} break; case 2127: #line 14347 "gram.y" { (yyval.boolean) = false; ;} break; case 2128: #line 14348 "gram.y" { (yyval.boolean) = false; ;} break; case 2129: #line 14354 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2130: #line 14358 "gram.y" { (yyval.node) = (yyvsp[(2) - (3)].node); ;} break; case 2131: #line 14362 "gram.y" { (yyval.node) = (yyvsp[(3) - (3)].node); ;} break; case 2132: #line 14366 "gram.y" { (yyval.node) = (yyvsp[(3) - (4)].node); ;} break; case 2135: #line 14381 "gram.y" { (yyval.list) = (yyvsp[(4) - (5)].list); ;} break; case 2136: #line 14382 "gram.y" { (yyval.list) = NIL; ;} break; case 2137: #line 14386 "gram.y" { (yyval.node) = (yyvsp[(4) - (5)].node); ;} break; case 2138: #line 14387 "gram.y" { (yyval.node) = NULL; ;} break; case 2139: #line 14395 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 2140: #line 14396 "gram.y" { (yyval.list) = NIL; ;} break; case 2141: #line 14400 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].windef)); ;} break; case 2142: #line 14402 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].windef)); ;} break; case 2143: #line 14407 "gram.y" { WindowDef *n = (yyvsp[(3) - (3)].windef); n->name = (yyvsp[(1) - (3)].str); (yyval.windef) = n; ;} break; case 2144: #line 14415 "gram.y" { (yyval.windef) = (yyvsp[(2) - (2)].windef); ;} break; case 2145: #line 14417 "gram.y" { WindowDef *n = makeNode(WindowDef); n->name = (yyvsp[(2) - (2)].str); n->refname = NULL; n->partitionClause = NIL; n->orderClause = NIL; n->frameOptions = FRAMEOPTION_DEFAULTS; n->startOffset = NULL; n->endOffset = NULL; n->location = (yylsp[(2) - (2)]); (yyval.windef) = n; ;} break; case 2146: #line 14430 "gram.y" { (yyval.windef) = NULL; ;} break; case 2147: #line 14435 "gram.y" { WindowDef *n = makeNode(WindowDef); n->name = NULL; n->refname = (yyvsp[(2) - (6)].str); n->partitionClause = (yyvsp[(3) - (6)].list); n->orderClause = (yyvsp[(4) - (6)].list); /* copy relevant fields of opt_frame_clause */ n->frameOptions = (yyvsp[(5) - (6)].windef)->frameOptions; n->startOffset = (yyvsp[(5) - (6)].windef)->startOffset; n->endOffset = (yyvsp[(5) - (6)].windef)->endOffset; n->location = (yylsp[(1) - (6)]); (yyval.windef) = n; ;} break; case 2148: #line 14460 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2149: #line 14461 "gram.y" { (yyval.str) = NULL; ;} break; case 2150: #line 14464 "gram.y" { (yyval.list) = (yyvsp[(3) - (3)].list); ;} break; case 2151: #line 14465 "gram.y" { (yyval.list) = NIL; ;} break; case 2152: #line 14474 "gram.y" { WindowDef *n = (yyvsp[(2) - (3)].windef); n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_RANGE; n->frameOptions |= (yyvsp[(3) - (3)].ival); (yyval.windef) = n; ;} break; case 2153: #line 14481 "gram.y" { WindowDef *n = (yyvsp[(2) - (3)].windef); n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_ROWS; n->frameOptions |= (yyvsp[(3) - (3)].ival); (yyval.windef) = n; ;} break; case 2154: #line 14488 "gram.y" { WindowDef *n = (yyvsp[(2) - (3)].windef); n->frameOptions |= FRAMEOPTION_NONDEFAULT | FRAMEOPTION_GROUPS; n->frameOptions |= (yyvsp[(3) - (3)].ival); (yyval.windef) = n; ;} break; case 2155: #line 14495 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_DEFAULTS; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2156: #line 14505 "gram.y" { WindowDef *n = (yyvsp[(1) - (1)].windef); /* reject invalid cases */ if (n->frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame start cannot be UNBOUNDED FOLLOWING"), parser_errposition((yylsp[(1) - (1)])))); if (n->frameOptions & FRAMEOPTION_START_OFFSET_FOLLOWING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from following row cannot end with current row"), parser_errposition((yylsp[(1) - (1)])))); n->frameOptions |= FRAMEOPTION_END_CURRENT_ROW; (yyval.windef) = n; ;} break; case 2157: #line 14522 "gram.y" { WindowDef *n1 = (yyvsp[(2) - (4)].windef); WindowDef *n2 = (yyvsp[(4) - (4)].windef); /* form merged options */ int frameOptions = n1->frameOptions; /* shift converts START_ options to END_ options */ frameOptions |= n2->frameOptions << 1; frameOptions |= FRAMEOPTION_BETWEEN; /* reject invalid cases */ if (frameOptions & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame start cannot be UNBOUNDED FOLLOWING"), parser_errposition((yylsp[(2) - (4)])))); if (frameOptions & FRAMEOPTION_END_UNBOUNDED_PRECEDING) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame end cannot be UNBOUNDED PRECEDING"), parser_errposition((yylsp[(4) - (4)])))); if ((frameOptions & FRAMEOPTION_START_CURRENT_ROW) && (frameOptions & FRAMEOPTION_END_OFFSET_PRECEDING)) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from current row cannot have preceding rows"), parser_errposition((yylsp[(4) - (4)])))); if ((frameOptions & FRAMEOPTION_START_OFFSET_FOLLOWING) && (frameOptions & (FRAMEOPTION_END_OFFSET_PRECEDING | FRAMEOPTION_END_CURRENT_ROW))) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("frame starting from following row cannot have preceding rows"), parser_errposition((yylsp[(4) - (4)])))); n1->frameOptions = frameOptions; n1->endOffset = n2->startOffset; (yyval.windef) = n1; ;} break; case 2158: #line 14567 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_PRECEDING; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2159: #line 14575 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_UNBOUNDED_FOLLOWING; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2160: #line 14583 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_CURRENT_ROW; n->startOffset = NULL; n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2161: #line 14591 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_OFFSET_PRECEDING; n->startOffset = (yyvsp[(1) - (2)].node); n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2162: #line 14599 "gram.y" { WindowDef *n = makeNode(WindowDef); n->frameOptions = FRAMEOPTION_START_OFFSET_FOLLOWING; n->startOffset = (yyvsp[(1) - (2)].node); n->endOffset = NULL; (yyval.windef) = n; ;} break; case 2163: #line 14609 "gram.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_CURRENT_ROW; ;} break; case 2164: #line 14610 "gram.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_GROUP; ;} break; case 2165: #line 14611 "gram.y" { (yyval.ival) = FRAMEOPTION_EXCLUDE_TIES; ;} break; case 2166: #line 14612 "gram.y" { (yyval.ival) = 0; ;} break; case 2167: #line 14613 "gram.y" { (yyval.ival) = 0; ;} break; case 2168: #line 14627 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2169: #line 14628 "gram.y" { (yyval.list) = NIL; ;} break; case 2170: #line 14629 "gram.y" { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} break; case 2171: #line 14632 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2172: #line 14633 "gram.y" { (yyval.list) = NIL; ;} break; case 2173: #line 14636 "gram.y" { (yyval.list) = lappend((yyvsp[(2) - (5)].list), (yyvsp[(4) - (5)].node)); ;} break; case 2174: #line 14639 "gram.y" { (yyval.ival) = ANY_SUBLINK; ;} break; case 2175: #line 14640 "gram.y" { (yyval.ival) = ANY_SUBLINK; ;} break; case 2176: #line 14641 "gram.y" { (yyval.ival) = ALL_SUBLINK; ;} break; case 2177: #line 14644 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2178: #line 14645 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2179: #line 14648 "gram.y" { (yyval.str) = "+"; ;} break; case 2180: #line 14649 "gram.y" { (yyval.str) = "-"; ;} break; case 2181: #line 14650 "gram.y" { (yyval.str) = "*"; ;} break; case 2182: #line 14651 "gram.y" { (yyval.str) = "/"; ;} break; case 2183: #line 14652 "gram.y" { (yyval.str) = "%"; ;} break; case 2184: #line 14653 "gram.y" { (yyval.str) = "^"; ;} break; case 2185: #line 14654 "gram.y" { (yyval.str) = "<"; ;} break; case 2186: #line 14655 "gram.y" { (yyval.str) = ">"; ;} break; case 2187: #line 14656 "gram.y" { (yyval.str) = "="; ;} break; case 2188: #line 14657 "gram.y" { (yyval.str) = "<="; ;} break; case 2189: #line 14658 "gram.y" { (yyval.str) = ">="; ;} break; case 2190: #line 14659 "gram.y" { (yyval.str) = "<>"; ;} break; case 2191: #line 14660 "gram.y" { (yyval.str) = "?"; ;} break; case 2192: #line 14664 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2193: #line 14666 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2194: #line 14671 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2195: #line 14673 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2196: #line 14678 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2197: #line 14680 "gram.y" { (yyval.list) = (yyvsp[(3) - (4)].list); ;} break; case 2198: #line 14682 "gram.y" { (yyval.list) = list_make1(makeString("~~")); ;} break; case 2199: #line 14684 "gram.y" { (yyval.list) = list_make1(makeString("!~~")); ;} break; case 2200: #line 14686 "gram.y" { (yyval.list) = list_make1(makeString("~~*")); ;} break; case 2201: #line 14688 "gram.y" { (yyval.list) = list_make1(makeString("!~~*")); ;} break; case 2202: #line 14700 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2203: #line 14704 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2204: #line 14711 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2205: #line 14715 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2206: #line 14721 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2207: #line 14725 "gram.y" { NamedArgExpr *na = makeNode(NamedArgExpr); na->name = (yyvsp[(1) - (3)].str); na->arg = (Expr *) (yyvsp[(3) - (3)].node); na->argnumber = -1; /* until determined */ na->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) na; ;} break; case 2208: #line 14734 "gram.y" { NamedArgExpr *na = makeNode(NamedArgExpr); na->name = (yyvsp[(1) - (3)].str); na->arg = (Expr *) (yyvsp[(3) - (3)].node); na->argnumber = -1; /* until determined */ na->location = (yylsp[(1) - (3)]); (yyval.node) = (Node *) na; ;} break; case 2209: #line 14744 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].typnam)); ;} break; case 2210: #line 14745 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typnam)); ;} break; case 2211: #line 14749 "gram.y" { (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 2212: #line 14753 "gram.y" { (yyval.node) = makeAArrayExpr((yyvsp[(2) - (3)].list), (yylsp[(1) - (3)])); ;} break; case 2213: #line 14757 "gram.y" { (yyval.node) = makeAArrayExpr(NIL, (yylsp[(1) - (2)])); ;} break; case 2214: #line 14762 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2215: #line 14763 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node)); ;} break; case 2216: #line 14769 "gram.y" { (yyval.list) = list_make2(makeStringConst((yyvsp[(1) - (3)].str), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; case 2217: #line 14773 "gram.y" { (yyval.list) = list_make2(makeParamRef((yyvsp[(1) - (3)].ival), (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; case 2218: #line 14777 "gram.y" { (yyval.list) = list_make2(makeParamRef(0, (yylsp[(1) - (3)])), (yyvsp[(3) - (3)].node)); ;} break; case 2219: #line 14780 "gram.y" { (yyval.list) = NIL; ;} break; case 2220: #line 14787 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2221: #line 14788 "gram.y" { (yyval.str) = "year"; ;} break; case 2222: #line 14789 "gram.y" { (yyval.str) = "month"; ;} break; case 2223: #line 14790 "gram.y" { (yyval.str) = "day"; ;} break; case 2224: #line 14791 "gram.y" { (yyval.str) = "hour"; ;} break; case 2225: #line 14792 "gram.y" { (yyval.str) = "minute"; ;} break; case 2226: #line 14793 "gram.y" { (yyval.str) = "second"; ;} break; case 2227: #line 14794 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2228: #line 14798 "gram.y" { (yyval.str) = "nfc"; ;} break; case 2229: #line 14799 "gram.y" { (yyval.str) = "nfd"; ;} break; case 2230: #line 14800 "gram.y" { (yyval.str) = "nfkc"; ;} break; case 2231: #line 14801 "gram.y" { (yyval.str) = "nfkd"; ;} break; case 2232: #line 14812 "gram.y" { (yyval.list) = list_make4((yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node)); ;} break; case 2233: #line 14816 "gram.y" { (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; case 2234: #line 14823 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2235: #line 14829 "gram.y" { (yyval.list) = list_make2((yyvsp[(3) - (3)].node), (yyvsp[(1) - (3)].node)); ;} break; case 2236: #line 14830 "gram.y" { (yyval.list) = NIL; ;} break; case 2237: #line 14847 "gram.y" { (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node)); ;} break; case 2238: #line 14851 "gram.y" { /* not legal per SQL99, but might as well allow it */ (yyval.list) = list_make3((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyvsp[(2) - (3)].node)); ;} break; case 2239: #line 14856 "gram.y" { (yyval.list) = list_make2((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node)); ;} break; case 2240: #line 14860 "gram.y" { /* * Since there are no cases where this syntax allows * a textual FOR value, we forcibly cast the argument * to int4. The possible matches in pg_proc are * substring(text,int4) and substring(text,text), * and we don't want the parser to choose the latter, * which it is likely to do if the second argument * is unknown or doesn't have an implicit cast to int4. */ (yyval.list) = list_make3((yyvsp[(1) - (2)].node), makeIntConst(1, -1), makeTypeCast((yyvsp[(2) - (2)].node), SystemTypeName("int4"), -1)); ;} break; case 2241: #line 14875 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 2242: #line 14879 "gram.y" { (yyval.list) = NIL; ;} break; case 2243: #line 14883 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2244: #line 14886 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2245: #line 14889 "gram.y" { (yyval.list) = lappend((yyvsp[(3) - (3)].list), (yyvsp[(1) - (3)].node)); ;} break; case 2246: #line 14890 "gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 2247: #line 14891 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 2248: #line 14895 "gram.y" { SubLink *n = makeNode(SubLink); n->subselect = (yyvsp[(1) - (1)].node); /* other fields will be filled later */ (yyval.node) = (Node *)n; ;} break; case 2249: #line 14901 "gram.y" { (yyval.node) = (Node *)(yyvsp[(2) - (3)].list); ;} break; case 2250: #line 14912 "gram.y" { CaseExpr *c = makeNode(CaseExpr); c->casetype = InvalidOid; /* not analyzed yet */ c->arg = (Expr *) (yyvsp[(2) - (5)].node); c->args = (yyvsp[(3) - (5)].list); c->defresult = (Expr *) (yyvsp[(4) - (5)].node); c->location = (yylsp[(1) - (5)]); (yyval.node) = (Node *)c; ;} break; case 2251: #line 14925 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2252: #line 14926 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 2253: #line 14931 "gram.y" { CaseWhen *w = makeNode(CaseWhen); w->expr = (Expr *) (yyvsp[(2) - (4)].node); w->result = (Expr *) (yyvsp[(4) - (4)].node); w->location = (yylsp[(1) - (4)]); (yyval.node) = (Node *)w; ;} break; case 2254: #line 14941 "gram.y" { (yyval.node) = (yyvsp[(2) - (2)].node); ;} break; case 2255: #line 14942 "gram.y" { (yyval.node) = NULL; ;} break; case 2256: #line 14945 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2257: #line 14946 "gram.y" { (yyval.node) = NULL; ;} break; case 2258: #line 14950 "gram.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (1)].str), NIL, (yylsp[(1) - (1)]), yyscanner); ;} break; case 2259: #line 14954 "gram.y" { (yyval.node) = makeColumnRef((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].list), (yylsp[(1) - (2)]), yyscanner); ;} break; case 2260: #line 14961 "gram.y" { (yyval.node) = (Node *) makeString((yyvsp[(2) - (2)].str)); ;} break; case 2261: #line 14965 "gram.y" { (yyval.node) = (Node *) makeNode(A_Star); ;} break; case 2262: #line 14969 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->is_slice = false; ai->lidx = NULL; ai->uidx = (yyvsp[(2) - (3)].node); (yyval.node) = (Node *) ai; ;} break; case 2263: #line 14977 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->is_slice = true; ai->lidx = (yyvsp[(2) - (5)].node); ai->uidx = (yyvsp[(4) - (5)].node); (yyval.node) = (Node *) ai; ;} break; case 2264: #line 14987 "gram.y" { (yyval.node) = (yyvsp[(1) - (1)].node); ;} break; case 2265: #line 14988 "gram.y" { (yyval.node) = NULL; ;} break; case 2266: #line 14992 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].node)); ;} break; case 2267: #line 14993 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 2268: #line 14997 "gram.y" { (yyval.list) = NIL; ;} break; case 2269: #line 14998 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node)); ;} break; case 2272: #line 15012 "gram.y" { (yyval.list) = (yyvsp[(1) - (1)].list); ;} break; case 2273: #line 15013 "gram.y" { (yyval.list) = NIL; ;} break; case 2274: #line 15017 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].target)); ;} break; case 2275: #line 15018 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].target)); ;} break; case 2276: #line 15022 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(3) - (3)].str); (yyval.target)->indirection = NIL; (yyval.target)->val = (Node *)(yyvsp[(1) - (3)].node); (yyval.target)->location = (yylsp[(1) - (3)]); ;} break; case 2277: #line 15038 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = (yyvsp[(2) - (2)].str); (yyval.target)->indirection = NIL; (yyval.target)->val = (Node *)(yyvsp[(1) - (2)].node); (yyval.target)->location = (yylsp[(1) - (2)]); ;} break; case 2278: #line 15046 "gram.y" { (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; (yyval.target)->val = (Node *)(yyvsp[(1) - (1)].node); (yyval.target)->location = (yylsp[(1) - (1)]); ;} break; case 2279: #line 15054 "gram.y" { ColumnRef *n = makeNode(ColumnRef); n->fields = list_make1(makeNode(A_Star)); n->location = (yylsp[(1) - (1)]); (yyval.target) = makeNode(ResTarget); (yyval.target)->name = NULL; (yyval.target)->indirection = NIL; (yyval.target)->val = (Node *)n; (yyval.target)->location = (yylsp[(1) - (1)]); ;} break; case 2280: #line 15075 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].range)); ;} break; case 2281: #line 15076 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].range)); ;} break; case 2282: #line 15088 "gram.y" { (yyval.range) = makeRangeVar(NULL, (yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2283: #line 15092 "gram.y" { check_qualified_name((yyvsp[(2) - (2)].list), yyscanner); (yyval.range) = makeRangeVar(NULL, NULL, (yylsp[(1) - (2)])); switch (list_length((yyvsp[(2) - (2)].list))) { case 1: (yyval.range)->catalogname = NULL; (yyval.range)->schemaname = (yyvsp[(1) - (2)].str); (yyval.range)->relname = strVal(linitial((yyvsp[(2) - (2)].list))); break; case 2: (yyval.range)->catalogname = (yyvsp[(1) - (2)].str); (yyval.range)->schemaname = strVal(linitial((yyvsp[(2) - (2)].list))); (yyval.range)->relname = strVal(lsecond((yyvsp[(2) - (2)].list))); break; default: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("improper qualified name (too many dotted names): %s", NameListToString(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)))), parser_errposition((yylsp[(1) - (2)])))); break; } ;} break; case 2284: #line 15119 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2285: #line 15121 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), makeString((yyvsp[(3) - (3)].str))); ;} break; case 2286: #line 15125 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2287: #line 15128 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2288: #line 15131 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2289: #line 15133 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2290: #line 15135 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2291: #line 15137 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2292: #line 15148 "gram.y" { (yyval.list) = list_make1(makeString((yyvsp[(1) - (1)].str))); ;} break; case 2293: #line 15150 "gram.y" { (yyval.list) = check_func_name(lcons(makeString((yyvsp[(1) - (2)].str)), (yyvsp[(2) - (2)].list)), yyscanner); ;} break; case 2294: #line 15161 "gram.y" { (yyval.node) = makeIntConst((yyvsp[(1) - (1)].ival), (yylsp[(1) - (1)])); ;} break; case 2295: #line 15165 "gram.y" { (yyval.node) = makeFloatConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2296: #line 15169 "gram.y" { (yyval.node) = makeStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2297: #line 15173 "gram.y" { (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2298: #line 15177 "gram.y" { /* This is a bit constant per SQL99: * Without Feature F511, "BIT data type", * a shall not be a * or a . */ (yyval.node) = makeBitStringConst((yyvsp[(1) - (1)].str), (yylsp[(1) - (1)])); ;} break; case 2299: #line 15186 "gram.y" { /* generic type 'literal' syntax */ TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (2)].list)); t->location = (yylsp[(1) - (2)]); (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), t); ;} break; case 2300: #line 15193 "gram.y" { /* generic syntax with a type modifier */ TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (6)].list)); ListCell *lc; /* * We must use func_arg_list and opt_sort_clause in the * production to avoid reduce/reduce conflicts, but we * don't actually wish to allow NamedArgExpr in this * context, nor ORDER BY. */ foreach(lc, (yyvsp[(3) - (6)].list)) { NamedArgExpr *arg = (NamedArgExpr *) lfirst(lc); if (IsA(arg, NamedArgExpr)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("type modifier cannot have parameter name"), parser_errposition(arg->location))); } if ((yyvsp[(4) - (6)].list) != NIL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("type modifier cannot have ORDER BY"), parser_errposition((yylsp[(4) - (6)])))); t->typmods = (yyvsp[(3) - (6)].list); t->location = (yylsp[(1) - (6)]); (yyval.node) = makeStringConstCast((yyvsp[(6) - (6)].str), (yylsp[(6) - (6)]), t); ;} break; case 2301: #line 15225 "gram.y" { /* generic type 'literal' syntax */ TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (2)].list)); t->location = (yylsp[(1) - (2)]); (yyval.node) = makeParamRefCast((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)]), t); ;} break; case 2302: #line 15232 "gram.y" { /* generic syntax with a type modifier */ TypeName *t = makeTypeNameFromNameList((yyvsp[(1) - (6)].list)); ListCell *lc; /* * We must use func_arg_list and opt_sort_clause in the * production to avoid reduce/reduce conflicts, but we * don't actually wish to allow NamedArgExpr in this * context, nor ORDER BY. */ foreach(lc, (yyvsp[(3) - (6)].list)) { NamedArgExpr *arg = (NamedArgExpr *) lfirst(lc); if (IsA(arg, NamedArgExpr)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("type modifier cannot have parameter name"), parser_errposition(arg->location))); } if ((yyvsp[(4) - (6)].list) != NIL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("type modifier cannot have ORDER BY"), parser_errposition((yylsp[(4) - (6)])))); t->typmods = (yyvsp[(3) - (6)].list); t->location = (yylsp[(1) - (6)]); (yyval.node) = makeParamRefCast((yyvsp[(6) - (6)].ival), (yylsp[(6) - (6)]), t); ;} break; case 2303: #line 15264 "gram.y" { (yyval.node) = makeStringConstCast((yyvsp[(2) - (2)].str), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); ;} break; case 2304: #line 15268 "gram.y" { TypeName *t = (yyvsp[(1) - (3)].typnam); t->typmods = (yyvsp[(3) - (3)].list); (yyval.node) = makeStringConstCast((yyvsp[(2) - (3)].str), (yylsp[(2) - (3)]), t); ;} break; case 2305: #line 15274 "gram.y" { TypeName *t = (yyvsp[(1) - (5)].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); (yyval.node) = makeStringConstCast((yyvsp[(5) - (5)].str), (yylsp[(5) - (5)]), t); ;} break; case 2306: #line 15281 "gram.y" { (yyval.node) = makeParamRefCast((yyvsp[(2) - (2)].ival), (yylsp[(2) - (2)]), (yyvsp[(1) - (2)].typnam)); ;} break; case 2307: #line 15285 "gram.y" { TypeName *t = (yyvsp[(1) - (3)].typnam); t->typmods = (yyvsp[(3) - (3)].list); (yyval.node) = makeParamRefCast((yyvsp[(2) - (3)].ival), (yylsp[(2) - (3)]), t); ;} break; case 2308: #line 15291 "gram.y" { TypeName *t = (yyvsp[(1) - (5)].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); (yyval.node) = makeParamRefCast((yyvsp[(5) - (5)].ival), (yylsp[(5) - (5)]), t); ;} break; case 2309: #line 15299 "gram.y" { TypeName *t = (yyvsp[(1) - (5)].typnam); t->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), makeIntConst((yyvsp[(3) - (5)].ival), (yylsp[(3) - (5)]))); (yyval.node) = makeParamRefCast(0, (yylsp[(5) - (5)]), t); ;} break; case 2310: #line 15306 "gram.y" { (yyval.node) = makeBoolAConst(true, (yylsp[(1) - (1)])); ;} break; case 2311: #line 15310 "gram.y" { (yyval.node) = makeBoolAConst(false, (yylsp[(1) - (1)])); ;} break; case 2312: #line 15314 "gram.y" { (yyval.node) = makeNullAConst((yylsp[(1) - (1)])); ;} break; case 2313: #line 15319 "gram.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; case 2314: #line 15320 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2315: #line 15322 "gram.y" { (yyval.ival) = (yyvsp[(1) - (1)].ival); ;} break; case 2316: #line 15323 "gram.y" { (yyval.ival) = + (yyvsp[(2) - (2)].ival); ;} break; case 2317: #line 15324 "gram.y" { (yyval.ival) = - (yyvsp[(2) - (2)].ival); ;} break; case 2318: #line 15329 "gram.y" { RoleSpec *spc = (RoleSpec *) (yyvsp[(1) - (1)].rolespec); switch (spc->roletype) { case ROLESPEC_CSTRING: (yyval.str) = spc->rolename; break; case ROLESPEC_PUBLIC: ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("role name \"%s\" is reserved", "public"), parser_errposition((yylsp[(1) - (1)])))); break; case ROLESPEC_SESSION_USER: ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("%s cannot be used as a role name here", "SESSION_USER"), parser_errposition((yylsp[(1) - (1)])))); break; case ROLESPEC_CURRENT_USER: ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("%s cannot be used as a role name here", "CURRENT_USER"), parser_errposition((yylsp[(1) - (1)])))); break; } ;} break; case 2319: #line 15362 "gram.y" { /* * "public" and "none" are not keywords, but they must * be treated specially here. */ RoleSpec *n; if (strcmp((yyvsp[(1) - (1)].str), "public") == 0) { n = (RoleSpec *) makeRoleSpec(ROLESPEC_PUBLIC, (yylsp[(1) - (1)])); n->roletype = ROLESPEC_PUBLIC; } else if (strcmp((yyvsp[(1) - (1)].str), "none") == 0) { ereport(ERROR, (errcode(ERRCODE_RESERVED_NAME), errmsg("role name \"%s\" is reserved", "none"), parser_errposition((yylsp[(1) - (1)])))); } else { n = makeRoleSpec(ROLESPEC_CSTRING, (yylsp[(1) - (1)])); n->rolename = pstrdup((yyvsp[(1) - (1)].str)); } (yyval.rolespec) = n; ;} break; case 2320: #line 15389 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_CURRENT_USER, (yylsp[(1) - (1)])); ;} break; case 2321: #line 15393 "gram.y" { (yyval.rolespec) = makeRoleSpec(ROLESPEC_SESSION_USER, (yylsp[(1) - (1)])); ;} break; case 2322: #line 15399 "gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].rolespec)); ;} break; case 2323: #line 15401 "gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].rolespec)); ;} break; case 2324: #line 15417 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2325: #line 15418 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2326: #line 15419 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2327: #line 15424 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2328: #line 15425 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2329: #line 15426 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2330: #line 15431 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2331: #line 15432 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2332: #line 15433 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2333: #line 15434 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2334: #line 15440 "gram.y" { (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 2335: #line 15441 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2336: #line 15442 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2337: #line 15443 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 2338: #line 15444 "gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; /* Line 1267 of yacc.c. */ #line 46266 "gram.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; *++yylsp = yyloc; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (&yylloc, yyscanner, YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (&yylloc, yyscanner, yymsg); } else { yyerror (&yylloc, yyscanner, YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } yyerror_range[0] = yylloc; if (yyerrstatus == 3) { /* If just tried and failed to reuse look-ahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, &yylloc, yyscanner); yychar = YYEMPTY; } } /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; yyerror_range[0] = yylsp[1-yylen]; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yyerror_range[0] = *yylsp; yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp, yyscanner); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; *++yyvsp = yylval; yyerror_range[1] = yylloc; /* Using YYLLOC is tempting, but would change the location of the look-ahead. YYLOC is available though. */ YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); *++yylsp = yyloc; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (&yylloc, yyscanner, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc, yyscanner); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp, yylsp, yyscanner); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } #line 15951 "gram.y" /* * The signature of this function is required by bison. However, we * ignore the passed yylloc and instead use the last token position * available from the scanner. */ static void base_yyerror(YYLTYPE *yylloc, core_yyscan_t yyscanner, const char *msg) { parser_yyerror(msg); } static RawStmt * makeRawStmt(Node *stmt, int stmt_location) { RawStmt *rs = makeNode(RawStmt); rs->stmt = stmt; rs->stmt_location = stmt_location; rs->stmt_len = 0; /* might get changed later */ return rs; } /* Adjust a RawStmt to reflect that it doesn't run to the end of the string */ static void updateRawStmtEnd(RawStmt *rs, int end_location) { /* * If we already set the length, don't change it. This is for situations * like "select foo ;; select bar" where the same statement will be last * in the string for more than one semicolon. */ if (rs->stmt_len > 0) return; /* OK, update length of RawStmt */ rs->stmt_len = end_location - rs->stmt_location; } static Node * makeColumnRef(char *colname, List *indirection, int location, core_yyscan_t yyscanner) { /* * Generate a ColumnRef node, with an A_Indirection node added if there * is any subscripting in the specified indirection list. However, * any field selection at the start of the indirection list must be * transposed into the "fields" part of the ColumnRef node. */ ColumnRef *c = makeNode(ColumnRef); int nfields = 0; ListCell *l; c->location = location; foreach(l, indirection) { if (IsA(lfirst(l), A_Indices)) { A_Indirection *i = makeNode(A_Indirection); if (nfields == 0) { /* easy case - all indirection goes to A_Indirection */ c->fields = list_make1(makeString(colname)); i->indirection = check_indirection(indirection, yyscanner); } else { /* got to split the list in two */ i->indirection = check_indirection(list_copy_tail(indirection, nfields), yyscanner); indirection = list_truncate(indirection, nfields); c->fields = lcons(makeString(colname), indirection); } i->arg = (Node *) c; return (Node *) i; } else if (IsA(lfirst(l), A_Star)) { /* We only allow '*' at the end of a ColumnRef */ if (lnext(indirection, l) != NULL) parser_yyerror("improper use of \"*\""); } nfields++; } /* No subscripting, so all indirection gets added to field list */ c->fields = lcons(makeString(colname), indirection); return (Node *) c; } static Node * makeTypeCast(Node *arg, TypeName *typename, int location) { TypeCast *n = makeNode(TypeCast); n->arg = arg; n->typeName = typename; n->location = location; return (Node *) n; } static Node * makeStringConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.type = T_String; n->val.val.str = str; n->location = location; return (Node *)n; } static Node * makeStringConstCast(char *str, int location, TypeName *typename) { Node *s = makeStringConst(str, location); return makeTypeCast(s, typename, -1); } static Node * makeIntConst(int val, int location) { A_Const *n = makeNode(A_Const); n->val.type = T_Integer; n->val.val.ival = val; n->location = location; return (Node *)n; } static Node * makeFloatConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.type = T_Float; n->val.val.str = str; n->location = location; return (Node *)n; } static Node * makeBitStringConst(char *str, int location) { A_Const *n = makeNode(A_Const); n->val.type = T_BitString; n->val.val.str = str; n->location = location; return (Node *)n; } static Node * makeNullAConst(int location) { A_Const *n = makeNode(A_Const); n->val.type = T_Null; n->location = location; return (Node *)n; } static Node * makeAConst(Value *v, int location) { Node *n; switch (v->type) { case T_Float: n = makeFloatConst(v->val.str, location); break; case T_Integer: n = makeIntConst(v->val.ival, location); break; case T_String: default: n = makeStringConst(v->val.str, location); break; } return n; } /* makeBoolAConst() * Create an A_Const string node and put it inside a boolean cast. */ static Node * makeBoolAConst(bool state, int location) { A_Const *n = makeNode(A_Const); n->val.type = T_String; n->val.val.str = (state ? "t" : "f"); n->location = location; return makeTypeCast((Node *)n, SystemTypeName("bool"), -1); } /* makeParamRef * Creates a new ParamRef node */ static Node* makeParamRef(int number, int location) { ParamRef *p = makeNode(ParamRef); p->number = number; p->location = location; return (Node *) p; } static Node * makeParamRefCast(int number, int location, TypeName *typename) { Node *p = makeParamRef(number, location); return makeTypeCast(p, typename, -1); } /* * Makes INTERVAL-like nodes for "INTERVAL ?" and "INTERVAL ? opt_interval", otherwise treat as A_EXPR */ static Node * makeInterval_or_AExprOp(Node *lexpr, Node *rexpr, int location) { if (lexpr && IsA(lexpr, ColumnRef)) { ColumnRef *c = (ColumnRef *) lexpr; if (strcmp(strVal(linitial(c->fields)), "interval") == 0 ) { TypeName *t = SystemTypeName("interval"); t->location = c->location; /* Its too difficult to tell the parser to give us the right typemod, * just use a dummy one if present */ if (rexpr) t->typmods = list_make1(makeIntConst(0, -1)); return makeParamRefCast(0, location, t); } } return (Node *) makeA_Expr(AEXPR_OP, list_make1(makeString("?")), lexpr, rexpr, location); } /* makeRoleSpec * Create a RoleSpec with the given type */ static RoleSpec * makeRoleSpec(RoleSpecType type, int location) { RoleSpec *spec = makeNode(RoleSpec); spec->roletype = type; spec->location = location; return spec; } /* check_qualified_name --- check the result of qualified_name production * * It's easiest to let the grammar production for qualified_name allow * subscripts and '*', which we then must reject here. */ static void check_qualified_name(List *names, core_yyscan_t yyscanner) { ListCell *i; foreach(i, names) { if (!IsA(lfirst(i), String)) parser_yyerror("syntax error"); } } /* check_func_name --- check the result of func_name production * * It's easiest to let the grammar production for func_name allow subscripts * and '*', which we then must reject here. */ static List * check_func_name(List *names, core_yyscan_t yyscanner) { ListCell *i; foreach(i, names) { if (!IsA(lfirst(i), String)) parser_yyerror("syntax error"); } return names; } /* check_indirection --- check the result of indirection production * * We only allow '*' at the end of the list, but it's hard to enforce that * in the grammar, so do it here. */ static List * check_indirection(List *indirection, core_yyscan_t yyscanner) { ListCell *l; foreach(l, indirection) { if (IsA(lfirst(l), A_Star)) { if (lnext(indirection, l) != NULL) parser_yyerror("improper use of \"*\""); } } return indirection; } /* extractArgTypes() * Given a list of FunctionParameter nodes, extract a list of just the * argument types (TypeNames) for input parameters only. This is what * is needed to look up an existing function, which is what is wanted by * the productions that use this call. */ static List * extractArgTypes(List *parameters) { List *result = NIL; ListCell *i; foreach(i, parameters) { FunctionParameter *p = (FunctionParameter *) lfirst(i); if (p->mode != FUNC_PARAM_OUT && p->mode != FUNC_PARAM_TABLE) result = lappend(result, p->argType); } return result; } /* extractAggrArgTypes() * As above, but work from the output of the aggr_args production. */ static List * extractAggrArgTypes(List *aggrargs) { Assert(list_length(aggrargs) == 2); return extractArgTypes((List *) linitial(aggrargs)); } /* makeOrderedSetArgs() * Build the result of the aggr_args production (which see the comments for). * This handles only the case where both given lists are nonempty, so that * we have to deal with multiple VARIADIC arguments. */ static List * makeOrderedSetArgs(List *directargs, List *orderedargs, core_yyscan_t yyscanner) { FunctionParameter *lastd = (FunctionParameter *) llast(directargs); Value *ndirectargs; /* No restriction unless last direct arg is VARIADIC */ if (lastd->mode == FUNC_PARAM_VARIADIC) { FunctionParameter *firsto = (FunctionParameter *) linitial(orderedargs); /* * We ignore the names, though the aggr_arg production allows them; * it doesn't allow default values, so those need not be checked. */ if (list_length(orderedargs) != 1 || firsto->mode != FUNC_PARAM_VARIADIC || !equal(lastd->argType, firsto->argType)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("an ordered-set aggregate with a VARIADIC direct argument must have one VARIADIC aggregated argument of the same data type"), parser_errposition(exprLocation((Node *) firsto)))); /* OK, drop the duplicate VARIADIC argument from the internal form */ orderedargs = NIL; } /* don't merge into the next line, as list_concat changes directargs */ ndirectargs = makeInteger(list_length(directargs)); return list_make2(list_concat(directargs, orderedargs), ndirectargs); } /* insertSelectOptions() * Insert ORDER BY, etc into an already-constructed SelectStmt. * * This routine is just to avoid duplicating code in SelectStmt productions. */ static void insertSelectOptions(SelectStmt *stmt, List *sortClause, List *lockingClause, SelectLimit *limitClause, WithClause *withClause, core_yyscan_t yyscanner) { Assert(IsA(stmt, SelectStmt)); /* * Tests here are to reject constructs like * (SELECT foo ORDER BY bar) ORDER BY baz */ if (sortClause) { if (stmt->sortClause) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("multiple ORDER BY clauses not allowed"), parser_errposition(exprLocation((Node *) sortClause)))); stmt->sortClause = sortClause; } /* We can handle multiple locking clauses, though */ stmt->lockingClause = list_concat(stmt->lockingClause, lockingClause); if (limitClause && limitClause->limitOffset) { if (stmt->limitOffset) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("multiple OFFSET clauses not allowed"), parser_errposition(exprLocation(limitClause->limitOffset)))); stmt->limitOffset = limitClause->limitOffset; } if (limitClause && limitClause->limitCount) { if (stmt->limitCount) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("multiple LIMIT clauses not allowed"), parser_errposition(exprLocation(limitClause->limitCount)))); stmt->limitCount = limitClause->limitCount; } if (limitClause && limitClause->limitOption != LIMIT_OPTION_DEFAULT) { if (stmt->limitOption) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("multiple limit options not allowed"))); if (!stmt->sortClause && limitClause->limitOption == LIMIT_OPTION_WITH_TIES) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("WITH TIES cannot be specified without ORDER BY clause"))); stmt->limitOption = limitClause->limitOption; } if (withClause) { if (stmt->withClause) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("multiple WITH clauses not allowed"), parser_errposition(exprLocation((Node *) withClause)))); stmt->withClause = withClause; } } static Node * makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg) { SelectStmt *n = makeNode(SelectStmt); n->op = op; n->all = all; n->larg = (SelectStmt *) larg; n->rarg = (SelectStmt *) rarg; return (Node *) n; } /* SystemFuncName() * Build a properly-qualified reference to a built-in function. */ List * SystemFuncName(char *name) { return list_make2(makeString("pg_catalog"), makeString(name)); } /* SystemTypeName() * Build a properly-qualified reference to a built-in type. * * typmod is defaulted, but may be changed afterwards by caller. * Likewise for the location. */ TypeName * SystemTypeName(char *name) { return makeTypeNameFromNameList(list_make2(makeString("pg_catalog"), makeString(name))); } /* doNegate() * Handle negation of a numeric constant. * * Formerly, we did this here because the optimizer couldn't cope with * indexquals that looked like "var = -4" --- it wants "var = const" * and a unary minus operator applied to a constant didn't qualify. * As of Postgres 7.0, that problem doesn't exist anymore because there * is a constant-subexpression simplifier in the optimizer. However, * there's still a good reason for doing this here, which is that we can * postpone committing to a particular internal representation for simple * negative constants. It's better to leave "-123.456" in string form * until we know what the desired type is. */ static Node * doNegate(Node *n, int location) { if (IsA(n, A_Const)) { A_Const *con = (A_Const *)n; /* report the constant's location as that of the '-' sign */ con->location = location; if (con->val.type == T_Integer) { con->val.val.ival = -con->val.val.ival; return n; } if (con->val.type == T_Float) { doNegateFloat(&con->val); return n; } } return (Node *) makeSimpleA_Expr(AEXPR_OP, "-", NULL, n, location); } static void doNegateFloat(Value *v) { char *oldval = v->val.str; Assert(IsA(v, Float)); if (*oldval == '+') oldval++; if (*oldval == '-') v->val.str = oldval+1; /* just strip the '-' */ else v->val.str = psprintf("-%s", oldval); } static Node * makeAndExpr(Node *lexpr, Node *rexpr, int location) { Node *lexp = lexpr; /* Look through AEXPR_PAREN nodes so they don't affect flattening */ while (IsA(lexp, A_Expr) && ((A_Expr *) lexp)->kind == AEXPR_PAREN) lexp = ((A_Expr *) lexp)->lexpr; /* Flatten "a AND b AND c ..." to a single BoolExpr on sight */ if (IsA(lexp, BoolExpr)) { BoolExpr *blexpr = (BoolExpr *) lexp; if (blexpr->boolop == AND_EXPR) { blexpr->args = lappend(blexpr->args, rexpr); return (Node *) blexpr; } } return (Node *) makeBoolExpr(AND_EXPR, list_make2(lexpr, rexpr), location); } static Node * makeOrExpr(Node *lexpr, Node *rexpr, int location) { Node *lexp = lexpr; /* Look through AEXPR_PAREN nodes so they don't affect flattening */ while (IsA(lexp, A_Expr) && ((A_Expr *) lexp)->kind == AEXPR_PAREN) lexp = ((A_Expr *) lexp)->lexpr; /* Flatten "a OR b OR c ..." to a single BoolExpr on sight */ if (IsA(lexp, BoolExpr)) { BoolExpr *blexpr = (BoolExpr *) lexp; if (blexpr->boolop == OR_EXPR) { blexpr->args = lappend(blexpr->args, rexpr); return (Node *) blexpr; } } return (Node *) makeBoolExpr(OR_EXPR, list_make2(lexpr, rexpr), location); } static Node * makeNotExpr(Node *expr, int location) { return (Node *) makeBoolExpr(NOT_EXPR, list_make1(expr), location); } static Node * makeAArrayExpr(List *elements, int location) { A_ArrayExpr *n = makeNode(A_ArrayExpr); n->elements = elements; n->location = location; return (Node *) n; } static Node * makeSQLValueFunction(SQLValueFunctionOp op, int32 typmod, int location) { SQLValueFunction *svf = makeNode(SQLValueFunction); svf->op = op; /* svf->type will be filled during parse analysis */ svf->typmod = typmod; svf->location = location; return (Node *) svf; } static Node * makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args, int location) { XmlExpr *x = makeNode(XmlExpr); x->op = op; x->name = name; /* * named_args is a list of ResTarget; it'll be split apart into separate * expression and name lists in transformXmlExpr(). */ x->named_args = named_args; x->arg_names = NIL; x->args = args; /* xmloption, if relevant, must be filled in by caller */ /* type and typmod will be filled in during parse analysis */ x->type = InvalidOid; /* marks the node as not analyzed */ x->location = location; return (Node *) x; } /* * Merge the input and output parameters of a table function. */ static List * mergeTableFuncParameters(List *func_args, List *columns) { ListCell *lc; /* Explicit OUT and INOUT parameters shouldn't be used in this syntax */ foreach(lc, func_args) { FunctionParameter *p = (FunctionParameter *) lfirst(lc); if (p->mode != FUNC_PARAM_IN && p->mode != FUNC_PARAM_VARIADIC) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("OUT and INOUT arguments aren't allowed in TABLE functions"))); } return list_concat(func_args, columns); } /* * Determine return type of a TABLE function. A single result column * returns setof that column's type; otherwise return setof record. */ static TypeName * TableFuncTypeName(List *columns) { TypeName *result; if (list_length(columns) == 1) { FunctionParameter *p = (FunctionParameter *) linitial(columns); result = copyObject(p->argType); } else result = SystemTypeName("record"); result->setof = true; return result; } /* * Convert a list of (dotted) names to a RangeVar (like * makeRangeVarFromNameList, but with position support). The * "AnyName" refers to the any_name production in the grammar. */ static RangeVar * makeRangeVarFromAnyName(List *names, int position, core_yyscan_t yyscanner) { RangeVar *r = makeNode(RangeVar); switch (list_length(names)) { case 1: r->catalogname = NULL; r->schemaname = NULL; r->relname = strVal(linitial(names)); break; case 2: r->catalogname = NULL; r->schemaname = strVal(linitial(names)); r->relname = strVal(lsecond(names)); break; case 3: r->catalogname = strVal(linitial(names)); r->schemaname = strVal(lsecond(names)); r->relname = strVal(lthird(names)); break; default: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("improper qualified name (too many dotted names): %s", NameListToString(names)), parser_errposition(position))); break; } r->relpersistence = RELPERSISTENCE_PERMANENT; r->location = position; return r; } /* Separate Constraint nodes from COLLATE clauses in a ColQualList */ static void SplitColQualList(List *qualList, List **constraintList, CollateClause **collClause, core_yyscan_t yyscanner) { ListCell *cell; *collClause = NULL; foreach(cell, qualList) { Node *n = (Node *) lfirst(cell); if (IsA(n, Constraint)) { /* keep it in list */ continue; } if (IsA(n, CollateClause)) { CollateClause *c = (CollateClause *) n; if (*collClause) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("multiple COLLATE clauses not allowed"), parser_errposition(c->location))); *collClause = c; } else elog(ERROR, "unexpected node type %d", (int) n->type); /* remove non-Constraint nodes from qualList */ qualList = foreach_delete_current(qualList, cell); } *constraintList = qualList; } /* * Process result of ConstraintAttributeSpec, and set appropriate bool flags * in the output command node. Pass NULL for any flags the particular * command doesn't support. */ static void processCASbits(int cas_bits, int location, const char *constrType, bool *deferrable, bool *initdeferred, bool *not_valid, bool *no_inherit, core_yyscan_t yyscanner) { /* defaults */ if (deferrable) *deferrable = false; if (initdeferred) *initdeferred = false; if (not_valid) *not_valid = false; if (cas_bits & (CAS_DEFERRABLE | CAS_INITIALLY_DEFERRED)) { if (deferrable) *deferrable = true; else ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), /* translator: %s is CHECK, UNIQUE, or similar */ errmsg("%s constraints cannot be marked DEFERRABLE", constrType), parser_errposition(location))); } if (cas_bits & CAS_INITIALLY_DEFERRED) { if (initdeferred) *initdeferred = true; else ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), /* translator: %s is CHECK, UNIQUE, or similar */ errmsg("%s constraints cannot be marked DEFERRABLE", constrType), parser_errposition(location))); } if (cas_bits & CAS_NOT_VALID) { if (not_valid) *not_valid = true; else ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), /* translator: %s is CHECK, UNIQUE, or similar */ errmsg("%s constraints cannot be marked NOT VALID", constrType), parser_errposition(location))); } if (cas_bits & CAS_NO_INHERIT) { if (no_inherit) *no_inherit = true; else ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), /* translator: %s is CHECK, UNIQUE, or similar */ errmsg("%s constraints cannot be marked NO INHERIT", constrType), parser_errposition(location))); } } /*---------- * Recursive view transformation * * Convert * * CREATE RECURSIVE VIEW relname (aliases) AS query * * to * * CREATE VIEW relname (aliases) AS * WITH RECURSIVE relname (aliases) AS (query) * SELECT aliases FROM relname * * Actually, just the WITH ... part, which is then inserted into the original * view definition as the query. * ---------- */ static Node * makeRecursiveViewSelect(char *relname, List *aliases, Node *query) { SelectStmt *s = makeNode(SelectStmt); WithClause *w = makeNode(WithClause); CommonTableExpr *cte = makeNode(CommonTableExpr); List *tl = NIL; ListCell *lc; /* create common table expression */ cte->ctename = relname; cte->aliascolnames = aliases; cte->ctematerialized = CTEMaterializeDefault; cte->ctequery = query; cte->location = -1; /* create WITH clause and attach CTE */ w->recursive = true; w->ctes = list_make1(cte); w->location = -1; /* create target list for the new SELECT from the alias list of the * recursive view specification */ foreach (lc, aliases) { ResTarget *rt = makeNode(ResTarget); rt->name = NULL; rt->indirection = NIL; rt->val = makeColumnRef(strVal(lfirst(lc)), NIL, -1, 0); rt->location = -1; tl = lappend(tl, rt); } /* create new SELECT combining WITH clause, target list, and fake FROM * clause */ s->withClause = w; s->targetList = tl; s->fromClause = list_make1(makeRangeVar(NULL, relname, -1)); return (Node *) s; } /* parser_init() * Initialize to parse one query string */ void parser_init(base_yy_extra_type *yyext) { yyext->parsetree = NIL; /* in case grammar forgets to set it */ } libpg_query-13-2.1.0/src/postgres/src_backend_parser_parse_expr.c000066400000000000000000000213171413137616400251320ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - operator_precedence_warning *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * parse_expr.c * handle expressions in parser * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/parser/parse_expr.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "catalog/pg_type.h" #include "commands/dbcommands.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "optimizer/optimizer.h" #include "parser/analyze.h" #include "parser/parse_agg.h" #include "parser/parse_clause.h" #include "parser/parse_coerce.h" #include "parser/parse_collate.h" #include "parser/parse_expr.h" #include "parser/parse_func.h" #include "parser/parse_oper.h" #include "parser/parse_relation.h" #include "parser/parse_target.h" #include "parser/parse_type.h" #include "utils/builtins.h" #include "utils/date.h" #include "utils/lsyscache.h" #include "utils/timestamp.h" #include "utils/xml.h" /* GUC parameters */ __thread bool operator_precedence_warning = false; /* * Node-type groups for operator precedence warnings * We use zero for everything not otherwise classified */ #define PREC_GROUP_POSTFIX_IS 1 /* postfix IS tests (NullTest, etc) */ #define PREC_GROUP_INFIX_IS 2 /* infix IS (IS DISTINCT FROM, etc) */ #define PREC_GROUP_LESS 3 /* < > */ #define PREC_GROUP_EQUAL 4 /* = */ #define PREC_GROUP_LESS_EQUAL 5 /* <= >= <> */ #define PREC_GROUP_LIKE 6 /* LIKE ILIKE SIMILAR */ #define PREC_GROUP_BETWEEN 7 /* BETWEEN */ #define PREC_GROUP_IN 8 /* IN */ #define PREC_GROUP_NOT_LIKE 9 /* NOT LIKE/ILIKE/SIMILAR */ #define PREC_GROUP_NOT_BETWEEN 10 /* NOT BETWEEN */ #define PREC_GROUP_NOT_IN 11 /* NOT IN */ #define PREC_GROUP_POSTFIX_OP 12 /* generic postfix operators */ #define PREC_GROUP_INFIX_OP 13 /* generic infix operators */ #define PREC_GROUP_PREFIX_OP 14 /* generic prefix operators */ /* * Map precedence groupings to old precedence ordering * * Old precedence order: * 1. NOT * 2. = * 3. < > * 4. LIKE ILIKE SIMILAR * 5. BETWEEN * 6. IN * 7. generic postfix Op * 8. generic Op, including <= => <> * 9. generic prefix Op * 10. IS tests (NullTest, BooleanTest, etc) * * NOT BETWEEN etc map to BETWEEN etc when considered as being on the left, * but to NOT when considered as being on the right, because of the buggy * precedence handling of those productions in the old grammar. */ static Node *transformExprRecurse(ParseState *pstate, Node *expr); static Node *transformParamRef(ParseState *pstate, ParamRef *pref); static Node *transformAExprOp(ParseState *pstate, A_Expr *a); static Node *transformAExprOpAny(ParseState *pstate, A_Expr *a); static Node *transformAExprOpAll(ParseState *pstate, A_Expr *a); static Node *transformAExprDistinct(ParseState *pstate, A_Expr *a); static Node *transformAExprNullIf(ParseState *pstate, A_Expr *a); static Node *transformAExprOf(ParseState *pstate, A_Expr *a); static Node *transformAExprIn(ParseState *pstate, A_Expr *a); static Node *transformAExprBetween(ParseState *pstate, A_Expr *a); static Node *transformBoolExpr(ParseState *pstate, BoolExpr *a); static Node *transformFuncCall(ParseState *pstate, FuncCall *fn); static Node *transformMultiAssignRef(ParseState *pstate, MultiAssignRef *maref); static Node *transformCaseExpr(ParseState *pstate, CaseExpr *c); static Node *transformSubLink(ParseState *pstate, SubLink *sublink); static Node *transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, Oid array_type, Oid element_type, int32 typmod); static Node *transformRowExpr(ParseState *pstate, RowExpr *r, bool allowDefault); static Node *transformCoalesceExpr(ParseState *pstate, CoalesceExpr *c); static Node *transformMinMaxExpr(ParseState *pstate, MinMaxExpr *m); static Node *transformSQLValueFunction(ParseState *pstate, SQLValueFunction *svf); static Node *transformXmlExpr(ParseState *pstate, XmlExpr *x); static Node *transformXmlSerialize(ParseState *pstate, XmlSerialize *xs); static Node *transformBooleanTest(ParseState *pstate, BooleanTest *b); static Node *transformCurrentOfExpr(ParseState *pstate, CurrentOfExpr *cexpr); static Node *transformColumnRef(ParseState *pstate, ColumnRef *cref); static Node *transformWholeRowRef(ParseState *pstate, ParseNamespaceItem *nsitem, int sublevels_up, int location); static Node *transformIndirection(ParseState *pstate, A_Indirection *ind); static Node *transformTypeCast(ParseState *pstate, TypeCast *tc); static Node *transformCollateClause(ParseState *pstate, CollateClause *c); static Node *make_row_comparison_op(ParseState *pstate, List *opname, List *largs, List *rargs, int location); static Node *make_row_distinct_op(ParseState *pstate, List *opname, RowExpr *lrow, RowExpr *rrow, int location); static Expr *make_distinct_op(ParseState *pstate, List *opname, Node *ltree, Node *rtree, int location); static Node *make_nulltest_from_distinct(ParseState *pstate, A_Expr *distincta, Node *arg); static int operator_precedence_group(Node *node, const char **nodename); static void emit_precedence_warnings(ParseState *pstate, int opgroup, const char *opname, Node *lchild, Node *rchild, int location); /* * transformExpr - * Analyze and transform expressions. Type checking and type casting is * done here. This processing converts the raw grammar output into * expression trees with fully determined semantics. */ /* * helper routine for delivering "column does not exist" error message * * (Usually we don't have to work this hard, but the general case of field * selection from an arbitrary node needs it.) */ /* * Transform a ColumnRef. * * If you find yourself changing this code, see also ExpandColumnRefStar. */ /* Test whether an a_expr is a plain NULL constant or not */ /* * Checking an expression for match to a list of type names. Will result * in a boolean constant node. */ /* * transformArrayExpr * * If the caller specifies the target type, the resulting array will * be of exactly that type. Otherwise we try to infer a common type * for the elements using select_common_type(). */ /* * Construct a whole-row reference to represent the notation "relation.*". */ /* * Handle an explicit CAST construct. * * Transform the argument, look up the type name, and apply any necessary * coercion function(s). */ /* * Handle an explicit COLLATE clause. * * Transform the argument, and look up the collation name. */ /* * Transform a "row compare-op row" construct * * The inputs are lists of already-transformed expressions. * As with coerce_type, pstate may be NULL if no special unknown-Param * processing is wanted. * * The output may be a single OpExpr, an AND or OR combination of OpExprs, * or a RowCompareExpr. In all cases it is guaranteed to return boolean. * The AND, OR, and RowCompareExpr cases further imply things about the * behavior of the operators (ie, they behave as =, <>, or < <= > >=). */ /* * Transform a "row IS DISTINCT FROM row" construct * * The input RowExprs are already transformed */ /* * make the node for an IS DISTINCT FROM operator */ /* * Produce a NullTest node from an IS [NOT] DISTINCT FROM NULL construct * * "arg" is the untransformed other argument */ /* * Identify node's group for operator precedence warnings * * For items in nonzero groups, also return a suitable node name into *nodename * * Note: group zero is used for nodes that are higher or lower precedence * than everything that changed precedence; we need never issue warnings * related to such nodes. */ /* * helper routine for delivering 9.4-to-9.5 operator precedence warnings * * opgroup/opname/location represent some parent node * lchild, rchild are its left and right children (either could be NULL) * * This should be called before transforming the child nodes, since if a * precedence-driven parsing change has occurred in a query that used to work, * it's quite possible that we'll get a semantic failure while analyzing the * child expression. We want to produce the warning before that happens. * In any case, operator_precedence_group() expects untransformed input. */ /* * Produce a string identifying an expression by kind. * * Note: when practical, use a simple SQL keyword for the result. If that * doesn't work well, check call sites to see whether custom error message * strings are required. */ libpg_query-13-2.1.0/src/postgres/src_backend_parser_parser.c000066400000000000000000000315121413137616400242540ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - raw_parser * - base_yylex * - check_uescapechar * - str_udeescape * - hexval * - check_unicode_value * - raw_parser *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * parser.c * Main entry point/driver for PostgreSQL grammar * * Note that the grammar is not allowed to perform any table access * (since we need to be able to do basic parsing even while inside an * aborted transaction). Therefore, the data structures returned by * the grammar are "raw" parsetrees that still need to be analyzed by * analyze.c and related files. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/parser/parser.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "mb/pg_wchar.h" #include "parser/gramparse.h" #include "parser/parser.h" #include "parser/scansup.h" static bool check_uescapechar(unsigned char escape); static char *str_udeescape(const char *str, char escape, int position, core_yyscan_t yyscanner); /* * raw_parser * Given a query in string form, do lexical and grammatical analysis. * * Returns a list of raw (un-analyzed) parse trees. The immediate elements * of the list are always RawStmt nodes. */ List * raw_parser(const char *str) { core_yyscan_t yyscanner; base_yy_extra_type yyextra; int yyresult; /* initialize the flex scanner */ yyscanner = scanner_init(str, &yyextra.core_yy_extra, &ScanKeywords, ScanKeywordTokens); /* base_yylex() only needs this much initialization */ yyextra.have_lookahead = false; /* initialize the bison parser */ parser_init(&yyextra); /* Parse! */ yyresult = base_yyparse(yyscanner); /* Clean up (release memory) */ scanner_finish(yyscanner); if (yyresult) /* error */ return NIL; return yyextra.parsetree; } /* * Intermediate filter between parser and core lexer (core_yylex in scan.l). * * This filter is needed because in some cases the standard SQL grammar * requires more than one token lookahead. We reduce these cases to one-token * lookahead by replacing tokens here, in order to keep the grammar LALR(1). * * Using a filter is simpler than trying to recognize multiword tokens * directly in scan.l, because we'd have to allow for comments between the * words. Furthermore it's not clear how to do that without re-introducing * scanner backtrack, which would cost more performance than this filter * layer does. * * We also use this filter to convert UIDENT and USCONST sequences into * plain IDENT and SCONST tokens. While that could be handled by additional * productions in the main grammar, it's more efficient to do it like this. * * The filter also provides a convenient place to translate between * the core_YYSTYPE and YYSTYPE representations (which are really the * same thing anyway, but notationally they're different). */ int base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner) { base_yy_extra_type *yyextra = pg_yyget_extra(yyscanner); int cur_token; int next_token; int cur_token_length; YYLTYPE cur_yylloc; /* Get next token --- we might already have it */ if (yyextra->have_lookahead) { cur_token = yyextra->lookahead_token; lvalp->core_yystype = yyextra->lookahead_yylval; *llocp = yyextra->lookahead_yylloc; *(yyextra->lookahead_end) = yyextra->lookahead_hold_char; yyextra->have_lookahead = false; } else cur_token = core_yylex(&(lvalp->core_yystype), llocp, yyscanner); /* * If this token isn't one that requires lookahead, just return it. If it * does, determine the token length. (We could get that via strlen(), but * since we have such a small set of possibilities, hardwiring seems * feasible and more efficient --- at least for the fixed-length cases.) */ switch (cur_token) { case NOT: cur_token_length = 3; break; case NULLS_P: cur_token_length = 5; break; case WITH: cur_token_length = 4; break; case UIDENT: case USCONST: cur_token_length = strlen(yyextra->core_yy_extra.scanbuf + *llocp); break; case SQL_COMMENT: case C_COMMENT: return base_yylex(lvalp, llocp, yyscanner); default: return cur_token; } /* * Identify end+1 of current token. core_yylex() has temporarily stored a * '\0' here, and will undo that when we call it again. We need to redo * it to fully revert the lookahead call for error reporting purposes. */ yyextra->lookahead_end = yyextra->core_yy_extra.scanbuf + *llocp + cur_token_length; Assert(*(yyextra->lookahead_end) == '\0'); /* * Save and restore *llocp around the call. It might look like we could * avoid this by just passing &lookahead_yylloc to core_yylex(), but that * does not work because flex actually holds onto the last-passed pointer * internally, and will use that for error reporting. We need any error * reports to point to the current token, not the next one. */ cur_yylloc = *llocp; /* Get next token, saving outputs into lookahead variables */ next_token = core_yylex(&(yyextra->lookahead_yylval), llocp, yyscanner); yyextra->lookahead_token = next_token; yyextra->lookahead_yylloc = *llocp; *llocp = cur_yylloc; /* Now revert the un-truncation of the current token */ yyextra->lookahead_hold_char = *(yyextra->lookahead_end); *(yyextra->lookahead_end) = '\0'; yyextra->have_lookahead = true; /* Replace cur_token if needed, based on lookahead */ switch (cur_token) { case NOT: /* Replace NOT by NOT_LA if it's followed by BETWEEN, IN, etc */ switch (next_token) { case BETWEEN: case IN_P: case LIKE: case ILIKE: case SIMILAR: cur_token = NOT_LA; break; } break; case NULLS_P: /* Replace NULLS_P by NULLS_LA if it's followed by FIRST or LAST */ switch (next_token) { case FIRST_P: case LAST_P: cur_token = NULLS_LA; break; } break; case WITH: /* Replace WITH by WITH_LA if it's followed by TIME or ORDINALITY */ switch (next_token) { case TIME: case ORDINALITY: cur_token = WITH_LA; break; } break; case UIDENT: case USCONST: /* Look ahead for UESCAPE */ if (next_token == UESCAPE) { /* Yup, so get third token, which had better be SCONST */ const char *escstr; /* Again save and restore *llocp */ cur_yylloc = *llocp; /* Un-truncate current token so errors point to third token */ *(yyextra->lookahead_end) = yyextra->lookahead_hold_char; /* Get third token */ next_token = core_yylex(&(yyextra->lookahead_yylval), llocp, yyscanner); /* If we throw error here, it will point to third token */ if (next_token != SCONST) scanner_yyerror("UESCAPE must be followed by a simple string literal", yyscanner); escstr = yyextra->lookahead_yylval.str; if (strlen(escstr) != 1 || !check_uescapechar(escstr[0])) scanner_yyerror("invalid Unicode escape character", yyscanner); /* Now restore *llocp; errors will point to first token */ *llocp = cur_yylloc; /* Apply Unicode conversion */ lvalp->core_yystype.str = str_udeescape(lvalp->core_yystype.str, escstr[0], *llocp, yyscanner); /* * We don't need to revert the un-truncation of UESCAPE. What * we do want to do is clear have_lookahead, thereby consuming * all three tokens. */ yyextra->have_lookahead = false; } else { /* No UESCAPE, so convert using default escape character */ lvalp->core_yystype.str = str_udeescape(lvalp->core_yystype.str, '\\', *llocp, yyscanner); } if (cur_token == UIDENT) { /* It's an identifier, so truncate as appropriate */ truncate_identifier(lvalp->core_yystype.str, strlen(lvalp->core_yystype.str), true); cur_token = IDENT; } else if (cur_token == USCONST) { cur_token = SCONST; } break; } return cur_token; } /* convert hex digit (caller should have verified that) to value */ static unsigned int hexval(unsigned char c) { if (c >= '0' && c <= '9') return c - '0'; if (c >= 'a' && c <= 'f') return c - 'a' + 0xA; if (c >= 'A' && c <= 'F') return c - 'A' + 0xA; elog(ERROR, "invalid hexadecimal digit"); return 0; /* not reached */ } /* is Unicode code point acceptable? */ static void check_unicode_value(pg_wchar c) { if (!is_valid_unicode_codepoint(c)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid Unicode escape value"))); } /* is 'escape' acceptable as Unicode escape character (UESCAPE syntax) ? */ static bool check_uescapechar(unsigned char escape) { if (isxdigit(escape) || escape == '+' || escape == '\'' || escape == '"' || scanner_isspace(escape)) return false; else return true; } /* * Process Unicode escapes in "str", producing a palloc'd plain string * * escape: the escape character to use * position: start position of U&'' or U&"" string token * yyscanner: context information needed for error reports */ static char * str_udeescape(const char *str, char escape, int position, core_yyscan_t yyscanner) { const char *in; char *new, *out; size_t new_len; pg_wchar pair_first = 0; ScannerCallbackState scbstate; /* * Guesstimate that result will be no longer than input, but allow enough * padding for Unicode conversion. */ new_len = strlen(str) + MAX_UNICODE_EQUIVALENT_STRING + 1; new = palloc(new_len); in = str; out = new; while (*in) { /* Enlarge string if needed */ size_t out_dist = out - new; if (out_dist > new_len - (MAX_UNICODE_EQUIVALENT_STRING + 1)) { new_len *= 2; new = repalloc(new, new_len); out = new + out_dist; } if (in[0] == escape) { /* * Any errors reported while processing this escape sequence will * have an error cursor pointing at the escape. */ setup_scanner_errposition_callback(&scbstate, yyscanner, in - str + position + 3); /* 3 for U&" */ if (in[1] == escape) { if (pair_first) goto invalid_pair; *out++ = escape; in += 2; } else if (isxdigit((unsigned char) in[1]) && isxdigit((unsigned char) in[2]) && isxdigit((unsigned char) in[3]) && isxdigit((unsigned char) in[4])) { pg_wchar unicode; unicode = (hexval(in[1]) << 12) + (hexval(in[2]) << 8) + (hexval(in[3]) << 4) + hexval(in[4]); check_unicode_value(unicode); if (pair_first) { if (is_utf16_surrogate_second(unicode)) { unicode = surrogate_pair_to_codepoint(pair_first, unicode); pair_first = 0; } else goto invalid_pair; } else if (is_utf16_surrogate_second(unicode)) goto invalid_pair; if (is_utf16_surrogate_first(unicode)) pair_first = unicode; else { pg_unicode_to_server(unicode, (unsigned char *) out); out += strlen(out); } in += 5; } else if (in[1] == '+' && isxdigit((unsigned char) in[2]) && isxdigit((unsigned char) in[3]) && isxdigit((unsigned char) in[4]) && isxdigit((unsigned char) in[5]) && isxdigit((unsigned char) in[6]) && isxdigit((unsigned char) in[7])) { pg_wchar unicode; unicode = (hexval(in[2]) << 20) + (hexval(in[3]) << 16) + (hexval(in[4]) << 12) + (hexval(in[5]) << 8) + (hexval(in[6]) << 4) + hexval(in[7]); check_unicode_value(unicode); if (pair_first) { if (is_utf16_surrogate_second(unicode)) { unicode = surrogate_pair_to_codepoint(pair_first, unicode); pair_first = 0; } else goto invalid_pair; } else if (is_utf16_surrogate_second(unicode)) goto invalid_pair; if (is_utf16_surrogate_first(unicode)) pair_first = unicode; else { pg_unicode_to_server(unicode, (unsigned char *) out); out += strlen(out); } in += 8; } else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid Unicode escape"), errhint("Unicode escapes must be \\XXXX or \\+XXXXXX."))); cancel_scanner_errposition_callback(&scbstate); } else { if (pair_first) goto invalid_pair; *out++ = *in++; } } /* unfinished surrogate pair? */ if (pair_first) goto invalid_pair; *out = '\0'; return new; /* * We might get here with the error callback active, or not. Call * scanner_errposition to make sure an error cursor appears; if the * callback is active, this is duplicative but harmless. */ invalid_pair: ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid Unicode surrogate pair"), scanner_errposition(in - str + position + 3, /* 3 for U&" */ yyscanner))); return NULL; /* keep compiler quiet */ } libpg_query-13-2.1.0/src/postgres/src_backend_parser_scan.c000066400000000000000000012202611413137616400237060ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - scanner_init * - core_yylex_init * - core_yyalloc * - yy_init_globals * - core_yyset_extra * - backslash_quote * - escape_string_warning * - standard_conforming_strings * - core_yy_scan_buffer * - core_yy_switch_to_buffer * - core_yyensure_buffer_stack * - core_yyrealloc * - core_yy_load_buffer_state * - yy_fatal_error * - fprintf_to_ereport * - ScanKeywordTokens * - core_yylex * - core_yy_create_buffer * - core_yy_init_buffer * - core_yy_flush_buffer * - core_yyrestart * - yy_start_state_list * - yy_transition * - addlitchar * - addlit * - litbufdup * - check_escape_warning * - addunicode * - setup_scanner_errposition_callback * - scb_error_callback * - cancel_scanner_errposition_callback * - check_string_escape_warning * - unescape_single_char * - process_integer_literal * - yy_get_previous_state * - yy_try_NUL_trans * - yy_get_next_buffer * - scanner_errposition * - scanner_yyerror * - scanner_finish *-------------------------------------------------------------------- */ #line 2 "scan.c" #line 2 "scan.l" /*------------------------------------------------------------------------- * * scan.l * lexical scanner for PostgreSQL * * NOTE NOTE NOTE: * * The rules in this file must be kept in sync with src/fe_utils/psqlscan.l * and src/interfaces/ecpg/preproc/pgc.l! * * The rules are designed so that the scanner never has to backtrack, * in the sense that there is always a rule that can match the input * consumed so far (the rule action may internally throw back some input * with yyless(), however). As explained in the flex manual, this makes * for a useful speed increase --- several percent faster when measuring * raw parsing (Flex + Bison). The extra complexity is mostly in the rules * for handling float numbers and continued string literals. If you change * the lexical rules, verify that you haven't broken the no-backtrack * property by running flex with the "-b" option and checking that the * resulting "lex.backup" file says that no backing up is needed. (As of * Postgres 9.2, this check is made automatically by the Makefile.) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/parser/scan.l * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include "common/string.h" #include "parser/gramparse.h" #include "parser/parser.h" /* only needed for GUC variables */ #include "parser/scansup.h" #include "mb/pg_wchar.h" #line 48 "scan.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif /* For convenience, these vars (plus the bison vars far below) are macros in the reentrant scanner. */ #define yyin yyg->yyin_r #define yyout yyg->yyout_r #define yyextra yyg->yyextra_r #define yyleng yyg->yyleng_r #define yytext yyg->yytext_r #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE core_yyrestart(yyin ,yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via core_yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void core_yyrestart (FILE *input_file ,yyscan_t yyscanner ); void core_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE core_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void core_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void core_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void core_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void core_yypop_buffer_state (yyscan_t yyscanner ); static void core_yyensure_buffer_stack (yyscan_t yyscanner ); static void core_yy_load_buffer_state (yyscan_t yyscanner ); static void core_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); #define YY_FLUSH_BUFFER core_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) YY_BUFFER_STATE core_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE core_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE core_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *core_yyalloc (yy_size_t ,yyscan_t yyscanner ); void *core_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void core_yyfree (void * ,yyscan_t yyscanner ); #define yy_new_buffer core_yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ core_yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ core_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ core_yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ core_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define core_yywrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; typedef yyconst struct yy_trans_info *yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (yy_size_t) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 66 #define YY_END_OF_BUFFER 67 struct yy_trans_info { flex_int16_t yy_verify; flex_int16_t yy_nxt; }; static yyconst struct yy_trans_info yy_transition[17678] = { { 0, 0 }, { 0,17422 }, { 0, 0 }, { 0,17420 }, { 1,6192 }, { 2,6192 }, { 3,6192 }, { 4,6192 }, { 5,6192 }, { 6,6192 }, { 7,6192 }, { 8,6192 }, { 9,6194 }, { 10,6199 }, { 11,6192 }, { 12,6194 }, { 13,6194 }, { 14,6192 }, { 15,6192 }, { 16,6192 }, { 17,6192 }, { 18,6192 }, { 19,6192 }, { 20,6192 }, { 21,6192 }, { 22,6192 }, { 23,6192 }, { 24,6192 }, { 25,6192 }, { 26,6192 }, { 27,6192 }, { 28,6192 }, { 29,6192 }, { 30,6192 }, { 31,6192 }, { 32,6194 }, { 33,6201 }, { 34,6196 }, { 35,6241 }, { 36,6307 }, { 37,6564 }, { 38,6241 }, { 39,6214 }, { 40,6216 }, { 41,6216 }, { 42,6564 }, { 43,6564 }, { 44,6216 }, { 45,6575 }, { 46,6594 }, { 47,6665 }, { 48,6667 }, { 49,6667 }, { 50,6667 }, { 51,6667 }, { 52,6667 }, { 53,6667 }, { 54,6667 }, { 55,6667 }, { 56,6667 }, { 57,6667 }, { 58,6219 }, { 59,6216 }, { 60,6732 }, { 61,6743 }, { 62,6810 }, { 63,6564 }, { 64,6241 }, { 65,6842 }, { 66,7099 }, { 67,6842 }, { 68,6842 }, { 69,7356 }, { 70,6842 }, { 71,6842 }, { 72,6842 }, { 73,6842 }, { 74,6842 }, { 75,6842 }, { 76,6842 }, { 77,6842 }, { 78,7613 }, { 79,6842 }, { 80,6842 }, { 81,6842 }, { 82,6842 }, { 83,6842 }, { 84,6842 }, { 85,7870 }, { 86,6842 }, { 87,6842 }, { 88,8127 }, { 89,6842 }, { 90,6842 }, { 91,6216 }, { 92,6192 }, { 93,6216 }, { 94,6564 }, { 95,6842 }, { 96,6241 }, { 97,6842 }, { 98,7099 }, { 99,6842 }, { 100,6842 }, { 101,7356 }, { 102,6842 }, { 103,6842 }, { 104,6842 }, { 105,6842 }, { 106,6842 }, { 107,6842 }, { 108,6842 }, { 109,6842 }, { 110,7613 }, { 111,6842 }, { 112,6842 }, { 113,6842 }, { 114,6842 }, { 115,6842 }, { 116,6842 }, { 117,7870 }, { 118,6842 }, { 119,6842 }, { 120,8127 }, { 121,6842 }, { 122,6842 }, { 123,6192 }, { 124,6241 }, { 125,6192 }, { 126,6241 }, { 127,6192 }, { 128,6842 }, { 129,6842 }, { 130,6842 }, { 131,6842 }, { 132,6842 }, { 133,6842 }, { 134,6842 }, { 135,6842 }, { 136,6842 }, { 137,6842 }, { 138,6842 }, { 139,6842 }, { 140,6842 }, { 141,6842 }, { 142,6842 }, { 143,6842 }, { 144,6842 }, { 145,6842 }, { 146,6842 }, { 147,6842 }, { 148,6842 }, { 149,6842 }, { 150,6842 }, { 151,6842 }, { 152,6842 }, { 153,6842 }, { 154,6842 }, { 155,6842 }, { 156,6842 }, { 157,6842 }, { 158,6842 }, { 159,6842 }, { 160,6842 }, { 161,6842 }, { 162,6842 }, { 163,6842 }, { 164,6842 }, { 165,6842 }, { 166,6842 }, { 167,6842 }, { 168,6842 }, { 169,6842 }, { 170,6842 }, { 171,6842 }, { 172,6842 }, { 173,6842 }, { 174,6842 }, { 175,6842 }, { 176,6842 }, { 177,6842 }, { 178,6842 }, { 179,6842 }, { 180,6842 }, { 181,6842 }, { 182,6842 }, { 183,6842 }, { 184,6842 }, { 185,6842 }, { 186,6842 }, { 187,6842 }, { 188,6842 }, { 189,6842 }, { 190,6842 }, { 191,6842 }, { 192,6842 }, { 193,6842 }, { 194,6842 }, { 195,6842 }, { 196,6842 }, { 197,6842 }, { 198,6842 }, { 199,6842 }, { 200,6842 }, { 201,6842 }, { 202,6842 }, { 203,6842 }, { 204,6842 }, { 205,6842 }, { 206,6842 }, { 207,6842 }, { 208,6842 }, { 209,6842 }, { 210,6842 }, { 211,6842 }, { 212,6842 }, { 213,6842 }, { 214,6842 }, { 215,6842 }, { 216,6842 }, { 217,6842 }, { 218,6842 }, { 219,6842 }, { 220,6842 }, { 221,6842 }, { 222,6842 }, { 223,6842 }, { 224,6842 }, { 225,6842 }, { 226,6842 }, { 227,6842 }, { 228,6842 }, { 229,6842 }, { 230,6842 }, { 231,6842 }, { 232,6842 }, { 233,6842 }, { 234,6842 }, { 235,6842 }, { 236,6842 }, { 237,6842 }, { 238,6842 }, { 239,6842 }, { 240,6842 }, { 241,6842 }, { 242,6842 }, { 243,6842 }, { 244,6842 }, { 245,6842 }, { 246,6842 }, { 247,6842 }, { 248,6842 }, { 249,6842 }, { 250,6842 }, { 251,6842 }, { 252,6842 }, { 253,6842 }, { 254,6842 }, { 255,6842 }, { 256,6192 }, { 0, 0 }, { 0,17162 }, { 1,5934 }, { 2,5934 }, { 3,5934 }, { 4,5934 }, { 5,5934 }, { 6,5934 }, { 7,5934 }, { 8,5934 }, { 9,5936 }, { 10,5941 }, { 11,5934 }, { 12,5936 }, { 13,5936 }, { 14,5934 }, { 15,5934 }, { 16,5934 }, { 17,5934 }, { 18,5934 }, { 19,5934 }, { 20,5934 }, { 21,5934 }, { 22,5934 }, { 23,5934 }, { 24,5934 }, { 25,5934 }, { 26,5934 }, { 27,5934 }, { 28,5934 }, { 29,5934 }, { 30,5934 }, { 31,5934 }, { 32,5936 }, { 33,5943 }, { 34,5938 }, { 35,5983 }, { 36,6049 }, { 37,6306 }, { 38,5983 }, { 39,5956 }, { 40,5958 }, { 41,5958 }, { 42,6306 }, { 43,6306 }, { 44,5958 }, { 45,6317 }, { 46,6336 }, { 47,6407 }, { 48,6409 }, { 49,6409 }, { 50,6409 }, { 51,6409 }, { 52,6409 }, { 53,6409 }, { 54,6409 }, { 55,6409 }, { 56,6409 }, { 57,6409 }, { 58,5961 }, { 59,5958 }, { 60,6474 }, { 61,6485 }, { 62,6552 }, { 63,6306 }, { 64,5983 }, { 65,6584 }, { 66,6841 }, { 67,6584 }, { 68,6584 }, { 69,7098 }, { 70,6584 }, { 71,6584 }, { 72,6584 }, { 73,6584 }, { 74,6584 }, { 75,6584 }, { 76,6584 }, { 77,6584 }, { 78,7355 }, { 79,6584 }, { 80,6584 }, { 81,6584 }, { 82,6584 }, { 83,6584 }, { 84,6584 }, { 85,7612 }, { 86,6584 }, { 87,6584 }, { 88,7869 }, { 89,6584 }, { 90,6584 }, { 91,5958 }, { 92,5934 }, { 93,5958 }, { 94,6306 }, { 95,6584 }, { 96,5983 }, { 97,6584 }, { 98,6841 }, { 99,6584 }, { 100,6584 }, { 101,7098 }, { 102,6584 }, { 103,6584 }, { 104,6584 }, { 105,6584 }, { 106,6584 }, { 107,6584 }, { 108,6584 }, { 109,6584 }, { 110,7355 }, { 111,6584 }, { 112,6584 }, { 113,6584 }, { 114,6584 }, { 115,6584 }, { 116,6584 }, { 117,7612 }, { 118,6584 }, { 119,6584 }, { 120,7869 }, { 121,6584 }, { 122,6584 }, { 123,5934 }, { 124,5983 }, { 125,5934 }, { 126,5983 }, { 127,5934 }, { 128,6584 }, { 129,6584 }, { 130,6584 }, { 131,6584 }, { 132,6584 }, { 133,6584 }, { 134,6584 }, { 135,6584 }, { 136,6584 }, { 137,6584 }, { 138,6584 }, { 139,6584 }, { 140,6584 }, { 141,6584 }, { 142,6584 }, { 143,6584 }, { 144,6584 }, { 145,6584 }, { 146,6584 }, { 147,6584 }, { 148,6584 }, { 149,6584 }, { 150,6584 }, { 151,6584 }, { 152,6584 }, { 153,6584 }, { 154,6584 }, { 155,6584 }, { 156,6584 }, { 157,6584 }, { 158,6584 }, { 159,6584 }, { 160,6584 }, { 161,6584 }, { 162,6584 }, { 163,6584 }, { 164,6584 }, { 165,6584 }, { 166,6584 }, { 167,6584 }, { 168,6584 }, { 169,6584 }, { 170,6584 }, { 171,6584 }, { 172,6584 }, { 173,6584 }, { 174,6584 }, { 175,6584 }, { 176,6584 }, { 177,6584 }, { 178,6584 }, { 179,6584 }, { 180,6584 }, { 181,6584 }, { 182,6584 }, { 183,6584 }, { 184,6584 }, { 185,6584 }, { 186,6584 }, { 187,6584 }, { 188,6584 }, { 189,6584 }, { 190,6584 }, { 191,6584 }, { 192,6584 }, { 193,6584 }, { 194,6584 }, { 195,6584 }, { 196,6584 }, { 197,6584 }, { 198,6584 }, { 199,6584 }, { 200,6584 }, { 201,6584 }, { 202,6584 }, { 203,6584 }, { 204,6584 }, { 205,6584 }, { 206,6584 }, { 207,6584 }, { 208,6584 }, { 209,6584 }, { 210,6584 }, { 211,6584 }, { 212,6584 }, { 213,6584 }, { 214,6584 }, { 215,6584 }, { 216,6584 }, { 217,6584 }, { 218,6584 }, { 219,6584 }, { 220,6584 }, { 221,6584 }, { 222,6584 }, { 223,6584 }, { 224,6584 }, { 225,6584 }, { 226,6584 }, { 227,6584 }, { 228,6584 }, { 229,6584 }, { 230,6584 }, { 231,6584 }, { 232,6584 }, { 233,6584 }, { 234,6584 }, { 235,6584 }, { 236,6584 }, { 237,6584 }, { 238,6584 }, { 239,6584 }, { 240,6584 }, { 241,6584 }, { 242,6584 }, { 243,6584 }, { 244,6584 }, { 245,6584 }, { 246,6584 }, { 247,6584 }, { 248,6584 }, { 249,6584 }, { 250,6584 }, { 251,6584 }, { 252,6584 }, { 253,6584 }, { 254,6584 }, { 255,6584 }, { 256,5934 }, { 0, 11 }, { 0,16904 }, { 1,7868 }, { 2,7868 }, { 3,7868 }, { 4,7868 }, { 5,7868 }, { 6,7868 }, { 7,7868 }, { 8,7868 }, { 9,7868 }, { 10,7868 }, { 11,7868 }, { 12,7868 }, { 13,7868 }, { 14,7868 }, { 15,7868 }, { 16,7868 }, { 17,7868 }, { 18,7868 }, { 19,7868 }, { 20,7868 }, { 21,7868 }, { 22,7868 }, { 23,7868 }, { 24,7868 }, { 25,7868 }, { 26,7868 }, { 27,7868 }, { 28,7868 }, { 29,7868 }, { 30,7868 }, { 31,7868 }, { 32,7868 }, { 33,7868 }, { 34,7868 }, { 35,7868 }, { 36,7868 }, { 37,7868 }, { 38,7868 }, { 39,5705 }, { 40,7868 }, { 41,7868 }, { 42,7868 }, { 43,7868 }, { 44,7868 }, { 45,7868 }, { 46,7868 }, { 47,7868 }, { 48,7868 }, { 49,7868 }, { 50,7868 }, { 51,7868 }, { 52,7868 }, { 53,7868 }, { 54,7868 }, { 55,7868 }, { 56,7868 }, { 57,7868 }, { 58,7868 }, { 59,7868 }, { 60,7868 }, { 61,7868 }, { 62,7868 }, { 63,7868 }, { 64,7868 }, { 65,7868 }, { 66,7868 }, { 67,7868 }, { 68,7868 }, { 69,7868 }, { 70,7868 }, { 71,7868 }, { 72,7868 }, { 73,7868 }, { 74,7868 }, { 75,7868 }, { 76,7868 }, { 77,7868 }, { 78,7868 }, { 79,7868 }, { 80,7868 }, { 81,7868 }, { 82,7868 }, { 83,7868 }, { 84,7868 }, { 85,7868 }, { 86,7868 }, { 87,7868 }, { 88,7868 }, { 89,7868 }, { 90,7868 }, { 91,7868 }, { 92,7868 }, { 93,7868 }, { 94,7868 }, { 95,7868 }, { 96,7868 }, { 97,7868 }, { 98,7868 }, { 99,7868 }, { 100,7868 }, { 101,7868 }, { 102,7868 }, { 103,7868 }, { 104,7868 }, { 105,7868 }, { 106,7868 }, { 107,7868 }, { 108,7868 }, { 109,7868 }, { 110,7868 }, { 111,7868 }, { 112,7868 }, { 113,7868 }, { 114,7868 }, { 115,7868 }, { 116,7868 }, { 117,7868 }, { 118,7868 }, { 119,7868 }, { 120,7868 }, { 121,7868 }, { 122,7868 }, { 123,7868 }, { 124,7868 }, { 125,7868 }, { 126,7868 }, { 127,7868 }, { 128,7868 }, { 129,7868 }, { 130,7868 }, { 131,7868 }, { 132,7868 }, { 133,7868 }, { 134,7868 }, { 135,7868 }, { 136,7868 }, { 137,7868 }, { 138,7868 }, { 139,7868 }, { 140,7868 }, { 141,7868 }, { 142,7868 }, { 143,7868 }, { 144,7868 }, { 145,7868 }, { 146,7868 }, { 147,7868 }, { 148,7868 }, { 149,7868 }, { 150,7868 }, { 151,7868 }, { 152,7868 }, { 153,7868 }, { 154,7868 }, { 155,7868 }, { 156,7868 }, { 157,7868 }, { 158,7868 }, { 159,7868 }, { 160,7868 }, { 161,7868 }, { 162,7868 }, { 163,7868 }, { 164,7868 }, { 165,7868 }, { 166,7868 }, { 167,7868 }, { 168,7868 }, { 169,7868 }, { 170,7868 }, { 171,7868 }, { 172,7868 }, { 173,7868 }, { 174,7868 }, { 175,7868 }, { 176,7868 }, { 177,7868 }, { 178,7868 }, { 179,7868 }, { 180,7868 }, { 181,7868 }, { 182,7868 }, { 183,7868 }, { 184,7868 }, { 185,7868 }, { 186,7868 }, { 187,7868 }, { 188,7868 }, { 189,7868 }, { 190,7868 }, { 191,7868 }, { 192,7868 }, { 193,7868 }, { 194,7868 }, { 195,7868 }, { 196,7868 }, { 197,7868 }, { 198,7868 }, { 199,7868 }, { 200,7868 }, { 201,7868 }, { 202,7868 }, { 203,7868 }, { 204,7868 }, { 205,7868 }, { 206,7868 }, { 207,7868 }, { 208,7868 }, { 209,7868 }, { 210,7868 }, { 211,7868 }, { 212,7868 }, { 213,7868 }, { 214,7868 }, { 215,7868 }, { 216,7868 }, { 217,7868 }, { 218,7868 }, { 219,7868 }, { 220,7868 }, { 221,7868 }, { 222,7868 }, { 223,7868 }, { 224,7868 }, { 225,7868 }, { 226,7868 }, { 227,7868 }, { 228,7868 }, { 229,7868 }, { 230,7868 }, { 231,7868 }, { 232,7868 }, { 233,7868 }, { 234,7868 }, { 235,7868 }, { 236,7868 }, { 237,7868 }, { 238,7868 }, { 239,7868 }, { 240,7868 }, { 241,7868 }, { 242,7868 }, { 243,7868 }, { 244,7868 }, { 245,7868 }, { 246,7868 }, { 247,7868 }, { 248,7868 }, { 249,7868 }, { 250,7868 }, { 251,7868 }, { 252,7868 }, { 253,7868 }, { 254,7868 }, { 255,7868 }, { 256,7868 }, { 0, 11 }, { 0,16646 }, { 1,7610 }, { 2,7610 }, { 3,7610 }, { 4,7610 }, { 5,7610 }, { 6,7610 }, { 7,7610 }, { 8,7610 }, { 9,7610 }, { 10,7610 }, { 11,7610 }, { 12,7610 }, { 13,7610 }, { 14,7610 }, { 15,7610 }, { 16,7610 }, { 17,7610 }, { 18,7610 }, { 19,7610 }, { 20,7610 }, { 21,7610 }, { 22,7610 }, { 23,7610 }, { 24,7610 }, { 25,7610 }, { 26,7610 }, { 27,7610 }, { 28,7610 }, { 29,7610 }, { 30,7610 }, { 31,7610 }, { 32,7610 }, { 33,7610 }, { 34,7610 }, { 35,7610 }, { 36,7610 }, { 37,7610 }, { 38,7610 }, { 39,5447 }, { 40,7610 }, { 41,7610 }, { 42,7610 }, { 43,7610 }, { 44,7610 }, { 45,7610 }, { 46,7610 }, { 47,7610 }, { 48,7610 }, { 49,7610 }, { 50,7610 }, { 51,7610 }, { 52,7610 }, { 53,7610 }, { 54,7610 }, { 55,7610 }, { 56,7610 }, { 57,7610 }, { 58,7610 }, { 59,7610 }, { 60,7610 }, { 61,7610 }, { 62,7610 }, { 63,7610 }, { 64,7610 }, { 65,7610 }, { 66,7610 }, { 67,7610 }, { 68,7610 }, { 69,7610 }, { 70,7610 }, { 71,7610 }, { 72,7610 }, { 73,7610 }, { 74,7610 }, { 75,7610 }, { 76,7610 }, { 77,7610 }, { 78,7610 }, { 79,7610 }, { 80,7610 }, { 81,7610 }, { 82,7610 }, { 83,7610 }, { 84,7610 }, { 85,7610 }, { 86,7610 }, { 87,7610 }, { 88,7610 }, { 89,7610 }, { 90,7610 }, { 91,7610 }, { 92,7610 }, { 93,7610 }, { 94,7610 }, { 95,7610 }, { 96,7610 }, { 97,7610 }, { 98,7610 }, { 99,7610 }, { 100,7610 }, { 101,7610 }, { 102,7610 }, { 103,7610 }, { 104,7610 }, { 105,7610 }, { 106,7610 }, { 107,7610 }, { 108,7610 }, { 109,7610 }, { 110,7610 }, { 111,7610 }, { 112,7610 }, { 113,7610 }, { 114,7610 }, { 115,7610 }, { 116,7610 }, { 117,7610 }, { 118,7610 }, { 119,7610 }, { 120,7610 }, { 121,7610 }, { 122,7610 }, { 123,7610 }, { 124,7610 }, { 125,7610 }, { 126,7610 }, { 127,7610 }, { 128,7610 }, { 129,7610 }, { 130,7610 }, { 131,7610 }, { 132,7610 }, { 133,7610 }, { 134,7610 }, { 135,7610 }, { 136,7610 }, { 137,7610 }, { 138,7610 }, { 139,7610 }, { 140,7610 }, { 141,7610 }, { 142,7610 }, { 143,7610 }, { 144,7610 }, { 145,7610 }, { 146,7610 }, { 147,7610 }, { 148,7610 }, { 149,7610 }, { 150,7610 }, { 151,7610 }, { 152,7610 }, { 153,7610 }, { 154,7610 }, { 155,7610 }, { 156,7610 }, { 157,7610 }, { 158,7610 }, { 159,7610 }, { 160,7610 }, { 161,7610 }, { 162,7610 }, { 163,7610 }, { 164,7610 }, { 165,7610 }, { 166,7610 }, { 167,7610 }, { 168,7610 }, { 169,7610 }, { 170,7610 }, { 171,7610 }, { 172,7610 }, { 173,7610 }, { 174,7610 }, { 175,7610 }, { 176,7610 }, { 177,7610 }, { 178,7610 }, { 179,7610 }, { 180,7610 }, { 181,7610 }, { 182,7610 }, { 183,7610 }, { 184,7610 }, { 185,7610 }, { 186,7610 }, { 187,7610 }, { 188,7610 }, { 189,7610 }, { 190,7610 }, { 191,7610 }, { 192,7610 }, { 193,7610 }, { 194,7610 }, { 195,7610 }, { 196,7610 }, { 197,7610 }, { 198,7610 }, { 199,7610 }, { 200,7610 }, { 201,7610 }, { 202,7610 }, { 203,7610 }, { 204,7610 }, { 205,7610 }, { 206,7610 }, { 207,7610 }, { 208,7610 }, { 209,7610 }, { 210,7610 }, { 211,7610 }, { 212,7610 }, { 213,7610 }, { 214,7610 }, { 215,7610 }, { 216,7610 }, { 217,7610 }, { 218,7610 }, { 219,7610 }, { 220,7610 }, { 221,7610 }, { 222,7610 }, { 223,7610 }, { 224,7610 }, { 225,7610 }, { 226,7610 }, { 227,7610 }, { 228,7610 }, { 229,7610 }, { 230,7610 }, { 231,7610 }, { 232,7610 }, { 233,7610 }, { 234,7610 }, { 235,7610 }, { 236,7610 }, { 237,7610 }, { 238,7610 }, { 239,7610 }, { 240,7610 }, { 241,7610 }, { 242,7610 }, { 243,7610 }, { 244,7610 }, { 245,7610 }, { 246,7610 }, { 247,7610 }, { 248,7610 }, { 249,7610 }, { 250,7610 }, { 251,7610 }, { 252,7610 }, { 253,7610 }, { 254,7610 }, { 255,7610 }, { 256,7610 }, { 0, 0 }, { 0,16388 }, { 1,7610 }, { 2,7610 }, { 3,7610 }, { 4,7610 }, { 5,7610 }, { 6,7610 }, { 7,7610 }, { 8,7610 }, { 9,7610 }, { 10,7610 }, { 11,7610 }, { 12,7610 }, { 13,7610 }, { 14,7610 }, { 15,7610 }, { 16,7610 }, { 17,7610 }, { 18,7610 }, { 19,7610 }, { 20,7610 }, { 21,7610 }, { 22,7610 }, { 23,7610 }, { 24,7610 }, { 25,7610 }, { 26,7610 }, { 27,7610 }, { 28,7610 }, { 29,7610 }, { 30,7610 }, { 31,7610 }, { 32,7610 }, { 33,7868 }, { 34,7610 }, { 35,7868 }, { 36,7610 }, { 37,7868 }, { 38,7868 }, { 39,7610 }, { 40,7610 }, { 41,7610 }, { 42,5192 }, { 43,7868 }, { 44,7610 }, { 45,7868 }, { 46,7610 }, { 47,5196 }, { 48,7610 }, { 49,7610 }, { 50,7610 }, { 51,7610 }, { 52,7610 }, { 53,7610 }, { 54,7610 }, { 55,7610 }, { 56,7610 }, { 57,7610 }, { 58,7610 }, { 59,7610 }, { 60,7868 }, { 61,7868 }, { 62,7868 }, { 63,7868 }, { 64,7868 }, { 65,7610 }, { 66,7610 }, { 67,7610 }, { 68,7610 }, { 69,7610 }, { 70,7610 }, { 71,7610 }, { 72,7610 }, { 73,7610 }, { 74,7610 }, { 75,7610 }, { 76,7610 }, { 77,7610 }, { 78,7610 }, { 79,7610 }, { 80,7610 }, { 81,7610 }, { 82,7610 }, { 83,7610 }, { 84,7610 }, { 85,7610 }, { 86,7610 }, { 87,7610 }, { 88,7610 }, { 89,7610 }, { 90,7610 }, { 91,7610 }, { 92,7610 }, { 93,7610 }, { 94,7868 }, { 95,7610 }, { 96,7868 }, { 97,7610 }, { 98,7610 }, { 99,7610 }, { 100,7610 }, { 101,7610 }, { 102,7610 }, { 103,7610 }, { 104,7610 }, { 105,7610 }, { 106,7610 }, { 107,7610 }, { 108,7610 }, { 109,7610 }, { 110,7610 }, { 111,7610 }, { 112,7610 }, { 113,7610 }, { 114,7610 }, { 115,7610 }, { 116,7610 }, { 117,7610 }, { 118,7610 }, { 119,7610 }, { 120,7610 }, { 121,7610 }, { 122,7610 }, { 123,7610 }, { 124,7868 }, { 125,7610 }, { 126,7868 }, { 127,7610 }, { 128,7610 }, { 129,7610 }, { 130,7610 }, { 131,7610 }, { 132,7610 }, { 133,7610 }, { 134,7610 }, { 135,7610 }, { 136,7610 }, { 137,7610 }, { 138,7610 }, { 139,7610 }, { 140,7610 }, { 141,7610 }, { 142,7610 }, { 143,7610 }, { 144,7610 }, { 145,7610 }, { 146,7610 }, { 147,7610 }, { 148,7610 }, { 149,7610 }, { 150,7610 }, { 151,7610 }, { 152,7610 }, { 153,7610 }, { 154,7610 }, { 155,7610 }, { 156,7610 }, { 157,7610 }, { 158,7610 }, { 159,7610 }, { 160,7610 }, { 161,7610 }, { 162,7610 }, { 163,7610 }, { 164,7610 }, { 165,7610 }, { 166,7610 }, { 167,7610 }, { 168,7610 }, { 169,7610 }, { 170,7610 }, { 171,7610 }, { 172,7610 }, { 173,7610 }, { 174,7610 }, { 175,7610 }, { 176,7610 }, { 177,7610 }, { 178,7610 }, { 179,7610 }, { 180,7610 }, { 181,7610 }, { 182,7610 }, { 183,7610 }, { 184,7610 }, { 185,7610 }, { 186,7610 }, { 187,7610 }, { 188,7610 }, { 189,7610 }, { 190,7610 }, { 191,7610 }, { 192,7610 }, { 193,7610 }, { 194,7610 }, { 195,7610 }, { 196,7610 }, { 197,7610 }, { 198,7610 }, { 199,7610 }, { 200,7610 }, { 201,7610 }, { 202,7610 }, { 203,7610 }, { 204,7610 }, { 205,7610 }, { 206,7610 }, { 207,7610 }, { 208,7610 }, { 209,7610 }, { 210,7610 }, { 211,7610 }, { 212,7610 }, { 213,7610 }, { 214,7610 }, { 215,7610 }, { 216,7610 }, { 217,7610 }, { 218,7610 }, { 219,7610 }, { 220,7610 }, { 221,7610 }, { 222,7610 }, { 223,7610 }, { 224,7610 }, { 225,7610 }, { 226,7610 }, { 227,7610 }, { 228,7610 }, { 229,7610 }, { 230,7610 }, { 231,7610 }, { 232,7610 }, { 233,7610 }, { 234,7610 }, { 235,7610 }, { 236,7610 }, { 237,7610 }, { 238,7610 }, { 239,7610 }, { 240,7610 }, { 241,7610 }, { 242,7610 }, { 243,7610 }, { 244,7610 }, { 245,7610 }, { 246,7610 }, { 247,7610 }, { 248,7610 }, { 249,7610 }, { 250,7610 }, { 251,7610 }, { 252,7610 }, { 253,7610 }, { 254,7610 }, { 255,7610 }, { 256,7610 }, { 0, 0 }, { 0,16130 }, { 1,7352 }, { 2,7352 }, { 3,7352 }, { 4,7352 }, { 5,7352 }, { 6,7352 }, { 7,7352 }, { 8,7352 }, { 9,7352 }, { 10,7352 }, { 11,7352 }, { 12,7352 }, { 13,7352 }, { 14,7352 }, { 15,7352 }, { 16,7352 }, { 17,7352 }, { 18,7352 }, { 19,7352 }, { 20,7352 }, { 21,7352 }, { 22,7352 }, { 23,7352 }, { 24,7352 }, { 25,7352 }, { 26,7352 }, { 27,7352 }, { 28,7352 }, { 29,7352 }, { 30,7352 }, { 31,7352 }, { 32,7352 }, { 33,7610 }, { 34,7352 }, { 35,7610 }, { 36,7352 }, { 37,7610 }, { 38,7610 }, { 39,7352 }, { 40,7352 }, { 41,7352 }, { 42,4934 }, { 43,7610 }, { 44,7352 }, { 45,7610 }, { 46,7352 }, { 47,4938 }, { 48,7352 }, { 49,7352 }, { 50,7352 }, { 51,7352 }, { 52,7352 }, { 53,7352 }, { 54,7352 }, { 55,7352 }, { 56,7352 }, { 57,7352 }, { 58,7352 }, { 59,7352 }, { 60,7610 }, { 61,7610 }, { 62,7610 }, { 63,7610 }, { 64,7610 }, { 65,7352 }, { 66,7352 }, { 67,7352 }, { 68,7352 }, { 69,7352 }, { 70,7352 }, { 71,7352 }, { 72,7352 }, { 73,7352 }, { 74,7352 }, { 75,7352 }, { 76,7352 }, { 77,7352 }, { 78,7352 }, { 79,7352 }, { 80,7352 }, { 81,7352 }, { 82,7352 }, { 83,7352 }, { 84,7352 }, { 85,7352 }, { 86,7352 }, { 87,7352 }, { 88,7352 }, { 89,7352 }, { 90,7352 }, { 91,7352 }, { 92,7352 }, { 93,7352 }, { 94,7610 }, { 95,7352 }, { 96,7610 }, { 97,7352 }, { 98,7352 }, { 99,7352 }, { 100,7352 }, { 101,7352 }, { 102,7352 }, { 103,7352 }, { 104,7352 }, { 105,7352 }, { 106,7352 }, { 107,7352 }, { 108,7352 }, { 109,7352 }, { 110,7352 }, { 111,7352 }, { 112,7352 }, { 113,7352 }, { 114,7352 }, { 115,7352 }, { 116,7352 }, { 117,7352 }, { 118,7352 }, { 119,7352 }, { 120,7352 }, { 121,7352 }, { 122,7352 }, { 123,7352 }, { 124,7610 }, { 125,7352 }, { 126,7610 }, { 127,7352 }, { 128,7352 }, { 129,7352 }, { 130,7352 }, { 131,7352 }, { 132,7352 }, { 133,7352 }, { 134,7352 }, { 135,7352 }, { 136,7352 }, { 137,7352 }, { 138,7352 }, { 139,7352 }, { 140,7352 }, { 141,7352 }, { 142,7352 }, { 143,7352 }, { 144,7352 }, { 145,7352 }, { 146,7352 }, { 147,7352 }, { 148,7352 }, { 149,7352 }, { 150,7352 }, { 151,7352 }, { 152,7352 }, { 153,7352 }, { 154,7352 }, { 155,7352 }, { 156,7352 }, { 157,7352 }, { 158,7352 }, { 159,7352 }, { 160,7352 }, { 161,7352 }, { 162,7352 }, { 163,7352 }, { 164,7352 }, { 165,7352 }, { 166,7352 }, { 167,7352 }, { 168,7352 }, { 169,7352 }, { 170,7352 }, { 171,7352 }, { 172,7352 }, { 173,7352 }, { 174,7352 }, { 175,7352 }, { 176,7352 }, { 177,7352 }, { 178,7352 }, { 179,7352 }, { 180,7352 }, { 181,7352 }, { 182,7352 }, { 183,7352 }, { 184,7352 }, { 185,7352 }, { 186,7352 }, { 187,7352 }, { 188,7352 }, { 189,7352 }, { 190,7352 }, { 191,7352 }, { 192,7352 }, { 193,7352 }, { 194,7352 }, { 195,7352 }, { 196,7352 }, { 197,7352 }, { 198,7352 }, { 199,7352 }, { 200,7352 }, { 201,7352 }, { 202,7352 }, { 203,7352 }, { 204,7352 }, { 205,7352 }, { 206,7352 }, { 207,7352 }, { 208,7352 }, { 209,7352 }, { 210,7352 }, { 211,7352 }, { 212,7352 }, { 213,7352 }, { 214,7352 }, { 215,7352 }, { 216,7352 }, { 217,7352 }, { 218,7352 }, { 219,7352 }, { 220,7352 }, { 221,7352 }, { 222,7352 }, { 223,7352 }, { 224,7352 }, { 225,7352 }, { 226,7352 }, { 227,7352 }, { 228,7352 }, { 229,7352 }, { 230,7352 }, { 231,7352 }, { 232,7352 }, { 233,7352 }, { 234,7352 }, { 235,7352 }, { 236,7352 }, { 237,7352 }, { 238,7352 }, { 239,7352 }, { 240,7352 }, { 241,7352 }, { 242,7352 }, { 243,7352 }, { 244,7352 }, { 245,7352 }, { 246,7352 }, { 247,7352 }, { 248,7352 }, { 249,7352 }, { 250,7352 }, { 251,7352 }, { 252,7352 }, { 253,7352 }, { 254,7352 }, { 255,7352 }, { 256,7352 }, { 0, 0 }, { 0,15872 }, { 1,7610 }, { 2,7610 }, { 3,7610 }, { 4,7610 }, { 5,7610 }, { 6,7610 }, { 7,7610 }, { 8,7610 }, { 9,7610 }, { 10,7610 }, { 11,7610 }, { 12,7610 }, { 13,7610 }, { 14,7610 }, { 15,7610 }, { 16,7610 }, { 17,7610 }, { 18,7610 }, { 19,7610 }, { 20,7610 }, { 21,7610 }, { 22,7610 }, { 23,7610 }, { 24,7610 }, { 25,7610 }, { 26,7610 }, { 27,7610 }, { 28,7610 }, { 29,7610 }, { 30,7610 }, { 31,7610 }, { 32,7610 }, { 33,7610 }, { 34,4685 }, { 35,7610 }, { 36,7610 }, { 37,7610 }, { 38,7610 }, { 39,7610 }, { 40,7610 }, { 41,7610 }, { 42,7610 }, { 43,7610 }, { 44,7610 }, { 45,7610 }, { 46,7610 }, { 47,7610 }, { 48,7610 }, { 49,7610 }, { 50,7610 }, { 51,7610 }, { 52,7610 }, { 53,7610 }, { 54,7610 }, { 55,7610 }, { 56,7610 }, { 57,7610 }, { 58,7610 }, { 59,7610 }, { 60,7610 }, { 61,7610 }, { 62,7610 }, { 63,7610 }, { 64,7610 }, { 65,7610 }, { 66,7610 }, { 67,7610 }, { 68,7610 }, { 69,7610 }, { 70,7610 }, { 71,7610 }, { 72,7610 }, { 73,7610 }, { 74,7610 }, { 75,7610 }, { 76,7610 }, { 77,7610 }, { 78,7610 }, { 79,7610 }, { 80,7610 }, { 81,7610 }, { 82,7610 }, { 83,7610 }, { 84,7610 }, { 85,7610 }, { 86,7610 }, { 87,7610 }, { 88,7610 }, { 89,7610 }, { 90,7610 }, { 91,7610 }, { 92,7610 }, { 93,7610 }, { 94,7610 }, { 95,7610 }, { 96,7610 }, { 97,7610 }, { 98,7610 }, { 99,7610 }, { 100,7610 }, { 101,7610 }, { 102,7610 }, { 103,7610 }, { 104,7610 }, { 105,7610 }, { 106,7610 }, { 107,7610 }, { 108,7610 }, { 109,7610 }, { 110,7610 }, { 111,7610 }, { 112,7610 }, { 113,7610 }, { 114,7610 }, { 115,7610 }, { 116,7610 }, { 117,7610 }, { 118,7610 }, { 119,7610 }, { 120,7610 }, { 121,7610 }, { 122,7610 }, { 123,7610 }, { 124,7610 }, { 125,7610 }, { 126,7610 }, { 127,7610 }, { 128,7610 }, { 129,7610 }, { 130,7610 }, { 131,7610 }, { 132,7610 }, { 133,7610 }, { 134,7610 }, { 135,7610 }, { 136,7610 }, { 137,7610 }, { 138,7610 }, { 139,7610 }, { 140,7610 }, { 141,7610 }, { 142,7610 }, { 143,7610 }, { 144,7610 }, { 145,7610 }, { 146,7610 }, { 147,7610 }, { 148,7610 }, { 149,7610 }, { 150,7610 }, { 151,7610 }, { 152,7610 }, { 153,7610 }, { 154,7610 }, { 155,7610 }, { 156,7610 }, { 157,7610 }, { 158,7610 }, { 159,7610 }, { 160,7610 }, { 161,7610 }, { 162,7610 }, { 163,7610 }, { 164,7610 }, { 165,7610 }, { 166,7610 }, { 167,7610 }, { 168,7610 }, { 169,7610 }, { 170,7610 }, { 171,7610 }, { 172,7610 }, { 173,7610 }, { 174,7610 }, { 175,7610 }, { 176,7610 }, { 177,7610 }, { 178,7610 }, { 179,7610 }, { 180,7610 }, { 181,7610 }, { 182,7610 }, { 183,7610 }, { 184,7610 }, { 185,7610 }, { 186,7610 }, { 187,7610 }, { 188,7610 }, { 189,7610 }, { 190,7610 }, { 191,7610 }, { 192,7610 }, { 193,7610 }, { 194,7610 }, { 195,7610 }, { 196,7610 }, { 197,7610 }, { 198,7610 }, { 199,7610 }, { 200,7610 }, { 201,7610 }, { 202,7610 }, { 203,7610 }, { 204,7610 }, { 205,7610 }, { 206,7610 }, { 207,7610 }, { 208,7610 }, { 209,7610 }, { 210,7610 }, { 211,7610 }, { 212,7610 }, { 213,7610 }, { 214,7610 }, { 215,7610 }, { 216,7610 }, { 217,7610 }, { 218,7610 }, { 219,7610 }, { 220,7610 }, { 221,7610 }, { 222,7610 }, { 223,7610 }, { 224,7610 }, { 225,7610 }, { 226,7610 }, { 227,7610 }, { 228,7610 }, { 229,7610 }, { 230,7610 }, { 231,7610 }, { 232,7610 }, { 233,7610 }, { 234,7610 }, { 235,7610 }, { 236,7610 }, { 237,7610 }, { 238,7610 }, { 239,7610 }, { 240,7610 }, { 241,7610 }, { 242,7610 }, { 243,7610 }, { 244,7610 }, { 245,7610 }, { 246,7610 }, { 247,7610 }, { 248,7610 }, { 249,7610 }, { 250,7610 }, { 251,7610 }, { 252,7610 }, { 253,7610 }, { 254,7610 }, { 255,7610 }, { 256,7610 }, { 0, 0 }, { 0,15614 }, { 1,7352 }, { 2,7352 }, { 3,7352 }, { 4,7352 }, { 5,7352 }, { 6,7352 }, { 7,7352 }, { 8,7352 }, { 9,7352 }, { 10,7352 }, { 11,7352 }, { 12,7352 }, { 13,7352 }, { 14,7352 }, { 15,7352 }, { 16,7352 }, { 17,7352 }, { 18,7352 }, { 19,7352 }, { 20,7352 }, { 21,7352 }, { 22,7352 }, { 23,7352 }, { 24,7352 }, { 25,7352 }, { 26,7352 }, { 27,7352 }, { 28,7352 }, { 29,7352 }, { 30,7352 }, { 31,7352 }, { 32,7352 }, { 33,7352 }, { 34,4427 }, { 35,7352 }, { 36,7352 }, { 37,7352 }, { 38,7352 }, { 39,7352 }, { 40,7352 }, { 41,7352 }, { 42,7352 }, { 43,7352 }, { 44,7352 }, { 45,7352 }, { 46,7352 }, { 47,7352 }, { 48,7352 }, { 49,7352 }, { 50,7352 }, { 51,7352 }, { 52,7352 }, { 53,7352 }, { 54,7352 }, { 55,7352 }, { 56,7352 }, { 57,7352 }, { 58,7352 }, { 59,7352 }, { 60,7352 }, { 61,7352 }, { 62,7352 }, { 63,7352 }, { 64,7352 }, { 65,7352 }, { 66,7352 }, { 67,7352 }, { 68,7352 }, { 69,7352 }, { 70,7352 }, { 71,7352 }, { 72,7352 }, { 73,7352 }, { 74,7352 }, { 75,7352 }, { 76,7352 }, { 77,7352 }, { 78,7352 }, { 79,7352 }, { 80,7352 }, { 81,7352 }, { 82,7352 }, { 83,7352 }, { 84,7352 }, { 85,7352 }, { 86,7352 }, { 87,7352 }, { 88,7352 }, { 89,7352 }, { 90,7352 }, { 91,7352 }, { 92,7352 }, { 93,7352 }, { 94,7352 }, { 95,7352 }, { 96,7352 }, { 97,7352 }, { 98,7352 }, { 99,7352 }, { 100,7352 }, { 101,7352 }, { 102,7352 }, { 103,7352 }, { 104,7352 }, { 105,7352 }, { 106,7352 }, { 107,7352 }, { 108,7352 }, { 109,7352 }, { 110,7352 }, { 111,7352 }, { 112,7352 }, { 113,7352 }, { 114,7352 }, { 115,7352 }, { 116,7352 }, { 117,7352 }, { 118,7352 }, { 119,7352 }, { 120,7352 }, { 121,7352 }, { 122,7352 }, { 123,7352 }, { 124,7352 }, { 125,7352 }, { 126,7352 }, { 127,7352 }, { 128,7352 }, { 129,7352 }, { 130,7352 }, { 131,7352 }, { 132,7352 }, { 133,7352 }, { 134,7352 }, { 135,7352 }, { 136,7352 }, { 137,7352 }, { 138,7352 }, { 139,7352 }, { 140,7352 }, { 141,7352 }, { 142,7352 }, { 143,7352 }, { 144,7352 }, { 145,7352 }, { 146,7352 }, { 147,7352 }, { 148,7352 }, { 149,7352 }, { 150,7352 }, { 151,7352 }, { 152,7352 }, { 153,7352 }, { 154,7352 }, { 155,7352 }, { 156,7352 }, { 157,7352 }, { 158,7352 }, { 159,7352 }, { 160,7352 }, { 161,7352 }, { 162,7352 }, { 163,7352 }, { 164,7352 }, { 165,7352 }, { 166,7352 }, { 167,7352 }, { 168,7352 }, { 169,7352 }, { 170,7352 }, { 171,7352 }, { 172,7352 }, { 173,7352 }, { 174,7352 }, { 175,7352 }, { 176,7352 }, { 177,7352 }, { 178,7352 }, { 179,7352 }, { 180,7352 }, { 181,7352 }, { 182,7352 }, { 183,7352 }, { 184,7352 }, { 185,7352 }, { 186,7352 }, { 187,7352 }, { 188,7352 }, { 189,7352 }, { 190,7352 }, { 191,7352 }, { 192,7352 }, { 193,7352 }, { 194,7352 }, { 195,7352 }, { 196,7352 }, { 197,7352 }, { 198,7352 }, { 199,7352 }, { 200,7352 }, { 201,7352 }, { 202,7352 }, { 203,7352 }, { 204,7352 }, { 205,7352 }, { 206,7352 }, { 207,7352 }, { 208,7352 }, { 209,7352 }, { 210,7352 }, { 211,7352 }, { 212,7352 }, { 213,7352 }, { 214,7352 }, { 215,7352 }, { 216,7352 }, { 217,7352 }, { 218,7352 }, { 219,7352 }, { 220,7352 }, { 221,7352 }, { 222,7352 }, { 223,7352 }, { 224,7352 }, { 225,7352 }, { 226,7352 }, { 227,7352 }, { 228,7352 }, { 229,7352 }, { 230,7352 }, { 231,7352 }, { 232,7352 }, { 233,7352 }, { 234,7352 }, { 235,7352 }, { 236,7352 }, { 237,7352 }, { 238,7352 }, { 239,7352 }, { 240,7352 }, { 241,7352 }, { 242,7352 }, { 243,7352 }, { 244,7352 }, { 245,7352 }, { 246,7352 }, { 247,7352 }, { 248,7352 }, { 249,7352 }, { 250,7352 }, { 251,7352 }, { 252,7352 }, { 253,7352 }, { 254,7352 }, { 255,7352 }, { 256,7352 }, { 0, 10 }, { 0,15356 }, { 1,7352 }, { 2,7352 }, { 3,7352 }, { 4,7352 }, { 5,7352 }, { 6,7352 }, { 7,7352 }, { 8,7352 }, { 9,7352 }, { 10,7352 }, { 11,7352 }, { 12,7352 }, { 13,7352 }, { 14,7352 }, { 15,7352 }, { 16,7352 }, { 17,7352 }, { 18,7352 }, { 19,7352 }, { 20,7352 }, { 21,7352 }, { 22,7352 }, { 23,7352 }, { 24,7352 }, { 25,7352 }, { 26,7352 }, { 27,7352 }, { 28,7352 }, { 29,7352 }, { 30,7352 }, { 31,7352 }, { 32,7352 }, { 33,7352 }, { 34,7352 }, { 35,7352 }, { 36,7352 }, { 37,7352 }, { 38,7352 }, { 39,4157 }, { 40,7352 }, { 41,7352 }, { 42,7352 }, { 43,7352 }, { 44,7352 }, { 45,7352 }, { 46,7352 }, { 47,7352 }, { 48,7352 }, { 49,7352 }, { 50,7352 }, { 51,7352 }, { 52,7352 }, { 53,7352 }, { 54,7352 }, { 55,7352 }, { 56,7352 }, { 57,7352 }, { 58,7352 }, { 59,7352 }, { 60,7352 }, { 61,7352 }, { 62,7352 }, { 63,7352 }, { 64,7352 }, { 65,7352 }, { 66,7352 }, { 67,7352 }, { 68,7352 }, { 69,7352 }, { 70,7352 }, { 71,7352 }, { 72,7352 }, { 73,7352 }, { 74,7352 }, { 75,7352 }, { 76,7352 }, { 77,7352 }, { 78,7352 }, { 79,7352 }, { 80,7352 }, { 81,7352 }, { 82,7352 }, { 83,7352 }, { 84,7352 }, { 85,7352 }, { 86,7352 }, { 87,7352 }, { 88,7352 }, { 89,7352 }, { 90,7352 }, { 91,7352 }, { 92,7352 }, { 93,7352 }, { 94,7352 }, { 95,7352 }, { 96,7352 }, { 97,7352 }, { 98,7352 }, { 99,7352 }, { 100,7352 }, { 101,7352 }, { 102,7352 }, { 103,7352 }, { 104,7352 }, { 105,7352 }, { 106,7352 }, { 107,7352 }, { 108,7352 }, { 109,7352 }, { 110,7352 }, { 111,7352 }, { 112,7352 }, { 113,7352 }, { 114,7352 }, { 115,7352 }, { 116,7352 }, { 117,7352 }, { 118,7352 }, { 119,7352 }, { 120,7352 }, { 121,7352 }, { 122,7352 }, { 123,7352 }, { 124,7352 }, { 125,7352 }, { 126,7352 }, { 127,7352 }, { 128,7352 }, { 129,7352 }, { 130,7352 }, { 131,7352 }, { 132,7352 }, { 133,7352 }, { 134,7352 }, { 135,7352 }, { 136,7352 }, { 137,7352 }, { 138,7352 }, { 139,7352 }, { 140,7352 }, { 141,7352 }, { 142,7352 }, { 143,7352 }, { 144,7352 }, { 145,7352 }, { 146,7352 }, { 147,7352 }, { 148,7352 }, { 149,7352 }, { 150,7352 }, { 151,7352 }, { 152,7352 }, { 153,7352 }, { 154,7352 }, { 155,7352 }, { 156,7352 }, { 157,7352 }, { 158,7352 }, { 159,7352 }, { 160,7352 }, { 161,7352 }, { 162,7352 }, { 163,7352 }, { 164,7352 }, { 165,7352 }, { 166,7352 }, { 167,7352 }, { 168,7352 }, { 169,7352 }, { 170,7352 }, { 171,7352 }, { 172,7352 }, { 173,7352 }, { 174,7352 }, { 175,7352 }, { 176,7352 }, { 177,7352 }, { 178,7352 }, { 179,7352 }, { 180,7352 }, { 181,7352 }, { 182,7352 }, { 183,7352 }, { 184,7352 }, { 185,7352 }, { 186,7352 }, { 187,7352 }, { 188,7352 }, { 189,7352 }, { 190,7352 }, { 191,7352 }, { 192,7352 }, { 193,7352 }, { 194,7352 }, { 195,7352 }, { 196,7352 }, { 197,7352 }, { 198,7352 }, { 199,7352 }, { 200,7352 }, { 201,7352 }, { 202,7352 }, { 203,7352 }, { 204,7352 }, { 205,7352 }, { 206,7352 }, { 207,7352 }, { 208,7352 }, { 209,7352 }, { 210,7352 }, { 211,7352 }, { 212,7352 }, { 213,7352 }, { 214,7352 }, { 215,7352 }, { 216,7352 }, { 217,7352 }, { 218,7352 }, { 219,7352 }, { 220,7352 }, { 221,7352 }, { 222,7352 }, { 223,7352 }, { 224,7352 }, { 225,7352 }, { 226,7352 }, { 227,7352 }, { 228,7352 }, { 229,7352 }, { 230,7352 }, { 231,7352 }, { 232,7352 }, { 233,7352 }, { 234,7352 }, { 235,7352 }, { 236,7352 }, { 237,7352 }, { 238,7352 }, { 239,7352 }, { 240,7352 }, { 241,7352 }, { 242,7352 }, { 243,7352 }, { 244,7352 }, { 245,7352 }, { 246,7352 }, { 247,7352 }, { 248,7352 }, { 249,7352 }, { 250,7352 }, { 251,7352 }, { 252,7352 }, { 253,7352 }, { 254,7352 }, { 255,7352 }, { 256,7352 }, { 0, 10 }, { 0,15098 }, { 1,7094 }, { 2,7094 }, { 3,7094 }, { 4,7094 }, { 5,7094 }, { 6,7094 }, { 7,7094 }, { 8,7094 }, { 9,7094 }, { 10,7094 }, { 11,7094 }, { 12,7094 }, { 13,7094 }, { 14,7094 }, { 15,7094 }, { 16,7094 }, { 17,7094 }, { 18,7094 }, { 19,7094 }, { 20,7094 }, { 21,7094 }, { 22,7094 }, { 23,7094 }, { 24,7094 }, { 25,7094 }, { 26,7094 }, { 27,7094 }, { 28,7094 }, { 29,7094 }, { 30,7094 }, { 31,7094 }, { 32,7094 }, { 33,7094 }, { 34,7094 }, { 35,7094 }, { 36,7094 }, { 37,7094 }, { 38,7094 }, { 39,3899 }, { 40,7094 }, { 41,7094 }, { 42,7094 }, { 43,7094 }, { 44,7094 }, { 45,7094 }, { 46,7094 }, { 47,7094 }, { 48,7094 }, { 49,7094 }, { 50,7094 }, { 51,7094 }, { 52,7094 }, { 53,7094 }, { 54,7094 }, { 55,7094 }, { 56,7094 }, { 57,7094 }, { 58,7094 }, { 59,7094 }, { 60,7094 }, { 61,7094 }, { 62,7094 }, { 63,7094 }, { 64,7094 }, { 65,7094 }, { 66,7094 }, { 67,7094 }, { 68,7094 }, { 69,7094 }, { 70,7094 }, { 71,7094 }, { 72,7094 }, { 73,7094 }, { 74,7094 }, { 75,7094 }, { 76,7094 }, { 77,7094 }, { 78,7094 }, { 79,7094 }, { 80,7094 }, { 81,7094 }, { 82,7094 }, { 83,7094 }, { 84,7094 }, { 85,7094 }, { 86,7094 }, { 87,7094 }, { 88,7094 }, { 89,7094 }, { 90,7094 }, { 91,7094 }, { 92,7094 }, { 93,7094 }, { 94,7094 }, { 95,7094 }, { 96,7094 }, { 97,7094 }, { 98,7094 }, { 99,7094 }, { 100,7094 }, { 101,7094 }, { 102,7094 }, { 103,7094 }, { 104,7094 }, { 105,7094 }, { 106,7094 }, { 107,7094 }, { 108,7094 }, { 109,7094 }, { 110,7094 }, { 111,7094 }, { 112,7094 }, { 113,7094 }, { 114,7094 }, { 115,7094 }, { 116,7094 }, { 117,7094 }, { 118,7094 }, { 119,7094 }, { 120,7094 }, { 121,7094 }, { 122,7094 }, { 123,7094 }, { 124,7094 }, { 125,7094 }, { 126,7094 }, { 127,7094 }, { 128,7094 }, { 129,7094 }, { 130,7094 }, { 131,7094 }, { 132,7094 }, { 133,7094 }, { 134,7094 }, { 135,7094 }, { 136,7094 }, { 137,7094 }, { 138,7094 }, { 139,7094 }, { 140,7094 }, { 141,7094 }, { 142,7094 }, { 143,7094 }, { 144,7094 }, { 145,7094 }, { 146,7094 }, { 147,7094 }, { 148,7094 }, { 149,7094 }, { 150,7094 }, { 151,7094 }, { 152,7094 }, { 153,7094 }, { 154,7094 }, { 155,7094 }, { 156,7094 }, { 157,7094 }, { 158,7094 }, { 159,7094 }, { 160,7094 }, { 161,7094 }, { 162,7094 }, { 163,7094 }, { 164,7094 }, { 165,7094 }, { 166,7094 }, { 167,7094 }, { 168,7094 }, { 169,7094 }, { 170,7094 }, { 171,7094 }, { 172,7094 }, { 173,7094 }, { 174,7094 }, { 175,7094 }, { 176,7094 }, { 177,7094 }, { 178,7094 }, { 179,7094 }, { 180,7094 }, { 181,7094 }, { 182,7094 }, { 183,7094 }, { 184,7094 }, { 185,7094 }, { 186,7094 }, { 187,7094 }, { 188,7094 }, { 189,7094 }, { 190,7094 }, { 191,7094 }, { 192,7094 }, { 193,7094 }, { 194,7094 }, { 195,7094 }, { 196,7094 }, { 197,7094 }, { 198,7094 }, { 199,7094 }, { 200,7094 }, { 201,7094 }, { 202,7094 }, { 203,7094 }, { 204,7094 }, { 205,7094 }, { 206,7094 }, { 207,7094 }, { 208,7094 }, { 209,7094 }, { 210,7094 }, { 211,7094 }, { 212,7094 }, { 213,7094 }, { 214,7094 }, { 215,7094 }, { 216,7094 }, { 217,7094 }, { 218,7094 }, { 219,7094 }, { 220,7094 }, { 221,7094 }, { 222,7094 }, { 223,7094 }, { 224,7094 }, { 225,7094 }, { 226,7094 }, { 227,7094 }, { 228,7094 }, { 229,7094 }, { 230,7094 }, { 231,7094 }, { 232,7094 }, { 233,7094 }, { 234,7094 }, { 235,7094 }, { 236,7094 }, { 237,7094 }, { 238,7094 }, { 239,7094 }, { 240,7094 }, { 241,7094 }, { 242,7094 }, { 243,7094 }, { 244,7094 }, { 245,7094 }, { 246,7094 }, { 247,7094 }, { 248,7094 }, { 249,7094 }, { 250,7094 }, { 251,7094 }, { 252,7094 }, { 253,7094 }, { 254,7094 }, { 255,7094 }, { 256,7094 }, { 0, 0 }, { 0,14840 }, { 1,7094 }, { 2,7094 }, { 3,7094 }, { 4,7094 }, { 5,7094 }, { 6,7094 }, { 7,7094 }, { 8,7094 }, { 9,7094 }, { 10,7094 }, { 11,7094 }, { 12,7094 }, { 13,7094 }, { 14,7094 }, { 15,7094 }, { 16,7094 }, { 17,7094 }, { 18,7094 }, { 19,7094 }, { 20,7094 }, { 21,7094 }, { 22,7094 }, { 23,7094 }, { 24,7094 }, { 25,7094 }, { 26,7094 }, { 27,7094 }, { 28,7094 }, { 29,7094 }, { 30,7094 }, { 31,7094 }, { 32,7094 }, { 33,7094 }, { 34,7094 }, { 35,7094 }, { 36,7094 }, { 37,7094 }, { 38,7094 }, { 39,3670 }, { 40,7094 }, { 41,7094 }, { 42,7094 }, { 43,7094 }, { 44,7094 }, { 45,7094 }, { 46,7094 }, { 47,7094 }, { 48,7094 }, { 49,7094 }, { 50,7094 }, { 51,7094 }, { 52,7094 }, { 53,7094 }, { 54,7094 }, { 55,7094 }, { 56,7094 }, { 57,7094 }, { 58,7094 }, { 59,7094 }, { 60,7094 }, { 61,7094 }, { 62,7094 }, { 63,7094 }, { 64,7094 }, { 65,7094 }, { 66,7094 }, { 67,7094 }, { 68,7094 }, { 69,7094 }, { 70,7094 }, { 71,7094 }, { 72,7094 }, { 73,7094 }, { 74,7094 }, { 75,7094 }, { 76,7094 }, { 77,7094 }, { 78,7094 }, { 79,7094 }, { 80,7094 }, { 81,7094 }, { 82,7094 }, { 83,7094 }, { 84,7094 }, { 85,7094 }, { 86,7094 }, { 87,7094 }, { 88,7094 }, { 89,7094 }, { 90,7094 }, { 91,7094 }, { 92,7094 }, { 93,7094 }, { 94,7094 }, { 95,7094 }, { 96,7094 }, { 97,7094 }, { 98,7094 }, { 99,7094 }, { 100,7094 }, { 101,7094 }, { 102,7094 }, { 103,7094 }, { 104,7094 }, { 105,7094 }, { 106,7094 }, { 107,7094 }, { 108,7094 }, { 109,7094 }, { 110,7094 }, { 111,7094 }, { 112,7094 }, { 113,7094 }, { 114,7094 }, { 115,7094 }, { 116,7094 }, { 117,7094 }, { 118,7094 }, { 119,7094 }, { 120,7094 }, { 121,7094 }, { 122,7094 }, { 123,7094 }, { 124,7094 }, { 125,7094 }, { 126,7094 }, { 127,7094 }, { 128,7094 }, { 129,7094 }, { 130,7094 }, { 131,7094 }, { 132,7094 }, { 133,7094 }, { 134,7094 }, { 135,7094 }, { 136,7094 }, { 137,7094 }, { 138,7094 }, { 139,7094 }, { 140,7094 }, { 141,7094 }, { 142,7094 }, { 143,7094 }, { 144,7094 }, { 145,7094 }, { 146,7094 }, { 147,7094 }, { 148,7094 }, { 149,7094 }, { 150,7094 }, { 151,7094 }, { 152,7094 }, { 153,7094 }, { 154,7094 }, { 155,7094 }, { 156,7094 }, { 157,7094 }, { 158,7094 }, { 159,7094 }, { 160,7094 }, { 161,7094 }, { 162,7094 }, { 163,7094 }, { 164,7094 }, { 165,7094 }, { 166,7094 }, { 167,7094 }, { 168,7094 }, { 169,7094 }, { 170,7094 }, { 171,7094 }, { 172,7094 }, { 173,7094 }, { 174,7094 }, { 175,7094 }, { 176,7094 }, { 177,7094 }, { 178,7094 }, { 179,7094 }, { 180,7094 }, { 181,7094 }, { 182,7094 }, { 183,7094 }, { 184,7094 }, { 185,7094 }, { 186,7094 }, { 187,7094 }, { 188,7094 }, { 189,7094 }, { 190,7094 }, { 191,7094 }, { 192,7094 }, { 193,7094 }, { 194,7094 }, { 195,7094 }, { 196,7094 }, { 197,7094 }, { 198,7094 }, { 199,7094 }, { 200,7094 }, { 201,7094 }, { 202,7094 }, { 203,7094 }, { 204,7094 }, { 205,7094 }, { 206,7094 }, { 207,7094 }, { 208,7094 }, { 209,7094 }, { 210,7094 }, { 211,7094 }, { 212,7094 }, { 213,7094 }, { 214,7094 }, { 215,7094 }, { 216,7094 }, { 217,7094 }, { 218,7094 }, { 219,7094 }, { 220,7094 }, { 221,7094 }, { 222,7094 }, { 223,7094 }, { 224,7094 }, { 225,7094 }, { 226,7094 }, { 227,7094 }, { 228,7094 }, { 229,7094 }, { 230,7094 }, { 231,7094 }, { 232,7094 }, { 233,7094 }, { 234,7094 }, { 235,7094 }, { 236,7094 }, { 237,7094 }, { 238,7094 }, { 239,7094 }, { 240,7094 }, { 241,7094 }, { 242,7094 }, { 243,7094 }, { 244,7094 }, { 245,7094 }, { 246,7094 }, { 247,7094 }, { 248,7094 }, { 249,7094 }, { 250,7094 }, { 251,7094 }, { 252,7094 }, { 253,7094 }, { 254,7094 }, { 255,7094 }, { 256,7094 }, { 0, 0 }, { 0,14582 }, { 1,6836 }, { 2,6836 }, { 3,6836 }, { 4,6836 }, { 5,6836 }, { 6,6836 }, { 7,6836 }, { 8,6836 }, { 9,6836 }, { 10,6836 }, { 11,6836 }, { 12,6836 }, { 13,6836 }, { 14,6836 }, { 15,6836 }, { 16,6836 }, { 17,6836 }, { 18,6836 }, { 19,6836 }, { 20,6836 }, { 21,6836 }, { 22,6836 }, { 23,6836 }, { 24,6836 }, { 25,6836 }, { 26,6836 }, { 27,6836 }, { 28,6836 }, { 29,6836 }, { 30,6836 }, { 31,6836 }, { 32,6836 }, { 33,6836 }, { 34,6836 }, { 35,6836 }, { 36,6836 }, { 37,6836 }, { 38,6836 }, { 39,3412 }, { 40,6836 }, { 41,6836 }, { 42,6836 }, { 43,6836 }, { 44,6836 }, { 45,6836 }, { 46,6836 }, { 47,6836 }, { 48,6836 }, { 49,6836 }, { 50,6836 }, { 51,6836 }, { 52,6836 }, { 53,6836 }, { 54,6836 }, { 55,6836 }, { 56,6836 }, { 57,6836 }, { 58,6836 }, { 59,6836 }, { 60,6836 }, { 61,6836 }, { 62,6836 }, { 63,6836 }, { 64,6836 }, { 65,6836 }, { 66,6836 }, { 67,6836 }, { 68,6836 }, { 69,6836 }, { 70,6836 }, { 71,6836 }, { 72,6836 }, { 73,6836 }, { 74,6836 }, { 75,6836 }, { 76,6836 }, { 77,6836 }, { 78,6836 }, { 79,6836 }, { 80,6836 }, { 81,6836 }, { 82,6836 }, { 83,6836 }, { 84,6836 }, { 85,6836 }, { 86,6836 }, { 87,6836 }, { 88,6836 }, { 89,6836 }, { 90,6836 }, { 91,6836 }, { 92,6836 }, { 93,6836 }, { 94,6836 }, { 95,6836 }, { 96,6836 }, { 97,6836 }, { 98,6836 }, { 99,6836 }, { 100,6836 }, { 101,6836 }, { 102,6836 }, { 103,6836 }, { 104,6836 }, { 105,6836 }, { 106,6836 }, { 107,6836 }, { 108,6836 }, { 109,6836 }, { 110,6836 }, { 111,6836 }, { 112,6836 }, { 113,6836 }, { 114,6836 }, { 115,6836 }, { 116,6836 }, { 117,6836 }, { 118,6836 }, { 119,6836 }, { 120,6836 }, { 121,6836 }, { 122,6836 }, { 123,6836 }, { 124,6836 }, { 125,6836 }, { 126,6836 }, { 127,6836 }, { 128,6836 }, { 129,6836 }, { 130,6836 }, { 131,6836 }, { 132,6836 }, { 133,6836 }, { 134,6836 }, { 135,6836 }, { 136,6836 }, { 137,6836 }, { 138,6836 }, { 139,6836 }, { 140,6836 }, { 141,6836 }, { 142,6836 }, { 143,6836 }, { 144,6836 }, { 145,6836 }, { 146,6836 }, { 147,6836 }, { 148,6836 }, { 149,6836 }, { 150,6836 }, { 151,6836 }, { 152,6836 }, { 153,6836 }, { 154,6836 }, { 155,6836 }, { 156,6836 }, { 157,6836 }, { 158,6836 }, { 159,6836 }, { 160,6836 }, { 161,6836 }, { 162,6836 }, { 163,6836 }, { 164,6836 }, { 165,6836 }, { 166,6836 }, { 167,6836 }, { 168,6836 }, { 169,6836 }, { 170,6836 }, { 171,6836 }, { 172,6836 }, { 173,6836 }, { 174,6836 }, { 175,6836 }, { 176,6836 }, { 177,6836 }, { 178,6836 }, { 179,6836 }, { 180,6836 }, { 181,6836 }, { 182,6836 }, { 183,6836 }, { 184,6836 }, { 185,6836 }, { 186,6836 }, { 187,6836 }, { 188,6836 }, { 189,6836 }, { 190,6836 }, { 191,6836 }, { 192,6836 }, { 193,6836 }, { 194,6836 }, { 195,6836 }, { 196,6836 }, { 197,6836 }, { 198,6836 }, { 199,6836 }, { 200,6836 }, { 201,6836 }, { 202,6836 }, { 203,6836 }, { 204,6836 }, { 205,6836 }, { 206,6836 }, { 207,6836 }, { 208,6836 }, { 209,6836 }, { 210,6836 }, { 211,6836 }, { 212,6836 }, { 213,6836 }, { 214,6836 }, { 215,6836 }, { 216,6836 }, { 217,6836 }, { 218,6836 }, { 219,6836 }, { 220,6836 }, { 221,6836 }, { 222,6836 }, { 223,6836 }, { 224,6836 }, { 225,6836 }, { 226,6836 }, { 227,6836 }, { 228,6836 }, { 229,6836 }, { 230,6836 }, { 231,6836 }, { 232,6836 }, { 233,6836 }, { 234,6836 }, { 235,6836 }, { 236,6836 }, { 237,6836 }, { 238,6836 }, { 239,6836 }, { 240,6836 }, { 241,6836 }, { 242,6836 }, { 243,6836 }, { 244,6836 }, { 245,6836 }, { 246,6836 }, { 247,6836 }, { 248,6836 }, { 249,6836 }, { 250,6836 }, { 251,6836 }, { 252,6836 }, { 253,6836 }, { 254,6836 }, { 255,6836 }, { 256,6836 }, { 0, 19 }, { 0,14324 }, { 1,3156 }, { 2,3156 }, { 3,3156 }, { 4,3156 }, { 5,3156 }, { 6,3156 }, { 7,3156 }, { 8,3156 }, { 9,6836 }, { 10,6841 }, { 11,3156 }, { 12,6836 }, { 13,6857 }, { 14,3156 }, { 15,3156 }, { 16,3156 }, { 17,3156 }, { 18,3156 }, { 19,3156 }, { 20,3156 }, { 21,3156 }, { 22,3156 }, { 23,3156 }, { 24,3156 }, { 25,3156 }, { 26,3156 }, { 27,3156 }, { 28,3156 }, { 29,3156 }, { 30,3156 }, { 31,3156 }, { 32,6836 }, { 33,3156 }, { 34,3156 }, { 35,3156 }, { 36,3156 }, { 37,3156 }, { 38,3156 }, { 39,3156 }, { 40,3156 }, { 41,3156 }, { 42,3156 }, { 43,3156 }, { 44,3156 }, { 45,3158 }, { 46,3156 }, { 47,3156 }, { 48,3156 }, { 49,3156 }, { 50,3156 }, { 51,3156 }, { 52,3156 }, { 53,3156 }, { 54,3156 }, { 55,3156 }, { 56,3156 }, { 57,3156 }, { 58,3156 }, { 59,3156 }, { 60,3156 }, { 61,3156 }, { 62,3156 }, { 63,3156 }, { 64,3156 }, { 65,3156 }, { 66,3156 }, { 67,3156 }, { 68,3156 }, { 69,3156 }, { 70,3156 }, { 71,3156 }, { 72,3156 }, { 73,3156 }, { 74,3156 }, { 75,3156 }, { 76,3156 }, { 77,3156 }, { 78,3156 }, { 79,3156 }, { 80,3156 }, { 81,3156 }, { 82,3156 }, { 83,3156 }, { 84,3156 }, { 85,3156 }, { 86,3156 }, { 87,3156 }, { 88,3156 }, { 89,3156 }, { 90,3156 }, { 91,3156 }, { 92,3156 }, { 93,3156 }, { 94,3156 }, { 95,3156 }, { 96,3156 }, { 97,3156 }, { 98,3156 }, { 99,3156 }, { 100,3156 }, { 101,3156 }, { 102,3156 }, { 103,3156 }, { 104,3156 }, { 105,3156 }, { 106,3156 }, { 107,3156 }, { 108,3156 }, { 109,3156 }, { 110,3156 }, { 111,3156 }, { 112,3156 }, { 113,3156 }, { 114,3156 }, { 115,3156 }, { 116,3156 }, { 117,3156 }, { 118,3156 }, { 119,3156 }, { 120,3156 }, { 121,3156 }, { 122,3156 }, { 123,3156 }, { 124,3156 }, { 125,3156 }, { 126,3156 }, { 127,3156 }, { 128,3156 }, { 129,3156 }, { 130,3156 }, { 131,3156 }, { 132,3156 }, { 133,3156 }, { 134,3156 }, { 135,3156 }, { 136,3156 }, { 137,3156 }, { 138,3156 }, { 139,3156 }, { 140,3156 }, { 141,3156 }, { 142,3156 }, { 143,3156 }, { 144,3156 }, { 145,3156 }, { 146,3156 }, { 147,3156 }, { 148,3156 }, { 149,3156 }, { 150,3156 }, { 151,3156 }, { 152,3156 }, { 153,3156 }, { 154,3156 }, { 155,3156 }, { 156,3156 }, { 157,3156 }, { 158,3156 }, { 159,3156 }, { 160,3156 }, { 161,3156 }, { 162,3156 }, { 163,3156 }, { 164,3156 }, { 165,3156 }, { 166,3156 }, { 167,3156 }, { 168,3156 }, { 169,3156 }, { 170,3156 }, { 171,3156 }, { 172,3156 }, { 173,3156 }, { 174,3156 }, { 175,3156 }, { 176,3156 }, { 177,3156 }, { 178,3156 }, { 179,3156 }, { 180,3156 }, { 181,3156 }, { 182,3156 }, { 183,3156 }, { 184,3156 }, { 185,3156 }, { 186,3156 }, { 187,3156 }, { 188,3156 }, { 189,3156 }, { 190,3156 }, { 191,3156 }, { 192,3156 }, { 193,3156 }, { 194,3156 }, { 195,3156 }, { 196,3156 }, { 197,3156 }, { 198,3156 }, { 199,3156 }, { 200,3156 }, { 201,3156 }, { 202,3156 }, { 203,3156 }, { 204,3156 }, { 205,3156 }, { 206,3156 }, { 207,3156 }, { 208,3156 }, { 209,3156 }, { 210,3156 }, { 211,3156 }, { 212,3156 }, { 213,3156 }, { 214,3156 }, { 215,3156 }, { 216,3156 }, { 217,3156 }, { 218,3156 }, { 219,3156 }, { 220,3156 }, { 221,3156 }, { 222,3156 }, { 223,3156 }, { 224,3156 }, { 225,3156 }, { 226,3156 }, { 227,3156 }, { 228,3156 }, { 229,3156 }, { 230,3156 }, { 231,3156 }, { 232,3156 }, { 233,3156 }, { 234,3156 }, { 235,3156 }, { 236,3156 }, { 237,3156 }, { 238,3156 }, { 239,3156 }, { 240,3156 }, { 241,3156 }, { 242,3156 }, { 243,3156 }, { 244,3156 }, { 245,3156 }, { 246,3156 }, { 247,3156 }, { 248,3156 }, { 249,3156 }, { 250,3156 }, { 251,3156 }, { 252,3156 }, { 253,3156 }, { 254,3156 }, { 255,3156 }, { 256,3156 }, { 0, 19 }, { 0,14066 }, { 1,2898 }, { 2,2898 }, { 3,2898 }, { 4,2898 }, { 5,2898 }, { 6,2898 }, { 7,2898 }, { 8,2898 }, { 9,6578 }, { 10,6583 }, { 11,2898 }, { 12,6578 }, { 13,6599 }, { 14,2898 }, { 15,2898 }, { 16,2898 }, { 17,2898 }, { 18,2898 }, { 19,2898 }, { 20,2898 }, { 21,2898 }, { 22,2898 }, { 23,2898 }, { 24,2898 }, { 25,2898 }, { 26,2898 }, { 27,2898 }, { 28,2898 }, { 29,2898 }, { 30,2898 }, { 31,2898 }, { 32,6578 }, { 33,2898 }, { 34,2898 }, { 35,2898 }, { 36,2898 }, { 37,2898 }, { 38,2898 }, { 39,2898 }, { 40,2898 }, { 41,2898 }, { 42,2898 }, { 43,2898 }, { 44,2898 }, { 45,2900 }, { 46,2898 }, { 47,2898 }, { 48,2898 }, { 49,2898 }, { 50,2898 }, { 51,2898 }, { 52,2898 }, { 53,2898 }, { 54,2898 }, { 55,2898 }, { 56,2898 }, { 57,2898 }, { 58,2898 }, { 59,2898 }, { 60,2898 }, { 61,2898 }, { 62,2898 }, { 63,2898 }, { 64,2898 }, { 65,2898 }, { 66,2898 }, { 67,2898 }, { 68,2898 }, { 69,2898 }, { 70,2898 }, { 71,2898 }, { 72,2898 }, { 73,2898 }, { 74,2898 }, { 75,2898 }, { 76,2898 }, { 77,2898 }, { 78,2898 }, { 79,2898 }, { 80,2898 }, { 81,2898 }, { 82,2898 }, { 83,2898 }, { 84,2898 }, { 85,2898 }, { 86,2898 }, { 87,2898 }, { 88,2898 }, { 89,2898 }, { 90,2898 }, { 91,2898 }, { 92,2898 }, { 93,2898 }, { 94,2898 }, { 95,2898 }, { 96,2898 }, { 97,2898 }, { 98,2898 }, { 99,2898 }, { 100,2898 }, { 101,2898 }, { 102,2898 }, { 103,2898 }, { 104,2898 }, { 105,2898 }, { 106,2898 }, { 107,2898 }, { 108,2898 }, { 109,2898 }, { 110,2898 }, { 111,2898 }, { 112,2898 }, { 113,2898 }, { 114,2898 }, { 115,2898 }, { 116,2898 }, { 117,2898 }, { 118,2898 }, { 119,2898 }, { 120,2898 }, { 121,2898 }, { 122,2898 }, { 123,2898 }, { 124,2898 }, { 125,2898 }, { 126,2898 }, { 127,2898 }, { 128,2898 }, { 129,2898 }, { 130,2898 }, { 131,2898 }, { 132,2898 }, { 133,2898 }, { 134,2898 }, { 135,2898 }, { 136,2898 }, { 137,2898 }, { 138,2898 }, { 139,2898 }, { 140,2898 }, { 141,2898 }, { 142,2898 }, { 143,2898 }, { 144,2898 }, { 145,2898 }, { 146,2898 }, { 147,2898 }, { 148,2898 }, { 149,2898 }, { 150,2898 }, { 151,2898 }, { 152,2898 }, { 153,2898 }, { 154,2898 }, { 155,2898 }, { 156,2898 }, { 157,2898 }, { 158,2898 }, { 159,2898 }, { 160,2898 }, { 161,2898 }, { 162,2898 }, { 163,2898 }, { 164,2898 }, { 165,2898 }, { 166,2898 }, { 167,2898 }, { 168,2898 }, { 169,2898 }, { 170,2898 }, { 171,2898 }, { 172,2898 }, { 173,2898 }, { 174,2898 }, { 175,2898 }, { 176,2898 }, { 177,2898 }, { 178,2898 }, { 179,2898 }, { 180,2898 }, { 181,2898 }, { 182,2898 }, { 183,2898 }, { 184,2898 }, { 185,2898 }, { 186,2898 }, { 187,2898 }, { 188,2898 }, { 189,2898 }, { 190,2898 }, { 191,2898 }, { 192,2898 }, { 193,2898 }, { 194,2898 }, { 195,2898 }, { 196,2898 }, { 197,2898 }, { 198,2898 }, { 199,2898 }, { 200,2898 }, { 201,2898 }, { 202,2898 }, { 203,2898 }, { 204,2898 }, { 205,2898 }, { 206,2898 }, { 207,2898 }, { 208,2898 }, { 209,2898 }, { 210,2898 }, { 211,2898 }, { 212,2898 }, { 213,2898 }, { 214,2898 }, { 215,2898 }, { 216,2898 }, { 217,2898 }, { 218,2898 }, { 219,2898 }, { 220,2898 }, { 221,2898 }, { 222,2898 }, { 223,2898 }, { 224,2898 }, { 225,2898 }, { 226,2898 }, { 227,2898 }, { 228,2898 }, { 229,2898 }, { 230,2898 }, { 231,2898 }, { 232,2898 }, { 233,2898 }, { 234,2898 }, { 235,2898 }, { 236,2898 }, { 237,2898 }, { 238,2898 }, { 239,2898 }, { 240,2898 }, { 241,2898 }, { 242,2898 }, { 243,2898 }, { 244,2898 }, { 245,2898 }, { 246,2898 }, { 247,2898 }, { 248,2898 }, { 249,2898 }, { 250,2898 }, { 251,2898 }, { 252,2898 }, { 253,2898 }, { 254,2898 }, { 255,2898 }, { 256,2898 }, { 0, 0 }, { 0,13808 }, { 1,6388 }, { 2,6388 }, { 3,6388 }, { 4,6388 }, { 5,6388 }, { 6,6388 }, { 7,6388 }, { 8,6388 }, { 9,6388 }, { 10,6646 }, { 11,6388 }, { 12,6388 }, { 13,6388 }, { 14,6388 }, { 15,6388 }, { 16,6388 }, { 17,6388 }, { 18,6388 }, { 19,6388 }, { 20,6388 }, { 21,6388 }, { 22,6388 }, { 23,6388 }, { 24,6388 }, { 25,6388 }, { 26,6388 }, { 27,6388 }, { 28,6388 }, { 29,6388 }, { 30,6388 }, { 31,6388 }, { 32,6388 }, { 33,6388 }, { 34,6388 }, { 35,6388 }, { 36,6388 }, { 37,6388 }, { 38,6388 }, { 39,2645 }, { 40,6388 }, { 41,6388 }, { 42,6388 }, { 43,6388 }, { 44,6388 }, { 45,6388 }, { 46,6388 }, { 47,6388 }, { 48,6388 }, { 49,6388 }, { 50,6388 }, { 51,6388 }, { 52,6388 }, { 53,6388 }, { 54,6388 }, { 55,6388 }, { 56,6388 }, { 57,6388 }, { 58,6388 }, { 59,6388 }, { 60,6388 }, { 61,6388 }, { 62,6388 }, { 63,6388 }, { 64,6388 }, { 65,6388 }, { 66,6388 }, { 67,6388 }, { 68,6388 }, { 69,6388 }, { 70,6388 }, { 71,6388 }, { 72,6388 }, { 73,6388 }, { 74,6388 }, { 75,6388 }, { 76,6388 }, { 77,6388 }, { 78,6388 }, { 79,6388 }, { 80,6388 }, { 81,6388 }, { 82,6388 }, { 83,6388 }, { 84,6388 }, { 85,6388 }, { 86,6388 }, { 87,6388 }, { 88,6388 }, { 89,6388 }, { 90,6388 }, { 91,6388 }, { 92,6904 }, { 93,6388 }, { 94,6388 }, { 95,6388 }, { 96,6388 }, { 97,6388 }, { 98,6388 }, { 99,6388 }, { 100,6388 }, { 101,6388 }, { 102,6388 }, { 103,6388 }, { 104,6388 }, { 105,6388 }, { 106,6388 }, { 107,6388 }, { 108,6388 }, { 109,6388 }, { 110,6388 }, { 111,6388 }, { 112,6388 }, { 113,6388 }, { 114,6388 }, { 115,6388 }, { 116,6388 }, { 117,6388 }, { 118,6388 }, { 119,6388 }, { 120,6388 }, { 121,6388 }, { 122,6388 }, { 123,6388 }, { 124,6388 }, { 125,6388 }, { 126,6388 }, { 127,6388 }, { 128,6388 }, { 129,6388 }, { 130,6388 }, { 131,6388 }, { 132,6388 }, { 133,6388 }, { 134,6388 }, { 135,6388 }, { 136,6388 }, { 137,6388 }, { 138,6388 }, { 139,6388 }, { 140,6388 }, { 141,6388 }, { 142,6388 }, { 143,6388 }, { 144,6388 }, { 145,6388 }, { 146,6388 }, { 147,6388 }, { 148,6388 }, { 149,6388 }, { 150,6388 }, { 151,6388 }, { 152,6388 }, { 153,6388 }, { 154,6388 }, { 155,6388 }, { 156,6388 }, { 157,6388 }, { 158,6388 }, { 159,6388 }, { 160,6388 }, { 161,6388 }, { 162,6388 }, { 163,6388 }, { 164,6388 }, { 165,6388 }, { 166,6388 }, { 167,6388 }, { 168,6388 }, { 169,6388 }, { 170,6388 }, { 171,6388 }, { 172,6388 }, { 173,6388 }, { 174,6388 }, { 175,6388 }, { 176,6388 }, { 177,6388 }, { 178,6388 }, { 179,6388 }, { 180,6388 }, { 181,6388 }, { 182,6388 }, { 183,6388 }, { 184,6388 }, { 185,6388 }, { 186,6388 }, { 187,6388 }, { 188,6388 }, { 189,6388 }, { 190,6388 }, { 191,6388 }, { 192,6388 }, { 193,6388 }, { 194,6388 }, { 195,6388 }, { 196,6388 }, { 197,6388 }, { 198,6388 }, { 199,6388 }, { 200,6388 }, { 201,6388 }, { 202,6388 }, { 203,6388 }, { 204,6388 }, { 205,6388 }, { 206,6388 }, { 207,6388 }, { 208,6388 }, { 209,6388 }, { 210,6388 }, { 211,6388 }, { 212,6388 }, { 213,6388 }, { 214,6388 }, { 215,6388 }, { 216,6388 }, { 217,6388 }, { 218,6388 }, { 219,6388 }, { 220,6388 }, { 221,6388 }, { 222,6388 }, { 223,6388 }, { 224,6388 }, { 225,6388 }, { 226,6388 }, { 227,6388 }, { 228,6388 }, { 229,6388 }, { 230,6388 }, { 231,6388 }, { 232,6388 }, { 233,6388 }, { 234,6388 }, { 235,6388 }, { 236,6388 }, { 237,6388 }, { 238,6388 }, { 239,6388 }, { 240,6388 }, { 241,6388 }, { 242,6388 }, { 243,6388 }, { 244,6388 }, { 245,6388 }, { 246,6388 }, { 247,6388 }, { 248,6388 }, { 249,6388 }, { 250,6388 }, { 251,6388 }, { 252,6388 }, { 253,6388 }, { 254,6388 }, { 255,6388 }, { 256,6388 }, { 0, 0 }, { 0,13550 }, { 1,6130 }, { 2,6130 }, { 3,6130 }, { 4,6130 }, { 5,6130 }, { 6,6130 }, { 7,6130 }, { 8,6130 }, { 9,6130 }, { 10,6388 }, { 11,6130 }, { 12,6130 }, { 13,6130 }, { 14,6130 }, { 15,6130 }, { 16,6130 }, { 17,6130 }, { 18,6130 }, { 19,6130 }, { 20,6130 }, { 21,6130 }, { 22,6130 }, { 23,6130 }, { 24,6130 }, { 25,6130 }, { 26,6130 }, { 27,6130 }, { 28,6130 }, { 29,6130 }, { 30,6130 }, { 31,6130 }, { 32,6130 }, { 33,6130 }, { 34,6130 }, { 35,6130 }, { 36,6130 }, { 37,6130 }, { 38,6130 }, { 39,2387 }, { 40,6130 }, { 41,6130 }, { 42,6130 }, { 43,6130 }, { 44,6130 }, { 45,6130 }, { 46,6130 }, { 47,6130 }, { 48,6130 }, { 49,6130 }, { 50,6130 }, { 51,6130 }, { 52,6130 }, { 53,6130 }, { 54,6130 }, { 55,6130 }, { 56,6130 }, { 57,6130 }, { 58,6130 }, { 59,6130 }, { 60,6130 }, { 61,6130 }, { 62,6130 }, { 63,6130 }, { 64,6130 }, { 65,6130 }, { 66,6130 }, { 67,6130 }, { 68,6130 }, { 69,6130 }, { 70,6130 }, { 71,6130 }, { 72,6130 }, { 73,6130 }, { 74,6130 }, { 75,6130 }, { 76,6130 }, { 77,6130 }, { 78,6130 }, { 79,6130 }, { 80,6130 }, { 81,6130 }, { 82,6130 }, { 83,6130 }, { 84,6130 }, { 85,6130 }, { 86,6130 }, { 87,6130 }, { 88,6130 }, { 89,6130 }, { 90,6130 }, { 91,6130 }, { 92,6646 }, { 93,6130 }, { 94,6130 }, { 95,6130 }, { 96,6130 }, { 97,6130 }, { 98,6130 }, { 99,6130 }, { 100,6130 }, { 101,6130 }, { 102,6130 }, { 103,6130 }, { 104,6130 }, { 105,6130 }, { 106,6130 }, { 107,6130 }, { 108,6130 }, { 109,6130 }, { 110,6130 }, { 111,6130 }, { 112,6130 }, { 113,6130 }, { 114,6130 }, { 115,6130 }, { 116,6130 }, { 117,6130 }, { 118,6130 }, { 119,6130 }, { 120,6130 }, { 121,6130 }, { 122,6130 }, { 123,6130 }, { 124,6130 }, { 125,6130 }, { 126,6130 }, { 127,6130 }, { 128,6130 }, { 129,6130 }, { 130,6130 }, { 131,6130 }, { 132,6130 }, { 133,6130 }, { 134,6130 }, { 135,6130 }, { 136,6130 }, { 137,6130 }, { 138,6130 }, { 139,6130 }, { 140,6130 }, { 141,6130 }, { 142,6130 }, { 143,6130 }, { 144,6130 }, { 145,6130 }, { 146,6130 }, { 147,6130 }, { 148,6130 }, { 149,6130 }, { 150,6130 }, { 151,6130 }, { 152,6130 }, { 153,6130 }, { 154,6130 }, { 155,6130 }, { 156,6130 }, { 157,6130 }, { 158,6130 }, { 159,6130 }, { 160,6130 }, { 161,6130 }, { 162,6130 }, { 163,6130 }, { 164,6130 }, { 165,6130 }, { 166,6130 }, { 167,6130 }, { 168,6130 }, { 169,6130 }, { 170,6130 }, { 171,6130 }, { 172,6130 }, { 173,6130 }, { 174,6130 }, { 175,6130 }, { 176,6130 }, { 177,6130 }, { 178,6130 }, { 179,6130 }, { 180,6130 }, { 181,6130 }, { 182,6130 }, { 183,6130 }, { 184,6130 }, { 185,6130 }, { 186,6130 }, { 187,6130 }, { 188,6130 }, { 189,6130 }, { 190,6130 }, { 191,6130 }, { 192,6130 }, { 193,6130 }, { 194,6130 }, { 195,6130 }, { 196,6130 }, { 197,6130 }, { 198,6130 }, { 199,6130 }, { 200,6130 }, { 201,6130 }, { 202,6130 }, { 203,6130 }, { 204,6130 }, { 205,6130 }, { 206,6130 }, { 207,6130 }, { 208,6130 }, { 209,6130 }, { 210,6130 }, { 211,6130 }, { 212,6130 }, { 213,6130 }, { 214,6130 }, { 215,6130 }, { 216,6130 }, { 217,6130 }, { 218,6130 }, { 219,6130 }, { 220,6130 }, { 221,6130 }, { 222,6130 }, { 223,6130 }, { 224,6130 }, { 225,6130 }, { 226,6130 }, { 227,6130 }, { 228,6130 }, { 229,6130 }, { 230,6130 }, { 231,6130 }, { 232,6130 }, { 233,6130 }, { 234,6130 }, { 235,6130 }, { 236,6130 }, { 237,6130 }, { 238,6130 }, { 239,6130 }, { 240,6130 }, { 241,6130 }, { 242,6130 }, { 243,6130 }, { 244,6130 }, { 245,6130 }, { 246,6130 }, { 247,6130 }, { 248,6130 }, { 249,6130 }, { 250,6130 }, { 251,6130 }, { 252,6130 }, { 253,6130 }, { 254,6130 }, { 255,6130 }, { 256,6130 }, { 0, 0 }, { 0,13292 }, { 1,6646 }, { 2,6646 }, { 3,6646 }, { 4,6646 }, { 5,6646 }, { 6,6646 }, { 7,6646 }, { 8,6646 }, { 9,6646 }, { 10,6904 }, { 11,6646 }, { 12,6646 }, { 13,6646 }, { 14,6646 }, { 15,6646 }, { 16,6646 }, { 17,6646 }, { 18,6646 }, { 19,6646 }, { 20,6646 }, { 21,6646 }, { 22,6646 }, { 23,6646 }, { 24,6646 }, { 25,6646 }, { 26,6646 }, { 27,6646 }, { 28,6646 }, { 29,6646 }, { 30,6646 }, { 31,6646 }, { 32,6646 }, { 33,6646 }, { 34,6646 }, { 35,6646 }, { 36,7162 }, { 37,6646 }, { 38,6646 }, { 39,6646 }, { 40,6646 }, { 41,6646 }, { 42,6646 }, { 43,6646 }, { 44,6646 }, { 45,6646 }, { 46,6646 }, { 47,6646 }, { 48,6646 }, { 49,6646 }, { 50,6646 }, { 51,6646 }, { 52,6646 }, { 53,6646 }, { 54,6646 }, { 55,6646 }, { 56,6646 }, { 57,6646 }, { 58,6646 }, { 59,6646 }, { 60,6646 }, { 61,6646 }, { 62,6646 }, { 63,6646 }, { 64,6646 }, { 65,6646 }, { 66,6646 }, { 67,6646 }, { 68,6646 }, { 69,6646 }, { 70,6646 }, { 71,6646 }, { 72,6646 }, { 73,6646 }, { 74,6646 }, { 75,6646 }, { 76,6646 }, { 77,6646 }, { 78,6646 }, { 79,6646 }, { 80,6646 }, { 81,6646 }, { 82,6646 }, { 83,6646 }, { 84,6646 }, { 85,6646 }, { 86,6646 }, { 87,6646 }, { 88,6646 }, { 89,6646 }, { 90,6646 }, { 91,6646 }, { 92,6646 }, { 93,6646 }, { 94,6646 }, { 95,6646 }, { 96,6646 }, { 97,6646 }, { 98,6646 }, { 99,6646 }, { 100,6646 }, { 101,6646 }, { 102,6646 }, { 103,6646 }, { 104,6646 }, { 105,6646 }, { 106,6646 }, { 107,6646 }, { 108,6646 }, { 109,6646 }, { 110,6646 }, { 111,6646 }, { 112,6646 }, { 113,6646 }, { 114,6646 }, { 115,6646 }, { 116,6646 }, { 117,6646 }, { 118,6646 }, { 119,6646 }, { 120,6646 }, { 121,6646 }, { 122,6646 }, { 123,6646 }, { 124,6646 }, { 125,6646 }, { 126,6646 }, { 127,6646 }, { 128,6646 }, { 129,6646 }, { 130,6646 }, { 131,6646 }, { 132,6646 }, { 133,6646 }, { 134,6646 }, { 135,6646 }, { 136,6646 }, { 137,6646 }, { 138,6646 }, { 139,6646 }, { 140,6646 }, { 141,6646 }, { 142,6646 }, { 143,6646 }, { 144,6646 }, { 145,6646 }, { 146,6646 }, { 147,6646 }, { 148,6646 }, { 149,6646 }, { 150,6646 }, { 151,6646 }, { 152,6646 }, { 153,6646 }, { 154,6646 }, { 155,6646 }, { 156,6646 }, { 157,6646 }, { 158,6646 }, { 159,6646 }, { 160,6646 }, { 161,6646 }, { 162,6646 }, { 163,6646 }, { 164,6646 }, { 165,6646 }, { 166,6646 }, { 167,6646 }, { 168,6646 }, { 169,6646 }, { 170,6646 }, { 171,6646 }, { 172,6646 }, { 173,6646 }, { 174,6646 }, { 175,6646 }, { 176,6646 }, { 177,6646 }, { 178,6646 }, { 179,6646 }, { 180,6646 }, { 181,6646 }, { 182,6646 }, { 183,6646 }, { 184,6646 }, { 185,6646 }, { 186,6646 }, { 187,6646 }, { 188,6646 }, { 189,6646 }, { 190,6646 }, { 191,6646 }, { 192,6646 }, { 193,6646 }, { 194,6646 }, { 195,6646 }, { 196,6646 }, { 197,6646 }, { 198,6646 }, { 199,6646 }, { 200,6646 }, { 201,6646 }, { 202,6646 }, { 203,6646 }, { 204,6646 }, { 205,6646 }, { 206,6646 }, { 207,6646 }, { 208,6646 }, { 209,6646 }, { 210,6646 }, { 211,6646 }, { 212,6646 }, { 213,6646 }, { 214,6646 }, { 215,6646 }, { 216,6646 }, { 217,6646 }, { 218,6646 }, { 219,6646 }, { 220,6646 }, { 221,6646 }, { 222,6646 }, { 223,6646 }, { 224,6646 }, { 225,6646 }, { 226,6646 }, { 227,6646 }, { 228,6646 }, { 229,6646 }, { 230,6646 }, { 231,6646 }, { 232,6646 }, { 233,6646 }, { 234,6646 }, { 235,6646 }, { 236,6646 }, { 237,6646 }, { 238,6646 }, { 239,6646 }, { 240,6646 }, { 241,6646 }, { 242,6646 }, { 243,6646 }, { 244,6646 }, { 245,6646 }, { 246,6646 }, { 247,6646 }, { 248,6646 }, { 249,6646 }, { 250,6646 }, { 251,6646 }, { 252,6646 }, { 253,6646 }, { 254,6646 }, { 255,6646 }, { 256,6646 }, { 0, 0 }, { 0,13034 }, { 1,6388 }, { 2,6388 }, { 3,6388 }, { 4,6388 }, { 5,6388 }, { 6,6388 }, { 7,6388 }, { 8,6388 }, { 9,6388 }, { 10,6646 }, { 11,6388 }, { 12,6388 }, { 13,6388 }, { 14,6388 }, { 15,6388 }, { 16,6388 }, { 17,6388 }, { 18,6388 }, { 19,6388 }, { 20,6388 }, { 21,6388 }, { 22,6388 }, { 23,6388 }, { 24,6388 }, { 25,6388 }, { 26,6388 }, { 27,6388 }, { 28,6388 }, { 29,6388 }, { 30,6388 }, { 31,6388 }, { 32,6388 }, { 33,6388 }, { 34,6388 }, { 35,6388 }, { 36,6904 }, { 37,6388 }, { 38,6388 }, { 39,6388 }, { 40,6388 }, { 41,6388 }, { 42,6388 }, { 43,6388 }, { 44,6388 }, { 45,6388 }, { 46,6388 }, { 47,6388 }, { 48,6388 }, { 49,6388 }, { 50,6388 }, { 51,6388 }, { 52,6388 }, { 53,6388 }, { 54,6388 }, { 55,6388 }, { 56,6388 }, { 57,6388 }, { 58,6388 }, { 59,6388 }, { 60,6388 }, { 61,6388 }, { 62,6388 }, { 63,6388 }, { 64,6388 }, { 65,6388 }, { 66,6388 }, { 67,6388 }, { 68,6388 }, { 69,6388 }, { 70,6388 }, { 71,6388 }, { 72,6388 }, { 73,6388 }, { 74,6388 }, { 75,6388 }, { 76,6388 }, { 77,6388 }, { 78,6388 }, { 79,6388 }, { 80,6388 }, { 81,6388 }, { 82,6388 }, { 83,6388 }, { 84,6388 }, { 85,6388 }, { 86,6388 }, { 87,6388 }, { 88,6388 }, { 89,6388 }, { 90,6388 }, { 91,6388 }, { 92,6388 }, { 93,6388 }, { 94,6388 }, { 95,6388 }, { 96,6388 }, { 97,6388 }, { 98,6388 }, { 99,6388 }, { 100,6388 }, { 101,6388 }, { 102,6388 }, { 103,6388 }, { 104,6388 }, { 105,6388 }, { 106,6388 }, { 107,6388 }, { 108,6388 }, { 109,6388 }, { 110,6388 }, { 111,6388 }, { 112,6388 }, { 113,6388 }, { 114,6388 }, { 115,6388 }, { 116,6388 }, { 117,6388 }, { 118,6388 }, { 119,6388 }, { 120,6388 }, { 121,6388 }, { 122,6388 }, { 123,6388 }, { 124,6388 }, { 125,6388 }, { 126,6388 }, { 127,6388 }, { 128,6388 }, { 129,6388 }, { 130,6388 }, { 131,6388 }, { 132,6388 }, { 133,6388 }, { 134,6388 }, { 135,6388 }, { 136,6388 }, { 137,6388 }, { 138,6388 }, { 139,6388 }, { 140,6388 }, { 141,6388 }, { 142,6388 }, { 143,6388 }, { 144,6388 }, { 145,6388 }, { 146,6388 }, { 147,6388 }, { 148,6388 }, { 149,6388 }, { 150,6388 }, { 151,6388 }, { 152,6388 }, { 153,6388 }, { 154,6388 }, { 155,6388 }, { 156,6388 }, { 157,6388 }, { 158,6388 }, { 159,6388 }, { 160,6388 }, { 161,6388 }, { 162,6388 }, { 163,6388 }, { 164,6388 }, { 165,6388 }, { 166,6388 }, { 167,6388 }, { 168,6388 }, { 169,6388 }, { 170,6388 }, { 171,6388 }, { 172,6388 }, { 173,6388 }, { 174,6388 }, { 175,6388 }, { 176,6388 }, { 177,6388 }, { 178,6388 }, { 179,6388 }, { 180,6388 }, { 181,6388 }, { 182,6388 }, { 183,6388 }, { 184,6388 }, { 185,6388 }, { 186,6388 }, { 187,6388 }, { 188,6388 }, { 189,6388 }, { 190,6388 }, { 191,6388 }, { 192,6388 }, { 193,6388 }, { 194,6388 }, { 195,6388 }, { 196,6388 }, { 197,6388 }, { 198,6388 }, { 199,6388 }, { 200,6388 }, { 201,6388 }, { 202,6388 }, { 203,6388 }, { 204,6388 }, { 205,6388 }, { 206,6388 }, { 207,6388 }, { 208,6388 }, { 209,6388 }, { 210,6388 }, { 211,6388 }, { 212,6388 }, { 213,6388 }, { 214,6388 }, { 215,6388 }, { 216,6388 }, { 217,6388 }, { 218,6388 }, { 219,6388 }, { 220,6388 }, { 221,6388 }, { 222,6388 }, { 223,6388 }, { 224,6388 }, { 225,6388 }, { 226,6388 }, { 227,6388 }, { 228,6388 }, { 229,6388 }, { 230,6388 }, { 231,6388 }, { 232,6388 }, { 233,6388 }, { 234,6388 }, { 235,6388 }, { 236,6388 }, { 237,6388 }, { 238,6388 }, { 239,6388 }, { 240,6388 }, { 241,6388 }, { 242,6388 }, { 243,6388 }, { 244,6388 }, { 245,6388 }, { 246,6388 }, { 247,6388 }, { 248,6388 }, { 249,6388 }, { 250,6388 }, { 251,6388 }, { 252,6388 }, { 253,6388 }, { 254,6388 }, { 255,6388 }, { 256,6388 }, { 0, 0 }, { 0,12776 }, { 1,4514 }, { 2,4514 }, { 3,4514 }, { 4,4514 }, { 5,4514 }, { 6,4514 }, { 7,4514 }, { 8,4514 }, { 9,4514 }, { 10,4514 }, { 11,4514 }, { 12,4514 }, { 13,4514 }, { 14,4514 }, { 15,4514 }, { 16,4514 }, { 17,4514 }, { 18,4514 }, { 19,4514 }, { 20,4514 }, { 21,4514 }, { 22,4514 }, { 23,4514 }, { 24,4514 }, { 25,4514 }, { 26,4514 }, { 27,4514 }, { 28,4514 }, { 29,4514 }, { 30,4514 }, { 31,4514 }, { 32,4514 }, { 33,4514 }, { 34,1615 }, { 35,4514 }, { 36,4514 }, { 37,4514 }, { 38,4514 }, { 39,4514 }, { 40,4514 }, { 41,4514 }, { 42,4514 }, { 43,4514 }, { 44,4514 }, { 45,4514 }, { 46,4514 }, { 47,4514 }, { 48,4514 }, { 49,4514 }, { 50,4514 }, { 51,4514 }, { 52,4514 }, { 53,4514 }, { 54,4514 }, { 55,4514 }, { 56,4514 }, { 57,4514 }, { 58,4514 }, { 59,4514 }, { 60,4514 }, { 61,4514 }, { 62,4514 }, { 63,4514 }, { 64,4514 }, { 65,4514 }, { 66,4514 }, { 67,4514 }, { 68,4514 }, { 69,4514 }, { 70,4514 }, { 71,4514 }, { 72,4514 }, { 73,4514 }, { 74,4514 }, { 75,4514 }, { 76,4514 }, { 77,4514 }, { 78,4514 }, { 79,4514 }, { 80,4514 }, { 81,4514 }, { 82,4514 }, { 83,4514 }, { 84,4514 }, { 85,4514 }, { 86,4514 }, { 87,4514 }, { 88,4514 }, { 89,4514 }, { 90,4514 }, { 91,4514 }, { 92,4514 }, { 93,4514 }, { 94,4514 }, { 95,4514 }, { 96,4514 }, { 97,4514 }, { 98,4514 }, { 99,4514 }, { 100,4514 }, { 101,4514 }, { 102,4514 }, { 103,4514 }, { 104,4514 }, { 105,4514 }, { 106,4514 }, { 107,4514 }, { 108,4514 }, { 109,4514 }, { 110,4514 }, { 111,4514 }, { 112,4514 }, { 113,4514 }, { 114,4514 }, { 115,4514 }, { 116,4514 }, { 117,4514 }, { 118,4514 }, { 119,4514 }, { 120,4514 }, { 121,4514 }, { 122,4514 }, { 123,4514 }, { 124,4514 }, { 125,4514 }, { 126,4514 }, { 127,4514 }, { 128,4514 }, { 129,4514 }, { 130,4514 }, { 131,4514 }, { 132,4514 }, { 133,4514 }, { 134,4514 }, { 135,4514 }, { 136,4514 }, { 137,4514 }, { 138,4514 }, { 139,4514 }, { 140,4514 }, { 141,4514 }, { 142,4514 }, { 143,4514 }, { 144,4514 }, { 145,4514 }, { 146,4514 }, { 147,4514 }, { 148,4514 }, { 149,4514 }, { 150,4514 }, { 151,4514 }, { 152,4514 }, { 153,4514 }, { 154,4514 }, { 155,4514 }, { 156,4514 }, { 157,4514 }, { 158,4514 }, { 159,4514 }, { 160,4514 }, { 161,4514 }, { 162,4514 }, { 163,4514 }, { 164,4514 }, { 165,4514 }, { 166,4514 }, { 167,4514 }, { 168,4514 }, { 169,4514 }, { 170,4514 }, { 171,4514 }, { 172,4514 }, { 173,4514 }, { 174,4514 }, { 175,4514 }, { 176,4514 }, { 177,4514 }, { 178,4514 }, { 179,4514 }, { 180,4514 }, { 181,4514 }, { 182,4514 }, { 183,4514 }, { 184,4514 }, { 185,4514 }, { 186,4514 }, { 187,4514 }, { 188,4514 }, { 189,4514 }, { 190,4514 }, { 191,4514 }, { 192,4514 }, { 193,4514 }, { 194,4514 }, { 195,4514 }, { 196,4514 }, { 197,4514 }, { 198,4514 }, { 199,4514 }, { 200,4514 }, { 201,4514 }, { 202,4514 }, { 203,4514 }, { 204,4514 }, { 205,4514 }, { 206,4514 }, { 207,4514 }, { 208,4514 }, { 209,4514 }, { 210,4514 }, { 211,4514 }, { 212,4514 }, { 213,4514 }, { 214,4514 }, { 215,4514 }, { 216,4514 }, { 217,4514 }, { 218,4514 }, { 219,4514 }, { 220,4514 }, { 221,4514 }, { 222,4514 }, { 223,4514 }, { 224,4514 }, { 225,4514 }, { 226,4514 }, { 227,4514 }, { 228,4514 }, { 229,4514 }, { 230,4514 }, { 231,4514 }, { 232,4514 }, { 233,4514 }, { 234,4514 }, { 235,4514 }, { 236,4514 }, { 237,4514 }, { 238,4514 }, { 239,4514 }, { 240,4514 }, { 241,4514 }, { 242,4514 }, { 243,4514 }, { 244,4514 }, { 245,4514 }, { 246,4514 }, { 247,4514 }, { 248,4514 }, { 249,4514 }, { 250,4514 }, { 251,4514 }, { 252,4514 }, { 253,4514 }, { 254,4514 }, { 255,4514 }, { 256,4514 }, { 0, 0 }, { 0,12518 }, { 1,4256 }, { 2,4256 }, { 3,4256 }, { 4,4256 }, { 5,4256 }, { 6,4256 }, { 7,4256 }, { 8,4256 }, { 9,4256 }, { 10,4256 }, { 11,4256 }, { 12,4256 }, { 13,4256 }, { 14,4256 }, { 15,4256 }, { 16,4256 }, { 17,4256 }, { 18,4256 }, { 19,4256 }, { 20,4256 }, { 21,4256 }, { 22,4256 }, { 23,4256 }, { 24,4256 }, { 25,4256 }, { 26,4256 }, { 27,4256 }, { 28,4256 }, { 29,4256 }, { 30,4256 }, { 31,4256 }, { 32,4256 }, { 33,4256 }, { 34,1357 }, { 35,4256 }, { 36,4256 }, { 37,4256 }, { 38,4256 }, { 39,4256 }, { 40,4256 }, { 41,4256 }, { 42,4256 }, { 43,4256 }, { 44,4256 }, { 45,4256 }, { 46,4256 }, { 47,4256 }, { 48,4256 }, { 49,4256 }, { 50,4256 }, { 51,4256 }, { 52,4256 }, { 53,4256 }, { 54,4256 }, { 55,4256 }, { 56,4256 }, { 57,4256 }, { 58,4256 }, { 59,4256 }, { 60,4256 }, { 61,4256 }, { 62,4256 }, { 63,4256 }, { 64,4256 }, { 65,4256 }, { 66,4256 }, { 67,4256 }, { 68,4256 }, { 69,4256 }, { 70,4256 }, { 71,4256 }, { 72,4256 }, { 73,4256 }, { 74,4256 }, { 75,4256 }, { 76,4256 }, { 77,4256 }, { 78,4256 }, { 79,4256 }, { 80,4256 }, { 81,4256 }, { 82,4256 }, { 83,4256 }, { 84,4256 }, { 85,4256 }, { 86,4256 }, { 87,4256 }, { 88,4256 }, { 89,4256 }, { 90,4256 }, { 91,4256 }, { 92,4256 }, { 93,4256 }, { 94,4256 }, { 95,4256 }, { 96,4256 }, { 97,4256 }, { 98,4256 }, { 99,4256 }, { 100,4256 }, { 101,4256 }, { 102,4256 }, { 103,4256 }, { 104,4256 }, { 105,4256 }, { 106,4256 }, { 107,4256 }, { 108,4256 }, { 109,4256 }, { 110,4256 }, { 111,4256 }, { 112,4256 }, { 113,4256 }, { 114,4256 }, { 115,4256 }, { 116,4256 }, { 117,4256 }, { 118,4256 }, { 119,4256 }, { 120,4256 }, { 121,4256 }, { 122,4256 }, { 123,4256 }, { 124,4256 }, { 125,4256 }, { 126,4256 }, { 127,4256 }, { 128,4256 }, { 129,4256 }, { 130,4256 }, { 131,4256 }, { 132,4256 }, { 133,4256 }, { 134,4256 }, { 135,4256 }, { 136,4256 }, { 137,4256 }, { 138,4256 }, { 139,4256 }, { 140,4256 }, { 141,4256 }, { 142,4256 }, { 143,4256 }, { 144,4256 }, { 145,4256 }, { 146,4256 }, { 147,4256 }, { 148,4256 }, { 149,4256 }, { 150,4256 }, { 151,4256 }, { 152,4256 }, { 153,4256 }, { 154,4256 }, { 155,4256 }, { 156,4256 }, { 157,4256 }, { 158,4256 }, { 159,4256 }, { 160,4256 }, { 161,4256 }, { 162,4256 }, { 163,4256 }, { 164,4256 }, { 165,4256 }, { 166,4256 }, { 167,4256 }, { 168,4256 }, { 169,4256 }, { 170,4256 }, { 171,4256 }, { 172,4256 }, { 173,4256 }, { 174,4256 }, { 175,4256 }, { 176,4256 }, { 177,4256 }, { 178,4256 }, { 179,4256 }, { 180,4256 }, { 181,4256 }, { 182,4256 }, { 183,4256 }, { 184,4256 }, { 185,4256 }, { 186,4256 }, { 187,4256 }, { 188,4256 }, { 189,4256 }, { 190,4256 }, { 191,4256 }, { 192,4256 }, { 193,4256 }, { 194,4256 }, { 195,4256 }, { 196,4256 }, { 197,4256 }, { 198,4256 }, { 199,4256 }, { 200,4256 }, { 201,4256 }, { 202,4256 }, { 203,4256 }, { 204,4256 }, { 205,4256 }, { 206,4256 }, { 207,4256 }, { 208,4256 }, { 209,4256 }, { 210,4256 }, { 211,4256 }, { 212,4256 }, { 213,4256 }, { 214,4256 }, { 215,4256 }, { 216,4256 }, { 217,4256 }, { 218,4256 }, { 219,4256 }, { 220,4256 }, { 221,4256 }, { 222,4256 }, { 223,4256 }, { 224,4256 }, { 225,4256 }, { 226,4256 }, { 227,4256 }, { 228,4256 }, { 229,4256 }, { 230,4256 }, { 231,4256 }, { 232,4256 }, { 233,4256 }, { 234,4256 }, { 235,4256 }, { 236,4256 }, { 237,4256 }, { 238,4256 }, { 239,4256 }, { 240,4256 }, { 241,4256 }, { 242,4256 }, { 243,4256 }, { 244,4256 }, { 245,4256 }, { 246,4256 }, { 247,4256 }, { 248,4256 }, { 249,4256 }, { 250,4256 }, { 251,4256 }, { 252,4256 }, { 253,4256 }, { 254,4256 }, { 255,4256 }, { 256,4256 }, { 0, 0 }, { 0,12260 }, { 1,4514 }, { 2,4514 }, { 3,4514 }, { 4,4514 }, { 5,4514 }, { 6,4514 }, { 7,4514 }, { 8,4514 }, { 9,4514 }, { 10,4514 }, { 11,4514 }, { 12,4514 }, { 13,4514 }, { 14,4514 }, { 15,4514 }, { 16,4514 }, { 17,4514 }, { 18,4514 }, { 19,4514 }, { 20,4514 }, { 21,4514 }, { 22,4514 }, { 23,4514 }, { 24,4514 }, { 25,4514 }, { 26,4514 }, { 27,4514 }, { 28,4514 }, { 29,4514 }, { 30,4514 }, { 31,4514 }, { 32,4514 }, { 33,4514 }, { 34,4514 }, { 35,4514 }, { 36,4514 }, { 37,4514 }, { 38,4514 }, { 39,1090 }, { 40,4514 }, { 41,4514 }, { 42,4514 }, { 43,4514 }, { 44,4514 }, { 45,4514 }, { 46,4514 }, { 47,4514 }, { 48,4514 }, { 49,4514 }, { 50,4514 }, { 51,4514 }, { 52,4514 }, { 53,4514 }, { 54,4514 }, { 55,4514 }, { 56,4514 }, { 57,4514 }, { 58,4514 }, { 59,4514 }, { 60,4514 }, { 61,4514 }, { 62,4514 }, { 63,4514 }, { 64,4514 }, { 65,4514 }, { 66,4514 }, { 67,4514 }, { 68,4514 }, { 69,4514 }, { 70,4514 }, { 71,4514 }, { 72,4514 }, { 73,4514 }, { 74,4514 }, { 75,4514 }, { 76,4514 }, { 77,4514 }, { 78,4514 }, { 79,4514 }, { 80,4514 }, { 81,4514 }, { 82,4514 }, { 83,4514 }, { 84,4514 }, { 85,4514 }, { 86,4514 }, { 87,4514 }, { 88,4514 }, { 89,4514 }, { 90,4514 }, { 91,4514 }, { 92,4514 }, { 93,4514 }, { 94,4514 }, { 95,4514 }, { 96,4514 }, { 97,4514 }, { 98,4514 }, { 99,4514 }, { 100,4514 }, { 101,4514 }, { 102,4514 }, { 103,4514 }, { 104,4514 }, { 105,4514 }, { 106,4514 }, { 107,4514 }, { 108,4514 }, { 109,4514 }, { 110,4514 }, { 111,4514 }, { 112,4514 }, { 113,4514 }, { 114,4514 }, { 115,4514 }, { 116,4514 }, { 117,4514 }, { 118,4514 }, { 119,4514 }, { 120,4514 }, { 121,4514 }, { 122,4514 }, { 123,4514 }, { 124,4514 }, { 125,4514 }, { 126,4514 }, { 127,4514 }, { 128,4514 }, { 129,4514 }, { 130,4514 }, { 131,4514 }, { 132,4514 }, { 133,4514 }, { 134,4514 }, { 135,4514 }, { 136,4514 }, { 137,4514 }, { 138,4514 }, { 139,4514 }, { 140,4514 }, { 141,4514 }, { 142,4514 }, { 143,4514 }, { 144,4514 }, { 145,4514 }, { 146,4514 }, { 147,4514 }, { 148,4514 }, { 149,4514 }, { 150,4514 }, { 151,4514 }, { 152,4514 }, { 153,4514 }, { 154,4514 }, { 155,4514 }, { 156,4514 }, { 157,4514 }, { 158,4514 }, { 159,4514 }, { 160,4514 }, { 161,4514 }, { 162,4514 }, { 163,4514 }, { 164,4514 }, { 165,4514 }, { 166,4514 }, { 167,4514 }, { 168,4514 }, { 169,4514 }, { 170,4514 }, { 171,4514 }, { 172,4514 }, { 173,4514 }, { 174,4514 }, { 175,4514 }, { 176,4514 }, { 177,4514 }, { 178,4514 }, { 179,4514 }, { 180,4514 }, { 181,4514 }, { 182,4514 }, { 183,4514 }, { 184,4514 }, { 185,4514 }, { 186,4514 }, { 187,4514 }, { 188,4514 }, { 189,4514 }, { 190,4514 }, { 191,4514 }, { 192,4514 }, { 193,4514 }, { 194,4514 }, { 195,4514 }, { 196,4514 }, { 197,4514 }, { 198,4514 }, { 199,4514 }, { 200,4514 }, { 201,4514 }, { 202,4514 }, { 203,4514 }, { 204,4514 }, { 205,4514 }, { 206,4514 }, { 207,4514 }, { 208,4514 }, { 209,4514 }, { 210,4514 }, { 211,4514 }, { 212,4514 }, { 213,4514 }, { 214,4514 }, { 215,4514 }, { 216,4514 }, { 217,4514 }, { 218,4514 }, { 219,4514 }, { 220,4514 }, { 221,4514 }, { 222,4514 }, { 223,4514 }, { 224,4514 }, { 225,4514 }, { 226,4514 }, { 227,4514 }, { 228,4514 }, { 229,4514 }, { 230,4514 }, { 231,4514 }, { 232,4514 }, { 233,4514 }, { 234,4514 }, { 235,4514 }, { 236,4514 }, { 237,4514 }, { 238,4514 }, { 239,4514 }, { 240,4514 }, { 241,4514 }, { 242,4514 }, { 243,4514 }, { 244,4514 }, { 245,4514 }, { 246,4514 }, { 247,4514 }, { 248,4514 }, { 249,4514 }, { 250,4514 }, { 251,4514 }, { 252,4514 }, { 253,4514 }, { 254,4514 }, { 255,4514 }, { 256,4514 }, { 0, 0 }, { 0,12002 }, { 1,4256 }, { 2,4256 }, { 3,4256 }, { 4,4256 }, { 5,4256 }, { 6,4256 }, { 7,4256 }, { 8,4256 }, { 9,4256 }, { 10,4256 }, { 11,4256 }, { 12,4256 }, { 13,4256 }, { 14,4256 }, { 15,4256 }, { 16,4256 }, { 17,4256 }, { 18,4256 }, { 19,4256 }, { 20,4256 }, { 21,4256 }, { 22,4256 }, { 23,4256 }, { 24,4256 }, { 25,4256 }, { 26,4256 }, { 27,4256 }, { 28,4256 }, { 29,4256 }, { 30,4256 }, { 31,4256 }, { 32,4256 }, { 33,4256 }, { 34,4256 }, { 35,4256 }, { 36,4256 }, { 37,4256 }, { 38,4256 }, { 39, 832 }, { 40,4256 }, { 41,4256 }, { 42,4256 }, { 43,4256 }, { 44,4256 }, { 45,4256 }, { 46,4256 }, { 47,4256 }, { 48,4256 }, { 49,4256 }, { 50,4256 }, { 51,4256 }, { 52,4256 }, { 53,4256 }, { 54,4256 }, { 55,4256 }, { 56,4256 }, { 57,4256 }, { 58,4256 }, { 59,4256 }, { 60,4256 }, { 61,4256 }, { 62,4256 }, { 63,4256 }, { 64,4256 }, { 65,4256 }, { 66,4256 }, { 67,4256 }, { 68,4256 }, { 69,4256 }, { 70,4256 }, { 71,4256 }, { 72,4256 }, { 73,4256 }, { 74,4256 }, { 75,4256 }, { 76,4256 }, { 77,4256 }, { 78,4256 }, { 79,4256 }, { 80,4256 }, { 81,4256 }, { 82,4256 }, { 83,4256 }, { 84,4256 }, { 85,4256 }, { 86,4256 }, { 87,4256 }, { 88,4256 }, { 89,4256 }, { 90,4256 }, { 91,4256 }, { 92,4256 }, { 93,4256 }, { 94,4256 }, { 95,4256 }, { 96,4256 }, { 97,4256 }, { 98,4256 }, { 99,4256 }, { 100,4256 }, { 101,4256 }, { 102,4256 }, { 103,4256 }, { 104,4256 }, { 105,4256 }, { 106,4256 }, { 107,4256 }, { 108,4256 }, { 109,4256 }, { 110,4256 }, { 111,4256 }, { 112,4256 }, { 113,4256 }, { 114,4256 }, { 115,4256 }, { 116,4256 }, { 117,4256 }, { 118,4256 }, { 119,4256 }, { 120,4256 }, { 121,4256 }, { 122,4256 }, { 123,4256 }, { 124,4256 }, { 125,4256 }, { 126,4256 }, { 127,4256 }, { 128,4256 }, { 129,4256 }, { 130,4256 }, { 131,4256 }, { 132,4256 }, { 133,4256 }, { 134,4256 }, { 135,4256 }, { 136,4256 }, { 137,4256 }, { 138,4256 }, { 139,4256 }, { 140,4256 }, { 141,4256 }, { 142,4256 }, { 143,4256 }, { 144,4256 }, { 145,4256 }, { 146,4256 }, { 147,4256 }, { 148,4256 }, { 149,4256 }, { 150,4256 }, { 151,4256 }, { 152,4256 }, { 153,4256 }, { 154,4256 }, { 155,4256 }, { 156,4256 }, { 157,4256 }, { 158,4256 }, { 159,4256 }, { 160,4256 }, { 161,4256 }, { 162,4256 }, { 163,4256 }, { 164,4256 }, { 165,4256 }, { 166,4256 }, { 167,4256 }, { 168,4256 }, { 169,4256 }, { 170,4256 }, { 171,4256 }, { 172,4256 }, { 173,4256 }, { 174,4256 }, { 175,4256 }, { 176,4256 }, { 177,4256 }, { 178,4256 }, { 179,4256 }, { 180,4256 }, { 181,4256 }, { 182,4256 }, { 183,4256 }, { 184,4256 }, { 185,4256 }, { 186,4256 }, { 187,4256 }, { 188,4256 }, { 189,4256 }, { 190,4256 }, { 191,4256 }, { 192,4256 }, { 193,4256 }, { 194,4256 }, { 195,4256 }, { 196,4256 }, { 197,4256 }, { 198,4256 }, { 199,4256 }, { 200,4256 }, { 201,4256 }, { 202,4256 }, { 203,4256 }, { 204,4256 }, { 205,4256 }, { 206,4256 }, { 207,4256 }, { 208,4256 }, { 209,4256 }, { 210,4256 }, { 211,4256 }, { 212,4256 }, { 213,4256 }, { 214,4256 }, { 215,4256 }, { 216,4256 }, { 217,4256 }, { 218,4256 }, { 219,4256 }, { 220,4256 }, { 221,4256 }, { 222,4256 }, { 223,4256 }, { 224,4256 }, { 225,4256 }, { 226,4256 }, { 227,4256 }, { 228,4256 }, { 229,4256 }, { 230,4256 }, { 231,4256 }, { 232,4256 }, { 233,4256 }, { 234,4256 }, { 235,4256 }, { 236,4256 }, { 237,4256 }, { 238,4256 }, { 239,4256 }, { 240,4256 }, { 241,4256 }, { 242,4256 }, { 243,4256 }, { 244,4256 }, { 245,4256 }, { 246,4256 }, { 247,4256 }, { 248,4256 }, { 249,4256 }, { 250,4256 }, { 251,4256 }, { 252,4256 }, { 253,4256 }, { 254,4256 }, { 255,4256 }, { 256,4256 }, { 0, 0 }, { 0,11744 }, { 1, 593 }, { 2, 593 }, { 3, 593 }, { 4, 593 }, { 5, 593 }, { 6, 593 }, { 7, 593 }, { 8, 593 }, { 9, 593 }, { 10, 597 }, { 11, 593 }, { 12, 593 }, { 13, 593 }, { 14, 593 }, { 15, 593 }, { 16, 593 }, { 17, 593 }, { 18, 593 }, { 19, 593 }, { 20, 593 }, { 21, 593 }, { 22, 593 }, { 23, 593 }, { 24, 593 }, { 25, 593 }, { 26, 593 }, { 27, 593 }, { 28, 593 }, { 29, 593 }, { 30, 593 }, { 31, 593 }, { 32, 593 }, { 33, 593 }, { 34, 593 }, { 35, 593 }, { 36, 593 }, { 37, 593 }, { 38, 593 }, { 39, 593 }, { 40, 593 }, { 41, 593 }, { 42, 593 }, { 43, 593 }, { 44, 593 }, { 45, 593 }, { 46, 593 }, { 47, 593 }, { 48, 593 }, { 49, 593 }, { 50, 593 }, { 51, 593 }, { 52, 593 }, { 53, 593 }, { 54, 593 }, { 55, 593 }, { 56, 593 }, { 57, 593 }, { 58, 593 }, { 59, 593 }, { 60, 593 }, { 61, 593 }, { 62, 593 }, { 63, 593 }, { 64, 593 }, { 65, 593 }, { 66, 593 }, { 67, 593 }, { 68, 593 }, { 69, 593 }, { 70, 593 }, { 71, 593 }, { 72, 593 }, { 73, 593 }, { 74, 593 }, { 75, 593 }, { 76, 593 }, { 77, 593 }, { 78, 593 }, { 79, 593 }, { 80, 593 }, { 81, 593 }, { 82, 593 }, { 83, 593 }, { 84, 593 }, { 85, 593 }, { 86, 593 }, { 87, 593 }, { 88, 593 }, { 89, 593 }, { 90, 593 }, { 91, 593 }, { 92, 637 }, { 93, 593 }, { 94, 593 }, { 95, 593 }, { 96, 593 }, { 97, 593 }, { 98, 593 }, { 99, 593 }, { 100, 593 }, { 101, 593 }, { 102, 593 }, { 103, 593 }, { 104, 593 }, { 105, 593 }, { 106, 593 }, { 107, 593 }, { 108, 593 }, { 109, 593 }, { 110, 593 }, { 111, 593 }, { 112, 593 }, { 113, 593 }, { 114, 593 }, { 115, 593 }, { 116, 593 }, { 117, 593 }, { 118, 593 }, { 119, 593 }, { 120, 593 }, { 121, 593 }, { 122, 593 }, { 123, 593 }, { 124, 593 }, { 125, 593 }, { 126, 593 }, { 127, 593 }, { 128, 593 }, { 129, 593 }, { 130, 593 }, { 131, 593 }, { 132, 593 }, { 133, 593 }, { 134, 593 }, { 135, 593 }, { 136, 593 }, { 137, 593 }, { 138, 593 }, { 139, 593 }, { 140, 593 }, { 141, 593 }, { 142, 593 }, { 143, 593 }, { 144, 593 }, { 145, 593 }, { 146, 593 }, { 147, 593 }, { 148, 593 }, { 149, 593 }, { 150, 593 }, { 151, 593 }, { 152, 593 }, { 153, 593 }, { 154, 593 }, { 155, 593 }, { 156, 593 }, { 157, 593 }, { 158, 593 }, { 159, 593 }, { 160, 593 }, { 161, 593 }, { 162, 593 }, { 163, 593 }, { 164, 593 }, { 165, 593 }, { 166, 593 }, { 167, 593 }, { 168, 593 }, { 169, 593 }, { 170, 593 }, { 171, 593 }, { 172, 593 }, { 173, 593 }, { 174, 593 }, { 175, 593 }, { 176, 593 }, { 177, 593 }, { 178, 593 }, { 179, 593 }, { 180, 593 }, { 181, 593 }, { 182, 593 }, { 183, 593 }, { 184, 593 }, { 185, 593 }, { 186, 593 }, { 187, 593 }, { 188, 593 }, { 189, 593 }, { 190, 593 }, { 191, 593 }, { 192, 593 }, { 193, 593 }, { 194, 593 }, { 195, 593 }, { 196, 593 }, { 197, 593 }, { 198, 593 }, { 199, 593 }, { 200, 593 }, { 201, 593 }, { 202, 593 }, { 203, 593 }, { 204, 593 }, { 205, 593 }, { 206, 593 }, { 207, 593 }, { 208, 593 }, { 209, 593 }, { 210, 593 }, { 211, 593 }, { 212, 593 }, { 213, 593 }, { 214, 593 }, { 215, 593 }, { 216, 593 }, { 217, 593 }, { 218, 593 }, { 219, 593 }, { 220, 593 }, { 221, 593 }, { 222, 593 }, { 223, 593 }, { 224, 593 }, { 225, 593 }, { 226, 593 }, { 227, 593 }, { 228, 593 }, { 229, 593 }, { 230, 593 }, { 231, 593 }, { 232, 593 }, { 233, 593 }, { 234, 593 }, { 235, 593 }, { 236, 593 }, { 237, 593 }, { 238, 593 }, { 239, 593 }, { 240, 593 }, { 241, 593 }, { 242, 593 }, { 243, 593 }, { 244, 593 }, { 245, 593 }, { 246, 593 }, { 247, 593 }, { 248, 593 }, { 249, 593 }, { 250, 593 }, { 251, 593 }, { 252, 593 }, { 253, 593 }, { 254, 593 }, { 255, 593 }, { 256, 593 }, { 0, 0 }, { 0,11486 }, { 1, 335 }, { 2, 335 }, { 3, 335 }, { 4, 335 }, { 5, 335 }, { 6, 335 }, { 7, 335 }, { 8, 335 }, { 9, 335 }, { 10, 339 }, { 11, 335 }, { 12, 335 }, { 13, 335 }, { 14, 335 }, { 15, 335 }, { 16, 335 }, { 17, 335 }, { 18, 335 }, { 19, 335 }, { 20, 335 }, { 21, 335 }, { 22, 335 }, { 23, 335 }, { 24, 335 }, { 25, 335 }, { 26, 335 }, { 27, 335 }, { 28, 335 }, { 29, 335 }, { 30, 335 }, { 31, 335 }, { 32, 335 }, { 33, 335 }, { 34, 335 }, { 35, 335 }, { 36, 335 }, { 37, 335 }, { 38, 335 }, { 39, 335 }, { 40, 335 }, { 41, 335 }, { 42, 335 }, { 43, 335 }, { 44, 335 }, { 45, 335 }, { 46, 335 }, { 47, 335 }, { 48, 335 }, { 49, 335 }, { 50, 335 }, { 51, 335 }, { 52, 335 }, { 53, 335 }, { 54, 335 }, { 55, 335 }, { 56, 335 }, { 57, 335 }, { 58, 335 }, { 59, 335 }, { 60, 335 }, { 61, 335 }, { 62, 335 }, { 63, 335 }, { 64, 335 }, { 65, 335 }, { 66, 335 }, { 67, 335 }, { 68, 335 }, { 69, 335 }, { 70, 335 }, { 71, 335 }, { 72, 335 }, { 73, 335 }, { 74, 335 }, { 75, 335 }, { 76, 335 }, { 77, 335 }, { 78, 335 }, { 79, 335 }, { 80, 335 }, { 81, 335 }, { 82, 335 }, { 83, 335 }, { 84, 335 }, { 85, 335 }, { 86, 335 }, { 87, 335 }, { 88, 335 }, { 89, 335 }, { 90, 335 }, { 91, 335 }, { 92, 379 }, { 93, 335 }, { 94, 335 }, { 95, 335 }, { 96, 335 }, { 97, 335 }, { 98, 335 }, { 99, 335 }, { 100, 335 }, { 101, 335 }, { 102, 335 }, { 103, 335 }, { 104, 335 }, { 105, 335 }, { 106, 335 }, { 107, 335 }, { 108, 335 }, { 109, 335 }, { 110, 335 }, { 111, 335 }, { 112, 335 }, { 113, 335 }, { 114, 335 }, { 115, 335 }, { 116, 335 }, { 117, 335 }, { 118, 335 }, { 119, 335 }, { 120, 335 }, { 121, 335 }, { 122, 335 }, { 123, 335 }, { 124, 335 }, { 125, 335 }, { 126, 335 }, { 127, 335 }, { 128, 335 }, { 129, 335 }, { 130, 335 }, { 131, 335 }, { 132, 335 }, { 133, 335 }, { 134, 335 }, { 135, 335 }, { 136, 335 }, { 137, 335 }, { 138, 335 }, { 139, 335 }, { 140, 335 }, { 141, 335 }, { 142, 335 }, { 143, 335 }, { 144, 335 }, { 145, 335 }, { 146, 335 }, { 147, 335 }, { 148, 335 }, { 149, 335 }, { 150, 335 }, { 151, 335 }, { 152, 335 }, { 153, 335 }, { 154, 335 }, { 155, 335 }, { 156, 335 }, { 157, 335 }, { 158, 335 }, { 159, 335 }, { 160, 335 }, { 161, 335 }, { 162, 335 }, { 163, 335 }, { 164, 335 }, { 165, 335 }, { 166, 335 }, { 167, 335 }, { 168, 335 }, { 169, 335 }, { 170, 335 }, { 171, 335 }, { 172, 335 }, { 173, 335 }, { 174, 335 }, { 175, 335 }, { 176, 335 }, { 177, 335 }, { 178, 335 }, { 179, 335 }, { 180, 335 }, { 181, 335 }, { 182, 335 }, { 183, 335 }, { 184, 335 }, { 185, 335 }, { 186, 335 }, { 187, 335 }, { 188, 335 }, { 189, 335 }, { 190, 335 }, { 191, 335 }, { 192, 335 }, { 193, 335 }, { 194, 335 }, { 195, 335 }, { 196, 335 }, { 197, 335 }, { 198, 335 }, { 199, 335 }, { 200, 335 }, { 201, 335 }, { 202, 335 }, { 203, 335 }, { 204, 335 }, { 205, 335 }, { 206, 335 }, { 207, 335 }, { 208, 335 }, { 209, 335 }, { 210, 335 }, { 211, 335 }, { 212, 335 }, { 213, 335 }, { 214, 335 }, { 215, 335 }, { 216, 335 }, { 217, 335 }, { 218, 335 }, { 219, 335 }, { 220, 335 }, { 221, 335 }, { 222, 335 }, { 223, 335 }, { 224, 335 }, { 225, 335 }, { 226, 335 }, { 227, 335 }, { 228, 335 }, { 229, 335 }, { 230, 335 }, { 231, 335 }, { 232, 335 }, { 233, 335 }, { 234, 335 }, { 235, 335 }, { 236, 335 }, { 237, 335 }, { 238, 335 }, { 239, 335 }, { 240, 335 }, { 241, 335 }, { 242, 335 }, { 243, 335 }, { 244, 335 }, { 245, 335 }, { 246, 335 }, { 247, 335 }, { 248, 335 }, { 249, 335 }, { 250, 335 }, { 251, 335 }, { 252, 335 }, { 253, 335 }, { 254, 335 }, { 255, 335 }, { 256, 335 }, { 0, 65 }, { 0,11228 }, { 0, 1 }, { 0,11226 }, { 0, 39 }, { 0,11224 }, { 0, 0 }, { 0, 1 }, { 0,11221 }, { 0, 56 }, { 0,11219 }, { 0, 0 }, { 9,5098 }, { 10,5098 }, { 0, 0 }, { 12,5098 }, { 13,5098 }, { 9,5093 }, { 10,5093 }, { 0, 0 }, { 12,5093 }, { 13,5093 }, { 0, 14 }, { 0,11206 }, { 0, 55 }, { 0,11204 }, { 0, 0 }, { 0, 55 }, { 0,11201 }, { 0, 17 }, { 0,11199 }, { 0, 0 }, { 0, 7 }, { 0,11196 }, { 0, 0 }, { 32,5098 }, { 0, 7 }, { 0,11192 }, { 0, 0 }, { 0, 0 }, { 32,5093 }, { 0, 41 }, { 0,11187 }, { 33,5346 }, { 0, 0 }, { 35,5346 }, { 0, 0 }, { 37,5346 }, { 38,5346 }, { 0, 56 }, { 0,11179 }, { 0, 0 }, { 42,5346 }, { 43,5346 }, { 0, 0 }, { 45,5346 }, { 0, 0 }, { 47,5346 }, { 0, 17 }, { 0,11170 }, { 0, 20 }, { 0,11168 }, { 0, 19 }, { 0,11166 }, { 0, 0 }, { 0, 17 }, { 0,11163 }, { 0, 42 }, { 0,11161 }, { 0, 0 }, { 60,5346 }, { 61,5357 }, { 62,5346 }, { 63,5346 }, { 64,5346 }, { 42, 348 }, { 34, 346 }, { 0, 26 }, { 0,11151 }, { 42,7050 }, { 47, 353 }, { 0, 27 }, { 0,11147 }, { 33,5306 }, { 0, 0 }, { 35,5306 }, { 58, 100 }, { 37,5306 }, { 38,5306 }, { 61, 102 }, { 0, 0 }, { 0, 0 }, { 42,5306 }, { 43,5306 }, { 0, 0 }, { 45,5306 }, { 0, 0 }, { 47,5306 }, { 39, 331 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 34, 320 }, { 0, 0 }, { 94,5346 }, { 39, 324 }, { 96,5346 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,5306 }, { 61,5306 }, { 62,5306 }, { 63,5306 }, { 64,5306 }, { 0, 65 }, { 0,11113 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 26 }, { 0,11107 }, { 0, 33 }, { 0,11105 }, { 0, 48 }, { 0,11103 }, { 0, 47 }, { 0,11101 }, { 0, 49 }, { 0,11099 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,5346 }, { 0, 0 }, { 126,5346 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,5306 }, { 0, 0 }, { 96,5306 }, { 0, 0 }, { 0, 64 }, { 0,11080 }, { 0, 9 }, { 0,11078 }, { 36, 8 }, { 0, 15 }, { 0,11075 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5268 }, { 49,5268 }, { 50,5268 }, { 51,5268 }, { 52,5268 }, { 53,5268 }, { 54,5268 }, { 55,5268 }, { 56,5268 }, { 57,5268 }, { 124,5306 }, { 0, 0 }, { 126,5306 }, { 0, 46 }, { 0,11051 }, { 0, 13 }, { 0,11049 }, { 65,5331 }, { 66,5331 }, { 67,5331 }, { 68,5331 }, { 69,5331 }, { 70,5331 }, { 71,5331 }, { 72,5331 }, { 73,5331 }, { 74,5331 }, { 75,5331 }, { 76,5331 }, { 77,5331 }, { 78,5331 }, { 79,5331 }, { 80,5331 }, { 81,5331 }, { 82,5331 }, { 83,5331 }, { 84,5331 }, { 85,5331 }, { 86,5331 }, { 87,5331 }, { 88,5331 }, { 89,5331 }, { 90,5331 }, { 85,8881 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5331 }, { 63, 0 }, { 97,5331 }, { 98,5331 }, { 99,5331 }, { 100,5331 }, { 101,5331 }, { 102,5331 }, { 103,5331 }, { 104,5331 }, { 105,5331 }, { 106,5331 }, { 107,5331 }, { 108,5331 }, { 109,5331 }, { 110,5331 }, { 111,5331 }, { 112,5331 }, { 113,5331 }, { 114,5331 }, { 115,5331 }, { 116,5331 }, { 117,5331 }, { 118,5331 }, { 119,5331 }, { 120,5331 }, { 121,5331 }, { 122,5331 }, { 117,8904 }, { 0, 0 }, { 63, -29 }, { 0, 0 }, { 0, 0 }, { 128,5331 }, { 129,5331 }, { 130,5331 }, { 131,5331 }, { 132,5331 }, { 133,5331 }, { 134,5331 }, { 135,5331 }, { 136,5331 }, { 137,5331 }, { 138,5331 }, { 139,5331 }, { 140,5331 }, { 141,5331 }, { 142,5331 }, { 143,5331 }, { 144,5331 }, { 145,5331 }, { 146,5331 }, { 147,5331 }, { 148,5331 }, { 149,5331 }, { 150,5331 }, { 151,5331 }, { 152,5331 }, { 153,5331 }, { 154,5331 }, { 155,5331 }, { 156,5331 }, { 157,5331 }, { 158,5331 }, { 159,5331 }, { 160,5331 }, { 161,5331 }, { 162,5331 }, { 163,5331 }, { 164,5331 }, { 165,5331 }, { 166,5331 }, { 167,5331 }, { 168,5331 }, { 169,5331 }, { 170,5331 }, { 171,5331 }, { 172,5331 }, { 173,5331 }, { 174,5331 }, { 175,5331 }, { 176,5331 }, { 177,5331 }, { 178,5331 }, { 179,5331 }, { 180,5331 }, { 181,5331 }, { 182,5331 }, { 183,5331 }, { 184,5331 }, { 185,5331 }, { 186,5331 }, { 187,5331 }, { 188,5331 }, { 189,5331 }, { 190,5331 }, { 191,5331 }, { 192,5331 }, { 193,5331 }, { 194,5331 }, { 195,5331 }, { 196,5331 }, { 197,5331 }, { 198,5331 }, { 199,5331 }, { 200,5331 }, { 201,5331 }, { 202,5331 }, { 203,5331 }, { 204,5331 }, { 205,5331 }, { 206,5331 }, { 207,5331 }, { 208,5331 }, { 209,5331 }, { 210,5331 }, { 211,5331 }, { 212,5331 }, { 213,5331 }, { 214,5331 }, { 215,5331 }, { 216,5331 }, { 217,5331 }, { 218,5331 }, { 219,5331 }, { 220,5331 }, { 221,5331 }, { 222,5331 }, { 223,5331 }, { 224,5331 }, { 225,5331 }, { 226,5331 }, { 227,5331 }, { 228,5331 }, { 229,5331 }, { 230,5331 }, { 231,5331 }, { 232,5331 }, { 233,5331 }, { 234,5331 }, { 235,5331 }, { 236,5331 }, { 237,5331 }, { 238,5331 }, { 239,5331 }, { 240,5331 }, { 241,5331 }, { 242,5331 }, { 243,5331 }, { 244,5331 }, { 245,5331 }, { 246,5331 }, { 247,5331 }, { 248,5331 }, { 249,5331 }, { 250,5331 }, { 251,5331 }, { 252,5331 }, { 253,5331 }, { 254,5331 }, { 255,5331 }, { 0, 55 }, { 0,10856 }, { 0, 45 }, { 0,10854 }, { 0, 12 }, { 0,10852 }, { 0, 0 }, { 0, 0 }, { 0, 8 }, { 0,10848 }, { 0, 0 }, { 0, 55 }, { 0,10845 }, { 0, 5 }, { 0,10843 }, { 0, 43 }, { 0,10841 }, { 0, 21 }, { 0,10839 }, { 0, 19 }, { 0,10837 }, { 0, 18 }, { 0,10835 }, { 0, 29 }, { 0,10833 }, { 0, 35 }, { 0,10831 }, { 0, 60 }, { 0,10829 }, { 0, 0 }, { 0, 55 }, { 0,10826 }, { 0, 40 }, { 0,10824 }, { 33,4983 }, { 0, 0 }, { 35,4983 }, { 34, 30 }, { 37,4983 }, { 38,4983 }, { 0, 16 }, { 0,10816 }, { 39, 38 }, { 42,4983 }, { 43,4983 }, { 33,4972 }, { 45,4983 }, { 35,4972 }, { 47,4983 }, { 37,4972 }, { 38,4972 }, { 42, 0 }, { 0, 30 }, { 0,10804 }, { 42,4972 }, { 43,4972 }, { 47, 5 }, { 45,5320 }, { 0, 0 }, { 47,4972 }, { 0, 0 }, { 60,4983 }, { 61,4983 }, { 62,4983 }, { 63,4983 }, { 64,4983 }, { 0, 31 }, { 0,10790 }, { 0, 24 }, { 0,10788 }, { 0, 25 }, { 0,10786 }, { 60,4972 }, { 61,4972 }, { 62,4972 }, { 63,4972 }, { 64,4972 }, { 46,-277 }, { 0, 0 }, { 48,5559 }, { 49,5559 }, { 50,5559 }, { 51,5559 }, { 52,5559 }, { 53,5559 }, { 54,5559 }, { 55,5559 }, { 56,5559 }, { 57,5559 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4983 }, { 0, 0 }, { 96,4983 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 55 }, { 0,10755 }, { 0, 58 }, { 0,10753 }, { 0, 0 }, { 94,4972 }, { 0, 0 }, { 96,4972 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,4983 }, { 0, 0 }, { 126,4983 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,4882 }, { 124,4972 }, { 35,4882 }, { 126,4972 }, { 37,4882 }, { 38,4882 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,5513 }, { 43,4882 }, { 0, 0 }, { 45,4882 }, { 0, 0 }, { 47,4882 }, { 46,5513 }, { 0, 0 }, { 48,5577 }, { 49,5577 }, { 50,5577 }, { 51,5577 }, { 52,5577 }, { 53,5577 }, { 54,5577 }, { 55,5577 }, { 56,5577 }, { 57,5577 }, { 60,4882 }, { 61,4882 }, { 62,4882 }, { 63,4882 }, { 64,4882 }, { 0, 0 }, { 0, 55 }, { 0,10688 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 69,5599 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 55 }, { 0,10677 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4882 }, { 0, 0 }, { 96,4882 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,4815 }, { 0, 0 }, { 35,4815 }, { 101,5599 }, { 37,4815 }, { 38,4815 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,4815 }, { 43,4815 }, { 33,4804 }, { 45,4815 }, { 35,4804 }, { 47,4815 }, { 37,4804 }, { 38,4804 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,4804 }, { 43,4804 }, { 0, 0 }, { 45,4804 }, { 124,4882 }, { 47,4804 }, { 126,4882 }, { 60,4815 }, { 61,5574 }, { 62,5615 }, { 63,4815 }, { 64,4815 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,4804 }, { 61,4804 }, { 62,5671 }, { 63,4804 }, { 64,4804 }, { 0, 0 }, { 0, 55 }, { 0,10610 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4815 }, { 0, 0 }, { 96,4815 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4804 }, { 0, 0 }, { 96,4804 }, { 0, 0 }, { 0, 64 }, { 0,10578 }, { 33,4737 }, { 0, 0 }, { 35,4737 }, { 0, 0 }, { 37,4737 }, { 38,4737 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,4737 }, { 43,4737 }, { 0, 0 }, { 45,4737 }, { 124,4815 }, { 47,4737 }, { 126,4815 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,4804 }, { 0, 0 }, { 126,4804 }, { 60,4737 }, { 61,5615 }, { 62,4737 }, { 63,4737 }, { 64,4737 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,5663 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5663 }, { 49,5663 }, { 50,5663 }, { 51,5663 }, { 52,5663 }, { 53,5663 }, { 54,5663 }, { 55,5663 }, { 56,5663 }, { 57,5663 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,4737 }, { 63,-502 }, { 96,4737 }, { 65,5663 }, { 66,5663 }, { 67,5663 }, { 68,5663 }, { 69,5663 }, { 70,5663 }, { 71,5663 }, { 72,5663 }, { 73,5663 }, { 74,5663 }, { 75,5663 }, { 76,5663 }, { 77,5663 }, { 78,5663 }, { 79,5663 }, { 80,5663 }, { 81,5663 }, { 82,5663 }, { 83,5663 }, { 84,5663 }, { 85,5663 }, { 86,5663 }, { 87,5663 }, { 88,5663 }, { 89,5663 }, { 90,5663 }, { 0, 0 }, { 124,4737 }, { 0, 0 }, { 126,4737 }, { 95,5663 }, { 0, 0 }, { 97,5663 }, { 98,5663 }, { 99,5663 }, { 100,5663 }, { 101,5663 }, { 102,5663 }, { 103,5663 }, { 104,5663 }, { 105,5663 }, { 106,5663 }, { 107,5663 }, { 108,5663 }, { 109,5663 }, { 110,5663 }, { 111,5663 }, { 112,5663 }, { 113,5663 }, { 114,5663 }, { 115,5663 }, { 116,5663 }, { 117,5663 }, { 118,5663 }, { 119,5663 }, { 120,5663 }, { 121,5663 }, { 122,5663 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5663 }, { 129,5663 }, { 130,5663 }, { 131,5663 }, { 132,5663 }, { 133,5663 }, { 134,5663 }, { 135,5663 }, { 136,5663 }, { 137,5663 }, { 138,5663 }, { 139,5663 }, { 140,5663 }, { 141,5663 }, { 142,5663 }, { 143,5663 }, { 144,5663 }, { 145,5663 }, { 146,5663 }, { 147,5663 }, { 148,5663 }, { 149,5663 }, { 150,5663 }, { 151,5663 }, { 152,5663 }, { 153,5663 }, { 154,5663 }, { 155,5663 }, { 156,5663 }, { 157,5663 }, { 158,5663 }, { 159,5663 }, { 160,5663 }, { 161,5663 }, { 162,5663 }, { 163,5663 }, { 164,5663 }, { 165,5663 }, { 166,5663 }, { 167,5663 }, { 168,5663 }, { 169,5663 }, { 170,5663 }, { 171,5663 }, { 172,5663 }, { 173,5663 }, { 174,5663 }, { 175,5663 }, { 176,5663 }, { 177,5663 }, { 178,5663 }, { 179,5663 }, { 180,5663 }, { 181,5663 }, { 182,5663 }, { 183,5663 }, { 184,5663 }, { 185,5663 }, { 186,5663 }, { 187,5663 }, { 188,5663 }, { 189,5663 }, { 190,5663 }, { 191,5663 }, { 192,5663 }, { 193,5663 }, { 194,5663 }, { 195,5663 }, { 196,5663 }, { 197,5663 }, { 198,5663 }, { 199,5663 }, { 200,5663 }, { 201,5663 }, { 202,5663 }, { 203,5663 }, { 204,5663 }, { 205,5663 }, { 206,5663 }, { 207,5663 }, { 208,5663 }, { 209,5663 }, { 210,5663 }, { 211,5663 }, { 212,5663 }, { 213,5663 }, { 214,5663 }, { 215,5663 }, { 216,5663 }, { 217,5663 }, { 218,5663 }, { 219,5663 }, { 220,5663 }, { 221,5663 }, { 222,5663 }, { 223,5663 }, { 224,5663 }, { 225,5663 }, { 226,5663 }, { 227,5663 }, { 228,5663 }, { 229,5663 }, { 230,5663 }, { 231,5663 }, { 232,5663 }, { 233,5663 }, { 234,5663 }, { 235,5663 }, { 236,5663 }, { 237,5663 }, { 238,5663 }, { 239,5663 }, { 240,5663 }, { 241,5663 }, { 242,5663 }, { 243,5663 }, { 244,5663 }, { 245,5663 }, { 246,5663 }, { 247,5663 }, { 248,5663 }, { 249,5663 }, { 250,5663 }, { 251,5663 }, { 252,5663 }, { 253,5663 }, { 254,5663 }, { 255,5663 }, { 0, 64 }, { 0,10321 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,5406 }, { 0, 0 }, { 0, 0 }, { 39,-757 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5406 }, { 49,5406 }, { 50,5406 }, { 51,5406 }, { 52,5406 }, { 53,5406 }, { 54,5406 }, { 55,5406 }, { 56,5406 }, { 57,5406 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-759 }, { 0, 0 }, { 65,5406 }, { 66,5406 }, { 67,5406 }, { 68,5406 }, { 69,5406 }, { 70,5406 }, { 71,5406 }, { 72,5406 }, { 73,5406 }, { 74,5406 }, { 75,5406 }, { 76,5406 }, { 77,5406 }, { 78,5406 }, { 79,5406 }, { 80,5406 }, { 81,5406 }, { 82,5406 }, { 83,5406 }, { 84,5406 }, { 85,5406 }, { 86,5406 }, { 87,5406 }, { 88,5406 }, { 89,5406 }, { 90,5406 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5406 }, { 0, 0 }, { 97,5406 }, { 98,5406 }, { 99,5406 }, { 100,5406 }, { 101,5406 }, { 102,5406 }, { 103,5406 }, { 104,5406 }, { 105,5406 }, { 106,5406 }, { 107,5406 }, { 108,5406 }, { 109,5406 }, { 110,5406 }, { 111,5406 }, { 112,5406 }, { 113,5406 }, { 114,5406 }, { 115,5406 }, { 116,5406 }, { 117,5406 }, { 118,5406 }, { 119,5406 }, { 120,5406 }, { 121,5406 }, { 122,5406 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5406 }, { 129,5406 }, { 130,5406 }, { 131,5406 }, { 132,5406 }, { 133,5406 }, { 134,5406 }, { 135,5406 }, { 136,5406 }, { 137,5406 }, { 138,5406 }, { 139,5406 }, { 140,5406 }, { 141,5406 }, { 142,5406 }, { 143,5406 }, { 144,5406 }, { 145,5406 }, { 146,5406 }, { 147,5406 }, { 148,5406 }, { 149,5406 }, { 150,5406 }, { 151,5406 }, { 152,5406 }, { 153,5406 }, { 154,5406 }, { 155,5406 }, { 156,5406 }, { 157,5406 }, { 158,5406 }, { 159,5406 }, { 160,5406 }, { 161,5406 }, { 162,5406 }, { 163,5406 }, { 164,5406 }, { 165,5406 }, { 166,5406 }, { 167,5406 }, { 168,5406 }, { 169,5406 }, { 170,5406 }, { 171,5406 }, { 172,5406 }, { 173,5406 }, { 174,5406 }, { 175,5406 }, { 176,5406 }, { 177,5406 }, { 178,5406 }, { 179,5406 }, { 180,5406 }, { 181,5406 }, { 182,5406 }, { 183,5406 }, { 184,5406 }, { 185,5406 }, { 186,5406 }, { 187,5406 }, { 188,5406 }, { 189,5406 }, { 190,5406 }, { 191,5406 }, { 192,5406 }, { 193,5406 }, { 194,5406 }, { 195,5406 }, { 196,5406 }, { 197,5406 }, { 198,5406 }, { 199,5406 }, { 200,5406 }, { 201,5406 }, { 202,5406 }, { 203,5406 }, { 204,5406 }, { 205,5406 }, { 206,5406 }, { 207,5406 }, { 208,5406 }, { 209,5406 }, { 210,5406 }, { 211,5406 }, { 212,5406 }, { 213,5406 }, { 214,5406 }, { 215,5406 }, { 216,5406 }, { 217,5406 }, { 218,5406 }, { 219,5406 }, { 220,5406 }, { 221,5406 }, { 222,5406 }, { 223,5406 }, { 224,5406 }, { 225,5406 }, { 226,5406 }, { 227,5406 }, { 228,5406 }, { 229,5406 }, { 230,5406 }, { 231,5406 }, { 232,5406 }, { 233,5406 }, { 234,5406 }, { 235,5406 }, { 236,5406 }, { 237,5406 }, { 238,5406 }, { 239,5406 }, { 240,5406 }, { 241,5406 }, { 242,5406 }, { 243,5406 }, { 244,5406 }, { 245,5406 }, { 246,5406 }, { 247,5406 }, { 248,5406 }, { 249,5406 }, { 250,5406 }, { 251,5406 }, { 252,5406 }, { 253,5406 }, { 254,5406 }, { 255,5406 }, { 0, 64 }, { 0,10064 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,5149 }, { 0, 0 }, { 0, 0 }, { 39,-1011 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,5149 }, { 49,5149 }, { 50,5149 }, { 51,5149 }, { 52,5149 }, { 53,5149 }, { 54,5149 }, { 55,5149 }, { 56,5149 }, { 57,5149 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-987 }, { 0, 0 }, { 65,5149 }, { 66,5149 }, { 67,5149 }, { 68,5149 }, { 69,5149 }, { 70,5149 }, { 71,5149 }, { 72,5149 }, { 73,5149 }, { 74,5149 }, { 75,5149 }, { 76,5149 }, { 77,5149 }, { 78,5149 }, { 79,5149 }, { 80,5149 }, { 81,5149 }, { 82,5149 }, { 83,5149 }, { 84,5149 }, { 85,5149 }, { 86,5149 }, { 87,5149 }, { 88,5149 }, { 89,5149 }, { 90,5149 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,5149 }, { 0, 0 }, { 97,5149 }, { 98,5149 }, { 99,5149 }, { 100,5149 }, { 101,5149 }, { 102,5149 }, { 103,5149 }, { 104,5149 }, { 105,5149 }, { 106,5149 }, { 107,5149 }, { 108,5149 }, { 109,5149 }, { 110,5149 }, { 111,5149 }, { 112,5149 }, { 113,5149 }, { 114,5149 }, { 115,5149 }, { 116,5149 }, { 117,5149 }, { 118,5149 }, { 119,5149 }, { 120,5149 }, { 121,5149 }, { 122,5149 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,5149 }, { 129,5149 }, { 130,5149 }, { 131,5149 }, { 132,5149 }, { 133,5149 }, { 134,5149 }, { 135,5149 }, { 136,5149 }, { 137,5149 }, { 138,5149 }, { 139,5149 }, { 140,5149 }, { 141,5149 }, { 142,5149 }, { 143,5149 }, { 144,5149 }, { 145,5149 }, { 146,5149 }, { 147,5149 }, { 148,5149 }, { 149,5149 }, { 150,5149 }, { 151,5149 }, { 152,5149 }, { 153,5149 }, { 154,5149 }, { 155,5149 }, { 156,5149 }, { 157,5149 }, { 158,5149 }, { 159,5149 }, { 160,5149 }, { 161,5149 }, { 162,5149 }, { 163,5149 }, { 164,5149 }, { 165,5149 }, { 166,5149 }, { 167,5149 }, { 168,5149 }, { 169,5149 }, { 170,5149 }, { 171,5149 }, { 172,5149 }, { 173,5149 }, { 174,5149 }, { 175,5149 }, { 176,5149 }, { 177,5149 }, { 178,5149 }, { 179,5149 }, { 180,5149 }, { 181,5149 }, { 182,5149 }, { 183,5149 }, { 184,5149 }, { 185,5149 }, { 186,5149 }, { 187,5149 }, { 188,5149 }, { 189,5149 }, { 190,5149 }, { 191,5149 }, { 192,5149 }, { 193,5149 }, { 194,5149 }, { 195,5149 }, { 196,5149 }, { 197,5149 }, { 198,5149 }, { 199,5149 }, { 200,5149 }, { 201,5149 }, { 202,5149 }, { 203,5149 }, { 204,5149 }, { 205,5149 }, { 206,5149 }, { 207,5149 }, { 208,5149 }, { 209,5149 }, { 210,5149 }, { 211,5149 }, { 212,5149 }, { 213,5149 }, { 214,5149 }, { 215,5149 }, { 216,5149 }, { 217,5149 }, { 218,5149 }, { 219,5149 }, { 220,5149 }, { 221,5149 }, { 222,5149 }, { 223,5149 }, { 224,5149 }, { 225,5149 }, { 226,5149 }, { 227,5149 }, { 228,5149 }, { 229,5149 }, { 230,5149 }, { 231,5149 }, { 232,5149 }, { 233,5149 }, { 234,5149 }, { 235,5149 }, { 236,5149 }, { 237,5149 }, { 238,5149 }, { 239,5149 }, { 240,5149 }, { 241,5149 }, { 242,5149 }, { 243,5149 }, { 244,5149 }, { 245,5149 }, { 246,5149 }, { 247,5149 }, { 248,5149 }, { 249,5149 }, { 250,5149 }, { 251,5149 }, { 252,5149 }, { 253,5149 }, { 254,5149 }, { 255,5149 }, { 0, 64 }, { 0,9807 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,4892 }, { 0, 0 }, { 0, 0 }, { 39,-1242 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4892 }, { 49,4892 }, { 50,4892 }, { 51,4892 }, { 52,4892 }, { 53,4892 }, { 54,4892 }, { 55,4892 }, { 56,4892 }, { 57,4892 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-1273 }, { 0, 0 }, { 65,4892 }, { 66,4892 }, { 67,4892 }, { 68,4892 }, { 69,4892 }, { 70,4892 }, { 71,4892 }, { 72,4892 }, { 73,4892 }, { 74,4892 }, { 75,4892 }, { 76,4892 }, { 77,4892 }, { 78,4892 }, { 79,4892 }, { 80,4892 }, { 81,4892 }, { 82,4892 }, { 83,4892 }, { 84,4892 }, { 85,4892 }, { 86,4892 }, { 87,4892 }, { 88,4892 }, { 89,4892 }, { 90,4892 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4892 }, { 0, 0 }, { 97,4892 }, { 98,4892 }, { 99,4892 }, { 100,4892 }, { 101,4892 }, { 102,4892 }, { 103,4892 }, { 104,4892 }, { 105,4892 }, { 106,4892 }, { 107,4892 }, { 108,4892 }, { 109,4892 }, { 110,4892 }, { 111,4892 }, { 112,4892 }, { 113,4892 }, { 114,4892 }, { 115,4892 }, { 116,4892 }, { 117,4892 }, { 118,4892 }, { 119,4892 }, { 120,4892 }, { 121,4892 }, { 122,4892 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4892 }, { 129,4892 }, { 130,4892 }, { 131,4892 }, { 132,4892 }, { 133,4892 }, { 134,4892 }, { 135,4892 }, { 136,4892 }, { 137,4892 }, { 138,4892 }, { 139,4892 }, { 140,4892 }, { 141,4892 }, { 142,4892 }, { 143,4892 }, { 144,4892 }, { 145,4892 }, { 146,4892 }, { 147,4892 }, { 148,4892 }, { 149,4892 }, { 150,4892 }, { 151,4892 }, { 152,4892 }, { 153,4892 }, { 154,4892 }, { 155,4892 }, { 156,4892 }, { 157,4892 }, { 158,4892 }, { 159,4892 }, { 160,4892 }, { 161,4892 }, { 162,4892 }, { 163,4892 }, { 164,4892 }, { 165,4892 }, { 166,4892 }, { 167,4892 }, { 168,4892 }, { 169,4892 }, { 170,4892 }, { 171,4892 }, { 172,4892 }, { 173,4892 }, { 174,4892 }, { 175,4892 }, { 176,4892 }, { 177,4892 }, { 178,4892 }, { 179,4892 }, { 180,4892 }, { 181,4892 }, { 182,4892 }, { 183,4892 }, { 184,4892 }, { 185,4892 }, { 186,4892 }, { 187,4892 }, { 188,4892 }, { 189,4892 }, { 190,4892 }, { 191,4892 }, { 192,4892 }, { 193,4892 }, { 194,4892 }, { 195,4892 }, { 196,4892 }, { 197,4892 }, { 198,4892 }, { 199,4892 }, { 200,4892 }, { 201,4892 }, { 202,4892 }, { 203,4892 }, { 204,4892 }, { 205,4892 }, { 206,4892 }, { 207,4892 }, { 208,4892 }, { 209,4892 }, { 210,4892 }, { 211,4892 }, { 212,4892 }, { 213,4892 }, { 214,4892 }, { 215,4892 }, { 216,4892 }, { 217,4892 }, { 218,4892 }, { 219,4892 }, { 220,4892 }, { 221,4892 }, { 222,4892 }, { 223,4892 }, { 224,4892 }, { 225,4892 }, { 226,4892 }, { 227,4892 }, { 228,4892 }, { 229,4892 }, { 230,4892 }, { 231,4892 }, { 232,4892 }, { 233,4892 }, { 234,4892 }, { 235,4892 }, { 236,4892 }, { 237,4892 }, { 238,4892 }, { 239,4892 }, { 240,4892 }, { 241,4892 }, { 242,4892 }, { 243,4892 }, { 244,4892 }, { 245,4892 }, { 246,4892 }, { 247,4892 }, { 248,4892 }, { 249,4892 }, { 250,4892 }, { 251,4892 }, { 252,4892 }, { 253,4892 }, { 254,4892 }, { 255,4892 }, { 0, 64 }, { 0,9550 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,4635 }, { 0, 0 }, { 38,-1304 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4635 }, { 49,4635 }, { 50,4635 }, { 51,4635 }, { 52,4635 }, { 53,4635 }, { 54,4635 }, { 55,4635 }, { 56,4635 }, { 57,4635 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-1530 }, { 0, 0 }, { 65,4635 }, { 66,4635 }, { 67,4635 }, { 68,4635 }, { 69,4635 }, { 70,4635 }, { 71,4635 }, { 72,4635 }, { 73,4635 }, { 74,4635 }, { 75,4635 }, { 76,4635 }, { 77,4635 }, { 78,4635 }, { 79,4635 }, { 80,4635 }, { 81,4635 }, { 82,4635 }, { 83,4635 }, { 84,4635 }, { 85,4635 }, { 86,4635 }, { 87,4635 }, { 88,4635 }, { 89,4635 }, { 90,4635 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4635 }, { 0, 0 }, { 97,4635 }, { 98,4635 }, { 99,4635 }, { 100,4635 }, { 101,4635 }, { 102,4635 }, { 103,4635 }, { 104,4635 }, { 105,4635 }, { 106,4635 }, { 107,4635 }, { 108,4635 }, { 109,4635 }, { 110,4635 }, { 111,4635 }, { 112,4635 }, { 113,4635 }, { 114,4635 }, { 115,4635 }, { 116,4635 }, { 117,4635 }, { 118,4635 }, { 119,4635 }, { 120,4635 }, { 121,4635 }, { 122,4635 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4635 }, { 129,4635 }, { 130,4635 }, { 131,4635 }, { 132,4635 }, { 133,4635 }, { 134,4635 }, { 135,4635 }, { 136,4635 }, { 137,4635 }, { 138,4635 }, { 139,4635 }, { 140,4635 }, { 141,4635 }, { 142,4635 }, { 143,4635 }, { 144,4635 }, { 145,4635 }, { 146,4635 }, { 147,4635 }, { 148,4635 }, { 149,4635 }, { 150,4635 }, { 151,4635 }, { 152,4635 }, { 153,4635 }, { 154,4635 }, { 155,4635 }, { 156,4635 }, { 157,4635 }, { 158,4635 }, { 159,4635 }, { 160,4635 }, { 161,4635 }, { 162,4635 }, { 163,4635 }, { 164,4635 }, { 165,4635 }, { 166,4635 }, { 167,4635 }, { 168,4635 }, { 169,4635 }, { 170,4635 }, { 171,4635 }, { 172,4635 }, { 173,4635 }, { 174,4635 }, { 175,4635 }, { 176,4635 }, { 177,4635 }, { 178,4635 }, { 179,4635 }, { 180,4635 }, { 181,4635 }, { 182,4635 }, { 183,4635 }, { 184,4635 }, { 185,4635 }, { 186,4635 }, { 187,4635 }, { 188,4635 }, { 189,4635 }, { 190,4635 }, { 191,4635 }, { 192,4635 }, { 193,4635 }, { 194,4635 }, { 195,4635 }, { 196,4635 }, { 197,4635 }, { 198,4635 }, { 199,4635 }, { 200,4635 }, { 201,4635 }, { 202,4635 }, { 203,4635 }, { 204,4635 }, { 205,4635 }, { 206,4635 }, { 207,4635 }, { 208,4635 }, { 209,4635 }, { 210,4635 }, { 211,4635 }, { 212,4635 }, { 213,4635 }, { 214,4635 }, { 215,4635 }, { 216,4635 }, { 217,4635 }, { 218,4635 }, { 219,4635 }, { 220,4635 }, { 221,4635 }, { 222,4635 }, { 223,4635 }, { 224,4635 }, { 225,4635 }, { 226,4635 }, { 227,4635 }, { 228,4635 }, { 229,4635 }, { 230,4635 }, { 231,4635 }, { 232,4635 }, { 233,4635 }, { 234,4635 }, { 235,4635 }, { 236,4635 }, { 237,4635 }, { 238,4635 }, { 239,4635 }, { 240,4635 }, { 241,4635 }, { 242,4635 }, { 243,4635 }, { 244,4635 }, { 245,4635 }, { 246,4635 }, { 247,4635 }, { 248,4635 }, { 249,4635 }, { 250,4635 }, { 251,4635 }, { 252,4635 }, { 253,4635 }, { 254,4635 }, { 255,4635 }, { 0, 64 }, { 0,9293 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,4378 }, { 0, 0 }, { 0, 0 }, { 39,-1559 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,4378 }, { 49,4378 }, { 50,4378 }, { 51,4378 }, { 52,4378 }, { 53,4378 }, { 54,4378 }, { 55,4378 }, { 56,4378 }, { 57,4378 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-1787 }, { 0, 0 }, { 65,4378 }, { 66,4378 }, { 67,4378 }, { 68,4378 }, { 69,4378 }, { 70,4378 }, { 71,4378 }, { 72,4378 }, { 73,4378 }, { 74,4378 }, { 75,4378 }, { 76,4378 }, { 77,4378 }, { 78,4378 }, { 79,4378 }, { 80,4378 }, { 81,4378 }, { 82,4378 }, { 83,4378 }, { 84,4378 }, { 85,4378 }, { 86,4378 }, { 87,4378 }, { 88,4378 }, { 89,4378 }, { 90,4378 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,4378 }, { 0, 0 }, { 97,4378 }, { 98,4378 }, { 99,4378 }, { 100,4378 }, { 101,4378 }, { 102,4378 }, { 103,4378 }, { 104,4378 }, { 105,4378 }, { 106,4378 }, { 107,4378 }, { 108,4378 }, { 109,4378 }, { 110,4378 }, { 111,4378 }, { 112,4378 }, { 113,4378 }, { 114,4378 }, { 115,4378 }, { 116,4378 }, { 117,4378 }, { 118,4378 }, { 119,4378 }, { 120,4378 }, { 121,4378 }, { 122,4378 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,4378 }, { 129,4378 }, { 130,4378 }, { 131,4378 }, { 132,4378 }, { 133,4378 }, { 134,4378 }, { 135,4378 }, { 136,4378 }, { 137,4378 }, { 138,4378 }, { 139,4378 }, { 140,4378 }, { 141,4378 }, { 142,4378 }, { 143,4378 }, { 144,4378 }, { 145,4378 }, { 146,4378 }, { 147,4378 }, { 148,4378 }, { 149,4378 }, { 150,4378 }, { 151,4378 }, { 152,4378 }, { 153,4378 }, { 154,4378 }, { 155,4378 }, { 156,4378 }, { 157,4378 }, { 158,4378 }, { 159,4378 }, { 160,4378 }, { 161,4378 }, { 162,4378 }, { 163,4378 }, { 164,4378 }, { 165,4378 }, { 166,4378 }, { 167,4378 }, { 168,4378 }, { 169,4378 }, { 170,4378 }, { 171,4378 }, { 172,4378 }, { 173,4378 }, { 174,4378 }, { 175,4378 }, { 176,4378 }, { 177,4378 }, { 178,4378 }, { 179,4378 }, { 180,4378 }, { 181,4378 }, { 182,4378 }, { 183,4378 }, { 184,4378 }, { 185,4378 }, { 186,4378 }, { 187,4378 }, { 188,4378 }, { 189,4378 }, { 190,4378 }, { 191,4378 }, { 192,4378 }, { 193,4378 }, { 194,4378 }, { 195,4378 }, { 196,4378 }, { 197,4378 }, { 198,4378 }, { 199,4378 }, { 200,4378 }, { 201,4378 }, { 202,4378 }, { 203,4378 }, { 204,4378 }, { 205,4378 }, { 206,4378 }, { 207,4378 }, { 208,4378 }, { 209,4378 }, { 210,4378 }, { 211,4378 }, { 212,4378 }, { 213,4378 }, { 214,4378 }, { 215,4378 }, { 216,4378 }, { 217,4378 }, { 218,4378 }, { 219,4378 }, { 220,4378 }, { 221,4378 }, { 222,4378 }, { 223,4378 }, { 224,4378 }, { 225,4378 }, { 226,4378 }, { 227,4378 }, { 228,4378 }, { 229,4378 }, { 230,4378 }, { 231,4378 }, { 232,4378 }, { 233,4378 }, { 234,4378 }, { 235,4378 }, { 236,4378 }, { 237,4378 }, { 238,4378 }, { 239,4378 }, { 240,4378 }, { 241,4378 }, { 242,4378 }, { 243,4378 }, { 244,4378 }, { 245,4378 }, { 246,4378 }, { 247,4378 }, { 248,4378 }, { 249,4378 }, { 250,4378 }, { 251,4378 }, { 252,4378 }, { 253,4378 }, { 254,4378 }, { 255,4378 }, { 0, 11 }, { 0,9036 }, { 1,4378 }, { 2,4378 }, { 3,4378 }, { 4,4378 }, { 5,4378 }, { 6,4378 }, { 7,4378 }, { 8,4378 }, { 9,4378 }, { 10,4378 }, { 11,4378 }, { 12,4378 }, { 13,4378 }, { 14,4378 }, { 15,4378 }, { 16,4378 }, { 17,4378 }, { 18,4378 }, { 19,4378 }, { 20,4378 }, { 21,4378 }, { 22,4378 }, { 23,4378 }, { 24,4378 }, { 25,4378 }, { 26,4378 }, { 27,4378 }, { 28,4378 }, { 29,4378 }, { 30,4378 }, { 31,4378 }, { 32,4378 }, { 33,4378 }, { 34,4378 }, { 35,4378 }, { 36,4378 }, { 37,4378 }, { 38,4378 }, { 0, 0 }, { 40,4378 }, { 41,4378 }, { 42,4378 }, { 43,4378 }, { 44,4378 }, { 45,4378 }, { 46,4378 }, { 47,4378 }, { 48,4378 }, { 49,4378 }, { 50,4378 }, { 51,4378 }, { 52,4378 }, { 53,4378 }, { 54,4378 }, { 55,4378 }, { 56,4378 }, { 57,4378 }, { 58,4378 }, { 59,4378 }, { 60,4378 }, { 61,4378 }, { 62,4378 }, { 63,4378 }, { 64,4378 }, { 65,4378 }, { 66,4378 }, { 67,4378 }, { 68,4378 }, { 69,4378 }, { 70,4378 }, { 71,4378 }, { 72,4378 }, { 73,4378 }, { 74,4378 }, { 75,4378 }, { 76,4378 }, { 77,4378 }, { 78,4378 }, { 79,4378 }, { 80,4378 }, { 81,4378 }, { 82,4378 }, { 83,4378 }, { 84,4378 }, { 85,4378 }, { 86,4378 }, { 87,4378 }, { 88,4378 }, { 89,4378 }, { 90,4378 }, { 91,4378 }, { 92,4378 }, { 93,4378 }, { 94,4378 }, { 95,4378 }, { 96,4378 }, { 97,4378 }, { 98,4378 }, { 99,4378 }, { 100,4378 }, { 101,4378 }, { 102,4378 }, { 103,4378 }, { 104,4378 }, { 105,4378 }, { 106,4378 }, { 107,4378 }, { 108,4378 }, { 109,4378 }, { 110,4378 }, { 111,4378 }, { 112,4378 }, { 113,4378 }, { 114,4378 }, { 115,4378 }, { 116,4378 }, { 117,4378 }, { 118,4378 }, { 119,4378 }, { 120,4378 }, { 121,4378 }, { 122,4378 }, { 123,4378 }, { 124,4378 }, { 125,4378 }, { 126,4378 }, { 127,4378 }, { 128,4378 }, { 129,4378 }, { 130,4378 }, { 131,4378 }, { 132,4378 }, { 133,4378 }, { 134,4378 }, { 135,4378 }, { 136,4378 }, { 137,4378 }, { 138,4378 }, { 139,4378 }, { 140,4378 }, { 141,4378 }, { 142,4378 }, { 143,4378 }, { 144,4378 }, { 145,4378 }, { 146,4378 }, { 147,4378 }, { 148,4378 }, { 149,4378 }, { 150,4378 }, { 151,4378 }, { 152,4378 }, { 153,4378 }, { 154,4378 }, { 155,4378 }, { 156,4378 }, { 157,4378 }, { 158,4378 }, { 159,4378 }, { 160,4378 }, { 161,4378 }, { 162,4378 }, { 163,4378 }, { 164,4378 }, { 165,4378 }, { 166,4378 }, { 167,4378 }, { 168,4378 }, { 169,4378 }, { 170,4378 }, { 171,4378 }, { 172,4378 }, { 173,4378 }, { 174,4378 }, { 175,4378 }, { 176,4378 }, { 177,4378 }, { 178,4378 }, { 179,4378 }, { 180,4378 }, { 181,4378 }, { 182,4378 }, { 183,4378 }, { 184,4378 }, { 185,4378 }, { 186,4378 }, { 187,4378 }, { 188,4378 }, { 189,4378 }, { 190,4378 }, { 191,4378 }, { 192,4378 }, { 193,4378 }, { 194,4378 }, { 195,4378 }, { 196,4378 }, { 197,4378 }, { 198,4378 }, { 199,4378 }, { 200,4378 }, { 201,4378 }, { 202,4378 }, { 203,4378 }, { 204,4378 }, { 205,4378 }, { 206,4378 }, { 207,4378 }, { 208,4378 }, { 209,4378 }, { 210,4378 }, { 211,4378 }, { 212,4378 }, { 213,4378 }, { 214,4378 }, { 215,4378 }, { 216,4378 }, { 217,4378 }, { 218,4378 }, { 219,4378 }, { 220,4378 }, { 221,4378 }, { 222,4378 }, { 223,4378 }, { 224,4378 }, { 225,4378 }, { 226,4378 }, { 227,4378 }, { 228,4378 }, { 229,4378 }, { 230,4378 }, { 231,4378 }, { 232,4378 }, { 233,4378 }, { 234,4378 }, { 235,4378 }, { 236,4378 }, { 237,4378 }, { 238,4378 }, { 239,4378 }, { 240,4378 }, { 241,4378 }, { 242,4378 }, { 243,4378 }, { 244,4378 }, { 245,4378 }, { 246,4378 }, { 247,4378 }, { 248,4378 }, { 249,4378 }, { 250,4378 }, { 251,4378 }, { 252,4378 }, { 253,4378 }, { 254,4378 }, { 255,4378 }, { 256,4378 }, { 0, 6 }, { 0,8778 }, { 1,4378 }, { 2,4378 }, { 3,4378 }, { 4,4378 }, { 5,4378 }, { 6,4378 }, { 7,4378 }, { 8,4378 }, { 9,4378 }, { 10,4378 }, { 11,4378 }, { 12,4378 }, { 13,4378 }, { 14,4378 }, { 15,4378 }, { 16,4378 }, { 17,4378 }, { 18,4378 }, { 19,4378 }, { 20,4378 }, { 21,4378 }, { 22,4378 }, { 23,4378 }, { 24,4378 }, { 25,4378 }, { 26,4378 }, { 27,4378 }, { 28,4378 }, { 29,4378 }, { 30,4378 }, { 31,4378 }, { 32,4378 }, { 33,4378 }, { 34,4378 }, { 35,4378 }, { 36,4378 }, { 37,4378 }, { 38,4378 }, { 39,4378 }, { 40,4378 }, { 41,4378 }, { 0, 0 }, { 43,4378 }, { 44,4378 }, { 45,4378 }, { 46,4378 }, { 0, 0 }, { 48,4378 }, { 49,4378 }, { 50,4378 }, { 51,4378 }, { 52,4378 }, { 53,4378 }, { 54,4378 }, { 55,4378 }, { 56,4378 }, { 57,4378 }, { 58,4378 }, { 59,4378 }, { 60,4378 }, { 61,4378 }, { 62,4378 }, { 63,4378 }, { 64,4378 }, { 65,4378 }, { 66,4378 }, { 67,4378 }, { 68,4378 }, { 69,4378 }, { 70,4378 }, { 71,4378 }, { 72,4378 }, { 73,4378 }, { 74,4378 }, { 75,4378 }, { 76,4378 }, { 77,4378 }, { 78,4378 }, { 79,4378 }, { 80,4378 }, { 81,4378 }, { 82,4378 }, { 83,4378 }, { 84,4378 }, { 85,4378 }, { 86,4378 }, { 87,4378 }, { 88,4378 }, { 89,4378 }, { 90,4378 }, { 91,4378 }, { 92,4378 }, { 93,4378 }, { 94,4378 }, { 95,4378 }, { 96,4378 }, { 97,4378 }, { 98,4378 }, { 99,4378 }, { 100,4378 }, { 101,4378 }, { 102,4378 }, { 103,4378 }, { 104,4378 }, { 105,4378 }, { 106,4378 }, { 107,4378 }, { 108,4378 }, { 109,4378 }, { 110,4378 }, { 111,4378 }, { 112,4378 }, { 113,4378 }, { 114,4378 }, { 115,4378 }, { 116,4378 }, { 117,4378 }, { 118,4378 }, { 119,4378 }, { 120,4378 }, { 121,4378 }, { 122,4378 }, { 123,4378 }, { 124,4378 }, { 125,4378 }, { 126,4378 }, { 127,4378 }, { 128,4378 }, { 129,4378 }, { 130,4378 }, { 131,4378 }, { 132,4378 }, { 133,4378 }, { 134,4378 }, { 135,4378 }, { 136,4378 }, { 137,4378 }, { 138,4378 }, { 139,4378 }, { 140,4378 }, { 141,4378 }, { 142,4378 }, { 143,4378 }, { 144,4378 }, { 145,4378 }, { 146,4378 }, { 147,4378 }, { 148,4378 }, { 149,4378 }, { 150,4378 }, { 151,4378 }, { 152,4378 }, { 153,4378 }, { 154,4378 }, { 155,4378 }, { 156,4378 }, { 157,4378 }, { 158,4378 }, { 159,4378 }, { 160,4378 }, { 161,4378 }, { 162,4378 }, { 163,4378 }, { 164,4378 }, { 165,4378 }, { 166,4378 }, { 167,4378 }, { 168,4378 }, { 169,4378 }, { 170,4378 }, { 171,4378 }, { 172,4378 }, { 173,4378 }, { 174,4378 }, { 175,4378 }, { 176,4378 }, { 177,4378 }, { 178,4378 }, { 179,4378 }, { 180,4378 }, { 181,4378 }, { 182,4378 }, { 183,4378 }, { 184,4378 }, { 185,4378 }, { 186,4378 }, { 187,4378 }, { 188,4378 }, { 189,4378 }, { 190,4378 }, { 191,4378 }, { 192,4378 }, { 193,4378 }, { 194,4378 }, { 195,4378 }, { 196,4378 }, { 197,4378 }, { 198,4378 }, { 199,4378 }, { 200,4378 }, { 201,4378 }, { 202,4378 }, { 203,4378 }, { 204,4378 }, { 205,4378 }, { 206,4378 }, { 207,4378 }, { 208,4378 }, { 209,4378 }, { 210,4378 }, { 211,4378 }, { 212,4378 }, { 213,4378 }, { 214,4378 }, { 215,4378 }, { 216,4378 }, { 217,4378 }, { 218,4378 }, { 219,4378 }, { 220,4378 }, { 221,4378 }, { 222,4378 }, { 223,4378 }, { 224,4378 }, { 225,4378 }, { 226,4378 }, { 227,4378 }, { 228,4378 }, { 229,4378 }, { 230,4378 }, { 231,4378 }, { 232,4378 }, { 233,4378 }, { 234,4378 }, { 235,4378 }, { 236,4378 }, { 237,4378 }, { 238,4378 }, { 239,4378 }, { 240,4378 }, { 241,4378 }, { 242,4378 }, { 243,4378 }, { 244,4378 }, { 245,4378 }, { 246,4378 }, { 247,4378 }, { 248,4378 }, { 249,4378 }, { 250,4378 }, { 251,4378 }, { 252,4378 }, { 253,4378 }, { 254,4378 }, { 255,4378 }, { 256,4378 }, { 0, 6 }, { 0,8520 }, { 1,4120 }, { 2,4120 }, { 3,4120 }, { 4,4120 }, { 5,4120 }, { 6,4120 }, { 7,4120 }, { 8,4120 }, { 9,4120 }, { 10,4120 }, { 11,4120 }, { 12,4120 }, { 13,4120 }, { 14,4120 }, { 15,4120 }, { 16,4120 }, { 17,4120 }, { 18,4120 }, { 19,4120 }, { 20,4120 }, { 21,4120 }, { 22,4120 }, { 23,4120 }, { 24,4120 }, { 25,4120 }, { 26,4120 }, { 27,4120 }, { 28,4120 }, { 29,4120 }, { 30,4120 }, { 31,4120 }, { 32,4120 }, { 33,4120 }, { 34,4120 }, { 35,4120 }, { 36,4120 }, { 37,4120 }, { 38,4120 }, { 39,4120 }, { 40,4120 }, { 41,4120 }, { 0, 0 }, { 43,4120 }, { 44,4120 }, { 45,4120 }, { 46,4120 }, { 0, 0 }, { 48,4120 }, { 49,4120 }, { 50,4120 }, { 51,4120 }, { 52,4120 }, { 53,4120 }, { 54,4120 }, { 55,4120 }, { 56,4120 }, { 57,4120 }, { 58,4120 }, { 59,4120 }, { 60,4120 }, { 61,4120 }, { 62,4120 }, { 63,4120 }, { 64,4120 }, { 65,4120 }, { 66,4120 }, { 67,4120 }, { 68,4120 }, { 69,4120 }, { 70,4120 }, { 71,4120 }, { 72,4120 }, { 73,4120 }, { 74,4120 }, { 75,4120 }, { 76,4120 }, { 77,4120 }, { 78,4120 }, { 79,4120 }, { 80,4120 }, { 81,4120 }, { 82,4120 }, { 83,4120 }, { 84,4120 }, { 85,4120 }, { 86,4120 }, { 87,4120 }, { 88,4120 }, { 89,4120 }, { 90,4120 }, { 91,4120 }, { 92,4120 }, { 93,4120 }, { 94,4120 }, { 95,4120 }, { 96,4120 }, { 97,4120 }, { 98,4120 }, { 99,4120 }, { 100,4120 }, { 101,4120 }, { 102,4120 }, { 103,4120 }, { 104,4120 }, { 105,4120 }, { 106,4120 }, { 107,4120 }, { 108,4120 }, { 109,4120 }, { 110,4120 }, { 111,4120 }, { 112,4120 }, { 113,4120 }, { 114,4120 }, { 115,4120 }, { 116,4120 }, { 117,4120 }, { 118,4120 }, { 119,4120 }, { 120,4120 }, { 121,4120 }, { 122,4120 }, { 123,4120 }, { 124,4120 }, { 125,4120 }, { 126,4120 }, { 127,4120 }, { 128,4120 }, { 129,4120 }, { 130,4120 }, { 131,4120 }, { 132,4120 }, { 133,4120 }, { 134,4120 }, { 135,4120 }, { 136,4120 }, { 137,4120 }, { 138,4120 }, { 139,4120 }, { 140,4120 }, { 141,4120 }, { 142,4120 }, { 143,4120 }, { 144,4120 }, { 145,4120 }, { 146,4120 }, { 147,4120 }, { 148,4120 }, { 149,4120 }, { 150,4120 }, { 151,4120 }, { 152,4120 }, { 153,4120 }, { 154,4120 }, { 155,4120 }, { 156,4120 }, { 157,4120 }, { 158,4120 }, { 159,4120 }, { 160,4120 }, { 161,4120 }, { 162,4120 }, { 163,4120 }, { 164,4120 }, { 165,4120 }, { 166,4120 }, { 167,4120 }, { 168,4120 }, { 169,4120 }, { 170,4120 }, { 171,4120 }, { 172,4120 }, { 173,4120 }, { 174,4120 }, { 175,4120 }, { 176,4120 }, { 177,4120 }, { 178,4120 }, { 179,4120 }, { 180,4120 }, { 181,4120 }, { 182,4120 }, { 183,4120 }, { 184,4120 }, { 185,4120 }, { 186,4120 }, { 187,4120 }, { 188,4120 }, { 189,4120 }, { 190,4120 }, { 191,4120 }, { 192,4120 }, { 193,4120 }, { 194,4120 }, { 195,4120 }, { 196,4120 }, { 197,4120 }, { 198,4120 }, { 199,4120 }, { 200,4120 }, { 201,4120 }, { 202,4120 }, { 203,4120 }, { 204,4120 }, { 205,4120 }, { 206,4120 }, { 207,4120 }, { 208,4120 }, { 209,4120 }, { 210,4120 }, { 211,4120 }, { 212,4120 }, { 213,4120 }, { 214,4120 }, { 215,4120 }, { 216,4120 }, { 217,4120 }, { 218,4120 }, { 219,4120 }, { 220,4120 }, { 221,4120 }, { 222,4120 }, { 223,4120 }, { 224,4120 }, { 225,4120 }, { 226,4120 }, { 227,4120 }, { 228,4120 }, { 229,4120 }, { 230,4120 }, { 231,4120 }, { 232,4120 }, { 233,4120 }, { 234,4120 }, { 235,4120 }, { 236,4120 }, { 237,4120 }, { 238,4120 }, { 239,4120 }, { 240,4120 }, { 241,4120 }, { 242,4120 }, { 243,4120 }, { 244,4120 }, { 245,4120 }, { 246,4120 }, { 247,4120 }, { 248,4120 }, { 249,4120 }, { 250,4120 }, { 251,4120 }, { 252,4120 }, { 253,4120 }, { 254,4120 }, { 255,4120 }, { 256,4120 }, { 0, 44 }, { 0,8262 }, { 1,4248 }, { 2,4248 }, { 3,4248 }, { 4,4248 }, { 5,4248 }, { 6,4248 }, { 7,4248 }, { 8,4248 }, { 9,4248 }, { 10,4248 }, { 11,4248 }, { 12,4248 }, { 13,4248 }, { 14,4248 }, { 15,4248 }, { 16,4248 }, { 17,4248 }, { 18,4248 }, { 19,4248 }, { 20,4248 }, { 21,4248 }, { 22,4248 }, { 23,4248 }, { 24,4248 }, { 25,4248 }, { 26,4248 }, { 27,4248 }, { 28,4248 }, { 29,4248 }, { 30,4248 }, { 31,4248 }, { 32,4248 }, { 33,4248 }, { 0, 0 }, { 35,4248 }, { 36,4248 }, { 37,4248 }, { 38,4248 }, { 39,4248 }, { 40,4248 }, { 41,4248 }, { 42,4248 }, { 43,4248 }, { 44,4248 }, { 45,4248 }, { 46,4248 }, { 47,4248 }, { 48,4248 }, { 49,4248 }, { 50,4248 }, { 51,4248 }, { 52,4248 }, { 53,4248 }, { 54,4248 }, { 55,4248 }, { 56,4248 }, { 57,4248 }, { 58,4248 }, { 59,4248 }, { 60,4248 }, { 61,4248 }, { 62,4248 }, { 63,4248 }, { 64,4248 }, { 65,4248 }, { 66,4248 }, { 67,4248 }, { 68,4248 }, { 69,4248 }, { 70,4248 }, { 71,4248 }, { 72,4248 }, { 73,4248 }, { 74,4248 }, { 75,4248 }, { 76,4248 }, { 77,4248 }, { 78,4248 }, { 79,4248 }, { 80,4248 }, { 81,4248 }, { 82,4248 }, { 83,4248 }, { 84,4248 }, { 85,4248 }, { 86,4248 }, { 87,4248 }, { 88,4248 }, { 89,4248 }, { 90,4248 }, { 91,4248 }, { 92,4248 }, { 93,4248 }, { 94,4248 }, { 95,4248 }, { 96,4248 }, { 97,4248 }, { 98,4248 }, { 99,4248 }, { 100,4248 }, { 101,4248 }, { 102,4248 }, { 103,4248 }, { 104,4248 }, { 105,4248 }, { 106,4248 }, { 107,4248 }, { 108,4248 }, { 109,4248 }, { 110,4248 }, { 111,4248 }, { 112,4248 }, { 113,4248 }, { 114,4248 }, { 115,4248 }, { 116,4248 }, { 117,4248 }, { 118,4248 }, { 119,4248 }, { 120,4248 }, { 121,4248 }, { 122,4248 }, { 123,4248 }, { 124,4248 }, { 125,4248 }, { 126,4248 }, { 127,4248 }, { 128,4248 }, { 129,4248 }, { 130,4248 }, { 131,4248 }, { 132,4248 }, { 133,4248 }, { 134,4248 }, { 135,4248 }, { 136,4248 }, { 137,4248 }, { 138,4248 }, { 139,4248 }, { 140,4248 }, { 141,4248 }, { 142,4248 }, { 143,4248 }, { 144,4248 }, { 145,4248 }, { 146,4248 }, { 147,4248 }, { 148,4248 }, { 149,4248 }, { 150,4248 }, { 151,4248 }, { 152,4248 }, { 153,4248 }, { 154,4248 }, { 155,4248 }, { 156,4248 }, { 157,4248 }, { 158,4248 }, { 159,4248 }, { 160,4248 }, { 161,4248 }, { 162,4248 }, { 163,4248 }, { 164,4248 }, { 165,4248 }, { 166,4248 }, { 167,4248 }, { 168,4248 }, { 169,4248 }, { 170,4248 }, { 171,4248 }, { 172,4248 }, { 173,4248 }, { 174,4248 }, { 175,4248 }, { 176,4248 }, { 177,4248 }, { 178,4248 }, { 179,4248 }, { 180,4248 }, { 181,4248 }, { 182,4248 }, { 183,4248 }, { 184,4248 }, { 185,4248 }, { 186,4248 }, { 187,4248 }, { 188,4248 }, { 189,4248 }, { 190,4248 }, { 191,4248 }, { 192,4248 }, { 193,4248 }, { 194,4248 }, { 195,4248 }, { 196,4248 }, { 197,4248 }, { 198,4248 }, { 199,4248 }, { 200,4248 }, { 201,4248 }, { 202,4248 }, { 203,4248 }, { 204,4248 }, { 205,4248 }, { 206,4248 }, { 207,4248 }, { 208,4248 }, { 209,4248 }, { 210,4248 }, { 211,4248 }, { 212,4248 }, { 213,4248 }, { 214,4248 }, { 215,4248 }, { 216,4248 }, { 217,4248 }, { 218,4248 }, { 219,4248 }, { 220,4248 }, { 221,4248 }, { 222,4248 }, { 223,4248 }, { 224,4248 }, { 225,4248 }, { 226,4248 }, { 227,4248 }, { 228,4248 }, { 229,4248 }, { 230,4248 }, { 231,4248 }, { 232,4248 }, { 233,4248 }, { 234,4248 }, { 235,4248 }, { 236,4248 }, { 237,4248 }, { 238,4248 }, { 239,4248 }, { 240,4248 }, { 241,4248 }, { 242,4248 }, { 243,4248 }, { 244,4248 }, { 245,4248 }, { 246,4248 }, { 247,4248 }, { 248,4248 }, { 249,4248 }, { 250,4248 }, { 251,4248 }, { 252,4248 }, { 253,4248 }, { 254,4248 }, { 255,4248 }, { 256,4248 }, { 0, 10 }, { 0,8004 }, { 1,4248 }, { 2,4248 }, { 3,4248 }, { 4,4248 }, { 5,4248 }, { 6,4248 }, { 7,4248 }, { 8,4248 }, { 9,4248 }, { 10,4248 }, { 11,4248 }, { 12,4248 }, { 13,4248 }, { 14,4248 }, { 15,4248 }, { 16,4248 }, { 17,4248 }, { 18,4248 }, { 19,4248 }, { 20,4248 }, { 21,4248 }, { 22,4248 }, { 23,4248 }, { 24,4248 }, { 25,4248 }, { 26,4248 }, { 27,4248 }, { 28,4248 }, { 29,4248 }, { 30,4248 }, { 31,4248 }, { 32,4248 }, { 33,4248 }, { 34,4248 }, { 35,4248 }, { 36,4248 }, { 37,4248 }, { 38,4248 }, { 0, 0 }, { 40,4248 }, { 41,4248 }, { 42,4248 }, { 43,4248 }, { 44,4248 }, { 45,4248 }, { 46,4248 }, { 47,4248 }, { 48,4248 }, { 49,4248 }, { 50,4248 }, { 51,4248 }, { 52,4248 }, { 53,4248 }, { 54,4248 }, { 55,4248 }, { 56,4248 }, { 57,4248 }, { 58,4248 }, { 59,4248 }, { 60,4248 }, { 61,4248 }, { 62,4248 }, { 63,4248 }, { 64,4248 }, { 65,4248 }, { 66,4248 }, { 67,4248 }, { 68,4248 }, { 69,4248 }, { 70,4248 }, { 71,4248 }, { 72,4248 }, { 73,4248 }, { 74,4248 }, { 75,4248 }, { 76,4248 }, { 77,4248 }, { 78,4248 }, { 79,4248 }, { 80,4248 }, { 81,4248 }, { 82,4248 }, { 83,4248 }, { 84,4248 }, { 85,4248 }, { 86,4248 }, { 87,4248 }, { 88,4248 }, { 89,4248 }, { 90,4248 }, { 91,4248 }, { 92,4248 }, { 93,4248 }, { 94,4248 }, { 95,4248 }, { 96,4248 }, { 97,4248 }, { 98,4248 }, { 99,4248 }, { 100,4248 }, { 101,4248 }, { 102,4248 }, { 103,4248 }, { 104,4248 }, { 105,4248 }, { 106,4248 }, { 107,4248 }, { 108,4248 }, { 109,4248 }, { 110,4248 }, { 111,4248 }, { 112,4248 }, { 113,4248 }, { 114,4248 }, { 115,4248 }, { 116,4248 }, { 117,4248 }, { 118,4248 }, { 119,4248 }, { 120,4248 }, { 121,4248 }, { 122,4248 }, { 123,4248 }, { 124,4248 }, { 125,4248 }, { 126,4248 }, { 127,4248 }, { 128,4248 }, { 129,4248 }, { 130,4248 }, { 131,4248 }, { 132,4248 }, { 133,4248 }, { 134,4248 }, { 135,4248 }, { 136,4248 }, { 137,4248 }, { 138,4248 }, { 139,4248 }, { 140,4248 }, { 141,4248 }, { 142,4248 }, { 143,4248 }, { 144,4248 }, { 145,4248 }, { 146,4248 }, { 147,4248 }, { 148,4248 }, { 149,4248 }, { 150,4248 }, { 151,4248 }, { 152,4248 }, { 153,4248 }, { 154,4248 }, { 155,4248 }, { 156,4248 }, { 157,4248 }, { 158,4248 }, { 159,4248 }, { 160,4248 }, { 161,4248 }, { 162,4248 }, { 163,4248 }, { 164,4248 }, { 165,4248 }, { 166,4248 }, { 167,4248 }, { 168,4248 }, { 169,4248 }, { 170,4248 }, { 171,4248 }, { 172,4248 }, { 173,4248 }, { 174,4248 }, { 175,4248 }, { 176,4248 }, { 177,4248 }, { 178,4248 }, { 179,4248 }, { 180,4248 }, { 181,4248 }, { 182,4248 }, { 183,4248 }, { 184,4248 }, { 185,4248 }, { 186,4248 }, { 187,4248 }, { 188,4248 }, { 189,4248 }, { 190,4248 }, { 191,4248 }, { 192,4248 }, { 193,4248 }, { 194,4248 }, { 195,4248 }, { 196,4248 }, { 197,4248 }, { 198,4248 }, { 199,4248 }, { 200,4248 }, { 201,4248 }, { 202,4248 }, { 203,4248 }, { 204,4248 }, { 205,4248 }, { 206,4248 }, { 207,4248 }, { 208,4248 }, { 209,4248 }, { 210,4248 }, { 211,4248 }, { 212,4248 }, { 213,4248 }, { 214,4248 }, { 215,4248 }, { 216,4248 }, { 217,4248 }, { 218,4248 }, { 219,4248 }, { 220,4248 }, { 221,4248 }, { 222,4248 }, { 223,4248 }, { 224,4248 }, { 225,4248 }, { 226,4248 }, { 227,4248 }, { 228,4248 }, { 229,4248 }, { 230,4248 }, { 231,4248 }, { 232,4248 }, { 233,4248 }, { 234,4248 }, { 235,4248 }, { 236,4248 }, { 237,4248 }, { 238,4248 }, { 239,4248 }, { 240,4248 }, { 241,4248 }, { 242,4248 }, { 243,4248 }, { 244,4248 }, { 245,4248 }, { 246,4248 }, { 247,4248 }, { 248,4248 }, { 249,4248 }, { 250,4248 }, { 251,4248 }, { 252,4248 }, { 253,4248 }, { 254,4248 }, { 255,4248 }, { 256,4248 }, { 0, 22 }, { 0,7746 }, { 1,4248 }, { 2,4248 }, { 3,4248 }, { 4,4248 }, { 5,4248 }, { 6,4248 }, { 7,4248 }, { 8,4248 }, { 9,4248 }, { 10,4248 }, { 11,4248 }, { 12,4248 }, { 13,4248 }, { 14,4248 }, { 15,4248 }, { 16,4248 }, { 17,4248 }, { 18,4248 }, { 19,4248 }, { 20,4248 }, { 21,4248 }, { 22,4248 }, { 23,4248 }, { 24,4248 }, { 25,4248 }, { 26,4248 }, { 27,4248 }, { 28,4248 }, { 29,4248 }, { 30,4248 }, { 31,4248 }, { 32,4248 }, { 33,4248 }, { 34,4248 }, { 35,4248 }, { 36,4248 }, { 37,4248 }, { 38,4248 }, { 0, 0 }, { 40,4248 }, { 41,4248 }, { 42,4248 }, { 43,4248 }, { 44,4248 }, { 45,4248 }, { 46,4248 }, { 47,4248 }, { 48,4248 }, { 49,4248 }, { 50,4248 }, { 51,4248 }, { 52,4248 }, { 53,4248 }, { 54,4248 }, { 55,4248 }, { 56,4248 }, { 57,4248 }, { 58,4248 }, { 59,4248 }, { 60,4248 }, { 61,4248 }, { 62,4248 }, { 63,4248 }, { 64,4248 }, { 65,4248 }, { 66,4248 }, { 67,4248 }, { 68,4248 }, { 69,4248 }, { 70,4248 }, { 71,4248 }, { 72,4248 }, { 73,4248 }, { 74,4248 }, { 75,4248 }, { 76,4248 }, { 77,4248 }, { 78,4248 }, { 79,4248 }, { 80,4248 }, { 81,4248 }, { 82,4248 }, { 83,4248 }, { 84,4248 }, { 85,4248 }, { 86,4248 }, { 87,4248 }, { 88,4248 }, { 89,4248 }, { 90,4248 }, { 91,4248 }, { 92,4248 }, { 93,4248 }, { 94,4248 }, { 95,4248 }, { 96,4248 }, { 97,4248 }, { 98,4248 }, { 99,4248 }, { 100,4248 }, { 101,4248 }, { 102,4248 }, { 103,4248 }, { 104,4248 }, { 105,4248 }, { 106,4248 }, { 107,4248 }, { 108,4248 }, { 109,4248 }, { 110,4248 }, { 111,4248 }, { 112,4248 }, { 113,4248 }, { 114,4248 }, { 115,4248 }, { 116,4248 }, { 117,4248 }, { 118,4248 }, { 119,4248 }, { 120,4248 }, { 121,4248 }, { 122,4248 }, { 123,4248 }, { 124,4248 }, { 125,4248 }, { 126,4248 }, { 127,4248 }, { 128,4248 }, { 129,4248 }, { 130,4248 }, { 131,4248 }, { 132,4248 }, { 133,4248 }, { 134,4248 }, { 135,4248 }, { 136,4248 }, { 137,4248 }, { 138,4248 }, { 139,4248 }, { 140,4248 }, { 141,4248 }, { 142,4248 }, { 143,4248 }, { 144,4248 }, { 145,4248 }, { 146,4248 }, { 147,4248 }, { 148,4248 }, { 149,4248 }, { 150,4248 }, { 151,4248 }, { 152,4248 }, { 153,4248 }, { 154,4248 }, { 155,4248 }, { 156,4248 }, { 157,4248 }, { 158,4248 }, { 159,4248 }, { 160,4248 }, { 161,4248 }, { 162,4248 }, { 163,4248 }, { 164,4248 }, { 165,4248 }, { 166,4248 }, { 167,4248 }, { 168,4248 }, { 169,4248 }, { 170,4248 }, { 171,4248 }, { 172,4248 }, { 173,4248 }, { 174,4248 }, { 175,4248 }, { 176,4248 }, { 177,4248 }, { 178,4248 }, { 179,4248 }, { 180,4248 }, { 181,4248 }, { 182,4248 }, { 183,4248 }, { 184,4248 }, { 185,4248 }, { 186,4248 }, { 187,4248 }, { 188,4248 }, { 189,4248 }, { 190,4248 }, { 191,4248 }, { 192,4248 }, { 193,4248 }, { 194,4248 }, { 195,4248 }, { 196,4248 }, { 197,4248 }, { 198,4248 }, { 199,4248 }, { 200,4248 }, { 201,4248 }, { 202,4248 }, { 203,4248 }, { 204,4248 }, { 205,4248 }, { 206,4248 }, { 207,4248 }, { 208,4248 }, { 209,4248 }, { 210,4248 }, { 211,4248 }, { 212,4248 }, { 213,4248 }, { 214,4248 }, { 215,4248 }, { 216,4248 }, { 217,4248 }, { 218,4248 }, { 219,4248 }, { 220,4248 }, { 221,4248 }, { 222,4248 }, { 223,4248 }, { 224,4248 }, { 225,4248 }, { 226,4248 }, { 227,4248 }, { 228,4248 }, { 229,4248 }, { 230,4248 }, { 231,4248 }, { 232,4248 }, { 233,4248 }, { 234,4248 }, { 235,4248 }, { 236,4248 }, { 237,4248 }, { 238,4248 }, { 239,4248 }, { 240,4248 }, { 241,4248 }, { 242,4248 }, { 243,4248 }, { 244,4248 }, { 245,4248 }, { 246,4248 }, { 247,4248 }, { 248,4248 }, { 249,4248 }, { 250,4248 }, { 251,4248 }, { 252,4248 }, { 253,4248 }, { 254,4248 }, { 255,4248 }, { 256,4248 }, { 0, 19 }, { 0,7488 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 19 }, { 0,7483 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9,4248 }, { 10,4253 }, { 0, 0 }, { 12,4248 }, { 13,4253 }, { 9,4264 }, { 10,4264 }, { 0, 0 }, { 12,4264 }, { 13,4264 }, { 0, 0 }, { 0, 19 }, { 0,7467 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9,4248 }, { 10,4248 }, { 32,4248 }, { 12,4248 }, { 13,4248 }, { 0, 0 }, { 0, 0 }, { 32,4264 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-3352 }, { 45,-3349 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-3354 }, { 0, 0 }, { 0, 0 }, { 32,4248 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-3368 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-3370 }, { 0, 23 }, { 0,7420 }, { 1,4248 }, { 2,4248 }, { 3,4248 }, { 4,4248 }, { 5,4248 }, { 6,4248 }, { 7,4248 }, { 8,4248 }, { 9,4248 }, { 10,4248 }, { 11,4248 }, { 12,4248 }, { 13,4248 }, { 14,4248 }, { 15,4248 }, { 16,4248 }, { 17,4248 }, { 18,4248 }, { 19,4248 }, { 20,4248 }, { 21,4248 }, { 22,4248 }, { 23,4248 }, { 24,4248 }, { 25,4248 }, { 26,4248 }, { 27,4248 }, { 28,4248 }, { 29,4248 }, { 30,4248 }, { 31,4248 }, { 32,4248 }, { 33,4248 }, { 34,4248 }, { 35,4248 }, { 36,4248 }, { 37,4248 }, { 38,4248 }, { 0, 0 }, { 40,4248 }, { 41,4248 }, { 42,4248 }, { 43,4248 }, { 44,4248 }, { 45,4248 }, { 46,4248 }, { 47,4248 }, { 48,4248 }, { 49,4248 }, { 50,4248 }, { 51,4248 }, { 52,4248 }, { 53,4248 }, { 54,4248 }, { 55,4248 }, { 56,4248 }, { 57,4248 }, { 58,4248 }, { 59,4248 }, { 60,4248 }, { 61,4248 }, { 62,4248 }, { 63,4248 }, { 64,4248 }, { 65,4248 }, { 66,4248 }, { 67,4248 }, { 68,4248 }, { 69,4248 }, { 70,4248 }, { 71,4248 }, { 72,4248 }, { 73,4248 }, { 74,4248 }, { 75,4248 }, { 76,4248 }, { 77,4248 }, { 78,4248 }, { 79,4248 }, { 80,4248 }, { 81,4248 }, { 82,4248 }, { 83,4248 }, { 84,4248 }, { 85,4248 }, { 86,4248 }, { 87,4248 }, { 88,4248 }, { 89,4248 }, { 90,4248 }, { 91,4248 }, { 0, 0 }, { 93,4248 }, { 94,4248 }, { 95,4248 }, { 96,4248 }, { 97,4248 }, { 98,4248 }, { 99,4248 }, { 100,4248 }, { 101,4248 }, { 102,4248 }, { 103,4248 }, { 104,4248 }, { 105,4248 }, { 106,4248 }, { 107,4248 }, { 108,4248 }, { 109,4248 }, { 110,4248 }, { 111,4248 }, { 112,4248 }, { 113,4248 }, { 114,4248 }, { 115,4248 }, { 116,4248 }, { 117,4248 }, { 118,4248 }, { 119,4248 }, { 120,4248 }, { 121,4248 }, { 122,4248 }, { 123,4248 }, { 124,4248 }, { 125,4248 }, { 126,4248 }, { 127,4248 }, { 128,4248 }, { 129,4248 }, { 130,4248 }, { 131,4248 }, { 132,4248 }, { 133,4248 }, { 134,4248 }, { 135,4248 }, { 136,4248 }, { 137,4248 }, { 138,4248 }, { 139,4248 }, { 140,4248 }, { 141,4248 }, { 142,4248 }, { 143,4248 }, { 144,4248 }, { 145,4248 }, { 146,4248 }, { 147,4248 }, { 148,4248 }, { 149,4248 }, { 150,4248 }, { 151,4248 }, { 152,4248 }, { 153,4248 }, { 154,4248 }, { 155,4248 }, { 156,4248 }, { 157,4248 }, { 158,4248 }, { 159,4248 }, { 160,4248 }, { 161,4248 }, { 162,4248 }, { 163,4248 }, { 164,4248 }, { 165,4248 }, { 166,4248 }, { 167,4248 }, { 168,4248 }, { 169,4248 }, { 170,4248 }, { 171,4248 }, { 172,4248 }, { 173,4248 }, { 174,4248 }, { 175,4248 }, { 176,4248 }, { 177,4248 }, { 178,4248 }, { 179,4248 }, { 180,4248 }, { 181,4248 }, { 182,4248 }, { 183,4248 }, { 184,4248 }, { 185,4248 }, { 186,4248 }, { 187,4248 }, { 188,4248 }, { 189,4248 }, { 190,4248 }, { 191,4248 }, { 192,4248 }, { 193,4248 }, { 194,4248 }, { 195,4248 }, { 196,4248 }, { 197,4248 }, { 198,4248 }, { 199,4248 }, { 200,4248 }, { 201,4248 }, { 202,4248 }, { 203,4248 }, { 204,4248 }, { 205,4248 }, { 206,4248 }, { 207,4248 }, { 208,4248 }, { 209,4248 }, { 210,4248 }, { 211,4248 }, { 212,4248 }, { 213,4248 }, { 214,4248 }, { 215,4248 }, { 216,4248 }, { 217,4248 }, { 218,4248 }, { 219,4248 }, { 220,4248 }, { 221,4248 }, { 222,4248 }, { 223,4248 }, { 224,4248 }, { 225,4248 }, { 226,4248 }, { 227,4248 }, { 228,4248 }, { 229,4248 }, { 230,4248 }, { 231,4248 }, { 232,4248 }, { 233,4248 }, { 234,4248 }, { 235,4248 }, { 236,4248 }, { 237,4248 }, { 238,4248 }, { 239,4248 }, { 240,4248 }, { 241,4248 }, { 242,4248 }, { 243,4248 }, { 244,4248 }, { 245,4248 }, { 246,4248 }, { 247,4248 }, { 248,4248 }, { 249,4248 }, { 250,4248 }, { 251,4248 }, { 252,4248 }, { 253,4248 }, { 254,4248 }, { 255,4248 }, { 256,4248 }, { 0, 23 }, { 0,7162 }, { 1,3990 }, { 2,3990 }, { 3,3990 }, { 4,3990 }, { 5,3990 }, { 6,3990 }, { 7,3990 }, { 8,3990 }, { 9,3990 }, { 10,3990 }, { 11,3990 }, { 12,3990 }, { 13,3990 }, { 14,3990 }, { 15,3990 }, { 16,3990 }, { 17,3990 }, { 18,3990 }, { 19,3990 }, { 20,3990 }, { 21,3990 }, { 22,3990 }, { 23,3990 }, { 24,3990 }, { 25,3990 }, { 26,3990 }, { 27,3990 }, { 28,3990 }, { 29,3990 }, { 30,3990 }, { 31,3990 }, { 32,3990 }, { 33,3990 }, { 34,3990 }, { 35,3990 }, { 36,3990 }, { 37,3990 }, { 38,3990 }, { 0, 0 }, { 40,3990 }, { 41,3990 }, { 42,3990 }, { 43,3990 }, { 44,3990 }, { 45,3990 }, { 46,3990 }, { 47,3990 }, { 48,3990 }, { 49,3990 }, { 50,3990 }, { 51,3990 }, { 52,3990 }, { 53,3990 }, { 54,3990 }, { 55,3990 }, { 56,3990 }, { 57,3990 }, { 58,3990 }, { 59,3990 }, { 60,3990 }, { 61,3990 }, { 62,3990 }, { 63,3990 }, { 64,3990 }, { 65,3990 }, { 66,3990 }, { 67,3990 }, { 68,3990 }, { 69,3990 }, { 70,3990 }, { 71,3990 }, { 72,3990 }, { 73,3990 }, { 74,3990 }, { 75,3990 }, { 76,3990 }, { 77,3990 }, { 78,3990 }, { 79,3990 }, { 80,3990 }, { 81,3990 }, { 82,3990 }, { 83,3990 }, { 84,3990 }, { 85,3990 }, { 86,3990 }, { 87,3990 }, { 88,3990 }, { 89,3990 }, { 90,3990 }, { 91,3990 }, { 0, 0 }, { 93,3990 }, { 94,3990 }, { 95,3990 }, { 96,3990 }, { 97,3990 }, { 98,3990 }, { 99,3990 }, { 100,3990 }, { 101,3990 }, { 102,3990 }, { 103,3990 }, { 104,3990 }, { 105,3990 }, { 106,3990 }, { 107,3990 }, { 108,3990 }, { 109,3990 }, { 110,3990 }, { 111,3990 }, { 112,3990 }, { 113,3990 }, { 114,3990 }, { 115,3990 }, { 116,3990 }, { 117,3990 }, { 118,3990 }, { 119,3990 }, { 120,3990 }, { 121,3990 }, { 122,3990 }, { 123,3990 }, { 124,3990 }, { 125,3990 }, { 126,3990 }, { 127,3990 }, { 128,3990 }, { 129,3990 }, { 130,3990 }, { 131,3990 }, { 132,3990 }, { 133,3990 }, { 134,3990 }, { 135,3990 }, { 136,3990 }, { 137,3990 }, { 138,3990 }, { 139,3990 }, { 140,3990 }, { 141,3990 }, { 142,3990 }, { 143,3990 }, { 144,3990 }, { 145,3990 }, { 146,3990 }, { 147,3990 }, { 148,3990 }, { 149,3990 }, { 150,3990 }, { 151,3990 }, { 152,3990 }, { 153,3990 }, { 154,3990 }, { 155,3990 }, { 156,3990 }, { 157,3990 }, { 158,3990 }, { 159,3990 }, { 160,3990 }, { 161,3990 }, { 162,3990 }, { 163,3990 }, { 164,3990 }, { 165,3990 }, { 166,3990 }, { 167,3990 }, { 168,3990 }, { 169,3990 }, { 170,3990 }, { 171,3990 }, { 172,3990 }, { 173,3990 }, { 174,3990 }, { 175,3990 }, { 176,3990 }, { 177,3990 }, { 178,3990 }, { 179,3990 }, { 180,3990 }, { 181,3990 }, { 182,3990 }, { 183,3990 }, { 184,3990 }, { 185,3990 }, { 186,3990 }, { 187,3990 }, { 188,3990 }, { 189,3990 }, { 190,3990 }, { 191,3990 }, { 192,3990 }, { 193,3990 }, { 194,3990 }, { 195,3990 }, { 196,3990 }, { 197,3990 }, { 198,3990 }, { 199,3990 }, { 200,3990 }, { 201,3990 }, { 202,3990 }, { 203,3990 }, { 204,3990 }, { 205,3990 }, { 206,3990 }, { 207,3990 }, { 208,3990 }, { 209,3990 }, { 210,3990 }, { 211,3990 }, { 212,3990 }, { 213,3990 }, { 214,3990 }, { 215,3990 }, { 216,3990 }, { 217,3990 }, { 218,3990 }, { 219,3990 }, { 220,3990 }, { 221,3990 }, { 222,3990 }, { 223,3990 }, { 224,3990 }, { 225,3990 }, { 226,3990 }, { 227,3990 }, { 228,3990 }, { 229,3990 }, { 230,3990 }, { 231,3990 }, { 232,3990 }, { 233,3990 }, { 234,3990 }, { 235,3990 }, { 236,3990 }, { 237,3990 }, { 238,3990 }, { 239,3990 }, { 240,3990 }, { 241,3990 }, { 242,3990 }, { 243,3990 }, { 244,3990 }, { 245,3990 }, { 246,3990 }, { 247,3990 }, { 248,3990 }, { 249,3990 }, { 250,3990 }, { 251,3990 }, { 252,3990 }, { 253,3990 }, { 254,3990 }, { 255,3990 }, { 256,3990 }, { 0, 32 }, { 0,6904 }, { 1,-3929 }, { 2,-3929 }, { 3,-3929 }, { 4,-3929 }, { 5,-3929 }, { 6,-3929 }, { 7,-3929 }, { 8,-3929 }, { 9,-3929 }, { 10,-3929 }, { 11,-3929 }, { 12,-3929 }, { 13,-3929 }, { 14,-3929 }, { 15,-3929 }, { 16,-3929 }, { 17,-3929 }, { 18,-3929 }, { 19,-3929 }, { 20,-3929 }, { 21,-3929 }, { 22,-3929 }, { 23,-3929 }, { 24,-3929 }, { 25,-3929 }, { 26,-3929 }, { 27,-3929 }, { 28,-3929 }, { 29,-3929 }, { 30,-3929 }, { 31,-3929 }, { 32,-3929 }, { 33,-3929 }, { 34,-3929 }, { 35,-3929 }, { 36,-3929 }, { 37,-3929 }, { 38,-3929 }, { 39,-3929 }, { 40,-3929 }, { 41,-3929 }, { 42,-3929 }, { 43,-3929 }, { 44,-3929 }, { 45,-3929 }, { 46,-3929 }, { 47,-3929 }, { 48,3990 }, { 49,3990 }, { 50,3990 }, { 51,3990 }, { 52,3990 }, { 53,3990 }, { 54,3990 }, { 55,3990 }, { 56,-3929 }, { 57,-3929 }, { 58,-3929 }, { 59,-3929 }, { 60,-3929 }, { 61,-3929 }, { 62,-3929 }, { 63,-3929 }, { 64,-3929 }, { 65,-3929 }, { 66,-3929 }, { 67,-3929 }, { 68,-3929 }, { 69,-3929 }, { 70,-3929 }, { 71,-3929 }, { 72,-3929 }, { 73,-3929 }, { 74,-3929 }, { 75,-3929 }, { 76,-3929 }, { 77,-3929 }, { 78,-3929 }, { 79,-3929 }, { 80,-3929 }, { 81,-3929 }, { 82,-3929 }, { 83,-3929 }, { 84,-3929 }, { 85,3998 }, { 86,-3929 }, { 87,-3929 }, { 88,-3929 }, { 89,-3929 }, { 90,-3929 }, { 91,-3929 }, { 92,-3929 }, { 93,-3929 }, { 94,-3929 }, { 95,-3929 }, { 96,-3929 }, { 97,-3929 }, { 98,-3929 }, { 99,-3929 }, { 100,-3929 }, { 101,-3929 }, { 102,-3929 }, { 103,-3929 }, { 104,-3929 }, { 105,-3929 }, { 106,-3929 }, { 107,-3929 }, { 108,-3929 }, { 109,-3929 }, { 110,-3929 }, { 111,-3929 }, { 112,-3929 }, { 113,-3929 }, { 114,-3929 }, { 115,-3929 }, { 116,-3929 }, { 117,4021 }, { 118,-3929 }, { 119,-3929 }, { 120,4059 }, { 121,-3929 }, { 122,-3929 }, { 123,-3929 }, { 124,-3929 }, { 125,-3929 }, { 126,-3929 }, { 127,-3929 }, { 128,-3929 }, { 129,-3929 }, { 130,-3929 }, { 131,-3929 }, { 132,-3929 }, { 133,-3929 }, { 134,-3929 }, { 135,-3929 }, { 136,-3929 }, { 137,-3929 }, { 138,-3929 }, { 139,-3929 }, { 140,-3929 }, { 141,-3929 }, { 142,-3929 }, { 143,-3929 }, { 144,-3929 }, { 145,-3929 }, { 146,-3929 }, { 147,-3929 }, { 148,-3929 }, { 149,-3929 }, { 150,-3929 }, { 151,-3929 }, { 152,-3929 }, { 153,-3929 }, { 154,-3929 }, { 155,-3929 }, { 156,-3929 }, { 157,-3929 }, { 158,-3929 }, { 159,-3929 }, { 160,-3929 }, { 161,-3929 }, { 162,-3929 }, { 163,-3929 }, { 164,-3929 }, { 165,-3929 }, { 166,-3929 }, { 167,-3929 }, { 168,-3929 }, { 169,-3929 }, { 170,-3929 }, { 171,-3929 }, { 172,-3929 }, { 173,-3929 }, { 174,-3929 }, { 175,-3929 }, { 176,-3929 }, { 177,-3929 }, { 178,-3929 }, { 179,-3929 }, { 180,-3929 }, { 181,-3929 }, { 182,-3929 }, { 183,-3929 }, { 184,-3929 }, { 185,-3929 }, { 186,-3929 }, { 187,-3929 }, { 188,-3929 }, { 189,-3929 }, { 190,-3929 }, { 191,-3929 }, { 192,-3929 }, { 193,-3929 }, { 194,-3929 }, { 195,-3929 }, { 196,-3929 }, { 197,-3929 }, { 198,-3929 }, { 199,-3929 }, { 200,-3929 }, { 201,-3929 }, { 202,-3929 }, { 203,-3929 }, { 204,-3929 }, { 205,-3929 }, { 206,-3929 }, { 207,-3929 }, { 208,-3929 }, { 209,-3929 }, { 210,-3929 }, { 211,-3929 }, { 212,-3929 }, { 213,-3929 }, { 214,-3929 }, { 215,-3929 }, { 216,-3929 }, { 217,-3929 }, { 218,-3929 }, { 219,-3929 }, { 220,-3929 }, { 221,-3929 }, { 222,-3929 }, { 223,-3929 }, { 224,-3929 }, { 225,-3929 }, { 226,-3929 }, { 227,-3929 }, { 228,-3929 }, { 229,-3929 }, { 230,-3929 }, { 231,-3929 }, { 232,-3929 }, { 233,-3929 }, { 234,-3929 }, { 235,-3929 }, { 236,-3929 }, { 237,-3929 }, { 238,-3929 }, { 239,-3929 }, { 240,-3929 }, { 241,-3929 }, { 242,-3929 }, { 243,-3929 }, { 244,-3929 }, { 245,-3929 }, { 246,-3929 }, { 247,-3929 }, { 248,-3929 }, { 249,-3929 }, { 250,-3929 }, { 251,-3929 }, { 252,-3929 }, { 253,-3929 }, { 254,-3929 }, { 255,-3929 }, { 256,-3929 }, { 0, 36 }, { 0,6646 }, { 1,3905 }, { 2,3905 }, { 3,3905 }, { 4,3905 }, { 5,3905 }, { 6,3905 }, { 7,3905 }, { 8,3905 }, { 9,3905 }, { 10,3905 }, { 11,3905 }, { 12,3905 }, { 13,3905 }, { 14,3905 }, { 15,3905 }, { 16,3905 }, { 17,3905 }, { 18,3905 }, { 19,3905 }, { 20,3905 }, { 21,3905 }, { 22,3905 }, { 23,3905 }, { 24,3905 }, { 25,3905 }, { 26,3905 }, { 27,3905 }, { 28,3905 }, { 29,3905 }, { 30,3905 }, { 31,3905 }, { 32,3905 }, { 33,3905 }, { 34,3905 }, { 35,3905 }, { 0, 0 }, { 37,3905 }, { 38,3905 }, { 39,3905 }, { 40,3905 }, { 41,3905 }, { 42,3905 }, { 43,3905 }, { 44,3905 }, { 45,3905 }, { 46,3905 }, { 47,3905 }, { 48,3905 }, { 49,3905 }, { 50,3905 }, { 51,3905 }, { 52,3905 }, { 53,3905 }, { 54,3905 }, { 55,3905 }, { 56,3905 }, { 57,3905 }, { 58,3905 }, { 59,3905 }, { 60,3905 }, { 61,3905 }, { 62,3905 }, { 63,3905 }, { 64,3905 }, { 65,3905 }, { 66,3905 }, { 67,3905 }, { 68,3905 }, { 69,3905 }, { 70,3905 }, { 71,3905 }, { 72,3905 }, { 73,3905 }, { 74,3905 }, { 75,3905 }, { 76,3905 }, { 77,3905 }, { 78,3905 }, { 79,3905 }, { 80,3905 }, { 81,3905 }, { 82,3905 }, { 83,3905 }, { 84,3905 }, { 85,3905 }, { 86,3905 }, { 87,3905 }, { 88,3905 }, { 89,3905 }, { 90,3905 }, { 91,3905 }, { 92,3905 }, { 93,3905 }, { 94,3905 }, { 95,3905 }, { 96,3905 }, { 97,3905 }, { 98,3905 }, { 99,3905 }, { 100,3905 }, { 101,3905 }, { 102,3905 }, { 103,3905 }, { 104,3905 }, { 105,3905 }, { 106,3905 }, { 107,3905 }, { 108,3905 }, { 109,3905 }, { 110,3905 }, { 111,3905 }, { 112,3905 }, { 113,3905 }, { 114,3905 }, { 115,3905 }, { 116,3905 }, { 117,3905 }, { 118,3905 }, { 119,3905 }, { 120,3905 }, { 121,3905 }, { 122,3905 }, { 123,3905 }, { 124,3905 }, { 125,3905 }, { 126,3905 }, { 127,3905 }, { 128,3905 }, { 129,3905 }, { 130,3905 }, { 131,3905 }, { 132,3905 }, { 133,3905 }, { 134,3905 }, { 135,3905 }, { 136,3905 }, { 137,3905 }, { 138,3905 }, { 139,3905 }, { 140,3905 }, { 141,3905 }, { 142,3905 }, { 143,3905 }, { 144,3905 }, { 145,3905 }, { 146,3905 }, { 147,3905 }, { 148,3905 }, { 149,3905 }, { 150,3905 }, { 151,3905 }, { 152,3905 }, { 153,3905 }, { 154,3905 }, { 155,3905 }, { 156,3905 }, { 157,3905 }, { 158,3905 }, { 159,3905 }, { 160,3905 }, { 161,3905 }, { 162,3905 }, { 163,3905 }, { 164,3905 }, { 165,3905 }, { 166,3905 }, { 167,3905 }, { 168,3905 }, { 169,3905 }, { 170,3905 }, { 171,3905 }, { 172,3905 }, { 173,3905 }, { 174,3905 }, { 175,3905 }, { 176,3905 }, { 177,3905 }, { 178,3905 }, { 179,3905 }, { 180,3905 }, { 181,3905 }, { 182,3905 }, { 183,3905 }, { 184,3905 }, { 185,3905 }, { 186,3905 }, { 187,3905 }, { 188,3905 }, { 189,3905 }, { 190,3905 }, { 191,3905 }, { 192,3905 }, { 193,3905 }, { 194,3905 }, { 195,3905 }, { 196,3905 }, { 197,3905 }, { 198,3905 }, { 199,3905 }, { 200,3905 }, { 201,3905 }, { 202,3905 }, { 203,3905 }, { 204,3905 }, { 205,3905 }, { 206,3905 }, { 207,3905 }, { 208,3905 }, { 209,3905 }, { 210,3905 }, { 211,3905 }, { 212,3905 }, { 213,3905 }, { 214,3905 }, { 215,3905 }, { 216,3905 }, { 217,3905 }, { 218,3905 }, { 219,3905 }, { 220,3905 }, { 221,3905 }, { 222,3905 }, { 223,3905 }, { 224,3905 }, { 225,3905 }, { 226,3905 }, { 227,3905 }, { 228,3905 }, { 229,3905 }, { 230,3905 }, { 231,3905 }, { 232,3905 }, { 233,3905 }, { 234,3905 }, { 235,3905 }, { 236,3905 }, { 237,3905 }, { 238,3905 }, { 239,3905 }, { 240,3905 }, { 241,3905 }, { 242,3905 }, { 243,3905 }, { 244,3905 }, { 245,3905 }, { 246,3905 }, { 247,3905 }, { 248,3905 }, { 249,3905 }, { 250,3905 }, { 251,3905 }, { 252,3905 }, { 253,3905 }, { 254,3905 }, { 255,3905 }, { 256,3905 }, { 0, 36 }, { 0,6388 }, { 1,3647 }, { 2,3647 }, { 3,3647 }, { 4,3647 }, { 5,3647 }, { 6,3647 }, { 7,3647 }, { 8,3647 }, { 9,3647 }, { 10,3647 }, { 11,3647 }, { 12,3647 }, { 13,3647 }, { 14,3647 }, { 15,3647 }, { 16,3647 }, { 17,3647 }, { 18,3647 }, { 19,3647 }, { 20,3647 }, { 21,3647 }, { 22,3647 }, { 23,3647 }, { 24,3647 }, { 25,3647 }, { 26,3647 }, { 27,3647 }, { 28,3647 }, { 29,3647 }, { 30,3647 }, { 31,3647 }, { 32,3647 }, { 33,3647 }, { 34,3647 }, { 35,3647 }, { 0, 0 }, { 37,3647 }, { 38,3647 }, { 39,3647 }, { 40,3647 }, { 41,3647 }, { 42,3647 }, { 43,3647 }, { 44,3647 }, { 45,3647 }, { 46,3647 }, { 47,3647 }, { 48,3647 }, { 49,3647 }, { 50,3647 }, { 51,3647 }, { 52,3647 }, { 53,3647 }, { 54,3647 }, { 55,3647 }, { 56,3647 }, { 57,3647 }, { 58,3647 }, { 59,3647 }, { 60,3647 }, { 61,3647 }, { 62,3647 }, { 63,3647 }, { 64,3647 }, { 65,3647 }, { 66,3647 }, { 67,3647 }, { 68,3647 }, { 69,3647 }, { 70,3647 }, { 71,3647 }, { 72,3647 }, { 73,3647 }, { 74,3647 }, { 75,3647 }, { 76,3647 }, { 77,3647 }, { 78,3647 }, { 79,3647 }, { 80,3647 }, { 81,3647 }, { 82,3647 }, { 83,3647 }, { 84,3647 }, { 85,3647 }, { 86,3647 }, { 87,3647 }, { 88,3647 }, { 89,3647 }, { 90,3647 }, { 91,3647 }, { 92,3647 }, { 93,3647 }, { 94,3647 }, { 95,3647 }, { 96,3647 }, { 97,3647 }, { 98,3647 }, { 99,3647 }, { 100,3647 }, { 101,3647 }, { 102,3647 }, { 103,3647 }, { 104,3647 }, { 105,3647 }, { 106,3647 }, { 107,3647 }, { 108,3647 }, { 109,3647 }, { 110,3647 }, { 111,3647 }, { 112,3647 }, { 113,3647 }, { 114,3647 }, { 115,3647 }, { 116,3647 }, { 117,3647 }, { 118,3647 }, { 119,3647 }, { 120,3647 }, { 121,3647 }, { 122,3647 }, { 123,3647 }, { 124,3647 }, { 125,3647 }, { 126,3647 }, { 127,3647 }, { 128,3647 }, { 129,3647 }, { 130,3647 }, { 131,3647 }, { 132,3647 }, { 133,3647 }, { 134,3647 }, { 135,3647 }, { 136,3647 }, { 137,3647 }, { 138,3647 }, { 139,3647 }, { 140,3647 }, { 141,3647 }, { 142,3647 }, { 143,3647 }, { 144,3647 }, { 145,3647 }, { 146,3647 }, { 147,3647 }, { 148,3647 }, { 149,3647 }, { 150,3647 }, { 151,3647 }, { 152,3647 }, { 153,3647 }, { 154,3647 }, { 155,3647 }, { 156,3647 }, { 157,3647 }, { 158,3647 }, { 159,3647 }, { 160,3647 }, { 161,3647 }, { 162,3647 }, { 163,3647 }, { 164,3647 }, { 165,3647 }, { 166,3647 }, { 167,3647 }, { 168,3647 }, { 169,3647 }, { 170,3647 }, { 171,3647 }, { 172,3647 }, { 173,3647 }, { 174,3647 }, { 175,3647 }, { 176,3647 }, { 177,3647 }, { 178,3647 }, { 179,3647 }, { 180,3647 }, { 181,3647 }, { 182,3647 }, { 183,3647 }, { 184,3647 }, { 185,3647 }, { 186,3647 }, { 187,3647 }, { 188,3647 }, { 189,3647 }, { 190,3647 }, { 191,3647 }, { 192,3647 }, { 193,3647 }, { 194,3647 }, { 195,3647 }, { 196,3647 }, { 197,3647 }, { 198,3647 }, { 199,3647 }, { 200,3647 }, { 201,3647 }, { 202,3647 }, { 203,3647 }, { 204,3647 }, { 205,3647 }, { 206,3647 }, { 207,3647 }, { 208,3647 }, { 209,3647 }, { 210,3647 }, { 211,3647 }, { 212,3647 }, { 213,3647 }, { 214,3647 }, { 215,3647 }, { 216,3647 }, { 217,3647 }, { 218,3647 }, { 219,3647 }, { 220,3647 }, { 221,3647 }, { 222,3647 }, { 223,3647 }, { 224,3647 }, { 225,3647 }, { 226,3647 }, { 227,3647 }, { 228,3647 }, { 229,3647 }, { 230,3647 }, { 231,3647 }, { 232,3647 }, { 233,3647 }, { 234,3647 }, { 235,3647 }, { 236,3647 }, { 237,3647 }, { 238,3647 }, { 239,3647 }, { 240,3647 }, { 241,3647 }, { 242,3647 }, { 243,3647 }, { 244,3647 }, { 245,3647 }, { 246,3647 }, { 247,3647 }, { 248,3647 }, { 249,3647 }, { 250,3647 }, { 251,3647 }, { 252,3647 }, { 253,3647 }, { 254,3647 }, { 255,3647 }, { 256,3647 }, { 0, 38 }, { 0,6130 }, { 0, 1 }, { 0,6128 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, { 0, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 32, 0 }, { 0, 0 }, { 36,-4701 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3647 }, { 66,3647 }, { 67,3647 }, { 68,3647 }, { 69,3647 }, { 70,3647 }, { 71,3647 }, { 72,3647 }, { 73,3647 }, { 74,3647 }, { 75,3647 }, { 76,3647 }, { 77,3647 }, { 78,3647 }, { 79,3647 }, { 80,3647 }, { 81,3647 }, { 82,3647 }, { 83,3647 }, { 84,3647 }, { 85,3647 }, { 86,3647 }, { 87,3647 }, { 88,3647 }, { 89,3647 }, { 90,3647 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,3647 }, { 0, 0 }, { 97,3647 }, { 98,3647 }, { 99,3647 }, { 100,3647 }, { 101,3647 }, { 102,3647 }, { 103,3647 }, { 104,3647 }, { 105,3647 }, { 106,3647 }, { 107,3647 }, { 108,3647 }, { 109,3647 }, { 110,3647 }, { 111,3647 }, { 112,3647 }, { 113,3647 }, { 114,3647 }, { 115,3647 }, { 116,3647 }, { 117,3647 }, { 118,3647 }, { 119,3647 }, { 120,3647 }, { 121,3647 }, { 122,3647 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,3647 }, { 129,3647 }, { 130,3647 }, { 131,3647 }, { 132,3647 }, { 133,3647 }, { 134,3647 }, { 135,3647 }, { 136,3647 }, { 137,3647 }, { 138,3647 }, { 139,3647 }, { 140,3647 }, { 141,3647 }, { 142,3647 }, { 143,3647 }, { 144,3647 }, { 145,3647 }, { 146,3647 }, { 147,3647 }, { 148,3647 }, { 149,3647 }, { 150,3647 }, { 151,3647 }, { 152,3647 }, { 153,3647 }, { 154,3647 }, { 155,3647 }, { 156,3647 }, { 157,3647 }, { 158,3647 }, { 159,3647 }, { 160,3647 }, { 161,3647 }, { 162,3647 }, { 163,3647 }, { 164,3647 }, { 165,3647 }, { 166,3647 }, { 167,3647 }, { 168,3647 }, { 169,3647 }, { 170,3647 }, { 171,3647 }, { 172,3647 }, { 173,3647 }, { 174,3647 }, { 175,3647 }, { 176,3647 }, { 177,3647 }, { 178,3647 }, { 179,3647 }, { 180,3647 }, { 181,3647 }, { 182,3647 }, { 183,3647 }, { 184,3647 }, { 185,3647 }, { 186,3647 }, { 187,3647 }, { 188,3647 }, { 189,3647 }, { 190,3647 }, { 191,3647 }, { 192,3647 }, { 193,3647 }, { 194,3647 }, { 195,3647 }, { 196,3647 }, { 197,3647 }, { 198,3647 }, { 199,3647 }, { 200,3647 }, { 201,3647 }, { 202,3647 }, { 203,3647 }, { 204,3647 }, { 205,3647 }, { 206,3647 }, { 207,3647 }, { 208,3647 }, { 209,3647 }, { 210,3647 }, { 211,3647 }, { 212,3647 }, { 213,3647 }, { 214,3647 }, { 215,3647 }, { 216,3647 }, { 217,3647 }, { 218,3647 }, { 219,3647 }, { 220,3647 }, { 221,3647 }, { 222,3647 }, { 223,3647 }, { 224,3647 }, { 225,3647 }, { 226,3647 }, { 227,3647 }, { 228,3647 }, { 229,3647 }, { 230,3647 }, { 231,3647 }, { 232,3647 }, { 233,3647 }, { 234,3647 }, { 235,3647 }, { 236,3647 }, { 237,3647 }, { 238,3647 }, { 239,3647 }, { 240,3647 }, { 241,3647 }, { 242,3647 }, { 243,3647 }, { 244,3647 }, { 245,3647 }, { 246,3647 }, { 247,3647 }, { 248,3647 }, { 249,3647 }, { 250,3647 }, { 251,3647 }, { 252,3647 }, { 253,3647 }, { 254,3647 }, { 255,3647 }, { 0, 56 }, { 0,5873 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 54 }, { 0,5862 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 57 }, { 0,5845 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33, 0 }, { 0, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42, 0 }, { 43, 0 }, { 33, -11 }, { 45, 0 }, { 35, -11 }, { 47, 0 }, { 37, -11 }, { 38, -11 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42, -11 }, { 43, -11 }, { 0, 0 }, { 45, -11 }, { 0, 0 }, { 47, -11 }, { 0, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60, -11 }, { 61, -11 }, { 62, -11 }, { 63, -11 }, { 64, -11 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 34 }, { 0,5782 }, { 0, 0 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94, -11 }, { 0, 0 }, { 96, -11 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, 0 }, { 0, 0 }, { 126, 0 }, { 36,-5323 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, -11 }, { 0, 0 }, { 126, -11 }, { 0, 0 }, { 48,3638 }, { 49,3638 }, { 50,3638 }, { 51,3638 }, { 52,3638 }, { 53,3638 }, { 54,3638 }, { 55,3638 }, { 56,3638 }, { 57,3638 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,3638 }, { 66,3638 }, { 67,3638 }, { 68,3638 }, { 69,3638 }, { 70,3638 }, { 71,3638 }, { 72,3638 }, { 73,3638 }, { 74,3638 }, { 75,3638 }, { 76,3638 }, { 77,3638 }, { 78,3638 }, { 79,3638 }, { 80,3638 }, { 81,3638 }, { 82,3638 }, { 83,3638 }, { 84,3638 }, { 85,3638 }, { 86,3638 }, { 87,3638 }, { 88,3638 }, { 89,3638 }, { 90,3638 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,3638 }, { 0, 0 }, { 97,3638 }, { 98,3638 }, { 99,3638 }, { 100,3638 }, { 101,3638 }, { 102,3638 }, { 103,3638 }, { 104,3638 }, { 105,3638 }, { 106,3638 }, { 107,3638 }, { 108,3638 }, { 109,3638 }, { 110,3638 }, { 111,3638 }, { 112,3638 }, { 113,3638 }, { 114,3638 }, { 115,3638 }, { 116,3638 }, { 117,3638 }, { 118,3638 }, { 119,3638 }, { 120,3638 }, { 121,3638 }, { 122,3638 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,3638 }, { 129,3638 }, { 130,3638 }, { 131,3638 }, { 132,3638 }, { 133,3638 }, { 134,3638 }, { 135,3638 }, { 136,3638 }, { 137,3638 }, { 138,3638 }, { 139,3638 }, { 140,3638 }, { 141,3638 }, { 142,3638 }, { 143,3638 }, { 144,3638 }, { 145,3638 }, { 146,3638 }, { 147,3638 }, { 148,3638 }, { 149,3638 }, { 150,3638 }, { 151,3638 }, { 152,3638 }, { 153,3638 }, { 154,3638 }, { 155,3638 }, { 156,3638 }, { 157,3638 }, { 158,3638 }, { 159,3638 }, { 160,3638 }, { 161,3638 }, { 162,3638 }, { 163,3638 }, { 164,3638 }, { 165,3638 }, { 166,3638 }, { 167,3638 }, { 168,3638 }, { 169,3638 }, { 170,3638 }, { 171,3638 }, { 172,3638 }, { 173,3638 }, { 174,3638 }, { 175,3638 }, { 176,3638 }, { 177,3638 }, { 178,3638 }, { 179,3638 }, { 180,3638 }, { 181,3638 }, { 182,3638 }, { 183,3638 }, { 184,3638 }, { 185,3638 }, { 186,3638 }, { 187,3638 }, { 188,3638 }, { 189,3638 }, { 190,3638 }, { 191,3638 }, { 192,3638 }, { 193,3638 }, { 194,3638 }, { 195,3638 }, { 196,3638 }, { 197,3638 }, { 198,3638 }, { 199,3638 }, { 200,3638 }, { 201,3638 }, { 202,3638 }, { 203,3638 }, { 204,3638 }, { 205,3638 }, { 206,3638 }, { 207,3638 }, { 208,3638 }, { 209,3638 }, { 210,3638 }, { 211,3638 }, { 212,3638 }, { 213,3638 }, { 214,3638 }, { 215,3638 }, { 216,3638 }, { 217,3638 }, { 218,3638 }, { 219,3638 }, { 220,3638 }, { 221,3638 }, { 222,3638 }, { 223,3638 }, { 224,3638 }, { 225,3638 }, { 226,3638 }, { 227,3638 }, { 228,3638 }, { 229,3638 }, { 230,3638 }, { 231,3638 }, { 232,3638 }, { 233,3638 }, { 234,3638 }, { 235,3638 }, { 236,3638 }, { 237,3638 }, { 238,3638 }, { 239,3638 }, { 240,3638 }, { 241,3638 }, { 242,3638 }, { 243,3638 }, { 244,3638 }, { 245,3638 }, { 246,3638 }, { 247,3638 }, { 248,3638 }, { 249,3638 }, { 250,3638 }, { 251,3638 }, { 252,3638 }, { 253,3638 }, { 254,3638 }, { 255,3638 }, { 0, 2 }, { 0,5525 }, { 1,3638 }, { 2,3638 }, { 3,3638 }, { 4,3638 }, { 5,3638 }, { 6,3638 }, { 7,3638 }, { 8,3638 }, { 9,3638 }, { 0, 0 }, { 11,3638 }, { 12,3638 }, { 0, 0 }, { 14,3638 }, { 15,3638 }, { 16,3638 }, { 17,3638 }, { 18,3638 }, { 19,3638 }, { 20,3638 }, { 21,3638 }, { 22,3638 }, { 23,3638 }, { 24,3638 }, { 25,3638 }, { 26,3638 }, { 27,3638 }, { 28,3638 }, { 29,3638 }, { 30,3638 }, { 31,3638 }, { 32,3638 }, { 33,3896 }, { 34,3638 }, { 35,3896 }, { 36,3638 }, { 37,3896 }, { 38,3896 }, { 39,3638 }, { 40,3638 }, { 41,3638 }, { 42,3896 }, { 43,3896 }, { 44,3638 }, { 45,3896 }, { 46,3638 }, { 47,3896 }, { 48,3638 }, { 49,3638 }, { 50,3638 }, { 51,3638 }, { 52,3638 }, { 53,3638 }, { 54,3638 }, { 55,3638 }, { 56,3638 }, { 57,3638 }, { 58,3638 }, { 59,3638 }, { 60,3896 }, { 61,3896 }, { 62,3896 }, { 63,3896 }, { 64,3896 }, { 65,3638 }, { 66,3638 }, { 67,3638 }, { 68,3638 }, { 69,3638 }, { 70,3638 }, { 71,3638 }, { 72,3638 }, { 73,3638 }, { 74,3638 }, { 75,3638 }, { 76,3638 }, { 77,3638 }, { 78,3638 }, { 79,3638 }, { 80,3638 }, { 81,3638 }, { 82,3638 }, { 83,3638 }, { 84,3638 }, { 85,3638 }, { 86,3638 }, { 87,3638 }, { 88,3638 }, { 89,3638 }, { 90,3638 }, { 91,3638 }, { 92,3638 }, { 93,3638 }, { 94,3896 }, { 95,3638 }, { 96,3896 }, { 97,3638 }, { 98,3638 }, { 99,3638 }, { 100,3638 }, { 101,3638 }, { 102,3638 }, { 103,3638 }, { 104,3638 }, { 105,3638 }, { 106,3638 }, { 107,3638 }, { 108,3638 }, { 109,3638 }, { 110,3638 }, { 111,3638 }, { 112,3638 }, { 113,3638 }, { 114,3638 }, { 115,3638 }, { 116,3638 }, { 117,3638 }, { 118,3638 }, { 119,3638 }, { 120,3638 }, { 121,3638 }, { 122,3638 }, { 123,3638 }, { 124,3896 }, { 125,3638 }, { 126,3896 }, { 127,3638 }, { 128,3638 }, { 129,3638 }, { 130,3638 }, { 131,3638 }, { 132,3638 }, { 133,3638 }, { 134,3638 }, { 135,3638 }, { 136,3638 }, { 137,3638 }, { 138,3638 }, { 139,3638 }, { 140,3638 }, { 141,3638 }, { 142,3638 }, { 143,3638 }, { 144,3638 }, { 145,3638 }, { 146,3638 }, { 147,3638 }, { 148,3638 }, { 149,3638 }, { 150,3638 }, { 151,3638 }, { 152,3638 }, { 153,3638 }, { 154,3638 }, { 155,3638 }, { 156,3638 }, { 157,3638 }, { 158,3638 }, { 159,3638 }, { 160,3638 }, { 161,3638 }, { 162,3638 }, { 163,3638 }, { 164,3638 }, { 165,3638 }, { 166,3638 }, { 167,3638 }, { 168,3638 }, { 169,3638 }, { 170,3638 }, { 171,3638 }, { 172,3638 }, { 173,3638 }, { 174,3638 }, { 175,3638 }, { 176,3638 }, { 177,3638 }, { 178,3638 }, { 179,3638 }, { 180,3638 }, { 181,3638 }, { 182,3638 }, { 183,3638 }, { 184,3638 }, { 185,3638 }, { 186,3638 }, { 187,3638 }, { 188,3638 }, { 189,3638 }, { 190,3638 }, { 191,3638 }, { 192,3638 }, { 193,3638 }, { 194,3638 }, { 195,3638 }, { 196,3638 }, { 197,3638 }, { 198,3638 }, { 199,3638 }, { 200,3638 }, { 201,3638 }, { 202,3638 }, { 203,3638 }, { 204,3638 }, { 205,3638 }, { 206,3638 }, { 207,3638 }, { 208,3638 }, { 209,3638 }, { 210,3638 }, { 211,3638 }, { 212,3638 }, { 213,3638 }, { 214,3638 }, { 215,3638 }, { 216,3638 }, { 217,3638 }, { 218,3638 }, { 219,3638 }, { 220,3638 }, { 221,3638 }, { 222,3638 }, { 223,3638 }, { 224,3638 }, { 225,3638 }, { 226,3638 }, { 227,3638 }, { 228,3638 }, { 229,3638 }, { 230,3638 }, { 231,3638 }, { 232,3638 }, { 233,3638 }, { 234,3638 }, { 235,3638 }, { 236,3638 }, { 237,3638 }, { 238,3638 }, { 239,3638 }, { 240,3638 }, { 241,3638 }, { 242,3638 }, { 243,3638 }, { 244,3638 }, { 245,3638 }, { 246,3638 }, { 247,3638 }, { 248,3638 }, { 249,3638 }, { 250,3638 }, { 251,3638 }, { 252,3638 }, { 253,3638 }, { 254,3638 }, { 255,3638 }, { 256,3638 }, { 0, 59 }, { 0,5267 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 3 }, { 0,5242 }, { 0, 59 }, { 0,5240 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 33,3871 }, { 0, 0 }, { 35,3871 }, { 0, 0 }, { 37,3871 }, { 38,3871 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,3871 }, { 43,3871 }, { 69, 113 }, { 45,3871 }, { 0, 0 }, { 47,3871 }, { 46,-5589 }, { 0, 0 }, { 48,3871 }, { 49,3871 }, { 50,3871 }, { 51,3871 }, { 52,3871 }, { 53,3871 }, { 54,3871 }, { 55,3871 }, { 56,3871 }, { 57,3871 }, { 60,3871 }, { 61,3871 }, { 62,3871 }, { 63,3871 }, { 64,3871 }, { 0, 58 }, { 0,5176 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 69, 86 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 101, 113 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 62 }, { 0,5154 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,3871 }, { 0, 0 }, { 96,3871 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 101, 86 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 46, -64 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 124,3871 }, { 0, 0 }, { 126,3871 }, { 0, 51 }, { 0,5114 }, { 0, 0 }, { 0, 0 }, { 43,3807 }, { 0, 0 }, { 45,3807 }, { 0, 0 }, { 69, 22 }, { 48,3849 }, { 49,3849 }, { 50,3849 }, { 51,3849 }, { 52,3849 }, { 53,3849 }, { 54,3849 }, { 55,3849 }, { 56,3849 }, { 57,3849 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,-759 }, { 0, 0 }, { 35,-759 }, { 0, 0 }, { 37,-759 }, { 38,-759 }, { 101, 22 }, { 0, 53 }, { 0,5073 }, { 42,-759 }, { 43,-759 }, { 0, 0 }, { 45,-759 }, { 0, 0 }, { 47,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-759 }, { 61,-759 }, { 62,-759 }, { 63,-759 }, { 64,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,-800 }, { 0, 0 }, { 35,-800 }, { 0, 0 }, { 37,-800 }, { 38,-800 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-800 }, { 43,-800 }, { 0, 0 }, { 45,-800 }, { 0, 0 }, { 47,-800 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-759 }, { 0, 0 }, { 96,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-800 }, { 61,-800 }, { 62,-800 }, { 63,-800 }, { 64,-800 }, { 0, 0 }, { 0, 50 }, { 0,5006 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 52 }, { 0,4995 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,-759 }, { 0, 0 }, { 126,-759 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-800 }, { 0, 0 }, { 96,-800 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,-867 }, { 0, 0 }, { 35,-867 }, { 0, 0 }, { 37,-867 }, { 38,-867 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-867 }, { 43,-867 }, { 33,-878 }, { 45,-867 }, { 35,-878 }, { 47,-867 }, { 37,-878 }, { 38,-878 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,-878 }, { 43,-878 }, { 0, 0 }, { 45,-878 }, { 124,-800 }, { 47,-878 }, { 126,-800 }, { 60,-867 }, { 61,-867 }, { 62,-867 }, { 63,-867 }, { 64,-867 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,-878 }, { 61,-878 }, { 62,-878 }, { 63,-878 }, { 64,-878 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 64 }, { 0,4915 }, { 0, 0 }, { 0, 0 }, { 94,-867 }, { 0, 0 }, { 96,-867 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,-878 }, { 0, 0 }, { 96,-878 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,-867 }, { 0, 0 }, { 126,-867 }, { 36, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,-878 }, { 0, 0 }, { 126,-878 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 63,-6165 }, { 0, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 0 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 0, 11 }, { 0,4658 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 6 }, { 0,4400 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 0, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 4 }, { 0,4142 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33,2863 }, { 0, 0 }, { 35,2863 }, { 0, 0 }, { 37,2863 }, { 38,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42,2863 }, { 43,2863 }, { 0, 0 }, { 45,2863 }, { 0, 0 }, { 47,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60,2863 }, { 61,2863 }, { 62,2863 }, { 63,2863 }, { 64,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94,2863 }, { 0, 0 }, { 96,2863 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124,2863 }, { 0, 0 }, { 126,2863 }, { 0, 44 }, { 0,4014 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 0, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 10 }, { 0,3756 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 22 }, { 0,3498 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 19 }, { 0,3240 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 19 }, { 0,3235 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 5 }, { 0, 0 }, { 12, 0 }, { 13, 5 }, { 9, 16 }, { 10, 16 }, { 0, 0 }, { 12, 16 }, { 13, 16 }, { 0, 0 }, { 0, 19 }, { 0,3219 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 9, 0 }, { 10, 0 }, { 32, 0 }, { 12, 0 }, { 13, 0 }, { 0, 0 }, { 0, 0 }, { 32, 16 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-7600 }, { 45,-7597 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-7602 }, { 0, 0 }, { 0, 0 }, { 32, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 39,-7616 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 45,-7618 }, { 0, 23 }, { 0,3172 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 0, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 30 }, { 0,2914 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,2906 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,2883 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1652 }, { 49,1652 }, { 50,1652 }, { 51,1652 }, { 52,1652 }, { 53,1652 }, { 54,1652 }, { 55,1652 }, { 48,1676 }, { 49,1676 }, { 50,1676 }, { 51,1676 }, { 52,1676 }, { 53,1676 }, { 54,1676 }, { 55,1676 }, { 56,1676 }, { 57,1676 }, { 0, 0 }, { 0, 0 }, { 0, 29 }, { 0,2845 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1676 }, { 66,1676 }, { 67,1676 }, { 68,1676 }, { 69,1676 }, { 70,1676 }, { 48,1691 }, { 49,1691 }, { 50,1691 }, { 51,1691 }, { 52,1691 }, { 53,1691 }, { 54,1691 }, { 55,1691 }, { 56,1691 }, { 57,1691 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1691 }, { 66,1691 }, { 67,1691 }, { 68,1691 }, { 69,1691 }, { 70,1691 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1676 }, { 98,1676 }, { 99,1676 }, { 100,1676 }, { 101,1676 }, { 102,1676 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1676 }, { 49,1676 }, { 50,1676 }, { 51,1676 }, { 52,1676 }, { 53,1676 }, { 54,1676 }, { 55,1676 }, { 56,1676 }, { 57,1676 }, { 0, 0 }, { 97,1691 }, { 98,1691 }, { 99,1691 }, { 100,1691 }, { 101,1691 }, { 102,1691 }, { 65,1676 }, { 66,1676 }, { 67,1676 }, { 68,1676 }, { 69,1676 }, { 70,1676 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1676 }, { 98,1676 }, { 99,1676 }, { 100,1676 }, { 101,1676 }, { 102,1676 }, { 0, 36 }, { 0,2741 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 10, 0 }, { 11, 0 }, { 12, 0 }, { 13, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 37 }, { 0,2483 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,-8348 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1373 }, { 49,1373 }, { 50,1373 }, { 51,1373 }, { 52,1373 }, { 53,1373 }, { 54,1373 }, { 55,1373 }, { 56,1373 }, { 57,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1373 }, { 66,1373 }, { 67,1373 }, { 68,1373 }, { 69,1373 }, { 70,1373 }, { 71,1373 }, { 72,1373 }, { 73,1373 }, { 74,1373 }, { 75,1373 }, { 76,1373 }, { 77,1373 }, { 78,1373 }, { 79,1373 }, { 80,1373 }, { 81,1373 }, { 82,1373 }, { 83,1373 }, { 84,1373 }, { 85,1373 }, { 86,1373 }, { 87,1373 }, { 88,1373 }, { 89,1373 }, { 90,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95,1373 }, { 0, 0 }, { 97,1373 }, { 98,1373 }, { 99,1373 }, { 100,1373 }, { 101,1373 }, { 102,1373 }, { 103,1373 }, { 104,1373 }, { 105,1373 }, { 106,1373 }, { 107,1373 }, { 108,1373 }, { 109,1373 }, { 110,1373 }, { 111,1373 }, { 112,1373 }, { 113,1373 }, { 114,1373 }, { 115,1373 }, { 116,1373 }, { 117,1373 }, { 118,1373 }, { 119,1373 }, { 120,1373 }, { 121,1373 }, { 122,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128,1373 }, { 129,1373 }, { 130,1373 }, { 131,1373 }, { 132,1373 }, { 133,1373 }, { 134,1373 }, { 135,1373 }, { 136,1373 }, { 137,1373 }, { 138,1373 }, { 139,1373 }, { 140,1373 }, { 141,1373 }, { 142,1373 }, { 143,1373 }, { 144,1373 }, { 145,1373 }, { 146,1373 }, { 147,1373 }, { 148,1373 }, { 149,1373 }, { 150,1373 }, { 151,1373 }, { 152,1373 }, { 153,1373 }, { 154,1373 }, { 155,1373 }, { 156,1373 }, { 157,1373 }, { 158,1373 }, { 159,1373 }, { 160,1373 }, { 161,1373 }, { 162,1373 }, { 163,1373 }, { 164,1373 }, { 165,1373 }, { 166,1373 }, { 167,1373 }, { 168,1373 }, { 169,1373 }, { 170,1373 }, { 171,1373 }, { 172,1373 }, { 173,1373 }, { 174,1373 }, { 175,1373 }, { 176,1373 }, { 177,1373 }, { 178,1373 }, { 179,1373 }, { 180,1373 }, { 181,1373 }, { 182,1373 }, { 183,1373 }, { 184,1373 }, { 185,1373 }, { 186,1373 }, { 187,1373 }, { 188,1373 }, { 189,1373 }, { 190,1373 }, { 191,1373 }, { 192,1373 }, { 193,1373 }, { 194,1373 }, { 195,1373 }, { 196,1373 }, { 197,1373 }, { 198,1373 }, { 199,1373 }, { 200,1373 }, { 201,1373 }, { 202,1373 }, { 203,1373 }, { 204,1373 }, { 205,1373 }, { 206,1373 }, { 207,1373 }, { 208,1373 }, { 209,1373 }, { 210,1373 }, { 211,1373 }, { 212,1373 }, { 213,1373 }, { 214,1373 }, { 215,1373 }, { 216,1373 }, { 217,1373 }, { 218,1373 }, { 219,1373 }, { 220,1373 }, { 221,1373 }, { 222,1373 }, { 223,1373 }, { 224,1373 }, { 225,1373 }, { 226,1373 }, { 227,1373 }, { 228,1373 }, { 229,1373 }, { 230,1373 }, { 231,1373 }, { 232,1373 }, { 233,1373 }, { 234,1373 }, { 235,1373 }, { 236,1373 }, { 237,1373 }, { 238,1373 }, { 239,1373 }, { 240,1373 }, { 241,1373 }, { 242,1373 }, { 243,1373 }, { 244,1373 }, { 245,1373 }, { 246,1373 }, { 247,1373 }, { 248,1373 }, { 249,1373 }, { 250,1373 }, { 251,1373 }, { 252,1373 }, { 253,1373 }, { 254,1373 }, { 255,1373 }, { 0, 28 }, { 0,2226 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,2203 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,1373 }, { 49,1373 }, { 50,1373 }, { 51,1373 }, { 52,1373 }, { 53,1373 }, { 54,1373 }, { 55,1373 }, { 56,1373 }, { 57,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1373 }, { 66,1373 }, { 67,1373 }, { 68,1373 }, { 69,1373 }, { 70,1373 }, { 48,1373 }, { 49,1373 }, { 50,1373 }, { 51,1373 }, { 52,1373 }, { 53,1373 }, { 54,1373 }, { 55,1373 }, { 56,1373 }, { 57,1373 }, { 0, 34 }, { 0,2144 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,1373 }, { 66,1373 }, { 67,1373 }, { 68,1373 }, { 69,1373 }, { 70,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,1373 }, { 98,1373 }, { 99,1373 }, { 100,1373 }, { 101,1373 }, { 102,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,-8961 }, { 0, 0 }, { 97,1373 }, { 98,1373 }, { 99,1373 }, { 100,1373 }, { 101,1373 }, { 102,1373 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 0 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 0, 2 }, { 0,1887 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 }, { 8, 0 }, { 9, 0 }, { 0, 0 }, { 11, 0 }, { 12, 0 }, { 0, 0 }, { 14, 0 }, { 15, 0 }, { 16, 0 }, { 17, 0 }, { 18, 0 }, { 19, 0 }, { 20, 0 }, { 21, 0 }, { 22, 0 }, { 23, 0 }, { 24, 0 }, { 25, 0 }, { 26, 0 }, { 27, 0 }, { 28, 0 }, { 29, 0 }, { 30, 0 }, { 31, 0 }, { 32, 0 }, { 33, 0 }, { 34, 0 }, { 35, 0 }, { 36, 0 }, { 37, 0 }, { 38, 0 }, { 39, 0 }, { 40, 0 }, { 41, 0 }, { 42, 0 }, { 43, 0 }, { 44, 0 }, { 45, 0 }, { 46, 0 }, { 47, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 58, 0 }, { 59, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 91, 0 }, { 92, 0 }, { 93, 0 }, { 94, 0 }, { 95, 0 }, { 96, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 123, 0 }, { 124, 0 }, { 125, 0 }, { 126, 0 }, { 127, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 256, 0 }, { 0, 2 }, { 0,1629 }, { 1,-258 }, { 2,-258 }, { 3,-258 }, { 4,-258 }, { 5,-258 }, { 6,-258 }, { 7,-258 }, { 8,-258 }, { 9,-258 }, { 0, 0 }, { 11,-258 }, { 12,-258 }, { 0, 0 }, { 14,-258 }, { 15,-258 }, { 16,-258 }, { 17,-258 }, { 18,-258 }, { 19,-258 }, { 20,-258 }, { 21,-258 }, { 22,-258 }, { 23,-258 }, { 24,-258 }, { 25,-258 }, { 26,-258 }, { 27,-258 }, { 28,-258 }, { 29,-258 }, { 30,-258 }, { 31,-258 }, { 32,-258 }, { 33, 0 }, { 34,-258 }, { 35, 0 }, { 36,-258 }, { 37, 0 }, { 38, 0 }, { 39,-258 }, { 40,-258 }, { 41,-258 }, { 42, 0 }, { 43, 0 }, { 44,-258 }, { 45, 0 }, { 46,-258 }, { 47, 0 }, { 48,-258 }, { 49,-258 }, { 50,-258 }, { 51,-258 }, { 52,-258 }, { 53,-258 }, { 54,-258 }, { 55,-258 }, { 56,-258 }, { 57,-258 }, { 58,-258 }, { 59,-258 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 65,-258 }, { 66,-258 }, { 67,-258 }, { 68,-258 }, { 69,-258 }, { 70,-258 }, { 71,-258 }, { 72,-258 }, { 73,-258 }, { 74,-258 }, { 75,-258 }, { 76,-258 }, { 77,-258 }, { 78,-258 }, { 79,-258 }, { 80,-258 }, { 81,-258 }, { 82,-258 }, { 83,-258 }, { 84,-258 }, { 85,-258 }, { 86,-258 }, { 87,-258 }, { 88,-258 }, { 89,-258 }, { 90,-258 }, { 91,-258 }, { 92,-258 }, { 93,-258 }, { 94, 0 }, { 95,-258 }, { 96, 0 }, { 97,-258 }, { 98,-258 }, { 99,-258 }, { 100,-258 }, { 101,-258 }, { 102,-258 }, { 103,-258 }, { 104,-258 }, { 105,-258 }, { 106,-258 }, { 107,-258 }, { 108,-258 }, { 109,-258 }, { 110,-258 }, { 111,-258 }, { 112,-258 }, { 113,-258 }, { 114,-258 }, { 115,-258 }, { 116,-258 }, { 117,-258 }, { 118,-258 }, { 119,-258 }, { 120,-258 }, { 121,-258 }, { 122,-258 }, { 123,-258 }, { 124, 0 }, { 125,-258 }, { 126, 0 }, { 127,-258 }, { 128,-258 }, { 129,-258 }, { 130,-258 }, { 131,-258 }, { 132,-258 }, { 133,-258 }, { 134,-258 }, { 135,-258 }, { 136,-258 }, { 137,-258 }, { 138,-258 }, { 139,-258 }, { 140,-258 }, { 141,-258 }, { 142,-258 }, { 143,-258 }, { 144,-258 }, { 145,-258 }, { 146,-258 }, { 147,-258 }, { 148,-258 }, { 149,-258 }, { 150,-258 }, { 151,-258 }, { 152,-258 }, { 153,-258 }, { 154,-258 }, { 155,-258 }, { 156,-258 }, { 157,-258 }, { 158,-258 }, { 159,-258 }, { 160,-258 }, { 161,-258 }, { 162,-258 }, { 163,-258 }, { 164,-258 }, { 165,-258 }, { 166,-258 }, { 167,-258 }, { 168,-258 }, { 169,-258 }, { 170,-258 }, { 171,-258 }, { 172,-258 }, { 173,-258 }, { 174,-258 }, { 175,-258 }, { 176,-258 }, { 177,-258 }, { 178,-258 }, { 179,-258 }, { 180,-258 }, { 181,-258 }, { 182,-258 }, { 183,-258 }, { 184,-258 }, { 185,-258 }, { 186,-258 }, { 187,-258 }, { 188,-258 }, { 189,-258 }, { 190,-258 }, { 191,-258 }, { 192,-258 }, { 193,-258 }, { 194,-258 }, { 195,-258 }, { 196,-258 }, { 197,-258 }, { 198,-258 }, { 199,-258 }, { 200,-258 }, { 201,-258 }, { 202,-258 }, { 203,-258 }, { 204,-258 }, { 205,-258 }, { 206,-258 }, { 207,-258 }, { 208,-258 }, { 209,-258 }, { 210,-258 }, { 211,-258 }, { 212,-258 }, { 213,-258 }, { 214,-258 }, { 215,-258 }, { 216,-258 }, { 217,-258 }, { 218,-258 }, { 219,-258 }, { 220,-258 }, { 221,-258 }, { 222,-258 }, { 223,-258 }, { 224,-258 }, { 225,-258 }, { 226,-258 }, { 227,-258 }, { 228,-258 }, { 229,-258 }, { 230,-258 }, { 231,-258 }, { 232,-258 }, { 233,-258 }, { 234,-258 }, { 235,-258 }, { 236,-258 }, { 237,-258 }, { 238,-258 }, { 239,-258 }, { 240,-258 }, { 241,-258 }, { 242,-258 }, { 243,-258 }, { 244,-258 }, { 245,-258 }, { 246,-258 }, { 247,-258 }, { 248,-258 }, { 249,-258 }, { 250,-258 }, { 251,-258 }, { 252,-258 }, { 253,-258 }, { 254,-258 }, { 255,-258 }, { 256,-258 }, { 0, 3 }, { 0,1371 }, { 0, 59 }, { 0,1369 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 63 }, { 0,1347 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 33, 0 }, { 0, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42, 0 }, { 43, 0 }, { 0, 0 }, { 45, 0 }, { 0, 0 }, { 47, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 0, 61 }, { 0,1305 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 69,-3785 }, { 48, 42 }, { 49, 42 }, { 50, 42 }, { 51, 42 }, { 52, 42 }, { 53, 42 }, { 54, 42 }, { 55, 42 }, { 56, 42 }, { 57, 42 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 4 }, { 0,1279 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 101,-3785 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 30 }, { 0,1262 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 124, 0 }, { 33, 0 }, { 126, 0 }, { 35, 0 }, { 0, 0 }, { 37, 0 }, { 38, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 42, 0 }, { 43, 0 }, { 0, 0 }, { 45, 0 }, { 0, 0 }, { 47, 0 }, { 0, 28 }, { 0,1230 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 60, 0 }, { 61, 0 }, { 62, 0 }, { 63, 0 }, { 64, 0 }, { 48,-9542 }, { 49,-9542 }, { 50,-9542 }, { 51,-9542 }, { 52,-9542 }, { 53,-9542 }, { 54,-9542 }, { 55,-9542 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0,1192 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 94, 0 }, { 0, 0 }, { 96, 0 }, { 48, 438 }, { 49, 438 }, { 50, 438 }, { 51, 438 }, { 52, 438 }, { 53, 438 }, { 54, 438 }, { 55, 438 }, { 56, 438 }, { 57, 438 }, { 0, 0 }, { 0, 0 }, { 0, 31 }, { 0,1169 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 438 }, { 66, 438 }, { 67, 438 }, { 68, 438 }, { 69, 438 }, { 70, 438 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 124, 0 }, { 0, 0 }, { 126, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 423 }, { 49, 423 }, { 50, 423 }, { 51, 423 }, { 52, 423 }, { 53, 423 }, { 54, 423 }, { 55, 423 }, { 56, 423 }, { 57, 423 }, { 0, 0 }, { 97, 438 }, { 98, 438 }, { 99, 438 }, { 100, 438 }, { 101, 438 }, { 102, 438 }, { 65, 423 }, { 66, 423 }, { 67, 423 }, { 68, 423 }, { 69, 423 }, { 70, 423 }, { 48,-9621 }, { 49,-9621 }, { 50,-9621 }, { 51,-9621 }, { 52,-9621 }, { 53,-9621 }, { 54,-9621 }, { 55,-9621 }, { 56,-9621 }, { 57,-9621 }, { 0, 37 }, { 0,1110 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-9621 }, { 66,-9621 }, { 67,-9621 }, { 68,-9621 }, { 69,-9621 }, { 70,-9621 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 423 }, { 98, 423 }, { 99, 423 }, { 100, 423 }, { 101, 423 }, { 102, 423 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 36,-9721 }, { 0, 0 }, { 97,-9621 }, { 98,-9621 }, { 99,-9621 }, { 100,-9621 }, { 101,-9621 }, { 102,-9621 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 0 }, { 49, 0 }, { 50, 0 }, { 51, 0 }, { 52, 0 }, { 53, 0 }, { 54, 0 }, { 55, 0 }, { 56, 0 }, { 57, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 0 }, { 66, 0 }, { 67, 0 }, { 68, 0 }, { 69, 0 }, { 70, 0 }, { 71, 0 }, { 72, 0 }, { 73, 0 }, { 74, 0 }, { 75, 0 }, { 76, 0 }, { 77, 0 }, { 78, 0 }, { 79, 0 }, { 80, 0 }, { 81, 0 }, { 82, 0 }, { 83, 0 }, { 84, 0 }, { 85, 0 }, { 86, 0 }, { 87, 0 }, { 88, 0 }, { 89, 0 }, { 90, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 95, 0 }, { 0, 0 }, { 97, 0 }, { 98, 0 }, { 99, 0 }, { 100, 0 }, { 101, 0 }, { 102, 0 }, { 103, 0 }, { 104, 0 }, { 105, 0 }, { 106, 0 }, { 107, 0 }, { 108, 0 }, { 109, 0 }, { 110, 0 }, { 111, 0 }, { 112, 0 }, { 113, 0 }, { 114, 0 }, { 115, 0 }, { 116, 0 }, { 117, 0 }, { 118, 0 }, { 119, 0 }, { 120, 0 }, { 121, 0 }, { 122, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 128, 0 }, { 129, 0 }, { 130, 0 }, { 131, 0 }, { 132, 0 }, { 133, 0 }, { 134, 0 }, { 135, 0 }, { 136, 0 }, { 137, 0 }, { 138, 0 }, { 139, 0 }, { 140, 0 }, { 141, 0 }, { 142, 0 }, { 143, 0 }, { 144, 0 }, { 145, 0 }, { 146, 0 }, { 147, 0 }, { 148, 0 }, { 149, 0 }, { 150, 0 }, { 151, 0 }, { 152, 0 }, { 153, 0 }, { 154, 0 }, { 155, 0 }, { 156, 0 }, { 157, 0 }, { 158, 0 }, { 159, 0 }, { 160, 0 }, { 161, 0 }, { 162, 0 }, { 163, 0 }, { 164, 0 }, { 165, 0 }, { 166, 0 }, { 167, 0 }, { 168, 0 }, { 169, 0 }, { 170, 0 }, { 171, 0 }, { 172, 0 }, { 173, 0 }, { 174, 0 }, { 175, 0 }, { 176, 0 }, { 177, 0 }, { 178, 0 }, { 179, 0 }, { 180, 0 }, { 181, 0 }, { 182, 0 }, { 183, 0 }, { 184, 0 }, { 185, 0 }, { 186, 0 }, { 187, 0 }, { 188, 0 }, { 189, 0 }, { 190, 0 }, { 191, 0 }, { 192, 0 }, { 193, 0 }, { 194, 0 }, { 195, 0 }, { 196, 0 }, { 197, 0 }, { 198, 0 }, { 199, 0 }, { 200, 0 }, { 201, 0 }, { 202, 0 }, { 203, 0 }, { 204, 0 }, { 205, 0 }, { 206, 0 }, { 207, 0 }, { 208, 0 }, { 209, 0 }, { 210, 0 }, { 211, 0 }, { 212, 0 }, { 213, 0 }, { 214, 0 }, { 215, 0 }, { 216, 0 }, { 217, 0 }, { 218, 0 }, { 219, 0 }, { 220, 0 }, { 221, 0 }, { 222, 0 }, { 223, 0 }, { 224, 0 }, { 225, 0 }, { 226, 0 }, { 227, 0 }, { 228, 0 }, { 229, 0 }, { 230, 0 }, { 231, 0 }, { 232, 0 }, { 233, 0 }, { 234, 0 }, { 235, 0 }, { 236, 0 }, { 237, 0 }, { 238, 0 }, { 239, 0 }, { 240, 0 }, { 241, 0 }, { 242, 0 }, { 243, 0 }, { 244, 0 }, { 245, 0 }, { 246, 0 }, { 247, 0 }, { 248, 0 }, { 249, 0 }, { 250, 0 }, { 251, 0 }, { 252, 0 }, { 253, 0 }, { 254, 0 }, { 255, 0 }, { 0, 28 }, { 0, 853 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 830 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 792 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 769 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 28 }, { 0, 710 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 28 }, { 0, 687 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 649 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 626 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 143 }, { 49, 143 }, { 50, 143 }, { 51, 143 }, { 52, 143 }, { 53, 143 }, { 54, 143 }, { 55, 143 }, { 56, 143 }, { 57, 143 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 65, 143 }, { 66, 143 }, { 67, 143 }, { 68, 143 }, { 69, 143 }, { 70, 143 }, { 48,-10162 }, { 49,-10162 }, { 50,-10162 }, { 51,-10162 }, { 52,-10162 }, { 53,-10162 }, { 54,-10162 }, { 55,-10162 }, { 56,-10162 }, { 57,-10162 }, { 0, 28 }, { 0, 567 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-10162 }, { 66,-10162 }, { 67,-10162 }, { 68,-10162 }, { 69,-10162 }, { 70,-10162 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 143 }, { 98, 143 }, { 99, 143 }, { 100, 143 }, { 101, 143 }, { 102, 143 }, { 0, 0 }, { 0, 28 }, { 0, 544 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-10162 }, { 98,-10162 }, { 99,-10162 }, { 100,-10162 }, { 101,-10162 }, { 102,-10162 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 84 }, { 49, 84 }, { 50, 84 }, { 51, 84 }, { 52, 84 }, { 53, 84 }, { 54, 84 }, { 55, 84 }, { 56, 84 }, { 57, 84 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 506 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 84 }, { 66, 84 }, { 67, 84 }, { 68, 84 }, { 69, 84 }, { 70, 84 }, { 48,-10242 }, { 49,-10242 }, { 50,-10242 }, { 51,-10242 }, { 52,-10242 }, { 53,-10242 }, { 54,-10242 }, { 55,-10242 }, { 56,-10242 }, { 57,-10242 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 483 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-10242 }, { 66,-10242 }, { 67,-10242 }, { 68,-10242 }, { 69,-10242 }, { 70,-10242 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 84 }, { 98, 84 }, { 99, 84 }, { 100, 84 }, { 101, 84 }, { 102, 84 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 82 }, { 49, 82 }, { 50, 82 }, { 51, 82 }, { 52, 82 }, { 53, 82 }, { 54, 82 }, { 55, 82 }, { 56, 82 }, { 57, 82 }, { 0, 0 }, { 97,-10242 }, { 98,-10242 }, { 99,-10242 }, { 100,-10242 }, { 101,-10242 }, { 102,-10242 }, { 65, 82 }, { 66, 82 }, { 67, 82 }, { 68, 82 }, { 69, 82 }, { 70, 82 }, { 48, 82 }, { 49, 82 }, { 50, 82 }, { 51, 82 }, { 52, 82 }, { 53, 82 }, { 54, 82 }, { 55, 82 }, { 56, 82 }, { 57, 82 }, { 0, 28 }, { 0, 424 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 82 }, { 66, 82 }, { 67, 82 }, { 68, 82 }, { 69, 82 }, { 70, 82 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 82 }, { 98, 82 }, { 99, 82 }, { 100, 82 }, { 101, 82 }, { 102, 82 }, { 0, 0 }, { 0, 28 }, { 0, 401 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 82 }, { 98, 82 }, { 99, 82 }, { 100, 82 }, { 101, 82 }, { 102, 82 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 61 }, { 49, 61 }, { 50, 61 }, { 51, 61 }, { 52, 61 }, { 53, 61 }, { 54, 61 }, { 55, 61 }, { 56, 61 }, { 57, 61 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 363 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 61 }, { 66, 61 }, { 67, 61 }, { 68, 61 }, { 69, 61 }, { 70, 61 }, { 48, 61 }, { 49, 61 }, { 50, 61 }, { 51, 61 }, { 52, 61 }, { 53, 61 }, { 54, 61 }, { 55, 61 }, { 56, 61 }, { 57, 61 }, { 0, 0 }, { 0, 0 }, { 0, 28 }, { 0, 340 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 61 }, { 66, 61 }, { 67, 61 }, { 68, 61 }, { 69, 61 }, { 70, 61 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 61 }, { 98, 61 }, { 99, 61 }, { 100, 61 }, { 101, 61 }, { 102, 61 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48, 82 }, { 49, 82 }, { 50, 82 }, { 51, 82 }, { 52, 82 }, { 53, 82 }, { 54, 82 }, { 55, 82 }, { 56, 82 }, { 57, 82 }, { 0, 0 }, { 97, 61 }, { 98, 61 }, { 99, 61 }, { 100, 61 }, { 101, 61 }, { 102, 61 }, { 65, 82 }, { 66, 82 }, { 67, 82 }, { 68, 82 }, { 69, 82 }, { 70, 82 }, { 48, 82 }, { 49, 82 }, { 50, 82 }, { 51, 82 }, { 52, 82 }, { 53, 82 }, { 54, 82 }, { 55, 82 }, { 56, 82 }, { 57, 82 }, { 0, 28 }, { 0, 281 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65, 82 }, { 66, 82 }, { 67, 82 }, { 68, 82 }, { 69, 82 }, { 70, 82 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 82 }, { 98, 82 }, { 99, 82 }, { 100, 82 }, { 101, 82 }, { 102, 82 }, { 0, 0 }, { 0, 28 }, { 0, 258 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97, 82 }, { 98, 82 }, { 99, 82 }, { 100, 82 }, { 101, 82 }, { 102, 82 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 48,-10507 }, { 49,-10507 }, { 50,-10507 }, { 51,-10507 }, { 52,-10507 }, { 53,-10507 }, { 54,-10507 }, { 55,-10507 }, { 56,-10507 }, { 57,-10507 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-10507 }, { 66,-10507 }, { 67,-10507 }, { 68,-10507 }, { 69,-10507 }, { 70,-10507 }, { 48,-10528 }, { 49,-10528 }, { 50,-10528 }, { 51,-10528 }, { 52,-10528 }, { 53,-10528 }, { 54,-10528 }, { 55,-10528 }, { 56,-10528 }, { 57,-10528 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 65,-10528 }, { 66,-10528 }, { 67,-10528 }, { 68,-10528 }, { 69,-10528 }, { 70,-10528 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-10507 }, { 98,-10507 }, { 99,-10507 }, { 100,-10507 }, { 101,-10507 }, { 102,-10507 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 97,-10528 }, { 98,-10528 }, { 99,-10528 }, { 100,-10528 }, { 101,-10528 }, { 102,-10528 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 257, 67 }, { 1, 0 }, }; static __thread yyconst struct yy_trans_info *yy_start_state_list[25] = { &yy_transition[1], &yy_transition[3], &yy_transition[261], &yy_transition[519], &yy_transition[777], &yy_transition[1035], &yy_transition[1293], &yy_transition[1551], &yy_transition[1809], &yy_transition[2067], &yy_transition[2325], &yy_transition[2583], &yy_transition[2841], &yy_transition[3099], &yy_transition[3357], &yy_transition[3615], &yy_transition[3873], &yy_transition[4131], &yy_transition[4389], &yy_transition[4647], &yy_transition[4905], &yy_transition[5163], &yy_transition[5421], &yy_transition[5679], &yy_transition[5937], } ; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET #line 1 "scan.l" #line 46 "scan.l" /* LCOV_EXCL_START */ /* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ #undef fprintf #define fprintf(file, fmt, msg) fprintf_to_ereport(fmt, msg) static void fprintf_to_ereport(const char *fmt, const char *msg) { ereport(ERROR, (errmsg_internal("%s", msg))); } /* * GUC variables. This is a DIRECT violation of the warning given at the * head of gram.y, ie flex/bison code must not depend on any GUC variables; * as such, changing their values can induce very unintuitive behavior. * But we shall have to live with it until we can remove these variables. */ __thread int backslash_quote = BACKSLASH_QUOTE_SAFE_ENCODING; __thread bool escape_string_warning = true; __thread bool standard_conforming_strings = true; /* * Constant data exported from this file. This array maps from the * zero-based keyword numbers returned by ScanKeywordLookup to the * Bison token numbers needed by gram.y. This is exported because * callers need to pass it to scanner_init, if they are using the * standard keyword list ScanKeywords. */ #define PG_KEYWORD(kwname, value, category) value, const uint16 ScanKeywordTokens[] = { #include "parser/kwlist.h" }; #undef PG_KEYWORD /* * Set the type of YYSTYPE. */ #define YYSTYPE core_YYSTYPE /* * Set the type of yyextra. All state variables used by the scanner should * be in yyextra, *not* statically allocated. */ #define YY_EXTRA_TYPE core_yy_extra_type * /* * Each call to core_yylex must set yylloc to the location of the found token * (expressed as a byte offset from the start of the input text). * When we parse a token that requires multiple lexer rules to process, * this should be done in the first such rule, else yylloc will point * into the middle of the token. */ #define SET_YYLLOC() (*(yylloc) = yytext - yyextra->scanbuf) /* * Advance yylloc by the given number of bytes. */ #define ADVANCE_YYLLOC(delta) ( *(yylloc) += (delta) ) /* * Sometimes, we do want yylloc to point into the middle of a token; this is * useful for instance to throw an error about an escape sequence within a * string literal. But if we find no error there, we want to revert yylloc * to the token start, so that that's the location reported to the parser. * Use PUSH_YYLLOC/POP_YYLLOC to save/restore yylloc around such code. * (Currently the implied "stack" is just one location, but someday we might * need to nest these.) */ #define PUSH_YYLLOC() (yyextra->save_yylloc = *(yylloc)) #define POP_YYLLOC() (*(yylloc) = yyextra->save_yylloc) #define startlit() ( yyextra->literallen = 0 ) static void addlit(char *ytext, int yleng, core_yyscan_t yyscanner); static void addlitchar(unsigned char ychar, core_yyscan_t yyscanner); static char *litbufdup(core_yyscan_t yyscanner); static unsigned char unescape_single_char(unsigned char c, core_yyscan_t yyscanner); static int process_integer_literal(const char *token, YYSTYPE *lval); static void addunicode(pg_wchar c, yyscan_t yyscanner); #define yyerror(msg) scanner_yyerror(msg, yyscanner) #define lexer_errposition() scanner_errposition(*(yylloc), yyscanner) static void check_string_escape_warning(unsigned char ychar, core_yyscan_t yyscanner); static void check_escape_warning(core_yyscan_t yyscanner); /* * Work around a bug in flex 2.5.35: it emits a couple of functions that * it forgets to emit declarations for. Since we use -Wmissing-prototypes, * this would cause warnings. Providing our own declarations should be * harmless even when the bug gets fixed. */ extern int core_yyget_column(yyscan_t yyscanner); extern void core_yyset_column(int column_no, yyscan_t yyscanner); #define YY_NO_INPUT 1 /* * OK, here is a short description of lex/flex rules behavior. * The longest pattern which matches an input string is always chosen. * For equal-length patterns, the first occurring in the rules list is chosen. * INITIAL is the starting state, to which all non-conditional rules apply. * Exclusive states change parsing rules while the state is active. When in * an exclusive state, only those rules defined for that state apply. * * We use exclusive states for quoted strings, extended comments, * and to eliminate parsing troubles for numeric strings. * Exclusive states: * bit string literal * extended C-style comments * delimited identifiers (double-quoted identifiers) * hexadecimal numeric string * standard quoted strings * quote stop (detect continued strings) * extended quoted strings (support backslash escape sequences) * $foo$ quoted strings * quoted identifier with Unicode escapes * quoted string with Unicode escapes * Unicode surrogate pair in extended quoted string * * Remember to add an <> case whenever you add a new exclusive state! * The default one is probably not the right thing. */ /* * In order to make the world safe for Windows and Mac clients as well as * Unix ones, we accept either \n or \r as a newline. A DOS-style \r\n * sequence will be seen as two successive newlines, but that doesn't cause * any problems. Comments that start with -- and extend to the next * newline are treated as equivalent to a single whitespace character. * * NOTE a fine point: if there is no newline following --, we will absorb * everything to the end of the input as a comment. This is correct. Older * versions of Postgres failed to recognize -- as a comment if the input * did not end with a newline. * * XXX perhaps \f (formfeed) should be treated as a newline as well? * * XXX if you change the set of whitespace characters, fix scanner_isspace() * to agree. */ /* * SQL requires at least one newline in the whitespace separating * string literals that are to be concatenated. Silly, but who are we * to argue? Note that {whitespace_with_newline} should not have * after * it, whereas {whitespace} should generally have a * after it... */ /* If we see {quote} then {quotecontinue}, the quoted string continues */ /* * {quotecontinuefail} is needed to avoid lexer backup when we fail to match * {quotecontinue}. It might seem that this could just be {whitespace}*, * but if there's a dash after {whitespace_with_newline}, it must be consumed * to see if there's another dash --- which would start a {comment} and thus * allow continuation of the {quotecontinue} token. */ /* Bit string * It is tempting to scan the string for only those characters * which are allowed. However, this leads to silently swallowed * characters if illegal characters are included in the string. * For example, if xbinside is [01] then B'ABCD' is interpreted * as a zero-length string, and the ABCD' is lost! * Better to pass the string forward and let the input routines * validate the contents. */ /* Hexadecimal number */ /* National character */ /* Quoted string that allows backslash escapes */ /* Normalized escaped string */ /* Extended quote * xqdouble implements embedded quote, '''' */ /* $foo$ style quotes ("dollar quoting") * The quoted string starts with $foo$ where "foo" is an optional string * in the form of an identifier, except that it may not contain "$", * and extends to the first occurrence of an identical string. * There is *no* processing of the quoted text. * * {dolqfailed} is an error rule to avoid scanner backup when {dolqdelim} * fails to match its trailing "$". */ /* Double quote * Allows embedded spaces and other special characters into identifiers. */ /* Quoted identifier with Unicode escapes */ /* Quoted string with Unicode escapes */ /* error rule to avoid backup */ /* C-style comments * * The "extended comment" syntax closely resembles allowable operator syntax. * The tricky part here is to get lex to recognize a string starting with * slash-star as a comment, when interpreting it as an operator would produce * a longer match --- remember lex will prefer a longer match! Also, if we * have something like plus-slash-star, lex will think this is a 3-character * operator whereas we want to see it as a + operator and a comment start. * The solution is two-fold: * 1. append {op_chars}* to xcstart so that it matches as much text as * {operator} would. Then the tie-breaker (first matching rule of same * length) ensures xcstart wins. We put back the extra stuff with yyless() * in case it contains a star-slash that should terminate the comment. * 2. In the operator rule, check for slash-star within the operator, and * if found throw it back with yyless(). This handles the plus-slash-star * problem. * Dash-dash comments have similar interactions with the operator rule. */ /* Assorted special-case operators and operator-like tokens */ /* * These operator-like tokens (unlike the above ones) also match the {operator} * rule, which means that they might be overridden by a longer match if they * are followed by a comment start or a + or - character. Accordingly, if you * add to this list, you must also add corresponding code to the {operator} * block to return the correct token in such cases. (This is not needed in * psqlscan.l since the token value is ignored there.) */ /* * "self" is the set of chars that should be returned as single-character * tokens. "op_chars" is the set of chars that can make up "Op" tokens, * which can be one or more characters long (but if a single-char token * appears in the "self" set, it is not to be returned as an Op). Note * that the sets overlap, but each has some chars that are not in the other. * * If you change either set, adjust the character lists appearing in the * rule for "operator"! */ /* we no longer allow unary minus in numbers. * instead we pass it separately to parser. there it gets * coerced via doNegate() -- Leon aug 20 1999 * * {decimalfail} is used because we would like "1..10" to lex as 1, dot_dot, 10. * * {realfail1} and {realfail2} are added to prevent the need for scanner * backup when the {real} rule fails to match completely. */ /* * Dollar quoted strings are totally opaque, and no escaping is done on them. * Other quoted strings must allow some special characters such as single-quote * and newline. * Embedded single-quotes are implemented both in the SQL standard * style of two adjacent single quotes "''" and in the Postgres/Java style * of escaped-quote "\'". * Other embedded escaped characters are matched explicitly and the leading * backslash is dropped from the string. * Note that xcstart must appear before operator, as explained above! * Also whitespace (comment) must appear before operator. */ #line 4538 "scan.c" #define INITIAL 0 #define xb 1 #define xc 2 #define xd 3 #define xh 4 #define xq 5 #define xqs 6 #define xe 7 #define xdolq 8 #define xui 9 #define xus 10 #define xeu 11 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif /* Holds the entire state of the reentrant scanner. */ struct yyguts_t { /* User-defined. Not touched by flex. */ YY_EXTRA_TYPE yyextra_r; /* The rest are the same as the globals declared in the non-reentrant scanner. */ FILE *yyin_r, *yyout_r; size_t yy_buffer_stack_top; /**< index of top of stack. */ size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; yy_size_t yy_n_chars; yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; int yy_did_buffer_switch_on_eof; int yy_start_stack_ptr; int yy_start_stack_depth; int *yy_start_stack; yy_state_type yy_last_accepting_state; char* yy_last_accepting_cpos; int yylineno_r; int yy_flex_debug_r; char *yytext_r; int yy_more_flag; int yy_more_len; YYSTYPE * yylval_r; YYLTYPE * yylloc_r; }; /* end struct yyguts_t */ static int yy_init_globals (yyscan_t yyscanner ); /* This must go here because YYSTYPE and YYLTYPE are included * from bison output in section 1.*/ # define yylval yyg->yylval_r # define yylloc yyg->yylloc_r int core_yylex_init (yyscan_t* scanner); int core_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int core_yylex_destroy (yyscan_t yyscanner ); int core_yyget_debug (yyscan_t yyscanner ); void core_yyset_debug (int debug_flag ,yyscan_t yyscanner ); YY_EXTRA_TYPE core_yyget_extra (yyscan_t yyscanner ); void core_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *core_yyget_in (yyscan_t yyscanner ); void core_yyset_in (FILE * in_str ,yyscan_t yyscanner ); FILE *core_yyget_out (yyscan_t yyscanner ); void core_yyset_out (FILE * out_str ,yyscan_t yyscanner ); yy_size_t core_yyget_leng (yyscan_t yyscanner ); char *core_yyget_text (yyscan_t yyscanner ); int core_yyget_lineno (yyscan_t yyscanner ); void core_yyset_lineno (int line_number ,yyscan_t yyscanner ); YYSTYPE * core_yyget_lval (yyscan_t yyscanner ); void core_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); YYLTYPE *core_yyget_lloc (yyscan_t yyscanner ); void core_yyset_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int core_yywrap (yyscan_t yyscanner ); #else extern int core_yywrap (yyscan_t yyscanner ); #endif #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner ); #else static int input (yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int core_yylex \ (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner); #define YY_DECL int core_yylex \ (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; #line 420 "scan.l" #line 4791 "scan.c" yylval = yylval_param; yylloc = yylloc_param; if ( !yyg->yy_init ) { yyg->yy_init = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! yyg->yy_start ) yyg->yy_start = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { core_yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = core_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } core_yy_load_buffer_state(yyscanner ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; /* Support of yytext. */ *yy_cp = yyg->yy_hold_char; /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = yy_start_state_list[yyg->yy_start]; yy_match: { register yyconst struct yy_trans_info *yy_trans_info; register YY_CHAR yy_c; for ( yy_c = YY_SC_TO_UI(*yy_cp); (yy_trans_info = &yy_current_state[(unsigned int) yy_c])-> yy_verify == yy_c; yy_c = YY_SC_TO_UI(*++yy_cp) ) yy_current_state += yy_trans_info->yy_nxt; } yy_find_action: yy_act = yy_current_state[-1].yy_nxt; YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 1: /* rule 1 can match eol */ YY_RULE_SETUP #line 422 "scan.l" { /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP #line 426 "scan.l" { SET_YYLLOC(); return SQL_COMMENT; } YY_BREAK case 3: YY_RULE_SETUP #line 431 "scan.l" { /* Set location in case of syntax error in comment */ SET_YYLLOC(); yyextra->xcdepth = 0; BEGIN(xc); /* Put back any characters past slash-star; see above */ yyless(2); } YY_BREAK case 4: YY_RULE_SETUP #line 441 "scan.l" { (yyextra->xcdepth)++; /* Put back any characters past slash-star; see above */ yyless(2); } YY_BREAK case 5: YY_RULE_SETUP #line 447 "scan.l" { if (yyextra->xcdepth <= 0) { BEGIN(INITIAL); yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return C_COMMENT; } else (yyextra->xcdepth)--; } YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP #line 458 "scan.l" { /* ignore */ } YY_BREAK case 7: YY_RULE_SETUP #line 462 "scan.l" { /* ignore */ } YY_BREAK case 8: YY_RULE_SETUP #line 466 "scan.l" { /* ignore */ } YY_BREAK case YY_STATE_EOF(xc): #line 470 "scan.l" { yyerror("unterminated /* comment"); } YY_BREAK /* */ case 9: YY_RULE_SETUP #line 475 "scan.l" { /* Binary bit type. * At some point we should simply pass the string * forward to the parser and label it there. * In the meantime, place a leading "b" on the string * to mark it for the input routine as a binary string. */ SET_YYLLOC(); BEGIN(xb); startlit(); addlitchar('b', yyscanner); } YY_BREAK case 10: /* rule 10 can match eol */ #line 488 "scan.l" case 11: /* rule 11 can match eol */ YY_RULE_SETUP #line 488 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case YY_STATE_EOF(xb): #line 491 "scan.l" { yyerror("unterminated bit string literal"); } YY_BREAK case 12: YY_RULE_SETUP #line 493 "scan.l" { /* Hexadecimal bit type. * At some point we should simply pass the string * forward to the parser and label it there. * In the meantime, place a leading "x" on the string * to mark it for the input routine as a hex string. */ SET_YYLLOC(); BEGIN(xh); startlit(); addlitchar('x', yyscanner); } YY_BREAK case YY_STATE_EOF(xh): #line 505 "scan.l" { yyerror("unterminated hexadecimal string literal"); } YY_BREAK case 13: YY_RULE_SETUP #line 507 "scan.l" { /* National character. * We will pass this along as a normal character string, * but preceded with an internally-generated "NCHAR". */ int kwnum; SET_YYLLOC(); yyless(1); /* eat only 'n' this time */ kwnum = ScanKeywordLookup("nchar", yyextra->keywordlist); if (kwnum >= 0) { yylval->keyword = GetScanKeyword(kwnum, yyextra->keywordlist); return yyextra->keyword_tokens[kwnum]; } else { /* If NCHAR isn't a keyword, just return "n" */ yylval->str = pstrdup("n"); yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } } YY_BREAK case 14: YY_RULE_SETUP #line 534 "scan.l" { yyextra->warn_on_first_escape = true; yyextra->saw_non_ascii = false; SET_YYLLOC(); if (yyextra->standard_conforming_strings) BEGIN(xq); else BEGIN(xe); startlit(); } YY_BREAK case 15: YY_RULE_SETUP #line 544 "scan.l" { yyextra->warn_on_first_escape = false; yyextra->saw_non_ascii = false; SET_YYLLOC(); BEGIN(xe); startlit(); } YY_BREAK case 16: YY_RULE_SETUP #line 551 "scan.l" { SET_YYLLOC(); if (!yyextra->standard_conforming_strings) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("unsafe use of string constant with Unicode escapes"), errdetail("String constants with Unicode escapes cannot be used when standard_conforming_strings is off."), lexer_errposition())); BEGIN(xus); startlit(); } YY_BREAK case 17: YY_RULE_SETUP #line 563 "scan.l" { /* * When we are scanning a quoted string and see an end * quote, we must look ahead for a possible continuation. * If we don't see one, we know the end quote was in fact * the end of the string. To reduce the lexer table size, * we use a single "xqs" state to do the lookahead for all * types of strings. */ yyextra->state_before_str_stop = YYSTATE; BEGIN(xqs); } YY_BREAK case 18: /* rule 18 can match eol */ YY_RULE_SETUP #line 575 "scan.l" { /* * Found a quote continuation, so return to the in-quote * state and continue scanning the literal. Nothing is * added to the literal's contents. */ BEGIN(yyextra->state_before_str_stop); } YY_BREAK case 19: /* rule 19 can match eol */ #line 584 "scan.l" case 20: /* rule 20 can match eol */ #line 585 "scan.l" case YY_STATE_EOF(xqs): #line 585 "scan.l" { /* * Failed to see a quote continuation. Throw back * everything after the end quote, and handle the string * according to the state we were in previously. */ yyless(0); BEGIN(INITIAL); switch (yyextra->state_before_str_stop) { case xb: yylval->str = litbufdup(yyscanner); yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return BCONST; case xh: yylval->str = litbufdup(yyscanner); yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return XCONST; case xq: case xe: /* * Check that the data remains valid, if it might * have been made invalid by unescaping any chars. */ if (yyextra->saw_non_ascii) pg_verifymbstr(yyextra->literalbuf, yyextra->literallen, false); yylval->str = litbufdup(yyscanner); yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return SCONST; case xus: yylval->str = litbufdup(yyscanner); yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return USCONST; default: yyerror("unhandled previous state in xqs"); } } YY_BREAK case 21: YY_RULE_SETUP #line 626 "scan.l" { addlitchar('\'', yyscanner); } YY_BREAK case 22: /* rule 22 can match eol */ YY_RULE_SETUP #line 629 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 23: /* rule 23 can match eol */ YY_RULE_SETUP #line 632 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 24: YY_RULE_SETUP #line 635 "scan.l" { pg_wchar c = strtoul(yytext + 2, NULL, 16); /* * For consistency with other productions, issue any * escape warning with cursor pointing to start of string. * We might want to change that, someday. */ check_escape_warning(yyscanner); /* Remember start of overall string token ... */ PUSH_YYLLOC(); /* ... and set the error cursor to point at this esc seq */ SET_YYLLOC(); if (is_utf16_surrogate_first(c)) { yyextra->utf16_first_part = c; BEGIN(xeu); } else if (is_utf16_surrogate_second(c)) yyerror("invalid Unicode surrogate pair"); else addunicode(c, yyscanner); /* Restore yylloc to be start of string token */ POP_YYLLOC(); } YY_BREAK case 25: YY_RULE_SETUP #line 663 "scan.l" { pg_wchar c = strtoul(yytext + 2, NULL, 16); /* Remember start of overall string token ... */ PUSH_YYLLOC(); /* ... and set the error cursor to point at this esc seq */ SET_YYLLOC(); if (!is_utf16_surrogate_second(c)) yyerror("invalid Unicode surrogate pair"); c = surrogate_pair_to_codepoint(yyextra->utf16_first_part, c); addunicode(c, yyscanner); /* Restore yylloc to be start of string token */ POP_YYLLOC(); BEGIN(xe); } YY_BREAK case 26: #line 684 "scan.l" case 27: /* rule 27 can match eol */ #line 685 "scan.l" case YY_STATE_EOF(xeu): #line 685 "scan.l" { /* Set the error cursor to point at missing esc seq */ SET_YYLLOC(); yyerror("invalid Unicode surrogate pair"); } YY_BREAK case 28: YY_RULE_SETUP #line 690 "scan.l" { /* Set the error cursor to point at malformed esc seq */ SET_YYLLOC(); ereport(ERROR, (errcode(ERRCODE_INVALID_ESCAPE_SEQUENCE), errmsg("invalid Unicode escape"), errhint("Unicode escapes must be \\uXXXX or \\UXXXXXXXX."), lexer_errposition())); } YY_BREAK case 29: /* rule 29 can match eol */ YY_RULE_SETUP #line 699 "scan.l" { if (yytext[1] == '\'') { if (yyextra->backslash_quote == BACKSLASH_QUOTE_OFF || (yyextra->backslash_quote == BACKSLASH_QUOTE_SAFE_ENCODING && PG_ENCODING_IS_CLIENT_ONLY(pg_get_client_encoding()))) ereport(ERROR, (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), errmsg("unsafe use of \\' in a string literal"), errhint("Use '' to write quotes in strings. \\' is insecure in client-only encodings."), lexer_errposition())); } check_string_escape_warning(yytext[1], yyscanner); addlitchar(unescape_single_char(yytext[1], yyscanner), yyscanner); } YY_BREAK case 30: YY_RULE_SETUP #line 715 "scan.l" { unsigned char c = strtoul(yytext + 1, NULL, 8); check_escape_warning(yyscanner); addlitchar(c, yyscanner); if (c == '\0' || IS_HIGHBIT_SET(c)) yyextra->saw_non_ascii = true; } YY_BREAK case 31: YY_RULE_SETUP #line 723 "scan.l" { unsigned char c = strtoul(yytext + 2, NULL, 16); check_escape_warning(yyscanner); addlitchar(c, yyscanner); if (c == '\0' || IS_HIGHBIT_SET(c)) yyextra->saw_non_ascii = true; } YY_BREAK case 32: YY_RULE_SETUP #line 731 "scan.l" { /* This is only needed for \ just before EOF */ addlitchar(yytext[0], yyscanner); } YY_BREAK case YY_STATE_EOF(xq): case YY_STATE_EOF(xe): case YY_STATE_EOF(xus): #line 735 "scan.l" { yyerror("unterminated quoted string"); } YY_BREAK case 33: YY_RULE_SETUP #line 737 "scan.l" { SET_YYLLOC(); yyextra->dolqstart = pstrdup(yytext); BEGIN(xdolq); startlit(); } YY_BREAK case 34: YY_RULE_SETUP #line 743 "scan.l" { SET_YYLLOC(); /* throw back all but the initial "$" */ yyless(1); /* and treat it as {other} */ return yytext[0]; } YY_BREAK case 35: YY_RULE_SETUP #line 750 "scan.l" { if (strcmp(yytext, yyextra->dolqstart) == 0) { pfree(yyextra->dolqstart); yyextra->dolqstart = NULL; BEGIN(INITIAL); yylval->str = litbufdup(yyscanner); yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return SCONST; } else { /* * When we fail to match $...$ to dolqstart, transfer * the $... part to the output, but put back the final * $ for rescanning. Consider $delim$...$junk$delim$ */ addlit(yytext, yyleng - 1, yyscanner); yyless(yyleng - 1); } } YY_BREAK case 36: /* rule 36 can match eol */ YY_RULE_SETUP #line 771 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 37: YY_RULE_SETUP #line 774 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case 38: YY_RULE_SETUP #line 777 "scan.l" { /* This is only needed for $ inside the quoted text */ addlitchar(yytext[0], yyscanner); } YY_BREAK case YY_STATE_EOF(xdolq): #line 781 "scan.l" { yyerror("unterminated dollar-quoted string"); } YY_BREAK case 39: YY_RULE_SETUP #line 783 "scan.l" { SET_YYLLOC(); BEGIN(xd); startlit(); } YY_BREAK case 40: YY_RULE_SETUP #line 788 "scan.l" { SET_YYLLOC(); BEGIN(xui); startlit(); } YY_BREAK case 41: YY_RULE_SETUP #line 793 "scan.l" { char *ident; BEGIN(INITIAL); if (yyextra->literallen == 0) yyerror("zero-length delimited identifier"); ident = litbufdup(yyscanner); if (yyextra->literallen >= NAMEDATALEN) truncate_identifier(ident, yyextra->literallen, true); yylval->str = ident; yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } YY_BREAK case 42: YY_RULE_SETUP #line 806 "scan.l" { BEGIN(INITIAL); if (yyextra->literallen == 0) yyerror("zero-length delimited identifier"); /* can't truncate till after we de-escape the ident */ yylval->str = litbufdup(yyscanner); yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return UIDENT; } YY_BREAK case 43: YY_RULE_SETUP #line 815 "scan.l" { addlitchar('"', yyscanner); } YY_BREAK case 44: /* rule 44 can match eol */ YY_RULE_SETUP #line 818 "scan.l" { addlit(yytext, yyleng, yyscanner); } YY_BREAK case YY_STATE_EOF(xd): case YY_STATE_EOF(xui): #line 821 "scan.l" { yyerror("unterminated quoted identifier"); } YY_BREAK case 45: YY_RULE_SETUP #line 823 "scan.l" { char *ident; SET_YYLLOC(); /* throw back all but the initial u/U */ yyless(1); /* and treat it as {identifier} */ ident = downcase_truncate_identifier(yytext, yyleng, true); yylval->str = ident; yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } YY_BREAK case 46: YY_RULE_SETUP #line 836 "scan.l" { /* ignore E */ return yytext[1]; } YY_BREAK case 47: YY_RULE_SETUP #line 841 "scan.l" { SET_YYLLOC(); return TYPECAST; } YY_BREAK case 48: YY_RULE_SETUP #line 846 "scan.l" { SET_YYLLOC(); return DOT_DOT; } YY_BREAK case 49: YY_RULE_SETUP #line 851 "scan.l" { SET_YYLLOC(); return COLON_EQUALS; } YY_BREAK case 50: YY_RULE_SETUP #line 856 "scan.l" { SET_YYLLOC(); return EQUALS_GREATER; } YY_BREAK case 51: YY_RULE_SETUP #line 861 "scan.l" { SET_YYLLOC(); return LESS_EQUALS; } YY_BREAK case 52: YY_RULE_SETUP #line 866 "scan.l" { SET_YYLLOC(); return GREATER_EQUALS; } YY_BREAK case 53: YY_RULE_SETUP #line 871 "scan.l" { /* We accept both "<>" and "!=" as meaning NOT_EQUALS */ SET_YYLLOC(); return NOT_EQUALS; } YY_BREAK case 54: YY_RULE_SETUP #line 877 "scan.l" { /* We accept both "<>" and "!=" as meaning NOT_EQUALS */ SET_YYLLOC(); return NOT_EQUALS; } YY_BREAK case 55: YY_RULE_SETUP #line 883 "scan.l" { SET_YYLLOC(); return yytext[0]; } YY_BREAK case 56: YY_RULE_SETUP #line 888 "scan.l" { /* * Check for embedded slash-star or dash-dash; those * are comment starts, so operator must stop there. * Note that slash-star or dash-dash at the first * character will match a prior rule, not this one. */ int nchars = yyleng; char *slashstar = strstr(yytext, "/*"); char *dashdash = strstr(yytext, "--"); if (slashstar && dashdash) { /* if both appear, take the first one */ if (slashstar > dashdash) slashstar = dashdash; } else if (!slashstar) slashstar = dashdash; if (slashstar) nchars = slashstar - yytext; /* * For SQL compatibility, '+' and '-' cannot be the * last char of a multi-char operator unless the operator * contains chars that are not in SQL operators. * The idea is to lex '=-' as two operators, but not * to forbid operator names like '?-' that could not be * sequences of SQL operators. */ if (nchars > 1 && (yytext[nchars - 1] == '+' || yytext[nchars - 1] == '-')) { int ic; for (ic = nchars - 2; ic >= 0; ic--) { char c = yytext[ic]; if (c == '~' || c == '!' || c == '@' || c == '#' || c == '^' || c == '&' || c == '|' || c == '`' || c == '?' || c == '%') break; } if (ic < 0) { /* * didn't find a qualifying character, so remove * all trailing [+-] */ do { nchars--; } while (nchars > 1 && (yytext[nchars - 1] == '+' || yytext[nchars - 1] == '-')); } } /* We don't accept leading ? in any multi-character operators * except for those in use by hstore, JSON and geometric operators. * * We don't accept contained or trailing ? in any * multi-character operators, except for those in use by JSON operators. * * This is necessary in order to support normalized queries without * spacing between ? as a substition character and a simple operator (e.g. "?=?") */ if (yytext[0] == '?' && strcmp(yytext, "?|") != 0 && strcmp(yytext, "?&") != 0 && strcmp(yytext, "?#") != 0 && strcmp(yytext, "?-") != 0 && strcmp(yytext, "?-|") != 0 && strcmp(yytext, "?||") != 0) nchars = 1; if (yytext[0] != '?' && strchr(yytext, '?') && strcmp(yytext, "@?") != 0) /* Lex up to just before the ? character */ nchars = strchr(yytext, '?') - yytext; SET_YYLLOC(); if (nchars < yyleng) { /* Strip the unwanted chars from the token */ yyless(nchars); /* * If what we have left is only one char, and it's * one of the characters matching "self", then * return it as a character token the same way * that the "self" rule would have. */ if (nchars == 1 && strchr(",()[].;:+-*/%^<>=?", yytext[0])) return yytext[0]; /* * Likewise, if what we have left is two chars, and * those match the tokens ">=", "<=", "=>", "<>" or * "!=", then we must return the appropriate token * rather than the generic Op. */ if (nchars == 2) { if (yytext[0] == '=' && yytext[1] == '>') return EQUALS_GREATER; if (yytext[0] == '>' && yytext[1] == '=') return GREATER_EQUALS; if (yytext[0] == '<' && yytext[1] == '=') return LESS_EQUALS; if (yytext[0] == '<' && yytext[1] == '>') return NOT_EQUALS; if (yytext[0] == '!' && yytext[1] == '=') return NOT_EQUALS; } } /* * Complain if operator is too long. Unlike the case * for identifiers, we make this an error not a notice- * and-truncate, because the odds are we are looking at * a syntactic mistake anyway. */ if (nchars >= NAMEDATALEN) yyerror("operator too long"); yylval->str = pstrdup(yytext); return Op; } YY_BREAK case 57: YY_RULE_SETUP #line 1016 "scan.l" { SET_YYLLOC(); yylval->ival = atol(yytext + 1); return PARAM; } YY_BREAK case 58: YY_RULE_SETUP #line 1022 "scan.l" { SET_YYLLOC(); return process_integer_literal(yytext, yylval); } YY_BREAK case 59: YY_RULE_SETUP #line 1026 "scan.l" { SET_YYLLOC(); yylval->str = pstrdup(yytext); return FCONST; } YY_BREAK case 60: YY_RULE_SETUP #line 1031 "scan.l" { /* throw back the .., and treat as integer */ yyless(yyleng - 2); SET_YYLLOC(); return process_integer_literal(yytext, yylval); } YY_BREAK case 61: YY_RULE_SETUP #line 1037 "scan.l" { SET_YYLLOC(); yylval->str = pstrdup(yytext); return FCONST; } YY_BREAK case 62: YY_RULE_SETUP #line 1042 "scan.l" { /* * throw back the [Ee], and figure out whether what * remains is an {integer} or {decimal}. */ yyless(yyleng - 1); SET_YYLLOC(); return process_integer_literal(yytext, yylval); } YY_BREAK case 63: YY_RULE_SETUP #line 1051 "scan.l" { /* throw back the [Ee][+-], and proceed as above */ yyless(yyleng - 2); SET_YYLLOC(); return process_integer_literal(yytext, yylval); } YY_BREAK case 64: YY_RULE_SETUP #line 1059 "scan.l" { int kwnum; char *ident; char *keyword_text = pstrdup(yytext); SET_YYLLOC(); /* Is it a keyword? */ if (yytext[yyleng - 1] == '?') keyword_text[yyleng - 1] = '\0'; kwnum = ScanKeywordLookup(keyword_text, yyextra->keywordlist); if (kwnum >= 0) { if (keyword_text[yyleng - 1] == '\0') yyless(yyleng - 1); yylval->keyword = GetScanKeyword(kwnum, yyextra->keywordlist); return yyextra->keyword_tokens[kwnum]; } /* * No. Convert the identifier to lower case, and truncate * if necessary. */ ident = downcase_truncate_identifier(yytext, yyleng, true); yylval->str = ident; yyextra->yyllocend = yytext - yyextra->scanbuf + yyleng; return IDENT; } YY_BREAK case 65: YY_RULE_SETUP #line 1090 "scan.l" { SET_YYLLOC(); return yytext[0]; } YY_BREAK case YY_STATE_EOF(INITIAL): #line 1095 "scan.l" { SET_YYLLOC(); yyterminate(); } YY_BREAK case 66: YY_RULE_SETUP #line 1100 "scan.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK #line 5794 "scan.c" case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yyg->yy_hold_char; YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * core_yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) { /* This was really a NUL. */ yy_state_type yy_next_state; yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++yyg->yy_c_buf_p; yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = yyg->yy_c_buf_p; goto yy_find_action; } } else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( core_yywrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: yyg->yy_c_buf_p = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of core_yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = yyg->yytext_ptr; register int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; else { yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ core_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; core_yyrestart(yyin ,yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) core_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (yyscan_t yyscanner) { register yy_state_type yy_current_state; register char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_current_state = yy_start_state_list[yyg->yy_start]; for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { yy_current_state += yy_current_state[(*yy_cp ? YY_SC_TO_UI(*yy_cp) : 256)].yy_nxt; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) { register int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ register int yy_c = 256; register yyconst struct yy_trans_info *yy_trans_info; yy_trans_info = &yy_current_state[(unsigned int) yy_c]; yy_current_state += yy_trans_info->yy_nxt; yy_is_jam = (yy_trans_info->yy_verify != yy_c); (void) yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner) #else static int input (yyscan_t yyscanner) #endif { int c; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; *yyg->yy_c_buf_p = yyg->yy_hold_char; if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ core_yyrestart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( core_yywrap(yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else return input(yyscanner); #endif } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + offset; break; } } } c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ yyg->yy_hold_char = *++yyg->yy_c_buf_p; return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void core_yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ core_yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = core_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } core_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); core_yy_load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void core_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * core_yypop_buffer_state(); * core_yypush_buffer_state(new_buffer); */ core_yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; core_yy_load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during * EOF (core_yywrap()) processing, but the only time this flag * is looked at is after core_yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void core_yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE core_yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) core_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in core_yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) core_yyalloc(b->yy_buf_size + 2 ,yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in core_yy_create_buffer()" ); b->yy_is_our_buffer = 1; core_yy_init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with core_yy_create_buffer() * @param yyscanner The scanner object. */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a core_yyrestart() or at EOF. */ static void core_yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; core_yy_flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then core_yy_init_buffer was _probably_ * called from core_yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void core_yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) core_yy_load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void core_yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; yyg->yy_buffer_stack = (struct yy_buffer_state**)core_yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in core_yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)core_yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in core_yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE core_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) core_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in core_yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; core_yy_switch_to_buffer(b ,yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to core_yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * core_yy_scan_bytes() instead. */ /** Setup the input buffer state to scan the given bytes. The next call to core_yylex() will * scan from a @e copy of @a bytes. * @param bytes the byte buffer to scan * @param len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ /** Get the current line number. * @param yyscanner The scanner object. */ /** Get the current column number. * @param yyscanner The scanner object. */ /** Get the input stream. * @param yyscanner The scanner object. */ /** Get the output stream. * @param yyscanner The scanner object. */ /** Get the length of the current token. * @param yyscanner The scanner object. */ /** Get the current token. * @param yyscanner The scanner object. */ /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void core_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param line_number * @param yyscanner The scanner object. */ /** Set the current column. * @param line_number * @param yyscanner The scanner object. */ /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * @param yyscanner The scanner object. * @see core_yy_switch_to_buffer */ /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* core_yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int core_yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) core_yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* core_yylex_init_extra has the same functionality as core_yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to core_yyalloc in * the yyextra field. */ static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from core_yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = 0; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = (char *) 0; yyg->yy_init = 0; yyg->yy_start = 0; yyg->yy_start_stack_ptr = 0; yyg->yy_start_stack_depth = 0; yyg->yy_start_stack = NULL; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * core_yylex_init() */ return 0; } /* core_yylex_destroy is for both reentrant and non-reentrant scanners. */ /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif #define YYTABLES_NAME "yytables" #line 1100 "scan.l" /* LCOV_EXCL_STOP */ /* * Arrange access to yyextra for subroutines of the main core_yylex() function. * We expect each subroutine to have a yyscanner parameter. Rather than * use the yyget_xxx functions, which might or might not get inlined by the * compiler, we cheat just a bit and cast yyscanner to the right type. */ #undef yyextra #define yyextra (((struct yyguts_t *) yyscanner)->yyextra_r) /* Likewise for a couple of other things we need. */ #undef yylloc #define yylloc (((struct yyguts_t *) yyscanner)->yylloc_r) #undef yyleng #define yyleng (((struct yyguts_t *) yyscanner)->yyleng_r) /* * scanner_errposition * Report a lexer or grammar error cursor position, if possible. * * This is expected to be used within an ereport() call, or via an error * callback such as setup_scanner_errposition_callback(). The return value * is a dummy (always 0, in fact). * * Note that this can only be used for messages emitted during raw parsing * (essentially, scan.l, parser.c, and gram.y), since it requires the * yyscanner struct to still be available. */ int scanner_errposition(int location, core_yyscan_t yyscanner) { int pos; if (location < 0) return 0; /* no-op if location is unknown */ /* Convert byte offset to character number */ pos = pg_mbstrlen_with_len(yyextra->scanbuf, location) + 1; /* And pass it to the ereport mechanism */ return errposition(pos); } /* * Error context callback for inserting scanner error location. * * Note that this will be called for *any* error occurring while the * callback is installed. We avoid inserting an irrelevant error location * if the error is a query cancel --- are there any other important cases? */ static void scb_error_callback(void *arg) { ScannerCallbackState *scbstate = (ScannerCallbackState *) arg; if (geterrcode() != ERRCODE_QUERY_CANCELED) (void) scanner_errposition(scbstate->location, scbstate->yyscanner); } /* * setup_scanner_errposition_callback * Arrange for non-scanner errors to report an error position * * Sometimes the scanner calls functions that aren't part of the scanner * subsystem and can't reasonably be passed the yyscanner pointer; yet * we would like any errors thrown in those functions to be tagged with an * error location. Use this function to set up an error context stack * entry that will accomplish that. Usage pattern: * * declare a local variable "ScannerCallbackState scbstate" * ... * setup_scanner_errposition_callback(&scbstate, yyscanner, location); * call function that might throw error; * cancel_scanner_errposition_callback(&scbstate); */ void setup_scanner_errposition_callback(ScannerCallbackState *scbstate, core_yyscan_t yyscanner, int location) { /* Setup error traceback support for ereport() */ scbstate->yyscanner = yyscanner; scbstate->location = location; scbstate->errcallback.callback = scb_error_callback; scbstate->errcallback.arg = (void *) scbstate; scbstate->errcallback.previous = error_context_stack; error_context_stack = &scbstate->errcallback; } /* * Cancel a previously-set-up errposition callback. */ void cancel_scanner_errposition_callback(ScannerCallbackState *scbstate) { /* Pop the error context stack */ error_context_stack = scbstate->errcallback.previous; } /* * scanner_yyerror * Report a lexer or grammar error. * * The message's cursor position is whatever YYLLOC was last set to, * ie, the start of the current token if called within core_yylex(), or the * most recently lexed token if called from the grammar. * This is OK for syntax error messages from the Bison parser, because Bison * parsers report error as soon as the first unparsable token is reached. * Beware of using yyerror for other purposes, as the cursor position might * be misleading! */ void scanner_yyerror(const char *message, core_yyscan_t yyscanner) { const char *loc = yyextra->scanbuf + *yylloc; if (*loc == YY_END_OF_BUFFER_CHAR) { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), /* translator: %s is typically the translation of "syntax error" */ errmsg("%s at end of input", _(message)), lexer_errposition())); } else { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), /* translator: first %s is typically the translation of "syntax error" */ errmsg("%s at or near \"%s\"", _(message), loc), lexer_errposition())); } } /* * Called before any actual parsing is done */ core_yyscan_t scanner_init(const char *str, core_yy_extra_type *yyext, const ScanKeywordList *keywordlist, const uint16 *keyword_tokens) { Size slen = strlen(str); yyscan_t scanner; if (core_yylex_init(&scanner) != 0) elog(ERROR, "core_yylex_init() failed: %m"); core_yyset_extra(yyext, scanner); yyext->keywordlist = keywordlist; yyext->keyword_tokens = keyword_tokens; yyext->backslash_quote = backslash_quote; yyext->escape_string_warning = escape_string_warning; yyext->standard_conforming_strings = standard_conforming_strings; /* * Make a scan buffer with special termination needed by flex. */ yyext->scanbuf = (char *) palloc(slen + 2); yyext->scanbuflen = slen; memcpy(yyext->scanbuf, str, slen); yyext->scanbuf[slen] = yyext->scanbuf[slen + 1] = YY_END_OF_BUFFER_CHAR; core_yy_scan_buffer(yyext->scanbuf,slen + 2,scanner); /* initialize literal buffer to a reasonable but expansible size */ yyext->literalalloc = 1024; yyext->literalbuf = (char *) palloc(yyext->literalalloc); yyext->literallen = 0; return scanner; } /* * Called after parsing is done to clean up after scanner_init() */ void scanner_finish(core_yyscan_t yyscanner) { /* * We don't bother to call core_yylex_destroy(), because all it would do is * pfree a small amount of control storage. It's cheaper to leak the * storage until the parsing context is destroyed. The amount of space * involved is usually negligible compared to the output parse tree * anyway. * * We do bother to pfree the scanbuf and literal buffer, but only if they * represent a nontrivial amount of space. The 8K cutoff is arbitrary. */ if (yyextra->scanbuflen >= 8192) pfree(yyextra->scanbuf); if (yyextra->literalalloc >= 8192) pfree(yyextra->literalbuf); } static void addlit(char *ytext, int yleng, core_yyscan_t yyscanner) { /* enlarge buffer if needed */ if ((yyextra->literallen + yleng) >= yyextra->literalalloc) { do { yyextra->literalalloc *= 2; } while ((yyextra->literallen + yleng) >= yyextra->literalalloc); yyextra->literalbuf = (char *) repalloc(yyextra->literalbuf, yyextra->literalalloc); } /* append new data */ memcpy(yyextra->literalbuf + yyextra->literallen, ytext, yleng); yyextra->literallen += yleng; } static void addlitchar(unsigned char ychar, core_yyscan_t yyscanner) { /* enlarge buffer if needed */ if ((yyextra->literallen + 1) >= yyextra->literalalloc) { yyextra->literalalloc *= 2; yyextra->literalbuf = (char *) repalloc(yyextra->literalbuf, yyextra->literalalloc); } /* append new data */ yyextra->literalbuf[yyextra->literallen] = ychar; yyextra->literallen += 1; } /* * Create a palloc'd copy of literalbuf, adding a trailing null. */ static char * litbufdup(core_yyscan_t yyscanner) { int llen = yyextra->literallen; char *new; new = palloc(llen + 1); memcpy(new, yyextra->literalbuf, llen); new[llen] = '\0'; return new; } /* * Process {integer}. Note this will also do the right thing with {decimal}, * ie digits and a decimal point. */ static int process_integer_literal(const char *token, YYSTYPE *lval) { int val; char *endptr; errno = 0; val = strtoint(token, &endptr, 10); if (*endptr != '\0' || errno == ERANGE) { /* integer too large (or contains decimal pt), treat it as a float */ lval->str = pstrdup(token); return FCONST; } lval->ival = val; return ICONST; } static void addunicode(pg_wchar c, core_yyscan_t yyscanner) { ScannerCallbackState scbstate; char buf[MAX_UNICODE_EQUIVALENT_STRING + 1]; if (!is_valid_unicode_codepoint(c)) yyerror("invalid Unicode escape value"); /* * We expect that pg_unicode_to_server() will complain about any * unconvertible code point, so we don't have to set saw_non_ascii. */ setup_scanner_errposition_callback(&scbstate, yyscanner, *(yylloc)); pg_unicode_to_server(c, (unsigned char *) buf); cancel_scanner_errposition_callback(&scbstate); addlit(buf, strlen(buf), yyscanner); } static unsigned char unescape_single_char(unsigned char c, core_yyscan_t yyscanner) { switch (c) { case 'b': return '\b'; case 'f': return '\f'; case 'n': return '\n'; case 'r': return '\r'; case 't': return '\t'; default: /* check for backslash followed by non-7-bit-ASCII */ if (c == '\0' || IS_HIGHBIT_SET(c)) yyextra->saw_non_ascii = true; return c; } } static void check_string_escape_warning(unsigned char ychar, core_yyscan_t yyscanner) { if (ychar == '\'') { if (yyextra->warn_on_first_escape && yyextra->escape_string_warning) ereport(WARNING, (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), errmsg("nonstandard use of \\' in a string literal"), errhint("Use '' to write quotes in strings, or use the escape string syntax (E'...')."), lexer_errposition())); yyextra->warn_on_first_escape = false; /* warn only once per string */ } else if (ychar == '\\') { if (yyextra->warn_on_first_escape && yyextra->escape_string_warning) ereport(WARNING, (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), errmsg("nonstandard use of \\\\ in a string literal"), errhint("Use the escape string syntax for backslashes, e.g., E'\\\\'."), lexer_errposition())); yyextra->warn_on_first_escape = false; /* warn only once per string */ } else check_escape_warning(yyscanner); } static void check_escape_warning(core_yyscan_t yyscanner) { if (yyextra->warn_on_first_escape && yyextra->escape_string_warning) ereport(WARNING, (errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER), errmsg("nonstandard use of escape in a string literal"), errhint("Use the escape string syntax for escapes, e.g., E'\\r\\n'."), lexer_errposition())); yyextra->warn_on_first_escape = false; /* warn only once per string */ } /* * Interface functions to make flex use palloc() instead of malloc(). * It'd be better to make these static, but flex insists otherwise. */ void * core_yyalloc(yy_size_t bytes, core_yyscan_t yyscanner) { return palloc(bytes); } void * core_yyrealloc(void *ptr, yy_size_t bytes, core_yyscan_t yyscanner) { if (ptr) return repalloc(ptr, bytes); else return palloc(bytes); } libpg_query-13-2.1.0/src/postgres/src_backend_parser_scansup.c000066400000000000000000000103741413137616400244370ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - downcase_truncate_identifier * - downcase_identifier * - truncate_identifier * - scanner_isspace *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * scansup.c * support routines for the lex/flex scanner, used by both the normal * backend as well as the bootstrap backend * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/parser/scansup.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include "mb/pg_wchar.h" #include "parser/scansup.h" /* ---------------- * scanstr * * if the string passed in has escaped codes, map the escape codes to actual * chars * * the string returned is palloc'd and should eventually be pfree'd by the * caller! * ---------------- */ /* * downcase_truncate_identifier() --- do appropriate downcasing and * truncation of an unquoted identifier. Optionally warn of truncation. * * Returns a palloc'd string containing the adjusted identifier. * * Note: in some usages the passed string is not null-terminated. * * Note: the API of this function is designed to allow for downcasing * transformations that increase the string length, but we don't yet * support that. If you want to implement it, you'll need to fix * SplitIdentifierString() in utils/adt/varlena.c. */ char * downcase_truncate_identifier(const char *ident, int len, bool warn) { return downcase_identifier(ident, len, warn, true); } /* * a workhorse for downcase_truncate_identifier */ char * downcase_identifier(const char *ident, int len, bool warn, bool truncate) { char *result; int i; bool enc_is_single_byte; result = palloc(len + 1); enc_is_single_byte = pg_database_encoding_max_length() == 1; /* * SQL99 specifies Unicode-aware case normalization, which we don't yet * have the infrastructure for. Instead we use tolower() to provide a * locale-aware translation. However, there are some locales where this * is not right either (eg, Turkish may do strange things with 'i' and * 'I'). Our current compromise is to use tolower() for characters with * the high bit set, as long as they aren't part of a multi-byte * character, and use an ASCII-only downcasing for 7-bit characters. */ for (i = 0; i < len; i++) { unsigned char ch = (unsigned char) ident[i]; if (ch >= 'A' && ch <= 'Z') ch += 'a' - 'A'; else if (enc_is_single_byte && IS_HIGHBIT_SET(ch) && isupper(ch)) ch = tolower(ch); result[i] = (char) ch; } result[i] = '\0'; if (i >= NAMEDATALEN && truncate) truncate_identifier(result, i, warn); return result; } /* * truncate_identifier() --- truncate an identifier to NAMEDATALEN-1 bytes. * * The given string is modified in-place, if necessary. A warning is * issued if requested. * * We require the caller to pass in the string length since this saves a * strlen() call in some common usages. */ void truncate_identifier(char *ident, int len, bool warn) { if (len >= NAMEDATALEN) { len = pg_mbcliplen(ident, len, NAMEDATALEN - 1); if (warn) { /* * We avoid using %.*s here because it can misbehave if the data * is not valid in what libc thinks is the prevailing encoding. */ char buf[NAMEDATALEN]; memcpy(buf, ident, len); buf[len] = '\0'; ereport(NOTICE, (errcode(ERRCODE_NAME_TOO_LONG), errmsg("identifier \"%s\" will be truncated to \"%s\"", ident, buf))); } ident[len] = '\0'; } } /* * scanner_isspace() --- return true if flex scanner considers char whitespace * * This should be used instead of the potentially locale-dependent isspace() * function when it's important to match the lexer's behavior. * * In principle we might need similar functions for isalnum etc, but for the * moment only isspace seems needed. */ bool scanner_isspace(char ch) { /* This must match scan.l's list of {space} characters */ if (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r' || ch == '\f') return true; return false; } libpg_query-13-2.1.0/src/postgres/src_backend_postmaster_postmaster.c000066400000000000000000001720111413137616400260660ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ClientAuthInProgress *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * postmaster.c * This program acts as a clearing house for requests to the * POSTGRES system. Frontend programs send a startup message * to the Postmaster and the postmaster uses the info in the * message to setup a backend process. * * The postmaster also manages system-wide operations such as * startup and shutdown. The postmaster itself doesn't do those * operations, mind you --- it just forks off a subprocess to do them * at the right times. It also takes care of resetting the system * if a backend crashes. * * The postmaster process creates the shared memory and semaphore * pools during startup, but as a rule does not touch them itself. * In particular, it is not a member of the PGPROC array of backends * and so it cannot participate in lock-manager operations. Keeping * the postmaster away from shared memory operations makes it simpler * and more reliable. The postmaster is almost always able to recover * from crashes of individual backends by resetting shared memory; * if it did much with shared memory then it would be prone to crashing * along with the backends. * * When a request message is received, we now fork() immediately. * The child process performs authentication of the request, and * then becomes a backend if successful. This allows the auth code * to be written in a simple single-threaded style (as opposed to the * crufty "poor man's multitasking" code that used to be needed). * More importantly, it ensures that blockages in non-multithreaded * libraries like SSL or PAM cannot cause denial of service to other * clients. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/postmaster/postmaster.c * * NOTES * * Initialization: * The Postmaster sets up shared memory data structures * for the backends. * * Synchronization: * The Postmaster shares memory with the backends but should avoid * touching shared memory, so as not to become stuck if a crashing * backend screws up locks or shared memory. Likewise, the Postmaster * should never block on messages from frontend clients. * * Garbage Collection: * The Postmaster cleans up after backends if they have an emergency * exit and/or core dump. * * Error Reporting: * Use write_stderr() only for reporting "interactive" errors * (essentially, bogus arguments on the command line). Once the * postmaster is launched, use ereport(). * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_SYS_SELECT_H #include #endif #ifdef USE_BONJOUR #include #endif #ifdef USE_SYSTEMD #include #endif #ifdef HAVE_PTHREAD_IS_THREADED_NP #include #endif #include "access/transam.h" #include "access/xlog.h" #include "bootstrap/bootstrap.h" #include "catalog/pg_control.h" #include "common/file_perm.h" #include "common/ip.h" #include "common/string.h" #include "lib/ilist.h" #include "libpq/auth.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "libpq/pqsignal.h" #include "miscadmin.h" #include "pg_getopt.h" #include "pgstat.h" #include "port/pg_bswap.h" #include "postmaster/autovacuum.h" #include "postmaster/bgworker_internals.h" #include "postmaster/fork_process.h" #include "postmaster/interrupt.h" #include "postmaster/pgarch.h" #include "postmaster/postmaster.h" #include "postmaster/syslogger.h" #include "replication/logicallauncher.h" #include "replication/walsender.h" #include "storage/fd.h" #include "storage/ipc.h" #include "storage/pg_shmem.h" #include "storage/pmsignal.h" #include "storage/proc.h" #include "tcop/tcopprot.h" #include "utils/builtins.h" #include "utils/datetime.h" #include "utils/memutils.h" #include "utils/pidfile.h" #include "utils/ps_status.h" #include "utils/timeout.h" #include "utils/timestamp.h" #include "utils/varlena.h" #ifdef EXEC_BACKEND #include "storage/spin.h" #endif /* * Possible types of a backend. Beyond being the possible bkend_type values in * struct bkend, these are OR-able request flag bits for SignalSomeChildren() * and CountChildren(). */ #define BACKEND_TYPE_NORMAL 0x0001 /* normal backend */ #define BACKEND_TYPE_AUTOVAC 0x0002 /* autovacuum worker process */ #define BACKEND_TYPE_WALSND 0x0004 /* walsender process */ #define BACKEND_TYPE_BGWORKER 0x0008 /* bgworker process */ #define BACKEND_TYPE_ALL 0x000F /* OR of all the above */ /* * List of active backends (or child processes anyway; we don't actually * know whether a given child has become a backend or is still in the * authorization phase). This is used mainly to keep track of how many * children we have and send them appropriate signals when necessary. * * "Special" children such as the startup, bgwriter and autovacuum launcher * tasks are not in this list. Autovacuum worker and walsender are in it. * Also, "dead_end" children are in it: these are children launched just for * the purpose of sending a friendly rejection message to a would-be client. * We must track them because they are attached to shared memory, but we know * they will never become live backends. dead_end children are not assigned a * PMChildSlot. * * Background workers are in this list, too. */ typedef struct bkend { pid_t pid; /* process id of backend */ int32 cancel_key; /* cancel key for cancels for this backend */ int child_slot; /* PMChildSlot for this backend, if any */ /* * Flavor of backend or auxiliary process. Note that BACKEND_TYPE_WALSND * backends initially announce themselves as BACKEND_TYPE_NORMAL, so if * bkend_type is normal, you should check for a recent transition. */ int bkend_type; bool dead_end; /* is it going to send an error and quit? */ bool bgworker_notify; /* gets bgworker start/stop notifications */ dlist_node elem; /* list link in BackendList */ } Backend; #ifdef EXEC_BACKEND static Backend *ShmemBackendArray; #endif /* The socket number we are listening for connections on */ /* The directory names for Unix socket(s) */ /* The TCP listen address(es) */ /* * ReservedBackends is the number of backends reserved for superuser use. * This number is taken out of the pool size given by MaxConnections so * number of backend slots available to non-superusers is * (MaxConnections - ReservedBackends). Note what this really means is * "if there are <= ReservedBackends connections available, only superusers * can make new connections" --- pre-existing superuser connections don't * count against the limit. */ /* The socket(s) we're listening to. */ #define MAXLISTEN 64 /* * Set by the -o option */ /* * These globals control the behavior of the postmaster in case some * backend dumps core. Normally, it kills all peers of the dead backend * and reinitializes shared memory. By specifying -s or -n, we can have * the postmaster stop (rather than kill) peers and not reinitialize * shared data structures. (Reinit is currently dead code, though.) */ /* still more option variables */ /* for ps display and logging */ /* PIDs of special child processes; 0 when not running */ /* Startup process's status */ typedef enum { STARTUP_NOT_RUNNING, STARTUP_RUNNING, STARTUP_SIGNALED, /* we sent it a SIGQUIT or SIGKILL */ STARTUP_CRASHED } StartupStatusEnum; /* Startup/shutdown state */ #define NoShutdown 0 #define SmartShutdown 1 #define FastShutdown 2 #define ImmediateShutdown 3 /* T if recovering from backend crash */ /* * We use a simple state machine to control startup, shutdown, and * crash recovery (which is rather like shutdown followed by startup). * * After doing all the postmaster initialization work, we enter PM_STARTUP * state and the startup process is launched. The startup process begins by * reading the control file and other preliminary initialization steps. * In a normal startup, or after crash recovery, the startup process exits * with exit code 0 and we switch to PM_RUN state. However, archive recovery * is handled specially since it takes much longer and we would like to support * hot standby during archive recovery. * * When the startup process is ready to start archive recovery, it signals the * postmaster, and we switch to PM_RECOVERY state. The background writer and * checkpointer are launched, while the startup process continues applying WAL. * If Hot Standby is enabled, then, after reaching a consistent point in WAL * redo, startup process signals us again, and we switch to PM_HOT_STANDBY * state and begin accepting connections to perform read-only queries. When * archive recovery is finished, the startup process exits with exit code 0 * and we switch to PM_RUN state. * * Normal child backends can only be launched when we are in PM_RUN or * PM_HOT_STANDBY state. (connsAllowed can also restrict launching.) * In other states we handle connection requests by launching "dead_end" * child processes, which will simply send the client an error message and * quit. (We track these in the BackendList so that we can know when they * are all gone; this is important because they're still connected to shared * memory, and would interfere with an attempt to destroy the shmem segment, * possibly leading to SHMALL failure when we try to make a new one.) * In PM_WAIT_DEAD_END state we are waiting for all the dead_end children * to drain out of the system, and therefore stop accepting connection * requests at all until the last existing child has quit (which hopefully * will not be very long). * * Notice that this state variable does not distinguish *why* we entered * states later than PM_RUN --- Shutdown and FatalError must be consulted * to find that out. FatalError is never true in PM_RECOVERY, PM_HOT_STANDBY, * or PM_RUN states, nor in PM_SHUTDOWN states (because we don't enter those * states when trying to recover from a crash). It can be true in PM_STARTUP * state, because we don't clear it until we've successfully started WAL redo. */ typedef enum { PM_INIT, /* postmaster starting */ PM_STARTUP, /* waiting for startup subprocess */ PM_RECOVERY, /* in archive recovery mode */ PM_HOT_STANDBY, /* in hot standby mode */ PM_RUN, /* normal "database is alive" state */ PM_STOP_BACKENDS, /* need to stop remaining backends */ PM_WAIT_BACKENDS, /* waiting for live backends to exit */ PM_SHUTDOWN, /* waiting for checkpointer to do shutdown * ckpt */ PM_SHUTDOWN_2, /* waiting for archiver and walsenders to * finish */ PM_WAIT_DEAD_END, /* waiting for dead_end children to exit */ PM_NO_CHILDREN /* all important children have exited */ } PMState; /* * While performing a "smart shutdown", we restrict new connections but stay * in PM_RUN or PM_HOT_STANDBY state until all the client backends are gone. * connsAllowed is a sub-state indicator showing the active restriction. * It is of no interest unless pmState is PM_RUN or PM_HOT_STANDBY. */ typedef enum { ALLOW_ALL_CONNS, /* normal not-shutting-down state */ ALLOW_SUPERUSER_CONNS, /* only superusers can connect */ ALLOW_NO_CONNS /* no new connections allowed, period */ } ConnsAllowedState; /* Start time of SIGKILL timeout during immediate shutdown or child crash */ /* Zero means timeout is not running */ /* Length of said timeout */ #define SIGKILL_CHILDREN_AFTER_SECS 5 /* T if we've reached PM_RUN */ __thread bool ClientAuthInProgress = false; /* T during new-client * authentication */ /* stderr redirected for syslogger? */ /* received START_AUTOVAC_LAUNCHER signal */ /* the launcher needs to be signaled to communicate some condition */ /* received START_WALRECEIVER signal */ /* set when there's a worker that needs to be started up */ #ifdef USE_SSL /* Set when and if SSL has been initialized properly */ static bool LoadedSSL = false; #endif #ifdef USE_BONJOUR static DNSServiceRef bonjour_sdref = NULL; #endif /* * postmaster.c - function prototypes */ static void CloseServerPorts(int status, Datum arg); static void unlink_external_pid_file(int status, Datum arg); static void getInstallationPaths(const char *argv0); static void checkControlFile(void); static Port *ConnCreate(int serverFd); static void ConnFree(Port *port); static void reset_shared(void); static void SIGHUP_handler(SIGNAL_ARGS); static void pmdie(SIGNAL_ARGS); static void reaper(SIGNAL_ARGS); static void sigusr1_handler(SIGNAL_ARGS); static void process_startup_packet_die(SIGNAL_ARGS); static void dummy_handler(SIGNAL_ARGS); static void StartupPacketTimeoutHandler(void); static void CleanupBackend(int pid, int exitstatus); static bool CleanupBackgroundWorker(int pid, int exitstatus); static void HandleChildCrash(int pid, int exitstatus, const char *procname); static void LogChildExit(int lev, const char *procname, int pid, int exitstatus); static void PostmasterStateMachine(void); static void BackendInitialize(Port *port); static void BackendRun(Port *port) pg_attribute_noreturn(); static void ExitPostmaster(int status) pg_attribute_noreturn(); static int ServerLoop(void); static int BackendStartup(Port *port); static int ProcessStartupPacket(Port *port, bool ssl_done, bool gss_done); static void SendNegotiateProtocolVersion(List *unrecognized_protocol_options); static void processCancelRequest(Port *port, void *pkt); static int initMasks(fd_set *rmask); static void report_fork_failure_to_client(Port *port, int errnum); static CAC_state canAcceptConnections(int backend_type); static bool RandomCancelKey(int32 *cancel_key); static void signal_child(pid_t pid, int signal); static bool SignalSomeChildren(int signal, int targets); static void TerminateChildren(int signal); #define SignalChildren(sig) SignalSomeChildren(sig, BACKEND_TYPE_ALL) static int CountChildren(int target); static bool assign_backendlist_entry(RegisteredBgWorker *rw); static void maybe_start_bgworkers(void); static bool CreateOptsFile(int argc, char *argv[], char *fullprogname); static pid_t StartChildProcess(AuxProcType type); static void StartAutovacuumWorker(void); static void MaybeStartWalReceiver(void); static void InitPostmasterDeathWatchHandle(void); /* * Archiver is allowed to start up at the current postmaster state? * * If WAL archiving is enabled always, we are allowed to start archiver * even during recovery. */ #define PgArchStartupAllowed() \ ((XLogArchivingActive() && pmState == PM_RUN) || \ (XLogArchivingAlways() && \ (pmState == PM_RECOVERY || pmState == PM_HOT_STANDBY))) #ifdef EXEC_BACKEND #ifdef WIN32 #define WNOHANG 0 /* ignored, so any integer value will do */ static pid_t waitpid(pid_t pid, int *exitstatus, int options); static void WINAPI pgwin32_deadchild_callback(PVOID lpParameter, BOOLEAN TimerOrWaitFired); static HANDLE win32ChildQueue; typedef struct { HANDLE waitHandle; HANDLE procHandle; DWORD procId; } win32_deadchild_waitinfo; #endif /* WIN32 */ static pid_t backend_forkexec(Port *port); static pid_t internal_forkexec(int argc, char *argv[], Port *port); /* Type for a socket that can be inherited to a client process */ #ifdef WIN32 typedef struct { SOCKET origsocket; /* Original socket value, or PGINVALID_SOCKET * if not a socket */ WSAPROTOCOL_INFO wsainfo; } InheritableSocket; #else typedef int InheritableSocket; #endif /* * Structure contains all variables passed to exec:ed backends */ typedef struct { Port port; InheritableSocket portsocket; char DataDir[MAXPGPATH]; pgsocket ListenSocket[MAXLISTEN]; int32 MyCancelKey; int MyPMChildSlot; #ifndef WIN32 unsigned long UsedShmemSegID; #else void *ShmemProtectiveRegion; HANDLE UsedShmemSegID; #endif void *UsedShmemSegAddr; slock_t *ShmemLock; VariableCache ShmemVariableCache; Backend *ShmemBackendArray; #ifndef HAVE_SPINLOCKS PGSemaphore *SpinlockSemaArray; #endif int NamedLWLockTrancheRequests; NamedLWLockTranche *NamedLWLockTrancheArray; LWLockPadded *MainLWLockArray; slock_t *ProcStructLock; PROC_HDR *ProcGlobal; PGPROC *AuxiliaryProcs; PGPROC *PreparedXactProcs; PMSignalData *PMSignalState; InheritableSocket pgStatSock; pid_t PostmasterPid; TimestampTz PgStartTime; TimestampTz PgReloadTime; pg_time_t first_syslogger_file_time; bool redirection_done; bool IsBinaryUpgrade; int max_safe_fds; int MaxBackends; #ifdef WIN32 HANDLE PostmasterHandle; HANDLE initial_signal_pipe; HANDLE syslogPipe[2]; #else int postmaster_alive_fds[2]; int syslogPipe[2]; #endif char my_exec_path[MAXPGPATH]; char pkglib_path[MAXPGPATH]; char ExtraOptions[MAXPGPATH]; } BackendParameters; static void read_backend_variables(char *id, Port *port); static void restore_backend_variables(BackendParameters *param, Port *port); #ifndef WIN32 static bool save_backend_variables(BackendParameters *param, Port *port); #else static bool save_backend_variables(BackendParameters *param, Port *port, HANDLE childProcess, pid_t childPid); #endif static void ShmemBackendArrayAdd(Backend *bn); static void ShmemBackendArrayRemove(Backend *bn); #endif /* EXEC_BACKEND */ #define StartupDataBase() StartChildProcess(StartupProcess) #define StartBackgroundWriter() StartChildProcess(BgWriterProcess) #define StartCheckpointer() StartChildProcess(CheckpointerProcess) #define StartWalWriter() StartChildProcess(WalWriterProcess) #define StartWalReceiver() StartChildProcess(WalReceiverProcess) /* Macros to check exit status of a child process */ #define EXIT_STATUS_0(st) ((st) == 0) #define EXIT_STATUS_1(st) (WIFEXITED(st) && WEXITSTATUS(st) == 1) #define EXIT_STATUS_3(st) (WIFEXITED(st) && WEXITSTATUS(st) == 3) #ifndef WIN32 /* * File descriptors for pipe used to monitor if postmaster is alive. * First is POSTMASTER_FD_WATCH, second is POSTMASTER_FD_OWN. */ #else /* Process handle of postmaster used for the same purpose on Windows */ HANDLE PostmasterHandle; #endif /* * Postmaster main entry point */ #ifdef SIGTTIN #endif #ifdef SIGTTOU #endif #ifdef SIGXFSZ #endif #ifdef HAVE_INT_OPTRESET #endif #ifdef USE_SSL #endif #ifdef WIN32 #endif #ifdef EXEC_BACKEND #endif #ifdef USE_BONJOUR #endif #ifdef HAVE_UNIX_SOCKETS #endif #ifdef HAVE_PTHREAD_IS_THREADED_NP #endif /* * on_proc_exit callback to close server's listen sockets */ /* * on_proc_exit callback to delete external_pid_file */ /* * Compute and check the directory paths to files that are part of the * installation (as deduced from the postgres executable's own location) */ #ifdef EXEC_BACKEND #endif /* * Check that pg_control exists in the correct location in the data directory. * * No attempt is made to validate the contents of pg_control here. This is * just a sanity check to see if we are looking at a real data directory. */ /* * Determine how long should we let ServerLoop sleep. * * In normal conditions we wait at most one minute, to ensure that the other * background tasks handled by ServerLoop get done even when no requests are * arriving. However, if there are background workers waiting to be started, * we don't actually sleep so that they are quickly serviced. Other exception * cases are as shown in the code. */ /* * Main idle loop of postmaster * * NB: Needs to be called with signals blocked */ #ifdef HAVE_PTHREAD_IS_THREADED_NP #endif /* * Initialise the masks for select() for the ports we are listening on. * Return the number of sockets to listen on. */ /* * Read a client's startup packet and do something according to it. * * Returns STATUS_OK or STATUS_ERROR, or might call ereport(FATAL) and * not return at all. * * (Note that ereport(FATAL) stuff is sent to the client, so only use it * if that's what you want. Return STATUS_ERROR if you don't want to * send anything to the client, which would typically be appropriate * if we detect a communications failure.) * * Set ssl_done and/or gss_done when negotiation of an encrypted layer * (currently, TLS or GSSAPI) is completed. A successful negotiation of either * encryption layer sets both flags, but a rejected negotiation sets only the * flag for that layer, since the client may wish to try the other one. We * should make no assumption here about the order in which the client may make * requests. */ #ifdef USE_SSL #else #endif #ifdef USE_SSL #endif #ifdef ENABLE_GSS #endif #ifdef ENABLE_GSS #endif /* * Send a NegotiateProtocolVersion to the client. This lets the client know * that they have requested a newer minor protocol version than we are able * to speak. We'll speak the highest version we know about; the client can, * of course, abandon the connection if that's a problem. * * We also include in the response a list of protocol options we didn't * understand. This allows clients to include optional parameters that might * be present either in newer protocol versions or third-party protocol * extensions without fear of having to reconnect if those options are not * understood, while at the same time making certain that the client is aware * of which options were actually accepted. */ /* * The client has sent a cancel request packet, not a normal * start-a-new-connection packet. Perform the necessary processing. * Nothing is sent back to the client. */ #ifndef EXEC_BACKEND #else #endif #ifndef EXEC_BACKEND #else #endif #ifndef EXEC_BACKEND /* make GNU Emacs 26.1 see brace balance */ #else #endif /* * canAcceptConnections --- check to see if database state allows connections * of the specified type. backend_type can be BACKEND_TYPE_NORMAL, * BACKEND_TYPE_AUTOVAC, or BACKEND_TYPE_BGWORKER. (Note that we don't yet * know whether a NORMAL connection might turn into a walsender.) */ /* * ConnCreate -- create a local connection data structure * * Returns NULL on failure, other than out-of-memory which is fatal. */ /* * ConnFree -- free a local connection data structure * * Caller has already closed the socket if any, so there's not much * to do here. */ /* * ClosePostmasterPorts -- close all the postmaster's open sockets * * This is called during child process startup to release file descriptors * that are not needed by that child process. The postmaster still has * them open, of course. * * Note: we pass am_syslogger as a boolean because we don't want to set * the global variable yet when this is called. */ #ifndef WIN32 #endif #ifndef WIN32 #else #endif #ifdef USE_BONJOUR #endif /* * InitProcessGlobals -- set MyProcPid, MyStartTime[stamp], random seeds * * Called early in the postmaster and every backend. */ /* * reset_shared -- reset shared memory and semaphores */ /* * SIGHUP -- reread config files, and tell children to do same */ #ifdef WIN32 #endif #ifdef USE_SSL #endif #ifdef EXEC_BACKEND #endif #ifdef WIN32 #endif /* * pmdie -- signal handler for processing various postmaster signals. */ #ifdef WIN32 #endif #ifdef USE_SYSTEMD #endif #ifdef USE_SYSTEMD #endif #ifdef USE_SYSTEMD #endif #ifdef WIN32 #endif /* * Reaper -- signal handler to cleanup after a child process dies. */ #ifdef WIN32 #endif #ifdef USE_SYSTEMD #endif #ifdef WIN32 #endif /* * Scan the bgworkers list and see if the given PID (which has just stopped * or crashed) is in it. Handle its shutdown if so, and return true. If not a * bgworker, return false. * * This is heavily based on CleanupBackend. One important difference is that * we don't know yet that the dying process is a bgworker, so we must be silent * until we're sure it is. */ #ifdef WIN32 #endif #ifdef EXEC_BACKEND #endif /* * CleanupBackend -- cleanup after terminated backend. * * Remove all local state associated with backend. * * If you change this, see also CleanupBackgroundWorker. */ #ifdef WIN32 #endif #ifdef EXEC_BACKEND #endif /* * HandleChildCrash -- cleanup after failed backend, bgwriter, checkpointer, * walwriter, autovacuum, or background worker. * * The objectives here are to clean up our local state about the child * process, and to signal all other remaining children to quickdie. */ #ifdef EXEC_BACKEND #endif #ifdef EXEC_BACKEND #endif /* * Log the death of a child process. */ #if defined(WIN32) #else #endif /* * Advance the postmaster's state machine and take actions as appropriate * * This is common code for pmdie(), reaper() and sigusr1_handler(), which * receive the signals that might mean we need to change state. */ /* * Send a signal to a postmaster child process * * On systems that have setsid(), each child process sets itself up as a * process group leader. For signals that are generally interpreted in the * appropriate fashion, we signal the entire process group not just the * direct child process. This allows us to, for example, SIGQUIT a blocked * archive_recovery script, or SIGINT a script being run by a backend via * system(). * * There is a race condition for recently-forked children: they might not * have executed setsid() yet. So we signal the child directly as well as * the group. We assume such a child will handle the signal before trying * to spawn any grandchild processes. We also assume that signaling the * child twice will not cause any problems. */ #ifdef HAVE_SETSID #endif /* * Send a signal to the targeted children (but NOT special children; * dead_end children are never signaled, either). */ /* * Send a termination signal to children. This considers all of our children * processes, except syslogger and dead_end backends. */ /* * BackendStartup -- start backend process * * returns: STATUS_ERROR if the fork failed, STATUS_OK otherwise. * * Note: if you change this code, also consider StartAutovacuumWorker. */ #ifdef EXEC_BACKEND #else /* !EXEC_BACKEND */ #endif /* EXEC_BACKEND */ #ifdef EXEC_BACKEND #endif /* * Try to report backend fork() failure to client before we close the * connection. Since we do not care to risk blocking the postmaster on * this connection, we set the connection to non-blocking and try only once. * * This is grungy special-purpose code; we cannot use backend libpq since * it's not up and running. */ /* * BackendInitialize -- initialize an interactive (postmaster-child) * backend process, and collect the client's startup packet. * * returns: nothing. Will not return at all if there's any failure. * * Note: this code does not depend on having any access to shared memory. * In the EXEC_BACKEND case, we are physically attached to shared memory * but have not yet set up most of our local pointers to shmem structures. */ /* * BackendRun -- set up the backend's argument list and invoke PostgresMain() * * returns: * Shouldn't return at all. * If PostgresMain() fails, return status. */ #ifdef EXEC_BACKEND /* * postmaster_forkexec -- fork and exec a postmaster subprocess * * The caller must have set up the argv array already, except for argv[2] * which will be filled with the name of the temp variable file. * * Returns the child process PID, or -1 on fork failure (a suitable error * message has been logged on failure). * * All uses of this routine will dispatch to SubPostmasterMain in the * child process. */ pid_t postmaster_forkexec(int argc, char *argv[]) { Port port; /* This entry point passes dummy values for the Port variables */ memset(&port, 0, sizeof(port)); return internal_forkexec(argc, argv, &port); } /* * backend_forkexec -- fork/exec off a backend process * * Some operating systems (WIN32) don't have fork() so we have to simulate * it by storing parameters that need to be passed to the child and * then create a new child process. * * returns the pid of the fork/exec'd process, or -1 on failure */ static pid_t backend_forkexec(Port *port) { char *av[4]; int ac = 0; av[ac++] = "postgres"; av[ac++] = "--forkbackend"; av[ac++] = NULL; /* filled in by internal_forkexec */ av[ac] = NULL; Assert(ac < lengthof(av)); return internal_forkexec(ac, av, port); } #ifndef WIN32 /* * internal_forkexec non-win32 implementation * * - writes out backend variables to the parameter file * - fork():s, and then exec():s the child process */ static pid_t internal_forkexec(int argc, char *argv[], Port *port) { static unsigned long tmpBackendFileNum = 0; pid_t pid; char tmpfilename[MAXPGPATH]; BackendParameters param; FILE *fp; if (!save_backend_variables(¶m, port)) return -1; /* log made by save_backend_variables */ /* Calculate name for temp file */ snprintf(tmpfilename, MAXPGPATH, "%s/%s.backend_var.%d.%lu", PG_TEMP_FILES_DIR, PG_TEMP_FILE_PREFIX, MyProcPid, ++tmpBackendFileNum); /* Open file */ fp = AllocateFile(tmpfilename, PG_BINARY_W); if (!fp) { /* * As in OpenTemporaryFileInTablespace, try to make the temp-file * directory, ignoring errors. */ (void) MakePGDirectory(PG_TEMP_FILES_DIR); fp = AllocateFile(tmpfilename, PG_BINARY_W); if (!fp) { ereport(LOG, (errcode_for_file_access(), errmsg("could not create file \"%s\": %m", tmpfilename))); return -1; } } if (fwrite(¶m, sizeof(param), 1, fp) != 1) { ereport(LOG, (errcode_for_file_access(), errmsg("could not write to file \"%s\": %m", tmpfilename))); FreeFile(fp); return -1; } /* Release file */ if (FreeFile(fp)) { ereport(LOG, (errcode_for_file_access(), errmsg("could not write to file \"%s\": %m", tmpfilename))); return -1; } /* Make sure caller set up argv properly */ Assert(argc >= 3); Assert(argv[argc] == NULL); Assert(strncmp(argv[1], "--fork", 6) == 0); Assert(argv[2] == NULL); /* Insert temp file name after --fork argument */ argv[2] = tmpfilename; /* Fire off execv in child */ if ((pid = fork_process()) == 0) { if (execv(postgres_exec_path, argv) < 0) { ereport(LOG, (errmsg("could not execute server process \"%s\": %m", postgres_exec_path))); /* We're already in the child process here, can't return */ exit(1); } } return pid; /* Parent returns pid, or -1 on fork failure */ } #else /* WIN32 */ /* * internal_forkexec win32 implementation * * - starts backend using CreateProcess(), in suspended state * - writes out backend variables to the parameter file * - during this, duplicates handles and sockets required for * inheritance into the new process * - resumes execution of the new process once the backend parameter * file is complete. */ static pid_t internal_forkexec(int argc, char *argv[], Port *port) { int retry_count = 0; STARTUPINFO si; PROCESS_INFORMATION pi; int i; int j; char cmdLine[MAXPGPATH * 2]; HANDLE paramHandle; BackendParameters *param; SECURITY_ATTRIBUTES sa; char paramHandleStr[32]; win32_deadchild_waitinfo *childinfo; /* Make sure caller set up argv properly */ Assert(argc >= 3); Assert(argv[argc] == NULL); Assert(strncmp(argv[1], "--fork", 6) == 0); Assert(argv[2] == NULL); /* Resume here if we need to retry */ retry: /* Set up shared memory for parameter passing */ ZeroMemory(&sa, sizeof(sa)); sa.nLength = sizeof(sa); sa.bInheritHandle = TRUE; paramHandle = CreateFileMapping(INVALID_HANDLE_VALUE, &sa, PAGE_READWRITE, 0, sizeof(BackendParameters), NULL); if (paramHandle == INVALID_HANDLE_VALUE) { elog(LOG, "could not create backend parameter file mapping: error code %lu", GetLastError()); return -1; } param = MapViewOfFile(paramHandle, FILE_MAP_WRITE, 0, 0, sizeof(BackendParameters)); if (!param) { elog(LOG, "could not map backend parameter memory: error code %lu", GetLastError()); CloseHandle(paramHandle); return -1; } /* Insert temp file name after --fork argument */ #ifdef _WIN64 sprintf(paramHandleStr, "%llu", (LONG_PTR) paramHandle); #else sprintf(paramHandleStr, "%lu", (DWORD) paramHandle); #endif argv[2] = paramHandleStr; /* Format the cmd line */ cmdLine[sizeof(cmdLine) - 1] = '\0'; cmdLine[sizeof(cmdLine) - 2] = '\0'; snprintf(cmdLine, sizeof(cmdLine) - 1, "\"%s\"", postgres_exec_path); i = 0; while (argv[++i] != NULL) { j = strlen(cmdLine); snprintf(cmdLine + j, sizeof(cmdLine) - 1 - j, " \"%s\"", argv[i]); } if (cmdLine[sizeof(cmdLine) - 2] != '\0') { elog(LOG, "subprocess command line too long"); UnmapViewOfFile(param); CloseHandle(paramHandle); return -1; } memset(&pi, 0, sizeof(pi)); memset(&si, 0, sizeof(si)); si.cb = sizeof(si); /* * Create the subprocess in a suspended state. This will be resumed later, * once we have written out the parameter file. */ if (!CreateProcess(NULL, cmdLine, NULL, NULL, TRUE, CREATE_SUSPENDED, NULL, NULL, &si, &pi)) { elog(LOG, "CreateProcess call failed: %m (error code %lu)", GetLastError()); UnmapViewOfFile(param); CloseHandle(paramHandle); return -1; } if (!save_backend_variables(param, port, pi.hProcess, pi.dwProcessId)) { /* * log made by save_backend_variables, but we have to clean up the * mess with the half-started process */ if (!TerminateProcess(pi.hProcess, 255)) ereport(LOG, (errmsg_internal("could not terminate unstarted process: error code %lu", GetLastError()))); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); UnmapViewOfFile(param); CloseHandle(paramHandle); return -1; /* log made by save_backend_variables */ } /* Drop the parameter shared memory that is now inherited to the backend */ if (!UnmapViewOfFile(param)) elog(LOG, "could not unmap view of backend parameter file: error code %lu", GetLastError()); if (!CloseHandle(paramHandle)) elog(LOG, "could not close handle to backend parameter file: error code %lu", GetLastError()); /* * Reserve the memory region used by our main shared memory segment before * we resume the child process. Normally this should succeed, but if ASLR * is active then it might sometimes fail due to the stack or heap having * gotten mapped into that range. In that case, just terminate the * process and retry. */ if (!pgwin32_ReserveSharedMemoryRegion(pi.hProcess)) { /* pgwin32_ReserveSharedMemoryRegion already made a log entry */ if (!TerminateProcess(pi.hProcess, 255)) ereport(LOG, (errmsg_internal("could not terminate process that failed to reserve memory: error code %lu", GetLastError()))); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); if (++retry_count < 100) goto retry; ereport(LOG, (errmsg("giving up after too many tries to reserve shared memory"), errhint("This might be caused by ASLR or antivirus software."))); return -1; } /* * Now that the backend variables are written out, we start the child * thread so it can start initializing while we set up the rest of the * parent state. */ if (ResumeThread(pi.hThread) == -1) { if (!TerminateProcess(pi.hProcess, 255)) { ereport(LOG, (errmsg_internal("could not terminate unstartable process: error code %lu", GetLastError()))); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); return -1; } CloseHandle(pi.hProcess); CloseHandle(pi.hThread); ereport(LOG, (errmsg_internal("could not resume thread of unstarted process: error code %lu", GetLastError()))); return -1; } /* * Queue a waiter to signal when this child dies. The wait will be handled * automatically by an operating system thread pool. * * Note: use malloc instead of palloc, since it needs to be thread-safe. * Struct will be free():d from the callback function that runs on a * different thread. */ childinfo = malloc(sizeof(win32_deadchild_waitinfo)); if (!childinfo) ereport(FATAL, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); childinfo->procHandle = pi.hProcess; childinfo->procId = pi.dwProcessId; if (!RegisterWaitForSingleObject(&childinfo->waitHandle, pi.hProcess, pgwin32_deadchild_callback, childinfo, INFINITE, WT_EXECUTEONLYONCE | WT_EXECUTEINWAITTHREAD)) ereport(FATAL, (errmsg_internal("could not register process for wait: error code %lu", GetLastError()))); /* Don't close pi.hProcess here - the wait thread needs access to it */ CloseHandle(pi.hThread); return pi.dwProcessId; } #endif /* WIN32 */ /* * SubPostmasterMain -- Get the fork/exec'd process into a state equivalent * to what it would be if we'd simply forked on Unix, and then * dispatch to the appropriate place. * * The first two command line arguments are expected to be "--forkFOO" * (where FOO indicates which postmaster child we are to become), and * the name of a variables file that we can read to load data that would * have been inherited by fork() on Unix. Remaining arguments go to the * subprocess FooMain() routine. */ void SubPostmasterMain(int argc, char *argv[]) { Port port; /* In EXEC_BACKEND case we will not have inherited these settings */ IsPostmasterEnvironment = true; whereToSendOutput = DestNone; /* Setup as postmaster child */ InitPostmasterChild(); /* Setup essential subsystems (to ensure elog() behaves sanely) */ InitializeGUCOptions(); /* Check we got appropriate args */ if (argc < 3) elog(FATAL, "invalid subpostmaster invocation"); /* Read in the variables file */ memset(&port, 0, sizeof(Port)); read_backend_variables(argv[2], &port); /* Close the postmaster's sockets (as soon as we know them) */ ClosePostmasterPorts(strcmp(argv[1], "--forklog") == 0); /* * If appropriate, physically re-attach to shared memory segment. We want * to do this before going any further to ensure that we can attach at the * same address the postmaster used. On the other hand, if we choose not * to re-attach, we may have other cleanup to do. * * If testing EXEC_BACKEND on Linux, you should run this as root before * starting the postmaster: * * echo 0 >/proc/sys/kernel/randomize_va_space * * This prevents using randomized stack and code addresses that cause the * child process's memory map to be different from the parent's, making it * sometimes impossible to attach to shared memory at the desired address. * Return the setting to its old value (usually '1' or '2') when finished. */ if (strcmp(argv[1], "--forkbackend") == 0 || strcmp(argv[1], "--forkavlauncher") == 0 || strcmp(argv[1], "--forkavworker") == 0 || strcmp(argv[1], "--forkboot") == 0 || strncmp(argv[1], "--forkbgworker=", 15) == 0) PGSharedMemoryReAttach(); else PGSharedMemoryNoReAttach(); /* autovacuum needs this set before calling InitProcess */ if (strcmp(argv[1], "--forkavlauncher") == 0) AutovacuumLauncherIAm(); if (strcmp(argv[1], "--forkavworker") == 0) AutovacuumWorkerIAm(); /* * Start our win32 signal implementation. This has to be done after we * read the backend variables, because we need to pick up the signal pipe * from the parent process. */ #ifdef WIN32 pgwin32_signal_initialize(); #endif /* In EXEC_BACKEND case we will not have inherited these settings */ pqinitmask(); PG_SETMASK(&BlockSig); /* Read in remaining GUC variables */ read_nondefault_variables(); /* * Check that the data directory looks valid, which will also check the * privileges on the data directory and update our umask and file/group * variables for creating files later. Note: this should really be done * before we create any files or directories. */ checkDataDir(); /* * (re-)read control file, as it contains config. The postmaster will * already have read this, but this process doesn't know about that. */ LocalProcessControlFile(false); /* * Reload any libraries that were preloaded by the postmaster. Since we * exec'd this process, those libraries didn't come along with us; but we * should load them into all child processes to be consistent with the * non-EXEC_BACKEND behavior. */ process_shared_preload_libraries(); /* Run backend or appropriate child */ if (strcmp(argv[1], "--forkbackend") == 0) { Assert(argc == 3); /* shouldn't be any more args */ /* * Need to reinitialize the SSL library in the backend, since the * context structures contain function pointers and cannot be passed * through the parameter file. * * If for some reason reload fails (maybe the user installed broken * key files), soldier on without SSL; that's better than all * connections becoming impossible. * * XXX should we do this in all child processes? For the moment it's * enough to do it in backend children. */ #ifdef USE_SSL if (EnableSSL) { if (secure_initialize(false) == 0) LoadedSSL = true; else ereport(LOG, (errmsg("SSL configuration could not be loaded in child process"))); } #endif /* * Perform additional initialization and collect startup packet. * * We want to do this before InitProcess() for a couple of reasons: 1. * so that we aren't eating up a PGPROC slot while waiting on the * client. 2. so that if InitProcess() fails due to being out of * PGPROC slots, we have already initialized libpq and are able to * report the error to the client. */ BackendInitialize(&port); /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); /* Need a PGPROC to run CreateSharedMemoryAndSemaphores */ InitProcess(); /* Attach process to shared data structures */ CreateSharedMemoryAndSemaphores(); /* And run the backend */ BackendRun(&port); /* does not return */ } if (strcmp(argv[1], "--forkboot") == 0) { /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); /* Need a PGPROC to run CreateSharedMemoryAndSemaphores */ InitAuxiliaryProcess(); /* Attach process to shared data structures */ CreateSharedMemoryAndSemaphores(); AuxiliaryProcessMain(argc - 2, argv + 2); /* does not return */ } if (strcmp(argv[1], "--forkavlauncher") == 0) { /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); /* Need a PGPROC to run CreateSharedMemoryAndSemaphores */ InitProcess(); /* Attach process to shared data structures */ CreateSharedMemoryAndSemaphores(); AutoVacLauncherMain(argc - 2, argv + 2); /* does not return */ } if (strcmp(argv[1], "--forkavworker") == 0) { /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); /* Need a PGPROC to run CreateSharedMemoryAndSemaphores */ InitProcess(); /* Attach process to shared data structures */ CreateSharedMemoryAndSemaphores(); AutoVacWorkerMain(argc - 2, argv + 2); /* does not return */ } if (strncmp(argv[1], "--forkbgworker=", 15) == 0) { int shmem_slot; /* do this as early as possible; in particular, before InitProcess() */ IsBackgroundWorker = true; /* Restore basic shared memory pointers */ InitShmemAccess(UsedShmemSegAddr); /* Need a PGPROC to run CreateSharedMemoryAndSemaphores */ InitProcess(); /* Attach process to shared data structures */ CreateSharedMemoryAndSemaphores(); /* Fetch MyBgworkerEntry from shared memory */ shmem_slot = atoi(argv[1] + 15); MyBgworkerEntry = BackgroundWorkerEntry(shmem_slot); StartBackgroundWorker(); } if (strcmp(argv[1], "--forkarch") == 0) { /* Do not want to attach to shared memory */ PgArchiverMain(argc, argv); /* does not return */ } if (strcmp(argv[1], "--forkcol") == 0) { /* Do not want to attach to shared memory */ PgstatCollectorMain(argc, argv); /* does not return */ } if (strcmp(argv[1], "--forklog") == 0) { /* Do not want to attach to shared memory */ SysLoggerMain(argc, argv); /* does not return */ } abort(); /* shouldn't get here */ } #endif /* EXEC_BACKEND */ /* * ExitPostmaster -- cleanup * * Do NOT call exit() directly --- always go through here! */ #ifdef HAVE_PTHREAD_IS_THREADED_NP #endif /* * sigusr1_handler - handle signal conditions from child processes */ #ifdef WIN32 #endif #ifdef USE_SYSTEMD #endif #ifdef USE_SYSTEMD #endif #ifdef WIN32 #endif /* * SIGTERM while processing startup packet. * Clean up and exit(1). * * Running proc_exit() from a signal handler is pretty unsafe, since we * can't know what code we've interrupted. But the alternative of using * _exit(2) is also unpalatable, since it'd mean that a "fast shutdown" * would cause a database crash cycle (forcing WAL replay at restart) * if any sessions are in authentication. So we live with it for now. * * One might be tempted to try to send a message indicating why we are * disconnecting. However, that would make this even more unsafe. Also, * it seems undesirable to provide clues about the database's state to * a client that has not yet completed authentication. */ /* * Dummy signal handler * * We use this for signals that we don't actually use in the postmaster, * but we do use in backends. If we were to SIG_IGN such signals in the * postmaster, then a newly started backend might drop a signal that arrives * before it's able to reconfigure its signal processing. (See notes in * tcop/postgres.c.) */ /* * Timeout while processing startup packet. * As for process_startup_packet_die(), we clean up and exit(1). * * This is theoretically just as hazardous as in process_startup_packet_die(), * although in practice we're almost certainly waiting for client input, * which greatly reduces the risk. */ /* * Generate a random cancel key. */ /* * Count up number of child processes of specified types (dead_end children * are always excluded). */ /* * StartChildProcess -- start an auxiliary process for the postmaster * * "type" determines what kind of child will be started. All child types * initially go to AuxiliaryProcessMain, which will handle common setup. * * Return value of StartChildProcess is subprocess' PID, or 0 if failed * to start subprocess. */ #ifdef EXEC_BACKEND #endif #ifdef EXEC_BACKEND #else /* !EXEC_BACKEND */ #endif /* EXEC_BACKEND */ /* * StartAutovacuumWorker * Start an autovac worker process. * * This function is here because it enters the resulting PID into the * postmaster's private backends list. * * NB -- this code very roughly matches BackendStartup. */ #ifdef EXEC_BACKEND #endif /* * MaybeStartWalReceiver * Start the WAL receiver process, if not running and our state allows. * * Note: if WalReceiverPID is already nonzero, it might seem that we should * clear WalReceiverRequested. However, there's a race condition if the * walreceiver terminates and the startup process immediately requests a new * one: it's quite possible to get the signal for the request before reaping * the dead walreceiver process. Better to risk launching an extra * walreceiver than to miss launching one we need. (The walreceiver code * has logic to recognize that it should go away if not needed.) */ /* * Create the opts file */ #define OPTS_FILE "postmaster.opts" /* * MaxLivePostmasterChildren * * This reports the number of entries needed in per-child-process arrays * (the PMChildFlags array, and if EXEC_BACKEND the ShmemBackendArray). * These arrays include regular backends, autovac workers, walsenders * and background workers, but not special children nor dead_end children. * This allows the arrays to have a fixed maximum size, to wit the same * too-many-children limit enforced by canAcceptConnections(). The exact value * isn't too critical as long as it's more than MaxBackends. */ /* * Connect background worker to a database. */ /* * Connect background worker to a database using OIDs. */ /* * Block/unblock signals in a background worker */ #ifdef EXEC_BACKEND static pid_t bgworker_forkexec(int shmem_slot) { char *av[10]; int ac = 0; char forkav[MAXPGPATH]; snprintf(forkav, MAXPGPATH, "--forkbgworker=%d", shmem_slot); av[ac++] = "postgres"; av[ac++] = forkav; av[ac++] = NULL; /* filled in by postmaster_forkexec */ av[ac] = NULL; Assert(ac < lengthof(av)); return postmaster_forkexec(ac, av); } #endif /* * Start a new bgworker. * Starting time conditions must have been checked already. * * Returns true on success, false on failure. * In either case, update the RegisteredBgWorker's state appropriately. * * This code is heavily based on autovacuum.c, q.v. */ #ifdef EXEC_BACKEND #else #endif #ifndef EXEC_BACKEND #endif #ifdef EXEC_BACKEND #endif /* * Does the current postmaster state require starting a worker with the * specified start_time? */ /* * Allocate the Backend struct for a connected background worker, but don't * add it to the list of backends just yet. * * On failure, return false without changing any worker state. * * Some info from the Backend is copied into the passed rw. */ /* * If the time is right, start background worker(s). * * As a side effect, the bgworker control variables are set or reset * depending on whether more workers may need to be started. * * We limit the number of workers started per call, to avoid consuming the * postmaster's attention for too long when many such requests are pending. * As long as StartWorkerNeeded is true, ServerLoop will not block and will * call this function again after dealing with any other issues. */ #define MAX_BGWORKERS_TO_LAUNCH 100 /* * When a backend asks to be notified about worker state changes, we * set a flag in its backend entry. The background worker machinery needs * to know when such backends exit. */ #ifdef EXEC_BACKEND /* * The following need to be available to the save/restore_backend_variables * functions. They are marked NON_EXEC_STATIC in their home modules. */ extern slock_t *ShmemLock; extern slock_t *ProcStructLock; extern PGPROC *AuxiliaryProcs; extern PMSignalData *PMSignalState; extern pgsocket pgStatSock; extern pg_time_t first_syslogger_file_time; #ifndef WIN32 #define write_inheritable_socket(dest, src, childpid) ((*(dest) = (src)), true) #define read_inheritable_socket(dest, src) (*(dest) = *(src)) #else static bool write_duplicated_handle(HANDLE *dest, HANDLE src, HANDLE child); static bool write_inheritable_socket(InheritableSocket *dest, SOCKET src, pid_t childPid); static void read_inheritable_socket(SOCKET *dest, InheritableSocket *src); #endif /* Save critical backend variables into the BackendParameters struct */ #ifndef WIN32 static bool save_backend_variables(BackendParameters *param, Port *port) #else static bool save_backend_variables(BackendParameters *param, Port *port, HANDLE childProcess, pid_t childPid) #endif { memcpy(¶m->port, port, sizeof(Port)); if (!write_inheritable_socket(¶m->portsocket, port->sock, childPid)) return false; strlcpy(param->DataDir, DataDir, MAXPGPATH); memcpy(¶m->ListenSocket, &ListenSocket, sizeof(ListenSocket)); param->MyCancelKey = MyCancelKey; param->MyPMChildSlot = MyPMChildSlot; #ifdef WIN32 param->ShmemProtectiveRegion = ShmemProtectiveRegion; #endif param->UsedShmemSegID = UsedShmemSegID; param->UsedShmemSegAddr = UsedShmemSegAddr; param->ShmemLock = ShmemLock; param->ShmemVariableCache = ShmemVariableCache; param->ShmemBackendArray = ShmemBackendArray; #ifndef HAVE_SPINLOCKS param->SpinlockSemaArray = SpinlockSemaArray; #endif param->NamedLWLockTrancheRequests = NamedLWLockTrancheRequests; param->NamedLWLockTrancheArray = NamedLWLockTrancheArray; param->MainLWLockArray = MainLWLockArray; param->ProcStructLock = ProcStructLock; param->ProcGlobal = ProcGlobal; param->AuxiliaryProcs = AuxiliaryProcs; param->PreparedXactProcs = PreparedXactProcs; param->PMSignalState = PMSignalState; if (!write_inheritable_socket(¶m->pgStatSock, pgStatSock, childPid)) return false; param->PostmasterPid = PostmasterPid; param->PgStartTime = PgStartTime; param->PgReloadTime = PgReloadTime; param->first_syslogger_file_time = first_syslogger_file_time; param->redirection_done = redirection_done; param->IsBinaryUpgrade = IsBinaryUpgrade; param->max_safe_fds = max_safe_fds; param->MaxBackends = MaxBackends; #ifdef WIN32 param->PostmasterHandle = PostmasterHandle; if (!write_duplicated_handle(¶m->initial_signal_pipe, pgwin32_create_signal_listener(childPid), childProcess)) return false; #else memcpy(¶m->postmaster_alive_fds, &postmaster_alive_fds, sizeof(postmaster_alive_fds)); #endif memcpy(¶m->syslogPipe, &syslogPipe, sizeof(syslogPipe)); strlcpy(param->my_exec_path, my_exec_path, MAXPGPATH); strlcpy(param->pkglib_path, pkglib_path, MAXPGPATH); strlcpy(param->ExtraOptions, ExtraOptions, MAXPGPATH); return true; } #ifdef WIN32 /* * Duplicate a handle for usage in a child process, and write the child * process instance of the handle to the parameter file. */ static bool write_duplicated_handle(HANDLE *dest, HANDLE src, HANDLE childProcess) { HANDLE hChild = INVALID_HANDLE_VALUE; if (!DuplicateHandle(GetCurrentProcess(), src, childProcess, &hChild, 0, TRUE, DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS)) { ereport(LOG, (errmsg_internal("could not duplicate handle to be written to backend parameter file: error code %lu", GetLastError()))); return false; } *dest = hChild; return true; } /* * Duplicate a socket for usage in a child process, and write the resulting * structure to the parameter file. * This is required because a number of LSPs (Layered Service Providers) very * common on Windows (antivirus, firewalls, download managers etc) break * straight socket inheritance. */ static bool write_inheritable_socket(InheritableSocket *dest, SOCKET src, pid_t childpid) { dest->origsocket = src; if (src != 0 && src != PGINVALID_SOCKET) { /* Actual socket */ if (WSADuplicateSocket(src, childpid, &dest->wsainfo) != 0) { ereport(LOG, (errmsg("could not duplicate socket %d for use in backend: error code %d", (int) src, WSAGetLastError()))); return false; } } return true; } /* * Read a duplicate socket structure back, and get the socket descriptor. */ static void read_inheritable_socket(SOCKET *dest, InheritableSocket *src) { SOCKET s; if (src->origsocket == PGINVALID_SOCKET || src->origsocket == 0) { /* Not a real socket! */ *dest = src->origsocket; } else { /* Actual socket, so create from structure */ s = WSASocket(FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO, &src->wsainfo, 0, 0); if (s == INVALID_SOCKET) { write_stderr("could not create inherited socket: error code %d\n", WSAGetLastError()); exit(1); } *dest = s; /* * To make sure we don't get two references to the same socket, close * the original one. (This would happen when inheritance actually * works.. */ closesocket(src->origsocket); } } #endif static void read_backend_variables(char *id, Port *port) { BackendParameters param; #ifndef WIN32 /* Non-win32 implementation reads from file */ FILE *fp; /* Open file */ fp = AllocateFile(id, PG_BINARY_R); if (!fp) { write_stderr("could not open backend variables file \"%s\": %s\n", id, strerror(errno)); exit(1); } if (fread(¶m, sizeof(param), 1, fp) != 1) { write_stderr("could not read from backend variables file \"%s\": %s\n", id, strerror(errno)); exit(1); } /* Release file */ FreeFile(fp); if (unlink(id) != 0) { write_stderr("could not remove file \"%s\": %s\n", id, strerror(errno)); exit(1); } #else /* Win32 version uses mapped file */ HANDLE paramHandle; BackendParameters *paramp; #ifdef _WIN64 paramHandle = (HANDLE) _atoi64(id); #else paramHandle = (HANDLE) atol(id); #endif paramp = MapViewOfFile(paramHandle, FILE_MAP_READ, 0, 0, 0); if (!paramp) { write_stderr("could not map view of backend variables: error code %lu\n", GetLastError()); exit(1); } memcpy(¶m, paramp, sizeof(BackendParameters)); if (!UnmapViewOfFile(paramp)) { write_stderr("could not unmap view of backend variables: error code %lu\n", GetLastError()); exit(1); } if (!CloseHandle(paramHandle)) { write_stderr("could not close handle to backend parameter variables: error code %lu\n", GetLastError()); exit(1); } #endif restore_backend_variables(¶m, port); } /* Restore critical backend variables from the BackendParameters struct */ static void restore_backend_variables(BackendParameters *param, Port *port) { memcpy(port, ¶m->port, sizeof(Port)); read_inheritable_socket(&port->sock, ¶m->portsocket); SetDataDir(param->DataDir); memcpy(&ListenSocket, ¶m->ListenSocket, sizeof(ListenSocket)); MyCancelKey = param->MyCancelKey; MyPMChildSlot = param->MyPMChildSlot; #ifdef WIN32 ShmemProtectiveRegion = param->ShmemProtectiveRegion; #endif UsedShmemSegID = param->UsedShmemSegID; UsedShmemSegAddr = param->UsedShmemSegAddr; ShmemLock = param->ShmemLock; ShmemVariableCache = param->ShmemVariableCache; ShmemBackendArray = param->ShmemBackendArray; #ifndef HAVE_SPINLOCKS SpinlockSemaArray = param->SpinlockSemaArray; #endif NamedLWLockTrancheRequests = param->NamedLWLockTrancheRequests; NamedLWLockTrancheArray = param->NamedLWLockTrancheArray; MainLWLockArray = param->MainLWLockArray; ProcStructLock = param->ProcStructLock; ProcGlobal = param->ProcGlobal; AuxiliaryProcs = param->AuxiliaryProcs; PreparedXactProcs = param->PreparedXactProcs; PMSignalState = param->PMSignalState; read_inheritable_socket(&pgStatSock, ¶m->pgStatSock); PostmasterPid = param->PostmasterPid; PgStartTime = param->PgStartTime; PgReloadTime = param->PgReloadTime; first_syslogger_file_time = param->first_syslogger_file_time; redirection_done = param->redirection_done; IsBinaryUpgrade = param->IsBinaryUpgrade; max_safe_fds = param->max_safe_fds; MaxBackends = param->MaxBackends; #ifdef WIN32 PostmasterHandle = param->PostmasterHandle; pgwin32_initial_signal_pipe = param->initial_signal_pipe; #else memcpy(&postmaster_alive_fds, ¶m->postmaster_alive_fds, sizeof(postmaster_alive_fds)); #endif memcpy(&syslogPipe, ¶m->syslogPipe, sizeof(syslogPipe)); strlcpy(my_exec_path, param->my_exec_path, MAXPGPATH); strlcpy(pkglib_path, param->pkglib_path, MAXPGPATH); strlcpy(ExtraOptions, param->ExtraOptions, MAXPGPATH); /* * We need to restore fd.c's counts of externally-opened FDs; to avoid * confusion, be sure to do this after restoring max_safe_fds. (Note: * BackendInitialize will handle this for port->sock.) */ #ifndef WIN32 if (postmaster_alive_fds[0] >= 0) ReserveExternalFD(); if (postmaster_alive_fds[1] >= 0) ReserveExternalFD(); #endif if (pgStatSock != PGINVALID_SOCKET) ReserveExternalFD(); } Size ShmemBackendArraySize(void) { return mul_size(MaxLivePostmasterChildren(), sizeof(Backend)); } void ShmemBackendArrayAllocation(void) { Size size = ShmemBackendArraySize(); ShmemBackendArray = (Backend *) ShmemAlloc(size); /* Mark all slots as empty */ memset(ShmemBackendArray, 0, size); } static void ShmemBackendArrayAdd(Backend *bn) { /* The array slot corresponding to my PMChildSlot should be free */ int i = bn->child_slot - 1; Assert(ShmemBackendArray[i].pid == 0); ShmemBackendArray[i] = *bn; } static void ShmemBackendArrayRemove(Backend *bn) { int i = bn->child_slot - 1; Assert(ShmemBackendArray[i].pid == bn->pid); /* Mark the slot as empty */ ShmemBackendArray[i].pid = 0; } #endif /* EXEC_BACKEND */ #ifdef WIN32 /* * Subset implementation of waitpid() for Windows. We assume pid is -1 * (that is, check all child processes) and options is WNOHANG (don't wait). */ static pid_t waitpid(pid_t pid, int *exitstatus, int options) { DWORD dwd; ULONG_PTR key; OVERLAPPED *ovl; /* * Check if there are any dead children. If there are, return the pid of * the first one that died. */ if (GetQueuedCompletionStatus(win32ChildQueue, &dwd, &key, &ovl, 0)) { *exitstatus = (int) key; return dwd; } return -1; } /* * Note! Code below executes on a thread pool! All operations must * be thread safe! Note that elog() and friends must *not* be used. */ static void WINAPI pgwin32_deadchild_callback(PVOID lpParameter, BOOLEAN TimerOrWaitFired) { win32_deadchild_waitinfo *childinfo = (win32_deadchild_waitinfo *) lpParameter; DWORD exitcode; if (TimerOrWaitFired) return; /* timeout. Should never happen, since we use * INFINITE as timeout value. */ /* * Remove handle from wait - required even though it's set to wait only * once */ UnregisterWaitEx(childinfo->waitHandle, NULL); if (!GetExitCodeProcess(childinfo->procHandle, &exitcode)) { /* * Should never happen. Inform user and set a fixed exitcode. */ write_stderr("could not read exit code for process\n"); exitcode = 255; } if (!PostQueuedCompletionStatus(win32ChildQueue, childinfo->procId, (ULONG_PTR) exitcode, NULL)) write_stderr("could not post child completion status\n"); /* * Handle is per-process, so we close it here instead of in the * originating thread */ CloseHandle(childinfo->procHandle); /* * Free struct that was allocated before the call to * RegisterWaitForSingleObject() */ free(childinfo); /* Queue SIGCHLD signal */ pg_queue_signal(SIGCHLD); } #endif /* WIN32 */ /* * Initialize one and only handle for monitoring postmaster death. * * Called once in the postmaster, so that child processes can subsequently * monitor if their parent is dead. */ #ifndef WIN32 #else #endif /* WIN32 */ libpg_query-13-2.1.0/src/postgres/src_backend_storage_ipc_ipc.c000066400000000000000000000131141413137616400245340ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - proc_exit_inprogress * - proc_exit *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * ipc.c * POSTGRES inter-process communication definitions. * * This file is misnamed, as it no longer has much of anything directly * to do with IPC. The functionality here is concerned with managing * exit-time cleanup for either a postmaster or a backend. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/storage/ipc/ipc.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include "miscadmin.h" #ifdef PROFILE_PID_DIR #include "postmaster/autovacuum.h" #endif #include "storage/dsm.h" #include "storage/ipc.h" #include "tcop/tcopprot.h" /* * This flag is set during proc_exit() to change ereport()'s behavior, * so that an ereport() from an on_proc_exit routine cannot get us out * of the exit procedure. We do NOT want to go back to the idle loop... */ __thread bool proc_exit_inprogress = false; /* * Set when shmem_exit() is in progress. */ /* * This flag tracks whether we've called atexit() in the current process * (or in the parent postmaster). */ /* local functions */ static void proc_exit_prepare(int code); /* ---------------------------------------------------------------- * exit() handling stuff * * These functions are in generally the same spirit as atexit(), * but provide some additional features we need --- in particular, * we want to register callbacks to invoke when we are disconnecting * from a broken shared-memory context but not exiting the postmaster. * * Callback functions can take zero, one, or two args: the first passed * arg is the integer exitcode, the second is the Datum supplied when * the callback was registered. * ---------------------------------------------------------------- */ #define MAX_ON_EXITS 20 struct ONEXIT { pg_on_exit_callback function; Datum arg; }; /* ---------------------------------------------------------------- * proc_exit * * this function calls all the callbacks registered * for it (to free resources) and then calls exit. * * This should be the only function to call exit(). * -cim 2/6/90 * * Unfortunately, we can't really guarantee that add-on code * obeys the rule of not calling exit() directly. So, while * this is the preferred way out of the system, we also register * an atexit callback that will make sure cleanup happens. * ---------------------------------------------------------------- */ void proc_exit(int code) { printf("Terminating process due to FATAL error\n"); exit(1); } /* * Code shared between proc_exit and the atexit handler. Note that in * normal exit through proc_exit, this will actually be called twice ... * but the second call will have nothing to do. */ /* ------------------ * Run all of the on_shmem_exit routines --- but don't actually exit. * This is used by the postmaster to re-initialize shared memory and * semaphores after a backend dies horribly. As with proc_exit(), we * remove each callback from the list before calling it, to avoid * infinite loop in case of error. * ------------------ */ /* ---------------------------------------------------------------- * atexit_callback * * Backstop to ensure that direct calls of exit() don't mess us up. * * Somebody who was being really uncooperative could call _exit(), * but for that case we have a "dead man switch" that will make the * postmaster treat it as a crash --- see pmsignal.c. * ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- * on_proc_exit * * this function adds a callback function to the list of * functions invoked by proc_exit(). -cim 2/6/90 * ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- * before_shmem_exit * * Register early callback to perform user-level cleanup, * e.g. transaction abort, before we begin shutting down * low-level subsystems. * ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- * on_shmem_exit * * Register ordinary callback to perform low-level shutdown * (e.g. releasing our PGPROC); run after before_shmem_exit * callbacks and before on_proc_exit callbacks. * ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- * cancel_before_shmem_exit * * this function removes a previously-registered before_shmem_exit * callback. For simplicity, only the latest entry can be * removed. (We could work harder but there is no need for * current uses.) * ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- * on_exit_reset * * this function clears all on_proc_exit() and on_shmem_exit() * registered functions. This is used just after forking a backend, * so that the backend doesn't believe it should call the postmaster's * on-exit routines when it exits... * ---------------------------------------------------------------- */ libpg_query-13-2.1.0/src/postgres/src_backend_storage_lmgr_s_lock.c000066400000000000000000000231051413137616400254220ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - s_lock * - perform_spin_delay * - spins_per_delay * - s_lock_stuck * - finish_spin_delay *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * s_lock.c * Hardware-dependent implementation of spinlocks. * * When waiting for a contended spinlock we loop tightly for awhile, then * delay using pg_usleep() and try again. Preferably, "awhile" should be a * small multiple of the maximum time we expect a spinlock to be held. 100 * iterations seems about right as an initial guess. However, on a * uniprocessor the loop is a waste of cycles, while in a multi-CPU scenario * it's usually better to spin a bit longer than to call the kernel, so we try * to adapt the spin loop count depending on whether we seem to be in a * uniprocessor or multiprocessor. * * Note: you might think MIN_SPINS_PER_DELAY should be just 1, but you'd * be wrong; there are platforms where that can result in a "stuck * spinlock" failure. This has been seen particularly on Alphas; it seems * that the first TAS after returning from kernel space will always fail * on that hardware. * * Once we do decide to block, we use randomly increasing pg_usleep() * delays. The first delay is 1 msec, then the delay randomly increases to * about one second, after which we reset to 1 msec and start again. The * idea here is that in the presence of heavy contention we need to * increase the delay, else the spinlock holder may never get to run and * release the lock. (Consider situation where spinlock holder has been * nice'd down in priority by the scheduler --- it will not get scheduled * until all would-be acquirers are sleeping, so if we always use a 1-msec * sleep, there is a real possibility of starvation.) But we can't just * clamp the delay to an upper bound, else it would take a long time to * make a reasonable number of tries. * * We time out and declare error after NUM_DELAYS delays (thus, exactly * that many tries). With the given settings, this will usually take 2 or * so minutes. It seems better to fix the total number of tries (and thus * the probability of unintended failure) than to fix the total time * spent. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/storage/lmgr/s_lock.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include "port/atomics.h" #include "storage/s_lock.h" #define MIN_SPINS_PER_DELAY 10 #define MAX_SPINS_PER_DELAY 1000 #define NUM_DELAYS 1000 #define MIN_DELAY_USEC 1000L #define MAX_DELAY_USEC 1000000L static __thread int spins_per_delay = DEFAULT_SPINS_PER_DELAY; /* * s_lock_stuck() - complain about a stuck spinlock */ static void s_lock_stuck(const char *file, int line, const char *func) { if (!func) func = "(unknown)"; #if defined(S_LOCK_TEST) fprintf(stderr, "\nStuck spinlock detected at %s, %s:%d.\n", func, file, line); exit(1); #else elog(PANIC, "stuck spinlock detected at %s, %s:%d", func, file, line); #endif } /* * s_lock(lock) - platform-independent portion of waiting for a spinlock. */ int s_lock(volatile slock_t *lock, const char *file, int line, const char *func) { SpinDelayStatus delayStatus; init_spin_delay(&delayStatus, file, line, func); while (TAS_SPIN(lock)) { perform_spin_delay(&delayStatus); } finish_spin_delay(&delayStatus); return delayStatus.delays; } #ifdef USE_DEFAULT_S_UNLOCK void s_unlock(volatile slock_t *lock) { #ifdef TAS_ACTIVE_WORD /* HP's PA-RISC */ *TAS_ACTIVE_WORD(lock) = -1; #else *lock = 0; #endif } #endif /* * Wait while spinning on a contended spinlock. */ void perform_spin_delay(SpinDelayStatus *status) { /* CPU-specific delay each time through the loop */ SPIN_DELAY(); /* Block the process every spins_per_delay tries */ if (++(status->spins) >= spins_per_delay) { if (++(status->delays) > NUM_DELAYS) s_lock_stuck(status->file, status->line, status->func); if (status->cur_delay == 0) /* first time to delay? */ status->cur_delay = MIN_DELAY_USEC; pg_usleep(status->cur_delay); #if defined(S_LOCK_TEST) fprintf(stdout, "*"); fflush(stdout); #endif /* increase delay by a random fraction between 1X and 2X */ status->cur_delay += (int) (status->cur_delay * ((double) random() / (double) MAX_RANDOM_VALUE) + 0.5); /* wrap back to minimum delay when max is exceeded */ if (status->cur_delay > MAX_DELAY_USEC) status->cur_delay = MIN_DELAY_USEC; status->spins = 0; } } /* * After acquiring a spinlock, update estimates about how long to loop. * * If we were able to acquire the lock without delaying, it's a good * indication we are in a multiprocessor. If we had to delay, it's a sign * (but not a sure thing) that we are in a uniprocessor. Hence, we * decrement spins_per_delay slowly when we had to delay, and increase it * rapidly when we didn't. It's expected that spins_per_delay will * converge to the minimum value on a uniprocessor and to the maximum * value on a multiprocessor. * * Note: spins_per_delay is local within our current process. We want to * average these observations across multiple backends, since it's * relatively rare for this function to even get entered, and so a single * backend might not live long enough to converge on a good value. That * is handled by the two routines below. */ void finish_spin_delay(SpinDelayStatus *status) { if (status->cur_delay == 0) { /* we never had to delay */ if (spins_per_delay < MAX_SPINS_PER_DELAY) spins_per_delay = Min(spins_per_delay + 100, MAX_SPINS_PER_DELAY); } else { if (spins_per_delay > MIN_SPINS_PER_DELAY) spins_per_delay = Max(spins_per_delay - 1, MIN_SPINS_PER_DELAY); } } /* * Set local copy of spins_per_delay during backend startup. * * NB: this has to be pretty fast as it is called while holding a spinlock */ /* * Update shared estimate of spins_per_delay during backend exit. * * NB: this has to be pretty fast as it is called while holding a spinlock */ /* * Various TAS implementations that cannot live in s_lock.h as no inline * definition exists (yet). * In the future, get rid of tas.[cso] and fold it into this file. * * If you change something here, you will likely need to modify s_lock.h too, * because the definitions for these are split between this file and s_lock.h. */ #ifdef HAVE_SPINLOCKS /* skip spinlocks if requested */ #if defined(__GNUC__) /* * All the gcc flavors that are not inlined */ /* * Note: all the if-tests here probably ought to be testing gcc version * rather than platform, but I don't have adequate info to know what to * write. Ideally we'd flush all this in favor of the inline version. */ #if defined(__m68k__) && !defined(__linux__) /* really means: extern int tas(slock_t* **lock); */ static void tas_dummy() { __asm__ __volatile__( #if (defined(__NetBSD__) || defined(__OpenBSD__)) && defined(__ELF__) /* no underscore for label and % for registers */ "\ .global tas \n\ tas: \n\ movel %sp@(0x4),%a0 \n\ tas %a0@ \n\ beq _success \n\ moveq #-128,%d0 \n\ rts \n\ _success: \n\ moveq #0,%d0 \n\ rts \n" #else "\ .global _tas \n\ _tas: \n\ movel sp@(0x4),a0 \n\ tas a0@ \n\ beq _success \n\ moveq #-128,d0 \n\ rts \n\ _success: \n\ moveq #0,d0 \n\ rts \n" #endif /* (__NetBSD__ || __OpenBSD__) && __ELF__ */ ); } #endif /* __m68k__ && !__linux__ */ #endif /* not __GNUC__ */ #endif /* HAVE_SPINLOCKS */ /*****************************************************************************/ #if defined(S_LOCK_TEST) /* * test program for verifying a port's spinlock support. */ struct test_lock_struct { char pad1; slock_t lock; char pad2; }; volatile struct test_lock_struct test_lock; int main() { srandom((unsigned int) time(NULL)); test_lock.pad1 = test_lock.pad2 = 0x44; S_INIT_LOCK(&test_lock.lock); if (test_lock.pad1 != 0x44 || test_lock.pad2 != 0x44) { printf("S_LOCK_TEST: failed, declared datatype is wrong size\n"); return 1; } if (!S_LOCK_FREE(&test_lock.lock)) { printf("S_LOCK_TEST: failed, lock not initialized\n"); return 1; } S_LOCK(&test_lock.lock); if (test_lock.pad1 != 0x44 || test_lock.pad2 != 0x44) { printf("S_LOCK_TEST: failed, declared datatype is wrong size\n"); return 1; } if (S_LOCK_FREE(&test_lock.lock)) { printf("S_LOCK_TEST: failed, lock not locked\n"); return 1; } S_UNLOCK(&test_lock.lock); if (test_lock.pad1 != 0x44 || test_lock.pad2 != 0x44) { printf("S_LOCK_TEST: failed, declared datatype is wrong size\n"); return 1; } if (!S_LOCK_FREE(&test_lock.lock)) { printf("S_LOCK_TEST: failed, lock not unlocked\n"); return 1; } S_LOCK(&test_lock.lock); if (test_lock.pad1 != 0x44 || test_lock.pad2 != 0x44) { printf("S_LOCK_TEST: failed, declared datatype is wrong size\n"); return 1; } if (S_LOCK_FREE(&test_lock.lock)) { printf("S_LOCK_TEST: failed, lock not re-locked\n"); return 1; } printf("S_LOCK_TEST: this will print %d stars and then\n", NUM_DELAYS); printf(" exit with a 'stuck spinlock' message\n"); printf(" if S_LOCK() and TAS() are working.\n"); fflush(stdout); s_lock(&test_lock.lock, __FILE__, __LINE__); printf("S_LOCK_TEST: failed, lock not locked\n"); return 1; } #endif /* S_LOCK_TEST */ libpg_query-13-2.1.0/src/postgres/src_backend_tcop_postgres.c000066400000000000000000000460031413137616400243000ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - whereToSendOutput * - debug_query_string * - ProcessInterrupts * - check_stack_depth * - stack_is_too_deep * - stack_base_ptr * - max_stack_depth_bytes * - max_stack_depth *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * postgres.c * POSTGRES C Backend Interface * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/tcop/postgres.c * * NOTES * this is the "main" module of the postgres backend and * hence the main module of the "traffic cop". * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include #include #ifdef HAVE_SYS_SELECT_H #include #endif #ifdef HAVE_SYS_RESOURCE_H #include #include #endif #ifndef HAVE_GETRUSAGE #include "rusagestub.h" #endif #include "access/parallel.h" #include "access/printtup.h" #include "access/xact.h" #include "catalog/pg_type.h" #include "commands/async.h" #include "commands/prepare.h" #include "executor/spi.h" #include "jit/jit.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "libpq/pqsignal.h" #include "mb/pg_wchar.h" #include "mb/stringinfo_mb.h" #include "miscadmin.h" #include "nodes/print.h" #include "optimizer/optimizer.h" #include "parser/analyze.h" #include "parser/parser.h" #include "pg_getopt.h" #include "pg_trace.h" #include "pgstat.h" #include "postmaster/autovacuum.h" #include "postmaster/interrupt.h" #include "postmaster/postmaster.h" #include "replication/logicallauncher.h" #include "replication/logicalworker.h" #include "replication/slot.h" #include "replication/walsender.h" #include "rewrite/rewriteHandler.h" #include "storage/bufmgr.h" #include "storage/ipc.h" #include "storage/proc.h" #include "storage/procsignal.h" #include "storage/sinval.h" #include "tcop/fastpath.h" #include "tcop/pquery.h" #include "tcop/tcopprot.h" #include "tcop/utility.h" #include "utils/lsyscache.h" #include "utils/memutils.h" #include "utils/ps_status.h" #include "utils/snapmgr.h" #include "utils/timeout.h" #include "utils/timestamp.h" /* ---------------- * global variables * ---------------- */ __thread const char *debug_query_string; /* client-supplied query string */ /* Note: whereToSendOutput is initialized for the bootstrap/standalone case */ __thread CommandDest whereToSendOutput = DestDebug; /* flag for logging end of session */ /* GUC variable for maximum stack depth (measured in kilobytes) */ __thread int max_stack_depth = 100; /* wait N seconds to allow attach from a debugger */ /* ---------------- * private variables * ---------------- */ /* max_stack_depth converted to bytes for speed of checking */ static __thread long max_stack_depth_bytes = 100 * 1024L; /* * Stack base pointer -- initialized by PostmasterMain and inherited by * subprocesses. This is not static because old versions of PL/Java modify * it directly. Newer versions use set_stack_base(), but we want to stay * binary-compatible for the time being. */ __thread char *stack_base_ptr = NULL; /* * On IA64 we also have to remember the register stack base. */ #if defined(__ia64__) || defined(__ia64) char *register_stack_base_ptr = NULL; #endif /* * Flag to keep track of whether we have started a transaction. * For extended query protocol this has to be remembered across messages. */ /* * Flag to indicate that we are doing the outer loop's read-from-client, * as opposed to any random read from client that might happen within * commands like COPY FROM STDIN. */ /* * Flags to implement skip-till-Sync-after-error behavior for messages of * the extended query protocol. */ /* * If an unnamed prepared statement exists, it's stored here. * We keep it separate from the hashtable kept by commands/prepare.c * in order to reduce overhead for short-lived queries. */ /* assorted command-line switches */ /* -D switch */ /* -E switch */ /* -j switch */ /* whether or not, and why, we were canceled by conflict with recovery */ /* reused buffer to pass to SendRowDescriptionMessage() */ /* ---------------------------------------------------------------- * decls for routines only used in this file * ---------------------------------------------------------------- */ static int InteractiveBackend(StringInfo inBuf); static int interactive_getc(void); static int SocketBackend(StringInfo inBuf); static int ReadCommand(StringInfo inBuf); static void forbidden_in_wal_sender(char firstchar); static List *pg_rewrite_query(Query *query); static bool check_log_statement(List *stmt_list); static int errdetail_execute(List *raw_parsetree_list); static int errdetail_params(ParamListInfo params); static int errdetail_abort(void); static int errdetail_recovery_conflict(void); static void start_xact_command(void); static void finish_xact_command(void); static bool IsTransactionExitStmt(Node *parsetree); static bool IsTransactionExitStmtList(List *pstmts); static bool IsTransactionStmtList(List *pstmts); static void drop_unnamed_stmt(void); static void log_disconnections(int code, Datum arg); static void enable_statement_timeout(void); static void disable_statement_timeout(void); /* ---------------------------------------------------------------- * routines to obtain user input * ---------------------------------------------------------------- */ /* ---------------- * InteractiveBackend() is called for user interactive connections * * the string entered by the user is placed in its parameter inBuf, * and we act like a Q message was received. * * EOF is returned if end-of-file input is seen; time to shut down. * ---------------- */ /* * interactive_getc -- collect one character from stdin * * Even though we are not reading from a "client" process, we still want to * respond to signals, particularly SIGTERM/SIGQUIT. */ /* ---------------- * SocketBackend() Is called for frontend-backend connections * * Returns the message type code, and loads message body data into inBuf. * * EOF is returned if the connection is lost. * ---------------- */ /* ---------------- * ReadCommand reads a command from either the frontend or * standard input, places it in inBuf, and returns the * message type code (first byte of the message). * EOF is returned if end of file. * ---------------- */ /* * ProcessClientReadInterrupt() - Process interrupts specific to client reads * * This is called just before and after low-level reads. * 'blocked' is true if no data was available to read and we plan to retry, * false if about to read or done reading. * * Must preserve errno! */ /* * ProcessClientWriteInterrupt() - Process interrupts specific to client writes * * This is called just before and after low-level writes. * 'blocked' is true if no data could be written and we plan to retry, * false if about to write or done writing. * * Must preserve errno! */ /* * Do raw parsing (only). * * A list of parsetrees (RawStmt nodes) is returned, since there might be * multiple commands in the given string. * * NOTE: for interactive queries, it is important to keep this routine * separate from the analysis & rewrite stages. Analysis and rewriting * cannot be done in an aborted transaction, since they require access to * database tables. So, we rely on the raw parser to determine whether * we've seen a COMMIT or ABORT command; when we are in abort state, other * commands are not processed any further than the raw parse stage. */ #ifdef COPY_PARSE_PLAN_TREES #endif /* * Given a raw parsetree (gram.y output), and optionally information about * types of parameter symbols ($n), perform parse analysis and rule rewriting. * * A list of Query nodes is returned, since either the analyzer or the * rewriter might expand one query to several. * * NOTE: for reasons mentioned above, this must be separate from raw parsing. */ /* * Do parse analysis and rewriting. This is the same as pg_analyze_and_rewrite * except that external-parameter resolution is determined by parser callback * hooks instead of a fixed list of parameter datatypes. */ /* * Perform rewriting of a query produced by parse analysis. * * Note: query must just have come from the parser, because we do not do * AcquireRewriteLocks() on it. */ #ifdef COPY_PARSE_PLAN_TREES #endif #ifdef WRITE_READ_PARSE_PLAN_TREES #endif /* * Generate a plan for a single already-rewritten query. * This is a thin wrapper around planner() and takes the same parameters. */ #ifdef COPY_PARSE_PLAN_TREES #ifdef NOT_USED #endif #endif #ifdef WRITE_READ_PARSE_PLAN_TREES #ifdef NOT_USED #endif #endif /* * Generate plans for a list of already-rewritten queries. * * For normal optimizable statements, invoke the planner. For utility * statements, just make a wrapper PlannedStmt node. * * The result is a list of PlannedStmt nodes. */ /* * exec_simple_query * * Execute a "simple Query" protocol message. */ /* * exec_parse_message * * Execute a "Parse" protocol message. */ /* * exec_bind_message * * Process a "Bind" message to create a portal from a prepared statement */ /* * exec_execute_message * * Process an "Execute" message for a portal */ /* * check_log_statement * Determine whether command should be logged because of log_statement * * stmt_list can be either raw grammar output or a list of planned * statements */ /* * check_log_duration * Determine whether current command's duration should be logged * We also check if this statement in this transaction must be logged * (regardless of its duration). * * Returns: * 0 if no logging is needed * 1 if just the duration should be logged * 2 if duration and query details should be logged * * If logging is needed, the duration in msec is formatted into msec_str[], * which must be a 32-byte buffer. * * was_logged should be true if caller already logged query details (this * essentially prevents 2 from being returned). */ /* * errdetail_execute * * Add an errdetail() line showing the query referenced by an EXECUTE, if any. * The argument is the raw parsetree list. */ /* * errdetail_params * * Add an errdetail() line showing bind-parameter data, if available. * Note that this is only used for statement logging, so it is controlled * by log_parameter_max_length not log_parameter_max_length_on_error. */ /* * errdetail_abort * * Add an errdetail() line showing abort reason, if any. */ /* * errdetail_recovery_conflict * * Add an errdetail() line showing conflict source. */ /* * exec_describe_statement_message * * Process a "Describe" message for a prepared statement */ /* * exec_describe_portal_message * * Process a "Describe" message for a portal */ /* * Convenience routines for starting/committing a single command. */ #ifdef MEMORY_CONTEXT_CHECKING #endif #ifdef SHOW_MEMORY_STATS #endif /* * Convenience routines for checking whether a statement is one of the * ones that we allow in transaction-aborted state. */ /* Test a bare parsetree */ /* Test a list that contains PlannedStmt nodes */ /* Test a list that contains PlannedStmt nodes */ /* Release any existing unnamed prepared statement */ /* -------------------------------- * signal handler routines used in PostgresMain() * -------------------------------- */ /* * quickdie() occurs when signaled SIGQUIT by the postmaster. * * Some backend has bought the farm, * so we need to stop what we're doing and exit. */ /* * Shutdown signal from postmaster: abort transaction and exit * at soonest convenient time */ /* * Query-cancel signal from postmaster: abort current transaction * at soonest convenient time */ /* signal handler for floating point exception */ /* * RecoveryConflictInterrupt: out-of-line portion of recovery conflict * handling following receipt of SIGUSR1. Designed to be similar to die() * and StatementCancelHandler(). Called only by a normal user backend * that begins a transaction during recovery. */ /* * ProcessInterrupts: out-of-line portion of CHECK_FOR_INTERRUPTS() macro * * If an interrupt condition is pending, and it's safe to service it, * then clear the flag and accept the interrupt. Called only when * InterruptPending is true. */ void ProcessInterrupts(void) {} /* * IA64-specific code to fetch the AR.BSP register for stack depth checks. * * We currently support gcc, icc, and HP-UX's native compiler here. * * Note: while icc accepts gcc asm blocks on x86[_64], this is not true on * ia64 (at least not in icc versions before 12.x). So we have to carry a * separate implementation for it. */ #if defined(__ia64__) || defined(__ia64) #if defined(__hpux) && !defined(__GNUC__) && !defined(__INTEL_COMPILER) /* Assume it's HP-UX native compiler */ #include #define ia64_get_bsp() ((char *) (_Asm_mov_from_ar(_AREG_BSP, _NO_FENCE))) #elif defined(__INTEL_COMPILER) /* icc */ #include #define ia64_get_bsp() ((char *) __getReg(_IA64_REG_AR_BSP)) #else /* gcc */ static __inline__ char * ia64_get_bsp(void) { char *ret; /* the ;; is a "stop", seems to be required before fetching BSP */ __asm__ __volatile__( ";;\n" " mov %0=ar.bsp \n" : "=r"(ret)); return ret; } #endif #endif /* IA64 */ /* * set_stack_base: set up reference point for stack depth checking * * Returns the old reference point, if any. */ #if defined(__ia64__) || defined(__ia64) #else #endif #if defined(__ia64__) || defined(__ia64) #endif /* * restore_stack_base: restore reference point for stack depth checking * * This can be used after set_stack_base() to restore the old value. This * is currently only used in PL/Java. When PL/Java calls a backend function * from different thread, the thread's stack is at a different location than * the main thread's stack, so it sets the base pointer before the call, and * restores it afterwards. */ #if defined(__ia64__) || defined(__ia64) #else #endif /* * check_stack_depth/stack_is_too_deep: check for excessively deep recursion * * This should be called someplace in any recursive routine that might possibly * recurse deep enough to overflow the stack. Most Unixen treat stack * overflow as an unrecoverable SIGSEGV, so we want to error out ourselves * before hitting the hardware limit. * * check_stack_depth() just throws an error summarily. stack_is_too_deep() * can be used by code that wants to handle the error condition itself. */ void check_stack_depth(void) { if (stack_is_too_deep()) { ereport(ERROR, (errcode(ERRCODE_STATEMENT_TOO_COMPLEX), errmsg("stack depth limit exceeded"), errhint("Increase the configuration parameter \"max_stack_depth\" (currently %dkB), " "after ensuring the platform's stack depth limit is adequate.", max_stack_depth))); } } bool stack_is_too_deep(void) { char stack_top_loc; long stack_depth; /* * Compute distance from reference point to my local variables */ stack_depth = (long) (stack_base_ptr - &stack_top_loc); /* * Take abs value, since stacks grow up on some machines, down on others */ if (stack_depth < 0) stack_depth = -stack_depth; /* * Trouble? * * The test on stack_base_ptr prevents us from erroring out if called * during process setup or in a non-backend process. Logically it should * be done first, but putting it here avoids wasting cycles during normal * cases. */ if (stack_depth > max_stack_depth_bytes && stack_base_ptr != NULL) return true; /* * On IA64 there is a separate "register" stack that requires its own * independent check. For this, we have to measure the change in the * "BSP" pointer from PostgresMain to here. Logic is just as above, * except that we know IA64's register stack grows up. * * Note we assume that the same max_stack_depth applies to both stacks. */ #if defined(__ia64__) || defined(__ia64) stack_depth = (long) (ia64_get_bsp() - register_stack_base_ptr); if (stack_depth > max_stack_depth_bytes && register_stack_base_ptr != NULL) return true; #endif /* IA64 */ return false; } /* GUC check hook for max_stack_depth */ /* GUC assign hook for max_stack_depth */ /* * set_debug_options --- apply "-d N" command line option * * -d is not quite the same as setting log_min_messages because it enables * other output options. */ /* ---------------------------------------------------------------- * process_postgres_switches * Parse command line arguments for PostgresMain * * This is called twice, once for the "secure" options coming from the * postmaster or command line, and once for the "insecure" options coming * from the client's startup packet. The latter have the same syntax but * may be restricted in what they can do. * * argv[0] is ignored in either case (it's assumed to be the program name). * * ctx is PGC_POSTMASTER for secure options, PGC_BACKEND for insecure options * coming from the client, or PGC_SU_BACKEND for insecure options coming from * a superuser client. * * If a database name is present in the command line arguments, it's * returned into *dbname (this is allowed only if *dbname is initially NULL). * ---------------------------------------------------------------- */ #ifdef HAVE_INT_OPTERR #endif #ifdef HAVE_INT_OPTRESET #endif /* ---------------------------------------------------------------- * PostgresMain * postgres main loop -- all backends, interactive or otherwise start here * * argc/argv are the command line arguments to be used. (When being forked * by the postmaster, these are not the original argv array of the process.) * dbname is the name of the database to connect to, or NULL if the database * name should be extracted from the command line arguments or defaulted. * username is the PostgreSQL user name to be used for the session. * ---------------------------------------------------------------- */ #ifdef EXEC_BACKEND #else #endif /* * Throw an error if we're a WAL sender process. * * This is used to forbid anything else than simple query protocol messages * in a WAL sender process. 'firstchar' specifies what kind of a forbidden * message was received, and is used to construct the error message. */ /* * Obtain platform stack depth limit (in bytes) * * Return -1 if unknown */ #if defined(HAVE_GETRLIMIT) && defined(RLIMIT_STACK) #else /* no getrlimit */ #if defined(WIN32) || defined(__CYGWIN__) #else /* not windows ... give up */ #endif #endif #if defined(HAVE_GETRUSAGE) #if defined(__darwin__) #else #endif #endif /* HAVE_GETRUSAGE */ /* * on_proc_exit handler to log end of session */ /* * Start statement timeout timer, if enabled. * * If there's already a timeout running, don't restart the timer. That * enables compromises between accuracy of timeouts and cost of starting a * timeout. */ /* * Disable statement timeout, if active. */ libpg_query-13-2.1.0/src/postgres/src_backend_utils_adt_datum.c000066400000000000000000000246671413137616400246030ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - datumCopy * - datumGetSize * - datumIsEqual *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * datum.c * POSTGRES Datum (abstract data type) manipulation routines. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/adt/datum.c * *------------------------------------------------------------------------- */ /* * In the implementation of these routines we assume the following: * * A) if a type is "byVal" then all the information is stored in the * Datum itself (i.e. no pointers involved!). In this case the * length of the type is always greater than zero and not more than * "sizeof(Datum)" * * B) if a type is not "byVal" and it has a fixed length (typlen > 0), * then the "Datum" always contains a pointer to a stream of bytes. * The number of significant bytes are always equal to the typlen. * * C) if a type is not "byVal" and has typlen == -1, * then the "Datum" always points to a "struct varlena". * This varlena structure has information about the actual length of this * particular instance of the type and about its value. * * D) if a type is not "byVal" and has typlen == -2, * then the "Datum" always points to a null-terminated C string. * * Note that we do not treat "toasted" datums specially; therefore what * will be copied or compared is the compressed data or toast reference. * An exception is made for datumCopy() of an expanded object, however, * because most callers expect to get a simple contiguous (and pfree'able) * result from datumCopy(). See also datumTransfer(). */ #include "postgres.h" #include "access/detoast.h" #include "fmgr.h" #include "utils/builtins.h" #include "utils/datum.h" #include "utils/expandeddatum.h" /*------------------------------------------------------------------------- * datumGetSize * * Find the "real" size of a datum, given the datum value, * whether it is a "by value", and the declared type length. * (For TOAST pointer datums, this is the size of the pointer datum.) * * This is essentially an out-of-line version of the att_addlength_datum() * macro in access/tupmacs.h. We do a tad more error checking though. *------------------------------------------------------------------------- */ Size datumGetSize(Datum value, bool typByVal, int typLen) { Size size; if (typByVal) { /* Pass-by-value types are always fixed-length */ Assert(typLen > 0 && typLen <= sizeof(Datum)); size = (Size) typLen; } else { if (typLen > 0) { /* Fixed-length pass-by-ref type */ size = (Size) typLen; } else if (typLen == -1) { /* It is a varlena datatype */ struct varlena *s = (struct varlena *) DatumGetPointer(value); if (!PointerIsValid(s)) ereport(ERROR, (errcode(ERRCODE_DATA_EXCEPTION), errmsg("invalid Datum pointer"))); size = (Size) VARSIZE_ANY(s); } else if (typLen == -2) { /* It is a cstring datatype */ char *s = (char *) DatumGetPointer(value); if (!PointerIsValid(s)) ereport(ERROR, (errcode(ERRCODE_DATA_EXCEPTION), errmsg("invalid Datum pointer"))); size = (Size) (strlen(s) + 1); } else { elog(ERROR, "invalid typLen: %d", typLen); size = 0; /* keep compiler quiet */ } } return size; } /*------------------------------------------------------------------------- * datumCopy * * Make a copy of a non-NULL datum. * * If the datatype is pass-by-reference, memory is obtained with palloc(). * * If the value is a reference to an expanded object, we flatten into memory * obtained with palloc(). We need to copy because one of the main uses of * this function is to copy a datum out of a transient memory context that's * about to be destroyed, and the expanded object is probably in a child * context that will also go away. Moreover, many callers assume that the * result is a single pfree-able chunk. *------------------------------------------------------------------------- */ Datum datumCopy(Datum value, bool typByVal, int typLen) { Datum res; if (typByVal) res = value; else if (typLen == -1) { /* It is a varlena datatype */ struct varlena *vl = (struct varlena *) DatumGetPointer(value); if (VARATT_IS_EXTERNAL_EXPANDED(vl)) { /* Flatten into the caller's memory context */ ExpandedObjectHeader *eoh = DatumGetEOHP(value); Size resultsize; char *resultptr; resultsize = EOH_get_flat_size(eoh); resultptr = (char *) palloc(resultsize); EOH_flatten_into(eoh, (void *) resultptr, resultsize); res = PointerGetDatum(resultptr); } else { /* Otherwise, just copy the varlena datum verbatim */ Size realSize; char *resultptr; realSize = (Size) VARSIZE_ANY(vl); resultptr = (char *) palloc(realSize); memcpy(resultptr, vl, realSize); res = PointerGetDatum(resultptr); } } else { /* Pass by reference, but not varlena, so not toasted */ Size realSize; char *resultptr; realSize = datumGetSize(value, typByVal, typLen); resultptr = (char *) palloc(realSize); memcpy(resultptr, DatumGetPointer(value), realSize); res = PointerGetDatum(resultptr); } return res; } /*------------------------------------------------------------------------- * datumTransfer * * Transfer a non-NULL datum into the current memory context. * * This is equivalent to datumCopy() except when the datum is a read-write * pointer to an expanded object. In that case we merely reparent the object * into the current context, and return its standard R/W pointer (in case the * given one is a transient pointer of shorter lifespan). *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * datumIsEqual * * Return true if two datums are equal, false otherwise * * NOTE: XXX! * We just compare the bytes of the two values, one by one. * This routine will return false if there are 2 different * representations of the same value (something along the lines * of say the representation of zero in one's complement arithmetic). * Also, it will probably not give the answer you want if either * datum has been "toasted". * * Do not try to make this any smarter than it currently is with respect * to "toasted" datums, because some of the callers could be working in the * context of an aborted transaction. *------------------------------------------------------------------------- */ bool datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen) { bool res; if (typByVal) { /* * just compare the two datums. NOTE: just comparing "len" bytes will * not do the work, because we do not know how these bytes are aligned * inside the "Datum". We assume instead that any given datatype is * consistent about how it fills extraneous bits in the Datum. */ res = (value1 == value2); } else { Size size1, size2; char *s1, *s2; /* * Compare the bytes pointed by the pointers stored in the datums. */ size1 = datumGetSize(value1, typByVal, typLen); size2 = datumGetSize(value2, typByVal, typLen); if (size1 != size2) return false; s1 = (char *) DatumGetPointer(value1); s2 = (char *) DatumGetPointer(value2); res = (memcmp(s1, s2, size1) == 0); } return res; } /*------------------------------------------------------------------------- * datum_image_eq * * Compares two datums for identical contents, based on byte images. Return * true if the two datums are equal, false otherwise. *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * btequalimage * * Generic "equalimage" support function. * * B-Tree operator classes whose equality function could safely be replaced by * datum_image_eq() in all cases can use this as their "equalimage" support * function. * * Currently, we unconditionally assume that any B-Tree operator class that * registers btequalimage as its support function 4 must be able to safely use * optimizations like deduplication (i.e. we return true unconditionally). If * it ever proved necessary to rescind support for an operator class, we could * do that in a targeted fashion by doing something with the opcintype * argument. *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * datumEstimateSpace * * Compute the amount of space that datumSerialize will require for a * particular Datum. *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * datumSerialize * * Serialize a possibly-NULL datum into caller-provided storage. * * Note: "expanded" objects are flattened so as to produce a self-contained * representation, but other sorts of toast pointers are transferred as-is. * This is because the intended use of this function is to pass the value * to another process within the same database server. The other process * could not access an "expanded" object within this process's memory, but * we assume it can dereference the same TOAST pointers this one can. * * The format is as follows: first, we write a 4-byte header word, which * is either the length of a pass-by-reference datum, -1 for a * pass-by-value datum, or -2 for a NULL. If the value is NULL, nothing * further is written. If it is pass-by-value, sizeof(Datum) bytes * follow. Otherwise, the number of bytes indicated by the header word * follow. The caller is responsible for ensuring that there is enough * storage to store the number of bytes that will be written; use * datumEstimateSpace() to find out how many will be needed. * *start_address is updated to point to the byte immediately following * those written. *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * datumRestore * * Restore a possibly-NULL datum previously serialized by datumSerialize. * *start_address is updated according to the number of bytes consumed. *------------------------------------------------------------------------- */ libpg_query-13-2.1.0/src/postgres/src_backend_utils_adt_expandeddatum.c000066400000000000000000000050441413137616400263000ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - DatumGetEOHP * - EOH_get_flat_size * - EOH_flatten_into *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * expandeddatum.c * Support functions for "expanded" value representations. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/adt/expandeddatum.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "utils/expandeddatum.h" #include "utils/memutils.h" /* * DatumGetEOHP * * Given a Datum that is an expanded-object reference, extract the pointer. * * This is a bit tedious since the pointer may not be properly aligned; * compare VARATT_EXTERNAL_GET_POINTER(). */ ExpandedObjectHeader * DatumGetEOHP(Datum d) { varattrib_1b_e *datum = (varattrib_1b_e *) DatumGetPointer(d); varatt_expanded ptr; Assert(VARATT_IS_EXTERNAL_EXPANDED(datum)); memcpy(&ptr, VARDATA_EXTERNAL(datum), sizeof(ptr)); Assert(VARATT_IS_EXPANDED_HEADER(ptr.eohptr)); return ptr.eohptr; } /* * EOH_init_header * * Initialize the common header of an expanded object. * * The main thing this encapsulates is initializing the TOAST pointers. */ /* * EOH_get_flat_size * EOH_flatten_into * * Convenience functions for invoking the "methods" of an expanded object. */ Size EOH_get_flat_size(ExpandedObjectHeader *eohptr) { return eohptr->eoh_methods->get_flat_size(eohptr); } void EOH_flatten_into(ExpandedObjectHeader *eohptr, void *result, Size allocated_size) { eohptr->eoh_methods->flatten_into(eohptr, result, allocated_size); } /* * If the Datum represents a R/W expanded object, change it to R/O. * Otherwise return the original Datum. * * Caller must ensure that the datum is a non-null varlena value. Typically * this is invoked via MakeExpandedObjectReadOnly(), which checks that. */ /* * Transfer ownership of an expanded object to a new parent memory context. * The object must be referenced by a R/W pointer, and what we return is * always its "standard" R/W pointer, which is certain to have the same * lifespan as the object itself. (The passed-in pointer might not, and * in any case wouldn't provide a unique identifier if it's not that one.) */ /* * Delete an expanded object (must be referenced by a R/W pointer). */ libpg_query-13-2.1.0/src/postgres/src_backend_utils_adt_format_type.c000066400000000000000000000106551413137616400260120ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - format_type_be *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * format_type.c * Display type names "nicely". * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/utils/adt/format_type.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include "access/htup_details.h" #include "catalog/namespace.h" #include "catalog/pg_type.h" #include "mb/pg_wchar.h" #include "utils/builtins.h" #include "utils/lsyscache.h" #include "utils/numeric.h" #include "utils/syscache.h" static char *printTypmod(const char *typname, int32 typmod, Oid typmodout); /* * SQL function: format_type(type_oid, typemod) * * `type_oid' is from pg_type.oid, `typemod' is from * pg_attribute.atttypmod. This function will get the type name and * format it and the modifier to canonical SQL format, if the type is * a standard type. Otherwise you just get pg_type.typname back, * double quoted if it contains funny characters or matches a keyword. * * If typemod is NULL then we are formatting a type name in a context where * no typemod is available, eg a function argument or result type. This * yields a slightly different result from specifying typemod = -1 in some * cases. Given typemod = -1 we feel compelled to produce an output that * the parser will interpret as having typemod -1, so that pg_dump will * produce CREATE TABLE commands that recreate the original state. But * given NULL typemod, we assume that the parser's interpretation of * typemod doesn't matter, and so we are willing to output a slightly * "prettier" representation of the same type. For example, type = bpchar * and typemod = NULL gets you "character", whereas typemod = -1 gets you * "bpchar" --- the former will be interpreted as character(1) by the * parser, which does not yield typemod -1. * * XXX encoding a meaning in typemod = NULL is ugly; it'd have been * cleaner to make two functions of one and two arguments respectively. * Not worth changing it now, however. */ /* * format_type_extended * Generate a possibly-qualified type name. * * The default behavior is to only qualify if the type is not in the search * path, to ignore the given typmod, and to raise an error if a non-existent * type_oid is given. * * The following bits in 'flags' modify the behavior: * - FORMAT_TYPE_TYPEMOD_GIVEN * include the typmod in the output (typmod could still be -1 though) * - FORMAT_TYPE_ALLOW_INVALID * if the type OID is invalid or unknown, return ??? or such instead * of failing * - FORMAT_TYPE_FORCE_QUALIFY * always schema-qualify type names, regardless of search_path * * Note that TYPEMOD_GIVEN is not interchangeable with "typemod == -1"; * see the comments above for format_type(). * * Returns a palloc'd string. */ /* * This version is for use within the backend in error messages, etc. * One difference is that it will fail for an invalid type. * * The result is always a palloc'd string. */ char * format_type_be(Oid type_oid) { return pstrdup("-"); } /* * This version returns a name that is always qualified (unless it's one * of the SQL-keyword type names, such as TIMESTAMP WITH TIME ZONE). */ /* * This version allows a nondefault typemod to be specified. */ /* * Add typmod decoration to the basic type name */ /* * type_maximum_size --- determine maximum width of a variable-width column * * If the max width is indeterminate, return -1. In particular, we return * -1 for any type not known to this routine. We assume the caller has * already determined that the type is a variable-width type, so it's not * necessary to look up the type's pg_type tuple here. * * This may appear unrelated to format_type(), but in fact the two routines * share knowledge of the encoding of typmod for different types, so it's * convenient to keep them together. (XXX now that most of this knowledge * has been pushed out of format_type into the typmodout functions, it's * interesting to wonder if it's worth trying to factor this code too...) */ /* * oidvectortypes - converts a vector of type OIDs to "typname" list */ libpg_query-13-2.1.0/src/postgres/src_backend_utils_adt_ruleutils.c000066400000000000000000001525011413137616400255060ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - quote_identifier * - quote_all_identifiers *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * ruleutils.c * Functions to convert stored expressions/querytrees back to * source text * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/adt/ruleutils.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include "access/amapi.h" #include "access/htup_details.h" #include "access/relation.h" #include "access/sysattr.h" #include "access/table.h" #include "catalog/dependency.h" #include "catalog/indexing.h" #include "catalog/pg_aggregate.h" #include "catalog/pg_am.h" #include "catalog/pg_authid.h" #include "catalog/pg_collation.h" #include "catalog/pg_constraint.h" #include "catalog/pg_depend.h" #include "catalog/pg_language.h" #include "catalog/pg_opclass.h" #include "catalog/pg_operator.h" #include "catalog/pg_partitioned_table.h" #include "catalog/pg_proc.h" #include "catalog/pg_statistic_ext.h" #include "catalog/pg_trigger.h" #include "catalog/pg_type.h" #include "commands/defrem.h" #include "commands/tablespace.h" #include "common/keywords.h" #include "executor/spi.h" #include "funcapi.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "nodes/pathnodes.h" #include "optimizer/optimizer.h" #include "parser/parse_agg.h" #include "parser/parse_func.h" #include "parser/parse_node.h" #include "parser/parse_oper.h" #include "parser/parser.h" #include "parser/parsetree.h" #include "rewrite/rewriteHandler.h" #include "rewrite/rewriteManip.h" #include "rewrite/rewriteSupport.h" #include "utils/array.h" #include "utils/builtins.h" #include "utils/fmgroids.h" #include "utils/guc.h" #include "utils/hsearch.h" #include "utils/lsyscache.h" #include "utils/partcache.h" #include "utils/rel.h" #include "utils/ruleutils.h" #include "utils/snapmgr.h" #include "utils/syscache.h" #include "utils/typcache.h" #include "utils/varlena.h" #include "utils/xml.h" /* ---------- * Pretty formatting constants * ---------- */ /* Indent counts */ #define PRETTYINDENT_STD 8 #define PRETTYINDENT_JOIN 4 #define PRETTYINDENT_VAR 4 #define PRETTYINDENT_LIMIT 40 /* wrap limit */ /* Pretty flags */ #define PRETTYFLAG_PAREN 0x0001 #define PRETTYFLAG_INDENT 0x0002 #define PRETTYFLAG_SCHEMA 0x0004 /* Default line length for pretty-print wrapping: 0 means wrap always */ #define WRAP_COLUMN_DEFAULT 0 /* macros to test if pretty action needed */ #define PRETTY_PAREN(context) ((context)->prettyFlags & PRETTYFLAG_PAREN) #define PRETTY_INDENT(context) ((context)->prettyFlags & PRETTYFLAG_INDENT) #define PRETTY_SCHEMA(context) ((context)->prettyFlags & PRETTYFLAG_SCHEMA) /* ---------- * Local data types * ---------- */ /* Context info needed for invoking a recursive querytree display routine */ typedef struct { StringInfo buf; /* output buffer to append to */ List *namespaces; /* List of deparse_namespace nodes */ List *windowClause; /* Current query level's WINDOW clause */ List *windowTList; /* targetlist for resolving WINDOW clause */ int prettyFlags; /* enabling of pretty-print functions */ int wrapColumn; /* max line length, or -1 for no limit */ int indentLevel; /* current indent level for pretty-print */ bool varprefix; /* true to print prefixes on Vars */ ParseExprKind special_exprkind; /* set only for exprkinds needing special * handling */ Bitmapset *appendparents; /* if not null, map child Vars of these relids * back to the parent rel */ } deparse_context; /* * Each level of query context around a subtree needs a level of Var namespace. * A Var having varlevelsup=N refers to the N'th item (counting from 0) in * the current context's namespaces list. * * rtable is the list of actual RTEs from the Query or PlannedStmt. * rtable_names holds the alias name to be used for each RTE (either a C * string, or NULL for nameless RTEs such as unnamed joins). * rtable_columns holds the column alias names to be used for each RTE. * * subplans is a list of Plan trees for SubPlans and CTEs (it's only used * in the PlannedStmt case). * ctes is a list of CommonTableExpr nodes (only used in the Query case). * appendrels, if not null (it's only used in the PlannedStmt case), is an * array of AppendRelInfo nodes, indexed by child relid. We use that to map * child-table Vars to their inheritance parents. * * In some cases we need to make names of merged JOIN USING columns unique * across the whole query, not only per-RTE. If so, unique_using is true * and using_names is a list of C strings representing names already assigned * to USING columns. * * When deparsing plan trees, there is always just a single item in the * deparse_namespace list (since a plan tree never contains Vars with * varlevelsup > 0). We store the Plan node that is the immediate * parent of the expression to be deparsed, as well as a list of that * Plan's ancestors. In addition, we store its outer and inner subplan nodes, * as well as their targetlists, and the index tlist if the current plan node * might contain INDEX_VAR Vars. (These fields could be derived on-the-fly * from the current Plan node, but it seems notationally clearer to set them * up as separate fields.) */ typedef struct { List *rtable; /* List of RangeTblEntry nodes */ List *rtable_names; /* Parallel list of names for RTEs */ List *rtable_columns; /* Parallel list of deparse_columns structs */ List *subplans; /* List of Plan trees for SubPlans */ List *ctes; /* List of CommonTableExpr nodes */ AppendRelInfo **appendrels; /* Array of AppendRelInfo nodes, or NULL */ /* Workspace for column alias assignment: */ bool unique_using; /* Are we making USING names globally unique */ List *using_names; /* List of assigned names for USING columns */ /* Remaining fields are used only when deparsing a Plan tree: */ Plan *plan; /* immediate parent of current expression */ List *ancestors; /* ancestors of plan */ Plan *outer_plan; /* outer subnode, or NULL if none */ Plan *inner_plan; /* inner subnode, or NULL if none */ List *outer_tlist; /* referent for OUTER_VAR Vars */ List *inner_tlist; /* referent for INNER_VAR Vars */ List *index_tlist; /* referent for INDEX_VAR Vars */ } deparse_namespace; /* * Per-relation data about column alias names. * * Selecting aliases is unreasonably complicated because of the need to dump * rules/views whose underlying tables may have had columns added, deleted, or * renamed since the query was parsed. We must nonetheless print the rule/view * in a form that can be reloaded and will produce the same results as before. * * For each RTE used in the query, we must assign column aliases that are * unique within that RTE. SQL does not require this of the original query, * but due to factors such as *-expansion we need to be able to uniquely * reference every column in a decompiled query. As long as we qualify all * column references, per-RTE uniqueness is sufficient for that. * * However, we can't ensure per-column name uniqueness for unnamed join RTEs, * since they just inherit column names from their input RTEs, and we can't * rename the columns at the join level. Most of the time this isn't an issue * because we don't need to reference the join's output columns as such; we * can reference the input columns instead. That approach can fail for merged * JOIN USING columns, however, so when we have one of those in an unnamed * join, we have to make that column's alias globally unique across the whole * query to ensure it can be referenced unambiguously. * * Another problem is that a JOIN USING clause requires the columns to be * merged to have the same aliases in both input RTEs, and that no other * columns in those RTEs or their children conflict with the USING names. * To handle that, we do USING-column alias assignment in a recursive * traversal of the query's jointree. When descending through a JOIN with * USING, we preassign the USING column names to the child columns, overriding * other rules for column alias assignment. We also mark each RTE with a list * of all USING column names selected for joins containing that RTE, so that * when we assign other columns' aliases later, we can avoid conflicts. * * Another problem is that if a JOIN's input tables have had columns added or * deleted since the query was parsed, we must generate a column alias list * for the join that matches the current set of input columns --- otherwise, a * change in the number of columns in the left input would throw off matching * of aliases to columns of the right input. Thus, positions in the printable * column alias list are not necessarily one-for-one with varattnos of the * JOIN, so we need a separate new_colnames[] array for printing purposes. */ typedef struct { /* * colnames is an array containing column aliases to use for columns that * existed when the query was parsed. Dropped columns have NULL entries. * This array can be directly indexed by varattno to get a Var's name. * * Non-NULL entries are guaranteed unique within the RTE, *except* when * this is for an unnamed JOIN RTE. In that case we merely copy up names * from the two input RTEs. * * During the recursive descent in set_using_names(), forcible assignment * of a child RTE's column name is represented by pre-setting that element * of the child's colnames array. So at that stage, NULL entries in this * array just mean that no name has been preassigned, not necessarily that * the column is dropped. */ int num_cols; /* length of colnames[] array */ char **colnames; /* array of C strings and NULLs */ /* * new_colnames is an array containing column aliases to use for columns * that would exist if the query was re-parsed against the current * definitions of its base tables. This is what to print as the column * alias list for the RTE. This array does not include dropped columns, * but it will include columns added since original parsing. Indexes in * it therefore have little to do with current varattno values. As above, * entries are unique unless this is for an unnamed JOIN RTE. (In such an * RTE, we never actually print this array, but we must compute it anyway * for possible use in computing column names of upper joins.) The * parallel array is_new_col marks which of these columns are new since * original parsing. Entries with is_new_col false must match the * non-NULL colnames entries one-for-one. */ int num_new_cols; /* length of new_colnames[] array */ char **new_colnames; /* array of C strings */ bool *is_new_col; /* array of bool flags */ /* This flag tells whether we should actually print a column alias list */ bool printaliases; /* This list has all names used as USING names in joins above this RTE */ List *parentUsing; /* names assigned to parent merged columns */ /* * If this struct is for a JOIN RTE, we fill these fields during the * set_using_names() pass to describe its relationship to its child RTEs. * * leftattnos and rightattnos are arrays with one entry per existing * output column of the join (hence, indexable by join varattno). For a * simple reference to a column of the left child, leftattnos[i] is the * child RTE's attno and rightattnos[i] is zero; and conversely for a * column of the right child. But for merged columns produced by JOIN * USING/NATURAL JOIN, both leftattnos[i] and rightattnos[i] are nonzero. * Note that a simple reference might be to a child RTE column that's been * dropped; but that's OK since the column could not be used in the query. * * If it's a JOIN USING, usingNames holds the alias names selected for the * merged columns (these might be different from the original USING list, * if we had to modify names to achieve uniqueness). */ int leftrti; /* rangetable index of left child */ int rightrti; /* rangetable index of right child */ int *leftattnos; /* left-child varattnos of join cols, or 0 */ int *rightattnos; /* right-child varattnos of join cols, or 0 */ List *usingNames; /* names assigned to merged columns */ } deparse_columns; /* This macro is analogous to rt_fetch(), but for deparse_columns structs */ #define deparse_columns_fetch(rangetable_index, dpns) \ ((deparse_columns *) list_nth((dpns)->rtable_columns, (rangetable_index)-1)) /* * Entry in set_rtable_names' hash table */ typedef struct { char name[NAMEDATALEN]; /* Hash key --- must be first */ int counter; /* Largest addition used so far for name */ } NameHashEntry; /* Callback signature for resolve_special_varno() */ typedef void (*rsv_callback) (Node *node, deparse_context *context, void *callback_arg); /* ---------- * Global data * ---------- */ /* GUC parameters */ __thread bool quote_all_identifiers = false; /* ---------- * Local functions * * Most of these functions used to use fixed-size buffers to build their * results. Now, they take an (already initialized) StringInfo object * as a parameter, and append their text output to its contents. * ---------- */ static char *deparse_expression_pretty(Node *expr, List *dpcontext, bool forceprefix, bool showimplicit, int prettyFlags, int startIndent); static char *pg_get_viewdef_worker(Oid viewoid, int prettyFlags, int wrapColumn); static char *pg_get_triggerdef_worker(Oid trigid, bool pretty); static int decompile_column_index_array(Datum column_index_array, Oid relId, StringInfo buf); static char *pg_get_ruledef_worker(Oid ruleoid, int prettyFlags); static char *pg_get_indexdef_worker(Oid indexrelid, int colno, const Oid *excludeOps, bool attrsOnly, bool keysOnly, bool showTblSpc, bool inherits, int prettyFlags, bool missing_ok); static char *pg_get_statisticsobj_worker(Oid statextid, bool missing_ok); static char *pg_get_partkeydef_worker(Oid relid, int prettyFlags, bool attrsOnly, bool missing_ok); static char *pg_get_constraintdef_worker(Oid constraintId, bool fullCommand, int prettyFlags, bool missing_ok); static text *pg_get_expr_worker(text *expr, Oid relid, const char *relname, int prettyFlags); static int print_function_arguments(StringInfo buf, HeapTuple proctup, bool print_table_args, bool print_defaults); static void print_function_rettype(StringInfo buf, HeapTuple proctup); static void print_function_trftypes(StringInfo buf, HeapTuple proctup); static void set_rtable_names(deparse_namespace *dpns, List *parent_namespaces, Bitmapset *rels_used); static void set_deparse_for_query(deparse_namespace *dpns, Query *query, List *parent_namespaces); static void set_simple_column_names(deparse_namespace *dpns); static bool has_dangerous_join_using(deparse_namespace *dpns, Node *jtnode); static void set_using_names(deparse_namespace *dpns, Node *jtnode, List *parentUsing); static void set_relation_column_names(deparse_namespace *dpns, RangeTblEntry *rte, deparse_columns *colinfo); static void set_join_column_names(deparse_namespace *dpns, RangeTblEntry *rte, deparse_columns *colinfo); static bool colname_is_unique(const char *colname, deparse_namespace *dpns, deparse_columns *colinfo); static char *make_colname_unique(char *colname, deparse_namespace *dpns, deparse_columns *colinfo); static void expand_colnames_array_to(deparse_columns *colinfo, int n); static void identify_join_columns(JoinExpr *j, RangeTblEntry *jrte, deparse_columns *colinfo); static char *get_rtable_name(int rtindex, deparse_context *context); static void set_deparse_plan(deparse_namespace *dpns, Plan *plan); static void push_child_plan(deparse_namespace *dpns, Plan *plan, deparse_namespace *save_dpns); static void pop_child_plan(deparse_namespace *dpns, deparse_namespace *save_dpns); static void push_ancestor_plan(deparse_namespace *dpns, ListCell *ancestor_cell, deparse_namespace *save_dpns); static void pop_ancestor_plan(deparse_namespace *dpns, deparse_namespace *save_dpns); static void make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, int prettyFlags); static void make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, int prettyFlags, int wrapColumn); static void get_query_def(Query *query, StringInfo buf, List *parentnamespace, TupleDesc resultDesc, int prettyFlags, int wrapColumn, int startIndent); static void get_values_def(List *values_lists, deparse_context *context); static void get_with_clause(Query *query, deparse_context *context); static void get_select_query_def(Query *query, deparse_context *context, TupleDesc resultDesc); static void get_insert_query_def(Query *query, deparse_context *context); static void get_update_query_def(Query *query, deparse_context *context); static void get_update_query_targetlist_def(Query *query, List *targetList, deparse_context *context, RangeTblEntry *rte); static void get_delete_query_def(Query *query, deparse_context *context); static void get_utility_query_def(Query *query, deparse_context *context); static void get_basic_select_query(Query *query, deparse_context *context, TupleDesc resultDesc); static void get_target_list(List *targetList, deparse_context *context, TupleDesc resultDesc); static void get_setop_query(Node *setOp, Query *query, deparse_context *context, TupleDesc resultDesc); static Node *get_rule_sortgroupclause(Index ref, List *tlist, bool force_colno, deparse_context *context); static void get_rule_groupingset(GroupingSet *gset, List *targetlist, bool omit_parens, deparse_context *context); static void get_rule_orderby(List *orderList, List *targetList, bool force_colno, deparse_context *context); static void get_rule_windowclause(Query *query, deparse_context *context); static void get_rule_windowspec(WindowClause *wc, List *targetList, deparse_context *context); static char *get_variable(Var *var, int levelsup, bool istoplevel, deparse_context *context); static void get_special_variable(Node *node, deparse_context *context, void *callback_arg); static void resolve_special_varno(Node *node, deparse_context *context, rsv_callback callback, void *callback_arg); static Node *find_param_referent(Param *param, deparse_context *context, deparse_namespace **dpns_p, ListCell **ancestor_cell_p); static void get_parameter(Param *param, deparse_context *context); static const char *get_simple_binary_op_name(OpExpr *expr); static bool isSimpleNode(Node *node, Node *parentNode, int prettyFlags); static void appendContextKeyword(deparse_context *context, const char *str, int indentBefore, int indentAfter, int indentPlus); static void removeStringInfoSpaces(StringInfo str); static void get_rule_expr(Node *node, deparse_context *context, bool showimplicit); static void get_rule_expr_toplevel(Node *node, deparse_context *context, bool showimplicit); static void get_rule_expr_funccall(Node *node, deparse_context *context, bool showimplicit); static bool looks_like_function(Node *node); static void get_oper_expr(OpExpr *expr, deparse_context *context); static void get_func_expr(FuncExpr *expr, deparse_context *context, bool showimplicit); static void get_agg_expr(Aggref *aggref, deparse_context *context, Aggref *original_aggref); static void get_agg_combine_expr(Node *node, deparse_context *context, void *callback_arg); static void get_windowfunc_expr(WindowFunc *wfunc, deparse_context *context); static void get_coercion_expr(Node *arg, deparse_context *context, Oid resulttype, int32 resulttypmod, Node *parentNode); static void get_const_expr(Const *constval, deparse_context *context, int showtype); static void get_const_collation(Const *constval, deparse_context *context); static void simple_quote_literal(StringInfo buf, const char *val); static void get_sublink_expr(SubLink *sublink, deparse_context *context); static void get_tablefunc(TableFunc *tf, deparse_context *context, bool showimplicit); static void get_from_clause(Query *query, const char *prefix, deparse_context *context); static void get_from_clause_item(Node *jtnode, Query *query, deparse_context *context); static void get_column_alias_list(deparse_columns *colinfo, deparse_context *context); static void get_from_clause_coldeflist(RangeTblFunction *rtfunc, deparse_columns *colinfo, deparse_context *context); static void get_tablesample_def(TableSampleClause *tablesample, deparse_context *context); static void get_opclass_name(Oid opclass, Oid actual_datatype, StringInfo buf); static Node *processIndirection(Node *node, deparse_context *context); static void printSubscripts(SubscriptingRef *sbsref, deparse_context *context); static char *get_relation_name(Oid relid); static char *generate_relation_name(Oid relid, List *namespaces); static char *generate_qualified_relation_name(Oid relid); static char *generate_function_name(Oid funcid, int nargs, List *argnames, Oid *argtypes, bool has_variadic, bool *use_variadic_p, ParseExprKind special_exprkind); static char *generate_operator_name(Oid operid, Oid arg1, Oid arg2); static void add_cast_to(StringInfo buf, Oid typid); static char *generate_qualified_type_name(Oid typid); static text *string_to_text(char *str); static char *flatten_reloptions(Oid relid); static void get_reloptions(StringInfo buf, Datum reloptions); #define only_marker(rte) ((rte)->inh ? "" : "ONLY ") /* ---------- * pg_get_ruledef - Do it all and return a text * that could be used as a statement * to recreate the rule * ---------- */ /* ---------- * pg_get_viewdef - Mainly the same thing, but we * only return the SELECT part of a view * ---------- */ /* * Common code for by-OID and by-name variants of pg_get_viewdef */ /* ---------- * pg_get_triggerdef - Get the definition of a trigger * ---------- */ /* ---------- * pg_get_indexdef - Get the definition of an index * * In the extended version, there is a colno argument as well as pretty bool. * if colno == 0, we want a complete index definition. * if colno > 0, we only want the Nth index key's variable or expression. * * Note that the SQL-function versions of this omit any info about the * index tablespace; this is intentional because pg_dump wants it that way. * However pg_get_indexdef_string() includes the index tablespace. * ---------- */ /* * Internal version for use by ALTER TABLE. * Includes a tablespace clause in the result. * Returns a palloc'd C string; no pretty-printing. */ /* Internal version that just reports the key-column definitions */ /* * Internal workhorse to decompile an index definition. * * This is now used for exclusion constraints as well: if excludeOps is not * NULL then it points to an array of exclusion operator OIDs. */ /* * pg_get_statisticsobjdef * Get the definition of an extended statistics object */ /* * Internal workhorse to decompile an extended statistics object. */ /* * pg_get_partkeydef * * Returns the partition key specification, ie, the following: * * PARTITION BY { RANGE | LIST | HASH } (column opt_collation opt_opclass [, ...]) */ /* Internal version that just reports the column definitions */ /* * Internal workhorse to decompile a partition key definition. */ /* * pg_get_partition_constraintdef * * Returns partition constraint expression as a string for the input relation */ /* * pg_get_partconstrdef_string * * Returns the partition constraint as a C-string for the input relation, with * the given alias. No pretty-printing. */ /* * pg_get_constraintdef * * Returns the definition for the constraint, ie, everything that needs to * appear after "ALTER TABLE ... ADD CONSTRAINT ". */ /* * Internal version that returns a full ALTER TABLE ... ADD CONSTRAINT command */ /* * As of 9.4, we now use an MVCC snapshot for this. */ /* * Convert an int16[] Datum into a comma-separated list of column names * for the indicated relation; append the list to buf. Returns the number * of keys. */ /* ---------- * pg_get_expr - Decompile an expression tree * * Input: an expression tree in nodeToString form, and a relation OID * * Output: reverse-listed expression * * Currently, the expression can only refer to a single relation, namely * the one specified by the second parameter. This is sufficient for * partial indexes, column default expressions, etc. We also support * Var-free expressions, for which the OID can be InvalidOid. * ---------- */ /* ---------- * pg_get_userbyid - Get a user name by roleid and * fallback to 'unknown (OID=n)' * ---------- */ /* * pg_get_serial_sequence * Get the name of the sequence used by an identity or serial column, * formatted suitably for passing to setval, nextval or currval. * First parameter is not treated as double-quoted, second parameter * is --- see documentation for reason. */ /* * pg_get_functiondef * Returns the complete "CREATE OR REPLACE FUNCTION ..." statement for * the specified function. * * Note: if you change the output format of this function, be careful not * to break psql's rules (in \ef and \sf) for identifying the start of the * function body. To wit: the function body starts on a line that begins * with "AS ", and no preceding line will look like that. */ /* * pg_get_function_arguments * Get a nicely-formatted list of arguments for a function. * This is everything that would go between the parentheses in * CREATE FUNCTION. */ /* * pg_get_function_identity_arguments * Get a formatted list of arguments for a function. * This is everything that would go between the parentheses in * ALTER FUNCTION, etc. In particular, don't print defaults. */ /* * pg_get_function_result * Get a nicely-formatted version of the result type of a function. * This is what would appear after RETURNS in CREATE FUNCTION. */ /* * Guts of pg_get_function_result: append the function's return type * to the specified buffer. */ /* * Common code for pg_get_function_arguments and pg_get_function_result: * append the desired subset of arguments to buf. We print only TABLE * arguments when print_table_args is true, and all the others when it's false. * We print argument defaults only if print_defaults is true. * Function return value is the number of arguments printed. */ /* * Append used transformed types to specified buffer */ /* * Get textual representation of a function argument's default value. The * second argument of this function is the argument number among all arguments * (i.e. proallargtypes, *not* proargtypes), starting with 1, because that's * how information_schema.sql uses it. */ /* * deparse_expression - General utility for deparsing expressions * * calls deparse_expression_pretty with all prettyPrinting disabled */ /* ---------- * deparse_expression_pretty - General utility for deparsing expressions * * expr is the node tree to be deparsed. It must be a transformed expression * tree (ie, not the raw output of gram.y). * * dpcontext is a list of deparse_namespace nodes representing the context * for interpreting Vars in the node tree. It can be NIL if no Vars are * expected. * * forceprefix is true to force all Vars to be prefixed with their table names. * * showimplicit is true to force all implicit casts to be shown explicitly. * * Tries to pretty up the output according to prettyFlags and startIndent. * * The result is a palloc'd string. * ---------- */ /* ---------- * deparse_context_for - Build deparse context for a single relation * * Given the reference name (alias) and OID of a relation, build deparsing * context for an expression referencing only that relation (as varno 1, * varlevelsup 0). This is sufficient for many uses of deparse_expression. * ---------- */ /* * deparse_context_for_plan_tree - Build deparse context for a Plan tree * * When deparsing an expression in a Plan tree, we use the plan's rangetable * to resolve names of simple Vars. The initialization of column names for * this is rather expensive if the rangetable is large, and it'll be the same * for every expression in the Plan tree; so we do it just once and re-use * the result of this function for each expression. (Note that the result * is not usable until set_deparse_context_plan() is applied to it.) * * In addition to the PlannedStmt, pass the per-RTE alias names * assigned by a previous call to select_rtable_names_for_explain. */ /* * set_deparse_context_plan - Specify Plan node containing expression * * When deparsing an expression in a Plan tree, we might have to resolve * OUTER_VAR, INNER_VAR, or INDEX_VAR references. To do this, the caller must * provide the parent Plan node. Then OUTER_VAR and INNER_VAR references * can be resolved by drilling down into the left and right child plans. * Similarly, INDEX_VAR references can be resolved by reference to the * indextlist given in a parent IndexOnlyScan node, or to the scan tlist in * ForeignScan and CustomScan nodes. (Note that we don't currently support * deparsing of indexquals in regular IndexScan or BitmapIndexScan nodes; * for those, we can only deparse the indexqualorig fields, which won't * contain INDEX_VAR Vars.) * * The ancestors list is a list of the Plan's parent Plan and SubPlan nodes, * the most-closely-nested first. This is needed to resolve PARAM_EXEC * Params. Note we assume that all the Plan nodes share the same rtable. * * Once this function has been called, deparse_expression() can be called on * subsidiary expression(s) of the specified Plan node. To deparse * expressions of a different Plan node in the same Plan tree, re-call this * function to identify the new parent Plan node. * * The result is the same List passed in; this is a notational convenience. */ /* * select_rtable_names_for_explain - Select RTE aliases for EXPLAIN * * Determine the relation aliases we'll use during an EXPLAIN operation. * This is just a frontend to set_rtable_names. We have to expose the aliases * to EXPLAIN because EXPLAIN needs to know the right alias names to print. */ /* * set_rtable_names: select RTE aliases to be used in printing a query * * We fill in dpns->rtable_names with a list of names that is one-for-one with * the already-filled dpns->rtable list. Each RTE name is unique among those * in the new namespace plus any ancestor namespaces listed in * parent_namespaces. * * If rels_used isn't NULL, only RTE indexes listed in it are given aliases. * * Note that this function is only concerned with relation names, not column * names. */ /* * set_deparse_for_query: set up deparse_namespace for deparsing a Query tree * * For convenience, this is defined to initialize the deparse_namespace struct * from scratch. */ /* * set_simple_column_names: fill in column aliases for non-query situations * * This handles EXPLAIN and cases where we only have relation RTEs. Without * a join tree, we can't do anything smart about join RTEs, but we don't * need to (note that EXPLAIN should never see join alias Vars anyway). * If we do hit a join RTE we'll just process it like a non-table base RTE. */ /* * has_dangerous_join_using: search jointree for unnamed JOIN USING * * Merged columns of a JOIN USING may act differently from either of the input * columns, either because they are merged with COALESCE (in a FULL JOIN) or * because an implicit coercion of the underlying input column is required. * In such a case the column must be referenced as a column of the JOIN not as * a column of either input. And this is problematic if the join is unnamed * (alias-less): we cannot qualify the column's name with an RTE name, since * there is none. (Forcibly assigning an alias to the join is not a solution, * since that will prevent legal references to tables below the join.) * To ensure that every column in the query is unambiguously referenceable, * we must assign such merged columns names that are globally unique across * the whole query, aliasing other columns out of the way as necessary. * * Because the ensuing re-aliasing is fairly damaging to the readability of * the query, we don't do this unless we have to. So, we must pre-scan * the join tree to see if we have to, before starting set_using_names(). */ /* * set_using_names: select column aliases to be used for merged USING columns * * We do this during a recursive descent of the query jointree. * dpns->unique_using must already be set to determine the global strategy. * * Column alias info is saved in the dpns->rtable_columns list, which is * assumed to be filled with pre-zeroed deparse_columns structs. * * parentUsing is a list of all USING aliases assigned in parent joins of * the current jointree node. (The passed-in list must not be modified.) */ /* * set_relation_column_names: select column aliases for a non-join RTE * * Column alias info is saved in *colinfo, which is assumed to be pre-zeroed. * If any colnames entries are already filled in, those override local * choices. */ /* * set_join_column_names: select column aliases for a join RTE * * Column alias info is saved in *colinfo, which is assumed to be pre-zeroed. * If any colnames entries are already filled in, those override local * choices. Also, names for USING columns were already chosen by * set_using_names(). We further expect that column alias selection has been * completed for both input RTEs. */ #ifdef USE_ASSERT_CHECKING #endif /* * colname_is_unique: is colname distinct from already-chosen column names? * * dpns is query-wide info, colinfo is for the column's RTE */ /* * make_colname_unique: modify colname if necessary to make it unique * * dpns is query-wide info, colinfo is for the column's RTE */ /* * expand_colnames_array_to: make colinfo->colnames at least n items long * * Any added array entries are initialized to zero. */ /* * identify_join_columns: figure out where columns of a join come from * * Fills the join-specific fields of the colinfo struct, except for * usingNames which is filled later. */ /* * get_rtable_name: convenience function to get a previously assigned RTE alias * * The RTE must belong to the topmost namespace level in "context". */ /* * set_deparse_plan: set up deparse_namespace to parse subexpressions * of a given Plan node * * This sets the plan, outer_plan, inner_plan, outer_tlist, inner_tlist, * and index_tlist fields. Caller is responsible for adjusting the ancestors * list if necessary. Note that the rtable, subplans, and ctes fields do * not need to change when shifting attention to different plan nodes in a * single plan tree. */ /* * push_child_plan: temporarily transfer deparsing attention to a child plan * * When expanding an OUTER_VAR or INNER_VAR reference, we must adjust the * deparse context in case the referenced expression itself uses * OUTER_VAR/INNER_VAR. We modify the top stack entry in-place to avoid * affecting levelsup issues (although in a Plan tree there really shouldn't * be any). * * Caller must provide a local deparse_namespace variable to save the * previous state for pop_child_plan. */ /* * pop_child_plan: undo the effects of push_child_plan */ /* * push_ancestor_plan: temporarily transfer deparsing attention to an * ancestor plan * * When expanding a Param reference, we must adjust the deparse context * to match the plan node that contains the expression being printed; * otherwise we'd fail if that expression itself contains a Param or * OUTER_VAR/INNER_VAR/INDEX_VAR variable. * * The target ancestor is conveniently identified by the ListCell holding it * in dpns->ancestors. * * Caller must provide a local deparse_namespace variable to save the * previous state for pop_ancestor_plan. */ /* * pop_ancestor_plan: undo the effects of push_ancestor_plan */ /* ---------- * make_ruledef - reconstruct the CREATE RULE command * for a given pg_rewrite tuple * ---------- */ /* ---------- * make_viewdef - reconstruct the SELECT part of a * view rewrite rule * ---------- */ /* ---------- * get_query_def - Parse back one query parsetree * * If resultDesc is not NULL, then it is the output tuple descriptor for * the view represented by a SELECT query. * ---------- */ /* ---------- * get_values_def - Parse back a VALUES list * ---------- */ /* ---------- * get_with_clause - Parse back a WITH clause * ---------- */ /* ---------- * get_select_query_def - Parse back a SELECT parsetree * ---------- */ /* * Detect whether query looks like SELECT ... FROM VALUES(), * with no need to rename the output columns of the VALUES RTE. * If so, return the VALUES RTE. Otherwise return NULL. */ /* ---------- * get_target_list - Parse back a SELECT target list * * This is also used for RETURNING lists in INSERT/UPDATE/DELETE. * ---------- */ /* * Display a sort/group clause. * * Also returns the expression tree, so caller need not find it again. */ /* * Display a GroupingSet */ /* * Display an ORDER BY list. */ /* * Display a WINDOW clause. * * Note that the windowClause list might contain only anonymous window * specifications, in which case we should print nothing here. */ /* * Display a window definition */ /* ---------- * get_insert_query_def - Parse back an INSERT parsetree * ---------- */ /* ---------- * get_update_query_def - Parse back an UPDATE parsetree * ---------- */ /* ---------- * get_update_query_targetlist_def - Parse back an UPDATE targetlist * ---------- */ /* ---------- * get_delete_query_def - Parse back a DELETE parsetree * ---------- */ /* ---------- * get_utility_query_def - Parse back a UTILITY parsetree * ---------- */ /* * Display a Var appropriately. * * In some cases (currently only when recursing into an unnamed join) * the Var's varlevelsup has to be interpreted with respect to a context * above the current one; levelsup indicates the offset. * * If istoplevel is true, the Var is at the top level of a SELECT's * targetlist, which means we need special treatment of whole-row Vars. * Instead of the normal "tab.*", we'll print "tab.*::typename", which is a * dirty hack to prevent "tab.*" from being expanded into multiple columns. * (The parser will strip the useless coercion, so no inefficiency is added in * dump and reload.) We used to print just "tab" in such cases, but that is * ambiguous and will yield the wrong result if "tab" is also a plain column * name in the query. * * Returns the attname of the Var, or NULL if the Var has no attname (because * it is a whole-row Var or a subplan output reference). */ /* * Deparse a Var which references OUTER_VAR, INNER_VAR, or INDEX_VAR. This * routine is actually a callback for resolve_special_varno, which handles * finding the correct TargetEntry. We get the expression contained in that * TargetEntry and just need to deparse it, a job we can throw back on * get_rule_expr. */ /* * Chase through plan references to special varnos (OUTER_VAR, INNER_VAR, * INDEX_VAR) until we find a real Var or some kind of non-Var node; then, * invoke the callback provided. */ /* * Get the name of a field of an expression of composite type. The * expression is usually a Var, but we handle other cases too. * * levelsup is an extra offset to interpret the Var's varlevelsup correctly. * * This is fairly straightforward when the expression has a named composite * type; we need only look up the type in the catalogs. However, the type * could also be RECORD. Since no actual table or view column is allowed to * have type RECORD, a Var of type RECORD must refer to a JOIN or FUNCTION RTE * or to a subquery output. We drill down to find the ultimate defining * expression and attempt to infer the field name from it. We ereport if we * can't determine the name. * * Similarly, a PARAM of type RECORD has to refer to some expression of * a determinable composite type. */ /* * Try to find the referenced expression for a PARAM_EXEC Param that might * reference a parameter supplied by an upper NestLoop or SubPlan plan node. * * If successful, return the expression and set *dpns_p and *ancestor_cell_p * appropriately for calling push_ancestor_plan(). If no referent can be * found, return NULL. */ /* * Display a Param appropriately. */ /* * get_simple_binary_op_name * * helper function for isSimpleNode * will return single char binary operator name, or NULL if it's not */ /* * isSimpleNode - check if given node is simple (doesn't need parenthesizing) * * true : simple in the context of parent node's type * false : not simple */ /* * appendContextKeyword - append a keyword to buffer * * If prettyPrint is enabled, perform a line break, and adjust indentation. * Otherwise, just append the keyword. */ /* * removeStringInfoSpaces - delete trailing spaces from a buffer. * * Possibly this should move to stringinfo.c at some point. */ /* * get_rule_expr_paren - deparse expr using get_rule_expr, * embracing the string with parentheses if necessary for prettyPrint. * * Never embrace if prettyFlags=0, because it's done in the calling node. * * Any node that does *not* embrace its argument node by sql syntax (with * parentheses, non-operator keywords like CASE/WHEN/ON, or comma etc) should * use get_rule_expr_paren instead of get_rule_expr so parentheses can be * added. */ /* ---------- * get_rule_expr - Parse back an expression * * Note: showimplicit determines whether we display any implicit cast that * is present at the top of the expression tree. It is a passed argument, * not a field of the context struct, because we change the value as we * recurse down into the expression. In general we suppress implicit casts * when the result type is known with certainty (eg, the arguments of an * OR must be boolean). We display implicit casts for arguments of functions * and operators, since this is needed to be certain that the same function * or operator will be chosen when the expression is re-parsed. * ---------- */ /* * get_rule_expr_toplevel - Parse back a toplevel expression * * Same as get_rule_expr(), except that if the expr is just a Var, we pass * istoplevel = true not false to get_variable(). This causes whole-row Vars * to get printed with decoration that will prevent expansion of "*". * We need to use this in contexts such as ROW() and VALUES(), where the * parser would expand "foo.*" appearing at top level. (In principle we'd * use this in get_target_list() too, but that has additional worries about * whether to print AS, so it needs to invoke get_variable() directly anyway.) */ /* * get_rule_expr_funccall - Parse back a function-call expression * * Same as get_rule_expr(), except that we guarantee that the output will * look like a function call, or like one of the things the grammar treats as * equivalent to a function call (see the func_expr_windowless production). * This is needed in places where the grammar uses func_expr_windowless and * you can't substitute a parenthesized a_expr. If what we have isn't going * to look like a function call, wrap it in a dummy CAST() expression, which * will satisfy the grammar --- and, indeed, is likely what the user wrote to * produce such a thing. */ /* * Helper function to identify node types that satisfy func_expr_windowless. * If in doubt, "false" is always a safe answer. */ /* * get_oper_expr - Parse back an OpExpr node */ /* * get_func_expr - Parse back a FuncExpr node */ /* * get_agg_expr - Parse back an Aggref node */ /* * This is a helper function for get_agg_expr(). It's used when we deparse * a combining Aggref; resolve_special_varno locates the corresponding partial * Aggref and then calls this. */ /* * get_windowfunc_expr - Parse back a WindowFunc node */ /* ---------- * get_coercion_expr * * Make a string representation of a value coerced to a specific type * ---------- */ /* ---------- * get_const_expr * * Make a string representation of a Const * * showtype can be -1 to never show "::typename" decoration, or +1 to always * show it, or 0 to show it only if the constant wouldn't be assumed to be * the right type by default. * * If the Const's collation isn't default for its type, show that too. * We mustn't do this when showtype is -1 (since that means the caller will * print "::typename", and we can't put a COLLATE clause in between). It's * caller's responsibility that collation isn't missed in such cases. * ---------- */ /* * helper for get_const_expr: append COLLATE if needed */ /* * simple_quote_literal - Format a string as a SQL literal, append to buf */ /* ---------- * get_sublink_expr - Parse back a sublink * ---------- */ /* ---------- * get_tablefunc - Parse back a table function * ---------- */ /* ---------- * get_from_clause - Parse back a FROM clause * * "prefix" is the keyword that denotes the start of the list of FROM * elements. It is FROM when used to parse back SELECT and UPDATE, but * is USING when parsing back DELETE. * ---------- */ /* * get_column_alias_list - print column alias list for an RTE * * Caller must already have printed the relation's alias name. */ /* * get_from_clause_coldeflist - reproduce FROM clause coldeflist * * When printing a top-level coldeflist (which is syntactically also the * relation's column alias list), use column names from colinfo. But when * printing a coldeflist embedded inside ROWS FROM(), we prefer to use the * original coldeflist's names, which are available in rtfunc->funccolnames. * Pass NULL for colinfo to select the latter behavior. * * The coldeflist is appended immediately (no space) to buf. Caller is * responsible for ensuring that an alias or AS is present before it. */ /* * get_tablesample_def - print a TableSampleClause */ /* * get_opclass_name - fetch name of an index operator class * * The opclass name is appended (after a space) to buf. * * Output is suppressed if the opclass is the default for the given * actual_datatype. (If you don't want this behavior, just pass * InvalidOid for actual_datatype.) */ /* * generate_opclass_name * Compute the name to display for a opclass specified by OID * * The result includes all necessary quoting and schema-prefixing. */ /* * processIndirection - take care of array and subfield assignment * * We strip any top-level FieldStore or assignment SubscriptingRef nodes that * appear in the input, printing them as decoration for the base column * name (which we assume the caller just printed). We might also need to * strip CoerceToDomain nodes, but only ones that appear above assignment * nodes. * * Returns the subexpression that's to be assigned. */ /* * quote_identifier - Quote an identifier only if needed * * When quotes are needed, we palloc the required space; slightly * space-wasteful but well worth it for notational simplicity. */ const char * quote_identifier(const char *ident) { /* * Can avoid quoting if ident starts with a lowercase letter or underscore * and contains only lowercase letters, digits, and underscores, *and* is * not any SQL keyword. Otherwise, supply quotes. */ int nquotes = 0; bool safe; const char *ptr; char *result; char *optr; /* * would like to use macros here, but they might yield unwanted * locale-specific results... */ safe = ((ident[0] >= 'a' && ident[0] <= 'z') || ident[0] == '_'); for (ptr = ident; *ptr; ptr++) { char ch = *ptr; if ((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9') || (ch == '_')) { /* okay */ } else { safe = false; if (ch == '"') nquotes++; } } if (quote_all_identifiers) safe = false; if (safe) { /* * Check for keyword. We quote keywords except for unreserved ones. * (In some cases we could avoid quoting a col_name or type_func_name * keyword, but it seems much harder than it's worth to tell that.) * * Note: ScanKeywordLookup() does case-insensitive comparison, but * that's fine, since we already know we have all-lower-case. */ int kwnum = ScanKeywordLookup(ident, &ScanKeywords); if (kwnum >= 0 && ScanKeywordCategories[kwnum] != UNRESERVED_KEYWORD) safe = false; } if (safe) return ident; /* no change needed */ result = (char *) palloc(strlen(ident) + nquotes + 2 + 1); optr = result; *optr++ = '"'; for (ptr = ident; *ptr; ptr++) { char ch = *ptr; if (ch == '"') *optr++ = '"'; *optr++ = ch; } *optr++ = '"'; *optr = '\0'; return result; } /* * quote_qualified_identifier - Quote a possibly-qualified identifier * * Return a name of the form qualifier.ident, or just ident if qualifier * is NULL, quoting each component if necessary. The result is palloc'd. */ /* * get_relation_name * Get the unqualified name of a relation specified by OID * * This differs from the underlying get_rel_name() function in that it will * throw error instead of silently returning NULL if the OID is bad. */ /* * generate_relation_name * Compute the name to display for a relation specified by OID * * The result includes all necessary quoting and schema-prefixing. * * If namespaces isn't NIL, it must be a list of deparse_namespace nodes. * We will forcibly qualify the relation name if it equals any CTE name * visible in the namespace list. */ /* * generate_qualified_relation_name * Compute the name to display for a relation specified by OID * * As above, but unconditionally schema-qualify the name. */ /* * generate_function_name * Compute the name to display for a function specified by OID, * given that it is being called with the specified actual arg names and * types. (Those matter because of ambiguous-function resolution rules.) * * If we're dealing with a potentially variadic function (in practice, this * means a FuncExpr or Aggref, not some other way of calling a function), then * has_variadic must specify whether variadic arguments have been merged, * and *use_variadic_p will be set to indicate whether to print VARIADIC in * the output. For non-FuncExpr cases, has_variadic should be false and * use_variadic_p can be NULL. * * The result includes all necessary quoting and schema-prefixing. */ /* * generate_operator_name * Compute the name to display for an operator specified by OID, * given that it is being called with the specified actual arg types. * (Arg types matter because of ambiguous-operator resolution rules. * Pass InvalidOid for unused arg of a unary operator.) * * The result includes all necessary quoting and schema-prefixing, * plus the OPERATOR() decoration needed to use a qualified operator name * in an expression. */ /* * generate_operator_clause --- generate a binary-operator WHERE clause * * This is used for internally-generated-and-executed SQL queries, where * precision is essential and readability is secondary. The basic * requirement is to append "leftop op rightop" to buf, where leftop and * rightop are given as strings and are assumed to yield types leftoptype * and rightoptype; the operator is identified by OID. The complexity * comes from needing to be sure that the parser will select the desired * operator when the query is parsed. We always name the operator using * OPERATOR(schema.op) syntax, so as to avoid search-path uncertainties. * We have to emit casts too, if either input isn't already the input type * of the operator; else we are at the mercy of the parser's heuristics for * ambiguous-operator resolution. The caller must ensure that leftop and * rightop are suitable arguments for a cast operation; it's best to insert * parentheses if they aren't just variables or parameters. */ /* * Add a cast specification to buf. We spell out the type name the hard way, * intentionally not using format_type_be(). This is to avoid corner cases * for CHARACTER, BIT, and perhaps other types, where specifying the type * using SQL-standard syntax results in undesirable data truncation. By * doing it this way we can be certain that the cast will have default (-1) * target typmod. */ /* * generate_qualified_type_name * Compute the name to display for a type specified by OID * * This is different from format_type_be() in that we unconditionally * schema-qualify the name. That also means no special syntax for * SQL-standard type names ... although in current usage, this should * only get used for domains, so such cases wouldn't occur anyway. */ /* * generate_collation_name * Compute the name to display for a collation specified by OID * * The result includes all necessary quoting and schema-prefixing. */ /* * Given a C string, produce a TEXT datum. * * We assume that the input was palloc'd and may be freed. */ /* * Generate a C string representing a relation options from text[] datum. */ /* * Generate a C string representing a relation's reloptions, or NULL if none. */ /* * get_range_partbound_string * A C string representation of one range partition bound */ libpg_query-13-2.1.0/src/postgres/src_backend_utils_error_assert.c000066400000000000000000000032621413137616400253370ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ExceptionalCondition *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * assert.c * Assert code. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/error/assert.c * * NOTE * This should eventually work with elog() * *------------------------------------------------------------------------- */ #include "postgres.h" #include #ifdef HAVE_EXECINFO_H #include #endif /* * ExceptionalCondition - Handles the failure of an Assert() */ void ExceptionalCondition(const char *conditionName, const char *errorType, const char *fileName, int lineNumber) { if (!PointerIsValid(conditionName) || !PointerIsValid(fileName) || !PointerIsValid(errorType)) write_stderr("TRAP: ExceptionalCondition: bad arguments\n"); else { write_stderr("TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n", errorType, conditionName, fileName, lineNumber); } /* Usually this shouldn't be needed, but make sure the msg went out */ fflush(stderr); #ifdef HAVE_BACKTRACE_SYMBOLS { void *buf[100]; int nframes; nframes = backtrace(buf, lengthof(buf)); backtrace_symbols_fd(buf, nframes, fileno(stderr)); } #endif #ifdef SLEEP_ON_ASSERT /* * It would be nice to use pg_usleep() here, but only does 2000 sec or 33 * minutes, which seems too short. */ sleep(1000000); #endif abort(); } libpg_query-13-2.1.0/src/postgres/src_backend_utils_error_elog.c000066400000000000000000001406261413137616400247720ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - errstart * - PG_exception_stack * - write_stderr * - err_gettext * - in_error_recursion_trouble * - error_context_stack * - errordata_stack_depth * - errordata * - is_log_level_output * - recursion_depth * - errmsg_internal * - errcode * - errmsg * - errdetail * - errfinish * - pg_re_throw * - EmitErrorReport * - emit_log_hook * - send_message_to_server_log * - send_message_to_frontend * - matches_backtrace_functions * - set_backtrace * - geterrcode * - errhint * - errposition * - internalerrposition * - internalerrquery * - geterrposition * - getinternalerrposition * - set_errcontext_domain * - errcontext_msg * - CopyErrorData * - FlushErrorState *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * elog.c * error logging and reporting * * Because of the extremely high rate at which log messages can be generated, * we need to be mindful of the performance cost of obtaining any information * that may be logged. Also, it's important to keep in mind that this code may * get called from within an aborted transaction, in which case operations * such as syscache lookups are unsafe. * * Some notes about recursion and errors during error processing: * * We need to be robust about recursive-error scenarios --- for example, * if we run out of memory, it's important to be able to report that fact. * There are a number of considerations that go into this. * * First, distinguish between re-entrant use and actual recursion. It * is possible for an error or warning message to be emitted while the * parameters for an error message are being computed. In this case * errstart has been called for the outer message, and some field values * may have already been saved, but we are not actually recursing. We handle * this by providing a (small) stack of ErrorData records. The inner message * can be computed and sent without disturbing the state of the outer message. * (If the inner message is actually an error, this isn't very interesting * because control won't come back to the outer message generator ... but * if the inner message is only debug or log data, this is critical.) * * Second, actual recursion will occur if an error is reported by one of * the elog.c routines or something they call. By far the most probable * scenario of this sort is "out of memory"; and it's also the nastiest * to handle because we'd likely also run out of memory while trying to * report this error! Our escape hatch for this case is to reset the * ErrorContext to empty before trying to process the inner error. Since * ErrorContext is guaranteed to have at least 8K of space in it (see mcxt.c), * we should be able to process an "out of memory" message successfully. * Since we lose the prior error state due to the reset, we won't be able * to return to processing the original error, but we wouldn't have anyway. * (NOTE: the escape hatch is not used for recursive situations where the * inner message is of less than ERROR severity; in that case we just * try to process it and return normally. Usually this will work, but if * it ends up in infinite recursion, we will PANIC due to error stack * overflow.) * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/error/elog.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include #include #ifdef HAVE_SYSLOG #include #endif #ifdef HAVE_EXECINFO_H #include #endif #include "access/transam.h" #include "access/xact.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "postmaster/bgworker.h" #include "postmaster/postmaster.h" #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" #include "utils/ps_status.h" /* In this module, access gettext() via err_gettext() */ #undef _ #define _(x) err_gettext(x) /* Global variables */ __thread ErrorContextCallback *error_context_stack = NULL; __thread sigjmp_buf *PG_exception_stack = NULL; extern bool redirection_done; /* * Hook for intercepting messages before they are sent to the server log. * Note that the hook will not get called for messages that are suppressed * by log_min_messages. Also note that logging hooks implemented in preload * libraries will miss any log messages that are generated before the * library is loaded. */ __thread emit_log_hook_type emit_log_hook = NULL; /* GUC parameters */ /* format for extra log line info */ #ifdef HAVE_SYSLOG /* * Max string length to send to syslog(). Note that this doesn't count the * sequence-number prefix we add, and of course it doesn't count the prefix * added by syslog itself. Solaris and sysklogd truncate the final message * at 1024 bytes, so this value leaves 124 bytes for those prefixes. (Most * other syslog implementations seem to have limits of 2KB or so.) */ #ifndef PG_SYSLOG_LIMIT #define PG_SYSLOG_LIMIT 900 #endif static void write_syslog(int level, const char *line); #endif #ifdef WIN32 extern char *event_source; static void write_eventlog(int level, const char *line, int len); #endif /* We provide a small stack of ErrorData records for re-entrant cases */ #define ERRORDATA_STACK_SIZE 5 static __thread ErrorData errordata[ERRORDATA_STACK_SIZE]; static __thread int errordata_stack_depth = -1; /* index of topmost active frame */ static __thread int recursion_depth = 0; /* to detect actual recursion */ /* * Saved timeval and buffers for formatted timestamps that might be used by * both log_line_prefix and csv logs. */ #define FORMATTED_TS_LEN 128 /* Macro for checking errordata_stack_depth is reasonable */ #define CHECK_STACK_DEPTH() \ do { \ if (errordata_stack_depth < 0) \ { \ errordata_stack_depth = -1; \ ereport(ERROR, (errmsg_internal("errstart was not called"))); \ } \ } while (0) static const char *err_gettext(const char *str) pg_attribute_format_arg(1); static pg_noinline void set_backtrace(ErrorData *edata, int num_skip); static void set_errdata_field(MemoryContextData *cxt, char **ptr, const char *str); static void write_console(const char *line, int len); static void setup_formatted_log_time(void); static void setup_formatted_start_time(void); static const char *process_log_prefix_padding(const char *p, int *padding); static void log_line_prefix(StringInfo buf, ErrorData *edata); static void write_csvlog(ErrorData *edata); static void send_message_to_server_log(ErrorData *edata); static void write_pipe_chunks(char *data, int len, int dest); static void send_message_to_frontend(ErrorData *edata); static const char *error_severity(int elevel); static void append_with_tabs(StringInfo buf, const char *str); static bool is_log_level_output(int elevel, int log_min_level); /* * in_error_recursion_trouble --- are we at risk of infinite error recursion? * * This function exists to provide common control of various fallback steps * that we take if we think we are facing infinite error recursion. See the * callers for details. */ bool in_error_recursion_trouble(void) { /* Pull the plug if recurse more than once */ return (recursion_depth > 2); } /* * One of those fallback steps is to stop trying to localize the error * message, since there's a significant probability that that's exactly * what's causing the recursion. */ static inline const char * err_gettext(const char *str) { #ifdef ENABLE_NLS if (in_error_recursion_trouble()) return str; else return gettext(str); #else return str; #endif } /* * errstart --- begin an error-reporting cycle * * Create and initialize error stack entry. Subsequently, errmsg() and * perhaps other routines will be called to further populate the stack entry. * Finally, errfinish() will be called to actually process the error report. * * Returns true in normal case. Returns false to short-circuit the error * report (if it's a warning or lower and not to be reported anywhere). */ bool errstart(int elevel, const char *domain) { ErrorData *edata; bool output_to_server; bool output_to_client = false; int i; /* * Check some cases in which we want to promote an error into a more * severe error. None of this logic applies for non-error messages. */ if (elevel >= ERROR) { /* * If we are inside a critical section, all errors become PANIC * errors. See miscadmin.h. */ if (CritSectionCount > 0) elevel = PANIC; /* * Check reasons for treating ERROR as FATAL: * * 1. we have no handler to pass the error to (implies we are in the * postmaster or in backend startup). * * 2. ExitOnAnyError mode switch is set (initdb uses this). * * 3. the error occurred after proc_exit has begun to run. (It's * proc_exit's responsibility to see that this doesn't turn into * infinite recursion!) */ if (elevel == ERROR) { if (PG_exception_stack == NULL || ExitOnAnyError || proc_exit_inprogress) elevel = FATAL; } /* * If the error level is ERROR or more, errfinish is not going to * return to caller; therefore, if there is any stacked error already * in progress it will be lost. This is more or less okay, except we * do not want to have a FATAL or PANIC error downgraded because the * reporting process was interrupted by a lower-grade error. So check * the stack and make sure we panic if panic is warranted. */ for (i = 0; i <= errordata_stack_depth; i++) elevel = Max(elevel, errordata[i].elevel); } /* * Now decide whether we need to process this report at all; if it's * warning or less and not enabled for logging, just return false without * starting up any error logging machinery. */ /* Determine whether message is enabled for server log output */ output_to_server = is_log_level_output(elevel, log_min_messages); /* Determine whether message is enabled for client output */ if (whereToSendOutput == DestRemote && elevel != LOG_SERVER_ONLY) { /* * client_min_messages is honored only after we complete the * authentication handshake. This is required both for security * reasons and because many clients can't handle NOTICE messages * during authentication. */ if (ClientAuthInProgress) output_to_client = (elevel >= ERROR); else output_to_client = (elevel >= client_min_messages || elevel == INFO); } /* Skip processing effort if non-error message will not be output */ if (elevel < ERROR && !output_to_server && !output_to_client) return false; /* * We need to do some actual work. Make sure that memory context * initialization has finished, else we can't do anything useful. */ if (ErrorContext == NULL) { /* Oops, hard crash time; very little we can do safely here */ write_stderr("error occurred before error message processing is available\n"); exit(2); } /* * Okay, crank up a stack entry to store the info in. */ if (recursion_depth++ > 0 && elevel >= ERROR) { /* * Oops, error during error processing. Clear ErrorContext as * discussed at top of file. We will not return to the original * error's reporter or handler, so we don't need it. */ MemoryContextReset(ErrorContext); /* * Infinite error recursion might be due to something broken in a * context traceback routine. Abandon them too. We also abandon * attempting to print the error statement (which, if long, could * itself be the source of the recursive failure). */ if (in_error_recursion_trouble()) { error_context_stack = NULL; debug_query_string = NULL; } } if (++errordata_stack_depth >= ERRORDATA_STACK_SIZE) { /* * Wups, stack not big enough. We treat this as a PANIC condition * because it suggests an infinite loop of errors during error * recovery. */ errordata_stack_depth = -1; /* make room on stack */ ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded"))); } /* Initialize data for this error frame */ edata = &errordata[errordata_stack_depth]; MemSet(edata, 0, sizeof(ErrorData)); edata->elevel = elevel; edata->output_to_server = output_to_server; edata->output_to_client = output_to_client; /* the default text domain is the backend's */ edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres"); /* initialize context_domain the same way (see set_errcontext_domain()) */ edata->context_domain = edata->domain; /* Select default errcode based on elevel */ if (elevel >= ERROR) edata->sqlerrcode = ERRCODE_INTERNAL_ERROR; else if (elevel == WARNING) edata->sqlerrcode = ERRCODE_WARNING; else edata->sqlerrcode = ERRCODE_SUCCESSFUL_COMPLETION; /* errno is saved here so that error parameter eval can't change it */ edata->saved_errno = errno; /* * Any allocations for this error state level should go into ErrorContext */ edata->assoc_context = ErrorContext; recursion_depth--; return true; } /* * Checks whether the given funcname matches backtrace_functions; see * check_backtrace_functions. */ static bool matches_backtrace_functions(const char *funcname) { char *p; if (!backtrace_symbol_list || funcname == NULL || funcname[0] == '\0') return false; p = backtrace_symbol_list; for (;;) { if (*p == '\0') /* end of backtrace_symbol_list */ break; if (strcmp(funcname, p) == 0) return true; p += strlen(p) + 1; } return false; } /* * errfinish --- end an error-reporting cycle * * Produce the appropriate error report(s) and pop the error stack. * * If elevel, as passed to errstart(), is ERROR or worse, control does not * return to the caller. See elog.h for the error level definitions. */ void errfinish(const char *filename, int lineno, const char *funcname) { ErrorData *edata = &errordata[errordata_stack_depth]; int elevel; MemoryContext oldcontext; ErrorContextCallback *econtext; recursion_depth++; CHECK_STACK_DEPTH(); /* Save the last few bits of error state into the stack entry */ if (filename) { const char *slash; /* keep only base name, useful especially for vpath builds */ slash = strrchr(filename, '/'); if (slash) filename = slash + 1; } edata->filename = filename; edata->lineno = lineno; edata->funcname = funcname; elevel = edata->elevel; /* * Do processing in ErrorContext, which we hope has enough reserved space * to report an error. */ oldcontext = MemoryContextSwitchTo(ErrorContext); if (!edata->backtrace && edata->funcname && backtrace_functions && matches_backtrace_functions(edata->funcname)) set_backtrace(edata, 2); /* * Call any context callback functions. Errors occurring in callback * functions will be treated as recursive errors --- this ensures we will * avoid infinite recursion (see errstart). */ for (econtext = error_context_stack; econtext != NULL; econtext = econtext->previous) econtext->callback(econtext->arg); /* * If ERROR (not more nor less) we pass it off to the current handler. * Printing it and popping the stack is the responsibility of the handler. */ if (elevel == ERROR) { /* * We do some minimal cleanup before longjmp'ing so that handlers can * execute in a reasonably sane state. * * Reset InterruptHoldoffCount in case we ereport'd from inside an * interrupt holdoff section. (We assume here that no handler will * itself be inside a holdoff section. If necessary, such a handler * could save and restore InterruptHoldoffCount for itself, but this * should make life easier for most.) */ InterruptHoldoffCount = 0; QueryCancelHoldoffCount = 0; CritSectionCount = 0; /* should be unnecessary, but... */ /* * Note that we leave CurrentMemoryContext set to ErrorContext. The * handler should reset it to something else soon. */ recursion_depth--; PG_RE_THROW(); } /* * If we are doing FATAL or PANIC, abort any old-style COPY OUT in * progress, so that we can report the message before dying. (Without * this, pq_putmessage will refuse to send the message at all, which is * what we want for NOTICE messages, but not for fatal exits.) This hack * is necessary because of poor design of old-style copy protocol. */ if (elevel >= FATAL && whereToSendOutput == DestRemote) pq_endcopyout(true); /* Emit the message to the right places */ EmitErrorReport(); /* Now free up subsidiary data attached to stack entry, and release it */ if (edata->message) pfree(edata->message); if (edata->detail) pfree(edata->detail); if (edata->detail_log) pfree(edata->detail_log); if (edata->hint) pfree(edata->hint); if (edata->context) pfree(edata->context); if (edata->backtrace) pfree(edata->backtrace); if (edata->schema_name) pfree(edata->schema_name); if (edata->table_name) pfree(edata->table_name); if (edata->column_name) pfree(edata->column_name); if (edata->datatype_name) pfree(edata->datatype_name); if (edata->constraint_name) pfree(edata->constraint_name); if (edata->internalquery) pfree(edata->internalquery); errordata_stack_depth--; /* Exit error-handling context */ MemoryContextSwitchTo(oldcontext); recursion_depth--; /* * Perform error recovery action as specified by elevel. */ if (elevel == FATAL) { /* * For a FATAL error, we let proc_exit clean up and exit. * * If we just reported a startup failure, the client will disconnect * on receiving it, so don't send any more to the client. */ if (PG_exception_stack == NULL && whereToSendOutput == DestRemote) whereToSendOutput = DestNone; /* * fflush here is just to improve the odds that we get to see the * error message, in case things are so hosed that proc_exit crashes. * Any other code you might be tempted to add here should probably be * in an on_proc_exit or on_shmem_exit callback instead. */ fflush(stdout); fflush(stderr); /* * Do normal process-exit cleanup, then return exit code 1 to indicate * FATAL termination. The postmaster may or may not consider this * worthy of panic, depending on which subprocess returns it. */ proc_exit(1); } if (elevel >= PANIC) { /* * Serious crash time. Postmaster will observe SIGABRT process exit * status and kill the other backends too. * * XXX: what if we are *in* the postmaster? abort() won't kill our * children... */ fflush(stdout); fflush(stderr); abort(); } /* * Check for cancel/die interrupt first --- this is so that the user can * stop a query emitting tons of notice or warning messages, even if it's * in a loop that otherwise fails to check for interrupts. */ CHECK_FOR_INTERRUPTS(); } /* * errcode --- add SQLSTATE error code to the current error * * The code is expected to be represented as per MAKE_SQLSTATE(). */ int errcode(int sqlerrcode) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); edata->sqlerrcode = sqlerrcode; return 0; /* return value does not matter */ } /* * errcode_for_file_access --- add SQLSTATE error code to the current error * * The SQLSTATE code is chosen based on the saved errno value. We assume * that the failing operation was some type of disk file access. * * NOTE: the primary error message string should generally include %m * when this is used. */ #ifdef EROFS #endif #if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */ #endif /* * errcode_for_socket_access --- add SQLSTATE error code to the current error * * The SQLSTATE code is chosen based on the saved errno value. We assume * that the failing operation was some type of socket access. * * NOTE: the primary error message string should generally include %m * when this is used. */ #ifdef ECONNRESET #endif /* * This macro handles expansion of a format string and associated parameters; * it's common code for errmsg(), errdetail(), etc. Must be called inside * a routine that is declared like "const char *fmt, ..." and has an edata * pointer set up. The message is assigned to edata->targetfield, or * appended to it if appendval is true. The message is subject to translation * if translateit is true. * * Note: we pstrdup the buffer rather than just transferring its storage * to the edata field because the buffer might be considerably larger than * really necessary. */ #define EVALUATE_MESSAGE(domain, targetfield, appendval, translateit) \ { \ StringInfoData buf; \ /* Internationalize the error format string */ \ if ((translateit) && !in_error_recursion_trouble()) \ fmt = dgettext((domain), fmt); \ initStringInfo(&buf); \ if ((appendval) && edata->targetfield) { \ appendStringInfoString(&buf, edata->targetfield); \ appendStringInfoChar(&buf, '\n'); \ } \ /* Generate actual output --- have to use appendStringInfoVA */ \ for (;;) \ { \ va_list args; \ int needed; \ errno = edata->saved_errno; \ va_start(args, fmt); \ needed = appendStringInfoVA(&buf, fmt, args); \ va_end(args); \ if (needed == 0) \ break; \ enlargeStringInfo(&buf, needed); \ } \ /* Save the completed message into the stack item */ \ if (edata->targetfield) \ pfree(edata->targetfield); \ edata->targetfield = pstrdup(buf.data); \ pfree(buf.data); \ } /* * Same as above, except for pluralized error messages. The calling routine * must be declared like "const char *fmt_singular, const char *fmt_plural, * unsigned long n, ...". Translation is assumed always wanted. */ #define EVALUATE_MESSAGE_PLURAL(domain, targetfield, appendval) \ { \ const char *fmt; \ StringInfoData buf; \ /* Internationalize the error format string */ \ if (!in_error_recursion_trouble()) \ fmt = dngettext((domain), fmt_singular, fmt_plural, n); \ else \ fmt = (n == 1 ? fmt_singular : fmt_plural); \ initStringInfo(&buf); \ if ((appendval) && edata->targetfield) { \ appendStringInfoString(&buf, edata->targetfield); \ appendStringInfoChar(&buf, '\n'); \ } \ /* Generate actual output --- have to use appendStringInfoVA */ \ for (;;) \ { \ va_list args; \ int needed; \ errno = edata->saved_errno; \ va_start(args, n); \ needed = appendStringInfoVA(&buf, fmt, args); \ va_end(args); \ if (needed == 0) \ break; \ enlargeStringInfo(&buf, needed); \ } \ /* Save the completed message into the stack item */ \ if (edata->targetfield) \ pfree(edata->targetfield); \ edata->targetfield = pstrdup(buf.data); \ pfree(buf.data); \ } /* * errmsg --- add a primary error message text to the current error * * In addition to the usual %-escapes recognized by printf, "%m" in * fmt is replaced by the error message for the caller's value of errno. * * Note: no newline is needed at the end of the fmt string, since * ereport will provide one for the output methods that need it. */ int errmsg(const char *fmt,...) { ErrorData *edata = &errordata[errordata_stack_depth]; MemoryContext oldcontext; recursion_depth++; CHECK_STACK_DEPTH(); oldcontext = MemoryContextSwitchTo(edata->assoc_context); edata->message_id = fmt; EVALUATE_MESSAGE(edata->domain, message, false, true); MemoryContextSwitchTo(oldcontext); recursion_depth--; return 0; /* return value does not matter */ } /* * Add a backtrace to the containing ereport() call. This is intended to be * added temporarily during debugging. */ /* * Compute backtrace data and add it to the supplied ErrorData. num_skip * specifies how many inner frames to skip. Use this to avoid showing the * internal backtrace support functions in the backtrace. This requires that * this and related functions are not inlined. */ static void set_backtrace(ErrorData *edata, int num_skip) { StringInfoData errtrace; initStringInfo(&errtrace); #ifdef HAVE_BACKTRACE_SYMBOLS { void *buf[100]; int nframes; char **strfrms; nframes = backtrace(buf, lengthof(buf)); strfrms = backtrace_symbols(buf, nframes); if (strfrms == NULL) return; for (int i = num_skip; i < nframes; i++) appendStringInfo(&errtrace, "\n%s", strfrms[i]); free(strfrms); } #else appendStringInfoString(&errtrace, "backtrace generation is not supported by this installation"); #endif edata->backtrace = errtrace.data; } /* * errmsg_internal --- add a primary error message text to the current error * * This is exactly like errmsg() except that strings passed to errmsg_internal * are not translated, and are customarily left out of the * internationalization message dictionary. This should be used for "can't * happen" cases that are probably not worth spending translation effort on. * We also use this for certain cases where we *must* not try to translate * the message because the translation would fail and result in infinite * error recursion. */ int errmsg_internal(const char *fmt,...) { ErrorData *edata = &errordata[errordata_stack_depth]; MemoryContext oldcontext; recursion_depth++; CHECK_STACK_DEPTH(); oldcontext = MemoryContextSwitchTo(edata->assoc_context); edata->message_id = fmt; EVALUATE_MESSAGE(edata->domain, message, false, false); MemoryContextSwitchTo(oldcontext); recursion_depth--; return 0; /* return value does not matter */ } /* * errmsg_plural --- add a primary error message text to the current error, * with support for pluralization of the message text */ /* * errdetail --- add a detail error message text to the current error */ int errdetail(const char *fmt,...) { ErrorData *edata = &errordata[errordata_stack_depth]; MemoryContext oldcontext; recursion_depth++; CHECK_STACK_DEPTH(); oldcontext = MemoryContextSwitchTo(edata->assoc_context); EVALUATE_MESSAGE(edata->domain, detail, false, true); MemoryContextSwitchTo(oldcontext); recursion_depth--; return 0; /* return value does not matter */ } /* * errdetail_internal --- add a detail error message text to the current error * * This is exactly like errdetail() except that strings passed to * errdetail_internal are not translated, and are customarily left out of the * internationalization message dictionary. This should be used for detail * messages that seem not worth translating for one reason or another * (typically, that they don't seem to be useful to average users). */ /* * errdetail_log --- add a detail_log error message text to the current error */ /* * errdetail_log_plural --- add a detail_log error message text to the current error * with support for pluralization of the message text */ /* * errdetail_plural --- add a detail error message text to the current error, * with support for pluralization of the message text */ /* * errhint --- add a hint error message text to the current error */ int errhint(const char *fmt,...) { ErrorData *edata = &errordata[errordata_stack_depth]; MemoryContext oldcontext; recursion_depth++; CHECK_STACK_DEPTH(); oldcontext = MemoryContextSwitchTo(edata->assoc_context); EVALUATE_MESSAGE(edata->domain, hint, false, true); MemoryContextSwitchTo(oldcontext); recursion_depth--; return 0; /* return value does not matter */ } /* * errcontext_msg --- add a context error message text to the current error * * Unlike other cases, multiple calls are allowed to build up a stack of * context information. We assume earlier calls represent more-closely-nested * states. */ int errcontext_msg(const char *fmt,...) { ErrorData *edata = &errordata[errordata_stack_depth]; MemoryContext oldcontext; recursion_depth++; CHECK_STACK_DEPTH(); oldcontext = MemoryContextSwitchTo(edata->assoc_context); EVALUATE_MESSAGE(edata->context_domain, context, true, true); MemoryContextSwitchTo(oldcontext); recursion_depth--; return 0; /* return value does not matter */ } /* * set_errcontext_domain --- set message domain to be used by errcontext() * * errcontext_msg() can be called from a different module than the original * ereport(), so we cannot use the message domain passed in errstart() to * translate it. Instead, each errcontext_msg() call should be preceded by * a set_errcontext_domain() call to specify the domain. This is usually * done transparently by the errcontext() macro. */ int set_errcontext_domain(const char *domain) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); /* the default text domain is the backend's */ edata->context_domain = domain ? domain : PG_TEXTDOMAIN("postgres"); return 0; /* return value does not matter */ } /* * errhidestmt --- optionally suppress STATEMENT: field of log entry * * This should be called if the message text already includes the statement. */ /* * errhidecontext --- optionally suppress CONTEXT: field of log entry * * This should only be used for verbose debugging messages where the repeated * inclusion of context would bloat the log volume too much. */ /* * errfunction --- add reporting function name to the current error * * This is used when backwards compatibility demands that the function * name appear in messages sent to old-protocol clients. Note that the * passed string is expected to be a non-freeable constant string. */ /* * errposition --- add cursor position to the current error */ int errposition(int cursorpos) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); edata->cursorpos = cursorpos; return 0; /* return value does not matter */ } /* * internalerrposition --- add internal cursor position to the current error */ int internalerrposition(int cursorpos) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); edata->internalpos = cursorpos; return 0; /* return value does not matter */ } /* * internalerrquery --- add internal query text to the current error * * Can also pass NULL to drop the internal query text entry. This case * is intended for use in error callback subroutines that are editorializing * on the layout of the error report. */ int internalerrquery(const char *query) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); if (edata->internalquery) { pfree(edata->internalquery); edata->internalquery = NULL; } if (query) edata->internalquery = MemoryContextStrdup(edata->assoc_context, query); return 0; /* return value does not matter */ } /* * err_generic_string -- used to set individual ErrorData string fields * identified by PG_DIAG_xxx codes. * * This intentionally only supports fields that don't use localized strings, * so that there are no translation considerations. * * Most potential callers should not use this directly, but instead prefer * higher-level abstractions, such as errtablecol() (see relcache.c). */ /* * set_errdata_field --- set an ErrorData string field */ /* * geterrcode --- return the currently set SQLSTATE error code * * This is only intended for use in error callback subroutines, since there * is no other place outside elog.c where the concept is meaningful. */ int geterrcode(void) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); return edata->sqlerrcode; } /* * geterrposition --- return the currently set error position (0 if none) * * This is only intended for use in error callback subroutines, since there * is no other place outside elog.c where the concept is meaningful. */ int geterrposition(void) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); return edata->cursorpos; } /* * getinternalerrposition --- same for internal error position * * This is only intended for use in error callback subroutines, since there * is no other place outside elog.c where the concept is meaningful. */ int getinternalerrposition(void) { ErrorData *edata = &errordata[errordata_stack_depth]; /* we don't bother incrementing recursion_depth */ CHECK_STACK_DEPTH(); return edata->internalpos; } /* * Functions to allow construction of error message strings separately from * the ereport() call itself. * * The expected calling convention is * * pre_format_elog_string(errno, domain), var = format_elog_string(format,...) * * which can be hidden behind a macro such as GUC_check_errdetail(). We * assume that any functions called in the arguments of format_elog_string() * cannot result in re-entrant use of these functions --- otherwise the wrong * text domain might be used, or the wrong errno substituted for %m. This is * okay for the current usage with GUC check hooks, but might need further * effort someday. * * The result of format_elog_string() is stored in ErrorContext, and will * therefore survive until FlushErrorState() is called. */ /* * Actual output of the top-of-stack error message * * In the ereport(ERROR) case this is called from PostgresMain (or not at all, * if the error is caught by somebody). For all other severity levels this * is called by errfinish. */ void EmitErrorReport(void) { ErrorData *edata = &errordata[errordata_stack_depth]; MemoryContext oldcontext; recursion_depth++; CHECK_STACK_DEPTH(); oldcontext = MemoryContextSwitchTo(edata->assoc_context); /* * Call hook before sending message to log. The hook function is allowed * to turn off edata->output_to_server, so we must recheck that afterward. * Making any other change in the content of edata is not considered * supported. * * Note: the reason why the hook can only turn off output_to_server, and * not turn it on, is that it'd be unreliable: we will never get here at * all if errstart() deems the message uninteresting. A hook that could * make decisions in that direction would have to hook into errstart(), * where it would have much less information available. emit_log_hook is * intended for custom log filtering and custom log message transmission * mechanisms. * * The log hook has access to both the translated and original English * error message text, which is passed through to allow it to be used as a * message identifier. Note that the original text is not available for * detail, detail_log, hint and context text elements. */ if (edata->output_to_server && emit_log_hook) (*emit_log_hook) (edata); /* Send to server log, if enabled */ if (edata->output_to_server) send_message_to_server_log(edata); /* Send to client, if enabled */ if (edata->output_to_client) send_message_to_frontend(edata); MemoryContextSwitchTo(oldcontext); recursion_depth--; } /* * CopyErrorData --- obtain a copy of the topmost error stack entry * * This is only for use in error handler code. The data is copied into the * current memory context, so callers should always switch away from * ErrorContext first; otherwise it will be lost when FlushErrorState is done. */ ErrorData * CopyErrorData(void) { ErrorData *edata = &errordata[errordata_stack_depth]; ErrorData *newedata; /* * we don't increment recursion_depth because out-of-memory here does not * indicate a problem within the error subsystem. */ CHECK_STACK_DEPTH(); Assert(CurrentMemoryContext != ErrorContext); /* Copy the struct itself */ newedata = (ErrorData *) palloc(sizeof(ErrorData)); memcpy(newedata, edata, sizeof(ErrorData)); /* Make copies of separately-allocated fields */ if (newedata->message) newedata->message = pstrdup(newedata->message); if (newedata->detail) newedata->detail = pstrdup(newedata->detail); if (newedata->detail_log) newedata->detail_log = pstrdup(newedata->detail_log); if (newedata->hint) newedata->hint = pstrdup(newedata->hint); if (newedata->context) newedata->context = pstrdup(newedata->context); if (newedata->backtrace) newedata->backtrace = pstrdup(newedata->backtrace); if (newedata->schema_name) newedata->schema_name = pstrdup(newedata->schema_name); if (newedata->table_name) newedata->table_name = pstrdup(newedata->table_name); if (newedata->column_name) newedata->column_name = pstrdup(newedata->column_name); if (newedata->datatype_name) newedata->datatype_name = pstrdup(newedata->datatype_name); if (newedata->constraint_name) newedata->constraint_name = pstrdup(newedata->constraint_name); if (newedata->internalquery) newedata->internalquery = pstrdup(newedata->internalquery); /* Use the calling context for string allocation */ newedata->assoc_context = CurrentMemoryContext; return newedata; } /* * FreeErrorData --- free the structure returned by CopyErrorData. * * Error handlers should use this in preference to assuming they know all * the separately-allocated fields. */ /* * FlushErrorState --- flush the error state after error recovery * * This should be called by an error handler after it's done processing * the error; or as soon as it's done CopyErrorData, if it intends to * do stuff that is likely to provoke another error. You are not "out" of * the error subsystem until you have done this. */ void FlushErrorState(void) { /* * Reset stack to empty. The only case where it would be more than one * deep is if we serviced an error that interrupted construction of * another message. We assume control escaped out of that message * construction and won't ever go back. */ errordata_stack_depth = -1; recursion_depth = 0; /* Delete all data in ErrorContext */ MemoryContextResetAndDeleteChildren(ErrorContext); } /* * ThrowErrorData --- report an error described by an ErrorData structure * * This is somewhat like ReThrowError, but it allows elevels besides ERROR, * and the boolean flags such as output_to_server are computed via the * default rules rather than being copied from the given ErrorData. * This is primarily used to re-report errors originally reported by * background worker processes and then propagated (with or without * modification) to the backend responsible for them. */ /* * ReThrowError --- re-throw a previously copied error * * A handler can do CopyErrorData/FlushErrorState to get out of the error * subsystem, then do some processing, and finally ReThrowError to re-throw * the original error. This is slower than just PG_RE_THROW() but should * be used if the "some processing" is likely to incur another error. */ /* * pg_re_throw --- out-of-line implementation of PG_RE_THROW() macro */ void pg_re_throw(void) { /* If possible, throw the error to the next outer setjmp handler */ if (PG_exception_stack != NULL) siglongjmp(*PG_exception_stack, 1); else { /* * If we get here, elog(ERROR) was thrown inside a PG_TRY block, which * we have now exited only to discover that there is no outer setjmp * handler to pass the error to. Had the error been thrown outside * the block to begin with, we'd have promoted the error to FATAL, so * the correct behavior is to make it FATAL now; that is, emit it and * then call proc_exit. */ ErrorData *edata = &errordata[errordata_stack_depth]; Assert(errordata_stack_depth >= 0); Assert(edata->elevel == ERROR); edata->elevel = FATAL; /* * At least in principle, the increase in severity could have changed * where-to-output decisions, so recalculate. This should stay in * sync with errstart(), which see for comments. */ if (IsPostmasterEnvironment) edata->output_to_server = is_log_level_output(FATAL, log_min_messages); else edata->output_to_server = (FATAL >= log_min_messages); if (whereToSendOutput == DestRemote) edata->output_to_client = true; /* * We can use errfinish() for the rest, but we don't want it to call * any error context routines a second time. Since we know we are * about to exit, it should be OK to just clear the context stack. */ error_context_stack = NULL; errfinish(edata->filename, edata->lineno, edata->funcname); } /* Doesn't return ... */ ExceptionalCondition("pg_re_throw tried to return", "FailedAssertion", __FILE__, __LINE__); } /* * GetErrorContextStack - Return the context stack, for display/diags * * Returns a pstrdup'd string in the caller's context which includes the PG * error call stack. It is the caller's responsibility to ensure this string * is pfree'd (or its context cleaned up) when done. * * This information is collected by traversing the error contexts and calling * each context's callback function, each of which is expected to call * errcontext() to return a string which can be presented to the user. */ /* * Initialization of error output file */ #ifdef HAVE_SYSLOG /* * Set or update the parameters for syslog logging */ /* * Write a message line to syslog */ #endif /* HAVE_SYSLOG */ #ifdef WIN32 /* * Get the PostgreSQL equivalent of the Windows ANSI code page. "ANSI" system * interfaces (e.g. CreateFileA()) expect string arguments in this encoding. * Every process in a given system will find the same value at all times. */ static int GetACPEncoding(void) { static int encoding = -2; if (encoding == -2) encoding = pg_codepage_to_encoding(GetACP()); return encoding; } /* * Write a message line to the windows event log */ static void write_eventlog(int level, const char *line, int len) { WCHAR *utf16; int eventlevel = EVENTLOG_ERROR_TYPE; static HANDLE evtHandle = INVALID_HANDLE_VALUE; if (evtHandle == INVALID_HANDLE_VALUE) { evtHandle = RegisterEventSource(NULL, event_source ? event_source : DEFAULT_EVENT_SOURCE); if (evtHandle == NULL) { evtHandle = INVALID_HANDLE_VALUE; return; } } switch (level) { case DEBUG5: case DEBUG4: case DEBUG3: case DEBUG2: case DEBUG1: case LOG: case LOG_SERVER_ONLY: case INFO: case NOTICE: eventlevel = EVENTLOG_INFORMATION_TYPE; break; case WARNING: eventlevel = EVENTLOG_WARNING_TYPE; break; case ERROR: case FATAL: case PANIC: default: eventlevel = EVENTLOG_ERROR_TYPE; break; } /* * If message character encoding matches the encoding expected by * ReportEventA(), call it to avoid the hazards of conversion. Otherwise, * try to convert the message to UTF16 and write it with ReportEventW(). * Fall back on ReportEventA() if conversion failed. * * Since we palloc the structure required for conversion, also fall * through to writing unconverted if we have not yet set up * CurrentMemoryContext. * * Also verify that we are not on our way into error recursion trouble due * to error messages thrown deep inside pgwin32_message_to_UTF16(). */ if (!in_error_recursion_trouble() && CurrentMemoryContext != NULL && GetMessageEncoding() != GetACPEncoding()) { utf16 = pgwin32_message_to_UTF16(line, len, NULL); if (utf16) { ReportEventW(evtHandle, eventlevel, 0, 0, /* All events are Id 0 */ NULL, 1, 0, (LPCWSTR *) &utf16, NULL); /* XXX Try ReportEventA() when ReportEventW() fails? */ pfree(utf16); return; } } ReportEventA(evtHandle, eventlevel, 0, 0, /* All events are Id 0 */ NULL, 1, 0, &line, NULL); } #endif /* WIN32 */ #ifdef WIN32 #else #endif /* * setup formatted_log_time, for consistent times between CSV and regular logs */ /* * setup formatted_start_time */ /* * process_log_prefix_padding --- helper function for processing the format * string in log_line_prefix * * Note: This function returns NULL if it finds something which * it deems invalid in the format string. */ /* * Format tag info for log lines; append to the provided buffer. */ /* * append a CSV'd version of a string to a StringInfo * We use the PostgreSQL defaults for CSV, i.e. quote = escape = '"' * If it's NULL, append nothing. */ /* * Constructs the error message, depending on the Errordata it gets, in a CSV * format which is described in doc/src/sgml/config.sgml. */ /* * Unpack MAKE_SQLSTATE code. Note that this returns a pointer to a * static buffer. */ /* * Write error report to server's log */ static void send_message_to_server_log(ErrorData *edata) {} /* * Send data to the syslogger using the chunked protocol * * Note: when there are multiple backends writing into the syslogger pipe, * it's critical that each write go into the pipe indivisibly, and not * get interleaved with data from other processes. Fortunately, the POSIX * spec requires that writes to pipes be atomic so long as they are not * more than PIPE_BUF bytes long. So we divide long messages into chunks * that are no more than that length, and send one chunk per write() call. * The collector process knows how to reassemble the chunks. * * Because of the atomic write requirement, there are only two possible * results from write() here: -1 for failure, or the requested number of * bytes. There is not really anything we can do about a failure; retry would * probably be an infinite loop, and we can't even report the error usefully. * (There is noplace else we could send it!) So we might as well just ignore * the result from write(). However, on some platforms you get a compiler * warning from ignoring write()'s result, so do a little dance with casting * rc to void to shut up the compiler. */ /* * Append a text string to the error report being built for the client. * * This is ordinarily identical to pq_sendstring(), but if we are in * error recursion trouble we skip encoding conversion, because of the * possibility that the problem is a failure in the encoding conversion * subsystem itself. Code elsewhere should ensure that the passed-in * strings will be plain 7-bit ASCII, and thus not in need of conversion, * in such cases. (In particular, we disable localization of error messages * to help ensure that's true.) */ /* * Write error report to client */ static void send_message_to_frontend(ErrorData *edata) {} /* * Support routines for formatting error messages. */ /* * error_severity --- get string representing elevel * * The string is not localized here, but we mark the strings for translation * so that callers can invoke _() on the result. */ /* * append_with_tabs * * Append the string to the StringInfo buffer, inserting a tab after any * newline. */ /* * Write errors to stderr (or by equal means when stderr is * not available). Used before ereport/elog can be used * safely (memory context, GUC load etc) */ void write_stderr(const char *fmt,...) { va_list ap; #ifdef WIN32 char errbuf[2048]; /* Arbitrary size? */ #endif fmt = _(fmt); va_start(ap, fmt); #ifndef WIN32 /* On Unix, we just fprintf to stderr */ vfprintf(stderr, fmt, ap); fflush(stderr); #else vsnprintf(errbuf, sizeof(errbuf), fmt, ap); /* * On Win32, we print to stderr if running on a console, or write to * eventlog if running as a service */ if (pgwin32_is_service()) /* Running as a service */ { write_eventlog(ERROR, errbuf, strlen(errbuf)); } else { /* Not running as service, write to stderr */ write_console(errbuf, strlen(errbuf)); fflush(stderr); } #endif va_end(ap); } /* * is_log_level_output -- is elevel logically >= log_min_level? * * We use this for tests that should consider LOG to sort out-of-order, * between ERROR and FATAL. Generally this is the right thing for testing * whether a message should go to the postmaster log, whereas a simple >= * test is correct for testing whether the message should go to the client. */ static bool is_log_level_output(int elevel, int log_min_level) { if (elevel == LOG || elevel == LOG_SERVER_ONLY) { if (log_min_level == LOG || log_min_level <= ERROR) return true; } else if (log_min_level == LOG) { /* elevel != LOG */ if (elevel >= FATAL) return true; } /* Neither is LOG */ else if (elevel >= log_min_level) return true; return false; } /* * Adjust the level of a recovery-related message per trace_recovery_messages. * * The argument is the default log level of the message, eg, DEBUG2. (This * should only be applied to DEBUGn log messages, otherwise it's a no-op.) * If the level is >= trace_recovery_messages, we return LOG, causing the * message to be logged unconditionally (for most settings of * log_min_messages). Otherwise, we return the argument unchanged. * The message will then be shown based on the setting of log_min_messages. * * Intention is to keep this for at least the whole of the 9.0 production * release, so we can more easily diagnose production problems in the field. * It should go away eventually, though, because it's an ugly and * hard-to-explain kluge. */ libpg_query-13-2.1.0/src/postgres/src_backend_utils_fmgr_fmgr.c000066400000000000000000000362121413137616400245740ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - FunctionCall5Coll *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * fmgr.c * The Postgres function manager. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/fmgr/fmgr.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "access/detoast.h" #include "catalog/pg_language.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "executor/functions.h" #include "lib/stringinfo.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "pgstat.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/fmgrtab.h" #include "utils/guc.h" #include "utils/lsyscache.h" #include "utils/syscache.h" /* * Hooks for function calls */ PGDLLIMPORT PGDLLIMPORT /* * Hashtable for fast lookup of external C functions */ typedef struct { /* fn_oid is the hash key and so must be first! */ Oid fn_oid; /* OID of an external C function */ TransactionId fn_xmin; /* for checking up-to-dateness */ ItemPointerData fn_tid; PGFunction user_fn; /* the function's address */ const Pg_finfo_record *inforec; /* address of its info record */ } CFuncHashTabEntry; static void fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, bool ignore_security); static void fmgr_info_C_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple); static void fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple); static CFuncHashTabEntry *lookup_C_func(HeapTuple procedureTuple); static void record_C_func(HeapTuple procedureTuple, PGFunction user_fn, const Pg_finfo_record *inforec); /* extern so it's callable via JIT */ extern Datum fmgr_security_definer(PG_FUNCTION_ARGS); /* * Lookup routines for builtin-function table. We can search by either Oid * or name, but search by Oid is much faster. */ /* * Lookup a builtin by name. Note there can be more than one entry in * the array with the same name, but they should all point to the same * routine. */ /* * This routine fills a FmgrInfo struct, given the OID * of the function to be called. * * The caller's CurrentMemoryContext is used as the fn_mcxt of the info * struct; this means that any subsidiary data attached to the info struct * (either by fmgr_info itself, or later on by a function call handler) * will be allocated in that context. The caller must ensure that this * context is at least as long-lived as the info struct itself. This is * not a problem in typical cases where the info struct is on the stack or * in freshly-palloc'd space. However, if one intends to store an info * struct in a long-lived table, it's better to use fmgr_info_cxt. */ /* * Fill a FmgrInfo struct, specifying a memory context in which its * subsidiary data should go. */ /* * This one does the actual work. ignore_security is ordinarily false * but is set to true when we need to avoid recursion. */ /* * Return module and C function name providing implementation of functionId. * * If *mod == NULL and *fn == NULL, no C symbol is known to implement * function. * * If *mod == NULL and *fn != NULL, the function is implemented by a symbol in * the main binary. * * If *mod != NULL and *fn !=NULL the function is implemented in an extension * shared object. * * The returned module and function names are pstrdup'ed into the current * memory context. */ /* * Special fmgr_info processing for C-language functions. Note that * finfo->fn_oid is not valid yet. */ /* * Special fmgr_info processing for other-language functions. Note * that finfo->fn_oid is not valid yet. */ /* * Fetch and validate the information record for the given external function. * The function is specified by a handle for the containing library * (obtained from load_external_function) as well as the function name. * * If no info function exists for the given name an error is raised. * * This function is broken out of fmgr_info_C_lang so that fmgr_c_validator * can validate the information record for a function not yet entered into * pg_proc. */ /*------------------------------------------------------------------------- * Routines for caching lookup information for external C functions. * * The routines in dfmgr.c are relatively slow, so we try to avoid running * them more than once per external function per session. We use a hash table * with the function OID as the lookup key. *------------------------------------------------------------------------- */ /* * lookup_C_func: try to find a C function in the hash table * * If an entry exists and is up to date, return it; else return NULL */ /* * record_C_func: enter (or update) info about a C function in the hash table */ /* * clear_external_function_hash: remove entries for a library being closed * * Presently we just zap the entire hash table, but later it might be worth * the effort to remove only the entries associated with the given handle. */ /* * Copy an FmgrInfo struct * * This is inherently somewhat bogus since we can't reliably duplicate * language-dependent subsidiary info. We cheat by zeroing fn_extra, * instead, meaning that subsidiary info will have to be recomputed. */ /* * Specialized lookup routine for fmgr_internal_validator: given the alleged * name of an internal function, return the OID of the function. * If the name is not recognized, return InvalidOid. */ /* * Support for security-definer and proconfig-using functions. We support * both of these features using the same call handler, because they are * often used together and it would be inefficient (as well as notationally * messy) to have two levels of call handler involved. */ struct fmgr_security_definer_cache { FmgrInfo flinfo; /* lookup info for target function */ Oid userid; /* userid to set, or InvalidOid */ ArrayType *proconfig; /* GUC values to set, or NULL */ Datum arg; /* passthrough argument for plugin modules */ }; /* * Function handler for security-definer/proconfig/plugin-hooked functions. * We extract the OID of the actual function and do a fmgr lookup again. * Then we fetch the pg_proc row and copy the owner ID and proconfig fields. * (All this info is cached for the duration of the current query.) * To execute a call, we temporarily replace the flinfo with the cached * and looked-up one, while keeping the outer fcinfo (which contains all * the actual arguments, etc.) intact. This is not re-entrant, but then * the fcinfo itself can't be used reentrantly anyway. */ /*------------------------------------------------------------------------- * Support routines for callers of fmgr-compatible functions *------------------------------------------------------------------------- */ /* * These are for invocation of a specifically named function with a * directly-computed parameter list. Note that neither arguments nor result * are allowed to be NULL. Also, the function cannot be one that needs to * look at FmgrInfo, since there won't be any. */ /* * These functions work like the DirectFunctionCall functions except that * they use the flinfo parameter to initialise the fcinfo for the call. * It's recommended that the callee only use the fn_extra and fn_mcxt * fields, as other fields will typically describe the calling function * not the callee. Conversely, the calling function should not have * used fn_extra, unless its use is known to be compatible with the callee's. */ /* * These are for invocation of a previously-looked-up function with a * directly-computed parameter list. Note that neither arguments nor result * are allowed to be NULL. */ Datum FunctionCall5Coll(FmgrInfo *flinfo, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5) { LOCAL_FCINFO(fcinfo, 5); Datum result; InitFunctionCallInfoData(*fcinfo, flinfo, 5, collation, NULL, NULL); fcinfo->args[0].value = arg1; fcinfo->args[0].isnull = false; fcinfo->args[1].value = arg2; fcinfo->args[1].isnull = false; fcinfo->args[2].value = arg3; fcinfo->args[2].isnull = false; fcinfo->args[3].value = arg4; fcinfo->args[3].isnull = false; fcinfo->args[4].value = arg5; fcinfo->args[4].isnull = false; result = FunctionCallInvoke(fcinfo); /* Check for null result, since caller is clearly not expecting one */ if (fcinfo->isnull) elog(ERROR, "function %u returned NULL", flinfo->fn_oid); return result; } /* * These are for invocation of a function identified by OID with a * directly-computed parameter list. Note that neither arguments nor result * are allowed to be NULL. These are essentially fmgr_info() followed * by FunctionCallN(). If the same function is to be invoked repeatedly, * do the fmgr_info() once and then use FunctionCallN(). */ /* * Special cases for convenient invocation of datatype I/O functions. */ /* * Call a previously-looked-up datatype input function. * * "str" may be NULL to indicate we are reading a NULL. In this case * the caller should assume the result is NULL, but we'll call the input * function anyway if it's not strict. So this is almost but not quite * the same as FunctionCall3. */ /* * Call a previously-looked-up datatype output function. * * Do not call this on NULL datums. * * This is currently little more than window dressing for FunctionCall1. */ /* * Call a previously-looked-up datatype binary-input function. * * "buf" may be NULL to indicate we are reading a NULL. In this case * the caller should assume the result is NULL, but we'll call the receive * function anyway if it's not strict. So this is almost but not quite * the same as FunctionCall3. */ /* * Call a previously-looked-up datatype binary-output function. * * Do not call this on NULL datums. * * This is little more than window dressing for FunctionCall1, but it does * guarantee a non-toasted result, which strictly speaking the underlying * function doesn't. */ /* * As above, for I/O functions identified by OID. These are only to be used * in seldom-executed code paths. They are not only slow but leak memory. */ /*------------------------------------------------------------------------- * Support routines for standard maybe-pass-by-reference datatypes * * int8 and float8 can be passed by value if Datum is wide enough. * (For backwards-compatibility reasons, we allow pass-by-ref to be chosen * at compile time even if pass-by-val is possible.) * * Note: there is only one switch controlling the pass-by-value option for * both int8 and float8; this is to avoid making things unduly complicated * for the timestamp types, which might have either representation. *------------------------------------------------------------------------- */ #ifndef USE_FLOAT8_BYVAL /* controls int8 too */ Datum Int64GetDatum(int64 X) { int64 *retval = (int64 *) palloc(sizeof(int64)); *retval = X; return PointerGetDatum(retval); } Datum Float8GetDatum(float8 X) { float8 *retval = (float8 *) palloc(sizeof(float8)); *retval = X; return PointerGetDatum(retval); } #endif /* USE_FLOAT8_BYVAL */ /*------------------------------------------------------------------------- * Support routines for toastable datatypes *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * Support routines for extracting info from fn_expr parse tree * * These are needed by polymorphic functions, which accept multiple possible * input types and need help from the parser to know what they've got. * Also, some functions might be interested in whether a parameter is constant. * Functions taking VARIADIC ANY also need to know about the VARIADIC keyword. *------------------------------------------------------------------------- */ /* * Get the actual type OID of the function return type * * Returns InvalidOid if information is not available */ /* * Get the actual type OID of a specific function argument (counting from 0) * * Returns InvalidOid if information is not available */ /* * Get the actual type OID of a specific function argument (counting from 0), * but working from the calling expression tree instead of FmgrInfo * * Returns InvalidOid if information is not available */ /* * Find out whether a specific function argument is constant for the * duration of a query * * Returns false if information is not available */ /* * Find out whether a specific function argument is constant for the * duration of a query, but working from the calling expression tree * * Returns false if information is not available */ /* * Get the VARIADIC flag from the function invocation * * Returns false (the default assumption) if information is not available * * Note this is generally only of interest to VARIADIC ANY functions */ /* * Set options to FmgrInfo of opclass support function. * * Opclass support functions are called outside of expressions. Thanks to that * we can use fn_expr to store opclass options as bytea constant. */ /* * Check if options are defined for opclass support function. */ /* * Get options for opclass support function. */ /*------------------------------------------------------------------------- * Support routines for procedural language implementations *------------------------------------------------------------------------- */ /* * Verify that a validator is actually associated with the language of a * particular function and that the user has access to both the language and * the function. All validators should call this before doing anything * substantial. Doing so ensures a user cannot achieve anything with explicit * calls to validators that he could not achieve with CREATE FUNCTION or by * simply calling an existing function. * * When this function returns false, callers should skip all validation work * and call PG_RETURN_VOID(). This never happens at present; it is reserved * for future expansion. * * In particular, checking that the validator corresponds to the function's * language allows untrusted language validators to assume they process only * superuser-chosen source code. (Untrusted language call handlers, by * definition, do assume that.) A user lacking the USAGE language privilege * would be unable to reach the validator through CREATE FUNCTION, so we check * that to block explicit calls as well. Checking the EXECUTE privilege on * the function is often superfluous, because most users can clone the * function to get an executable copy. It is meaningful against users with no * database TEMP right and no permanent schema CREATE right, thereby unable to * create any function. Also, if the function tracks persistent state by * function OID or name, validating the original function might permit more * mischief than creating and validating a clone thereof. */ libpg_query-13-2.1.0/src/postgres/src_backend_utils_hash_dynahash.c000066400000000000000000001020661413137616400254310ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - hash_search * - hash_search_with_hash_value * - has_seq_scans * - num_seq_scans * - seq_scan_tables * - expand_table * - dir_realloc * - CurrentDynaHashCxt * - seg_alloc * - calc_bucket * - hash_corrupted * - DynaHashAlloc * - get_hash_entry * - element_alloc *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * dynahash.c * dynamic hash tables * * dynahash.c supports both local-to-a-backend hash tables and hash tables in * shared memory. For shared hash tables, it is the caller's responsibility * to provide appropriate access interlocking. The simplest convention is * that a single LWLock protects the whole hash table. Searches (HASH_FIND or * hash_seq_search) need only shared lock, but any update requires exclusive * lock. For heavily-used shared tables, the single-lock approach creates a * concurrency bottleneck, so we also support "partitioned" locking wherein * there are multiple LWLocks guarding distinct subsets of the table. To use * a hash table in partitioned mode, the HASH_PARTITION flag must be given * to hash_create. This prevents any attempt to split buckets on-the-fly. * Therefore, each hash bucket chain operates independently, and no fields * of the hash header change after init except nentries and freeList. * (A partitioned table uses multiple copies of those fields, guarded by * spinlocks, for additional concurrency.) * This lets any subset of the hash buckets be treated as a separately * lockable partition. We expect callers to use the low-order bits of a * lookup key's hash value as a partition number --- this will work because * of the way calc_bucket() maps hash values to bucket numbers. * * For hash tables in shared memory, the memory allocator function should * match malloc's semantics of returning NULL on failure. For hash tables * in local memory, we typically use palloc() which will throw error on * failure. The code in this file has to cope with both cases. * * dynahash.c provides support for these types of lookup keys: * * 1. Null-terminated C strings (truncated if necessary to fit in keysize), * compared as though by strcmp(). This is the default behavior. * * 2. Arbitrary binary data of size keysize, compared as though by memcmp(). * (Caller must ensure there are no undefined padding bits in the keys!) * This is selected by specifying HASH_BLOBS flag to hash_create. * * 3. More complex key behavior can be selected by specifying user-supplied * hashing, comparison, and/or key-copying functions. At least a hashing * function must be supplied; comparison defaults to memcmp() and key copying * to memcpy() when a user-defined hashing function is selected. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/hash/dynahash.c * *------------------------------------------------------------------------- */ /* * Original comments: * * Dynamic hashing, after CACM April 1988 pp 446-457, by Per-Ake Larson. * Coded into C, with minor code improvements, and with hsearch(3) interface, * by ejp@ausmelb.oz, Jul 26, 1988: 13:16; * also, hcreate/hdestroy routines added to simulate hsearch(3). * * These routines simulate hsearch(3) and family, with the important * difference that the hash table is dynamic - can grow indefinitely * beyond its original size (as supplied to hcreate()). * * Performance appears to be comparable to that of hsearch(3). * The 'source-code' options referred to in hsearch(3)'s 'man' page * are not implemented; otherwise functionality is identical. * * Compilation controls: * HASH_DEBUG controls some informative traces, mainly for debugging. * HASH_STATISTICS causes HashAccesses and HashCollisions to be maintained; * when combined with HASH_DEBUG, these are displayed by hdestroy(). * * Problems & fixes to ejp@ausmelb.oz. WARNING: relies on pre-processor * concatenation property, in probably unnecessary code 'optimization'. * * Modified margo@postgres.berkeley.edu February 1990 * added multiple table interface * Modified by sullivan@postgres.berkeley.edu April 1990 * changed ctl structure for shared memory */ #include "postgres.h" #include #include "access/xact.h" #include "common/hashfn.h" #include "port/pg_bitutils.h" #include "storage/shmem.h" #include "storage/spin.h" #include "utils/dynahash.h" #include "utils/memutils.h" /* * Constants * * A hash table has a top-level "directory", each of whose entries points * to a "segment" of ssize bucket headers. The maximum number of hash * buckets is thus dsize * ssize (but dsize may be expansible). Of course, * the number of records in the table can be larger, but we don't want a * whole lot of records per bucket or performance goes down. * * In a hash table allocated in shared memory, the directory cannot be * expanded because it must stay at a fixed address. The directory size * should be selected using hash_select_dirsize (and you'd better have * a good idea of the maximum number of entries!). For non-shared hash * tables, the initial directory size can be left at the default. */ #define DEF_SEGSIZE 256 #define DEF_SEGSIZE_SHIFT 8 /* must be log2(DEF_SEGSIZE) */ #define DEF_DIRSIZE 256 #define DEF_FFACTOR 1 /* default fill factor */ /* Number of freelists to be used for a partitioned hash table. */ #define NUM_FREELISTS 32 /* A hash bucket is a linked list of HASHELEMENTs */ typedef HASHELEMENT *HASHBUCKET; /* A hash segment is an array of bucket headers */ typedef HASHBUCKET *HASHSEGMENT; /* * Per-freelist data. * * In a partitioned hash table, each freelist is associated with a specific * set of hashcodes, as determined by the FREELIST_IDX() macro below. * nentries tracks the number of live hashtable entries having those hashcodes * (NOT the number of entries in the freelist, as you might expect). * * The coverage of a freelist might be more or less than one partition, so it * needs its own lock rather than relying on caller locking. Relying on that * wouldn't work even if the coverage was the same, because of the occasional * need to "borrow" entries from another freelist; see get_hash_entry(). * * Using an array of FreeListData instead of separate arrays of mutexes, * nentries and freeLists helps to reduce sharing of cache lines between * different mutexes. */ typedef struct { slock_t mutex; /* spinlock for this freelist */ long nentries; /* number of entries in associated buckets */ HASHELEMENT *freeList; /* chain of free elements */ } FreeListData; /* * Header structure for a hash table --- contains all changeable info * * In a shared-memory hash table, the HASHHDR is in shared memory, while * each backend has a local HTAB struct. For a non-shared table, there isn't * any functional difference between HASHHDR and HTAB, but we separate them * anyway to share code between shared and non-shared tables. */ struct HASHHDR { /* * The freelist can become a point of contention in high-concurrency hash * tables, so we use an array of freelists, each with its own mutex and * nentries count, instead of just a single one. Although the freelists * normally operate independently, we will scavenge entries from freelists * other than a hashcode's default freelist when necessary. * * If the hash table is not partitioned, only freeList[0] is used and its * spinlock is not used at all; callers' locking is assumed sufficient. */ FreeListData freeList[NUM_FREELISTS]; /* These fields can change, but not in a partitioned table */ /* Also, dsize can't change in a shared table, even if unpartitioned */ long dsize; /* directory size */ long nsegs; /* number of allocated segments (<= dsize) */ uint32 max_bucket; /* ID of maximum bucket in use */ uint32 high_mask; /* mask to modulo into entire table */ uint32 low_mask; /* mask to modulo into lower half of table */ /* These fields are fixed at hashtable creation */ Size keysize; /* hash key length in bytes */ Size entrysize; /* total user element size in bytes */ long num_partitions; /* # partitions (must be power of 2), or 0 */ long ffactor; /* target fill factor */ long max_dsize; /* 'dsize' limit if directory is fixed size */ long ssize; /* segment size --- must be power of 2 */ int sshift; /* segment shift = log2(ssize) */ int nelem_alloc; /* number of entries to allocate at once */ #ifdef HASH_STATISTICS /* * Count statistics here. NB: stats code doesn't bother with mutex, so * counts could be corrupted a bit in a partitioned table. */ long accesses; long collisions; #endif }; #define IS_PARTITIONED(hctl) ((hctl)->num_partitions != 0) #define FREELIST_IDX(hctl, hashcode) \ (IS_PARTITIONED(hctl) ? (hashcode) % NUM_FREELISTS : 0) /* * Top control structure for a hashtable --- in a shared table, each backend * has its own copy (OK since no fields change at runtime) */ struct HTAB { HASHHDR *hctl; /* => shared control information */ HASHSEGMENT *dir; /* directory of segment starts */ HashValueFunc hash; /* hash function */ HashCompareFunc match; /* key comparison function */ HashCopyFunc keycopy; /* key copying function */ HashAllocFunc alloc; /* memory allocator */ MemoryContext hcxt; /* memory context if default allocator used */ char *tabname; /* table name (for error messages) */ bool isshared; /* true if table is in shared memory */ bool isfixed; /* if true, don't enlarge */ /* freezing a shared table isn't allowed, so we can keep state here */ bool frozen; /* true = no more inserts allowed */ /* We keep local copies of these fixed values to reduce contention */ Size keysize; /* hash key length in bytes */ long ssize; /* segment size --- must be power of 2 */ int sshift; /* segment shift = log2(ssize) */ }; /* * Key (also entry) part of a HASHELEMENT */ #define ELEMENTKEY(helem) (((char *)(helem)) + MAXALIGN(sizeof(HASHELEMENT))) /* * Obtain element pointer given pointer to key */ #define ELEMENT_FROM_KEY(key) \ ((HASHELEMENT *) (((char *) (key)) - MAXALIGN(sizeof(HASHELEMENT)))) /* * Fast MOD arithmetic, assuming that y is a power of 2 ! */ #define MOD(x,y) ((x) & ((y)-1)) #ifdef HASH_STATISTICS static long hash_accesses, hash_collisions, hash_expansions; #endif /* * Private function prototypes */ static void *DynaHashAlloc(Size size); static HASHSEGMENT seg_alloc(HTAB *hashp); static bool element_alloc(HTAB *hashp, int nelem, int freelist_idx); static bool dir_realloc(HTAB *hashp); static bool expand_table(HTAB *hashp); static HASHBUCKET get_hash_entry(HTAB *hashp, int freelist_idx); static void hdefault(HTAB *hashp); static int choose_nelem_alloc(Size entrysize); static bool init_htab(HTAB *hashp, long nelem); static void hash_corrupted(HTAB *hashp); static long next_pow2_long(long num); static int next_pow2_int(long num); static void register_seq_scan(HTAB *hashp); static void deregister_seq_scan(HTAB *hashp); static bool has_seq_scans(HTAB *hashp); /* * memory allocation support */ static __thread MemoryContext CurrentDynaHashCxt = NULL; static void * DynaHashAlloc(Size size) { Assert(MemoryContextIsValid(CurrentDynaHashCxt)); return MemoryContextAlloc(CurrentDynaHashCxt, size); } /* * HashCompareFunc for string keys * * Because we copy keys with strlcpy(), they will be truncated at keysize-1 * bytes, so we can only compare that many ... hence strncmp is almost but * not quite the right thing. */ /************************** CREATE ROUTINES **********************/ /* * hash_create -- create a new dynamic hash table * * tabname: a name for the table (for debugging purposes) * nelem: maximum number of elements expected * *info: additional table parameters, as indicated by flags * flags: bitmask indicating which parameters to take from *info * * Note: for a shared-memory hashtable, nelem needs to be a pretty good * estimate, since we can't expand the table on the fly. But an unshared * hashtable can be expanded on-the-fly, so it's better for nelem to be * on the small side and let the table grow if it's exceeded. An overly * large nelem will penalize hash_seq_search speed without buying much. */ /* * Set default HASHHDR parameters. */ #ifdef HASH_STATISTICS #endif /* * Given the user-specified entry size, choose nelem_alloc, ie, how many * elements to add to the hash table when we need more. */ /* * Compute derived fields of hctl and build the initial directory/segment * arrays */ #ifdef HASH_DEBUG #endif /* * Estimate the space needed for a hashtable containing the given number * of entries of given size. * NOTE: this is used to estimate the footprint of hashtables in shared * memory; therefore it does not count HTAB which is in local memory. * NB: assumes that all hash structure parameters have default values! */ /* * Select an appropriate directory size for a hashtable with the given * maximum number of entries. * This is only needed for hashtables in shared memory, whose directories * cannot be expanded dynamically. * NB: assumes that all hash structure parameters have default values! * * XXX this had better agree with the behavior of init_htab()... */ /* * Compute the required initial memory allocation for a shared-memory * hashtable with the given parameters. We need space for the HASHHDR * and for the (non expansible) directory. */ /********************** DESTROY ROUTINES ************************/ #ifdef HASH_STATISTICS #endif /*******************************SEARCH ROUTINES *****************************/ /* * get_hash_value -- exported routine to calculate a key's hash value * * We export this because for partitioned tables, callers need to compute * the partition number (from the low-order bits of the hash value) before * searching. */ /* Convert a hash value to a bucket number */ static inline uint32 calc_bucket(HASHHDR *hctl, uint32 hash_val) { uint32 bucket; bucket = hash_val & hctl->high_mask; if (bucket > hctl->max_bucket) bucket = bucket & hctl->low_mask; return bucket; } /* * hash_search -- look up key in table and perform action * hash_search_with_hash_value -- same, with key's hash value already computed * * action is one of: * HASH_FIND: look up key in table * HASH_ENTER: look up key in table, creating entry if not present * HASH_ENTER_NULL: same, but return NULL if out of memory * HASH_REMOVE: look up key in table, remove entry if present * * Return value is a pointer to the element found/entered/removed if any, * or NULL if no match was found. (NB: in the case of the REMOVE action, * the result is a dangling pointer that shouldn't be dereferenced!) * * HASH_ENTER will normally ereport a generic "out of memory" error if * it is unable to create a new entry. The HASH_ENTER_NULL operation is * the same except it will return NULL if out of memory. Note that * HASH_ENTER_NULL cannot be used with the default palloc-based allocator, * since palloc internally ereports on out-of-memory. * * If foundPtr isn't NULL, then *foundPtr is set true if we found an * existing entry in the table, false otherwise. This is needed in the * HASH_ENTER case, but is redundant with the return value otherwise. * * For hash_search_with_hash_value, the hashvalue parameter must have been * calculated with get_hash_value(). */ void * hash_search(HTAB *hashp, const void *keyPtr, HASHACTION action, bool *foundPtr) { return hash_search_with_hash_value(hashp, keyPtr, hashp->hash(keyPtr, hashp->keysize), action, foundPtr); } void * hash_search_with_hash_value(HTAB *hashp, const void *keyPtr, uint32 hashvalue, HASHACTION action, bool *foundPtr) { HASHHDR *hctl = hashp->hctl; int freelist_idx = FREELIST_IDX(hctl, hashvalue); Size keysize; uint32 bucket; long segment_num; long segment_ndx; HASHSEGMENT segp; HASHBUCKET currBucket; HASHBUCKET *prevBucketPtr; HashCompareFunc match; #ifdef HASH_STATISTICS hash_accesses++; hctl->accesses++; #endif /* * If inserting, check if it is time to split a bucket. * * NOTE: failure to expand table is not a fatal error, it just means we * have to run at higher fill factor than we wanted. However, if we're * using the palloc allocator then it will throw error anyway on * out-of-memory, so we must do this before modifying the table. */ if (action == HASH_ENTER || action == HASH_ENTER_NULL) { /* * Can't split if running in partitioned mode, nor if frozen, nor if * table is the subject of any active hash_seq_search scans. Strange * order of these tests is to try to check cheaper conditions first. */ if (!IS_PARTITIONED(hctl) && !hashp->frozen && hctl->freeList[0].nentries / (long) (hctl->max_bucket + 1) >= hctl->ffactor && !has_seq_scans(hashp)) (void) expand_table(hashp); } /* * Do the initial lookup */ bucket = calc_bucket(hctl, hashvalue); segment_num = bucket >> hashp->sshift; segment_ndx = MOD(bucket, hashp->ssize); segp = hashp->dir[segment_num]; if (segp == NULL) hash_corrupted(hashp); prevBucketPtr = &segp[segment_ndx]; currBucket = *prevBucketPtr; /* * Follow collision chain looking for matching key */ match = hashp->match; /* save one fetch in inner loop */ keysize = hashp->keysize; /* ditto */ while (currBucket != NULL) { if (currBucket->hashvalue == hashvalue && match(ELEMENTKEY(currBucket), keyPtr, keysize) == 0) break; prevBucketPtr = &(currBucket->link); currBucket = *prevBucketPtr; #ifdef HASH_STATISTICS hash_collisions++; hctl->collisions++; #endif } if (foundPtr) *foundPtr = (bool) (currBucket != NULL); /* * OK, now what? */ switch (action) { case HASH_FIND: if (currBucket != NULL) return (void *) ELEMENTKEY(currBucket); return NULL; case HASH_REMOVE: if (currBucket != NULL) { /* if partitioned, must lock to touch nentries and freeList */ if (IS_PARTITIONED(hctl)) SpinLockAcquire(&(hctl->freeList[freelist_idx].mutex)); /* delete the record from the appropriate nentries counter. */ Assert(hctl->freeList[freelist_idx].nentries > 0); hctl->freeList[freelist_idx].nentries--; /* remove record from hash bucket's chain. */ *prevBucketPtr = currBucket->link; /* add the record to the appropriate freelist. */ currBucket->link = hctl->freeList[freelist_idx].freeList; hctl->freeList[freelist_idx].freeList = currBucket; if (IS_PARTITIONED(hctl)) SpinLockRelease(&hctl->freeList[freelist_idx].mutex); /* * better hope the caller is synchronizing access to this * element, because someone else is going to reuse it the next * time something is added to the table */ return (void *) ELEMENTKEY(currBucket); } return NULL; case HASH_ENTER_NULL: /* ENTER_NULL does not work with palloc-based allocator */ Assert(hashp->alloc != DynaHashAlloc); /* FALL THRU */ case HASH_ENTER: /* Return existing element if found, else create one */ if (currBucket != NULL) return (void *) ELEMENTKEY(currBucket); /* disallow inserts if frozen */ if (hashp->frozen) elog(ERROR, "cannot insert into frozen hashtable \"%s\"", hashp->tabname); currBucket = get_hash_entry(hashp, freelist_idx); if (currBucket == NULL) { /* out of memory */ if (action == HASH_ENTER_NULL) return NULL; /* report a generic message */ if (hashp->isshared) ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of shared memory"))); else ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); } /* link into hashbucket chain */ *prevBucketPtr = currBucket; currBucket->link = NULL; /* copy key into record */ currBucket->hashvalue = hashvalue; hashp->keycopy(ELEMENTKEY(currBucket), keyPtr, keysize); /* * Caller is expected to fill the data field on return. DO NOT * insert any code that could possibly throw error here, as doing * so would leave the table entry incomplete and hence corrupt the * caller's data structure. */ return (void *) ELEMENTKEY(currBucket); } elog(ERROR, "unrecognized hash action code: %d", (int) action); return NULL; /* keep compiler quiet */ } /* * hash_update_hash_key -- change the hash key of an existing table entry * * This is equivalent to removing the entry, making a new entry, and copying * over its data, except that the entry never goes to the table's freelist. * Therefore this cannot suffer an out-of-memory failure, even if there are * other processes operating in other partitions of the hashtable. * * Returns true if successful, false if the requested new hash key is already * present. Throws error if the specified entry pointer isn't actually a * table member. * * NB: currently, there is no special case for old and new hash keys being * identical, which means we'll report false for that situation. This is * preferable for existing uses. * * NB: for a partitioned hashtable, caller must hold lock on both relevant * partitions, if the new hash key would belong to a different partition. */ #ifdef HASH_STATISTICS #endif #ifdef HASH_STATISTICS #endif /* * Allocate a new hashtable entry if possible; return NULL if out of memory. * (Or, if the underlying space allocator throws error for out-of-memory, * we won't return at all.) */ static HASHBUCKET get_hash_entry(HTAB *hashp, int freelist_idx) { HASHHDR *hctl = hashp->hctl; HASHBUCKET newElement; for (;;) { /* if partitioned, must lock to touch nentries and freeList */ if (IS_PARTITIONED(hctl)) SpinLockAcquire(&hctl->freeList[freelist_idx].mutex); /* try to get an entry from the freelist */ newElement = hctl->freeList[freelist_idx].freeList; if (newElement != NULL) break; if (IS_PARTITIONED(hctl)) SpinLockRelease(&hctl->freeList[freelist_idx].mutex); /* * No free elements in this freelist. In a partitioned table, there * might be entries in other freelists, but to reduce contention we * prefer to first try to get another chunk of buckets from the main * shmem allocator. If that fails, though, we *MUST* root through all * the other freelists before giving up. There are multiple callers * that assume that they can allocate every element in the initially * requested table size, or that deleting an element guarantees they * can insert a new element, even if shared memory is entirely full. * Failing because the needed element is in a different freelist is * not acceptable. */ if (!element_alloc(hashp, hctl->nelem_alloc, freelist_idx)) { int borrow_from_idx; if (!IS_PARTITIONED(hctl)) return NULL; /* out of memory */ /* try to borrow element from another freelist */ borrow_from_idx = freelist_idx; for (;;) { borrow_from_idx = (borrow_from_idx + 1) % NUM_FREELISTS; if (borrow_from_idx == freelist_idx) break; /* examined all freelists, fail */ SpinLockAcquire(&(hctl->freeList[borrow_from_idx].mutex)); newElement = hctl->freeList[borrow_from_idx].freeList; if (newElement != NULL) { hctl->freeList[borrow_from_idx].freeList = newElement->link; SpinLockRelease(&(hctl->freeList[borrow_from_idx].mutex)); /* careful: count the new element in its proper freelist */ SpinLockAcquire(&hctl->freeList[freelist_idx].mutex); hctl->freeList[freelist_idx].nentries++; SpinLockRelease(&hctl->freeList[freelist_idx].mutex); return newElement; } SpinLockRelease(&(hctl->freeList[borrow_from_idx].mutex)); } /* no elements available to borrow either, so out of memory */ return NULL; } } /* remove entry from freelist, bump nentries */ hctl->freeList[freelist_idx].freeList = newElement->link; hctl->freeList[freelist_idx].nentries++; if (IS_PARTITIONED(hctl)) SpinLockRelease(&hctl->freeList[freelist_idx].mutex); return newElement; } /* * hash_get_num_entries -- get the number of entries in a hashtable */ /* * hash_seq_init/_search/_term * Sequentially search through hash table and return * all the elements one by one, return NULL when no more. * * hash_seq_term should be called if and only if the scan is abandoned before * completion; if hash_seq_search returns NULL then it has already done the * end-of-scan cleanup. * * NOTE: caller may delete the returned element before continuing the scan. * However, deleting any other element while the scan is in progress is * UNDEFINED (it might be the one that curIndex is pointing at!). Also, * if elements are added to the table while the scan is in progress, it is * unspecified whether they will be visited by the scan or not. * * NOTE: it is possible to use hash_seq_init/hash_seq_search without any * worry about hash_seq_term cleanup, if the hashtable is first locked against * further insertions by calling hash_freeze. * * NOTE: to use this with a partitioned hashtable, caller had better hold * at least shared lock on all partitions of the table throughout the scan! * We can cope with insertions or deletions by our own backend, but *not* * with concurrent insertions or deletions by another. */ /* * hash_freeze * Freeze a hashtable against future insertions (deletions are * still allowed) * * The reason for doing this is that by preventing any more bucket splits, * we no longer need to worry about registering hash_seq_search scans, * and thus caller need not be careful about ensuring hash_seq_term gets * called at the right times. * * Multiple calls to hash_freeze() are allowed, but you can't freeze a table * with active scans (since hash_seq_term would then do the wrong thing). */ /********************************* UTILITIES ************************/ /* * Expand the table by adding one more hash bucket. */ static bool expand_table(HTAB *hashp) { HASHHDR *hctl = hashp->hctl; HASHSEGMENT old_seg, new_seg; long old_bucket, new_bucket; long new_segnum, new_segndx; long old_segnum, old_segndx; HASHBUCKET *oldlink, *newlink; HASHBUCKET currElement, nextElement; Assert(!IS_PARTITIONED(hctl)); #ifdef HASH_STATISTICS hash_expansions++; #endif new_bucket = hctl->max_bucket + 1; new_segnum = new_bucket >> hashp->sshift; new_segndx = MOD(new_bucket, hashp->ssize); if (new_segnum >= hctl->nsegs) { /* Allocate new segment if necessary -- could fail if dir full */ if (new_segnum >= hctl->dsize) if (!dir_realloc(hashp)) return false; if (!(hashp->dir[new_segnum] = seg_alloc(hashp))) return false; hctl->nsegs++; } /* OK, we created a new bucket */ hctl->max_bucket++; /* * *Before* changing masks, find old bucket corresponding to same hash * values; values in that bucket may need to be relocated to new bucket. * Note that new_bucket is certainly larger than low_mask at this point, * so we can skip the first step of the regular hash mask calc. */ old_bucket = (new_bucket & hctl->low_mask); /* * If we crossed a power of 2, readjust masks. */ if ((uint32) new_bucket > hctl->high_mask) { hctl->low_mask = hctl->high_mask; hctl->high_mask = (uint32) new_bucket | hctl->low_mask; } /* * Relocate records to the new bucket. NOTE: because of the way the hash * masking is done in calc_bucket, only one old bucket can need to be * split at this point. With a different way of reducing the hash value, * that might not be true! */ old_segnum = old_bucket >> hashp->sshift; old_segndx = MOD(old_bucket, hashp->ssize); old_seg = hashp->dir[old_segnum]; new_seg = hashp->dir[new_segnum]; oldlink = &old_seg[old_segndx]; newlink = &new_seg[new_segndx]; for (currElement = *oldlink; currElement != NULL; currElement = nextElement) { nextElement = currElement->link; if ((long) calc_bucket(hctl, currElement->hashvalue) == old_bucket) { *oldlink = currElement; oldlink = &currElement->link; } else { *newlink = currElement; newlink = &currElement->link; } } /* don't forget to terminate the rebuilt hash chains... */ *oldlink = NULL; *newlink = NULL; return true; } static bool dir_realloc(HTAB *hashp) { HASHSEGMENT *p; HASHSEGMENT *old_p; long new_dsize; long old_dirsize; long new_dirsize; if (hashp->hctl->max_dsize != NO_MAX_DSIZE) return false; /* Reallocate directory */ new_dsize = hashp->hctl->dsize << 1; old_dirsize = hashp->hctl->dsize * sizeof(HASHSEGMENT); new_dirsize = new_dsize * sizeof(HASHSEGMENT); old_p = hashp->dir; CurrentDynaHashCxt = hashp->hcxt; p = (HASHSEGMENT *) hashp->alloc((Size) new_dirsize); if (p != NULL) { memcpy(p, old_p, old_dirsize); MemSet(((char *) p) + old_dirsize, 0, new_dirsize - old_dirsize); hashp->dir = p; hashp->hctl->dsize = new_dsize; /* XXX assume the allocator is palloc, so we know how to free */ Assert(hashp->alloc == DynaHashAlloc); pfree(old_p); return true; } return false; } static HASHSEGMENT seg_alloc(HTAB *hashp) { HASHSEGMENT segp; CurrentDynaHashCxt = hashp->hcxt; segp = (HASHSEGMENT) hashp->alloc(sizeof(HASHBUCKET) * hashp->ssize); if (!segp) return NULL; MemSet(segp, 0, sizeof(HASHBUCKET) * hashp->ssize); return segp; } /* * allocate some new elements and link them into the indicated free list */ static bool element_alloc(HTAB *hashp, int nelem, int freelist_idx) { HASHHDR *hctl = hashp->hctl; Size elementSize; HASHELEMENT *firstElement; HASHELEMENT *tmpElement; HASHELEMENT *prevElement; int i; if (hashp->isfixed) return false; /* Each element has a HASHELEMENT header plus user data. */ elementSize = MAXALIGN(sizeof(HASHELEMENT)) + MAXALIGN(hctl->entrysize); CurrentDynaHashCxt = hashp->hcxt; firstElement = (HASHELEMENT *) hashp->alloc(nelem * elementSize); if (!firstElement) return false; /* prepare to link all the new entries into the freelist */ prevElement = NULL; tmpElement = firstElement; for (i = 0; i < nelem; i++) { tmpElement->link = prevElement; prevElement = tmpElement; tmpElement = (HASHELEMENT *) (((char *) tmpElement) + elementSize); } /* if partitioned, must lock to touch freeList */ if (IS_PARTITIONED(hctl)) SpinLockAcquire(&hctl->freeList[freelist_idx].mutex); /* freelist could be nonempty if two backends did this concurrently */ firstElement->link = hctl->freeList[freelist_idx].freeList; hctl->freeList[freelist_idx].freeList = prevElement; if (IS_PARTITIONED(hctl)) SpinLockRelease(&hctl->freeList[freelist_idx].mutex); return true; } /* complain when we have detected a corrupted hashtable */ static void hash_corrupted(HTAB *hashp) { /* * If the corruption is in a shared hashtable, we'd better force a * systemwide restart. Otherwise, just shut down this one backend. */ if (hashp->isshared) elog(PANIC, "hash table \"%s\" corrupted", hashp->tabname); else elog(FATAL, "hash table \"%s\" corrupted", hashp->tabname); } /* calculate ceil(log base 2) of num */ #if SIZEOF_LONG < 8 #else #endif /* calculate first power of 2 >= num, bounded to what will fit in a long */ /* calculate first power of 2 >= num, bounded to what will fit in an int */ /************************* SEQ SCAN TRACKING ************************/ /* * We track active hash_seq_search scans here. The need for this mechanism * comes from the fact that a scan will get confused if a bucket split occurs * while it's in progress: it might visit entries twice, or even miss some * entirely (if it's partway through the same bucket that splits). Hence * we want to inhibit bucket splits if there are any active scans on the * table being inserted into. This is a fairly rare case in current usage, * so just postponing the split until the next insertion seems sufficient. * * Given present usages of the function, only a few scans are likely to be * open concurrently; so a finite-size stack of open scans seems sufficient, * and we don't worry that linear search is too slow. Note that we do * allow multiple scans of the same hashtable to be open concurrently. * * This mechanism can support concurrent scan and insertion in a shared * hashtable if it's the same backend doing both. It would fail otherwise, * but locking reasons seem to preclude any such scenario anyway, so we don't * worry. * * This arrangement is reasonably robust if a transient hashtable is deleted * without notifying us. The absolute worst case is we might inhibit splits * in another table created later at exactly the same address. We will give * a warning at transaction end for reference leaks, so any bugs leading to * lack of notification should be easy to catch. */ #define MAX_SEQ_SCANS 100 static __thread HTAB *seq_scan_tables[MAX_SEQ_SCANS]; /* tables being scanned */ /* subtransaction nest level */ static __thread int num_seq_scans = 0; /* Register a table as having an active hash_seq_search scan */ /* Deregister an active scan */ /* Check if a table has any active scan */ static bool has_seq_scans(HTAB *hashp) { int i; for (i = 0; i < num_seq_scans; i++) { if (seq_scan_tables[i] == hashp) return true; } return false; } /* Clean up any open scans at end of transaction */ /* Clean up any open scans at end of subtransaction */ libpg_query-13-2.1.0/src/postgres/src_backend_utils_init_globals.c000066400000000000000000000064441413137616400253000ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - CritSectionCount * - ExitOnAnyError * - InterruptHoldoffCount * - QueryCancelHoldoffCount * - IsPostmasterEnvironment * - InterruptPending *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * globals.c * global variable declarations * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/init/globals.c * * NOTES * Globals used all over the place should be declared here and not * in other modules. * *------------------------------------------------------------------------- */ #include "postgres.h" #include "common/file_perm.h" #include "libpq/libpq-be.h" #include "libpq/pqcomm.h" #include "miscadmin.h" #include "storage/backendid.h" __thread volatile sig_atomic_t InterruptPending = false; __thread volatile uint32 InterruptHoldoffCount = 0; __thread volatile uint32 QueryCancelHoldoffCount = 0; __thread volatile uint32 CritSectionCount = 0; /* * MyLatch points to the latch that should be used for signal handling by the * current process. It will either point to a process local latch if the * current process does not have a PGPROC entry in that moment, or to * PGPROC->procLatch if it has. Thus it can always be used in signal handlers, * without checking for its existence. */ /* * DataDir is the absolute path to the top level of the PGDATA directory tree. * Except during early startup, this is also the server's working directory; * most code therefore can simply use relative paths and not reference DataDir * explicitly. */ /* * Mode of the data directory. The default is 0700 but it may be changed in * checkDataDir() to 0750 if the data directory actually has that mode. */ /* debugging output file */ /* full path to my executable */ /* full path to lib directory */ #ifdef EXEC_BACKEND char postgres_exec_path[MAXPGPATH]; /* full path to backend */ /* note: currently this is not valid in backend processes */ #endif /* * DatabasePath is the path (relative to DataDir) of my database's * primary directory, ie, its directory in the default tablespace. */ /* * IsPostmasterEnvironment is true in a postmaster process and any postmaster * child process; it is false in a standalone process (bootstrap or * standalone backend). IsUnderPostmaster is true in postmaster child * processes. Note that "child process" includes all children, not only * regular backends. These should be set correctly as early as possible * in the execution of a process, so that error handling will do the right * things if an error should occur during process initialization. * * These are initialized for the bootstrap/standalone case. */ __thread bool IsPostmasterEnvironment = false; __thread bool ExitOnAnyError = false; /* * Primary determinants of sizes of shared-memory structures. * * MaxBackends is computed by PostmasterMain after modules have had a chance to * register background workers. */ /* GUC parameters for vacuum */ /* working state for vacuum */ libpg_query-13-2.1.0/src/postgres/src_backend_utils_mb_mbutils.c000066400000000000000000000530031413137616400247600ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_mbcliplen * - pg_encoding_mbcliplen * - cliplen * - DatabaseEncoding * - pg_verifymbstr * - pg_verify_mbstr_len * - report_invalid_encoding * - GetDatabaseEncoding * - pg_get_client_encoding * - ClientEncoding * - pg_database_encoding_max_length * - pg_unicode_to_server * - GetDatabaseEncodingName * - Utf8ToServerConvProc * - pg_mbstrlen_with_len * - pg_mblen * - SetDatabaseEncoding *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * mbutils.c * This file contains functions for encoding conversion. * * The string-conversion functions in this file share some API quirks. * Note the following: * * The functions return a palloc'd, null-terminated string if conversion * is required. However, if no conversion is performed, the given source * string pointer is returned as-is. * * Although the presence of a length argument means that callers can pass * non-null-terminated strings, care is required because the same string * will be passed back if no conversion occurs. Such callers *must* check * whether result == src and handle that case differently. * * If the source and destination encodings are the same, the source string * is returned without any verification; it's assumed to be valid data. * If that might not be the case, the caller is responsible for validating * the string using a separate call to pg_verify_mbstr(). Whenever the * source and destination encodings are different, the functions ensure that * the result is validly encoded according to the destination encoding. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/mb/mbutils.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "access/xact.h" #include "catalog/namespace.h" #include "mb/pg_wchar.h" #include "utils/builtins.h" #include "utils/memutils.h" #include "utils/syscache.h" /* * We maintain a simple linked list caching the fmgr lookup info for the * currently selected conversion functions, as well as any that have been * selected previously in the current session. (We remember previous * settings because we must be able to restore a previous setting during * transaction rollback, without doing any fresh catalog accesses.) * * Since we'll never release this data, we just keep it in TopMemoryContext. */ typedef struct ConvProcInfo { int s_encoding; /* server and client encoding IDs */ int c_encoding; FmgrInfo to_server_info; /* lookup info for conversion procs */ FmgrInfo to_client_info; } ConvProcInfo; /* List of ConvProcInfo */ /* * These variables point to the currently active conversion functions, * or are NULL when no conversion is needed. */ /* * This variable stores the conversion function to convert from UTF-8 * to the server encoding. It's NULL if the server encoding *is* UTF-8, * or if we lack a conversion function for this. */ static __thread FmgrInfo *Utf8ToServerConvProc = NULL; /* * These variables track the currently-selected encodings. */ static __thread const pg_enc2name *ClientEncoding = &pg_enc2name_tbl[PG_SQL_ASCII]; static __thread const pg_enc2name *DatabaseEncoding = &pg_enc2name_tbl[PG_SQL_ASCII]; /* * During backend startup we can't set client encoding because we (a) * can't look up the conversion functions, and (b) may not know the database * encoding yet either. So SetClientEncoding() just accepts anything and * remembers it for InitializeClientEncoding() to apply later. */ /* Internal functions */ static char *perform_default_encoding_conversion(const char *src, int len, bool is_client_to_server); static int cliplen(const char *str, int len, int limit); /* * Prepare for a future call to SetClientEncoding. Success should mean * that SetClientEncoding is guaranteed to succeed for this encoding request. * * (But note that success before backend_startup_complete does not guarantee * success after ...) * * Returns 0 if okay, -1 if not (bad encoding or can't support conversion) */ /* * Set the active client encoding and set up the conversion-function pointers. * PrepareClientEncoding should have been called previously for this encoding. * * Returns 0 if okay, -1 if not (bad encoding or can't support conversion) */ /* * Initialize client encoding conversions. * Called from InitPostgres() once during backend startup. */ /* * returns the current client encoding */ int pg_get_client_encoding(void) { return ClientEncoding->encoding; } /* * returns the current client encoding name */ /* * Convert src string to another encoding (general case). * * See the notes about string conversion functions at the top of this file. */ /* * Convert string to encoding encoding_name. The source * encoding is the DB encoding. * * BYTEA convert_to(TEXT string, NAME encoding_name) */ /* * Convert string from encoding encoding_name. The destination * encoding is the DB encoding. * * TEXT convert_from(BYTEA string, NAME encoding_name) */ /* * Convert string between two arbitrary encodings. * * BYTEA convert(BYTEA string, NAME src_encoding_name, NAME dest_encoding_name) */ /* * get the length of the string considered as text in the specified * encoding. Raises an error if the data is not valid in that * encoding. * * INT4 length (BYTEA string, NAME src_encoding_name) */ /* * Get maximum multibyte character length in the specified encoding. * * Note encoding is specified numerically, not by name as above. */ /* * Convert client encoding to server encoding. * * See the notes about string conversion functions at the top of this file. */ /* * Convert any encoding to server encoding. * * See the notes about string conversion functions at the top of this file. * * Unlike the other string conversion functions, this will apply validation * even if encoding == DatabaseEncoding->encoding. This is because this is * used to process data coming in from outside the database, and we never * want to just assume validity. */ /* * Convert server encoding to client encoding. * * See the notes about string conversion functions at the top of this file. */ /* * Convert server encoding to any encoding. * * See the notes about string conversion functions at the top of this file. */ /* * Perform default encoding conversion using cached FmgrInfo. Since * this function does not access database at all, it is safe to call * outside transactions. If the conversion has not been set up by * SetClientEncoding(), no conversion is performed. */ /* * Convert a single Unicode code point into a string in the server encoding. * * The code point given by "c" is converted and stored at *s, which must * have at least MAX_UNICODE_EQUIVALENT_STRING+1 bytes available. * The output will have a trailing '\0'. Throws error if the conversion * cannot be performed. * * Note that this relies on having previously looked up any required * conversion function. That's partly for speed but mostly because the parser * may call this outside any transaction, or in an aborted transaction. */ void pg_unicode_to_server(pg_wchar c, unsigned char *s) { unsigned char c_as_utf8[MAX_MULTIBYTE_CHAR_LEN + 1]; int c_as_utf8_len; int server_encoding; /* * Complain if invalid Unicode code point. The choice of errcode here is * debatable, but really our caller should have checked this anyway. */ if (!is_valid_unicode_codepoint(c)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid Unicode code point"))); /* Otherwise, if it's in ASCII range, conversion is trivial */ if (c <= 0x7F) { s[0] = (unsigned char) c; s[1] = '\0'; return; } /* If the server encoding is UTF-8, we just need to reformat the code */ server_encoding = GetDatabaseEncoding(); if (server_encoding == PG_UTF8) { unicode_to_utf8(c, s); s[pg_utf_mblen(s)] = '\0'; return; } /* For all other cases, we must have a conversion function available */ if (Utf8ToServerConvProc == NULL) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("conversion between %s and %s is not supported", pg_enc2name_tbl[PG_UTF8].name, GetDatabaseEncodingName()))); /* Construct UTF-8 source string */ unicode_to_utf8(c, c_as_utf8); c_as_utf8_len = pg_utf_mblen(c_as_utf8); c_as_utf8[c_as_utf8_len] = '\0'; /* Convert, or throw error if we can't */ FunctionCall5(Utf8ToServerConvProc, Int32GetDatum(PG_UTF8), Int32GetDatum(server_encoding), CStringGetDatum(c_as_utf8), CStringGetDatum(s), Int32GetDatum(c_as_utf8_len)); } /* convert a multibyte string to a wchar */ /* convert a multibyte string to a wchar with a limited length */ /* same, with any encoding */ /* convert a wchar string to a multibyte */ /* convert a wchar string to a multibyte with a limited length */ /* same, with any encoding */ /* returns the byte length of a multibyte character */ int pg_mblen(const char *mbstr) { return pg_wchar_table[DatabaseEncoding->encoding].mblen((const unsigned char *) mbstr); } /* returns the display length of a multibyte character */ /* returns the length (counted in wchars) of a multibyte string */ /* returns the length (counted in wchars) of a multibyte string * (not necessarily NULL terminated) */ int pg_mbstrlen_with_len(const char *mbstr, int limit) { int len = 0; /* optimization for single byte encoding */ if (pg_database_encoding_max_length() == 1) return limit; while (limit > 0 && *mbstr) { int l = pg_mblen(mbstr); limit -= l; mbstr += l; len++; } return len; } /* * returns the byte length of a multibyte string * (not necessarily NULL terminated) * that is no longer than limit. * this function does not break multibyte character boundary. */ int pg_mbcliplen(const char *mbstr, int len, int limit) { return pg_encoding_mbcliplen(DatabaseEncoding->encoding, mbstr, len, limit); } /* * pg_mbcliplen with specified encoding */ int pg_encoding_mbcliplen(int encoding, const char *mbstr, int len, int limit) { mblen_converter mblen_fn; int clen = 0; int l; /* optimization for single byte encoding */ if (pg_encoding_max_length(encoding) == 1) return cliplen(mbstr, len, limit); mblen_fn = pg_wchar_table[encoding].mblen; while (len > 0 && *mbstr) { l = (*mblen_fn) ((const unsigned char *) mbstr); if ((clen + l) > limit) break; clen += l; if (clen == limit) break; len -= l; mbstr += l; } return clen; } /* * Similar to pg_mbcliplen except the limit parameter specifies the * character length, not the byte length. */ /* mbcliplen for any single-byte encoding */ static int cliplen(const char *str, int len, int limit) { int l = 0; len = Min(len, limit); while (l < len && str[l]) l++; return l; } void SetDatabaseEncoding(int encoding) { if (!PG_VALID_BE_ENCODING(encoding)) elog(ERROR, "invalid database encoding: %d", encoding); DatabaseEncoding = &pg_enc2name_tbl[encoding]; Assert(DatabaseEncoding->encoding == encoding); } #ifdef ENABLE_NLS /* * Make one bind_textdomain_codeset() call, translating a pg_enc to a gettext * codeset. Fails for MULE_INTERNAL, an encoding unknown to gettext; can also * fail for gettext-internal causes like out-of-memory. */ static bool raw_pg_bind_textdomain_codeset(const char *domainname, int encoding) { bool elog_ok = (CurrentMemoryContext != NULL); int i; for (i = 0; pg_enc2gettext_tbl[i].name != NULL; i++) { if (pg_enc2gettext_tbl[i].encoding == encoding) { if (bind_textdomain_codeset(domainname, pg_enc2gettext_tbl[i].name) != NULL) return true; if (elog_ok) elog(LOG, "bind_textdomain_codeset failed"); else write_stderr("bind_textdomain_codeset failed"); break; } } return false; } /* * Bind a gettext message domain to the codeset corresponding to the database * encoding. For SQL_ASCII, instead bind to the codeset implied by LC_CTYPE. * Return the MessageEncoding implied by the new settings. * * On most platforms, gettext defaults to the codeset implied by LC_CTYPE. * When that matches the database encoding, we don't need to do anything. In * CREATE DATABASE, we enforce or trust that the locale's codeset matches the * database encoding, except for the C locale. (On Windows, we also permit a * discrepancy under the UTF8 encoding.) For the C locale, explicitly bind * gettext to the right codeset. * * On Windows, gettext defaults to the Windows ANSI code page. This is a * convenient departure for software that passes the strings to Windows ANSI * APIs, but we don't do that. Compel gettext to use database encoding or, * failing that, the LC_CTYPE encoding as it would on other platforms. * * This function is called before elog() and palloc() are usable. */ int pg_bind_textdomain_codeset(const char *domainname) { bool elog_ok = (CurrentMemoryContext != NULL); int encoding = GetDatabaseEncoding(); int new_msgenc; #ifndef WIN32 const char *ctype = setlocale(LC_CTYPE, NULL); if (pg_strcasecmp(ctype, "C") == 0 || pg_strcasecmp(ctype, "POSIX") == 0) #endif if (encoding != PG_SQL_ASCII && raw_pg_bind_textdomain_codeset(domainname, encoding)) return encoding; new_msgenc = pg_get_encoding_from_locale(NULL, elog_ok); if (new_msgenc < 0) new_msgenc = PG_SQL_ASCII; #ifdef WIN32 if (!raw_pg_bind_textdomain_codeset(domainname, new_msgenc)) /* On failure, the old message encoding remains valid. */ return GetMessageEncoding(); #endif return new_msgenc; } #endif /* * The database encoding, also called the server encoding, represents the * encoding of data stored in text-like data types. Affected types include * cstring, text, varchar, name, xml, and json. */ int GetDatabaseEncoding(void) { return DatabaseEncoding->encoding; } const char * GetDatabaseEncodingName(void) { return DatabaseEncoding->name; } /* * gettext() returns messages in this encoding. This often matches the * database encoding, but it differs for SQL_ASCII databases, for processes * not attached to a database, and under a database encoding lacking iconv * support (MULE_INTERNAL). */ /* * Generic character incrementer function. * * Not knowing anything about the properties of the encoding in use, we just * keep incrementing the last byte until we get a validly-encoded result, * or we run out of values to try. We don't bother to try incrementing * higher-order bytes, so there's no growth in runtime for wider characters. * (If we did try to do that, we'd need to consider the likelihood that 255 * is not a valid final byte in the encoding.) */ /* * UTF-8 character incrementer function. * * For a one-byte character less than 0x7F, we just increment the byte. * * For a multibyte character, every byte but the first must fall between 0x80 * and 0xBF; and the first byte must be between 0xC0 and 0xF4. We increment * the last byte that's not already at its maximum value. If we can't find a * byte that's less than the maximum allowable value, we simply fail. We also * need some special-case logic to skip regions used for surrogate pair * handling, as those should not occur in valid UTF-8. * * Note that we don't reset lower-order bytes back to their minimums, since * we can't afford to make an exhaustive search (see make_greater_string). */ /* * EUC-JP character incrementer function. * * If the sequence starts with SS2 (0x8e), it must be a two-byte sequence * representing JIS X 0201 characters with the second byte ranging between * 0xa1 and 0xdf. We just increment the last byte if it's less than 0xdf, * and otherwise rewrite the whole sequence to 0xa1 0xa1. * * If the sequence starts with SS3 (0x8f), it must be a three-byte sequence * in which the last two bytes range between 0xa1 and 0xfe. The last byte * is incremented if possible, otherwise the second-to-last byte. * * If the sequence starts with a value other than the above and its MSB * is set, it must be a two-byte sequence representing JIS X 0208 characters * with both bytes ranging between 0xa1 and 0xfe. The last byte is * incremented if possible, otherwise the second-to-last byte. * * Otherwise, the sequence is a single-byte ASCII character. It is * incremented up to 0x7f. */ /* * get the character incrementer for the encoding for the current database */ /* * fetch maximum length of the encoding for the current database */ int pg_database_encoding_max_length(void) { return pg_wchar_table[GetDatabaseEncoding()].maxmblen; } /* * Verify mbstr to make sure that it is validly encoded in the current * database encoding. Otherwise same as pg_verify_mbstr(). */ bool pg_verifymbstr(const char *mbstr, int len, bool noError) { return pg_verify_mbstr_len(GetDatabaseEncoding(), mbstr, len, noError) >= 0; } /* * Verify mbstr to make sure that it is validly encoded in the specified * encoding. */ /* * Verify mbstr to make sure that it is validly encoded in the specified * encoding. * * mbstr is not necessarily zero terminated; length of mbstr is * specified by len. * * If OK, return length of string in the encoding. * If a problem is found, return -1 when noError is * true; when noError is false, ereport() a descriptive message. */ int pg_verify_mbstr_len(int encoding, const char *mbstr, int len, bool noError) { mbverifier mbverify; int mb_len; Assert(PG_VALID_ENCODING(encoding)); /* * In single-byte encodings, we need only reject nulls (\0). */ if (pg_encoding_max_length(encoding) <= 1) { const char *nullpos = memchr(mbstr, 0, len); if (nullpos == NULL) return len; if (noError) return -1; report_invalid_encoding(encoding, nullpos, 1); } /* fetch function pointer just once */ mbverify = pg_wchar_table[encoding].mbverify; mb_len = 0; while (len > 0) { int l; /* fast path for ASCII-subset characters */ if (!IS_HIGHBIT_SET(*mbstr)) { if (*mbstr != '\0') { mb_len++; mbstr++; len--; continue; } if (noError) return -1; report_invalid_encoding(encoding, mbstr, len); } l = (*mbverify) ((const unsigned char *) mbstr, len); if (l < 0) { if (noError) return -1; report_invalid_encoding(encoding, mbstr, len); } mbstr += l; len -= l; mb_len++; } return mb_len; } /* * check_encoding_conversion_args: check arguments of a conversion function * * "expected" arguments can be either an encoding ID or -1 to indicate that * the caller will check whether it accepts the ID. * * Note: the errors here are not really user-facing, so elog instead of * ereport seems sufficient. Also, we trust that the "expected" encoding * arguments are valid encoding IDs, but we don't trust the actuals. */ /* * report_invalid_encoding: complain about invalid multibyte character * * note: len is remaining length of string, not length of character; * len must be greater than zero, as we always examine the first byte. */ void report_invalid_encoding(int encoding, const char *mbstr, int len) { int l = pg_encoding_mblen(encoding, mbstr); char buf[8 * 5 + 1]; char *p = buf; int j, jlimit; jlimit = Min(l, len); jlimit = Min(jlimit, 8); /* prevent buffer overrun */ for (j = 0; j < jlimit; j++) { p += sprintf(p, "0x%02x", (unsigned char) mbstr[j]); if (j < jlimit - 1) p += sprintf(p, " "); } ereport(ERROR, (errcode(ERRCODE_CHARACTER_NOT_IN_REPERTOIRE), errmsg("invalid byte sequence for encoding \"%s\": %s", pg_enc2name_tbl[encoding].name, buf))); } /* * report_untranslatable_char: complain about untranslatable character * * note: len is remaining length of string, not length of character; * len must be greater than zero, as we always examine the first byte. */ #ifdef WIN32 /* * Convert from MessageEncoding to a palloc'ed, null-terminated utf16 * string. The character length is also passed to utf16len if not * null. Returns NULL iff failed. Before MessageEncoding initialization, "str" * should be ASCII-only; this will function as though MessageEncoding is UTF8. */ WCHAR * pgwin32_message_to_UTF16(const char *str, int len, int *utf16len) { int msgenc = GetMessageEncoding(); WCHAR *utf16; int dstlen; UINT codepage; if (msgenc == PG_SQL_ASCII) /* No conversion is possible, and SQL_ASCII is never utf16. */ return NULL; codepage = pg_enc2name_tbl[msgenc].codepage; /* * Use MultiByteToWideChar directly if there is a corresponding codepage, * or double conversion through UTF8 if not. Double conversion is needed, * for example, in an ENCODING=LATIN8, LC_CTYPE=C database. */ if (codepage != 0) { utf16 = (WCHAR *) palloc(sizeof(WCHAR) * (len + 1)); dstlen = MultiByteToWideChar(codepage, 0, str, len, utf16, len); utf16[dstlen] = (WCHAR) 0; } else { char *utf8; /* * XXX pg_do_encoding_conversion() requires a transaction. In the * absence of one, hope for the input to be valid UTF8. */ if (IsTransactionState()) { utf8 = (char *) pg_do_encoding_conversion((unsigned char *) str, len, msgenc, PG_UTF8); if (utf8 != str) len = strlen(utf8); } else utf8 = (char *) str; utf16 = (WCHAR *) palloc(sizeof(WCHAR) * (len + 1)); dstlen = MultiByteToWideChar(CP_UTF8, 0, utf8, len, utf16, len); utf16[dstlen] = (WCHAR) 0; if (utf8 != str) pfree(utf8); } if (dstlen == 0 && len > 0) { pfree(utf16); return NULL; /* error */ } if (utf16len) *utf16len = dstlen; return utf16; } #endif /* WIN32 */ libpg_query-13-2.1.0/src/postgres/src_backend_utils_misc_guc.c000066400000000000000000001301641413137616400244200ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - log_min_messages * - client_min_messages * - backtrace_functions * - backtrace_symbol_list * - check_function_bodies *-------------------------------------------------------------------- */ /*-------------------------------------------------------------------- * guc.c * * Support for grand unified configuration scheme, including SET * command, configuration file, and command line options. * See src/backend/utils/misc/README for more information. * * * Copyright (c) 2000-2020, PostgreSQL Global Development Group * Written by Peter Eisentraut . * * IDENTIFICATION * src/backend/utils/misc/guc.c * *-------------------------------------------------------------------- */ #include "postgres.h" #include #include #include #include #include #include #ifdef HAVE_SYSLOG #include #endif #include "access/commit_ts.h" #include "access/gin.h" #include "access/rmgr.h" #include "access/tableam.h" #include "access/transam.h" #include "access/twophase.h" #include "access/xact.h" #include "access/xlog_internal.h" #include "catalog/namespace.h" #include "catalog/pg_authid.h" #include "catalog/storage.h" #include "commands/async.h" #include "commands/prepare.h" #include "commands/trigger.h" #include "commands/user.h" #include "commands/vacuum.h" #include "commands/variable.h" #include "common/string.h" #include "funcapi.h" #include "jit/jit.h" #include "libpq/auth.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "miscadmin.h" #include "optimizer/cost.h" #include "optimizer/geqo.h" #include "optimizer/optimizer.h" #include "optimizer/paths.h" #include "optimizer/planmain.h" #include "parser/parse_expr.h" #include "parser/parse_type.h" #include "parser/parser.h" #include "parser/scansup.h" #include "pgstat.h" #include "postmaster/autovacuum.h" #include "postmaster/bgworker_internals.h" #include "postmaster/bgwriter.h" #include "postmaster/postmaster.h" #include "postmaster/syslogger.h" #include "postmaster/walwriter.h" #include "replication/logicallauncher.h" #include "replication/reorderbuffer.h" #include "replication/slot.h" #include "replication/syncrep.h" #include "replication/walreceiver.h" #include "replication/walsender.h" #include "storage/bufmgr.h" #include "storage/dsm_impl.h" #include "storage/fd.h" #include "storage/large_object.h" #include "storage/pg_shmem.h" #include "storage/predicate.h" #include "storage/proc.h" #include "storage/standby.h" #include "tcop/tcopprot.h" #include "tsearch/ts_cache.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/bytea.h" #include "utils/float.h" #include "utils/guc_tables.h" #include "utils/memutils.h" #include "utils/pg_locale.h" #include "utils/pg_lsn.h" #include "utils/plancache.h" #include "utils/portal.h" #include "utils/ps_status.h" #include "utils/rls.h" #include "utils/snapmgr.h" #include "utils/tzparser.h" #include "utils/varlena.h" #include "utils/xml.h" #ifndef PG_KRB_SRVTAB #define PG_KRB_SRVTAB "" #endif #define CONFIG_FILENAME "postgresql.conf" #define HBA_FILENAME "pg_hba.conf" #define IDENT_FILENAME "pg_ident.conf" #ifdef EXEC_BACKEND #define CONFIG_EXEC_PARAMS "global/config_exec_params" #define CONFIG_EXEC_PARAMS_NEW "global/config_exec_params.new" #endif /* * Precision with which REAL type guc values are to be printed for GUC * serialization. */ #define REALTYPE_PRECISION 17 /* XXX these should appear in other modules' header files */ extern bool Log_disconnections; extern int CommitDelay; extern int CommitSiblings; extern char *default_tablespace; extern char *temp_tablespaces; extern bool ignore_checksum_failure; extern bool ignore_invalid_pages; extern bool synchronize_seqscans; #ifdef TRACE_SYNCSCAN extern bool trace_syncscan; #endif #ifdef DEBUG_BOUNDED_SORT extern bool optimize_bounded_sort; #endif /* global variables for check hook support */ static void do_serialize(char **destptr, Size *maxbytes, const char *fmt,...) pg_attribute_printf(3, 4); static void set_config_sourcefile(const char *name, char *sourcefile, int sourceline); static bool call_bool_check_hook(struct config_bool *conf, bool *newval, void **extra, GucSource source, int elevel); static bool call_int_check_hook(struct config_int *conf, int *newval, void **extra, GucSource source, int elevel); static bool call_real_check_hook(struct config_real *conf, double *newval, void **extra, GucSource source, int elevel); static bool call_string_check_hook(struct config_string *conf, char **newval, void **extra, GucSource source, int elevel); static bool call_enum_check_hook(struct config_enum *conf, int *newval, void **extra, GucSource source, int elevel); static bool check_log_destination(char **newval, void **extra, GucSource source); static void assign_log_destination(const char *newval, void *extra); static bool check_wal_consistency_checking(char **newval, void **extra, GucSource source); static void assign_wal_consistency_checking(const char *newval, void *extra); #ifdef HAVE_SYSLOG #else static int syslog_facility = 0; #endif static void assign_syslog_facility(int newval, void *extra); static void assign_syslog_ident(const char *newval, void *extra); static void assign_session_replication_role(int newval, void *extra); static bool check_temp_buffers(int *newval, void **extra, GucSource source); static bool check_bonjour(bool *newval, void **extra, GucSource source); static bool check_ssl(bool *newval, void **extra, GucSource source); static bool check_stage_log_stats(bool *newval, void **extra, GucSource source); static bool check_log_stats(bool *newval, void **extra, GucSource source); static bool check_canonical_path(char **newval, void **extra, GucSource source); static bool check_timezone_abbreviations(char **newval, void **extra, GucSource source); static void assign_timezone_abbreviations(const char *newval, void *extra); static void pg_timezone_abbrev_initialize(void); static const char *show_archive_command(void); static void assign_tcp_keepalives_idle(int newval, void *extra); static void assign_tcp_keepalives_interval(int newval, void *extra); static void assign_tcp_keepalives_count(int newval, void *extra); static void assign_tcp_user_timeout(int newval, void *extra); static const char *show_tcp_keepalives_idle(void); static const char *show_tcp_keepalives_interval(void); static const char *show_tcp_keepalives_count(void); static const char *show_tcp_user_timeout(void); static bool check_maxconnections(int *newval, void **extra, GucSource source); static bool check_max_worker_processes(int *newval, void **extra, GucSource source); static bool check_autovacuum_max_workers(int *newval, void **extra, GucSource source); static bool check_max_wal_senders(int *newval, void **extra, GucSource source); static bool check_autovacuum_work_mem(int *newval, void **extra, GucSource source); static bool check_effective_io_concurrency(int *newval, void **extra, GucSource source); static bool check_maintenance_io_concurrency(int *newval, void **extra, GucSource source); static void assign_pgstat_temp_directory(const char *newval, void *extra); static bool check_application_name(char **newval, void **extra, GucSource source); static void assign_application_name(const char *newval, void *extra); static bool check_cluster_name(char **newval, void **extra, GucSource source); static const char *show_unix_socket_permissions(void); static const char *show_log_file_mode(void); static const char *show_data_directory_mode(void); static bool check_backtrace_functions(char **newval, void **extra, GucSource source); static void assign_backtrace_functions(const char *newval, void *extra); static bool check_recovery_target_timeline(char **newval, void **extra, GucSource source); static void assign_recovery_target_timeline(const char *newval, void *extra); static bool check_recovery_target(char **newval, void **extra, GucSource source); static void assign_recovery_target(const char *newval, void *extra); static bool check_recovery_target_xid(char **newval, void **extra, GucSource source); static void assign_recovery_target_xid(const char *newval, void *extra); static bool check_recovery_target_time(char **newval, void **extra, GucSource source); static void assign_recovery_target_time(const char *newval, void *extra); static bool check_recovery_target_name(char **newval, void **extra, GucSource source); static void assign_recovery_target_name(const char *newval, void *extra); static bool check_recovery_target_lsn(char **newval, void **extra, GucSource source); static void assign_recovery_target_lsn(const char *newval, void *extra); static bool check_primary_slot_name(char **newval, void **extra, GucSource source); static bool check_default_with_oids(bool *newval, void **extra, GucSource source); /* Private functions in guc-file.l that need to be called from guc.c */ static ConfigVariable *ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel); /* * Options for enum values defined in this module. * * NOTE! Option values may not contain double quotes! */ StaticAssertDecl(lengthof(bytea_output_options) == (BYTEA_OUTPUT_HEX + 2), "array length mismatch"); /* * We have different sets for client and server message level options because * they sort slightly different (see "log" level), and because "fatal"/"panic" * aren't sensible for client_min_messages. */ StaticAssertDecl(lengthof(intervalstyle_options) == (INTSTYLE_ISO_8601 + 2), "array length mismatch"); StaticAssertDecl(lengthof(log_error_verbosity_options) == (PGERROR_VERBOSE + 2), "array length mismatch"); StaticAssertDecl(lengthof(log_statement_options) == (LOGSTMT_ALL + 2), "array length mismatch"); StaticAssertDecl(lengthof(session_replication_role_options) == (SESSION_REPLICATION_ROLE_LOCAL + 2), "array length mismatch"); #ifdef HAVE_SYSLOG #else #endif StaticAssertDecl(lengthof(track_function_options) == (TRACK_FUNC_ALL + 2), "array length mismatch"); StaticAssertDecl(lengthof(xmlbinary_options) == (XMLBINARY_HEX + 2), "array length mismatch"); StaticAssertDecl(lengthof(xmloption_options) == (XMLOPTION_CONTENT + 2), "array length mismatch"); /* * Although only "on", "off", and "safe_encoding" are documented, we * accept all the likely variants of "on" and "off". */ /* * Although only "on", "off", and "partition" are documented, we * accept all the likely variants of "on" and "off". */ /* * Although only "on", "off", "remote_apply", "remote_write", and "local" are * documented, we accept all the likely variants of "on" and "off". */ /* * Although only "on", "off", "try" are documented, we accept all the likely * variants of "on" and "off". */ /* * password_encryption used to be a boolean, so accept all the likely * variants of "on", too. "off" used to store passwords in plaintext, * but we don't support that anymore. */ StaticAssertDecl(lengthof(ssl_protocol_versions_info) == (PG_TLS1_3_VERSION + 2), "array length mismatch"); #ifndef WIN32 #endif #ifndef EXEC_BACKEND #endif #ifdef WIN32 #endif /* * Options for enum values stored in other modules */ extern const struct config_enum_entry wal_level_options[]; extern const struct config_enum_entry archive_mode_options[]; extern const struct config_enum_entry recovery_target_action_options[]; extern const struct config_enum_entry sync_method_options[]; extern const struct config_enum_entry dynamic_shared_memory_options[]; /* * GUC option variables that are exported from this module */ /* this is sort of all three above * together */ __thread bool check_function_bodies = true; /* * This GUC exists solely for backward compatibility, check its definition for * details. */ __thread int log_min_messages = WARNING; __thread int client_min_messages = NOTICE; __thread char *backtrace_functions; __thread char *backtrace_symbol_list; /* * SSL renegotiation was been removed in PostgreSQL 9.5, but we tolerate it * being set to zero (meaning never renegotiate) for backward compatibility. * This avoids breaking compatibility with clients that have never supported * renegotiation and therefore always try to zero it. */ /* * This really belongs in pg_shmem.c, but is defined here so that it doesn't * need to be duplicated in all the different implementations of pg_shmem.c. */ /* * These variables are all dummies that don't do anything, except in some * cases provide the value for SHOW to display. The real state is elsewhere * and is kept in sync by assign_hooks. */ /* should be static, but commands/variable.c needs to get at this */ /* * Displayable names for context types (enum GucContext) * * Note: these strings are deliberately not localized. */ StaticAssertDecl(lengthof(GucContext_Names) == (PGC_USERSET + 1), "array length mismatch"); /* * Displayable names for source types (enum GucSource) * * Note: these strings are deliberately not localized. */ StaticAssertDecl(lengthof(GucSource_Names) == (PGC_S_SESSION + 1), "array length mismatch"); /* * Displayable names for the groupings defined in enum config_group */ StaticAssertDecl(lengthof(config_group_names) == (DEVELOPER_OPTIONS + 2), "array length mismatch"); /* * Displayable names for GUC variable types (enum config_type) * * Note: these strings are deliberately not localized. */ StaticAssertDecl(lengthof(config_type_names) == (PGC_ENUM + 1), "array length mismatch"); /* * Unit conversion tables. * * There are two tables, one for memory units, and another for time units. * For each supported conversion from one unit to another, we have an entry * in the table. * * To keep things simple, and to avoid possible roundoff error, * conversions are never chained. There needs to be a direct conversion * between all units (of the same type). * * The conversions for each base unit must be kept in order from greatest to * smallest human-friendly unit; convert_xxx_from_base_unit() rely on that. * (The order of the base-unit groups does not matter.) */ #define MAX_UNIT_LEN 3 /* length of longest recognized unit string */ typedef struct { char unit[MAX_UNIT_LEN + 1]; /* unit, as a string, like "kB" or * "min" */ int base_unit; /* GUC_UNIT_XXX */ double multiplier; /* Factor for converting unit -> base_unit */ } unit_conversion; /* Ensure that the constants in the tables don't overflow or underflow */ #if BLCKSZ < 1024 || BLCKSZ > (1024*1024) #error BLCKSZ must be between 1KB and 1MB #endif #if XLOG_BLCKSZ < 1024 || XLOG_BLCKSZ > (1024*1024) #error XLOG_BLCKSZ must be between 1KB and 1MB #endif /* * Contents of GUC tables * * See src/backend/utils/misc/README for design notes. * * TO ADD AN OPTION: * * 1. Declare a global variable of type bool, int, double, or char* * and make use of it. * * 2. Decide at what times it's safe to set the option. See guc.h for * details. * * 3. Decide on a name, a default value, upper and lower bounds (if * applicable), etc. * * 4. Add a record below. * * 5. Add it to src/backend/utils/misc/postgresql.conf.sample, if * appropriate. * * 6. Don't forget to document the option (at least in config.sgml). * * 7. If it's a new GUC_LIST_QUOTE option, you must add it to * variable_is_guc_list_quote() in src/bin/pg_dump/dumputils.c. */ /******** option records follow ********/ #ifdef USE_ASSERT_CHECKING #else #endif #ifdef BTREE_BUILD_STATS #endif #ifdef WIN32 #else #endif #ifdef LOCK_DEBUG #endif #ifdef TRACE_SORT #endif #ifdef TRACE_SYNCSCAN #endif #ifdef DEBUG_BOUNDED_SORT #endif #ifdef WAL_DEBUG #endif #ifdef LOCK_DEBUG #endif #ifdef USE_PREFETCH #else #endif #ifdef USE_PREFETCH #else #endif #ifdef HAVE_UNIX_SOCKETS #else #endif #ifdef USE_SSL #else #endif #ifdef USE_OPENSSL #else #endif #ifdef USE_SSL #else #endif #ifdef HAVE_SYSLOG #else #endif /******** end of options list ********/ /* * To allow continued support of obsolete names for GUC variables, we apply * the following mappings to any unrecognized name. Note that an old name * should be mapped to a new one only if the new variable has very similar * semantics to the old. */ /* * Actual lookup of variables is done through this single, sorted array. */ /* Current number of variables contained in the vector */ /* Vector capacity */ /* true if need to do commit/abort work */ /* true to enable GUC_REPORT */ /* 1 when in main transaction */ static int guc_var_compare(const void *a, const void *b); static int guc_name_compare(const char *namea, const char *nameb); static void InitializeGUCOptionsFromEnvironment(void); static void InitializeOneGUCOption(struct config_generic *gconf); static void push_old_value(struct config_generic *gconf, GucAction action); static void ReportGUCOption(struct config_generic *record); static void reapply_stacked_values(struct config_generic *variable, struct config_string *pHolder, GucStack *stack, const char *curvalue, GucContext curscontext, GucSource cursource); static void ShowGUCConfigOption(const char *name, DestReceiver *dest); static void ShowAllGUCConfig(DestReceiver *dest); static char *_ShowOption(struct config_generic *record, bool use_units); static bool validate_option_array_item(const char *name, const char *value, bool skipIfNoPermissions); static void write_auto_conf_file(int fd, const char *filename, ConfigVariable *head_p); static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p, const char *name, const char *value); /* * Some infrastructure for checking malloc/strdup/realloc calls */ /* * Detect whether strval is referenced anywhere in a GUC string item */ /* * Support for assigning to a field of a string GUC item. Free the prior * value if it's not referenced anywhere else in the item (including stacked * states). */ /* * Detect whether an "extra" struct is referenced anywhere in a GUC item */ /* * Support for assigning to an "extra" field of a GUC item. Free the prior * value if it's not referenced anywhere else in the item (including stacked * states). */ /* * Support for copying a variable's active value into a stack entry. * The "extra" field associated with the active value is copied, too. * * NB: be sure stringval and extra fields of a new stack entry are * initialized to NULL before this is used, else we'll try to free() them. */ /* * Support for discarding a no-longer-needed value in a stack entry. * The "extra" field associated with the stack entry is cleared, too. */ /* * Fetch the sorted array pointer (exported for help_config.c's use ONLY) */ /* * Build the sorted array. This is split out so that it could be * re-executed after startup (e.g., we could allow loadable modules to * add vars, and then we'd need to re-sort). */ /* * Add a new GUC variable to the list of known variables. The * list is expanded if needed. */ /* * Create and add a placeholder variable for a custom variable name. */ /* * Look up option NAME. If it exists, return a pointer to its record, * else return NULL. If create_placeholders is true, we'll create a * placeholder record for a valid-looking custom variable name. */ /* * comparator for qsorting and bsearching guc_variables array */ /* * the bare comparison function for GUC names */ /* * Initialize GUC options during program startup. * * Note that we cannot read the config file yet, since we have not yet * processed command-line switches. */ /* * Assign any GUC values that can come from the server's environment. * * This is called from InitializeGUCOptions, and also from ProcessConfigFile * to deal with the possibility that a setting has been removed from * postgresql.conf and should now get a value from the environment. * (The latter is a kludge that should probably go away someday; if so, * fold this back into InitializeGUCOptions.) */ /* * Initialize one GUC option variable to its compiled-in default. * * Note: the reason for calling check_hooks is not that we think the boot_val * might fail, but that the hooks might wish to compute an "extra" struct. */ /* * Select the configuration files and data directory to be used, and * do the initial read of postgresql.conf. * * This is called after processing command-line switches. * userDoption is the -D switch value if any (NULL if unspecified). * progname is just for use in error messages. * * Returns true on success; on failure, prints a suitable error message * to stderr and returns false. */ /* * Reset all options to their saved default values (implements RESET ALL) */ /* * push_old_value * Push previous state during transactional assignment to a GUC variable. */ /* * Do GUC processing at main transaction start. */ /* * Enter a new nesting level for GUC values. This is called at subtransaction * start, and when entering a function that has proconfig settings, and in * some other places where we want to set GUC variables transiently. * NOTE we must not risk error here, else subtransaction start will be unhappy. */ /* * Do GUC processing at transaction or subtransaction commit or abort, or * when exiting a function that has proconfig settings, or when undoing a * transient assignment to some GUC variables. (The name is thus a bit of * a misnomer; perhaps it should be ExitGUCNestLevel or some such.) * During abort, we discard all GUC settings that were applied at nesting * levels >= nestLevel. nestLevel == 1 corresponds to the main transaction. */ /* * Start up automatic reporting of changes to variables marked GUC_REPORT. * This is executed at completion of backend startup. */ /* * ReportGUCOption: if appropriate, transmit option value to frontend */ /* * Convert a value from one of the human-friendly units ("kB", "min" etc.) * to the given base unit. 'value' and 'unit' are the input value and unit * to convert from (there can be trailing spaces in the unit string). * The converted value is stored in *base_value. * It's caller's responsibility to round off the converted value as necessary * and check for out-of-range. * * Returns true on success, false if the input unit is not recognized. */ /* * Convert an integer value in some base unit to a human-friendly unit. * * The output unit is chosen so that it's the greatest unit that can represent * the value without loss. For example, if the base unit is GUC_UNIT_KB, 1024 * is converted to 1 MB, but 1025 is represented as 1025 kB. */ /* * Convert a floating-point value in some base unit to a human-friendly unit. * * Same as above, except we have to do the math a bit differently, and * there's a possibility that we don't find any exact divisor. */ /* * Return the name of a GUC's base unit (e.g. "ms") given its flags. * Return NULL if the GUC is unitless. */ /* * Try to parse value as an integer. The accepted formats are the * usual decimal, octal, or hexadecimal formats, as well as floating-point * formats (which will be rounded to integer after any units conversion). * Optionally, the value can be followed by a unit name if "flags" indicates * a unit is allowed. * * If the string parses okay, return true, else false. * If okay and result is not NULL, return the value in *result. * If not okay and hintmsg is not NULL, *hintmsg is set to a suitable * HINT message, or NULL if no hint provided. */ /* * Try to parse value as a floating point number in the usual format. * Optionally, the value can be followed by a unit name if "flags" indicates * a unit is allowed. * * If the string parses okay, return true, else false. * If okay and result is not NULL, return the value in *result. * If not okay and hintmsg is not NULL, *hintmsg is set to a suitable * HINT message, or NULL if no hint provided. */ /* * Lookup the name for an enum option with the selected value. * Should only ever be called with known-valid values, so throws * an elog(ERROR) if the enum option is not found. * * The returned string is a pointer to static data and not * allocated for modification. */ /* * Lookup the value for an enum option with the selected name * (case-insensitive). * If the enum option is found, sets the retval value and returns * true. If it's not found, return false and retval is set to 0. */ /* * Return a list of all available options for an enum, excluding * hidden ones, separated by the given separator. * If prefix is non-NULL, it is added before the first enum value. * If suffix is non-NULL, it is added to the end of the string. */ /* * Parse and validate a proposed value for the specified configuration * parameter. * * This does built-in checks (such as range limits for an integer parameter) * and also calls any check hook the parameter may have. * * record: GUC variable's info record * name: variable name (should match the record of course) * value: proposed value, as a string * source: identifies source of value (check hooks may need this) * elevel: level to log any error reports at * newval: on success, converted parameter value is returned here * newextra: on success, receives any "extra" data returned by check hook * (caller must initialize *newextra to NULL) * * Returns true if OK, false if not (or throws error, if elevel >= ERROR) */ /* * Sets option `name' to given value. * * The value should be a string, which will be parsed and converted to * the appropriate data type. The context and source parameters indicate * in which context this function is being called, so that it can apply the * access restrictions properly. * * If value is NULL, set the option to its default value (normally the * reset_val, but if source == PGC_S_DEFAULT we instead use the boot_val). * * action indicates whether to set the value globally in the session, locally * to the current top transaction, or just for the duration of a function call. * * If changeVal is false then don't really set the option but do all * the checks to see if it would work. * * elevel should normally be passed as zero, allowing this function to make * its standard choice of ereport level. However some callers need to be * able to override that choice; they should pass the ereport level to use. * * Return value: * +1: the value is valid and was successfully applied. * 0: the name or value is invalid (but see below). * -1: the value was not applied because of context, priority, or changeVal. * * If there is an error (non-existing option, invalid value) then an * ereport(ERROR) is thrown *unless* this is called for a source for which * we don't want an ERROR (currently, those are defaults, the config file, * and per-database or per-user settings, as well as callers who specify * a less-than-ERROR elevel). In those cases we write a suitable error * message via ereport() and return 0. * * See also SetConfigOption for an external interface. */ #define newval (newval_union.boolval) #undef newval #define newval (newval_union.intval) #undef newval #define newval (newval_union.realval) #undef newval #define newval (newval_union.stringval) #undef newval #define newval (newval_union.enumval) #undef newval /* * Set the fields for source file and line number the setting came from. */ /* * Set a config option to the given value. * * See also set_config_option; this is just the wrapper to be called from * outside GUC. (This function should be used when possible, because its API * is more stable than set_config_option's.) * * Note: there is no support here for setting source file/line, as it * is currently not needed. */ /* * Fetch the current value of the option `name', as a string. * * If the option doesn't exist, return NULL if missing_ok is true (NOTE that * this cannot be distinguished from a string variable with a NULL value!), * otherwise throw an ereport and don't return. * * If restrict_privileged is true, we also enforce that only superusers and * members of the pg_read_all_settings role can see GUC_SUPERUSER_ONLY * variables. This should only be passed as true in user-driven calls. * * The string is *not* allocated for modification and is really only * valid until the next call to configuration related functions. */ /* * Get the RESET value associated with the given option. * * Note: this is not re-entrant, due to use of static result buffer; * not to mention that a string variable could have its reset_val changed. * Beware of assuming the result value is good for very long. */ /* * Get the GUC flags associated with the given option. * * If the option doesn't exist, return 0 if missing_ok is true, * otherwise throw an ereport and don't return. */ /* * flatten_set_variable_args * Given a parsenode List as emitted by the grammar for SET, * convert to the flat string representation used by GUC. * * We need to be told the name of the variable the args are for, because * the flattening rules vary (ugh). * * The result is NULL if args is NIL (i.e., SET ... TO DEFAULT), otherwise * a palloc'd string. */ /* * Write updated configuration parameter values into a temporary file. * This function traverses the list of parameters and quotes the string * values before writing them. */ /* * Update the given list of configuration parameters, adding, replacing * or deleting the entry for item "name" (delete if "value" == NULL). */ /* * Execute ALTER SYSTEM statement. * * Read the old PG_AUTOCONF_FILENAME file, merge in the new variable value, * and write out an updated file. If the command is ALTER SYSTEM RESET ALL, * we can skip reading the old file and just write an empty file. * * An LWLock is used to serialize updates of the configuration file. * * In case of an error, we leave the original automatic * configuration file (PG_AUTOCONF_FILENAME) intact. */ /* * SET command */ /* * Get the value to assign for a VariableSetStmt, or NULL if it's RESET. * The result is palloc'd. * * This is exported for use by actions such as ALTER ROLE SET. */ /* * SetPGVariable - SET command exported as an easily-C-callable function. * * This provides access to SET TO value, as well as SET TO DEFAULT (expressed * by passing args == NIL), but not SET FROM CURRENT functionality. */ /* * SET command wrapped as a SQL callable function. */ /* * Common code for DefineCustomXXXVariable subroutines: allocate the * new variable's config struct and fill in generic fields. */ /* * Common code for DefineCustomXXXVariable subroutines: insert the new * variable into the GUC variable array, replacing any placeholder. */ /* * Recursive subroutine for define_custom_variable: reapply non-reset values * * We recurse so that the values are applied in the same order as originally. * At each recursion level, apply the upper-level value (passed in) in the * fashion implied by the stack entry. */ /* * SHOW command */ /* * SHOW command */ /* * SHOW ALL command */ /* * Return an array of modified GUC options to show in EXPLAIN. * * We only report options related to query planning (marked with GUC_EXPLAIN), * with values different from their built-in defaults. */ /* * Return GUC variable value by name; optionally return canonical form of * name. If the GUC is unset, then throw an error unless missing_ok is true, * in which case return NULL. Return value is palloc'd (but *varname isn't). */ /* * Return GUC variable value by variable number; optionally return canonical * form of name. Return value is palloc'd. */ /* * Return the total number of GUC variables */ /* * show_config_by_name - equiv to SHOW X command but implemented as * a function. */ /* * show_config_by_name_missing_ok - equiv to SHOW X command but implemented as * a function. If X does not exist, suppress the error and just return NULL * if missing_ok is true. */ /* * show_all_settings - equiv to SHOW ALL command but implemented as * a Table Function. */ #define NUM_PG_SETTINGS_ATTS 17 /* * show_all_file_settings * * Returns a table of all parameter settings in all configuration files * which includes the config file pathname, the line number, a sequence number * indicating the order in which the settings were encountered, the parameter * name and value, a bool showing if the value could be applied, and possibly * an associated error message. (For problems such as syntax errors, the * parameter name/value might be NULL.) * * Note: no filtering is done here, instead we depend on the GRANT system * to prevent unprivileged users from accessing this function or the view * built on top of it. */ #define NUM_PG_FILE_SETTINGS_ATTS 7 #ifdef EXEC_BACKEND /* * These routines dump out all non-default GUC options into a binary * file that is read by all exec'ed backends. The format is: * * variable name, string, null terminated * variable value, string, null terminated * variable sourcefile, string, null terminated (empty if none) * variable sourceline, integer * variable source, integer * variable scontext, integer */ static void write_one_nondefault_variable(FILE *fp, struct config_generic *gconf) { if (gconf->source == PGC_S_DEFAULT) return; fprintf(fp, "%s", gconf->name); fputc(0, fp); switch (gconf->vartype) { case PGC_BOOL: { struct config_bool *conf = (struct config_bool *) gconf; if (*conf->variable) fprintf(fp, "true"); else fprintf(fp, "false"); } break; case PGC_INT: { struct config_int *conf = (struct config_int *) gconf; fprintf(fp, "%d", *conf->variable); } break; case PGC_REAL: { struct config_real *conf = (struct config_real *) gconf; fprintf(fp, "%.17g", *conf->variable); } break; case PGC_STRING: { struct config_string *conf = (struct config_string *) gconf; fprintf(fp, "%s", *conf->variable); } break; case PGC_ENUM: { struct config_enum *conf = (struct config_enum *) gconf; fprintf(fp, "%s", config_enum_lookup_by_value(conf, *conf->variable)); } break; } fputc(0, fp); if (gconf->sourcefile) fprintf(fp, "%s", gconf->sourcefile); fputc(0, fp); fwrite(&gconf->sourceline, 1, sizeof(gconf->sourceline), fp); fwrite(&gconf->source, 1, sizeof(gconf->source), fp); fwrite(&gconf->scontext, 1, sizeof(gconf->scontext), fp); } void write_nondefault_variables(GucContext context) { int elevel; FILE *fp; int i; Assert(context == PGC_POSTMASTER || context == PGC_SIGHUP); elevel = (context == PGC_SIGHUP) ? LOG : ERROR; /* * Open file */ fp = AllocateFile(CONFIG_EXEC_PARAMS_NEW, "w"); if (!fp) { ereport(elevel, (errcode_for_file_access(), errmsg("could not write to file \"%s\": %m", CONFIG_EXEC_PARAMS_NEW))); return; } for (i = 0; i < num_guc_variables; i++) { write_one_nondefault_variable(fp, guc_variables[i]); } if (FreeFile(fp)) { ereport(elevel, (errcode_for_file_access(), errmsg("could not write to file \"%s\": %m", CONFIG_EXEC_PARAMS_NEW))); return; } /* * Put new file in place. This could delay on Win32, but we don't hold * any exclusive locks. */ rename(CONFIG_EXEC_PARAMS_NEW, CONFIG_EXEC_PARAMS); } /* * Read string, including null byte from file * * Return NULL on EOF and nothing read */ static char * read_string_with_null(FILE *fp) { int i = 0, ch, maxlen = 256; char *str = NULL; do { if ((ch = fgetc(fp)) == EOF) { if (i == 0) return NULL; else elog(FATAL, "invalid format of exec config params file"); } if (i == 0) str = guc_malloc(FATAL, maxlen); else if (i == maxlen) str = guc_realloc(FATAL, str, maxlen *= 2); str[i++] = ch; } while (ch != 0); return str; } /* * This routine loads a previous postmaster dump of its non-default * settings. */ void read_nondefault_variables(void) { FILE *fp; char *varname, *varvalue, *varsourcefile; int varsourceline; GucSource varsource; GucContext varscontext; /* * Assert that PGC_BACKEND/PGC_SU_BACKEND case in set_config_option() will * do the right thing. */ Assert(IsInitProcessingMode()); /* * Open file */ fp = AllocateFile(CONFIG_EXEC_PARAMS, "r"); if (!fp) { /* File not found is fine */ if (errno != ENOENT) ereport(FATAL, (errcode_for_file_access(), errmsg("could not read from file \"%s\": %m", CONFIG_EXEC_PARAMS))); return; } for (;;) { struct config_generic *record; if ((varname = read_string_with_null(fp)) == NULL) break; if ((record = find_option(varname, true, FATAL)) == NULL) elog(FATAL, "failed to locate variable \"%s\" in exec config params file", varname); if ((varvalue = read_string_with_null(fp)) == NULL) elog(FATAL, "invalid format of exec config params file"); if ((varsourcefile = read_string_with_null(fp)) == NULL) elog(FATAL, "invalid format of exec config params file"); if (fread(&varsourceline, 1, sizeof(varsourceline), fp) != sizeof(varsourceline)) elog(FATAL, "invalid format of exec config params file"); if (fread(&varsource, 1, sizeof(varsource), fp) != sizeof(varsource)) elog(FATAL, "invalid format of exec config params file"); if (fread(&varscontext, 1, sizeof(varscontext), fp) != sizeof(varscontext)) elog(FATAL, "invalid format of exec config params file"); (void) set_config_option(varname, varvalue, varscontext, varsource, GUC_ACTION_SET, true, 0, true); if (varsourcefile[0]) set_config_sourcefile(varname, varsourcefile, varsourceline); free(varname); free(varvalue); free(varsourcefile); } FreeFile(fp); } #endif /* EXEC_BACKEND */ /* * can_skip_gucvar: * When serializing, determine whether to skip this GUC. When restoring, the * negation of this test determines whether to restore the compiled-in default * value before processing serialized values. * * A PGC_S_DEFAULT setting on the serialize side will typically match new * postmaster children, but that can be false when got_SIGHUP == true and the * pending configuration change modifies this setting. Nonetheless, we omit * PGC_S_DEFAULT settings from serialization and make up for that by restoring * defaults before applying serialized values. * * PGC_POSTMASTER variables always have the same value in every child of a * particular postmaster. Most PGC_INTERNAL variables are compile-time * constants; a few, like server_encoding and lc_ctype, are handled specially * outside the serialize/restore procedure. Therefore, SerializeGUCState() * never sends these, and RestoreGUCState() never changes them. * * Role is a special variable in the sense that its current value can be an * invalid value and there are multiple ways by which that can happen (like * after setting the role, someone drops it). So we handle it outside of * serialize/restore machinery. */ /* * estimate_variable_size: * Compute space needed for dumping the given GUC variable. * * It's OK to overestimate, but not to underestimate. */ /* * EstimateGUCStateSpace: * Returns the size needed to store the GUC state for the current process */ /* * do_serialize: * Copies the formatted string into the destination. Moves ahead the * destination pointer, and decrements the maxbytes by that many bytes. If * maxbytes is not sufficient to copy the string, error out. */ /* Binary copy version of do_serialize() */ /* * serialize_variable: * Dumps name, value and other information of a GUC variable into destptr. */ /* * SerializeGUCState: * Dumps the complete GUC state onto the memory location at start_address. */ /* * read_gucstate: * Actually it does not read anything, just returns the srcptr. But it does * move the srcptr past the terminating zero byte, so that the caller is ready * to read the next string. */ /* Binary read version of read_gucstate(). Copies into dest */ /* * Callback used to add a context message when reporting errors that occur * while trying to restore GUCs in parallel workers. */ /* * RestoreGUCState: * Reads the GUC state at the specified address and updates the GUCs with the * values read from the GUC state. */ /* * A little "long argument" simulation, although not quite GNU * compliant. Takes a string of the form "some-option=some value" and * returns name = "some_option" and value = "some value" in malloc'ed * storage. Note that '-' is converted to '_' in the option name. If * there is no '=' in the input string then value will be NULL. */ /* * Handle options fetched from pg_db_role_setting.setconfig, * pg_proc.proconfig, etc. Caller must specify proper context/source/action. * * The array parameter must be an array of TEXT (it must not be NULL). */ /* * Add an entry to an option array. The array parameter may be NULL * to indicate the current table entry is NULL. */ /* * Delete an entry from an option array. The array parameter may be NULL * to indicate the current table entry is NULL. Also, if the return value * is NULL then a null should be stored. */ /* * Given a GUC array, delete all settings from it that our permission * level allows: if superuser, delete them all; if regular user, only * those that are PGC_USERSET */ /* * Validate a proposed option setting for GUCArrayAdd/Delete/Reset. * * name is the option name. value is the proposed value for the Add case, * or NULL for the Delete/Reset cases. If skipIfNoPermissions is true, it's * not an error to have no permissions to set the option. * * Returns true if OK, false if skipIfNoPermissions is true and user does not * have permission to change this option (all other error cases result in an * error being thrown). */ /* * Called by check_hooks that want to override the normal * ERRCODE_INVALID_PARAMETER_VALUE SQLSTATE for check hook failures. * * Note that GUC_check_errmsg() etc are just macros that result in a direct * assignment to the associated variables. That is ugly, but forced by the * limitations of C's macro mechanisms. */ /* * Convenience functions to manage calling a variable's check_hook. * These mostly take care of the protocol for letting check hooks supply * portions of the error report on failure. */ /* * check_hook, assign_hook and show_hook subroutines */ #ifdef HAVE_SYSLOG #endif #ifdef WIN32 #endif #ifdef HAVE_SYSLOG #endif #ifdef HAVE_SYSLOG #endif #ifndef USE_BONJOUR #endif #ifndef USE_SSL #endif /* * pg_timezone_abbrev_initialize --- set default value if not done already * * This is called after initial loading of postgresql.conf. If no * timezone_abbreviations setting was found therein, select default. * If a non-default value is already installed, nothing will happen. * * This can also be called from ProcessConfigFile to establish the default * value after a postgresql.conf entry for it is removed. */ #ifndef USE_PREFETCH #endif /* USE_PREFETCH */ #ifndef USE_PREFETCH #endif /* USE_PREFETCH */ /* * We split the input string, where commas separate function names * and certain whitespace chars are ignored, into a \0-separated (and * \0\0-terminated) list of function names. This formulation allows * easy scanning when an error is thrown while avoiding the use of * non-reentrant strtok(), as well as keeping the output data in a * single palloc() chunk. */ /* * Recovery target settings: Only one of the several recovery_target* settings * may be set. Setting a second one results in an error. The global variable * recoveryTarget tracks which kind of recovery target was chosen. Other * variables store the actual target value (for example a string or a xid). * The assign functions of the parameters check whether a competing parameter * was already set. But we want to allow setting the same parameter multiple * times. We also want to allow unsetting a parameter and setting a different * one, so we unset recoveryTarget when the parameter is set to an empty * string. */ /* * The interpretation of the recovery_target_time string can depend on the * time zone setting, so we need to wait until after all GUC processing is * done before we can do the final parsing of the string. This check function * only does a parsing pass to catch syntax errors, but we store the string * and parse it again when we need to use it. */ #include "guc-file.c" libpg_query-13-2.1.0/src/postgres/src_backend_utils_mmgr_aset.c000066400000000000000000001364571413137616400246200ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - AllocSetContextCreateInternal * - context_freelists * - AllocSetMethods * - AllocSetAlloc * - AllocSetFreeIndex * - AllocSetFree * - AllocSetRealloc * - AllocSetReset * - AllocSetDelete * - AllocSetGetChunkSpace * - AllocSetIsEmpty * - AllocSetStats * - AllocSetCheck * - AllocSetDeleteFreeList *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * aset.c * Allocation set definitions. * * AllocSet is our standard implementation of the abstract MemoryContext * type. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/backend/utils/mmgr/aset.c * * NOTE: * This is a new (Feb. 05, 1999) implementation of the allocation set * routines. AllocSet...() does not use OrderedSet...() any more. * Instead it manages allocations in a block pool by itself, combining * many small allocations in a few bigger blocks. AllocSetFree() normally * doesn't free() memory really. It just add's the free'd area to some * list for later reuse by AllocSetAlloc(). All memory blocks are free()'d * at once on AllocSetReset(), which happens when the memory context gets * destroyed. * Jan Wieck * * Performance improvement from Tom Lane, 8/99: for extremely large request * sizes, we do want to be able to give the memory back to free() as soon * as it is pfree()'d. Otherwise we risk tying up a lot of memory in * freelist entries that might never be usable. This is specially needed * when the caller is repeatedly repalloc()'ing a block bigger and bigger; * the previous instances of the block were guaranteed to be wasted until * AllocSetReset() under the old way. * * Further improvement 12/00: as the code stood, request sizes in the * midrange between "small" and "large" were handled very inefficiently, * because any sufficiently large free chunk would be used to satisfy a * request, even if it was much larger than necessary. This led to more * and more wasted space in allocated chunks over time. To fix, get rid * of the midrange behavior: we now handle only "small" power-of-2-size * chunks as chunks. Anything "large" is passed off to malloc(). Change * the number of freelists to change the small/large boundary. * *------------------------------------------------------------------------- */ #include "postgres.h" #include "port/pg_bitutils.h" #include "utils/memdebug.h" #include "utils/memutils.h" /*-------------------- * Chunk freelist k holds chunks of size 1 << (k + ALLOC_MINBITS), * for k = 0 .. ALLOCSET_NUM_FREELISTS-1. * * Note that all chunks in the freelists have power-of-2 sizes. This * improves recyclability: we may waste some space, but the wasted space * should stay pretty constant as requests are made and released. * * A request too large for the last freelist is handled by allocating a * dedicated block from malloc(). The block still has a block header and * chunk header, but when the chunk is freed we'll return the whole block * to malloc(), not put it on our freelists. * * CAUTION: ALLOC_MINBITS must be large enough so that * 1< (1 << ALLOC_MINBITS)) { /*---------- * At this point we must compute ceil(log2(size >> ALLOC_MINBITS)). * This is the same as * pg_leftmost_one_pos32((size - 1) >> ALLOC_MINBITS) + 1 * or equivalently * pg_leftmost_one_pos32(size - 1) - ALLOC_MINBITS + 1 * * However, rather than just calling that function, we duplicate the * logic here, allowing an additional optimization. It's reasonable * to assume that ALLOC_CHUNK_LIMIT fits in 16 bits, so we can unroll * the byte-at-a-time loop in pg_leftmost_one_pos32 and just handle * the last two bytes. * * Yes, this function is enough of a hot-spot to make it worth this * much trouble. *---------- */ #ifdef HAVE__BUILTIN_CLZ idx = 31 - __builtin_clz((uint32) size - 1) - ALLOC_MINBITS + 1; #else uint32 t, tsize; /* Statically assert that we only have a 16-bit input value. */ StaticAssertStmt(ALLOC_CHUNK_LIMIT < (1 << 16), "ALLOC_CHUNK_LIMIT must be less than 64kB"); tsize = size - 1; t = tsize >> 8; idx = t ? pg_leftmost_one_pos[t] + 8 : pg_leftmost_one_pos[tsize]; idx -= ALLOC_MINBITS - 1; #endif Assert(idx < ALLOCSET_NUM_FREELISTS); } else idx = 0; return idx; } /* * Public routines */ /* * AllocSetContextCreateInternal * Create a new AllocSet context. * * parent: parent context, or NULL if top-level context * name: name of context (must be statically allocated) * minContextSize: minimum context size * initBlockSize: initial allocation block size * maxBlockSize: maximum allocation block size * * Most callers should abstract the context size parameters using a macro * such as ALLOCSET_DEFAULT_SIZES. * * Note: don't call this directly; go through the wrapper macro * AllocSetContextCreate. */ MemoryContext AllocSetContextCreateInternal(MemoryContext parent, const char *name, Size minContextSize, Size initBlockSize, Size maxBlockSize) { int freeListIndex; Size firstBlockSize; AllocSet set; AllocBlock block; /* Assert we padded AllocChunkData properly */ StaticAssertStmt(ALLOC_CHUNKHDRSZ == MAXALIGN(ALLOC_CHUNKHDRSZ), "sizeof(AllocChunkData) is not maxaligned"); StaticAssertStmt(offsetof(AllocChunkData, aset) + sizeof(MemoryContext) == ALLOC_CHUNKHDRSZ, "padding calculation in AllocChunkData is wrong"); /* * First, validate allocation parameters. Once these were regular runtime * test and elog's, but in practice Asserts seem sufficient because nobody * varies their parameters at runtime. We somewhat arbitrarily enforce a * minimum 1K block size. */ Assert(initBlockSize == MAXALIGN(initBlockSize) && initBlockSize >= 1024); Assert(maxBlockSize == MAXALIGN(maxBlockSize) && maxBlockSize >= initBlockSize && AllocHugeSizeIsValid(maxBlockSize)); /* must be safe to double */ Assert(minContextSize == 0 || (minContextSize == MAXALIGN(minContextSize) && minContextSize >= 1024 && minContextSize <= maxBlockSize)); /* * Check whether the parameters match either available freelist. We do * not need to demand a match of maxBlockSize. */ if (minContextSize == ALLOCSET_DEFAULT_MINSIZE && initBlockSize == ALLOCSET_DEFAULT_INITSIZE) freeListIndex = 0; else if (minContextSize == ALLOCSET_SMALL_MINSIZE && initBlockSize == ALLOCSET_SMALL_INITSIZE) freeListIndex = 1; else freeListIndex = -1; /* * If a suitable freelist entry exists, just recycle that context. */ if (freeListIndex >= 0) { AllocSetFreeList *freelist = &context_freelists[freeListIndex]; if (freelist->first_free != NULL) { /* Remove entry from freelist */ set = freelist->first_free; freelist->first_free = (AllocSet) set->header.nextchild; freelist->num_free--; /* Update its maxBlockSize; everything else should be OK */ set->maxBlockSize = maxBlockSize; /* Reinitialize its header, installing correct name and parent */ MemoryContextCreate((MemoryContext) set, T_AllocSetContext, &AllocSetMethods, parent, name); ((MemoryContext) set)->mem_allocated = set->keeper->endptr - ((char *) set); return (MemoryContext) set; } } /* Determine size of initial block */ firstBlockSize = MAXALIGN(sizeof(AllocSetContext)) + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; if (minContextSize != 0) firstBlockSize = Max(firstBlockSize, minContextSize); else firstBlockSize = Max(firstBlockSize, initBlockSize); /* * Allocate the initial block. Unlike other aset.c blocks, it starts with * the context header and its block header follows that. */ set = (AllocSet) malloc(firstBlockSize); if (set == NULL) { if (TopMemoryContext) MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed while creating memory context \"%s\".", name))); } /* * Avoid writing code that can fail between here and MemoryContextCreate; * we'd leak the header/initial block if we ereport in this stretch. */ /* Fill in the initial block's block header */ block = (AllocBlock) (((char *) set) + MAXALIGN(sizeof(AllocSetContext))); block->aset = set; block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; block->endptr = ((char *) set) + firstBlockSize; block->prev = NULL; block->next = NULL; /* Mark unallocated space NOACCESS; leave the block header alone. */ VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, block->endptr - block->freeptr); /* Remember block as part of block list */ set->blocks = block; /* Mark block as not to be released at reset time */ set->keeper = block; /* Finish filling in aset-specific parts of the context header */ MemSetAligned(set->freelist, 0, sizeof(set->freelist)); set->initBlockSize = initBlockSize; set->maxBlockSize = maxBlockSize; set->nextBlockSize = initBlockSize; set->freeListIndex = freeListIndex; /* * Compute the allocation chunk size limit for this context. It can't be * more than ALLOC_CHUNK_LIMIT because of the fixed number of freelists. * If maxBlockSize is small then requests exceeding the maxBlockSize, or * even a significant fraction of it, should be treated as large chunks * too. For the typical case of maxBlockSize a power of 2, the chunk size * limit will be at most 1/8th maxBlockSize, so that given a stream of * requests that are all the maximum chunk size we will waste at most * 1/8th of the allocated space. * * We have to have allocChunkLimit a power of two, because the requested * and actually-allocated sizes of any chunk must be on the same side of * the limit, else we get confused about whether the chunk is "big". * * Also, allocChunkLimit must not exceed ALLOCSET_SEPARATE_THRESHOLD. */ StaticAssertStmt(ALLOC_CHUNK_LIMIT == ALLOCSET_SEPARATE_THRESHOLD, "ALLOC_CHUNK_LIMIT != ALLOCSET_SEPARATE_THRESHOLD"); set->allocChunkLimit = ALLOC_CHUNK_LIMIT; while ((Size) (set->allocChunkLimit + ALLOC_CHUNKHDRSZ) > (Size) ((maxBlockSize - ALLOC_BLOCKHDRSZ) / ALLOC_CHUNK_FRACTION)) set->allocChunkLimit >>= 1; /* Finally, do the type-independent part of context creation */ MemoryContextCreate((MemoryContext) set, T_AllocSetContext, &AllocSetMethods, parent, name); ((MemoryContext) set)->mem_allocated = firstBlockSize; return (MemoryContext) set; } /* * AllocSetReset * Frees all memory which is allocated in the given set. * * Actually, this routine has some discretion about what to do. * It should mark all allocated chunks freed, but it need not necessarily * give back all the resources the set owns. Our actual implementation is * that we give back all but the "keeper" block (which we must keep, since * it shares a malloc chunk with the context header). In this way, we don't * thrash malloc() when a context is repeatedly reset after small allocations, * which is typical behavior for per-tuple contexts. */ static void AllocSetReset(MemoryContext context) { AllocSet set = (AllocSet) context; AllocBlock block; Size keepersize PG_USED_FOR_ASSERTS_ONLY = set->keeper->endptr - ((char *) set); AssertArg(AllocSetIsValid(set)); #ifdef MEMORY_CONTEXT_CHECKING /* Check for corruption and leaks before freeing */ AllocSetCheck(context); #endif /* Clear chunk freelists */ MemSetAligned(set->freelist, 0, sizeof(set->freelist)); block = set->blocks; /* New blocks list will be just the keeper block */ set->blocks = set->keeper; while (block != NULL) { AllocBlock next = block->next; if (block == set->keeper) { /* Reset the block, but don't return it to malloc */ char *datastart = ((char *) block) + ALLOC_BLOCKHDRSZ; #ifdef CLOBBER_FREED_MEMORY wipe_mem(datastart, block->freeptr - datastart); #else /* wipe_mem() would have done this */ VALGRIND_MAKE_MEM_NOACCESS(datastart, block->freeptr - datastart); #endif block->freeptr = datastart; block->prev = NULL; block->next = NULL; } else { /* Normal case, release the block */ context->mem_allocated -= block->endptr - ((char *) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif free(block); } block = next; } Assert(context->mem_allocated == keepersize); /* Reset block size allocation sequence, too */ set->nextBlockSize = set->initBlockSize; } /* * AllocSetDelete * Frees all memory which is allocated in the given set, * in preparation for deletion of the set. * * Unlike AllocSetReset, this *must* free all resources of the set. */ static void AllocSetDelete(MemoryContext context) { AllocSet set = (AllocSet) context; AllocBlock block = set->blocks; Size keepersize PG_USED_FOR_ASSERTS_ONLY = set->keeper->endptr - ((char *) set); AssertArg(AllocSetIsValid(set)); #ifdef MEMORY_CONTEXT_CHECKING /* Check for corruption and leaks before freeing */ AllocSetCheck(context); #endif /* * If the context is a candidate for a freelist, put it into that freelist * instead of destroying it. */ if (set->freeListIndex >= 0) { AllocSetFreeList *freelist = &context_freelists[set->freeListIndex]; /* * Reset the context, if it needs it, so that we aren't hanging on to * more than the initial malloc chunk. */ if (!context->isReset) MemoryContextResetOnly(context); /* * If the freelist is full, just discard what's already in it. See * comments with context_freelists[]. */ if (freelist->num_free >= MAX_FREE_CONTEXTS) { while (freelist->first_free != NULL) { AllocSetContext *oldset = freelist->first_free; freelist->first_free = (AllocSetContext *) oldset->header.nextchild; freelist->num_free--; /* All that remains is to free the header/initial block */ free(oldset); } Assert(freelist->num_free == 0); } /* Now add the just-deleted context to the freelist. */ set->header.nextchild = (MemoryContext) freelist->first_free; freelist->first_free = set; freelist->num_free++; return; } /* Free all blocks, except the keeper which is part of context header */ while (block != NULL) { AllocBlock next = block->next; if (block != set->keeper) context->mem_allocated -= block->endptr - ((char *) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif if (block != set->keeper) free(block); block = next; } Assert(context->mem_allocated == keepersize); /* Finally, free the context header, including the keeper block */ free(set); } /* * AllocSetAlloc * Returns pointer to allocated memory of given size or NULL if * request could not be completed; memory is added to the set. * * No request may exceed: * MAXALIGN_DOWN(SIZE_MAX) - ALLOC_BLOCKHDRSZ - ALLOC_CHUNKHDRSZ * All callers use a much-lower limit. * * Note: when using valgrind, it doesn't matter how the returned allocation * is marked, as mcxt.c will set it to UNDEFINED. In some paths we will * return space that is marked NOACCESS - AllocSetRealloc has to beware! */ static void * AllocSetAlloc(MemoryContext context, Size size) { AllocSet set = (AllocSet) context; AllocBlock block; AllocChunk chunk; int fidx; Size chunk_size; Size blksize; AssertArg(AllocSetIsValid(set)); /* * If requested size exceeds maximum for chunks, allocate an entire block * for this request. */ if (size > set->allocChunkLimit) { chunk_size = MAXALIGN(size); blksize = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; block = (AllocBlock) malloc(blksize); if (block == NULL) return NULL; context->mem_allocated += blksize; block->aset = set; block->freeptr = block->endptr = ((char *) block) + blksize; chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); chunk->aset = set; chunk->size = chunk_size; #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < chunk_size) set_sentinel(AllocChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) AllocChunkGetPointer(chunk), size); #endif /* * Stick the new block underneath the active allocation block, if any, * so that we don't lose the use of the space remaining therein. */ if (set->blocks != NULL) { block->prev = set->blocks; block->next = set->blocks->next; if (block->next) block->next->prev = block; set->blocks->next = block; } else { block->prev = NULL; block->next = NULL; set->blocks = block; } /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) AllocChunkGetPointer(chunk) + size, chunk_size - size); /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return AllocChunkGetPointer(chunk); } /* * Request is small enough to be treated as a chunk. Look in the * corresponding free list to see if there is a free chunk we could reuse. * If one is found, remove it from the free list, make it again a member * of the alloc set and return its data address. */ fidx = AllocSetFreeIndex(size); chunk = set->freelist[fidx]; if (chunk != NULL) { Assert(chunk->size >= size); set->freelist[fidx] = (AllocChunk) chunk->aset; chunk->aset = (void *) set; #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < chunk->size) set_sentinel(AllocChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) AllocChunkGetPointer(chunk), size); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) AllocChunkGetPointer(chunk) + size, chunk->size - size); /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return AllocChunkGetPointer(chunk); } /* * Choose the actual chunk size to allocate. */ chunk_size = (1 << ALLOC_MINBITS) << fidx; Assert(chunk_size >= size); /* * If there is enough room in the active allocation block, we will put the * chunk into that block. Else must start a new one. */ if ((block = set->blocks) != NULL) { Size availspace = block->endptr - block->freeptr; if (availspace < (chunk_size + ALLOC_CHUNKHDRSZ)) { /* * The existing active (top) block does not have enough room for * the requested allocation, but it might still have a useful * amount of space in it. Once we push it down in the block list, * we'll never try to allocate more space from it. So, before we * do that, carve up its free space into chunks that we can put on * the set's freelists. * * Because we can only get here when there's less than * ALLOC_CHUNK_LIMIT left in the block, this loop cannot iterate * more than ALLOCSET_NUM_FREELISTS-1 times. */ while (availspace >= ((1 << ALLOC_MINBITS) + ALLOC_CHUNKHDRSZ)) { Size availchunk = availspace - ALLOC_CHUNKHDRSZ; int a_fidx = AllocSetFreeIndex(availchunk); /* * In most cases, we'll get back the index of the next larger * freelist than the one we need to put this chunk on. The * exception is when availchunk is exactly a power of 2. */ if (availchunk != ((Size) 1 << (a_fidx + ALLOC_MINBITS))) { a_fidx--; Assert(a_fidx >= 0); availchunk = ((Size) 1 << (a_fidx + ALLOC_MINBITS)); } chunk = (AllocChunk) (block->freeptr); /* Prepare to initialize the chunk header. */ VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNKHDRSZ); block->freeptr += (availchunk + ALLOC_CHUNKHDRSZ); availspace -= (availchunk + ALLOC_CHUNKHDRSZ); chunk->size = availchunk; #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = 0; /* mark it free */ #endif chunk->aset = (void *) set->freelist[a_fidx]; set->freelist[a_fidx] = chunk; } /* Mark that we need to create a new block */ block = NULL; } } /* * Time to create a new regular (multi-chunk) block? */ if (block == NULL) { Size required_size; /* * The first such block has size initBlockSize, and we double the * space in each succeeding block, but not more than maxBlockSize. */ blksize = set->nextBlockSize; set->nextBlockSize <<= 1; if (set->nextBlockSize > set->maxBlockSize) set->nextBlockSize = set->maxBlockSize; /* * If initBlockSize is less than ALLOC_CHUNK_LIMIT, we could need more * space... but try to keep it a power of 2. */ required_size = chunk_size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; while (blksize < required_size) blksize <<= 1; /* Try to allocate it */ block = (AllocBlock) malloc(blksize); /* * We could be asking for pretty big blocks here, so cope if malloc * fails. But give up if there's less than 1 MB or so available... */ while (block == NULL && blksize > 1024 * 1024) { blksize >>= 1; if (blksize < required_size) break; block = (AllocBlock) malloc(blksize); } if (block == NULL) return NULL; context->mem_allocated += blksize; block->aset = set; block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; block->endptr = ((char *) block) + blksize; /* Mark unallocated space NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS(block->freeptr, blksize - ALLOC_BLOCKHDRSZ); block->prev = NULL; block->next = set->blocks; if (block->next) block->next->prev = block; set->blocks = block; } /* * OK, do the allocation */ chunk = (AllocChunk) (block->freeptr); /* Prepare to initialize the chunk header. */ VALGRIND_MAKE_MEM_UNDEFINED(chunk, ALLOC_CHUNKHDRSZ); block->freeptr += (chunk_size + ALLOC_CHUNKHDRSZ); Assert(block->freeptr <= block->endptr); chunk->aset = (void *) set; chunk->size = chunk_size; #ifdef MEMORY_CONTEXT_CHECKING chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < chunk->size) set_sentinel(AllocChunkGetPointer(chunk), size); #endif #ifdef RANDOMIZE_ALLOCATED_MEMORY /* fill the allocated space with junk */ randomize_mem((char *) AllocChunkGetPointer(chunk), size); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) AllocChunkGetPointer(chunk) + size, chunk_size - size); /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return AllocChunkGetPointer(chunk); } /* * AllocSetFree * Frees allocated memory; memory is removed from the set. */ static void AllocSetFree(MemoryContext context, void *pointer) { AllocSet set = (AllocSet) context; AllocChunk chunk = AllocPointerGetChunk(pointer); /* Allow access to private part of chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ if (chunk->requested_size < chunk->size) if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", set->header.name, chunk); #endif if (chunk->size > set->allocChunkLimit) { /* * Big chunks are certain to have been allocated as single-chunk * blocks. Just unlink that block and return it to malloc(). */ AllocBlock block = (AllocBlock) (((char *) chunk) - ALLOC_BLOCKHDRSZ); /* * Try to verify that we have a sane block pointer: it should * reference the correct aset, and freeptr and endptr should point * just past the chunk. */ if (block->aset != set || block->freeptr != block->endptr || block->freeptr != ((char *) block) + (chunk->size + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)) elog(ERROR, "could not find block containing chunk %p", chunk); /* OK, remove block from aset's list and free it */ if (block->prev) block->prev->next = block->next; else set->blocks = block->next; if (block->next) block->next->prev = block->prev; context->mem_allocated -= block->endptr - ((char *) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); #endif free(block); } else { /* Normal case, put the chunk into appropriate freelist */ int fidx = AllocSetFreeIndex(chunk->size); chunk->aset = (void *) set->freelist[fidx]; #ifdef CLOBBER_FREED_MEMORY wipe_mem(pointer, chunk->size); #endif #ifdef MEMORY_CONTEXT_CHECKING /* Reset requested_size to 0 in chunks that are on freelist */ chunk->requested_size = 0; #endif set->freelist[fidx] = chunk; } } /* * AllocSetRealloc * Returns new pointer to allocated memory of given size or NULL if * request could not be completed; this memory is added to the set. * Memory associated with given pointer is copied into the new memory, * and the old memory is freed. * * Without MEMORY_CONTEXT_CHECKING, we don't know the old request size. This * makes our Valgrind client requests less-precise, hazarding false negatives. * (In principle, we could use VALGRIND_GET_VBITS() to rediscover the old * request size.) */ static void * AllocSetRealloc(MemoryContext context, void *pointer, Size size) { AllocSet set = (AllocSet) context; AllocChunk chunk = AllocPointerGetChunk(pointer); Size oldsize; /* Allow access to private part of chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); oldsize = chunk->size; #ifdef MEMORY_CONTEXT_CHECKING /* Test for someone scribbling on unused space in chunk */ if (chunk->requested_size < oldsize) if (!sentinel_ok(pointer, chunk->requested_size)) elog(WARNING, "detected write past chunk end in %s %p", set->header.name, chunk); #endif if (oldsize > set->allocChunkLimit) { /* * The chunk must have been allocated as a single-chunk block. Use * realloc() to make the containing block bigger, or smaller, with * minimum space wastage. */ AllocBlock block = (AllocBlock) (((char *) chunk) - ALLOC_BLOCKHDRSZ); Size chksize; Size blksize; Size oldblksize; /* * Try to verify that we have a sane block pointer: it should * reference the correct aset, and freeptr and endptr should point * just past the chunk. */ if (block->aset != set || block->freeptr != block->endptr || block->freeptr != ((char *) block) + (oldsize + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ)) elog(ERROR, "could not find block containing chunk %p", chunk); /* * Even if the new request is less than set->allocChunkLimit, we stick * with the single-chunk block approach. Therefore we need * chunk->size to be bigger than set->allocChunkLimit, so we don't get * confused about the chunk's status in future calls. */ chksize = Max(size, set->allocChunkLimit + 1); chksize = MAXALIGN(chksize); /* Do the realloc */ blksize = chksize + ALLOC_BLOCKHDRSZ + ALLOC_CHUNKHDRSZ; oldblksize = block->endptr - ((char *) block); block = (AllocBlock) realloc(block, blksize); if (block == NULL) { /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return NULL; } /* updated separately, not to underflow when (oldblksize > blksize) */ context->mem_allocated -= oldblksize; context->mem_allocated += blksize; block->freeptr = block->endptr = ((char *) block) + blksize; /* Update pointers since block has likely been moved */ chunk = (AllocChunk) (((char *) block) + ALLOC_BLOCKHDRSZ); pointer = AllocChunkGetPointer(chunk); if (block->prev) block->prev->next = block; else set->blocks = block; if (block->next) block->next->prev = block; chunk->size = chksize; #ifdef MEMORY_CONTEXT_CHECKING #ifdef RANDOMIZE_ALLOCATED_MEMORY /* We can only fill the extra space if we know the prior request */ if (size > chunk->requested_size) randomize_mem((char *) pointer + chunk->requested_size, size - chunk->requested_size); #endif /* * realloc() (or randomize_mem()) will have left any newly-allocated * part UNDEFINED, but we may need to adjust trailing bytes from the * old allocation. */ #ifdef USE_VALGRIND if (oldsize > chunk->requested_size) VALGRIND_MAKE_MEM_UNDEFINED((char *) pointer + chunk->requested_size, oldsize - chunk->requested_size); #endif chunk->requested_size = size; /* set mark to catch clobber of "unused" space */ if (size < chunk->size) set_sentinel(pointer, size); #else /* !MEMORY_CONTEXT_CHECKING */ /* * We don't know how much of the old chunk size was the actual * allocation; it could have been as small as one byte. We have to be * conservative and just mark the entire old portion DEFINED. */ VALGRIND_MAKE_MEM_DEFINED(pointer, oldsize); #endif /* Ensure any padding bytes are marked NOACCESS. */ VALGRIND_MAKE_MEM_NOACCESS((char *) pointer + size, chksize - size); /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return pointer; } /* * Chunk sizes are aligned to power of 2 in AllocSetAlloc(). Maybe the * allocated area already is >= the new size. (In particular, we will * fall out here if the requested size is a decrease.) */ else if (oldsize >= size) { #ifdef MEMORY_CONTEXT_CHECKING Size oldrequest = chunk->requested_size; #ifdef RANDOMIZE_ALLOCATED_MEMORY /* We can only fill the extra space if we know the prior request */ if (size > oldrequest) randomize_mem((char *) pointer + oldrequest, size - oldrequest); #endif chunk->requested_size = size; /* * If this is an increase, mark any newly-available part UNDEFINED. * Otherwise, mark the obsolete part NOACCESS. */ if (size > oldrequest) VALGRIND_MAKE_MEM_UNDEFINED((char *) pointer + oldrequest, size - oldrequest); else VALGRIND_MAKE_MEM_NOACCESS((char *) pointer + size, oldsize - size); /* set mark to catch clobber of "unused" space */ if (size < oldsize) set_sentinel(pointer, size); #else /* !MEMORY_CONTEXT_CHECKING */ /* * We don't have the information to determine whether we're growing * the old request or shrinking it, so we conservatively mark the * entire new allocation DEFINED. */ VALGRIND_MAKE_MEM_NOACCESS(pointer, oldsize); VALGRIND_MAKE_MEM_DEFINED(pointer, size); #endif /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return pointer; } else { /* * Enlarge-a-small-chunk case. We just do this by brute force, ie, * allocate a new chunk and copy the data. Since we know the existing * data isn't huge, this won't involve any great memcpy expense, so * it's not worth being smarter. (At one time we tried to avoid * memcpy when it was possible to enlarge the chunk in-place, but that * turns out to misbehave unpleasantly for repeated cycles of * palloc/repalloc/pfree: the eventually freed chunks go into the * wrong freelist for the next initial palloc request, and so we leak * memory indefinitely. See pgsql-hackers archives for 2007-08-11.) */ AllocPointer newPointer; /* allocate new chunk */ newPointer = AllocSetAlloc((MemoryContext) set, size); /* leave immediately if request was not completed */ if (newPointer == NULL) { /* Disallow external access to private part of chunk header. */ VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return NULL; } /* * AllocSetAlloc() may have returned a region that is still NOACCESS. * Change it to UNDEFINED for the moment; memcpy() will then transfer * definedness from the old allocation to the new. If we know the old * allocation, copy just that much. Otherwise, make the entire old * chunk defined to avoid errors as we copy the currently-NOACCESS * trailing bytes. */ VALGRIND_MAKE_MEM_UNDEFINED(newPointer, size); #ifdef MEMORY_CONTEXT_CHECKING oldsize = chunk->requested_size; #else VALGRIND_MAKE_MEM_DEFINED(pointer, oldsize); #endif /* transfer existing data (certain to fit) */ memcpy(newPointer, pointer, oldsize); /* free old chunk */ AllocSetFree((MemoryContext) set, pointer); return newPointer; } } /* * AllocSetGetChunkSpace * Given a currently-allocated chunk, determine the total space * it occupies (including all memory-allocation overhead). */ static Size AllocSetGetChunkSpace(MemoryContext context, void *pointer) { AllocChunk chunk = AllocPointerGetChunk(pointer); Size result; VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); result = chunk->size + ALLOC_CHUNKHDRSZ; VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); return result; } /* * AllocSetIsEmpty * Is an allocset empty of any allocated space? */ static bool AllocSetIsEmpty(MemoryContext context) { /* * For now, we say "empty" only if the context is new or just reset. We * could examine the freelists to determine if all space has been freed, * but it's not really worth the trouble for present uses of this * functionality. */ if (context->isReset) return true; return false; } /* * AllocSetStats * Compute stats about memory consumption of an allocset. * * printfunc: if not NULL, pass a human-readable stats string to this. * passthru: pass this pointer through to printfunc. * totals: if not NULL, add stats about this context into *totals. */ static void AllocSetStats(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, MemoryContextCounters *totals) { AllocSet set = (AllocSet) context; Size nblocks = 0; Size freechunks = 0; Size totalspace; Size freespace = 0; AllocBlock block; int fidx; /* Include context header in totalspace */ totalspace = MAXALIGN(sizeof(AllocSetContext)); for (block = set->blocks; block != NULL; block = block->next) { nblocks++; totalspace += block->endptr - ((char *) block); freespace += block->endptr - block->freeptr; } for (fidx = 0; fidx < ALLOCSET_NUM_FREELISTS; fidx++) { AllocChunk chunk; for (chunk = set->freelist[fidx]; chunk != NULL; chunk = (AllocChunk) chunk->aset) { freechunks++; freespace += chunk->size + ALLOC_CHUNKHDRSZ; } } if (printfunc) { char stats_string[200]; snprintf(stats_string, sizeof(stats_string), "%zu total in %zd blocks; %zu free (%zd chunks); %zu used", totalspace, nblocks, freespace, freechunks, totalspace - freespace); printfunc(context, passthru, stats_string); } if (totals) { totals->nblocks += nblocks; totals->freechunks += freechunks; totals->totalspace += totalspace; totals->freespace += freespace; } } #ifdef MEMORY_CONTEXT_CHECKING /* * AllocSetCheck * Walk through chunks and check consistency of memory. * * NOTE: report errors as WARNING, *not* ERROR or FATAL. Otherwise you'll * find yourself in an infinite loop when trouble occurs, because this * routine will be entered again when elog cleanup tries to release memory! */ static void AllocSetCheck(MemoryContext context) { AllocSet set = (AllocSet) context; const char *name = set->header.name; AllocBlock prevblock; AllocBlock block; Size total_allocated = 0; for (prevblock = NULL, block = set->blocks; block != NULL; prevblock = block, block = block->next) { char *bpoz = ((char *) block) + ALLOC_BLOCKHDRSZ; long blk_used = block->freeptr - bpoz; long blk_data = 0; long nchunks = 0; if (set->keeper == block) total_allocated += block->endptr - ((char *) set); else total_allocated += block->endptr - ((char *) block); /* * Empty block - empty can be keeper-block only */ if (!blk_used) { if (set->keeper != block) elog(WARNING, "problem in alloc set %s: empty block %p", name, block); } /* * Check block header fields */ if (block->aset != set || block->prev != prevblock || block->freeptr < bpoz || block->freeptr > block->endptr) elog(WARNING, "problem in alloc set %s: corrupt header in block %p", name, block); /* * Chunk walker */ while (bpoz < block->freeptr) { AllocChunk chunk = (AllocChunk) bpoz; Size chsize, dsize; /* Allow access to private part of chunk header. */ VALGRIND_MAKE_MEM_DEFINED(chunk, ALLOCCHUNK_PRIVATE_LEN); chsize = chunk->size; /* aligned chunk size */ dsize = chunk->requested_size; /* real data */ /* * Check chunk size */ if (dsize > chsize) elog(WARNING, "problem in alloc set %s: req size > alloc size for chunk %p in block %p", name, chunk, block); if (chsize < (1 << ALLOC_MINBITS)) elog(WARNING, "problem in alloc set %s: bad size %zu for chunk %p in block %p", name, chsize, chunk, block); /* single-chunk block? */ if (chsize > set->allocChunkLimit && chsize + ALLOC_CHUNKHDRSZ != blk_used) elog(WARNING, "problem in alloc set %s: bad single-chunk %p in block %p", name, chunk, block); /* * If chunk is allocated, check for correct aset pointer. (If it's * free, the aset is the freelist pointer, which we can't check as * easily...) Note this is an incomplete test, since palloc(0) * produces an allocated chunk with requested_size == 0. */ if (dsize > 0 && chunk->aset != (void *) set) elog(WARNING, "problem in alloc set %s: bogus aset link in block %p, chunk %p", name, block, chunk); /* * Check for overwrite of padding space in an allocated chunk. */ if (chunk->aset == (void *) set && dsize < chsize && !sentinel_ok(chunk, ALLOC_CHUNKHDRSZ + dsize)) elog(WARNING, "problem in alloc set %s: detected write past chunk end in block %p, chunk %p", name, block, chunk); /* * If chunk is allocated, disallow external access to private part * of chunk header. */ if (chunk->aset == (void *) set) VALGRIND_MAKE_MEM_NOACCESS(chunk, ALLOCCHUNK_PRIVATE_LEN); blk_data += chsize; nchunks++; bpoz += ALLOC_CHUNKHDRSZ + chsize; } if ((blk_data + (nchunks * ALLOC_CHUNKHDRSZ)) != blk_used) elog(WARNING, "problem in alloc set %s: found inconsistent memory block %p", name, block); } Assert(total_allocated == context->mem_allocated); } #endif /* MEMORY_CONTEXT_CHECKING */ void AllocSetDeleteFreeList(MemoryContext context) { AllocSet set = (AllocSet) context; if (set->freeListIndex >= 0) { AllocSetFreeList *freelist = &context_freelists[set->freeListIndex]; while (freelist->first_free != NULL) { AllocSetContext *oldset = freelist->first_free; freelist->first_free = (AllocSetContext *) oldset->header.nextchild; freelist->num_free--; /* All that remains is to free the header/initial block */ free(oldset); } Assert(freelist->num_free == 0); } } libpg_query-13-2.1.0/src/postgres/src_backend_utils_mmgr_mcxt.c000066400000000000000000000707051413137616400246300ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ErrorContext * - MemoryContextReset * - MemoryContextDeleteChildren * - MemoryContextDelete * - TopMemoryContext * - CurrentMemoryContext * - MemoryContextSetParent * - MemoryContextCallResetCallbacks * - MemoryContextResetOnly * - repalloc * - MemoryContextStats * - MemoryContextStatsDetail * - MemoryContextStatsInternal * - MemoryContextStatsPrint * - pfree * - pstrdup * - MemoryContextStrdup * - MemoryContextAlloc * - palloc * - MemoryContextAllocZeroAligned * - MemoryContextAllocZero * - palloc0 * - MemoryContextCreate * - MemoryContextInit * - MemoryContextAllowInCriticalSection * - CurrentMemoryContext * - MemoryContextDelete * - palloc0 * - MemoryContextAllocExtended *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * mcxt.c * POSTGRES memory context management code. * * This module handles context management operations that are independent * of the particular kind of context being operated on. It calls * context-type-specific operations via the function pointers in a * context's MemoryContextMethods struct. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/backend/utils/mmgr/mcxt.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "utils/memdebug.h" #include "utils/memutils.h" /***************************************************************************** * GLOBAL MEMORY * *****************************************************************************/ /* * CurrentMemoryContext * Default memory context for allocations. */ __thread MemoryContext CurrentMemoryContext = NULL; /* * Standard top-level contexts. For a description of the purpose of each * of these contexts, refer to src/backend/utils/mmgr/README */ __thread MemoryContext TopMemoryContext = NULL; __thread MemoryContext ErrorContext = NULL; /* This is a transient link to the active portal's memory context: */ static void MemoryContextCallResetCallbacks(MemoryContext context); static void MemoryContextStatsInternal(MemoryContext context, int level, bool print, int max_children, MemoryContextCounters *totals); static void MemoryContextStatsPrint(MemoryContext context, void *passthru, const char *stats_string); /* * You should not do memory allocations within a critical section, because * an out-of-memory error will be escalated to a PANIC. To enforce that * rule, the allocation functions Assert that. */ #define AssertNotInCriticalSection(context) \ Assert(CritSectionCount == 0 || (context)->allowInCritSection) /***************************************************************************** * EXPORTED ROUTINES * *****************************************************************************/ /* * MemoryContextInit * Start up the memory-context subsystem. * * This must be called before creating contexts or allocating memory in * contexts. TopMemoryContext and ErrorContext are initialized here; * other contexts must be created afterwards. * * In normal multi-backend operation, this is called once during * postmaster startup, and not at all by individual backend startup * (since the backends inherit an already-initialized context subsystem * by virtue of being forked off the postmaster). But in an EXEC_BACKEND * build, each process must do this for itself. * * In a standalone backend this must be called during backend startup. */ void MemoryContextInit(void) { AssertState(TopMemoryContext == NULL); /* * First, initialize TopMemoryContext, which is the parent of all others. */ TopMemoryContext = AllocSetContextCreate((MemoryContext) NULL, "TopMemoryContext", ALLOCSET_DEFAULT_SIZES); /* * Not having any other place to point CurrentMemoryContext, make it point * to TopMemoryContext. Caller should change this soon! */ CurrentMemoryContext = TopMemoryContext; /* * Initialize ErrorContext as an AllocSetContext with slow growth rate --- * we don't really expect much to be allocated in it. More to the point, * require it to contain at least 8K at all times. This is the only case * where retained memory in a context is *essential* --- we want to be * sure ErrorContext still has some memory even if we've run out * elsewhere! Also, allow allocations in ErrorContext within a critical * section. Otherwise a PANIC will cause an assertion failure in the error * reporting code, before printing out the real cause of the failure. * * This should be the last step in this function, as elog.c assumes memory * management works once ErrorContext is non-null. */ ErrorContext = AllocSetContextCreate(TopMemoryContext, "ErrorContext", 8 * 1024, 8 * 1024, 8 * 1024); MemoryContextAllowInCriticalSection(ErrorContext, true); } /* * MemoryContextReset * Release all space allocated within a context and delete all its * descendant contexts (but not the named context itself). */ void MemoryContextReset(MemoryContext context) { AssertArg(MemoryContextIsValid(context)); /* save a function call in common case where there are no children */ if (context->firstchild != NULL) MemoryContextDeleteChildren(context); /* save a function call if no pallocs since startup or last reset */ if (!context->isReset) MemoryContextResetOnly(context); } /* * MemoryContextResetOnly * Release all space allocated within a context. * Nothing is done to the context's descendant contexts. */ void MemoryContextResetOnly(MemoryContext context) { AssertArg(MemoryContextIsValid(context)); /* Nothing to do if no pallocs since startup or last reset */ if (!context->isReset) { MemoryContextCallResetCallbacks(context); /* * If context->ident points into the context's memory, it will become * a dangling pointer. We could prevent that by setting it to NULL * here, but that would break valid coding patterns that keep the * ident elsewhere, e.g. in a parent context. Another idea is to use * MemoryContextContains(), but we don't require ident strings to be * in separately-palloc'd chunks, so that risks false positives. So * for now we assume the programmer got it right. */ context->methods->reset(context); context->isReset = true; VALGRIND_DESTROY_MEMPOOL(context); VALGRIND_CREATE_MEMPOOL(context, 0, false); } } /* * MemoryContextResetChildren * Release all space allocated within a context's descendants, * but don't delete the contexts themselves. The named context * itself is not touched. */ /* * MemoryContextDelete * Delete a context and its descendants, and release all space * allocated therein. * * The type-specific delete routine removes all storage for the context, * but we have to recurse to handle the children. * We must also delink the context from its parent, if it has one. */ void MemoryContextDelete(MemoryContext context) { AssertArg(MemoryContextIsValid(context)); /* We had better not be deleting TopMemoryContext ... */ Assert(context != TopMemoryContext); /* And not CurrentMemoryContext, either */ Assert(context != CurrentMemoryContext); /* save a function call in common case where there are no children */ if (context->firstchild != NULL) MemoryContextDeleteChildren(context); /* * It's not entirely clear whether 'tis better to do this before or after * delinking the context; but an error in a callback will likely result in * leaking the whole context (if it's not a root context) if we do it * after, so let's do it before. */ MemoryContextCallResetCallbacks(context); /* * We delink the context from its parent before deleting it, so that if * there's an error we won't have deleted/busted contexts still attached * to the context tree. Better a leak than a crash. */ MemoryContextSetParent(context, NULL); /* * Also reset the context's ident pointer, in case it points into the * context. This would only matter if someone tries to get stats on the * (already unlinked) context, which is unlikely, but let's be safe. */ context->ident = NULL; context->methods->delete_context(context); VALGRIND_DESTROY_MEMPOOL(context); } /* * MemoryContextDeleteChildren * Delete all the descendants of the named context and release all * space allocated therein. The named context itself is not touched. */ void MemoryContextDeleteChildren(MemoryContext context) { AssertArg(MemoryContextIsValid(context)); /* * MemoryContextDelete will delink the child from me, so just iterate as * long as there is a child. */ while (context->firstchild != NULL) MemoryContextDelete(context->firstchild); } /* * MemoryContextRegisterResetCallback * Register a function to be called before next context reset/delete. * Such callbacks will be called in reverse order of registration. * * The caller is responsible for allocating a MemoryContextCallback struct * to hold the info about this callback request, and for filling in the * "func" and "arg" fields in the struct to show what function to call with * what argument. Typically the callback struct should be allocated within * the specified context, since that means it will automatically be freed * when no longer needed. * * There is no API for deregistering a callback once registered. If you * want it to not do anything anymore, adjust the state pointed to by its * "arg" to indicate that. */ /* * MemoryContextCallResetCallbacks * Internal function to call all registered callbacks for context. */ static void MemoryContextCallResetCallbacks(MemoryContext context) { MemoryContextCallback *cb; /* * We pop each callback from the list before calling. That way, if an * error occurs inside the callback, we won't try to call it a second time * in the likely event that we reset or delete the context later. */ while ((cb = context->reset_cbs) != NULL) { context->reset_cbs = cb->next; cb->func(cb->arg); } } /* * MemoryContextSetIdentifier * Set the identifier string for a memory context. * * An identifier can be provided to help distinguish among different contexts * of the same kind in memory context stats dumps. The identifier string * must live at least as long as the context it is for; typically it is * allocated inside that context, so that it automatically goes away on * context deletion. Pass id = NULL to forget any old identifier. */ /* * MemoryContextSetParent * Change a context to belong to a new parent (or no parent). * * We provide this as an API function because it is sometimes useful to * change a context's lifespan after creation. For example, a context * might be created underneath a transient context, filled with data, * and then reparented underneath CacheMemoryContext to make it long-lived. * In this way no special effort is needed to get rid of the context in case * a failure occurs before its contents are completely set up. * * Callers often assume that this function cannot fail, so don't put any * elog(ERROR) calls in it. * * A possible caller error is to reparent a context under itself, creating * a loop in the context graph. We assert here that context != new_parent, * but checking for multi-level loops seems more trouble than it's worth. */ void MemoryContextSetParent(MemoryContext context, MemoryContext new_parent) { AssertArg(MemoryContextIsValid(context)); AssertArg(context != new_parent); /* Fast path if it's got correct parent already */ if (new_parent == context->parent) return; /* Delink from existing parent, if any */ if (context->parent) { MemoryContext parent = context->parent; if (context->prevchild != NULL) context->prevchild->nextchild = context->nextchild; else { Assert(parent->firstchild == context); parent->firstchild = context->nextchild; } if (context->nextchild != NULL) context->nextchild->prevchild = context->prevchild; } /* And relink */ if (new_parent) { AssertArg(MemoryContextIsValid(new_parent)); context->parent = new_parent; context->prevchild = NULL; context->nextchild = new_parent->firstchild; if (new_parent->firstchild != NULL) new_parent->firstchild->prevchild = context; new_parent->firstchild = context; } else { context->parent = NULL; context->prevchild = NULL; context->nextchild = NULL; } } /* * MemoryContextAllowInCriticalSection * Allow/disallow allocations in this memory context within a critical * section. * * Normally, memory allocations are not allowed within a critical section, * because a failure would lead to PANIC. There are a few exceptions to * that, like allocations related to debugging code that is not supposed to * be enabled in production. This function can be used to exempt specific * memory contexts from the assertion in palloc(). */ void MemoryContextAllowInCriticalSection(MemoryContext context, bool allow) { AssertArg(MemoryContextIsValid(context)); context->allowInCritSection = allow; } /* * GetMemoryChunkSpace * Given a currently-allocated chunk, determine the total space * it occupies (including all memory-allocation overhead). * * This is useful for measuring the total space occupied by a set of * allocated chunks. */ /* * MemoryContextGetParent * Get the parent context (if any) of the specified context */ /* * MemoryContextIsEmpty * Is a memory context empty of any allocated space? */ /* * Find the memory allocated to blocks for this memory context. If recurse is * true, also include children. */ /* * MemoryContextStats * Print statistics about the named context and all its descendants. * * This is just a debugging utility, so it's not very fancy. However, we do * make some effort to summarize when the output would otherwise be very long. * The statistics are sent to stderr. */ void MemoryContextStats(MemoryContext context) { /* A hard-wired limit on the number of children is usually good enough */ MemoryContextStatsDetail(context, 100); } /* * MemoryContextStatsDetail * * Entry point for use if you want to vary the number of child contexts shown. */ void MemoryContextStatsDetail(MemoryContext context, int max_children) { MemoryContextCounters grand_totals; memset(&grand_totals, 0, sizeof(grand_totals)); MemoryContextStatsInternal(context, 0, true, max_children, &grand_totals); fprintf(stderr, "Grand total: %zu bytes in %zd blocks; %zu free (%zd chunks); %zu used\n", grand_totals.totalspace, grand_totals.nblocks, grand_totals.freespace, grand_totals.freechunks, grand_totals.totalspace - grand_totals.freespace); } /* * MemoryContextStatsInternal * One recursion level for MemoryContextStats * * Print this context if print is true, but in any case accumulate counts into * *totals (if given). */ static void MemoryContextStatsInternal(MemoryContext context, int level, bool print, int max_children, MemoryContextCounters *totals) { MemoryContextCounters local_totals; MemoryContext child; int ichild; AssertArg(MemoryContextIsValid(context)); /* Examine the context itself */ context->methods->stats(context, print ? MemoryContextStatsPrint : NULL, (void *) &level, totals); /* * Examine children. If there are more than max_children of them, we do * not print the rest explicitly, but just summarize them. */ memset(&local_totals, 0, sizeof(local_totals)); for (child = context->firstchild, ichild = 0; child != NULL; child = child->nextchild, ichild++) { if (ichild < max_children) MemoryContextStatsInternal(child, level + 1, print, max_children, totals); else MemoryContextStatsInternal(child, level + 1, false, max_children, &local_totals); } /* Deal with excess children */ if (ichild > max_children) { if (print) { int i; for (i = 0; i <= level; i++) fprintf(stderr, " "); fprintf(stderr, "%d more child contexts containing %zu total in %zd blocks; %zu free (%zd chunks); %zu used\n", ichild - max_children, local_totals.totalspace, local_totals.nblocks, local_totals.freespace, local_totals.freechunks, local_totals.totalspace - local_totals.freespace); } if (totals) { totals->nblocks += local_totals.nblocks; totals->freechunks += local_totals.freechunks; totals->totalspace += local_totals.totalspace; totals->freespace += local_totals.freespace; } } } /* * MemoryContextStatsPrint * Print callback used by MemoryContextStatsInternal * * For now, the passthru pointer just points to "int level"; later we might * make that more complicated. */ static void MemoryContextStatsPrint(MemoryContext context, void *passthru, const char *stats_string) { int level = *(int *) passthru; const char *name = context->name; const char *ident = context->ident; int i; /* * It seems preferable to label dynahash contexts with just the hash table * name. Those are already unique enough, so the "dynahash" part isn't * very helpful, and this way is more consistent with pre-v11 practice. */ if (ident && strcmp(name, "dynahash") == 0) { name = ident; ident = NULL; } for (i = 0; i < level; i++) fprintf(stderr, " "); fprintf(stderr, "%s: %s", name, stats_string); if (ident) { /* * Some contexts may have very long identifiers (e.g., SQL queries). * Arbitrarily truncate at 100 bytes, but be careful not to break * multibyte characters. Also, replace ASCII control characters, such * as newlines, with spaces. */ int idlen = strlen(ident); bool truncated = false; if (idlen > 100) { idlen = pg_mbcliplen(ident, idlen, 100); truncated = true; } fprintf(stderr, ": "); while (idlen-- > 0) { unsigned char c = *ident++; if (c < ' ') c = ' '; fputc(c, stderr); } if (truncated) fprintf(stderr, "..."); } fputc('\n', stderr); } /* * MemoryContextCheck * Check all chunks in the named context. * * This is just a debugging utility, so it's not fancy. */ #ifdef MEMORY_CONTEXT_CHECKING #endif /* * MemoryContextContains * Detect whether an allocated chunk of memory belongs to a given * context or not. * * Caution: this test is reliable as long as 'pointer' does point to * a chunk of memory allocated from *some* context. If 'pointer' points * at memory obtained in some other way, there is a small chance of a * false-positive result, since the bits right before it might look like * a valid chunk header by chance. */ /* * MemoryContextCreate * Context-type-independent part of context creation. * * This is only intended to be called by context-type-specific * context creation routines, not by the unwashed masses. * * The memory context creation procedure goes like this: * 1. Context-type-specific routine makes some initial space allocation, * including enough space for the context header. If it fails, * it can ereport() with no damage done. * 2. Context-type-specific routine sets up all type-specific fields of * the header (those beyond MemoryContextData proper), as well as any * other management fields it needs to have a fully valid context. * Usually, failure in this step is impossible, but if it's possible * the initial space allocation should be freed before ereport'ing. * 3. Context-type-specific routine calls MemoryContextCreate() to fill in * the generic header fields and link the context into the context tree. * 4. We return to the context-type-specific routine, which finishes * up type-specific initialization. This routine can now do things * that might fail (like allocate more memory), so long as it's * sure the node is left in a state that delete will handle. * * node: the as-yet-uninitialized common part of the context header node. * tag: NodeTag code identifying the memory context type. * methods: context-type-specific methods (usually statically allocated). * parent: parent context, or NULL if this will be a top-level context. * name: name of context (must be statically allocated). * * Context routines generally assume that MemoryContextCreate can't fail, * so this can contain Assert but not elog/ereport. */ void MemoryContextCreate(MemoryContext node, NodeTag tag, const MemoryContextMethods *methods, MemoryContext parent, const char *name) { /* Creating new memory contexts is not allowed in a critical section */ Assert(CritSectionCount == 0); /* Initialize all standard fields of memory context header */ node->type = tag; node->isReset = true; node->methods = methods; node->parent = parent; node->firstchild = NULL; node->mem_allocated = 0; node->prevchild = NULL; node->name = name; node->ident = NULL; node->reset_cbs = NULL; /* OK to link node into context tree */ if (parent) { node->nextchild = parent->firstchild; if (parent->firstchild != NULL) parent->firstchild->prevchild = node; parent->firstchild = node; /* inherit allowInCritSection flag from parent */ node->allowInCritSection = parent->allowInCritSection; } else { node->nextchild = NULL; node->allowInCritSection = false; } VALGRIND_CREATE_MEMPOOL(node, 0, false); } /* * MemoryContextAlloc * Allocate space within the specified context. * * This could be turned into a macro, but we'd have to import * nodes/memnodes.h into postgres.h which seems a bad idea. */ void * MemoryContextAlloc(MemoryContext context, Size size) { void *ret; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); /* * Here, and elsewhere in this module, we show the target context's * "name" but not its "ident" (if any) in user-visible error messages. * The "ident" string might contain security-sensitive data, such as * values in SQL commands. */ ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); return ret; } /* * MemoryContextAllocZero * Like MemoryContextAlloc, but clears allocated memory * * We could just call MemoryContextAlloc then clear the memory, but this * is a very common combination, so we provide the combined operation. */ void * MemoryContextAllocZero(MemoryContext context, Size size) { void *ret; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); MemSetAligned(ret, 0, size); return ret; } /* * MemoryContextAllocZeroAligned * MemoryContextAllocZero where length is suitable for MemSetLoop * * This might seem overly specialized, but it's not because newNode() * is so often called with compile-time-constant sizes. */ void * MemoryContextAllocZeroAligned(MemoryContext context, Size size) { void *ret; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); MemSetLoop(ret, 0, size); return ret; } /* * MemoryContextAllocExtended * Allocate space within the specified context using the given flags. */ void * MemoryContextAllocExtended(MemoryContext context, Size size, int flags) { void *ret; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (((flags & MCXT_ALLOC_HUGE) != 0 && !AllocHugeSizeIsValid(size)) || ((flags & MCXT_ALLOC_HUGE) == 0 && !AllocSizeIsValid(size))) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { if ((flags & MCXT_ALLOC_NO_OOM) == 0) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } return NULL; } VALGRIND_MEMPOOL_ALLOC(context, ret, size); if ((flags & MCXT_ALLOC_ZERO) != 0) MemSetAligned(ret, 0, size); return ret; } void * palloc(Size size) { /* duplicates MemoryContextAlloc to avoid increased overhead */ void *ret; MemoryContext context = CurrentMemoryContext; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); return ret; } void * palloc0(Size size) { /* duplicates MemoryContextAllocZero to avoid increased overhead */ void *ret; MemoryContext context = CurrentMemoryContext; AssertArg(MemoryContextIsValid(context)); AssertNotInCriticalSection(context); if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); context->isReset = false; ret = context->methods->alloc(context, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_ALLOC(context, ret, size); MemSetAligned(ret, 0, size); return ret; } /* * pfree * Release an allocated chunk. */ void pfree(void *pointer) { MemoryContext context = GetMemoryChunkContext(pointer); context->methods->free_p(context, pointer); VALGRIND_MEMPOOL_FREE(context, pointer); } /* * repalloc * Adjust the size of a previously allocated chunk. */ void * repalloc(void *pointer, Size size) { MemoryContext context = GetMemoryChunkContext(pointer); void *ret; if (!AllocSizeIsValid(size)) elog(ERROR, "invalid memory alloc request size %zu", size); AssertNotInCriticalSection(context); /* isReset must be false already */ Assert(!context->isReset); ret = context->methods->realloc(context, pointer, size); if (unlikely(ret == NULL)) { MemoryContextStats(TopMemoryContext); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"), errdetail("Failed on request of size %zu in memory context \"%s\".", size, context->name))); } VALGRIND_MEMPOOL_CHANGE(context, pointer, ret, size); return ret; } /* * MemoryContextAllocHuge * Allocate (possibly-expansive) space within the specified context. * * See considerations in comment at MaxAllocHugeSize. */ /* * repalloc_huge * Adjust the size of a previously allocated chunk, permitting a large * value. The previous allocation need not have been "huge". */ /* * MemoryContextStrdup * Like strdup(), but allocate from the specified context */ char * MemoryContextStrdup(MemoryContext context, const char *string) { char *nstr; Size len = strlen(string) + 1; nstr = (char *) MemoryContextAlloc(context, len); memcpy(nstr, string, len); return nstr; } char * pstrdup(const char *in) { return MemoryContextStrdup(CurrentMemoryContext, in); } /* * pnstrdup * Like pstrdup(), but append null byte to a * not-necessarily-null-terminated input string. */ /* * Make copy of string with all trailing newline characters removed. */ libpg_query-13-2.1.0/src/postgres/src_common_encnames.c000066400000000000000000000067251413137616400231060ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_enc2name_tbl *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * encnames.c * Encoding names and routines for working with them. * * Portions Copyright (c) 2001-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/common/encnames.c * *------------------------------------------------------------------------- */ #include "c.h" #include #include #include "mb/pg_wchar.h" /* ---------- * All encoding names, sorted: *** A L P H A B E T I C *** * * All names must be without irrelevant chars, search routines use * isalnum() chars only. It means ISO-8859-1, iso_8859-1 and Iso8859_1 * are always converted to 'iso88591'. All must be lower case. * * The table doesn't contain 'cs' aliases (like csISOLatin1). It's needed? * * Karel Zak, Aug 2001 * ---------- */ typedef struct pg_encname { const char *name; pg_enc encoding; } pg_encname; /* ---------- * These are "official" encoding names. * XXX must be sorted by the same order as enum pg_enc (in mb/pg_wchar.h) * ---------- */ #ifndef WIN32 #define DEF_ENC2NAME(name, codepage) { #name, PG_##name } #else #define DEF_ENC2NAME(name, codepage) { #name, PG_##name, codepage } #endif const pg_enc2name pg_enc2name_tbl[] = { DEF_ENC2NAME(SQL_ASCII, 0), DEF_ENC2NAME(EUC_JP, 20932), DEF_ENC2NAME(EUC_CN, 20936), DEF_ENC2NAME(EUC_KR, 51949), DEF_ENC2NAME(EUC_TW, 0), DEF_ENC2NAME(EUC_JIS_2004, 20932), DEF_ENC2NAME(UTF8, 65001), DEF_ENC2NAME(MULE_INTERNAL, 0), DEF_ENC2NAME(LATIN1, 28591), DEF_ENC2NAME(LATIN2, 28592), DEF_ENC2NAME(LATIN3, 28593), DEF_ENC2NAME(LATIN4, 28594), DEF_ENC2NAME(LATIN5, 28599), DEF_ENC2NAME(LATIN6, 0), DEF_ENC2NAME(LATIN7, 0), DEF_ENC2NAME(LATIN8, 0), DEF_ENC2NAME(LATIN9, 28605), DEF_ENC2NAME(LATIN10, 0), DEF_ENC2NAME(WIN1256, 1256), DEF_ENC2NAME(WIN1258, 1258), DEF_ENC2NAME(WIN866, 866), DEF_ENC2NAME(WIN874, 874), DEF_ENC2NAME(KOI8R, 20866), DEF_ENC2NAME(WIN1251, 1251), DEF_ENC2NAME(WIN1252, 1252), DEF_ENC2NAME(ISO_8859_5, 28595), DEF_ENC2NAME(ISO_8859_6, 28596), DEF_ENC2NAME(ISO_8859_7, 28597), DEF_ENC2NAME(ISO_8859_8, 28598), DEF_ENC2NAME(WIN1250, 1250), DEF_ENC2NAME(WIN1253, 1253), DEF_ENC2NAME(WIN1254, 1254), DEF_ENC2NAME(WIN1255, 1255), DEF_ENC2NAME(WIN1257, 1257), DEF_ENC2NAME(KOI8U, 21866), DEF_ENC2NAME(SJIS, 932), DEF_ENC2NAME(BIG5, 950), DEF_ENC2NAME(GBK, 936), DEF_ENC2NAME(UHC, 949), DEF_ENC2NAME(GB18030, 54936), DEF_ENC2NAME(JOHAB, 0), DEF_ENC2NAME(SHIFT_JIS_2004, 932) }; /* ---------- * These are encoding names for gettext. * * This covers all encodings except MULE_INTERNAL, which is alien to gettext. * ---------- */ /* * Table of encoding names for ICU (currently covers backend encodings only) * * Reference: * * NULL entries are not supported by ICU, or their mapping is unclear. */ /* * Is this encoding supported by ICU? */ /* * Returns ICU's name for encoding, or NULL if not supported */ /* ---------- * Encoding checks, for error returns -1 else encoding id * ---------- */ /* * Remove irrelevant chars from encoding name, store at *newkey * * (Caller's responsibility to provide a large enough buffer) */ /* * Search encoding by encoding name * * Returns encoding ID, or -1 if not recognized */ libpg_query-13-2.1.0/src/postgres/src_common_hashfn.c000066400000000000000000000274231413137616400225620ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - hash_bytes *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * hashfn.c * Generic hashing functions, and hash functions for use in dynahash.c * hashtables * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/common/hashfn.c * * NOTES * It is expected that every bit of a hash function's 32-bit result is * as random as every other; failure to ensure this is likely to lead * to poor performance of hash tables. In most cases a hash * function should use hash_bytes() or its variant hash_bytes_uint32(), * or the wrappers hash_any() and hash_uint32 defined in hashfn.h. * *------------------------------------------------------------------------- */ #include "postgres.h" #include "common/hashfn.h" /* * This hash function was written by Bob Jenkins * (bob_jenkins@burtleburtle.net), and superficially adapted * for PostgreSQL by Neil Conway. For more information on this * hash function, see http://burtleburtle.net/bob/hash/doobs.html, * or Bob's article in Dr. Dobb's Journal, Sept. 1997. * * In the current code, we have adopted Bob's 2006 update of his hash * function to fetch the data a word at a time when it is suitably aligned. * This makes for a useful speedup, at the cost of having to maintain * four code paths (aligned vs unaligned, and little-endian vs big-endian). * It also uses two separate mixing functions mix() and final(), instead * of a slower multi-purpose function. */ /* Get a bit mask of the bits set in non-uint32 aligned addresses */ #define UINT32_ALIGN_MASK (sizeof(uint32) - 1) /* Rotate a uint32 value left by k bits - note multiple evaluation! */ #define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k)))) /*---------- * mix -- mix 3 32-bit values reversibly. * * This is reversible, so any information in (a,b,c) before mix() is * still in (a,b,c) after mix(). * * If four pairs of (a,b,c) inputs are run through mix(), or through * mix() in reverse, there are at least 32 bits of the output that * are sometimes the same for one pair and different for another pair. * This was tested for: * * pairs that differed by one bit, by two bits, in any combination * of top bits of (a,b,c), or in any combination of bottom bits of * (a,b,c). * * "differ" is defined as +, -, ^, or ~^. For + and -, I transformed * the output delta to a Gray code (a^(a>>1)) so a string of 1's (as * is commonly produced by subtraction) look like a single 1-bit * difference. * * the base values were pseudorandom, all zero but one bit set, or * all zero plus a counter that starts at zero. * * This does not achieve avalanche. There are input bits of (a,b,c) * that fail to affect some output bits of (a,b,c), especially of a. The * most thoroughly mixed value is c, but it doesn't really even achieve * avalanche in c. * * This allows some parallelism. Read-after-writes are good at doubling * the number of bits affected, so the goal of mixing pulls in the opposite * direction from the goal of parallelism. I did what I could. Rotates * seem to cost as much as shifts on every machine I could lay my hands on, * and rotates are much kinder to the top and bottom bits, so I used rotates. *---------- */ #define mix(a,b,c) \ { \ a -= c; a ^= rot(c, 4); c += b; \ b -= a; b ^= rot(a, 6); a += c; \ c -= b; c ^= rot(b, 8); b += a; \ a -= c; a ^= rot(c,16); c += b; \ b -= a; b ^= rot(a,19); a += c; \ c -= b; c ^= rot(b, 4); b += a; \ } /*---------- * final -- final mixing of 3 32-bit values (a,b,c) into c * * Pairs of (a,b,c) values differing in only a few bits will usually * produce values of c that look totally different. This was tested for * * pairs that differed by one bit, by two bits, in any combination * of top bits of (a,b,c), or in any combination of bottom bits of * (a,b,c). * * "differ" is defined as +, -, ^, or ~^. For + and -, I transformed * the output delta to a Gray code (a^(a>>1)) so a string of 1's (as * is commonly produced by subtraction) look like a single 1-bit * difference. * * the base values were pseudorandom, all zero but one bit set, or * all zero plus a counter that starts at zero. * * The use of separate functions for mix() and final() allow for a * substantial performance increase since final() does not need to * do well in reverse, but is does need to affect all output bits. * mix(), on the other hand, does not need to affect all output * bits (affecting 32 bits is enough). The original hash function had * a single mixing operation that had to satisfy both sets of requirements * and was slower as a result. *---------- */ #define final(a,b,c) \ { \ c ^= b; c -= rot(b,14); \ a ^= c; a -= rot(c,11); \ b ^= a; b -= rot(a,25); \ c ^= b; c -= rot(b,16); \ a ^= c; a -= rot(c, 4); \ b ^= a; b -= rot(a,14); \ c ^= b; c -= rot(b,24); \ } /* * hash_bytes() -- hash a variable-length key into a 32-bit value * k : the key (the unaligned variable-length array of bytes) * len : the length of the key, counting by bytes * * Returns a uint32 value. Every bit of the key affects every bit of * the return value. Every 1-bit and 2-bit delta achieves avalanche. * About 6*len+35 instructions. The best hash table sizes are powers * of 2. There is no need to do mod a prime (mod is sooo slow!). * If you need less than 32 bits, use a bitmask. * * This procedure must never throw elog(ERROR); the ResourceOwner code * relies on this not to fail. * * Note: we could easily change this function to return a 64-bit hash value * by using the final values of both b and c. b is perhaps a little less * well mixed than c, however. */ uint32 hash_bytes(const unsigned char *k, int keylen) { uint32 a, b, c, len; /* Set up the internal state */ len = keylen; a = b = c = 0x9e3779b9 + len + 3923095; /* If the source pointer is word-aligned, we use word-wide fetches */ if (((uintptr_t) k & UINT32_ALIGN_MASK) == 0) { /* Code path for aligned source data */ const uint32 *ka = (const uint32 *) k; /* handle most of the key */ while (len >= 12) { a += ka[0]; b += ka[1]; c += ka[2]; mix(a, b, c); ka += 3; len -= 12; } /* handle the last 11 bytes */ k = (const unsigned char *) ka; #ifdef WORDS_BIGENDIAN switch (len) { case 11: c += ((uint32) k[10] << 8); /* fall through */ case 10: c += ((uint32) k[9] << 16); /* fall through */ case 9: c += ((uint32) k[8] << 24); /* fall through */ case 8: /* the lowest byte of c is reserved for the length */ b += ka[1]; a += ka[0]; break; case 7: b += ((uint32) k[6] << 8); /* fall through */ case 6: b += ((uint32) k[5] << 16); /* fall through */ case 5: b += ((uint32) k[4] << 24); /* fall through */ case 4: a += ka[0]; break; case 3: a += ((uint32) k[2] << 8); /* fall through */ case 2: a += ((uint32) k[1] << 16); /* fall through */ case 1: a += ((uint32) k[0] << 24); /* case 0: nothing left to add */ } #else /* !WORDS_BIGENDIAN */ switch (len) { case 11: c += ((uint32) k[10] << 24); /* fall through */ case 10: c += ((uint32) k[9] << 16); /* fall through */ case 9: c += ((uint32) k[8] << 8); /* fall through */ case 8: /* the lowest byte of c is reserved for the length */ b += ka[1]; a += ka[0]; break; case 7: b += ((uint32) k[6] << 16); /* fall through */ case 6: b += ((uint32) k[5] << 8); /* fall through */ case 5: b += k[4]; /* fall through */ case 4: a += ka[0]; break; case 3: a += ((uint32) k[2] << 16); /* fall through */ case 2: a += ((uint32) k[1] << 8); /* fall through */ case 1: a += k[0]; /* case 0: nothing left to add */ } #endif /* WORDS_BIGENDIAN */ } else { /* Code path for non-aligned source data */ /* handle most of the key */ while (len >= 12) { #ifdef WORDS_BIGENDIAN a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); #else /* !WORDS_BIGENDIAN */ a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); #endif /* WORDS_BIGENDIAN */ mix(a, b, c); k += 12; len -= 12; } /* handle the last 11 bytes */ #ifdef WORDS_BIGENDIAN switch (len) { case 11: c += ((uint32) k[10] << 8); /* fall through */ case 10: c += ((uint32) k[9] << 16); /* fall through */ case 9: c += ((uint32) k[8] << 24); /* fall through */ case 8: /* the lowest byte of c is reserved for the length */ b += k[7]; /* fall through */ case 7: b += ((uint32) k[6] << 8); /* fall through */ case 6: b += ((uint32) k[5] << 16); /* fall through */ case 5: b += ((uint32) k[4] << 24); /* fall through */ case 4: a += k[3]; /* fall through */ case 3: a += ((uint32) k[2] << 8); /* fall through */ case 2: a += ((uint32) k[1] << 16); /* fall through */ case 1: a += ((uint32) k[0] << 24); /* case 0: nothing left to add */ } #else /* !WORDS_BIGENDIAN */ switch (len) { case 11: c += ((uint32) k[10] << 24); /* fall through */ case 10: c += ((uint32) k[9] << 16); /* fall through */ case 9: c += ((uint32) k[8] << 8); /* fall through */ case 8: /* the lowest byte of c is reserved for the length */ b += ((uint32) k[7] << 24); /* fall through */ case 7: b += ((uint32) k[6] << 16); /* fall through */ case 6: b += ((uint32) k[5] << 8); /* fall through */ case 5: b += k[4]; /* fall through */ case 4: a += ((uint32) k[3] << 24); /* fall through */ case 3: a += ((uint32) k[2] << 16); /* fall through */ case 2: a += ((uint32) k[1] << 8); /* fall through */ case 1: a += k[0]; /* case 0: nothing left to add */ } #endif /* WORDS_BIGENDIAN */ } final(a, b, c); /* report the result */ return c; } /* * hash_bytes_extended() -- hash into a 64-bit value, using an optional seed * k : the key (the unaligned variable-length array of bytes) * len : the length of the key, counting by bytes * seed : a 64-bit seed (0 means no seed) * * Returns a uint64 value. Otherwise similar to hash_bytes. */ #ifdef WORDS_BIGENDIAN #else /* !WORDS_BIGENDIAN */ #endif /* WORDS_BIGENDIAN */ #ifdef WORDS_BIGENDIAN #else /* !WORDS_BIGENDIAN */ #endif /* WORDS_BIGENDIAN */ #ifdef WORDS_BIGENDIAN #else /* !WORDS_BIGENDIAN */ #endif /* WORDS_BIGENDIAN */ /* * hash_bytes_uint32() -- hash a 32-bit value to a 32-bit value * * This has the same result as * hash_bytes(&k, sizeof(uint32)) * but is faster and doesn't force the caller to store k into memory. */ /* * hash_bytes_uint32_extended() -- hash 32-bit value to 64-bit value, with seed * * Like hash_bytes_uint32, this is a convenience function. */ /* * string_hash: hash function for keys that are NUL-terminated strings. * * NOTE: this is the default hash function if none is specified. */ /* * tag_hash: hash function for fixed-size tag values */ /* * uint32_hash: hash function for keys that are uint32 or int32 * * (tag_hash works for this case too, but is slower) */ libpg_query-13-2.1.0/src/postgres/src_common_keywords.c000066400000000000000000000017011413137616400231510ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ScanKeywordCategories *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * keywords.c * PostgreSQL's list of SQL keywords * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/common/keywords.c * *------------------------------------------------------------------------- */ #include "c.h" #include "common/keywords.h" /* ScanKeywordList lookup data for SQL keywords */ #include "kwlist_d.h" /* Keyword categories for SQL keywords */ #define PG_KEYWORD(kwname, value, category) category, const uint8 ScanKeywordCategories[SCANKEYWORDS_NUM_KEYWORDS] = { #include "parser/kwlist.h" }; #undef PG_KEYWORD libpg_query-13-2.1.0/src/postgres/src_common_kwlist_d.h000066400000000000000000000423721413137616400231400ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ScanKeywords * - ScanKeywords_kw_string * - ScanKeywords_kw_offsets * - ScanKeywords_hash_func *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/tools/gen_keywordlist.pl * *------------------------------------------------------------------------- */ #ifndef KWLIST_D_H #define KWLIST_D_H #include "common/kwlookup.h" static const char ScanKeywords_kw_string[] = "abort\0" "absolute\0" "access\0" "action\0" "add\0" "admin\0" "after\0" "aggregate\0" "all\0" "also\0" "alter\0" "always\0" "analyse\0" "analyze\0" "and\0" "any\0" "array\0" "as\0" "asc\0" "assertion\0" "assignment\0" "asymmetric\0" "at\0" "attach\0" "attribute\0" "authorization\0" "backward\0" "before\0" "begin\0" "between\0" "bigint\0" "binary\0" "bit\0" "boolean\0" "both\0" "by\0" "cache\0" "call\0" "called\0" "cascade\0" "cascaded\0" "case\0" "cast\0" "catalog\0" "chain\0" "char\0" "character\0" "characteristics\0" "check\0" "checkpoint\0" "class\0" "close\0" "cluster\0" "coalesce\0" "collate\0" "collation\0" "column\0" "columns\0" "comment\0" "comments\0" "commit\0" "committed\0" "concurrently\0" "configuration\0" "conflict\0" "connection\0" "constraint\0" "constraints\0" "content\0" "continue\0" "conversion\0" "copy\0" "cost\0" "create\0" "cross\0" "csv\0" "cube\0" "current\0" "current_catalog\0" "current_date\0" "current_role\0" "current_schema\0" "current_time\0" "current_timestamp\0" "current_user\0" "cursor\0" "cycle\0" "data\0" "database\0" "day\0" "deallocate\0" "dec\0" "decimal\0" "declare\0" "default\0" "defaults\0" "deferrable\0" "deferred\0" "definer\0" "delete\0" "delimiter\0" "delimiters\0" "depends\0" "desc\0" "detach\0" "dictionary\0" "disable\0" "discard\0" "distinct\0" "do\0" "document\0" "domain\0" "double\0" "drop\0" "each\0" "else\0" "enable\0" "encoding\0" "encrypted\0" "end\0" "enum\0" "escape\0" "event\0" "except\0" "exclude\0" "excluding\0" "exclusive\0" "execute\0" "exists\0" "explain\0" "expression\0" "extension\0" "external\0" "extract\0" "false\0" "family\0" "fetch\0" "filter\0" "first\0" "float\0" "following\0" "for\0" "force\0" "foreign\0" "forward\0" "freeze\0" "from\0" "full\0" "function\0" "functions\0" "generated\0" "global\0" "grant\0" "granted\0" "greatest\0" "group\0" "grouping\0" "groups\0" "handler\0" "having\0" "header\0" "hold\0" "hour\0" "identity\0" "if\0" "ilike\0" "immediate\0" "immutable\0" "implicit\0" "import\0" "in\0" "include\0" "including\0" "increment\0" "index\0" "indexes\0" "inherit\0" "inherits\0" "initially\0" "inline\0" "inner\0" "inout\0" "input\0" "insensitive\0" "insert\0" "instead\0" "int\0" "integer\0" "intersect\0" "interval\0" "into\0" "invoker\0" "is\0" "isnull\0" "isolation\0" "join\0" "key\0" "label\0" "language\0" "large\0" "last\0" "lateral\0" "leading\0" "leakproof\0" "least\0" "left\0" "level\0" "like\0" "limit\0" "listen\0" "load\0" "local\0" "localtime\0" "localtimestamp\0" "location\0" "lock\0" "locked\0" "logged\0" "mapping\0" "match\0" "materialized\0" "maxvalue\0" "method\0" "minute\0" "minvalue\0" "mode\0" "month\0" "move\0" "name\0" "names\0" "national\0" "natural\0" "nchar\0" "new\0" "next\0" "nfc\0" "nfd\0" "nfkc\0" "nfkd\0" "no\0" "none\0" "normalize\0" "normalized\0" "not\0" "nothing\0" "notify\0" "notnull\0" "nowait\0" "null\0" "nullif\0" "nulls\0" "numeric\0" "object\0" "of\0" "off\0" "offset\0" "oids\0" "old\0" "on\0" "only\0" "operator\0" "option\0" "options\0" "or\0" "order\0" "ordinality\0" "others\0" "out\0" "outer\0" "over\0" "overlaps\0" "overlay\0" "overriding\0" "owned\0" "owner\0" "parallel\0" "parser\0" "partial\0" "partition\0" "passing\0" "password\0" "placing\0" "plans\0" "policy\0" "position\0" "preceding\0" "precision\0" "prepare\0" "prepared\0" "preserve\0" "primary\0" "prior\0" "privileges\0" "procedural\0" "procedure\0" "procedures\0" "program\0" "publication\0" "quote\0" "range\0" "read\0" "real\0" "reassign\0" "recheck\0" "recursive\0" "ref\0" "references\0" "referencing\0" "refresh\0" "reindex\0" "relative\0" "release\0" "rename\0" "repeatable\0" "replace\0" "replica\0" "reset\0" "restart\0" "restrict\0" "returning\0" "returns\0" "revoke\0" "right\0" "role\0" "rollback\0" "rollup\0" "routine\0" "routines\0" "row\0" "rows\0" "rule\0" "savepoint\0" "schema\0" "schemas\0" "scroll\0" "search\0" "second\0" "security\0" "select\0" "sequence\0" "sequences\0" "serializable\0" "server\0" "session\0" "session_user\0" "set\0" "setof\0" "sets\0" "share\0" "show\0" "similar\0" "simple\0" "skip\0" "smallint\0" "snapshot\0" "some\0" "sql\0" "stable\0" "standalone\0" "start\0" "statement\0" "statistics\0" "stdin\0" "stdout\0" "storage\0" "stored\0" "strict\0" "strip\0" "subscription\0" "substring\0" "support\0" "symmetric\0" "sysid\0" "system\0" "table\0" "tables\0" "tablesample\0" "tablespace\0" "temp\0" "template\0" "temporary\0" "text\0" "then\0" "ties\0" "time\0" "timestamp\0" "to\0" "trailing\0" "transaction\0" "transform\0" "treat\0" "trigger\0" "trim\0" "true\0" "truncate\0" "trusted\0" "type\0" "types\0" "uescape\0" "unbounded\0" "uncommitted\0" "unencrypted\0" "union\0" "unique\0" "unknown\0" "unlisten\0" "unlogged\0" "until\0" "update\0" "user\0" "using\0" "vacuum\0" "valid\0" "validate\0" "validator\0" "value\0" "values\0" "varchar\0" "variadic\0" "varying\0" "verbose\0" "version\0" "view\0" "views\0" "volatile\0" "when\0" "where\0" "whitespace\0" "window\0" "with\0" "within\0" "without\0" "work\0" "wrapper\0" "write\0" "xml\0" "xmlattributes\0" "xmlconcat\0" "xmlelement\0" "xmlexists\0" "xmlforest\0" "xmlnamespaces\0" "xmlparse\0" "xmlpi\0" "xmlroot\0" "xmlserialize\0" "xmltable\0" "year\0" "yes\0" "zone"; static const uint16 ScanKeywords_kw_offsets[] = { 0, 6, 15, 22, 29, 33, 39, 45, 55, 59, 64, 70, 77, 85, 93, 97, 101, 107, 110, 114, 124, 135, 146, 149, 156, 166, 180, 189, 196, 202, 210, 217, 224, 228, 236, 241, 244, 250, 255, 262, 270, 279, 284, 289, 297, 303, 308, 318, 334, 340, 351, 357, 363, 371, 380, 388, 398, 405, 413, 421, 430, 437, 447, 460, 474, 483, 494, 505, 517, 525, 534, 545, 550, 555, 562, 568, 572, 577, 585, 601, 614, 627, 642, 655, 673, 686, 693, 699, 704, 713, 717, 728, 732, 740, 748, 756, 765, 776, 785, 793, 800, 810, 821, 829, 834, 841, 852, 860, 868, 877, 880, 889, 896, 903, 908, 913, 918, 925, 934, 944, 948, 953, 960, 966, 973, 981, 991, 1001, 1009, 1016, 1024, 1035, 1045, 1054, 1062, 1068, 1075, 1081, 1088, 1094, 1100, 1110, 1114, 1120, 1128, 1136, 1143, 1148, 1153, 1162, 1172, 1182, 1189, 1195, 1203, 1212, 1218, 1227, 1234, 1242, 1249, 1256, 1261, 1266, 1275, 1278, 1284, 1294, 1304, 1313, 1320, 1323, 1331, 1341, 1351, 1357, 1365, 1373, 1382, 1392, 1399, 1405, 1411, 1417, 1429, 1436, 1444, 1448, 1456, 1466, 1475, 1480, 1488, 1491, 1498, 1508, 1513, 1517, 1523, 1532, 1538, 1543, 1551, 1559, 1569, 1575, 1580, 1586, 1591, 1597, 1604, 1609, 1615, 1625, 1640, 1649, 1654, 1661, 1668, 1676, 1682, 1695, 1704, 1711, 1718, 1727, 1732, 1738, 1743, 1748, 1754, 1763, 1771, 1777, 1781, 1786, 1790, 1794, 1799, 1804, 1807, 1812, 1822, 1833, 1837, 1845, 1852, 1860, 1867, 1872, 1879, 1885, 1893, 1900, 1903, 1907, 1914, 1919, 1923, 1926, 1931, 1940, 1947, 1955, 1958, 1964, 1975, 1982, 1986, 1992, 1997, 2006, 2014, 2025, 2031, 2037, 2046, 2053, 2061, 2071, 2079, 2088, 2096, 2102, 2109, 2118, 2128, 2138, 2146, 2155, 2164, 2172, 2178, 2189, 2200, 2210, 2221, 2229, 2241, 2247, 2253, 2258, 2263, 2272, 2280, 2290, 2294, 2305, 2317, 2325, 2333, 2342, 2350, 2357, 2368, 2376, 2384, 2390, 2398, 2407, 2417, 2425, 2432, 2438, 2443, 2452, 2459, 2467, 2476, 2480, 2485, 2490, 2500, 2507, 2515, 2522, 2529, 2536, 2545, 2552, 2561, 2571, 2584, 2591, 2599, 2612, 2616, 2622, 2627, 2633, 2638, 2646, 2653, 2658, 2667, 2676, 2681, 2685, 2692, 2703, 2709, 2719, 2730, 2736, 2743, 2751, 2758, 2765, 2771, 2784, 2794, 2802, 2812, 2818, 2825, 2831, 2838, 2850, 2861, 2866, 2875, 2885, 2890, 2895, 2900, 2905, 2915, 2918, 2927, 2939, 2949, 2955, 2963, 2968, 2973, 2982, 2990, 2995, 3001, 3009, 3019, 3031, 3043, 3049, 3056, 3064, 3073, 3082, 3088, 3095, 3100, 3106, 3113, 3119, 3128, 3138, 3144, 3151, 3159, 3168, 3176, 3184, 3192, 3197, 3203, 3212, 3217, 3223, 3234, 3241, 3246, 3253, 3261, 3266, 3274, 3280, 3284, 3298, 3308, 3319, 3329, 3339, 3353, 3362, 3368, 3376, 3389, 3398, 3403, 3407, }; #define SCANKEYWORDS_NUM_KEYWORDS 450 static int ScanKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[901] = { -172, 32767, 32767, 32767, 0, 56, 362, 32767, 0, 90, -251, 332, 32767, 66, 298, 0, 32767, 88, 27, 22, -125, 317, 0, 32767, -35, 0, 32767, 32767, 32767, 52, 32767, 275, 32767, -277, 32767, 32767, 316, 177, 32767, 0, 398, 58, 272, -88, 0, -147, 242, 143, 401, 0, 32767, 0, 293, 355, 0, 0, 303, 32767, 225, 580, 0, 378, 0, 0, 32767, -25, -312, 32767, -210, 0, 32767, -19, 32767, 91, 307, 354, 32767, 32767, -18, 36, 32767, 32767, 402, 292, 165, 274, 0, 32767, 10, -20, 32767, 294, 32767, -622, 326, 32767, -128, 0, 33, 32767, 32767, 325, 32767, 276, 343, 32767, 96, 173, 32767, 32767, 32767, 0, 32767, 320, -128, 32767, 357, 24, -9, 427, 32767, 32767, 0, 32767, 0, 0, 32767, 32767, 405, 32767, 125, 32767, 0, 32767, -40, 32767, 0, 80, 0, 32767, 0, 95, -146, 0, 32767, 26, 165, 32767, 41, 32767, 418, 32767, 32767, 40, 32767, 147, 32767, 32767, 32767, 91, 110, 9, 305, -340, 32767, 103, 32767, 0, 329, 32767, 32767, 310, 32767, 32767, 147, -262, 422, 393, 382, 136, 32767, 177, 0, 32767, 32767, 102, 0, 32767, 83, 141, 28, 167, -421, 32767, 38, 111, 0, 479, 32767, 32767, 29, 439, 32767, 427, -6, 182, 32767, 74, 32767, 360, 236, 32767, 32767, 327, -63, 162, 154, 184, 90, 263, 115, 127, 539, 347, -72, 32767, -159, 32767, -249, 152, 32767, 357, 404, -110, 32767, 404, 345, 32767, 80, 352, 422, 61, 32767, 32767, 32767, 243, 126, 117, 32767, 0, 32767, 32767, 208, 32767, 32767, -20, 430, -195, 32767, 32767, 32767, 118, -62, 32767, 32767, 98, 136, 0, 0, 32767, 261, 32767, 0, 32767, 230, 37, 750, 154, 32767, -86, 87, 32767, 6, 61, 32767, 205, 32767, 517, 107, 66, 304, 32767, 0, 32767, 32767, 32767, 333, 32767, 357, 239, 32767, 32767, 437, -26, 32767, 210, 0, 20, 369, 10, 32767, -78, 616, 70, 0, 32767, 86, 32767, 0, 32767, 14, 60, 32, 32767, 373, 32767, -218, 320, 32767, 268, 32767, 32767, 425, -67, 0, 32767, 252, 32767, -93, 193, -362, -140, 32767, -328, 32767, 0, 319, 336, 32767, 121, 0, 32767, 207, 32767, 481, -176, 276, 47, 235, 32767, 0, 221, 32767, 228, 32767, 84, 32767, 32767, 32767, 32767, 32767, 32767, 290, 32767, 32767, 84, -170, 82, 246, -43, 201, 155, -7, 299, 32767, 32767, 241, 32767, -418, 32767, 32767, -303, 32767, 32767, -40, 308, 32767, 0, 178, -67, 32767, 273, 32767, 0, 32767, 69, 387, 32767, 341, 0, 0, -19, 324, -88, 166, 32767, 6, 20, 32767, 17, 22, 359, 32767, 32767, 172, 0, 32767, 0, 206, 88, 0, 32767, 35, 0, 275, 114, 339, 32767, 32767, 32767, 32767, 32767, 524, 0, -52, 191, -115, 9, 200, 102, 0, 32767, 3, 0, 0, 0, -288, 0, -132, 32767, 0, 32767, 300, 0, 0, 0, 212, 32767, 260, 32767, -279, 104, 506, 0, 640, 38, 268, 32767, 131, 32767, 32767, 32767, 32767, 0, 0, 32767, 32767, 18, 100, 44, 67, 270, 245, 283, 224, -66, 32767, 32767, 32767, -67, 32767, 389, 32767, 0, 125, 354, 32767, 32767, -21, 124, 0, 204, 32767, 0, 99, 32767, 267, 32767, 0, 32767, 32767, 231, 32767, -129, -113, 108, 23, 0, 0, 32767, 32767, 0, 32767, 269, 32767, 32767, -133, 32767, -384, 32767, 32767, 0, 32767, 32767, 32767, 0, 32767, 32767, 32767, 0, 322, 424, 117, -29, 32767, 32767, 145, 0, 0, 323, 119, 32767, 32767, 32767, 392, -164, -143, -25, -106, 0, 97, 32767, 32767, 235, 32767, 0, 32767, 411, 363, 32767, 31, 32767, 443, 32767, 76, 29, 32767, 323, 32767, 142, 32767, 0, 244, 0, 32767, 28, 32767, 0, 377, -8, -45, 32767, 37, 0, 350, 0, 32767, 32767, 38, 416, 32767, 265, -78, -308, -51, 705, 32767, 32767, 0, 66, 0, 32767, 32767, 32767, 81, -250, 32767, 1, 421, 32767, 32767, 0, 32767, 401, 198, 32767, 256, 290, 210, 32767, 32767, 32767, 32767, 0, 444, 211, -99, 220, 64, 32767, 32767, 32767, 32767, 190, 19, 0, 216, 32767, 262, 32767, 404, 562, -222, 0, 0, -162, 32767, 192, 65, 32767, 150, 191, 0, 218, 267, 32767, 32767, 32767, 399, 189, 356, 532, 0, 32767, 429, 32767, 32767, 54, 279, 151, 0, 353, 394, 176, 215, 32767, 15, 153, 137, 92, 420, 47, 253, 0, 298, 32767, 32767, 32767, 234, 164, 241, 32767, 0, 409, 0, 32767, 0, 32767, 0, 70, 32767, 32767, 32767, 0, 32767, 32767, 32767, -138, 32767, 32767, -46, 32767, 97, 32767, 0, -126, 32767, 169, 322, 392, 32767, 0, 32767, 32767, 0, 282, 296, 32767, 0, 403, 32767, -24, 32767, -34, 32767, 32767, 32767, 418, 32767, 0, 97, 238, 32767, 144, 428, 32767, 2, 32767, 32767, 32767, 194, -182, 12, 32767, 391, 32767, 880, 32767, 32767, 50, 331, 0, 0, 358, 20, 32767, 32767, 222, 317, 32767, 0, 125, 32767, 0, 32767, 284, 32767, 32767, 197, 0, 63, 32767, 0, 188, 32767, 32767, 147, 190, 344, 32767, -42, 32767, 0, 187, 32767, 32767, 350, 32767, 0, 0, 127, 32767, 32767, 161, 32767, 0, 0, 382, 32767, 32767, 316, 130, 32767, 379, 32767, 383, 368, 93, -195, 0, 233, 73, 32767, 100, 32767, 338, 90, 32767, 258, 32767, 32767, 235, 175, 32767, 32767, 0, -9, 0, 0, 32767, 32767, 111, 417, 330, 0, 0, 225, 32767, 0, 0, 32767, 0, 64, 32767, 32767, 16, 113, 29, 0, 32767, 32767, 0, 43, 0, 365, -41, -284, 0, 0, 0, 61, 314, 255, 0, 32767, 145, 32767, -445, 32767, 32767, 154, }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 3; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 31 + c; b = b * 127 + c; } return h[a % 901] + h[b % 901]; } const ScanKeywordList ScanKeywords = { ScanKeywords_kw_string, ScanKeywords_kw_offsets, ScanKeywords_hash_func, SCANKEYWORDS_NUM_KEYWORDS, 17 }; #endif /* KWLIST_D_H */ libpg_query-13-2.1.0/src/postgres/src_common_kwlookup.c000066400000000000000000000050101413137616400231520ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ScanKeywordLookup *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * kwlookup.c * Key word lookup for PostgreSQL * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/common/kwlookup.c * *------------------------------------------------------------------------- */ #include "c.h" #include "common/kwlookup.h" /* * ScanKeywordLookup - see if a given word is a keyword * * The list of keywords to be matched against is passed as a ScanKeywordList. * * Returns the keyword number (0..N-1) of the keyword, or -1 if no match. * Callers typically use the keyword number to index into information * arrays, but that is no concern of this code. * * The match is done case-insensitively. Note that we deliberately use a * dumbed-down case conversion that will only translate 'A'-'Z' into 'a'-'z', * even if we are in a locale where tolower() would produce more or different * translations. This is to conform to the SQL99 spec, which says that * keywords are to be matched in this way even though non-keyword identifiers * receive a different case-normalization mapping. */ int ScanKeywordLookup(const char *str, const ScanKeywordList *keywords) { size_t len; int h; const char *kw; /* * Reject immediately if too long to be any keyword. This saves useless * hashing and downcasing work on long strings. */ len = strlen(str); if (len > keywords->max_kw_len) return -1; /* * Compute the hash function. We assume it was generated to produce * case-insensitive results. Since it's a perfect hash, we need only * match to the specific keyword it identifies. */ h = keywords->hash(str, len); /* An out-of-range result implies no match */ if (h < 0 || h >= keywords->num_keywords) return -1; /* * Compare character-by-character to see if we have a match, applying an * ASCII-only downcasing to the input characters. We must not use * tolower() since it may produce the wrong translation in some locales * (eg, Turkish). */ kw = GetScanKeyword(h, keywords); while (*str != '\0') { char ch = *str++; if (ch >= 'A' && ch <= 'Z') ch += 'a' - 'A'; if (ch != *kw++) return -1; } if (*kw != '\0') return -1; /* Success! */ return h; } libpg_query-13-2.1.0/src/postgres/src_common_psprintf.c000066400000000000000000000106651413137616400231600ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pvsnprintf * - psprintf *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * psprintf.c * sprintf into an allocated-on-demand buffer * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/common/psprintf.c * *------------------------------------------------------------------------- */ #ifndef FRONTEND #include "postgres.h" #include "utils/memutils.h" #else #include "postgres_fe.h" /* It's possible we could use a different value for this in frontend code */ #define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */ #endif /* * psprintf * * Format text data under the control of fmt (an sprintf-style format string) * and return it in an allocated-on-demand buffer. The buffer is allocated * with palloc in the backend, or malloc in frontend builds. Caller is * responsible to free the buffer when no longer needed, if appropriate. * * Errors are not returned to the caller, but are reported via elog(ERROR) * in the backend, or printf-to-stderr-and-exit() in frontend builds. * One should therefore think twice about using this in libpq. */ char * psprintf(const char *fmt,...) { int save_errno = errno; size_t len = 128; /* initial assumption about buffer size */ for (;;) { char *result; va_list args; size_t newlen; /* * Allocate result buffer. Note that in frontend this maps to malloc * with exit-on-error. */ result = (char *) palloc(len); /* Try to format the data. */ errno = save_errno; va_start(args, fmt); newlen = pvsnprintf(result, len, fmt, args); va_end(args); if (newlen < len) return result; /* success */ /* Release buffer and loop around to try again with larger len. */ pfree(result); len = newlen; } } /* * pvsnprintf * * Attempt to format text data under the control of fmt (an sprintf-style * format string) and insert it into buf (which has length len). * * If successful, return the number of bytes emitted, not counting the * trailing zero byte. This will always be strictly less than len. * * If there's not enough space in buf, return an estimate of the buffer size * needed to succeed (this *must* be more than the given len, else callers * might loop infinitely). * * Other error cases do not return, but exit via elog(ERROR) or exit(). * Hence, this shouldn't be used inside libpq. * * Caution: callers must be sure to preserve their entry-time errno * when looping, in case the fmt contains "%m". * * Note that the semantics of the return value are not exactly C99's. * First, we don't promise that the estimated buffer size is exactly right; * callers must be prepared to loop multiple times to get the right size. * (Given a C99-compliant vsnprintf, that won't happen, but it is rumored * that some implementations don't always return the same value ...) * Second, we return the recommended buffer size, not one less than that; * this lets overflow concerns be handled here rather than in the callers. */ size_t pvsnprintf(char *buf, size_t len, const char *fmt, va_list args) { int nprinted; nprinted = vsnprintf(buf, len, fmt, args); /* We assume failure means the fmt is bogus, hence hard failure is OK */ if (unlikely(nprinted < 0)) { #ifndef FRONTEND elog(ERROR, "vsnprintf failed: %m with format string \"%s\"", fmt); #else fprintf(stderr, "vsnprintf failed: %s with format string \"%s\"\n", strerror(errno), fmt); exit(EXIT_FAILURE); #endif } if ((size_t) nprinted < len) { /* Success. Note nprinted does not include trailing null. */ return (size_t) nprinted; } /* * We assume a C99-compliant vsnprintf, so believe its estimate of the * required space, and add one for the trailing null. (If it's wrong, the * logic will still work, but we may loop multiple times.) * * Choke if the required space would exceed MaxAllocSize. Note we use * this palloc-oriented overflow limit even when in frontend. */ if (unlikely((size_t) nprinted > MaxAllocSize - 1)) { #ifndef FRONTEND ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("out of memory"))); #else fprintf(stderr, _("out of memory\n")); exit(EXIT_FAILURE); #endif } return nprinted + 1; } libpg_query-13-2.1.0/src/postgres/src_common_string.c000066400000000000000000000044251413137616400226160ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - strtoint *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * string.c * string handling helpers * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/common/string.c * *------------------------------------------------------------------------- */ #ifndef FRONTEND #include "postgres.h" #else #include "postgres_fe.h" #endif #include "common/string.h" /* * Returns whether the string `str' has the postfix `end'. */ /* * strtoint --- just like strtol, but returns int not long */ int strtoint(const char *pg_restrict str, char **pg_restrict endptr, int base) { long val; val = strtol(str, endptr, base); if (val != (int) val) errno = ERANGE; return (int) val; } /* * pg_clean_ascii -- Replace any non-ASCII chars with a '?' char * * Modifies the string passed in which must be '\0'-terminated. * * This function exists specifically to deal with filtering out * non-ASCII characters in a few places where the client can provide an almost * arbitrary string (and it isn't checked to ensure it's a valid username or * database name or similar) and we don't want to have control characters or other * things ending up in the log file where server admins might end up with a * messed up terminal when looking at them. * * In general, this function should NOT be used- instead, consider how to handle * the string without needing to filter out the non-ASCII characters. * * Ultimately, we'd like to improve the situation to not require stripping out * all non-ASCII but perform more intelligent filtering which would allow UTF or * similar, but it's unclear exactly what we should allow, so stick to ASCII only * for now. */ /* * pg_strip_crlf -- Remove any trailing newline and carriage return * * Removes any trailing newline and carriage return characters (\r on * Windows) in the input string, zero-terminating it. * * The passed in string must be zero-terminated. This function returns * the new length of the string. */ libpg_query-13-2.1.0/src/postgres/src_common_stringinfo.c000066400000000000000000000207741413137616400234770ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - initStringInfo * - resetStringInfo * - appendStringInfoString * - appendBinaryStringInfo * - appendStringInfoChar * - appendStringInfoVA * - enlargeStringInfo * - appendStringInfo * - appendStringInfoSpaces *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * stringinfo.c * * StringInfo provides an extensible string data type (currently limited to a * length of 1GB). It can be used to buffer either ordinary C strings * (null-terminated text) or arbitrary binary data. All storage is allocated * with palloc() (falling back to malloc in frontend code). * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/common/stringinfo.c * *------------------------------------------------------------------------- */ #ifndef FRONTEND #include "postgres.h" #include "utils/memutils.h" #else #include "postgres_fe.h" /* It's possible we could use a different value for this in frontend code */ #define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */ #endif #include "lib/stringinfo.h" /* * makeStringInfo * * Create an empty 'StringInfoData' & return a pointer to it. */ /* * initStringInfo * * Initialize a StringInfoData struct (with previously undefined contents) * to describe an empty string. */ void initStringInfo(StringInfo str) { int size = 1024; /* initial default buffer size */ str->data = (char *) palloc(size); str->maxlen = size; resetStringInfo(str); } /* * resetStringInfo * * Reset the StringInfo: the data buffer remains valid, but its * previous content, if any, is cleared. */ void resetStringInfo(StringInfo str) { str->data[0] = '\0'; str->len = 0; str->cursor = 0; } /* * appendStringInfo * * Format text data under the control of fmt (an sprintf-style format string) * and append it to whatever is already in str. More space is allocated * to str if necessary. This is sort of like a combination of sprintf and * strcat. */ void appendStringInfo(StringInfo str, const char *fmt,...) { int save_errno = errno; for (;;) { va_list args; int needed; /* Try to format the data. */ errno = save_errno; va_start(args, fmt); needed = appendStringInfoVA(str, fmt, args); va_end(args); if (needed == 0) break; /* success */ /* Increase the buffer size and try again. */ enlargeStringInfo(str, needed); } } /* * appendStringInfoVA * * Attempt to format text data under the control of fmt (an sprintf-style * format string) and append it to whatever is already in str. If successful * return zero; if not (because there's not enough space), return an estimate * of the space needed, without modifying str. Typically the caller should * pass the return value to enlargeStringInfo() before trying again; see * appendStringInfo for standard usage pattern. * * Caution: callers must be sure to preserve their entry-time errno * when looping, in case the fmt contains "%m". * * XXX This API is ugly, but there seems no alternative given the C spec's * restrictions on what can portably be done with va_list arguments: you have * to redo va_start before you can rescan the argument list, and we can't do * that from here. */ int appendStringInfoVA(StringInfo str, const char *fmt, va_list args) { int avail; size_t nprinted; Assert(str != NULL); /* * If there's hardly any space, don't bother trying, just fail to make the * caller enlarge the buffer first. We have to guess at how much to * enlarge, since we're skipping the formatting work. */ avail = str->maxlen - str->len; if (avail < 16) return 32; nprinted = pvsnprintf(str->data + str->len, (size_t) avail, fmt, args); if (nprinted < (size_t) avail) { /* Success. Note nprinted does not include trailing null. */ str->len += (int) nprinted; return 0; } /* Restore the trailing null so that str is unmodified. */ str->data[str->len] = '\0'; /* * Return pvsnprintf's estimate of the space needed. (Although this is * given as a size_t, we know it will fit in int because it's not more * than MaxAllocSize.) */ return (int) nprinted; } /* * appendStringInfoString * * Append a null-terminated string to str. * Like appendStringInfo(str, "%s", s) but faster. */ void appendStringInfoString(StringInfo str, const char *s) { appendBinaryStringInfo(str, s, strlen(s)); } /* * appendStringInfoChar * * Append a single byte to str. * Like appendStringInfo(str, "%c", ch) but much faster. */ void appendStringInfoChar(StringInfo str, char ch) { /* Make more room if needed */ if (str->len + 1 >= str->maxlen) enlargeStringInfo(str, 1); /* OK, append the character */ str->data[str->len] = ch; str->len++; str->data[str->len] = '\0'; } /* * appendStringInfoSpaces * * Append the specified number of spaces to a buffer. */ void appendStringInfoSpaces(StringInfo str, int count) { if (count > 0) { /* Make more room if needed */ enlargeStringInfo(str, count); /* OK, append the spaces */ while (--count >= 0) str->data[str->len++] = ' '; str->data[str->len] = '\0'; } } /* * appendBinaryStringInfo * * Append arbitrary binary data to a StringInfo, allocating more space * if necessary. Ensures that a trailing null byte is present. */ void appendBinaryStringInfo(StringInfo str, const char *data, int datalen) { Assert(str != NULL); /* Make more room if needed */ enlargeStringInfo(str, datalen); /* OK, append the data */ memcpy(str->data + str->len, data, datalen); str->len += datalen; /* * Keep a trailing null in place, even though it's probably useless for * binary data. (Some callers are dealing with text but call this because * their input isn't null-terminated.) */ str->data[str->len] = '\0'; } /* * appendBinaryStringInfoNT * * Append arbitrary binary data to a StringInfo, allocating more space * if necessary. Does not ensure a trailing null-byte exists. */ /* * enlargeStringInfo * * Make sure there is enough space for 'needed' more bytes * ('needed' does not include the terminating null). * * External callers usually need not concern themselves with this, since * all stringinfo.c routines do it automatically. However, if a caller * knows that a StringInfo will eventually become X bytes large, it * can save some palloc overhead by enlarging the buffer before starting * to store data in it. * * NB: In the backend, because we use repalloc() to enlarge the buffer, the * string buffer will remain allocated in the same memory context that was * current when initStringInfo was called, even if another context is now * current. This is the desired and indeed critical behavior! */ void enlargeStringInfo(StringInfo str, int needed) { int newlen; /* * Guard against out-of-range "needed" values. Without this, we can get * an overflow or infinite loop in the following. */ if (needed < 0) /* should not happen */ { #ifndef FRONTEND elog(ERROR, "invalid string enlargement request size: %d", needed); #else fprintf(stderr, "invalid string enlargement request size: %d\n", needed); exit(EXIT_FAILURE); #endif } if (((Size) needed) >= (MaxAllocSize - (Size) str->len)) { #ifndef FRONTEND ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("out of memory"), errdetail("Cannot enlarge string buffer containing %d bytes by %d more bytes.", str->len, needed))); #else fprintf(stderr, _("out of memory\n\nCannot enlarge string buffer containing %d bytes by %d more bytes.\n"), str->len, needed); exit(EXIT_FAILURE); #endif } needed += str->len + 1; /* total space required now */ /* Because of the above test, we now have needed <= MaxAllocSize */ if (needed <= str->maxlen) return; /* got enough space already */ /* * We don't want to allocate just a little more space with each append; * for efficiency, double the buffer size each time it overflows. * Actually, we might need to more than double it if 'needed' is big... */ newlen = 2 * str->maxlen; while (needed > newlen) newlen = 2 * newlen; /* * Clamp to MaxAllocSize in case we went past it. Note we are assuming * here that MaxAllocSize <= INT_MAX/2, else the above loop could * overflow. We will still have newlen >= needed. */ if (newlen > (int) MaxAllocSize) newlen = (int) MaxAllocSize; str->data = (char *) repalloc(str->data, newlen); str->maxlen = newlen; } libpg_query-13-2.1.0/src/postgres/src_common_wchar.c000066400000000000000000001036751413137616400224230ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_encoding_max_length * - pg_wchar_table * - pg_utf_mblen * - pg_mule_mblen * - pg_ascii2wchar_with_len * - pg_wchar2single_with_len * - pg_ascii_mblen * - pg_ascii_dsplen * - pg_ascii_verifier * - pg_eucjp2wchar_with_len * - pg_euc2wchar_with_len * - pg_wchar2euc_with_len * - pg_eucjp_mblen * - pg_euc_mblen * - pg_eucjp_dsplen * - pg_eucjp_verifier * - pg_euccn2wchar_with_len * - pg_euccn_mblen * - pg_euccn_dsplen * - pg_euckr_verifier * - pg_euckr2wchar_with_len * - pg_euckr_mblen * - pg_euckr_dsplen * - pg_euc_dsplen * - pg_euctw2wchar_with_len * - pg_euctw_mblen * - pg_euctw_dsplen * - pg_euctw_verifier * - pg_utf2wchar_with_len * - pg_wchar2utf_with_len * - unicode_to_utf8 * - pg_utf_dsplen * - utf8_to_unicode * - ucs_wcwidth * - mbbisearch * - pg_utf8_verifier * - pg_utf8_islegal * - pg_mule2wchar_with_len * - pg_wchar2mule_with_len * - pg_mule_dsplen * - pg_mule_verifier * - pg_latin12wchar_with_len * - pg_latin1_mblen * - pg_latin1_dsplen * - pg_latin1_verifier * - pg_sjis_mblen * - pg_sjis_dsplen * - pg_sjis_verifier * - pg_big5_mblen * - pg_big5_dsplen * - pg_big5_verifier * - pg_gbk_mblen * - pg_gbk_dsplen * - pg_gbk_verifier * - pg_uhc_mblen * - pg_uhc_dsplen * - pg_uhc_verifier * - pg_gb18030_mblen * - pg_gb18030_dsplen * - pg_gb18030_verifier * - pg_johab_mblen * - pg_johab_dsplen * - pg_johab_verifier * - pg_encoding_mblen *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * wchar.c * Functions for working with multibyte characters in various encodings. * * Portions Copyright (c) 1998-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/common/wchar.c * *------------------------------------------------------------------------- */ #include "c.h" #include "mb/pg_wchar.h" /* * Operations on multi-byte encodings are driven by a table of helper * functions. * * To add an encoding support, define mblen(), dsplen() and verifier() for * the encoding. For server-encodings, also define mb2wchar() and wchar2mb() * conversion functions. * * These functions generally assume that their input is validly formed. * The "verifier" functions, further down in the file, have to be more * paranoid. * * We expect that mblen() does not need to examine more than the first byte * of the character to discover the correct length. GB18030 is an exception * to that rule, though, as it also looks at second byte. But even that * behaves in a predictable way, if you only pass the first byte: it will * treat 4-byte encoded characters as two 2-byte encoded characters, which is * good enough for all current uses. * * Note: for the display output of psql to work properly, the return values * of the dsplen functions must conform to the Unicode standard. In particular * the NUL character is zero width and control characters are generally * width -1. It is recommended that non-ASCII encodings refer their ASCII * subset to the ASCII routines to ensure consistency. */ /* * SQL/ASCII */ static int pg_ascii2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { int cnt = 0; while (len > 0 && *from) { *to++ = *from++; len--; cnt++; } *to = 0; return cnt; } static int pg_ascii_mblen(const unsigned char *s) { return 1; } static int pg_ascii_dsplen(const unsigned char *s) { if (*s == '\0') return 0; if (*s < 0x20 || *s == 0x7f) return -1; return 1; } /* * EUC */ static int pg_euc2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { int cnt = 0; while (len > 0 && *from) { if (*from == SS2 && len >= 2) /* JIS X 0201 (so called "1 byte * KANA") */ { from++; *to = (SS2 << 8) | *from++; len -= 2; } else if (*from == SS3 && len >= 3) /* JIS X 0212 KANJI */ { from++; *to = (SS3 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } else if (IS_HIGHBIT_SET(*from) && len >= 2) /* JIS X 0208 KANJI */ { *to = *from++ << 8; *to |= *from++; len -= 2; } else /* must be ASCII */ { *to = *from++; len--; } to++; cnt++; } *to = 0; return cnt; } static inline int pg_euc_mblen(const unsigned char *s) { int len; if (*s == SS2) len = 2; else if (*s == SS3) len = 3; else if (IS_HIGHBIT_SET(*s)) len = 2; else len = 1; return len; } static inline int pg_euc_dsplen(const unsigned char *s) { int len; if (*s == SS2) len = 2; else if (*s == SS3) len = 2; else if (IS_HIGHBIT_SET(*s)) len = 2; else len = pg_ascii_dsplen(s); return len; } /* * EUC_JP */ static int pg_eucjp2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { return pg_euc2wchar_with_len(from, to, len); } static int pg_eucjp_mblen(const unsigned char *s) { return pg_euc_mblen(s); } static int pg_eucjp_dsplen(const unsigned char *s) { int len; if (*s == SS2) len = 1; else if (*s == SS3) len = 2; else if (IS_HIGHBIT_SET(*s)) len = 2; else len = pg_ascii_dsplen(s); return len; } /* * EUC_KR */ static int pg_euckr2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { return pg_euc2wchar_with_len(from, to, len); } static int pg_euckr_mblen(const unsigned char *s) { return pg_euc_mblen(s); } static int pg_euckr_dsplen(const unsigned char *s) { return pg_euc_dsplen(s); } /* * EUC_CN * */ static int pg_euccn2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { int cnt = 0; while (len > 0 && *from) { if (*from == SS2 && len >= 3) /* code set 2 (unused?) */ { from++; *to = (SS2 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } else if (*from == SS3 && len >= 3) /* code set 3 (unused ?) */ { from++; *to = (SS3 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } else if (IS_HIGHBIT_SET(*from) && len >= 2) /* code set 1 */ { *to = *from++ << 8; *to |= *from++; len -= 2; } else { *to = *from++; len--; } to++; cnt++; } *to = 0; return cnt; } static int pg_euccn_mblen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; else len = 1; return len; } static int pg_euccn_dsplen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; else len = pg_ascii_dsplen(s); return len; } /* * EUC_TW * */ static int pg_euctw2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { int cnt = 0; while (len > 0 && *from) { if (*from == SS2 && len >= 4) /* code set 2 */ { from++; *to = (((uint32) SS2) << 24) | (*from++ << 16); *to |= *from++ << 8; *to |= *from++; len -= 4; } else if (*from == SS3 && len >= 3) /* code set 3 (unused?) */ { from++; *to = (SS3 << 16) | (*from++ << 8); *to |= *from++; len -= 3; } else if (IS_HIGHBIT_SET(*from) && len >= 2) /* code set 2 */ { *to = *from++ << 8; *to |= *from++; len -= 2; } else { *to = *from++; len--; } to++; cnt++; } *to = 0; return cnt; } static int pg_euctw_mblen(const unsigned char *s) { int len; if (*s == SS2) len = 4; else if (*s == SS3) len = 3; else if (IS_HIGHBIT_SET(*s)) len = 2; else len = 1; return len; } static int pg_euctw_dsplen(const unsigned char *s) { int len; if (*s == SS2) len = 2; else if (*s == SS3) len = 2; else if (IS_HIGHBIT_SET(*s)) len = 2; else len = pg_ascii_dsplen(s); return len; } /* * Convert pg_wchar to EUC_* encoding. * caller must allocate enough space for "to", including a trailing zero! * len: length of from. * "from" not necessarily null terminated. */ static int pg_wchar2euc_with_len(const pg_wchar *from, unsigned char *to, int len) { int cnt = 0; while (len > 0 && *from) { unsigned char c; if ((c = (*from >> 24))) { *to++ = c; *to++ = (*from >> 16) & 0xff; *to++ = (*from >> 8) & 0xff; *to++ = *from & 0xff; cnt += 4; } else if ((c = (*from >> 16))) { *to++ = c; *to++ = (*from >> 8) & 0xff; *to++ = *from & 0xff; cnt += 3; } else if ((c = (*from >> 8))) { *to++ = c; *to++ = *from & 0xff; cnt += 2; } else { *to++ = *from; cnt++; } from++; len--; } *to = 0; return cnt; } /* * JOHAB */ static int pg_johab_mblen(const unsigned char *s) { return pg_euc_mblen(s); } static int pg_johab_dsplen(const unsigned char *s) { return pg_euc_dsplen(s); } /* * convert UTF8 string to pg_wchar (UCS-4) * caller must allocate enough space for "to", including a trailing zero! * len: length of from. * "from" not necessarily null terminated. */ static int pg_utf2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { int cnt = 0; uint32 c1, c2, c3, c4; while (len > 0 && *from) { if ((*from & 0x80) == 0) { *to = *from++; len--; } else if ((*from & 0xe0) == 0xc0) { if (len < 2) break; /* drop trailing incomplete char */ c1 = *from++ & 0x1f; c2 = *from++ & 0x3f; *to = (c1 << 6) | c2; len -= 2; } else if ((*from & 0xf0) == 0xe0) { if (len < 3) break; /* drop trailing incomplete char */ c1 = *from++ & 0x0f; c2 = *from++ & 0x3f; c3 = *from++ & 0x3f; *to = (c1 << 12) | (c2 << 6) | c3; len -= 3; } else if ((*from & 0xf8) == 0xf0) { if (len < 4) break; /* drop trailing incomplete char */ c1 = *from++ & 0x07; c2 = *from++ & 0x3f; c3 = *from++ & 0x3f; c4 = *from++ & 0x3f; *to = (c1 << 18) | (c2 << 12) | (c3 << 6) | c4; len -= 4; } else { /* treat a bogus char as length 1; not ours to raise error */ *to = *from++; len--; } to++; cnt++; } *to = 0; return cnt; } /* * Map a Unicode code point to UTF-8. utf8string must have 4 bytes of * space allocated. */ unsigned char * unicode_to_utf8(pg_wchar c, unsigned char *utf8string) { if (c <= 0x7F) { utf8string[0] = c; } else if (c <= 0x7FF) { utf8string[0] = 0xC0 | ((c >> 6) & 0x1F); utf8string[1] = 0x80 | (c & 0x3F); } else if (c <= 0xFFFF) { utf8string[0] = 0xE0 | ((c >> 12) & 0x0F); utf8string[1] = 0x80 | ((c >> 6) & 0x3F); utf8string[2] = 0x80 | (c & 0x3F); } else { utf8string[0] = 0xF0 | ((c >> 18) & 0x07); utf8string[1] = 0x80 | ((c >> 12) & 0x3F); utf8string[2] = 0x80 | ((c >> 6) & 0x3F); utf8string[3] = 0x80 | (c & 0x3F); } return utf8string; } /* * Trivial conversion from pg_wchar to UTF-8. * caller should allocate enough space for "to" * len: length of from. * "from" not necessarily null terminated. */ static int pg_wchar2utf_with_len(const pg_wchar *from, unsigned char *to, int len) { int cnt = 0; while (len > 0 && *from) { int char_len; unicode_to_utf8(*from, to); char_len = pg_utf_mblen(to); cnt += char_len; to += char_len; from++; len--; } *to = 0; return cnt; } /* * Return the byte length of a UTF8 character pointed to by s * * Note: in the current implementation we do not support UTF8 sequences * of more than 4 bytes; hence do NOT return a value larger than 4. * We return "1" for any leading byte that is either flat-out illegal or * indicates a length larger than we support. * * pg_utf2wchar_with_len(), utf8_to_unicode(), pg_utf8_islegal(), and perhaps * other places would need to be fixed to change this. */ int pg_utf_mblen(const unsigned char *s) { int len; if ((*s & 0x80) == 0) len = 1; else if ((*s & 0xe0) == 0xc0) len = 2; else if ((*s & 0xf0) == 0xe0) len = 3; else if ((*s & 0xf8) == 0xf0) len = 4; #ifdef NOT_USED else if ((*s & 0xfc) == 0xf8) len = 5; else if ((*s & 0xfe) == 0xfc) len = 6; #endif else len = 1; return len; } /* * This is an implementation of wcwidth() and wcswidth() as defined in * "The Single UNIX Specification, Version 2, The Open Group, 1997" * * * Markus Kuhn -- 2001-09-08 -- public domain * * customised for PostgreSQL * * original available at : http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c */ struct mbinterval { unsigned short first; unsigned short last; }; /* auxiliary function for binary search in interval table */ static int mbbisearch(pg_wchar ucs, const struct mbinterval *table, int max) { int min = 0; int mid; if (ucs < table[0].first || ucs > table[max].last) return 0; while (max >= min) { mid = (min + max) / 2; if (ucs > table[mid].last) min = mid + 1; else if (ucs < table[mid].first) max = mid - 1; else return 1; } return 0; } /* The following functions define the column width of an ISO 10646 * character as follows: * * - The null character (U+0000) has a column width of 0. * * - Other C0/C1 control characters and DEL will lead to a return * value of -1. * * - Non-spacing and enclosing combining characters (general * category code Mn or Me in the Unicode database) have a * column width of 0. * * - Other format characters (general category code Cf in the Unicode * database) and ZERO WIDTH SPACE (U+200B) have a column width of 0. * * - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF) * have a column width of 0. * * - Spacing characters in the East Asian Wide (W) or East Asian * FullWidth (F) category as defined in Unicode Technical * Report #11 have a column width of 2. * * - All remaining characters (including all printable * ISO 8859-1 and WGL4 characters, Unicode control characters, * etc.) have a column width of 1. * * This implementation assumes that wchar_t characters are encoded * in ISO 10646. */ static int ucs_wcwidth(pg_wchar ucs) { #include "common/unicode_combining_table.h" /* test for 8-bit control characters */ if (ucs == 0) return 0; if (ucs < 0x20 || (ucs >= 0x7f && ucs < 0xa0) || ucs > 0x0010ffff) return -1; /* binary search in table of non-spacing characters */ if (mbbisearch(ucs, combining, sizeof(combining) / sizeof(struct mbinterval) - 1)) return 0; /* * if we arrive here, ucs is not a combining or C0/C1 control character */ return 1 + (ucs >= 0x1100 && (ucs <= 0x115f || /* Hangul Jamo init. consonants */ (ucs >= 0x2e80 && ucs <= 0xa4cf && (ucs & ~0x0011) != 0x300a && ucs != 0x303f) || /* CJK ... Yi */ (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */ (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility * Ideographs */ (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */ (ucs >= 0xff00 && ucs <= 0xff5f) || /* Fullwidth Forms */ (ucs >= 0xffe0 && ucs <= 0xffe6) || (ucs >= 0x20000 && ucs <= 0x2ffff))); } /* * Convert a UTF-8 character to a Unicode code point. * This is a one-character version of pg_utf2wchar_with_len. * * No error checks here, c must point to a long-enough string. */ pg_wchar utf8_to_unicode(const unsigned char *c) { if ((*c & 0x80) == 0) return (pg_wchar) c[0]; else if ((*c & 0xe0) == 0xc0) return (pg_wchar) (((c[0] & 0x1f) << 6) | (c[1] & 0x3f)); else if ((*c & 0xf0) == 0xe0) return (pg_wchar) (((c[0] & 0x0f) << 12) | ((c[1] & 0x3f) << 6) | (c[2] & 0x3f)); else if ((*c & 0xf8) == 0xf0) return (pg_wchar) (((c[0] & 0x07) << 18) | ((c[1] & 0x3f) << 12) | ((c[2] & 0x3f) << 6) | (c[3] & 0x3f)); else /* that is an invalid code on purpose */ return 0xffffffff; } static int pg_utf_dsplen(const unsigned char *s) { return ucs_wcwidth(utf8_to_unicode(s)); } /* * convert mule internal code to pg_wchar * caller should allocate enough space for "to" * len: length of from. * "from" not necessarily null terminated. */ static int pg_mule2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { int cnt = 0; while (len > 0 && *from) { if (IS_LC1(*from) && len >= 2) { *to = *from++ << 16; *to |= *from++; len -= 2; } else if (IS_LCPRV1(*from) && len >= 3) { from++; *to = *from++ << 16; *to |= *from++; len -= 3; } else if (IS_LC2(*from) && len >= 3) { *to = *from++ << 16; *to |= *from++ << 8; *to |= *from++; len -= 3; } else if (IS_LCPRV2(*from) && len >= 4) { from++; *to = *from++ << 16; *to |= *from++ << 8; *to |= *from++; len -= 4; } else { /* assume ASCII */ *to = (unsigned char) *from++; len--; } to++; cnt++; } *to = 0; return cnt; } /* * convert pg_wchar to mule internal code * caller should allocate enough space for "to" * len: length of from. * "from" not necessarily null terminated. */ static int pg_wchar2mule_with_len(const pg_wchar *from, unsigned char *to, int len) { int cnt = 0; while (len > 0 && *from) { unsigned char lb; lb = (*from >> 16) & 0xff; if (IS_LC1(lb)) { *to++ = lb; *to++ = *from & 0xff; cnt += 2; } else if (IS_LC2(lb)) { *to++ = lb; *to++ = (*from >> 8) & 0xff; *to++ = *from & 0xff; cnt += 3; } else if (IS_LCPRV1_A_RANGE(lb)) { *to++ = LCPRV1_A; *to++ = lb; *to++ = *from & 0xff; cnt += 3; } else if (IS_LCPRV1_B_RANGE(lb)) { *to++ = LCPRV1_B; *to++ = lb; *to++ = *from & 0xff; cnt += 3; } else if (IS_LCPRV2_A_RANGE(lb)) { *to++ = LCPRV2_A; *to++ = lb; *to++ = (*from >> 8) & 0xff; *to++ = *from & 0xff; cnt += 4; } else if (IS_LCPRV2_B_RANGE(lb)) { *to++ = LCPRV2_B; *to++ = lb; *to++ = (*from >> 8) & 0xff; *to++ = *from & 0xff; cnt += 4; } else { *to++ = *from & 0xff; cnt += 1; } from++; len--; } *to = 0; return cnt; } /* exported for direct use by conv.c */ int pg_mule_mblen(const unsigned char *s) { int len; if (IS_LC1(*s)) len = 2; else if (IS_LCPRV1(*s)) len = 3; else if (IS_LC2(*s)) len = 3; else if (IS_LCPRV2(*s)) len = 4; else len = 1; /* assume ASCII */ return len; } static int pg_mule_dsplen(const unsigned char *s) { int len; /* * Note: it's not really appropriate to assume that all multibyte charsets * are double-wide on screen. But this seems an okay approximation for * the MULE charsets we currently support. */ if (IS_LC1(*s)) len = 1; else if (IS_LCPRV1(*s)) len = 1; else if (IS_LC2(*s)) len = 2; else if (IS_LCPRV2(*s)) len = 2; else len = 1; /* assume ASCII */ return len; } /* * ISO8859-1 */ static int pg_latin12wchar_with_len(const unsigned char *from, pg_wchar *to, int len) { int cnt = 0; while (len > 0 && *from) { *to++ = *from++; len--; cnt++; } *to = 0; return cnt; } /* * Trivial conversion from pg_wchar to single byte encoding. Just ignores * high bits. * caller should allocate enough space for "to" * len: length of from. * "from" not necessarily null terminated. */ static int pg_wchar2single_with_len(const pg_wchar *from, unsigned char *to, int len) { int cnt = 0; while (len > 0 && *from) { *to++ = *from++; len--; cnt++; } *to = 0; return cnt; } static int pg_latin1_mblen(const unsigned char *s) { return 1; } static int pg_latin1_dsplen(const unsigned char *s) { return pg_ascii_dsplen(s); } /* * SJIS */ static int pg_sjis_mblen(const unsigned char *s) { int len; if (*s >= 0xa1 && *s <= 0xdf) len = 1; /* 1 byte kana? */ else if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = 1; /* should be ASCII */ return len; } static int pg_sjis_dsplen(const unsigned char *s) { int len; if (*s >= 0xa1 && *s <= 0xdf) len = 1; /* 1 byte kana? */ else if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } /* * Big5 */ static int pg_big5_mblen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = 1; /* should be ASCII */ return len; } static int pg_big5_dsplen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } /* * GBK */ static int pg_gbk_mblen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = 1; /* should be ASCII */ return len; } static int pg_gbk_dsplen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* kanji? */ else len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } /* * UHC */ static int pg_uhc_mblen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* 2byte? */ else len = 1; /* should be ASCII */ return len; } static int pg_uhc_dsplen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; /* 2byte? */ else len = pg_ascii_dsplen(s); /* should be ASCII */ return len; } /* * GB18030 * Added by Bill Huang , */ /* * Unlike all other mblen() functions, this also looks at the second byte of * the input. However, if you only pass the first byte of a multi-byte * string, and \0 as the second byte, this still works in a predictable way: * a 4-byte character will be reported as two 2-byte characters. That's * enough for all current uses, as a client-only encoding. It works that * way, because in any valid 4-byte GB18030-encoded character, the third and * fourth byte look like a 2-byte encoded character, when looked at * separately. */ static int pg_gb18030_mblen(const unsigned char *s) { int len; if (!IS_HIGHBIT_SET(*s)) len = 1; /* ASCII */ else if (*(s + 1) >= 0x30 && *(s + 1) <= 0x39) len = 4; else len = 2; return len; } static int pg_gb18030_dsplen(const unsigned char *s) { int len; if (IS_HIGHBIT_SET(*s)) len = 2; else len = pg_ascii_dsplen(s); /* ASCII */ return len; } /* *------------------------------------------------------------------- * multibyte sequence validators * * These functions accept "s", a pointer to the first byte of a string, * and "len", the remaining length of the string. If there is a validly * encoded character beginning at *s, return its length in bytes; else * return -1. * * The functions can assume that len > 0 and that *s != '\0', but they must * test for and reject zeroes in any additional bytes of a multibyte character. * * Note that this definition allows the function for a single-byte * encoding to be just "return 1". *------------------------------------------------------------------- */ static int pg_ascii_verifier(const unsigned char *s, int len) { return 1; } #define IS_EUC_RANGE_VALID(c) ((c) >= 0xa1 && (c) <= 0xfe) static int pg_eucjp_verifier(const unsigned char *s, int len) { int l; unsigned char c1, c2; c1 = *s++; switch (c1) { case SS2: /* JIS X 0201 */ l = 2; if (l > len) return -1; c2 = *s++; if (c2 < 0xa1 || c2 > 0xdf) return -1; break; case SS3: /* JIS X 0212 */ l = 3; if (l > len) return -1; c2 = *s++; if (!IS_EUC_RANGE_VALID(c2)) return -1; c2 = *s++; if (!IS_EUC_RANGE_VALID(c2)) return -1; break; default: if (IS_HIGHBIT_SET(c1)) /* JIS X 0208? */ { l = 2; if (l > len) return -1; if (!IS_EUC_RANGE_VALID(c1)) return -1; c2 = *s++; if (!IS_EUC_RANGE_VALID(c2)) return -1; } else /* must be ASCII */ { l = 1; } break; } return l; } static int pg_euckr_verifier(const unsigned char *s, int len) { int l; unsigned char c1, c2; c1 = *s++; if (IS_HIGHBIT_SET(c1)) { l = 2; if (l > len) return -1; if (!IS_EUC_RANGE_VALID(c1)) return -1; c2 = *s++; if (!IS_EUC_RANGE_VALID(c2)) return -1; } else /* must be ASCII */ { l = 1; } return l; } /* EUC-CN byte sequences are exactly same as EUC-KR */ #define pg_euccn_verifier pg_euckr_verifier static int pg_euctw_verifier(const unsigned char *s, int len) { int l; unsigned char c1, c2; c1 = *s++; switch (c1) { case SS2: /* CNS 11643 Plane 1-7 */ l = 4; if (l > len) return -1; c2 = *s++; if (c2 < 0xa1 || c2 > 0xa7) return -1; c2 = *s++; if (!IS_EUC_RANGE_VALID(c2)) return -1; c2 = *s++; if (!IS_EUC_RANGE_VALID(c2)) return -1; break; case SS3: /* unused */ return -1; default: if (IS_HIGHBIT_SET(c1)) /* CNS 11643 Plane 1 */ { l = 2; if (l > len) return -1; /* no further range check on c1? */ c2 = *s++; if (!IS_EUC_RANGE_VALID(c2)) return -1; } else /* must be ASCII */ { l = 1; } break; } return l; } static int pg_johab_verifier(const unsigned char *s, int len) { int l, mbl; unsigned char c; l = mbl = pg_johab_mblen(s); if (len < l) return -1; if (!IS_HIGHBIT_SET(*s)) return mbl; while (--l > 0) { c = *++s; if (!IS_EUC_RANGE_VALID(c)) return -1; } return mbl; } static int pg_mule_verifier(const unsigned char *s, int len) { int l, mbl; unsigned char c; l = mbl = pg_mule_mblen(s); if (len < l) return -1; while (--l > 0) { c = *++s; if (!IS_HIGHBIT_SET(c)) return -1; } return mbl; } static int pg_latin1_verifier(const unsigned char *s, int len) { return 1; } static int pg_sjis_verifier(const unsigned char *s, int len) { int l, mbl; unsigned char c1, c2; l = mbl = pg_sjis_mblen(s); if (len < l) return -1; if (l == 1) /* pg_sjis_mblen already verified it */ return mbl; c1 = *s++; c2 = *s; if (!ISSJISHEAD(c1) || !ISSJISTAIL(c2)) return -1; return mbl; } static int pg_big5_verifier(const unsigned char *s, int len) { int l, mbl; l = mbl = pg_big5_mblen(s); if (len < l) return -1; while (--l > 0) { if (*++s == '\0') return -1; } return mbl; } static int pg_gbk_verifier(const unsigned char *s, int len) { int l, mbl; l = mbl = pg_gbk_mblen(s); if (len < l) return -1; while (--l > 0) { if (*++s == '\0') return -1; } return mbl; } static int pg_uhc_verifier(const unsigned char *s, int len) { int l, mbl; l = mbl = pg_uhc_mblen(s); if (len < l) return -1; while (--l > 0) { if (*++s == '\0') return -1; } return mbl; } static int pg_gb18030_verifier(const unsigned char *s, int len) { int l; if (!IS_HIGHBIT_SET(*s)) l = 1; /* ASCII */ else if (len >= 4 && *(s + 1) >= 0x30 && *(s + 1) <= 0x39) { /* Should be 4-byte, validate remaining bytes */ if (*s >= 0x81 && *s <= 0xfe && *(s + 2) >= 0x81 && *(s + 2) <= 0xfe && *(s + 3) >= 0x30 && *(s + 3) <= 0x39) l = 4; else l = -1; } else if (len >= 2 && *s >= 0x81 && *s <= 0xfe) { /* Should be 2-byte, validate */ if ((*(s + 1) >= 0x40 && *(s + 1) <= 0x7e) || (*(s + 1) >= 0x80 && *(s + 1) <= 0xfe)) l = 2; else l = -1; } else l = -1; return l; } static int pg_utf8_verifier(const unsigned char *s, int len) { int l = pg_utf_mblen(s); if (len < l) return -1; if (!pg_utf8_islegal(s, l)) return -1; return l; } /* * Check for validity of a single UTF-8 encoded character * * This directly implements the rules in RFC3629. The bizarre-looking * restrictions on the second byte are meant to ensure that there isn't * more than one encoding of a given Unicode character point; that is, * you may not use a longer-than-necessary byte sequence with high order * zero bits to represent a character that would fit in fewer bytes. * To do otherwise is to create security hazards (eg, create an apparent * non-ASCII character that decodes to plain ASCII). * * length is assumed to have been obtained by pg_utf_mblen(), and the * caller must have checked that that many bytes are present in the buffer. */ bool pg_utf8_islegal(const unsigned char *source, int length) { unsigned char a; switch (length) { default: /* reject lengths 5 and 6 for now */ return false; case 4: a = source[3]; if (a < 0x80 || a > 0xBF) return false; /* FALL THRU */ case 3: a = source[2]; if (a < 0x80 || a > 0xBF) return false; /* FALL THRU */ case 2: a = source[1]; switch (*source) { case 0xE0: if (a < 0xA0 || a > 0xBF) return false; break; case 0xED: if (a < 0x80 || a > 0x9F) return false; break; case 0xF0: if (a < 0x90 || a > 0xBF) return false; break; case 0xF4: if (a < 0x80 || a > 0x8F) return false; break; default: if (a < 0x80 || a > 0xBF) return false; break; } /* FALL THRU */ case 1: a = *source; if (a >= 0x80 && a < 0xC2) return false; if (a > 0xF4) return false; break; } return true; } /* *------------------------------------------------------------------- * encoding info table * XXX must be sorted by the same order as enum pg_enc (in mb/pg_wchar.h) *------------------------------------------------------------------- */ const pg_wchar_tbl pg_wchar_table[] = { {pg_ascii2wchar_with_len, pg_wchar2single_with_len, pg_ascii_mblen, pg_ascii_dsplen, pg_ascii_verifier, 1}, /* PG_SQL_ASCII */ {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifier, 3}, /* PG_EUC_JP */ {pg_euccn2wchar_with_len, pg_wchar2euc_with_len, pg_euccn_mblen, pg_euccn_dsplen, pg_euccn_verifier, 2}, /* PG_EUC_CN */ {pg_euckr2wchar_with_len, pg_wchar2euc_with_len, pg_euckr_mblen, pg_euckr_dsplen, pg_euckr_verifier, 3}, /* PG_EUC_KR */ {pg_euctw2wchar_with_len, pg_wchar2euc_with_len, pg_euctw_mblen, pg_euctw_dsplen, pg_euctw_verifier, 4}, /* PG_EUC_TW */ {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifier, 3}, /* PG_EUC_JIS_2004 */ {pg_utf2wchar_with_len, pg_wchar2utf_with_len, pg_utf_mblen, pg_utf_dsplen, pg_utf8_verifier, 4}, /* PG_UTF8 */ {pg_mule2wchar_with_len, pg_wchar2mule_with_len, pg_mule_mblen, pg_mule_dsplen, pg_mule_verifier, 4}, /* PG_MULE_INTERNAL */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN1 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN2 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN3 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN4 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN5 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN6 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN7 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN8 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN9 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN10 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1256 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1258 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN866 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN874 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_KOI8R */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1251 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1252 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-5 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-6 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-7 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-8 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1250 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1253 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1254 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1255 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1257 */ {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_KOI8U */ {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifier, 2}, /* PG_SJIS */ {0, 0, pg_big5_mblen, pg_big5_dsplen, pg_big5_verifier, 2}, /* PG_BIG5 */ {0, 0, pg_gbk_mblen, pg_gbk_dsplen, pg_gbk_verifier, 2}, /* PG_GBK */ {0, 0, pg_uhc_mblen, pg_uhc_dsplen, pg_uhc_verifier, 2}, /* PG_UHC */ {0, 0, pg_gb18030_mblen, pg_gb18030_dsplen, pg_gb18030_verifier, 4}, /* PG_GB18030 */ {0, 0, pg_johab_mblen, pg_johab_dsplen, pg_johab_verifier, 3}, /* PG_JOHAB */ {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifier, 2} /* PG_SHIFT_JIS_2004 */ }; /* * Returns the byte length of a multibyte character. */ int pg_encoding_mblen(int encoding, const char *mbstr) { return (PG_VALID_ENCODING(encoding) ? pg_wchar_table[encoding].mblen((const unsigned char *) mbstr) : pg_wchar_table[PG_SQL_ASCII].mblen((const unsigned char *) mbstr)); } /* * Returns the display length of a multibyte character. */ /* * Verify the first multibyte character of the given string. * Return its byte length if good, -1 if bad. (See comments above for * full details of the mbverify API.) */ /* * fetch maximum length of a given encoding */ int pg_encoding_max_length(int encoding) { Assert(PG_VALID_ENCODING(encoding)); return pg_wchar_table[encoding].maxmblen; } libpg_query-13-2.1.0/src/postgres/src_pl_plpgsql_src_pl_comp.c000066400000000000000000000723051413137616400244770ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - plpgsql_compile_inline * - plpgsql_error_funcname * - plpgsql_check_syntax * - plpgsql_curr_compile * - plpgsql_compile_tmp_cxt * - plpgsql_DumpExecTree * - plpgsql_start_datums * - plpgsql_nDatums * - plpgsql_Datums * - datums_alloc * - datums_last * - plpgsql_build_variable * - plpgsql_adddatum * - plpgsql_build_record * - plpgsql_build_datatype * - plpgsql_parse_tripword * - plpgsql_build_recfield * - plpgsql_parse_dblword * - plpgsql_parse_word * - plpgsql_add_initdatums * - plpgsql_recognize_err_condition * - exception_label_map * - plpgsql_parse_err_condition * - plpgsql_parse_wordtype * - plpgsql_parse_wordrowtype * - plpgsql_parse_cwordtype * - plpgsql_parse_cwordrowtype * - plpgsql_parse_result * - plpgsql_finish_datums * - plpgsql_compile_error_callback * - add_dummy_return *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pl_comp.c - Compiler part of the PL/pgSQL * procedural language * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/pl/plpgsql/src/pl_comp.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include #include "access/htup_details.h" #include "catalog/namespace.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "funcapi.h" #include "nodes/makefuncs.h" #include "parser/parse_type.h" #include "plpgsql.h" #include "utils/builtins.h" #include "utils/guc.h" #include "utils/lsyscache.h" #include "utils/memutils.h" #include "utils/regproc.h" #include "utils/rel.h" #include "utils/syscache.h" #include "utils/typcache.h" /* ---------- * Our own local and global variables * ---------- */ __thread PLpgSQL_stmt_block *plpgsql_parse_result; static __thread int datums_alloc; __thread int plpgsql_nDatums; __thread PLpgSQL_datum **plpgsql_Datums; static __thread int datums_last; __thread char *plpgsql_error_funcname; __thread bool plpgsql_DumpExecTree = false; __thread bool plpgsql_check_syntax = false; __thread PLpgSQL_function *plpgsql_curr_compile; /* A context appropriate for short-term allocs during compilation */ __thread MemoryContext plpgsql_compile_tmp_cxt; /* ---------- * Hash table for compiled functions * ---------- */ typedef struct plpgsql_hashent { PLpgSQL_func_hashkey key; PLpgSQL_function *function; } plpgsql_HashEnt; #define FUNCS_PER_USER 128 /* initial table size */ /* ---------- * Lookup table for EXCEPTION condition names * ---------- */ typedef struct { const char *label; int sqlerrstate; } ExceptionLabelMap; static const ExceptionLabelMap exception_label_map[] = { #include "plerrcodes.h" /* pgrminclude ignore */ {NULL, 0} }; /* ---------- * static prototypes * ---------- */ static PLpgSQL_function *do_compile(FunctionCallInfo fcinfo, HeapTuple procTup, PLpgSQL_function *function, PLpgSQL_func_hashkey *hashkey, bool forValidator); static void plpgsql_compile_error_callback(void *arg); static void add_parameter_name(PLpgSQL_nsitem_type itemtype, int itemno, const char *name); static void add_dummy_return(PLpgSQL_function *function); static Node *plpgsql_pre_column_ref(ParseState *pstate, ColumnRef *cref); static Node *plpgsql_post_column_ref(ParseState *pstate, ColumnRef *cref, Node *var); static Node *plpgsql_param_ref(ParseState *pstate, ParamRef *pref); static Node *resolve_column_ref(ParseState *pstate, PLpgSQL_expr *expr, ColumnRef *cref, bool error_if_no_field); static Node *make_datum_param(PLpgSQL_expr *expr, int dno, int location); static PLpgSQL_row *build_row_from_vars(PLpgSQL_variable **vars, int numvars); static PLpgSQL_type *build_datatype(HeapTuple typeTup, int32 typmod, Oid collation, TypeName *origtypname); static void compute_function_hashkey(FunctionCallInfo fcinfo, Form_pg_proc procStruct, PLpgSQL_func_hashkey *hashkey, bool forValidator); static void plpgsql_resolve_polymorphic_argtypes(int numargs, Oid *argtypes, char *argmodes, Node *call_expr, bool forValidator, const char *proname); static PLpgSQL_function *plpgsql_HashTableLookup(PLpgSQL_func_hashkey *func_key); static void plpgsql_HashTableInsert(PLpgSQL_function *function, PLpgSQL_func_hashkey *func_key); static void plpgsql_HashTableDelete(PLpgSQL_function *function); static void delete_function(PLpgSQL_function *func); /* ---------- * plpgsql_compile Make an execution tree for a PL/pgSQL function. * * If forValidator is true, we're only compiling for validation purposes, * and so some checks are skipped. * * Note: it's important for this to fall through quickly if the function * has already been compiled. * ---------- */ /* * This is the slow part of plpgsql_compile(). * * The passed-in "function" pointer is either NULL or an already-allocated * function struct to overwrite. * * While compiling a function, the CurrentMemoryContext is the * per-function memory context of the function we are compiling. That * means a palloc() will allocate storage with the same lifetime as * the function itself. * * Because palloc()'d storage will not be immediately freed, temporary * allocations should either be performed in a short-lived memory * context or explicitly pfree'd. Since not all backend functions are * careful about pfree'ing their allocations, it is also wise to * switch into a short-term context before calling into the * backend. An appropriate context for performing short-term * allocations is the plpgsql_compile_tmp_cxt. * * NB: this code is not re-entrant. We assume that nothing we do here could * result in the invocation of another plpgsql function. */ /* ---------- * plpgsql_compile_inline Make an execution tree for an anonymous code block. * * Note: this is generally parallel to do_compile(); is it worth trying to * merge the two? * * Note: we assume the block will be thrown away so there is no need to build * persistent data structures. * ---------- */ PLpgSQL_function * plpgsql_compile_inline(char *proc_source) { char *func_name = "inline_code_block"; PLpgSQL_function *function; ErrorContextCallback plerrcontext; PLpgSQL_variable *var; int parse_rc; MemoryContext func_cxt; /* * Setup the scanner input and error info. We assume that this function * cannot be invoked recursively, so there's no need to save and restore * the static variables used here. */ plpgsql_scanner_init(proc_source); plpgsql_error_funcname = func_name; /* * Setup error traceback support for ereport() */ plerrcontext.callback = plpgsql_compile_error_callback; plerrcontext.arg = proc_source; plerrcontext.previous = error_context_stack; error_context_stack = &plerrcontext; /* Do extra syntax checking if check_function_bodies is on */ plpgsql_check_syntax = check_function_bodies; /* Function struct does not live past current statement */ function = (PLpgSQL_function *) palloc0(sizeof(PLpgSQL_function)); plpgsql_curr_compile = function; /* * All the rest of the compile-time storage (e.g. parse tree) is kept in * its own memory context, so it can be reclaimed easily. */ func_cxt = AllocSetContextCreate(CurrentMemoryContext, "PL/pgSQL inline code context", ALLOCSET_DEFAULT_SIZES); plpgsql_compile_tmp_cxt = MemoryContextSwitchTo(func_cxt); function->fn_signature = pstrdup(func_name); function->fn_is_trigger = PLPGSQL_NOT_TRIGGER; function->fn_input_collation = InvalidOid; function->fn_cxt = func_cxt; function->out_param_varno = -1; /* set up for no OUT param */ function->resolve_option = plpgsql_variable_conflict; function->print_strict_params = plpgsql_print_strict_params; /* * don't do extra validation for inline code as we don't want to add spam * at runtime */ function->extra_warnings = 0; function->extra_errors = 0; function->nstatements = 0; plpgsql_ns_init(); plpgsql_ns_push(func_name, PLPGSQL_LABEL_BLOCK); plpgsql_DumpExecTree = false; plpgsql_start_datums(); /* Set up as though in a function returning VOID */ function->fn_rettype = VOIDOID; function->fn_retset = false; function->fn_retistuple = false; function->fn_retisdomain = false; function->fn_prokind = PROKIND_FUNCTION; /* a bit of hardwired knowledge about type VOID here */ function->fn_retbyval = true; function->fn_rettyplen = sizeof(int32); /* * Remember if function is STABLE/IMMUTABLE. XXX would it be better to * set this true inside a read-only transaction? Not clear. */ function->fn_readonly = false; /* * Create the magic FOUND variable. */ var = plpgsql_build_variable("found", 0, plpgsql_build_datatype(BOOLOID, -1, InvalidOid, NULL), true); function->found_varno = var->dno; /* * Now parse the function's text */ parse_rc = plpgsql_yyparse(); if (parse_rc != 0) elog(ERROR, "plpgsql parser returned %d", parse_rc); function->action = plpgsql_parse_result; plpgsql_scanner_finish(); /* * If it returns VOID (always true at the moment), we allow control to * fall off the end without an explicit RETURN statement. */ if (function->fn_rettype == VOIDOID) add_dummy_return(function); /* * Complete the function's info */ function->fn_nargs = 0; plpgsql_finish_datums(function); /* * Pop the error context stack */ error_context_stack = plerrcontext.previous; plpgsql_error_funcname = NULL; plpgsql_check_syntax = false; MemoryContextSwitchTo(plpgsql_compile_tmp_cxt); plpgsql_compile_tmp_cxt = NULL; return function; } /* * error context callback to let us supply a call-stack traceback. * If we are validating or executing an anonymous code block, the function * source text is passed as an argument. */ static void plpgsql_compile_error_callback(void *arg) { if (arg) { /* * Try to convert syntax error position to reference text of original * CREATE FUNCTION or DO command. */ if (function_parse_error_transpose((const char *) arg)) return; /* * Done if a syntax error position was reported; otherwise we have to * fall back to a "near line N" report. */ } if (plpgsql_error_funcname) errcontext("compilation of PL/pgSQL function \"%s\" near line %d", plpgsql_error_funcname, plpgsql_latest_lineno()); } /* * Add a name for a function parameter to the function's namespace */ /* * Add a dummy RETURN statement to the given function's body */ static void add_dummy_return(PLpgSQL_function *function) { /* * If the outer block has an EXCEPTION clause, we need to make a new outer * block, since the added RETURN shouldn't act like it is inside the * EXCEPTION clause. */ if (function->action->exceptions != NULL) { PLpgSQL_stmt_block *new; new = palloc0(sizeof(PLpgSQL_stmt_block)); new->cmd_type = PLPGSQL_STMT_BLOCK; new->stmtid = ++function->nstatements; new->body = list_make1(function->action); function->action = new; } if (function->action->body == NIL || ((PLpgSQL_stmt *) llast(function->action->body))->cmd_type != PLPGSQL_STMT_RETURN) { PLpgSQL_stmt_return *new; new = palloc0(sizeof(PLpgSQL_stmt_return)); new->cmd_type = PLPGSQL_STMT_RETURN; new->stmtid = ++function->nstatements; new->expr = NULL; new->retvarno = function->out_param_varno; function->action->body = lappend(function->action->body, new); } } /* * plpgsql_parser_setup set up parser hooks for dynamic parameters * * Note: this routine, and the hook functions it prepares for, are logically * part of plpgsql parsing. But they actually run during function execution, * when we are ready to evaluate a SQL query or expression that has not * previously been parsed and planned. */ /* * plpgsql_pre_column_ref parser callback before parsing a ColumnRef */ /* * plpgsql_post_column_ref parser callback after parsing a ColumnRef */ /* * plpgsql_param_ref parser callback for ParamRefs ($n symbols) */ /* * resolve_column_ref attempt to resolve a ColumnRef as a plpgsql var * * Returns the translated node structure, or NULL if name not found * * error_if_no_field tells whether to throw error or quietly return NULL if * we are able to match a record/row name but don't find a field name match. */ /* * Helper for columnref parsing: build a Param referencing a plpgsql datum, * and make sure that that datum is listed in the expression's paramnos. */ /* ---------- * plpgsql_parse_word The scanner calls this to postparse * any single word that is not a reserved keyword. * * word1 is the downcased/dequoted identifier; it must be palloc'd in the * function's long-term memory context. * * yytxt is the original token text; we need this to check for quoting, * so that later checks for unreserved keywords work properly. * * We attempt to recognize the token as a variable only if lookup is true * and the plpgsql_IdentifierLookup context permits it. * * If recognized as a variable, fill in *wdatum and return true; * if not recognized, fill in *word and return false. * (Note: those two pointers actually point to members of the same union, * but for notational reasons we pass them separately.) * ---------- */ bool plpgsql_parse_word(char *word1, const char *yytxt, bool lookup, PLwdatum *wdatum, PLword *word) { PLpgSQL_nsitem *ns; /* * We should not lookup variables in DECLARE sections. In SQL * expressions, there's no need to do so either --- lookup will happen * when the expression is compiled. */ if (lookup && plpgsql_IdentifierLookup == IDENTIFIER_LOOKUP_NORMAL) { /* * Do a lookup in the current namespace stack */ ns = plpgsql_ns_lookup(plpgsql_ns_top(), false, word1, NULL, NULL, NULL); if (ns != NULL) { switch (ns->itemtype) { case PLPGSQL_NSTYPE_VAR: case PLPGSQL_NSTYPE_REC: wdatum->datum = plpgsql_Datums[ns->itemno]; wdatum->ident = word1; wdatum->quoted = (yytxt[0] == '"'); wdatum->idents = NIL; return true; default: /* plpgsql_ns_lookup should never return anything else */ elog(ERROR, "unrecognized plpgsql itemtype: %d", ns->itemtype); } } } /* * Nothing found - up to now it's a word without any special meaning for * us. */ word->ident = word1; word->quoted = (yytxt[0] == '"'); return false; } /* ---------- * plpgsql_parse_dblword Same lookup for two words * separated by a dot. * ---------- */ bool plpgsql_parse_dblword(char *word1, char *word2, PLwdatum *wdatum, PLcword *cword) { PLpgSQL_nsitem *ns; List *idents; int nnames; idents = list_make2(makeString(word1), makeString(word2)); /* * We should do nothing in DECLARE sections. In SQL expressions, we * really only need to make sure that RECFIELD datums are created when * needed. */ if (plpgsql_IdentifierLookup != IDENTIFIER_LOOKUP_DECLARE) { /* * Do a lookup in the current namespace stack */ ns = plpgsql_ns_lookup(plpgsql_ns_top(), false, word1, word2, NULL, &nnames); if (ns != NULL) { switch (ns->itemtype) { case PLPGSQL_NSTYPE_VAR: /* Block-qualified reference to scalar variable. */ wdatum->datum = plpgsql_Datums[ns->itemno]; wdatum->ident = NULL; wdatum->quoted = false; /* not used */ wdatum->idents = idents; return true; case PLPGSQL_NSTYPE_REC: if (nnames == 1) { /* * First word is a record name, so second word could * be a field in this record. We build a RECFIELD * datum whether it is or not --- any error will be * detected later. */ PLpgSQL_rec *rec; PLpgSQL_recfield *new; rec = (PLpgSQL_rec *) (plpgsql_Datums[ns->itemno]); new = plpgsql_build_recfield(rec, word2); wdatum->datum = (PLpgSQL_datum *) new; } else { /* Block-qualified reference to record variable. */ wdatum->datum = plpgsql_Datums[ns->itemno]; } wdatum->ident = NULL; wdatum->quoted = false; /* not used */ wdatum->idents = idents; return true; default: break; } } } /* Nothing found */ cword->idents = idents; return false; } /* ---------- * plpgsql_parse_tripword Same lookup for three words * separated by dots. * ---------- */ bool plpgsql_parse_tripword(char *word1, char *word2, char *word3, PLwdatum *wdatum, PLcword *cword) { PLpgSQL_nsitem *ns; List *idents; int nnames; idents = list_make3(makeString(word1), makeString(word2), makeString(word3)); /* * We should do nothing in DECLARE sections. In SQL expressions, we * really only need to make sure that RECFIELD datums are created when * needed. */ if (plpgsql_IdentifierLookup != IDENTIFIER_LOOKUP_DECLARE) { /* * Do a lookup in the current namespace stack. Must find a qualified * reference, else ignore. */ ns = plpgsql_ns_lookup(plpgsql_ns_top(), false, word1, word2, word3, &nnames); if (ns != NULL && nnames == 2) { switch (ns->itemtype) { case PLPGSQL_NSTYPE_REC: { /* * words 1/2 are a record name, so third word could be * a field in this record. */ PLpgSQL_rec *rec; PLpgSQL_recfield *new; rec = (PLpgSQL_rec *) (plpgsql_Datums[ns->itemno]); new = plpgsql_build_recfield(rec, word3); wdatum->datum = (PLpgSQL_datum *) new; wdatum->ident = NULL; wdatum->quoted = false; /* not used */ wdatum->idents = idents; return true; } default: break; } } } /* Nothing found */ cword->idents = idents; return false; } /* ---------- * plpgsql_parse_wordtype The scanner found word%TYPE. word can be * a variable name or a basetype. * * Returns datatype struct, or NULL if no match found for word. * ---------- */ PLpgSQL_type * plpgsql_parse_wordtype(char *ident) { return NULL; } /* ---------- * plpgsql_parse_cwordtype Same lookup for compositeword%TYPE * ---------- */ PLpgSQL_type * plpgsql_parse_cwordtype(List *idents) { return NULL; } /* ---------- * plpgsql_parse_wordrowtype Scanner found word%ROWTYPE. * So word must be a table name. * ---------- */ PLpgSQL_type * plpgsql_parse_wordrowtype(char *ident) { return NULL; } /* ---------- * plpgsql_parse_cwordrowtype Scanner found compositeword%ROWTYPE. * So word must be a namespace qualified table name. * ---------- */ PLpgSQL_type * plpgsql_parse_cwordrowtype(List *idents) { return NULL; } /* * plpgsql_build_variable - build a datum-array entry of a given * datatype * * The returned struct may be a PLpgSQL_var or PLpgSQL_rec * depending on the given datatype, and is allocated via * palloc. The struct is automatically added to the current datum * array, and optionally to the current namespace. */ PLpgSQL_variable * plpgsql_build_variable(const char *refname, int lineno, PLpgSQL_type *dtype, bool add2namespace) { PLpgSQL_variable *result; switch (dtype->ttype) { case PLPGSQL_TTYPE_SCALAR: { /* Ordinary scalar datatype */ PLpgSQL_var *var; var = palloc0(sizeof(PLpgSQL_var)); var->dtype = PLPGSQL_DTYPE_VAR; var->refname = pstrdup(refname); var->lineno = lineno; var->datatype = dtype; /* other fields are left as 0, might be changed by caller */ /* preset to NULL */ var->value = 0; var->isnull = true; var->freeval = false; plpgsql_adddatum((PLpgSQL_datum *) var); if (add2namespace) plpgsql_ns_additem(PLPGSQL_NSTYPE_VAR, var->dno, refname); result = (PLpgSQL_variable *) var; break; } case PLPGSQL_TTYPE_REC: { /* Composite type -- build a record variable */ PLpgSQL_rec *rec; rec = plpgsql_build_record(refname, lineno, dtype, dtype->typoid, add2namespace); result = (PLpgSQL_variable *) rec; break; } case PLPGSQL_TTYPE_PSEUDO: ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("variable \"%s\" has pseudo-type %s", refname, format_type_be(dtype->typoid)))); result = NULL; /* keep compiler quiet */ break; default: elog(ERROR, "unrecognized ttype: %d", dtype->ttype); result = NULL; /* keep compiler quiet */ break; } return result; } /* * Build empty named record variable, and optionally add it to namespace */ PLpgSQL_rec * plpgsql_build_record(const char *refname, int lineno, PLpgSQL_type *dtype, Oid rectypeid, bool add2namespace) { PLpgSQL_rec *rec; rec = palloc0(sizeof(PLpgSQL_rec)); rec->dtype = PLPGSQL_DTYPE_REC; rec->refname = pstrdup(refname); rec->lineno = lineno; /* other fields are left as 0, might be changed by caller */ rec->datatype = dtype; rec->rectypeid = rectypeid; rec->firstfield = -1; rec->erh = NULL; plpgsql_adddatum((PLpgSQL_datum *) rec); if (add2namespace) plpgsql_ns_additem(PLPGSQL_NSTYPE_REC, rec->dno, rec->refname); return rec; } /* * Build a row-variable data structure given the component variables. * Include a rowtupdesc, since we will need to materialize the row result. */ /* * Build a RECFIELD datum for the named field of the specified record variable * * If there's already such a datum, just return it; we don't need duplicates. */ PLpgSQL_recfield * plpgsql_build_recfield(PLpgSQL_rec *rec, const char *fldname) { PLpgSQL_recfield *recfield; int i; /* search for an existing datum referencing this field */ i = rec->firstfield; while (i >= 0) { PLpgSQL_recfield *fld = (PLpgSQL_recfield *) plpgsql_Datums[i]; Assert(fld->dtype == PLPGSQL_DTYPE_RECFIELD && fld->recparentno == rec->dno); if (strcmp(fld->fieldname, fldname) == 0) return fld; i = fld->nextfield; } /* nope, so make a new one */ recfield = palloc0(sizeof(PLpgSQL_recfield)); recfield->dtype = PLPGSQL_DTYPE_RECFIELD; recfield->fieldname = pstrdup(fldname); recfield->recparentno = rec->dno; recfield->rectupledescid = INVALID_TUPLEDESC_IDENTIFIER; plpgsql_adddatum((PLpgSQL_datum *) recfield); /* now we can link it into the parent's chain */ recfield->nextfield = rec->firstfield; rec->firstfield = recfield->dno; return recfield; } /* * plpgsql_build_datatype * Build PLpgSQL_type struct given type OID, typmod, collation, * and type's parsed name. * * If collation is not InvalidOid then it overrides the type's default * collation. But collation is ignored if the datatype is non-collatable. * * origtypname is the parsed form of what the user wrote as the type name. * It can be NULL if the type could not be a composite type, or if it was * identified by OID to begin with (e.g., it's a function argument type). */ PLpgSQL_type * plpgsql_build_datatype(Oid typeOid, int32 typmod, Oid collation, TypeName *origtypname) { PLpgSQL_type *typ; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup("UNKNOWN"); typ->ttype = PLPGSQL_TTYPE_SCALAR; return typ; } /* * Utility subroutine to make a PLpgSQL_type struct given a pg_type entry * and additional details (see comments for plpgsql_build_datatype). */ /* * plpgsql_recognize_err_condition * Check condition name and translate it to SQLSTATE. * * Note: there are some cases where the same condition name has multiple * entries in the table. We arbitrarily return the first match. */ int plpgsql_recognize_err_condition(const char *condname, bool allow_sqlstate) { int i; if (allow_sqlstate) { if (strlen(condname) == 5 && strspn(condname, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") == 5) return MAKE_SQLSTATE(condname[0], condname[1], condname[2], condname[3], condname[4]); } for (i = 0; exception_label_map[i].label != NULL; i++) { if (strcmp(condname, exception_label_map[i].label) == 0) return exception_label_map[i].sqlerrstate; } ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("unrecognized exception condition \"%s\"", condname))); return 0; /* keep compiler quiet */ } /* * plpgsql_parse_err_condition * Generate PLpgSQL_condition entry(s) for an exception condition name * * This has to be able to return a list because there are some duplicate * names in the table of error code names. */ PLpgSQL_condition * plpgsql_parse_err_condition(char *condname) { int i; PLpgSQL_condition *new; PLpgSQL_condition *prev; /* * XXX Eventually we will want to look for user-defined exception names * here. */ /* * OTHERS is represented as code 0 (which would map to '00000', but we * have no need to represent that as an exception condition). */ if (strcmp(condname, "others") == 0) { new = palloc(sizeof(PLpgSQL_condition)); new->sqlerrstate = 0; new->condname = condname; new->next = NULL; return new; } prev = NULL; for (i = 0; exception_label_map[i].label != NULL; i++) { if (strcmp(condname, exception_label_map[i].label) == 0) { new = palloc(sizeof(PLpgSQL_condition)); new->sqlerrstate = exception_label_map[i].sqlerrstate; new->condname = condname; new->next = prev; prev = new; } } if (!prev) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("unrecognized exception condition \"%s\"", condname))); return prev; } /* ---------- * plpgsql_start_datums Initialize datum list at compile startup. * ---------- */ void plpgsql_start_datums(void) { datums_alloc = 128; plpgsql_nDatums = 0; /* This is short-lived, so needn't allocate in function's cxt */ plpgsql_Datums = MemoryContextAlloc(plpgsql_compile_tmp_cxt, sizeof(PLpgSQL_datum *) * datums_alloc); /* datums_last tracks what's been seen by plpgsql_add_initdatums() */ datums_last = 0; } /* ---------- * plpgsql_adddatum Add a variable, record or row * to the compiler's datum list. * ---------- */ void plpgsql_adddatum(PLpgSQL_datum *newdatum) { if (plpgsql_nDatums == datums_alloc) { datums_alloc *= 2; plpgsql_Datums = repalloc(plpgsql_Datums, sizeof(PLpgSQL_datum *) * datums_alloc); } newdatum->dno = plpgsql_nDatums; plpgsql_Datums[plpgsql_nDatums++] = newdatum; } /* ---------- * plpgsql_finish_datums Copy completed datum info into function struct. * ---------- */ void plpgsql_finish_datums(PLpgSQL_function *function) { Size copiable_size = 0; int i; function->ndatums = plpgsql_nDatums; function->datums = palloc(sizeof(PLpgSQL_datum *) * plpgsql_nDatums); for (i = 0; i < plpgsql_nDatums; i++) { function->datums[i] = plpgsql_Datums[i]; /* This must agree with copy_plpgsql_datums on what is copiable */ switch (function->datums[i]->dtype) { case PLPGSQL_DTYPE_VAR: case PLPGSQL_DTYPE_PROMISE: copiable_size += MAXALIGN(sizeof(PLpgSQL_var)); break; case PLPGSQL_DTYPE_REC: copiable_size += MAXALIGN(sizeof(PLpgSQL_rec)); break; default: break; } } function->copiable_size = copiable_size; } /* ---------- * plpgsql_add_initdatums Make an array of the datum numbers of * all the initializable datums created since the last call * to this function. * * If varnos is NULL, we just forget any datum entries created since the * last call. * * This is used around a DECLARE section to create a list of the datums * that have to be initialized at block entry. Note that datums can also * be created elsewhere than DECLARE, eg by a FOR-loop, but it is then * the responsibility of special-purpose code to initialize them. * ---------- */ int plpgsql_add_initdatums(int **varnos) { int i; int n = 0; /* * The set of dtypes recognized here must match what exec_stmt_block() * cares about (re)initializing at block entry. */ for (i = datums_last; i < plpgsql_nDatums; i++) { switch (plpgsql_Datums[i]->dtype) { case PLPGSQL_DTYPE_VAR: case PLPGSQL_DTYPE_REC: n++; break; default: break; } } if (varnos != NULL) { if (n > 0) { *varnos = (int *) palloc(sizeof(int) * n); n = 0; for (i = datums_last; i < plpgsql_nDatums; i++) { switch (plpgsql_Datums[i]->dtype) { case PLPGSQL_DTYPE_VAR: case PLPGSQL_DTYPE_REC: (*varnos)[n++] = plpgsql_Datums[i]->dno; default: break; } } } else *varnos = NULL; } datums_last = plpgsql_nDatums; return n; } /* * Compute the hashkey for a given function invocation * * The hashkey is returned into the caller-provided storage at *hashkey. */ /* * This is the same as the standard resolve_polymorphic_argtypes() function, * but with a special case for validation: assume that polymorphic arguments * are integer, integer-array or integer-range. Also, we go ahead and report * the error if we can't resolve the types. */ /* * delete_function - clean up as much as possible of a stale function cache * * We can't release the PLpgSQL_function struct itself, because of the * possibility that there are fn_extra pointers to it. We can release * the subsidiary storage, but only if there are no active evaluations * in progress. Otherwise we'll just leak that storage. Since the * case would only occur if a pg_proc update is detected during a nested * recursive call on the function, a leak seems acceptable. * * Note that this can be called more than once if there are multiple fn_extra * pointers to the same function cache. Hence be careful not to do things * twice. */ /* exported so we can call it from _PG_init() */ libpg_query-13-2.1.0/src/postgres/src_pl_plpgsql_src_pl_funcs.c000066400000000000000000000451061413137616400246560ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - plpgsql_ns_init * - ns_top * - plpgsql_ns_push * - plpgsql_ns_additem * - plpgsql_ns_pop * - plpgsql_ns_lookup * - plpgsql_ns_top * - plpgsql_getdiag_kindname * - plpgsql_ns_lookup_label * - plpgsql_ns_find_nearest_loop * - plpgsql_free_function_memory * - free_expr * - free_block * - free_stmts * - free_stmt * - free_assign * - free_if * - free_case * - free_loop * - free_while * - free_fori * - free_fors * - free_forc * - free_foreach_a * - free_exit * - free_return * - free_return_next * - free_return_query * - free_raise * - free_assert * - free_execsql * - free_dynexecute * - free_dynfors * - free_getdiag * - free_open * - free_fetch * - free_close * - free_perform * - free_call * - free_commit * - free_rollback * - free_set *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pl_funcs.c - Misc functions for the PL/pgSQL * procedural language * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/pl/plpgsql/src/pl_funcs.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "plpgsql.h" #include "utils/memutils.h" /* ---------- * Local variables for namespace handling * * The namespace structure actually forms a tree, of which only one linear * list or "chain" (from the youngest item to the root) is accessible from * any one plpgsql statement. During initial parsing of a function, ns_top * points to the youngest item accessible from the block currently being * parsed. We store the entire tree, however, since at runtime we will need * to access the chain that's relevant to any one statement. * * Block boundaries in the namespace chain are marked by PLPGSQL_NSTYPE_LABEL * items. * ---------- */ static __thread PLpgSQL_nsitem *ns_top = NULL; /* ---------- * plpgsql_ns_init Initialize namespace processing for a new function * ---------- */ void plpgsql_ns_init(void) { ns_top = NULL; } /* ---------- * plpgsql_ns_push Create a new namespace level * ---------- */ void plpgsql_ns_push(const char *label, PLpgSQL_label_type label_type) { if (label == NULL) label = ""; plpgsql_ns_additem(PLPGSQL_NSTYPE_LABEL, (int) label_type, label); } /* ---------- * plpgsql_ns_pop Pop entries back to (and including) the last label * ---------- */ void plpgsql_ns_pop(void) { Assert(ns_top != NULL); while (ns_top->itemtype != PLPGSQL_NSTYPE_LABEL) ns_top = ns_top->prev; ns_top = ns_top->prev; } /* ---------- * plpgsql_ns_top Fetch the current namespace chain end * ---------- */ PLpgSQL_nsitem * plpgsql_ns_top(void) { return ns_top; } /* ---------- * plpgsql_ns_additem Add an item to the current namespace chain * ---------- */ void plpgsql_ns_additem(PLpgSQL_nsitem_type itemtype, int itemno, const char *name) { PLpgSQL_nsitem *nse; Assert(name != NULL); /* first item added must be a label */ Assert(ns_top != NULL || itemtype == PLPGSQL_NSTYPE_LABEL); nse = palloc(offsetof(PLpgSQL_nsitem, name) + strlen(name) + 1); nse->itemtype = itemtype; nse->itemno = itemno; nse->prev = ns_top; strcpy(nse->name, name); ns_top = nse; } /* ---------- * plpgsql_ns_lookup Lookup an identifier in the given namespace chain * * Note that this only searches for variables, not labels. * * If localmode is true, only the topmost block level is searched. * * name1 must be non-NULL. Pass NULL for name2 and/or name3 if parsing a name * with fewer than three components. * * If names_used isn't NULL, *names_used receives the number of names * matched: 0 if no match, 1 if name1 matched an unqualified variable name, * 2 if name1 and name2 matched a block label + variable name. * * Note that name3 is never directly matched to anything. However, if it * isn't NULL, we will disregard qualified matches to scalar variables. * Similarly, if name2 isn't NULL, we disregard unqualified matches to * scalar variables. * ---------- */ PLpgSQL_nsitem * plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode, const char *name1, const char *name2, const char *name3, int *names_used) { /* Outer loop iterates once per block level in the namespace chain */ while (ns_cur != NULL) { PLpgSQL_nsitem *nsitem; /* Check this level for unqualified match to variable name */ for (nsitem = ns_cur; nsitem->itemtype != PLPGSQL_NSTYPE_LABEL; nsitem = nsitem->prev) { if (strcmp(nsitem->name, name1) == 0) { if (name2 == NULL || nsitem->itemtype != PLPGSQL_NSTYPE_VAR) { if (names_used) *names_used = 1; return nsitem; } } } /* Check this level for qualified match to variable name */ if (name2 != NULL && strcmp(nsitem->name, name1) == 0) { for (nsitem = ns_cur; nsitem->itemtype != PLPGSQL_NSTYPE_LABEL; nsitem = nsitem->prev) { if (strcmp(nsitem->name, name2) == 0) { if (name3 == NULL || nsitem->itemtype != PLPGSQL_NSTYPE_VAR) { if (names_used) *names_used = 2; return nsitem; } } } } if (localmode) break; /* do not look into upper levels */ ns_cur = nsitem->prev; } /* This is just to suppress possibly-uninitialized-variable warnings */ if (names_used) *names_used = 0; return NULL; /* No match found */ } /* ---------- * plpgsql_ns_lookup_label Lookup a label in the given namespace chain * ---------- */ PLpgSQL_nsitem * plpgsql_ns_lookup_label(PLpgSQL_nsitem *ns_cur, const char *name) { while (ns_cur != NULL) { if (ns_cur->itemtype == PLPGSQL_NSTYPE_LABEL && strcmp(ns_cur->name, name) == 0) return ns_cur; ns_cur = ns_cur->prev; } return NULL; /* label not found */ } /* ---------- * plpgsql_ns_find_nearest_loop Find innermost loop label in namespace chain * ---------- */ PLpgSQL_nsitem * plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur) { while (ns_cur != NULL) { if (ns_cur->itemtype == PLPGSQL_NSTYPE_LABEL && ns_cur->itemno == PLPGSQL_LABEL_LOOP) return ns_cur; ns_cur = ns_cur->prev; } return NULL; /* no loop found */ } /* * Statement type as a string, for use in error messages etc. */ /* * GET DIAGNOSTICS item name as a string, for use in error messages etc. */ const char * plpgsql_getdiag_kindname(PLpgSQL_getdiag_kind kind) { switch (kind) { case PLPGSQL_GETDIAG_ROW_COUNT: return "ROW_COUNT"; case PLPGSQL_GETDIAG_CONTEXT: return "PG_CONTEXT"; case PLPGSQL_GETDIAG_ERROR_CONTEXT: return "PG_EXCEPTION_CONTEXT"; case PLPGSQL_GETDIAG_ERROR_DETAIL: return "PG_EXCEPTION_DETAIL"; case PLPGSQL_GETDIAG_ERROR_HINT: return "PG_EXCEPTION_HINT"; case PLPGSQL_GETDIAG_RETURNED_SQLSTATE: return "RETURNED_SQLSTATE"; case PLPGSQL_GETDIAG_COLUMN_NAME: return "COLUMN_NAME"; case PLPGSQL_GETDIAG_CONSTRAINT_NAME: return "CONSTRAINT_NAME"; case PLPGSQL_GETDIAG_DATATYPE_NAME: return "PG_DATATYPE_NAME"; case PLPGSQL_GETDIAG_MESSAGE_TEXT: return "MESSAGE_TEXT"; case PLPGSQL_GETDIAG_TABLE_NAME: return "TABLE_NAME"; case PLPGSQL_GETDIAG_SCHEMA_NAME: return "SCHEMA_NAME"; } return "unknown"; } /********************************************************************** * Release memory when a PL/pgSQL function is no longer needed * * The code for recursing through the function tree is really only * needed to locate PLpgSQL_expr nodes, which may contain references * to saved SPI Plans that must be freed. The function tree itself, * along with subsidiary data, is freed in one swoop by freeing the * function's permanent memory context. **********************************************************************/ static void free_stmt(PLpgSQL_stmt *stmt); static void free_block(PLpgSQL_stmt_block *block); static void free_assign(PLpgSQL_stmt_assign *stmt); static void free_if(PLpgSQL_stmt_if *stmt); static void free_case(PLpgSQL_stmt_case *stmt); static void free_loop(PLpgSQL_stmt_loop *stmt); static void free_while(PLpgSQL_stmt_while *stmt); static void free_fori(PLpgSQL_stmt_fori *stmt); static void free_fors(PLpgSQL_stmt_fors *stmt); static void free_forc(PLpgSQL_stmt_forc *stmt); static void free_foreach_a(PLpgSQL_stmt_foreach_a *stmt); static void free_exit(PLpgSQL_stmt_exit *stmt); static void free_return(PLpgSQL_stmt_return *stmt); static void free_return_next(PLpgSQL_stmt_return_next *stmt); static void free_return_query(PLpgSQL_stmt_return_query *stmt); static void free_raise(PLpgSQL_stmt_raise *stmt); static void free_assert(PLpgSQL_stmt_assert *stmt); static void free_execsql(PLpgSQL_stmt_execsql *stmt); static void free_dynexecute(PLpgSQL_stmt_dynexecute *stmt); static void free_dynfors(PLpgSQL_stmt_dynfors *stmt); static void free_getdiag(PLpgSQL_stmt_getdiag *stmt); static void free_open(PLpgSQL_stmt_open *stmt); static void free_fetch(PLpgSQL_stmt_fetch *stmt); static void free_close(PLpgSQL_stmt_close *stmt); static void free_perform(PLpgSQL_stmt_perform *stmt); static void free_call(PLpgSQL_stmt_call *stmt); static void free_commit(PLpgSQL_stmt_commit *stmt); static void free_rollback(PLpgSQL_stmt_rollback *stmt); static void free_set(PLpgSQL_stmt_set *stmt); static void free_expr(PLpgSQL_expr *expr); static void free_stmt(PLpgSQL_stmt *stmt) { switch (stmt->cmd_type) { case PLPGSQL_STMT_BLOCK: free_block((PLpgSQL_stmt_block *) stmt); break; case PLPGSQL_STMT_ASSIGN: free_assign((PLpgSQL_stmt_assign *) stmt); break; case PLPGSQL_STMT_IF: free_if((PLpgSQL_stmt_if *) stmt); break; case PLPGSQL_STMT_CASE: free_case((PLpgSQL_stmt_case *) stmt); break; case PLPGSQL_STMT_LOOP: free_loop((PLpgSQL_stmt_loop *) stmt); break; case PLPGSQL_STMT_WHILE: free_while((PLpgSQL_stmt_while *) stmt); break; case PLPGSQL_STMT_FORI: free_fori((PLpgSQL_stmt_fori *) stmt); break; case PLPGSQL_STMT_FORS: free_fors((PLpgSQL_stmt_fors *) stmt); break; case PLPGSQL_STMT_FORC: free_forc((PLpgSQL_stmt_forc *) stmt); break; case PLPGSQL_STMT_FOREACH_A: free_foreach_a((PLpgSQL_stmt_foreach_a *) stmt); break; case PLPGSQL_STMT_EXIT: free_exit((PLpgSQL_stmt_exit *) stmt); break; case PLPGSQL_STMT_RETURN: free_return((PLpgSQL_stmt_return *) stmt); break; case PLPGSQL_STMT_RETURN_NEXT: free_return_next((PLpgSQL_stmt_return_next *) stmt); break; case PLPGSQL_STMT_RETURN_QUERY: free_return_query((PLpgSQL_stmt_return_query *) stmt); break; case PLPGSQL_STMT_RAISE: free_raise((PLpgSQL_stmt_raise *) stmt); break; case PLPGSQL_STMT_ASSERT: free_assert((PLpgSQL_stmt_assert *) stmt); break; case PLPGSQL_STMT_EXECSQL: free_execsql((PLpgSQL_stmt_execsql *) stmt); break; case PLPGSQL_STMT_DYNEXECUTE: free_dynexecute((PLpgSQL_stmt_dynexecute *) stmt); break; case PLPGSQL_STMT_DYNFORS: free_dynfors((PLpgSQL_stmt_dynfors *) stmt); break; case PLPGSQL_STMT_GETDIAG: free_getdiag((PLpgSQL_stmt_getdiag *) stmt); break; case PLPGSQL_STMT_OPEN: free_open((PLpgSQL_stmt_open *) stmt); break; case PLPGSQL_STMT_FETCH: free_fetch((PLpgSQL_stmt_fetch *) stmt); break; case PLPGSQL_STMT_CLOSE: free_close((PLpgSQL_stmt_close *) stmt); break; case PLPGSQL_STMT_PERFORM: free_perform((PLpgSQL_stmt_perform *) stmt); break; case PLPGSQL_STMT_CALL: free_call((PLpgSQL_stmt_call *) stmt); break; case PLPGSQL_STMT_COMMIT: free_commit((PLpgSQL_stmt_commit *) stmt); break; case PLPGSQL_STMT_ROLLBACK: free_rollback((PLpgSQL_stmt_rollback *) stmt); break; case PLPGSQL_STMT_SET: free_set((PLpgSQL_stmt_set *) stmt); break; default: elog(ERROR, "unrecognized cmd_type: %d", stmt->cmd_type); break; } } static void free_stmts(List *stmts) { ListCell *s; foreach(s, stmts) { free_stmt((PLpgSQL_stmt *) lfirst(s)); } } static void free_block(PLpgSQL_stmt_block *block) { free_stmts(block->body); if (block->exceptions) { ListCell *e; foreach(e, block->exceptions->exc_list) { PLpgSQL_exception *exc = (PLpgSQL_exception *) lfirst(e); free_stmts(exc->action); } } } static void free_assign(PLpgSQL_stmt_assign *stmt) { free_expr(stmt->expr); } static void free_if(PLpgSQL_stmt_if *stmt) { ListCell *l; free_expr(stmt->cond); free_stmts(stmt->then_body); foreach(l, stmt->elsif_list) { PLpgSQL_if_elsif *elif = (PLpgSQL_if_elsif *) lfirst(l); free_expr(elif->cond); free_stmts(elif->stmts); } free_stmts(stmt->else_body); } static void free_case(PLpgSQL_stmt_case *stmt) { ListCell *l; free_expr(stmt->t_expr); foreach(l, stmt->case_when_list) { PLpgSQL_case_when *cwt = (PLpgSQL_case_when *) lfirst(l); free_expr(cwt->expr); free_stmts(cwt->stmts); } free_stmts(stmt->else_stmts); } static void free_loop(PLpgSQL_stmt_loop *stmt) { free_stmts(stmt->body); } static void free_while(PLpgSQL_stmt_while *stmt) { free_expr(stmt->cond); free_stmts(stmt->body); } static void free_fori(PLpgSQL_stmt_fori *stmt) { free_expr(stmt->lower); free_expr(stmt->upper); free_expr(stmt->step); free_stmts(stmt->body); } static void free_fors(PLpgSQL_stmt_fors *stmt) { free_stmts(stmt->body); free_expr(stmt->query); } static void free_forc(PLpgSQL_stmt_forc *stmt) { free_stmts(stmt->body); free_expr(stmt->argquery); } static void free_foreach_a(PLpgSQL_stmt_foreach_a *stmt) { free_expr(stmt->expr); free_stmts(stmt->body); } static void free_open(PLpgSQL_stmt_open *stmt) { ListCell *lc; free_expr(stmt->argquery); free_expr(stmt->query); free_expr(stmt->dynquery); foreach(lc, stmt->params) { free_expr((PLpgSQL_expr *) lfirst(lc)); } } static void free_fetch(PLpgSQL_stmt_fetch *stmt) { free_expr(stmt->expr); } static void free_close(PLpgSQL_stmt_close *stmt) { } static void free_perform(PLpgSQL_stmt_perform *stmt) { free_expr(stmt->expr); } static void free_call(PLpgSQL_stmt_call *stmt) { free_expr(stmt->expr); } static void free_commit(PLpgSQL_stmt_commit *stmt) { } static void free_rollback(PLpgSQL_stmt_rollback *stmt) { } static void free_set(PLpgSQL_stmt_set *stmt) { free_expr(stmt->expr); } static void free_exit(PLpgSQL_stmt_exit *stmt) { free_expr(stmt->cond); } static void free_return(PLpgSQL_stmt_return *stmt) { free_expr(stmt->expr); } static void free_return_next(PLpgSQL_stmt_return_next *stmt) { free_expr(stmt->expr); } static void free_return_query(PLpgSQL_stmt_return_query *stmt) { ListCell *lc; free_expr(stmt->query); free_expr(stmt->dynquery); foreach(lc, stmt->params) { free_expr((PLpgSQL_expr *) lfirst(lc)); } } static void free_raise(PLpgSQL_stmt_raise *stmt) { ListCell *lc; foreach(lc, stmt->params) { free_expr((PLpgSQL_expr *) lfirst(lc)); } foreach(lc, stmt->options) { PLpgSQL_raise_option *opt = (PLpgSQL_raise_option *) lfirst(lc); free_expr(opt->expr); } } static void free_assert(PLpgSQL_stmt_assert *stmt) { free_expr(stmt->cond); free_expr(stmt->message); } static void free_execsql(PLpgSQL_stmt_execsql *stmt) { free_expr(stmt->sqlstmt); } static void free_dynexecute(PLpgSQL_stmt_dynexecute *stmt) { ListCell *lc; free_expr(stmt->query); foreach(lc, stmt->params) { free_expr((PLpgSQL_expr *) lfirst(lc)); } } static void free_dynfors(PLpgSQL_stmt_dynfors *stmt) { ListCell *lc; free_stmts(stmt->body); free_expr(stmt->query); foreach(lc, stmt->params) { free_expr((PLpgSQL_expr *) lfirst(lc)); } } static void free_getdiag(PLpgSQL_stmt_getdiag *stmt) { } static void free_expr(PLpgSQL_expr *expr) {} void plpgsql_free_function_memory(PLpgSQL_function *func) { int i; /* Better not call this on an in-use function */ Assert(func->use_count == 0); /* Release plans associated with variable declarations */ for (i = 0; i < func->ndatums; i++) { PLpgSQL_datum *d = func->datums[i]; switch (d->dtype) { case PLPGSQL_DTYPE_VAR: case PLPGSQL_DTYPE_PROMISE: { PLpgSQL_var *var = (PLpgSQL_var *) d; free_expr(var->default_val); free_expr(var->cursor_explicit_expr); } break; case PLPGSQL_DTYPE_ROW: break; case PLPGSQL_DTYPE_REC: { PLpgSQL_rec *rec = (PLpgSQL_rec *) d; free_expr(rec->default_val); } break; case PLPGSQL_DTYPE_RECFIELD: break; case PLPGSQL_DTYPE_ARRAYELEM: free_expr(((PLpgSQL_arrayelem *) d)->subscript); break; default: elog(ERROR, "unrecognized data type: %d", d->dtype); } } func->ndatums = 0; /* Release plans in statement tree */ if (func->action) free_block(func->action); func->action = NULL; /* * And finally, release all memory except the PLpgSQL_function struct * itself (which has to be kept around because there may be multiple * fn_extra pointers to it). */ if (func->fn_cxt) MemoryContextDelete(func->fn_cxt); func->fn_cxt = NULL; } /********************************************************************** * Debug functions for analyzing the compiled code **********************************************************************/ static void dump_ind(void); static void dump_stmt(PLpgSQL_stmt *stmt); static void dump_block(PLpgSQL_stmt_block *block); static void dump_assign(PLpgSQL_stmt_assign *stmt); static void dump_if(PLpgSQL_stmt_if *stmt); static void dump_case(PLpgSQL_stmt_case *stmt); static void dump_loop(PLpgSQL_stmt_loop *stmt); static void dump_while(PLpgSQL_stmt_while *stmt); static void dump_fori(PLpgSQL_stmt_fori *stmt); static void dump_fors(PLpgSQL_stmt_fors *stmt); static void dump_forc(PLpgSQL_stmt_forc *stmt); static void dump_foreach_a(PLpgSQL_stmt_foreach_a *stmt); static void dump_exit(PLpgSQL_stmt_exit *stmt); static void dump_return(PLpgSQL_stmt_return *stmt); static void dump_return_next(PLpgSQL_stmt_return_next *stmt); static void dump_return_query(PLpgSQL_stmt_return_query *stmt); static void dump_raise(PLpgSQL_stmt_raise *stmt); static void dump_assert(PLpgSQL_stmt_assert *stmt); static void dump_execsql(PLpgSQL_stmt_execsql *stmt); static void dump_dynexecute(PLpgSQL_stmt_dynexecute *stmt); static void dump_dynfors(PLpgSQL_stmt_dynfors *stmt); static void dump_getdiag(PLpgSQL_stmt_getdiag *stmt); static void dump_open(PLpgSQL_stmt_open *stmt); static void dump_fetch(PLpgSQL_stmt_fetch *stmt); static void dump_cursor_direction(PLpgSQL_stmt_fetch *stmt); static void dump_close(PLpgSQL_stmt_close *stmt); static void dump_perform(PLpgSQL_stmt_perform *stmt); static void dump_call(PLpgSQL_stmt_call *stmt); static void dump_commit(PLpgSQL_stmt_commit *stmt); static void dump_rollback(PLpgSQL_stmt_rollback *stmt); static void dump_set(PLpgSQL_stmt_set *stmt); static void dump_expr(PLpgSQL_expr *expr); libpg_query-13-2.1.0/src/postgres/src_pl_plpgsql_src_pl_gram.c000066400000000000000000006171561413137616400245000ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - plpgsql_yyparse * - plpgsql_yynerrs * - plpgsql_yychar * - plpgsql_yylval * - plpgsql_yylloc * - yypact * - yytranslate * - yycheck * - yytable * - yydefact * - yyr2 * - check_labels * - read_sql_stmt * - read_datatype * - parse_datatype * - read_sql_expression * - tok_is_keyword * - word_is_not_variable * - cword_is_not_variable * - check_assignable * - make_case * - read_sql_expression2 * - make_scalar_list1 * - read_cursor_args * - read_sql_construct * - check_sql_expr * - plpgsql_sql_error_callback * - NameOfDatum * - read_into_scalar_list * - current_token_is_not_variable * - make_return_next_stmt * - make_return_query_stmt * - make_return_stmt * - read_raise_options * - check_raise_parameters * - make_execsql_stmt * - read_into_target * - read_fetch_direction * - complete_direction * - yyr1 * - yypgoto * - yydefgoto * - yydestruct * - yystos *-------------------------------------------------------------------- */ /* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Using locations. */ #define YYLSP_NEEDED 1 /* Substitute the variable and function names. */ #define yyparse plpgsql_yyparse #define yylex plpgsql_yylex #define yyerror plpgsql_yyerror #define yylval plpgsql_yylval #define yychar plpgsql_yychar #define yydebug plpgsql_yydebug #define yynerrs plpgsql_yynerrs #define yylloc plpgsql_yylloc /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { IDENT = 258, UIDENT = 259, FCONST = 260, SCONST = 261, USCONST = 262, BCONST = 263, XCONST = 264, Op = 265, ICONST = 266, PARAM = 267, TYPECAST = 268, DOT_DOT = 269, COLON_EQUALS = 270, EQUALS_GREATER = 271, LESS_EQUALS = 272, GREATER_EQUALS = 273, NOT_EQUALS = 274, SQL_COMMENT = 275, C_COMMENT = 276, T_WORD = 277, T_CWORD = 278, T_DATUM = 279, LESS_LESS = 280, GREATER_GREATER = 281, K_ABSOLUTE = 282, K_ALIAS = 283, K_ALL = 284, K_AND = 285, K_ARRAY = 286, K_ASSERT = 287, K_BACKWARD = 288, K_BEGIN = 289, K_BY = 290, K_CALL = 291, K_CASE = 292, K_CHAIN = 293, K_CLOSE = 294, K_COLLATE = 295, K_COLUMN = 296, K_COLUMN_NAME = 297, K_COMMIT = 298, K_CONSTANT = 299, K_CONSTRAINT = 300, K_CONSTRAINT_NAME = 301, K_CONTINUE = 302, K_CURRENT = 303, K_CURSOR = 304, K_DATATYPE = 305, K_DEBUG = 306, K_DECLARE = 307, K_DEFAULT = 308, K_DETAIL = 309, K_DIAGNOSTICS = 310, K_DO = 311, K_DUMP = 312, K_ELSE = 313, K_ELSIF = 314, K_END = 315, K_ERRCODE = 316, K_ERROR = 317, K_EXCEPTION = 318, K_EXECUTE = 319, K_EXIT = 320, K_FETCH = 321, K_FIRST = 322, K_FOR = 323, K_FOREACH = 324, K_FORWARD = 325, K_FROM = 326, K_GET = 327, K_HINT = 328, K_IF = 329, K_IMPORT = 330, K_IN = 331, K_INFO = 332, K_INSERT = 333, K_INTO = 334, K_IS = 335, K_LAST = 336, K_LOG = 337, K_LOOP = 338, K_MESSAGE = 339, K_MESSAGE_TEXT = 340, K_MOVE = 341, K_NEXT = 342, K_NO = 343, K_NOT = 344, K_NOTICE = 345, K_NULL = 346, K_OPEN = 347, K_OPTION = 348, K_OR = 349, K_PERFORM = 350, K_PG_CONTEXT = 351, K_PG_DATATYPE_NAME = 352, K_PG_EXCEPTION_CONTEXT = 353, K_PG_EXCEPTION_DETAIL = 354, K_PG_EXCEPTION_HINT = 355, K_PRINT_STRICT_PARAMS = 356, K_PRIOR = 357, K_QUERY = 358, K_RAISE = 359, K_RELATIVE = 360, K_RESET = 361, K_RETURN = 362, K_RETURNED_SQLSTATE = 363, K_REVERSE = 364, K_ROLLBACK = 365, K_ROW_COUNT = 366, K_ROWTYPE = 367, K_SCHEMA = 368, K_SCHEMA_NAME = 369, K_SCROLL = 370, K_SET = 371, K_SLICE = 372, K_SQLSTATE = 373, K_STACKED = 374, K_STRICT = 375, K_TABLE = 376, K_TABLE_NAME = 377, K_THEN = 378, K_TO = 379, K_TYPE = 380, K_USE_COLUMN = 381, K_USE_VARIABLE = 382, K_USING = 383, K_VARIABLE_CONFLICT = 384, K_WARNING = 385, K_WHEN = 386, K_WHILE = 387 }; #endif /* Tokens. */ #define IDENT 258 #define UIDENT 259 #define FCONST 260 #define SCONST 261 #define USCONST 262 #define BCONST 263 #define XCONST 264 #define Op 265 #define ICONST 266 #define PARAM 267 #define TYPECAST 268 #define DOT_DOT 269 #define COLON_EQUALS 270 #define EQUALS_GREATER 271 #define LESS_EQUALS 272 #define GREATER_EQUALS 273 #define NOT_EQUALS 274 #define SQL_COMMENT 275 #define C_COMMENT 276 #define T_WORD 277 #define T_CWORD 278 #define T_DATUM 279 #define LESS_LESS 280 #define GREATER_GREATER 281 #define K_ABSOLUTE 282 #define K_ALIAS 283 #define K_ALL 284 #define K_AND 285 #define K_ARRAY 286 #define K_ASSERT 287 #define K_BACKWARD 288 #define K_BEGIN 289 #define K_BY 290 #define K_CALL 291 #define K_CASE 292 #define K_CHAIN 293 #define K_CLOSE 294 #define K_COLLATE 295 #define K_COLUMN 296 #define K_COLUMN_NAME 297 #define K_COMMIT 298 #define K_CONSTANT 299 #define K_CONSTRAINT 300 #define K_CONSTRAINT_NAME 301 #define K_CONTINUE 302 #define K_CURRENT 303 #define K_CURSOR 304 #define K_DATATYPE 305 #define K_DEBUG 306 #define K_DECLARE 307 #define K_DEFAULT 308 #define K_DETAIL 309 #define K_DIAGNOSTICS 310 #define K_DO 311 #define K_DUMP 312 #define K_ELSE 313 #define K_ELSIF 314 #define K_END 315 #define K_ERRCODE 316 #define K_ERROR 317 #define K_EXCEPTION 318 #define K_EXECUTE 319 #define K_EXIT 320 #define K_FETCH 321 #define K_FIRST 322 #define K_FOR 323 #define K_FOREACH 324 #define K_FORWARD 325 #define K_FROM 326 #define K_GET 327 #define K_HINT 328 #define K_IF 329 #define K_IMPORT 330 #define K_IN 331 #define K_INFO 332 #define K_INSERT 333 #define K_INTO 334 #define K_IS 335 #define K_LAST 336 #define K_LOG 337 #define K_LOOP 338 #define K_MESSAGE 339 #define K_MESSAGE_TEXT 340 #define K_MOVE 341 #define K_NEXT 342 #define K_NO 343 #define K_NOT 344 #define K_NOTICE 345 #define K_NULL 346 #define K_OPEN 347 #define K_OPTION 348 #define K_OR 349 #define K_PERFORM 350 #define K_PG_CONTEXT 351 #define K_PG_DATATYPE_NAME 352 #define K_PG_EXCEPTION_CONTEXT 353 #define K_PG_EXCEPTION_DETAIL 354 #define K_PG_EXCEPTION_HINT 355 #define K_PRINT_STRICT_PARAMS 356 #define K_PRIOR 357 #define K_QUERY 358 #define K_RAISE 359 #define K_RELATIVE 360 #define K_RESET 361 #define K_RETURN 362 #define K_RETURNED_SQLSTATE 363 #define K_REVERSE 364 #define K_ROLLBACK 365 #define K_ROW_COUNT 366 #define K_ROWTYPE 367 #define K_SCHEMA 368 #define K_SCHEMA_NAME 369 #define K_SCROLL 370 #define K_SET 371 #define K_SLICE 372 #define K_SQLSTATE 373 #define K_STACKED 374 #define K_STRICT 375 #define K_TABLE 376 #define K_TABLE_NAME 377 #define K_THEN 378 #define K_TO 379 #define K_TYPE 380 #define K_USE_COLUMN 381 #define K_USE_VARIABLE 382 #define K_USING 383 #define K_VARIABLE_CONFLICT 384 #define K_WARNING 385 #define K_WHEN 386 #define K_WHILE 387 /* Copy the first part of user declarations. */ #line 1 "pl_gram.y" /*------------------------------------------------------------------------- * * pl_gram.y - Parser for the PL/pgSQL procedural language * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/pl/plpgsql/src/pl_gram.y * *------------------------------------------------------------------------- */ #include "postgres.h" #include "catalog/namespace.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "parser/parser.h" #include "parser/parse_type.h" #include "parser/scanner.h" #include "parser/scansup.h" #include "utils/builtins.h" #include "plpgsql.h" /* Location tracking support --- simpler than bison's default */ #define YYLLOC_DEFAULT(Current, Rhs, N) \ do { \ if (N) \ (Current) = (Rhs)[1]; \ else \ (Current) = (Rhs)[0]; \ } while (0) /* * Bison doesn't allocate anything that needs to live across parser calls, * so we can easily have it use palloc instead of malloc. This prevents * memory leaks if we error out during parsing. Note this only works with * bison >= 2.0. However, in bison 1.875 the default is to use alloca() * if possible, so there's not really much problem anyhow, at least if * you're building with gcc. */ #define YYMALLOC palloc #define YYFREE pfree typedef struct { int location; int leaderlen; } sql_error_callback_arg; #define parser_errposition(pos) plpgsql_scanner_errposition(pos) union YYSTYPE; /* need forward reference for tok_is_keyword */ static bool tok_is_keyword(int token, union YYSTYPE *lval, int kw_token, const char *kw_str); static void word_is_not_variable(PLword *word, int location); static void cword_is_not_variable(PLcword *cword, int location); static void current_token_is_not_variable(int tok); static PLpgSQL_expr *read_sql_construct(int until, int until2, int until3, const char *expected, const char *sqlstart, bool isexpression, bool valid_sql, bool trim, int *startloc, int *endtoken); static PLpgSQL_expr *read_sql_expression(int until, const char *expected); static PLpgSQL_expr *read_sql_expression2(int until, int until2, const char *expected, int *endtoken); static PLpgSQL_expr *read_sql_stmt(const char *sqlstart); static PLpgSQL_type *read_datatype(int tok); static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location); static PLpgSQL_stmt_fetch *read_fetch_direction(void); static void complete_direction(PLpgSQL_stmt_fetch *fetch, bool *check_FROM); static PLpgSQL_stmt *make_return_stmt(int location); static PLpgSQL_stmt *make_return_next_stmt(int location); static PLpgSQL_stmt *make_return_query_stmt(int location); static PLpgSQL_stmt *make_case(int location, PLpgSQL_expr *t_expr, List *case_when_list, List *else_stmts); static char *NameOfDatum(PLwdatum *wdatum); static void check_assignable(PLpgSQL_datum *datum, int location); static void read_into_target(PLpgSQL_variable **target, bool *strict); static PLpgSQL_row *read_into_scalar_list(char *initial_name, PLpgSQL_datum *initial_datum, int initial_location); static PLpgSQL_row *make_scalar_list1(char *initial_name, PLpgSQL_datum *initial_datum, int lineno, int location); static void check_sql_expr(const char *stmt, int location, int leaderlen); static void plpgsql_sql_error_callback(void *arg); static PLpgSQL_type *parse_datatype(const char *string, int location); static void check_labels(const char *start_label, const char *end_label, int end_location); static PLpgSQL_expr *read_cursor_args(PLpgSQL_var *cursor, int until, const char *expected); static List *read_raise_options(void); static void check_raise_parameters(PLpgSQL_stmt_raise *stmt); /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE #line 120 "pl_gram.y" { core_YYSTYPE core_yystype; /* these fields must match core_YYSTYPE: */ int ival; char *str; const char *keyword; PLword word; PLcword cword; PLwdatum wdatum; bool boolean; Oid oid; struct { char *name; int lineno; } varname; struct { char *name; int lineno; PLpgSQL_datum *scalar; PLpgSQL_datum *row; } forvariable; struct { char *label; int n_initvars; int *initvarnos; } declhdr; struct { List *stmts; char *end_label; int end_label_location; } loop_body; List *list; PLpgSQL_type *dtype; PLpgSQL_datum *datum; PLpgSQL_var *var; PLpgSQL_expr *expr; PLpgSQL_stmt *stmt; PLpgSQL_condition *condition; PLpgSQL_exception *exception; PLpgSQL_exception_block *exception_block; PLpgSQL_nsitem *nsitem; PLpgSQL_diag_item *diagitem; PLpgSQL_stmt_fetch *fetch; PLpgSQL_case_when *casewhen; } /* Line 193 of yacc.c. */ #line 534 "pl_gram.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; } YYLTYPE; # define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif /* Copy the second part of user declarations. */ /* Line 216 of yacc.c. */ #line 559 "pl_gram.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int i) #else static int YYID (i) int i; #endif { return i; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss; YYSTYPE yyvs; YYLTYPE yyls; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + 2 * YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack, Stack, yysize); \ Stack = &yyptr->Stack; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 1465 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 140 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 90 /* YYNRULES -- Number of rules. */ #define YYNRULES 258 /* YYNRULES -- Number of states. */ #define YYNSTATES 342 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 387 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 133, 2, 2, 2, 2, 135, 136, 2, 2, 137, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 134, 2, 138, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 139, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 7, 8, 11, 15, 19, 23, 27, 31, 33, 35, 36, 38, 45, 47, 50, 54, 56, 59, 61, 63, 65, 69, 76, 82, 83, 91, 92, 95, 97, 98, 99, 103, 105, 109, 112, 114, 116, 118, 120, 122, 124, 126, 127, 129, 130, 131, 134, 137, 140, 141, 144, 146, 148, 150, 152, 154, 156, 157, 160, 163, 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203, 205, 207, 209, 211, 214, 216, 218, 222, 228, 229, 231, 233, 237, 239, 243, 244, 246, 248, 250, 252, 256, 265, 266, 271, 272, 275, 283, 284, 287, 289, 293, 294, 297, 301, 306, 311, 314, 316, 318, 320, 329, 330, 333, 337, 339, 341, 343, 345, 347, 353, 355, 357, 359, 361, 363, 366, 371, 376, 377, 381, 384, 388, 392, 395, 399, 400, 402, 404, 406, 408, 410, 411, 412, 416, 419, 421, 426, 430, 432, 434, 435, 436, 437, 438, 439, 443, 444, 448, 449, 451, 453, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 141, 0, -1, 142, 146, 145, -1, -1, 142, 143, -1, 133, 93, 57, -1, 133, 101, 144, -1, 133, 129, 62, -1, 133, 129, 127, -1, 133, 129, 126, -1, 22, -1, 229, -1, -1, 134, -1, 147, 34, 168, 214, 60, 226, -1, 224, -1, 224, 148, -1, 224, 148, 149, -1, 52, -1, 149, 150, -1, 150, -1, 151, -1, 52, -1, 25, 228, 26, -1, 160, 161, 162, 163, 164, 165, -1, 160, 28, 68, 159, 134, -1, -1, 160, 153, 49, 152, 155, 158, 154, -1, -1, 88, 115, -1, 115, -1, -1, -1, 135, 156, 136, -1, 157, -1, 156, 137, 157, -1, 160, 162, -1, 80, -1, 68, -1, 22, -1, 229, -1, 23, -1, 22, -1, 229, -1, -1, 44, -1, -1, -1, 40, 22, -1, 40, 229, -1, 40, 23, -1, -1, 89, 91, -1, 134, -1, 166, -1, 167, -1, 53, -1, 138, -1, 15, -1, -1, 168, 169, -1, 146, 134, -1, 172, -1, 180, -1, 183, -1, 188, -1, 189, -1, 190, -1, 193, -1, 195, -1, 197, -1, 198, -1, 199, -1, 201, -1, 202, -1, 170, -1, 171, -1, 173, -1, 203, -1, 204, -1, 205, -1, 207, -1, 208, -1, 209, -1, 210, -1, 212, -1, 95, 220, -1, 36, -1, 56, -1, 179, 167, 220, -1, 72, 174, 55, 175, 134, -1, -1, 48, -1, 119, -1, 175, 137, 176, -1, 176, -1, 178, 167, 177, -1, -1, 179, -1, 22, -1, 23, -1, 24, -1, 179, 139, 221, -1, 74, 222, 168, 181, 182, 60, 74, 134, -1, -1, 181, 59, 222, 168, -1, -1, 58, 168, -1, 37, 184, 185, 187, 60, 37, 134, -1, -1, 185, 186, -1, 186, -1, 131, 222, 168, -1, -1, 58, 168, -1, 225, 83, 200, -1, 225, 132, 223, 200, -1, 225, 68, 191, 200, -1, 192, 76, -1, 24, -1, 22, -1, 23, -1, 225, 69, 192, 194, 76, 31, 223, 200, -1, -1, 117, 11, -1, 196, 226, 227, -1, 65, -1, 47, -1, 107, -1, 104, -1, 32, -1, 168, 60, 83, 226, 134, -1, 75, -1, 78, -1, 22, -1, 23, -1, 64, -1, 92, 213, -1, 66, 206, 213, 79, -1, 86, 206, 213, 134, -1, -1, 39, 213, 134, -1, 91, 134, -1, 43, 211, 134, -1, 110, 211, 134, -1, 30, 38, -1, 30, 88, 38, -1, -1, 116, -1, 106, -1, 24, -1, 22, -1, 23, -1, -1, -1, 63, 215, 216, -1, 216, 217, -1, 217, -1, 131, 218, 123, 168, -1, 218, 94, 219, -1, 219, -1, 228, -1, -1, -1, -1, -1, -1, 25, 228, 26, -1, -1, 25, 228, 26, -1, -1, 228, -1, 134, -1, 131, 220, -1, 22, -1, 229, -1, 24, -1, 27, -1, 28, -1, 30, -1, 31, -1, 32, -1, 33, -1, 36, -1, 38, -1, 39, -1, 40, -1, 41, -1, 42, -1, 43, -1, 44, -1, 45, -1, 46, -1, 47, -1, 48, -1, 49, -1, 50, -1, 51, -1, 53, -1, 54, -1, 55, -1, 56, -1, 57, -1, 59, -1, 61, -1, 62, -1, 63, -1, 65, -1, 66, -1, 67, -1, 70, -1, 72, -1, 73, -1, 75, -1, 77, -1, 78, -1, 80, -1, 81, -1, 82, -1, 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, 90, -1, 92, -1, 93, -1, 95, -1, 96, -1, 97, -1, 98, -1, 99, -1, 100, -1, 101, -1, 102, -1, 103, -1, 104, -1, 105, -1, 106, -1, 107, -1, 108, -1, 109, -1, 110, -1, 111, -1, 112, -1, 113, -1, 114, -1, 115, -1, 116, -1, 117, -1, 118, -1, 119, -1, 121, -1, 122, -1, 125, -1, 126, -1, 127, -1, 129, -1, 130, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 364, 364, 370, 371, 374, 378, 387, 391, 395, 401, 405, 410, 411, 414, 437, 445, 452, 461, 473, 474, 477, 478, 482, 495, 533, 539, 538, 591, 594, 598, 605, 611, 614, 645, 649, 655, 663, 664, 666, 681, 696, 724, 752, 783, 784, 789, 800, 801, 806, 811, 818, 819, 823, 825, 831, 832, 840, 841, 845, 846, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 908, 922, 936, 953, 968, 1031, 1034, 1038, 1044, 1048, 1054, 1067, 1111, 1122, 1127, 1135, 1140, 1157, 1175, 1178, 1192, 1195, 1201, 1208, 1222, 1226, 1232, 1244, 1247, 1262, 1280, 1299, 1333, 1595, 1621, 1635, 1642, 1681, 1684, 1690, 1743, 1747, 1753, 1779, 1924, 1948, 1966, 1970, 1974, 1984, 1996, 2060, 2138, 2168, 2181, 2186, 2200, 2207, 2221, 2236, 2237, 2238, 2241, 2254, 2269, 2291, 2296, 2304, 2306, 2305, 2347, 2351, 2357, 2370, 2379, 2385, 2422, 2426, 2430, 2434, 2438, 2442, 2450, 2454, 2462, 2465, 2472, 2474, 2481, 2485, 2489, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "IDENT", "UIDENT", "FCONST", "SCONST", "USCONST", "BCONST", "XCONST", "Op", "ICONST", "PARAM", "TYPECAST", "DOT_DOT", "COLON_EQUALS", "EQUALS_GREATER", "LESS_EQUALS", "GREATER_EQUALS", "NOT_EQUALS", "SQL_COMMENT", "C_COMMENT", "T_WORD", "T_CWORD", "T_DATUM", "LESS_LESS", "GREATER_GREATER", "K_ABSOLUTE", "K_ALIAS", "K_ALL", "K_AND", "K_ARRAY", "K_ASSERT", "K_BACKWARD", "K_BEGIN", "K_BY", "K_CALL", "K_CASE", "K_CHAIN", "K_CLOSE", "K_COLLATE", "K_COLUMN", "K_COLUMN_NAME", "K_COMMIT", "K_CONSTANT", "K_CONSTRAINT", "K_CONSTRAINT_NAME", "K_CONTINUE", "K_CURRENT", "K_CURSOR", "K_DATATYPE", "K_DEBUG", "K_DECLARE", "K_DEFAULT", "K_DETAIL", "K_DIAGNOSTICS", "K_DO", "K_DUMP", "K_ELSE", "K_ELSIF", "K_END", "K_ERRCODE", "K_ERROR", "K_EXCEPTION", "K_EXECUTE", "K_EXIT", "K_FETCH", "K_FIRST", "K_FOR", "K_FOREACH", "K_FORWARD", "K_FROM", "K_GET", "K_HINT", "K_IF", "K_IMPORT", "K_IN", "K_INFO", "K_INSERT", "K_INTO", "K_IS", "K_LAST", "K_LOG", "K_LOOP", "K_MESSAGE", "K_MESSAGE_TEXT", "K_MOVE", "K_NEXT", "K_NO", "K_NOT", "K_NOTICE", "K_NULL", "K_OPEN", "K_OPTION", "K_OR", "K_PERFORM", "K_PG_CONTEXT", "K_PG_DATATYPE_NAME", "K_PG_EXCEPTION_CONTEXT", "K_PG_EXCEPTION_DETAIL", "K_PG_EXCEPTION_HINT", "K_PRINT_STRICT_PARAMS", "K_PRIOR", "K_QUERY", "K_RAISE", "K_RELATIVE", "K_RESET", "K_RETURN", "K_RETURNED_SQLSTATE", "K_REVERSE", "K_ROLLBACK", "K_ROW_COUNT", "K_ROWTYPE", "K_SCHEMA", "K_SCHEMA_NAME", "K_SCROLL", "K_SET", "K_SLICE", "K_SQLSTATE", "K_STACKED", "K_STRICT", "K_TABLE", "K_TABLE_NAME", "K_THEN", "K_TO", "K_TYPE", "K_USE_COLUMN", "K_USE_VARIABLE", "K_USING", "K_VARIABLE_CONFLICT", "K_WARNING", "K_WHEN", "K_WHILE", "'#'", "';'", "'('", "')'", "','", "'='", "'['", "$accept", "pl_function", "comp_options", "comp_option", "option_value", "opt_semi", "pl_block", "decl_sect", "decl_start", "decl_stmts", "decl_stmt", "decl_statement", "@1", "opt_scrollable", "decl_cursor_query", "decl_cursor_args", "decl_cursor_arglist", "decl_cursor_arg", "decl_is_for", "decl_aliasitem", "decl_varname", "decl_const", "decl_datatype", "decl_collate", "decl_notnull", "decl_defval", "decl_defkey", "assign_operator", "proc_sect", "proc_stmt", "stmt_perform", "stmt_call", "stmt_assign", "stmt_getdiag", "getdiag_area_opt", "getdiag_list", "getdiag_list_item", "getdiag_item", "getdiag_target", "assign_var", "stmt_if", "stmt_elsifs", "stmt_else", "stmt_case", "opt_expr_until_when", "case_when_list", "case_when", "opt_case_else", "stmt_loop", "stmt_while", "stmt_for", "for_control", "for_variable", "stmt_foreach_a", "foreach_slice", "stmt_exit", "exit_type", "stmt_return", "stmt_raise", "stmt_assert", "loop_body", "stmt_execsql", "stmt_dynexecute", "stmt_open", "stmt_fetch", "stmt_move", "opt_fetch_direction", "stmt_close", "stmt_null", "stmt_commit", "stmt_rollback", "opt_transaction_chain", "stmt_set", "cursor_variable", "exception_sect", "@2", "proc_exceptions", "proc_exception", "proc_conditions", "proc_condition", "expr_until_semi", "expr_until_rightbracket", "expr_until_then", "expr_until_loop", "opt_block_label", "opt_loop_label", "opt_label", "opt_exitcond", "any_identifier", "unreserved_keyword", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 35, 59, 40, 41, 44, 61, 91 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 140, 141, 142, 142, 143, 143, 143, 143, 143, 144, 144, 145, 145, 146, 147, 147, 147, 148, 149, 149, 150, 150, 150, 151, 151, 152, 151, 153, 153, 153, 154, 155, 155, 156, 156, 157, 158, 158, 159, 159, 159, 160, 160, 161, 161, 162, 163, 163, 163, 163, 164, 164, 165, 165, 166, 166, 167, 167, 168, 168, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 170, 171, 171, 172, 173, 174, 174, 174, 175, 175, 176, 177, 178, 178, 178, 179, 179, 180, 181, 181, 182, 182, 183, 184, 185, 185, 186, 187, 187, 188, 189, 190, 191, 192, 192, 192, 193, 194, 194, 195, 196, 196, 197, 198, 199, 200, 201, 201, 201, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 211, 211, 212, 212, 213, 213, 213, 214, 215, 214, 216, 216, 217, 218, 218, 219, 220, 221, 222, 223, 224, 224, 225, 225, 226, 226, 227, 227, 228, 228, 228, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 3, 0, 2, 3, 3, 3, 3, 3, 1, 1, 0, 1, 6, 1, 2, 3, 1, 2, 1, 1, 1, 3, 6, 5, 0, 7, 0, 2, 1, 0, 0, 3, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 2, 2, 2, 0, 2, 1, 1, 1, 1, 1, 1, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 5, 0, 1, 1, 3, 1, 3, 0, 1, 1, 1, 1, 3, 8, 0, 4, 0, 2, 7, 0, 2, 1, 3, 0, 2, 3, 4, 4, 2, 1, 1, 1, 8, 0, 2, 3, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 2, 4, 4, 0, 3, 2, 3, 3, 2, 3, 0, 1, 1, 1, 1, 1, 0, 0, 3, 2, 1, 4, 3, 1, 1, 0, 0, 0, 0, 0, 3, 0, 3, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint16 yydefact[] = { 3, 0, 166, 1, 0, 0, 4, 12, 0, 15, 174, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 0, 175, 0, 0, 0, 13, 2, 59, 18, 16, 167, 5, 10, 6, 11, 7, 9, 8, 168, 42, 0, 22, 17, 20, 21, 44, 43, 134, 135, 101, 0, 130, 87, 109, 0, 147, 127, 88, 154, 136, 126, 140, 91, 164, 132, 133, 140, 0, 0, 162, 129, 149, 128, 147, 148, 0, 60, 75, 76, 62, 77, 0, 63, 64, 65, 66, 67, 68, 69, 170, 70, 71, 72, 73, 74, 78, 79, 80, 81, 82, 83, 84, 85, 0, 0, 0, 19, 0, 45, 0, 30, 0, 46, 0, 0, 151, 152, 150, 0, 0, 0, 0, 0, 92, 93, 0, 59, 0, 142, 137, 86, 0, 61, 58, 57, 163, 162, 0, 171, 170, 0, 0, 59, 165, 23, 0, 29, 26, 47, 169, 164, 113, 111, 141, 145, 0, 143, 0, 155, 157, 0, 0, 168, 0, 144, 102, 89, 162, 172, 125, 14, 120, 121, 119, 59, 0, 123, 168, 115, 59, 39, 41, 0, 40, 32, 0, 51, 59, 59, 110, 0, 146, 0, 160, 161, 156, 138, 99, 100, 0, 95, 0, 98, 106, 139, 173, 117, 118, 0, 0, 0, 116, 25, 0, 0, 48, 50, 49, 0, 0, 168, 168, 0, 0, 59, 90, 0, 97, 59, 164, 0, 124, 0, 170, 0, 34, 46, 38, 37, 31, 52, 56, 53, 24, 54, 55, 0, 159, 168, 94, 96, 168, 59, 0, 165, 0, 33, 0, 36, 27, 108, 168, 0, 59, 131, 35, 103, 122 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 2, 6, 107, 100, 149, 8, 103, 116, 117, 118, 258, 185, 333, 288, 308, 309, 313, 256, 119, 186, 222, 260, 293, 317, 318, 210, 251, 150, 151, 152, 153, 154, 199, 273, 274, 324, 275, 155, 156, 277, 304, 157, 188, 225, 226, 264, 158, 159, 160, 248, 249, 161, 283, 162, 163, 164, 165, 166, 252, 167, 168, 169, 170, 171, 196, 172, 173, 174, 175, 194, 176, 192, 177, 195, 232, 233, 266, 267, 204, 239, 200, 253, 9, 178, 211, 243, 212, 95 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -272 static const yytype_int16 yypact[] = { -272, 34, -17, -272, 365, -71, -272, -92, 15, 20, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, 48, -272, 25, 689, -49, -272, -272, -272, -272, 256, -272, -272, -272, -272, -272, -272, -272, -272, 1082, -272, 365, -272, 256, -272, -272, 3, -272, -272, -272, -272, 365, -272, -272, -272, 40, 55, -272, -272, -272, -272, -272, -272, -36, -272, -272, -272, -272, -48, 40, -272, -272, -272, -272, 55, -272, -46, -272, -272, -272, -272, -272, -13, -272, -272, -272, -272, -272, -272, -272, 365, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, 42, -51, 68, -272, 36, -272, -6, -272, 57, -272, 89, -12, -272, -272, -272, -1, -19, 0, 4, 40, -272, -272, 72, -272, 40, -272, -272, -272, 2, -272, -272, -272, -272, -272, -80, -272, 365, 77, 77, -272, -272, -272, 474, -272, -272, 91, -7, -272, -47, -272, -272, -272, 92, -272, 365, 4, -272, 58, 90, 904, 5, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, 62, 23, 1171, -272, -272, -272, -272, 7, -272, 8, 583, 53, -272, -272, -272, 84, -272, -73, -272, -272, -272, -272, -272, -272, -66, -272, -9, 6, -3, -272, -272, -272, -272, 135, 71, 65, -272, -272, 795, -39, -272, -272, -272, 59, -10, 1, 1260, 112, 365, -272, -272, 90, -272, -272, -272, 93, -272, 120, 365, -15, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, 18, -272, 146, -272, -272, 1349, -272, 80, -272, 21, -272, 795, -272, -272, -272, 993, 22, -272, -272, -272, -272, -272 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -272, -272, -272, -272, -272, -272, 155, -272, -272, -272, 43, -272, -272, -272, -272, -272, -272, -173, -272, -272, -271, -272, -150, -272, -272, -272, -272, -247, -97, -272, -272, -272, -272, -272, -272, -272, -139, -272, -272, -220, -272, -272, -272, -272, -272, -272, -63, -272, -272, -272, -272, -272, -43, -272, -272, -272, -272, -272, -272, -272, -239, -272, -272, -272, -272, -272, 26, -272, -272, -272, -272, 27, -272, -106, -272, -272, -272, -65, -272, -124, -171, -272, -214, -153, -272, -272, -210, -272, -4, -96 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -168 static const yytype_int16 yytable[] = { 94, 108, 207, 244, 112, 207, 207, 120, 4, 280, 261, 262, 197, 109, 285, 276, 310, 214, 215, 228, 120, 297, 96, 121, 122, 123, 124, -167, 301, 311, 97, 181, 216, 125, 3, -166, 203, 126, 127, 240, 128, 312, 99, 315, 129, -167, 319, 182, 130, 101, 298, 241, -28, -166, 242, 302, 303, 131, 98, -112, 310, -112, 189, 190, 191, 133, 134, 135, 299, 229, 279, 300, 102, 136, 104, 137, 138, 110, 111, 139, 276, 217, 105, 198, 224, 193, 202, 140, 206, 326, 234, 183, 141, 142, 218, 237, 143, 329, 341, 245, 246, 247, 213, 236, 219, 144, 221, 145, 146, 220, 179, 147, 271, 272, 123, 223, 5, 148, 184, 224, 187, 330, 331, 257, 316, 208, 209, 235, 208, 208, 265, 259, -112, 227, 230, 231, 238, 270, 281, 278, 282, 286, 292, 287, 296, 209, 305, 306, 307, 320, 314, 328, 334, 327, 336, 338, 340, 7, 339, 180, 332, 323, 263, 291, 294, 295, 201, 269, 121, 122, 123, 124, 250, 321, 205, 337, 0, 0, 125, 0, -166, 0, 126, 127, 0, 128, 0, 0, 0, 129, 0, 120, 0, 130, 0, 0, 0, 0, -166, 0, 0, 322, 131, 0, 0, 325, -158, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 268, 0, 335, 0, 0, 140, 0, 0, 120, 0, 141, 142, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 145, 146, 0, 0, 147, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, 113, 0, 0, 114, 0, 12, 13, 0, 14, 15, 16, 17, 0, 0, 18, 268, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 115, 33, 34, 35, 36, 37, 0, 38, 0, 39, 40, 41, 0, 42, 43, 44, 0, 0, 45, 0, 46, 47, 0, 48, 0, 49, 50, 0, 51, 52, 53, 0, 54, 55, 56, 57, 58, 0, 59, 0, 60, 61, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 0, 87, 88, 0, 0, 89, 90, 91, 0, 92, 93, 10, 0, 11, 0, 0, 12, 13, 0, 14, 15, 16, 17, 0, 0, 18, 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 38, 0, 39, 40, 41, 0, 42, 43, 44, 0, 0, 45, 0, 46, 47, 0, 48, 0, 49, 50, 0, 51, 52, 53, 0, 54, 55, 56, 57, 58, 0, 59, 0, 60, 61, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 0, 87, 88, 0, 0, 89, 90, 91, 0, 92, 93, 254, 255, 0, 0, 0, 12, 13, 0, 14, 15, 16, 17, 0, 0, 18, 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 38, 0, 39, 40, 41, 0, 42, 43, 44, 0, 0, 45, 0, 46, 47, 0, 48, 0, 49, 50, 0, 51, 52, 53, 0, 54, 55, 56, 57, 58, 0, 59, 0, 60, 61, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 0, 87, 88, 0, 0, 89, 90, 91, 0, 92, 93, 289, 290, 0, 0, 0, 12, 13, 0, 14, 15, 16, 17, 0, 0, 18, 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 38, 0, 39, 40, 41, 0, 42, 43, 44, 0, 0, 45, 0, 46, 47, 0, 48, 0, 49, 50, 0, 51, 52, 53, 0, 54, 55, 56, 57, 58, 0, 59, 0, 60, 61, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 0, 87, 88, 0, 0, 89, 90, 91, 106, 92, 93, 0, 0, 12, 13, 0, 14, 15, 16, 17, 0, 0, 18, 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 38, 0, 39, 40, 41, 0, 42, 43, 44, 0, 0, 45, 0, 46, 47, 0, 48, 0, 49, 50, 0, 51, 52, 53, 0, 54, 55, 56, 57, 58, 0, 59, 0, 60, 61, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 0, 87, 88, 0, 0, 89, 90, 91, 113, 92, 93, 0, 0, 12, 13, 0, 14, 15, 16, 17, 0, 0, 18, 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 0, 38, 0, 39, 40, 41, 0, 42, 43, 44, 0, 0, 45, 0, 46, 47, 0, 48, 0, 49, 50, 0, 51, 52, 53, 0, 54, 55, 56, 57, 58, 0, 59, 0, 60, 61, 0, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 0, 87, 88, 0, 0, 89, 90, 91, 0, 92, 93, 121, 122, 123, 124, 0, 0, 0, 0, 0, 0, 125, 0, -166, 0, 126, 127, 0, 128, 0, 0, 0, 129, 0, 0, 0, 130, 0, 0, 0, 0, -166, 0, 0, 0, 131, 0, -104, -104, -104, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 145, 146, 0, 0, 147, 121, 122, 123, 124, 0, 148, 0, 0, 0, 0, 125, 0, -166, 0, 126, 127, 0, 128, 0, 0, 0, 129, 0, 0, 0, 130, 0, 0, 0, 0, -166, 0, 0, 0, 131, 0, -105, -105, -105, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 145, 146, 0, 0, 147, 121, 122, 123, 124, 0, 148, 0, 0, 0, 0, 125, 0, -166, 0, 126, 127, 0, 128, 0, 0, 0, 129, 0, 0, 0, 130, 0, 0, 0, 0, -166, 0, 0, 0, 131, 0, 0, 0, -153, 0, 0, 132, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 145, 146, 0, 0, 147, 121, 122, 123, 124, 0, 148, 0, 0, 0, 0, 125, 0, -166, 0, 126, 127, 0, 128, 0, 0, 0, 129, 0, 0, 0, 130, 0, 0, 0, 0, -166, 0, 0, 0, 131, 0, 0, 0, 284, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 145, 146, 0, 0, 147, 121, 122, 123, 124, 0, 148, 0, 0, 0, 0, 125, 0, -166, 0, 126, 127, 0, 128, 0, 0, 0, 129, 0, 0, 0, 130, 0, 0, 0, 0, -166, 0, 0, 0, 131, 0, 0, 0, -114, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 145, 146, 0, 0, 147, 121, 122, 123, 124, 0, 148, 0, 0, 0, 0, 125, 0, -166, 0, 126, 127, 0, 128, 0, 0, 0, 129, 0, 0, 0, 130, 0, 0, 0, 0, -166, 0, 0, 0, 131, 0, 0, 0, -107, 0, 0, 0, 133, 134, 135, 0, 0, 0, 0, 0, 136, 0, 137, 138, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 141, 142, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 145, 146, 0, 0, 147, 0, 0, 0, 0, 0, 148 }; static const yytype_int16 yycheck[] = { 4, 97, 15, 213, 101, 15, 15, 103, 25, 248, 224, 58, 48, 62, 253, 235, 287, 68, 69, 38, 116, 94, 93, 22, 23, 24, 25, 34, 275, 68, 101, 28, 83, 32, 0, 34, 142, 36, 37, 210, 39, 80, 134, 53, 43, 52, 293, 44, 47, 34, 123, 131, 49, 52, 134, 58, 59, 56, 129, 58, 331, 60, 22, 23, 24, 64, 65, 66, 134, 88, 241, 137, 52, 72, 26, 74, 75, 126, 127, 78, 300, 132, 57, 119, 131, 30, 134, 86, 134, 303, 196, 88, 91, 92, 26, 201, 95, 307, 337, 22, 23, 24, 60, 200, 68, 104, 49, 106, 107, 115, 114, 110, 22, 23, 24, 26, 133, 116, 115, 131, 124, 136, 137, 219, 134, 138, 139, 55, 138, 138, 38, 40, 131, 134, 134, 131, 134, 79, 76, 134, 117, 134, 89, 135, 60, 139, 11, 76, 83, 37, 91, 31, 134, 60, 74, 134, 134, 2, 331, 116, 310, 300, 225, 259, 261, 262, 140, 232, 22, 23, 24, 25, 215, 297, 147, 328, -1, -1, 32, -1, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, 287, -1, 47, -1, -1, -1, -1, 52, -1, -1, 298, 56, -1, -1, 302, 60, -1, -1, -1, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, 231, -1, 326, -1, -1, 86, -1, -1, 331, -1, 91, 92, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, 106, 107, -1, -1, 110, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, 22, -1, -1, 25, -1, 27, 28, -1, 30, 31, 32, 33, -1, -1, 36, 297, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, -1, 61, 62, 63, -1, 65, 66, 67, -1, -1, 70, -1, 72, 73, -1, 75, -1, 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, -1, 90, -1, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, 122, -1, -1, 125, 126, 127, -1, 129, 130, 22, -1, 24, -1, -1, 27, 28, -1, 30, 31, 32, 33, -1, -1, 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, 59, -1, 61, 62, 63, -1, 65, 66, 67, -1, -1, 70, -1, 72, 73, -1, 75, -1, 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, -1, 90, -1, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, 122, -1, -1, 125, 126, 127, -1, 129, 130, 22, 23, -1, -1, -1, 27, 28, -1, 30, 31, 32, 33, -1, -1, 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, 59, -1, 61, 62, 63, -1, 65, 66, 67, -1, -1, 70, -1, 72, 73, -1, 75, -1, 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, -1, 90, -1, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, 122, -1, -1, 125, 126, 127, -1, 129, 130, 22, 23, -1, -1, -1, 27, 28, -1, 30, 31, 32, 33, -1, -1, 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, 59, -1, 61, 62, 63, -1, 65, 66, 67, -1, -1, 70, -1, 72, 73, -1, 75, -1, 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, -1, 90, -1, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, 122, -1, -1, 125, 126, 127, 22, 129, 130, -1, -1, 27, 28, -1, 30, 31, 32, 33, -1, -1, 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, 59, -1, 61, 62, 63, -1, 65, 66, 67, -1, -1, 70, -1, 72, 73, -1, 75, -1, 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, -1, 90, -1, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, 122, -1, -1, 125, 126, 127, 22, 129, 130, -1, -1, 27, 28, -1, 30, 31, 32, 33, -1, -1, 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, 55, 56, 57, -1, 59, -1, 61, 62, 63, -1, 65, 66, 67, -1, -1, 70, -1, 72, 73, -1, 75, -1, 77, 78, -1, 80, 81, 82, -1, 84, 85, 86, 87, 88, -1, 90, -1, 92, 93, -1, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, -1, 121, 122, -1, -1, 125, 126, 127, -1, 129, 130, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 32, -1, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, 58, 59, 60, -1, -1, -1, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, 91, 92, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, 106, 107, -1, -1, 110, 22, 23, 24, 25, -1, 116, -1, -1, -1, -1, 32, -1, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, 58, 59, 60, -1, -1, -1, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, 91, 92, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, 106, 107, -1, -1, 110, 22, 23, 24, 25, -1, 116, -1, -1, -1, -1, 32, -1, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, -1, -1, 60, -1, -1, 63, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, 91, 92, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, 106, 107, -1, -1, 110, 22, 23, 24, 25, -1, 116, -1, -1, -1, -1, 32, -1, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, -1, -1, 60, -1, -1, -1, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, 91, 92, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, 106, 107, -1, -1, 110, 22, 23, 24, 25, -1, 116, -1, -1, -1, -1, 32, -1, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, -1, -1, 60, -1, -1, -1, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, 91, 92, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, 106, 107, -1, -1, 110, 22, 23, 24, 25, -1, 116, -1, -1, -1, -1, 32, -1, 34, -1, 36, 37, -1, 39, -1, -1, -1, 43, -1, -1, -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, 56, -1, -1, -1, 60, -1, -1, -1, 64, 65, 66, -1, -1, -1, -1, -1, 72, -1, 74, 75, -1, -1, 78, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, 91, 92, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, 106, 107, -1, -1, 110, -1, -1, -1, -1, -1, 116 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 141, 142, 0, 25, 133, 143, 146, 147, 224, 22, 24, 27, 28, 30, 31, 32, 33, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 59, 61, 62, 63, 65, 66, 67, 70, 72, 73, 75, 77, 78, 80, 81, 82, 84, 85, 86, 87, 88, 90, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 125, 126, 127, 129, 130, 228, 229, 93, 101, 129, 134, 145, 34, 52, 148, 26, 57, 22, 144, 229, 62, 126, 127, 168, 22, 25, 52, 149, 150, 151, 160, 229, 22, 23, 24, 25, 32, 36, 37, 39, 43, 47, 56, 63, 64, 65, 66, 72, 74, 75, 78, 86, 91, 92, 95, 104, 106, 107, 110, 116, 146, 169, 170, 171, 172, 173, 179, 180, 183, 188, 189, 190, 193, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 207, 208, 209, 210, 212, 214, 225, 228, 150, 28, 44, 88, 115, 153, 161, 228, 184, 22, 23, 24, 213, 30, 211, 215, 206, 48, 119, 174, 222, 206, 134, 213, 220, 211, 134, 15, 138, 139, 167, 226, 228, 60, 68, 69, 83, 132, 26, 68, 115, 49, 162, 26, 131, 185, 186, 134, 38, 88, 134, 131, 216, 217, 213, 55, 168, 213, 134, 221, 220, 131, 134, 227, 226, 22, 23, 24, 191, 192, 192, 168, 200, 223, 22, 23, 159, 229, 152, 40, 163, 222, 58, 186, 187, 38, 218, 219, 228, 217, 79, 22, 23, 175, 176, 178, 179, 181, 134, 220, 200, 76, 117, 194, 60, 200, 134, 135, 155, 22, 23, 229, 89, 164, 168, 168, 60, 94, 123, 134, 137, 167, 58, 59, 182, 11, 76, 83, 156, 157, 160, 68, 80, 158, 91, 53, 134, 165, 166, 167, 37, 219, 168, 176, 177, 168, 222, 60, 31, 226, 136, 137, 162, 154, 134, 168, 74, 223, 134, 157, 134, 200 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value, Location); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; YYLTYPE const * const yylocationp; #endif { if (!yyvaluep) return; YYUSE (yylocationp); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; YYLTYPE const * const yylocationp; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) #else static void yy_stack_print (bottom, top) yytype_int16 *bottom; yytype_int16 *top; #endif { YYFPRINTF (stderr, "Stack now"); for (; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) #else static void yy_reduce_print (yyvsp, yylsp, yyrule) YYSTYPE *yyvsp; YYLTYPE *yylsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) , &(yylsp[(yyi + 1) - (yynrhs)]) ); fprintf (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, yylsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) #else static void yydestruct (yymsg, yytype, yyvaluep, yylocationp) const char *yymsg; int yytype; YYSTYPE *yyvaluep; YYLTYPE *yylocationp; #endif { YYUSE (yyvaluep); YYUSE (yylocationp); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /* The look-ahead symbol. */ __thread int yychar; /* The semantic value of the look-ahead symbol. */ __thread YYSTYPE yylval; /* Number of syntax errors so far. */ __thread int yynerrs; /* Location data for the look-ahead symbol. */ __thread YYLTYPE yylloc; /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { int yystate; int yyn; int yyresult; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* Look-ahead token as an internal (translated) token number. */ int yytoken = 0; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif /* Three stacks and their tools: `yyss': related to states, `yyvs': related to semantic values, `yyls': related to locations. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss = yyssa; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp; /* The location stack. */ YYLTYPE yylsa[YYINITDEPTH]; YYLTYPE *yyls = yylsa; YYLTYPE *yylsp; /* The locations where the error started and ended. */ YYLTYPE yyerror_range[2]; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) YYSIZE_T yystacksize = YYINITDEPTH; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; YYLTYPE yyloc; /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; yylsp = yyls; #if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL /* Initialize the default location before parsing starts. */ yylloc.first_line = yylloc.last_line = 1; yylloc.first_column = yylloc.last_column = 0; #endif goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; YYLTYPE *yyls1 = yyls; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yyls1, yysize * sizeof (*yylsp), &yystacksize); yyls = yyls1; yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); YYSTACK_RELOCATE (yyls); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a look-ahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a look-ahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == YYFINAL) YYACCEPT; /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; *++yylsp = yylloc; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; /* Default location. */ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: #line 365 "pl_gram.y" { plpgsql_parse_result = (PLpgSQL_stmt_block *) (yyvsp[(2) - (3)].stmt); ;} break; case 5: #line 375 "pl_gram.y" { plpgsql_DumpExecTree = true; ;} break; case 6: #line 379 "pl_gram.y" { if (strcmp((yyvsp[(3) - (3)].str), "on") == 0) plpgsql_curr_compile->print_strict_params = true; else if (strcmp((yyvsp[(3) - (3)].str), "off") == 0) plpgsql_curr_compile->print_strict_params = false; else elog(ERROR, "unrecognized print_strict_params option %s", (yyvsp[(3) - (3)].str)); ;} break; case 7: #line 388 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_ERROR; ;} break; case 8: #line 392 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_VARIABLE; ;} break; case 9: #line 396 "pl_gram.y" { plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_COLUMN; ;} break; case 10: #line 402 "pl_gram.y" { (yyval.str) = (yyvsp[(1) - (1)].word).ident; ;} break; case 11: #line 406 "pl_gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 14: #line 415 "pl_gram.y" { PLpgSQL_stmt_block *new; new = palloc0(sizeof(PLpgSQL_stmt_block)); new->cmd_type = PLPGSQL_STMT_BLOCK; new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (6)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->label = (yyvsp[(1) - (6)].declhdr).label; new->n_initvars = (yyvsp[(1) - (6)].declhdr).n_initvars; new->initvarnos = (yyvsp[(1) - (6)].declhdr).initvarnos; new->body = (yyvsp[(3) - (6)].list); new->exceptions = (yyvsp[(4) - (6)].exception_block); check_labels((yyvsp[(1) - (6)].declhdr).label, (yyvsp[(6) - (6)].str), (yylsp[(6) - (6)])); plpgsql_ns_pop(); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 15: #line 438 "pl_gram.y" { /* done with decls, so resume identifier lookup */ plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; (yyval.declhdr).label = (yyvsp[(1) - (1)].str); (yyval.declhdr).n_initvars = 0; (yyval.declhdr).initvarnos = NULL; ;} break; case 16: #line 446 "pl_gram.y" { plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; (yyval.declhdr).label = (yyvsp[(1) - (2)].str); (yyval.declhdr).n_initvars = 0; (yyval.declhdr).initvarnos = NULL; ;} break; case 17: #line 453 "pl_gram.y" { plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; (yyval.declhdr).label = (yyvsp[(1) - (3)].str); /* Remember variables declared in decl_stmts */ (yyval.declhdr).n_initvars = plpgsql_add_initdatums(&((yyval.declhdr).initvarnos)); ;} break; case 18: #line 462 "pl_gram.y" { /* Forget any variables created before block */ plpgsql_add_initdatums(NULL); /* * Disable scanner lookup of identifiers while * we process the decl_stmts */ plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_DECLARE; ;} break; case 22: #line 479 "pl_gram.y" { /* We allow useless extra DECLAREs */ ;} break; case 23: #line 483 "pl_gram.y" { /* * Throw a helpful error if user tries to put block * label just before BEGIN, instead of before DECLARE. */ ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("block label must be placed before DECLARE, not after"), parser_errposition((yylsp[(1) - (3)])))); ;} break; case 24: #line 496 "pl_gram.y" { PLpgSQL_variable *var; /* * If a collation is supplied, insert it into the * datatype. We assume decl_datatype always returns * a freshly built struct not shared with other * variables. */ if (OidIsValid((yyvsp[(4) - (6)].oid))) { if (!OidIsValid((yyvsp[(3) - (6)].dtype)->collation)) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("collations are not supported by type %s", format_type_be((yyvsp[(3) - (6)].dtype)->typoid)), parser_errposition((yylsp[(4) - (6)])))); (yyvsp[(3) - (6)].dtype)->collation = (yyvsp[(4) - (6)].oid); } var = plpgsql_build_variable((yyvsp[(1) - (6)].varname).name, (yyvsp[(1) - (6)].varname).lineno, (yyvsp[(3) - (6)].dtype), true); var->isconst = (yyvsp[(2) - (6)].boolean); var->notnull = (yyvsp[(5) - (6)].boolean); var->default_val = (yyvsp[(6) - (6)].expr); /* * The combination of NOT NULL without an initializer * can't work, so let's reject it at compile time. */ if (var->notnull && var->default_val == NULL) ereport(ERROR, (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), errmsg("variable \"%s\" must have a default value, since it's declared NOT NULL", var->refname), parser_errposition((yylsp[(5) - (6)])))); ;} break; case 25: #line 534 "pl_gram.y" { plpgsql_ns_additem((yyvsp[(4) - (5)].nsitem)->itemtype, (yyvsp[(4) - (5)].nsitem)->itemno, (yyvsp[(1) - (5)].varname).name); ;} break; case 26: #line 539 "pl_gram.y" { plpgsql_ns_push((yyvsp[(1) - (3)].varname).name, PLPGSQL_LABEL_OTHER); ;} break; case 27: #line 541 "pl_gram.y" { PLpgSQL_var *new; PLpgSQL_expr *curname_def; char buf[1024]; char *cp1; char *cp2; /* pop local namespace for cursor args */ plpgsql_ns_pop(); new = (PLpgSQL_var *) plpgsql_build_variable((yyvsp[(1) - (7)].varname).name, (yyvsp[(1) - (7)].varname).lineno, plpgsql_build_datatype(REFCURSOROID, -1, InvalidOid, NULL), true); curname_def = palloc0(sizeof(PLpgSQL_expr)); strcpy(buf, "SELECT "); cp1 = new->refname; cp2 = buf + strlen(buf); /* * Don't trust standard_conforming_strings here; * it might change before we use the string. */ if (strchr(cp1, '\\') != NULL) *cp2++ = ESCAPE_STRING_SYNTAX; *cp2++ = '\''; while (*cp1) { if (SQL_STR_DOUBLE(*cp1, true)) *cp2++ = *cp1; *cp2++ = *cp1++; } strcpy(cp2, "'::pg_catalog.refcursor"); curname_def->query = pstrdup(buf); new->default_val = curname_def; new->cursor_explicit_expr = (yyvsp[(7) - (7)].expr); if ((yyvsp[(5) - (7)].datum) == NULL) new->cursor_explicit_argrow = -1; else new->cursor_explicit_argrow = (yyvsp[(5) - (7)].datum)->dno; new->cursor_options = CURSOR_OPT_FAST_PLAN | (yyvsp[(2) - (7)].ival); ;} break; case 28: #line 591 "pl_gram.y" { (yyval.ival) = 0; ;} break; case 29: #line 595 "pl_gram.y" { (yyval.ival) = CURSOR_OPT_NO_SCROLL; ;} break; case 30: #line 599 "pl_gram.y" { (yyval.ival) = CURSOR_OPT_SCROLL; ;} break; case 31: #line 605 "pl_gram.y" { (yyval.expr) = read_sql_stmt(""); ;} break; case 32: #line 611 "pl_gram.y" { (yyval.datum) = NULL; ;} break; case 33: #line 615 "pl_gram.y" { PLpgSQL_row *new; int i; ListCell *l; new = palloc0(sizeof(PLpgSQL_row)); new->dtype = PLPGSQL_DTYPE_ROW; new->refname = "(unnamed row)"; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); new->rowtupdesc = NULL; new->nfields = list_length((yyvsp[(2) - (3)].list)); new->fieldnames = palloc(new->nfields * sizeof(char *)); new->varnos = palloc(new->nfields * sizeof(int)); i = 0; foreach (l, (yyvsp[(2) - (3)].list)) { PLpgSQL_variable *arg = (PLpgSQL_variable *) lfirst(l); Assert(!arg->isconst); new->fieldnames[i] = arg->refname; new->varnos[i] = arg->dno; i++; } list_free((yyvsp[(2) - (3)].list)); plpgsql_adddatum((PLpgSQL_datum *) new); (yyval.datum) = (PLpgSQL_datum *) new; ;} break; case 34: #line 646 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].datum)); ;} break; case 35: #line 650 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].datum)); ;} break; case 36: #line 656 "pl_gram.y" { (yyval.datum) = (PLpgSQL_datum *) plpgsql_build_variable((yyvsp[(1) - (2)].varname).name, (yyvsp[(1) - (2)].varname).lineno, (yyvsp[(2) - (2)].dtype), true); ;} break; case 39: #line 667 "pl_gram.y" { PLpgSQL_nsitem *nsi; nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, (yyvsp[(1) - (1)].word).ident, NULL, NULL, NULL); if (nsi == NULL) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("variable \"%s\" does not exist", (yyvsp[(1) - (1)].word).ident), parser_errposition((yylsp[(1) - (1)])))); (yyval.nsitem) = nsi; ;} break; case 40: #line 682 "pl_gram.y" { PLpgSQL_nsitem *nsi; nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, (yyvsp[(1) - (1)].keyword), NULL, NULL, NULL); if (nsi == NULL) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("variable \"%s\" does not exist", (yyvsp[(1) - (1)].keyword)), parser_errposition((yylsp[(1) - (1)])))); (yyval.nsitem) = nsi; ;} break; case 41: #line 697 "pl_gram.y" { PLpgSQL_nsitem *nsi; if (list_length((yyvsp[(1) - (1)].cword).idents) == 2) nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, strVal(linitial((yyvsp[(1) - (1)].cword).idents)), strVal(lsecond((yyvsp[(1) - (1)].cword).idents)), NULL, NULL); else if (list_length((yyvsp[(1) - (1)].cword).idents) == 3) nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, strVal(linitial((yyvsp[(1) - (1)].cword).idents)), strVal(lsecond((yyvsp[(1) - (1)].cword).idents)), strVal(lthird((yyvsp[(1) - (1)].cword).idents)), NULL); else nsi = NULL; if (nsi == NULL) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("variable \"%s\" does not exist", NameListToString((yyvsp[(1) - (1)].cword).idents)), parser_errposition((yylsp[(1) - (1)])))); (yyval.nsitem) = nsi; ;} break; case 42: #line 725 "pl_gram.y" { (yyval.varname).name = (yyvsp[(1) - (1)].word).ident; (yyval.varname).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); /* * Check to make sure name isn't already declared * in the current block. */ if (plpgsql_ns_lookup(plpgsql_ns_top(), true, (yyvsp[(1) - (1)].word).ident, NULL, NULL, NULL) != NULL) yyerror("duplicate declaration"); if (plpgsql_curr_compile->extra_warnings & PLPGSQL_XCHECK_SHADOWVAR || plpgsql_curr_compile->extra_errors & PLPGSQL_XCHECK_SHADOWVAR) { PLpgSQL_nsitem *nsi; nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, (yyvsp[(1) - (1)].word).ident, NULL, NULL, NULL); if (nsi != NULL) ereport(plpgsql_curr_compile->extra_errors & PLPGSQL_XCHECK_SHADOWVAR ? ERROR : WARNING, (errcode(ERRCODE_DUPLICATE_ALIAS), errmsg("variable \"%s\" shadows a previously defined variable", (yyvsp[(1) - (1)].word).ident), parser_errposition((yylsp[(1) - (1)])))); } ;} break; case 43: #line 753 "pl_gram.y" { (yyval.varname).name = pstrdup((yyvsp[(1) - (1)].keyword)); (yyval.varname).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); /* * Check to make sure name isn't already declared * in the current block. */ if (plpgsql_ns_lookup(plpgsql_ns_top(), true, (yyvsp[(1) - (1)].keyword), NULL, NULL, NULL) != NULL) yyerror("duplicate declaration"); if (plpgsql_curr_compile->extra_warnings & PLPGSQL_XCHECK_SHADOWVAR || plpgsql_curr_compile->extra_errors & PLPGSQL_XCHECK_SHADOWVAR) { PLpgSQL_nsitem *nsi; nsi = plpgsql_ns_lookup(plpgsql_ns_top(), false, (yyvsp[(1) - (1)].keyword), NULL, NULL, NULL); if (nsi != NULL) ereport(plpgsql_curr_compile->extra_errors & PLPGSQL_XCHECK_SHADOWVAR ? ERROR : WARNING, (errcode(ERRCODE_DUPLICATE_ALIAS), errmsg("variable \"%s\" shadows a previously defined variable", (yyvsp[(1) - (1)].keyword)), parser_errposition((yylsp[(1) - (1)])))); } ;} break; case 44: #line 783 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 45: #line 785 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 46: #line 789 "pl_gram.y" { /* * If there's a lookahead token, read_datatype * should consume it. */ (yyval.dtype) = read_datatype(yychar); yyclearin; ;} break; case 47: #line 800 "pl_gram.y" { (yyval.oid) = InvalidOid; ;} break; case 48: #line 802 "pl_gram.y" { (yyval.oid) = get_collation_oid(list_make1(makeString((yyvsp[(2) - (2)].word).ident)), false); ;} break; case 49: #line 807 "pl_gram.y" { (yyval.oid) = get_collation_oid(list_make1(makeString(pstrdup((yyvsp[(2) - (2)].keyword)))), false); ;} break; case 50: #line 812 "pl_gram.y" { (yyval.oid) = get_collation_oid((yyvsp[(2) - (2)].cword).idents, false); ;} break; case 51: #line 818 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 52: #line 820 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 53: #line 824 "pl_gram.y" { (yyval.expr) = NULL; ;} break; case 54: #line 826 "pl_gram.y" { (yyval.expr) = read_sql_expression(';', ";"); ;} break; case 59: #line 845 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 60: #line 847 "pl_gram.y" { /* don't bother linking null statements into list */ if ((yyvsp[(2) - (2)].stmt) == NULL) (yyval.list) = (yyvsp[(1) - (2)].list); else (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].stmt)); ;} break; case 61: #line 857 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (2)].stmt); ;} break; case 62: #line 859 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 63: #line 861 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 64: #line 863 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 65: #line 865 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 66: #line 867 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 67: #line 869 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 68: #line 871 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 69: #line 873 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 70: #line 875 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 71: #line 877 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 72: #line 879 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 73: #line 881 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 74: #line 883 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 75: #line 885 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 76: #line 887 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 77: #line 889 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 78: #line 891 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 79: #line 893 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 80: #line 895 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 81: #line 897 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 82: #line 899 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 83: #line 901 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 84: #line 903 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 85: #line 905 "pl_gram.y" { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;} break; case 86: #line 909 "pl_gram.y" { PLpgSQL_stmt_perform *new; new = palloc0(sizeof(PLpgSQL_stmt_perform)); new->cmd_type = PLPGSQL_STMT_PERFORM; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (2)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->expr = (yyvsp[(2) - (2)].expr); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 87: #line 923 "pl_gram.y" { PLpgSQL_stmt_call *new; new = palloc0(sizeof(PLpgSQL_stmt_call)); new->cmd_type = PLPGSQL_STMT_CALL; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->expr = read_sql_stmt("CALL "); new->is_call = true; (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 88: #line 937 "pl_gram.y" { /* use the same structures as for CALL, for simplicity */ PLpgSQL_stmt_call *new; new = palloc0(sizeof(PLpgSQL_stmt_call)); new->cmd_type = PLPGSQL_STMT_CALL; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->expr = read_sql_stmt("DO "); new->is_call = false; (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 89: #line 954 "pl_gram.y" { PLpgSQL_stmt_assign *new; new = palloc0(sizeof(PLpgSQL_stmt_assign)); new->cmd_type = PLPGSQL_STMT_ASSIGN; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->varno = (yyvsp[(1) - (3)].datum)->dno; new->expr = (yyvsp[(3) - (3)].expr); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 90: #line 969 "pl_gram.y" { PLpgSQL_stmt_getdiag *new; ListCell *lc; new = palloc0(sizeof(PLpgSQL_stmt_getdiag)); new->cmd_type = PLPGSQL_STMT_GETDIAG; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (5)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->is_stacked = (yyvsp[(2) - (5)].boolean); new->diag_items = (yyvsp[(4) - (5)].list); /* * Check information items are valid for area option. */ foreach(lc, new->diag_items) { PLpgSQL_diag_item *ditem = (PLpgSQL_diag_item *) lfirst(lc); switch (ditem->kind) { /* these fields are disallowed in stacked case */ case PLPGSQL_GETDIAG_ROW_COUNT: if (new->is_stacked) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("diagnostics item %s is not allowed in GET STACKED DIAGNOSTICS", plpgsql_getdiag_kindname(ditem->kind)), parser_errposition((yylsp[(1) - (5)])))); break; /* these fields are disallowed in current case */ case PLPGSQL_GETDIAG_ERROR_CONTEXT: case PLPGSQL_GETDIAG_ERROR_DETAIL: case PLPGSQL_GETDIAG_ERROR_HINT: case PLPGSQL_GETDIAG_RETURNED_SQLSTATE: case PLPGSQL_GETDIAG_COLUMN_NAME: case PLPGSQL_GETDIAG_CONSTRAINT_NAME: case PLPGSQL_GETDIAG_DATATYPE_NAME: case PLPGSQL_GETDIAG_MESSAGE_TEXT: case PLPGSQL_GETDIAG_TABLE_NAME: case PLPGSQL_GETDIAG_SCHEMA_NAME: if (!new->is_stacked) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("diagnostics item %s is not allowed in GET CURRENT DIAGNOSTICS", plpgsql_getdiag_kindname(ditem->kind)), parser_errposition((yylsp[(1) - (5)])))); break; /* these fields are allowed in either case */ case PLPGSQL_GETDIAG_CONTEXT: break; default: elog(ERROR, "unrecognized diagnostic item kind: %d", ditem->kind); break; } } (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 91: #line 1031 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 92: #line 1035 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 93: #line 1039 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 94: #line 1045 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].diagitem)); ;} break; case 95: #line 1049 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].diagitem)); ;} break; case 96: #line 1055 "pl_gram.y" { PLpgSQL_diag_item *new; new = palloc(sizeof(PLpgSQL_diag_item)); new->target = (yyvsp[(1) - (3)].datum)->dno; new->kind = (yyvsp[(3) - (3)].ival); (yyval.diagitem) = new; ;} break; case 97: #line 1067 "pl_gram.y" { int tok = yylex(); if (tok_is_keyword(tok, &yylval, K_ROW_COUNT, "row_count")) (yyval.ival) = PLPGSQL_GETDIAG_ROW_COUNT; else if (tok_is_keyword(tok, &yylval, K_PG_CONTEXT, "pg_context")) (yyval.ival) = PLPGSQL_GETDIAG_CONTEXT; else if (tok_is_keyword(tok, &yylval, K_PG_EXCEPTION_DETAIL, "pg_exception_detail")) (yyval.ival) = PLPGSQL_GETDIAG_ERROR_DETAIL; else if (tok_is_keyword(tok, &yylval, K_PG_EXCEPTION_HINT, "pg_exception_hint")) (yyval.ival) = PLPGSQL_GETDIAG_ERROR_HINT; else if (tok_is_keyword(tok, &yylval, K_PG_EXCEPTION_CONTEXT, "pg_exception_context")) (yyval.ival) = PLPGSQL_GETDIAG_ERROR_CONTEXT; else if (tok_is_keyword(tok, &yylval, K_COLUMN_NAME, "column_name")) (yyval.ival) = PLPGSQL_GETDIAG_COLUMN_NAME; else if (tok_is_keyword(tok, &yylval, K_CONSTRAINT_NAME, "constraint_name")) (yyval.ival) = PLPGSQL_GETDIAG_CONSTRAINT_NAME; else if (tok_is_keyword(tok, &yylval, K_PG_DATATYPE_NAME, "pg_datatype_name")) (yyval.ival) = PLPGSQL_GETDIAG_DATATYPE_NAME; else if (tok_is_keyword(tok, &yylval, K_MESSAGE_TEXT, "message_text")) (yyval.ival) = PLPGSQL_GETDIAG_MESSAGE_TEXT; else if (tok_is_keyword(tok, &yylval, K_TABLE_NAME, "table_name")) (yyval.ival) = PLPGSQL_GETDIAG_TABLE_NAME; else if (tok_is_keyword(tok, &yylval, K_SCHEMA_NAME, "schema_name")) (yyval.ival) = PLPGSQL_GETDIAG_SCHEMA_NAME; else if (tok_is_keyword(tok, &yylval, K_RETURNED_SQLSTATE, "returned_sqlstate")) (yyval.ival) = PLPGSQL_GETDIAG_RETURNED_SQLSTATE; else yyerror("unrecognized GET DIAGNOSTICS item"); ;} break; case 98: #line 1112 "pl_gram.y" { if ((yyvsp[(1) - (1)].datum)->dtype == PLPGSQL_DTYPE_ROW || (yyvsp[(1) - (1)].datum)->dtype == PLPGSQL_DTYPE_REC) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("\"%s\" is not a scalar variable", ((PLpgSQL_variable *) (yyvsp[(1) - (1)].datum))->refname), parser_errposition((yylsp[(1) - (1)])))); (yyval.datum) = (yyvsp[(1) - (1)].datum); ;} break; case 99: #line 1123 "pl_gram.y" { /* just to give a better message than "syntax error" */ word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)])); ;} break; case 100: #line 1128 "pl_gram.y" { /* just to give a better message than "syntax error" */ cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)])); ;} break; case 101: #line 1136 "pl_gram.y" { check_assignable((yyvsp[(1) - (1)].wdatum).datum, (yylsp[(1) - (1)])); (yyval.datum) = (yyvsp[(1) - (1)].wdatum).datum; ;} break; case 102: #line 1141 "pl_gram.y" { PLpgSQL_arrayelem *new; new = palloc0(sizeof(PLpgSQL_arrayelem)); new->dtype = PLPGSQL_DTYPE_ARRAYELEM; new->subscript = (yyvsp[(3) - (3)].expr); new->arrayparentno = (yyvsp[(1) - (3)].datum)->dno; /* initialize cached type data to "not valid" */ new->parenttypoid = InvalidOid; plpgsql_adddatum((PLpgSQL_datum *) new); (yyval.datum) = (PLpgSQL_datum *) new; ;} break; case 103: #line 1158 "pl_gram.y" { PLpgSQL_stmt_if *new; new = palloc0(sizeof(PLpgSQL_stmt_if)); new->cmd_type = PLPGSQL_STMT_IF; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (8)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->cond = (yyvsp[(2) - (8)].expr); new->then_body = (yyvsp[(3) - (8)].list); new->elsif_list = (yyvsp[(4) - (8)].list); new->else_body = (yyvsp[(5) - (8)].list); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 104: #line 1175 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 105: #line 1179 "pl_gram.y" { PLpgSQL_if_elsif *new; new = palloc0(sizeof(PLpgSQL_if_elsif)); new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (4)])); new->cond = (yyvsp[(3) - (4)].expr); new->stmts = (yyvsp[(4) - (4)].list); (yyval.list) = lappend((yyvsp[(1) - (4)].list), new); ;} break; case 106: #line 1192 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 107: #line 1196 "pl_gram.y" { (yyval.list) = (yyvsp[(2) - (2)].list); ;} break; case 108: #line 1202 "pl_gram.y" { (yyval.stmt) = make_case((yylsp[(1) - (7)]), (yyvsp[(2) - (7)].expr), (yyvsp[(3) - (7)].list), (yyvsp[(4) - (7)].list)); ;} break; case 109: #line 1208 "pl_gram.y" { PLpgSQL_expr *expr = NULL; int tok = yylex(); if (tok != K_WHEN) { plpgsql_push_back_token(tok); expr = read_sql_expression(K_WHEN, "WHEN"); } plpgsql_push_back_token(K_WHEN); (yyval.expr) = expr; ;} break; case 110: #line 1223 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].casewhen)); ;} break; case 111: #line 1227 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].casewhen)); ;} break; case 112: #line 1233 "pl_gram.y" { PLpgSQL_case_when *new = palloc(sizeof(PLpgSQL_case_when)); new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); new->expr = (yyvsp[(2) - (3)].expr); new->stmts = (yyvsp[(3) - (3)].list); (yyval.casewhen) = new; ;} break; case 113: #line 1244 "pl_gram.y" { (yyval.list) = NIL; ;} break; case 114: #line 1248 "pl_gram.y" { /* * proc_sect could return an empty list, but we * must distinguish that from not having ELSE at all. * Simplest fix is to return a list with one NULL * pointer, which make_case() must take care of. */ if ((yyvsp[(2) - (2)].list) != NIL) (yyval.list) = (yyvsp[(2) - (2)].list); else (yyval.list) = list_make1(NULL); ;} break; case 115: #line 1263 "pl_gram.y" { PLpgSQL_stmt_loop *new; new = palloc0(sizeof(PLpgSQL_stmt_loop)); new->cmd_type = PLPGSQL_STMT_LOOP; new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (3)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->label = (yyvsp[(1) - (3)].str); new->body = (yyvsp[(3) - (3)].loop_body).stmts; check_labels((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].loop_body).end_label, (yyvsp[(3) - (3)].loop_body).end_label_location); plpgsql_ns_pop(); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 116: #line 1281 "pl_gram.y" { PLpgSQL_stmt_while *new; new = palloc0(sizeof(PLpgSQL_stmt_while)); new->cmd_type = PLPGSQL_STMT_WHILE; new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (4)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->label = (yyvsp[(1) - (4)].str); new->cond = (yyvsp[(3) - (4)].expr); new->body = (yyvsp[(4) - (4)].loop_body).stmts; check_labels((yyvsp[(1) - (4)].str), (yyvsp[(4) - (4)].loop_body).end_label, (yyvsp[(4) - (4)].loop_body).end_label_location); plpgsql_ns_pop(); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 117: #line 1300 "pl_gram.y" { /* This runs after we've scanned the loop body */ if ((yyvsp[(3) - (4)].stmt)->cmd_type == PLPGSQL_STMT_FORI) { PLpgSQL_stmt_fori *new; new = (PLpgSQL_stmt_fori *) (yyvsp[(3) - (4)].stmt); new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (4)])); new->label = (yyvsp[(1) - (4)].str); new->body = (yyvsp[(4) - (4)].loop_body).stmts; (yyval.stmt) = (PLpgSQL_stmt *) new; } else { PLpgSQL_stmt_forq *new; Assert((yyvsp[(3) - (4)].stmt)->cmd_type == PLPGSQL_STMT_FORS || (yyvsp[(3) - (4)].stmt)->cmd_type == PLPGSQL_STMT_FORC || (yyvsp[(3) - (4)].stmt)->cmd_type == PLPGSQL_STMT_DYNFORS); /* forq is the common supertype of all three */ new = (PLpgSQL_stmt_forq *) (yyvsp[(3) - (4)].stmt); new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (4)])); new->label = (yyvsp[(1) - (4)].str); new->body = (yyvsp[(4) - (4)].loop_body).stmts; (yyval.stmt) = (PLpgSQL_stmt *) new; } check_labels((yyvsp[(1) - (4)].str), (yyvsp[(4) - (4)].loop_body).end_label, (yyvsp[(4) - (4)].loop_body).end_label_location); /* close namespace started in opt_loop_label */ plpgsql_ns_pop(); ;} break; case 118: #line 1334 "pl_gram.y" { int tok = yylex(); int tokloc = yylloc; if (tok == K_EXECUTE) { /* EXECUTE means it's a dynamic FOR loop */ PLpgSQL_stmt_dynfors *new; PLpgSQL_expr *expr; int term; expr = read_sql_expression2(K_LOOP, K_USING, "LOOP or USING", &term); new = palloc0(sizeof(PLpgSQL_stmt_dynfors)); new->cmd_type = PLPGSQL_STMT_DYNFORS; new->stmtid = ++plpgsql_curr_compile->nstatements; if ((yyvsp[(1) - (2)].forvariable).row) { new->var = (PLpgSQL_variable *) (yyvsp[(1) - (2)].forvariable).row; check_assignable((yyvsp[(1) - (2)].forvariable).row, (yylsp[(1) - (2)])); } else if ((yyvsp[(1) - (2)].forvariable).scalar) { /* convert single scalar to list */ new->var = (PLpgSQL_variable *) make_scalar_list1((yyvsp[(1) - (2)].forvariable).name, (yyvsp[(1) - (2)].forvariable).scalar, (yyvsp[(1) - (2)].forvariable).lineno, (yylsp[(1) - (2)])); /* make_scalar_list1 did check_assignable */ } else { ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("loop variable of loop over rows must be a record variable or list of scalar variables"), parser_errposition((yylsp[(1) - (2)])))); } new->query = expr; if (term == K_USING) { do { expr = read_sql_expression2(',', K_LOOP, ", or LOOP", &term); new->params = lappend(new->params, expr); } while (term == ','); } (yyval.stmt) = (PLpgSQL_stmt *) new; } else if (tok == T_DATUM && yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_VAR && ((PLpgSQL_var *) yylval.wdatum.datum)->datatype->typoid == REFCURSOROID) { /* It's FOR var IN cursor */ PLpgSQL_stmt_forc *new; PLpgSQL_var *cursor = (PLpgSQL_var *) yylval.wdatum.datum; new = (PLpgSQL_stmt_forc *) palloc0(sizeof(PLpgSQL_stmt_forc)); new->cmd_type = PLPGSQL_STMT_FORC; new->stmtid = ++plpgsql_curr_compile->nstatements; new->curvar = cursor->dno; /* Should have had a single variable name */ if ((yyvsp[(1) - (2)].forvariable).scalar && (yyvsp[(1) - (2)].forvariable).row) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cursor FOR loop must have only one target variable"), parser_errposition((yylsp[(1) - (2)])))); /* can't use an unbound cursor this way */ if (cursor->cursor_explicit_expr == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cursor FOR loop must use a bound cursor variable"), parser_errposition(tokloc))); /* collect cursor's parameters if any */ new->argquery = read_cursor_args(cursor, K_LOOP, "LOOP"); /* create loop's private RECORD variable */ new->var = (PLpgSQL_variable *) plpgsql_build_record((yyvsp[(1) - (2)].forvariable).name, (yyvsp[(1) - (2)].forvariable).lineno, NULL, RECORDOID, true); (yyval.stmt) = (PLpgSQL_stmt *) new; } else { PLpgSQL_expr *expr1; int expr1loc; bool reverse = false; /* * We have to distinguish between two * alternatives: FOR var IN a .. b and FOR * var IN query. Unfortunately this is * tricky, since the query in the second * form needn't start with a SELECT * keyword. We use the ugly hack of * looking for two periods after the first * token. We also check for the REVERSE * keyword, which means it must be an * integer loop. */ if (tok_is_keyword(tok, &yylval, K_REVERSE, "reverse")) reverse = true; else plpgsql_push_back_token(tok); /* * Read tokens until we see either a ".." * or a LOOP. The text we read may not * necessarily be a well-formed SQL * statement, so we need to invoke * read_sql_construct directly. */ expr1 = read_sql_construct(DOT_DOT, K_LOOP, 0, "LOOP", "SELECT ", true, false, true, &expr1loc, &tok); if (tok == DOT_DOT) { /* Saw "..", so it must be an integer loop */ PLpgSQL_expr *expr2; PLpgSQL_expr *expr_by; PLpgSQL_var *fvar; PLpgSQL_stmt_fori *new; /* Check first expression is well-formed */ check_sql_expr(expr1->query, expr1loc, 7); /* Read and check the second one */ expr2 = read_sql_expression2(K_LOOP, K_BY, "LOOP", &tok); /* Get the BY clause if any */ if (tok == K_BY) expr_by = read_sql_expression(K_LOOP, "LOOP"); else expr_by = NULL; /* Should have had a single variable name */ if ((yyvsp[(1) - (2)].forvariable).scalar && (yyvsp[(1) - (2)].forvariable).row) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("integer FOR loop must have only one target variable"), parser_errposition((yylsp[(1) - (2)])))); /* create loop's private variable */ fvar = (PLpgSQL_var *) plpgsql_build_variable((yyvsp[(1) - (2)].forvariable).name, (yyvsp[(1) - (2)].forvariable).lineno, plpgsql_build_datatype(INT4OID, -1, InvalidOid, NULL), true); new = palloc0(sizeof(PLpgSQL_stmt_fori)); new->cmd_type = PLPGSQL_STMT_FORI; new->stmtid = ++plpgsql_curr_compile->nstatements; new->var = fvar; new->reverse = reverse; new->lower = expr1; new->upper = expr2; new->step = expr_by; (yyval.stmt) = (PLpgSQL_stmt *) new; } else { /* * No "..", so it must be a query loop. We've * prefixed an extra SELECT to the query text, * so we need to remove that before performing * syntax checking. */ char *tmp_query; PLpgSQL_stmt_fors *new; if (reverse) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot specify REVERSE in query FOR loop"), parser_errposition(tokloc))); Assert(strncmp(expr1->query, "SELECT ", 7) == 0); tmp_query = pstrdup(expr1->query + 7); pfree(expr1->query); expr1->query = tmp_query; check_sql_expr(expr1->query, expr1loc, 0); new = palloc0(sizeof(PLpgSQL_stmt_fors)); new->cmd_type = PLPGSQL_STMT_FORS; new->stmtid = ++plpgsql_curr_compile->nstatements; if ((yyvsp[(1) - (2)].forvariable).row) { new->var = (PLpgSQL_variable *) (yyvsp[(1) - (2)].forvariable).row; check_assignable((yyvsp[(1) - (2)].forvariable).row, (yylsp[(1) - (2)])); } else if ((yyvsp[(1) - (2)].forvariable).scalar) { /* convert single scalar to list */ new->var = (PLpgSQL_variable *) make_scalar_list1((yyvsp[(1) - (2)].forvariable).name, (yyvsp[(1) - (2)].forvariable).scalar, (yyvsp[(1) - (2)].forvariable).lineno, (yylsp[(1) - (2)])); /* make_scalar_list1 did check_assignable */ } else { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("loop variable of loop over rows must be a record variable or list of scalar variables"), parser_errposition((yylsp[(1) - (2)])))); } new->query = expr1; (yyval.stmt) = (PLpgSQL_stmt *) new; } } ;} break; case 119: #line 1596 "pl_gram.y" { (yyval.forvariable).name = NameOfDatum(&((yyvsp[(1) - (1)].wdatum))); (yyval.forvariable).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); if ((yyvsp[(1) - (1)].wdatum).datum->dtype == PLPGSQL_DTYPE_ROW || (yyvsp[(1) - (1)].wdatum).datum->dtype == PLPGSQL_DTYPE_REC) { (yyval.forvariable).scalar = NULL; (yyval.forvariable).row = (yyvsp[(1) - (1)].wdatum).datum; } else { int tok; (yyval.forvariable).scalar = (yyvsp[(1) - (1)].wdatum).datum; (yyval.forvariable).row = NULL; /* check for comma-separated list */ tok = yylex(); plpgsql_push_back_token(tok); if (tok == ',') (yyval.forvariable).row = (PLpgSQL_datum *) read_into_scalar_list((yyval.forvariable).name, (yyval.forvariable).scalar, (yylsp[(1) - (1)])); } ;} break; case 120: #line 1622 "pl_gram.y" { int tok; (yyval.forvariable).name = (yyvsp[(1) - (1)].word).ident; (yyval.forvariable).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); (yyval.forvariable).scalar = NULL; (yyval.forvariable).row = NULL; /* check for comma-separated list */ tok = yylex(); plpgsql_push_back_token(tok); if (tok == ',') word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)])); ;} break; case 121: #line 1636 "pl_gram.y" { /* just to give a better message than "syntax error" */ cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)])); ;} break; case 122: #line 1643 "pl_gram.y" { PLpgSQL_stmt_foreach_a *new; new = palloc0(sizeof(PLpgSQL_stmt_foreach_a)); new->cmd_type = PLPGSQL_STMT_FOREACH_A; new->lineno = plpgsql_location_to_lineno((yylsp[(2) - (8)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->label = (yyvsp[(1) - (8)].str); new->slice = (yyvsp[(4) - (8)].ival); new->expr = (yyvsp[(7) - (8)].expr); new->body = (yyvsp[(8) - (8)].loop_body).stmts; if ((yyvsp[(3) - (8)].forvariable).row) { new->varno = (yyvsp[(3) - (8)].forvariable).row->dno; check_assignable((yyvsp[(3) - (8)].forvariable).row, (yylsp[(3) - (8)])); } else if ((yyvsp[(3) - (8)].forvariable).scalar) { new->varno = (yyvsp[(3) - (8)].forvariable).scalar->dno; check_assignable((yyvsp[(3) - (8)].forvariable).scalar, (yylsp[(3) - (8)])); } else { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("loop variable of FOREACH must be a known variable or list of variables"), parser_errposition((yylsp[(3) - (8)])))); } check_labels((yyvsp[(1) - (8)].str), (yyvsp[(8) - (8)].loop_body).end_label, (yyvsp[(8) - (8)].loop_body).end_label_location); plpgsql_ns_pop(); (yyval.stmt) = (PLpgSQL_stmt *) new; ;} break; case 123: #line 1681 "pl_gram.y" { (yyval.ival) = 0; ;} break; case 124: #line 1685 "pl_gram.y" { (yyval.ival) = (yyvsp[(2) - (2)].ival); ;} break; case 125: #line 1691 "pl_gram.y" { PLpgSQL_stmt_exit *new; new = palloc0(sizeof(PLpgSQL_stmt_exit)); new->cmd_type = PLPGSQL_STMT_EXIT; new->stmtid = ++plpgsql_curr_compile->nstatements; new->is_exit = (yyvsp[(1) - (3)].boolean); new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); new->label = (yyvsp[(2) - (3)].str); new->cond = (yyvsp[(3) - (3)].expr); if ((yyvsp[(2) - (3)].str)) { /* We have a label, so verify it exists */ PLpgSQL_nsitem *label; label = plpgsql_ns_lookup_label(plpgsql_ns_top(), (yyvsp[(2) - (3)].str)); if (label == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("there is no label \"%s\" " "attached to any block or loop enclosing this statement", (yyvsp[(2) - (3)].str)), parser_errposition((yylsp[(2) - (3)])))); /* CONTINUE only allows loop labels */ if (label->itemno != PLPGSQL_LABEL_LOOP && !new->is_exit) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("block label \"%s\" cannot be used in CONTINUE", (yyvsp[(2) - (3)].str)), parser_errposition((yylsp[(2) - (3)])))); } else { /* * No label, so make sure there is some loop (an * unlabeled EXIT does not match a block, so this * is the same test for both EXIT and CONTINUE) */ if (plpgsql_ns_find_nearest_loop(plpgsql_ns_top()) == NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), new->is_exit ? errmsg("EXIT cannot be used outside a loop, unless it has a label") : errmsg("CONTINUE cannot be used outside a loop"), parser_errposition((yylsp[(1) - (3)])))); } (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 126: #line 1744 "pl_gram.y" { (yyval.boolean) = true; ;} break; case 127: #line 1748 "pl_gram.y" { (yyval.boolean) = false; ;} break; case 128: #line 1754 "pl_gram.y" { int tok; tok = yylex(); if (tok == 0) yyerror("unexpected end of function definition"); if (tok_is_keyword(tok, &yylval, K_NEXT, "next")) { (yyval.stmt) = make_return_next_stmt((yylsp[(1) - (1)])); } else if (tok_is_keyword(tok, &yylval, K_QUERY, "query")) { (yyval.stmt) = make_return_query_stmt((yylsp[(1) - (1)])); } else { plpgsql_push_back_token(tok); (yyval.stmt) = make_return_stmt((yylsp[(1) - (1)])); } ;} break; case 129: #line 1780 "pl_gram.y" { PLpgSQL_stmt_raise *new; int tok; new = palloc(sizeof(PLpgSQL_stmt_raise)); new->cmd_type = PLPGSQL_STMT_RAISE; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->elog_level = ERROR; /* default */ new->condname = NULL; new->message = NULL; new->params = NIL; new->options = NIL; tok = yylex(); if (tok == 0) yyerror("unexpected end of function definition"); /* * We could have just RAISE, meaning to re-throw * the current error. */ if (tok != ';') { /* * First is an optional elog severity level. */ if (tok_is_keyword(tok, &yylval, K_EXCEPTION, "exception")) { new->elog_level = ERROR; tok = yylex(); } else if (tok_is_keyword(tok, &yylval, K_WARNING, "warning")) { new->elog_level = WARNING; tok = yylex(); } else if (tok_is_keyword(tok, &yylval, K_NOTICE, "notice")) { new->elog_level = NOTICE; tok = yylex(); } else if (tok_is_keyword(tok, &yylval, K_INFO, "info")) { new->elog_level = INFO; tok = yylex(); } else if (tok_is_keyword(tok, &yylval, K_LOG, "log")) { new->elog_level = LOG; tok = yylex(); } else if (tok_is_keyword(tok, &yylval, K_DEBUG, "debug")) { new->elog_level = DEBUG1; tok = yylex(); } if (tok == 0) yyerror("unexpected end of function definition"); /* * Next we can have a condition name, or * equivalently SQLSTATE 'xxxxx', or a string * literal that is the old-style message format, * or USING to start the option list immediately. */ if (tok == SCONST) { /* old style message and parameters */ new->message = yylval.str; /* * We expect either a semi-colon, which * indicates no parameters, or a comma that * begins the list of parameter expressions, * or USING to begin the options list. */ tok = yylex(); if (tok != ',' && tok != ';' && tok != K_USING) yyerror("syntax error"); while (tok == ',') { PLpgSQL_expr *expr; expr = read_sql_construct(',', ';', K_USING, ", or ; or USING", "SELECT ", true, true, true, NULL, &tok); new->params = lappend(new->params, expr); } } else if (tok != K_USING) { /* must be condition name or SQLSTATE */ if (tok_is_keyword(tok, &yylval, K_SQLSTATE, "sqlstate")) { /* next token should be a string literal */ char *sqlstatestr; if (yylex() != SCONST) yyerror("syntax error"); sqlstatestr = yylval.str; if (strlen(sqlstatestr) != 5) yyerror("invalid SQLSTATE code"); if (strspn(sqlstatestr, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") != 5) yyerror("invalid SQLSTATE code"); new->condname = sqlstatestr; } else { if (tok == T_WORD) new->condname = yylval.word.ident; else if (plpgsql_token_is_unreserved_keyword(tok)) new->condname = pstrdup(yylval.keyword); else yyerror("syntax error"); plpgsql_recognize_err_condition(new->condname, false); } tok = yylex(); if (tok != ';' && tok != K_USING) yyerror("syntax error"); } if (tok == K_USING) new->options = read_raise_options(); } check_raise_parameters(new); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 130: #line 1925 "pl_gram.y" { PLpgSQL_stmt_assert *new; int tok; new = palloc(sizeof(PLpgSQL_stmt_assert)); new->cmd_type = PLPGSQL_STMT_ASSERT; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->cond = read_sql_expression2(',', ';', ", or ;", &tok); if (tok == ',') new->message = read_sql_expression(';', ";"); else new->message = NULL; (yyval.stmt) = (PLpgSQL_stmt *) new; ;} break; case 131: #line 1949 "pl_gram.y" { (yyval.loop_body).stmts = (yyvsp[(1) - (5)].list); (yyval.loop_body).end_label = (yyvsp[(4) - (5)].str); (yyval.loop_body).end_label_location = (yylsp[(4) - (5)]); ;} break; case 132: #line 1967 "pl_gram.y" { (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[(1) - (1)])); ;} break; case 133: #line 1971 "pl_gram.y" { (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[(1) - (1)])); ;} break; case 134: #line 1975 "pl_gram.y" { int tok; tok = yylex(); plpgsql_push_back_token(tok); if (tok == '=' || tok == COLON_EQUALS || tok == '[') word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)])); (yyval.stmt) = make_execsql_stmt(T_WORD, (yylsp[(1) - (1)])); ;} break; case 135: #line 1985 "pl_gram.y" { int tok; tok = yylex(); plpgsql_push_back_token(tok); if (tok == '=' || tok == COLON_EQUALS || tok == '[') cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)])); (yyval.stmt) = make_execsql_stmt(T_CWORD, (yylsp[(1) - (1)])); ;} break; case 136: #line 1997 "pl_gram.y" { PLpgSQL_stmt_dynexecute *new; PLpgSQL_expr *expr; int endtoken; expr = read_sql_construct(K_INTO, K_USING, ';', "INTO or USING or ;", "SELECT ", true, true, true, NULL, &endtoken); new = palloc(sizeof(PLpgSQL_stmt_dynexecute)); new->cmd_type = PLPGSQL_STMT_DYNEXECUTE; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->query = expr; new->into = false; new->strict = false; new->target = NULL; new->params = NIL; /* * We loop to allow the INTO and USING clauses to * appear in either order, since people easily get * that wrong. This coding also prevents "INTO foo" * from getting absorbed into a USING expression, * which is *really* confusing. */ for (;;) { if (endtoken == K_INTO) { if (new->into) /* multiple INTO */ yyerror("syntax error"); new->into = true; read_into_target(&new->target, &new->strict); endtoken = yylex(); } else if (endtoken == K_USING) { if (new->params) /* multiple USING */ yyerror("syntax error"); do { expr = read_sql_construct(',', ';', K_INTO, ", or ; or INTO", "SELECT ", true, true, true, NULL, &endtoken); new->params = lappend(new->params, expr); } while (endtoken == ','); } else if (endtoken == ';') break; else yyerror("syntax error"); } (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 137: #line 2061 "pl_gram.y" { PLpgSQL_stmt_open *new; int tok; new = palloc0(sizeof(PLpgSQL_stmt_open)); new->cmd_type = PLPGSQL_STMT_OPEN; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (2)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->curvar = (yyvsp[(2) - (2)].var)->dno; new->cursor_options = CURSOR_OPT_FAST_PLAN; if ((yyvsp[(2) - (2)].var)->cursor_explicit_expr == NULL) { /* be nice if we could use opt_scrollable here */ tok = yylex(); if (tok_is_keyword(tok, &yylval, K_NO, "no")) { tok = yylex(); if (tok_is_keyword(tok, &yylval, K_SCROLL, "scroll")) { new->cursor_options |= CURSOR_OPT_NO_SCROLL; tok = yylex(); } } else if (tok_is_keyword(tok, &yylval, K_SCROLL, "scroll")) { new->cursor_options |= CURSOR_OPT_SCROLL; tok = yylex(); } if (tok != K_FOR) yyerror("syntax error, expected \"FOR\""); tok = yylex(); if (tok == K_EXECUTE) { int endtoken; new->dynquery = read_sql_expression2(K_USING, ';', "USING or ;", &endtoken); /* If we found "USING", collect argument(s) */ if (endtoken == K_USING) { PLpgSQL_expr *expr; do { expr = read_sql_expression2(',', ';', ", or ;", &endtoken); new->params = lappend(new->params, expr); } while (endtoken == ','); } } else { plpgsql_push_back_token(tok); new->query = read_sql_stmt(""); } } else { /* predefined cursor query, so read args */ new->argquery = read_cursor_args((yyvsp[(2) - (2)].var), ';', ";"); } (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 138: #line 2139 "pl_gram.y" { PLpgSQL_stmt_fetch *fetch = (yyvsp[(2) - (4)].fetch); PLpgSQL_variable *target; /* We have already parsed everything through the INTO keyword */ read_into_target(&target, NULL); if (yylex() != ';') yyerror("syntax error"); /* * We don't allow multiple rows in PL/pgSQL's FETCH * statement, only in MOVE. */ if (fetch->returns_multiple_rows) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("FETCH statement cannot return multiple rows"), parser_errposition((yylsp[(1) - (4)])))); fetch->lineno = plpgsql_location_to_lineno((yylsp[(1) - (4)])); fetch->target = target; fetch->curvar = (yyvsp[(3) - (4)].var)->dno; fetch->is_move = false; (yyval.stmt) = (PLpgSQL_stmt *)fetch; ;} break; case 139: #line 2169 "pl_gram.y" { PLpgSQL_stmt_fetch *fetch = (yyvsp[(2) - (4)].fetch); fetch->lineno = plpgsql_location_to_lineno((yylsp[(1) - (4)])); fetch->curvar = (yyvsp[(3) - (4)].var)->dno; fetch->is_move = true; (yyval.stmt) = (PLpgSQL_stmt *)fetch; ;} break; case 140: #line 2181 "pl_gram.y" { (yyval.fetch) = read_fetch_direction(); ;} break; case 141: #line 2187 "pl_gram.y" { PLpgSQL_stmt_close *new; new = palloc(sizeof(PLpgSQL_stmt_close)); new->cmd_type = PLPGSQL_STMT_CLOSE; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->curvar = (yyvsp[(2) - (3)].var)->dno; (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 142: #line 2201 "pl_gram.y" { /* We do not bother building a node for NULL */ (yyval.stmt) = NULL; ;} break; case 143: #line 2208 "pl_gram.y" { PLpgSQL_stmt_commit *new; new = palloc(sizeof(PLpgSQL_stmt_commit)); new->cmd_type = PLPGSQL_STMT_COMMIT; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->chain = (yyvsp[(2) - (3)].ival); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 144: #line 2222 "pl_gram.y" { PLpgSQL_stmt_rollback *new; new = palloc(sizeof(PLpgSQL_stmt_rollback)); new->cmd_type = PLPGSQL_STMT_ROLLBACK; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (3)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->chain = (yyvsp[(2) - (3)].ival); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 145: #line 2236 "pl_gram.y" { (yyval.ival) = true; ;} break; case 146: #line 2237 "pl_gram.y" { (yyval.ival) = false; ;} break; case 147: #line 2238 "pl_gram.y" { (yyval.ival) = false; ;} break; case 148: #line 2242 "pl_gram.y" { PLpgSQL_stmt_set *new; new = palloc0(sizeof(PLpgSQL_stmt_set)); new->cmd_type = PLPGSQL_STMT_SET; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->expr = read_sql_stmt("SET "); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 149: #line 2255 "pl_gram.y" { PLpgSQL_stmt_set *new; new = palloc0(sizeof(PLpgSQL_stmt_set)); new->cmd_type = PLPGSQL_STMT_SET; new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); new->stmtid = ++plpgsql_curr_compile->nstatements; new->expr = read_sql_stmt("RESET "); (yyval.stmt) = (PLpgSQL_stmt *)new; ;} break; case 150: #line 2270 "pl_gram.y" { /* * In principle we should support a cursor_variable * that is an array element, but for now we don't, so * just throw an error if next token is '['. */ if ((yyvsp[(1) - (1)].wdatum).datum->dtype != PLPGSQL_DTYPE_VAR || plpgsql_peek() == '[') ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("cursor variable must be a simple variable"), parser_errposition((yylsp[(1) - (1)])))); if (((PLpgSQL_var *) (yyvsp[(1) - (1)].wdatum).datum)->datatype->typoid != REFCURSOROID) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("variable \"%s\" must be of type cursor or refcursor", ((PLpgSQL_var *) (yyvsp[(1) - (1)].wdatum).datum)->refname), parser_errposition((yylsp[(1) - (1)])))); (yyval.var) = (PLpgSQL_var *) (yyvsp[(1) - (1)].wdatum).datum; ;} break; case 151: #line 2292 "pl_gram.y" { /* just to give a better message than "syntax error" */ word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)])); ;} break; case 152: #line 2297 "pl_gram.y" { /* just to give a better message than "syntax error" */ cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)])); ;} break; case 153: #line 2304 "pl_gram.y" { (yyval.exception_block) = NULL; ;} break; case 154: #line 2306 "pl_gram.y" { /* * We use a mid-rule action to add these * special variables to the namespace before * parsing the WHEN clauses themselves. The * scope of the names extends to the end of the * current block. */ int lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)])); PLpgSQL_exception_block *new = palloc(sizeof(PLpgSQL_exception_block)); PLpgSQL_variable *var; var = plpgsql_build_variable("sqlstate", lineno, plpgsql_build_datatype(TEXTOID, -1, plpgsql_curr_compile->fn_input_collation, NULL), true); var->isconst = true; new->sqlstate_varno = var->dno; var = plpgsql_build_variable("sqlerrm", lineno, plpgsql_build_datatype(TEXTOID, -1, plpgsql_curr_compile->fn_input_collation, NULL), true); var->isconst = true; new->sqlerrm_varno = var->dno; (yyval.exception_block) = new; ;} break; case 155: #line 2339 "pl_gram.y" { PLpgSQL_exception_block *new = (yyvsp[(2) - (3)].exception_block); new->exc_list = (yyvsp[(3) - (3)].list); (yyval.exception_block) = new; ;} break; case 156: #line 2348 "pl_gram.y" { (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].exception)); ;} break; case 157: #line 2352 "pl_gram.y" { (yyval.list) = list_make1((yyvsp[(1) - (1)].exception)); ;} break; case 158: #line 2358 "pl_gram.y" { PLpgSQL_exception *new; new = palloc0(sizeof(PLpgSQL_exception)); new->lineno = plpgsql_location_to_lineno((yylsp[(1) - (4)])); new->conditions = (yyvsp[(2) - (4)].condition); new->action = (yyvsp[(4) - (4)].list); (yyval.exception) = new; ;} break; case 159: #line 2371 "pl_gram.y" { PLpgSQL_condition *old; for (old = (yyvsp[(1) - (3)].condition); old->next != NULL; old = old->next) /* skip */ ; old->next = (yyvsp[(3) - (3)].condition); (yyval.condition) = (yyvsp[(1) - (3)].condition); ;} break; case 160: #line 2380 "pl_gram.y" { (yyval.condition) = (yyvsp[(1) - (1)].condition); ;} break; case 161: #line 2386 "pl_gram.y" { if (strcmp((yyvsp[(1) - (1)].str), "sqlstate") != 0) { (yyval.condition) = plpgsql_parse_err_condition((yyvsp[(1) - (1)].str)); } else { PLpgSQL_condition *new; char *sqlstatestr; /* next token should be a string literal */ if (yylex() != SCONST) yyerror("syntax error"); sqlstatestr = yylval.str; if (strlen(sqlstatestr) != 5) yyerror("invalid SQLSTATE code"); if (strspn(sqlstatestr, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") != 5) yyerror("invalid SQLSTATE code"); new = palloc(sizeof(PLpgSQL_condition)); new->sqlerrstate = MAKE_SQLSTATE(sqlstatestr[0], sqlstatestr[1], sqlstatestr[2], sqlstatestr[3], sqlstatestr[4]); new->condname = sqlstatestr; new->next = NULL; (yyval.condition) = new; } ;} break; case 162: #line 2422 "pl_gram.y" { (yyval.expr) = read_sql_expression(';', ";"); ;} break; case 163: #line 2426 "pl_gram.y" { (yyval.expr) = read_sql_expression(']', "]"); ;} break; case 164: #line 2430 "pl_gram.y" { (yyval.expr) = read_sql_expression(K_THEN, "THEN"); ;} break; case 165: #line 2434 "pl_gram.y" { (yyval.expr) = read_sql_expression(K_LOOP, "LOOP"); ;} break; case 166: #line 2438 "pl_gram.y" { plpgsql_ns_push(NULL, PLPGSQL_LABEL_BLOCK); (yyval.str) = NULL; ;} break; case 167: #line 2443 "pl_gram.y" { plpgsql_ns_push((yyvsp[(2) - (3)].str), PLPGSQL_LABEL_BLOCK); (yyval.str) = (yyvsp[(2) - (3)].str); ;} break; case 168: #line 2450 "pl_gram.y" { plpgsql_ns_push(NULL, PLPGSQL_LABEL_LOOP); (yyval.str) = NULL; ;} break; case 169: #line 2455 "pl_gram.y" { plpgsql_ns_push((yyvsp[(2) - (3)].str), PLPGSQL_LABEL_LOOP); (yyval.str) = (yyvsp[(2) - (3)].str); ;} break; case 170: #line 2462 "pl_gram.y" { (yyval.str) = NULL; ;} break; case 171: #line 2466 "pl_gram.y" { /* label validity will be checked by outer production */ (yyval.str) = (yyvsp[(1) - (1)].str); ;} break; case 172: #line 2473 "pl_gram.y" { (yyval.expr) = NULL; ;} break; case 173: #line 2475 "pl_gram.y" { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;} break; case 174: #line 2482 "pl_gram.y" { (yyval.str) = (yyvsp[(1) - (1)].word).ident; ;} break; case 175: #line 2486 "pl_gram.y" { (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword)); ;} break; case 176: #line 2490 "pl_gram.y" { if ((yyvsp[(1) - (1)].wdatum).ident == NULL) /* composite name not OK */ yyerror("syntax error"); (yyval.str) = (yyvsp[(1) - (1)].wdatum).ident; ;} break; /* Line 1267 of yacc.c. */ #line 4803 "pl_gram.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; *++yylsp = yyloc; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yymsg); } else { yyerror (YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } yyerror_range[0] = yylloc; if (yyerrstatus == 3) { /* If just tried and failed to reuse look-ahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, &yylloc); yychar = YYEMPTY; } } /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; yyerror_range[0] = yylsp[1-yylen]; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yyerror_range[0] = *yylsp; yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } if (yyn == YYFINAL) YYACCEPT; *++yyvsp = yylval; yyerror_range[1] = yylloc; /* Using YYLLOC is tempting, but would change the location of the look-ahead. YYLOC is available though. */ YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); *++yylsp = yyloc; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp, yylsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } #line 2582 "pl_gram.y" /* * Check whether a token represents an "unreserved keyword". * We have various places where we want to recognize a keyword in preference * to a variable name, but not reserve that keyword in other contexts. * Hence, this kluge. */ static bool tok_is_keyword(int token, union YYSTYPE *lval, int kw_token, const char *kw_str) { if (token == kw_token) { /* Normal case, was recognized by scanner (no conflicting variable) */ return true; } else if (token == T_DATUM) { /* * It's a variable, so recheck the string name. Note we will not * match composite names (hence an unreserved word followed by "." * will not be recognized). */ if (!lval->wdatum.quoted && lval->wdatum.ident != NULL && strcmp(lval->wdatum.ident, kw_str) == 0) return true; } return false; /* not the keyword */ } /* * Convenience routine to complain when we expected T_DATUM and got T_WORD, * ie, unrecognized variable. */ static void word_is_not_variable(PLword *word, int location) { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("\"%s\" is not a known variable", word->ident), parser_errposition(location))); } /* Same, for a CWORD */ static void cword_is_not_variable(PLcword *cword, int location) { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("\"%s\" is not a known variable", NameListToString(cword->idents)), parser_errposition(location))); } /* * Convenience routine to complain when we expected T_DATUM and got * something else. "tok" must be the current token, since we also * look at yylval and yylloc. */ static void current_token_is_not_variable(int tok) { if (tok == T_WORD) word_is_not_variable(&(yylval.word), yylloc); else if (tok == T_CWORD) cword_is_not_variable(&(yylval.cword), yylloc); else yyerror("syntax error"); } /* Convenience routine to read an expression with one possible terminator */ static PLpgSQL_expr * read_sql_expression(int until, const char *expected) { return read_sql_construct(until, 0, 0, expected, "SELECT ", true, true, true, NULL, NULL); } /* Convenience routine to read an expression with two possible terminators */ static PLpgSQL_expr * read_sql_expression2(int until, int until2, const char *expected, int *endtoken) { return read_sql_construct(until, until2, 0, expected, "SELECT ", true, true, true, NULL, endtoken); } /* Convenience routine to read a SQL statement that must end with ';' */ static PLpgSQL_expr * read_sql_stmt(const char *sqlstart) { return read_sql_construct(';', 0, 0, ";", sqlstart, false, true, true, NULL, NULL); } /* * Read a SQL construct and build a PLpgSQL_expr for it. * * until: token code for expected terminator * until2: token code for alternate terminator (pass 0 if none) * until3: token code for another alternate terminator (pass 0 if none) * expected: text to use in complaining that terminator was not found * sqlstart: text to prefix to the accumulated SQL text * isexpression: whether to say we're reading an "expression" or a "statement" * valid_sql: whether to check the syntax of the expr (prefixed with sqlstart) * trim: trim trailing whitespace * startloc: if not NULL, location of first token is stored at *startloc * endtoken: if not NULL, ending token is stored at *endtoken * (this is only interesting if until2 or until3 isn't zero) */ static PLpgSQL_expr * read_sql_construct(int until, int until2, int until3, const char *expected, const char *sqlstart, bool isexpression, bool valid_sql, bool trim, int *startloc, int *endtoken) { int tok; StringInfoData ds; IdentifierLookup save_IdentifierLookup; int startlocation = -1; int parenlevel = 0; PLpgSQL_expr *expr; initStringInfo(&ds); appendStringInfoString(&ds, sqlstart); /* special lookup mode for identifiers within the SQL text */ save_IdentifierLookup = plpgsql_IdentifierLookup; plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_EXPR; for (;;) { tok = yylex(); if (startlocation < 0) /* remember loc of first token */ startlocation = yylloc; if (tok == until && parenlevel == 0) break; if (tok == until2 && parenlevel == 0) break; if (tok == until3 && parenlevel == 0) break; if (tok == '(' || tok == '[') parenlevel++; else if (tok == ')' || tok == ']') { parenlevel--; if (parenlevel < 0) yyerror("mismatched parentheses"); } /* * End of function definition is an error, and we don't expect to * hit a semicolon either (unless it's the until symbol, in which * case we should have fallen out above). */ if (tok == 0 || tok == ';') { if (parenlevel != 0) yyerror("mismatched parentheses"); if (isexpression) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("missing \"%s\" at end of SQL expression", expected), parser_errposition(yylloc))); else ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("missing \"%s\" at end of SQL statement", expected), parser_errposition(yylloc))); } } plpgsql_IdentifierLookup = save_IdentifierLookup; if (startloc) *startloc = startlocation; if (endtoken) *endtoken = tok; /* give helpful complaint about empty input */ if (startlocation >= yylloc) { if (isexpression) yyerror("missing expression"); else yyerror("missing SQL statement"); } plpgsql_append_source_text(&ds, startlocation, yylloc); /* trim any trailing whitespace, for neatness */ if (trim) { while (ds.len > 0 && scanner_isspace(ds.data[ds.len - 1])) ds.data[--ds.len] = '\0'; } expr = palloc0(sizeof(PLpgSQL_expr)); expr->query = pstrdup(ds.data); expr->plan = NULL; expr->paramnos = NULL; expr->rwparam = -1; expr->ns = plpgsql_ns_top(); pfree(ds.data); if (valid_sql) check_sql_expr(expr->query, startlocation, strlen(sqlstart)); return expr; } static PLpgSQL_type * read_datatype(int tok) { StringInfoData ds; char *type_name; int startlocation; PLpgSQL_type *result; int parenlevel = 0; /* Should only be called while parsing DECLARE sections */ Assert(plpgsql_IdentifierLookup == IDENTIFIER_LOOKUP_DECLARE); /* Often there will be a lookahead token, but if not, get one */ if (tok == YYEMPTY) tok = yylex(); startlocation = yylloc; /* * If we have a simple or composite identifier, check for %TYPE * and %ROWTYPE constructs. */ if (tok == T_WORD) { char *dtname = yylval.word.ident; tok = yylex(); if (tok == '%') { tok = yylex(); if (tok_is_keyword(tok, &yylval, K_TYPE, "type")) { result = plpgsql_parse_wordtype(dtname); if (result) return result; } else if (tok_is_keyword(tok, &yylval, K_ROWTYPE, "rowtype")) { result = plpgsql_parse_wordrowtype(dtname); if (result) return result; } } } else if (plpgsql_token_is_unreserved_keyword(tok)) { char *dtname = pstrdup(yylval.keyword); tok = yylex(); if (tok == '%') { tok = yylex(); if (tok_is_keyword(tok, &yylval, K_TYPE, "type")) { result = plpgsql_parse_wordtype(dtname); if (result) return result; } else if (tok_is_keyword(tok, &yylval, K_ROWTYPE, "rowtype")) { result = plpgsql_parse_wordrowtype(dtname); if (result) return result; } } } else if (tok == T_CWORD) { List *dtnames = yylval.cword.idents; tok = yylex(); if (tok == '%') { tok = yylex(); if (tok_is_keyword(tok, &yylval, K_TYPE, "type")) { result = plpgsql_parse_cwordtype(dtnames); if (result) return result; } else if (tok_is_keyword(tok, &yylval, K_ROWTYPE, "rowtype")) { result = plpgsql_parse_cwordrowtype(dtnames); if (result) return result; } } } while (tok != ';') { if (tok == 0) { if (parenlevel != 0) yyerror("mismatched parentheses"); else yyerror("incomplete data type declaration"); } /* Possible followers for datatype in a declaration */ if (tok == K_COLLATE || tok == K_NOT || tok == '=' || tok == COLON_EQUALS || tok == K_DEFAULT) break; /* Possible followers for datatype in a cursor_arg list */ if ((tok == ',' || tok == ')') && parenlevel == 0) break; if (tok == '(') parenlevel++; else if (tok == ')') parenlevel--; tok = yylex(); } /* set up ds to contain complete typename text */ initStringInfo(&ds); plpgsql_append_source_text(&ds, startlocation, yylloc); type_name = ds.data; if (type_name[0] == '\0') yyerror("missing data type declaration"); result = parse_datatype(type_name, startlocation); pfree(ds.data); plpgsql_push_back_token(tok); return result; } static PLpgSQL_stmt * make_execsql_stmt(int firsttoken, int location) { StringInfoData ds; IdentifierLookup save_IdentifierLookup; PLpgSQL_stmt_execsql *execsql; PLpgSQL_expr *expr; PLpgSQL_variable *target = NULL; int tok; int prev_tok; bool have_into = false; bool have_strict = false; int into_start_loc = -1; int into_end_loc = -1; initStringInfo(&ds); /* special lookup mode for identifiers within the SQL text */ save_IdentifierLookup = plpgsql_IdentifierLookup; plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_EXPR; /* * Scan to the end of the SQL command. Identify any INTO-variables * clause lurking within it, and parse that via read_into_target(). * * Because INTO is sometimes used in the main SQL grammar, we have to be * careful not to take any such usage of INTO as a PL/pgSQL INTO clause. * There are currently three such cases: * * 1. SELECT ... INTO. We don't care, we just override that with the * PL/pgSQL definition. * * 2. INSERT INTO. This is relatively easy to recognize since the words * must appear adjacently; but we can't assume INSERT starts the command, * because it can appear in CREATE RULE or WITH. Unfortunately, INSERT is * *not* fully reserved, so that means there is a chance of a false match; * but it's not very likely. * * 3. IMPORT FOREIGN SCHEMA ... INTO. This is not allowed in CREATE RULE * or WITH, so we just check for IMPORT as the command's first token. * (If IMPORT FOREIGN SCHEMA returned data someone might wish to capture * with an INTO-variables clause, we'd have to work much harder here.) * * Fortunately, INTO is a fully reserved word in the main grammar, so * at least we need not worry about it appearing as an identifier. * * Any future additional uses of INTO in the main grammar will doubtless * break this logic again ... beware! */ tok = firsttoken; for (;;) { prev_tok = tok; tok = yylex(); if (have_into && into_end_loc < 0) into_end_loc = yylloc; /* token after the INTO part */ if (tok == ';') break; if (tok == 0) yyerror("unexpected end of function definition"); if (tok == K_INTO) { if (prev_tok == K_INSERT) continue; /* INSERT INTO is not an INTO-target */ if (firsttoken == K_IMPORT) continue; /* IMPORT ... INTO is not an INTO-target */ if (have_into) yyerror("INTO specified more than once"); have_into = true; into_start_loc = yylloc; plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; read_into_target(&target, &have_strict); plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_EXPR; } } plpgsql_IdentifierLookup = save_IdentifierLookup; if (have_into) { /* * Insert an appropriate number of spaces corresponding to the * INTO text, so that locations within the redacted SQL statement * still line up with those in the original source text. */ plpgsql_append_source_text(&ds, location, into_start_loc); appendStringInfoSpaces(&ds, into_end_loc - into_start_loc); plpgsql_append_source_text(&ds, into_end_loc, yylloc); } else plpgsql_append_source_text(&ds, location, yylloc); /* trim any trailing whitespace, for neatness */ while (ds.len > 0 && scanner_isspace(ds.data[ds.len - 1])) ds.data[--ds.len] = '\0'; expr = palloc0(sizeof(PLpgSQL_expr)); expr->query = pstrdup(ds.data); expr->plan = NULL; expr->paramnos = NULL; expr->rwparam = -1; expr->ns = plpgsql_ns_top(); pfree(ds.data); check_sql_expr(expr->query, location, 0); execsql = palloc(sizeof(PLpgSQL_stmt_execsql)); execsql->cmd_type = PLPGSQL_STMT_EXECSQL; execsql->lineno = plpgsql_location_to_lineno(location); execsql->stmtid = ++plpgsql_curr_compile->nstatements; execsql->sqlstmt = expr; execsql->into = have_into; execsql->strict = have_strict; execsql->target = target; return (PLpgSQL_stmt *) execsql; } /* * Read FETCH or MOVE direction clause (everything through FROM/IN). */ static PLpgSQL_stmt_fetch * read_fetch_direction(void) { PLpgSQL_stmt_fetch *fetch; int tok; bool check_FROM = true; /* * We create the PLpgSQL_stmt_fetch struct here, but only fill in * the fields arising from the optional direction clause */ fetch = (PLpgSQL_stmt_fetch *) palloc0(sizeof(PLpgSQL_stmt_fetch)); fetch->cmd_type = PLPGSQL_STMT_FETCH; fetch->stmtid = ++plpgsql_curr_compile->nstatements; /* set direction defaults: */ fetch->direction = FETCH_FORWARD; fetch->how_many = 1; fetch->expr = NULL; fetch->returns_multiple_rows = false; tok = yylex(); if (tok == 0) yyerror("unexpected end of function definition"); if (tok_is_keyword(tok, &yylval, K_NEXT, "next")) { /* use defaults */ } else if (tok_is_keyword(tok, &yylval, K_PRIOR, "prior")) { fetch->direction = FETCH_BACKWARD; } else if (tok_is_keyword(tok, &yylval, K_FIRST, "first")) { fetch->direction = FETCH_ABSOLUTE; } else if (tok_is_keyword(tok, &yylval, K_LAST, "last")) { fetch->direction = FETCH_ABSOLUTE; fetch->how_many = -1; } else if (tok_is_keyword(tok, &yylval, K_ABSOLUTE, "absolute")) { fetch->direction = FETCH_ABSOLUTE; fetch->expr = read_sql_expression2(K_FROM, K_IN, "FROM or IN", NULL); check_FROM = false; } else if (tok_is_keyword(tok, &yylval, K_RELATIVE, "relative")) { fetch->direction = FETCH_RELATIVE; fetch->expr = read_sql_expression2(K_FROM, K_IN, "FROM or IN", NULL); check_FROM = false; } else if (tok_is_keyword(tok, &yylval, K_ALL, "all")) { fetch->how_many = FETCH_ALL; fetch->returns_multiple_rows = true; } else if (tok_is_keyword(tok, &yylval, K_FORWARD, "forward")) { complete_direction(fetch, &check_FROM); } else if (tok_is_keyword(tok, &yylval, K_BACKWARD, "backward")) { fetch->direction = FETCH_BACKWARD; complete_direction(fetch, &check_FROM); } else if (tok == K_FROM || tok == K_IN) { /* empty direction */ check_FROM = false; } else if (tok == T_DATUM) { /* Assume there's no direction clause and tok is a cursor name */ plpgsql_push_back_token(tok); check_FROM = false; } else { /* * Assume it's a count expression with no preceding keyword. * Note: we allow this syntax because core SQL does, but we don't * document it because of the ambiguity with the omitted-direction * case. For instance, "MOVE n IN c" will fail if n is a variable. * Perhaps this can be improved someday, but it's hardly worth a * lot of work. */ plpgsql_push_back_token(tok); fetch->expr = read_sql_expression2(K_FROM, K_IN, "FROM or IN", NULL); fetch->returns_multiple_rows = true; check_FROM = false; } /* check FROM or IN keyword after direction's specification */ if (check_FROM) { tok = yylex(); if (tok != K_FROM && tok != K_IN) yyerror("expected FROM or IN"); } return fetch; } /* * Process remainder of FETCH/MOVE direction after FORWARD or BACKWARD. * Allows these cases: * FORWARD expr, FORWARD ALL, FORWARD * BACKWARD expr, BACKWARD ALL, BACKWARD */ static void complete_direction(PLpgSQL_stmt_fetch *fetch, bool *check_FROM) { int tok; tok = yylex(); if (tok == 0) yyerror("unexpected end of function definition"); if (tok == K_FROM || tok == K_IN) { *check_FROM = false; return; } if (tok == K_ALL) { fetch->how_many = FETCH_ALL; fetch->returns_multiple_rows = true; *check_FROM = true; return; } plpgsql_push_back_token(tok); fetch->expr = read_sql_expression2(K_FROM, K_IN, "FROM or IN", NULL); fetch->returns_multiple_rows = true; *check_FROM = false; } static PLpgSQL_stmt * make_return_stmt(int location) { PLpgSQL_stmt_return *new; Assert(plpgsql_curr_compile->fn_rettype == VOIDOID); new = palloc0(sizeof(PLpgSQL_stmt_return)); new->cmd_type = PLPGSQL_STMT_RETURN; new->lineno = plpgsql_location_to_lineno(location); new->expr = NULL; new->retvarno = -1; int tok = yylex(); if (tok != ';') { plpgsql_push_back_token(tok); new->expr = read_sql_expression(';', ";"); } return (PLpgSQL_stmt *) new; } static PLpgSQL_stmt * make_return_next_stmt(int location) { PLpgSQL_stmt_return_next *new; if (!plpgsql_curr_compile->fn_retset) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("cannot use RETURN NEXT in a non-SETOF function"), parser_errposition(location))); new = palloc0(sizeof(PLpgSQL_stmt_return_next)); new->cmd_type = PLPGSQL_STMT_RETURN_NEXT; new->lineno = plpgsql_location_to_lineno(location); new->stmtid = ++plpgsql_curr_compile->nstatements; new->expr = NULL; new->retvarno = -1; if (plpgsql_curr_compile->out_param_varno >= 0) { if (yylex() != ';') ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("RETURN NEXT cannot have a parameter in function with OUT parameters"), parser_errposition(yylloc))); new->retvarno = plpgsql_curr_compile->out_param_varno; } else { /* * We want to special-case simple variable references for efficiency. * So peek ahead to see if that's what we have. */ int tok = yylex(); if (tok == T_DATUM && plpgsql_peek() == ';' && (yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_VAR || yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_PROMISE || yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_ROW || yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_REC)) { new->retvarno = yylval.wdatum.datum->dno; /* eat the semicolon token that we only peeked at above */ tok = yylex(); Assert(tok == ';'); } else { /* * Not (just) a variable name, so treat as expression. * * Note that a well-formed expression is _required_ here; * anything else is a compile-time error. */ plpgsql_push_back_token(tok); new->expr = read_sql_expression(';', ";"); } } return (PLpgSQL_stmt *) new; } static PLpgSQL_stmt * make_return_query_stmt(int location) { PLpgSQL_stmt_return_query *new; int tok; if (!plpgsql_curr_compile->fn_retset) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("cannot use RETURN QUERY in a non-SETOF function"), parser_errposition(location))); new = palloc0(sizeof(PLpgSQL_stmt_return_query)); new->cmd_type = PLPGSQL_STMT_RETURN_QUERY; new->lineno = plpgsql_location_to_lineno(location); new->stmtid = ++plpgsql_curr_compile->nstatements; /* check for RETURN QUERY EXECUTE */ if ((tok = yylex()) != K_EXECUTE) { /* ordinary static query */ plpgsql_push_back_token(tok); new->query = read_sql_stmt(""); } else { /* dynamic SQL */ int term; new->dynquery = read_sql_expression2(';', K_USING, "; or USING", &term); if (term == K_USING) { do { PLpgSQL_expr *expr; expr = read_sql_expression2(',', ';', ", or ;", &term); new->params = lappend(new->params, expr); } while (term == ','); } } return (PLpgSQL_stmt *) new; } /* convenience routine to fetch the name of a T_DATUM */ static char * NameOfDatum(PLwdatum *wdatum) { if (wdatum->ident) return wdatum->ident; Assert(wdatum->idents != NIL); return NameListToString(wdatum->idents); } static void check_assignable(PLpgSQL_datum *datum, int location) { switch (datum->dtype) { case PLPGSQL_DTYPE_VAR: case PLPGSQL_DTYPE_PROMISE: case PLPGSQL_DTYPE_REC: if (((PLpgSQL_variable *) datum)->isconst) ereport(ERROR, (errcode(ERRCODE_ERROR_IN_ASSIGNMENT), errmsg("variable \"%s\" is declared CONSTANT", ((PLpgSQL_variable *) datum)->refname), parser_errposition(location))); break; case PLPGSQL_DTYPE_ROW: /* always assignable; member vars were checked at compile time */ break; case PLPGSQL_DTYPE_RECFIELD: /* assignable if parent record is */ check_assignable(plpgsql_Datums[((PLpgSQL_recfield *) datum)->recparentno], location); break; case PLPGSQL_DTYPE_ARRAYELEM: /* assignable if parent array is */ check_assignable(plpgsql_Datums[((PLpgSQL_arrayelem *) datum)->arrayparentno], location); break; default: elog(ERROR, "unrecognized dtype: %d", datum->dtype); break; } } /* * Read the argument of an INTO clause. On entry, we have just read the * INTO keyword. */ static void read_into_target(PLpgSQL_variable **target, bool *strict) { int tok; /* Set default results */ *target = NULL; if (strict) *strict = false; tok = yylex(); if (strict && tok == K_STRICT) { *strict = true; tok = yylex(); } /* * Currently, a row or record variable can be the single INTO target, * but not a member of a multi-target list. So we throw error if there * is a comma after it, because that probably means the user tried to * write a multi-target list. If this ever gets generalized, we should * probably refactor read_into_scalar_list so it handles all cases. */ switch (tok) { case T_DATUM: if (yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_ROW || yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_REC) { check_assignable(yylval.wdatum.datum, yylloc); *target = (PLpgSQL_variable *) yylval.wdatum.datum; if ((tok = yylex()) == ',') ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("record variable cannot be part of multiple-item INTO list"), parser_errposition(yylloc))); plpgsql_push_back_token(tok); } else { *target = (PLpgSQL_variable *) read_into_scalar_list(NameOfDatum(&(yylval.wdatum)), yylval.wdatum.datum, yylloc); } break; default: /* just to give a better message than "syntax error" */ current_token_is_not_variable(tok); } } /* * Given the first datum and name in the INTO list, continue to read * comma-separated scalar variables until we run out. Then construct * and return a fake "row" variable that represents the list of * scalars. */ static PLpgSQL_row * read_into_scalar_list(char *initial_name, PLpgSQL_datum *initial_datum, int initial_location) { int nfields; char *fieldnames[1024]; int varnos[1024]; PLpgSQL_row *row; int tok; check_assignable(initial_datum, initial_location); fieldnames[0] = initial_name; varnos[0] = initial_datum->dno; nfields = 1; while ((tok = yylex()) == ',') { /* Check for array overflow */ if (nfields >= 1024) ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("too many INTO variables specified"), parser_errposition(yylloc))); tok = yylex(); switch (tok) { case T_DATUM: check_assignable(yylval.wdatum.datum, yylloc); if (yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_ROW || yylval.wdatum.datum->dtype == PLPGSQL_DTYPE_REC) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("\"%s\" is not a scalar variable", NameOfDatum(&(yylval.wdatum))), parser_errposition(yylloc))); fieldnames[nfields] = NameOfDatum(&(yylval.wdatum)); varnos[nfields++] = yylval.wdatum.datum->dno; break; default: /* just to give a better message than "syntax error" */ current_token_is_not_variable(tok); } } /* * We read an extra, non-comma token from yylex(), so push it * back onto the input stream */ plpgsql_push_back_token(tok); row = palloc0(sizeof(PLpgSQL_row)); row->dtype = PLPGSQL_DTYPE_ROW; row->refname = "(unnamed row)"; row->lineno = plpgsql_location_to_lineno(initial_location); row->rowtupdesc = NULL; row->nfields = nfields; row->fieldnames = palloc(sizeof(char *) * nfields); row->varnos = palloc(sizeof(int) * nfields); while (--nfields >= 0) { row->fieldnames[nfields] = fieldnames[nfields]; row->varnos[nfields] = varnos[nfields]; } plpgsql_adddatum((PLpgSQL_datum *)row); return row; } /* * Convert a single scalar into a "row" list. This is exactly * like read_into_scalar_list except we never consume any input. * * Note: lineno could be computed from location, but since callers * have it at hand already, we may as well pass it in. */ static PLpgSQL_row * make_scalar_list1(char *initial_name, PLpgSQL_datum *initial_datum, int lineno, int location) { PLpgSQL_row *row; check_assignable(initial_datum, location); row = palloc0(sizeof(PLpgSQL_row)); row->dtype = PLPGSQL_DTYPE_ROW; row->refname = "(unnamed row)"; row->lineno = lineno; row->rowtupdesc = NULL; row->nfields = 1; row->fieldnames = palloc(sizeof(char *)); row->varnos = palloc(sizeof(int)); row->fieldnames[0] = initial_name; row->varnos[0] = initial_datum->dno; plpgsql_adddatum((PLpgSQL_datum *)row); return row; } /* * When the PL/pgSQL parser expects to see a SQL statement, it is very * liberal in what it accepts; for example, we often assume an * unrecognized keyword is the beginning of a SQL statement. This * avoids the need to duplicate parts of the SQL grammar in the * PL/pgSQL grammar, but it means we can accept wildly malformed * input. To try and catch some of the more obviously invalid input, * we run the strings we expect to be SQL statements through the main * SQL parser. * * We only invoke the raw parser (not the analyzer); this doesn't do * any database access and does not check any semantic rules, it just * checks for basic syntactic correctness. We do this here, rather * than after parsing has finished, because a malformed SQL statement * may cause the PL/pgSQL parser to become confused about statement * borders. So it is best to bail out as early as we can. * * It is assumed that "stmt" represents a copy of the function source text * beginning at offset "location", with leader text of length "leaderlen" * (typically "SELECT ") prefixed to the source text. We use this assumption * to transpose any error cursor position back to the function source text. * If no error cursor is provided, we'll just point at "location". */ static void check_sql_expr(const char *stmt, int location, int leaderlen) { sql_error_callback_arg cbarg; ErrorContextCallback syntax_errcontext; MemoryContext oldCxt; if (!plpgsql_check_syntax) return; cbarg.location = location; cbarg.leaderlen = leaderlen; syntax_errcontext.callback = plpgsql_sql_error_callback; syntax_errcontext.arg = &cbarg; syntax_errcontext.previous = error_context_stack; error_context_stack = &syntax_errcontext; oldCxt = MemoryContextSwitchTo(plpgsql_compile_tmp_cxt); (void) raw_parser(stmt); MemoryContextSwitchTo(oldCxt); /* Restore former ereport callback */ error_context_stack = syntax_errcontext.previous; } static void plpgsql_sql_error_callback(void *arg) { sql_error_callback_arg *cbarg = (sql_error_callback_arg *) arg; int errpos; /* * First, set up internalerrposition to point to the start of the * statement text within the function text. Note this converts * location (a byte offset) to a character number. */ parser_errposition(cbarg->location); /* * If the core parser provided an error position, transpose it. * Note we are dealing with 1-based character numbers at this point. */ errpos = geterrposition(); if (errpos > cbarg->leaderlen) { int myerrpos = getinternalerrposition(); if (myerrpos > 0) /* safety check */ internalerrposition(myerrpos + errpos - cbarg->leaderlen - 1); } /* In any case, flush errposition --- we want internalerrposition only */ errposition(0); } /* * Parse a SQL datatype name and produce a PLpgSQL_type structure. * * The heavy lifting is done elsewhere. Here we are only concerned * with setting up an errcontext link that will let us give an error * cursor pointing into the plpgsql function source, if necessary. * This is handled the same as in check_sql_expr(), and we likewise * expect that the given string is a copy from the source text. */ static PLpgSQL_type * parse_datatype(const char *string, int location) { PLpgSQL_type *typ; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup(string); typ->ttype = strcmp(string, "RECORD") == 0 ? PLPGSQL_TTYPE_REC : PLPGSQL_TTYPE_SCALAR; return typ; } /* * Check block starting and ending labels match. */ static void check_labels(const char *start_label, const char *end_label, int end_location) { if (end_label) { if (!start_label) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("end label \"%s\" specified for unlabeled block", end_label), parser_errposition(end_location))); if (strcmp(start_label, end_label) != 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("end label \"%s\" differs from block's label \"%s\"", end_label, start_label), parser_errposition(end_location))); } } /* * Read the arguments (if any) for a cursor, followed by the until token * * If cursor has no args, just swallow the until token and return NULL. * If it does have args, we expect to see "( arg [, arg ...] )" followed * by the until token, where arg may be a plain expression, or a named * parameter assignment of the form argname := expr. Consume all that and * return a SELECT query that evaluates the expression(s) (without the outer * parens). */ static PLpgSQL_expr * read_cursor_args(PLpgSQL_var *cursor, int until, const char *expected) { PLpgSQL_expr *expr; PLpgSQL_row *row; int tok; int argc; char **argv; StringInfoData ds; char *sqlstart = "SELECT "; bool any_named = false; tok = yylex(); if (cursor->cursor_explicit_argrow < 0) { /* No arguments expected */ if (tok == '(') ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cursor \"%s\" has no arguments", cursor->refname), parser_errposition(yylloc))); if (tok != until) yyerror("syntax error"); return NULL; } /* Else better provide arguments */ if (tok != '(') ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cursor \"%s\" has arguments", cursor->refname), parser_errposition(yylloc))); /* * Read the arguments, one by one. */ row = (PLpgSQL_row *) plpgsql_Datums[cursor->cursor_explicit_argrow]; argv = (char **) palloc0(row->nfields * sizeof(char *)); for (argc = 0; argc < row->nfields; argc++) { PLpgSQL_expr *item; int endtoken; int argpos; int tok1, tok2; int arglocation; /* Check if it's a named parameter: "param := value" */ plpgsql_peek2(&tok1, &tok2, &arglocation, NULL); if (tok1 == IDENT && tok2 == COLON_EQUALS) { char *argname; IdentifierLookup save_IdentifierLookup; /* Read the argument name, ignoring any matching variable */ save_IdentifierLookup = plpgsql_IdentifierLookup; plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_DECLARE; yylex(); argname = yylval.str; plpgsql_IdentifierLookup = save_IdentifierLookup; /* Match argument name to cursor arguments */ for (argpos = 0; argpos < row->nfields; argpos++) { if (strcmp(row->fieldnames[argpos], argname) == 0) break; } if (argpos == row->nfields) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cursor \"%s\" has no argument named \"%s\"", cursor->refname, argname), parser_errposition(yylloc))); /* * Eat the ":=". We already peeked, so the error should never * happen. */ tok2 = yylex(); if (tok2 != COLON_EQUALS) yyerror("syntax error"); any_named = true; } else argpos = argc; if (argv[argpos] != NULL) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("value for parameter \"%s\" of cursor \"%s\" specified more than once", row->fieldnames[argpos], cursor->refname), parser_errposition(arglocation))); /* * Read the value expression. To provide the user with meaningful * parse error positions, we check the syntax immediately, instead of * checking the final expression that may have the arguments * reordered. Trailing whitespace must not be trimmed, because * otherwise input of the form (param -- comment\n, param) would be * translated into a form where the second parameter is commented * out. */ item = read_sql_construct(',', ')', 0, ",\" or \")", sqlstart, true, true, false, /* do not trim */ NULL, &endtoken); argv[argpos] = item->query + strlen(sqlstart); if (endtoken == ')' && !(argc == row->nfields - 1)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("not enough arguments for cursor \"%s\"", cursor->refname), parser_errposition(yylloc))); if (endtoken == ',' && (argc == row->nfields - 1)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("too many arguments for cursor \"%s\"", cursor->refname), parser_errposition(yylloc))); } /* Make positional argument list */ initStringInfo(&ds); appendStringInfoString(&ds, sqlstart); for (argc = 0; argc < row->nfields; argc++) { Assert(argv[argc] != NULL); /* * Because named notation allows permutated argument lists, include * the parameter name for meaningful runtime errors. */ appendStringInfoString(&ds, argv[argc]); if (any_named) appendStringInfo(&ds, " AS %s", quote_identifier(row->fieldnames[argc])); if (argc < row->nfields - 1) appendStringInfoString(&ds, ", "); } appendStringInfoChar(&ds, ';'); expr = palloc0(sizeof(PLpgSQL_expr)); expr->query = pstrdup(ds.data); expr->plan = NULL; expr->paramnos = NULL; expr->rwparam = -1; expr->ns = plpgsql_ns_top(); pfree(ds.data); /* Next we'd better find the until token */ tok = yylex(); if (tok != until) yyerror("syntax error"); return expr; } /* * Parse RAISE ... USING options */ static List * read_raise_options(void) { List *result = NIL; for (;;) { PLpgSQL_raise_option *opt; int tok; if ((tok = yylex()) == 0) yyerror("unexpected end of function definition"); opt = (PLpgSQL_raise_option *) palloc(sizeof(PLpgSQL_raise_option)); if (tok_is_keyword(tok, &yylval, K_ERRCODE, "errcode")) opt->opt_type = PLPGSQL_RAISEOPTION_ERRCODE; else if (tok_is_keyword(tok, &yylval, K_MESSAGE, "message")) opt->opt_type = PLPGSQL_RAISEOPTION_MESSAGE; else if (tok_is_keyword(tok, &yylval, K_DETAIL, "detail")) opt->opt_type = PLPGSQL_RAISEOPTION_DETAIL; else if (tok_is_keyword(tok, &yylval, K_HINT, "hint")) opt->opt_type = PLPGSQL_RAISEOPTION_HINT; else if (tok_is_keyword(tok, &yylval, K_COLUMN, "column")) opt->opt_type = PLPGSQL_RAISEOPTION_COLUMN; else if (tok_is_keyword(tok, &yylval, K_CONSTRAINT, "constraint")) opt->opt_type = PLPGSQL_RAISEOPTION_CONSTRAINT; else if (tok_is_keyword(tok, &yylval, K_DATATYPE, "datatype")) opt->opt_type = PLPGSQL_RAISEOPTION_DATATYPE; else if (tok_is_keyword(tok, &yylval, K_TABLE, "table")) opt->opt_type = PLPGSQL_RAISEOPTION_TABLE; else if (tok_is_keyword(tok, &yylval, K_SCHEMA, "schema")) opt->opt_type = PLPGSQL_RAISEOPTION_SCHEMA; else yyerror("unrecognized RAISE statement option"); tok = yylex(); if (tok != '=' && tok != COLON_EQUALS) yyerror("syntax error, expected \"=\""); opt->expr = read_sql_expression2(',', ';', ", or ;", &tok); result = lappend(result, opt); if (tok == ';') break; } return result; } /* * Check that the number of parameter placeholders in the message matches the * number of parameters passed to it, if a message was given. */ static void check_raise_parameters(PLpgSQL_stmt_raise *stmt) { char *cp; int expected_nparams = 0; if (stmt->message == NULL) return; for (cp = stmt->message; *cp; cp++) { if (cp[0] == '%') { /* ignore literal % characters */ if (cp[1] == '%') cp++; else expected_nparams++; } } if (expected_nparams < list_length(stmt->params)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("too many parameters specified for RAISE"))); if (expected_nparams > list_length(stmt->params)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("too few parameters specified for RAISE"))); } /* * Fix up CASE statement */ static PLpgSQL_stmt * make_case(int location, PLpgSQL_expr *t_expr, List *case_when_list, List *else_stmts) { PLpgSQL_stmt_case *new; new = palloc(sizeof(PLpgSQL_stmt_case)); new->cmd_type = PLPGSQL_STMT_CASE; new->lineno = plpgsql_location_to_lineno(location); new->stmtid = ++plpgsql_curr_compile->nstatements; new->t_expr = t_expr; new->t_varno = 0; new->case_when_list = case_when_list; new->have_else = (else_stmts != NIL); /* Get rid of list-with-NULL hack */ if (list_length(else_stmts) == 1 && linitial(else_stmts) == NULL) new->else_stmts = NIL; else new->else_stmts = else_stmts; /* * When test expression is present, we create a var for it and then * convert all the WHEN expressions to "VAR IN (original_expression)". * This is a bit klugy, but okay since we haven't yet done more than * read the expressions as text. (Note that previous parsing won't * have complained if the WHEN ... THEN expression contained multiple * comma-separated values.) */ if (t_expr) { char varname[32]; PLpgSQL_var *t_var; ListCell *l; /* use a name unlikely to collide with any user names */ snprintf(varname, sizeof(varname), "__Case__Variable_%d__", plpgsql_nDatums); /* * We don't yet know the result datatype of t_expr. Build the * variable as if it were INT4; we'll fix this at runtime if needed. */ t_var = (PLpgSQL_var *) plpgsql_build_variable(varname, new->lineno, plpgsql_build_datatype(INT4OID, -1, InvalidOid, NULL), true); new->t_varno = t_var->dno; foreach(l, case_when_list) { PLpgSQL_case_when *cwt = (PLpgSQL_case_when *) lfirst(l); PLpgSQL_expr *expr = cwt->expr; StringInfoData ds; /* copy expression query without SELECT keyword (expr->query + 7) */ Assert(strncmp(expr->query, "SELECT ", 7) == 0); /* And do the string hacking */ initStringInfo(&ds); appendStringInfo(&ds, "SELECT \"%s\" IN (%s)", varname, expr->query + 7); pfree(expr->query); expr->query = pstrdup(ds.data); /* Adjust expr's namespace to include the case variable */ expr->ns = plpgsql_ns_top(); pfree(ds.data); } } return (PLpgSQL_stmt *) new; } libpg_query-13-2.1.0/src/postgres/src_pl_plpgsql_src_pl_handler.c000066400000000000000000000037421413137616400251550ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - plpgsql_variable_conflict * - plpgsql_print_strict_params *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pl_handler.c - Handler for the PL/pgSQL * procedural language * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/pl/plpgsql/src/pl_handler.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "access/htup_details.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "funcapi.h" #include "miscadmin.h" #include "plpgsql.h" #include "utils/builtins.h" #include "utils/guc.h" #include "utils/lsyscache.h" #include "utils/syscache.h" #include "utils/varlena.h" static bool plpgsql_extra_checks_check_hook(char **newvalue, void **extra, GucSource source); static void plpgsql_extra_warnings_assign_hook(const char *newvalue, void *extra); static void plpgsql_extra_errors_assign_hook(const char *newvalue, void *extra); ; /* Custom GUC variable */ __thread int plpgsql_variable_conflict = PLPGSQL_RESOLVE_ERROR; __thread bool plpgsql_print_strict_params = false; /* Hook for plugins */ /* * _PG_init() - library load-time initialization * * DO NOT make this static nor change its name! */ /* ---------- * plpgsql_call_handler * * The PostgreSQL function manager and trigger manager * call this function for execution of PL/pgSQL procedures. * ---------- */ ; /* ---------- * plpgsql_inline_handler * * Called by PostgreSQL to execute an anonymous code block * ---------- */ ; /* ---------- * plpgsql_validator * * This function attempts to validate a PL/pgSQL function at * CREATE FUNCTION time. * ---------- */ ; libpg_query-13-2.1.0/src/postgres/src_pl_plpgsql_src_pl_reserved_kwlist_d.h000066400000000000000000000046241413137616400272640ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - ReservedPLKeywords * - ReservedPLKeywords_kw_string * - ReservedPLKeywords_kw_offsets * - ReservedPLKeywords_hash_func *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pl_reserved_kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/tools/gen_keywordlist.pl * *------------------------------------------------------------------------- */ #ifndef PL_RESERVED_KWLIST_D_H #define PL_RESERVED_KWLIST_D_H #include "common/kwlookup.h" static const char ReservedPLKeywords_kw_string[] = "all\0" "begin\0" "by\0" "case\0" "declare\0" "else\0" "end\0" "execute\0" "for\0" "foreach\0" "from\0" "if\0" "in\0" "into\0" "loop\0" "not\0" "null\0" "or\0" "strict\0" "then\0" "to\0" "using\0" "when\0" "while"; static const uint16 ReservedPLKeywords_kw_offsets[] = { 0, 4, 10, 13, 18, 26, 31, 35, 43, 47, 55, 60, 63, 66, 71, 76, 80, 85, 88, 95, 100, 103, 109, 114, }; #define RESERVEDPLKEYWORDS_NUM_KEYWORDS 24 static int ReservedPLKeywords_hash_func(const void *key, size_t keylen) { static const int8 h[49] = { -2, 127, 7, 127, 0, 127, 127, 127, 18, 5, 127, 27, 127, 0, 127, 127, 0, 39, 32, 22, 10, 127, 19, -26, 127, -11, 0, 12, 127, 127, -1, 28, 20, 0, 23, 127, 0, 14, -8, 127, 127, 127, 13, 5, 127, -23, 1, 0, 127, }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 1; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 31 + c; b = b * 127 + c; } return h[a % 49] + h[b % 49]; } static const ScanKeywordList ReservedPLKeywords = { ReservedPLKeywords_kw_string, ReservedPLKeywords_kw_offsets, ReservedPLKeywords_hash_func, RESERVEDPLKEYWORDS_NUM_KEYWORDS, 7 }; #endif /* PL_RESERVED_KWLIST_D_H */ libpg_query-13-2.1.0/src/postgres/src_pl_plpgsql_src_pl_scanner.c000066400000000000000000000442641413137616400251750ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - plpgsql_scanner_init * - plpgsql_IdentifierLookup * - yyscanner * - core_yy * - ReservedPLKeywordTokens * - scanorig * - plpgsql_yytoken * - num_pushbacks * - location_lineno_init * - cur_line_start * - cur_line_num * - cur_line_end * - plpgsql_yylex * - internal_yylex * - pushback_token * - pushback_auxdata * - push_back_token * - UnreservedPLKeywordTokens * - plpgsql_yyleng * - plpgsql_location_to_lineno * - plpgsql_scanner_errposition * - plpgsql_yyerror * - plpgsql_push_back_token * - plpgsql_token_is_unreserved_keyword * - plpgsql_peek * - plpgsql_append_source_text * - plpgsql_peek2 * - plpgsql_scanner_finish * - plpgsql_latest_lineno *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pl_scanner.c * lexical scanning for PL/pgSQL * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/pl/plpgsql/src/pl_scanner.c * *------------------------------------------------------------------------- */ #include "postgres.h" #include "mb/pg_wchar.h" #include "parser/scanner.h" #include "plpgsql.h" #include "pl_gram.h" /* must be after parser/scanner.h */ /* Klugy flag to tell scanner how to look up identifiers */ __thread IdentifierLookup plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; /* * A word about keywords: * * We keep reserved and unreserved keywords in separate headers. Be careful * not to put the same word in both headers. Also be sure that pl_gram.y's * unreserved_keyword production agrees with the unreserved header. The * reserved keywords are passed to the core scanner, so they will be * recognized before (and instead of) any variable name. Unreserved words * are checked for separately, usually after determining that the identifier * isn't a known variable name. If plpgsql_IdentifierLookup is DECLARE then * no variable names will be recognized, so the unreserved words always work. * (Note in particular that this helps us avoid reserving keywords that are * only needed in DECLARE sections.) * * In certain contexts it is desirable to prefer recognizing an unreserved * keyword over recognizing a variable name. In particular, at the start * of a statement we should prefer unreserved keywords unless the statement * looks like an assignment (i.e., first token is followed by ':=' or '['). * This rule allows most statement-introducing keywords to be kept unreserved. * (We still have to reserve initial keywords that might follow a block * label, unfortunately, since the method used to determine if we are at * start of statement doesn't recognize such cases. We'd also have to * reserve any keyword that could legitimately be followed by ':=' or '['.) * Some additional cases are handled in pl_gram.y using tok_is_keyword(). * * We try to avoid reserving more keywords than we have to; but there's * little point in not reserving a word if it's reserved in the core grammar. * Currently, the following words are reserved here but not in the core: * BEGIN BY DECLARE EXECUTE FOREACH IF LOOP STRICT WHILE */ /* ScanKeywordList lookup data for PL/pgSQL keywords */ #include "pl_reserved_kwlist_d.h" #include "pl_unreserved_kwlist_d.h" /* Token codes for PL/pgSQL keywords */ #define PG_KEYWORD(kwname, value) value, static const uint16 ReservedPLKeywordTokens[] = { #include "pl_reserved_kwlist.h" }; static const uint16 UnreservedPLKeywordTokens[] = { #include "pl_unreserved_kwlist.h" }; #undef PG_KEYWORD /* * This macro must recognize all tokens that can immediately precede a * PL/pgSQL executable statement (that is, proc_sect or proc_stmt in the * grammar). Fortunately, there are not very many, so hard-coding in this * fashion seems sufficient. */ #define AT_STMT_START(prev_token) \ ((prev_token) == ';' || \ (prev_token) == K_BEGIN || \ (prev_token) == K_THEN || \ (prev_token) == K_ELSE || \ (prev_token) == K_LOOP) /* Auxiliary data about a token (other than the token type) */ typedef struct { YYSTYPE lval; /* semantic information */ YYLTYPE lloc; /* offset in scanbuf */ int leng; /* length in bytes */ } TokenAuxData; /* * Scanner working state. At some point we might wish to fold all this * into a YY_EXTRA struct. For the moment, there is no need for plpgsql's * lexer to be re-entrant, and the notational burden of passing a yyscanner * pointer around is great enough to not want to do it without need. */ /* The stuff the core lexer needs */ static __thread core_yyscan_t yyscanner = NULL; static __thread core_yy_extra_type core_yy; /* The original input string */ static __thread const char *scanorig; /* Current token's length (corresponds to plpgsql_yylval and plpgsql_yylloc) */ static __thread int plpgsql_yyleng; /* Current token's code (corresponds to plpgsql_yylval and plpgsql_yylloc) */ static __thread int plpgsql_yytoken; /* Token pushback stack */ #define MAX_PUSHBACKS 4 static __thread int num_pushbacks; static __thread int pushback_token[MAX_PUSHBACKS]; static __thread TokenAuxData pushback_auxdata[MAX_PUSHBACKS]; /* State for plpgsql_location_to_lineno() */ static __thread const char *cur_line_start; static __thread const char *cur_line_end; static __thread int cur_line_num; /* Internal functions */ static int internal_yylex(TokenAuxData *auxdata); static void push_back_token(int token, TokenAuxData *auxdata); static void location_lineno_init(void); /* * This is the yylex routine called from the PL/pgSQL grammar. * It is a wrapper around the core lexer, with the ability to recognize * PL/pgSQL variables and return them as special T_DATUM tokens. If a * word or compound word does not match any variable name, or if matching * is turned off by plpgsql_IdentifierLookup, it is returned as * T_WORD or T_CWORD respectively, or as an unreserved keyword if it * matches one of those. */ int plpgsql_yylex(void) { int tok1; TokenAuxData aux1; int kwnum; tok1 = internal_yylex(&aux1); if (tok1 == IDENT || tok1 == PARAM) { int tok2; TokenAuxData aux2; tok2 = internal_yylex(&aux2); if (tok2 == '.') { int tok3; TokenAuxData aux3; tok3 = internal_yylex(&aux3); if (tok3 == IDENT) { int tok4; TokenAuxData aux4; tok4 = internal_yylex(&aux4); if (tok4 == '.') { int tok5; TokenAuxData aux5; tok5 = internal_yylex(&aux5); if (tok5 == IDENT) { if (plpgsql_parse_tripword(aux1.lval.str, aux3.lval.str, aux5.lval.str, &aux1.lval.wdatum, &aux1.lval.cword)) tok1 = T_DATUM; else tok1 = T_CWORD; } else { /* not A.B.C, so just process A.B */ push_back_token(tok5, &aux5); push_back_token(tok4, &aux4); if (plpgsql_parse_dblword(aux1.lval.str, aux3.lval.str, &aux1.lval.wdatum, &aux1.lval.cword)) tok1 = T_DATUM; else tok1 = T_CWORD; } } else { /* not A.B.C, so just process A.B */ push_back_token(tok4, &aux4); if (plpgsql_parse_dblword(aux1.lval.str, aux3.lval.str, &aux1.lval.wdatum, &aux1.lval.cword)) tok1 = T_DATUM; else tok1 = T_CWORD; } } else { /* not A.B, so just process A */ push_back_token(tok3, &aux3); push_back_token(tok2, &aux2); if (plpgsql_parse_word(aux1.lval.str, core_yy.scanbuf + aux1.lloc, true, &aux1.lval.wdatum, &aux1.lval.word)) tok1 = T_DATUM; else if (!aux1.lval.word.quoted && (kwnum = ScanKeywordLookup(aux1.lval.word.ident, &UnreservedPLKeywords)) >= 0) { aux1.lval.keyword = GetScanKeyword(kwnum, &UnreservedPLKeywords); tok1 = UnreservedPLKeywordTokens[kwnum]; } else tok1 = T_WORD; } } else { /* not A.B, so just process A */ push_back_token(tok2, &aux2); /* * See if it matches a variable name, except in the context where * we are at start of statement and the next token isn't * assignment or '['. In that case, it couldn't validly be a * variable name, and skipping the lookup allows variable names to * be used that would conflict with plpgsql or core keywords that * introduce statements (e.g., "comment"). Without this special * logic, every statement-introducing keyword would effectively be * reserved in PL/pgSQL, which would be unpleasant. * * If it isn't a variable name, try to match against unreserved * plpgsql keywords. If not one of those either, it's T_WORD. * * Note: we must call plpgsql_parse_word even if we don't want to * do variable lookup, because it sets up aux1.lval.word for the * non-variable cases. */ if (plpgsql_parse_word(aux1.lval.str, core_yy.scanbuf + aux1.lloc, (!AT_STMT_START(plpgsql_yytoken) || (tok2 == '=' || tok2 == COLON_EQUALS || tok2 == '[')), &aux1.lval.wdatum, &aux1.lval.word)) tok1 = T_DATUM; else if (!aux1.lval.word.quoted && (kwnum = ScanKeywordLookup(aux1.lval.word.ident, &UnreservedPLKeywords)) >= 0) { aux1.lval.keyword = GetScanKeyword(kwnum, &UnreservedPLKeywords); tok1 = UnreservedPLKeywordTokens[kwnum]; } else tok1 = T_WORD; } } else { /* * Not a potential plpgsql variable name, just return the data. * * Note that we also come through here if the grammar pushed back a * T_DATUM, T_CWORD, T_WORD, or unreserved-keyword token returned by a * previous lookup cycle; thus, pushbacks do not incur extra lookup * work, since we'll never do the above code twice for the same token. * This property also makes it safe to rely on the old value of * plpgsql_yytoken in the is-this-start-of-statement test above. */ } plpgsql_yylval = aux1.lval; plpgsql_yylloc = aux1.lloc; plpgsql_yyleng = aux1.leng; plpgsql_yytoken = tok1; return tok1; } /* * Internal yylex function. This wraps the core lexer and adds one feature: * a token pushback stack. We also make a couple of trivial single-token * translations from what the core lexer does to what we want, in particular * interfacing from the core_YYSTYPE to YYSTYPE union. */ static int internal_yylex(TokenAuxData *auxdata) { int token; const char *yytext; if (num_pushbacks > 0) { num_pushbacks--; token = pushback_token[num_pushbacks]; *auxdata = pushback_auxdata[num_pushbacks]; } else { token = core_yylex(&auxdata->lval.core_yystype, &auxdata->lloc, yyscanner); /* remember the length of yytext before it gets changed */ yytext = core_yy.scanbuf + auxdata->lloc; auxdata->leng = strlen(yytext); /* Check for << >> and #, which the core considers operators */ if (token == Op) { if (strcmp(auxdata->lval.str, "<<") == 0) token = LESS_LESS; else if (strcmp(auxdata->lval.str, ">>") == 0) token = GREATER_GREATER; else if (strcmp(auxdata->lval.str, "#") == 0) token = '#'; } /* The core returns PARAM as ival, but we treat it like IDENT */ else if (token == PARAM) { auxdata->lval.str = pstrdup(yytext); } else if (token == SQL_COMMENT || token == C_COMMENT) { token = internal_yylex(auxdata); } } return token; } /* * Push back a token to be re-read by next internal_yylex() call. */ static void push_back_token(int token, TokenAuxData *auxdata) { if (num_pushbacks >= MAX_PUSHBACKS) elog(ERROR, "too many tokens pushed back"); pushback_token[num_pushbacks] = token; pushback_auxdata[num_pushbacks] = *auxdata; num_pushbacks++; } /* * Push back a single token to be re-read by next plpgsql_yylex() call. * * NOTE: this does not cause yylval or yylloc to "back up". Also, it * is not a good idea to push back a token code other than what you read. */ void plpgsql_push_back_token(int token) { TokenAuxData auxdata; auxdata.lval = plpgsql_yylval; auxdata.lloc = plpgsql_yylloc; auxdata.leng = plpgsql_yyleng; push_back_token(token, &auxdata); } /* * Tell whether a token is an unreserved keyword. * * (If it is, its lowercased form was returned as the token value, so we * do not need to offer that data here.) */ bool plpgsql_token_is_unreserved_keyword(int token) { int i; for (i = 0; i < lengthof(UnreservedPLKeywordTokens); i++) { if (UnreservedPLKeywordTokens[i] == token) return true; } return false; } /* * Append the function text starting at startlocation and extending to * (not including) endlocation onto the existing contents of "buf". */ void plpgsql_append_source_text(StringInfo buf, int startlocation, int endlocation) { Assert(startlocation <= endlocation); appendBinaryStringInfo(buf, scanorig + startlocation, endlocation - startlocation); } /* * Peek one token ahead in the input stream. Only the token code is * made available, not any of the auxiliary info such as location. * * NB: no variable or unreserved keyword lookup is performed here, they will * be returned as IDENT. Reserved keywords are resolved as usual. */ int plpgsql_peek(void) { int tok1; TokenAuxData aux1; tok1 = internal_yylex(&aux1); push_back_token(tok1, &aux1); return tok1; } /* * Peek two tokens ahead in the input stream. The first token and its * location in the query are returned in *tok1_p and *tok1_loc, second token * and its location in *tok2_p and *tok2_loc. * * NB: no variable or unreserved keyword lookup is performed here, they will * be returned as IDENT. Reserved keywords are resolved as usual. */ void plpgsql_peek2(int *tok1_p, int *tok2_p, int *tok1_loc, int *tok2_loc) { int tok1, tok2; TokenAuxData aux1, aux2; tok1 = internal_yylex(&aux1); tok2 = internal_yylex(&aux2); *tok1_p = tok1; if (tok1_loc) *tok1_loc = aux1.lloc; *tok2_p = tok2; if (tok2_loc) *tok2_loc = aux2.lloc; push_back_token(tok2, &aux2); push_back_token(tok1, &aux1); } /* * plpgsql_scanner_errposition * Report an error cursor position, if possible. * * This is expected to be used within an ereport() call. The return value * is a dummy (always 0, in fact). * * Note that this can only be used for messages emitted during initial * parsing of a plpgsql function, since it requires the scanorig string * to still be available. */ int plpgsql_scanner_errposition(int location) { int pos; if (location < 0 || scanorig == NULL) return 0; /* no-op if location is unknown */ /* Convert byte offset to character number */ pos = pg_mbstrlen_with_len(scanorig, location) + 1; /* And pass it to the ereport mechanism */ (void) internalerrposition(pos); /* Also pass the function body string */ return internalerrquery(scanorig); } /* * plpgsql_yyerror * Report a lexer or grammar error. * * The message's cursor position refers to the current token (the one * last returned by plpgsql_yylex()). * This is OK for syntax error messages from the Bison parser, because Bison * parsers report error as soon as the first unparsable token is reached. * Beware of using yyerror for other purposes, as the cursor position might * be misleading! */ void plpgsql_yyerror(const char *message) { char *yytext = core_yy.scanbuf + plpgsql_yylloc; if (*yytext == '\0') { ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), /* translator: %s is typically the translation of "syntax error" */ errmsg("%s at end of input", _(message)), plpgsql_scanner_errposition(plpgsql_yylloc))); } else { /* * If we have done any lookahead then flex will have restored the * character after the end-of-token. Zap it again so that we report * only the single token here. This modifies scanbuf but we no longer * care about that. */ yytext[plpgsql_yyleng] = '\0'; ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), /* translator: first %s is typically the translation of "syntax error" */ errmsg("%s at or near \"%s\"", _(message), yytext), plpgsql_scanner_errposition(plpgsql_yylloc))); } } /* * Given a location (a byte offset in the function source text), * return a line number. * * We expect that this is typically called for a sequence of increasing * location values, so optimize accordingly by tracking the endpoints * of the "current" line. */ int plpgsql_location_to_lineno(int location) { const char *loc; if (location < 0 || scanorig == NULL) return 0; /* garbage in, garbage out */ loc = scanorig + location; /* be correct, but not fast, if input location goes backwards */ if (loc < cur_line_start) location_lineno_init(); while (cur_line_end != NULL && loc > cur_line_end) { cur_line_start = cur_line_end + 1; cur_line_num++; cur_line_end = strchr(cur_line_start, '\n'); } return cur_line_num; } /* initialize or reset the state for plpgsql_location_to_lineno */ static void location_lineno_init(void) { cur_line_start = scanorig; cur_line_num = 1; cur_line_end = strchr(cur_line_start, '\n'); } /* return the most recently computed lineno */ int plpgsql_latest_lineno(void) { return cur_line_num; } /* * Called before any actual parsing is done * * Note: the passed "str" must remain valid until plpgsql_scanner_finish(). * Although it is not fed directly to flex, we need the original string * to cite in error messages. */ void plpgsql_scanner_init(const char *str) { /* Start up the core scanner */ yyscanner = scanner_init(str, &core_yy, &ReservedPLKeywords, ReservedPLKeywordTokens); /* * scanorig points to the original string, which unlike the scanner's * scanbuf won't be modified on-the-fly by flex. Notice that although * yytext points into scanbuf, we rely on being able to apply locations * (offsets from string start) to scanorig as well. */ scanorig = str; /* Other setup */ plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL; plpgsql_yytoken = 0; num_pushbacks = 0; location_lineno_init(); } /* * Called after parsing is done to clean up after plpgsql_scanner_init() */ void plpgsql_scanner_finish(void) { /* release storage */ scanner_finish(yyscanner); /* avoid leaving any dangling pointers */ yyscanner = NULL; scanorig = NULL; } libpg_query-13-2.1.0/src/postgres/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h000066400000000000000000000111201413137616400276140ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - UnreservedPLKeywords * - UnreservedPLKeywords_kw_string * - UnreservedPLKeywords_kw_offsets * - UnreservedPLKeywords_hash_func *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pl_unreserved_kwlist_d.h * List of keywords represented as a ScanKeywordList. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * NOTES * ****************************** * *** DO NOT EDIT THIS FILE! *** * ****************************** * * It has been GENERATED by src/tools/gen_keywordlist.pl * *------------------------------------------------------------------------- */ #ifndef PL_UNRESERVED_KWLIST_D_H #define PL_UNRESERVED_KWLIST_D_H #include "common/kwlookup.h" static const char UnreservedPLKeywords_kw_string[] = "absolute\0" "alias\0" "and\0" "array\0" "assert\0" "backward\0" "call\0" "chain\0" "close\0" "collate\0" "column\0" "column_name\0" "commit\0" "constant\0" "constraint\0" "constraint_name\0" "continue\0" "current\0" "cursor\0" "datatype\0" "debug\0" "default\0" "detail\0" "diagnostics\0" "do\0" "dump\0" "elseif\0" "elsif\0" "errcode\0" "error\0" "exception\0" "exit\0" "fetch\0" "first\0" "forward\0" "get\0" "hint\0" "import\0" "info\0" "insert\0" "is\0" "last\0" "log\0" "message\0" "message_text\0" "move\0" "next\0" "no\0" "notice\0" "open\0" "option\0" "perform\0" "pg_context\0" "pg_datatype_name\0" "pg_exception_context\0" "pg_exception_detail\0" "pg_exception_hint\0" "print_strict_params\0" "prior\0" "query\0" "raise\0" "relative\0" "reset\0" "return\0" "returned_sqlstate\0" "reverse\0" "rollback\0" "row_count\0" "rowtype\0" "schema\0" "schema_name\0" "scroll\0" "set\0" "slice\0" "sqlstate\0" "stacked\0" "table\0" "table_name\0" "type\0" "use_column\0" "use_variable\0" "variable_conflict\0" "warning"; static const uint16 UnreservedPLKeywords_kw_offsets[] = { 0, 9, 15, 19, 25, 32, 41, 46, 52, 58, 66, 73, 85, 92, 101, 112, 128, 137, 145, 152, 161, 167, 175, 182, 194, 197, 202, 209, 215, 223, 229, 239, 244, 250, 256, 264, 268, 273, 280, 285, 292, 295, 300, 304, 312, 325, 330, 335, 338, 345, 350, 357, 365, 376, 393, 414, 434, 452, 472, 478, 484, 490, 499, 505, 512, 530, 538, 547, 557, 565, 572, 584, 591, 595, 601, 610, 618, 624, 635, 640, 651, 664, 682, }; #define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 83 static int UnreservedPLKeywords_hash_func(const void *key, size_t keylen) { static const int16 h[167] = { 10, 32767, 32767, 57, 32767, 62, 21, 32767, 54, 18, 32767, 58, 59, -54, 47, 0, -22, -64, 32767, -22, 33, 44, -5, 32767, 32767, 43, 57, 102, 32767, -65, 7, 32767, 13, 32767, -28, 14, 32767, 32767, 82, 32767, 0, 0, 32767, 8, -43, 0, 19, 8, 75, -58, 32767, 32767, 0, 22, 29, 32767, -50, 6, 32767, 0, 30, 32767, 32767, 29, 0, 104, 32767, 32767, 26, 0, 32767, 32767, -9, 2, 32767, 50, 39, 38, 39, 80, 32767, 32767, 32767, 32767, -67, 89, 32767, -40, 64, 32767, 32767, 26, 10, 27, 32767, 19, 51, -13, 26, 32767, 32767, 32767, 84, 23, 0, 66, 12, -5, 32767, 32767, 0, 50, 141, 72, 45, 32767, 32767, 0, -22, 0, 32767, 32767, -34, 0, 19, -5, 32767, 32767, 32767, 0, 37, 13, 32767, 32767, 32767, 32767, -68, -4, 32767, 32767, 78, 32767, 32767, 0, 85, 32767, 32767, 32767, -93, 32767, 0, 0, 32767, 74, 5, 32767, 32767, 71, 0, 32767, 32767, 0, 32767, 32767, 32767, 46, 70, }; const unsigned char *k = (const unsigned char *) key; uint32 a = 0; uint32 b = 1; while (keylen--) { unsigned char c = *k++ | 0x20; a = a * 31 + c; b = b * 127 + c; } return h[a % 167] + h[b % 167]; } static const ScanKeywordList UnreservedPLKeywords = { UnreservedPLKeywords_kw_string, UnreservedPLKeywords_kw_offsets, UnreservedPLKeywords_hash_func, UNRESERVEDPLKEYWORDS_NUM_KEYWORDS, 20 }; #endif /* PL_UNRESERVED_KWLIST_D_H */ libpg_query-13-2.1.0/src/postgres/src_port_erand48.c000066400000000000000000000073261413137616400222540ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_lrand48 * - _dorand48 * - _rand48_seed *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * erand48.c * * This file supplies pg_erand48() and related functions, which except * for the names are just like the POSIX-standard erand48() family. * (We don't supply the full set though, only the ones we have found use * for in Postgres. In particular, we do *not* implement lcong48(), so * that there is no need for the multiplier and addend to be variable.) * * We used to test for an operating system version rather than * unconditionally using our own, but (1) some versions of Cygwin have a * buggy erand48() that always returns zero and (2) as of 2011, glibc's * erand48() is strangely coded to be almost-but-not-quite thread-safe, * which doesn't matter for the backend but is important for pgbench. * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * Portions Copyright (c) 1993 Martin Birgmeier * All rights reserved. * * You may redistribute unmodified or modified versions of this source * code provided that the above copyright notice and this and the * following conditions are retained. * * This software is provided ``as is'', and comes with no warranties * of any kind. I shall in no event be liable for anything that happens * to anyone/anything when using this software. * * IDENTIFICATION * src/port/erand48.c * *------------------------------------------------------------------------- */ #include "c.h" #include /* These values are specified by POSIX */ #define RAND48_MULT UINT64CONST(0x0005deece66d) #define RAND48_ADD UINT64CONST(0x000b) /* POSIX specifies 0x330e's use in srand48, but the other bits are arbitrary */ #define RAND48_SEED_0 (0x330e) #define RAND48_SEED_1 (0xabcd) #define RAND48_SEED_2 (0x1234) static __thread unsigned short _rand48_seed[3] = { RAND48_SEED_0, RAND48_SEED_1, RAND48_SEED_2 }; /* * Advance the 48-bit value stored in xseed[] to the next "random" number. * * Also returns the value of that number --- without masking it to 48 bits. * If caller uses the result, it must mask off the bits it wants. */ static uint64 _dorand48(unsigned short xseed[3]) { /* * We do the arithmetic in uint64; any type wider than 48 bits would work. */ uint64 in; uint64 out; in = (uint64) xseed[2] << 32 | (uint64) xseed[1] << 16 | (uint64) xseed[0]; out = in * RAND48_MULT + RAND48_ADD; xseed[0] = out & 0xFFFF; xseed[1] = (out >> 16) & 0xFFFF; xseed[2] = (out >> 32) & 0xFFFF; return out; } /* * Generate a random floating-point value using caller-supplied state. * Values are uniformly distributed over the interval [0.0, 1.0). */ /* * Generate a random non-negative integral value using internal state. * Values are uniformly distributed over the interval [0, 2^31). */ long pg_lrand48(void) { uint64 x = _dorand48(_rand48_seed); return (x >> 17) & UINT64CONST(0x7FFFFFFF); } /* * Generate a random signed integral value using caller-supplied state. * Values are uniformly distributed over the interval [-2^31, 2^31). */ /* * Initialize the internal state using the given seed. * * Per POSIX, this uses only 32 bits from "seed" even if "long" is wider. * Hence, the set of possible seed values is smaller than it could be. * Better practice is to use caller-supplied state and initialize it with * random bits obtained from a high-quality source of random bits. * * Note: POSIX specifies a function seed48() that allows all 48 bits * of the internal state to be set, but we don't currently support that. */ libpg_query-13-2.1.0/src/postgres/src_port_pg_bitutils.c000066400000000000000000000131061413137616400233250ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_popcount64 * - pg_popcount64_choose * - pg_popcount32 * - pg_popcount32_choose * - pg_popcount_available * - pg_popcount32_asm * - pg_popcount64_asm * - pg_popcount32_slow * - pg_popcount64_slow *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pg_bitutils.c * Miscellaneous functions for bit-wise operations. * * Copyright (c) 2019-2020, PostgreSQL Global Development Group * * IDENTIFICATION * src/port/pg_bitutils.c * *------------------------------------------------------------------------- */ #include "c.h" #ifdef HAVE__GET_CPUID #include #endif #ifdef HAVE__CPUID #include #endif #include "port/pg_bitutils.h" /* * Array giving the position of the left-most set bit for each possible * byte value. We count the right-most position as the 0th bit, and the * left-most the 7th bit. The 0th entry of the array should not be used. * * Note: this is not used by the functions in pg_bitutils.h when * HAVE__BUILTIN_CLZ is defined, but we provide it anyway, so that * extensions possibly compiled with a different compiler can use it. */ /* * Array giving the position of the right-most set bit for each possible * byte value. We count the right-most position as the 0th bit, and the * left-most the 7th bit. The 0th entry of the array should not be used. * * Note: this is not used by the functions in pg_bitutils.h when * HAVE__BUILTIN_CTZ is defined, but we provide it anyway, so that * extensions possibly compiled with a different compiler can use it. */ /* * Array giving the number of 1-bits in each possible byte value. * * Note: we export this for use by functions in which explicit use * of the popcount functions seems unlikely to be a win. */ /* * On x86_64, we can use the hardware popcount instruction, but only if * we can verify that the CPU supports it via the cpuid instruction. * * Otherwise, we fall back to __builtin_popcount if the compiler has that, * or a hand-rolled implementation if not. */ #ifdef HAVE_X86_64_POPCNTQ #if defined(HAVE__GET_CPUID) || defined(HAVE__CPUID) #define USE_POPCNT_ASM 1 #endif #endif static int pg_popcount32_slow(uint32 word); static int pg_popcount64_slow(uint64 word); #ifdef USE_POPCNT_ASM static bool pg_popcount_available(void); static int pg_popcount32_choose(uint32 word); static int pg_popcount64_choose(uint64 word); static int pg_popcount32_asm(uint32 word); static int pg_popcount64_asm(uint64 word); int (*pg_popcount32) (uint32 word) = pg_popcount32_choose; int (*pg_popcount64) (uint64 word) = pg_popcount64_choose; #else int (*pg_popcount32) (uint32 word) = pg_popcount32_slow; int (*pg_popcount64) (uint64 word) = pg_popcount64_slow; #endif /* USE_POPCNT_ASM */ #ifdef USE_POPCNT_ASM /* * Return true if CPUID indicates that the POPCNT instruction is available. */ static bool pg_popcount_available(void) { unsigned int exx[4] = {0, 0, 0, 0}; #if defined(HAVE__GET_CPUID) __get_cpuid(1, &exx[0], &exx[1], &exx[2], &exx[3]); #elif defined(HAVE__CPUID) __cpuid(exx, 1); #else #error cpuid instruction not available #endif return (exx[2] & (1 << 23)) != 0; /* POPCNT */ } /* * These functions get called on the first call to pg_popcount32 etc. * They detect whether we can use the asm implementations, and replace * the function pointers so that subsequent calls are routed directly to * the chosen implementation. */ static int pg_popcount32_choose(uint32 word) { if (pg_popcount_available()) { pg_popcount32 = pg_popcount32_asm; pg_popcount64 = pg_popcount64_asm; } else { pg_popcount32 = pg_popcount32_slow; pg_popcount64 = pg_popcount64_slow; } return pg_popcount32(word); } static int pg_popcount64_choose(uint64 word) { if (pg_popcount_available()) { pg_popcount32 = pg_popcount32_asm; pg_popcount64 = pg_popcount64_asm; } else { pg_popcount32 = pg_popcount32_slow; pg_popcount64 = pg_popcount64_slow; } return pg_popcount64(word); } /* * pg_popcount32_asm * Return the number of 1 bits set in word */ static int pg_popcount32_asm(uint32 word) { uint32 res; __asm__ __volatile__(" popcntl %1,%0\n":"=q"(res):"rm"(word):"cc"); return (int) res; } /* * pg_popcount64_asm * Return the number of 1 bits set in word */ static int pg_popcount64_asm(uint64 word) { uint64 res; __asm__ __volatile__(" popcntq %1,%0\n":"=q"(res):"rm"(word):"cc"); return (int) res; } #endif /* USE_POPCNT_ASM */ /* * pg_popcount32_slow * Return the number of 1 bits set in word */ static int pg_popcount32_slow(uint32 word) { #ifdef HAVE__BUILTIN_POPCOUNT return __builtin_popcount(word); #else /* !HAVE__BUILTIN_POPCOUNT */ int result = 0; while (word != 0) { result += pg_number_of_ones[word & 255]; word >>= 8; } return result; #endif /* HAVE__BUILTIN_POPCOUNT */ } /* * pg_popcount64_slow * Return the number of 1 bits set in word */ static int pg_popcount64_slow(uint64 word) { #ifdef HAVE__BUILTIN_POPCOUNT #if defined(HAVE_LONG_INT_64) return __builtin_popcountl(word); #elif defined(HAVE_LONG_LONG_INT_64) return __builtin_popcountll(word); #else #error must have a working 64-bit integer datatype #endif #else /* !HAVE__BUILTIN_POPCOUNT */ int result = 0; while (word != 0) { result += pg_number_of_ones[word & 255]; word >>= 8; } return result; #endif /* HAVE__BUILTIN_POPCOUNT */ } /* * pg_popcount * Returns the number of 1-bits in buf */ #if SIZEOF_VOID_P >= 8 #else #endif libpg_query-13-2.1.0/src/postgres/src_port_pgsleep.c000066400000000000000000000042151413137616400224400ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_usleep *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pgsleep.c * Portable delay handling. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/port/pgsleep.c * *------------------------------------------------------------------------- */ #include "c.h" #include #include #ifdef HAVE_SYS_SELECT_H #include #endif /* * In a Windows backend, we don't use this implementation, but rather * the signal-aware version in src/backend/port/win32/signal.c. */ #if defined(FRONTEND) || !defined(WIN32) /* * pg_usleep --- delay the specified number of microseconds. * * NOTE: although the delay is specified in microseconds, the effective * resolution is only 1/HZ, or 10 milliseconds, on most Unixen. Expect * the requested delay to be rounded up to the next resolution boundary. * * On machines where "long" is 32 bits, the maximum delay is ~2000 seconds. * * CAUTION: the behavior when a signal arrives during the sleep is platform * dependent. On most Unix-ish platforms, a signal does not terminate the * sleep; but on some, it will (the Windows implementation also allows signals * to terminate pg_usleep). And there are platforms where not only does a * signal not terminate the sleep, but it actually resets the timeout counter * so that the sleep effectively starts over! It is therefore rather hazardous * to use this for long sleeps; a continuing stream of signal events could * prevent the sleep from ever terminating. Better practice for long sleeps * is to use WaitLatch() with a timeout. */ void pg_usleep(long microsec) { if (microsec > 0) { #ifndef WIN32 struct timeval delay; delay.tv_sec = microsec / 1000000L; delay.tv_usec = microsec % 1000000L; (void) select(0, NULL, NULL, NULL, &delay); #else SleepEx((microsec < 500 ? 1 : (microsec + 500) / 1000), FALSE); #endif } } #endif /* defined(FRONTEND) || !defined(WIN32) */ libpg_query-13-2.1.0/src/postgres/src_port_pgstrcasecmp.c000066400000000000000000000044131413137616400234740ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_toupper *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * pgstrcasecmp.c * Portable SQL-like case-independent comparisons and conversions. * * SQL99 specifies Unicode-aware case normalization, which we don't yet * have the infrastructure for. Instead we use tolower() to provide a * locale-aware translation. However, there are some locales where this * is not right either (eg, Turkish may do strange things with 'i' and * 'I'). Our current compromise is to use tolower() for characters with * the high bit set, and use an ASCII-only downcasing for 7-bit * characters. * * NB: this code should match downcase_truncate_identifier() in scansup.c. * * We also provide strict ASCII-only case conversion functions, which can * be used to implement C/POSIX case folding semantics no matter what the * C library thinks the locale is. * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * src/port/pgstrcasecmp.c * *------------------------------------------------------------------------- */ #include "c.h" #include /* * Case-independent comparison of two null-terminated strings. */ /* * Case-independent comparison of two not-necessarily-null-terminated strings. * At most n bytes will be examined from each string. */ /* * Fold a character to upper case. * * Unlike some versions of toupper(), this is safe to apply to characters * that aren't lower case letters. Note however that the whole thing is * a bit bogus for multibyte character sets. */ unsigned char pg_toupper(unsigned char ch) { if (ch >= 'a' && ch <= 'z') ch += 'A' - 'a'; else if (IS_HIGHBIT_SET(ch) && islower(ch)) ch = toupper(ch); return ch; } /* * Fold a character to lower case. * * Unlike some versions of tolower(), this is safe to apply to characters * that aren't upper case letters. Note however that the whole thing is * a bit bogus for multibyte character sets. */ /* * Fold a character to upper case, following C/POSIX locale rules. */ /* * Fold a character to lower case, following C/POSIX locale rules. */ libpg_query-13-2.1.0/src/postgres/src_port_qsort.c000066400000000000000000000145121413137616400221520ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_qsort * - pg_qsort * - swapfunc * - med3 *-------------------------------------------------------------------- */ /* * qsort.c: standard quicksort algorithm * * Modifications from vanilla NetBSD source: * Add do ... while() macro fix * Remove __inline, _DIAGASSERTs, __P * Remove ill-considered "swap_cnt" switch to insertion sort, * in favor of a simple check for presorted input. * Take care to recurse on the smaller partition, to bound stack usage. * * CAUTION: if you change this file, see also qsort_arg.c, gen_qsort_tuple.pl * * src/port/qsort.c */ /* $NetBSD: qsort.c,v 1.13 2003/08/07 16:43:42 agc Exp $ */ /*- * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "c.h" static char *med3(char *a, char *b, char *c, int (*cmp) (const void *, const void *)); static void swapfunc(char *, char *, size_t, int); /* * Qsort routine based on J. L. Bentley and M. D. McIlroy, * "Engineering a sort function", * Software--Practice and Experience 23 (1993) 1249-1265. * * We have modified their original by adding a check for already-sorted input, * which seems to be a win per discussions on pgsql-hackers around 2006-03-21. * * Also, we recurse on the smaller partition and iterate on the larger one, * which ensures we cannot recurse more than log(N) levels (since the * partition recursed to is surely no more than half of the input). Bentley * and McIlroy explicitly rejected doing this on the grounds that it's "not * worth the effort", but we have seen crashes in the field due to stack * overrun, so that judgment seems wrong. */ #define swapcode(TYPE, parmi, parmj, n) \ do { \ size_t i = (n) / sizeof (TYPE); \ TYPE *pi = (TYPE *)(void *)(parmi); \ TYPE *pj = (TYPE *)(void *)(parmj); \ do { \ TYPE t = *pi; \ *pi++ = *pj; \ *pj++ = t; \ } while (--i > 0); \ } while (0) #define SWAPINIT(a, es) swaptype = ((char *)(a) - (char *)0) % sizeof(long) || \ (es) % sizeof(long) ? 2 : (es) == sizeof(long)? 0 : 1 static void swapfunc(char *a, char *b, size_t n, int swaptype) { if (swaptype <= 1) swapcode(long, a, b, n); else swapcode(char, a, b, n); } #define swap(a, b) \ if (swaptype == 0) { \ long t = *(long *)(void *)(a); \ *(long *)(void *)(a) = *(long *)(void *)(b); \ *(long *)(void *)(b) = t; \ } else \ swapfunc(a, b, es, swaptype) #define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n, swaptype) static char * med3(char *a, char *b, char *c, int (*cmp) (const void *, const void *)) { return cmp(a, b) < 0 ? (cmp(b, c) < 0 ? b : (cmp(a, c) < 0 ? c : a)) : (cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c)); } void pg_qsort(void *a, size_t n, size_t es, int (*cmp) (const void *, const void *)) { char *pa, *pb, *pc, *pd, *pl, *pm, *pn; size_t d1, d2; int r, swaptype, presorted; loop:SWAPINIT(a, es); if (n < 7) { for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0; pl -= es) swap(pl, pl - es); return; } presorted = 1; for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es) { if (cmp(pm - es, pm) > 0) { presorted = 0; break; } } if (presorted) return; pm = (char *) a + (n / 2) * es; if (n > 7) { pl = (char *) a; pn = (char *) a + (n - 1) * es; if (n > 40) { size_t d = (n / 8) * es; pl = med3(pl, pl + d, pl + 2 * d, cmp); pm = med3(pm - d, pm, pm + d, cmp); pn = med3(pn - 2 * d, pn - d, pn, cmp); } pm = med3(pl, pm, pn, cmp); } swap(a, pm); pa = pb = (char *) a + es; pc = pd = (char *) a + (n - 1) * es; for (;;) { while (pb <= pc && (r = cmp(pb, a)) <= 0) { if (r == 0) { swap(pa, pb); pa += es; } pb += es; } while (pb <= pc && (r = cmp(pc, a)) >= 0) { if (r == 0) { swap(pc, pd); pd -= es; } pc -= es; } if (pb > pc) break; swap(pb, pc); pb += es; pc -= es; } pn = (char *) a + n * es; d1 = Min(pa - (char *) a, pb - pa); vecswap(a, pb - d1, d1); d1 = Min(pd - pc, pn - pd - es); vecswap(pb, pn - d1, d1); d1 = pb - pa; d2 = pd - pc; if (d1 <= d2) { /* Recurse on left partition, then iterate on right partition */ if (d1 > es) pg_qsort(a, d1 / es, es, cmp); if (d2 > es) { /* Iterate rather than recurse to save stack space */ /* pg_qsort(pn - d2, d2 / es, es, cmp); */ a = pn - d2; n = d2 / es; goto loop; } } else { /* Recurse on right partition, then iterate on left partition */ if (d2 > es) pg_qsort(pn - d2, d2 / es, es, cmp); if (d1 > es) { /* Iterate rather than recurse to save stack space */ /* pg_qsort(a, d1 / es, es, cmp); */ n = d1 / es; goto loop; } } } /* * qsort comparator wrapper for strcmp. */ libpg_query-13-2.1.0/src/postgres/src_port_random.c000066400000000000000000000012331413137616400222560ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - random *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * random.c * random() wrapper * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/port/random.c * *------------------------------------------------------------------------- */ #include "c.h" #include long random(void) { return pg_lrand48(); } libpg_query-13-2.1.0/src/postgres/src_port_snprintf.c000066400000000000000000001027121413137616400226450ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_vfprintf * - dopr * - pg_snprintf * - pg_vsnprintf * - strchrnul * - dostr * - find_arguments * - fmtint * - adjust_sign * - compute_padlen * - leading_pad * - dopr_outchmulti * - trailing_pad * - fmtchar * - fmtstr * - fmtptr * - fmtfloat * - dopr_outch * - flushbuffer * - pg_fprintf * - pg_sprintf * - pg_vsprintf * - pg_printf *-------------------------------------------------------------------- */ /* * Copyright (c) 1983, 1995, 1996 Eric P. Allman * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * src/port/snprintf.c */ #include "c.h" #include /* * We used to use the platform's NL_ARGMAX here, but that's a bad idea, * first because the point of this module is to remove platform dependencies * not perpetuate them, and second because some platforms use ridiculously * large values, leading to excessive stack consumption in dopr(). */ #define PG_NL_ARGMAX 31 /* * SNPRINTF, VSNPRINTF and friends * * These versions have been grabbed off the net. They have been * cleaned up to compile properly and support for most of the C99 * specification has been added. Remaining unimplemented features are: * * 1. No locale support: the radix character is always '.' and the ' * (single quote) format flag is ignored. * * 2. No support for the "%n" format specification. * * 3. No support for wide characters ("lc" and "ls" formats). * * 4. No support for "long double" ("Lf" and related formats). * * 5. Space and '#' flags are not implemented. * * In addition, we support some extensions over C99: * * 1. Argument order control through "%n$" and "*n$", as required by POSIX. * * 2. "%m" expands to the value of strerror(errno), where errno is the * value that variable had at the start of the call. This is a glibc * extension, but a very useful one. * * * Historically the result values of sprintf/snprintf varied across platforms. * This implementation now follows the C99 standard: * * 1. -1 is returned if an error is detected in the format string, or if * a write to the target stream fails (as reported by fwrite). Note that * overrunning snprintf's target buffer is *not* an error. * * 2. For successful writes to streams, the actual number of bytes written * to the stream is returned. * * 3. For successful sprintf/snprintf, the number of bytes that would have * been written to an infinite-size buffer (excluding the trailing '\0') * is returned. snprintf will truncate its output to fit in the buffer * (ensuring a trailing '\0' unless count == 0), but this is not reflected * in the function result. * * snprintf buffer overrun can be detected by checking for function result * greater than or equal to the supplied count. */ /************************************************************** * Original: * Patrick Powell Tue Apr 11 09:48:21 PDT 1995 * A bombproof version of doprnt (dopr) included. * Sigh. This sort of thing is always nasty do deal with. Note that * the version here does not include floating point. (now it does ... tgl) **************************************************************/ /* Prevent recursion */ #undef vsnprintf #undef snprintf #undef vsprintf #undef sprintf #undef vfprintf #undef fprintf #undef vprintf #undef printf /* * Info about where the formatted output is going. * * dopr and subroutines will not write at/past bufend, but snprintf * reserves one byte, ensuring it may place the trailing '\0' there. * * In snprintf, we use nchars to count the number of bytes dropped on the * floor due to buffer overrun. The correct result of snprintf is thus * (bufptr - bufstart) + nchars. (This isn't as inconsistent as it might * seem: nchars is the number of emitted bytes that are not in the buffer now, * either because we sent them to the stream or because we couldn't fit them * into the buffer to begin with.) */ typedef struct { char *bufptr; /* next buffer output position */ char *bufstart; /* first buffer element */ char *bufend; /* last+1 buffer element, or NULL */ /* bufend == NULL is for sprintf, where we assume buf is big enough */ FILE *stream; /* eventual output destination, or NULL */ int nchars; /* # chars sent to stream, or dropped */ bool failed; /* call is a failure; errno is set */ } PrintfTarget; /* * Info about the type and value of a formatting parameter. Note that we * don't currently support "long double", "wint_t", or "wchar_t *" data, * nor the '%n' formatting code; else we'd need more types. Also, at this * level we need not worry about signed vs unsigned values. */ typedef enum { ATYPE_NONE = 0, ATYPE_INT, ATYPE_LONG, ATYPE_LONGLONG, ATYPE_DOUBLE, ATYPE_CHARPTR } PrintfArgType; typedef union { int i; long l; long long ll; double d; char *cptr; } PrintfArgValue; static void flushbuffer(PrintfTarget *target); static void dopr(PrintfTarget *target, const char *format, va_list args); /* * Externally visible entry points. * * All of these are just wrappers around dopr(). Note it's essential that * they not change the value of "errno" before reaching dopr(). */ int pg_vsnprintf(char *str, size_t count, const char *fmt, va_list args) { PrintfTarget target; char onebyte[1]; /* * C99 allows the case str == NULL when count == 0. Rather than * special-casing this situation further down, we substitute a one-byte * local buffer. Callers cannot tell, since the function result doesn't * depend on count. */ if (count == 0) { str = onebyte; count = 1; } target.bufstart = target.bufptr = str; target.bufend = str + count - 1; target.stream = NULL; target.nchars = 0; target.failed = false; dopr(&target, fmt, args); *(target.bufptr) = '\0'; return target.failed ? -1 : (target.bufptr - target.bufstart + target.nchars); } int pg_snprintf(char *str, size_t count, const char *fmt,...) { int len; va_list args; va_start(args, fmt); len = pg_vsnprintf(str, count, fmt, args); va_end(args); return len; } int pg_vsprintf(char *str, const char *fmt, va_list args) { PrintfTarget target; target.bufstart = target.bufptr = str; target.bufend = NULL; target.stream = NULL; target.nchars = 0; /* not really used in this case */ target.failed = false; dopr(&target, fmt, args); *(target.bufptr) = '\0'; return target.failed ? -1 : (target.bufptr - target.bufstart + target.nchars); } int pg_sprintf(char *str, const char *fmt,...) { int len; va_list args; va_start(args, fmt); len = pg_vsprintf(str, fmt, args); va_end(args); return len; } int pg_vfprintf(FILE *stream, const char *fmt, va_list args) { PrintfTarget target; char buffer[1024]; /* size is arbitrary */ if (stream == NULL) { errno = EINVAL; return -1; } target.bufstart = target.bufptr = buffer; target.bufend = buffer + sizeof(buffer); /* use the whole buffer */ target.stream = stream; target.nchars = 0; target.failed = false; dopr(&target, fmt, args); /* dump any remaining buffer contents */ flushbuffer(&target); return target.failed ? -1 : target.nchars; } int pg_fprintf(FILE *stream, const char *fmt,...) { int len; va_list args; va_start(args, fmt); len = pg_vfprintf(stream, fmt, args); va_end(args); return len; } int pg_printf(const char *fmt,...) { int len; va_list args; va_start(args, fmt); len = pg_vfprintf(stdout, fmt, args); va_end(args); return len; } /* * Attempt to write the entire buffer to target->stream; discard the entire * buffer in any case. Call this only when target->stream is defined. */ static void flushbuffer(PrintfTarget *target) { size_t nc = target->bufptr - target->bufstart; /* * Don't write anything if we already failed; this is to ensure we * preserve the original failure's errno. */ if (!target->failed && nc > 0) { size_t written; written = fwrite(target->bufstart, 1, nc, target->stream); target->nchars += written; if (written != nc) target->failed = true; } target->bufptr = target->bufstart; } static bool find_arguments(const char *format, va_list args, PrintfArgValue *argvalues); static void fmtstr(const char *value, int leftjust, int minlen, int maxwidth, int pointflag, PrintfTarget *target); static void fmtptr(void *value, PrintfTarget *target); static void fmtint(long long value, char type, int forcesign, int leftjust, int minlen, int zpad, int precision, int pointflag, PrintfTarget *target); static void fmtchar(int value, int leftjust, int minlen, PrintfTarget *target); static void fmtfloat(double value, char type, int forcesign, int leftjust, int minlen, int zpad, int precision, int pointflag, PrintfTarget *target); static void dostr(const char *str, int slen, PrintfTarget *target); static void dopr_outch(int c, PrintfTarget *target); static void dopr_outchmulti(int c, int slen, PrintfTarget *target); static int adjust_sign(int is_negative, int forcesign, int *signvalue); static int compute_padlen(int minlen, int vallen, int leftjust); static void leading_pad(int zpad, int signvalue, int *padlen, PrintfTarget *target); static void trailing_pad(int padlen, PrintfTarget *target); /* * If strchrnul exists (it's a glibc-ism), it's a good bit faster than the * equivalent manual loop. If it doesn't exist, provide a replacement. * * Note: glibc declares this as returning "char *", but that would require * casting away const internally, so we don't follow that detail. */ #ifndef HAVE_STRCHRNUL static inline const char * strchrnul(const char *s, int c) { while (*s != '\0' && *s != c) s++; return s; } #else /* * glibc's declares strchrnul only if _GNU_SOURCE is defined. * While we typically use that on glibc platforms, configure will set * HAVE_STRCHRNUL whether it's used or not. Fill in the missing declaration * so that this file will compile cleanly with or without _GNU_SOURCE. */ #ifndef _GNU_SOURCE extern char *strchrnul(const char *s, int c); #endif #endif /* HAVE_STRCHRNUL */ /* * dopr(): the guts of *printf for all cases. */ static void dopr(PrintfTarget *target, const char *format, va_list args) { int save_errno = errno; const char *first_pct = NULL; int ch; bool have_dollar; bool have_star; bool afterstar; int accum; int longlongflag; int longflag; int pointflag; int leftjust; int fieldwidth; int precision; int zpad; int forcesign; int fmtpos; int cvalue; long long numvalue; double fvalue; char *strvalue; PrintfArgValue argvalues[PG_NL_ARGMAX + 1]; /* * Initially, we suppose the format string does not use %n$. The first * time we come to a conversion spec that has that, we'll call * find_arguments() to check for consistent use of %n$ and fill the * argvalues array with the argument values in the correct order. */ have_dollar = false; while (*format != '\0') { /* Locate next conversion specifier */ if (*format != '%') { /* Scan to next '%' or end of string */ const char *next_pct = strchrnul(format + 1, '%'); /* Dump literal data we just scanned over */ dostr(format, next_pct - format, target); if (target->failed) break; if (*next_pct == '\0') break; format = next_pct; } /* * Remember start of first conversion spec; if we find %n$, then it's * sufficient for find_arguments() to start here, without rescanning * earlier literal text. */ if (first_pct == NULL) first_pct = format; /* Process conversion spec starting at *format */ format++; /* Fast path for conversion spec that is exactly %s */ if (*format == 's') { format++; strvalue = va_arg(args, char *); Assert(strvalue != NULL); dostr(strvalue, strlen(strvalue), target); if (target->failed) break; continue; } fieldwidth = precision = zpad = leftjust = forcesign = 0; longflag = longlongflag = pointflag = 0; fmtpos = accum = 0; have_star = afterstar = false; nextch2: ch = *format++; switch (ch) { case '-': leftjust = 1; goto nextch2; case '+': forcesign = 1; goto nextch2; case '0': /* set zero padding if no nonzero digits yet */ if (accum == 0 && !pointflag) zpad = '0'; /* FALL THRU */ case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': accum = accum * 10 + (ch - '0'); goto nextch2; case '.': if (have_star) have_star = false; else fieldwidth = accum; pointflag = 1; accum = 0; goto nextch2; case '*': if (have_dollar) { /* * We'll process value after reading n$. Note it's OK to * assume have_dollar is set correctly, because in a valid * format string the initial % must have had n$ if * does. */ afterstar = true; } else { /* fetch and process value now */ int starval = va_arg(args, int); if (pointflag) { precision = starval; if (precision < 0) { precision = 0; pointflag = 0; } } else { fieldwidth = starval; if (fieldwidth < 0) { leftjust = 1; fieldwidth = -fieldwidth; } } } have_star = true; accum = 0; goto nextch2; case '$': /* First dollar sign? */ if (!have_dollar) { /* Yup, so examine all conversion specs in format */ if (!find_arguments(first_pct, args, argvalues)) goto bad_format; have_dollar = true; } if (afterstar) { /* fetch and process star value */ int starval = argvalues[accum].i; if (pointflag) { precision = starval; if (precision < 0) { precision = 0; pointflag = 0; } } else { fieldwidth = starval; if (fieldwidth < 0) { leftjust = 1; fieldwidth = -fieldwidth; } } afterstar = false; } else fmtpos = accum; accum = 0; goto nextch2; case 'l': if (longflag) longlongflag = 1; else longflag = 1; goto nextch2; case 'z': #if SIZEOF_SIZE_T == 8 #ifdef HAVE_LONG_INT_64 longflag = 1; #elif defined(HAVE_LONG_LONG_INT_64) longlongflag = 1; #else #error "Don't know how to print 64bit integers" #endif #else /* assume size_t is same size as int */ #endif goto nextch2; case 'h': case '\'': /* ignore these */ goto nextch2; case 'd': case 'i': if (!have_star) { if (pointflag) precision = accum; else fieldwidth = accum; } if (have_dollar) { if (longlongflag) numvalue = argvalues[fmtpos].ll; else if (longflag) numvalue = argvalues[fmtpos].l; else numvalue = argvalues[fmtpos].i; } else { if (longlongflag) numvalue = va_arg(args, long long); else if (longflag) numvalue = va_arg(args, long); else numvalue = va_arg(args, int); } fmtint(numvalue, ch, forcesign, leftjust, fieldwidth, zpad, precision, pointflag, target); break; case 'o': case 'u': case 'x': case 'X': if (!have_star) { if (pointflag) precision = accum; else fieldwidth = accum; } if (have_dollar) { if (longlongflag) numvalue = (unsigned long long) argvalues[fmtpos].ll; else if (longflag) numvalue = (unsigned long) argvalues[fmtpos].l; else numvalue = (unsigned int) argvalues[fmtpos].i; } else { if (longlongflag) numvalue = (unsigned long long) va_arg(args, long long); else if (longflag) numvalue = (unsigned long) va_arg(args, long); else numvalue = (unsigned int) va_arg(args, int); } fmtint(numvalue, ch, forcesign, leftjust, fieldwidth, zpad, precision, pointflag, target); break; case 'c': if (!have_star) { if (pointflag) precision = accum; else fieldwidth = accum; } if (have_dollar) cvalue = (unsigned char) argvalues[fmtpos].i; else cvalue = (unsigned char) va_arg(args, int); fmtchar(cvalue, leftjust, fieldwidth, target); break; case 's': if (!have_star) { if (pointflag) precision = accum; else fieldwidth = accum; } if (have_dollar) strvalue = argvalues[fmtpos].cptr; else strvalue = va_arg(args, char *); /* Whine if someone tries to print a NULL string */ Assert(strvalue != NULL); fmtstr(strvalue, leftjust, fieldwidth, precision, pointflag, target); break; case 'p': /* fieldwidth/leftjust are ignored ... */ if (have_dollar) strvalue = argvalues[fmtpos].cptr; else strvalue = va_arg(args, char *); fmtptr((void *) strvalue, target); break; case 'e': case 'E': case 'f': case 'g': case 'G': if (!have_star) { if (pointflag) precision = accum; else fieldwidth = accum; } if (have_dollar) fvalue = argvalues[fmtpos].d; else fvalue = va_arg(args, double); fmtfloat(fvalue, ch, forcesign, leftjust, fieldwidth, zpad, precision, pointflag, target); break; case 'm': { char errbuf[PG_STRERROR_R_BUFLEN]; const char *errm = strerror_r(save_errno, errbuf, sizeof(errbuf)); dostr(errm, strlen(errm), target); } break; case '%': dopr_outch('%', target); break; default: /* * Anything else --- in particular, '\0' indicating end of * format string --- is bogus. */ goto bad_format; } /* Check for failure after each conversion spec */ if (target->failed) break; } return; bad_format: errno = EINVAL; target->failed = true; } /* * find_arguments(): sort out the arguments for a format spec with %n$ * * If format is valid, return true and fill argvalues[i] with the value * for the conversion spec that has %i$ or *i$. Else return false. */ static bool find_arguments(const char *format, va_list args, PrintfArgValue *argvalues) { int ch; bool afterstar; int accum; int longlongflag; int longflag; int fmtpos; int i; int last_dollar; PrintfArgType argtypes[PG_NL_ARGMAX + 1]; /* Initialize to "no dollar arguments known" */ last_dollar = 0; MemSet(argtypes, 0, sizeof(argtypes)); /* * This loop must accept the same format strings as the one in dopr(). * However, we don't need to analyze them to the same level of detail. * * Since we're only called if there's a dollar-type spec somewhere, we can * fail immediately if we find a non-dollar spec. Per the C99 standard, * all argument references in the format string must be one or the other. */ while (*format != '\0') { /* Locate next conversion specifier */ if (*format != '%') { /* Unlike dopr, we can just quit if there's no more specifiers */ format = strchr(format + 1, '%'); if (format == NULL) break; } /* Process conversion spec starting at *format */ format++; longflag = longlongflag = 0; fmtpos = accum = 0; afterstar = false; nextch1: ch = *format++; switch (ch) { case '-': case '+': goto nextch1; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': accum = accum * 10 + (ch - '0'); goto nextch1; case '.': accum = 0; goto nextch1; case '*': if (afterstar) return false; /* previous star missing dollar */ afterstar = true; accum = 0; goto nextch1; case '$': if (accum <= 0 || accum > PG_NL_ARGMAX) return false; if (afterstar) { if (argtypes[accum] && argtypes[accum] != ATYPE_INT) return false; argtypes[accum] = ATYPE_INT; last_dollar = Max(last_dollar, accum); afterstar = false; } else fmtpos = accum; accum = 0; goto nextch1; case 'l': if (longflag) longlongflag = 1; else longflag = 1; goto nextch1; case 'z': #if SIZEOF_SIZE_T == 8 #ifdef HAVE_LONG_INT_64 longflag = 1; #elif defined(HAVE_LONG_LONG_INT_64) longlongflag = 1; #else #error "Don't know how to print 64bit integers" #endif #else /* assume size_t is same size as int */ #endif goto nextch1; case 'h': case '\'': /* ignore these */ goto nextch1; case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': if (fmtpos) { PrintfArgType atype; if (longlongflag) atype = ATYPE_LONGLONG; else if (longflag) atype = ATYPE_LONG; else atype = ATYPE_INT; if (argtypes[fmtpos] && argtypes[fmtpos] != atype) return false; argtypes[fmtpos] = atype; last_dollar = Max(last_dollar, fmtpos); } else return false; /* non-dollar conversion spec */ break; case 'c': if (fmtpos) { if (argtypes[fmtpos] && argtypes[fmtpos] != ATYPE_INT) return false; argtypes[fmtpos] = ATYPE_INT; last_dollar = Max(last_dollar, fmtpos); } else return false; /* non-dollar conversion spec */ break; case 's': case 'p': if (fmtpos) { if (argtypes[fmtpos] && argtypes[fmtpos] != ATYPE_CHARPTR) return false; argtypes[fmtpos] = ATYPE_CHARPTR; last_dollar = Max(last_dollar, fmtpos); } else return false; /* non-dollar conversion spec */ break; case 'e': case 'E': case 'f': case 'g': case 'G': if (fmtpos) { if (argtypes[fmtpos] && argtypes[fmtpos] != ATYPE_DOUBLE) return false; argtypes[fmtpos] = ATYPE_DOUBLE; last_dollar = Max(last_dollar, fmtpos); } else return false; /* non-dollar conversion spec */ break; case 'm': case '%': break; default: return false; /* bogus format string */ } /* * If we finish the spec with afterstar still set, there's a * non-dollar star in there. */ if (afterstar) return false; /* non-dollar conversion spec */ } /* * Format appears valid so far, so collect the arguments in physical * order. (Since we rejected any non-dollar specs that would have * collected arguments, we know that dopr() hasn't collected any yet.) */ for (i = 1; i <= last_dollar; i++) { switch (argtypes[i]) { case ATYPE_NONE: return false; case ATYPE_INT: argvalues[i].i = va_arg(args, int); break; case ATYPE_LONG: argvalues[i].l = va_arg(args, long); break; case ATYPE_LONGLONG: argvalues[i].ll = va_arg(args, long long); break; case ATYPE_DOUBLE: argvalues[i].d = va_arg(args, double); break; case ATYPE_CHARPTR: argvalues[i].cptr = va_arg(args, char *); break; } } return true; } static void fmtstr(const char *value, int leftjust, int minlen, int maxwidth, int pointflag, PrintfTarget *target) { int padlen, vallen; /* amount to pad */ /* * If a maxwidth (precision) is specified, we must not fetch more bytes * than that. */ if (pointflag) vallen = strnlen(value, maxwidth); else vallen = strlen(value); padlen = compute_padlen(minlen, vallen, leftjust); if (padlen > 0) { dopr_outchmulti(' ', padlen, target); padlen = 0; } dostr(value, vallen, target); trailing_pad(padlen, target); } static void fmtptr(void *value, PrintfTarget *target) { int vallen; char convert[64]; /* we rely on regular C library's sprintf to do the basic conversion */ vallen = sprintf(convert, "%p", value); if (vallen < 0) target->failed = true; else dostr(convert, vallen, target); } static void fmtint(long long value, char type, int forcesign, int leftjust, int minlen, int zpad, int precision, int pointflag, PrintfTarget *target) { unsigned long long base; unsigned long long uvalue; int dosign; const char *cvt = "0123456789abcdef"; int signvalue = 0; char convert[64]; int vallen = 0; int padlen; /* amount to pad */ int zeropad; /* extra leading zeroes */ switch (type) { case 'd': case 'i': base = 10; dosign = 1; break; case 'o': base = 8; dosign = 0; break; case 'u': base = 10; dosign = 0; break; case 'x': base = 16; dosign = 0; break; case 'X': cvt = "0123456789ABCDEF"; base = 16; dosign = 0; break; default: return; /* keep compiler quiet */ } /* disable MSVC warning about applying unary minus to an unsigned value */ #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4146) #endif /* Handle +/- */ if (dosign && adjust_sign((value < 0), forcesign, &signvalue)) uvalue = -(unsigned long long) value; else uvalue = (unsigned long long) value; #ifdef _MSC_VER #pragma warning(pop) #endif /* * SUS: the result of converting 0 with an explicit precision of 0 is no * characters */ if (value == 0 && pointflag && precision == 0) vallen = 0; else { /* make integer string */ do { convert[sizeof(convert) - (++vallen)] = cvt[uvalue % base]; uvalue = uvalue / base; } while (uvalue); } zeropad = Max(0, precision - vallen); padlen = compute_padlen(minlen, vallen + zeropad, leftjust); leading_pad(zpad, signvalue, &padlen, target); if (zeropad > 0) dopr_outchmulti('0', zeropad, target); dostr(convert + sizeof(convert) - vallen, vallen, target); trailing_pad(padlen, target); } static void fmtchar(int value, int leftjust, int minlen, PrintfTarget *target) { int padlen; /* amount to pad */ padlen = compute_padlen(minlen, 1, leftjust); if (padlen > 0) { dopr_outchmulti(' ', padlen, target); padlen = 0; } dopr_outch(value, target); trailing_pad(padlen, target); } static void fmtfloat(double value, char type, int forcesign, int leftjust, int minlen, int zpad, int precision, int pointflag, PrintfTarget *target) { int signvalue = 0; int prec; int vallen; char fmt[8]; char convert[1024]; int zeropadlen = 0; /* amount to pad with zeroes */ int padlen; /* amount to pad with spaces */ /* * We rely on the regular C library's sprintf to do the basic conversion, * then handle padding considerations here. * * The dynamic range of "double" is about 1E+-308 for IEEE math, and not * too wildly more than that with other hardware. In "f" format, sprintf * could therefore generate at most 308 characters to the left of the * decimal point; while we need to allow the precision to get as high as * 308+17 to ensure that we don't truncate significant digits from very * small values. To handle both these extremes, we use a buffer of 1024 * bytes and limit requested precision to 350 digits; this should prevent * buffer overrun even with non-IEEE math. If the original precision * request was more than 350, separately pad with zeroes. * * We handle infinities and NaNs specially to ensure platform-independent * output. */ if (precision < 0) /* cover possible overflow of "accum" */ precision = 0; prec = Min(precision, 350); if (isnan(value)) { strcpy(convert, "NaN"); vallen = 3; /* no zero padding, regardless of precision spec */ } else { /* * Handle sign (NaNs have no sign, so we don't do this in the case * above). "value < 0.0" will not be true for IEEE minus zero, so we * detect that by looking for the case where value equals 0.0 * according to == but not according to memcmp. */ static const double dzero = 0.0; if (adjust_sign((value < 0.0 || (value == 0.0 && memcmp(&value, &dzero, sizeof(double)) != 0)), forcesign, &signvalue)) value = -value; if (isinf(value)) { strcpy(convert, "Infinity"); vallen = 8; /* no zero padding, regardless of precision spec */ } else if (pointflag) { zeropadlen = precision - prec; fmt[0] = '%'; fmt[1] = '.'; fmt[2] = '*'; fmt[3] = type; fmt[4] = '\0'; vallen = sprintf(convert, fmt, prec, value); } else { fmt[0] = '%'; fmt[1] = type; fmt[2] = '\0'; vallen = sprintf(convert, fmt, value); } if (vallen < 0) goto fail; /* * Windows, alone among our supported platforms, likes to emit * three-digit exponent fields even when two digits would do. Hack * such results to look like the way everyone else does it. */ #ifdef WIN32 if (vallen >= 6 && convert[vallen - 5] == 'e' && convert[vallen - 3] == '0') { convert[vallen - 3] = convert[vallen - 2]; convert[vallen - 2] = convert[vallen - 1]; vallen--; } #endif } padlen = compute_padlen(minlen, vallen + zeropadlen, leftjust); leading_pad(zpad, signvalue, &padlen, target); if (zeropadlen > 0) { /* If 'e' or 'E' format, inject zeroes before the exponent */ char *epos = strrchr(convert, 'e'); if (!epos) epos = strrchr(convert, 'E'); if (epos) { /* pad before exponent */ dostr(convert, epos - convert, target); dopr_outchmulti('0', zeropadlen, target); dostr(epos, vallen - (epos - convert), target); } else { /* no exponent, pad after the digits */ dostr(convert, vallen, target); dopr_outchmulti('0', zeropadlen, target); } } else { /* no zero padding, just emit the number as-is */ dostr(convert, vallen, target); } trailing_pad(padlen, target); return; fail: target->failed = true; } /* * Nonstandard entry point to print a double value efficiently. * * This is approximately equivalent to strfromd(), but has an API more * adapted to what float8out() wants. The behavior is like snprintf() * with a format of "%.ng", where n is the specified precision. * However, the target buffer must be nonempty (i.e. count > 0), and * the precision is silently bounded to a sane range. */ #ifdef WIN32 #endif static void dostr(const char *str, int slen, PrintfTarget *target) { /* fast path for common case of slen == 1 */ if (slen == 1) { dopr_outch(*str, target); return; } while (slen > 0) { int avail; if (target->bufend != NULL) avail = target->bufend - target->bufptr; else avail = slen; if (avail <= 0) { /* buffer full, can we dump to stream? */ if (target->stream == NULL) { target->nchars += slen; /* no, lose the data */ return; } flushbuffer(target); continue; } avail = Min(avail, slen); memmove(target->bufptr, str, avail); target->bufptr += avail; str += avail; slen -= avail; } } static void dopr_outch(int c, PrintfTarget *target) { if (target->bufend != NULL && target->bufptr >= target->bufend) { /* buffer full, can we dump to stream? */ if (target->stream == NULL) { target->nchars++; /* no, lose the data */ return; } flushbuffer(target); } *(target->bufptr++) = c; } static void dopr_outchmulti(int c, int slen, PrintfTarget *target) { /* fast path for common case of slen == 1 */ if (slen == 1) { dopr_outch(c, target); return; } while (slen > 0) { int avail; if (target->bufend != NULL) avail = target->bufend - target->bufptr; else avail = slen; if (avail <= 0) { /* buffer full, can we dump to stream? */ if (target->stream == NULL) { target->nchars += slen; /* no, lose the data */ return; } flushbuffer(target); continue; } avail = Min(avail, slen); memset(target->bufptr, c, avail); target->bufptr += avail; slen -= avail; } } static int adjust_sign(int is_negative, int forcesign, int *signvalue) { if (is_negative) { *signvalue = '-'; return true; } else if (forcesign) *signvalue = '+'; return false; } static int compute_padlen(int minlen, int vallen, int leftjust) { int padlen; padlen = minlen - vallen; if (padlen < 0) padlen = 0; if (leftjust) padlen = -padlen; return padlen; } static void leading_pad(int zpad, int signvalue, int *padlen, PrintfTarget *target) { int maxpad; if (*padlen > 0 && zpad) { if (signvalue) { dopr_outch(signvalue, target); --(*padlen); signvalue = 0; } if (*padlen > 0) { dopr_outchmulti(zpad, *padlen, target); *padlen = 0; } } maxpad = (signvalue != 0); if (*padlen > maxpad) { dopr_outchmulti(' ', *padlen - maxpad, target); *padlen = maxpad; } if (signvalue) { dopr_outch(signvalue, target); if (*padlen > 0) --(*padlen); else if (*padlen < 0) ++(*padlen); } } static void trailing_pad(int padlen, PrintfTarget *target) { if (padlen < 0) dopr_outchmulti(' ', -padlen, target); } libpg_query-13-2.1.0/src/postgres/src_port_strerror.c000066400000000000000000000155571413137616400226760ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - pg_strerror_r * - gnuish_strerror_r * - get_errno_symbol *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * strerror.c * Replacements for standard strerror() and strerror_r() functions * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION * src/port/strerror.c * *------------------------------------------------------------------------- */ #include "c.h" /* * Within this file, "strerror" means the platform's function not pg_strerror, * and likewise for "strerror_r" */ #undef strerror #undef strerror_r static char *gnuish_strerror_r(int errnum, char *buf, size_t buflen); static char *get_errno_symbol(int errnum); #ifdef WIN32 static char *win32_socket_strerror(int errnum, char *buf, size_t buflen); #endif /* * A slightly cleaned-up version of strerror() */ /* * A slightly cleaned-up version of strerror_r() */ char * pg_strerror_r(int errnum, char *buf, size_t buflen) { char *str; /* If it's a Windows Winsock error, that needs special handling */ #ifdef WIN32 /* Winsock error code range, per WinError.h */ if (errnum >= 10000 && errnum <= 11999) return win32_socket_strerror(errnum, buf, buflen); #endif /* Try the platform's strerror_r(), or maybe just strerror() */ str = gnuish_strerror_r(errnum, buf, buflen); /* * Some strerror()s return an empty string for out-of-range errno. This * is ANSI C spec compliant, but not exactly useful. Also, we may get * back strings of question marks if libc cannot transcode the message to * the codeset specified by LC_CTYPE. If we get nothing useful, first try * get_errno_symbol(), and if that fails, print the numeric errno. */ if (str == NULL || *str == '\0' || *str == '?') str = get_errno_symbol(errnum); if (str == NULL) { snprintf(buf, buflen, _("operating system error %d"), errnum); str = buf; } return str; } /* * Simple wrapper to emulate GNU strerror_r if what the platform provides is * POSIX. Also, if platform lacks strerror_r altogether, fall back to plain * strerror; it might not be very thread-safe, but tough luck. */ static char * gnuish_strerror_r(int errnum, char *buf, size_t buflen) { #ifdef HAVE_STRERROR_R #ifdef STRERROR_R_INT /* POSIX API */ if (strerror_r(errnum, buf, buflen) == 0) return buf; return NULL; /* let caller deal with failure */ #else /* GNU API */ return strerror_r(errnum, buf, buflen); #endif #else /* !HAVE_STRERROR_R */ char *sbuf = strerror(errnum); if (sbuf == NULL) /* can this still happen anywhere? */ return NULL; /* To minimize thread-unsafety hazard, copy into caller's buffer */ strlcpy(buf, sbuf, buflen); return buf; #endif } /* * Returns a symbol (e.g. "ENOENT") for an errno code. * Returns NULL if the code is unrecognized. */ static char * get_errno_symbol(int errnum) { switch (errnum) { case E2BIG: return "E2BIG"; case EACCES: return "EACCES"; #ifdef EADDRINUSE case EADDRINUSE: return "EADDRINUSE"; #endif #ifdef EADDRNOTAVAIL case EADDRNOTAVAIL: return "EADDRNOTAVAIL"; #endif case EAFNOSUPPORT: return "EAFNOSUPPORT"; #ifdef EAGAIN case EAGAIN: return "EAGAIN"; #endif #ifdef EALREADY case EALREADY: return "EALREADY"; #endif case EBADF: return "EBADF"; #ifdef EBADMSG case EBADMSG: return "EBADMSG"; #endif case EBUSY: return "EBUSY"; case ECHILD: return "ECHILD"; #ifdef ECONNABORTED case ECONNABORTED: return "ECONNABORTED"; #endif case ECONNREFUSED: return "ECONNREFUSED"; #ifdef ECONNRESET case ECONNRESET: return "ECONNRESET"; #endif case EDEADLK: return "EDEADLK"; case EDOM: return "EDOM"; case EEXIST: return "EEXIST"; case EFAULT: return "EFAULT"; case EFBIG: return "EFBIG"; #ifdef EHOSTUNREACH case EHOSTUNREACH: return "EHOSTUNREACH"; #endif case EIDRM: return "EIDRM"; case EINPROGRESS: return "EINPROGRESS"; case EINTR: return "EINTR"; case EINVAL: return "EINVAL"; case EIO: return "EIO"; #ifdef EISCONN case EISCONN: return "EISCONN"; #endif case EISDIR: return "EISDIR"; #ifdef ELOOP case ELOOP: return "ELOOP"; #endif case EMFILE: return "EMFILE"; case EMLINK: return "EMLINK"; case EMSGSIZE: return "EMSGSIZE"; case ENAMETOOLONG: return "ENAMETOOLONG"; case ENFILE: return "ENFILE"; case ENOBUFS: return "ENOBUFS"; case ENODEV: return "ENODEV"; case ENOENT: return "ENOENT"; case ENOEXEC: return "ENOEXEC"; case ENOMEM: return "ENOMEM"; case ENOSPC: return "ENOSPC"; case ENOSYS: return "ENOSYS"; #ifdef ENOTCONN case ENOTCONN: return "ENOTCONN"; #endif case ENOTDIR: return "ENOTDIR"; #if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */ case ENOTEMPTY: return "ENOTEMPTY"; #endif #ifdef ENOTSOCK case ENOTSOCK: return "ENOTSOCK"; #endif #ifdef ENOTSUP case ENOTSUP: return "ENOTSUP"; #endif case ENOTTY: return "ENOTTY"; case ENXIO: return "ENXIO"; #if defined(EOPNOTSUPP) && (!defined(ENOTSUP) || (EOPNOTSUPP != ENOTSUP)) case EOPNOTSUPP: return "EOPNOTSUPP"; #endif #ifdef EOVERFLOW case EOVERFLOW: return "EOVERFLOW"; #endif case EPERM: return "EPERM"; case EPIPE: return "EPIPE"; case EPROTONOSUPPORT: return "EPROTONOSUPPORT"; case ERANGE: return "ERANGE"; #ifdef EROFS case EROFS: return "EROFS"; #endif case ESRCH: return "ESRCH"; #ifdef ETIMEDOUT case ETIMEDOUT: return "ETIMEDOUT"; #endif #ifdef ETXTBSY case ETXTBSY: return "ETXTBSY"; #endif #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) case EWOULDBLOCK: return "EWOULDBLOCK"; #endif case EXDEV: return "EXDEV"; } return NULL; } #ifdef WIN32 /* * Windows' strerror() doesn't know the Winsock codes, so handle them this way */ static char * win32_socket_strerror(int errnum, char *buf, size_t buflen) { static HANDLE handleDLL = INVALID_HANDLE_VALUE; if (handleDLL == INVALID_HANDLE_VALUE) { handleDLL = LoadLibraryEx("netmsg.dll", NULL, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE); if (handleDLL == NULL) { snprintf(buf, buflen, "winsock error %d (could not load netmsg.dll to translate: error code %lu)", errnum, GetLastError()); return buf; } } ZeroMemory(buf, buflen); if (FormatMessage(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_HMODULE, handleDLL, errnum, MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), buf, buflen - 1, NULL) == 0) { /* Failed to get id */ snprintf(buf, buflen, "unrecognized winsock error %d", errnum); } return buf; } #endif /* WIN32 */ libpg_query-13-2.1.0/src/postgres/src_port_strnlen.c000066400000000000000000000017641413137616400224740ustar00rootroot00000000000000/*-------------------------------------------------------------------- * Symbols referenced in this file: * - strnlen *-------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * * strnlen.c * Fallback implementation of strnlen(). * * * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/port/strnlen.c * *------------------------------------------------------------------------- */ #include "c.h" /* * Implementation of posix' strnlen for systems where it's not available. * * Returns the number of characters before a null-byte in the string pointed * to by str, unless there's no null-byte before maxlen. In the latter case * maxlen is returned. */ size_t strnlen(const char *str, size_t maxlen) { const char *p = str; while (maxlen-- > 0 && *p) p++; return p - str; } libpg_query-13-2.1.0/srcdata/000077500000000000000000000000001413137616400157045ustar00rootroot00000000000000libpg_query-13-2.1.0/srcdata/all_known_enums.json000066400000000000000000000022271413137616400217750ustar00rootroot00000000000000[ "OverridingKind", "QuerySource", "SortByDir", "SortByNulls", "A_Expr_Kind", "RoleSpecType", "TableLikeOption", "DefElemAction", "PartitionRangeDatumKind", "RTEKind", "WCOKind", "GroupingSetKind", "CTEMaterialize", "SetOperation", "ObjectType", "DropBehavior", "AlterTableType", "GrantTargetType", "VariableSetKind", "ConstrType", "ImportForeignSchemaType", "RoleStmtType", "FetchDirection", "FunctionParameterMode", "TransactionStmtKind", "ViewCheckOption", "ClusterOption", "DiscardMode", "ReindexObjectType", "AlterTSConfigType", "AlterSubscriptionType", "OnCommitAction", "ParamKind", "CoercionContext", "CoercionForm", "BoolExprType", "SubLinkType", "RowCompareType", "MinMaxOp", "SQLValueFunctionOp", "XmlExprOp", "XmlOptionType", "NullTestType", "BoolTestType", "LockClauseStrength", "LockWaitPolicy", "LockTupleMode", "NodeTag", "CmdType", "JoinType", "AggStrategy", "AggSplit", "SetOpCmd", "SetOpStrategy", "OnConflictAction", "LimitOption", "vartag_external", "VacuumOption", "VacOptTernaryValue", "ScanDirection", "pg_enc", "yytokentype" ]libpg_query-13-2.1.0/srcdata/enum_defs.json000066400000000000000000004630551413137616400205610ustar00rootroot00000000000000{ "nodes/parsenodes": { "OverridingKind": { "values": [ { "comment": "" }, { "name": "OVERRIDING_NOT_SET", "value": 0 }, { "name": "OVERRIDING_USER_VALUE", "value": 1 }, { "name": "OVERRIDING_SYSTEM_VALUE", "value": 2 } ], "comment": "/*-------------------------------------------------------------------------\n *\n * parsenodes.h\n *\t definitions for parse tree nodes\n *\n * Many of the node types used in parsetrees include a \"location\" field.\n * This is a byte (not character) offset in the original source text, to be\n * used for positioning an error cursor when there is an error related to\n * the node. Access to the original source text is needed to make use of\n * the location. At the topmost (statement) level, we also provide a\n * statement length, likewise measured in bytes, for convenience in\n * identifying statement boundaries in multi-statement source strings.\n *\n *\n * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group\n * Portions Copyright (c) 1994, Regents of the University of California\n *\n * src/include/nodes/parsenodes.h\n *\n *-------------------------------------------------------------------------\n */\n" }, "QuerySource": { "values": [ { "comment": "" }, { "name": "QSRC_ORIGINAL", "value": 0, "comment": "/* original parsetree (explicit query) */" }, { "name": "QSRC_PARSER", "value": 1, "comment": "/* added by parse analysis (now unused) */" }, { "name": "QSRC_INSTEAD_RULE", "value": 2, "comment": "/* added by unconditional INSTEAD rule */" }, { "name": "QSRC_QUAL_INSTEAD_RULE", "value": 3, "comment": "/* added by conditional INSTEAD rule */" }, { "name": "QSRC_NON_INSTEAD_RULE", "value": 4, "comment": "/* added by non-INSTEAD rule */" } ], "comment": "/* Possible sources of a Query */\n" }, "SortByDir": { "values": [ { "comment": "" }, { "name": "SORTBY_DEFAULT", "value": 0 }, { "name": "SORTBY_ASC", "value": 1 }, { "name": "SORTBY_DESC", "value": 2 }, { "name": "SORTBY_USING", "value": 3, "comment": "/* not allowed in CREATE INDEX ... */" } ], "comment": "/* Sort ordering options for ORDER BY and CREATE INDEX */\n" }, "SortByNulls": { "values": [ { "comment": "" }, { "name": "SORTBY_NULLS_DEFAULT", "value": 0 }, { "name": "SORTBY_NULLS_FIRST", "value": 1 }, { "name": "SORTBY_NULLS_LAST", "value": 2 } ], "comment": null }, "A_Expr_Kind": { "values": [ { "comment": "" }, { "name": "AEXPR_OP", "value": 0, "comment": "/* normal operator */" }, { "name": "AEXPR_OP_ANY", "value": 1, "comment": "/* scalar op ANY (array) */" }, { "name": "AEXPR_OP_ALL", "value": 2, "comment": "/* scalar op ALL (array) */" }, { "name": "AEXPR_DISTINCT", "value": 3, "comment": "/* IS DISTINCT FROM - name must be \"=\" */" }, { "name": "AEXPR_NOT_DISTINCT", "value": 4, "comment": "/* IS NOT DISTINCT FROM - name must be \"=\" */" }, { "name": "AEXPR_NULLIF", "value": 5, "comment": "/* NULLIF - name must be \"=\" */" }, { "name": "AEXPR_OF", "value": 6, "comment": "/* IS [NOT] OF - name must be \"=\" or \"<>\" */" }, { "name": "AEXPR_IN", "value": 7, "comment": "/* [NOT] IN - name must be \"=\" or \"<>\" */" }, { "name": "AEXPR_LIKE", "value": 8, "comment": "/* [NOT] LIKE - name must be \"~~\" or \"!~~\" */" }, { "name": "AEXPR_ILIKE", "value": 9, "comment": "/* [NOT] ILIKE - name must be \"~~*\" or \"!~~*\" */" }, { "name": "AEXPR_SIMILAR", "value": 10, "comment": "/* [NOT] SIMILAR - name must be \"~\" or \"!~\" */" }, { "name": "AEXPR_BETWEEN", "value": 11, "comment": "/* name must be \"BETWEEN\" */" }, { "name": "AEXPR_NOT_BETWEEN", "value": 12, "comment": "/* name must be \"NOT BETWEEN\" */" }, { "name": "AEXPR_BETWEEN_SYM", "value": 13, "comment": "/* name must be \"BETWEEN SYMMETRIC\" */" }, { "name": "AEXPR_NOT_BETWEEN_SYM", "value": 14, "comment": "/* name must be \"NOT BETWEEN SYMMETRIC\" */" }, { "name": "AEXPR_PAREN", "value": 15, "comment": "/* nameless dummy node for parentheses */" } ], "comment": "/*\n * A_Expr - infix, prefix, and postfix expressions\n */\n" }, "RoleSpecType": { "values": [ { "comment": "" }, { "name": "ROLESPEC_CSTRING", "value": 0, "comment": "/* role name is stored as a C string */" }, { "name": "ROLESPEC_CURRENT_USER", "value": 1, "comment": "/* role spec is CURRENT_USER */" }, { "name": "ROLESPEC_SESSION_USER", "value": 2, "comment": "/* role spec is SESSION_USER */" }, { "name": "ROLESPEC_PUBLIC", "value": 3, "comment": "/* role name is \"public\" */" } ], "comment": "/*\n * RoleSpec - a role name or one of a few special values.\n */\n" }, "TableLikeOption": { "values": [ { "comment": "" }, { "name": "CREATE_TABLE_LIKE_COMMENTS", "value": 1 }, { "name": "CREATE_TABLE_LIKE_CONSTRAINTS", "value": 2 }, { "name": "CREATE_TABLE_LIKE_DEFAULTS", "value": 4 }, { "name": "CREATE_TABLE_LIKE_GENERATED", "value": 8 }, { "name": "CREATE_TABLE_LIKE_IDENTITY", "value": 16 }, { "name": "CREATE_TABLE_LIKE_INDEXES", "value": 32 }, { "name": "CREATE_TABLE_LIKE_STATISTICS", "value": 64 }, { "name": "CREATE_TABLE_LIKE_STORAGE", "value": 128 }, { "name": "CREATE_TABLE_LIKE_ALL", "value": 2147483647 } ], "comment": null }, "DefElemAction": { "values": [ { "comment": "" }, { "name": "DEFELEM_UNSPEC", "value": 0, "comment": "/* no action given */" }, { "name": "DEFELEM_SET", "value": 1 }, { "name": "DEFELEM_ADD", "value": 2 }, { "name": "DEFELEM_DROP", "value": 3 } ], "comment": "/*\n * DefElem - a generic \"name = value\" option definition\n *\n * In some contexts the name can be qualified. Also, certain SQL commands\n * allow a SET/ADD/DROP action to be attached to option settings, so it's\n * convenient to carry a field for that too. (Note: currently, it is our\n * practice that the grammar allows namespace and action only in statements\n * where they are relevant; C code can just ignore those fields in other\n * statements.)\n */\n" }, "PartitionRangeDatumKind": { "values": [ { "comment": "" }, { "name": "PARTITION_RANGE_DATUM_MINVALUE", "value": 0 }, { "name": "PARTITION_RANGE_DATUM_VALUE", "value": 0, "comment": "/* a specific (bounded) value */" }, { "name": "PARTITION_RANGE_DATUM_MAXVALUE", "value": 1, "comment": "/* greater than any other value */" } ], "comment": "/*\n * PartitionRangeDatum - one of the values in a range partition bound\n *\n * This can be MINVALUE, MAXVALUE or a specific bounded value.\n */\n" }, "RTEKind": { "values": [ { "comment": "" }, { "name": "RTE_RELATION", "value": 0, "comment": "/* ordinary relation reference */" }, { "name": "RTE_SUBQUERY", "value": 1, "comment": "/* subquery in FROM */" }, { "name": "RTE_JOIN", "value": 2, "comment": "/* join */" }, { "name": "RTE_FUNCTION", "value": 3, "comment": "/* function in FROM */" }, { "name": "RTE_TABLEFUNC", "value": 4, "comment": "/* TableFunc(.., column list) */" }, { "name": "RTE_VALUES", "value": 5, "comment": "/* VALUES (), (), ... */" }, { "name": "RTE_CTE", "value": 6, "comment": "/* common table expr (WITH list element) */" }, { "name": "RTE_NAMEDTUPLESTORE", "value": 7, "comment": "/* tuplestore, e.g. for AFTER triggers */" }, { "name": "RTE_RESULT", "value": 8, "comment": "/* RTE represents an empty FROM clause; such\n\t\t\t\t\t\t\t\t * RTEs are added by the planner, they're not\n\t\t\t\t\t\t\t\t * present during parsing or rewriting */\n" } ], "comment": "/*--------------------\n * RangeTblEntry -\n *\t A range table is a List of RangeTblEntry nodes.\n *\n *\t A range table entry may represent a plain relation, a sub-select in\n *\t FROM, or the result of a JOIN clause. (Only explicit JOIN syntax\n *\t produces an RTE, not the implicit join resulting from multiple FROM\n *\t items. This is because we only need the RTE to deal with SQL features\n *\t like outer joins and join-output-column aliasing.) Other special\n *\t RTE types also exist, as indicated by RTEKind.\n *\n *\t Note that we consider RTE_RELATION to cover anything that has a pg_class\n *\t entry. relkind distinguishes the sub-cases.\n *\n *\t alias is an Alias node representing the AS alias-clause attached to the\n *\t FROM expression, or NULL if no clause.\n *\n *\t eref is the table reference name and column reference names (either\n *\t real or aliases). Note that system columns (OID etc) are not included\n *\t in the column list.\n *\t eref->aliasname is required to be present, and should generally be used\n *\t to identify the RTE for error messages etc.\n *\n *\t In RELATION RTEs, the colnames in both alias and eref are indexed by\n *\t physical attribute number; this means there must be colname entries for\n *\t dropped columns. When building an RTE we insert empty strings (\"\") for\n *\t dropped columns. Note however that a stored rule may have nonempty\n *\t colnames for columns dropped since the rule was created (and for that\n *\t matter the colnames might be out of date due to column renamings).\n *\t The same comments apply to FUNCTION RTEs when a function's return type\n *\t is a named composite type.\n *\n *\t In JOIN RTEs, the colnames in both alias and eref are one-to-one with\n *\t joinaliasvars entries. A JOIN RTE will omit columns of its inputs when\n *\t those columns are known to be dropped at parse time. Again, however,\n *\t a stored rule might contain entries for columns dropped since the rule\n *\t was created. (This is only possible for columns not actually referenced\n *\t in the rule.) When loading a stored rule, we replace the joinaliasvars\n *\t items for any such columns with null pointers. (We can't simply delete\n *\t them from the joinaliasvars list, because that would affect the attnums\n *\t of Vars referencing the rest of the list.)\n *\n *\t inh is true for relation references that should be expanded to include\n *\t inheritance children, if the rel has any. This *must* be false for\n *\t RTEs other than RTE_RELATION entries.\n *\n *\t inFromCl marks those range variables that are listed in the FROM clause.\n *\t It's false for RTEs that are added to a query behind the scenes, such\n *\t as the NEW and OLD variables for a rule, or the subqueries of a UNION.\n *\t This flag is not used anymore during parsing, since the parser now uses\n *\t a separate \"namespace\" data structure to control visibility, but it is\n *\t needed by ruleutils.c to determine whether RTEs should be shown in\n *\t decompiled queries.\n *\n *\t requiredPerms and checkAsUser specify run-time access permissions\n *\t checks to be performed at query startup. The user must have *all*\n *\t of the permissions that are OR'd together in requiredPerms (zero\n *\t indicates no permissions checking). If checkAsUser is not zero,\n *\t then do the permissions checks using the access rights of that user,\n *\t not the current effective user ID. (This allows rules to act as\n *\t setuid gateways.) Permissions checks only apply to RELATION RTEs.\n *\n *\t For SELECT/INSERT/UPDATE permissions, if the user doesn't have\n *\t table-wide permissions then it is sufficient to have the permissions\n *\t on all columns identified in selectedCols (for SELECT) and/or\n *\t insertedCols and/or updatedCols (INSERT with ON CONFLICT DO UPDATE may\n *\t have all 3). selectedCols, insertedCols and updatedCols are bitmapsets,\n *\t which cannot have negative integer members, so we subtract\n *\t FirstLowInvalidHeapAttributeNumber from column numbers before storing\n *\t them in these fields. A whole-row Var reference is represented by\n *\t setting the bit for InvalidAttrNumber.\n *\n *\t updatedCols is also used in some other places, for example, to determine\n *\t which triggers to fire and in FDWs to know which changed columns they\n *\t need to ship off.\n *\n *\t Generated columns that are caused to be updated by an update to a base\n *\t column are listed in extraUpdatedCols. This is not considered for\n *\t permission checking, but it is useful in those places that want to know\n *\t the full set of columns being updated as opposed to only the ones the\n *\t user explicitly mentioned in the query. (There is currently no need for\n *\t an extraInsertedCols, but it could exist.) Note that extraUpdatedCols\n *\t is populated during query rewrite, NOT in the parser, since generated\n *\t columns could be added after a rule has been parsed and stored.\n *\n *\t securityQuals is a list of security barrier quals (boolean expressions),\n *\t to be tested in the listed order before returning a row from the\n *\t relation. It is always NIL in parser output. Entries are added by the\n *\t rewriter to implement security-barrier views and/or row-level security.\n *\t Note that the planner turns each boolean expression into an implicitly\n *\t AND'ed sublist, as is its usual habit with qualification expressions.\n *--------------------\n */\n" }, "WCOKind": { "values": [ { "comment": "" }, { "name": "WCO_VIEW_CHECK", "value": 0, "comment": "/* WCO on an auto-updatable view */" }, { "name": "WCO_RLS_INSERT_CHECK", "value": 1, "comment": "/* RLS INSERT WITH CHECK policy */" }, { "name": "WCO_RLS_UPDATE_CHECK", "value": 2, "comment": "/* RLS UPDATE WITH CHECK policy */" }, { "name": "WCO_RLS_CONFLICT_CHECK", "value": 3, "comment": "/* RLS ON CONFLICT DO UPDATE USING policy */" } ], "comment": "/*\n * WithCheckOption -\n *\t\trepresentation of WITH CHECK OPTION checks to be applied to new tuples\n *\t\twhen inserting/updating an auto-updatable view, or RLS WITH CHECK\n *\t\tpolicies to be applied when inserting/updating a relation with RLS.\n */\n" }, "GroupingSetKind": { "values": [ { "comment": "" }, { "name": "GROUPING_SET_EMPTY", "value": 0 }, { "name": "GROUPING_SET_SIMPLE", "value": 1 }, { "name": "GROUPING_SET_ROLLUP", "value": 2 }, { "name": "GROUPING_SET_CUBE", "value": 3 }, { "name": "GROUPING_SET_SETS", "value": 4 } ], "comment": "/*\n * GroupingSet -\n *\t\trepresentation of CUBE, ROLLUP and GROUPING SETS clauses\n *\n * In a Query with grouping sets, the groupClause contains a flat list of\n * SortGroupClause nodes for each distinct expression used. The actual\n * structure of the GROUP BY clause is given by the groupingSets tree.\n *\n * In the raw parser output, GroupingSet nodes (of all types except SIMPLE\n * which is not used) are potentially mixed in with the expressions in the\n * groupClause of the SelectStmt. (An expression can't contain a GroupingSet,\n * but a list may mix GroupingSet and expression nodes.) At this stage, the\n * content of each node is a list of expressions, some of which may be RowExprs\n * which represent sublists rather than actual row constructors, and nested\n * GroupingSet nodes where legal in the grammar. The structure directly\n * reflects the query syntax.\n *\n * In parse analysis, the transformed expressions are used to build the tlist\n * and groupClause list (of SortGroupClause nodes), and the groupingSets tree\n * is eventually reduced to a fixed format:\n *\n * EMPTY nodes represent (), and obviously have no content\n *\n * SIMPLE nodes represent a list of one or more expressions to be treated as an\n * atom by the enclosing structure; the content is an integer list of\n * ressortgroupref values (see SortGroupClause)\n *\n * CUBE and ROLLUP nodes contain a list of one or more SIMPLE nodes.\n *\n * SETS nodes contain a list of EMPTY, SIMPLE, CUBE or ROLLUP nodes, but after\n * parse analysis they cannot contain more SETS nodes; enough of the syntactic\n * transforms of the spec have been applied that we no longer have arbitrarily\n * deep nesting (though we still preserve the use of cube/rollup).\n *\n * Note that if the groupingSets tree contains no SIMPLE nodes (only EMPTY\n * nodes at the leaves), then the groupClause will be empty, but this is still\n * an aggregation query (similar to using aggs or HAVING without GROUP BY).\n *\n * As an example, the following clause:\n *\n * GROUP BY GROUPING SETS ((a,b), CUBE(c,(d,e)))\n *\n * looks like this after raw parsing:\n *\n * SETS( RowExpr(a,b) , CUBE( c, RowExpr(d,e) ) )\n *\n * and parse analysis converts it to:\n *\n * SETS( SIMPLE(1,2), CUBE( SIMPLE(3), SIMPLE(4,5) ) )\n */\n" }, "CTEMaterialize": { "values": [ { "comment": "" }, { "name": "CTEMaterializeDefault", "value": 0, "comment": "/* no option specified */" }, { "name": "CTEMaterializeAlways", "value": 1, "comment": "/* MATERIALIZED */" }, { "name": "CTEMaterializeNever", "value": 2, "comment": "/* NOT MATERIALIZED */" } ], "comment": "/*\n * CommonTableExpr -\n *\t representation of WITH list element\n *\n * We don't currently support the SEARCH or CYCLE clause.\n */\n" }, "SetOperation": { "values": [ { "comment": "" }, { "name": "SETOP_NONE", "value": 0 }, { "name": "SETOP_UNION", "value": 1 }, { "name": "SETOP_INTERSECT", "value": 2 }, { "name": "SETOP_EXCEPT", "value": 3 } ], "comment": "/* ----------------------\n *\t\tSelect Statement\n *\n * A \"simple\" SELECT is represented in the output of gram.y by a single\n * SelectStmt node; so is a VALUES construct. A query containing set\n * operators (UNION, INTERSECT, EXCEPT) is represented by a tree of SelectStmt\n * nodes, in which the leaf nodes are component SELECTs and the internal nodes\n * represent UNION, INTERSECT, or EXCEPT operators. Using the same node\n * type for both leaf and internal nodes allows gram.y to stick ORDER BY,\n * LIMIT, etc, clause values into a SELECT statement without worrying\n * whether it is a simple or compound SELECT.\n * ----------------------\n */\n" }, "ObjectType": { "values": [ { "comment": "" }, { "name": "OBJECT_ACCESS_METHOD", "value": 0 }, { "name": "OBJECT_AGGREGATE", "value": 1 }, { "name": "OBJECT_AMOP", "value": 2 }, { "name": "OBJECT_AMPROC", "value": 3 }, { "name": "OBJECT_ATTRIBUTE", "value": 4, "comment": "/* type's attribute, when distinct from column */" }, { "name": "OBJECT_CAST", "value": 5 }, { "name": "OBJECT_COLUMN", "value": 6 }, { "name": "OBJECT_COLLATION", "value": 7 }, { "name": "OBJECT_CONVERSION", "value": 8 }, { "name": "OBJECT_DATABASE", "value": 9 }, { "name": "OBJECT_DEFAULT", "value": 10 }, { "name": "OBJECT_DEFACL", "value": 11 }, { "name": "OBJECT_DOMAIN", "value": 12 }, { "name": "OBJECT_DOMCONSTRAINT", "value": 13 }, { "name": "OBJECT_EVENT_TRIGGER", "value": 14 }, { "name": "OBJECT_EXTENSION", "value": 15 }, { "name": "OBJECT_FDW", "value": 16 }, { "name": "OBJECT_FOREIGN_SERVER", "value": 17 }, { "name": "OBJECT_FOREIGN_TABLE", "value": 18 }, { "name": "OBJECT_FUNCTION", "value": 19 }, { "name": "OBJECT_INDEX", "value": 20 }, { "name": "OBJECT_LANGUAGE", "value": 21 }, { "name": "OBJECT_LARGEOBJECT", "value": 22 }, { "name": "OBJECT_MATVIEW", "value": 23 }, { "name": "OBJECT_OPCLASS", "value": 24 }, { "name": "OBJECT_OPERATOR", "value": 25 }, { "name": "OBJECT_OPFAMILY", "value": 26 }, { "name": "OBJECT_POLICY", "value": 27 }, { "name": "OBJECT_PROCEDURE", "value": 28 }, { "name": "OBJECT_PUBLICATION", "value": 29 }, { "name": "OBJECT_PUBLICATION_REL", "value": 30 }, { "name": "OBJECT_ROLE", "value": 31 }, { "name": "OBJECT_ROUTINE", "value": 32 }, { "name": "OBJECT_RULE", "value": 33 }, { "name": "OBJECT_SCHEMA", "value": 34 }, { "name": "OBJECT_SEQUENCE", "value": 35 }, { "name": "OBJECT_SUBSCRIPTION", "value": 36 }, { "name": "OBJECT_STATISTIC_EXT", "value": 37 }, { "name": "OBJECT_TABCONSTRAINT", "value": 38 }, { "name": "OBJECT_TABLE", "value": 39 }, { "name": "OBJECT_TABLESPACE", "value": 40 }, { "name": "OBJECT_TRANSFORM", "value": 41 }, { "name": "OBJECT_TRIGGER", "value": 42 }, { "name": "OBJECT_TSCONFIGURATION", "value": 43 }, { "name": "OBJECT_TSDICTIONARY", "value": 44 }, { "name": "OBJECT_TSPARSER", "value": 45 }, { "name": "OBJECT_TSTEMPLATE", "value": 46 }, { "name": "OBJECT_TYPE", "value": 47 }, { "name": "OBJECT_USER_MAPPING", "value": 48 }, { "name": "OBJECT_VIEW", "value": 49 } ], "comment": "/*\n * When a command can act on several kinds of objects with only one\n * parse structure required, use these constants to designate the\n * object type. Note that commands typically don't support all the types.\n */\n" }, "DropBehavior": { "values": [ { "comment": "" }, { "name": "DROP_RESTRICT", "value": 0, "comment": "/* drop fails if any dependent objects */" }, { "name": "DROP_CASCADE", "value": 1, "comment": "/* remove dependent objects too */" } ], "comment": null }, "AlterTableType": { "values": [ { "comment": "" }, { "name": "AT_AddColumn", "value": 0, "comment": "/* add column */" }, { "name": "AT_AddColumnRecurse", "value": 1, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_AddColumnToView", "value": 2, "comment": "/* implicitly via CREATE OR REPLACE VIEW */" }, { "name": "AT_ColumnDefault", "value": 3, "comment": "/* alter column default */" }, { "name": "AT_CookedColumnDefault", "value": 4, "comment": "/* add a pre-cooked column default */" }, { "name": "AT_DropNotNull", "value": 5, "comment": "/* alter column drop not null */" }, { "name": "AT_SetNotNull", "value": 6, "comment": "/* alter column set not null */" }, { "name": "AT_DropExpression", "value": 7, "comment": "/* alter column drop expression */" }, { "name": "AT_CheckNotNull", "value": 8, "comment": "/* check column is already marked not null */" }, { "name": "AT_SetStatistics", "value": 9, "comment": "/* alter column set statistics */" }, { "name": "AT_SetOptions", "value": 10, "comment": "/* alter column set ( options ) */" }, { "name": "AT_ResetOptions", "value": 11, "comment": "/* alter column reset ( options ) */" }, { "name": "AT_SetStorage", "value": 12, "comment": "/* alter column set storage */" }, { "name": "AT_DropColumn", "value": 13, "comment": "/* drop column */" }, { "name": "AT_DropColumnRecurse", "value": 14, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_AddIndex", "value": 15, "comment": "/* add index */" }, { "name": "AT_ReAddIndex", "value": 16, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_AddConstraint", "value": 17, "comment": "/* add constraint */" }, { "name": "AT_AddConstraintRecurse", "value": 18, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_ReAddConstraint", "value": 19, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_ReAddDomainConstraint", "value": 20, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_AlterConstraint", "value": 21, "comment": "/* alter constraint */" }, { "name": "AT_ValidateConstraint", "value": 22, "comment": "/* validate constraint */" }, { "name": "AT_ValidateConstraintRecurse", "value": 23, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_AddIndexConstraint", "value": 24, "comment": "/* add constraint using existing index */" }, { "name": "AT_DropConstraint", "value": 25, "comment": "/* drop constraint */" }, { "name": "AT_DropConstraintRecurse", "value": 26, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_ReAddComment", "value": 27, "comment": "/* internal to commands/tablecmds.c */" }, { "name": "AT_AlterColumnType", "value": 28, "comment": "/* alter column type */" }, { "name": "AT_AlterColumnGenericOptions", "value": 29, "comment": "/* alter column OPTIONS (...) */" }, { "name": "AT_ChangeOwner", "value": 30, "comment": "/* change owner */" }, { "name": "AT_ClusterOn", "value": 31, "comment": "/* CLUSTER ON */" }, { "name": "AT_DropCluster", "value": 32, "comment": "/* SET WITHOUT CLUSTER */" }, { "name": "AT_SetLogged", "value": 33, "comment": "/* SET LOGGED */" }, { "name": "AT_SetUnLogged", "value": 34, "comment": "/* SET UNLOGGED */" }, { "name": "AT_DropOids", "value": 35, "comment": "/* SET WITHOUT OIDS */" }, { "name": "AT_SetTableSpace", "value": 36, "comment": "/* SET TABLESPACE */" }, { "name": "AT_SetRelOptions", "value": 37, "comment": "/* SET (...) -- AM specific parameters */" }, { "name": "AT_ResetRelOptions", "value": 38, "comment": "/* RESET (...) -- AM specific parameters */" }, { "name": "AT_ReplaceRelOptions", "value": 39, "comment": "/* replace reloption list in its entirety */" }, { "name": "AT_EnableTrig", "value": 40, "comment": "/* ENABLE TRIGGER name */" }, { "name": "AT_EnableAlwaysTrig", "value": 41, "comment": "/* ENABLE ALWAYS TRIGGER name */" }, { "name": "AT_EnableReplicaTrig", "value": 42, "comment": "/* ENABLE REPLICA TRIGGER name */" }, { "name": "AT_DisableTrig", "value": 43, "comment": "/* DISABLE TRIGGER name */" }, { "name": "AT_EnableTrigAll", "value": 44, "comment": "/* ENABLE TRIGGER ALL */" }, { "name": "AT_DisableTrigAll", "value": 45, "comment": "/* DISABLE TRIGGER ALL */" }, { "name": "AT_EnableTrigUser", "value": 46, "comment": "/* ENABLE TRIGGER USER */" }, { "name": "AT_DisableTrigUser", "value": 47, "comment": "/* DISABLE TRIGGER USER */" }, { "name": "AT_EnableRule", "value": 48, "comment": "/* ENABLE RULE name */" }, { "name": "AT_EnableAlwaysRule", "value": 49, "comment": "/* ENABLE ALWAYS RULE name */" }, { "name": "AT_EnableReplicaRule", "value": 50, "comment": "/* ENABLE REPLICA RULE name */" }, { "name": "AT_DisableRule", "value": 51, "comment": "/* DISABLE RULE name */" }, { "name": "AT_AddInherit", "value": 52, "comment": "/* INHERIT parent */" }, { "name": "AT_DropInherit", "value": 53, "comment": "/* NO INHERIT parent */" }, { "name": "AT_AddOf", "value": 54, "comment": "/* OF */" }, { "name": "AT_DropOf", "value": 55, "comment": "/* NOT OF */" }, { "name": "AT_ReplicaIdentity", "value": 56, "comment": "/* REPLICA IDENTITY */" }, { "name": "AT_EnableRowSecurity", "value": 57, "comment": "/* ENABLE ROW SECURITY */" }, { "name": "AT_DisableRowSecurity", "value": 58, "comment": "/* DISABLE ROW SECURITY */" }, { "name": "AT_ForceRowSecurity", "value": 59, "comment": "/* FORCE ROW SECURITY */" }, { "name": "AT_NoForceRowSecurity", "value": 60, "comment": "/* NO FORCE ROW SECURITY */" }, { "name": "AT_GenericOptions", "value": 61, "comment": "/* OPTIONS (...) */" }, { "name": "AT_AttachPartition", "value": 62, "comment": "/* ATTACH PARTITION */" }, { "name": "AT_DetachPartition", "value": 63, "comment": "/* DETACH PARTITION */" }, { "name": "AT_AddIdentity", "value": 64, "comment": "/* ADD IDENTITY */" }, { "name": "AT_SetIdentity", "value": 65, "comment": "/* SET identity column options */" }, { "name": "AT_DropIdentity", "value": 66, "comment": "/* DROP IDENTITY */" } ], "comment": null }, "GrantTargetType": { "values": [ { "comment": "" }, { "name": "ACL_TARGET_OBJECT", "value": 0, "comment": "/* grant on specific named object(s) */" }, { "name": "ACL_TARGET_ALL_IN_SCHEMA", "value": 1, "comment": "/* grant on all objects in given schema(s) */" }, { "name": "ACL_TARGET_DEFAULTS", "value": 2, "comment": "/* ALTER DEFAULT PRIVILEGES */" } ], "comment": "/* ----------------------\n *\t\tGrant|Revoke Statement\n * ----------------------\n */\n" }, "VariableSetKind": { "values": [ { "comment": "" }, { "name": "VAR_SET_VALUE", "value": 0, "comment": "/* SET var = value */" }, { "name": "VAR_SET_DEFAULT", "value": 1, "comment": "/* SET var TO DEFAULT */" }, { "name": "VAR_SET_CURRENT", "value": 2, "comment": "/* SET var FROM CURRENT */" }, { "name": "VAR_SET_MULTI", "value": 3, "comment": "/* special case for SET TRANSACTION ... */" }, { "name": "VAR_RESET", "value": 4, "comment": "/* RESET var */" }, { "name": "VAR_RESET_ALL", "value": 5, "comment": "/* RESET ALL */" } ], "comment": "/* ----------------------\n * SET Statement (includes RESET)\n *\n * \"SET var TO DEFAULT\" and \"RESET var\" are semantically equivalent, but we\n * preserve the distinction in VariableSetKind for CreateCommandTag().\n * ----------------------\n */\n" }, "ConstrType": { "values": [ { "comment": "" }, { "name": "CONSTR_NULL", "value": 0, "comment": "/* not standard SQL, but a lot of people\n\t\t\t\t\t\t\t\t * expect it */\n" }, { "name": "CONSTR_NOTNULL", "value": 1 }, { "name": "CONSTR_DEFAULT", "value": 2 }, { "name": "CONSTR_IDENTITY", "value": 3 }, { "name": "CONSTR_GENERATED", "value": 4 }, { "name": "CONSTR_CHECK", "value": 5 }, { "name": "CONSTR_PRIMARY", "value": 6 }, { "name": "CONSTR_UNIQUE", "value": 7 }, { "name": "CONSTR_EXCLUSION", "value": 8 }, { "name": "CONSTR_FOREIGN", "value": 9 }, { "name": "CONSTR_ATTR_DEFERRABLE", "value": 10, "comment": "/* attributes for previous constraint node */" }, { "name": "CONSTR_ATTR_NOT_DEFERRABLE", "value": 11 }, { "name": "CONSTR_ATTR_DEFERRED", "value": 12 }, { "name": "CONSTR_ATTR_IMMEDIATE", "value": 13 } ], "comment": "/* ----------\n * Definitions for constraints in CreateStmt\n *\n * Note that column defaults are treated as a type of constraint,\n * even though that's a bit odd semantically.\n *\n * For constraints that use expressions (CONSTR_CHECK, CONSTR_DEFAULT)\n * we may have the expression in either \"raw\" form (an untransformed\n * parse tree) or \"cooked\" form (the nodeToString representation of\n * an executable expression tree), depending on how this Constraint\n * node was created (by parsing, or by inheritance from an existing\n * relation). We should never have both in the same node!\n *\n * FKCONSTR_ACTION_xxx values are stored into pg_constraint.confupdtype\n * and pg_constraint.confdeltype columns; FKCONSTR_MATCH_xxx values are\n * stored into pg_constraint.confmatchtype. Changing the code values may\n * require an initdb!\n *\n * If skip_validation is true then we skip checking that the existing rows\n * in the table satisfy the constraint, and just install the catalog entries\n * for the constraint. A new FK constraint is marked as valid iff\n * initially_valid is true. (Usually skip_validation and initially_valid\n * are inverses, but we can set both true if the table is known empty.)\n *\n * Constraint attributes (DEFERRABLE etc) are initially represented as\n * separate Constraint nodes for simplicity of parsing. parse_utilcmd.c makes\n * a pass through the constraints list to insert the info into the appropriate\n * Constraint node.\n * ----------\n */\n" }, "ImportForeignSchemaType": { "values": [ { "comment": "" }, { "name": "FDW_IMPORT_SCHEMA_ALL", "value": 0, "comment": "/* all relations wanted */" }, { "name": "FDW_IMPORT_SCHEMA_LIMIT_TO", "value": 1, "comment": "/* include only listed tables in import */" }, { "name": "FDW_IMPORT_SCHEMA_EXCEPT", "value": 2, "comment": "/* exclude listed tables from import */" } ], "comment": "/* ----------------------\n *\t\tImport Foreign Schema Statement\n * ----------------------\n */\n" }, "RoleStmtType": { "values": [ { "comment": "" }, { "name": "ROLESTMT_ROLE", "value": 0 }, { "name": "ROLESTMT_USER", "value": 1 }, { "name": "ROLESTMT_GROUP", "value": 2 } ], "comment": "/* ----------------------\n *\tCreate/Alter/Drop Role Statements\n *\n * Note: these node types are also used for the backwards-compatible\n * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases\n * there's really no need to distinguish what the original spelling was,\n * but for CREATE we mark the type because the defaults vary.\n * ----------------------\n */\n" }, "FetchDirection": { "values": [ { "comment": "" }, { "comment": "\t/* for these, howMany is how many rows to fetch; FETCH_ALL means ALL */\n" }, { "name": "FETCH_FORWARD", "value": 0 }, { "name": "FETCH_BACKWARD", "value": 1 }, { "comment": "\t/* for these, howMany indicates a position; only one row is fetched */\n" }, { "name": "FETCH_ABSOLUTE", "value": 2 }, { "name": "FETCH_RELATIVE", "value": 3 } ], "comment": "/* ----------------------\n *\t\tFetch Statement (also Move)\n * ----------------------\n */\n" }, "FunctionParameterMode": { "values": [ { "comment": "" }, { "comment": "\t/* the assigned enum values appear in pg_proc, don't change 'em! */\n" }, { "name": "FUNC_PARAM_IN", "value": 105, "comment": "/* input only */" }, { "name": "FUNC_PARAM_OUT", "value": 111, "comment": "/* output only */" }, { "name": "FUNC_PARAM_INOUT", "value": 98, "comment": "/* both */" }, { "name": "FUNC_PARAM_VARIADIC", "value": 118, "comment": "/* variadic (always input) */" }, { "name": "FUNC_PARAM_TABLE", "value": 116, "comment": "/* table function output column */" } ], "comment": null }, "TransactionStmtKind": { "values": [ { "comment": "" }, { "name": "TRANS_STMT_BEGIN", "value": 0 }, { "name": "TRANS_STMT_START", "value": 1, "comment": "/* semantically identical to BEGIN */" }, { "name": "TRANS_STMT_COMMIT", "value": 2 }, { "name": "TRANS_STMT_ROLLBACK", "value": 3 }, { "name": "TRANS_STMT_SAVEPOINT", "value": 4 }, { "name": "TRANS_STMT_RELEASE", "value": 5 }, { "name": "TRANS_STMT_ROLLBACK_TO", "value": 6 }, { "name": "TRANS_STMT_PREPARE", "value": 7 }, { "name": "TRANS_STMT_COMMIT_PREPARED", "value": 8 }, { "name": "TRANS_STMT_ROLLBACK_PREPARED", "value": 9 } ], "comment": "/* ----------------------\n *\t\t{Begin|Commit|Rollback} Transaction Statement\n * ----------------------\n */\n" }, "ViewCheckOption": { "values": [ { "comment": "" }, { "name": "NO_CHECK_OPTION", "value": 0 }, { "name": "LOCAL_CHECK_OPTION", "value": 1 }, { "name": "CASCADED_CHECK_OPTION", "value": 2 } ], "comment": "/* ----------------------\n *\t\tCreate View Statement\n * ----------------------\n */\n" }, "ClusterOption": { "values": [ { "comment": "" }, { "name": "CLUOPT_RECHECK", "value": 1, "comment": "/* recheck relation state */" }, { "name": "CLUOPT_VERBOSE", "value": 2, "comment": "/* print progress info */" } ], "comment": "/* ----------------------\n *\t\tCluster Statement (support pbrown's cluster index implementation)\n * ----------------------\n */\n" }, "DiscardMode": { "values": [ { "comment": "" }, { "name": "DISCARD_ALL", "value": 0 }, { "name": "DISCARD_PLANS", "value": 1 }, { "name": "DISCARD_SEQUENCES", "value": 2 }, { "name": "DISCARD_TEMP", "value": 3 } ], "comment": "/* ----------------------\n * Discard Statement\n * ----------------------\n */\n" }, "ReindexObjectType": { "values": [ { "comment": "" }, { "name": "REINDEX_OBJECT_INDEX", "value": 0, "comment": "/* index */" }, { "name": "REINDEX_OBJECT_TABLE", "value": 1, "comment": "/* table or materialized view */" }, { "name": "REINDEX_OBJECT_SCHEMA", "value": 2, "comment": "/* schema */" }, { "name": "REINDEX_OBJECT_SYSTEM", "value": 3, "comment": "/* system catalogs */" }, { "name": "REINDEX_OBJECT_DATABASE", "value": 4, "comment": "/* database */" } ], "comment": "/* Reindex options */\n" }, "AlterTSConfigType": { "values": [ { "comment": "" }, { "name": "ALTER_TSCONFIG_ADD_MAPPING", "value": 0 }, { "name": "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN", "value": 1 }, { "name": "ALTER_TSCONFIG_REPLACE_DICT", "value": 2 }, { "name": "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN", "value": 3 }, { "name": "ALTER_TSCONFIG_DROP_MAPPING", "value": 4 } ], "comment": "/*\n * TS Configuration stmts: DefineStmt, RenameStmt and DropStmt are default\n */\n" }, "AlterSubscriptionType": { "values": [ { "comment": "" }, { "name": "ALTER_SUBSCRIPTION_OPTIONS", "value": 0 }, { "name": "ALTER_SUBSCRIPTION_CONNECTION", "value": 1 }, { "name": "ALTER_SUBSCRIPTION_PUBLICATION", "value": 2 }, { "name": "ALTER_SUBSCRIPTION_REFRESH", "value": 3 }, { "name": "ALTER_SUBSCRIPTION_ENABLED", "value": 4 } ], "comment": null } }, "nodes/primnodes": { "OnCommitAction": { "values": [ { "comment": "" }, { "name": "ONCOMMIT_NOOP", "value": 0, "comment": "/* No ON COMMIT clause (do nothing) */" }, { "name": "ONCOMMIT_PRESERVE_ROWS", "value": 1, "comment": "/* ON COMMIT PRESERVE ROWS (do nothing) */" }, { "name": "ONCOMMIT_DELETE_ROWS", "value": 2, "comment": "/* ON COMMIT DELETE ROWS */" }, { "name": "ONCOMMIT_DROP", "value": 3, "comment": "/* ON COMMIT DROP */" } ], "comment": "/* What to do at commit time for temporary relations */\n" }, "ParamKind": { "values": [ { "comment": "" }, { "name": "PARAM_EXTERN", "value": 0 }, { "name": "PARAM_EXEC", "value": 1 }, { "name": "PARAM_SUBLINK", "value": 2 }, { "name": "PARAM_MULTIEXPR", "value": 3 } ], "comment": "/*\n * Param\n *\n *\t\tparamkind specifies the kind of parameter. The possible values\n *\t\tfor this field are:\n *\n *\t\tPARAM_EXTERN: The parameter value is supplied from outside the plan.\n *\t\t\t\tSuch parameters are numbered from 1 to n.\n *\n *\t\tPARAM_EXEC: The parameter is an internal executor parameter, used\n *\t\t\t\tfor passing values into and out of sub-queries or from\n *\t\t\t\tnestloop joins to their inner scans.\n *\t\t\t\tFor historical reasons, such parameters are numbered from 0.\n *\t\t\t\tThese numbers are independent of PARAM_EXTERN numbers.\n *\n *\t\tPARAM_SUBLINK:\tThe parameter represents an output column of a SubLink\n *\t\t\t\tnode's sub-select. The column number is contained in the\n *\t\t\t\t`paramid' field. (This type of Param is converted to\n *\t\t\t\tPARAM_EXEC during planning.)\n *\n *\t\tPARAM_MULTIEXPR: Like PARAM_SUBLINK, the parameter represents an\n *\t\t\t\toutput column of a SubLink node's sub-select, but here, the\n *\t\t\t\tSubLink is always a MULTIEXPR SubLink. The high-order 16 bits\n *\t\t\t\tof the `paramid' field contain the SubLink's subLinkId, and\n *\t\t\t\tthe low-order 16 bits contain the column number. (This type\n *\t\t\t\tof Param is also converted to PARAM_EXEC during planning.)\n */\n" }, "CoercionContext": { "values": [ { "comment": "" }, { "name": "COERCION_IMPLICIT", "value": 0, "comment": "/* coercion in context of expression */" }, { "name": "COERCION_ASSIGNMENT", "value": 1, "comment": "/* coercion in context of assignment */" }, { "name": "COERCION_EXPLICIT", "value": 2, "comment": "/* explicit cast operation */" } ], "comment": "/*\n * CoercionContext - distinguishes the allowed set of type casts\n *\n * NB: ordering of the alternatives is significant; later (larger) values\n * allow more casts than earlier ones.\n */\n" }, "CoercionForm": { "values": [ { "comment": "" }, { "name": "COERCE_EXPLICIT_CALL", "value": 0, "comment": "/* display as a function call */" }, { "name": "COERCE_EXPLICIT_CAST", "value": 1, "comment": "/* display as an explicit cast */" }, { "name": "COERCE_IMPLICIT_CAST", "value": 2, "comment": "/* implicit cast, so hide it */" } ], "comment": "/*\n * CoercionForm - how to display a node that could have come from a cast\n *\n * NB: equal() ignores CoercionForm fields, therefore this *must* not carry\n * any semantically significant information. We need that behavior so that\n * the planner will consider equivalent implicit and explicit casts to be\n * equivalent. In cases where those actually behave differently, the coercion\n * function's arguments will be different.\n */\n" }, "BoolExprType": { "values": [ { "comment": "" }, { "name": "AND_EXPR", "value": 0 }, { "name": "OR_EXPR" }, { "name": "NOT_EXPR" } ], "comment": "/*\n * BoolExpr - expression node for the basic Boolean operators AND, OR, NOT\n *\n * Notice the arguments are given as a List. For NOT, of course the list\n * must always have exactly one element. For AND and OR, there can be two\n * or more arguments.\n */\n" }, "SubLinkType": { "values": [ { "comment": "" }, { "name": "EXISTS_SUBLINK", "value": 0 }, { "name": "ALL_SUBLINK", "value": 1 }, { "name": "ANY_SUBLINK", "value": 2 }, { "name": "ROWCOMPARE_SUBLINK", "value": 3 }, { "name": "EXPR_SUBLINK", "value": 4 }, { "name": "MULTIEXPR_SUBLINK", "value": 5 }, { "name": "ARRAY_SUBLINK", "value": 6 }, { "name": "CTE_SUBLINK", "value": 7, "comment": "/* for SubPlans only */" } ], "comment": "/*\n * SubLink\n *\n * A SubLink represents a subselect appearing in an expression, and in some\n * cases also the combining operator(s) just above it. The subLinkType\n * indicates the form of the expression represented:\n *\tEXISTS_SUBLINK\t\tEXISTS(SELECT ...)\n *\tALL_SUBLINK\t\t\t(lefthand) op ALL (SELECT ...)\n *\tANY_SUBLINK\t\t\t(lefthand) op ANY (SELECT ...)\n *\tROWCOMPARE_SUBLINK\t(lefthand) op (SELECT ...)\n *\tEXPR_SUBLINK\t\t(SELECT with single targetlist item ...)\n *\tMULTIEXPR_SUBLINK\t(SELECT with multiple targetlist items ...)\n *\tARRAY_SUBLINK\t\tARRAY(SELECT with single targetlist item ...)\n *\tCTE_SUBLINK\t\t\tWITH query (never actually part of an expression)\n * For ALL, ANY, and ROWCOMPARE, the lefthand is a list of expressions of the\n * same length as the subselect's targetlist. ROWCOMPARE will *always* have\n * a list with more than one entry; if the subselect has just one target\n * then the parser will create an EXPR_SUBLINK instead (and any operator\n * above the subselect will be represented separately).\n * ROWCOMPARE, EXPR, and MULTIEXPR require the subselect to deliver at most\n * one row (if it returns no rows, the result is NULL).\n * ALL, ANY, and ROWCOMPARE require the combining operators to deliver boolean\n * results. ALL and ANY combine the per-row results using AND and OR\n * semantics respectively.\n * ARRAY requires just one target column, and creates an array of the target\n * column's type using any number of rows resulting from the subselect.\n *\n * SubLink is classed as an Expr node, but it is not actually executable;\n * it must be replaced in the expression tree by a SubPlan node during\n * planning.\n *\n * NOTE: in the raw output of gram.y, testexpr contains just the raw form\n * of the lefthand expression (if any), and operName is the String name of\n * the combining operator. Also, subselect is a raw parsetree. During parse\n * analysis, the parser transforms testexpr into a complete boolean expression\n * that compares the lefthand value(s) to PARAM_SUBLINK nodes representing the\n * output columns of the subselect. And subselect is transformed to a Query.\n * This is the representation seen in saved rules and in the rewriter.\n *\n * In EXISTS, EXPR, MULTIEXPR, and ARRAY SubLinks, testexpr and operName\n * are unused and are always null.\n *\n * subLinkId is currently used only for MULTIEXPR SubLinks, and is zero in\n * other SubLinks. This number identifies different multiple-assignment\n * subqueries within an UPDATE statement's SET list. It is unique only\n * within a particular targetlist. The output column(s) of the MULTIEXPR\n * are referenced by PARAM_MULTIEXPR Params appearing elsewhere in the tlist.\n *\n * The CTE_SUBLINK case never occurs in actual SubLink nodes, but it is used\n * in SubPlans generated for WITH subqueries.\n */\n" }, "RowCompareType": { "values": [ { "comment": "" }, { "comment": "\t/* Values of this enum are chosen to match btree strategy numbers */\n" }, { "name": "ROWCOMPARE_LT", "value": 1, "comment": "/* BTLessStrategyNumber */" }, { "name": "ROWCOMPARE_LE", "value": 2, "comment": "/* BTLessEqualStrategyNumber */" }, { "name": "ROWCOMPARE_EQ", "value": 3, "comment": "/* BTEqualStrategyNumber */" }, { "name": "ROWCOMPARE_GE", "value": 4, "comment": "/* BTGreaterEqualStrategyNumber */" }, { "name": "ROWCOMPARE_GT", "value": 5, "comment": "/* BTGreaterStrategyNumber */" }, { "name": "ROWCOMPARE_NE", "value": 6, "comment": "/* no such btree strategy */" } ], "comment": "/*\n * RowCompareExpr - row-wise comparison, such as (a, b) <= (1, 2)\n *\n * We support row comparison for any operator that can be determined to\n * act like =, <>, <, <=, >, or >= (we determine this by looking for the\n * operator in btree opfamilies). Note that the same operator name might\n * map to a different operator for each pair of row elements, since the\n * element datatypes can vary.\n *\n * A RowCompareExpr node is only generated for the < <= > >= cases;\n * the = and <> cases are translated to simple AND or OR combinations\n * of the pairwise comparisons. However, we include = and <> in the\n * RowCompareType enum for the convenience of parser logic.\n */\n" }, "MinMaxOp": { "values": [ { "comment": "" }, { "name": "IS_GREATEST", "value": 0 }, { "name": "IS_LEAST", "value": 1 } ], "comment": "/*\n * MinMaxExpr - a GREATEST or LEAST function\n */\n" }, "SQLValueFunctionOp": { "values": [ { "comment": "" }, { "name": "SVFOP_CURRENT_DATE", "value": 0 }, { "name": "SVFOP_CURRENT_TIME", "value": 1 }, { "name": "SVFOP_CURRENT_TIME_N", "value": 2 }, { "name": "SVFOP_CURRENT_TIMESTAMP", "value": 3 }, { "name": "SVFOP_CURRENT_TIMESTAMP_N", "value": 4 }, { "name": "SVFOP_LOCALTIME", "value": 5 }, { "name": "SVFOP_LOCALTIME_N", "value": 6 }, { "name": "SVFOP_LOCALTIMESTAMP", "value": 7 }, { "name": "SVFOP_LOCALTIMESTAMP_N", "value": 8 }, { "name": "SVFOP_CURRENT_ROLE", "value": 9 }, { "name": "SVFOP_CURRENT_USER", "value": 10 }, { "name": "SVFOP_USER", "value": 11 }, { "name": "SVFOP_SESSION_USER", "value": 12 }, { "name": "SVFOP_CURRENT_CATALOG", "value": 13 }, { "name": "SVFOP_CURRENT_SCHEMA", "value": 14 } ], "comment": "/*\n * SQLValueFunction - parameterless functions with special grammar productions\n *\n * The SQL standard categorizes some of these as \n * and others as . We call 'em SQLValueFunctions\n * for lack of a better term. We store type and typmod of the result so that\n * some code doesn't need to know each function individually, and because\n * we would need to store typmod anyway for some of the datetime functions.\n * Note that currently, all variants return non-collating datatypes, so we do\n * not need a collation field; also, all these functions are stable.\n */\n" }, "XmlExprOp": { "values": [ { "comment": "" }, { "name": "IS_XMLCONCAT", "value": 0, "comment": "/* XMLCONCAT(args) */" }, { "name": "IS_XMLELEMENT", "value": 1, "comment": "/* XMLELEMENT(name, xml_attributes, args) */" }, { "name": "IS_XMLFOREST", "value": 2, "comment": "/* XMLFOREST(xml_attributes) */" }, { "name": "IS_XMLPARSE", "value": 3, "comment": "/* XMLPARSE(text, is_doc, preserve_ws) */" }, { "name": "IS_XMLPI", "value": 4, "comment": "/* XMLPI(name [, args]) */" }, { "name": "IS_XMLROOT", "value": 5, "comment": "/* XMLROOT(xml, version, standalone) */" }, { "name": "IS_XMLSERIALIZE", "value": 6, "comment": "/* XMLSERIALIZE(is_document, xmlval) */" }, { "name": "IS_DOCUMENT", "value": 7, "comment": "/* xmlval IS DOCUMENT */" } ], "comment": "/*\n * XmlExpr - various SQL/XML functions requiring special grammar productions\n *\n * 'name' carries the \"NAME foo\" argument (already XML-escaped).\n * 'named_args' and 'arg_names' represent an xml_attribute list.\n * 'args' carries all other arguments.\n *\n * Note: result type/typmod/collation are not stored, but can be deduced\n * from the XmlExprOp. The type/typmod fields are just used for display\n * purposes, and are NOT necessarily the true result type of the node.\n */\n" }, "XmlOptionType": { "values": [ { "comment": "" }, { "name": "XMLOPTION_DOCUMENT", "value": 0 }, { "name": "XMLOPTION_CONTENT", "value": 1 } ], "comment": null }, "NullTestType": { "values": [ { "comment": "" }, { "name": "IS_NULL", "value": 0 }, { "name": "IS_NOT_NULL" } ], "comment": "/* ----------------\n * NullTest\n *\n * NullTest represents the operation of testing a value for NULLness.\n * The appropriate test is performed and returned as a boolean Datum.\n *\n * When argisrow is false, this simply represents a test for the null value.\n *\n * When argisrow is true, the input expression must yield a rowtype, and\n * the node implements \"row IS [NOT] NULL\" per the SQL standard. This\n * includes checking individual fields for NULLness when the row datum\n * itself isn't NULL.\n *\n * NOTE: the combination of a rowtype input and argisrow==false does NOT\n * correspond to the SQL notation \"row IS [NOT] NULL\"; instead, this case\n * represents the SQL notation \"row IS [NOT] DISTINCT FROM NULL\".\n * ----------------\n */\n" }, "BoolTestType": { "values": [ { "comment": "" }, { "name": "IS_TRUE", "value": 0 }, { "name": "IS_NOT_TRUE" }, { "name": "IS_FALSE" }, { "name": "IS_NOT_FALSE" }, { "name": "IS_UNKNOWN" }, { "name": "IS_NOT_UNKNOWN" } ], "comment": "/*\n * BooleanTest\n *\n * BooleanTest represents the operation of determining whether a boolean\n * is TRUE, FALSE, or UNKNOWN (ie, NULL). All six meaningful combinations\n * are supported. Note that a NULL input does *not* cause a NULL result.\n * The appropriate test is performed and returned as a boolean Datum.\n */\n" } }, "nodes/lockoptions": { "LockClauseStrength": { "values": [ { "comment": "" }, { "name": "LCS_NONE", "value": 0, "comment": "/* no such clause - only used in PlanRowMark */" }, { "name": "LCS_FORKEYSHARE", "value": 1, "comment": "/* FOR KEY SHARE */" }, { "name": "LCS_FORSHARE", "value": 2, "comment": "/* FOR SHARE */" }, { "name": "LCS_FORNOKEYUPDATE", "value": 3, "comment": "/* FOR NO KEY UPDATE */" }, { "name": "LCS_FORUPDATE", "value": 4, "comment": "/* FOR UPDATE */" } ], "comment": "/*\n * This enum represents the different strengths of FOR UPDATE/SHARE clauses.\n * The ordering here is important, because the highest numerical value takes\n * precedence when a RTE is specified multiple ways. See applyLockingClause.\n */\n" }, "LockWaitPolicy": { "values": [ { "comment": "" }, { "comment": "\t/* Wait for the lock to become available (default behavior) */\n" }, { "name": "LockWaitBlock", "value": 0 }, { "comment": "\t/* Skip rows that can't be locked (SKIP LOCKED) */\n" }, { "name": "LockWaitSkip", "value": 1 }, { "comment": "\t/* Raise an error if a row cannot be locked (NOWAIT) */\n" }, { "name": "LockWaitError", "value": 2 } ], "comment": "/*\n * This enum controls how to deal with rows being locked by FOR UPDATE/SHARE\n * clauses (i.e., it represents the NOWAIT and SKIP LOCKED options).\n * The ordering here is important, because the highest numerical value takes\n * precedence when a RTE is specified multiple ways. See applyLockingClause.\n */\n" }, "LockTupleMode": { "values": [ { "comment": "" }, { "comment": "\t/* SELECT FOR KEY SHARE */\n" }, { "name": "LockTupleKeyShare", "value": 0 }, { "comment": "\t/* SELECT FOR SHARE */\n" }, { "name": "LockTupleShare", "value": 1 }, { "comment": "\t/* SELECT FOR NO KEY UPDATE, and UPDATEs that don't modify key columns */\n" }, { "name": "LockTupleNoKeyExclusive", "value": 2 }, { "comment": "\t/* SELECT FOR UPDATE, UPDATEs that modify key columns, and DELETE */\n" }, { "name": "LockTupleExclusive", "value": 3 } ], "comment": "/*\n * Possible lock modes for a tuple.\n */\n" } }, "nodes/nodes": { "NodeTag": { "values": [ { "comment": "" }, { "name": "T_Invalid", "value": 0 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR EXECUTOR NODES (execnodes.h)\n\t */\n" }, { "name": "T_IndexInfo", "value": 1 }, { "name": "T_ExprContext", "value": 2 }, { "name": "T_ProjectionInfo", "value": 3 }, { "name": "T_JunkFilter", "value": 4 }, { "name": "T_OnConflictSetState", "value": 5 }, { "name": "T_ResultRelInfo", "value": 6 }, { "name": "T_EState", "value": 7 }, { "name": "T_TupleTableSlot", "value": 8 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR PLAN NODES (plannodes.h)\n\t */\n" }, { "name": "T_Plan", "value": 9 }, { "name": "T_Result", "value": 10 }, { "name": "T_ProjectSet", "value": 11 }, { "name": "T_ModifyTable", "value": 12 }, { "name": "T_Append", "value": 13 }, { "name": "T_MergeAppend", "value": 14 }, { "name": "T_RecursiveUnion", "value": 15 }, { "name": "T_BitmapAnd", "value": 16 }, { "name": "T_BitmapOr", "value": 17 }, { "name": "T_Scan", "value": 18 }, { "name": "T_SeqScan", "value": 19 }, { "name": "T_SampleScan", "value": 20 }, { "name": "T_IndexScan", "value": 21 }, { "name": "T_IndexOnlyScan", "value": 22 }, { "name": "T_BitmapIndexScan", "value": 23 }, { "name": "T_BitmapHeapScan", "value": 24 }, { "name": "T_TidScan", "value": 25 }, { "name": "T_SubqueryScan", "value": 26 }, { "name": "T_FunctionScan", "value": 27 }, { "name": "T_ValuesScan", "value": 28 }, { "name": "T_TableFuncScan", "value": 29 }, { "name": "T_CteScan", "value": 30 }, { "name": "T_NamedTuplestoreScan", "value": 31 }, { "name": "T_WorkTableScan", "value": 32 }, { "name": "T_ForeignScan", "value": 33 }, { "name": "T_CustomScan", "value": 34 }, { "name": "T_Join", "value": 35 }, { "name": "T_NestLoop", "value": 36 }, { "name": "T_MergeJoin", "value": 37 }, { "name": "T_HashJoin", "value": 38 }, { "name": "T_Material", "value": 39 }, { "name": "T_Sort", "value": 40 }, { "name": "T_IncrementalSort", "value": 41 }, { "name": "T_Group", "value": 42 }, { "name": "T_Agg", "value": 43 }, { "name": "T_WindowAgg", "value": 44 }, { "name": "T_Unique", "value": 45 }, { "name": "T_Gather", "value": 46 }, { "name": "T_GatherMerge", "value": 47 }, { "name": "T_Hash", "value": 48 }, { "name": "T_SetOp", "value": 49 }, { "name": "T_LockRows", "value": 50 }, { "name": "T_Limit", "value": 51 }, { "comment": "\t/* these aren't subclasses of Plan: */\n" }, { "name": "T_NestLoopParam", "value": 52 }, { "name": "T_PlanRowMark", "value": 53 }, { "name": "T_PartitionPruneInfo", "value": 54 }, { "name": "T_PartitionedRelPruneInfo", "value": 55 }, { "name": "T_PartitionPruneStepOp", "value": 56 }, { "name": "T_PartitionPruneStepCombine", "value": 57 }, { "name": "T_PlanInvalItem", "value": 58 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR PLAN STATE NODES (execnodes.h)\n\t *\n\t * These should correspond one-to-one with Plan node types.\n\t */\n" }, { "name": "T_PlanState", "value": 59 }, { "name": "T_ResultState", "value": 60 }, { "name": "T_ProjectSetState", "value": 61 }, { "name": "T_ModifyTableState", "value": 62 }, { "name": "T_AppendState", "value": 63 }, { "name": "T_MergeAppendState", "value": 64 }, { "name": "T_RecursiveUnionState", "value": 65 }, { "name": "T_BitmapAndState", "value": 66 }, { "name": "T_BitmapOrState", "value": 67 }, { "name": "T_ScanState", "value": 68 }, { "name": "T_SeqScanState", "value": 69 }, { "name": "T_SampleScanState", "value": 70 }, { "name": "T_IndexScanState", "value": 71 }, { "name": "T_IndexOnlyScanState", "value": 72 }, { "name": "T_BitmapIndexScanState", "value": 73 }, { "name": "T_BitmapHeapScanState", "value": 74 }, { "name": "T_TidScanState", "value": 75 }, { "name": "T_SubqueryScanState", "value": 76 }, { "name": "T_FunctionScanState", "value": 77 }, { "name": "T_TableFuncScanState", "value": 78 }, { "name": "T_ValuesScanState", "value": 79 }, { "name": "T_CteScanState", "value": 80 }, { "name": "T_NamedTuplestoreScanState", "value": 81 }, { "name": "T_WorkTableScanState", "value": 82 }, { "name": "T_ForeignScanState", "value": 83 }, { "name": "T_CustomScanState", "value": 84 }, { "name": "T_JoinState", "value": 85 }, { "name": "T_NestLoopState", "value": 86 }, { "name": "T_MergeJoinState", "value": 87 }, { "name": "T_HashJoinState", "value": 88 }, { "name": "T_MaterialState", "value": 89 }, { "name": "T_SortState", "value": 90 }, { "name": "T_IncrementalSortState", "value": 91 }, { "name": "T_GroupState", "value": 92 }, { "name": "T_AggState", "value": 93 }, { "name": "T_WindowAggState", "value": 94 }, { "name": "T_UniqueState", "value": 95 }, { "name": "T_GatherState", "value": 96 }, { "name": "T_GatherMergeState", "value": 97 }, { "name": "T_HashState", "value": 98 }, { "name": "T_SetOpState", "value": 99 }, { "name": "T_LockRowsState", "value": 100 }, { "name": "T_LimitState", "value": 101 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR PRIMITIVE NODES (primnodes.h)\n\t */\n" }, { "name": "T_Alias", "value": 102 }, { "name": "T_RangeVar", "value": 103 }, { "name": "T_TableFunc", "value": 104 }, { "name": "T_Expr", "value": 105 }, { "name": "T_Var", "value": 106 }, { "name": "T_Const", "value": 107 }, { "name": "T_Param", "value": 108 }, { "name": "T_Aggref", "value": 109 }, { "name": "T_GroupingFunc", "value": 110 }, { "name": "T_WindowFunc", "value": 111 }, { "name": "T_SubscriptingRef", "value": 112 }, { "name": "T_FuncExpr", "value": 113 }, { "name": "T_NamedArgExpr", "value": 114 }, { "name": "T_OpExpr", "value": 115 }, { "name": "T_DistinctExpr", "value": 116 }, { "name": "T_NullIfExpr", "value": 117 }, { "name": "T_ScalarArrayOpExpr", "value": 118 }, { "name": "T_BoolExpr", "value": 119 }, { "name": "T_SubLink", "value": 120 }, { "name": "T_SubPlan", "value": 121 }, { "name": "T_AlternativeSubPlan", "value": 122 }, { "name": "T_FieldSelect", "value": 123 }, { "name": "T_FieldStore", "value": 124 }, { "name": "T_RelabelType", "value": 125 }, { "name": "T_CoerceViaIO", "value": 126 }, { "name": "T_ArrayCoerceExpr", "value": 127 }, { "name": "T_ConvertRowtypeExpr", "value": 128 }, { "name": "T_CollateExpr", "value": 129 }, { "name": "T_CaseExpr", "value": 130 }, { "name": "T_CaseWhen", "value": 131 }, { "name": "T_CaseTestExpr", "value": 132 }, { "name": "T_ArrayExpr", "value": 133 }, { "name": "T_RowExpr", "value": 134 }, { "name": "T_RowCompareExpr", "value": 135 }, { "name": "T_CoalesceExpr", "value": 136 }, { "name": "T_MinMaxExpr", "value": 137 }, { "name": "T_SQLValueFunction", "value": 138 }, { "name": "T_XmlExpr", "value": 139 }, { "name": "T_NullTest", "value": 140 }, { "name": "T_BooleanTest", "value": 141 }, { "name": "T_CoerceToDomain", "value": 142 }, { "name": "T_CoerceToDomainValue", "value": 143 }, { "name": "T_SetToDefault", "value": 144 }, { "name": "T_CurrentOfExpr", "value": 145 }, { "name": "T_NextValueExpr", "value": 146 }, { "name": "T_InferenceElem", "value": 147 }, { "name": "T_TargetEntry", "value": 148 }, { "name": "T_RangeTblRef", "value": 149 }, { "name": "T_JoinExpr", "value": 150 }, { "name": "T_FromExpr", "value": 151 }, { "name": "T_OnConflictExpr", "value": 152 }, { "name": "T_IntoClause", "value": 153 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR EXPRESSION STATE NODES (execnodes.h)\n\t *\n\t * ExprState represents the evaluation state for a whole expression tree.\n\t * Most Expr-based plan nodes do not have a corresponding expression state\n\t * node, they're fully handled within execExpr* - but sometimes the state\n\t * needs to be shared with other parts of the executor, as for example\n\t * with AggrefExprState, which nodeAgg.c has to modify.\n\t */\n" }, { "name": "T_ExprState", "value": 154 }, { "name": "T_AggrefExprState", "value": 155 }, { "name": "T_WindowFuncExprState", "value": 156 }, { "name": "T_SetExprState", "value": 157 }, { "name": "T_SubPlanState", "value": 158 }, { "name": "T_AlternativeSubPlanState", "value": 159 }, { "name": "T_DomainConstraintState", "value": 160 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR PLANNER NODES (pathnodes.h)\n\t */\n" }, { "name": "T_PlannerInfo", "value": 161 }, { "name": "T_PlannerGlobal", "value": 162 }, { "name": "T_RelOptInfo", "value": 163 }, { "name": "T_IndexOptInfo", "value": 164 }, { "name": "T_ForeignKeyOptInfo", "value": 165 }, { "name": "T_ParamPathInfo", "value": 166 }, { "name": "T_Path", "value": 167 }, { "name": "T_IndexPath", "value": 168 }, { "name": "T_BitmapHeapPath", "value": 169 }, { "name": "T_BitmapAndPath", "value": 170 }, { "name": "T_BitmapOrPath", "value": 171 }, { "name": "T_TidPath", "value": 172 }, { "name": "T_SubqueryScanPath", "value": 173 }, { "name": "T_ForeignPath", "value": 174 }, { "name": "T_CustomPath", "value": 175 }, { "name": "T_NestPath", "value": 176 }, { "name": "T_MergePath", "value": 177 }, { "name": "T_HashPath", "value": 178 }, { "name": "T_AppendPath", "value": 179 }, { "name": "T_MergeAppendPath", "value": 180 }, { "name": "T_GroupResultPath", "value": 181 }, { "name": "T_MaterialPath", "value": 182 }, { "name": "T_UniquePath", "value": 183 }, { "name": "T_GatherPath", "value": 184 }, { "name": "T_GatherMergePath", "value": 185 }, { "name": "T_ProjectionPath", "value": 186 }, { "name": "T_ProjectSetPath", "value": 187 }, { "name": "T_SortPath", "value": 188 }, { "name": "T_IncrementalSortPath", "value": 189 }, { "name": "T_GroupPath", "value": 190 }, { "name": "T_UpperUniquePath", "value": 191 }, { "name": "T_AggPath", "value": 192 }, { "name": "T_GroupingSetsPath", "value": 193 }, { "name": "T_MinMaxAggPath", "value": 194 }, { "name": "T_WindowAggPath", "value": 195 }, { "name": "T_SetOpPath", "value": 196 }, { "name": "T_RecursiveUnionPath", "value": 197 }, { "name": "T_LockRowsPath", "value": 198 }, { "name": "T_ModifyTablePath", "value": 199 }, { "name": "T_LimitPath", "value": 200 }, { "comment": "\t/* these aren't subclasses of Path: */\n" }, { "name": "T_EquivalenceClass", "value": 201 }, { "name": "T_EquivalenceMember", "value": 202 }, { "name": "T_PathKey", "value": 203 }, { "name": "T_PathTarget", "value": 204 }, { "name": "T_RestrictInfo", "value": 205 }, { "name": "T_IndexClause", "value": 206 }, { "name": "T_PlaceHolderVar", "value": 207 }, { "name": "T_SpecialJoinInfo", "value": 208 }, { "name": "T_AppendRelInfo", "value": 209 }, { "name": "T_PlaceHolderInfo", "value": 210 }, { "name": "T_MinMaxAggInfo", "value": 211 }, { "name": "T_PlannerParamItem", "value": 212 }, { "name": "T_RollupData", "value": 213 }, { "name": "T_GroupingSetData", "value": 214 }, { "name": "T_StatisticExtInfo", "value": 215 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR MEMORY NODES (memnodes.h)\n\t */\n" }, { "name": "T_MemoryContext", "value": 216 }, { "name": "T_AllocSetContext", "value": 217 }, { "name": "T_SlabContext", "value": 218 }, { "name": "T_GenerationContext", "value": 219 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR VALUE NODES (value.h)\n\t */\n" }, { "name": "T_Value", "value": 220 }, { "name": "T_Integer", "value": 221 }, { "name": "T_Float", "value": 222 }, { "name": "T_String", "value": 223 }, { "name": "T_BitString", "value": 224 }, { "name": "T_Null", "value": 225 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR LIST NODES (pg_list.h)\n\t */\n" }, { "name": "T_List", "value": 226 }, { "name": "T_IntList", "value": 227 }, { "name": "T_OidList", "value": 228 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR EXTENSIBLE NODES (extensible.h)\n\t */\n" }, { "name": "T_ExtensibleNode", "value": 229 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR STATEMENT NODES (mostly in parsenodes.h)\n\t */\n" }, { "name": "T_RawStmt", "value": 230 }, { "name": "T_Query", "value": 231 }, { "name": "T_PlannedStmt", "value": 232 }, { "name": "T_InsertStmt", "value": 233 }, { "name": "T_DeleteStmt", "value": 234 }, { "name": "T_UpdateStmt", "value": 235 }, { "name": "T_SelectStmt", "value": 236 }, { "name": "T_AlterTableStmt", "value": 237 }, { "name": "T_AlterTableCmd", "value": 238 }, { "name": "T_AlterDomainStmt", "value": 239 }, { "name": "T_SetOperationStmt", "value": 240 }, { "name": "T_GrantStmt", "value": 241 }, { "name": "T_GrantRoleStmt", "value": 242 }, { "name": "T_AlterDefaultPrivilegesStmt", "value": 243 }, { "name": "T_ClosePortalStmt", "value": 244 }, { "name": "T_ClusterStmt", "value": 245 }, { "name": "T_CopyStmt", "value": 246 }, { "name": "T_CreateStmt", "value": 247 }, { "name": "T_DefineStmt", "value": 248 }, { "name": "T_DropStmt", "value": 249 }, { "name": "T_TruncateStmt", "value": 250 }, { "name": "T_CommentStmt", "value": 251 }, { "name": "T_FetchStmt", "value": 252 }, { "name": "T_IndexStmt", "value": 253 }, { "name": "T_CreateFunctionStmt", "value": 254 }, { "name": "T_AlterFunctionStmt", "value": 255 }, { "name": "T_DoStmt", "value": 256 }, { "name": "T_RenameStmt", "value": 257 }, { "name": "T_RuleStmt", "value": 258 }, { "name": "T_NotifyStmt", "value": 259 }, { "name": "T_ListenStmt", "value": 260 }, { "name": "T_UnlistenStmt", "value": 261 }, { "name": "T_TransactionStmt", "value": 262 }, { "name": "T_ViewStmt", "value": 263 }, { "name": "T_LoadStmt", "value": 264 }, { "name": "T_CreateDomainStmt", "value": 265 }, { "name": "T_CreatedbStmt", "value": 266 }, { "name": "T_DropdbStmt", "value": 267 }, { "name": "T_VacuumStmt", "value": 268 }, { "name": "T_ExplainStmt", "value": 269 }, { "name": "T_CreateTableAsStmt", "value": 270 }, { "name": "T_CreateSeqStmt", "value": 271 }, { "name": "T_AlterSeqStmt", "value": 272 }, { "name": "T_VariableSetStmt", "value": 273 }, { "name": "T_VariableShowStmt", "value": 274 }, { "name": "T_DiscardStmt", "value": 275 }, { "name": "T_CreateTrigStmt", "value": 276 }, { "name": "T_CreatePLangStmt", "value": 277 }, { "name": "T_CreateRoleStmt", "value": 278 }, { "name": "T_AlterRoleStmt", "value": 279 }, { "name": "T_DropRoleStmt", "value": 280 }, { "name": "T_LockStmt", "value": 281 }, { "name": "T_ConstraintsSetStmt", "value": 282 }, { "name": "T_ReindexStmt", "value": 283 }, { "name": "T_CheckPointStmt", "value": 284 }, { "name": "T_CreateSchemaStmt", "value": 285 }, { "name": "T_AlterDatabaseStmt", "value": 286 }, { "name": "T_AlterDatabaseSetStmt", "value": 287 }, { "name": "T_AlterRoleSetStmt", "value": 288 }, { "name": "T_CreateConversionStmt", "value": 289 }, { "name": "T_CreateCastStmt", "value": 290 }, { "name": "T_CreateOpClassStmt", "value": 291 }, { "name": "T_CreateOpFamilyStmt", "value": 292 }, { "name": "T_AlterOpFamilyStmt", "value": 293 }, { "name": "T_PrepareStmt", "value": 294 }, { "name": "T_ExecuteStmt", "value": 295 }, { "name": "T_DeallocateStmt", "value": 296 }, { "name": "T_DeclareCursorStmt", "value": 297 }, { "name": "T_CreateTableSpaceStmt", "value": 298 }, { "name": "T_DropTableSpaceStmt", "value": 299 }, { "name": "T_AlterObjectDependsStmt", "value": 300 }, { "name": "T_AlterObjectSchemaStmt", "value": 301 }, { "name": "T_AlterOwnerStmt", "value": 302 }, { "name": "T_AlterOperatorStmt", "value": 303 }, { "name": "T_AlterTypeStmt", "value": 304 }, { "name": "T_DropOwnedStmt", "value": 305 }, { "name": "T_ReassignOwnedStmt", "value": 306 }, { "name": "T_CompositeTypeStmt", "value": 307 }, { "name": "T_CreateEnumStmt", "value": 308 }, { "name": "T_CreateRangeStmt", "value": 309 }, { "name": "T_AlterEnumStmt", "value": 310 }, { "name": "T_AlterTSDictionaryStmt", "value": 311 }, { "name": "T_AlterTSConfigurationStmt", "value": 312 }, { "name": "T_CreateFdwStmt", "value": 313 }, { "name": "T_AlterFdwStmt", "value": 314 }, { "name": "T_CreateForeignServerStmt", "value": 315 }, { "name": "T_AlterForeignServerStmt", "value": 316 }, { "name": "T_CreateUserMappingStmt", "value": 317 }, { "name": "T_AlterUserMappingStmt", "value": 318 }, { "name": "T_DropUserMappingStmt", "value": 319 }, { "name": "T_AlterTableSpaceOptionsStmt", "value": 320 }, { "name": "T_AlterTableMoveAllStmt", "value": 321 }, { "name": "T_SecLabelStmt", "value": 322 }, { "name": "T_CreateForeignTableStmt", "value": 323 }, { "name": "T_ImportForeignSchemaStmt", "value": 324 }, { "name": "T_CreateExtensionStmt", "value": 325 }, { "name": "T_AlterExtensionStmt", "value": 326 }, { "name": "T_AlterExtensionContentsStmt", "value": 327 }, { "name": "T_CreateEventTrigStmt", "value": 328 }, { "name": "T_AlterEventTrigStmt", "value": 329 }, { "name": "T_RefreshMatViewStmt", "value": 330 }, { "name": "T_ReplicaIdentityStmt", "value": 331 }, { "name": "T_AlterSystemStmt", "value": 332 }, { "name": "T_CreatePolicyStmt", "value": 333 }, { "name": "T_AlterPolicyStmt", "value": 334 }, { "name": "T_CreateTransformStmt", "value": 335 }, { "name": "T_CreateAmStmt", "value": 336 }, { "name": "T_CreatePublicationStmt", "value": 337 }, { "name": "T_AlterPublicationStmt", "value": 338 }, { "name": "T_CreateSubscriptionStmt", "value": 339 }, { "name": "T_AlterSubscriptionStmt", "value": 340 }, { "name": "T_DropSubscriptionStmt", "value": 341 }, { "name": "T_CreateStatsStmt", "value": 342 }, { "name": "T_AlterCollationStmt", "value": 343 }, { "name": "T_CallStmt", "value": 344 }, { "name": "T_AlterStatsStmt", "value": 345 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR PARSE TREE NODES (parsenodes.h)\n\t */\n" }, { "name": "T_A_Expr", "value": 346 }, { "name": "T_ColumnRef", "value": 347 }, { "name": "T_ParamRef", "value": 348 }, { "name": "T_A_Const", "value": 349 }, { "name": "T_FuncCall", "value": 350 }, { "name": "T_A_Star", "value": 351 }, { "name": "T_A_Indices", "value": 352 }, { "name": "T_A_Indirection", "value": 353 }, { "name": "T_A_ArrayExpr", "value": 354 }, { "name": "T_ResTarget", "value": 355 }, { "name": "T_MultiAssignRef", "value": 356 }, { "name": "T_TypeCast", "value": 357 }, { "name": "T_CollateClause", "value": 358 }, { "name": "T_SortBy", "value": 359 }, { "name": "T_WindowDef", "value": 360 }, { "name": "T_RangeSubselect", "value": 361 }, { "name": "T_RangeFunction", "value": 362 }, { "name": "T_RangeTableSample", "value": 363 }, { "name": "T_RangeTableFunc", "value": 364 }, { "name": "T_RangeTableFuncCol", "value": 365 }, { "name": "T_TypeName", "value": 366 }, { "name": "T_ColumnDef", "value": 367 }, { "name": "T_IndexElem", "value": 368 }, { "name": "T_Constraint", "value": 369 }, { "name": "T_DefElem", "value": 370 }, { "name": "T_RangeTblEntry", "value": 371 }, { "name": "T_RangeTblFunction", "value": 372 }, { "name": "T_TableSampleClause", "value": 373 }, { "name": "T_WithCheckOption", "value": 374 }, { "name": "T_SortGroupClause", "value": 375 }, { "name": "T_GroupingSet", "value": 376 }, { "name": "T_WindowClause", "value": 377 }, { "name": "T_ObjectWithArgs", "value": 378 }, { "name": "T_AccessPriv", "value": 379 }, { "name": "T_CreateOpClassItem", "value": 380 }, { "name": "T_TableLikeClause", "value": 381 }, { "name": "T_FunctionParameter", "value": 382 }, { "name": "T_LockingClause", "value": 383 }, { "name": "T_RowMarkClause", "value": 384 }, { "name": "T_XmlSerialize", "value": 385 }, { "name": "T_WithClause", "value": 386 }, { "name": "T_InferClause", "value": 387 }, { "name": "T_OnConflictClause", "value": 388 }, { "name": "T_CommonTableExpr", "value": 389 }, { "name": "T_RoleSpec", "value": 390 }, { "name": "T_TriggerTransition", "value": 391 }, { "name": "T_PartitionElem", "value": 392 }, { "name": "T_PartitionSpec", "value": 393 }, { "name": "T_PartitionBoundSpec", "value": 394 }, { "name": "T_PartitionRangeDatum", "value": 395 }, { "name": "T_PartitionCmd", "value": 396 }, { "name": "T_VacuumRelation", "value": 397 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR REPLICATION GRAMMAR PARSE NODES (replnodes.h)\n\t */\n" }, { "name": "T_IdentifySystemCmd", "value": 398 }, { "name": "T_BaseBackupCmd", "value": 399 }, { "name": "T_CreateReplicationSlotCmd", "value": 400 }, { "name": "T_DropReplicationSlotCmd", "value": 401 }, { "name": "T_StartReplicationCmd", "value": 402 }, { "name": "T_TimeLineHistoryCmd", "value": 403 }, { "name": "T_SQLCmd", "value": 404 }, { "comment": "" }, { "comment": "\t/*\n\t * TAGS FOR RANDOM OTHER STUFF\n\t *\n\t * These are objects that aren't part of parse/plan/execute node tree\n\t * structures, but we give them NodeTags anyway for identification\n\t * purposes (usually because they are involved in APIs where we want to\n\t * pass multiple object types through the same pointer).\n\t */\n" }, { "name": "T_TriggerData", "value": 405, "comment": "/* in commands/trigger.h */" }, { "name": "T_EventTriggerData", "value": 406, "comment": "/* in commands/event_trigger.h */" }, { "name": "T_ReturnSetInfo", "value": 407, "comment": "/* in nodes/execnodes.h */" }, { "name": "T_WindowObjectData", "value": 408, "comment": "/* private in nodeWindowAgg.c */" }, { "name": "T_TIDBitmap", "value": 409, "comment": "/* in nodes/tidbitmap.h */" }, { "name": "T_InlineCodeBlock", "value": 410, "comment": "/* in nodes/parsenodes.h */" }, { "name": "T_FdwRoutine", "value": 411, "comment": "/* in foreign/fdwapi.h */" }, { "name": "T_IndexAmRoutine", "value": 412, "comment": "/* in access/amapi.h */" }, { "name": "T_TableAmRoutine", "value": 413, "comment": "/* in access/tableam.h */" }, { "name": "T_TsmRoutine", "value": 414, "comment": "/* in access/tsmapi.h */" }, { "name": "T_ForeignKeyCacheInfo", "value": 415, "comment": "/* in utils/rel.h */" }, { "name": "T_CallContext", "value": 416, "comment": "/* in nodes/parsenodes.h */" }, { "name": "T_SupportRequestSimplify", "value": 417, "comment": "/* in nodes/supportnodes.h */" }, { "name": "T_SupportRequestSelectivity", "value": 418, "comment": "/* in nodes/supportnodes.h */" }, { "name": "T_SupportRequestCost", "value": 419, "comment": "/* in nodes/supportnodes.h */" }, { "name": "T_SupportRequestRows", "value": 420, "comment": "/* in nodes/supportnodes.h */" }, { "name": "T_SupportRequestIndexCondition", "value": 421, "comment": "/* in nodes/supportnodes.h */" } ], "comment": "/*\n * The first field of every node is NodeTag. Each node created (with makeNode)\n * will have one of the following tags as the value of its first field.\n *\n * Note that inserting or deleting node types changes the numbers of other\n * node types later in the list. This is no problem during development, since\n * the node numbers are never stored on disk. But don't do it in a released\n * branch, because that would represent an ABI break for extensions.\n */\n" }, "CmdType": { "values": [ { "comment": "" }, { "name": "CMD_UNKNOWN", "value": 0 }, { "name": "CMD_SELECT", "value": 1, "comment": "/* select stmt */" }, { "name": "CMD_UPDATE", "value": 2, "comment": "/* update stmt */" }, { "name": "CMD_INSERT", "value": 3, "comment": "/* insert stmt */" }, { "name": "CMD_DELETE", "value": 4 }, { "name": "CMD_UTILITY", "value": 5, "comment": "/* cmds like create, destroy, copy, vacuum,\n\t\t\t\t\t\t\t\t * etc. */\n" }, { "name": "CMD_NOTHING", "value": 6, "comment": "/* dummy command for instead nothing rules\n\t\t\t\t\t\t\t\t * with qual */\n" } ], "comment": "/*\n * CmdType -\n *\t enums for type of operation represented by a Query or PlannedStmt\n *\n * This is needed in both parsenodes.h and plannodes.h, so put it here...\n */\n" }, "JoinType": { "values": [ { "comment": "" }, { "comment": "\t/*\n\t * The canonical kinds of joins according to the SQL JOIN syntax. Only\n\t * these codes can appear in parser output (e.g., JoinExpr nodes).\n\t */\n" }, { "name": "JOIN_INNER", "value": 0, "comment": "/* matching tuple pairs only */" }, { "name": "JOIN_LEFT", "value": 1, "comment": "/* pairs + unmatched LHS tuples */" }, { "name": "JOIN_FULL", "value": 2, "comment": "/* pairs + unmatched LHS + unmatched RHS */" }, { "name": "JOIN_RIGHT", "value": 3, "comment": "/* pairs + unmatched RHS tuples */" }, { "comment": "" }, { "comment": "\t/*\n\t * Semijoins and anti-semijoins (as defined in relational theory) do not\n\t * appear in the SQL JOIN syntax, but there are standard idioms for\n\t * representing them (e.g., using EXISTS). The planner recognizes these\n\t * cases and converts them to joins. So the planner and executor must\n\t * support these codes. NOTE: in JOIN_SEMI output, it is unspecified\n\t * which matching RHS row is joined to. In JOIN_ANTI output, the row is\n\t * guaranteed to be null-extended.\n\t */\n" }, { "name": "JOIN_SEMI", "value": 4, "comment": "/* 1 copy of each LHS row that has match(es) */" }, { "name": "JOIN_ANTI", "value": 5, "comment": "/* 1 copy of each LHS row that has no match */" }, { "comment": "" }, { "comment": "\t/*\n\t * These codes are used internally in the planner, but are not supported\n\t * by the executor (nor, indeed, by most of the planner).\n\t */\n" }, { "name": "JOIN_UNIQUE_OUTER", "value": 6, "comment": "/* LHS path must be made unique */" }, { "name": "JOIN_UNIQUE_INNER", "value": 7, "comment": "/* RHS path must be made unique */" }, { "comment": "" }, { "comment": "\t/*\n\t * We might need additional join types someday.\n\t */\n" } ], "comment": "/*\n * JoinType -\n *\t enums for types of relation joins\n *\n * JoinType determines the exact semantics of joining two relations using\n * a matching qualification. For example, it tells what to do with a tuple\n * that has no match in the other relation.\n *\n * This is needed in both parsenodes.h and plannodes.h, so put it here...\n */\n" }, "AggStrategy": { "values": [ { "comment": "" }, { "name": "AGG_PLAIN", "value": 0, "comment": "/* simple agg across all input rows */" }, { "name": "AGG_SORTED", "value": 1, "comment": "/* grouped agg, input must be sorted */" }, { "name": "AGG_HASHED", "value": 2, "comment": "/* grouped agg, use internal hashtable */" }, { "name": "AGG_MIXED", "value": 3, "comment": "/* grouped agg, hash and sort both used */" } ], "comment": "/*\n * AggStrategy -\n *\t overall execution strategies for Agg plan nodes\n *\n * This is needed in both pathnodes.h and plannodes.h, so put it here...\n */\n" }, "AggSplit": { "values": [ { "comment": "" }, { "comment": "\t/* Basic, non-split aggregation: */\n" }, { "name": "AGGSPLIT_SIMPLE", "value": 0 }, { "comment": "\t/* Initial phase of partial aggregation, with serialization: */\n" }, { "name": "AGGSPLIT_INITIAL_SERIAL", "value": 1 }, { "comment": "\t/* Final phase of partial aggregation, with deserialization: */\n" }, { "name": "AGGSPLIT_FINAL_DESERIAL", "value": 2 } ], "comment": "/* Supported operating modes (i.e., useful combinations of these options): */\n" }, "SetOpCmd": { "values": [ { "comment": "" }, { "name": "SETOPCMD_INTERSECT", "value": 0 }, { "name": "SETOPCMD_INTERSECT_ALL", "value": 1 }, { "name": "SETOPCMD_EXCEPT", "value": 2 }, { "name": "SETOPCMD_EXCEPT_ALL", "value": 3 } ], "comment": "/*\n * SetOpCmd and SetOpStrategy -\n *\t overall semantics and execution strategies for SetOp plan nodes\n *\n * This is needed in both pathnodes.h and plannodes.h, so put it here...\n */\n" }, "SetOpStrategy": { "values": [ { "comment": "" }, { "name": "SETOP_SORTED", "value": 0, "comment": "/* input must be sorted */" }, { "name": "SETOP_HASHED", "value": 1, "comment": "/* use internal hashtable */" } ], "comment": null }, "OnConflictAction": { "values": [ { "comment": "" }, { "name": "ONCONFLICT_NONE", "value": 0, "comment": "/* No \"ON CONFLICT\" clause */" }, { "name": "ONCONFLICT_NOTHING", "value": 1, "comment": "/* ON CONFLICT ... DO NOTHING */" }, { "name": "ONCONFLICT_UPDATE", "value": 2, "comment": "/* ON CONFLICT ... DO UPDATE */" } ], "comment": "/*\n * OnConflictAction -\n *\t \"ON CONFLICT\" clause type of query\n *\n * This is needed in both parsenodes.h and plannodes.h, so put it here...\n */\n" }, "LimitOption": { "values": [ { "comment": "" }, { "name": "LIMIT_OPTION_DEFAULT", "value": 0, "comment": "/* No limit present */" }, { "name": "LIMIT_OPTION_COUNT", "value": 1, "comment": "/* FETCH FIRST... ONLY */" }, { "name": "LIMIT_OPTION_WITH_TIES", "value": 2, "comment": "/* FETCH FIRST... WITH TIES */" } ], "comment": "/*\n * LimitOption -\n *\tLIMIT option of query\n *\n * This is needed in both parsenodes.h and plannodes.h, so put it here...\n */\n" } }, "nodes/params": { }, "access/attnum": { }, "c": { }, "postgres": { "vartag_external": { "values": [ { "comment": "" }, { "name": "VARTAG_INDIRECT", "value": 1 }, { "name": "VARTAG_EXPANDED_RO", "value": 2 }, { "name": "VARTAG_EXPANDED_RW", "value": 3 }, { "name": "VARTAG_ONDISK", "value": 18 } ], "comment": "/*\n * Type tag for the various sorts of \"TOAST pointer\" datums. The peculiar\n * value for VARTAG_ONDISK comes from a requirement for on-disk compatibility\n * with a previous notion that the tag field was the pointer datum's length.\n */\n" } }, "postgres_ext": { }, "commands/vacuum": { "VacuumOption": { "values": [ { "comment": "" }, { "name": "VACOPT_VACUUM", "value": 1, "comment": "/* do VACUUM */" }, { "name": "VACOPT_ANALYZE", "value": 2, "comment": "/* do ANALYZE */" }, { "name": "VACOPT_VERBOSE", "value": 4, "comment": "/* print progress info */" }, { "name": "VACOPT_FREEZE", "value": 8, "comment": "/* FREEZE option */" }, { "name": "VACOPT_FULL", "value": 16, "comment": "/* FULL (non-concurrent) vacuum */" }, { "name": "VACOPT_SKIP_LOCKED", "value": 32, "comment": "/* skip if cannot get lock */" }, { "name": "VACOPT_SKIPTOAST", "value": 64, "comment": "/* don't process the TOAST table, if any */" }, { "name": "VACOPT_DISABLE_PAGE_SKIPPING", "value": 128, "comment": "/* don't skip any pages */" } ], "comment": null }, "VacOptTernaryValue": { "values": [ { "comment": "" }, { "name": "VACOPT_TERNARY_DEFAULT", "value": 0 }, { "name": "VACOPT_TERNARY_DISABLED", "value": 1 }, { "name": "VACOPT_TERNARY_ENABLED", "value": 2 } ], "comment": "/*\n * A ternary value used by vacuum parameters.\n *\n * DEFAULT value is used to determine the value based on other\n * configurations, e.g. reloptions.\n */\n" } }, "storage/block": { }, "access/sdir": { "ScanDirection": { "values": [ { "comment": "" }, { "name": "BackwardScanDirection", "value": 0 }, { "name": "NoMovementScanDirection", "value": 0 }, { "name": "ForwardScanDirection", "value": 1 } ], "comment": "/*\n * ScanDirection was an int8 for no apparent reason. I kept the original\n * values because I'm not sure if I'll break anything otherwise. -ay 2/95\n */\n" } }, "mb/pg_wchar": { "pg_enc": { "values": [ { "comment": "" }, { "name": "PG_SQL_ASCII", "value": 0, "comment": "/* SQL/ASCII */" }, { "name": "PG_EUC_JP", "value": 1, "comment": "/* EUC for Japanese */" }, { "name": "PG_EUC_CN", "value": 2, "comment": "/* EUC for Chinese */" }, { "name": "PG_EUC_KR", "value": 3, "comment": "/* EUC for Korean */" }, { "name": "PG_EUC_TW", "value": 4, "comment": "/* EUC for Taiwan */" }, { "name": "PG_EUC_JIS_2004", "value": 5, "comment": "/* EUC-JIS-2004 */" }, { "name": "PG_UTF8", "value": 6, "comment": "/* Unicode UTF8 */" }, { "name": "PG_MULE_INTERNAL", "value": 7, "comment": "/* Mule internal code */" }, { "name": "PG_LATIN1", "value": 8, "comment": "/* ISO-8859-1 Latin 1 */" }, { "name": "PG_LATIN2", "value": 9, "comment": "/* ISO-8859-2 Latin 2 */" }, { "name": "PG_LATIN3", "value": 10, "comment": "/* ISO-8859-3 Latin 3 */" }, { "name": "PG_LATIN4", "value": 11, "comment": "/* ISO-8859-4 Latin 4 */" }, { "name": "PG_LATIN5", "value": 12, "comment": "/* ISO-8859-9 Latin 5 */" }, { "name": "PG_LATIN6", "value": 13, "comment": "/* ISO-8859-10 Latin6 */" }, { "name": "PG_LATIN7", "value": 14, "comment": "/* ISO-8859-13 Latin7 */" }, { "name": "PG_LATIN8", "value": 15, "comment": "/* ISO-8859-14 Latin8 */" }, { "name": "PG_LATIN9", "value": 16, "comment": "/* ISO-8859-15 Latin9 */" }, { "name": "PG_LATIN10", "value": 17, "comment": "/* ISO-8859-16 Latin10 */" }, { "name": "PG_WIN1256", "value": 18, "comment": "/* windows-1256 */" }, { "name": "PG_WIN1258", "value": 19, "comment": "/* Windows-1258 */" }, { "name": "PG_WIN866", "value": 20, "comment": "/* (MS-DOS CP866) */" }, { "name": "PG_WIN874", "value": 21, "comment": "/* windows-874 */" }, { "name": "PG_KOI8R", "value": 22, "comment": "/* KOI8-R */" }, { "name": "PG_WIN1251", "value": 23, "comment": "/* windows-1251 */" }, { "name": "PG_WIN1252", "value": 24, "comment": "/* windows-1252 */" }, { "name": "PG_ISO_8859_5", "value": 25, "comment": "/* ISO-8859-5 */" }, { "name": "PG_ISO_8859_6", "value": 26, "comment": "/* ISO-8859-6 */" }, { "name": "PG_ISO_8859_7", "value": 27, "comment": "/* ISO-8859-7 */" }, { "name": "PG_ISO_8859_8", "value": 28, "comment": "/* ISO-8859-8 */" }, { "name": "PG_WIN1250", "value": 29, "comment": "/* windows-1250 */" }, { "name": "PG_WIN1253", "value": 30, "comment": "/* windows-1253 */" }, { "name": "PG_WIN1254", "value": 31, "comment": "/* windows-1254 */" }, { "name": "PG_WIN1255", "value": 32, "comment": "/* windows-1255 */" }, { "name": "PG_WIN1257", "value": 33, "comment": "/* windows-1257 */" }, { "name": "PG_KOI8U", "value": 34, "comment": "/* KOI8-U */" }, { "comment": "\t/* PG_ENCODING_BE_LAST points to the above entry */\n" }, { "comment": "" }, { "comment": "\t/* followings are for client encoding only */\n" }, { "name": "PG_SJIS", "value": 35, "comment": "/* Shift JIS (Windows-932) */" }, { "name": "PG_BIG5", "value": 36, "comment": "/* Big5 (Windows-950) */" }, { "name": "PG_GBK", "value": 37, "comment": "/* GBK (Windows-936) */" }, { "name": "PG_UHC", "value": 38, "comment": "/* UHC (Windows-949) */" }, { "name": "PG_GB18030", "value": 39, "comment": "/* GB18030 */" }, { "name": "PG_JOHAB", "value": 40, "comment": "/* EUC for Korean JOHAB */" }, { "name": "PG_SHIFT_JIS_2004", "value": 41, "comment": "/* Shift-JIS-2004 */" }, { "name": "_PG_LAST_ENCODING_", "value": 42, "comment": "/* mark only */" }, { "comment": "" } ], "comment": "/*\n * PostgreSQL encoding identifiers\n *\n * WARNING: the order of this enum must be same as order of entries\n *\t\t\tin the pg_enc2name_tbl[] array (in src/common/encnames.c), and\n *\t\t\tin the pg_wchar_table[] array (in src/common/wchar.c)!\n *\n *\t\t\tIf you add some encoding don't forget to check\n *\t\t\tPG_ENCODING_BE_LAST macro.\n *\n * PG_SQL_ASCII is default encoding and must be = 0.\n *\n * XXX\tWe must avoid renumbering any backend encoding until libpq's major\n * version number is increased beyond 5; it turns out that the backend\n * encoding IDs are effectively part of libpq's ABI as far as 8.2 initdb and\n * psql are concerned.\n */\n" } }, "../backend/parser/gram": { "yytokentype": { "values": [ { "name": "IDENT", "value": 258 }, { "name": "UIDENT", "value": 259 }, { "name": "FCONST", "value": 260 }, { "name": "SCONST", "value": 261 }, { "name": "USCONST", "value": 262 }, { "name": "BCONST", "value": 263 }, { "name": "XCONST", "value": 264 }, { "name": "Op", "value": 265 }, { "name": "ICONST", "value": 266 }, { "name": "PARAM", "value": 267 }, { "name": "TYPECAST", "value": 268 }, { "name": "DOT_DOT", "value": 269 }, { "name": "COLON_EQUALS", "value": 270 }, { "name": "EQUALS_GREATER", "value": 271 }, { "name": "LESS_EQUALS", "value": 272 }, { "name": "GREATER_EQUALS", "value": 273 }, { "name": "NOT_EQUALS", "value": 274 }, { "name": "SQL_COMMENT", "value": 275 }, { "name": "C_COMMENT", "value": 276 }, { "name": "ABORT_P", "value": 277 }, { "name": "ABSOLUTE_P", "value": 278 }, { "name": "ACCESS", "value": 279 }, { "name": "ACTION", "value": 280 }, { "name": "ADD_P", "value": 281 }, { "name": "ADMIN", "value": 282 }, { "name": "AFTER", "value": 283 }, { "name": "AGGREGATE", "value": 284 }, { "name": "ALL", "value": 285 }, { "name": "ALSO", "value": 286 }, { "name": "ALTER", "value": 287 }, { "name": "ALWAYS", "value": 288 }, { "name": "ANALYSE", "value": 289 }, { "name": "ANALYZE", "value": 290 }, { "name": "AND", "value": 291 }, { "name": "ANY", "value": 292 }, { "name": "ARRAY", "value": 293 }, { "name": "AS", "value": 294 }, { "name": "ASC", "value": 295 }, { "name": "ASSERTION", "value": 296 }, { "name": "ASSIGNMENT", "value": 297 }, { "name": "ASYMMETRIC", "value": 298 }, { "name": "AT", "value": 299 }, { "name": "ATTACH", "value": 300 }, { "name": "ATTRIBUTE", "value": 301 }, { "name": "AUTHORIZATION", "value": 302 }, { "name": "BACKWARD", "value": 303 }, { "name": "BEFORE", "value": 304 }, { "name": "BEGIN_P", "value": 305 }, { "name": "BETWEEN", "value": 306 }, { "name": "BIGINT", "value": 307 }, { "name": "BINARY", "value": 308 }, { "name": "BIT", "value": 309 }, { "name": "BOOLEAN_P", "value": 310 }, { "name": "BOTH", "value": 311 }, { "name": "BY", "value": 312 }, { "name": "CACHE", "value": 313 }, { "name": "CALL", "value": 314 }, { "name": "CALLED", "value": 315 }, { "name": "CASCADE", "value": 316 }, { "name": "CASCADED", "value": 317 }, { "name": "CASE", "value": 318 }, { "name": "CAST", "value": 319 }, { "name": "CATALOG_P", "value": 320 }, { "name": "CHAIN", "value": 321 }, { "name": "CHAR_P", "value": 322 }, { "name": "CHARACTER", "value": 323 }, { "name": "CHARACTERISTICS", "value": 324 }, { "name": "CHECK", "value": 325 }, { "name": "CHECKPOINT", "value": 326 }, { "name": "CLASS", "value": 327 }, { "name": "CLOSE", "value": 328 }, { "name": "CLUSTER", "value": 329 }, { "name": "COALESCE", "value": 330 }, { "name": "COLLATE", "value": 331 }, { "name": "COLLATION", "value": 332 }, { "name": "COLUMN", "value": 333 }, { "name": "COLUMNS", "value": 334 }, { "name": "COMMENT", "value": 335 }, { "name": "COMMENTS", "value": 336 }, { "name": "COMMIT", "value": 337 }, { "name": "COMMITTED", "value": 338 }, { "name": "CONCURRENTLY", "value": 339 }, { "name": "CONFIGURATION", "value": 340 }, { "name": "CONFLICT", "value": 341 }, { "name": "CONNECTION", "value": 342 }, { "name": "CONSTRAINT", "value": 343 }, { "name": "CONSTRAINTS", "value": 344 }, { "name": "CONTENT_P", "value": 345 }, { "name": "CONTINUE_P", "value": 346 }, { "name": "CONVERSION_P", "value": 347 }, { "name": "COPY", "value": 348 }, { "name": "COST", "value": 349 }, { "name": "CREATE", "value": 350 }, { "name": "CROSS", "value": 351 }, { "name": "CSV", "value": 352 }, { "name": "CUBE", "value": 353 }, { "name": "CURRENT_P", "value": 354 }, { "name": "CURRENT_CATALOG", "value": 355 }, { "name": "CURRENT_DATE", "value": 356 }, { "name": "CURRENT_ROLE", "value": 357 }, { "name": "CURRENT_SCHEMA", "value": 358 }, { "name": "CURRENT_TIME", "value": 359 }, { "name": "CURRENT_TIMESTAMP", "value": 360 }, { "name": "CURRENT_USER", "value": 361 }, { "name": "CURSOR", "value": 362 }, { "name": "CYCLE", "value": 363 }, { "name": "DATA_P", "value": 364 }, { "name": "DATABASE", "value": 365 }, { "name": "DAY_P", "value": 366 }, { "name": "DEALLOCATE", "value": 367 }, { "name": "DEC", "value": 368 }, { "name": "DECIMAL_P", "value": 369 }, { "name": "DECLARE", "value": 370 }, { "name": "DEFAULT", "value": 371 }, { "name": "DEFAULTS", "value": 372 }, { "name": "DEFERRABLE", "value": 373 }, { "name": "DEFERRED", "value": 374 }, { "name": "DEFINER", "value": 375 }, { "name": "DELETE_P", "value": 376 }, { "name": "DELIMITER", "value": 377 }, { "name": "DELIMITERS", "value": 378 }, { "name": "DEPENDS", "value": 379 }, { "name": "DESC", "value": 380 }, { "name": "DETACH", "value": 381 }, { "name": "DICTIONARY", "value": 382 }, { "name": "DISABLE_P", "value": 383 }, { "name": "DISCARD", "value": 384 }, { "name": "DISTINCT", "value": 385 }, { "name": "DO", "value": 386 }, { "name": "DOCUMENT_P", "value": 387 }, { "name": "DOMAIN_P", "value": 388 }, { "name": "DOUBLE_P", "value": 389 }, { "name": "DROP", "value": 390 }, { "name": "EACH", "value": 391 }, { "name": "ELSE", "value": 392 }, { "name": "ENABLE_P", "value": 393 }, { "name": "ENCODING", "value": 394 }, { "name": "ENCRYPTED", "value": 395 }, { "name": "END_P", "value": 396 }, { "name": "ENUM_P", "value": 397 }, { "name": "ESCAPE", "value": 398 }, { "name": "EVENT", "value": 399 }, { "name": "EXCEPT", "value": 400 }, { "name": "EXCLUDE", "value": 401 }, { "name": "EXCLUDING", "value": 402 }, { "name": "EXCLUSIVE", "value": 403 }, { "name": "EXECUTE", "value": 404 }, { "name": "EXISTS", "value": 405 }, { "name": "EXPLAIN", "value": 406 }, { "name": "EXPRESSION", "value": 407 }, { "name": "EXTENSION", "value": 408 }, { "name": "EXTERNAL", "value": 409 }, { "name": "EXTRACT", "value": 410 }, { "name": "FALSE_P", "value": 411 }, { "name": "FAMILY", "value": 412 }, { "name": "FETCH", "value": 413 }, { "name": "FILTER", "value": 414 }, { "name": "FIRST_P", "value": 415 }, { "name": "FLOAT_P", "value": 416 }, { "name": "FOLLOWING", "value": 417 }, { "name": "FOR", "value": 418 }, { "name": "FORCE", "value": 419 }, { "name": "FOREIGN", "value": 420 }, { "name": "FORWARD", "value": 421 }, { "name": "FREEZE", "value": 422 }, { "name": "FROM", "value": 423 }, { "name": "FULL", "value": 424 }, { "name": "FUNCTION", "value": 425 }, { "name": "FUNCTIONS", "value": 426 }, { "name": "GENERATED", "value": 427 }, { "name": "GLOBAL", "value": 428 }, { "name": "GRANT", "value": 429 }, { "name": "GRANTED", "value": 430 }, { "name": "GREATEST", "value": 431 }, { "name": "GROUP_P", "value": 432 }, { "name": "GROUPING", "value": 433 }, { "name": "GROUPS", "value": 434 }, { "name": "HANDLER", "value": 435 }, { "name": "HAVING", "value": 436 }, { "name": "HEADER_P", "value": 437 }, { "name": "HOLD", "value": 438 }, { "name": "HOUR_P", "value": 439 }, { "name": "IDENTITY_P", "value": 440 }, { "name": "IF_P", "value": 441 }, { "name": "ILIKE", "value": 442 }, { "name": "IMMEDIATE", "value": 443 }, { "name": "IMMUTABLE", "value": 444 }, { "name": "IMPLICIT_P", "value": 445 }, { "name": "IMPORT_P", "value": 446 }, { "name": "IN_P", "value": 447 }, { "name": "INCLUDE", "value": 448 }, { "name": "INCLUDING", "value": 449 }, { "name": "INCREMENT", "value": 450 }, { "name": "INDEX", "value": 451 }, { "name": "INDEXES", "value": 452 }, { "name": "INHERIT", "value": 453 }, { "name": "INHERITS", "value": 454 }, { "name": "INITIALLY", "value": 455 }, { "name": "INLINE_P", "value": 456 }, { "name": "INNER_P", "value": 457 }, { "name": "INOUT", "value": 458 }, { "name": "INPUT_P", "value": 459 }, { "name": "INSENSITIVE", "value": 460 }, { "name": "INSERT", "value": 461 }, { "name": "INSTEAD", "value": 462 }, { "name": "INT_P", "value": 463 }, { "name": "INTEGER", "value": 464 }, { "name": "INTERSECT", "value": 465 }, { "name": "INTERVAL", "value": 466 }, { "name": "INTO", "value": 467 }, { "name": "INVOKER", "value": 468 }, { "name": "IS", "value": 469 }, { "name": "ISNULL", "value": 470 }, { "name": "ISOLATION", "value": 471 }, { "name": "JOIN", "value": 472 }, { "name": "KEY", "value": 473 }, { "name": "LABEL", "value": 474 }, { "name": "LANGUAGE", "value": 475 }, { "name": "LARGE_P", "value": 476 }, { "name": "LAST_P", "value": 477 }, { "name": "LATERAL_P", "value": 478 }, { "name": "LEADING", "value": 479 }, { "name": "LEAKPROOF", "value": 480 }, { "name": "LEAST", "value": 481 }, { "name": "LEFT", "value": 482 }, { "name": "LEVEL", "value": 483 }, { "name": "LIKE", "value": 484 }, { "name": "LIMIT", "value": 485 }, { "name": "LISTEN", "value": 486 }, { "name": "LOAD", "value": 487 }, { "name": "LOCAL", "value": 488 }, { "name": "LOCALTIME", "value": 489 }, { "name": "LOCALTIMESTAMP", "value": 490 }, { "name": "LOCATION", "value": 491 }, { "name": "LOCK_P", "value": 492 }, { "name": "LOCKED", "value": 493 }, { "name": "LOGGED", "value": 494 }, { "name": "MAPPING", "value": 495 }, { "name": "MATCH", "value": 496 }, { "name": "MATERIALIZED", "value": 497 }, { "name": "MAXVALUE", "value": 498 }, { "name": "METHOD", "value": 499 }, { "name": "MINUTE_P", "value": 500 }, { "name": "MINVALUE", "value": 501 }, { "name": "MODE", "value": 502 }, { "name": "MONTH_P", "value": 503 }, { "name": "MOVE", "value": 504 }, { "name": "NAME_P", "value": 505 }, { "name": "NAMES", "value": 506 }, { "name": "NATIONAL", "value": 507 }, { "name": "NATURAL", "value": 508 }, { "name": "NCHAR", "value": 509 }, { "name": "NEW", "value": 510 }, { "name": "NEXT", "value": 511 }, { "name": "NFC", "value": 512 }, { "name": "NFD", "value": 513 }, { "name": "NFKC", "value": 514 }, { "name": "NFKD", "value": 515 }, { "name": "NO", "value": 516 }, { "name": "NONE", "value": 517 }, { "name": "NORMALIZE", "value": 518 }, { "name": "NORMALIZED", "value": 519 }, { "name": "NOT", "value": 520 }, { "name": "NOTHING", "value": 521 }, { "name": "NOTIFY", "value": 522 }, { "name": "NOTNULL", "value": 523 }, { "name": "NOWAIT", "value": 524 }, { "name": "NULL_P", "value": 525 }, { "name": "NULLIF", "value": 526 }, { "name": "NULLS_P", "value": 527 }, { "name": "NUMERIC", "value": 528 }, { "name": "OBJECT_P", "value": 529 }, { "name": "OF", "value": 530 }, { "name": "OFF", "value": 531 }, { "name": "OFFSET", "value": 532 }, { "name": "OIDS", "value": 533 }, { "name": "OLD", "value": 534 }, { "name": "ON", "value": 535 }, { "name": "ONLY", "value": 536 }, { "name": "OPERATOR", "value": 537 }, { "name": "OPTION", "value": 538 }, { "name": "OPTIONS", "value": 539 }, { "name": "OR", "value": 540 }, { "name": "ORDER", "value": 541 }, { "name": "ORDINALITY", "value": 542 }, { "name": "OTHERS", "value": 543 }, { "name": "OUT_P", "value": 544 }, { "name": "OUTER_P", "value": 545 }, { "name": "OVER", "value": 546 }, { "name": "OVERLAPS", "value": 547 }, { "name": "OVERLAY", "value": 548 }, { "name": "OVERRIDING", "value": 549 }, { "name": "OWNED", "value": 550 }, { "name": "OWNER", "value": 551 }, { "name": "PARALLEL", "value": 552 }, { "name": "PARSER", "value": 553 }, { "name": "PARTIAL", "value": 554 }, { "name": "PARTITION", "value": 555 }, { "name": "PASSING", "value": 556 }, { "name": "PASSWORD", "value": 557 }, { "name": "PLACING", "value": 558 }, { "name": "PLANS", "value": 559 }, { "name": "POLICY", "value": 560 }, { "name": "POSITION", "value": 561 }, { "name": "PRECEDING", "value": 562 }, { "name": "PRECISION", "value": 563 }, { "name": "PRESERVE", "value": 564 }, { "name": "PREPARE", "value": 565 }, { "name": "PREPARED", "value": 566 }, { "name": "PRIMARY", "value": 567 }, { "name": "PRIOR", "value": 568 }, { "name": "PRIVILEGES", "value": 569 }, { "name": "PROCEDURAL", "value": 570 }, { "name": "PROCEDURE", "value": 571 }, { "name": "PROCEDURES", "value": 572 }, { "name": "PROGRAM", "value": 573 }, { "name": "PUBLICATION", "value": 574 }, { "name": "QUOTE", "value": 575 }, { "name": "RANGE", "value": 576 }, { "name": "READ", "value": 577 }, { "name": "REAL", "value": 578 }, { "name": "REASSIGN", "value": 579 }, { "name": "RECHECK", "value": 580 }, { "name": "RECURSIVE", "value": 581 }, { "name": "REF", "value": 582 }, { "name": "REFERENCES", "value": 583 }, { "name": "REFERENCING", "value": 584 }, { "name": "REFRESH", "value": 585 }, { "name": "REINDEX", "value": 586 }, { "name": "RELATIVE_P", "value": 587 }, { "name": "RELEASE", "value": 588 }, { "name": "RENAME", "value": 589 }, { "name": "REPEATABLE", "value": 590 }, { "name": "REPLACE", "value": 591 }, { "name": "REPLICA", "value": 592 }, { "name": "RESET", "value": 593 }, { "name": "RESTART", "value": 594 }, { "name": "RESTRICT", "value": 595 }, { "name": "RETURNING", "value": 596 }, { "name": "RETURNS", "value": 597 }, { "name": "REVOKE", "value": 598 }, { "name": "RIGHT", "value": 599 }, { "name": "ROLE", "value": 600 }, { "name": "ROLLBACK", "value": 601 }, { "name": "ROLLUP", "value": 602 }, { "name": "ROUTINE", "value": 603 }, { "name": "ROUTINES", "value": 604 }, { "name": "ROW", "value": 605 }, { "name": "ROWS", "value": 606 }, { "name": "RULE", "value": 607 }, { "name": "SAVEPOINT", "value": 608 }, { "name": "SCHEMA", "value": 609 }, { "name": "SCHEMAS", "value": 610 }, { "name": "SCROLL", "value": 611 }, { "name": "SEARCH", "value": 612 }, { "name": "SECOND_P", "value": 613 }, { "name": "SECURITY", "value": 614 }, { "name": "SELECT", "value": 615 }, { "name": "SEQUENCE", "value": 616 }, { "name": "SEQUENCES", "value": 617 }, { "name": "SERIALIZABLE", "value": 618 }, { "name": "SERVER", "value": 619 }, { "name": "SESSION", "value": 620 }, { "name": "SESSION_USER", "value": 621 }, { "name": "SET", "value": 622 }, { "name": "SETS", "value": 623 }, { "name": "SETOF", "value": 624 }, { "name": "SHARE", "value": 625 }, { "name": "SHOW", "value": 626 }, { "name": "SIMILAR", "value": 627 }, { "name": "SIMPLE", "value": 628 }, { "name": "SKIP", "value": 629 }, { "name": "SMALLINT", "value": 630 }, { "name": "SNAPSHOT", "value": 631 }, { "name": "SOME", "value": 632 }, { "name": "SQL_P", "value": 633 }, { "name": "STABLE", "value": 634 }, { "name": "STANDALONE_P", "value": 635 }, { "name": "START", "value": 636 }, { "name": "STATEMENT", "value": 637 }, { "name": "STATISTICS", "value": 638 }, { "name": "STDIN", "value": 639 }, { "name": "STDOUT", "value": 640 }, { "name": "STORAGE", "value": 641 }, { "name": "STORED", "value": 642 }, { "name": "STRICT_P", "value": 643 }, { "name": "STRIP_P", "value": 644 }, { "name": "SUBSCRIPTION", "value": 645 }, { "name": "SUBSTRING", "value": 646 }, { "name": "SUPPORT", "value": 647 }, { "name": "SYMMETRIC", "value": 648 }, { "name": "SYSID", "value": 649 }, { "name": "SYSTEM_P", "value": 650 }, { "name": "TABLE", "value": 651 }, { "name": "TABLES", "value": 652 }, { "name": "TABLESAMPLE", "value": 653 }, { "name": "TABLESPACE", "value": 654 }, { "name": "TEMP", "value": 655 }, { "name": "TEMPLATE", "value": 656 }, { "name": "TEMPORARY", "value": 657 }, { "name": "TEXT_P", "value": 658 }, { "name": "THEN", "value": 659 }, { "name": "TIES", "value": 660 }, { "name": "TIME", "value": 661 }, { "name": "TIMESTAMP", "value": 662 }, { "name": "TO", "value": 663 }, { "name": "TRAILING", "value": 664 }, { "name": "TRANSACTION", "value": 665 }, { "name": "TRANSFORM", "value": 666 }, { "name": "TREAT", "value": 667 }, { "name": "TRIGGER", "value": 668 }, { "name": "TRIM", "value": 669 }, { "name": "TRUE_P", "value": 670 }, { "name": "TRUNCATE", "value": 671 }, { "name": "TRUSTED", "value": 672 }, { "name": "TYPE_P", "value": 673 }, { "name": "TYPES_P", "value": 674 }, { "name": "UESCAPE", "value": 675 }, { "name": "UNBOUNDED", "value": 676 }, { "name": "UNCOMMITTED", "value": 677 }, { "name": "UNENCRYPTED", "value": 678 }, { "name": "UNION", "value": 679 }, { "name": "UNIQUE", "value": 680 }, { "name": "UNKNOWN", "value": 681 }, { "name": "UNLISTEN", "value": 682 }, { "name": "UNLOGGED", "value": 683 }, { "name": "UNTIL", "value": 684 }, { "name": "UPDATE", "value": 685 }, { "name": "USER", "value": 686 }, { "name": "USING", "value": 687 }, { "name": "VACUUM", "value": 688 }, { "name": "VALID", "value": 689 }, { "name": "VALIDATE", "value": 690 }, { "name": "VALIDATOR", "value": 691 }, { "name": "VALUE_P", "value": 692 }, { "name": "VALUES", "value": 693 }, { "name": "VARCHAR", "value": 694 }, { "name": "VARIADIC", "value": 695 }, { "name": "VARYING", "value": 696 }, { "name": "VERBOSE", "value": 697 }, { "name": "VERSION_P", "value": 698 }, { "name": "VIEW", "value": 699 }, { "name": "VIEWS", "value": 700 }, { "name": "VOLATILE", "value": 701 }, { "name": "WHEN", "value": 702 }, { "name": "WHERE", "value": 703 }, { "name": "WHITESPACE_P", "value": 704 }, { "name": "WINDOW", "value": 705 }, { "name": "WITH", "value": 706 }, { "name": "WITHIN", "value": 707 }, { "name": "WITHOUT", "value": 708 }, { "name": "WORK", "value": 709 }, { "name": "WRAPPER", "value": 710 }, { "name": "WRITE", "value": 711 }, { "name": "XML_P", "value": 712 }, { "name": "XMLATTRIBUTES", "value": 713 }, { "name": "XMLCONCAT", "value": 714 }, { "name": "XMLELEMENT", "value": 715 }, { "name": "XMLEXISTS", "value": 716 }, { "name": "XMLFOREST", "value": 717 }, { "name": "XMLNAMESPACES", "value": 718 }, { "name": "XMLPARSE", "value": 719 }, { "name": "XMLPI", "value": 720 }, { "name": "XMLROOT", "value": 721 }, { "name": "XMLSERIALIZE", "value": 722 }, { "name": "XMLTABLE", "value": 723 }, { "name": "YEAR_P", "value": 724 }, { "name": "YES_P", "value": 725 }, { "name": "ZONE", "value": 726 }, { "name": "NOT_LA", "value": 727 }, { "name": "NULLS_LA", "value": 728 }, { "name": "WITH_LA", "value": 729 }, { "name": "POSTFIXOP", "value": 730 }, { "name": "UMINUS", "value": 731 } ], "comment": " /* Put the tokens into the symbol table, so that GDB and other debuggers\n know about them. */\n" } } }libpg_query-13-2.1.0/srcdata/nodetypes.json000066400000000000000000000173411413137616400206170ustar00rootroot00000000000000[ "Invalid", "IndexInfo", "ExprContext", "ProjectionInfo", "JunkFilter", "OnConflictSetState", "ResultRelInfo", "EState", "TupleTableSlot", "Plan", "Result", "ProjectSet", "ModifyTable", "Append", "MergeAppend", "RecursiveUnion", "BitmapAnd", "BitmapOr", "Scan", "SeqScan", "SampleScan", "IndexScan", "IndexOnlyScan", "BitmapIndexScan", "BitmapHeapScan", "TidScan", "SubqueryScan", "FunctionScan", "ValuesScan", "TableFuncScan", "CteScan", "NamedTuplestoreScan", "WorkTableScan", "ForeignScan", "CustomScan", "Join", "NestLoop", "MergeJoin", "HashJoin", "Material", "Sort", "IncrementalSort", "Group", "Agg", "WindowAgg", "Unique", "Gather", "GatherMerge", "Hash", "SetOp", "LockRows", "Limit", "NestLoopParam", "PlanRowMark", "PartitionPruneInfo", "PartitionedRelPruneInfo", "PartitionPruneStepOp", "PartitionPruneStepCombine", "PlanInvalItem", "PlanState", "ResultState", "ProjectSetState", "ModifyTableState", "AppendState", "MergeAppendState", "RecursiveUnionState", "BitmapAndState", "BitmapOrState", "ScanState", "SeqScanState", "SampleScanState", "IndexScanState", "IndexOnlyScanState", "BitmapIndexScanState", "BitmapHeapScanState", "TidScanState", "SubqueryScanState", "FunctionScanState", "TableFuncScanState", "ValuesScanState", "CteScanState", "NamedTuplestoreScanState", "WorkTableScanState", "ForeignScanState", "CustomScanState", "JoinState", "NestLoopState", "MergeJoinState", "HashJoinState", "MaterialState", "SortState", "IncrementalSortState", "GroupState", "AggState", "WindowAggState", "UniqueState", "GatherState", "GatherMergeState", "HashState", "SetOpState", "LockRowsState", "LimitState", "Alias", "RangeVar", "TableFunc", "Expr", "Var", "Const", "Param", "Aggref", "GroupingFunc", "WindowFunc", "SubscriptingRef", "FuncExpr", "NamedArgExpr", "OpExpr", "DistinctExpr", "NullIfExpr", "ScalarArrayOpExpr", "BoolExpr", "SubLink", "SubPlan", "AlternativeSubPlan", "FieldSelect", "FieldStore", "RelabelType", "CoerceViaIO", "ArrayCoerceExpr", "ConvertRowtypeExpr", "CollateExpr", "CaseExpr", "CaseWhen", "CaseTestExpr", "ArrayExpr", "RowExpr", "RowCompareExpr", "CoalesceExpr", "MinMaxExpr", "SQLValueFunction", "XmlExpr", "NullTest", "BooleanTest", "CoerceToDomain", "CoerceToDomainValue", "SetToDefault", "CurrentOfExpr", "NextValueExpr", "InferenceElem", "TargetEntry", "RangeTblRef", "JoinExpr", "FromExpr", "OnConflictExpr", "IntoClause", "ExprState", "AggrefExprState", "WindowFuncExprState", "SetExprState", "SubPlanState", "AlternativeSubPlanState", "DomainConstraintState", "PlannerInfo", "PlannerGlobal", "RelOptInfo", "IndexOptInfo", "ForeignKeyOptInfo", "ParamPathInfo", "Path", "IndexPath", "BitmapHeapPath", "BitmapAndPath", "BitmapOrPath", "TidPath", "SubqueryScanPath", "ForeignPath", "CustomPath", "NestPath", "MergePath", "HashPath", "AppendPath", "MergeAppendPath", "GroupResultPath", "MaterialPath", "UniquePath", "GatherPath", "GatherMergePath", "ProjectionPath", "ProjectSetPath", "SortPath", "IncrementalSortPath", "GroupPath", "UpperUniquePath", "AggPath", "GroupingSetsPath", "MinMaxAggPath", "WindowAggPath", "SetOpPath", "RecursiveUnionPath", "LockRowsPath", "ModifyTablePath", "LimitPath", "EquivalenceClass", "EquivalenceMember", "PathKey", "PathTarget", "RestrictInfo", "IndexClause", "PlaceHolderVar", "SpecialJoinInfo", "AppendRelInfo", "PlaceHolderInfo", "MinMaxAggInfo", "PlannerParamItem", "RollupData", "GroupingSetData", "StatisticExtInfo", "MemoryContext", "AllocSetContext", "SlabContext", "GenerationContext", "Value", "Integer", "Float", "String", "BitString", "Null", "List", "IntList", "OidList", "ExtensibleNode", "RawStmt", "Query", "PlannedStmt", "InsertStmt", "DeleteStmt", "UpdateStmt", "SelectStmt", "AlterTableStmt", "AlterTableCmd", "AlterDomainStmt", "SetOperationStmt", "GrantStmt", "GrantRoleStmt", "AlterDefaultPrivilegesStmt", "ClosePortalStmt", "ClusterStmt", "CopyStmt", "CreateStmt", "DefineStmt", "DropStmt", "TruncateStmt", "CommentStmt", "FetchStmt", "IndexStmt", "CreateFunctionStmt", "AlterFunctionStmt", "DoStmt", "RenameStmt", "RuleStmt", "NotifyStmt", "ListenStmt", "UnlistenStmt", "TransactionStmt", "ViewStmt", "LoadStmt", "CreateDomainStmt", "CreatedbStmt", "DropdbStmt", "VacuumStmt", "ExplainStmt", "CreateTableAsStmt", "CreateSeqStmt", "AlterSeqStmt", "VariableSetStmt", "VariableShowStmt", "DiscardStmt", "CreateTrigStmt", "CreatePLangStmt", "CreateRoleStmt", "AlterRoleStmt", "DropRoleStmt", "LockStmt", "ConstraintsSetStmt", "ReindexStmt", "CheckPointStmt", "CreateSchemaStmt", "AlterDatabaseStmt", "AlterDatabaseSetStmt", "AlterRoleSetStmt", "CreateConversionStmt", "CreateCastStmt", "CreateOpClassStmt", "CreateOpFamilyStmt", "AlterOpFamilyStmt", "PrepareStmt", "ExecuteStmt", "DeallocateStmt", "DeclareCursorStmt", "CreateTableSpaceStmt", "DropTableSpaceStmt", "AlterObjectDependsStmt", "AlterObjectSchemaStmt", "AlterOwnerStmt", "AlterOperatorStmt", "AlterTypeStmt", "DropOwnedStmt", "ReassignOwnedStmt", "CompositeTypeStmt", "CreateEnumStmt", "CreateRangeStmt", "AlterEnumStmt", "AlterTSDictionaryStmt", "AlterTSConfigurationStmt", "CreateFdwStmt", "AlterFdwStmt", "CreateForeignServerStmt", "AlterForeignServerStmt", "CreateUserMappingStmt", "AlterUserMappingStmt", "DropUserMappingStmt", "AlterTableSpaceOptionsStmt", "AlterTableMoveAllStmt", "SecLabelStmt", "CreateForeignTableStmt", "ImportForeignSchemaStmt", "CreateExtensionStmt", "AlterExtensionStmt", "AlterExtensionContentsStmt", "CreateEventTrigStmt", "AlterEventTrigStmt", "RefreshMatViewStmt", "ReplicaIdentityStmt", "AlterSystemStmt", "CreatePolicyStmt", "AlterPolicyStmt", "CreateTransformStmt", "CreateAmStmt", "CreatePublicationStmt", "AlterPublicationStmt", "CreateSubscriptionStmt", "AlterSubscriptionStmt", "DropSubscriptionStmt", "CreateStatsStmt", "AlterCollationStmt", "CallStmt", "AlterStatsStmt", "A_Expr", "ColumnRef", "ParamRef", "A_Const", "FuncCall", "A_Star", "A_Indices", "A_Indirection", "A_ArrayExpr", "ResTarget", "MultiAssignRef", "TypeCast", "CollateClause", "SortBy", "WindowDef", "RangeSubselect", "RangeFunction", "RangeTableSample", "RangeTableFunc", "RangeTableFuncCol", "TypeName", "ColumnDef", "IndexElem", "Constraint", "DefElem", "RangeTblEntry", "RangeTblFunction", "TableSampleClause", "WithCheckOption", "SortGroupClause", "GroupingSet", "WindowClause", "ObjectWithArgs", "AccessPriv", "CreateOpClassItem", "TableLikeClause", "FunctionParameter", "LockingClause", "RowMarkClause", "XmlSerialize", "WithClause", "InferClause", "OnConflictClause", "CommonTableExpr", "RoleSpec", "TriggerTransition", "PartitionElem", "PartitionSpec", "PartitionBoundSpec", "PartitionRangeDatum", "PartitionCmd", "VacuumRelation", "IdentifySystemCmd", "BaseBackupCmd", "CreateReplicationSlotCmd", "DropReplicationSlotCmd", "StartReplicationCmd", "TimeLineHistoryCmd", "SQLCmd", "TriggerData", "EventTriggerData", "ReturnSetInfo", "WindowObjectData", "TIDBitmap", "InlineCodeBlock", "FdwRoutine", "IndexAmRoutine", "TableAmRoutine", "TsmRoutine", "ForeignKeyCacheInfo", "CallContext", "SupportRequestSimplify", "SupportRequestSelectivity", "SupportRequestCost", "SupportRequestRows" ]libpg_query-13-2.1.0/srcdata/struct_defs.json000066400000000000000000011200221413137616400211220ustar00rootroot00000000000000{ "nodes/parsenodes": { "Query": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "commandType", "c_type": "CmdType", "comment": "/* select|insert|update|delete|utility */" }, { "comment": "" }, { "name": "querySource", "c_type": "QuerySource", "comment": "/* where did I come from? */" }, { "comment": "" }, { "name": "queryId", "c_type": "uint64", "comment": "/* query identifier (can be set by plugins) */" }, { "comment": "" }, { "name": "canSetTag", "c_type": "bool", "comment": "/* do I set the command result tag? */" }, { "comment": "" }, { "name": "utilityStmt", "c_type": "Node*", "comment": "/* non-null if commandType == CMD_UTILITY */" }, { "comment": "" }, { "name": "resultRelation", "c_type": "int", "comment": "/* rtable index of target relation for\n\t\t\t\t\t\t\t\t * INSERT/UPDATE/DELETE; 0 for SELECT */\n" }, { "comment": "" }, { "name": "hasAggs", "c_type": "bool", "comment": "/* has aggregates in tlist or havingQual */" }, { "name": "hasWindowFuncs", "c_type": "bool", "comment": "/* has window functions in tlist */" }, { "name": "hasTargetSRFs", "c_type": "bool", "comment": "/* has set-returning functions in tlist */" }, { "name": "hasSubLinks", "c_type": "bool", "comment": "/* has subquery SubLink */" }, { "name": "hasDistinctOn", "c_type": "bool", "comment": "/* distinctClause is from DISTINCT ON */" }, { "name": "hasRecursive", "c_type": "bool", "comment": "/* WITH RECURSIVE was specified */" }, { "name": "hasModifyingCTE", "c_type": "bool", "comment": "/* has INSERT/UPDATE/DELETE in WITH */" }, { "name": "hasForUpdate", "c_type": "bool", "comment": "/* FOR [KEY] UPDATE/SHARE was specified */" }, { "name": "hasRowSecurity", "c_type": "bool", "comment": "/* rewriter has applied some RLS policy */" }, { "comment": "" }, { "name": "cteList", "c_type": "List*", "comment": "/* WITH list (of CommonTableExpr's) */" }, { "comment": "" }, { "name": "rtable", "c_type": "List*", "comment": "/* list of range table entries */" }, { "name": "jointree", "c_type": "FromExpr*", "comment": "/* table join tree (FROM and WHERE clauses) */" }, { "comment": "" }, { "name": "targetList", "c_type": "List*", "comment": "/* target list (of TargetEntry) */" }, { "comment": "" }, { "name": "override", "c_type": "OverridingKind", "comment": "/* OVERRIDING clause */" }, { "comment": "" }, { "name": "onConflict", "c_type": "OnConflictExpr*", "comment": "/* ON CONFLICT DO [NOTHING | UPDATE] */" }, { "comment": "" }, { "name": "returningList", "c_type": "List*", "comment": "/* return-values list (of TargetEntry) */" }, { "comment": "" }, { "name": "groupClause", "c_type": "List*", "comment": "/* a list of SortGroupClause's */" }, { "comment": "" }, { "name": "groupingSets", "c_type": "List*", "comment": "/* a list of GroupingSet's if present */" }, { "comment": "" }, { "name": "havingQual", "c_type": "Node*", "comment": "/* qualifications applied to groups */" }, { "comment": "" }, { "name": "windowClause", "c_type": "List*", "comment": "/* a list of WindowClause's */" }, { "comment": "" }, { "name": "distinctClause", "c_type": "List*", "comment": "/* a list of SortGroupClause's */" }, { "comment": "" }, { "name": "sortClause", "c_type": "List*", "comment": "/* a list of SortGroupClause's */" }, { "comment": "" }, { "name": "limitOffset", "c_type": "Node*", "comment": "/* # of result tuples to skip (int8 expr) */" }, { "name": "limitCount", "c_type": "Node*", "comment": "/* # of result tuples to return (int8 expr) */" }, { "name": "limitOption", "c_type": "LimitOption", "comment": "/* limit type */" }, { "comment": "" }, { "name": "rowMarks", "c_type": "List*", "comment": "/* a list of RowMarkClause's */" }, { "comment": "" }, { "name": "setOperations", "c_type": "Node*", "comment": "/* set-operation tree if this is top level of\n\t\t\t\t\t\t\t\t * a UNION/INTERSECT/EXCEPT query */\n" }, { "comment": "" }, { "name": "constraintDeps", "c_type": "List*", "comment": "/* a list of pg_constraint OIDs that the query\n\t\t\t\t\t\t\t\t * depends on to be semantically valid */\n" }, { "comment": "" }, { "name": "withCheckOptions", "c_type": "List*", "comment": "/* a list of WithCheckOption's (added\n\t\t\t\t\t\t\t\t\t * during rewrite) */\n" }, { "comment": "" }, { "comment": "\t/*\n\t * The following two fields identify the portion of the source text string\n\t * containing this query. They are typically only populated in top-level\n\t * Queries, not in sub-queries. When not set, they might both be zero, or\n\t * both be -1 meaning \"unknown\".\n\t */\n" }, { "name": "stmt_location", "c_type": "int", "comment": "/* start location, or -1 if unknown */" }, { "name": "stmt_len", "c_type": "int", "comment": "/* length in bytes; 0 means \"rest of string\" */" } ], "comment": "/*\n * Query -\n *\t Parse analysis turns all statements into a Query tree\n *\t for further processing by the rewriter and planner.\n *\n *\t Utility statements (i.e. non-optimizable statements) have the\n *\t utilityStmt field set, and the rest of the Query is mostly dummy.\n *\n *\t Planning converts a Query tree into a Plan tree headed by a PlannedStmt\n *\t node --- the Query structure is not used by the executor.\n */\n" }, "TypeName": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "names", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "typeOid", "c_type": "Oid", "comment": "/* type identified by OID */" }, { "name": "setof", "c_type": "bool", "comment": "/* is a set? */" }, { "name": "pct_type", "c_type": "bool", "comment": "/* %TYPE specified? */" }, { "name": "typmods", "c_type": "List*", "comment": "/* type modifier expression(s) */" }, { "name": "typemod", "c_type": "int32", "comment": "/* prespecified type modifier */" }, { "name": "arrayBounds", "c_type": "List*", "comment": "/* array bounds */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * TypeName - specifies a type in definitions\n *\n * For TypeName structures generated internally, it is often easier to\n * specify the type by OID than by name. If \"names\" is NIL then the\n * actual type OID is given by typeOid, otherwise typeOid is unused.\n * Similarly, if \"typmods\" is NIL then the actual typmod is expected to\n * be prespecified in typemod, otherwise typemod is unused.\n *\n * If pct_type is true, then names is actually a field name and we look up\n * the type of that field. Otherwise (the normal case), names is a type\n * name possibly qualified with schema and database name.\n */\n" }, "ColumnRef": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "fields", "c_type": "List*", "comment": "/* field names (Value strings) or A_Star */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * ColumnRef - specifies a reference to a column, or possibly a whole tuple\n *\n * The \"fields\" list must be nonempty. It can contain string Value nodes\n * (representing names) and A_Star nodes (representing occurrence of a '*').\n * Currently, A_Star must appear only as the last list element --- the grammar\n * is responsible for enforcing this!\n *\n * Note: any container subscripting or selection of fields from composite columns\n * is represented by an A_Indirection node above the ColumnRef. However,\n * for simplicity in the normal case, initial field selection from a table\n * name is represented within ColumnRef and not by adding A_Indirection.\n */\n" }, "ParamRef": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "number", "c_type": "int", "comment": "/* the number of the parameter */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * ParamRef - specifies a $n parameter reference\n */\n" }, "A_Expr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "kind", "c_type": "A_Expr_Kind", "comment": "/* see above */" }, { "name": "name", "c_type": "List*", "comment": "/* possibly-qualified name of operator */" }, { "name": "lexpr", "c_type": "Node*", "comment": "/* left argument, or NULL if none */" }, { "name": "rexpr", "c_type": "Node*", "comment": "/* right argument, or NULL if none */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * A_Expr - infix, prefix, and postfix expressions\n */\n" }, "A_Const": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "val", "c_type": "Value", "comment": "/* value (includes type info, see value.h) */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * A_Const - a literal constant\n */\n" }, "TypeCast": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "arg", "c_type": "Node*", "comment": "/* the expression being casted */" }, { "name": "typeName", "c_type": "TypeName*", "comment": "/* the target type */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * TypeCast - a CAST expression\n */\n" }, "CollateClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "arg", "c_type": "Node*", "comment": "/* input expression */" }, { "name": "collname", "c_type": "List*", "comment": "/* possibly-qualified collation name */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * CollateClause - a COLLATE expression\n */\n" }, "RoleSpec": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "roletype", "c_type": "RoleSpecType", "comment": "/* Type of this rolespec */" }, { "name": "rolename", "c_type": "char*", "comment": "/* filled only for ROLESPEC_CSTRING */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": null }, "FuncCall": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "funcname", "c_type": "List*", "comment": "/* qualified name of function */" }, { "name": "args", "c_type": "List*", "comment": "/* the arguments (list of exprs) */" }, { "name": "agg_order", "c_type": "List*", "comment": "/* ORDER BY (list of SortBy) */" }, { "name": "agg_filter", "c_type": "Node*", "comment": "/* FILTER clause, if any */" }, { "name": "agg_within_group", "c_type": "bool", "comment": "/* ORDER BY appeared in WITHIN GROUP */" }, { "name": "agg_star", "c_type": "bool", "comment": "/* argument was really '*' */" }, { "name": "agg_distinct", "c_type": "bool", "comment": "/* arguments were labeled DISTINCT */" }, { "name": "func_variadic", "c_type": "bool", "comment": "/* last argument was labeled VARIADIC */" }, { "name": "over", "c_type": "WindowDef*", "comment": "/* OVER clause, if any */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * FuncCall - a function or aggregate invocation\n *\n * agg_order (if not NIL) indicates we saw 'foo(... ORDER BY ...)', or if\n * agg_within_group is true, it was 'foo(...) WITHIN GROUP (ORDER BY ...)'.\n * agg_star indicates we saw a 'foo(*)' construct, while agg_distinct\n * indicates we saw 'foo(DISTINCT ...)'. In any of these cases, the\n * construct *must* be an aggregate call. Otherwise, it might be either an\n * aggregate or some other kind of function. However, if FILTER or OVER is\n * present it had better be an aggregate or window function.\n *\n * Normally, you'd initialize this via makeFuncCall() and then only change the\n * parts of the struct its defaults don't match afterwards, as needed.\n */\n" }, "A_Star": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null } ], "comment": "/*\n * A_Star - '*' representing all columns of a table or compound field\n *\n * This can appear within ColumnRef.fields, A_Indirection.indirection, and\n * ResTarget.indirection lists.\n */\n" }, "A_Indices": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "is_slice", "c_type": "bool", "comment": "/* true if slice (i.e., colon present) */" }, { "name": "lidx", "c_type": "Node*", "comment": "/* slice lower bound, if any */" }, { "name": "uidx", "c_type": "Node*", "comment": "/* subscript, or slice upper bound if any */" } ], "comment": "/*\n * A_Indices - array subscript or slice bounds ([idx] or [lidx:uidx])\n *\n * In slice case, either or both of lidx and uidx can be NULL (omitted).\n * In non-slice case, uidx holds the single subscript and lidx is always NULL.\n */\n" }, "A_Indirection": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "arg", "c_type": "Node*", "comment": "/* the thing being selected from */" }, { "name": "indirection", "c_type": "List*", "comment": "/* subscripts and/or field names and/or * */" } ], "comment": "/*\n * A_Indirection - select a field and/or array element from an expression\n *\n * The indirection list can contain A_Indices nodes (representing\n * subscripting), string Value nodes (representing field selection --- the\n * string value is the name of the field to select), and A_Star nodes\n * (representing selection of all fields of a composite type).\n * For example, a complex selection operation like\n *\t\t\t\t(foo).field1[42][7].field2\n * would be represented with a single A_Indirection node having a 4-element\n * indirection list.\n *\n * Currently, A_Star must appear only as the last list element --- the grammar\n * is responsible for enforcing this!\n */\n" }, "A_ArrayExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "elements", "c_type": "List*", "comment": "/* array element expressions */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * A_ArrayExpr - an ARRAY[] construct\n */\n" }, "ResTarget": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": "/* column name or NULL */" }, { "name": "indirection", "c_type": "List*", "comment": "/* subscripts, field names, and '*', or NIL */" }, { "name": "val", "c_type": "Node*", "comment": "/* the value expression to compute or assign */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * ResTarget -\n *\t result target (used in target list of pre-transformed parse trees)\n *\n * In a SELECT target list, 'name' is the column label from an\n * 'AS ColumnLabel' clause, or NULL if there was none, and 'val' is the\n * value expression itself. The 'indirection' field is not used.\n *\n * INSERT uses ResTarget in its target-column-names list. Here, 'name' is\n * the name of the destination column, 'indirection' stores any subscripts\n * attached to the destination, and 'val' is not used.\n *\n * In an UPDATE target list, 'name' is the name of the destination column,\n * 'indirection' stores any subscripts attached to the destination, and\n * 'val' is the expression to assign.\n *\n * See A_Indirection for more info about what can appear in 'indirection'.\n */\n" }, "MultiAssignRef": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "source", "c_type": "Node*", "comment": "/* the row-valued expression */" }, { "name": "colno", "c_type": "int", "comment": "/* column number for this target (1..n) */" }, { "name": "ncolumns", "c_type": "int", "comment": "/* number of targets in the construct */" } ], "comment": "/*\n * MultiAssignRef - element of a row source expression for UPDATE\n *\n * In an UPDATE target list, when we have SET (a,b,c) = row-valued-expression,\n * we generate separate ResTarget items for each of a,b,c. Their \"val\" trees\n * are MultiAssignRef nodes numbered 1..n, linking to a common copy of the\n * row-valued-expression (which parse analysis will process only once, when\n * handling the MultiAssignRef with colno=1).\n */\n" }, "SortBy": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "node", "c_type": "Node*", "comment": "/* expression to sort on */" }, { "name": "sortby_dir", "c_type": "SortByDir", "comment": "/* ASC/DESC/USING/default */" }, { "name": "sortby_nulls", "c_type": "SortByNulls", "comment": "/* NULLS FIRST/LAST */" }, { "name": "useOp", "c_type": "List*", "comment": "/* name of op to use, if SORTBY_USING */" }, { "name": "location", "c_type": "int", "comment": "/* operator location, or -1 if none/unknown */" } ], "comment": "/*\n * SortBy - for ORDER BY clause\n */\n" }, "WindowDef": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": "/* window's own name */" }, { "name": "refname", "c_type": "char*", "comment": "/* referenced window name, if any */" }, { "name": "partitionClause", "c_type": "List*", "comment": "/* PARTITION BY expression list */" }, { "name": "orderClause", "c_type": "List*", "comment": "/* ORDER BY (list of SortBy) */" }, { "name": "frameOptions", "c_type": "int", "comment": "/* frame_clause options, see below */" }, { "name": "startOffset", "c_type": "Node*", "comment": "/* expression for starting bound, if any */" }, { "name": "endOffset", "c_type": "Node*", "comment": "/* expression for ending bound, if any */" }, { "name": "location", "c_type": "int", "comment": "/* parse location, or -1 if none/unknown */" } ], "comment": "/*\n * WindowDef - raw representation of WINDOW and OVER clauses\n *\n * For entries in a WINDOW list, \"name\" is the window name being defined.\n * For OVER clauses, we use \"name\" for the \"OVER window\" syntax, or \"refname\"\n * for the \"OVER (window)\" syntax, which is subtly different --- the latter\n * implies overriding the window frame clause.\n */\n" }, "RangeSubselect": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "lateral", "c_type": "bool", "comment": "/* does it have LATERAL prefix? */" }, { "name": "subquery", "c_type": "Node*", "comment": "/* the untransformed sub-select clause */" }, { "name": "alias", "c_type": "Alias*", "comment": "/* table alias & optional column aliases */" } ], "comment": "/*\n * RangeSubselect - subquery appearing in a FROM clause\n */\n" }, "RangeFunction": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "lateral", "c_type": "bool", "comment": "/* does it have LATERAL prefix? */" }, { "name": "ordinality", "c_type": "bool", "comment": "/* does it have WITH ORDINALITY suffix? */" }, { "name": "is_rowsfrom", "c_type": "bool", "comment": "/* is result of ROWS FROM() syntax? */" }, { "name": "functions", "c_type": "List*", "comment": "/* per-function information, see above */" }, { "name": "alias", "c_type": "Alias*", "comment": "/* table alias & optional column aliases */" }, { "name": "coldeflist", "c_type": "List*", "comment": "/* list of ColumnDef nodes to describe result\n\t\t\t\t\t\t\t\t * of function returning RECORD */\n" } ], "comment": "/*\n * RangeFunction - function call appearing in a FROM clause\n *\n * functions is a List because we use this to represent the construct\n * ROWS FROM(func1(...), func2(...), ...). Each element of this list is a\n * two-element sublist, the first element being the untransformed function\n * call tree, and the second element being a possibly-empty list of ColumnDef\n * nodes representing any columndef list attached to that function within the\n * ROWS FROM() syntax.\n *\n * alias and coldeflist represent any alias and/or columndef list attached\n * at the top level. (We disallow coldeflist appearing both here and\n * per-function, but that's checked in parse analysis, not by the grammar.)\n */\n" }, "RangeTableFunc": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "lateral", "c_type": "bool", "comment": "/* does it have LATERAL prefix? */" }, { "name": "docexpr", "c_type": "Node*", "comment": "/* document expression */" }, { "name": "rowexpr", "c_type": "Node*", "comment": "/* row generator expression */" }, { "name": "namespaces", "c_type": "List*", "comment": "/* list of namespaces as ResTarget */" }, { "name": "columns", "c_type": "List*", "comment": "/* list of RangeTableFuncCol */" }, { "name": "alias", "c_type": "Alias*", "comment": "/* table alias & optional column aliases */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * RangeTableFunc - raw form of \"table functions\" such as XMLTABLE\n */\n" }, "RangeTableFuncCol": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "colname", "c_type": "char*", "comment": "/* name of generated column */" }, { "name": "typeName", "c_type": "TypeName*", "comment": "/* type of generated column */" }, { "name": "for_ordinality", "c_type": "bool", "comment": "/* does it have FOR ORDINALITY? */" }, { "name": "is_not_null", "c_type": "bool", "comment": "/* does it have NOT NULL? */" }, { "name": "colexpr", "c_type": "Node*", "comment": "/* column filter expression */" }, { "name": "coldefexpr", "c_type": "Node*", "comment": "/* column default value expression */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * RangeTableFuncCol - one column in a RangeTableFunc->columns\n *\n * If for_ordinality is true (FOR ORDINALITY), then the column is an int4\n * column and the rest of the fields are ignored.\n */\n" }, "RangeTableSample": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "Node*", "comment": "/* relation to be sampled */" }, { "name": "method", "c_type": "List*", "comment": "/* sampling method name (possibly qualified) */" }, { "name": "args", "c_type": "List*", "comment": "/* argument(s) for sampling method */" }, { "name": "repeatable", "c_type": "Node*", "comment": "/* REPEATABLE expression, or NULL if none */" }, { "name": "location", "c_type": "int", "comment": "/* method name location, or -1 if unknown */" } ], "comment": "/*\n * RangeTableSample - TABLESAMPLE appearing in a raw FROM clause\n *\n * This node, appearing only in raw parse trees, represents\n *\t\t TABLESAMPLE () REPEATABLE ()\n * Currently, the can only be a RangeVar, but we might in future\n * allow RangeSubselect and other options. Note that the RangeTableSample\n * is wrapped around the node representing the , rather than being\n * a subfield of it.\n */\n" }, "ColumnDef": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "colname", "c_type": "char*", "comment": "/* name of column */" }, { "name": "typeName", "c_type": "TypeName*", "comment": "/* type of column */" }, { "name": "inhcount", "c_type": "int", "comment": "/* number of times column is inherited */" }, { "name": "is_local", "c_type": "bool", "comment": "/* column has local (non-inherited) def'n */" }, { "name": "is_not_null", "c_type": "bool", "comment": "/* NOT NULL constraint specified? */" }, { "name": "is_from_type", "c_type": "bool", "comment": "/* column definition came from table type */" }, { "name": "storage", "c_type": "char", "comment": "/* attstorage setting, or 0 for default */" }, { "name": "raw_default", "c_type": "Node*", "comment": "/* default value (untransformed parse tree) */" }, { "name": "cooked_default", "c_type": "Node*", "comment": "/* default value (transformed expr tree) */" }, { "name": "identity", "c_type": "char", "comment": "/* attidentity setting */" }, { "name": "identitySequence", "c_type": "RangeVar*", "comment": "/* to store identity sequence name for\n\t\t\t\t\t\t\t\t\t * ALTER TABLE ... ADD COLUMN */\n" }, { "name": "generated", "c_type": "char", "comment": "/* attgenerated setting */" }, { "name": "collClause", "c_type": "CollateClause*", "comment": "/* untransformed COLLATE spec, if any */" }, { "name": "collOid", "c_type": "Oid", "comment": "/* collation OID (InvalidOid if not set) */" }, { "name": "constraints", "c_type": "List*", "comment": "/* other constraints on column */" }, { "name": "fdwoptions", "c_type": "List*", "comment": "/* per-column FDW options */" }, { "name": "location", "c_type": "int", "comment": "/* parse location, or -1 if none/unknown */" } ], "comment": "/*\n * ColumnDef - column definition (used in various creates)\n *\n * If the column has a default value, we may have the value expression\n * in either \"raw\" form (an untransformed parse tree) or \"cooked\" form\n * (a post-parse-analysis, executable expression tree), depending on\n * how this ColumnDef node was created (by parsing, or by inheritance\n * from an existing relation). We should never have both in the same node!\n *\n * Similarly, we may have a COLLATE specification in either raw form\n * (represented as a CollateClause with arg==NULL) or cooked form\n * (the collation's OID).\n *\n * The constraints list may contain a CONSTR_DEFAULT item in a raw\n * parsetree produced by gram.y, but transformCreateStmt will remove\n * the item and set raw_default instead. CONSTR_DEFAULT items\n * should not appear in any subsequent processing.\n */\n" }, "TableLikeClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": null }, { "name": "options", "c_type": "bits32", "comment": "/* OR of TableLikeOption flags */" }, { "name": "relationOid", "c_type": "Oid", "comment": "/* If table has been looked up, its OID */" } ], "comment": "/*\n * TableLikeClause - CREATE TABLE ( ... LIKE ... ) clause\n */\n" }, "IndexElem": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": "/* name of attribute to index, or NULL */" }, { "name": "expr", "c_type": "Node*", "comment": "/* expression to index, or NULL */" }, { "name": "indexcolname", "c_type": "char*", "comment": "/* name for index column; NULL = default */" }, { "name": "collation", "c_type": "List*", "comment": "/* name of collation; NIL = default */" }, { "name": "opclass", "c_type": "List*", "comment": "/* name of desired opclass; NIL = default */" }, { "name": "opclassopts", "c_type": "List*", "comment": "/* opclass-specific options, or NIL */" }, { "name": "ordering", "c_type": "SortByDir", "comment": "/* ASC/DESC/default */" }, { "name": "nulls_ordering", "c_type": "SortByNulls", "comment": "/* FIRST/LAST/default */" } ], "comment": "/*\n * IndexElem - index parameters (used in CREATE INDEX, and in ON CONFLICT)\n *\n * For a plain index attribute, 'name' is the name of the table column to\n * index, and 'expr' is NULL. For an index expression, 'name' is NULL and\n * 'expr' is the expression tree.\n */\n" }, "DefElem": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "defnamespace", "c_type": "char*", "comment": "/* NULL if unqualified name */" }, { "name": "defname", "c_type": "char*", "comment": null }, { "name": "arg", "c_type": "Node*", "comment": "/* a (Value *) or a (TypeName *) */" }, { "name": "defaction", "c_type": "DefElemAction", "comment": "/* unspecified action, or SET/ADD/DROP */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * DefElem - a generic \"name = value\" option definition\n *\n * In some contexts the name can be qualified. Also, certain SQL commands\n * allow a SET/ADD/DROP action to be attached to option settings, so it's\n * convenient to carry a field for that too. (Note: currently, it is our\n * practice that the grammar allows namespace and action only in statements\n * where they are relevant; C code can just ignore those fields in other\n * statements.)\n */\n" }, "LockingClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "lockedRels", "c_type": "List*", "comment": "/* FOR [KEY] UPDATE/SHARE relations */" }, { "name": "strength", "c_type": "LockClauseStrength", "comment": null }, { "name": "waitPolicy", "c_type": "LockWaitPolicy", "comment": "/* NOWAIT and SKIP LOCKED */" } ], "comment": "/*\n * LockingClause - raw representation of FOR [NO KEY] UPDATE/[KEY] SHARE\n *\t\toptions\n *\n * Note: lockedRels == NIL means \"all relations in query\". Otherwise it\n * is a list of RangeVar nodes. (We use RangeVar mainly because it carries\n * a location field --- currently, parse analysis insists on unqualified\n * names in LockingClause.)\n */\n" }, "XmlSerialize": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "xmloption", "c_type": "XmlOptionType", "comment": "/* DOCUMENT or CONTENT */" }, { "name": "expr", "c_type": "Node*", "comment": null }, { "name": "typeName", "c_type": "TypeName*", "comment": null }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * XMLSERIALIZE (in raw parse tree only)\n */\n" }, "PartitionElem": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": "/* name of column to partition on, or NULL */" }, { "name": "expr", "c_type": "Node*", "comment": "/* expression to partition on, or NULL */" }, { "name": "collation", "c_type": "List*", "comment": "/* name of collation; NIL = default */" }, { "name": "opclass", "c_type": "List*", "comment": "/* name of desired opclass; NIL = default */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * PartitionElem - parse-time representation of a single partition key\n *\n * expr can be either a raw expression tree or a parse-analyzed expression.\n * We don't store these on-disk, though.\n */\n" }, "PartitionSpec": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "strategy", "c_type": "char*", "comment": "/* partitioning strategy ('hash', 'list' or\n\t\t\t\t\t\t\t\t * 'range') */\n" }, { "name": "partParams", "c_type": "List*", "comment": "/* List of PartitionElems */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * PartitionSpec - parse-time representation of a partition key specification\n *\n * This represents the key space we will be partitioning on.\n */\n" }, "PartitionBoundSpec": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "strategy", "c_type": "char", "comment": "/* see PARTITION_STRATEGY codes above */" }, { "name": "is_default", "c_type": "bool", "comment": "/* is it a default partition bound? */" }, { "comment": "" }, { "comment": "\t/* Partitioning info for HASH strategy: */\n" }, { "name": "modulus", "c_type": "int", "comment": null }, { "name": "remainder", "c_type": "int", "comment": null }, { "comment": "" }, { "comment": "\t/* Partitioning info for LIST strategy: */\n" }, { "name": "listdatums", "c_type": "List*", "comment": "/* List of Consts (or A_Consts in raw tree) */" }, { "comment": "" }, { "comment": "\t/* Partitioning info for RANGE strategy: */\n" }, { "name": "lowerdatums", "c_type": "List*", "comment": "/* List of PartitionRangeDatums */" }, { "name": "upperdatums", "c_type": "List*", "comment": "/* List of PartitionRangeDatums */" }, { "comment": "" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * PartitionBoundSpec - a partition bound specification\n *\n * This represents the portion of the partition key space assigned to a\n * particular partition. These are stored on disk in pg_class.relpartbound.\n */\n" }, "PartitionRangeDatum": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "kind", "c_type": "PartitionRangeDatumKind", "comment": null }, { "name": "value", "c_type": "Node*", "comment": "/* Const (or A_Const in raw tree), if kind is\n\t\t\t\t\t\t\t\t * PARTITION_RANGE_DATUM_VALUE, else NULL */\n" }, { "comment": "" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": null }, "PartitionCmd": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "RangeVar*", "comment": "/* name of partition to attach/detach */" }, { "name": "bound", "c_type": "PartitionBoundSpec*", "comment": "/* FOR VALUES, if attaching */" } ], "comment": "/*\n * PartitionCmd - info for ALTER TABLE/INDEX ATTACH/DETACH PARTITION commands\n */\n" }, "RangeTblEntry": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "rtekind", "c_type": "RTEKind", "comment": "/* see above */" }, { "comment": "" }, { "comment": "\t/*\n\t * XXX the fields applicable to only some rte kinds should be merged into\n\t * a union. I didn't do this yet because the diffs would impact a lot of\n\t * code that is being actively worked on. FIXME someday.\n\t */\n" }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for a plain relation RTE (else zero):\n\t *\n\t * As a special case, RTE_NAMEDTUPLESTORE can also set relid to indicate\n\t * that the tuple format of the tuplestore is the same as the referenced\n\t * relation. This allows plans referencing AFTER trigger transition\n\t * tables to be invalidated if the underlying table is altered.\n\t *\n\t * rellockmode is really LOCKMODE, but it's declared int to avoid having\n\t * to include lock-related headers here. It must be RowExclusiveLock if\n\t * the RTE is an INSERT/UPDATE/DELETE target, else RowShareLock if the RTE\n\t * is a SELECT FOR UPDATE/FOR SHARE target, else AccessShareLock.\n\t *\n\t * Note: in some cases, rule expansion may result in RTEs that are marked\n\t * with RowExclusiveLock even though they are not the target of the\n\t * current query; this happens if a DO ALSO rule simply scans the original\n\t * target table. We leave such RTEs with their original lockmode so as to\n\t * avoid getting an additional, lesser lock.\n\t */\n" }, { "name": "relid", "c_type": "Oid", "comment": "/* OID of the relation */" }, { "name": "relkind", "c_type": "char", "comment": "/* relation kind (see pg_class.relkind) */" }, { "name": "rellockmode", "c_type": "int", "comment": "/* lock level that query requires on the rel */" }, { "name": "tablesample", "c_type": "TableSampleClause*", "comment": "/* sampling info, or NULL */" }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for a subquery RTE (else NULL):\n\t */\n" }, { "name": "subquery", "c_type": "Query*", "comment": "/* the sub-query */" }, { "name": "security_barrier", "c_type": "bool", "comment": "/* is from security_barrier view? */" }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for a join RTE (else NULL/zero):\n\t *\n\t * joinaliasvars is a list of (usually) Vars corresponding to the columns\n\t * of the join result. An alias Var referencing column K of the join\n\t * result can be replaced by the K'th element of joinaliasvars --- but to\n\t * simplify the task of reverse-listing aliases correctly, we do not do\n\t * that until planning time. In detail: an element of joinaliasvars can\n\t * be a Var of one of the join's input relations, or such a Var with an\n\t * implicit coercion to the join's output column type, or a COALESCE\n\t * expression containing the two input column Vars (possibly coerced).\n\t * Elements beyond the first joinmergedcols entries are always just Vars,\n\t * and are never referenced from elsewhere in the query (that is, join\n\t * alias Vars are generated only for merged columns). We keep these\n\t * entries only because they're needed in expandRTE() and similar code.\n\t *\n\t * Within a Query loaded from a stored rule, it is possible for non-merged\n\t * joinaliasvars items to be null pointers, which are placeholders for\n\t * (necessarily unreferenced) columns dropped since the rule was made.\n\t * Also, once planning begins, joinaliasvars items can be almost anything,\n\t * as a result of subquery-flattening substitutions.\n\t *\n\t * joinleftcols is an integer list of physical column numbers of the left\n\t * join input rel that are included in the join; likewise joinrighttcols\n\t * for the right join input rel. (Which rels those are can be determined\n\t * from the associated JoinExpr.) If the join is USING/NATURAL, then the\n\t * first joinmergedcols entries in each list identify the merged columns.\n\t * The merged columns come first in the join output, then remaining\n\t * columns of the left input, then remaining columns of the right.\n\t *\n\t * Note that input columns could have been dropped after creation of a\n\t * stored rule, if they are not referenced in the query (in particular,\n\t * merged columns could not be dropped); this is not accounted for in\n\t * joinleftcols/joinrighttcols.\n\t */\n" }, { "name": "jointype", "c_type": "JoinType", "comment": "/* type of join */" }, { "name": "joinmergedcols", "c_type": "int", "comment": "/* number of merged (JOIN USING) columns */" }, { "name": "joinaliasvars", "c_type": "List*", "comment": "/* list of alias-var expansions */" }, { "name": "joinleftcols", "c_type": "List*", "comment": "/* left-side input column numbers */" }, { "name": "joinrightcols", "c_type": "List*", "comment": "/* right-side input column numbers */" }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for a function RTE (else NIL/zero):\n\t *\n\t * When funcordinality is true, the eref->colnames list includes an alias\n\t * for the ordinality column. The ordinality column is otherwise\n\t * implicit, and must be accounted for \"by hand\" in places such as\n\t * expandRTE().\n\t */\n" }, { "name": "functions", "c_type": "List*", "comment": "/* list of RangeTblFunction nodes */" }, { "name": "funcordinality", "c_type": "bool", "comment": "/* is this called WITH ORDINALITY? */" }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for a TableFunc RTE (else NULL):\n\t */\n" }, { "name": "tablefunc", "c_type": "TableFunc*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for a values RTE (else NIL):\n\t */\n" }, { "name": "values_lists", "c_type": "List*", "comment": "/* list of expression lists */" }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for a CTE RTE (else NULL/zero):\n\t */\n" }, { "name": "ctename", "c_type": "char*", "comment": "/* name of the WITH list item */" }, { "name": "ctelevelsup", "c_type": "Index", "comment": "/* number of query levels up */" }, { "name": "self_reference", "c_type": "bool", "comment": "/* is this a recursive self-reference? */" }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for CTE, VALUES, ENR, and TableFunc RTEs (else NIL):\n\t *\n\t * We need these for CTE RTEs so that the types of self-referential\n\t * columns are well-defined. For VALUES RTEs, storing these explicitly\n\t * saves having to re-determine the info by scanning the values_lists. For\n\t * ENRs, we store the types explicitly here (we could get the information\n\t * from the catalogs if 'relid' was supplied, but we'd still need these\n\t * for TupleDesc-based ENRs, so we might as well always store the type\n\t * info here). For TableFuncs, these fields are redundant with data in\n\t * the TableFunc node, but keeping them here allows some code sharing with\n\t * the other cases.\n\t *\n\t * For ENRs only, we have to consider the possibility of dropped columns.\n\t * A dropped column is included in these lists, but it will have zeroes in\n\t * all three lists (as well as an empty-string entry in eref). Testing\n\t * for zero coltype is the standard way to detect a dropped column.\n\t */\n" }, { "name": "coltypes", "c_type": "List*", "comment": "/* OID list of column type OIDs */" }, { "name": "coltypmods", "c_type": "List*", "comment": "/* integer list of column typmods */" }, { "name": "colcollations", "c_type": "List*", "comment": "/* OID list of column collation OIDs */" }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid for ENR RTEs (else NULL/zero):\n\t */\n" }, { "name": "enrname", "c_type": "char*", "comment": "/* name of ephemeral named relation */" }, { "name": "enrtuples", "c_type": "double", "comment": "/* estimated or actual from caller */" }, { "comment": "" }, { "comment": "\t/*\n\t * Fields valid in all RTEs:\n\t */\n" }, { "name": "alias", "c_type": "Alias*", "comment": "/* user-written alias clause, if any */" }, { "name": "eref", "c_type": "Alias*", "comment": "/* expanded reference names */" }, { "name": "lateral", "c_type": "bool", "comment": "/* subquery, function, or values is LATERAL? */" }, { "name": "inh", "c_type": "bool", "comment": "/* inheritance requested? */" }, { "name": "inFromCl", "c_type": "bool", "comment": "/* present in FROM clause? */" }, { "name": "requiredPerms", "c_type": "AclMode", "comment": "/* bitmask of required access permissions */" }, { "name": "checkAsUser", "c_type": "Oid", "comment": "/* if valid, check access as this role */" }, { "name": "selectedCols", "c_type": "Bitmapset*", "comment": "/* columns needing SELECT permission */" }, { "name": "insertedCols", "c_type": "Bitmapset*", "comment": "/* columns needing INSERT permission */" }, { "name": "updatedCols", "c_type": "Bitmapset*", "comment": "/* columns needing UPDATE permission */" }, { "name": "extraUpdatedCols", "c_type": "Bitmapset*", "comment": "/* generated columns being updated */" }, { "name": "securityQuals", "c_type": "List*", "comment": "/* security barrier quals to apply, if any */" } ], "comment": "/*--------------------\n * RangeTblEntry -\n *\t A range table is a List of RangeTblEntry nodes.\n *\n *\t A range table entry may represent a plain relation, a sub-select in\n *\t FROM, or the result of a JOIN clause. (Only explicit JOIN syntax\n *\t produces an RTE, not the implicit join resulting from multiple FROM\n *\t items. This is because we only need the RTE to deal with SQL features\n *\t like outer joins and join-output-column aliasing.) Other special\n *\t RTE types also exist, as indicated by RTEKind.\n *\n *\t Note that we consider RTE_RELATION to cover anything that has a pg_class\n *\t entry. relkind distinguishes the sub-cases.\n *\n *\t alias is an Alias node representing the AS alias-clause attached to the\n *\t FROM expression, or NULL if no clause.\n *\n *\t eref is the table reference name and column reference names (either\n *\t real or aliases). Note that system columns (OID etc) are not included\n *\t in the column list.\n *\t eref->aliasname is required to be present, and should generally be used\n *\t to identify the RTE for error messages etc.\n *\n *\t In RELATION RTEs, the colnames in both alias and eref are indexed by\n *\t physical attribute number; this means there must be colname entries for\n *\t dropped columns. When building an RTE we insert empty strings (\"\") for\n *\t dropped columns. Note however that a stored rule may have nonempty\n *\t colnames for columns dropped since the rule was created (and for that\n *\t matter the colnames might be out of date due to column renamings).\n *\t The same comments apply to FUNCTION RTEs when a function's return type\n *\t is a named composite type.\n *\n *\t In JOIN RTEs, the colnames in both alias and eref are one-to-one with\n *\t joinaliasvars entries. A JOIN RTE will omit columns of its inputs when\n *\t those columns are known to be dropped at parse time. Again, however,\n *\t a stored rule might contain entries for columns dropped since the rule\n *\t was created. (This is only possible for columns not actually referenced\n *\t in the rule.) When loading a stored rule, we replace the joinaliasvars\n *\t items for any such columns with null pointers. (We can't simply delete\n *\t them from the joinaliasvars list, because that would affect the attnums\n *\t of Vars referencing the rest of the list.)\n *\n *\t inh is true for relation references that should be expanded to include\n *\t inheritance children, if the rel has any. This *must* be false for\n *\t RTEs other than RTE_RELATION entries.\n *\n *\t inFromCl marks those range variables that are listed in the FROM clause.\n *\t It's false for RTEs that are added to a query behind the scenes, such\n *\t as the NEW and OLD variables for a rule, or the subqueries of a UNION.\n *\t This flag is not used anymore during parsing, since the parser now uses\n *\t a separate \"namespace\" data structure to control visibility, but it is\n *\t needed by ruleutils.c to determine whether RTEs should be shown in\n *\t decompiled queries.\n *\n *\t requiredPerms and checkAsUser specify run-time access permissions\n *\t checks to be performed at query startup. The user must have *all*\n *\t of the permissions that are OR'd together in requiredPerms (zero\n *\t indicates no permissions checking). If checkAsUser is not zero,\n *\t then do the permissions checks using the access rights of that user,\n *\t not the current effective user ID. (This allows rules to act as\n *\t setuid gateways.) Permissions checks only apply to RELATION RTEs.\n *\n *\t For SELECT/INSERT/UPDATE permissions, if the user doesn't have\n *\t table-wide permissions then it is sufficient to have the permissions\n *\t on all columns identified in selectedCols (for SELECT) and/or\n *\t insertedCols and/or updatedCols (INSERT with ON CONFLICT DO UPDATE may\n *\t have all 3). selectedCols, insertedCols and updatedCols are bitmapsets,\n *\t which cannot have negative integer members, so we subtract\n *\t FirstLowInvalidHeapAttributeNumber from column numbers before storing\n *\t them in these fields. A whole-row Var reference is represented by\n *\t setting the bit for InvalidAttrNumber.\n *\n *\t updatedCols is also used in some other places, for example, to determine\n *\t which triggers to fire and in FDWs to know which changed columns they\n *\t need to ship off.\n *\n *\t Generated columns that are caused to be updated by an update to a base\n *\t column are listed in extraUpdatedCols. This is not considered for\n *\t permission checking, but it is useful in those places that want to know\n *\t the full set of columns being updated as opposed to only the ones the\n *\t user explicitly mentioned in the query. (There is currently no need for\n *\t an extraInsertedCols, but it could exist.) Note that extraUpdatedCols\n *\t is populated during query rewrite, NOT in the parser, since generated\n *\t columns could be added after a rule has been parsed and stored.\n *\n *\t securityQuals is a list of security barrier quals (boolean expressions),\n *\t to be tested in the listed order before returning a row from the\n *\t relation. It is always NIL in parser output. Entries are added by the\n *\t rewriter to implement security-barrier views and/or row-level security.\n *\t Note that the planner turns each boolean expression into an implicitly\n *\t AND'ed sublist, as is its usual habit with qualification expressions.\n *--------------------\n */\n" }, "RangeTblFunction": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "funcexpr", "c_type": "Node*", "comment": "/* expression tree for func call */" }, { "name": "funccolcount", "c_type": "int", "comment": "/* number of columns it contributes to RTE */" }, { "comment": "\t/* These fields record the contents of a column definition list, if any: */\n" }, { "name": "funccolnames", "c_type": "List*", "comment": "/* column names (list of String) */" }, { "name": "funccoltypes", "c_type": "List*", "comment": "/* OID list of column type OIDs */" }, { "name": "funccoltypmods", "c_type": "List*", "comment": "/* integer list of column typmods */" }, { "name": "funccolcollations", "c_type": "List*", "comment": "/* OID list of column collation OIDs */" }, { "comment": "\t/* This is set during planning for use by the executor: */\n" }, { "name": "funcparams", "c_type": "Bitmapset*", "comment": "/* PARAM_EXEC Param IDs affecting this func */" } ], "comment": "/*\n * RangeTblFunction -\n *\t RangeTblEntry subsidiary data for one function in a FUNCTION RTE.\n *\n * If the function had a column definition list (required for an\n * otherwise-unspecified RECORD result), funccolnames lists the names given\n * in the definition list, funccoltypes lists their declared column types,\n * funccoltypmods lists their typmods, funccolcollations their collations.\n * Otherwise, those fields are NIL.\n *\n * Notice we don't attempt to store info about the results of functions\n * returning named composite types, because those can change from time to\n * time. We do however remember how many columns we thought the type had\n * (including dropped columns!), so that we can successfully ignore any\n * columns added after the query was parsed.\n */\n" }, "TableSampleClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "tsmhandler", "c_type": "Oid", "comment": "/* OID of the tablesample handler function */" }, { "name": "args", "c_type": "List*", "comment": "/* tablesample argument expression(s) */" }, { "name": "repeatable", "c_type": "Expr*", "comment": "/* REPEATABLE expression, or NULL if none */" } ], "comment": "/*\n * TableSampleClause - TABLESAMPLE appearing in a transformed FROM clause\n *\n * Unlike RangeTableSample, this is a subnode of the relevant RangeTblEntry.\n */\n" }, "WithCheckOption": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "kind", "c_type": "WCOKind", "comment": "/* kind of WCO */" }, { "name": "relname", "c_type": "char*", "comment": "/* name of relation that specified the WCO */" }, { "name": "polname", "c_type": "char*", "comment": "/* name of RLS policy being checked */" }, { "name": "qual", "c_type": "Node*", "comment": "/* constraint qual to check */" }, { "name": "cascaded", "c_type": "bool", "comment": "/* true for a cascaded WCO on a view */" } ], "comment": null }, "SortGroupClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "tleSortGroupRef", "c_type": "Index", "comment": "/* reference into targetlist */" }, { "name": "eqop", "c_type": "Oid", "comment": "/* the equality operator ('=' op) */" }, { "name": "sortop", "c_type": "Oid", "comment": "/* the ordering operator ('<' op), or 0 */" }, { "name": "nulls_first", "c_type": "bool", "comment": "/* do NULLs come before normal values? */" }, { "name": "hashable", "c_type": "bool", "comment": "/* can eqop be implemented by hashing? */" } ], "comment": "/*\n * SortGroupClause -\n *\t\trepresentation of ORDER BY, GROUP BY, PARTITION BY,\n *\t\tDISTINCT, DISTINCT ON items\n *\n * You might think that ORDER BY is only interested in defining ordering,\n * and GROUP/DISTINCT are only interested in defining equality. However,\n * one way to implement grouping is to sort and then apply a \"uniq\"-like\n * filter. So it's also interesting to keep track of possible sort operators\n * for GROUP/DISTINCT, and in particular to try to sort for the grouping\n * in a way that will also yield a requested ORDER BY ordering. So we need\n * to be able to compare ORDER BY and GROUP/DISTINCT lists, which motivates\n * the decision to give them the same representation.\n *\n * tleSortGroupRef must match ressortgroupref of exactly one entry of the\n *\t\tquery's targetlist; that is the expression to be sorted or grouped by.\n * eqop is the OID of the equality operator.\n * sortop is the OID of the ordering operator (a \"<\" or \">\" operator),\n *\t\tor InvalidOid if not available.\n * nulls_first means about what you'd expect. If sortop is InvalidOid\n *\t\tthen nulls_first is meaningless and should be set to false.\n * hashable is true if eqop is hashable (note this condition also depends\n *\t\ton the datatype of the input expression).\n *\n * In an ORDER BY item, all fields must be valid. (The eqop isn't essential\n * here, but it's cheap to get it along with the sortop, and requiring it\n * to be valid eases comparisons to grouping items.) Note that this isn't\n * actually enough information to determine an ordering: if the sortop is\n * collation-sensitive, a collation OID is needed too. We don't store the\n * collation in SortGroupClause because it's not available at the time the\n * parser builds the SortGroupClause; instead, consult the exposed collation\n * of the referenced targetlist expression to find out what it is.\n *\n * In a grouping item, eqop must be valid. If the eqop is a btree equality\n * operator, then sortop should be set to a compatible ordering operator.\n * We prefer to set eqop/sortop/nulls_first to match any ORDER BY item that\n * the query presents for the same tlist item. If there is none, we just\n * use the default ordering op for the datatype.\n *\n * If the tlist item's type has a hash opclass but no btree opclass, then\n * we will set eqop to the hash equality operator, sortop to InvalidOid,\n * and nulls_first to false. A grouping item of this kind can only be\n * implemented by hashing, and of course it'll never match an ORDER BY item.\n *\n * The hashable flag is provided since we generally have the requisite\n * information readily available when the SortGroupClause is constructed,\n * and it's relatively expensive to get it again later. Note there is no\n * need for a \"sortable\" flag since OidIsValid(sortop) serves the purpose.\n *\n * A query might have both ORDER BY and DISTINCT (or DISTINCT ON) clauses.\n * In SELECT DISTINCT, the distinctClause list is as long or longer than the\n * sortClause list, while in SELECT DISTINCT ON it's typically shorter.\n * The two lists must match up to the end of the shorter one --- the parser\n * rearranges the distinctClause if necessary to make this true. (This\n * restriction ensures that only one sort step is needed to both satisfy the\n * ORDER BY and set up for the Unique step. This is semantically necessary\n * for DISTINCT ON, and presents no real drawback for DISTINCT.)\n */\n" }, "GroupingSet": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "kind", "c_type": "GroupingSetKind", "comment": null }, { "name": "content", "c_type": "List*", "comment": null }, { "name": "location", "c_type": "int", "comment": null } ], "comment": null }, "WindowClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": "/* window name (NULL in an OVER clause) */" }, { "name": "refname", "c_type": "char*", "comment": "/* referenced window name, if any */" }, { "name": "partitionClause", "c_type": "List*", "comment": "/* PARTITION BY list */" }, { "name": "orderClause", "c_type": "List*", "comment": "/* ORDER BY list */" }, { "name": "frameOptions", "c_type": "int", "comment": "/* frame_clause options, see WindowDef */" }, { "name": "startOffset", "c_type": "Node*", "comment": "/* expression for starting bound, if any */" }, { "name": "endOffset", "c_type": "Node*", "comment": "/* expression for ending bound, if any */" }, { "name": "startInRangeFunc", "c_type": "Oid", "comment": "/* in_range function for startOffset */" }, { "name": "endInRangeFunc", "c_type": "Oid", "comment": "/* in_range function for endOffset */" }, { "name": "inRangeColl", "c_type": "Oid", "comment": "/* collation for in_range tests */" }, { "name": "inRangeAsc", "c_type": "bool", "comment": "/* use ASC sort order for in_range tests? */" }, { "name": "inRangeNullsFirst", "c_type": "bool", "comment": "/* nulls sort first for in_range tests? */" }, { "name": "winref", "c_type": "Index", "comment": "/* ID referenced by window functions */" }, { "name": "copiedOrder", "c_type": "bool", "comment": "/* did we copy orderClause from refname? */" } ], "comment": "/*\n * WindowClause -\n *\t\ttransformed representation of WINDOW and OVER clauses\n *\n * A parsed Query's windowClause list contains these structs. \"name\" is set\n * if the clause originally came from WINDOW, and is NULL if it originally\n * was an OVER clause (but note that we collapse out duplicate OVERs).\n * partitionClause and orderClause are lists of SortGroupClause structs.\n * If we have RANGE with offset PRECEDING/FOLLOWING, the semantics of that are\n * specified by startInRangeFunc/inRangeColl/inRangeAsc/inRangeNullsFirst\n * for the start offset, or endInRangeFunc/inRange* for the end offset.\n * winref is an ID number referenced by WindowFunc nodes; it must be unique\n * among the members of a Query's windowClause list.\n * When refname isn't null, the partitionClause is always copied from there;\n * the orderClause might or might not be copied (see copiedOrder); the framing\n * options are never copied, per spec.\n */\n" }, "RowMarkClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "rti", "c_type": "Index", "comment": "/* range table index of target relation */" }, { "name": "strength", "c_type": "LockClauseStrength", "comment": null }, { "name": "waitPolicy", "c_type": "LockWaitPolicy", "comment": "/* NOWAIT and SKIP LOCKED */" }, { "name": "pushedDown", "c_type": "bool", "comment": "/* pushed down from higher query level? */" } ], "comment": "/*\n * RowMarkClause -\n *\t parser output representation of FOR [KEY] UPDATE/SHARE clauses\n *\n * Query.rowMarks contains a separate RowMarkClause node for each relation\n * identified as a FOR [KEY] UPDATE/SHARE target. If one of these clauses\n * is applied to a subquery, we generate RowMarkClauses for all normal and\n * subquery rels in the subquery, but they are marked pushedDown = true to\n * distinguish them from clauses that were explicitly written at this query\n * level. Also, Query.hasForUpdate tells whether there were explicit FOR\n * UPDATE/SHARE/KEY SHARE clauses in the current query level.\n */\n" }, "WithClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "ctes", "c_type": "List*", "comment": "/* list of CommonTableExprs */" }, { "name": "recursive", "c_type": "bool", "comment": "/* true = WITH RECURSIVE */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * WithClause -\n *\t representation of WITH clause\n *\n * Note: WithClause does not propagate into the Query representation;\n * but CommonTableExpr does.\n */\n" }, "InferClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "indexElems", "c_type": "List*", "comment": "/* IndexElems to infer unique index */" }, { "name": "whereClause", "c_type": "Node*", "comment": "/* qualification (partial-index predicate) */" }, { "name": "conname", "c_type": "char*", "comment": "/* Constraint name, or NULL if unnamed */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * InferClause -\n *\t\tON CONFLICT unique index inference clause\n *\n * Note: InferClause does not propagate into the Query representation.\n */\n" }, "OnConflictClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "action", "c_type": "OnConflictAction", "comment": "/* DO NOTHING or UPDATE? */" }, { "name": "infer", "c_type": "InferClause*", "comment": "/* Optional index inference clause */" }, { "name": "targetList", "c_type": "List*", "comment": "/* the target list (of ResTarget) */" }, { "name": "whereClause", "c_type": "Node*", "comment": "/* qualifications */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * OnConflictClause -\n *\t\trepresentation of ON CONFLICT clause\n *\n * Note: OnConflictClause does not propagate into the Query representation.\n */\n" }, "CommonTableExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "ctename", "c_type": "char*", "comment": "/* query name (never qualified) */" }, { "name": "aliascolnames", "c_type": "List*", "comment": "/* optional list of column names */" }, { "name": "ctematerialized", "c_type": "CTEMaterialize", "comment": "/* is this an optimization fence? */" }, { "comment": "\t/* SelectStmt/InsertStmt/etc before parse analysis, Query afterwards: */\n" }, { "name": "ctequery", "c_type": "Node*", "comment": "/* the CTE's subquery */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" }, { "comment": "\t/* These fields are set during parse analysis: */\n" }, { "name": "cterecursive", "c_type": "bool", "comment": "/* is this CTE actually recursive? */" }, { "name": "cterefcount", "c_type": "int", "comment": "/* number of RTEs referencing this CTE\n\t\t\t\t\t\t\t\t * (excluding internal self-references) */\n" }, { "name": "ctecolnames", "c_type": "List*", "comment": "/* list of output column names */" }, { "name": "ctecoltypes", "c_type": "List*", "comment": "/* OID list of output column type OIDs */" }, { "name": "ctecoltypmods", "c_type": "List*", "comment": "/* integer list of output column typmods */" }, { "name": "ctecolcollations", "c_type": "List*", "comment": "/* OID list of column collation OIDs */" } ], "comment": null }, "TriggerTransition": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": null }, { "name": "isNew", "c_type": "bool", "comment": null }, { "name": "isTable", "c_type": "bool", "comment": null } ], "comment": "/*\n * TriggerTransition -\n *\t representation of transition row or table naming clause\n *\n * Only transition tables are initially supported in the syntax, and only for\n * AFTER triggers, but other permutations are accepted by the parser so we can\n * give a meaningful message from C code.\n */\n" }, "RawStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "stmt", "c_type": "Node*", "comment": "/* raw parse tree */" }, { "name": "stmt_location", "c_type": "int", "comment": "/* start location, or -1 if unknown */" }, { "name": "stmt_len", "c_type": "int", "comment": "/* length in bytes; 0 means \"rest of string\" */" } ], "comment": "/*\n *\t\tRawStmt --- container for any one statement's raw parse tree\n *\n * Parse analysis converts a raw parse tree headed by a RawStmt node into\n * an analyzed statement headed by a Query node. For optimizable statements,\n * the conversion is complex. For utility statements, the parser usually just\n * transfers the raw parse tree (sans RawStmt) into the utilityStmt field of\n * the Query node, and all the useful work happens at execution time.\n *\n * stmt_location/stmt_len identify the portion of the source text string\n * containing this raw statement (useful for multi-statement strings).\n */\n" }, "InsertStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* relation to insert into */" }, { "name": "cols", "c_type": "List*", "comment": "/* optional: names of the target columns */" }, { "name": "selectStmt", "c_type": "Node*", "comment": "/* the source SELECT/VALUES, or NULL */" }, { "name": "onConflictClause", "c_type": "OnConflictClause*", "comment": "/* ON CONFLICT clause */" }, { "name": "returningList", "c_type": "List*", "comment": "/* list of expressions to return */" }, { "name": "withClause", "c_type": "WithClause*", "comment": "/* WITH clause */" }, { "name": "override", "c_type": "OverridingKind", "comment": "/* OVERRIDING clause */" } ], "comment": "/* ----------------------\n *\t\tInsert Statement\n *\n * The source expression is represented by SelectStmt for both the\n * SELECT and VALUES cases. If selectStmt is NULL, then the query\n * is INSERT ... DEFAULT VALUES.\n * ----------------------\n */\n" }, "DeleteStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* relation to delete from */" }, { "name": "usingClause", "c_type": "List*", "comment": "/* optional using clause for more tables */" }, { "name": "whereClause", "c_type": "Node*", "comment": "/* qualifications */" }, { "name": "returningList", "c_type": "List*", "comment": "/* list of expressions to return */" }, { "name": "withClause", "c_type": "WithClause*", "comment": "/* WITH clause */" } ], "comment": "/* ----------------------\n *\t\tDelete Statement\n * ----------------------\n */\n" }, "UpdateStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* relation to update */" }, { "name": "targetList", "c_type": "List*", "comment": "/* the target list (of ResTarget) */" }, { "name": "whereClause", "c_type": "Node*", "comment": "/* qualifications */" }, { "name": "fromClause", "c_type": "List*", "comment": "/* optional from clause for more tables */" }, { "name": "returningList", "c_type": "List*", "comment": "/* list of expressions to return */" }, { "name": "withClause", "c_type": "WithClause*", "comment": "/* WITH clause */" } ], "comment": "/* ----------------------\n *\t\tUpdate Statement\n * ----------------------\n */\n" }, "SelectStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * These fields are used only in \"leaf\" SelectStmts.\n\t */\n" }, { "name": "distinctClause", "c_type": "List*", "comment": "/* NULL, list of DISTINCT ON exprs, or\n\t\t\t\t\t\t\t\t * lcons(NIL,NIL) for all (SELECT DISTINCT) */\n" }, { "name": "intoClause", "c_type": "IntoClause*", "comment": "/* target for SELECT INTO */" }, { "name": "targetList", "c_type": "List*", "comment": "/* the target list (of ResTarget) */" }, { "name": "fromClause", "c_type": "List*", "comment": "/* the FROM clause */" }, { "name": "whereClause", "c_type": "Node*", "comment": "/* WHERE qualification */" }, { "name": "groupClause", "c_type": "List*", "comment": "/* GROUP BY clauses */" }, { "name": "havingClause", "c_type": "Node*", "comment": "/* HAVING conditional-expression */" }, { "name": "windowClause", "c_type": "List*", "comment": "/* WINDOW window_name AS (...), ... */" }, { "comment": "" }, { "comment": "\t/*\n\t * In a \"leaf\" node representing a VALUES list, the above fields are all\n\t * null, and instead this field is set. Note that the elements of the\n\t * sublists are just expressions, without ResTarget decoration. Also note\n\t * that a list element can be DEFAULT (represented as a SetToDefault\n\t * node), regardless of the context of the VALUES list. It's up to parse\n\t * analysis to reject that where not valid.\n\t */\n" }, { "name": "valuesLists", "c_type": "List*", "comment": "/* untransformed list of expression lists */" }, { "comment": "" }, { "comment": "\t/*\n\t * These fields are used in both \"leaf\" SelectStmts and upper-level\n\t * SelectStmts.\n\t */\n" }, { "name": "sortClause", "c_type": "List*", "comment": "/* sort clause (a list of SortBy's) */" }, { "name": "limitOffset", "c_type": "Node*", "comment": "/* # of result tuples to skip */" }, { "name": "limitCount", "c_type": "Node*", "comment": "/* # of result tuples to return */" }, { "name": "limitOption", "c_type": "LimitOption", "comment": "/* limit type */" }, { "name": "lockingClause", "c_type": "List*", "comment": "/* FOR UPDATE (list of LockingClause's) */" }, { "name": "withClause", "c_type": "WithClause*", "comment": "/* WITH clause */" }, { "comment": "" }, { "comment": "\t/*\n\t * These fields are used only in upper-level SelectStmts.\n\t */\n" }, { "name": "op", "c_type": "SetOperation", "comment": "/* type of set op */" }, { "name": "all", "c_type": "bool", "comment": "/* ALL specified? */" }, { "name": "larg", "c_type": "SelectStmt*", "comment": "/* left child */" }, { "name": "rarg", "c_type": "SelectStmt*", "comment": "/* right child */" }, { "comment": "\t/* Eventually add fields for CORRESPONDING spec here */\n" } ], "comment": "/* ----------------------\n *\t\tSelect Statement\n *\n * A \"simple\" SELECT is represented in the output of gram.y by a single\n * SelectStmt node; so is a VALUES construct. A query containing set\n * operators (UNION, INTERSECT, EXCEPT) is represented by a tree of SelectStmt\n * nodes, in which the leaf nodes are component SELECTs and the internal nodes\n * represent UNION, INTERSECT, or EXCEPT operators. Using the same node\n * type for both leaf and internal nodes allows gram.y to stick ORDER BY,\n * LIMIT, etc, clause values into a SELECT statement without worrying\n * whether it is a simple or compound SELECT.\n * ----------------------\n */\n" }, "SetOperationStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "op", "c_type": "SetOperation", "comment": "/* type of set op */" }, { "name": "all", "c_type": "bool", "comment": "/* ALL specified? */" }, { "name": "larg", "c_type": "Node*", "comment": "/* left child */" }, { "name": "rarg", "c_type": "Node*", "comment": "/* right child */" }, { "comment": "\t/* Eventually add fields for CORRESPONDING spec here */\n" }, { "comment": "" }, { "comment": "\t/* Fields derived during parse analysis: */\n" }, { "name": "colTypes", "c_type": "List*", "comment": "/* OID list of output column type OIDs */" }, { "name": "colTypmods", "c_type": "List*", "comment": "/* integer list of output column typmods */" }, { "name": "colCollations", "c_type": "List*", "comment": "/* OID list of output column collation OIDs */" }, { "name": "groupClauses", "c_type": "List*", "comment": "/* a list of SortGroupClause's */" }, { "comment": "\t/* groupClauses is NIL if UNION ALL, but must be set otherwise */\n" } ], "comment": "/* ----------------------\n *\t\tSet Operation node for post-analysis query trees\n *\n * After parse analysis, a SELECT with set operations is represented by a\n * top-level Query node containing the leaf SELECTs as subqueries in its\n * range table. Its setOperations field shows the tree of set operations,\n * with leaf SelectStmt nodes replaced by RangeTblRef nodes, and internal\n * nodes replaced by SetOperationStmt nodes. Information about the output\n * column types is added, too. (Note that the child nodes do not necessarily\n * produce these types directly, but we've checked that their output types\n * can be coerced to the output column type.) Also, if it's not UNION ALL,\n * information about the types' sort/group semantics is provided in the form\n * of a SortGroupClause list (same representation as, eg, DISTINCT).\n * The resolved common column collations are provided too; but note that if\n * it's not UNION ALL, it's okay for a column to not have a common collation,\n * so a member of the colCollations list could be InvalidOid even though the\n * column has a collatable type.\n * ----------------------\n */\n" }, "CreateSchemaStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "schemaname", "c_type": "char*", "comment": "/* the name of the schema to create */" }, { "name": "authrole", "c_type": "RoleSpec*", "comment": "/* the owner of the created schema */" }, { "name": "schemaElts", "c_type": "List*", "comment": "/* schema components (list of parsenodes) */" }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* just do nothing if schema already exists? */" } ], "comment": "/* ----------------------\n *\t\tCreate Schema Statement\n *\n * NOTE: the schemaElts list contains raw parsetrees for component statements\n * of the schema, such as CREATE TABLE, GRANT, etc. These are analyzed and\n * executed after the schema itself is created.\n * ----------------------\n */\n" }, "AlterTableStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* table to work on */" }, { "name": "cmds", "c_type": "List*", "comment": "/* list of subcommands */" }, { "name": "relkind", "c_type": "ObjectType", "comment": "/* type of object */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if table missing */" } ], "comment": "/* ----------------------\n *\tAlter Table\n * ----------------------\n */\n" }, "ReplicaIdentityStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "identity_type", "c_type": "char", "comment": null }, { "name": "name", "c_type": "char*", "comment": null } ], "comment": "/* ----------------------\n *\tAlter Table\n * ----------------------\n */\n" }, "AlterTableCmd": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "subtype", "c_type": "AlterTableType", "comment": "/* Type of table alteration to apply */" }, { "name": "name", "c_type": "char*", "comment": "/* column, constraint, or trigger to act on,\n\t\t\t\t\t\t\t\t * or tablespace */\n" }, { "name": "num", "c_type": "int16", "comment": "/* attribute number for columns referenced by\n\t\t\t\t\t\t\t\t * number */\n" }, { "name": "newowner", "c_type": "RoleSpec*", "comment": null }, { "name": "def", "c_type": "Node*", "comment": "/* definition of new column, index,\n\t\t\t\t\t\t\t\t * constraint, or parent table */\n" }, { "name": "behavior", "c_type": "DropBehavior", "comment": "/* RESTRICT or CASCADE for DROP cases */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if missing? */" } ], "comment": "/* ----------------------\n *\tAlter Table\n * ----------------------\n */\n" }, "AlterCollationStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "collname", "c_type": "List*", "comment": null } ], "comment": "/* ----------------------\n * Alter Collation\n * ----------------------\n */\n" }, "AlterDomainStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "subtype", "c_type": "char", "comment": "/*------------\n\t\t\t\t\t\t\t\t *\tT = alter column default\n\t\t\t\t\t\t\t\t *\tN = alter column drop not null\n\t\t\t\t\t\t\t\t *\tO = alter column set not null\n\t\t\t\t\t\t\t\t *\tC = add constraint\n\t\t\t\t\t\t\t\t *\tX = drop constraint\n\t\t\t\t\t\t\t\t *------------\n\t\t\t\t\t\t\t\t */\n" }, { "name": "typeName", "c_type": "List*", "comment": "/* domain to work on */" }, { "name": "name", "c_type": "char*", "comment": "/* column or constraint name to act on */" }, { "name": "def", "c_type": "Node*", "comment": "/* definition of default or constraint */" }, { "name": "behavior", "c_type": "DropBehavior", "comment": "/* RESTRICT or CASCADE for DROP cases */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if missing? */" } ], "comment": "/* ----------------------\n *\tAlter Domain\n *\n * The fields are used in different ways by the different variants of\n * this command.\n * ----------------------\n */\n" }, "GrantStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "is_grant", "c_type": "bool", "comment": "/* true = GRANT, false = REVOKE */" }, { "name": "targtype", "c_type": "GrantTargetType", "comment": "/* type of the grant target */" }, { "name": "objtype", "c_type": "ObjectType", "comment": "/* kind of object being operated on */" }, { "name": "objects", "c_type": "List*", "comment": "/* list of RangeVar nodes, ObjectWithArgs\n\t\t\t\t\t\t\t\t * nodes, or plain names (as Value strings) */\n" }, { "name": "privileges", "c_type": "List*", "comment": "/* list of AccessPriv nodes */" }, { "comment": "\t/* privileges == NIL denotes ALL PRIVILEGES */\n" }, { "name": "grantees", "c_type": "List*", "comment": "/* list of RoleSpec nodes */" }, { "name": "grant_option", "c_type": "bool", "comment": "/* grant or revoke grant option */" }, { "name": "behavior", "c_type": "DropBehavior", "comment": "/* drop behavior (for REVOKE) */" } ], "comment": "/* ----------------------\n *\t\tGrant|Revoke Statement\n * ----------------------\n */\n" }, "ObjectWithArgs": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "objname", "c_type": "List*", "comment": "/* qualified name of function/operator */" }, { "name": "objargs", "c_type": "List*", "comment": "/* list of Typename nodes */" }, { "name": "args_unspecified", "c_type": "bool", "comment": "/* argument list was omitted, so name must\n\t\t\t\t\t\t\t\t\t * be unique (note that objargs == NIL\n\t\t\t\t\t\t\t\t\t * means zero args) */\n" } ], "comment": "/*\n * Note: ObjectWithArgs carries only the types of the input parameters of the\n * function. So it is sufficient to identify an existing function, but it\n * is not enough info to define a function nor to call it.\n */\n" }, "AccessPriv": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "priv_name", "c_type": "char*", "comment": "/* string name of privilege */" }, { "name": "cols", "c_type": "List*", "comment": "/* list of Value strings */" } ], "comment": "/*\n * An access privilege, with optional list of column names\n * priv_name == NULL denotes ALL PRIVILEGES (only used with a column list)\n * cols == NIL denotes \"all columns\"\n * Note that simple \"ALL PRIVILEGES\" is represented as a NIL list, not\n * an AccessPriv with both fields null.\n */\n" }, "GrantRoleStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "granted_roles", "c_type": "List*", "comment": "/* list of roles to be granted/revoked */" }, { "name": "grantee_roles", "c_type": "List*", "comment": "/* list of member roles to add/delete */" }, { "name": "is_grant", "c_type": "bool", "comment": "/* true = GRANT, false = REVOKE */" }, { "name": "admin_opt", "c_type": "bool", "comment": "/* with admin option */" }, { "name": "grantor", "c_type": "RoleSpec*", "comment": "/* set grantor to other than current role */" }, { "name": "behavior", "c_type": "DropBehavior", "comment": "/* drop behavior (for REVOKE) */" } ], "comment": "/* ----------------------\n *\t\tGrant/Revoke Role Statement\n *\n * Note: because of the parsing ambiguity with the GRANT \n * statement, granted_roles is a list of AccessPriv; the execution code\n * should complain if any column lists appear. grantee_roles is a list\n * of role names, as Value strings.\n * ----------------------\n */\n" }, "AlterDefaultPrivilegesStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "options", "c_type": "List*", "comment": "/* list of DefElem */" }, { "name": "action", "c_type": "GrantStmt*", "comment": "/* GRANT/REVOKE action (with objects=NIL) */" } ], "comment": "/* ----------------------\n *\tAlter Default Privileges Statement\n * ----------------------\n */\n" }, "CopyStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* the relation to copy */" }, { "name": "query", "c_type": "Node*", "comment": "/* the query (SELECT or DML statement with\n\t\t\t\t\t\t\t\t * RETURNING) to copy, as a raw parse tree */\n" }, { "name": "attlist", "c_type": "List*", "comment": "/* List of column names (as Strings), or NIL\n\t\t\t\t\t\t\t\t * for all columns */\n" }, { "name": "is_from", "c_type": "bool", "comment": "/* TO or FROM */" }, { "name": "is_program", "c_type": "bool", "comment": "/* is 'filename' a program to popen? */" }, { "name": "filename", "c_type": "char*", "comment": "/* filename, or NULL for STDIN/STDOUT */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" }, { "name": "whereClause", "c_type": "Node*", "comment": "/* WHERE condition (or NULL) */" } ], "comment": "/* ----------------------\n *\t\tCopy Statement\n *\n * We support \"COPY relation FROM file\", \"COPY relation TO file\", and\n * \"COPY (query) TO file\". In any given CopyStmt, exactly one of \"relation\"\n * and \"query\" must be non-NULL.\n * ----------------------\n */\n" }, "VariableSetStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "kind", "c_type": "VariableSetKind", "comment": null }, { "name": "name", "c_type": "char*", "comment": "/* variable to be set */" }, { "name": "args", "c_type": "List*", "comment": "/* List of A_Const nodes */" }, { "name": "is_local", "c_type": "bool", "comment": "/* SET LOCAL? */" } ], "comment": null }, "VariableShowStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": null } ], "comment": "/* ----------------------\n * Show Statement\n * ----------------------\n */\n" }, "CreateStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* relation to create */" }, { "name": "tableElts", "c_type": "List*", "comment": "/* column definitions (list of ColumnDef) */" }, { "name": "inhRelations", "c_type": "List*", "comment": "/* relations to inherit from (list of\n\t\t\t\t\t\t\t\t * inhRelation) */\n" }, { "name": "partbound", "c_type": "PartitionBoundSpec*", "comment": "/* FOR VALUES clause */" }, { "name": "partspec", "c_type": "PartitionSpec*", "comment": "/* PARTITION BY clause */" }, { "name": "ofTypename", "c_type": "TypeName*", "comment": "/* OF typename */" }, { "name": "constraints", "c_type": "List*", "comment": "/* constraints (list of Constraint nodes) */" }, { "name": "options", "c_type": "List*", "comment": "/* options from WITH clause */" }, { "name": "oncommit", "c_type": "OnCommitAction", "comment": "/* what do we do at COMMIT? */" }, { "name": "tablespacename", "c_type": "char*", "comment": "/* table space to use, or NULL */" }, { "name": "accessMethod", "c_type": "char*", "comment": "/* table access method */" }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* just do nothing if it already exists? */" } ], "comment": "/* ----------------------\n *\t\tCreate Table Statement\n *\n * NOTE: in the raw gram.y output, ColumnDef and Constraint nodes are\n * intermixed in tableElts, and constraints is NIL. After parse analysis,\n * tableElts contains just ColumnDefs, and constraints contains just\n * Constraint nodes (in fact, only CONSTR_CHECK nodes, in the present\n * implementation).\n * ----------------------\n */\n" }, "Constraint": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "contype", "c_type": "ConstrType", "comment": "/* see above */" }, { "comment": "" }, { "comment": "\t/* Fields used for most/all constraint types: */\n" }, { "name": "conname", "c_type": "char*", "comment": "/* Constraint name, or NULL if unnamed */" }, { "name": "deferrable", "c_type": "bool", "comment": "/* DEFERRABLE? */" }, { "name": "initdeferred", "c_type": "bool", "comment": "/* INITIALLY DEFERRED? */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" }, { "comment": "" }, { "comment": "\t/* Fields used for constraints with expressions (CHECK and DEFAULT): */\n" }, { "name": "is_no_inherit", "c_type": "bool", "comment": "/* is constraint non-inheritable? */" }, { "name": "raw_expr", "c_type": "Node*", "comment": "/* expr, as untransformed parse tree */" }, { "name": "cooked_expr", "c_type": "char*", "comment": "/* expr, as nodeToString representation */" }, { "name": "generated_when", "c_type": "char", "comment": "/* ALWAYS or BY DEFAULT */" }, { "comment": "" }, { "comment": "\t/* Fields used for unique constraints (UNIQUE and PRIMARY KEY): */\n" }, { "name": "keys", "c_type": "List*", "comment": "/* String nodes naming referenced key\n\t\t\t\t\t\t\t\t * column(s) */\n" }, { "name": "including", "c_type": "List*", "comment": "/* String nodes naming referenced nonkey\n\t\t\t\t\t\t\t\t * column(s) */\n" }, { "comment": "" }, { "comment": "\t/* Fields used for EXCLUSION constraints: */\n" }, { "name": "exclusions", "c_type": "List*", "comment": "/* list of (IndexElem, operator name) pairs */" }, { "comment": "" }, { "comment": "\t/* Fields used for index constraints (UNIQUE, PRIMARY KEY, EXCLUSION): */\n" }, { "name": "options", "c_type": "List*", "comment": "/* options from WITH clause */" }, { "name": "indexname", "c_type": "char*", "comment": "/* existing index to use; otherwise NULL */" }, { "name": "indexspace", "c_type": "char*", "comment": "/* index tablespace; NULL for default */" }, { "name": "reset_default_tblspc", "c_type": "bool", "comment": "/* reset default_tablespace prior to\n\t\t\t\t\t\t\t\t\t\t * creating the index */\n" }, { "comment": "\t/* These could be, but currently are not, used for UNIQUE/PKEY: */\n" }, { "name": "access_method", "c_type": "char*", "comment": "/* index access method; NULL for default */" }, { "name": "where_clause", "c_type": "Node*", "comment": "/* partial index predicate */" }, { "comment": "" }, { "comment": "\t/* Fields used for FOREIGN KEY constraints: */\n" }, { "name": "pktable", "c_type": "RangeVar*", "comment": "/* Primary key table */" }, { "name": "fk_attrs", "c_type": "List*", "comment": "/* Attributes of foreign key */" }, { "name": "pk_attrs", "c_type": "List*", "comment": "/* Corresponding attrs in PK table */" }, { "name": "fk_matchtype", "c_type": "char", "comment": "/* FULL, PARTIAL, SIMPLE */" }, { "name": "fk_upd_action", "c_type": "char", "comment": "/* ON UPDATE action */" }, { "name": "fk_del_action", "c_type": "char", "comment": "/* ON DELETE action */" }, { "name": "old_conpfeqop", "c_type": "List*", "comment": "/* pg_constraint.conpfeqop of my former self */" }, { "name": "old_pktable_oid", "c_type": "Oid", "comment": "/* pg_constraint.confrelid of my former\n\t\t\t\t\t\t\t\t\t * self */\n" }, { "comment": "" }, { "comment": "\t/* Fields used for constraints that allow a NOT VALID specification */\n" }, { "name": "skip_validation", "c_type": "bool", "comment": "/* skip validation of existing rows? */" }, { "name": "initially_valid", "c_type": "bool", "comment": "/* mark the new constraint as valid? */" } ], "comment": "/* Foreign key matchtype codes */\n" }, "CreateTableSpaceStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "tablespacename", "c_type": "char*", "comment": null }, { "name": "owner", "c_type": "RoleSpec*", "comment": null }, { "name": "location", "c_type": "char*", "comment": null }, { "name": "options", "c_type": "List*", "comment": null } ], "comment": "/* ----------------------\n *\t\tCreate/Drop Table Space Statements\n * ----------------------\n */\n" }, "DropTableSpaceStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "tablespacename", "c_type": "char*", "comment": null }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if missing? */" } ], "comment": "/* ----------------------\n *\t\tCreate/Drop Table Space Statements\n * ----------------------\n */\n" }, "AlterTableSpaceOptionsStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "tablespacename", "c_type": "char*", "comment": null }, { "name": "options", "c_type": "List*", "comment": null }, { "name": "isReset", "c_type": "bool", "comment": null } ], "comment": null }, "AlterTableMoveAllStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "orig_tablespacename", "c_type": "char*", "comment": null }, { "name": "objtype", "c_type": "ObjectType", "comment": "/* Object type to move */" }, { "name": "roles", "c_type": "List*", "comment": "/* List of roles to move objects of */" }, { "name": "new_tablespacename", "c_type": "char*", "comment": null }, { "name": "nowait", "c_type": "bool", "comment": null } ], "comment": null }, "CreateExtensionStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "extname", "c_type": "char*", "comment": null }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* just do nothing if it already exists? */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": "/* ----------------------\n *\t\tCreate/Alter Extension Statements\n * ----------------------\n */\n" }, "AlterExtensionStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "extname", "c_type": "char*", "comment": null }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": "/* Only used for ALTER EXTENSION UPDATE; later might need an action field */\n" }, "AlterExtensionContentsStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "extname", "c_type": "char*", "comment": "/* Extension's name */" }, { "name": "action", "c_type": "int", "comment": "/* +1 = add object, -1 = drop object */" }, { "name": "objtype", "c_type": "ObjectType", "comment": "/* Object's type */" }, { "name": "object", "c_type": "Node*", "comment": "/* Qualified name of the object */" } ], "comment": "/* ----------------------\n *\t\tCreate/Alter Extension Statements\n * ----------------------\n */\n" }, "CreateFdwStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "fdwname", "c_type": "char*", "comment": "/* foreign-data wrapper name */" }, { "name": "func_options", "c_type": "List*", "comment": "/* HANDLER/VALIDATOR options */" }, { "name": "options", "c_type": "List*", "comment": "/* generic options to FDW */" } ], "comment": "/* ----------------------\n *\t\tCreate/Alter FOREIGN DATA WRAPPER Statements\n * ----------------------\n */\n" }, "AlterFdwStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "fdwname", "c_type": "char*", "comment": "/* foreign-data wrapper name */" }, { "name": "func_options", "c_type": "List*", "comment": "/* HANDLER/VALIDATOR options */" }, { "name": "options", "c_type": "List*", "comment": "/* generic options to FDW */" } ], "comment": "/* ----------------------\n *\t\tCreate/Alter FOREIGN DATA WRAPPER Statements\n * ----------------------\n */\n" }, "CreateForeignServerStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "servername", "c_type": "char*", "comment": "/* server name */" }, { "name": "servertype", "c_type": "char*", "comment": "/* optional server type */" }, { "name": "version", "c_type": "char*", "comment": "/* optional server version */" }, { "name": "fdwname", "c_type": "char*", "comment": "/* FDW name */" }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* just do nothing if it already exists? */" }, { "name": "options", "c_type": "List*", "comment": "/* generic options to server */" } ], "comment": "/* ----------------------\n *\t\tCreate/Alter FOREIGN SERVER Statements\n * ----------------------\n */\n" }, "AlterForeignServerStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "servername", "c_type": "char*", "comment": "/* server name */" }, { "name": "version", "c_type": "char*", "comment": "/* optional server version */" }, { "name": "options", "c_type": "List*", "comment": "/* generic options to server */" }, { "name": "has_version", "c_type": "bool", "comment": "/* version specified */" } ], "comment": "/* ----------------------\n *\t\tCreate/Alter FOREIGN SERVER Statements\n * ----------------------\n */\n" }, "CreateForeignTableStmt": { "fields": [ { "name": "base", "c_type": "CreateStmt", "comment": null }, { "name": "servername", "c_type": "char*", "comment": null }, { "name": "options", "c_type": "List*", "comment": null } ], "comment": "/* ----------------------\n *\t\tCreate FOREIGN TABLE Statement\n * ----------------------\n */\n" }, "CreateUserMappingStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "user", "c_type": "RoleSpec*", "comment": "/* user role */" }, { "name": "servername", "c_type": "char*", "comment": "/* server name */" }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* just do nothing if it already exists? */" }, { "name": "options", "c_type": "List*", "comment": "/* generic options to server */" } ], "comment": "/* ----------------------\n *\t\tCreate/Drop USER MAPPING Statements\n * ----------------------\n */\n" }, "AlterUserMappingStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "user", "c_type": "RoleSpec*", "comment": "/* user role */" }, { "name": "servername", "c_type": "char*", "comment": "/* server name */" }, { "name": "options", "c_type": "List*", "comment": "/* generic options to server */" } ], "comment": "/* ----------------------\n *\t\tCreate/Drop USER MAPPING Statements\n * ----------------------\n */\n" }, "DropUserMappingStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "user", "c_type": "RoleSpec*", "comment": "/* user role */" }, { "name": "servername", "c_type": "char*", "comment": "/* server name */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* ignore missing mappings */" } ], "comment": "/* ----------------------\n *\t\tCreate/Drop USER MAPPING Statements\n * ----------------------\n */\n" }, "ImportForeignSchemaStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "server_name", "c_type": "char*", "comment": "/* FDW server name */" }, { "name": "remote_schema", "c_type": "char*", "comment": "/* remote schema name to query */" }, { "name": "local_schema", "c_type": "char*", "comment": "/* local schema to create objects in */" }, { "name": "list_type", "c_type": "ImportForeignSchemaType", "comment": "/* type of table list */" }, { "name": "table_list", "c_type": "List*", "comment": "/* List of RangeVar */" }, { "name": "options", "c_type": "List*", "comment": "/* list of options to pass to FDW */" } ], "comment": null }, "CreatePolicyStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "policy_name", "c_type": "char*", "comment": "/* Policy's name */" }, { "name": "table", "c_type": "RangeVar*", "comment": "/* the table name the policy applies to */" }, { "name": "cmd_name", "c_type": "char*", "comment": "/* the command name the policy applies to */" }, { "name": "permissive", "c_type": "bool", "comment": "/* restrictive or permissive policy */" }, { "name": "roles", "c_type": "List*", "comment": "/* the roles associated with the policy */" }, { "name": "qual", "c_type": "Node*", "comment": "/* the policy's condition */" }, { "name": "with_check", "c_type": "Node*", "comment": "/* the policy's WITH CHECK condition. */" } ], "comment": "/*----------------------\n *\t\tCreate POLICY Statement\n *----------------------\n */\n" }, "AlterPolicyStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "policy_name", "c_type": "char*", "comment": "/* Policy's name */" }, { "name": "table", "c_type": "RangeVar*", "comment": "/* the table name the policy applies to */" }, { "name": "roles", "c_type": "List*", "comment": "/* the roles associated with the policy */" }, { "name": "qual", "c_type": "Node*", "comment": "/* the policy's condition */" }, { "name": "with_check", "c_type": "Node*", "comment": "/* the policy's WITH CHECK condition. */" } ], "comment": "/*----------------------\n *\t\tAlter POLICY Statement\n *----------------------\n */\n" }, "CreateAmStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "amname", "c_type": "char*", "comment": "/* access method name */" }, { "name": "handler_name", "c_type": "List*", "comment": "/* handler function name */" }, { "name": "amtype", "c_type": "char", "comment": "/* type of access method */" } ], "comment": "/*----------------------\n *\t\tCreate ACCESS METHOD Statement\n *----------------------\n */\n" }, "CreateTrigStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "trigname", "c_type": "char*", "comment": "/* TRIGGER's name */" }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* relation trigger is on */" }, { "name": "funcname", "c_type": "List*", "comment": "/* qual. name of function to call */" }, { "name": "args", "c_type": "List*", "comment": "/* list of (T_String) Values or NIL */" }, { "name": "row", "c_type": "bool", "comment": "/* ROW/STATEMENT */" }, { "comment": "\t/* timing uses the TRIGGER_TYPE bits defined in catalog/pg_trigger.h */\n" }, { "name": "timing", "c_type": "int16", "comment": "/* BEFORE, AFTER, or INSTEAD */" }, { "comment": "\t/* events uses the TRIGGER_TYPE bits defined in catalog/pg_trigger.h */\n" }, { "name": "events", "c_type": "int16", "comment": "/* \"OR\" of INSERT/UPDATE/DELETE/TRUNCATE */" }, { "name": "columns", "c_type": "List*", "comment": "/* column names, or NIL for all columns */" }, { "name": "whenClause", "c_type": "Node*", "comment": "/* qual expression, or NULL if none */" }, { "name": "isconstraint", "c_type": "bool", "comment": "/* This is a constraint trigger */" }, { "comment": "\t/* explicitly named transition data */\n" }, { "name": "transitionRels", "c_type": "List*", "comment": "/* TriggerTransition nodes, or NIL if none */" }, { "comment": "\t/* The remaining fields are only used for constraint triggers */\n" }, { "name": "deferrable", "c_type": "bool", "comment": "/* [NOT] DEFERRABLE */" }, { "name": "initdeferred", "c_type": "bool", "comment": "/* INITIALLY {DEFERRED|IMMEDIATE} */" }, { "name": "constrrel", "c_type": "RangeVar*", "comment": "/* opposite relation, if RI trigger */" } ], "comment": "/* ----------------------\n *\t\tCreate TRIGGER Statement\n * ----------------------\n */\n" }, "CreateEventTrigStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "trigname", "c_type": "char*", "comment": "/* TRIGGER's name */" }, { "name": "eventname", "c_type": "char*", "comment": "/* event's identifier */" }, { "name": "whenclause", "c_type": "List*", "comment": "/* list of DefElems indicating filtering */" }, { "name": "funcname", "c_type": "List*", "comment": "/* qual. name of function to call */" } ], "comment": "/* ----------------------\n *\t\tCreate EVENT TRIGGER Statement\n * ----------------------\n */\n" }, "AlterEventTrigStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "trigname", "c_type": "char*", "comment": "/* TRIGGER's name */" }, { "name": "tgenabled", "c_type": "char", "comment": "/* trigger's firing configuration WRT\n\t\t\t\t\t\t\t\t * session_replication_role */\n" } ], "comment": "/* ----------------------\n *\t\tAlter EVENT TRIGGER Statement\n * ----------------------\n */\n" }, "CreatePLangStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "replace", "c_type": "bool", "comment": "/* T => replace if already exists */" }, { "name": "plname", "c_type": "char*", "comment": "/* PL name */" }, { "name": "plhandler", "c_type": "List*", "comment": "/* PL call handler function (qual. name) */" }, { "name": "plinline", "c_type": "List*", "comment": "/* optional inline function (qual. name) */" }, { "name": "plvalidator", "c_type": "List*", "comment": "/* optional validator function (qual. name) */" }, { "name": "pltrusted", "c_type": "bool", "comment": "/* PL is trusted */" } ], "comment": "/* ----------------------\n *\t\tCreate LANGUAGE Statements\n * ----------------------\n */\n" }, "CreateRoleStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "stmt_type", "c_type": "RoleStmtType", "comment": "/* ROLE/USER/GROUP */" }, { "name": "role", "c_type": "char*", "comment": "/* role name */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": "/* ----------------------\n *\tCreate/Alter/Drop Role Statements\n *\n * Note: these node types are also used for the backwards-compatible\n * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases\n * there's really no need to distinguish what the original spelling was,\n * but for CREATE we mark the type because the defaults vary.\n * ----------------------\n */\n" }, "AlterRoleStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "role", "c_type": "RoleSpec*", "comment": "/* role */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" }, { "name": "action", "c_type": "int", "comment": "/* +1 = add members, -1 = drop members */" } ], "comment": "/* ----------------------\n *\tCreate/Alter/Drop Role Statements\n *\n * Note: these node types are also used for the backwards-compatible\n * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases\n * there's really no need to distinguish what the original spelling was,\n * but for CREATE we mark the type because the defaults vary.\n * ----------------------\n */\n" }, "AlterRoleSetStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "role", "c_type": "RoleSpec*", "comment": "/* role */" }, { "name": "database", "c_type": "char*", "comment": "/* database name, or NULL */" }, { "name": "setstmt", "c_type": "VariableSetStmt*", "comment": "/* SET or RESET subcommand */" } ], "comment": "/* ----------------------\n *\tCreate/Alter/Drop Role Statements\n *\n * Note: these node types are also used for the backwards-compatible\n * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases\n * there's really no need to distinguish what the original spelling was,\n * but for CREATE we mark the type because the defaults vary.\n * ----------------------\n */\n" }, "DropRoleStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "roles", "c_type": "List*", "comment": "/* List of roles to remove */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if a role is missing? */" } ], "comment": "/* ----------------------\n *\tCreate/Alter/Drop Role Statements\n *\n * Note: these node types are also used for the backwards-compatible\n * Create/Alter/Drop User/Group statements. In the ALTER and DROP cases\n * there's really no need to distinguish what the original spelling was,\n * but for CREATE we mark the type because the defaults vary.\n * ----------------------\n */\n" }, "CreateSeqStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "sequence", "c_type": "RangeVar*", "comment": "/* the sequence to create */" }, { "name": "options", "c_type": "List*", "comment": null }, { "name": "ownerId", "c_type": "Oid", "comment": "/* ID of owner, or InvalidOid for default */" }, { "name": "for_identity", "c_type": "bool", "comment": null }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* just do nothing if it already exists? */" } ], "comment": "/* ----------------------\n *\t\t{Create|Alter} SEQUENCE Statement\n * ----------------------\n */\n" }, "AlterSeqStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "sequence", "c_type": "RangeVar*", "comment": "/* the sequence to alter */" }, { "name": "options", "c_type": "List*", "comment": null }, { "name": "for_identity", "c_type": "bool", "comment": null }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if a role is missing? */" } ], "comment": "/* ----------------------\n *\t\t{Create|Alter} SEQUENCE Statement\n * ----------------------\n */\n" }, "DefineStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "kind", "c_type": "ObjectType", "comment": "/* aggregate, operator, type */" }, { "name": "oldstyle", "c_type": "bool", "comment": "/* hack to signal old CREATE AGG syntax */" }, { "name": "defnames", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "args", "c_type": "List*", "comment": "/* a list of TypeName (if needed) */" }, { "name": "definition", "c_type": "List*", "comment": "/* a list of DefElem */" }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* just do nothing if it already exists? */" }, { "name": "replace", "c_type": "bool", "comment": "/* replace if already exists? */" } ], "comment": "/* ----------------------\n *\t\tCreate {Aggregate|Operator|Type} Statement\n * ----------------------\n */\n" }, "CreateDomainStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "domainname", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "typeName", "c_type": "TypeName*", "comment": "/* the base type */" }, { "name": "collClause", "c_type": "CollateClause*", "comment": "/* untransformed COLLATE spec, if any */" }, { "name": "constraints", "c_type": "List*", "comment": "/* constraints (list of Constraint nodes) */" } ], "comment": "/* ----------------------\n *\t\tCreate Domain Statement\n * ----------------------\n */\n" }, "CreateOpClassStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "opclassname", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "opfamilyname", "c_type": "List*", "comment": "/* qualified name (ditto); NIL if omitted */" }, { "name": "amname", "c_type": "char*", "comment": "/* name of index AM opclass is for */" }, { "name": "datatype", "c_type": "TypeName*", "comment": "/* datatype of indexed column */" }, { "name": "items", "c_type": "List*", "comment": "/* List of CreateOpClassItem nodes */" }, { "name": "isDefault", "c_type": "bool", "comment": "/* Should be marked as default for type? */" } ], "comment": "/* ----------------------\n *\t\tCreate Operator Class Statement\n * ----------------------\n */\n" }, "CreateOpClassItem": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "itemtype", "c_type": "int", "comment": "/* see codes above */" }, { "name": "name", "c_type": "ObjectWithArgs*", "comment": "/* operator or function name and args */" }, { "name": "number", "c_type": "int", "comment": "/* strategy num or support proc num */" }, { "name": "order_family", "c_type": "List*", "comment": "/* only used for ordering operators */" }, { "name": "class_args", "c_type": "List*", "comment": "/* amproclefttype/amprocrighttype or\n\t\t\t\t\t\t\t\t * amoplefttype/amoprighttype */\n" }, { "comment": "\t/* fields used for a storagetype item: */\n" }, { "name": "storedtype", "c_type": "TypeName*", "comment": "/* datatype stored in index */" } ], "comment": "/* ----------------------\n *\t\tCreate Operator Class Statement\n * ----------------------\n */\n" }, "CreateOpFamilyStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "opfamilyname", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "amname", "c_type": "char*", "comment": "/* name of index AM opfamily is for */" } ], "comment": "/* ----------------------\n *\t\tCreate Operator Family Statement\n * ----------------------\n */\n" }, "AlterOpFamilyStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "opfamilyname", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "amname", "c_type": "char*", "comment": "/* name of index AM opfamily is for */" }, { "name": "isDrop", "c_type": "bool", "comment": "/* ADD or DROP the items? */" }, { "name": "items", "c_type": "List*", "comment": "/* List of CreateOpClassItem nodes */" } ], "comment": "/* ----------------------\n *\t\tAlter Operator Family Statement\n * ----------------------\n */\n" }, "DropStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "objects", "c_type": "List*", "comment": "/* list of names */" }, { "name": "removeType", "c_type": "ObjectType", "comment": "/* object type */" }, { "name": "behavior", "c_type": "DropBehavior", "comment": "/* RESTRICT or CASCADE behavior */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if object is missing? */" }, { "name": "concurrent", "c_type": "bool", "comment": "/* drop index concurrently? */" } ], "comment": "/* ----------------------\n *\t\tDrop Table|Sequence|View|Index|Type|Domain|Conversion|Schema Statement\n * ----------------------\n */\n" }, "TruncateStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relations", "c_type": "List*", "comment": "/* relations (RangeVars) to be truncated */" }, { "name": "restart_seqs", "c_type": "bool", "comment": "/* restart owned sequences? */" }, { "name": "behavior", "c_type": "DropBehavior", "comment": "/* RESTRICT or CASCADE behavior */" } ], "comment": "/* ----------------------\n *\t\t\t\tTruncate Table Statement\n * ----------------------\n */\n" }, "CommentStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "objtype", "c_type": "ObjectType", "comment": "/* Object's type */" }, { "name": "object", "c_type": "Node*", "comment": "/* Qualified name of the object */" }, { "name": "comment", "c_type": "char*", "comment": "/* Comment to insert, or NULL to remove */" } ], "comment": "/* ----------------------\n *\t\t\t\tComment On Statement\n * ----------------------\n */\n" }, "SecLabelStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "objtype", "c_type": "ObjectType", "comment": "/* Object's type */" }, { "name": "object", "c_type": "Node*", "comment": "/* Qualified name of the object */" }, { "name": "provider", "c_type": "char*", "comment": "/* Label provider (or NULL) */" }, { "name": "label", "c_type": "char*", "comment": "/* New security label to be assigned */" } ], "comment": "/* ----------------------\n *\t\t\t\tSECURITY LABEL Statement\n * ----------------------\n */\n" }, "DeclareCursorStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "portalname", "c_type": "char*", "comment": "/* name of the portal (cursor) */" }, { "name": "options", "c_type": "int", "comment": "/* bitmask of options (see above) */" }, { "name": "query", "c_type": "Node*", "comment": "/* the query (see comments above) */" } ], "comment": "/* these planner-control flags do not correspond to any SQL grammar: */\n" }, "ClosePortalStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "portalname", "c_type": "char*", "comment": "/* name of the portal (cursor) */" }, { "comment": "\t/* NULL means CLOSE ALL */\n" } ], "comment": "/* ----------------------\n *\t\tClose Portal Statement\n * ----------------------\n */\n" }, "FetchStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "direction", "c_type": "FetchDirection", "comment": "/* see above */" }, { "name": "howMany", "c_type": "long", "comment": "/* number of rows, or position argument */" }, { "name": "portalname", "c_type": "char*", "comment": "/* name of portal (cursor) */" }, { "name": "ismove", "c_type": "bool", "comment": "/* true if MOVE */" } ], "comment": "/* ----------------------\n *\t\tFetch Statement (also Move)\n * ----------------------\n */\n" }, "IndexStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "idxname", "c_type": "char*", "comment": "/* name of new index, or NULL for default */" }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* relation to build index on */" }, { "name": "accessMethod", "c_type": "char*", "comment": "/* name of access method (eg. btree) */" }, { "name": "tableSpace", "c_type": "char*", "comment": "/* tablespace, or NULL for default */" }, { "name": "indexParams", "c_type": "List*", "comment": "/* columns to index: a list of IndexElem */" }, { "name": "indexIncludingParams", "c_type": "List*", "comment": "/* additional columns to index: a list\n\t\t\t\t\t\t\t\t\t\t * of IndexElem */\n" }, { "name": "options", "c_type": "List*", "comment": "/* WITH clause options: a list of DefElem */" }, { "name": "whereClause", "c_type": "Node*", "comment": "/* qualification (partial-index predicate) */" }, { "name": "excludeOpNames", "c_type": "List*", "comment": "/* exclusion operator names, or NIL if none */" }, { "name": "idxcomment", "c_type": "char*", "comment": "/* comment to apply to index, or NULL */" }, { "name": "indexOid", "c_type": "Oid", "comment": "/* OID of an existing index, if any */" }, { "name": "oldNode", "c_type": "Oid", "comment": "/* relfilenode of existing storage, if any */" }, { "name": "oldCreateSubid", "c_type": "SubTransactionId", "comment": "/* rd_createSubid of oldNode */" }, { "name": "oldFirstRelfilenodeSubid", "c_type": "SubTransactionId", "comment": "/* rd_firstRelfilenodeSubid of\n\t\t\t\t\t\t\t\t\t\t\t\t * oldNode */\n" }, { "name": "unique", "c_type": "bool", "comment": "/* is index unique? */" }, { "name": "primary", "c_type": "bool", "comment": "/* is index a primary key? */" }, { "name": "isconstraint", "c_type": "bool", "comment": "/* is it for a pkey/unique constraint? */" }, { "name": "deferrable", "c_type": "bool", "comment": "/* is the constraint DEFERRABLE? */" }, { "name": "initdeferred", "c_type": "bool", "comment": "/* is the constraint INITIALLY DEFERRED? */" }, { "name": "transformed", "c_type": "bool", "comment": "/* true when transformIndexStmt is finished */" }, { "name": "concurrent", "c_type": "bool", "comment": "/* should this be a concurrent index build? */" }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* just do nothing if index already exists? */" }, { "name": "reset_default_tblspc", "c_type": "bool", "comment": "/* reset default_tablespace prior to\n\t\t\t\t\t\t\t\t\t\t * executing */\n" } ], "comment": "/* ----------------------\n *\t\tCreate Index Statement\n *\n * This represents creation of an index and/or an associated constraint.\n * If isconstraint is true, we should create a pg_constraint entry along\n * with the index. But if indexOid isn't InvalidOid, we are not creating an\n * index, just a UNIQUE/PKEY constraint using an existing index. isconstraint\n * must always be true in this case, and the fields describing the index\n * properties are empty.\n * ----------------------\n */\n" }, "CreateStatsStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "defnames", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "stat_types", "c_type": "List*", "comment": "/* stat types (list of Value strings) */" }, { "name": "exprs", "c_type": "List*", "comment": "/* expressions to build statistics on */" }, { "name": "relations", "c_type": "List*", "comment": "/* rels to build stats on (list of RangeVar) */" }, { "name": "stxcomment", "c_type": "char*", "comment": "/* comment to apply to stats, or NULL */" }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* do nothing if stats name already exists */" } ], "comment": "/* ----------------------\n *\t\tCreate Statistics Statement\n * ----------------------\n */\n" }, "AlterStatsStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "defnames", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "stxstattarget", "c_type": "int", "comment": "/* statistics target */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if statistics object is missing */" } ], "comment": "/* ----------------------\n *\t\tAlter Statistics Statement\n * ----------------------\n */\n" }, "CreateFunctionStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "is_procedure", "c_type": "bool", "comment": "/* it's really CREATE PROCEDURE */" }, { "name": "replace", "c_type": "bool", "comment": "/* T => replace if already exists */" }, { "name": "funcname", "c_type": "List*", "comment": "/* qualified name of function to create */" }, { "name": "parameters", "c_type": "List*", "comment": "/* a list of FunctionParameter */" }, { "name": "returnType", "c_type": "TypeName*", "comment": "/* the return type */" }, { "name": "options", "c_type": "List*", "comment": "/* a list of DefElem */" } ], "comment": "/* ----------------------\n *\t\tCreate Function Statement\n * ----------------------\n */\n" }, "FunctionParameter": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": "/* parameter name, or NULL if not given */" }, { "name": "argType", "c_type": "TypeName*", "comment": "/* TypeName for parameter type */" }, { "name": "mode", "c_type": "FunctionParameterMode", "comment": "/* IN/OUT/etc */" }, { "name": "defexpr", "c_type": "Node*", "comment": "/* raw default expr, or NULL if not given */" } ], "comment": "/* ----------------------\n *\t\tCreate Function Statement\n * ----------------------\n */\n" }, "AlterFunctionStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "objtype", "c_type": "ObjectType", "comment": null }, { "name": "func", "c_type": "ObjectWithArgs*", "comment": "/* name and args of function */" }, { "name": "actions", "c_type": "List*", "comment": "/* list of DefElem */" } ], "comment": "/* ----------------------\n *\t\tCreate Function Statement\n * ----------------------\n */\n" }, "DoStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "args", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": "/* ----------------------\n *\t\tDO Statement\n *\n * DoStmt is the raw parser output, InlineCodeBlock is the execution-time API\n * ----------------------\n */\n" }, "InlineCodeBlock": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "source_text", "c_type": "char*", "comment": "/* source text of anonymous code block */" }, { "name": "langOid", "c_type": "Oid", "comment": "/* OID of selected language */" }, { "name": "langIsTrusted", "c_type": "bool", "comment": "/* trusted property of the language */" }, { "name": "atomic", "c_type": "bool", "comment": "/* atomic execution context */" } ], "comment": "/* ----------------------\n *\t\tDO Statement\n *\n * DoStmt is the raw parser output, InlineCodeBlock is the execution-time API\n * ----------------------\n */\n" }, "CallStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "funccall", "c_type": "FuncCall*", "comment": "/* from the parser */" }, { "name": "funcexpr", "c_type": "FuncExpr*", "comment": "/* transformed */" } ], "comment": "/* ----------------------\n *\t\tCALL statement\n * ----------------------\n */\n" }, "CallContext": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "atomic", "c_type": "bool", "comment": null } ], "comment": null }, "RenameStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "renameType", "c_type": "ObjectType", "comment": "/* OBJECT_TABLE, OBJECT_COLUMN, etc */" }, { "name": "relationType", "c_type": "ObjectType", "comment": "/* if column name, associated relation type */" }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* in case it's a table */" }, { "name": "object", "c_type": "Node*", "comment": "/* in case it's some other object */" }, { "name": "subname", "c_type": "char*", "comment": "/* name of contained object (column, rule,\n\t\t\t\t\t\t\t\t * trigger, etc) */\n" }, { "name": "newname", "c_type": "char*", "comment": "/* the new name */" }, { "name": "behavior", "c_type": "DropBehavior", "comment": "/* RESTRICT or CASCADE behavior */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if missing? */" } ], "comment": "/* ----------------------\n *\t\tAlter Object Rename Statement\n * ----------------------\n */\n" }, "AlterObjectDependsStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "objectType", "c_type": "ObjectType", "comment": "/* OBJECT_FUNCTION, OBJECT_TRIGGER, etc */" }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* in case a table is involved */" }, { "name": "object", "c_type": "Node*", "comment": "/* name of the object */" }, { "name": "extname", "c_type": "Value*", "comment": "/* extension name */" }, { "name": "remove", "c_type": "bool", "comment": "/* set true to remove dep rather than add */" } ], "comment": "/* ----------------------\n * ALTER object DEPENDS ON EXTENSION extname\n * ----------------------\n */\n" }, "AlterObjectSchemaStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "objectType", "c_type": "ObjectType", "comment": "/* OBJECT_TABLE, OBJECT_TYPE, etc */" }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* in case it's a table */" }, { "name": "object", "c_type": "Node*", "comment": "/* in case it's some other object */" }, { "name": "newschema", "c_type": "char*", "comment": "/* the new schema */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if missing? */" } ], "comment": "/* ----------------------\n *\t\tALTER object SET SCHEMA Statement\n * ----------------------\n */\n" }, "AlterOwnerStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "objectType", "c_type": "ObjectType", "comment": "/* OBJECT_TABLE, OBJECT_TYPE, etc */" }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* in case it's a table */" }, { "name": "object", "c_type": "Node*", "comment": "/* in case it's some other object */" }, { "name": "newowner", "c_type": "RoleSpec*", "comment": "/* the new owner */" } ], "comment": "/* ----------------------\n *\t\tAlter Object Owner Statement\n * ----------------------\n */\n" }, "AlterOperatorStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "opername", "c_type": "ObjectWithArgs*", "comment": "/* operator name and argument types */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": "/* ----------------------\n *\t\tAlter Operator Set ( this-n-that )\n * ----------------------\n */\n" }, "AlterTypeStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "typeName", "c_type": "List*", "comment": "/* type name (possibly qualified) */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": "/* ------------------------\n *\t\tAlter Type Set ( this-n-that )\n * ------------------------\n */\n" }, "RuleStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* relation the rule is for */" }, { "name": "rulename", "c_type": "char*", "comment": "/* name of the rule */" }, { "name": "whereClause", "c_type": "Node*", "comment": "/* qualifications */" }, { "name": "event", "c_type": "CmdType", "comment": "/* SELECT, INSERT, etc */" }, { "name": "instead", "c_type": "bool", "comment": "/* is a 'do instead'? */" }, { "name": "actions", "c_type": "List*", "comment": "/* the action statements */" }, { "name": "replace", "c_type": "bool", "comment": "/* OR REPLACE */" } ], "comment": "/* ----------------------\n *\t\tCreate Rule Statement\n * ----------------------\n */\n" }, "NotifyStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "conditionname", "c_type": "char*", "comment": "/* condition name to notify */" }, { "name": "payload", "c_type": "char*", "comment": "/* the payload string, or NULL if none */" } ], "comment": "/* ----------------------\n *\t\tNotify Statement\n * ----------------------\n */\n" }, "ListenStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "conditionname", "c_type": "char*", "comment": "/* condition name to listen on */" } ], "comment": "/* ----------------------\n *\t\tListen Statement\n * ----------------------\n */\n" }, "UnlistenStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "conditionname", "c_type": "char*", "comment": "/* name to unlisten on, or NULL for all */" } ], "comment": "/* ----------------------\n *\t\tUnlisten Statement\n * ----------------------\n */\n" }, "TransactionStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "kind", "c_type": "TransactionStmtKind", "comment": "/* see above */" }, { "name": "options", "c_type": "List*", "comment": "/* for BEGIN/START commands */" }, { "name": "savepoint_name", "c_type": "char*", "comment": "/* for savepoint commands */" }, { "name": "gid", "c_type": "char*", "comment": "/* for two-phase-commit related commands */" }, { "name": "chain", "c_type": "bool", "comment": "/* AND CHAIN option */" } ], "comment": "/* ----------------------\n *\t\t{Begin|Commit|Rollback} Transaction Statement\n * ----------------------\n */\n" }, "CompositeTypeStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "typevar", "c_type": "RangeVar*", "comment": "/* the composite type to be created */" }, { "name": "coldeflist", "c_type": "List*", "comment": "/* list of ColumnDef nodes */" } ], "comment": "/* ----------------------\n *\t\tCreate Type Statement, composite types\n * ----------------------\n */\n" }, "CreateEnumStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "typeName", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "vals", "c_type": "List*", "comment": "/* enum values (list of Value strings) */" } ], "comment": "/* ----------------------\n *\t\tCreate Type Statement, enum types\n * ----------------------\n */\n" }, "CreateRangeStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "typeName", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "params", "c_type": "List*", "comment": "/* range parameters (list of DefElem) */" } ], "comment": "/* ----------------------\n *\t\tCreate Type Statement, range types\n * ----------------------\n */\n" }, "AlterEnumStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "typeName", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "oldVal", "c_type": "char*", "comment": "/* old enum value's name, if renaming */" }, { "name": "newVal", "c_type": "char*", "comment": "/* new enum value's name */" }, { "name": "newValNeighbor", "c_type": "char*", "comment": "/* neighboring enum value, if specified */" }, { "name": "newValIsAfter", "c_type": "bool", "comment": "/* place new enum value after neighbor? */" }, { "name": "skipIfNewValExists", "c_type": "bool", "comment": "/* no error if new already exists? */" } ], "comment": "/* ----------------------\n *\t\tAlter Type Statement, enum types\n * ----------------------\n */\n" }, "ViewStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "view", "c_type": "RangeVar*", "comment": "/* the view to be created */" }, { "name": "aliases", "c_type": "List*", "comment": "/* target column names */" }, { "name": "query", "c_type": "Node*", "comment": "/* the SELECT query (as a raw parse tree) */" }, { "name": "replace", "c_type": "bool", "comment": "/* replace an existing view? */" }, { "name": "options", "c_type": "List*", "comment": "/* options from WITH clause */" }, { "name": "withCheckOption", "c_type": "ViewCheckOption", "comment": "/* WITH CHECK OPTION */" } ], "comment": "/* ----------------------\n *\t\tCreate View Statement\n * ----------------------\n */\n" }, "LoadStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "filename", "c_type": "char*", "comment": "/* file to load */" } ], "comment": "/* ----------------------\n *\t\tLoad Statement\n * ----------------------\n */\n" }, "CreatedbStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "dbname", "c_type": "char*", "comment": "/* name of database to create */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": "/* ----------------------\n *\t\tCreatedb Statement\n * ----------------------\n */\n" }, "AlterDatabaseStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "dbname", "c_type": "char*", "comment": "/* name of database to alter */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": "/* ----------------------\n *\tAlter Database\n * ----------------------\n */\n" }, "AlterDatabaseSetStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "dbname", "c_type": "char*", "comment": "/* database name */" }, { "name": "setstmt", "c_type": "VariableSetStmt*", "comment": "/* SET or RESET subcommand */" } ], "comment": "/* ----------------------\n *\tAlter Database\n * ----------------------\n */\n" }, "DropdbStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "dbname", "c_type": "char*", "comment": "/* database to drop */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* skip error if db is missing? */" }, { "name": "options", "c_type": "List*", "comment": "/* currently only FORCE is supported */" } ], "comment": "/* ----------------------\n *\t\tDropdb Statement\n * ----------------------\n */\n" }, "AlterSystemStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "setstmt", "c_type": "VariableSetStmt*", "comment": "/* SET subcommand */" } ], "comment": "/* ----------------------\n *\t\tAlter System Statement\n * ----------------------\n */\n" }, "ClusterStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* relation being indexed, or NULL if all */" }, { "name": "indexname", "c_type": "char*", "comment": "/* original index defined */" }, { "name": "options", "c_type": "int", "comment": "/* OR of ClusterOption flags */" } ], "comment": null }, "VacuumStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "options", "c_type": "List*", "comment": "/* list of DefElem nodes */" }, { "name": "rels", "c_type": "List*", "comment": "/* list of VacuumRelation, or NIL for all */" }, { "name": "is_vacuumcmd", "c_type": "bool", "comment": "/* true for VACUUM, false for ANALYZE */" } ], "comment": "/* ----------------------\n *\t\tVacuum and Analyze Statements\n *\n * Even though these are nominally two statements, it's convenient to use\n * just one node type for both.\n * ----------------------\n */\n" }, "VacuumRelation": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* table name to process, or NULL */" }, { "name": "oid", "c_type": "Oid", "comment": "/* table's OID; InvalidOid if not looked up */" }, { "name": "va_cols", "c_type": "List*", "comment": "/* list of column names, or NIL for all */" } ], "comment": "/*\n * Info about a single target table of VACUUM/ANALYZE.\n *\n * If the OID field is set, it always identifies the table to process.\n * Then the relation field can be NULL; if it isn't, it's used only to report\n * failure to open/lock the relation.\n */\n" }, "ExplainStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "query", "c_type": "Node*", "comment": "/* the query (see comments above) */" }, { "name": "options", "c_type": "List*", "comment": "/* list of DefElem nodes */" } ], "comment": "/* ----------------------\n *\t\tExplain Statement\n *\n * The \"query\" field is initially a raw parse tree, and is converted to a\n * Query node during parse analysis. Note that rewriting and planning\n * of the query are always postponed until execution.\n * ----------------------\n */\n" }, "CreateTableAsStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "query", "c_type": "Node*", "comment": "/* the query (see comments above) */" }, { "name": "into", "c_type": "IntoClause*", "comment": "/* destination table */" }, { "name": "relkind", "c_type": "ObjectType", "comment": "/* OBJECT_TABLE or OBJECT_MATVIEW */" }, { "name": "is_select_into", "c_type": "bool", "comment": "/* it was written as SELECT INTO */" }, { "name": "if_not_exists", "c_type": "bool", "comment": "/* just do nothing if it already exists? */" } ], "comment": "/* ----------------------\n *\t\tCREATE TABLE AS Statement (a/k/a SELECT INTO)\n *\n * A query written as CREATE TABLE AS will produce this node type natively.\n * A query written as SELECT ... INTO will be transformed to this form during\n * parse analysis.\n * A query written as CREATE MATERIALIZED view will produce this node type,\n * during parse analysis, since it needs all the same data.\n *\n * The \"query\" field is handled similarly to EXPLAIN, though note that it\n * can be a SELECT or an EXECUTE, but not other DML statements.\n * ----------------------\n */\n" }, "RefreshMatViewStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "concurrent", "c_type": "bool", "comment": "/* allow concurrent access? */" }, { "name": "skipData", "c_type": "bool", "comment": "/* true for WITH NO DATA */" }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* relation to insert into */" } ], "comment": "/* ----------------------\n *\t\tREFRESH MATERIALIZED VIEW Statement\n * ----------------------\n */\n" }, "CheckPointStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null } ], "comment": "/* ----------------------\n * Checkpoint Statement\n * ----------------------\n */\n" }, "DiscardStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "target", "c_type": "DiscardMode", "comment": null } ], "comment": "/* ----------------------\n * Discard Statement\n * ----------------------\n */\n" }, "LockStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "relations", "c_type": "List*", "comment": "/* relations to lock */" }, { "name": "mode", "c_type": "int", "comment": "/* lock mode */" }, { "name": "nowait", "c_type": "bool", "comment": "/* no wait mode */" } ], "comment": "/* ----------------------\n *\t\tLOCK Statement\n * ----------------------\n */\n" }, "ConstraintsSetStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "constraints", "c_type": "List*", "comment": "/* List of names as RangeVars */" }, { "name": "deferred", "c_type": "bool", "comment": null } ], "comment": "/* ----------------------\n *\t\tSET CONSTRAINTS Statement\n * ----------------------\n */\n" }, "ReindexStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "kind", "c_type": "ReindexObjectType", "comment": "/* REINDEX_OBJECT_INDEX, REINDEX_OBJECT_TABLE,\n\t\t\t\t\t\t\t\t * etc. */\n" }, { "name": "relation", "c_type": "RangeVar*", "comment": "/* Table or index to reindex */" }, { "name": "name", "c_type": "char*", "comment": "/* name of database to reindex */" }, { "name": "options", "c_type": "int", "comment": "/* Reindex options flags */" }, { "name": "concurrent", "c_type": "bool", "comment": "/* reindex concurrently? */" } ], "comment": null }, "CreateConversionStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "conversion_name", "c_type": "List*", "comment": "/* Name of the conversion */" }, { "name": "for_encoding_name", "c_type": "char*", "comment": "/* source encoding name */" }, { "name": "to_encoding_name", "c_type": "char*", "comment": "/* destination encoding name */" }, { "name": "func_name", "c_type": "List*", "comment": "/* qualified conversion function name */" }, { "name": "def", "c_type": "bool", "comment": "/* is this a default conversion? */" } ], "comment": "/* ----------------------\n *\t\tCREATE CONVERSION Statement\n * ----------------------\n */\n" }, "CreateCastStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "sourcetype", "c_type": "TypeName*", "comment": null }, { "name": "targettype", "c_type": "TypeName*", "comment": null }, { "name": "func", "c_type": "ObjectWithArgs*", "comment": null }, { "name": "context", "c_type": "CoercionContext", "comment": null }, { "name": "inout", "c_type": "bool", "comment": null } ], "comment": "/* ----------------------\n *\tCREATE CAST Statement\n * ----------------------\n */\n" }, "CreateTransformStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "replace", "c_type": "bool", "comment": null }, { "name": "type_name", "c_type": "TypeName*", "comment": null }, { "name": "lang", "c_type": "char*", "comment": null }, { "name": "fromsql", "c_type": "ObjectWithArgs*", "comment": null }, { "name": "tosql", "c_type": "ObjectWithArgs*", "comment": null } ], "comment": "/* ----------------------\n *\tCREATE TRANSFORM Statement\n * ----------------------\n */\n" }, "PrepareStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": "/* Name of plan, arbitrary */" }, { "name": "argtypes", "c_type": "List*", "comment": "/* Types of parameters (List of TypeName) */" }, { "name": "query", "c_type": "Node*", "comment": "/* The query itself (as a raw parsetree) */" } ], "comment": "/* ----------------------\n *\t\tPREPARE Statement\n * ----------------------\n */\n" }, "ExecuteStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": "/* The name of the plan to execute */" }, { "name": "params", "c_type": "List*", "comment": "/* Values to assign to parameters */" } ], "comment": "/* ----------------------\n *\t\tEXECUTE Statement\n * ----------------------\n */\n" }, "DeallocateStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "name", "c_type": "char*", "comment": "/* The name of the plan to remove */" }, { "comment": "\t/* NULL means DEALLOCATE ALL */\n" } ], "comment": "/* ----------------------\n *\t\tDEALLOCATE Statement\n * ----------------------\n */\n" }, "DropOwnedStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "roles", "c_type": "List*", "comment": null }, { "name": "behavior", "c_type": "DropBehavior", "comment": null } ], "comment": "/*\n *\t\tDROP OWNED statement\n */\n" }, "ReassignOwnedStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "roles", "c_type": "List*", "comment": null }, { "name": "newrole", "c_type": "RoleSpec*", "comment": null } ], "comment": "/*\n *\t\tREASSIGN OWNED statement\n */\n" }, "AlterTSDictionaryStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "dictname", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": "/*\n * TS Dictionary stmts: DefineStmt, RenameStmt and DropStmt are default\n */\n" }, "AlterTSConfigurationStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "kind", "c_type": "AlterTSConfigType", "comment": "/* ALTER_TSCONFIG_ADD_MAPPING, etc */" }, { "name": "cfgname", "c_type": "List*", "comment": "/* qualified name (list of Value strings) */" }, { "comment": "" }, { "comment": "\t/*\n\t * dicts will be non-NIL if ADD/ALTER MAPPING was specified. If dicts is\n\t * NIL, but tokentype isn't, DROP MAPPING was specified.\n\t */\n" }, { "name": "tokentype", "c_type": "List*", "comment": "/* list of Value strings */" }, { "name": "dicts", "c_type": "List*", "comment": "/* list of list of Value strings */" }, { "name": "override", "c_type": "bool", "comment": "/* if true - remove old variant */" }, { "name": "replace", "c_type": "bool", "comment": "/* if true - replace dictionary by another */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* for DROP - skip error if missing? */" } ], "comment": null }, "CreatePublicationStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "pubname", "c_type": "char*", "comment": "/* Name of the publication */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" }, { "name": "tables", "c_type": "List*", "comment": "/* Optional list of tables to add */" }, { "name": "for_all_tables", "c_type": "bool", "comment": "/* Special publication for all tables in db */" } ], "comment": null }, "AlterPublicationStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "pubname", "c_type": "char*", "comment": "/* Name of the publication */" }, { "comment": "" }, { "comment": "\t/* parameters used for ALTER PUBLICATION ... WITH */\n" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" }, { "comment": "" }, { "comment": "\t/* parameters used for ALTER PUBLICATION ... ADD/DROP TABLE */\n" }, { "name": "tables", "c_type": "List*", "comment": "/* List of tables to add/drop */" }, { "name": "for_all_tables", "c_type": "bool", "comment": "/* Special publication for all tables in db */" }, { "name": "tableAction", "c_type": "DefElemAction", "comment": "/* What action to perform with the tables */" } ], "comment": null }, "CreateSubscriptionStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "subname", "c_type": "char*", "comment": "/* Name of the subscription */" }, { "name": "conninfo", "c_type": "char*", "comment": "/* Connection string to publisher */" }, { "name": "publication", "c_type": "List*", "comment": "/* One or more publication to subscribe to */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": null }, "AlterSubscriptionStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "kind", "c_type": "AlterSubscriptionType", "comment": "/* ALTER_SUBSCRIPTION_OPTIONS, etc */" }, { "name": "subname", "c_type": "char*", "comment": "/* Name of the subscription */" }, { "name": "conninfo", "c_type": "char*", "comment": "/* Connection string to publisher */" }, { "name": "publication", "c_type": "List*", "comment": "/* One or more publication to subscribe to */" }, { "name": "options", "c_type": "List*", "comment": "/* List of DefElem nodes */" } ], "comment": null }, "DropSubscriptionStmt": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "subname", "c_type": "char*", "comment": "/* Name of the subscription */" }, { "name": "missing_ok", "c_type": "bool", "comment": "/* Skip error if missing? */" }, { "name": "behavior", "c_type": "DropBehavior", "comment": "/* RESTRICT or CASCADE behavior */" } ], "comment": null } }, "nodes/primnodes": { "Alias": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "aliasname", "c_type": "char*", "comment": "/* aliased rel name (never qualified) */" }, { "name": "colnames", "c_type": "List*", "comment": "/* optional list of column aliases */" } ], "comment": "/*\n * Alias -\n *\t specifies an alias for a range variable; the alias might also\n *\t specify renaming of columns within the table.\n *\n * Note: colnames is a list of Value nodes (always strings). In Alias structs\n * associated with RTEs, there may be entries corresponding to dropped\n * columns; these are normally empty strings (\"\"). See parsenodes.h for info.\n */\n" }, "RangeVar": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "catalogname", "c_type": "char*", "comment": "/* the catalog (database) name, or NULL */" }, { "name": "schemaname", "c_type": "char*", "comment": "/* the schema name, or NULL */" }, { "name": "relname", "c_type": "char*", "comment": "/* the relation/sequence name */" }, { "name": "inh", "c_type": "bool", "comment": "/* expand rel by inheritance? recursively act\n\t\t\t\t\t\t\t\t * on children? */\n" }, { "name": "relpersistence", "c_type": "char", "comment": "/* see RELPERSISTENCE_* in pg_class.h */" }, { "name": "alias", "c_type": "Alias*", "comment": "/* table alias & optional column aliases */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * RangeVar - range variable, used in FROM clauses\n *\n * Also used to represent table names in utility statements; there, the alias\n * field is not used, and inh tells whether to apply the operation\n * recursively to child tables. In some contexts it is also useful to carry\n * a TEMP table indication here.\n */\n" }, "TableFunc": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "ns_uris", "c_type": "List*", "comment": "/* list of namespace URI expressions */" }, { "name": "ns_names", "c_type": "List*", "comment": "/* list of namespace names or NULL */" }, { "name": "docexpr", "c_type": "Node*", "comment": "/* input document expression */" }, { "name": "rowexpr", "c_type": "Node*", "comment": "/* row filter expression */" }, { "name": "colnames", "c_type": "List*", "comment": "/* column names (list of String) */" }, { "name": "coltypes", "c_type": "List*", "comment": "/* OID list of column type OIDs */" }, { "name": "coltypmods", "c_type": "List*", "comment": "/* integer list of column typmods */" }, { "name": "colcollations", "c_type": "List*", "comment": "/* OID list of column collation OIDs */" }, { "name": "colexprs", "c_type": "List*", "comment": "/* list of column filter expressions */" }, { "name": "coldefexprs", "c_type": "List*", "comment": "/* list of column default expressions */" }, { "name": "notnulls", "c_type": "Bitmapset*", "comment": "/* nullability flag for each output column */" }, { "name": "ordinalitycol", "c_type": "int", "comment": "/* counts from 0; -1 if none specified */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * TableFunc - node for a table function, such as XMLTABLE.\n *\n * Entries in the ns_names list are either string Value nodes containing\n * literal namespace names, or NULL pointers to represent DEFAULT.\n */\n" }, "IntoClause": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "comment": "" }, { "name": "rel", "c_type": "RangeVar*", "comment": "/* target relation name */" }, { "name": "colNames", "c_type": "List*", "comment": "/* column names to assign, or NIL */" }, { "name": "accessMethod", "c_type": "char*", "comment": "/* table access method */" }, { "name": "options", "c_type": "List*", "comment": "/* options from WITH clause */" }, { "name": "onCommit", "c_type": "OnCommitAction", "comment": "/* what do we do at COMMIT? */" }, { "name": "tableSpaceName", "c_type": "char*", "comment": "/* table space to use, or NULL */" }, { "name": "viewQuery", "c_type": "Node*", "comment": "/* materialized view's SELECT query */" }, { "name": "skipData", "c_type": "bool", "comment": "/* true for WITH NO DATA */" } ], "comment": "/*\n * IntoClause - target information for SELECT INTO, CREATE TABLE AS, and\n * CREATE MATERIALIZED VIEW\n *\n * For CREATE MATERIALIZED VIEW, viewQuery is the parsed-but-not-rewritten\n * SELECT Query for the view; otherwise it's NULL. (Although it's actually\n * Query*, we declare it as Node* to avoid a forward reference.)\n */\n" }, "Expr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null } ], "comment": "/*\n * Expr - generic superclass for executable-expression nodes\n *\n * All node types that are used in executable expression trees should derive\n * from Expr (that is, have Expr as their first field). Since Expr only\n * contains NodeTag, this is a formality, but it is an easy form of\n * documentation. See also the ExprState node types in execnodes.h.\n */\n" }, "Var": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "varno", "c_type": "Index", "comment": "/* index of this var's relation in the range\n\t\t\t\t\t\t\t\t * table, or INNER_VAR/OUTER_VAR/INDEX_VAR */\n" }, { "name": "varattno", "c_type": "AttrNumber", "comment": "/* attribute number of this var, or zero for\n\t\t\t\t\t\t\t\t * all attrs (\"whole-row Var\") */\n" }, { "name": "vartype", "c_type": "Oid", "comment": "/* pg_type OID for the type of this var */" }, { "name": "vartypmod", "c_type": "int32", "comment": "/* pg_attribute typmod value */" }, { "name": "varcollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "varlevelsup", "c_type": "Index", "comment": "/* for subquery variables referencing outer\n\t\t\t\t\t\t\t\t * relations; 0 in a normal var, >0 means N\n\t\t\t\t\t\t\t\t * levels up */\n" }, { "name": "varnosyn", "c_type": "Index", "comment": "/* syntactic relation index (0 if unknown) */" }, { "name": "varattnosyn", "c_type": "AttrNumber", "comment": "/* syntactic attribute number */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/* Symbols for the indexes of the special RTE entries in rules */\n" }, "Const": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "consttype", "c_type": "Oid", "comment": "/* pg_type OID of the constant's datatype */" }, { "name": "consttypmod", "c_type": "int32", "comment": "/* typmod value, if any */" }, { "name": "constcollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "constlen", "c_type": "int", "comment": "/* typlen of the constant's datatype */" }, { "name": "constvalue", "c_type": "Datum", "comment": "/* the constant's value */" }, { "name": "constisnull", "c_type": "bool", "comment": "/* whether the constant is null (if true,\n\t\t\t\t\t\t\t\t * constvalue is undefined) */\n" }, { "name": "constbyval", "c_type": "bool", "comment": "/* whether this datatype is passed by value.\n\t\t\t\t\t\t\t\t * If true, then all the information is stored\n\t\t\t\t\t\t\t\t * in the Datum. If false, then the Datum\n\t\t\t\t\t\t\t\t * contains a pointer to the information. */\n" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * Const\n *\n * Note: for varlena data types, we make a rule that a Const node's value\n * must be in non-extended form (4-byte header, no compression or external\n * references). This ensures that the Const node is self-contained and makes\n * it more likely that equal() will see logically identical values as equal.\n */\n" }, "Param": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "paramkind", "c_type": "ParamKind", "comment": "/* kind of parameter. See above */" }, { "name": "paramid", "c_type": "int", "comment": "/* numeric ID for parameter */" }, { "name": "paramtype", "c_type": "Oid", "comment": "/* pg_type OID of parameter's datatype */" }, { "name": "paramtypmod", "c_type": "int32", "comment": "/* typmod value, if known */" }, { "name": "paramcollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * Param\n *\n *\t\tparamkind specifies the kind of parameter. The possible values\n *\t\tfor this field are:\n *\n *\t\tPARAM_EXTERN: The parameter value is supplied from outside the plan.\n *\t\t\t\tSuch parameters are numbered from 1 to n.\n *\n *\t\tPARAM_EXEC: The parameter is an internal executor parameter, used\n *\t\t\t\tfor passing values into and out of sub-queries or from\n *\t\t\t\tnestloop joins to their inner scans.\n *\t\t\t\tFor historical reasons, such parameters are numbered from 0.\n *\t\t\t\tThese numbers are independent of PARAM_EXTERN numbers.\n *\n *\t\tPARAM_SUBLINK:\tThe parameter represents an output column of a SubLink\n *\t\t\t\tnode's sub-select. The column number is contained in the\n *\t\t\t\t`paramid' field. (This type of Param is converted to\n *\t\t\t\tPARAM_EXEC during planning.)\n *\n *\t\tPARAM_MULTIEXPR: Like PARAM_SUBLINK, the parameter represents an\n *\t\t\t\toutput column of a SubLink node's sub-select, but here, the\n *\t\t\t\tSubLink is always a MULTIEXPR SubLink. The high-order 16 bits\n *\t\t\t\tof the `paramid' field contain the SubLink's subLinkId, and\n *\t\t\t\tthe low-order 16 bits contain the column number. (This type\n *\t\t\t\tof Param is also converted to PARAM_EXEC during planning.)\n */\n" }, "Aggref": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "aggfnoid", "c_type": "Oid", "comment": "/* pg_proc Oid of the aggregate */" }, { "name": "aggtype", "c_type": "Oid", "comment": "/* type Oid of result of the aggregate */" }, { "name": "aggcollid", "c_type": "Oid", "comment": "/* OID of collation of result */" }, { "name": "inputcollid", "c_type": "Oid", "comment": "/* OID of collation that function should use */" }, { "name": "aggtranstype", "c_type": "Oid", "comment": "/* type Oid of aggregate's transition value */" }, { "name": "aggargtypes", "c_type": "List*", "comment": "/* type Oids of direct and aggregated args */" }, { "name": "aggdirectargs", "c_type": "List*", "comment": "/* direct arguments, if an ordered-set agg */" }, { "name": "args", "c_type": "List*", "comment": "/* aggregated arguments and sort expressions */" }, { "name": "aggorder", "c_type": "List*", "comment": "/* ORDER BY (list of SortGroupClause) */" }, { "name": "aggdistinct", "c_type": "List*", "comment": "/* DISTINCT (list of SortGroupClause) */" }, { "name": "aggfilter", "c_type": "Expr*", "comment": "/* FILTER expression, if any */" }, { "name": "aggstar", "c_type": "bool", "comment": "/* true if argument list was really '*' */" }, { "name": "aggvariadic", "c_type": "bool", "comment": "/* true if variadic arguments have been\n\t\t\t\t\t\t\t\t * combined into an array last argument */\n" }, { "name": "aggkind", "c_type": "char", "comment": "/* aggregate kind (see pg_aggregate.h) */" }, { "name": "agglevelsup", "c_type": "Index", "comment": "/* > 0 if agg belongs to outer query */" }, { "name": "aggsplit", "c_type": "AggSplit", "comment": "/* expected agg-splitting mode of parent Agg */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * Aggref\n *\n * The aggregate's args list is a targetlist, ie, a list of TargetEntry nodes.\n *\n * For a normal (non-ordered-set) aggregate, the non-resjunk TargetEntries\n * represent the aggregate's regular arguments (if any) and resjunk TLEs can\n * be added at the end to represent ORDER BY expressions that are not also\n * arguments. As in a top-level Query, the TLEs can be marked with\n * ressortgroupref indexes to let them be referenced by SortGroupClause\n * entries in the aggorder and/or aggdistinct lists. This represents ORDER BY\n * and DISTINCT operations to be applied to the aggregate input rows before\n * they are passed to the transition function. The grammar only allows a\n * simple \"DISTINCT\" specifier for the arguments, but we use the full\n * query-level representation to allow more code sharing.\n *\n * For an ordered-set aggregate, the args list represents the WITHIN GROUP\n * (aggregated) arguments, all of which will be listed in the aggorder list.\n * DISTINCT is not supported in this case, so aggdistinct will be NIL.\n * The direct arguments appear in aggdirectargs (as a list of plain\n * expressions, not TargetEntry nodes).\n *\n * aggtranstype is the data type of the state transition values for this\n * aggregate (resolved to an actual type, if agg's transtype is polymorphic).\n * This is determined during planning and is InvalidOid before that.\n *\n * aggargtypes is an OID list of the data types of the direct and regular\n * arguments. Normally it's redundant with the aggdirectargs and args lists,\n * but in a combining aggregate, it's not because the args list has been\n * replaced with a single argument representing the partial-aggregate\n * transition values.\n *\n * aggsplit indicates the expected partial-aggregation mode for the Aggref's\n * parent plan node. It's always set to AGGSPLIT_SIMPLE in the parser, but\n * the planner might change it to something else. We use this mainly as\n * a crosscheck that the Aggrefs match the plan; but note that when aggsplit\n * indicates a non-final mode, aggtype reflects the transition data type\n * not the SQL-level output type of the aggregate.\n */\n" }, "GroupingFunc": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "args", "c_type": "List*", "comment": "/* arguments, not evaluated but kept for\n\t\t\t\t\t\t\t\t * benefit of EXPLAIN etc. */\n" }, { "name": "refs", "c_type": "List*", "comment": "/* ressortgrouprefs of arguments */" }, { "name": "cols", "c_type": "List*", "comment": "/* actual column positions set by planner */" }, { "name": "agglevelsup", "c_type": "Index", "comment": "/* same as Aggref.agglevelsup */" }, { "name": "location", "c_type": "int", "comment": "/* token location */" } ], "comment": "/*\n * GroupingFunc\n *\n * A GroupingFunc is a GROUPING(...) expression, which behaves in many ways\n * like an aggregate function (e.g. it \"belongs\" to a specific query level,\n * which might not be the one immediately containing it), but also differs in\n * an important respect: it never evaluates its arguments, they merely\n * designate expressions from the GROUP BY clause of the query level to which\n * it belongs.\n *\n * The spec defines the evaluation of GROUPING() purely by syntactic\n * replacement, but we make it a real expression for optimization purposes so\n * that one Agg node can handle multiple grouping sets at once. Evaluating the\n * result only needs the column positions to check against the grouping set\n * being projected. However, for EXPLAIN to produce meaningful output, we have\n * to keep the original expressions around, since expression deparse does not\n * give us any feasible way to get at the GROUP BY clause.\n *\n * Also, we treat two GroupingFunc nodes as equal if they have equal arguments\n * lists and agglevelsup, without comparing the refs and cols annotations.\n *\n * In raw parse output we have only the args list; parse analysis fills in the\n * refs list, and the planner fills in the cols list.\n */\n" }, "WindowFunc": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "winfnoid", "c_type": "Oid", "comment": "/* pg_proc Oid of the function */" }, { "name": "wintype", "c_type": "Oid", "comment": "/* type Oid of result of the window function */" }, { "name": "wincollid", "c_type": "Oid", "comment": "/* OID of collation of result */" }, { "name": "inputcollid", "c_type": "Oid", "comment": "/* OID of collation that function should use */" }, { "name": "args", "c_type": "List*", "comment": "/* arguments to the window function */" }, { "name": "aggfilter", "c_type": "Expr*", "comment": "/* FILTER expression, if any */" }, { "name": "winref", "c_type": "Index", "comment": "/* index of associated WindowClause */" }, { "name": "winstar", "c_type": "bool", "comment": "/* true if argument list was really '*' */" }, { "name": "winagg", "c_type": "bool", "comment": "/* is function a simple aggregate? */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * WindowFunc\n */\n" }, "SubscriptingRef": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "refcontainertype", "c_type": "Oid", "comment": "/* type of the container proper */" }, { "name": "refelemtype", "c_type": "Oid", "comment": "/* type of the container elements */" }, { "name": "reftypmod", "c_type": "int32", "comment": "/* typmod of the container (and elements too) */" }, { "name": "refcollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "refupperindexpr", "c_type": "List*", "comment": "/* expressions that evaluate to upper\n\t\t\t\t\t\t\t\t\t * container indexes */\n" }, { "name": "reflowerindexpr", "c_type": "List*", "comment": "/* expressions that evaluate to lower\n\t\t\t\t\t\t\t\t\t * container indexes, or NIL for single\n\t\t\t\t\t\t\t\t\t * container element */\n" }, { "name": "refexpr", "c_type": "Expr*", "comment": "/* the expression that evaluates to a\n\t\t\t\t\t\t\t\t * container value */\n" }, { "comment": "" }, { "name": "refassgnexpr", "c_type": "Expr*", "comment": "/* expression for the source value, or NULL if\n\t\t\t\t\t\t\t\t * fetch */\n" } ], "comment": "/* ----------------\n *\tSubscriptingRef: describes a subscripting operation over a container\n *\t\t\t(array, etc).\n *\n * A SubscriptingRef can describe fetching a single element from a container,\n * fetching a part of container (e.g. array slice), storing a single element into\n * a container, or storing a slice. The \"store\" cases work with an\n * initial container value and a source value that is inserted into the\n * appropriate part of the container; the result of the operation is an\n * entire new modified container value.\n *\n * If reflowerindexpr = NIL, then we are fetching or storing a single container\n * element at the subscripts given by refupperindexpr. Otherwise we are\n * fetching or storing a container slice, that is a rectangular subcontainer\n * with lower and upper bounds given by the index expressions.\n * reflowerindexpr must be the same length as refupperindexpr when it\n * is not NIL.\n *\n * In the slice case, individual expressions in the subscript lists can be\n * NULL, meaning \"substitute the array's current lower or upper bound\".\n *\n * Note: the result datatype is the element type when fetching a single\n * element; but it is the array type when doing subarray fetch or either\n * type of store.\n *\n * Note: for the cases where a container is returned, if refexpr yields a R/W\n * expanded container, then the implementation is allowed to modify that object\n * in-place and return the same object.)\n * ----------------\n */\n" }, "FuncExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "funcid", "c_type": "Oid", "comment": "/* PG_PROC OID of the function */" }, { "name": "funcresulttype", "c_type": "Oid", "comment": "/* PG_TYPE OID of result value */" }, { "name": "funcretset", "c_type": "bool", "comment": "/* true if function returns set */" }, { "name": "funcvariadic", "c_type": "bool", "comment": "/* true if variadic arguments have been\n\t\t\t\t\t\t\t\t * combined into an array last argument */\n" }, { "name": "funcformat", "c_type": "CoercionForm", "comment": "/* how to display this function call */" }, { "name": "funccollid", "c_type": "Oid", "comment": "/* OID of collation of result */" }, { "name": "inputcollid", "c_type": "Oid", "comment": "/* OID of collation that function should use */" }, { "name": "args", "c_type": "List*", "comment": "/* arguments to the function */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * FuncExpr - expression node for a function call\n */\n" }, "NamedArgExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* the argument expression */" }, { "name": "name", "c_type": "char*", "comment": "/* the name */" }, { "name": "argnumber", "c_type": "int", "comment": "/* argument's number in positional notation */" }, { "name": "location", "c_type": "int", "comment": "/* argument name location, or -1 if unknown */" } ], "comment": "/*\n * NamedArgExpr - a named argument of a function\n *\n * This node type can only appear in the args list of a FuncCall or FuncExpr\n * node. We support pure positional call notation (no named arguments),\n * named notation (all arguments are named), and mixed notation (unnamed\n * arguments followed by named ones).\n *\n * Parse analysis sets argnumber to the positional index of the argument,\n * but doesn't rearrange the argument list.\n *\n * The planner will convert argument lists to pure positional notation\n * during expression preprocessing, so execution never sees a NamedArgExpr.\n */\n" }, "OpExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "opno", "c_type": "Oid", "comment": "/* PG_OPERATOR OID of the operator */" }, { "name": "opfuncid", "c_type": "Oid", "comment": "/* PG_PROC OID of underlying function */" }, { "name": "opresulttype", "c_type": "Oid", "comment": "/* PG_TYPE OID of result value */" }, { "name": "opretset", "c_type": "bool", "comment": "/* true if operator returns set */" }, { "name": "opcollid", "c_type": "Oid", "comment": "/* OID of collation of result */" }, { "name": "inputcollid", "c_type": "Oid", "comment": "/* OID of collation that operator should use */" }, { "name": "args", "c_type": "List*", "comment": "/* arguments to the operator (1 or 2) */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * OpExpr - expression node for an operator invocation\n *\n * Semantically, this is essentially the same as a function call.\n *\n * Note that opfuncid is not necessarily filled in immediately on creation\n * of the node. The planner makes sure it is valid before passing the node\n * tree to the executor, but during parsing/planning opfuncid can be 0.\n */\n" }, "ScalarArrayOpExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "opno", "c_type": "Oid", "comment": "/* PG_OPERATOR OID of the operator */" }, { "name": "opfuncid", "c_type": "Oid", "comment": "/* PG_PROC OID of underlying function */" }, { "name": "useOr", "c_type": "bool", "comment": "/* true for ANY, false for ALL */" }, { "name": "inputcollid", "c_type": "Oid", "comment": "/* OID of collation that operator should use */" }, { "name": "args", "c_type": "List*", "comment": "/* the scalar and array operands */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * ScalarArrayOpExpr - expression node for \"scalar op ANY/ALL (array)\"\n *\n * The operator must yield boolean. It is applied to the left operand\n * and each element of the righthand array, and the results are combined\n * with OR or AND (for ANY or ALL respectively). The node representation\n * is almost the same as for the underlying operator, but we need a useOr\n * flag to remember whether it's ANY or ALL, and we don't have to store\n * the result type (or the collation) because it must be boolean.\n */\n" }, "BoolExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "boolop", "c_type": "BoolExprType", "comment": null }, { "name": "args", "c_type": "List*", "comment": "/* arguments to this expression */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": null }, "SubLink": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "subLinkType", "c_type": "SubLinkType", "comment": "/* see above */" }, { "name": "subLinkId", "c_type": "int", "comment": "/* ID (1..n); 0 if not MULTIEXPR */" }, { "name": "testexpr", "c_type": "Node*", "comment": "/* outer-query test for ALL/ANY/ROWCOMPARE */" }, { "name": "operName", "c_type": "List*", "comment": "/* originally specified operator name */" }, { "name": "subselect", "c_type": "Node*", "comment": "/* subselect as Query* or raw parsetree */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * SubLink\n *\n * A SubLink represents a subselect appearing in an expression, and in some\n * cases also the combining operator(s) just above it. The subLinkType\n * indicates the form of the expression represented:\n *\tEXISTS_SUBLINK\t\tEXISTS(SELECT ...)\n *\tALL_SUBLINK\t\t\t(lefthand) op ALL (SELECT ...)\n *\tANY_SUBLINK\t\t\t(lefthand) op ANY (SELECT ...)\n *\tROWCOMPARE_SUBLINK\t(lefthand) op (SELECT ...)\n *\tEXPR_SUBLINK\t\t(SELECT with single targetlist item ...)\n *\tMULTIEXPR_SUBLINK\t(SELECT with multiple targetlist items ...)\n *\tARRAY_SUBLINK\t\tARRAY(SELECT with single targetlist item ...)\n *\tCTE_SUBLINK\t\t\tWITH query (never actually part of an expression)\n * For ALL, ANY, and ROWCOMPARE, the lefthand is a list of expressions of the\n * same length as the subselect's targetlist. ROWCOMPARE will *always* have\n * a list with more than one entry; if the subselect has just one target\n * then the parser will create an EXPR_SUBLINK instead (and any operator\n * above the subselect will be represented separately).\n * ROWCOMPARE, EXPR, and MULTIEXPR require the subselect to deliver at most\n * one row (if it returns no rows, the result is NULL).\n * ALL, ANY, and ROWCOMPARE require the combining operators to deliver boolean\n * results. ALL and ANY combine the per-row results using AND and OR\n * semantics respectively.\n * ARRAY requires just one target column, and creates an array of the target\n * column's type using any number of rows resulting from the subselect.\n *\n * SubLink is classed as an Expr node, but it is not actually executable;\n * it must be replaced in the expression tree by a SubPlan node during\n * planning.\n *\n * NOTE: in the raw output of gram.y, testexpr contains just the raw form\n * of the lefthand expression (if any), and operName is the String name of\n * the combining operator. Also, subselect is a raw parsetree. During parse\n * analysis, the parser transforms testexpr into a complete boolean expression\n * that compares the lefthand value(s) to PARAM_SUBLINK nodes representing the\n * output columns of the subselect. And subselect is transformed to a Query.\n * This is the representation seen in saved rules and in the rewriter.\n *\n * In EXISTS, EXPR, MULTIEXPR, and ARRAY SubLinks, testexpr and operName\n * are unused and are always null.\n *\n * subLinkId is currently used only for MULTIEXPR SubLinks, and is zero in\n * other SubLinks. This number identifies different multiple-assignment\n * subqueries within an UPDATE statement's SET list. It is unique only\n * within a particular targetlist. The output column(s) of the MULTIEXPR\n * are referenced by PARAM_MULTIEXPR Params appearing elsewhere in the tlist.\n *\n * The CTE_SUBLINK case never occurs in actual SubLink nodes, but it is used\n * in SubPlans generated for WITH subqueries.\n */\n" }, "SubPlan": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "comment": "\t/* Fields copied from original SubLink: */\n" }, { "name": "subLinkType", "c_type": "SubLinkType", "comment": "/* see above */" }, { "comment": "\t/* The combining operators, transformed to an executable expression: */\n" }, { "name": "testexpr", "c_type": "Node*", "comment": "/* OpExpr or RowCompareExpr expression tree */" }, { "name": "paramIds", "c_type": "List*", "comment": "/* IDs of Params embedded in the above */" }, { "comment": "\t/* Identification of the Plan tree to use: */\n" }, { "name": "plan_id", "c_type": "int", "comment": "/* Index (from 1) in PlannedStmt.subplans */" }, { "comment": "\t/* Identification of the SubPlan for EXPLAIN and debugging purposes: */\n" }, { "name": "plan_name", "c_type": "char*", "comment": "/* A name assigned during planning */" }, { "comment": "\t/* Extra data useful for determining subplan's output type: */\n" }, { "name": "firstColType", "c_type": "Oid", "comment": "/* Type of first column of subplan result */" }, { "name": "firstColTypmod", "c_type": "int32", "comment": "/* Typmod of first column of subplan result */" }, { "name": "firstColCollation", "c_type": "Oid", "comment": "/* Collation of first column of subplan\n\t\t\t\t\t\t\t\t\t * result */\n" }, { "comment": "\t/* Information about execution strategy: */\n" }, { "name": "useHashTable", "c_type": "bool", "comment": "/* true to store subselect output in a hash\n\t\t\t\t\t\t\t\t * table (implies we are doing \"IN\") */\n" }, { "name": "unknownEqFalse", "c_type": "bool", "comment": "/* true if it's okay to return FALSE when the\n\t\t\t\t\t\t\t\t * spec result is UNKNOWN; this allows much\n\t\t\t\t\t\t\t\t * simpler handling of null values */\n" }, { "name": "parallel_safe", "c_type": "bool", "comment": "/* is the subplan parallel-safe? */" }, { "comment": "\t/* Note: parallel_safe does not consider contents of testexpr or args */\n" }, { "comment": "\t/* Information for passing params into and out of the subselect: */\n" }, { "comment": "\t/* setParam and parParam are lists of integers (param IDs) */\n" }, { "name": "setParam", "c_type": "List*", "comment": "/* initplan subqueries have to set these\n\t\t\t\t\t\t\t\t * Params for parent plan */\n" }, { "name": "parParam", "c_type": "List*", "comment": "/* indices of input Params from parent plan */" }, { "name": "args", "c_type": "List*", "comment": "/* exprs to pass as parParam values */" }, { "comment": "\t/* Estimated execution costs: */\n" }, { "name": "startup_cost", "c_type": "Cost", "comment": "/* one-time setup cost */" }, { "name": "per_call_cost", "c_type": "Cost", "comment": "/* cost for each subplan evaluation */" } ], "comment": "/*\n * SubPlan - executable expression node for a subplan (sub-SELECT)\n *\n * The planner replaces SubLink nodes in expression trees with SubPlan\n * nodes after it has finished planning the subquery. SubPlan references\n * a sub-plantree stored in the subplans list of the toplevel PlannedStmt.\n * (We avoid a direct link to make it easier to copy expression trees\n * without causing multiple processing of the subplan.)\n *\n * In an ordinary subplan, testexpr points to an executable expression\n * (OpExpr, an AND/OR tree of OpExprs, or RowCompareExpr) for the combining\n * operator(s); the left-hand arguments are the original lefthand expressions,\n * and the right-hand arguments are PARAM_EXEC Param nodes representing the\n * outputs of the sub-select. (NOTE: runtime coercion functions may be\n * inserted as well.) This is just the same expression tree as testexpr in\n * the original SubLink node, but the PARAM_SUBLINK nodes are replaced by\n * suitably numbered PARAM_EXEC nodes.\n *\n * If the sub-select becomes an initplan rather than a subplan, the executable\n * expression is part of the outer plan's expression tree (and the SubPlan\n * node itself is not, but rather is found in the outer plan's initPlan\n * list). In this case testexpr is NULL to avoid duplication.\n *\n * The planner also derives lists of the values that need to be passed into\n * and out of the subplan. Input values are represented as a list \"args\" of\n * expressions to be evaluated in the outer-query context (currently these\n * args are always just Vars, but in principle they could be any expression).\n * The values are assigned to the global PARAM_EXEC params indexed by parParam\n * (the parParam and args lists must have the same ordering). setParam is a\n * list of the PARAM_EXEC params that are computed by the sub-select, if it\n * is an initplan; they are listed in order by sub-select output column\n * position. (parParam and setParam are integer Lists, not Bitmapsets,\n * because their ordering is significant.)\n *\n * Also, the planner computes startup and per-call costs for use of the\n * SubPlan. Note that these include the cost of the subquery proper,\n * evaluation of the testexpr if any, and any hashtable management overhead.\n */\n" }, "AlternativeSubPlan": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "subplans", "c_type": "List*", "comment": "/* SubPlan(s) with equivalent results */" } ], "comment": "/*\n * AlternativeSubPlan - expression node for a choice among SubPlans\n *\n * The subplans are given as a List so that the node definition need not\n * change if there's ever more than two alternatives. For the moment,\n * though, there are always exactly two; and the first one is the fast-start\n * plan.\n */\n" }, "FieldSelect": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* input expression */" }, { "name": "fieldnum", "c_type": "AttrNumber", "comment": "/* attribute number of field to extract */" }, { "name": "resulttype", "c_type": "Oid", "comment": "/* type of the field (result type of this\n\t\t\t\t\t\t\t\t * node) */\n" }, { "name": "resulttypmod", "c_type": "int32", "comment": "/* output typmod (usually -1) */" }, { "name": "resultcollid", "c_type": "Oid", "comment": "/* OID of collation of the field */" } ], "comment": "/* ----------------\n * FieldSelect\n *\n * FieldSelect represents the operation of extracting one field from a tuple\n * value. At runtime, the input expression is expected to yield a rowtype\n * Datum. The specified field number is extracted and returned as a Datum.\n * ----------------\n */\n" }, "FieldStore": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* input tuple value */" }, { "name": "newvals", "c_type": "List*", "comment": "/* new value(s) for field(s) */" }, { "name": "fieldnums", "c_type": "List*", "comment": "/* integer list of field attnums */" }, { "name": "resulttype", "c_type": "Oid", "comment": "/* type of result (same as type of arg) */" }, { "comment": "\t/* Like RowExpr, we deliberately omit a typmod and collation here */\n" } ], "comment": "/* ----------------\n * FieldStore\n *\n * FieldStore represents the operation of modifying one field in a tuple\n * value, yielding a new tuple value (the input is not touched!). Like\n * the assign case of SubscriptingRef, this is used to implement UPDATE of a\n * portion of a column.\n *\n * resulttype is always a named composite type (not a domain). To update\n * a composite domain value, apply CoerceToDomain to the FieldStore.\n *\n * A single FieldStore can actually represent updates of several different\n * fields. The parser only generates FieldStores with single-element lists,\n * but the planner will collapse multiple updates of the same base column\n * into one FieldStore.\n * ----------------\n */\n" }, "RelabelType": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* input expression */" }, { "name": "resulttype", "c_type": "Oid", "comment": "/* output type of coercion expression */" }, { "name": "resulttypmod", "c_type": "int32", "comment": "/* output typmod (usually -1) */" }, { "name": "resultcollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "relabelformat", "c_type": "CoercionForm", "comment": "/* how to display this node */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/* ----------------\n * RelabelType\n *\n * RelabelType represents a \"dummy\" type coercion between two binary-\n * compatible datatypes, such as reinterpreting the result of an OID\n * expression as an int4. It is a no-op at runtime; we only need it\n * to provide a place to store the correct type to be attributed to\n * the expression result during type resolution. (We can't get away\n * with just overwriting the type field of the input expression node,\n * so we need a separate node to show the coercion's result type.)\n * ----------------\n */\n" }, "CoerceViaIO": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* input expression */" }, { "name": "resulttype", "c_type": "Oid", "comment": "/* output type of coercion */" }, { "comment": "\t/* output typmod is not stored, but is presumed -1 */\n" }, { "name": "resultcollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "coerceformat", "c_type": "CoercionForm", "comment": "/* how to display this node */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/* ----------------\n * CoerceViaIO\n *\n * CoerceViaIO represents a type coercion between two types whose textual\n * representations are compatible, implemented by invoking the source type's\n * typoutput function then the destination type's typinput function.\n * ----------------\n */\n" }, "ArrayCoerceExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* input expression (yields an array) */" }, { "name": "elemexpr", "c_type": "Expr*", "comment": "/* expression representing per-element work */" }, { "name": "resulttype", "c_type": "Oid", "comment": "/* output type of coercion (an array type) */" }, { "name": "resulttypmod", "c_type": "int32", "comment": "/* output typmod (also element typmod) */" }, { "name": "resultcollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "coerceformat", "c_type": "CoercionForm", "comment": "/* how to display this node */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/* ----------------\n * ArrayCoerceExpr\n *\n * ArrayCoerceExpr represents a type coercion from one array type to another,\n * which is implemented by applying the per-element coercion expression\n * \"elemexpr\" to each element of the source array. Within elemexpr, the\n * source element is represented by a CaseTestExpr node. Note that even if\n * elemexpr is a no-op (that is, just CaseTestExpr + RelabelType), the\n * coercion still requires some effort: we have to fix the element type OID\n * stored in the array header.\n * ----------------\n */\n" }, "ConvertRowtypeExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* input expression */" }, { "name": "resulttype", "c_type": "Oid", "comment": "/* output type (always a composite type) */" }, { "comment": "\t/* Like RowExpr, we deliberately omit a typmod and collation here */\n" }, { "name": "convertformat", "c_type": "CoercionForm", "comment": "/* how to display this node */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/* ----------------\n * ConvertRowtypeExpr\n *\n * ConvertRowtypeExpr represents a type coercion from one composite type\n * to another, where the source type is guaranteed to contain all the columns\n * needed for the destination type plus possibly others; the columns need not\n * be in the same positions, but are matched up by name. This is primarily\n * used to convert a whole-row value of an inheritance child table into a\n * valid whole-row value of its parent table's rowtype. Both resulttype\n * and the exposed type of \"arg\" must be named composite types (not domains).\n * ----------------\n */\n" }, "CollateExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* input expression */" }, { "name": "collOid", "c_type": "Oid", "comment": "/* collation's OID */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*----------\n * CollateExpr - COLLATE\n *\n * The planner replaces CollateExpr with RelabelType during expression\n * preprocessing, so execution never sees a CollateExpr.\n *----------\n */\n" }, "CaseExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "casetype", "c_type": "Oid", "comment": "/* type of expression result */" }, { "name": "casecollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "arg", "c_type": "Expr*", "comment": "/* implicit equality comparison argument */" }, { "name": "args", "c_type": "List*", "comment": "/* the arguments (list of WHEN clauses) */" }, { "name": "defresult", "c_type": "Expr*", "comment": "/* the default result (ELSE clause) */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*----------\n * CaseExpr - a CASE expression\n *\n * We support two distinct forms of CASE expression:\n *\t\tCASE WHEN boolexpr THEN expr [ WHEN boolexpr THEN expr ... ]\n *\t\tCASE testexpr WHEN compexpr THEN expr [ WHEN compexpr THEN expr ... ]\n * These are distinguishable by the \"arg\" field being NULL in the first case\n * and the testexpr in the second case.\n *\n * In the raw grammar output for the second form, the condition expressions\n * of the WHEN clauses are just the comparison values. Parse analysis\n * converts these to valid boolean expressions of the form\n *\t\tCaseTestExpr '=' compexpr\n * where the CaseTestExpr node is a placeholder that emits the correct\n * value at runtime. This structure is used so that the testexpr need be\n * evaluated only once. Note that after parse analysis, the condition\n * expressions always yield boolean.\n *\n * Note: we can test whether a CaseExpr has been through parse analysis\n * yet by checking whether casetype is InvalidOid or not.\n *----------\n */\n" }, "CaseWhen": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "expr", "c_type": "Expr*", "comment": "/* condition expression */" }, { "name": "result", "c_type": "Expr*", "comment": "/* substitution result */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * CaseWhen - one arm of a CASE expression\n */\n" }, "CaseTestExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "typeId", "c_type": "Oid", "comment": "/* type for substituted value */" }, { "name": "typeMod", "c_type": "int32", "comment": "/* typemod for substituted value */" }, { "name": "collation", "c_type": "Oid", "comment": "/* collation for the substituted value */" } ], "comment": "/*\n * Placeholder node for the test value to be processed by a CASE expression.\n * This is effectively like a Param, but can be implemented more simply\n * since we need only one replacement value at a time.\n *\n * We also abuse this node type for some other purposes, including:\n *\t* Placeholder for the current array element value in ArrayCoerceExpr;\n *\t see build_coercion_expression().\n *\t* Nested FieldStore/SubscriptingRef assignment expressions in INSERT/UPDATE;\n *\t see transformAssignmentIndirection().\n *\n * The uses in CaseExpr and ArrayCoerceExpr are safe only to the extent that\n * there is not any other CaseExpr or ArrayCoerceExpr between the value source\n * node and its child CaseTestExpr(s). This is true in the parse analysis\n * output, but the planner's function-inlining logic has to be careful not to\n * break it.\n *\n * The nested-assignment-expression case is safe because the only node types\n * that can be above such CaseTestExprs are FieldStore and SubscriptingRef.\n */\n" }, "ArrayExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "array_typeid", "c_type": "Oid", "comment": "/* type of expression result */" }, { "name": "array_collid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "element_typeid", "c_type": "Oid", "comment": "/* common type of array elements */" }, { "name": "elements", "c_type": "List*", "comment": "/* the array elements or sub-arrays */" }, { "name": "multidims", "c_type": "bool", "comment": "/* true if elements are sub-arrays */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * ArrayExpr - an ARRAY[] expression\n *\n * Note: if multidims is false, the constituent expressions all yield the\n * scalar type identified by element_typeid. If multidims is true, the\n * constituent expressions all yield arrays of element_typeid (ie, the same\n * type as array_typeid); at runtime we must check for compatible subscripts.\n */\n" }, "RowExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "args", "c_type": "List*", "comment": "/* the fields */" }, { "name": "row_typeid", "c_type": "Oid", "comment": "/* RECORDOID or a composite type's ID */" }, { "comment": "" }, { "comment": "\t/*\n\t * row_typeid cannot be a domain over composite, only plain composite. To\n\t * create a composite domain value, apply CoerceToDomain to the RowExpr.\n\t *\n\t * Note: we deliberately do NOT store a typmod. Although a typmod will be\n\t * associated with specific RECORD types at runtime, it will differ for\n\t * different backends, and so cannot safely be stored in stored\n\t * parsetrees. We must assume typmod -1 for a RowExpr node.\n\t *\n\t * We don't need to store a collation either. The result type is\n\t * necessarily composite, and composite types never have a collation.\n\t */\n" }, { "name": "row_format", "c_type": "CoercionForm", "comment": "/* how to display this node */" }, { "name": "colnames", "c_type": "List*", "comment": "/* list of String, or NIL */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * RowExpr - a ROW() expression\n *\n * Note: the list of fields must have a one-for-one correspondence with\n * physical fields of the associated rowtype, although it is okay for it\n * to be shorter than the rowtype. That is, the N'th list element must\n * match up with the N'th physical field. When the N'th physical field\n * is a dropped column (attisdropped) then the N'th list element can just\n * be a NULL constant. (This case can only occur for named composite types,\n * not RECORD types, since those are built from the RowExpr itself rather\n * than vice versa.) It is important not to assume that length(args) is\n * the same as the number of columns logically present in the rowtype.\n *\n * colnames provides field names in cases where the names can't easily be\n * obtained otherwise. Names *must* be provided if row_typeid is RECORDOID.\n * If row_typeid identifies a known composite type, colnames can be NIL to\n * indicate the type's cataloged field names apply. Note that colnames can\n * be non-NIL even for a composite type, and typically is when the RowExpr\n * was created by expanding a whole-row Var. This is so that we can retain\n * the column alias names of the RTE that the Var referenced (which would\n * otherwise be very difficult to extract from the parsetree). Like the\n * args list, colnames is one-for-one with physical fields of the rowtype.\n */\n" }, "RowCompareExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "rctype", "c_type": "RowCompareType", "comment": "/* LT LE GE or GT, never EQ or NE */" }, { "name": "opnos", "c_type": "List*", "comment": "/* OID list of pairwise comparison ops */" }, { "name": "opfamilies", "c_type": "List*", "comment": "/* OID list of containing operator families */" }, { "name": "inputcollids", "c_type": "List*", "comment": "/* OID list of collations for comparisons */" }, { "name": "largs", "c_type": "List*", "comment": "/* the left-hand input arguments */" }, { "name": "rargs", "c_type": "List*", "comment": "/* the right-hand input arguments */" } ], "comment": "/*\n * RowCompareExpr - row-wise comparison, such as (a, b) <= (1, 2)\n *\n * We support row comparison for any operator that can be determined to\n * act like =, <>, <, <=, >, or >= (we determine this by looking for the\n * operator in btree opfamilies). Note that the same operator name might\n * map to a different operator for each pair of row elements, since the\n * element datatypes can vary.\n *\n * A RowCompareExpr node is only generated for the < <= > >= cases;\n * the = and <> cases are translated to simple AND or OR combinations\n * of the pairwise comparisons. However, we include = and <> in the\n * RowCompareType enum for the convenience of parser logic.\n */\n" }, "CoalesceExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "coalescetype", "c_type": "Oid", "comment": "/* type of expression result */" }, { "name": "coalescecollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "args", "c_type": "List*", "comment": "/* the arguments */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * CoalesceExpr - a COALESCE expression\n */\n" }, "MinMaxExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "minmaxtype", "c_type": "Oid", "comment": "/* common type of arguments and result */" }, { "name": "minmaxcollid", "c_type": "Oid", "comment": "/* OID of collation of result */" }, { "name": "inputcollid", "c_type": "Oid", "comment": "/* OID of collation that function should use */" }, { "name": "op", "c_type": "MinMaxOp", "comment": "/* function to execute */" }, { "name": "args", "c_type": "List*", "comment": "/* the arguments */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * MinMaxExpr - a GREATEST or LEAST function\n */\n" }, "SQLValueFunction": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "op", "c_type": "SQLValueFunctionOp", "comment": "/* which function this is */" }, { "name": "type", "c_type": "Oid", "comment": "/* result type/typmod */" }, { "name": "typmod", "c_type": "int32", "comment": null }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": null }, "XmlExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "op", "c_type": "XmlExprOp", "comment": "/* xml function ID */" }, { "name": "name", "c_type": "char*", "comment": "/* name in xml(NAME foo ...) syntaxes */" }, { "name": "named_args", "c_type": "List*", "comment": "/* non-XML expressions for xml_attributes */" }, { "name": "arg_names", "c_type": "List*", "comment": "/* parallel list of Value strings */" }, { "name": "args", "c_type": "List*", "comment": "/* list of expressions */" }, { "name": "xmloption", "c_type": "XmlOptionType", "comment": "/* DOCUMENT or CONTENT */" }, { "name": "type", "c_type": "Oid", "comment": "/* target type/typmod for XMLSERIALIZE */" }, { "name": "typmod", "c_type": "int32", "comment": null }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": null }, "NullTest": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* input expression */" }, { "name": "nulltesttype", "c_type": "NullTestType", "comment": "/* IS NULL, IS NOT NULL */" }, { "name": "argisrow", "c_type": "bool", "comment": "/* T to perform field-by-field null checks */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/* ----------------\n * NullTest\n *\n * NullTest represents the operation of testing a value for NULLness.\n * The appropriate test is performed and returned as a boolean Datum.\n *\n * When argisrow is false, this simply represents a test for the null value.\n *\n * When argisrow is true, the input expression must yield a rowtype, and\n * the node implements \"row IS [NOT] NULL\" per the SQL standard. This\n * includes checking individual fields for NULLness when the row datum\n * itself isn't NULL.\n *\n * NOTE: the combination of a rowtype input and argisrow==false does NOT\n * correspond to the SQL notation \"row IS [NOT] NULL\"; instead, this case\n * represents the SQL notation \"row IS [NOT] DISTINCT FROM NULL\".\n * ----------------\n */\n" }, "BooleanTest": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* input expression */" }, { "name": "booltesttype", "c_type": "BoolTestType", "comment": "/* test type */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * BooleanTest\n *\n * BooleanTest represents the operation of determining whether a boolean\n * is TRUE, FALSE, or UNKNOWN (ie, NULL). All six meaningful combinations\n * are supported. Note that a NULL input does *not* cause a NULL result.\n * The appropriate test is performed and returned as a boolean Datum.\n */\n" }, "CoerceToDomain": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "arg", "c_type": "Expr*", "comment": "/* input expression */" }, { "name": "resulttype", "c_type": "Oid", "comment": "/* domain type ID (result type) */" }, { "name": "resulttypmod", "c_type": "int32", "comment": "/* output typmod (currently always -1) */" }, { "name": "resultcollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid if none */" }, { "name": "coercionformat", "c_type": "CoercionForm", "comment": "/* how to display this node */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * CoerceToDomain\n *\n * CoerceToDomain represents the operation of coercing a value to a domain\n * type. At runtime (and not before) the precise set of constraints to be\n * checked will be determined. If the value passes, it is returned as the\n * result; if not, an error is raised. Note that this is equivalent to\n * RelabelType in the scenario where no constraints are applied.\n */\n" }, "CoerceToDomainValue": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "typeId", "c_type": "Oid", "comment": "/* type for substituted value */" }, { "name": "typeMod", "c_type": "int32", "comment": "/* typemod for substituted value */" }, { "name": "collation", "c_type": "Oid", "comment": "/* collation for the substituted value */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * Placeholder node for the value to be processed by a domain's check\n * constraint. This is effectively like a Param, but can be implemented more\n * simply since we need only one replacement value at a time.\n *\n * Note: the typeId/typeMod/collation will be set from the domain's base type,\n * not the domain itself. This is because we shouldn't consider the value\n * to be a member of the domain if we haven't yet checked its constraints.\n */\n" }, "SetToDefault": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "typeId", "c_type": "Oid", "comment": "/* type for substituted value */" }, { "name": "typeMod", "c_type": "int32", "comment": "/* typemod for substituted value */" }, { "name": "collation", "c_type": "Oid", "comment": "/* collation for the substituted value */" }, { "name": "location", "c_type": "int", "comment": "/* token location, or -1 if unknown */" } ], "comment": "/*\n * Placeholder node for a DEFAULT marker in an INSERT or UPDATE command.\n *\n * This is not an executable expression: it must be replaced by the actual\n * column default expression during rewriting. But it is convenient to\n * treat it as an expression node during parsing and rewriting.\n */\n" }, "CurrentOfExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "cvarno", "c_type": "Index", "comment": "/* RT index of target relation */" }, { "name": "cursor_name", "c_type": "char*", "comment": "/* name of referenced cursor, or NULL */" }, { "name": "cursor_param", "c_type": "int", "comment": "/* refcursor parameter number, or 0 */" } ], "comment": "/*\n * Node representing [WHERE] CURRENT OF cursor_name\n *\n * CURRENT OF is a bit like a Var, in that it carries the rangetable index\n * of the target relation being constrained; this aids placing the expression\n * correctly during planning. We can assume however that its \"levelsup\" is\n * always zero, due to the syntactic constraints on where it can appear.\n *\n * The referenced cursor can be represented either as a hardwired string\n * or as a reference to a run-time parameter of type REFCURSOR. The latter\n * case is for the convenience of plpgsql.\n */\n" }, "NextValueExpr": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "seqid", "c_type": "Oid", "comment": null }, { "name": "typeId", "c_type": "Oid", "comment": null } ], "comment": "/*\n * NextValueExpr - get next value from sequence\n *\n * This has the same effect as calling the nextval() function, but it does not\n * check permissions on the sequence. This is used for identity columns,\n * where the sequence is an implicit dependency without its own permissions.\n */\n" }, "InferenceElem": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "expr", "c_type": "Node*", "comment": "/* expression to infer from, or NULL */" }, { "name": "infercollid", "c_type": "Oid", "comment": "/* OID of collation, or InvalidOid */" }, { "name": "inferopclass", "c_type": "Oid", "comment": "/* OID of att opclass, or InvalidOid */" } ], "comment": "/*\n * InferenceElem - an element of a unique index inference specification\n *\n * This mostly matches the structure of IndexElems, but having a dedicated\n * primnode allows for a clean separation between the use of index parameters\n * by utility commands, and this node.\n */\n" }, "TargetEntry": { "fields": [ { "name": "xpr", "c_type": "Expr", "comment": null }, { "name": "expr", "c_type": "Expr*", "comment": "/* expression to evaluate */" }, { "name": "resno", "c_type": "AttrNumber", "comment": "/* attribute number (see notes above) */" }, { "name": "resname", "c_type": "char*", "comment": "/* name of the column (could be NULL) */" }, { "name": "ressortgroupref", "c_type": "Index", "comment": "/* nonzero if referenced by a sort/group\n\t\t\t\t\t\t\t\t\t * clause */\n" }, { "name": "resorigtbl", "c_type": "Oid", "comment": "/* OID of column's source table */" }, { "name": "resorigcol", "c_type": "AttrNumber", "comment": "/* column's number in source table */" }, { "name": "resjunk", "c_type": "bool", "comment": "/* set to true to eliminate the attribute from\n\t\t\t\t\t\t\t\t * final target list */\n" } ], "comment": "/*--------------------\n * TargetEntry -\n *\t a target entry (used in query target lists)\n *\n * Strictly speaking, a TargetEntry isn't an expression node (since it can't\n * be evaluated by ExecEvalExpr). But we treat it as one anyway, since in\n * very many places it's convenient to process a whole query targetlist as a\n * single expression tree.\n *\n * In a SELECT's targetlist, resno should always be equal to the item's\n * ordinal position (counting from 1). However, in an INSERT or UPDATE\n * targetlist, resno represents the attribute number of the destination\n * column for the item; so there may be missing or out-of-order resnos.\n * It is even legal to have duplicated resnos; consider\n *\t\tUPDATE table SET arraycol[1] = ..., arraycol[2] = ..., ...\n * The two meanings come together in the executor, because the planner\n * transforms INSERT/UPDATE tlists into a normalized form with exactly\n * one entry for each column of the destination table. Before that's\n * happened, however, it is risky to assume that resno == position.\n * Generally get_tle_by_resno() should be used rather than list_nth()\n * to fetch tlist entries by resno, and only in SELECT should you assume\n * that resno is a unique identifier.\n *\n * resname is required to represent the correct column name in non-resjunk\n * entries of top-level SELECT targetlists, since it will be used as the\n * column title sent to the frontend. In most other contexts it is only\n * a debugging aid, and may be wrong or even NULL. (In particular, it may\n * be wrong in a tlist from a stored rule, if the referenced column has been\n * renamed by ALTER TABLE since the rule was made. Also, the planner tends\n * to store NULL rather than look up a valid name for tlist entries in\n * non-toplevel plan nodes.) In resjunk entries, resname should be either\n * a specific system-generated name (such as \"ctid\") or NULL; anything else\n * risks confusing ExecGetJunkAttribute!\n *\n * ressortgroupref is used in the representation of ORDER BY, GROUP BY, and\n * DISTINCT items. Targetlist entries with ressortgroupref=0 are not\n * sort/group items. If ressortgroupref>0, then this item is an ORDER BY,\n * GROUP BY, and/or DISTINCT target value. No two entries in a targetlist\n * may have the same nonzero ressortgroupref --- but there is no particular\n * meaning to the nonzero values, except as tags. (For example, one must\n * not assume that lower ressortgroupref means a more significant sort key.)\n * The order of the associated SortGroupClause lists determine the semantics.\n *\n * resorigtbl/resorigcol identify the source of the column, if it is a\n * simple reference to a column of a base table (or view). If it is not\n * a simple reference, these fields are zeroes.\n *\n * If resjunk is true then the column is a working column (such as a sort key)\n * that should be removed from the final output of the query. Resjunk columns\n * must have resnos that cannot duplicate any regular column's resno. Also\n * note that there are places that assume resjunk columns come after non-junk\n * columns.\n *--------------------\n */\n" }, "RangeTblRef": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "rtindex", "c_type": "int", "comment": null } ], "comment": "/*\n * RangeTblRef - reference to an entry in the query's rangetable\n *\n * We could use direct pointers to the RT entries and skip having these\n * nodes, but multiple pointers to the same node in a querytree cause\n * lots of headaches, so it seems better to store an index into the RT.\n */\n" }, "JoinExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "jointype", "c_type": "JoinType", "comment": "/* type of join */" }, { "name": "isNatural", "c_type": "bool", "comment": "/* Natural join? Will need to shape table */" }, { "name": "larg", "c_type": "Node*", "comment": "/* left subtree */" }, { "name": "rarg", "c_type": "Node*", "comment": "/* right subtree */" }, { "name": "usingClause", "c_type": "List*", "comment": "/* USING clause, if any (list of String) */" }, { "name": "quals", "c_type": "Node*", "comment": "/* qualifiers on join, if any */" }, { "name": "alias", "c_type": "Alias*", "comment": "/* user-written alias clause, if any */" }, { "name": "rtindex", "c_type": "int", "comment": "/* RT index assigned for join, or 0 */" } ], "comment": "/*----------\n * JoinExpr - for SQL JOIN expressions\n *\n * isNatural, usingClause, and quals are interdependent. The user can write\n * only one of NATURAL, USING(), or ON() (this is enforced by the grammar).\n * If he writes NATURAL then parse analysis generates the equivalent USING()\n * list, and from that fills in \"quals\" with the right equality comparisons.\n * If he writes USING() then \"quals\" is filled with equality comparisons.\n * If he writes ON() then only \"quals\" is set. Note that NATURAL/USING\n * are not equivalent to ON() since they also affect the output column list.\n *\n * alias is an Alias node representing the AS alias-clause attached to the\n * join expression, or NULL if no clause. NB: presence or absence of the\n * alias has a critical impact on semantics, because a join with an alias\n * restricts visibility of the tables/columns inside it.\n *\n * During parse analysis, an RTE is created for the Join, and its index\n * is filled into rtindex. This RTE is present mainly so that Vars can\n * be created that refer to the outputs of the join. The planner sometimes\n * generates JoinExprs internally; these can have rtindex = 0 if there are\n * no join alias variables referencing such joins.\n *----------\n */\n" }, "FromExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "fromlist", "c_type": "List*", "comment": "/* List of join subtrees */" }, { "name": "quals", "c_type": "Node*", "comment": "/* qualifiers on join, if any */" } ], "comment": "/*----------\n * FromExpr - represents a FROM ... WHERE ... construct\n *\n * This is both more flexible than a JoinExpr (it can have any number of\n * children, including zero) and less so --- we don't need to deal with\n * aliases and so on. The output column set is implicitly just the union\n * of the outputs of the children.\n *----------\n */\n" }, "OnConflictExpr": { "fields": [ { "name": "type", "c_type": "NodeTag", "comment": null }, { "name": "action", "c_type": "OnConflictAction", "comment": "/* DO NOTHING or UPDATE? */" }, { "comment": "" }, { "comment": "\t/* Arbiter */\n" }, { "name": "arbiterElems", "c_type": "List*", "comment": "/* unique index arbiter list (of\n\t\t\t\t\t\t\t\t * InferenceElem's) */\n" }, { "name": "arbiterWhere", "c_type": "Node*", "comment": "/* unique index arbiter WHERE clause */" }, { "name": "constraint", "c_type": "Oid", "comment": "/* pg_constraint OID for arbiter */" }, { "comment": "" }, { "comment": "\t/* ON CONFLICT UPDATE */\n" }, { "name": "onConflictSet", "c_type": "List*", "comment": "/* List of ON CONFLICT SET TargetEntrys */" }, { "name": "onConflictWhere", "c_type": "Node*", "comment": "/* qualifiers to restrict UPDATE to */" }, { "name": "exclRelIndex", "c_type": "int", "comment": "/* RT index of 'excluded' relation */" }, { "name": "exclRelTlist", "c_type": "List*", "comment": "/* tlist of the EXCLUDED pseudo relation */" } ], "comment": "/*----------\n * OnConflictExpr - represents an ON CONFLICT DO ... expression\n *\n * The optimizer requires a list of inference elements, and optionally a WHERE\n * clause to infer a unique index. The unique index (or, occasionally,\n * indexes) inferred are used to arbitrate whether or not the alternative ON\n * CONFLICT path is taken.\n *----------\n */\n" } }, "nodes/lockoptions": { }, "nodes/nodes": { }, "nodes/params": { "ParamExternData": { "fields": [ { "name": "value", "c_type": "Datum", "comment": "/* parameter value */" }, { "name": "isnull", "c_type": "bool", "comment": "/* is it NULL? */" }, { "name": "pflags", "c_type": "uint16", "comment": "/* flag bits, see above */" }, { "name": "ptype", "c_type": "Oid", "comment": "/* parameter's datatype, or 0 */" } ], "comment": "/*\n *\t ParamListInfo\n *\n *\t ParamListInfo structures are used to pass parameters into the executor\n *\t for parameterized plans. We support two basic approaches to supplying\n *\t parameter values, the \"static\" way and the \"dynamic\" way.\n *\n *\t In the static approach, per-parameter data is stored in an array of\n *\t ParamExternData structs appended to the ParamListInfo struct.\n *\t Each entry in the array defines the value to be substituted for a\n *\t PARAM_EXTERN parameter. The \"paramid\" of a PARAM_EXTERN Param\n *\t can range from 1 to numParams.\n *\n *\t Although parameter numbers are normally consecutive, we allow\n *\t ptype == InvalidOid to signal an unused array entry.\n *\n *\t pflags is a flags field. Currently the only used bit is:\n *\t PARAM_FLAG_CONST signals the planner that it may treat this parameter\n *\t as a constant (i.e., generate a plan that works only for this value\n *\t of the parameter).\n *\n *\t In the dynamic approach, all access to parameter values is done through\n *\t hook functions found in the ParamListInfo struct. In this case,\n *\t the ParamExternData array is typically unused and not allocated;\n *\t but the legal range of paramid is still 1 to numParams.\n *\n *\t Although the data structure is really an array, not a list, we keep\n *\t the old typedef name to avoid unnecessary code changes.\n *\n *\t There are 3 hook functions that can be associated with a ParamListInfo\n *\t structure:\n *\n *\t If paramFetch isn't null, it is called to fetch the ParamExternData\n *\t for a particular param ID, rather than accessing the relevant element\n *\t of the ParamExternData array. This supports the case where the array\n *\t isn't there at all, as well as cases where the data in the array\n *\t might be obsolete or lazily evaluated. paramFetch must return the\n *\t address of a ParamExternData struct describing the specified param ID;\n *\t the convention above about ptype == InvalidOid signaling an invalid\n *\t param ID still applies. The returned struct can either be placed in\n *\t the \"workspace\" supplied by the caller, or it can be in storage\n *\t controlled by the paramFetch hook if that's more convenient.\n *\t (In either case, the struct is not expected to be long-lived.)\n *\t If \"speculative\" is true, the paramFetch hook should not risk errors\n *\t in trying to fetch the parameter value, and should report an invalid\n *\t parameter instead.\n *\n *\t If paramCompile isn't null, then it controls what execExpr.c compiles\n *\t for PARAM_EXTERN Param nodes --- typically, this hook would emit a\n *\t EEOP_PARAM_CALLBACK step. This allows unnecessary work to be\n *\t optimized away in compiled expressions.\n *\n *\t If parserSetup isn't null, then it is called to re-instantiate the\n *\t original parsing hooks when a query needs to be re-parsed/planned.\n *\t This is especially useful if the types of parameters might change\n *\t from time to time, since it can replace the need to supply a fixed\n *\t list of parameter types to the parser.\n *\n *\t Notice that the paramFetch and paramCompile hooks are actually passed\n *\t the ParamListInfo struct's address; they can therefore access all\n *\t three of the \"arg\" fields, and the distinction between paramFetchArg\n *\t and paramCompileArg is rather arbitrary.\n */\n" }, "ParamListInfoData": { "fields": [ { "name": "paramFetch", "c_type": "ParamFetchHook", "comment": "/* parameter fetch hook */" }, { "name": "paramFetchArg", "c_type": "void*", "comment": null }, { "name": "paramCompile", "c_type": "ParamCompileHook", "comment": "/* parameter compile hook */" }, { "name": "paramCompileArg", "c_type": "void*", "comment": null }, { "name": "parserSetup", "c_type": "ParserSetupHook", "comment": "/* parser setup hook */" }, { "name": "parserSetupArg", "c_type": "void*", "comment": null }, { "name": "paramValuesStr", "c_type": "char*", "comment": "/* params as a single string for errors */" }, { "name": "numParams", "c_type": "int", "comment": "/* nominal/maximum # of Params represented */" }, { "comment": "" }, { "comment": "\t/*\n\t * params[] may be of length zero if paramFetch is supplied; otherwise it\n\t * must be of length numParams.\n\t */\n" } ], "comment": "/*\n *\t ParamListInfo\n *\n *\t ParamListInfo structures are used to pass parameters into the executor\n *\t for parameterized plans. We support two basic approaches to supplying\n *\t parameter values, the \"static\" way and the \"dynamic\" way.\n *\n *\t In the static approach, per-parameter data is stored in an array of\n *\t ParamExternData structs appended to the ParamListInfo struct.\n *\t Each entry in the array defines the value to be substituted for a\n *\t PARAM_EXTERN parameter. The \"paramid\" of a PARAM_EXTERN Param\n *\t can range from 1 to numParams.\n *\n *\t Although parameter numbers are normally consecutive, we allow\n *\t ptype == InvalidOid to signal an unused array entry.\n *\n *\t pflags is a flags field. Currently the only used bit is:\n *\t PARAM_FLAG_CONST signals the planner that it may treat this parameter\n *\t as a constant (i.e., generate a plan that works only for this value\n *\t of the parameter).\n *\n *\t In the dynamic approach, all access to parameter values is done through\n *\t hook functions found in the ParamListInfo struct. In this case,\n *\t the ParamExternData array is typically unused and not allocated;\n *\t but the legal range of paramid is still 1 to numParams.\n *\n *\t Although the data structure is really an array, not a list, we keep\n *\t the old typedef name to avoid unnecessary code changes.\n *\n *\t There are 3 hook functions that can be associated with a ParamListInfo\n *\t structure:\n *\n *\t If paramFetch isn't null, it is called to fetch the ParamExternData\n *\t for a particular param ID, rather than accessing the relevant element\n *\t of the ParamExternData array. This supports the case where the array\n *\t isn't there at all, as well as cases where the data in the array\n *\t might be obsolete or lazily evaluated. paramFetch must return the\n *\t address of a ParamExternData struct describing the specified param ID;\n *\t the convention above about ptype == InvalidOid signaling an invalid\n *\t param ID still applies. The returned struct can either be placed in\n *\t the \"workspace\" supplied by the caller, or it can be in storage\n *\t controlled by the paramFetch hook if that's more convenient.\n *\t (In either case, the struct is not expected to be long-lived.)\n *\t If \"speculative\" is true, the paramFetch hook should not risk errors\n *\t in trying to fetch the parameter value, and should report an invalid\n *\t parameter instead.\n *\n *\t If paramCompile isn't null, then it controls what execExpr.c compiles\n *\t for PARAM_EXTERN Param nodes --- typically, this hook would emit a\n *\t EEOP_PARAM_CALLBACK step. This allows unnecessary work to be\n *\t optimized away in compiled expressions.\n *\n *\t If parserSetup isn't null, then it is called to re-instantiate the\n *\t original parsing hooks when a query needs to be re-parsed/planned.\n *\t This is especially useful if the types of parameters might change\n *\t from time to time, since it can replace the need to supply a fixed\n *\t list of parameter types to the parser.\n *\n *\t Notice that the paramFetch and paramCompile hooks are actually passed\n *\t the ParamListInfo struct's address; they can therefore access all\n *\t three of the \"arg\" fields, and the distinction between paramFetchArg\n *\t and paramCompileArg is rather arbitrary.\n */\n" }, "ParamExecData": { "fields": [ { "name": "execPlan", "c_type": "void*", "comment": "/* should be \"SubPlanState *\" */" }, { "name": "value", "c_type": "Datum", "comment": null }, { "name": "isnull", "c_type": "bool", "comment": null } ], "comment": "/* ----------------\n *\t ParamExecData\n *\n *\t ParamExecData entries are used for executor internal parameters\n *\t (that is, values being passed into or out of a sub-query). The\n *\t paramid of a PARAM_EXEC Param is a (zero-based) index into an\n *\t array of ParamExecData records, which is referenced through\n *\t es_param_exec_vals or ecxt_param_exec_vals.\n *\n *\t If execPlan is not NULL, it points to a SubPlanState node that needs\n *\t to be executed to produce the value. (This is done so that we can have\n *\t lazy evaluation of InitPlans: they aren't executed until/unless a\n *\t result value is needed.)\tOtherwise the value is assumed to be valid\n *\t when needed.\n * ----------------\n */\n" }, "ParamsErrorCbData": { "fields": [ { "name": "portalName", "c_type": "char*", "comment": null }, { "name": "params", "c_type": "ParamListInfo", "comment": null } ], "comment": "/* type of argument for ParamsErrorCallback */\n" } }, "access/attnum": { }, "c": { }, "postgres": { "varatt_external": { "fields": [ { "name": "va_rawsize", "c_type": "int32", "comment": "/* Original data size (includes header) */" }, { "name": "va_extsize", "c_type": "int32", "comment": "/* External saved size (doesn't) */" }, { "name": "va_valueid", "c_type": "Oid", "comment": "/* Unique ID of value within TOAST table */" }, { "name": "va_toastrelid", "c_type": "Oid", "comment": "/* RelID of TOAST table containing it */" } ], "comment": "/*\n * struct varatt_external is a traditional \"TOAST pointer\", that is, the\n * information needed to fetch a Datum stored out-of-line in a TOAST table.\n * The data is compressed if and only if va_extsize < va_rawsize - VARHDRSZ.\n * This struct must not contain any padding, because we sometimes compare\n * these pointers using memcmp.\n *\n * Note that this information is stored unaligned within actual tuples, so\n * you need to memcpy from the tuple into a local struct variable before\n * you can look at these fields! (The reason we use memcmp is to avoid\n * having to do that just to detect equality of two TOAST pointers...)\n */\n" }, "varatt_expanded": { "fields": [ { "name": "eohptr", "c_type": "ExpandedObjectHeader*", "comment": null } ], "comment": null }, "NullableDatum": { "fields": [ { "name": "value", "c_type": "Datum", "comment": null }, { "comment": "" }, { "name": "isnull", "c_type": "bool", "comment": null }, { "comment": "\t/* due to alignment padding this could be used for flags for free */\n" } ], "comment": "/*\n * A NullableDatum is used in places where both a Datum and its nullness needs\n * to be stored. This can be more efficient than storing datums and nullness\n * in separate arrays, due to better spatial locality, even if more space may\n * be wasted due to padding.\n */\n" } }, "postgres_ext": { }, "commands/vacuum": { "VacAttrStats": { "fields": [ { "comment": "\t/*\n\t * These fields are set up by the main ANALYZE code before invoking the\n\t * type-specific typanalyze function.\n\t *\n\t * Note: do not assume that the data being analyzed has the same datatype\n\t * shown in attr, ie do not trust attr->atttypid, attlen, etc. This is\n\t * because some index opclasses store a different type than the underlying\n\t * column/expression. Instead use attrtypid, attrtypmod, and attrtype for\n\t * information about the datatype being fed to the typanalyze function.\n\t * Likewise, use attrcollid not attr->attcollation.\n\t */\n" }, { "name": "attr", "c_type": "Form_pg_attribute", "comment": "/* copy of pg_attribute row for column */" }, { "name": "attrtypid", "c_type": "Oid", "comment": "/* type of data being analyzed */" }, { "name": "attrtypmod", "c_type": "int32", "comment": "/* typmod of data being analyzed */" }, { "name": "attrtype", "c_type": "Form_pg_type", "comment": "/* copy of pg_type row for attrtypid */" }, { "name": "attrcollid", "c_type": "Oid", "comment": "/* collation of data being analyzed */" }, { "name": "anl_context", "c_type": "MemoryContext", "comment": "/* where to save long-lived data */" }, { "comment": "" }, { "comment": "\t/*\n\t * These fields must be filled in by the typanalyze routine, unless it\n\t * returns false.\n\t */\n" }, { "name": "compute_stats", "c_type": "AnalyzeAttrComputeStatsFunc", "comment": "/* function pointer */" }, { "name": "minrows", "c_type": "int", "comment": "/* Minimum # of rows wanted for stats */" }, { "name": "extra_data", "c_type": "void*", "comment": "/* for extra type-specific data */" }, { "comment": "" }, { "comment": "\t/*\n\t * These fields are to be filled in by the compute_stats routine. (They\n\t * are initialized to zero when the struct is created.)\n\t */\n" }, { "name": "stats_valid", "c_type": "bool", "comment": null }, { "name": "stanullfrac", "c_type": "float4", "comment": "/* fraction of entries that are NULL */" }, { "name": "stawidth", "c_type": "int32", "comment": "/* average width of column values */" }, { "name": "stadistinct", "c_type": "float4", "comment": "/* # distinct values */" }, { "name": "stakind[STATISTIC_NUM_SLOTS]", "c_type": "int16", "comment": null }, { "name": "staop[STATISTIC_NUM_SLOTS]", "c_type": "Oid", "comment": null }, { "name": "stacoll[STATISTIC_NUM_SLOTS]", "c_type": "Oid", "comment": null }, { "name": "numnumbers[STATISTIC_NUM_SLOTS]", "c_type": "int", "comment": null }, { "name": "stanumbers[STATISTIC_NUM_SLOTS]", "c_type": "float4*", "comment": null }, { "name": "numvalues[STATISTIC_NUM_SLOTS]", "c_type": "int", "comment": null }, { "name": "stavalues[STATISTIC_NUM_SLOTS]", "c_type": "Datum*", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * These fields describe the stavalues[n] element types. They will be\n\t * initialized to match attrtypid, but a custom typanalyze function might\n\t * want to store an array of something other than the analyzed column's\n\t * elements. It should then overwrite these fields.\n\t */\n" }, { "name": "statypid[STATISTIC_NUM_SLOTS]", "c_type": "Oid", "comment": null }, { "name": "statyplen[STATISTIC_NUM_SLOTS]", "c_type": "int16", "comment": null }, { "name": "statypbyval[STATISTIC_NUM_SLOTS]", "c_type": "bool", "comment": null }, { "name": "statypalign[STATISTIC_NUM_SLOTS]", "c_type": "char", "comment": null }, { "comment": "" }, { "comment": "\t/*\n\t * These fields are private to the main ANALYZE code and should not be\n\t * looked at by type-specific functions.\n\t */\n" }, { "name": "tupattnum", "c_type": "int", "comment": "/* attribute number within tuples */" }, { "name": "rows", "c_type": "HeapTuple*", "comment": "/* access info for std fetch function */" }, { "name": "tupDesc", "c_type": "TupleDesc", "comment": null }, { "name": "exprvals", "c_type": "Datum*", "comment": "/* access info for index fetch function */" }, { "name": "exprnulls", "c_type": "bool*", "comment": null }, { "name": "rowstride", "c_type": "int", "comment": null } ], "comment": null }, "VacuumParams": { "fields": [ { "name": "options", "c_type": "int", "comment": "/* bitmask of VacuumOption */" }, { "name": "freeze_min_age", "c_type": "int", "comment": "/* min freeze age, -1 to use default */" }, { "name": "freeze_table_age", "c_type": "int", "comment": "/* age at which to scan whole table */" }, { "name": "multixact_freeze_min_age", "c_type": "int", "comment": "/* min multixact freeze age, -1 to\n\t\t\t\t\t\t\t\t\t\t\t * use default */\n" }, { "name": "multixact_freeze_table_age", "c_type": "int", "comment": "/* multixact age at which to scan\n\t\t\t\t\t\t\t\t\t\t\t * whole table */\n" }, { "name": "is_wraparound", "c_type": "bool", "comment": "/* force a for-wraparound vacuum */" }, { "name": "log_min_duration", "c_type": "int", "comment": "/* minimum execution threshold in ms at\n\t\t\t\t\t\t\t\t\t * which verbose logs are activated, -1\n\t\t\t\t\t\t\t\t\t * to use default */\n" }, { "name": "index_cleanup", "c_type": "VacOptTernaryValue", "comment": "/* Do index vacuum and cleanup,\n\t\t\t\t\t\t\t\t\t\t * default value depends on reloptions */\n" }, { "name": "truncate", "c_type": "VacOptTernaryValue", "comment": "/* Truncate empty pages at the end,\n\t\t\t\t\t\t\t\t\t * default value depends on reloptions */\n" }, { "comment": "" }, { "comment": "\t/*\n\t * The number of parallel vacuum workers. 0 by default which means choose\n\t * based on the number of indexes. -1 indicates parallel vacuum is\n\t * disabled.\n\t */\n" }, { "name": "nworkers", "c_type": "int", "comment": null } ], "comment": "/*\n * Parameters customizing behavior of VACUUM and ANALYZE.\n *\n * Note that at least one of VACOPT_VACUUM and VACOPT_ANALYZE must be set\n * in options.\n */\n" } }, "storage/block": { "BlockIdData": { "fields": [ { "name": "bi_hi", "c_type": "uint16", "comment": null }, { "name": "bi_lo", "c_type": "uint16", "comment": null } ], "comment": "/*\n * BlockId:\n *\n * this is a storage type for BlockNumber. in other words, this type\n * is used for on-disk structures (e.g., in HeapTupleData) whereas\n * BlockNumber is the type on which calculations are performed (e.g.,\n * in access method code).\n *\n * there doesn't appear to be any reason to have separate types except\n * for the fact that BlockIds can be SHORTALIGN'd (and therefore any\n * structures that contains them, such as ItemPointerData, can also be\n * SHORTALIGN'd). this is an important consideration for reducing the\n * space requirements of the line pointer (ItemIdData) array on each\n * page and the header of each heap or index tuple, so it doesn't seem\n * wise to change this without good reason.\n */\n" } }, "access/sdir": { }, "mb/pg_wchar": { }, "../backend/parser/gram": { "YYLTYPE": { "fields": [ { "name": "first_line", "c_type": "int", "comment": null }, { "name": "first_column", "c_type": "int", "comment": null }, { "name": "last_line", "c_type": "int", "comment": null }, { "name": "last_column", "c_type": "int", "comment": null } ], "comment": "/* Line 1529 of yacc.c. */\n" } }, "nodes/value": { "Integer": { "fields": [ { "name": "ival", "c_type": "long" } ] }, "Float": { "fields": [ { "name": "str", "c_type": "char*" } ] }, "String": { "fields": [ { "name": "str", "c_type": "char*" } ] }, "BitString": { "fields": [ { "name": "str", "c_type": "char*" } ] }, "Null": { "fields": [ ] } }, "nodes/pg_list": { "List": { "fields": [ { "name": "items", "c_type": "[]Node" } ] } } }libpg_query-13-2.1.0/srcdata/typedefs.json000066400000000000000000000174031413137616400204270ustar00rootroot00000000000000[ { "new_type_name": "AclMode", "source_type": "uint32", "comment": "/*\n * Grantable rights are encoded so that we can OR them together in a bitmask.\n * The present representation of AclItem limits us to 16 distinct rights,\n * even though AclMode is defined as uint32. See utils/acl.h.\n *\n * Caution: changing these codes breaks stored ACLs, hence forces initdb.\n */\n" }, { "new_type_name": "DistinctExpr", "source_type": "OpExpr", "comment": "/*\n * DistinctExpr - expression node for \"x IS DISTINCT FROM y\"\n *\n * Except for the nodetag, this is represented identically to an OpExpr\n * referencing the \"=\" operator for x and y.\n * We use \"=\", not the more obvious \"<>\", because more datatypes have \"=\"\n * than \"<>\". This means the executor must invert the operator result.\n * Note that the operator function won't be called at all if either input\n * is NULL, since then the result can be determined directly.\n */\n" }, { "new_type_name": "NullIfExpr", "source_type": "OpExpr", "comment": "/*\n * NullIfExpr - a NULLIF expression\n *\n * Like DistinctExpr, this is represented the same as an OpExpr referencing\n * the \"=\" operator for x and y.\n */\n" }, { "new_type_name": "Selectivity", "source_type": "double", "comment": "/*\n * Typedefs for identifying qualifier selectivities and plan costs as such.\n * These are just plain \"double\"s, but declaring a variable as Selectivity\n * or Cost makes the intent more obvious.\n *\n * These could have gone into plannodes.h or some such, but many files\n * depend on them...\n */\n" }, { "new_type_name": "Cost", "source_type": "double", "comment": null }, { "new_type_name": "ParamListInfo", "source_type": "ParamListInfoData", "comment": null }, { "new_type_name": "AttrNumber", "source_type": "int16", "comment": "/*\n * user defined attribute numbers start at 1. -ay 2/95\n */\n" }, { "new_type_name": "Pointer", "source_type": "char", "comment": "/*\n * Pointer\n *\t\tVariable holding address of any memory resident object.\n *\n *\t\tXXX Pointer arithmetic is done with this, so it can't be void *\n *\t\tunder \"true\" ANSI compilers.\n */\n" }, { "new_type_name": "Index", "source_type": "unsigned int", "comment": "/*\n * Index\n *\t\tIndex into any memory resident array.\n *\n * Note:\n *\t\tIndices are non negative.\n */\n" }, { "new_type_name": "Offset", "source_type": "signed int", "comment": "/*\n * Offset\n *\t\tOffset into any memory resident array.\n *\n * Note:\n *\t\tThis differs from an Index in that an Index is always\n *\t\tnon negative, whereas Offset may be negative.\n */\n" }, { "new_type_name": "regproc", "source_type": "Oid", "comment": "/*\n * regproc is the type name used in the include/catalog headers, but\n * RegProcedure is the preferred name in C code.\n */\n" }, { "new_type_name": "RegProcedure", "source_type": "regproc", "comment": null }, { "new_type_name": "TransactionId", "source_type": "uint32", "comment": null }, { "new_type_name": "LocalTransactionId", "source_type": "uint32", "comment": null }, { "new_type_name": "SubTransactionId", "source_type": "uint32", "comment": null }, { "new_type_name": "MultiXactId", "source_type": "TransactionId", "comment": "/* MultiXactId must be equivalent to TransactionId, to fit in t_xmax */\n" }, { "new_type_name": "MultiXactOffset", "source_type": "uint32", "comment": null }, { "new_type_name": "CommandId", "source_type": "uint32", "comment": null }, { "new_type_name": "Name", "source_type": "NameData", "comment": "/*\n * Representation of a Name: effectively just a C string, but null-padded to\n * exactly NAMEDATALEN bytes. The use of a struct is historical.\n */\n" }, { "new_type_name": "ExpandedObjectHeader", "source_type": "ExpandedObjectHeader", "comment": "/*\n * struct varatt_expanded is a \"TOAST pointer\" representing an out-of-line\n * Datum that is stored in memory, in some type-specific, not necessarily\n * physically contiguous format that is convenient for computation not\n * storage. APIs for this, in particular the definition of struct\n * ExpandedObjectHeader, are in src/include/utils/expandeddatum.h.\n *\n * Note that just as for struct varatt_external, this struct is stored\n * unaligned within any containing tuple.\n */\n" }, { "new_type_name": "Datum", "source_type": "uintptr_t", "comment": "/*\n * A Datum contains either a value of a pass-by-value type or a pointer to a\n * value of a pass-by-reference type. Therefore, we require:\n *\n * sizeof(Datum) == sizeof(void *) == 4 or 8\n *\n * The macros below and the analogous macros for other types should be used to\n * convert between a Datum and the appropriate C type.\n */\n" }, { "new_type_name": "Oid", "source_type": "unsigned int", "comment": "/*\n * Object ID is a fundamental type in Postgres.\n */\n" }, { "new_type_name": "VacAttrStatsP", "source_type": "VacAttrStats", "comment": "/*----------\n * ANALYZE builds one of these structs for each attribute (column) that is\n * to be analyzed. The struct and subsidiary data are in anl_context,\n * so they live until the end of the ANALYZE operation.\n *\n * The type-specific typanalyze function is passed a pointer to this struct\n * and must return true to continue analysis, false to skip analysis of this\n * column. In the true case it must set the compute_stats and minrows fields,\n * and can optionally set extra_data to pass additional info to compute_stats.\n * minrows is its request for the minimum number of sample rows to be gathered\n * (but note this request might not be honored, eg if there are fewer rows\n * than that in the table).\n *\n * The compute_stats routine will be called after sample rows have been\n * gathered. Aside from this struct, it is passed:\n *\t\tfetchfunc: a function for accessing the column values from the\n *\t\t\t\t sample rows\n *\t\tsamplerows: the number of sample tuples\n *\t\ttotalrows: estimated total number of rows in relation\n * The fetchfunc may be called with rownum running from 0 to samplerows-1.\n * It returns a Datum and an isNull flag.\n *\n * compute_stats should set stats_valid true if it is able to compute\n * any useful statistics. If it does, the remainder of the struct holds\n * the information to be stored in a pg_statistic row for the column. Be\n * careful to allocate any pointed-to data in anl_context, which will NOT\n * be CurrentMemoryContext when compute_stats is called.\n *\n * Note: all comparisons done for statistical purposes should use the\n * underlying column's collation (attcollation), except in situations\n * where a noncollatable container type contains a collatable type;\n * in that case use the type's default collation. Be sure to record\n * the appropriate collation in stacoll.\n *----------\n */\n" }, { "new_type_name": "BlockNumber", "source_type": "uint32", "comment": "/*\n * BlockNumber:\n *\n * each data file (heap or index) is divided into postgres disk blocks\n * (which may be thought of as the unit of i/o -- a postgres buffer\n * contains exactly one disk block). the blocks are numbered\n * sequentially, 0 to 0xFFFFFFFE.\n *\n * InvalidBlockNumber is the same thing as P_NEW in bufmgr.h.\n *\n * the access methods, the buffer manager and the storage manager are\n * more or less the only pieces of code that should be accessing disk\n * blocks directly.\n */\n" }, { "new_type_name": "BlockId", "source_type": "BlockIdData", "comment": null }, { "new_type_name": "pg_wchar", "source_type": "unsigned int", "comment": "/*\n * The pg_wchar type\n */\n" } ]libpg_query-13-2.1.0/test/000077500000000000000000000000001413137616400152425ustar00rootroot00000000000000libpg_query-13-2.1.0/test/complex.c000066400000000000000000007713771413137616400171030ustar00rootroot00000000000000#include #include #include #include #include #ifdef USE_VALGRIND #define TEST_LOOPS 10 #else #define TEST_LOOPS 1000 #endif const char* query = "select ? as field_id \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ? \ union all select ?"; const char *fingerprint = "fc5a0500dddc25aa"; int main() { size_t i; bool ret_code = 0; for (i = 0; i < TEST_LOOPS; i++) { PgQueryFingerprintResult result = pg_query_fingerprint(query); if (result.error) { ret_code = -1; printf("%s\n", result.error->message); } else if (strcmp(result.fingerprint_str, fingerprint) == 0) { printf("."); } else { ret_code = -1; printf("INVALID result, expected: %s\nactual: %s\nactual tokens: \n", fingerprint, result.fingerprint_str); pg_query_fingerprint_with_opts(query, true); } pg_query_free_fingerprint_result(result); if (ret_code != 0) break; } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-13-2.1.0/test/concurrency.c000066400000000000000000000021401413137616400177350ustar00rootroot00000000000000#include #include #include #include #include #include #include "parse_tests.c" #ifdef USE_VALGRIND #define THREAD_COUNT 50 #else #define THREAD_COUNT 500 #endif void* test_runner(void*); int main() { size_t i; int ret; pthread_t threads[THREAD_COUNT]; for (i = 0; i < THREAD_COUNT; i += 1) { ret = pthread_create(&threads[i], NULL, test_runner, NULL); if (ret) { perror("ERROR creating pthread"); return 1; } } for (i = 0; i < THREAD_COUNT; i += 1) { pthread_join(threads[i], NULL); } printf("\n"); return 0; } void* test_runner(void* ptr) { size_t i; for (i = 0; i < testsLength; i += 2) { PgQueryParseResult result = pg_query_parse(tests[i]); if (result.error) { printf("%s\n", result.error->message); } else if (strcmp(result.parse_tree, tests[i + 1]) == 0) { printf("."); } else { printf("INVALID result for \"%s\"\nexpected: %s\nactual: %s\n", tests[i], tests[i + 1], result.parse_tree); } pg_query_free_parse_result(result); } return NULL; } libpg_query-13-2.1.0/test/deparse.c000066400000000000000000000231411413137616400170320ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #include "deparse_tests.c" // Removes the location values from the JSON parse tree string, replacing them with nothing // (we don't use any special replacement value to avoid increasing the string size) void remove_node_locations(char *parse_tree_json) { char *tokstart; char *p; size_t remaining_len; p = parse_tree_json; while ((p = strstr(p, "\"location\":")) != NULL) { tokstart = p; if (*(tokstart - 1) == ',') tokstart--; p += strlen("\"location\":"); if (*p == '-') p++; while (*p >= '0' && *p <= '9') p++; remaining_len = strlen(p); memmove(tokstart, p, remaining_len); p = tokstart; *(p + remaining_len) = '\0'; } } int run_test(const char *query, bool compare_query_text) { PgQueryProtobufParseResult parse_result = pg_query_parse_protobuf(query); if (parse_result.error) { pg_query_free_protobuf_parse_result(parse_result); if (!compare_query_text) // Silently fail for regression tests which can contain intentional syntax errors return EXIT_SUCCESS; printf("\nERROR for \"%s\"\n %s\n", query, parse_result.error->message); return EXIT_FAILURE; } PgQueryParseResult parse_result_original = pg_query_parse(query); PgQueryDeparseResult deparse_result = pg_query_deparse_protobuf(parse_result.parse_tree); if (deparse_result.error) { printf("\nERROR for \"%s\"\n %s\n parsetree: %s\n", query, deparse_result.error->message, parse_result_original.parse_tree); pg_query_free_protobuf_parse_result(parse_result); pg_query_free_deparse_result(deparse_result); pg_query_free_parse_result(parse_result_original); return EXIT_FAILURE; } else if (compare_query_text && strcmp(deparse_result.query, query) != 0) { printf("\nQUERY TEXT MISMATCH for \"%s\"\n actual: \"%s\"\n original parsetree: %s\n", query, deparse_result.query, parse_result_original.parse_tree); pg_query_free_protobuf_parse_result(parse_result); pg_query_free_deparse_result(deparse_result); pg_query_free_parse_result(parse_result_original); return EXIT_FAILURE; } // Compare the original and the deparsed parse tree, whilst ignoring location data int ret_code = EXIT_SUCCESS; PgQueryParseResult parse_result_deparse = pg_query_parse(deparse_result.query); if (parse_result_original.error) { ret_code = EXIT_FAILURE; printf("\nERROR for parsing \"%s\"\n error: %s\n", query, parse_result_original.error->message); } else if (parse_result_deparse.error) { ret_code = EXIT_FAILURE; remove_node_locations(parse_result_deparse.parse_tree); printf("\nERROR for parsing deparse of \"%s\"\n deparsed sql: %s\n error: %s\n original parsetree: %s\n", query, deparse_result.query, parse_result_deparse.error->message, parse_result_original.parse_tree); } else { remove_node_locations(parse_result_original.parse_tree); remove_node_locations(parse_result_deparse.parse_tree); if (strcmp(parse_result_original.parse_tree, parse_result_deparse.parse_tree) != 0) { ret_code = EXIT_FAILURE; printf("\nPARSETREE MISMATCH for parsing deparse of \"%s\"\n deparsed sql: %s\n original parsetree: %s\n deparsed parsetree: %s\n", query, deparse_result.query, parse_result_original.parse_tree, parse_result_deparse.parse_tree); } else { printf("."); } } pg_query_free_protobuf_parse_result(parse_result); pg_query_free_parse_result(parse_result_original); pg_query_free_parse_result(parse_result_deparse); pg_query_free_deparse_result(deparse_result); return ret_code; } int run_tests_from_file(const char * filename) { char *sample_buffer; struct stat sample_stat; int fd; fd = open(filename, O_RDONLY); if (fd < 0) { printf("\nERROR opening regression test file: %s\n", filename); return EXIT_FAILURE; } fstat(fd, &sample_stat); sample_buffer = mmap(0, sample_stat.st_size, PROT_READ, MAP_PRIVATE, fd, 0); if (sample_buffer == (void *) -1) { printf("Could not mmap samples file\n"); close(fd); return EXIT_FAILURE; } char *sample_buffer_p = sample_buffer; // Special cases to avoid scanner errors if (strcmp(filename, "test/sql/postgres_regress/strings.sql") == 0) { // Skip early parts of the file that intentionally test "invalid Unicode escape" errors sample_buffer_p = strstr(sample_buffer_p, "-- bytea\n"); } PgQuerySplitResult split_result = pg_query_split_with_scanner(sample_buffer_p); if (split_result.error != NULL) { printf("\nERROR splitting file \"%s\"\n error: %s\n", filename, split_result.error->message); pg_query_free_split_result(split_result); munmap(sample_buffer, sample_stat.st_size); close(fd); return EXIT_FAILURE; } int ret_code = EXIT_SUCCESS; for (int i = 0; i < split_result.n_stmts; ++i) { char *query = strndup(sample_buffer_p + split_result.stmts[i]->stmt_location, split_result.stmts[i]->stmt_len); int test_ret_code = run_test(query, false); if (test_ret_code != EXIT_SUCCESS) ret_code = test_ret_code; free(query); } pg_query_free_split_result(split_result); munmap(sample_buffer, sample_stat.st_size); close(fd); return ret_code; } const char* regressFilenames[] = { "advisory_lock.sql", "aggregates.sql", "alter_generic.sql", "alter_operator.sql", "alter_table.sql", "amutils.sql", "arrays.sql", "async.sql", "bit.sql", "bitmapops.sql", "boolean.sql", "box.sql", "brin.sql", "btree_index.sql", "case.sql", "char.sql", "circle.sql", "cluster.sql", "collate.icu.utf8.sql", "collate.linux.utf8.sql", "collate.sql", "combocid.sql", "comments.sql", "conversion.sql", "copy2.sql", "copydml.sql", "copyselect.sql", "create_aggregate.sql", "create_am.sql", "create_cast.sql", "create_function_3.sql", "create_index_spgist.sql", "create_index.sql", "create_misc.sql", "create_operator.sql", "create_procedure.sql", "create_table_like.sql", "create_table.sql", "create_type.sql", "create_view.sql", "date.sql", "dbsize.sql", "delete.sql", "dependency.sql", "domain.sql", "drop_if_exists.sql", "drop_operator.sql", "enum.sql", "equivclass.sql", "errors.sql", "event_trigger.sql", "explain.sql", "expressions.sql", "fast_default.sql", "float4.sql", "float8.sql", "foreign_data.sql", "foreign_key.sql", "functional_deps.sql", "generated.sql", "geometry.sql", "gin.sql", "gist.sql", "groupingsets.sql", "guc.sql", "hash_func.sql", "hash_index.sql", "hash_part.sql", "horology.sql", "hs_primary_extremes.sql", "hs_primary_setup.sql", "hs_standby_allowed.sql", "hs_standby_check.sql", "hs_standby_disallowed.sql", "hs_standby_functions.sql", "identity.sql", "incremental_sort.sql", "index_including_gist.sql", "index_including.sql", "indexing.sql", "indirect_toast.sql", "inet.sql", "infinite_recurse.sql", "inherit.sql", "init_privs.sql", "insert_conflict.sql", "insert.sql", "int2.sql", "int4.sql", "int8.sql", "interval.sql", "join_hash.sql", "join.sql", "json_encoding.sql", "json.sql", "jsonb_jsonpath.sql", "jsonb.sql", "jsonpath_encoding.sql", "jsonpath.sql", "limit.sql", "line.sql", "lock.sql", "lseg.sql", "macaddr.sql", "macaddr8.sql", "matview.sql", "misc_functions.sql", "misc_sanity.sql", "money.sql", "name.sql", "namespace.sql", "numeric_big.sql", "numeric.sql", "numerology.sql", "object_address.sql", "oid.sql", "oidjoins.sql", "opr_sanity.sql", "partition_aggregate.sql", "partition_info.sql", "partition_join.sql", "partition_prune.sql", "password.sql", "path.sql", "pg_lsn.sql", "plancache.sql", "plpgsql.sql", "point.sql", "polygon.sql", "polymorphism.sql", "portals_p2.sql", "portals.sql", "prepare.sql", "prepared_xacts.sql", "privileges.sql", "psql_crosstab.sql", "psql.sql", "publication.sql", "random.sql", "rangefuncs.sql", "rangetypes.sql", "regex.linux.utf8.sql", "regex.sql", "regproc.sql", "reindex_catalog.sql", "reloptions.sql", "replica_identity.sql", "returning.sql", "roleattributes.sql", "rowsecurity.sql", "rowtypes.sql", "rules.sql", "sanity_check.sql", "security_label.sql", "select_distinct_on.sql", "select_distinct.sql", "select_having.sql", "select_implicit.sql", "select_into.sql", "select_parallel.sql", "select_views.sql", "select.sql", "sequence.sql", "spgist.sql", "stats_ext.sql", "stats.sql", "strings.sql", "subscription.sql", "subselect.sql", "sysviews.sql", "tablesample.sql", "temp.sql", "text.sql", "tid.sql", "tidscan.sql", "time.sql", "timestamp.sql", "timestamptz.sql", "timetz.sql", "transactions.sql", "triggers.sql", "truncate.sql", "tsdicts.sql", "tsearch.sql", "tsrf.sql", "tstypes.sql", "tuplesort.sql", "txid.sql", "type_sanity.sql", "typed_table.sql", "unicode.sql", "union.sql", "updatable_views.sql", "update.sql", "uuid.sql", "vacuum.sql", "varchar.sql", "window.sql", "with.sql", "write_parallel.sql", "xid.sql", "xml.sql", "xmlmap.sql" }; size_t regressFilenameCount = 203; int main() { size_t i; int ret_code = EXIT_SUCCESS; int test_ret_code; for (i = 0; i < testsLength; i += 1) { test_ret_code = run_test(tests[i], true); if (test_ret_code != EXIT_SUCCESS) ret_code = test_ret_code; } for (i = 0; i < regressFilenameCount; i += 1) { printf("\n%s\n", regressFilenames[i]); char *filename = malloc(sizeof(char) * strlen("test/sql/postgres_regress/") + strlen(regressFilenames[i]) + 1); strcpy(filename, "test/sql/postgres_regress/"); strcat(filename, regressFilenames[i]); test_ret_code = run_tests_from_file(filename); free(filename); if (test_ret_code != EXIT_SUCCESS) ret_code = test_ret_code; } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-13-2.1.0/test/deparse_tests.c000066400000000000000000000546471413137616400202730ustar00rootroot00000000000000const char* tests[] = { "SELECT 1", "SELECT 1; SELECT 2", "SELECT 1 FROM t(1)", "SELECT sum(unique1) FILTER (WHERE unique1 IN (SELECT unique1 FROM onek WHERE unique1 < 100)) FROM tenk1", "SELECT a AS b FROM x WHERE y = 5 AND z = y", "SELECT FROM x WHERE y = 5 AND z = y", "SELECT a AS b FROM public.x WHERE y = 5 AND z = y", "SELECT DISTINCT a, b, * FROM c WHERE d = e", "SELECT DISTINCT ON (a) a, b FROM c", "SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01'", "SELECT current_timestamp", "SELECT current_time(2)", "SELECT memory_total_bytes, memory_swap_total_bytes - memory_swap_free_bytes AS swap, date_part(?, s.collected_at) AS collected_at FROM snapshots s JOIN system_snapshots ON snapshot_id = s.id WHERE s.database_id = ? AND s.collected_at >= ? AND s.collected_at <= ? ORDER BY collected_at ASC", "SELECT * FROM a ORDER BY x ASC NULLS FIRST", "SELECT * FROM a ORDER BY x ASC NULLS LAST", "SELECT * FROM a ORDER BY x COLLATE \"tr_TR\" DESC NULLS LAST", "SELECT 'foo' COLLATE \"tr_TR\"", "WITH kodsis AS (SELECT * FROM application), kodsis2 AS (SELECT * FROM application) SELECT * FROM kodsis UNION SELECT * FROM kodsis ORDER BY id DESC", "SELECT id, name FROM table1 UNION (SELECT id, name FROM table2 ORDER BY name) ORDER BY id ASC", "SELECT a FROM kodsis EXCEPT SELECT a FROM application", "SELECT * FROM (VALUES ('anne', 'smith'), ('bob', 'jones'), ('joe', 'blow')) names(first, last)", "SELECT * FROM users WHERE name LIKE 'postgresql:%'", "SELECT * FROM users WHERE name NOT LIKE 'postgresql:%'", "SELECT * FROM users WHERE name ILIKE 'postgresql:%'", "SELECT * FROM users WHERE name NOT ILIKE 'postgresql:%'", "WITH t AS (SELECT random() AS x FROM generate_series(1, 3)) SELECT * FROM t", "WITH RECURSIVE search_graph(id, link, data, depth, path, cycle) AS (SELECT g.id, g.link, g.data, 1, ARRAY[ROW(g.f1, g.f2)], false FROM graph g UNION ALL SELECT g.id, g.link, g.data, sg.depth + 1, path || ROW(g.f1, g.f2), ROW(g.f1, g.f2) = ANY(path) FROM graph g, search_graph sg WHERE g.id = sg.link AND NOT cycle) SELECT id, data, link FROM search_graph", "SELECT OVERLAY(m.name PLACING '******' FROM 3 FOR 6) AS tc_kimlik FROM tb_test m", "SELECT sum(price_cents) FROM products", "SELECT ARRAY(SELECT id FROM products)::bigint[]", "SELECT m.name AS mname, pname FROM manufacturers m, LATERAL get_product_names(m.id) pname", "SELECT m.name AS mname, pname FROM manufacturers m LEFT JOIN LATERAL get_product_names(m.id) pname ON true", "SELECT * FROM tb_test_main mh JOIN LATERAL (SELECT ftnrm.* FROM test ftnrm WHERE ftnrm.hizmet_id = mh.id UNION ALL SELECT ftarc.* FROM test.test2 ftarc WHERE ftarc.hizmet_id = mh.id) ft ON true", "SELECT x, y FROM a CROSS JOIN b", "SELECT x, y FROM a NATURAL JOIN b", "SELECT x, y FROM a LEFT JOIN b ON 1 > 0", "SELECT x, y FROM a RIGHT JOIN b ON 1 > 0", "SELECT x, y FROM a FULL JOIN b ON 1 > 0", "SELECT x, y FROM a JOIN b USING (z)", "SELECT 2 + 2", "SELECT * FROM x WHERE y IS NULL", "SELECT * FROM x WHERE y IS NOT NULL", "SELECT count(*) FROM x WHERE y IS NOT NULL", "SELECT count(DISTINCT a) FROM x WHERE y IS NOT NULL", "SELECT CASE WHEN a.status = 1 THEN 'active' WHEN a.status = 2 THEN 'inactive' END FROM accounts a", "SELECT CASE 1 > 0 WHEN true THEN 'ok' ELSE NULL END", "SELECT CASE WHEN a.status = 1 THEN 'active' WHEN a.status = 2 THEN 'inactive' ELSE 'unknown' END FROM accounts a", "SELECT * FROM accounts WHERE status = CASE WHEN x = 1 THEN 'active' ELSE 'inactive' END", "SELECT CASE WHEN EXISTS (SELECT 1) THEN 1 ELSE 2 END", "SELECT (SELECT 'x')", "SELECT * FROM (SELECT generate_series(0, 100)) a", "SELECT * FROM x WHERE id IN (1, 2, 3)", "SELECT * FROM x WHERE id IN (SELECT id FROM account)", "SELECT * FROM x WHERE id NOT IN (1, 2, 3)", "SELECT * FROM x JOIN (SELECT n FROM z) b ON a.id = b.id", "SELECT * FROM x WHERE y = z[?]", "SELECT (foo(1)).y", "SELECT proname, (SELECT regexp_split_to_array(proargtypes::text, ' '))[idx] AS argtype, proargnames[idx] AS argname FROM pg_proc", "SELECT COALESCE((SELECT customer.sp_person(n.id) AS sp_person).city_id, NULL::int) AS city_id FROM customer.tb_customer n", "SELECT * FROM x WHERE y = z[?][?]", "SELECT (k #= hstore('{id}'::text[], ARRAY[1::text])).* FROM test k", "SELECT * FROM x WHERE NOT y", "SELECT * FROM x WHERE x OR y", "SELECT 1 WHERE (1 = 1 OR 1 = 2) AND 1 = 2", "SELECT 1 WHERE (1 = 1 AND 2 = 2) OR 2 = 3", "SELECT 1 WHERE 1 = 1 OR 2 = 2 OR 2 = 3", "SELECT * FROM x WHERE x = ALL(?)", "SELECT * FROM x WHERE x = ANY(?)", "SELECT * FROM x WHERE x = COALESCE(y, ?)", "SELECT a, b, max(c) FROM c WHERE d = 1 GROUP BY a, b", "SELECT * FROM x LIMIT 50", "SELECT * FROM x OFFSET 50", "SELECT amount * 0.5", "SELECT * FROM x WHERE x BETWEEN '2016-01-01' AND '2016-02-02'", "SELECT * FROM x WHERE x NOT BETWEEN '2016-01-01' AND '2016-02-02'", "SELECT * FROM x WHERE x BETWEEN SYMMETRIC 20 AND 10", "SELECT * FROM x WHERE x NOT BETWEEN SYMMETRIC 20 AND 10", "SELECT NULLIF(id, 0) AS id FROM x", "SELECT NULL FROM x", "SELECT * FROM x WHERE y IS TRUE", "SELECT * FROM x WHERE y IS NOT TRUE", "SELECT * FROM x WHERE y IS FALSE", "SELECT * FROM x WHERE y IS NOT FALSE", "SELECT * FROM x WHERE y IS UNKNOWN", "SELECT * FROM x WHERE y IS NOT UNKNOWN", "SELECT * FROM crosstab('SELECT department, role, COUNT(id) FROM users GROUP BY department, role ORDER BY department, role', 'VALUES (''admin''::text), (''ordinary''::text)') AS (department varchar, admin int, ordinary int)", "SELECT * FROM crosstab('SELECT department, role, COUNT(id) FROM users GROUP BY department, role ORDER BY department, role', 'VALUES (''admin''::text), (''ordinary''::text)') ctab (department varchar, admin int, ordinary int)", "SELECT row_cols[0] AS dept, row_cols[1] AS sub, admin, ordinary FROM crosstab('SELECT ARRAY[department, sub] AS row_cols, role, COUNT(id) FROM users GROUP BY department, role ORDER BY department, role', 'VALUES (''admin''::text), (''ordinary''::text)') AS (row_cols varchar[], admin int, ordinary int)", "SELECT 1::int8", "SELECT CAST(1 + 3 AS int8)", "SELECT ?::regclass", "SELECT table_field::bool, table_field::boolean FROM t", "SELECT true, false", "SELECT 1::boolean, 0::boolean", "SELECT $5", "SELECT ?", "INSERT INTO x (y, z) VALUES (1, 'abc')", "INSERT INTO x (\"user\") VALUES ('abc')", "INSERT INTO x (y, z) VALUES (1, 'abc') RETURNING id", "INSERT INTO x SELECT * FROM y", "WITH moved AS (DELETE FROM employees WHERE manager_name = 'Mary') INSERT INTO employees_of_mary SELECT * FROM moved", "INSERT INTO x (y, z) VALUES (1, 'abc') ON CONFLICT (y) DO UPDATE SET \"user\" = excluded.\"user\" RETURNING y", "INSERT INTO x (y, z) VALUES (1, 'abc') ON CONFLICT (y) DO NOTHING RETURNING y", "INSERT INTO distributors (did, dname) VALUES (10, 'Conrad International') ON CONFLICT (did) WHERE is_active DO NOTHING", "INSERT INTO distributors (did, dname) VALUES (9, 'Antwerp Design') ON CONFLICT ON CONSTRAINT distributors_pkey DO NOTHING", "INSERT INTO employees SELECT * FROM people WHERE 1 = 1 GROUP BY name HAVING count(name) > 1 ORDER BY name DESC LIMIT 10 OFFSET 15 FOR UPDATE", "INSERT INTO films VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama', DEFAULT)", "SELECT * FROM people FOR UPDATE OF name, email", "SELECT name::varchar(255) FROM people", "SELECT name::varchar FROM people", "SELECT age::numeric(5, 2) FROM people", "SELECT age::numeric FROM people", "UPDATE x SET y = 1 WHERE z = 'abc'", "UPDATE ONLY x table_x SET y = 1 WHERE z = 'abc' RETURNING y AS changed_y", "WITH archived AS (DELETE FROM employees WHERE manager_name = 'Mary') UPDATE users SET archived = true WHERE users.id IN (SELECT user_id FROM moved)", "WITH archived AS (DELETE FROM employees WHERE manager_name = 'Mary' RETURNING user_id) UPDATE users SET archived = true FROM archived WHERE archived.user_id = id RETURNING id", "INSERT INTO jackdanger_card_totals (id, amount_cents, created_at) SELECT series.i, random() * 1000, (SELECT '2015-08-25 00:00:00 -0700'::timestamp + (('2015-08-25 23:59:59 -0700'::timestamp - '2015-08-25 00:00:00 -0700'::timestamp) * random())) FROM generate_series(1, 10000) series(i)", "UPDATE foo SET a = ?, b = ?", "UPDATE x SET \"user\" = 'emin'", "DELETE FROM x WHERE y = 1", "DELETE FROM ONLY x table_x USING table_z WHERE y = 1 RETURNING *", "WITH archived AS (DELETE FROM employees WHERE manager_name = 'Mary') DELETE FROM users WHERE users.id IN (SELECT user_id FROM moved)", "CREATE CAST (bigint AS int4) WITH FUNCTION int4(bigint) AS ASSIGNMENT", "CREATE CAST (bigint AS int4) WITHOUT FUNCTION AS IMPLICIT", "CREATE CAST (bigint AS int4) WITH INOUT AS ASSIGNMENT", "CREATE DOMAIN us_postal_code AS text CHECK (\"VALUE\" ~ E'^\\\\d{5}$' OR \"VALUE\" ~ E'^\\\\d{5}-\\\\d{4}$')", "CREATE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql", "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql", "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE", "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE RETURNS NULL ON NULL INPUT", "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \"users\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT", "CREATE OR REPLACE FUNCTION getfoo() RETURNS text AS $$SELECT name FROM \"users\" LIMIT 1$$ LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT", "CREATE SCHEMA myschema", "CREATE SCHEMA AUTHORIZATION joe", "CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe", "CREATE SCHEMA hollywood CREATE TABLE films (title text, release date, awards text[]) CREATE VIEW winners AS SELECT title, release FROM films WHERE awards IS NOT NULL", "CREATE UNLOGGED TABLE cities (name text, population real, altitude double, identifier smallint, postal_code int, foreign_id bigint)", "CREATE TABLE IF NOT EXISTS distributors (name varchar(40) DEFAULT 'Luso Films', len interval hour to second(3), name varchar(40) DEFAULT 'Luso Films', did int DEFAULT nextval('distributors_serial'), stamp timestamp DEFAULT now() NOT NULL, stamptz timestamp with time zone, time time NOT NULL, timetz time with time zone, CONSTRAINT name_len PRIMARY KEY (name, len))", "CREATE TABLE types (a real, b double precision, c numeric(2, 3), d char(4), e char(5), f varchar(6), g varchar(7))", "CREATE TABLE types (a geometry(point) NOT NULL)", "CREATE TABLE tablename (colname int NOT NULL DEFAULT nextval('tablename_colname_seq'))", "CREATE TABLE capitals (state char(2)) INHERITS (cities)", "CREATE TEMPORARY TABLE temp AS SELECT c FROM t", "CREATE TABLE films2 AS SELECT * FROM films", "CREATE TEMPORARY TABLE films_recent ON COMMIT DROP AS SELECT * FROM films WHERE date_prod > $1", "DROP SERVER IF EXISTS foo", "DROP PUBLICATION mypublication", "DROP TYPE box", "DROP TABLESPACE mystuff", "DROP CONVERSION myname", "DROP SEQUENCE serial", "DROP INDEX title_idx", "DROP MATERIALIZED VIEW order_summary", "DROP TRIGGER if_dist_exists ON films", "DROP RULE newrule ON mytable", "DROP CAST (text AS int)", "DROP OPERATOR FAMILY float_ops USING btree", "DROP AGGREGATE myavg(int), myavg(bigint)", "DROP COLLATION german", "DROP FOREIGN DATA WRAPPER dbi", "DROP ACCESS METHOD heptree", "DROP STATISTICS IF EXISTS accounting.users_uid_creation, public.grants_user_role", "DROP TEXT SEARCH DICTIONARY english", "DROP OPERATOR CLASS widget_ops USING btree", "DROP POLICY p1 ON my_table", "DROP SUBSCRIPTION mysub", "DROP TEXT SEARCH CONFIGURATION my_english", "DROP EVENT TRIGGER snitch", "DROP TEXT SEARCH PARSER my_parser", "DROP EXTENSION hstore", "DROP DOMAIN box", "DROP TEXT SEARCH TEMPLATE thesaurus", "DROP TRANSFORM FOR hstore LANGUAGE plpythonu", "DROP FOREIGN TABLE films, distributors", "DROP FUNCTION sqrt(int)", "DROP FUNCTION update_employee_salaries()", "DROP FUNCTION update_employee_salaries", "DROP TABLE IF EXISTS any_table CASCADE", "DROP TABLE IF EXISTS any_table", "DROP SCHEMA IF EXISTS any_schema", "ALTER TABLE distributors DROP CONSTRAINT distributors_pkey, ADD CONSTRAINT distributors_pkey PRIMARY KEY USING INDEX dist_id_temp_idx, ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5), ALTER COLUMN tstamp DROP DEFAULT, ALTER COLUMN tstamp TYPE timestamp with time zone USING 'epoch'::timestamp with time zone + (date_part('epoch', tstamp) * '1 second'::interval), ALTER COLUMN tstamp SET DEFAULT now(), ALTER COLUMN tstamp DROP DEFAULT, ALTER COLUMN tstamp SET STATISTICS -5, ADD COLUMN some_int int NOT NULL, DROP IF EXISTS other_column CASCADE", "ALTER TABLE distributors RENAME TO suppliers", "ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses (address)", "ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses (address) NOT VALID", "ALTER TRIGGER emp_stamp ON emp RENAME TO emp_track_chgs", "ALTER CONVERSION iso_8859_1_to_utf8 RENAME TO latin1_to_unicode", "ALTER TABLE distributors RENAME CONSTRAINT zipchk TO zip_check", "ALTER INDEX distributors RENAME TO suppliers", "ALTER MATERIALIZED VIEW foo RENAME TO bar", "ALTER TABLESPACE index_space RENAME TO fast_raid", "ALTER TABLE distributors RENAME COLUMN address TO city", "ALTER COLLATION \"de_DE\" RENAME TO german", "ALTER TYPE electronic_mail RENAME TO email", "ALTER DOMAIN zipcode RENAME CONSTRAINT zipchk TO zip_check", "ALTER AGGREGATE myavg(int) RENAME TO my_average", "ALTER FUNCTION sqrt(int) RENAME TO square_root", "ALTER RULE notify_all ON emp RENAME TO notify_me", "BEGIN", "BEGIN ISOLATION LEVEL SERIALIZABLE", "BEGIN READ ONLY", "BEGIN ISOLATION LEVEL READ COMMITTED, DEFERRABLE", "START TRANSACTION READ ONLY", "ROLLBACK", "ROLLBACK AND CHAIN", "COMMIT", "COMMIT AND CHAIN", "SAVEPOINT \"x y\"", "ROLLBACK TO SAVEPOINT x", "RELEASE x", "SELECT rank(*) OVER ()", "SELECT rank(*) OVER (PARTITION BY id)", "SELECT rank(*) OVER (ORDER BY id)", "SELECT rank(*) OVER (PARTITION BY id, id2 ORDER BY id DESC, id2)", "SELECT rank(*) OVER named_window", "SELECT max(create_date::date) FILTER (WHERE cancel_date IS NULL) OVER (ORDER BY create_date DESC) FROM tb_x", "ALTER VIEW foo RENAME TO bar", "CREATE OR REPLACE TEMPORARY VIEW view_a AS SELECT * FROM a(1) WITH CHECK OPTION", "DROP VIEW kinds", "CREATE VIEW view_a (a, b) AS WITH RECURSIVE view_a(a, b) AS (SELECT * FROM a(1)) SELECT a, b FROM view_a", "SET statement_timeout TO 10000", "SET search_path TO my_schema, public", "SET LOCAL search_path TO my_schema, public", "SET \"user\" TO ?", "VACUUM", "VACUUM t", "VACUUM (FULL) t", "VACUUM (FREEZE) t", "VACUUM (VERBOSE) t", "VACUUM (ANALYZE) t", "VACUUM (FULL, FREEZE, VERBOSE, ANALYZE)", "VACUUM (ANALYZE) t(a, b)", "LOCK TABLE t", "LOCK TABLE t, u", "EXPLAIN SELECT a FROM b", "EXPLAIN (ANALYZE) SELECT a FROM b", "EXPLAIN (ANALYZE, BUFFERS) SELECT a FROM b", "COPY t FROM STDIN", "COPY t(c1, c2) FROM STDIN", "COPY t FROM PROGRAM '/bin/false'", "COPY t FROM '/dev/null'", "COPY t TO STDOUT", "COPY (SELECT 1 FROM foo) TO STDOUT", "COPY t FROM STDIN WITH (convert_selectively, some_str test, some_num 1, some_list (a), some_star *)", "DO $$BEGIN PERFORM * FROM information_schema.tables; END$$", "DO LANGUAGE plpgsql $$ BEGIN PERFORM * FROM information_schema.tables; END $$", "DO $$ BEGIN PERFORM * FROM information_schema.tables; END $$ LANGUAGE plpgsql", "DISCARD ALL", "DISCARD PLANS", "DISCARD SEQUENCES", "DISCARD TEMP", "CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1)", "CREATE AGGREGATE aggregate1 (int4, bool) (sfunc = sfunc1, stype = stype1)", "CREATE AGGREGATE aggregate1 (*) (sfunc = sfunc1, stype = stype1)", "CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1, finalfunc_extra, mfinalfuncextra)", "CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1, finalfunc_modify = read_only, parallel = restricted)", "CREATE AGGREGATE percentile_disc (float8 ORDER BY anyelement) (sfunc = ordered_set_transition, stype = internal, finalfunc = percentile_disc_final, finalfunc_extra)", "CREATE OPERATOR + (procedure = plusfunc)", "CREATE OPERATOR + (procedure = plusfunc, leftarg = int4, rightarg = int4)", "CREATE OPERATOR + (procedure = plusfunc, hashes, merges)", "CREATE TYPE type1", "CREATE TYPE type1 AS (attr1 int4, attr2 bool)", "CREATE TYPE type1 AS (attr1 int4 COLLATE collation1, attr2 bool)", "CREATE TYPE type1 AS ENUM ('value1', 'value2', 'value3')", "CREATE TYPE type1 AS RANGE (subtype = int4)", "CREATE TYPE type1 AS RANGE (subtype = int4, receive = receive_func, passedbyvalue)", "CREATE TYPE type1 (input = input1, output = output1)", "CREATE TYPE type1 (input = input1, output = output1, passedbyvalue)", "GRANT select ON \"table\" TO \"user\"", "GRANT select, update, insert ON \"table\" TO \"user\"", "GRANT select ON ALL TABLES IN SCHEMA schema TO \"user\"", "GRANT select ON \"table\" TO user1, user2", "GRANT select ON \"table\" TO public", "GRANT select ON \"table\" TO CURRENT_USER", "GRANT select ON \"table\" TO SESSION_USER", "GRANT ALL ON \"table\" TO \"user\"", "GRANT select ON \"table\" TO \"user\" WITH GRANT OPTION", "GRANT select (\"column\") ON \"table\" TO \"user\"", "GRANT select (column1, column2) ON \"table\" TO \"user\"", "GRANT usage ON SEQUENCE sequence TO \"user\"", "GRANT usage ON ALL SEQUENCES IN SCHEMA schema TO \"user\"", "GRANT create ON DATABASE database TO \"user\"", "GRANT usage ON DOMAIN domain TO \"user\"", "GRANT usage ON FOREIGN DATA WRAPPER fdw TO \"user\"", "GRANT usage ON FOREIGN SERVER server TO \"user\"", "GRANT execute ON FUNCTION function TO \"user\"", "GRANT execute ON FUNCTION function() TO \"user\"", "GRANT execute ON FUNCTION function(string) TO \"user\"", "GRANT execute ON FUNCTION function(string, string, boolean) TO \"user\"", "GRANT execute ON ALL FUNCTIONS IN SCHEMA schema TO \"user\"", "GRANT usage ON LANGUAGE plpgsql TO \"user\"", "GRANT select ON LARGE OBJECT 1234 TO \"user\"", "GRANT create ON SCHEMA schema TO \"user\"", "GRANT create ON TABLESPACE tablespace TO \"user\"", "GRANT usage ON TYPE type TO \"user\"", "GRANT role TO \"user\"", "GRANT role1, role2 TO \"user\"", "GRANT role TO \"user\" WITH ADMIN OPTION", "DROP ROLE jonathan", "REVOKE ALL ON kinds FROM manuel", "REVOKE admins FROM joe", "REVOKE insert ON films FROM public", "SELECT m.name AS mname, pname FROM manufacturers m LEFT JOIN LATERAL get_product_names(m.id) pname ON true", "SELECT m.name AS mname, pname FROM manufacturers m LEFT JOIN LATERAL get_product_names(m.id) pname ON true; INSERT INTO manufacturers_daily (a, b) SELECT a, b FROM manufacturers", "SELECT m.name AS mname, pname FROM manufacturers m LEFT JOIN LATERAL get_product_names(m.id) pname ON true; UPDATE users SET name = 'bobby; drop tables'; INSERT INTO manufacturers_daily (a, b) SELECT a, b FROM manufacturers", "SELECT * FROM a CROSS JOIN (b CROSS JOIN c)", "SELECT 1 FOR UPDATE", "SELECT 1 FOR UPDATE NOWAIT", "SELECT 1 FOR UPDATE SKIP LOCKED", "COMMENT ON POLICY a ON b IS 'test'", "COMMENT ON PROCEDURE a() IS 'test'", "COMMENT ON ROUTINE a() IS 'test'", "COMMENT ON TRANSFORM FOR int4 LANGUAGE sql IS 'test'", "COMMENT ON OPERATOR CLASS a USING b IS 'test'", "COMMENT ON OPERATOR FAMILY a USING b IS 'test'", "COMMENT ON LARGE OBJECT 42 IS 'test'", "COMMENT ON CAST (int4 AS int8) IS 'test'", "SELECT ROW(1 + 2)", "ALTER TABLE a ALTER COLUMN b SET DEFAULT 1", "ALTER TABLE a ALTER COLUMN b DROP DEFAULT", "SELECT (3 + 3) OPERATOR(pg_catalog.*) 2", "SELECT 3 + (3 * 2)", "SELECT LIMIT ALL", "SELECT * FROM ROWS FROM (foo() AS (foo_res_a text COLLATE a, foo_res_b text))", "CREATE DATABASE x OWNER abc CONNECTION LIMIT 5", "CREATE DATABASE x ENCODING \"SQL_ASCII\"", "CREATE DATABASE x LC_COLLATE \"en_US.UTF-8\"", "CREATE DATABASE x LOCATION DEFAULT", "CREATE DATABASE x TABLESPACE abc", "CREATE DATABASE x TEMPLATE TRUE", "ALTER DATABASE x CONNECTION LIMIT 5", "ALTER DATABASE x ALLOW_CONNECTIONS FALSE", "ALTER DATABASE x IS_TEMPLATE TRUE", "ALTER DATABASE x TABLESPACE abc", "ALTER DATABASE x SET work_mem TO \"10MB\"", "ALTER EXTENSION x UPDATE", "ALTER EXTENSION x UPDATE TO \"1.2\"", "ALTER EXTENSION x ADD ACCESS METHOD a", "ALTER EXTENSION x DROP ACCESS METHOD a", "ALTER EXTENSION x ADD AGGREGATE a(b)", "ALTER EXTENSION x ADD CAST (a AS b)", "ALTER EXTENSION x ADD COLLATION a", "ALTER EXTENSION x ADD CONVERSION a", "ALTER EXTENSION x ADD DOMAIN a", "ALTER EXTENSION x ADD FUNCTION a(b)", "ALTER EXTENSION x ADD LANGUAGE a", "ALTER EXTENSION x ADD OPERATOR ~~(a, b)", "ALTER EXTENSION x ADD OPERATOR CLASS a USING b", "ALTER EXTENSION x ADD OPERATOR FAMILY a USING b", "ALTER EXTENSION x ADD PROCEDURE a(b)", "ALTER EXTENSION x ADD ROUTINE a(b)", "ALTER EXTENSION x ADD SCHEMA a", "ALTER EXTENSION x ADD EVENT TRIGGER a", "ALTER EXTENSION x ADD TABLE a", "ALTER EXTENSION x ADD TEXT SEARCH PARSER a", "ALTER EXTENSION x ADD TEXT SEARCH DICTIONARY a", "ALTER EXTENSION x ADD TEXT SEARCH TEMPLATE a", "ALTER EXTENSION x ADD TEXT SEARCH CONFIGURATION a", "ALTER EXTENSION x ADD SEQUENCE a", "ALTER EXTENSION x ADD VIEW a", "ALTER EXTENSION x ADD MATERIALIZED VIEW a", "ALTER EXTENSION x ADD FOREIGN TABLE a", "ALTER EXTENSION x ADD FOREIGN DATA WRAPPER a", "ALTER EXTENSION x ADD SERVER a", "ALTER EXTENSION x ADD TRANSFORM FOR a LANGUAGE b", "ALTER EXTENSION x ADD TYPE a", "ALTER TABLESPACE x SET (seq_page_cost=3)", "ALTER TABLESPACE x RESET (random_page_cost)", "CREATE TABLESPACE x LOCATION 'a'", "CREATE TABLESPACE x OWNER a LOCATION 'b' WITH (random_page_cost=42, seq_page_cost=3)", "ALTER FUNCTION x(y) DEPENDS ON EXTENSION a", "ALTER FUNCTION x(y) NO DEPENDS ON EXTENSION a", "ALTER PROCEDURE x(y) DEPENDS ON EXTENSION a", "ALTER ROUTINE x(y) DEPENDS ON EXTENSION a", "ALTER TRIGGER x ON y DEPENDS ON EXTENSION a", "ALTER MATERIALIZED VIEW x DEPENDS ON EXTENSION a", "ALTER INDEX x DEPENDS ON EXTENSION a", "LOAD 'test file'", "ALTER SYSTEM SET fsync TO OFF", "ALTER SYSTEM RESET fsync", "CREATE EXTENSION x", "CREATE EXTENSION IF NOT EXISTS x CASCADE VERSION \"1.2\" SCHEMA a", "CREATE TABLE like_constraint_rename_cache (LIKE constraint_rename_cache INCLUDING ALL)", "COPY manual_export TO STDOUT WITH (FORMAT CSV, HEADER)", "SELECT 1 FROM a.b.c" }; size_t testsLength = __LINE__ - 4; libpg_query-13-2.1.0/test/fingerprint.c000066400000000000000000000015371413137616400177430ustar00rootroot00000000000000#include #include #include #include #include #include "fingerprint_tests.c" int main() { size_t i; bool ret_code = 0; for (i = 0; i < testsLength; i += 2) { PgQueryFingerprintResult result = pg_query_fingerprint(tests[i]); if (result.error) { ret_code = -1; printf("%s\n", result.error->message); pg_query_free_fingerprint_result(result); continue; } else if (strcmp(result.fingerprint_str, tests[i + 1]) == 0) { printf("."); } else { ret_code = -1; printf("INVALID result for \"%s\"\nexpected: \"%s\"\nactual: \"%s\"\nactual tokens: ", tests[i], tests[i + 1], result.fingerprint_str); pg_query_fingerprint_with_opts(tests[i], true); } pg_query_free_fingerprint_result(result); } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-13-2.1.0/test/fingerprint_tests.c000066400000000000000000041747071413137616400212030ustar00rootroot00000000000000const char* tests[] = { "SELECT 1", "50fde20626009aba", "SELECT 2", "50fde20626009aba", "SELECT ?", "50fde20626009aba", "SELECT $1", "50fde20626009aba", "SELECT 1; SELECT a FROM b", "3efa3b10d558d06d", "SELECT COUNT(DISTINCT id), * FROM targets WHERE something IS NOT NULL AND elsewhere::interval < now()", "4380dd02d56bbe1a", "INSERT INTO test (a, b) VALUES (?, ?)", "51e63b8083b48bdd", "INSERT INTO test (b, a) VALUES (?, ?)", "51e63b8083b48bdd", "INSERT INTO test (a, b) VALUES (ARRAY[?, ?, ?, ?], ?::timestamptz), (ARRAY[?, ?, ?, ?], ?::timestamptz), (?, ?::timestamptz)", "4dfdd5260cac5acf", "SELECT b AS x, a AS y FROM z", "1a8bf5d7614de3a5", "SELECT * FROM x WHERE y = ?", "4ff39426bd074231", "SELECT * FROM x WHERE y = ANY ($1)", "4ff39426bd074231", "SELECT * FROM x WHERE y IN (?)", "4ff39426bd074231", "SELECT * FROM x WHERE y IN (?, ?, ?)", "4ff39426bd074231", "SELECT * FROM x WHERE y IN ( ?::uuid )", "4ff39426bd074231", "SELECT * FROM x WHERE y IN ( ?::uuid, ?::uuid, ?::uuid )", "4ff39426bd074231", "PREPARE a123 AS SELECT a", "9b5e6ead8be993e8", "EXECUTE a123", "44ef1d2beabd53e8", "DEALLOCATE a123", "d8a65a814fbc5f95", "DEALLOCATE ALL", "d8a65a814fbc5f95", "EXPLAIN ANALYZE SELECT a", "82845c1b5c6102e5", "WITH a AS (SELECT * FROM x WHERE x.y = ? AND x.z = 1) SELECT * FROM a", "6831e38bbb3dd18c", "CREATE TABLE types (a float(2), b float(49), c NUMERIC(2, 3), d character(4), e char(5), f varchar(6), g character varying(7))", "008d6ba4aa0f4c6e", "CREATE VIEW view_a (a, b) AS WITH RECURSIVE view_a (a, b) AS (SELECT * FROM a(1)) SELECT \"a\", \"b\" FROM \"view_a\"", "6236405577a6cea6", "VACUUM FULL my_table", "fdf2f4127644f4d8", "SELECT * FROM x AS a, y AS b", "4e9acae841dae228", "SELECT * FROM y AS a, x AS b", "4e9acae841dae228", "SELECT x AS a, y AS b FROM x", "65dff5f5e9a643ad", "SELECT y AS a, x AS b FROM x", "65dff5f5e9a643ad", "SELECT x, y FROM z", "330267237da5535f", "SELECT y, x FROM z", "330267237da5535f", "INSERT INTO films (code, title, did) VALUES ('UA502', 'Bananas', 105), ('T_601', 'Yojimbo', DEFAULT)", "459fdc70778b841e", "INSERT INTO films (code, title, did) VALUES (?, ?, ?)", "459fdc70778b841e", "SELECT * FROM a", "fcf44da7b597ef43", "SELECT * FROM a AS b", "fcf44da7b597ef43", "UPDATE users SET one_thing = $1, second_thing = $2 WHERE users.id = ?", "a0ea386c1cfd1e69", "UPDATE users SET something_else = $1 WHERE users.id = ?", "3172bc3e0d631d55", "UPDATE users SET something_else = (SELECT a FROM x WHERE uid = users.id LIMIT 1) WHERE users.id = ?", "f1127a8b91fbecbf", "SAVEPOINT some_id", "8ebd566ea1bf947b", "RELEASE some_id", "60d618658252d2af", "PREPARE TRANSACTION 'some_id'", "d993959a33d627d4", "START TRANSACTION READ WRITE", "4ca25828c835d55a", "DECLARE cursor_123 CURSOR FOR SELECT * FROM test WHERE id = 123", "0119adaeb91afad0", "FETCH 1000 FROM cursor_123", "37f4d2f6a957ae48", "CLOSE cursor_123", "2c7963684fc2bad9", "-- nothing", "d8d13f8b2da6c9ad", "CREATE FOREIGN TABLE ft1 () SERVER no_server", "74481c4af7c76be1", "UPDATE x SET a = 1, b = 2, c = 3", "fd5c248c0e642ce4", "UPDATE x SET z = now()", "78fe872f5ec28674", "CREATE TEMPORARY TABLE my_temp_table (test_id integer NOT NULL) ON COMMIT DROP", "1407ed5c5bb00967", "CREATE TEMPORARY TABLE my_temp_table AS SELECT 1", "dd5fac57c3c4524c", "SELECT INTERVAL (0) $2", "50fde20626009aba", "SELECT INTERVAL (2) $2", "50fde20626009aba", "SELECT * FROM t WHERE t.a IN (1, 2) AND t.b = 3", "346aea01be9173b6", "SELECT * FROM t WHERE t.b = 3 AND t.a IN (1, 2)", "346aea01be9173b6", "SELECT * FROM t WHERE a && '[1,2]'", "673f199f13dfe665", "SELECT * FROM t WHERE a && '[1,2]'::int4range", "673f199f13dfe665", "SELECT * FROM t_20210301_x", "6f8169980cd70a25", "SELECT * FROM t_20210302_x", "6f8169980cd70a25", "SELECT * FROM t_20210302_y", "d357dac4a24fcf1b", "SELECT * FROM t_1", "018bd9230646143e", "SELECT * FROM t_2", "3f1444da570c1a66", "UPDATE tbl SET doc = jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(jsonb_set(doc, ARRAY[$1], $2, $3), ARRAY[$4], $5, $6), ARRAY[$7], $8, $9), ARRAY[$10], $11, $12), ARRAY[$13], $14, $15), ARRAY[$16], $17, $18), ARRAY[$19], $20, $21), ARRAY[$22], $23, $24), ARRAY[$25], $26, $27), ARRAY[$28], $29, $30), ARRAY[$31], $32, $33), ARRAY[$34], $35, $36), ARRAY[$37], $38, $39), ARRAY[$40], $41, $42), ARRAY[$43], $44, $45), ARRAY[$46], $47, $48), ARRAY[$49], $50, $51), ARRAY[$52], $53, $54), ARRAY[$55], $56, $57), ARRAY[$58], $59, $60), ARRAY[$61], $62, $63), ARRAY[$64], $65, $66), ARRAY[$67], $68, $69), ARRAY[$70], $71, $72), ARRAY[$73], $74, $75), ARRAY[$76], $77, $78), ARRAY[$79], $80, $81), ARRAY[$82], $83, $84), ARRAY[$85], $86, $87), ARRAY[$88], $89, $90), ARRAY[$91], $92, $93), ARRAY[$94], $95, $96), ARRAY[$97], $98, $99), ARRAY[$100], $101, $102), ARRAY[$103], $104, $105), ARRAY[$106], $107, $108)", "dc495a2ae9f367bf", "INSERT INTO tbl VALUES (nextval($1),$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14),(nextval($15),$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28),(nextval($29),$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42),(nextval($43),$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56),(nextval($57),$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$70),(nextval($71),$72,$73,$74,$75,$76,$77,$78,$79,$80,$81,$82,$83,$84),(nextval($85),$86,$87,$88,$89,$90,$91,$92,$93,$94,$95,$96,$97,$98),(nextval($99),$100,$101,$102,$103,$104,$105,$106,$107,$108,$109,$110,$111,$112),(nextval($113),$114,$115,$116,$117,$118,$119,$120,$121,$122,$123,$124,$125,$126),(nextval($127),$128,$129,$130,$131,$132,$133,$134,$135,$136,$137,$138,$139,$140),(nextval($141),$142,$143,$144,$145,$146,$147,$148,$149,$150,$151,$152,$153,$154),(nextval($155),$156,$157,$158,$159,$160,$161,$162,$163,$164,$165,$166,$167,$168),(nextval($169),$170,$171,$172,$173,$174,$175,$176,$177,$178,$179,$180,$181,$182),(nextval($183),$184,$185,$186,$187,$188,$189,$190,$191,$192,$193,$194,$195,$196),(nextval($197),$198,$199,$200,$201,$202,$203,$204,$205,$206,$207,$208,$209,$210),(nextval($211),$212,$213,$214,$215,$216,$217,$218,$219,$220,$221,$222,$223,$224),(nextval($225),$226,$227,$228,$229,$230,$231,$232,$233,$234,$235,$236,$237,$238),(nextval($239),$240,$241,$242,$243,$244,$245,$246,$247,$248,$249,$250,$251,$252),(nextval($253),$254,$255,$256,$257,$258,$259,$260,$261,$262,$263,$264,$265,$266),(nextval($267),$268,$269,$270,$271,$272,$273,$274,$275,$276,$277,$278,$279,$280),(nextval($281),$282,$283,$284,$285,$286,$287,$288,$289,$290,$291,$292,$293,$294),(nextval($295),$296,$297,$298,$299,$300,$301,$302,$303,$304,$305,$306,$307,$308),(nextval($309),$310,$311,$312,$313,$314,$315,$316,$317,$318,$319,$320,$321,$322),(nextval($323),$324,$325,$326,$327,$328,$329,$330,$331,$332,$333,$334,$335,$336),(nextval($337),$338,$339,$340,$341,$342,$343,$344,$345,$346,$347,$348,$349,$350),(nextval($351),$352,$353,$354,$355,$356,$357,$358,$359,$360,$361,$362,$363,$364),(nextval($365),$366,$367,$368,$369,$370,$371,$372,$373,$374,$375,$376,$377,$378),(nextval($379),$380,$381,$382,$383,$384,$385,$386,$387,$388,$389,$390,$391,$392),(nextval($393),$394,$395,$396,$397,$398,$399,$400,$401,$402,$403,$404,$405,$406),(nextval($407),$408,$409,$410,$411,$412,$413,$414,$415,$416,$417,$418,$419,$420),(nextval($421),$422,$423,$424,$425,$426,$427,$428,$429,$430,$431,$432,$433,$434),(nextval($435),$436,$437,$438,$439,$440,$441,$442,$443,$444,$445,$446,$447,$448),(nextval($449),$450,$451,$452,$453,$454,$455,$456,$457,$458,$459,$460,$461,$462),(nextval($463),$464,$465,$466,$467,$468,$469,$470,$471,$472,$473,$474,$475,$476),(nextval($477),$478,$479,$480,$481,$482,$483,$484,$485,$486,$487,$488,$489,$490),(nextval($491),$492,$493,$494,$495,$496,$497,$498,$499,$500,$501,$502,$503,$504),(nextval($505),$506,$507,$508,$509,$510,$511,$512,$513,$514,$515,$516,$517,$518),(nextval($519),$520,$521,$522,$523,$524,$525,$526,$527,$528,$529,$530,$531,$532),(nextval($533),$534,$535,$536,$537,$538,$539,$540,$541,$542,$543,$544,$545,$546),(nextval($547),$548,$549,$550,$551,$552,$553,$554,$555,$556,$557,$558,$559,$560),(nextval($561),$562,$563,$564,$565,$566,$567,$568,$569,$570,$571,$572,$573,$574),(nextval($575),$576,$577,$578,$579,$580,$581,$582,$583,$584,$585,$586,$587,$588),(nextval($589),$590,$591,$592,$593,$594,$595,$596,$597,$598,$599,$600,$601,$602),(nextval($603),$604,$605,$606,$607,$608,$609,$610,$611,$612,$613,$614,$615,$616),(nextval($617),$618,$619,$620,$621,$622,$623,$624,$625,$626,$627,$628,$629,$630),(nextval($631),$632,$633,$634,$635,$636,$637,$638,$639,$640,$641,$642,$643,$644),(nextval($645),$646,$647,$648,$649,$650,$651,$652,$653,$654,$655,$656,$657,$658),(nextval($659),$660,$661,$662,$663,$664,$665,$666,$667,$668,$669,$670,$671,$672),(nextval($673),$674,$675,$676,$677,$678,$679,$680,$681,$682,$683,$684,$685,$686),(nextval($687),$688,$689,$690,$691,$692,$693,$694,$695,$696,$697,$698,$699,$700),(nextval($701),$702,$703,$704,$705,$706,$707,$708,$709,$710,$711,$712,$713,$714),(nextval($715),$716,$717,$718,$719,$720,$721,$722,$723,$724,$725,$726,$727,$728),(nextval($729),$730,$731,$732,$733,$734,$735,$736,$737,$738,$739,$740,$741,$742),(nextval($743),$744,$745,$746,$747,$748,$749,$750,$751,$752,$753,$754,$755,$756),(nextval($757),$758,$759,$760,$761,$762,$763,$764,$765,$766,$767,$768,$769,$770),(nextval($771),$772,$773,$774,$775,$776,$777,$778,$779,$780,$781,$782,$783,$784),(nextval($785),$786,$787,$788,$789,$790,$791,$792,$793,$794,$795,$796,$797,$798),(nextval($799),$800,$801,$802,$803,$804,$805,$806,$807,$808,$809,$810,$811,$812),(nextval($813),$814,$815,$816,$817,$818,$819,$820,$821,$822,$823,$824,$825,$826),(nextval($827),$828,$829,$830,$831,$832,$833,$834,$835,$836,$837,$838,$839,$840),(nextval($841),$842,$843,$844,$845,$846,$847,$848,$849,$850,$851,$852,$853,$854),(nextval($855),$856,$857,$858,$859,$860,$861,$862,$863,$864,$865,$866,$867,$868),(nextval($869),$870,$871,$872,$873,$874,$875,$876,$877,$878,$879,$880,$881,$882),(nextval($883),$884,$885,$886,$887,$888,$889,$890,$891,$892,$893,$894,$895,$896),(nextval($897),$898,$899,$900,$901,$902,$903,$904,$905,$906,$907,$908,$909,$910),(nextval($911),$912,$913,$914,$915,$916,$917,$918,$919,$920,$921,$922,$923,$924),(nextval($925),$926,$927,$928,$929,$930,$931,$932,$933,$934,$935,$936,$937,$938),(nextval($939),$940,$941,$942,$943,$944,$945,$946,$947,$948,$949,$950,$951,$952),(nextval($953),$954,$955,$956,$957,$958,$959,$960,$961,$962,$963,$964,$965,$966),(nextval($967),$968,$969,$970,$971,$972,$973,$974,$975,$976,$977,$978,$979,$980),(nextval($981),$982,$983,$984,$985,$986,$987,$988,$989,$990,$991,$992,$993,$994),(nextval($995),$996,$997,$998,$999,$1000,$1001,$1002,$1003,$1004,$1005,$1006,$1007,$1008),(nextval($1009),$1010,$1011,$1012,$1013,$1014,$1015,$1016,$1017,$1018,$1019,$1020,$1021,$1022),(nextval($1023),$1024,$1025,$1026,$1027,$1028,$1029,$1030,$1031,$1032,$1033,$1034,$1035,$1036),(nextval($1037),$1038,$1039,$1040,$1041,$1042,$1043,$1044,$1045,$1046,$1047,$1048,$1049,$1050),(nextval($1051),$1052,$1053,$1054,$1055,$1056,$1057,$1058,$1059,$1060,$1061,$1062,$1063,$1064),(nextval($1065),$1066,$1067,$1068,$1069,$1070,$1071,$1072,$1073,$1074,$1075,$1076,$1077,$1078),(nextval($1079),$1080,$1081,$1082,$1083,$1084,$1085,$1086,$1087,$1088,$1089,$1090,$1091,$1092),(nextval($1093),$1094,$1095,$1096,$1097,$1098,$1099,$1100,$1101,$1102,$1103,$1104,$1105,$1106),(nextval($1107),$1108,$1109,$1110,$1111,$1112,$1113,$1114,$1115,$1116,$1117,$1118,$1119,$1120),(nextval($1121),$1122,$1123,$1124,$1125,$1126,$1127,$1128,$1129,$1130,$1131,$1132,$1133,$1134),(nextval($1135),$1136,$1137,$1138,$1139,$1140,$1141,$1142,$1143,$1144,$1145,$1146,$1147,$1148),(nextval($1149),$1150,$1151,$1152,$1153,$1154,$1155,$1156,$1157,$1158,$1159,$1160,$1161,$1162),(nextval($1163),$1164,$1165,$1166,$1167,$1168,$1169,$1170,$1171,$1172,$1173,$1174,$1175,$1176),(nextval($1177),$1178,$1179,$1180,$1181,$1182,$1183,$1184,$1185,$1186,$1187,$1188,$1189,$1190),(nextval($1191),$1192,$1193,$1194,$1195,$1196,$1197,$1198,$1199,$1200,$1201,$1202,$1203,$1204),(nextval($1205),$1206,$1207,$1208,$1209,$1210,$1211,$1212,$1213,$1214,$1215,$1216,$1217,$1218),(nextval($1219),$1220,$1221,$1222,$1223,$1224,$1225,$1226,$1227,$1228,$1229,$1230,$1231,$1232),(nextval($1233),$1234,$1235,$1236,$1237,$1238,$1239,$1240,$1241,$1242,$1243,$1244,$1245,$1246),(nextval($1247),$1248,$1249,$1250,$1251,$1252,$1253,$1254,$1255,$1256,$1257,$1258,$1259,$1260),(nextval($1261),$1262,$1263,$1264,$1265,$1266,$1267,$1268,$1269,$1270,$1271,$1272,$1273,$1274),(nextval($1275),$1276,$1277,$1278,$1279,$1280,$1281,$1282,$1283,$1284,$1285,$1286,$1287,$1288),(nextval($1289),$1290,$1291,$1292,$1293,$1294,$1295,$1296,$1297,$1298,$1299,$1300,$1301,$1302),(nextval($1303),$1304,$1305,$1306,$1307,$1308,$1309,$1310,$1311,$1312,$1313,$1314,$1315,$1316),(nextval($1317),$1318,$1319,$1320,$1321,$1322,$1323,$1324,$1325,$1326,$1327,$1328,$1329,$1330),(nextval($1331),$1332,$1333,$1334,$1335,$1336,$1337,$1338,$1339,$1340,$1341,$1342,$1343,$1344),(nextval($1345),$1346,$1347,$1348,$1349,$1350,$1351,$1352,$1353,$1354,$1355,$1356,$1357,$1358),(nextval($1359),$1360,$1361,$1362,$1363,$1364,$1365,$1366,$1367,$1368,$1369,$1370,$1371,$1372),(nextval($1373),$1374,$1375,$1376,$1377,$1378,$1379,$1380,$1381,$1382,$1383,$1384,$1385,$1386),(nextval($1387),$1388,$1389,$1390,$1391,$1392,$1393,$1394,$1395,$1396,$1397,$1398,$1399,$1400),(nextval($1401),$1402,$1403,$1404,$1405,$1406,$1407,$1408,$1409,$1410,$1411,$1412,$1413,$1414),(nextval($1415),$1416,$1417,$1418,$1419,$1420,$1421,$1422,$1423,$1424,$1425,$1426,$1427,$1428),(nextval($1429),$1430,$1431,$1432,$1433,$1434,$1435,$1436,$1437,$1438,$1439,$1440,$1441,$1442),(nextval($1443),$1444,$1445,$1446,$1447,$1448,$1449,$1450,$1451,$1452,$1453,$1454,$1455,$1456),(nextval($1457),$1458,$1459,$1460,$1461,$1462,$1463,$1464,$1465,$1466,$1467,$1468,$1469,$1470),(nextval($1471),$1472,$1473,$1474,$1475,$1476,$1477,$1478,$1479,$1480,$1481,$1482,$1483,$1484),(nextval($1485),$1486,$1487,$1488,$1489,$1490,$1491,$1492,$1493,$1494,$1495,$1496,$1497,$1498),(nextval($1499),$1500,$1501,$1502,$1503,$1504,$1505,$1506,$1507,$1508,$1509,$1510,$1511,$1512),(nextval($1513),$1514,$1515,$1516,$1517,$1518,$1519,$1520,$1521,$1522,$1523,$1524,$1525,$1526),(nextval($1527),$1528,$1529,$1530,$1531,$1532,$1533,$1534,$1535,$1536,$1537,$1538,$1539,$1540),(nextval($1541),$1542,$1543,$1544,$1545,$1546,$1547,$1548,$1549,$1550,$1551,$1552,$1553,$1554),(nextval($1555),$1556,$1557,$1558,$1559,$1560,$1561,$1562,$1563,$1564,$1565,$1566,$1567,$1568),(nextval($1569),$1570,$1571,$1572,$1573,$1574,$1575,$1576,$1577,$1578,$1579,$1580,$1581,$1582),(nextval($1583),$1584,$1585,$1586,$1587,$1588,$1589,$1590,$1591,$1592,$1593,$1594,$1595,$1596),(nextval($1597),$1598,$1599,$1600,$1601,$1602,$1603,$1604,$1605,$1606,$1607,$1608,$1609,$1610),(nextval($1611),$1612,$1613,$1614,$1615,$1616,$1617,$1618,$1619,$1620,$1621,$1622,$1623,$1624),(nextval($1625),$1626,$1627,$1628,$1629,$1630,$1631,$1632,$1633,$1634,$1635,$1636,$1637,$1638),(nextval($1639),$1640,$1641,$1642,$1643,$1644,$1645,$1646,$1647,$1648,$1649,$1650,$1651,$1652),(nextval($1653),$1654,$1655,$1656,$1657,$1658,$1659,$1660,$1661,$1662,$1663,$1664,$1665,$1666),(nextval($1667),$1668,$1669,$1670,$1671,$1672,$1673,$1674,$1675,$1676,$1677,$1678,$1679,$1680),(nextval($1681),$1682,$1683,$1684,$1685,$1686,$1687,$1688,$1689,$1690,$1691,$1692,$1693,$1694),(nextval($1695),$1696,$1697,$1698,$1699,$1700,$1701,$1702,$1703,$1704,$1705,$1706,$1707,$1708),(nextval($1709),$1710,$1711,$1712,$1713,$1714,$1715,$1716,$1717,$1718,$1719,$1720,$1721,$1722),(nextval($1723),$1724,$1725,$1726,$1727,$1728,$1729,$1730,$1731,$1732,$1733,$1734,$1735,$1736),(nextval($1737),$1738,$1739,$1740,$1741,$1742,$1743,$1744,$1745,$1746,$1747,$1748,$1749,$1750),(nextval($1751),$1752,$1753,$1754,$1755,$1756,$1757,$1758,$1759,$1760,$1761,$1762,$1763,$1764),(nextval($1765),$1766,$1767,$1768,$1769,$1770,$1771,$1772,$1773,$1774,$1775,$1776,$1777,$1778),(nextval($1779),$1780,$1781,$1782,$1783,$1784,$1785,$1786,$1787,$1788,$1789,$1790,$1791,$1792),(nextval($1793),$1794,$1795,$1796,$1797,$1798,$1799,$1800,$1801,$1802,$1803,$1804,$1805,$1806),(nextval($1807),$1808,$1809,$1810,$1811,$1812,$1813,$1814,$1815,$1816,$1817,$1818,$1819,$1820),(nextval($1821),$1822,$1823,$1824,$1825,$1826,$1827,$1828,$1829,$1830,$1831,$1832,$1833,$1834),(nextval($1835),$1836,$1837,$1838,$1839,$1840,$1841,$1842,$1843,$1844,$1845,$1846,$1847,$1848),(nextval($1849),$1850,$1851,$1852,$1853,$1854,$1855,$1856,$1857,$1858,$1859,$1860,$1861,$1862),(nextval($1863),$1864,$1865,$1866,$1867,$1868,$1869,$1870,$1871,$1872,$1873,$1874,$1875,$1876),(nextval($1877),$1878,$1879,$1880,$1881,$1882,$1883,$1884,$1885,$1886,$1887,$1888,$1889,$1890),(nextval($1891),$1892,$1893,$1894,$1895,$1896,$1897,$1898,$1899,$1900,$1901,$1902,$1903,$1904),(nextval($1905),$1906,$1907,$1908,$1909,$1910,$1911,$1912,$1913,$1914,$1915,$1916,$1917,$1918),(nextval($1919),$1920,$1921,$1922,$1923,$1924,$1925,$1926,$1927,$1928,$1929,$1930,$1931,$1932),(nextval($1933),$1934,$1935,$1936,$1937,$1938,$1939,$1940,$1941,$1942,$1943,$1944,$1945,$1946),(nextval($1947),$1948,$1949,$1950,$1951,$1952,$1953,$1954,$1955,$1956,$1957,$1958,$1959,$1960),(nextval($1961),$1962,$1963,$1964,$1965,$1966,$1967,$1968,$1969,$1970,$1971,$1972,$1973,$1974),(nextval($1975),$1976,$1977,$1978,$1979,$1980,$1981,$1982,$1983,$1984,$1985,$1986,$1987,$1988),(nextval($1989),$1990,$1991,$1992,$1993,$1994,$1995,$1996,$1997,$1998,$1999,$2000,$2001,$2002),(nextval($2003),$2004,$2005,$2006,$2007,$2008,$2009,$2010,$2011,$2012,$2013,$2014,$2015,$2016),(nextval($2017),$2018,$2019,$2020,$2021,$2022,$2023,$2024,$2025,$2026,$2027,$2028,$2029,$2030),(nextval($2031),$2032,$2033,$2034,$2035,$2036,$2037,$2038,$2039,$2040,$2041,$2042,$2043,$2044),(nextval($2045),$2046,$2047,$2048,$2049,$2050,$2051,$2052,$2053,$2054,$2055,$2056,$2057,$2058),(nextval($2059),$2060,$2061,$2062,$2063,$2064,$2065,$2066,$2067,$2068,$2069,$2070,$2071,$2072),(nextval($2073),$2074,$2075,$2076,$2077,$2078,$2079,$2080,$2081,$2082,$2083,$2084,$2085,$2086),(nextval($2087),$2088,$2089,$2090,$2091,$2092,$2093,$2094,$2095,$2096,$2097,$2098,$2099,$2100),(nextval($2101),$2102,$2103,$2104,$2105,$2106,$2107,$2108,$2109,$2110,$2111,$2112,$2113,$2114),(nextval($2115),$2116,$2117,$2118,$2119,$2120,$2121,$2122,$2123,$2124,$2125,$2126,$2127,$2128),(nextval($2129),$2130,$2131,$2132,$2133,$2134,$2135,$2136,$2137,$2138,$2139,$2140,$2141,$2142),(nextval($2143),$2144,$2145,$2146,$2147,$2148,$2149,$2150,$2151,$2152,$2153,$2154,$2155,$2156),(nextval($2157),$2158,$2159,$2160,$2161,$2162,$2163,$2164,$2165,$2166,$2167,$2168,$2169,$2170),(nextval($2171),$2172,$2173,$2174,$2175,$2176,$2177,$2178,$2179,$2180,$2181,$2182,$2183,$2184),(nextval($2185),$2186,$2187,$2188,$2189,$2190,$2191,$2192,$2193,$2194,$2195,$2196,$2197,$2198),(nextval($2199),$2200,$2201,$2202,$2203,$2204,$2205,$2206,$2207,$2208,$2209,$2210,$2211,$2212),(nextval($2213),$2214,$2215,$2216,$2217,$2218,$2219,$2220,$2221,$2222,$2223,$2224,$2225,$2226),(nextval($2227),$2228,$2229,$2230,$2231,$2232,$2233,$2234,$2235,$2236,$2237,$2238,$2239,$2240),(nextval($2241),$2242,$2243,$2244,$2245,$2246,$2247,$2248,$2249,$2250,$2251,$2252,$2253,$2254),(nextval($2255),$2256,$2257,$2258,$2259,$2260,$2261,$2262,$2263,$2264,$2265,$2266,$2267,$2268),(nextval($2269),$2270,$2271,$2272,$2273,$2274,$2275,$2276,$2277,$2278,$2279,$2280,$2281,$2282),(nextval($2283),$2284,$2285,$2286,$2287,$2288,$2289,$2290,$2291,$2292,$2293,$2294,$2295,$2296),(nextval($2297),$2298,$2299,$2300,$2301,$2302,$2303,$2304,$2305,$2306,$2307,$2308,$2309,$2310),(nextval($2311),$2312,$2313,$2314,$2315,$2316,$2317,$2318,$2319,$2320,$2321,$2322,$2323,$2324),(nextval($2325),$2326,$2327,$2328,$2329,$2330,$2331,$2332,$2333,$2334,$2335,$2336,$2337,$2338),(nextval($2339),$2340,$2341,$2342,$2343,$2344,$2345,$2346,$2347,$2348,$2349,$2350,$2351,$2352),(nextval($2353),$2354,$2355,$2356,$2357,$2358,$2359,$2360,$2361,$2362,$2363,$2364,$2365,$2366),(nextval($2367),$2368,$2369,$2370,$2371,$2372,$2373,$2374,$2375,$2376,$2377,$2378,$2379,$2380),(nextval($2381),$2382,$2383,$2384,$2385,$2386,$2387,$2388,$2389,$2390,$2391,$2392,$2393,$2394),(nextval($2395),$2396,$2397,$2398,$2399,$2400,$2401,$2402,$2403,$2404,$2405,$2406,$2407,$2408),(nextval($2409),$2410,$2411,$2412,$2413,$2414,$2415,$2416,$2417,$2418,$2419,$2420,$2421,$2422),(nextval($2423),$2424,$2425,$2426,$2427,$2428,$2429,$2430,$2431,$2432,$2433,$2434,$2435,$2436),(nextval($2437),$2438,$2439,$2440,$2441,$2442,$2443,$2444,$2445,$2446,$2447,$2448,$2449,$2450),(nextval($2451),$2452,$2453,$2454,$2455,$2456,$2457,$2458,$2459,$2460,$2461,$2462,$2463,$2464),(nextval($2465),$2466,$2467,$2468,$2469,$2470,$2471,$2472,$2473,$2474,$2475,$2476,$2477,$2478),(nextval($2479),$2480,$2481,$2482,$2483,$2484,$2485,$2486,$2487,$2488,$2489,$2490,$2491,$2492),(nextval($2493),$2494,$2495,$2496,$2497,$2498,$2499,$2500,$2501,$2502,$2503,$2504,$2505,$2506),(nextval($2507),$2508,$2509,$2510,$2511,$2512,$2513,$2514,$2515,$2516,$2517,$2518,$2519,$2520),(nextval($2521),$2522,$2523,$2524,$2525,$2526,$2527,$2528,$2529,$2530,$2531,$2532,$2533,$2534),(nextval($2535),$2536,$2537,$2538,$2539,$2540,$2541,$2542,$2543,$2544,$2545,$2546,$2547,$2548),(nextval($2549),$2550,$2551,$2552,$2553,$2554,$2555,$2556,$2557,$2558,$2559,$2560,$2561,$2562),(nextval($2563),$2564,$2565,$2566,$2567,$2568,$2569,$2570,$2571,$2572,$2573,$2574,$2575,$2576),(nextval($2577),$2578,$2579,$2580,$2581,$2582,$2583,$2584,$2585,$2586,$2587,$2588,$2589,$2590),(nextval($2591),$2592,$2593,$2594,$2595,$2596,$2597,$2598,$2599,$2600,$2601,$2602,$2603,$2604),(nextval($2605),$2606,$2607,$2608,$2609,$2610,$2611,$2612,$2613,$2614,$2615,$2616,$2617,$2618),(nextval($2619),$2620,$2621,$2622,$2623,$2624,$2625,$2626,$2627,$2628,$2629,$2630,$2631,$2632),(nextval($2633),$2634,$2635,$2636,$2637,$2638,$2639,$2640,$2641,$2642,$2643,$2644,$2645,$2646),(nextval($2647),$2648,$2649,$2650,$2651,$2652,$2653,$2654,$2655,$2656,$2657,$2658,$2659,$2660),(nextval($2661),$2662,$2663,$2664,$2665,$2666,$2667,$2668,$2669,$2670,$2671,$2672,$2673,$2674),(nextval($2675),$2676,$2677,$2678,$2679,$2680,$2681,$2682,$2683,$2684,$2685,$2686,$2687,$2688),(nextval($2689),$2690,$2691,$2692,$2693,$2694,$2695,$2696,$2697,$2698,$2699,$2700,$2701,$2702),(nextval($2703),$2704,$2705,$2706,$2707,$2708,$2709,$2710,$2711,$2712,$2713,$2714,$2715,$2716),(nextval($2717),$2718,$2719,$2720,$2721,$2722,$2723,$2724,$2725,$2726,$2727,$2728,$2729,$2730),(nextval($2731),$2732,$2733,$2734,$2735,$2736,$2737,$2738,$2739,$2740,$2741,$2742,$2743,$2744),(nextval($2745),$2746,$2747,$2748,$2749,$2750,$2751,$2752,$2753,$2754,$2755,$2756,$2757,$2758),(nextval($2759),$2760,$2761,$2762,$2763,$2764,$2765,$2766,$2767,$2768,$2769,$2770,$2771,$2772),(nextval($2773),$2774,$2775,$2776,$2777,$2778,$2779,$2780,$2781,$2782,$2783,$2784,$2785,$2786),(nextval($2787),$2788,$2789,$2790,$2791,$2792,$2793,$2794,$2795,$2796,$2797,$2798,$2799,$2800),(nextval($2801),$2802,$2803,$2804,$2805,$2806,$2807,$2808,$2809,$2810,$2811,$2812,$2813,$2814),(nextval($2815),$2816,$2817,$2818,$2819,$2820,$2821,$2822,$2823,$2824,$2825,$2826,$2827,$2828),(nextval($2829),$2830,$2831,$2832,$2833,$2834,$2835,$2836,$2837,$2838,$2839,$2840,$2841,$2842),(nextval($2843),$2844,$2845,$2846,$2847,$2848,$2849,$2850,$2851,$2852,$2853,$2854,$2855,$2856),(nextval($2857),$2858,$2859,$2860,$2861,$2862,$2863,$2864,$2865,$2866,$2867,$2868,$2869,$2870),(nextval($2871),$2872,$2873,$2874,$2875,$2876,$2877,$2878,$2879,$2880,$2881,$2882,$2883,$2884),(nextval($2885),$2886,$2887,$2888,$2889,$2890,$2891,$2892,$2893,$2894,$2895,$2896,$2897,$2898),(nextval($2899),$2900,$2901,$2902,$2903,$2904,$2905,$2906,$2907,$2908,$2909,$2910,$2911,$2912),(nextval($2913),$2914,$2915,$2916,$2917,$2918,$2919,$2920,$2921,$2922,$2923,$2924,$2925,$2926),(nextval($2927),$2928,$2929,$2930,$2931,$2932,$2933,$2934,$2935,$2936,$2937,$2938,$2939,$2940),(nextval($2941),$2942,$2943,$2944,$2945,$2946,$2947,$2948,$2949,$2950,$2951,$2952,$2953,$2954),(nextval($2955),$2956,$2957,$2958,$2959,$2960,$2961,$2962,$2963,$2964,$2965,$2966,$2967,$2968),(nextval($2969),$2970,$2971,$2972,$2973,$2974,$2975,$2976,$2977,$2978,$2979,$2980,$2981,$2982),(nextval($2983),$2984,$2985,$2986,$2987,$2988,$2989,$2990,$2991,$2992,$2993,$2994,$2995,$2996),(nextval($2997),$2998,$2999,$3000,$3001,$3002,$3003,$3004,$3005,$3006,$3007,$3008,$3009,$3010),(nextval($3011),$3012,$3013,$3014,$3015,$3016,$3017,$3018,$3019,$3020,$3021,$3022,$3023,$3024),(nextval($3025),$3026,$3027,$3028,$3029,$3030,$3031,$3032,$3033,$3034,$3035,$3036,$3037,$3038),(nextval($3039),$3040,$3041,$3042,$3043,$3044,$3045,$3046,$3047,$3048,$3049,$3050,$3051,$3052),(nextval($3053),$3054,$3055,$3056,$3057,$3058,$3059,$3060,$3061,$3062,$3063,$3064,$3065,$3066),(nextval($3067),$3068,$3069,$3070,$3071,$3072,$3073,$3074,$3075,$3076,$3077,$3078,$3079,$3080),(nextval($3081),$3082,$3083,$3084,$3085,$3086,$3087,$3088,$3089,$3090,$3091,$3092,$3093,$3094),(nextval($3095),$3096,$3097,$3098,$3099,$3100,$3101,$3102,$3103,$3104,$3105,$3106,$3107,$3108),(nextval($3109),$3110,$3111,$3112,$3113,$3114,$3115,$3116,$3117,$3118,$3119,$3120,$3121,$3122),(nextval($3123),$3124,$3125,$3126,$3127,$3128,$3129,$3130,$3131,$3132,$3133,$3134,$3135,$3136),(nextval($3137),$3138,$3139,$3140,$3141,$3142,$3143,$3144,$3145,$3146,$3147,$3148,$3149,$3150),(nextval($3151),$3152,$3153,$3154,$3155,$3156,$3157,$3158,$3159,$3160,$3161,$3162,$3163,$3164),(nextval($3165),$3166,$3167,$3168,$3169,$3170,$3171,$3172,$3173,$3174,$3175,$3176,$3177,$3178),(nextval($3179),$3180,$3181,$3182,$3183,$3184,$3185,$3186,$3187,$3188,$3189,$3190,$3191,$3192),(nextval($3193),$3194,$3195,$3196,$3197,$3198,$3199,$3200,$3201,$3202,$3203,$3204,$3205,$3206),(nextval($3207),$3208,$3209,$3210,$3211,$3212,$3213,$3214,$3215,$3216,$3217,$3218,$3219,$3220),(nextval($3221),$3222,$3223,$3224,$3225,$3226,$3227,$3228,$3229,$3230,$3231,$3232,$3233,$3234),(nextval($3235),$3236,$3237,$3238,$3239,$3240,$3241,$3242,$3243,$3244,$3245,$3246,$3247,$3248),(nextval($3249),$3250,$3251,$3252,$3253,$3254,$3255,$3256,$3257,$3258,$3259,$3260,$3261,$3262),(nextval($3263),$3264,$3265,$3266,$3267,$3268,$3269,$3270,$3271,$3272,$3273,$3274,$3275,$3276),(nextval($3277),$3278,$3279,$3280,$3281,$3282,$3283,$3284,$3285,$3286,$3287,$3288,$3289,$3290),(nextval($3291),$3292,$3293,$3294,$3295,$3296,$3297,$3298,$3299,$3300,$3301,$3302,$3303,$3304),(nextval($3305),$3306,$3307,$3308,$3309,$3310,$3311,$3312,$3313,$3314,$3315,$3316,$3317,$3318),(nextval($3319),$3320,$3321,$3322,$3323,$3324,$3325,$3326,$3327,$3328,$3329,$3330,$3331,$3332),(nextval($3333),$3334,$3335,$3336,$3337,$3338,$3339,$3340,$3341,$3342,$3343,$3344,$3345,$3346),(nextval($3347),$3348,$3349,$3350,$3351,$3352,$3353,$3354,$3355,$3356,$3357,$3358,$3359,$3360),(nextval($3361),$3362,$3363,$3364,$3365,$3366,$3367,$3368,$3369,$3370,$3371,$3372,$3373,$3374),(nextval($3375),$3376,$3377,$3378,$3379,$3380,$3381,$3382,$3383,$3384,$3385,$3386,$3387,$3388),(nextval($3389),$3390,$3391,$3392,$3393,$3394,$3395,$3396,$3397,$3398,$3399,$3400,$3401,$3402),(nextval($3403),$3404,$3405,$3406,$3407,$3408,$3409,$3410,$3411,$3412,$3413,$3414,$3415,$3416),(nextval($3417),$3418,$3419,$3420,$3421,$3422,$3423,$3424,$3425,$3426,$3427,$3428,$3429,$3430),(nextval($3431),$3432,$3433,$3434,$3435,$3436,$3437,$3438,$3439,$3440,$3441,$3442,$3443,$3444),(nextval($3445),$3446,$3447,$3448,$3449,$3450,$3451,$3452,$3453,$3454,$3455,$3456,$3457,$3458),(nextval($3459),$3460,$3461,$3462,$3463,$3464,$3465,$3466,$3467,$3468,$3469,$3470,$3471,$3472),(nextval($3473),$3474,$3475,$3476,$3477,$3478,$3479,$3480,$3481,$3482,$3483,$3484,$3485,$3486),(nextval($3487),$3488,$3489,$3490,$3491,$3492,$3493,$3494,$3495,$3496,$3497,$3498,$3499,$3500),(nextval($3501),$3502,$3503,$3504,$3505,$3506,$3507,$3508,$3509,$3510,$3511,$3512,$3513,$3514),(nextval($3515),$3516,$3517,$3518,$3519,$3520,$3521,$3522,$3523,$3524,$3525,$3526,$3527,$3528),(nextval($3529),$3530,$3531,$3532,$3533,$3534,$3535,$3536,$3537,$3538,$3539,$3540,$3541,$3542),(nextval($3543),$3544,$3545,$3546,$3547,$3548,$3549,$3550,$3551,$3552,$3553,$3554,$3555,$3556),(nextval($3557),$3558,$3559,$3560,$3561,$3562,$3563,$3564,$3565,$3566,$3567,$3568,$3569,$3570),(nextval($3571),$3572,$3573,$3574,$3575,$3576,$3577,$3578,$3579,$3580,$3581,$3582,$3583,$3584),(nextval($3585),$3586,$3587,$3588,$3589,$3590,$3591,$3592,$3593,$3594,$3595,$3596,$3597,$3598),(nextval($3599),$3600,$3601,$3602,$3603,$3604,$3605,$3606,$3607,$3608,$3609,$3610,$3611,$3612),(nextval($3613),$3614,$3615,$3616,$3617,$3618,$3619,$3620,$3621,$3622,$3623,$3624,$3625,$3626),(nextval($3627),$3628,$3629,$3630,$3631,$3632,$3633,$3634,$3635,$3636,$3637,$3638,$3639,$3640),(nextval($3641),$3642,$3643,$3644,$3645,$3646,$3647,$3648,$3649,$3650,$3651,$3652,$3653,$3654),(nextval($3655),$3656,$3657,$3658,$3659,$3660,$3661,$3662,$3663,$3664,$3665,$3666,$3667,$3668),(nextval($3669),$3670,$3671,$3672,$3673,$3674,$3675,$3676,$3677,$3678,$3679,$3680,$3681,$3682),(nextval($3683),$3684,$3685,$3686,$3687,$3688,$3689,$3690,$3691,$3692,$3693,$3694,$3695,$3696),(nextval($3697),$3698,$3699,$3700,$3701,$3702,$3703,$3704,$3705,$3706,$3707,$3708,$3709,$3710),(nextval($3711),$3712,$3713,$3714,$3715,$3716,$3717,$3718,$3719,$3720,$3721,$3722,$3723,$3724),(nextval($3725),$3726,$3727,$3728,$3729,$3730,$3731,$3732,$3733,$3734,$3735,$3736,$3737,$3738),(nextval($3739),$3740,$3741,$3742,$3743,$3744,$3745,$3746,$3747,$3748,$3749,$3750,$3751,$3752),(nextval($3753),$3754,$3755,$3756,$3757,$3758,$3759,$3760,$3761,$3762,$3763,$3764,$3765,$3766),(nextval($3767),$3768,$3769,$3770,$3771,$3772,$3773,$3774,$3775,$3776,$3777,$3778,$3779,$3780),(nextval($3781),$3782,$3783,$3784,$3785,$3786,$3787,$3788,$3789,$3790,$3791,$3792,$3793,$3794),(nextval($3795),$3796,$3797,$3798,$3799,$3800,$3801,$3802,$3803,$3804,$3805,$3806,$3807,$3808),(nextval($3809),$3810,$3811,$3812,$3813,$3814,$3815,$3816,$3817,$3818,$3819,$3820,$3821,$3822),(nextval($3823),$3824,$3825,$3826,$3827,$3828,$3829,$3830,$3831,$3832,$3833,$3834,$3835,$3836),(nextval($3837),$3838,$3839,$3840,$3841,$3842,$3843,$3844,$3845,$3846,$3847,$3848,$3849,$3850),(nextval($3851),$3852,$3853,$3854,$3855,$3856,$3857,$3858,$3859,$3860,$3861,$3862,$3863,$3864),(nextval($3865),$3866,$3867,$3868,$3869,$3870,$3871,$3872,$3873,$3874,$3875,$3876,$3877,$3878),(nextval($3879),$3880,$3881,$3882,$3883,$3884,$3885,$3886,$3887,$3888,$3889,$3890,$3891,$3892),(nextval($3893),$3894,$3895,$3896,$3897,$3898,$3899,$3900,$3901,$3902,$3903,$3904,$3905,$3906),(nextval($3907),$3908,$3909,$3910,$3911,$3912,$3913,$3914,$3915,$3916,$3917,$3918,$3919,$3920),(nextval($3921),$3922,$3923,$3924,$3925,$3926,$3927,$3928,$3929,$3930,$3931,$3932,$3933,$3934),(nextval($3935),$3936,$3937,$3938,$3939,$3940,$3941,$3942,$3943,$3944,$3945,$3946,$3947,$3948),(nextval($3949),$3950,$3951,$3952,$3953,$3954,$3955,$3956,$3957,$3958,$3959,$3960,$3961,$3962),(nextval($3963),$3964,$3965,$3966,$3967,$3968,$3969,$3970,$3971,$3972,$3973,$3974,$3975,$3976),(nextval($3977),$3978,$3979,$3980,$3981,$3982,$3983,$3984,$3985,$3986,$3987,$3988,$3989,$3990),(nextval($3991),$3992,$3993,$3994,$3995,$3996,$3997,$3998,$3999,$4000,$4001,$4002,$4003,$4004),(nextval($4005),$4006,$4007,$4008,$4009,$4010,$4011,$4012,$4013,$4014,$4015,$4016,$4017,$4018),(nextval($4019),$4020,$4021,$4022,$4023,$4024,$4025,$4026,$4027,$4028,$4029,$4030,$4031,$4032),(nextval($4033),$4034,$4035,$4036,$4037,$4038,$4039,$4040,$4041,$4042,$4043,$4044,$4045,$4046),(nextval($4047),$4048,$4049,$4050,$4051,$4052,$4053,$4054,$4055,$4056,$4057,$4058,$4059,$4060),(nextval($4061),$4062,$4063,$4064,$4065,$4066,$4067,$4068,$4069,$4070,$4071,$4072,$4073,$4074),(nextval($4075),$4076,$4077,$4078,$4079,$4080,$4081,$4082,$4083,$4084,$4085,$4086,$4087,$4088),(nextval($4089),$4090,$4091,$4092,$4093,$4094,$4095,$4096,$4097,$4098,$4099,$4100,$4101,$4102),(nextval($4103),$4104,$4105,$4106,$4107,$4108,$4109,$4110,$4111,$4112,$4113,$4114,$4115,$4116),(nextval($4117),$4118,$4119,$4120,$4121,$4122,$4123,$4124,$4125,$4126,$4127,$4128,$4129,$4130),(nextval($4131),$4132,$4133,$4134,$4135,$4136,$4137,$4138,$4139,$4140,$4141,$4142,$4143,$4144),(nextval($4145),$4146,$4147,$4148,$4149,$4150,$4151,$4152,$4153,$4154,$4155,$4156,$4157,$4158),(nextval($4159),$4160,$4161,$4162,$4163,$4164,$4165,$4166,$4167,$4168,$4169,$4170,$4171,$4172),(nextval($4173),$4174,$4175,$4176,$4177,$4178,$4179,$4180,$4181,$4182,$4183,$4184,$4185,$4186),(nextval($4187),$4188,$4189,$4190,$4191,$4192,$4193,$4194,$4195,$4196,$4197,$4198,$4199,$4200),(nextval($4201),$4202,$4203,$4204,$4205,$4206,$4207,$4208,$4209,$4210,$4211,$4212,$4213,$4214),(nextval($4215),$4216,$4217,$4218,$4219,$4220,$4221,$4222,$4223,$4224,$4225,$4226,$4227,$4228),(nextval($4229),$4230,$4231,$4232,$4233,$4234,$4235,$4236,$4237,$4238,$4239,$4240,$4241,$4242),(nextval($4243),$4244,$4245,$4246,$4247,$4248,$4249,$4250,$4251,$4252,$4253,$4254,$4255,$4256),(nextval($4257),$4258,$4259,$4260,$4261,$4262,$4263,$4264,$4265,$4266,$4267,$4268,$4269,$4270),(nextval($4271),$4272,$4273,$4274,$4275,$4276,$4277,$4278,$4279,$4280,$4281,$4282,$4283,$4284),(nextval($4285),$4286,$4287,$4288,$4289,$4290,$4291,$4292,$4293,$4294,$4295,$4296,$4297,$4298),(nextval($4299),$4300,$4301,$4302,$4303,$4304,$4305,$4306,$4307,$4308,$4309,$4310,$4311,$4312),(nextval($4313),$4314,$4315,$4316,$4317,$4318,$4319,$4320,$4321,$4322,$4323,$4324,$4325,$4326),(nextval($4327),$4328,$4329,$4330,$4331,$4332,$4333,$4334,$4335,$4336,$4337,$4338,$4339,$4340),(nextval($4341),$4342,$4343,$4344,$4345,$4346,$4347,$4348,$4349,$4350,$4351,$4352,$4353,$4354),(nextval($4355),$4356,$4357,$4358,$4359,$4360,$4361,$4362,$4363,$4364,$4365,$4366,$4367,$4368),(nextval($4369),$4370,$4371,$4372,$4373,$4374,$4375,$4376,$4377,$4378,$4379,$4380,$4381,$4382),(nextval($4383),$4384,$4385,$4386,$4387,$4388,$4389,$4390,$4391,$4392,$4393,$4394,$4395,$4396),(nextval($4397),$4398,$4399,$4400,$4401,$4402,$4403,$4404,$4405,$4406,$4407,$4408,$4409,$4410),(nextval($4411),$4412,$4413,$4414,$4415,$4416,$4417,$4418,$4419,$4420,$4421,$4422,$4423,$4424),(nextval($4425),$4426,$4427,$4428,$4429,$4430,$4431,$4432,$4433,$4434,$4435,$4436,$4437,$4438),(nextval($4439),$4440,$4441,$4442,$4443,$4444,$4445,$4446,$4447,$4448,$4449,$4450,$4451,$4452),(nextval($4453),$4454,$4455,$4456,$4457,$4458,$4459,$4460,$4461,$4462,$4463,$4464,$4465,$4466),(nextval($4467),$4468,$4469,$4470,$4471,$4472,$4473,$4474,$4475,$4476,$4477,$4478,$4479,$4480),(nextval($4481),$4482,$4483,$4484,$4485,$4486,$4487,$4488,$4489,$4490,$4491,$4492,$4493,$4494),(nextval($4495),$4496,$4497,$4498,$4499,$4500,$4501,$4502,$4503,$4504,$4505,$4506,$4507,$4508),(nextval($4509),$4510,$4511,$4512,$4513,$4514,$4515,$4516,$4517,$4518,$4519,$4520,$4521,$4522),(nextval($4523),$4524,$4525,$4526,$4527,$4528,$4529,$4530,$4531,$4532,$4533,$4534,$4535,$4536),(nextval($4537),$4538,$4539,$4540,$4541,$4542,$4543,$4544,$4545,$4546,$4547,$4548,$4549,$4550),(nextval($4551),$4552,$4553,$4554,$4555,$4556,$4557,$4558,$4559,$4560,$4561,$4562,$4563,$4564),(nextval($4565),$4566,$4567,$4568,$4569,$4570,$4571,$4572,$4573,$4574,$4575,$4576,$4577,$4578),(nextval($4579),$4580,$4581,$4582,$4583,$4584,$4585,$4586,$4587,$4588,$4589,$4590,$4591,$4592),(nextval($4593),$4594,$4595,$4596,$4597,$4598,$4599,$4600,$4601,$4602,$4603,$4604,$4605,$4606),(nextval($4607),$4608,$4609,$4610,$4611,$4612,$4613,$4614,$4615,$4616,$4617,$4618,$4619,$4620),(nextval($4621),$4622,$4623,$4624,$4625,$4626,$4627,$4628,$4629,$4630,$4631,$4632,$4633,$4634),(nextval($4635),$4636,$4637,$4638,$4639,$4640,$4641,$4642,$4643,$4644,$4645,$4646,$4647,$4648),(nextval($4649),$4650,$4651,$4652,$4653,$4654,$4655,$4656,$4657,$4658,$4659,$4660,$4661,$4662),(nextval($4663),$4664,$4665,$4666,$4667,$4668,$4669,$4670,$4671,$4672,$4673,$4674,$4675,$4676),(nextval($4677),$4678,$4679,$4680,$4681,$4682,$4683,$4684,$4685,$4686,$4687,$4688,$4689,$4690),(nextval($4691),$4692,$4693,$4694,$4695,$4696,$4697,$4698,$4699,$4700,$4701,$4702,$4703,$4704),(nextval($4705),$4706,$4707,$4708,$4709,$4710,$4711,$4712,$4713,$4714,$4715,$4716,$4717,$4718),(nextval($4719),$4720,$4721,$4722,$4723,$4724,$4725,$4726,$4727,$4728,$4729,$4730,$4731,$4732),(nextval($4733),$4734,$4735,$4736,$4737,$4738,$4739,$4740,$4741,$4742,$4743,$4744,$4745,$4746),(nextval($4747),$4748,$4749,$4750,$4751,$4752,$4753,$4754,$4755,$4756,$4757,$4758,$4759,$4760),(nextval($4761),$4762,$4763,$4764,$4765,$4766,$4767,$4768,$4769,$4770,$4771,$4772,$4773,$4774),(nextval($4775),$4776,$4777,$4778,$4779,$4780,$4781,$4782,$4783,$4784,$4785,$4786,$4787,$4788),(nextval($4789),$4790,$4791,$4792,$4793,$4794,$4795,$4796,$4797,$4798,$4799,$4800,$4801,$4802),(nextval($4803),$4804,$4805,$4806,$4807,$4808,$4809,$4810,$4811,$4812,$4813,$4814,$4815,$4816),(nextval($4817),$4818,$4819,$4820,$4821,$4822,$4823,$4824,$4825,$4826,$4827,$4828,$4829,$4830),(nextval($4831),$4832,$4833,$4834,$4835,$4836,$4837,$4838,$4839,$4840,$4841,$4842,$4843,$4844),(nextval($4845),$4846,$4847,$4848,$4849,$4850,$4851,$4852,$4853,$4854,$4855,$4856,$4857,$4858),(nextval($4859),$4860,$4861,$4862,$4863,$4864,$4865,$4866,$4867,$4868,$4869,$4870,$4871,$4872),(nextval($4873),$4874,$4875,$4876,$4877,$4878,$4879,$4880,$4881,$4882,$4883,$4884,$4885,$4886),(nextval($4887),$4888,$4889,$4890,$4891,$4892,$4893,$4894,$4895,$4896,$4897,$4898,$4899,$4900),(nextval($4901),$4902,$4903,$4904,$4905,$4906,$4907,$4908,$4909,$4910,$4911,$4912,$4913,$4914),(nextval($4915),$4916,$4917,$4918,$4919,$4920,$4921,$4922,$4923,$4924,$4925,$4926,$4927,$4928),(nextval($4929),$4930,$4931,$4932,$4933,$4934,$4935,$4936,$4937,$4938,$4939,$4940,$4941,$4942),(nextval($4943),$4944,$4945,$4946,$4947,$4948,$4949,$4950,$4951,$4952,$4953,$4954,$4955,$4956),(nextval($4957),$4958,$4959,$4960,$4961,$4962,$4963,$4964,$4965,$4966,$4967,$4968,$4969,$4970),(nextval($4971),$4972,$4973,$4974,$4975,$4976,$4977,$4978,$4979,$4980,$4981,$4982,$4983,$4984),(nextval($4985),$4986,$4987,$4988,$4989,$4990,$4991,$4992,$4993,$4994,$4995,$4996,$4997,$4998),(nextval($4999),$5000,$5001,$5002,$5003,$5004,$5005,$5006,$5007,$5008,$5009,$5010,$5011,$5012),(nextval($5013),$5014,$5015,$5016,$5017,$5018,$5019,$5020,$5021,$5022,$5023,$5024,$5025,$5026),(nextval($5027),$5028,$5029,$5030,$5031,$5032,$5033,$5034,$5035,$5036,$5037,$5038,$5039,$5040),(nextval($5041),$5042,$5043,$5044,$5045,$5046,$5047,$5048,$5049,$5050,$5051,$5052,$5053,$5054),(nextval($5055),$5056,$5057,$5058,$5059,$5060,$5061,$5062,$5063,$5064,$5065,$5066,$5067,$5068),(nextval($5069),$5070,$5071,$5072,$5073,$5074,$5075,$5076,$5077,$5078,$5079,$5080,$5081,$5082),(nextval($5083),$5084,$5085,$5086,$5087,$5088,$5089,$5090,$5091,$5092,$5093,$5094,$5095,$5096),(nextval($5097),$5098,$5099,$5100,$5101,$5102,$5103,$5104,$5105,$5106,$5107,$5108,$5109,$5110),(nextval($5111),$5112,$5113,$5114,$5115,$5116,$5117,$5118,$5119,$5120,$5121,$5122,$5123,$5124),(nextval($5125),$5126,$5127,$5128,$5129,$5130,$5131,$5132,$5133,$5134,$5135,$5136,$5137,$5138),(nextval($5139),$5140,$5141,$5142,$5143,$5144,$5145,$5146,$5147,$5148,$5149,$5150,$5151,$5152),(nextval($5153),$5154,$5155,$5156,$5157,$5158,$5159,$5160,$5161,$5162,$5163,$5164,$5165,$5166),(nextval($5167),$5168,$5169,$5170,$5171,$5172,$5173,$5174,$5175,$5176,$5177,$5178,$5179,$5180),(nextval($5181),$5182,$5183,$5184,$5185,$5186,$5187,$5188,$5189,$5190,$5191,$5192,$5193,$5194),(nextval($5195),$5196,$5197,$5198,$5199,$5200,$5201,$5202,$5203,$5204,$5205,$5206,$5207,$5208),(nextval($5209),$5210,$5211,$5212,$5213,$5214,$5215,$5216,$5217,$5218,$5219,$5220,$5221,$5222),(nextval($5223),$5224,$5225,$5226,$5227,$5228,$5229,$5230,$5231,$5232,$5233,$5234,$5235,$5236),(nextval($5237),$5238,$5239,$5240,$5241,$5242,$5243,$5244,$5245,$5246,$5247,$5248,$5249,$5250),(nextval($5251),$5252,$5253,$5254,$5255,$5256,$5257,$5258,$5259,$5260,$5261,$5262,$5263,$5264),(nextval($5265),$5266,$5267,$5268,$5269,$5270,$5271,$5272,$5273,$5274,$5275,$5276,$5277,$5278),(nextval($5279),$5280,$5281,$5282,$5283,$5284,$5285,$5286,$5287,$5288,$5289,$5290,$5291,$5292),(nextval($5293),$5294,$5295,$5296,$5297,$5298,$5299,$5300,$5301,$5302,$5303,$5304,$5305,$5306),(nextval($5307),$5308,$5309,$5310,$5311,$5312,$5313,$5314,$5315,$5316,$5317,$5318,$5319,$5320),(nextval($5321),$5322,$5323,$5324,$5325,$5326,$5327,$5328,$5329,$5330,$5331,$5332,$5333,$5334),(nextval($5335),$5336,$5337,$5338,$5339,$5340,$5341,$5342,$5343,$5344,$5345,$5346,$5347,$5348),(nextval($5349),$5350,$5351,$5352,$5353,$5354,$5355,$5356,$5357,$5358,$5359,$5360,$5361,$5362),(nextval($5363),$5364,$5365,$5366,$5367,$5368,$5369,$5370,$5371,$5372,$5373,$5374,$5375,$5376),(nextval($5377),$5378,$5379,$5380,$5381,$5382,$5383,$5384,$5385,$5386,$5387,$5388,$5389,$5390),(nextval($5391),$5392,$5393,$5394,$5395,$5396,$5397,$5398,$5399,$5400,$5401,$5402,$5403,$5404),(nextval($5405),$5406,$5407,$5408,$5409,$5410,$5411,$5412,$5413,$5414,$5415,$5416,$5417,$5418),(nextval($5419),$5420,$5421,$5422,$5423,$5424,$5425,$5426,$5427,$5428,$5429,$5430,$5431,$5432),(nextval($5433),$5434,$5435,$5436,$5437,$5438,$5439,$5440,$5441,$5442,$5443,$5444,$5445,$5446),(nextval($5447),$5448,$5449,$5450,$5451,$5452,$5453,$5454,$5455,$5456,$5457,$5458,$5459,$5460),(nextval($5461),$5462,$5463,$5464,$5465,$5466,$5467,$5468,$5469,$5470,$5471,$5472,$5473,$5474),(nextval($5475),$5476,$5477,$5478,$5479,$5480,$5481,$5482,$5483,$5484,$5485,$5486,$5487,$5488),(nextval($5489),$5490,$5491,$5492,$5493,$5494,$5495,$5496,$5497,$5498,$5499,$5500,$5501,$5502),(nextval($5503),$5504,$5505,$5506,$5507,$5508,$5509,$5510,$5511,$5512,$5513,$5514,$5515,$5516),(nextval($5517),$5518,$5519,$5520,$5521,$5522,$5523,$5524,$5525,$5526,$5527,$5528,$5529,$5530),(nextval($5531),$5532,$5533,$5534,$5535,$5536,$5537,$5538,$5539,$5540,$5541,$5542,$5543,$5544),(nextval($5545),$5546,$5547,$5548,$5549,$5550,$5551,$5552,$5553,$5554,$5555,$5556,$5557,$5558),(nextval($5559),$5560,$5561,$5562,$5563,$5564,$5565,$5566,$5567,$5568,$5569,$5570,$5571,$5572),(nextval($5573),$5574,$5575,$5576,$5577,$5578,$5579,$5580,$5581,$5582,$5583,$5584,$5585,$5586),(nextval($5587),$5588,$5589,$5590,$5591,$5592,$5593,$5594,$5595,$5596,$5597,$5598,$5599,$5600),(nextval($5601),$5602,$5603,$5604,$5605,$5606,$5607,$5608,$5609,$5610,$5611,$5612,$5613,$5614),(nextval($5615),$5616,$5617,$5618,$5619,$5620,$5621,$5622,$5623,$5624,$5625,$5626,$5627,$5628),(nextval($5629),$5630,$5631,$5632,$5633,$5634,$5635,$5636,$5637,$5638,$5639,$5640,$5641,$5642),(nextval($5643),$5644,$5645,$5646,$5647,$5648,$5649,$5650,$5651,$5652,$5653,$5654,$5655,$5656),(nextval($5657),$5658,$5659,$5660,$5661,$5662,$5663,$5664,$5665,$5666,$5667,$5668,$5669,$5670),(nextval($5671),$5672,$5673,$5674,$5675,$5676,$5677,$5678,$5679,$5680,$5681,$5682,$5683,$5684),(nextval($5685),$5686,$5687,$5688,$5689,$5690,$5691,$5692,$5693,$5694,$5695,$5696,$5697,$5698),(nextval($5699),$5700,$5701,$5702,$5703,$5704,$5705,$5706,$5707,$5708,$5709,$5710,$5711,$5712),(nextval($5713),$5714,$5715,$5716,$5717,$5718,$5719,$5720,$5721,$5722,$5723,$5724,$5725,$5726),(nextval($5727),$5728,$5729,$5730,$5731,$5732,$5733,$5734,$5735,$5736,$5737,$5738,$5739,$5740),(nextval($5741),$5742,$5743,$5744,$5745,$5746,$5747,$5748,$5749,$5750,$5751,$5752,$5753,$5754),(nextval($5755),$5756,$5757,$5758,$5759,$5760,$5761,$5762,$5763,$5764,$5765,$5766,$5767,$5768),(nextval($5769),$5770,$5771,$5772,$5773,$5774,$5775,$5776,$5777,$5778,$5779,$5780,$5781,$5782),(nextval($5783),$5784,$5785,$5786,$5787,$5788,$5789,$5790,$5791,$5792,$5793,$5794,$5795,$5796),(nextval($5797),$5798,$5799,$5800,$5801,$5802,$5803,$5804,$5805,$5806,$5807,$5808,$5809,$5810),(nextval($5811),$5812,$5813,$5814,$5815,$5816,$5817,$5818,$5819,$5820,$5821,$5822,$5823,$5824),(nextval($5825),$5826,$5827,$5828,$5829,$5830,$5831,$5832,$5833,$5834,$5835,$5836,$5837,$5838),(nextval($5839),$5840,$5841,$5842,$5843,$5844,$5845,$5846,$5847,$5848,$5849,$5850,$5851,$5852),(nextval($5853),$5854,$5855,$5856,$5857,$5858,$5859,$5860,$5861,$5862,$5863,$5864,$5865,$5866),(nextval($5867),$5868,$5869,$5870,$5871,$5872,$5873,$5874,$5875,$5876,$5877,$5878,$5879,$5880),(nextval($5881),$5882,$5883,$5884,$5885,$5886,$5887,$5888,$5889,$5890,$5891,$5892,$5893,$5894),(nextval($5895),$5896,$5897,$5898,$5899,$5900,$5901,$5902,$5903,$5904,$5905,$5906,$5907,$5908),(nextval($5909),$5910,$5911,$5912,$5913,$5914,$5915,$5916,$5917,$5918,$5919,$5920,$5921,$5922),(nextval($5923),$5924,$5925,$5926,$5927,$5928,$5929,$5930,$5931,$5932,$5933,$5934,$5935,$5936),(nextval($5937),$5938,$5939,$5940,$5941,$5942,$5943,$5944,$5945,$5946,$5947,$5948,$5949,$5950),(nextval($5951),$5952,$5953,$5954,$5955,$5956,$5957,$5958,$5959,$5960,$5961,$5962,$5963,$5964),(nextval($5965),$5966,$5967,$5968,$5969,$5970,$5971,$5972,$5973,$5974,$5975,$5976,$5977,$5978),(nextval($5979),$5980,$5981,$5982,$5983,$5984,$5985,$5986,$5987,$5988,$5989,$5990,$5991,$5992),(nextval($5993),$5994,$5995,$5996,$5997,$5998,$5999,$6000,$6001,$6002,$6003,$6004,$6005,$6006),(nextval($6007),$6008,$6009,$6010,$6011,$6012,$6013,$6014,$6015,$6016,$6017,$6018,$6019,$6020),(nextval($6021),$6022,$6023,$6024,$6025,$6026,$6027,$6028,$6029,$6030,$6031,$6032,$6033,$6034),(nextval($6035),$6036,$6037,$6038,$6039,$6040,$6041,$6042,$6043,$6044,$6045,$6046,$6047,$6048),(nextval($6049),$6050,$6051,$6052,$6053,$6054,$6055,$6056,$6057,$6058,$6059,$6060,$6061,$6062),(nextval($6063),$6064,$6065,$6066,$6067,$6068,$6069,$6070,$6071,$6072,$6073,$6074,$6075,$6076),(nextval($6077),$6078,$6079,$6080,$6081,$6082,$6083,$6084,$6085,$6086,$6087,$6088,$6089,$6090),(nextval($6091),$6092,$6093,$6094,$6095,$6096,$6097,$6098,$6099,$6100,$6101,$6102,$6103,$6104),(nextval($6105),$6106,$6107,$6108,$6109,$6110,$6111,$6112,$6113,$6114,$6115,$6116,$6117,$6118),(nextval($6119),$6120,$6121,$6122,$6123,$6124,$6125,$6126,$6127,$6128,$6129,$6130,$6131,$6132),(nextval($6133),$6134,$6135,$6136,$6137,$6138,$6139,$6140,$6141,$6142,$6143,$6144,$6145,$6146),(nextval($6147),$6148,$6149,$6150,$6151,$6152,$6153,$6154,$6155,$6156,$6157,$6158,$6159,$6160),(nextval($6161),$6162,$6163,$6164,$6165,$6166,$6167,$6168,$6169,$6170,$6171,$6172,$6173,$6174),(nextval($6175),$6176,$6177,$6178,$6179,$6180,$6181,$6182,$6183,$6184,$6185,$6186,$6187,$6188),(nextval($6189),$6190,$6191,$6192,$6193,$6194,$6195,$6196,$6197,$6198,$6199,$6200,$6201,$6202),(nextval($6203),$6204,$6205,$6206,$6207,$6208,$6209,$6210,$6211,$6212,$6213,$6214,$6215,$6216),(nextval($6217),$6218,$6219,$6220,$6221,$6222,$6223,$6224,$6225,$6226,$6227,$6228,$6229,$6230),(nextval($6231),$6232,$6233,$6234,$6235,$6236,$6237,$6238,$6239,$6240,$6241,$6242,$6243,$6244),(nextval($6245),$6246,$6247,$6248,$6249,$6250,$6251,$6252,$6253,$6254,$6255,$6256,$6257,$6258),(nextval($6259),$6260,$6261,$6262,$6263,$6264,$6265,$6266,$6267,$6268,$6269,$6270,$6271,$6272),(nextval($6273),$6274,$6275,$6276,$6277,$6278,$6279,$6280,$6281,$6282,$6283,$6284,$6285,$6286),(nextval($6287),$6288,$6289,$6290,$6291,$6292,$6293,$6294,$6295,$6296,$6297,$6298,$6299,$6300),(nextval($6301),$6302,$6303,$6304,$6305,$6306,$6307,$6308,$6309,$6310,$6311,$6312,$6313,$6314),(nextval($6315),$6316,$6317,$6318,$6319,$6320,$6321,$6322,$6323,$6324,$6325,$6326,$6327,$6328),(nextval($6329),$6330,$6331,$6332,$6333,$6334,$6335,$6336,$6337,$6338,$6339,$6340,$6341,$6342),(nextval($6343),$6344,$6345,$6346,$6347,$6348,$6349,$6350,$6351,$6352,$6353,$6354,$6355,$6356),(nextval($6357),$6358,$6359,$6360,$6361,$6362,$6363,$6364,$6365,$6366,$6367,$6368,$6369,$6370),(nextval($6371),$6372,$6373,$6374,$6375,$6376,$6377,$6378,$6379,$6380,$6381,$6382,$6383,$6384),(nextval($6385),$6386,$6387,$6388,$6389,$6390,$6391,$6392,$6393,$6394,$6395,$6396,$6397,$6398),(nextval($6399),$6400,$6401,$6402,$6403,$6404,$6405,$6406,$6407,$6408,$6409,$6410,$6411,$6412),(nextval($6413),$6414,$6415,$6416,$6417,$6418,$6419,$6420,$6421,$6422,$6423,$6424,$6425,$6426),(nextval($6427),$6428,$6429,$6430,$6431,$6432,$6433,$6434,$6435,$6436,$6437,$6438,$6439,$6440),(nextval($6441),$6442,$6443,$6444,$6445,$6446,$6447,$6448,$6449,$6450,$6451,$6452,$6453,$6454),(nextval($6455),$6456,$6457,$6458,$6459,$6460,$6461,$6462,$6463,$6464,$6465,$6466,$6467,$6468),(nextval($6469),$6470,$6471,$6472,$6473,$6474,$6475,$6476,$6477,$6478,$6479,$6480,$6481,$6482),(nextval($6483),$6484,$6485,$6486,$6487,$6488,$6489,$6490,$6491,$6492,$6493,$6494,$6495,$6496),(nextval($6497),$6498,$6499,$6500,$6501,$6502,$6503,$6504,$6505,$6506,$6507,$6508,$6509,$6510),(nextval($6511),$6512,$6513,$6514,$6515,$6516,$6517,$6518,$6519,$6520,$6521,$6522,$6523,$6524),(nextval($6525),$6526,$6527,$6528,$6529,$6530,$6531,$6532,$6533,$6534,$6535,$6536,$6537,$6538),(nextval($6539),$6540,$6541,$6542,$6543,$6544,$6545,$6546,$6547,$6548,$6549,$6550,$6551,$6552),(nextval($6553),$6554,$6555,$6556,$6557,$6558,$6559,$6560,$6561,$6562,$6563,$6564,$6565,$6566),(nextval($6567),$6568,$6569,$6570,$6571,$6572,$6573,$6574,$6575,$6576,$6577,$6578,$6579,$6580),(nextval($6581),$6582,$6583,$6584,$6585,$6586,$6587,$6588,$6589,$6590,$6591,$6592,$6593,$6594),(nextval($6595),$6596,$6597,$6598,$6599,$6600,$6601,$6602,$6603,$6604,$6605,$6606,$6607,$6608),(nextval($6609),$6610,$6611,$6612,$6613,$6614,$6615,$6616,$6617,$6618,$6619,$6620,$6621,$6622),(nextval($6623),$6624,$6625,$6626,$6627,$6628,$6629,$6630,$6631,$6632,$6633,$6634,$6635,$6636),(nextval($6637),$6638,$6639,$6640,$6641,$6642,$6643,$6644,$6645,$6646,$6647,$6648,$6649,$6650),(nextval($6651),$6652,$6653,$6654,$6655,$6656,$6657,$6658,$6659,$6660,$6661,$6662,$6663,$6664),(nextval($6665),$6666,$6667,$6668,$6669,$6670,$6671,$6672,$6673,$6674,$6675,$6676,$6677,$6678),(nextval($6679),$6680,$6681,$6682,$6683,$6684,$6685,$6686,$6687,$6688,$6689,$6690,$6691,$6692),(nextval($6693),$6694,$6695,$6696,$6697,$6698,$6699,$6700,$6701,$6702,$6703,$6704,$6705,$6706),(nextval($6707),$6708,$6709,$6710,$6711,$6712,$6713,$6714,$6715,$6716,$6717,$6718,$6719,$6720),(nextval($6721),$6722,$6723,$6724,$6725,$6726,$6727,$6728,$6729,$6730,$6731,$6732,$6733,$6734),(nextval($6735),$6736,$6737,$6738,$6739,$6740,$6741,$6742,$6743,$6744,$6745,$6746,$6747,$6748),(nextval($6749),$6750,$6751,$6752,$6753,$6754,$6755,$6756,$6757,$6758,$6759,$6760,$6761,$6762),(nextval($6763),$6764,$6765,$6766,$6767,$6768,$6769,$6770,$6771,$6772,$6773,$6774,$6775,$6776),(nextval($6777),$6778,$6779,$6780,$6781,$6782,$6783,$6784,$6785,$6786,$6787,$6788,$6789,$6790),(nextval($6791),$6792,$6793,$6794,$6795,$6796,$6797,$6798,$6799,$6800,$6801,$6802,$6803,$6804),(nextval($6805),$6806,$6807,$6808,$6809,$6810,$6811,$6812,$6813,$6814,$6815,$6816,$6817,$6818),(nextval($6819),$6820,$6821,$6822,$6823,$6824,$6825,$6826,$6827,$6828,$6829,$6830,$6831,$6832),(nextval($6833),$6834,$6835,$6836,$6837,$6838,$6839,$6840,$6841,$6842,$6843,$6844,$6845,$6846),(nextval($6847),$6848,$6849,$6850,$6851,$6852,$6853,$6854,$6855,$6856,$6857,$6858,$6859,$6860),(nextval($6861),$6862,$6863,$6864,$6865,$6866,$6867,$6868,$6869,$6870,$6871,$6872,$6873,$6874),(nextval($6875),$6876,$6877,$6878,$6879,$6880,$6881,$6882,$6883,$6884,$6885,$6886,$6887,$6888),(nextval($6889),$6890,$6891,$6892,$6893,$6894,$6895,$6896,$6897,$6898,$6899,$6900,$6901,$6902),(nextval($6903),$6904,$6905,$6906,$6907,$6908,$6909,$6910,$6911,$6912,$6913,$6914,$6915,$6916),(nextval($6917),$6918,$6919,$6920,$6921,$6922,$6923,$6924,$6925,$6926,$6927,$6928,$6929,$6930),(nextval($6931),$6932,$6933,$6934,$6935,$6936,$6937,$6938,$6939,$6940,$6941,$6942,$6943,$6944),(nextval($6945),$6946,$6947,$6948,$6949,$6950,$6951,$6952,$6953,$6954,$6955,$6956,$6957,$6958),(nextval($6959),$6960,$6961,$6962,$6963,$6964,$6965,$6966,$6967,$6968,$6969,$6970,$6971,$6972),(nextval($6973),$6974,$6975,$6976,$6977,$6978,$6979,$6980,$6981,$6982,$6983,$6984,$6985,$6986),(nextval($6987),$6988,$6989,$6990,$6991,$6992,$6993,$6994,$6995,$6996,$6997,$6998,$6999,$7000),(nextval($7001),$7002,$7003,$7004,$7005,$7006,$7007,$7008,$7009,$7010,$7011,$7012,$7013,$7014),(nextval($7015),$7016,$7017,$7018,$7019,$7020,$7021,$7022,$7023,$7024,$7025,$7026,$7027,$7028),(nextval($7029),$7030,$7031,$7032,$7033,$7034,$7035,$7036,$7037,$7038,$7039,$7040,$7041,$7042),(nextval($7043),$7044,$7045,$7046,$7047,$7048,$7049,$7050,$7051,$7052,$7053,$7054,$7055,$7056),(nextval($7057),$7058,$7059,$7060,$7061,$7062,$7063,$7064,$7065,$7066,$7067,$7068,$7069,$7070),(nextval($7071),$7072,$7073,$7074,$7075,$7076,$7077,$7078,$7079,$7080,$7081,$7082,$7083,$7084),(nextval($7085),$7086,$7087,$7088,$7089,$7090,$7091,$7092,$7093,$7094,$7095,$7096,$7097,$7098),(nextval($7099),$7100,$7101,$7102,$7103,$7104,$7105,$7106,$7107,$7108,$7109,$7110,$7111,$7112),(nextval($7113),$7114,$7115,$7116,$7117,$7118,$7119,$7120,$7121,$7122,$7123,$7124,$7125,$7126),(nextval($7127),$7128,$7129,$7130,$7131,$7132,$7133,$7134,$7135,$7136,$7137,$7138,$7139,$7140),(nextval($7141),$7142,$7143,$7144,$7145,$7146,$7147,$7148,$7149,$7150,$7151,$7152,$7153,$7154),(nextval($7155),$7156,$7157,$7158,$7159,$7160,$7161,$7162,$7163,$7164,$7165,$7166,$7167,$7168),(nextval($7169),$7170,$7171,$7172,$7173,$7174,$7175,$7176,$7177,$7178,$7179,$7180,$7181,$7182),(nextval($7183),$7184,$7185,$7186,$7187,$7188,$7189,$7190,$7191,$7192,$7193,$7194,$7195,$7196),(nextval($7197),$7198,$7199,$7200,$7201,$7202,$7203,$7204,$7205,$7206,$7207,$7208,$7209,$7210),(nextval($7211),$7212,$7213,$7214,$7215,$7216,$7217,$7218,$7219,$7220,$7221,$7222,$7223,$7224),(nextval($7225),$7226,$7227,$7228,$7229,$7230,$7231,$7232,$7233,$7234,$7235,$7236,$7237,$7238),(nextval($7239),$7240,$7241,$7242,$7243,$7244,$7245,$7246,$7247,$7248,$7249,$7250,$7251,$7252),(nextval($7253),$7254,$7255,$7256,$7257,$7258,$7259,$7260,$7261,$7262,$7263,$7264,$7265,$7266),(nextval($7267),$7268,$7269,$7270,$7271,$7272,$7273,$7274,$7275,$7276,$7277,$7278,$7279,$7280),(nextval($7281),$7282,$7283,$7284,$7285,$7286,$7287,$7288,$7289,$7290,$7291,$7292,$7293,$7294),(nextval($7295),$7296,$7297,$7298,$7299,$7300,$7301,$7302,$7303,$7304,$7305,$7306,$7307,$7308),(nextval($7309),$7310,$7311,$7312,$7313,$7314,$7315,$7316,$7317,$7318,$7319,$7320,$7321,$7322),(nextval($7323),$7324,$7325,$7326,$7327,$7328,$7329,$7330,$7331,$7332,$7333,$7334,$7335,$7336),(nextval($7337),$7338,$7339,$7340,$7341,$7342,$7343,$7344,$7345,$7346,$7347,$7348,$7349,$7350),(nextval($7351),$7352,$7353,$7354,$7355,$7356,$7357,$7358,$7359,$7360,$7361,$7362,$7363,$7364),(nextval($7365),$7366,$7367,$7368,$7369,$7370,$7371,$7372,$7373,$7374,$7375,$7376,$7377,$7378),(nextval($7379),$7380,$7381,$7382,$7383,$7384,$7385,$7386,$7387,$7388,$7389,$7390,$7391,$7392),(nextval($7393),$7394,$7395,$7396,$7397,$7398,$7399,$7400,$7401,$7402,$7403,$7404,$7405,$7406),(nextval($7407),$7408,$7409,$7410,$7411,$7412,$7413,$7414,$7415,$7416,$7417,$7418,$7419,$7420),(nextval($7421),$7422,$7423,$7424,$7425,$7426,$7427,$7428,$7429,$7430,$7431,$7432,$7433,$7434),(nextval($7435),$7436,$7437,$7438,$7439,$7440,$7441,$7442,$7443,$7444,$7445,$7446,$7447,$7448),(nextval($7449),$7450,$7451,$7452,$7453,$7454,$7455,$7456,$7457,$7458,$7459,$7460,$7461,$7462),(nextval($7463),$7464,$7465,$7466,$7467,$7468,$7469,$7470,$7471,$7472,$7473,$7474,$7475,$7476),(nextval($7477),$7478,$7479,$7480,$7481,$7482,$7483,$7484,$7485,$7486,$7487,$7488,$7489,$7490),(nextval($7491),$7492,$7493,$7494,$7495,$7496,$7497,$7498,$7499,$7500,$7501,$7502,$7503,$7504),(nextval($7505),$7506,$7507,$7508,$7509,$7510,$7511,$7512,$7513,$7514,$7515,$7516,$7517,$7518),(nextval($7519),$7520,$7521,$7522,$7523,$7524,$7525,$7526,$7527,$7528,$7529,$7530,$7531,$7532),(nextval($7533),$7534,$7535,$7536,$7537,$7538,$7539,$7540,$7541,$7542,$7543,$7544,$7545,$7546),(nextval($7547),$7548,$7549,$7550,$7551,$7552,$7553,$7554,$7555,$7556,$7557,$7558,$7559,$7560),(nextval($7561),$7562,$7563,$7564,$7565,$7566,$7567,$7568,$7569,$7570,$7571,$7572,$7573,$7574),(nextval($7575),$7576,$7577,$7578,$7579,$7580,$7581,$7582,$7583,$7584,$7585,$7586,$7587,$7588),(nextval($7589),$7590,$7591,$7592,$7593,$7594,$7595,$7596,$7597,$7598,$7599,$7600,$7601,$7602),(nextval($7603),$7604,$7605,$7606,$7607,$7608,$7609,$7610,$7611,$7612,$7613,$7614,$7615,$7616),(nextval($7617),$7618,$7619,$7620,$7621,$7622,$7623,$7624,$7625,$7626,$7627,$7628,$7629,$7630),(nextval($7631),$7632,$7633,$7634,$7635,$7636,$7637,$7638,$7639,$7640,$7641,$7642,$7643,$7644),(nextval($7645),$7646,$7647,$7648,$7649,$7650,$7651,$7652,$7653,$7654,$7655,$7656,$7657,$7658),(nextval($7659),$7660,$7661,$7662,$7663,$7664,$7665,$7666,$7667,$7668,$7669,$7670,$7671,$7672),(nextval($7673),$7674,$7675,$7676,$7677,$7678,$7679,$7680,$7681,$7682,$7683,$7684,$7685,$7686),(nextval($7687),$7688,$7689,$7690,$7691,$7692,$7693,$7694,$7695,$7696,$7697,$7698,$7699,$7700),(nextval($7701),$7702,$7703,$7704,$7705,$7706,$7707,$7708,$7709,$7710,$7711,$7712,$7713,$7714),(nextval($7715),$7716,$7717,$7718,$7719,$7720,$7721,$7722,$7723,$7724,$7725,$7726,$7727,$7728),(nextval($7729),$7730,$7731,$7732,$7733,$7734,$7735,$7736,$7737,$7738,$7739,$7740,$7741,$7742),(nextval($7743),$7744,$7745,$7746,$7747,$7748,$7749,$7750,$7751,$7752,$7753,$7754,$7755,$7756),(nextval($7757),$7758,$7759,$7760,$7761,$7762,$7763,$7764,$7765,$7766,$7767,$7768,$7769,$7770),(nextval($7771),$7772,$7773,$7774,$7775,$7776,$7777,$7778,$7779,$7780,$7781,$7782,$7783,$7784),(nextval($7785),$7786,$7787,$7788,$7789,$7790,$7791,$7792,$7793,$7794,$7795,$7796,$7797,$7798),(nextval($7799),$7800,$7801,$7802,$7803,$7804,$7805,$7806,$7807,$7808,$7809,$7810,$7811,$7812),(nextval($7813),$7814,$7815,$7816,$7817,$7818,$7819,$7820,$7821,$7822,$7823,$7824,$7825,$7826),(nextval($7827),$7828,$7829,$7830,$7831,$7832,$7833,$7834,$7835,$7836,$7837,$7838,$7839,$7840),(nextval($7841),$7842,$7843,$7844,$7845,$7846,$7847,$7848,$7849,$7850,$7851,$7852,$7853,$7854),(nextval($7855),$7856,$7857,$7858,$7859,$7860,$7861,$7862,$7863,$7864,$7865,$7866,$7867,$7868),(nextval($7869),$7870,$7871,$7872,$7873,$7874,$7875,$7876,$7877,$7878,$7879,$7880,$7881,$7882),(nextval($7883),$7884,$7885,$7886,$7887,$7888,$7889,$7890,$7891,$7892,$7893,$7894,$7895,$7896),(nextval($7897),$7898,$7899,$7900,$7901,$7902,$7903,$7904,$7905,$7906,$7907,$7908,$7909,$7910),(nextval($7911),$7912,$7913,$7914,$7915,$7916,$7917,$7918,$7919,$7920,$7921,$7922,$7923,$7924),(nextval($7925),$7926,$7927,$7928,$7929,$7930,$7931,$7932,$7933,$7934,$7935,$7936,$7937,$7938),(nextval($7939),$7940,$7941,$7942,$7943,$7944,$7945,$7946,$7947,$7948,$7949,$7950,$7951,$7952),(nextval($7953),$7954,$7955,$7956,$7957,$7958,$7959,$7960,$7961,$7962,$7963,$7964,$7965,$7966),(nextval($7967),$7968,$7969,$7970,$7971,$7972,$7973,$7974,$7975,$7976,$7977,$7978,$7979,$7980),(nextval($7981),$7982,$7983,$7984,$7985,$7986,$7987,$7988,$7989,$7990,$7991,$7992,$7993,$7994),(nextval($7995),$7996,$7997,$7998,$7999,$8000,$8001,$8002,$8003,$8004,$8005,$8006,$8007,$8008),(nextval($8009),$8010,$8011,$8012,$8013,$8014,$8015,$8016,$8017,$8018,$8019,$8020,$8021,$8022),(nextval($8023),$8024,$8025,$8026,$8027,$8028,$8029,$8030,$8031,$8032,$8033,$8034,$8035,$8036),(nextval($8037),$8038,$8039,$8040,$8041,$8042,$8043,$8044,$8045,$8046,$8047,$8048,$8049,$8050),(nextval($8051),$8052,$8053,$8054,$8055,$8056,$8057,$8058,$8059,$8060,$8061,$8062,$8063,$8064),(nextval($8065),$8066,$8067,$8068,$8069,$8070,$8071,$8072,$8073,$8074,$8075,$8076,$8077,$8078),(nextval($8079),$8080,$8081,$8082,$8083,$8084,$8085,$8086,$8087,$8088,$8089,$8090,$8091,$8092),(nextval($8093),$8094,$8095,$8096,$8097,$8098,$8099,$8100,$8101,$8102,$8103,$8104,$8105,$8106),(nextval($8107),$8108,$8109,$8110,$8111,$8112,$8113,$8114,$8115,$8116,$8117,$8118,$8119,$8120),(nextval($8121),$8122,$8123,$8124,$8125,$8126,$8127,$8128,$8129,$8130,$8131,$8132,$8133,$8134),(nextval($8135),$8136,$8137,$8138,$8139,$8140,$8141,$8142,$8143,$8144,$8145,$8146,$8147,$8148),(nextval($8149),$8150,$8151,$8152,$8153,$8154,$8155,$8156,$8157,$8158,$8159,$8160,$8161,$8162),(nextval($8163),$8164,$8165,$8166,$8167,$8168,$8169,$8170,$8171,$8172,$8173,$8174,$8175,$8176),(nextval($8177),$8178,$8179,$8180,$8181,$8182,$8183,$8184,$8185,$8186,$8187,$8188,$8189,$8190),(nextval($8191),$8192,$8193,$8194,$8195,$8196,$8197,$8198,$8199,$8200,$8201,$8202,$8203,$8204),(nextval($8205),$8206,$8207,$8208,$8209,$8210,$8211,$8212,$8213,$8214,$8215,$8216,$8217,$8218),(nextval($8219),$8220,$8221,$8222,$8223,$8224,$8225,$8226,$8227,$8228,$8229,$8230,$8231,$8232),(nextval($8233),$8234,$8235,$8236,$8237,$8238,$8239,$8240,$8241,$8242,$8243,$8244,$8245,$8246),(nextval($8247),$8248,$8249,$8250,$8251,$8252,$8253,$8254,$8255,$8256,$8257,$8258,$8259,$8260),(nextval($8261),$8262,$8263,$8264,$8265,$8266,$8267,$8268,$8269,$8270,$8271,$8272,$8273,$8274),(nextval($8275),$8276,$8277,$8278,$8279,$8280,$8281,$8282,$8283,$8284,$8285,$8286,$8287,$8288),(nextval($8289),$8290,$8291,$8292,$8293,$8294,$8295,$8296,$8297,$8298,$8299,$8300,$8301,$8302),(nextval($8303),$8304,$8305,$8306,$8307,$8308,$8309,$8310,$8311,$8312,$8313,$8314,$8315,$8316),(nextval($8317),$8318,$8319,$8320,$8321,$8322,$8323,$8324,$8325,$8326,$8327,$8328,$8329,$8330),(nextval($8331),$8332,$8333,$8334,$8335,$8336,$8337,$8338,$8339,$8340,$8341,$8342,$8343,$8344),(nextval($8345),$8346,$8347,$8348,$8349,$8350,$8351,$8352,$8353,$8354,$8355,$8356,$8357,$8358),(nextval($8359),$8360,$8361,$8362,$8363,$8364,$8365,$8366,$8367,$8368,$8369,$8370,$8371,$8372),(nextval($8373),$8374,$8375,$8376,$8377,$8378,$8379,$8380,$8381,$8382,$8383,$8384,$8385,$8386),(nextval($8387),$8388,$8389,$8390,$8391,$8392,$8393,$8394,$8395,$8396,$8397,$8398,$8399,$8400),(nextval($8401),$8402,$8403,$8404,$8405,$8406,$8407,$8408,$8409,$8410,$8411,$8412,$8413,$8414),(nextval($8415),$8416,$8417,$8418,$8419,$8420,$8421,$8422,$8423,$8424,$8425,$8426,$8427,$8428),(nextval($8429),$8430,$8431,$8432,$8433,$8434,$8435,$8436,$8437,$8438,$8439,$8440,$8441,$8442),(nextval($8443),$8444,$8445,$8446,$8447,$8448,$8449,$8450,$8451,$8452,$8453,$8454,$8455,$8456),(nextval($8457),$8458,$8459,$8460,$8461,$8462,$8463,$8464,$8465,$8466,$8467,$8468,$8469,$8470),(nextval($8471),$8472,$8473,$8474,$8475,$8476,$8477,$8478,$8479,$8480,$8481,$8482,$8483,$8484),(nextval($8485),$8486,$8487,$8488,$8489,$8490,$8491,$8492,$8493,$8494,$8495,$8496,$8497,$8498),(nextval($8499),$8500,$8501,$8502,$8503,$8504,$8505,$8506,$8507,$8508,$8509,$8510,$8511,$8512),(nextval($8513),$8514,$8515,$8516,$8517,$8518,$8519,$8520,$8521,$8522,$8523,$8524,$8525,$8526),(nextval($8527),$8528,$8529,$8530,$8531,$8532,$8533,$8534,$8535,$8536,$8537,$8538,$8539,$8540),(nextval($8541),$8542,$8543,$8544,$8545,$8546,$8547,$8548,$8549,$8550,$8551,$8552,$8553,$8554),(nextval($8555),$8556,$8557,$8558,$8559,$8560,$8561,$8562,$8563,$8564,$8565,$8566,$8567,$8568),(nextval($8569),$8570,$8571,$8572,$8573,$8574,$8575,$8576,$8577,$8578,$8579,$8580,$8581,$8582),(nextval($8583),$8584,$8585,$8586,$8587,$8588,$8589,$8590,$8591,$8592,$8593,$8594,$8595,$8596),(nextval($8597),$8598,$8599,$8600,$8601,$8602,$8603,$8604,$8605,$8606,$8607,$8608,$8609,$8610),(nextval($8611),$8612,$8613,$8614,$8615,$8616,$8617,$8618,$8619,$8620,$8621,$8622,$8623,$8624),(nextval($8625),$8626,$8627,$8628,$8629,$8630,$8631,$8632,$8633,$8634,$8635,$8636,$8637,$8638),(nextval($8639),$8640,$8641,$8642,$8643,$8644,$8645,$8646,$8647,$8648,$8649,$8650,$8651,$8652),(nextval($8653),$8654,$8655,$8656,$8657,$8658,$8659,$8660,$8661,$8662,$8663,$8664,$8665,$8666),(nextval($8667),$8668,$8669,$8670,$8671,$8672,$8673,$8674,$8675,$8676,$8677,$8678,$8679,$8680),(nextval($8681),$8682,$8683,$8684,$8685,$8686,$8687,$8688,$8689,$8690,$8691,$8692,$8693,$8694),(nextval($8695),$8696,$8697,$8698,$8699,$8700,$8701,$8702,$8703,$8704,$8705,$8706,$8707,$8708),(nextval($8709),$8710,$8711,$8712,$8713,$8714,$8715,$8716,$8717,$8718,$8719,$8720,$8721,$8722),(nextval($8723),$8724,$8725,$8726,$8727,$8728,$8729,$8730,$8731,$8732,$8733,$8734,$8735,$8736),(nextval($8737),$8738,$8739,$8740,$8741,$8742,$8743,$8744,$8745,$8746,$8747,$8748,$8749,$8750),(nextval($8751),$8752,$8753,$8754,$8755,$8756,$8757,$8758,$8759,$8760,$8761,$8762,$8763,$8764),(nextval($8765),$8766,$8767,$8768,$8769,$8770,$8771,$8772,$8773,$8774,$8775,$8776,$8777,$8778),(nextval($8779),$8780,$8781,$8782,$8783,$8784,$8785,$8786,$8787,$8788,$8789,$8790,$8791,$8792),(nextval($8793),$8794,$8795,$8796,$8797,$8798,$8799,$8800,$8801,$8802,$8803,$8804,$8805,$8806),(nextval($8807),$8808,$8809,$8810,$8811,$8812,$8813,$8814,$8815,$8816,$8817,$8818,$8819,$8820),(nextval($8821),$8822,$8823,$8824,$8825,$8826,$8827,$8828,$8829,$8830,$8831,$8832,$8833,$8834),(nextval($8835),$8836,$8837,$8838,$8839,$8840,$8841,$8842,$8843,$8844,$8845,$8846,$8847,$8848),(nextval($8849),$8850,$8851,$8852,$8853,$8854,$8855,$8856,$8857,$8858,$8859,$8860,$8861,$8862),(nextval($8863),$8864,$8865,$8866,$8867,$8868,$8869,$8870,$8871,$8872,$8873,$8874,$8875,$8876),(nextval($8877),$8878,$8879,$8880,$8881,$8882,$8883,$8884,$8885,$8886,$8887,$8888,$8889,$8890),(nextval($8891),$8892,$8893,$8894,$8895,$8896,$8897,$8898,$8899,$8900,$8901,$8902,$8903,$8904),(nextval($8905),$8906,$8907,$8908,$8909,$8910,$8911,$8912,$8913,$8914,$8915,$8916,$8917,$8918),(nextval($8919),$8920,$8921,$8922,$8923,$8924,$8925,$8926,$8927,$8928,$8929,$8930,$8931,$8932),(nextval($8933),$8934,$8935,$8936,$8937,$8938,$8939,$8940,$8941,$8942,$8943,$8944,$8945,$8946),(nextval($8947),$8948,$8949,$8950,$8951,$8952,$8953,$8954,$8955,$8956,$8957,$8958,$8959,$8960),(nextval($8961),$8962,$8963,$8964,$8965,$8966,$8967,$8968,$8969,$8970,$8971,$8972,$8973,$8974),(nextval($8975),$8976,$8977,$8978,$8979,$8980,$8981,$8982,$8983,$8984,$8985,$8986,$8987,$8988),(nextval($8989),$8990,$8991,$8992,$8993,$8994,$8995,$8996,$8997,$8998,$8999,$9000,$9001,$9002),(nextval($9003),$9004,$9005,$9006,$9007,$9008,$9009,$9010,$9011,$9012,$9013,$9014,$9015,$9016),(nextval($9017),$9018,$9019,$9020,$9021,$9022,$9023,$9024,$9025,$9026,$9027,$9028,$9029,$9030),(nextval($9031),$9032,$9033,$9034,$9035,$9036,$9037,$9038,$9039,$9040,$9041,$9042,$9043,$9044),(nextval($9045),$9046,$9047,$9048,$9049,$9050,$9051,$9052,$9053,$9054,$9055,$9056,$9057,$9058),(nextval($9059),$9060,$9061,$9062,$9063,$9064,$9065,$9066,$9067,$9068,$9069,$9070,$9071,$9072),(nextval($9073),$9074,$9075,$9076,$9077,$9078,$9079,$9080,$9081,$9082,$9083,$9084,$9085,$9086),(nextval($9087),$9088,$9089,$9090,$9091,$9092,$9093,$9094,$9095,$9096,$9097,$9098,$9099,$9100),(nextval($9101),$9102,$9103,$9104,$9105,$9106,$9107,$9108,$9109,$9110,$9111,$9112,$9113,$9114),(nextval($9115),$9116,$9117,$9118,$9119,$9120,$9121,$9122,$9123,$9124,$9125,$9126,$9127,$9128),(nextval($9129),$9130,$9131,$9132,$9133,$9134,$9135,$9136,$9137,$9138,$9139,$9140,$9141,$9142),(nextval($9143),$9144,$9145,$9146,$9147,$9148,$9149,$9150,$9151,$9152,$9153,$9154,$9155,$9156),(nextval($9157),$9158,$9159,$9160,$9161,$9162,$9163,$9164,$9165,$9166,$9167,$9168,$9169,$9170),(nextval($9171),$9172,$9173,$9174,$9175,$9176,$9177,$9178,$9179,$9180,$9181,$9182,$9183,$9184),(nextval($9185),$9186,$9187,$9188,$9189,$9190,$9191,$9192,$9193,$9194,$9195,$9196,$9197,$9198),(nextval($9199),$9200,$9201,$9202,$9203,$9204,$9205,$9206,$9207,$9208,$9209,$9210,$9211,$9212),(nextval($9213),$9214,$9215,$9216,$9217,$9218,$9219,$9220,$9221,$9222,$9223,$9224,$9225,$9226),(nextval($9227),$9228,$9229,$9230,$9231,$9232,$9233,$9234,$9235,$9236,$9237,$9238,$9239,$9240),(nextval($9241),$9242,$9243,$9244,$9245,$9246,$9247,$9248,$9249,$9250,$9251,$9252,$9253,$9254),(nextval($9255),$9256,$9257,$9258,$9259,$9260,$9261,$9262,$9263,$9264,$9265,$9266,$9267,$9268),(nextval($9269),$9270,$9271,$9272,$9273,$9274,$9275,$9276,$9277,$9278,$9279,$9280,$9281,$9282),(nextval($9283),$9284,$9285,$9286,$9287,$9288,$9289,$9290,$9291,$9292,$9293,$9294,$9295,$9296),(nextval($9297),$9298,$9299,$9300,$9301,$9302,$9303,$9304,$9305,$9306,$9307,$9308,$9309,$9310),(nextval($9311),$9312,$9313,$9314,$9315,$9316,$9317,$9318,$9319,$9320,$9321,$9322,$9323,$9324),(nextval($9325),$9326,$9327,$9328,$9329,$9330,$9331,$9332,$9333,$9334,$9335,$9336,$9337,$9338),(nextval($9339),$9340,$9341,$9342,$9343,$9344,$9345,$9346,$9347,$9348,$9349,$9350,$9351,$9352),(nextval($9353),$9354,$9355,$9356,$9357,$9358,$9359,$9360,$9361,$9362,$9363,$9364,$9365,$9366),(nextval($9367),$9368,$9369,$9370,$9371,$9372,$9373,$9374,$9375,$9376,$9377,$9378,$9379,$9380),(nextval($9381),$9382,$9383,$9384,$9385,$9386,$9387,$9388,$9389,$9390,$9391,$9392,$9393,$9394),(nextval($9395),$9396,$9397,$9398,$9399,$9400,$9401,$9402,$9403,$9404,$9405,$9406,$9407,$9408),(nextval($9409),$9410,$9411,$9412,$9413,$9414,$9415,$9416,$9417,$9418,$9419,$9420,$9421,$9422),(nextval($9423),$9424,$9425,$9426,$9427,$9428,$9429,$9430,$9431,$9432,$9433,$9434,$9435,$9436),(nextval($9437),$9438,$9439,$9440,$9441,$9442,$9443,$9444,$9445,$9446,$9447,$9448,$9449,$9450),(nextval($9451),$9452,$9453,$9454,$9455,$9456,$9457,$9458,$9459,$9460,$9461,$9462,$9463,$9464),(nextval($9465),$9466,$9467,$9468,$9469,$9470,$9471,$9472,$9473,$9474,$9475,$9476,$9477,$9478),(nextval($9479),$9480,$9481,$9482,$9483,$9484,$9485,$9486,$9487,$9488,$9489,$9490,$9491,$9492),(nextval($9493),$9494,$9495,$9496,$9497,$9498,$9499,$9500,$9501,$9502,$9503,$9504,$9505,$9506),(nextval($9507),$9508,$9509,$9510,$9511,$9512,$9513,$9514,$9515,$9516,$9517,$9518,$9519,$9520),(nextval($9521),$9522,$9523,$9524,$9525,$9526,$9527,$9528,$9529,$9530,$9531,$9532,$9533,$9534),(nextval($9535),$9536,$9537,$9538,$9539,$9540,$9541,$9542,$9543,$9544,$9545,$9546,$9547,$9548),(nextval($9549),$9550,$9551,$9552,$9553,$9554,$9555,$9556,$9557,$9558,$9559,$9560,$9561,$9562),(nextval($9563),$9564,$9565,$9566,$9567,$9568,$9569,$9570,$9571,$9572,$9573,$9574,$9575,$9576),(nextval($9577),$9578,$9579,$9580,$9581,$9582,$9583,$9584,$9585,$9586,$9587,$9588,$9589,$9590),(nextval($9591),$9592,$9593,$9594,$9595,$9596,$9597,$9598,$9599,$9600,$9601,$9602,$9603,$9604),(nextval($9605),$9606,$9607,$9608,$9609,$9610,$9611,$9612,$9613,$9614,$9615,$9616,$9617,$9618),(nextval($9619),$9620,$9621,$9622,$9623,$9624,$9625,$9626,$9627,$9628,$9629,$9630,$9631,$9632),(nextval($9633),$9634,$9635,$9636,$9637,$9638,$9639,$9640,$9641,$9642,$9643,$9644,$9645,$9646),(nextval($9647),$9648,$9649,$9650,$9651,$9652,$9653,$9654,$9655,$9656,$9657,$9658,$9659,$9660),(nextval($9661),$9662,$9663,$9664,$9665,$9666,$9667,$9668,$9669,$9670,$9671,$9672,$9673,$9674),(nextval($9675),$9676,$9677,$9678,$9679,$9680,$9681,$9682,$9683,$9684,$9685,$9686,$9687,$9688),(nextval($9689),$9690,$9691,$9692,$9693,$9694,$9695,$9696,$9697,$9698,$9699,$9700,$9701,$9702),(nextval($9703),$9704,$9705,$9706,$9707,$9708,$9709,$9710,$9711,$9712,$9713,$9714,$9715,$9716),(nextval($9717),$9718,$9719,$9720,$9721,$9722,$9723,$9724,$9725,$9726,$9727,$9728,$9729,$9730),(nextval($9731),$9732,$9733,$9734,$9735,$9736,$9737,$9738,$9739,$9740,$9741,$9742,$9743,$9744),(nextval($9745),$9746,$9747,$9748,$9749,$9750,$9751,$9752,$9753,$9754,$9755,$9756,$9757,$9758),(nextval($9759),$9760,$9761,$9762,$9763,$9764,$9765,$9766,$9767,$9768,$9769,$9770,$9771,$9772),(nextval($9773),$9774,$9775,$9776,$9777,$9778,$9779,$9780,$9781,$9782,$9783,$9784,$9785,$9786),(nextval($9787),$9788,$9789,$9790,$9791,$9792,$9793,$9794,$9795,$9796,$9797,$9798,$9799,$9800),(nextval($9801),$9802,$9803,$9804,$9805,$9806,$9807,$9808,$9809,$9810,$9811,$9812,$9813,$9814),(nextval($9815),$9816,$9817,$9818,$9819,$9820,$9821,$9822,$9823,$9824,$9825,$9826,$9827,$9828),(nextval($9829),$9830,$9831,$9832,$9833,$9834,$9835,$9836,$9837,$9838,$9839,$9840,$9841,$9842),(nextval($9843),$9844,$9845,$9846,$9847,$9848,$9849,$9850,$9851,$9852,$9853,$9854,$9855,$9856),(nextval($9857),$9858,$9859,$9860,$9861,$9862,$9863,$9864,$9865,$9866,$9867,$9868,$9869,$9870),(nextval($9871),$9872,$9873,$9874,$9875,$9876,$9877,$9878,$9879,$9880,$9881,$9882,$9883,$9884),(nextval($9885),$9886,$9887,$9888,$9889,$9890,$9891,$9892,$9893,$9894,$9895,$9896,$9897,$9898),(nextval($9899),$9900,$9901,$9902,$9903,$9904,$9905,$9906,$9907,$9908,$9909,$9910,$9911,$9912),(nextval($9913),$9914,$9915,$9916,$9917,$9918,$9919,$9920,$9921,$9922,$9923,$9924,$9925,$9926),(nextval($9927),$9928,$9929,$9930,$9931,$9932,$9933,$9934,$9935,$9936,$9937,$9938,$9939,$9940),(nextval($9941),$9942,$9943,$9944,$9945,$9946,$9947,$9948,$9949,$9950,$9951,$9952,$9953,$9954),(nextval($9955),$9956,$9957,$9958,$9959,$9960,$9961,$9962,$9963,$9964,$9965,$9966,$9967,$9968),(nextval($9969),$9970,$9971,$9972,$9973,$9974,$9975,$9976,$9977,$9978,$9979,$9980,$9981,$9982),(nextval($9983),$9984,$9985,$9986,$9987,$9988,$9989,$9990,$9991,$9992,$9993,$9994,$9995,$9996),(nextval($9997),$9998,$9999,$10000,$10001,$10002,$10003,$10004,$10005,$10006,$10007,$10008,$10009,$10010),(nextval($10011),$10012,$10013,$10014,$10015,$10016,$10017,$10018,$10019,$10020,$10021,$10022,$10023,$10024),(nextval($10025),$10026,$10027,$10028,$10029,$10030,$10031,$10032,$10033,$10034,$10035,$10036,$10037,$10038),(nextval($10039),$10040,$10041,$10042,$10043,$10044,$10045,$10046,$10047,$10048,$10049,$10050,$10051,$10052),(nextval($10053),$10054,$10055,$10056,$10057,$10058,$10059,$10060,$10061,$10062,$10063,$10064,$10065,$10066),(nextval($10067),$10068,$10069,$10070,$10071,$10072,$10073,$10074,$10075,$10076,$10077,$10078,$10079,$10080),(nextval($10081),$10082,$10083,$10084,$10085,$10086,$10087,$10088,$10089,$10090,$10091,$10092,$10093,$10094),(nextval($10095),$10096,$10097,$10098,$10099,$10100,$10101,$10102,$10103,$10104,$10105,$10106,$10107,$10108),(nextval($10109),$10110,$10111,$10112,$10113,$10114,$10115,$10116,$10117,$10118,$10119,$10120,$10121,$10122),(nextval($10123),$10124,$10125,$10126,$10127,$10128,$10129,$10130,$10131,$10132,$10133,$10134,$10135,$10136),(nextval($10137),$10138,$10139,$10140,$10141,$10142,$10143,$10144,$10145,$10146,$10147,$10148,$10149,$10150),(nextval($10151),$10152,$10153,$10154,$10155,$10156,$10157,$10158,$10159,$10160,$10161,$10162,$10163,$10164),(nextval($10165),$10166,$10167,$10168,$10169,$10170,$10171,$10172,$10173,$10174,$10175,$10176,$10177,$10178),(nextval($10179),$10180,$10181,$10182,$10183,$10184,$10185,$10186,$10187,$10188,$10189,$10190,$10191,$10192),(nextval($10193),$10194,$10195,$10196,$10197,$10198,$10199,$10200,$10201,$10202,$10203,$10204,$10205,$10206),(nextval($10207),$10208,$10209,$10210,$10211,$10212,$10213,$10214,$10215,$10216,$10217,$10218,$10219,$10220),(nextval($10221),$10222,$10223,$10224,$10225,$10226,$10227,$10228,$10229,$10230,$10231,$10232,$10233,$10234),(nextval($10235),$10236,$10237,$10238,$10239,$10240,$10241,$10242,$10243,$10244,$10245,$10246,$10247,$10248),(nextval($10249),$10250,$10251,$10252,$10253,$10254,$10255,$10256,$10257,$10258,$10259,$10260,$10261,$10262),(nextval($10263),$10264,$10265,$10266,$10267,$10268,$10269,$10270,$10271,$10272,$10273,$10274,$10275,$10276),(nextval($10277),$10278,$10279,$10280,$10281,$10282,$10283,$10284,$10285,$10286,$10287,$10288,$10289,$10290),(nextval($10291),$10292,$10293,$10294,$10295,$10296,$10297,$10298,$10299,$10300,$10301,$10302,$10303,$10304),(nextval($10305),$10306,$10307,$10308,$10309,$10310,$10311,$10312,$10313,$10314,$10315,$10316,$10317,$10318),(nextval($10319),$10320,$10321,$10322,$10323,$10324,$10325,$10326,$10327,$10328,$10329,$10330,$10331,$10332),(nextval($10333),$10334,$10335,$10336,$10337,$10338,$10339,$10340,$10341,$10342,$10343,$10344,$10345,$10346),(nextval($10347),$10348,$10349,$10350,$10351,$10352,$10353,$10354,$10355,$10356,$10357,$10358,$10359,$10360),(nextval($10361),$10362,$10363,$10364,$10365,$10366,$10367,$10368,$10369,$10370,$10371,$10372,$10373,$10374),(nextval($10375),$10376,$10377,$10378,$10379,$10380,$10381,$10382,$10383,$10384,$10385,$10386,$10387,$10388),(nextval($10389),$10390,$10391,$10392,$10393,$10394,$10395,$10396,$10397,$10398,$10399,$10400,$10401,$10402),(nextval($10403),$10404,$10405,$10406,$10407,$10408,$10409,$10410,$10411,$10412,$10413,$10414,$10415,$10416),(nextval($10417),$10418,$10419,$10420,$10421,$10422,$10423,$10424,$10425,$10426,$10427,$10428,$10429,$10430),(nextval($10431),$10432,$10433,$10434,$10435,$10436,$10437,$10438,$10439,$10440,$10441,$10442,$10443,$10444),(nextval($10445),$10446,$10447,$10448,$10449,$10450,$10451,$10452,$10453,$10454,$10455,$10456,$10457,$10458),(nextval($10459),$10460,$10461,$10462,$10463,$10464,$10465,$10466,$10467,$10468,$10469,$10470,$10471,$10472),(nextval($10473),$10474,$10475,$10476,$10477,$10478,$10479,$10480,$10481,$10482,$10483,$10484,$10485,$10486),(nextval($10487),$10488,$10489,$10490,$10491,$10492,$10493,$10494,$10495,$10496,$10497,$10498,$10499,$10500),(nextval($10501),$10502,$10503,$10504,$10505,$10506,$10507,$10508,$10509,$10510,$10511,$10512,$10513,$10514),(nextval($10515),$10516,$10517,$10518,$10519,$10520,$10521,$10522,$10523,$10524,$10525,$10526,$10527,$10528),(nextval($10529),$10530,$10531,$10532,$10533,$10534,$10535,$10536,$10537,$10538,$10539,$10540,$10541,$10542),(nextval($10543),$10544,$10545,$10546,$10547,$10548,$10549,$10550,$10551,$10552,$10553,$10554,$10555,$10556),(nextval($10557),$10558,$10559,$10560,$10561,$10562,$10563,$10564,$10565,$10566,$10567,$10568,$10569,$10570),(nextval($10571),$10572,$10573,$10574,$10575,$10576,$10577,$10578,$10579,$10580,$10581,$10582,$10583,$10584),(nextval($10585),$10586,$10587,$10588,$10589,$10590,$10591,$10592,$10593,$10594,$10595,$10596,$10597,$10598),(nextval($10599),$10600,$10601,$10602,$10603,$10604,$10605,$10606,$10607,$10608,$10609,$10610,$10611,$10612),(nextval($10613),$10614,$10615,$10616,$10617,$10618,$10619,$10620,$10621,$10622,$10623,$10624,$10625,$10626),(nextval($10627),$10628,$10629,$10630,$10631,$10632,$10633,$10634,$10635,$10636,$10637,$10638,$10639,$10640),(nextval($10641),$10642,$10643,$10644,$10645,$10646,$10647,$10648,$10649,$10650,$10651,$10652,$10653,$10654),(nextval($10655),$10656,$10657,$10658,$10659,$10660,$10661,$10662,$10663,$10664,$10665,$10666,$10667,$10668),(nextval($10669),$10670,$10671,$10672,$10673,$10674,$10675,$10676,$10677,$10678,$10679,$10680,$10681,$10682),(nextval($10683),$10684,$10685,$10686,$10687,$10688,$10689,$10690,$10691,$10692,$10693,$10694,$10695,$10696),(nextval($10697),$10698,$10699,$10700,$10701,$10702,$10703,$10704,$10705,$10706,$10707,$10708,$10709,$10710),(nextval($10711),$10712,$10713,$10714,$10715,$10716,$10717,$10718,$10719,$10720,$10721,$10722,$10723,$10724),(nextval($10725),$10726,$10727,$10728,$10729,$10730,$10731,$10732,$10733,$10734,$10735,$10736,$10737,$10738),(nextval($10739),$10740,$10741,$10742,$10743,$10744,$10745,$10746,$10747,$10748,$10749,$10750,$10751,$10752),(nextval($10753),$10754,$10755,$10756,$10757,$10758,$10759,$10760,$10761,$10762,$10763,$10764,$10765,$10766),(nextval($10767),$10768,$10769,$10770,$10771,$10772,$10773,$10774,$10775,$10776,$10777,$10778,$10779,$10780),(nextval($10781),$10782,$10783,$10784,$10785,$10786,$10787,$10788,$10789,$10790,$10791,$10792,$10793,$10794),(nextval($10795),$10796,$10797,$10798,$10799,$10800,$10801,$10802,$10803,$10804,$10805,$10806,$10807,$10808),(nextval($10809),$10810,$10811,$10812,$10813,$10814,$10815,$10816,$10817,$10818,$10819,$10820,$10821,$10822),(nextval($10823),$10824,$10825,$10826,$10827,$10828,$10829,$10830,$10831,$10832,$10833,$10834,$10835,$10836),(nextval($10837),$10838,$10839,$10840,$10841,$10842,$10843,$10844,$10845,$10846,$10847,$10848,$10849,$10850),(nextval($10851),$10852,$10853,$10854,$10855,$10856,$10857,$10858,$10859,$10860,$10861,$10862,$10863,$10864),(nextval($10865),$10866,$10867,$10868,$10869,$10870,$10871,$10872,$10873,$10874,$10875,$10876,$10877,$10878),(nextval($10879),$10880,$10881,$10882,$10883,$10884,$10885,$10886,$10887,$10888,$10889,$10890,$10891,$10892),(nextval($10893),$10894,$10895,$10896,$10897,$10898,$10899,$10900,$10901,$10902,$10903,$10904,$10905,$10906),(nextval($10907),$10908,$10909,$10910,$10911,$10912,$10913,$10914,$10915,$10916,$10917,$10918,$10919,$10920),(nextval($10921),$10922,$10923,$10924,$10925,$10926,$10927,$10928,$10929,$10930,$10931,$10932,$10933,$10934),(nextval($10935),$10936,$10937,$10938,$10939,$10940,$10941,$10942,$10943,$10944,$10945,$10946,$10947,$10948),(nextval($10949),$10950,$10951,$10952,$10953,$10954,$10955,$10956,$10957,$10958,$10959,$10960,$10961,$10962),(nextval($10963),$10964,$10965,$10966,$10967,$10968,$10969,$10970,$10971,$10972,$10973,$10974,$10975,$10976),(nextval($10977),$10978,$10979,$10980,$10981,$10982,$10983,$10984,$10985,$10986,$10987,$10988,$10989,$10990),(nextval($10991),$10992,$10993,$10994,$10995,$10996,$10997,$10998,$10999,$11000,$11001,$11002,$11003,$11004),(nextval($11005),$11006,$11007,$11008,$11009,$11010,$11011,$11012,$11013,$11014,$11015,$11016,$11017,$11018),(nextval($11019),$11020,$11021,$11022,$11023,$11024,$11025,$11026,$11027,$11028,$11029,$11030,$11031,$11032),(nextval($11033),$11034,$11035,$11036,$11037,$11038,$11039,$11040,$11041,$11042,$11043,$11044,$11045,$11046),(nextval($11047),$11048,$11049,$11050,$11051,$11052,$11053,$11054,$11055,$11056,$11057,$11058,$11059,$11060),(nextval($11061),$11062,$11063,$11064,$11065,$11066,$11067,$11068,$11069,$11070,$11071,$11072,$11073,$11074),(nextval($11075),$11076,$11077,$11078,$11079,$11080,$11081,$11082,$11083,$11084,$11085,$11086,$11087,$11088),(nextval($11089),$11090,$11091,$11092,$11093,$11094,$11095,$11096,$11097,$11098,$11099,$11100,$11101,$11102),(nextval($11103),$11104,$11105,$11106,$11107,$11108,$11109,$11110,$11111,$11112,$11113,$11114,$11115,$11116),(nextval($11117),$11118,$11119,$11120,$11121,$11122,$11123,$11124,$11125,$11126,$11127,$11128,$11129,$11130),(nextval($11131),$11132,$11133,$11134,$11135,$11136,$11137,$11138,$11139,$11140,$11141,$11142,$11143,$11144),(nextval($11145),$11146,$11147,$11148,$11149,$11150,$11151,$11152,$11153,$11154,$11155,$11156,$11157,$11158),(nextval($11159),$11160,$11161,$11162,$11163,$11164,$11165,$11166,$11167,$11168,$11169,$11170,$11171,$11172),(nextval($11173),$11174,$11175,$11176,$11177,$11178,$11179,$11180,$11181,$11182,$11183,$11184,$11185,$11186),(nextval($11187),$11188,$11189,$11190,$11191,$11192,$11193,$11194,$11195,$11196,$11197,$11198,$11199,$11200),(nextval($11201),$11202,$11203,$11204,$11205,$11206,$11207,$11208,$11209,$11210,$11211,$11212,$11213,$11214),(nextval($11215),$11216,$11217,$11218,$11219,$11220,$11221,$11222,$11223,$11224,$11225,$11226,$11227,$11228),(nextval($11229),$11230,$11231,$11232,$11233,$11234,$11235,$11236,$11237,$11238,$11239,$11240,$11241,$11242),(nextval($11243),$11244,$11245,$11246,$11247,$11248,$11249,$11250,$11251,$11252,$11253,$11254,$11255,$11256),(nextval($11257),$11258,$11259,$11260,$11261,$11262,$11263,$11264,$11265,$11266,$11267,$11268,$11269,$11270),(nextval($11271),$11272,$11273,$11274,$11275,$11276,$11277,$11278,$11279,$11280,$11281,$11282,$11283,$11284),(nextval($11285),$11286,$11287,$11288,$11289,$11290,$11291,$11292,$11293,$11294,$11295,$11296,$11297,$11298),(nextval($11299),$11300,$11301,$11302,$11303,$11304,$11305,$11306,$11307,$11308,$11309,$11310,$11311,$11312),(nextval($11313),$11314,$11315,$11316,$11317,$11318,$11319,$11320,$11321,$11322,$11323,$11324,$11325,$11326),(nextval($11327),$11328,$11329,$11330,$11331,$11332,$11333,$11334,$11335,$11336,$11337,$11338,$11339,$11340),(nextval($11341),$11342,$11343,$11344,$11345,$11346,$11347,$11348,$11349,$11350,$11351,$11352,$11353,$11354),(nextval($11355),$11356,$11357,$11358,$11359,$11360,$11361,$11362,$11363,$11364,$11365,$11366,$11367,$11368),(nextval($11369),$11370,$11371,$11372,$11373,$11374,$11375,$11376,$11377,$11378,$11379,$11380,$11381,$11382),(nextval($11383),$11384,$11385,$11386,$11387,$11388,$11389,$11390,$11391,$11392,$11393,$11394,$11395,$11396),(nextval($11397),$11398,$11399,$11400,$11401,$11402,$11403,$11404,$11405,$11406,$11407,$11408,$11409,$11410),(nextval($11411),$11412,$11413,$11414,$11415,$11416,$11417,$11418,$11419,$11420,$11421,$11422,$11423,$11424),(nextval($11425),$11426,$11427,$11428,$11429,$11430,$11431,$11432,$11433,$11434,$11435,$11436,$11437,$11438),(nextval($11439),$11440,$11441,$11442,$11443,$11444,$11445,$11446,$11447,$11448,$11449,$11450,$11451,$11452),(nextval($11453),$11454,$11455,$11456,$11457,$11458,$11459,$11460,$11461,$11462,$11463,$11464,$11465,$11466),(nextval($11467),$11468,$11469,$11470,$11471,$11472,$11473,$11474,$11475,$11476,$11477,$11478,$11479,$11480),(nextval($11481),$11482,$11483,$11484,$11485,$11486,$11487,$11488,$11489,$11490,$11491,$11492,$11493,$11494),(nextval($11495),$11496,$11497,$11498,$11499,$11500,$11501,$11502,$11503,$11504,$11505,$11506,$11507,$11508),(nextval($11509),$11510,$11511,$11512,$11513,$11514,$11515,$11516,$11517,$11518,$11519,$11520,$11521,$11522),(nextval($11523),$11524,$11525,$11526,$11527,$11528,$11529,$11530,$11531,$11532,$11533,$11534,$11535,$11536),(nextval($11537),$11538,$11539,$11540,$11541,$11542,$11543,$11544,$11545,$11546,$11547,$11548,$11549,$11550),(nextval($11551),$11552,$11553,$11554,$11555,$11556,$11557,$11558,$11559,$11560,$11561,$11562,$11563,$11564),(nextval($11565),$11566,$11567,$11568,$11569,$11570,$11571,$11572,$11573,$11574,$11575,$11576,$11577,$11578),(nextval($11579),$11580,$11581,$11582,$11583,$11584,$11585,$11586,$11587,$11588,$11589,$11590,$11591,$11592),(nextval($11593),$11594,$11595,$11596,$11597,$11598,$11599,$11600,$11601,$11602,$11603,$11604,$11605,$11606),(nextval($11607),$11608,$11609,$11610,$11611,$11612,$11613,$11614,$11615,$11616,$11617,$11618,$11619,$11620),(nextval($11621),$11622,$11623,$11624,$11625,$11626,$11627,$11628,$11629,$11630,$11631,$11632,$11633,$11634),(nextval($11635),$11636,$11637,$11638,$11639,$11640,$11641,$11642,$11643,$11644,$11645,$11646,$11647,$11648),(nextval($11649),$11650,$11651,$11652,$11653,$11654,$11655,$11656,$11657,$11658,$11659,$11660,$11661,$11662),(nextval($11663),$11664,$11665,$11666,$11667,$11668,$11669,$11670,$11671,$11672,$11673,$11674,$11675,$11676),(nextval($11677),$11678,$11679,$11680,$11681,$11682,$11683,$11684,$11685,$11686,$11687,$11688,$11689,$11690),(nextval($11691),$11692,$11693,$11694,$11695,$11696,$11697,$11698,$11699,$11700,$11701,$11702,$11703,$11704),(nextval($11705),$11706,$11707,$11708,$11709,$11710,$11711,$11712,$11713,$11714,$11715,$11716,$11717,$11718),(nextval($11719),$11720,$11721,$11722,$11723,$11724,$11725,$11726,$11727,$11728,$11729,$11730,$11731,$11732),(nextval($11733),$11734,$11735,$11736,$11737,$11738,$11739,$11740,$11741,$11742,$11743,$11744,$11745,$11746),(nextval($11747),$11748,$11749,$11750,$11751,$11752,$11753,$11754,$11755,$11756,$11757,$11758,$11759,$11760),(nextval($11761),$11762,$11763,$11764,$11765,$11766,$11767,$11768,$11769,$11770,$11771,$11772,$11773,$11774),(nextval($11775),$11776,$11777,$11778,$11779,$11780,$11781,$11782,$11783,$11784,$11785,$11786,$11787,$11788),(nextval($11789),$11790,$11791,$11792,$11793,$11794,$11795,$11796,$11797,$11798,$11799,$11800,$11801,$11802),(nextval($11803),$11804,$11805,$11806,$11807,$11808,$11809,$11810,$11811,$11812,$11813,$11814,$11815,$11816),(nextval($11817),$11818,$11819,$11820,$11821,$11822,$11823,$11824,$11825,$11826,$11827,$11828,$11829,$11830),(nextval($11831),$11832,$11833,$11834,$11835,$11836,$11837,$11838,$11839,$11840,$11841,$11842,$11843,$11844),(nextval($11845),$11846,$11847,$11848,$11849,$11850,$11851,$11852,$11853,$11854,$11855,$11856,$11857,$11858),(nextval($11859),$11860,$11861,$11862,$11863,$11864,$11865,$11866,$11867,$11868,$11869,$11870,$11871,$11872),(nextval($11873),$11874,$11875,$11876,$11877,$11878,$11879,$11880,$11881,$11882,$11883,$11884,$11885,$11886),(nextval($11887),$11888,$11889,$11890,$11891,$11892,$11893,$11894,$11895,$11896,$11897,$11898,$11899,$11900),(nextval($11901),$11902,$11903,$11904,$11905,$11906,$11907,$11908,$11909,$11910,$11911,$11912,$11913,$11914),(nextval($11915),$11916,$11917,$11918,$11919,$11920,$11921,$11922,$11923,$11924,$11925,$11926,$11927,$11928),(nextval($11929),$11930,$11931,$11932,$11933,$11934,$11935,$11936,$11937,$11938,$11939,$11940,$11941,$11942),(nextval($11943),$11944,$11945,$11946,$11947,$11948,$11949,$11950,$11951,$11952,$11953,$11954,$11955,$11956),(nextval($11957),$11958,$11959,$11960,$11961,$11962,$11963,$11964,$11965,$11966,$11967,$11968,$11969,$11970),(nextval($11971),$11972,$11973,$11974,$11975,$11976,$11977,$11978,$11979,$11980,$11981,$11982,$11983,$11984),(nextval($11985),$11986,$11987,$11988,$11989,$11990,$11991,$11992,$11993,$11994,$11995,$11996,$11997,$11998),(nextval($11999),$12000,$12001,$12002,$12003,$12004,$12005,$12006,$12007,$12008,$12009,$12010,$12011,$12012),(nextval($12013),$12014,$12015,$12016,$12017,$12018,$12019,$12020,$12021,$12022,$12023,$12024,$12025,$12026),(nextval($12027),$12028,$12029,$12030,$12031,$12032,$12033,$12034,$12035,$12036,$12037,$12038,$12039,$12040),(nextval($12041),$12042,$12043,$12044,$12045,$12046,$12047,$12048,$12049,$12050,$12051,$12052,$12053,$12054),(nextval($12055),$12056,$12057,$12058,$12059,$12060,$12061,$12062,$12063,$12064,$12065,$12066,$12067,$12068),(nextval($12069),$12070,$12071,$12072,$12073,$12074,$12075,$12076,$12077,$12078,$12079,$12080,$12081,$12082),(nextval($12083),$12084,$12085,$12086,$12087,$12088,$12089,$12090,$12091,$12092,$12093,$12094,$12095,$12096),(nextval($12097),$12098,$12099,$12100,$12101,$12102,$12103,$12104,$12105,$12106,$12107,$12108,$12109,$12110),(nextval($12111),$12112,$12113,$12114,$12115,$12116,$12117,$12118,$12119,$12120,$12121,$12122,$12123,$12124),(nextval($12125),$12126,$12127,$12128,$12129,$12130,$12131,$12132,$12133,$12134,$12135,$12136,$12137,$12138),(nextval($12139),$12140,$12141,$12142,$12143,$12144,$12145,$12146,$12147,$12148,$12149,$12150,$12151,$12152),(nextval($12153),$12154,$12155,$12156,$12157,$12158,$12159,$12160,$12161,$12162,$12163,$12164,$12165,$12166),(nextval($12167),$12168,$12169,$12170,$12171,$12172,$12173,$12174,$12175,$12176,$12177,$12178,$12179,$12180),(nextval($12181),$12182,$12183,$12184,$12185,$12186,$12187,$12188,$12189,$12190,$12191,$12192,$12193,$12194),(nextval($12195),$12196,$12197,$12198,$12199,$12200,$12201,$12202,$12203,$12204,$12205,$12206,$12207,$12208),(nextval($12209),$12210,$12211,$12212,$12213,$12214,$12215,$12216,$12217,$12218,$12219,$12220,$12221,$12222),(nextval($12223),$12224,$12225,$12226,$12227,$12228,$12229,$12230,$12231,$12232,$12233,$12234,$12235,$12236),(nextval($12237),$12238,$12239,$12240,$12241,$12242,$12243,$12244,$12245,$12246,$12247,$12248,$12249,$12250),(nextval($12251),$12252,$12253,$12254,$12255,$12256,$12257,$12258,$12259,$12260,$12261,$12262,$12263,$12264),(nextval($12265),$12266,$12267,$12268,$12269,$12270,$12271,$12272,$12273,$12274,$12275,$12276,$12277,$12278),(nextval($12279),$12280,$12281,$12282,$12283,$12284,$12285,$12286,$12287,$12288,$12289,$12290,$12291,$12292),(nextval($12293),$12294,$12295,$12296,$12297,$12298,$12299,$12300,$12301,$12302,$12303,$12304,$12305,$12306),(nextval($12307),$12308,$12309,$12310,$12311,$12312,$12313,$12314,$12315,$12316,$12317,$12318,$12319,$12320),(nextval($12321),$12322,$12323,$12324,$12325,$12326,$12327,$12328,$12329,$12330,$12331,$12332,$12333,$12334),(nextval($12335),$12336,$12337,$12338,$12339,$12340,$12341,$12342,$12343,$12344,$12345,$12346,$12347,$12348),(nextval($12349),$12350,$12351,$12352,$12353,$12354,$12355,$12356,$12357,$12358,$12359,$12360,$12361,$12362),(nextval($12363),$12364,$12365,$12366,$12367,$12368,$12369,$12370,$12371,$12372,$12373,$12374,$12375,$12376),(nextval($12377),$12378,$12379,$12380,$12381,$12382,$12383,$12384,$12385,$12386,$12387,$12388,$12389,$12390),(nextval($12391),$12392,$12393,$12394,$12395,$12396,$12397,$12398,$12399,$12400,$12401,$12402,$12403,$12404),(nextval($12405),$12406,$12407,$12408,$12409,$12410,$12411,$12412,$12413,$12414,$12415,$12416,$12417,$12418),(nextval($12419),$12420,$12421,$12422,$12423,$12424,$12425,$12426,$12427,$12428,$12429,$12430,$12431,$12432),(nextval($12433),$12434,$12435,$12436,$12437,$12438,$12439,$12440,$12441,$12442,$12443,$12444,$12445,$12446),(nextval($12447),$12448,$12449,$12450,$12451,$12452,$12453,$12454,$12455,$12456,$12457,$12458,$12459,$12460),(nextval($12461),$12462,$12463,$12464,$12465,$12466,$12467,$12468,$12469,$12470,$12471,$12472,$12473,$12474),(nextval($12475),$12476,$12477,$12478,$12479,$12480,$12481,$12482,$12483,$12484,$12485,$12486,$12487,$12488),(nextval($12489),$12490,$12491,$12492,$12493,$12494,$12495,$12496,$12497,$12498,$12499,$12500,$12501,$12502),(nextval($12503),$12504,$12505,$12506,$12507,$12508,$12509,$12510,$12511,$12512,$12513,$12514,$12515,$12516),(nextval($12517),$12518,$12519,$12520,$12521,$12522,$12523,$12524,$12525,$12526,$12527,$12528,$12529,$12530),(nextval($12531),$12532,$12533,$12534,$12535,$12536,$12537,$12538,$12539,$12540,$12541,$12542,$12543,$12544),(nextval($12545),$12546,$12547,$12548,$12549,$12550,$12551,$12552,$12553,$12554,$12555,$12556,$12557,$12558),(nextval($12559),$12560,$12561,$12562,$12563,$12564,$12565,$12566,$12567,$12568,$12569,$12570,$12571,$12572),(nextval($12573),$12574,$12575,$12576,$12577,$12578,$12579,$12580,$12581,$12582,$12583,$12584,$12585,$12586),(nextval($12587),$12588,$12589,$12590,$12591,$12592,$12593,$12594,$12595,$12596,$12597,$12598,$12599,$12600),(nextval($12601),$12602,$12603,$12604,$12605,$12606,$12607,$12608,$12609,$12610,$12611,$12612,$12613,$12614),(nextval($12615),$12616,$12617,$12618,$12619,$12620,$12621,$12622,$12623,$12624,$12625,$12626,$12627,$12628),(nextval($12629),$12630,$12631,$12632,$12633,$12634,$12635,$12636,$12637,$12638,$12639,$12640,$12641,$12642),(nextval($12643),$12644,$12645,$12646,$12647,$12648,$12649,$12650,$12651,$12652,$12653,$12654,$12655,$12656),(nextval($12657),$12658,$12659,$12660,$12661,$12662,$12663,$12664,$12665,$12666,$12667,$12668,$12669,$12670),(nextval($12671),$12672,$12673,$12674,$12675,$12676,$12677,$12678,$12679,$12680,$12681,$12682,$12683,$12684),(nextval($12685),$12686,$12687,$12688,$12689,$12690,$12691,$12692,$12693,$12694,$12695,$12696,$12697,$12698),(nextval($12699),$12700,$12701,$12702,$12703,$12704,$12705,$12706,$12707,$12708,$12709,$12710,$12711,$12712),(nextval($12713),$12714,$12715,$12716,$12717,$12718,$12719,$12720,$12721,$12722,$12723,$12724,$12725,$12726),(nextval($12727),$12728,$12729,$12730,$12731,$12732,$12733,$12734,$12735,$12736,$12737,$12738,$12739,$12740),(nextval($12741),$12742,$12743,$12744,$12745,$12746,$12747,$12748,$12749,$12750,$12751,$12752,$12753,$12754),(nextval($12755),$12756,$12757,$12758,$12759,$12760,$12761,$12762,$12763,$12764,$12765,$12766,$12767,$12768),(nextval($12769),$12770,$12771,$12772,$12773,$12774,$12775,$12776,$12777,$12778,$12779,$12780,$12781,$12782),(nextval($12783),$12784,$12785,$12786,$12787,$12788,$12789,$12790,$12791,$12792,$12793,$12794,$12795,$12796),(nextval($12797),$12798,$12799,$12800,$12801,$12802,$12803,$12804,$12805,$12806,$12807,$12808,$12809,$12810),(nextval($12811),$12812,$12813,$12814,$12815,$12816,$12817,$12818,$12819,$12820,$12821,$12822,$12823,$12824),(nextval($12825),$12826,$12827,$12828,$12829,$12830,$12831,$12832,$12833,$12834,$12835,$12836,$12837,$12838),(nextval($12839),$12840,$12841,$12842,$12843,$12844,$12845,$12846,$12847,$12848,$12849,$12850,$12851,$12852),(nextval($12853),$12854,$12855,$12856,$12857,$12858,$12859,$12860,$12861,$12862,$12863,$12864,$12865,$12866),(nextval($12867),$12868,$12869,$12870,$12871,$12872,$12873,$12874,$12875,$12876,$12877,$12878,$12879,$12880),(nextval($12881),$12882,$12883,$12884,$12885,$12886,$12887,$12888,$12889,$12890,$12891,$12892,$12893,$12894),(nextval($12895),$12896,$12897,$12898,$12899,$12900,$12901,$12902,$12903,$12904,$12905,$12906,$12907,$12908),(nextval($12909),$12910,$12911,$12912,$12913,$12914,$12915,$12916,$12917,$12918,$12919,$12920,$12921,$12922),(nextval($12923),$12924,$12925,$12926,$12927,$12928,$12929,$12930,$12931,$12932,$12933,$12934,$12935,$12936),(nextval($12937),$12938,$12939,$12940,$12941,$12942,$12943,$12944,$12945,$12946,$12947,$12948,$12949,$12950),(nextval($12951),$12952,$12953,$12954,$12955,$12956,$12957,$12958,$12959,$12960,$12961,$12962,$12963,$12964),(nextval($12965),$12966,$12967,$12968,$12969,$12970,$12971,$12972,$12973,$12974,$12975,$12976,$12977,$12978),(nextval($12979),$12980,$12981,$12982,$12983,$12984,$12985,$12986,$12987,$12988,$12989,$12990,$12991,$12992),(nextval($12993),$12994,$12995,$12996,$12997,$12998,$12999,$13000,$13001,$13002,$13003,$13004,$13005,$13006),(nextval($13007),$13008,$13009,$13010,$13011,$13012,$13013,$13014,$13015,$13016,$13017,$13018,$13019,$13020),(nextval($13021),$13022,$13023,$13024,$13025,$13026,$13027,$13028,$13029,$13030,$13031,$13032,$13033,$13034),(nextval($13035),$13036,$13037,$13038,$13039,$13040,$13041,$13042,$13043,$13044,$13045,$13046,$13047,$13048),(nextval($13049),$13050,$13051,$13052,$13053,$13054,$13055,$13056,$13057,$13058,$13059,$13060,$13061,$13062),(nextval($13063),$13064,$13065,$13066,$13067,$13068,$13069,$13070,$13071,$13072,$13073,$13074,$13075,$13076),(nextval($13077),$13078,$13079,$13080,$13081,$13082,$13083,$13084,$13085,$13086,$13087,$13088,$13089,$13090),(nextval($13091),$13092,$13093,$13094,$13095,$13096,$13097,$13098,$13099,$13100,$13101,$13102,$13103,$13104),(nextval($13105),$13106,$13107,$13108,$13109,$13110,$13111,$13112,$13113,$13114,$13115,$13116,$13117,$13118),(nextval($13119),$13120,$13121,$13122,$13123,$13124,$13125,$13126,$13127,$13128,$13129,$13130,$13131,$13132),(nextval($13133),$13134,$13135,$13136,$13137,$13138,$13139,$13140,$13141,$13142,$13143,$13144,$13145,$13146),(nextval($13147),$13148,$13149,$13150,$13151,$13152,$13153,$13154,$13155,$13156,$13157,$13158,$13159,$13160),(nextval($13161),$13162,$13163,$13164,$13165,$13166,$13167,$13168,$13169,$13170,$13171,$13172,$13173,$13174),(nextval($13175),$13176,$13177,$13178,$13179,$13180,$13181,$13182,$13183,$13184,$13185,$13186,$13187,$13188),(nextval($13189),$13190,$13191,$13192,$13193,$13194,$13195,$13196,$13197,$13198,$13199,$13200,$13201,$13202),(nextval($13203),$13204,$13205,$13206,$13207,$13208,$13209,$13210,$13211,$13212,$13213,$13214,$13215,$13216),(nextval($13217),$13218,$13219,$13220,$13221,$13222,$13223,$13224,$13225,$13226,$13227,$13228,$13229,$13230),(nextval($13231),$13232,$13233,$13234,$13235,$13236,$13237,$13238,$13239,$13240,$13241,$13242,$13243,$13244),(nextval($13245),$13246,$13247,$13248,$13249,$13250,$13251,$13252,$13253,$13254,$13255,$13256,$13257,$13258),(nextval($13259),$13260,$13261,$13262,$13263,$13264,$13265,$13266,$13267,$13268,$13269,$13270,$13271,$13272),(nextval($13273),$13274,$13275,$13276,$13277,$13278,$13279,$13280,$13281,$13282,$13283,$13284,$13285,$13286),(nextval($13287),$13288,$13289,$13290,$13291,$13292,$13293,$13294,$13295,$13296,$13297,$13298,$13299,$13300),(nextval($13301),$13302,$13303,$13304,$13305,$13306,$13307,$13308,$13309,$13310,$13311,$13312,$13313,$13314),(nextval($13315),$13316,$13317,$13318,$13319,$13320,$13321,$13322,$13323,$13324,$13325,$13326,$13327,$13328),(nextval($13329),$13330,$13331,$13332,$13333,$13334,$13335,$13336,$13337,$13338,$13339,$13340,$13341,$13342),(nextval($13343),$13344,$13345,$13346,$13347,$13348,$13349,$13350,$13351,$13352,$13353,$13354,$13355,$13356),(nextval($13357),$13358,$13359,$13360,$13361,$13362,$13363,$13364,$13365,$13366,$13367,$13368,$13369,$13370),(nextval($13371),$13372,$13373,$13374,$13375,$13376,$13377,$13378,$13379,$13380,$13381,$13382,$13383,$13384),(nextval($13385),$13386,$13387,$13388,$13389,$13390,$13391,$13392,$13393,$13394,$13395,$13396,$13397,$13398),(nextval($13399),$13400,$13401,$13402,$13403,$13404,$13405,$13406,$13407,$13408,$13409,$13410,$13411,$13412),(nextval($13413),$13414,$13415,$13416,$13417,$13418,$13419,$13420,$13421,$13422,$13423,$13424,$13425,$13426),(nextval($13427),$13428,$13429,$13430,$13431,$13432,$13433,$13434,$13435,$13436,$13437,$13438,$13439,$13440),(nextval($13441),$13442,$13443,$13444,$13445,$13446,$13447,$13448,$13449,$13450,$13451,$13452,$13453,$13454),(nextval($13455),$13456,$13457,$13458,$13459,$13460,$13461,$13462,$13463,$13464,$13465,$13466,$13467,$13468),(nextval($13469),$13470,$13471,$13472,$13473,$13474,$13475,$13476,$13477,$13478,$13479,$13480,$13481,$13482),(nextval($13483),$13484,$13485,$13486,$13487,$13488,$13489,$13490,$13491,$13492,$13493,$13494,$13495,$13496),(nextval($13497),$13498,$13499,$13500,$13501,$13502,$13503,$13504,$13505,$13506,$13507,$13508,$13509,$13510),(nextval($13511),$13512,$13513,$13514,$13515,$13516,$13517,$13518,$13519,$13520,$13521,$13522,$13523,$13524),(nextval($13525),$13526,$13527,$13528,$13529,$13530,$13531,$13532,$13533,$13534,$13535,$13536,$13537,$13538),(nextval($13539),$13540,$13541,$13542,$13543,$13544,$13545,$13546,$13547,$13548,$13549,$13550,$13551,$13552),(nextval($13553),$13554,$13555,$13556,$13557,$13558,$13559,$13560,$13561,$13562,$13563,$13564,$13565,$13566),(nextval($13567),$13568,$13569,$13570,$13571,$13572,$13573,$13574,$13575,$13576,$13577,$13578,$13579,$13580),(nextval($13581),$13582,$13583,$13584,$13585,$13586,$13587,$13588,$13589,$13590,$13591,$13592,$13593,$13594),(nextval($13595),$13596,$13597,$13598,$13599,$13600,$13601,$13602,$13603,$13604,$13605,$13606,$13607,$13608),(nextval($13609),$13610,$13611,$13612,$13613,$13614,$13615,$13616,$13617,$13618,$13619,$13620,$13621,$13622),(nextval($13623),$13624,$13625,$13626,$13627,$13628,$13629,$13630,$13631,$13632,$13633,$13634,$13635,$13636),(nextval($13637),$13638,$13639,$13640,$13641,$13642,$13643,$13644,$13645,$13646,$13647,$13648,$13649,$13650),(nextval($13651),$13652,$13653,$13654,$13655,$13656,$13657,$13658,$13659,$13660,$13661,$13662,$13663,$13664),(nextval($13665),$13666,$13667,$13668,$13669,$13670,$13671,$13672,$13673,$13674,$13675,$13676,$13677,$13678),(nextval($13679),$13680,$13681,$13682,$13683,$13684,$13685,$13686,$13687,$13688,$13689,$13690,$13691,$13692),(nextval($13693),$13694,$13695,$13696,$13697,$13698,$13699,$13700,$13701,$13702,$13703,$13704,$13705,$13706),(nextval($13707),$13708,$13709,$13710,$13711,$13712,$13713,$13714,$13715,$13716,$13717,$13718,$13719,$13720),(nextval($13721),$13722,$13723,$13724,$13725,$13726,$13727,$13728,$13729,$13730,$13731,$13732,$13733,$13734),(nextval($13735),$13736,$13737,$13738,$13739,$13740,$13741,$13742,$13743,$13744,$13745,$13746,$13747,$13748),(nextval($13749),$13750,$13751,$13752,$13753,$13754,$13755,$13756,$13757,$13758,$13759,$13760,$13761,$13762),(nextval($13763),$13764,$13765,$13766,$13767,$13768,$13769,$13770,$13771,$13772,$13773,$13774,$13775,$13776),(nextval($13777),$13778,$13779,$13780,$13781,$13782,$13783,$13784,$13785,$13786,$13787,$13788,$13789,$13790),(nextval($13791),$13792,$13793,$13794,$13795,$13796,$13797,$13798,$13799,$13800,$13801,$13802,$13803,$13804),(nextval($13805),$13806,$13807,$13808,$13809,$13810,$13811,$13812,$13813,$13814,$13815,$13816,$13817,$13818),(nextval($13819),$13820,$13821,$13822,$13823,$13824,$13825,$13826,$13827,$13828,$13829,$13830,$13831,$13832),(nextval($13833),$13834,$13835,$13836,$13837,$13838,$13839,$13840,$13841,$13842,$13843,$13844,$13845,$13846),(nextval($13847),$13848,$13849,$13850,$13851,$13852,$13853,$13854,$13855,$13856,$13857,$13858,$13859,$13860),(nextval($13861),$13862,$13863,$13864,$13865,$13866,$13867,$13868,$13869,$13870,$13871,$13872,$13873,$13874),(nextval($13875),$13876,$13877,$13878,$13879,$13880,$13881,$13882,$13883,$13884,$13885,$13886,$13887,$13888),(nextval($13889),$13890,$13891,$13892,$13893,$13894,$13895,$13896,$13897,$13898,$13899,$13900,$13901,$13902),(nextval($13903),$13904,$13905,$13906,$13907,$13908,$13909,$13910,$13911,$13912,$13913,$13914,$13915,$13916),(nextval($13917),$13918,$13919,$13920,$13921,$13922,$13923,$13924,$13925,$13926,$13927,$13928,$13929,$13930),(nextval($13931),$13932,$13933,$13934,$13935,$13936,$13937,$13938,$13939,$13940,$13941,$13942,$13943,$13944),(nextval($13945),$13946,$13947,$13948,$13949,$13950,$13951,$13952,$13953,$13954,$13955,$13956,$13957,$13958),(nextval($13959),$13960,$13961,$13962,$13963,$13964,$13965,$13966,$13967,$13968,$13969,$13970,$13971,$13972),(nextval($13973),$13974,$13975,$13976,$13977,$13978,$13979,$13980,$13981,$13982,$13983,$13984,$13985,$13986),(nextval($13987),$13988,$13989,$13990,$13991,$13992,$13993,$13994,$13995,$13996,$13997,$13998,$13999,$14000),(nextval($14001),$14002,$14003,$14004,$14005,$14006,$14007,$14008,$14009,$14010,$14011,$14012,$14013,$14014),(nextval($14015),$14016,$14017,$14018,$14019,$14020,$14021,$14022,$14023,$14024,$14025,$14026,$14027,$14028),(nextval($14029),$14030,$14031,$14032,$14033,$14034,$14035,$14036,$14037,$14038,$14039,$14040,$14041,$14042),(nextval($14043),$14044,$14045,$14046,$14047,$14048,$14049,$14050,$14051,$14052,$14053,$14054,$14055,$14056),(nextval($14057),$14058,$14059,$14060,$14061,$14062,$14063,$14064,$14065,$14066,$14067,$14068,$14069,$14070),(nextval($14071),$14072,$14073,$14074,$14075,$14076,$14077,$14078,$14079,$14080,$14081,$14082,$14083,$14084),(nextval($14085),$14086,$14087,$14088,$14089,$14090,$14091,$14092,$14093,$14094,$14095,$14096,$14097,$14098),(nextval($14099),$14100,$14101,$14102,$14103,$14104,$14105,$14106,$14107,$14108,$14109,$14110,$14111,$14112),(nextval($14113),$14114,$14115,$14116,$14117,$14118,$14119,$14120,$14121,$14122,$14123,$14124,$14125,$14126),(nextval($14127),$14128,$14129,$14130,$14131,$14132,$14133,$14134,$14135,$14136,$14137,$14138,$14139,$14140),(nextval($14141),$14142,$14143,$14144,$14145,$14146,$14147,$14148,$14149,$14150,$14151,$14152,$14153,$14154),(nextval($14155),$14156,$14157,$14158,$14159,$14160,$14161,$14162,$14163,$14164,$14165,$14166,$14167,$14168),(nextval($14169),$14170,$14171,$14172,$14173,$14174,$14175,$14176,$14177,$14178,$14179,$14180,$14181,$14182),(nextval($14183),$14184,$14185,$14186,$14187,$14188,$14189,$14190,$14191,$14192,$14193,$14194,$14195,$14196),(nextval($14197),$14198,$14199,$14200,$14201,$14202,$14203,$14204,$14205,$14206,$14207,$14208,$14209,$14210),(nextval($14211),$14212,$14213,$14214,$14215,$14216,$14217,$14218,$14219,$14220,$14221,$14222,$14223,$14224),(nextval($14225),$14226,$14227,$14228,$14229,$14230,$14231,$14232,$14233,$14234,$14235,$14236,$14237,$14238),(nextval($14239),$14240,$14241,$14242,$14243,$14244,$14245,$14246,$14247,$14248,$14249,$14250,$14251,$14252),(nextval($14253),$14254,$14255,$14256,$14257,$14258,$14259,$14260,$14261,$14262,$14263,$14264,$14265,$14266),(nextval($14267),$14268,$14269,$14270,$14271,$14272,$14273,$14274,$14275,$14276,$14277,$14278,$14279,$14280),(nextval($14281),$14282,$14283,$14284,$14285,$14286,$14287,$14288,$14289,$14290,$14291,$14292,$14293,$14294),(nextval($14295),$14296,$14297,$14298,$14299,$14300,$14301,$14302,$14303,$14304,$14305,$14306,$14307,$14308),(nextval($14309),$14310,$14311,$14312,$14313,$14314,$14315,$14316,$14317,$14318,$14319,$14320,$14321,$14322),(nextval($14323),$14324,$14325,$14326,$14327,$14328,$14329,$14330,$14331,$14332,$14333,$14334,$14335,$14336),(nextval($14337),$14338,$14339,$14340,$14341,$14342,$14343,$14344,$14345,$14346,$14347,$14348,$14349,$14350),(nextval($14351),$14352,$14353,$14354,$14355,$14356,$14357,$14358,$14359,$14360,$14361,$14362,$14363,$14364),(nextval($14365),$14366,$14367,$14368,$14369,$14370,$14371,$14372,$14373,$14374,$14375,$14376,$14377,$14378),(nextval($14379),$14380,$14381,$14382,$14383,$14384,$14385,$14386,$14387,$14388,$14389,$14390,$14391,$14392),(nextval($14393),$14394,$14395,$14396,$14397,$14398,$14399,$14400,$14401,$14402,$14403,$14404,$14405,$14406),(nextval($14407),$14408,$14409,$14410,$14411,$14412,$14413,$14414,$14415,$14416,$14417,$14418,$14419,$14420),(nextval($14421),$14422,$14423,$14424,$14425,$14426,$14427,$14428,$14429,$14430,$14431,$14432,$14433,$14434),(nextval($14435),$14436,$14437,$14438,$14439,$14440,$14441,$14442,$14443,$14444,$14445,$14446,$14447,$14448),(nextval($14449),$14450,$14451,$14452,$14453,$14454,$14455,$14456,$14457,$14458,$14459,$14460,$14461,$14462),(nextval($14463),$14464,$14465,$14466,$14467,$14468,$14469,$14470,$14471,$14472,$14473,$14474,$14475,$14476),(nextval($14477),$14478,$14479,$14480,$14481,$14482,$14483,$14484,$14485,$14486,$14487,$14488,$14489,$14490),(nextval($14491),$14492,$14493,$14494,$14495,$14496,$14497,$14498,$14499,$14500,$14501,$14502,$14503,$14504),(nextval($14505),$14506,$14507,$14508,$14509,$14510,$14511,$14512,$14513,$14514,$14515,$14516,$14517,$14518),(nextval($14519),$14520,$14521,$14522,$14523,$14524,$14525,$14526,$14527,$14528,$14529,$14530,$14531,$14532),(nextval($14533),$14534,$14535,$14536,$14537,$14538,$14539,$14540,$14541,$14542,$14543,$14544,$14545,$14546),(nextval($14547),$14548,$14549,$14550,$14551,$14552,$14553,$14554,$14555,$14556,$14557,$14558,$14559,$14560),(nextval($14561),$14562,$14563,$14564,$14565,$14566,$14567,$14568,$14569,$14570,$14571,$14572,$14573,$14574),(nextval($14575),$14576,$14577,$14578,$14579,$14580,$14581,$14582,$14583,$14584,$14585,$14586,$14587,$14588),(nextval($14589),$14590,$14591,$14592,$14593,$14594,$14595,$14596,$14597,$14598,$14599,$14600,$14601,$14602),(nextval($14603),$14604,$14605,$14606,$14607,$14608,$14609,$14610,$14611,$14612,$14613,$14614,$14615,$14616),(nextval($14617),$14618,$14619,$14620,$14621,$14622,$14623,$14624,$14625,$14626,$14627,$14628,$14629,$14630),(nextval($14631),$14632,$14633,$14634,$14635,$14636,$14637,$14638,$14639,$14640,$14641,$14642,$14643,$14644),(nextval($14645),$14646,$14647,$14648,$14649,$14650,$14651,$14652,$14653,$14654,$14655,$14656,$14657,$14658),(nextval($14659),$14660,$14661,$14662,$14663,$14664,$14665,$14666,$14667,$14668,$14669,$14670,$14671,$14672),(nextval($14673),$14674,$14675,$14676,$14677,$14678,$14679,$14680,$14681,$14682,$14683,$14684,$14685,$14686),(nextval($14687),$14688,$14689,$14690,$14691,$14692,$14693,$14694,$14695,$14696,$14697,$14698,$14699,$14700),(nextval($14701),$14702,$14703,$14704,$14705,$14706,$14707,$14708,$14709,$14710,$14711,$14712,$14713,$14714),(nextval($14715),$14716,$14717,$14718,$14719,$14720,$14721,$14722,$14723,$14724,$14725,$14726,$14727,$14728),(nextval($14729),$14730,$14731,$14732,$14733,$14734,$14735,$14736,$14737,$14738,$14739,$14740,$14741,$14742),(nextval($14743),$14744,$14745,$14746,$14747,$14748,$14749,$14750,$14751,$14752,$14753,$14754,$14755,$14756),(nextval($14757),$14758,$14759,$14760,$14761,$14762,$14763,$14764,$14765,$14766,$14767,$14768,$14769,$14770),(nextval($14771),$14772,$14773,$14774,$14775,$14776,$14777,$14778,$14779,$14780,$14781,$14782,$14783,$14784),(nextval($14785),$14786,$14787,$14788,$14789,$14790,$14791,$14792,$14793,$14794,$14795,$14796,$14797,$14798),(nextval($14799),$14800,$14801,$14802,$14803,$14804,$14805,$14806,$14807,$14808,$14809,$14810,$14811,$14812),(nextval($14813),$14814,$14815,$14816,$14817,$14818,$14819,$14820,$14821,$14822,$14823,$14824,$14825,$14826),(nextval($14827),$14828,$14829,$14830,$14831,$14832,$14833,$14834,$14835,$14836,$14837,$14838,$14839,$14840),(nextval($14841),$14842,$14843,$14844,$14845,$14846,$14847,$14848,$14849,$14850,$14851,$14852,$14853,$14854),(nextval($14855),$14856,$14857,$14858,$14859,$14860,$14861,$14862,$14863,$14864,$14865,$14866,$14867,$14868),(nextval($14869),$14870,$14871,$14872,$14873,$14874,$14875,$14876,$14877,$14878,$14879,$14880,$14881,$14882),(nextval($14883),$14884,$14885,$14886,$14887,$14888,$14889,$14890,$14891,$14892,$14893,$14894,$14895,$14896),(nextval($14897),$14898,$14899,$14900,$14901,$14902,$14903,$14904,$14905,$14906,$14907,$14908,$14909,$14910),(nextval($14911),$14912,$14913,$14914,$14915,$14916,$14917,$14918,$14919,$14920,$14921,$14922,$14923,$14924),(nextval($14925),$14926,$14927,$14928,$14929,$14930,$14931,$14932,$14933,$14934,$14935,$14936,$14937,$14938),(nextval($14939),$14940,$14941,$14942,$14943,$14944,$14945,$14946,$14947,$14948,$14949,$14950,$14951,$14952),(nextval($14953),$14954,$14955,$14956,$14957,$14958,$14959,$14960,$14961,$14962,$14963,$14964,$14965,$14966),(nextval($14967),$14968,$14969,$14970,$14971,$14972,$14973,$14974,$14975,$14976,$14977,$14978,$14979,$14980),(nextval($14981),$14982,$14983,$14984,$14985,$14986,$14987,$14988,$14989,$14990,$14991,$14992,$14993,$14994),(nextval($14995),$14996,$14997,$14998,$14999,$15000,$15001,$15002,$15003,$15004,$15005,$15006,$15007,$15008),(nextval($15009),$15010,$15011,$15012,$15013,$15014,$15015,$15016,$15017,$15018,$15019,$15020,$15021,$15022),(nextval($15023),$15024,$15025,$15026,$15027,$15028,$15029,$15030,$15031,$15032,$15033,$15034,$15035,$15036),(nextval($15037),$15038,$15039,$15040,$15041,$15042,$15043,$15044,$15045,$15046,$15047,$15048,$15049,$15050),(nextval($15051),$15052,$15053,$15054,$15055,$15056,$15057,$15058,$15059,$15060,$15061,$15062,$15063,$15064),(nextval($15065),$15066,$15067,$15068,$15069,$15070,$15071,$15072,$15073,$15074,$15075,$15076,$15077,$15078),(nextval($15079),$15080,$15081,$15082,$15083,$15084,$15085,$15086,$15087,$15088,$15089,$15090,$15091,$15092),(nextval($15093),$15094,$15095,$15096,$15097,$15098,$15099,$15100,$15101,$15102,$15103,$15104,$15105,$15106),(nextval($15107),$15108,$15109,$15110,$15111,$15112,$15113,$15114,$15115,$15116,$15117,$15118,$15119,$15120),(nextval($15121),$15122,$15123,$15124,$15125,$15126,$15127,$15128,$15129,$15130,$15131,$15132,$15133,$15134),(nextval($15135),$15136,$15137,$15138,$15139,$15140,$15141,$15142,$15143,$15144,$15145,$15146,$15147,$15148),(nextval($15149),$15150,$15151,$15152,$15153,$15154,$15155,$15156,$15157,$15158,$15159,$15160,$15161,$15162),(nextval($15163),$15164,$15165,$15166,$15167,$15168,$15169,$15170,$15171,$15172,$15173,$15174,$15175,$15176),(nextval($15177),$15178,$15179,$15180,$15181,$15182,$15183,$15184,$15185,$15186,$15187,$15188,$15189,$15190),(nextval($15191),$15192,$15193,$15194,$15195,$15196,$15197,$15198,$15199,$15200,$15201,$15202,$15203,$15204),(nextval($15205),$15206,$15207,$15208,$15209,$15210,$15211,$15212,$15213,$15214,$15215,$15216,$15217,$15218),(nextval($15219),$15220,$15221,$15222,$15223,$15224,$15225,$15226,$15227,$15228,$15229,$15230,$15231,$15232),(nextval($15233),$15234,$15235,$15236,$15237,$15238,$15239,$15240,$15241,$15242,$15243,$15244,$15245,$15246),(nextval($15247),$15248,$15249,$15250,$15251,$15252,$15253,$15254,$15255,$15256,$15257,$15258,$15259,$15260),(nextval($15261),$15262,$15263,$15264,$15265,$15266,$15267,$15268,$15269,$15270,$15271,$15272,$15273,$15274),(nextval($15275),$15276,$15277,$15278,$15279,$15280,$15281,$15282,$15283,$15284,$15285,$15286,$15287,$15288),(nextval($15289),$15290,$15291,$15292,$15293,$15294,$15295,$15296,$15297,$15298,$15299,$15300,$15301,$15302),(nextval($15303),$15304,$15305,$15306,$15307,$15308,$15309,$15310,$15311,$15312,$15313,$15314,$15315,$15316),(nextval($15317),$15318,$15319,$15320,$15321,$15322,$15323,$15324,$15325,$15326,$15327,$15328,$15329,$15330),(nextval($15331),$15332,$15333,$15334,$15335,$15336,$15337,$15338,$15339,$15340,$15341,$15342,$15343,$15344),(nextval($15345),$15346,$15347,$15348,$15349,$15350,$15351,$15352,$15353,$15354,$15355,$15356,$15357,$15358),(nextval($15359),$15360,$15361,$15362,$15363,$15364,$15365,$15366,$15367,$15368,$15369,$15370,$15371,$15372),(nextval($15373),$15374,$15375,$15376,$15377,$15378,$15379,$15380,$15381,$15382,$15383,$15384,$15385,$15386),(nextval($15387),$15388,$15389,$15390,$15391,$15392,$15393,$15394,$15395,$15396,$15397,$15398,$15399,$15400),(nextval($15401),$15402,$15403,$15404,$15405,$15406,$15407,$15408,$15409,$15410,$15411,$15412,$15413,$15414),(nextval($15415),$15416,$15417,$15418,$15419,$15420,$15421,$15422,$15423,$15424,$15425,$15426,$15427,$15428),(nextval($15429),$15430,$15431,$15432,$15433,$15434,$15435,$15436,$15437,$15438,$15439,$15440,$15441,$15442),(nextval($15443),$15444,$15445,$15446,$15447,$15448,$15449,$15450,$15451,$15452,$15453,$15454,$15455,$15456),(nextval($15457),$15458,$15459,$15460,$15461,$15462,$15463,$15464,$15465,$15466,$15467,$15468,$15469,$15470),(nextval($15471),$15472,$15473,$15474,$15475,$15476,$15477,$15478,$15479,$15480,$15481,$15482,$15483,$15484),(nextval($15485),$15486,$15487,$15488,$15489,$15490,$15491,$15492,$15493,$15494,$15495,$15496,$15497,$15498),(nextval($15499),$15500,$15501,$15502,$15503,$15504,$15505,$15506,$15507,$15508,$15509,$15510,$15511,$15512),(nextval($15513),$15514,$15515,$15516,$15517,$15518,$15519,$15520,$15521,$15522,$15523,$15524,$15525,$15526),(nextval($15527),$15528,$15529,$15530,$15531,$15532,$15533,$15534,$15535,$15536,$15537,$15538,$15539,$15540),(nextval($15541),$15542,$15543,$15544,$15545,$15546,$15547,$15548,$15549,$15550,$15551,$15552,$15553,$15554),(nextval($15555),$15556,$15557,$15558,$15559,$15560,$15561,$15562,$15563,$15564,$15565,$15566,$15567,$15568),(nextval($15569),$15570,$15571,$15572,$15573,$15574,$15575,$15576,$15577,$15578,$15579,$15580,$15581,$15582),(nextval($15583),$15584,$15585,$15586,$15587,$15588,$15589,$15590,$15591,$15592,$15593,$15594,$15595,$15596),(nextval($15597),$15598,$15599,$15600,$15601,$15602,$15603,$15604,$15605,$15606,$15607,$15608,$15609,$15610),(nextval($15611),$15612,$15613,$15614,$15615,$15616,$15617,$15618,$15619,$15620,$15621,$15622,$15623,$15624),(nextval($15625),$15626,$15627,$15628,$15629,$15630,$15631,$15632,$15633,$15634,$15635,$15636,$15637,$15638),(nextval($15639),$15640,$15641,$15642,$15643,$15644,$15645,$15646,$15647,$15648,$15649,$15650,$15651,$15652),(nextval($15653),$15654,$15655,$15656,$15657,$15658,$15659,$15660,$15661,$15662,$15663,$15664,$15665,$15666),(nextval($15667),$15668,$15669,$15670,$15671,$15672,$15673,$15674,$15675,$15676,$15677,$15678,$15679,$15680),(nextval($15681),$15682,$15683,$15684,$15685,$15686,$15687,$15688,$15689,$15690,$15691,$15692,$15693,$15694),(nextval($15695),$15696,$15697,$15698,$15699,$15700,$15701,$15702,$15703,$15704,$15705,$15706,$15707,$15708),(nextval($15709),$15710,$15711,$15712,$15713,$15714,$15715,$15716,$15717,$15718,$15719,$15720,$15721,$15722),(nextval($15723),$15724,$15725,$15726,$15727,$15728,$15729,$15730,$15731,$15732,$15733,$15734,$15735,$15736),(nextval($15737),$15738,$15739,$15740,$15741,$15742,$15743,$15744,$15745,$15746,$15747,$15748,$15749,$15750),(nextval($15751),$15752,$15753,$15754,$15755,$15756,$15757,$15758,$15759,$15760,$15761,$15762,$15763,$15764),(nextval($15765),$15766,$15767,$15768,$15769,$15770,$15771,$15772,$15773,$15774,$15775,$15776,$15777,$15778),(nextval($15779),$15780,$15781,$15782,$15783,$15784,$15785,$15786,$15787,$15788,$15789,$15790,$15791,$15792),(nextval($15793),$15794,$15795,$15796,$15797,$15798,$15799,$15800,$15801,$15802,$15803,$15804,$15805,$15806),(nextval($15807),$15808,$15809,$15810,$15811,$15812,$15813,$15814,$15815,$15816,$15817,$15818,$15819,$15820),(nextval($15821),$15822,$15823,$15824,$15825,$15826,$15827,$15828,$15829,$15830,$15831,$15832,$15833,$15834),(nextval($15835),$15836,$15837,$15838,$15839,$15840,$15841,$15842,$15843,$15844,$15845,$15846,$15847,$15848),(nextval($15849),$15850,$15851,$15852,$15853,$15854,$15855,$15856,$15857,$15858,$15859,$15860,$15861,$15862),(nextval($15863),$15864,$15865,$15866,$15867,$15868,$15869,$15870,$15871,$15872,$15873,$15874,$15875,$15876),(nextval($15877),$15878,$15879,$15880,$15881,$15882,$15883,$15884,$15885,$15886,$15887,$15888,$15889,$15890),(nextval($15891),$15892,$15893,$15894,$15895,$15896,$15897,$15898,$15899,$15900,$15901,$15902,$15903,$15904),(nextval($15905),$15906,$15907,$15908,$15909,$15910,$15911,$15912,$15913,$15914,$15915,$15916,$15917,$15918),(nextval($15919),$15920,$15921,$15922,$15923,$15924,$15925,$15926,$15927,$15928,$15929,$15930,$15931,$15932),(nextval($15933),$15934,$15935,$15936,$15937,$15938,$15939,$15940,$15941,$15942,$15943,$15944,$15945,$15946),(nextval($15947),$15948,$15949,$15950,$15951,$15952,$15953,$15954,$15955,$15956,$15957,$15958,$15959,$15960),(nextval($15961),$15962,$15963,$15964,$15965,$15966,$15967,$15968,$15969,$15970,$15971,$15972,$15973,$15974),(nextval($15975),$15976,$15977,$15978,$15979,$15980,$15981,$15982,$15983,$15984,$15985,$15986,$15987,$15988),(nextval($15989),$15990,$15991,$15992,$15993,$15994,$15995,$15996,$15997,$15998,$15999,$16000,$16001,$16002),(nextval($16003),$16004,$16005,$16006,$16007,$16008,$16009,$16010,$16011,$16012,$16013,$16014,$16015,$16016),(nextval($16017),$16018,$16019,$16020,$16021,$16022,$16023,$16024,$16025,$16026,$16027,$16028,$16029,$16030),(nextval($16031),$16032,$16033,$16034,$16035,$16036,$16037,$16038,$16039,$16040,$16041,$16042,$16043,$16044),(nextval($16045),$16046,$16047,$16048,$16049,$16050,$16051,$16052,$16053,$16054,$16055,$16056,$16057,$16058),(nextval($16059),$16060,$16061,$16062,$16063,$16064,$16065,$16066,$16067,$16068,$16069,$16070,$16071,$16072),(nextval($16073),$16074,$16075,$16076,$16077,$16078,$16079,$16080,$16081,$16082,$16083,$16084,$16085,$16086),(nextval($16087),$16088,$16089,$16090,$16091,$16092,$16093,$16094,$16095,$16096,$16097,$16098,$16099,$16100),(nextval($16101),$16102,$16103,$16104,$16105,$16106,$16107,$16108,$16109,$16110,$16111,$16112,$16113,$16114),(nextval($16115),$16116,$16117,$16118,$16119,$16120,$16121,$16122,$16123,$16124,$16125,$16126,$16127,$16128),(nextval($16129),$16130,$16131,$16132,$16133,$16134,$16135,$16136,$16137,$16138,$16139,$16140,$16141,$16142),(nextval($16143),$16144,$16145,$16146,$16147,$16148,$16149,$16150,$16151,$16152,$16153,$16154,$16155,$16156),(nextval($16157),$16158,$16159,$16160,$16161,$16162,$16163,$16164,$16165,$16166,$16167,$16168,$16169,$16170),(nextval($16171),$16172,$16173,$16174,$16175,$16176,$16177,$16178,$16179,$16180,$16181,$16182,$16183,$16184),(nextval($16185),$16186,$16187,$16188,$16189,$16190,$16191,$16192,$16193,$16194,$16195,$16196,$16197,$16198),(nextval($16199),$16200,$16201,$16202,$16203,$16204,$16205,$16206,$16207,$16208,$16209,$16210,$16211,$16212),(nextval($16213),$16214,$16215,$16216,$16217,$16218,$16219,$16220,$16221,$16222,$16223,$16224,$16225,$16226),(nextval($16227),$16228,$16229,$16230,$16231,$16232,$16233,$16234,$16235,$16236,$16237,$16238,$16239,$16240),(nextval($16241),$16242,$16243,$16244,$16245,$16246,$16247,$16248,$16249,$16250,$16251,$16252,$16253,$16254),(nextval($16255),$16256,$16257,$16258,$16259,$16260,$16261,$16262,$16263,$16264,$16265,$16266,$16267,$16268),(nextval($16269),$16270,$16271,$16272,$16273,$16274,$16275,$16276,$16277,$16278,$16279,$16280,$16281,$16282),(nextval($16283),$16284,$16285,$16286,$16287,$16288,$16289,$16290,$16291,$16292,$16293,$16294,$16295,$16296),(nextval($16297),$16298,$16299,$16300,$16301,$16302,$16303,$16304,$16305,$16306,$16307,$16308,$16309,$16310),(nextval($16311),$16312,$16313,$16314,$16315,$16316,$16317,$16318,$16319,$16320,$16321,$16322,$16323,$16324),(nextval($16325),$16326,$16327,$16328,$16329,$16330,$16331,$16332,$16333,$16334,$16335,$16336,$16337,$16338),(nextval($16339),$16340,$16341,$16342,$16343,$16344,$16345,$16346,$16347,$16348,$16349,$16350,$16351,$16352),(nextval($16353),$16354,$16355,$16356,$16357,$16358,$16359,$16360,$16361,$16362,$16363,$16364,$16365,$16366),(nextval($16367),$16368,$16369,$16370,$16371,$16372,$16373,$16374,$16375,$16376,$16377,$16378,$16379,$16380),(nextval($16381),$16382,$16383,$16384,$16385,$16386,$16387,$16388,$16389,$16390,$16391,$16392,$16393,$16394),(nextval($16395),$16396,$16397,$16398,$16399,$16400,$16401,$16402,$16403,$16404,$16405,$16406,$16407,$16408),(nextval($16409),$16410,$16411,$16412,$16413,$16414,$16415,$16416,$16417,$16418,$16419,$16420,$16421,$16422),(nextval($16423),$16424,$16425,$16426,$16427,$16428,$16429,$16430,$16431,$16432,$16433,$16434,$16435,$16436),(nextval($16437),$16438,$16439,$16440,$16441,$16442,$16443,$16444,$16445,$16446,$16447,$16448,$16449,$16450),(nextval($16451),$16452,$16453,$16454,$16455,$16456,$16457,$16458,$16459,$16460,$16461,$16462,$16463,$16464),(nextval($16465),$16466,$16467,$16468,$16469,$16470,$16471,$16472,$16473,$16474,$16475,$16476,$16477,$16478),(nextval($16479),$16480,$16481,$16482,$16483,$16484,$16485,$16486,$16487,$16488,$16489,$16490,$16491,$16492),(nextval($16493),$16494,$16495,$16496,$16497,$16498,$16499,$16500,$16501,$16502,$16503,$16504,$16505,$16506),(nextval($16507),$16508,$16509,$16510,$16511,$16512,$16513,$16514,$16515,$16516,$16517,$16518,$16519,$16520),(nextval($16521),$16522,$16523,$16524,$16525,$16526,$16527,$16528,$16529,$16530,$16531,$16532,$16533,$16534),(nextval($16535),$16536,$16537,$16538,$16539,$16540,$16541,$16542,$16543,$16544,$16545,$16546,$16547,$16548),(nextval($16549),$16550,$16551,$16552,$16553,$16554,$16555,$16556,$16557,$16558,$16559,$16560,$16561,$16562),(nextval($16563),$16564,$16565,$16566,$16567,$16568,$16569,$16570,$16571,$16572,$16573,$16574,$16575,$16576),(nextval($16577),$16578,$16579,$16580,$16581,$16582,$16583,$16584,$16585,$16586,$16587,$16588,$16589,$16590),(nextval($16591),$16592,$16593,$16594,$16595,$16596,$16597,$16598,$16599,$16600,$16601,$16602,$16603,$16604),(nextval($16605),$16606,$16607,$16608,$16609,$16610,$16611,$16612,$16613,$16614,$16615,$16616,$16617,$16618),(nextval($16619),$16620,$16621,$16622,$16623,$16624,$16625,$16626,$16627,$16628,$16629,$16630,$16631,$16632),(nextval($16633),$16634,$16635,$16636,$16637,$16638,$16639,$16640,$16641,$16642,$16643,$16644,$16645,$16646),(nextval($16647),$16648,$16649,$16650,$16651,$16652,$16653,$16654,$16655,$16656,$16657,$16658,$16659,$16660),(nextval($16661),$16662,$16663,$16664,$16665,$16666,$16667,$16668,$16669,$16670,$16671,$16672,$16673,$16674),(nextval($16675),$16676,$16677,$16678,$16679,$16680,$16681,$16682,$16683,$16684,$16685,$16686,$16687,$16688),(nextval($16689),$16690,$16691,$16692,$16693,$16694,$16695,$16696,$16697,$16698,$16699,$16700,$16701,$16702),(nextval($16703),$16704,$16705,$16706,$16707,$16708,$16709,$16710,$16711,$16712,$16713,$16714,$16715,$16716),(nextval($16717),$16718,$16719,$16720,$16721,$16722,$16723,$16724,$16725,$16726,$16727,$16728,$16729,$16730),(nextval($16731),$16732,$16733,$16734,$16735,$16736,$16737,$16738,$16739,$16740,$16741,$16742,$16743,$16744),(nextval($16745),$16746,$16747,$16748,$16749,$16750,$16751,$16752,$16753,$16754,$16755,$16756,$16757,$16758),(nextval($16759),$16760,$16761,$16762,$16763,$16764,$16765,$16766,$16767,$16768,$16769,$16770,$16771,$16772),(nextval($16773),$16774,$16775,$16776,$16777,$16778,$16779,$16780,$16781,$16782,$16783,$16784,$16785,$16786),(nextval($16787),$16788,$16789,$16790,$16791,$16792,$16793,$16794,$16795,$16796,$16797,$16798,$16799,$16800),(nextval($16801),$16802,$16803,$16804,$16805,$16806,$16807,$16808,$16809,$16810,$16811,$16812,$16813,$16814),(nextval($16815),$16816,$16817,$16818,$16819,$16820,$16821,$16822,$16823,$16824,$16825,$16826,$16827,$16828),(nextval($16829),$16830,$16831,$16832,$16833,$16834,$16835,$16836,$16837,$16838,$16839,$16840,$16841,$16842),(nextval($16843),$16844,$16845,$16846,$16847,$16848,$16849,$16850,$16851,$16852,$16853,$16854,$16855,$16856),(nextval($16857),$16858,$16859,$16860,$16861,$16862,$16863,$16864,$16865,$16866,$16867,$16868,$16869,$16870),(nextval($16871),$16872,$16873,$16874,$16875,$16876,$16877,$16878,$16879,$16880,$16881,$16882,$16883,$16884),(nextval($16885),$16886,$16887,$16888,$16889,$16890,$16891,$16892,$16893,$16894,$16895,$16896,$16897,$16898),(nextval($16899),$16900,$16901,$16902,$16903,$16904,$16905,$16906,$16907,$16908,$16909,$16910,$16911,$16912),(nextval($16913),$16914,$16915,$16916,$16917,$16918,$16919,$16920,$16921,$16922,$16923,$16924,$16925,$16926),(nextval($16927),$16928,$16929,$16930,$16931,$16932,$16933,$16934,$16935,$16936,$16937,$16938,$16939,$16940),(nextval($16941),$16942,$16943,$16944,$16945,$16946,$16947,$16948,$16949,$16950,$16951,$16952,$16953,$16954),(nextval($16955),$16956,$16957,$16958,$16959,$16960,$16961,$16962,$16963,$16964,$16965,$16966,$16967,$16968),(nextval($16969),$16970,$16971,$16972,$16973,$16974,$16975,$16976,$16977,$16978,$16979,$16980,$16981,$16982),(nextval($16983),$16984,$16985,$16986,$16987,$16988,$16989,$16990,$16991,$16992,$16993,$16994,$16995,$16996),(nextval($16997),$16998,$16999,$17000,$17001,$17002,$17003,$17004,$17005,$17006,$17007,$17008,$17009,$17010),(nextval($17011),$17012,$17013,$17014,$17015,$17016,$17017,$17018,$17019,$17020,$17021,$17022,$17023,$17024),(nextval($17025),$17026,$17027,$17028,$17029,$17030,$17031,$17032,$17033,$17034,$17035,$17036,$17037,$17038),(nextval($17039),$17040,$17041,$17042,$17043,$17044,$17045,$17046,$17047,$17048,$17049,$17050,$17051,$17052),(nextval($17053),$17054,$17055,$17056,$17057,$17058,$17059,$17060,$17061,$17062,$17063,$17064,$17065,$17066),(nextval($17067),$17068,$17069,$17070,$17071,$17072,$17073,$17074,$17075,$17076,$17077,$17078,$17079,$17080),(nextval($17081),$17082,$17083,$17084,$17085,$17086,$17087,$17088,$17089,$17090,$17091,$17092,$17093,$17094),(nextval($17095),$17096,$17097,$17098,$17099,$17100,$17101,$17102,$17103,$17104,$17105,$17106,$17107,$17108),(nextval($17109),$17110,$17111,$17112,$17113,$17114,$17115,$17116,$17117,$17118,$17119,$17120,$17121,$17122),(nextval($17123),$17124,$17125,$17126,$17127,$17128,$17129,$17130,$17131,$17132,$17133,$17134,$17135,$17136),(nextval($17137),$17138,$17139,$17140,$17141,$17142,$17143,$17144,$17145,$17146,$17147,$17148,$17149,$17150),(nextval($17151),$17152,$17153,$17154,$17155,$17156,$17157,$17158,$17159,$17160,$17161,$17162,$17163,$17164),(nextval($17165),$17166,$17167,$17168,$17169,$17170,$17171,$17172,$17173,$17174,$17175,$17176,$17177,$17178),(nextval($17179),$17180,$17181,$17182,$17183,$17184,$17185,$17186,$17187,$17188,$17189,$17190,$17191,$17192),(nextval($17193),$17194,$17195,$17196,$17197,$17198,$17199,$17200,$17201,$17202,$17203,$17204,$17205,$17206),(nextval($17207),$17208,$17209,$17210,$17211,$17212,$17213,$17214,$17215,$17216,$17217,$17218,$17219,$17220),(nextval($17221),$17222,$17223,$17224,$17225,$17226,$17227,$17228,$17229,$17230,$17231,$17232,$17233,$17234),(nextval($17235),$17236,$17237,$17238,$17239,$17240,$17241,$17242,$17243,$17244,$17245,$17246,$17247,$17248),(nextval($17249),$17250,$17251,$17252,$17253,$17254,$17255,$17256,$17257,$17258,$17259,$17260,$17261,$17262),(nextval($17263),$17264,$17265,$17266,$17267,$17268,$17269,$17270,$17271,$17272,$17273,$17274,$17275,$17276),(nextval($17277),$17278,$17279,$17280,$17281,$17282,$17283,$17284,$17285,$17286,$17287,$17288,$17289,$17290),(nextval($17291),$17292,$17293,$17294,$17295,$17296,$17297,$17298,$17299,$17300,$17301,$17302,$17303,$17304),(nextval($17305),$17306,$17307,$17308,$17309,$17310,$17311,$17312,$17313,$17314,$17315,$17316,$17317,$17318),(nextval($17319),$17320,$17321,$17322,$17323,$17324,$17325,$17326,$17327,$17328,$17329,$17330,$17331,$17332),(nextval($17333),$17334,$17335,$17336,$17337,$17338,$17339,$17340,$17341,$17342,$17343,$17344,$17345,$17346),(nextval($17347),$17348,$17349,$17350,$17351,$17352,$17353,$17354,$17355,$17356,$17357,$17358,$17359,$17360),(nextval($17361),$17362,$17363,$17364,$17365,$17366,$17367,$17368,$17369,$17370,$17371,$17372,$17373,$17374),(nextval($17375),$17376,$17377,$17378,$17379,$17380,$17381,$17382,$17383,$17384,$17385,$17386,$17387,$17388),(nextval($17389),$17390,$17391,$17392,$17393,$17394,$17395,$17396,$17397,$17398,$17399,$17400,$17401,$17402),(nextval($17403),$17404,$17405,$17406,$17407,$17408,$17409,$17410,$17411,$17412,$17413,$17414,$17415,$17416),(nextval($17417),$17418,$17419,$17420,$17421,$17422,$17423,$17424,$17425,$17426,$17427,$17428,$17429,$17430),(nextval($17431),$17432,$17433,$17434,$17435,$17436,$17437,$17438,$17439,$17440,$17441,$17442,$17443,$17444),(nextval($17445),$17446,$17447,$17448,$17449,$17450,$17451,$17452,$17453,$17454,$17455,$17456,$17457,$17458),(nextval($17459),$17460,$17461,$17462,$17463,$17464,$17465,$17466,$17467,$17468,$17469,$17470,$17471,$17472),(nextval($17473),$17474,$17475,$17476,$17477,$17478,$17479,$17480,$17481,$17482,$17483,$17484,$17485,$17486),(nextval($17487),$17488,$17489,$17490,$17491,$17492,$17493,$17494,$17495,$17496,$17497,$17498,$17499,$17500),(nextval($17501),$17502,$17503,$17504,$17505,$17506,$17507,$17508,$17509,$17510,$17511,$17512,$17513,$17514),(nextval($17515),$17516,$17517,$17518,$17519,$17520,$17521,$17522,$17523,$17524,$17525,$17526,$17527,$17528),(nextval($17529),$17530,$17531,$17532,$17533,$17534,$17535,$17536,$17537,$17538,$17539,$17540,$17541,$17542),(nextval($17543),$17544,$17545,$17546,$17547,$17548,$17549,$17550,$17551,$17552,$17553,$17554,$17555,$17556),(nextval($17557),$17558,$17559,$17560,$17561,$17562,$17563,$17564,$17565,$17566,$17567,$17568,$17569,$17570),(nextval($17571),$17572,$17573,$17574,$17575,$17576,$17577,$17578,$17579,$17580,$17581,$17582,$17583,$17584),(nextval($17585),$17586,$17587,$17588,$17589,$17590,$17591,$17592,$17593,$17594,$17595,$17596,$17597,$17598),(nextval($17599),$17600,$17601,$17602,$17603,$17604,$17605,$17606,$17607,$17608,$17609,$17610,$17611,$17612),(nextval($17613),$17614,$17615,$17616,$17617,$17618,$17619,$17620,$17621,$17622,$17623,$17624,$17625,$17626),(nextval($17627),$17628,$17629,$17630,$17631,$17632,$17633,$17634,$17635,$17636,$17637,$17638,$17639,$17640),(nextval($17641),$17642,$17643,$17644,$17645,$17646,$17647,$17648,$17649,$17650,$17651,$17652,$17653,$17654),(nextval($17655),$17656,$17657,$17658,$17659,$17660,$17661,$17662,$17663,$17664,$17665,$17666,$17667,$17668),(nextval($17669),$17670,$17671,$17672,$17673,$17674,$17675,$17676,$17677,$17678,$17679,$17680,$17681,$17682),(nextval($17683),$17684,$17685,$17686,$17687,$17688,$17689,$17690,$17691,$17692,$17693,$17694,$17695,$17696),(nextval($17697),$17698,$17699,$17700,$17701,$17702,$17703,$17704,$17705,$17706,$17707,$17708,$17709,$17710),(nextval($17711),$17712,$17713,$17714,$17715,$17716,$17717,$17718,$17719,$17720,$17721,$17722,$17723,$17724),(nextval($17725),$17726,$17727,$17728,$17729,$17730,$17731,$17732,$17733,$17734,$17735,$17736,$17737,$17738),(nextval($17739),$17740,$17741,$17742,$17743,$17744,$17745,$17746,$17747,$17748,$17749,$17750,$17751,$17752),(nextval($17753),$17754,$17755,$17756,$17757,$17758,$17759,$17760,$17761,$17762,$17763,$17764,$17765,$17766),(nextval($17767),$17768,$17769,$17770,$17771,$17772,$17773,$17774,$17775,$17776,$17777,$17778,$17779,$17780),(nextval($17781),$17782,$17783,$17784,$17785,$17786,$17787,$17788,$17789,$17790,$17791,$17792,$17793,$17794),(nextval($17795),$17796,$17797,$17798,$17799,$17800,$17801,$17802,$17803,$17804,$17805,$17806,$17807,$17808),(nextval($17809),$17810,$17811,$17812,$17813,$17814,$17815,$17816,$17817,$17818,$17819,$17820,$17821,$17822),(nextval($17823),$17824,$17825,$17826,$17827,$17828,$17829,$17830,$17831,$17832,$17833,$17834,$17835,$17836),(nextval($17837),$17838,$17839,$17840,$17841,$17842,$17843,$17844,$17845,$17846,$17847,$17848,$17849,$17850),(nextval($17851),$17852,$17853,$17854,$17855,$17856,$17857,$17858,$17859,$17860,$17861,$17862,$17863,$17864),(nextval($17865),$17866,$17867,$17868,$17869,$17870,$17871,$17872,$17873,$17874,$17875,$17876,$17877,$17878),(nextval($17879),$17880,$17881,$17882,$17883,$17884,$17885,$17886,$17887,$17888,$17889,$17890,$17891,$17892),(nextval($17893),$17894,$17895,$17896,$17897,$17898,$17899,$17900,$17901,$17902,$17903,$17904,$17905,$17906),(nextval($17907),$17908,$17909,$17910,$17911,$17912,$17913,$17914,$17915,$17916,$17917,$17918,$17919,$17920),(nextval($17921),$17922,$17923,$17924,$17925,$17926,$17927,$17928,$17929,$17930,$17931,$17932,$17933,$17934),(nextval($17935),$17936,$17937,$17938,$17939,$17940,$17941,$17942,$17943,$17944,$17945,$17946,$17947,$17948),(nextval($17949),$17950,$17951,$17952,$17953,$17954,$17955,$17956,$17957,$17958,$17959,$17960,$17961,$17962),(nextval($17963),$17964,$17965,$17966,$17967,$17968,$17969,$17970,$17971,$17972,$17973,$17974,$17975,$17976),(nextval($17977),$17978,$17979,$17980,$17981,$17982,$17983,$17984,$17985,$17986,$17987,$17988,$17989,$17990),(nextval($17991),$17992,$17993,$17994,$17995,$17996,$17997,$17998,$17999,$18000,$18001,$18002,$18003,$18004),(nextval($18005),$18006,$18007,$18008,$18009,$18010,$18011,$18012,$18013,$18014,$18015,$18016,$18017,$18018),(nextval($18019),$18020,$18021,$18022,$18023,$18024,$18025,$18026,$18027,$18028,$18029,$18030,$18031,$18032),(nextval($18033),$18034,$18035,$18036,$18037,$18038,$18039,$18040,$18041,$18042,$18043,$18044,$18045,$18046),(nextval($18047),$18048,$18049,$18050,$18051,$18052,$18053,$18054,$18055,$18056,$18057,$18058,$18059,$18060),(nextval($18061),$18062,$18063,$18064,$18065,$18066,$18067,$18068,$18069,$18070,$18071,$18072,$18073,$18074),(nextval($18075),$18076,$18077,$18078,$18079,$18080,$18081,$18082,$18083,$18084,$18085,$18086,$18087,$18088),(nextval($18089),$18090,$18091,$18092,$18093,$18094,$18095,$18096,$18097,$18098,$18099,$18100,$18101,$18102),(nextval($18103),$18104,$18105,$18106,$18107,$18108,$18109,$18110,$18111,$18112,$18113,$18114,$18115,$18116),(nextval($18117),$18118,$18119,$18120,$18121,$18122,$18123,$18124,$18125,$18126,$18127,$18128,$18129,$18130),(nextval($18131),$18132,$18133,$18134,$18135,$18136,$18137,$18138,$18139,$18140,$18141,$18142,$18143,$18144),(nextval($18145),$18146,$18147,$18148,$18149,$18150,$18151,$18152,$18153,$18154,$18155,$18156,$18157,$18158),(nextval($18159),$18160,$18161,$18162,$18163,$18164,$18165,$18166,$18167,$18168,$18169,$18170,$18171,$18172),(nextval($18173),$18174,$18175,$18176,$18177,$18178,$18179,$18180,$18181,$18182,$18183,$18184,$18185,$18186),(nextval($18187),$18188,$18189,$18190,$18191,$18192,$18193,$18194,$18195,$18196,$18197,$18198,$18199,$18200),(nextval($18201),$18202,$18203,$18204,$18205,$18206,$18207,$18208,$18209,$18210,$18211,$18212,$18213,$18214),(nextval($18215),$18216,$18217,$18218,$18219,$18220,$18221,$18222,$18223,$18224,$18225,$18226,$18227,$18228),(nextval($18229),$18230,$18231,$18232,$18233,$18234,$18235,$18236,$18237,$18238,$18239,$18240,$18241,$18242),(nextval($18243),$18244,$18245,$18246,$18247,$18248,$18249,$18250,$18251,$18252,$18253,$18254,$18255,$18256),(nextval($18257),$18258,$18259,$18260,$18261,$18262,$18263,$18264,$18265,$18266,$18267,$18268,$18269,$18270),(nextval($18271),$18272,$18273,$18274,$18275,$18276,$18277,$18278,$18279,$18280,$18281,$18282,$18283,$18284),(nextval($18285),$18286,$18287,$18288,$18289,$18290,$18291,$18292,$18293,$18294,$18295,$18296,$18297,$18298),(nextval($18299),$18300,$18301,$18302,$18303,$18304,$18305,$18306,$18307,$18308,$18309,$18310,$18311,$18312),(nextval($18313),$18314,$18315,$18316,$18317,$18318,$18319,$18320,$18321,$18322,$18323,$18324,$18325,$18326),(nextval($18327),$18328,$18329,$18330,$18331,$18332,$18333,$18334,$18335,$18336,$18337,$18338,$18339,$18340),(nextval($18341),$18342,$18343,$18344,$18345,$18346,$18347,$18348,$18349,$18350,$18351,$18352,$18353,$18354),(nextval($18355),$18356,$18357,$18358,$18359,$18360,$18361,$18362,$18363,$18364,$18365,$18366,$18367,$18368),(nextval($18369),$18370,$18371,$18372,$18373,$18374,$18375,$18376,$18377,$18378,$18379,$18380,$18381,$18382),(nextval($18383),$18384,$18385,$18386,$18387,$18388,$18389,$18390,$18391,$18392,$18393,$18394,$18395,$18396),(nextval($18397),$18398,$18399,$18400,$18401,$18402,$18403,$18404,$18405,$18406,$18407,$18408,$18409,$18410),(nextval($18411),$18412,$18413,$18414,$18415,$18416,$18417,$18418,$18419,$18420,$18421,$18422,$18423,$18424),(nextval($18425),$18426,$18427,$18428,$18429,$18430,$18431,$18432,$18433,$18434,$18435,$18436,$18437,$18438),(nextval($18439),$18440,$18441,$18442,$18443,$18444,$18445,$18446,$18447,$18448,$18449,$18450,$18451,$18452),(nextval($18453),$18454,$18455,$18456,$18457,$18458,$18459,$18460,$18461,$18462,$18463,$18464,$18465,$18466),(nextval($18467),$18468,$18469,$18470,$18471,$18472,$18473,$18474,$18475,$18476,$18477,$18478,$18479,$18480),(nextval($18481),$18482,$18483,$18484,$18485,$18486,$18487,$18488,$18489,$18490,$18491,$18492,$18493,$18494),(nextval($18495),$18496,$18497,$18498,$18499,$18500,$18501,$18502,$18503,$18504,$18505,$18506,$18507,$18508),(nextval($18509),$18510,$18511,$18512,$18513,$18514,$18515,$18516,$18517,$18518,$18519,$18520,$18521,$18522),(nextval($18523),$18524,$18525,$18526,$18527,$18528,$18529,$18530,$18531,$18532,$18533,$18534,$18535,$18536),(nextval($18537),$18538,$18539,$18540,$18541,$18542,$18543,$18544,$18545,$18546,$18547,$18548,$18549,$18550),(nextval($18551),$18552,$18553,$18554,$18555,$18556,$18557,$18558,$18559,$18560,$18561,$18562,$18563,$18564),(nextval($18565),$18566,$18567,$18568,$18569,$18570,$18571,$18572,$18573,$18574,$18575,$18576,$18577,$18578),(nextval($18579),$18580,$18581,$18582,$18583,$18584,$18585,$18586,$18587,$18588,$18589,$18590,$18591,$18592),(nextval($18593),$18594,$18595,$18596,$18597,$18598,$18599,$18600,$18601,$18602,$18603,$18604,$18605,$18606),(nextval($18607),$18608,$18609,$18610,$18611,$18612,$18613,$18614,$18615,$18616,$18617,$18618,$18619,$18620),(nextval($18621),$18622,$18623,$18624,$18625,$18626,$18627,$18628,$18629,$18630,$18631,$18632,$18633,$18634),(nextval($18635),$18636,$18637,$18638,$18639,$18640,$18641,$18642,$18643,$18644,$18645,$18646,$18647,$18648),(nextval($18649),$18650,$18651,$18652,$18653,$18654,$18655,$18656,$18657,$18658,$18659,$18660,$18661,$18662),(nextval($18663),$18664,$18665,$18666,$18667,$18668,$18669,$18670,$18671,$18672,$18673,$18674,$18675,$18676),(nextval($18677),$18678,$18679,$18680,$18681,$18682,$18683,$18684,$18685,$18686,$18687,$18688,$18689,$18690),(nextval($18691),$18692,$18693,$18694,$18695,$18696,$18697,$18698,$18699,$18700,$18701,$18702,$18703,$18704),(nextval($18705),$18706,$18707,$18708,$18709,$18710,$18711,$18712,$18713,$18714,$18715,$18716,$18717,$18718),(nextval($18719),$18720,$18721,$18722,$18723,$18724,$18725,$18726,$18727,$18728,$18729,$18730,$18731,$18732),(nextval($18733),$18734,$18735,$18736,$18737,$18738,$18739,$18740,$18741,$18742,$18743,$18744,$18745,$18746),(nextval($18747),$18748,$18749,$18750,$18751,$18752,$18753,$18754,$18755,$18756,$18757,$18758,$18759,$18760),(nextval($18761),$18762,$18763,$18764,$18765,$18766,$18767,$18768,$18769,$18770,$18771,$18772,$18773,$18774),(nextval($18775),$18776,$18777,$18778,$18779,$18780,$18781,$18782,$18783,$18784,$18785,$18786,$18787,$18788),(nextval($18789),$18790,$18791,$18792,$18793,$18794,$18795,$18796,$18797,$18798,$18799,$18800,$18801,$18802),(nextval($18803),$18804,$18805,$18806,$18807,$18808,$18809,$18810,$18811,$18812,$18813,$18814,$18815,$18816),(nextval($18817),$18818,$18819,$18820,$18821,$18822,$18823,$18824,$18825,$18826,$18827,$18828,$18829,$18830),(nextval($18831),$18832,$18833,$18834,$18835,$18836,$18837,$18838,$18839,$18840,$18841,$18842,$18843,$18844),(nextval($18845),$18846,$18847,$18848,$18849,$18850,$18851,$18852,$18853,$18854,$18855,$18856,$18857,$18858),(nextval($18859),$18860,$18861,$18862,$18863,$18864,$18865,$18866,$18867,$18868,$18869,$18870,$18871,$18872),(nextval($18873),$18874,$18875,$18876,$18877,$18878,$18879,$18880,$18881,$18882,$18883,$18884,$18885,$18886),(nextval($18887),$18888,$18889,$18890,$18891,$18892,$18893,$18894,$18895,$18896,$18897,$18898,$18899,$18900),(nextval($18901),$18902,$18903,$18904,$18905,$18906,$18907,$18908,$18909,$18910,$18911,$18912,$18913,$18914),(nextval($18915),$18916,$18917,$18918,$18919,$18920,$18921,$18922,$18923,$18924,$18925,$18926,$18927,$18928),(nextval($18929),$18930,$18931,$18932,$18933,$18934,$18935,$18936,$18937,$18938,$18939,$18940,$18941,$18942),(nextval($18943),$18944,$18945,$18946,$18947,$18948,$18949,$18950,$18951,$18952,$18953,$18954,$18955,$18956),(nextval($18957),$18958,$18959,$18960,$18961,$18962,$18963,$18964,$18965,$18966,$18967,$18968,$18969,$18970),(nextval($18971),$18972,$18973,$18974,$18975,$18976,$18977,$18978,$18979,$18980,$18981,$18982,$18983,$18984),(nextval($18985),$18986,$18987,$18988,$18989,$18990,$18991,$18992,$18993,$18994,$18995,$18996,$18997,$18998),(nextval($18999),$19000,$19001,$19002,$19003,$19004,$19005,$19006,$19007,$19008,$19009,$19010,$19011,$19012),(nextval($19013),$19014,$19015,$19016,$19017,$19018,$19019,$19020,$19021,$19022,$19023,$19024,$19025,$19026),(nextval($19027),$19028,$19029,$19030,$19031,$19032,$19033,$19034,$19035,$19036,$19037,$19038,$19039,$19040),(nextval($19041),$19042,$19043,$19044,$19045,$19046,$19047,$19048,$19049,$19050,$19051,$19052,$19053,$19054),(nextval($19055),$19056,$19057,$19058,$19059,$19060,$19061,$19062,$19063,$19064,$19065,$19066,$19067,$19068),(nextval($19069),$19070,$19071,$19072,$19073,$19074,$19075,$19076,$19077,$19078,$19079,$19080,$19081,$19082),(nextval($19083),$19084,$19085,$19086,$19087,$19088,$19089,$19090,$19091,$19092,$19093,$19094,$19095,$19096),(nextval($19097),$19098,$19099,$19100,$19101,$19102,$19103,$19104,$19105,$19106,$19107,$19108,$19109,$19110),(nextval($19111),$19112,$19113,$19114,$19115,$19116,$19117,$19118,$19119,$19120,$19121,$19122,$19123,$19124),(nextval($19125),$19126,$19127,$19128,$19129,$19130,$19131,$19132,$19133,$19134,$19135,$19136,$19137,$19138),(nextval($19139),$19140,$19141,$19142,$19143,$19144,$19145,$19146,$19147,$19148,$19149,$19150,$19151,$19152),(nextval($19153),$19154,$19155,$19156,$19157,$19158,$19159,$19160,$19161,$19162,$19163,$19164,$19165,$19166),(nextval($19167),$19168,$19169,$19170,$19171,$19172,$19173,$19174,$19175,$19176,$19177,$19178,$19179,$19180),(nextval($19181),$19182,$19183,$19184,$19185,$19186,$19187,$19188,$19189,$19190,$19191,$19192,$19193,$19194),(nextval($19195),$19196,$19197,$19198,$19199,$19200,$19201,$19202,$19203,$19204,$19205,$19206,$19207,$19208),(nextval($19209),$19210,$19211,$19212,$19213,$19214,$19215,$19216,$19217,$19218,$19219,$19220,$19221,$19222),(nextval($19223),$19224,$19225,$19226,$19227,$19228,$19229,$19230,$19231,$19232,$19233,$19234,$19235,$19236),(nextval($19237),$19238,$19239,$19240,$19241,$19242,$19243,$19244,$19245,$19246,$19247,$19248,$19249,$19250),(nextval($19251),$19252,$19253,$19254,$19255,$19256,$19257,$19258,$19259,$19260,$19261,$19262,$19263,$19264),(nextval($19265),$19266,$19267,$19268,$19269,$19270,$19271,$19272,$19273,$19274,$19275,$19276,$19277,$19278),(nextval($19279),$19280,$19281,$19282,$19283,$19284,$19285,$19286,$19287,$19288,$19289,$19290,$19291,$19292),(nextval($19293),$19294,$19295,$19296,$19297,$19298,$19299,$19300,$19301,$19302,$19303,$19304,$19305,$19306),(nextval($19307),$19308,$19309,$19310,$19311,$19312,$19313,$19314,$19315,$19316,$19317,$19318,$19319,$19320),(nextval($19321),$19322,$19323,$19324,$19325,$19326,$19327,$19328,$19329,$19330,$19331,$19332,$19333,$19334),(nextval($19335),$19336,$19337,$19338,$19339,$19340,$19341,$19342,$19343,$19344,$19345,$19346,$19347,$19348),(nextval($19349),$19350,$19351,$19352,$19353,$19354,$19355,$19356,$19357,$19358,$19359,$19360,$19361,$19362),(nextval($19363),$19364,$19365,$19366,$19367,$19368,$19369,$19370,$19371,$19372,$19373,$19374,$19375,$19376),(nextval($19377),$19378,$19379,$19380,$19381,$19382,$19383,$19384,$19385,$19386,$19387,$19388,$19389,$19390),(nextval($19391),$19392,$19393,$19394,$19395,$19396,$19397,$19398,$19399,$19400,$19401,$19402,$19403,$19404),(nextval($19405),$19406,$19407,$19408,$19409,$19410,$19411,$19412,$19413,$19414,$19415,$19416,$19417,$19418),(nextval($19419),$19420,$19421,$19422,$19423,$19424,$19425,$19426,$19427,$19428,$19429,$19430,$19431,$19432),(nextval($19433),$19434,$19435,$19436,$19437,$19438,$19439,$19440,$19441,$19442,$19443,$19444,$19445,$19446),(nextval($19447),$19448,$19449,$19450,$19451,$19452,$19453,$19454,$19455,$19456,$19457,$19458,$19459,$19460),(nextval($19461),$19462,$19463,$19464,$19465,$19466,$19467,$19468,$19469,$19470,$19471,$19472,$19473,$19474),(nextval($19475),$19476,$19477,$19478,$19479,$19480,$19481,$19482,$19483,$19484,$19485,$19486,$19487,$19488),(nextval($19489),$19490,$19491,$19492,$19493,$19494,$19495,$19496,$19497,$19498,$19499,$19500,$19501,$19502),(nextval($19503),$19504,$19505,$19506,$19507,$19508,$19509,$19510,$19511,$19512,$19513,$19514,$19515,$19516),(nextval($19517),$19518,$19519,$19520,$19521,$19522,$19523,$19524,$19525,$19526,$19527,$19528,$19529,$19530),(nextval($19531),$19532,$19533,$19534,$19535,$19536,$19537,$19538,$19539,$19540,$19541,$19542,$19543,$19544),(nextval($19545),$19546,$19547,$19548,$19549,$19550,$19551,$19552,$19553,$19554,$19555,$19556,$19557,$19558),(nextval($19559),$19560,$19561,$19562,$19563,$19564,$19565,$19566,$19567,$19568,$19569,$19570,$19571,$19572),(nextval($19573),$19574,$19575,$19576,$19577,$19578,$19579,$19580,$19581,$19582,$19583,$19584,$19585,$19586),(nextval($19587),$19588,$19589,$19590,$19591,$19592,$19593,$19594,$19595,$19596,$19597,$19598,$19599,$19600),(nextval($19601),$19602,$19603,$19604,$19605,$19606,$19607,$19608,$19609,$19610,$19611,$19612,$19613,$19614),(nextval($19615),$19616,$19617,$19618,$19619,$19620,$19621,$19622,$19623,$19624,$19625,$19626,$19627,$19628),(nextval($19629),$19630,$19631,$19632,$19633,$19634,$19635,$19636,$19637,$19638,$19639,$19640,$19641,$19642),(nextval($19643),$19644,$19645,$19646,$19647,$19648,$19649,$19650,$19651,$19652,$19653,$19654,$19655,$19656),(nextval($19657),$19658,$19659,$19660,$19661,$19662,$19663,$19664,$19665,$19666,$19667,$19668,$19669,$19670),(nextval($19671),$19672,$19673,$19674,$19675,$19676,$19677,$19678,$19679,$19680,$19681,$19682,$19683,$19684),(nextval($19685),$19686,$19687,$19688,$19689,$19690,$19691,$19692,$19693,$19694,$19695,$19696,$19697,$19698),(nextval($19699),$19700,$19701,$19702,$19703,$19704,$19705,$19706,$19707,$19708,$19709,$19710,$19711,$19712),(nextval($19713),$19714,$19715,$19716,$19717,$19718,$19719,$19720,$19721,$19722,$19723,$19724,$19725,$19726),(nextval($19727),$19728,$19729,$19730,$19731,$19732,$19733,$19734,$19735,$19736,$19737,$19738,$19739,$19740),(nextval($19741),$19742,$19743,$19744,$19745,$19746,$19747,$19748,$19749,$19750,$19751,$19752,$19753,$19754),(nextval($19755),$19756,$19757,$19758,$19759,$19760,$19761,$19762,$19763,$19764,$19765,$19766,$19767,$19768),(nextval($19769),$19770,$19771,$19772,$19773,$19774,$19775,$19776,$19777,$19778,$19779,$19780,$19781,$19782),(nextval($19783),$19784,$19785,$19786,$19787,$19788,$19789,$19790,$19791,$19792,$19793,$19794,$19795,$19796),(nextval($19797),$19798,$19799,$19800,$19801,$19802,$19803,$19804,$19805,$19806,$19807,$19808,$19809,$19810),(nextval($19811),$19812,$19813,$19814,$19815,$19816,$19817,$19818,$19819,$19820,$19821,$19822,$19823,$19824),(nextval($19825),$19826,$19827,$19828,$19829,$19830,$19831,$19832,$19833,$19834,$19835,$19836,$19837,$19838),(nextval($19839),$19840,$19841,$19842,$19843,$19844,$19845,$19846,$19847,$19848,$19849,$19850,$19851,$19852),(nextval($19853),$19854,$19855,$19856,$19857,$19858,$19859,$19860,$19861,$19862,$19863,$19864,$19865,$19866),(nextval($19867),$19868,$19869,$19870,$19871,$19872,$19873,$19874,$19875,$19876,$19877,$19878,$19879,$19880),(nextval($19881),$19882,$19883,$19884,$19885,$19886,$19887,$19888,$19889,$19890,$19891,$19892,$19893,$19894),(nextval($19895),$19896,$19897,$19898,$19899,$19900,$19901,$19902,$19903,$19904,$19905,$19906,$19907,$19908),(nextval($19909),$19910,$19911,$19912,$19913,$19914,$19915,$19916,$19917,$19918,$19919,$19920,$19921,$19922),(nextval($19923),$19924,$19925,$19926,$19927,$19928,$19929,$19930,$19931,$19932,$19933,$19934,$19935,$19936),(nextval($19937),$19938,$19939,$19940,$19941,$19942,$19943,$19944,$19945,$19946,$19947,$19948,$19949,$19950),(nextval($19951),$19952,$19953,$19954,$19955,$19956,$19957,$19958,$19959,$19960,$19961,$19962,$19963,$19964),(nextval($19965),$19966,$19967,$19968,$19969,$19970,$19971,$19972,$19973,$19974,$19975,$19976,$19977,$19978),(nextval($19979),$19980,$19981,$19982,$19983,$19984,$19985,$19986,$19987,$19988,$19989,$19990,$19991,$19992),(nextval($19993),$19994,$19995,$19996,$19997,$19998,$19999,$20000,$20001,$20002,$20003,$20004,$20005,$20006),(nextval($20007),$20008,$20009,$20010,$20011,$20012,$20013,$20014,$20015,$20016,$20017,$20018,$20019,$20020),(nextval($20021),$20022,$20023,$20024,$20025,$20026,$20027,$20028,$20029,$20030,$20031,$20032,$20033,$20034),(nextval($20035),$20036,$20037,$20038,$20039,$20040,$20041,$20042,$20043,$20044,$20045,$20046,$20047,$20048),(nextval($20049),$20050,$20051,$20052,$20053,$20054,$20055,$20056,$20057,$20058,$20059,$20060,$20061,$20062),(nextval($20063),$20064,$20065,$20066,$20067,$20068,$20069,$20070,$20071,$20072,$20073,$20074,$20075,$20076),(nextval($20077),$20078,$20079,$20080,$20081,$20082,$20083,$20084,$20085,$20086,$20087,$20088,$20089,$20090),(nextval($20091),$20092,$20093,$20094,$20095,$20096,$20097,$20098,$20099,$20100,$20101,$20102,$20103,$20104),(nextval($20105),$20106,$20107,$20108,$20109,$20110,$20111,$20112,$20113,$20114,$20115,$20116,$20117,$20118),(nextval($20119),$20120,$20121,$20122,$20123,$20124,$20125,$20126,$20127,$20128,$20129,$20130,$20131,$20132),(nextval($20133),$20134,$20135,$20136,$20137,$20138,$20139,$20140,$20141,$20142,$20143,$20144,$20145,$20146),(nextval($20147),$20148,$20149,$20150,$20151,$20152,$20153,$20154,$20155,$20156,$20157,$20158,$20159,$20160),(nextval($20161),$20162,$20163,$20164,$20165,$20166,$20167,$20168,$20169,$20170,$20171,$20172,$20173,$20174),(nextval($20175),$20176,$20177,$20178,$20179,$20180,$20181,$20182,$20183,$20184,$20185,$20186,$20187,$20188),(nextval($20189),$20190,$20191,$20192,$20193,$20194,$20195,$20196,$20197,$20198,$20199,$20200,$20201,$20202),(nextval($20203),$20204,$20205,$20206,$20207,$20208,$20209,$20210,$20211,$20212,$20213,$20214,$20215,$20216),(nextval($20217),$20218,$20219,$20220,$20221,$20222,$20223,$20224,$20225,$20226,$20227,$20228,$20229,$20230),(nextval($20231),$20232,$20233,$20234,$20235,$20236,$20237,$20238,$20239,$20240,$20241,$20242,$20243,$20244),(nextval($20245),$20246,$20247,$20248,$20249,$20250,$20251,$20252,$20253,$20254,$20255,$20256,$20257,$20258),(nextval($20259),$20260,$20261,$20262,$20263,$20264,$20265,$20266,$20267,$20268,$20269,$20270,$20271,$20272),(nextval($20273),$20274,$20275,$20276,$20277,$20278,$20279,$20280,$20281,$20282,$20283,$20284,$20285,$20286),(nextval($20287),$20288,$20289,$20290,$20291,$20292,$20293,$20294,$20295,$20296,$20297,$20298,$20299,$20300),(nextval($20301),$20302,$20303,$20304,$20305,$20306,$20307,$20308,$20309,$20310,$20311,$20312,$20313,$20314),(nextval($20315),$20316,$20317,$20318,$20319,$20320,$20321,$20322,$20323,$20324,$20325,$20326,$20327,$20328),(nextval($20329),$20330,$20331,$20332,$20333,$20334,$20335,$20336,$20337,$20338,$20339,$20340,$20341,$20342),(nextval($20343),$20344,$20345,$20346,$20347,$20348,$20349,$20350,$20351,$20352,$20353,$20354,$20355,$20356),(nextval($20357),$20358,$20359,$20360,$20361,$20362,$20363,$20364,$20365,$20366,$20367,$20368,$20369,$20370),(nextval($20371),$20372,$20373,$20374,$20375,$20376,$20377,$20378,$20379,$20380,$20381,$20382,$20383,$20384),(nextval($20385),$20386,$20387,$20388,$20389,$20390,$20391,$20392,$20393,$20394,$20395,$20396,$20397,$20398),(nextval($20399),$20400,$20401,$20402,$20403,$20404,$20405,$20406,$20407,$20408,$20409,$20410,$20411,$20412),(nextval($20413),$20414,$20415,$20416,$20417,$20418,$20419,$20420,$20421,$20422,$20423,$20424,$20425,$20426),(nextval($20427),$20428,$20429,$20430,$20431,$20432,$20433,$20434,$20435,$20436,$20437,$20438,$20439,$20440),(nextval($20441),$20442,$20443,$20444,$20445,$20446,$20447,$20448,$20449,$20450,$20451,$20452,$20453,$20454),(nextval($20455),$20456,$20457,$20458,$20459,$20460,$20461,$20462,$20463,$20464,$20465,$20466,$20467,$20468),(nextval($20469),$20470,$20471,$20472,$20473,$20474,$20475,$20476,$20477,$20478,$20479,$20480,$20481,$20482),(nextval($20483),$20484,$20485,$20486,$20487,$20488,$20489,$20490,$20491,$20492,$20493,$20494,$20495,$20496),(nextval($20497),$20498,$20499,$20500,$20501,$20502,$20503,$20504,$20505,$20506,$20507,$20508,$20509,$20510),(nextval($20511),$20512,$20513,$20514,$20515,$20516,$20517,$20518,$20519,$20520,$20521,$20522,$20523,$20524),(nextval($20525),$20526,$20527,$20528,$20529,$20530,$20531,$20532,$20533,$20534,$20535,$20536,$20537,$20538),(nextval($20539),$20540,$20541,$20542,$20543,$20544,$20545,$20546,$20547,$20548,$20549,$20550,$20551,$20552),(nextval($20553),$20554,$20555,$20556,$20557,$20558,$20559,$20560,$20561,$20562,$20563,$20564,$20565,$20566),(nextval($20567),$20568,$20569,$20570,$20571,$20572,$20573,$20574,$20575,$20576,$20577,$20578,$20579,$20580),(nextval($20581),$20582,$20583,$20584,$20585,$20586,$20587,$20588,$20589,$20590,$20591,$20592,$20593,$20594),(nextval($20595),$20596,$20597,$20598,$20599,$20600,$20601,$20602,$20603,$20604,$20605,$20606,$20607,$20608),(nextval($20609),$20610,$20611,$20612,$20613,$20614,$20615,$20616,$20617,$20618,$20619,$20620,$20621,$20622),(nextval($20623),$20624,$20625,$20626,$20627,$20628,$20629,$20630,$20631,$20632,$20633,$20634,$20635,$20636),(nextval($20637),$20638,$20639,$20640,$20641,$20642,$20643,$20644,$20645,$20646,$20647,$20648,$20649,$20650),(nextval($20651),$20652,$20653,$20654,$20655,$20656,$20657,$20658,$20659,$20660,$20661,$20662,$20663,$20664),(nextval($20665),$20666,$20667,$20668,$20669,$20670,$20671,$20672,$20673,$20674,$20675,$20676,$20677,$20678),(nextval($20679),$20680,$20681,$20682,$20683,$20684,$20685,$20686,$20687,$20688,$20689,$20690,$20691,$20692),(nextval($20693),$20694,$20695,$20696,$20697,$20698,$20699,$20700,$20701,$20702,$20703,$20704,$20705,$20706),(nextval($20707),$20708,$20709,$20710,$20711,$20712,$20713,$20714,$20715,$20716,$20717,$20718,$20719,$20720),(nextval($20721),$20722,$20723,$20724,$20725,$20726,$20727,$20728,$20729,$20730,$20731,$20732,$20733,$20734),(nextval($20735),$20736,$20737,$20738,$20739,$20740,$20741,$20742,$20743,$20744,$20745,$20746,$20747,$20748),(nextval($20749),$20750,$20751,$20752,$20753,$20754,$20755,$20756,$20757,$20758,$20759,$20760,$20761,$20762),(nextval($20763),$20764,$20765,$20766,$20767,$20768,$20769,$20770,$20771,$20772,$20773,$20774,$20775,$20776),(nextval($20777),$20778,$20779,$20780,$20781,$20782,$20783,$20784,$20785,$20786,$20787,$20788,$20789,$20790),(nextval($20791),$20792,$20793,$20794,$20795,$20796,$20797,$20798,$20799,$20800,$20801,$20802,$20803,$20804),(nextval($20805),$20806,$20807,$20808,$20809,$20810,$20811,$20812,$20813,$20814,$20815,$20816,$20817,$20818),(nextval($20819),$20820,$20821,$20822,$20823,$20824,$20825,$20826,$20827,$20828,$20829,$20830,$20831,$20832),(nextval($20833),$20834,$20835,$20836,$20837,$20838,$20839,$20840,$20841,$20842,$20843,$20844,$20845,$20846),(nextval($20847),$20848,$20849,$20850,$20851,$20852,$20853,$20854,$20855,$20856,$20857,$20858,$20859,$20860),(nextval($20861),$20862,$20863,$20864,$20865,$20866,$20867,$20868,$20869,$20870,$20871,$20872,$20873,$20874),(nextval($20875),$20876,$20877,$20878,$20879,$20880,$20881,$20882,$20883,$20884,$20885,$20886,$20887,$20888),(nextval($20889),$20890,$20891,$20892,$20893,$20894,$20895,$20896,$20897,$20898,$20899,$20900,$20901,$20902),(nextval($20903),$20904,$20905,$20906,$20907,$20908,$20909,$20910,$20911,$20912,$20913,$20914,$20915,$20916),(nextval($20917),$20918,$20919,$20920,$20921,$20922,$20923,$20924,$20925,$20926,$20927,$20928,$20929,$20930),(nextval($20931),$20932,$20933,$20934,$20935,$20936,$20937,$20938,$20939,$20940,$20941,$20942,$20943,$20944),(nextval($20945),$20946,$20947,$20948,$20949,$20950,$20951,$20952,$20953,$20954,$20955,$20956,$20957,$20958),(nextval($20959),$20960,$20961,$20962,$20963,$20964,$20965,$20966,$20967,$20968,$20969,$20970,$20971,$20972),(nextval($20973),$20974,$20975,$20976,$20977,$20978,$20979,$20980,$20981,$20982,$20983,$20984,$20985,$20986),(nextval($20987),$20988,$20989,$20990,$20991,$20992,$20993,$20994,$20995,$20996,$20997,$20998,$20999,$21000),(nextval($21001),$21002,$21003,$21004,$21005,$21006,$21007,$21008,$21009,$21010,$21011,$21012,$21013,$21014),(nextval($21015),$21016,$21017,$21018,$21019,$21020,$21021,$21022,$21023,$21024,$21025,$21026,$21027,$21028),(nextval($21029),$21030,$21031,$21032,$21033,$21034,$21035,$21036,$21037,$21038,$21039,$21040,$21041,$21042),(nextval($21043),$21044,$21045,$21046,$21047,$21048,$21049,$21050,$21051,$21052,$21053,$21054,$21055,$21056),(nextval($21057),$21058,$21059,$21060,$21061,$21062,$21063,$21064,$21065,$21066,$21067,$21068,$21069,$21070),(nextval($21071),$21072,$21073,$21074,$21075,$21076,$21077,$21078,$21079,$21080,$21081,$21082,$21083,$21084),(nextval($21085),$21086,$21087,$21088,$21089,$21090,$21091,$21092,$21093,$21094,$21095,$21096,$21097,$21098),(nextval($21099),$21100,$21101,$21102,$21103,$21104,$21105,$21106,$21107,$21108,$21109,$21110,$21111,$21112),(nextval($21113),$21114,$21115,$21116,$21117,$21118,$21119,$21120,$21121,$21122,$21123,$21124,$21125,$21126),(nextval($21127),$21128,$21129,$21130,$21131,$21132,$21133,$21134,$21135,$21136,$21137,$21138,$21139,$21140),(nextval($21141),$21142,$21143,$21144,$21145,$21146,$21147,$21148,$21149,$21150,$21151,$21152,$21153,$21154),(nextval($21155),$21156,$21157,$21158,$21159,$21160,$21161,$21162,$21163,$21164,$21165,$21166,$21167,$21168),(nextval($21169),$21170,$21171,$21172,$21173,$21174,$21175,$21176,$21177,$21178,$21179,$21180,$21181,$21182),(nextval($21183),$21184,$21185,$21186,$21187,$21188,$21189,$21190,$21191,$21192,$21193,$21194,$21195,$21196),(nextval($21197),$21198,$21199,$21200,$21201,$21202,$21203,$21204,$21205,$21206,$21207,$21208,$21209,$21210),(nextval($21211),$21212,$21213,$21214,$21215,$21216,$21217,$21218,$21219,$21220,$21221,$21222,$21223,$21224),(nextval($21225),$21226,$21227,$21228,$21229,$21230,$21231,$21232,$21233,$21234,$21235,$21236,$21237,$21238),(nextval($21239),$21240,$21241,$21242,$21243,$21244,$21245,$21246,$21247,$21248,$21249,$21250,$21251,$21252),(nextval($21253),$21254,$21255,$21256,$21257,$21258,$21259,$21260,$21261,$21262,$21263,$21264,$21265,$21266),(nextval($21267),$21268,$21269,$21270,$21271,$21272,$21273,$21274,$21275,$21276,$21277,$21278,$21279,$21280),(nextval($21281),$21282,$21283,$21284,$21285,$21286,$21287,$21288,$21289,$21290,$21291,$21292,$21293,$21294),(nextval($21295),$21296,$21297,$21298,$21299,$21300,$21301,$21302,$21303,$21304,$21305,$21306,$21307,$21308),(nextval($21309),$21310,$21311,$21312,$21313,$21314,$21315,$21316,$21317,$21318,$21319,$21320,$21321,$21322),(nextval($21323),$21324,$21325,$21326,$21327,$21328,$21329,$21330,$21331,$21332,$21333,$21334,$21335,$21336),(nextval($21337),$21338,$21339,$21340,$21341,$21342,$21343,$21344,$21345,$21346,$21347,$21348,$21349,$21350),(nextval($21351),$21352,$21353,$21354,$21355,$21356,$21357,$21358,$21359,$21360,$21361,$21362,$21363,$21364),(nextval($21365),$21366,$21367,$21368,$21369,$21370,$21371,$21372,$21373,$21374,$21375,$21376,$21377,$21378),(nextval($21379),$21380,$21381,$21382,$21383,$21384,$21385,$21386,$21387,$21388,$21389,$21390,$21391,$21392),(nextval($21393),$21394,$21395,$21396,$21397,$21398,$21399,$21400,$21401,$21402,$21403,$21404,$21405,$21406),(nextval($21407),$21408,$21409,$21410,$21411,$21412,$21413,$21414,$21415,$21416,$21417,$21418,$21419,$21420),(nextval($21421),$21422,$21423,$21424,$21425,$21426,$21427,$21428,$21429,$21430,$21431,$21432,$21433,$21434),(nextval($21435),$21436,$21437,$21438,$21439,$21440,$21441,$21442,$21443,$21444,$21445,$21446,$21447,$21448),(nextval($21449),$21450,$21451,$21452,$21453,$21454,$21455,$21456,$21457,$21458,$21459,$21460,$21461,$21462),(nextval($21463),$21464,$21465,$21466,$21467,$21468,$21469,$21470,$21471,$21472,$21473,$21474,$21475,$21476),(nextval($21477),$21478,$21479,$21480,$21481,$21482,$21483,$21484,$21485,$21486,$21487,$21488,$21489,$21490),(nextval($21491),$21492,$21493,$21494,$21495,$21496,$21497,$21498,$21499,$21500,$21501,$21502,$21503,$21504),(nextval($21505),$21506,$21507,$21508,$21509,$21510,$21511,$21512,$21513,$21514,$21515,$21516,$21517,$21518),(nextval($21519),$21520,$21521,$21522,$21523,$21524,$21525,$21526,$21527,$21528,$21529,$21530,$21531,$21532),(nextval($21533),$21534,$21535,$21536,$21537,$21538,$21539,$21540,$21541,$21542,$21543,$21544,$21545,$21546),(nextval($21547),$21548,$21549,$21550,$21551,$21552,$21553,$21554,$21555,$21556,$21557,$21558,$21559,$21560),(nextval($21561),$21562,$21563,$21564,$21565,$21566,$21567,$21568,$21569,$21570,$21571,$21572,$21573,$21574),(nextval($21575),$21576,$21577,$21578,$21579,$21580,$21581,$21582,$21583,$21584,$21585,$21586,$21587,$21588),(nextval($21589),$21590,$21591,$21592,$21593,$21594,$21595,$21596,$21597,$21598,$21599,$21600,$21601,$21602),(nextval($21603),$21604,$21605,$21606,$21607,$21608,$21609,$21610,$21611,$21612,$21613,$21614,$21615,$21616),(nextval($21617),$21618,$21619,$21620,$21621,$21622,$21623,$21624,$21625,$21626,$21627,$21628,$21629,$21630),(nextval($21631),$21632,$21633,$21634,$21635,$21636,$21637,$21638,$21639,$21640,$21641,$21642,$21643,$21644),(nextval($21645),$21646,$21647,$21648,$21649,$21650,$21651,$21652,$21653,$21654,$21655,$21656,$21657,$21658),(nextval($21659),$21660,$21661,$21662,$21663,$21664,$21665,$21666,$21667,$21668,$21669,$21670,$21671,$21672),(nextval($21673),$21674,$21675,$21676,$21677,$21678,$21679,$21680,$21681,$21682,$21683,$21684,$21685,$21686),(nextval($21687),$21688,$21689,$21690,$21691,$21692,$21693,$21694,$21695,$21696,$21697,$21698,$21699,$21700),(nextval($21701),$21702,$21703,$21704,$21705,$21706,$21707,$21708,$21709,$21710,$21711,$21712,$21713,$21714),(nextval($21715),$21716,$21717,$21718,$21719,$21720,$21721,$21722,$21723,$21724,$21725,$21726,$21727,$21728),(nextval($21729),$21730,$21731,$21732,$21733,$21734,$21735,$21736,$21737,$21738,$21739,$21740,$21741,$21742),(nextval($21743),$21744,$21745,$21746,$21747,$21748,$21749,$21750,$21751,$21752,$21753,$21754,$21755,$21756),(nextval($21757),$21758,$21759,$21760,$21761,$21762,$21763,$21764,$21765,$21766,$21767,$21768,$21769,$21770),(nextval($21771),$21772,$21773,$21774,$21775,$21776,$21777,$21778,$21779,$21780,$21781,$21782,$21783,$21784),(nextval($21785),$21786,$21787,$21788,$21789,$21790,$21791,$21792,$21793,$21794,$21795,$21796,$21797,$21798),(nextval($21799),$21800,$21801,$21802,$21803,$21804,$21805,$21806,$21807,$21808,$21809,$21810,$21811,$21812),(nextval($21813),$21814,$21815,$21816,$21817,$21818,$21819,$21820,$21821,$21822,$21823,$21824,$21825,$21826),(nextval($21827),$21828,$21829,$21830,$21831,$21832,$21833,$21834,$21835,$21836,$21837,$21838,$21839,$21840),(nextval($21841),$21842,$21843,$21844,$21845,$21846,$21847,$21848,$21849,$21850,$21851,$21852,$21853,$21854),(nextval($21855),$21856,$21857,$21858,$21859,$21860,$21861,$21862,$21863,$21864,$21865,$21866,$21867,$21868),(nextval($21869),$21870,$21871,$21872,$21873,$21874,$21875,$21876,$21877,$21878,$21879,$21880,$21881,$21882),(nextval($21883),$21884,$21885,$21886,$21887,$21888,$21889,$21890,$21891,$21892,$21893,$21894,$21895,$21896),(nextval($21897),$21898,$21899,$21900,$21901,$21902,$21903,$21904,$21905,$21906,$21907,$21908,$21909,$21910),(nextval($21911),$21912,$21913,$21914,$21915,$21916,$21917,$21918,$21919,$21920,$21921,$21922,$21923,$21924),(nextval($21925),$21926,$21927,$21928,$21929,$21930,$21931,$21932,$21933,$21934,$21935,$21936,$21937,$21938),(nextval($21939),$21940,$21941,$21942,$21943,$21944,$21945,$21946,$21947,$21948,$21949,$21950,$21951,$21952),(nextval($21953),$21954,$21955,$21956,$21957,$21958,$21959,$21960,$21961,$21962,$21963,$21964,$21965,$21966),(nextval($21967),$21968,$21969,$21970,$21971,$21972,$21973,$21974,$21975,$21976,$21977,$21978,$21979,$21980),(nextval($21981),$21982,$21983,$21984,$21985,$21986,$21987,$21988,$21989,$21990,$21991,$21992,$21993,$21994),(nextval($21995),$21996,$21997,$21998,$21999,$22000,$22001,$22002,$22003,$22004,$22005,$22006,$22007,$22008),(nextval($22009),$22010,$22011,$22012,$22013,$22014,$22015,$22016,$22017,$22018,$22019,$22020,$22021,$22022),(nextval($22023),$22024,$22025,$22026,$22027,$22028,$22029,$22030,$22031,$22032,$22033,$22034,$22035,$22036),(nextval($22037),$22038,$22039,$22040,$22041,$22042,$22043,$22044,$22045,$22046,$22047,$22048,$22049,$22050),(nextval($22051),$22052,$22053,$22054,$22055,$22056,$22057,$22058,$22059,$22060,$22061,$22062,$22063,$22064),(nextval($22065),$22066,$22067,$22068,$22069,$22070,$22071,$22072,$22073,$22074,$22075,$22076,$22077,$22078),(nextval($22079),$22080,$22081,$22082,$22083,$22084,$22085,$22086,$22087,$22088,$22089,$22090,$22091,$22092),(nextval($22093),$22094,$22095,$22096,$22097,$22098,$22099,$22100,$22101,$22102,$22103,$22104,$22105,$22106),(nextval($22107),$22108,$22109,$22110,$22111,$22112,$22113,$22114,$22115,$22116,$22117,$22118,$22119,$22120),(nextval($22121),$22122,$22123,$22124,$22125,$22126,$22127,$22128,$22129,$22130,$22131,$22132,$22133,$22134),(nextval($22135),$22136,$22137,$22138,$22139,$22140,$22141,$22142,$22143,$22144,$22145,$22146,$22147,$22148),(nextval($22149),$22150,$22151,$22152,$22153,$22154,$22155,$22156,$22157,$22158,$22159,$22160,$22161,$22162),(nextval($22163),$22164,$22165,$22166,$22167,$22168,$22169,$22170,$22171,$22172,$22173,$22174,$22175,$22176),(nextval($22177),$22178,$22179,$22180,$22181,$22182,$22183,$22184,$22185,$22186,$22187,$22188,$22189,$22190),(nextval($22191),$22192,$22193,$22194,$22195,$22196,$22197,$22198,$22199,$22200,$22201,$22202,$22203,$22204),(nextval($22205),$22206,$22207,$22208,$22209,$22210,$22211,$22212,$22213,$22214,$22215,$22216,$22217,$22218),(nextval($22219),$22220,$22221,$22222,$22223,$22224,$22225,$22226,$22227,$22228,$22229,$22230,$22231,$22232),(nextval($22233),$22234,$22235,$22236,$22237,$22238,$22239,$22240,$22241,$22242,$22243,$22244,$22245,$22246),(nextval($22247),$22248,$22249,$22250,$22251,$22252,$22253,$22254,$22255,$22256,$22257,$22258,$22259,$22260),(nextval($22261),$22262,$22263,$22264,$22265,$22266,$22267,$22268,$22269,$22270,$22271,$22272,$22273,$22274),(nextval($22275),$22276,$22277,$22278,$22279,$22280,$22281,$22282,$22283,$22284,$22285,$22286,$22287,$22288),(nextval($22289),$22290,$22291,$22292,$22293,$22294,$22295,$22296,$22297,$22298,$22299,$22300,$22301,$22302),(nextval($22303),$22304,$22305,$22306,$22307,$22308,$22309,$22310,$22311,$22312,$22313,$22314,$22315,$22316),(nextval($22317),$22318,$22319,$22320,$22321,$22322,$22323,$22324,$22325,$22326,$22327,$22328,$22329,$22330),(nextval($22331),$22332,$22333,$22334,$22335,$22336,$22337,$22338,$22339,$22340,$22341,$22342,$22343,$22344),(nextval($22345),$22346,$22347,$22348,$22349,$22350,$22351,$22352,$22353,$22354,$22355,$22356,$22357,$22358),(nextval($22359),$22360,$22361,$22362,$22363,$22364,$22365,$22366,$22367,$22368,$22369,$22370,$22371,$22372),(nextval($22373),$22374,$22375,$22376,$22377,$22378,$22379,$22380,$22381,$22382,$22383,$22384,$22385,$22386),(nextval($22387),$22388,$22389,$22390,$22391,$22392,$22393,$22394,$22395,$22396,$22397,$22398,$22399,$22400),(nextval($22401),$22402,$22403,$22404,$22405,$22406,$22407,$22408,$22409,$22410,$22411,$22412,$22413,$22414),(nextval($22415),$22416,$22417,$22418,$22419,$22420,$22421,$22422,$22423,$22424,$22425,$22426,$22427,$22428),(nextval($22429),$22430,$22431,$22432,$22433,$22434,$22435,$22436,$22437,$22438,$22439,$22440,$22441,$22442),(nextval($22443),$22444,$22445,$22446,$22447,$22448,$22449,$22450,$22451,$22452,$22453,$22454,$22455,$22456),(nextval($22457),$22458,$22459,$22460,$22461,$22462,$22463,$22464,$22465,$22466,$22467,$22468,$22469,$22470),(nextval($22471),$22472,$22473,$22474,$22475,$22476,$22477,$22478,$22479,$22480,$22481,$22482,$22483,$22484),(nextval($22485),$22486,$22487,$22488,$22489,$22490,$22491,$22492,$22493,$22494,$22495,$22496,$22497,$22498),(nextval($22499),$22500,$22501,$22502,$22503,$22504,$22505,$22506,$22507,$22508,$22509,$22510,$22511,$22512),(nextval($22513),$22514,$22515,$22516,$22517,$22518,$22519,$22520,$22521,$22522,$22523,$22524,$22525,$22526),(nextval($22527),$22528,$22529,$22530,$22531,$22532,$22533,$22534,$22535,$22536,$22537,$22538,$22539,$22540),(nextval($22541),$22542,$22543,$22544,$22545,$22546,$22547,$22548,$22549,$22550,$22551,$22552,$22553,$22554),(nextval($22555),$22556,$22557,$22558,$22559,$22560,$22561,$22562,$22563,$22564,$22565,$22566,$22567,$22568),(nextval($22569),$22570,$22571,$22572,$22573,$22574,$22575,$22576,$22577,$22578,$22579,$22580,$22581,$22582),(nextval($22583),$22584,$22585,$22586,$22587,$22588,$22589,$22590,$22591,$22592,$22593,$22594,$22595,$22596),(nextval($22597),$22598,$22599,$22600,$22601,$22602,$22603,$22604,$22605,$22606,$22607,$22608,$22609,$22610),(nextval($22611),$22612,$22613,$22614,$22615,$22616,$22617,$22618,$22619,$22620,$22621,$22622,$22623,$22624),(nextval($22625),$22626,$22627,$22628,$22629,$22630,$22631,$22632,$22633,$22634,$22635,$22636,$22637,$22638),(nextval($22639),$22640,$22641,$22642,$22643,$22644,$22645,$22646,$22647,$22648,$22649,$22650,$22651,$22652),(nextval($22653),$22654,$22655,$22656,$22657,$22658,$22659,$22660,$22661,$22662,$22663,$22664,$22665,$22666),(nextval($22667),$22668,$22669,$22670,$22671,$22672,$22673,$22674,$22675,$22676,$22677,$22678,$22679,$22680),(nextval($22681),$22682,$22683,$22684,$22685,$22686,$22687,$22688,$22689,$22690,$22691,$22692,$22693,$22694),(nextval($22695),$22696,$22697,$22698,$22699,$22700,$22701,$22702,$22703,$22704,$22705,$22706,$22707,$22708),(nextval($22709),$22710,$22711,$22712,$22713,$22714,$22715,$22716,$22717,$22718,$22719,$22720,$22721,$22722),(nextval($22723),$22724,$22725,$22726,$22727,$22728,$22729,$22730,$22731,$22732,$22733,$22734,$22735,$22736),(nextval($22737),$22738,$22739,$22740,$22741,$22742,$22743,$22744,$22745,$22746,$22747,$22748,$22749,$22750),(nextval($22751),$22752,$22753,$22754,$22755,$22756,$22757,$22758,$22759,$22760,$22761,$22762,$22763,$22764),(nextval($22765),$22766,$22767,$22768,$22769,$22770,$22771,$22772,$22773,$22774,$22775,$22776,$22777,$22778),(nextval($22779),$22780,$22781,$22782,$22783,$22784,$22785,$22786,$22787,$22788,$22789,$22790,$22791,$22792),(nextval($22793),$22794,$22795,$22796,$22797,$22798,$22799,$22800,$22801,$22802,$22803,$22804,$22805,$22806),(nextval($22807),$22808,$22809,$22810,$22811,$22812,$22813,$22814,$22815,$22816,$22817,$22818,$22819,$22820),(nextval($22821),$22822,$22823,$22824,$22825,$22826,$22827,$22828,$22829,$22830,$22831,$22832,$22833,$22834),(nextval($22835),$22836,$22837,$22838,$22839,$22840,$22841,$22842,$22843,$22844,$22845,$22846,$22847,$22848),(nextval($22849),$22850,$22851,$22852,$22853,$22854,$22855,$22856,$22857,$22858,$22859,$22860,$22861,$22862),(nextval($22863),$22864,$22865,$22866,$22867,$22868,$22869,$22870,$22871,$22872,$22873,$22874,$22875,$22876),(nextval($22877),$22878,$22879,$22880,$22881,$22882,$22883,$22884,$22885,$22886,$22887,$22888,$22889,$22890),(nextval($22891),$22892,$22893,$22894,$22895,$22896,$22897,$22898,$22899,$22900,$22901,$22902,$22903,$22904),(nextval($22905),$22906,$22907,$22908,$22909,$22910,$22911,$22912,$22913,$22914,$22915,$22916,$22917,$22918),(nextval($22919),$22920,$22921,$22922,$22923,$22924,$22925,$22926,$22927,$22928,$22929,$22930,$22931,$22932),(nextval($22933),$22934,$22935,$22936,$22937,$22938,$22939,$22940,$22941,$22942,$22943,$22944,$22945,$22946),(nextval($22947),$22948,$22949,$22950,$22951,$22952,$22953,$22954,$22955,$22956,$22957,$22958,$22959,$22960),(nextval($22961),$22962,$22963,$22964,$22965,$22966,$22967,$22968,$22969,$22970,$22971,$22972,$22973,$22974),(nextval($22975),$22976,$22977,$22978,$22979,$22980,$22981,$22982,$22983,$22984,$22985,$22986,$22987,$22988),(nextval($22989),$22990,$22991,$22992,$22993,$22994,$22995,$22996,$22997,$22998,$22999,$23000,$23001,$23002),(nextval($23003),$23004,$23005,$23006,$23007,$23008,$23009,$23010,$23011,$23012,$23013,$23014,$23015,$23016),(nextval($23017),$23018,$23019,$23020,$23021,$23022,$23023,$23024,$23025,$23026,$23027,$23028,$23029,$23030),(nextval($23031),$23032,$23033,$23034,$23035,$23036,$23037,$23038,$23039,$23040,$23041,$23042,$23043,$23044),(nextval($23045),$23046,$23047,$23048,$23049,$23050,$23051,$23052,$23053,$23054,$23055,$23056,$23057,$23058),(nextval($23059),$23060,$23061,$23062,$23063,$23064,$23065,$23066,$23067,$23068,$23069,$23070,$23071,$23072),(nextval($23073),$23074,$23075,$23076,$23077,$23078,$23079,$23080,$23081,$23082,$23083,$23084,$23085,$23086),(nextval($23087),$23088,$23089,$23090,$23091,$23092,$23093,$23094,$23095,$23096,$23097,$23098,$23099,$23100),(nextval($23101),$23102,$23103,$23104,$23105,$23106,$23107,$23108,$23109,$23110,$23111,$23112,$23113,$23114),(nextval($23115),$23116,$23117,$23118,$23119,$23120,$23121,$23122,$23123,$23124,$23125,$23126,$23127,$23128),(nextval($23129),$23130,$23131,$23132,$23133,$23134,$23135,$23136,$23137,$23138,$23139,$23140,$23141,$23142),(nextval($23143),$23144,$23145,$23146,$23147,$23148,$23149,$23150,$23151,$23152,$23153,$23154,$23155,$23156),(nextval($23157),$23158,$23159,$23160,$23161,$23162,$23163,$23164,$23165,$23166,$23167,$23168,$23169,$23170),(nextval($23171),$23172,$23173,$23174,$23175,$23176,$23177,$23178,$23179,$23180,$23181,$23182,$23183,$23184),(nextval($23185),$23186,$23187,$23188,$23189,$23190,$23191,$23192,$23193,$23194,$23195,$23196,$23197,$23198),(nextval($23199),$23200,$23201,$23202,$23203,$23204,$23205,$23206,$23207,$23208,$23209,$23210,$23211,$23212),(nextval($23213),$23214,$23215,$23216,$23217,$23218,$23219,$23220,$23221,$23222,$23223,$23224,$23225,$23226),(nextval($23227),$23228,$23229,$23230,$23231,$23232,$23233,$23234,$23235,$23236,$23237,$23238,$23239,$23240),(nextval($23241),$23242,$23243,$23244,$23245,$23246,$23247,$23248,$23249,$23250,$23251,$23252,$23253,$23254),(nextval($23255),$23256,$23257,$23258,$23259,$23260,$23261,$23262,$23263,$23264,$23265,$23266,$23267,$23268),(nextval($23269),$23270,$23271,$23272,$23273,$23274,$23275,$23276,$23277,$23278,$23279,$23280,$23281,$23282),(nextval($23283),$23284,$23285,$23286,$23287,$23288,$23289,$23290,$23291,$23292,$23293,$23294,$23295,$23296),(nextval($23297),$23298,$23299,$23300,$23301,$23302,$23303,$23304,$23305,$23306,$23307,$23308,$23309,$23310),(nextval($23311),$23312,$23313,$23314,$23315,$23316,$23317,$23318,$23319,$23320,$23321,$23322,$23323,$23324),(nextval($23325),$23326,$23327,$23328,$23329,$23330,$23331,$23332,$23333,$23334,$23335,$23336,$23337,$23338),(nextval($23339),$23340,$23341,$23342,$23343,$23344,$23345,$23346,$23347,$23348,$23349,$23350,$23351,$23352),(nextval($23353),$23354,$23355,$23356,$23357,$23358,$23359,$23360,$23361,$23362,$23363,$23364,$23365,$23366),(nextval($23367),$23368,$23369,$23370,$23371,$23372,$23373,$23374,$23375,$23376,$23377,$23378,$23379,$23380),(nextval($23381),$23382,$23383,$23384,$23385,$23386,$23387,$23388,$23389,$23390,$23391,$23392,$23393,$23394),(nextval($23395),$23396,$23397,$23398,$23399,$23400,$23401,$23402,$23403,$23404,$23405,$23406,$23407,$23408),(nextval($23409),$23410,$23411,$23412,$23413,$23414,$23415,$23416,$23417,$23418,$23419,$23420,$23421,$23422),(nextval($23423),$23424,$23425,$23426,$23427,$23428,$23429,$23430,$23431,$23432,$23433,$23434,$23435,$23436),(nextval($23437),$23438,$23439,$23440,$23441,$23442,$23443,$23444,$23445,$23446,$23447,$23448,$23449,$23450),(nextval($23451),$23452,$23453,$23454,$23455,$23456,$23457,$23458,$23459,$23460,$23461,$23462,$23463,$23464),(nextval($23465),$23466,$23467,$23468,$23469,$23470,$23471,$23472,$23473,$23474,$23475,$23476,$23477,$23478),(nextval($23479),$23480,$23481,$23482,$23483,$23484,$23485,$23486,$23487,$23488,$23489,$23490,$23491,$23492),(nextval($23493),$23494,$23495,$23496,$23497,$23498,$23499,$23500,$23501,$23502,$23503,$23504,$23505,$23506),(nextval($23507),$23508,$23509,$23510,$23511,$23512,$23513,$23514,$23515,$23516,$23517,$23518,$23519,$23520),(nextval($23521),$23522,$23523,$23524,$23525,$23526,$23527,$23528,$23529,$23530,$23531,$23532,$23533,$23534),(nextval($23535),$23536,$23537,$23538,$23539,$23540,$23541,$23542,$23543,$23544,$23545,$23546,$23547,$23548),(nextval($23549),$23550,$23551,$23552,$23553,$23554,$23555,$23556,$23557,$23558,$23559,$23560,$23561,$23562),(nextval($23563),$23564,$23565,$23566,$23567,$23568,$23569,$23570,$23571,$23572,$23573,$23574,$23575,$23576),(nextval($23577),$23578,$23579,$23580,$23581,$23582,$23583,$23584,$23585,$23586,$23587,$23588,$23589,$23590),(nextval($23591),$23592,$23593,$23594,$23595,$23596,$23597,$23598,$23599,$23600,$23601,$23602,$23603,$23604),(nextval($23605),$23606,$23607,$23608,$23609,$23610,$23611,$23612,$23613,$23614,$23615,$23616,$23617,$23618),(nextval($23619),$23620,$23621,$23622,$23623,$23624,$23625,$23626,$23627,$23628,$23629,$23630,$23631,$23632),(nextval($23633),$23634,$23635,$23636,$23637,$23638,$23639,$23640,$23641,$23642,$23643,$23644,$23645,$23646),(nextval($23647),$23648,$23649,$23650,$23651,$23652,$23653,$23654,$23655,$23656,$23657,$23658,$23659,$23660),(nextval($23661),$23662,$23663,$23664,$23665,$23666,$23667,$23668,$23669,$23670,$23671,$23672,$23673,$23674),(nextval($23675),$23676,$23677,$23678,$23679,$23680,$23681,$23682,$23683,$23684,$23685,$23686,$23687,$23688),(nextval($23689),$23690,$23691,$23692,$23693,$23694,$23695,$23696,$23697,$23698,$23699,$23700,$23701,$23702),(nextval($23703),$23704,$23705,$23706,$23707,$23708,$23709,$23710,$23711,$23712,$23713,$23714,$23715,$23716),(nextval($23717),$23718,$23719,$23720,$23721,$23722,$23723,$23724,$23725,$23726,$23727,$23728,$23729,$23730),(nextval($23731),$23732,$23733,$23734,$23735,$23736,$23737,$23738,$23739,$23740,$23741,$23742,$23743,$23744),(nextval($23745),$23746,$23747,$23748,$23749,$23750,$23751,$23752,$23753,$23754,$23755,$23756,$23757,$23758),(nextval($23759),$23760,$23761,$23762,$23763,$23764,$23765,$23766,$23767,$23768,$23769,$23770,$23771,$23772),(nextval($23773),$23774,$23775,$23776,$23777,$23778,$23779,$23780,$23781,$23782,$23783,$23784,$23785,$23786),(nextval($23787),$23788,$23789,$23790,$23791,$23792,$23793,$23794,$23795,$23796,$23797,$23798,$23799,$23800),(nextval($23801),$23802,$23803,$23804,$23805,$23806,$23807,$23808,$23809,$23810,$23811,$23812,$23813,$23814),(nextval($23815),$23816,$23817,$23818,$23819,$23820,$23821,$23822,$23823,$23824,$23825,$23826,$23827,$23828),(nextval($23829),$23830,$23831,$23832,$23833,$23834,$23835,$23836,$23837,$23838,$23839,$23840,$23841,$23842),(nextval($23843),$23844,$23845,$23846,$23847,$23848,$23849,$23850,$23851,$23852,$23853,$23854,$23855,$23856),(nextval($23857),$23858,$23859,$23860,$23861,$23862,$23863,$23864,$23865,$23866,$23867,$23868,$23869,$23870),(nextval($23871),$23872,$23873,$23874,$23875,$23876,$23877,$23878,$23879,$23880,$23881,$23882,$23883,$23884),(nextval($23885),$23886,$23887,$23888,$23889,$23890,$23891,$23892,$23893,$23894,$23895,$23896,$23897,$23898),(nextval($23899),$23900,$23901,$23902,$23903,$23904,$23905,$23906,$23907,$23908,$23909,$23910,$23911,$23912),(nextval($23913),$23914,$23915,$23916,$23917,$23918,$23919,$23920,$23921,$23922,$23923,$23924,$23925,$23926),(nextval($23927),$23928,$23929,$23930,$23931,$23932,$23933,$23934,$23935,$23936,$23937,$23938,$23939,$23940),(nextval($23941),$23942,$23943,$23944,$23945,$23946,$23947,$23948,$23949,$23950,$23951,$23952,$23953,$23954),(nextval($23955),$23956,$23957,$23958,$23959,$23960,$23961,$23962,$23963,$23964,$23965,$23966,$23967,$23968),(nextval($23969),$23970,$23971,$23972,$23973,$23974,$23975,$23976,$23977,$23978,$23979,$23980,$23981,$23982),(nextval($23983),$23984,$23985,$23986,$23987,$23988,$23989,$23990,$23991,$23992,$23993,$23994,$23995,$23996),(nextval($23997),$23998,$23999,$24000,$24001,$24002,$24003,$24004,$24005,$24006,$24007,$24008,$24009,$24010),(nextval($24011),$24012,$24013,$24014,$24015,$24016,$24017,$24018,$24019,$24020,$24021,$24022,$24023,$24024),(nextval($24025),$24026,$24027,$24028,$24029,$24030,$24031,$24032,$24033,$24034,$24035,$24036,$24037,$24038),(nextval($24039),$24040,$24041,$24042,$24043,$24044,$24045,$24046,$24047,$24048,$24049,$24050,$24051,$24052),(nextval($24053),$24054,$24055,$24056,$24057,$24058,$24059,$24060,$24061,$24062,$24063,$24064,$24065,$24066),(nextval($24067),$24068,$24069,$24070,$24071,$24072,$24073,$24074,$24075,$24076,$24077,$24078,$24079,$24080),(nextval($24081),$24082,$24083,$24084,$24085,$24086,$24087,$24088,$24089,$24090,$24091,$24092,$24093,$24094),(nextval($24095),$24096,$24097,$24098,$24099,$24100,$24101,$24102,$24103,$24104,$24105,$24106,$24107,$24108),(nextval($24109),$24110,$24111,$24112,$24113,$24114,$24115,$24116,$24117,$24118,$24119,$24120,$24121,$24122),(nextval($24123),$24124,$24125,$24126,$24127,$24128,$24129,$24130,$24131,$24132,$24133,$24134,$24135,$24136),(nextval($24137),$24138,$24139,$24140,$24141,$24142,$24143,$24144,$24145,$24146,$24147,$24148,$24149,$24150),(nextval($24151),$24152,$24153,$24154,$24155,$24156,$24157,$24158,$24159,$24160,$24161,$24162,$24163,$24164),(nextval($24165),$24166,$24167,$24168,$24169,$24170,$24171,$24172,$24173,$24174,$24175,$24176,$24177,$24178),(nextval($24179),$24180,$24181,$24182,$24183,$24184,$24185,$24186,$24187,$24188,$24189,$24190,$24191,$24192),(nextval($24193),$24194,$24195,$24196,$24197,$24198,$24199,$24200,$24201,$24202,$24203,$24204,$24205,$24206),(nextval($24207),$24208,$24209,$24210,$24211,$24212,$24213,$24214,$24215,$24216,$24217,$24218,$24219,$24220),(nextval($24221),$24222,$24223,$24224,$24225,$24226,$24227,$24228,$24229,$24230,$24231,$24232,$24233,$24234),(nextval($24235),$24236,$24237,$24238,$24239,$24240,$24241,$24242,$24243,$24244,$24245,$24246,$24247,$24248),(nextval($24249),$24250,$24251,$24252,$24253,$24254,$24255,$24256,$24257,$24258,$24259,$24260,$24261,$24262),(nextval($24263),$24264,$24265,$24266,$24267,$24268,$24269,$24270,$24271,$24272,$24273,$24274,$24275,$24276),(nextval($24277),$24278,$24279,$24280,$24281,$24282,$24283,$24284,$24285,$24286,$24287,$24288,$24289,$24290),(nextval($24291),$24292,$24293,$24294,$24295,$24296,$24297,$24298,$24299,$24300,$24301,$24302,$24303,$24304),(nextval($24305),$24306,$24307,$24308,$24309,$24310,$24311,$24312,$24313,$24314,$24315,$24316,$24317,$24318),(nextval($24319),$24320,$24321,$24322,$24323,$24324,$24325,$24326,$24327,$24328,$24329,$24330,$24331,$24332),(nextval($24333),$24334,$24335,$24336,$24337,$24338,$24339,$24340,$24341,$24342,$24343,$24344,$24345,$24346),(nextval($24347),$24348,$24349,$24350,$24351,$24352,$24353,$24354,$24355,$24356,$24357,$24358,$24359,$24360),(nextval($24361),$24362,$24363,$24364,$24365,$24366,$24367,$24368,$24369,$24370,$24371,$24372,$24373,$24374),(nextval($24375),$24376,$24377,$24378,$24379,$24380,$24381,$24382,$24383,$24384,$24385,$24386,$24387,$24388),(nextval($24389),$24390,$24391,$24392,$24393,$24394,$24395,$24396,$24397,$24398,$24399,$24400,$24401,$24402),(nextval($24403),$24404,$24405,$24406,$24407,$24408,$24409,$24410,$24411,$24412,$24413,$24414,$24415,$24416),(nextval($24417),$24418,$24419,$24420,$24421,$24422,$24423,$24424,$24425,$24426,$24427,$24428,$24429,$24430),(nextval($24431),$24432,$24433,$24434,$24435,$24436,$24437,$24438,$24439,$24440,$24441,$24442,$24443,$24444),(nextval($24445),$24446,$24447,$24448,$24449,$24450,$24451,$24452,$24453,$24454,$24455,$24456,$24457,$24458),(nextval($24459),$24460,$24461,$24462,$24463,$24464,$24465,$24466,$24467,$24468,$24469,$24470,$24471,$24472),(nextval($24473),$24474,$24475,$24476,$24477,$24478,$24479,$24480,$24481,$24482,$24483,$24484,$24485,$24486),(nextval($24487),$24488,$24489,$24490,$24491,$24492,$24493,$24494,$24495,$24496,$24497,$24498,$24499,$24500),(nextval($24501),$24502,$24503,$24504,$24505,$24506,$24507,$24508,$24509,$24510,$24511,$24512,$24513,$24514),(nextval($24515),$24516,$24517,$24518,$24519,$24520,$24521,$24522,$24523,$24524,$24525,$24526,$24527,$24528),(nextval($24529),$24530,$24531,$24532,$24533,$24534,$24535,$24536,$24537,$24538,$24539,$24540,$24541,$24542),(nextval($24543),$24544,$24545,$24546,$24547,$24548,$24549,$24550,$24551,$24552,$24553,$24554,$24555,$24556),(nextval($24557),$24558,$24559,$24560,$24561,$24562,$24563,$24564,$24565,$24566,$24567,$24568,$24569,$24570),(nextval($24571),$24572,$24573,$24574,$24575,$24576,$24577,$24578,$24579,$24580,$24581,$24582,$24583,$24584),(nextval($24585),$24586,$24587,$24588,$24589,$24590,$24591,$24592,$24593,$24594,$24595,$24596,$24597,$24598),(nextval($24599),$24600,$24601,$24602,$24603,$24604,$24605,$24606,$24607,$24608,$24609,$24610,$24611,$24612),(nextval($24613),$24614,$24615,$24616,$24617,$24618,$24619,$24620,$24621,$24622,$24623,$24624,$24625,$24626),(nextval($24627),$24628,$24629,$24630,$24631,$24632,$24633,$24634,$24635,$24636,$24637,$24638,$24639,$24640),(nextval($24641),$24642,$24643,$24644,$24645,$24646,$24647,$24648,$24649,$24650,$24651,$24652,$24653,$24654),(nextval($24655),$24656,$24657,$24658,$24659,$24660,$24661,$24662,$24663,$24664,$24665,$24666,$24667,$24668),(nextval($24669),$24670,$24671,$24672,$24673,$24674,$24675,$24676,$24677,$24678,$24679,$24680,$24681,$24682),(nextval($24683),$24684,$24685,$24686,$24687,$24688,$24689,$24690,$24691,$24692,$24693,$24694,$24695,$24696),(nextval($24697),$24698,$24699,$24700,$24701,$24702,$24703,$24704,$24705,$24706,$24707,$24708,$24709,$24710),(nextval($24711),$24712,$24713,$24714,$24715,$24716,$24717,$24718,$24719,$24720,$24721,$24722,$24723,$24724),(nextval($24725),$24726,$24727,$24728,$24729,$24730,$24731,$24732,$24733,$24734,$24735,$24736,$24737,$24738),(nextval($24739),$24740,$24741,$24742,$24743,$24744,$24745,$24746,$24747,$24748,$24749,$24750,$24751,$24752),(nextval($24753),$24754,$24755,$24756,$24757,$24758,$24759,$24760,$24761,$24762,$24763,$24764,$24765,$24766),(nextval($24767),$24768,$24769,$24770,$24771,$24772,$24773,$24774,$24775,$24776,$24777,$24778,$24779,$24780),(nextval($24781),$24782,$24783,$24784,$24785,$24786,$24787,$24788,$24789,$24790,$24791,$24792,$24793,$24794),(nextval($24795),$24796,$24797,$24798,$24799,$24800,$24801,$24802,$24803,$24804,$24805,$24806,$24807,$24808),(nextval($24809),$24810,$24811,$24812,$24813,$24814,$24815,$24816,$24817,$24818,$24819,$24820,$24821,$24822),(nextval($24823),$24824,$24825,$24826,$24827,$24828,$24829,$24830,$24831,$24832,$24833,$24834,$24835,$24836),(nextval($24837),$24838,$24839,$24840,$24841,$24842,$24843,$24844,$24845,$24846,$24847,$24848,$24849,$24850),(nextval($24851),$24852,$24853,$24854,$24855,$24856,$24857,$24858,$24859,$24860,$24861,$24862,$24863,$24864),(nextval($24865),$24866,$24867,$24868,$24869,$24870,$24871,$24872,$24873,$24874,$24875,$24876,$24877,$24878),(nextval($24879),$24880,$24881,$24882,$24883,$24884,$24885,$24886,$24887,$24888,$24889,$24890,$24891,$24892),(nextval($24893),$24894,$24895,$24896,$24897,$24898,$24899,$24900,$24901,$24902,$24903,$24904,$24905,$24906),(nextval($24907),$24908,$24909,$24910,$24911,$24912,$24913,$24914,$24915,$24916,$24917,$24918,$24919,$24920),(nextval($24921),$24922,$24923,$24924,$24925,$24926,$24927,$24928,$24929,$24930,$24931,$24932,$24933,$24934),(nextval($24935),$24936,$24937,$24938,$24939,$24940,$24941,$24942,$24943,$24944,$24945,$24946,$24947,$24948),(nextval($24949),$24950,$24951,$24952,$24953,$24954,$24955,$24956,$24957,$24958,$24959,$24960,$24961,$24962),(nextval($24963),$24964,$24965,$24966,$24967,$24968,$24969,$24970,$24971,$24972,$24973,$24974,$24975,$24976),(nextval($24977),$24978,$24979,$24980,$24981,$24982,$24983,$24984,$24985,$24986,$24987,$24988,$24989,$24990),(nextval($24991),$24992,$24993,$24994,$24995,$24996,$24997,$24998,$24999,$25000,$25001,$25002,$25003,$25004),(nextval($25005),$25006,$25007,$25008,$25009,$25010,$25011,$25012,$25013,$25014,$25015,$25016,$25017,$25018),(nextval($25019),$25020,$25021,$25022,$25023,$25024,$25025,$25026,$25027,$25028,$25029,$25030,$25031,$25032),(nextval($25033),$25034,$25035,$25036,$25037,$25038,$25039,$25040,$25041,$25042,$25043,$25044,$25045,$25046),(nextval($25047),$25048,$25049,$25050,$25051,$25052,$25053,$25054,$25055,$25056,$25057,$25058,$25059,$25060),(nextval($25061),$25062,$25063,$25064,$25065,$25066,$25067,$25068,$25069,$25070,$25071,$25072,$25073,$25074),(nextval($25075),$25076,$25077,$25078,$25079,$25080,$25081,$25082,$25083,$25084,$25085,$25086,$25087,$25088),(nextval($25089),$25090,$25091,$25092,$25093,$25094,$25095,$25096,$25097,$25098,$25099,$25100,$25101,$25102),(nextval($25103),$25104,$25105,$25106,$25107,$25108,$25109,$25110,$25111,$25112,$25113,$25114,$25115,$25116),(nextval($25117),$25118,$25119,$25120,$25121,$25122,$25123,$25124,$25125,$25126,$25127,$25128,$25129,$25130),(nextval($25131),$25132,$25133,$25134,$25135,$25136,$25137,$25138,$25139,$25140,$25141,$25142,$25143,$25144),(nextval($25145),$25146,$25147,$25148,$25149,$25150,$25151,$25152,$25153,$25154,$25155,$25156,$25157,$25158),(nextval($25159),$25160,$25161,$25162,$25163,$25164,$25165,$25166,$25167,$25168,$25169,$25170,$25171,$25172),(nextval($25173),$25174,$25175,$25176,$25177,$25178,$25179,$25180,$25181,$25182,$25183,$25184,$25185,$25186),(nextval($25187),$25188,$25189,$25190,$25191,$25192,$25193,$25194,$25195,$25196,$25197,$25198,$25199,$25200),(nextval($25201),$25202,$25203,$25204,$25205,$25206,$25207,$25208,$25209,$25210,$25211,$25212,$25213,$25214),(nextval($25215),$25216,$25217,$25218,$25219,$25220,$25221,$25222,$25223,$25224,$25225,$25226,$25227,$25228),(nextval($25229),$25230,$25231,$25232,$25233,$25234,$25235,$25236,$25237,$25238,$25239,$25240,$25241,$25242),(nextval($25243),$25244,$25245,$25246,$25247,$25248,$25249,$25250,$25251,$25252,$25253,$25254,$25255,$25256),(nextval($25257),$25258,$25259,$25260,$25261,$25262,$25263,$25264,$25265,$25266,$25267,$25268,$25269,$25270),(nextval($25271),$25272,$25273,$25274,$25275,$25276,$25277,$25278,$25279,$25280,$25281,$25282,$25283,$25284),(nextval($25285),$25286,$25287,$25288,$25289,$25290,$25291,$25292,$25293,$25294,$25295,$25296,$25297,$25298),(nextval($25299),$25300,$25301,$25302,$25303,$25304,$25305,$25306,$25307,$25308,$25309,$25310,$25311,$25312),(nextval($25313),$25314,$25315,$25316,$25317,$25318,$25319,$25320,$25321,$25322,$25323,$25324,$25325,$25326),(nextval($25327),$25328,$25329,$25330,$25331,$25332,$25333,$25334,$25335,$25336,$25337,$25338,$25339,$25340),(nextval($25341),$25342,$25343,$25344,$25345,$25346,$25347,$25348,$25349,$25350,$25351,$25352,$25353,$25354),(nextval($25355),$25356,$25357,$25358,$25359,$25360,$25361,$25362,$25363,$25364,$25365,$25366,$25367,$25368),(nextval($25369),$25370,$25371,$25372,$25373,$25374,$25375,$25376,$25377,$25378,$25379,$25380,$25381,$25382),(nextval($25383),$25384,$25385,$25386,$25387,$25388,$25389,$25390,$25391,$25392,$25393,$25394,$25395,$25396),(nextval($25397),$25398,$25399,$25400,$25401,$25402,$25403,$25404,$25405,$25406,$25407,$25408,$25409,$25410),(nextval($25411),$25412,$25413,$25414,$25415,$25416,$25417,$25418,$25419,$25420,$25421,$25422,$25423,$25424),(nextval($25425),$25426,$25427,$25428,$25429,$25430,$25431,$25432,$25433,$25434,$25435,$25436,$25437,$25438),(nextval($25439),$25440,$25441,$25442,$25443,$25444,$25445,$25446,$25447,$25448,$25449,$25450,$25451,$25452),(nextval($25453),$25454,$25455,$25456,$25457,$25458,$25459,$25460,$25461,$25462,$25463,$25464,$25465,$25466),(nextval($25467),$25468,$25469,$25470,$25471,$25472,$25473,$25474,$25475,$25476,$25477,$25478,$25479,$25480),(nextval($25481),$25482,$25483,$25484,$25485,$25486,$25487,$25488,$25489,$25490,$25491,$25492,$25493,$25494),(nextval($25495),$25496,$25497,$25498,$25499,$25500,$25501,$25502,$25503,$25504,$25505,$25506,$25507,$25508),(nextval($25509),$25510,$25511,$25512,$25513,$25514,$25515,$25516,$25517,$25518,$25519,$25520,$25521,$25522),(nextval($25523),$25524,$25525,$25526,$25527,$25528,$25529,$25530,$25531,$25532,$25533,$25534,$25535,$25536),(nextval($25537),$25538,$25539,$25540,$25541,$25542,$25543,$25544,$25545,$25546,$25547,$25548,$25549,$25550),(nextval($25551),$25552,$25553,$25554,$25555,$25556,$25557,$25558,$25559,$25560,$25561,$25562,$25563,$25564),(nextval($25565),$25566,$25567,$25568,$25569,$25570,$25571,$25572,$25573,$25574,$25575,$25576,$25577,$25578),(nextval($25579),$25580,$25581,$25582,$25583,$25584,$25585,$25586,$25587,$25588,$25589,$25590,$25591,$25592),(nextval($25593),$25594,$25595,$25596,$25597,$25598,$25599,$25600,$25601,$25602,$25603,$25604,$25605,$25606),(nextval($25607),$25608,$25609,$25610,$25611,$25612,$25613,$25614,$25615,$25616,$25617,$25618,$25619,$25620),(nextval($25621),$25622,$25623,$25624,$25625,$25626,$25627,$25628,$25629,$25630,$25631,$25632,$25633,$25634),(nextval($25635),$25636,$25637,$25638,$25639,$25640,$25641,$25642,$25643,$25644,$25645,$25646,$25647,$25648),(nextval($25649),$25650,$25651,$25652,$25653,$25654,$25655,$25656,$25657,$25658,$25659,$25660,$25661,$25662),(nextval($25663),$25664,$25665,$25666,$25667,$25668,$25669,$25670,$25671,$25672,$25673,$25674,$25675,$25676),(nextval($25677),$25678,$25679,$25680,$25681,$25682,$25683,$25684,$25685,$25686,$25687,$25688,$25689,$25690),(nextval($25691),$25692,$25693,$25694,$25695,$25696,$25697,$25698,$25699,$25700,$25701,$25702,$25703,$25704),(nextval($25705),$25706,$25707,$25708,$25709,$25710,$25711,$25712,$25713,$25714,$25715,$25716,$25717,$25718),(nextval($25719),$25720,$25721,$25722,$25723,$25724,$25725,$25726,$25727,$25728,$25729,$25730,$25731,$25732),(nextval($25733),$25734,$25735,$25736,$25737,$25738,$25739,$25740,$25741,$25742,$25743,$25744,$25745,$25746),(nextval($25747),$25748,$25749,$25750,$25751,$25752,$25753,$25754,$25755,$25756,$25757,$25758,$25759,$25760),(nextval($25761),$25762,$25763,$25764,$25765,$25766,$25767,$25768,$25769,$25770,$25771,$25772,$25773,$25774),(nextval($25775),$25776,$25777,$25778,$25779,$25780,$25781,$25782,$25783,$25784,$25785,$25786,$25787,$25788),(nextval($25789),$25790,$25791,$25792,$25793,$25794,$25795,$25796,$25797,$25798,$25799,$25800,$25801,$25802),(nextval($25803),$25804,$25805,$25806,$25807,$25808,$25809,$25810,$25811,$25812,$25813,$25814,$25815,$25816),(nextval($25817),$25818,$25819,$25820,$25821,$25822,$25823,$25824,$25825,$25826,$25827,$25828,$25829,$25830),(nextval($25831),$25832,$25833,$25834,$25835,$25836,$25837,$25838,$25839,$25840,$25841,$25842,$25843,$25844),(nextval($25845),$25846,$25847,$25848,$25849,$25850,$25851,$25852,$25853,$25854,$25855,$25856,$25857,$25858),(nextval($25859),$25860,$25861,$25862,$25863,$25864,$25865,$25866,$25867,$25868,$25869,$25870,$25871,$25872),(nextval($25873),$25874,$25875,$25876,$25877,$25878,$25879,$25880,$25881,$25882,$25883,$25884,$25885,$25886),(nextval($25887),$25888,$25889,$25890,$25891,$25892,$25893,$25894,$25895,$25896,$25897,$25898,$25899,$25900),(nextval($25901),$25902,$25903,$25904,$25905,$25906,$25907,$25908,$25909,$25910,$25911,$25912,$25913,$25914),(nextval($25915),$25916,$25917,$25918,$25919,$25920,$25921,$25922,$25923,$25924,$25925,$25926,$25927,$25928),(nextval($25929),$25930,$25931,$25932,$25933,$25934,$25935,$25936,$25937,$25938,$25939,$25940,$25941,$25942),(nextval($25943),$25944,$25945,$25946,$25947,$25948,$25949,$25950,$25951,$25952,$25953,$25954,$25955,$25956),(nextval($25957),$25958,$25959,$25960,$25961,$25962,$25963,$25964,$25965,$25966,$25967,$25968,$25969,$25970),(nextval($25971),$25972,$25973,$25974,$25975,$25976,$25977,$25978,$25979,$25980,$25981,$25982,$25983,$25984),(nextval($25985),$25986,$25987,$25988,$25989,$25990,$25991,$25992,$25993,$25994,$25995,$25996,$25997,$25998),(nextval($25999),$26000,$26001,$26002,$26003,$26004,$26005,$26006,$26007,$26008,$26009,$26010,$26011,$26012),(nextval($26013),$26014,$26015,$26016,$26017,$26018,$26019,$26020,$26021,$26022,$26023,$26024,$26025,$26026),(nextval($26027),$26028,$26029,$26030,$26031,$26032,$26033,$26034,$26035,$26036,$26037,$26038,$26039,$26040),(nextval($26041),$26042,$26043,$26044,$26045,$26046,$26047,$26048,$26049,$26050,$26051,$26052,$26053,$26054),(nextval($26055),$26056,$26057,$26058,$26059,$26060,$26061,$26062,$26063,$26064,$26065,$26066,$26067,$26068),(nextval($26069),$26070,$26071,$26072,$26073,$26074,$26075,$26076,$26077,$26078,$26079,$26080,$26081,$26082),(nextval($26083),$26084,$26085,$26086,$26087,$26088,$26089,$26090,$26091,$26092,$26093,$26094,$26095,$26096),(nextval($26097),$26098,$26099,$26100,$26101,$26102,$26103,$26104,$26105,$26106,$26107,$26108,$26109,$26110),(nextval($26111),$26112,$26113,$26114,$26115,$26116,$26117,$26118,$26119,$26120,$26121,$26122,$26123,$26124),(nextval($26125),$26126,$26127,$26128,$26129,$26130,$26131,$26132,$26133,$26134,$26135,$26136,$26137,$26138),(nextval($26139),$26140,$26141,$26142,$26143,$26144,$26145,$26146,$26147,$26148,$26149,$26150,$26151,$26152),(nextval($26153),$26154,$26155,$26156,$26157,$26158,$26159,$26160,$26161,$26162,$26163,$26164,$26165,$26166),(nextval($26167),$26168,$26169,$26170,$26171,$26172,$26173,$26174,$26175,$26176,$26177,$26178,$26179,$26180),(nextval($26181),$26182,$26183,$26184,$26185,$26186,$26187,$26188,$26189,$26190,$26191,$26192,$26193,$26194),(nextval($26195),$26196,$26197,$26198,$26199,$26200,$26201,$26202,$26203,$26204,$26205,$26206,$26207,$26208),(nextval($26209),$26210,$26211,$26212,$26213,$26214,$26215,$26216,$26217,$26218,$26219,$26220,$26221,$26222),(nextval($26223),$26224,$26225,$26226,$26227,$26228,$26229,$26230,$26231,$26232,$26233,$26234,$26235,$26236),(nextval($26237),$26238,$26239,$26240,$26241,$26242,$26243,$26244,$26245,$26246,$26247,$26248,$26249,$26250),(nextval($26251),$26252,$26253,$26254,$26255,$26256,$26257,$26258,$26259,$26260,$26261,$26262,$26263,$26264),(nextval($26265),$26266,$26267,$26268,$26269,$26270,$26271,$26272,$26273,$26274,$26275,$26276,$26277,$26278),(nextval($26279),$26280,$26281,$26282,$26283,$26284,$26285,$26286,$26287,$26288,$26289,$26290,$26291,$26292),(nextval($26293),$26294,$26295,$26296,$26297,$26298,$26299,$26300,$26301,$26302,$26303,$26304,$26305,$26306),(nextval($26307),$26308,$26309,$26310,$26311,$26312,$26313,$26314,$26315,$26316,$26317,$26318,$26319,$26320),(nextval($26321),$26322,$26323,$26324,$26325,$26326,$26327,$26328,$26329,$26330,$26331,$26332,$26333,$26334),(nextval($26335),$26336,$26337,$26338,$26339,$26340,$26341,$26342,$26343,$26344,$26345,$26346,$26347,$26348),(nextval($26349),$26350,$26351,$26352,$26353,$26354,$26355,$26356,$26357,$26358,$26359,$26360,$26361,$26362),(nextval($26363),$26364,$26365,$26366,$26367,$26368,$26369,$26370,$26371,$26372,$26373,$26374,$26375,$26376),(nextval($26377),$26378,$26379,$26380,$26381,$26382,$26383,$26384,$26385,$26386,$26387,$26388,$26389,$26390),(nextval($26391),$26392,$26393,$26394,$26395,$26396,$26397,$26398,$26399,$26400,$26401,$26402,$26403,$26404),(nextval($26405),$26406,$26407,$26408,$26409,$26410,$26411,$26412,$26413,$26414,$26415,$26416,$26417,$26418),(nextval($26419),$26420,$26421,$26422,$26423,$26424,$26425,$26426,$26427,$26428,$26429,$26430,$26431,$26432),(nextval($26433),$26434,$26435,$26436,$26437,$26438,$26439,$26440,$26441,$26442,$26443,$26444,$26445,$26446),(nextval($26447),$26448,$26449,$26450,$26451,$26452,$26453,$26454,$26455,$26456,$26457,$26458,$26459,$26460),(nextval($26461),$26462,$26463,$26464,$26465,$26466,$26467,$26468,$26469,$26470,$26471,$26472,$26473,$26474),(nextval($26475),$26476,$26477,$26478,$26479,$26480,$26481,$26482,$26483,$26484,$26485,$26486,$26487,$26488),(nextval($26489),$26490,$26491,$26492,$26493,$26494,$26495,$26496,$26497,$26498,$26499,$26500,$26501,$26502),(nextval($26503),$26504,$26505,$26506,$26507,$26508,$26509,$26510,$26511,$26512,$26513,$26514,$26515,$26516),(nextval($26517),$26518,$26519,$26520,$26521,$26522,$26523,$26524,$26525,$26526,$26527,$26528,$26529,$26530),(nextval($26531),$26532,$26533,$26534,$26535,$26536,$26537,$26538,$26539,$26540,$26541,$26542,$26543,$26544),(nextval($26545),$26546,$26547,$26548,$26549,$26550,$26551,$26552,$26553,$26554,$26555,$26556,$26557,$26558),(nextval($26559),$26560,$26561,$26562,$26563,$26564,$26565,$26566,$26567,$26568,$26569,$26570,$26571,$26572),(nextval($26573),$26574,$26575,$26576,$26577,$26578,$26579,$26580,$26581,$26582,$26583,$26584,$26585,$26586),(nextval($26587),$26588,$26589,$26590,$26591,$26592,$26593,$26594,$26595,$26596,$26597,$26598,$26599,$26600),(nextval($26601),$26602,$26603,$26604,$26605,$26606,$26607,$26608,$26609,$26610,$26611,$26612,$26613,$26614),(nextval($26615),$26616,$26617,$26618,$26619,$26620,$26621,$26622,$26623,$26624,$26625,$26626,$26627,$26628),(nextval($26629),$26630,$26631,$26632,$26633,$26634,$26635,$26636,$26637,$26638,$26639,$26640,$26641,$26642),(nextval($26643),$26644,$26645,$26646,$26647,$26648,$26649,$26650,$26651,$26652,$26653,$26654,$26655,$26656),(nextval($26657),$26658,$26659,$26660,$26661,$26662,$26663,$26664,$26665,$26666,$26667,$26668,$26669,$26670),(nextval($26671),$26672,$26673,$26674,$26675,$26676,$26677,$26678,$26679,$26680,$26681,$26682,$26683,$26684),(nextval($26685),$26686,$26687,$26688,$26689,$26690,$26691,$26692,$26693,$26694,$26695,$26696,$26697,$26698),(nextval($26699),$26700,$26701,$26702,$26703,$26704,$26705,$26706,$26707,$26708,$26709,$26710,$26711,$26712),(nextval($26713),$26714,$26715,$26716,$26717,$26718,$26719,$26720,$26721,$26722,$26723,$26724,$26725,$26726),(nextval($26727),$26728,$26729,$26730,$26731,$26732,$26733,$26734,$26735,$26736,$26737,$26738,$26739,$26740),(nextval($26741),$26742,$26743,$26744,$26745,$26746,$26747,$26748,$26749,$26750,$26751,$26752,$26753,$26754),(nextval($26755),$26756,$26757,$26758,$26759,$26760,$26761,$26762,$26763,$26764,$26765,$26766,$26767,$26768),(nextval($26769),$26770,$26771,$26772,$26773,$26774,$26775,$26776,$26777,$26778,$26779,$26780,$26781,$26782),(nextval($26783),$26784,$26785,$26786,$26787,$26788,$26789,$26790,$26791,$26792,$26793,$26794,$26795,$26796),(nextval($26797),$26798,$26799,$26800,$26801,$26802,$26803,$26804,$26805,$26806,$26807,$26808,$26809,$26810),(nextval($26811),$26812,$26813,$26814,$26815,$26816,$26817,$26818,$26819,$26820,$26821,$26822,$26823,$26824),(nextval($26825),$26826,$26827,$26828,$26829,$26830,$26831,$26832,$26833,$26834,$26835,$26836,$26837,$26838),(nextval($26839),$26840,$26841,$26842,$26843,$26844,$26845,$26846,$26847,$26848,$26849,$26850,$26851,$26852),(nextval($26853),$26854,$26855,$26856,$26857,$26858,$26859,$26860,$26861,$26862,$26863,$26864,$26865,$26866),(nextval($26867),$26868,$26869,$26870,$26871,$26872,$26873,$26874,$26875,$26876,$26877,$26878,$26879,$26880),(nextval($26881),$26882,$26883,$26884,$26885,$26886,$26887,$26888,$26889,$26890,$26891,$26892,$26893,$26894),(nextval($26895),$26896,$26897,$26898,$26899,$26900,$26901,$26902,$26903,$26904,$26905,$26906,$26907,$26908),(nextval($26909),$26910,$26911,$26912,$26913,$26914,$26915,$26916,$26917,$26918,$26919,$26920,$26921,$26922),(nextval($26923),$26924,$26925,$26926,$26927,$26928,$26929,$26930,$26931,$26932,$26933,$26934,$26935,$26936),(nextval($26937),$26938,$26939,$26940,$26941,$26942,$26943,$26944,$26945,$26946,$26947,$26948,$26949,$26950),(nextval($26951),$26952,$26953,$26954,$26955,$26956,$26957,$26958,$26959,$26960,$26961,$26962,$26963,$26964),(nextval($26965),$26966,$26967,$26968,$26969,$26970,$26971,$26972,$26973,$26974,$26975,$26976,$26977,$26978),(nextval($26979),$26980,$26981,$26982,$26983,$26984,$26985,$26986,$26987,$26988,$26989,$26990,$26991,$26992),(nextval($26993),$26994,$26995,$26996,$26997,$26998,$26999,$27000,$27001,$27002,$27003,$27004,$27005,$27006),(nextval($27007),$27008,$27009,$27010,$27011,$27012,$27013,$27014,$27015,$27016,$27017,$27018,$27019,$27020),(nextval($27021),$27022,$27023,$27024,$27025,$27026,$27027,$27028,$27029,$27030,$27031,$27032,$27033,$27034),(nextval($27035),$27036,$27037,$27038,$27039,$27040,$27041,$27042,$27043,$27044,$27045,$27046,$27047,$27048),(nextval($27049),$27050,$27051,$27052,$27053,$27054,$27055,$27056,$27057,$27058,$27059,$27060,$27061,$27062),(nextval($27063),$27064,$27065,$27066,$27067,$27068,$27069,$27070,$27071,$27072,$27073,$27074,$27075,$27076),(nextval($27077),$27078,$27079,$27080,$27081,$27082,$27083,$27084,$27085,$27086,$27087,$27088,$27089,$27090),(nextval($27091),$27092,$27093,$27094,$27095,$27096,$27097,$27098,$27099,$27100,$27101,$27102,$27103,$27104),(nextval($27105),$27106,$27107,$27108,$27109,$27110,$27111,$27112,$27113,$27114,$27115,$27116,$27117,$27118),(nextval($27119),$27120,$27121,$27122,$27123,$27124,$27125,$27126,$27127,$27128,$27129,$27130,$27131,$27132),(nextval($27133),$27134,$27135,$27136,$27137,$27138,$27139,$27140,$27141,$27142,$27143,$27144,$27145,$27146),(nextval($27147),$27148,$27149,$27150,$27151,$27152,$27153,$27154,$27155,$27156,$27157,$27158,$27159,$27160),(nextval($27161),$27162,$27163,$27164,$27165,$27166,$27167,$27168,$27169,$27170,$27171,$27172,$27173,$27174),(nextval($27175),$27176,$27177,$27178,$27179,$27180,$27181,$27182,$27183,$27184,$27185,$27186,$27187,$27188),(nextval($27189),$27190,$27191,$27192,$27193,$27194,$27195,$27196,$27197,$27198,$27199,$27200,$27201,$27202),(nextval($27203),$27204,$27205,$27206,$27207,$27208,$27209,$27210,$27211,$27212,$27213,$27214,$27215,$27216),(nextval($27217),$27218,$27219,$27220,$27221,$27222,$27223,$27224,$27225,$27226,$27227,$27228,$27229,$27230),(nextval($27231),$27232,$27233,$27234,$27235,$27236,$27237,$27238,$27239,$27240,$27241,$27242,$27243,$27244),(nextval($27245),$27246,$27247,$27248,$27249,$27250,$27251,$27252,$27253,$27254,$27255,$27256,$27257,$27258),(nextval($27259),$27260,$27261,$27262,$27263,$27264,$27265,$27266,$27267,$27268,$27269,$27270,$27271,$27272),(nextval($27273),$27274,$27275,$27276,$27277,$27278,$27279,$27280,$27281,$27282,$27283,$27284,$27285,$27286),(nextval($27287),$27288,$27289,$27290,$27291,$27292,$27293,$27294,$27295,$27296,$27297,$27298,$27299,$27300),(nextval($27301),$27302,$27303,$27304,$27305,$27306,$27307,$27308,$27309,$27310,$27311,$27312,$27313,$27314),(nextval($27315),$27316,$27317,$27318,$27319,$27320,$27321,$27322,$27323,$27324,$27325,$27326,$27327,$27328),(nextval($27329),$27330,$27331,$27332,$27333,$27334,$27335,$27336,$27337,$27338,$27339,$27340,$27341,$27342),(nextval($27343),$27344,$27345,$27346,$27347,$27348,$27349,$27350,$27351,$27352,$27353,$27354,$27355,$27356),(nextval($27357),$27358,$27359,$27360,$27361,$27362,$27363,$27364,$27365,$27366,$27367,$27368,$27369,$27370),(nextval($27371),$27372,$27373,$27374,$27375,$27376,$27377,$27378,$27379,$27380,$27381,$27382,$27383,$27384),(nextval($27385),$27386,$27387,$27388,$27389,$27390,$27391,$27392,$27393,$27394,$27395,$27396,$27397,$27398),(nextval($27399),$27400,$27401,$27402,$27403,$27404,$27405,$27406,$27407,$27408,$27409,$27410,$27411,$27412),(nextval($27413),$27414,$27415,$27416,$27417,$27418,$27419,$27420,$27421,$27422,$27423,$27424,$27425,$27426),(nextval($27427),$27428,$27429,$27430,$27431,$27432,$27433,$27434,$27435,$27436,$27437,$27438,$27439,$27440),(nextval($27441),$27442,$27443,$27444,$27445,$27446,$27447,$27448,$27449,$27450,$27451,$27452,$27453,$27454),(nextval($27455),$27456,$27457,$27458,$27459,$27460,$27461,$27462,$27463,$27464,$27465,$27466,$27467,$27468),(nextval($27469),$27470,$27471,$27472,$27473,$27474,$27475,$27476,$27477,$27478,$27479,$27480,$27481,$27482),(nextval($27483),$27484,$27485,$27486,$27487,$27488,$27489,$27490,$27491,$27492,$27493,$27494,$27495,$27496),(nextval($27497),$27498,$27499,$27500,$27501,$27502,$27503,$27504,$27505,$27506,$27507,$27508,$27509,$27510),(nextval($27511),$27512,$27513,$27514,$27515,$27516,$27517,$27518,$27519,$27520,$27521,$27522,$27523,$27524),(nextval($27525),$27526,$27527,$27528,$27529,$27530,$27531,$27532,$27533,$27534,$27535,$27536,$27537,$27538),(nextval($27539),$27540,$27541,$27542,$27543,$27544,$27545,$27546,$27547,$27548,$27549,$27550,$27551,$27552),(nextval($27553),$27554,$27555,$27556,$27557,$27558,$27559,$27560,$27561,$27562,$27563,$27564,$27565,$27566),(nextval($27567),$27568,$27569,$27570,$27571,$27572,$27573,$27574,$27575,$27576,$27577,$27578,$27579,$27580),(nextval($27581),$27582,$27583,$27584,$27585,$27586,$27587,$27588,$27589,$27590,$27591,$27592,$27593,$27594),(nextval($27595),$27596,$27597,$27598,$27599,$27600,$27601,$27602,$27603,$27604,$27605,$27606,$27607,$27608),(nextval($27609),$27610,$27611,$27612,$27613,$27614,$27615,$27616,$27617,$27618,$27619,$27620,$27621,$27622),(nextval($27623),$27624,$27625,$27626,$27627,$27628,$27629,$27630,$27631,$27632,$27633,$27634,$27635,$27636),(nextval($27637),$27638,$27639,$27640,$27641,$27642,$27643,$27644,$27645,$27646,$27647,$27648,$27649,$27650),(nextval($27651),$27652,$27653,$27654,$27655,$27656,$27657,$27658,$27659,$27660,$27661,$27662,$27663,$27664),(nextval($27665),$27666,$27667,$27668,$27669,$27670,$27671,$27672,$27673,$27674,$27675,$27676,$27677,$27678),(nextval($27679),$27680,$27681,$27682,$27683,$27684,$27685,$27686,$27687,$27688,$27689,$27690,$27691,$27692),(nextval($27693),$27694,$27695,$27696,$27697,$27698,$27699,$27700,$27701,$27702,$27703,$27704,$27705,$27706),(nextval($27707),$27708,$27709,$27710,$27711,$27712,$27713,$27714,$27715,$27716,$27717,$27718,$27719,$27720),(nextval($27721),$27722,$27723,$27724,$27725,$27726,$27727,$27728,$27729,$27730,$27731,$27732,$27733,$27734),(nextval($27735),$27736,$27737,$27738,$27739,$27740,$27741,$27742,$27743,$27744,$27745,$27746,$27747,$27748),(nextval($27749),$27750,$27751,$27752,$27753,$27754,$27755,$27756,$27757,$27758,$27759,$27760,$27761,$27762),(nextval($27763),$27764,$27765,$27766,$27767,$27768,$27769,$27770,$27771,$27772,$27773,$27774,$27775,$27776),(nextval($27777),$27778,$27779,$27780,$27781,$27782,$27783,$27784,$27785,$27786,$27787,$27788,$27789,$27790),(nextval($27791),$27792,$27793,$27794,$27795,$27796,$27797,$27798,$27799,$27800,$27801,$27802,$27803,$27804),(nextval($27805),$27806,$27807,$27808,$27809,$27810,$27811,$27812,$27813,$27814,$27815,$27816,$27817,$27818),(nextval($27819),$27820,$27821,$27822,$27823,$27824,$27825,$27826,$27827,$27828,$27829,$27830,$27831,$27832),(nextval($27833),$27834,$27835,$27836,$27837,$27838,$27839,$27840,$27841,$27842,$27843,$27844,$27845,$27846),(nextval($27847),$27848,$27849,$27850,$27851,$27852,$27853,$27854,$27855,$27856,$27857,$27858,$27859,$27860),(nextval($27861),$27862,$27863,$27864,$27865,$27866,$27867,$27868,$27869,$27870,$27871,$27872,$27873,$27874),(nextval($27875),$27876,$27877,$27878,$27879,$27880,$27881,$27882,$27883,$27884,$27885,$27886,$27887,$27888),(nextval($27889),$27890,$27891,$27892,$27893,$27894,$27895,$27896,$27897,$27898,$27899,$27900,$27901,$27902),(nextval($27903),$27904,$27905,$27906,$27907,$27908,$27909,$27910,$27911,$27912,$27913,$27914,$27915,$27916),(nextval($27917),$27918,$27919,$27920,$27921,$27922,$27923,$27924,$27925,$27926,$27927,$27928,$27929,$27930),(nextval($27931),$27932,$27933,$27934,$27935,$27936,$27937,$27938,$27939,$27940,$27941,$27942,$27943,$27944),(nextval($27945),$27946,$27947,$27948,$27949,$27950,$27951,$27952,$27953,$27954,$27955,$27956,$27957,$27958),(nextval($27959),$27960,$27961,$27962,$27963,$27964,$27965,$27966,$27967,$27968,$27969,$27970,$27971,$27972),(nextval($27973),$27974,$27975,$27976,$27977,$27978,$27979,$27980,$27981,$27982,$27983,$27984,$27985,$27986),(nextval($27987),$27988,$27989,$27990,$27991,$27992,$27993,$27994,$27995,$27996,$27997,$27998,$27999,$28000),(nextval($28001),$28002,$28003,$28004,$28005,$28006,$28007,$28008,$28009,$28010,$28011,$28012,$28013,$28014),(nextval($28015),$28016,$28017,$28018,$28019,$28020,$28021,$28022,$28023,$28024,$28025,$28026,$28027,$28028),(nextval($28029),$28030,$28031,$28032,$28033,$28034,$28035,$28036,$28037,$28038,$28039,$28040,$28041,$28042),(nextval($28043),$28044,$28045,$28046,$28047,$28048,$28049,$28050,$28051,$28052,$28053,$28054,$28055,$28056),(nextval($28057),$28058,$28059,$28060,$28061,$28062,$28063,$28064,$28065,$28066,$28067,$28068,$28069,$28070),(nextval($28071),$28072,$28073,$28074,$28075,$28076,$28077,$28078,$28079,$28080,$28081,$28082,$28083,$28084),(nextval($28085),$28086,$28087,$28088,$28089,$28090,$28091,$28092,$28093,$28094,$28095,$28096,$28097,$28098),(nextval($28099),$28100,$28101,$28102,$28103,$28104,$28105,$28106,$28107,$28108,$28109,$28110,$28111,$28112),(nextval($28113),$28114,$28115,$28116,$28117,$28118,$28119,$28120,$28121,$28122,$28123,$28124,$28125,$28126),(nextval($28127),$28128,$28129,$28130,$28131,$28132,$28133,$28134,$28135,$28136,$28137,$28138,$28139,$28140),(nextval($28141),$28142,$28143,$28144,$28145,$28146,$28147,$28148,$28149,$28150,$28151,$28152,$28153,$28154),(nextval($28155),$28156,$28157,$28158,$28159,$28160,$28161,$28162,$28163,$28164,$28165,$28166,$28167,$28168),(nextval($28169),$28170,$28171,$28172,$28173,$28174,$28175,$28176,$28177,$28178,$28179,$28180,$28181,$28182),(nextval($28183),$28184,$28185,$28186,$28187,$28188,$28189,$28190,$28191,$28192,$28193,$28194,$28195,$28196),(nextval($28197),$28198,$28199,$28200,$28201,$28202,$28203,$28204,$28205,$28206,$28207,$28208,$28209,$28210),(nextval($28211),$28212,$28213,$28214,$28215,$28216,$28217,$28218,$28219,$28220,$28221,$28222,$28223,$28224),(nextval($28225),$28226,$28227,$28228,$28229,$28230,$28231,$28232,$28233,$28234,$28235,$28236,$28237,$28238),(nextval($28239),$28240,$28241,$28242,$28243,$28244,$28245,$28246,$28247,$28248,$28249,$28250,$28251,$28252),(nextval($28253),$28254,$28255,$28256,$28257,$28258,$28259,$28260,$28261,$28262,$28263,$28264,$28265,$28266),(nextval($28267),$28268,$28269,$28270,$28271,$28272,$28273,$28274,$28275,$28276,$28277,$28278,$28279,$28280),(nextval($28281),$28282,$28283,$28284,$28285,$28286,$28287,$28288,$28289,$28290,$28291,$28292,$28293,$28294),(nextval($28295),$28296,$28297,$28298,$28299,$28300,$28301,$28302,$28303,$28304,$28305,$28306,$28307,$28308),(nextval($28309),$28310,$28311,$28312,$28313,$28314,$28315,$28316,$28317,$28318,$28319,$28320,$28321,$28322),(nextval($28323),$28324,$28325,$28326,$28327,$28328,$28329,$28330,$28331,$28332,$28333,$28334,$28335,$28336),(nextval($28337),$28338,$28339,$28340,$28341,$28342,$28343,$28344,$28345,$28346,$28347,$28348,$28349,$28350),(nextval($28351),$28352,$28353,$28354,$28355,$28356,$28357,$28358,$28359,$28360,$28361,$28362,$28363,$28364),(nextval($28365),$28366,$28367,$28368,$28369,$28370,$28371,$28372,$28373,$28374,$28375,$28376,$28377,$28378),(nextval($28379),$28380,$28381,$28382,$28383,$28384,$28385,$28386,$28387,$28388,$28389,$28390,$28391,$28392),(nextval($28393),$28394,$28395,$28396,$28397,$28398,$28399,$28400,$28401,$28402,$28403,$28404,$28405,$28406),(nextval($28407),$28408,$28409,$28410,$28411,$28412,$28413,$28414,$28415,$28416,$28417,$28418,$28419,$28420),(nextval($28421),$28422,$28423,$28424,$28425,$28426,$28427,$28428,$28429,$28430,$28431,$28432,$28433,$28434),(nextval($28435),$28436,$28437,$28438,$28439,$28440,$28441,$28442,$28443,$28444,$28445,$28446,$28447,$28448),(nextval($28449),$28450,$28451,$28452,$28453,$28454,$28455,$28456,$28457,$28458,$28459,$28460,$28461,$28462),(nextval($28463),$28464,$28465,$28466,$28467,$28468,$28469,$28470,$28471,$28472,$28473,$28474,$28475,$28476),(nextval($28477),$28478,$28479,$28480,$28481,$28482,$28483,$28484,$28485,$28486,$28487,$28488,$28489,$28490),(nextval($28491),$28492,$28493,$28494,$28495,$28496,$28497,$28498,$28499,$28500,$28501,$28502,$28503,$28504),(nextval($28505),$28506,$28507,$28508,$28509,$28510,$28511,$28512,$28513,$28514,$28515,$28516,$28517,$28518),(nextval($28519),$28520,$28521,$28522,$28523,$28524,$28525,$28526,$28527,$28528,$28529,$28530,$28531,$28532),(nextval($28533),$28534,$28535,$28536,$28537,$28538,$28539,$28540,$28541,$28542,$28543,$28544,$28545,$28546),(nextval($28547),$28548,$28549,$28550,$28551,$28552,$28553,$28554,$28555,$28556,$28557,$28558,$28559,$28560),(nextval($28561),$28562,$28563,$28564,$28565,$28566,$28567,$28568,$28569,$28570,$28571,$28572,$28573,$28574),(nextval($28575),$28576,$28577,$28578,$28579,$28580,$28581,$28582,$28583,$28584,$28585,$28586,$28587,$28588),(nextval($28589),$28590,$28591,$28592,$28593,$28594,$28595,$28596,$28597,$28598,$28599,$28600,$28601,$28602),(nextval($28603),$28604,$28605,$28606,$28607,$28608,$28609,$28610,$28611,$28612,$28613,$28614,$28615,$28616),(nextval($28617),$28618,$28619,$28620,$28621,$28622,$28623,$28624,$28625,$28626,$28627,$28628,$28629,$28630),(nextval($28631),$28632,$28633,$28634,$28635,$28636,$28637,$28638,$28639,$28640,$28641,$28642,$28643,$28644),(nextval($28645),$28646,$28647,$28648,$28649,$28650,$28651,$28652,$28653,$28654,$28655,$28656,$28657,$28658),(nextval($28659),$28660,$28661,$28662,$28663,$28664,$28665,$28666,$28667,$28668,$28669,$28670,$28671,$28672),(nextval($28673),$28674,$28675,$28676,$28677,$28678,$28679,$28680,$28681,$28682,$28683,$28684,$28685,$28686),(nextval($28687),$28688,$28689,$28690,$28691,$28692,$28693,$28694,$28695,$28696,$28697,$28698,$28699,$28700),(nextval($28701),$28702,$28703,$28704,$28705,$28706,$28707,$28708,$28709,$28710,$28711,$28712,$28713,$28714),(nextval($28715),$28716,$28717,$28718,$28719,$28720,$28721,$28722,$28723,$28724,$28725,$28726,$28727,$28728),(nextval($28729),$28730,$28731,$28732,$28733,$28734,$28735,$28736,$28737,$28738,$28739,$28740,$28741,$28742),(nextval($28743),$28744,$28745,$28746,$28747,$28748,$28749,$28750,$28751,$28752,$28753,$28754,$28755,$28756),(nextval($28757),$28758,$28759,$28760,$28761,$28762,$28763,$28764,$28765,$28766,$28767,$28768,$28769,$28770),(nextval($28771),$28772,$28773,$28774,$28775,$28776,$28777,$28778,$28779,$28780,$28781,$28782,$28783,$28784),(nextval($28785),$28786,$28787,$28788,$28789,$28790,$28791,$28792,$28793,$28794,$28795,$28796,$28797,$28798),(nextval($28799),$28800,$28801,$28802,$28803,$28804,$28805,$28806,$28807,$28808,$28809,$28810,$28811,$28812),(nextval($28813),$28814,$28815,$28816,$28817,$28818,$28819,$28820,$28821,$28822,$28823,$28824,$28825,$28826),(nextval($28827),$28828,$28829,$28830,$28831,$28832,$28833,$28834,$28835,$28836,$28837,$28838,$28839,$28840),(nextval($28841),$28842,$28843,$28844,$28845,$28846,$28847,$28848,$28849,$28850,$28851,$28852,$28853,$28854),(nextval($28855),$28856,$28857,$28858,$28859,$28860,$28861,$28862,$28863,$28864,$28865,$28866,$28867,$28868),(nextval($28869),$28870,$28871,$28872,$28873,$28874,$28875,$28876,$28877,$28878,$28879,$28880,$28881,$28882),(nextval($28883),$28884,$28885,$28886,$28887,$28888,$28889,$28890,$28891,$28892,$28893,$28894,$28895,$28896),(nextval($28897),$28898,$28899,$28900,$28901,$28902,$28903,$28904,$28905,$28906,$28907,$28908,$28909,$28910),(nextval($28911),$28912,$28913,$28914,$28915,$28916,$28917,$28918,$28919,$28920,$28921,$28922,$28923,$28924),(nextval($28925),$28926,$28927,$28928,$28929,$28930,$28931,$28932,$28933,$28934,$28935,$28936,$28937,$28938),(nextval($28939),$28940,$28941,$28942,$28943,$28944,$28945,$28946,$28947,$28948,$28949,$28950,$28951,$28952),(nextval($28953),$28954,$28955,$28956,$28957,$28958,$28959,$28960,$28961,$28962,$28963,$28964,$28965,$28966),(nextval($28967),$28968,$28969,$28970,$28971,$28972,$28973,$28974,$28975,$28976,$28977,$28978,$28979,$28980),(nextval($28981),$28982,$28983,$28984,$28985,$28986,$28987,$28988,$28989,$28990,$28991,$28992,$28993,$28994),(nextval($28995),$28996,$28997,$28998,$28999,$29000,$29001,$29002,$29003,$29004,$29005,$29006,$29007,$29008),(nextval($29009),$29010,$29011,$29012,$29013,$29014,$29015,$29016,$29017,$29018,$29019,$29020,$29021,$29022),(nextval($29023),$29024,$29025,$29026,$29027,$29028,$29029,$29030,$29031,$29032,$29033,$29034,$29035,$29036),(nextval($29037),$29038,$29039,$29040,$29041,$29042,$29043,$29044,$29045,$29046,$29047,$29048,$29049,$29050),(nextval($29051),$29052,$29053,$29054,$29055,$29056,$29057,$29058,$29059,$29060,$29061,$29062,$29063,$29064),(nextval($29065),$29066,$29067,$29068,$29069,$29070,$29071,$29072,$29073,$29074,$29075,$29076,$29077,$29078),(nextval($29079),$29080,$29081,$29082,$29083,$29084,$29085,$29086,$29087,$29088,$29089,$29090,$29091,$29092),(nextval($29093),$29094,$29095,$29096,$29097,$29098,$29099,$29100,$29101,$29102,$29103,$29104,$29105,$29106),(nextval($29107),$29108,$29109,$29110,$29111,$29112,$29113,$29114,$29115,$29116,$29117,$29118,$29119,$29120),(nextval($29121),$29122,$29123,$29124,$29125,$29126,$29127,$29128,$29129,$29130,$29131,$29132,$29133,$29134),(nextval($29135),$29136,$29137,$29138,$29139,$29140,$29141,$29142,$29143,$29144,$29145,$29146,$29147,$29148),(nextval($29149),$29150,$29151,$29152,$29153,$29154,$29155,$29156,$29157,$29158,$29159,$29160,$29161,$29162),(nextval($29163),$29164,$29165,$29166,$29167,$29168,$29169,$29170,$29171,$29172,$29173,$29174,$29175,$29176),(nextval($29177),$29178,$29179,$29180,$29181,$29182,$29183,$29184,$29185,$29186,$29187,$29188,$29189,$29190),(nextval($29191),$29192,$29193,$29194,$29195,$29196,$29197,$29198,$29199,$29200,$29201,$29202,$29203,$29204),(nextval($29205),$29206,$29207,$29208,$29209,$29210,$29211,$29212,$29213,$29214,$29215,$29216,$29217,$29218),(nextval($29219),$29220,$29221,$29222,$29223,$29224,$29225,$29226,$29227,$29228,$29229,$29230,$29231,$29232),(nextval($29233),$29234,$29235,$29236,$29237,$29238,$29239,$29240,$29241,$29242,$29243,$29244,$29245,$29246),(nextval($29247),$29248,$29249,$29250,$29251,$29252,$29253,$29254,$29255,$29256,$29257,$29258,$29259,$29260),(nextval($29261),$29262,$29263,$29264,$29265,$29266,$29267,$29268,$29269,$29270,$29271,$29272,$29273,$29274),(nextval($29275),$29276,$29277,$29278,$29279,$29280,$29281,$29282,$29283,$29284,$29285,$29286,$29287,$29288),(nextval($29289),$29290,$29291,$29292,$29293,$29294,$29295,$29296,$29297,$29298,$29299,$29300,$29301,$29302),(nextval($29303),$29304,$29305,$29306,$29307,$29308,$29309,$29310,$29311,$29312,$29313,$29314,$29315,$29316),(nextval($29317),$29318,$29319,$29320,$29321,$29322,$29323,$29324,$29325,$29326,$29327,$29328,$29329,$29330),(nextval($29331),$29332,$29333,$29334,$29335,$29336,$29337,$29338,$29339,$29340,$29341,$29342,$29343,$29344),(nextval($29345),$29346,$29347,$29348,$29349,$29350,$29351,$29352,$29353,$29354,$29355,$29356,$29357,$29358),(nextval($29359),$29360,$29361,$29362,$29363,$29364,$29365,$29366,$29367,$29368,$29369,$29370,$29371,$29372),(nextval($29373),$29374,$29375,$29376,$29377,$29378,$29379,$29380,$29381,$29382,$29383,$29384,$29385,$29386),(nextval($29387),$29388,$29389,$29390,$29391,$29392,$29393,$29394,$29395,$29396,$29397,$29398,$29399,$29400),(nextval($29401),$29402,$29403,$29404,$29405,$29406,$29407,$29408,$29409,$29410,$29411,$29412,$29413,$29414),(nextval($29415),$29416,$29417,$29418,$29419,$29420,$29421,$29422,$29423,$29424,$29425,$29426,$29427,$29428),(nextval($29429),$29430,$29431,$29432,$29433,$29434,$29435,$29436,$29437,$29438,$29439,$29440,$29441,$29442),(nextval($29443),$29444,$29445,$29446,$29447,$29448,$29449,$29450,$29451,$29452,$29453,$29454,$29455,$29456),(nextval($29457),$29458,$29459,$29460,$29461,$29462,$29463,$29464,$29465,$29466,$29467,$29468,$29469,$29470),(nextval($29471),$29472,$29473,$29474,$29475,$29476,$29477,$29478,$29479,$29480,$29481,$29482,$29483,$29484),(nextval($29485),$29486,$29487,$29488,$29489,$29490,$29491,$29492,$29493,$29494,$29495,$29496,$29497,$29498),(nextval($29499),$29500,$29501,$29502,$29503,$29504,$29505,$29506,$29507,$29508,$29509,$29510,$29511,$29512),(nextval($29513),$29514,$29515,$29516,$29517,$29518,$29519,$29520,$29521,$29522,$29523,$29524,$29525,$29526),(nextval($29527),$29528,$29529,$29530,$29531,$29532,$29533,$29534,$29535,$29536,$29537,$29538,$29539,$29540),(nextval($29541),$29542,$29543,$29544,$29545,$29546,$29547,$29548,$29549,$29550,$29551,$29552,$29553,$29554),(nextval($29555),$29556,$29557,$29558,$29559,$29560,$29561,$29562,$29563,$29564,$29565,$29566,$29567,$29568),(nextval($29569),$29570,$29571,$29572,$29573,$29574,$29575,$29576,$29577,$29578,$29579,$29580,$29581,$29582),(nextval($29583),$29584,$29585,$29586,$29587,$29588,$29589,$29590,$29591,$29592,$29593,$29594,$29595,$29596),(nextval($29597),$29598,$29599,$29600,$29601,$29602,$29603,$29604,$29605,$29606,$29607,$29608,$29609,$29610),(nextval($29611),$29612,$29613,$29614,$29615,$29616,$29617,$29618,$29619,$29620,$29621,$29622,$29623,$29624),(nextval($29625),$29626,$29627,$29628,$29629,$29630,$29631,$29632,$29633,$29634,$29635,$29636,$29637,$29638),(nextval($29639),$29640,$29641,$29642,$29643,$29644,$29645,$29646,$29647,$29648,$29649,$29650,$29651,$29652),(nextval($29653),$29654,$29655,$29656,$29657,$29658,$29659,$29660,$29661,$29662,$29663,$29664,$29665,$29666),(nextval($29667),$29668,$29669,$29670,$29671,$29672,$29673,$29674,$29675,$29676,$29677,$29678,$29679,$29680),(nextval($29681),$29682,$29683,$29684,$29685,$29686,$29687,$29688,$29689,$29690,$29691,$29692,$29693,$29694),(nextval($29695),$29696,$29697,$29698,$29699,$29700,$29701,$29702,$29703,$29704,$29705,$29706,$29707,$29708),(nextval($29709),$29710,$29711,$29712,$29713,$29714,$29715,$29716,$29717,$29718,$29719,$29720,$29721,$29722),(nextval($29723),$29724,$29725,$29726,$29727,$29728,$29729,$29730,$29731,$29732,$29733,$29734,$29735,$29736),(nextval($29737),$29738,$29739,$29740,$29741,$29742,$29743,$29744,$29745,$29746,$29747,$29748,$29749,$29750),(nextval($29751),$29752,$29753,$29754,$29755,$29756,$29757,$29758,$29759,$29760,$29761,$29762,$29763,$29764),(nextval($29765),$29766,$29767,$29768,$29769,$29770,$29771,$29772,$29773,$29774,$29775,$29776,$29777,$29778),(nextval($29779),$29780,$29781,$29782,$29783,$29784,$29785,$29786,$29787,$29788,$29789,$29790,$29791,$29792),(nextval($29793),$29794,$29795,$29796,$29797,$29798,$29799,$29800,$29801,$29802,$29803,$29804,$29805,$29806),(nextval($29807),$29808,$29809,$29810,$29811,$29812,$29813,$29814,$29815,$29816,$29817,$29818,$29819,$29820),(nextval($29821),$29822,$29823,$29824,$29825,$29826,$29827,$29828,$29829,$29830,$29831,$29832,$29833,$29834),(nextval($29835),$29836,$29837,$29838,$29839,$29840,$29841,$29842,$29843,$29844,$29845,$29846,$29847,$29848),(nextval($29849),$29850,$29851,$29852,$29853,$29854,$29855,$29856,$29857,$29858,$29859,$29860,$29861,$29862),(nextval($29863),$29864,$29865,$29866,$29867,$29868,$29869,$29870,$29871,$29872,$29873,$29874,$29875,$29876),(nextval($29877),$29878,$29879,$29880,$29881,$29882,$29883,$29884,$29885,$29886,$29887,$29888,$29889,$29890),(nextval($29891),$29892,$29893,$29894,$29895,$29896,$29897,$29898,$29899,$29900,$29901,$29902,$29903,$29904),(nextval($29905),$29906,$29907,$29908,$29909,$29910,$29911,$29912,$29913,$29914,$29915,$29916,$29917,$29918),(nextval($29919),$29920,$29921,$29922,$29923,$29924,$29925,$29926,$29927,$29928,$29929,$29930,$29931,$29932),(nextval($29933),$29934,$29935,$29936,$29937,$29938,$29939,$29940,$29941,$29942,$29943,$29944,$29945,$29946),(nextval($29947),$29948,$29949,$29950,$29951,$29952,$29953,$29954,$29955,$29956,$29957,$29958,$29959,$29960),(nextval($29961),$29962,$29963,$29964,$29965,$29966,$29967,$29968,$29969,$29970,$29971,$29972,$29973,$29974),(nextval($29975),$29976,$29977,$29978,$29979,$29980,$29981,$29982,$29983,$29984,$29985,$29986,$29987,$29988),(nextval($29989),$29990,$29991,$29992,$29993,$29994,$29995,$29996,$29997,$29998,$29999,$30000,$30001,$30002),(nextval($30003),$30004,$30005,$30006,$30007,$30008,$30009,$30010,$30011,$30012,$30013,$30014,$30015,$30016),(nextval($30017),$30018,$30019,$30020,$30021,$30022,$30023,$30024,$30025,$30026,$30027,$30028,$30029,$30030),(nextval($30031),$30032,$30033,$30034,$30035,$30036,$30037,$30038,$30039,$30040,$30041,$30042,$30043,$30044),(nextval($30045),$30046,$30047,$30048,$30049,$30050,$30051,$30052,$30053,$30054,$30055,$30056,$30057,$30058),(nextval($30059),$30060,$30061,$30062,$30063,$30064,$30065,$30066,$30067,$30068,$30069,$30070,$30071,$30072),(nextval($30073),$30074,$30075,$30076,$30077,$30078,$30079,$30080,$30081,$30082,$30083,$30084,$30085,$30086),(nextval($30087),$30088,$30089,$30090,$30091,$30092,$30093,$30094,$30095,$30096,$30097,$30098,$30099,$30100),(nextval($30101),$30102,$30103,$30104,$30105,$30106,$30107,$30108,$30109,$30110,$30111,$30112,$30113,$30114),(nextval($30115),$30116,$30117,$30118,$30119,$30120,$30121,$30122,$30123,$30124,$30125,$30126,$30127,$30128),(nextval($30129),$30130,$30131,$30132,$30133,$30134,$30135,$30136,$30137,$30138,$30139,$30140,$30141,$30142),(nextval($30143),$30144,$30145,$30146,$30147,$30148,$30149,$30150,$30151,$30152,$30153,$30154,$30155,$30156),(nextval($30157),$30158,$30159,$30160,$30161,$30162,$30163,$30164,$30165,$30166,$30167,$30168,$30169,$30170),(nextval($30171),$30172,$30173,$30174,$30175,$30176,$30177,$30178,$30179,$30180,$30181,$30182,$30183,$30184),(nextval($30185),$30186,$30187,$30188,$30189,$30190,$30191,$30192,$30193,$30194,$30195,$30196,$30197,$30198),(nextval($30199),$30200,$30201,$30202,$30203,$30204,$30205,$30206,$30207,$30208,$30209,$30210,$30211,$30212),(nextval($30213),$30214,$30215,$30216,$30217,$30218,$30219,$30220,$30221,$30222,$30223,$30224,$30225,$30226),(nextval($30227),$30228,$30229,$30230,$30231,$30232,$30233,$30234,$30235,$30236,$30237,$30238,$30239,$30240),(nextval($30241),$30242,$30243,$30244,$30245,$30246,$30247,$30248,$30249,$30250,$30251,$30252,$30253,$30254),(nextval($30255),$30256,$30257,$30258,$30259,$30260,$30261,$30262,$30263,$30264,$30265,$30266,$30267,$30268),(nextval($30269),$30270,$30271,$30272,$30273,$30274,$30275,$30276,$30277,$30278,$30279,$30280,$30281,$30282),(nextval($30283),$30284,$30285,$30286,$30287,$30288,$30289,$30290,$30291,$30292,$30293,$30294,$30295,$30296),(nextval($30297),$30298,$30299,$30300,$30301,$30302,$30303,$30304,$30305,$30306,$30307,$30308,$30309,$30310),(nextval($30311),$30312,$30313,$30314,$30315,$30316,$30317,$30318,$30319,$30320,$30321,$30322,$30323,$30324),(nextval($30325),$30326,$30327,$30328,$30329,$30330,$30331,$30332,$30333,$30334,$30335,$30336,$30337,$30338),(nextval($30339),$30340,$30341,$30342,$30343,$30344,$30345,$30346,$30347,$30348,$30349,$30350,$30351,$30352),(nextval($30353),$30354,$30355,$30356,$30357,$30358,$30359,$30360,$30361,$30362,$30363,$30364,$30365,$30366),(nextval($30367),$30368,$30369,$30370,$30371,$30372,$30373,$30374,$30375,$30376,$30377,$30378,$30379,$30380),(nextval($30381),$30382,$30383,$30384,$30385,$30386,$30387,$30388,$30389,$30390,$30391,$30392,$30393,$30394),(nextval($30395),$30396,$30397,$30398,$30399,$30400,$30401,$30402,$30403,$30404,$30405,$30406,$30407,$30408),(nextval($30409),$30410,$30411,$30412,$30413,$30414,$30415,$30416,$30417,$30418,$30419,$30420,$30421,$30422),(nextval($30423),$30424,$30425,$30426,$30427,$30428,$30429,$30430,$30431,$30432,$30433,$30434,$30435,$30436),(nextval($30437),$30438,$30439,$30440,$30441,$30442,$30443,$30444,$30445,$30446,$30447,$30448,$30449,$30450),(nextval($30451),$30452,$30453,$30454,$30455,$30456,$30457,$30458,$30459,$30460,$30461,$30462,$30463,$30464),(nextval($30465),$30466,$30467,$30468,$30469,$30470,$30471,$30472,$30473,$30474,$30475,$30476,$30477,$30478),(nextval($30479),$30480,$30481,$30482,$30483,$30484,$30485,$30486,$30487,$30488,$30489,$30490,$30491,$30492),(nextval($30493),$30494,$30495,$30496,$30497,$30498,$30499,$30500,$30501,$30502,$30503,$30504,$30505,$30506),(nextval($30507),$30508,$30509,$30510,$30511,$30512,$30513,$30514,$30515,$30516,$30517,$30518,$30519,$30520),(nextval($30521),$30522,$30523,$30524,$30525,$30526,$30527,$30528,$30529,$30530,$30531,$30532,$30533,$30534),(nextval($30535),$30536,$30537,$30538,$30539,$30540,$30541,$30542,$30543,$30544,$30545,$30546,$30547,$30548),(nextval($30549),$30550,$30551,$30552,$30553,$30554,$30555,$30556,$30557,$30558,$30559,$30560,$30561,$30562),(nextval($30563),$30564,$30565,$30566,$30567,$30568,$30569,$30570,$30571,$30572,$30573,$30574,$30575,$30576),(nextval($30577),$30578,$30579,$30580,$30581,$30582,$30583,$30584,$30585,$30586,$30587,$30588,$30589,$30590),(nextval($30591),$30592,$30593,$30594,$30595,$30596,$30597,$30598,$30599,$30600,$30601,$30602,$30603,$30604),(nextval($30605),$30606,$30607,$30608,$30609,$30610,$30611,$30612,$30613,$30614,$30615,$30616,$30617,$30618),(nextval($30619),$30620,$30621,$30622,$30623,$30624,$30625,$30626,$30627,$30628,$30629,$30630,$30631,$30632),(nextval($30633),$30634,$30635,$30636,$30637,$30638,$30639,$30640,$30641,$30642,$30643,$30644,$30645,$30646),(nextval($30647),$30648,$30649,$30650,$30651,$30652,$30653,$30654,$30655,$30656,$30657,$30658,$30659,$30660),(nextval($30661),$30662,$30663,$30664,$30665,$30666,$30667,$30668,$30669,$30670,$30671,$30672,$30673,$30674),(nextval($30675),$30676,$30677,$30678,$30679,$30680,$30681,$30682,$30683,$30684,$30685,$30686,$30687,$30688),(nextval($30689),$30690,$30691,$30692,$30693,$30694,$30695,$30696,$30697,$30698,$30699,$30700,$30701,$30702),(nextval($30703),$30704,$30705,$30706,$30707,$30708,$30709,$30710,$30711,$30712,$30713,$30714,$30715,$30716),(nextval($30717),$30718,$30719,$30720,$30721,$30722,$30723,$30724,$30725,$30726,$30727,$30728,$30729,$30730),(nextval($30731),$30732,$30733,$30734,$30735,$30736,$30737,$30738,$30739,$30740,$30741,$30742,$30743,$30744),(nextval($30745),$30746,$30747,$30748,$30749,$30750,$30751,$30752,$30753,$30754,$30755,$30756,$30757,$30758),(nextval($30759),$30760,$30761,$30762,$30763,$30764,$30765,$30766,$30767,$30768,$30769,$30770,$30771,$30772),(nextval($30773),$30774,$30775,$30776,$30777,$30778,$30779,$30780,$30781,$30782,$30783,$30784,$30785,$30786),(nextval($30787),$30788,$30789,$30790,$30791,$30792,$30793,$30794,$30795,$30796,$30797,$30798,$30799,$30800),(nextval($30801),$30802,$30803,$30804,$30805,$30806,$30807,$30808,$30809,$30810,$30811,$30812,$30813,$30814),(nextval($30815),$30816,$30817,$30818,$30819,$30820,$30821,$30822,$30823,$30824,$30825,$30826,$30827,$30828),(nextval($30829),$30830,$30831,$30832,$30833,$30834,$30835,$30836,$30837,$30838,$30839,$30840,$30841,$30842),(nextval($30843),$30844,$30845,$30846,$30847,$30848,$30849,$30850,$30851,$30852,$30853,$30854,$30855,$30856),(nextval($30857),$30858,$30859,$30860,$30861,$30862,$30863,$30864,$30865,$30866,$30867,$30868,$30869,$30870),(nextval($30871),$30872,$30873,$30874,$30875,$30876,$30877,$30878,$30879,$30880,$30881,$30882,$30883,$30884),(nextval($30885),$30886,$30887,$30888,$30889,$30890,$30891,$30892,$30893,$30894,$30895,$30896,$30897,$30898),(nextval($30899),$30900,$30901,$30902,$30903,$30904,$30905,$30906,$30907,$30908,$30909,$30910,$30911,$30912),(nextval($30913),$30914,$30915,$30916,$30917,$30918,$30919,$30920,$30921,$30922,$30923,$30924,$30925,$30926),(nextval($30927),$30928,$30929,$30930,$30931,$30932,$30933,$30934,$30935,$30936,$30937,$30938,$30939,$30940),(nextval($30941),$30942,$30943,$30944,$30945,$30946,$30947,$30948,$30949,$30950,$30951,$30952,$30953,$30954),(nextval($30955),$30956,$30957,$30958,$30959,$30960,$30961,$30962,$30963,$30964,$30965,$30966,$30967,$30968),(nextval($30969),$30970,$30971,$30972,$30973,$30974,$30975,$30976,$30977,$30978,$30979,$30980,$30981,$30982),(nextval($30983),$30984,$30985,$30986,$30987,$30988,$30989,$30990,$30991,$30992,$30993,$30994,$30995,$30996),(nextval($30997),$30998,$30999,$31000,$31001,$31002,$31003,$31004,$31005,$31006,$31007,$31008,$31009,$31010),(nextval($31011),$31012,$31013,$31014,$31015,$31016,$31017,$31018,$31019,$31020,$31021,$31022,$31023,$31024),(nextval($31025),$31026,$31027,$31028,$31029,$31030,$31031,$31032,$31033,$31034,$31035,$31036,$31037,$31038),(nextval($31039),$31040,$31041,$31042,$31043,$31044,$31045,$31046,$31047,$31048,$31049,$31050,$31051,$31052),(nextval($31053),$31054,$31055,$31056,$31057,$31058,$31059,$31060,$31061,$31062,$31063,$31064,$31065,$31066),(nextval($31067),$31068,$31069,$31070,$31071,$31072,$31073,$31074,$31075,$31076,$31077,$31078,$31079,$31080),(nextval($31081),$31082,$31083,$31084,$31085,$31086,$31087,$31088,$31089,$31090,$31091,$31092,$31093,$31094),(nextval($31095),$31096,$31097,$31098,$31099,$31100,$31101,$31102,$31103,$31104,$31105,$31106,$31107,$31108),(nextval($31109),$31110,$31111,$31112,$31113,$31114,$31115,$31116,$31117,$31118,$31119,$31120,$31121,$31122),(nextval($31123),$31124,$31125,$31126,$31127,$31128,$31129,$31130,$31131,$31132,$31133,$31134,$31135,$31136),(nextval($31137),$31138,$31139,$31140,$31141,$31142,$31143,$31144,$31145,$31146,$31147,$31148,$31149,$31150),(nextval($31151),$31152,$31153,$31154,$31155,$31156,$31157,$31158,$31159,$31160,$31161,$31162,$31163,$31164),(nextval($31165),$31166,$31167,$31168,$31169,$31170,$31171,$31172,$31173,$31174,$31175,$31176,$31177,$31178),(nextval($31179),$31180,$31181,$31182,$31183,$31184,$31185,$31186,$31187,$31188,$31189,$31190,$31191,$31192),(nextval($31193),$31194,$31195,$31196,$31197,$31198,$31199,$31200,$31201,$31202,$31203,$31204,$31205,$31206),(nextval($31207),$31208,$31209,$31210,$31211,$31212,$31213,$31214,$31215,$31216,$31217,$31218,$31219,$31220),(nextval($31221),$31222,$31223,$31224,$31225,$31226,$31227,$31228,$31229,$31230,$31231,$31232,$31233,$31234),(nextval($31235),$31236,$31237,$31238,$31239,$31240,$31241,$31242,$31243,$31244,$31245,$31246,$31247,$31248),(nextval($31249),$31250,$31251,$31252,$31253,$31254,$31255,$31256,$31257,$31258,$31259,$31260,$31261,$31262),(nextval($31263),$31264,$31265,$31266,$31267,$31268,$31269,$31270,$31271,$31272,$31273,$31274,$31275,$31276),(nextval($31277),$31278,$31279,$31280,$31281,$31282,$31283,$31284,$31285,$31286,$31287,$31288,$31289,$31290),(nextval($31291),$31292,$31293,$31294,$31295,$31296,$31297,$31298,$31299,$31300,$31301,$31302,$31303,$31304),(nextval($31305),$31306,$31307,$31308,$31309,$31310,$31311,$31312,$31313,$31314,$31315,$31316,$31317,$31318),(nextval($31319),$31320,$31321,$31322,$31323,$31324,$31325,$31326,$31327,$31328,$31329,$31330,$31331,$31332),(nextval($31333),$31334,$31335,$31336,$31337,$31338,$31339,$31340,$31341,$31342,$31343,$31344,$31345,$31346),(nextval($31347),$31348,$31349,$31350,$31351,$31352,$31353,$31354,$31355,$31356,$31357,$31358,$31359,$31360),(nextval($31361),$31362,$31363,$31364,$31365,$31366,$31367,$31368,$31369,$31370,$31371,$31372,$31373,$31374),(nextval($31375),$31376,$31377,$31378,$31379,$31380,$31381,$31382,$31383,$31384,$31385,$31386,$31387,$31388),(nextval($31389),$31390,$31391,$31392,$31393,$31394,$31395,$31396,$31397,$31398,$31399,$31400,$31401,$31402),(nextval($31403),$31404,$31405,$31406,$31407,$31408,$31409,$31410,$31411,$31412,$31413,$31414,$31415,$31416),(nextval($31417),$31418,$31419,$31420,$31421,$31422,$31423,$31424,$31425,$31426,$31427,$31428,$31429,$31430),(nextval($31431),$31432,$31433,$31434,$31435,$31436,$31437,$31438,$31439,$31440,$31441,$31442,$31443,$31444),(nextval($31445),$31446,$31447,$31448,$31449,$31450,$31451,$31452,$31453,$31454,$31455,$31456,$31457,$31458),(nextval($31459),$31460,$31461,$31462,$31463,$31464,$31465,$31466,$31467,$31468,$31469,$31470,$31471,$31472),(nextval($31473),$31474,$31475,$31476,$31477,$31478,$31479,$31480,$31481,$31482,$31483,$31484,$31485,$31486),(nextval($31487),$31488,$31489,$31490,$31491,$31492,$31493,$31494,$31495,$31496,$31497,$31498,$31499,$31500),(nextval($31501),$31502,$31503,$31504,$31505,$31506,$31507,$31508,$31509,$31510,$31511,$31512,$31513,$31514),(nextval($31515),$31516,$31517,$31518,$31519,$31520,$31521,$31522,$31523,$31524,$31525,$31526,$31527,$31528),(nextval($31529),$31530,$31531,$31532,$31533,$31534,$31535,$31536,$31537,$31538,$31539,$31540,$31541,$31542),(nextval($31543),$31544,$31545,$31546,$31547,$31548,$31549,$31550,$31551,$31552,$31553,$31554,$31555,$31556),(nextval($31557),$31558,$31559,$31560,$31561,$31562,$31563,$31564,$31565,$31566,$31567,$31568,$31569,$31570),(nextval($31571),$31572,$31573,$31574,$31575,$31576,$31577,$31578,$31579,$31580,$31581,$31582,$31583,$31584),(nextval($31585),$31586,$31587,$31588,$31589,$31590,$31591,$31592,$31593,$31594,$31595,$31596,$31597,$31598),(nextval($31599),$31600,$31601,$31602,$31603,$31604,$31605,$31606,$31607,$31608,$31609,$31610,$31611,$31612),(nextval($31613),$31614,$31615,$31616,$31617,$31618,$31619,$31620,$31621,$31622,$31623,$31624,$31625,$31626),(nextval($31627),$31628,$31629,$31630,$31631,$31632,$31633,$31634,$31635,$31636,$31637,$31638,$31639,$31640),(nextval($31641),$31642,$31643,$31644,$31645,$31646,$31647,$31648,$31649,$31650,$31651,$31652,$31653,$31654),(nextval($31655),$31656,$31657,$31658,$31659,$31660,$31661,$31662,$31663,$31664,$31665,$31666,$31667,$31668),(nextval($31669),$31670,$31671,$31672,$31673,$31674,$31675,$31676,$31677,$31678,$31679,$31680,$31681,$31682),(nextval($31683),$31684,$31685,$31686,$31687,$31688,$31689,$31690,$31691,$31692,$31693,$31694,$31695,$31696),(nextval($31697),$31698,$31699,$31700,$31701,$31702,$31703,$31704,$31705,$31706,$31707,$31708,$31709,$31710),(nextval($31711),$31712,$31713,$31714,$31715,$31716,$31717,$31718,$31719,$31720,$31721,$31722,$31723,$31724),(nextval($31725),$31726,$31727,$31728,$31729,$31730,$31731,$31732,$31733,$31734,$31735,$31736,$31737,$31738),(nextval($31739),$31740,$31741,$31742,$31743,$31744,$31745,$31746,$31747,$31748,$31749,$31750,$31751,$31752),(nextval($31753),$31754,$31755,$31756,$31757,$31758,$31759,$31760,$31761,$31762,$31763,$31764,$31765,$31766),(nextval($31767),$31768,$31769,$31770,$31771,$31772,$31773,$31774,$31775,$31776,$31777,$31778,$31779,$31780),(nextval($31781),$31782,$31783,$31784,$31785,$31786,$31787,$31788,$31789,$31790,$31791,$31792,$31793,$31794),(nextval($31795),$31796,$31797,$31798,$31799,$31800,$31801,$31802,$31803,$31804,$31805,$31806,$31807,$31808),(nextval($31809),$31810,$31811,$31812,$31813,$31814,$31815,$31816,$31817,$31818,$31819,$31820,$31821,$31822),(nextval($31823),$31824,$31825,$31826,$31827,$31828,$31829,$31830,$31831,$31832,$31833,$31834,$31835,$31836),(nextval($31837),$31838,$31839,$31840,$31841,$31842,$31843,$31844,$31845,$31846,$31847,$31848,$31849,$31850),(nextval($31851),$31852,$31853,$31854,$31855,$31856,$31857,$31858,$31859,$31860,$31861,$31862,$31863,$31864),(nextval($31865),$31866,$31867,$31868,$31869,$31870,$31871,$31872,$31873,$31874,$31875,$31876,$31877,$31878),(nextval($31879),$31880,$31881,$31882,$31883,$31884,$31885,$31886,$31887,$31888,$31889,$31890,$31891,$31892),(nextval($31893),$31894,$31895,$31896,$31897,$31898,$31899,$31900,$31901,$31902,$31903,$31904,$31905,$31906),(nextval($31907),$31908,$31909,$31910,$31911,$31912,$31913,$31914,$31915,$31916,$31917,$31918,$31919,$31920),(nextval($31921),$31922,$31923,$31924,$31925,$31926,$31927,$31928,$31929,$31930,$31931,$31932,$31933,$31934),(nextval($31935),$31936,$31937,$31938,$31939,$31940,$31941,$31942,$31943,$31944,$31945,$31946,$31947,$31948),(nextval($31949),$31950,$31951,$31952,$31953,$31954,$31955,$31956,$31957,$31958,$31959,$31960,$31961,$31962),(nextval($31963),$31964,$31965,$31966,$31967,$31968,$31969,$31970,$31971,$31972,$31973,$31974,$31975,$31976),(nextval($31977),$31978,$31979,$31980,$31981,$31982,$31983,$31984,$31985,$31986,$31987,$31988,$31989,$31990),(nextval($31991),$31992,$31993,$31994,$31995,$31996,$31997,$31998,$31999,$32000,$32001,$32002,$32003,$32004),(nextval($32005),$32006,$32007,$32008,$32009,$32010,$32011,$32012,$32013,$32014,$32015,$32016,$32017,$32018),(nextval($32019),$32020,$32021,$32022,$32023,$32024,$32025,$32026,$32027,$32028,$32029,$32030,$32031,$32032),(nextval($32033),$32034,$32035,$32036,$32037,$32038,$32039,$32040,$32041,$32042,$32043,$32044,$32045,$32046),(nextval($32047),$32048,$32049,$32050,$32051,$32052,$32053,$32054,$32055,$32056,$32057,$32058,$32059,$32060),(nextval($32061),$32062,$32063,$32064,$32065,$32066,$32067,$32068,$32069,$32070,$32071,$32072,$32073,$32074),(nextval($32075),$32076,$32077,$32078,$32079,$32080,$32081,$32082,$32083,$32084,$32085,$32086,$32087,$32088),(nextval($32089),$32090,$32091,$32092,$32093,$32094,$32095,$32096,$32097,$32098,$32099,$32100,$32101,$32102),(nextval($32103),$32104,$32105,$32106,$32107,$32108,$32109,$32110,$32111,$32112,$32113,$32114,$32115,$32116),(nextval($32117),$32118,$32119,$32120,$32121,$32122,$32123,$32124,$32125,$32126,$32127,$32128,$32129,$32130),(nextval($32131),$32132,$32133,$32134,$32135,$32136,$32137,$32138,$32139,$32140,$32141,$32142,$32143,$32144),(nextval($32145),$32146,$32147,$32148,$32149,$32150,$32151,$32152,$32153,$32154,$32155,$32156,$32157,$32158),(nextval($32159),$32160,$32161,$32162,$32163,$32164,$32165,$32166,$32167,$32168,$32169,$32170,$32171,$32172),(nextval($32173),$32174,$32175,$32176,$32177,$32178,$32179,$32180,$32181,$32182,$32183,$32184,$32185,$32186),(nextval($32187),$32188,$32189,$32190,$32191,$32192,$32193,$32194,$32195,$32196,$32197,$32198,$32199,$32200),(nextval($32201),$32202,$32203,$32204,$32205,$32206,$32207,$32208,$32209,$32210,$32211,$32212,$32213,$32214),(nextval($32215),$32216,$32217,$32218,$32219,$32220,$32221,$32222,$32223,$32224,$32225,$32226,$32227,$32228),(nextval($32229),$32230,$32231,$32232,$32233,$32234,$32235,$32236,$32237,$32238,$32239,$32240,$32241,$32242),(nextval($32243),$32244,$32245,$32246,$32247,$32248,$32249,$32250,$32251,$32252,$32253,$32254,$32255,$32256),(nextval($32257),$32258,$32259,$32260,$32261,$32262,$32263,$32264,$32265,$32266,$32267,$32268,$32269,$32270),(nextval($32271),$32272,$32273,$32274,$32275,$32276,$32277,$32278,$32279,$32280,$32281,$32282,$32283,$32284),(nextval($32285),$32286,$32287,$32288,$32289,$32290,$32291,$32292,$32293,$32294,$32295,$32296,$32297,$32298),(nextval($32299),$32300,$32301,$32302,$32303,$32304,$32305,$32306,$32307,$32308,$32309,$32310,$32311,$32312),(nextval($32313),$32314,$32315,$32316,$32317,$32318,$32319,$32320,$32321,$32322,$32323,$32324,$32325,$32326),(nextval($32327),$32328,$32329,$32330,$32331,$32332,$32333,$32334,$32335,$32336,$32337,$32338,$32339,$32340),(nextval($32341),$32342,$32343,$32344,$32345,$32346,$32347,$32348,$32349,$32350,$32351,$32352,$32353,$32354),(nextval($32355),$32356,$32357,$32358,$32359,$32360,$32361,$32362,$32363,$32364,$32365,$32366,$32367,$32368),(nextval($32369),$32370,$32371,$32372,$32373,$32374,$32375,$32376,$32377,$32378,$32379,$32380,$32381,$32382),(nextval($32383),$32384,$32385,$32386,$32387,$32388,$32389,$32390,$32391,$32392,$32393,$32394,$32395,$32396),(nextval($32397),$32398,$32399,$32400,$32401,$32402,$32403,$32404,$32405,$32406,$32407,$32408,$32409,$32410),(nextval($32411),$32412,$32413,$32414,$32415,$32416,$32417,$32418,$32419,$32420,$32421,$32422,$32423,$32424),(nextval($32425),$32426,$32427,$32428,$32429,$32430,$32431,$32432,$32433,$32434,$32435,$32436,$32437,$32438),(nextval($32439),$32440,$32441,$32442,$32443,$32444,$32445,$32446,$32447,$32448,$32449,$32450,$32451,$32452),(nextval($32453),$32454,$32455,$32456,$32457,$32458,$32459,$32460,$32461,$32462,$32463,$32464,$32465,$32466),(nextval($32467),$32468,$32469,$32470,$32471,$32472,$32473,$32474,$32475,$32476,$32477,$32478,$32479,$32480),(nextval($32481),$32482,$32483,$32484,$32485,$32486,$32487,$32488,$32489,$32490,$32491,$32492,$32493,$32494),(nextval($32495),$32496,$32497,$32498,$32499,$32500,$32501,$32502,$32503,$32504,$32505,$32506,$32507,$32508),(nextval($32509),$32510,$32511,$32512,$32513,$32514,$32515,$32516,$32517,$32518,$32519,$32520,$32521,$32522),(nextval($32523),$32524,$32525,$32526,$32527,$32528,$32529,$32530,$32531,$32532,$32533,$32534,$32535,$32536),(nextval($32537),$32538,$32539,$32540,$32541,$32542,$32543,$32544,$32545,$32546,$32547,$32548,$32549,$32550),(nextval($32551),$32552,$32553,$32554,$32555,$32556,$32557,$32558,$32559,$32560,$32561,$32562,$32563,$32564),(nextval($32565),$32566,$32567,$32568,$32569,$32570,$32571,$32572,$32573,$32574,$32575,$32576,$32577,$32578),(nextval($32579),$32580,$32581,$32582,$32583,$32584,$32585,$32586,$32587,$32588,$32589,$32590,$32591,$32592),(nextval($32593),$32594,$32595,$32596,$32597,$32598,$32599,$32600,$32601,$32602,$32603,$32604,$32605,$32606),(nextval($32607),$32608,$32609,$32610,$32611,$32612,$32613,$32614,$32615,$32616,$32617,$32618,$32619,$32620),(nextval($32621),$32622,$32623,$32624,$32625,$32626,$32627,$32628,$32629,$32630,$32631,$32632,$32633,$32634),(nextval($32635),$32636,$32637,$32638,$32639,$32640,$32641,$32642,$32643,$32644,$32645,$32646,$32647,$32648),(nextval($32649),$32650,$32651,$32652,$32653,$32654,$32655,$32656,$32657,$32658,$32659,$32660,$32661,$32662),(nextval($32663),$32664,$32665,$32666,$32667,$32668,$32669,$32670,$32671,$32672,$32673,$32674,$32675,$32676),(nextval($32677),$32678,$32679,$32680,$32681,$32682,$32683,$32684,$32685,$32686,$32687,$32688,$32689,$32690),(nextval($32691),$32692,$32693,$32694,$32695,$32696,$32697,$32698,$32699,$32700,$32701,$32702,$32703,$32704),(nextval($32705),$32706,$32707,$32708,$32709,$32710,$32711,$32712,$32713,$32714,$32715,$32716,$32717,$32718),(nextval($32719),$32720,$32721,$32722,$32723,$32724,$32725,$32726,$32727,$32728,$32729,$32730,$32731,$32732),(nextval($32733),$32734,$32735,$32736,$32737,$32738,$32739,$32740,$32741,$32742,$32743,$32744,$32745,$32746),(nextval($32747),$32748,$32749,$32750,$32751,$32752,$32753,$32754,$32755,$32756,$32757,$32758,$32759,$32760),(nextval($32761),$32762,$32763,$32764,$32765,$32766,$32767,$32768,$32769,$32770,$32771,$32772,$32773,$32774),(nextval($32775),$32776,$32777,$32778,$32779,$32780,$32781,$32782,$32783,$32784,$32785,$32786,$32787,$32788),(nextval($32789),$32790,$32791,$32792,$32793,$32794,$32795,$32796,$32797,$32798,$32799,$32800,$32801,$32802),(nextval($32803),$32804,$32805,$32806,$32807,$32808,$32809,$32810,$32811,$32812,$32813,$32814,$32815,$32816),(nextval($32817),$32818,$32819,$32820,$32821,$32822,$32823,$32824,$32825,$32826,$32827,$32828,$32829,$32830),(nextval($32831),$32832,$32833,$32834,$32835,$32836,$32837,$32838,$32839,$32840,$32841,$32842,$32843,$32844),(nextval($32845),$32846,$32847,$32848,$32849,$32850,$32851,$32852,$32853,$32854,$32855,$32856,$32857,$32858),(nextval($32859),$32860,$32861,$32862,$32863,$32864,$32865,$32866,$32867,$32868,$32869,$32870,$32871,$32872),(nextval($32873),$32874,$32875,$32876,$32877,$32878,$32879,$32880,$32881,$32882,$32883,$32884,$32885,$32886),(nextval($32887),$32888,$32889,$32890,$32891,$32892,$32893,$32894,$32895,$32896,$32897,$32898,$32899,$32900),(nextval($32901),$32902,$32903,$32904,$32905,$32906,$32907,$32908,$32909,$32910,$32911,$32912,$32913,$32914),(nextval($32915),$32916,$32917,$32918,$32919,$32920,$32921,$32922,$32923,$32924,$32925,$32926,$32927,$32928),(nextval($32929),$32930,$32931,$32932,$32933,$32934,$32935,$32936,$32937,$32938,$32939,$32940,$32941,$32942),(nextval($32943),$32944,$32945,$32946,$32947,$32948,$32949,$32950,$32951,$32952,$32953,$32954,$32955,$32956),(nextval($32957),$32958,$32959,$32960,$32961,$32962,$32963,$32964,$32965,$32966,$32967,$32968,$32969,$32970),(nextval($32971),$32972,$32973,$32974,$32975,$32976,$32977,$32978,$32979,$32980,$32981,$32982,$32983,$32984),(nextval($32985),$32986,$32987,$32988,$32989,$32990,$32991,$32992,$32993,$32994,$32995,$32996,$32997,$32998),(nextval($32999),$33000,$33001,$33002,$33003,$33004,$33005,$33006,$33007,$33008,$33009,$33010,$33011,$33012),(nextval($33013),$33014,$33015,$33016,$33017,$33018,$33019,$33020,$33021,$33022,$33023,$33024,$33025,$33026),(nextval($33027),$33028,$33029,$33030,$33031,$33032,$33033,$33034,$33035,$33036,$33037,$33038,$33039,$33040),(nextval($33041),$33042,$33043,$33044,$33045,$33046,$33047,$33048,$33049,$33050,$33051,$33052,$33053,$33054),(nextval($33055),$33056,$33057,$33058,$33059,$33060,$33061,$33062,$33063,$33064,$33065,$33066,$33067,$33068),(nextval($33069),$33070,$33071,$33072,$33073,$33074,$33075,$33076,$33077,$33078,$33079,$33080,$33081,$33082),(nextval($33083),$33084,$33085,$33086,$33087,$33088,$33089,$33090,$33091,$33092,$33093,$33094,$33095,$33096),(nextval($33097),$33098,$33099,$33100,$33101,$33102,$33103,$33104,$33105,$33106,$33107,$33108,$33109,$33110),(nextval($33111),$33112,$33113,$33114,$33115,$33116,$33117,$33118,$33119,$33120,$33121,$33122,$33123,$33124),(nextval($33125),$33126,$33127,$33128,$33129,$33130,$33131,$33132,$33133,$33134,$33135,$33136,$33137,$33138),(nextval($33139),$33140,$33141,$33142,$33143,$33144,$33145,$33146,$33147,$33148,$33149,$33150,$33151,$33152),(nextval($33153),$33154,$33155,$33156,$33157,$33158,$33159,$33160,$33161,$33162,$33163,$33164,$33165,$33166),(nextval($33167),$33168,$33169,$33170,$33171,$33172,$33173,$33174,$33175,$33176,$33177,$33178,$33179,$33180),(nextval($33181),$33182,$33183,$33184,$33185,$33186,$33187,$33188,$33189,$33190,$33191,$33192,$33193,$33194),(nextval($33195),$33196,$33197,$33198,$33199,$33200,$33201,$33202,$33203,$33204,$33205,$33206,$33207,$33208),(nextval($33209),$33210,$33211,$33212,$33213,$33214,$33215,$33216,$33217,$33218,$33219,$33220,$33221,$33222),(nextval($33223),$33224,$33225,$33226,$33227,$33228,$33229,$33230,$33231,$33232,$33233,$33234,$33235,$33236),(nextval($33237),$33238,$33239,$33240,$33241,$33242,$33243,$33244,$33245,$33246,$33247,$33248,$33249,$33250),(nextval($33251),$33252,$33253,$33254,$33255,$33256,$33257,$33258,$33259,$33260,$33261,$33262,$33263,$33264),(nextval($33265),$33266,$33267,$33268,$33269,$33270,$33271,$33272,$33273,$33274,$33275,$33276,$33277,$33278),(nextval($33279),$33280,$33281,$33282,$33283,$33284,$33285,$33286,$33287,$33288,$33289,$33290,$33291,$33292),(nextval($33293),$33294,$33295,$33296,$33297,$33298,$33299,$33300,$33301,$33302,$33303,$33304,$33305,$33306),(nextval($33307),$33308,$33309,$33310,$33311,$33312,$33313,$33314,$33315,$33316,$33317,$33318,$33319,$33320),(nextval($33321),$33322,$33323,$33324,$33325,$33326,$33327,$33328,$33329,$33330,$33331,$33332,$33333,$33334),(nextval($33335),$33336,$33337,$33338,$33339,$33340,$33341,$33342,$33343,$33344,$33345,$33346,$33347,$33348),(nextval($33349),$33350,$33351,$33352,$33353,$33354,$33355,$33356,$33357,$33358,$33359,$33360,$33361,$33362),(nextval($33363),$33364,$33365,$33366,$33367,$33368,$33369,$33370,$33371,$33372,$33373,$33374,$33375,$33376),(nextval($33377),$33378,$33379,$33380,$33381,$33382,$33383,$33384,$33385,$33386,$33387,$33388,$33389,$33390),(nextval($33391),$33392,$33393,$33394,$33395,$33396,$33397,$33398,$33399,$33400,$33401,$33402,$33403,$33404),(nextval($33405),$33406,$33407,$33408,$33409,$33410,$33411,$33412,$33413,$33414,$33415,$33416,$33417,$33418),(nextval($33419),$33420,$33421,$33422,$33423,$33424,$33425,$33426,$33427,$33428,$33429,$33430,$33431,$33432),(nextval($33433),$33434,$33435,$33436,$33437,$33438,$33439,$33440,$33441,$33442,$33443,$33444,$33445,$33446),(nextval($33447),$33448,$33449,$33450,$33451,$33452,$33453,$33454,$33455,$33456,$33457,$33458,$33459,$33460),(nextval($33461),$33462,$33463,$33464,$33465,$33466,$33467,$33468,$33469,$33470,$33471,$33472,$33473,$33474),(nextval($33475),$33476,$33477,$33478,$33479,$33480,$33481,$33482,$33483,$33484,$33485,$33486,$33487,$33488),(nextval($33489),$33490,$33491,$33492,$33493,$33494,$33495,$33496,$33497,$33498,$33499,$33500,$33501,$33502),(nextval($33503),$33504,$33505,$33506,$33507,$33508,$33509,$33510,$33511,$33512,$33513,$33514,$33515,$33516),(nextval($33517),$33518,$33519,$33520,$33521,$33522,$33523,$33524,$33525,$33526,$33527,$33528,$33529,$33530),(nextval($33531),$33532,$33533,$33534,$33535,$33536,$33537,$33538,$33539,$33540,$33541,$33542,$33543,$33544),(nextval($33545),$33546,$33547,$33548,$33549,$33550,$33551,$33552,$33553,$33554,$33555,$33556,$33557,$33558),(nextval($33559),$33560,$33561,$33562,$33563,$33564,$33565,$33566,$33567,$33568,$33569,$33570,$33571,$33572),(nextval($33573),$33574,$33575,$33576,$33577,$33578,$33579,$33580,$33581,$33582,$33583,$33584,$33585,$33586),(nextval($33587),$33588,$33589,$33590,$33591,$33592,$33593,$33594,$33595,$33596,$33597,$33598,$33599,$33600),(nextval($33601),$33602,$33603,$33604,$33605,$33606,$33607,$33608,$33609,$33610,$33611,$33612,$33613,$33614),(nextval($33615),$33616,$33617,$33618,$33619,$33620,$33621,$33622,$33623,$33624,$33625,$33626,$33627,$33628),(nextval($33629),$33630,$33631,$33632,$33633,$33634,$33635,$33636,$33637,$33638,$33639,$33640,$33641,$33642),(nextval($33643),$33644,$33645,$33646,$33647,$33648,$33649,$33650,$33651,$33652,$33653,$33654,$33655,$33656),(nextval($33657),$33658,$33659,$33660,$33661,$33662,$33663,$33664,$33665,$33666,$33667,$33668,$33669,$33670),(nextval($33671),$33672,$33673,$33674,$33675,$33676,$33677,$33678,$33679,$33680,$33681,$33682,$33683,$33684),(nextval($33685),$33686,$33687,$33688,$33689,$33690,$33691,$33692,$33693,$33694,$33695,$33696,$33697,$33698),(nextval($33699),$33700,$33701,$33702,$33703,$33704,$33705,$33706,$33707,$33708,$33709,$33710,$33711,$33712),(nextval($33713),$33714,$33715,$33716,$33717,$33718,$33719,$33720,$33721,$33722,$33723,$33724,$33725,$33726),(nextval($33727),$33728,$33729,$33730,$33731,$33732,$33733,$33734,$33735,$33736,$33737,$33738,$33739,$33740),(nextval($33741),$33742,$33743,$33744,$33745,$33746,$33747,$33748,$33749,$33750,$33751,$33752,$33753,$33754),(nextval($33755),$33756,$33757,$33758,$33759,$33760,$33761,$33762,$33763,$33764,$33765,$33766,$33767,$33768),(nextval($33769),$33770,$33771,$33772,$33773,$33774,$33775,$33776,$33777,$33778,$33779,$33780,$33781,$33782),(nextval($33783),$33784,$33785,$33786,$33787,$33788,$33789,$33790,$33791,$33792,$33793,$33794,$33795,$33796),(nextval($33797),$33798,$33799,$33800,$33801,$33802,$33803,$33804,$33805,$33806,$33807,$33808,$33809,$33810),(nextval($33811),$33812,$33813,$33814,$33815,$33816,$33817,$33818,$33819,$33820,$33821,$33822,$33823,$33824),(nextval($33825),$33826,$33827,$33828,$33829,$33830,$33831,$33832,$33833,$33834,$33835,$33836,$33837,$33838),(nextval($33839),$33840,$33841,$33842,$33843,$33844,$33845,$33846,$33847,$33848,$33849,$33850,$33851,$33852),(nextval($33853),$33854,$33855,$33856,$33857,$33858,$33859,$33860,$33861,$33862,$33863,$33864,$33865,$33866),(nextval($33867),$33868,$33869,$33870,$33871,$33872,$33873,$33874,$33875,$33876,$33877,$33878,$33879,$33880),(nextval($33881),$33882,$33883,$33884,$33885,$33886,$33887,$33888,$33889,$33890,$33891,$33892,$33893,$33894),(nextval($33895),$33896,$33897,$33898,$33899,$33900,$33901,$33902,$33903,$33904,$33905,$33906,$33907,$33908),(nextval($33909),$33910,$33911,$33912,$33913,$33914,$33915,$33916,$33917,$33918,$33919,$33920,$33921,$33922),(nextval($33923),$33924,$33925,$33926,$33927,$33928,$33929,$33930,$33931,$33932,$33933,$33934,$33935,$33936),(nextval($33937),$33938,$33939,$33940,$33941,$33942,$33943,$33944,$33945,$33946,$33947,$33948,$33949,$33950),(nextval($33951),$33952,$33953,$33954,$33955,$33956,$33957,$33958,$33959,$33960,$33961,$33962,$33963,$33964),(nextval($33965),$33966,$33967,$33968,$33969,$33970,$33971,$33972,$33973,$33974,$33975,$33976,$33977,$33978),(nextval($33979),$33980,$33981,$33982,$33983,$33984,$33985,$33986,$33987,$33988,$33989,$33990,$33991,$33992),(nextval($33993),$33994,$33995,$33996,$33997,$33998,$33999,$34000,$34001,$34002,$34003,$34004,$34005,$34006),(nextval($34007),$34008,$34009,$34010,$34011,$34012,$34013,$34014,$34015,$34016,$34017,$34018,$34019,$34020),(nextval($34021),$34022,$34023,$34024,$34025,$34026,$34027,$34028,$34029,$34030,$34031,$34032,$34033,$34034),(nextval($34035),$34036,$34037,$34038,$34039,$34040,$34041,$34042,$34043,$34044,$34045,$34046,$34047,$34048),(nextval($34049),$34050,$34051,$34052,$34053,$34054,$34055,$34056,$34057,$34058,$34059,$34060,$34061,$34062),(nextval($34063),$34064,$34065,$34066,$34067,$34068,$34069,$34070,$34071,$34072,$34073,$34074,$34075,$34076),(nextval($34077),$34078,$34079,$34080,$34081,$34082,$34083,$34084,$34085,$34086,$34087,$34088,$34089,$34090),(nextval($34091),$34092,$34093,$34094,$34095,$34096,$34097,$34098,$34099,$34100,$34101,$34102,$34103,$34104),(nextval($34105),$34106,$34107,$34108,$34109,$34110,$34111,$34112,$34113,$34114,$34115,$34116,$34117,$34118),(nextval($34119),$34120,$34121,$34122,$34123,$34124,$34125,$34126,$34127,$34128,$34129,$34130,$34131,$34132),(nextval($34133),$34134,$34135,$34136,$34137,$34138,$34139,$34140,$34141,$34142,$34143,$34144,$34145,$34146),(nextval($34147),$34148,$34149,$34150,$34151,$34152,$34153,$34154,$34155,$34156,$34157,$34158,$34159,$34160),(nextval($34161),$34162,$34163,$34164,$34165,$34166,$34167,$34168,$34169,$34170,$34171,$34172,$34173,$34174),(nextval($34175),$34176,$34177,$34178,$34179,$34180,$34181,$34182,$34183,$34184,$34185,$34186,$34187,$34188),(nextval($34189),$34190,$34191,$34192,$34193,$34194,$34195,$34196,$34197,$34198,$34199,$34200,$34201,$34202),(nextval($34203),$34204,$34205,$34206,$34207,$34208,$34209,$34210,$34211,$34212,$34213,$34214,$34215,$34216),(nextval($34217),$34218,$34219,$34220,$34221,$34222,$34223,$34224,$34225,$34226,$34227,$34228,$34229,$34230),(nextval($34231),$34232,$34233,$34234,$34235,$34236,$34237,$34238,$34239,$34240,$34241,$34242,$34243,$34244),(nextval($34245),$34246,$34247,$34248,$34249,$34250,$34251,$34252,$34253,$34254,$34255,$34256,$34257,$34258),(nextval($34259),$34260,$34261,$34262,$34263,$34264,$34265,$34266,$34267,$34268,$34269,$34270,$34271,$34272),(nextval($34273),$34274,$34275,$34276,$34277,$34278,$34279,$34280,$34281,$34282,$34283,$34284,$34285,$34286),(nextval($34287),$34288,$34289,$34290,$34291,$34292,$34293,$34294,$34295,$34296,$34297,$34298,$34299,$34300),(nextval($34301),$34302,$34303,$34304,$34305,$34306,$34307,$34308,$34309,$34310,$34311,$34312,$34313,$34314),(nextval($34315),$34316,$34317,$34318,$34319,$34320,$34321,$34322,$34323,$34324,$34325,$34326,$34327,$34328),(nextval($34329),$34330,$34331,$34332,$34333,$34334,$34335,$34336,$34337,$34338,$34339,$34340,$34341,$34342),(nextval($34343),$34344,$34345,$34346,$34347,$34348,$34349,$34350,$34351,$34352,$34353,$34354,$34355,$34356),(nextval($34357),$34358,$34359,$34360,$34361,$34362,$34363,$34364,$34365,$34366,$34367,$34368,$34369,$34370),(nextval($34371),$34372,$34373,$34374,$34375,$34376,$34377,$34378,$34379,$34380,$34381,$34382,$34383,$34384),(nextval($34385),$34386,$34387,$34388,$34389,$34390,$34391,$34392,$34393,$34394,$34395,$34396,$34397,$34398),(nextval($34399),$34400,$34401,$34402,$34403,$34404,$34405,$34406,$34407,$34408,$34409,$34410,$34411,$34412),(nextval($34413),$34414,$34415,$34416,$34417,$34418,$34419,$34420,$34421,$34422,$34423,$34424,$34425,$34426),(nextval($34427),$34428,$34429,$34430,$34431,$34432,$34433,$34434,$34435,$34436,$34437,$34438,$34439,$34440),(nextval($34441),$34442,$34443,$34444,$34445,$34446,$34447,$34448,$34449,$34450,$34451,$34452,$34453,$34454),(nextval($34455),$34456,$34457,$34458,$34459,$34460,$34461,$34462,$34463,$34464,$34465,$34466,$34467,$34468),(nextval($34469),$34470,$34471,$34472,$34473,$34474,$34475,$34476,$34477,$34478,$34479,$34480,$34481,$34482),(nextval($34483),$34484,$34485,$34486,$34487,$34488,$34489,$34490,$34491,$34492,$34493,$34494,$34495,$34496),(nextval($34497),$34498,$34499,$34500,$34501,$34502,$34503,$34504,$34505,$34506,$34507,$34508,$34509,$34510),(nextval($34511),$34512,$34513,$34514,$34515,$34516,$34517,$34518,$34519,$34520,$34521,$34522,$34523,$34524),(nextval($34525),$34526,$34527,$34528,$34529,$34530,$34531,$34532,$34533,$34534,$34535,$34536,$34537,$34538),(nextval($34539),$34540,$34541,$34542,$34543,$34544,$34545,$34546,$34547,$34548,$34549,$34550,$34551,$34552),(nextval($34553),$34554,$34555,$34556,$34557,$34558,$34559,$34560,$34561,$34562,$34563,$34564,$34565,$34566),(nextval($34567),$34568,$34569,$34570,$34571,$34572,$34573,$34574,$34575,$34576,$34577,$34578,$34579,$34580),(nextval($34581),$34582,$34583,$34584,$34585,$34586,$34587,$34588,$34589,$34590,$34591,$34592,$34593,$34594),(nextval($34595),$34596,$34597,$34598,$34599,$34600,$34601,$34602,$34603,$34604,$34605,$34606,$34607,$34608),(nextval($34609),$34610,$34611,$34612,$34613,$34614,$34615,$34616,$34617,$34618,$34619,$34620,$34621,$34622),(nextval($34623),$34624,$34625,$34626,$34627,$34628,$34629,$34630,$34631,$34632,$34633,$34634,$34635,$34636),(nextval($34637),$34638,$34639,$34640,$34641,$34642,$34643,$34644,$34645,$34646,$34647,$34648,$34649,$34650),(nextval($34651),$34652,$34653,$34654,$34655,$34656,$34657,$34658,$34659,$34660,$34661,$34662,$34663,$34664),(nextval($34665),$34666,$34667,$34668,$34669,$34670,$34671,$34672,$34673,$34674,$34675,$34676,$34677,$34678),(nextval($34679),$34680,$34681,$34682,$34683,$34684,$34685,$34686,$34687,$34688,$34689,$34690,$34691,$34692),(nextval($34693),$34694,$34695,$34696,$34697,$34698,$34699,$34700,$34701,$34702,$34703,$34704,$34705,$34706),(nextval($34707),$34708,$34709,$34710,$34711,$34712,$34713,$34714,$34715,$34716,$34717,$34718,$34719,$34720),(nextval($34721),$34722,$34723,$34724,$34725,$34726,$34727,$34728,$34729,$34730,$34731,$34732,$34733,$34734),(nextval($34735),$34736,$34737,$34738,$34739,$34740,$34741,$34742,$34743,$34744,$34745,$34746,$34747,$34748),(nextval($34749),$34750,$34751,$34752,$34753,$34754,$34755,$34756,$34757,$34758,$34759,$34760,$34761,$34762),(nextval($34763),$34764,$34765,$34766,$34767,$34768,$34769,$34770,$34771,$34772,$34773,$34774,$34775,$34776),(nextval($34777),$34778,$34779,$34780,$34781,$34782,$34783,$34784,$34785,$34786,$34787,$34788,$34789,$34790),(nextval($34791),$34792,$34793,$34794,$34795,$34796,$34797,$34798,$34799,$34800,$34801,$34802,$34803,$34804),(nextval($34805),$34806,$34807,$34808,$34809,$34810,$34811,$34812,$34813,$34814,$34815,$34816,$34817,$34818),(nextval($34819),$34820,$34821,$34822,$34823,$34824,$34825,$34826,$34827,$34828,$34829,$34830,$34831,$34832),(nextval($34833),$34834,$34835,$34836,$34837,$34838,$34839,$34840,$34841,$34842,$34843,$34844,$34845,$34846),(nextval($34847),$34848,$34849,$34850,$34851,$34852,$34853,$34854,$34855,$34856,$34857,$34858,$34859,$34860),(nextval($34861),$34862,$34863,$34864,$34865,$34866,$34867,$34868,$34869,$34870,$34871,$34872,$34873,$34874),(nextval($34875),$34876,$34877,$34878,$34879,$34880,$34881,$34882,$34883,$34884,$34885,$34886,$34887,$34888),(nextval($34889),$34890,$34891,$34892,$34893,$34894,$34895,$34896,$34897,$34898,$34899,$34900,$34901,$34902),(nextval($34903),$34904,$34905,$34906,$34907,$34908,$34909,$34910,$34911,$34912,$34913,$34914,$34915,$34916),(nextval($34917),$34918,$34919,$34920,$34921,$34922,$34923,$34924,$34925,$34926,$34927,$34928,$34929,$34930),(nextval($34931),$34932,$34933,$34934,$34935,$34936,$34937,$34938,$34939,$34940,$34941,$34942,$34943,$34944),(nextval($34945),$34946,$34947,$34948,$34949,$34950,$34951,$34952,$34953,$34954,$34955,$34956,$34957,$34958),(nextval($34959),$34960,$34961,$34962,$34963,$34964,$34965,$34966,$34967,$34968,$34969,$34970,$34971,$34972),(nextval($34973),$34974,$34975,$34976,$34977,$34978,$34979,$34980,$34981,$34982,$34983,$34984,$34985,$34986),(nextval($34987),$34988,$34989,$34990,$34991,$34992,$34993,$34994,$34995,$34996,$34997,$34998,$34999,$35000),(nextval($35001),$35002,$35003,$35004,$35005,$35006,$35007,$35008,$35009,$35010,$35011,$35012,$35013,$35014),(nextval($35015),$35016,$35017,$35018,$35019,$35020,$35021,$35022,$35023,$35024,$35025,$35026,$35027,$35028),(nextval($35029),$35030,$35031,$35032,$35033,$35034,$35035,$35036,$35037,$35038,$35039,$35040,$35041,$35042),(nextval($35043),$35044,$35045,$35046,$35047,$35048,$35049,$35050,$35051,$35052,$35053,$35054,$35055,$35056),(nextval($35057),$35058,$35059,$35060,$35061,$35062,$35063,$35064,$35065,$35066,$35067,$35068,$35069,$35070),(nextval($35071),$35072,$35073,$35074,$35075,$35076,$35077,$35078,$35079,$35080,$35081,$35082,$35083,$35084),(nextval($35085),$35086,$35087,$35088,$35089,$35090,$35091,$35092,$35093,$35094,$35095,$35096,$35097,$35098),(nextval($35099),$35100,$35101,$35102,$35103,$35104,$35105,$35106,$35107,$35108,$35109,$35110,$35111,$35112),(nextval($35113),$35114,$35115,$35116,$35117,$35118,$35119,$35120,$35121,$35122,$35123,$35124,$35125,$35126),(nextval($35127),$35128,$35129,$35130,$35131,$35132,$35133,$35134,$35135,$35136,$35137,$35138,$35139,$35140),(nextval($35141),$35142,$35143,$35144,$35145,$35146,$35147,$35148,$35149,$35150,$35151,$35152,$35153,$35154),(nextval($35155),$35156,$35157,$35158,$35159,$35160,$35161,$35162,$35163,$35164,$35165,$35166,$35167,$35168),(nextval($35169),$35170,$35171,$35172,$35173,$35174,$35175,$35176,$35177,$35178,$35179,$35180,$35181,$35182),(nextval($35183),$35184,$35185,$35186,$35187,$35188,$35189,$35190,$35191,$35192,$35193,$35194,$35195,$35196),(nextval($35197),$35198,$35199,$35200,$35201,$35202,$35203,$35204,$35205,$35206,$35207,$35208,$35209,$35210),(nextval($35211),$35212,$35213,$35214,$35215,$35216,$35217,$35218,$35219,$35220,$35221,$35222,$35223,$35224),(nextval($35225),$35226,$35227,$35228,$35229,$35230,$35231,$35232,$35233,$35234,$35235,$35236,$35237,$35238),(nextval($35239),$35240,$35241,$35242,$35243,$35244,$35245,$35246,$35247,$35248,$35249,$35250,$35251,$35252),(nextval($35253),$35254,$35255,$35256,$35257,$35258,$35259,$35260,$35261,$35262,$35263,$35264,$35265,$35266),(nextval($35267),$35268,$35269,$35270,$35271,$35272,$35273,$35274,$35275,$35276,$35277,$35278,$35279,$35280),(nextval($35281),$35282,$35283,$35284,$35285,$35286,$35287,$35288,$35289,$35290,$35291,$35292,$35293,$35294),(nextval($35295),$35296,$35297,$35298,$35299,$35300,$35301,$35302,$35303,$35304,$35305,$35306,$35307,$35308),(nextval($35309),$35310,$35311,$35312,$35313,$35314,$35315,$35316,$35317,$35318,$35319,$35320,$35321,$35322),(nextval($35323),$35324,$35325,$35326,$35327,$35328,$35329,$35330,$35331,$35332,$35333,$35334,$35335,$35336),(nextval($35337),$35338,$35339,$35340,$35341,$35342,$35343,$35344,$35345,$35346,$35347,$35348,$35349,$35350),(nextval($35351),$35352,$35353,$35354,$35355,$35356,$35357,$35358,$35359,$35360,$35361,$35362,$35363,$35364),(nextval($35365),$35366,$35367,$35368,$35369,$35370,$35371,$35372,$35373,$35374,$35375,$35376,$35377,$35378),(nextval($35379),$35380,$35381,$35382,$35383,$35384,$35385,$35386,$35387,$35388,$35389,$35390,$35391,$35392),(nextval($35393),$35394,$35395,$35396,$35397,$35398,$35399,$35400,$35401,$35402,$35403,$35404,$35405,$35406),(nextval($35407),$35408,$35409,$35410,$35411,$35412,$35413,$35414,$35415,$35416,$35417,$35418,$35419,$35420),(nextval($35421),$35422,$35423,$35424,$35425,$35426,$35427,$35428,$35429,$35430,$35431,$35432,$35433,$35434),(nextval($35435),$35436,$35437,$35438,$35439,$35440,$35441,$35442,$35443,$35444,$35445,$35446,$35447,$35448),(nextval($35449),$35450,$35451,$35452,$35453,$35454,$35455,$35456,$35457,$35458,$35459,$35460,$35461,$35462),(nextval($35463),$35464,$35465,$35466,$35467,$35468,$35469,$35470,$35471,$35472,$35473,$35474,$35475,$35476),(nextval($35477),$35478,$35479,$35480,$35481,$35482,$35483,$35484,$35485,$35486,$35487,$35488,$35489,$35490),(nextval($35491),$35492,$35493,$35494,$35495,$35496,$35497,$35498,$35499,$35500,$35501,$35502,$35503,$35504),(nextval($35505),$35506,$35507,$35508,$35509,$35510,$35511,$35512,$35513,$35514,$35515,$35516,$35517,$35518),(nextval($35519),$35520,$35521,$35522,$35523,$35524,$35525,$35526,$35527,$35528,$35529,$35530,$35531,$35532),(nextval($35533),$35534,$35535,$35536,$35537,$35538,$35539,$35540,$35541,$35542,$35543,$35544,$35545,$35546),(nextval($35547),$35548,$35549,$35550,$35551,$35552,$35553,$35554,$35555,$35556,$35557,$35558,$35559,$35560),(nextval($35561),$35562,$35563,$35564,$35565,$35566,$35567,$35568,$35569,$35570,$35571,$35572,$35573,$35574),(nextval($35575),$35576,$35577,$35578,$35579,$35580,$35581,$35582,$35583,$35584,$35585,$35586,$35587,$35588),(nextval($35589),$35590,$35591,$35592,$35593,$35594,$35595,$35596,$35597,$35598,$35599,$35600,$35601,$35602),(nextval($35603),$35604,$35605,$35606,$35607,$35608,$35609,$35610,$35611,$35612,$35613,$35614,$35615,$35616),(nextval($35617),$35618,$35619,$35620,$35621,$35622,$35623,$35624,$35625,$35626,$35627,$35628,$35629,$35630),(nextval($35631),$35632,$35633,$35634,$35635,$35636,$35637,$35638,$35639,$35640,$35641,$35642,$35643,$35644),(nextval($35645),$35646,$35647,$35648,$35649,$35650,$35651,$35652,$35653,$35654,$35655,$35656,$35657,$35658),(nextval($35659),$35660,$35661,$35662,$35663,$35664,$35665,$35666,$35667,$35668,$35669,$35670,$35671,$35672),(nextval($35673),$35674,$35675,$35676,$35677,$35678,$35679,$35680,$35681,$35682,$35683,$35684,$35685,$35686),(nextval($35687),$35688,$35689,$35690,$35691,$35692,$35693,$35694,$35695,$35696,$35697,$35698,$35699,$35700),(nextval($35701),$35702,$35703,$35704,$35705,$35706,$35707,$35708,$35709,$35710,$35711,$35712,$35713,$35714),(nextval($35715),$35716,$35717,$35718,$35719,$35720,$35721,$35722,$35723,$35724,$35725,$35726,$35727,$35728),(nextval($35729),$35730,$35731,$35732,$35733,$35734,$35735,$35736,$35737,$35738,$35739,$35740,$35741,$35742),(nextval($35743),$35744,$35745,$35746,$35747,$35748,$35749,$35750,$35751,$35752,$35753,$35754,$35755,$35756),(nextval($35757),$35758,$35759,$35760,$35761,$35762,$35763,$35764,$35765,$35766,$35767,$35768,$35769,$35770),(nextval($35771),$35772,$35773,$35774,$35775,$35776,$35777,$35778,$35779,$35780,$35781,$35782,$35783,$35784),(nextval($35785),$35786,$35787,$35788,$35789,$35790,$35791,$35792,$35793,$35794,$35795,$35796,$35797,$35798),(nextval($35799),$35800,$35801,$35802,$35803,$35804,$35805,$35806,$35807,$35808,$35809,$35810,$35811,$35812),(nextval($35813),$35814,$35815,$35816,$35817,$35818,$35819,$35820,$35821,$35822,$35823,$35824,$35825,$35826),(nextval($35827),$35828,$35829,$35830,$35831,$35832,$35833,$35834,$35835,$35836,$35837,$35838,$35839,$35840),(nextval($35841),$35842,$35843,$35844,$35845,$35846,$35847,$35848,$35849,$35850,$35851,$35852,$35853,$35854),(nextval($35855),$35856,$35857,$35858,$35859,$35860,$35861,$35862,$35863,$35864,$35865,$35866,$35867,$35868),(nextval($35869),$35870,$35871,$35872,$35873,$35874,$35875,$35876,$35877,$35878,$35879,$35880,$35881,$35882),(nextval($35883),$35884,$35885,$35886,$35887,$35888,$35889,$35890,$35891,$35892,$35893,$35894,$35895,$35896),(nextval($35897),$35898,$35899,$35900,$35901,$35902,$35903,$35904,$35905,$35906,$35907,$35908,$35909,$35910),(nextval($35911),$35912,$35913,$35914,$35915,$35916,$35917,$35918,$35919,$35920,$35921,$35922,$35923,$35924),(nextval($35925),$35926,$35927,$35928,$35929,$35930,$35931,$35932,$35933,$35934,$35935,$35936,$35937,$35938),(nextval($35939),$35940,$35941,$35942,$35943,$35944,$35945,$35946,$35947,$35948,$35949,$35950,$35951,$35952),(nextval($35953),$35954,$35955,$35956,$35957,$35958,$35959,$35960,$35961,$35962,$35963,$35964,$35965,$35966),(nextval($35967),$35968,$35969,$35970,$35971,$35972,$35973,$35974,$35975,$35976,$35977,$35978,$35979,$35980),(nextval($35981),$35982,$35983,$35984,$35985,$35986,$35987,$35988,$35989,$35990,$35991,$35992,$35993,$35994),(nextval($35995),$35996,$35997,$35998,$35999,$36000,$36001,$36002,$36003,$36004,$36005,$36006,$36007,$36008),(nextval($36009),$36010,$36011,$36012,$36013,$36014,$36015,$36016,$36017,$36018,$36019,$36020,$36021,$36022),(nextval($36023),$36024,$36025,$36026,$36027,$36028,$36029,$36030,$36031,$36032,$36033,$36034,$36035,$36036),(nextval($36037),$36038,$36039,$36040,$36041,$36042,$36043,$36044,$36045,$36046,$36047,$36048,$36049,$36050),(nextval($36051),$36052,$36053,$36054,$36055,$36056,$36057,$36058,$36059,$36060,$36061,$36062,$36063,$36064),(nextval($36065),$36066,$36067,$36068,$36069,$36070,$36071,$36072,$36073,$36074,$36075,$36076,$36077,$36078),(nextval($36079),$36080,$36081,$36082,$36083,$36084,$36085,$36086,$36087,$36088,$36089,$36090,$36091,$36092),(nextval($36093),$36094,$36095,$36096,$36097,$36098,$36099,$36100,$36101,$36102,$36103,$36104,$36105,$36106),(nextval($36107),$36108,$36109,$36110,$36111,$36112,$36113,$36114,$36115,$36116,$36117,$36118,$36119,$36120),(nextval($36121),$36122,$36123,$36124,$36125,$36126,$36127,$36128,$36129,$36130,$36131,$36132,$36133,$36134),(nextval($36135),$36136,$36137,$36138,$36139,$36140,$36141,$36142,$36143,$36144,$36145,$36146,$36147,$36148),(nextval($36149),$36150,$36151,$36152,$36153,$36154,$36155,$36156,$36157,$36158,$36159,$36160,$36161,$36162),(nextval($36163),$36164,$36165,$36166,$36167,$36168,$36169,$36170,$36171,$36172,$36173,$36174,$36175,$36176),(nextval($36177),$36178,$36179,$36180,$36181,$36182,$36183,$36184,$36185,$36186,$36187,$36188,$36189,$36190),(nextval($36191),$36192,$36193,$36194,$36195,$36196,$36197,$36198,$36199,$36200,$36201,$36202,$36203,$36204),(nextval($36205),$36206,$36207,$36208,$36209,$36210,$36211,$36212,$36213,$36214,$36215,$36216,$36217,$36218),(nextval($36219),$36220,$36221,$36222,$36223,$36224,$36225,$36226,$36227,$36228,$36229,$36230,$36231,$36232),(nextval($36233),$36234,$36235,$36236,$36237,$36238,$36239,$36240,$36241,$36242,$36243,$36244,$36245,$36246),(nextval($36247),$36248,$36249,$36250,$36251,$36252,$36253,$36254,$36255,$36256,$36257,$36258,$36259,$36260),(nextval($36261),$36262,$36263,$36264,$36265,$36266,$36267,$36268,$36269,$36270,$36271,$36272,$36273,$36274),(nextval($36275),$36276,$36277,$36278,$36279,$36280,$36281,$36282,$36283,$36284,$36285,$36286,$36287,$36288),(nextval($36289),$36290,$36291,$36292,$36293,$36294,$36295,$36296,$36297,$36298,$36299,$36300,$36301,$36302),(nextval($36303),$36304,$36305,$36306,$36307,$36308,$36309,$36310,$36311,$36312,$36313,$36314,$36315,$36316),(nextval($36317),$36318,$36319,$36320,$36321,$36322,$36323,$36324,$36325,$36326,$36327,$36328,$36329,$36330),(nextval($36331),$36332,$36333,$36334,$36335,$36336,$36337,$36338,$36339,$36340,$36341,$36342,$36343,$36344),(nextval($36345),$36346,$36347,$36348,$36349,$36350,$36351,$36352,$36353,$36354,$36355,$36356,$36357,$36358),(nextval($36359),$36360,$36361,$36362,$36363,$36364,$36365,$36366,$36367,$36368,$36369,$36370,$36371,$36372),(nextval($36373),$36374,$36375,$36376,$36377,$36378,$36379,$36380,$36381,$36382,$36383,$36384,$36385,$36386),(nextval($36387),$36388,$36389,$36390,$36391,$36392,$36393,$36394,$36395,$36396,$36397,$36398,$36399,$36400),(nextval($36401),$36402,$36403,$36404,$36405,$36406,$36407,$36408,$36409,$36410,$36411,$36412,$36413,$36414),(nextval($36415),$36416,$36417,$36418,$36419,$36420,$36421,$36422,$36423,$36424,$36425,$36426,$36427,$36428),(nextval($36429),$36430,$36431,$36432,$36433,$36434,$36435,$36436,$36437,$36438,$36439,$36440,$36441,$36442),(nextval($36443),$36444,$36445,$36446,$36447,$36448,$36449,$36450,$36451,$36452,$36453,$36454,$36455,$36456),(nextval($36457),$36458,$36459,$36460,$36461,$36462,$36463,$36464,$36465,$36466,$36467,$36468,$36469,$36470),(nextval($36471),$36472,$36473,$36474,$36475,$36476,$36477,$36478,$36479,$36480,$36481,$36482,$36483,$36484),(nextval($36485),$36486,$36487,$36488,$36489,$36490,$36491,$36492,$36493,$36494,$36495,$36496,$36497,$36498),(nextval($36499),$36500,$36501,$36502,$36503,$36504,$36505,$36506,$36507,$36508,$36509,$36510,$36511,$36512),(nextval($36513),$36514,$36515,$36516,$36517,$36518,$36519,$36520,$36521,$36522,$36523,$36524,$36525,$36526),(nextval($36527),$36528,$36529,$36530,$36531,$36532,$36533,$36534,$36535,$36536,$36537,$36538,$36539,$36540),(nextval($36541),$36542,$36543,$36544,$36545,$36546,$36547,$36548,$36549,$36550,$36551,$36552,$36553,$36554),(nextval($36555),$36556,$36557,$36558,$36559,$36560,$36561,$36562,$36563,$36564,$36565,$36566,$36567,$36568),(nextval($36569),$36570,$36571,$36572,$36573,$36574,$36575,$36576,$36577,$36578,$36579,$36580,$36581,$36582),(nextval($36583),$36584,$36585,$36586,$36587,$36588,$36589,$36590,$36591,$36592,$36593,$36594,$36595,$36596),(nextval($36597),$36598,$36599,$36600,$36601,$36602,$36603,$36604,$36605,$36606,$36607,$36608,$36609,$36610),(nextval($36611),$36612,$36613,$36614,$36615,$36616,$36617,$36618,$36619,$36620,$36621,$36622,$36623,$36624),(nextval($36625),$36626,$36627,$36628,$36629,$36630,$36631,$36632,$36633,$36634,$36635,$36636,$36637,$36638),(nextval($36639),$36640,$36641,$36642,$36643,$36644,$36645,$36646,$36647,$36648,$36649,$36650,$36651,$36652),(nextval($36653),$36654,$36655,$36656,$36657,$36658,$36659,$36660,$36661,$36662,$36663,$36664,$36665,$36666),(nextval($36667),$36668,$36669,$36670,$36671,$36672,$36673,$36674,$36675,$36676,$36677,$36678,$36679,$36680),(nextval($36681),$36682,$36683,$36684,$36685,$36686,$36687,$36688,$36689,$36690,$36691,$36692,$36693,$36694),(nextval($36695),$36696,$36697,$36698,$36699,$36700,$36701,$36702,$36703,$36704,$36705,$36706,$36707,$36708),(nextval($36709),$36710,$36711,$36712,$36713,$36714,$36715,$36716,$36717,$36718,$36719,$36720,$36721,$36722),(nextval($36723),$36724,$36725,$36726,$36727,$36728,$36729,$36730,$36731,$36732,$36733,$36734,$36735,$36736),(nextval($36737),$36738,$36739,$36740,$36741,$36742,$36743,$36744,$36745,$36746,$36747,$36748,$36749,$36750),(nextval($36751),$36752,$36753,$36754,$36755,$36756,$36757,$36758,$36759,$36760,$36761,$36762,$36763,$36764),(nextval($36765),$36766,$36767,$36768,$36769,$36770,$36771,$36772,$36773,$36774,$36775,$36776,$36777,$36778),(nextval($36779),$36780,$36781,$36782,$36783,$36784,$36785,$36786,$36787,$36788,$36789,$36790,$36791,$36792),(nextval($36793),$36794,$36795,$36796,$36797,$36798,$36799,$36800,$36801,$36802,$36803,$36804,$36805,$36806),(nextval($36807),$36808,$36809,$36810,$36811,$36812,$36813,$36814,$36815,$36816,$36817,$36818,$36819,$36820),(nextval($36821),$36822,$36823,$36824,$36825,$36826,$36827,$36828,$36829,$36830,$36831,$36832,$36833,$36834),(nextval($36835),$36836,$36837,$36838,$36839,$36840,$36841,$36842,$36843,$36844,$36845,$36846,$36847,$36848),(nextval($36849),$36850,$36851,$36852,$36853,$36854,$36855,$36856,$36857,$36858,$36859,$36860,$36861,$36862),(nextval($36863),$36864,$36865,$36866,$36867,$36868,$36869,$36870,$36871,$36872,$36873,$36874,$36875,$36876),(nextval($36877),$36878,$36879,$36880,$36881,$36882,$36883,$36884,$36885,$36886,$36887,$36888,$36889,$36890),(nextval($36891),$36892,$36893,$36894,$36895,$36896,$36897,$36898,$36899,$36900,$36901,$36902,$36903,$36904),(nextval($36905),$36906,$36907,$36908,$36909,$36910,$36911,$36912,$36913,$36914,$36915,$36916,$36917,$36918),(nextval($36919),$36920,$36921,$36922,$36923,$36924,$36925,$36926,$36927,$36928,$36929,$36930,$36931,$36932),(nextval($36933),$36934,$36935,$36936,$36937,$36938,$36939,$36940,$36941,$36942,$36943,$36944,$36945,$36946),(nextval($36947),$36948,$36949,$36950,$36951,$36952,$36953,$36954,$36955,$36956,$36957,$36958,$36959,$36960),(nextval($36961),$36962,$36963,$36964,$36965,$36966,$36967,$36968,$36969,$36970,$36971,$36972,$36973,$36974),(nextval($36975),$36976,$36977,$36978,$36979,$36980,$36981,$36982,$36983,$36984,$36985,$36986,$36987,$36988),(nextval($36989),$36990,$36991,$36992,$36993,$36994,$36995,$36996,$36997,$36998,$36999,$37000,$37001,$37002),(nextval($37003),$37004,$37005,$37006,$37007,$37008,$37009,$37010,$37011,$37012,$37013,$37014,$37015,$37016),(nextval($37017),$37018,$37019,$37020,$37021,$37022,$37023,$37024,$37025,$37026,$37027,$37028,$37029,$37030),(nextval($37031),$37032,$37033,$37034,$37035,$37036,$37037,$37038,$37039,$37040,$37041,$37042,$37043,$37044),(nextval($37045),$37046,$37047,$37048,$37049,$37050,$37051,$37052,$37053,$37054,$37055,$37056,$37057,$37058),(nextval($37059),$37060,$37061,$37062,$37063,$37064,$37065,$37066,$37067,$37068,$37069,$37070,$37071,$37072),(nextval($37073),$37074,$37075,$37076,$37077,$37078,$37079,$37080,$37081,$37082,$37083,$37084,$37085,$37086),(nextval($37087),$37088,$37089,$37090,$37091,$37092,$37093,$37094,$37095,$37096,$37097,$37098,$37099,$37100),(nextval($37101),$37102,$37103,$37104,$37105,$37106,$37107,$37108,$37109,$37110,$37111,$37112,$37113,$37114),(nextval($37115),$37116,$37117,$37118,$37119,$37120,$37121,$37122,$37123,$37124,$37125,$37126,$37127,$37128),(nextval($37129),$37130,$37131,$37132,$37133,$37134,$37135,$37136,$37137,$37138,$37139,$37140,$37141,$37142),(nextval($37143),$37144,$37145,$37146,$37147,$37148,$37149,$37150,$37151,$37152,$37153,$37154,$37155,$37156),(nextval($37157),$37158,$37159,$37160,$37161,$37162,$37163,$37164,$37165,$37166,$37167,$37168,$37169,$37170),(nextval($37171),$37172,$37173,$37174,$37175,$37176,$37177,$37178,$37179,$37180,$37181,$37182,$37183,$37184),(nextval($37185),$37186,$37187,$37188,$37189,$37190,$37191,$37192,$37193,$37194,$37195,$37196,$37197,$37198),(nextval($37199),$37200,$37201,$37202,$37203,$37204,$37205,$37206,$37207,$37208,$37209,$37210,$37211,$37212),(nextval($37213),$37214,$37215,$37216,$37217,$37218,$37219,$37220,$37221,$37222,$37223,$37224,$37225,$37226),(nextval($37227),$37228,$37229,$37230,$37231,$37232,$37233,$37234,$37235,$37236,$37237,$37238,$37239,$37240),(nextval($37241),$37242,$37243,$37244,$37245,$37246,$37247,$37248,$37249,$37250,$37251,$37252,$37253,$37254),(nextval($37255),$37256,$37257,$37258,$37259,$37260,$37261,$37262,$37263,$37264,$37265,$37266,$37267,$37268),(nextval($37269),$37270,$37271,$37272,$37273,$37274,$37275,$37276,$37277,$37278,$37279,$37280,$37281,$37282),(nextval($37283),$37284,$37285,$37286,$37287,$37288,$37289,$37290,$37291,$37292,$37293,$37294,$37295,$37296),(nextval($37297),$37298,$37299,$37300,$37301,$37302,$37303,$37304,$37305,$37306,$37307,$37308,$37309,$37310),(nextval($37311),$37312,$37313,$37314,$37315,$37316,$37317,$37318,$37319,$37320,$37321,$37322,$37323,$37324),(nextval($37325),$37326,$37327,$37328,$37329,$37330,$37331,$37332,$37333,$37334,$37335,$37336,$37337,$37338),(nextval($37339),$37340,$37341,$37342,$37343,$37344,$37345,$37346,$37347,$37348,$37349,$37350,$37351,$37352),(nextval($37353),$37354,$37355,$37356,$37357,$37358,$37359,$37360,$37361,$37362,$37363,$37364,$37365,$37366),(nextval($37367),$37368,$37369,$37370,$37371,$37372,$37373,$37374,$37375,$37376,$37377,$37378,$37379,$37380),(nextval($37381),$37382,$37383,$37384,$37385,$37386,$37387,$37388,$37389,$37390,$37391,$37392,$37393,$37394),(nextval($37395),$37396,$37397,$37398,$37399,$37400,$37401,$37402,$37403,$37404,$37405,$37406,$37407,$37408),(nextval($37409),$37410,$37411,$37412,$37413,$37414,$37415,$37416,$37417,$37418,$37419,$37420,$37421,$37422),(nextval($37423),$37424,$37425,$37426,$37427,$37428,$37429,$37430,$37431,$37432,$37433,$37434,$37435,$37436),(nextval($37437),$37438,$37439,$37440,$37441,$37442,$37443,$37444,$37445,$37446,$37447,$37448,$37449,$37450),(nextval($37451),$37452,$37453,$37454,$37455,$37456,$37457,$37458,$37459,$37460,$37461,$37462,$37463,$37464),(nextval($37465),$37466,$37467,$37468,$37469,$37470,$37471,$37472,$37473,$37474,$37475,$37476,$37477,$37478),(nextval($37479),$37480,$37481,$37482,$37483,$37484,$37485,$37486,$37487,$37488,$37489,$37490,$37491,$37492),(nextval($37493),$37494,$37495,$37496,$37497,$37498,$37499,$37500,$37501,$37502,$37503,$37504,$37505,$37506),(nextval($37507),$37508,$37509,$37510,$37511,$37512,$37513,$37514,$37515,$37516,$37517,$37518,$37519,$37520),(nextval($37521),$37522,$37523,$37524,$37525,$37526,$37527,$37528,$37529,$37530,$37531,$37532,$37533,$37534),(nextval($37535),$37536,$37537,$37538,$37539,$37540,$37541,$37542,$37543,$37544,$37545,$37546,$37547,$37548),(nextval($37549),$37550,$37551,$37552,$37553,$37554,$37555,$37556,$37557,$37558,$37559,$37560,$37561,$37562),(nextval($37563),$37564,$37565,$37566,$37567,$37568,$37569,$37570,$37571,$37572,$37573,$37574,$37575,$37576),(nextval($37577),$37578,$37579,$37580,$37581,$37582,$37583,$37584,$37585,$37586,$37587,$37588,$37589,$37590),(nextval($37591),$37592,$37593,$37594,$37595,$37596,$37597,$37598,$37599,$37600,$37601,$37602,$37603,$37604),(nextval($37605),$37606,$37607,$37608,$37609,$37610,$37611,$37612,$37613,$37614,$37615,$37616,$37617,$37618),(nextval($37619),$37620,$37621,$37622,$37623,$37624,$37625,$37626,$37627,$37628,$37629,$37630,$37631,$37632),(nextval($37633),$37634,$37635,$37636,$37637,$37638,$37639,$37640,$37641,$37642,$37643,$37644,$37645,$37646),(nextval($37647),$37648,$37649,$37650,$37651,$37652,$37653,$37654,$37655,$37656,$37657,$37658,$37659,$37660),(nextval($37661),$37662,$37663,$37664,$37665,$37666,$37667,$37668,$37669,$37670,$37671,$37672,$37673,$37674),(nextval($37675),$37676,$37677,$37678,$37679,$37680,$37681,$37682,$37683,$37684,$37685,$37686,$37687,$37688),(nextval($37689),$37690,$37691,$37692,$37693,$37694,$37695,$37696,$37697,$37698,$37699,$37700,$37701,$37702),(nextval($37703),$37704,$37705,$37706,$37707,$37708,$37709,$37710,$37711,$37712,$37713,$37714,$37715,$37716),(nextval($37717),$37718,$37719,$37720,$37721,$37722,$37723,$37724,$37725,$37726,$37727,$37728,$37729,$37730),(nextval($37731),$37732,$37733,$37734,$37735,$37736,$37737,$37738,$37739,$37740,$37741,$37742,$37743,$37744),(nextval($37745),$37746,$37747,$37748,$37749,$37750,$37751,$37752,$37753,$37754,$37755,$37756,$37757,$37758),(nextval($37759),$37760,$37761,$37762,$37763,$37764,$37765,$37766,$37767,$37768,$37769,$37770,$37771,$37772),(nextval($37773),$37774,$37775,$37776,$37777,$37778,$37779,$37780,$37781,$37782,$37783,$37784,$37785,$37786),(nextval($37787),$37788,$37789,$37790,$37791,$37792,$37793,$37794,$37795,$37796,$37797,$37798,$37799,$37800),(nextval($37801),$37802,$37803,$37804,$37805,$37806,$37807,$37808,$37809,$37810,$37811,$37812,$37813,$37814),(nextval($37815),$37816,$37817,$37818,$37819,$37820,$37821,$37822,$37823,$37824,$37825,$37826,$37827,$37828),(nextval($37829),$37830,$37831,$37832,$37833,$37834,$37835,$37836,$37837,$37838,$37839,$37840,$37841,$37842),(nextval($37843),$37844,$37845,$37846,$37847,$37848,$37849,$37850,$37851,$37852,$37853,$37854,$37855,$37856),(nextval($37857),$37858,$37859,$37860,$37861,$37862,$37863,$37864,$37865,$37866,$37867,$37868,$37869,$37870),(nextval($37871),$37872,$37873,$37874,$37875,$37876,$37877,$37878,$37879,$37880,$37881,$37882,$37883,$37884),(nextval($37885),$37886,$37887,$37888,$37889,$37890,$37891,$37892,$37893,$37894,$37895,$37896,$37897,$37898),(nextval($37899),$37900,$37901,$37902,$37903,$37904,$37905,$37906,$37907,$37908,$37909,$37910,$37911,$37912),(nextval($37913),$37914,$37915,$37916,$37917,$37918,$37919,$37920,$37921,$37922,$37923,$37924,$37925,$37926),(nextval($37927),$37928,$37929,$37930,$37931,$37932,$37933,$37934,$37935,$37936,$37937,$37938,$37939,$37940),(nextval($37941),$37942,$37943,$37944,$37945,$37946,$37947,$37948,$37949,$37950,$37951,$37952,$37953,$37954),(nextval($37955),$37956,$37957,$37958,$37959,$37960,$37961,$37962,$37963,$37964,$37965,$37966,$37967,$37968),(nextval($37969),$37970,$37971,$37972,$37973,$37974,$37975,$37976,$37977,$37978,$37979,$37980,$37981,$37982),(nextval($37983),$37984,$37985,$37986,$37987,$37988,$37989,$37990,$37991,$37992,$37993,$37994,$37995,$37996),(nextval($37997),$37998,$37999,$38000,$38001,$38002,$38003,$38004,$38005,$38006,$38007,$38008,$38009,$38010),(nextval($38011),$38012,$38013,$38014,$38015,$38016,$38017,$38018,$38019,$38020,$38021,$38022,$38023,$38024),(nextval($38025),$38026,$38027,$38028,$38029,$38030,$38031,$38032,$38033,$38034,$38035,$38036,$38037,$38038),(nextval($38039),$38040,$38041,$38042,$38043,$38044,$38045,$38046,$38047,$38048,$38049,$38050,$38051,$38052),(nextval($38053),$38054,$38055,$38056,$38057,$38058,$38059,$38060,$38061,$38062,$38063,$38064,$38065,$38066),(nextval($38067),$38068,$38069,$38070,$38071,$38072,$38073,$38074,$38075,$38076,$38077,$38078,$38079,$38080),(nextval($38081),$38082,$38083,$38084,$38085,$38086,$38087,$38088,$38089,$38090,$38091,$38092,$38093,$38094),(nextval($38095),$38096,$38097,$38098,$38099,$38100,$38101,$38102,$38103,$38104,$38105,$38106,$38107,$38108),(nextval($38109),$38110,$38111,$38112,$38113,$38114,$38115,$38116,$38117,$38118,$38119,$38120,$38121,$38122),(nextval($38123),$38124,$38125,$38126,$38127,$38128,$38129,$38130,$38131,$38132,$38133,$38134,$38135,$38136),(nextval($38137),$38138,$38139,$38140,$38141,$38142,$38143,$38144,$38145,$38146,$38147,$38148,$38149,$38150),(nextval($38151),$38152,$38153,$38154,$38155,$38156,$38157,$38158,$38159,$38160,$38161,$38162,$38163,$38164),(nextval($38165),$38166,$38167,$38168,$38169,$38170,$38171,$38172,$38173,$38174,$38175,$38176,$38177,$38178),(nextval($38179),$38180,$38181,$38182,$38183,$38184,$38185,$38186,$38187,$38188,$38189,$38190,$38191,$38192),(nextval($38193),$38194,$38195,$38196,$38197,$38198,$38199,$38200,$38201,$38202,$38203,$38204,$38205,$38206),(nextval($38207),$38208,$38209,$38210,$38211,$38212,$38213,$38214,$38215,$38216,$38217,$38218,$38219,$38220),(nextval($38221),$38222,$38223,$38224,$38225,$38226,$38227,$38228,$38229,$38230,$38231,$38232,$38233,$38234),(nextval($38235),$38236,$38237,$38238,$38239,$38240,$38241,$38242,$38243,$38244,$38245,$38246,$38247,$38248),(nextval($38249),$38250,$38251,$38252,$38253,$38254,$38255,$38256,$38257,$38258,$38259,$38260,$38261,$38262),(nextval($38263),$38264,$38265,$38266,$38267,$38268,$38269,$38270,$38271,$38272,$38273,$38274,$38275,$38276),(nextval($38277),$38278,$38279,$38280,$38281,$38282,$38283,$38284,$38285,$38286,$38287,$38288,$38289,$38290),(nextval($38291),$38292,$38293,$38294,$38295,$38296,$38297,$38298,$38299,$38300,$38301,$38302,$38303,$38304),(nextval($38305),$38306,$38307,$38308,$38309,$38310,$38311,$38312,$38313,$38314,$38315,$38316,$38317,$38318),(nextval($38319),$38320,$38321,$38322,$38323,$38324,$38325,$38326,$38327,$38328,$38329,$38330,$38331,$38332),(nextval($38333),$38334,$38335,$38336,$38337,$38338,$38339,$38340,$38341,$38342,$38343,$38344,$38345,$38346),(nextval($38347),$38348,$38349,$38350,$38351,$38352,$38353,$38354,$38355,$38356,$38357,$38358,$38359,$38360),(nextval($38361),$38362,$38363,$38364,$38365,$38366,$38367,$38368,$38369,$38370,$38371,$38372,$38373,$38374),(nextval($38375),$38376,$38377,$38378,$38379,$38380,$38381,$38382,$38383,$38384,$38385,$38386,$38387,$38388),(nextval($38389),$38390,$38391,$38392,$38393,$38394,$38395,$38396,$38397,$38398,$38399,$38400,$38401,$38402),(nextval($38403),$38404,$38405,$38406,$38407,$38408,$38409,$38410,$38411,$38412,$38413,$38414,$38415,$38416),(nextval($38417),$38418,$38419,$38420,$38421,$38422,$38423,$38424,$38425,$38426,$38427,$38428,$38429,$38430),(nextval($38431),$38432,$38433,$38434,$38435,$38436,$38437,$38438,$38439,$38440,$38441,$38442,$38443,$38444),(nextval($38445),$38446,$38447,$38448,$38449,$38450,$38451,$38452,$38453,$38454,$38455,$38456,$38457,$38458),(nextval($38459),$38460,$38461,$38462,$38463,$38464,$38465,$38466,$38467,$38468,$38469,$38470,$38471,$38472),(nextval($38473),$38474,$38475,$38476,$38477,$38478,$38479,$38480,$38481,$38482,$38483,$38484,$38485,$38486),(nextval($38487),$38488,$38489,$38490,$38491,$38492,$38493,$38494,$38495,$38496,$38497,$38498,$38499,$38500),(nextval($38501),$38502,$38503,$38504,$38505,$38506,$38507,$38508,$38509,$38510,$38511,$38512,$38513,$38514),(nextval($38515),$38516,$38517,$38518,$38519,$38520,$38521,$38522,$38523,$38524,$38525,$38526,$38527,$38528),(nextval($38529),$38530,$38531,$38532,$38533,$38534,$38535,$38536,$38537,$38538,$38539,$38540,$38541,$38542),(nextval($38543),$38544,$38545,$38546,$38547,$38548,$38549,$38550,$38551,$38552,$38553,$38554,$38555,$38556),(nextval($38557),$38558,$38559,$38560,$38561,$38562,$38563,$38564,$38565,$38566,$38567,$38568,$38569,$38570),(nextval($38571),$38572,$38573,$38574,$38575,$38576,$38577,$38578,$38579,$38580,$38581,$38582,$38583,$38584),(nextval($38585),$38586,$38587,$38588,$38589,$38590,$38591,$38592,$38593,$38594,$38595,$38596,$38597,$38598),(nextval($38599),$38600,$38601,$38602,$38603,$38604,$38605,$38606,$38607,$38608,$38609,$38610,$38611,$38612),(nextval($38613),$38614,$38615,$38616,$38617,$38618,$38619,$38620,$38621,$38622,$38623,$38624,$38625,$38626),(nextval($38627),$38628,$38629,$38630,$38631,$38632,$38633,$38634,$38635,$38636,$38637,$38638,$38639,$38640),(nextval($38641),$38642,$38643,$38644,$38645,$38646,$38647,$38648,$38649,$38650,$38651,$38652,$38653,$38654),(nextval($38655),$38656,$38657,$38658,$38659,$38660,$38661,$38662,$38663,$38664,$38665,$38666,$38667,$38668),(nextval($38669),$38670,$38671,$38672,$38673,$38674,$38675,$38676,$38677,$38678,$38679,$38680,$38681,$38682),(nextval($38683),$38684,$38685,$38686,$38687,$38688,$38689,$38690,$38691,$38692,$38693,$38694,$38695,$38696),(nextval($38697),$38698,$38699,$38700,$38701,$38702,$38703,$38704,$38705,$38706,$38707,$38708,$38709,$38710),(nextval($38711),$38712,$38713,$38714,$38715,$38716,$38717,$38718,$38719,$38720,$38721,$38722,$38723,$38724),(nextval($38725),$38726,$38727,$38728,$38729,$38730,$38731,$38732,$38733,$38734,$38735,$38736,$38737,$38738),(nextval($38739),$38740,$38741,$38742,$38743,$38744,$38745,$38746,$38747,$38748,$38749,$38750,$38751,$38752),(nextval($38753),$38754,$38755,$38756,$38757,$38758,$38759,$38760,$38761,$38762,$38763,$38764,$38765,$38766),(nextval($38767),$38768,$38769,$38770,$38771,$38772,$38773,$38774,$38775,$38776,$38777,$38778,$38779,$38780),(nextval($38781),$38782,$38783,$38784,$38785,$38786,$38787,$38788,$38789,$38790,$38791,$38792,$38793,$38794),(nextval($38795),$38796,$38797,$38798,$38799,$38800,$38801,$38802,$38803,$38804,$38805,$38806,$38807,$38808),(nextval($38809),$38810,$38811,$38812,$38813,$38814,$38815,$38816,$38817,$38818,$38819,$38820,$38821,$38822),(nextval($38823),$38824,$38825,$38826,$38827,$38828,$38829,$38830,$38831,$38832,$38833,$38834,$38835,$38836),(nextval($38837),$38838,$38839,$38840,$38841,$38842,$38843,$38844,$38845,$38846,$38847,$38848,$38849,$38850),(nextval($38851),$38852,$38853,$38854,$38855,$38856,$38857,$38858,$38859,$38860,$38861,$38862,$38863,$38864),(nextval($38865),$38866,$38867,$38868,$38869,$38870,$38871,$38872,$38873,$38874,$38875,$38876,$38877,$38878),(nextval($38879),$38880,$38881,$38882,$38883,$38884,$38885,$38886,$38887,$38888,$38889,$38890,$38891,$38892),(nextval($38893),$38894,$38895,$38896,$38897,$38898,$38899,$38900,$38901,$38902,$38903,$38904,$38905,$38906),(nextval($38907),$38908,$38909,$38910,$38911,$38912,$38913,$38914,$38915,$38916,$38917,$38918,$38919,$38920),(nextval($38921),$38922,$38923,$38924,$38925,$38926,$38927,$38928,$38929,$38930,$38931,$38932,$38933,$38934),(nextval($38935),$38936,$38937,$38938,$38939,$38940,$38941,$38942,$38943,$38944,$38945,$38946,$38947,$38948),(nextval($38949),$38950,$38951,$38952,$38953,$38954,$38955,$38956,$38957,$38958,$38959,$38960,$38961,$38962),(nextval($38963),$38964,$38965,$38966,$38967,$38968,$38969,$38970,$38971,$38972,$38973,$38974,$38975,$38976),(nextval($38977),$38978,$38979,$38980,$38981,$38982,$38983,$38984,$38985,$38986,$38987,$38988,$38989,$38990),(nextval($38991),$38992,$38993,$38994,$38995,$38996,$38997,$38998,$38999,$39000,$39001,$39002,$39003,$39004),(nextval($39005),$39006,$39007,$39008,$39009,$39010,$39011,$39012,$39013,$39014,$39015,$39016,$39017,$39018),(nextval($39019),$39020,$39021,$39022,$39023,$39024,$39025,$39026,$39027,$39028,$39029,$39030,$39031,$39032),(nextval($39033),$39034,$39035,$39036,$39037,$39038,$39039,$39040,$39041,$39042,$39043,$39044,$39045,$39046),(nextval($39047),$39048,$39049,$39050,$39051,$39052,$39053,$39054,$39055,$39056,$39057,$39058,$39059,$39060),(nextval($39061),$39062,$39063,$39064,$39065,$39066,$39067,$39068,$39069,$39070,$39071,$39072,$39073,$39074),(nextval($39075),$39076,$39077,$39078,$39079,$39080,$39081,$39082,$39083,$39084,$39085,$39086,$39087,$39088),(nextval($39089),$39090,$39091,$39092,$39093,$39094,$39095,$39096,$39097,$39098,$39099,$39100,$39101,$39102),(nextval($39103),$39104,$39105,$39106,$39107,$39108,$39109,$39110,$39111,$39112,$39113,$39114,$39115,$39116),(nextval($39117),$39118,$39119,$39120,$39121,$39122,$39123,$39124,$39125,$39126,$39127,$39128,$39129,$39130),(nextval($39131),$39132,$39133,$39134,$39135,$39136,$39137,$39138,$39139,$39140,$39141,$39142,$39143,$39144),(nextval($39145),$39146,$39147,$39148,$39149,$39150,$39151,$39152,$39153,$39154,$39155,$39156,$39157,$39158),(nextval($39159),$39160,$39161,$39162,$39163,$39164,$39165,$39166,$39167,$39168,$39169,$39170,$39171,$39172),(nextval($39173),$39174,$39175,$39176,$39177,$39178,$39179,$39180,$39181,$39182,$39183,$39184,$39185,$39186),(nextval($39187),$39188,$39189,$39190,$39191,$39192,$39193,$39194,$39195,$39196,$39197,$39198,$39199,$39200),(nextval($39201),$39202,$39203,$39204,$39205,$39206,$39207,$39208,$39209,$39210,$39211,$39212,$39213,$39214),(nextval($39215),$39216,$39217,$39218,$39219,$39220,$39221,$39222,$39223,$39224,$39225,$39226,$39227,$39228),(nextval($39229),$39230,$39231,$39232,$39233,$39234,$39235,$39236,$39237,$39238,$39239,$39240,$39241,$39242),(nextval($39243),$39244,$39245,$39246,$39247,$39248,$39249,$39250,$39251,$39252,$39253,$39254,$39255,$39256),(nextval($39257),$39258,$39259,$39260,$39261,$39262,$39263,$39264,$39265,$39266,$39267,$39268,$39269,$39270),(nextval($39271),$39272,$39273,$39274,$39275,$39276,$39277,$39278,$39279,$39280,$39281,$39282,$39283,$39284),(nextval($39285),$39286,$39287,$39288,$39289,$39290,$39291,$39292,$39293,$39294,$39295,$39296,$39297,$39298),(nextval($39299),$39300,$39301,$39302,$39303,$39304,$39305,$39306,$39307,$39308,$39309,$39310,$39311,$39312),(nextval($39313),$39314,$39315,$39316,$39317,$39318,$39319,$39320,$39321,$39322,$39323,$39324,$39325,$39326),(nextval($39327),$39328,$39329,$39330,$39331,$39332,$39333,$39334,$39335,$39336,$39337,$39338,$39339,$39340),(nextval($39341),$39342,$39343,$39344,$39345,$39346,$39347,$39348,$39349,$39350,$39351,$39352,$39353,$39354),(nextval($39355),$39356,$39357,$39358,$39359,$39360,$39361,$39362,$39363,$39364,$39365,$39366,$39367,$39368),(nextval($39369),$39370,$39371,$39372,$39373,$39374,$39375,$39376,$39377,$39378,$39379,$39380,$39381,$39382),(nextval($39383),$39384,$39385,$39386,$39387,$39388,$39389,$39390,$39391,$39392,$39393,$39394,$39395,$39396),(nextval($39397),$39398,$39399,$39400,$39401,$39402,$39403,$39404,$39405,$39406,$39407,$39408,$39409,$39410),(nextval($39411),$39412,$39413,$39414,$39415,$39416,$39417,$39418,$39419,$39420,$39421,$39422,$39423,$39424),(nextval($39425),$39426,$39427,$39428,$39429,$39430,$39431,$39432,$39433,$39434,$39435,$39436,$39437,$39438),(nextval($39439),$39440,$39441,$39442,$39443,$39444,$39445,$39446,$39447,$39448,$39449,$39450,$39451,$39452),(nextval($39453),$39454,$39455,$39456,$39457,$39458,$39459,$39460,$39461,$39462,$39463,$39464,$39465,$39466),(nextval($39467),$39468,$39469,$39470,$39471,$39472,$39473,$39474,$39475,$39476,$39477,$39478,$39479,$39480),(nextval($39481),$39482,$39483,$39484,$39485,$39486,$39487,$39488,$39489,$39490,$39491,$39492,$39493,$39494),(nextval($39495),$39496,$39497,$39498,$39499,$39500,$39501,$39502,$39503,$39504,$39505,$39506,$39507,$39508),(nextval($39509),$39510,$39511,$39512,$39513,$39514,$39515,$39516,$39517,$39518,$39519,$39520,$39521,$39522),(nextval($39523),$39524,$39525,$39526,$39527,$39528,$39529,$39530,$39531,$39532,$39533,$39534,$39535,$39536),(nextval($39537),$39538,$39539,$39540,$39541,$39542,$39543,$39544,$39545,$39546,$39547,$39548,$39549,$39550),(nextval($39551),$39552,$39553,$39554,$39555,$39556,$39557,$39558,$39559,$39560,$39561,$39562,$39563,$39564),(nextval($39565),$39566,$39567,$39568,$39569,$39570,$39571,$39572,$39573,$39574,$39575,$39576,$39577,$39578),(nextval($39579),$39580,$39581,$39582,$39583,$39584,$39585,$39586,$39587,$39588,$39589,$39590,$39591,$39592),(nextval($39593),$39594,$39595,$39596,$39597,$39598,$39599,$39600,$39601,$39602,$39603,$39604,$39605,$39606),(nextval($39607),$39608,$39609,$39610,$39611,$39612,$39613,$39614,$39615,$39616,$39617,$39618,$39619,$39620),(nextval($39621),$39622,$39623,$39624,$39625,$39626,$39627,$39628,$39629,$39630,$39631,$39632,$39633,$39634),(nextval($39635),$39636,$39637,$39638,$39639,$39640,$39641,$39642,$39643,$39644,$39645,$39646,$39647,$39648),(nextval($39649),$39650,$39651,$39652,$39653,$39654,$39655,$39656,$39657,$39658,$39659,$39660,$39661,$39662),(nextval($39663),$39664,$39665,$39666,$39667,$39668,$39669,$39670,$39671,$39672,$39673,$39674,$39675,$39676),(nextval($39677),$39678,$39679,$39680,$39681,$39682,$39683,$39684,$39685,$39686,$39687,$39688,$39689,$39690),(nextval($39691),$39692,$39693,$39694,$39695,$39696,$39697,$39698,$39699,$39700,$39701,$39702,$39703,$39704),(nextval($39705),$39706,$39707,$39708,$39709,$39710,$39711,$39712,$39713,$39714,$39715,$39716,$39717,$39718),(nextval($39719),$39720,$39721,$39722,$39723,$39724,$39725,$39726,$39727,$39728,$39729,$39730,$39731,$39732),(nextval($39733),$39734,$39735,$39736,$39737,$39738,$39739,$39740,$39741,$39742,$39743,$39744,$39745,$39746),(nextval($39747),$39748,$39749,$39750,$39751,$39752,$39753,$39754,$39755,$39756,$39757,$39758,$39759,$39760),(nextval($39761),$39762,$39763,$39764,$39765,$39766,$39767,$39768,$39769,$39770,$39771,$39772,$39773,$39774),(nextval($39775),$39776,$39777,$39778,$39779,$39780,$39781,$39782,$39783,$39784,$39785,$39786,$39787,$39788),(nextval($39789),$39790,$39791,$39792,$39793,$39794,$39795,$39796,$39797,$39798,$39799,$39800,$39801,$39802),(nextval($39803),$39804,$39805,$39806,$39807,$39808,$39809,$39810,$39811,$39812,$39813,$39814,$39815,$39816),(nextval($39817),$39818,$39819,$39820,$39821,$39822,$39823,$39824,$39825,$39826,$39827,$39828,$39829,$39830),(nextval($39831),$39832,$39833,$39834,$39835,$39836,$39837,$39838,$39839,$39840,$39841,$39842,$39843,$39844),(nextval($39845),$39846,$39847,$39848,$39849,$39850,$39851,$39852,$39853,$39854,$39855,$39856,$39857,$39858),(nextval($39859),$39860,$39861,$39862,$39863,$39864,$39865,$39866,$39867,$39868,$39869,$39870,$39871,$39872),(nextval($39873),$39874,$39875,$39876,$39877,$39878,$39879,$39880,$39881,$39882,$39883,$39884,$39885,$39886),(nextval($39887),$39888,$39889,$39890,$39891,$39892,$39893,$39894,$39895,$39896,$39897,$39898,$39899,$39900),(nextval($39901),$39902,$39903,$39904,$39905,$39906,$39907,$39908,$39909,$39910,$39911,$39912,$39913,$39914),(nextval($39915),$39916,$39917,$39918,$39919,$39920,$39921,$39922,$39923,$39924,$39925,$39926,$39927,$39928),(nextval($39929),$39930,$39931,$39932,$39933,$39934,$39935,$39936,$39937,$39938,$39939,$39940,$39941,$39942),(nextval($39943),$39944,$39945,$39946,$39947,$39948,$39949,$39950,$39951,$39952,$39953,$39954,$39955,$39956),(nextval($39957),$39958,$39959,$39960,$39961,$39962,$39963,$39964,$39965,$39966,$39967,$39968,$39969,$39970),(nextval($39971),$39972,$39973,$39974,$39975,$39976,$39977,$39978,$39979,$39980,$39981,$39982,$39983,$39984),(nextval($39985),$39986,$39987,$39988,$39989,$39990,$39991,$39992,$39993,$39994,$39995,$39996,$39997,$39998),(nextval($39999),$40000,$40001,$40002,$40003,$40004,$40005,$40006,$40007,$40008,$40009,$40010,$40011,$40012),(nextval($40013),$40014,$40015,$40016,$40017,$40018,$40019,$40020,$40021,$40022,$40023,$40024,$40025,$40026),(nextval($40027),$40028,$40029,$40030,$40031,$40032,$40033,$40034,$40035,$40036,$40037,$40038,$40039,$40040),(nextval($40041),$40042,$40043,$40044,$40045,$40046,$40047,$40048,$40049,$40050,$40051,$40052,$40053,$40054),(nextval($40055),$40056,$40057,$40058,$40059,$40060,$40061,$40062,$40063,$40064,$40065,$40066,$40067,$40068),(nextval($40069),$40070,$40071,$40072,$40073,$40074,$40075,$40076,$40077,$40078,$40079,$40080,$40081,$40082),(nextval($40083),$40084,$40085,$40086,$40087,$40088,$40089,$40090,$40091,$40092,$40093,$40094,$40095,$40096),(nextval($40097),$40098,$40099,$40100,$40101,$40102,$40103,$40104,$40105,$40106,$40107,$40108,$40109,$40110),(nextval($40111),$40112,$40113,$40114,$40115,$40116,$40117,$40118,$40119,$40120,$40121,$40122,$40123,$40124),(nextval($40125),$40126,$40127,$40128,$40129,$40130,$40131,$40132,$40133,$40134,$40135,$40136,$40137,$40138),(nextval($40139),$40140,$40141,$40142,$40143,$40144,$40145,$40146,$40147,$40148,$40149,$40150,$40151,$40152),(nextval($40153),$40154,$40155,$40156,$40157,$40158,$40159,$40160,$40161,$40162,$40163,$40164,$40165,$40166),(nextval($40167),$40168,$40169,$40170,$40171,$40172,$40173,$40174,$40175,$40176,$40177,$40178,$40179,$40180),(nextval($40181),$40182,$40183,$40184,$40185,$40186,$40187,$40188,$40189,$40190,$40191,$40192,$40193,$40194),(nextval($40195),$40196,$40197,$40198,$40199,$40200,$40201,$40202,$40203,$40204,$40205,$40206,$40207,$40208),(nextval($40209),$40210,$40211,$40212,$40213,$40214,$40215,$40216,$40217,$40218,$40219,$40220,$40221,$40222),(nextval($40223),$40224,$40225,$40226,$40227,$40228,$40229,$40230,$40231,$40232,$40233,$40234,$40235,$40236),(nextval($40237),$40238,$40239,$40240,$40241,$40242,$40243,$40244,$40245,$40246,$40247,$40248,$40249,$40250),(nextval($40251),$40252,$40253,$40254,$40255,$40256,$40257,$40258,$40259,$40260,$40261,$40262,$40263,$40264),(nextval($40265),$40266,$40267,$40268,$40269,$40270,$40271,$40272,$40273,$40274,$40275,$40276,$40277,$40278),(nextval($40279),$40280,$40281,$40282,$40283,$40284,$40285,$40286,$40287,$40288,$40289,$40290,$40291,$40292),(nextval($40293),$40294,$40295,$40296,$40297,$40298,$40299,$40300,$40301,$40302,$40303,$40304,$40305,$40306),(nextval($40307),$40308,$40309,$40310,$40311,$40312,$40313,$40314,$40315,$40316,$40317,$40318,$40319,$40320),(nextval($40321),$40322,$40323,$40324,$40325,$40326,$40327,$40328,$40329,$40330,$40331,$40332,$40333,$40334),(nextval($40335),$40336,$40337,$40338,$40339,$40340,$40341,$40342,$40343,$40344,$40345,$40346,$40347,$40348),(nextval($40349),$40350,$40351,$40352,$40353,$40354,$40355,$40356,$40357,$40358,$40359,$40360,$40361,$40362),(nextval($40363),$40364,$40365,$40366,$40367,$40368,$40369,$40370,$40371,$40372,$40373,$40374,$40375,$40376),(nextval($40377),$40378,$40379,$40380,$40381,$40382,$40383,$40384,$40385,$40386,$40387,$40388,$40389,$40390),(nextval($40391),$40392,$40393,$40394,$40395,$40396,$40397,$40398,$40399,$40400,$40401,$40402,$40403,$40404),(nextval($40405),$40406,$40407,$40408,$40409,$40410,$40411,$40412,$40413,$40414,$40415,$40416,$40417,$40418),(nextval($40419),$40420,$40421,$40422,$40423,$40424,$40425,$40426,$40427,$40428,$40429,$40430,$40431,$40432),(nextval($40433),$40434,$40435,$40436,$40437,$40438,$40439,$40440,$40441,$40442,$40443,$40444,$40445,$40446),(nextval($40447),$40448,$40449,$40450,$40451,$40452,$40453,$40454,$40455,$40456,$40457,$40458,$40459,$40460),(nextval($40461),$40462,$40463,$40464,$40465,$40466,$40467,$40468,$40469,$40470,$40471,$40472,$40473,$40474),(nextval($40475),$40476,$40477,$40478,$40479,$40480,$40481,$40482,$40483,$40484,$40485,$40486,$40487,$40488),(nextval($40489),$40490,$40491,$40492,$40493,$40494,$40495,$40496,$40497,$40498,$40499,$40500,$40501,$40502),(nextval($40503),$40504,$40505,$40506,$40507,$40508,$40509,$40510,$40511,$40512,$40513,$40514,$40515,$40516),(nextval($40517),$40518,$40519,$40520,$40521,$40522,$40523,$40524,$40525,$40526,$40527,$40528,$40529,$40530),(nextval($40531),$40532,$40533,$40534,$40535,$40536,$40537,$40538,$40539,$40540,$40541,$40542,$40543,$40544),(nextval($40545),$40546,$40547,$40548,$40549,$40550,$40551,$40552,$40553,$40554,$40555,$40556,$40557,$40558),(nextval($40559),$40560,$40561,$40562,$40563,$40564,$40565,$40566,$40567,$40568,$40569,$40570,$40571,$40572),(nextval($40573),$40574,$40575,$40576,$40577,$40578,$40579,$40580,$40581,$40582,$40583,$40584,$40585,$40586),(nextval($40587),$40588,$40589,$40590,$40591,$40592,$40593,$40594,$40595,$40596,$40597,$40598,$40599,$40600),(nextval($40601),$40602,$40603,$40604,$40605,$40606,$40607,$40608,$40609,$40610,$40611,$40612,$40613,$40614),(nextval($40615),$40616,$40617,$40618,$40619,$40620,$40621,$40622,$40623,$40624,$40625,$40626,$40627,$40628),(nextval($40629),$40630,$40631,$40632,$40633,$40634,$40635,$40636,$40637,$40638,$40639,$40640,$40641,$40642),(nextval($40643),$40644,$40645,$40646,$40647,$40648,$40649,$40650,$40651,$40652,$40653,$40654,$40655,$40656),(nextval($40657),$40658,$40659,$40660,$40661,$40662,$40663,$40664,$40665,$40666,$40667,$40668,$40669,$40670),(nextval($40671),$40672,$40673,$40674,$40675,$40676,$40677,$40678,$40679,$40680,$40681,$40682,$40683,$40684),(nextval($40685),$40686,$40687,$40688,$40689,$40690,$40691,$40692,$40693,$40694,$40695,$40696,$40697,$40698),(nextval($40699),$40700,$40701,$40702,$40703,$40704,$40705,$40706,$40707,$40708,$40709,$40710,$40711,$40712),(nextval($40713),$40714,$40715,$40716,$40717,$40718,$40719,$40720,$40721,$40722,$40723,$40724,$40725,$40726),(nextval($40727),$40728,$40729,$40730,$40731,$40732,$40733,$40734,$40735,$40736,$40737,$40738,$40739,$40740),(nextval($40741),$40742,$40743,$40744,$40745,$40746,$40747,$40748,$40749,$40750,$40751,$40752,$40753,$40754),(nextval($40755),$40756,$40757,$40758,$40759,$40760,$40761,$40762,$40763,$40764,$40765,$40766,$40767,$40768),(nextval($40769),$40770,$40771,$40772,$40773,$40774,$40775,$40776,$40777,$40778,$40779,$40780,$40781,$40782),(nextval($40783),$40784,$40785,$40786,$40787,$40788,$40789,$40790,$40791,$40792,$40793,$40794,$40795,$40796),(nextval($40797),$40798,$40799,$40800,$40801,$40802,$40803,$40804,$40805,$40806,$40807,$40808,$40809,$40810),(nextval($40811),$40812,$40813,$40814,$40815,$40816,$40817,$40818,$40819,$40820,$40821,$40822,$40823,$40824),(nextval($40825),$40826,$40827,$40828,$40829,$40830,$40831,$40832,$40833,$40834,$40835,$40836,$40837,$40838),(nextval($40839),$40840,$40841,$40842,$40843,$40844,$40845,$40846,$40847,$40848,$40849,$40850,$40851,$40852),(nextval($40853),$40854,$40855,$40856,$40857,$40858,$40859,$40860,$40861,$40862,$40863,$40864,$40865,$40866),(nextval($40867),$40868,$40869,$40870,$40871,$40872,$40873,$40874,$40875,$40876,$40877,$40878,$40879,$40880),(nextval($40881),$40882,$40883,$40884,$40885,$40886,$40887,$40888,$40889,$40890,$40891,$40892,$40893,$40894),(nextval($40895),$40896,$40897,$40898,$40899,$40900,$40901,$40902,$40903,$40904,$40905,$40906,$40907,$40908),(nextval($40909),$40910,$40911,$40912,$40913,$40914,$40915,$40916,$40917,$40918,$40919,$40920,$40921,$40922),(nextval($40923),$40924,$40925,$40926,$40927,$40928,$40929,$40930,$40931,$40932,$40933,$40934,$40935,$40936),(nextval($40937),$40938,$40939,$40940,$40941,$40942,$40943,$40944,$40945,$40946,$40947,$40948,$40949,$40950),(nextval($40951),$40952,$40953,$40954,$40955,$40956,$40957,$40958,$40959,$40960,$40961,$40962,$40963,$40964),(nextval($40965),$40966,$40967,$40968,$40969,$40970,$40971,$40972,$40973,$40974,$40975,$40976,$40977,$40978),(nextval($40979),$40980,$40981,$40982,$40983,$40984,$40985,$40986,$40987,$40988,$40989,$40990,$40991,$40992),(nextval($40993),$40994,$40995,$40996,$40997,$40998,$40999,$41000,$41001,$41002,$41003,$41004,$41005,$41006),(nextval($41007),$41008,$41009,$41010,$41011,$41012,$41013,$41014,$41015,$41016,$41017,$41018,$41019,$41020),(nextval($41021),$41022,$41023,$41024,$41025,$41026,$41027,$41028,$41029,$41030,$41031,$41032,$41033,$41034),(nextval($41035),$41036,$41037,$41038,$41039,$41040,$41041,$41042,$41043,$41044,$41045,$41046,$41047,$41048),(nextval($41049),$41050,$41051,$41052,$41053,$41054,$41055,$41056,$41057,$41058,$41059,$41060,$41061,$41062),(nextval($41063),$41064,$41065,$41066,$41067,$41068,$41069,$41070,$41071,$41072,$41073,$41074,$41075,$41076),(nextval($41077),$41078,$41079,$41080,$41081,$41082,$41083,$41084,$41085,$41086,$41087,$41088,$41089,$41090),(nextval($41091),$41092,$41093,$41094,$41095,$41096,$41097,$41098,$41099,$41100,$41101,$41102,$41103,$41104),(nextval($41105),$41106,$41107,$41108,$41109,$41110,$41111,$41112,$41113,$41114,$41115,$41116,$41117,$41118),(nextval($41119),$41120,$41121,$41122,$41123,$41124,$41125,$41126,$41127,$41128,$41129,$41130,$41131,$41132),(nextval($41133),$41134,$41135,$41136,$41137,$41138,$41139,$41140,$41141,$41142,$41143,$41144,$41145,$41146),(nextval($41147),$41148,$41149,$41150,$41151,$41152,$41153,$41154,$41155,$41156,$41157,$41158,$41159,$41160),(nextval($41161),$41162,$41163,$41164,$41165,$41166,$41167,$41168,$41169,$41170,$41171,$41172,$41173,$41174),(nextval($41175),$41176,$41177,$41178,$41179,$41180,$41181,$41182,$41183,$41184,$41185,$41186,$41187,$41188),(nextval($41189),$41190,$41191,$41192,$41193,$41194,$41195,$41196,$41197,$41198,$41199,$41200,$41201,$41202),(nextval($41203),$41204,$41205,$41206,$41207,$41208,$41209,$41210,$41211,$41212,$41213,$41214,$41215,$41216),(nextval($41217),$41218,$41219,$41220,$41221,$41222,$41223,$41224,$41225,$41226,$41227,$41228,$41229,$41230),(nextval($41231),$41232,$41233,$41234,$41235,$41236,$41237,$41238,$41239,$41240,$41241,$41242,$41243,$41244),(nextval($41245),$41246,$41247,$41248,$41249,$41250,$41251,$41252,$41253,$41254,$41255,$41256,$41257,$41258),(nextval($41259),$41260,$41261,$41262,$41263,$41264,$41265,$41266,$41267,$41268,$41269,$41270,$41271,$41272),(nextval($41273),$41274,$41275,$41276,$41277,$41278,$41279,$41280,$41281,$41282,$41283,$41284,$41285,$41286),(nextval($41287),$41288,$41289,$41290,$41291,$41292,$41293,$41294,$41295,$41296,$41297,$41298,$41299,$41300),(nextval($41301),$41302,$41303,$41304,$41305,$41306,$41307,$41308,$41309,$41310,$41311,$41312,$41313,$41314),(nextval($41315),$41316,$41317,$41318,$41319,$41320,$41321,$41322,$41323,$41324,$41325,$41326,$41327,$41328),(nextval($41329),$41330,$41331,$41332,$41333,$41334,$41335,$41336,$41337,$41338,$41339,$41340,$41341,$41342),(nextval($41343),$41344,$41345,$41346,$41347,$41348,$41349,$41350,$41351,$41352,$41353,$41354,$41355,$41356),(nextval($41357),$41358,$41359,$41360,$41361,$41362,$41363,$41364,$41365,$41366,$41367,$41368,$41369,$41370),(nextval($41371),$41372,$41373,$41374,$41375,$41376,$41377,$41378,$41379,$41380,$41381,$41382,$41383,$41384),(nextval($41385),$41386,$41387,$41388,$41389,$41390,$41391,$41392,$41393,$41394,$41395,$41396,$41397,$41398),(nextval($41399),$41400,$41401,$41402,$41403,$41404,$41405,$41406,$41407,$41408,$41409,$41410,$41411,$41412),(nextval($41413),$41414,$41415,$41416,$41417,$41418,$41419,$41420,$41421,$41422,$41423,$41424,$41425,$41426),(nextval($41427),$41428,$41429,$41430,$41431,$41432,$41433,$41434,$41435,$41436,$41437,$41438,$41439,$41440),(nextval($41441),$41442,$41443,$41444,$41445,$41446,$41447,$41448,$41449,$41450,$41451,$41452,$41453,$41454),(nextval($41455),$41456,$41457,$41458,$41459,$41460,$41461,$41462,$41463,$41464,$41465,$41466,$41467,$41468),(nextval($41469),$41470,$41471,$41472,$41473,$41474,$41475,$41476,$41477,$41478,$41479,$41480,$41481,$41482),(nextval($41483),$41484,$41485,$41486,$41487,$41488,$41489,$41490,$41491,$41492,$41493,$41494,$41495,$41496),(nextval($41497),$41498,$41499,$41500,$41501,$41502,$41503,$41504,$41505,$41506,$41507,$41508,$41509,$41510),(nextval($41511),$41512,$41513,$41514,$41515,$41516,$41517,$41518,$41519,$41520,$41521,$41522,$41523,$41524),(nextval($41525),$41526,$41527,$41528,$41529,$41530,$41531,$41532,$41533,$41534,$41535,$41536,$41537,$41538),(nextval($41539),$41540,$41541,$41542,$41543,$41544,$41545,$41546,$41547,$41548,$41549,$41550,$41551,$41552),(nextval($41553),$41554,$41555,$41556,$41557,$41558,$41559,$41560,$41561,$41562,$41563,$41564,$41565,$41566),(nextval($41567),$41568,$41569,$41570,$41571,$41572,$41573,$41574,$41575,$41576,$41577,$41578,$41579,$41580),(nextval($41581),$41582,$41583,$41584,$41585,$41586,$41587,$41588,$41589,$41590,$41591,$41592,$41593,$41594),(nextval($41595),$41596,$41597,$41598,$41599,$41600,$41601,$41602,$41603,$41604,$41605,$41606,$41607,$41608),(nextval($41609),$41610,$41611,$41612,$41613,$41614,$41615,$41616,$41617,$41618,$41619,$41620,$41621,$41622),(nextval($41623),$41624,$41625,$41626,$41627,$41628,$41629,$41630,$41631,$41632,$41633,$41634,$41635,$41636),(nextval($41637),$41638,$41639,$41640,$41641,$41642,$41643,$41644,$41645,$41646,$41647,$41648,$41649,$41650),(nextval($41651),$41652,$41653,$41654,$41655,$41656,$41657,$41658,$41659,$41660,$41661,$41662,$41663,$41664),(nextval($41665),$41666,$41667,$41668,$41669,$41670,$41671,$41672,$41673,$41674,$41675,$41676,$41677,$41678),(nextval($41679),$41680,$41681,$41682,$41683,$41684,$41685,$41686,$41687,$41688,$41689,$41690,$41691,$41692),(nextval($41693),$41694,$41695,$41696,$41697,$41698,$41699,$41700,$41701,$41702,$41703,$41704,$41705,$41706),(nextval($41707),$41708,$41709,$41710,$41711,$41712,$41713,$41714,$41715,$41716,$41717,$41718,$41719,$41720),(nextval($41721),$41722,$41723,$41724,$41725,$41726,$41727,$41728,$41729,$41730,$41731,$41732,$41733,$41734),(nextval($41735),$41736,$41737,$41738,$41739,$41740,$41741,$41742,$41743,$41744,$41745,$41746,$41747,$41748),(nextval($41749),$41750,$41751,$41752,$41753,$41754,$41755,$41756,$41757,$41758,$41759,$41760,$41761,$41762),(nextval($41763),$41764,$41765,$41766,$41767,$41768,$41769,$41770,$41771,$41772,$41773,$41774,$41775,$41776),(nextval($41777),$41778,$41779,$41780,$41781,$41782,$41783,$41784,$41785,$41786,$41787,$41788,$41789,$41790),(nextval($41791),$41792,$41793,$41794,$41795,$41796,$41797,$41798,$41799,$41800,$41801,$41802,$41803,$41804),(nextval($41805),$41806,$41807,$41808,$41809,$41810,$41811,$41812,$41813,$41814,$41815,$41816,$41817,$41818),(nextval($41819),$41820,$41821,$41822,$41823,$41824,$41825,$41826,$41827,$41828,$41829,$41830,$41831,$41832),(nextval($41833),$41834,$41835,$41836,$41837,$41838,$41839,$41840,$41841,$41842,$41843,$41844,$41845,$41846),(nextval($41847),$41848,$41849,$41850,$41851,$41852,$41853,$41854,$41855,$41856,$41857,$41858,$41859,$41860),(nextval($41861),$41862,$41863,$41864,$41865,$41866,$41867,$41868,$41869,$41870,$41871,$41872,$41873,$41874),(nextval($41875),$41876,$41877,$41878,$41879,$41880,$41881,$41882,$41883,$41884,$41885,$41886,$41887,$41888),(nextval($41889),$41890,$41891,$41892,$41893,$41894,$41895,$41896,$41897,$41898,$41899,$41900,$41901,$41902),(nextval($41903),$41904,$41905,$41906,$41907,$41908,$41909,$41910,$41911,$41912,$41913,$41914,$41915,$41916),(nextval($41917),$41918,$41919,$41920,$41921,$41922,$41923,$41924,$41925,$41926,$41927,$41928,$41929,$41930),(nextval($41931),$41932,$41933,$41934,$41935,$41936,$41937,$41938,$41939,$41940,$41941,$41942,$41943,$41944),(nextval($41945),$41946,$41947,$41948,$41949,$41950,$41951,$41952,$41953,$41954,$41955,$41956,$41957,$41958),(nextval($41959),$41960,$41961,$41962,$41963,$41964,$41965,$41966,$41967,$41968,$41969,$41970,$41971,$41972),(nextval($41973),$41974,$41975,$41976,$41977,$41978,$41979,$41980,$41981,$41982,$41983,$41984,$41985,$41986),(nextval($41987),$41988,$41989,$41990,$41991,$41992,$41993,$41994,$41995,$41996,$41997,$41998,$41999,$42000),(nextval($42001),$42002,$42003,$42004,$42005,$42006,$42007,$42008,$42009,$42010,$42011,$42012,$42013,$42014),(nextval($42015),$42016,$42017,$42018,$42019,$42020,$42021,$42022,$42023,$42024,$42025,$42026,$42027,$42028),(nextval($42029),$42030,$42031,$42032,$42033,$42034,$42035,$42036,$42037,$42038,$42039,$42040,$42041,$42042),(nextval($42043),$42044,$42045,$42046,$42047,$42048,$42049,$42050,$42051,$42052,$42053,$42054,$42055,$42056),(nextval($42057),$42058,$42059,$42060,$42061,$42062,$42063,$42064,$42065,$42066,$42067,$42068,$42069,$42070),(nextval($42071),$42072,$42073,$42074,$42075,$42076,$42077,$42078,$42079,$42080,$42081,$42082,$42083,$42084),(nextval($42085),$42086,$42087,$42088,$42089,$42090,$42091,$42092,$42093,$42094,$42095,$42096,$42097,$42098),(nextval($42099),$42100,$42101,$42102,$42103,$42104,$42105,$42106,$42107,$42108,$42109,$42110,$42111,$42112),(nextval($42113),$42114,$42115,$42116,$42117,$42118,$42119,$42120,$42121,$42122,$42123,$42124,$42125,$42126),(nextval($42127),$42128,$42129,$42130,$42131,$42132,$42133,$42134,$42135,$42136,$42137,$42138,$42139,$42140),(nextval($42141),$42142,$42143,$42144,$42145,$42146,$42147,$42148,$42149,$42150,$42151,$42152,$42153,$42154),(nextval($42155),$42156,$42157,$42158,$42159,$42160,$42161,$42162,$42163,$42164,$42165,$42166,$42167,$42168),(nextval($42169),$42170,$42171,$42172,$42173,$42174,$42175,$42176,$42177,$42178,$42179,$42180,$42181,$42182),(nextval($42183),$42184,$42185,$42186,$42187,$42188,$42189,$42190,$42191,$42192,$42193,$42194,$42195,$42196),(nextval($42197),$42198,$42199,$42200,$42201,$42202,$42203,$42204,$42205,$42206,$42207,$42208,$42209,$42210),(nextval($42211),$42212,$42213,$42214,$42215,$42216,$42217,$42218,$42219,$42220,$42221,$42222,$42223,$42224),(nextval($42225),$42226,$42227,$42228,$42229,$42230,$42231,$42232,$42233,$42234,$42235,$42236,$42237,$42238),(nextval($42239),$42240,$42241,$42242,$42243,$42244,$42245,$42246,$42247,$42248,$42249,$42250,$42251,$42252),(nextval($42253),$42254,$42255,$42256,$42257,$42258,$42259,$42260,$42261,$42262,$42263,$42264,$42265,$42266),(nextval($42267),$42268,$42269,$42270,$42271,$42272,$42273,$42274,$42275,$42276,$42277,$42278,$42279,$42280),(nextval($42281),$42282,$42283,$42284,$42285,$42286,$42287,$42288,$42289,$42290,$42291,$42292,$42293,$42294),(nextval($42295),$42296,$42297,$42298,$42299,$42300,$42301,$42302,$42303,$42304,$42305,$42306,$42307,$42308),(nextval($42309),$42310,$42311,$42312,$42313,$42314,$42315,$42316,$42317,$42318,$42319,$42320,$42321,$42322),(nextval($42323),$42324,$42325,$42326,$42327,$42328,$42329,$42330,$42331,$42332,$42333,$42334,$42335,$42336),(nextval($42337),$42338,$42339,$42340,$42341,$42342,$42343,$42344,$42345,$42346,$42347,$42348,$42349,$42350),(nextval($42351),$42352,$42353,$42354,$42355,$42356,$42357,$42358,$42359,$42360,$42361,$42362,$42363,$42364),(nextval($42365),$42366,$42367,$42368,$42369,$42370,$42371,$42372,$42373,$42374,$42375,$42376,$42377,$42378),(nextval($42379),$42380,$42381,$42382,$42383,$42384,$42385,$42386,$42387,$42388,$42389,$42390,$42391,$42392),(nextval($42393),$42394,$42395,$42396,$42397,$42398,$42399,$42400,$42401,$42402,$42403,$42404,$42405,$42406),(nextval($42407),$42408,$42409,$42410,$42411,$42412,$42413,$42414,$42415,$42416,$42417,$42418,$42419,$42420),(nextval($42421),$42422,$42423,$42424,$42425,$42426,$42427,$42428,$42429,$42430,$42431,$42432,$42433,$42434),(nextval($42435),$42436,$42437,$42438,$42439,$42440,$42441,$42442,$42443,$42444,$42445,$42446,$42447,$42448),(nextval($42449),$42450,$42451,$42452,$42453,$42454,$42455,$42456,$42457,$42458,$42459,$42460,$42461,$42462),(nextval($42463),$42464,$42465,$42466,$42467,$42468,$42469,$42470,$42471,$42472,$42473,$42474,$42475,$42476),(nextval($42477),$42478,$42479,$42480,$42481,$42482,$42483,$42484,$42485,$42486,$42487,$42488,$42489,$42490),(nextval($42491),$42492,$42493,$42494,$42495,$42496,$42497,$42498,$42499,$42500,$42501,$42502,$42503,$42504),(nextval($42505),$42506,$42507,$42508,$42509,$42510,$42511,$42512,$42513,$42514,$42515,$42516,$42517,$42518),(nextval($42519),$42520,$42521,$42522,$42523,$42524,$42525,$42526,$42527,$42528,$42529,$42530,$42531,$42532),(nextval($42533),$42534,$42535,$42536,$42537,$42538,$42539,$42540,$42541,$42542,$42543,$42544,$42545,$42546),(nextval($42547),$42548,$42549,$42550,$42551,$42552,$42553,$42554,$42555,$42556,$42557,$42558,$42559,$42560),(nextval($42561),$42562,$42563,$42564,$42565,$42566,$42567,$42568,$42569,$42570,$42571,$42572,$42573,$42574),(nextval($42575),$42576,$42577,$42578,$42579,$42580,$42581,$42582,$42583,$42584,$42585,$42586,$42587,$42588),(nextval($42589),$42590,$42591,$42592,$42593,$42594,$42595,$42596,$42597,$42598,$42599,$42600,$42601,$42602),(nextval($42603),$42604,$42605,$42606,$42607,$42608,$42609,$42610,$42611,$42612,$42613,$42614,$42615,$42616),(nextval($42617),$42618,$42619,$42620,$42621,$42622,$42623,$42624,$42625,$42626,$42627,$42628,$42629,$42630),(nextval($42631),$42632,$42633,$42634,$42635,$42636,$42637,$42638,$42639,$42640,$42641,$42642,$42643,$42644),(nextval($42645),$42646,$42647,$42648,$42649,$42650,$42651,$42652,$42653,$42654,$42655,$42656,$42657,$42658),(nextval($42659),$42660,$42661,$42662,$42663,$42664,$42665,$42666,$42667,$42668,$42669,$42670,$42671,$42672),(nextval($42673),$42674,$42675,$42676,$42677,$42678,$42679,$42680,$42681,$42682,$42683,$42684,$42685,$42686),(nextval($42687),$42688,$42689,$42690,$42691,$42692,$42693,$42694,$42695,$42696,$42697,$42698,$42699,$42700),(nextval($42701),$42702,$42703,$42704,$42705,$42706,$42707,$42708,$42709,$42710,$42711,$42712,$42713,$42714),(nextval($42715),$42716,$42717,$42718,$42719,$42720,$42721,$42722,$42723,$42724,$42725,$42726,$42727,$42728),(nextval($42729),$42730,$42731,$42732,$42733,$42734,$42735,$42736,$42737,$42738,$42739,$42740,$42741,$42742),(nextval($42743),$42744,$42745,$42746,$42747,$42748,$42749,$42750,$42751,$42752,$42753,$42754,$42755,$42756),(nextval($42757),$42758,$42759,$42760,$42761,$42762,$42763,$42764,$42765,$42766,$42767,$42768,$42769,$42770),(nextval($42771),$42772,$42773,$42774,$42775,$42776,$42777,$42778,$42779,$42780,$42781,$42782,$42783,$42784),(nextval($42785),$42786,$42787,$42788,$42789,$42790,$42791,$42792,$42793,$42794,$42795,$42796,$42797,$42798),(nextval($42799),$42800,$42801,$42802,$42803,$42804,$42805,$42806,$42807,$42808,$42809,$42810,$42811,$42812),(nextval($42813),$42814,$42815,$42816,$42817,$42818,$42819,$42820,$42821,$42822,$42823,$42824,$42825,$42826),(nextval($42827),$42828,$42829,$42830,$42831,$42832,$42833,$42834,$42835,$42836,$42837,$42838,$42839,$42840),(nextval($42841),$42842,$42843,$42844,$42845,$42846,$42847,$42848,$42849,$42850,$42851,$42852,$42853,$42854),(nextval($42855),$42856,$42857,$42858,$42859,$42860,$42861,$42862,$42863,$42864,$42865,$42866,$42867,$42868),(nextval($42869),$42870,$42871,$42872,$42873,$42874,$42875,$42876,$42877,$42878,$42879,$42880,$42881,$42882),(nextval($42883),$42884,$42885,$42886,$42887,$42888,$42889,$42890,$42891,$42892,$42893,$42894,$42895,$42896),(nextval($42897),$42898,$42899,$42900,$42901,$42902,$42903,$42904,$42905,$42906,$42907,$42908,$42909,$42910),(nextval($42911),$42912,$42913,$42914,$42915,$42916,$42917,$42918,$42919,$42920,$42921,$42922,$42923,$42924),(nextval($42925),$42926,$42927,$42928,$42929,$42930,$42931,$42932,$42933,$42934,$42935,$42936,$42937,$42938),(nextval($42939),$42940,$42941,$42942,$42943,$42944,$42945,$42946,$42947,$42948,$42949,$42950,$42951,$42952),(nextval($42953),$42954,$42955,$42956,$42957,$42958,$42959,$42960,$42961,$42962,$42963,$42964,$42965,$42966),(nextval($42967),$42968,$42969,$42970,$42971,$42972,$42973,$42974,$42975,$42976,$42977,$42978,$42979,$42980),(nextval($42981),$42982,$42983,$42984,$42985,$42986,$42987,$42988,$42989,$42990,$42991,$42992,$42993,$42994),(nextval($42995),$42996,$42997,$42998,$42999,$43000,$43001,$43002,$43003,$43004,$43005,$43006,$43007,$43008),(nextval($43009),$43010,$43011,$43012,$43013,$43014,$43015,$43016,$43017,$43018,$43019,$43020,$43021,$43022),(nextval($43023),$43024,$43025,$43026,$43027,$43028,$43029,$43030,$43031,$43032,$43033,$43034,$43035,$43036),(nextval($43037),$43038,$43039,$43040,$43041,$43042,$43043,$43044,$43045,$43046,$43047,$43048,$43049,$43050),(nextval($43051),$43052,$43053,$43054,$43055,$43056,$43057,$43058,$43059,$43060,$43061,$43062,$43063,$43064),(nextval($43065),$43066,$43067,$43068,$43069,$43070,$43071,$43072,$43073,$43074,$43075,$43076,$43077,$43078),(nextval($43079),$43080,$43081,$43082,$43083,$43084,$43085,$43086,$43087,$43088,$43089,$43090,$43091,$43092),(nextval($43093),$43094,$43095,$43096,$43097,$43098,$43099,$43100,$43101,$43102,$43103,$43104,$43105,$43106),(nextval($43107),$43108,$43109,$43110,$43111,$43112,$43113,$43114,$43115,$43116,$43117,$43118,$43119,$43120),(nextval($43121),$43122,$43123,$43124,$43125,$43126,$43127,$43128,$43129,$43130,$43131,$43132,$43133,$43134),(nextval($43135),$43136,$43137,$43138,$43139,$43140,$43141,$43142,$43143,$43144,$43145,$43146,$43147,$43148),(nextval($43149),$43150,$43151,$43152,$43153,$43154,$43155,$43156,$43157,$43158,$43159,$43160,$43161,$43162),(nextval($43163),$43164,$43165,$43166,$43167,$43168,$43169,$43170,$43171,$43172,$43173,$43174,$43175,$43176),(nextval($43177),$43178,$43179,$43180,$43181,$43182,$43183,$43184,$43185,$43186,$43187,$43188,$43189,$43190),(nextval($43191),$43192,$43193,$43194,$43195,$43196,$43197,$43198,$43199,$43200,$43201,$43202,$43203,$43204),(nextval($43205),$43206,$43207,$43208,$43209,$43210,$43211,$43212,$43213,$43214,$43215,$43216,$43217,$43218),(nextval($43219),$43220,$43221,$43222,$43223,$43224,$43225,$43226,$43227,$43228,$43229,$43230,$43231,$43232),(nextval($43233),$43234,$43235,$43236,$43237,$43238,$43239,$43240,$43241,$43242,$43243,$43244,$43245,$43246),(nextval($43247),$43248,$43249,$43250,$43251,$43252,$43253,$43254,$43255,$43256,$43257,$43258,$43259,$43260),(nextval($43261),$43262,$43263,$43264,$43265,$43266,$43267,$43268,$43269,$43270,$43271,$43272,$43273,$43274),(nextval($43275),$43276,$43277,$43278,$43279,$43280,$43281,$43282,$43283,$43284,$43285,$43286,$43287,$43288),(nextval($43289),$43290,$43291,$43292,$43293,$43294,$43295,$43296,$43297,$43298,$43299,$43300,$43301,$43302),(nextval($43303),$43304,$43305,$43306,$43307,$43308,$43309,$43310,$43311,$43312,$43313,$43314,$43315,$43316),(nextval($43317),$43318,$43319,$43320,$43321,$43322,$43323,$43324,$43325,$43326,$43327,$43328,$43329,$43330),(nextval($43331),$43332,$43333,$43334,$43335,$43336,$43337,$43338,$43339,$43340,$43341,$43342,$43343,$43344),(nextval($43345),$43346,$43347,$43348,$43349,$43350,$43351,$43352,$43353,$43354,$43355,$43356,$43357,$43358),(nextval($43359),$43360,$43361,$43362,$43363,$43364,$43365,$43366,$43367,$43368,$43369,$43370,$43371,$43372),(nextval($43373),$43374,$43375,$43376,$43377,$43378,$43379,$43380,$43381,$43382,$43383,$43384,$43385,$43386),(nextval($43387),$43388,$43389,$43390,$43391,$43392,$43393,$43394,$43395,$43396,$43397,$43398,$43399,$43400),(nextval($43401),$43402,$43403,$43404,$43405,$43406,$43407,$43408,$43409,$43410,$43411,$43412,$43413,$43414),(nextval($43415),$43416,$43417,$43418,$43419,$43420,$43421,$43422,$43423,$43424,$43425,$43426,$43427,$43428),(nextval($43429),$43430,$43431,$43432,$43433,$43434,$43435,$43436,$43437,$43438,$43439,$43440,$43441,$43442),(nextval($43443),$43444,$43445,$43446,$43447,$43448,$43449,$43450,$43451,$43452,$43453,$43454,$43455,$43456),(nextval($43457),$43458,$43459,$43460,$43461,$43462,$43463,$43464,$43465,$43466,$43467,$43468,$43469,$43470),(nextval($43471),$43472,$43473,$43474,$43475,$43476,$43477,$43478,$43479,$43480,$43481,$43482,$43483,$43484),(nextval($43485),$43486,$43487,$43488,$43489,$43490,$43491,$43492,$43493,$43494,$43495,$43496,$43497,$43498),(nextval($43499),$43500,$43501,$43502,$43503,$43504,$43505,$43506,$43507,$43508,$43509,$43510,$43511,$43512),(nextval($43513),$43514,$43515,$43516,$43517,$43518,$43519,$43520,$43521,$43522,$43523,$43524,$43525,$43526),(nextval($43527),$43528,$43529,$43530,$43531,$43532,$43533,$43534,$43535,$43536,$43537,$43538,$43539,$43540),(nextval($43541),$43542,$43543,$43544,$43545,$43546,$43547,$43548,$43549,$43550,$43551,$43552,$43553,$43554),(nextval($43555),$43556,$43557,$43558,$43559,$43560,$43561,$43562,$43563,$43564,$43565,$43566,$43567,$43568),(nextval($43569),$43570,$43571,$43572,$43573,$43574,$43575,$43576,$43577,$43578,$43579,$43580,$43581,$43582),(nextval($43583),$43584,$43585,$43586,$43587,$43588,$43589,$43590,$43591,$43592,$43593,$43594,$43595,$43596),(nextval($43597),$43598,$43599,$43600,$43601,$43602,$43603,$43604,$43605,$43606,$43607,$43608,$43609,$43610),(nextval($43611),$43612,$43613,$43614,$43615,$43616,$43617,$43618,$43619,$43620,$43621,$43622,$43623,$43624),(nextval($43625),$43626,$43627,$43628,$43629,$43630,$43631,$43632,$43633,$43634,$43635,$43636,$43637,$43638),(nextval($43639),$43640,$43641,$43642,$43643,$43644,$43645,$43646,$43647,$43648,$43649,$43650,$43651,$43652),(nextval($43653),$43654,$43655,$43656,$43657,$43658,$43659,$43660,$43661,$43662,$43663,$43664,$43665,$43666),(nextval($43667),$43668,$43669,$43670,$43671,$43672,$43673,$43674,$43675,$43676,$43677,$43678,$43679,$43680),(nextval($43681),$43682,$43683,$43684,$43685,$43686,$43687,$43688,$43689,$43690,$43691,$43692,$43693,$43694),(nextval($43695),$43696,$43697,$43698,$43699,$43700,$43701,$43702,$43703,$43704,$43705,$43706,$43707,$43708),(nextval($43709),$43710,$43711,$43712,$43713,$43714,$43715,$43716,$43717,$43718,$43719,$43720,$43721,$43722),(nextval($43723),$43724,$43725,$43726,$43727,$43728,$43729,$43730,$43731,$43732,$43733,$43734,$43735,$43736),(nextval($43737),$43738,$43739,$43740,$43741,$43742,$43743,$43744,$43745,$43746,$43747,$43748,$43749,$43750),(nextval($43751),$43752,$43753,$43754,$43755,$43756,$43757,$43758,$43759,$43760,$43761,$43762,$43763,$43764),(nextval($43765),$43766,$43767,$43768,$43769,$43770,$43771,$43772,$43773,$43774,$43775,$43776,$43777,$43778),(nextval($43779),$43780,$43781,$43782,$43783,$43784,$43785,$43786,$43787,$43788,$43789,$43790,$43791,$43792),(nextval($43793),$43794,$43795,$43796,$43797,$43798,$43799,$43800,$43801,$43802,$43803,$43804,$43805,$43806),(nextval($43807),$43808,$43809,$43810,$43811,$43812,$43813,$43814,$43815,$43816,$43817,$43818,$43819,$43820),(nextval($43821),$43822,$43823,$43824,$43825,$43826,$43827,$43828,$43829,$43830,$43831,$43832,$43833,$43834),(nextval($43835),$43836,$43837,$43838,$43839,$43840,$43841,$43842,$43843,$43844,$43845,$43846,$43847,$43848),(nextval($43849),$43850,$43851,$43852,$43853,$43854,$43855,$43856,$43857,$43858,$43859,$43860,$43861,$43862),(nextval($43863),$43864,$43865,$43866,$43867,$43868,$43869,$43870,$43871,$43872,$43873,$43874,$43875,$43876),(nextval($43877),$43878,$43879,$43880,$43881,$43882,$43883,$43884,$43885,$43886,$43887,$43888,$43889,$43890),(nextval($43891),$43892,$43893,$43894,$43895,$43896,$43897,$43898,$43899,$43900,$43901,$43902,$43903,$43904),(nextval($43905),$43906,$43907,$43908,$43909,$43910,$43911,$43912,$43913,$43914,$43915,$43916,$43917,$43918),(nextval($43919),$43920,$43921,$43922,$43923,$43924,$43925,$43926,$43927,$43928,$43929,$43930,$43931,$43932),(nextval($43933),$43934,$43935,$43936,$43937,$43938,$43939,$43940,$43941,$43942,$43943,$43944,$43945,$43946),(nextval($43947),$43948,$43949,$43950,$43951,$43952,$43953,$43954,$43955,$43956,$43957,$43958,$43959,$43960),(nextval($43961),$43962,$43963,$43964,$43965,$43966,$43967,$43968,$43969,$43970,$43971,$43972,$43973,$43974),(nextval($43975),$43976,$43977,$43978,$43979,$43980,$43981,$43982,$43983,$43984,$43985,$43986,$43987,$43988),(nextval($43989),$43990,$43991,$43992,$43993,$43994,$43995,$43996,$43997,$43998,$43999,$44000,$44001,$44002),(nextval($44003),$44004,$44005,$44006,$44007,$44008,$44009,$44010,$44011,$44012,$44013,$44014,$44015,$44016),(nextval($44017),$44018,$44019,$44020,$44021,$44022,$44023,$44024,$44025,$44026,$44027,$44028,$44029,$44030),(nextval($44031),$44032,$44033,$44034,$44035,$44036,$44037,$44038,$44039,$44040,$44041,$44042,$44043,$44044),(nextval($44045),$44046,$44047,$44048,$44049,$44050,$44051,$44052,$44053,$44054,$44055,$44056,$44057,$44058),(nextval($44059),$44060,$44061,$44062,$44063,$44064,$44065,$44066,$44067,$44068,$44069,$44070,$44071,$44072),(nextval($44073),$44074,$44075,$44076,$44077,$44078,$44079,$44080,$44081,$44082,$44083,$44084,$44085,$44086),(nextval($44087),$44088,$44089,$44090,$44091,$44092,$44093,$44094,$44095,$44096,$44097,$44098,$44099,$44100),(nextval($44101),$44102,$44103,$44104,$44105,$44106,$44107,$44108,$44109,$44110,$44111,$44112,$44113,$44114),(nextval($44115),$44116,$44117,$44118,$44119,$44120,$44121,$44122,$44123,$44124,$44125,$44126,$44127,$44128),(nextval($44129),$44130,$44131,$44132,$44133,$44134,$44135,$44136,$44137,$44138,$44139,$44140,$44141,$44142),(nextval($44143),$44144,$44145,$44146,$44147,$44148,$44149,$44150,$44151,$44152,$44153,$44154,$44155,$44156),(nextval($44157),$44158,$44159,$44160,$44161,$44162,$44163,$44164,$44165,$44166,$44167,$44168,$44169,$44170),(nextval($44171),$44172,$44173,$44174,$44175,$44176,$44177,$44178,$44179,$44180,$44181,$44182,$44183,$44184),(nextval($44185),$44186,$44187,$44188,$44189,$44190,$44191,$44192,$44193,$44194,$44195,$44196,$44197,$44198),(nextval($44199),$44200,$44201,$44202,$44203,$44204,$44205,$44206,$44207,$44208,$44209,$44210,$44211,$44212),(nextval($44213),$44214,$44215,$44216,$44217,$44218,$44219,$44220,$44221,$44222,$44223,$44224,$44225,$44226),(nextval($44227),$44228,$44229,$44230,$44231,$44232,$44233,$44234,$44235,$44236,$44237,$44238,$44239,$44240),(nextval($44241),$44242,$44243,$44244,$44245,$44246,$44247,$44248,$44249,$44250,$44251,$44252,$44253,$44254),(nextval($44255),$44256,$44257,$44258,$44259,$44260,$44261,$44262,$44263,$44264,$44265,$44266,$44267,$44268),(nextval($44269),$44270,$44271,$44272,$44273,$44274,$44275,$44276,$44277,$44278,$44279,$44280,$44281,$44282),(nextval($44283),$44284,$44285,$44286,$44287,$44288,$44289,$44290,$44291,$44292,$44293,$44294,$44295,$44296),(nextval($44297),$44298,$44299,$44300,$44301,$44302,$44303,$44304,$44305,$44306,$44307,$44308,$44309,$44310),(nextval($44311),$44312,$44313,$44314,$44315,$44316,$44317,$44318,$44319,$44320,$44321,$44322,$44323,$44324),(nextval($44325),$44326,$44327,$44328,$44329,$44330,$44331,$44332,$44333,$44334,$44335,$44336,$44337,$44338),(nextval($44339),$44340,$44341,$44342,$44343,$44344,$44345,$44346,$44347,$44348,$44349,$44350,$44351,$44352),(nextval($44353),$44354,$44355,$44356,$44357,$44358,$44359,$44360,$44361,$44362,$44363,$44364,$44365,$44366),(nextval($44367),$44368,$44369,$44370,$44371,$44372,$44373,$44374,$44375,$44376,$44377,$44378,$44379,$44380),(nextval($44381),$44382,$44383,$44384,$44385,$44386,$44387,$44388,$44389,$44390,$44391,$44392,$44393,$44394),(nextval($44395),$44396,$44397,$44398,$44399,$44400,$44401,$44402,$44403,$44404,$44405,$44406,$44407,$44408),(nextval($44409),$44410,$44411,$44412,$44413,$44414,$44415,$44416,$44417,$44418,$44419,$44420,$44421,$44422),(nextval($44423),$44424,$44425,$44426,$44427,$44428,$44429,$44430,$44431,$44432,$44433,$44434,$44435,$44436),(nextval($44437),$44438,$44439,$44440,$44441,$44442,$44443,$44444,$44445,$44446,$44447,$44448,$44449,$44450),(nextval($44451),$44452,$44453,$44454,$44455,$44456,$44457,$44458,$44459,$44460,$44461,$44462,$44463,$44464),(nextval($44465),$44466,$44467,$44468,$44469,$44470,$44471,$44472,$44473,$44474,$44475,$44476,$44477,$44478),(nextval($44479),$44480,$44481,$44482,$44483,$44484,$44485,$44486,$44487,$44488,$44489,$44490,$44491,$44492),(nextval($44493),$44494,$44495,$44496,$44497,$44498,$44499,$44500,$44501,$44502,$44503,$44504,$44505,$44506),(nextval($44507),$44508,$44509,$44510,$44511,$44512,$44513,$44514,$44515,$44516,$44517,$44518,$44519,$44520),(nextval($44521),$44522,$44523,$44524,$44525,$44526,$44527,$44528,$44529,$44530,$44531,$44532,$44533,$44534),(nextval($44535),$44536,$44537,$44538,$44539,$44540,$44541,$44542,$44543,$44544,$44545,$44546,$44547,$44548),(nextval($44549),$44550,$44551,$44552,$44553,$44554,$44555,$44556,$44557,$44558,$44559,$44560,$44561,$44562),(nextval($44563),$44564,$44565,$44566,$44567,$44568,$44569,$44570,$44571,$44572,$44573,$44574,$44575,$44576),(nextval($44577),$44578,$44579,$44580,$44581,$44582,$44583,$44584,$44585,$44586,$44587,$44588,$44589,$44590),(nextval($44591),$44592,$44593,$44594,$44595,$44596,$44597,$44598,$44599,$44600,$44601,$44602,$44603,$44604),(nextval($44605),$44606,$44607,$44608,$44609,$44610,$44611,$44612,$44613,$44614,$44615,$44616,$44617,$44618),(nextval($44619),$44620,$44621,$44622,$44623,$44624,$44625,$44626,$44627,$44628,$44629,$44630,$44631,$44632),(nextval($44633),$44634,$44635,$44636,$44637,$44638,$44639,$44640,$44641,$44642,$44643,$44644,$44645,$44646),(nextval($44647),$44648,$44649,$44650,$44651,$44652,$44653,$44654,$44655,$44656,$44657,$44658,$44659,$44660),(nextval($44661),$44662,$44663,$44664,$44665,$44666,$44667,$44668,$44669,$44670,$44671,$44672,$44673,$44674),(nextval($44675),$44676,$44677,$44678,$44679,$44680,$44681,$44682,$44683,$44684,$44685,$44686,$44687,$44688),(nextval($44689),$44690,$44691,$44692,$44693,$44694,$44695,$44696,$44697,$44698,$44699,$44700,$44701,$44702),(nextval($44703),$44704,$44705,$44706,$44707,$44708,$44709,$44710,$44711,$44712,$44713,$44714,$44715,$44716),(nextval($44717),$44718,$44719,$44720,$44721,$44722,$44723,$44724,$44725,$44726,$44727,$44728,$44729,$44730),(nextval($44731),$44732,$44733,$44734,$44735,$44736,$44737,$44738,$44739,$44740,$44741,$44742,$44743,$44744),(nextval($44745),$44746,$44747,$44748,$44749,$44750,$44751,$44752,$44753,$44754,$44755,$44756,$44757,$44758),(nextval($44759),$44760,$44761,$44762,$44763,$44764,$44765,$44766,$44767,$44768,$44769,$44770,$44771,$44772),(nextval($44773),$44774,$44775,$44776,$44777,$44778,$44779,$44780,$44781,$44782,$44783,$44784,$44785,$44786),(nextval($44787),$44788,$44789,$44790,$44791,$44792,$44793,$44794,$44795,$44796,$44797,$44798,$44799,$44800),(nextval($44801),$44802,$44803,$44804,$44805,$44806,$44807,$44808,$44809,$44810,$44811,$44812,$44813,$44814),(nextval($44815),$44816,$44817,$44818,$44819,$44820,$44821,$44822,$44823,$44824,$44825,$44826,$44827,$44828),(nextval($44829),$44830,$44831,$44832,$44833,$44834,$44835,$44836,$44837,$44838,$44839,$44840,$44841,$44842),(nextval($44843),$44844,$44845,$44846,$44847,$44848,$44849,$44850,$44851,$44852,$44853,$44854,$44855,$44856),(nextval($44857),$44858,$44859,$44860,$44861,$44862,$44863,$44864,$44865,$44866,$44867,$44868,$44869,$44870),(nextval($44871),$44872,$44873,$44874,$44875,$44876,$44877,$44878,$44879,$44880,$44881,$44882,$44883,$44884),(nextval($44885),$44886,$44887,$44888,$44889,$44890,$44891,$44892,$44893,$44894,$44895,$44896,$44897,$44898),(nextval($44899),$44900,$44901,$44902,$44903,$44904,$44905,$44906,$44907,$44908,$44909,$44910,$44911,$44912),(nextval($44913),$44914,$44915,$44916,$44917,$44918,$44919,$44920,$44921,$44922,$44923,$44924,$44925,$44926),(nextval($44927),$44928,$44929,$44930,$44931,$44932,$44933,$44934,$44935,$44936,$44937,$44938,$44939,$44940),(nextval($44941),$44942,$44943,$44944,$44945,$44946,$44947,$44948,$44949,$44950,$44951,$44952,$44953,$44954),(nextval($44955),$44956,$44957,$44958,$44959,$44960,$44961,$44962,$44963,$44964,$44965,$44966,$44967,$44968),(nextval($44969),$44970,$44971,$44972,$44973,$44974,$44975,$44976,$44977,$44978,$44979,$44980,$44981,$44982),(nextval($44983),$44984,$44985,$44986,$44987,$44988,$44989,$44990,$44991,$44992,$44993,$44994,$44995,$44996),(nextval($44997),$44998,$44999,$45000,$45001,$45002,$45003,$45004,$45005,$45006,$45007,$45008,$45009,$45010),(nextval($45011),$45012,$45013,$45014,$45015,$45016,$45017,$45018,$45019,$45020,$45021,$45022,$45023,$45024),(nextval($45025),$45026,$45027,$45028,$45029,$45030,$45031,$45032,$45033,$45034,$45035,$45036,$45037,$45038),(nextval($45039),$45040,$45041,$45042,$45043,$45044,$45045,$45046,$45047,$45048,$45049,$45050,$45051,$45052),(nextval($45053),$45054,$45055,$45056,$45057,$45058,$45059,$45060,$45061,$45062,$45063,$45064,$45065,$45066),(nextval($45067),$45068,$45069,$45070,$45071,$45072,$45073,$45074,$45075,$45076,$45077,$45078,$45079,$45080),(nextval($45081),$45082,$45083,$45084,$45085,$45086,$45087,$45088,$45089,$45090,$45091,$45092,$45093,$45094),(nextval($45095),$45096,$45097,$45098,$45099,$45100,$45101,$45102,$45103,$45104,$45105,$45106,$45107,$45108),(nextval($45109),$45110,$45111,$45112,$45113,$45114,$45115,$45116,$45117,$45118,$45119,$45120,$45121,$45122),(nextval($45123),$45124,$45125,$45126,$45127,$45128,$45129,$45130,$45131,$45132,$45133,$45134,$45135,$45136),(nextval($45137),$45138,$45139,$45140,$45141,$45142,$45143,$45144,$45145,$45146,$45147,$45148,$45149,$45150),(nextval($45151),$45152,$45153,$45154,$45155,$45156,$45157,$45158,$45159,$45160,$45161,$45162,$45163,$45164),(nextval($45165),$45166,$45167,$45168,$45169,$45170,$45171,$45172,$45173,$45174,$45175,$45176,$45177,$45178),(nextval($45179),$45180,$45181,$45182,$45183,$45184,$45185,$45186,$45187,$45188,$45189,$45190,$45191,$45192),(nextval($45193),$45194,$45195,$45196,$45197,$45198,$45199,$45200,$45201,$45202,$45203,$45204,$45205,$45206),(nextval($45207),$45208,$45209,$45210,$45211,$45212,$45213,$45214,$45215,$45216,$45217,$45218,$45219,$45220),(nextval($45221),$45222,$45223,$45224,$45225,$45226,$45227,$45228,$45229,$45230,$45231,$45232,$45233,$45234),(nextval($45235),$45236,$45237,$45238,$45239,$45240,$45241,$45242,$45243,$45244,$45245,$45246,$45247,$45248),(nextval($45249),$45250,$45251,$45252,$45253,$45254,$45255,$45256,$45257,$45258,$45259,$45260,$45261,$45262),(nextval($45263),$45264,$45265,$45266,$45267,$45268,$45269,$45270,$45271,$45272,$45273,$45274,$45275,$45276),(nextval($45277),$45278,$45279,$45280,$45281,$45282,$45283,$45284,$45285,$45286,$45287,$45288,$45289,$45290),(nextval($45291),$45292,$45293,$45294,$45295,$45296,$45297,$45298,$45299,$45300,$45301,$45302,$45303,$45304),(nextval($45305),$45306,$45307,$45308,$45309,$45310,$45311,$45312,$45313,$45314,$45315,$45316,$45317,$45318),(nextval($45319),$45320,$45321,$45322,$45323,$45324,$45325,$45326,$45327,$45328,$45329,$45330,$45331,$45332),(nextval($45333),$45334,$45335,$45336,$45337,$45338,$45339,$45340,$45341,$45342,$45343,$45344,$45345,$45346),(nextval($45347),$45348,$45349,$45350,$45351,$45352,$45353,$45354,$45355,$45356,$45357,$45358,$45359,$45360),(nextval($45361),$45362,$45363,$45364,$45365,$45366,$45367,$45368,$45369,$45370,$45371,$45372,$45373,$45374),(nextval($45375),$45376,$45377,$45378,$45379,$45380,$45381,$45382,$45383,$45384,$45385,$45386,$45387,$45388),(nextval($45389),$45390,$45391,$45392,$45393,$45394,$45395,$45396,$45397,$45398,$45399,$45400,$45401,$45402),(nextval($45403),$45404,$45405,$45406,$45407,$45408,$45409,$45410,$45411,$45412,$45413,$45414,$45415,$45416),(nextval($45417),$45418,$45419,$45420,$45421,$45422,$45423,$45424,$45425,$45426,$45427,$45428,$45429,$45430),(nextval($45431),$45432,$45433,$45434,$45435,$45436,$45437,$45438,$45439,$45440,$45441,$45442,$45443,$45444),(nextval($45445),$45446,$45447,$45448,$45449,$45450,$45451,$45452,$45453,$45454,$45455,$45456,$45457,$45458),(nextval($45459),$45460,$45461,$45462,$45463,$45464,$45465,$45466,$45467,$45468,$45469,$45470,$45471,$45472),(nextval($45473),$45474,$45475,$45476,$45477,$45478,$45479,$45480,$45481,$45482,$45483,$45484,$45485,$45486),(nextval($45487),$45488,$45489,$45490,$45491,$45492,$45493,$45494,$45495,$45496,$45497,$45498,$45499,$45500),(nextval($45501),$45502,$45503,$45504,$45505,$45506,$45507,$45508,$45509,$45510,$45511,$45512,$45513,$45514),(nextval($45515),$45516,$45517,$45518,$45519,$45520,$45521,$45522,$45523,$45524,$45525,$45526,$45527,$45528),(nextval($45529),$45530,$45531,$45532,$45533,$45534,$45535,$45536,$45537,$45538,$45539,$45540,$45541,$45542),(nextval($45543),$45544,$45545,$45546,$45547,$45548,$45549,$45550,$45551,$45552,$45553,$45554,$45555,$45556),(nextval($45557),$45558,$45559,$45560,$45561,$45562,$45563,$45564,$45565,$45566,$45567,$45568,$45569,$45570),(nextval($45571),$45572,$45573,$45574,$45575,$45576,$45577,$45578,$45579,$45580,$45581,$45582,$45583,$45584),(nextval($45585),$45586,$45587,$45588,$45589,$45590,$45591,$45592,$45593,$45594,$45595,$45596,$45597,$45598),(nextval($45599),$45600,$45601,$45602,$45603,$45604,$45605,$45606,$45607,$45608,$45609,$45610,$45611,$45612),(nextval($45613),$45614,$45615,$45616,$45617,$45618,$45619,$45620,$45621,$45622,$45623,$45624,$45625,$45626),(nextval($45627),$45628,$45629,$45630,$45631,$45632,$45633,$45634,$45635,$45636,$45637,$45638,$45639,$45640),(nextval($45641),$45642,$45643,$45644,$45645,$45646,$45647,$45648,$45649,$45650,$45651,$45652,$45653,$45654),(nextval($45655),$45656,$45657,$45658,$45659,$45660,$45661,$45662,$45663,$45664,$45665,$45666,$45667,$45668),(nextval($45669),$45670,$45671,$45672,$45673,$45674,$45675,$45676,$45677,$45678,$45679,$45680,$45681,$45682),(nextval($45683),$45684,$45685,$45686,$45687,$45688,$45689,$45690,$45691,$45692,$45693,$45694,$45695,$45696),(nextval($45697),$45698,$45699,$45700,$45701,$45702,$45703,$45704,$45705,$45706,$45707,$45708,$45709,$45710),(nextval($45711),$45712,$45713,$45714,$45715,$45716,$45717,$45718,$45719,$45720,$45721,$45722,$45723,$45724),(nextval($45725),$45726,$45727,$45728,$45729,$45730,$45731,$45732,$45733,$45734,$45735,$45736,$45737,$45738),(nextval($45739),$45740,$45741,$45742,$45743,$45744,$45745,$45746,$45747,$45748,$45749,$45750,$45751,$45752),(nextval($45753),$45754,$45755,$45756,$45757,$45758,$45759,$45760,$45761,$45762,$45763,$45764,$45765,$45766),(nextval($45767),$45768,$45769,$45770,$45771,$45772,$45773,$45774,$45775,$45776,$45777,$45778,$45779,$45780),(nextval($45781),$45782,$45783,$45784,$45785,$45786,$45787,$45788,$45789,$45790,$45791,$45792,$45793,$45794),(nextval($45795),$45796,$45797,$45798,$45799,$45800,$45801,$45802,$45803,$45804,$45805,$45806,$45807,$45808),(nextval($45809),$45810,$45811,$45812,$45813,$45814,$45815,$45816,$45817,$45818,$45819,$45820,$45821,$45822),(nextval($45823),$45824,$45825,$45826,$45827,$45828,$45829,$45830,$45831,$45832,$45833,$45834,$45835,$45836),(nextval($45837),$45838,$45839,$45840,$45841,$45842,$45843,$45844,$45845,$45846,$45847,$45848,$45849,$45850),(nextval($45851),$45852,$45853,$45854,$45855,$45856,$45857,$45858,$45859,$45860,$45861,$45862,$45863,$45864),(nextval($45865),$45866,$45867,$45868,$45869,$45870,$45871,$45872,$45873,$45874,$45875,$45876,$45877,$45878),(nextval($45879),$45880,$45881,$45882,$45883,$45884,$45885,$45886,$45887,$45888,$45889,$45890,$45891,$45892),(nextval($45893),$45894,$45895,$45896,$45897,$45898,$45899,$45900,$45901,$45902,$45903,$45904,$45905,$45906),(nextval($45907),$45908,$45909,$45910,$45911,$45912,$45913,$45914,$45915,$45916,$45917,$45918,$45919,$45920),(nextval($45921),$45922,$45923,$45924,$45925,$45926,$45927,$45928,$45929,$45930,$45931,$45932,$45933,$45934),(nextval($45935),$45936,$45937,$45938,$45939,$45940,$45941,$45942,$45943,$45944,$45945,$45946,$45947,$45948),(nextval($45949),$45950,$45951,$45952,$45953,$45954,$45955,$45956,$45957,$45958,$45959,$45960,$45961,$45962),(nextval($45963),$45964,$45965,$45966,$45967,$45968,$45969,$45970,$45971,$45972,$45973,$45974,$45975,$45976),(nextval($45977),$45978,$45979,$45980,$45981,$45982,$45983,$45984,$45985,$45986,$45987,$45988,$45989,$45990),(nextval($45991),$45992,$45993,$45994,$45995,$45996,$45997,$45998,$45999,$46000,$46001,$46002,$46003,$46004),(nextval($46005),$46006,$46007,$46008,$46009,$46010,$46011,$46012,$46013,$46014,$46015,$46016,$46017,$46018),(nextval($46019),$46020,$46021,$46022,$46023,$46024,$46025,$46026,$46027,$46028,$46029,$46030,$46031,$46032),(nextval($46033),$46034,$46035,$46036,$46037,$46038,$46039,$46040,$46041,$46042,$46043,$46044,$46045,$46046),(nextval($46047),$46048,$46049,$46050,$46051,$46052,$46053,$46054,$46055,$46056,$46057,$46058,$46059,$46060),(nextval($46061),$46062,$46063,$46064,$46065,$46066,$46067,$46068,$46069,$46070,$46071,$46072,$46073,$46074),(nextval($46075),$46076,$46077,$46078,$46079,$46080,$46081,$46082,$46083,$46084,$46085,$46086,$46087,$46088),(nextval($46089),$46090,$46091,$46092,$46093,$46094,$46095,$46096,$46097,$46098,$46099,$46100,$46101,$46102),(nextval($46103),$46104,$46105,$46106,$46107,$46108,$46109,$46110,$46111,$46112,$46113,$46114,$46115,$46116),(nextval($46117),$46118,$46119,$46120,$46121,$46122,$46123,$46124,$46125,$46126,$46127,$46128,$46129,$46130),(nextval($46131),$46132,$46133,$46134,$46135,$46136,$46137,$46138,$46139,$46140,$46141,$46142,$46143,$46144),(nextval($46145),$46146,$46147,$46148,$46149,$46150,$46151,$46152,$46153,$46154,$46155,$46156,$46157,$46158),(nextval($46159),$46160,$46161,$46162,$46163,$46164,$46165,$46166,$46167,$46168,$46169,$46170,$46171,$46172),(nextval($46173),$46174,$46175,$46176,$46177,$46178,$46179,$46180,$46181,$46182,$46183,$46184,$46185,$46186),(nextval($46187),$46188,$46189,$46190,$46191,$46192,$46193,$46194,$46195,$46196,$46197,$46198,$46199,$46200),(nextval($46201),$46202,$46203,$46204,$46205,$46206,$46207,$46208,$46209,$46210,$46211,$46212,$46213,$46214),(nextval($46215),$46216,$46217,$46218,$46219,$46220,$46221,$46222,$46223,$46224,$46225,$46226,$46227,$46228),(nextval($46229),$46230,$46231,$46232,$46233,$46234,$46235,$46236,$46237,$46238,$46239,$46240,$46241,$46242),(nextval($46243),$46244,$46245,$46246,$46247,$46248,$46249,$46250,$46251,$46252,$46253,$46254,$46255,$46256),(nextval($46257),$46258,$46259,$46260,$46261,$46262,$46263,$46264,$46265,$46266,$46267,$46268,$46269,$46270),(nextval($46271),$46272,$46273,$46274,$46275,$46276,$46277,$46278,$46279,$46280,$46281,$46282,$46283,$46284),(nextval($46285),$46286,$46287,$46288,$46289,$46290,$46291,$46292,$46293,$46294,$46295,$46296,$46297,$46298),(nextval($46299),$46300,$46301,$46302,$46303,$46304,$46305,$46306,$46307,$46308,$46309,$46310,$46311,$46312),(nextval($46313),$46314,$46315,$46316,$46317,$46318,$46319,$46320,$46321,$46322,$46323,$46324,$46325,$46326),(nextval($46327),$46328,$46329,$46330,$46331,$46332,$46333,$46334,$46335,$46336,$46337,$46338,$46339,$46340),(nextval($46341),$46342,$46343,$46344,$46345,$46346,$46347,$46348,$46349,$46350,$46351,$46352,$46353,$46354),(nextval($46355),$46356,$46357,$46358,$46359,$46360,$46361,$46362,$46363,$46364,$46365,$46366,$46367,$46368),(nextval($46369),$46370,$46371,$46372,$46373,$46374,$46375,$46376,$46377,$46378,$46379,$46380,$46381,$46382),(nextval($46383),$46384,$46385,$46386,$46387,$46388,$46389,$46390,$46391,$46392,$46393,$46394,$46395,$46396),(nextval($46397),$46398,$46399,$46400,$46401,$46402,$46403,$46404,$46405,$46406,$46407,$46408,$46409,$46410),(nextval($46411),$46412,$46413,$46414,$46415,$46416,$46417,$46418,$46419,$46420,$46421,$46422,$46423,$46424),(nextval($46425),$46426,$46427,$46428,$46429,$46430,$46431,$46432,$46433,$46434,$46435,$46436,$46437,$46438),(nextval($46439),$46440,$46441,$46442,$46443,$46444,$46445,$46446,$46447,$46448,$46449,$46450,$46451,$46452),(nextval($46453),$46454,$46455,$46456,$46457,$46458,$46459,$46460,$46461,$46462,$46463,$46464,$46465,$46466),(nextval($46467),$46468,$46469,$46470,$46471,$46472,$46473,$46474,$46475,$46476,$46477,$46478,$46479,$46480),(nextval($46481),$46482,$46483,$46484,$46485,$46486,$46487,$46488,$46489,$46490,$46491,$46492,$46493,$46494),(nextval($46495),$46496,$46497,$46498,$46499,$46500,$46501,$46502,$46503,$46504,$46505,$46506,$46507,$46508),(nextval($46509),$46510,$46511,$46512,$46513,$46514,$46515,$46516,$46517,$46518,$46519,$46520,$46521,$46522),(nextval($46523),$46524,$46525,$46526,$46527,$46528,$46529,$46530,$46531,$46532,$46533,$46534,$46535,$46536),(nextval($46537),$46538,$46539,$46540,$46541,$46542,$46543,$46544,$46545,$46546,$46547,$46548,$46549,$46550),(nextval($46551),$46552,$46553,$46554,$46555,$46556,$46557,$46558,$46559,$46560,$46561,$46562,$46563,$46564),(nextval($46565),$46566,$46567,$46568,$46569,$46570,$46571,$46572,$46573,$46574,$46575,$46576,$46577,$46578),(nextval($46579),$46580,$46581,$46582,$46583,$46584,$46585,$46586,$46587,$46588,$46589,$46590,$46591,$46592),(nextval($46593),$46594,$46595,$46596,$46597,$46598,$46599,$46600,$46601,$46602,$46603,$46604,$46605,$46606),(nextval($46607),$46608,$46609,$46610,$46611,$46612,$46613,$46614,$46615,$46616,$46617,$46618,$46619,$46620),(nextval($46621),$46622,$46623,$46624,$46625,$46626,$46627,$46628,$46629,$46630,$46631,$46632,$46633,$46634),(nextval($46635),$46636,$46637,$46638,$46639,$46640,$46641,$46642,$46643,$46644,$46645,$46646,$46647,$46648),(nextval($46649),$46650,$46651,$46652,$46653,$46654,$46655,$46656,$46657,$46658,$46659,$46660,$46661,$46662),(nextval($46663),$46664,$46665,$46666,$46667,$46668,$46669,$46670,$46671,$46672,$46673,$46674,$46675,$46676),(nextval($46677),$46678,$46679,$46680,$46681,$46682,$46683,$46684,$46685,$46686,$46687,$46688,$46689,$46690),(nextval($46691),$46692,$46693,$46694,$46695,$46696,$46697,$46698,$46699,$46700,$46701,$46702,$46703,$46704),(nextval($46705),$46706,$46707,$46708,$46709,$46710,$46711,$46712,$46713,$46714,$46715,$46716,$46717,$46718),(nextval($46719),$46720,$46721,$46722,$46723,$46724,$46725,$46726,$46727,$46728,$46729,$46730,$46731,$46732),(nextval($46733),$46734,$46735,$46736,$46737,$46738,$46739,$46740,$46741,$46742,$46743,$46744,$46745,$46746),(nextval($46747),$46748,$46749,$46750,$46751,$46752,$46753,$46754,$46755,$46756,$46757,$46758,$46759,$46760),(nextval($46761),$46762,$46763,$46764,$46765,$46766,$46767,$46768,$46769,$46770,$46771,$46772,$46773,$46774),(nextval($46775),$46776,$46777,$46778,$46779,$46780,$46781,$46782,$46783,$46784,$46785,$46786,$46787,$46788),(nextval($46789),$46790,$46791,$46792,$46793,$46794,$46795,$46796,$46797,$46798,$46799,$46800,$46801,$46802),(nextval($46803),$46804,$46805,$46806,$46807,$46808,$46809,$46810,$46811,$46812,$46813,$46814,$46815,$46816),(nextval($46817),$46818,$46819,$46820,$46821,$46822,$46823,$46824,$46825,$46826,$46827,$46828,$46829,$46830),(nextval($46831),$46832,$46833,$46834,$46835,$46836,$46837,$46838,$46839,$46840,$46841,$46842,$46843,$46844),(nextval($46845),$46846,$46847,$46848,$46849,$46850,$46851,$46852,$46853,$46854,$46855,$46856,$46857,$46858),(nextval($46859),$46860,$46861,$46862,$46863,$46864,$46865,$46866,$46867,$46868,$46869,$46870,$46871,$46872),(nextval($46873),$46874,$46875,$46876,$46877,$46878,$46879,$46880,$46881,$46882,$46883,$46884,$46885,$46886),(nextval($46887),$46888,$46889,$46890,$46891,$46892,$46893,$46894,$46895,$46896,$46897,$46898,$46899,$46900),(nextval($46901),$46902,$46903,$46904,$46905,$46906,$46907,$46908,$46909,$46910,$46911,$46912,$46913,$46914),(nextval($46915),$46916,$46917,$46918,$46919,$46920,$46921,$46922,$46923,$46924,$46925,$46926,$46927,$46928),(nextval($46929),$46930,$46931,$46932,$46933,$46934,$46935,$46936,$46937,$46938,$46939,$46940,$46941,$46942),(nextval($46943),$46944,$46945,$46946,$46947,$46948,$46949,$46950,$46951,$46952,$46953,$46954,$46955,$46956),(nextval($46957),$46958,$46959,$46960,$46961,$46962,$46963,$46964,$46965,$46966,$46967,$46968,$46969,$46970),(nextval($46971),$46972,$46973,$46974,$46975,$46976,$46977,$46978,$46979,$46980,$46981,$46982,$46983,$46984),(nextval($46985),$46986,$46987,$46988,$46989,$46990,$46991,$46992,$46993,$46994,$46995,$46996,$46997,$46998),(nextval($46999),$47000,$47001,$47002,$47003,$47004,$47005,$47006,$47007,$47008,$47009,$47010,$47011,$47012),(nextval($47013),$47014,$47015,$47016,$47017,$47018,$47019,$47020,$47021,$47022,$47023,$47024,$47025,$47026),(nextval($47027),$47028,$47029,$47030,$47031,$47032,$47033,$47034,$47035,$47036,$47037,$47038,$47039,$47040),(nextval($47041),$47042,$47043,$47044,$47045,$47046,$47047,$47048,$47049,$47050,$47051,$47052,$47053,$47054),(nextval($47055),$47056,$47057,$47058,$47059,$47060,$47061,$47062,$47063,$47064,$47065,$47066,$47067,$47068),(nextval($47069),$47070,$47071,$47072,$47073,$47074,$47075,$47076,$47077,$47078,$47079,$47080,$47081,$47082),(nextval($47083),$47084,$47085,$47086,$47087,$47088,$47089,$47090,$47091,$47092,$47093,$47094,$47095,$47096),(nextval($47097),$47098,$47099,$47100,$47101,$47102,$47103,$47104,$47105,$47106,$47107,$47108,$47109,$47110),(nextval($47111),$47112,$47113,$47114,$47115,$47116,$47117,$47118,$47119,$47120,$47121,$47122,$47123,$47124),(nextval($47125),$47126,$47127,$47128,$47129,$47130,$47131,$47132,$47133,$47134,$47135,$47136,$47137,$47138),(nextval($47139),$47140,$47141,$47142,$47143,$47144,$47145,$47146,$47147,$47148,$47149,$47150,$47151,$47152),(nextval($47153),$47154,$47155,$47156,$47157,$47158,$47159,$47160,$47161,$47162,$47163,$47164,$47165,$47166),(nextval($47167),$47168,$47169,$47170,$47171,$47172,$47173,$47174,$47175,$47176,$47177,$47178,$47179,$47180),(nextval($47181),$47182,$47183,$47184,$47185,$47186,$47187,$47188,$47189,$47190,$47191,$47192,$47193,$47194),(nextval($47195),$47196,$47197,$47198,$47199,$47200,$47201,$47202,$47203,$47204,$47205,$47206,$47207,$47208),(nextval($47209),$47210,$47211,$47212,$47213,$47214,$47215,$47216,$47217,$47218,$47219,$47220,$47221,$47222),(nextval($47223),$47224,$47225,$47226,$47227,$47228,$47229,$47230,$47231,$47232,$47233,$47234,$47235,$47236),(nextval($47237),$47238,$47239,$47240,$47241,$47242,$47243,$47244,$47245,$47246,$47247,$47248,$47249,$47250),(nextval($47251),$47252,$47253,$47254,$47255,$47256,$47257,$47258,$47259,$47260,$47261,$47262,$47263,$47264),(nextval($47265),$47266,$47267,$47268,$47269,$47270,$47271,$47272,$47273,$47274,$47275,$47276,$47277,$47278),(nextval($47279),$47280,$47281,$47282,$47283,$47284,$47285,$47286,$47287,$47288,$47289,$47290,$47291,$47292),(nextval($47293),$47294,$47295,$47296,$47297,$47298,$47299,$47300,$47301,$47302,$47303,$47304,$47305,$47306),(nextval($47307),$47308,$47309,$47310,$47311,$47312,$47313,$47314,$47315,$47316,$47317,$47318,$47319,$47320),(nextval($47321),$47322,$47323,$47324,$47325,$47326,$47327,$47328,$47329,$47330,$47331,$47332,$47333,$47334),(nextval($47335),$47336,$47337,$47338,$47339,$47340,$47341,$47342,$47343,$47344,$47345,$47346,$47347,$47348),(nextval($47349),$47350,$47351,$47352,$47353,$47354,$47355,$47356,$47357,$47358,$47359,$47360,$47361,$47362),(nextval($47363),$47364,$47365,$47366,$47367,$47368,$47369,$47370,$47371,$47372,$47373,$47374,$47375,$47376),(nextval($47377),$47378,$47379,$47380,$47381,$47382,$47383,$47384,$47385,$47386,$47387,$47388,$47389,$47390),(nextval($47391),$47392,$47393,$47394,$47395,$47396,$47397,$47398,$47399,$47400,$47401,$47402,$47403,$47404),(nextval($47405),$47406,$47407,$47408,$47409,$47410,$47411,$47412,$47413,$47414,$47415,$47416,$47417,$47418),(nextval($47419),$47420,$47421,$47422,$47423,$47424,$47425,$47426,$47427,$47428,$47429,$47430,$47431,$47432),(nextval($47433),$47434,$47435,$47436,$47437,$47438,$47439,$47440,$47441,$47442,$47443,$47444,$47445,$47446),(nextval($47447),$47448,$47449,$47450,$47451,$47452,$47453,$47454,$47455,$47456,$47457,$47458,$47459,$47460),(nextval($47461),$47462,$47463,$47464,$47465,$47466,$47467,$47468,$47469,$47470,$47471,$47472,$47473,$47474),(nextval($47475),$47476,$47477,$47478,$47479,$47480,$47481,$47482,$47483,$47484,$47485,$47486,$47487,$47488),(nextval($47489),$47490,$47491,$47492,$47493,$47494,$47495,$47496,$47497,$47498,$47499,$47500,$47501,$47502),(nextval($47503),$47504,$47505,$47506,$47507,$47508,$47509,$47510,$47511,$47512,$47513,$47514,$47515,$47516),(nextval($47517),$47518,$47519,$47520,$47521,$47522,$47523,$47524,$47525,$47526,$47527,$47528,$47529,$47530),(nextval($47531),$47532,$47533,$47534,$47535,$47536,$47537,$47538,$47539,$47540,$47541,$47542,$47543,$47544),(nextval($47545),$47546,$47547,$47548,$47549,$47550,$47551,$47552,$47553,$47554,$47555,$47556,$47557,$47558),(nextval($47559),$47560,$47561,$47562,$47563,$47564,$47565,$47566,$47567,$47568,$47569,$47570,$47571,$47572),(nextval($47573),$47574,$47575,$47576,$47577,$47578,$47579,$47580,$47581,$47582,$47583,$47584,$47585,$47586),(nextval($47587),$47588,$47589,$47590,$47591,$47592,$47593,$47594,$47595,$47596,$47597,$47598,$47599,$47600),(nextval($47601),$47602,$47603,$47604,$47605,$47606,$47607,$47608,$47609,$47610,$47611,$47612,$47613,$47614),(nextval($47615),$47616,$47617,$47618,$47619,$47620,$47621,$47622,$47623,$47624,$47625,$47626,$47627,$47628),(nextval($47629),$47630,$47631,$47632,$47633,$47634,$47635,$47636,$47637,$47638,$47639,$47640,$47641,$47642),(nextval($47643),$47644,$47645,$47646,$47647,$47648,$47649,$47650,$47651,$47652,$47653,$47654,$47655,$47656),(nextval($47657),$47658,$47659,$47660,$47661,$47662,$47663,$47664,$47665,$47666,$47667,$47668,$47669,$47670),(nextval($47671),$47672,$47673,$47674,$47675,$47676,$47677,$47678,$47679,$47680,$47681,$47682,$47683,$47684),(nextval($47685),$47686,$47687,$47688,$47689,$47690,$47691,$47692,$47693,$47694,$47695,$47696,$47697,$47698),(nextval($47699),$47700,$47701,$47702,$47703,$47704,$47705,$47706,$47707,$47708,$47709,$47710,$47711,$47712),(nextval($47713),$47714,$47715,$47716,$47717,$47718,$47719,$47720,$47721,$47722,$47723,$47724,$47725,$47726),(nextval($47727),$47728,$47729,$47730,$47731,$47732,$47733,$47734,$47735,$47736,$47737,$47738,$47739,$47740),(nextval($47741),$47742,$47743,$47744,$47745,$47746,$47747,$47748,$47749,$47750,$47751,$47752,$47753,$47754),(nextval($47755),$47756,$47757,$47758,$47759,$47760,$47761,$47762,$47763,$47764,$47765,$47766,$47767,$47768),(nextval($47769),$47770,$47771,$47772,$47773,$47774,$47775,$47776,$47777,$47778,$47779,$47780,$47781,$47782),(nextval($47783),$47784,$47785,$47786,$47787,$47788,$47789,$47790,$47791,$47792,$47793,$47794,$47795,$47796),(nextval($47797),$47798,$47799,$47800,$47801,$47802,$47803,$47804,$47805,$47806,$47807,$47808,$47809,$47810),(nextval($47811),$47812,$47813,$47814,$47815,$47816,$47817,$47818,$47819,$47820,$47821,$47822,$47823,$47824),(nextval($47825),$47826,$47827,$47828,$47829,$47830,$47831,$47832,$47833,$47834,$47835,$47836,$47837,$47838),(nextval($47839),$47840,$47841,$47842,$47843,$47844,$47845,$47846,$47847,$47848,$47849,$47850,$47851,$47852),(nextval($47853),$47854,$47855,$47856,$47857,$47858,$47859,$47860,$47861,$47862,$47863,$47864,$47865,$47866),(nextval($47867),$47868,$47869,$47870,$47871,$47872,$47873,$47874,$47875,$47876,$47877,$47878,$47879,$47880),(nextval($47881),$47882,$47883,$47884,$47885,$47886,$47887,$47888,$47889,$47890,$47891,$47892,$47893,$47894),(nextval($47895),$47896,$47897,$47898,$47899,$47900,$47901,$47902,$47903,$47904,$47905,$47906,$47907,$47908),(nextval($47909),$47910,$47911,$47912,$47913,$47914,$47915,$47916,$47917,$47918,$47919,$47920,$47921,$47922),(nextval($47923),$47924,$47925,$47926,$47927,$47928,$47929,$47930,$47931,$47932,$47933,$47934,$47935,$47936),(nextval($47937),$47938,$47939,$47940,$47941,$47942,$47943,$47944,$47945,$47946,$47947,$47948,$47949,$47950),(nextval($47951),$47952,$47953,$47954,$47955,$47956,$47957,$47958,$47959,$47960,$47961,$47962,$47963,$47964),(nextval($47965),$47966,$47967,$47968,$47969,$47970,$47971,$47972,$47973,$47974,$47975,$47976,$47977,$47978),(nextval($47979),$47980,$47981,$47982,$47983,$47984,$47985,$47986,$47987,$47988,$47989,$47990,$47991,$47992),(nextval($47993),$47994,$47995,$47996,$47997,$47998,$47999,$48000,$48001,$48002,$48003,$48004,$48005,$48006),(nextval($48007),$48008,$48009,$48010,$48011,$48012,$48013,$48014,$48015,$48016,$48017,$48018,$48019,$48020),(nextval($48021),$48022,$48023,$48024,$48025,$48026,$48027,$48028,$48029,$48030,$48031,$48032,$48033,$48034),(nextval($48035),$48036,$48037,$48038,$48039,$48040,$48041,$48042,$48043,$48044,$48045,$48046,$48047,$48048),(nextval($48049),$48050,$48051,$48052,$48053,$48054,$48055,$48056,$48057,$48058,$48059,$48060,$48061,$48062),(nextval($48063),$48064,$48065,$48066,$48067,$48068,$48069,$48070,$48071,$48072,$48073,$48074,$48075,$48076),(nextval($48077),$48078,$48079,$48080,$48081,$48082,$48083,$48084,$48085,$48086,$48087,$48088,$48089,$48090),(nextval($48091),$48092,$48093,$48094,$48095,$48096,$48097,$48098,$48099,$48100,$48101,$48102,$48103,$48104),(nextval($48105),$48106,$48107,$48108,$48109,$48110,$48111,$48112,$48113,$48114,$48115,$48116,$48117,$48118),(nextval($48119),$48120,$48121,$48122,$48123,$48124,$48125,$48126,$48127,$48128,$48129,$48130,$48131,$48132),(nextval($48133),$48134,$48135,$48136,$48137,$48138,$48139,$48140,$48141,$48142,$48143,$48144,$48145,$48146),(nextval($48147),$48148,$48149,$48150,$48151,$48152,$48153,$48154,$48155,$48156,$48157,$48158,$48159,$48160),(nextval($48161),$48162,$48163,$48164,$48165,$48166,$48167,$48168,$48169,$48170,$48171,$48172,$48173,$48174),(nextval($48175),$48176,$48177,$48178,$48179,$48180,$48181,$48182,$48183,$48184,$48185,$48186,$48187,$48188),(nextval($48189),$48190,$48191,$48192,$48193,$48194,$48195,$48196,$48197,$48198,$48199,$48200,$48201,$48202),(nextval($48203),$48204,$48205,$48206,$48207,$48208,$48209,$48210,$48211,$48212,$48213,$48214,$48215,$48216),(nextval($48217),$48218,$48219,$48220,$48221,$48222,$48223,$48224,$48225,$48226,$48227,$48228,$48229,$48230),(nextval($48231),$48232,$48233,$48234,$48235,$48236,$48237,$48238,$48239,$48240,$48241,$48242,$48243,$48244),(nextval($48245),$48246,$48247,$48248,$48249,$48250,$48251,$48252,$48253,$48254,$48255,$48256,$48257,$48258),(nextval($48259),$48260,$48261,$48262,$48263,$48264,$48265,$48266,$48267,$48268,$48269,$48270,$48271,$48272),(nextval($48273),$48274,$48275,$48276,$48277,$48278,$48279,$48280,$48281,$48282,$48283,$48284,$48285,$48286),(nextval($48287),$48288,$48289,$48290,$48291,$48292,$48293,$48294,$48295,$48296,$48297,$48298,$48299,$48300),(nextval($48301),$48302,$48303,$48304,$48305,$48306,$48307,$48308,$48309,$48310,$48311,$48312,$48313,$48314),(nextval($48315),$48316,$48317,$48318,$48319,$48320,$48321,$48322,$48323,$48324,$48325,$48326,$48327,$48328),(nextval($48329),$48330,$48331,$48332,$48333,$48334,$48335,$48336,$48337,$48338,$48339,$48340,$48341,$48342),(nextval($48343),$48344,$48345,$48346,$48347,$48348,$48349,$48350,$48351,$48352,$48353,$48354,$48355,$48356),(nextval($48357),$48358,$48359,$48360,$48361,$48362,$48363,$48364,$48365,$48366,$48367,$48368,$48369,$48370),(nextval($48371),$48372,$48373,$48374,$48375,$48376,$48377,$48378,$48379,$48380,$48381,$48382,$48383,$48384),(nextval($48385),$48386,$48387,$48388,$48389,$48390,$48391,$48392,$48393,$48394,$48395,$48396,$48397,$48398),(nextval($48399),$48400,$48401,$48402,$48403,$48404,$48405,$48406,$48407,$48408,$48409,$48410,$48411,$48412),(nextval($48413),$48414,$48415,$48416,$48417,$48418,$48419,$48420,$48421,$48422,$48423,$48424,$48425,$48426),(nextval($48427),$48428,$48429,$48430,$48431,$48432,$48433,$48434,$48435,$48436,$48437,$48438,$48439,$48440),(nextval($48441),$48442,$48443,$48444,$48445,$48446,$48447,$48448,$48449,$48450,$48451,$48452,$48453,$48454),(nextval($48455),$48456,$48457,$48458,$48459,$48460,$48461,$48462,$48463,$48464,$48465,$48466,$48467,$48468),(nextval($48469),$48470,$48471,$48472,$48473,$48474,$48475,$48476,$48477,$48478,$48479,$48480,$48481,$48482),(nextval($48483),$48484,$48485,$48486,$48487,$48488,$48489,$48490,$48491,$48492,$48493,$48494,$48495,$48496),(nextval($48497),$48498,$48499,$48500,$48501,$48502,$48503,$48504,$48505,$48506,$48507,$48508,$48509,$48510),(nextval($48511),$48512,$48513,$48514,$48515,$48516,$48517,$48518,$48519,$48520,$48521,$48522,$48523,$48524),(nextval($48525),$48526,$48527,$48528,$48529,$48530,$48531,$48532,$48533,$48534,$48535,$48536,$48537,$48538),(nextval($48539),$48540,$48541,$48542,$48543,$48544,$48545,$48546,$48547,$48548,$48549,$48550,$48551,$48552),(nextval($48553),$48554,$48555,$48556,$48557,$48558,$48559,$48560,$48561,$48562,$48563,$48564,$48565,$48566),(nextval($48567),$48568,$48569,$48570,$48571,$48572,$48573,$48574,$48575,$48576,$48577,$48578,$48579,$48580),(nextval($48581),$48582,$48583,$48584,$48585,$48586,$48587,$48588,$48589,$48590,$48591,$48592,$48593,$48594),(nextval($48595),$48596,$48597,$48598,$48599,$48600,$48601,$48602,$48603,$48604,$48605,$48606,$48607,$48608),(nextval($48609),$48610,$48611,$48612,$48613,$48614,$48615,$48616,$48617,$48618,$48619,$48620,$48621,$48622),(nextval($48623),$48624,$48625,$48626,$48627,$48628,$48629,$48630,$48631,$48632,$48633,$48634,$48635,$48636),(nextval($48637),$48638,$48639,$48640,$48641,$48642,$48643,$48644,$48645,$48646,$48647,$48648,$48649,$48650),(nextval($48651),$48652,$48653,$48654,$48655,$48656,$48657,$48658,$48659,$48660,$48661,$48662,$48663,$48664),(nextval($48665),$48666,$48667,$48668,$48669,$48670,$48671,$48672,$48673,$48674,$48675,$48676,$48677,$48678),(nextval($48679),$48680,$48681,$48682,$48683,$48684,$48685,$48686,$48687,$48688,$48689,$48690,$48691,$48692),(nextval($48693),$48694,$48695,$48696,$48697,$48698,$48699,$48700,$48701,$48702,$48703,$48704,$48705,$48706),(nextval($48707),$48708,$48709,$48710,$48711,$48712,$48713,$48714,$48715,$48716,$48717,$48718,$48719,$48720),(nextval($48721),$48722,$48723,$48724,$48725,$48726,$48727,$48728,$48729,$48730,$48731,$48732,$48733,$48734),(nextval($48735),$48736,$48737,$48738,$48739,$48740,$48741,$48742,$48743,$48744,$48745,$48746,$48747,$48748),(nextval($48749),$48750,$48751,$48752,$48753,$48754,$48755,$48756,$48757,$48758,$48759,$48760,$48761,$48762),(nextval($48763),$48764,$48765,$48766,$48767,$48768,$48769,$48770,$48771,$48772,$48773,$48774,$48775,$48776),(nextval($48777),$48778,$48779,$48780,$48781,$48782,$48783,$48784,$48785,$48786,$48787,$48788,$48789,$48790),(nextval($48791),$48792,$48793,$48794,$48795,$48796,$48797,$48798,$48799,$48800,$48801,$48802,$48803,$48804),(nextval($48805),$48806,$48807,$48808,$48809,$48810,$48811,$48812,$48813,$48814,$48815,$48816,$48817,$48818),(nextval($48819),$48820,$48821,$48822,$48823,$48824,$48825,$48826,$48827,$48828,$48829,$48830,$48831,$48832),(nextval($48833),$48834,$48835,$48836,$48837,$48838,$48839,$48840,$48841,$48842,$48843,$48844,$48845,$48846),(nextval($48847),$48848,$48849,$48850,$48851,$48852,$48853,$48854,$48855,$48856,$48857,$48858,$48859,$48860),(nextval($48861),$48862,$48863,$48864,$48865,$48866,$48867,$48868,$48869,$48870,$48871,$48872,$48873,$48874),(nextval($48875),$48876,$48877,$48878,$48879,$48880,$48881,$48882,$48883,$48884,$48885,$48886,$48887,$48888),(nextval($48889),$48890,$48891,$48892,$48893,$48894,$48895,$48896,$48897,$48898,$48899,$48900,$48901,$48902),(nextval($48903),$48904,$48905,$48906,$48907,$48908,$48909,$48910,$48911,$48912,$48913,$48914,$48915,$48916),(nextval($48917),$48918,$48919,$48920,$48921,$48922,$48923,$48924,$48925,$48926,$48927,$48928,$48929,$48930),(nextval($48931),$48932,$48933,$48934,$48935,$48936,$48937,$48938,$48939,$48940,$48941,$48942,$48943,$48944),(nextval($48945),$48946,$48947,$48948,$48949,$48950,$48951,$48952,$48953,$48954,$48955,$48956,$48957,$48958),(nextval($48959),$48960,$48961,$48962,$48963,$48964,$48965,$48966,$48967,$48968,$48969,$48970,$48971,$48972),(nextval($48973),$48974,$48975,$48976,$48977,$48978,$48979,$48980,$48981,$48982,$48983,$48984,$48985,$48986),(nextval($48987),$48988,$48989,$48990,$48991,$48992,$48993,$48994,$48995,$48996,$48997,$48998,$48999,$49000),(nextval($49001),$49002,$49003,$49004,$49005,$49006,$49007,$49008,$49009,$49010,$49011,$49012,$49013,$49014),(nextval($49015),$49016,$49017,$49018,$49019,$49020,$49021,$49022,$49023,$49024,$49025,$49026,$49027,$49028),(nextval($49029),$49030,$49031,$49032,$49033,$49034,$49035,$49036,$49037,$49038,$49039,$49040,$49041,$49042),(nextval($49043),$49044,$49045,$49046,$49047,$49048,$49049,$49050,$49051,$49052,$49053,$49054,$49055,$49056),(nextval($49057),$49058,$49059,$49060,$49061,$49062,$49063,$49064,$49065,$49066,$49067,$49068,$49069,$49070),(nextval($49071),$49072,$49073,$49074,$49075,$49076,$49077,$49078,$49079,$49080,$49081,$49082,$49083,$49084),(nextval($49085),$49086,$49087,$49088,$49089,$49090,$49091,$49092,$49093,$49094,$49095,$49096,$49097,$49098),(nextval($49099),$49100,$49101,$49102,$49103,$49104,$49105,$49106,$49107,$49108,$49109,$49110,$49111,$49112),(nextval($49113),$49114,$49115,$49116,$49117,$49118,$49119,$49120,$49121,$49122,$49123,$49124,$49125,$49126),(nextval($49127),$49128,$49129,$49130,$49131,$49132,$49133,$49134,$49135,$49136,$49137,$49138,$49139,$49140),(nextval($49141),$49142,$49143,$49144,$49145,$49146,$49147,$49148,$49149,$49150,$49151,$49152,$49153,$49154),(nextval($49155),$49156,$49157,$49158,$49159,$49160,$49161,$49162,$49163,$49164,$49165,$49166,$49167,$49168),(nextval($49169),$49170,$49171,$49172,$49173,$49174,$49175,$49176,$49177,$49178,$49179,$49180,$49181,$49182),(nextval($49183),$49184,$49185,$49186,$49187,$49188,$49189,$49190,$49191,$49192,$49193,$49194,$49195,$49196),(nextval($49197),$49198,$49199,$49200,$49201,$49202,$49203,$49204,$49205,$49206,$49207,$49208,$49209,$49210),(nextval($49211),$49212,$49213,$49214,$49215,$49216,$49217,$49218,$49219,$49220,$49221,$49222,$49223,$49224),(nextval($49225),$49226,$49227,$49228,$49229,$49230,$49231,$49232,$49233,$49234,$49235,$49236,$49237,$49238),(nextval($49239),$49240,$49241,$49242,$49243,$49244,$49245,$49246,$49247,$49248,$49249,$49250,$49251,$49252),(nextval($49253),$49254,$49255,$49256,$49257,$49258,$49259,$49260,$49261,$49262,$49263,$49264,$49265,$49266),(nextval($49267),$49268,$49269,$49270,$49271,$49272,$49273,$49274,$49275,$49276,$49277,$49278,$49279,$49280),(nextval($49281),$49282,$49283,$49284,$49285,$49286,$49287,$49288,$49289,$49290,$49291,$49292,$49293,$49294),(nextval($49295),$49296,$49297,$49298,$49299,$49300,$49301,$49302,$49303,$49304,$49305,$49306,$49307,$49308),(nextval($49309),$49310,$49311,$49312,$49313,$49314,$49315,$49316,$49317,$49318,$49319,$49320,$49321,$49322),(nextval($49323),$49324,$49325,$49326,$49327,$49328,$49329,$49330,$49331,$49332,$49333,$49334,$49335,$49336),(nextval($49337),$49338,$49339,$49340,$49341,$49342,$49343,$49344,$49345,$49346,$49347,$49348,$49349,$49350),(nextval($49351),$49352,$49353,$49354,$49355,$49356,$49357,$49358,$49359,$49360,$49361,$49362,$49363,$49364),(nextval($49365),$49366,$49367,$49368,$49369,$49370,$49371,$49372,$49373,$49374,$49375,$49376,$49377,$49378),(nextval($49379),$49380,$49381,$49382,$49383,$49384,$49385,$49386,$49387,$49388,$49389,$49390,$49391,$49392),(nextval($49393),$49394,$49395,$49396,$49397,$49398,$49399,$49400,$49401,$49402,$49403,$49404,$49405,$49406),(nextval($49407),$49408,$49409,$49410,$49411,$49412,$49413,$49414,$49415,$49416,$49417,$49418,$49419,$49420),(nextval($49421),$49422,$49423,$49424,$49425,$49426,$49427,$49428,$49429,$49430,$49431,$49432,$49433,$49434),(nextval($49435),$49436,$49437,$49438,$49439,$49440,$49441,$49442,$49443,$49444,$49445,$49446,$49447,$49448),(nextval($49449),$49450,$49451,$49452,$49453,$49454,$49455,$49456,$49457,$49458,$49459,$49460,$49461,$49462),(nextval($49463),$49464,$49465,$49466,$49467,$49468,$49469,$49470,$49471,$49472,$49473,$49474,$49475,$49476),(nextval($49477),$49478,$49479,$49480,$49481,$49482,$49483,$49484,$49485,$49486,$49487,$49488,$49489,$49490),(nextval($49491),$49492,$49493,$49494,$49495,$49496,$49497,$49498,$49499,$49500,$49501,$49502,$49503,$49504),(nextval($49505),$49506,$49507,$49508,$49509,$49510,$49511,$49512,$49513,$49514,$49515,$49516,$49517,$49518),(nextval($49519),$49520,$49521,$49522,$49523,$49524,$49525,$49526,$49527,$49528,$49529,$49530,$49531,$49532),(nextval($49533),$49534,$49535,$49536,$49537,$49538,$49539,$49540,$49541,$49542,$49543,$49544,$49545,$49546),(nextval($49547),$49548,$49549,$49550,$49551,$49552,$49553,$49554,$49555,$49556,$49557,$49558,$49559,$49560),(nextval($49561),$49562,$49563,$49564,$49565,$49566,$49567,$49568,$49569,$49570,$49571,$49572,$49573,$49574),(nextval($49575),$49576,$49577,$49578,$49579,$49580,$49581,$49582,$49583,$49584,$49585,$49586,$49587,$49588),(nextval($49589),$49590,$49591,$49592,$49593,$49594,$49595,$49596,$49597,$49598,$49599,$49600,$49601,$49602),(nextval($49603),$49604,$49605,$49606,$49607,$49608,$49609,$49610,$49611,$49612,$49613,$49614,$49615,$49616),(nextval($49617),$49618,$49619,$49620,$49621,$49622,$49623,$49624,$49625,$49626,$49627,$49628,$49629,$49630),(nextval($49631),$49632,$49633,$49634,$49635,$49636,$49637,$49638,$49639,$49640,$49641,$49642,$49643,$49644),(nextval($49645),$49646,$49647,$49648,$49649,$49650,$49651,$49652,$49653,$49654,$49655,$49656,$49657,$49658),(nextval($49659),$49660,$49661,$49662,$49663,$49664,$49665,$49666,$49667,$49668,$49669,$49670,$49671,$49672),(nextval($49673),$49674,$49675,$49676,$49677,$49678,$49679,$49680,$49681,$49682,$49683,$49684,$49685,$49686),(nextval($49687),$49688,$49689,$49690,$49691,$49692,$49693,$49694,$49695,$49696,$49697,$49698,$49699,$49700),(nextval($49701),$49702,$49703,$49704,$49705,$49706,$49707,$49708,$49709,$49710,$49711,$49712,$49713,$49714),(nextval($49715),$49716,$49717,$49718,$49719,$49720,$49721,$49722,$49723,$49724,$49725,$49726,$49727,$49728),(nextval($49729),$49730,$49731,$49732,$49733,$49734,$49735,$49736,$49737,$49738,$49739,$49740,$49741,$49742),(nextval($49743),$49744,$49745,$49746,$49747,$49748,$49749,$49750,$49751,$49752,$49753,$49754,$49755,$49756),(nextval($49757),$49758,$49759,$49760,$49761,$49762,$49763,$49764,$49765,$49766,$49767,$49768,$49769,$49770),(nextval($49771),$49772,$49773,$49774,$49775,$49776,$49777,$49778,$49779,$49780,$49781,$49782,$49783,$49784),(nextval($49785),$49786,$49787,$49788,$49789,$49790,$49791,$49792,$49793,$49794,$49795,$49796,$49797,$49798),(nextval($49799),$49800,$49801,$49802,$49803,$49804,$49805,$49806,$49807,$49808,$49809,$49810,$49811,$49812),(nextval($49813),$49814,$49815,$49816,$49817,$49818,$49819,$49820,$49821,$49822,$49823,$49824,$49825,$49826),(nextval($49827),$49828,$49829,$49830,$49831,$49832,$49833,$49834,$49835,$49836,$49837,$49838,$49839,$49840),(nextval($49841),$49842,$49843,$49844,$49845,$49846,$49847,$49848,$49849,$49850,$49851,$49852,$49853,$49854),(nextval($49855),$49856,$49857,$49858,$49859,$49860,$49861,$49862,$49863,$49864,$49865,$49866,$49867,$49868),(nextval($49869),$49870,$49871,$49872,$49873,$49874,$49875,$49876,$49877,$49878,$49879,$49880,$49881,$49882),(nextval($49883),$49884,$49885,$49886,$49887,$49888,$49889,$49890,$49891,$49892,$49893,$49894,$49895,$49896),(nextval($49897),$49898,$49899,$49900,$49901,$49902,$49903,$49904,$49905,$49906,$49907,$49908,$49909,$49910),(nextval($49911),$49912,$49913,$49914,$49915,$49916,$49917,$49918,$49919,$49920,$49921,$49922,$49923,$49924),(nextval($49925),$49926,$49927,$49928,$49929,$49930,$49931,$49932,$49933,$49934,$49935,$49936,$49937,$49938),(nextval($49939),$49940,$49941,$49942,$49943,$49944,$49945,$49946,$49947,$49948,$49949,$49950,$49951,$49952),(nextval($49953),$49954,$49955,$49956,$49957,$49958,$49959,$49960,$49961,$49962,$49963,$49964,$49965,$49966),(nextval($49967),$49968,$49969,$49970,$49971,$49972,$49973,$49974,$49975,$49976,$49977,$49978,$49979,$49980),(nextval($49981),$49982,$49983,$49984,$49985,$49986,$49987,$49988,$49989,$49990,$49991,$49992,$49993,$49994),(nextval($49995),$49996,$49997,$49998,$49999,$50000,$50001,$50002,$50003,$50004,$50005,$50006,$50007,$50008),(nextval($50009),$50010,$50011,$50012,$50013,$50014,$50015,$50016,$50017,$50018,$50019,$50020,$50021,$50022),(nextval($50023),$50024,$50025,$50026,$50027,$50028,$50029,$50030,$50031,$50032,$50033,$50034,$50035,$50036),(nextval($50037),$50038,$50039,$50040,$50041,$50042,$50043,$50044,$50045,$50046,$50047,$50048,$50049,$50050),(nextval($50051),$50052,$50053,$50054,$50055,$50056,$50057,$50058,$50059,$50060,$50061,$50062,$50063,$50064),(nextval($50065),$50066,$50067,$50068,$50069,$50070,$50071,$50072,$50073,$50074,$50075,$50076,$50077,$50078),(nextval($50079),$50080,$50081,$50082,$50083,$50084,$50085,$50086,$50087,$50088,$50089,$50090,$50091,$50092),(nextval($50093),$50094,$50095,$50096,$50097,$50098,$50099,$50100,$50101,$50102,$50103,$50104,$50105,$50106),(nextval($50107),$50108,$50109,$50110,$50111,$50112,$50113,$50114,$50115,$50116,$50117,$50118,$50119,$50120),(nextval($50121),$50122,$50123,$50124,$50125,$50126,$50127,$50128,$50129,$50130,$50131,$50132,$50133,$50134),(nextval($50135),$50136,$50137,$50138,$50139,$50140,$50141,$50142,$50143,$50144,$50145,$50146,$50147,$50148),(nextval($50149),$50150,$50151,$50152,$50153,$50154,$50155,$50156,$50157,$50158,$50159,$50160,$50161,$50162),(nextval($50163),$50164,$50165,$50166,$50167,$50168,$50169,$50170,$50171,$50172,$50173,$50174,$50175,$50176),(nextval($50177),$50178,$50179,$50180,$50181,$50182,$50183,$50184,$50185,$50186,$50187,$50188,$50189,$50190),(nextval($50191),$50192,$50193,$50194,$50195,$50196,$50197,$50198,$50199,$50200,$50201,$50202,$50203,$50204),(nextval($50205),$50206,$50207,$50208,$50209,$50210,$50211,$50212,$50213,$50214,$50215,$50216,$50217,$50218),(nextval($50219),$50220,$50221,$50222,$50223,$50224,$50225,$50226,$50227,$50228,$50229,$50230,$50231,$50232),(nextval($50233),$50234,$50235,$50236,$50237,$50238,$50239,$50240,$50241,$50242,$50243,$50244,$50245,$50246),(nextval($50247),$50248,$50249,$50250,$50251,$50252,$50253,$50254,$50255,$50256,$50257,$50258,$50259,$50260),(nextval($50261),$50262,$50263,$50264,$50265,$50266,$50267,$50268,$50269,$50270,$50271,$50272,$50273,$50274),(nextval($50275),$50276,$50277,$50278,$50279,$50280,$50281,$50282,$50283,$50284,$50285,$50286,$50287,$50288),(nextval($50289),$50290,$50291,$50292,$50293,$50294,$50295,$50296,$50297,$50298,$50299,$50300,$50301,$50302),(nextval($50303),$50304,$50305,$50306,$50307,$50308,$50309,$50310,$50311,$50312,$50313,$50314,$50315,$50316),(nextval($50317),$50318,$50319,$50320,$50321,$50322,$50323,$50324,$50325,$50326,$50327,$50328,$50329,$50330),(nextval($50331),$50332,$50333,$50334,$50335,$50336,$50337,$50338,$50339,$50340,$50341,$50342,$50343,$50344),(nextval($50345),$50346,$50347,$50348,$50349,$50350,$50351,$50352,$50353,$50354,$50355,$50356,$50357,$50358),(nextval($50359),$50360,$50361,$50362,$50363,$50364,$50365,$50366,$50367,$50368,$50369,$50370,$50371,$50372),(nextval($50373),$50374,$50375,$50376,$50377,$50378,$50379,$50380,$50381,$50382,$50383,$50384,$50385,$50386),(nextval($50387),$50388,$50389,$50390,$50391,$50392,$50393,$50394,$50395,$50396,$50397,$50398,$50399,$50400),(nextval($50401),$50402,$50403,$50404,$50405,$50406,$50407,$50408,$50409,$50410,$50411,$50412,$50413,$50414),(nextval($50415),$50416,$50417,$50418,$50419,$50420,$50421,$50422,$50423,$50424,$50425,$50426,$50427,$50428),(nextval($50429),$50430,$50431,$50432,$50433,$50434,$50435,$50436,$50437,$50438,$50439,$50440,$50441,$50442),(nextval($50443),$50444,$50445,$50446,$50447,$50448,$50449,$50450,$50451,$50452,$50453,$50454,$50455,$50456),(nextval($50457),$50458,$50459,$50460,$50461,$50462,$50463,$50464,$50465,$50466,$50467,$50468,$50469,$50470),(nextval($50471),$50472,$50473,$50474,$50475,$50476,$50477,$50478,$50479,$50480,$50481,$50482,$50483,$50484),(nextval($50485),$50486,$50487,$50488,$50489,$50490,$50491,$50492,$50493,$50494,$50495,$50496,$50497,$50498),(nextval($50499),$50500,$50501,$50502,$50503,$50504,$50505,$50506,$50507,$50508,$50509,$50510,$50511,$50512),(nextval($50513),$50514,$50515,$50516,$50517,$50518,$50519,$50520,$50521,$50522,$50523,$50524,$50525,$50526),(nextval($50527),$50528,$50529,$50530,$50531,$50532,$50533,$50534,$50535,$50536,$50537,$50538,$50539,$50540),(nextval($50541),$50542,$50543,$50544,$50545,$50546,$50547,$50548,$50549,$50550,$50551,$50552,$50553,$50554),(nextval($50555),$50556,$50557,$50558,$50559,$50560,$50561,$50562,$50563,$50564,$50565,$50566,$50567,$50568),(nextval($50569),$50570,$50571,$50572,$50573,$50574,$50575,$50576,$50577,$50578,$50579,$50580,$50581,$50582),(nextval($50583),$50584,$50585,$50586,$50587,$50588,$50589,$50590,$50591,$50592,$50593,$50594,$50595,$50596),(nextval($50597),$50598,$50599,$50600,$50601,$50602,$50603,$50604,$50605,$50606,$50607,$50608,$50609,$50610),(nextval($50611),$50612,$50613,$50614,$50615,$50616,$50617,$50618,$50619,$50620,$50621,$50622,$50623,$50624),(nextval($50625),$50626,$50627,$50628,$50629,$50630,$50631,$50632,$50633,$50634,$50635,$50636,$50637,$50638),(nextval($50639),$50640,$50641,$50642,$50643,$50644,$50645,$50646,$50647,$50648,$50649,$50650,$50651,$50652),(nextval($50653),$50654,$50655,$50656,$50657,$50658,$50659,$50660,$50661,$50662,$50663,$50664,$50665,$50666),(nextval($50667),$50668,$50669,$50670,$50671,$50672,$50673,$50674,$50675,$50676,$50677,$50678,$50679,$50680),(nextval($50681),$50682,$50683,$50684,$50685,$50686,$50687,$50688,$50689,$50690,$50691,$50692,$50693,$50694),(nextval($50695),$50696,$50697,$50698,$50699,$50700,$50701,$50702,$50703,$50704,$50705,$50706,$50707,$50708),(nextval($50709),$50710,$50711,$50712,$50713,$50714,$50715,$50716,$50717,$50718,$50719,$50720,$50721,$50722),(nextval($50723),$50724,$50725,$50726,$50727,$50728,$50729,$50730,$50731,$50732,$50733,$50734,$50735,$50736),(nextval($50737),$50738,$50739,$50740,$50741,$50742,$50743,$50744,$50745,$50746,$50747,$50748,$50749,$50750),(nextval($50751),$50752,$50753,$50754,$50755,$50756,$50757,$50758,$50759,$50760,$50761,$50762,$50763,$50764),(nextval($50765),$50766,$50767,$50768,$50769,$50770,$50771,$50772,$50773,$50774,$50775,$50776,$50777,$50778),(nextval($50779),$50780,$50781,$50782,$50783,$50784,$50785,$50786,$50787,$50788,$50789,$50790,$50791,$50792),(nextval($50793),$50794,$50795,$50796,$50797,$50798,$50799,$50800,$50801,$50802,$50803,$50804,$50805,$50806),(nextval($50807),$50808,$50809,$50810,$50811,$50812,$50813,$50814,$50815,$50816,$50817,$50818,$50819,$50820),(nextval($50821),$50822,$50823,$50824,$50825,$50826,$50827,$50828,$50829,$50830,$50831,$50832,$50833,$50834),(nextval($50835),$50836,$50837,$50838,$50839,$50840,$50841,$50842,$50843,$50844,$50845,$50846,$50847,$50848),(nextval($50849),$50850,$50851,$50852,$50853,$50854,$50855,$50856,$50857,$50858,$50859,$50860,$50861,$50862),(nextval($50863),$50864,$50865,$50866,$50867,$50868,$50869,$50870,$50871,$50872,$50873,$50874,$50875,$50876),(nextval($50877),$50878,$50879,$50880,$50881,$50882,$50883,$50884,$50885,$50886,$50887,$50888,$50889,$50890),(nextval($50891),$50892,$50893,$50894,$50895,$50896,$50897,$50898,$50899,$50900,$50901,$50902,$50903,$50904),(nextval($50905),$50906,$50907,$50908,$50909,$50910,$50911,$50912,$50913,$50914,$50915,$50916,$50917,$50918),(nextval($50919),$50920,$50921,$50922,$50923,$50924,$50925,$50926,$50927,$50928,$50929,$50930,$50931,$50932),(nextval($50933),$50934,$50935,$50936,$50937,$50938,$50939,$50940,$50941,$50942,$50943,$50944,$50945,$50946),(nextval($50947),$50948,$50949,$50950,$50951,$50952,$50953,$50954,$50955,$50956,$50957,$50958,$50959,$50960),(nextval($50961),$50962,$50963,$50964,$50965,$50966,$50967,$50968,$50969,$50970,$50971,$50972,$50973,$50974),(nextval($50975),$50976,$50977,$50978,$50979,$50980,$50981,$50982,$50983,$50984,$50985,$50986,$50987,$50988),(nextval($50989),$50990,$50991,$50992,$50993,$50994,$50995,$50996,$50997,$50998,$50999,$51000,$51001,$51002),(nextval($51003),$51004,$51005,$51006,$51007,$51008,$51009,$51010,$51011,$51012,$51013,$51014,$51015,$51016),(nextval($51017),$51018,$51019,$51020,$51021,$51022,$51023,$51024,$51025,$51026,$51027,$51028,$51029,$51030),(nextval($51031),$51032,$51033,$51034,$51035,$51036,$51037,$51038,$51039,$51040,$51041,$51042,$51043,$51044),(nextval($51045),$51046,$51047,$51048,$51049,$51050,$51051,$51052,$51053,$51054,$51055,$51056,$51057,$51058),(nextval($51059),$51060,$51061,$51062,$51063,$51064,$51065,$51066,$51067,$51068,$51069,$51070,$51071,$51072),(nextval($51073),$51074,$51075,$51076,$51077,$51078,$51079,$51080,$51081,$51082,$51083,$51084,$51085,$51086),(nextval($51087),$51088,$51089,$51090,$51091,$51092,$51093,$51094,$51095,$51096,$51097,$51098,$51099,$51100),(nextval($51101),$51102,$51103,$51104,$51105,$51106,$51107,$51108,$51109,$51110,$51111,$51112,$51113,$51114),(nextval($51115),$51116,$51117,$51118,$51119,$51120,$51121,$51122,$51123,$51124,$51125,$51126,$51127,$51128),(nextval($51129),$51130,$51131,$51132,$51133,$51134,$51135,$51136,$51137,$51138,$51139,$51140,$51141,$51142),(nextval($51143),$51144,$51145,$51146,$51147,$51148,$51149,$51150,$51151,$51152,$51153,$51154,$51155,$51156),(nextval($51157),$51158,$51159,$51160,$51161,$51162,$51163,$51164,$51165,$51166,$51167,$51168,$51169,$51170),(nextval($51171),$51172,$51173,$51174,$51175,$51176,$51177,$51178,$51179,$51180,$51181,$51182,$51183,$51184),(nextval($51185),$51186,$51187,$51188,$51189,$51190,$51191,$51192,$51193,$51194,$51195,$51196,$51197,$51198),(nextval($51199),$51200,$51201,$51202,$51203,$51204,$51205,$51206,$51207,$51208,$51209,$51210,$51211,$51212),(nextval($51213),$51214,$51215,$51216,$51217,$51218,$51219,$51220,$51221,$51222,$51223,$51224,$51225,$51226),(nextval($51227),$51228,$51229,$51230,$51231,$51232,$51233,$51234,$51235,$51236,$51237,$51238,$51239,$51240),(nextval($51241),$51242,$51243,$51244,$51245,$51246,$51247,$51248,$51249,$51250,$51251,$51252,$51253,$51254),(nextval($51255),$51256,$51257,$51258,$51259,$51260,$51261,$51262,$51263,$51264,$51265,$51266,$51267,$51268),(nextval($51269),$51270,$51271,$51272,$51273,$51274,$51275,$51276,$51277,$51278,$51279,$51280,$51281,$51282),(nextval($51283),$51284,$51285,$51286,$51287,$51288,$51289,$51290,$51291,$51292,$51293,$51294,$51295,$51296),(nextval($51297),$51298,$51299,$51300,$51301,$51302,$51303,$51304,$51305,$51306,$51307,$51308,$51309,$51310),(nextval($51311),$51312,$51313,$51314,$51315,$51316,$51317,$51318,$51319,$51320,$51321,$51322,$51323,$51324),(nextval($51325),$51326,$51327,$51328,$51329,$51330,$51331,$51332,$51333,$51334,$51335,$51336,$51337,$51338),(nextval($51339),$51340,$51341,$51342,$51343,$51344,$51345,$51346,$51347,$51348,$51349,$51350,$51351,$51352),(nextval($51353),$51354,$51355,$51356,$51357,$51358,$51359,$51360,$51361,$51362,$51363,$51364,$51365,$51366),(nextval($51367),$51368,$51369,$51370,$51371,$51372,$51373,$51374,$51375,$51376,$51377,$51378,$51379,$51380),(nextval($51381),$51382,$51383,$51384,$51385,$51386,$51387,$51388,$51389,$51390,$51391,$51392,$51393,$51394),(nextval($51395),$51396,$51397,$51398,$51399,$51400,$51401,$51402,$51403,$51404,$51405,$51406,$51407,$51408),(nextval($51409),$51410,$51411,$51412,$51413,$51414,$51415,$51416,$51417,$51418,$51419,$51420,$51421,$51422),(nextval($51423),$51424,$51425,$51426,$51427,$51428,$51429,$51430,$51431,$51432,$51433,$51434,$51435,$51436),(nextval($51437),$51438,$51439,$51440,$51441,$51442,$51443,$51444,$51445,$51446,$51447,$51448,$51449,$51450),(nextval($51451),$51452,$51453,$51454,$51455,$51456,$51457,$51458,$51459,$51460,$51461,$51462,$51463,$51464),(nextval($51465),$51466,$51467,$51468,$51469,$51470,$51471,$51472,$51473,$51474,$51475,$51476,$51477,$51478),(nextval($51479),$51480,$51481,$51482,$51483,$51484,$51485,$51486,$51487,$51488,$51489,$51490,$51491,$51492),(nextval($51493),$51494,$51495,$51496,$51497,$51498,$51499,$51500,$51501,$51502,$51503,$51504,$51505,$51506),(nextval($51507),$51508,$51509,$51510,$51511,$51512,$51513,$51514,$51515,$51516,$51517,$51518,$51519,$51520),(nextval($51521),$51522,$51523,$51524,$51525,$51526,$51527,$51528,$51529,$51530,$51531,$51532,$51533,$51534),(nextval($51535),$51536,$51537,$51538,$51539,$51540,$51541,$51542,$51543,$51544,$51545,$51546,$51547,$51548),(nextval($51549),$51550,$51551,$51552,$51553,$51554,$51555,$51556,$51557,$51558,$51559,$51560,$51561,$51562),(nextval($51563),$51564,$51565,$51566,$51567,$51568,$51569,$51570,$51571,$51572,$51573,$51574,$51575,$51576),(nextval($51577),$51578,$51579,$51580,$51581,$51582,$51583,$51584,$51585,$51586,$51587,$51588,$51589,$51590),(nextval($51591),$51592,$51593,$51594,$51595,$51596,$51597,$51598,$51599,$51600,$51601,$51602,$51603,$51604),(nextval($51605),$51606,$51607,$51608,$51609,$51610,$51611,$51612,$51613,$51614,$51615,$51616,$51617,$51618),(nextval($51619),$51620,$51621,$51622,$51623,$51624,$51625,$51626,$51627,$51628,$51629,$51630,$51631,$51632),(nextval($51633),$51634,$51635,$51636,$51637,$51638,$51639,$51640,$51641,$51642,$51643,$51644,$51645,$51646),(nextval($51647),$51648,$51649,$51650,$51651,$51652,$51653,$51654,$51655,$51656,$51657,$51658,$51659,$51660),(nextval($51661),$51662,$51663,$51664,$51665,$51666,$51667,$51668,$51669,$51670,$51671,$51672,$51673,$51674),(nextval($51675),$51676,$51677,$51678,$51679,$51680,$51681,$51682,$51683,$51684,$51685,$51686,$51687,$51688),(nextval($51689),$51690,$51691,$51692,$51693,$51694,$51695,$51696,$51697,$51698,$51699,$51700,$51701,$51702),(nextval($51703),$51704,$51705,$51706,$51707,$51708,$51709,$51710,$51711,$51712,$51713,$51714,$51715,$51716),(nextval($51717),$51718,$51719,$51720,$51721,$51722,$51723,$51724,$51725,$51726,$51727,$51728,$51729,$51730),(nextval($51731),$51732,$51733,$51734,$51735,$51736,$51737,$51738,$51739,$51740,$51741,$51742,$51743,$51744),(nextval($51745),$51746,$51747,$51748,$51749,$51750,$51751,$51752,$51753,$51754,$51755,$51756,$51757,$51758),(nextval($51759),$51760,$51761,$51762,$51763,$51764,$51765,$51766,$51767,$51768,$51769,$51770,$51771,$51772),(nextval($51773),$51774,$51775,$51776,$51777,$51778,$51779,$51780,$51781,$51782,$51783,$51784,$51785,$51786),(nextval($51787),$51788,$51789,$51790,$51791,$51792,$51793,$51794,$51795,$51796,$51797,$51798,$51799,$51800),(nextval($51801),$51802,$51803,$51804,$51805,$51806,$51807,$51808,$51809,$51810,$51811,$51812,$51813,$51814),(nextval($51815),$51816,$51817,$51818,$51819,$51820,$51821,$51822,$51823,$51824,$51825,$51826,$51827,$51828),(nextval($51829),$51830,$51831,$51832,$51833,$51834,$51835,$51836,$51837,$51838,$51839,$51840,$51841,$51842),(nextval($51843),$51844,$51845,$51846,$51847,$51848,$51849,$51850,$51851,$51852,$51853,$51854,$51855,$51856),(nextval($51857),$51858,$51859,$51860,$51861,$51862,$51863,$51864,$51865,$51866,$51867,$51868,$51869,$51870),(nextval($51871),$51872,$51873,$51874,$51875,$51876,$51877,$51878,$51879,$51880,$51881,$51882,$51883,$51884),(nextval($51885),$51886,$51887,$51888,$51889,$51890,$51891,$51892,$51893,$51894,$51895,$51896,$51897,$51898),(nextval($51899),$51900,$51901,$51902,$51903,$51904,$51905,$51906,$51907,$51908,$51909,$51910,$51911,$51912),(nextval($51913),$51914,$51915,$51916,$51917,$51918,$51919,$51920,$51921,$51922,$51923,$51924,$51925,$51926),(nextval($51927),$51928,$51929,$51930,$51931,$51932,$51933,$51934,$51935,$51936,$51937,$51938,$51939,$51940),(nextval($51941),$51942,$51943,$51944,$51945,$51946,$51947,$51948,$51949,$51950,$51951,$51952,$51953,$51954),(nextval($51955),$51956,$51957,$51958,$51959,$51960,$51961,$51962,$51963,$51964,$51965,$51966,$51967,$51968),(nextval($51969),$51970,$51971,$51972,$51973,$51974,$51975,$51976,$51977,$51978,$51979,$51980,$51981,$51982),(nextval($51983),$51984,$51985,$51986,$51987,$51988,$51989,$51990,$51991,$51992,$51993,$51994,$51995,$51996),(nextval($51997),$51998,$51999,$52000,$52001,$52002,$52003,$52004,$52005,$52006,$52007,$52008,$52009,$52010),(nextval($52011),$52012,$52013,$52014,$52015,$52016,$52017,$52018,$52019,$52020,$52021,$52022,$52023,$52024),(nextval($52025),$52026,$52027,$52028,$52029,$52030,$52031,$52032,$52033,$52034,$52035,$52036,$52037,$52038),(nextval($52039),$52040,$52041,$52042,$52043,$52044,$52045,$52046,$52047,$52048,$52049,$52050,$52051,$52052),(nextval($52053),$52054,$52055,$52056,$52057,$52058,$52059,$52060,$52061,$52062,$52063,$52064,$52065,$52066),(nextval($52067),$52068,$52069,$52070,$52071,$52072,$52073,$52074,$52075,$52076,$52077,$52078,$52079,$52080),(nextval($52081),$52082,$52083,$52084,$52085,$52086,$52087,$52088,$52089,$52090,$52091,$52092,$52093,$52094),(nextval($52095),$52096,$52097,$52098,$52099,$52100,$52101,$52102,$52103,$52104,$52105,$52106,$52107,$52108),(nextval($52109),$52110,$52111,$52112,$52113,$52114,$52115,$52116,$52117,$52118,$52119,$52120,$52121,$52122),(nextval($52123),$52124,$52125,$52126,$52127,$52128,$52129,$52130,$52131,$52132,$52133,$52134,$52135,$52136),(nextval($52137),$52138,$52139,$52140,$52141,$52142,$52143,$52144,$52145,$52146,$52147,$52148,$52149,$52150),(nextval($52151),$52152,$52153,$52154,$52155,$52156,$52157,$52158,$52159,$52160,$52161,$52162,$52163,$52164),(nextval($52165),$52166,$52167,$52168,$52169,$52170,$52171,$52172,$52173,$52174,$52175,$52176,$52177,$52178),(nextval($52179),$52180,$52181,$52182,$52183,$52184,$52185,$52186,$52187,$52188,$52189,$52190,$52191,$52192),(nextval($52193),$52194,$52195,$52196,$52197,$52198,$52199,$52200,$52201,$52202,$52203,$52204,$52205,$52206),(nextval($52207),$52208,$52209,$52210,$52211,$52212,$52213,$52214,$52215,$52216,$52217,$52218,$52219,$52220),(nextval($52221),$52222,$52223,$52224,$52225,$52226,$52227,$52228,$52229,$52230,$52231,$52232,$52233,$52234),(nextval($52235),$52236,$52237,$52238,$52239,$52240,$52241,$52242,$52243,$52244,$52245,$52246,$52247,$52248),(nextval($52249),$52250,$52251,$52252,$52253,$52254,$52255,$52256,$52257,$52258,$52259,$52260,$52261,$52262),(nextval($52263),$52264,$52265,$52266,$52267,$52268,$52269,$52270,$52271,$52272,$52273,$52274,$52275,$52276),(nextval($52277),$52278,$52279,$52280,$52281,$52282,$52283,$52284,$52285,$52286,$52287,$52288,$52289,$52290),(nextval($52291),$52292,$52293,$52294,$52295,$52296,$52297,$52298,$52299,$52300,$52301,$52302,$52303,$52304),(nextval($52305),$52306,$52307,$52308,$52309,$52310,$52311,$52312,$52313,$52314,$52315,$52316,$52317,$52318),(nextval($52319),$52320,$52321,$52322,$52323,$52324,$52325,$52326,$52327,$52328,$52329,$52330,$52331,$52332),(nextval($52333),$52334,$52335,$52336,$52337,$52338,$52339,$52340,$52341,$52342,$52343,$52344,$52345,$52346),(nextval($52347),$52348,$52349,$52350,$52351,$52352,$52353,$52354,$52355,$52356,$52357,$52358,$52359,$52360),(nextval($52361),$52362,$52363,$52364,$52365,$52366,$52367,$52368,$52369,$52370,$52371,$52372,$52373,$52374),(nextval($52375),$52376,$52377,$52378,$52379,$52380,$52381,$52382,$52383,$52384,$52385,$52386,$52387,$52388),(nextval($52389),$52390,$52391,$52392,$52393,$52394,$52395,$52396,$52397,$52398,$52399,$52400,$52401,$52402),(nextval($52403),$52404,$52405,$52406,$52407,$52408,$52409,$52410,$52411,$52412,$52413,$52414,$52415,$52416),(nextval($52417),$52418,$52419,$52420,$52421,$52422,$52423,$52424,$52425,$52426,$52427,$52428,$52429,$52430),(nextval($52431),$52432,$52433,$52434,$52435,$52436,$52437,$52438,$52439,$52440,$52441,$52442,$52443,$52444),(nextval($52445),$52446,$52447,$52448,$52449,$52450,$52451,$52452,$52453,$52454,$52455,$52456,$52457,$52458),(nextval($52459),$52460,$52461,$52462,$52463,$52464,$52465,$52466,$52467,$52468,$52469,$52470,$52471,$52472),(nextval($52473),$52474,$52475,$52476,$52477,$52478,$52479,$52480,$52481,$52482,$52483,$52484,$52485,$52486),(nextval($52487),$52488,$52489,$52490,$52491,$52492,$52493,$52494,$52495,$52496,$52497,$52498,$52499,$52500),(nextval($52501),$52502,$52503,$52504,$52505,$52506,$52507,$52508,$52509,$52510,$52511,$52512,$52513,$52514),(nextval($52515),$52516,$52517,$52518,$52519,$52520,$52521,$52522,$52523,$52524,$52525,$52526,$52527,$52528),(nextval($52529),$52530,$52531,$52532,$52533,$52534,$52535,$52536,$52537,$52538,$52539,$52540,$52541,$52542),(nextval($52543),$52544,$52545,$52546,$52547,$52548,$52549,$52550,$52551,$52552,$52553,$52554,$52555,$52556),(nextval($52557),$52558,$52559,$52560,$52561,$52562,$52563,$52564,$52565,$52566,$52567,$52568,$52569,$52570),(nextval($52571),$52572,$52573,$52574,$52575,$52576,$52577,$52578,$52579,$52580,$52581,$52582,$52583,$52584),(nextval($52585),$52586,$52587,$52588,$52589,$52590,$52591,$52592,$52593,$52594,$52595,$52596,$52597,$52598),(nextval($52599),$52600,$52601,$52602,$52603,$52604,$52605,$52606,$52607,$52608,$52609,$52610,$52611,$52612),(nextval($52613),$52614,$52615,$52616,$52617,$52618,$52619,$52620,$52621,$52622,$52623,$52624,$52625,$52626),(nextval($52627),$52628,$52629,$52630,$52631,$52632,$52633,$52634,$52635,$52636,$52637,$52638,$52639,$52640),(nextval($52641),$52642,$52643,$52644,$52645,$52646,$52647,$52648,$52649,$52650,$52651,$52652,$52653,$52654),(nextval($52655),$52656,$52657,$52658,$52659,$52660,$52661,$52662,$52663,$52664,$52665,$52666,$52667,$52668),(nextval($52669),$52670,$52671,$52672,$52673,$52674,$52675,$52676,$52677,$52678,$52679,$52680,$52681,$52682),(nextval($52683),$52684,$52685,$52686,$52687,$52688,$52689,$52690,$52691,$52692,$52693,$52694,$52695,$52696),(nextval($52697),$52698,$52699,$52700,$52701,$52702,$52703,$52704,$52705,$52706,$52707,$52708,$52709,$52710),(nextval($52711),$52712,$52713,$52714,$52715,$52716,$52717,$52718,$52719,$52720,$52721,$52722,$52723,$52724),(nextval($52725),$52726,$52727,$52728,$52729,$52730,$52731,$52732,$52733,$52734,$52735,$52736,$52737,$52738),(nextval($52739),$52740,$52741,$52742,$52743,$52744,$52745,$52746,$52747,$52748,$52749,$52750,$52751,$52752),(nextval($52753),$52754,$52755,$52756,$52757,$52758,$52759,$52760,$52761,$52762,$52763,$52764,$52765,$52766),(nextval($52767),$52768,$52769,$52770,$52771,$52772,$52773,$52774,$52775,$52776,$52777,$52778,$52779,$52780),(nextval($52781),$52782,$52783,$52784,$52785,$52786,$52787,$52788,$52789,$52790,$52791,$52792,$52793,$52794),(nextval($52795),$52796,$52797,$52798,$52799,$52800,$52801,$52802,$52803,$52804,$52805,$52806,$52807,$52808),(nextval($52809),$52810,$52811,$52812,$52813,$52814,$52815,$52816,$52817,$52818,$52819,$52820,$52821,$52822),(nextval($52823),$52824,$52825,$52826,$52827,$52828,$52829,$52830,$52831,$52832,$52833,$52834,$52835,$52836),(nextval($52837),$52838,$52839,$52840,$52841,$52842,$52843,$52844,$52845,$52846,$52847,$52848,$52849,$52850),(nextval($52851),$52852,$52853,$52854,$52855,$52856,$52857,$52858,$52859,$52860,$52861,$52862,$52863,$52864),(nextval($52865),$52866,$52867,$52868,$52869,$52870,$52871,$52872,$52873,$52874,$52875,$52876,$52877,$52878),(nextval($52879),$52880,$52881,$52882,$52883,$52884,$52885,$52886,$52887,$52888,$52889,$52890,$52891,$52892),(nextval($52893),$52894,$52895,$52896,$52897,$52898,$52899,$52900,$52901,$52902,$52903,$52904,$52905,$52906),(nextval($52907),$52908,$52909,$52910,$52911,$52912,$52913,$52914,$52915,$52916,$52917,$52918,$52919,$52920),(nextval($52921),$52922,$52923,$52924,$52925,$52926,$52927,$52928,$52929,$52930,$52931,$52932,$52933,$52934),(nextval($52935),$52936,$52937,$52938,$52939,$52940,$52941,$52942,$52943,$52944,$52945,$52946,$52947,$52948),(nextval($52949),$52950,$52951,$52952,$52953,$52954,$52955,$52956,$52957,$52958,$52959,$52960,$52961,$52962),(nextval($52963),$52964,$52965,$52966,$52967,$52968,$52969,$52970,$52971,$52972,$52973,$52974,$52975,$52976),(nextval($52977),$52978,$52979,$52980,$52981,$52982,$52983,$52984,$52985,$52986,$52987,$52988,$52989,$52990),(nextval($52991),$52992,$52993,$52994,$52995,$52996,$52997,$52998,$52999,$53000,$53001,$53002,$53003,$53004),(nextval($53005),$53006,$53007,$53008,$53009,$53010,$53011,$53012,$53013,$53014,$53015,$53016,$53017,$53018),(nextval($53019),$53020,$53021,$53022,$53023,$53024,$53025,$53026,$53027,$53028,$53029,$53030,$53031,$53032),(nextval($53033),$53034,$53035,$53036,$53037,$53038,$53039,$53040,$53041,$53042,$53043,$53044,$53045,$53046),(nextval($53047),$53048,$53049,$53050,$53051,$53052,$53053,$53054,$53055,$53056,$53057,$53058,$53059,$53060),(nextval($53061),$53062,$53063,$53064,$53065,$53066,$53067,$53068,$53069,$53070,$53071,$53072,$53073,$53074),(nextval($53075),$53076,$53077,$53078,$53079,$53080,$53081,$53082,$53083,$53084,$53085,$53086,$53087,$53088),(nextval($53089),$53090,$53091,$53092,$53093,$53094,$53095,$53096,$53097,$53098,$53099,$53100,$53101,$53102),(nextval($53103),$53104,$53105,$53106,$53107,$53108,$53109,$53110,$53111,$53112,$53113,$53114,$53115,$53116),(nextval($53117),$53118,$53119,$53120,$53121,$53122,$53123,$53124,$53125,$53126,$53127,$53128,$53129,$53130),(nextval($53131),$53132,$53133,$53134,$53135,$53136,$53137,$53138,$53139,$53140,$53141,$53142,$53143,$53144),(nextval($53145),$53146,$53147,$53148,$53149,$53150,$53151,$53152,$53153,$53154,$53155,$53156,$53157,$53158),(nextval($53159),$53160,$53161,$53162,$53163,$53164,$53165,$53166,$53167,$53168,$53169,$53170,$53171,$53172),(nextval($53173),$53174,$53175,$53176,$53177,$53178,$53179,$53180,$53181,$53182,$53183,$53184,$53185,$53186),(nextval($53187),$53188,$53189,$53190,$53191,$53192,$53193,$53194,$53195,$53196,$53197,$53198,$53199,$53200),(nextval($53201),$53202,$53203,$53204,$53205,$53206,$53207,$53208,$53209,$53210,$53211,$53212,$53213,$53214),(nextval($53215),$53216,$53217,$53218,$53219,$53220,$53221,$53222,$53223,$53224,$53225,$53226,$53227,$53228),(nextval($53229),$53230,$53231,$53232,$53233,$53234,$53235,$53236,$53237,$53238,$53239,$53240,$53241,$53242),(nextval($53243),$53244,$53245,$53246,$53247,$53248,$53249,$53250,$53251,$53252,$53253,$53254,$53255,$53256),(nextval($53257),$53258,$53259,$53260,$53261,$53262,$53263,$53264,$53265,$53266,$53267,$53268,$53269,$53270),(nextval($53271),$53272,$53273,$53274,$53275,$53276,$53277,$53278,$53279,$53280,$53281,$53282,$53283,$53284),(nextval($53285),$53286,$53287,$53288,$53289,$53290,$53291,$53292,$53293,$53294,$53295,$53296,$53297,$53298),(nextval($53299),$53300,$53301,$53302,$53303,$53304,$53305,$53306,$53307,$53308,$53309,$53310,$53311,$53312),(nextval($53313),$53314,$53315,$53316,$53317,$53318,$53319,$53320,$53321,$53322,$53323,$53324,$53325,$53326),(nextval($53327),$53328,$53329,$53330,$53331,$53332,$53333,$53334,$53335,$53336,$53337,$53338,$53339,$53340),(nextval($53341),$53342,$53343,$53344,$53345,$53346,$53347,$53348,$53349,$53350,$53351,$53352,$53353,$53354),(nextval($53355),$53356,$53357,$53358,$53359,$53360,$53361,$53362,$53363,$53364,$53365,$53366,$53367,$53368),(nextval($53369),$53370,$53371,$53372,$53373,$53374,$53375,$53376,$53377,$53378,$53379,$53380,$53381,$53382),(nextval($53383),$53384,$53385,$53386,$53387,$53388,$53389,$53390,$53391,$53392,$53393,$53394,$53395,$53396),(nextval($53397),$53398,$53399,$53400,$53401,$53402,$53403,$53404,$53405,$53406,$53407,$53408,$53409,$53410),(nextval($53411),$53412,$53413,$53414,$53415,$53416,$53417,$53418,$53419,$53420,$53421,$53422,$53423,$53424),(nextval($53425),$53426,$53427,$53428,$53429,$53430,$53431,$53432,$53433,$53434,$53435,$53436,$53437,$53438),(nextval($53439),$53440,$53441,$53442,$53443,$53444,$53445,$53446,$53447,$53448,$53449,$53450,$53451,$53452),(nextval($53453),$53454,$53455,$53456,$53457,$53458,$53459,$53460,$53461,$53462,$53463,$53464,$53465,$53466),(nextval($53467),$53468,$53469,$53470,$53471,$53472,$53473,$53474,$53475,$53476,$53477,$53478,$53479,$53480),(nextval($53481),$53482,$53483,$53484,$53485,$53486,$53487,$53488,$53489,$53490,$53491,$53492,$53493,$53494),(nextval($53495),$53496,$53497,$53498,$53499,$53500,$53501,$53502,$53503,$53504,$53505,$53506,$53507,$53508),(nextval($53509),$53510,$53511,$53512,$53513,$53514,$53515,$53516,$53517,$53518,$53519,$53520,$53521,$53522),(nextval($53523),$53524,$53525,$53526,$53527,$53528,$53529,$53530,$53531,$53532,$53533,$53534,$53535,$53536),(nextval($53537),$53538,$53539,$53540,$53541,$53542,$53543,$53544,$53545,$53546,$53547,$53548,$53549,$53550),(nextval($53551),$53552,$53553,$53554,$53555,$53556,$53557,$53558,$53559,$53560,$53561,$53562,$53563,$53564),(nextval($53565),$53566,$53567,$53568,$53569,$53570,$53571,$53572,$53573,$53574,$53575,$53576,$53577,$53578),(nextval($53579),$53580,$53581,$53582,$53583,$53584,$53585,$53586,$53587,$53588,$53589,$53590,$53591,$53592),(nextval($53593),$53594,$53595,$53596,$53597,$53598,$53599,$53600,$53601,$53602,$53603,$53604,$53605,$53606),(nextval($53607),$53608,$53609,$53610,$53611,$53612,$53613,$53614,$53615,$53616,$53617,$53618,$53619,$53620),(nextval($53621),$53622,$53623,$53624,$53625,$53626,$53627,$53628,$53629,$53630,$53631,$53632,$53633,$53634),(nextval($53635),$53636,$53637,$53638,$53639,$53640,$53641,$53642,$53643,$53644,$53645,$53646,$53647,$53648),(nextval($53649),$53650,$53651,$53652,$53653,$53654,$53655,$53656,$53657,$53658,$53659,$53660,$53661,$53662),(nextval($53663),$53664,$53665,$53666,$53667,$53668,$53669,$53670,$53671,$53672,$53673,$53674,$53675,$53676),(nextval($53677),$53678,$53679,$53680,$53681,$53682,$53683,$53684,$53685,$53686,$53687,$53688,$53689,$53690),(nextval($53691),$53692,$53693,$53694,$53695,$53696,$53697,$53698,$53699,$53700,$53701,$53702,$53703,$53704),(nextval($53705),$53706,$53707,$53708,$53709,$53710,$53711,$53712,$53713,$53714,$53715,$53716,$53717,$53718),(nextval($53719),$53720,$53721,$53722,$53723,$53724,$53725,$53726,$53727,$53728,$53729,$53730,$53731,$53732),(nextval($53733),$53734,$53735,$53736,$53737,$53738,$53739,$53740,$53741,$53742,$53743,$53744,$53745,$53746),(nextval($53747),$53748,$53749,$53750,$53751,$53752,$53753,$53754,$53755,$53756,$53757,$53758,$53759,$53760),(nextval($53761),$53762,$53763,$53764,$53765,$53766,$53767,$53768,$53769,$53770,$53771,$53772,$53773,$53774),(nextval($53775),$53776,$53777,$53778,$53779,$53780,$53781,$53782,$53783,$53784,$53785,$53786,$53787,$53788),(nextval($53789),$53790,$53791,$53792,$53793,$53794,$53795,$53796,$53797,$53798,$53799,$53800,$53801,$53802),(nextval($53803),$53804,$53805,$53806,$53807,$53808,$53809,$53810,$53811,$53812,$53813,$53814,$53815,$53816),(nextval($53817),$53818,$53819,$53820,$53821,$53822,$53823,$53824,$53825,$53826,$53827,$53828,$53829,$53830),(nextval($53831),$53832,$53833,$53834,$53835,$53836,$53837,$53838,$53839,$53840,$53841,$53842,$53843,$53844),(nextval($53845),$53846,$53847,$53848,$53849,$53850,$53851,$53852,$53853,$53854,$53855,$53856,$53857,$53858),(nextval($53859),$53860,$53861,$53862,$53863,$53864,$53865,$53866,$53867,$53868,$53869,$53870,$53871,$53872),(nextval($53873),$53874,$53875,$53876,$53877,$53878,$53879,$53880,$53881,$53882,$53883,$53884,$53885,$53886),(nextval($53887),$53888,$53889,$53890,$53891,$53892,$53893,$53894,$53895,$53896,$53897,$53898,$53899,$53900),(nextval($53901),$53902,$53903,$53904,$53905,$53906,$53907,$53908,$53909,$53910,$53911,$53912,$53913,$53914),(nextval($53915),$53916,$53917,$53918,$53919,$53920,$53921,$53922,$53923,$53924,$53925,$53926,$53927,$53928),(nextval($53929),$53930,$53931,$53932,$53933,$53934,$53935,$53936,$53937,$53938,$53939,$53940,$53941,$53942),(nextval($53943),$53944,$53945,$53946,$53947,$53948,$53949,$53950,$53951,$53952,$53953,$53954,$53955,$53956),(nextval($53957),$53958,$53959,$53960,$53961,$53962,$53963,$53964,$53965,$53966,$53967,$53968,$53969,$53970),(nextval($53971),$53972,$53973,$53974,$53975,$53976,$53977,$53978,$53979,$53980,$53981,$53982,$53983,$53984),(nextval($53985),$53986,$53987,$53988,$53989,$53990,$53991,$53992,$53993,$53994,$53995,$53996,$53997,$53998),(nextval($53999),$54000,$54001,$54002,$54003,$54004,$54005,$54006,$54007,$54008,$54009,$54010,$54011,$54012),(nextval($54013),$54014,$54015,$54016,$54017,$54018,$54019,$54020,$54021,$54022,$54023,$54024,$54025,$54026),(nextval($54027),$54028,$54029,$54030,$54031,$54032,$54033,$54034,$54035,$54036,$54037,$54038,$54039,$54040),(nextval($54041),$54042,$54043,$54044,$54045,$54046,$54047,$54048,$54049,$54050,$54051,$54052,$54053,$54054),(nextval($54055),$54056,$54057,$54058,$54059,$54060,$54061,$54062,$54063,$54064,$54065,$54066,$54067,$54068),(nextval($54069),$54070,$54071,$54072,$54073,$54074,$54075,$54076,$54077,$54078,$54079,$54080,$54081,$54082),(nextval($54083),$54084,$54085,$54086,$54087,$54088,$54089,$54090,$54091,$54092,$54093,$54094,$54095,$54096),(nextval($54097),$54098,$54099,$54100,$54101,$54102,$54103,$54104,$54105,$54106,$54107,$54108,$54109,$54110),(nextval($54111),$54112,$54113,$54114,$54115,$54116,$54117,$54118,$54119,$54120,$54121,$54122,$54123,$54124),(nextval($54125),$54126,$54127,$54128,$54129,$54130,$54131,$54132,$54133,$54134,$54135,$54136,$54137,$54138),(nextval($54139),$54140,$54141,$54142,$54143,$54144,$54145,$54146,$54147,$54148,$54149,$54150,$54151,$54152),(nextval($54153),$54154,$54155,$54156,$54157,$54158,$54159,$54160,$54161,$54162,$54163,$54164,$54165,$54166),(nextval($54167),$54168,$54169,$54170,$54171,$54172,$54173,$54174,$54175,$54176,$54177,$54178,$54179,$54180),(nextval($54181),$54182,$54183,$54184,$54185,$54186,$54187,$54188,$54189,$54190,$54191,$54192,$54193,$54194),(nextval($54195),$54196,$54197,$54198,$54199,$54200,$54201,$54202,$54203,$54204,$54205,$54206,$54207,$54208),(nextval($54209),$54210,$54211,$54212,$54213,$54214,$54215,$54216,$54217,$54218,$54219,$54220,$54221,$54222),(nextval($54223),$54224,$54225,$54226,$54227,$54228,$54229,$54230,$54231,$54232,$54233,$54234,$54235,$54236),(nextval($54237),$54238,$54239,$54240,$54241,$54242,$54243,$54244,$54245,$54246,$54247,$54248,$54249,$54250),(nextval($54251),$54252,$54253,$54254,$54255,$54256,$54257,$54258,$54259,$54260,$54261,$54262,$54263,$54264),(nextval($54265),$54266,$54267,$54268,$54269,$54270,$54271,$54272,$54273,$54274,$54275,$54276,$54277,$54278),(nextval($54279),$54280,$54281,$54282,$54283,$54284,$54285,$54286,$54287,$54288,$54289,$54290,$54291,$54292),(nextval($54293),$54294,$54295,$54296,$54297,$54298,$54299,$54300,$54301,$54302,$54303,$54304,$54305,$54306),(nextval($54307),$54308,$54309,$54310,$54311,$54312,$54313,$54314,$54315,$54316,$54317,$54318,$54319,$54320),(nextval($54321),$54322,$54323,$54324,$54325,$54326,$54327,$54328,$54329,$54330,$54331,$54332,$54333,$54334),(nextval($54335),$54336,$54337,$54338,$54339,$54340,$54341,$54342,$54343,$54344,$54345,$54346,$54347,$54348),(nextval($54349),$54350,$54351,$54352,$54353,$54354,$54355,$54356,$54357,$54358,$54359,$54360,$54361,$54362),(nextval($54363),$54364,$54365,$54366,$54367,$54368,$54369,$54370,$54371,$54372,$54373,$54374,$54375,$54376),(nextval($54377),$54378,$54379,$54380,$54381,$54382,$54383,$54384,$54385,$54386,$54387,$54388,$54389,$54390),(nextval($54391),$54392,$54393,$54394,$54395,$54396,$54397,$54398,$54399,$54400,$54401,$54402,$54403,$54404),(nextval($54405),$54406,$54407,$54408,$54409,$54410,$54411,$54412,$54413,$54414,$54415,$54416,$54417,$54418),(nextval($54419),$54420,$54421,$54422,$54423,$54424,$54425,$54426,$54427,$54428,$54429,$54430,$54431,$54432),(nextval($54433),$54434,$54435,$54436,$54437,$54438,$54439,$54440,$54441,$54442,$54443,$54444,$54445,$54446),(nextval($54447),$54448,$54449,$54450,$54451,$54452,$54453,$54454,$54455,$54456,$54457,$54458,$54459,$54460),(nextval($54461),$54462,$54463,$54464,$54465,$54466,$54467,$54468,$54469,$54470,$54471,$54472,$54473,$54474),(nextval($54475),$54476,$54477,$54478,$54479,$54480,$54481,$54482,$54483,$54484,$54485,$54486,$54487,$54488),(nextval($54489),$54490,$54491,$54492,$54493,$54494,$54495,$54496,$54497,$54498,$54499,$54500,$54501,$54502),(nextval($54503),$54504,$54505,$54506,$54507,$54508,$54509,$54510,$54511,$54512,$54513,$54514,$54515,$54516),(nextval($54517),$54518,$54519,$54520,$54521,$54522,$54523,$54524,$54525,$54526,$54527,$54528,$54529,$54530),(nextval($54531),$54532,$54533,$54534,$54535,$54536,$54537,$54538,$54539,$54540,$54541,$54542,$54543,$54544),(nextval($54545),$54546,$54547,$54548,$54549,$54550,$54551,$54552,$54553,$54554,$54555,$54556,$54557,$54558),(nextval($54559),$54560,$54561,$54562,$54563,$54564,$54565,$54566,$54567,$54568,$54569,$54570,$54571,$54572),(nextval($54573),$54574,$54575,$54576,$54577,$54578,$54579,$54580,$54581,$54582,$54583,$54584,$54585,$54586),(nextval($54587),$54588,$54589,$54590,$54591,$54592,$54593,$54594,$54595,$54596,$54597,$54598,$54599,$54600),(nextval($54601),$54602,$54603,$54604,$54605,$54606,$54607,$54608,$54609,$54610,$54611,$54612,$54613,$54614),(nextval($54615),$54616,$54617,$54618,$54619,$54620,$54621,$54622,$54623,$54624,$54625,$54626,$54627,$54628),(nextval($54629),$54630,$54631,$54632,$54633,$54634,$54635,$54636,$54637,$54638,$54639,$54640,$54641,$54642),(nextval($54643),$54644,$54645,$54646,$54647,$54648,$54649,$54650,$54651,$54652,$54653,$54654,$54655,$54656),(nextval($54657),$54658,$54659,$54660,$54661,$54662,$54663,$54664,$54665,$54666,$54667,$54668,$54669,$54670),(nextval($54671),$54672,$54673,$54674,$54675,$54676,$54677,$54678,$54679,$54680,$54681,$54682,$54683,$54684),(nextval($54685),$54686,$54687,$54688,$54689,$54690,$54691,$54692,$54693,$54694,$54695,$54696,$54697,$54698),(nextval($54699),$54700,$54701,$54702,$54703,$54704,$54705,$54706,$54707,$54708,$54709,$54710,$54711,$54712),(nextval($54713),$54714,$54715,$54716,$54717,$54718,$54719,$54720,$54721,$54722,$54723,$54724,$54725,$54726),(nextval($54727),$54728,$54729,$54730,$54731,$54732,$54733,$54734,$54735,$54736,$54737,$54738,$54739,$54740),(nextval($54741),$54742,$54743,$54744,$54745,$54746,$54747,$54748,$54749,$54750,$54751,$54752,$54753,$54754),(nextval($54755),$54756,$54757,$54758,$54759,$54760,$54761,$54762,$54763,$54764,$54765,$54766,$54767,$54768),(nextval($54769),$54770,$54771,$54772,$54773,$54774,$54775,$54776,$54777,$54778,$54779,$54780,$54781,$54782),(nextval($54783),$54784,$54785,$54786,$54787,$54788,$54789,$54790,$54791,$54792,$54793,$54794,$54795,$54796),(nextval($54797),$54798,$54799,$54800,$54801,$54802,$54803,$54804,$54805,$54806,$54807,$54808,$54809,$54810),(nextval($54811),$54812,$54813,$54814,$54815,$54816,$54817,$54818,$54819,$54820,$54821,$54822,$54823,$54824),(nextval($54825),$54826,$54827,$54828,$54829,$54830,$54831,$54832,$54833,$54834,$54835,$54836,$54837,$54838),(nextval($54839),$54840,$54841,$54842,$54843,$54844,$54845,$54846,$54847,$54848,$54849,$54850,$54851,$54852),(nextval($54853),$54854,$54855,$54856,$54857,$54858,$54859,$54860,$54861,$54862,$54863,$54864,$54865,$54866),(nextval($54867),$54868,$54869,$54870,$54871,$54872,$54873,$54874,$54875,$54876,$54877,$54878,$54879,$54880),(nextval($54881),$54882,$54883,$54884,$54885,$54886,$54887,$54888,$54889,$54890,$54891,$54892,$54893,$54894),(nextval($54895),$54896,$54897,$54898,$54899,$54900,$54901,$54902,$54903,$54904,$54905,$54906,$54907,$54908),(nextval($54909),$54910,$54911,$54912,$54913,$54914,$54915,$54916,$54917,$54918,$54919,$54920,$54921,$54922),(nextval($54923),$54924,$54925,$54926,$54927,$54928,$54929,$54930,$54931,$54932,$54933,$54934,$54935,$54936),(nextval($54937),$54938,$54939,$54940,$54941,$54942,$54943,$54944,$54945,$54946,$54947,$54948,$54949,$54950),(nextval($54951),$54952,$54953,$54954,$54955,$54956,$54957,$54958,$54959,$54960,$54961,$54962,$54963,$54964),(nextval($54965),$54966,$54967,$54968,$54969,$54970,$54971,$54972,$54973,$54974,$54975,$54976,$54977,$54978),(nextval($54979),$54980,$54981,$54982,$54983,$54984,$54985,$54986,$54987,$54988,$54989,$54990,$54991,$54992),(nextval($54993),$54994,$54995,$54996,$54997,$54998,$54999,$55000,$55001,$55002,$55003,$55004,$55005,$55006),(nextval($55007),$55008,$55009,$55010,$55011,$55012,$55013,$55014,$55015,$55016,$55017,$55018,$55019,$55020),(nextval($55021),$55022,$55023,$55024,$55025,$55026,$55027,$55028,$55029,$55030,$55031,$55032,$55033,$55034),(nextval($55035),$55036,$55037,$55038,$55039,$55040,$55041,$55042,$55043,$55044,$55045,$55046,$55047,$55048),(nextval($55049),$55050,$55051,$55052,$55053,$55054,$55055,$55056,$55057,$55058,$55059,$55060,$55061,$55062),(nextval($55063),$55064,$55065,$55066,$55067,$55068,$55069,$55070,$55071,$55072,$55073,$55074,$55075,$55076),(nextval($55077),$55078,$55079,$55080,$55081,$55082,$55083,$55084,$55085,$55086,$55087,$55088,$55089,$55090),(nextval($55091),$55092,$55093,$55094,$55095,$55096,$55097,$55098,$55099,$55100,$55101,$55102,$55103,$55104),(nextval($55105),$55106,$55107,$55108,$55109,$55110,$55111,$55112,$55113,$55114,$55115,$55116,$55117,$55118),(nextval($55119),$55120,$55121,$55122,$55123,$55124,$55125,$55126,$55127,$55128,$55129,$55130,$55131,$55132),(nextval($55133),$55134,$55135,$55136,$55137,$55138,$55139,$55140,$55141,$55142,$55143,$55144,$55145,$55146),(nextval($55147),$55148,$55149,$55150,$55151,$55152,$55153,$55154,$55155,$55156,$55157,$55158,$55159,$55160),(nextval($55161),$55162,$55163,$55164,$55165,$55166,$55167,$55168,$55169,$55170,$55171,$55172,$55173,$55174),(nextval($55175),$55176,$55177,$55178,$55179,$55180,$55181,$55182,$55183,$55184,$55185,$55186,$55187,$55188),(nextval($55189),$55190,$55191,$55192,$55193,$55194,$55195,$55196,$55197,$55198,$55199,$55200,$55201,$55202),(nextval($55203),$55204,$55205,$55206,$55207,$55208,$55209,$55210,$55211,$55212,$55213,$55214,$55215,$55216),(nextval($55217),$55218,$55219,$55220,$55221,$55222,$55223,$55224,$55225,$55226,$55227,$55228,$55229,$55230),(nextval($55231),$55232,$55233,$55234,$55235,$55236,$55237,$55238,$55239,$55240,$55241,$55242,$55243,$55244),(nextval($55245),$55246,$55247,$55248,$55249,$55250,$55251,$55252,$55253,$55254,$55255,$55256,$55257,$55258),(nextval($55259),$55260,$55261,$55262,$55263,$55264,$55265,$55266,$55267,$55268,$55269,$55270,$55271,$55272),(nextval($55273),$55274,$55275,$55276,$55277,$55278,$55279,$55280,$55281,$55282,$55283,$55284,$55285,$55286),(nextval($55287),$55288,$55289,$55290,$55291,$55292,$55293,$55294,$55295,$55296,$55297,$55298,$55299,$55300),(nextval($55301),$55302,$55303,$55304,$55305,$55306,$55307,$55308,$55309,$55310,$55311,$55312,$55313,$55314),(nextval($55315),$55316,$55317,$55318,$55319,$55320,$55321,$55322,$55323,$55324,$55325,$55326,$55327,$55328),(nextval($55329),$55330,$55331,$55332,$55333,$55334,$55335,$55336,$55337,$55338,$55339,$55340,$55341,$55342),(nextval($55343),$55344,$55345,$55346,$55347,$55348,$55349,$55350,$55351,$55352,$55353,$55354,$55355,$55356),(nextval($55357),$55358,$55359,$55360,$55361,$55362,$55363,$55364,$55365,$55366,$55367,$55368,$55369,$55370),(nextval($55371),$55372,$55373,$55374,$55375,$55376,$55377,$55378,$55379,$55380,$55381,$55382,$55383,$55384),(nextval($55385),$55386,$55387,$55388,$55389,$55390,$55391,$55392,$55393,$55394,$55395,$55396,$55397,$55398),(nextval($55399),$55400,$55401,$55402,$55403,$55404,$55405,$55406,$55407,$55408,$55409,$55410,$55411,$55412),(nextval($55413),$55414,$55415,$55416,$55417,$55418,$55419,$55420,$55421,$55422,$55423,$55424,$55425,$55426),(nextval($55427),$55428,$55429,$55430,$55431,$55432,$55433,$55434,$55435,$55436,$55437,$55438,$55439,$55440),(nextval($55441),$55442,$55443,$55444,$55445,$55446,$55447,$55448,$55449,$55450,$55451,$55452,$55453,$55454),(nextval($55455),$55456,$55457,$55458,$55459,$55460,$55461,$55462,$55463,$55464,$55465,$55466,$55467,$55468),(nextval($55469),$55470,$55471,$55472,$55473,$55474,$55475,$55476,$55477,$55478,$55479,$55480,$55481,$55482),(nextval($55483),$55484,$55485,$55486,$55487,$55488,$55489,$55490,$55491,$55492,$55493,$55494,$55495,$55496),(nextval($55497),$55498,$55499,$55500,$55501,$55502,$55503,$55504,$55505,$55506,$55507,$55508,$55509,$55510),(nextval($55511),$55512,$55513,$55514,$55515,$55516,$55517,$55518,$55519,$55520,$55521,$55522,$55523,$55524),(nextval($55525),$55526,$55527,$55528,$55529,$55530,$55531,$55532,$55533,$55534,$55535,$55536,$55537,$55538),(nextval($55539),$55540,$55541,$55542,$55543,$55544,$55545,$55546,$55547,$55548,$55549,$55550,$55551,$55552),(nextval($55553),$55554,$55555,$55556,$55557,$55558,$55559,$55560,$55561,$55562,$55563,$55564,$55565,$55566),(nextval($55567),$55568,$55569,$55570,$55571,$55572,$55573,$55574,$55575,$55576,$55577,$55578,$55579,$55580),(nextval($55581),$55582,$55583,$55584,$55585,$55586,$55587,$55588,$55589,$55590,$55591,$55592,$55593,$55594),(nextval($55595),$55596,$55597,$55598,$55599,$55600,$55601,$55602,$55603,$55604,$55605,$55606,$55607,$55608),(nextval($55609),$55610,$55611,$55612,$55613,$55614,$55615,$55616,$55617,$55618,$55619,$55620,$55621,$55622),(nextval($55623),$55624,$55625,$55626,$55627,$55628,$55629,$55630,$55631,$55632,$55633,$55634,$55635,$55636),(nextval($55637),$55638,$55639,$55640,$55641,$55642,$55643,$55644,$55645,$55646,$55647,$55648,$55649,$55650),(nextval($55651),$55652,$55653,$55654,$55655,$55656,$55657,$55658,$55659,$55660,$55661,$55662,$55663,$55664),(nextval($55665),$55666,$55667,$55668,$55669,$55670,$55671,$55672,$55673,$55674,$55675,$55676,$55677,$55678),(nextval($55679),$55680,$55681,$55682,$55683,$55684,$55685,$55686,$55687,$55688,$55689,$55690,$55691,$55692),(nextval($55693),$55694,$55695,$55696,$55697,$55698,$55699,$55700,$55701,$55702,$55703,$55704,$55705,$55706),(nextval($55707),$55708,$55709,$55710,$55711,$55712,$55713,$55714,$55715,$55716,$55717,$55718,$55719,$55720),(nextval($55721),$55722,$55723,$55724,$55725,$55726,$55727,$55728,$55729,$55730,$55731,$55732,$55733,$55734),(nextval($55735),$55736,$55737,$55738,$55739,$55740,$55741,$55742,$55743,$55744,$55745,$55746,$55747,$55748),(nextval($55749),$55750,$55751,$55752,$55753,$55754,$55755,$55756,$55757,$55758,$55759,$55760,$55761,$55762),(nextval($55763),$55764,$55765,$55766,$55767,$55768,$55769,$55770,$55771,$55772,$55773,$55774,$55775,$55776),(nextval($55777),$55778,$55779,$55780,$55781,$55782,$55783,$55784,$55785,$55786,$55787,$55788,$55789,$55790),(nextval($55791),$55792,$55793,$55794,$55795,$55796,$55797,$55798,$55799,$55800,$55801,$55802,$55803,$55804),(nextval($55805),$55806,$55807,$55808,$55809,$55810,$55811,$55812,$55813,$55814,$55815,$55816,$55817,$55818),(nextval($55819),$55820,$55821,$55822,$55823,$55824,$55825,$55826,$55827,$55828,$55829,$55830,$55831,$55832),(nextval($55833),$55834,$55835,$55836,$55837,$55838,$55839,$55840,$55841,$55842,$55843,$55844,$55845,$55846),(nextval($55847),$55848,$55849,$55850,$55851,$55852,$55853,$55854,$55855,$55856,$55857,$55858,$55859,$55860),(nextval($55861),$55862,$55863,$55864,$55865,$55866,$55867,$55868,$55869,$55870,$55871,$55872,$55873,$55874),(nextval($55875),$55876,$55877,$55878,$55879,$55880,$55881,$55882,$55883,$55884,$55885,$55886,$55887,$55888),(nextval($55889),$55890,$55891,$55892,$55893,$55894,$55895,$55896,$55897,$55898,$55899,$55900,$55901,$55902),(nextval($55903),$55904,$55905,$55906,$55907,$55908,$55909,$55910,$55911,$55912,$55913,$55914,$55915,$55916),(nextval($55917),$55918,$55919,$55920,$55921,$55922,$55923,$55924,$55925,$55926,$55927,$55928,$55929,$55930),(nextval($55931),$55932,$55933,$55934,$55935,$55936,$55937,$55938,$55939,$55940,$55941,$55942,$55943,$55944),(nextval($55945),$55946,$55947,$55948,$55949,$55950,$55951,$55952,$55953,$55954,$55955,$55956,$55957,$55958),(nextval($55959),$55960,$55961,$55962,$55963,$55964,$55965,$55966,$55967,$55968,$55969,$55970,$55971,$55972),(nextval($55973),$55974,$55975,$55976,$55977,$55978,$55979,$55980,$55981,$55982,$55983,$55984,$55985,$55986),(nextval($55987),$55988,$55989,$55990,$55991,$55992,$55993,$55994,$55995,$55996,$55997,$55998,$55999,$56000),(nextval($56001),$56002,$56003,$56004,$56005,$56006,$56007,$56008,$56009,$56010,$56011,$56012,$56013,$56014),(nextval($56015),$56016,$56017,$56018,$56019,$56020,$56021,$56022,$56023,$56024,$56025,$56026,$56027,$56028),(nextval($56029),$56030,$56031,$56032,$56033,$56034,$56035,$56036,$56037,$56038,$56039,$56040,$56041,$56042),(nextval($56043),$56044,$56045,$56046,$56047,$56048,$56049,$56050,$56051,$56052,$56053,$56054,$56055,$56056),(nextval($56057),$56058,$56059,$56060,$56061,$56062,$56063,$56064,$56065,$56066,$56067,$56068,$56069,$56070),(nextval($56071),$56072,$56073,$56074,$56075,$56076,$56077,$56078,$56079,$56080,$56081,$56082,$56083,$56084),(nextval($56085),$56086,$56087,$56088,$56089,$56090,$56091,$56092,$56093,$56094,$56095,$56096,$56097,$56098),(nextval($56099),$56100,$56101,$56102,$56103,$56104,$56105,$56106,$56107,$56108,$56109,$56110,$56111,$56112),(nextval($56113),$56114,$56115,$56116,$56117,$56118,$56119,$56120,$56121,$56122,$56123,$56124,$56125,$56126),(nextval($56127),$56128,$56129,$56130,$56131,$56132,$56133,$56134,$56135,$56136,$56137,$56138,$56139,$56140),(nextval($56141),$56142,$56143,$56144,$56145,$56146,$56147,$56148,$56149,$56150,$56151,$56152,$56153,$56154),(nextval($56155),$56156,$56157,$56158,$56159,$56160,$56161,$56162,$56163,$56164,$56165,$56166,$56167,$56168),(nextval($56169),$56170,$56171,$56172,$56173,$56174,$56175,$56176,$56177,$56178,$56179,$56180,$56181,$56182),(nextval($56183),$56184,$56185,$56186,$56187,$56188,$56189,$56190,$56191,$56192,$56193,$56194,$56195,$56196),(nextval($56197),$56198,$56199,$56200,$56201,$56202,$56203,$56204,$56205,$56206,$56207,$56208,$56209,$56210),(nextval($56211),$56212,$56213,$56214,$56215,$56216,$56217,$56218,$56219,$56220,$56221,$56222,$56223,$56224),(nextval($56225),$56226,$56227,$56228,$56229,$56230,$56231,$56232,$56233,$56234,$56235,$56236,$56237,$56238),(nextval($56239),$56240,$56241,$56242,$56243,$56244,$56245,$56246,$56247,$56248,$56249,$56250,$56251,$56252),(nextval($56253),$56254,$56255,$56256,$56257,$56258,$56259,$56260,$56261,$56262,$56263,$56264,$56265,$56266),(nextval($56267),$56268,$56269,$56270,$56271,$56272,$56273,$56274,$56275,$56276,$56277,$56278,$56279,$56280),(nextval($56281),$56282,$56283,$56284,$56285,$56286,$56287,$56288,$56289,$56290,$56291,$56292,$56293,$56294),(nextval($56295),$56296,$56297,$56298,$56299,$56300,$56301,$56302,$56303,$56304,$56305,$56306,$56307,$56308),(nextval($56309),$56310,$56311,$56312,$56313,$56314,$56315,$56316,$56317,$56318,$56319,$56320,$56321,$56322),(nextval($56323),$56324,$56325,$56326,$56327,$56328,$56329,$56330,$56331,$56332,$56333,$56334,$56335,$56336),(nextval($56337),$56338,$56339,$56340,$56341,$56342,$56343,$56344,$56345,$56346,$56347,$56348,$56349,$56350),(nextval($56351),$56352,$56353,$56354,$56355,$56356,$56357,$56358,$56359,$56360,$56361,$56362,$56363,$56364),(nextval($56365),$56366,$56367,$56368,$56369,$56370,$56371,$56372,$56373,$56374,$56375,$56376,$56377,$56378),(nextval($56379),$56380,$56381,$56382,$56383,$56384,$56385,$56386,$56387,$56388,$56389,$56390,$56391,$56392),(nextval($56393),$56394,$56395,$56396,$56397,$56398,$56399,$56400,$56401,$56402,$56403,$56404,$56405,$56406),(nextval($56407),$56408,$56409,$56410,$56411,$56412,$56413,$56414,$56415,$56416,$56417,$56418,$56419,$56420),(nextval($56421),$56422,$56423,$56424,$56425,$56426,$56427,$56428,$56429,$56430,$56431,$56432,$56433,$56434),(nextval($56435),$56436,$56437,$56438,$56439,$56440,$56441,$56442,$56443,$56444,$56445,$56446,$56447,$56448),(nextval($56449),$56450,$56451,$56452,$56453,$56454,$56455,$56456,$56457,$56458,$56459,$56460,$56461,$56462),(nextval($56463),$56464,$56465,$56466,$56467,$56468,$56469,$56470,$56471,$56472,$56473,$56474,$56475,$56476),(nextval($56477),$56478,$56479,$56480,$56481,$56482,$56483,$56484,$56485,$56486,$56487,$56488,$56489,$56490),(nextval($56491),$56492,$56493,$56494,$56495,$56496,$56497,$56498,$56499,$56500,$56501,$56502,$56503,$56504),(nextval($56505),$56506,$56507,$56508,$56509,$56510,$56511,$56512,$56513,$56514,$56515,$56516,$56517,$56518),(nextval($56519),$56520,$56521,$56522,$56523,$56524,$56525,$56526,$56527,$56528,$56529,$56530,$56531,$56532),(nextval($56533),$56534,$56535,$56536,$56537,$56538,$56539,$56540,$56541,$56542,$56543,$56544,$56545,$56546),(nextval($56547),$56548,$56549,$56550,$56551,$56552,$56553,$56554,$56555,$56556,$56557,$56558,$56559,$56560),(nextval($56561),$56562,$56563,$56564,$56565,$56566,$56567,$56568,$56569,$56570,$56571,$56572,$56573,$56574),(nextval($56575),$56576,$56577,$56578,$56579,$56580,$56581,$56582,$56583,$56584,$56585,$56586,$56587,$56588),(nextval($56589),$56590,$56591,$56592,$56593,$56594,$56595,$56596,$56597,$56598,$56599,$56600,$56601,$56602),(nextval($56603),$56604,$56605,$56606,$56607,$56608,$56609,$56610,$56611,$56612,$56613,$56614,$56615,$56616),(nextval($56617),$56618,$56619,$56620,$56621,$56622,$56623,$56624,$56625,$56626,$56627,$56628,$56629,$56630),(nextval($56631),$56632,$56633,$56634,$56635,$56636,$56637,$56638,$56639,$56640,$56641,$56642,$56643,$56644),(nextval($56645),$56646,$56647,$56648,$56649,$56650,$56651,$56652,$56653,$56654,$56655,$56656,$56657,$56658),(nextval($56659),$56660,$56661,$56662,$56663,$56664,$56665,$56666,$56667,$56668,$56669,$56670,$56671,$56672),(nextval($56673),$56674,$56675,$56676,$56677,$56678,$56679,$56680,$56681,$56682,$56683,$56684,$56685,$56686),(nextval($56687),$56688,$56689,$56690,$56691,$56692,$56693,$56694,$56695,$56696,$56697,$56698,$56699,$56700),(nextval($56701),$56702,$56703,$56704,$56705,$56706,$56707,$56708,$56709,$56710,$56711,$56712,$56713,$56714),(nextval($56715),$56716,$56717,$56718,$56719,$56720,$56721,$56722,$56723,$56724,$56725,$56726,$56727,$56728),(nextval($56729),$56730,$56731,$56732,$56733,$56734,$56735,$56736,$56737,$56738,$56739,$56740,$56741,$56742),(nextval($56743),$56744,$56745,$56746,$56747,$56748,$56749,$56750,$56751,$56752,$56753,$56754,$56755,$56756),(nextval($56757),$56758,$56759,$56760,$56761,$56762,$56763,$56764,$56765,$56766,$56767,$56768,$56769,$56770),(nextval($56771),$56772,$56773,$56774,$56775,$56776,$56777,$56778,$56779,$56780,$56781,$56782,$56783,$56784),(nextval($56785),$56786,$56787,$56788,$56789,$56790,$56791,$56792,$56793,$56794,$56795,$56796,$56797,$56798),(nextval($56799),$56800,$56801,$56802,$56803,$56804,$56805,$56806,$56807,$56808,$56809,$56810,$56811,$56812),(nextval($56813),$56814,$56815,$56816,$56817,$56818,$56819,$56820,$56821,$56822,$56823,$56824,$56825,$56826),(nextval($56827),$56828,$56829,$56830,$56831,$56832,$56833,$56834,$56835,$56836,$56837,$56838,$56839,$56840),(nextval($56841),$56842,$56843,$56844,$56845,$56846,$56847,$56848,$56849,$56850,$56851,$56852,$56853,$56854),(nextval($56855),$56856,$56857,$56858,$56859,$56860,$56861,$56862,$56863,$56864,$56865,$56866,$56867,$56868),(nextval($56869),$56870,$56871,$56872,$56873,$56874,$56875,$56876,$56877,$56878,$56879,$56880,$56881,$56882),(nextval($56883),$56884,$56885,$56886,$56887,$56888,$56889,$56890,$56891,$56892,$56893,$56894,$56895,$56896),(nextval($56897),$56898,$56899,$56900,$56901,$56902,$56903,$56904,$56905,$56906,$56907,$56908,$56909,$56910),(nextval($56911),$56912,$56913,$56914,$56915,$56916,$56917,$56918,$56919,$56920,$56921,$56922,$56923,$56924),(nextval($56925),$56926,$56927,$56928,$56929,$56930,$56931,$56932,$56933,$56934,$56935,$56936,$56937,$56938),(nextval($56939),$56940,$56941,$56942,$56943,$56944,$56945,$56946,$56947,$56948,$56949,$56950,$56951,$56952),(nextval($56953),$56954,$56955,$56956,$56957,$56958,$56959,$56960,$56961,$56962,$56963,$56964,$56965,$56966),(nextval($56967),$56968,$56969,$56970,$56971,$56972,$56973,$56974,$56975,$56976,$56977,$56978,$56979,$56980),(nextval($56981),$56982,$56983,$56984,$56985,$56986,$56987,$56988,$56989,$56990,$56991,$56992,$56993,$56994),(nextval($56995),$56996,$56997,$56998,$56999,$57000,$57001,$57002,$57003,$57004,$57005,$57006,$57007,$57008),(nextval($57009),$57010,$57011,$57012,$57013,$57014,$57015,$57016,$57017,$57018,$57019,$57020,$57021,$57022),(nextval($57023),$57024,$57025,$57026,$57027,$57028,$57029,$57030,$57031,$57032,$57033,$57034,$57035,$57036),(nextval($57037),$57038,$57039,$57040,$57041,$57042,$57043,$57044,$57045,$57046,$57047,$57048,$57049,$57050),(nextval($57051),$57052,$57053,$57054,$57055,$57056,$57057,$57058,$57059,$57060,$57061,$57062,$57063,$57064),(nextval($57065),$57066,$57067,$57068,$57069,$57070,$57071,$57072,$57073,$57074,$57075,$57076,$57077,$57078),(nextval($57079),$57080,$57081,$57082,$57083,$57084,$57085,$57086,$57087,$57088,$57089,$57090,$57091,$57092),(nextval($57093),$57094,$57095,$57096,$57097,$57098,$57099,$57100,$57101,$57102,$57103,$57104,$57105,$57106),(nextval($57107),$57108,$57109,$57110,$57111,$57112,$57113,$57114,$57115,$57116,$57117,$57118,$57119,$57120),(nextval($57121),$57122,$57123,$57124,$57125,$57126,$57127,$57128,$57129,$57130,$57131,$57132,$57133,$57134),(nextval($57135),$57136,$57137,$57138,$57139,$57140,$57141,$57142,$57143,$57144,$57145,$57146,$57147,$57148),(nextval($57149),$57150,$57151,$57152,$57153,$57154,$57155,$57156,$57157,$57158,$57159,$57160,$57161,$57162),(nextval($57163),$57164,$57165,$57166,$57167,$57168,$57169,$57170,$57171,$57172,$57173,$57174,$57175,$57176),(nextval($57177),$57178,$57179,$57180,$57181,$57182,$57183,$57184,$57185,$57186,$57187,$57188,$57189,$57190),(nextval($57191),$57192,$57193,$57194,$57195,$57196,$57197,$57198,$57199,$57200,$57201,$57202,$57203,$57204),(nextval($57205),$57206,$57207,$57208,$57209,$57210,$57211,$57212,$57213,$57214,$57215,$57216,$57217,$57218),(nextval($57219),$57220,$57221,$57222,$57223,$57224,$57225,$57226,$57227,$57228,$57229,$57230,$57231,$57232),(nextval($57233),$57234,$57235,$57236,$57237,$57238,$57239,$57240,$57241,$57242,$57243,$57244,$57245,$57246),(nextval($57247),$57248,$57249,$57250,$57251,$57252,$57253,$57254,$57255,$57256,$57257,$57258,$57259,$57260),(nextval($57261),$57262,$57263,$57264,$57265,$57266,$57267,$57268,$57269,$57270,$57271,$57272,$57273,$57274),(nextval($57275),$57276,$57277,$57278,$57279,$57280,$57281,$57282,$57283,$57284,$57285,$57286,$57287,$57288),(nextval($57289),$57290,$57291,$57292,$57293,$57294,$57295,$57296,$57297,$57298,$57299,$57300,$57301,$57302),(nextval($57303),$57304,$57305,$57306,$57307,$57308,$57309,$57310,$57311,$57312,$57313,$57314,$57315,$57316),(nextval($57317),$57318,$57319,$57320,$57321,$57322,$57323,$57324,$57325,$57326,$57327,$57328,$57329,$57330),(nextval($57331),$57332,$57333,$57334,$57335,$57336,$57337,$57338,$57339,$57340,$57341,$57342,$57343,$57344),(nextval($57345),$57346,$57347,$57348,$57349,$57350,$57351,$57352,$57353,$57354,$57355,$57356,$57357,$57358),(nextval($57359),$57360,$57361,$57362,$57363,$57364,$57365,$57366,$57367,$57368,$57369,$57370,$57371,$57372),(nextval($57373),$57374,$57375,$57376,$57377,$57378,$57379,$57380,$57381,$57382,$57383,$57384,$57385,$57386),(nextval($57387),$57388,$57389,$57390,$57391,$57392,$57393,$57394,$57395,$57396,$57397,$57398,$57399,$57400),(nextval($57401),$57402,$57403,$57404,$57405,$57406,$57407,$57408,$57409,$57410,$57411,$57412,$57413,$57414),(nextval($57415),$57416,$57417,$57418,$57419,$57420,$57421,$57422,$57423,$57424,$57425,$57426,$57427,$57428),(nextval($57429),$57430,$57431,$57432,$57433,$57434,$57435,$57436,$57437,$57438,$57439,$57440,$57441,$57442),(nextval($57443),$57444,$57445,$57446,$57447,$57448,$57449,$57450,$57451,$57452,$57453,$57454,$57455,$57456),(nextval($57457),$57458,$57459,$57460,$57461,$57462,$57463,$57464,$57465,$57466,$57467,$57468,$57469,$57470),(nextval($57471),$57472,$57473,$57474,$57475,$57476,$57477,$57478,$57479,$57480,$57481,$57482,$57483,$57484),(nextval($57485),$57486,$57487,$57488,$57489,$57490,$57491,$57492,$57493,$57494,$57495,$57496,$57497,$57498),(nextval($57499),$57500,$57501,$57502,$57503,$57504,$57505,$57506,$57507,$57508,$57509,$57510,$57511,$57512),(nextval($57513),$57514,$57515,$57516,$57517,$57518,$57519,$57520,$57521,$57522,$57523,$57524,$57525,$57526),(nextval($57527),$57528,$57529,$57530,$57531,$57532,$57533,$57534,$57535,$57536,$57537,$57538,$57539,$57540),(nextval($57541),$57542,$57543,$57544,$57545,$57546,$57547,$57548,$57549,$57550,$57551,$57552,$57553,$57554),(nextval($57555),$57556,$57557,$57558,$57559,$57560,$57561,$57562,$57563,$57564,$57565,$57566,$57567,$57568),(nextval($57569),$57570,$57571,$57572,$57573,$57574,$57575,$57576,$57577,$57578,$57579,$57580,$57581,$57582),(nextval($57583),$57584,$57585,$57586,$57587,$57588,$57589,$57590,$57591,$57592,$57593,$57594,$57595,$57596),(nextval($57597),$57598,$57599,$57600,$57601,$57602,$57603,$57604,$57605,$57606,$57607,$57608,$57609,$57610),(nextval($57611),$57612,$57613,$57614,$57615,$57616,$57617,$57618,$57619,$57620,$57621,$57622,$57623,$57624),(nextval($57625),$57626,$57627,$57628,$57629,$57630,$57631,$57632,$57633,$57634,$57635,$57636,$57637,$57638),(nextval($57639),$57640,$57641,$57642,$57643,$57644,$57645,$57646,$57647,$57648,$57649,$57650,$57651,$57652),(nextval($57653),$57654,$57655,$57656,$57657,$57658,$57659,$57660,$57661,$57662,$57663,$57664,$57665,$57666),(nextval($57667),$57668,$57669,$57670,$57671,$57672,$57673,$57674,$57675,$57676,$57677,$57678,$57679,$57680),(nextval($57681),$57682,$57683,$57684,$57685,$57686,$57687,$57688,$57689,$57690,$57691,$57692,$57693,$57694),(nextval($57695),$57696,$57697,$57698,$57699,$57700,$57701,$57702,$57703,$57704,$57705,$57706,$57707,$57708),(nextval($57709),$57710,$57711,$57712,$57713,$57714,$57715,$57716,$57717,$57718,$57719,$57720,$57721,$57722),(nextval($57723),$57724,$57725,$57726,$57727,$57728,$57729,$57730,$57731,$57732,$57733,$57734,$57735,$57736),(nextval($57737),$57738,$57739,$57740,$57741,$57742,$57743,$57744,$57745,$57746,$57747,$57748,$57749,$57750),(nextval($57751),$57752,$57753,$57754,$57755,$57756,$57757,$57758,$57759,$57760,$57761,$57762,$57763,$57764),(nextval($57765),$57766,$57767,$57768,$57769,$57770,$57771,$57772,$57773,$57774,$57775,$57776,$57777,$57778),(nextval($57779),$57780,$57781,$57782,$57783,$57784,$57785,$57786,$57787,$57788,$57789,$57790,$57791,$57792),(nextval($57793),$57794,$57795,$57796,$57797,$57798,$57799,$57800,$57801,$57802,$57803,$57804,$57805,$57806),(nextval($57807),$57808,$57809,$57810,$57811,$57812,$57813,$57814,$57815,$57816,$57817,$57818,$57819,$57820),(nextval($57821),$57822,$57823,$57824,$57825,$57826,$57827,$57828,$57829,$57830,$57831,$57832,$57833,$57834),(nextval($57835),$57836,$57837,$57838,$57839,$57840,$57841,$57842,$57843,$57844,$57845,$57846,$57847,$57848),(nextval($57849),$57850,$57851,$57852,$57853,$57854,$57855,$57856,$57857,$57858,$57859,$57860,$57861,$57862),(nextval($57863),$57864,$57865,$57866,$57867,$57868,$57869,$57870,$57871,$57872,$57873,$57874,$57875,$57876),(nextval($57877),$57878,$57879,$57880,$57881,$57882,$57883,$57884,$57885,$57886,$57887,$57888,$57889,$57890),(nextval($57891),$57892,$57893,$57894,$57895,$57896,$57897,$57898,$57899,$57900,$57901,$57902,$57903,$57904),(nextval($57905),$57906,$57907,$57908,$57909,$57910,$57911,$57912,$57913,$57914,$57915,$57916,$57917,$57918),(nextval($57919),$57920,$57921,$57922,$57923,$57924,$57925,$57926,$57927,$57928,$57929,$57930,$57931,$57932),(nextval($57933),$57934,$57935,$57936,$57937,$57938,$57939,$57940,$57941,$57942,$57943,$57944,$57945,$57946),(nextval($57947),$57948,$57949,$57950,$57951,$57952,$57953,$57954,$57955,$57956,$57957,$57958,$57959,$57960),(nextval($57961),$57962,$57963,$57964,$57965,$57966,$57967,$57968,$57969,$57970,$57971,$57972,$57973,$57974),(nextval($57975),$57976,$57977,$57978,$57979,$57980,$57981,$57982,$57983,$57984,$57985,$57986,$57987,$57988),(nextval($57989),$57990,$57991,$57992,$57993,$57994,$57995,$57996,$57997,$57998,$57999,$58000,$58001,$58002),(nextval($58003),$58004,$58005,$58006,$58007,$58008,$58009,$58010,$58011,$58012,$58013,$58014,$58015,$58016),(nextval($58017),$58018,$58019,$58020,$58021,$58022,$58023,$58024,$58025,$58026,$58027,$58028,$58029,$58030),(nextval($58031),$58032,$58033,$58034,$58035,$58036,$58037,$58038,$58039,$58040,$58041,$58042,$58043,$58044),(nextval($58045),$58046,$58047,$58048,$58049,$58050,$58051,$58052,$58053,$58054,$58055,$58056,$58057,$58058),(nextval($58059),$58060,$58061,$58062,$58063,$58064,$58065,$58066,$58067,$58068,$58069,$58070,$58071,$58072),(nextval($58073),$58074,$58075,$58076,$58077,$58078,$58079,$58080,$58081,$58082,$58083,$58084,$58085,$58086),(nextval($58087),$58088,$58089,$58090,$58091,$58092,$58093,$58094,$58095,$58096,$58097,$58098,$58099,$58100),(nextval($58101),$58102,$58103,$58104,$58105,$58106,$58107,$58108,$58109,$58110,$58111,$58112,$58113,$58114),(nextval($58115),$58116,$58117,$58118,$58119,$58120,$58121,$58122,$58123,$58124,$58125,$58126,$58127,$58128),(nextval($58129),$58130,$58131,$58132,$58133,$58134,$58135,$58136,$58137,$58138,$58139,$58140,$58141,$58142),(nextval($58143),$58144,$58145,$58146,$58147,$58148,$58149,$58150,$58151,$58152,$58153,$58154,$58155,$58156),(nextval($58157),$58158,$58159,$58160,$58161,$58162,$58163,$58164,$58165,$58166,$58167,$58168,$58169,$58170),(nextval($58171),$58172,$58173,$58174,$58175,$58176,$58177,$58178,$58179,$58180,$58181,$58182,$58183,$58184),(nextval($58185),$58186,$58187,$58188,$58189,$58190,$58191,$58192,$58193,$58194,$58195,$58196,$58197,$58198),(nextval($58199),$58200,$58201,$58202,$58203,$58204,$58205,$58206,$58207,$58208,$58209,$58210,$58211,$58212),(nextval($58213),$58214,$58215,$58216,$58217,$58218,$58219,$58220,$58221,$58222,$58223,$58224,$58225,$58226),(nextval($58227),$58228,$58229,$58230,$58231,$58232,$58233,$58234,$58235,$58236,$58237,$58238,$58239,$58240),(nextval($58241),$58242,$58243,$58244,$58245,$58246,$58247,$58248,$58249,$58250,$58251,$58252,$58253,$58254),(nextval($58255),$58256,$58257,$58258,$58259,$58260,$58261,$58262,$58263,$58264,$58265,$58266,$58267,$58268),(nextval($58269),$58270,$58271,$58272,$58273,$58274,$58275,$58276,$58277,$58278,$58279,$58280,$58281,$58282),(nextval($58283),$58284,$58285,$58286,$58287,$58288,$58289,$58290,$58291,$58292,$58293,$58294,$58295,$58296),(nextval($58297),$58298,$58299,$58300,$58301,$58302,$58303,$58304,$58305,$58306,$58307,$58308,$58309,$58310),(nextval($58311),$58312,$58313,$58314,$58315,$58316,$58317,$58318,$58319,$58320,$58321,$58322,$58323,$58324),(nextval($58325),$58326,$58327,$58328,$58329,$58330,$58331,$58332,$58333,$58334,$58335,$58336,$58337,$58338),(nextval($58339),$58340,$58341,$58342,$58343,$58344,$58345,$58346,$58347,$58348,$58349,$58350,$58351,$58352),(nextval($58353),$58354,$58355,$58356,$58357,$58358,$58359,$58360,$58361,$58362,$58363,$58364,$58365,$58366),(nextval($58367),$58368,$58369,$58370,$58371,$58372,$58373,$58374,$58375,$58376,$58377,$58378,$58379,$58380),(nextval($58381),$58382,$58383,$58384,$58385,$58386,$58387,$58388,$58389,$58390,$58391,$58392,$58393,$58394),(nextval($58395),$58396,$58397,$58398,$58399,$58400,$58401,$58402,$58403,$58404,$58405,$58406,$58407,$58408),(nextval($58409),$58410,$58411,$58412,$58413,$58414,$58415,$58416,$58417,$58418,$58419,$58420,$58421,$58422),(nextval($58423),$58424,$58425,$58426,$58427,$58428,$58429,$58430,$58431,$58432,$58433,$58434,$58435,$58436),(nextval($58437),$58438,$58439,$58440,$58441,$58442,$58443,$58444,$58445,$58446,$58447,$58448,$58449,$58450),(nextval($58451),$58452,$58453,$58454,$58455,$58456,$58457,$58458,$58459,$58460,$58461,$58462,$58463,$58464),(nextval($58465),$58466,$58467,$58468,$58469,$58470,$58471,$58472,$58473,$58474,$58475,$58476,$58477,$58478),(nextval($58479),$58480,$58481,$58482,$58483,$58484,$58485,$58486,$58487,$58488,$58489,$58490,$58491,$58492),(nextval($58493),$58494,$58495,$58496,$58497,$58498,$58499,$58500,$58501,$58502,$58503,$58504,$58505,$58506),(nextval($58507),$58508,$58509,$58510,$58511,$58512,$58513,$58514,$58515,$58516,$58517,$58518,$58519,$58520),(nextval($58521),$58522,$58523,$58524,$58525,$58526,$58527,$58528,$58529,$58530,$58531,$58532,$58533,$58534),(nextval($58535),$58536,$58537,$58538,$58539,$58540,$58541,$58542,$58543,$58544,$58545,$58546,$58547,$58548),(nextval($58549),$58550,$58551,$58552,$58553,$58554,$58555,$58556,$58557,$58558,$58559,$58560,$58561,$58562),(nextval($58563),$58564,$58565,$58566,$58567,$58568,$58569,$58570,$58571,$58572,$58573,$58574,$58575,$58576),(nextval($58577),$58578,$58579,$58580,$58581,$58582,$58583,$58584,$58585,$58586,$58587,$58588,$58589,$58590),(nextval($58591),$58592,$58593,$58594,$58595,$58596,$58597,$58598,$58599,$58600,$58601,$58602,$58603,$58604),(nextval($58605),$58606,$58607,$58608,$58609,$58610,$58611,$58612,$58613,$58614,$58615,$58616,$58617,$58618),(nextval($58619),$58620,$58621,$58622,$58623,$58624,$58625,$58626,$58627,$58628,$58629,$58630,$58631,$58632),(nextval($58633),$58634,$58635,$58636,$58637,$58638,$58639,$58640,$58641,$58642,$58643,$58644,$58645,$58646),(nextval($58647),$58648,$58649,$58650,$58651,$58652,$58653,$58654,$58655,$58656,$58657,$58658,$58659,$58660),(nextval($58661),$58662,$58663,$58664,$58665,$58666,$58667,$58668,$58669,$58670,$58671,$58672,$58673,$58674),(nextval($58675),$58676,$58677,$58678,$58679,$58680,$58681,$58682,$58683,$58684,$58685,$58686,$58687,$58688),(nextval($58689),$58690,$58691,$58692,$58693,$58694,$58695,$58696,$58697,$58698,$58699,$58700,$58701,$58702),(nextval($58703),$58704,$58705,$58706,$58707,$58708,$58709,$58710,$58711,$58712,$58713,$58714,$58715,$58716),(nextval($58717),$58718,$58719,$58720,$58721,$58722,$58723,$58724,$58725,$58726,$58727,$58728,$58729,$58730),(nextval($58731),$58732,$58733,$58734,$58735,$58736,$58737,$58738,$58739,$58740,$58741,$58742,$58743,$58744),(nextval($58745),$58746,$58747,$58748,$58749,$58750,$58751,$58752,$58753,$58754,$58755,$58756,$58757,$58758),(nextval($58759),$58760,$58761,$58762,$58763,$58764,$58765,$58766,$58767,$58768,$58769,$58770,$58771,$58772),(nextval($58773),$58774,$58775,$58776,$58777,$58778,$58779,$58780,$58781,$58782,$58783,$58784,$58785,$58786),(nextval($58787),$58788,$58789,$58790,$58791,$58792,$58793,$58794,$58795,$58796,$58797,$58798,$58799,$58800),(nextval($58801),$58802,$58803,$58804,$58805,$58806,$58807,$58808,$58809,$58810,$58811,$58812,$58813,$58814),(nextval($58815),$58816,$58817,$58818,$58819,$58820,$58821,$58822,$58823,$58824,$58825,$58826,$58827,$58828),(nextval($58829),$58830,$58831,$58832,$58833,$58834,$58835,$58836,$58837,$58838,$58839,$58840,$58841,$58842),(nextval($58843),$58844,$58845,$58846,$58847,$58848,$58849,$58850,$58851,$58852,$58853,$58854,$58855,$58856),(nextval($58857),$58858,$58859,$58860,$58861,$58862,$58863,$58864,$58865,$58866,$58867,$58868,$58869,$58870),(nextval($58871),$58872,$58873,$58874,$58875,$58876,$58877,$58878,$58879,$58880,$58881,$58882,$58883,$58884),(nextval($58885),$58886,$58887,$58888,$58889,$58890,$58891,$58892,$58893,$58894,$58895,$58896,$58897,$58898),(nextval($58899),$58900,$58901,$58902,$58903,$58904,$58905,$58906,$58907,$58908,$58909,$58910,$58911,$58912),(nextval($58913),$58914,$58915,$58916,$58917,$58918,$58919,$58920,$58921,$58922,$58923,$58924,$58925,$58926),(nextval($58927),$58928,$58929,$58930,$58931,$58932,$58933,$58934,$58935,$58936,$58937,$58938,$58939,$58940),(nextval($58941),$58942,$58943,$58944,$58945,$58946,$58947,$58948,$58949,$58950,$58951,$58952,$58953,$58954),(nextval($58955),$58956,$58957,$58958,$58959,$58960,$58961,$58962,$58963,$58964,$58965,$58966,$58967,$58968),(nextval($58969),$58970,$58971,$58972,$58973,$58974,$58975,$58976,$58977,$58978,$58979,$58980,$58981,$58982),(nextval($58983),$58984,$58985,$58986,$58987,$58988,$58989,$58990,$58991,$58992,$58993,$58994,$58995,$58996),(nextval($58997),$58998,$58999,$59000,$59001,$59002,$59003,$59004,$59005,$59006,$59007,$59008,$59009,$59010),(nextval($59011),$59012,$59013,$59014,$59015,$59016,$59017,$59018,$59019,$59020,$59021,$59022,$59023,$59024),(nextval($59025),$59026,$59027,$59028,$59029,$59030,$59031,$59032,$59033,$59034,$59035,$59036,$59037,$59038),(nextval($59039),$59040,$59041,$59042,$59043,$59044,$59045,$59046,$59047,$59048,$59049,$59050,$59051,$59052),(nextval($59053),$59054,$59055,$59056,$59057,$59058,$59059,$59060,$59061,$59062,$59063,$59064,$59065,$59066),(nextval($59067),$59068,$59069,$59070,$59071,$59072,$59073,$59074,$59075,$59076,$59077,$59078,$59079,$59080),(nextval($59081),$59082,$59083,$59084,$59085,$59086,$59087,$59088,$59089,$59090,$59091,$59092,$59093,$59094),(nextval($59095),$59096,$59097,$59098,$59099,$59100,$59101,$59102,$59103,$59104,$59105,$59106,$59107,$59108),(nextval($59109),$59110,$59111,$59112,$59113,$59114,$59115,$59116,$59117,$59118,$59119,$59120,$59121,$59122),(nextval($59123),$59124,$59125,$59126,$59127,$59128,$59129,$59130,$59131,$59132,$59133,$59134,$59135,$59136),(nextval($59137),$59138,$59139,$59140,$59141,$59142,$59143,$59144,$59145,$59146,$59147,$59148,$59149,$59150),(nextval($59151),$59152,$59153,$59154,$59155,$59156,$59157,$59158,$59159,$59160,$59161,$59162,$59163,$59164),(nextval($59165),$59166,$59167,$59168,$59169,$59170,$59171,$59172,$59173,$59174,$59175,$59176,$59177,$59178),(nextval($59179),$59180,$59181,$59182,$59183,$59184,$59185,$59186,$59187,$59188,$59189,$59190,$59191,$59192),(nextval($59193),$59194,$59195,$59196,$59197,$59198,$59199,$59200,$59201,$59202,$59203,$59204,$59205,$59206),(nextval($59207),$59208,$59209,$59210,$59211,$59212,$59213,$59214,$59215,$59216,$59217,$59218,$59219,$59220),(nextval($59221),$59222,$59223,$59224,$59225,$59226,$59227,$59228,$59229,$59230,$59231,$59232,$59233,$59234),(nextval($59235),$59236,$59237,$59238,$59239,$59240,$59241,$59242,$59243,$59244,$59245,$59246,$59247,$59248),(nextval($59249),$59250,$59251,$59252,$59253,$59254,$59255,$59256,$59257,$59258,$59259,$59260,$59261,$59262),(nextval($59263),$59264,$59265,$59266,$59267,$59268,$59269,$59270,$59271,$59272,$59273,$59274,$59275,$59276),(nextval($59277),$59278,$59279,$59280,$59281,$59282,$59283,$59284,$59285,$59286,$59287,$59288,$59289,$59290),(nextval($59291),$59292,$59293,$59294,$59295,$59296,$59297,$59298,$59299,$59300,$59301,$59302,$59303,$59304),(nextval($59305),$59306,$59307,$59308,$59309,$59310,$59311,$59312,$59313,$59314,$59315,$59316,$59317,$59318),(nextval($59319),$59320,$59321,$59322,$59323,$59324,$59325,$59326,$59327,$59328,$59329,$59330,$59331,$59332),(nextval($59333),$59334,$59335,$59336,$59337,$59338,$59339,$59340,$59341,$59342,$59343,$59344,$59345,$59346),(nextval($59347),$59348,$59349,$59350,$59351,$59352,$59353,$59354,$59355,$59356,$59357,$59358,$59359,$59360),(nextval($59361),$59362,$59363,$59364,$59365,$59366,$59367,$59368,$59369,$59370,$59371,$59372,$59373,$59374),(nextval($59375),$59376,$59377,$59378,$59379,$59380,$59381,$59382,$59383,$59384,$59385,$59386,$59387,$59388),(nextval($59389),$59390,$59391,$59392,$59393,$59394,$59395,$59396,$59397,$59398,$59399,$59400,$59401,$59402),(nextval($59403),$59404,$59405,$59406,$59407,$59408,$59409,$59410,$59411,$59412,$59413,$59414,$59415,$59416),(nextval($59417),$59418,$59419,$59420,$59421,$59422,$59423,$59424,$59425,$59426,$59427,$59428,$59429,$59430),(nextval($59431),$59432,$59433,$59434,$59435,$59436,$59437,$59438,$59439,$59440,$59441,$59442,$59443,$59444),(nextval($59445),$59446,$59447,$59448,$59449,$59450,$59451,$59452,$59453,$59454,$59455,$59456,$59457,$59458),(nextval($59459),$59460,$59461,$59462,$59463,$59464,$59465,$59466,$59467,$59468,$59469,$59470,$59471,$59472),(nextval($59473),$59474,$59475,$59476,$59477,$59478,$59479,$59480,$59481,$59482,$59483,$59484,$59485,$59486),(nextval($59487),$59488,$59489,$59490,$59491,$59492,$59493,$59494,$59495,$59496,$59497,$59498,$59499,$59500),(nextval($59501),$59502,$59503,$59504,$59505,$59506,$59507,$59508,$59509,$59510,$59511,$59512,$59513,$59514),(nextval($59515),$59516,$59517,$59518,$59519,$59520,$59521,$59522,$59523,$59524,$59525,$59526,$59527,$59528),(nextval($59529),$59530,$59531,$59532,$59533,$59534,$59535,$59536,$59537,$59538,$59539,$59540,$59541,$59542),(nextval($59543),$59544,$59545,$59546,$59547,$59548,$59549,$59550,$59551,$59552,$59553,$59554,$59555,$59556),(nextval($59557),$59558,$59559,$59560,$59561,$59562,$59563,$59564,$59565,$59566,$59567,$59568,$59569,$59570),(nextval($59571),$59572,$59573,$59574,$59575,$59576,$59577,$59578,$59579,$59580,$59581,$59582,$59583,$59584),(nextval($59585),$59586,$59587,$59588,$59589,$59590,$59591,$59592,$59593,$59594,$59595,$59596,$59597,$59598),(nextval($59599),$59600,$59601,$59602,$59603,$59604,$59605,$59606,$59607,$59608,$59609,$59610,$59611,$59612),(nextval($59613),$59614,$59615,$59616,$59617,$59618,$59619,$59620,$59621,$59622,$59623,$59624,$59625,$59626),(nextval($59627),$59628,$59629,$59630,$59631,$59632,$59633,$59634,$59635,$59636,$59637,$59638,$59639,$59640),(nextval($59641),$59642,$59643,$59644,$59645,$59646,$59647,$59648,$59649,$59650,$59651,$59652,$59653,$59654),(nextval($59655),$59656,$59657,$59658,$59659,$59660,$59661,$59662,$59663,$59664,$59665,$59666,$59667,$59668),(nextval($59669),$59670,$59671,$59672,$59673,$59674,$59675,$59676,$59677,$59678,$59679,$59680,$59681,$59682),(nextval($59683),$59684,$59685,$59686,$59687,$59688,$59689,$59690,$59691,$59692,$59693,$59694,$59695,$59696),(nextval($59697),$59698,$59699,$59700,$59701,$59702,$59703,$59704,$59705,$59706,$59707,$59708,$59709,$59710),(nextval($59711),$59712,$59713,$59714,$59715,$59716,$59717,$59718,$59719,$59720,$59721,$59722,$59723,$59724),(nextval($59725),$59726,$59727,$59728,$59729,$59730,$59731,$59732,$59733,$59734,$59735,$59736,$59737,$59738),(nextval($59739),$59740,$59741,$59742,$59743,$59744,$59745,$59746,$59747,$59748,$59749,$59750,$59751,$59752),(nextval($59753),$59754,$59755,$59756,$59757,$59758,$59759,$59760,$59761,$59762,$59763,$59764,$59765,$59766),(nextval($59767),$59768,$59769,$59770,$59771,$59772,$59773,$59774,$59775,$59776,$59777,$59778,$59779,$59780),(nextval($59781),$59782,$59783,$59784,$59785,$59786,$59787,$59788,$59789,$59790,$59791,$59792,$59793,$59794),(nextval($59795),$59796,$59797,$59798,$59799,$59800,$59801,$59802,$59803,$59804,$59805,$59806,$59807,$59808),(nextval($59809),$59810,$59811,$59812,$59813,$59814,$59815,$59816,$59817,$59818,$59819,$59820,$59821,$59822),(nextval($59823),$59824,$59825,$59826,$59827,$59828,$59829,$59830,$59831,$59832,$59833,$59834,$59835,$59836),(nextval($59837),$59838,$59839,$59840,$59841,$59842,$59843,$59844,$59845,$59846,$59847,$59848,$59849,$59850),(nextval($59851),$59852,$59853,$59854,$59855,$59856,$59857,$59858,$59859,$59860,$59861,$59862,$59863,$59864),(nextval($59865),$59866,$59867,$59868,$59869,$59870,$59871,$59872,$59873,$59874,$59875,$59876,$59877,$59878),(nextval($59879),$59880,$59881,$59882,$59883,$59884,$59885,$59886,$59887,$59888,$59889,$59890,$59891,$59892),(nextval($59893),$59894,$59895,$59896,$59897,$59898,$59899,$59900,$59901,$59902,$59903,$59904,$59905,$59906),(nextval($59907),$59908,$59909,$59910,$59911,$59912,$59913,$59914,$59915,$59916,$59917,$59918,$59919,$59920),(nextval($59921),$59922,$59923,$59924,$59925,$59926,$59927,$59928,$59929,$59930,$59931,$59932,$59933,$59934),(nextval($59935),$59936,$59937,$59938,$59939,$59940,$59941,$59942,$59943,$59944,$59945,$59946,$59947,$59948),(nextval($59949),$59950,$59951,$59952,$59953,$59954,$59955,$59956,$59957,$59958,$59959,$59960,$59961,$59962),(nextval($59963),$59964,$59965,$59966,$59967,$59968,$59969,$59970,$59971,$59972,$59973,$59974,$59975,$59976),(nextval($59977),$59978,$59979,$59980,$59981,$59982,$59983,$59984,$59985,$59986,$59987,$59988,$59989,$59990),(nextval($59991),$59992,$59993,$59994,$59995,$59996,$59997,$59998,$59999,$60000,$60001,$60002,$60003,$60004),(nextval($60005),$60006,$60007,$60008,$60009,$60010,$60011,$60012,$60013,$60014,$60015,$60016,$60017,$60018),(nextval($60019),$60020,$60021,$60022,$60023,$60024,$60025,$60026,$60027,$60028,$60029,$60030,$60031,$60032),(nextval($60033),$60034,$60035,$60036,$60037,$60038,$60039,$60040,$60041,$60042,$60043,$60044,$60045,$60046),(nextval($60047),$60048,$60049,$60050,$60051,$60052,$60053,$60054,$60055,$60056,$60057,$60058,$60059,$60060),(nextval($60061),$60062,$60063,$60064,$60065,$60066,$60067,$60068,$60069,$60070,$60071,$60072,$60073,$60074),(nextval($60075),$60076,$60077,$60078,$60079,$60080,$60081,$60082,$60083,$60084,$60085,$60086,$60087,$60088),(nextval($60089),$60090,$60091,$60092,$60093,$60094,$60095,$60096,$60097,$60098,$60099,$60100,$60101,$60102),(nextval($60103),$60104,$60105,$60106,$60107,$60108,$60109,$60110,$60111,$60112,$60113,$60114,$60115,$60116),(nextval($60117),$60118,$60119,$60120,$60121,$60122,$60123,$60124,$60125,$60126,$60127,$60128,$60129,$60130),(nextval($60131),$60132,$60133,$60134,$60135,$60136,$60137,$60138,$60139,$60140,$60141,$60142,$60143,$60144),(nextval($60145),$60146,$60147,$60148,$60149,$60150,$60151,$60152,$60153,$60154,$60155,$60156,$60157,$60158),(nextval($60159),$60160,$60161,$60162,$60163,$60164,$60165,$60166,$60167,$60168,$60169,$60170,$60171,$60172),(nextval($60173),$60174,$60175,$60176,$60177,$60178,$60179,$60180,$60181,$60182,$60183,$60184,$60185,$60186),(nextval($60187),$60188,$60189,$60190,$60191,$60192,$60193,$60194,$60195,$60196,$60197,$60198,$60199,$60200),(nextval($60201),$60202,$60203,$60204,$60205,$60206,$60207,$60208,$60209,$60210,$60211,$60212,$60213,$60214),(nextval($60215),$60216,$60217,$60218,$60219,$60220,$60221,$60222,$60223,$60224,$60225,$60226,$60227,$60228),(nextval($60229),$60230,$60231,$60232,$60233,$60234,$60235,$60236,$60237,$60238,$60239,$60240,$60241,$60242),(nextval($60243),$60244,$60245,$60246,$60247,$60248,$60249,$60250,$60251,$60252,$60253,$60254,$60255,$60256),(nextval($60257),$60258,$60259,$60260,$60261,$60262,$60263,$60264,$60265,$60266,$60267,$60268,$60269,$60270),(nextval($60271),$60272,$60273,$60274,$60275,$60276,$60277,$60278,$60279,$60280,$60281,$60282,$60283,$60284),(nextval($60285),$60286,$60287,$60288,$60289,$60290,$60291,$60292,$60293,$60294,$60295,$60296,$60297,$60298),(nextval($60299),$60300,$60301,$60302,$60303,$60304,$60305,$60306,$60307,$60308,$60309,$60310,$60311,$60312),(nextval($60313),$60314,$60315,$60316,$60317,$60318,$60319,$60320,$60321,$60322,$60323,$60324,$60325,$60326),(nextval($60327),$60328,$60329,$60330,$60331,$60332,$60333,$60334,$60335,$60336,$60337,$60338,$60339,$60340),(nextval($60341),$60342,$60343,$60344,$60345,$60346,$60347,$60348,$60349,$60350,$60351,$60352,$60353,$60354),(nextval($60355),$60356,$60357,$60358,$60359,$60360,$60361,$60362,$60363,$60364,$60365,$60366,$60367,$60368),(nextval($60369),$60370,$60371,$60372,$60373,$60374,$60375,$60376,$60377,$60378,$60379,$60380,$60381,$60382),(nextval($60383),$60384,$60385,$60386,$60387,$60388,$60389,$60390,$60391,$60392,$60393,$60394,$60395,$60396),(nextval($60397),$60398,$60399,$60400,$60401,$60402,$60403,$60404,$60405,$60406,$60407,$60408,$60409,$60410),(nextval($60411),$60412,$60413,$60414,$60415,$60416,$60417,$60418,$60419,$60420,$60421,$60422,$60423,$60424),(nextval($60425),$60426,$60427,$60428,$60429,$60430,$60431,$60432,$60433,$60434,$60435,$60436,$60437,$60438),(nextval($60439),$60440,$60441,$60442,$60443,$60444,$60445,$60446,$60447,$60448,$60449,$60450,$60451,$60452),(nextval($60453),$60454,$60455,$60456,$60457,$60458,$60459,$60460,$60461,$60462,$60463,$60464,$60465,$60466),(nextval($60467),$60468,$60469,$60470,$60471,$60472,$60473,$60474,$60475,$60476,$60477,$60478,$60479,$60480),(nextval($60481),$60482,$60483,$60484,$60485,$60486,$60487,$60488,$60489,$60490,$60491,$60492,$60493,$60494),(nextval($60495),$60496,$60497,$60498,$60499,$60500,$60501,$60502,$60503,$60504,$60505,$60506,$60507,$60508),(nextval($60509),$60510,$60511,$60512,$60513,$60514,$60515,$60516,$60517,$60518,$60519,$60520,$60521,$60522),(nextval($60523),$60524,$60525,$60526,$60527,$60528,$60529,$60530,$60531,$60532,$60533,$60534,$60535,$60536),(nextval($60537),$60538,$60539,$60540,$60541,$60542,$60543,$60544,$60545,$60546,$60547,$60548,$60549,$60550),(nextval($60551),$60552,$60553,$60554,$60555,$60556,$60557,$60558,$60559,$60560,$60561,$60562,$60563,$60564),(nextval($60565),$60566,$60567,$60568,$60569,$60570,$60571,$60572,$60573,$60574,$60575,$60576,$60577,$60578),(nextval($60579),$60580,$60581,$60582,$60583,$60584,$60585,$60586,$60587,$60588,$60589,$60590,$60591,$60592),(nextval($60593),$60594,$60595,$60596,$60597,$60598,$60599,$60600,$60601,$60602,$60603,$60604,$60605,$60606),(nextval($60607),$60608,$60609,$60610,$60611,$60612,$60613,$60614,$60615,$60616,$60617,$60618,$60619,$60620),(nextval($60621),$60622,$60623,$60624,$60625,$60626,$60627,$60628,$60629,$60630,$60631,$60632,$60633,$60634),(nextval($60635),$60636,$60637,$60638,$60639,$60640,$60641,$60642,$60643,$60644,$60645,$60646,$60647,$60648),(nextval($60649),$60650,$60651,$60652,$60653,$60654,$60655,$60656,$60657,$60658,$60659,$60660,$60661,$60662),(nextval($60663),$60664,$60665,$60666,$60667,$60668,$60669,$60670,$60671,$60672,$60673,$60674,$60675,$60676),(nextval($60677),$60678,$60679,$60680,$60681,$60682,$60683,$60684,$60685,$60686,$60687,$60688,$60689,$60690),(nextval($60691),$60692,$60693,$60694,$60695,$60696,$60697,$60698,$60699,$60700,$60701,$60702,$60703,$60704),(nextval($60705),$60706,$60707,$60708,$60709,$60710,$60711,$60712,$60713,$60714,$60715,$60716,$60717,$60718),(nextval($60719),$60720,$60721,$60722,$60723,$60724,$60725,$60726,$60727,$60728,$60729,$60730,$60731,$60732),(nextval($60733),$60734,$60735,$60736,$60737,$60738,$60739,$60740,$60741,$60742,$60743,$60744,$60745,$60746),(nextval($60747),$60748,$60749,$60750,$60751,$60752,$60753,$60754,$60755,$60756,$60757,$60758,$60759,$60760),(nextval($60761),$60762,$60763,$60764,$60765,$60766,$60767,$60768,$60769,$60770,$60771,$60772,$60773,$60774),(nextval($60775),$60776,$60777,$60778,$60779,$60780,$60781,$60782,$60783,$60784,$60785,$60786,$60787,$60788),(nextval($60789),$60790,$60791,$60792,$60793,$60794,$60795,$60796,$60797,$60798,$60799,$60800,$60801,$60802),(nextval($60803),$60804,$60805,$60806,$60807,$60808,$60809,$60810,$60811,$60812,$60813,$60814,$60815,$60816),(nextval($60817),$60818,$60819,$60820,$60821,$60822,$60823,$60824,$60825,$60826,$60827,$60828,$60829,$60830),(nextval($60831),$60832,$60833,$60834,$60835,$60836,$60837,$60838,$60839,$60840,$60841,$60842,$60843,$60844),(nextval($60845),$60846,$60847,$60848,$60849,$60850,$60851,$60852,$60853,$60854,$60855,$60856,$60857,$60858),(nextval($60859),$60860,$60861,$60862,$60863,$60864,$60865,$60866,$60867,$60868,$60869,$60870,$60871,$60872),(nextval($60873),$60874,$60875,$60876,$60877,$60878,$60879,$60880,$60881,$60882,$60883,$60884,$60885,$60886),(nextval($60887),$60888,$60889,$60890,$60891,$60892,$60893,$60894,$60895,$60896,$60897,$60898,$60899,$60900),(nextval($60901),$60902,$60903,$60904,$60905,$60906,$60907,$60908,$60909,$60910,$60911,$60912,$60913,$60914),(nextval($60915),$60916,$60917,$60918,$60919,$60920,$60921,$60922,$60923,$60924,$60925,$60926,$60927,$60928),(nextval($60929),$60930,$60931,$60932,$60933,$60934,$60935,$60936,$60937,$60938,$60939,$60940,$60941,$60942),(nextval($60943),$60944,$60945,$60946,$60947,$60948,$60949,$60950,$60951,$60952,$60953,$60954,$60955,$60956),(nextval($60957),$60958,$60959,$60960,$60961,$60962,$60963,$60964,$60965,$60966,$60967,$60968,$60969,$60970),(nextval($60971),$60972,$60973,$60974,$60975,$60976,$60977,$60978,$60979,$60980,$60981,$60982,$60983,$60984),(nextval($60985),$60986,$60987,$60988,$60989,$60990,$60991,$60992,$60993,$60994,$60995,$60996,$60997,$60998),(nextval($60999),$61000,$61001,$61002,$61003,$61004,$61005,$61006,$61007,$61008,$61009,$61010,$61011,$61012),(nextval($61013),$61014,$61015,$61016,$61017,$61018,$61019,$61020,$61021,$61022,$61023,$61024,$61025,$61026),(nextval($61027),$61028,$61029,$61030,$61031,$61032,$61033,$61034,$61035,$61036,$61037,$61038,$61039,$61040),(nextval($61041),$61042,$61043,$61044,$61045,$61046,$61047,$61048,$61049,$61050,$61051,$61052,$61053,$61054),(nextval($61055),$61056,$61057,$61058,$61059,$61060,$61061,$61062,$61063,$61064,$61065,$61066,$61067,$61068),(nextval($61069),$61070,$61071,$61072,$61073,$61074,$61075,$61076,$61077,$61078,$61079,$61080,$61081,$61082),(nextval($61083),$61084,$61085,$61086,$61087,$61088,$61089,$61090,$61091,$61092,$61093,$61094,$61095,$61096),(nextval($61097),$61098,$61099,$61100,$61101,$61102,$61103,$61104,$61105,$61106,$61107,$61108,$61109,$61110),(nextval($61111),$61112,$61113,$61114,$61115,$61116,$61117,$61118,$61119,$61120,$61121,$61122,$61123,$61124),(nextval($61125),$61126,$61127,$61128,$61129,$61130,$61131,$61132,$61133,$61134,$61135,$61136,$61137,$61138),(nextval($61139),$61140,$61141,$61142,$61143,$61144,$61145,$61146,$61147,$61148,$61149,$61150,$61151,$61152),(nextval($61153),$61154,$61155,$61156,$61157,$61158,$61159,$61160,$61161,$61162,$61163,$61164,$61165,$61166),(nextval($61167),$61168,$61169,$61170,$61171,$61172,$61173,$61174,$61175,$61176,$61177,$61178,$61179,$61180),(nextval($61181),$61182,$61183,$61184,$61185,$61186,$61187,$61188,$61189,$61190,$61191,$61192,$61193,$61194),(nextval($61195),$61196,$61197,$61198,$61199,$61200,$61201,$61202,$61203,$61204,$61205,$61206,$61207,$61208),(nextval($61209),$61210,$61211,$61212,$61213,$61214,$61215,$61216,$61217,$61218,$61219,$61220,$61221,$61222),(nextval($61223),$61224,$61225,$61226,$61227,$61228,$61229,$61230,$61231,$61232,$61233,$61234,$61235,$61236),(nextval($61237),$61238,$61239,$61240,$61241,$61242,$61243,$61244,$61245,$61246,$61247,$61248,$61249,$61250),(nextval($61251),$61252,$61253,$61254,$61255,$61256,$61257,$61258,$61259,$61260,$61261,$61262,$61263,$61264),(nextval($61265),$61266,$61267,$61268,$61269,$61270,$61271,$61272,$61273,$61274,$61275,$61276,$61277,$61278),(nextval($61279),$61280,$61281,$61282,$61283,$61284,$61285,$61286,$61287,$61288,$61289,$61290,$61291,$61292),(nextval($61293),$61294,$61295,$61296,$61297,$61298,$61299,$61300,$61301,$61302,$61303,$61304,$61305,$61306),(nextval($61307),$61308,$61309,$61310,$61311,$61312,$61313,$61314,$61315,$61316,$61317,$61318,$61319,$61320),(nextval($61321),$61322,$61323,$61324,$61325,$61326,$61327,$61328,$61329,$61330,$61331,$61332,$61333,$61334),(nextval($61335),$61336,$61337,$61338,$61339,$61340,$61341,$61342,$61343,$61344,$61345,$61346,$61347,$61348),(nextval($61349),$61350,$61351,$61352,$61353,$61354,$61355,$61356,$61357,$61358,$61359,$61360,$61361,$61362),(nextval($61363),$61364,$61365,$61366,$61367,$61368,$61369,$61370,$61371,$61372,$61373,$61374,$61375,$61376),(nextval($61377),$61378,$61379,$61380,$61381,$61382,$61383,$61384,$61385,$61386,$61387,$61388,$61389,$61390),(nextval($61391),$61392,$61393,$61394,$61395,$61396,$61397,$61398,$61399,$61400,$61401,$61402,$61403,$61404),(nextval($61405),$61406,$61407,$61408,$61409,$61410,$61411,$61412,$61413,$61414,$61415,$61416,$61417,$61418),(nextval($61419),$61420,$61421,$61422,$61423,$61424,$61425,$61426,$61427,$61428,$61429,$61430,$61431,$61432),(nextval($61433),$61434,$61435,$61436,$61437,$61438,$61439,$61440,$61441,$61442,$61443,$61444,$61445,$61446),(nextval($61447),$61448,$61449,$61450,$61451,$61452,$61453,$61454,$61455,$61456,$61457,$61458,$61459,$61460),(nextval($61461),$61462,$61463,$61464,$61465,$61466,$61467,$61468,$61469,$61470,$61471,$61472,$61473,$61474),(nextval($61475),$61476,$61477,$61478,$61479,$61480,$61481,$61482,$61483,$61484,$61485,$61486,$61487,$61488),(nextval($61489),$61490,$61491,$61492,$61493,$61494,$61495,$61496,$61497,$61498,$61499,$61500,$61501,$61502),(nextval($61503),$61504,$61505,$61506,$61507,$61508,$61509,$61510,$61511,$61512,$61513,$61514,$61515,$61516),(nextval($61517),$61518,$61519,$61520,$61521,$61522,$61523,$61524,$61525,$61526,$61527,$61528,$61529,$61530),(nextval($61531),$61532,$61533,$61534,$61535,$61536,$61537,$61538,$61539,$61540,$61541,$61542,$61543,$61544),(nextval($61545),$61546,$61547,$61548,$61549,$61550,$61551,$61552,$61553,$61554,$61555,$61556,$61557,$61558),(nextval($61559),$61560,$61561,$61562,$61563,$61564,$61565,$61566,$61567,$61568,$61569,$61570,$61571,$61572),(nextval($61573),$61574,$61575,$61576,$61577,$61578,$61579,$61580,$61581,$61582,$61583,$61584,$61585,$61586),(nextval($61587),$61588,$61589,$61590,$61591,$61592,$61593,$61594,$61595,$61596,$61597,$61598,$61599,$61600),(nextval($61601),$61602,$61603,$61604,$61605,$61606,$61607,$61608,$61609,$61610,$61611,$61612,$61613,$61614),(nextval($61615),$61616,$61617,$61618,$61619,$61620,$61621,$61622,$61623,$61624,$61625,$61626,$61627,$61628),(nextval($61629),$61630,$61631,$61632,$61633,$61634,$61635,$61636,$61637,$61638,$61639,$61640,$61641,$61642),(nextval($61643),$61644,$61645,$61646,$61647,$61648,$61649,$61650,$61651,$61652,$61653,$61654,$61655,$61656),(nextval($61657),$61658,$61659,$61660,$61661,$61662,$61663,$61664,$61665,$61666,$61667,$61668,$61669,$61670),(nextval($61671),$61672,$61673,$61674,$61675,$61676,$61677,$61678,$61679,$61680,$61681,$61682,$61683,$61684),(nextval($61685),$61686,$61687,$61688,$61689,$61690,$61691,$61692,$61693,$61694,$61695,$61696,$61697,$61698),(nextval($61699),$61700,$61701,$61702,$61703,$61704,$61705,$61706,$61707,$61708,$61709,$61710,$61711,$61712),(nextval($61713),$61714,$61715,$61716,$61717,$61718,$61719,$61720,$61721,$61722,$61723,$61724,$61725,$61726),(nextval($61727),$61728,$61729,$61730,$61731,$61732,$61733,$61734,$61735,$61736,$61737,$61738,$61739,$61740),(nextval($61741),$61742,$61743,$61744,$61745,$61746,$61747,$61748,$61749,$61750,$61751,$61752,$61753,$61754),(nextval($61755),$61756,$61757,$61758,$61759,$61760,$61761,$61762,$61763,$61764,$61765,$61766,$61767,$61768),(nextval($61769),$61770,$61771,$61772,$61773,$61774,$61775,$61776,$61777,$61778,$61779,$61780,$61781,$61782),(nextval($61783),$61784,$61785,$61786,$61787,$61788,$61789,$61790,$61791,$61792,$61793,$61794,$61795,$61796),(nextval($61797),$61798,$61799,$61800,$61801,$61802,$61803,$61804,$61805,$61806,$61807,$61808,$61809,$61810),(nextval($61811),$61812,$61813,$61814,$61815,$61816,$61817,$61818,$61819,$61820,$61821,$61822,$61823,$61824),(nextval($61825),$61826,$61827,$61828,$61829,$61830,$61831,$61832,$61833,$61834,$61835,$61836,$61837,$61838),(nextval($61839),$61840,$61841,$61842,$61843,$61844,$61845,$61846,$61847,$61848,$61849,$61850,$61851,$61852),(nextval($61853),$61854,$61855,$61856,$61857,$61858,$61859,$61860,$61861,$61862,$61863,$61864,$61865,$61866),(nextval($61867),$61868,$61869,$61870,$61871,$61872,$61873,$61874,$61875,$61876,$61877,$61878,$61879,$61880),(nextval($61881),$61882,$61883,$61884,$61885,$61886,$61887,$61888,$61889,$61890,$61891,$61892,$61893,$61894),(nextval($61895),$61896,$61897,$61898,$61899,$61900,$61901,$61902,$61903,$61904,$61905,$61906,$61907,$61908),(nextval($61909),$61910,$61911,$61912,$61913,$61914,$61915,$61916,$61917,$61918,$61919,$61920,$61921,$61922),(nextval($61923),$61924,$61925,$61926,$61927,$61928,$61929,$61930,$61931,$61932,$61933,$61934,$61935,$61936),(nextval($61937),$61938,$61939,$61940,$61941,$61942,$61943,$61944,$61945,$61946,$61947,$61948,$61949,$61950),(nextval($61951),$61952,$61953,$61954,$61955,$61956,$61957,$61958,$61959,$61960,$61961,$61962,$61963,$61964),(nextval($61965),$61966,$61967,$61968,$61969,$61970,$61971,$61972,$61973,$61974,$61975,$61976,$61977,$61978),(nextval($61979),$61980,$61981,$61982,$61983,$61984,$61985,$61986,$61987,$61988,$61989,$61990,$61991,$61992),(nextval($61993),$61994,$61995,$61996,$61997,$61998,$61999,$62000,$62001,$62002,$62003,$62004,$62005,$62006),(nextval($62007),$62008,$62009,$62010,$62011,$62012,$62013,$62014,$62015,$62016,$62017,$62018,$62019,$62020),(nextval($62021),$62022,$62023,$62024,$62025,$62026,$62027,$62028,$62029,$62030,$62031,$62032,$62033,$62034),(nextval($62035),$62036,$62037,$62038,$62039,$62040,$62041,$62042,$62043,$62044,$62045,$62046,$62047,$62048),(nextval($62049),$62050,$62051,$62052,$62053,$62054,$62055,$62056,$62057,$62058,$62059,$62060,$62061,$62062),(nextval($62063),$62064,$62065,$62066,$62067,$62068,$62069,$62070,$62071,$62072,$62073,$62074,$62075,$62076),(nextval($62077),$62078,$62079,$62080,$62081,$62082,$62083,$62084,$62085,$62086,$62087,$62088,$62089,$62090),(nextval($62091),$62092,$62093,$62094,$62095,$62096,$62097,$62098,$62099,$62100,$62101,$62102,$62103,$62104),(nextval($62105),$62106,$62107,$62108,$62109,$62110,$62111,$62112,$62113,$62114,$62115,$62116,$62117,$62118),(nextval($62119),$62120,$62121,$62122,$62123,$62124,$62125,$62126,$62127,$62128,$62129,$62130,$62131,$62132),(nextval($62133),$62134,$62135,$62136,$62137,$62138,$62139,$62140,$62141,$62142,$62143,$62144,$62145,$62146),(nextval($62147),$62148,$62149,$62150,$62151,$62152,$62153,$62154,$62155,$62156,$62157,$62158,$62159,$62160),(nextval($62161),$62162,$62163,$62164,$62165,$62166,$62167,$62168,$62169,$62170,$62171,$62172,$62173,$62174),(nextval($62175),$62176,$62177,$62178,$62179,$62180,$62181,$62182,$62183,$62184,$62185,$62186,$62187,$62188),(nextval($62189),$62190,$62191,$62192,$62193,$62194,$62195,$62196,$62197,$62198,$62199,$62200,$62201,$62202),(nextval($62203),$62204,$62205,$62206,$62207,$62208,$62209,$62210,$62211,$62212,$62213,$62214,$62215,$62216),(nextval($62217),$62218,$62219,$62220,$62221,$62222,$62223,$62224,$62225,$62226,$62227,$62228,$62229,$62230),(nextval($62231),$62232,$62233,$62234,$62235,$62236,$62237,$62238,$62239,$62240,$62241,$62242,$62243,$62244),(nextval($62245),$62246,$62247,$62248,$62249,$62250,$62251,$62252,$62253,$62254,$62255,$62256,$62257,$62258),(nextval($62259),$62260,$62261,$62262,$62263,$62264,$62265,$62266,$62267,$62268,$62269,$62270,$62271,$62272),(nextval($62273),$62274,$62275,$62276,$62277,$62278,$62279,$62280,$62281,$62282,$62283,$62284,$62285,$62286),(nextval($62287),$62288,$62289,$62290,$62291,$62292,$62293,$62294,$62295,$62296,$62297,$62298,$62299,$62300),(nextval($62301),$62302,$62303,$62304,$62305,$62306,$62307,$62308,$62309,$62310,$62311,$62312,$62313,$62314),(nextval($62315),$62316,$62317,$62318,$62319,$62320,$62321,$62322,$62323,$62324,$62325,$62326,$62327,$62328),(nextval($62329),$62330,$62331,$62332,$62333,$62334,$62335,$62336,$62337,$62338,$62339,$62340,$62341,$62342),(nextval($62343),$62344,$62345,$62346,$62347,$62348,$62349,$62350,$62351,$62352,$62353,$62354,$62355,$62356),(nextval($62357),$62358,$62359,$62360,$62361,$62362,$62363,$62364,$62365,$62366,$62367,$62368,$62369,$62370),(nextval($62371),$62372,$62373,$62374,$62375,$62376,$62377,$62378,$62379,$62380,$62381,$62382,$62383,$62384),(nextval($62385),$62386,$62387,$62388,$62389,$62390,$62391,$62392,$62393,$62394,$62395,$62396,$62397,$62398),(nextval($62399),$62400,$62401,$62402,$62403,$62404,$62405,$62406,$62407,$62408,$62409,$62410,$62411,$62412),(nextval($62413),$62414,$62415,$62416,$62417,$62418,$62419,$62420,$62421,$62422,$62423,$62424,$62425,$62426),(nextval($62427),$62428,$62429,$62430,$62431,$62432,$62433,$62434,$62435,$62436,$62437,$62438,$62439,$62440),(nextval($62441),$62442,$62443,$62444,$62445,$62446,$62447,$62448,$62449,$62450,$62451,$62452,$62453,$62454),(nextval($62455),$62456,$62457,$62458,$62459,$62460,$62461,$62462,$62463,$62464,$62465,$62466,$62467,$62468),(nextval($62469),$62470,$62471,$62472,$62473,$62474,$62475,$62476,$62477,$62478,$62479,$62480,$62481,$62482),(nextval($62483),$62484,$62485,$62486,$62487,$62488,$62489,$62490,$62491,$62492,$62493,$62494,$62495,$62496),(nextval($62497),$62498,$62499,$62500,$62501,$62502,$62503,$62504,$62505,$62506,$62507,$62508,$62509,$62510),(nextval($62511),$62512,$62513,$62514,$62515,$62516,$62517,$62518,$62519,$62520,$62521,$62522,$62523,$62524),(nextval($62525),$62526,$62527,$62528,$62529,$62530,$62531,$62532,$62533,$62534,$62535,$62536,$62537,$62538),(nextval($62539),$62540,$62541,$62542,$62543,$62544,$62545,$62546,$62547,$62548,$62549,$62550,$62551,$62552),(nextval($62553),$62554,$62555,$62556,$62557,$62558,$62559,$62560,$62561,$62562,$62563,$62564,$62565,$62566),(nextval($62567),$62568,$62569,$62570,$62571,$62572,$62573,$62574,$62575,$62576,$62577,$62578,$62579,$62580),(nextval($62581),$62582,$62583,$62584,$62585,$62586,$62587,$62588,$62589,$62590,$62591,$62592,$62593,$62594),(nextval($62595),$62596,$62597,$62598,$62599,$62600,$62601,$62602,$62603,$62604,$62605,$62606,$62607,$62608),(nextval($62609),$62610,$62611,$62612,$62613,$62614,$62615,$62616,$62617,$62618,$62619,$62620,$62621,$62622),(nextval($62623),$62624,$62625,$62626,$62627,$62628,$62629,$62630,$62631,$62632,$62633,$62634,$62635,$62636),(nextval($62637),$62638,$62639,$62640,$62641,$62642,$62643,$62644,$62645,$62646,$62647,$62648,$62649,$62650),(nextval($62651),$62652,$62653,$62654,$62655,$62656,$62657,$62658,$62659,$62660,$62661,$62662,$62663,$62664),(nextval($62665),$62666,$62667,$62668,$62669,$62670,$62671,$62672,$62673,$62674,$62675,$62676,$62677,$62678),(nextval($62679),$62680,$62681,$62682,$62683,$62684,$62685,$62686,$62687,$62688,$62689,$62690,$62691,$62692),(nextval($62693),$62694,$62695,$62696,$62697,$62698,$62699,$62700,$62701,$62702,$62703,$62704,$62705,$62706),(nextval($62707),$62708,$62709,$62710,$62711,$62712,$62713,$62714,$62715,$62716,$62717,$62718,$62719,$62720),(nextval($62721),$62722,$62723,$62724,$62725,$62726,$62727,$62728,$62729,$62730,$62731,$62732,$62733,$62734),(nextval($62735),$62736,$62737,$62738,$62739,$62740,$62741,$62742,$62743,$62744,$62745,$62746,$62747,$62748),(nextval($62749),$62750,$62751,$62752,$62753,$62754,$62755,$62756,$62757,$62758,$62759,$62760,$62761,$62762),(nextval($62763),$62764,$62765,$62766,$62767,$62768,$62769,$62770,$62771,$62772,$62773,$62774,$62775,$62776),(nextval($62777),$62778,$62779,$62780,$62781,$62782,$62783,$62784,$62785,$62786,$62787,$62788,$62789,$62790),(nextval($62791),$62792,$62793,$62794,$62795,$62796,$62797,$62798,$62799,$62800,$62801,$62802,$62803,$62804),(nextval($62805),$62806,$62807,$62808,$62809,$62810,$62811,$62812,$62813,$62814,$62815,$62816,$62817,$62818),(nextval($62819),$62820,$62821,$62822,$62823,$62824,$62825,$62826,$62827,$62828,$62829,$62830,$62831,$62832),(nextval($62833),$62834,$62835,$62836,$62837,$62838,$62839,$62840,$62841,$62842,$62843,$62844,$62845,$62846),(nextval($62847),$62848,$62849,$62850,$62851,$62852,$62853,$62854,$62855,$62856,$62857,$62858,$62859,$62860),(nextval($62861),$62862,$62863,$62864,$62865,$62866,$62867,$62868,$62869,$62870,$62871,$62872,$62873,$62874),(nextval($62875),$62876,$62877,$62878,$62879,$62880,$62881,$62882,$62883,$62884,$62885,$62886,$62887,$62888),(nextval($62889),$62890,$62891,$62892,$62893,$62894,$62895,$62896,$62897,$62898,$62899,$62900,$62901,$62902),(nextval($62903),$62904,$62905,$62906,$62907,$62908,$62909,$62910,$62911,$62912,$62913,$62914,$62915,$62916),(nextval($62917),$62918,$62919,$62920,$62921,$62922,$62923,$62924,$62925,$62926,$62927,$62928,$62929,$62930),(nextval($62931),$62932,$62933,$62934,$62935,$62936,$62937,$62938,$62939,$62940,$62941,$62942,$62943,$62944),(nextval($62945),$62946,$62947,$62948,$62949,$62950,$62951,$62952,$62953,$62954,$62955,$62956,$62957,$62958),(nextval($62959),$62960,$62961,$62962,$62963,$62964,$62965,$62966,$62967,$62968,$62969,$62970,$62971,$62972),(nextval($62973),$62974,$62975,$62976,$62977,$62978,$62979,$62980,$62981,$62982,$62983,$62984,$62985,$62986),(nextval($62987),$62988,$62989,$62990,$62991,$62992,$62993,$62994,$62995,$62996,$62997,$62998,$62999,$63000),(nextval($63001),$63002,$63003,$63004,$63005,$63006,$63007,$63008,$63009,$63010,$63011,$63012,$63013,$63014),(nextval($63015),$63016,$63017,$63018,$63019,$63020,$63021,$63022,$63023,$63024,$63025,$63026,$63027,$63028),(nextval($63029),$63030,$63031,$63032,$63033,$63034,$63035,$63036,$63037,$63038,$63039,$63040,$63041,$63042),(nextval($63043),$63044,$63045,$63046,$63047,$63048,$63049,$63050,$63051,$63052,$63053,$63054,$63055,$63056),(nextval($63057),$63058,$63059,$63060,$63061,$63062,$63063,$63064,$63065,$63066,$63067,$63068,$63069,$63070),(nextval($63071),$63072,$63073,$63074,$63075,$63076,$63077,$63078,$63079,$63080,$63081,$63082,$63083,$63084),(nextval($63085),$63086,$63087,$63088,$63089,$63090,$63091,$63092,$63093,$63094,$63095,$63096,$63097,$63098),(nextval($63099),$63100,$63101,$63102,$63103,$63104,$63105,$63106,$63107,$63108,$63109,$63110,$63111,$63112),(nextval($63113),$63114,$63115,$63116,$63117,$63118,$63119,$63120,$63121,$63122,$63123,$63124,$63125,$63126),(nextval($63127),$63128,$63129,$63130,$63131,$63132,$63133,$63134,$63135,$63136,$63137,$63138,$63139,$63140),(nextval($63141),$63142,$63143,$63144,$63145,$63146,$63147,$63148,$63149,$63150,$63151,$63152,$63153,$63154),(nextval($63155),$63156,$63157,$63158,$63159,$63160,$63161,$63162,$63163,$63164,$63165,$63166,$63167,$63168),(nextval($63169),$63170,$63171,$63172,$63173,$63174,$63175,$63176,$63177,$63178,$63179,$63180,$63181,$63182),(nextval($63183),$63184,$63185,$63186,$63187,$63188,$63189,$63190,$63191,$63192,$63193,$63194,$63195,$63196),(nextval($63197),$63198,$63199,$63200,$63201,$63202,$63203,$63204,$63205,$63206,$63207,$63208,$63209,$63210),(nextval($63211),$63212,$63213,$63214,$63215,$63216,$63217,$63218,$63219,$63220,$63221,$63222,$63223,$63224),(nextval($63225),$63226,$63227,$63228,$63229,$63230,$63231,$63232,$63233,$63234,$63235,$63236,$63237,$63238),(nextval($63239),$63240,$63241,$63242,$63243,$63244,$63245,$63246,$63247,$63248,$63249,$63250,$63251,$63252),(nextval($63253),$63254,$63255,$63256,$63257,$63258,$63259,$63260,$63261,$63262,$63263,$63264,$63265,$63266),(nextval($63267),$63268,$63269,$63270,$63271,$63272,$63273,$63274,$63275,$63276,$63277,$63278,$63279,$63280),(nextval($63281),$63282,$63283,$63284,$63285,$63286,$63287,$63288,$63289,$63290,$63291,$63292,$63293,$63294),(nextval($63295),$63296,$63297,$63298,$63299,$63300,$63301,$63302,$63303,$63304,$63305,$63306,$63307,$63308),(nextval($63309),$63310,$63311,$63312,$63313,$63314,$63315,$63316,$63317,$63318,$63319,$63320,$63321,$63322),(nextval($63323),$63324,$63325,$63326,$63327,$63328,$63329,$63330,$63331,$63332,$63333,$63334,$63335,$63336),(nextval($63337),$63338,$63339,$63340,$63341,$63342,$63343,$63344,$63345,$63346,$63347,$63348,$63349,$63350),(nextval($63351),$63352,$63353,$63354,$63355,$63356,$63357,$63358,$63359,$63360,$63361,$63362,$63363,$63364),(nextval($63365),$63366,$63367,$63368,$63369,$63370,$63371,$63372,$63373,$63374,$63375,$63376,$63377,$63378),(nextval($63379),$63380,$63381,$63382,$63383,$63384,$63385,$63386,$63387,$63388,$63389,$63390,$63391,$63392),(nextval($63393),$63394,$63395,$63396,$63397,$63398,$63399,$63400,$63401,$63402,$63403,$63404,$63405,$63406),(nextval($63407),$63408,$63409,$63410,$63411,$63412,$63413,$63414,$63415,$63416,$63417,$63418,$63419,$63420),(nextval($63421),$63422,$63423,$63424,$63425,$63426,$63427,$63428,$63429,$63430,$63431,$63432,$63433,$63434),(nextval($63435),$63436,$63437,$63438,$63439,$63440,$63441,$63442,$63443,$63444,$63445,$63446,$63447,$63448),(nextval($63449),$63450,$63451,$63452,$63453,$63454,$63455,$63456,$63457,$63458,$63459,$63460,$63461,$63462),(nextval($63463),$63464,$63465,$63466,$63467,$63468,$63469,$63470,$63471,$63472,$63473,$63474,$63475,$63476),(nextval($63477),$63478,$63479,$63480,$63481,$63482,$63483,$63484,$63485,$63486,$63487,$63488,$63489,$63490),(nextval($63491),$63492,$63493,$63494,$63495,$63496,$63497,$63498,$63499,$63500,$63501,$63502,$63503,$63504),(nextval($63505),$63506,$63507,$63508,$63509,$63510,$63511,$63512,$63513,$63514,$63515,$63516,$63517,$63518),(nextval($63519),$63520,$63521,$63522,$63523,$63524,$63525,$63526,$63527,$63528,$63529,$63530,$63531,$63532),(nextval($63533),$63534,$63535,$63536,$63537,$63538,$63539,$63540,$63541,$63542,$63543,$63544,$63545,$63546),(nextval($63547),$63548,$63549,$63550,$63551,$63552,$63553,$63554,$63555,$63556,$63557,$63558,$63559,$63560),(nextval($63561),$63562,$63563,$63564,$63565,$63566,$63567,$63568,$63569,$63570,$63571,$63572,$63573,$63574),(nextval($63575),$63576,$63577,$63578,$63579,$63580,$63581,$63582,$63583,$63584,$63585,$63586,$63587,$63588),(nextval($63589),$63590,$63591,$63592,$63593,$63594,$63595,$63596,$63597,$63598,$63599,$63600,$63601,$63602),(nextval($63603),$63604,$63605,$63606,$63607,$63608,$63609,$63610,$63611,$63612,$63613,$63614,$63615,$63616),(nextval($63617),$63618,$63619,$63620,$63621,$63622,$63623,$63624,$63625,$63626,$63627,$63628,$63629,$63630),(nextval($63631),$63632,$63633,$63634,$63635,$63636,$63637,$63638,$63639,$63640,$63641,$63642,$63643,$63644),(nextval($63645),$63646,$63647,$63648,$63649,$63650,$63651,$63652,$63653,$63654,$63655,$63656,$63657,$63658),(nextval($63659),$63660,$63661,$63662,$63663,$63664,$63665,$63666,$63667,$63668,$63669,$63670,$63671,$63672),(nextval($63673),$63674,$63675,$63676,$63677,$63678,$63679,$63680,$63681,$63682,$63683,$63684,$63685,$63686),(nextval($63687),$63688,$63689,$63690,$63691,$63692,$63693,$63694,$63695,$63696,$63697,$63698,$63699,$63700),(nextval($63701),$63702,$63703,$63704,$63705,$63706,$63707,$63708,$63709,$63710,$63711,$63712,$63713,$63714),(nextval($63715),$63716,$63717,$63718,$63719,$63720,$63721,$63722,$63723,$63724,$63725,$63726,$63727,$63728),(nextval($63729),$63730,$63731,$63732,$63733,$63734,$63735,$63736,$63737,$63738,$63739,$63740,$63741,$63742),(nextval($63743),$63744,$63745,$63746,$63747,$63748,$63749,$63750,$63751,$63752,$63753,$63754,$63755,$63756),(nextval($63757),$63758,$63759,$63760,$63761,$63762,$63763,$63764,$63765,$63766,$63767,$63768,$63769,$63770),(nextval($63771),$63772,$63773,$63774,$63775,$63776,$63777,$63778,$63779,$63780,$63781,$63782,$63783,$63784),(nextval($63785),$63786,$63787,$63788,$63789,$63790,$63791,$63792,$63793,$63794,$63795,$63796,$63797,$63798),(nextval($63799),$63800,$63801,$63802,$63803,$63804,$63805,$63806,$63807,$63808,$63809,$63810,$63811,$63812),(nextval($63813),$63814,$63815,$63816,$63817,$63818,$63819,$63820,$63821,$63822,$63823,$63824,$63825,$63826),(nextval($63827),$63828,$63829,$63830,$63831,$63832,$63833,$63834,$63835,$63836,$63837,$63838,$63839,$63840),(nextval($63841),$63842,$63843,$63844,$63845,$63846,$63847,$63848,$63849,$63850,$63851,$63852,$63853,$63854),(nextval($63855),$63856,$63857,$63858,$63859,$63860,$63861,$63862,$63863,$63864,$63865,$63866,$63867,$63868),(nextval($63869),$63870,$63871,$63872,$63873,$63874,$63875,$63876,$63877,$63878,$63879,$63880,$63881,$63882),(nextval($63883),$63884,$63885,$63886,$63887,$63888,$63889,$63890,$63891,$63892,$63893,$63894,$63895,$63896),(nextval($63897),$63898,$63899,$63900,$63901,$63902,$63903,$63904,$63905,$63906,$63907,$63908,$63909,$63910),(nextval($63911),$63912,$63913,$63914,$63915,$63916,$63917,$63918,$63919,$63920,$63921,$63922,$63923,$63924),(nextval($63925),$63926,$63927,$63928,$63929,$63930,$63931,$63932,$63933,$63934,$63935,$63936,$63937,$63938),(nextval($63939),$63940,$63941,$63942,$63943,$63944,$63945,$63946,$63947,$63948,$63949,$63950,$63951,$63952),(nextval($63953),$63954,$63955,$63956,$63957,$63958,$63959,$63960,$63961,$63962,$63963,$63964,$63965,$63966),(nextval($63967),$63968,$63969,$63970,$63971,$63972,$63973,$63974,$63975,$63976,$63977,$63978,$63979,$63980),(nextval($63981),$63982,$63983,$63984,$63985,$63986,$63987,$63988,$63989,$63990,$63991,$63992,$63993,$63994),(nextval($63995),$63996,$63997,$63998,$63999,$64000,$64001,$64002,$64003,$64004,$64005,$64006,$64007,$64008),(nextval($64009),$64010,$64011,$64012,$64013,$64014,$64015,$64016,$64017,$64018,$64019,$64020,$64021,$64022),(nextval($64023),$64024,$64025,$64026,$64027,$64028,$64029,$64030,$64031,$64032,$64033,$64034,$64035,$64036),(nextval($64037),$64038,$64039,$64040,$64041,$64042,$64043,$64044,$64045,$64046,$64047,$64048,$64049,$64050),(nextval($64051),$64052,$64053,$64054,$64055,$64056,$64057,$64058,$64059,$64060,$64061,$64062,$64063,$64064),(nextval($64065),$64066,$64067,$64068,$64069,$64070,$64071,$64072,$64073,$64074,$64075,$64076,$64077,$64078),(nextval($64079),$64080,$64081,$64082,$64083,$64084,$64085,$64086,$64087,$64088,$64089,$64090,$64091,$64092),(nextval($64093),$64094,$64095,$64096,$64097,$64098,$64099,$64100,$64101,$64102,$64103,$64104,$64105,$64106),(nextval($64107),$64108,$64109,$64110,$64111,$64112,$64113,$64114,$64115,$64116,$64117,$64118,$64119,$64120),(nextval($64121),$64122,$64123,$64124,$64125,$64126,$64127,$64128,$64129,$64130,$64131,$64132,$64133,$64134),(nextval($64135),$64136,$64137,$64138,$64139,$64140,$64141,$64142,$64143,$64144,$64145,$64146,$64147,$64148),(nextval($64149),$64150,$64151,$64152,$64153,$64154,$64155,$64156,$64157,$64158,$64159,$64160,$64161,$64162),(nextval($64163),$64164,$64165,$64166,$64167,$64168,$64169,$64170,$64171,$64172,$64173,$64174,$64175,$64176),(nextval($64177),$64178,$64179,$64180,$64181,$64182,$64183,$64184,$64185,$64186,$64187,$64188,$64189,$64190),(nextval($64191),$64192,$64193,$64194,$64195,$64196,$64197,$64198,$64199,$64200,$64201,$64202,$64203,$64204),(nextval($64205),$64206,$64207,$64208,$64209,$64210,$64211,$64212,$64213,$64214,$64215,$64216,$64217,$64218),(nextval($64219),$64220,$64221,$64222,$64223,$64224,$64225,$64226,$64227,$64228,$64229,$64230,$64231,$64232),(nextval($64233),$64234,$64235,$64236,$64237,$64238,$64239,$64240,$64241,$64242,$64243,$64244,$64245,$64246),(nextval($64247),$64248,$64249,$64250,$64251,$64252,$64253,$64254,$64255,$64256,$64257,$64258,$64259,$64260),(nextval($64261),$64262,$64263,$64264,$64265,$64266,$64267,$64268,$64269,$64270,$64271,$64272,$64273,$64274),(nextval($64275),$64276,$64277,$64278,$64279,$64280,$64281,$64282,$64283,$64284,$64285,$64286,$64287,$64288),(nextval($64289),$64290,$64291,$64292,$64293,$64294,$64295,$64296,$64297,$64298,$64299,$64300,$64301,$64302),(nextval($64303),$64304,$64305,$64306,$64307,$64308,$64309,$64310,$64311,$64312,$64313,$64314,$64315,$64316),(nextval($64317),$64318,$64319,$64320,$64321,$64322,$64323,$64324,$64325,$64326,$64327,$64328,$64329,$64330),(nextval($64331),$64332,$64333,$64334,$64335,$64336,$64337,$64338,$64339,$64340,$64341,$64342,$64343,$64344),(nextval($64345),$64346,$64347,$64348,$64349,$64350,$64351,$64352,$64353,$64354,$64355,$64356,$64357,$64358),(nextval($64359),$64360,$64361,$64362,$64363,$64364,$64365,$64366,$64367,$64368,$64369,$64370,$64371,$64372),(nextval($64373),$64374,$64375,$64376,$64377,$64378,$64379,$64380,$64381,$64382,$64383,$64384,$64385,$64386),(nextval($64387),$64388,$64389,$64390,$64391,$64392,$64393,$64394,$64395,$64396,$64397,$64398,$64399,$64400),(nextval($64401),$64402,$64403,$64404,$64405,$64406,$64407,$64408,$64409,$64410,$64411,$64412,$64413,$64414),(nextval($64415),$64416,$64417,$64418,$64419,$64420,$64421,$64422,$64423,$64424,$64425,$64426,$64427,$64428),(nextval($64429),$64430,$64431,$64432,$64433,$64434,$64435,$64436,$64437,$64438,$64439,$64440,$64441,$64442),(nextval($64443),$64444,$64445,$64446,$64447,$64448,$64449,$64450,$64451,$64452,$64453,$64454,$64455,$64456),(nextval($64457),$64458,$64459,$64460,$64461,$64462,$64463,$64464,$64465,$64466,$64467,$64468,$64469,$64470),(nextval($64471),$64472,$64473,$64474,$64475,$64476,$64477,$64478,$64479,$64480,$64481,$64482,$64483,$64484),(nextval($64485),$64486,$64487,$64488,$64489,$64490,$64491,$64492,$64493,$64494,$64495,$64496,$64497,$64498),(nextval($64499),$64500,$64501,$64502,$64503,$64504,$64505,$64506,$64507,$64508,$64509,$64510,$64511,$64512),(nextval($64513),$64514,$64515,$64516,$64517,$64518,$64519,$64520,$64521,$64522,$64523,$64524,$64525,$64526),(nextval($64527),$64528,$64529,$64530,$64531,$64532,$64533,$64534,$64535,$64536,$64537,$64538,$64539,$64540),(nextval($64541),$64542,$64543,$64544,$64545,$64546,$64547,$64548,$64549,$64550,$64551,$64552,$64553,$64554),(nextval($64555),$64556,$64557,$64558,$64559,$64560,$64561,$64562,$64563,$64564,$64565,$64566,$64567,$64568),(nextval($64569),$64570,$64571,$64572,$64573,$64574,$64575,$64576,$64577,$64578,$64579,$64580,$64581,$64582),(nextval($64583),$64584,$64585,$64586,$64587,$64588,$64589,$64590,$64591,$64592,$64593,$64594,$64595,$64596),(nextval($64597),$64598,$64599,$64600,$64601,$64602,$64603,$64604,$64605,$64606,$64607,$64608,$64609,$64610),(nextval($64611),$64612,$64613,$64614,$64615,$64616,$64617,$64618,$64619,$64620,$64621,$64622,$64623,$64624),(nextval($64625),$64626,$64627,$64628,$64629,$64630,$64631,$64632,$64633,$64634,$64635,$64636,$64637,$64638),(nextval($64639),$64640,$64641,$64642,$64643,$64644,$64645,$64646,$64647,$64648,$64649,$64650,$64651,$64652),(nextval($64653),$64654,$64655,$64656,$64657,$64658,$64659,$64660,$64661,$64662,$64663,$64664,$64665,$64666),(nextval($64667),$64668,$64669,$64670,$64671,$64672,$64673,$64674,$64675,$64676,$64677,$64678,$64679,$64680),(nextval($64681),$64682,$64683,$64684,$64685,$64686,$64687,$64688,$64689,$64690,$64691,$64692,$64693,$64694),(nextval($64695),$64696,$64697,$64698,$64699,$64700,$64701,$64702,$64703,$64704,$64705,$64706,$64707,$64708),(nextval($64709),$64710,$64711,$64712,$64713,$64714,$64715,$64716,$64717,$64718,$64719,$64720,$64721,$64722),(nextval($64723),$64724,$64725,$64726,$64727,$64728,$64729,$64730,$64731,$64732,$64733,$64734,$64735,$64736),(nextval($64737),$64738,$64739,$64740,$64741,$64742,$64743,$64744,$64745,$64746,$64747,$64748,$64749,$64750),(nextval($64751),$64752,$64753,$64754,$64755,$64756,$64757,$64758,$64759,$64760,$64761,$64762,$64763,$64764),(nextval($64765),$64766,$64767,$64768,$64769,$64770,$64771,$64772,$64773,$64774,$64775,$64776,$64777,$64778),(nextval($64779),$64780,$64781,$64782,$64783,$64784,$64785,$64786,$64787,$64788,$64789,$64790,$64791,$64792),(nextval($64793),$64794,$64795,$64796,$64797,$64798,$64799,$64800,$64801,$64802,$64803,$64804,$64805,$64806),(nextval($64807),$64808,$64809,$64810,$64811,$64812,$64813,$64814,$64815,$64816,$64817,$64818,$64819,$64820),(nextval($64821),$64822,$64823,$64824,$64825,$64826,$64827,$64828,$64829,$64830,$64831,$64832,$64833,$64834),(nextval($64835),$64836,$64837,$64838,$64839,$64840,$64841,$64842,$64843,$64844,$64845,$64846,$64847,$64848),(nextval($64849),$64850,$64851,$64852,$64853,$64854,$64855,$64856,$64857,$64858,$64859,$64860,$64861,$64862),(nextval($64863),$64864,$64865,$64866,$64867,$64868,$64869,$64870,$64871,$64872,$64873,$64874,$64875,$64876),(nextval($64877),$64878,$64879,$64880,$64881,$64882,$64883,$64884,$64885,$64886,$64887,$64888,$64889,$64890),(nextval($64891),$64892,$64893,$64894,$64895,$64896,$64897,$64898,$64899,$64900,$64901,$64902,$64903,$64904),(nextval($64905),$64906,$64907,$64908,$64909,$64910,$64911,$64912,$64913,$64914,$64915,$64916,$64917,$64918),(nextval($64919),$64920,$64921,$64922,$64923,$64924,$64925,$64926,$64927,$64928,$64929,$64930,$64931,$64932),(nextval($64933),$64934,$64935,$64936,$64937,$64938,$64939,$64940,$64941,$64942,$64943,$64944,$64945,$64946),(nextval($64947),$64948,$64949,$64950,$64951,$64952,$64953,$64954,$64955,$64956,$64957,$64958,$64959,$64960),(nextval($64961),$64962,$64963,$64964,$64965,$64966,$64967,$64968,$64969,$64970,$64971,$64972,$64973,$64974),(nextval($64975),$64976,$64977,$64978,$64979,$64980,$64981,$64982,$64983,$64984,$64985,$64986,$64987,$64988),(nextval($64989),$64990,$64991,$64992,$64993,$64994,$64995,$64996,$64997,$64998,$64999,$65000,$65001,$65002),(nextval($65003),$65004,$65005,$65006,$65007,$65008,$65009,$65010,$65011,$65012,$65013,$65014,$65015,$65016),(nextval($65017),$65018,$65019,$65020,$65021,$65022,$65023,$65024,$65025,$65026,$65027,$65028,$65029,$65030),(nextval($65031),$65032,$65033,$65034,$65035,$65036,$65037,$65038,$65039,$65040,$65041,$65042,$65043,$65044),(nextval($65045),$65046,$65047,$65048,$65049,$65050,$65051,$65052,$65053,$65054,$65055,$65056,$65057,$65058),(nextval($65059),$65060,$65061,$65062,$65063,$65064,$65065,$65066,$65067,$65068,$65069,$65070,$65071,$65072),(nextval($65073),$65074,$65075,$65076,$65077,$65078,$65079,$65080,$65081,$65082,$65083,$65084,$65085,$65086),(nextval($65087),$65088,$65089,$65090,$65091,$65092,$65093,$65094,$65095,$65096,$65097,$65098,$65099,$65100),(nextval($65101),$65102,$65103,$65104,$65105,$65106,$65107,$65108,$65109,$65110,$65111,$65112,$65113,$65114),(nextval($65115),$65116,$65117,$65118,$65119,$65120,$65121,$65122,$65123,$65124,$65125,$65126,$65127,$65128),(nextval($65129),$65130,$65131,$65132,$65133,$65134,$65135,$65136,$65137,$65138,$65139,$65140,$65141,$65142),(nextval($65143),$65144,$65145,$65146,$65147,$65148,$65149,$65150,$65151,$65152,$65153,$65154,$65155,$65156),(nextval($65157),$65158,$65159,$65160,$65161,$65162,$65163,$65164,$65165,$65166,$65167,$65168,$65169,$65170),(nextval($65171),$65172,$65173,$65174,$65175,$65176,$65177,$65178,$65179,$65180,$65181,$65182,$65183,$65184),(nextval($65185),$65186,$65187,$65188,$65189,$65190,$65191,$65192,$65193,$65194,$65195,$65196,$65197,$65198),(nextval($65199),$65200,$65201,$65202,$65203,$65204,$65205,$65206,$65207,$65208,$65209,$65210,$65211,$65212),(nextval($65213),$65214,$65215,$65216,$65217,$65218,$65219,$65220,$65221,$65222,$65223,$65224,$65225,$65226),(nextval($65227),$65228,$65229,$65230,$65231,$65232,$65233,$65234,$65235,$65236,$65237,$65238,$65239,$65240),(nextval($65241),$65242,$65243,$65244,$65245,$65246,$65247,$65248,$65249,$65250,$65251,$65252,$65253,$65254),(nextval($65255),$65256,$65257,$65258,$65259,$65260,$65261,$65262,$65263,$65264,$65265,$65266,$65267,$65268),(nextval($65269),$65270,$65271,$65272,$65273,$65274,$65275,$65276,$65277,$65278,$65279,$65280,$65281,$65282),(nextval($65283),$65284,$65285,$65286,$65287,$65288,$65289,$65290,$65291,$65292,$65293,$65294,$65295,$65296),(nextval($65297),$65298,$65299,$65300,$65301,$65302,$65303,$65304,$65305,$65306,$65307,$65308,$65309,$65310),(nextval($65311),$65312,$65313,$65314,$65315,$65316,$65317,$65318,$65319,$65320,$65321,$65322,$65323,$65324),(nextval($65325),$65326,$65327,$65328,$65329,$65330,$65331,$65332,$65333,$65334,$65335,$65336,$65337,$65338),(nextval($65339),$65340,$65341,$65342,$65343,$65344,$65345,$65346,$65347,$65348,$65349,$65350,$65351,$65352),(nextval($65353),$65354,$65355,$65356,$65357,$65358,$65359,$65360,$65361,$65362,$65363,$65364,$65365,$65366),(nextval($65367),$65368,$65369,$65370,$65371,$65372,$65373,$65374,$65375,$65376,$65377,$65378,$65379,$65380),(nextval($65381),$65382,$65383,$65384,$65385,$65386,$65387,$65388,$65389,$65390,$65391,$65392,$65393,$65394),(nextval($65395),$65396,$65397,$65398,$65399,$65400,$65401,$65402,$65403,$65404,$65405,$65406,$65407,$65408),(nextval($65409),$65410,$65411,$65412,$65413,$65414,$65415,$65416,$65417,$65418,$65419,$65420,$65421,$65422),(nextval($65423),$65424,$65425,$65426,$65427,$65428,$65429,$65430,$65431,$65432,$65433,$65434,$65435,$65436),(nextval($65437),$65438,$65439,$65440,$65441,$65442,$65443,$65444,$65445,$65446,$65447,$65448,$65449,$65450),(nextval($65451),$65452,$65453,$65454,$65455,$65456,$65457,$65458,$65459,$65460,$65461,$65462,$65463,$65464),(nextval($65465),$65466,$65467,$65468,$65469,$65470,$65471,$65472,$65473,$65474,$65475,$65476,$65477,$65478),(nextval($65479),$65480,$65481,$65482,$65483,$65484,$65485,$65486,$65487,$65488,$65489,$65490,$65491,$65492),(nextval($65493),$65494,$65495,$65496,$65497,$65498,$65499,$65500,$65501,$65502,$65503,$65504,$65505,$65506),(nextval($65507),$65508,$65509,$65510,$65511,$65512,$65513,$65514,$65515,$65516,$65517,$65518,$65519,$65520),(nextval($65521),$65522,$65523,$65524,$65525,$65526,$65527,$65528,$65529,$65530,$65531,$65532,$65533,$65534),(nextval($65535),$65536,$65537,$65538,$65539,$65540,$65541,$65542,$65543,$65544,$65545,$65546,$65547,$65548),(nextval($65549),$65550,$65551,$65552,$65553,$65554,$65555,$65556,$65557,$65558,$65559,$65560,$65561,$65562),(nextval($65563),$65564,$65565,$65566,$65567,$65568,$65569,$65570,$65571,$65572,$65573,$65574,$65575,$65576),(nextval($65577),$65578,$65579,$65580,$65581,$65582,$65583,$65584,$65585,$65586,$65587,$65588,$65589,$65590),(nextval($65591),$65592,$65593,$65594,$65595,$65596,$65597,$65598,$65599,$65600,$65601,$65602,$65603,$65604),(nextval($65605),$65606,$65607,$65608,$65609,$65610,$65611,$65612,$65613,$65614,$65615,$65616,$65617,$65618),(nextval($65619),$65620,$65621,$65622,$65623,$65624,$65625,$65626,$65627,$65628,$65629,$65630,$65631,$65632),(nextval($65633),$65634,$65635,$65636,$65637,$65638,$65639,$65640,$65641,$65642,$65643,$65644,$65645,$65646),(nextval($65647),$65648,$65649,$65650,$65651,$65652,$65653,$65654,$65655,$65656,$65657,$65658,$65659,$65660),(nextval($65661),$65662,$65663,$65664,$65665,$65666,$65667,$65668,$65669,$65670,$65671,$65672,$65673,$65674),(nextval($65675),$65676,$65677,$65678,$65679,$65680,$65681,$65682,$65683,$65684,$65685,$65686,$65687,$65688),(nextval($65689),$65690,$65691,$65692,$65693,$65694,$65695,$65696,$65697,$65698,$65699,$65700,$65701,$65702),(nextval($65703),$65704,$65705,$65706,$65707,$65708,$65709,$65710,$65711,$65712,$65713,$65714,$65715,$65716),(nextval($65717),$65718,$65719,$65720,$65721,$65722,$65723,$65724,$65725,$65726,$65727,$65728,$65729,$65730),(nextval($65731),$65732,$65733,$65734,$65735,$65736,$65737,$65738,$65739,$65740,$65741,$65742,$65743,$65744),(nextval($65745),$65746,$65747,$65748,$65749,$65750,$65751,$65752,$65753,$65754,$65755,$65756,$65757,$65758),(nextval($65759),$65760,$65761,$65762,$65763,$65764,$65765,$65766,$65767,$65768,$65769,$65770,$65771,$65772),(nextval($65773),$65774,$65775,$65776,$65777,$65778,$65779,$65780,$65781,$65782,$65783,$65784,$65785,$65786),(nextval($65787),$65788,$65789,$65790,$65791,$65792,$65793,$65794,$65795,$65796,$65797,$65798,$65799,$65800),(nextval($65801),$65802,$65803,$65804,$65805,$65806,$65807,$65808,$65809,$65810,$65811,$65812,$65813,$65814),(nextval($65815),$65816,$65817,$65818,$65819,$65820,$65821,$65822,$65823,$65824,$65825,$65826,$65827,$65828),(nextval($65829),$65830,$65831,$65832,$65833,$65834,$65835,$65836,$65837,$65838,$65839,$65840,$65841,$65842),(nextval($65843),$65844,$65845,$65846,$65847,$65848,$65849,$65850,$65851,$65852,$65853,$65854,$65855,$65856),(nextval($65857),$65858,$65859,$65860,$65861,$65862,$65863,$65864,$65865,$65866,$65867,$65868,$65869,$65870),(nextval($65871),$65872,$65873,$65874,$65875,$65876,$65877,$65878,$65879,$65880,$65881,$65882,$65883,$65884),(nextval($65885),$65886,$65887,$65888,$65889,$65890,$65891,$65892,$65893,$65894,$65895,$65896,$65897,$65898),(nextval($65899),$65900,$65901,$65902,$65903,$65904,$65905,$65906,$65907,$65908,$65909,$65910,$65911,$65912),(nextval($65913),$65914,$65915,$65916,$65917,$65918,$65919,$65920,$65921,$65922,$65923,$65924,$65925,$65926),(nextval($65927),$65928,$65929,$65930,$65931,$65932,$65933,$65934,$65935,$65936,$65937,$65938,$65939,$65940),(nextval($65941),$65942,$65943,$65944,$65945,$65946,$65947,$65948,$65949,$65950,$65951,$65952,$65953,$65954),(nextval($65955),$65956,$65957,$65958,$65959,$65960,$65961,$65962,$65963,$65964,$65965,$65966,$65967,$65968),(nextval($65969),$65970,$65971,$65972,$65973,$65974,$65975,$65976,$65977,$65978,$65979,$65980,$65981,$65982),(nextval($65983),$65984,$65985,$65986,$65987,$65988,$65989,$65990,$65991,$65992,$65993,$65994,$65995,$65996),(nextval($65997),$65998,$65999,$66000,$66001,$66002,$66003,$66004,$66005,$66006,$66007,$66008,$66009,$66010),(nextval($66011),$66012,$66013,$66014,$66015,$66016,$66017,$66018,$66019,$66020,$66021,$66022,$66023,$66024),(nextval($66025),$66026,$66027,$66028,$66029,$66030,$66031,$66032,$66033,$66034,$66035,$66036,$66037,$66038),(nextval($66039),$66040,$66041,$66042,$66043,$66044,$66045,$66046,$66047,$66048,$66049,$66050,$66051,$66052),(nextval($66053),$66054,$66055,$66056,$66057,$66058,$66059,$66060,$66061,$66062,$66063,$66064,$66065,$66066),(nextval($66067),$66068,$66069,$66070,$66071,$66072,$66073,$66074,$66075,$66076,$66077,$66078,$66079,$66080),(nextval($66081),$66082,$66083,$66084,$66085,$66086,$66087,$66088,$66089,$66090,$66091,$66092,$66093,$66094),(nextval($66095),$66096,$66097,$66098,$66099,$66100,$66101,$66102,$66103,$66104,$66105,$66106,$66107,$66108),(nextval($66109),$66110,$66111,$66112,$66113,$66114,$66115,$66116,$66117,$66118,$66119,$66120,$66121,$66122),(nextval($66123),$66124,$66125,$66126,$66127,$66128,$66129,$66130,$66131,$66132,$66133,$66134,$66135,$66136),(nextval($66137),$66138,$66139,$66140,$66141,$66142,$66143,$66144,$66145,$66146,$66147,$66148,$66149,$66150),(nextval($66151),$66152,$66153,$66154,$66155,$66156,$66157,$66158,$66159,$66160,$66161,$66162,$66163,$66164),(nextval($66165),$66166,$66167,$66168,$66169,$66170,$66171,$66172,$66173,$66174,$66175,$66176,$66177,$66178),(nextval($66179),$66180,$66181,$66182,$66183,$66184,$66185,$66186,$66187,$66188,$66189,$66190,$66191,$66192),(nextval($66193),$66194,$66195,$66196,$66197,$66198,$66199,$66200,$66201,$66202,$66203,$66204,$66205,$66206),(nextval($66207),$66208,$66209,$66210,$66211,$66212,$66213,$66214,$66215,$66216,$66217,$66218,$66219,$66220),(nextval($66221),$66222,$66223,$66224,$66225,$66226,$66227,$66228,$66229,$66230,$66231,$66232,$66233,$66234),(nextval($66235),$66236,$66237,$66238,$66239,$66240,$66241,$66242,$66243,$66244,$66245,$66246,$66247,$66248),(nextval($66249),$66250,$66251,$66252,$66253,$66254,$66255,$66256,$66257,$66258,$66259,$66260,$66261,$66262),(nextval($66263),$66264,$66265,$66266,$66267,$66268,$66269,$66270,$66271,$66272,$66273,$66274,$66275,$66276),(nextval($66277),$66278,$66279,$66280,$66281,$66282,$66283,$66284,$66285,$66286,$66287,$66288,$66289,$66290),(nextval($66291),$66292,$66293,$66294,$66295,$66296,$66297,$66298,$66299,$66300,$66301,$66302,$66303,$66304),(nextval($66305),$66306,$66307,$66308,$66309,$66310,$66311,$66312,$66313,$66314,$66315,$66316,$66317,$66318),(nextval($66319),$66320,$66321,$66322,$66323,$66324,$66325,$66326,$66327,$66328,$66329,$66330,$66331,$66332),(nextval($66333),$66334,$66335,$66336,$66337,$66338,$66339,$66340,$66341,$66342,$66343,$66344,$66345,$66346),(nextval($66347),$66348,$66349,$66350,$66351,$66352,$66353,$66354,$66355,$66356,$66357,$66358,$66359,$66360),(nextval($66361),$66362,$66363,$66364,$66365,$66366,$66367,$66368,$66369,$66370,$66371,$66372,$66373,$66374),(nextval($66375),$66376,$66377,$66378,$66379,$66380,$66381,$66382,$66383,$66384,$66385,$66386,$66387,$66388),(nextval($66389),$66390,$66391,$66392,$66393,$66394,$66395,$66396,$66397,$66398,$66399,$66400,$66401,$66402),(nextval($66403),$66404,$66405,$66406,$66407,$66408,$66409,$66410,$66411,$66412,$66413,$66414,$66415,$66416),(nextval($66417),$66418,$66419,$66420,$66421,$66422,$66423,$66424,$66425,$66426,$66427,$66428,$66429,$66430),(nextval($66431),$66432,$66433,$66434,$66435,$66436,$66437,$66438,$66439,$66440,$66441,$66442,$66443,$66444),(nextval($66445),$66446,$66447,$66448,$66449,$66450,$66451,$66452,$66453,$66454,$66455,$66456,$66457,$66458),(nextval($66459),$66460,$66461,$66462,$66463,$66464,$66465,$66466,$66467,$66468,$66469,$66470,$66471,$66472),(nextval($66473),$66474,$66475,$66476,$66477,$66478,$66479,$66480,$66481,$66482,$66483,$66484,$66485,$66486),(nextval($66487),$66488,$66489,$66490,$66491,$66492,$66493,$66494,$66495,$66496,$66497,$66498,$66499,$66500),(nextval($66501),$66502,$66503,$66504,$66505,$66506,$66507,$66508,$66509,$66510,$66511,$66512,$66513,$66514),(nextval($66515),$66516,$66517,$66518,$66519,$66520,$66521,$66522,$66523,$66524,$66525,$66526,$66527,$66528),(nextval($66529),$66530,$66531,$66532,$66533,$66534,$66535,$66536,$66537,$66538,$66539,$66540,$66541,$66542),(nextval($66543),$66544,$66545,$66546,$66547,$66548,$66549,$66550,$66551,$66552,$66553,$66554,$66555,$66556),(nextval($66557),$66558,$66559,$66560,$66561,$66562,$66563,$66564,$66565,$66566,$66567,$66568,$66569,$66570),(nextval($66571),$66572,$66573,$66574,$66575,$66576,$66577,$66578,$66579,$66580,$66581,$66582,$66583,$66584),(nextval($66585),$66586,$66587,$66588,$66589,$66590,$66591,$66592,$66593,$66594,$66595,$66596,$66597,$66598),(nextval($66599),$66600,$66601,$66602,$66603,$66604,$66605,$66606,$66607,$66608,$66609,$66610,$66611,$66612),(nextval($66613),$66614,$66615,$66616,$66617,$66618,$66619,$66620,$66621,$66622,$66623,$66624,$66625,$66626),(nextval($66627),$66628,$66629,$66630,$66631,$66632,$66633,$66634,$66635,$66636,$66637,$66638,$66639,$66640),(nextval($66641),$66642,$66643,$66644,$66645,$66646,$66647,$66648,$66649,$66650,$66651,$66652,$66653,$66654),(nextval($66655),$66656,$66657,$66658,$66659,$66660,$66661,$66662,$66663,$66664,$66665,$66666,$66667,$66668),(nextval($66669),$66670,$66671,$66672,$66673,$66674,$66675,$66676,$66677,$66678,$66679,$66680,$66681,$66682),(nextval($66683),$66684,$66685,$66686,$66687,$66688,$66689,$66690,$66691,$66692,$66693,$66694,$66695,$66696),(nextval($66697),$66698,$66699,$66700,$66701,$66702,$66703,$66704,$66705,$66706,$66707,$66708,$66709,$66710),(nextval($66711),$66712,$66713,$66714,$66715,$66716,$66717,$66718,$66719,$66720,$66721,$66722,$66723,$66724),(nextval($66725),$66726,$66727,$66728,$66729,$66730,$66731,$66732,$66733,$66734,$66735,$66736,$66737,$66738),(nextval($66739),$66740,$66741,$66742,$66743,$66744,$66745,$66746,$66747,$66748,$66749,$66750,$66751,$66752),(nextval($66753),$66754,$66755,$66756,$66757,$66758,$66759,$66760,$66761,$66762,$66763,$66764,$66765,$66766),(nextval($66767),$66768,$66769,$66770,$66771,$66772,$66773,$66774,$66775,$66776,$66777,$66778,$66779,$66780),(nextval($66781),$66782,$66783,$66784,$66785,$66786,$66787,$66788,$66789,$66790,$66791,$66792,$66793,$66794),(nextval($66795),$66796,$66797,$66798,$66799,$66800,$66801,$66802,$66803,$66804,$66805,$66806,$66807,$66808),(nextval($66809),$66810,$66811,$66812,$66813,$66814,$66815,$66816,$66817,$66818,$66819,$66820,$66821,$66822),(nextval($66823),$66824,$66825,$66826,$66827,$66828,$66829,$66830,$66831,$66832,$66833,$66834,$66835,$66836),(nextval($66837),$66838,$66839,$66840,$66841,$66842,$66843,$66844,$66845,$66846,$66847,$66848,$66849,$66850),(nextval($66851),$66852,$66853,$66854,$66855,$66856,$66857,$66858,$66859,$66860,$66861,$66862,$66863,$66864),(nextval($66865),$66866,$66867,$66868,$66869,$66870,$66871,$66872,$66873,$66874,$66875,$66876,$66877,$66878),(nextval($66879),$66880,$66881,$66882,$66883,$66884,$66885,$66886,$66887,$66888,$66889,$66890,$66891,$66892),(nextval($66893),$66894,$66895,$66896,$66897,$66898,$66899,$66900,$66901,$66902,$66903,$66904,$66905,$66906),(nextval($66907),$66908,$66909,$66910,$66911,$66912,$66913,$66914,$66915,$66916,$66917,$66918,$66919,$66920),(nextval($66921),$66922,$66923,$66924,$66925,$66926,$66927,$66928,$66929,$66930,$66931,$66932,$66933,$66934),(nextval($66935),$66936,$66937,$66938,$66939,$66940,$66941,$66942,$66943,$66944,$66945,$66946,$66947,$66948),(nextval($66949),$66950,$66951,$66952,$66953,$66954,$66955,$66956,$66957,$66958,$66959,$66960,$66961,$66962),(nextval($66963),$66964,$66965,$66966,$66967,$66968,$66969,$66970,$66971,$66972,$66973,$66974,$66975,$66976),(nextval($66977),$66978,$66979,$66980,$66981,$66982,$66983,$66984,$66985,$66986,$66987,$66988,$66989,$66990),(nextval($66991),$66992,$66993,$66994,$66995,$66996,$66997,$66998,$66999,$67000,$67001,$67002,$67003,$67004),(nextval($67005),$67006,$67007,$67008,$67009,$67010,$67011,$67012,$67013,$67014,$67015,$67016,$67017,$67018),(nextval($67019),$67020,$67021,$67022,$67023,$67024,$67025,$67026,$67027,$67028,$67029,$67030,$67031,$67032),(nextval($67033),$67034,$67035,$67036,$67037,$67038,$67039,$67040,$67041,$67042,$67043,$67044,$67045,$67046),(nextval($67047),$67048,$67049,$67050,$67051,$67052,$67053,$67054,$67055,$67056,$67057,$67058,$67059,$67060),(nextval($67061),$67062,$67063,$67064,$67065,$67066,$67067,$67068,$67069,$67070,$67071,$67072,$67073,$67074),(nextval($67075),$67076,$67077,$67078,$67079,$67080,$67081,$67082,$67083,$67084,$67085,$67086,$67087,$67088),(nextval($67089),$67090,$67091,$67092,$67093,$67094,$67095,$67096,$67097,$67098,$67099,$67100,$67101,$67102),(nextval($67103),$67104,$67105,$67106,$67107,$67108,$67109,$67110,$67111,$67112,$67113,$67114,$67115,$67116),(nextval($67117),$67118,$67119,$67120,$67121,$67122,$67123,$67124,$67125,$67126,$67127,$67128,$67129,$67130),(nextval($67131),$67132,$67133,$67134,$67135,$67136,$67137,$67138,$67139,$67140,$67141,$67142,$67143,$67144),(nextval($67145),$67146,$67147,$67148,$67149,$67150,$67151,$67152,$67153,$67154,$67155,$67156,$67157,$67158),(nextval($67159),$67160,$67161,$67162,$67163,$67164,$67165,$67166,$67167,$67168,$67169,$67170,$67171,$67172),(nextval($67173),$67174,$67175,$67176,$67177,$67178,$67179,$67180,$67181,$67182,$67183,$67184,$67185,$67186),(nextval($67187),$67188,$67189,$67190,$67191,$67192,$67193,$67194,$67195,$67196,$67197,$67198,$67199,$67200),(nextval($67201),$67202,$67203,$67204,$67205,$67206,$67207,$67208,$67209,$67210,$67211,$67212,$67213,$67214),(nextval($67215),$67216,$67217,$67218,$67219,$67220,$67221,$67222,$67223,$67224,$67225,$67226,$67227,$67228),(nextval($67229),$67230,$67231,$67232,$67233,$67234,$67235,$67236,$67237,$67238,$67239,$67240,$67241,$67242),(nextval($67243),$67244,$67245,$67246,$67247,$67248,$67249,$67250,$67251,$67252,$67253,$67254,$67255,$67256),(nextval($67257),$67258,$67259,$67260,$67261,$67262,$67263,$67264,$67265,$67266,$67267,$67268,$67269,$67270),(nextval($67271),$67272,$67273,$67274,$67275,$67276,$67277,$67278,$67279,$67280,$67281,$67282,$67283,$67284),(nextval($67285),$67286,$67287,$67288,$67289,$67290,$67291,$67292,$67293,$67294,$67295,$67296,$67297,$67298),(nextval($67299),$67300,$67301,$67302,$67303,$67304,$67305,$67306,$67307,$67308,$67309,$67310,$67311,$67312),(nextval($67313),$67314,$67315,$67316,$67317,$67318,$67319,$67320,$67321,$67322,$67323,$67324,$67325,$67326),(nextval($67327),$67328,$67329,$67330,$67331,$67332,$67333,$67334,$67335,$67336,$67337,$67338,$67339,$67340),(nextval($67341),$67342,$67343,$67344,$67345,$67346,$67347,$67348,$67349,$67350,$67351,$67352,$67353,$67354),(nextval($67355),$67356,$67357,$67358,$67359,$67360,$67361,$67362,$67363,$67364,$67365,$67366,$67367,$67368),(nextval($67369),$67370,$67371,$67372,$67373,$67374,$67375,$67376,$67377,$67378,$67379,$67380,$67381,$67382),(nextval($67383),$67384,$67385,$67386,$67387,$67388,$67389,$67390,$67391,$67392,$67393,$67394,$67395,$67396),(nextval($67397),$67398,$67399,$67400,$67401,$67402,$67403,$67404,$67405,$67406,$67407,$67408,$67409,$67410),(nextval($67411),$67412,$67413,$67414,$67415,$67416,$67417,$67418,$67419,$67420,$67421,$67422,$67423,$67424),(nextval($67425),$67426,$67427,$67428,$67429,$67430,$67431,$67432,$67433,$67434,$67435,$67436,$67437,$67438),(nextval($67439),$67440,$67441,$67442,$67443,$67444,$67445,$67446,$67447,$67448,$67449,$67450,$67451,$67452),(nextval($67453),$67454,$67455,$67456,$67457,$67458,$67459,$67460,$67461,$67462,$67463,$67464,$67465,$67466),(nextval($67467),$67468,$67469,$67470,$67471,$67472,$67473,$67474,$67475,$67476,$67477,$67478,$67479,$67480),(nextval($67481),$67482,$67483,$67484,$67485,$67486,$67487,$67488,$67489,$67490,$67491,$67492,$67493,$67494),(nextval($67495),$67496,$67497,$67498,$67499,$67500,$67501,$67502,$67503,$67504,$67505,$67506,$67507,$67508),(nextval($67509),$67510,$67511,$67512,$67513,$67514,$67515,$67516,$67517,$67518,$67519,$67520,$67521,$67522),(nextval($67523),$67524,$67525,$67526,$67527,$67528,$67529,$67530,$67531,$67532,$67533,$67534,$67535,$67536),(nextval($67537),$67538,$67539,$67540,$67541,$67542,$67543,$67544,$67545,$67546,$67547,$67548,$67549,$67550),(nextval($67551),$67552,$67553,$67554,$67555,$67556,$67557,$67558,$67559,$67560,$67561,$67562,$67563,$67564),(nextval($67565),$67566,$67567,$67568,$67569,$67570,$67571,$67572,$67573,$67574,$67575,$67576,$67577,$67578),(nextval($67579),$67580,$67581,$67582,$67583,$67584,$67585,$67586,$67587,$67588,$67589,$67590,$67591,$67592),(nextval($67593),$67594,$67595,$67596,$67597,$67598,$67599,$67600,$67601,$67602,$67603,$67604,$67605,$67606),(nextval($67607),$67608,$67609,$67610,$67611,$67612,$67613,$67614,$67615,$67616,$67617,$67618,$67619,$67620),(nextval($67621),$67622,$67623,$67624,$67625,$67626,$67627,$67628,$67629,$67630,$67631,$67632,$67633,$67634),(nextval($67635),$67636,$67637,$67638,$67639,$67640,$67641,$67642,$67643,$67644,$67645,$67646,$67647,$67648),(nextval($67649),$67650,$67651,$67652,$67653,$67654,$67655,$67656,$67657,$67658,$67659,$67660,$67661,$67662),(nextval($67663),$67664,$67665,$67666,$67667,$67668,$67669,$67670,$67671,$67672,$67673,$67674,$67675,$67676),(nextval($67677),$67678,$67679,$67680,$67681,$67682,$67683,$67684,$67685,$67686,$67687,$67688,$67689,$67690),(nextval($67691),$67692,$67693,$67694,$67695,$67696,$67697,$67698,$67699,$67700,$67701,$67702,$67703,$67704),(nextval($67705),$67706,$67707,$67708,$67709,$67710,$67711,$67712,$67713,$67714,$67715,$67716,$67717,$67718),(nextval($67719),$67720,$67721,$67722,$67723,$67724,$67725,$67726,$67727,$67728,$67729,$67730,$67731,$67732),(nextval($67733),$67734,$67735,$67736,$67737,$67738,$67739,$67740,$67741,$67742,$67743,$67744,$67745,$67746),(nextval($67747),$67748,$67749,$67750,$67751,$67752,$67753,$67754,$67755,$67756,$67757,$67758,$67759,$67760),(nextval($67761),$67762,$67763,$67764,$67765,$67766,$67767,$67768,$67769,$67770,$67771,$67772,$67773,$67774),(nextval($67775),$67776,$67777,$67778,$67779,$67780,$67781,$67782,$67783,$67784,$67785,$67786,$67787,$67788),(nextval($67789),$67790,$67791,$67792,$67793,$67794,$67795,$67796,$67797,$67798,$67799,$67800,$67801,$67802),(nextval($67803),$67804,$67805,$67806,$67807,$67808,$67809,$67810,$67811,$67812,$67813,$67814,$67815,$67816),(nextval($67817),$67818,$67819,$67820,$67821,$67822,$67823,$67824,$67825,$67826,$67827,$67828,$67829,$67830),(nextval($67831),$67832,$67833,$67834,$67835,$67836,$67837,$67838,$67839,$67840,$67841,$67842,$67843,$67844),(nextval($67845),$67846,$67847,$67848,$67849,$67850,$67851,$67852,$67853,$67854,$67855,$67856,$67857,$67858),(nextval($67859),$67860,$67861,$67862,$67863,$67864,$67865,$67866,$67867,$67868,$67869,$67870,$67871,$67872),(nextval($67873),$67874,$67875,$67876,$67877,$67878,$67879,$67880,$67881,$67882,$67883,$67884,$67885,$67886),(nextval($67887),$67888,$67889,$67890,$67891,$67892,$67893,$67894,$67895,$67896,$67897,$67898,$67899,$67900),(nextval($67901),$67902,$67903,$67904,$67905,$67906,$67907,$67908,$67909,$67910,$67911,$67912,$67913,$67914),(nextval($67915),$67916,$67917,$67918,$67919,$67920,$67921,$67922,$67923,$67924,$67925,$67926,$67927,$67928),(nextval($67929),$67930,$67931,$67932,$67933,$67934,$67935,$67936,$67937,$67938,$67939,$67940,$67941,$67942),(nextval($67943),$67944,$67945,$67946,$67947,$67948,$67949,$67950,$67951,$67952,$67953,$67954,$67955,$67956),(nextval($67957),$67958,$67959,$67960,$67961,$67962,$67963,$67964,$67965,$67966,$67967,$67968,$67969,$67970),(nextval($67971),$67972,$67973,$67974,$67975,$67976,$67977,$67978,$67979,$67980,$67981,$67982,$67983,$67984),(nextval($67985),$67986,$67987,$67988,$67989,$67990,$67991,$67992,$67993,$67994,$67995,$67996,$67997,$67998),(nextval($67999),$68000,$68001,$68002,$68003,$68004,$68005,$68006,$68007,$68008,$68009,$68010,$68011,$68012),(nextval($68013),$68014,$68015,$68016,$68017,$68018,$68019,$68020,$68021,$68022,$68023,$68024,$68025,$68026),(nextval($68027),$68028,$68029,$68030,$68031,$68032,$68033,$68034,$68035,$68036,$68037,$68038,$68039,$68040),(nextval($68041),$68042,$68043,$68044,$68045,$68046,$68047,$68048,$68049,$68050,$68051,$68052,$68053,$68054),(nextval($68055),$68056,$68057,$68058,$68059,$68060,$68061,$68062,$68063,$68064,$68065,$68066,$68067,$68068),(nextval($68069),$68070,$68071,$68072,$68073,$68074,$68075,$68076,$68077,$68078,$68079,$68080,$68081,$68082),(nextval($68083),$68084,$68085,$68086,$68087,$68088,$68089,$68090,$68091,$68092,$68093,$68094,$68095,$68096),(nextval($68097),$68098,$68099,$68100,$68101,$68102,$68103,$68104,$68105,$68106,$68107,$68108,$68109,$68110),(nextval($68111),$68112,$68113,$68114,$68115,$68116,$68117,$68118,$68119,$68120,$68121,$68122,$68123,$68124),(nextval($68125),$68126,$68127,$68128,$68129,$68130,$68131,$68132,$68133,$68134,$68135,$68136,$68137,$68138),(nextval($68139),$68140,$68141,$68142,$68143,$68144,$68145,$68146,$68147,$68148,$68149,$68150,$68151,$68152),(nextval($68153),$68154,$68155,$68156,$68157,$68158,$68159,$68160,$68161,$68162,$68163,$68164,$68165,$68166),(nextval($68167),$68168,$68169,$68170,$68171,$68172,$68173,$68174,$68175,$68176,$68177,$68178,$68179,$68180),(nextval($68181),$68182,$68183,$68184,$68185,$68186,$68187,$68188,$68189,$68190,$68191,$68192,$68193,$68194),(nextval($68195),$68196,$68197,$68198,$68199,$68200,$68201,$68202,$68203,$68204,$68205,$68206,$68207,$68208),(nextval($68209),$68210,$68211,$68212,$68213,$68214,$68215,$68216,$68217,$68218,$68219,$68220,$68221,$68222),(nextval($68223),$68224,$68225,$68226,$68227,$68228,$68229,$68230,$68231,$68232,$68233,$68234,$68235,$68236),(nextval($68237),$68238,$68239,$68240,$68241,$68242,$68243,$68244,$68245,$68246,$68247,$68248,$68249,$68250),(nextval($68251),$68252,$68253,$68254,$68255,$68256,$68257,$68258,$68259,$68260,$68261,$68262,$68263,$68264),(nextval($68265),$68266,$68267,$68268,$68269,$68270,$68271,$68272,$68273,$68274,$68275,$68276,$68277,$68278),(nextval($68279),$68280,$68281,$68282,$68283,$68284,$68285,$68286,$68287,$68288,$68289,$68290,$68291,$68292),(nextval($68293),$68294,$68295,$68296,$68297,$68298,$68299,$68300,$68301,$68302,$68303,$68304,$68305,$68306),(nextval($68307),$68308,$68309,$68310,$68311,$68312,$68313,$68314,$68315,$68316,$68317,$68318,$68319,$68320),(nextval($68321),$68322,$68323,$68324,$68325,$68326,$68327,$68328,$68329,$68330,$68331,$68332,$68333,$68334),(nextval($68335),$68336,$68337,$68338,$68339,$68340,$68341,$68342,$68343,$68344,$68345,$68346,$68347,$68348),(nextval($68349),$68350,$68351,$68352,$68353,$68354,$68355,$68356,$68357,$68358,$68359,$68360,$68361,$68362),(nextval($68363),$68364,$68365,$68366,$68367,$68368,$68369,$68370,$68371,$68372,$68373,$68374,$68375,$68376),(nextval($68377),$68378,$68379,$68380,$68381,$68382,$68383,$68384,$68385,$68386,$68387,$68388,$68389,$68390),(nextval($68391),$68392,$68393,$68394,$68395,$68396,$68397,$68398,$68399,$68400,$68401,$68402,$68403,$68404),(nextval($68405),$68406,$68407,$68408,$68409,$68410,$68411,$68412,$68413,$68414,$68415,$68416,$68417,$68418),(nextval($68419),$68420,$68421,$68422,$68423,$68424,$68425,$68426,$68427,$68428,$68429,$68430,$68431,$68432),(nextval($68433),$68434,$68435,$68436,$68437,$68438,$68439,$68440,$68441,$68442,$68443,$68444,$68445,$68446),(nextval($68447),$68448,$68449,$68450,$68451,$68452,$68453,$68454,$68455,$68456,$68457,$68458,$68459,$68460),(nextval($68461),$68462,$68463,$68464,$68465,$68466,$68467,$68468,$68469,$68470,$68471,$68472,$68473,$68474),(nextval($68475),$68476,$68477,$68478,$68479,$68480,$68481,$68482,$68483,$68484,$68485,$68486,$68487,$68488),(nextval($68489),$68490,$68491,$68492,$68493,$68494,$68495,$68496,$68497,$68498,$68499,$68500,$68501,$68502),(nextval($68503),$68504,$68505,$68506,$68507,$68508,$68509,$68510,$68511,$68512,$68513,$68514,$68515,$68516),(nextval($68517),$68518,$68519,$68520,$68521,$68522,$68523,$68524,$68525,$68526,$68527,$68528,$68529,$68530),(nextval($68531),$68532,$68533,$68534,$68535,$68536,$68537,$68538,$68539,$68540,$68541,$68542,$68543,$68544),(nextval($68545),$68546,$68547,$68548,$68549,$68550,$68551,$68552,$68553,$68554,$68555,$68556,$68557,$68558),(nextval($68559),$68560,$68561,$68562,$68563,$68564,$68565,$68566,$68567,$68568,$68569,$68570,$68571,$68572),(nextval($68573),$68574,$68575,$68576,$68577,$68578,$68579,$68580,$68581,$68582,$68583,$68584,$68585,$68586),(nextval($68587),$68588,$68589,$68590,$68591,$68592,$68593,$68594,$68595,$68596,$68597,$68598,$68599,$68600),(nextval($68601),$68602,$68603,$68604,$68605,$68606,$68607,$68608,$68609,$68610,$68611,$68612,$68613,$68614),(nextval($68615),$68616,$68617,$68618,$68619,$68620,$68621,$68622,$68623,$68624,$68625,$68626,$68627,$68628),(nextval($68629),$68630,$68631,$68632,$68633,$68634,$68635,$68636,$68637,$68638,$68639,$68640,$68641,$68642),(nextval($68643),$68644,$68645,$68646,$68647,$68648,$68649,$68650,$68651,$68652,$68653,$68654,$68655,$68656),(nextval($68657),$68658,$68659,$68660,$68661,$68662,$68663,$68664,$68665,$68666,$68667,$68668,$68669,$68670),(nextval($68671),$68672,$68673,$68674,$68675,$68676,$68677,$68678,$68679,$68680,$68681,$68682,$68683,$68684),(nextval($68685),$68686,$68687,$68688,$68689,$68690,$68691,$68692,$68693,$68694,$68695,$68696,$68697,$68698),(nextval($68699),$68700,$68701,$68702,$68703,$68704,$68705,$68706,$68707,$68708,$68709,$68710,$68711,$68712),(nextval($68713),$68714,$68715,$68716,$68717,$68718,$68719,$68720,$68721,$68722,$68723,$68724,$68725,$68726),(nextval($68727),$68728,$68729,$68730,$68731,$68732,$68733,$68734,$68735,$68736,$68737,$68738,$68739,$68740),(nextval($68741),$68742,$68743,$68744,$68745,$68746,$68747,$68748,$68749,$68750,$68751,$68752,$68753,$68754),(nextval($68755),$68756,$68757,$68758,$68759,$68760,$68761,$68762,$68763,$68764,$68765,$68766,$68767,$68768),(nextval($68769),$68770,$68771,$68772,$68773,$68774,$68775,$68776,$68777,$68778,$68779,$68780,$68781,$68782),(nextval($68783),$68784,$68785,$68786,$68787,$68788,$68789,$68790,$68791,$68792,$68793,$68794,$68795,$68796),(nextval($68797),$68798,$68799,$68800,$68801,$68802,$68803,$68804,$68805,$68806,$68807,$68808,$68809,$68810),(nextval($68811),$68812,$68813,$68814,$68815,$68816,$68817,$68818,$68819,$68820,$68821,$68822,$68823,$68824),(nextval($68825),$68826,$68827,$68828,$68829,$68830,$68831,$68832,$68833,$68834,$68835,$68836,$68837,$68838),(nextval($68839),$68840,$68841,$68842,$68843,$68844,$68845,$68846,$68847,$68848,$68849,$68850,$68851,$68852),(nextval($68853),$68854,$68855,$68856,$68857,$68858,$68859,$68860,$68861,$68862,$68863,$68864,$68865,$68866),(nextval($68867),$68868,$68869,$68870,$68871,$68872,$68873,$68874,$68875,$68876,$68877,$68878,$68879,$68880),(nextval($68881),$68882,$68883,$68884,$68885,$68886,$68887,$68888,$68889,$68890,$68891,$68892,$68893,$68894),(nextval($68895),$68896,$68897,$68898,$68899,$68900,$68901,$68902,$68903,$68904,$68905,$68906,$68907,$68908),(nextval($68909),$68910,$68911,$68912,$68913,$68914,$68915,$68916,$68917,$68918,$68919,$68920,$68921,$68922),(nextval($68923),$68924,$68925,$68926,$68927,$68928,$68929,$68930,$68931,$68932,$68933,$68934,$68935,$68936),(nextval($68937),$68938,$68939,$68940,$68941,$68942,$68943,$68944,$68945,$68946,$68947,$68948,$68949,$68950),(nextval($68951),$68952,$68953,$68954,$68955,$68956,$68957,$68958,$68959,$68960,$68961,$68962,$68963,$68964),(nextval($68965),$68966,$68967,$68968,$68969,$68970,$68971,$68972,$68973,$68974,$68975,$68976,$68977,$68978),(nextval($68979),$68980,$68981,$68982,$68983,$68984,$68985,$68986,$68987,$68988,$68989,$68990,$68991,$68992),(nextval($68993),$68994,$68995,$68996,$68997,$68998,$68999,$69000,$69001,$69002,$69003,$69004,$69005,$69006),(nextval($69007),$69008,$69009,$69010,$69011,$69012,$69013,$69014,$69015,$69016,$69017,$69018,$69019,$69020),(nextval($69021),$69022,$69023,$69024,$69025,$69026,$69027,$69028,$69029,$69030,$69031,$69032,$69033,$69034),(nextval($69035),$69036,$69037,$69038,$69039,$69040,$69041,$69042,$69043,$69044,$69045,$69046,$69047,$69048),(nextval($69049),$69050,$69051,$69052,$69053,$69054,$69055,$69056,$69057,$69058,$69059,$69060,$69061,$69062),(nextval($69063),$69064,$69065,$69066,$69067,$69068,$69069,$69070,$69071,$69072,$69073,$69074,$69075,$69076),(nextval($69077),$69078,$69079,$69080,$69081,$69082,$69083,$69084,$69085,$69086,$69087,$69088,$69089,$69090),(nextval($69091),$69092,$69093,$69094,$69095,$69096,$69097,$69098,$69099,$69100,$69101,$69102,$69103,$69104),(nextval($69105),$69106,$69107,$69108,$69109,$69110,$69111,$69112,$69113,$69114,$69115,$69116,$69117,$69118),(nextval($69119),$69120,$69121,$69122,$69123,$69124,$69125,$69126,$69127,$69128,$69129,$69130,$69131,$69132),(nextval($69133),$69134,$69135,$69136,$69137,$69138,$69139,$69140,$69141,$69142,$69143,$69144,$69145,$69146),(nextval($69147),$69148,$69149,$69150,$69151,$69152,$69153,$69154,$69155,$69156,$69157,$69158,$69159,$69160),(nextval($69161),$69162,$69163,$69164,$69165,$69166,$69167,$69168,$69169,$69170,$69171,$69172,$69173,$69174),(nextval($69175),$69176,$69177,$69178,$69179,$69180,$69181,$69182,$69183,$69184,$69185,$69186,$69187,$69188),(nextval($69189),$69190,$69191,$69192,$69193,$69194,$69195,$69196,$69197,$69198,$69199,$69200,$69201,$69202),(nextval($69203),$69204,$69205,$69206,$69207,$69208,$69209,$69210,$69211,$69212,$69213,$69214,$69215,$69216),(nextval($69217),$69218,$69219,$69220,$69221,$69222,$69223,$69224,$69225,$69226,$69227,$69228,$69229,$69230),(nextval($69231),$69232,$69233,$69234,$69235,$69236,$69237,$69238,$69239,$69240,$69241,$69242,$69243,$69244),(nextval($69245),$69246,$69247,$69248,$69249,$69250,$69251,$69252,$69253,$69254,$69255,$69256,$69257,$69258),(nextval($69259),$69260,$69261,$69262,$69263,$69264,$69265,$69266,$69267,$69268,$69269,$69270,$69271,$69272),(nextval($69273),$69274,$69275,$69276,$69277,$69278,$69279,$69280,$69281,$69282,$69283,$69284,$69285,$69286),(nextval($69287),$69288,$69289,$69290,$69291,$69292,$69293,$69294,$69295,$69296,$69297,$69298,$69299,$69300),(nextval($69301),$69302,$69303,$69304,$69305,$69306,$69307,$69308,$69309,$69310,$69311,$69312,$69313,$69314),(nextval($69315),$69316,$69317,$69318,$69319,$69320,$69321,$69322,$69323,$69324,$69325,$69326,$69327,$69328),(nextval($69329),$69330,$69331,$69332,$69333,$69334,$69335,$69336,$69337,$69338,$69339,$69340,$69341,$69342),(nextval($69343),$69344,$69345,$69346,$69347,$69348,$69349,$69350,$69351,$69352,$69353,$69354,$69355,$69356),(nextval($69357),$69358,$69359,$69360,$69361,$69362,$69363,$69364,$69365,$69366,$69367,$69368,$69369,$69370),(nextval($69371),$69372,$69373,$69374,$69375,$69376,$69377,$69378,$69379,$69380,$69381,$69382,$69383,$69384),(nextval($69385),$69386,$69387,$69388,$69389,$69390,$69391,$69392,$69393,$69394,$69395,$69396,$69397,$69398),(nextval($69399),$69400,$69401,$69402,$69403,$69404,$69405,$69406,$69407,$69408,$69409,$69410,$69411,$69412),(nextval($69413),$69414,$69415,$69416,$69417,$69418,$69419,$69420,$69421,$69422,$69423,$69424,$69425,$69426),(nextval($69427),$69428,$69429,$69430,$69431,$69432,$69433,$69434,$69435,$69436,$69437,$69438,$69439,$69440),(nextval($69441),$69442,$69443,$69444,$69445,$69446,$69447,$69448,$69449,$69450,$69451,$69452,$69453,$69454),(nextval($69455),$69456,$69457,$69458,$69459,$69460,$69461,$69462,$69463,$69464,$69465,$69466,$69467,$69468),(nextval($69469),$69470,$69471,$69472,$69473,$69474,$69475,$69476,$69477,$69478,$69479,$69480,$69481,$69482),(nextval($69483),$69484,$69485,$69486,$69487,$69488,$69489,$69490,$69491,$69492,$69493,$69494,$69495,$69496),(nextval($69497),$69498,$69499,$69500,$69501,$69502,$69503,$69504,$69505,$69506,$69507,$69508,$69509,$69510),(nextval($69511),$69512,$69513,$69514,$69515,$69516,$69517,$69518,$69519,$69520,$69521,$69522,$69523,$69524),(nextval($69525),$69526,$69527,$69528,$69529,$69530,$69531,$69532,$69533,$69534,$69535,$69536,$69537,$69538),(nextval($69539),$69540,$69541,$69542,$69543,$69544,$69545,$69546,$69547,$69548,$69549,$69550,$69551,$69552),(nextval($69553),$69554,$69555,$69556,$69557,$69558,$69559,$69560,$69561,$69562,$69563,$69564,$69565,$69566),(nextval($69567),$69568,$69569,$69570,$69571,$69572,$69573,$69574,$69575,$69576,$69577,$69578,$69579,$69580),(nextval($69581),$69582,$69583,$69584,$69585,$69586,$69587,$69588,$69589,$69590,$69591,$69592,$69593,$69594),(nextval($69595),$69596,$69597,$69598,$69599,$69600,$69601,$69602,$69603,$69604,$69605,$69606,$69607,$69608),(nextval($69609),$69610,$69611,$69612,$69613,$69614,$69615,$69616,$69617,$69618,$69619,$69620,$69621,$69622),(nextval($69623),$69624,$69625,$69626,$69627,$69628,$69629,$69630,$69631,$69632,$69633,$69634,$69635,$69636),(nextval($69637),$69638,$69639,$69640,$69641,$69642,$69643,$69644,$69645,$69646,$69647,$69648,$69649,$69650),(nextval($69651),$69652,$69653,$69654,$69655,$69656,$69657,$69658,$69659,$69660,$69661,$69662,$69663,$69664),(nextval($69665),$69666,$69667,$69668,$69669,$69670,$69671,$69672,$69673,$69674,$69675,$69676,$69677,$69678),(nextval($69679),$69680,$69681,$69682,$69683,$69684,$69685,$69686,$69687,$69688,$69689,$69690,$69691,$69692),(nextval($69693),$69694,$69695,$69696,$69697,$69698,$69699,$69700,$69701,$69702,$69703,$69704,$69705,$69706),(nextval($69707),$69708,$69709,$69710,$69711,$69712,$69713,$69714,$69715,$69716,$69717,$69718,$69719,$69720),(nextval($69721),$69722,$69723,$69724,$69725,$69726,$69727,$69728,$69729,$69730,$69731,$69732,$69733,$69734),(nextval($69735),$69736,$69737,$69738,$69739,$69740,$69741,$69742,$69743,$69744,$69745,$69746,$69747,$69748),(nextval($69749),$69750,$69751,$69752,$69753,$69754,$69755,$69756,$69757,$69758,$69759,$69760,$69761,$69762),(nextval($69763),$69764,$69765,$69766,$69767,$69768,$69769,$69770,$69771,$69772,$69773,$69774,$69775,$69776),(nextval($69777),$69778,$69779,$69780,$69781,$69782,$69783,$69784,$69785,$69786,$69787,$69788,$69789,$69790),(nextval($69791),$69792,$69793,$69794,$69795,$69796,$69797,$69798,$69799,$69800,$69801,$69802,$69803,$69804),(nextval($69805),$69806,$69807,$69808,$69809,$69810,$69811,$69812,$69813,$69814,$69815,$69816,$69817,$69818),(nextval($69819),$69820,$69821,$69822,$69823,$69824,$69825,$69826,$69827,$69828,$69829,$69830,$69831,$69832),(nextval($69833),$69834,$69835,$69836,$69837,$69838,$69839,$69840,$69841,$69842,$69843,$69844,$69845,$69846),(nextval($69847),$69848,$69849,$69850,$69851,$69852,$69853,$69854,$69855,$69856,$69857,$69858,$69859,$69860),(nextval($69861),$69862,$69863,$69864,$69865,$69866,$69867,$69868,$69869,$69870,$69871,$69872,$69873,$69874),(nextval($69875),$69876,$69877,$69878,$69879,$69880,$69881,$69882,$69883,$69884,$69885,$69886,$69887,$69888),(nextval($69889),$69890,$69891,$69892,$69893,$69894,$69895,$69896,$69897,$69898,$69899,$69900,$69901,$69902),(nextval($69903),$69904,$69905,$69906,$69907,$69908,$69909,$69910,$69911,$69912,$69913,$69914,$69915,$69916),(nextval($69917),$69918,$69919,$69920,$69921,$69922,$69923,$69924,$69925,$69926,$69927,$69928,$69929,$69930),(nextval($69931),$69932,$69933,$69934,$69935,$69936,$69937,$69938,$69939,$69940,$69941,$69942,$69943,$69944),(nextval($69945),$69946,$69947,$69948,$69949,$69950,$69951,$69952,$69953,$69954,$69955,$69956,$69957,$69958),(nextval($69959),$69960,$69961,$69962,$69963,$69964,$69965,$69966,$69967,$69968,$69969,$69970,$69971,$69972),(nextval($69973),$69974,$69975,$69976,$69977,$69978,$69979,$69980,$69981,$69982,$69983,$69984,$69985,$69986),(nextval($69987),$69988,$69989,$69990,$69991,$69992,$69993,$69994,$69995,$69996,$69997,$69998,$69999,$70000),(nextval($70001),$70002,$70003,$70004,$70005,$70006,$70007,$70008,$70009,$70010,$70011,$70012,$70013,$70014),(nextval($70015),$70016,$70017,$70018,$70019,$70020,$70021,$70022,$70023,$70024,$70025,$70026,$70027,$70028),(nextval($70029),$70030,$70031,$70032,$70033,$70034,$70035,$70036,$70037,$70038,$70039,$70040,$70041,$70042),(nextval($70043),$70044,$70045,$70046,$70047,$70048,$70049,$70050,$70051,$70052,$70053,$70054,$70055,$70056),(nextval($70057),$70058,$70059,$70060,$70061,$70062,$70063,$70064,$70065,$70066,$70067,$70068,$70069,$70070),(nextval($70071),$70072,$70073,$70074,$70075,$70076,$70077,$70078,$70079,$70080,$70081,$70082,$70083,$70084),(nextval($70085),$70086,$70087,$70088,$70089,$70090,$70091,$70092,$70093,$70094,$70095,$70096,$70097,$70098),(nextval($70099),$70100,$70101,$70102,$70103,$70104,$70105,$70106,$70107,$70108,$70109,$70110,$70111,$70112),(nextval($70113),$70114,$70115,$70116,$70117,$70118,$70119,$70120,$70121,$70122,$70123,$70124,$70125,$70126),(nextval($70127),$70128,$70129,$70130,$70131,$70132,$70133,$70134,$70135,$70136,$70137,$70138,$70139,$70140),(nextval($70141),$70142,$70143,$70144,$70145,$70146,$70147,$70148,$70149,$70150,$70151,$70152,$70153,$70154),(nextval($70155),$70156,$70157,$70158,$70159,$70160,$70161,$70162,$70163,$70164,$70165,$70166,$70167,$70168),(nextval($70169),$70170,$70171,$70172,$70173,$70174,$70175,$70176,$70177,$70178,$70179,$70180,$70181,$70182),(nextval($70183),$70184,$70185,$70186,$70187,$70188,$70189,$70190,$70191,$70192,$70193,$70194,$70195,$70196),(nextval($70197),$70198,$70199,$70200,$70201,$70202,$70203,$70204,$70205,$70206,$70207,$70208,$70209,$70210),(nextval($70211),$70212,$70213,$70214,$70215,$70216,$70217,$70218,$70219,$70220,$70221,$70222,$70223,$70224),(nextval($70225),$70226,$70227,$70228,$70229,$70230,$70231,$70232,$70233,$70234,$70235,$70236,$70237,$70238),(nextval($70239),$70240,$70241,$70242,$70243,$70244,$70245,$70246,$70247,$70248,$70249,$70250,$70251,$70252),(nextval($70253),$70254,$70255,$70256,$70257,$70258,$70259,$70260,$70261,$70262,$70263,$70264,$70265,$70266),(nextval($70267),$70268,$70269,$70270,$70271,$70272,$70273,$70274,$70275,$70276,$70277,$70278,$70279,$70280),(nextval($70281),$70282,$70283,$70284,$70285,$70286,$70287,$70288,$70289,$70290,$70291,$70292,$70293,$70294),(nextval($70295),$70296,$70297,$70298,$70299,$70300,$70301,$70302,$70303,$70304,$70305,$70306,$70307,$70308),(nextval($70309),$70310,$70311,$70312,$70313,$70314,$70315,$70316,$70317,$70318,$70319,$70320,$70321,$70322),(nextval($70323),$70324,$70325,$70326,$70327,$70328,$70329,$70330,$70331,$70332,$70333,$70334,$70335,$70336),(nextval($70337),$70338,$70339,$70340,$70341,$70342,$70343,$70344,$70345,$70346,$70347,$70348,$70349,$70350),(nextval($70351),$70352,$70353,$70354,$70355,$70356,$70357,$70358,$70359,$70360,$70361,$70362,$70363,$70364),(nextval($70365),$70366,$70367,$70368,$70369,$70370,$70371,$70372,$70373,$70374,$70375,$70376,$70377,$70378),(nextval($70379),$70380,$70381,$70382,$70383,$70384,$70385,$70386,$70387,$70388,$70389,$70390,$70391,$70392),(nextval($70393),$70394,$70395,$70396,$70397,$70398,$70399,$70400,$70401,$70402,$70403,$70404,$70405,$70406),(nextval($70407),$70408,$70409,$70410,$70411,$70412,$70413,$70414,$70415,$70416,$70417,$70418,$70419,$70420),(nextval($70421),$70422,$70423,$70424,$70425,$70426,$70427,$70428,$70429,$70430,$70431,$70432,$70433,$70434),(nextval($70435),$70436,$70437,$70438,$70439,$70440,$70441,$70442,$70443,$70444,$70445,$70446,$70447,$70448),(nextval($70449),$70450,$70451,$70452,$70453,$70454,$70455,$70456,$70457,$70458,$70459,$70460,$70461,$70462),(nextval($70463),$70464,$70465,$70466,$70467,$70468,$70469,$70470,$70471,$70472,$70473,$70474,$70475,$70476),(nextval($70477),$70478,$70479,$70480,$70481,$70482,$70483,$70484,$70485,$70486,$70487,$70488,$70489,$70490),(nextval($70491),$70492,$70493,$70494,$70495,$70496,$70497,$70498,$70499,$70500,$70501,$70502,$70503,$70504),(nextval($70505),$70506,$70507,$70508,$70509,$70510,$70511,$70512,$70513,$70514,$70515,$70516,$70517,$70518),(nextval($70519),$70520,$70521,$70522,$70523,$70524,$70525,$70526,$70527,$70528,$70529,$70530,$70531,$70532),(nextval($70533),$70534,$70535,$70536,$70537,$70538,$70539,$70540,$70541,$70542,$70543,$70544,$70545,$70546),(nextval($70547),$70548,$70549,$70550,$70551,$70552,$70553,$70554,$70555,$70556,$70557,$70558,$70559,$70560),(nextval($70561),$70562,$70563,$70564,$70565,$70566,$70567,$70568,$70569,$70570,$70571,$70572,$70573,$70574),(nextval($70575),$70576,$70577,$70578,$70579,$70580,$70581,$70582,$70583,$70584,$70585,$70586,$70587,$70588),(nextval($70589),$70590,$70591,$70592,$70593,$70594,$70595,$70596,$70597,$70598,$70599,$70600,$70601,$70602),(nextval($70603),$70604,$70605,$70606,$70607,$70608,$70609,$70610,$70611,$70612,$70613,$70614,$70615,$70616),(nextval($70617),$70618,$70619,$70620,$70621,$70622,$70623,$70624,$70625,$70626,$70627,$70628,$70629,$70630),(nextval($70631),$70632,$70633,$70634,$70635,$70636,$70637,$70638,$70639,$70640,$70641,$70642,$70643,$70644),(nextval($70645),$70646,$70647,$70648,$70649,$70650,$70651,$70652,$70653,$70654,$70655,$70656,$70657,$70658),(nextval($70659),$70660,$70661,$70662,$70663,$70664,$70665,$70666,$70667,$70668,$70669,$70670,$70671,$70672),(nextval($70673),$70674,$70675,$70676,$70677,$70678,$70679,$70680,$70681,$70682,$70683,$70684,$70685,$70686),(nextval($70687),$70688,$70689,$70690,$70691,$70692,$70693,$70694,$70695,$70696,$70697,$70698,$70699,$70700),(nextval($70701),$70702,$70703,$70704,$70705,$70706,$70707,$70708,$70709,$70710,$70711,$70712,$70713,$70714),(nextval($70715),$70716,$70717,$70718,$70719,$70720,$70721,$70722,$70723,$70724,$70725,$70726,$70727,$70728),(nextval($70729),$70730,$70731,$70732,$70733,$70734,$70735,$70736,$70737,$70738,$70739,$70740,$70741,$70742),(nextval($70743),$70744,$70745,$70746,$70747,$70748,$70749,$70750,$70751,$70752,$70753,$70754,$70755,$70756),(nextval($70757),$70758,$70759,$70760,$70761,$70762,$70763,$70764,$70765,$70766,$70767,$70768,$70769,$70770),(nextval($70771),$70772,$70773,$70774,$70775,$70776,$70777,$70778,$70779,$70780,$70781,$70782,$70783,$70784),(nextval($70785),$70786,$70787,$70788,$70789,$70790,$70791,$70792,$70793,$70794,$70795,$70796,$70797,$70798),(nextval($70799),$70800,$70801,$70802,$70803,$70804,$70805,$70806,$70807,$70808,$70809,$70810,$70811,$70812),(nextval($70813),$70814,$70815,$70816,$70817,$70818,$70819,$70820,$70821,$70822,$70823,$70824,$70825,$70826),(nextval($70827),$70828,$70829,$70830,$70831,$70832,$70833,$70834,$70835,$70836,$70837,$70838,$70839,$70840),(nextval($70841),$70842,$70843,$70844,$70845,$70846,$70847,$70848,$70849,$70850,$70851,$70852,$70853,$70854),(nextval($70855),$70856,$70857,$70858,$70859,$70860,$70861,$70862,$70863,$70864,$70865,$70866,$70867,$70868),(nextval($70869),$70870,$70871,$70872,$70873,$70874,$70875,$70876,$70877,$70878,$70879,$70880,$70881,$70882),(nextval($70883),$70884,$70885,$70886,$70887,$70888,$70889,$70890,$70891,$70892,$70893,$70894,$70895,$70896),(nextval($70897),$70898,$70899,$70900,$70901,$70902,$70903,$70904,$70905,$70906,$70907,$70908,$70909,$70910),(nextval($70911),$70912,$70913,$70914,$70915,$70916,$70917,$70918,$70919,$70920,$70921,$70922,$70923,$70924),(nextval($70925),$70926,$70927,$70928,$70929,$70930,$70931,$70932,$70933,$70934,$70935,$70936,$70937,$70938),(nextval($70939),$70940,$70941,$70942,$70943,$70944,$70945,$70946,$70947,$70948,$70949,$70950,$70951,$70952),(nextval($70953),$70954,$70955,$70956,$70957,$70958,$70959,$70960,$70961,$70962,$70963,$70964,$70965,$70966),(nextval($70967),$70968,$70969,$70970,$70971,$70972,$70973,$70974,$70975,$70976,$70977,$70978,$70979,$70980),(nextval($70981),$70982,$70983,$70984,$70985,$70986,$70987,$70988,$70989,$70990,$70991,$70992,$70993,$70994),(nextval($70995),$70996,$70997,$70998,$70999,$71000,$71001,$71002,$71003,$71004,$71005,$71006,$71007,$71008),(nextval($71009),$71010,$71011,$71012,$71013,$71014,$71015,$71016,$71017,$71018,$71019,$71020,$71021,$71022),(nextval($71023),$71024,$71025,$71026,$71027,$71028,$71029,$71030,$71031,$71032,$71033,$71034,$71035,$71036),(nextval($71037),$71038,$71039,$71040,$71041,$71042,$71043,$71044,$71045,$71046,$71047,$71048,$71049,$71050),(nextval($71051),$71052,$71053,$71054,$71055,$71056,$71057,$71058,$71059,$71060,$71061,$71062,$71063,$71064),(nextval($71065),$71066,$71067,$71068,$71069,$71070,$71071,$71072,$71073,$71074,$71075,$71076,$71077,$71078),(nextval($71079),$71080,$71081,$71082,$71083,$71084,$71085,$71086,$71087,$71088,$71089,$71090,$71091,$71092),(nextval($71093),$71094,$71095,$71096,$71097,$71098,$71099,$71100,$71101,$71102,$71103,$71104,$71105,$71106),(nextval($71107),$71108,$71109,$71110,$71111,$71112,$71113,$71114,$71115,$71116,$71117,$71118,$71119,$71120),(nextval($71121),$71122,$71123,$71124,$71125,$71126,$71127,$71128,$71129,$71130,$71131,$71132,$71133,$71134),(nextval($71135),$71136,$71137,$71138,$71139,$71140,$71141,$71142,$71143,$71144,$71145,$71146,$71147,$71148),(nextval($71149),$71150,$71151,$71152,$71153,$71154,$71155,$71156,$71157,$71158,$71159,$71160,$71161,$71162),(nextval($71163),$71164,$71165,$71166,$71167,$71168,$71169,$71170,$71171,$71172,$71173,$71174,$71175,$71176),(nextval($71177),$71178,$71179,$71180,$71181,$71182,$71183,$71184,$71185,$71186,$71187,$71188,$71189,$71190),(nextval($71191),$71192,$71193,$71194,$71195,$71196,$71197,$71198,$71199,$71200,$71201,$71202,$71203,$71204),(nextval($71205),$71206,$71207,$71208,$71209,$71210,$71211,$71212,$71213,$71214,$71215,$71216,$71217,$71218),(nextval($71219),$71220,$71221,$71222,$71223,$71224,$71225,$71226,$71227,$71228,$71229,$71230,$71231,$71232),(nextval($71233),$71234,$71235,$71236,$71237,$71238,$71239,$71240,$71241,$71242,$71243,$71244,$71245,$71246),(nextval($71247),$71248,$71249,$71250,$71251,$71252,$71253,$71254,$71255,$71256,$71257,$71258,$71259,$71260),(nextval($71261),$71262,$71263,$71264,$71265,$71266,$71267,$71268,$71269,$71270,$71271,$71272,$71273,$71274),(nextval($71275),$71276,$71277,$71278,$71279,$71280,$71281,$71282,$71283,$71284,$71285,$71286,$71287,$71288),(nextval($71289),$71290,$71291,$71292,$71293,$71294,$71295,$71296,$71297,$71298,$71299,$71300,$71301,$71302),(nextval($71303),$71304,$71305,$71306,$71307,$71308,$71309,$71310,$71311,$71312,$71313,$71314,$71315,$71316),(nextval($71317),$71318,$71319,$71320,$71321,$71322,$71323,$71324,$71325,$71326,$71327,$71328,$71329,$71330),(nextval($71331),$71332,$71333,$71334,$71335,$71336,$71337,$71338,$71339,$71340,$71341,$71342,$71343,$71344),(nextval($71345),$71346,$71347,$71348,$71349,$71350,$71351,$71352,$71353,$71354,$71355,$71356,$71357,$71358),(nextval($71359),$71360,$71361,$71362,$71363,$71364,$71365,$71366,$71367,$71368,$71369,$71370,$71371,$71372),(nextval($71373),$71374,$71375,$71376,$71377,$71378,$71379,$71380,$71381,$71382,$71383,$71384,$71385,$71386),(nextval($71387),$71388,$71389,$71390,$71391,$71392,$71393,$71394,$71395,$71396,$71397,$71398,$71399,$71400),(nextval($71401),$71402,$71403,$71404,$71405,$71406,$71407,$71408,$71409,$71410,$71411,$71412,$71413,$71414),(nextval($71415),$71416,$71417,$71418,$71419,$71420,$71421,$71422,$71423,$71424,$71425,$71426,$71427,$71428),(nextval($71429),$71430,$71431,$71432,$71433,$71434,$71435,$71436,$71437,$71438,$71439,$71440,$71441,$71442),(nextval($71443),$71444,$71445,$71446,$71447,$71448,$71449,$71450,$71451,$71452,$71453,$71454,$71455,$71456),(nextval($71457),$71458,$71459,$71460,$71461,$71462,$71463,$71464,$71465,$71466,$71467,$71468,$71469,$71470),(nextval($71471),$71472,$71473,$71474,$71475,$71476,$71477,$71478,$71479,$71480,$71481,$71482,$71483,$71484),(nextval($71485),$71486,$71487,$71488,$71489,$71490,$71491,$71492,$71493,$71494,$71495,$71496,$71497,$71498),(nextval($71499),$71500,$71501,$71502,$71503,$71504,$71505,$71506,$71507,$71508,$71509,$71510,$71511,$71512),(nextval($71513),$71514,$71515,$71516,$71517,$71518,$71519,$71520,$71521,$71522,$71523,$71524,$71525,$71526),(nextval($71527),$71528,$71529,$71530,$71531,$71532,$71533,$71534,$71535,$71536,$71537,$71538,$71539,$71540),(nextval($71541),$71542,$71543,$71544,$71545,$71546,$71547,$71548,$71549,$71550,$71551,$71552,$71553,$71554),(nextval($71555),$71556,$71557,$71558,$71559,$71560,$71561,$71562,$71563,$71564,$71565,$71566,$71567,$71568),(nextval($71569),$71570,$71571,$71572,$71573,$71574,$71575,$71576,$71577,$71578,$71579,$71580,$71581,$71582),(nextval($71583),$71584,$71585,$71586,$71587,$71588,$71589,$71590,$71591,$71592,$71593,$71594,$71595,$71596),(nextval($71597),$71598,$71599,$71600,$71601,$71602,$71603,$71604,$71605,$71606,$71607,$71608,$71609,$71610),(nextval($71611),$71612,$71613,$71614,$71615,$71616,$71617,$71618,$71619,$71620,$71621,$71622,$71623,$71624),(nextval($71625),$71626,$71627,$71628,$71629,$71630,$71631,$71632,$71633,$71634,$71635,$71636,$71637,$71638),(nextval($71639),$71640,$71641,$71642,$71643,$71644,$71645,$71646,$71647,$71648,$71649,$71650,$71651,$71652),(nextval($71653),$71654,$71655,$71656,$71657,$71658,$71659,$71660,$71661,$71662,$71663,$71664,$71665,$71666),(nextval($71667),$71668,$71669,$71670,$71671,$71672,$71673,$71674,$71675,$71676,$71677,$71678,$71679,$71680),(nextval($71681),$71682,$71683,$71684,$71685,$71686,$71687,$71688,$71689,$71690,$71691,$71692,$71693,$71694),(nextval($71695),$71696,$71697,$71698,$71699,$71700,$71701,$71702,$71703,$71704,$71705,$71706,$71707,$71708),(nextval($71709),$71710,$71711,$71712,$71713,$71714,$71715,$71716,$71717,$71718,$71719,$71720,$71721,$71722),(nextval($71723),$71724,$71725,$71726,$71727,$71728,$71729,$71730,$71731,$71732,$71733,$71734,$71735,$71736),(nextval($71737),$71738,$71739,$71740,$71741,$71742,$71743,$71744,$71745,$71746,$71747,$71748,$71749,$71750),(nextval($71751),$71752,$71753,$71754,$71755,$71756,$71757,$71758,$71759,$71760,$71761,$71762,$71763,$71764),(nextval($71765),$71766,$71767,$71768,$71769,$71770,$71771,$71772,$71773,$71774,$71775,$71776,$71777,$71778),(nextval($71779),$71780,$71781,$71782,$71783,$71784,$71785,$71786,$71787,$71788,$71789,$71790,$71791,$71792),(nextval($71793),$71794,$71795,$71796,$71797,$71798,$71799,$71800,$71801,$71802,$71803,$71804,$71805,$71806),(nextval($71807),$71808,$71809,$71810,$71811,$71812,$71813,$71814,$71815,$71816,$71817,$71818,$71819,$71820),(nextval($71821),$71822,$71823,$71824,$71825,$71826,$71827,$71828,$71829,$71830,$71831,$71832,$71833,$71834),(nextval($71835),$71836,$71837,$71838,$71839,$71840,$71841,$71842,$71843,$71844,$71845,$71846,$71847,$71848),(nextval($71849),$71850,$71851,$71852,$71853,$71854,$71855,$71856,$71857,$71858,$71859,$71860,$71861,$71862),(nextval($71863),$71864,$71865,$71866,$71867,$71868,$71869,$71870,$71871,$71872,$71873,$71874,$71875,$71876),(nextval($71877),$71878,$71879,$71880,$71881,$71882,$71883,$71884,$71885,$71886,$71887,$71888,$71889,$71890),(nextval($71891),$71892,$71893,$71894,$71895,$71896,$71897,$71898,$71899,$71900,$71901,$71902,$71903,$71904),(nextval($71905),$71906,$71907,$71908,$71909,$71910,$71911,$71912,$71913,$71914,$71915,$71916,$71917,$71918),(nextval($71919),$71920,$71921,$71922,$71923,$71924,$71925,$71926,$71927,$71928,$71929,$71930,$71931,$71932),(nextval($71933),$71934,$71935,$71936,$71937,$71938,$71939,$71940,$71941,$71942,$71943,$71944,$71945,$71946),(nextval($71947),$71948,$71949,$71950,$71951,$71952,$71953,$71954,$71955,$71956,$71957,$71958,$71959,$71960),(nextval($71961),$71962,$71963,$71964,$71965,$71966,$71967,$71968,$71969,$71970,$71971,$71972,$71973,$71974),(nextval($71975),$71976,$71977,$71978,$71979,$71980,$71981,$71982,$71983,$71984,$71985,$71986,$71987,$71988),(nextval($71989),$71990,$71991,$71992,$71993,$71994,$71995,$71996,$71997,$71998,$71999,$72000,$72001,$72002),(nextval($72003),$72004,$72005,$72006,$72007,$72008,$72009,$72010,$72011,$72012,$72013,$72014,$72015,$72016),(nextval($72017),$72018,$72019,$72020,$72021,$72022,$72023,$72024,$72025,$72026,$72027,$72028,$72029,$72030),(nextval($72031),$72032,$72033,$72034,$72035,$72036,$72037,$72038,$72039,$72040,$72041,$72042,$72043,$72044),(nextval($72045),$72046,$72047,$72048,$72049,$72050,$72051,$72052,$72053,$72054,$72055,$72056,$72057,$72058),(nextval($72059),$72060,$72061,$72062,$72063,$72064,$72065,$72066,$72067,$72068,$72069,$72070,$72071,$72072),(nextval($72073),$72074,$72075,$72076,$72077,$72078,$72079,$72080,$72081,$72082,$72083,$72084,$72085,$72086),(nextval($72087),$72088,$72089,$72090,$72091,$72092,$72093,$72094,$72095,$72096,$72097,$72098,$72099,$72100),(nextval($72101),$72102,$72103,$72104,$72105,$72106,$72107,$72108,$72109,$72110,$72111,$72112,$72113,$72114),(nextval($72115),$72116,$72117,$72118,$72119,$72120,$72121,$72122,$72123,$72124,$72125,$72126,$72127,$72128),(nextval($72129),$72130,$72131,$72132,$72133,$72134,$72135,$72136,$72137,$72138,$72139,$72140,$72141,$72142),(nextval($72143),$72144,$72145,$72146,$72147,$72148,$72149,$72150,$72151,$72152,$72153,$72154,$72155,$72156),(nextval($72157),$72158,$72159,$72160,$72161,$72162,$72163,$72164,$72165,$72166,$72167,$72168,$72169,$72170),(nextval($72171),$72172,$72173,$72174,$72175,$72176,$72177,$72178,$72179,$72180,$72181,$72182,$72183,$72184),(nextval($72185),$72186,$72187,$72188,$72189,$72190,$72191,$72192,$72193,$72194,$72195,$72196,$72197,$72198),(nextval($72199),$72200,$72201,$72202,$72203,$72204,$72205,$72206,$72207,$72208,$72209,$72210,$72211,$72212),(nextval($72213),$72214,$72215,$72216,$72217,$72218,$72219,$72220,$72221,$72222,$72223,$72224,$72225,$72226),(nextval($72227),$72228,$72229,$72230,$72231,$72232,$72233,$72234,$72235,$72236,$72237,$72238,$72239,$72240),(nextval($72241),$72242,$72243,$72244,$72245,$72246,$72247,$72248,$72249,$72250,$72251,$72252,$72253,$72254),(nextval($72255),$72256,$72257,$72258,$72259,$72260,$72261,$72262,$72263,$72264,$72265,$72266,$72267,$72268),(nextval($72269),$72270,$72271,$72272,$72273,$72274,$72275,$72276,$72277,$72278,$72279,$72280,$72281,$72282),(nextval($72283),$72284,$72285,$72286,$72287,$72288,$72289,$72290,$72291,$72292,$72293,$72294,$72295,$72296),(nextval($72297),$72298,$72299,$72300,$72301,$72302,$72303,$72304,$72305,$72306,$72307,$72308,$72309,$72310),(nextval($72311),$72312,$72313,$72314,$72315,$72316,$72317,$72318,$72319,$72320,$72321,$72322,$72323,$72324),(nextval($72325),$72326,$72327,$72328,$72329,$72330,$72331,$72332,$72333,$72334,$72335,$72336,$72337,$72338),(nextval($72339),$72340,$72341,$72342,$72343,$72344,$72345,$72346,$72347,$72348,$72349,$72350,$72351,$72352),(nextval($72353),$72354,$72355,$72356,$72357,$72358,$72359,$72360,$72361,$72362,$72363,$72364,$72365,$72366),(nextval($72367),$72368,$72369,$72370,$72371,$72372,$72373,$72374,$72375,$72376,$72377,$72378,$72379,$72380),(nextval($72381),$72382,$72383,$72384,$72385,$72386,$72387,$72388,$72389,$72390,$72391,$72392,$72393,$72394),(nextval($72395),$72396,$72397,$72398,$72399,$72400,$72401,$72402,$72403,$72404,$72405,$72406,$72407,$72408),(nextval($72409),$72410,$72411,$72412,$72413,$72414,$72415,$72416,$72417,$72418,$72419,$72420,$72421,$72422),(nextval($72423),$72424,$72425,$72426,$72427,$72428,$72429,$72430,$72431,$72432,$72433,$72434,$72435,$72436),(nextval($72437),$72438,$72439,$72440,$72441,$72442,$72443,$72444,$72445,$72446,$72447,$72448,$72449,$72450),(nextval($72451),$72452,$72453,$72454,$72455,$72456,$72457,$72458,$72459,$72460,$72461,$72462,$72463,$72464),(nextval($72465),$72466,$72467,$72468,$72469,$72470,$72471,$72472,$72473,$72474,$72475,$72476,$72477,$72478),(nextval($72479),$72480,$72481,$72482,$72483,$72484,$72485,$72486,$72487,$72488,$72489,$72490,$72491,$72492),(nextval($72493),$72494,$72495,$72496,$72497,$72498,$72499,$72500,$72501,$72502,$72503,$72504,$72505,$72506),(nextval($72507),$72508,$72509,$72510,$72511,$72512,$72513,$72514,$72515,$72516,$72517,$72518,$72519,$72520),(nextval($72521),$72522,$72523,$72524,$72525,$72526,$72527,$72528,$72529,$72530,$72531,$72532,$72533,$72534),(nextval($72535),$72536,$72537,$72538,$72539,$72540,$72541,$72542,$72543,$72544,$72545,$72546,$72547,$72548),(nextval($72549),$72550,$72551,$72552,$72553,$72554,$72555,$72556,$72557,$72558,$72559,$72560,$72561,$72562),(nextval($72563),$72564,$72565,$72566,$72567,$72568,$72569,$72570,$72571,$72572,$72573,$72574,$72575,$72576),(nextval($72577),$72578,$72579,$72580,$72581,$72582,$72583,$72584,$72585,$72586,$72587,$72588,$72589,$72590),(nextval($72591),$72592,$72593,$72594,$72595,$72596,$72597,$72598,$72599,$72600,$72601,$72602,$72603,$72604),(nextval($72605),$72606,$72607,$72608,$72609,$72610,$72611,$72612,$72613,$72614,$72615,$72616,$72617,$72618),(nextval($72619),$72620,$72621,$72622,$72623,$72624,$72625,$72626,$72627,$72628,$72629,$72630,$72631,$72632),(nextval($72633),$72634,$72635,$72636,$72637,$72638,$72639,$72640,$72641,$72642,$72643,$72644,$72645,$72646),(nextval($72647),$72648,$72649,$72650,$72651,$72652,$72653,$72654,$72655,$72656,$72657,$72658,$72659,$72660),(nextval($72661),$72662,$72663,$72664,$72665,$72666,$72667,$72668,$72669,$72670,$72671,$72672,$72673,$72674),(nextval($72675),$72676,$72677,$72678,$72679,$72680,$72681,$72682,$72683,$72684,$72685,$72686,$72687,$72688),(nextval($72689),$72690,$72691,$72692,$72693,$72694,$72695,$72696,$72697,$72698,$72699,$72700,$72701,$72702),(nextval($72703),$72704,$72705,$72706,$72707,$72708,$72709,$72710,$72711,$72712,$72713,$72714,$72715,$72716),(nextval($72717),$72718,$72719,$72720,$72721,$72722,$72723,$72724,$72725,$72726,$72727,$72728,$72729,$72730),(nextval($72731),$72732,$72733,$72734,$72735,$72736,$72737,$72738,$72739,$72740,$72741,$72742,$72743,$72744),(nextval($72745),$72746,$72747,$72748,$72749,$72750,$72751,$72752,$72753,$72754,$72755,$72756,$72757,$72758),(nextval($72759),$72760,$72761,$72762,$72763,$72764,$72765,$72766,$72767,$72768,$72769,$72770,$72771,$72772),(nextval($72773),$72774,$72775,$72776,$72777,$72778,$72779,$72780,$72781,$72782,$72783,$72784,$72785,$72786),(nextval($72787),$72788,$72789,$72790,$72791,$72792,$72793,$72794,$72795,$72796,$72797,$72798,$72799,$72800),(nextval($72801),$72802,$72803,$72804,$72805,$72806,$72807,$72808,$72809,$72810,$72811,$72812,$72813,$72814),(nextval($72815),$72816,$72817,$72818,$72819,$72820,$72821,$72822,$72823,$72824,$72825,$72826,$72827,$72828),(nextval($72829),$72830,$72831,$72832,$72833,$72834,$72835,$72836,$72837,$72838,$72839,$72840,$72841,$72842),(nextval($72843),$72844,$72845,$72846,$72847,$72848,$72849,$72850,$72851,$72852,$72853,$72854,$72855,$72856),(nextval($72857),$72858,$72859,$72860,$72861,$72862,$72863,$72864,$72865,$72866,$72867,$72868,$72869,$72870),(nextval($72871),$72872,$72873,$72874,$72875,$72876,$72877,$72878,$72879,$72880,$72881,$72882,$72883,$72884),(nextval($72885),$72886,$72887,$72888,$72889,$72890,$72891,$72892,$72893,$72894,$72895,$72896,$72897,$72898),(nextval($72899),$72900,$72901,$72902,$72903,$72904,$72905,$72906,$72907,$72908,$72909,$72910,$72911,$72912),(nextval($72913),$72914,$72915,$72916,$72917,$72918,$72919,$72920,$72921,$72922,$72923,$72924,$72925,$72926),(nextval($72927),$72928,$72929,$72930,$72931,$72932,$72933,$72934,$72935,$72936,$72937,$72938,$72939,$72940),(nextval($72941),$72942,$72943,$72944,$72945,$72946,$72947,$72948,$72949,$72950,$72951,$72952,$72953,$72954),(nextval($72955),$72956,$72957,$72958,$72959,$72960,$72961,$72962,$72963,$72964,$72965,$72966,$72967,$72968),(nextval($72969),$72970,$72971,$72972,$72973,$72974,$72975,$72976,$72977,$72978,$72979,$72980,$72981,$72982),(nextval($72983),$72984,$72985,$72986,$72987,$72988,$72989,$72990,$72991,$72992,$72993,$72994,$72995,$72996),(nextval($72997),$72998,$72999,$73000,$73001,$73002,$73003,$73004,$73005,$73006,$73007,$73008,$73009,$73010),(nextval($73011),$73012,$73013,$73014,$73015,$73016,$73017,$73018,$73019,$73020,$73021,$73022,$73023,$73024),(nextval($73025),$73026,$73027,$73028,$73029,$73030,$73031,$73032,$73033,$73034,$73035,$73036,$73037,$73038),(nextval($73039),$73040,$73041,$73042,$73043,$73044,$73045,$73046,$73047,$73048,$73049,$73050,$73051,$73052),(nextval($73053),$73054,$73055,$73056,$73057,$73058,$73059,$73060,$73061,$73062,$73063,$73064,$73065,$73066),(nextval($73067),$73068,$73069,$73070,$73071,$73072,$73073,$73074,$73075,$73076,$73077,$73078,$73079,$73080),(nextval($73081),$73082,$73083,$73084,$73085,$73086,$73087,$73088,$73089,$73090,$73091,$73092,$73093,$73094),(nextval($73095),$73096,$73097,$73098,$73099,$73100,$73101,$73102,$73103,$73104,$73105,$73106,$73107,$73108),(nextval($73109),$73110,$73111,$73112,$73113,$73114,$73115,$73116,$73117,$73118,$73119,$73120,$73121,$73122),(nextval($73123),$73124,$73125,$73126,$73127,$73128,$73129,$73130,$73131,$73132,$73133,$73134,$73135,$73136),(nextval($73137),$73138,$73139,$73140,$73141,$73142,$73143,$73144,$73145,$73146,$73147,$73148,$73149,$73150),(nextval($73151),$73152,$73153,$73154,$73155,$73156,$73157,$73158,$73159,$73160,$73161,$73162,$73163,$73164),(nextval($73165),$73166,$73167,$73168,$73169,$73170,$73171,$73172,$73173,$73174,$73175,$73176,$73177,$73178),(nextval($73179),$73180,$73181,$73182,$73183,$73184,$73185,$73186,$73187,$73188,$73189,$73190,$73191,$73192),(nextval($73193),$73194,$73195,$73196,$73197,$73198,$73199,$73200,$73201,$73202,$73203,$73204,$73205,$73206),(nextval($73207),$73208,$73209,$73210,$73211,$73212,$73213,$73214,$73215,$73216,$73217,$73218,$73219,$73220),(nextval($73221),$73222,$73223,$73224,$73225,$73226,$73227,$73228,$73229,$73230,$73231,$73232,$73233,$73234),(nextval($73235),$73236,$73237,$73238,$73239,$73240,$73241,$73242,$73243,$73244,$73245,$73246,$73247,$73248),(nextval($73249),$73250,$73251,$73252,$73253,$73254,$73255,$73256,$73257,$73258,$73259,$73260,$73261,$73262),(nextval($73263),$73264,$73265,$73266,$73267,$73268,$73269,$73270,$73271,$73272,$73273,$73274,$73275,$73276),(nextval($73277),$73278,$73279,$73280,$73281,$73282,$73283,$73284,$73285,$73286,$73287,$73288,$73289,$73290),(nextval($73291),$73292,$73293,$73294,$73295,$73296,$73297,$73298,$73299,$73300,$73301,$73302,$73303,$73304),(nextval($73305),$73306,$73307,$73308,$73309,$73310,$73311,$73312,$73313,$73314,$73315,$73316,$73317,$73318),(nextval($73319),$73320,$73321,$73322,$73323,$73324,$73325,$73326,$73327,$73328,$73329,$73330,$73331,$73332),(nextval($73333),$73334,$73335,$73336,$73337,$73338,$73339,$73340,$73341,$73342,$73343,$73344,$73345,$73346),(nextval($73347),$73348,$73349,$73350,$73351,$73352,$73353,$73354,$73355,$73356,$73357,$73358,$73359,$73360),(nextval($73361),$73362,$73363,$73364,$73365,$73366,$73367,$73368,$73369,$73370,$73371,$73372,$73373,$73374),(nextval($73375),$73376,$73377,$73378,$73379,$73380,$73381,$73382,$73383,$73384,$73385,$73386,$73387,$73388),(nextval($73389),$73390,$73391,$73392,$73393,$73394,$73395,$73396,$73397,$73398,$73399,$73400,$73401,$73402),(nextval($73403),$73404,$73405,$73406,$73407,$73408,$73409,$73410,$73411,$73412,$73413,$73414,$73415,$73416),(nextval($73417),$73418,$73419,$73420,$73421,$73422,$73423,$73424,$73425,$73426,$73427,$73428,$73429,$73430),(nextval($73431),$73432,$73433,$73434,$73435,$73436,$73437,$73438,$73439,$73440,$73441,$73442,$73443,$73444),(nextval($73445),$73446,$73447,$73448,$73449,$73450,$73451,$73452,$73453,$73454,$73455,$73456,$73457,$73458),(nextval($73459),$73460,$73461,$73462,$73463,$73464,$73465,$73466,$73467,$73468,$73469,$73470,$73471,$73472),(nextval($73473),$73474,$73475,$73476,$73477,$73478,$73479,$73480,$73481,$73482,$73483,$73484,$73485,$73486),(nextval($73487),$73488,$73489,$73490,$73491,$73492,$73493,$73494,$73495,$73496,$73497,$73498,$73499,$73500),(nextval($73501),$73502,$73503,$73504,$73505,$73506,$73507,$73508,$73509,$73510,$73511,$73512,$73513,$73514),(nextval($73515),$73516,$73517,$73518,$73519,$73520,$73521,$73522,$73523,$73524,$73525,$73526,$73527,$73528),(nextval($73529),$73530,$73531,$73532,$73533,$73534,$73535,$73536,$73537,$73538,$73539,$73540,$73541,$73542),(nextval($73543),$73544,$73545,$73546,$73547,$73548,$73549,$73550,$73551,$73552,$73553,$73554,$73555,$73556),(nextval($73557),$73558,$73559,$73560,$73561,$73562,$73563,$73564,$73565,$73566,$73567,$73568,$73569,$73570),(nextval($73571),$73572,$73573,$73574,$73575,$73576,$73577,$73578,$73579,$73580,$73581,$73582,$73583,$73584),(nextval($73585),$73586,$73587,$73588,$73589,$73590,$73591,$73592,$73593,$73594,$73595,$73596,$73597,$73598),(nextval($73599),$73600,$73601,$73602,$73603,$73604,$73605,$73606,$73607,$73608,$73609,$73610,$73611,$73612),(nextval($73613),$73614,$73615,$73616,$73617,$73618,$73619,$73620,$73621,$73622,$73623,$73624,$73625,$73626),(nextval($73627),$73628,$73629,$73630,$73631,$73632,$73633,$73634,$73635,$73636,$73637,$73638,$73639,$73640),(nextval($73641),$73642,$73643,$73644,$73645,$73646,$73647,$73648,$73649,$73650,$73651,$73652,$73653,$73654),(nextval($73655),$73656,$73657,$73658,$73659,$73660,$73661,$73662,$73663,$73664,$73665,$73666,$73667,$73668),(nextval($73669),$73670,$73671,$73672,$73673,$73674,$73675,$73676,$73677,$73678,$73679,$73680,$73681,$73682),(nextval($73683),$73684,$73685,$73686,$73687,$73688,$73689,$73690,$73691,$73692,$73693,$73694,$73695,$73696),(nextval($73697),$73698,$73699,$73700,$73701,$73702,$73703,$73704,$73705,$73706,$73707,$73708,$73709,$73710),(nextval($73711),$73712,$73713,$73714,$73715,$73716,$73717,$73718,$73719,$73720,$73721,$73722,$73723,$73724),(nextval($73725),$73726,$73727,$73728,$73729,$73730,$73731,$73732,$73733,$73734,$73735,$73736,$73737,$73738),(nextval($73739),$73740,$73741,$73742,$73743,$73744,$73745,$73746,$73747,$73748,$73749,$73750,$73751,$73752),(nextval($73753),$73754,$73755,$73756,$73757,$73758,$73759,$73760,$73761,$73762,$73763,$73764,$73765,$73766),(nextval($73767),$73768,$73769,$73770,$73771,$73772,$73773,$73774,$73775,$73776,$73777,$73778,$73779,$73780),(nextval($73781),$73782,$73783,$73784,$73785,$73786,$73787,$73788,$73789,$73790,$73791,$73792,$73793,$73794),(nextval($73795),$73796,$73797,$73798,$73799,$73800,$73801,$73802,$73803,$73804,$73805,$73806,$73807,$73808),(nextval($73809),$73810,$73811,$73812,$73813,$73814,$73815,$73816,$73817,$73818,$73819,$73820,$73821,$73822),(nextval($73823),$73824,$73825,$73826,$73827,$73828,$73829,$73830,$73831,$73832,$73833,$73834,$73835,$73836),(nextval($73837),$73838,$73839,$73840,$73841,$73842,$73843,$73844,$73845,$73846,$73847,$73848,$73849,$73850),(nextval($73851),$73852,$73853,$73854,$73855,$73856,$73857,$73858,$73859,$73860,$73861,$73862,$73863,$73864),(nextval($73865),$73866,$73867,$73868,$73869,$73870,$73871,$73872,$73873,$73874,$73875,$73876,$73877,$73878),(nextval($73879),$73880,$73881,$73882,$73883,$73884,$73885,$73886,$73887,$73888,$73889,$73890,$73891,$73892),(nextval($73893),$73894,$73895,$73896,$73897,$73898,$73899,$73900,$73901,$73902,$73903,$73904,$73905,$73906),(nextval($73907),$73908,$73909,$73910,$73911,$73912,$73913,$73914,$73915,$73916,$73917,$73918,$73919,$73920),(nextval($73921),$73922,$73923,$73924,$73925,$73926,$73927,$73928,$73929,$73930,$73931,$73932,$73933,$73934),(nextval($73935),$73936,$73937,$73938,$73939,$73940,$73941,$73942,$73943,$73944,$73945,$73946,$73947,$73948),(nextval($73949),$73950,$73951,$73952,$73953,$73954,$73955,$73956,$73957,$73958,$73959,$73960,$73961,$73962),(nextval($73963),$73964,$73965,$73966,$73967,$73968,$73969,$73970,$73971,$73972,$73973,$73974,$73975,$73976),(nextval($73977),$73978,$73979,$73980,$73981,$73982,$73983,$73984,$73985,$73986,$73987,$73988,$73989,$73990),(nextval($73991),$73992,$73993,$73994,$73995,$73996,$73997,$73998,$73999,$74000,$74001,$74002,$74003,$74004),(nextval($74005),$74006,$74007,$74008,$74009,$74010,$74011,$74012,$74013,$74014,$74015,$74016,$74017,$74018),(nextval($74019),$74020,$74021,$74022,$74023,$74024,$74025,$74026,$74027,$74028,$74029,$74030,$74031,$74032),(nextval($74033),$74034,$74035,$74036,$74037,$74038,$74039,$74040,$74041,$74042,$74043,$74044,$74045,$74046),(nextval($74047),$74048,$74049,$74050,$74051,$74052,$74053,$74054,$74055,$74056,$74057,$74058,$74059,$74060),(nextval($74061),$74062,$74063,$74064,$74065,$74066,$74067,$74068,$74069,$74070,$74071,$74072,$74073,$74074),(nextval($74075),$74076,$74077,$74078,$74079,$74080,$74081,$74082,$74083,$74084,$74085,$74086,$74087,$74088),(nextval($74089),$74090,$74091,$74092,$74093,$74094,$74095,$74096,$74097,$74098,$74099,$74100,$74101,$74102),(nextval($74103),$74104,$74105,$74106,$74107,$74108,$74109,$74110,$74111,$74112,$74113,$74114,$74115,$74116),(nextval($74117),$74118,$74119,$74120,$74121,$74122,$74123,$74124,$74125,$74126,$74127,$74128,$74129,$74130),(nextval($74131),$74132,$74133,$74134,$74135,$74136,$74137,$74138,$74139,$74140,$74141,$74142,$74143,$74144),(nextval($74145),$74146,$74147,$74148,$74149,$74150,$74151,$74152,$74153,$74154,$74155,$74156,$74157,$74158),(nextval($74159),$74160,$74161,$74162,$74163,$74164,$74165,$74166,$74167,$74168,$74169,$74170,$74171,$74172),(nextval($74173),$74174,$74175,$74176,$74177,$74178,$74179,$74180,$74181,$74182,$74183,$74184,$74185,$74186),(nextval($74187),$74188,$74189,$74190,$74191,$74192,$74193,$74194,$74195,$74196,$74197,$74198,$74199,$74200),(nextval($74201),$74202,$74203,$74204,$74205,$74206,$74207,$74208,$74209,$74210,$74211,$74212,$74213,$74214),(nextval($74215),$74216,$74217,$74218,$74219,$74220,$74221,$74222,$74223,$74224,$74225,$74226,$74227,$74228),(nextval($74229),$74230,$74231,$74232,$74233,$74234,$74235,$74236,$74237,$74238,$74239,$74240,$74241,$74242),(nextval($74243),$74244,$74245,$74246,$74247,$74248,$74249,$74250,$74251,$74252,$74253,$74254,$74255,$74256),(nextval($74257),$74258,$74259,$74260,$74261,$74262,$74263,$74264,$74265,$74266,$74267,$74268,$74269,$74270),(nextval($74271),$74272,$74273,$74274,$74275,$74276,$74277,$74278,$74279,$74280,$74281,$74282,$74283,$74284),(nextval($74285),$74286,$74287,$74288,$74289,$74290,$74291,$74292,$74293,$74294,$74295,$74296,$74297,$74298),(nextval($74299),$74300,$74301,$74302,$74303,$74304,$74305,$74306,$74307,$74308,$74309,$74310,$74311,$74312),(nextval($74313),$74314,$74315,$74316,$74317,$74318,$74319,$74320,$74321,$74322,$74323,$74324,$74325,$74326),(nextval($74327),$74328,$74329,$74330,$74331,$74332,$74333,$74334,$74335,$74336,$74337,$74338,$74339,$74340),(nextval($74341),$74342,$74343,$74344,$74345,$74346,$74347,$74348,$74349,$74350,$74351,$74352,$74353,$74354),(nextval($74355),$74356,$74357,$74358,$74359,$74360,$74361,$74362,$74363,$74364,$74365,$74366,$74367,$74368),(nextval($74369),$74370,$74371,$74372,$74373,$74374,$74375,$74376,$74377,$74378,$74379,$74380,$74381,$74382),(nextval($74383),$74384,$74385,$74386,$74387,$74388,$74389,$74390,$74391,$74392,$74393,$74394,$74395,$74396),(nextval($74397),$74398,$74399,$74400,$74401,$74402,$74403,$74404,$74405,$74406,$74407,$74408,$74409,$74410),(nextval($74411),$74412,$74413,$74414,$74415,$74416,$74417,$74418,$74419,$74420,$74421,$74422,$74423,$74424),(nextval($74425),$74426,$74427,$74428,$74429,$74430,$74431,$74432,$74433,$74434,$74435,$74436,$74437,$74438),(nextval($74439),$74440,$74441,$74442,$74443,$74444,$74445,$74446,$74447,$74448,$74449,$74450,$74451,$74452),(nextval($74453),$74454,$74455,$74456,$74457,$74458,$74459,$74460,$74461,$74462,$74463,$74464,$74465,$74466),(nextval($74467),$74468,$74469,$74470,$74471,$74472,$74473,$74474,$74475,$74476,$74477,$74478,$74479,$74480),(nextval($74481),$74482,$74483,$74484,$74485,$74486,$74487,$74488,$74489,$74490,$74491,$74492,$74493,$74494),(nextval($74495),$74496,$74497,$74498,$74499,$74500,$74501,$74502,$74503,$74504,$74505,$74506,$74507,$74508),(nextval($74509),$74510,$74511,$74512,$74513,$74514,$74515,$74516,$74517,$74518,$74519,$74520,$74521,$74522),(nextval($74523),$74524,$74525,$74526,$74527,$74528,$74529,$74530,$74531,$74532,$74533,$74534,$74535,$74536),(nextval($74537),$74538,$74539,$74540,$74541,$74542,$74543,$74544,$74545,$74546,$74547,$74548,$74549,$74550),(nextval($74551),$74552,$74553,$74554,$74555,$74556,$74557,$74558,$74559,$74560,$74561,$74562,$74563,$74564),(nextval($74565),$74566,$74567,$74568,$74569,$74570,$74571,$74572,$74573,$74574,$74575,$74576,$74577,$74578),(nextval($74579),$74580,$74581,$74582,$74583,$74584,$74585,$74586,$74587,$74588,$74589,$74590,$74591,$74592),(nextval($74593),$74594,$74595,$74596,$74597,$74598,$74599,$74600,$74601,$74602,$74603,$74604,$74605,$74606),(nextval($74607),$74608,$74609,$74610,$74611,$74612,$74613,$74614,$74615,$74616,$74617,$74618,$74619,$74620),(nextval($74621),$74622,$74623,$74624,$74625,$74626,$74627,$74628,$74629,$74630,$74631,$74632,$74633,$74634),(nextval($74635),$74636,$74637,$74638,$74639,$74640,$74641,$74642,$74643,$74644,$74645,$74646,$74647,$74648),(nextval($74649),$74650,$74651,$74652,$74653,$74654,$74655,$74656,$74657,$74658,$74659,$74660,$74661,$74662),(nextval($74663),$74664,$74665,$74666,$74667,$74668,$74669,$74670,$74671,$74672,$74673,$74674,$74675,$74676),(nextval($74677),$74678,$74679,$74680,$74681,$74682,$74683,$74684,$74685,$74686,$74687,$74688,$74689,$74690),(nextval($74691),$74692,$74693,$74694,$74695,$74696,$74697,$74698,$74699,$74700,$74701,$74702,$74703,$74704),(nextval($74705),$74706,$74707,$74708,$74709,$74710,$74711,$74712,$74713,$74714,$74715,$74716,$74717,$74718),(nextval($74719),$74720,$74721,$74722,$74723,$74724,$74725,$74726,$74727,$74728,$74729,$74730,$74731,$74732),(nextval($74733),$74734,$74735,$74736,$74737,$74738,$74739,$74740,$74741,$74742,$74743,$74744,$74745,$74746),(nextval($74747),$74748,$74749,$74750,$74751,$74752,$74753,$74754,$74755,$74756,$74757,$74758,$74759,$74760),(nextval($74761),$74762,$74763,$74764,$74765,$74766,$74767,$74768,$74769,$74770,$74771,$74772,$74773,$74774),(nextval($74775),$74776,$74777,$74778,$74779,$74780,$74781,$74782,$74783,$74784,$74785,$74786,$74787,$74788),(nextval($74789),$74790,$74791,$74792,$74793,$74794,$74795,$74796,$74797,$74798,$74799,$74800,$74801,$74802),(nextval($74803),$74804,$74805,$74806,$74807,$74808,$74809,$74810,$74811,$74812,$74813,$74814,$74815,$74816),(nextval($74817),$74818,$74819,$74820,$74821,$74822,$74823,$74824,$74825,$74826,$74827,$74828,$74829,$74830),(nextval($74831),$74832,$74833,$74834,$74835,$74836,$74837,$74838,$74839,$74840,$74841,$74842,$74843,$74844),(nextval($74845),$74846,$74847,$74848,$74849,$74850,$74851,$74852,$74853,$74854,$74855,$74856,$74857,$74858),(nextval($74859),$74860,$74861,$74862,$74863,$74864,$74865,$74866,$74867,$74868,$74869,$74870,$74871,$74872),(nextval($74873),$74874,$74875,$74876,$74877,$74878,$74879,$74880,$74881,$74882,$74883,$74884,$74885,$74886),(nextval($74887),$74888,$74889,$74890,$74891,$74892,$74893,$74894,$74895,$74896,$74897,$74898,$74899,$74900),(nextval($74901),$74902,$74903,$74904,$74905,$74906,$74907,$74908,$74909,$74910,$74911,$74912,$74913,$74914),(nextval($74915),$74916,$74917,$74918,$74919,$74920,$74921,$74922,$74923,$74924,$74925,$74926,$74927,$74928),(nextval($74929),$74930,$74931,$74932,$74933,$74934,$74935,$74936,$74937,$74938,$74939,$74940,$74941,$74942),(nextval($74943),$74944,$74945,$74946,$74947,$74948,$74949,$74950,$74951,$74952,$74953,$74954,$74955,$74956),(nextval($74957),$74958,$74959,$74960,$74961,$74962,$74963,$74964,$74965,$74966,$74967,$74968,$74969,$74970),(nextval($74971),$74972,$74973,$74974,$74975,$74976,$74977,$74978,$74979,$74980,$74981,$74982,$74983,$74984),(nextval($74985),$74986,$74987,$74988,$74989,$74990,$74991,$74992,$74993,$74994,$74995,$74996,$74997,$74998),(nextval($74999),$75000,$75001,$75002,$75003,$75004,$75005,$75006,$75007,$75008,$75009,$75010,$75011,$75012),(nextval($75013),$75014,$75015,$75016,$75017,$75018,$75019,$75020,$75021,$75022,$75023,$75024,$75025,$75026),(nextval($75027),$75028,$75029,$75030,$75031,$75032,$75033,$75034,$75035,$75036,$75037,$75038,$75039,$75040),(nextval($75041),$75042,$75043,$75044,$75045,$75046,$75047,$75048,$75049,$75050,$75051,$75052,$75053,$75054),(nextval($75055),$75056,$75057,$75058,$75059,$75060,$75061,$75062,$75063,$75064,$75065,$75066,$75067,$75068),(nextval($75069),$75070,$75071,$75072,$75073,$75074,$75075,$75076,$75077,$75078,$75079,$75080,$75081,$75082),(nextval($75083),$75084,$75085,$75086,$75087,$75088,$75089,$75090,$75091,$75092,$75093,$75094,$75095,$75096),(nextval($75097),$75098,$75099,$75100,$75101,$75102,$75103,$75104,$75105,$75106,$75107,$75108,$75109,$75110),(nextval($75111),$75112,$75113,$75114,$75115,$75116,$75117,$75118,$75119,$75120,$75121,$75122,$75123,$75124),(nextval($75125),$75126,$75127,$75128,$75129,$75130,$75131,$75132,$75133,$75134,$75135,$75136,$75137,$75138),(nextval($75139),$75140,$75141,$75142,$75143,$75144,$75145,$75146,$75147,$75148,$75149,$75150,$75151,$75152),(nextval($75153),$75154,$75155,$75156,$75157,$75158,$75159,$75160,$75161,$75162,$75163,$75164,$75165,$75166),(nextval($75167),$75168,$75169,$75170,$75171,$75172,$75173,$75174,$75175,$75176,$75177,$75178,$75179,$75180),(nextval($75181),$75182,$75183,$75184,$75185,$75186,$75187,$75188,$75189,$75190,$75191,$75192,$75193,$75194),(nextval($75195),$75196,$75197,$75198,$75199,$75200,$75201,$75202,$75203,$75204,$75205,$75206,$75207,$75208),(nextval($75209),$75210,$75211,$75212,$75213,$75214,$75215,$75216,$75217,$75218,$75219,$75220,$75221,$75222),(nextval($75223),$75224,$75225,$75226,$75227,$75228,$75229,$75230,$75231,$75232,$75233,$75234,$75235,$75236),(nextval($75237),$75238,$75239,$75240,$75241,$75242,$75243,$75244,$75245,$75246,$75247,$75248,$75249,$75250),(nextval($75251),$75252,$75253,$75254,$75255,$75256,$75257,$75258,$75259,$75260,$75261,$75262,$75263,$75264),(nextval($75265),$75266,$75267,$75268,$75269,$75270,$75271,$75272,$75273,$75274,$75275,$75276,$75277,$75278),(nextval($75279),$75280,$75281,$75282,$75283,$75284,$75285,$75286,$75287,$75288,$75289,$75290,$75291,$75292),(nextval($75293),$75294,$75295,$75296,$75297,$75298,$75299,$75300,$75301,$75302,$75303,$75304,$75305,$75306),(nextval($75307),$75308,$75309,$75310,$75311,$75312,$75313,$75314,$75315,$75316,$75317,$75318,$75319,$75320),(nextval($75321),$75322,$75323,$75324,$75325,$75326,$75327,$75328,$75329,$75330,$75331,$75332,$75333,$75334),(nextval($75335),$75336,$75337,$75338,$75339,$75340,$75341,$75342,$75343,$75344,$75345,$75346,$75347,$75348),(nextval($75349),$75350,$75351,$75352,$75353,$75354,$75355,$75356,$75357,$75358,$75359,$75360,$75361,$75362),(nextval($75363),$75364,$75365,$75366,$75367,$75368,$75369,$75370,$75371,$75372,$75373,$75374,$75375,$75376),(nextval($75377),$75378,$75379,$75380,$75381,$75382,$75383,$75384,$75385,$75386,$75387,$75388,$75389,$75390),(nextval($75391),$75392,$75393,$75394,$75395,$75396,$75397,$75398,$75399,$75400,$75401,$75402,$75403,$75404),(nextval($75405),$75406,$75407,$75408,$75409,$75410,$75411,$75412,$75413,$75414,$75415,$75416,$75417,$75418),(nextval($75419),$75420,$75421,$75422,$75423,$75424,$75425,$75426,$75427,$75428,$75429,$75430,$75431,$75432),(nextval($75433),$75434,$75435,$75436,$75437,$75438,$75439,$75440,$75441,$75442,$75443,$75444,$75445,$75446),(nextval($75447),$75448,$75449,$75450,$75451,$75452,$75453,$75454,$75455,$75456,$75457,$75458,$75459,$75460),(nextval($75461),$75462,$75463,$75464,$75465,$75466,$75467,$75468,$75469,$75470,$75471,$75472,$75473,$75474),(nextval($75475),$75476,$75477,$75478,$75479,$75480,$75481,$75482,$75483,$75484,$75485,$75486,$75487,$75488),(nextval($75489),$75490,$75491,$75492,$75493,$75494,$75495,$75496,$75497,$75498,$75499,$75500,$75501,$75502),(nextval($75503),$75504,$75505,$75506,$75507,$75508,$75509,$75510,$75511,$75512,$75513,$75514,$75515,$75516),(nextval($75517),$75518,$75519,$75520,$75521,$75522,$75523,$75524,$75525,$75526,$75527,$75528,$75529,$75530),(nextval($75531),$75532,$75533,$75534,$75535,$75536,$75537,$75538,$75539,$75540,$75541,$75542,$75543,$75544),(nextval($75545),$75546,$75547,$75548,$75549,$75550,$75551,$75552,$75553,$75554,$75555,$75556,$75557,$75558),(nextval($75559),$75560,$75561,$75562,$75563,$75564,$75565,$75566,$75567,$75568,$75569,$75570,$75571,$75572),(nextval($75573),$75574,$75575,$75576,$75577,$75578,$75579,$75580,$75581,$75582,$75583,$75584,$75585,$75586),(nextval($75587),$75588,$75589,$75590,$75591,$75592,$75593,$75594,$75595,$75596,$75597,$75598,$75599,$75600),(nextval($75601),$75602,$75603,$75604,$75605,$75606,$75607,$75608,$75609,$75610,$75611,$75612,$75613,$75614),(nextval($75615),$75616,$75617,$75618,$75619,$75620,$75621,$75622,$75623,$75624,$75625,$75626,$75627,$75628),(nextval($75629),$75630,$75631,$75632,$75633,$75634,$75635,$75636,$75637,$75638,$75639,$75640,$75641,$75642),(nextval($75643),$75644,$75645,$75646,$75647,$75648,$75649,$75650,$75651,$75652,$75653,$75654,$75655,$75656),(nextval($75657),$75658,$75659,$75660,$75661,$75662,$75663,$75664,$75665,$75666,$75667,$75668,$75669,$75670),(nextval($75671),$75672,$75673,$75674,$75675,$75676,$75677,$75678,$75679,$75680,$75681,$75682,$75683,$75684),(nextval($75685),$75686,$75687,$75688,$75689,$75690,$75691,$75692,$75693,$75694,$75695,$75696,$75697,$75698),(nextval($75699),$75700,$75701,$75702,$75703,$75704,$75705,$75706,$75707,$75708,$75709,$75710,$75711,$75712),(nextval($75713),$75714,$75715,$75716,$75717,$75718,$75719,$75720,$75721,$75722,$75723,$75724,$75725,$75726),(nextval($75727),$75728,$75729,$75730,$75731,$75732,$75733,$75734,$75735,$75736,$75737,$75738,$75739,$75740),(nextval($75741),$75742,$75743,$75744,$75745,$75746,$75747,$75748,$75749,$75750,$75751,$75752,$75753,$75754),(nextval($75755),$75756,$75757,$75758,$75759,$75760,$75761,$75762,$75763,$75764,$75765,$75766,$75767,$75768),(nextval($75769),$75770,$75771,$75772,$75773,$75774,$75775,$75776,$75777,$75778,$75779,$75780,$75781,$75782),(nextval($75783),$75784,$75785,$75786,$75787,$75788,$75789,$75790,$75791,$75792,$75793,$75794,$75795,$75796),(nextval($75797),$75798,$75799,$75800,$75801,$75802,$75803,$75804,$75805,$75806,$75807,$75808,$75809,$75810),(nextval($75811),$75812,$75813,$75814,$75815,$75816,$75817,$75818,$75819,$75820,$75821,$75822,$75823,$75824),(nextval($75825),$75826,$75827,$75828,$75829,$75830,$75831,$75832,$75833,$75834,$75835,$75836,$75837,$75838),(nextval($75839),$75840,$75841,$75842,$75843,$75844,$75845,$75846,$75847,$75848,$75849,$75850,$75851,$75852),(nextval($75853),$75854,$75855,$75856,$75857,$75858,$75859,$75860,$75861,$75862,$75863,$75864,$75865,$75866),(nextval($75867),$75868,$75869,$75870,$75871,$75872,$75873,$75874,$75875,$75876,$75877,$75878,$75879,$75880),(nextval($75881),$75882,$75883,$75884,$75885,$75886,$75887,$75888,$75889,$75890,$75891,$75892,$75893,$75894),(nextval($75895),$75896,$75897,$75898,$75899,$75900,$75901,$75902,$75903,$75904,$75905,$75906,$75907,$75908),(nextval($75909),$75910,$75911,$75912,$75913,$75914,$75915,$75916,$75917,$75918,$75919,$75920,$75921,$75922),(nextval($75923),$75924,$75925,$75926,$75927,$75928,$75929,$75930,$75931,$75932,$75933,$75934,$75935,$75936),(nextval($75937),$75938,$75939,$75940,$75941,$75942,$75943,$75944,$75945,$75946,$75947,$75948,$75949,$75950),(nextval($75951),$75952,$75953,$75954,$75955,$75956,$75957,$75958,$75959,$75960,$75961,$75962,$75963,$75964),(nextval($75965),$75966,$75967,$75968,$75969,$75970,$75971,$75972,$75973,$75974,$75975,$75976,$75977,$75978),(nextval($75979),$75980,$75981,$75982,$75983,$75984,$75985,$75986,$75987,$75988,$75989,$75990,$75991,$75992),(nextval($75993),$75994,$75995,$75996,$75997,$75998,$75999,$76000,$76001,$76002,$76003,$76004,$76005,$76006),(nextval($76007),$76008,$76009,$76010,$76011,$76012,$76013,$76014,$76015,$76016,$76017,$76018,$76019,$76020),(nextval($76021),$76022,$76023,$76024,$76025,$76026,$76027,$76028,$76029,$76030,$76031,$76032,$76033,$76034),(nextval($76035),$76036,$76037,$76038,$76039,$76040,$76041,$76042,$76043,$76044,$76045,$76046,$76047,$76048),(nextval($76049),$76050,$76051,$76052,$76053,$76054,$76055,$76056,$76057,$76058,$76059,$76060,$76061,$76062),(nextval($76063),$76064,$76065,$76066,$76067,$76068,$76069,$76070,$76071,$76072,$76073,$76074,$76075,$76076),(nextval($76077),$76078,$76079,$76080,$76081,$76082,$76083,$76084,$76085,$76086,$76087,$76088,$76089,$76090),(nextval($76091),$76092,$76093,$76094,$76095,$76096,$76097,$76098,$76099,$76100,$76101,$76102,$76103,$76104),(nextval($76105),$76106,$76107,$76108,$76109,$76110,$76111,$76112,$76113,$76114,$76115,$76116,$76117,$76118),(nextval($76119),$76120,$76121,$76122,$76123,$76124,$76125,$76126,$76127,$76128,$76129,$76130,$76131,$76132),(nextval($76133),$76134,$76135,$76136,$76137,$76138,$76139,$76140,$76141,$76142,$76143,$76144,$76145,$76146),(nextval($76147),$76148,$76149,$76150,$76151,$76152,$76153,$76154,$76155,$76156,$76157,$76158,$76159,$76160),(nextval($76161),$76162,$76163,$76164,$76165,$76166,$76167,$76168,$76169,$76170,$76171,$76172,$76173,$76174),(nextval($76175),$76176,$76177,$76178,$76179,$76180,$76181,$76182,$76183,$76184,$76185,$76186,$76187,$76188),(nextval($76189),$76190,$76191,$76192,$76193,$76194,$76195,$76196,$76197,$76198,$76199,$76200,$76201,$76202),(nextval($76203),$76204,$76205,$76206,$76207,$76208,$76209,$76210,$76211,$76212,$76213,$76214,$76215,$76216),(nextval($76217),$76218,$76219,$76220,$76221,$76222,$76223,$76224,$76225,$76226,$76227,$76228,$76229,$76230),(nextval($76231),$76232,$76233,$76234,$76235,$76236,$76237,$76238,$76239,$76240,$76241,$76242,$76243,$76244),(nextval($76245),$76246,$76247,$76248,$76249,$76250,$76251,$76252,$76253,$76254,$76255,$76256,$76257,$76258),(nextval($76259),$76260,$76261,$76262,$76263,$76264,$76265,$76266,$76267,$76268,$76269,$76270,$76271,$76272),(nextval($76273),$76274,$76275,$76276,$76277,$76278,$76279,$76280,$76281,$76282,$76283,$76284,$76285,$76286),(nextval($76287),$76288,$76289,$76290,$76291,$76292,$76293,$76294,$76295,$76296,$76297,$76298,$76299,$76300),(nextval($76301),$76302,$76303,$76304,$76305,$76306,$76307,$76308,$76309,$76310,$76311,$76312,$76313,$76314),(nextval($76315),$76316,$76317,$76318,$76319,$76320,$76321,$76322,$76323,$76324,$76325,$76326,$76327,$76328),(nextval($76329),$76330,$76331,$76332,$76333,$76334,$76335,$76336,$76337,$76338,$76339,$76340,$76341,$76342),(nextval($76343),$76344,$76345,$76346,$76347,$76348,$76349,$76350,$76351,$76352,$76353,$76354,$76355,$76356),(nextval($76357),$76358,$76359,$76360,$76361,$76362,$76363,$76364,$76365,$76366,$76367,$76368,$76369,$76370),(nextval($76371),$76372,$76373,$76374,$76375,$76376,$76377,$76378,$76379,$76380,$76381,$76382,$76383,$76384),(nextval($76385),$76386,$76387,$76388,$76389,$76390,$76391,$76392,$76393,$76394,$76395,$76396,$76397,$76398),(nextval($76399),$76400,$76401,$76402,$76403,$76404,$76405,$76406,$76407,$76408,$76409,$76410,$76411,$76412),(nextval($76413),$76414,$76415,$76416,$76417,$76418,$76419,$76420,$76421,$76422,$76423,$76424,$76425,$76426),(nextval($76427),$76428,$76429,$76430,$76431,$76432,$76433,$76434,$76435,$76436,$76437,$76438,$76439,$76440),(nextval($76441),$76442,$76443,$76444,$76445,$76446,$76447,$76448,$76449,$76450,$76451,$76452,$76453,$76454),(nextval($76455),$76456,$76457,$76458,$76459,$76460,$76461,$76462,$76463,$76464,$76465,$76466,$76467,$76468),(nextval($76469),$76470,$76471,$76472,$76473,$76474,$76475,$76476,$76477,$76478,$76479,$76480,$76481,$76482),(nextval($76483),$76484,$76485,$76486,$76487,$76488,$76489,$76490,$76491,$76492,$76493,$76494,$76495,$76496),(nextval($76497),$76498,$76499,$76500,$76501,$76502,$76503,$76504,$76505,$76506,$76507,$76508,$76509,$76510),(nextval($76511),$76512,$76513,$76514,$76515,$76516,$76517,$76518,$76519,$76520,$76521,$76522,$76523,$76524),(nextval($76525),$76526,$76527,$76528,$76529,$76530,$76531,$76532,$76533,$76534,$76535,$76536,$76537,$76538),(nextval($76539),$76540,$76541,$76542,$76543,$76544,$76545,$76546,$76547,$76548,$76549,$76550,$76551,$76552),(nextval($76553),$76554,$76555,$76556,$76557,$76558,$76559,$76560,$76561,$76562,$76563,$76564,$76565,$76566),(nextval($76567),$76568,$76569,$76570,$76571,$76572,$76573,$76574,$76575,$76576,$76577,$76578,$76579,$76580),(nextval($76581),$76582,$76583,$76584,$76585,$76586,$76587,$76588,$76589,$76590,$76591,$76592,$76593,$76594),(nextval($76595),$76596,$76597,$76598,$76599,$76600,$76601,$76602,$76603,$76604,$76605,$76606,$76607,$76608),(nextval($76609),$76610,$76611,$76612,$76613,$76614,$76615,$76616,$76617,$76618,$76619,$76620,$76621,$76622),(nextval($76623),$76624,$76625,$76626,$76627,$76628,$76629,$76630,$76631,$76632,$76633,$76634,$76635,$76636),(nextval($76637),$76638,$76639,$76640,$76641,$76642,$76643,$76644,$76645,$76646,$76647,$76648,$76649,$76650),(nextval($76651),$76652,$76653,$76654,$76655,$76656,$76657,$76658,$76659,$76660,$76661,$76662,$76663,$76664),(nextval($76665),$76666,$76667,$76668,$76669,$76670,$76671,$76672,$76673,$76674,$76675,$76676,$76677,$76678),(nextval($76679),$76680,$76681,$76682,$76683,$76684,$76685,$76686,$76687,$76688,$76689,$76690,$76691,$76692),(nextval($76693),$76694,$76695,$76696,$76697,$76698,$76699,$76700,$76701,$76702,$76703,$76704,$76705,$76706),(nextval($76707),$76708,$76709,$76710,$76711,$76712,$76713,$76714,$76715,$76716,$76717,$76718,$76719,$76720),(nextval($76721),$76722,$76723,$76724,$76725,$76726,$76727,$76728,$76729,$76730,$76731,$76732,$76733,$76734),(nextval($76735),$76736,$76737,$76738,$76739,$76740,$76741,$76742,$76743,$76744,$76745,$76746,$76747,$76748),(nextval($76749),$76750,$76751,$76752,$76753,$76754,$76755,$76756,$76757,$76758,$76759,$76760,$76761,$76762),(nextval($76763),$76764,$76765,$76766,$76767,$76768,$76769,$76770,$76771,$76772,$76773,$76774,$76775,$76776),(nextval($76777),$76778,$76779,$76780,$76781,$76782,$76783,$76784,$76785,$76786,$76787,$76788,$76789,$76790),(nextval($76791),$76792,$76793,$76794,$76795,$76796,$76797,$76798,$76799,$76800,$76801,$76802,$76803,$76804),(nextval($76805),$76806,$76807,$76808,$76809,$76810,$76811,$76812,$76813,$76814,$76815,$76816,$76817,$76818),(nextval($76819),$76820,$76821,$76822,$76823,$76824,$76825,$76826,$76827,$76828,$76829,$76830,$76831,$76832),(nextval($76833),$76834,$76835,$76836,$76837,$76838,$76839,$76840,$76841,$76842,$76843,$76844,$76845,$76846),(nextval($76847),$76848,$76849,$76850,$76851,$76852,$76853,$76854,$76855,$76856,$76857,$76858,$76859,$76860),(nextval($76861),$76862,$76863,$76864,$76865,$76866,$76867,$76868,$76869,$76870,$76871,$76872,$76873,$76874),(nextval($76875),$76876,$76877,$76878,$76879,$76880,$76881,$76882,$76883,$76884,$76885,$76886,$76887,$76888),(nextval($76889),$76890,$76891,$76892,$76893,$76894,$76895,$76896,$76897,$76898,$76899,$76900,$76901,$76902),(nextval($76903),$76904,$76905,$76906,$76907,$76908,$76909,$76910,$76911,$76912,$76913,$76914,$76915,$76916),(nextval($76917),$76918,$76919,$76920,$76921,$76922,$76923,$76924,$76925,$76926,$76927,$76928,$76929,$76930),(nextval($76931),$76932,$76933,$76934,$76935,$76936,$76937,$76938,$76939,$76940,$76941,$76942,$76943,$76944),(nextval($76945),$76946,$76947,$76948,$76949,$76950,$76951,$76952,$76953,$76954,$76955,$76956,$76957,$76958),(nextval($76959),$76960,$76961,$76962,$76963,$76964,$76965,$76966,$76967,$76968,$76969,$76970,$76971,$76972),(nextval($76973),$76974,$76975,$76976,$76977,$76978,$76979,$76980,$76981,$76982,$76983,$76984,$76985,$76986),(nextval($76987),$76988,$76989,$76990,$76991,$76992,$76993,$76994,$76995,$76996,$76997,$76998,$76999,$77000),(nextval($77001),$77002,$77003,$77004,$77005,$77006,$77007,$77008,$77009,$77010,$77011,$77012,$77013,$77014),(nextval($77015),$77016,$77017,$77018,$77019,$77020,$77021,$77022,$77023,$77024,$77025,$77026,$77027,$77028),(nextval($77029),$77030,$77031,$77032,$77033,$77034,$77035,$77036,$77037,$77038,$77039,$77040,$77041,$77042),(nextval($77043),$77044,$77045,$77046,$77047,$77048,$77049,$77050,$77051,$77052,$77053,$77054,$77055,$77056),(nextval($77057),$77058,$77059,$77060,$77061,$77062,$77063,$77064,$77065,$77066,$77067,$77068,$77069,$77070),(nextval($77071),$77072,$77073,$77074,$77075,$77076,$77077,$77078,$77079,$77080,$77081,$77082,$77083,$77084),(nextval($77085),$77086,$77087,$77088,$77089,$77090,$77091,$77092,$77093,$77094,$77095,$77096,$77097,$77098),(nextval($77099),$77100,$77101,$77102,$77103,$77104,$77105,$77106,$77107,$77108,$77109,$77110,$77111,$77112),(nextval($77113),$77114,$77115,$77116,$77117,$77118,$77119,$77120,$77121,$77122,$77123,$77124,$77125,$77126),(nextval($77127),$77128,$77129,$77130,$77131,$77132,$77133,$77134,$77135,$77136,$77137,$77138,$77139,$77140),(nextval($77141),$77142,$77143,$77144,$77145,$77146,$77147,$77148,$77149,$77150,$77151,$77152,$77153,$77154),(nextval($77155),$77156,$77157,$77158,$77159,$77160,$77161,$77162,$77163,$77164,$77165,$77166,$77167,$77168),(nextval($77169),$77170,$77171,$77172,$77173,$77174,$77175,$77176,$77177,$77178,$77179,$77180,$77181,$77182),(nextval($77183),$77184,$77185,$77186,$77187,$77188,$77189,$77190,$77191,$77192,$77193,$77194,$77195,$77196),(nextval($77197),$77198,$77199,$77200,$77201,$77202,$77203,$77204,$77205,$77206,$77207,$77208,$77209,$77210),(nextval($77211),$77212,$77213,$77214,$77215,$77216,$77217,$77218,$77219,$77220,$77221,$77222,$77223,$77224),(nextval($77225),$77226,$77227,$77228,$77229,$77230,$77231,$77232,$77233,$77234,$77235,$77236,$77237,$77238),(nextval($77239),$77240,$77241,$77242,$77243,$77244,$77245,$77246,$77247,$77248,$77249,$77250,$77251,$77252),(nextval($77253),$77254,$77255,$77256,$77257,$77258,$77259,$77260,$77261,$77262,$77263,$77264,$77265,$77266),(nextval($77267),$77268,$77269,$77270,$77271,$77272,$77273,$77274,$77275,$77276,$77277,$77278,$77279,$77280),(nextval($77281),$77282,$77283,$77284,$77285,$77286,$77287,$77288,$77289,$77290,$77291,$77292,$77293,$77294),(nextval($77295),$77296,$77297,$77298,$77299,$77300,$77301,$77302,$77303,$77304,$77305,$77306,$77307,$77308),(nextval($77309),$77310,$77311,$77312,$77313,$77314,$77315,$77316,$77317,$77318,$77319,$77320,$77321,$77322),(nextval($77323),$77324,$77325,$77326,$77327,$77328,$77329,$77330,$77331,$77332,$77333,$77334,$77335,$77336),(nextval($77337),$77338,$77339,$77340,$77341,$77342,$77343,$77344,$77345,$77346,$77347,$77348,$77349,$77350),(nextval($77351),$77352,$77353,$77354,$77355,$77356,$77357,$77358,$77359,$77360,$77361,$77362,$77363,$77364),(nextval($77365),$77366,$77367,$77368,$77369,$77370,$77371,$77372,$77373,$77374,$77375,$77376,$77377,$77378),(nextval($77379),$77380,$77381,$77382,$77383,$77384,$77385,$77386,$77387,$77388,$77389,$77390,$77391,$77392),(nextval($77393),$77394,$77395,$77396,$77397,$77398,$77399,$77400,$77401,$77402,$77403,$77404,$77405,$77406),(nextval($77407),$77408,$77409,$77410,$77411,$77412,$77413,$77414,$77415,$77416,$77417,$77418,$77419,$77420),(nextval($77421),$77422,$77423,$77424,$77425,$77426,$77427,$77428,$77429,$77430,$77431,$77432,$77433,$77434),(nextval($77435),$77436,$77437,$77438,$77439,$77440,$77441,$77442,$77443,$77444,$77445,$77446,$77447,$77448),(nextval($77449),$77450,$77451,$77452,$77453,$77454,$77455,$77456,$77457,$77458,$77459,$77460,$77461,$77462),(nextval($77463),$77464,$77465,$77466,$77467,$77468,$77469,$77470,$77471,$77472,$77473,$77474,$77475,$77476),(nextval($77477),$77478,$77479,$77480,$77481,$77482,$77483,$77484,$77485,$77486,$77487,$77488,$77489,$77490),(nextval($77491),$77492,$77493,$77494,$77495,$77496,$77497,$77498,$77499,$77500,$77501,$77502,$77503,$77504),(nextval($77505),$77506,$77507,$77508,$77509,$77510,$77511,$77512,$77513,$77514,$77515,$77516,$77517,$77518),(nextval($77519),$77520,$77521,$77522,$77523,$77524,$77525,$77526,$77527,$77528,$77529,$77530,$77531,$77532),(nextval($77533),$77534,$77535,$77536,$77537,$77538,$77539,$77540,$77541,$77542,$77543,$77544,$77545,$77546),(nextval($77547),$77548,$77549,$77550,$77551,$77552,$77553,$77554,$77555,$77556,$77557,$77558,$77559,$77560),(nextval($77561),$77562,$77563,$77564,$77565,$77566,$77567,$77568,$77569,$77570,$77571,$77572,$77573,$77574),(nextval($77575),$77576,$77577,$77578,$77579,$77580,$77581,$77582,$77583,$77584,$77585,$77586,$77587,$77588),(nextval($77589),$77590,$77591,$77592,$77593,$77594,$77595,$77596,$77597,$77598,$77599,$77600,$77601,$77602),(nextval($77603),$77604,$77605,$77606,$77607,$77608,$77609,$77610,$77611,$77612,$77613,$77614,$77615,$77616),(nextval($77617),$77618,$77619,$77620,$77621,$77622,$77623,$77624,$77625,$77626,$77627,$77628,$77629,$77630),(nextval($77631),$77632,$77633,$77634,$77635,$77636,$77637,$77638,$77639,$77640,$77641,$77642,$77643,$77644),(nextval($77645),$77646,$77647,$77648,$77649,$77650,$77651,$77652,$77653,$77654,$77655,$77656,$77657,$77658),(nextval($77659),$77660,$77661,$77662,$77663,$77664,$77665,$77666,$77667,$77668,$77669,$77670,$77671,$77672),(nextval($77673),$77674,$77675,$77676,$77677,$77678,$77679,$77680,$77681,$77682,$77683,$77684,$77685,$77686),(nextval($77687),$77688,$77689,$77690,$77691,$77692,$77693,$77694,$77695,$77696,$77697,$77698,$77699,$77700),(nextval($77701),$77702,$77703,$77704,$77705,$77706,$77707,$77708,$77709,$77710,$77711,$77712,$77713,$77714),(nextval($77715),$77716,$77717,$77718,$77719,$77720,$77721,$77722,$77723,$77724,$77725,$77726,$77727,$77728),(nextval($77729),$77730,$77731,$77732,$77733,$77734,$77735,$77736,$77737,$77738,$77739,$77740,$77741,$77742),(nextval($77743),$77744,$77745,$77746,$77747,$77748,$77749,$77750,$77751,$77752,$77753,$77754,$77755,$77756),(nextval($77757),$77758,$77759,$77760,$77761,$77762,$77763,$77764,$77765,$77766,$77767,$77768,$77769,$77770),(nextval($77771),$77772,$77773,$77774,$77775,$77776,$77777,$77778,$77779,$77780,$77781,$77782,$77783,$77784),(nextval($77785),$77786,$77787,$77788,$77789,$77790,$77791,$77792,$77793,$77794,$77795,$77796,$77797,$77798),(nextval($77799),$77800,$77801,$77802,$77803,$77804,$77805,$77806,$77807,$77808,$77809,$77810,$77811,$77812),(nextval($77813),$77814,$77815,$77816,$77817,$77818,$77819,$77820,$77821,$77822,$77823,$77824,$77825,$77826),(nextval($77827),$77828,$77829,$77830,$77831,$77832,$77833,$77834,$77835,$77836,$77837,$77838,$77839,$77840),(nextval($77841),$77842,$77843,$77844,$77845,$77846,$77847,$77848,$77849,$77850,$77851,$77852,$77853,$77854),(nextval($77855),$77856,$77857,$77858,$77859,$77860,$77861,$77862,$77863,$77864,$77865,$77866,$77867,$77868),(nextval($77869),$77870,$77871,$77872,$77873,$77874,$77875,$77876,$77877,$77878,$77879,$77880,$77881,$77882),(nextval($77883),$77884,$77885,$77886,$77887,$77888,$77889,$77890,$77891,$77892,$77893,$77894,$77895,$77896),(nextval($77897),$77898,$77899,$77900,$77901,$77902,$77903,$77904,$77905,$77906,$77907,$77908,$77909,$77910),(nextval($77911),$77912,$77913,$77914,$77915,$77916,$77917,$77918,$77919,$77920,$77921,$77922,$77923,$77924),(nextval($77925),$77926,$77927,$77928,$77929,$77930,$77931,$77932,$77933,$77934,$77935,$77936,$77937,$77938),(nextval($77939),$77940,$77941,$77942,$77943,$77944,$77945,$77946,$77947,$77948,$77949,$77950,$77951,$77952),(nextval($77953),$77954,$77955,$77956,$77957,$77958,$77959,$77960,$77961,$77962,$77963,$77964,$77965,$77966),(nextval($77967),$77968,$77969,$77970,$77971,$77972,$77973,$77974,$77975,$77976,$77977,$77978,$77979,$77980),(nextval($77981),$77982,$77983,$77984,$77985,$77986,$77987,$77988,$77989,$77990,$77991,$77992,$77993,$77994),(nextval($77995),$77996,$77997,$77998,$77999,$78000,$78001,$78002,$78003,$78004,$78005,$78006,$78007,$78008),(nextval($78009),$78010,$78011,$78012,$78013,$78014,$78015,$78016,$78017,$78018,$78019,$78020,$78021,$78022),(nextval($78023),$78024,$78025,$78026,$78027,$78028,$78029,$78030,$78031,$78032,$78033,$78034,$78035,$78036),(nextval($78037),$78038,$78039,$78040,$78041,$78042,$78043,$78044,$78045,$78046,$78047,$78048,$78049,$78050),(nextval($78051),$78052,$78053,$78054,$78055,$78056,$78057,$78058,$78059,$78060,$78061,$78062,$78063,$78064),(nextval($78065),$78066,$78067,$78068,$78069,$78070,$78071,$78072,$78073,$78074,$78075,$78076,$78077,$78078),(nextval($78079),$78080,$78081,$78082,$78083,$78084,$78085,$78086,$78087,$78088,$78089,$78090,$78091,$78092),(nextval($78093),$78094,$78095,$78096,$78097,$78098,$78099,$78100,$78101,$78102,$78103,$78104,$78105,$78106),(nextval($78107),$78108,$78109,$78110,$78111,$78112,$78113,$78114,$78115,$78116,$78117,$78118,$78119,$78120),(nextval($78121),$78122,$78123,$78124,$78125,$78126,$78127,$78128,$78129,$78130,$78131,$78132,$78133,$78134),(nextval($78135),$78136,$78137,$78138,$78139,$78140,$78141,$78142,$78143,$78144,$78145,$78146,$78147,$78148),(nextval($78149),$78150,$78151,$78152,$78153,$78154,$78155,$78156,$78157,$78158,$78159,$78160,$78161,$78162),(nextval($78163),$78164,$78165,$78166,$78167,$78168,$78169,$78170,$78171,$78172,$78173,$78174,$78175,$78176),(nextval($78177),$78178,$78179,$78180,$78181,$78182,$78183,$78184,$78185,$78186,$78187,$78188,$78189,$78190),(nextval($78191),$78192,$78193,$78194,$78195,$78196,$78197,$78198,$78199,$78200,$78201,$78202,$78203,$78204),(nextval($78205),$78206,$78207,$78208,$78209,$78210,$78211,$78212,$78213,$78214,$78215,$78216,$78217,$78218),(nextval($78219),$78220,$78221,$78222,$78223,$78224,$78225,$78226,$78227,$78228,$78229,$78230,$78231,$78232),(nextval($78233),$78234,$78235,$78236,$78237,$78238,$78239,$78240,$78241,$78242,$78243,$78244,$78245,$78246),(nextval($78247),$78248,$78249,$78250,$78251,$78252,$78253,$78254,$78255,$78256,$78257,$78258,$78259,$78260),(nextval($78261),$78262,$78263,$78264,$78265,$78266,$78267,$78268,$78269,$78270,$78271,$78272,$78273,$78274),(nextval($78275),$78276,$78277,$78278,$78279,$78280,$78281,$78282,$78283,$78284,$78285,$78286,$78287,$78288),(nextval($78289),$78290,$78291,$78292,$78293,$78294,$78295,$78296,$78297,$78298,$78299,$78300,$78301,$78302),(nextval($78303),$78304,$78305,$78306,$78307,$78308,$78309,$78310,$78311,$78312,$78313,$78314,$78315,$78316),(nextval($78317),$78318,$78319,$78320,$78321,$78322,$78323,$78324,$78325,$78326,$78327,$78328,$78329,$78330),(nextval($78331),$78332,$78333,$78334,$78335,$78336,$78337,$78338,$78339,$78340,$78341,$78342,$78343,$78344),(nextval($78345),$78346,$78347,$78348,$78349,$78350,$78351,$78352,$78353,$78354,$78355,$78356,$78357,$78358),(nextval($78359),$78360,$78361,$78362,$78363,$78364,$78365,$78366,$78367,$78368,$78369,$78370,$78371,$78372),(nextval($78373),$78374,$78375,$78376,$78377,$78378,$78379,$78380,$78381,$78382,$78383,$78384,$78385,$78386),(nextval($78387),$78388,$78389,$78390,$78391,$78392,$78393,$78394,$78395,$78396,$78397,$78398,$78399,$78400),(nextval($78401),$78402,$78403,$78404,$78405,$78406,$78407,$78408,$78409,$78410,$78411,$78412,$78413,$78414),(nextval($78415),$78416,$78417,$78418,$78419,$78420,$78421,$78422,$78423,$78424,$78425,$78426,$78427,$78428),(nextval($78429),$78430,$78431,$78432,$78433,$78434,$78435,$78436,$78437,$78438,$78439,$78440,$78441,$78442),(nextval($78443),$78444,$78445,$78446,$78447,$78448,$78449,$78450,$78451,$78452,$78453,$78454,$78455,$78456),(nextval($78457),$78458,$78459,$78460,$78461,$78462,$78463,$78464,$78465,$78466,$78467,$78468,$78469,$78470),(nextval($78471),$78472,$78473,$78474,$78475,$78476,$78477,$78478,$78479,$78480,$78481,$78482,$78483,$78484),(nextval($78485),$78486,$78487,$78488,$78489,$78490,$78491,$78492,$78493,$78494,$78495,$78496,$78497,$78498),(nextval($78499),$78500,$78501,$78502,$78503,$78504,$78505,$78506,$78507,$78508,$78509,$78510,$78511,$78512),(nextval($78513),$78514,$78515,$78516,$78517,$78518,$78519,$78520,$78521,$78522,$78523,$78524,$78525,$78526),(nextval($78527),$78528,$78529,$78530,$78531,$78532,$78533,$78534,$78535,$78536,$78537,$78538,$78539,$78540),(nextval($78541),$78542,$78543,$78544,$78545,$78546,$78547,$78548,$78549,$78550,$78551,$78552,$78553,$78554),(nextval($78555),$78556,$78557,$78558,$78559,$78560,$78561,$78562,$78563,$78564,$78565,$78566,$78567,$78568),(nextval($78569),$78570,$78571,$78572,$78573,$78574,$78575,$78576,$78577,$78578,$78579,$78580,$78581,$78582),(nextval($78583),$78584,$78585,$78586,$78587,$78588,$78589,$78590,$78591,$78592,$78593,$78594,$78595,$78596),(nextval($78597),$78598,$78599,$78600,$78601,$78602,$78603,$78604,$78605,$78606,$78607,$78608,$78609,$78610),(nextval($78611),$78612,$78613,$78614,$78615,$78616,$78617,$78618,$78619,$78620,$78621,$78622,$78623,$78624),(nextval($78625),$78626,$78627,$78628,$78629,$78630,$78631,$78632,$78633,$78634,$78635,$78636,$78637,$78638),(nextval($78639),$78640,$78641,$78642,$78643,$78644,$78645,$78646,$78647,$78648,$78649,$78650,$78651,$78652),(nextval($78653),$78654,$78655,$78656,$78657,$78658,$78659,$78660,$78661,$78662,$78663,$78664,$78665,$78666),(nextval($78667),$78668,$78669,$78670,$78671,$78672,$78673,$78674,$78675,$78676,$78677,$78678,$78679,$78680),(nextval($78681),$78682,$78683,$78684,$78685,$78686,$78687,$78688,$78689,$78690,$78691,$78692,$78693,$78694),(nextval($78695),$78696,$78697,$78698,$78699,$78700,$78701,$78702,$78703,$78704,$78705,$78706,$78707,$78708),(nextval($78709),$78710,$78711,$78712,$78713,$78714,$78715,$78716,$78717,$78718,$78719,$78720,$78721,$78722),(nextval($78723),$78724,$78725,$78726,$78727,$78728,$78729,$78730,$78731,$78732,$78733,$78734,$78735,$78736),(nextval($78737),$78738,$78739,$78740,$78741,$78742,$78743,$78744,$78745,$78746,$78747,$78748,$78749,$78750),(nextval($78751),$78752,$78753,$78754,$78755,$78756,$78757,$78758,$78759,$78760,$78761,$78762,$78763,$78764),(nextval($78765),$78766,$78767,$78768,$78769,$78770,$78771,$78772,$78773,$78774,$78775,$78776,$78777,$78778),(nextval($78779),$78780,$78781,$78782,$78783,$78784,$78785,$78786,$78787,$78788,$78789,$78790,$78791,$78792),(nextval($78793),$78794,$78795,$78796,$78797,$78798,$78799,$78800,$78801,$78802,$78803,$78804,$78805,$78806),(nextval($78807),$78808,$78809,$78810,$78811,$78812,$78813,$78814,$78815,$78816,$78817,$78818,$78819,$78820),(nextval($78821),$78822,$78823,$78824,$78825,$78826,$78827,$78828,$78829,$78830,$78831,$78832,$78833,$78834),(nextval($78835),$78836,$78837,$78838,$78839,$78840,$78841,$78842,$78843,$78844,$78845,$78846,$78847,$78848),(nextval($78849),$78850,$78851,$78852,$78853,$78854,$78855,$78856,$78857,$78858,$78859,$78860,$78861,$78862),(nextval($78863),$78864,$78865,$78866,$78867,$78868,$78869,$78870,$78871,$78872,$78873,$78874,$78875,$78876),(nextval($78877),$78878,$78879,$78880,$78881,$78882,$78883,$78884,$78885,$78886,$78887,$78888,$78889,$78890),(nextval($78891),$78892,$78893,$78894,$78895,$78896,$78897,$78898,$78899,$78900,$78901,$78902,$78903,$78904),(nextval($78905),$78906,$78907,$78908,$78909,$78910,$78911,$78912,$78913,$78914,$78915,$78916,$78917,$78918),(nextval($78919),$78920,$78921,$78922,$78923,$78924,$78925,$78926,$78927,$78928,$78929,$78930,$78931,$78932),(nextval($78933),$78934,$78935,$78936,$78937,$78938,$78939,$78940,$78941,$78942,$78943,$78944,$78945,$78946),(nextval($78947),$78948,$78949,$78950,$78951,$78952,$78953,$78954,$78955,$78956,$78957,$78958,$78959,$78960),(nextval($78961),$78962,$78963,$78964,$78965,$78966,$78967,$78968,$78969,$78970,$78971,$78972,$78973,$78974),(nextval($78975),$78976,$78977,$78978,$78979,$78980,$78981,$78982,$78983,$78984,$78985,$78986,$78987,$78988),(nextval($78989),$78990,$78991,$78992,$78993,$78994,$78995,$78996,$78997,$78998,$78999,$79000,$79001,$79002),(nextval($79003),$79004,$79005,$79006,$79007,$79008,$79009,$79010,$79011,$79012,$79013,$79014,$79015,$79016),(nextval($79017),$79018,$79019,$79020,$79021,$79022,$79023,$79024,$79025,$79026,$79027,$79028,$79029,$79030),(nextval($79031),$79032,$79033,$79034,$79035,$79036,$79037,$79038,$79039,$79040,$79041,$79042,$79043,$79044),(nextval($79045),$79046,$79047,$79048,$79049,$79050,$79051,$79052,$79053,$79054,$79055,$79056,$79057,$79058),(nextval($79059),$79060,$79061,$79062,$79063,$79064,$79065,$79066,$79067,$79068,$79069,$79070,$79071,$79072),(nextval($79073),$79074,$79075,$79076,$79077,$79078,$79079,$79080,$79081,$79082,$79083,$79084,$79085,$79086),(nextval($79087),$79088,$79089,$79090,$79091,$79092,$79093,$79094,$79095,$79096,$79097,$79098,$79099,$79100),(nextval($79101),$79102,$79103,$79104,$79105,$79106,$79107,$79108,$79109,$79110,$79111,$79112,$79113,$79114),(nextval($79115),$79116,$79117,$79118,$79119,$79120,$79121,$79122,$79123,$79124,$79125,$79126,$79127,$79128),(nextval($79129),$79130,$79131,$79132,$79133,$79134,$79135,$79136,$79137,$79138,$79139,$79140,$79141,$79142),(nextval($79143),$79144,$79145,$79146,$79147,$79148,$79149,$79150,$79151,$79152,$79153,$79154,$79155,$79156),(nextval($79157),$79158,$79159,$79160,$79161,$79162,$79163,$79164,$79165,$79166,$79167,$79168,$79169,$79170),(nextval($79171),$79172,$79173,$79174,$79175,$79176,$79177,$79178,$79179,$79180,$79181,$79182,$79183,$79184),(nextval($79185),$79186,$79187,$79188,$79189,$79190,$79191,$79192,$79193,$79194,$79195,$79196,$79197,$79198),(nextval($79199),$79200,$79201,$79202,$79203,$79204,$79205,$79206,$79207,$79208,$79209,$79210,$79211,$79212),(nextval($79213),$79214,$79215,$79216,$79217,$79218,$79219,$79220,$79221,$79222,$79223,$79224,$79225,$79226),(nextval($79227),$79228,$79229,$79230,$79231,$79232,$79233,$79234,$79235,$79236,$79237,$79238,$79239,$79240),(nextval($79241),$79242,$79243,$79244,$79245,$79246,$79247,$79248,$79249,$79250,$79251,$79252,$79253,$79254),(nextval($79255),$79256,$79257,$79258,$79259,$79260,$79261,$79262,$79263,$79264,$79265,$79266,$79267,$79268),(nextval($79269),$79270,$79271,$79272,$79273,$79274,$79275,$79276,$79277,$79278,$79279,$79280,$79281,$79282),(nextval($79283),$79284,$79285,$79286,$79287,$79288,$79289,$79290,$79291,$79292,$79293,$79294,$79295,$79296),(nextval($79297),$79298,$79299,$79300,$79301,$79302,$79303,$79304,$79305,$79306,$79307,$79308,$79309,$79310),(nextval($79311),$79312,$79313,$79314,$79315,$79316,$79317,$79318,$79319,$79320,$79321,$79322,$79323,$79324),(nextval($79325),$79326,$79327,$79328,$79329,$79330,$79331,$79332,$79333,$79334,$79335,$79336,$79337,$79338),(nextval($79339),$79340,$79341,$79342,$79343,$79344,$79345,$79346,$79347,$79348,$79349,$79350,$79351,$79352),(nextval($79353),$79354,$79355,$79356,$79357,$79358,$79359,$79360,$79361,$79362,$79363,$79364,$79365,$79366),(nextval($79367),$79368,$79369,$79370,$79371,$79372,$79373,$79374,$79375,$79376,$79377,$79378,$79379,$79380),(nextval($79381),$79382,$79383,$79384,$79385,$79386,$79387,$79388,$79389,$79390,$79391,$79392,$79393,$79394),(nextval($79395),$79396,$79397,$79398,$79399,$79400,$79401,$79402,$79403,$79404,$79405,$79406,$79407,$79408),(nextval($79409),$79410,$79411,$79412,$79413,$79414,$79415,$79416,$79417,$79418,$79419,$79420,$79421,$79422),(nextval($79423),$79424,$79425,$79426,$79427,$79428,$79429,$79430,$79431,$79432,$79433,$79434,$79435,$79436),(nextval($79437),$79438,$79439,$79440,$79441,$79442,$79443,$79444,$79445,$79446,$79447,$79448,$79449,$79450),(nextval($79451),$79452,$79453,$79454,$79455,$79456,$79457,$79458,$79459,$79460,$79461,$79462,$79463,$79464),(nextval($79465),$79466,$79467,$79468,$79469,$79470,$79471,$79472,$79473,$79474,$79475,$79476,$79477,$79478),(nextval($79479),$79480,$79481,$79482,$79483,$79484,$79485,$79486,$79487,$79488,$79489,$79490,$79491,$79492),(nextval($79493),$79494,$79495,$79496,$79497,$79498,$79499,$79500,$79501,$79502,$79503,$79504,$79505,$79506),(nextval($79507),$79508,$79509,$79510,$79511,$79512,$79513,$79514,$79515,$79516,$79517,$79518,$79519,$79520),(nextval($79521),$79522,$79523,$79524,$79525,$79526,$79527,$79528,$79529,$79530,$79531,$79532,$79533,$79534),(nextval($79535),$79536,$79537,$79538,$79539,$79540,$79541,$79542,$79543,$79544,$79545,$79546,$79547,$79548),(nextval($79549),$79550,$79551,$79552,$79553,$79554,$79555,$79556,$79557,$79558,$79559,$79560,$79561,$79562),(nextval($79563),$79564,$79565,$79566,$79567,$79568,$79569,$79570,$79571,$79572,$79573,$79574,$79575,$79576),(nextval($79577),$79578,$79579,$79580,$79581,$79582,$79583,$79584,$79585,$79586,$79587,$79588,$79589,$79590),(nextval($79591),$79592,$79593,$79594,$79595,$79596,$79597,$79598,$79599,$79600,$79601,$79602,$79603,$79604),(nextval($79605),$79606,$79607,$79608,$79609,$79610,$79611,$79612,$79613,$79614,$79615,$79616,$79617,$79618),(nextval($79619),$79620,$79621,$79622,$79623,$79624,$79625,$79626,$79627,$79628,$79629,$79630,$79631,$79632),(nextval($79633),$79634,$79635,$79636,$79637,$79638,$79639,$79640,$79641,$79642,$79643,$79644,$79645,$79646),(nextval($79647),$79648,$79649,$79650,$79651,$79652,$79653,$79654,$79655,$79656,$79657,$79658,$79659,$79660),(nextval($79661),$79662,$79663,$79664,$79665,$79666,$79667,$79668,$79669,$79670,$79671,$79672,$79673,$79674),(nextval($79675),$79676,$79677,$79678,$79679,$79680,$79681,$79682,$79683,$79684,$79685,$79686,$79687,$79688),(nextval($79689),$79690,$79691,$79692,$79693,$79694,$79695,$79696,$79697,$79698,$79699,$79700,$79701,$79702),(nextval($79703),$79704,$79705,$79706,$79707,$79708,$79709,$79710,$79711,$79712,$79713,$79714,$79715,$79716),(nextval($79717),$79718,$79719,$79720,$79721,$79722,$79723,$79724,$79725,$79726,$79727,$79728,$79729,$79730),(nextval($79731),$79732,$79733,$79734,$79735,$79736,$79737,$79738,$79739,$79740,$79741,$79742,$79743,$79744),(nextval($79745),$79746,$79747,$79748,$79749,$79750,$79751,$79752,$79753,$79754,$79755,$79756,$79757,$79758),(nextval($79759),$79760,$79761,$79762,$79763,$79764,$79765,$79766,$79767,$79768,$79769,$79770,$79771,$79772),(nextval($79773),$79774,$79775,$79776,$79777,$79778,$79779,$79780,$79781,$79782,$79783,$79784,$79785,$79786),(nextval($79787),$79788,$79789,$79790,$79791,$79792,$79793,$79794,$79795,$79796,$79797,$79798,$79799,$79800),(nextval($79801),$79802,$79803,$79804,$79805,$79806,$79807,$79808,$79809,$79810,$79811,$79812,$79813,$79814),(nextval($79815),$79816,$79817,$79818,$79819,$79820,$79821,$79822,$79823,$79824,$79825,$79826,$79827,$79828),(nextval($79829),$79830,$79831,$79832,$79833,$79834,$79835,$79836,$79837,$79838,$79839,$79840,$79841,$79842),(nextval($79843),$79844,$79845,$79846,$79847,$79848,$79849,$79850,$79851,$79852,$79853,$79854,$79855,$79856),(nextval($79857),$79858,$79859,$79860,$79861,$79862,$79863,$79864,$79865,$79866,$79867,$79868,$79869,$79870),(nextval($79871),$79872,$79873,$79874,$79875,$79876,$79877,$79878,$79879,$79880,$79881,$79882,$79883,$79884),(nextval($79885),$79886,$79887,$79888,$79889,$79890,$79891,$79892,$79893,$79894,$79895,$79896,$79897,$79898),(nextval($79899),$79900,$79901,$79902,$79903,$79904,$79905,$79906,$79907,$79908,$79909,$79910,$79911,$79912),(nextval($79913),$79914,$79915,$79916,$79917,$79918,$79919,$79920,$79921,$79922,$79923,$79924,$79925,$79926),(nextval($79927),$79928,$79929,$79930,$79931,$79932,$79933,$79934,$79935,$79936,$79937,$79938,$79939,$79940),(nextval($79941),$79942,$79943,$79944,$79945,$79946,$79947,$79948,$79949,$79950,$79951,$79952,$79953,$79954),(nextval($79955),$79956,$79957,$79958,$79959,$79960,$79961,$79962,$79963,$79964,$79965,$79966,$79967,$79968),(nextval($79969),$79970,$79971,$79972,$79973,$79974,$79975,$79976,$79977,$79978,$79979,$79980,$79981,$79982),(nextval($79983),$79984,$79985,$79986,$79987,$79988,$79989,$79990,$79991,$79992,$79993,$79994,$79995,$79996),(nextval($79997),$79998,$79999,$80000,$80001,$80002,$80003,$80004,$80005,$80006,$80007,$80008,$80009,$80010),(nextval($80011),$80012,$80013,$80014,$80015,$80016,$80017,$80018,$80019,$80020,$80021,$80022,$80023,$80024),(nextval($80025),$80026,$80027,$80028,$80029,$80030,$80031,$80032,$80033,$80034,$80035,$80036,$80037,$80038),(nextval($80039),$80040,$80041,$80042,$80043,$80044,$80045,$80046,$80047,$80048,$80049,$80050,$80051,$80052),(nextval($80053),$80054,$80055,$80056,$80057,$80058,$80059,$80060,$80061,$80062,$80063,$80064,$80065,$80066),(nextval($80067),$80068,$80069,$80070,$80071,$80072,$80073,$80074,$80075,$80076,$80077,$80078,$80079,$80080),(nextval($80081),$80082,$80083,$80084,$80085,$80086,$80087,$80088,$80089,$80090,$80091,$80092,$80093,$80094),(nextval($80095),$80096,$80097,$80098,$80099,$80100,$80101,$80102,$80103,$80104,$80105,$80106,$80107,$80108),(nextval($80109),$80110,$80111,$80112,$80113,$80114,$80115,$80116,$80117,$80118,$80119,$80120,$80121,$80122),(nextval($80123),$80124,$80125,$80126,$80127,$80128,$80129,$80130,$80131,$80132,$80133,$80134,$80135,$80136),(nextval($80137),$80138,$80139,$80140,$80141,$80142,$80143,$80144,$80145,$80146,$80147,$80148,$80149,$80150),(nextval($80151),$80152,$80153,$80154,$80155,$80156,$80157,$80158,$80159,$80160,$80161,$80162,$80163,$80164),(nextval($80165),$80166,$80167,$80168,$80169,$80170,$80171,$80172,$80173,$80174,$80175,$80176,$80177,$80178),(nextval($80179),$80180,$80181,$80182,$80183,$80184,$80185,$80186,$80187,$80188,$80189,$80190,$80191,$80192),(nextval($80193),$80194,$80195,$80196,$80197,$80198,$80199,$80200,$80201,$80202,$80203,$80204,$80205,$80206),(nextval($80207),$80208,$80209,$80210,$80211,$80212,$80213,$80214,$80215,$80216,$80217,$80218,$80219,$80220),(nextval($80221),$80222,$80223,$80224,$80225,$80226,$80227,$80228,$80229,$80230,$80231,$80232,$80233,$80234),(nextval($80235),$80236,$80237,$80238,$80239,$80240,$80241,$80242,$80243,$80244,$80245,$80246,$80247,$80248),(nextval($80249),$80250,$80251,$80252,$80253,$80254,$80255,$80256,$80257,$80258,$80259,$80260,$80261,$80262),(nextval($80263),$80264,$80265,$80266,$80267,$80268,$80269,$80270,$80271,$80272,$80273,$80274,$80275,$80276),(nextval($80277),$80278,$80279,$80280,$80281,$80282,$80283,$80284,$80285,$80286,$80287,$80288,$80289,$80290),(nextval($80291),$80292,$80293,$80294,$80295,$80296,$80297,$80298,$80299,$80300,$80301,$80302,$80303,$80304),(nextval($80305),$80306,$80307,$80308,$80309,$80310,$80311,$80312,$80313,$80314,$80315,$80316,$80317,$80318),(nextval($80319),$80320,$80321,$80322,$80323,$80324,$80325,$80326,$80327,$80328,$80329,$80330,$80331,$80332),(nextval($80333),$80334,$80335,$80336,$80337,$80338,$80339,$80340,$80341,$80342,$80343,$80344,$80345,$80346),(nextval($80347),$80348,$80349,$80350,$80351,$80352,$80353,$80354,$80355,$80356,$80357,$80358,$80359,$80360),(nextval($80361),$80362,$80363,$80364,$80365,$80366,$80367,$80368,$80369,$80370,$80371,$80372,$80373,$80374),(nextval($80375),$80376,$80377,$80378,$80379,$80380,$80381,$80382,$80383,$80384,$80385,$80386,$80387,$80388),(nextval($80389),$80390,$80391,$80392,$80393,$80394,$80395,$80396,$80397,$80398,$80399,$80400,$80401,$80402),(nextval($80403),$80404,$80405,$80406,$80407,$80408,$80409,$80410,$80411,$80412,$80413,$80414,$80415,$80416),(nextval($80417),$80418,$80419,$80420,$80421,$80422,$80423,$80424,$80425,$80426,$80427,$80428,$80429,$80430),(nextval($80431),$80432,$80433,$80434,$80435,$80436,$80437,$80438,$80439,$80440,$80441,$80442,$80443,$80444),(nextval($80445),$80446,$80447,$80448,$80449,$80450,$80451,$80452,$80453,$80454,$80455,$80456,$80457,$80458),(nextval($80459),$80460,$80461,$80462,$80463,$80464,$80465,$80466,$80467,$80468,$80469,$80470,$80471,$80472),(nextval($80473),$80474,$80475,$80476,$80477,$80478,$80479,$80480,$80481,$80482,$80483,$80484,$80485,$80486),(nextval($80487),$80488,$80489,$80490,$80491,$80492,$80493,$80494,$80495,$80496,$80497,$80498,$80499,$80500),(nextval($80501),$80502,$80503,$80504,$80505,$80506,$80507,$80508,$80509,$80510,$80511,$80512,$80513,$80514),(nextval($80515),$80516,$80517,$80518,$80519,$80520,$80521,$80522,$80523,$80524,$80525,$80526,$80527,$80528),(nextval($80529),$80530,$80531,$80532,$80533,$80534,$80535,$80536,$80537,$80538,$80539,$80540,$80541,$80542),(nextval($80543),$80544,$80545,$80546,$80547,$80548,$80549,$80550,$80551,$80552,$80553,$80554,$80555,$80556),(nextval($80557),$80558,$80559,$80560,$80561,$80562,$80563,$80564,$80565,$80566,$80567,$80568,$80569,$80570),(nextval($80571),$80572,$80573,$80574,$80575,$80576,$80577,$80578,$80579,$80580,$80581,$80582,$80583,$80584),(nextval($80585),$80586,$80587,$80588,$80589,$80590,$80591,$80592,$80593,$80594,$80595,$80596,$80597,$80598),(nextval($80599),$80600,$80601,$80602,$80603,$80604,$80605,$80606,$80607,$80608,$80609,$80610,$80611,$80612),(nextval($80613),$80614,$80615,$80616,$80617,$80618,$80619,$80620,$80621,$80622,$80623,$80624,$80625,$80626),(nextval($80627),$80628,$80629,$80630,$80631,$80632,$80633,$80634,$80635,$80636,$80637,$80638,$80639,$80640),(nextval($80641),$80642,$80643,$80644,$80645,$80646,$80647,$80648,$80649,$80650,$80651,$80652,$80653,$80654),(nextval($80655),$80656,$80657,$80658,$80659,$80660,$80661,$80662,$80663,$80664,$80665,$80666,$80667,$80668),(nextval($80669),$80670,$80671,$80672,$80673,$80674,$80675,$80676,$80677,$80678,$80679,$80680,$80681,$80682),(nextval($80683),$80684,$80685,$80686,$80687,$80688,$80689,$80690,$80691,$80692,$80693,$80694,$80695,$80696),(nextval($80697),$80698,$80699,$80700,$80701,$80702,$80703,$80704,$80705,$80706,$80707,$80708,$80709,$80710),(nextval($80711),$80712,$80713,$80714,$80715,$80716,$80717,$80718,$80719,$80720,$80721,$80722,$80723,$80724),(nextval($80725),$80726,$80727,$80728,$80729,$80730,$80731,$80732,$80733,$80734,$80735,$80736,$80737,$80738),(nextval($80739),$80740,$80741,$80742,$80743,$80744,$80745,$80746,$80747,$80748,$80749,$80750,$80751,$80752),(nextval($80753),$80754,$80755,$80756,$80757,$80758,$80759,$80760,$80761,$80762,$80763,$80764,$80765,$80766),(nextval($80767),$80768,$80769,$80770,$80771,$80772,$80773,$80774,$80775,$80776,$80777,$80778,$80779,$80780),(nextval($80781),$80782,$80783,$80784,$80785,$80786,$80787,$80788,$80789,$80790,$80791,$80792,$80793,$80794),(nextval($80795),$80796,$80797,$80798,$80799,$80800,$80801,$80802,$80803,$80804,$80805,$80806,$80807,$80808),(nextval($80809),$80810,$80811,$80812,$80813,$80814,$80815,$80816,$80817,$80818,$80819,$80820,$80821,$80822),(nextval($80823),$80824,$80825,$80826,$80827,$80828,$80829,$80830,$80831,$80832,$80833,$80834,$80835,$80836),(nextval($80837),$80838,$80839,$80840,$80841,$80842,$80843,$80844,$80845,$80846,$80847,$80848,$80849,$80850),(nextval($80851),$80852,$80853,$80854,$80855,$80856,$80857,$80858,$80859,$80860,$80861,$80862,$80863,$80864),(nextval($80865),$80866,$80867,$80868,$80869,$80870,$80871,$80872,$80873,$80874,$80875,$80876,$80877,$80878),(nextval($80879),$80880,$80881,$80882,$80883,$80884,$80885,$80886,$80887,$80888,$80889,$80890,$80891,$80892),(nextval($80893),$80894,$80895,$80896,$80897,$80898,$80899,$80900,$80901,$80902,$80903,$80904,$80905,$80906),(nextval($80907),$80908,$80909,$80910,$80911,$80912,$80913,$80914,$80915,$80916,$80917,$80918,$80919,$80920),(nextval($80921),$80922,$80923,$80924,$80925,$80926,$80927,$80928,$80929,$80930,$80931,$80932,$80933,$80934),(nextval($80935),$80936,$80937,$80938,$80939,$80940,$80941,$80942,$80943,$80944,$80945,$80946,$80947,$80948),(nextval($80949),$80950,$80951,$80952,$80953,$80954,$80955,$80956,$80957,$80958,$80959,$80960,$80961,$80962),(nextval($80963),$80964,$80965,$80966,$80967,$80968,$80969,$80970,$80971,$80972,$80973,$80974,$80975,$80976),(nextval($80977),$80978,$80979,$80980,$80981,$80982,$80983,$80984,$80985,$80986,$80987,$80988,$80989,$80990),(nextval($80991),$80992,$80993,$80994,$80995,$80996,$80997,$80998,$80999,$81000,$81001,$81002,$81003,$81004),(nextval($81005),$81006,$81007,$81008,$81009,$81010,$81011,$81012,$81013,$81014,$81015,$81016,$81017,$81018),(nextval($81019),$81020,$81021,$81022,$81023,$81024,$81025,$81026,$81027,$81028,$81029,$81030,$81031,$81032),(nextval($81033),$81034,$81035,$81036,$81037,$81038,$81039,$81040,$81041,$81042,$81043,$81044,$81045,$81046),(nextval($81047),$81048,$81049,$81050,$81051,$81052,$81053,$81054,$81055,$81056,$81057,$81058,$81059,$81060),(nextval($81061),$81062,$81063,$81064,$81065,$81066,$81067,$81068,$81069,$81070,$81071,$81072,$81073,$81074),(nextval($81075),$81076,$81077,$81078,$81079,$81080,$81081,$81082,$81083,$81084,$81085,$81086,$81087,$81088),(nextval($81089),$81090,$81091,$81092,$81093,$81094,$81095,$81096,$81097,$81098,$81099,$81100,$81101,$81102),(nextval($81103),$81104,$81105,$81106,$81107,$81108,$81109,$81110,$81111,$81112,$81113,$81114,$81115,$81116),(nextval($81117),$81118,$81119,$81120,$81121,$81122,$81123,$81124,$81125,$81126,$81127,$81128,$81129,$81130),(nextval($81131),$81132,$81133,$81134,$81135,$81136,$81137,$81138,$81139,$81140,$81141,$81142,$81143,$81144),(nextval($81145),$81146,$81147,$81148,$81149,$81150,$81151,$81152,$81153,$81154,$81155,$81156,$81157,$81158),(nextval($81159),$81160,$81161,$81162,$81163,$81164,$81165,$81166,$81167,$81168,$81169,$81170,$81171,$81172),(nextval($81173),$81174,$81175,$81176,$81177,$81178,$81179,$81180,$81181,$81182,$81183,$81184,$81185,$81186),(nextval($81187),$81188,$81189,$81190,$81191,$81192,$81193,$81194,$81195,$81196,$81197,$81198,$81199,$81200),(nextval($81201),$81202,$81203,$81204,$81205,$81206,$81207,$81208,$81209,$81210,$81211,$81212,$81213,$81214),(nextval($81215),$81216,$81217,$81218,$81219,$81220,$81221,$81222,$81223,$81224,$81225,$81226,$81227,$81228),(nextval($81229),$81230,$81231,$81232,$81233,$81234,$81235,$81236,$81237,$81238,$81239,$81240,$81241,$81242),(nextval($81243),$81244,$81245,$81246,$81247,$81248,$81249,$81250,$81251,$81252,$81253,$81254,$81255,$81256),(nextval($81257),$81258,$81259,$81260,$81261,$81262,$81263,$81264,$81265,$81266,$81267,$81268,$81269,$81270),(nextval($81271),$81272,$81273,$81274,$81275,$81276,$81277,$81278,$81279,$81280,$81281,$81282,$81283,$81284),(nextval($81285),$81286,$81287,$81288,$81289,$81290,$81291,$81292,$81293,$81294,$81295,$81296,$81297,$81298),(nextval($81299),$81300,$81301,$81302,$81303,$81304,$81305,$81306,$81307,$81308,$81309,$81310,$81311,$81312),(nextval($81313),$81314,$81315,$81316,$81317,$81318,$81319,$81320,$81321,$81322,$81323,$81324,$81325,$81326),(nextval($81327),$81328,$81329,$81330,$81331,$81332,$81333,$81334,$81335,$81336,$81337,$81338,$81339,$81340),(nextval($81341),$81342,$81343,$81344,$81345,$81346,$81347,$81348,$81349,$81350,$81351,$81352,$81353,$81354),(nextval($81355),$81356,$81357,$81358,$81359,$81360,$81361,$81362,$81363,$81364,$81365,$81366,$81367,$81368),(nextval($81369),$81370,$81371,$81372,$81373,$81374,$81375,$81376,$81377,$81378,$81379,$81380,$81381,$81382),(nextval($81383),$81384,$81385,$81386,$81387,$81388,$81389,$81390,$81391,$81392,$81393,$81394,$81395,$81396),(nextval($81397),$81398,$81399,$81400,$81401,$81402,$81403,$81404,$81405,$81406,$81407,$81408,$81409,$81410),(nextval($81411),$81412,$81413,$81414,$81415,$81416,$81417,$81418,$81419,$81420,$81421,$81422,$81423,$81424),(nextval($81425),$81426,$81427,$81428,$81429,$81430,$81431,$81432,$81433,$81434,$81435,$81436,$81437,$81438),(nextval($81439),$81440,$81441,$81442,$81443,$81444,$81445,$81446,$81447,$81448,$81449,$81450,$81451,$81452),(nextval($81453),$81454,$81455,$81456,$81457,$81458,$81459,$81460,$81461,$81462,$81463,$81464,$81465,$81466),(nextval($81467),$81468,$81469,$81470,$81471,$81472,$81473,$81474,$81475,$81476,$81477,$81478,$81479,$81480),(nextval($81481),$81482,$81483,$81484,$81485,$81486,$81487,$81488,$81489,$81490,$81491,$81492,$81493,$81494),(nextval($81495),$81496,$81497,$81498,$81499,$81500,$81501,$81502,$81503,$81504,$81505,$81506,$81507,$81508),(nextval($81509),$81510,$81511,$81512,$81513,$81514,$81515,$81516,$81517,$81518,$81519,$81520,$81521,$81522),(nextval($81523),$81524,$81525,$81526,$81527,$81528,$81529,$81530,$81531,$81532,$81533,$81534,$81535,$81536),(nextval($81537),$81538,$81539,$81540,$81541,$81542,$81543,$81544,$81545,$81546,$81547,$81548,$81549,$81550),(nextval($81551),$81552,$81553,$81554,$81555,$81556,$81557,$81558,$81559,$81560,$81561,$81562,$81563,$81564),(nextval($81565),$81566,$81567,$81568,$81569,$81570,$81571,$81572,$81573,$81574,$81575,$81576,$81577,$81578),(nextval($81579),$81580,$81581,$81582,$81583,$81584,$81585,$81586,$81587,$81588,$81589,$81590,$81591,$81592),(nextval($81593),$81594,$81595,$81596,$81597,$81598,$81599,$81600,$81601,$81602,$81603,$81604,$81605,$81606),(nextval($81607),$81608,$81609,$81610,$81611,$81612,$81613,$81614,$81615,$81616,$81617,$81618,$81619,$81620),(nextval($81621),$81622,$81623,$81624,$81625,$81626,$81627,$81628,$81629,$81630,$81631,$81632,$81633,$81634),(nextval($81635),$81636,$81637,$81638,$81639,$81640,$81641,$81642,$81643,$81644,$81645,$81646,$81647,$81648),(nextval($81649),$81650,$81651,$81652,$81653,$81654,$81655,$81656,$81657,$81658,$81659,$81660,$81661,$81662),(nextval($81663),$81664,$81665,$81666,$81667,$81668,$81669,$81670,$81671,$81672,$81673,$81674,$81675,$81676),(nextval($81677),$81678,$81679,$81680,$81681,$81682,$81683,$81684,$81685,$81686,$81687,$81688,$81689,$81690),(nextval($81691),$81692,$81693,$81694,$81695,$81696,$81697,$81698,$81699,$81700,$81701,$81702,$81703,$81704),(nextval($81705),$81706,$81707,$81708,$81709,$81710,$81711,$81712,$81713,$81714,$81715,$81716,$81717,$81718),(nextval($81719),$81720,$81721,$81722,$81723,$81724,$81725,$81726,$81727,$81728,$81729,$81730,$81731,$81732),(nextval($81733),$81734,$81735,$81736,$81737,$81738,$81739,$81740,$81741,$81742,$81743,$81744,$81745,$81746),(nextval($81747),$81748,$81749,$81750,$81751,$81752,$81753,$81754,$81755,$81756,$81757,$81758,$81759,$81760),(nextval($81761),$81762,$81763,$81764,$81765,$81766,$81767,$81768,$81769,$81770,$81771,$81772,$81773,$81774),(nextval($81775),$81776,$81777,$81778,$81779,$81780,$81781,$81782,$81783,$81784,$81785,$81786,$81787,$81788),(nextval($81789),$81790,$81791,$81792,$81793,$81794,$81795,$81796,$81797,$81798,$81799,$81800,$81801,$81802),(nextval($81803),$81804,$81805,$81806,$81807,$81808,$81809,$81810,$81811,$81812,$81813,$81814,$81815,$81816),(nextval($81817),$81818,$81819,$81820,$81821,$81822,$81823,$81824,$81825,$81826,$81827,$81828,$81829,$81830),(nextval($81831),$81832,$81833,$81834,$81835,$81836,$81837,$81838,$81839,$81840,$81841,$81842,$81843,$81844),(nextval($81845),$81846,$81847,$81848,$81849,$81850,$81851,$81852,$81853,$81854,$81855,$81856,$81857,$81858),(nextval($81859),$81860,$81861,$81862,$81863,$81864,$81865,$81866,$81867,$81868,$81869,$81870,$81871,$81872),(nextval($81873),$81874,$81875,$81876,$81877,$81878,$81879,$81880,$81881,$81882,$81883,$81884,$81885,$81886),(nextval($81887),$81888,$81889,$81890,$81891,$81892,$81893,$81894,$81895,$81896,$81897,$81898,$81899,$81900),(nextval($81901),$81902,$81903,$81904,$81905,$81906,$81907,$81908,$81909,$81910,$81911,$81912,$81913,$81914),(nextval($81915),$81916,$81917,$81918,$81919,$81920,$81921,$81922,$81923,$81924,$81925,$81926,$81927,$81928),(nextval($81929),$81930,$81931,$81932,$81933,$81934,$81935,$81936,$81937,$81938,$81939,$81940,$81941,$81942),(nextval($81943),$81944,$81945,$81946,$81947,$81948,$81949,$81950,$81951,$81952,$81953,$81954,$81955,$81956),(nextval($81957),$81958,$81959,$81960,$81961,$81962,$81963,$81964,$81965,$81966,$81967,$81968,$81969,$81970),(nextval($81971),$81972,$81973,$81974,$81975,$81976,$81977,$81978,$81979,$81980,$81981,$81982,$81983,$81984),(nextval($81985),$81986,$81987,$81988,$81989,$81990,$81991,$81992,$81993,$81994,$81995,$81996,$81997,$81998),(nextval($81999),$82000,$82001,$82002,$82003,$82004,$82005,$82006,$82007,$82008,$82009,$82010,$82011,$82012),(nextval($82013),$82014,$82015,$82016,$82017,$82018,$82019,$82020,$82021,$82022,$82023,$82024,$82025,$82026),(nextval($82027),$82028,$82029,$82030,$82031,$82032,$82033,$82034,$82035,$82036,$82037,$82038,$82039,$82040),(nextval($82041),$82042,$82043,$82044,$82045,$82046,$82047,$82048,$82049,$82050,$82051,$82052,$82053,$82054),(nextval($82055),$82056,$82057,$82058,$82059,$82060,$82061,$82062,$82063,$82064,$82065,$82066,$82067,$82068),(nextval($82069),$82070,$82071,$82072,$82073,$82074,$82075,$82076,$82077,$82078,$82079,$82080,$82081,$82082),(nextval($82083),$82084,$82085,$82086,$82087,$82088,$82089,$82090,$82091,$82092,$82093,$82094,$82095,$82096),(nextval($82097),$82098,$82099,$82100,$82101,$82102,$82103,$82104,$82105,$82106,$82107,$82108,$82109,$82110),(nextval($82111),$82112,$82113,$82114,$82115,$82116,$82117,$82118,$82119,$82120,$82121,$82122,$82123,$82124),(nextval($82125),$82126,$82127,$82128,$82129,$82130,$82131,$82132,$82133,$82134,$82135,$82136,$82137,$82138),(nextval($82139),$82140,$82141,$82142,$82143,$82144,$82145,$82146,$82147,$82148,$82149,$82150,$82151,$82152),(nextval($82153),$82154,$82155,$82156,$82157,$82158,$82159,$82160,$82161,$82162,$82163,$82164,$82165,$82166),(nextval($82167),$82168,$82169,$82170,$82171,$82172,$82173,$82174,$82175,$82176,$82177,$82178,$82179,$82180),(nextval($82181),$82182,$82183,$82184,$82185,$82186,$82187,$82188,$82189,$82190,$82191,$82192,$82193,$82194),(nextval($82195),$82196,$82197,$82198,$82199,$82200,$82201,$82202,$82203,$82204,$82205,$82206,$82207,$82208),(nextval($82209),$82210,$82211,$82212,$82213,$82214,$82215,$82216,$82217,$82218,$82219,$82220,$82221,$82222),(nextval($82223),$82224,$82225,$82226,$82227,$82228,$82229,$82230,$82231,$82232,$82233,$82234,$82235,$82236),(nextval($82237),$82238,$82239,$82240,$82241,$82242,$82243,$82244,$82245,$82246,$82247,$82248,$82249,$82250),(nextval($82251),$82252,$82253,$82254,$82255,$82256,$82257,$82258,$82259,$82260,$82261,$82262,$82263,$82264),(nextval($82265),$82266,$82267,$82268,$82269,$82270,$82271,$82272,$82273,$82274,$82275,$82276,$82277,$82278),(nextval($82279),$82280,$82281,$82282,$82283,$82284,$82285,$82286,$82287,$82288,$82289,$82290,$82291,$82292),(nextval($82293),$82294,$82295,$82296,$82297,$82298,$82299,$82300,$82301,$82302,$82303,$82304,$82305,$82306),(nextval($82307),$82308,$82309,$82310,$82311,$82312,$82313,$82314,$82315,$82316,$82317,$82318,$82319,$82320),(nextval($82321),$82322,$82323,$82324,$82325,$82326,$82327,$82328,$82329,$82330,$82331,$82332,$82333,$82334),(nextval($82335),$82336,$82337,$82338,$82339,$82340,$82341,$82342,$82343,$82344,$82345,$82346,$82347,$82348),(nextval($82349),$82350,$82351,$82352,$82353,$82354,$82355,$82356,$82357,$82358,$82359,$82360,$82361,$82362),(nextval($82363),$82364,$82365,$82366,$82367,$82368,$82369,$82370,$82371,$82372,$82373,$82374,$82375,$82376),(nextval($82377),$82378,$82379,$82380,$82381,$82382,$82383,$82384,$82385,$82386,$82387,$82388,$82389,$82390),(nextval($82391),$82392,$82393,$82394,$82395,$82396,$82397,$82398,$82399,$82400,$82401,$82402,$82403,$82404),(nextval($82405),$82406,$82407,$82408,$82409,$82410,$82411,$82412,$82413,$82414,$82415,$82416,$82417,$82418),(nextval($82419),$82420,$82421,$82422,$82423,$82424,$82425,$82426,$82427,$82428,$82429,$82430,$82431,$82432),(nextval($82433),$82434,$82435,$82436,$82437,$82438,$82439,$82440,$82441,$82442,$82443,$82444,$82445,$82446),(nextval($82447),$82448,$82449,$82450,$82451,$82452,$82453,$82454,$82455,$82456,$82457,$82458,$82459,$82460),(nextval($82461),$82462,$82463,$82464,$82465,$82466,$82467,$82468,$82469,$82470,$82471,$82472,$82473,$82474),(nextval($82475),$82476,$82477,$82478,$82479,$82480,$82481,$82482,$82483,$82484,$82485,$82486,$82487,$82488),(nextval($82489),$82490,$82491,$82492,$82493,$82494,$82495,$82496,$82497,$82498,$82499,$82500,$82501,$82502),(nextval($82503),$82504,$82505,$82506,$82507,$82508,$82509,$82510,$82511,$82512,$82513,$82514,$82515,$82516),(nextval($82517),$82518,$82519,$82520,$82521,$82522,$82523,$82524,$82525,$82526,$82527,$82528,$82529,$82530),(nextval($82531),$82532,$82533,$82534,$82535,$82536,$82537,$82538,$82539,$82540,$82541,$82542,$82543,$82544),(nextval($82545),$82546,$82547,$82548,$82549,$82550,$82551,$82552,$82553,$82554,$82555,$82556,$82557,$82558),(nextval($82559),$82560,$82561,$82562,$82563,$82564,$82565,$82566,$82567,$82568,$82569,$82570,$82571,$82572),(nextval($82573),$82574,$82575,$82576,$82577,$82578,$82579,$82580,$82581,$82582,$82583,$82584,$82585,$82586),(nextval($82587),$82588,$82589,$82590,$82591,$82592,$82593,$82594,$82595,$82596,$82597,$82598,$82599,$82600),(nextval($82601),$82602,$82603,$82604,$82605,$82606,$82607,$82608,$82609,$82610,$82611,$82612,$82613,$82614),(nextval($82615),$82616,$82617,$82618,$82619,$82620,$82621,$82622,$82623,$82624,$82625,$82626,$82627,$82628),(nextval($82629),$82630,$82631,$82632,$82633,$82634,$82635,$82636,$82637,$82638,$82639,$82640,$82641,$82642),(nextval($82643),$82644,$82645,$82646,$82647,$82648,$82649,$82650,$82651,$82652,$82653,$82654,$82655,$82656),(nextval($82657),$82658,$82659,$82660,$82661,$82662,$82663,$82664,$82665,$82666,$82667,$82668,$82669,$82670),(nextval($82671),$82672,$82673,$82674,$82675,$82676,$82677,$82678,$82679,$82680,$82681,$82682,$82683,$82684),(nextval($82685),$82686,$82687,$82688,$82689,$82690,$82691,$82692,$82693,$82694,$82695,$82696,$82697,$82698),(nextval($82699),$82700,$82701,$82702,$82703,$82704,$82705,$82706,$82707,$82708,$82709,$82710,$82711,$82712),(nextval($82713),$82714,$82715,$82716,$82717,$82718,$82719,$82720,$82721,$82722,$82723,$82724,$82725,$82726),(nextval($82727),$82728,$82729,$82730,$82731,$82732,$82733,$82734,$82735,$82736,$82737,$82738,$82739,$82740),(nextval($82741),$82742,$82743,$82744,$82745,$82746,$82747,$82748,$82749,$82750,$82751,$82752,$82753,$82754),(nextval($82755),$82756,$82757,$82758,$82759,$82760,$82761,$82762,$82763,$82764,$82765,$82766,$82767,$82768),(nextval($82769),$82770,$82771,$82772,$82773,$82774,$82775,$82776,$82777,$82778,$82779,$82780,$82781,$82782),(nextval($82783),$82784,$82785,$82786,$82787,$82788,$82789,$82790,$82791,$82792,$82793,$82794,$82795,$82796),(nextval($82797),$82798,$82799,$82800,$82801,$82802,$82803,$82804,$82805,$82806,$82807,$82808,$82809,$82810),(nextval($82811),$82812,$82813,$82814,$82815,$82816,$82817,$82818,$82819,$82820,$82821,$82822,$82823,$82824),(nextval($82825),$82826,$82827,$82828,$82829,$82830,$82831,$82832,$82833,$82834,$82835,$82836,$82837,$82838),(nextval($82839),$82840,$82841,$82842,$82843,$82844,$82845,$82846,$82847,$82848,$82849,$82850,$82851,$82852),(nextval($82853),$82854,$82855,$82856,$82857,$82858,$82859,$82860,$82861,$82862,$82863,$82864,$82865,$82866),(nextval($82867),$82868,$82869,$82870,$82871,$82872,$82873,$82874,$82875,$82876,$82877,$82878,$82879,$82880),(nextval($82881),$82882,$82883,$82884,$82885,$82886,$82887,$82888,$82889,$82890,$82891,$82892,$82893,$82894),(nextval($82895),$82896,$82897,$82898,$82899,$82900,$82901,$82902,$82903,$82904,$82905,$82906,$82907,$82908),(nextval($82909),$82910,$82911,$82912,$82913,$82914,$82915,$82916,$82917,$82918,$82919,$82920,$82921,$82922),(nextval($82923),$82924,$82925,$82926,$82927,$82928,$82929,$82930,$82931,$82932,$82933,$82934,$82935,$82936),(nextval($82937),$82938,$82939,$82940,$82941,$82942,$82943,$82944,$82945,$82946,$82947,$82948,$82949,$82950),(nextval($82951),$82952,$82953,$82954,$82955,$82956,$82957,$82958,$82959,$82960,$82961,$82962,$82963,$82964),(nextval($82965),$82966,$82967,$82968,$82969,$82970,$82971,$82972,$82973,$82974,$82975,$82976,$82977,$82978),(nextval($82979),$82980,$82981,$82982,$82983,$82984,$82985,$82986,$82987,$82988,$82989,$82990,$82991,$82992),(nextval($82993),$82994,$82995,$82996,$82997,$82998,$82999,$83000,$83001,$83002,$83003,$83004,$83005,$83006),(nextval($83007),$83008,$83009,$83010,$83011,$83012,$83013,$83014,$83015,$83016,$83017,$83018,$83019,$83020),(nextval($83021),$83022,$83023,$83024,$83025,$83026,$83027,$83028,$83029,$83030,$83031,$83032,$83033,$83034),(nextval($83035),$83036,$83037,$83038,$83039,$83040,$83041,$83042,$83043,$83044,$83045,$83046,$83047,$83048),(nextval($83049),$83050,$83051,$83052,$83053,$83054,$83055,$83056,$83057,$83058,$83059,$83060,$83061,$83062),(nextval($83063),$83064,$83065,$83066,$83067,$83068,$83069,$83070,$83071,$83072,$83073,$83074,$83075,$83076),(nextval($83077),$83078,$83079,$83080,$83081,$83082,$83083,$83084,$83085,$83086,$83087,$83088,$83089,$83090),(nextval($83091),$83092,$83093,$83094,$83095,$83096,$83097,$83098,$83099,$83100,$83101,$83102,$83103,$83104),(nextval($83105),$83106,$83107,$83108,$83109,$83110,$83111,$83112,$83113,$83114,$83115,$83116,$83117,$83118),(nextval($83119),$83120,$83121,$83122,$83123,$83124,$83125,$83126,$83127,$83128,$83129,$83130,$83131,$83132),(nextval($83133),$83134,$83135,$83136,$83137,$83138,$83139,$83140,$83141,$83142,$83143,$83144,$83145,$83146),(nextval($83147),$83148,$83149,$83150,$83151,$83152,$83153,$83154,$83155,$83156,$83157,$83158,$83159,$83160),(nextval($83161),$83162,$83163,$83164,$83165,$83166,$83167,$83168,$83169,$83170,$83171,$83172,$83173,$83174),(nextval($83175),$83176,$83177,$83178,$83179,$83180,$83181,$83182,$83183,$83184,$83185,$83186,$83187,$83188),(nextval($83189),$83190,$83191,$83192,$83193,$83194,$83195,$83196,$83197,$83198,$83199,$83200,$83201,$83202),(nextval($83203),$83204,$83205,$83206,$83207,$83208,$83209,$83210,$83211,$83212,$83213,$83214,$83215,$83216),(nextval($83217),$83218,$83219,$83220,$83221,$83222,$83223,$83224,$83225,$83226,$83227,$83228,$83229,$83230),(nextval($83231),$83232,$83233,$83234,$83235,$83236,$83237,$83238,$83239,$83240,$83241,$83242,$83243,$83244),(nextval($83245),$83246,$83247,$83248,$83249,$83250,$83251,$83252,$83253,$83254,$83255,$83256,$83257,$83258),(nextval($83259),$83260,$83261,$83262,$83263,$83264,$83265,$83266,$83267,$83268,$83269,$83270,$83271,$83272),(nextval($83273),$83274,$83275,$83276,$83277,$83278,$83279,$83280,$83281,$83282,$83283,$83284,$83285,$83286),(nextval($83287),$83288,$83289,$83290,$83291,$83292,$83293,$83294,$83295,$83296,$83297,$83298,$83299,$83300),(nextval($83301),$83302,$83303,$83304,$83305,$83306,$83307,$83308,$83309,$83310,$83311,$83312,$83313,$83314),(nextval($83315),$83316,$83317,$83318,$83319,$83320,$83321,$83322,$83323,$83324,$83325,$83326,$83327,$83328),(nextval($83329),$83330,$83331,$83332,$83333,$83334,$83335,$83336,$83337,$83338,$83339,$83340,$83341,$83342),(nextval($83343),$83344,$83345,$83346,$83347,$83348,$83349,$83350,$83351,$83352,$83353,$83354,$83355,$83356),(nextval($83357),$83358,$83359,$83360,$83361,$83362,$83363,$83364,$83365,$83366,$83367,$83368,$83369,$83370),(nextval($83371),$83372,$83373,$83374,$83375,$83376,$83377,$83378,$83379,$83380,$83381,$83382,$83383,$83384),(nextval($83385),$83386,$83387,$83388,$83389,$83390,$83391,$83392,$83393,$83394,$83395,$83396,$83397,$83398),(nextval($83399),$83400,$83401,$83402,$83403,$83404,$83405,$83406,$83407,$83408,$83409,$83410,$83411,$83412),(nextval($83413),$83414,$83415,$83416,$83417,$83418,$83419,$83420,$83421,$83422,$83423,$83424,$83425,$83426),(nextval($83427),$83428,$83429,$83430,$83431,$83432,$83433,$83434,$83435,$83436,$83437,$83438,$83439,$83440),(nextval($83441),$83442,$83443,$83444,$83445,$83446,$83447,$83448,$83449,$83450,$83451,$83452,$83453,$83454),(nextval($83455),$83456,$83457,$83458,$83459,$83460,$83461,$83462,$83463,$83464,$83465,$83466,$83467,$83468),(nextval($83469),$83470,$83471,$83472,$83473,$83474,$83475,$83476,$83477,$83478,$83479,$83480,$83481,$83482),(nextval($83483),$83484,$83485,$83486,$83487,$83488,$83489,$83490,$83491,$83492,$83493,$83494,$83495,$83496),(nextval($83497),$83498,$83499,$83500,$83501,$83502,$83503,$83504,$83505,$83506,$83507,$83508,$83509,$83510),(nextval($83511),$83512,$83513,$83514,$83515,$83516,$83517,$83518,$83519,$83520,$83521,$83522,$83523,$83524),(nextval($83525),$83526,$83527,$83528,$83529,$83530,$83531,$83532,$83533,$83534,$83535,$83536,$83537,$83538),(nextval($83539),$83540,$83541,$83542,$83543,$83544,$83545,$83546,$83547,$83548,$83549,$83550,$83551,$83552),(nextval($83553),$83554,$83555,$83556,$83557,$83558,$83559,$83560,$83561,$83562,$83563,$83564,$83565,$83566),(nextval($83567),$83568,$83569,$83570,$83571,$83572,$83573,$83574,$83575,$83576,$83577,$83578,$83579,$83580),(nextval($83581),$83582,$83583,$83584,$83585,$83586,$83587,$83588,$83589,$83590,$83591,$83592,$83593,$83594),(nextval($83595),$83596,$83597,$83598,$83599,$83600,$83601,$83602,$83603,$83604,$83605,$83606,$83607,$83608),(nextval($83609),$83610,$83611,$83612,$83613,$83614,$83615,$83616,$83617,$83618,$83619,$83620,$83621,$83622),(nextval($83623),$83624,$83625,$83626,$83627,$83628,$83629,$83630,$83631,$83632,$83633,$83634,$83635,$83636),(nextval($83637),$83638,$83639,$83640,$83641,$83642,$83643,$83644,$83645,$83646,$83647,$83648,$83649,$83650),(nextval($83651),$83652,$83653,$83654,$83655,$83656,$83657,$83658,$83659,$83660,$83661,$83662,$83663,$83664),(nextval($83665),$83666,$83667,$83668,$83669,$83670,$83671,$83672,$83673,$83674,$83675,$83676,$83677,$83678),(nextval($83679),$83680,$83681,$83682,$83683,$83684,$83685,$83686,$83687,$83688,$83689,$83690,$83691,$83692),(nextval($83693),$83694,$83695,$83696,$83697,$83698,$83699,$83700,$83701,$83702,$83703,$83704,$83705,$83706),(nextval($83707),$83708,$83709,$83710,$83711,$83712,$83713,$83714,$83715,$83716,$83717,$83718,$83719,$83720),(nextval($83721),$83722,$83723,$83724,$83725,$83726,$83727,$83728,$83729,$83730,$83731,$83732,$83733,$83734),(nextval($83735),$83736,$83737,$83738,$83739,$83740,$83741,$83742,$83743,$83744,$83745,$83746,$83747,$83748),(nextval($83749),$83750,$83751,$83752,$83753,$83754,$83755,$83756,$83757,$83758,$83759,$83760,$83761,$83762),(nextval($83763),$83764,$83765,$83766,$83767,$83768,$83769,$83770,$83771,$83772,$83773,$83774,$83775,$83776),(nextval($83777),$83778,$83779,$83780,$83781,$83782,$83783,$83784,$83785,$83786,$83787,$83788,$83789,$83790),(nextval($83791),$83792,$83793,$83794,$83795,$83796,$83797,$83798,$83799,$83800,$83801,$83802,$83803,$83804),(nextval($83805),$83806,$83807,$83808,$83809,$83810,$83811,$83812,$83813,$83814,$83815,$83816,$83817,$83818),(nextval($83819),$83820,$83821,$83822,$83823,$83824,$83825,$83826,$83827,$83828,$83829,$83830,$83831,$83832),(nextval($83833),$83834,$83835,$83836,$83837,$83838,$83839,$83840,$83841,$83842,$83843,$83844,$83845,$83846),(nextval($83847),$83848,$83849,$83850,$83851,$83852,$83853,$83854,$83855,$83856,$83857,$83858,$83859,$83860),(nextval($83861),$83862,$83863,$83864,$83865,$83866,$83867,$83868,$83869,$83870,$83871,$83872,$83873,$83874),(nextval($83875),$83876,$83877,$83878,$83879,$83880,$83881,$83882,$83883,$83884,$83885,$83886,$83887,$83888),(nextval($83889),$83890,$83891,$83892,$83893,$83894,$83895,$83896,$83897,$83898,$83899,$83900,$83901,$83902),(nextval($83903),$83904,$83905,$83906,$83907,$83908,$83909,$83910,$83911,$83912,$83913,$83914,$83915,$83916),(nextval($83917),$83918,$83919,$83920,$83921,$83922,$83923,$83924,$83925,$83926,$83927,$83928,$83929,$83930),(nextval($83931),$83932,$83933,$83934,$83935,$83936,$83937,$83938,$83939,$83940,$83941,$83942,$83943,$83944),(nextval($83945),$83946,$83947,$83948,$83949,$83950,$83951,$83952,$83953,$83954,$83955,$83956,$83957,$83958),(nextval($83959),$83960,$83961,$83962,$83963,$83964,$83965,$83966,$83967,$83968,$83969,$83970,$83971,$83972),(nextval($83973),$83974,$83975,$83976,$83977,$83978,$83979,$83980,$83981,$83982,$83983,$83984,$83985,$83986),(nextval($83987),$83988,$83989,$83990,$83991,$83992,$83993,$83994,$83995,$83996,$83997,$83998,$83999,$84000),(nextval($84001),$84002,$84003,$84004,$84005,$84006,$84007,$84008,$84009,$84010,$84011,$84012,$84013,$84014),(nextval($84015),$84016,$84017,$84018,$84019,$84020,$84021,$84022,$84023,$84024,$84025,$84026,$84027,$84028),(nextval($84029),$84030,$84031,$84032,$84033,$84034,$84035,$84036,$84037,$84038,$84039,$84040,$84041,$84042),(nextval($84043),$84044,$84045,$84046,$84047,$84048,$84049,$84050,$84051,$84052,$84053,$84054,$84055,$84056),(nextval($84057),$84058,$84059,$84060,$84061,$84062,$84063,$84064,$84065,$84066,$84067,$84068,$84069,$84070),(nextval($84071),$84072,$84073,$84074,$84075,$84076,$84077,$84078,$84079,$84080,$84081,$84082,$84083,$84084),(nextval($84085),$84086,$84087,$84088,$84089,$84090,$84091,$84092,$84093,$84094,$84095,$84096,$84097,$84098),(nextval($84099),$84100,$84101,$84102,$84103,$84104,$84105,$84106,$84107,$84108,$84109,$84110,$84111,$84112),(nextval($84113),$84114,$84115,$84116,$84117,$84118,$84119,$84120,$84121,$84122,$84123,$84124,$84125,$84126),(nextval($84127),$84128,$84129,$84130,$84131,$84132,$84133,$84134,$84135,$84136,$84137,$84138,$84139,$84140),(nextval($84141),$84142,$84143,$84144,$84145,$84146,$84147,$84148,$84149,$84150,$84151,$84152,$84153,$84154),(nextval($84155),$84156,$84157,$84158,$84159,$84160,$84161,$84162,$84163,$84164,$84165,$84166,$84167,$84168),(nextval($84169),$84170,$84171,$84172,$84173,$84174,$84175,$84176,$84177,$84178,$84179,$84180,$84181,$84182),(nextval($84183),$84184,$84185,$84186,$84187,$84188,$84189,$84190,$84191,$84192,$84193,$84194,$84195,$84196),(nextval($84197),$84198,$84199,$84200,$84201,$84202,$84203,$84204,$84205,$84206,$84207,$84208,$84209,$84210),(nextval($84211),$84212,$84213,$84214,$84215,$84216,$84217,$84218,$84219,$84220,$84221,$84222,$84223,$84224),(nextval($84225),$84226,$84227,$84228,$84229,$84230,$84231,$84232,$84233,$84234,$84235,$84236,$84237,$84238),(nextval($84239),$84240,$84241,$84242,$84243,$84244,$84245,$84246,$84247,$84248,$84249,$84250,$84251,$84252),(nextval($84253),$84254,$84255,$84256,$84257,$84258,$84259,$84260,$84261,$84262,$84263,$84264,$84265,$84266),(nextval($84267),$84268,$84269,$84270,$84271,$84272,$84273,$84274,$84275,$84276,$84277,$84278,$84279,$84280),(nextval($84281),$84282,$84283,$84284,$84285,$84286,$84287,$84288,$84289,$84290,$84291,$84292,$84293,$84294),(nextval($84295),$84296,$84297,$84298,$84299,$84300,$84301,$84302,$84303,$84304,$84305,$84306,$84307,$84308),(nextval($84309),$84310,$84311,$84312,$84313,$84314,$84315,$84316,$84317,$84318,$84319,$84320,$84321,$84322),(nextval($84323),$84324,$84325,$84326,$84327,$84328,$84329,$84330,$84331,$84332,$84333,$84334,$84335,$84336),(nextval($84337),$84338,$84339,$84340,$84341,$84342,$84343,$84344,$84345,$84346,$84347,$84348,$84349,$84350),(nextval($84351),$84352,$84353,$84354,$84355,$84356,$84357,$84358,$84359,$84360,$84361,$84362,$84363,$84364),(nextval($84365),$84366,$84367,$84368,$84369,$84370,$84371,$84372,$84373,$84374,$84375,$84376,$84377,$84378),(nextval($84379),$84380,$84381,$84382,$84383,$84384,$84385,$84386,$84387,$84388,$84389,$84390,$84391,$84392),(nextval($84393),$84394,$84395,$84396,$84397,$84398,$84399,$84400,$84401,$84402,$84403,$84404,$84405,$84406),(nextval($84407),$84408,$84409,$84410,$84411,$84412,$84413,$84414,$84415,$84416,$84417,$84418,$84419,$84420),(nextval($84421),$84422,$84423,$84424,$84425,$84426,$84427,$84428,$84429,$84430,$84431,$84432,$84433,$84434),(nextval($84435),$84436,$84437,$84438,$84439,$84440,$84441,$84442,$84443,$84444,$84445,$84446,$84447,$84448),(nextval($84449),$84450,$84451,$84452,$84453,$84454,$84455,$84456,$84457,$84458,$84459,$84460,$84461,$84462),(nextval($84463),$84464,$84465,$84466,$84467,$84468,$84469,$84470,$84471,$84472,$84473,$84474,$84475,$84476),(nextval($84477),$84478,$84479,$84480,$84481,$84482,$84483,$84484,$84485,$84486,$84487,$84488,$84489,$84490),(nextval($84491),$84492,$84493,$84494,$84495,$84496,$84497,$84498,$84499,$84500,$84501,$84502,$84503,$84504),(nextval($84505),$84506,$84507,$84508,$84509,$84510,$84511,$84512,$84513,$84514,$84515,$84516,$84517,$84518),(nextval($84519),$84520,$84521,$84522,$84523,$84524,$84525,$84526,$84527,$84528,$84529,$84530,$84531,$84532),(nextval($84533),$84534,$84535,$84536,$84537,$84538,$84539,$84540,$84541,$84542,$84543,$84544,$84545,$84546),(nextval($84547),$84548,$84549,$84550,$84551,$84552,$84553,$84554,$84555,$84556,$84557,$84558,$84559,$84560),(nextval($84561),$84562,$84563,$84564,$84565,$84566,$84567,$84568,$84569,$84570,$84571,$84572,$84573,$84574),(nextval($84575),$84576,$84577,$84578,$84579,$84580,$84581,$84582,$84583,$84584,$84585,$84586,$84587,$84588),(nextval($84589),$84590,$84591,$84592,$84593,$84594,$84595,$84596,$84597,$84598,$84599,$84600,$84601,$84602),(nextval($84603),$84604,$84605,$84606,$84607,$84608,$84609,$84610,$84611,$84612,$84613,$84614,$84615,$84616),(nextval($84617),$84618,$84619,$84620,$84621,$84622,$84623,$84624,$84625,$84626,$84627,$84628,$84629,$84630),(nextval($84631),$84632,$84633,$84634,$84635,$84636,$84637,$84638,$84639,$84640,$84641,$84642,$84643,$84644),(nextval($84645),$84646,$84647,$84648,$84649,$84650,$84651,$84652,$84653,$84654,$84655,$84656,$84657,$84658),(nextval($84659),$84660,$84661,$84662,$84663,$84664,$84665,$84666,$84667,$84668,$84669,$84670,$84671,$84672),(nextval($84673),$84674,$84675,$84676,$84677,$84678,$84679,$84680,$84681,$84682,$84683,$84684,$84685,$84686),(nextval($84687),$84688,$84689,$84690,$84691,$84692,$84693,$84694,$84695,$84696,$84697,$84698,$84699,$84700),(nextval($84701),$84702,$84703,$84704,$84705,$84706,$84707,$84708,$84709,$84710,$84711,$84712,$84713,$84714),(nextval($84715),$84716,$84717,$84718,$84719,$84720,$84721,$84722,$84723,$84724,$84725,$84726,$84727,$84728),(nextval($84729),$84730,$84731,$84732,$84733,$84734,$84735,$84736,$84737,$84738,$84739,$84740,$84741,$84742),(nextval($84743),$84744,$84745,$84746,$84747,$84748,$84749,$84750,$84751,$84752,$84753,$84754,$84755,$84756),(nextval($84757),$84758,$84759,$84760,$84761,$84762,$84763,$84764,$84765,$84766,$84767,$84768,$84769,$84770),(nextval($84771),$84772,$84773,$84774,$84775,$84776,$84777,$84778,$84779,$84780,$84781,$84782,$84783,$84784),(nextval($84785),$84786,$84787,$84788,$84789,$84790,$84791,$84792,$84793,$84794,$84795,$84796,$84797,$84798),(nextval($84799),$84800,$84801,$84802,$84803,$84804,$84805,$84806,$84807,$84808,$84809,$84810,$84811,$84812),(nextval($84813),$84814,$84815,$84816,$84817,$84818,$84819,$84820,$84821,$84822,$84823,$84824,$84825,$84826),(nextval($84827),$84828,$84829,$84830,$84831,$84832,$84833,$84834,$84835,$84836,$84837,$84838,$84839,$84840),(nextval($84841),$84842,$84843,$84844,$84845,$84846,$84847,$84848,$84849,$84850,$84851,$84852,$84853,$84854),(nextval($84855),$84856,$84857,$84858,$84859,$84860,$84861,$84862,$84863,$84864,$84865,$84866,$84867,$84868),(nextval($84869),$84870,$84871,$84872,$84873,$84874,$84875,$84876,$84877,$84878,$84879,$84880,$84881,$84882),(nextval($84883),$84884,$84885,$84886,$84887,$84888,$84889,$84890,$84891,$84892,$84893,$84894,$84895,$84896),(nextval($84897),$84898,$84899,$84900,$84901,$84902,$84903,$84904,$84905,$84906,$84907,$84908,$84909,$84910),(nextval($84911),$84912,$84913,$84914,$84915,$84916,$84917,$84918,$84919,$84920,$84921,$84922,$84923,$84924),(nextval($84925),$84926,$84927,$84928,$84929,$84930,$84931,$84932,$84933,$84934,$84935,$84936,$84937,$84938),(nextval($84939),$84940,$84941,$84942,$84943,$84944,$84945,$84946,$84947,$84948,$84949,$84950,$84951,$84952),(nextval($84953),$84954,$84955,$84956,$84957,$84958,$84959,$84960,$84961,$84962,$84963,$84964,$84965,$84966),(nextval($84967),$84968,$84969,$84970,$84971,$84972,$84973,$84974,$84975,$84976,$84977,$84978,$84979,$84980),(nextval($84981),$84982,$84983,$84984,$84985,$84986,$84987,$84988,$84989,$84990,$84991,$84992,$84993,$84994),(nextval($84995),$84996,$84997,$84998,$84999,$85000,$85001,$85002,$85003,$85004,$85005,$85006,$85007,$85008),(nextval($85009),$85010,$85011,$85012,$85013,$85014,$85015,$85016,$85017,$85018,$85019,$85020,$85021,$85022),(nextval($85023),$85024,$85025,$85026,$85027,$85028,$85029,$85030,$85031,$85032,$85033,$85034,$85035,$85036),(nextval($85037),$85038,$85039,$85040,$85041,$85042,$85043,$85044,$85045,$85046,$85047,$85048,$85049,$85050),(nextval($85051),$85052,$85053,$85054,$85055,$85056,$85057,$85058,$85059,$85060,$85061,$85062,$85063,$85064),(nextval($85065),$85066,$85067,$85068,$85069,$85070,$85071,$85072,$85073,$85074,$85075,$85076,$85077,$85078),(nextval($85079),$85080,$85081,$85082,$85083,$85084,$85085,$85086,$85087,$85088,$85089,$85090,$85091,$85092),(nextval($85093),$85094,$85095,$85096,$85097,$85098,$85099,$85100,$85101,$85102,$85103,$85104,$85105,$85106),(nextval($85107),$85108,$85109,$85110,$85111,$85112,$85113,$85114,$85115,$85116,$85117,$85118,$85119,$85120),(nextval($85121),$85122,$85123,$85124,$85125,$85126,$85127,$85128,$85129,$85130,$85131,$85132,$85133,$85134),(nextval($85135),$85136,$85137,$85138,$85139,$85140,$85141,$85142,$85143,$85144,$85145,$85146,$85147,$85148),(nextval($85149),$85150,$85151,$85152,$85153,$85154,$85155,$85156,$85157,$85158,$85159,$85160,$85161,$85162),(nextval($85163),$85164,$85165,$85166,$85167,$85168,$85169,$85170,$85171,$85172,$85173,$85174,$85175,$85176),(nextval($85177),$85178,$85179,$85180,$85181,$85182,$85183,$85184,$85185,$85186,$85187,$85188,$85189,$85190),(nextval($85191),$85192,$85193,$85194,$85195,$85196,$85197,$85198,$85199,$85200,$85201,$85202,$85203,$85204),(nextval($85205),$85206,$85207,$85208,$85209,$85210,$85211,$85212,$85213,$85214,$85215,$85216,$85217,$85218),(nextval($85219),$85220,$85221,$85222,$85223,$85224,$85225,$85226,$85227,$85228,$85229,$85230,$85231,$85232),(nextval($85233),$85234,$85235,$85236,$85237,$85238,$85239,$85240,$85241,$85242,$85243,$85244,$85245,$85246),(nextval($85247),$85248,$85249,$85250,$85251,$85252,$85253,$85254,$85255,$85256,$85257,$85258,$85259,$85260),(nextval($85261),$85262,$85263,$85264,$85265,$85266,$85267,$85268,$85269,$85270,$85271,$85272,$85273,$85274),(nextval($85275),$85276,$85277,$85278,$85279,$85280,$85281,$85282,$85283,$85284,$85285,$85286,$85287,$85288),(nextval($85289),$85290,$85291,$85292,$85293,$85294,$85295,$85296,$85297,$85298,$85299,$85300,$85301,$85302),(nextval($85303),$85304,$85305,$85306,$85307,$85308,$85309,$85310,$85311,$85312,$85313,$85314,$85315,$85316),(nextval($85317),$85318,$85319,$85320,$85321,$85322,$85323,$85324,$85325,$85326,$85327,$85328,$85329,$85330),(nextval($85331),$85332,$85333,$85334,$85335,$85336,$85337,$85338,$85339,$85340,$85341,$85342,$85343,$85344),(nextval($85345),$85346,$85347,$85348,$85349,$85350,$85351,$85352,$85353,$85354,$85355,$85356,$85357,$85358),(nextval($85359),$85360,$85361,$85362,$85363,$85364,$85365,$85366,$85367,$85368,$85369,$85370,$85371,$85372),(nextval($85373),$85374,$85375,$85376,$85377,$85378,$85379,$85380,$85381,$85382,$85383,$85384,$85385,$85386),(nextval($85387),$85388,$85389,$85390,$85391,$85392,$85393,$85394,$85395,$85396,$85397,$85398,$85399,$85400),(nextval($85401),$85402,$85403,$85404,$85405,$85406,$85407,$85408,$85409,$85410,$85411,$85412,$85413,$85414),(nextval($85415),$85416,$85417,$85418,$85419,$85420,$85421,$85422,$85423,$85424,$85425,$85426,$85427,$85428),(nextval($85429),$85430,$85431,$85432,$85433,$85434,$85435,$85436,$85437,$85438,$85439,$85440,$85441,$85442),(nextval($85443),$85444,$85445,$85446,$85447,$85448,$85449,$85450,$85451,$85452,$85453,$85454,$85455,$85456),(nextval($85457),$85458,$85459,$85460,$85461,$85462,$85463,$85464,$85465,$85466,$85467,$85468,$85469,$85470),(nextval($85471),$85472,$85473,$85474,$85475,$85476,$85477,$85478,$85479,$85480,$85481,$85482,$85483,$85484),(nextval($85485),$85486,$85487,$85488,$85489,$85490,$85491,$85492,$85493,$85494,$85495,$85496,$85497,$85498),(nextval($85499),$85500,$85501,$85502,$85503,$85504,$85505,$85506,$85507,$85508,$85509,$85510,$85511,$85512),(nextval($85513),$85514,$85515,$85516,$85517,$85518,$85519,$85520,$85521,$85522,$85523,$85524,$85525,$85526),(nextval($85527),$85528,$85529,$85530,$85531,$85532,$85533,$85534,$85535,$85536,$85537,$85538,$85539,$85540),(nextval($85541),$85542,$85543,$85544,$85545,$85546,$85547,$85548,$85549,$85550,$85551,$85552,$85553,$85554),(nextval($85555),$85556,$85557,$85558,$85559,$85560,$85561,$85562,$85563,$85564,$85565,$85566,$85567,$85568),(nextval($85569),$85570,$85571,$85572,$85573,$85574,$85575,$85576,$85577,$85578,$85579,$85580,$85581,$85582),(nextval($85583),$85584,$85585,$85586,$85587,$85588,$85589,$85590,$85591,$85592,$85593,$85594,$85595,$85596),(nextval($85597),$85598,$85599,$85600,$85601,$85602,$85603,$85604,$85605,$85606,$85607,$85608,$85609,$85610),(nextval($85611),$85612,$85613,$85614,$85615,$85616,$85617,$85618,$85619,$85620,$85621,$85622,$85623,$85624),(nextval($85625),$85626,$85627,$85628,$85629,$85630,$85631,$85632,$85633,$85634,$85635,$85636,$85637,$85638),(nextval($85639),$85640,$85641,$85642,$85643,$85644,$85645,$85646,$85647,$85648,$85649,$85650,$85651,$85652),(nextval($85653),$85654,$85655,$85656,$85657,$85658,$85659,$85660,$85661,$85662,$85663,$85664,$85665,$85666),(nextval($85667),$85668,$85669,$85670,$85671,$85672,$85673,$85674,$85675,$85676,$85677,$85678,$85679,$85680),(nextval($85681),$85682,$85683,$85684,$85685,$85686,$85687,$85688,$85689,$85690,$85691,$85692,$85693,$85694),(nextval($85695),$85696,$85697,$85698,$85699,$85700,$85701,$85702,$85703,$85704,$85705,$85706,$85707,$85708),(nextval($85709),$85710,$85711,$85712,$85713,$85714,$85715,$85716,$85717,$85718,$85719,$85720,$85721,$85722),(nextval($85723),$85724,$85725,$85726,$85727,$85728,$85729,$85730,$85731,$85732,$85733,$85734,$85735,$85736),(nextval($85737),$85738,$85739,$85740,$85741,$85742,$85743,$85744,$85745,$85746,$85747,$85748,$85749,$85750),(nextval($85751),$85752,$85753,$85754,$85755,$85756,$85757,$85758,$85759,$85760,$85761,$85762,$85763,$85764),(nextval($85765),$85766,$85767,$85768,$85769,$85770,$85771,$85772,$85773,$85774,$85775,$85776,$85777,$85778),(nextval($85779),$85780,$85781,$85782,$85783,$85784,$85785,$85786,$85787,$85788,$85789,$85790,$85791,$85792),(nextval($85793),$85794,$85795,$85796,$85797,$85798,$85799,$85800,$85801,$85802,$85803,$85804,$85805,$85806),(nextval($85807),$85808,$85809,$85810,$85811,$85812,$85813,$85814,$85815,$85816,$85817,$85818,$85819,$85820),(nextval($85821),$85822,$85823,$85824,$85825,$85826,$85827,$85828,$85829,$85830,$85831,$85832,$85833,$85834),(nextval($85835),$85836,$85837,$85838,$85839,$85840,$85841,$85842,$85843,$85844,$85845,$85846,$85847,$85848),(nextval($85849),$85850,$85851,$85852,$85853,$85854,$85855,$85856,$85857,$85858,$85859,$85860,$85861,$85862),(nextval($85863),$85864,$85865,$85866,$85867,$85868,$85869,$85870,$85871,$85872,$85873,$85874,$85875,$85876),(nextval($85877),$85878,$85879,$85880,$85881,$85882,$85883,$85884,$85885,$85886,$85887,$85888,$85889,$85890),(nextval($85891),$85892,$85893,$85894,$85895,$85896,$85897,$85898,$85899,$85900,$85901,$85902,$85903,$85904),(nextval($85905),$85906,$85907,$85908,$85909,$85910,$85911,$85912,$85913,$85914,$85915,$85916,$85917,$85918),(nextval($85919),$85920,$85921,$85922,$85923,$85924,$85925,$85926,$85927,$85928,$85929,$85930,$85931,$85932),(nextval($85933),$85934,$85935,$85936,$85937,$85938,$85939,$85940,$85941,$85942,$85943,$85944,$85945,$85946),(nextval($85947),$85948,$85949,$85950,$85951,$85952,$85953,$85954,$85955,$85956,$85957,$85958,$85959,$85960),(nextval($85961),$85962,$85963,$85964,$85965,$85966,$85967,$85968,$85969,$85970,$85971,$85972,$85973,$85974),(nextval($85975),$85976,$85977,$85978,$85979,$85980,$85981,$85982,$85983,$85984,$85985,$85986,$85987,$85988),(nextval($85989),$85990,$85991,$85992,$85993,$85994,$85995,$85996,$85997,$85998,$85999,$86000,$86001,$86002),(nextval($86003),$86004,$86005,$86006,$86007,$86008,$86009,$86010,$86011,$86012,$86013,$86014,$86015,$86016),(nextval($86017),$86018,$86019,$86020,$86021,$86022,$86023,$86024,$86025,$86026,$86027,$86028,$86029,$86030),(nextval($86031),$86032,$86033,$86034,$86035,$86036,$86037,$86038,$86039,$86040,$86041,$86042,$86043,$86044),(nextval($86045),$86046,$86047,$86048,$86049,$86050,$86051,$86052,$86053,$86054,$86055,$86056,$86057,$86058),(nextval($86059),$86060,$86061,$86062,$86063,$86064,$86065,$86066,$86067,$86068,$86069,$86070,$86071,$86072),(nextval($86073),$86074,$86075,$86076,$86077,$86078,$86079,$86080,$86081,$86082,$86083,$86084,$86085,$86086),(nextval($86087),$86088,$86089,$86090,$86091,$86092,$86093,$86094,$86095,$86096,$86097,$86098,$86099,$86100),(nextval($86101),$86102,$86103,$86104,$86105,$86106,$86107,$86108,$86109,$86110,$86111,$86112,$86113,$86114),(nextval($86115),$86116,$86117,$86118,$86119,$86120,$86121,$86122,$86123,$86124,$86125,$86126,$86127,$86128),(nextval($86129),$86130,$86131,$86132,$86133,$86134,$86135,$86136,$86137,$86138,$86139,$86140,$86141,$86142),(nextval($86143),$86144,$86145,$86146,$86147,$86148,$86149,$86150,$86151,$86152,$86153,$86154,$86155,$86156),(nextval($86157),$86158,$86159,$86160,$86161,$86162,$86163,$86164,$86165,$86166,$86167,$86168,$86169,$86170),(nextval($86171),$86172,$86173,$86174,$86175,$86176,$86177,$86178,$86179,$86180,$86181,$86182,$86183,$86184),(nextval($86185),$86186,$86187,$86188,$86189,$86190,$86191,$86192,$86193,$86194,$86195,$86196,$86197,$86198),(nextval($86199),$86200,$86201,$86202,$86203,$86204,$86205,$86206,$86207,$86208,$86209,$86210,$86211,$86212),(nextval($86213),$86214,$86215,$86216,$86217,$86218,$86219,$86220,$86221,$86222,$86223,$86224,$86225,$86226),(nextval($86227),$86228,$86229,$86230,$86231,$86232,$86233,$86234,$86235,$86236,$86237,$86238,$86239,$86240),(nextval($86241),$86242,$86243,$86244,$86245,$86246,$86247,$86248,$86249,$86250,$86251,$86252,$86253,$86254),(nextval($86255),$86256,$86257,$86258,$86259,$86260,$86261,$86262,$86263,$86264,$86265,$86266,$86267,$86268),(nextval($86269),$86270,$86271,$86272,$86273,$86274,$86275,$86276,$86277,$86278,$86279,$86280,$86281,$86282),(nextval($86283),$86284,$86285,$86286,$86287,$86288,$86289,$86290,$86291,$86292,$86293,$86294,$86295,$86296),(nextval($86297),$86298,$86299,$86300,$86301,$86302,$86303,$86304,$86305,$86306,$86307,$86308,$86309,$86310),(nextval($86311),$86312,$86313,$86314,$86315,$86316,$86317,$86318,$86319,$86320,$86321,$86322,$86323,$86324),(nextval($86325),$86326,$86327,$86328,$86329,$86330,$86331,$86332,$86333,$86334,$86335,$86336,$86337,$86338),(nextval($86339),$86340,$86341,$86342,$86343,$86344,$86345,$86346,$86347,$86348,$86349,$86350,$86351,$86352),(nextval($86353),$86354,$86355,$86356,$86357,$86358,$86359,$86360,$86361,$86362,$86363,$86364,$86365,$86366),(nextval($86367),$86368,$86369,$86370,$86371,$86372,$86373,$86374,$86375,$86376,$86377,$86378,$86379,$86380),(nextval($86381),$86382,$86383,$86384,$86385,$86386,$86387,$86388,$86389,$86390,$86391,$86392,$86393,$86394),(nextval($86395),$86396,$86397,$86398,$86399,$86400,$86401,$86402,$86403,$86404,$86405,$86406,$86407,$86408),(nextval($86409),$86410,$86411,$86412,$86413,$86414,$86415,$86416,$86417,$86418,$86419,$86420,$86421,$86422),(nextval($86423),$86424,$86425,$86426,$86427,$86428,$86429,$86430,$86431,$86432,$86433,$86434,$86435,$86436),(nextval($86437),$86438,$86439,$86440,$86441,$86442,$86443,$86444,$86445,$86446,$86447,$86448,$86449,$86450),(nextval($86451),$86452,$86453,$86454,$86455,$86456,$86457,$86458,$86459,$86460,$86461,$86462,$86463,$86464),(nextval($86465),$86466,$86467,$86468,$86469,$86470,$86471,$86472,$86473,$86474,$86475,$86476,$86477,$86478),(nextval($86479),$86480,$86481,$86482,$86483,$86484,$86485,$86486,$86487,$86488,$86489,$86490,$86491,$86492),(nextval($86493),$86494,$86495,$86496,$86497,$86498,$86499,$86500,$86501,$86502,$86503,$86504,$86505,$86506),(nextval($86507),$86508,$86509,$86510,$86511,$86512,$86513,$86514,$86515,$86516,$86517,$86518,$86519,$86520),(nextval($86521),$86522,$86523,$86524,$86525,$86526,$86527,$86528,$86529,$86530,$86531,$86532,$86533,$86534),(nextval($86535),$86536,$86537,$86538,$86539,$86540,$86541,$86542,$86543,$86544,$86545,$86546,$86547,$86548),(nextval($86549),$86550,$86551,$86552,$86553,$86554,$86555,$86556,$86557,$86558,$86559,$86560,$86561,$86562),(nextval($86563),$86564,$86565,$86566,$86567,$86568,$86569,$86570,$86571,$86572,$86573,$86574,$86575,$86576),(nextval($86577),$86578,$86579,$86580,$86581,$86582,$86583,$86584,$86585,$86586,$86587,$86588,$86589,$86590),(nextval($86591),$86592,$86593,$86594,$86595,$86596,$86597,$86598,$86599,$86600,$86601,$86602,$86603,$86604),(nextval($86605),$86606,$86607,$86608,$86609,$86610,$86611,$86612,$86613,$86614,$86615,$86616,$86617,$86618),(nextval($86619),$86620,$86621,$86622,$86623,$86624,$86625,$86626,$86627,$86628,$86629,$86630,$86631,$86632),(nextval($86633),$86634,$86635,$86636,$86637,$86638,$86639,$86640,$86641,$86642,$86643,$86644,$86645,$86646),(nextval($86647),$86648,$86649,$86650,$86651,$86652,$86653,$86654,$86655,$86656,$86657,$86658,$86659,$86660),(nextval($86661),$86662,$86663,$86664,$86665,$86666,$86667,$86668,$86669,$86670,$86671,$86672,$86673,$86674),(nextval($86675),$86676,$86677,$86678,$86679,$86680,$86681,$86682,$86683,$86684,$86685,$86686,$86687,$86688),(nextval($86689),$86690,$86691,$86692,$86693,$86694,$86695,$86696,$86697,$86698,$86699,$86700,$86701,$86702),(nextval($86703),$86704,$86705,$86706,$86707,$86708,$86709,$86710,$86711,$86712,$86713,$86714,$86715,$86716),(nextval($86717),$86718,$86719,$86720,$86721,$86722,$86723,$86724,$86725,$86726,$86727,$86728,$86729,$86730),(nextval($86731),$86732,$86733,$86734,$86735,$86736,$86737,$86738,$86739,$86740,$86741,$86742,$86743,$86744),(nextval($86745),$86746,$86747,$86748,$86749,$86750,$86751,$86752,$86753,$86754,$86755,$86756,$86757,$86758),(nextval($86759),$86760,$86761,$86762,$86763,$86764,$86765,$86766,$86767,$86768,$86769,$86770,$86771,$86772),(nextval($86773),$86774,$86775,$86776,$86777,$86778,$86779,$86780,$86781,$86782,$86783,$86784,$86785,$86786),(nextval($86787),$86788,$86789,$86790,$86791,$86792,$86793,$86794,$86795,$86796,$86797,$86798,$86799,$86800),(nextval($86801),$86802,$86803,$86804,$86805,$86806,$86807,$86808,$86809,$86810,$86811,$86812,$86813,$86814),(nextval($86815),$86816,$86817,$86818,$86819,$86820,$86821,$86822,$86823,$86824,$86825,$86826,$86827,$86828),(nextval($86829),$86830,$86831,$86832,$86833,$86834,$86835,$86836,$86837,$86838,$86839,$86840,$86841,$86842),(nextval($86843),$86844,$86845,$86846,$86847,$86848,$86849,$86850,$86851,$86852,$86853,$86854,$86855,$86856),(nextval($86857),$86858,$86859,$86860,$86861,$86862,$86863,$86864,$86865,$86866,$86867,$86868,$86869,$86870),(nextval($86871),$86872,$86873,$86874,$86875,$86876,$86877,$86878,$86879,$86880,$86881,$86882,$86883,$86884),(nextval($86885),$86886,$86887,$86888,$86889,$86890,$86891,$86892,$86893,$86894,$86895,$86896,$86897,$86898),(nextval($86899),$86900,$86901,$86902,$86903,$86904,$86905,$86906,$86907,$86908,$86909,$86910,$86911,$86912),(nextval($86913),$86914,$86915,$86916,$86917,$86918,$86919,$86920,$86921,$86922,$86923,$86924,$86925,$86926),(nextval($86927),$86928,$86929,$86930,$86931,$86932,$86933,$86934,$86935,$86936,$86937,$86938,$86939,$86940),(nextval($86941),$86942,$86943,$86944,$86945,$86946,$86947,$86948,$86949,$86950,$86951,$86952,$86953,$86954),(nextval($86955),$86956,$86957,$86958,$86959,$86960,$86961,$86962,$86963,$86964,$86965,$86966,$86967,$86968),(nextval($86969),$86970,$86971,$86972,$86973,$86974,$86975,$86976,$86977,$86978,$86979,$86980,$86981,$86982),(nextval($86983),$86984,$86985,$86986,$86987,$86988,$86989,$86990,$86991,$86992,$86993,$86994,$86995,$86996),(nextval($86997),$86998,$86999,$87000,$87001,$87002,$87003,$87004,$87005,$87006,$87007,$87008,$87009,$87010),(nextval($87011),$87012,$87013,$87014,$87015,$87016,$87017,$87018,$87019,$87020,$87021,$87022,$87023,$87024),(nextval($87025),$87026,$87027,$87028,$87029,$87030,$87031,$87032,$87033,$87034,$87035,$87036,$87037,$87038),(nextval($87039),$87040,$87041,$87042,$87043,$87044,$87045,$87046,$87047,$87048,$87049,$87050,$87051,$87052),(nextval($87053),$87054,$87055,$87056,$87057,$87058,$87059,$87060,$87061,$87062,$87063,$87064,$87065,$87066),(nextval($87067),$87068,$87069,$87070,$87071,$87072,$87073,$87074,$87075,$87076,$87077,$87078,$87079,$87080),(nextval($87081),$87082,$87083,$87084,$87085,$87086,$87087,$87088,$87089,$87090,$87091,$87092,$87093,$87094),(nextval($87095),$87096,$87097,$87098,$87099,$87100,$87101,$87102,$87103,$87104,$87105,$87106,$87107,$87108),(nextval($87109),$87110,$87111,$87112,$87113,$87114,$87115,$87116,$87117,$87118,$87119,$87120,$87121,$87122),(nextval($87123),$87124,$87125,$87126,$87127,$87128,$87129,$87130,$87131,$87132,$87133,$87134,$87135,$87136),(nextval($87137),$87138,$87139,$87140,$87141,$87142,$87143,$87144,$87145,$87146,$87147,$87148,$87149,$87150),(nextval($87151),$87152,$87153,$87154,$87155,$87156,$87157,$87158,$87159,$87160,$87161,$87162,$87163,$87164),(nextval($87165),$87166,$87167,$87168,$87169,$87170,$87171,$87172,$87173,$87174,$87175,$87176,$87177,$87178),(nextval($87179),$87180,$87181,$87182,$87183,$87184,$87185,$87186,$87187,$87188,$87189,$87190,$87191,$87192),(nextval($87193),$87194,$87195,$87196,$87197,$87198,$87199,$87200,$87201,$87202,$87203,$87204,$87205,$87206),(nextval($87207),$87208,$87209,$87210,$87211,$87212,$87213,$87214,$87215,$87216,$87217,$87218,$87219,$87220),(nextval($87221),$87222,$87223,$87224,$87225,$87226,$87227,$87228,$87229,$87230,$87231,$87232,$87233,$87234),(nextval($87235),$87236,$87237,$87238,$87239,$87240,$87241,$87242,$87243,$87244,$87245,$87246,$87247,$87248),(nextval($87249),$87250,$87251,$87252,$87253,$87254,$87255,$87256,$87257,$87258,$87259,$87260,$87261,$87262),(nextval($87263),$87264,$87265,$87266,$87267,$87268,$87269,$87270,$87271,$87272,$87273,$87274,$87275,$87276),(nextval($87277),$87278,$87279,$87280,$87281,$87282,$87283,$87284,$87285,$87286,$87287,$87288,$87289,$87290),(nextval($87291),$87292,$87293,$87294,$87295,$87296,$87297,$87298,$87299,$87300,$87301,$87302,$87303,$87304),(nextval($87305),$87306,$87307,$87308,$87309,$87310,$87311,$87312,$87313,$87314,$87315,$87316,$87317,$87318),(nextval($87319),$87320,$87321,$87322,$87323,$87324,$87325,$87326,$87327,$87328,$87329,$87330,$87331,$87332),(nextval($87333),$87334,$87335,$87336,$87337,$87338,$87339,$87340,$87341,$87342,$87343,$87344,$87345,$87346),(nextval($87347),$87348,$87349,$87350,$87351,$87352,$87353,$87354,$87355,$87356,$87357,$87358,$87359,$87360),(nextval($87361),$87362,$87363,$87364,$87365,$87366,$87367,$87368,$87369,$87370,$87371,$87372,$87373,$87374),(nextval($87375),$87376,$87377,$87378,$87379,$87380,$87381,$87382,$87383,$87384,$87385,$87386,$87387,$87388),(nextval($87389),$87390,$87391,$87392,$87393,$87394,$87395,$87396,$87397,$87398,$87399,$87400,$87401,$87402),(nextval($87403),$87404,$87405,$87406,$87407,$87408,$87409,$87410,$87411,$87412,$87413,$87414,$87415,$87416),(nextval($87417),$87418,$87419,$87420,$87421,$87422,$87423,$87424,$87425,$87426,$87427,$87428,$87429,$87430),(nextval($87431),$87432,$87433,$87434,$87435,$87436,$87437,$87438,$87439,$87440,$87441,$87442,$87443,$87444),(nextval($87445),$87446,$87447,$87448,$87449,$87450,$87451,$87452,$87453,$87454,$87455,$87456,$87457,$87458),(nextval($87459),$87460,$87461,$87462,$87463,$87464,$87465,$87466,$87467,$87468,$87469,$87470,$87471,$87472),(nextval($87473),$87474,$87475,$87476,$87477,$87478,$87479,$87480,$87481,$87482,$87483,$87484,$87485,$87486),(nextval($87487),$87488,$87489,$87490,$87491,$87492,$87493,$87494,$87495,$87496,$87497,$87498,$87499,$87500),(nextval($87501),$87502,$87503,$87504,$87505,$87506,$87507,$87508,$87509,$87510,$87511,$87512,$87513,$87514),(nextval($87515),$87516,$87517,$87518,$87519,$87520,$87521,$87522,$87523,$87524,$87525,$87526,$87527,$87528),(nextval($87529),$87530,$87531,$87532,$87533,$87534,$87535,$87536,$87537,$87538,$87539,$87540,$87541,$87542),(nextval($87543),$87544,$87545,$87546,$87547,$87548,$87549,$87550,$87551,$87552,$87553,$87554,$87555,$87556),(nextval($87557),$87558,$87559,$87560,$87561,$87562,$87563,$87564,$87565,$87566,$87567,$87568,$87569,$87570),(nextval($87571),$87572,$87573,$87574,$87575,$87576,$87577,$87578,$87579,$87580,$87581,$87582,$87583,$87584),(nextval($87585),$87586,$87587,$87588,$87589,$87590,$87591,$87592,$87593,$87594,$87595,$87596,$87597,$87598),(nextval($87599),$87600,$87601,$87602,$87603,$87604,$87605,$87606,$87607,$87608,$87609,$87610,$87611,$87612),(nextval($87613),$87614,$87615,$87616,$87617,$87618,$87619,$87620,$87621,$87622,$87623,$87624,$87625,$87626),(nextval($87627),$87628,$87629,$87630,$87631,$87632,$87633,$87634,$87635,$87636,$87637,$87638,$87639,$87640),(nextval($87641),$87642,$87643,$87644,$87645,$87646,$87647,$87648,$87649,$87650,$87651,$87652,$87653,$87654),(nextval($87655),$87656,$87657,$87658,$87659,$87660,$87661,$87662,$87663,$87664,$87665,$87666,$87667,$87668),(nextval($87669),$87670,$87671,$87672,$87673,$87674,$87675,$87676,$87677,$87678,$87679,$87680,$87681,$87682),(nextval($87683),$87684,$87685,$87686,$87687,$87688,$87689,$87690,$87691,$87692,$87693,$87694,$87695,$87696),(nextval($87697),$87698,$87699,$87700,$87701,$87702,$87703,$87704,$87705,$87706,$87707,$87708,$87709,$87710),(nextval($87711),$87712,$87713,$87714,$87715,$87716,$87717,$87718,$87719,$87720,$87721,$87722,$87723,$87724),(nextval($87725),$87726,$87727,$87728,$87729,$87730,$87731,$87732,$87733,$87734,$87735,$87736,$87737,$87738),(nextval($87739),$87740,$87741,$87742,$87743,$87744,$87745,$87746,$87747,$87748,$87749,$87750,$87751,$87752),(nextval($87753),$87754,$87755,$87756,$87757,$87758,$87759,$87760,$87761,$87762,$87763,$87764,$87765,$87766),(nextval($87767),$87768,$87769,$87770,$87771,$87772,$87773,$87774,$87775,$87776,$87777,$87778,$87779,$87780),(nextval($87781),$87782,$87783,$87784,$87785,$87786,$87787,$87788,$87789,$87790,$87791,$87792,$87793,$87794),(nextval($87795),$87796,$87797,$87798,$87799,$87800,$87801,$87802,$87803,$87804,$87805,$87806,$87807,$87808),(nextval($87809),$87810,$87811,$87812,$87813,$87814,$87815,$87816,$87817,$87818,$87819,$87820,$87821,$87822),(nextval($87823),$87824,$87825,$87826,$87827,$87828,$87829,$87830,$87831,$87832,$87833,$87834,$87835,$87836),(nextval($87837),$87838,$87839,$87840,$87841,$87842,$87843,$87844,$87845,$87846,$87847,$87848,$87849,$87850),(nextval($87851),$87852,$87853,$87854,$87855,$87856,$87857,$87858,$87859,$87860,$87861,$87862,$87863,$87864),(nextval($87865),$87866,$87867,$87868,$87869,$87870,$87871,$87872,$87873,$87874,$87875,$87876,$87877,$87878),(nextval($87879),$87880,$87881,$87882,$87883,$87884,$87885,$87886,$87887,$87888,$87889,$87890,$87891,$87892),(nextval($87893),$87894,$87895,$87896,$87897,$87898,$87899,$87900,$87901,$87902,$87903,$87904,$87905,$87906),(nextval($87907),$87908,$87909,$87910,$87911,$87912,$87913,$87914,$87915,$87916,$87917,$87918,$87919,$87920),(nextval($87921),$87922,$87923,$87924,$87925,$87926,$87927,$87928,$87929,$87930,$87931,$87932,$87933,$87934),(nextval($87935),$87936,$87937,$87938,$87939,$87940,$87941,$87942,$87943,$87944,$87945,$87946,$87947,$87948),(nextval($87949),$87950,$87951,$87952,$87953,$87954,$87955,$87956,$87957,$87958,$87959,$87960,$87961,$87962),(nextval($87963),$87964,$87965,$87966,$87967,$87968,$87969,$87970,$87971,$87972,$87973,$87974,$87975,$87976),(nextval($87977),$87978,$87979,$87980,$87981,$87982,$87983,$87984,$87985,$87986,$87987,$87988,$87989,$87990),(nextval($87991),$87992,$87993,$87994,$87995,$87996,$87997,$87998,$87999,$88000,$88001,$88002,$88003,$88004),(nextval($88005),$88006,$88007,$88008,$88009,$88010,$88011,$88012,$88013,$88014,$88015,$88016,$88017,$88018),(nextval($88019),$88020,$88021,$88022,$88023,$88024,$88025,$88026,$88027,$88028,$88029,$88030,$88031,$88032),(nextval($88033),$88034,$88035,$88036,$88037,$88038,$88039,$88040,$88041,$88042,$88043,$88044,$88045,$88046),(nextval($88047),$88048,$88049,$88050,$88051,$88052,$88053,$88054,$88055,$88056,$88057,$88058,$88059,$88060),(nextval($88061),$88062,$88063,$88064,$88065,$88066,$88067,$88068,$88069,$88070,$88071,$88072,$88073,$88074),(nextval($88075),$88076,$88077,$88078,$88079,$88080,$88081,$88082,$88083,$88084,$88085,$88086,$88087,$88088),(nextval($88089),$88090,$88091,$88092,$88093,$88094,$88095,$88096,$88097,$88098,$88099,$88100,$88101,$88102),(nextval($88103),$88104,$88105,$88106,$88107,$88108,$88109,$88110,$88111,$88112,$88113,$88114,$88115,$88116),(nextval($88117),$88118,$88119,$88120,$88121,$88122,$88123,$88124,$88125,$88126,$88127,$88128,$88129,$88130),(nextval($88131),$88132,$88133,$88134,$88135,$88136,$88137,$88138,$88139,$88140,$88141,$88142,$88143,$88144),(nextval($88145),$88146,$88147,$88148,$88149,$88150,$88151,$88152,$88153,$88154,$88155,$88156,$88157,$88158),(nextval($88159),$88160,$88161,$88162,$88163,$88164,$88165,$88166,$88167,$88168,$88169,$88170,$88171,$88172),(nextval($88173),$88174,$88175,$88176,$88177,$88178,$88179,$88180,$88181,$88182,$88183,$88184,$88185,$88186),(nextval($88187),$88188,$88189,$88190,$88191,$88192,$88193,$88194,$88195,$88196,$88197,$88198,$88199,$88200),(nextval($88201),$88202,$88203,$88204,$88205,$88206,$88207,$88208,$88209,$88210,$88211,$88212,$88213,$88214),(nextval($88215),$88216,$88217,$88218,$88219,$88220,$88221,$88222,$88223,$88224,$88225,$88226,$88227,$88228),(nextval($88229),$88230,$88231,$88232,$88233,$88234,$88235,$88236,$88237,$88238,$88239,$88240,$88241,$88242),(nextval($88243),$88244,$88245,$88246,$88247,$88248,$88249,$88250,$88251,$88252,$88253,$88254,$88255,$88256),(nextval($88257),$88258,$88259,$88260,$88261,$88262,$88263,$88264,$88265,$88266,$88267,$88268,$88269,$88270),(nextval($88271),$88272,$88273,$88274,$88275,$88276,$88277,$88278,$88279,$88280,$88281,$88282,$88283,$88284),(nextval($88285),$88286,$88287,$88288,$88289,$88290,$88291,$88292,$88293,$88294,$88295,$88296,$88297,$88298),(nextval($88299),$88300,$88301,$88302,$88303,$88304,$88305,$88306,$88307,$88308,$88309,$88310,$88311,$88312),(nextval($88313),$88314,$88315,$88316,$88317,$88318,$88319,$88320,$88321,$88322,$88323,$88324,$88325,$88326),(nextval($88327),$88328,$88329,$88330,$88331,$88332,$88333,$88334,$88335,$88336,$88337,$88338,$88339,$88340),(nextval($88341),$88342,$88343,$88344,$88345,$88346,$88347,$88348,$88349,$88350,$88351,$88352,$88353,$88354),(nextval($88355),$88356,$88357,$88358,$88359,$88360,$88361,$88362,$88363,$88364,$88365,$88366,$88367,$88368),(nextval($88369),$88370,$88371,$88372,$88373,$88374,$88375,$88376,$88377,$88378,$88379,$88380,$88381,$88382),(nextval($88383),$88384,$88385,$88386,$88387,$88388,$88389,$88390,$88391,$88392,$88393,$88394,$88395,$88396),(nextval($88397),$88398,$88399,$88400,$88401,$88402,$88403,$88404,$88405,$88406,$88407,$88408,$88409,$88410),(nextval($88411),$88412,$88413,$88414,$88415,$88416,$88417,$88418,$88419,$88420,$88421,$88422,$88423,$88424),(nextval($88425),$88426,$88427,$88428,$88429,$88430,$88431,$88432,$88433,$88434,$88435,$88436,$88437,$88438),(nextval($88439),$88440,$88441,$88442,$88443,$88444,$88445,$88446,$88447,$88448,$88449,$88450,$88451,$88452),(nextval($88453),$88454,$88455,$88456,$88457,$88458,$88459,$88460,$88461,$88462,$88463,$88464,$88465,$88466),(nextval($88467),$88468,$88469,$88470,$88471,$88472,$88473,$88474,$88475,$88476,$88477,$88478,$88479,$88480),(nextval($88481),$88482,$88483,$88484,$88485,$88486,$88487,$88488,$88489,$88490,$88491,$88492,$88493,$88494),(nextval($88495),$88496,$88497,$88498,$88499,$88500,$88501,$88502,$88503,$88504,$88505,$88506,$88507,$88508),(nextval($88509),$88510,$88511,$88512,$88513,$88514,$88515,$88516,$88517,$88518,$88519,$88520,$88521,$88522),(nextval($88523),$88524,$88525,$88526,$88527,$88528,$88529,$88530,$88531,$88532,$88533,$88534,$88535,$88536),(nextval($88537),$88538,$88539,$88540,$88541,$88542,$88543,$88544,$88545,$88546,$88547,$88548,$88549,$88550),(nextval($88551),$88552,$88553,$88554,$88555,$88556,$88557,$88558,$88559,$88560,$88561,$88562,$88563,$88564),(nextval($88565),$88566,$88567,$88568,$88569,$88570,$88571,$88572,$88573,$88574,$88575,$88576,$88577,$88578),(nextval($88579),$88580,$88581,$88582,$88583,$88584,$88585,$88586,$88587,$88588,$88589,$88590,$88591,$88592),(nextval($88593),$88594,$88595,$88596,$88597,$88598,$88599,$88600,$88601,$88602,$88603,$88604,$88605,$88606),(nextval($88607),$88608,$88609,$88610,$88611,$88612,$88613,$88614,$88615,$88616,$88617,$88618,$88619,$88620),(nextval($88621),$88622,$88623,$88624,$88625,$88626,$88627,$88628,$88629,$88630,$88631,$88632,$88633,$88634),(nextval($88635),$88636,$88637,$88638,$88639,$88640,$88641,$88642,$88643,$88644,$88645,$88646,$88647,$88648),(nextval($88649),$88650,$88651,$88652,$88653,$88654,$88655,$88656,$88657,$88658,$88659,$88660,$88661,$88662),(nextval($88663),$88664,$88665,$88666,$88667,$88668,$88669,$88670,$88671,$88672,$88673,$88674,$88675,$88676),(nextval($88677),$88678,$88679,$88680,$88681,$88682,$88683,$88684,$88685,$88686,$88687,$88688,$88689,$88690),(nextval($88691),$88692,$88693,$88694,$88695,$88696,$88697,$88698,$88699,$88700,$88701,$88702,$88703,$88704),(nextval($88705),$88706,$88707,$88708,$88709,$88710,$88711,$88712,$88713,$88714,$88715,$88716,$88717,$88718),(nextval($88719),$88720,$88721,$88722,$88723,$88724,$88725,$88726,$88727,$88728,$88729,$88730,$88731,$88732),(nextval($88733),$88734,$88735,$88736,$88737,$88738,$88739,$88740,$88741,$88742,$88743,$88744,$88745,$88746),(nextval($88747),$88748,$88749,$88750,$88751,$88752,$88753,$88754,$88755,$88756,$88757,$88758,$88759,$88760),(nextval($88761),$88762,$88763,$88764,$88765,$88766,$88767,$88768,$88769,$88770,$88771,$88772,$88773,$88774),(nextval($88775),$88776,$88777,$88778,$88779,$88780,$88781,$88782,$88783,$88784,$88785,$88786,$88787,$88788),(nextval($88789),$88790,$88791,$88792,$88793,$88794,$88795,$88796,$88797,$88798,$88799,$88800,$88801,$88802),(nextval($88803),$88804,$88805,$88806,$88807,$88808,$88809,$88810,$88811,$88812,$88813,$88814,$88815,$88816),(nextval($88817),$88818,$88819,$88820,$88821,$88822,$88823,$88824,$88825,$88826,$88827,$88828,$88829,$88830),(nextval($88831),$88832,$88833,$88834,$88835,$88836,$88837,$88838,$88839,$88840,$88841,$88842,$88843,$88844),(nextval($88845),$88846,$88847,$88848,$88849,$88850,$88851,$88852,$88853,$88854,$88855,$88856,$88857,$88858),(nextval($88859),$88860,$88861,$88862,$88863,$88864,$88865,$88866,$88867,$88868,$88869,$88870,$88871,$88872),(nextval($88873),$88874,$88875,$88876,$88877,$88878,$88879,$88880,$88881,$88882,$88883,$88884,$88885,$88886),(nextval($88887),$88888,$88889,$88890,$88891,$88892,$88893,$88894,$88895,$88896,$88897,$88898,$88899,$88900),(nextval($88901),$88902,$88903,$88904,$88905,$88906,$88907,$88908,$88909,$88910,$88911,$88912,$88913,$88914),(nextval($88915),$88916,$88917,$88918,$88919,$88920,$88921,$88922,$88923,$88924,$88925,$88926,$88927,$88928),(nextval($88929),$88930,$88931,$88932,$88933,$88934,$88935,$88936,$88937,$88938,$88939,$88940,$88941,$88942),(nextval($88943),$88944,$88945,$88946,$88947,$88948,$88949,$88950,$88951,$88952,$88953,$88954,$88955,$88956),(nextval($88957),$88958,$88959,$88960,$88961,$88962,$88963,$88964,$88965,$88966,$88967,$88968,$88969,$88970),(nextval($88971),$88972,$88973,$88974,$88975,$88976,$88977,$88978,$88979,$88980,$88981,$88982,$88983,$88984),(nextval($88985),$88986,$88987,$88988,$88989,$88990,$88991,$88992,$88993,$88994,$88995,$88996,$88997,$88998),(nextval($88999),$89000,$89001,$89002,$89003,$89004,$89005,$89006,$89007,$89008,$89009,$89010,$89011,$89012),(nextval($89013),$89014,$89015,$89016,$89017,$89018,$89019,$89020,$89021,$89022,$89023,$89024,$89025,$89026),(nextval($89027),$89028,$89029,$89030,$89031,$89032,$89033,$89034,$89035,$89036,$89037,$89038,$89039,$89040),(nextval($89041),$89042,$89043,$89044,$89045,$89046,$89047,$89048,$89049,$89050,$89051,$89052,$89053,$89054),(nextval($89055),$89056,$89057,$89058,$89059,$89060,$89061,$89062,$89063,$89064,$89065,$89066,$89067,$89068),(nextval($89069),$89070,$89071,$89072,$89073,$89074,$89075,$89076,$89077,$89078,$89079,$89080,$89081,$89082),(nextval($89083),$89084,$89085,$89086,$89087,$89088,$89089,$89090,$89091,$89092,$89093,$89094,$89095,$89096),(nextval($89097),$89098,$89099,$89100,$89101,$89102,$89103,$89104,$89105,$89106,$89107,$89108,$89109,$89110),(nextval($89111),$89112,$89113,$89114,$89115,$89116,$89117,$89118,$89119,$89120,$89121,$89122,$89123,$89124),(nextval($89125),$89126,$89127,$89128,$89129,$89130,$89131,$89132,$89133,$89134,$89135,$89136,$89137,$89138),(nextval($89139),$89140,$89141,$89142,$89143,$89144,$89145,$89146,$89147,$89148,$89149,$89150,$89151,$89152),(nextval($89153),$89154,$89155,$89156,$89157,$89158,$89159,$89160,$89161,$89162,$89163,$89164,$89165,$89166),(nextval($89167),$89168,$89169,$89170,$89171,$89172,$89173,$89174,$89175,$89176,$89177,$89178,$89179,$89180),(nextval($89181),$89182,$89183,$89184,$89185,$89186,$89187,$89188,$89189,$89190,$89191,$89192,$89193,$89194),(nextval($89195),$89196,$89197,$89198,$89199,$89200,$89201,$89202,$89203,$89204,$89205,$89206,$89207,$89208),(nextval($89209),$89210,$89211,$89212,$89213,$89214,$89215,$89216,$89217,$89218,$89219,$89220,$89221,$89222),(nextval($89223),$89224,$89225,$89226,$89227,$89228,$89229,$89230,$89231,$89232,$89233,$89234,$89235,$89236),(nextval($89237),$89238,$89239,$89240,$89241,$89242,$89243,$89244,$89245,$89246,$89247,$89248,$89249,$89250),(nextval($89251),$89252,$89253,$89254,$89255,$89256,$89257,$89258,$89259,$89260,$89261,$89262,$89263,$89264),(nextval($89265),$89266,$89267,$89268,$89269,$89270,$89271,$89272,$89273,$89274,$89275,$89276,$89277,$89278),(nextval($89279),$89280,$89281,$89282,$89283,$89284,$89285,$89286,$89287,$89288,$89289,$89290,$89291,$89292),(nextval($89293),$89294,$89295,$89296,$89297,$89298,$89299,$89300,$89301,$89302,$89303,$89304,$89305,$89306),(nextval($89307),$89308,$89309,$89310,$89311,$89312,$89313,$89314,$89315,$89316,$89317,$89318,$89319,$89320),(nextval($89321),$89322,$89323,$89324,$89325,$89326,$89327,$89328,$89329,$89330,$89331,$89332,$89333,$89334),(nextval($89335),$89336,$89337,$89338,$89339,$89340,$89341,$89342,$89343,$89344,$89345,$89346,$89347,$89348),(nextval($89349),$89350,$89351,$89352,$89353,$89354,$89355,$89356,$89357,$89358,$89359,$89360,$89361,$89362),(nextval($89363),$89364,$89365,$89366,$89367,$89368,$89369,$89370,$89371,$89372,$89373,$89374,$89375,$89376),(nextval($89377),$89378,$89379,$89380,$89381,$89382,$89383,$89384,$89385,$89386,$89387,$89388,$89389,$89390),(nextval($89391),$89392,$89393,$89394,$89395,$89396,$89397,$89398,$89399,$89400,$89401,$89402,$89403,$89404),(nextval($89405),$89406,$89407,$89408,$89409,$89410,$89411,$89412,$89413,$89414,$89415,$89416,$89417,$89418),(nextval($89419),$89420,$89421,$89422,$89423,$89424,$89425,$89426,$89427,$89428,$89429,$89430,$89431,$89432),(nextval($89433),$89434,$89435,$89436,$89437,$89438,$89439,$89440,$89441,$89442,$89443,$89444,$89445,$89446),(nextval($89447),$89448,$89449,$89450,$89451,$89452,$89453,$89454,$89455,$89456,$89457,$89458,$89459,$89460),(nextval($89461),$89462,$89463,$89464,$89465,$89466,$89467,$89468,$89469,$89470,$89471,$89472,$89473,$89474),(nextval($89475),$89476,$89477,$89478,$89479,$89480,$89481,$89482,$89483,$89484,$89485,$89486,$89487,$89488),(nextval($89489),$89490,$89491,$89492,$89493,$89494,$89495,$89496,$89497,$89498,$89499,$89500,$89501,$89502),(nextval($89503),$89504,$89505,$89506,$89507,$89508,$89509,$89510,$89511,$89512,$89513,$89514,$89515,$89516),(nextval($89517),$89518,$89519,$89520,$89521,$89522,$89523,$89524,$89525,$89526,$89527,$89528,$89529,$89530),(nextval($89531),$89532,$89533,$89534,$89535,$89536,$89537,$89538,$89539,$89540,$89541,$89542,$89543,$89544),(nextval($89545),$89546,$89547,$89548,$89549,$89550,$89551,$89552,$89553,$89554,$89555,$89556,$89557,$89558),(nextval($89559),$89560,$89561,$89562,$89563,$89564,$89565,$89566,$89567,$89568,$89569,$89570,$89571,$89572),(nextval($89573),$89574,$89575,$89576,$89577,$89578,$89579,$89580,$89581,$89582,$89583,$89584,$89585,$89586),(nextval($89587),$89588,$89589,$89590,$89591,$89592,$89593,$89594,$89595,$89596,$89597,$89598,$89599,$89600),(nextval($89601),$89602,$89603,$89604,$89605,$89606,$89607,$89608,$89609,$89610,$89611,$89612,$89613,$89614),(nextval($89615),$89616,$89617,$89618,$89619,$89620,$89621,$89622,$89623,$89624,$89625,$89626,$89627,$89628),(nextval($89629),$89630,$89631,$89632,$89633,$89634,$89635,$89636,$89637,$89638,$89639,$89640,$89641,$89642),(nextval($89643),$89644,$89645,$89646,$89647,$89648,$89649,$89650,$89651,$89652,$89653,$89654,$89655,$89656),(nextval($89657),$89658,$89659,$89660,$89661,$89662,$89663,$89664,$89665,$89666,$89667,$89668,$89669,$89670),(nextval($89671),$89672,$89673,$89674,$89675,$89676,$89677,$89678,$89679,$89680,$89681,$89682,$89683,$89684),(nextval($89685),$89686,$89687,$89688,$89689,$89690,$89691,$89692,$89693,$89694,$89695,$89696,$89697,$89698),(nextval($89699),$89700,$89701,$89702,$89703,$89704,$89705,$89706,$89707,$89708,$89709,$89710,$89711,$89712),(nextval($89713),$89714,$89715,$89716,$89717,$89718,$89719,$89720,$89721,$89722,$89723,$89724,$89725,$89726),(nextval($89727),$89728,$89729,$89730,$89731,$89732,$89733,$89734,$89735,$89736,$89737,$89738,$89739,$89740),(nextval($89741),$89742,$89743,$89744,$89745,$89746,$89747,$89748,$89749,$89750,$89751,$89752,$89753,$89754),(nextval($89755),$89756,$89757,$89758,$89759,$89760,$89761,$89762,$89763,$89764,$89765,$89766,$89767,$89768),(nextval($89769),$89770,$89771,$89772,$89773,$89774,$89775,$89776,$89777,$89778,$89779,$89780,$89781,$89782),(nextval($89783),$89784,$89785,$89786,$89787,$89788,$89789,$89790,$89791,$89792,$89793,$89794,$89795,$89796),(nextval($89797),$89798,$89799,$89800,$89801,$89802,$89803,$89804,$89805,$89806,$89807,$89808,$89809,$89810),(nextval($89811),$89812,$89813,$89814,$89815,$89816,$89817,$89818,$89819,$89820,$89821,$89822,$89823,$89824),(nextval($89825),$89826,$89827,$89828,$89829,$89830,$89831,$89832,$89833,$89834,$89835,$89836,$89837,$89838),(nextval($89839),$89840,$89841,$89842,$89843,$89844,$89845,$89846,$89847,$89848,$89849,$89850,$89851,$89852),(nextval($89853),$89854,$89855,$89856,$89857,$89858,$89859,$89860,$89861,$89862,$89863,$89864,$89865,$89866),(nextval($89867),$89868,$89869,$89870,$89871,$89872,$89873,$89874,$89875,$89876,$89877,$89878,$89879,$89880),(nextval($89881),$89882,$89883,$89884,$89885,$89886,$89887,$89888,$89889,$89890,$89891,$89892,$89893,$89894),(nextval($89895),$89896,$89897,$89898,$89899,$89900,$89901,$89902,$89903,$89904,$89905,$89906,$89907,$89908),(nextval($89909),$89910,$89911,$89912,$89913,$89914,$89915,$89916,$89917,$89918,$89919,$89920,$89921,$89922),(nextval($89923),$89924,$89925,$89926,$89927,$89928,$89929,$89930,$89931,$89932,$89933,$89934,$89935,$89936),(nextval($89937),$89938,$89939,$89940,$89941,$89942,$89943,$89944,$89945,$89946,$89947,$89948,$89949,$89950),(nextval($89951),$89952,$89953,$89954,$89955,$89956,$89957,$89958,$89959,$89960,$89961,$89962,$89963,$89964),(nextval($89965),$89966,$89967,$89968,$89969,$89970,$89971,$89972,$89973,$89974,$89975,$89976,$89977,$89978),(nextval($89979),$89980,$89981,$89982,$89983,$89984,$89985,$89986,$89987,$89988,$89989,$89990,$89991,$89992),(nextval($89993),$89994,$89995,$89996,$89997,$89998,$89999,$90000,$90001,$90002,$90003,$90004,$90005,$90006),(nextval($90007),$90008,$90009,$90010,$90011,$90012,$90013,$90014,$90015,$90016,$90017,$90018,$90019,$90020),(nextval($90021),$90022,$90023,$90024,$90025,$90026,$90027,$90028,$90029,$90030,$90031,$90032,$90033,$90034),(nextval($90035),$90036,$90037,$90038,$90039,$90040,$90041,$90042,$90043,$90044,$90045,$90046,$90047,$90048),(nextval($90049),$90050,$90051,$90052,$90053,$90054,$90055,$90056,$90057,$90058,$90059,$90060,$90061,$90062),(nextval($90063),$90064,$90065,$90066,$90067,$90068,$90069,$90070,$90071,$90072,$90073,$90074,$90075,$90076),(nextval($90077),$90078,$90079,$90080,$90081,$90082,$90083,$90084,$90085,$90086,$90087,$90088,$90089,$90090),(nextval($90091),$90092,$90093,$90094,$90095,$90096,$90097,$90098,$90099,$90100,$90101,$90102,$90103,$90104),(nextval($90105),$90106,$90107,$90108,$90109,$90110,$90111,$90112,$90113,$90114,$90115,$90116,$90117,$90118),(nextval($90119),$90120,$90121,$90122,$90123,$90124,$90125,$90126,$90127,$90128,$90129,$90130,$90131,$90132),(nextval($90133),$90134,$90135,$90136,$90137,$90138,$90139,$90140,$90141,$90142,$90143,$90144,$90145,$90146),(nextval($90147),$90148,$90149,$90150,$90151,$90152,$90153,$90154,$90155,$90156,$90157,$90158,$90159,$90160),(nextval($90161),$90162,$90163,$90164,$90165,$90166,$90167,$90168,$90169,$90170,$90171,$90172,$90173,$90174),(nextval($90175),$90176,$90177,$90178,$90179,$90180,$90181,$90182,$90183,$90184,$90185,$90186,$90187,$90188),(nextval($90189),$90190,$90191,$90192,$90193,$90194,$90195,$90196,$90197,$90198,$90199,$90200,$90201,$90202),(nextval($90203),$90204,$90205,$90206,$90207,$90208,$90209,$90210,$90211,$90212,$90213,$90214,$90215,$90216),(nextval($90217),$90218,$90219,$90220,$90221,$90222,$90223,$90224,$90225,$90226,$90227,$90228,$90229,$90230),(nextval($90231),$90232,$90233,$90234,$90235,$90236,$90237,$90238,$90239,$90240,$90241,$90242,$90243,$90244),(nextval($90245),$90246,$90247,$90248,$90249,$90250,$90251,$90252,$90253,$90254,$90255,$90256,$90257,$90258),(nextval($90259),$90260,$90261,$90262,$90263,$90264,$90265,$90266,$90267,$90268,$90269,$90270,$90271,$90272),(nextval($90273),$90274,$90275,$90276,$90277,$90278,$90279,$90280,$90281,$90282,$90283,$90284,$90285,$90286),(nextval($90287),$90288,$90289,$90290,$90291,$90292,$90293,$90294,$90295,$90296,$90297,$90298,$90299,$90300),(nextval($90301),$90302,$90303,$90304,$90305,$90306,$90307,$90308,$90309,$90310,$90311,$90312,$90313,$90314),(nextval($90315),$90316,$90317,$90318,$90319,$90320,$90321,$90322,$90323,$90324,$90325,$90326,$90327,$90328),(nextval($90329),$90330,$90331,$90332,$90333,$90334,$90335,$90336,$90337,$90338,$90339,$90340,$90341,$90342),(nextval($90343),$90344,$90345,$90346,$90347,$90348,$90349,$90350,$90351,$90352,$90353,$90354,$90355,$90356),(nextval($90357),$90358,$90359,$90360,$90361,$90362,$90363,$90364,$90365,$90366,$90367,$90368,$90369,$90370),(nextval($90371),$90372,$90373,$90374,$90375,$90376,$90377,$90378,$90379,$90380,$90381,$90382,$90383,$90384),(nextval($90385),$90386,$90387,$90388,$90389,$90390,$90391,$90392,$90393,$90394,$90395,$90396,$90397,$90398),(nextval($90399),$90400,$90401,$90402,$90403,$90404,$90405,$90406,$90407,$90408,$90409,$90410,$90411,$90412),(nextval($90413),$90414,$90415,$90416,$90417,$90418,$90419,$90420,$90421,$90422,$90423,$90424,$90425,$90426),(nextval($90427),$90428,$90429,$90430,$90431,$90432,$90433,$90434,$90435,$90436,$90437,$90438,$90439,$90440),(nextval($90441),$90442,$90443,$90444,$90445,$90446,$90447,$90448,$90449,$90450,$90451,$90452,$90453,$90454),(nextval($90455),$90456,$90457,$90458,$90459,$90460,$90461,$90462,$90463,$90464,$90465,$90466,$90467,$90468),(nextval($90469),$90470,$90471,$90472,$90473,$90474,$90475,$90476,$90477,$90478,$90479,$90480,$90481,$90482),(nextval($90483),$90484,$90485,$90486,$90487,$90488,$90489,$90490,$90491,$90492,$90493,$90494,$90495,$90496),(nextval($90497),$90498,$90499,$90500,$90501,$90502,$90503,$90504,$90505,$90506,$90507,$90508,$90509,$90510),(nextval($90511),$90512,$90513,$90514,$90515,$90516,$90517,$90518,$90519,$90520,$90521,$90522,$90523,$90524),(nextval($90525),$90526,$90527,$90528,$90529,$90530,$90531,$90532,$90533,$90534,$90535,$90536,$90537,$90538),(nextval($90539),$90540,$90541,$90542,$90543,$90544,$90545,$90546,$90547,$90548,$90549,$90550,$90551,$90552),(nextval($90553),$90554,$90555,$90556,$90557,$90558,$90559,$90560,$90561,$90562,$90563,$90564,$90565,$90566),(nextval($90567),$90568,$90569,$90570,$90571,$90572,$90573,$90574,$90575,$90576,$90577,$90578,$90579,$90580),(nextval($90581),$90582,$90583,$90584,$90585,$90586,$90587,$90588,$90589,$90590,$90591,$90592,$90593,$90594),(nextval($90595),$90596,$90597,$90598,$90599,$90600,$90601,$90602,$90603,$90604,$90605,$90606,$90607,$90608),(nextval($90609),$90610,$90611,$90612,$90613,$90614,$90615,$90616,$90617,$90618,$90619,$90620,$90621,$90622),(nextval($90623),$90624,$90625,$90626,$90627,$90628,$90629,$90630,$90631,$90632,$90633,$90634,$90635,$90636),(nextval($90637),$90638,$90639,$90640,$90641,$90642,$90643,$90644,$90645,$90646,$90647,$90648,$90649,$90650),(nextval($90651),$90652,$90653,$90654,$90655,$90656,$90657,$90658,$90659,$90660,$90661,$90662,$90663,$90664),(nextval($90665),$90666,$90667,$90668,$90669,$90670,$90671,$90672,$90673,$90674,$90675,$90676,$90677,$90678),(nextval($90679),$90680,$90681,$90682,$90683,$90684,$90685,$90686,$90687,$90688,$90689,$90690,$90691,$90692),(nextval($90693),$90694,$90695,$90696,$90697,$90698,$90699,$90700,$90701,$90702,$90703,$90704,$90705,$90706),(nextval($90707),$90708,$90709,$90710,$90711,$90712,$90713,$90714,$90715,$90716,$90717,$90718,$90719,$90720),(nextval($90721),$90722,$90723,$90724,$90725,$90726,$90727,$90728,$90729,$90730,$90731,$90732,$90733,$90734),(nextval($90735),$90736,$90737,$90738,$90739,$90740,$90741,$90742,$90743,$90744,$90745,$90746,$90747,$90748),(nextval($90749),$90750,$90751,$90752,$90753,$90754,$90755,$90756,$90757,$90758,$90759,$90760,$90761,$90762),(nextval($90763),$90764,$90765,$90766,$90767,$90768,$90769,$90770,$90771,$90772,$90773,$90774,$90775,$90776),(nextval($90777),$90778,$90779,$90780,$90781,$90782,$90783,$90784,$90785,$90786,$90787,$90788,$90789,$90790),(nextval($90791),$90792,$90793,$90794,$90795,$90796,$90797,$90798,$90799,$90800,$90801,$90802,$90803,$90804),(nextval($90805),$90806,$90807,$90808,$90809,$90810,$90811,$90812,$90813,$90814,$90815,$90816,$90817,$90818),(nextval($90819),$90820,$90821,$90822,$90823,$90824,$90825,$90826,$90827,$90828,$90829,$90830,$90831,$90832),(nextval($90833),$90834,$90835,$90836,$90837,$90838,$90839,$90840,$90841,$90842,$90843,$90844,$90845,$90846),(nextval($90847),$90848,$90849,$90850,$90851,$90852,$90853,$90854,$90855,$90856,$90857,$90858,$90859,$90860),(nextval($90861),$90862,$90863,$90864,$90865,$90866,$90867,$90868,$90869,$90870,$90871,$90872,$90873,$90874),(nextval($90875),$90876,$90877,$90878,$90879,$90880,$90881,$90882,$90883,$90884,$90885,$90886,$90887,$90888),(nextval($90889),$90890,$90891,$90892,$90893,$90894,$90895,$90896,$90897,$90898,$90899,$90900,$90901,$90902),(nextval($90903),$90904,$90905,$90906,$90907,$90908,$90909,$90910,$90911,$90912,$90913,$90914,$90915,$90916),(nextval($90917),$90918,$90919,$90920,$90921,$90922,$90923,$90924,$90925,$90926,$90927,$90928,$90929,$90930),(nextval($90931),$90932,$90933,$90934,$90935,$90936,$90937,$90938,$90939,$90940,$90941,$90942,$90943,$90944),(nextval($90945),$90946,$90947,$90948,$90949,$90950,$90951,$90952,$90953,$90954,$90955,$90956,$90957,$90958),(nextval($90959),$90960,$90961,$90962,$90963,$90964,$90965,$90966,$90967,$90968,$90969,$90970,$90971,$90972),(nextval($90973),$90974,$90975,$90976,$90977,$90978,$90979,$90980,$90981,$90982,$90983,$90984,$90985,$90986),(nextval($90987),$90988,$90989,$90990,$90991,$90992,$90993,$90994,$90995,$90996,$90997,$90998,$90999,$91000),(nextval($91001),$91002,$91003,$91004,$91005,$91006,$91007,$91008,$91009,$91010,$91011,$91012,$91013,$91014),(nextval($91015),$91016,$91017,$91018,$91019,$91020,$91021,$91022,$91023,$91024,$91025,$91026,$91027,$91028),(nextval($91029),$91030,$91031,$91032,$91033,$91034,$91035,$91036,$91037,$91038,$91039,$91040,$91041,$91042),(nextval($91043),$91044,$91045,$91046,$91047,$91048,$91049,$91050,$91051,$91052,$91053,$91054,$91055,$91056),(nextval($91057),$91058,$91059,$91060,$91061,$91062,$91063,$91064,$91065,$91066,$91067,$91068,$91069,$91070),(nextval($91071),$91072,$91073,$91074,$91075,$91076,$91077,$91078,$91079,$91080,$91081,$91082,$91083,$91084),(nextval($91085),$91086,$91087,$91088,$91089,$91090,$91091,$91092,$91093,$91094,$91095,$91096,$91097,$91098),(nextval($91099),$91100,$91101,$91102,$91103,$91104,$91105,$91106,$91107,$91108,$91109,$91110,$91111,$91112),(nextval($91113),$91114,$91115,$91116,$91117,$91118,$91119,$91120,$91121,$91122,$91123,$91124,$91125,$91126),(nextval($91127),$91128,$91129,$91130,$91131,$91132,$91133,$91134,$91135,$91136,$91137,$91138,$91139,$91140),(nextval($91141),$91142,$91143,$91144,$91145,$91146,$91147,$91148,$91149,$91150,$91151,$91152,$91153,$91154),(nextval($91155),$91156,$91157,$91158,$91159,$91160,$91161,$91162,$91163,$91164,$91165,$91166,$91167,$91168),(nextval($91169),$91170,$91171,$91172,$91173,$91174,$91175,$91176,$91177,$91178,$91179,$91180,$91181,$91182),(nextval($91183),$91184,$91185,$91186,$91187,$91188,$91189,$91190,$91191,$91192,$91193,$91194,$91195,$91196),(nextval($91197),$91198,$91199,$91200,$91201,$91202,$91203,$91204,$91205,$91206,$91207,$91208,$91209,$91210),(nextval($91211),$91212,$91213,$91214,$91215,$91216,$91217,$91218,$91219,$91220,$91221,$91222,$91223,$91224),(nextval($91225),$91226,$91227,$91228,$91229,$91230,$91231,$91232,$91233,$91234,$91235,$91236,$91237,$91238),(nextval($91239),$91240,$91241,$91242,$91243,$91244,$91245,$91246,$91247,$91248,$91249,$91250,$91251,$91252),(nextval($91253),$91254,$91255,$91256,$91257,$91258,$91259,$91260,$91261,$91262,$91263,$91264,$91265,$91266),(nextval($91267),$91268,$91269,$91270,$91271,$91272,$91273,$91274,$91275,$91276,$91277,$91278,$91279,$91280),(nextval($91281),$91282,$91283,$91284,$91285,$91286,$91287,$91288,$91289,$91290,$91291,$91292,$91293,$91294),(nextval($91295),$91296,$91297,$91298,$91299,$91300,$91301,$91302,$91303,$91304,$91305,$91306,$91307,$91308),(nextval($91309),$91310,$91311,$91312,$91313,$91314,$91315,$91316,$91317,$91318,$91319,$91320,$91321,$91322),(nextval($91323),$91324,$91325,$91326,$91327,$91328,$91329,$91330,$91331,$91332,$91333,$91334,$91335,$91336),(nextval($91337),$91338,$91339,$91340,$91341,$91342,$91343,$91344,$91345,$91346,$91347,$91348,$91349,$91350),(nextval($91351),$91352,$91353,$91354,$91355,$91356,$91357,$91358,$91359,$91360,$91361,$91362,$91363,$91364),(nextval($91365),$91366,$91367,$91368,$91369,$91370,$91371,$91372,$91373,$91374,$91375,$91376,$91377,$91378),(nextval($91379),$91380,$91381,$91382,$91383,$91384,$91385,$91386,$91387,$91388,$91389,$91390,$91391,$91392),(nextval($91393),$91394,$91395,$91396,$91397,$91398,$91399,$91400,$91401,$91402,$91403,$91404,$91405,$91406),(nextval($91407),$91408,$91409,$91410,$91411,$91412,$91413,$91414,$91415,$91416,$91417,$91418,$91419,$91420),(nextval($91421),$91422,$91423,$91424,$91425,$91426,$91427,$91428,$91429,$91430,$91431,$91432,$91433,$91434),(nextval($91435),$91436,$91437,$91438,$91439,$91440,$91441,$91442,$91443,$91444,$91445,$91446,$91447,$91448),(nextval($91449),$91450,$91451,$91452,$91453,$91454,$91455,$91456,$91457,$91458,$91459,$91460,$91461,$91462),(nextval($91463),$91464,$91465,$91466,$91467,$91468,$91469,$91470,$91471,$91472,$91473,$91474,$91475,$91476),(nextval($91477),$91478,$91479,$91480,$91481,$91482,$91483,$91484,$91485,$91486,$91487,$91488,$91489,$91490),(nextval($91491),$91492,$91493,$91494,$91495,$91496,$91497,$91498,$91499,$91500,$91501,$91502,$91503,$91504),(nextval($91505),$91506,$91507,$91508,$91509,$91510,$91511,$91512,$91513,$91514,$91515,$91516,$91517,$91518),(nextval($91519),$91520,$91521,$91522,$91523,$91524,$91525,$91526,$91527,$91528,$91529,$91530,$91531,$91532),(nextval($91533),$91534,$91535,$91536,$91537,$91538,$91539,$91540,$91541,$91542,$91543,$91544,$91545,$91546),(nextval($91547),$91548,$91549,$91550,$91551,$91552,$91553,$91554,$91555,$91556,$91557,$91558,$91559,$91560),(nextval($91561),$91562,$91563,$91564,$91565,$91566,$91567,$91568,$91569,$91570,$91571,$91572,$91573,$91574),(nextval($91575),$91576,$91577,$91578,$91579,$91580,$91581,$91582,$91583,$91584,$91585,$91586,$91587,$91588),(nextval($91589),$91590,$91591,$91592,$91593,$91594,$91595,$91596,$91597,$91598,$91599,$91600,$91601,$91602),(nextval($91603),$91604,$91605,$91606,$91607,$91608,$91609,$91610,$91611,$91612,$91613,$91614,$91615,$91616),(nextval($91617),$91618,$91619,$91620,$91621,$91622,$91623,$91624,$91625,$91626,$91627,$91628,$91629,$91630),(nextval($91631),$91632,$91633,$91634,$91635,$91636,$91637,$91638,$91639,$91640,$91641,$91642,$91643,$91644),(nextval($91645),$91646,$91647,$91648,$91649,$91650,$91651,$91652,$91653,$91654,$91655,$91656,$91657,$91658),(nextval($91659),$91660,$91661,$91662,$91663,$91664,$91665,$91666,$91667,$91668,$91669,$91670,$91671,$91672),(nextval($91673),$91674,$91675,$91676,$91677,$91678,$91679,$91680,$91681,$91682,$91683,$91684,$91685,$91686),(nextval($91687),$91688,$91689,$91690,$91691,$91692,$91693,$91694,$91695,$91696,$91697,$91698,$91699,$91700),(nextval($91701),$91702,$91703,$91704,$91705,$91706,$91707,$91708,$91709,$91710,$91711,$91712,$91713,$91714),(nextval($91715),$91716,$91717,$91718,$91719,$91720,$91721,$91722,$91723,$91724,$91725,$91726,$91727,$91728),(nextval($91729),$91730,$91731,$91732,$91733,$91734,$91735,$91736,$91737,$91738,$91739,$91740,$91741,$91742),(nextval($91743),$91744,$91745,$91746,$91747,$91748,$91749,$91750,$91751,$91752,$91753,$91754,$91755,$91756),(nextval($91757),$91758,$91759,$91760,$91761,$91762,$91763,$91764,$91765,$91766,$91767,$91768,$91769,$91770),(nextval($91771),$91772,$91773,$91774,$91775,$91776,$91777,$91778,$91779,$91780,$91781,$91782,$91783,$91784),(nextval($91785),$91786,$91787,$91788,$91789,$91790,$91791,$91792,$91793,$91794,$91795,$91796,$91797,$91798),(nextval($91799),$91800,$91801,$91802,$91803,$91804,$91805,$91806,$91807,$91808,$91809,$91810,$91811,$91812),(nextval($91813),$91814,$91815,$91816,$91817,$91818,$91819,$91820,$91821,$91822,$91823,$91824,$91825,$91826),(nextval($91827),$91828,$91829,$91830,$91831,$91832,$91833,$91834,$91835,$91836,$91837,$91838,$91839,$91840),(nextval($91841),$91842,$91843,$91844,$91845,$91846,$91847,$91848,$91849,$91850,$91851,$91852,$91853,$91854),(nextval($91855),$91856,$91857,$91858,$91859,$91860,$91861,$91862,$91863,$91864,$91865,$91866,$91867,$91868),(nextval($91869),$91870,$91871,$91872,$91873,$91874,$91875,$91876,$91877,$91878,$91879,$91880,$91881,$91882),(nextval($91883),$91884,$91885,$91886,$91887,$91888,$91889,$91890,$91891,$91892,$91893,$91894,$91895,$91896),(nextval($91897),$91898,$91899,$91900,$91901,$91902,$91903,$91904,$91905,$91906,$91907,$91908,$91909,$91910),(nextval($91911),$91912,$91913,$91914,$91915,$91916,$91917,$91918,$91919,$91920,$91921,$91922,$91923,$91924),(nextval($91925),$91926,$91927,$91928,$91929,$91930,$91931,$91932,$91933,$91934,$91935,$91936,$91937,$91938),(nextval($91939),$91940,$91941,$91942,$91943,$91944,$91945,$91946,$91947,$91948,$91949,$91950,$91951,$91952),(nextval($91953),$91954,$91955,$91956,$91957,$91958,$91959,$91960,$91961,$91962,$91963,$91964,$91965,$91966),(nextval($91967),$91968,$91969,$91970,$91971,$91972,$91973,$91974,$91975,$91976,$91977,$91978,$91979,$91980),(nextval($91981),$91982,$91983,$91984,$91985,$91986,$91987,$91988,$91989,$91990,$91991,$91992,$91993,$91994),(nextval($91995),$91996,$91997,$91998,$91999,$92000,$92001,$92002,$92003,$92004,$92005,$92006,$92007,$92008),(nextval($92009),$92010,$92011,$92012,$92013,$92014,$92015,$92016,$92017,$92018,$92019,$92020,$92021,$92022),(nextval($92023),$92024,$92025,$92026,$92027,$92028,$92029,$92030,$92031,$92032,$92033,$92034,$92035,$92036),(nextval($92037),$92038,$92039,$92040,$92041,$92042,$92043,$92044,$92045,$92046,$92047,$92048,$92049,$92050),(nextval($92051),$92052,$92053,$92054,$92055,$92056,$92057,$92058,$92059,$92060,$92061,$92062,$92063,$92064),(nextval($92065),$92066,$92067,$92068,$92069,$92070,$92071,$92072,$92073,$92074,$92075,$92076,$92077,$92078),(nextval($92079),$92080,$92081,$92082,$92083,$92084,$92085,$92086,$92087,$92088,$92089,$92090,$92091,$92092),(nextval($92093),$92094,$92095,$92096,$92097,$92098,$92099,$92100,$92101,$92102,$92103,$92104,$92105,$92106),(nextval($92107),$92108,$92109,$92110,$92111,$92112,$92113,$92114,$92115,$92116,$92117,$92118,$92119,$92120),(nextval($92121),$92122,$92123,$92124,$92125,$92126,$92127,$92128,$92129,$92130,$92131,$92132,$92133,$92134),(nextval($92135),$92136,$92137,$92138,$92139,$92140,$92141,$92142,$92143,$92144,$92145,$92146,$92147,$92148),(nextval($92149),$92150,$92151,$92152,$92153,$92154,$92155,$92156,$92157,$92158,$92159,$92160,$92161,$92162),(nextval($92163),$92164,$92165,$92166,$92167,$92168,$92169,$92170,$92171,$92172,$92173,$92174,$92175,$92176),(nextval($92177),$92178,$92179,$92180,$92181,$92182,$92183,$92184,$92185,$92186,$92187,$92188,$92189,$92190),(nextval($92191),$92192,$92193,$92194,$92195,$92196,$92197,$92198,$92199,$92200,$92201,$92202,$92203,$92204),(nextval($92205),$92206,$92207,$92208,$92209,$92210,$92211,$92212,$92213,$92214,$92215,$92216,$92217,$92218),(nextval($92219),$92220,$92221,$92222,$92223,$92224,$92225,$92226,$92227,$92228,$92229,$92230,$92231,$92232),(nextval($92233),$92234,$92235,$92236,$92237,$92238,$92239,$92240,$92241,$92242,$92243,$92244,$92245,$92246),(nextval($92247),$92248,$92249,$92250,$92251,$92252,$92253,$92254,$92255,$92256,$92257,$92258,$92259,$92260),(nextval($92261),$92262,$92263,$92264,$92265,$92266,$92267,$92268,$92269,$92270,$92271,$92272,$92273,$92274),(nextval($92275),$92276,$92277,$92278,$92279,$92280,$92281,$92282,$92283,$92284,$92285,$92286,$92287,$92288),(nextval($92289),$92290,$92291,$92292,$92293,$92294,$92295,$92296,$92297,$92298,$92299,$92300,$92301,$92302),(nextval($92303),$92304,$92305,$92306,$92307,$92308,$92309,$92310,$92311,$92312,$92313,$92314,$92315,$92316),(nextval($92317),$92318,$92319,$92320,$92321,$92322,$92323,$92324,$92325,$92326,$92327,$92328,$92329,$92330),(nextval($92331),$92332,$92333,$92334,$92335,$92336,$92337,$92338,$92339,$92340,$92341,$92342,$92343,$92344),(nextval($92345),$92346,$92347,$92348,$92349,$92350,$92351,$92352,$92353,$92354,$92355,$92356,$92357,$92358),(nextval($92359),$92360,$92361,$92362,$92363,$92364,$92365,$92366,$92367,$92368,$92369,$92370,$92371,$92372),(nextval($92373),$92374,$92375,$92376,$92377,$92378,$92379,$92380,$92381,$92382,$92383,$92384,$92385,$92386),(nextval($92387),$92388,$92389,$92390,$92391,$92392,$92393,$92394,$92395,$92396,$92397,$92398,$92399,$92400),(nextval($92401),$92402,$92403,$92404,$92405,$92406,$92407,$92408,$92409,$92410,$92411,$92412,$92413,$92414),(nextval($92415),$92416,$92417,$92418,$92419,$92420,$92421,$92422,$92423,$92424,$92425,$92426,$92427,$92428),(nextval($92429),$92430,$92431,$92432,$92433,$92434,$92435,$92436,$92437,$92438,$92439,$92440,$92441,$92442),(nextval($92443),$92444,$92445,$92446,$92447,$92448,$92449,$92450,$92451,$92452,$92453,$92454,$92455,$92456),(nextval($92457),$92458,$92459,$92460,$92461,$92462,$92463,$92464,$92465,$92466,$92467,$92468,$92469,$92470),(nextval($92471),$92472,$92473,$92474,$92475,$92476,$92477,$92478,$92479,$92480,$92481,$92482,$92483,$92484),(nextval($92485),$92486,$92487,$92488,$92489,$92490,$92491,$92492,$92493,$92494,$92495,$92496,$92497,$92498),(nextval($92499),$92500,$92501,$92502,$92503,$92504,$92505,$92506,$92507,$92508,$92509,$92510,$92511,$92512),(nextval($92513),$92514,$92515,$92516,$92517,$92518,$92519,$92520,$92521,$92522,$92523,$92524,$92525,$92526),(nextval($92527),$92528,$92529,$92530,$92531,$92532,$92533,$92534,$92535,$92536,$92537,$92538,$92539,$92540),(nextval($92541),$92542,$92543,$92544,$92545,$92546,$92547,$92548,$92549,$92550,$92551,$92552,$92553,$92554),(nextval($92555),$92556,$92557,$92558,$92559,$92560,$92561,$92562,$92563,$92564,$92565,$92566,$92567,$92568),(nextval($92569),$92570,$92571,$92572,$92573,$92574,$92575,$92576,$92577,$92578,$92579,$92580,$92581,$92582),(nextval($92583),$92584,$92585,$92586,$92587,$92588,$92589,$92590,$92591,$92592,$92593,$92594,$92595,$92596),(nextval($92597),$92598,$92599,$92600,$92601,$92602,$92603,$92604,$92605,$92606,$92607,$92608,$92609,$92610),(nextval($92611),$92612,$92613,$92614,$92615,$92616,$92617,$92618,$92619,$92620,$92621,$92622,$92623,$92624),(nextval($92625),$92626,$92627,$92628,$92629,$92630,$92631,$92632,$92633,$92634,$92635,$92636,$92637,$92638),(nextval($92639),$92640,$92641,$92642,$92643,$92644,$92645,$92646,$92647,$92648,$92649,$92650,$92651,$92652),(nextval($92653),$92654,$92655,$92656,$92657,$92658,$92659,$92660,$92661,$92662,$92663,$92664,$92665,$92666),(nextval($92667),$92668,$92669,$92670,$92671,$92672,$92673,$92674,$92675,$92676,$92677,$92678,$92679,$92680),(nextval($92681),$92682,$92683,$92684,$92685,$92686,$92687,$92688,$92689,$92690,$92691,$92692,$92693,$92694),(nextval($92695),$92696,$92697,$92698,$92699,$92700,$92701,$92702,$92703,$92704,$92705,$92706,$92707,$92708),(nextval($92709),$92710,$92711,$92712,$92713,$92714,$92715,$92716,$92717,$92718,$92719,$92720,$92721,$92722),(nextval($92723),$92724,$92725,$92726,$92727,$92728,$92729,$92730,$92731,$92732,$92733,$92734,$92735,$92736),(nextval($92737),$92738,$92739,$92740,$92741,$92742,$92743,$92744,$92745,$92746,$92747,$92748,$92749,$92750),(nextval($92751),$92752,$92753,$92754,$92755,$92756,$92757,$92758,$92759,$92760,$92761,$92762,$92763,$92764),(nextval($92765),$92766,$92767,$92768,$92769,$92770,$92771,$92772,$92773,$92774,$92775,$92776,$92777,$92778),(nextval($92779),$92780,$92781,$92782,$92783,$92784,$92785,$92786,$92787,$92788,$92789,$92790,$92791,$92792),(nextval($92793),$92794,$92795,$92796,$92797,$92798,$92799,$92800,$92801,$92802,$92803,$92804,$92805,$92806),(nextval($92807),$92808,$92809,$92810,$92811,$92812,$92813,$92814,$92815,$92816,$92817,$92818,$92819,$92820),(nextval($92821),$92822,$92823,$92824,$92825,$92826,$92827,$92828,$92829,$92830,$92831,$92832,$92833,$92834),(nextval($92835),$92836,$92837,$92838,$92839,$92840,$92841,$92842,$92843,$92844,$92845,$92846,$92847,$92848),(nextval($92849),$92850,$92851,$92852,$92853,$92854,$92855,$92856,$92857,$92858,$92859,$92860,$92861,$92862),(nextval($92863),$92864,$92865,$92866,$92867,$92868,$92869,$92870,$92871,$92872,$92873,$92874,$92875,$92876),(nextval($92877),$92878,$92879,$92880,$92881,$92882,$92883,$92884,$92885,$92886,$92887,$92888,$92889,$92890),(nextval($92891),$92892,$92893,$92894,$92895,$92896,$92897,$92898,$92899,$92900,$92901,$92902,$92903,$92904),(nextval($92905),$92906,$92907,$92908,$92909,$92910,$92911,$92912,$92913,$92914,$92915,$92916,$92917,$92918),(nextval($92919),$92920,$92921,$92922,$92923,$92924,$92925,$92926,$92927,$92928,$92929,$92930,$92931,$92932),(nextval($92933),$92934,$92935,$92936,$92937,$92938,$92939,$92940,$92941,$92942,$92943,$92944,$92945,$92946),(nextval($92947),$92948,$92949,$92950,$92951,$92952,$92953,$92954,$92955,$92956,$92957,$92958,$92959,$92960),(nextval($92961),$92962,$92963,$92964,$92965,$92966,$92967,$92968,$92969,$92970,$92971,$92972,$92973,$92974),(nextval($92975),$92976,$92977,$92978,$92979,$92980,$92981,$92982,$92983,$92984,$92985,$92986,$92987,$92988),(nextval($92989),$92990,$92991,$92992,$92993,$92994,$92995,$92996,$92997,$92998,$92999,$93000,$93001,$93002),(nextval($93003),$93004,$93005,$93006,$93007,$93008,$93009,$93010,$93011,$93012,$93013,$93014,$93015,$93016),(nextval($93017),$93018,$93019,$93020,$93021,$93022,$93023,$93024,$93025,$93026,$93027,$93028,$93029,$93030),(nextval($93031),$93032,$93033,$93034,$93035,$93036,$93037,$93038,$93039,$93040,$93041,$93042,$93043,$93044),(nextval($93045),$93046,$93047,$93048,$93049,$93050,$93051,$93052,$93053,$93054,$93055,$93056,$93057,$93058),(nextval($93059),$93060,$93061,$93062,$93063,$93064,$93065,$93066,$93067,$93068,$93069,$93070,$93071,$93072),(nextval($93073),$93074,$93075,$93076,$93077,$93078,$93079,$93080,$93081,$93082,$93083,$93084,$93085,$93086),(nextval($93087),$93088,$93089,$93090,$93091,$93092,$93093,$93094,$93095,$93096,$93097,$93098,$93099,$93100),(nextval($93101),$93102,$93103,$93104,$93105,$93106,$93107,$93108,$93109,$93110,$93111,$93112,$93113,$93114),(nextval($93115),$93116,$93117,$93118,$93119,$93120,$93121,$93122,$93123,$93124,$93125,$93126,$93127,$93128),(nextval($93129),$93130,$93131,$93132,$93133,$93134,$93135,$93136,$93137,$93138,$93139,$93140,$93141,$93142),(nextval($93143),$93144,$93145,$93146,$93147,$93148,$93149,$93150,$93151,$93152,$93153,$93154,$93155,$93156),(nextval($93157),$93158,$93159,$93160,$93161,$93162,$93163,$93164,$93165,$93166,$93167,$93168,$93169,$93170),(nextval($93171),$93172,$93173,$93174,$93175,$93176,$93177,$93178,$93179,$93180,$93181,$93182,$93183,$93184),(nextval($93185),$93186,$93187,$93188,$93189,$93190,$93191,$93192,$93193,$93194,$93195,$93196,$93197,$93198),(nextval($93199),$93200,$93201,$93202,$93203,$93204,$93205,$93206,$93207,$93208,$93209,$93210,$93211,$93212),(nextval($93213),$93214,$93215,$93216,$93217,$93218,$93219,$93220,$93221,$93222,$93223,$93224,$93225,$93226),(nextval($93227),$93228,$93229,$93230,$93231,$93232,$93233,$93234,$93235,$93236,$93237,$93238,$93239,$93240),(nextval($93241),$93242,$93243,$93244,$93245,$93246,$93247,$93248,$93249,$93250,$93251,$93252,$93253,$93254),(nextval($93255),$93256,$93257,$93258,$93259,$93260,$93261,$93262,$93263,$93264,$93265,$93266,$93267,$93268),(nextval($93269),$93270,$93271,$93272,$93273,$93274,$93275,$93276,$93277,$93278,$93279,$93280,$93281,$93282),(nextval($93283),$93284,$93285,$93286,$93287,$93288,$93289,$93290,$93291,$93292,$93293,$93294,$93295,$93296),(nextval($93297),$93298,$93299,$93300,$93301,$93302,$93303,$93304,$93305,$93306,$93307,$93308,$93309,$93310),(nextval($93311),$93312,$93313,$93314,$93315,$93316,$93317,$93318,$93319,$93320,$93321,$93322,$93323,$93324),(nextval($93325),$93326,$93327,$93328,$93329,$93330,$93331,$93332,$93333,$93334,$93335,$93336,$93337,$93338),(nextval($93339),$93340,$93341,$93342,$93343,$93344,$93345,$93346,$93347,$93348,$93349,$93350,$93351,$93352),(nextval($93353),$93354,$93355,$93356,$93357,$93358,$93359,$93360,$93361,$93362,$93363,$93364,$93365,$93366),(nextval($93367),$93368,$93369,$93370,$93371,$93372,$93373,$93374,$93375,$93376,$93377,$93378,$93379,$93380),(nextval($93381),$93382,$93383,$93384,$93385,$93386,$93387,$93388,$93389,$93390,$93391,$93392,$93393,$93394),(nextval($93395),$93396,$93397,$93398,$93399,$93400,$93401,$93402,$93403,$93404,$93405,$93406,$93407,$93408),(nextval($93409),$93410,$93411,$93412,$93413,$93414,$93415,$93416,$93417,$93418,$93419,$93420,$93421,$93422),(nextval($93423),$93424,$93425,$93426,$93427,$93428,$93429,$93430,$93431,$93432,$93433,$93434,$93435,$93436),(nextval($93437),$93438,$93439,$93440,$93441,$93442,$93443,$93444,$93445,$93446,$93447,$93448,$93449,$93450),(nextval($93451),$93452,$93453,$93454,$93455,$93456,$93457,$93458,$93459,$93460,$93461,$93462,$93463,$93464),(nextval($93465),$93466,$93467,$93468,$93469,$93470,$93471,$93472,$93473,$93474,$93475,$93476,$93477,$93478),(nextval($93479),$93480,$93481,$93482,$93483,$93484,$93485,$93486,$93487,$93488,$93489,$93490,$93491,$93492),(nextval($93493),$93494,$93495,$93496,$93497,$93498,$93499,$93500,$93501,$93502,$93503,$93504,$93505,$93506),(nextval($93507),$93508,$93509,$93510,$93511,$93512,$93513,$93514,$93515,$93516,$93517,$93518,$93519,$93520),(nextval($93521),$93522,$93523,$93524,$93525,$93526,$93527,$93528,$93529,$93530,$93531,$93532,$93533,$93534),(nextval($93535),$93536,$93537,$93538,$93539,$93540,$93541,$93542,$93543,$93544,$93545,$93546,$93547,$93548),(nextval($93549),$93550,$93551,$93552,$93553,$93554,$93555,$93556,$93557,$93558,$93559,$93560,$93561,$93562),(nextval($93563),$93564,$93565,$93566,$93567,$93568,$93569,$93570,$93571,$93572,$93573,$93574,$93575,$93576),(nextval($93577),$93578,$93579,$93580,$93581,$93582,$93583,$93584,$93585,$93586,$93587,$93588,$93589,$93590),(nextval($93591),$93592,$93593,$93594,$93595,$93596,$93597,$93598,$93599,$93600,$93601,$93602,$93603,$93604),(nextval($93605),$93606,$93607,$93608,$93609,$93610,$93611,$93612,$93613,$93614,$93615,$93616,$93617,$93618),(nextval($93619),$93620,$93621,$93622,$93623,$93624,$93625,$93626,$93627,$93628,$93629,$93630,$93631,$93632),(nextval($93633),$93634,$93635,$93636,$93637,$93638,$93639,$93640,$93641,$93642,$93643,$93644,$93645,$93646),(nextval($93647),$93648,$93649,$93650,$93651,$93652,$93653,$93654,$93655,$93656,$93657,$93658,$93659,$93660),(nextval($93661),$93662,$93663,$93664,$93665,$93666,$93667,$93668,$93669,$93670,$93671,$93672,$93673,$93674),(nextval($93675),$93676,$93677,$93678,$93679,$93680,$93681,$93682,$93683,$93684,$93685,$93686,$93687,$93688),(nextval($93689),$93690,$93691,$93692,$93693,$93694,$93695,$93696,$93697,$93698,$93699,$93700,$93701,$93702),(nextval($93703),$93704,$93705,$93706,$93707,$93708,$93709,$93710,$93711,$93712,$93713,$93714,$93715,$93716),(nextval($93717),$93718,$93719,$93720,$93721,$93722,$93723,$93724,$93725,$93726,$93727,$93728,$93729,$93730),(nextval($93731),$93732,$93733,$93734,$93735,$93736,$93737,$93738,$93739,$93740,$93741,$93742,$93743,$93744),(nextval($93745),$93746,$93747,$93748,$93749,$93750,$93751,$93752,$93753,$93754,$93755,$93756,$93757,$93758),(nextval($93759),$93760,$93761,$93762,$93763,$93764,$93765,$93766,$93767,$93768,$93769,$93770,$93771,$93772),(nextval($93773),$93774,$93775,$93776,$93777,$93778,$93779,$93780,$93781,$93782,$93783,$93784,$93785,$93786),(nextval($93787),$93788,$93789,$93790,$93791,$93792,$93793,$93794,$93795,$93796,$93797,$93798,$93799,$93800),(nextval($93801),$93802,$93803,$93804,$93805,$93806,$93807,$93808,$93809,$93810,$93811,$93812,$93813,$93814),(nextval($93815),$93816,$93817,$93818,$93819,$93820,$93821,$93822,$93823,$93824,$93825,$93826,$93827,$93828),(nextval($93829),$93830,$93831,$93832,$93833,$93834,$93835,$93836,$93837,$93838,$93839,$93840,$93841,$93842),(nextval($93843),$93844,$93845,$93846,$93847,$93848,$93849,$93850,$93851,$93852,$93853,$93854,$93855,$93856),(nextval($93857),$93858,$93859,$93860,$93861,$93862,$93863,$93864,$93865,$93866,$93867,$93868,$93869,$93870),(nextval($93871),$93872,$93873,$93874,$93875,$93876,$93877,$93878,$93879,$93880,$93881,$93882,$93883,$93884),(nextval($93885),$93886,$93887,$93888,$93889,$93890,$93891,$93892,$93893,$93894,$93895,$93896,$93897,$93898),(nextval($93899),$93900,$93901,$93902,$93903,$93904,$93905,$93906,$93907,$93908,$93909,$93910,$93911,$93912),(nextval($93913),$93914,$93915,$93916,$93917,$93918,$93919,$93920,$93921,$93922,$93923,$93924,$93925,$93926),(nextval($93927),$93928,$93929,$93930,$93931,$93932,$93933,$93934,$93935,$93936,$93937,$93938,$93939,$93940),(nextval($93941),$93942,$93943,$93944,$93945,$93946,$93947,$93948,$93949,$93950,$93951,$93952,$93953,$93954),(nextval($93955),$93956,$93957,$93958,$93959,$93960,$93961,$93962,$93963,$93964,$93965,$93966,$93967,$93968),(nextval($93969),$93970,$93971,$93972,$93973,$93974,$93975,$93976,$93977,$93978,$93979,$93980,$93981,$93982),(nextval($93983),$93984,$93985,$93986,$93987,$93988,$93989,$93990,$93991,$93992,$93993,$93994,$93995,$93996),(nextval($93997),$93998,$93999,$94000,$94001,$94002,$94003,$94004,$94005,$94006,$94007,$94008,$94009,$94010),(nextval($94011),$94012,$94013,$94014,$94015,$94016,$94017,$94018,$94019,$94020,$94021,$94022,$94023,$94024),(nextval($94025),$94026,$94027,$94028,$94029,$94030,$94031,$94032,$94033,$94034,$94035,$94036,$94037,$94038),(nextval($94039),$94040,$94041,$94042,$94043,$94044,$94045,$94046,$94047,$94048,$94049,$94050,$94051,$94052),(nextval($94053),$94054,$94055,$94056,$94057,$94058,$94059,$94060,$94061,$94062,$94063,$94064,$94065,$94066),(nextval($94067),$94068,$94069,$94070,$94071,$94072,$94073,$94074,$94075,$94076,$94077,$94078,$94079,$94080),(nextval($94081),$94082,$94083,$94084,$94085,$94086,$94087,$94088,$94089,$94090,$94091,$94092,$94093,$94094),(nextval($94095),$94096,$94097,$94098,$94099,$94100,$94101,$94102,$94103,$94104,$94105,$94106,$94107,$94108),(nextval($94109),$94110,$94111,$94112,$94113,$94114,$94115,$94116,$94117,$94118,$94119,$94120,$94121,$94122),(nextval($94123),$94124,$94125,$94126,$94127,$94128,$94129,$94130,$94131,$94132,$94133,$94134,$94135,$94136),(nextval($94137),$94138,$94139,$94140,$94141,$94142,$94143,$94144,$94145,$94146,$94147,$94148,$94149,$94150),(nextval($94151),$94152,$94153,$94154,$94155,$94156,$94157,$94158,$94159,$94160,$94161,$94162,$94163,$94164),(nextval($94165),$94166,$94167,$94168,$94169,$94170,$94171,$94172,$94173,$94174,$94175,$94176,$94177,$94178),(nextval($94179),$94180,$94181,$94182,$94183,$94184,$94185,$94186,$94187,$94188,$94189,$94190,$94191,$94192),(nextval($94193),$94194,$94195,$94196,$94197,$94198,$94199,$94200,$94201,$94202,$94203,$94204,$94205,$94206),(nextval($94207),$94208,$94209,$94210,$94211,$94212,$94213,$94214,$94215,$94216,$94217,$94218,$94219,$94220),(nextval($94221),$94222,$94223,$94224,$94225,$94226,$94227,$94228,$94229,$94230,$94231,$94232,$94233,$94234),(nextval($94235),$94236,$94237,$94238,$94239,$94240,$94241,$94242,$94243,$94244,$94245,$94246,$94247,$94248),(nextval($94249),$94250,$94251,$94252,$94253,$94254,$94255,$94256,$94257,$94258,$94259,$94260,$94261,$94262),(nextval($94263),$94264,$94265,$94266,$94267,$94268,$94269,$94270,$94271,$94272,$94273,$94274,$94275,$94276),(nextval($94277),$94278,$94279,$94280,$94281,$94282,$94283,$94284,$94285,$94286,$94287,$94288,$94289,$94290),(nextval($94291),$94292,$94293,$94294,$94295,$94296,$94297,$94298,$94299,$94300,$94301,$94302,$94303,$94304),(nextval($94305),$94306,$94307,$94308,$94309,$94310,$94311,$94312,$94313,$94314,$94315,$94316,$94317,$94318),(nextval($94319),$94320,$94321,$94322,$94323,$94324,$94325,$94326,$94327,$94328,$94329,$94330,$94331,$94332),(nextval($94333),$94334,$94335,$94336,$94337,$94338,$94339,$94340,$94341,$94342,$94343,$94344,$94345,$94346),(nextval($94347),$94348,$94349,$94350,$94351,$94352,$94353,$94354,$94355,$94356,$94357,$94358,$94359,$94360),(nextval($94361),$94362,$94363,$94364,$94365,$94366,$94367,$94368,$94369,$94370,$94371,$94372,$94373,$94374),(nextval($94375),$94376,$94377,$94378,$94379,$94380,$94381,$94382,$94383,$94384,$94385,$94386,$94387,$94388),(nextval($94389),$94390,$94391,$94392,$94393,$94394,$94395,$94396,$94397,$94398,$94399,$94400,$94401,$94402),(nextval($94403),$94404,$94405,$94406,$94407,$94408,$94409,$94410,$94411,$94412,$94413,$94414,$94415,$94416),(nextval($94417),$94418,$94419,$94420,$94421,$94422,$94423,$94424,$94425,$94426,$94427,$94428,$94429,$94430),(nextval($94431),$94432,$94433,$94434,$94435,$94436,$94437,$94438,$94439,$94440,$94441,$94442,$94443,$94444),(nextval($94445),$94446,$94447,$94448,$94449,$94450,$94451,$94452,$94453,$94454,$94455,$94456,$94457,$94458),(nextval($94459),$94460,$94461,$94462,$94463,$94464,$94465,$94466,$94467,$94468,$94469,$94470,$94471,$94472),(nextval($94473),$94474,$94475,$94476,$94477,$94478,$94479,$94480,$94481,$94482,$94483,$94484,$94485,$94486),(nextval($94487),$94488,$94489,$94490,$94491,$94492,$94493,$94494,$94495,$94496,$94497,$94498,$94499,$94500),(nextval($94501),$94502,$94503,$94504,$94505,$94506,$94507,$94508,$94509,$94510,$94511,$94512,$94513,$94514),(nextval($94515),$94516,$94517,$94518,$94519,$94520,$94521,$94522,$94523,$94524,$94525,$94526,$94527,$94528),(nextval($94529),$94530,$94531,$94532,$94533,$94534,$94535,$94536,$94537,$94538,$94539,$94540,$94541,$94542),(nextval($94543),$94544,$94545,$94546,$94547,$94548,$94549,$94550,$94551,$94552,$94553,$94554,$94555,$94556),(nextval($94557),$94558,$94559,$94560,$94561,$94562,$94563,$94564,$94565,$94566,$94567,$94568,$94569,$94570),(nextval($94571),$94572,$94573,$94574,$94575,$94576,$94577,$94578,$94579,$94580,$94581,$94582,$94583,$94584),(nextval($94585),$94586,$94587,$94588,$94589,$94590,$94591,$94592,$94593,$94594,$94595,$94596,$94597,$94598),(nextval($94599),$94600,$94601,$94602,$94603,$94604,$94605,$94606,$94607,$94608,$94609,$94610,$94611,$94612),(nextval($94613),$94614,$94615,$94616,$94617,$94618,$94619,$94620,$94621,$94622,$94623,$94624,$94625,$94626),(nextval($94627),$94628,$94629,$94630,$94631,$94632,$94633,$94634,$94635,$94636,$94637,$94638,$94639,$94640),(nextval($94641),$94642,$94643,$94644,$94645,$94646,$94647,$94648,$94649,$94650,$94651,$94652,$94653,$94654),(nextval($94655),$94656,$94657,$94658,$94659,$94660,$94661,$94662,$94663,$94664,$94665,$94666,$94667,$94668),(nextval($94669),$94670,$94671,$94672,$94673,$94674,$94675,$94676,$94677,$94678,$94679,$94680,$94681,$94682),(nextval($94683),$94684,$94685,$94686,$94687,$94688,$94689,$94690,$94691,$94692,$94693,$94694,$94695,$94696),(nextval($94697),$94698,$94699,$94700,$94701,$94702,$94703,$94704,$94705,$94706,$94707,$94708,$94709,$94710),(nextval($94711),$94712,$94713,$94714,$94715,$94716,$94717,$94718,$94719,$94720,$94721,$94722,$94723,$94724),(nextval($94725),$94726,$94727,$94728,$94729,$94730,$94731,$94732,$94733,$94734,$94735,$94736,$94737,$94738),(nextval($94739),$94740,$94741,$94742,$94743,$94744,$94745,$94746,$94747,$94748,$94749,$94750,$94751,$94752),(nextval($94753),$94754,$94755,$94756,$94757,$94758,$94759,$94760,$94761,$94762,$94763,$94764,$94765,$94766),(nextval($94767),$94768,$94769,$94770,$94771,$94772,$94773,$94774,$94775,$94776,$94777,$94778,$94779,$94780),(nextval($94781),$94782,$94783,$94784,$94785,$94786,$94787,$94788,$94789,$94790,$94791,$94792,$94793,$94794),(nextval($94795),$94796,$94797,$94798,$94799,$94800,$94801,$94802,$94803,$94804,$94805,$94806,$94807,$94808),(nextval($94809),$94810,$94811,$94812,$94813,$94814,$94815,$94816,$94817,$94818,$94819,$94820,$94821,$94822),(nextval($94823),$94824,$94825,$94826,$94827,$94828,$94829,$94830,$94831,$94832,$94833,$94834,$94835,$94836),(nextval($94837),$94838,$94839,$94840,$94841,$94842,$94843,$94844,$94845,$94846,$94847,$94848,$94849,$94850),(nextval($94851),$94852,$94853,$94854,$94855,$94856,$94857,$94858,$94859,$94860,$94861,$94862,$94863,$94864),(nextval($94865),$94866,$94867,$94868,$94869,$94870,$94871,$94872,$94873,$94874,$94875,$94876,$94877,$94878),(nextval($94879),$94880,$94881,$94882,$94883,$94884,$94885,$94886,$94887,$94888,$94889,$94890,$94891,$94892),(nextval($94893),$94894,$94895,$94896,$94897,$94898,$94899,$94900,$94901,$94902,$94903,$94904,$94905,$94906),(nextval($94907),$94908,$94909,$94910,$94911,$94912,$94913,$94914,$94915,$94916,$94917,$94918,$94919,$94920),(nextval($94921),$94922,$94923,$94924,$94925,$94926,$94927,$94928,$94929,$94930,$94931,$94932,$94933,$94934),(nextval($94935),$94936,$94937,$94938,$94939,$94940,$94941,$94942,$94943,$94944,$94945,$94946,$94947,$94948),(nextval($94949),$94950,$94951,$94952,$94953,$94954,$94955,$94956,$94957,$94958,$94959,$94960,$94961,$94962),(nextval($94963),$94964,$94965,$94966,$94967,$94968,$94969,$94970,$94971,$94972,$94973,$94974,$94975,$94976),(nextval($94977),$94978,$94979,$94980,$94981,$94982,$94983,$94984,$94985,$94986,$94987,$94988,$94989,$94990),(nextval($94991),$94992,$94993,$94994,$94995,$94996,$94997,$94998,$94999,$95000,$95001,$95002,$95003,$95004),(nextval($95005),$95006,$95007,$95008,$95009,$95010,$95011,$95012,$95013,$95014,$95015,$95016,$95017,$95018),(nextval($95019),$95020,$95021,$95022,$95023,$95024,$95025,$95026,$95027,$95028,$95029,$95030,$95031,$95032),(nextval($95033),$95034,$95035,$95036,$95037,$95038,$95039,$95040,$95041,$95042,$95043,$95044,$95045,$95046),(nextval($95047),$95048,$95049,$95050,$95051,$95052,$95053,$95054,$95055,$95056,$95057,$95058,$95059,$95060),(nextval($95061),$95062,$95063,$95064,$95065,$95066,$95067,$95068,$95069,$95070,$95071,$95072,$95073,$95074),(nextval($95075),$95076,$95077,$95078,$95079,$95080,$95081,$95082,$95083,$95084,$95085,$95086,$95087,$95088),(nextval($95089),$95090,$95091,$95092,$95093,$95094,$95095,$95096,$95097,$95098,$95099,$95100,$95101,$95102),(nextval($95103),$95104,$95105,$95106,$95107,$95108,$95109,$95110,$95111,$95112,$95113,$95114,$95115,$95116),(nextval($95117),$95118,$95119,$95120,$95121,$95122,$95123,$95124,$95125,$95126,$95127,$95128,$95129,$95130),(nextval($95131),$95132,$95133,$95134,$95135,$95136,$95137,$95138,$95139,$95140,$95141,$95142,$95143,$95144),(nextval($95145),$95146,$95147,$95148,$95149,$95150,$95151,$95152,$95153,$95154,$95155,$95156,$95157,$95158),(nextval($95159),$95160,$95161,$95162,$95163,$95164,$95165,$95166,$95167,$95168,$95169,$95170,$95171,$95172),(nextval($95173),$95174,$95175,$95176,$95177,$95178,$95179,$95180,$95181,$95182,$95183,$95184,$95185,$95186),(nextval($95187),$95188,$95189,$95190,$95191,$95192,$95193,$95194,$95195,$95196,$95197,$95198,$95199,$95200),(nextval($95201),$95202,$95203,$95204,$95205,$95206,$95207,$95208,$95209,$95210,$95211,$95212,$95213,$95214),(nextval($95215),$95216,$95217,$95218,$95219,$95220,$95221,$95222,$95223,$95224,$95225,$95226,$95227,$95228),(nextval($95229),$95230,$95231,$95232,$95233,$95234,$95235,$95236,$95237,$95238,$95239,$95240,$95241,$95242),(nextval($95243),$95244,$95245,$95246,$95247,$95248,$95249,$95250,$95251,$95252,$95253,$95254,$95255,$95256),(nextval($95257),$95258,$95259,$95260,$95261,$95262,$95263,$95264,$95265,$95266,$95267,$95268,$95269,$95270),(nextval($95271),$95272,$95273,$95274,$95275,$95276,$95277,$95278,$95279,$95280,$95281,$95282,$95283,$95284),(nextval($95285),$95286,$95287,$95288,$95289,$95290,$95291,$95292,$95293,$95294,$95295,$95296,$95297,$95298),(nextval($95299),$95300,$95301,$95302,$95303,$95304,$95305,$95306,$95307,$95308,$95309,$95310,$95311,$95312),(nextval($95313),$95314,$95315,$95316,$95317,$95318,$95319,$95320,$95321,$95322,$95323,$95324,$95325,$95326),(nextval($95327),$95328,$95329,$95330,$95331,$95332,$95333,$95334,$95335,$95336,$95337,$95338,$95339,$95340),(nextval($95341),$95342,$95343,$95344,$95345,$95346,$95347,$95348,$95349,$95350,$95351,$95352,$95353,$95354),(nextval($95355),$95356,$95357,$95358,$95359,$95360,$95361,$95362,$95363,$95364,$95365,$95366,$95367,$95368),(nextval($95369),$95370,$95371,$95372,$95373,$95374,$95375,$95376,$95377,$95378,$95379,$95380,$95381,$95382),(nextval($95383),$95384,$95385,$95386,$95387,$95388,$95389,$95390,$95391,$95392,$95393,$95394,$95395,$95396),(nextval($95397),$95398,$95399,$95400,$95401,$95402,$95403,$95404,$95405,$95406,$95407,$95408,$95409,$95410),(nextval($95411),$95412,$95413,$95414,$95415,$95416,$95417,$95418,$95419,$95420,$95421,$95422,$95423,$95424),(nextval($95425),$95426,$95427,$95428,$95429,$95430,$95431,$95432,$95433,$95434,$95435,$95436,$95437,$95438),(nextval($95439),$95440,$95441,$95442,$95443,$95444,$95445,$95446,$95447,$95448,$95449,$95450,$95451,$95452),(nextval($95453),$95454,$95455,$95456,$95457,$95458,$95459,$95460,$95461,$95462,$95463,$95464,$95465,$95466),(nextval($95467),$95468,$95469,$95470,$95471,$95472,$95473,$95474,$95475,$95476,$95477,$95478,$95479,$95480),(nextval($95481),$95482,$95483,$95484,$95485,$95486,$95487,$95488,$95489,$95490,$95491,$95492,$95493,$95494),(nextval($95495),$95496,$95497,$95498,$95499,$95500,$95501,$95502,$95503,$95504,$95505,$95506,$95507,$95508),(nextval($95509),$95510,$95511,$95512,$95513,$95514,$95515,$95516,$95517,$95518,$95519,$95520,$95521,$95522),(nextval($95523),$95524,$95525,$95526,$95527,$95528,$95529,$95530,$95531,$95532,$95533,$95534,$95535,$95536),(nextval($95537),$95538,$95539,$95540,$95541,$95542,$95543,$95544,$95545,$95546,$95547,$95548,$95549,$95550),(nextval($95551),$95552,$95553,$95554,$95555,$95556,$95557,$95558,$95559,$95560,$95561,$95562,$95563,$95564),(nextval($95565),$95566,$95567,$95568,$95569,$95570,$95571,$95572,$95573,$95574,$95575,$95576,$95577,$95578),(nextval($95579),$95580,$95581,$95582,$95583,$95584,$95585,$95586,$95587,$95588,$95589,$95590,$95591,$95592),(nextval($95593),$95594,$95595,$95596,$95597,$95598,$95599,$95600,$95601,$95602,$95603,$95604,$95605,$95606),(nextval($95607),$95608,$95609,$95610,$95611,$95612,$95613,$95614,$95615,$95616,$95617,$95618,$95619,$95620),(nextval($95621),$95622,$95623,$95624,$95625,$95626,$95627,$95628,$95629,$95630,$95631,$95632,$95633,$95634),(nextval($95635),$95636,$95637,$95638,$95639,$95640,$95641,$95642,$95643,$95644,$95645,$95646,$95647,$95648),(nextval($95649),$95650,$95651,$95652,$95653,$95654,$95655,$95656,$95657,$95658,$95659,$95660,$95661,$95662),(nextval($95663),$95664,$95665,$95666,$95667,$95668,$95669,$95670,$95671,$95672,$95673,$95674,$95675,$95676),(nextval($95677),$95678,$95679,$95680,$95681,$95682,$95683,$95684,$95685,$95686,$95687,$95688,$95689,$95690),(nextval($95691),$95692,$95693,$95694,$95695,$95696,$95697,$95698,$95699,$95700,$95701,$95702,$95703,$95704),(nextval($95705),$95706,$95707,$95708,$95709,$95710,$95711,$95712,$95713,$95714,$95715,$95716,$95717,$95718),(nextval($95719),$95720,$95721,$95722,$95723,$95724,$95725,$95726,$95727,$95728,$95729,$95730,$95731,$95732),(nextval($95733),$95734,$95735,$95736,$95737,$95738,$95739,$95740,$95741,$95742,$95743,$95744,$95745,$95746),(nextval($95747),$95748,$95749,$95750,$95751,$95752,$95753,$95754,$95755,$95756,$95757,$95758,$95759,$95760),(nextval($95761),$95762,$95763,$95764,$95765,$95766,$95767,$95768,$95769,$95770,$95771,$95772,$95773,$95774),(nextval($95775),$95776,$95777,$95778,$95779,$95780,$95781,$95782,$95783,$95784,$95785,$95786,$95787,$95788),(nextval($95789),$95790,$95791,$95792,$95793,$95794,$95795,$95796,$95797,$95798,$95799,$95800,$95801,$95802),(nextval($95803),$95804,$95805,$95806,$95807,$95808,$95809,$95810,$95811,$95812,$95813,$95814,$95815,$95816),(nextval($95817),$95818,$95819,$95820,$95821,$95822,$95823,$95824,$95825,$95826,$95827,$95828,$95829,$95830),(nextval($95831),$95832,$95833,$95834,$95835,$95836,$95837,$95838,$95839,$95840,$95841,$95842,$95843,$95844),(nextval($95845),$95846,$95847,$95848,$95849,$95850,$95851,$95852,$95853,$95854,$95855,$95856,$95857,$95858),(nextval($95859),$95860,$95861,$95862,$95863,$95864,$95865,$95866,$95867,$95868,$95869,$95870,$95871,$95872),(nextval($95873),$95874,$95875,$95876,$95877,$95878,$95879,$95880,$95881,$95882,$95883,$95884,$95885,$95886),(nextval($95887),$95888,$95889,$95890,$95891,$95892,$95893,$95894,$95895,$95896,$95897,$95898,$95899,$95900),(nextval($95901),$95902,$95903,$95904,$95905,$95906,$95907,$95908,$95909,$95910,$95911,$95912,$95913,$95914),(nextval($95915),$95916,$95917,$95918,$95919,$95920,$95921,$95922,$95923,$95924,$95925,$95926,$95927,$95928),(nextval($95929),$95930,$95931,$95932,$95933,$95934,$95935,$95936,$95937,$95938,$95939,$95940,$95941,$95942),(nextval($95943),$95944,$95945,$95946,$95947,$95948,$95949,$95950,$95951,$95952,$95953,$95954,$95955,$95956),(nextval($95957),$95958,$95959,$95960,$95961,$95962,$95963,$95964,$95965,$95966,$95967,$95968,$95969,$95970),(nextval($95971),$95972,$95973,$95974,$95975,$95976,$95977,$95978,$95979,$95980,$95981,$95982,$95983,$95984),(nextval($95985),$95986,$95987,$95988,$95989,$95990,$95991,$95992,$95993,$95994,$95995,$95996,$95997,$95998),(nextval($95999),$96000,$96001,$96002,$96003,$96004,$96005,$96006,$96007,$96008,$96009,$96010,$96011,$96012),(nextval($96013),$96014,$96015,$96016,$96017,$96018,$96019,$96020,$96021,$96022,$96023,$96024,$96025,$96026),(nextval($96027),$96028,$96029,$96030,$96031,$96032,$96033,$96034,$96035,$96036,$96037,$96038,$96039,$96040),(nextval($96041),$96042,$96043,$96044,$96045,$96046,$96047,$96048,$96049,$96050,$96051,$96052,$96053,$96054),(nextval($96055),$96056,$96057,$96058,$96059,$96060,$96061,$96062,$96063,$96064,$96065,$96066,$96067,$96068),(nextval($96069),$96070,$96071,$96072,$96073,$96074,$96075,$96076,$96077,$96078,$96079,$96080,$96081,$96082),(nextval($96083),$96084,$96085,$96086,$96087,$96088,$96089,$96090,$96091,$96092,$96093,$96094,$96095,$96096),(nextval($96097),$96098,$96099,$96100,$96101,$96102,$96103,$96104,$96105,$96106,$96107,$96108,$96109,$96110),(nextval($96111),$96112,$96113,$96114,$96115,$96116,$96117,$96118,$96119,$96120,$96121,$96122,$96123,$96124),(nextval($96125),$96126,$96127,$96128,$96129,$96130,$96131,$96132,$96133,$96134,$96135,$96136,$96137,$96138),(nextval($96139),$96140,$96141,$96142,$96143,$96144,$96145,$96146,$96147,$96148,$96149,$96150,$96151,$96152),(nextval($96153),$96154,$96155,$96156,$96157,$96158,$96159,$96160,$96161,$96162,$96163,$96164,$96165,$96166),(nextval($96167),$96168,$96169,$96170,$96171,$96172,$96173,$96174,$96175,$96176,$96177,$96178,$96179,$96180),(nextval($96181),$96182,$96183,$96184,$96185,$96186,$96187,$96188,$96189,$96190,$96191,$96192,$96193,$96194),(nextval($96195),$96196,$96197,$96198,$96199,$96200,$96201,$96202,$96203,$96204,$96205,$96206,$96207,$96208),(nextval($96209),$96210,$96211,$96212,$96213,$96214,$96215,$96216,$96217,$96218,$96219,$96220,$96221,$96222),(nextval($96223),$96224,$96225,$96226,$96227,$96228,$96229,$96230,$96231,$96232,$96233,$96234,$96235,$96236),(nextval($96237),$96238,$96239,$96240,$96241,$96242,$96243,$96244,$96245,$96246,$96247,$96248,$96249,$96250),(nextval($96251),$96252,$96253,$96254,$96255,$96256,$96257,$96258,$96259,$96260,$96261,$96262,$96263,$96264),(nextval($96265),$96266,$96267,$96268,$96269,$96270,$96271,$96272,$96273,$96274,$96275,$96276,$96277,$96278),(nextval($96279),$96280,$96281,$96282,$96283,$96284,$96285,$96286,$96287,$96288,$96289,$96290,$96291,$96292),(nextval($96293),$96294,$96295,$96296,$96297,$96298,$96299,$96300,$96301,$96302,$96303,$96304,$96305,$96306),(nextval($96307),$96308,$96309,$96310,$96311,$96312,$96313,$96314,$96315,$96316,$96317,$96318,$96319,$96320),(nextval($96321),$96322,$96323,$96324,$96325,$96326,$96327,$96328,$96329,$96330,$96331,$96332,$96333,$96334),(nextval($96335),$96336,$96337,$96338,$96339,$96340,$96341,$96342,$96343,$96344,$96345,$96346,$96347,$96348),(nextval($96349),$96350,$96351,$96352,$96353,$96354,$96355,$96356,$96357,$96358,$96359,$96360,$96361,$96362),(nextval($96363),$96364,$96365,$96366,$96367,$96368,$96369,$96370,$96371,$96372,$96373,$96374,$96375,$96376),(nextval($96377),$96378,$96379,$96380,$96381,$96382,$96383,$96384,$96385,$96386,$96387,$96388,$96389,$96390),(nextval($96391),$96392,$96393,$96394,$96395,$96396,$96397,$96398,$96399,$96400,$96401,$96402,$96403,$96404),(nextval($96405),$96406,$96407,$96408,$96409,$96410,$96411,$96412,$96413,$96414,$96415,$96416,$96417,$96418),(nextval($96419),$96420,$96421,$96422,$96423,$96424,$96425,$96426,$96427,$96428,$96429,$96430,$96431,$96432),(nextval($96433),$96434,$96435,$96436,$96437,$96438,$96439,$96440,$96441,$96442,$96443,$96444,$96445,$96446),(nextval($96447),$96448,$96449,$96450,$96451,$96452,$96453,$96454,$96455,$96456,$96457,$96458,$96459,$96460),(nextval($96461),$96462,$96463,$96464,$96465,$96466,$96467,$96468,$96469,$96470,$96471,$96472,$96473,$96474),(nextval($96475),$96476,$96477,$96478,$96479,$96480,$96481,$96482,$96483,$96484,$96485,$96486,$96487,$96488),(nextval($96489),$96490,$96491,$96492,$96493,$96494,$96495,$96496,$96497,$96498,$96499,$96500,$96501,$96502),(nextval($96503),$96504,$96505,$96506,$96507,$96508,$96509,$96510,$96511,$96512,$96513,$96514,$96515,$96516),(nextval($96517),$96518,$96519,$96520,$96521,$96522,$96523,$96524,$96525,$96526,$96527,$96528,$96529,$96530),(nextval($96531),$96532,$96533,$96534,$96535,$96536,$96537,$96538,$96539,$96540,$96541,$96542,$96543,$96544),(nextval($96545),$96546,$96547,$96548,$96549,$96550,$96551,$96552,$96553,$96554,$96555,$96556,$96557,$96558),(nextval($96559),$96560,$96561,$96562,$96563,$96564,$96565,$96566,$96567,$96568,$96569,$96570,$96571,$96572),(nextval($96573),$96574,$96575,$96576,$96577,$96578,$96579,$96580,$96581,$96582,$96583,$96584,$96585,$96586),(nextval($96587),$96588,$96589,$96590,$96591,$96592,$96593,$96594,$96595,$96596,$96597,$96598,$96599,$96600),(nextval($96601),$96602,$96603,$96604,$96605,$96606,$96607,$96608,$96609,$96610,$96611,$96612,$96613,$96614),(nextval($96615),$96616,$96617,$96618,$96619,$96620,$96621,$96622,$96623,$96624,$96625,$96626,$96627,$96628),(nextval($96629),$96630,$96631,$96632,$96633,$96634,$96635,$96636,$96637,$96638,$96639,$96640,$96641,$96642),(nextval($96643),$96644,$96645,$96646,$96647,$96648,$96649,$96650,$96651,$96652,$96653,$96654,$96655,$96656),(nextval($96657),$96658,$96659,$96660,$96661,$96662,$96663,$96664,$96665,$96666,$96667,$96668,$96669,$96670),(nextval($96671),$96672,$96673,$96674,$96675,$96676,$96677,$96678,$96679,$96680,$96681,$96682,$96683,$96684),(nextval($96685),$96686,$96687,$96688,$96689,$96690,$96691,$96692,$96693,$96694,$96695,$96696,$96697,$96698),(nextval($96699),$96700,$96701,$96702,$96703,$96704,$96705,$96706,$96707,$96708,$96709,$96710,$96711,$96712),(nextval($96713),$96714,$96715,$96716,$96717,$96718,$96719,$96720,$96721,$96722,$96723,$96724,$96725,$96726),(nextval($96727),$96728,$96729,$96730,$96731,$96732,$96733,$96734,$96735,$96736,$96737,$96738,$96739,$96740),(nextval($96741),$96742,$96743,$96744,$96745,$96746,$96747,$96748,$96749,$96750,$96751,$96752,$96753,$96754),(nextval($96755),$96756,$96757,$96758,$96759,$96760,$96761,$96762,$96763,$96764,$96765,$96766,$96767,$96768),(nextval($96769),$96770,$96771,$96772,$96773,$96774,$96775,$96776,$96777,$96778,$96779,$96780,$96781,$96782),(nextval($96783),$96784,$96785,$96786,$96787,$96788,$96789,$96790,$96791,$96792,$96793,$96794,$96795,$96796),(nextval($96797),$96798,$96799,$96800,$96801,$96802,$96803,$96804,$96805,$96806,$96807,$96808,$96809,$96810),(nextval($96811),$96812,$96813,$96814,$96815,$96816,$96817,$96818,$96819,$96820,$96821,$96822,$96823,$96824),(nextval($96825),$96826,$96827,$96828,$96829,$96830,$96831,$96832,$96833,$96834,$96835,$96836,$96837,$96838),(nextval($96839),$96840,$96841,$96842,$96843,$96844,$96845,$96846,$96847,$96848,$96849,$96850,$96851,$96852),(nextval($96853),$96854,$96855,$96856,$96857,$96858,$96859,$96860,$96861,$96862,$96863,$96864,$96865,$96866),(nextval($96867),$96868,$96869,$96870,$96871,$96872,$96873,$96874,$96875,$96876,$96877,$96878,$96879,$96880),(nextval($96881),$96882,$96883,$96884,$96885,$96886,$96887,$96888,$96889,$96890,$96891,$96892,$96893,$96894),(nextval($96895),$96896,$96897,$96898,$96899,$96900,$96901,$96902,$96903,$96904,$96905,$96906,$96907,$96908),(nextval($96909),$96910,$96911,$96912,$96913,$96914,$96915,$96916,$96917,$96918,$96919,$96920,$96921,$96922),(nextval($96923),$96924,$96925,$96926,$96927,$96928,$96929,$96930,$96931,$96932,$96933,$96934,$96935,$96936),(nextval($96937),$96938,$96939,$96940,$96941,$96942,$96943,$96944,$96945,$96946,$96947,$96948,$96949,$96950),(nextval($96951),$96952,$96953,$96954,$96955,$96956,$96957,$96958,$96959,$96960,$96961,$96962,$96963,$96964),(nextval($96965),$96966,$96967,$96968,$96969,$96970,$96971,$96972,$96973,$96974,$96975,$96976,$96977,$96978),(nextval($96979),$96980,$96981,$96982,$96983,$96984,$96985,$96986,$96987,$96988,$96989,$96990,$96991,$96992),(nextval($96993),$96994,$96995,$96996,$96997,$96998,$96999,$97000,$97001,$97002,$97003,$97004,$97005,$97006),(nextval($97007),$97008,$97009,$97010,$97011,$97012,$97013,$97014,$97015,$97016,$97017,$97018,$97019,$97020),(nextval($97021),$97022,$97023,$97024,$97025,$97026,$97027,$97028,$97029,$97030,$97031,$97032,$97033,$97034),(nextval($97035),$97036,$97037,$97038,$97039,$97040,$97041,$97042,$97043,$97044,$97045,$97046,$97047,$97048),(nextval($97049),$97050,$97051,$97052,$97053,$97054,$97055,$97056,$97057,$97058,$97059,$97060,$97061,$97062),(nextval($97063),$97064,$97065,$97066,$97067,$97068,$97069,$97070,$97071,$97072,$97073,$97074,$97075,$97076),(nextval($97077),$97078,$97079,$97080,$97081,$97082,$97083,$97084,$97085,$97086,$97087,$97088,$97089,$97090),(nextval($97091),$97092,$97093,$97094,$97095,$97096,$97097,$97098,$97099,$97100,$97101,$97102,$97103,$97104),(nextval($97105),$97106,$97107,$97108,$97109,$97110,$97111,$97112,$97113,$97114,$97115,$97116,$97117,$97118),(nextval($97119),$97120,$97121,$97122,$97123,$97124,$97125,$97126,$97127,$97128,$97129,$97130,$97131,$97132),(nextval($97133),$97134,$97135,$97136,$97137,$97138,$97139,$97140,$97141,$97142,$97143,$97144,$97145,$97146),(nextval($97147),$97148,$97149,$97150,$97151,$97152,$97153,$97154,$97155,$97156,$97157,$97158,$97159,$97160),(nextval($97161),$97162,$97163,$97164,$97165,$97166,$97167,$97168,$97169,$97170,$97171,$97172,$97173,$97174),(nextval($97175),$97176,$97177,$97178,$97179,$97180,$97181,$97182,$97183,$97184,$97185,$97186,$97187,$97188),(nextval($97189),$97190,$97191,$97192,$97193,$97194,$97195,$97196,$97197,$97198,$97199,$97200,$97201,$97202),(nextval($97203),$97204,$97205,$97206,$97207,$97208,$97209,$97210,$97211,$97212,$97213,$97214,$97215,$97216),(nextval($97217),$97218,$97219,$97220,$97221,$97222,$97223,$97224,$97225,$97226,$97227,$97228,$97229,$97230),(nextval($97231),$97232,$97233,$97234,$97235,$97236,$97237,$97238,$97239,$97240,$97241,$97242,$97243,$97244),(nextval($97245),$97246,$97247,$97248,$97249,$97250,$97251,$97252,$97253,$97254,$97255,$97256,$97257,$97258),(nextval($97259),$97260,$97261,$97262,$97263,$97264,$97265,$97266,$97267,$97268,$97269,$97270,$97271,$97272),(nextval($97273),$97274,$97275,$97276,$97277,$97278,$97279,$97280,$97281,$97282,$97283,$97284,$97285,$97286),(nextval($97287),$97288,$97289,$97290,$97291,$97292,$97293,$97294,$97295,$97296,$97297,$97298,$97299,$97300),(nextval($97301),$97302,$97303,$97304,$97305,$97306,$97307,$97308,$97309,$97310,$97311,$97312,$97313,$97314),(nextval($97315),$97316,$97317,$97318,$97319,$97320,$97321,$97322,$97323,$97324,$97325,$97326,$97327,$97328),(nextval($97329),$97330,$97331,$97332,$97333,$97334,$97335,$97336,$97337,$97338,$97339,$97340,$97341,$97342),(nextval($97343),$97344,$97345,$97346,$97347,$97348,$97349,$97350,$97351,$97352,$97353,$97354,$97355,$97356),(nextval($97357),$97358,$97359,$97360,$97361,$97362,$97363,$97364,$97365,$97366,$97367,$97368,$97369,$97370),(nextval($97371),$97372,$97373,$97374,$97375,$97376,$97377,$97378,$97379,$97380,$97381,$97382,$97383,$97384),(nextval($97385),$97386,$97387,$97388,$97389,$97390,$97391,$97392,$97393,$97394,$97395,$97396,$97397,$97398),(nextval($97399),$97400,$97401,$97402,$97403,$97404,$97405,$97406,$97407,$97408,$97409,$97410,$97411,$97412),(nextval($97413),$97414,$97415,$97416,$97417,$97418,$97419,$97420,$97421,$97422,$97423,$97424,$97425,$97426),(nextval($97427),$97428,$97429,$97430,$97431,$97432,$97433,$97434,$97435,$97436,$97437,$97438,$97439,$97440),(nextval($97441),$97442,$97443,$97444,$97445,$97446,$97447,$97448,$97449,$97450,$97451,$97452,$97453,$97454),(nextval($97455),$97456,$97457,$97458,$97459,$97460,$97461,$97462,$97463,$97464,$97465,$97466,$97467,$97468),(nextval($97469),$97470,$97471,$97472,$97473,$97474,$97475,$97476,$97477,$97478,$97479,$97480,$97481,$97482),(nextval($97483),$97484,$97485,$97486,$97487,$97488,$97489,$97490,$97491,$97492,$97493,$97494,$97495,$97496),(nextval($97497),$97498,$97499,$97500,$97501,$97502,$97503,$97504,$97505,$97506,$97507,$97508,$97509,$97510),(nextval($97511),$97512,$97513,$97514,$97515,$97516,$97517,$97518,$97519,$97520,$97521,$97522,$97523,$97524),(nextval($97525),$97526,$97527,$97528,$97529,$97530,$97531,$97532,$97533,$97534,$97535,$97536,$97537,$97538),(nextval($97539),$97540,$97541,$97542,$97543,$97544,$97545,$97546,$97547,$97548,$97549,$97550,$97551,$97552),(nextval($97553),$97554,$97555,$97556,$97557,$97558,$97559,$97560,$97561,$97562,$97563,$97564,$97565,$97566),(nextval($97567),$97568,$97569,$97570,$97571,$97572,$97573,$97574,$97575,$97576,$97577,$97578,$97579,$97580),(nextval($97581),$97582,$97583,$97584,$97585,$97586,$97587,$97588,$97589,$97590,$97591,$97592,$97593,$97594),(nextval($97595),$97596,$97597,$97598,$97599,$97600,$97601,$97602,$97603,$97604,$97605,$97606,$97607,$97608),(nextval($97609),$97610,$97611,$97612,$97613,$97614,$97615,$97616,$97617,$97618,$97619,$97620,$97621,$97622),(nextval($97623),$97624,$97625,$97626,$97627,$97628,$97629,$97630,$97631,$97632,$97633,$97634,$97635,$97636),(nextval($97637),$97638,$97639,$97640,$97641,$97642,$97643,$97644,$97645,$97646,$97647,$97648,$97649,$97650),(nextval($97651),$97652,$97653,$97654,$97655,$97656,$97657,$97658,$97659,$97660,$97661,$97662,$97663,$97664),(nextval($97665),$97666,$97667,$97668,$97669,$97670,$97671,$97672,$97673,$97674,$97675,$97676,$97677,$97678),(nextval($97679),$97680,$97681,$97682,$97683,$97684,$97685,$97686,$97687,$97688,$97689,$97690,$97691,$97692),(nextval($97693),$97694,$97695,$97696,$97697,$97698,$97699,$97700,$97701,$97702,$97703,$97704,$97705,$97706),(nextval($97707),$97708,$97709,$97710,$97711,$97712,$97713,$97714,$97715,$97716,$97717,$97718,$97719,$97720),(nextval($97721),$97722,$97723,$97724,$97725,$97726,$97727,$97728,$97729,$97730,$97731,$97732,$97733,$97734),(nextval($97735),$97736,$97737,$97738,$97739,$97740,$97741,$97742,$97743,$97744,$97745,$97746,$97747,$97748),(nextval($97749),$97750,$97751,$97752,$97753,$97754,$97755,$97756,$97757,$97758,$97759,$97760,$97761,$97762),(nextval($97763),$97764,$97765,$97766,$97767,$97768,$97769,$97770,$97771,$97772,$97773,$97774,$97775,$97776),(nextval($97777),$97778,$97779,$97780,$97781,$97782,$97783,$97784,$97785,$97786,$97787,$97788,$97789,$97790),(nextval($97791),$97792,$97793,$97794,$97795,$97796,$97797,$97798,$97799,$97800,$97801,$97802,$97803,$97804),(nextval($97805),$97806,$97807,$97808,$97809,$97810,$97811,$97812,$97813,$97814,$97815,$97816,$97817,$97818),(nextval($97819),$97820,$97821,$97822,$97823,$97824,$97825,$97826,$97827,$97828,$97829,$97830,$97831,$97832),(nextval($97833),$97834,$97835,$97836,$97837,$97838,$97839,$97840,$97841,$97842,$97843,$97844,$97845,$97846),(nextval($97847),$97848,$97849,$97850,$97851,$97852,$97853,$97854,$97855,$97856,$97857,$97858,$97859,$97860),(nextval($97861),$97862,$97863,$97864,$97865,$97866,$97867,$97868,$97869,$97870,$97871,$97872,$97873,$97874),(nextval($97875),$97876,$97877,$97878,$97879,$97880,$97881,$97882,$97883,$97884,$97885,$97886,$97887,$97888),(nextval($97889),$97890,$97891,$97892,$97893,$97894,$97895,$97896,$97897,$97898,$97899,$97900,$97901,$97902),(nextval($97903),$97904,$97905,$97906,$97907,$97908,$97909,$97910,$97911,$97912,$97913,$97914,$97915,$97916),(nextval($97917),$97918,$97919,$97920,$97921,$97922,$97923,$97924,$97925,$97926,$97927,$97928,$97929,$97930),(nextval($97931),$97932,$97933,$97934,$97935,$97936,$97937,$97938,$97939,$97940,$97941,$97942,$97943,$97944),(nextval($97945),$97946,$97947,$97948,$97949,$97950,$97951,$97952,$97953,$97954,$97955,$97956,$97957,$97958),(nextval($97959),$97960,$97961,$97962,$97963,$97964,$97965,$97966,$97967,$97968,$97969,$97970,$97971,$97972),(nextval($97973),$97974,$97975,$97976,$97977,$97978,$97979,$97980,$97981,$97982,$97983,$97984,$97985,$97986),(nextval($97987),$97988,$97989,$97990,$97991,$97992,$97993,$97994,$97995,$97996,$97997,$97998,$97999,$98000),(nextval($98001),$98002,$98003,$98004,$98005,$98006,$98007,$98008,$98009,$98010,$98011,$98012,$98013,$98014),(nextval($98015),$98016,$98017,$98018,$98019,$98020,$98021,$98022,$98023,$98024,$98025,$98026,$98027,$98028),(nextval($98029),$98030,$98031,$98032,$98033,$98034,$98035,$98036,$98037,$98038,$98039,$98040,$98041,$98042),(nextval($98043),$98044,$98045,$98046,$98047,$98048,$98049,$98050,$98051,$98052,$98053,$98054,$98055,$98056),(nextval($98057),$98058,$98059,$98060,$98061,$98062,$98063,$98064,$98065,$98066,$98067,$98068,$98069,$98070),(nextval($98071),$98072,$98073,$98074,$98075,$98076,$98077,$98078,$98079,$98080,$98081,$98082,$98083,$98084),(nextval($98085),$98086,$98087,$98088,$98089,$98090,$98091,$98092,$98093,$98094,$98095,$98096,$98097,$98098),(nextval($98099),$98100,$98101,$98102,$98103,$98104,$98105,$98106,$98107,$98108,$98109,$98110,$98111,$98112),(nextval($98113),$98114,$98115,$98116,$98117,$98118,$98119,$98120,$98121,$98122,$98123,$98124,$98125,$98126),(nextval($98127),$98128,$98129,$98130,$98131,$98132,$98133,$98134,$98135,$98136,$98137,$98138,$98139,$98140),(nextval($98141),$98142,$98143,$98144,$98145,$98146,$98147,$98148,$98149,$98150,$98151,$98152,$98153,$98154),(nextval($98155),$98156,$98157,$98158,$98159,$98160,$98161,$98162,$98163,$98164,$98165,$98166,$98167,$98168),(nextval($98169),$98170,$98171,$98172,$98173,$98174,$98175,$98176,$98177,$98178,$98179,$98180,$98181,$98182),(nextval($98183),$98184,$98185,$98186,$98187,$98188,$98189,$98190,$98191,$98192,$98193,$98194,$98195,$98196),(nextval($98197),$98198,$98199,$98200,$98201,$98202,$98203,$98204,$98205,$98206,$98207,$98208,$98209,$98210),(nextval($98211),$98212,$98213,$98214,$98215,$98216,$98217,$98218,$98219,$98220,$98221,$98222,$98223,$98224),(nextval($98225),$98226,$98227,$98228,$98229,$98230,$98231,$98232,$98233,$98234,$98235,$98236,$98237,$98238),(nextval($98239),$98240,$98241,$98242,$98243,$98244,$98245,$98246,$98247,$98248,$98249,$98250,$98251,$98252),(nextval($98253),$98254,$98255,$98256,$98257,$98258,$98259,$98260,$98261,$98262,$98263,$98264,$98265,$98266),(nextval($98267),$98268,$98269,$98270,$98271,$98272,$98273,$98274,$98275,$98276,$98277,$98278,$98279,$98280),(nextval($98281),$98282,$98283,$98284,$98285,$98286,$98287,$98288,$98289,$98290,$98291,$98292,$98293,$98294),(nextval($98295),$98296,$98297,$98298,$98299,$98300,$98301,$98302,$98303,$98304,$98305,$98306,$98307,$98308),(nextval($98309),$98310,$98311,$98312,$98313,$98314,$98315,$98316,$98317,$98318,$98319,$98320,$98321,$98322),(nextval($98323),$98324,$98325,$98326,$98327,$98328,$98329,$98330,$98331,$98332,$98333,$98334,$98335,$98336),(nextval($98337),$98338,$98339,$98340,$98341,$98342,$98343,$98344,$98345,$98346,$98347,$98348,$98349,$98350),(nextval($98351),$98352,$98353,$98354,$98355,$98356,$98357,$98358,$98359,$98360,$98361,$98362,$98363,$98364),(nextval($98365),$98366,$98367,$98368,$98369,$98370,$98371,$98372,$98373,$98374,$98375,$98376,$98377,$98378),(nextval($98379),$98380,$98381,$98382,$98383,$98384,$98385,$98386,$98387,$98388,$98389,$98390,$98391,$98392),(nextval($98393),$98394,$98395,$98396,$98397,$98398,$98399,$98400,$98401,$98402,$98403,$98404,$98405,$98406),(nextval($98407),$98408,$98409,$98410,$98411,$98412,$98413,$98414,$98415,$98416,$98417,$98418,$98419,$98420),(nextval($98421),$98422,$98423,$98424,$98425,$98426,$98427,$98428,$98429,$98430,$98431,$98432,$98433,$98434),(nextval($98435),$98436,$98437,$98438,$98439,$98440,$98441,$98442,$98443,$98444,$98445,$98446,$98447,$98448),(nextval($98449),$98450,$98451,$98452,$98453,$98454,$98455,$98456,$98457,$98458,$98459,$98460,$98461,$98462),(nextval($98463),$98464,$98465,$98466,$98467,$98468,$98469,$98470,$98471,$98472,$98473,$98474,$98475,$98476),(nextval($98477),$98478,$98479,$98480,$98481,$98482,$98483,$98484,$98485,$98486,$98487,$98488,$98489,$98490),(nextval($98491),$98492,$98493,$98494,$98495,$98496,$98497,$98498,$98499,$98500,$98501,$98502,$98503,$98504),(nextval($98505),$98506,$98507,$98508,$98509,$98510,$98511,$98512,$98513,$98514,$98515,$98516,$98517,$98518),(nextval($98519),$98520,$98521,$98522,$98523,$98524,$98525,$98526,$98527,$98528,$98529,$98530,$98531,$98532),(nextval($98533),$98534,$98535,$98536,$98537,$98538,$98539,$98540,$98541,$98542,$98543,$98544,$98545,$98546),(nextval($98547),$98548,$98549,$98550,$98551,$98552,$98553,$98554,$98555,$98556,$98557,$98558,$98559,$98560),(nextval($98561),$98562,$98563,$98564,$98565,$98566,$98567,$98568,$98569,$98570,$98571,$98572,$98573,$98574),(nextval($98575),$98576,$98577,$98578,$98579,$98580,$98581,$98582,$98583,$98584,$98585,$98586,$98587,$98588),(nextval($98589),$98590,$98591,$98592,$98593,$98594,$98595,$98596,$98597,$98598,$98599,$98600,$98601,$98602),(nextval($98603),$98604,$98605,$98606,$98607,$98608,$98609,$98610,$98611,$98612,$98613,$98614,$98615,$98616),(nextval($98617),$98618,$98619,$98620,$98621,$98622,$98623,$98624,$98625,$98626,$98627,$98628,$98629,$98630),(nextval($98631),$98632,$98633,$98634,$98635,$98636,$98637,$98638,$98639,$98640,$98641,$98642,$98643,$98644),(nextval($98645),$98646,$98647,$98648,$98649,$98650,$98651,$98652,$98653,$98654,$98655,$98656,$98657,$98658),(nextval($98659),$98660,$98661,$98662,$98663,$98664,$98665,$98666,$98667,$98668,$98669,$98670,$98671,$98672),(nextval($98673),$98674,$98675,$98676,$98677,$98678,$98679,$98680,$98681,$98682,$98683,$98684,$98685,$98686),(nextval($98687),$98688,$98689,$98690,$98691,$98692,$98693,$98694,$98695,$98696,$98697,$98698,$98699,$98700),(nextval($98701),$98702,$98703,$98704,$98705,$98706,$98707,$98708,$98709,$98710,$98711,$98712,$98713,$98714),(nextval($98715),$98716,$98717,$98718,$98719,$98720,$98721,$98722,$98723,$98724,$98725,$98726,$98727,$98728),(nextval($98729),$98730,$98731,$98732,$98733,$98734,$98735,$98736,$98737,$98738,$98739,$98740,$98741,$98742),(nextval($98743),$98744,$98745,$98746,$98747,$98748,$98749,$98750,$98751,$98752,$98753,$98754,$98755,$98756),(nextval($98757),$98758,$98759,$98760,$98761,$98762,$98763,$98764,$98765,$98766,$98767,$98768,$98769,$98770),(nextval($98771),$98772,$98773,$98774,$98775,$98776,$98777,$98778,$98779,$98780,$98781,$98782,$98783,$98784),(nextval($98785),$98786,$98787,$98788,$98789,$98790,$98791,$98792,$98793,$98794,$98795,$98796,$98797,$98798),(nextval($98799),$98800,$98801,$98802,$98803,$98804,$98805,$98806,$98807,$98808,$98809,$98810,$98811,$98812),(nextval($98813),$98814,$98815,$98816,$98817,$98818,$98819,$98820,$98821,$98822,$98823,$98824,$98825,$98826),(nextval($98827),$98828,$98829,$98830,$98831,$98832,$98833,$98834,$98835,$98836,$98837,$98838,$98839,$98840),(nextval($98841),$98842,$98843,$98844,$98845,$98846,$98847,$98848,$98849,$98850,$98851,$98852,$98853,$98854),(nextval($98855),$98856,$98857,$98858,$98859,$98860,$98861,$98862,$98863,$98864,$98865,$98866,$98867,$98868),(nextval($98869),$98870,$98871,$98872,$98873,$98874,$98875,$98876,$98877,$98878,$98879,$98880,$98881,$98882),(nextval($98883),$98884,$98885,$98886,$98887,$98888,$98889,$98890,$98891,$98892,$98893,$98894,$98895,$98896),(nextval($98897),$98898,$98899,$98900,$98901,$98902,$98903,$98904,$98905,$98906,$98907,$98908,$98909,$98910),(nextval($98911),$98912,$98913,$98914,$98915,$98916,$98917,$98918,$98919,$98920,$98921,$98922,$98923,$98924),(nextval($98925),$98926,$98927,$98928,$98929,$98930,$98931,$98932,$98933,$98934,$98935,$98936,$98937,$98938),(nextval($98939),$98940,$98941,$98942,$98943,$98944,$98945,$98946,$98947,$98948,$98949,$98950,$98951,$98952),(nextval($98953),$98954,$98955,$98956,$98957,$98958,$98959,$98960,$98961,$98962,$98963,$98964,$98965,$98966),(nextval($98967),$98968,$98969,$98970,$98971,$98972,$98973,$98974,$98975,$98976,$98977,$98978,$98979,$98980),(nextval($98981),$98982,$98983,$98984,$98985,$98986,$98987,$98988,$98989,$98990,$98991,$98992,$98993,$98994),(nextval($98995),$98996,$98997,$98998,$98999,$99000,$99001,$99002,$99003,$99004,$99005,$99006,$99007,$99008),(nextval($99009),$99010,$99011,$99012,$99013,$99014,$99015,$99016,$99017,$99018,$99019,$99020,$99021,$99022),(nextval($99023),$99024,$99025,$99026,$99027,$99028,$99029,$99030,$99031,$99032,$99033,$99034,$99035,$99036),(nextval($99037),$99038,$99039,$99040,$99041,$99042,$99043,$99044,$99045,$99046,$99047,$99048,$99049,$99050),(nextval($99051),$99052,$99053,$99054,$99055,$99056,$99057,$99058,$99059,$99060,$99061,$99062,$99063,$99064),(nextval($99065),$99066,$99067,$99068,$99069,$99070,$99071,$99072,$99073,$99074,$99075,$99076,$99077,$99078),(nextval($99079),$99080,$99081,$99082,$99083,$99084,$99085,$99086,$99087,$99088,$99089,$99090,$99091,$99092),(nextval($99093),$99094,$99095,$99096,$99097,$99098,$99099,$99100,$99101,$99102,$99103,$99104,$99105,$99106),(nextval($99107),$99108,$99109,$99110,$99111,$99112,$99113,$99114,$99115,$99116,$99117,$99118,$99119,$99120),(nextval($99121),$99122,$99123,$99124,$99125,$99126,$99127,$99128,$99129,$99130,$99131,$99132,$99133,$99134),(nextval($99135),$99136,$99137,$99138,$99139,$99140,$99141,$99142,$99143,$99144,$99145,$99146,$99147,$99148),(nextval($99149),$99150,$99151,$99152,$99153,$99154,$99155,$99156,$99157,$99158,$99159,$99160,$99161,$99162),(nextval($99163),$99164,$99165,$99166,$99167,$99168,$99169,$99170,$99171,$99172,$99173,$99174,$99175,$99176),(nextval($99177),$99178,$99179,$99180,$99181,$99182,$99183,$99184,$99185,$99186,$99187,$99188,$99189,$99190),(nextval($99191),$99192,$99193,$99194,$99195,$99196,$99197,$99198,$99199,$99200,$99201,$99202,$99203,$99204),(nextval($99205),$99206,$99207,$99208,$99209,$99210,$99211,$99212,$99213,$99214,$99215,$99216,$99217,$99218),(nextval($99219),$99220,$99221,$99222,$99223,$99224,$99225,$99226,$99227,$99228,$99229,$99230,$99231,$99232),(nextval($99233),$99234,$99235,$99236,$99237,$99238,$99239,$99240,$99241,$99242,$99243,$99244,$99245,$99246),(nextval($99247),$99248,$99249,$99250,$99251,$99252,$99253,$99254,$99255,$99256,$99257,$99258,$99259,$99260),(nextval($99261),$99262,$99263,$99264,$99265,$99266,$99267,$99268,$99269,$99270,$99271,$99272,$99273,$99274),(nextval($99275),$99276,$99277,$99278,$99279,$99280,$99281,$99282,$99283,$99284,$99285,$99286,$99287,$99288),(nextval($99289),$99290,$99291,$99292,$99293,$99294,$99295,$99296,$99297,$99298,$99299,$99300,$99301,$99302),(nextval($99303),$99304,$99305,$99306,$99307,$99308,$99309,$99310,$99311,$99312,$99313,$99314,$99315,$99316),(nextval($99317),$99318,$99319,$99320,$99321,$99322,$99323,$99324,$99325,$99326,$99327,$99328,$99329,$99330),(nextval($99331),$99332,$99333,$99334,$99335,$99336,$99337,$99338,$99339,$99340,$99341,$99342,$99343,$99344),(nextval($99345),$99346,$99347,$99348,$99349,$99350,$99351,$99352,$99353,$99354,$99355,$99356,$99357,$99358),(nextval($99359),$99360,$99361,$99362,$99363,$99364,$99365,$99366,$99367,$99368,$99369,$99370,$99371,$99372),(nextval($99373),$99374,$99375,$99376,$99377,$99378,$99379,$99380,$99381,$99382,$99383,$99384,$99385,$99386),(nextval($99387),$99388,$99389,$99390,$99391,$99392,$99393,$99394,$99395,$99396,$99397,$99398,$99399,$99400),(nextval($99401),$99402,$99403,$99404,$99405,$99406,$99407,$99408,$99409,$99410,$99411,$99412,$99413,$99414),(nextval($99415),$99416,$99417,$99418,$99419,$99420,$99421,$99422,$99423,$99424,$99425,$99426,$99427,$99428),(nextval($99429),$99430,$99431,$99432,$99433,$99434,$99435,$99436,$99437,$99438,$99439,$99440,$99441,$99442),(nextval($99443),$99444,$99445,$99446,$99447,$99448,$99449,$99450,$99451,$99452,$99453,$99454,$99455,$99456),(nextval($99457),$99458,$99459,$99460,$99461,$99462,$99463,$99464,$99465,$99466,$99467,$99468,$99469,$99470),(nextval($99471),$99472,$99473,$99474,$99475,$99476,$99477,$99478,$99479,$99480,$99481,$99482,$99483,$99484),(nextval($99485),$99486,$99487,$99488,$99489,$99490,$99491,$99492,$99493,$99494,$99495,$99496,$99497,$99498),(nextval($99499),$99500,$99501,$99502,$99503,$99504,$99505,$99506,$99507,$99508,$99509,$99510,$99511,$99512),(nextval($99513),$99514,$99515,$99516,$99517,$99518,$99519,$99520,$99521,$99522,$99523,$99524,$99525,$99526),(nextval($99527),$99528,$99529,$99530,$99531,$99532,$99533,$99534,$99535,$99536,$99537,$99538,$99539,$99540),(nextval($99541),$99542,$99543,$99544,$99545,$99546,$99547,$99548,$99549,$99550,$99551,$99552,$99553,$99554),(nextval($99555),$99556,$99557,$99558,$99559,$99560,$99561,$99562,$99563,$99564,$99565,$99566,$99567,$99568),(nextval($99569),$99570,$99571,$99572,$99573,$99574,$99575,$99576,$99577,$99578,$99579,$99580,$99581,$99582),(nextval($99583),$99584,$99585,$99586,$99587,$99588,$99589,$99590,$99591,$99592,$99593,$99594,$99595,$99596),(nextval($99597),$99598,$99599,$99600,$99601,$99602,$99603,$99604,$99605,$99606,$99607,$99608,$99609,$99610),(nextval($99611),$99612,$99613,$99614,$99615,$99616,$99617,$99618,$99619,$99620,$99621,$99622,$99623,$99624),(nextval($99625),$99626,$99627,$99628,$99629,$99630,$99631,$99632,$99633,$99634,$99635,$99636,$99637,$99638),(nextval($99639),$99640,$99641,$99642,$99643,$99644,$99645,$99646,$99647,$99648,$99649,$99650,$99651,$99652),(nextval($99653),$99654,$99655,$99656,$99657,$99658,$99659,$99660,$99661,$99662,$99663,$99664,$99665,$99666),(nextval($99667),$99668,$99669,$99670,$99671,$99672,$99673,$99674,$99675,$99676,$99677,$99678,$99679,$99680),(nextval($99681),$99682,$99683,$99684,$99685,$99686,$99687,$99688,$99689,$99690,$99691,$99692,$99693,$99694),(nextval($99695),$99696,$99697,$99698,$99699,$99700,$99701,$99702,$99703,$99704,$99705,$99706,$99707,$99708),(nextval($99709),$99710,$99711,$99712,$99713,$99714,$99715,$99716,$99717,$99718,$99719,$99720,$99721,$99722),(nextval($99723),$99724,$99725,$99726,$99727,$99728,$99729,$99730,$99731,$99732,$99733,$99734,$99735,$99736),(nextval($99737),$99738,$99739,$99740,$99741,$99742,$99743,$99744,$99745,$99746,$99747,$99748,$99749,$99750),(nextval($99751),$99752,$99753,$99754,$99755,$99756,$99757,$99758,$99759,$99760,$99761,$99762,$99763,$99764),(nextval($99765),$99766,$99767,$99768,$99769,$99770,$99771,$99772,$99773,$99774,$99775,$99776,$99777,$99778),(nextval($99779),$99780,$99781,$99782,$99783,$99784,$99785,$99786,$99787,$99788,$99789,$99790,$99791,$99792),(nextval($99793),$99794,$99795,$99796,$99797,$99798,$99799,$99800,$99801,$99802,$99803,$99804,$99805,$99806),(nextval($99807),$99808,$99809,$99810,$99811,$99812,$99813,$99814,$99815,$99816,$99817,$99818,$99819,$99820),(nextval($99821),$99822,$99823,$99824,$99825,$99826,$99827,$99828,$99829,$99830,$99831,$99832,$99833,$99834),(nextval($99835),$99836,$99837,$99838,$99839,$99840,$99841,$99842,$99843,$99844,$99845,$99846,$99847,$99848),(nextval($99849),$99850,$99851,$99852,$99853,$99854,$99855,$99856,$99857,$99858,$99859,$99860,$99861,$99862),(nextval($99863),$99864,$99865,$99866,$99867,$99868,$99869,$99870,$99871,$99872,$99873,$99874,$99875,$99876),(nextval($99877),$99878,$99879,$99880,$99881,$99882,$99883,$99884,$99885,$99886,$99887,$99888,$99889,$99890),(nextval($99891),$99892,$99893,$99894,$99895,$99896,$99897,$99898,$99899,$99900,$99901,$99902,$99903,$99904),(nextval($99905),$99906,$99907,$99908,$99909,$99910,$99911,$99912,$99913,$99914,$99915,$99916,$99917,$99918),(nextval($99919),$99920,$99921,$99922,$99923,$99924,$99925,$99926,$99927,$99928,$99929,$99930,$99931,$99932),(nextval($99933),$99934,$99935,$99936,$99937,$99938,$99939,$99940,$99941,$99942,$99943,$99944,$99945,$99946),(nextval($99947),$99948,$99949,$99950,$99951,$99952,$99953,$99954,$99955,$99956,$99957,$99958,$99959,$99960),(nextval($99961),$99962,$99963,$99964,$99965,$99966,$99967,$99968,$99969,$99970,$99971,$99972,$99973,$99974),(nextval($99975),$99976,$99977,$99978,$99979,$99980,$99981,$99982,$99983,$99984,$99985,$99986,$99987,$99988),(nextval($99989),$99990,$99991,$99992,$99993,$99994,$99995,$99996,$99997,$99998,$99999,$100000,$100001,$100002),(nextval($100003),$100004,$100005,$100006,$100007,$100008,$100009,$100010,$100011,$100012,$100013,$100014,$100015,$100016),(nextval($100017),$100018,$100019,$100020,$100021,$100022,$100023,$100024,$100025,$100026,$100027,$100028,$100029,$100030),(nextval($100031),$100032,$100033,$100034,$100035,$100036,$100037,$100038,$100039,$100040,$100041,$100042,$100043,$100044),(nextval($100045),$100046,$100047,$100048,$100049,$100050,$100051,$100052,$100053,$100054,$100055,$100056,$100057,$100058),(nextval($100059),$100060,$100061,$100062,$100063,$100064,$100065,$100066,$100067,$100068,$100069,$100070,$100071,$100072),(nextval($100073),$100074,$100075,$100076,$100077,$100078,$100079,$100080,$100081,$100082,$100083,$100084,$100085,$100086),(nextval($100087),$100088,$100089,$100090,$100091,$100092,$100093,$100094,$100095,$100096,$100097,$100098,$100099,$100100),(nextval($100101),$100102,$100103,$100104,$100105,$100106,$100107,$100108,$100109,$100110,$100111,$100112,$100113,$100114),(nextval($100115),$100116,$100117,$100118,$100119,$100120,$100121,$100122,$100123,$100124,$100125,$100126,$100127,$100128),(nextval($100129),$100130,$100131,$100132,$100133,$100134,$100135,$100136,$100137,$100138,$100139,$100140,$100141,$100142),(nextval($100143),$100144,$100145,$100146,$100147,$100148,$100149,$100150,$100151,$100152,$100153,$100154,$100155,$100156),(nextval($100157),$100158,$100159,$100160,$100161,$100162,$100163,$100164,$100165,$100166,$100167,$100168,$100169,$100170),(nextval($100171),$100172,$100173,$100174,$100175,$100176,$100177,$100178,$100179,$100180,$100181,$100182,$100183,$100184),(nextval($100185),$100186,$100187,$100188,$100189,$100190,$100191,$100192,$100193,$100194,$100195,$100196,$100197,$100198),(nextval($100199),$100200,$100201,$100202,$100203,$100204,$100205,$100206,$100207,$100208,$100209,$100210,$100211,$100212),(nextval($100213),$100214,$100215,$100216,$100217,$100218,$100219,$100220,$100221,$100222,$100223,$100224,$100225,$100226),(nextval($100227),$100228,$100229,$100230,$100231,$100232,$100233,$100234,$100235,$100236,$100237,$100238,$100239,$100240),(nextval($100241),$100242,$100243,$100244,$100245,$100246,$100247,$100248,$100249,$100250,$100251,$100252,$100253,$100254),(nextval($100255),$100256,$100257,$100258,$100259,$100260,$100261,$100262,$100263,$100264,$100265,$100266,$100267,$100268),(nextval($100269),$100270,$100271,$100272,$100273,$100274,$100275,$100276,$100277,$100278,$100279,$100280,$100281,$100282),(nextval($100283),$100284,$100285,$100286,$100287,$100288,$100289,$100290,$100291,$100292,$100293,$100294,$100295,$100296),(nextval($100297),$100298,$100299,$100300,$100301,$100302,$100303,$100304,$100305,$100306,$100307,$100308,$100309,$100310),(nextval($100311),$100312,$100313,$100314,$100315,$100316,$100317,$100318,$100319,$100320,$100321,$100322,$100323,$100324),(nextval($100325),$100326,$100327,$100328,$100329,$100330,$100331,$100332,$100333,$100334,$100335,$100336,$100337,$100338),(nextval($100339),$100340,$100341,$100342,$100343,$100344,$100345,$100346,$100347,$100348,$100349,$100350,$100351,$100352),(nextval($100353),$100354,$100355,$100356,$100357,$100358,$100359,$100360,$100361,$100362,$100363,$100364,$100365,$100366),(nextval($100367),$100368,$100369,$100370,$100371,$100372,$100373,$100374,$100375,$100376,$100377,$100378,$100379,$100380),(nextval($100381),$100382,$100383,$100384,$100385,$100386,$100387,$100388,$100389,$100390,$100391,$100392,$100393,$100394),(nextval($100395),$100396,$100397,$100398,$100399,$100400,$100401,$100402,$100403,$100404,$100405,$100406,$100407,$100408),(nextval($100409),$100410,$100411,$100412,$100413,$100414,$100415,$100416,$100417,$100418,$100419,$100420,$100421,$100422),(nextval($100423),$100424,$100425,$100426,$100427,$100428,$100429,$100430,$100431,$100432,$100433,$100434,$100435,$100436),(nextval($100437),$100438,$100439,$100440,$100441,$100442,$100443,$100444,$100445,$100446,$100447,$100448,$100449,$100450),(nextval($100451),$100452,$100453,$100454,$100455,$100456,$100457,$100458,$100459,$100460,$100461,$100462,$100463,$100464),(nextval($100465),$100466,$100467,$100468,$100469,$100470,$100471,$100472,$100473,$100474,$100475,$100476,$100477,$100478),(nextval($100479),$100480,$100481,$100482,$100483,$100484,$100485,$100486,$100487,$100488,$100489,$100490,$100491,$100492),(nextval($100493),$100494,$100495,$100496,$100497,$100498,$100499,$100500,$100501,$100502,$100503,$100504,$100505,$100506),(nextval($100507),$100508,$100509,$100510,$100511,$100512,$100513,$100514,$100515,$100516,$100517,$100518,$100519,$100520),(nextval($100521),$100522,$100523,$100524,$100525,$100526,$100527,$100528,$100529,$100530,$100531,$100532,$100533,$100534),(nextval($100535),$100536,$100537,$100538,$100539,$100540,$100541,$100542,$100543,$100544,$100545,$100546,$100547,$100548),(nextval($100549),$100550,$100551,$100552,$100553,$100554,$100555,$100556,$100557,$100558,$100559,$100560,$100561,$100562),(nextval($100563),$100564,$100565,$100566,$100567,$100568,$100569,$100570,$100571,$100572,$100573,$100574,$100575,$100576),(nextval($100577),$100578,$100579,$100580,$100581,$100582,$100583,$100584,$100585,$100586,$100587,$100588,$100589,$100590),(nextval($100591),$100592,$100593,$100594,$100595,$100596,$100597,$100598,$100599,$100600,$100601,$100602,$100603,$100604),(nextval($100605),$100606,$100607,$100608,$100609,$100610,$100611,$100612,$100613,$100614,$100615,$100616,$100617,$100618),(nextval($100619),$100620,$100621,$100622,$100623,$100624,$100625,$100626,$100627,$100628,$100629,$100630,$100631,$100632),(nextval($100633),$100634,$100635,$100636,$100637,$100638,$100639,$100640,$100641,$100642,$100643,$100644,$100645,$100646),(nextval($100647),$100648,$100649,$100650,$100651,$100652,$100653,$100654,$100655,$100656,$100657,$100658,$100659,$100660),(nextval($100661),$100662,$100663,$100664,$100665,$100666,$100667,$100668,$100669,$100670,$100671,$100672,$100673,$100674),(nextval($100675),$100676,$100677,$100678,$100679,$100680,$100681,$100682,$100683,$100684,$100685,$100686,$100687,$100688),(nextval($100689),$100690,$100691,$100692,$100693,$100694,$100695,$100696,$100697,$100698,$100699,$100700,$100701,$100702),(nextval($100703),$100704,$100705,$100706,$100707,$100708,$100709,$100710,$100711,$100712,$100713,$100714,$100715,$100716),(nextval($100717),$100718,$100719,$100720,$100721,$100722,$100723,$100724,$100725,$100726,$100727,$100728,$100729,$100730),(nextval($100731),$100732,$100733,$100734,$100735,$100736,$100737,$100738,$100739,$100740,$100741,$100742,$100743,$100744),(nextval($100745),$100746,$100747,$100748,$100749,$100750,$100751,$100752,$100753,$100754,$100755,$100756,$100757,$100758),(nextval($100759),$100760,$100761,$100762,$100763,$100764,$100765,$100766,$100767,$100768,$100769,$100770,$100771,$100772),(nextval($100773),$100774,$100775,$100776,$100777,$100778,$100779,$100780,$100781,$100782,$100783,$100784,$100785,$100786),(nextval($100787),$100788,$100789,$100790,$100791,$100792,$100793,$100794,$100795,$100796,$100797,$100798,$100799,$100800),(nextval($100801),$100802,$100803,$100804,$100805,$100806,$100807,$100808,$100809,$100810,$100811,$100812,$100813,$100814),(nextval($100815),$100816,$100817,$100818,$100819,$100820,$100821,$100822,$100823,$100824,$100825,$100826,$100827,$100828),(nextval($100829),$100830,$100831,$100832,$100833,$100834,$100835,$100836,$100837,$100838,$100839,$100840,$100841,$100842),(nextval($100843),$100844,$100845,$100846,$100847,$100848,$100849,$100850,$100851,$100852,$100853,$100854,$100855,$100856),(nextval($100857),$100858,$100859,$100860,$100861,$100862,$100863,$100864,$100865,$100866,$100867,$100868,$100869,$100870),(nextval($100871),$100872,$100873,$100874,$100875,$100876,$100877,$100878,$100879,$100880,$100881,$100882,$100883,$100884),(nextval($100885),$100886,$100887,$100888,$100889,$100890,$100891,$100892,$100893,$100894,$100895,$100896,$100897,$100898),(nextval($100899),$100900,$100901,$100902,$100903,$100904,$100905,$100906,$100907,$100908,$100909,$100910,$100911,$100912),(nextval($100913),$100914,$100915,$100916,$100917,$100918,$100919,$100920,$100921,$100922,$100923,$100924,$100925,$100926),(nextval($100927),$100928,$100929,$100930,$100931,$100932,$100933,$100934,$100935,$100936,$100937,$100938,$100939,$100940),(nextval($100941),$100942,$100943,$100944,$100945,$100946,$100947,$100948,$100949,$100950,$100951,$100952,$100953,$100954),(nextval($100955),$100956,$100957,$100958,$100959,$100960,$100961,$100962,$100963,$100964,$100965,$100966,$100967,$100968),(nextval($100969),$100970,$100971,$100972,$100973,$100974,$100975,$100976,$100977,$100978,$100979,$100980,$100981,$100982),(nextval($100983),$100984,$100985,$100986,$100987,$100988,$100989,$100990,$100991,$100992,$100993,$100994,$100995,$100996),(nextval($100997),$100998,$100999,$101000,$101001,$101002,$101003,$101004,$101005,$101006,$101007,$101008,$101009,$101010),(nextval($101011),$101012,$101013,$101014,$101015,$101016,$101017,$101018,$101019,$101020,$101021,$101022,$101023,$101024),(nextval($101025),$101026,$101027,$101028,$101029,$101030,$101031,$101032,$101033,$101034,$101035,$101036,$101037,$101038),(nextval($101039),$101040,$101041,$101042,$101043,$101044,$101045,$101046,$101047,$101048,$101049,$101050,$101051,$101052),(nextval($101053),$101054,$101055,$101056,$101057,$101058,$101059,$101060,$101061,$101062,$101063,$101064,$101065,$101066),(nextval($101067),$101068,$101069,$101070,$101071,$101072,$101073,$101074,$101075,$101076,$101077,$101078,$101079,$101080),(nextval($101081),$101082,$101083,$101084,$101085,$101086,$101087,$101088,$101089,$101090,$101091,$101092,$101093,$101094),(nextval($101095),$101096,$101097,$101098,$101099,$101100,$101101,$101102,$101103,$101104,$101105,$101106,$101107,$101108),(nextval($101109),$101110,$101111,$101112,$101113,$101114,$101115,$101116,$101117,$101118,$101119,$101120,$101121,$101122),(nextval($101123),$101124,$101125,$101126,$101127,$101128,$101129,$101130,$101131,$101132,$101133,$101134,$101135,$101136),(nextval($101137),$101138,$101139,$101140,$101141,$101142,$101143,$101144,$101145,$101146,$101147,$101148,$101149,$101150),(nextval($101151),$101152,$101153,$101154,$101155,$101156,$101157,$101158,$101159,$101160,$101161,$101162,$101163,$101164),(nextval($101165),$101166,$101167,$101168,$101169,$101170,$101171,$101172,$101173,$101174,$101175,$101176,$101177,$101178),(nextval($101179),$101180,$101181,$101182,$101183,$101184,$101185,$101186,$101187,$101188,$101189,$101190,$101191,$101192),(nextval($101193),$101194,$101195,$101196,$101197,$101198,$101199,$101200,$101201,$101202,$101203,$101204,$101205,$101206),(nextval($101207),$101208,$101209,$101210,$101211,$101212,$101213,$101214,$101215,$101216,$101217,$101218,$101219,$101220),(nextval($101221),$101222,$101223,$101224,$101225,$101226,$101227,$101228,$101229,$101230,$101231,$101232,$101233,$101234),(nextval($101235),$101236,$101237,$101238,$101239,$101240,$101241,$101242,$101243,$101244,$101245,$101246,$101247,$101248),(nextval($101249),$101250,$101251,$101252,$101253,$101254,$101255,$101256,$101257,$101258,$101259,$101260,$101261,$101262),(nextval($101263),$101264,$101265,$101266,$101267,$101268,$101269,$101270,$101271,$101272,$101273,$101274,$101275,$101276),(nextval($101277),$101278,$101279,$101280,$101281,$101282,$101283,$101284,$101285,$101286,$101287,$101288,$101289,$101290),(nextval($101291),$101292,$101293,$101294,$101295,$101296,$101297,$101298,$101299,$101300,$101301,$101302,$101303,$101304),(nextval($101305),$101306,$101307,$101308,$101309,$101310,$101311,$101312,$101313,$101314,$101315,$101316,$101317,$101318),(nextval($101319),$101320,$101321,$101322,$101323,$101324,$101325,$101326,$101327,$101328,$101329,$101330,$101331,$101332),(nextval($101333),$101334,$101335,$101336,$101337,$101338,$101339,$101340,$101341,$101342,$101343,$101344,$101345,$101346),(nextval($101347),$101348,$101349,$101350,$101351,$101352,$101353,$101354,$101355,$101356,$101357,$101358,$101359,$101360),(nextval($101361),$101362,$101363,$101364,$101365,$101366,$101367,$101368,$101369,$101370,$101371,$101372,$101373,$101374),(nextval($101375),$101376,$101377,$101378,$101379,$101380,$101381,$101382,$101383,$101384,$101385,$101386,$101387,$101388),(nextval($101389),$101390,$101391,$101392,$101393,$101394,$101395,$101396,$101397,$101398,$101399,$101400,$101401,$101402),(nextval($101403),$101404,$101405,$101406,$101407,$101408,$101409,$101410,$101411,$101412,$101413,$101414,$101415,$101416),(nextval($101417),$101418,$101419,$101420,$101421,$101422,$101423,$101424,$101425,$101426,$101427,$101428,$101429,$101430),(nextval($101431),$101432,$101433,$101434,$101435,$101436,$101437,$101438,$101439,$101440,$101441,$101442,$101443,$101444),(nextval($101445),$101446,$101447,$101448,$101449,$101450,$101451,$101452,$101453,$101454,$101455,$101456,$101457,$101458),(nextval($101459),$101460,$101461,$101462,$101463,$101464,$101465,$101466,$101467,$101468,$101469,$101470,$101471,$101472),(nextval($101473),$101474,$101475,$101476,$101477,$101478,$101479,$101480,$101481,$101482,$101483,$101484,$101485,$101486),(nextval($101487),$101488,$101489,$101490,$101491,$101492,$101493,$101494,$101495,$101496,$101497,$101498,$101499,$101500),(nextval($101501),$101502,$101503,$101504,$101505,$101506,$101507,$101508,$101509,$101510,$101511,$101512,$101513,$101514),(nextval($101515),$101516,$101517,$101518,$101519,$101520,$101521,$101522,$101523,$101524,$101525,$101526,$101527,$101528),(nextval($101529),$101530,$101531,$101532,$101533,$101534,$101535,$101536,$101537,$101538,$101539,$101540,$101541,$101542),(nextval($101543),$101544,$101545,$101546,$101547,$101548,$101549,$101550,$101551,$101552,$101553,$101554,$101555,$101556),(nextval($101557),$101558,$101559,$101560,$101561,$101562,$101563,$101564,$101565,$101566,$101567,$101568,$101569,$101570),(nextval($101571),$101572,$101573,$101574,$101575,$101576,$101577,$101578,$101579,$101580,$101581,$101582,$101583,$101584),(nextval($101585),$101586,$101587,$101588,$101589,$101590,$101591,$101592,$101593,$101594,$101595,$101596,$101597,$101598),(nextval($101599),$101600,$101601,$101602,$101603,$101604,$101605,$101606,$101607,$101608,$101609,$101610,$101611,$101612),(nextval($101613),$101614,$101615,$101616,$101617,$101618,$101619,$101620,$101621,$101622,$101623,$101624,$101625,$101626),(nextval($101627),$101628,$101629,$101630,$101631,$101632,$101633,$101634,$101635,$101636,$101637,$101638,$101639,$101640),(nextval($101641),$101642,$101643,$101644,$101645,$101646,$101647,$101648,$101649,$101650,$101651,$101652,$101653,$101654),(nextval($101655),$101656,$101657,$101658,$101659,$101660,$101661,$101662,$101663,$101664,$101665,$101666,$101667,$101668),(nextval($101669),$101670,$101671,$101672,$101673,$101674,$101675,$101676,$101677,$101678,$101679,$101680,$101681,$101682),(nextval($101683),$101684,$101685,$101686,$101687,$101688,$101689,$101690,$101691,$101692,$101693,$101694,$101695,$101696),(nextval($101697),$101698,$101699,$101700,$101701,$101702,$101703,$101704,$101705,$101706,$101707,$101708,$101709,$101710),(nextval($101711),$101712,$101713,$101714,$101715,$101716,$101717,$101718,$101719,$101720,$101721,$101722,$101723,$101724),(nextval($101725),$101726,$101727,$101728,$101729,$101730,$101731,$101732,$101733,$101734,$101735,$101736,$101737,$101738),(nextval($101739),$101740,$101741,$101742,$101743,$101744,$101745,$101746,$101747,$101748,$101749,$101750,$101751,$101752),(nextval($101753),$101754,$101755,$101756,$101757,$101758,$101759,$101760,$101761,$101762,$101763,$101764,$101765,$101766),(nextval($101767),$101768,$101769,$101770,$101771,$101772,$101773,$101774,$101775,$101776,$101777,$101778,$101779,$101780),(nextval($101781),$101782,$101783,$101784,$101785,$101786,$101787,$101788,$101789,$101790,$101791,$101792,$101793,$101794),(nextval($101795),$101796,$101797,$101798,$101799,$101800,$101801,$101802,$101803,$101804,$101805,$101806,$101807,$101808),(nextval($101809),$101810,$101811,$101812,$101813,$101814,$101815,$101816,$101817,$101818,$101819,$101820,$101821,$101822),(nextval($101823),$101824,$101825,$101826,$101827,$101828,$101829,$101830,$101831,$101832,$101833,$101834,$101835,$101836),(nextval($101837),$101838,$101839,$101840,$101841,$101842,$101843,$101844,$101845,$101846,$101847,$101848,$101849,$101850),(nextval($101851),$101852,$101853,$101854,$101855,$101856,$101857,$101858,$101859,$101860,$101861,$101862,$101863,$101864),(nextval($101865),$101866,$101867,$101868,$101869,$101870,$101871,$101872,$101873,$101874,$101875,$101876,$101877,$101878),(nextval($101879),$101880,$101881,$101882,$101883,$101884,$101885,$101886,$101887,$101888,$101889,$101890,$101891,$101892),(nextval($101893),$101894,$101895,$101896,$101897,$101898,$101899,$101900,$101901,$101902,$101903,$101904,$101905,$101906),(nextval($101907),$101908,$101909,$101910,$101911,$101912,$101913,$101914,$101915,$101916,$101917,$101918,$101919,$101920),(nextval($101921),$101922,$101923,$101924,$101925,$101926,$101927,$101928,$101929,$101930,$101931,$101932,$101933,$101934),(nextval($101935),$101936,$101937,$101938,$101939,$101940,$101941,$101942,$101943,$101944,$101945,$101946,$101947,$101948),(nextval($101949),$101950,$101951,$101952,$101953,$101954,$101955,$101956,$101957,$101958,$101959,$101960,$101961,$101962),(nextval($101963),$101964,$101965,$101966,$101967,$101968,$101969,$101970,$101971,$101972,$101973,$101974,$101975,$101976),(nextval($101977),$101978,$101979,$101980,$101981,$101982,$101983,$101984,$101985,$101986,$101987,$101988,$101989,$101990),(nextval($101991),$101992,$101993,$101994,$101995,$101996,$101997,$101998,$101999,$102000,$102001,$102002,$102003,$102004),(nextval($102005),$102006,$102007,$102008,$102009,$102010,$102011,$102012,$102013,$102014,$102015,$102016,$102017,$102018),(nextval($102019),$102020,$102021,$102022,$102023,$102024,$102025,$102026,$102027,$102028,$102029,$102030,$102031,$102032),(nextval($102033),$102034,$102035,$102036,$102037,$102038,$102039,$102040,$102041,$102042,$102043,$102044,$102045,$102046),(nextval($102047),$102048,$102049,$102050,$102051,$102052,$102053,$102054,$102055,$102056,$102057,$102058,$102059,$102060),(nextval($102061),$102062,$102063,$102064,$102065,$102066,$102067,$102068,$102069,$102070,$102071,$102072,$102073,$102074),(nextval($102075),$102076,$102077,$102078,$102079,$102080,$102081,$102082,$102083,$102084,$102085,$102086,$102087,$102088),(nextval($102089),$102090,$102091,$102092,$102093,$102094,$102095,$102096,$102097,$102098,$102099,$102100,$102101,$102102),(nextval($102103),$102104,$102105,$102106,$102107,$102108,$102109,$102110,$102111,$102112,$102113,$102114,$102115,$102116),(nextval($102117),$102118,$102119,$102120,$102121,$102122,$102123,$102124,$102125,$102126,$102127,$102128,$102129,$102130),(nextval($102131),$102132,$102133,$102134,$102135,$102136,$102137,$102138,$102139,$102140,$102141,$102142,$102143,$102144),(nextval($102145),$102146,$102147,$102148,$102149,$102150,$102151,$102152,$102153,$102154,$102155,$102156,$102157,$102158),(nextval($102159),$102160,$102161,$102162,$102163,$102164,$102165,$102166,$102167,$102168,$102169,$102170,$102171,$102172),(nextval($102173),$102174,$102175,$102176,$102177,$102178,$102179,$102180,$102181,$102182,$102183,$102184,$102185,$102186),(nextval($102187),$102188,$102189,$102190,$102191,$102192,$102193,$102194,$102195,$102196,$102197,$102198,$102199,$102200),(nextval($102201),$102202,$102203,$102204,$102205,$102206,$102207,$102208,$102209,$102210,$102211,$102212,$102213,$102214),(nextval($102215),$102216,$102217,$102218,$102219,$102220,$102221,$102222,$102223,$102224,$102225,$102226,$102227,$102228),(nextval($102229),$102230,$102231,$102232,$102233,$102234,$102235,$102236,$102237,$102238,$102239,$102240,$102241,$102242),(nextval($102243),$102244,$102245,$102246,$102247,$102248,$102249,$102250,$102251,$102252,$102253,$102254,$102255,$102256),(nextval($102257),$102258,$102259,$102260,$102261,$102262,$102263,$102264,$102265,$102266,$102267,$102268,$102269,$102270),(nextval($102271),$102272,$102273,$102274,$102275,$102276,$102277,$102278,$102279,$102280,$102281,$102282,$102283,$102284),(nextval($102285),$102286,$102287,$102288,$102289,$102290,$102291,$102292,$102293,$102294,$102295,$102296,$102297,$102298),(nextval($102299),$102300,$102301,$102302,$102303,$102304,$102305,$102306,$102307,$102308,$102309,$102310,$102311,$102312),(nextval($102313),$102314,$102315,$102316,$102317,$102318,$102319,$102320,$102321,$102322,$102323,$102324,$102325,$102326),(nextval($102327),$102328,$102329,$102330,$102331,$102332,$102333,$102334,$102335,$102336,$102337,$102338,$102339,$102340),(nextval($102341),$102342,$102343,$102344,$102345,$102346,$102347,$102348,$102349,$102350,$102351,$102352,$102353,$102354),(nextval($102355),$102356,$102357,$102358,$102359,$102360,$102361,$102362,$102363,$102364,$102365,$102366,$102367,$102368),(nextval($102369),$102370,$102371,$102372,$102373,$102374,$102375,$102376,$102377,$102378,$102379,$102380,$102381,$102382),(nextval($102383),$102384,$102385,$102386,$102387,$102388,$102389,$102390,$102391,$102392,$102393,$102394,$102395,$102396),(nextval($102397),$102398,$102399,$102400,$102401,$102402,$102403,$102404,$102405,$102406,$102407,$102408,$102409,$102410),(nextval($102411),$102412,$102413,$102414,$102415,$102416,$102417,$102418,$102419,$102420,$102421,$102422,$102423,$102424),(nextval($102425),$102426,$102427,$102428,$102429,$102430,$102431,$102432,$102433,$102434,$102435,$102436,$102437,$102438),(nextval($102439),$102440,$102441,$102442,$102443,$102444,$102445,$102446,$102447,$102448,$102449,$102450,$102451,$102452),(nextval($102453),$102454,$102455,$102456,$102457,$102458,$102459,$102460,$102461,$102462,$102463,$102464,$102465,$102466),(nextval($102467),$102468,$102469,$102470,$102471,$102472,$102473,$102474,$102475,$102476,$102477,$102478,$102479,$102480),(nextval($102481),$102482,$102483,$102484,$102485,$102486,$102487,$102488,$102489,$102490,$102491,$102492,$102493,$102494),(nextval($102495),$102496,$102497,$102498,$102499,$102500,$102501,$102502,$102503,$102504,$102505,$102506,$102507,$102508),(nextval($102509),$102510,$102511,$102512,$102513,$102514,$102515,$102516,$102517,$102518,$102519,$102520,$102521,$102522),(nextval($102523),$102524,$102525,$102526,$102527,$102528,$102529,$102530,$102531,$102532,$102533,$102534,$102535,$102536),(nextval($102537),$102538,$102539,$102540,$102541,$102542,$102543,$102544,$102545,$102546,$102547,$102548,$102549,$102550),(nextval($102551),$102552,$102553,$102554,$102555,$102556,$102557,$102558,$102559,$102560,$102561,$102562,$102563,$102564),(nextval($102565),$102566,$102567,$102568,$102569,$102570,$102571,$102572,$102573,$102574,$102575,$102576,$102577,$102578),(nextval($102579),$102580,$102581,$102582,$102583,$102584,$102585,$102586,$102587,$102588,$102589,$102590,$102591,$102592),(nextval($102593),$102594,$102595,$102596,$102597,$102598,$102599,$102600,$102601,$102602,$102603,$102604,$102605,$102606),(nextval($102607),$102608,$102609,$102610,$102611,$102612,$102613,$102614,$102615,$102616,$102617,$102618,$102619,$102620),(nextval($102621),$102622,$102623,$102624,$102625,$102626,$102627,$102628,$102629,$102630,$102631,$102632,$102633,$102634),(nextval($102635),$102636,$102637,$102638,$102639,$102640,$102641,$102642,$102643,$102644,$102645,$102646,$102647,$102648),(nextval($102649),$102650,$102651,$102652,$102653,$102654,$102655,$102656,$102657,$102658,$102659,$102660,$102661,$102662),(nextval($102663),$102664,$102665,$102666,$102667,$102668,$102669,$102670,$102671,$102672,$102673,$102674,$102675,$102676),(nextval($102677),$102678,$102679,$102680,$102681,$102682,$102683,$102684,$102685,$102686,$102687,$102688,$102689,$102690),(nextval($102691),$102692,$102693,$102694,$102695,$102696,$102697,$102698,$102699,$102700,$102701,$102702,$102703,$102704),(nextval($102705),$102706,$102707,$102708,$102709,$102710,$102711,$102712,$102713,$102714,$102715,$102716,$102717,$102718),(nextval($102719),$102720,$102721,$102722,$102723,$102724,$102725,$102726,$102727,$102728,$102729,$102730,$102731,$102732),(nextval($102733),$102734,$102735,$102736,$102737,$102738,$102739,$102740,$102741,$102742,$102743,$102744,$102745,$102746),(nextval($102747),$102748,$102749,$102750,$102751,$102752,$102753,$102754,$102755,$102756,$102757,$102758,$102759,$102760),(nextval($102761),$102762,$102763,$102764,$102765,$102766,$102767,$102768,$102769,$102770,$102771,$102772,$102773,$102774),(nextval($102775),$102776,$102777,$102778,$102779,$102780,$102781,$102782,$102783,$102784,$102785,$102786,$102787,$102788),(nextval($102789),$102790,$102791,$102792,$102793,$102794,$102795,$102796,$102797,$102798,$102799,$102800,$102801,$102802),(nextval($102803),$102804,$102805,$102806,$102807,$102808,$102809,$102810,$102811,$102812,$102813,$102814,$102815,$102816),(nextval($102817),$102818,$102819,$102820,$102821,$102822,$102823,$102824,$102825,$102826,$102827,$102828,$102829,$102830),(nextval($102831),$102832,$102833,$102834,$102835,$102836,$102837,$102838,$102839,$102840,$102841,$102842,$102843,$102844),(nextval($102845),$102846,$102847,$102848,$102849,$102850,$102851,$102852,$102853,$102854,$102855,$102856,$102857,$102858),(nextval($102859),$102860,$102861,$102862,$102863,$102864,$102865,$102866,$102867,$102868,$102869,$102870,$102871,$102872),(nextval($102873),$102874,$102875,$102876,$102877,$102878,$102879,$102880,$102881,$102882,$102883,$102884,$102885,$102886),(nextval($102887),$102888,$102889,$102890,$102891,$102892,$102893,$102894,$102895,$102896,$102897,$102898,$102899,$102900),(nextval($102901),$102902,$102903,$102904,$102905,$102906,$102907,$102908,$102909,$102910,$102911,$102912,$102913,$102914),(nextval($102915),$102916,$102917,$102918,$102919,$102920,$102921,$102922,$102923,$102924,$102925,$102926,$102927,$102928),(nextval($102929),$102930,$102931,$102932,$102933,$102934,$102935,$102936,$102937,$102938,$102939,$102940,$102941,$102942),(nextval($102943),$102944,$102945,$102946,$102947,$102948,$102949,$102950,$102951,$102952,$102953,$102954,$102955,$102956),(nextval($102957),$102958,$102959,$102960,$102961,$102962,$102963,$102964,$102965,$102966,$102967,$102968,$102969,$102970),(nextval($102971),$102972,$102973,$102974,$102975,$102976,$102977,$102978,$102979,$102980,$102981,$102982,$102983,$102984),(nextval($102985),$102986,$102987,$102988,$102989,$102990,$102991,$102992,$102993,$102994,$102995,$102996,$102997,$102998),(nextval($102999),$103000,$103001,$103002,$103003,$103004,$103005,$103006,$103007,$103008,$103009,$103010,$103011,$103012),(nextval($103013),$103014,$103015,$103016,$103017,$103018,$103019,$103020,$103021,$103022,$103023,$103024,$103025,$103026),(nextval($103027),$103028,$103029,$103030,$103031,$103032,$103033,$103034,$103035,$103036,$103037,$103038,$103039,$103040),(nextval($103041),$103042,$103043,$103044,$103045,$103046,$103047,$103048,$103049,$103050,$103051,$103052,$103053,$103054),(nextval($103055),$103056,$103057,$103058,$103059,$103060,$103061,$103062,$103063,$103064,$103065,$103066,$103067,$103068),(nextval($103069),$103070,$103071,$103072,$103073,$103074,$103075,$103076,$103077,$103078,$103079,$103080,$103081,$103082),(nextval($103083),$103084,$103085,$103086,$103087,$103088,$103089,$103090,$103091,$103092,$103093,$103094,$103095,$103096),(nextval($103097),$103098,$103099,$103100,$103101,$103102,$103103,$103104,$103105,$103106,$103107,$103108,$103109,$103110),(nextval($103111),$103112,$103113,$103114,$103115,$103116,$103117,$103118,$103119,$103120,$103121,$103122,$103123,$103124),(nextval($103125),$103126,$103127,$103128,$103129,$103130,$103131,$103132,$103133,$103134,$103135,$103136,$103137,$103138),(nextval($103139),$103140,$103141,$103142,$103143,$103144,$103145,$103146,$103147,$103148,$103149,$103150,$103151,$103152),(nextval($103153),$103154,$103155,$103156,$103157,$103158,$103159,$103160,$103161,$103162,$103163,$103164,$103165,$103166),(nextval($103167),$103168,$103169,$103170,$103171,$103172,$103173,$103174,$103175,$103176,$103177,$103178,$103179,$103180),(nextval($103181),$103182,$103183,$103184,$103185,$103186,$103187,$103188,$103189,$103190,$103191,$103192,$103193,$103194),(nextval($103195),$103196,$103197,$103198,$103199,$103200,$103201,$103202,$103203,$103204,$103205,$103206,$103207,$103208),(nextval($103209),$103210,$103211,$103212,$103213,$103214,$103215,$103216,$103217,$103218,$103219,$103220,$103221,$103222),(nextval($103223),$103224,$103225,$103226,$103227,$103228,$103229,$103230,$103231,$103232,$103233,$103234,$103235,$103236),(nextval($103237),$103238,$103239,$103240,$103241,$103242,$103243,$103244,$103245,$103246,$103247,$103248,$103249,$103250),(nextval($103251),$103252,$103253,$103254,$103255,$103256,$103257,$103258,$103259,$103260,$103261,$103262,$103263,$103264),(nextval($103265),$103266,$103267,$103268,$103269,$103270,$103271,$103272,$103273,$103274,$103275,$103276,$103277,$103278),(nextval($103279),$103280,$103281,$103282,$103283,$103284,$103285,$103286,$103287,$103288,$103289,$103290,$103291,$103292),(nextval($103293),$103294,$103295,$103296,$103297,$103298,$103299,$103300,$103301,$103302,$103303,$103304,$103305,$103306),(nextval($103307),$103308,$103309,$103310,$103311,$103312,$103313,$103314,$103315,$103316,$103317,$103318,$103319,$103320),(nextval($103321),$103322,$103323,$103324,$103325,$103326,$103327,$103328,$103329,$103330,$103331,$103332,$103333,$103334),(nextval($103335),$103336,$103337,$103338,$103339,$103340,$103341,$103342,$103343,$103344,$103345,$103346,$103347,$103348),(nextval($103349),$103350,$103351,$103352,$103353,$103354,$103355,$103356,$103357,$103358,$103359,$103360,$103361,$103362),(nextval($103363),$103364,$103365,$103366,$103367,$103368,$103369,$103370,$103371,$103372,$103373,$103374,$103375,$103376),(nextval($103377),$103378,$103379,$103380,$103381,$103382,$103383,$103384,$103385,$103386,$103387,$103388,$103389,$103390),(nextval($103391),$103392,$103393,$103394,$103395,$103396,$103397,$103398,$103399,$103400,$103401,$103402,$103403,$103404),(nextval($103405),$103406,$103407,$103408,$103409,$103410,$103411,$103412,$103413,$103414,$103415,$103416,$103417,$103418),(nextval($103419),$103420,$103421,$103422,$103423,$103424,$103425,$103426,$103427,$103428,$103429,$103430,$103431,$103432),(nextval($103433),$103434,$103435,$103436,$103437,$103438,$103439,$103440,$103441,$103442,$103443,$103444,$103445,$103446),(nextval($103447),$103448,$103449,$103450,$103451,$103452,$103453,$103454,$103455,$103456,$103457,$103458,$103459,$103460),(nextval($103461),$103462,$103463,$103464,$103465,$103466,$103467,$103468,$103469,$103470,$103471,$103472,$103473,$103474),(nextval($103475),$103476,$103477,$103478,$103479,$103480,$103481,$103482,$103483,$103484,$103485,$103486,$103487,$103488),(nextval($103489),$103490,$103491,$103492,$103493,$103494,$103495,$103496,$103497,$103498,$103499,$103500,$103501,$103502),(nextval($103503),$103504,$103505,$103506,$103507,$103508,$103509,$103510,$103511,$103512,$103513,$103514,$103515,$103516),(nextval($103517),$103518,$103519,$103520,$103521,$103522,$103523,$103524,$103525,$103526,$103527,$103528,$103529,$103530),(nextval($103531),$103532,$103533,$103534,$103535,$103536,$103537,$103538,$103539,$103540,$103541,$103542,$103543,$103544),(nextval($103545),$103546,$103547,$103548,$103549,$103550,$103551,$103552,$103553,$103554,$103555,$103556,$103557,$103558),(nextval($103559),$103560,$103561,$103562,$103563,$103564,$103565,$103566,$103567,$103568,$103569,$103570,$103571,$103572),(nextval($103573),$103574,$103575,$103576,$103577,$103578,$103579,$103580,$103581,$103582,$103583,$103584,$103585,$103586),(nextval($103587),$103588,$103589,$103590,$103591,$103592,$103593,$103594,$103595,$103596,$103597,$103598,$103599,$103600),(nextval($103601),$103602,$103603,$103604,$103605,$103606,$103607,$103608,$103609,$103610,$103611,$103612,$103613,$103614),(nextval($103615),$103616,$103617,$103618,$103619,$103620,$103621,$103622,$103623,$103624,$103625,$103626,$103627,$103628),(nextval($103629),$103630,$103631,$103632,$103633,$103634,$103635,$103636,$103637,$103638,$103639,$103640,$103641,$103642),(nextval($103643),$103644,$103645,$103646,$103647,$103648,$103649,$103650,$103651,$103652,$103653,$103654,$103655,$103656),(nextval($103657),$103658,$103659,$103660,$103661,$103662,$103663,$103664,$103665,$103666,$103667,$103668,$103669,$103670),(nextval($103671),$103672,$103673,$103674,$103675,$103676,$103677,$103678,$103679,$103680,$103681,$103682,$103683,$103684),(nextval($103685),$103686,$103687,$103688,$103689,$103690,$103691,$103692,$103693,$103694,$103695,$103696,$103697,$103698),(nextval($103699),$103700,$103701,$103702,$103703,$103704,$103705,$103706,$103707,$103708,$103709,$103710,$103711,$103712),(nextval($103713),$103714,$103715,$103716,$103717,$103718,$103719,$103720,$103721,$103722,$103723,$103724,$103725,$103726),(nextval($103727),$103728,$103729,$103730,$103731,$103732,$103733,$103734,$103735,$103736,$103737,$103738,$103739,$103740),(nextval($103741),$103742,$103743,$103744,$103745,$103746,$103747,$103748,$103749,$103750,$103751,$103752,$103753,$103754),(nextval($103755),$103756,$103757,$103758,$103759,$103760,$103761,$103762,$103763,$103764,$103765,$103766,$103767,$103768),(nextval($103769),$103770,$103771,$103772,$103773,$103774,$103775,$103776,$103777,$103778,$103779,$103780,$103781,$103782),(nextval($103783),$103784,$103785,$103786,$103787,$103788,$103789,$103790,$103791,$103792,$103793,$103794,$103795,$103796),(nextval($103797),$103798,$103799,$103800,$103801,$103802,$103803,$103804,$103805,$103806,$103807,$103808,$103809,$103810),(nextval($103811),$103812,$103813,$103814,$103815,$103816,$103817,$103818,$103819,$103820,$103821,$103822,$103823,$103824),(nextval($103825),$103826,$103827,$103828,$103829,$103830,$103831,$103832,$103833,$103834,$103835,$103836,$103837,$103838),(nextval($103839),$103840,$103841,$103842,$103843,$103844,$103845,$103846,$103847,$103848,$103849,$103850,$103851,$103852),(nextval($103853),$103854,$103855,$103856,$103857,$103858,$103859,$103860,$103861,$103862,$103863,$103864,$103865,$103866),(nextval($103867),$103868,$103869,$103870,$103871,$103872,$103873,$103874,$103875,$103876,$103877,$103878,$103879,$103880),(nextval($103881),$103882,$103883,$103884,$103885,$103886,$103887,$103888,$103889,$103890,$103891,$103892,$103893,$103894),(nextval($103895),$103896,$103897,$103898,$103899,$103900,$103901,$103902,$103903,$103904,$103905,$103906,$103907,$103908),(nextval($103909),$103910,$103911,$103912,$103913,$103914,$103915,$103916,$103917,$103918,$103919,$103920,$103921,$103922),(nextval($103923),$103924,$103925,$103926,$103927,$103928,$103929,$103930,$103931,$103932,$103933,$103934,$103935,$103936),(nextval($103937),$103938,$103939,$103940,$103941,$103942,$103943,$103944,$103945,$103946,$103947,$103948,$103949,$103950),(nextval($103951),$103952,$103953,$103954,$103955,$103956,$103957,$103958,$103959,$103960,$103961,$103962,$103963,$103964),(nextval($103965),$103966,$103967,$103968,$103969,$103970,$103971,$103972,$103973,$103974,$103975,$103976,$103977,$103978),(nextval($103979),$103980,$103981,$103982,$103983,$103984,$103985,$103986,$103987,$103988,$103989,$103990,$103991,$103992),(nextval($103993),$103994,$103995,$103996,$103997,$103998,$103999,$104000,$104001,$104002,$104003,$104004,$104005,$104006),(nextval($104007),$104008,$104009,$104010,$104011,$104012,$104013,$104014,$104015,$104016,$104017,$104018,$104019,$104020),(nextval($104021),$104022,$104023,$104024,$104025,$104026,$104027,$104028,$104029,$104030,$104031,$104032,$104033,$104034),(nextval($104035),$104036,$104037,$104038,$104039,$104040,$104041,$104042,$104043,$104044,$104045,$104046,$104047,$104048),(nextval($104049),$104050,$104051,$104052,$104053,$104054,$104055,$104056,$104057,$104058,$104059,$104060,$104061,$104062),(nextval($104063),$104064,$104065,$104066,$104067,$104068,$104069,$104070,$104071,$104072,$104073,$104074,$104075,$104076),(nextval($104077),$104078,$104079,$104080,$104081,$104082,$104083,$104084,$104085,$104086,$104087,$104088,$104089,$104090),(nextval($104091),$104092,$104093,$104094,$104095,$104096,$104097,$104098,$104099,$104100,$104101,$104102,$104103,$104104),(nextval($104105),$104106,$104107,$104108,$104109,$104110,$104111,$104112,$104113,$104114,$104115,$104116,$104117,$104118),(nextval($104119),$104120,$104121,$104122,$104123,$104124,$104125,$104126,$104127,$104128,$104129,$104130,$104131,$104132),(nextval($104133),$104134,$104135,$104136,$104137,$104138,$104139,$104140,$104141,$104142,$104143,$104144,$104145,$104146),(nextval($104147),$104148,$104149,$104150,$104151,$104152,$104153,$104154,$104155,$104156,$104157,$104158,$104159,$104160),(nextval($104161),$104162,$104163,$104164,$104165,$104166,$104167,$104168,$104169,$104170,$104171,$104172,$104173,$104174),(nextval($104175),$104176,$104177,$104178,$104179,$104180,$104181,$104182,$104183,$104184,$104185,$104186,$104187,$104188),(nextval($104189),$104190,$104191,$104192,$104193,$104194,$104195,$104196,$104197,$104198,$104199,$104200,$104201,$104202),(nextval($104203),$104204,$104205,$104206,$104207,$104208,$104209,$104210,$104211,$104212,$104213,$104214,$104215,$104216),(nextval($104217),$104218,$104219,$104220,$104221,$104222,$104223,$104224,$104225,$104226,$104227,$104228,$104229,$104230),(nextval($104231),$104232,$104233,$104234,$104235,$104236,$104237,$104238,$104239,$104240,$104241,$104242,$104243,$104244),(nextval($104245),$104246,$104247,$104248,$104249,$104250,$104251,$104252,$104253,$104254,$104255,$104256,$104257,$104258),(nextval($104259),$104260,$104261,$104262,$104263,$104264,$104265,$104266,$104267,$104268,$104269,$104270,$104271,$104272),(nextval($104273),$104274,$104275,$104276,$104277,$104278,$104279,$104280,$104281,$104282,$104283,$104284,$104285,$104286),(nextval($104287),$104288,$104289,$104290,$104291,$104292,$104293,$104294,$104295,$104296,$104297,$104298,$104299,$104300),(nextval($104301),$104302,$104303,$104304,$104305,$104306,$104307,$104308,$104309,$104310,$104311,$104312,$104313,$104314),(nextval($104315),$104316,$104317,$104318,$104319,$104320,$104321,$104322,$104323,$104324,$104325,$104326,$104327,$104328),(nextval($104329),$104330,$104331,$104332,$104333,$104334,$104335,$104336,$104337,$104338,$104339,$104340,$104341,$104342),(nextval($104343),$104344,$104345,$104346,$104347,$104348,$104349,$104350,$104351,$104352,$104353,$104354,$104355,$104356),(nextval($104357),$104358,$104359,$104360,$104361,$104362,$104363,$104364,$104365,$104366,$104367,$104368,$104369,$104370),(nextval($104371),$104372,$104373,$104374,$104375,$104376,$104377,$104378,$104379,$104380,$104381,$104382,$104383,$104384),(nextval($104385),$104386,$104387,$104388,$104389,$104390,$104391,$104392,$104393,$104394,$104395,$104396,$104397,$104398),(nextval($104399),$104400,$104401,$104402,$104403,$104404,$104405,$104406,$104407,$104408,$104409,$104410,$104411,$104412),(nextval($104413),$104414,$104415,$104416,$104417,$104418,$104419,$104420,$104421,$104422,$104423,$104424,$104425,$104426),(nextval($104427),$104428,$104429,$104430,$104431,$104432,$104433,$104434,$104435,$104436,$104437,$104438,$104439,$104440),(nextval($104441),$104442,$104443,$104444,$104445,$104446,$104447,$104448,$104449,$104450,$104451,$104452,$104453,$104454),(nextval($104455),$104456,$104457,$104458,$104459,$104460,$104461,$104462,$104463,$104464,$104465,$104466,$104467,$104468),(nextval($104469),$104470,$104471,$104472,$104473,$104474,$104475,$104476,$104477,$104478,$104479,$104480,$104481,$104482),(nextval($104483),$104484,$104485,$104486,$104487,$104488,$104489,$104490,$104491,$104492,$104493,$104494,$104495,$104496),(nextval($104497),$104498,$104499,$104500,$104501,$104502,$104503,$104504,$104505,$104506,$104507,$104508,$104509,$104510),(nextval($104511),$104512,$104513,$104514,$104515,$104516,$104517,$104518,$104519,$104520,$104521,$104522,$104523,$104524),(nextval($104525),$104526,$104527,$104528,$104529,$104530,$104531,$104532,$104533,$104534,$104535,$104536,$104537,$104538),(nextval($104539),$104540,$104541,$104542,$104543,$104544,$104545,$104546,$104547,$104548,$104549,$104550,$104551,$104552),(nextval($104553),$104554,$104555,$104556,$104557,$104558,$104559,$104560,$104561,$104562,$104563,$104564,$104565,$104566),(nextval($104567),$104568,$104569,$104570,$104571,$104572,$104573,$104574,$104575,$104576,$104577,$104578,$104579,$104580),(nextval($104581),$104582,$104583,$104584,$104585,$104586,$104587,$104588,$104589,$104590,$104591,$104592,$104593,$104594),(nextval($104595),$104596,$104597,$104598,$104599,$104600,$104601,$104602,$104603,$104604,$104605,$104606,$104607,$104608),(nextval($104609),$104610,$104611,$104612,$104613,$104614,$104615,$104616,$104617,$104618,$104619,$104620,$104621,$104622),(nextval($104623),$104624,$104625,$104626,$104627,$104628,$104629,$104630,$104631,$104632,$104633,$104634,$104635,$104636),(nextval($104637),$104638,$104639,$104640,$104641,$104642,$104643,$104644,$104645,$104646,$104647,$104648,$104649,$104650),(nextval($104651),$104652,$104653,$104654,$104655,$104656,$104657,$104658,$104659,$104660,$104661,$104662,$104663,$104664),(nextval($104665),$104666,$104667,$104668,$104669,$104670,$104671,$104672,$104673,$104674,$104675,$104676,$104677,$104678),(nextval($104679),$104680,$104681,$104682,$104683,$104684,$104685,$104686,$104687,$104688,$104689,$104690,$104691,$104692),(nextval($104693),$104694,$104695,$104696,$104697,$104698,$104699,$104700,$104701,$104702,$104703,$104704,$104705,$104706),(nextval($104707),$104708,$104709,$104710,$104711,$104712,$104713,$104714,$104715,$104716,$104717,$104718,$104719,$104720),(nextval($104721),$104722,$104723,$104724,$104725,$104726,$104727,$104728,$104729,$104730,$104731,$104732,$104733,$104734),(nextval($104735),$104736,$104737,$104738,$104739,$104740,$104741,$104742,$104743,$104744,$104745,$104746,$104747,$104748),(nextval($104749),$104750,$104751,$104752,$104753,$104754,$104755,$104756,$104757,$104758,$104759,$104760,$104761,$104762),(nextval($104763),$104764,$104765,$104766,$104767,$104768,$104769,$104770,$104771,$104772,$104773,$104774,$104775,$104776),(nextval($104777),$104778,$104779,$104780,$104781,$104782,$104783,$104784,$104785,$104786,$104787,$104788,$104789,$104790),(nextval($104791),$104792,$104793,$104794,$104795,$104796,$104797,$104798,$104799,$104800,$104801,$104802,$104803,$104804),(nextval($104805),$104806,$104807,$104808,$104809,$104810,$104811,$104812,$104813,$104814,$104815,$104816,$104817,$104818),(nextval($104819),$104820,$104821,$104822,$104823,$104824,$104825,$104826,$104827,$104828,$104829,$104830,$104831,$104832),(nextval($104833),$104834,$104835,$104836,$104837,$104838,$104839,$104840,$104841,$104842,$104843,$104844,$104845,$104846),(nextval($104847),$104848,$104849,$104850,$104851,$104852,$104853,$104854,$104855,$104856,$104857,$104858,$104859,$104860),(nextval($104861),$104862,$104863,$104864,$104865,$104866,$104867,$104868,$104869,$104870,$104871,$104872,$104873,$104874),(nextval($104875),$104876,$104877,$104878,$104879,$104880,$104881,$104882,$104883,$104884,$104885,$104886,$104887,$104888),(nextval($104889),$104890,$104891,$104892,$104893,$104894,$104895,$104896,$104897,$104898,$104899,$104900,$104901,$104902),(nextval($104903),$104904,$104905,$104906,$104907,$104908,$104909,$104910,$104911,$104912,$104913,$104914,$104915,$104916),(nextval($104917),$104918,$104919,$104920,$104921,$104922,$104923,$104924,$104925,$104926,$104927,$104928,$104929,$104930),(nextval($104931),$104932,$104933,$104934,$104935,$104936,$104937,$104938,$104939,$104940,$104941,$104942,$104943,$104944),(nextval($104945),$104946,$104947,$104948,$104949,$104950,$104951,$104952,$104953,$104954,$104955,$104956,$104957,$104958),(nextval($104959),$104960,$104961,$104962,$104963,$104964,$104965,$104966,$104967,$104968,$104969,$104970,$104971,$104972),(nextval($104973),$104974,$104975,$104976,$104977,$104978,$104979,$104980,$104981,$104982,$104983,$104984,$104985,$104986),(nextval($104987),$104988,$104989,$104990,$104991,$104992,$104993,$104994,$104995,$104996,$104997,$104998,$104999,$105000),(nextval($105001),$105002,$105003,$105004,$105005,$105006,$105007,$105008,$105009,$105010,$105011,$105012,$105013,$105014),(nextval($105015),$105016,$105017,$105018,$105019,$105020,$105021,$105022,$105023,$105024,$105025,$105026,$105027,$105028),(nextval($105029),$105030,$105031,$105032,$105033,$105034,$105035,$105036,$105037,$105038,$105039,$105040,$105041,$105042),(nextval($105043),$105044,$105045,$105046,$105047,$105048,$105049,$105050,$105051,$105052,$105053,$105054,$105055,$105056),(nextval($105057),$105058,$105059,$105060,$105061,$105062,$105063,$105064,$105065,$105066,$105067,$105068,$105069,$105070),(nextval($105071),$105072,$105073,$105074,$105075,$105076,$105077,$105078,$105079,$105080,$105081,$105082,$105083,$105084),(nextval($105085),$105086,$105087,$105088,$105089,$105090,$105091,$105092,$105093,$105094,$105095,$105096,$105097,$105098),(nextval($105099),$105100,$105101,$105102,$105103,$105104,$105105,$105106,$105107,$105108,$105109,$105110,$105111,$105112),(nextval($105113),$105114,$105115,$105116,$105117,$105118,$105119,$105120,$105121,$105122,$105123,$105124,$105125,$105126),(nextval($105127),$105128,$105129,$105130,$105131,$105132,$105133,$105134,$105135,$105136,$105137,$105138,$105139,$105140),(nextval($105141),$105142,$105143,$105144,$105145,$105146,$105147,$105148,$105149,$105150,$105151,$105152,$105153,$105154),(nextval($105155),$105156,$105157,$105158,$105159,$105160,$105161,$105162,$105163,$105164,$105165,$105166,$105167,$105168),(nextval($105169),$105170,$105171,$105172,$105173,$105174,$105175,$105176,$105177,$105178,$105179,$105180,$105181,$105182),(nextval($105183),$105184,$105185,$105186,$105187,$105188,$105189,$105190,$105191,$105192,$105193,$105194,$105195,$105196),(nextval($105197),$105198,$105199,$105200,$105201,$105202,$105203,$105204,$105205,$105206,$105207,$105208,$105209,$105210),(nextval($105211),$105212,$105213,$105214,$105215,$105216,$105217,$105218,$105219,$105220,$105221,$105222,$105223,$105224),(nextval($105225),$105226,$105227,$105228,$105229,$105230,$105231,$105232,$105233,$105234,$105235,$105236,$105237,$105238),(nextval($105239),$105240,$105241,$105242,$105243,$105244,$105245,$105246,$105247,$105248,$105249,$105250,$105251,$105252),(nextval($105253),$105254,$105255,$105256,$105257,$105258,$105259,$105260,$105261,$105262,$105263,$105264,$105265,$105266),(nextval($105267),$105268,$105269,$105270,$105271,$105272,$105273,$105274,$105275,$105276,$105277,$105278,$105279,$105280),(nextval($105281),$105282,$105283,$105284,$105285,$105286,$105287,$105288,$105289,$105290,$105291,$105292,$105293,$105294),(nextval($105295),$105296,$105297,$105298,$105299,$105300,$105301,$105302,$105303,$105304,$105305,$105306,$105307,$105308),(nextval($105309),$105310,$105311,$105312,$105313,$105314,$105315,$105316,$105317,$105318,$105319,$105320,$105321,$105322),(nextval($105323),$105324,$105325,$105326,$105327,$105328,$105329,$105330,$105331,$105332,$105333,$105334,$105335,$105336),(nextval($105337),$105338,$105339,$105340,$105341,$105342,$105343,$105344,$105345,$105346,$105347,$105348,$105349,$105350),(nextval($105351),$105352,$105353,$105354,$105355,$105356,$105357,$105358,$105359,$105360,$105361,$105362,$105363,$105364),(nextval($105365),$105366,$105367,$105368,$105369,$105370,$105371,$105372,$105373,$105374,$105375,$105376,$105377,$105378),(nextval($105379),$105380,$105381,$105382,$105383,$105384,$105385,$105386,$105387,$105388,$105389,$105390,$105391,$105392),(nextval($105393),$105394,$105395,$105396,$105397,$105398,$105399,$105400,$105401,$105402,$105403,$105404,$105405,$105406),(nextval($105407),$105408,$105409,$105410,$105411,$105412,$105413,$105414,$105415,$105416,$105417,$105418,$105419,$105420),(nextval($105421),$105422,$105423,$105424,$105425,$105426,$105427,$105428,$105429,$105430,$105431,$105432,$105433,$105434),(nextval($105435),$105436,$105437,$105438,$105439,$105440,$105441,$105442,$105443,$105444,$105445,$105446,$105447,$105448),(nextval($105449),$105450,$105451,$105452,$105453,$105454,$105455,$105456,$105457,$105458,$105459,$105460,$105461,$105462),(nextval($105463),$105464,$105465,$105466,$105467,$105468,$105469,$105470,$105471,$105472,$105473,$105474,$105475,$105476),(nextval($105477),$105478,$105479,$105480,$105481,$105482,$105483,$105484,$105485,$105486,$105487,$105488,$105489,$105490),(nextval($105491),$105492,$105493,$105494,$105495,$105496,$105497,$105498,$105499,$105500,$105501,$105502,$105503,$105504),(nextval($105505),$105506,$105507,$105508,$105509,$105510,$105511,$105512,$105513,$105514,$105515,$105516,$105517,$105518),(nextval($105519),$105520,$105521,$105522,$105523,$105524,$105525,$105526,$105527,$105528,$105529,$105530,$105531,$105532),(nextval($105533),$105534,$105535,$105536,$105537,$105538,$105539,$105540,$105541,$105542,$105543,$105544,$105545,$105546),(nextval($105547),$105548,$105549,$105550,$105551,$105552,$105553,$105554,$105555,$105556,$105557,$105558,$105559,$105560),(nextval($105561),$105562,$105563,$105564,$105565,$105566,$105567,$105568,$105569,$105570,$105571,$105572,$105573,$105574),(nextval($105575),$105576,$105577,$105578,$105579,$105580,$105581,$105582,$105583,$105584,$105585,$105586,$105587,$105588),(nextval($105589),$105590,$105591,$105592,$105593,$105594,$105595,$105596,$105597,$105598,$105599,$105600,$105601,$105602),(nextval($105603),$105604,$105605,$105606,$105607,$105608,$105609,$105610,$105611,$105612,$105613,$105614,$105615,$105616),(nextval($105617),$105618,$105619,$105620,$105621,$105622,$105623,$105624,$105625,$105626,$105627,$105628,$105629,$105630),(nextval($105631),$105632,$105633,$105634,$105635,$105636,$105637,$105638,$105639,$105640,$105641,$105642,$105643,$105644),(nextval($105645),$105646,$105647,$105648,$105649,$105650,$105651,$105652,$105653,$105654,$105655,$105656,$105657,$105658),(nextval($105659),$105660,$105661,$105662,$105663,$105664,$105665,$105666,$105667,$105668,$105669,$105670,$105671,$105672),(nextval($105673),$105674,$105675,$105676,$105677,$105678,$105679,$105680,$105681,$105682,$105683,$105684,$105685,$105686),(nextval($105687),$105688,$105689,$105690,$105691,$105692,$105693,$105694,$105695,$105696,$105697,$105698,$105699,$105700),(nextval($105701),$105702,$105703,$105704,$105705,$105706,$105707,$105708,$105709,$105710,$105711,$105712,$105713,$105714),(nextval($105715),$105716,$105717,$105718,$105719,$105720,$105721,$105722,$105723,$105724,$105725,$105726,$105727,$105728),(nextval($105729),$105730,$105731,$105732,$105733,$105734,$105735,$105736,$105737,$105738,$105739,$105740,$105741,$105742),(nextval($105743),$105744,$105745,$105746,$105747,$105748,$105749,$105750,$105751,$105752,$105753,$105754,$105755,$105756),(nextval($105757),$105758,$105759,$105760,$105761,$105762,$105763,$105764,$105765,$105766,$105767,$105768,$105769,$105770),(nextval($105771),$105772,$105773,$105774,$105775,$105776,$105777,$105778,$105779,$105780,$105781,$105782,$105783,$105784),(nextval($105785),$105786,$105787,$105788,$105789,$105790,$105791,$105792,$105793,$105794,$105795,$105796,$105797,$105798),(nextval($105799),$105800,$105801,$105802,$105803,$105804,$105805,$105806,$105807,$105808,$105809,$105810,$105811,$105812),(nextval($105813),$105814,$105815,$105816,$105817,$105818,$105819,$105820,$105821,$105822,$105823,$105824,$105825,$105826),(nextval($105827),$105828,$105829,$105830,$105831,$105832,$105833,$105834,$105835,$105836,$105837,$105838,$105839,$105840),(nextval($105841),$105842,$105843,$105844,$105845,$105846,$105847,$105848,$105849,$105850,$105851,$105852,$105853,$105854),(nextval($105855),$105856,$105857,$105858,$105859,$105860,$105861,$105862,$105863,$105864,$105865,$105866,$105867,$105868),(nextval($105869),$105870,$105871,$105872,$105873,$105874,$105875,$105876,$105877,$105878,$105879,$105880,$105881,$105882),(nextval($105883),$105884,$105885,$105886,$105887,$105888,$105889,$105890,$105891,$105892,$105893,$105894,$105895,$105896),(nextval($105897),$105898,$105899,$105900,$105901,$105902,$105903,$105904,$105905,$105906,$105907,$105908,$105909,$105910),(nextval($105911),$105912,$105913,$105914,$105915,$105916,$105917,$105918,$105919,$105920,$105921,$105922,$105923,$105924),(nextval($105925),$105926,$105927,$105928,$105929,$105930,$105931,$105932,$105933,$105934,$105935,$105936,$105937,$105938),(nextval($105939),$105940,$105941,$105942,$105943,$105944,$105945,$105946,$105947,$105948,$105949,$105950,$105951,$105952),(nextval($105953),$105954,$105955,$105956,$105957,$105958,$105959,$105960,$105961,$105962,$105963,$105964,$105965,$105966),(nextval($105967),$105968,$105969,$105970,$105971,$105972,$105973,$105974,$105975,$105976,$105977,$105978,$105979,$105980),(nextval($105981),$105982,$105983,$105984,$105985,$105986,$105987,$105988,$105989,$105990,$105991,$105992,$105993,$105994),(nextval($105995),$105996,$105997,$105998,$105999,$106000,$106001,$106002,$106003,$106004,$106005,$106006,$106007,$106008),(nextval($106009),$106010,$106011,$106012,$106013,$106014,$106015,$106016,$106017,$106018,$106019,$106020,$106021,$106022),(nextval($106023),$106024,$106025,$106026,$106027,$106028,$106029,$106030,$106031,$106032,$106033,$106034,$106035,$106036),(nextval($106037),$106038,$106039,$106040,$106041,$106042,$106043,$106044,$106045,$106046,$106047,$106048,$106049,$106050),(nextval($106051),$106052,$106053,$106054,$106055,$106056,$106057,$106058,$106059,$106060,$106061,$106062,$106063,$106064),(nextval($106065),$106066,$106067,$106068,$106069,$106070,$106071,$106072,$106073,$106074,$106075,$106076,$106077,$106078),(nextval($106079),$106080,$106081,$106082,$106083,$106084,$106085,$106086,$106087,$106088,$106089,$106090,$106091,$106092),(nextval($106093),$106094,$106095,$106096,$106097,$106098,$106099,$106100,$106101,$106102,$106103,$106104,$106105,$106106),(nextval($106107),$106108,$106109,$106110,$106111,$106112,$106113,$106114,$106115,$106116,$106117,$106118,$106119,$106120),(nextval($106121),$106122,$106123,$106124,$106125,$106126,$106127,$106128,$106129,$106130,$106131,$106132,$106133,$106134),(nextval($106135),$106136,$106137,$106138,$106139,$106140,$106141,$106142,$106143,$106144,$106145,$106146,$106147,$106148),(nextval($106149),$106150,$106151,$106152,$106153,$106154,$106155,$106156,$106157,$106158,$106159,$106160,$106161,$106162),(nextval($106163),$106164,$106165,$106166,$106167,$106168,$106169,$106170,$106171,$106172,$106173,$106174,$106175,$106176),(nextval($106177),$106178,$106179,$106180,$106181,$106182,$106183,$106184,$106185,$106186,$106187,$106188,$106189,$106190),(nextval($106191),$106192,$106193,$106194,$106195,$106196,$106197,$106198,$106199,$106200,$106201,$106202,$106203,$106204),(nextval($106205),$106206,$106207,$106208,$106209,$106210,$106211,$106212,$106213,$106214,$106215,$106216,$106217,$106218),(nextval($106219),$106220,$106221,$106222,$106223,$106224,$106225,$106226,$106227,$106228,$106229,$106230,$106231,$106232),(nextval($106233),$106234,$106235,$106236,$106237,$106238,$106239,$106240,$106241,$106242,$106243,$106244,$106245,$106246),(nextval($106247),$106248,$106249,$106250,$106251,$106252,$106253,$106254,$106255,$106256,$106257,$106258,$106259,$106260),(nextval($106261),$106262,$106263,$106264,$106265,$106266,$106267,$106268,$106269,$106270,$106271,$106272,$106273,$106274),(nextval($106275),$106276,$106277,$106278,$106279,$106280,$106281,$106282,$106283,$106284,$106285,$106286,$106287,$106288),(nextval($106289),$106290,$106291,$106292,$106293,$106294,$106295,$106296,$106297,$106298,$106299,$106300,$106301,$106302),(nextval($106303),$106304,$106305,$106306,$106307,$106308,$106309,$106310,$106311,$106312,$106313,$106314,$106315,$106316),(nextval($106317),$106318,$106319,$106320,$106321,$106322,$106323,$106324,$106325,$106326,$106327,$106328,$106329,$106330),(nextval($106331),$106332,$106333,$106334,$106335,$106336,$106337,$106338,$106339,$106340,$106341,$106342,$106343,$106344),(nextval($106345),$106346,$106347,$106348,$106349,$106350,$106351,$106352,$106353,$106354,$106355,$106356,$106357,$106358),(nextval($106359),$106360,$106361,$106362,$106363,$106364,$106365,$106366,$106367,$106368,$106369,$106370,$106371,$106372),(nextval($106373),$106374,$106375,$106376,$106377,$106378,$106379,$106380,$106381,$106382,$106383,$106384,$106385,$106386),(nextval($106387),$106388,$106389,$106390,$106391,$106392,$106393,$106394,$106395,$106396,$106397,$106398,$106399,$106400),(nextval($106401),$106402,$106403,$106404,$106405,$106406,$106407,$106408,$106409,$106410,$106411,$106412,$106413,$106414),(nextval($106415),$106416,$106417,$106418,$106419,$106420,$106421,$106422,$106423,$106424,$106425,$106426,$106427,$106428),(nextval($106429),$106430,$106431,$106432,$106433,$106434,$106435,$106436,$106437,$106438,$106439,$106440,$106441,$106442),(nextval($106443),$106444,$106445,$106446,$106447,$106448,$106449,$106450,$106451,$106452,$106453,$106454,$106455,$106456),(nextval($106457),$106458,$106459,$106460,$106461,$106462,$106463,$106464,$106465,$106466,$106467,$106468,$106469,$106470),(nextval($106471),$106472,$106473,$106474,$106475,$106476,$106477,$106478,$106479,$106480,$106481,$106482,$106483,$106484),(nextval($106485),$106486,$106487,$106488,$106489,$106490,$106491,$106492,$106493,$106494,$106495,$106496,$106497,$106498),(nextval($106499),$106500,$106501,$106502,$106503,$106504,$106505,$106506,$106507,$106508,$106509,$106510,$106511,$106512),(nextval($106513),$106514,$106515,$106516,$106517,$106518,$106519,$106520,$106521,$106522,$106523,$106524,$106525,$106526),(nextval($106527),$106528,$106529,$106530,$106531,$106532,$106533,$106534,$106535,$106536,$106537,$106538,$106539,$106540),(nextval($106541),$106542,$106543,$106544,$106545,$106546,$106547,$106548,$106549,$106550,$106551,$106552,$106553,$106554),(nextval($106555),$106556,$106557,$106558,$106559,$106560,$106561,$106562,$106563,$106564,$106565,$106566,$106567,$106568),(nextval($106569),$106570,$106571,$106572,$106573,$106574,$106575,$106576,$106577,$106578,$106579,$106580,$106581,$106582),(nextval($106583),$106584,$106585,$106586,$106587,$106588,$106589,$106590,$106591,$106592,$106593,$106594,$106595,$106596),(nextval($106597),$106598,$106599,$106600,$106601,$106602,$106603,$106604,$106605,$106606,$106607,$106608,$106609,$106610),(nextval($106611),$106612,$106613,$106614,$106615,$106616,$106617,$106618,$106619,$106620,$106621,$106622,$106623,$106624),(nextval($106625),$106626,$106627,$106628,$106629,$106630,$106631,$106632,$106633,$106634,$106635,$106636,$106637,$106638),(nextval($106639),$106640,$106641,$106642,$106643,$106644,$106645,$106646,$106647,$106648,$106649,$106650,$106651,$106652),(nextval($106653),$106654,$106655,$106656,$106657,$106658,$106659,$106660,$106661,$106662,$106663,$106664,$106665,$106666),(nextval($106667),$106668,$106669,$106670,$106671,$106672,$106673,$106674,$106675,$106676,$106677,$106678,$106679,$106680),(nextval($106681),$106682,$106683,$106684,$106685,$106686,$106687,$106688,$106689,$106690,$106691,$106692,$106693,$106694),(nextval($106695),$106696,$106697,$106698,$106699,$106700,$106701,$106702,$106703,$106704,$106705,$106706,$106707,$106708),(nextval($106709),$106710,$106711,$106712,$106713,$106714,$106715,$106716,$106717,$106718,$106719,$106720,$106721,$106722),(nextval($106723),$106724,$106725,$106726,$106727,$106728,$106729,$106730,$106731,$106732,$106733,$106734,$106735,$106736),(nextval($106737),$106738,$106739,$106740,$106741,$106742,$106743,$106744,$106745,$106746,$106747,$106748,$106749,$106750),(nextval($106751),$106752,$106753,$106754,$106755,$106756,$106757,$106758,$106759,$106760,$106761,$106762,$106763,$106764),(nextval($106765),$106766,$106767,$106768,$106769,$106770,$106771,$106772,$106773,$106774,$106775,$106776,$106777,$106778),(nextval($106779),$106780,$106781,$106782,$106783,$106784,$106785,$106786,$106787,$106788,$106789,$106790,$106791,$106792),(nextval($106793),$106794,$106795,$106796,$106797,$106798,$106799,$106800,$106801,$106802,$106803,$106804,$106805,$106806),(nextval($106807),$106808,$106809,$106810,$106811,$106812,$106813,$106814,$106815,$106816,$106817,$106818,$106819,$106820),(nextval($106821),$106822,$106823,$106824,$106825,$106826,$106827,$106828,$106829,$106830,$106831,$106832,$106833,$106834),(nextval($106835),$106836,$106837,$106838,$106839,$106840,$106841,$106842,$106843,$106844,$106845,$106846,$106847,$106848),(nextval($106849),$106850,$106851,$106852,$106853,$106854,$106855,$106856,$106857,$106858,$106859,$106860,$106861,$106862),(nextval($106863),$106864,$106865,$106866,$106867,$106868,$106869,$106870,$106871,$106872,$106873,$106874,$106875,$106876),(nextval($106877),$106878,$106879,$106880,$106881,$106882,$106883,$106884,$106885,$106886,$106887,$106888,$106889,$106890),(nextval($106891),$106892,$106893,$106894,$106895,$106896,$106897,$106898,$106899,$106900,$106901,$106902,$106903,$106904),(nextval($106905),$106906,$106907,$106908,$106909,$106910,$106911,$106912,$106913,$106914,$106915,$106916,$106917,$106918),(nextval($106919),$106920,$106921,$106922,$106923,$106924,$106925,$106926,$106927,$106928,$106929,$106930,$106931,$106932),(nextval($106933),$106934,$106935,$106936,$106937,$106938,$106939,$106940,$106941,$106942,$106943,$106944,$106945,$106946),(nextval($106947),$106948,$106949,$106950,$106951,$106952,$106953,$106954,$106955,$106956,$106957,$106958,$106959,$106960),(nextval($106961),$106962,$106963,$106964,$106965,$106966,$106967,$106968,$106969,$106970,$106971,$106972,$106973,$106974),(nextval($106975),$106976,$106977,$106978,$106979,$106980,$106981,$106982,$106983,$106984,$106985,$106986,$106987,$106988),(nextval($106989),$106990,$106991,$106992,$106993,$106994,$106995,$106996,$106997,$106998,$106999,$107000,$107001,$107002),(nextval($107003),$107004,$107005,$107006,$107007,$107008,$107009,$107010,$107011,$107012,$107013,$107014,$107015,$107016),(nextval($107017),$107018,$107019,$107020,$107021,$107022,$107023,$107024,$107025,$107026,$107027,$107028,$107029,$107030),(nextval($107031),$107032,$107033,$107034,$107035,$107036,$107037,$107038,$107039,$107040,$107041,$107042,$107043,$107044),(nextval($107045),$107046,$107047,$107048,$107049,$107050,$107051,$107052,$107053,$107054,$107055,$107056,$107057,$107058),(nextval($107059),$107060,$107061,$107062,$107063,$107064,$107065,$107066,$107067,$107068,$107069,$107070,$107071,$107072),(nextval($107073),$107074,$107075,$107076,$107077,$107078,$107079,$107080,$107081,$107082,$107083,$107084,$107085,$107086),(nextval($107087),$107088,$107089,$107090,$107091,$107092,$107093,$107094,$107095,$107096,$107097,$107098,$107099,$107100),(nextval($107101),$107102,$107103,$107104,$107105,$107106,$107107,$107108,$107109,$107110,$107111,$107112,$107113,$107114),(nextval($107115),$107116,$107117,$107118,$107119,$107120,$107121,$107122,$107123,$107124,$107125,$107126,$107127,$107128),(nextval($107129),$107130,$107131,$107132,$107133,$107134,$107135,$107136,$107137,$107138,$107139,$107140,$107141,$107142),(nextval($107143),$107144,$107145,$107146,$107147,$107148,$107149,$107150,$107151,$107152,$107153,$107154,$107155,$107156),(nextval($107157),$107158,$107159,$107160,$107161,$107162,$107163,$107164,$107165,$107166,$107167,$107168,$107169,$107170),(nextval($107171),$107172,$107173,$107174,$107175,$107176,$107177,$107178,$107179,$107180,$107181,$107182,$107183,$107184),(nextval($107185),$107186,$107187,$107188,$107189,$107190,$107191,$107192,$107193,$107194,$107195,$107196,$107197,$107198),(nextval($107199),$107200,$107201,$107202,$107203,$107204,$107205,$107206,$107207,$107208,$107209,$107210,$107211,$107212),(nextval($107213),$107214,$107215,$107216,$107217,$107218,$107219,$107220,$107221,$107222,$107223,$107224,$107225,$107226),(nextval($107227),$107228,$107229,$107230,$107231,$107232,$107233,$107234,$107235,$107236,$107237,$107238,$107239,$107240),(nextval($107241),$107242,$107243,$107244,$107245,$107246,$107247,$107248,$107249,$107250,$107251,$107252,$107253,$107254),(nextval($107255),$107256,$107257,$107258,$107259,$107260,$107261,$107262,$107263,$107264,$107265,$107266,$107267,$107268),(nextval($107269),$107270,$107271,$107272,$107273,$107274,$107275,$107276,$107277,$107278,$107279,$107280,$107281,$107282),(nextval($107283),$107284,$107285,$107286,$107287,$107288,$107289,$107290,$107291,$107292,$107293,$107294,$107295,$107296),(nextval($107297),$107298,$107299,$107300,$107301,$107302,$107303,$107304,$107305,$107306,$107307,$107308,$107309,$107310),(nextval($107311),$107312,$107313,$107314,$107315,$107316,$107317,$107318,$107319,$107320,$107321,$107322,$107323,$107324),(nextval($107325),$107326,$107327,$107328,$107329,$107330,$107331,$107332,$107333,$107334,$107335,$107336,$107337,$107338),(nextval($107339),$107340,$107341,$107342,$107343,$107344,$107345,$107346,$107347,$107348,$107349,$107350,$107351,$107352),(nextval($107353),$107354,$107355,$107356,$107357,$107358,$107359,$107360,$107361,$107362,$107363,$107364,$107365,$107366),(nextval($107367),$107368,$107369,$107370,$107371,$107372,$107373,$107374,$107375,$107376,$107377,$107378,$107379,$107380),(nextval($107381),$107382,$107383,$107384,$107385,$107386,$107387,$107388,$107389,$107390,$107391,$107392,$107393,$107394),(nextval($107395),$107396,$107397,$107398,$107399,$107400,$107401,$107402,$107403,$107404,$107405,$107406,$107407,$107408),(nextval($107409),$107410,$107411,$107412,$107413,$107414,$107415,$107416,$107417,$107418,$107419,$107420,$107421,$107422),(nextval($107423),$107424,$107425,$107426,$107427,$107428,$107429,$107430,$107431,$107432,$107433,$107434,$107435,$107436),(nextval($107437),$107438,$107439,$107440,$107441,$107442,$107443,$107444,$107445,$107446,$107447,$107448,$107449,$107450),(nextval($107451),$107452,$107453,$107454,$107455,$107456,$107457,$107458,$107459,$107460,$107461,$107462,$107463,$107464),(nextval($107465),$107466,$107467,$107468,$107469,$107470,$107471,$107472,$107473,$107474,$107475,$107476,$107477,$107478),(nextval($107479),$107480,$107481,$107482,$107483,$107484,$107485,$107486,$107487,$107488,$107489,$107490,$107491,$107492),(nextval($107493),$107494,$107495,$107496,$107497,$107498,$107499,$107500,$107501,$107502,$107503,$107504,$107505,$107506),(nextval($107507),$107508,$107509,$107510,$107511,$107512,$107513,$107514,$107515,$107516,$107517,$107518,$107519,$107520),(nextval($107521),$107522,$107523,$107524,$107525,$107526,$107527,$107528,$107529,$107530,$107531,$107532,$107533,$107534),(nextval($107535),$107536,$107537,$107538,$107539,$107540,$107541,$107542,$107543,$107544,$107545,$107546,$107547,$107548),(nextval($107549),$107550,$107551,$107552,$107553,$107554,$107555,$107556,$107557,$107558,$107559,$107560,$107561,$107562),(nextval($107563),$107564,$107565,$107566,$107567,$107568,$107569,$107570,$107571,$107572,$107573,$107574,$107575,$107576),(nextval($107577),$107578,$107579,$107580,$107581,$107582,$107583,$107584,$107585,$107586,$107587,$107588,$107589,$107590),(nextval($107591),$107592,$107593,$107594,$107595,$107596,$107597,$107598,$107599,$107600,$107601,$107602,$107603,$107604),(nextval($107605),$107606,$107607,$107608,$107609,$107610,$107611,$107612,$107613,$107614,$107615,$107616,$107617,$107618),(nextval($107619),$107620,$107621,$107622,$107623,$107624,$107625,$107626,$107627,$107628,$107629,$107630,$107631,$107632),(nextval($107633),$107634,$107635,$107636,$107637,$107638,$107639,$107640,$107641,$107642,$107643,$107644,$107645,$107646),(nextval($107647),$107648,$107649,$107650,$107651,$107652,$107653,$107654,$107655,$107656,$107657,$107658,$107659,$107660),(nextval($107661),$107662,$107663,$107664,$107665,$107666,$107667,$107668,$107669,$107670,$107671,$107672,$107673,$107674),(nextval($107675),$107676,$107677,$107678,$107679,$107680,$107681,$107682,$107683,$107684,$107685,$107686,$107687,$107688),(nextval($107689),$107690,$107691,$107692,$107693,$107694,$107695,$107696,$107697,$107698,$107699,$107700,$107701,$107702),(nextval($107703),$107704,$107705,$107706,$107707,$107708,$107709,$107710,$107711,$107712,$107713,$107714,$107715,$107716),(nextval($107717),$107718,$107719,$107720,$107721,$107722,$107723,$107724,$107725,$107726,$107727,$107728,$107729,$107730),(nextval($107731),$107732,$107733,$107734,$107735,$107736,$107737,$107738,$107739,$107740,$107741,$107742,$107743,$107744),(nextval($107745),$107746,$107747,$107748,$107749,$107750,$107751,$107752,$107753,$107754,$107755,$107756,$107757,$107758),(nextval($107759),$107760,$107761,$107762,$107763,$107764,$107765,$107766,$107767,$107768,$107769,$107770,$107771,$107772),(nextval($107773),$107774,$107775,$107776,$107777,$107778,$107779,$107780,$107781,$107782,$107783,$107784,$107785,$107786),(nextval($107787),$107788,$107789,$107790,$107791,$107792,$107793,$107794,$107795,$107796,$107797,$107798,$107799,$107800),(nextval($107801),$107802,$107803,$107804,$107805,$107806,$107807,$107808,$107809,$107810,$107811,$107812,$107813,$107814),(nextval($107815),$107816,$107817,$107818,$107819,$107820,$107821,$107822,$107823,$107824,$107825,$107826,$107827,$107828),(nextval($107829),$107830,$107831,$107832,$107833,$107834,$107835,$107836,$107837,$107838,$107839,$107840,$107841,$107842),(nextval($107843),$107844,$107845,$107846,$107847,$107848,$107849,$107850,$107851,$107852,$107853,$107854,$107855,$107856),(nextval($107857),$107858,$107859,$107860,$107861,$107862,$107863,$107864,$107865,$107866,$107867,$107868,$107869,$107870),(nextval($107871),$107872,$107873,$107874,$107875,$107876,$107877,$107878,$107879,$107880,$107881,$107882,$107883,$107884),(nextval($107885),$107886,$107887,$107888,$107889,$107890,$107891,$107892,$107893,$107894,$107895,$107896,$107897,$107898),(nextval($107899),$107900,$107901,$107902,$107903,$107904,$107905,$107906,$107907,$107908,$107909,$107910,$107911,$107912),(nextval($107913),$107914,$107915,$107916,$107917,$107918,$107919,$107920,$107921,$107922,$107923,$107924,$107925,$107926),(nextval($107927),$107928,$107929,$107930,$107931,$107932,$107933,$107934,$107935,$107936,$107937,$107938,$107939,$107940),(nextval($107941),$107942,$107943,$107944,$107945,$107946,$107947,$107948,$107949,$107950,$107951,$107952,$107953,$107954),(nextval($107955),$107956,$107957,$107958,$107959,$107960,$107961,$107962,$107963,$107964,$107965,$107966,$107967,$107968),(nextval($107969),$107970,$107971,$107972,$107973,$107974,$107975,$107976,$107977,$107978,$107979,$107980,$107981,$107982),(nextval($107983),$107984,$107985,$107986,$107987,$107988,$107989,$107990,$107991,$107992,$107993,$107994,$107995,$107996),(nextval($107997),$107998,$107999,$108000,$108001,$108002,$108003,$108004,$108005,$108006,$108007,$108008,$108009,$108010),(nextval($108011),$108012,$108013,$108014,$108015,$108016,$108017,$108018,$108019,$108020,$108021,$108022,$108023,$108024),(nextval($108025),$108026,$108027,$108028,$108029,$108030,$108031,$108032,$108033,$108034,$108035,$108036,$108037,$108038),(nextval($108039),$108040,$108041,$108042,$108043,$108044,$108045,$108046,$108047,$108048,$108049,$108050,$108051,$108052),(nextval($108053),$108054,$108055,$108056,$108057,$108058,$108059,$108060,$108061,$108062,$108063,$108064,$108065,$108066),(nextval($108067),$108068,$108069,$108070,$108071,$108072,$108073,$108074,$108075,$108076,$108077,$108078,$108079,$108080),(nextval($108081),$108082,$108083,$108084,$108085,$108086,$108087,$108088,$108089,$108090,$108091,$108092,$108093,$108094),(nextval($108095),$108096,$108097,$108098,$108099,$108100,$108101,$108102,$108103,$108104,$108105,$108106,$108107,$108108),(nextval($108109),$108110,$108111,$108112,$108113,$108114,$108115,$108116,$108117,$108118,$108119,$108120,$108121,$108122),(nextval($108123),$108124,$108125,$108126,$108127,$108128,$108129,$108130,$108131,$108132,$108133,$108134,$108135,$108136),(nextval($108137),$108138,$108139,$108140,$108141,$108142,$108143,$108144,$108145,$108146,$108147,$108148,$108149,$108150),(nextval($108151),$108152,$108153,$108154,$108155,$108156,$108157,$108158,$108159,$108160,$108161,$108162,$108163,$108164),(nextval($108165),$108166,$108167,$108168,$108169,$108170,$108171,$108172,$108173,$108174,$108175,$108176,$108177,$108178),(nextval($108179),$108180,$108181,$108182,$108183,$108184,$108185,$108186,$108187,$108188,$108189,$108190,$108191,$108192),(nextval($108193),$108194,$108195,$108196,$108197,$108198,$108199,$108200,$108201,$108202,$108203,$108204,$108205,$108206),(nextval($108207),$108208,$108209,$108210,$108211,$108212,$108213,$108214,$108215,$108216,$108217,$108218,$108219,$108220),(nextval($108221),$108222,$108223,$108224,$108225,$108226,$108227,$108228,$108229,$108230,$108231,$108232,$108233,$108234),(nextval($108235),$108236,$108237,$108238,$108239,$108240,$108241,$108242,$108243,$108244,$108245,$108246,$108247,$108248),(nextval($108249),$108250,$108251,$108252,$108253,$108254,$108255,$108256,$108257,$108258,$108259,$108260,$108261,$108262),(nextval($108263),$108264,$108265,$108266,$108267,$108268,$108269,$108270,$108271,$108272,$108273,$108274,$108275,$108276),(nextval($108277),$108278,$108279,$108280,$108281,$108282,$108283,$108284,$108285,$108286,$108287,$108288,$108289,$108290),(nextval($108291),$108292,$108293,$108294,$108295,$108296,$108297,$108298,$108299,$108300,$108301,$108302,$108303,$108304),(nextval($108305),$108306,$108307,$108308,$108309,$108310,$108311,$108312,$108313,$108314,$108315,$108316,$108317,$108318),(nextval($108319),$108320,$108321,$108322,$108323,$108324,$108325,$108326,$108327,$108328,$108329,$108330,$108331,$108332),(nextval($108333),$108334,$108335,$108336,$108337,$108338,$108339,$108340,$108341,$108342,$108343,$108344,$108345,$108346),(nextval($108347),$108348,$108349,$108350,$108351,$108352,$108353,$108354,$108355,$108356,$108357,$108358,$108359,$108360),(nextval($108361),$108362,$108363,$108364,$108365,$108366,$108367,$108368,$108369,$108370,$108371,$108372,$108373,$108374),(nextval($108375),$108376,$108377,$108378,$108379,$108380,$108381,$108382,$108383,$108384,$108385,$108386,$108387,$108388),(nextval($108389),$108390,$108391,$108392,$108393,$108394,$108395,$108396,$108397,$108398,$108399,$108400,$108401,$108402),(nextval($108403),$108404,$108405,$108406,$108407,$108408,$108409,$108410,$108411,$108412,$108413,$108414,$108415,$108416),(nextval($108417),$108418,$108419,$108420,$108421,$108422,$108423,$108424,$108425,$108426,$108427,$108428,$108429,$108430),(nextval($108431),$108432,$108433,$108434,$108435,$108436,$108437,$108438,$108439,$108440,$108441,$108442,$108443,$108444),(nextval($108445),$108446,$108447,$108448,$108449,$108450,$108451,$108452,$108453,$108454,$108455,$108456,$108457,$108458),(nextval($108459),$108460,$108461,$108462,$108463,$108464,$108465,$108466,$108467,$108468,$108469,$108470,$108471,$108472),(nextval($108473),$108474,$108475,$108476,$108477,$108478,$108479,$108480,$108481,$108482,$108483,$108484,$108485,$108486),(nextval($108487),$108488,$108489,$108490,$108491,$108492,$108493,$108494,$108495,$108496,$108497,$108498,$108499,$108500),(nextval($108501),$108502,$108503,$108504,$108505,$108506,$108507,$108508,$108509,$108510,$108511,$108512,$108513,$108514),(nextval($108515),$108516,$108517,$108518,$108519,$108520,$108521,$108522,$108523,$108524,$108525,$108526,$108527,$108528),(nextval($108529),$108530,$108531,$108532,$108533,$108534,$108535,$108536,$108537,$108538,$108539,$108540,$108541,$108542),(nextval($108543),$108544,$108545,$108546,$108547,$108548,$108549,$108550,$108551,$108552,$108553,$108554,$108555,$108556),(nextval($108557),$108558,$108559,$108560,$108561,$108562,$108563,$108564,$108565,$108566,$108567,$108568,$108569,$108570),(nextval($108571),$108572,$108573,$108574,$108575,$108576,$108577,$108578,$108579,$108580,$108581,$108582,$108583,$108584),(nextval($108585),$108586,$108587,$108588,$108589,$108590,$108591,$108592,$108593,$108594,$108595,$108596,$108597,$108598),(nextval($108599),$108600,$108601,$108602,$108603,$108604,$108605,$108606,$108607,$108608,$108609,$108610,$108611,$108612),(nextval($108613),$108614,$108615,$108616,$108617,$108618,$108619,$108620,$108621,$108622,$108623,$108624,$108625,$108626),(nextval($108627),$108628,$108629,$108630,$108631,$108632,$108633,$108634,$108635,$108636,$108637,$108638,$108639,$108640),(nextval($108641),$108642,$108643,$108644,$108645,$108646,$108647,$108648,$108649,$108650,$108651,$108652,$108653,$108654),(nextval($108655),$108656,$108657,$108658,$108659,$108660,$108661,$108662,$108663,$108664,$108665,$108666,$108667,$108668),(nextval($108669),$108670,$108671,$108672,$108673,$108674,$108675,$108676,$108677,$108678,$108679,$108680,$108681,$108682),(nextval($108683),$108684,$108685,$108686,$108687,$108688,$108689,$108690,$108691,$108692,$108693,$108694,$108695,$108696),(nextval($108697),$108698,$108699,$108700,$108701,$108702,$108703,$108704,$108705,$108706,$108707,$108708,$108709,$108710),(nextval($108711),$108712,$108713,$108714,$108715,$108716,$108717,$108718,$108719,$108720,$108721,$108722,$108723,$108724),(nextval($108725),$108726,$108727,$108728,$108729,$108730,$108731,$108732,$108733,$108734,$108735,$108736,$108737,$108738),(nextval($108739),$108740,$108741,$108742,$108743,$108744,$108745,$108746,$108747,$108748,$108749,$108750,$108751,$108752),(nextval($108753),$108754,$108755,$108756,$108757,$108758,$108759,$108760,$108761,$108762,$108763,$108764,$108765,$108766),(nextval($108767),$108768,$108769,$108770,$108771,$108772,$108773,$108774,$108775,$108776,$108777,$108778,$108779,$108780),(nextval($108781),$108782,$108783,$108784,$108785,$108786,$108787,$108788,$108789,$108790,$108791,$108792,$108793,$108794),(nextval($108795),$108796,$108797,$108798,$108799,$108800,$108801,$108802,$108803,$108804,$108805,$108806,$108807,$108808),(nextval($108809),$108810,$108811,$108812,$108813,$108814,$108815,$108816,$108817,$108818,$108819,$108820,$108821,$108822),(nextval($108823),$108824,$108825,$108826,$108827,$108828,$108829,$108830,$108831,$108832,$108833,$108834,$108835,$108836),(nextval($108837),$108838,$108839,$108840,$108841,$108842,$108843,$108844,$108845,$108846,$108847,$108848,$108849,$108850),(nextval($108851),$108852,$108853,$108854,$108855,$108856,$108857,$108858,$108859,$108860,$108861,$108862,$108863,$108864),(nextval($108865),$108866,$108867,$108868,$108869,$108870,$108871,$108872,$108873,$108874,$108875,$108876,$108877,$108878),(nextval($108879),$108880,$108881,$108882,$108883,$108884,$108885,$108886,$108887,$108888,$108889,$108890,$108891,$108892),(nextval($108893),$108894,$108895,$108896,$108897,$108898,$108899,$108900,$108901,$108902,$108903,$108904,$108905,$108906),(nextval($108907),$108908,$108909,$108910,$108911,$108912,$108913,$108914,$108915,$108916,$108917,$108918,$108919,$108920),(nextval($108921),$108922,$108923,$108924,$108925,$108926,$108927,$108928,$108929,$108930,$108931,$108932,$108933,$108934),(nextval($108935),$108936,$108937,$108938,$108939,$108940,$108941,$108942,$108943,$108944,$108945,$108946,$108947,$108948),(nextval($108949),$108950,$108951,$108952,$108953,$108954,$108955,$108956,$108957,$108958,$108959,$108960,$108961,$108962),(nextval($108963),$108964,$108965,$108966,$108967,$108968,$108969,$108970,$108971,$108972,$108973,$108974,$108975,$108976),(nextval($108977),$108978,$108979,$108980,$108981,$108982,$108983,$108984,$108985,$108986,$108987,$108988,$108989,$108990),(nextval($108991),$108992,$108993,$108994,$108995,$108996,$108997,$108998,$108999,$109000,$109001,$109002,$109003,$109004),(nextval($109005),$109006,$109007,$109008,$109009,$109010,$109011,$109012,$109013,$109014,$109015,$109016,$109017,$109018),(nextval($109019),$109020,$109021,$109022,$109023,$109024,$109025,$109026,$109027,$109028,$109029,$109030,$109031,$109032),(nextval($109033),$109034,$109035,$109036,$109037,$109038,$109039,$109040,$109041,$109042,$109043,$109044,$109045,$109046),(nextval($109047),$109048,$109049,$109050,$109051,$109052,$109053,$109054,$109055,$109056,$109057,$109058,$109059,$109060),(nextval($109061),$109062,$109063,$109064,$109065,$109066,$109067,$109068,$109069,$109070,$109071,$109072,$109073,$109074),(nextval($109075),$109076,$109077,$109078,$109079,$109080,$109081,$109082,$109083,$109084,$109085,$109086,$109087,$109088),(nextval($109089),$109090,$109091,$109092,$109093,$109094,$109095,$109096,$109097,$109098,$109099,$109100,$109101,$109102),(nextval($109103),$109104,$109105,$109106,$109107,$109108,$109109,$109110,$109111,$109112,$109113,$109114,$109115,$109116),(nextval($109117),$109118,$109119,$109120,$109121,$109122,$109123,$109124,$109125,$109126,$109127,$109128,$109129,$109130),(nextval($109131),$109132,$109133,$109134,$109135,$109136,$109137,$109138,$109139,$109140,$109141,$109142,$109143,$109144),(nextval($109145),$109146,$109147,$109148,$109149,$109150,$109151,$109152,$109153,$109154,$109155,$109156,$109157,$109158),(nextval($109159),$109160,$109161,$109162,$109163,$109164,$109165,$109166,$109167,$109168,$109169,$109170,$109171,$109172),(nextval($109173),$109174,$109175,$109176,$109177,$109178,$109179,$109180,$109181,$109182,$109183,$109184,$109185,$109186),(nextval($109187),$109188,$109189,$109190,$109191,$109192,$109193,$109194,$109195,$109196,$109197,$109198,$109199,$109200),(nextval($109201),$109202,$109203,$109204,$109205,$109206,$109207,$109208,$109209,$109210,$109211,$109212,$109213,$109214),(nextval($109215),$109216,$109217,$109218,$109219,$109220,$109221,$109222,$109223,$109224,$109225,$109226,$109227,$109228),(nextval($109229),$109230,$109231,$109232,$109233,$109234,$109235,$109236,$109237,$109238,$109239,$109240,$109241,$109242),(nextval($109243),$109244,$109245,$109246,$109247,$109248,$109249,$109250,$109251,$109252,$109253,$109254,$109255,$109256),(nextval($109257),$109258,$109259,$109260,$109261,$109262,$109263,$109264,$109265,$109266,$109267,$109268,$109269,$109270),(nextval($109271),$109272,$109273,$109274,$109275,$109276,$109277,$109278,$109279,$109280,$109281,$109282,$109283,$109284),(nextval($109285),$109286,$109287,$109288,$109289,$109290,$109291,$109292,$109293,$109294,$109295,$109296,$109297,$109298),(nextval($109299),$109300,$109301,$109302,$109303,$109304,$109305,$109306,$109307,$109308,$109309,$109310,$109311,$109312),(nextval($109313),$109314,$109315,$109316,$109317,$109318,$109319,$109320,$109321,$109322,$109323,$109324,$109325,$109326),(nextval($109327),$109328,$109329,$109330,$109331,$109332,$109333,$109334,$109335,$109336,$109337,$109338,$109339,$109340),(nextval($109341),$109342,$109343,$109344,$109345,$109346,$109347,$109348,$109349,$109350,$109351,$109352,$109353,$109354),(nextval($109355),$109356,$109357,$109358,$109359,$109360,$109361,$109362,$109363,$109364,$109365,$109366,$109367,$109368),(nextval($109369),$109370,$109371,$109372,$109373,$109374,$109375,$109376,$109377,$109378,$109379,$109380,$109381,$109382),(nextval($109383),$109384,$109385,$109386,$109387,$109388,$109389,$109390,$109391,$109392,$109393,$109394,$109395,$109396),(nextval($109397),$109398,$109399,$109400,$109401,$109402,$109403,$109404,$109405,$109406,$109407,$109408,$109409,$109410),(nextval($109411),$109412,$109413,$109414,$109415,$109416,$109417,$109418,$109419,$109420,$109421,$109422,$109423,$109424),(nextval($109425),$109426,$109427,$109428,$109429,$109430,$109431,$109432,$109433,$109434,$109435,$109436,$109437,$109438),(nextval($109439),$109440,$109441,$109442,$109443,$109444,$109445,$109446,$109447,$109448,$109449,$109450,$109451,$109452),(nextval($109453),$109454,$109455,$109456,$109457,$109458,$109459,$109460,$109461,$109462,$109463,$109464,$109465,$109466),(nextval($109467),$109468,$109469,$109470,$109471,$109472,$109473,$109474,$109475,$109476,$109477,$109478,$109479,$109480),(nextval($109481),$109482,$109483,$109484,$109485,$109486,$109487,$109488,$109489,$109490,$109491,$109492,$109493,$109494),(nextval($109495),$109496,$109497,$109498,$109499,$109500,$109501,$109502,$109503,$109504,$109505,$109506,$109507,$109508),(nextval($109509),$109510,$109511,$109512,$109513,$109514,$109515,$109516,$109517,$109518,$109519,$109520,$109521,$109522),(nextval($109523),$109524,$109525,$109526,$109527,$109528,$109529,$109530,$109531,$109532,$109533,$109534,$109535,$109536),(nextval($109537),$109538,$109539,$109540,$109541,$109542,$109543,$109544,$109545,$109546,$109547,$109548,$109549,$109550),(nextval($109551),$109552,$109553,$109554,$109555,$109556,$109557,$109558,$109559,$109560,$109561,$109562,$109563,$109564),(nextval($109565),$109566,$109567,$109568,$109569,$109570,$109571,$109572,$109573,$109574,$109575,$109576,$109577,$109578),(nextval($109579),$109580,$109581,$109582,$109583,$109584,$109585,$109586,$109587,$109588,$109589,$109590,$109591,$109592),(nextval($109593),$109594,$109595,$109596,$109597,$109598,$109599,$109600,$109601,$109602,$109603,$109604,$109605,$109606),(nextval($109607),$109608,$109609,$109610,$109611,$109612,$109613,$109614,$109615,$109616,$109617,$109618,$109619,$109620),(nextval($109621),$109622,$109623,$109624,$109625,$109626,$109627,$109628,$109629,$109630,$109631,$109632,$109633,$109634),(nextval($109635),$109636,$109637,$109638,$109639,$109640,$109641,$109642,$109643,$109644,$109645,$109646,$109647,$109648),(nextval($109649),$109650,$109651,$109652,$109653,$109654,$109655,$109656,$109657,$109658,$109659,$109660,$109661,$109662),(nextval($109663),$109664,$109665,$109666,$109667,$109668,$109669,$109670,$109671,$109672,$109673,$109674,$109675,$109676),(nextval($109677),$109678,$109679,$109680,$109681,$109682,$109683,$109684,$109685,$109686,$109687,$109688,$109689,$109690),(nextval($109691),$109692,$109693,$109694,$109695,$109696,$109697,$109698,$109699,$109700,$109701,$109702,$109703,$109704),(nextval($109705),$109706,$109707,$109708,$109709,$109710,$109711,$109712,$109713,$109714,$109715,$109716,$109717,$109718),(nextval($109719),$109720,$109721,$109722,$109723,$109724,$109725,$109726,$109727,$109728,$109729,$109730,$109731,$109732),(nextval($109733),$109734,$109735,$109736,$109737,$109738,$109739,$109740,$109741,$109742,$109743,$109744,$109745,$109746),(nextval($109747),$109748,$109749,$109750,$109751,$109752,$109753,$109754,$109755,$109756,$109757,$109758,$109759,$109760),(nextval($109761),$109762,$109763,$109764,$109765,$109766,$109767,$109768,$109769,$109770,$109771,$109772,$109773,$109774),(nextval($109775),$109776,$109777,$109778,$109779,$109780,$109781,$109782,$109783,$109784,$109785,$109786,$109787,$109788),(nextval($109789),$109790,$109791,$109792,$109793,$109794,$109795,$109796,$109797,$109798,$109799,$109800,$109801,$109802),(nextval($109803),$109804,$109805,$109806,$109807,$109808,$109809,$109810,$109811,$109812,$109813,$109814,$109815,$109816),(nextval($109817),$109818,$109819,$109820,$109821,$109822,$109823,$109824,$109825,$109826,$109827,$109828,$109829,$109830),(nextval($109831),$109832,$109833,$109834,$109835,$109836,$109837,$109838,$109839,$109840,$109841,$109842,$109843,$109844),(nextval($109845),$109846,$109847,$109848,$109849,$109850,$109851,$109852,$109853,$109854,$109855,$109856,$109857,$109858),(nextval($109859),$109860,$109861,$109862,$109863,$109864,$109865,$109866,$109867,$109868,$109869,$109870,$109871,$109872),(nextval($109873),$109874,$109875,$109876,$109877,$109878,$109879,$109880,$109881,$109882,$109883,$109884,$109885,$109886),(nextval($109887),$109888,$109889,$109890,$109891,$109892,$109893,$109894,$109895,$109896,$109897,$109898,$109899,$109900),(nextval($109901),$109902,$109903,$109904,$109905,$109906,$109907,$109908,$109909,$109910,$109911,$109912,$109913,$109914),(nextval($109915),$109916,$109917,$109918,$109919,$109920,$109921,$109922,$109923,$109924,$109925,$109926,$109927,$109928),(nextval($109929),$109930,$109931,$109932,$109933,$109934,$109935,$109936,$109937,$109938,$109939,$109940,$109941,$109942),(nextval($109943),$109944,$109945,$109946,$109947,$109948,$109949,$109950,$109951,$109952,$109953,$109954,$109955,$109956),(nextval($109957),$109958,$109959,$109960,$109961,$109962,$109963,$109964,$109965,$109966,$109967,$109968,$109969,$109970),(nextval($109971),$109972,$109973,$109974,$109975,$109976,$109977,$109978,$109979,$109980,$109981,$109982,$109983,$109984),(nextval($109985),$109986,$109987,$109988,$109989,$109990,$109991,$109992,$109993,$109994,$109995,$109996,$109997,$109998),(nextval($109999),$110000,$110001,$110002,$110003,$110004,$110005,$110006,$110007,$110008,$110009,$110010,$110011,$110012),(nextval($110013),$110014,$110015,$110016,$110017,$110018,$110019,$110020,$110021,$110022,$110023,$110024,$110025,$110026),(nextval($110027),$110028,$110029,$110030,$110031,$110032,$110033,$110034,$110035,$110036,$110037,$110038,$110039,$110040),(nextval($110041),$110042,$110043,$110044,$110045,$110046,$110047,$110048,$110049,$110050,$110051,$110052,$110053,$110054),(nextval($110055),$110056,$110057,$110058,$110059,$110060,$110061,$110062,$110063,$110064,$110065,$110066,$110067,$110068),(nextval($110069),$110070,$110071,$110072,$110073,$110074,$110075,$110076,$110077,$110078,$110079,$110080,$110081,$110082),(nextval($110083),$110084,$110085,$110086,$110087,$110088,$110089,$110090,$110091,$110092,$110093,$110094,$110095,$110096),(nextval($110097),$110098,$110099,$110100,$110101,$110102,$110103,$110104,$110105,$110106,$110107,$110108,$110109,$110110),(nextval($110111),$110112,$110113,$110114,$110115,$110116,$110117,$110118,$110119,$110120,$110121,$110122,$110123,$110124),(nextval($110125),$110126,$110127,$110128,$110129,$110130,$110131,$110132,$110133,$110134,$110135,$110136,$110137,$110138),(nextval($110139),$110140,$110141,$110142,$110143,$110144,$110145,$110146,$110147,$110148,$110149,$110150,$110151,$110152),(nextval($110153),$110154,$110155,$110156,$110157,$110158,$110159,$110160,$110161,$110162,$110163,$110164,$110165,$110166),(nextval($110167),$110168,$110169,$110170,$110171,$110172,$110173,$110174,$110175,$110176,$110177,$110178,$110179,$110180),(nextval($110181),$110182,$110183,$110184,$110185,$110186,$110187,$110188,$110189,$110190,$110191,$110192,$110193,$110194),(nextval($110195),$110196,$110197,$110198,$110199,$110200,$110201,$110202,$110203,$110204,$110205,$110206,$110207,$110208),(nextval($110209),$110210,$110211,$110212,$110213,$110214,$110215,$110216,$110217,$110218,$110219,$110220,$110221,$110222),(nextval($110223),$110224,$110225,$110226,$110227,$110228,$110229,$110230,$110231,$110232,$110233,$110234,$110235,$110236),(nextval($110237),$110238,$110239,$110240,$110241,$110242,$110243,$110244,$110245,$110246,$110247,$110248,$110249,$110250),(nextval($110251),$110252,$110253,$110254,$110255,$110256,$110257,$110258,$110259,$110260,$110261,$110262,$110263,$110264),(nextval($110265),$110266,$110267,$110268,$110269,$110270,$110271,$110272,$110273,$110274,$110275,$110276,$110277,$110278),(nextval($110279),$110280,$110281,$110282,$110283,$110284,$110285,$110286,$110287,$110288,$110289,$110290,$110291,$110292),(nextval($110293),$110294,$110295,$110296,$110297,$110298,$110299,$110300,$110301,$110302,$110303,$110304,$110305,$110306),(nextval($110307),$110308,$110309,$110310,$110311,$110312,$110313,$110314,$110315,$110316,$110317,$110318,$110319,$110320),(nextval($110321),$110322,$110323,$110324,$110325,$110326,$110327,$110328,$110329,$110330,$110331,$110332,$110333,$110334),(nextval($110335),$110336,$110337,$110338,$110339,$110340,$110341,$110342,$110343,$110344,$110345,$110346,$110347,$110348),(nextval($110349),$110350,$110351,$110352,$110353,$110354,$110355,$110356,$110357,$110358,$110359,$110360,$110361,$110362),(nextval($110363),$110364,$110365,$110366,$110367,$110368,$110369,$110370,$110371,$110372,$110373,$110374,$110375,$110376),(nextval($110377),$110378,$110379,$110380,$110381,$110382,$110383,$110384,$110385,$110386,$110387,$110388,$110389,$110390),(nextval($110391),$110392,$110393,$110394,$110395,$110396,$110397,$110398,$110399,$110400,$110401,$110402,$110403,$110404),(nextval($110405),$110406,$110407,$110408,$110409,$110410,$110411,$110412,$110413,$110414,$110415,$110416,$110417,$110418),(nextval($110419),$110420,$110421,$110422,$110423,$110424,$110425,$110426,$110427,$110428,$110429,$110430,$110431,$110432),(nextval($110433),$110434,$110435,$110436,$110437,$110438,$110439,$110440,$110441,$110442,$110443,$110444,$110445,$110446),(nextval($110447),$110448,$110449,$110450,$110451,$110452,$110453,$110454,$110455,$110456,$110457,$110458,$110459,$110460),(nextval($110461),$110462,$110463,$110464,$110465,$110466,$110467,$110468,$110469,$110470,$110471,$110472,$110473,$110474),(nextval($110475),$110476,$110477,$110478,$110479,$110480,$110481,$110482,$110483,$110484,$110485,$110486,$110487,$110488),(nextval($110489),$110490,$110491,$110492,$110493,$110494,$110495,$110496,$110497,$110498,$110499,$110500,$110501,$110502),(nextval($110503),$110504,$110505,$110506,$110507,$110508,$110509,$110510,$110511,$110512,$110513,$110514,$110515,$110516),(nextval($110517),$110518,$110519,$110520,$110521,$110522,$110523,$110524,$110525,$110526,$110527,$110528,$110529,$110530),(nextval($110531),$110532,$110533,$110534,$110535,$110536,$110537,$110538,$110539,$110540,$110541,$110542,$110543,$110544),(nextval($110545),$110546,$110547,$110548,$110549,$110550,$110551,$110552,$110553,$110554,$110555,$110556,$110557,$110558),(nextval($110559),$110560,$110561,$110562,$110563,$110564,$110565,$110566,$110567,$110568,$110569,$110570,$110571,$110572),(nextval($110573),$110574,$110575,$110576,$110577,$110578,$110579,$110580,$110581,$110582,$110583,$110584,$110585,$110586),(nextval($110587),$110588,$110589,$110590,$110591,$110592,$110593,$110594,$110595,$110596,$110597,$110598,$110599,$110600),(nextval($110601),$110602,$110603,$110604,$110605,$110606,$110607,$110608,$110609,$110610,$110611,$110612,$110613,$110614),(nextval($110615),$110616,$110617,$110618,$110619,$110620,$110621,$110622,$110623,$110624,$110625,$110626,$110627,$110628),(nextval($110629),$110630,$110631,$110632,$110633,$110634,$110635,$110636,$110637,$110638,$110639,$110640,$110641,$110642),(nextval($110643),$110644,$110645,$110646,$110647,$110648,$110649,$110650,$110651,$110652,$110653,$110654,$110655,$110656),(nextval($110657),$110658,$110659,$110660,$110661,$110662,$110663,$110664,$110665,$110666,$110667,$110668,$110669,$110670),(nextval($110671),$110672,$110673,$110674,$110675,$110676,$110677,$110678,$110679,$110680,$110681,$110682,$110683,$110684),(nextval($110685),$110686,$110687,$110688,$110689,$110690,$110691,$110692,$110693,$110694,$110695,$110696,$110697,$110698),(nextval($110699),$110700,$110701,$110702,$110703,$110704,$110705,$110706,$110707,$110708,$110709,$110710,$110711,$110712),(nextval($110713),$110714,$110715,$110716,$110717,$110718,$110719,$110720,$110721,$110722,$110723,$110724,$110725,$110726),(nextval($110727),$110728,$110729,$110730,$110731,$110732,$110733,$110734,$110735,$110736,$110737,$110738,$110739,$110740),(nextval($110741),$110742,$110743,$110744,$110745,$110746,$110747,$110748,$110749,$110750,$110751,$110752,$110753,$110754),(nextval($110755),$110756,$110757,$110758,$110759,$110760,$110761,$110762,$110763,$110764,$110765,$110766,$110767,$110768),(nextval($110769),$110770,$110771,$110772,$110773,$110774,$110775,$110776,$110777,$110778,$110779,$110780,$110781,$110782),(nextval($110783),$110784,$110785,$110786,$110787,$110788,$110789,$110790,$110791,$110792,$110793,$110794,$110795,$110796),(nextval($110797),$110798,$110799,$110800,$110801,$110802,$110803,$110804,$110805,$110806,$110807,$110808,$110809,$110810),(nextval($110811),$110812,$110813,$110814,$110815,$110816,$110817,$110818,$110819,$110820,$110821,$110822,$110823,$110824),(nextval($110825),$110826,$110827,$110828,$110829,$110830,$110831,$110832,$110833,$110834,$110835,$110836,$110837,$110838),(nextval($110839),$110840,$110841,$110842,$110843,$110844,$110845,$110846,$110847,$110848,$110849,$110850,$110851,$110852),(nextval($110853),$110854,$110855,$110856,$110857,$110858,$110859,$110860,$110861,$110862,$110863,$110864,$110865,$110866),(nextval($110867),$110868,$110869,$110870,$110871,$110872,$110873,$110874,$110875,$110876,$110877,$110878,$110879,$110880),(nextval($110881),$110882,$110883,$110884,$110885,$110886,$110887,$110888,$110889,$110890,$110891,$110892,$110893,$110894),(nextval($110895),$110896,$110897,$110898,$110899,$110900,$110901,$110902,$110903,$110904,$110905,$110906,$110907,$110908),(nextval($110909),$110910,$110911,$110912,$110913,$110914,$110915,$110916,$110917,$110918,$110919,$110920,$110921,$110922),(nextval($110923),$110924,$110925,$110926,$110927,$110928,$110929,$110930,$110931,$110932,$110933,$110934,$110935,$110936),(nextval($110937),$110938,$110939,$110940,$110941,$110942,$110943,$110944,$110945,$110946,$110947,$110948,$110949,$110950),(nextval($110951),$110952,$110953,$110954,$110955,$110956,$110957,$110958,$110959,$110960,$110961,$110962,$110963,$110964),(nextval($110965),$110966,$110967,$110968,$110969,$110970,$110971,$110972,$110973,$110974,$110975,$110976,$110977,$110978),(nextval($110979),$110980,$110981,$110982,$110983,$110984,$110985,$110986,$110987,$110988,$110989,$110990,$110991,$110992),(nextval($110993),$110994,$110995,$110996,$110997,$110998,$110999,$111000,$111001,$111002,$111003,$111004,$111005,$111006),(nextval($111007),$111008,$111009,$111010,$111011,$111012,$111013,$111014,$111015,$111016,$111017,$111018,$111019,$111020),(nextval($111021),$111022,$111023,$111024,$111025,$111026,$111027,$111028,$111029,$111030,$111031,$111032,$111033,$111034),(nextval($111035),$111036,$111037,$111038,$111039,$111040,$111041,$111042,$111043,$111044,$111045,$111046,$111047,$111048),(nextval($111049),$111050,$111051,$111052,$111053,$111054,$111055,$111056,$111057,$111058,$111059,$111060,$111061,$111062),(nextval($111063),$111064,$111065,$111066,$111067,$111068,$111069,$111070,$111071,$111072,$111073,$111074,$111075,$111076),(nextval($111077),$111078,$111079,$111080,$111081,$111082,$111083,$111084,$111085,$111086,$111087,$111088,$111089,$111090),(nextval($111091),$111092,$111093,$111094,$111095,$111096,$111097,$111098,$111099,$111100,$111101,$111102,$111103,$111104),(nextval($111105),$111106,$111107,$111108,$111109,$111110,$111111,$111112,$111113,$111114,$111115,$111116,$111117,$111118),(nextval($111119),$111120,$111121,$111122,$111123,$111124,$111125,$111126,$111127,$111128,$111129,$111130,$111131,$111132),(nextval($111133),$111134,$111135,$111136,$111137,$111138,$111139,$111140,$111141,$111142,$111143,$111144,$111145,$111146),(nextval($111147),$111148,$111149,$111150,$111151,$111152,$111153,$111154,$111155,$111156,$111157,$111158,$111159,$111160),(nextval($111161),$111162,$111163,$111164,$111165,$111166,$111167,$111168,$111169,$111170,$111171,$111172,$111173,$111174),(nextval($111175),$111176,$111177,$111178,$111179,$111180,$111181,$111182,$111183,$111184,$111185,$111186,$111187,$111188),(nextval($111189),$111190,$111191,$111192,$111193,$111194,$111195,$111196,$111197,$111198,$111199,$111200,$111201,$111202),(nextval($111203),$111204,$111205,$111206,$111207,$111208,$111209,$111210,$111211,$111212,$111213,$111214,$111215,$111216),(nextval($111217),$111218,$111219,$111220,$111221,$111222,$111223,$111224,$111225,$111226,$111227,$111228,$111229,$111230),(nextval($111231),$111232,$111233,$111234,$111235,$111236,$111237,$111238,$111239,$111240,$111241,$111242,$111243,$111244),(nextval($111245),$111246,$111247,$111248,$111249,$111250,$111251,$111252,$111253,$111254,$111255,$111256,$111257,$111258),(nextval($111259),$111260,$111261,$111262,$111263,$111264,$111265,$111266,$111267,$111268,$111269,$111270,$111271,$111272),(nextval($111273),$111274,$111275,$111276,$111277,$111278,$111279,$111280,$111281,$111282,$111283,$111284,$111285,$111286),(nextval($111287),$111288,$111289,$111290,$111291,$111292,$111293,$111294,$111295,$111296,$111297,$111298,$111299,$111300),(nextval($111301),$111302,$111303,$111304,$111305,$111306,$111307,$111308,$111309,$111310,$111311,$111312,$111313,$111314),(nextval($111315),$111316,$111317,$111318,$111319,$111320,$111321,$111322,$111323,$111324,$111325,$111326,$111327,$111328),(nextval($111329),$111330,$111331,$111332,$111333,$111334,$111335,$111336,$111337,$111338,$111339,$111340,$111341,$111342),(nextval($111343),$111344,$111345,$111346,$111347,$111348,$111349,$111350,$111351,$111352,$111353,$111354,$111355,$111356),(nextval($111357),$111358,$111359,$111360,$111361,$111362,$111363,$111364,$111365,$111366,$111367,$111368,$111369,$111370),(nextval($111371),$111372,$111373,$111374,$111375,$111376,$111377,$111378,$111379,$111380,$111381,$111382,$111383,$111384),(nextval($111385),$111386,$111387,$111388,$111389,$111390,$111391,$111392,$111393,$111394,$111395,$111396,$111397,$111398),(nextval($111399),$111400,$111401,$111402,$111403,$111404,$111405,$111406,$111407,$111408,$111409,$111410,$111411,$111412),(nextval($111413),$111414,$111415,$111416,$111417,$111418,$111419,$111420,$111421,$111422,$111423,$111424,$111425,$111426),(nextval($111427),$111428,$111429,$111430,$111431,$111432,$111433,$111434,$111435,$111436,$111437,$111438,$111439,$111440),(nextval($111441),$111442,$111443,$111444,$111445,$111446,$111447,$111448,$111449,$111450,$111451,$111452,$111453,$111454),(nextval($111455),$111456,$111457,$111458,$111459,$111460,$111461,$111462,$111463,$111464,$111465,$111466,$111467,$111468),(nextval($111469),$111470,$111471,$111472,$111473,$111474,$111475,$111476,$111477,$111478,$111479,$111480,$111481,$111482),(nextval($111483),$111484,$111485,$111486,$111487,$111488,$111489,$111490,$111491,$111492,$111493,$111494,$111495,$111496),(nextval($111497),$111498,$111499,$111500,$111501,$111502,$111503,$111504,$111505,$111506,$111507,$111508,$111509,$111510),(nextval($111511),$111512,$111513,$111514,$111515,$111516,$111517,$111518,$111519,$111520,$111521,$111522,$111523,$111524),(nextval($111525),$111526,$111527,$111528,$111529,$111530,$111531,$111532,$111533,$111534,$111535,$111536,$111537,$111538),(nextval($111539),$111540,$111541,$111542,$111543,$111544,$111545,$111546,$111547,$111548,$111549,$111550,$111551,$111552),(nextval($111553),$111554,$111555,$111556,$111557,$111558,$111559,$111560,$111561,$111562,$111563,$111564,$111565,$111566),(nextval($111567),$111568,$111569,$111570,$111571,$111572,$111573,$111574,$111575,$111576,$111577,$111578,$111579,$111580),(nextval($111581),$111582,$111583,$111584,$111585,$111586,$111587,$111588,$111589,$111590,$111591,$111592,$111593,$111594),(nextval($111595),$111596,$111597,$111598,$111599,$111600,$111601,$111602,$111603,$111604,$111605,$111606,$111607,$111608),(nextval($111609),$111610,$111611,$111612,$111613,$111614,$111615,$111616,$111617,$111618,$111619,$111620,$111621,$111622),(nextval($111623),$111624,$111625,$111626,$111627,$111628,$111629,$111630,$111631,$111632,$111633,$111634,$111635,$111636),(nextval($111637),$111638,$111639,$111640,$111641,$111642,$111643,$111644,$111645,$111646,$111647,$111648,$111649,$111650),(nextval($111651),$111652,$111653,$111654,$111655,$111656,$111657,$111658,$111659,$111660,$111661,$111662,$111663,$111664),(nextval($111665),$111666,$111667,$111668,$111669,$111670,$111671,$111672,$111673,$111674,$111675,$111676,$111677,$111678),(nextval($111679),$111680,$111681,$111682,$111683,$111684,$111685,$111686,$111687,$111688,$111689,$111690,$111691,$111692),(nextval($111693),$111694,$111695,$111696,$111697,$111698,$111699,$111700,$111701,$111702,$111703,$111704,$111705,$111706),(nextval($111707),$111708,$111709,$111710,$111711,$111712,$111713,$111714,$111715,$111716,$111717,$111718,$111719,$111720),(nextval($111721),$111722,$111723,$111724,$111725,$111726,$111727,$111728,$111729,$111730,$111731,$111732,$111733,$111734),(nextval($111735),$111736,$111737,$111738,$111739,$111740,$111741,$111742,$111743,$111744,$111745,$111746,$111747,$111748),(nextval($111749),$111750,$111751,$111752,$111753,$111754,$111755,$111756,$111757,$111758,$111759,$111760,$111761,$111762),(nextval($111763),$111764,$111765,$111766,$111767,$111768,$111769,$111770,$111771,$111772,$111773,$111774,$111775,$111776),(nextval($111777),$111778,$111779,$111780,$111781,$111782,$111783,$111784,$111785,$111786,$111787,$111788,$111789,$111790),(nextval($111791),$111792,$111793,$111794,$111795,$111796,$111797,$111798,$111799,$111800,$111801,$111802,$111803,$111804),(nextval($111805),$111806,$111807,$111808,$111809,$111810,$111811,$111812,$111813,$111814,$111815,$111816,$111817,$111818),(nextval($111819),$111820,$111821,$111822,$111823,$111824,$111825,$111826,$111827,$111828,$111829,$111830,$111831,$111832),(nextval($111833),$111834,$111835,$111836,$111837,$111838,$111839,$111840,$111841,$111842,$111843,$111844,$111845,$111846),(nextval($111847),$111848,$111849,$111850,$111851,$111852,$111853,$111854,$111855,$111856,$111857,$111858,$111859,$111860),(nextval($111861),$111862,$111863,$111864,$111865,$111866,$111867,$111868,$111869,$111870,$111871,$111872,$111873,$111874),(nextval($111875),$111876,$111877,$111878,$111879,$111880,$111881,$111882,$111883,$111884,$111885,$111886,$111887,$111888),(nextval($111889),$111890,$111891,$111892,$111893,$111894,$111895,$111896,$111897,$111898,$111899,$111900,$111901,$111902),(nextval($111903),$111904,$111905,$111906,$111907,$111908,$111909,$111910,$111911,$111912,$111913,$111914,$111915,$111916),(nextval($111917),$111918,$111919,$111920,$111921,$111922,$111923,$111924,$111925,$111926,$111927,$111928,$111929,$111930),(nextval($111931),$111932,$111933,$111934,$111935,$111936,$111937,$111938,$111939,$111940,$111941,$111942,$111943,$111944),(nextval($111945),$111946,$111947,$111948,$111949,$111950,$111951,$111952,$111953,$111954,$111955,$111956,$111957,$111958),(nextval($111959),$111960,$111961,$111962,$111963,$111964,$111965,$111966,$111967,$111968,$111969,$111970,$111971,$111972),(nextval($111973),$111974,$111975,$111976,$111977,$111978,$111979,$111980,$111981,$111982,$111983,$111984,$111985,$111986),(nextval($111987),$111988,$111989,$111990,$111991,$111992,$111993,$111994,$111995,$111996,$111997,$111998,$111999,$112000),(nextval($112001),$112002,$112003,$112004,$112005,$112006,$112007,$112008,$112009,$112010,$112011,$112012,$112013,$112014),(nextval($112015),$112016,$112017,$112018,$112019,$112020,$112021,$112022,$112023,$112024,$112025,$112026,$112027,$112028),(nextval($112029),$112030,$112031,$112032,$112033,$112034,$112035,$112036,$112037,$112038,$112039,$112040,$112041,$112042),(nextval($112043),$112044,$112045,$112046,$112047,$112048,$112049,$112050,$112051,$112052,$112053,$112054,$112055,$112056),(nextval($112057),$112058,$112059,$112060,$112061,$112062,$112063,$112064,$112065,$112066,$112067,$112068,$112069,$112070),(nextval($112071),$112072,$112073,$112074,$112075,$112076,$112077,$112078,$112079,$112080,$112081,$112082,$112083,$112084),(nextval($112085),$112086,$112087,$112088,$112089,$112090,$112091,$112092,$112093,$112094,$112095,$112096,$112097,$112098),(nextval($112099),$112100,$112101,$112102,$112103,$112104,$112105,$112106,$112107,$112108,$112109,$112110,$112111,$112112),(nextval($112113),$112114,$112115,$112116,$112117,$112118,$112119,$112120,$112121,$112122,$112123,$112124,$112125,$112126),(nextval($112127),$112128,$112129,$112130,$112131,$112132,$112133,$112134,$112135,$112136,$112137,$112138,$112139,$112140),(nextval($112141),$112142,$112143,$112144,$112145,$112146,$112147,$112148,$112149,$112150,$112151,$112152,$112153,$112154),(nextval($112155),$112156,$112157,$112158,$112159,$112160,$112161,$112162,$112163,$112164,$112165,$112166,$112167,$112168),(nextval($112169),$112170,$112171,$112172,$112173,$112174,$112175,$112176,$112177,$112178,$112179,$112180,$112181,$112182),(nextval($112183),$112184,$112185,$112186,$112187,$112188,$112189,$112190,$112191,$112192,$112193,$112194,$112195,$112196),(nextval($112197),$112198,$112199,$112200,$112201,$112202,$112203,$112204,$112205,$112206,$112207,$112208,$112209,$112210),(nextval($112211),$112212,$112213,$112214,$112215,$112216,$112217,$112218,$112219,$112220,$112221,$112222,$112223,$112224),(nextval($112225),$112226,$112227,$112228,$112229,$112230,$112231,$112232,$112233,$112234,$112235,$112236,$112237,$112238),(nextval($112239),$112240,$112241,$112242,$112243,$112244,$112245,$112246,$112247,$112248,$112249,$112250,$112251,$112252),(nextval($112253),$112254,$112255,$112256,$112257,$112258,$112259,$112260,$112261,$112262,$112263,$112264,$112265,$112266),(nextval($112267),$112268,$112269,$112270,$112271,$112272,$112273,$112274,$112275,$112276,$112277,$112278,$112279,$112280),(nextval($112281),$112282,$112283,$112284,$112285,$112286,$112287,$112288,$112289,$112290,$112291,$112292,$112293,$112294),(nextval($112295),$112296,$112297,$112298,$112299,$112300,$112301,$112302,$112303,$112304,$112305,$112306,$112307,$112308),(nextval($112309),$112310,$112311,$112312,$112313,$112314,$112315,$112316,$112317,$112318,$112319,$112320,$112321,$112322),(nextval($112323),$112324,$112325,$112326,$112327,$112328,$112329,$112330,$112331,$112332,$112333,$112334,$112335,$112336),(nextval($112337),$112338,$112339,$112340,$112341,$112342,$112343,$112344,$112345,$112346,$112347,$112348,$112349,$112350),(nextval($112351),$112352,$112353,$112354,$112355,$112356,$112357,$112358,$112359,$112360,$112361,$112362,$112363,$112364),(nextval($112365),$112366,$112367,$112368,$112369,$112370,$112371,$112372,$112373,$112374,$112375,$112376,$112377,$112378),(nextval($112379),$112380,$112381,$112382,$112383,$112384,$112385,$112386,$112387,$112388,$112389,$112390,$112391,$112392),(nextval($112393),$112394,$112395,$112396,$112397,$112398,$112399,$112400,$112401,$112402,$112403,$112404,$112405,$112406),(nextval($112407),$112408,$112409,$112410,$112411,$112412,$112413,$112414,$112415,$112416,$112417,$112418,$112419,$112420),(nextval($112421),$112422,$112423,$112424,$112425,$112426,$112427,$112428,$112429,$112430,$112431,$112432,$112433,$112434),(nextval($112435),$112436,$112437,$112438,$112439,$112440,$112441,$112442,$112443,$112444,$112445,$112446,$112447,$112448),(nextval($112449),$112450,$112451,$112452,$112453,$112454,$112455,$112456,$112457,$112458,$112459,$112460,$112461,$112462),(nextval($112463),$112464,$112465,$112466,$112467,$112468,$112469,$112470,$112471,$112472,$112473,$112474,$112475,$112476),(nextval($112477),$112478,$112479,$112480,$112481,$112482,$112483,$112484,$112485,$112486,$112487,$112488,$112489,$112490),(nextval($112491),$112492,$112493,$112494,$112495,$112496,$112497,$112498,$112499,$112500,$112501,$112502,$112503,$112504),(nextval($112505),$112506,$112507,$112508,$112509,$112510,$112511,$112512,$112513,$112514,$112515,$112516,$112517,$112518),(nextval($112519),$112520,$112521,$112522,$112523,$112524,$112525,$112526,$112527,$112528,$112529,$112530,$112531,$112532),(nextval($112533),$112534,$112535,$112536,$112537,$112538,$112539,$112540,$112541,$112542,$112543,$112544,$112545,$112546),(nextval($112547),$112548,$112549,$112550,$112551,$112552,$112553,$112554,$112555,$112556,$112557,$112558,$112559,$112560),(nextval($112561),$112562,$112563,$112564,$112565,$112566,$112567,$112568,$112569,$112570,$112571,$112572,$112573,$112574),(nextval($112575),$112576,$112577,$112578,$112579,$112580,$112581,$112582,$112583,$112584,$112585,$112586,$112587,$112588),(nextval($112589),$112590,$112591,$112592,$112593,$112594,$112595,$112596,$112597,$112598,$112599,$112600,$112601,$112602),(nextval($112603),$112604,$112605,$112606,$112607,$112608,$112609,$112610,$112611,$112612,$112613,$112614,$112615,$112616),(nextval($112617),$112618,$112619,$112620,$112621,$112622,$112623,$112624,$112625,$112626,$112627,$112628,$112629,$112630),(nextval($112631),$112632,$112633,$112634,$112635,$112636,$112637,$112638,$112639,$112640,$112641,$112642,$112643,$112644),(nextval($112645),$112646,$112647,$112648,$112649,$112650,$112651,$112652,$112653,$112654,$112655,$112656,$112657,$112658),(nextval($112659),$112660,$112661,$112662,$112663,$112664,$112665,$112666,$112667,$112668,$112669,$112670,$112671,$112672),(nextval($112673),$112674,$112675,$112676,$112677,$112678,$112679,$112680,$112681,$112682,$112683,$112684,$112685,$112686),(nextval($112687),$112688,$112689,$112690,$112691,$112692,$112693,$112694,$112695,$112696,$112697,$112698,$112699,$112700),(nextval($112701),$112702,$112703,$112704,$112705,$112706,$112707,$112708,$112709,$112710,$112711,$112712,$112713,$112714),(nextval($112715),$112716,$112717,$112718,$112719,$112720,$112721,$112722,$112723,$112724,$112725,$112726,$112727,$112728),(nextval($112729),$112730,$112731,$112732,$112733,$112734,$112735,$112736,$112737,$112738,$112739,$112740,$112741,$112742),(nextval($112743),$112744,$112745,$112746,$112747,$112748,$112749,$112750,$112751,$112752,$112753,$112754,$112755,$112756),(nextval($112757),$112758,$112759,$112760,$112761,$112762,$112763,$112764,$112765,$112766,$112767,$112768,$112769,$112770),(nextval($112771),$112772,$112773,$112774,$112775,$112776,$112777,$112778,$112779,$112780,$112781,$112782,$112783,$112784),(nextval($112785),$112786,$112787,$112788,$112789,$112790,$112791,$112792,$112793,$112794,$112795,$112796,$112797,$112798),(nextval($112799),$112800,$112801,$112802,$112803,$112804,$112805,$112806,$112807,$112808,$112809,$112810,$112811,$112812),(nextval($112813),$112814,$112815,$112816,$112817,$112818,$112819,$112820,$112821,$112822,$112823,$112824,$112825,$112826),(nextval($112827),$112828,$112829,$112830,$112831,$112832,$112833,$112834,$112835,$112836,$112837,$112838,$112839,$112840),(nextval($112841),$112842,$112843,$112844,$112845,$112846,$112847,$112848,$112849,$112850,$112851,$112852,$112853,$112854),(nextval($112855),$112856,$112857,$112858,$112859,$112860,$112861,$112862,$112863,$112864,$112865,$112866,$112867,$112868),(nextval($112869),$112870,$112871,$112872,$112873,$112874,$112875,$112876,$112877,$112878,$112879,$112880,$112881,$112882),(nextval($112883),$112884,$112885,$112886,$112887,$112888,$112889,$112890,$112891,$112892,$112893,$112894,$112895,$112896),(nextval($112897),$112898,$112899,$112900,$112901,$112902,$112903,$112904,$112905,$112906,$112907,$112908,$112909,$112910),(nextval($112911),$112912,$112913,$112914,$112915,$112916,$112917,$112918,$112919,$112920,$112921,$112922,$112923,$112924),(nextval($112925),$112926,$112927,$112928,$112929,$112930,$112931,$112932,$112933,$112934,$112935,$112936,$112937,$112938),(nextval($112939),$112940,$112941,$112942,$112943,$112944,$112945,$112946,$112947,$112948,$112949,$112950,$112951,$112952),(nextval($112953),$112954,$112955,$112956,$112957,$112958,$112959,$112960,$112961,$112962,$112963,$112964,$112965,$112966),(nextval($112967),$112968,$112969,$112970,$112971,$112972,$112973,$112974,$112975,$112976,$112977,$112978,$112979,$112980),(nextval($112981),$112982,$112983,$112984,$112985,$112986,$112987,$112988,$112989,$112990,$112991,$112992,$112993,$112994),(nextval($112995),$112996,$112997,$112998,$112999,$113000,$113001,$113002,$113003,$113004,$113005,$113006,$113007,$113008),(nextval($113009),$113010,$113011,$113012,$113013,$113014,$113015,$113016,$113017,$113018,$113019,$113020,$113021,$113022),(nextval($113023),$113024,$113025,$113026,$113027,$113028,$113029,$113030,$113031,$113032,$113033,$113034,$113035,$113036),(nextval($113037),$113038,$113039,$113040,$113041,$113042,$113043,$113044,$113045,$113046,$113047,$113048,$113049,$113050),(nextval($113051),$113052,$113053,$113054,$113055,$113056,$113057,$113058,$113059,$113060,$113061,$113062,$113063,$113064),(nextval($113065),$113066,$113067,$113068,$113069,$113070,$113071,$113072,$113073,$113074,$113075,$113076,$113077,$113078),(nextval($113079),$113080,$113081,$113082,$113083,$113084,$113085,$113086,$113087,$113088,$113089,$113090,$113091,$113092),(nextval($113093),$113094,$113095,$113096,$113097,$113098,$113099,$113100,$113101,$113102,$113103,$113104,$113105,$113106),(nextval($113107),$113108,$113109,$113110,$113111,$113112,$113113,$113114,$113115,$113116,$113117,$113118,$113119,$113120),(nextval($113121),$113122,$113123,$113124,$113125,$113126,$113127,$113128,$113129,$113130,$113131,$113132,$113133,$113134),(nextval($113135),$113136,$113137,$113138,$113139,$113140,$113141,$113142,$113143,$113144,$113145,$113146,$113147,$113148),(nextval($113149),$113150,$113151,$113152,$113153,$113154,$113155,$113156,$113157,$113158,$113159,$113160,$113161,$113162),(nextval($113163),$113164,$113165,$113166,$113167,$113168,$113169,$113170,$113171,$113172,$113173,$113174,$113175,$113176),(nextval($113177),$113178,$113179,$113180,$113181,$113182,$113183,$113184,$113185,$113186,$113187,$113188,$113189,$113190),(nextval($113191),$113192,$113193,$113194,$113195,$113196,$113197,$113198,$113199,$113200,$113201,$113202,$113203,$113204),(nextval($113205),$113206,$113207,$113208,$113209,$113210,$113211,$113212,$113213,$113214,$113215,$113216,$113217,$113218),(nextval($113219),$113220,$113221,$113222,$113223,$113224,$113225,$113226,$113227,$113228,$113229,$113230,$113231,$113232),(nextval($113233),$113234,$113235,$113236,$113237,$113238,$113239,$113240,$113241,$113242,$113243,$113244,$113245,$113246),(nextval($113247),$113248,$113249,$113250,$113251,$113252,$113253,$113254,$113255,$113256,$113257,$113258,$113259,$113260),(nextval($113261),$113262,$113263,$113264,$113265,$113266,$113267,$113268,$113269,$113270,$113271,$113272,$113273,$113274),(nextval($113275),$113276,$113277,$113278,$113279,$113280,$113281,$113282,$113283,$113284,$113285,$113286,$113287,$113288),(nextval($113289),$113290,$113291,$113292,$113293,$113294,$113295,$113296,$113297,$113298,$113299,$113300,$113301,$113302),(nextval($113303),$113304,$113305,$113306,$113307,$113308,$113309,$113310,$113311,$113312,$113313,$113314,$113315,$113316),(nextval($113317),$113318,$113319,$113320,$113321,$113322,$113323,$113324,$113325,$113326,$113327,$113328,$113329,$113330),(nextval($113331),$113332,$113333,$113334,$113335,$113336,$113337,$113338,$113339,$113340,$113341,$113342,$113343,$113344),(nextval($113345),$113346,$113347,$113348,$113349,$113350,$113351,$113352,$113353,$113354,$113355,$113356,$113357,$113358),(nextval($113359),$113360,$113361,$113362,$113363,$113364,$113365,$113366,$113367,$113368,$113369,$113370,$113371,$113372),(nextval($113373),$113374,$113375,$113376,$113377,$113378,$113379,$113380,$113381,$113382,$113383,$113384,$113385,$113386),(nextval($113387),$113388,$113389,$113390,$113391,$113392,$113393,$113394,$113395,$113396,$113397,$113398,$113399,$113400),(nextval($113401),$113402,$113403,$113404,$113405,$113406,$113407,$113408,$113409,$113410,$113411,$113412,$113413,$113414),(nextval($113415),$113416,$113417,$113418,$113419,$113420,$113421,$113422,$113423,$113424,$113425,$113426,$113427,$113428),(nextval($113429),$113430,$113431,$113432,$113433,$113434,$113435,$113436,$113437,$113438,$113439,$113440,$113441,$113442),(nextval($113443),$113444,$113445,$113446,$113447,$113448,$113449,$113450,$113451,$113452,$113453,$113454,$113455,$113456),(nextval($113457),$113458,$113459,$113460,$113461,$113462,$113463,$113464,$113465,$113466,$113467,$113468,$113469,$113470),(nextval($113471),$113472,$113473,$113474,$113475,$113476,$113477,$113478,$113479,$113480,$113481,$113482,$113483,$113484),(nextval($113485),$113486,$113487,$113488,$113489,$113490,$113491,$113492,$113493,$113494,$113495,$113496,$113497,$113498),(nextval($113499),$113500,$113501,$113502,$113503,$113504,$113505,$113506,$113507,$113508,$113509,$113510,$113511,$113512),(nextval($113513),$113514,$113515,$113516,$113517,$113518,$113519,$113520,$113521,$113522,$113523,$113524,$113525,$113526),(nextval($113527),$113528,$113529,$113530,$113531,$113532,$113533,$113534,$113535,$113536,$113537,$113538,$113539,$113540),(nextval($113541),$113542,$113543,$113544,$113545,$113546,$113547,$113548,$113549,$113550,$113551,$113552,$113553,$113554),(nextval($113555),$113556,$113557,$113558,$113559,$113560,$113561,$113562,$113563,$113564,$113565,$113566,$113567,$113568),(nextval($113569),$113570,$113571,$113572,$113573,$113574,$113575,$113576,$113577,$113578,$113579,$113580,$113581,$113582),(nextval($113583),$113584,$113585,$113586,$113587,$113588,$113589,$113590,$113591,$113592,$113593,$113594,$113595,$113596),(nextval($113597),$113598,$113599,$113600,$113601,$113602,$113603,$113604,$113605,$113606,$113607,$113608,$113609,$113610),(nextval($113611),$113612,$113613,$113614,$113615,$113616,$113617,$113618,$113619,$113620,$113621,$113622,$113623,$113624),(nextval($113625),$113626,$113627,$113628,$113629,$113630,$113631,$113632,$113633,$113634,$113635,$113636,$113637,$113638),(nextval($113639),$113640,$113641,$113642,$113643,$113644,$113645,$113646,$113647,$113648,$113649,$113650,$113651,$113652),(nextval($113653),$113654,$113655,$113656,$113657,$113658,$113659,$113660,$113661,$113662,$113663,$113664,$113665,$113666),(nextval($113667),$113668,$113669,$113670,$113671,$113672,$113673,$113674,$113675,$113676,$113677,$113678,$113679,$113680),(nextval($113681),$113682,$113683,$113684,$113685,$113686,$113687,$113688,$113689,$113690,$113691,$113692,$113693,$113694),(nextval($113695),$113696,$113697,$113698,$113699,$113700,$113701,$113702,$113703,$113704,$113705,$113706,$113707,$113708),(nextval($113709),$113710,$113711,$113712,$113713,$113714,$113715,$113716,$113717,$113718,$113719,$113720,$113721,$113722),(nextval($113723),$113724,$113725,$113726,$113727,$113728,$113729,$113730,$113731,$113732,$113733,$113734,$113735,$113736),(nextval($113737),$113738,$113739,$113740,$113741,$113742,$113743,$113744,$113745,$113746,$113747,$113748,$113749,$113750),(nextval($113751),$113752,$113753,$113754,$113755,$113756,$113757,$113758,$113759,$113760,$113761,$113762,$113763,$113764),(nextval($113765),$113766,$113767,$113768,$113769,$113770,$113771,$113772,$113773,$113774,$113775,$113776,$113777,$113778),(nextval($113779),$113780,$113781,$113782,$113783,$113784,$113785,$113786,$113787,$113788,$113789,$113790,$113791,$113792),(nextval($113793),$113794,$113795,$113796,$113797,$113798,$113799,$113800,$113801,$113802,$113803,$113804,$113805,$113806),(nextval($113807),$113808,$113809,$113810,$113811,$113812,$113813,$113814,$113815,$113816,$113817,$113818,$113819,$113820),(nextval($113821),$113822,$113823,$113824,$113825,$113826,$113827,$113828,$113829,$113830,$113831,$113832,$113833,$113834),(nextval($113835),$113836,$113837,$113838,$113839,$113840,$113841,$113842,$113843,$113844,$113845,$113846,$113847,$113848),(nextval($113849),$113850,$113851,$113852,$113853,$113854,$113855,$113856,$113857,$113858,$113859,$113860,$113861,$113862),(nextval($113863),$113864,$113865,$113866,$113867,$113868,$113869,$113870,$113871,$113872,$113873,$113874,$113875,$113876),(nextval($113877),$113878,$113879,$113880,$113881,$113882,$113883,$113884,$113885,$113886,$113887,$113888,$113889,$113890),(nextval($113891),$113892,$113893,$113894,$113895,$113896,$113897,$113898,$113899,$113900,$113901,$113902,$113903,$113904),(nextval($113905),$113906,$113907,$113908,$113909,$113910,$113911,$113912,$113913,$113914,$113915,$113916,$113917,$113918),(nextval($113919),$113920,$113921,$113922,$113923,$113924,$113925,$113926,$113927,$113928,$113929,$113930,$113931,$113932),(nextval($113933),$113934,$113935,$113936,$113937,$113938,$113939,$113940,$113941,$113942,$113943,$113944,$113945,$113946),(nextval($113947),$113948,$113949,$113950,$113951,$113952,$113953,$113954,$113955,$113956,$113957,$113958,$113959,$113960),(nextval($113961),$113962,$113963,$113964,$113965,$113966,$113967,$113968,$113969,$113970,$113971,$113972,$113973,$113974),(nextval($113975),$113976,$113977,$113978,$113979,$113980,$113981,$113982,$113983,$113984,$113985,$113986,$113987,$113988),(nextval($113989),$113990,$113991,$113992,$113993,$113994,$113995,$113996,$113997,$113998,$113999,$114000,$114001,$114002),(nextval($114003),$114004,$114005,$114006,$114007,$114008,$114009,$114010,$114011,$114012,$114013,$114014,$114015,$114016),(nextval($114017),$114018,$114019,$114020,$114021,$114022,$114023,$114024,$114025,$114026,$114027,$114028,$114029,$114030),(nextval($114031),$114032,$114033,$114034,$114035,$114036,$114037,$114038,$114039,$114040,$114041,$114042,$114043,$114044),(nextval($114045),$114046,$114047,$114048,$114049,$114050,$114051,$114052,$114053,$114054,$114055,$114056,$114057,$114058),(nextval($114059),$114060,$114061,$114062,$114063,$114064,$114065,$114066,$114067,$114068,$114069,$114070,$114071,$114072),(nextval($114073),$114074,$114075,$114076,$114077,$114078,$114079,$114080,$114081,$114082,$114083,$114084,$114085,$114086),(nextval($114087),$114088,$114089,$114090,$114091,$114092,$114093,$114094,$114095,$114096,$114097,$114098,$114099,$114100),(nextval($114101),$114102,$114103,$114104,$114105,$114106,$114107,$114108,$114109,$114110,$114111,$114112,$114113,$114114),(nextval($114115),$114116,$114117,$114118,$114119,$114120,$114121,$114122,$114123,$114124,$114125,$114126,$114127,$114128),(nextval($114129),$114130,$114131,$114132,$114133,$114134,$114135,$114136,$114137,$114138,$114139,$114140,$114141,$114142),(nextval($114143),$114144,$114145,$114146,$114147,$114148,$114149,$114150,$114151,$114152,$114153,$114154,$114155,$114156),(nextval($114157),$114158,$114159,$114160,$114161,$114162,$114163,$114164,$114165,$114166,$114167,$114168,$114169,$114170),(nextval($114171),$114172,$114173,$114174,$114175,$114176,$114177,$114178,$114179,$114180,$114181,$114182,$114183,$114184),(nextval($114185),$114186,$114187,$114188,$114189,$114190,$114191,$114192,$114193,$114194,$114195,$114196,$114197,$114198),(nextval($114199),$114200,$114201,$114202,$114203,$114204,$114205,$114206,$114207,$114208,$114209,$114210,$114211,$114212),(nextval($114213),$114214,$114215,$114216,$114217,$114218,$114219,$114220,$114221,$114222,$114223,$114224,$114225,$114226),(nextval($114227),$114228,$114229,$114230,$114231,$114232,$114233,$114234,$114235,$114236,$114237,$114238,$114239,$114240),(nextval($114241),$114242,$114243,$114244,$114245,$114246,$114247,$114248,$114249,$114250,$114251,$114252,$114253,$114254),(nextval($114255),$114256,$114257,$114258,$114259,$114260,$114261,$114262,$114263,$114264,$114265,$114266,$114267,$114268),(nextval($114269),$114270,$114271,$114272,$114273,$114274,$114275,$114276,$114277,$114278,$114279,$114280,$114281,$114282),(nextval($114283),$114284,$114285,$114286,$114287,$114288,$114289,$114290,$114291,$114292,$114293,$114294,$114295,$114296),(nextval($114297),$114298,$114299,$114300,$114301,$114302,$114303,$114304,$114305,$114306,$114307,$114308,$114309,$114310),(nextval($114311),$114312,$114313,$114314,$114315,$114316,$114317,$114318,$114319,$114320,$114321,$114322,$114323,$114324),(nextval($114325),$114326,$114327,$114328,$114329,$114330,$114331,$114332,$114333,$114334,$114335,$114336,$114337,$114338),(nextval($114339),$114340,$114341,$114342,$114343,$114344,$114345,$114346,$114347,$114348,$114349,$114350,$114351,$114352),(nextval($114353),$114354,$114355,$114356,$114357,$114358,$114359,$114360,$114361,$114362,$114363,$114364,$114365,$114366),(nextval($114367),$114368,$114369,$114370,$114371,$114372,$114373,$114374,$114375,$114376,$114377,$114378,$114379,$114380),(nextval($114381),$114382,$114383,$114384,$114385,$114386,$114387,$114388,$114389,$114390,$114391,$114392,$114393,$114394),(nextval($114395),$114396,$114397,$114398,$114399,$114400,$114401,$114402,$114403,$114404,$114405,$114406,$114407,$114408),(nextval($114409),$114410,$114411,$114412,$114413,$114414,$114415,$114416,$114417,$114418,$114419,$114420,$114421,$114422),(nextval($114423),$114424,$114425,$114426,$114427,$114428,$114429,$114430,$114431,$114432,$114433,$114434,$114435,$114436),(nextval($114437),$114438,$114439,$114440,$114441,$114442,$114443,$114444,$114445,$114446,$114447,$114448,$114449,$114450),(nextval($114451),$114452,$114453,$114454,$114455,$114456,$114457,$114458,$114459,$114460,$114461,$114462,$114463,$114464),(nextval($114465),$114466,$114467,$114468,$114469,$114470,$114471,$114472,$114473,$114474,$114475,$114476,$114477,$114478),(nextval($114479),$114480,$114481,$114482,$114483,$114484,$114485,$114486,$114487,$114488,$114489,$114490,$114491,$114492),(nextval($114493),$114494,$114495,$114496,$114497,$114498,$114499,$114500,$114501,$114502,$114503,$114504,$114505,$114506),(nextval($114507),$114508,$114509,$114510,$114511,$114512,$114513,$114514,$114515,$114516,$114517,$114518,$114519,$114520),(nextval($114521),$114522,$114523,$114524,$114525,$114526,$114527,$114528,$114529,$114530,$114531,$114532,$114533,$114534),(nextval($114535),$114536,$114537,$114538,$114539,$114540,$114541,$114542,$114543,$114544,$114545,$114546,$114547,$114548),(nextval($114549),$114550,$114551,$114552,$114553,$114554,$114555,$114556,$114557,$114558,$114559,$114560,$114561,$114562),(nextval($114563),$114564,$114565,$114566,$114567,$114568,$114569,$114570,$114571,$114572,$114573,$114574,$114575,$114576),(nextval($114577),$114578,$114579,$114580,$114581,$114582,$114583,$114584,$114585,$114586,$114587,$114588,$114589,$114590),(nextval($114591),$114592,$114593,$114594,$114595,$114596,$114597,$114598,$114599,$114600,$114601,$114602,$114603,$114604),(nextval($114605),$114606,$114607,$114608,$114609,$114610,$114611,$114612,$114613,$114614,$114615,$114616,$114617,$114618),(nextval($114619),$114620,$114621,$114622,$114623,$114624,$114625,$114626,$114627,$114628,$114629,$114630,$114631,$114632),(nextval($114633),$114634,$114635,$114636,$114637,$114638,$114639,$114640,$114641,$114642,$114643,$114644,$114645,$114646),(nextval($114647),$114648,$114649,$114650,$114651,$114652,$114653,$114654,$114655,$114656,$114657,$114658,$114659,$114660),(nextval($114661),$114662,$114663,$114664,$114665,$114666,$114667,$114668,$114669,$114670,$114671,$114672,$114673,$114674),(nextval($114675),$114676,$114677,$114678,$114679,$114680,$114681,$114682,$114683,$114684,$114685,$114686,$114687,$114688),(nextval($114689),$114690,$114691,$114692,$114693,$114694,$114695,$114696,$114697,$114698,$114699,$114700,$114701,$114702),(nextval($114703),$114704,$114705,$114706,$114707,$114708,$114709,$114710,$114711,$114712,$114713,$114714,$114715,$114716),(nextval($114717),$114718,$114719,$114720,$114721,$114722,$114723,$114724,$114725,$114726,$114727,$114728,$114729,$114730),(nextval($114731),$114732,$114733,$114734,$114735,$114736,$114737,$114738,$114739,$114740,$114741,$114742,$114743,$114744),(nextval($114745),$114746,$114747,$114748,$114749,$114750,$114751,$114752,$114753,$114754,$114755,$114756,$114757,$114758),(nextval($114759),$114760,$114761,$114762,$114763,$114764,$114765,$114766,$114767,$114768,$114769,$114770,$114771,$114772),(nextval($114773),$114774,$114775,$114776,$114777,$114778,$114779,$114780,$114781,$114782,$114783,$114784,$114785,$114786),(nextval($114787),$114788,$114789,$114790,$114791,$114792,$114793,$114794,$114795,$114796,$114797,$114798,$114799,$114800),(nextval($114801),$114802,$114803,$114804,$114805,$114806,$114807,$114808,$114809,$114810,$114811,$114812,$114813,$114814),(nextval($114815),$114816,$114817,$114818,$114819,$114820,$114821,$114822,$114823,$114824,$114825,$114826,$114827,$114828),(nextval($114829),$114830,$114831,$114832,$114833,$114834,$114835,$114836,$114837,$114838,$114839,$114840,$114841,$114842),(nextval($114843),$114844,$114845,$114846,$114847,$114848,$114849,$114850,$114851,$114852,$114853,$114854,$114855,$114856),(nextval($114857),$114858,$114859,$114860,$114861,$114862,$114863,$114864,$114865,$114866,$114867,$114868,$114869,$114870),(nextval($114871),$114872,$114873,$114874,$114875,$114876,$114877,$114878,$114879,$114880,$114881,$114882,$114883,$114884),(nextval($114885),$114886,$114887,$114888,$114889,$114890,$114891,$114892,$114893,$114894,$114895,$114896,$114897,$114898),(nextval($114899),$114900,$114901,$114902,$114903,$114904,$114905,$114906,$114907,$114908,$114909,$114910,$114911,$114912),(nextval($114913),$114914,$114915,$114916,$114917,$114918,$114919,$114920,$114921,$114922,$114923,$114924,$114925,$114926),(nextval($114927),$114928,$114929,$114930,$114931,$114932,$114933,$114934,$114935,$114936,$114937,$114938,$114939,$114940),(nextval($114941),$114942,$114943,$114944,$114945,$114946,$114947,$114948,$114949,$114950,$114951,$114952,$114953,$114954),(nextval($114955),$114956,$114957,$114958,$114959,$114960,$114961,$114962,$114963,$114964,$114965,$114966,$114967,$114968),(nextval($114969),$114970,$114971,$114972,$114973,$114974,$114975,$114976,$114977,$114978,$114979,$114980,$114981,$114982),(nextval($114983),$114984,$114985,$114986,$114987,$114988,$114989,$114990,$114991,$114992,$114993,$114994,$114995,$114996),(nextval($114997),$114998,$114999,$115000,$115001,$115002,$115003,$115004,$115005,$115006,$115007,$115008,$115009,$115010),(nextval($115011),$115012,$115013,$115014,$115015,$115016,$115017,$115018,$115019,$115020,$115021,$115022,$115023,$115024),(nextval($115025),$115026,$115027,$115028,$115029,$115030,$115031,$115032,$115033,$115034,$115035,$115036,$115037,$115038),(nextval($115039),$115040,$115041,$115042,$115043,$115044,$115045,$115046,$115047,$115048,$115049,$115050,$115051,$115052),(nextval($115053),$115054,$115055,$115056,$115057,$115058,$115059,$115060,$115061,$115062,$115063,$115064,$115065,$115066),(nextval($115067),$115068,$115069,$115070,$115071,$115072,$115073,$115074,$115075,$115076,$115077,$115078,$115079,$115080),(nextval($115081),$115082,$115083,$115084,$115085,$115086,$115087,$115088,$115089,$115090,$115091,$115092,$115093,$115094),(nextval($115095),$115096,$115097,$115098,$115099,$115100,$115101,$115102,$115103,$115104,$115105,$115106,$115107,$115108),(nextval($115109),$115110,$115111,$115112,$115113,$115114,$115115,$115116,$115117,$115118,$115119,$115120,$115121,$115122),(nextval($115123),$115124,$115125,$115126,$115127,$115128,$115129,$115130,$115131,$115132,$115133,$115134,$115135,$115136),(nextval($115137),$115138,$115139,$115140,$115141,$115142,$115143,$115144,$115145,$115146,$115147,$115148,$115149,$115150),(nextval($115151),$115152,$115153,$115154,$115155,$115156,$115157,$115158,$115159,$115160,$115161,$115162,$115163,$115164),(nextval($115165),$115166,$115167,$115168,$115169,$115170,$115171,$115172,$115173,$115174,$115175,$115176,$115177,$115178),(nextval($115179),$115180,$115181,$115182,$115183,$115184,$115185,$115186,$115187,$115188,$115189,$115190,$115191,$115192),(nextval($115193),$115194,$115195,$115196,$115197,$115198,$115199,$115200,$115201,$115202,$115203,$115204,$115205,$115206),(nextval($115207),$115208,$115209,$115210,$115211,$115212,$115213,$115214,$115215,$115216,$115217,$115218,$115219,$115220),(nextval($115221),$115222,$115223,$115224,$115225,$115226,$115227,$115228,$115229,$115230,$115231,$115232,$115233,$115234),(nextval($115235),$115236,$115237,$115238,$115239,$115240,$115241,$115242,$115243,$115244,$115245,$115246,$115247,$115248),(nextval($115249),$115250,$115251,$115252,$115253,$115254,$115255,$115256,$115257,$115258,$115259,$115260,$115261,$115262),(nextval($115263),$115264,$115265,$115266,$115267,$115268,$115269,$115270,$115271,$115272,$115273,$115274,$115275,$115276),(nextval($115277),$115278,$115279,$115280,$115281,$115282,$115283,$115284,$115285,$115286,$115287,$115288,$115289,$115290),(nextval($115291),$115292,$115293,$115294,$115295,$115296,$115297,$115298,$115299,$115300,$115301,$115302,$115303,$115304),(nextval($115305),$115306,$115307,$115308,$115309,$115310,$115311,$115312,$115313,$115314,$115315,$115316,$115317,$115318),(nextval($115319),$115320,$115321,$115322,$115323,$115324,$115325,$115326,$115327,$115328,$115329,$115330,$115331,$115332),(nextval($115333),$115334,$115335,$115336,$115337,$115338,$115339,$115340,$115341,$115342,$115343,$115344,$115345,$115346),(nextval($115347),$115348,$115349,$115350,$115351,$115352,$115353,$115354,$115355,$115356,$115357,$115358,$115359,$115360),(nextval($115361),$115362,$115363,$115364,$115365,$115366,$115367,$115368,$115369,$115370,$115371,$115372,$115373,$115374),(nextval($115375),$115376,$115377,$115378,$115379,$115380,$115381,$115382,$115383,$115384,$115385,$115386,$115387,$115388),(nextval($115389),$115390,$115391,$115392,$115393,$115394,$115395,$115396,$115397,$115398,$115399,$115400,$115401,$115402),(nextval($115403),$115404,$115405,$115406,$115407,$115408,$115409,$115410,$115411,$115412,$115413,$115414,$115415,$115416),(nextval($115417),$115418,$115419,$115420,$115421,$115422,$115423,$115424,$115425,$115426,$115427,$115428,$115429,$115430),(nextval($115431),$115432,$115433,$115434,$115435,$115436,$115437,$115438,$115439,$115440,$115441,$115442,$115443,$115444),(nextval($115445),$115446,$115447,$115448,$115449,$115450,$115451,$115452,$115453,$115454,$115455,$115456,$115457,$115458),(nextval($115459),$115460,$115461,$115462,$115463,$115464,$115465,$115466,$115467,$115468,$115469,$115470,$115471,$115472),(nextval($115473),$115474,$115475,$115476,$115477,$115478,$115479,$115480,$115481,$115482,$115483,$115484,$115485,$115486),(nextval($115487),$115488,$115489,$115490,$115491,$115492,$115493,$115494,$115495,$115496,$115497,$115498,$115499,$115500),(nextval($115501),$115502,$115503,$115504,$115505,$115506,$115507,$115508,$115509,$115510,$115511,$115512,$115513,$115514),(nextval($115515),$115516,$115517,$115518,$115519,$115520,$115521,$115522,$115523,$115524,$115525,$115526,$115527,$115528),(nextval($115529),$115530,$115531,$115532,$115533,$115534,$115535,$115536,$115537,$115538,$115539,$115540,$115541,$115542),(nextval($115543),$115544,$115545,$115546,$115547,$115548,$115549,$115550,$115551,$115552,$115553,$115554,$115555,$115556),(nextval($115557),$115558,$115559,$115560,$115561,$115562,$115563,$115564,$115565,$115566,$115567,$115568,$115569,$115570),(nextval($115571),$115572,$115573,$115574,$115575,$115576,$115577,$115578,$115579,$115580,$115581,$115582,$115583,$115584),(nextval($115585),$115586,$115587,$115588,$115589,$115590,$115591,$115592,$115593,$115594,$115595,$115596,$115597,$115598),(nextval($115599),$115600,$115601,$115602,$115603,$115604,$115605,$115606,$115607,$115608,$115609,$115610,$115611,$115612),(nextval($115613),$115614,$115615,$115616,$115617,$115618,$115619,$115620,$115621,$115622,$115623,$115624,$115625,$115626),(nextval($115627),$115628,$115629,$115630,$115631,$115632,$115633,$115634,$115635,$115636,$115637,$115638,$115639,$115640),(nextval($115641),$115642,$115643,$115644,$115645,$115646,$115647,$115648,$115649,$115650,$115651,$115652,$115653,$115654),(nextval($115655),$115656,$115657,$115658,$115659,$115660,$115661,$115662,$115663,$115664,$115665,$115666,$115667,$115668),(nextval($115669),$115670,$115671,$115672,$115673,$115674,$115675,$115676,$115677,$115678,$115679,$115680,$115681,$115682),(nextval($115683),$115684,$115685,$115686,$115687,$115688,$115689,$115690,$115691,$115692,$115693,$115694,$115695,$115696),(nextval($115697),$115698,$115699,$115700,$115701,$115702,$115703,$115704,$115705,$115706,$115707,$115708,$115709,$115710),(nextval($115711),$115712,$115713,$115714,$115715,$115716,$115717,$115718,$115719,$115720,$115721,$115722,$115723,$115724),(nextval($115725),$115726,$115727,$115728,$115729,$115730,$115731,$115732,$115733,$115734,$115735,$115736,$115737,$115738),(nextval($115739),$115740,$115741,$115742,$115743,$115744,$115745,$115746,$115747,$115748,$115749,$115750,$115751,$115752),(nextval($115753),$115754,$115755,$115756,$115757,$115758,$115759,$115760,$115761,$115762,$115763,$115764,$115765,$115766),(nextval($115767),$115768,$115769,$115770,$115771,$115772,$115773,$115774,$115775,$115776,$115777,$115778,$115779,$115780),(nextval($115781),$115782,$115783,$115784,$115785,$115786,$115787,$115788,$115789,$115790,$115791,$115792,$115793,$115794),(nextval($115795),$115796,$115797,$115798,$115799,$115800,$115801,$115802,$115803,$115804,$115805,$115806,$115807,$115808),(nextval($115809),$115810,$115811,$115812,$115813,$115814,$115815,$115816,$115817,$115818,$115819,$115820,$115821,$115822),(nextval($115823),$115824,$115825,$115826,$115827,$115828,$115829,$115830,$115831,$115832,$115833,$115834,$115835,$115836),(nextval($115837),$115838,$115839,$115840,$115841,$115842,$115843,$115844,$115845,$115846,$115847,$115848,$115849,$115850),(nextval($115851),$115852,$115853,$115854,$115855,$115856,$115857,$115858,$115859,$115860,$115861,$115862,$115863,$115864),(nextval($115865),$115866,$115867,$115868,$115869,$115870,$115871,$115872,$115873,$115874,$115875,$115876,$115877,$115878),(nextval($115879),$115880,$115881,$115882,$115883,$115884,$115885,$115886,$115887,$115888,$115889,$115890,$115891,$115892),(nextval($115893),$115894,$115895,$115896,$115897,$115898,$115899,$115900,$115901,$115902,$115903,$115904,$115905,$115906),(nextval($115907),$115908,$115909,$115910,$115911,$115912,$115913,$115914,$115915,$115916,$115917,$115918,$115919,$115920),(nextval($115921),$115922,$115923,$115924,$115925,$115926,$115927,$115928,$115929,$115930,$115931,$115932,$115933,$115934),(nextval($115935),$115936,$115937,$115938,$115939,$115940,$115941,$115942,$115943,$115944,$115945,$115946,$115947,$115948),(nextval($115949),$115950,$115951,$115952,$115953,$115954,$115955,$115956,$115957,$115958,$115959,$115960,$115961,$115962),(nextval($115963),$115964,$115965,$115966,$115967,$115968,$115969,$115970,$115971,$115972,$115973,$115974,$115975,$115976),(nextval($115977),$115978,$115979,$115980,$115981,$115982,$115983,$115984,$115985,$115986,$115987,$115988,$115989,$115990),(nextval($115991),$115992,$115993,$115994,$115995,$115996,$115997,$115998,$115999,$116000,$116001,$116002,$116003,$116004),(nextval($116005),$116006,$116007,$116008,$116009,$116010,$116011,$116012,$116013,$116014,$116015,$116016,$116017,$116018),(nextval($116019),$116020,$116021,$116022,$116023,$116024,$116025,$116026,$116027,$116028,$116029,$116030,$116031,$116032),(nextval($116033),$116034,$116035,$116036,$116037,$116038,$116039,$116040,$116041,$116042,$116043,$116044,$116045,$116046),(nextval($116047),$116048,$116049,$116050,$116051,$116052,$116053,$116054,$116055,$116056,$116057,$116058,$116059,$116060),(nextval($116061),$116062,$116063,$116064,$116065,$116066,$116067,$116068,$116069,$116070,$116071,$116072,$116073,$116074),(nextval($116075),$116076,$116077,$116078,$116079,$116080,$116081,$116082,$116083,$116084,$116085,$116086,$116087,$116088),(nextval($116089),$116090,$116091,$116092,$116093,$116094,$116095,$116096,$116097,$116098,$116099,$116100,$116101,$116102),(nextval($116103),$116104,$116105,$116106,$116107,$116108,$116109,$116110,$116111,$116112,$116113,$116114,$116115,$116116),(nextval($116117),$116118,$116119,$116120,$116121,$116122,$116123,$116124,$116125,$116126,$116127,$116128,$116129,$116130),(nextval($116131),$116132,$116133,$116134,$116135,$116136,$116137,$116138,$116139,$116140,$116141,$116142,$116143,$116144),(nextval($116145),$116146,$116147,$116148,$116149,$116150,$116151,$116152,$116153,$116154,$116155,$116156,$116157,$116158),(nextval($116159),$116160,$116161,$116162,$116163,$116164,$116165,$116166,$116167,$116168,$116169,$116170,$116171,$116172),(nextval($116173),$116174,$116175,$116176,$116177,$116178,$116179,$116180,$116181,$116182,$116183,$116184,$116185,$116186),(nextval($116187),$116188,$116189,$116190,$116191,$116192,$116193,$116194,$116195,$116196,$116197,$116198,$116199,$116200),(nextval($116201),$116202,$116203,$116204,$116205,$116206,$116207,$116208,$116209,$116210,$116211,$116212,$116213,$116214),(nextval($116215),$116216,$116217,$116218,$116219,$116220,$116221,$116222,$116223,$116224,$116225,$116226,$116227,$116228),(nextval($116229),$116230,$116231,$116232,$116233,$116234,$116235,$116236,$116237,$116238,$116239,$116240,$116241,$116242),(nextval($116243),$116244,$116245,$116246,$116247,$116248,$116249,$116250,$116251,$116252,$116253,$116254,$116255,$116256),(nextval($116257),$116258,$116259,$116260,$116261,$116262,$116263,$116264,$116265,$116266,$116267,$116268,$116269,$116270),(nextval($116271),$116272,$116273,$116274,$116275,$116276,$116277,$116278,$116279,$116280,$116281,$116282,$116283,$116284),(nextval($116285),$116286,$116287,$116288,$116289,$116290,$116291,$116292,$116293,$116294,$116295,$116296,$116297,$116298),(nextval($116299),$116300,$116301,$116302,$116303,$116304,$116305,$116306,$116307,$116308,$116309,$116310,$116311,$116312),(nextval($116313),$116314,$116315,$116316,$116317,$116318,$116319,$116320,$116321,$116322,$116323,$116324,$116325,$116326),(nextval($116327),$116328,$116329,$116330,$116331,$116332,$116333,$116334,$116335,$116336,$116337,$116338,$116339,$116340),(nextval($116341),$116342,$116343,$116344,$116345,$116346,$116347,$116348,$116349,$116350,$116351,$116352,$116353,$116354),(nextval($116355),$116356,$116357,$116358,$116359,$116360,$116361,$116362,$116363,$116364,$116365,$116366,$116367,$116368),(nextval($116369),$116370,$116371,$116372,$116373,$116374,$116375,$116376,$116377,$116378,$116379,$116380,$116381,$116382),(nextval($116383),$116384,$116385,$116386,$116387,$116388,$116389,$116390,$116391,$116392,$116393,$116394,$116395,$116396),(nextval($116397),$116398,$116399,$116400,$116401,$116402,$116403,$116404,$116405,$116406,$116407,$116408,$116409,$116410),(nextval($116411),$116412,$116413,$116414,$116415,$116416,$116417,$116418,$116419,$116420,$116421,$116422,$116423,$116424),(nextval($116425),$116426,$116427,$116428,$116429,$116430,$116431,$116432,$116433,$116434,$116435,$116436,$116437,$116438),(nextval($116439),$116440,$116441,$116442,$116443,$116444,$116445,$116446,$116447,$116448,$116449,$116450,$116451,$116452),(nextval($116453),$116454,$116455,$116456,$116457,$116458,$116459,$116460,$116461,$116462,$116463,$116464,$116465,$116466),(nextval($116467),$116468,$116469,$116470,$116471,$116472,$116473,$116474,$116475,$116476,$116477,$116478,$116479,$116480),(nextval($116481),$116482,$116483,$116484,$116485,$116486,$116487,$116488,$116489,$116490,$116491,$116492,$116493,$116494),(nextval($116495),$116496,$116497,$116498,$116499,$116500,$116501,$116502,$116503,$116504,$116505,$116506,$116507,$116508),(nextval($116509),$116510,$116511,$116512,$116513,$116514,$116515,$116516,$116517,$116518,$116519,$116520,$116521,$116522),(nextval($116523),$116524,$116525,$116526,$116527,$116528,$116529,$116530,$116531,$116532,$116533,$116534,$116535,$116536),(nextval($116537),$116538,$116539,$116540,$116541,$116542,$116543,$116544,$116545,$116546,$116547,$116548,$116549,$116550),(nextval($116551),$116552,$116553,$116554,$116555,$116556,$116557,$116558,$116559,$116560,$116561,$116562,$116563,$116564),(nextval($116565),$116566,$116567,$116568,$116569,$116570,$116571,$116572,$116573,$116574,$116575,$116576,$116577,$116578),(nextval($116579),$116580,$116581,$116582,$116583,$116584,$116585,$116586,$116587,$116588,$116589,$116590,$116591,$116592),(nextval($116593),$116594,$116595,$116596,$116597,$116598,$116599,$116600,$116601,$116602,$116603,$116604,$116605,$116606),(nextval($116607),$116608,$116609,$116610,$116611,$116612,$116613,$116614,$116615,$116616,$116617,$116618,$116619,$116620),(nextval($116621),$116622,$116623,$116624,$116625,$116626,$116627,$116628,$116629,$116630,$116631,$116632,$116633,$116634),(nextval($116635),$116636,$116637,$116638,$116639,$116640,$116641,$116642,$116643,$116644,$116645,$116646,$116647,$116648),(nextval($116649),$116650,$116651,$116652,$116653,$116654,$116655,$116656,$116657,$116658,$116659,$116660,$116661,$116662),(nextval($116663),$116664,$116665,$116666,$116667,$116668,$116669,$116670,$116671,$116672,$116673,$116674,$116675,$116676),(nextval($116677),$116678,$116679,$116680,$116681,$116682,$116683,$116684,$116685,$116686,$116687,$116688,$116689,$116690),(nextval($116691),$116692,$116693,$116694,$116695,$116696,$116697,$116698,$116699,$116700,$116701,$116702,$116703,$116704),(nextval($116705),$116706,$116707,$116708,$116709,$116710,$116711,$116712,$116713,$116714,$116715,$116716,$116717,$116718),(nextval($116719),$116720,$116721,$116722,$116723,$116724,$116725,$116726,$116727,$116728,$116729,$116730,$116731,$116732),(nextval($116733),$116734,$116735,$116736,$116737,$116738,$116739,$116740,$116741,$116742,$116743,$116744,$116745,$116746),(nextval($116747),$116748,$116749,$116750,$116751,$116752,$116753,$116754,$116755,$116756,$116757,$116758,$116759,$116760),(nextval($116761),$116762,$116763,$116764,$116765,$116766,$116767,$116768,$116769,$116770,$116771,$116772,$116773,$116774),(nextval($116775),$116776,$116777,$116778,$116779,$116780,$116781,$116782,$116783,$116784,$116785,$116786,$116787,$116788),(nextval($116789),$116790,$116791,$116792,$116793,$116794,$116795,$116796,$116797,$116798,$116799,$116800,$116801,$116802),(nextval($116803),$116804,$116805,$116806,$116807,$116808,$116809,$116810,$116811,$116812,$116813,$116814,$116815,$116816),(nextval($116817),$116818,$116819,$116820,$116821,$116822,$116823,$116824,$116825,$116826,$116827,$116828,$116829,$116830),(nextval($116831),$116832,$116833,$116834,$116835,$116836,$116837,$116838,$116839,$116840,$116841,$116842,$116843,$116844),(nextval($116845),$116846,$116847,$116848,$116849,$116850,$116851,$116852,$116853,$116854,$116855,$116856,$116857,$116858),(nextval($116859),$116860,$116861,$116862,$116863,$116864,$116865,$116866,$116867,$116868,$116869,$116870,$116871,$116872),(nextval($116873),$116874,$116875,$116876,$116877,$116878,$116879,$116880,$116881,$116882,$116883,$116884,$116885,$116886),(nextval($116887),$116888,$116889,$116890,$116891,$116892,$116893,$116894,$116895,$116896,$116897,$116898,$116899,$116900),(nextval($116901),$116902,$116903,$116904,$116905,$116906,$116907,$116908,$116909,$116910,$116911,$116912,$116913,$116914),(nextval($116915),$116916,$116917,$116918,$116919,$116920,$116921,$116922,$116923,$116924,$116925,$116926,$116927,$116928),(nextval($116929),$116930,$116931,$116932,$116933,$116934,$116935,$116936,$116937,$116938,$116939,$116940,$116941,$116942),(nextval($116943),$116944,$116945,$116946,$116947,$116948,$116949,$116950,$116951,$116952,$116953,$116954,$116955,$116956),(nextval($116957),$116958,$116959,$116960,$116961,$116962,$116963,$116964,$116965,$116966,$116967,$116968,$116969,$116970),(nextval($116971),$116972,$116973,$116974,$116975,$116976,$116977,$116978,$116979,$116980,$116981,$116982,$116983,$116984),(nextval($116985),$116986,$116987,$116988,$116989,$116990,$116991,$116992,$116993,$116994,$116995,$116996,$116997,$116998),(nextval($116999),$117000,$117001,$117002,$117003,$117004,$117005,$117006,$117007,$117008,$117009,$117010,$117011,$117012),(nextval($117013),$117014,$117015,$117016,$117017,$117018,$117019,$117020,$117021,$117022,$117023,$117024,$117025,$117026),(nextval($117027),$117028,$117029,$117030,$117031,$117032,$117033,$117034,$117035,$117036,$117037,$117038,$117039,$117040),(nextval($117041),$117042,$117043,$117044,$117045,$117046,$117047,$117048,$117049,$117050,$117051,$117052,$117053,$117054),(nextval($117055),$117056,$117057,$117058,$117059,$117060,$117061,$117062,$117063,$117064,$117065,$117066,$117067,$117068),(nextval($117069),$117070,$117071,$117072,$117073,$117074,$117075,$117076,$117077,$117078,$117079,$117080,$117081,$117082),(nextval($117083),$117084,$117085,$117086,$117087,$117088,$117089,$117090,$117091,$117092,$117093,$117094,$117095,$117096),(nextval($117097),$117098,$117099,$117100,$117101,$117102,$117103,$117104,$117105,$117106,$117107,$117108,$117109,$117110),(nextval($117111),$117112,$117113,$117114,$117115,$117116,$117117,$117118,$117119,$117120,$117121,$117122,$117123,$117124),(nextval($117125),$117126,$117127,$117128,$117129,$117130,$117131,$117132,$117133,$117134,$117135,$117136,$117137,$117138),(nextval($117139),$117140,$117141,$117142,$117143,$117144,$117145,$117146,$117147,$117148,$117149,$117150,$117151,$117152),(nextval($117153),$117154,$117155,$117156,$117157,$117158,$117159,$117160,$117161,$117162,$117163,$117164,$117165,$117166),(nextval($117167),$117168,$117169,$117170,$117171,$117172,$117173,$117174,$117175,$117176,$117177,$117178,$117179,$117180),(nextval($117181),$117182,$117183,$117184,$117185,$117186,$117187,$117188,$117189,$117190,$117191,$117192,$117193,$117194),(nextval($117195),$117196,$117197,$117198,$117199,$117200,$117201,$117202,$117203,$117204,$117205,$117206,$117207,$117208),(nextval($117209),$117210,$117211,$117212,$117213,$117214,$117215,$117216,$117217,$117218,$117219,$117220,$117221,$117222),(nextval($117223),$117224,$117225,$117226,$117227,$117228,$117229,$117230,$117231,$117232,$117233,$117234,$117235,$117236),(nextval($117237),$117238,$117239,$117240,$117241,$117242,$117243,$117244,$117245,$117246,$117247,$117248,$117249,$117250),(nextval($117251),$117252,$117253,$117254,$117255,$117256,$117257,$117258,$117259,$117260,$117261,$117262,$117263,$117264),(nextval($117265),$117266,$117267,$117268,$117269,$117270,$117271,$117272,$117273,$117274,$117275,$117276,$117277,$117278),(nextval($117279),$117280,$117281,$117282,$117283,$117284,$117285,$117286,$117287,$117288,$117289,$117290,$117291,$117292),(nextval($117293),$117294,$117295,$117296,$117297,$117298,$117299,$117300,$117301,$117302,$117303,$117304,$117305,$117306),(nextval($117307),$117308,$117309,$117310,$117311,$117312,$117313,$117314,$117315,$117316,$117317,$117318,$117319,$117320),(nextval($117321),$117322,$117323,$117324,$117325,$117326,$117327,$117328,$117329,$117330,$117331,$117332,$117333,$117334),(nextval($117335),$117336,$117337,$117338,$117339,$117340,$117341,$117342,$117343,$117344,$117345,$117346,$117347,$117348),(nextval($117349),$117350,$117351,$117352,$117353,$117354,$117355,$117356,$117357,$117358,$117359,$117360,$117361,$117362),(nextval($117363),$117364,$117365,$117366,$117367,$117368,$117369,$117370,$117371,$117372,$117373,$117374,$117375,$117376),(nextval($117377),$117378,$117379,$117380,$117381,$117382,$117383,$117384,$117385,$117386,$117387,$117388,$117389,$117390),(nextval($117391),$117392,$117393,$117394,$117395,$117396,$117397,$117398,$117399,$117400,$117401,$117402,$117403,$117404),(nextval($117405),$117406,$117407,$117408,$117409,$117410,$117411,$117412,$117413,$117414,$117415,$117416,$117417,$117418),(nextval($117419),$117420,$117421,$117422,$117423,$117424,$117425,$117426,$117427,$117428,$117429,$117430,$117431,$117432),(nextval($117433),$117434,$117435,$117436,$117437,$117438,$117439,$117440,$117441,$117442,$117443,$117444,$117445,$117446),(nextval($117447),$117448,$117449,$117450,$117451,$117452,$117453,$117454,$117455,$117456,$117457,$117458,$117459,$117460),(nextval($117461),$117462,$117463,$117464,$117465,$117466,$117467,$117468,$117469,$117470,$117471,$117472,$117473,$117474),(nextval($117475),$117476,$117477,$117478,$117479,$117480,$117481,$117482,$117483,$117484,$117485,$117486,$117487,$117488),(nextval($117489),$117490,$117491,$117492,$117493,$117494,$117495,$117496,$117497,$117498,$117499,$117500,$117501,$117502),(nextval($117503),$117504,$117505,$117506,$117507,$117508,$117509,$117510,$117511,$117512,$117513,$117514,$117515,$117516),(nextval($117517),$117518,$117519,$117520,$117521,$117522,$117523,$117524,$117525,$117526,$117527,$117528,$117529,$117530),(nextval($117531),$117532,$117533,$117534,$117535,$117536,$117537,$117538,$117539,$117540,$117541,$117542,$117543,$117544),(nextval($117545),$117546,$117547,$117548,$117549,$117550,$117551,$117552,$117553,$117554,$117555,$117556,$117557,$117558),(nextval($117559),$117560,$117561,$117562,$117563,$117564,$117565,$117566,$117567,$117568,$117569,$117570,$117571,$117572),(nextval($117573),$117574,$117575,$117576,$117577,$117578,$117579,$117580,$117581,$117582,$117583,$117584,$117585,$117586),(nextval($117587),$117588,$117589,$117590,$117591,$117592,$117593,$117594,$117595,$117596,$117597,$117598,$117599,$117600),(nextval($117601),$117602,$117603,$117604,$117605,$117606,$117607,$117608,$117609,$117610,$117611,$117612,$117613,$117614),(nextval($117615),$117616,$117617,$117618,$117619,$117620,$117621,$117622,$117623,$117624,$117625,$117626,$117627,$117628),(nextval($117629),$117630,$117631,$117632,$117633,$117634,$117635,$117636,$117637,$117638,$117639,$117640,$117641,$117642),(nextval($117643),$117644,$117645,$117646,$117647,$117648,$117649,$117650,$117651,$117652,$117653,$117654,$117655,$117656),(nextval($117657),$117658,$117659,$117660,$117661,$117662,$117663,$117664,$117665,$117666,$117667,$117668,$117669,$117670),(nextval($117671),$117672,$117673,$117674,$117675,$117676,$117677,$117678,$117679,$117680,$117681,$117682,$117683,$117684),(nextval($117685),$117686,$117687,$117688,$117689,$117690,$117691,$117692,$117693,$117694,$117695,$117696,$117697,$117698),(nextval($117699),$117700,$117701,$117702,$117703,$117704,$117705,$117706,$117707,$117708,$117709,$117710,$117711,$117712),(nextval($117713),$117714,$117715,$117716,$117717,$117718,$117719,$117720,$117721,$117722,$117723,$117724,$117725,$117726),(nextval($117727),$117728,$117729,$117730,$117731,$117732,$117733,$117734,$117735,$117736,$117737,$117738,$117739,$117740),(nextval($117741),$117742,$117743,$117744,$117745,$117746,$117747,$117748,$117749,$117750,$117751,$117752,$117753,$117754),(nextval($117755),$117756,$117757,$117758,$117759,$117760,$117761,$117762,$117763,$117764,$117765,$117766,$117767,$117768),(nextval($117769),$117770,$117771,$117772,$117773,$117774,$117775,$117776,$117777,$117778,$117779,$117780,$117781,$117782),(nextval($117783),$117784,$117785,$117786,$117787,$117788,$117789,$117790,$117791,$117792,$117793,$117794,$117795,$117796),(nextval($117797),$117798,$117799,$117800,$117801,$117802,$117803,$117804,$117805,$117806,$117807,$117808,$117809,$117810),(nextval($117811),$117812,$117813,$117814,$117815,$117816,$117817,$117818,$117819,$117820,$117821,$117822,$117823,$117824),(nextval($117825),$117826,$117827,$117828,$117829,$117830,$117831,$117832,$117833,$117834,$117835,$117836,$117837,$117838),(nextval($117839),$117840,$117841,$117842,$117843,$117844,$117845,$117846,$117847,$117848,$117849,$117850,$117851,$117852),(nextval($117853),$117854,$117855,$117856,$117857,$117858,$117859,$117860,$117861,$117862,$117863,$117864,$117865,$117866),(nextval($117867),$117868,$117869,$117870,$117871,$117872,$117873,$117874,$117875,$117876,$117877,$117878,$117879,$117880),(nextval($117881),$117882,$117883,$117884,$117885,$117886,$117887,$117888,$117889,$117890,$117891,$117892,$117893,$117894),(nextval($117895),$117896,$117897,$117898,$117899,$117900,$117901,$117902,$117903,$117904,$117905,$117906,$117907,$117908),(nextval($117909),$117910,$117911,$117912,$117913,$117914,$117915,$117916,$117917,$117918,$117919,$117920,$117921,$117922),(nextval($117923),$117924,$117925,$117926,$117927,$117928,$117929,$117930,$117931,$117932,$117933,$117934,$117935,$117936),(nextval($117937),$117938,$117939,$117940,$117941,$117942,$117943,$117944,$117945,$117946,$117947,$117948,$117949,$117950),(nextval($117951),$117952,$117953,$117954,$117955,$117956,$117957,$117958,$117959,$117960,$117961,$117962,$117963,$117964),(nextval($117965),$117966,$117967,$117968,$117969,$117970,$117971,$117972,$117973,$117974,$117975,$117976,$117977,$117978),(nextval($117979),$117980,$117981,$117982,$117983,$117984,$117985,$117986,$117987,$117988,$117989,$117990,$117991,$117992),(nextval($117993),$117994,$117995,$117996,$117997,$117998,$117999,$118000,$118001,$118002,$118003,$118004,$118005,$118006),(nextval($118007),$118008,$118009,$118010,$118011,$118012,$118013,$118014,$118015,$118016,$118017,$118018,$118019,$118020),(nextval($118021),$118022,$118023,$118024,$118025,$118026,$118027,$118028,$118029,$118030,$118031,$118032,$118033,$118034),(nextval($118035),$118036,$118037,$118038,$118039,$118040,$118041,$118042,$118043,$118044,$118045,$118046,$118047,$118048),(nextval($118049),$118050,$118051,$118052,$118053,$118054,$118055,$118056,$118057,$118058,$118059,$118060,$118061,$118062),(nextval($118063),$118064,$118065,$118066,$118067,$118068,$118069,$118070,$118071,$118072,$118073,$118074,$118075,$118076),(nextval($118077),$118078,$118079,$118080,$118081,$118082,$118083,$118084,$118085,$118086,$118087,$118088,$118089,$118090),(nextval($118091),$118092,$118093,$118094,$118095,$118096,$118097,$118098,$118099,$118100,$118101,$118102,$118103,$118104),(nextval($118105),$118106,$118107,$118108,$118109,$118110,$118111,$118112,$118113,$118114,$118115,$118116,$118117,$118118),(nextval($118119),$118120,$118121,$118122,$118123,$118124,$118125,$118126,$118127,$118128,$118129,$118130,$118131,$118132),(nextval($118133),$118134,$118135,$118136,$118137,$118138,$118139,$118140,$118141,$118142,$118143,$118144,$118145,$118146),(nextval($118147),$118148,$118149,$118150,$118151,$118152,$118153,$118154,$118155,$118156,$118157,$118158,$118159,$118160),(nextval($118161),$118162,$118163,$118164,$118165,$118166,$118167,$118168,$118169,$118170,$118171,$118172,$118173,$118174),(nextval($118175),$118176,$118177,$118178,$118179,$118180,$118181,$118182,$118183,$118184,$118185,$118186,$118187,$118188),(nextval($118189),$118190,$118191,$118192,$118193,$118194,$118195,$118196,$118197,$118198,$118199,$118200,$118201,$118202),(nextval($118203),$118204,$118205,$118206,$118207,$118208,$118209,$118210,$118211,$118212,$118213,$118214,$118215,$118216),(nextval($118217),$118218,$118219,$118220,$118221,$118222,$118223,$118224,$118225,$118226,$118227,$118228,$118229,$118230),(nextval($118231),$118232,$118233,$118234,$118235,$118236,$118237,$118238,$118239,$118240,$118241,$118242,$118243,$118244),(nextval($118245),$118246,$118247,$118248,$118249,$118250,$118251,$118252,$118253,$118254,$118255,$118256,$118257,$118258),(nextval($118259),$118260,$118261,$118262,$118263,$118264,$118265,$118266,$118267,$118268,$118269,$118270,$118271,$118272),(nextval($118273),$118274,$118275,$118276,$118277,$118278,$118279,$118280,$118281,$118282,$118283,$118284,$118285,$118286),(nextval($118287),$118288,$118289,$118290,$118291,$118292,$118293,$118294,$118295,$118296,$118297,$118298,$118299,$118300),(nextval($118301),$118302,$118303,$118304,$118305,$118306,$118307,$118308,$118309,$118310,$118311,$118312,$118313,$118314),(nextval($118315),$118316,$118317,$118318,$118319,$118320,$118321,$118322,$118323,$118324,$118325,$118326,$118327,$118328),(nextval($118329),$118330,$118331,$118332,$118333,$118334,$118335,$118336,$118337,$118338,$118339,$118340,$118341,$118342),(nextval($118343),$118344,$118345,$118346,$118347,$118348,$118349,$118350,$118351,$118352,$118353,$118354,$118355,$118356),(nextval($118357),$118358,$118359,$118360,$118361,$118362,$118363,$118364,$118365,$118366,$118367,$118368,$118369,$118370),(nextval($118371),$118372,$118373,$118374,$118375,$118376,$118377,$118378,$118379,$118380,$118381,$118382,$118383,$118384),(nextval($118385),$118386,$118387,$118388,$118389,$118390,$118391,$118392,$118393,$118394,$118395,$118396,$118397,$118398),(nextval($118399),$118400,$118401,$118402,$118403,$118404,$118405,$118406,$118407,$118408,$118409,$118410,$118411,$118412),(nextval($118413),$118414,$118415,$118416,$118417,$118418,$118419,$118420,$118421,$118422,$118423,$118424,$118425,$118426),(nextval($118427),$118428,$118429,$118430,$118431,$118432,$118433,$118434,$118435,$118436,$118437,$118438,$118439,$118440),(nextval($118441),$118442,$118443,$118444,$118445,$118446,$118447,$118448,$118449,$118450,$118451,$118452,$118453,$118454),(nextval($118455),$118456,$118457,$118458,$118459,$118460,$118461,$118462,$118463,$118464,$118465,$118466,$118467,$118468),(nextval($118469),$118470,$118471,$118472,$118473,$118474,$118475,$118476,$118477,$118478,$118479,$118480,$118481,$118482),(nextval($118483),$118484,$118485,$118486,$118487,$118488,$118489,$118490,$118491,$118492,$118493,$118494,$118495,$118496),(nextval($118497),$118498,$118499,$118500,$118501,$118502,$118503,$118504,$118505,$118506,$118507,$118508,$118509,$118510),(nextval($118511),$118512,$118513,$118514,$118515,$118516,$118517,$118518,$118519,$118520,$118521,$118522,$118523,$118524),(nextval($118525),$118526,$118527,$118528,$118529,$118530,$118531,$118532,$118533,$118534,$118535,$118536,$118537,$118538),(nextval($118539),$118540,$118541,$118542,$118543,$118544,$118545,$118546,$118547,$118548,$118549,$118550,$118551,$118552),(nextval($118553),$118554,$118555,$118556,$118557,$118558,$118559,$118560,$118561,$118562,$118563,$118564,$118565,$118566),(nextval($118567),$118568,$118569,$118570,$118571,$118572,$118573,$118574,$118575,$118576,$118577,$118578,$118579,$118580),(nextval($118581),$118582,$118583,$118584,$118585,$118586,$118587,$118588,$118589,$118590,$118591,$118592,$118593,$118594),(nextval($118595),$118596,$118597,$118598,$118599,$118600,$118601,$118602,$118603,$118604,$118605,$118606,$118607,$118608),(nextval($118609),$118610,$118611,$118612,$118613,$118614,$118615,$118616,$118617,$118618,$118619,$118620,$118621,$118622),(nextval($118623),$118624,$118625,$118626,$118627,$118628,$118629,$118630,$118631,$118632,$118633,$118634,$118635,$118636),(nextval($118637),$118638,$118639,$118640,$118641,$118642,$118643,$118644,$118645,$118646,$118647,$118648,$118649,$118650),(nextval($118651),$118652,$118653,$118654,$118655,$118656,$118657,$118658,$118659,$118660,$118661,$118662,$118663,$118664),(nextval($118665),$118666,$118667,$118668,$118669,$118670,$118671,$118672,$118673,$118674,$118675,$118676,$118677,$118678),(nextval($118679),$118680,$118681,$118682,$118683,$118684,$118685,$118686,$118687,$118688,$118689,$118690,$118691,$118692),(nextval($118693),$118694,$118695,$118696,$118697,$118698,$118699,$118700,$118701,$118702,$118703,$118704,$118705,$118706),(nextval($118707),$118708,$118709,$118710,$118711,$118712,$118713,$118714,$118715,$118716,$118717,$118718,$118719,$118720),(nextval($118721),$118722,$118723,$118724,$118725,$118726,$118727,$118728,$118729,$118730,$118731,$118732,$118733,$118734),(nextval($118735),$118736,$118737,$118738,$118739,$118740,$118741,$118742,$118743,$118744,$118745,$118746,$118747,$118748),(nextval($118749),$118750,$118751,$118752,$118753,$118754,$118755,$118756,$118757,$118758,$118759,$118760,$118761,$118762),(nextval($118763),$118764,$118765,$118766,$118767,$118768,$118769,$118770,$118771,$118772,$118773,$118774,$118775,$118776),(nextval($118777),$118778,$118779,$118780,$118781,$118782,$118783,$118784,$118785,$118786,$118787,$118788,$118789,$118790),(nextval($118791),$118792,$118793,$118794,$118795,$118796,$118797,$118798,$118799,$118800,$118801,$118802,$118803,$118804),(nextval($118805),$118806,$118807,$118808,$118809,$118810,$118811,$118812,$118813,$118814,$118815,$118816,$118817,$118818),(nextval($118819),$118820,$118821,$118822,$118823,$118824,$118825,$118826,$118827,$118828,$118829,$118830,$118831,$118832),(nextval($118833),$118834,$118835,$118836,$118837,$118838,$118839,$118840,$118841,$118842,$118843,$118844,$118845,$118846),(nextval($118847),$118848,$118849,$118850,$118851,$118852,$118853,$118854,$118855,$118856,$118857,$118858,$118859,$118860),(nextval($118861),$118862,$118863,$118864,$118865,$118866,$118867,$118868,$118869,$118870,$118871,$118872,$118873,$118874),(nextval($118875),$118876,$118877,$118878,$118879,$118880,$118881,$118882,$118883,$118884,$118885,$118886,$118887,$118888),(nextval($118889),$118890,$118891,$118892,$118893,$118894,$118895,$118896,$118897,$118898,$118899,$118900,$118901,$118902),(nextval($118903),$118904,$118905,$118906,$118907,$118908,$118909,$118910,$118911,$118912,$118913,$118914,$118915,$118916),(nextval($118917),$118918,$118919,$118920,$118921,$118922,$118923,$118924,$118925,$118926,$118927,$118928,$118929,$118930),(nextval($118931),$118932,$118933,$118934,$118935,$118936,$118937,$118938,$118939,$118940,$118941,$118942,$118943,$118944),(nextval($118945),$118946,$118947,$118948,$118949,$118950,$118951,$118952,$118953,$118954,$118955,$118956,$118957,$118958),(nextval($118959),$118960,$118961,$118962,$118963,$118964,$118965,$118966,$118967,$118968,$118969,$118970,$118971,$118972),(nextval($118973),$118974,$118975,$118976,$118977,$118978,$118979,$118980,$118981,$118982,$118983,$118984,$118985,$118986),(nextval($118987),$118988,$118989,$118990,$118991,$118992,$118993,$118994,$118995,$118996,$118997,$118998,$118999,$119000),(nextval($119001),$119002,$119003,$119004,$119005,$119006,$119007,$119008,$119009,$119010,$119011,$119012,$119013,$119014),(nextval($119015),$119016,$119017,$119018,$119019,$119020,$119021,$119022,$119023,$119024,$119025,$119026,$119027,$119028),(nextval($119029),$119030,$119031,$119032,$119033,$119034,$119035,$119036,$119037,$119038,$119039,$119040,$119041,$119042),(nextval($119043),$119044,$119045,$119046,$119047,$119048,$119049,$119050,$119051,$119052,$119053,$119054,$119055,$119056),(nextval($119057),$119058,$119059,$119060,$119061,$119062,$119063,$119064,$119065,$119066,$119067,$119068,$119069,$119070),(nextval($119071),$119072,$119073,$119074,$119075,$119076,$119077,$119078,$119079,$119080,$119081,$119082,$119083,$119084),(nextval($119085),$119086,$119087,$119088,$119089,$119090,$119091,$119092,$119093,$119094,$119095,$119096,$119097,$119098),(nextval($119099),$119100,$119101,$119102,$119103,$119104,$119105,$119106,$119107,$119108,$119109,$119110,$119111,$119112),(nextval($119113),$119114,$119115,$119116,$119117,$119118,$119119,$119120,$119121,$119122,$119123,$119124,$119125,$119126),(nextval($119127),$119128,$119129,$119130,$119131,$119132,$119133,$119134,$119135,$119136,$119137,$119138,$119139,$119140),(nextval($119141),$119142,$119143,$119144,$119145,$119146,$119147,$119148,$119149,$119150,$119151,$119152,$119153,$119154),(nextval($119155),$119156,$119157,$119158,$119159,$119160,$119161,$119162,$119163,$119164,$119165,$119166,$119167,$119168),(nextval($119169),$119170,$119171,$119172,$119173,$119174,$119175,$119176,$119177,$119178,$119179,$119180,$119181,$119182),(nextval($119183),$119184,$119185,$119186,$119187,$119188,$119189,$119190,$119191,$119192,$119193,$119194,$119195,$119196),(nextval($119197),$119198,$119199,$119200,$119201,$119202,$119203,$119204,$119205,$119206,$119207,$119208,$119209,$119210),(nextval($119211),$119212,$119213,$119214,$119215,$119216,$119217,$119218,$119219,$119220,$119221,$119222,$119223,$119224),(nextval($119225),$119226,$119227,$119228,$119229,$119230,$119231,$119232,$119233,$119234,$119235,$119236,$119237,$119238),(nextval($119239),$119240,$119241,$119242,$119243,$119244,$119245,$119246,$119247,$119248,$119249,$119250,$119251,$119252),(nextval($119253),$119254,$119255,$119256,$119257,$119258,$119259,$119260,$119261,$119262,$119263,$119264,$119265,$119266),(nextval($119267),$119268,$119269,$119270,$119271,$119272,$119273,$119274,$119275,$119276,$119277,$119278,$119279,$119280),(nextval($119281),$119282,$119283,$119284,$119285,$119286,$119287,$119288,$119289,$119290,$119291,$119292,$119293,$119294),(nextval($119295),$119296,$119297,$119298,$119299,$119300,$119301,$119302,$119303,$119304,$119305,$119306,$119307,$119308),(nextval($119309),$119310,$119311,$119312,$119313,$119314,$119315,$119316,$119317,$119318,$119319,$119320,$119321,$119322),(nextval($119323),$119324,$119325,$119326,$119327,$119328,$119329,$119330,$119331,$119332,$119333,$119334,$119335,$119336),(nextval($119337),$119338,$119339,$119340,$119341,$119342,$119343,$119344,$119345,$119346,$119347,$119348,$119349,$119350),(nextval($119351),$119352,$119353,$119354,$119355,$119356,$119357,$119358,$119359,$119360,$119361,$119362,$119363,$119364),(nextval($119365),$119366,$119367,$119368,$119369,$119370,$119371,$119372,$119373,$119374,$119375,$119376,$119377,$119378),(nextval($119379),$119380,$119381,$119382,$119383,$119384,$119385,$119386,$119387,$119388,$119389,$119390,$119391,$119392),(nextval($119393),$119394,$119395,$119396,$119397,$119398,$119399,$119400,$119401,$119402,$119403,$119404,$119405,$119406),(nextval($119407),$119408,$119409,$119410,$119411,$119412,$119413,$119414,$119415,$119416,$119417,$119418,$119419,$119420),(nextval($119421),$119422,$119423,$119424,$119425,$119426,$119427,$119428,$119429,$119430,$119431,$119432,$119433,$119434),(nextval($119435),$119436,$119437,$119438,$119439,$119440,$119441,$119442,$119443,$119444,$119445,$119446,$119447,$119448),(nextval($119449),$119450,$119451,$119452,$119453,$119454,$119455,$119456,$119457,$119458,$119459,$119460,$119461,$119462),(nextval($119463),$119464,$119465,$119466,$119467,$119468,$119469,$119470,$119471,$119472,$119473,$119474,$119475,$119476),(nextval($119477),$119478,$119479,$119480,$119481,$119482,$119483,$119484,$119485,$119486,$119487,$119488,$119489,$119490),(nextval($119491),$119492,$119493,$119494,$119495,$119496,$119497,$119498,$119499,$119500,$119501,$119502,$119503,$119504),(nextval($119505),$119506,$119507,$119508,$119509,$119510,$119511,$119512,$119513,$119514,$119515,$119516,$119517,$119518),(nextval($119519),$119520,$119521,$119522,$119523,$119524,$119525,$119526,$119527,$119528,$119529,$119530,$119531,$119532),(nextval($119533),$119534,$119535,$119536,$119537,$119538,$119539,$119540,$119541,$119542,$119543,$119544,$119545,$119546),(nextval($119547),$119548,$119549,$119550,$119551,$119552,$119553,$119554,$119555,$119556,$119557,$119558,$119559,$119560),(nextval($119561),$119562,$119563,$119564,$119565,$119566,$119567,$119568,$119569,$119570,$119571,$119572,$119573,$119574),(nextval($119575),$119576,$119577,$119578,$119579,$119580,$119581,$119582,$119583,$119584,$119585,$119586,$119587,$119588),(nextval($119589),$119590,$119591,$119592,$119593,$119594,$119595,$119596,$119597,$119598,$119599,$119600,$119601,$119602),(nextval($119603),$119604,$119605,$119606,$119607,$119608,$119609,$119610,$119611,$119612,$119613,$119614,$119615,$119616),(nextval($119617),$119618,$119619,$119620,$119621,$119622,$119623,$119624,$119625,$119626,$119627,$119628,$119629,$119630),(nextval($119631),$119632,$119633,$119634,$119635,$119636,$119637,$119638,$119639,$119640,$119641,$119642,$119643,$119644),(nextval($119645),$119646,$119647,$119648,$119649,$119650,$119651,$119652,$119653,$119654,$119655,$119656,$119657,$119658),(nextval($119659),$119660,$119661,$119662,$119663,$119664,$119665,$119666,$119667,$119668,$119669,$119670,$119671,$119672),(nextval($119673),$119674,$119675,$119676,$119677,$119678,$119679,$119680,$119681,$119682,$119683,$119684,$119685,$119686),(nextval($119687),$119688,$119689,$119690,$119691,$119692,$119693,$119694,$119695,$119696,$119697,$119698,$119699,$119700),(nextval($119701),$119702,$119703,$119704,$119705,$119706,$119707,$119708,$119709,$119710,$119711,$119712,$119713,$119714),(nextval($119715),$119716,$119717,$119718,$119719,$119720,$119721,$119722,$119723,$119724,$119725,$119726,$119727,$119728),(nextval($119729),$119730,$119731,$119732,$119733,$119734,$119735,$119736,$119737,$119738,$119739,$119740,$119741,$119742),(nextval($119743),$119744,$119745,$119746,$119747,$119748,$119749,$119750,$119751,$119752,$119753,$119754,$119755,$119756),(nextval($119757),$119758,$119759,$119760,$119761,$119762,$119763,$119764,$119765,$119766,$119767,$119768,$119769,$119770),(nextval($119771),$119772,$119773,$119774,$119775,$119776,$119777,$119778,$119779,$119780,$119781,$119782,$119783,$119784),(nextval($119785),$119786,$119787,$119788,$119789,$119790,$119791,$119792,$119793,$119794,$119795,$119796,$119797,$119798),(nextval($119799),$119800,$119801,$119802,$119803,$119804,$119805,$119806,$119807,$119808,$119809,$119810,$119811,$119812),(nextval($119813),$119814,$119815,$119816,$119817,$119818,$119819,$119820,$119821,$119822,$119823,$119824,$119825,$119826),(nextval($119827),$119828,$119829,$119830,$119831,$119832,$119833,$119834,$119835,$119836,$119837,$119838,$119839,$119840),(nextval($119841),$119842,$119843,$119844,$119845,$119846,$119847,$119848,$119849,$119850,$119851,$119852,$119853,$119854),(nextval($119855),$119856,$119857,$119858,$119859,$119860,$119861,$119862,$119863,$119864,$119865,$119866,$119867,$119868),(nextval($119869),$119870,$119871,$119872,$119873,$119874,$119875,$119876,$119877,$119878,$119879,$119880,$119881,$119882),(nextval($119883),$119884,$119885,$119886,$119887,$119888,$119889,$119890,$119891,$119892,$119893,$119894,$119895,$119896),(nextval($119897),$119898,$119899,$119900,$119901,$119902,$119903,$119904,$119905,$119906,$119907,$119908,$119909,$119910),(nextval($119911),$119912,$119913,$119914,$119915,$119916,$119917,$119918,$119919,$119920,$119921,$119922,$119923,$119924),(nextval($119925),$119926,$119927,$119928,$119929,$119930,$119931,$119932,$119933,$119934,$119935,$119936,$119937,$119938),(nextval($119939),$119940,$119941,$119942,$119943,$119944,$119945,$119946,$119947,$119948,$119949,$119950,$119951,$119952),(nextval($119953),$119954,$119955,$119956,$119957,$119958,$119959,$119960,$119961,$119962,$119963,$119964,$119965,$119966),(nextval($119967),$119968,$119969,$119970,$119971,$119972,$119973,$119974,$119975,$119976,$119977,$119978,$119979,$119980),(nextval($119981),$119982,$119983,$119984,$119985,$119986,$119987,$119988,$119989,$119990,$119991,$119992,$119993,$119994),(nextval($119995),$119996,$119997,$119998,$119999,$120000,$120001,$120002,$120003,$120004,$120005,$120006,$120007,$120008),(nextval($120009),$120010,$120011,$120012,$120013,$120014,$120015,$120016,$120017,$120018,$120019,$120020,$120021,$120022),(nextval($120023),$120024,$120025,$120026,$120027,$120028,$120029,$120030,$120031,$120032,$120033,$120034,$120035,$120036),(nextval($120037),$120038,$120039,$120040,$120041,$120042,$120043,$120044,$120045,$120046,$120047,$120048,$120049,$120050),(nextval($120051),$120052,$120053,$120054,$120055,$120056,$120057,$120058,$120059,$120060,$120061,$120062,$120063,$120064),(nextval($120065),$120066,$120067,$120068,$120069,$120070,$120071,$120072,$120073,$120074,$120075,$120076,$120077,$120078),(nextval($120079),$120080,$120081,$120082,$120083,$120084,$120085,$120086,$120087,$120088,$120089,$120090,$120091,$120092),(nextval($120093),$120094,$120095,$120096,$120097,$120098,$120099,$120100,$120101,$120102,$120103,$120104,$120105,$120106),(nextval($120107),$120108,$120109,$120110,$120111,$120112,$120113,$120114,$120115,$120116,$120117,$120118,$120119,$120120),(nextval($120121),$120122,$120123,$120124,$120125,$120126,$120127,$120128,$120129,$120130,$120131,$120132,$120133,$120134),(nextval($120135),$120136,$120137,$120138,$120139,$120140,$120141,$120142,$120143,$120144,$120145,$120146,$120147,$120148),(nextval($120149),$120150,$120151,$120152,$120153,$120154,$120155,$120156,$120157,$120158,$120159,$120160,$120161,$120162),(nextval($120163),$120164,$120165,$120166,$120167,$120168,$120169,$120170,$120171,$120172,$120173,$120174,$120175,$120176),(nextval($120177),$120178,$120179,$120180,$120181,$120182,$120183,$120184,$120185,$120186,$120187,$120188,$120189,$120190),(nextval($120191),$120192,$120193,$120194,$120195,$120196,$120197,$120198,$120199,$120200,$120201,$120202,$120203,$120204),(nextval($120205),$120206,$120207,$120208,$120209,$120210,$120211,$120212,$120213,$120214,$120215,$120216,$120217,$120218),(nextval($120219),$120220,$120221,$120222,$120223,$120224,$120225,$120226,$120227,$120228,$120229,$120230,$120231,$120232),(nextval($120233),$120234,$120235,$120236,$120237,$120238,$120239,$120240,$120241,$120242,$120243,$120244,$120245,$120246),(nextval($120247),$120248,$120249,$120250,$120251,$120252,$120253,$120254,$120255,$120256,$120257,$120258,$120259,$120260),(nextval($120261),$120262,$120263,$120264,$120265,$120266,$120267,$120268,$120269,$120270,$120271,$120272,$120273,$120274),(nextval($120275),$120276,$120277,$120278,$120279,$120280,$120281,$120282,$120283,$120284,$120285,$120286,$120287,$120288),(nextval($120289),$120290,$120291,$120292,$120293,$120294,$120295,$120296,$120297,$120298,$120299,$120300,$120301,$120302),(nextval($120303),$120304,$120305,$120306,$120307,$120308,$120309,$120310,$120311,$120312,$120313,$120314,$120315,$120316),(nextval($120317),$120318,$120319,$120320,$120321,$120322,$120323,$120324,$120325,$120326,$120327,$120328,$120329,$120330),(nextval($120331),$120332,$120333,$120334,$120335,$120336,$120337,$120338,$120339,$120340,$120341,$120342,$120343,$120344),(nextval($120345),$120346,$120347,$120348,$120349,$120350,$120351,$120352,$120353,$120354,$120355,$120356,$120357,$120358),(nextval($120359),$120360,$120361,$120362,$120363,$120364,$120365,$120366,$120367,$120368,$120369,$120370,$120371,$120372),(nextval($120373),$120374,$120375,$120376,$120377,$120378,$120379,$120380,$120381,$120382,$120383,$120384,$120385,$120386),(nextval($120387),$120388,$120389,$120390,$120391,$120392,$120393,$120394,$120395,$120396,$120397,$120398,$120399,$120400),(nextval($120401),$120402,$120403,$120404,$120405,$120406,$120407,$120408,$120409,$120410,$120411,$120412,$120413,$120414),(nextval($120415),$120416,$120417,$120418,$120419,$120420,$120421,$120422,$120423,$120424,$120425,$120426,$120427,$120428),(nextval($120429),$120430,$120431,$120432,$120433,$120434,$120435,$120436,$120437,$120438,$120439,$120440,$120441,$120442),(nextval($120443),$120444,$120445,$120446,$120447,$120448,$120449,$120450,$120451,$120452,$120453,$120454,$120455,$120456),(nextval($120457),$120458,$120459,$120460,$120461,$120462,$120463,$120464,$120465,$120466,$120467,$120468,$120469,$120470),(nextval($120471),$120472,$120473,$120474,$120475,$120476,$120477,$120478,$120479,$120480,$120481,$120482,$120483,$120484),(nextval($120485),$120486,$120487,$120488,$120489,$120490,$120491,$120492,$120493,$120494,$120495,$120496,$120497,$120498),(nextval($120499),$120500,$120501,$120502,$120503,$120504,$120505,$120506,$120507,$120508,$120509,$120510,$120511,$120512),(nextval($120513),$120514,$120515,$120516,$120517,$120518,$120519,$120520,$120521,$120522,$120523,$120524,$120525,$120526),(nextval($120527),$120528,$120529,$120530,$120531,$120532,$120533,$120534,$120535,$120536,$120537,$120538,$120539,$120540),(nextval($120541),$120542,$120543,$120544,$120545,$120546,$120547,$120548,$120549,$120550,$120551,$120552,$120553,$120554),(nextval($120555),$120556,$120557,$120558,$120559,$120560,$120561,$120562,$120563,$120564,$120565,$120566,$120567,$120568),(nextval($120569),$120570,$120571,$120572,$120573,$120574,$120575,$120576,$120577,$120578,$120579,$120580,$120581,$120582),(nextval($120583),$120584,$120585,$120586,$120587,$120588,$120589,$120590,$120591,$120592,$120593,$120594,$120595,$120596),(nextval($120597),$120598,$120599,$120600,$120601,$120602,$120603,$120604,$120605,$120606,$120607,$120608,$120609,$120610),(nextval($120611),$120612,$120613,$120614,$120615,$120616,$120617,$120618,$120619,$120620,$120621,$120622,$120623,$120624),(nextval($120625),$120626,$120627,$120628,$120629,$120630,$120631,$120632,$120633,$120634,$120635,$120636,$120637,$120638),(nextval($120639),$120640,$120641,$120642,$120643,$120644,$120645,$120646,$120647,$120648,$120649,$120650,$120651,$120652),(nextval($120653),$120654,$120655,$120656,$120657,$120658,$120659,$120660,$120661,$120662,$120663,$120664,$120665,$120666),(nextval($120667),$120668,$120669,$120670,$120671,$120672,$120673,$120674,$120675,$120676,$120677,$120678,$120679,$120680),(nextval($120681),$120682,$120683,$120684,$120685,$120686,$120687,$120688,$120689,$120690,$120691,$120692,$120693,$120694),(nextval($120695),$120696,$120697,$120698,$120699,$120700,$120701,$120702,$120703,$120704,$120705,$120706,$120707,$120708),(nextval($120709),$120710,$120711,$120712,$120713,$120714,$120715,$120716,$120717,$120718,$120719,$120720,$120721,$120722),(nextval($120723),$120724,$120725,$120726,$120727,$120728,$120729,$120730,$120731,$120732,$120733,$120734,$120735,$120736),(nextval($120737),$120738,$120739,$120740,$120741,$120742,$120743,$120744,$120745,$120746,$120747,$120748,$120749,$120750),(nextval($120751),$120752,$120753,$120754,$120755,$120756,$120757,$120758,$120759,$120760,$120761,$120762,$120763,$120764),(nextval($120765),$120766,$120767,$120768,$120769,$120770,$120771,$120772,$120773,$120774,$120775,$120776,$120777,$120778),(nextval($120779),$120780,$120781,$120782,$120783,$120784,$120785,$120786,$120787,$120788,$120789,$120790,$120791,$120792),(nextval($120793),$120794,$120795,$120796,$120797,$120798,$120799,$120800,$120801,$120802,$120803,$120804,$120805,$120806),(nextval($120807),$120808,$120809,$120810,$120811,$120812,$120813,$120814,$120815,$120816,$120817,$120818,$120819,$120820),(nextval($120821),$120822,$120823,$120824,$120825,$120826,$120827,$120828,$120829,$120830,$120831,$120832,$120833,$120834),(nextval($120835),$120836,$120837,$120838,$120839,$120840,$120841,$120842,$120843,$120844,$120845,$120846,$120847,$120848),(nextval($120849),$120850,$120851,$120852,$120853,$120854,$120855,$120856,$120857,$120858,$120859,$120860,$120861,$120862),(nextval($120863),$120864,$120865,$120866,$120867,$120868,$120869,$120870,$120871,$120872,$120873,$120874,$120875,$120876),(nextval($120877),$120878,$120879,$120880,$120881,$120882,$120883,$120884,$120885,$120886,$120887,$120888,$120889,$120890),(nextval($120891),$120892,$120893,$120894,$120895,$120896,$120897,$120898,$120899,$120900,$120901,$120902,$120903,$120904),(nextval($120905),$120906,$120907,$120908,$120909,$120910,$120911,$120912,$120913,$120914,$120915,$120916,$120917,$120918),(nextval($120919),$120920,$120921,$120922,$120923,$120924,$120925,$120926,$120927,$120928,$120929,$120930,$120931,$120932),(nextval($120933),$120934,$120935,$120936,$120937,$120938,$120939,$120940,$120941,$120942,$120943,$120944,$120945,$120946),(nextval($120947),$120948,$120949,$120950,$120951,$120952,$120953,$120954,$120955,$120956,$120957,$120958,$120959,$120960),(nextval($120961),$120962,$120963,$120964,$120965,$120966,$120967,$120968,$120969,$120970,$120971,$120972,$120973,$120974),(nextval($120975),$120976,$120977,$120978,$120979,$120980,$120981,$120982,$120983,$120984,$120985,$120986,$120987,$120988),(nextval($120989),$120990,$120991,$120992,$120993,$120994,$120995,$120996,$120997,$120998,$120999,$121000,$121001,$121002),(nextval($121003),$121004,$121005,$121006,$121007,$121008,$121009,$121010,$121011,$121012,$121013,$121014,$121015,$121016),(nextval($121017),$121018,$121019,$121020,$121021,$121022,$121023,$121024,$121025,$121026,$121027,$121028,$121029,$121030),(nextval($121031),$121032,$121033,$121034,$121035,$121036,$121037,$121038,$121039,$121040,$121041,$121042,$121043,$121044),(nextval($121045),$121046,$121047,$121048,$121049,$121050,$121051,$121052,$121053,$121054,$121055,$121056,$121057,$121058),(nextval($121059),$121060,$121061,$121062,$121063,$121064,$121065,$121066,$121067,$121068,$121069,$121070,$121071,$121072),(nextval($121073),$121074,$121075,$121076,$121077,$121078,$121079,$121080,$121081,$121082,$121083,$121084,$121085,$121086),(nextval($121087),$121088,$121089,$121090,$121091,$121092,$121093,$121094,$121095,$121096,$121097,$121098,$121099,$121100),(nextval($121101),$121102,$121103,$121104,$121105,$121106,$121107,$121108,$121109,$121110,$121111,$121112,$121113,$121114),(nextval($121115),$121116,$121117,$121118,$121119,$121120,$121121,$121122,$121123,$121124,$121125,$121126,$121127,$121128),(nextval($121129),$121130,$121131,$121132,$121133,$121134,$121135,$121136,$121137,$121138,$121139,$121140,$121141,$121142),(nextval($121143),$121144,$121145,$121146,$121147,$121148,$121149,$121150,$121151,$121152,$121153,$121154,$121155,$121156),(nextval($121157),$121158,$121159,$121160,$121161,$121162,$121163,$121164,$121165,$121166,$121167,$121168,$121169,$121170),(nextval($121171),$121172,$121173,$121174,$121175,$121176,$121177,$121178,$121179,$121180,$121181,$121182,$121183,$121184),(nextval($121185),$121186,$121187,$121188,$121189,$121190,$121191,$121192,$121193,$121194,$121195,$121196,$121197,$121198),(nextval($121199),$121200,$121201,$121202,$121203,$121204,$121205,$121206,$121207,$121208,$121209,$121210,$121211,$121212),(nextval($121213),$121214,$121215,$121216,$121217,$121218,$121219,$121220,$121221,$121222,$121223,$121224,$121225,$121226),(nextval($121227),$121228,$121229,$121230,$121231,$121232,$121233,$121234,$121235,$121236,$121237,$121238,$121239,$121240),(nextval($121241),$121242,$121243,$121244,$121245,$121246,$121247,$121248,$121249,$121250,$121251,$121252,$121253,$121254),(nextval($121255),$121256,$121257,$121258,$121259,$121260,$121261,$121262,$121263,$121264,$121265,$121266,$121267,$121268),(nextval($121269),$121270,$121271,$121272,$121273,$121274,$121275,$121276,$121277,$121278,$121279,$121280,$121281,$121282),(nextval($121283),$121284,$121285,$121286,$121287,$121288,$121289,$121290,$121291,$121292,$121293,$121294,$121295,$121296),(nextval($121297),$121298,$121299,$121300,$121301,$121302,$121303,$121304,$121305,$121306,$121307,$121308,$121309,$121310),(nextval($121311),$121312,$121313,$121314,$121315,$121316,$121317,$121318,$121319,$121320,$121321,$121322,$121323,$121324),(nextval($121325),$121326,$121327,$121328,$121329,$121330,$121331,$121332,$121333,$121334,$121335,$121336,$121337,$121338),(nextval($121339),$121340,$121341,$121342,$121343,$121344,$121345,$121346,$121347,$121348,$121349,$121350,$121351,$121352),(nextval($121353),$121354,$121355,$121356,$121357,$121358,$121359,$121360,$121361,$121362,$121363,$121364,$121365,$121366),(nextval($121367),$121368,$121369,$121370,$121371,$121372,$121373,$121374,$121375,$121376,$121377,$121378,$121379,$121380),(nextval($121381),$121382,$121383,$121384,$121385,$121386,$121387,$121388,$121389,$121390,$121391,$121392,$121393,$121394),(nextval($121395),$121396,$121397,$121398,$121399,$121400,$121401,$121402,$121403,$121404,$121405,$121406,$121407,$121408),(nextval($121409),$121410,$121411,$121412,$121413,$121414,$121415,$121416,$121417,$121418,$121419,$121420,$121421,$121422),(nextval($121423),$121424,$121425,$121426,$121427,$121428,$121429,$121430,$121431,$121432,$121433,$121434,$121435,$121436),(nextval($121437),$121438,$121439,$121440,$121441,$121442,$121443,$121444,$121445,$121446,$121447,$121448,$121449,$121450),(nextval($121451),$121452,$121453,$121454,$121455,$121456,$121457,$121458,$121459,$121460,$121461,$121462,$121463,$121464),(nextval($121465),$121466,$121467,$121468,$121469,$121470,$121471,$121472,$121473,$121474,$121475,$121476,$121477,$121478),(nextval($121479),$121480,$121481,$121482,$121483,$121484,$121485,$121486,$121487,$121488,$121489,$121490,$121491,$121492),(nextval($121493),$121494,$121495,$121496,$121497,$121498,$121499,$121500,$121501,$121502,$121503,$121504,$121505,$121506),(nextval($121507),$121508,$121509,$121510,$121511,$121512,$121513,$121514,$121515,$121516,$121517,$121518,$121519,$121520),(nextval($121521),$121522,$121523,$121524,$121525,$121526,$121527,$121528,$121529,$121530,$121531,$121532,$121533,$121534),(nextval($121535),$121536,$121537,$121538,$121539,$121540,$121541,$121542,$121543,$121544,$121545,$121546,$121547,$121548),(nextval($121549),$121550,$121551,$121552,$121553,$121554,$121555,$121556,$121557,$121558,$121559,$121560,$121561,$121562),(nextval($121563),$121564,$121565,$121566,$121567,$121568,$121569,$121570,$121571,$121572,$121573,$121574,$121575,$121576),(nextval($121577),$121578,$121579,$121580,$121581,$121582,$121583,$121584,$121585,$121586,$121587,$121588,$121589,$121590),(nextval($121591),$121592,$121593,$121594,$121595,$121596,$121597,$121598,$121599,$121600,$121601,$121602,$121603,$121604),(nextval($121605),$121606,$121607,$121608,$121609,$121610,$121611,$121612,$121613,$121614,$121615,$121616,$121617,$121618),(nextval($121619),$121620,$121621,$121622,$121623,$121624,$121625,$121626,$121627,$121628,$121629,$121630,$121631,$121632),(nextval($121633),$121634,$121635,$121636,$121637,$121638,$121639,$121640,$121641,$121642,$121643,$121644,$121645,$121646),(nextval($121647),$121648,$121649,$121650,$121651,$121652,$121653,$121654,$121655,$121656,$121657,$121658,$121659,$121660),(nextval($121661),$121662,$121663,$121664,$121665,$121666,$121667,$121668,$121669,$121670,$121671,$121672,$121673,$121674),(nextval($121675),$121676,$121677,$121678,$121679,$121680,$121681,$121682,$121683,$121684,$121685,$121686,$121687,$121688),(nextval($121689),$121690,$121691,$121692,$121693,$121694,$121695,$121696,$121697,$121698,$121699,$121700,$121701,$121702),(nextval($121703),$121704,$121705,$121706,$121707,$121708,$121709,$121710,$121711,$121712,$121713,$121714,$121715,$121716),(nextval($121717),$121718,$121719,$121720,$121721,$121722,$121723,$121724,$121725,$121726,$121727,$121728,$121729,$121730),(nextval($121731),$121732,$121733,$121734,$121735,$121736,$121737,$121738,$121739,$121740,$121741,$121742,$121743,$121744),(nextval($121745),$121746,$121747,$121748,$121749,$121750,$121751,$121752,$121753,$121754,$121755,$121756,$121757,$121758),(nextval($121759),$121760,$121761,$121762,$121763,$121764,$121765,$121766,$121767,$121768,$121769,$121770,$121771,$121772),(nextval($121773),$121774,$121775,$121776,$121777,$121778,$121779,$121780,$121781,$121782,$121783,$121784,$121785,$121786),(nextval($121787),$121788,$121789,$121790,$121791,$121792,$121793,$121794,$121795,$121796,$121797,$121798,$121799,$121800),(nextval($121801),$121802,$121803,$121804,$121805,$121806,$121807,$121808,$121809,$121810,$121811,$121812,$121813,$121814),(nextval($121815),$121816,$121817,$121818,$121819,$121820,$121821,$121822,$121823,$121824,$121825,$121826,$121827,$121828),(nextval($121829),$121830,$121831,$121832,$121833,$121834,$121835,$121836,$121837,$121838,$121839,$121840,$121841,$121842),(nextval($121843),$121844,$121845,$121846,$121847,$121848,$121849,$121850,$121851,$121852,$121853,$121854,$121855,$121856),(nextval($121857),$121858,$121859,$121860,$121861,$121862,$121863,$121864,$121865,$121866,$121867,$121868,$121869,$121870),(nextval($121871),$121872,$121873,$121874,$121875,$121876,$121877,$121878,$121879,$121880,$121881,$121882,$121883,$121884),(nextval($121885),$121886,$121887,$121888,$121889,$121890,$121891,$121892,$121893,$121894,$121895,$121896,$121897,$121898),(nextval($121899),$121900,$121901,$121902,$121903,$121904,$121905,$121906,$121907,$121908,$121909,$121910,$121911,$121912),(nextval($121913),$121914,$121915,$121916,$121917,$121918,$121919,$121920,$121921,$121922,$121923,$121924,$121925,$121926),(nextval($121927),$121928,$121929,$121930,$121931,$121932,$121933,$121934,$121935,$121936,$121937,$121938,$121939,$121940),(nextval($121941),$121942,$121943,$121944,$121945,$121946,$121947,$121948,$121949,$121950,$121951,$121952,$121953,$121954),(nextval($121955),$121956,$121957,$121958,$121959,$121960,$121961,$121962,$121963,$121964,$121965,$121966,$121967,$121968),(nextval($121969),$121970,$121971,$121972,$121973,$121974,$121975,$121976,$121977,$121978,$121979,$121980,$121981,$121982),(nextval($121983),$121984,$121985,$121986,$121987,$121988,$121989,$121990,$121991,$121992,$121993,$121994,$121995,$121996),(nextval($121997),$121998,$121999,$122000,$122001,$122002,$122003,$122004,$122005,$122006,$122007,$122008,$122009,$122010),(nextval($122011),$122012,$122013,$122014,$122015,$122016,$122017,$122018,$122019,$122020,$122021,$122022,$122023,$122024),(nextval($122025),$122026,$122027,$122028,$122029,$122030,$122031,$122032,$122033,$122034,$122035,$122036,$122037,$122038),(nextval($122039),$122040,$122041,$122042,$122043,$122044,$122045,$122046,$122047,$122048,$122049,$122050,$122051,$122052),(nextval($122053),$122054,$122055,$122056,$122057,$122058,$122059,$122060,$122061,$122062,$122063,$122064,$122065,$122066),(nextval($122067),$122068,$122069,$122070,$122071,$122072,$122073,$122074,$122075,$122076,$122077,$122078,$122079,$122080),(nextval($122081),$122082,$122083,$122084,$122085,$122086,$122087,$122088,$122089,$122090,$122091,$122092,$122093,$122094),(nextval($122095),$122096,$122097,$122098,$122099,$122100,$122101,$122102,$122103,$122104,$122105,$122106,$122107,$122108),(nextval($122109),$122110,$122111,$122112,$122113,$122114,$122115,$122116,$122117,$122118,$122119,$122120,$122121,$122122),(nextval($122123),$122124,$122125,$122126,$122127,$122128,$122129,$122130,$122131,$122132,$122133,$122134,$122135,$122136),(nextval($122137),$122138,$122139,$122140,$122141,$122142,$122143,$122144,$122145,$122146,$122147,$122148,$122149,$122150),(nextval($122151),$122152,$122153,$122154,$122155,$122156,$122157,$122158,$122159,$122160,$122161,$122162,$122163,$122164),(nextval($122165),$122166,$122167,$122168,$122169,$122170,$122171,$122172,$122173,$122174,$122175,$122176,$122177,$122178),(nextval($122179),$122180,$122181,$122182,$122183,$122184,$122185,$122186,$122187,$122188,$122189,$122190,$122191,$122192),(nextval($122193),$122194,$122195,$122196,$122197,$122198,$122199,$122200,$122201,$122202,$122203,$122204,$122205,$122206),(nextval($122207),$122208,$122209,$122210,$122211,$122212,$122213,$122214,$122215,$122216,$122217,$122218,$122219,$122220),(nextval($122221),$122222,$122223,$122224,$122225,$122226,$122227,$122228,$122229,$122230,$122231,$122232,$122233,$122234),(nextval($122235),$122236,$122237,$122238,$122239,$122240,$122241,$122242,$122243,$122244,$122245,$122246,$122247,$122248),(nextval($122249),$122250,$122251,$122252,$122253,$122254,$122255,$122256,$122257,$122258,$122259,$122260,$122261,$122262),(nextval($122263),$122264,$122265,$122266,$122267,$122268,$122269,$122270,$122271,$122272,$122273,$122274,$122275,$122276),(nextval($122277),$122278,$122279,$122280,$122281,$122282,$122283,$122284,$122285,$122286,$122287,$122288,$122289,$122290),(nextval($122291),$122292,$122293,$122294,$122295,$122296,$122297,$122298,$122299,$122300,$122301,$122302,$122303,$122304),(nextval($122305),$122306,$122307,$122308,$122309,$122310,$122311,$122312,$122313,$122314,$122315,$122316,$122317,$122318),(nextval($122319),$122320,$122321,$122322,$122323,$122324,$122325,$122326,$122327,$122328,$122329,$122330,$122331,$122332),(nextval($122333),$122334,$122335,$122336,$122337,$122338,$122339,$122340,$122341,$122342,$122343,$122344,$122345,$122346),(nextval($122347),$122348,$122349,$122350,$122351,$122352,$122353,$122354,$122355,$122356,$122357,$122358,$122359,$122360),(nextval($122361),$122362,$122363,$122364,$122365,$122366,$122367,$122368,$122369,$122370,$122371,$122372,$122373,$122374),(nextval($122375),$122376,$122377,$122378,$122379,$122380,$122381,$122382,$122383,$122384,$122385,$122386,$122387,$122388),(nextval($122389),$122390,$122391,$122392,$122393,$122394,$122395,$122396,$122397,$122398,$122399,$122400,$122401,$122402),(nextval($122403),$122404,$122405,$122406,$122407,$122408,$122409,$122410,$122411,$122412,$122413,$122414,$122415,$122416),(nextval($122417),$122418,$122419,$122420,$122421,$122422,$122423,$122424,$122425,$122426,$122427,$122428,$122429,$122430),(nextval($122431),$122432,$122433,$122434,$122435,$122436,$122437,$122438,$122439,$122440,$122441,$122442,$122443,$122444),(nextval($122445),$122446,$122447,$122448,$122449,$122450,$122451,$122452,$122453,$122454,$122455,$122456,$122457,$122458),(nextval($122459),$122460,$122461,$122462,$122463,$122464,$122465,$122466,$122467,$122468,$122469,$122470,$122471,$122472),(nextval($122473),$122474,$122475,$122476,$122477,$122478,$122479,$122480,$122481,$122482,$122483,$122484,$122485,$122486),(nextval($122487),$122488,$122489,$122490,$122491,$122492,$122493,$122494,$122495,$122496,$122497,$122498,$122499,$122500),(nextval($122501),$122502,$122503,$122504,$122505,$122506,$122507,$122508,$122509,$122510,$122511,$122512,$122513,$122514),(nextval($122515),$122516,$122517,$122518,$122519,$122520,$122521,$122522,$122523,$122524,$122525,$122526,$122527,$122528),(nextval($122529),$122530,$122531,$122532,$122533,$122534,$122535,$122536,$122537,$122538,$122539,$122540,$122541,$122542),(nextval($122543),$122544,$122545,$122546,$122547,$122548,$122549,$122550,$122551,$122552,$122553,$122554,$122555,$122556),(nextval($122557),$122558,$122559,$122560,$122561,$122562,$122563,$122564,$122565,$122566,$122567,$122568,$122569,$122570),(nextval($122571),$122572,$122573,$122574,$122575,$122576,$122577,$122578,$122579,$122580,$122581,$122582,$122583,$122584),(nextval($122585),$122586,$122587,$122588,$122589,$122590,$122591,$122592,$122593,$122594,$122595,$122596,$122597,$122598),(nextval($122599),$122600,$122601,$122602,$122603,$122604,$122605,$122606,$122607,$122608,$122609,$122610,$122611,$122612),(nextval($122613),$122614,$122615,$122616,$122617,$122618,$122619,$122620,$122621,$122622,$122623,$122624,$122625,$122626),(nextval($122627),$122628,$122629,$122630,$122631,$122632,$122633,$122634,$122635,$122636,$122637,$122638,$122639,$122640),(nextval($122641),$122642,$122643,$122644,$122645,$122646,$122647,$122648,$122649,$122650,$122651,$122652,$122653,$122654),(nextval($122655),$122656,$122657,$122658,$122659,$122660,$122661,$122662,$122663,$122664,$122665,$122666,$122667,$122668),(nextval($122669),$122670,$122671,$122672,$122673,$122674,$122675,$122676,$122677,$122678,$122679,$122680,$122681,$122682),(nextval($122683),$122684,$122685,$122686,$122687,$122688,$122689,$122690,$122691,$122692,$122693,$122694,$122695,$122696),(nextval($122697),$122698,$122699,$122700,$122701,$122702,$122703,$122704,$122705,$122706,$122707,$122708,$122709,$122710),(nextval($122711),$122712,$122713,$122714,$122715,$122716,$122717,$122718,$122719,$122720,$122721,$122722,$122723,$122724),(nextval($122725),$122726,$122727,$122728,$122729,$122730,$122731,$122732,$122733,$122734,$122735,$122736,$122737,$122738),(nextval($122739),$122740,$122741,$122742,$122743,$122744,$122745,$122746,$122747,$122748,$122749,$122750,$122751,$122752),(nextval($122753),$122754,$122755,$122756,$122757,$122758,$122759,$122760,$122761,$122762,$122763,$122764,$122765,$122766),(nextval($122767),$122768,$122769,$122770,$122771,$122772,$122773,$122774,$122775,$122776,$122777,$122778,$122779,$122780),(nextval($122781),$122782,$122783,$122784,$122785,$122786,$122787,$122788,$122789,$122790,$122791,$122792,$122793,$122794),(nextval($122795),$122796,$122797,$122798,$122799,$122800,$122801,$122802,$122803,$122804,$122805,$122806,$122807,$122808),(nextval($122809),$122810,$122811,$122812,$122813,$122814,$122815,$122816,$122817,$122818,$122819,$122820,$122821,$122822),(nextval($122823),$122824,$122825,$122826,$122827,$122828,$122829,$122830,$122831,$122832,$122833,$122834,$122835,$122836),(nextval($122837),$122838,$122839,$122840,$122841,$122842,$122843,$122844,$122845,$122846,$122847,$122848,$122849,$122850),(nextval($122851),$122852,$122853,$122854,$122855,$122856,$122857,$122858,$122859,$122860,$122861,$122862,$122863,$122864),(nextval($122865),$122866,$122867,$122868,$122869,$122870,$122871,$122872,$122873,$122874,$122875,$122876,$122877,$122878),(nextval($122879),$122880,$122881,$122882,$122883,$122884,$122885,$122886,$122887,$122888,$122889,$122890,$122891,$122892),(nextval($122893),$122894,$122895,$122896,$122897,$122898,$122899,$122900,$122901,$122902,$122903,$122904,$122905,$122906),(nextval($122907),$122908,$122909,$122910,$122911,$122912,$122913,$122914,$122915,$122916,$122917,$122918,$122919,$122920),(nextval($122921),$122922,$122923,$122924,$122925,$122926,$122927,$122928,$122929,$122930,$122931,$122932,$122933,$122934),(nextval($122935),$122936,$122937,$122938,$122939,$122940,$122941,$122942,$122943,$122944,$122945,$122946,$122947,$122948),(nextval($122949),$122950,$122951,$122952,$122953,$122954,$122955,$122956,$122957,$122958,$122959,$122960,$122961,$122962),(nextval($122963),$122964,$122965,$122966,$122967,$122968,$122969,$122970,$122971,$122972,$122973,$122974,$122975,$122976),(nextval($122977),$122978,$122979,$122980,$122981,$122982,$122983,$122984,$122985,$122986,$122987,$122988,$122989,$122990),(nextval($122991),$122992,$122993,$122994,$122995,$122996,$122997,$122998,$122999,$123000,$123001,$123002,$123003,$123004),(nextval($123005),$123006,$123007,$123008,$123009,$123010,$123011,$123012,$123013,$123014,$123015,$123016,$123017,$123018),(nextval($123019),$123020,$123021,$123022,$123023,$123024,$123025,$123026,$123027,$123028,$123029,$123030,$123031,$123032),(nextval($123033),$123034,$123035,$123036,$123037,$123038,$123039,$123040,$123041,$123042,$123043,$123044,$123045,$123046),(nextval($123047),$123048,$123049,$123050,$123051,$123052,$123053,$123054,$123055,$123056,$123057,$123058,$123059,$123060),(nextval($123061),$123062,$123063,$123064,$123065,$123066,$123067,$123068,$123069,$123070,$123071,$123072,$123073,$123074),(nextval($123075),$123076,$123077,$123078,$123079,$123080,$123081,$123082,$123083,$123084,$123085,$123086,$123087,$123088),(nextval($123089),$123090,$123091,$123092,$123093,$123094,$123095,$123096,$123097,$123098,$123099,$123100,$123101,$123102),(nextval($123103),$123104,$123105,$123106,$123107,$123108,$123109,$123110,$123111,$123112,$123113,$123114,$123115,$123116),(nextval($123117),$123118,$123119,$123120,$123121,$123122,$123123,$123124,$123125,$123126,$123127,$123128,$123129,$123130),(nextval($123131),$123132,$123133,$123134,$123135,$123136,$123137,$123138,$123139,$123140,$123141,$123142,$123143,$123144),(nextval($123145),$123146,$123147,$123148,$123149,$123150,$123151,$123152,$123153,$123154,$123155,$123156,$123157,$123158),(nextval($123159),$123160,$123161,$123162,$123163,$123164,$123165,$123166,$123167,$123168,$123169,$123170,$123171,$123172),(nextval($123173),$123174,$123175,$123176,$123177,$123178,$123179,$123180,$123181,$123182,$123183,$123184,$123185,$123186),(nextval($123187),$123188,$123189,$123190,$123191,$123192,$123193,$123194,$123195,$123196,$123197,$123198,$123199,$123200),(nextval($123201),$123202,$123203,$123204,$123205,$123206,$123207,$123208,$123209,$123210,$123211,$123212,$123213,$123214),(nextval($123215),$123216,$123217,$123218,$123219,$123220,$123221,$123222,$123223,$123224,$123225,$123226,$123227,$123228),(nextval($123229),$123230,$123231,$123232,$123233,$123234,$123235,$123236,$123237,$123238,$123239,$123240,$123241,$123242),(nextval($123243),$123244,$123245,$123246,$123247,$123248,$123249,$123250,$123251,$123252,$123253,$123254,$123255,$123256),(nextval($123257),$123258,$123259,$123260,$123261,$123262,$123263,$123264,$123265,$123266,$123267,$123268,$123269,$123270),(nextval($123271),$123272,$123273,$123274,$123275,$123276,$123277,$123278,$123279,$123280,$123281,$123282,$123283,$123284),(nextval($123285),$123286,$123287,$123288,$123289,$123290,$123291,$123292,$123293,$123294,$123295,$123296,$123297,$123298),(nextval($123299),$123300,$123301,$123302,$123303,$123304,$123305,$123306,$123307,$123308,$123309,$123310,$123311,$123312),(nextval($123313),$123314,$123315,$123316,$123317,$123318,$123319,$123320,$123321,$123322,$123323,$123324,$123325,$123326),(nextval($123327),$123328,$123329,$123330,$123331,$123332,$123333,$123334,$123335,$123336,$123337,$123338,$123339,$123340),(nextval($123341),$123342,$123343,$123344,$123345,$123346,$123347,$123348,$123349,$123350,$123351,$123352,$123353,$123354),(nextval($123355),$123356,$123357,$123358,$123359,$123360,$123361,$123362,$123363,$123364,$123365,$123366,$123367,$123368),(nextval($123369),$123370,$123371,$123372,$123373,$123374,$123375,$123376,$123377,$123378,$123379,$123380,$123381,$123382),(nextval($123383),$123384,$123385,$123386,$123387,$123388,$123389,$123390,$123391,$123392,$123393,$123394,$123395,$123396),(nextval($123397),$123398,$123399,$123400,$123401,$123402,$123403,$123404,$123405,$123406,$123407,$123408,$123409,$123410),(nextval($123411),$123412,$123413,$123414,$123415,$123416,$123417,$123418,$123419,$123420,$123421,$123422,$123423,$123424),(nextval($123425),$123426,$123427,$123428,$123429,$123430,$123431,$123432,$123433,$123434,$123435,$123436,$123437,$123438),(nextval($123439),$123440,$123441,$123442,$123443,$123444,$123445,$123446,$123447,$123448,$123449,$123450,$123451,$123452),(nextval($123453),$123454,$123455,$123456,$123457,$123458,$123459,$123460,$123461,$123462,$123463,$123464,$123465,$123466),(nextval($123467),$123468,$123469,$123470,$123471,$123472,$123473,$123474,$123475,$123476,$123477,$123478,$123479,$123480),(nextval($123481),$123482,$123483,$123484,$123485,$123486,$123487,$123488,$123489,$123490,$123491,$123492,$123493,$123494),(nextval($123495),$123496,$123497,$123498,$123499,$123500,$123501,$123502,$123503,$123504,$123505,$123506,$123507,$123508),(nextval($123509),$123510,$123511,$123512,$123513,$123514,$123515,$123516,$123517,$123518,$123519,$123520,$123521,$123522),(nextval($123523),$123524,$123525,$123526,$123527,$123528,$123529,$123530,$123531,$123532,$123533,$123534,$123535,$123536),(nextval($123537),$123538,$123539,$123540,$123541,$123542,$123543,$123544,$123545,$123546,$123547,$123548,$123549,$123550),(nextval($123551),$123552,$123553,$123554,$123555,$123556,$123557,$123558,$123559,$123560,$123561,$123562,$123563,$123564),(nextval($123565),$123566,$123567,$123568,$123569,$123570,$123571,$123572,$123573,$123574,$123575,$123576,$123577,$123578),(nextval($123579),$123580,$123581,$123582,$123583,$123584,$123585,$123586,$123587,$123588,$123589,$123590,$123591,$123592),(nextval($123593),$123594,$123595,$123596,$123597,$123598,$123599,$123600,$123601,$123602,$123603,$123604,$123605,$123606),(nextval($123607),$123608,$123609,$123610,$123611,$123612,$123613,$123614,$123615,$123616,$123617,$123618,$123619,$123620),(nextval($123621),$123622,$123623,$123624,$123625,$123626,$123627,$123628,$123629,$123630,$123631,$123632,$123633,$123634),(nextval($123635),$123636,$123637,$123638,$123639,$123640,$123641,$123642,$123643,$123644,$123645,$123646,$123647,$123648),(nextval($123649),$123650,$123651,$123652,$123653,$123654,$123655,$123656,$123657,$123658,$123659,$123660,$123661,$123662),(nextval($123663),$123664,$123665,$123666,$123667,$123668,$123669,$123670,$123671,$123672,$123673,$123674,$123675,$123676),(nextval($123677),$123678,$123679,$123680,$123681,$123682,$123683,$123684,$123685,$123686,$123687,$123688,$123689,$123690),(nextval($123691),$123692,$123693,$123694,$123695,$123696,$123697,$123698,$123699,$123700,$123701,$123702,$123703,$123704),(nextval($123705),$123706,$123707,$123708,$123709,$123710,$123711,$123712,$123713,$123714,$123715,$123716,$123717,$123718),(nextval($123719),$123720,$123721,$123722,$123723,$123724,$123725,$123726,$123727,$123728,$123729,$123730,$123731,$123732),(nextval($123733),$123734,$123735,$123736,$123737,$123738,$123739,$123740,$123741,$123742,$123743,$123744,$123745,$123746),(nextval($123747),$123748,$123749,$123750,$123751,$123752,$123753,$123754,$123755,$123756,$123757,$123758,$123759,$123760),(nextval($123761),$123762,$123763,$123764,$123765,$123766,$123767,$123768,$123769,$123770,$123771,$123772,$123773,$123774),(nextval($123775),$123776,$123777,$123778,$123779,$123780,$123781,$123782,$123783,$123784,$123785,$123786,$123787,$123788),(nextval($123789),$123790,$123791,$123792,$123793,$123794,$123795,$123796,$123797,$123798,$123799,$123800,$123801,$123802),(nextval($123803),$123804,$123805,$123806,$123807,$123808,$123809,$123810,$123811,$123812,$123813,$123814,$123815,$123816),(nextval($123817),$123818,$123819,$123820,$123821,$123822,$123823,$123824,$123825,$123826,$123827,$123828,$123829,$123830),(nextval($123831),$123832,$123833,$123834,$123835,$123836,$123837,$123838,$123839,$123840,$123841,$123842,$123843,$123844),(nextval($123845),$123846,$123847,$123848,$123849,$123850,$123851,$123852,$123853,$123854,$123855,$123856,$123857,$123858),(nextval($123859),$123860,$123861,$123862,$123863,$123864,$123865,$123866,$123867,$123868,$123869,$123870,$123871,$123872),(nextval($123873),$123874,$123875,$123876,$123877,$123878,$123879,$123880,$123881,$123882,$123883,$123884,$123885,$123886),(nextval($123887),$123888,$123889,$123890,$123891,$123892,$123893,$123894,$123895,$123896,$123897,$123898,$123899,$123900),(nextval($123901),$123902,$123903,$123904,$123905,$123906,$123907,$123908,$123909,$123910,$123911,$123912,$123913,$123914),(nextval($123915),$123916,$123917,$123918,$123919,$123920,$123921,$123922,$123923,$123924,$123925,$123926,$123927,$123928),(nextval($123929),$123930,$123931,$123932,$123933,$123934,$123935,$123936,$123937,$123938,$123939,$123940,$123941,$123942),(nextval($123943),$123944,$123945,$123946,$123947,$123948,$123949,$123950,$123951,$123952,$123953,$123954,$123955,$123956),(nextval($123957),$123958,$123959,$123960,$123961,$123962,$123963,$123964,$123965,$123966,$123967,$123968,$123969,$123970),(nextval($123971),$123972,$123973,$123974,$123975,$123976,$123977,$123978,$123979,$123980,$123981,$123982,$123983,$123984),(nextval($123985),$123986,$123987,$123988,$123989,$123990,$123991,$123992,$123993,$123994,$123995,$123996,$123997,$123998),(nextval($123999),$124000,$124001,$124002,$124003,$124004,$124005,$124006,$124007,$124008,$124009,$124010,$124011,$124012),(nextval($124013),$124014,$124015,$124016,$124017,$124018,$124019,$124020,$124021,$124022,$124023,$124024,$124025,$124026),(nextval($124027),$124028,$124029,$124030,$124031,$124032,$124033,$124034,$124035,$124036,$124037,$124038,$124039,$124040),(nextval($124041),$124042,$124043,$124044,$124045,$124046,$124047,$124048,$124049,$124050,$124051,$124052,$124053,$124054),(nextval($124055),$124056,$124057,$124058,$124059,$124060,$124061,$124062,$124063,$124064,$124065,$124066,$124067,$124068),(nextval($124069),$124070,$124071,$124072,$124073,$124074,$124075,$124076,$124077,$124078,$124079,$124080,$124081,$124082),(nextval($124083),$124084,$124085,$124086,$124087,$124088,$124089,$124090,$124091,$124092,$124093,$124094,$124095,$124096),(nextval($124097),$124098,$124099,$124100,$124101,$124102,$124103,$124104,$124105,$124106,$124107,$124108,$124109,$124110),(nextval($124111),$124112,$124113,$124114,$124115,$124116,$124117,$124118,$124119,$124120,$124121,$124122,$124123,$124124),(nextval($124125),$124126,$124127,$124128,$124129,$124130,$124131,$124132,$124133,$124134,$124135,$124136,$124137,$124138),(nextval($124139),$124140,$124141,$124142,$124143,$124144,$124145,$124146,$124147,$124148,$124149,$124150,$124151,$124152),(nextval($124153),$124154,$124155,$124156,$124157,$124158,$124159,$124160,$124161,$124162,$124163,$124164,$124165,$124166),(nextval($124167),$124168,$124169,$124170,$124171,$124172,$124173,$124174,$124175,$124176,$124177,$124178,$124179,$124180),(nextval($124181),$124182,$124183,$124184,$124185,$124186,$124187,$124188,$124189,$124190,$124191,$124192,$124193,$124194),(nextval($124195),$124196,$124197,$124198,$124199,$124200,$124201,$124202,$124203,$124204,$124205,$124206,$124207,$124208),(nextval($124209),$124210,$124211,$124212,$124213,$124214,$124215,$124216,$124217,$124218,$124219,$124220,$124221,$124222),(nextval($124223),$124224,$124225,$124226,$124227,$124228,$124229,$124230,$124231,$124232,$124233,$124234,$124235,$124236),(nextval($124237),$124238,$124239,$124240,$124241,$124242,$124243,$124244,$124245,$124246,$124247,$124248,$124249,$124250),(nextval($124251),$124252,$124253,$124254,$124255,$124256,$124257,$124258,$124259,$124260,$124261,$124262,$124263,$124264),(nextval($124265),$124266,$124267,$124268,$124269,$124270,$124271,$124272,$124273,$124274,$124275,$124276,$124277,$124278),(nextval($124279),$124280,$124281,$124282,$124283,$124284,$124285,$124286,$124287,$124288,$124289,$124290,$124291,$124292),(nextval($124293),$124294,$124295,$124296,$124297,$124298,$124299,$124300,$124301,$124302,$124303,$124304,$124305,$124306),(nextval($124307),$124308,$124309,$124310,$124311,$124312,$124313,$124314,$124315,$124316,$124317,$124318,$124319,$124320),(nextval($124321),$124322,$124323,$124324,$124325,$124326,$124327,$124328,$124329,$124330,$124331,$124332,$124333,$124334),(nextval($124335),$124336,$124337,$124338,$124339,$124340,$124341,$124342,$124343,$124344,$124345,$124346,$124347,$124348),(nextval($124349),$124350,$124351,$124352,$124353,$124354,$124355,$124356,$124357,$124358,$124359,$124360,$124361,$124362),(nextval($124363),$124364,$124365,$124366,$124367,$124368,$124369,$124370,$124371,$124372,$124373,$124374,$124375,$124376),(nextval($124377),$124378,$124379,$124380,$124381,$124382,$124383,$124384,$124385,$124386,$124387,$124388,$124389,$124390),(nextval($124391),$124392,$124393,$124394,$124395,$124396,$124397,$124398,$124399,$124400,$124401,$124402,$124403,$124404),(nextval($124405),$124406,$124407,$124408,$124409,$124410,$124411,$124412,$124413,$124414,$124415,$124416,$124417,$124418),(nextval($124419),$124420,$124421,$124422,$124423,$124424,$124425,$124426,$124427,$124428,$124429,$124430,$124431,$124432),(nextval($124433),$124434,$124435,$124436,$124437,$124438,$124439,$124440,$124441,$124442,$124443,$124444,$124445,$124446),(nextval($124447),$124448,$124449,$124450,$124451,$124452,$124453,$124454,$124455,$124456,$124457,$124458,$124459,$124460),(nextval($124461),$124462,$124463,$124464,$124465,$124466,$124467,$124468,$124469,$124470,$124471,$124472,$124473,$124474),(nextval($124475),$124476,$124477,$124478,$124479,$124480,$124481,$124482,$124483,$124484,$124485,$124486,$124487,$124488),(nextval($124489),$124490,$124491,$124492,$124493,$124494,$124495,$124496,$124497,$124498,$124499,$124500,$124501,$124502),(nextval($124503),$124504,$124505,$124506,$124507,$124508,$124509,$124510,$124511,$124512,$124513,$124514,$124515,$124516),(nextval($124517),$124518,$124519,$124520,$124521,$124522,$124523,$124524,$124525,$124526,$124527,$124528,$124529,$124530),(nextval($124531),$124532,$124533,$124534,$124535,$124536,$124537,$124538,$124539,$124540,$124541,$124542,$124543,$124544),(nextval($124545),$124546,$124547,$124548,$124549,$124550,$124551,$124552,$124553,$124554,$124555,$124556,$124557,$124558),(nextval($124559),$124560,$124561,$124562,$124563,$124564,$124565,$124566,$124567,$124568,$124569,$124570,$124571,$124572),(nextval($124573),$124574,$124575,$124576,$124577,$124578,$124579,$124580,$124581,$124582,$124583,$124584,$124585,$124586),(nextval($124587),$124588,$124589,$124590,$124591,$124592,$124593,$124594,$124595,$124596,$124597,$124598,$124599,$124600),(nextval($124601),$124602,$124603,$124604,$124605,$124606,$124607,$124608,$124609,$124610,$124611,$124612,$124613,$124614),(nextval($124615),$124616,$124617,$124618,$124619,$124620,$124621,$124622,$124623,$124624,$124625,$124626,$124627,$124628),(nextval($124629),$124630,$124631,$124632,$124633,$124634,$124635,$124636,$124637,$124638,$124639,$124640,$124641,$124642),(nextval($124643),$124644,$124645,$124646,$124647,$124648,$124649,$124650,$124651,$124652,$124653,$124654,$124655,$124656),(nextval($124657),$124658,$124659,$124660,$124661,$124662,$124663,$124664,$124665,$124666,$124667,$124668,$124669,$124670),(nextval($124671),$124672,$124673,$124674,$124675,$124676,$124677,$124678,$124679,$124680,$124681,$124682,$124683,$124684),(nextval($124685),$124686,$124687,$124688,$124689,$124690,$124691,$124692,$124693,$124694,$124695,$124696,$124697,$124698),(nextval($124699),$124700,$124701,$124702,$124703,$124704,$124705,$124706,$124707,$124708,$124709,$124710,$124711,$124712),(nextval($124713),$124714,$124715,$124716,$124717,$124718,$124719,$124720,$124721,$124722,$124723,$124724,$124725,$124726),(nextval($124727),$124728,$124729,$124730,$124731,$124732,$124733,$124734,$124735,$124736,$124737,$124738,$124739,$124740),(nextval($124741),$124742,$124743,$124744,$124745,$124746,$124747,$124748,$124749,$124750,$124751,$124752,$124753,$124754),(nextval($124755),$124756,$124757,$124758,$124759,$124760,$124761,$124762,$124763,$124764,$124765,$124766,$124767,$124768),(nextval($124769),$124770,$124771,$124772,$124773,$124774,$124775,$124776,$124777,$124778,$124779,$124780,$124781,$124782),(nextval($124783),$124784,$124785,$124786,$124787,$124788,$124789,$124790,$124791,$124792,$124793,$124794,$124795,$124796),(nextval($124797),$124798,$124799,$124800,$124801,$124802,$124803,$124804,$124805,$124806,$124807,$124808,$124809,$124810),(nextval($124811),$124812,$124813,$124814,$124815,$124816,$124817,$124818,$124819,$124820,$124821,$124822,$124823,$124824),(nextval($124825),$124826,$124827,$124828,$124829,$124830,$124831,$124832,$124833,$124834,$124835,$124836,$124837,$124838),(nextval($124839),$124840,$124841,$124842,$124843,$124844,$124845,$124846,$124847,$124848,$124849,$124850,$124851,$124852),(nextval($124853),$124854,$124855,$124856,$124857,$124858,$124859,$124860,$124861,$124862,$124863,$124864,$124865,$124866),(nextval($124867),$124868,$124869,$124870,$124871,$124872,$124873,$124874,$124875,$124876,$124877,$124878,$124879,$124880),(nextval($124881),$124882,$124883,$124884,$124885,$124886,$124887,$124888,$124889,$124890,$124891,$124892,$124893,$124894),(nextval($124895),$124896,$124897,$124898,$124899,$124900,$124901,$124902,$124903,$124904,$124905,$124906,$124907,$124908),(nextval($124909),$124910,$124911,$124912,$124913,$124914,$124915,$124916,$124917,$124918,$124919,$124920,$124921,$124922),(nextval($124923),$124924,$124925,$124926,$124927,$124928,$124929,$124930,$124931,$124932,$124933,$124934,$124935,$124936),(nextval($124937),$124938,$124939,$124940,$124941,$124942,$124943,$124944,$124945,$124946,$124947,$124948,$124949,$124950),(nextval($124951),$124952,$124953,$124954,$124955,$124956,$124957,$124958,$124959,$124960,$124961,$124962,$124963,$124964),(nextval($124965),$124966,$124967,$124968,$124969,$124970,$124971,$124972,$124973,$124974,$124975,$124976,$124977,$124978),(nextval($124979),$124980,$124981,$124982,$124983,$124984,$124985,$124986,$124987,$124988,$124989,$124990,$124991,$124992),(nextval($124993),$124994,$124995,$124996,$124997,$124998,$124999,$125000,$125001,$125002,$125003,$125004,$125005,$125006),(nextval($125007),$125008,$125009,$125010,$125011,$125012,$125013,$125014,$125015,$125016,$125017,$125018,$125019,$125020),(nextval($125021),$125022,$125023,$125024,$125025,$125026,$125027,$125028,$125029,$125030,$125031,$125032,$125033,$125034),(nextval($125035),$125036,$125037,$125038,$125039,$125040,$125041,$125042,$125043,$125044,$125045,$125046,$125047,$125048),(nextval($125049),$125050,$125051,$125052,$125053,$125054,$125055,$125056,$125057,$125058,$125059,$125060,$125061,$125062),(nextval($125063),$125064,$125065,$125066,$125067,$125068,$125069,$125070,$125071,$125072,$125073,$125074,$125075,$125076),(nextval($125077),$125078,$125079,$125080,$125081,$125082,$125083,$125084,$125085,$125086,$125087,$125088,$125089,$125090),(nextval($125091),$125092,$125093,$125094,$125095,$125096,$125097,$125098,$125099,$125100,$125101,$125102,$125103,$125104),(nextval($125105),$125106,$125107,$125108,$125109,$125110,$125111,$125112,$125113,$125114,$125115,$125116,$125117,$125118),(nextval($125119),$125120,$125121,$125122,$125123,$125124,$125125,$125126,$125127,$125128,$125129,$125130,$125131,$125132),(nextval($125133),$125134,$125135,$125136,$125137,$125138,$125139,$125140,$125141,$125142,$125143,$125144,$125145,$125146),(nextval($125147),$125148,$125149,$125150,$125151,$125152,$125153,$125154,$125155,$125156,$125157,$125158,$125159,$125160),(nextval($125161),$125162,$125163,$125164,$125165,$125166,$125167,$125168,$125169,$125170,$125171,$125172,$125173,$125174),(nextval($125175),$125176,$125177,$125178,$125179,$125180,$125181,$125182,$125183,$125184,$125185,$125186,$125187,$125188),(nextval($125189),$125190,$125191,$125192,$125193,$125194,$125195,$125196,$125197,$125198,$125199,$125200,$125201,$125202),(nextval($125203),$125204,$125205,$125206,$125207,$125208,$125209,$125210,$125211,$125212,$125213,$125214,$125215,$125216),(nextval($125217),$125218,$125219,$125220,$125221,$125222,$125223,$125224,$125225,$125226,$125227,$125228,$125229,$125230),(nextval($125231),$125232,$125233,$125234,$125235,$125236,$125237,$125238,$125239,$125240,$125241,$125242,$125243,$125244),(nextval($125245),$125246,$125247,$125248,$125249,$125250,$125251,$125252,$125253,$125254,$125255,$125256,$125257,$125258),(nextval($125259),$125260,$125261,$125262,$125263,$125264,$125265,$125266,$125267,$125268,$125269,$125270,$125271,$125272),(nextval($125273),$125274,$125275,$125276,$125277,$125278,$125279,$125280,$125281,$125282,$125283,$125284,$125285,$125286),(nextval($125287),$125288,$125289,$125290,$125291,$125292,$125293,$125294,$125295,$125296,$125297,$125298,$125299,$125300),(nextval($125301),$125302,$125303,$125304,$125305,$125306,$125307,$125308,$125309,$125310,$125311,$125312,$125313,$125314),(nextval($125315),$125316,$125317,$125318,$125319,$125320,$125321,$125322,$125323,$125324,$125325,$125326,$125327,$125328),(nextval($125329),$125330,$125331,$125332,$125333,$125334,$125335,$125336,$125337,$125338,$125339,$125340,$125341,$125342),(nextval($125343),$125344,$125345,$125346,$125347,$125348,$125349,$125350,$125351,$125352,$125353,$125354,$125355,$125356),(nextval($125357),$125358,$125359,$125360,$125361,$125362,$125363,$125364,$125365,$125366,$125367,$125368,$125369,$125370),(nextval($125371),$125372,$125373,$125374,$125375,$125376,$125377,$125378,$125379,$125380,$125381,$125382,$125383,$125384),(nextval($125385),$125386,$125387,$125388,$125389,$125390,$125391,$125392,$125393,$125394,$125395,$125396,$125397,$125398),(nextval($125399),$125400,$125401,$125402,$125403,$125404,$125405,$125406,$125407,$125408,$125409,$125410,$125411,$125412),(nextval($125413),$125414,$125415,$125416,$125417,$125418,$125419,$125420,$125421,$125422,$125423,$125424,$125425,$125426),(nextval($125427),$125428,$125429,$125430,$125431,$125432,$125433,$125434,$125435,$125436,$125437,$125438,$125439,$125440),(nextval($125441),$125442,$125443,$125444,$125445,$125446,$125447,$125448,$125449,$125450,$125451,$125452,$125453,$125454),(nextval($125455),$125456,$125457,$125458,$125459,$125460,$125461,$125462,$125463,$125464,$125465,$125466,$125467,$125468),(nextval($125469),$125470,$125471,$125472,$125473,$125474,$125475,$125476,$125477,$125478,$125479,$125480,$125481,$125482),(nextval($125483),$125484,$125485,$125486,$125487,$125488,$125489,$125490,$125491,$125492,$125493,$125494,$125495,$125496),(nextval($125497),$125498,$125499,$125500,$125501,$125502,$125503,$125504,$125505,$125506,$125507,$125508,$125509,$125510),(nextval($125511),$125512,$125513,$125514,$125515,$125516,$125517,$125518,$125519,$125520,$125521,$125522,$125523,$125524),(nextval($125525),$125526,$125527,$125528,$125529,$125530,$125531,$125532,$125533,$125534,$125535,$125536,$125537,$125538),(nextval($125539),$125540,$125541,$125542,$125543,$125544,$125545,$125546,$125547,$125548,$125549,$125550,$125551,$125552),(nextval($125553),$125554,$125555,$125556,$125557,$125558,$125559,$125560,$125561,$125562,$125563,$125564,$125565,$125566),(nextval($125567),$125568,$125569,$125570,$125571,$125572,$125573,$125574,$125575,$125576,$125577,$125578,$125579,$125580),(nextval($125581),$125582,$125583,$125584,$125585,$125586,$125587,$125588,$125589,$125590,$125591,$125592,$125593,$125594),(nextval($125595),$125596,$125597,$125598,$125599,$125600,$125601,$125602,$125603,$125604,$125605,$125606,$125607,$125608),(nextval($125609),$125610,$125611,$125612,$125613,$125614,$125615,$125616,$125617,$125618,$125619,$125620,$125621,$125622),(nextval($125623),$125624,$125625,$125626,$125627,$125628,$125629,$125630,$125631,$125632,$125633,$125634,$125635,$125636),(nextval($125637),$125638,$125639,$125640,$125641,$125642,$125643,$125644,$125645,$125646,$125647,$125648,$125649,$125650),(nextval($125651),$125652,$125653,$125654,$125655,$125656,$125657,$125658,$125659,$125660,$125661,$125662,$125663,$125664),(nextval($125665),$125666,$125667,$125668,$125669,$125670,$125671,$125672,$125673,$125674,$125675,$125676,$125677,$125678),(nextval($125679),$125680,$125681,$125682,$125683,$125684,$125685,$125686,$125687,$125688,$125689,$125690,$125691,$125692),(nextval($125693),$125694,$125695,$125696,$125697,$125698,$125699,$125700,$125701,$125702,$125703,$125704,$125705,$125706),(nextval($125707),$125708,$125709,$125710,$125711,$125712,$125713,$125714,$125715,$125716,$125717,$125718,$125719,$125720),(nextval($125721),$125722,$125723,$125724,$125725,$125726,$125727,$125728,$125729,$125730,$125731,$125732,$125733,$125734),(nextval($125735),$125736,$125737,$125738,$125739,$125740,$125741,$125742,$125743,$125744,$125745,$125746,$125747,$125748),(nextval($125749),$125750,$125751,$125752,$125753,$125754,$125755,$125756,$125757,$125758,$125759,$125760,$125761,$125762),(nextval($125763),$125764,$125765,$125766,$125767,$125768,$125769,$125770,$125771,$125772,$125773,$125774,$125775,$125776),(nextval($125777),$125778,$125779,$125780,$125781,$125782,$125783,$125784,$125785,$125786,$125787,$125788,$125789,$125790),(nextval($125791),$125792,$125793,$125794,$125795,$125796,$125797,$125798,$125799,$125800,$125801,$125802,$125803,$125804),(nextval($125805),$125806,$125807,$125808,$125809,$125810,$125811,$125812,$125813,$125814,$125815,$125816,$125817,$125818),(nextval($125819),$125820,$125821,$125822,$125823,$125824,$125825,$125826,$125827,$125828,$125829,$125830,$125831,$125832),(nextval($125833),$125834,$125835,$125836,$125837,$125838,$125839,$125840,$125841,$125842,$125843,$125844,$125845,$125846),(nextval($125847),$125848,$125849,$125850,$125851,$125852,$125853,$125854,$125855,$125856,$125857,$125858,$125859,$125860),(nextval($125861),$125862,$125863,$125864,$125865,$125866,$125867,$125868,$125869,$125870,$125871,$125872,$125873,$125874),(nextval($125875),$125876,$125877,$125878,$125879,$125880,$125881,$125882,$125883,$125884,$125885,$125886,$125887,$125888),(nextval($125889),$125890,$125891,$125892,$125893,$125894,$125895,$125896,$125897,$125898,$125899,$125900,$125901,$125902),(nextval($125903),$125904,$125905,$125906,$125907,$125908,$125909,$125910,$125911,$125912,$125913,$125914,$125915,$125916),(nextval($125917),$125918,$125919,$125920,$125921,$125922,$125923,$125924,$125925,$125926,$125927,$125928,$125929,$125930),(nextval($125931),$125932,$125933,$125934,$125935,$125936,$125937,$125938,$125939,$125940,$125941,$125942,$125943,$125944),(nextval($125945),$125946,$125947,$125948,$125949,$125950,$125951,$125952,$125953,$125954,$125955,$125956,$125957,$125958),(nextval($125959),$125960,$125961,$125962,$125963,$125964,$125965,$125966,$125967,$125968,$125969,$125970,$125971,$125972),(nextval($125973),$125974,$125975,$125976,$125977,$125978,$125979,$125980,$125981,$125982,$125983,$125984,$125985,$125986),(nextval($125987),$125988,$125989,$125990,$125991,$125992,$125993,$125994,$125995,$125996,$125997,$125998,$125999,$126000),(nextval($126001),$126002,$126003,$126004,$126005,$126006,$126007,$126008,$126009,$126010,$126011,$126012,$126013,$126014),(nextval($126015),$126016,$126017,$126018,$126019,$126020,$126021,$126022,$126023,$126024,$126025,$126026,$126027,$126028),(nextval($126029),$126030,$126031,$126032,$126033,$126034,$126035,$126036,$126037,$126038,$126039,$126040,$126041,$126042),(nextval($126043),$126044,$126045,$126046,$126047,$126048,$126049,$126050,$126051,$126052,$126053,$126054,$126055,$126056),(nextval($126057),$126058,$126059,$126060,$126061,$126062,$126063,$126064,$126065,$126066,$126067,$126068,$126069,$126070),(nextval($126071),$126072,$126073,$126074,$126075,$126076,$126077,$126078,$126079,$126080,$126081,$126082,$126083,$126084),(nextval($126085),$126086,$126087,$126088,$126089,$126090,$126091,$126092,$126093,$126094,$126095,$126096,$126097,$126098),(nextval($126099),$126100,$126101,$126102,$126103,$126104,$126105,$126106,$126107,$126108,$126109,$126110,$126111,$126112),(nextval($126113),$126114,$126115,$126116,$126117,$126118,$126119,$126120,$126121,$126122,$126123,$126124,$126125,$126126),(nextval($126127),$126128,$126129,$126130,$126131,$126132,$126133,$126134,$126135,$126136,$126137,$126138,$126139,$126140),(nextval($126141),$126142,$126143,$126144,$126145,$126146,$126147,$126148,$126149,$126150,$126151,$126152,$126153,$126154),(nextval($126155),$126156,$126157,$126158,$126159,$126160,$126161,$126162,$126163,$126164,$126165,$126166,$126167,$126168),(nextval($126169),$126170,$126171,$126172,$126173,$126174,$126175,$126176,$126177,$126178,$126179,$126180,$126181,$126182),(nextval($126183),$126184,$126185,$126186,$126187,$126188,$126189,$126190,$126191,$126192,$126193,$126194,$126195,$126196),(nextval($126197),$126198,$126199,$126200,$126201,$126202,$126203,$126204,$126205,$126206,$126207,$126208,$126209,$126210),(nextval($126211),$126212,$126213,$126214,$126215,$126216,$126217,$126218,$126219,$126220,$126221,$126222,$126223,$126224),(nextval($126225),$126226,$126227,$126228,$126229,$126230,$126231,$126232,$126233,$126234,$126235,$126236,$126237,$126238),(nextval($126239),$126240,$126241,$126242,$126243,$126244,$126245,$126246,$126247,$126248,$126249,$126250,$126251,$126252),(nextval($126253),$126254,$126255,$126256,$126257,$126258,$126259,$126260,$126261,$126262,$126263,$126264,$126265,$126266),(nextval($126267),$126268,$126269,$126270,$126271,$126272,$126273,$126274,$126275,$126276,$126277,$126278,$126279,$126280),(nextval($126281),$126282,$126283,$126284,$126285,$126286,$126287,$126288,$126289,$126290,$126291,$126292,$126293,$126294),(nextval($126295),$126296,$126297,$126298,$126299,$126300,$126301,$126302,$126303,$126304,$126305,$126306,$126307,$126308),(nextval($126309),$126310,$126311,$126312,$126313,$126314,$126315,$126316,$126317,$126318,$126319,$126320,$126321,$126322),(nextval($126323),$126324,$126325,$126326,$126327,$126328,$126329,$126330,$126331,$126332,$126333,$126334,$126335,$126336),(nextval($126337),$126338,$126339,$126340,$126341,$126342,$126343,$126344,$126345,$126346,$126347,$126348,$126349,$126350),(nextval($126351),$126352,$126353,$126354,$126355,$126356,$126357,$126358,$126359,$126360,$126361,$126362,$126363,$126364),(nextval($126365),$126366,$126367,$126368,$126369,$126370,$126371,$126372,$126373,$126374,$126375,$126376,$126377,$126378),(nextval($126379),$126380,$126381,$126382,$126383,$126384,$126385,$126386,$126387,$126388,$126389,$126390,$126391,$126392),(nextval($126393),$126394,$126395,$126396,$126397,$126398,$126399,$126400,$126401,$126402,$126403,$126404,$126405,$126406),(nextval($126407),$126408,$126409,$126410,$126411,$126412,$126413,$126414,$126415,$126416,$126417,$126418,$126419,$126420),(nextval($126421),$126422,$126423,$126424,$126425,$126426,$126427,$126428,$126429,$126430,$126431,$126432,$126433,$126434),(nextval($126435),$126436,$126437,$126438,$126439,$126440,$126441,$126442,$126443,$126444,$126445,$126446,$126447,$126448),(nextval($126449),$126450,$126451,$126452,$126453,$126454,$126455,$126456,$126457,$126458,$126459,$126460,$126461,$126462),(nextval($126463),$126464,$126465,$126466,$126467,$126468,$126469,$126470,$126471,$126472,$126473,$126474,$126475,$126476),(nextval($126477),$126478,$126479,$126480,$126481,$126482,$126483,$126484,$126485,$126486,$126487,$126488,$126489,$126490),(nextval($126491),$126492,$126493,$126494,$126495,$126496,$126497,$126498,$126499,$126500,$126501,$126502,$126503,$126504),(nextval($126505),$126506,$126507,$126508,$126509,$126510,$126511,$126512,$126513,$126514,$126515,$126516,$126517,$126518),(nextval($126519),$126520,$126521,$126522,$126523,$126524,$126525,$126526,$126527,$126528,$126529,$126530,$126531,$126532),(nextval($126533),$126534,$126535,$126536,$126537,$126538,$126539,$126540,$126541,$126542,$126543,$126544,$126545,$126546),(nextval($126547),$126548,$126549,$126550,$126551,$126552,$126553,$126554,$126555,$126556,$126557,$126558,$126559,$126560),(nextval($126561),$126562,$126563,$126564,$126565,$126566,$126567,$126568,$126569,$126570,$126571,$126572,$126573,$126574),(nextval($126575),$126576,$126577,$126578,$126579,$126580,$126581,$126582,$126583,$126584,$126585,$126586,$126587,$126588),(nextval($126589),$126590,$126591,$126592,$126593,$126594,$126595,$126596,$126597,$126598,$126599,$126600,$126601,$126602),(nextval($126603),$126604,$126605,$126606,$126607,$126608,$126609,$126610,$126611,$126612,$126613,$126614,$126615,$126616),(nextval($126617),$126618,$126619,$126620,$126621,$126622,$126623,$126624,$126625,$126626,$126627,$126628,$126629,$126630),(nextval($126631),$126632,$126633,$126634,$126635,$126636,$126637,$126638,$126639,$126640,$126641,$126642,$126643,$126644),(nextval($126645),$126646,$126647,$126648,$126649,$126650,$126651,$126652,$126653,$126654,$126655,$126656,$126657,$126658),(nextval($126659),$126660,$126661,$126662,$126663,$126664,$126665,$126666,$126667,$126668,$126669,$126670,$126671,$126672),(nextval($126673),$126674,$126675,$126676,$126677,$126678,$126679,$126680,$126681,$126682,$126683,$126684,$126685,$126686),(nextval($126687),$126688,$126689,$126690,$126691,$126692,$126693,$126694,$126695,$126696,$126697,$126698,$126699,$126700),(nextval($126701),$126702,$126703,$126704,$126705,$126706,$126707,$126708,$126709,$126710,$126711,$126712,$126713,$126714),(nextval($126715),$126716,$126717,$126718,$126719,$126720,$126721,$126722,$126723,$126724,$126725,$126726,$126727,$126728),(nextval($126729),$126730,$126731,$126732,$126733,$126734,$126735,$126736,$126737,$126738,$126739,$126740,$126741,$126742),(nextval($126743),$126744,$126745,$126746,$126747,$126748,$126749,$126750,$126751,$126752,$126753,$126754,$126755,$126756),(nextval($126757),$126758,$126759,$126760,$126761,$126762,$126763,$126764,$126765,$126766,$126767,$126768,$126769,$126770),(nextval($126771),$126772,$126773,$126774,$126775,$126776,$126777,$126778,$126779,$126780,$126781,$126782,$126783,$126784),(nextval($126785),$126786,$126787,$126788,$126789,$126790,$126791,$126792,$126793,$126794,$126795,$126796,$126797,$126798),(nextval($126799),$126800,$126801,$126802,$126803,$126804,$126805,$126806,$126807,$126808,$126809,$126810,$126811,$126812),(nextval($126813),$126814,$126815,$126816,$126817,$126818,$126819,$126820,$126821,$126822,$126823,$126824,$126825,$126826),(nextval($126827),$126828,$126829,$126830,$126831,$126832,$126833,$126834,$126835,$126836,$126837,$126838,$126839,$126840),(nextval($126841),$126842,$126843,$126844,$126845,$126846,$126847,$126848,$126849,$126850,$126851,$126852,$126853,$126854),(nextval($126855),$126856,$126857,$126858,$126859,$126860,$126861,$126862,$126863,$126864,$126865,$126866,$126867,$126868),(nextval($126869),$126870,$126871,$126872,$126873,$126874,$126875,$126876,$126877,$126878,$126879,$126880,$126881,$126882),(nextval($126883),$126884,$126885,$126886,$126887,$126888,$126889,$126890,$126891,$126892,$126893,$126894,$126895,$126896),(nextval($126897),$126898,$126899,$126900,$126901,$126902,$126903,$126904,$126905,$126906,$126907,$126908,$126909,$126910),(nextval($126911),$126912,$126913,$126914,$126915,$126916,$126917,$126918,$126919,$126920,$126921,$126922,$126923,$126924),(nextval($126925),$126926,$126927,$126928,$126929,$126930,$126931,$126932,$126933,$126934,$126935,$126936,$126937,$126938),(nextval($126939),$126940,$126941,$126942,$126943,$126944,$126945,$126946,$126947,$126948,$126949,$126950,$126951,$126952),(nextval($126953),$126954,$126955,$126956,$126957,$126958,$126959,$126960,$126961,$126962,$126963,$126964,$126965,$126966),(nextval($126967),$126968,$126969,$126970,$126971,$126972,$126973,$126974,$126975,$126976,$126977,$126978,$126979,$126980),(nextval($126981),$126982,$126983,$126984,$126985,$126986,$126987,$126988,$126989,$126990,$126991,$126992,$126993,$126994),(nextval($126995),$126996,$126997,$126998,$126999,$127000,$127001,$127002,$127003,$127004,$127005,$127006,$127007,$127008),(nextval($127009),$127010,$127011,$127012,$127013,$127014,$127015,$127016,$127017,$127018,$127019,$127020,$127021,$127022),(nextval($127023),$127024,$127025,$127026,$127027,$127028,$127029,$127030,$127031,$127032,$127033,$127034,$127035,$127036),(nextval($127037),$127038,$127039,$127040,$127041,$127042,$127043,$127044,$127045,$127046,$127047,$127048,$127049,$127050),(nextval($127051),$127052,$127053,$127054,$127055,$127056,$127057,$127058,$127059,$127060,$127061,$127062,$127063,$127064),(nextval($127065),$127066,$127067,$127068,$127069,$127070,$127071,$127072,$127073,$127074,$127075,$127076,$127077,$127078),(nextval($127079),$127080,$127081,$127082,$127083,$127084,$127085,$127086,$127087,$127088,$127089,$127090,$127091,$127092),(nextval($127093),$127094,$127095,$127096,$127097,$127098,$127099,$127100,$127101,$127102,$127103,$127104,$127105,$127106),(nextval($127107),$127108,$127109,$127110,$127111,$127112,$127113,$127114,$127115,$127116,$127117,$127118,$127119,$127120),(nextval($127121),$127122,$127123,$127124,$127125,$127126,$127127,$127128,$127129,$127130,$127131,$127132,$127133,$127134),(nextval($127135),$127136,$127137,$127138,$127139,$127140,$127141,$127142,$127143,$127144,$127145,$127146,$127147,$127148),(nextval($127149),$127150,$127151,$127152,$127153,$127154,$127155,$127156,$127157,$127158,$127159,$127160,$127161,$127162),(nextval($127163),$127164,$127165,$127166,$127167,$127168,$127169,$127170,$127171,$127172,$127173,$127174,$127175,$127176),(nextval($127177),$127178,$127179,$127180,$127181,$127182,$127183,$127184,$127185,$127186,$127187,$127188,$127189,$127190),(nextval($127191),$127192,$127193,$127194,$127195,$127196,$127197,$127198,$127199,$127200,$127201,$127202,$127203,$127204),(nextval($127205),$127206,$127207,$127208,$127209,$127210,$127211,$127212,$127213,$127214,$127215,$127216,$127217,$127218),(nextval($127219),$127220,$127221,$127222,$127223,$127224,$127225,$127226,$127227,$127228,$127229,$127230,$127231,$127232),(nextval($127233),$127234,$127235,$127236,$127237,$127238,$127239,$127240,$127241,$127242,$127243,$127244,$127245,$127246),(nextval($127247),$127248,$127249,$127250,$127251,$127252,$127253,$127254,$127255,$127256,$127257,$127258,$127259,$127260),(nextval($127261),$127262,$127263,$127264,$127265,$127266,$127267,$127268,$127269,$127270,$127271,$127272,$127273,$127274),(nextval($127275),$127276,$127277,$127278,$127279,$127280,$127281,$127282,$127283,$127284,$127285,$127286,$127287,$127288),(nextval($127289),$127290,$127291,$127292,$127293,$127294,$127295,$127296,$127297,$127298,$127299,$127300,$127301,$127302),(nextval($127303),$127304,$127305,$127306,$127307,$127308,$127309,$127310,$127311,$127312,$127313,$127314,$127315,$127316),(nextval($127317),$127318,$127319,$127320,$127321,$127322,$127323,$127324,$127325,$127326,$127327,$127328,$127329,$127330),(nextval($127331),$127332,$127333,$127334,$127335,$127336,$127337,$127338,$127339,$127340,$127341,$127342,$127343,$127344),(nextval($127345),$127346,$127347,$127348,$127349,$127350,$127351,$127352,$127353,$127354,$127355,$127356,$127357,$127358),(nextval($127359),$127360,$127361,$127362,$127363,$127364,$127365,$127366,$127367,$127368,$127369,$127370,$127371,$127372),(nextval($127373),$127374,$127375,$127376,$127377,$127378,$127379,$127380,$127381,$127382,$127383,$127384,$127385,$127386),(nextval($127387),$127388,$127389,$127390,$127391,$127392,$127393,$127394,$127395,$127396,$127397,$127398,$127399,$127400),(nextval($127401),$127402,$127403,$127404,$127405,$127406,$127407,$127408,$127409,$127410,$127411,$127412,$127413,$127414),(nextval($127415),$127416,$127417,$127418,$127419,$127420,$127421,$127422,$127423,$127424,$127425,$127426,$127427,$127428),(nextval($127429),$127430,$127431,$127432,$127433,$127434,$127435,$127436,$127437,$127438,$127439,$127440,$127441,$127442),(nextval($127443),$127444,$127445,$127446,$127447,$127448,$127449,$127450,$127451,$127452,$127453,$127454,$127455,$127456),(nextval($127457),$127458,$127459,$127460,$127461,$127462,$127463,$127464,$127465,$127466,$127467,$127468,$127469,$127470),(nextval($127471),$127472,$127473,$127474,$127475,$127476,$127477,$127478,$127479,$127480,$127481,$127482,$127483,$127484),(nextval($127485),$127486,$127487,$127488,$127489,$127490,$127491,$127492,$127493,$127494,$127495,$127496,$127497,$127498),(nextval($127499),$127500,$127501,$127502,$127503,$127504,$127505,$127506,$127507,$127508,$127509,$127510,$127511,$127512),(nextval($127513),$127514,$127515,$127516,$127517,$127518,$127519,$127520,$127521,$127522,$127523,$127524,$127525,$127526),(nextval($127527),$127528,$127529,$127530,$127531,$127532,$127533,$127534,$127535,$127536,$127537,$127538,$127539,$127540),(nextval($127541),$127542,$127543,$127544,$127545,$127546,$127547,$127548,$127549,$127550,$127551,$127552,$127553,$127554),(nextval($127555),$127556,$127557,$127558,$127559,$127560,$127561,$127562,$127563,$127564,$127565,$127566,$127567,$127568),(nextval($127569),$127570,$127571,$127572,$127573,$127574,$127575,$127576,$127577,$127578,$127579,$127580,$127581,$127582),(nextval($127583),$127584,$127585,$127586,$127587,$127588,$127589,$127590,$127591,$127592,$127593,$127594,$127595,$127596),(nextval($127597),$127598,$127599,$127600,$127601,$127602,$127603,$127604,$127605,$127606,$127607,$127608,$127609,$127610),(nextval($127611),$127612,$127613,$127614,$127615,$127616,$127617,$127618,$127619,$127620,$127621,$127622,$127623,$127624),(nextval($127625),$127626,$127627,$127628,$127629,$127630,$127631,$127632,$127633,$127634,$127635,$127636,$127637,$127638),(nextval($127639),$127640,$127641,$127642,$127643,$127644,$127645,$127646,$127647,$127648,$127649,$127650,$127651,$127652),(nextval($127653),$127654,$127655,$127656,$127657,$127658,$127659,$127660,$127661,$127662,$127663,$127664,$127665,$127666),(nextval($127667),$127668,$127669,$127670,$127671,$127672,$127673,$127674,$127675,$127676,$127677,$127678,$127679,$127680),(nextval($127681),$127682,$127683,$127684,$127685,$127686,$127687,$127688,$127689,$127690,$127691,$127692,$127693,$127694),(nextval($127695),$127696,$127697,$127698,$127699,$127700,$127701,$127702,$127703,$127704,$127705,$127706,$127707,$127708),(nextval($127709),$127710,$127711,$127712,$127713,$127714,$127715,$127716,$127717,$127718,$127719,$127720,$127721,$127722),(nextval($127723),$127724,$127725,$127726,$127727,$127728,$127729,$127730,$127731,$127732,$127733,$127734,$127735,$127736),(nextval($127737),$127738,$127739,$127740,$127741,$127742,$127743,$127744,$127745,$127746,$127747,$127748,$127749,$127750),(nextval($127751),$127752,$127753,$127754,$127755,$127756,$127757,$127758,$127759,$127760,$127761,$127762,$127763,$127764),(nextval($127765),$127766,$127767,$127768,$127769,$127770,$127771,$127772,$127773,$127774,$127775,$127776,$127777,$127778),(nextval($127779),$127780,$127781,$127782,$127783,$127784,$127785,$127786,$127787,$127788,$127789,$127790,$127791,$127792),(nextval($127793),$127794,$127795,$127796,$127797,$127798,$127799,$127800,$127801,$127802,$127803,$127804,$127805,$127806),(nextval($127807),$127808,$127809,$127810,$127811,$127812,$127813,$127814,$127815,$127816,$127817,$127818,$127819,$127820),(nextval($127821),$127822,$127823,$127824,$127825,$127826,$127827,$127828,$127829,$127830,$127831,$127832,$127833,$127834),(nextval($127835),$127836,$127837,$127838,$127839,$127840,$127841,$127842,$127843,$127844,$127845,$127846,$127847,$127848),(nextval($127849),$127850,$127851,$127852,$127853,$127854,$127855,$127856,$127857,$127858,$127859,$127860,$127861,$127862),(nextval($127863),$127864,$127865,$127866,$127867,$127868,$127869,$127870,$127871,$127872,$127873,$127874,$127875,$127876),(nextval($127877),$127878,$127879,$127880,$127881,$127882,$127883,$127884,$127885,$127886,$127887,$127888,$127889,$127890),(nextval($127891),$127892,$127893,$127894,$127895,$127896,$127897,$127898,$127899,$127900,$127901,$127902,$127903,$127904),(nextval($127905),$127906,$127907,$127908,$127909,$127910,$127911,$127912,$127913,$127914,$127915,$127916,$127917,$127918),(nextval($127919),$127920,$127921,$127922,$127923,$127924,$127925,$127926,$127927,$127928,$127929,$127930,$127931,$127932),(nextval($127933),$127934,$127935,$127936,$127937,$127938,$127939,$127940,$127941,$127942,$127943,$127944,$127945,$127946),(nextval($127947),$127948,$127949,$127950,$127951,$127952,$127953,$127954,$127955,$127956,$127957,$127958,$127959,$127960),(nextval($127961),$127962,$127963,$127964,$127965,$127966,$127967,$127968,$127969,$127970,$127971,$127972,$127973,$127974),(nextval($127975),$127976,$127977,$127978,$127979,$127980,$127981,$127982,$127983,$127984,$127985,$127986,$127987,$127988),(nextval($127989),$127990,$127991,$127992,$127993,$127994,$127995,$127996,$127997,$127998,$127999,$128000,$128001,$128002),(nextval($128003),$128004,$128005,$128006,$128007,$128008,$128009,$128010,$128011,$128012,$128013,$128014,$128015,$128016),(nextval($128017),$128018,$128019,$128020,$128021,$128022,$128023,$128024,$128025,$128026,$128027,$128028,$128029,$128030),(nextval($128031),$128032,$128033,$128034,$128035,$128036,$128037,$128038,$128039,$128040,$128041,$128042,$128043,$128044),(nextval($128045),$128046,$128047,$128048,$128049,$128050,$128051,$128052,$128053,$128054,$128055,$128056,$128057,$128058),(nextval($128059),$128060,$128061,$128062,$128063,$128064,$128065,$128066,$128067,$128068,$128069,$128070,$128071,$128072),(nextval($128073),$128074,$128075,$128076,$128077,$128078,$128079,$128080,$128081,$128082,$128083,$128084,$128085,$128086),(nextval($128087),$128088,$128089,$128090,$128091,$128092,$128093,$128094,$128095,$128096,$128097,$128098,$128099,$128100),(nextval($128101),$128102,$128103,$128104,$128105,$128106,$128107,$128108,$128109,$128110,$128111,$128112,$128113,$128114),(nextval($128115),$128116,$128117,$128118,$128119,$128120,$128121,$128122,$128123,$128124,$128125,$128126,$128127,$128128),(nextval($128129),$128130,$128131,$128132,$128133,$128134,$128135,$128136,$128137,$128138,$128139,$128140,$128141,$128142),(nextval($128143),$128144,$128145,$128146,$128147,$128148,$128149,$128150,$128151,$128152,$128153,$128154,$128155,$128156),(nextval($128157),$128158,$128159,$128160,$128161,$128162,$128163,$128164,$128165,$128166,$128167,$128168,$128169,$128170),(nextval($128171),$128172,$128173,$128174,$128175,$128176,$128177,$128178,$128179,$128180,$128181,$128182,$128183,$128184),(nextval($128185),$128186,$128187,$128188,$128189,$128190,$128191,$128192,$128193,$128194,$128195,$128196,$128197,$128198),(nextval($128199),$128200,$128201,$128202,$128203,$128204,$128205,$128206,$128207,$128208,$128209,$128210,$128211,$128212),(nextval($128213),$128214,$128215,$128216,$128217,$128218,$128219,$128220,$128221,$128222,$128223,$128224,$128225,$128226),(nextval($128227),$128228,$128229,$128230,$128231,$128232,$128233,$128234,$128235,$128236,$128237,$128238,$128239,$128240),(nextval($128241),$128242,$128243,$128244,$128245,$128246,$128247,$128248,$128249,$128250,$128251,$128252,$128253,$128254),(nextval($128255),$128256,$128257,$128258,$128259,$128260,$128261,$128262,$128263,$128264,$128265,$128266,$128267,$128268),(nextval($128269),$128270,$128271,$128272,$128273,$128274,$128275,$128276,$128277,$128278,$128279,$128280,$128281,$128282),(nextval($128283),$128284,$128285,$128286,$128287,$128288,$128289,$128290,$128291,$128292,$128293,$128294,$128295,$128296),(nextval($128297),$128298,$128299,$128300,$128301,$128302,$128303,$128304,$128305,$128306,$128307,$128308,$128309,$128310),(nextval($128311),$128312,$128313,$128314,$128315,$128316,$128317,$128318,$128319,$128320,$128321,$128322,$128323,$128324),(nextval($128325),$128326,$128327,$128328,$128329,$128330,$128331,$128332,$128333,$128334,$128335,$128336,$128337,$128338),(nextval($128339),$128340,$128341,$128342,$128343,$128344,$128345,$128346,$128347,$128348,$128349,$128350,$128351,$128352),(nextval($128353),$128354,$128355,$128356,$128357,$128358,$128359,$128360,$128361,$128362,$128363,$128364,$128365,$128366),(nextval($128367),$128368,$128369,$128370,$128371,$128372,$128373,$128374,$128375,$128376,$128377,$128378,$128379,$128380),(nextval($128381),$128382,$128383,$128384,$128385,$128386,$128387,$128388,$128389,$128390,$128391,$128392,$128393,$128394),(nextval($128395),$128396,$128397,$128398,$128399,$128400,$128401,$128402,$128403,$128404,$128405,$128406,$128407,$128408),(nextval($128409),$128410,$128411,$128412,$128413,$128414,$128415,$128416,$128417,$128418,$128419,$128420,$128421,$128422),(nextval($128423),$128424,$128425,$128426,$128427,$128428,$128429,$128430,$128431,$128432,$128433,$128434,$128435,$128436),(nextval($128437),$128438,$128439,$128440,$128441,$128442,$128443,$128444,$128445,$128446,$128447,$128448,$128449,$128450),(nextval($128451),$128452,$128453,$128454,$128455,$128456,$128457,$128458,$128459,$128460,$128461,$128462,$128463,$128464),(nextval($128465),$128466,$128467,$128468,$128469,$128470,$128471,$128472,$128473,$128474,$128475,$128476,$128477,$128478),(nextval($128479),$128480,$128481,$128482,$128483,$128484,$128485,$128486,$128487,$128488,$128489,$128490,$128491,$128492),(nextval($128493),$128494,$128495,$128496,$128497,$128498,$128499,$128500,$128501,$128502,$128503,$128504,$128505,$128506),(nextval($128507),$128508,$128509,$128510,$128511,$128512,$128513,$128514,$128515,$128516,$128517,$128518,$128519,$128520),(nextval($128521),$128522,$128523,$128524,$128525,$128526,$128527,$128528,$128529,$128530,$128531,$128532,$128533,$128534),(nextval($128535),$128536,$128537,$128538,$128539,$128540,$128541,$128542,$128543,$128544,$128545,$128546,$128547,$128548),(nextval($128549),$128550,$128551,$128552,$128553,$128554,$128555,$128556,$128557,$128558,$128559,$128560,$128561,$128562),(nextval($128563),$128564,$128565,$128566,$128567,$128568,$128569,$128570,$128571,$128572,$128573,$128574,$128575,$128576),(nextval($128577),$128578,$128579,$128580,$128581,$128582,$128583,$128584,$128585,$128586,$128587,$128588,$128589,$128590),(nextval($128591),$128592,$128593,$128594,$128595,$128596,$128597,$128598,$128599,$128600,$128601,$128602,$128603,$128604),(nextval($128605),$128606,$128607,$128608,$128609,$128610,$128611,$128612,$128613,$128614,$128615,$128616,$128617,$128618),(nextval($128619),$128620,$128621,$128622,$128623,$128624,$128625,$128626,$128627,$128628,$128629,$128630,$128631,$128632),(nextval($128633),$128634,$128635,$128636,$128637,$128638,$128639,$128640,$128641,$128642,$128643,$128644,$128645,$128646),(nextval($128647),$128648,$128649,$128650,$128651,$128652,$128653,$128654,$128655,$128656,$128657,$128658,$128659,$128660),(nextval($128661),$128662,$128663,$128664,$128665,$128666,$128667,$128668,$128669,$128670,$128671,$128672,$128673,$128674),(nextval($128675),$128676,$128677,$128678,$128679,$128680,$128681,$128682,$128683,$128684,$128685,$128686,$128687,$128688),(nextval($128689),$128690,$128691,$128692,$128693,$128694,$128695,$128696,$128697,$128698,$128699,$128700,$128701,$128702),(nextval($128703),$128704,$128705,$128706,$128707,$128708,$128709,$128710,$128711,$128712,$128713,$128714,$128715,$128716),(nextval($128717),$128718,$128719,$128720,$128721,$128722,$128723,$128724,$128725,$128726,$128727,$128728,$128729,$128730),(nextval($128731),$128732,$128733,$128734,$128735,$128736,$128737,$128738,$128739,$128740,$128741,$128742,$128743,$128744),(nextval($128745),$128746,$128747,$128748,$128749,$128750,$128751,$128752,$128753,$128754,$128755,$128756,$128757,$128758),(nextval($128759),$128760,$128761,$128762,$128763,$128764,$128765,$128766,$128767,$128768,$128769,$128770,$128771,$128772),(nextval($128773),$128774,$128775,$128776,$128777,$128778,$128779,$128780,$128781,$128782,$128783,$128784,$128785,$128786),(nextval($128787),$128788,$128789,$128790,$128791,$128792,$128793,$128794,$128795,$128796,$128797,$128798,$128799,$128800),(nextval($128801),$128802,$128803,$128804,$128805,$128806,$128807,$128808,$128809,$128810,$128811,$128812,$128813,$128814),(nextval($128815),$128816,$128817,$128818,$128819,$128820,$128821,$128822,$128823,$128824,$128825,$128826,$128827,$128828),(nextval($128829),$128830,$128831,$128832,$128833,$128834,$128835,$128836,$128837,$128838,$128839,$128840,$128841,$128842),(nextval($128843),$128844,$128845,$128846,$128847,$128848,$128849,$128850,$128851,$128852,$128853,$128854,$128855,$128856),(nextval($128857),$128858,$128859,$128860,$128861,$128862,$128863,$128864,$128865,$128866,$128867,$128868,$128869,$128870),(nextval($128871),$128872,$128873,$128874,$128875,$128876,$128877,$128878,$128879,$128880,$128881,$128882,$128883,$128884),(nextval($128885),$128886,$128887,$128888,$128889,$128890,$128891,$128892,$128893,$128894,$128895,$128896,$128897,$128898),(nextval($128899),$128900,$128901,$128902,$128903,$128904,$128905,$128906,$128907,$128908,$128909,$128910,$128911,$128912),(nextval($128913),$128914,$128915,$128916,$128917,$128918,$128919,$128920,$128921,$128922,$128923,$128924,$128925,$128926),(nextval($128927),$128928,$128929,$128930,$128931,$128932,$128933,$128934,$128935,$128936,$128937,$128938,$128939,$128940),(nextval($128941),$128942,$128943,$128944,$128945,$128946,$128947,$128948,$128949,$128950,$128951,$128952,$128953,$128954),(nextval($128955),$128956,$128957,$128958,$128959,$128960,$128961,$128962,$128963,$128964,$128965,$128966,$128967,$128968),(nextval($128969),$128970,$128971,$128972,$128973,$128974,$128975,$128976,$128977,$128978,$128979,$128980,$128981,$128982),(nextval($128983),$128984,$128985,$128986,$128987,$128988,$128989,$128990,$128991,$128992,$128993,$128994,$128995,$128996),(nextval($128997),$128998,$128999,$129000,$129001,$129002,$129003,$129004,$129005,$129006,$129007,$129008,$129009,$129010),(nextval($129011),$129012,$129013,$129014,$129015,$129016,$129017,$129018,$129019,$129020,$129021,$129022,$129023,$129024),(nextval($129025),$129026,$129027,$129028,$129029,$129030,$129031,$129032,$129033,$129034,$129035,$129036,$129037,$129038),(nextval($129039),$129040,$129041,$129042,$129043,$129044,$129045,$129046,$129047,$129048,$129049,$129050,$129051,$129052),(nextval($129053),$129054,$129055,$129056,$129057,$129058,$129059,$129060,$129061,$129062,$129063,$129064,$129065,$129066),(nextval($129067),$129068,$129069,$129070,$129071,$129072,$129073,$129074,$129075,$129076,$129077,$129078,$129079,$129080),(nextval($129081),$129082,$129083,$129084,$129085,$129086,$129087,$129088,$129089,$129090,$129091,$129092,$129093,$129094),(nextval($129095),$129096,$129097,$129098,$129099,$129100,$129101,$129102,$129103,$129104,$129105,$129106,$129107,$129108),(nextval($129109),$129110,$129111,$129112,$129113,$129114,$129115,$129116,$129117,$129118,$129119,$129120,$129121,$129122),(nextval($129123),$129124,$129125,$129126,$129127,$129128,$129129,$129130,$129131,$129132,$129133,$129134,$129135,$129136),(nextval($129137),$129138,$129139,$129140,$129141,$129142,$129143,$129144,$129145,$129146,$129147,$129148,$129149,$129150),(nextval($129151),$129152,$129153,$129154,$129155,$129156,$129157,$129158,$129159,$129160,$129161,$129162,$129163,$129164),(nextval($129165),$129166,$129167,$129168,$129169,$129170,$129171,$129172,$129173,$129174,$129175,$129176,$129177,$129178),(nextval($129179),$129180,$129181,$129182,$129183,$129184,$129185,$129186,$129187,$129188,$129189,$129190,$129191,$129192),(nextval($129193),$129194,$129195,$129196,$129197,$129198,$129199,$129200,$129201,$129202,$129203,$129204,$129205,$129206),(nextval($129207),$129208,$129209,$129210,$129211,$129212,$129213,$129214,$129215,$129216,$129217,$129218,$129219,$129220),(nextval($129221),$129222,$129223,$129224,$129225,$129226,$129227,$129228,$129229,$129230,$129231,$129232,$129233,$129234),(nextval($129235),$129236,$129237,$129238,$129239,$129240,$129241,$129242,$129243,$129244,$129245,$129246,$129247,$129248),(nextval($129249),$129250,$129251,$129252,$129253,$129254,$129255,$129256,$129257,$129258,$129259,$129260,$129261,$129262),(nextval($129263),$129264,$129265,$129266,$129267,$129268,$129269,$129270,$129271,$129272,$129273,$129274,$129275,$129276),(nextval($129277),$129278,$129279,$129280,$129281,$129282,$129283,$129284,$129285,$129286,$129287,$129288,$129289,$129290),(nextval($129291),$129292,$129293,$129294,$129295,$129296,$129297,$129298,$129299,$129300,$129301,$129302,$129303,$129304),(nextval($129305),$129306,$129307,$129308,$129309,$129310,$129311,$129312,$129313,$129314,$129315,$129316,$129317,$129318),(nextval($129319),$129320,$129321,$129322,$129323,$129324,$129325,$129326,$129327,$129328,$129329,$129330,$129331,$129332),(nextval($129333),$129334,$129335,$129336,$129337,$129338,$129339,$129340,$129341,$129342,$129343,$129344,$129345,$129346),(nextval($129347),$129348,$129349,$129350,$129351,$129352,$129353,$129354,$129355,$129356,$129357,$129358,$129359,$129360),(nextval($129361),$129362,$129363,$129364,$129365,$129366,$129367,$129368,$129369,$129370,$129371,$129372,$129373,$129374),(nextval($129375),$129376,$129377,$129378,$129379,$129380,$129381,$129382,$129383,$129384,$129385,$129386,$129387,$129388),(nextval($129389),$129390,$129391,$129392,$129393,$129394,$129395,$129396,$129397,$129398,$129399,$129400,$129401,$129402),(nextval($129403),$129404,$129405,$129406,$129407,$129408,$129409,$129410,$129411,$129412,$129413,$129414,$129415,$129416),(nextval($129417),$129418,$129419,$129420,$129421,$129422,$129423,$129424,$129425,$129426,$129427,$129428,$129429,$129430),(nextval($129431),$129432,$129433,$129434,$129435,$129436,$129437,$129438,$129439,$129440,$129441,$129442,$129443,$129444),(nextval($129445),$129446,$129447,$129448,$129449,$129450,$129451,$129452,$129453,$129454,$129455,$129456,$129457,$129458),(nextval($129459),$129460,$129461,$129462,$129463,$129464,$129465,$129466,$129467,$129468,$129469,$129470,$129471,$129472),(nextval($129473),$129474,$129475,$129476,$129477,$129478,$129479,$129480,$129481,$129482,$129483,$129484,$129485,$129486),(nextval($129487),$129488,$129489,$129490,$129491,$129492,$129493,$129494,$129495,$129496,$129497,$129498,$129499,$129500),(nextval($129501),$129502,$129503,$129504,$129505,$129506,$129507,$129508,$129509,$129510,$129511,$129512,$129513,$129514),(nextval($129515),$129516,$129517,$129518,$129519,$129520,$129521,$129522,$129523,$129524,$129525,$129526,$129527,$129528),(nextval($129529),$129530,$129531,$129532,$129533,$129534,$129535,$129536,$129537,$129538,$129539,$129540,$129541,$129542),(nextval($129543),$129544,$129545,$129546,$129547,$129548,$129549,$129550,$129551,$129552,$129553,$129554,$129555,$129556),(nextval($129557),$129558,$129559,$129560,$129561,$129562,$129563,$129564,$129565,$129566,$129567,$129568,$129569,$129570),(nextval($129571),$129572,$129573,$129574,$129575,$129576,$129577,$129578,$129579,$129580,$129581,$129582,$129583,$129584),(nextval($129585),$129586,$129587,$129588,$129589,$129590,$129591,$129592,$129593,$129594,$129595,$129596,$129597,$129598),(nextval($129599),$129600,$129601,$129602,$129603,$129604,$129605,$129606,$129607,$129608,$129609,$129610,$129611,$129612),(nextval($129613),$129614,$129615,$129616,$129617,$129618,$129619,$129620,$129621,$129622,$129623,$129624,$129625,$129626),(nextval($129627),$129628,$129629,$129630,$129631,$129632,$129633,$129634,$129635,$129636,$129637,$129638,$129639,$129640),(nextval($129641),$129642,$129643,$129644,$129645,$129646,$129647,$129648,$129649,$129650,$129651,$129652,$129653,$129654),(nextval($129655),$129656,$129657,$129658,$129659,$129660,$129661,$129662,$129663,$129664,$129665,$129666,$129667,$129668),(nextval($129669),$129670,$129671,$129672,$129673,$129674,$129675,$129676,$129677,$129678,$129679,$129680,$129681,$129682),(nextval($129683),$129684,$129685,$129686,$129687,$129688,$129689,$129690,$129691,$129692,$129693,$129694,$129695,$129696),(nextval($129697),$129698,$129699,$129700,$129701,$129702,$129703,$129704,$129705,$129706,$129707,$129708,$129709,$129710),(nextval($129711),$129712,$129713,$129714,$129715,$129716,$129717,$129718,$129719,$129720,$129721,$129722,$129723,$129724),(nextval($129725),$129726,$129727,$129728,$129729,$129730,$129731,$129732,$129733,$129734,$129735,$129736,$129737,$129738),(nextval($129739),$129740,$129741,$129742,$129743,$129744,$129745,$129746,$129747,$129748,$129749,$129750,$129751,$129752),(nextval($129753),$129754,$129755,$129756,$129757,$129758,$129759,$129760,$129761,$129762,$129763,$129764,$129765,$129766),(nextval($129767),$129768,$129769,$129770,$129771,$129772,$129773,$129774,$129775,$129776,$129777,$129778,$129779,$129780),(nextval($129781),$129782,$129783,$129784,$129785,$129786,$129787,$129788,$129789,$129790,$129791,$129792,$129793,$129794),(nextval($129795),$129796,$129797,$129798,$129799,$129800,$129801,$129802,$129803,$129804,$129805,$129806,$129807,$129808),(nextval($129809),$129810,$129811,$129812,$129813,$129814,$129815,$129816,$129817,$129818,$129819,$129820,$129821,$129822),(nextval($129823),$129824,$129825,$129826,$129827,$129828,$129829,$129830,$129831,$129832,$129833,$129834,$129835,$129836),(nextval($129837),$129838,$129839,$129840,$129841,$129842,$129843,$129844,$129845,$129846,$129847,$129848,$129849,$129850),(nextval($129851),$129852,$129853,$129854,$129855,$129856,$129857,$129858,$129859,$129860,$129861,$129862,$129863,$129864),(nextval($129865),$129866,$129867,$129868,$129869,$129870,$129871,$129872,$129873,$129874,$129875,$129876,$129877,$129878),(nextval($129879),$129880,$129881,$129882,$129883,$129884,$129885,$129886,$129887,$129888,$129889,$129890,$129891,$129892),(nextval($129893),$129894,$129895,$129896,$129897,$129898,$129899,$129900,$129901,$129902,$129903,$129904,$129905,$129906),(nextval($129907),$129908,$129909,$129910,$129911,$129912,$129913,$129914,$129915,$129916,$129917,$129918,$129919,$129920),(nextval($129921),$129922,$129923,$129924,$129925,$129926,$129927,$129928,$129929,$129930,$129931,$129932,$129933,$129934),(nextval($129935),$129936,$129937,$129938,$129939,$129940,$129941,$129942,$129943,$129944,$129945,$129946,$129947,$129948),(nextval($129949),$129950,$129951,$129952,$129953,$129954,$129955,$129956,$129957,$129958,$129959,$129960,$129961,$129962),(nextval($129963),$129964,$129965,$129966,$129967,$129968,$129969,$129970,$129971,$129972,$129973,$129974,$129975,$129976),(nextval($129977),$129978,$129979,$129980,$129981,$129982,$129983,$129984,$129985,$129986,$129987,$129988,$129989,$129990),(nextval($129991),$129992,$129993,$129994,$129995,$129996,$129997,$129998,$129999,$130000,$130001,$130002,$130003,$130004),(nextval($130005),$130006,$130007,$130008,$130009,$130010,$130011,$130012,$130013,$130014,$130015,$130016,$130017,$130018),(nextval($130019),$130020,$130021,$130022,$130023,$130024,$130025,$130026,$130027,$130028,$130029,$130030,$130031,$130032),(nextval($130033),$130034,$130035,$130036,$130037,$130038,$130039,$130040,$130041,$130042,$130043,$130044,$130045,$130046),(nextval($130047),$130048,$130049,$130050,$130051,$130052,$130053,$130054,$130055,$130056,$130057,$130058,$130059,$130060),(nextval($130061),$130062,$130063,$130064,$130065,$130066,$130067,$130068,$130069,$130070,$130071,$130072,$130073,$130074),(nextval($130075),$130076,$130077,$130078,$130079,$130080,$130081,$130082,$130083,$130084,$130085,$130086,$130087,$130088),(nextval($130089),$130090,$130091,$130092,$130093,$130094,$130095,$130096,$130097,$130098,$130099,$130100,$130101,$130102),(nextval($130103),$130104,$130105,$130106,$130107,$130108,$130109,$130110,$130111,$130112,$130113,$130114,$130115,$130116),(nextval($130117),$130118,$130119,$130120,$130121,$130122,$130123,$130124,$130125,$130126,$130127,$130128,$130129,$130130),(nextval($130131),$130132,$130133,$130134,$130135,$130136,$130137,$130138,$130139,$130140,$130141,$130142,$130143,$130144),(nextval($130145),$130146,$130147,$130148,$130149,$130150,$130151,$130152,$130153,$130154,$130155,$130156,$130157,$130158),(nextval($130159),$130160,$130161,$130162,$130163,$130164,$130165,$130166,$130167,$130168,$130169,$130170,$130171,$130172),(nextval($130173),$130174,$130175,$130176,$130177,$130178,$130179,$130180,$130181,$130182,$130183,$130184,$130185,$130186),(nextval($130187),$130188,$130189,$130190,$130191,$130192,$130193,$130194,$130195,$130196,$130197,$130198,$130199,$130200),(nextval($130201),$130202,$130203,$130204,$130205,$130206,$130207,$130208,$130209,$130210,$130211,$130212,$130213,$130214),(nextval($130215),$130216,$130217,$130218,$130219,$130220,$130221,$130222,$130223,$130224,$130225,$130226,$130227,$130228),(nextval($130229),$130230,$130231,$130232,$130233,$130234,$130235,$130236,$130237,$130238,$130239,$130240,$130241,$130242),(nextval($130243),$130244,$130245,$130246,$130247,$130248,$130249,$130250,$130251,$130252,$130253,$130254,$130255,$130256),(nextval($130257),$130258,$130259,$130260,$130261,$130262,$130263,$130264,$130265,$130266,$130267,$130268,$130269,$130270),(nextval($130271),$130272,$130273,$130274,$130275,$130276,$130277,$130278,$130279,$130280,$130281,$130282,$130283,$130284),(nextval($130285),$130286,$130287,$130288,$130289,$130290,$130291,$130292,$130293,$130294,$130295,$130296,$130297,$130298),(nextval($130299),$130300,$130301,$130302,$130303,$130304,$130305,$130306,$130307,$130308,$130309,$130310,$130311,$130312),(nextval($130313),$130314,$130315,$130316,$130317,$130318,$130319,$130320,$130321,$130322,$130323,$130324,$130325,$130326),(nextval($130327),$130328,$130329,$130330,$130331,$130332,$130333,$130334,$130335,$130336,$130337,$130338,$130339,$130340),(nextval($130341),$130342,$130343,$130344,$130345,$130346,$130347,$130348,$130349,$130350,$130351,$130352,$130353,$130354),(nextval($130355),$130356,$130357,$130358,$130359,$130360,$130361,$130362,$130363,$130364,$130365,$130366,$130367,$130368),(nextval($130369),$130370,$130371,$130372,$130373,$130374,$130375,$130376,$130377,$130378,$130379,$130380,$130381,$130382),(nextval($130383),$130384,$130385,$130386,$130387,$130388,$130389,$130390,$130391,$130392,$130393,$130394,$130395,$130396),(nextval($130397),$130398,$130399,$130400,$130401,$130402,$130403,$130404,$130405,$130406,$130407,$130408,$130409,$130410),(nextval($130411),$130412,$130413,$130414,$130415,$130416,$130417,$130418,$130419,$130420,$130421,$130422,$130423,$130424),(nextval($130425),$130426,$130427,$130428,$130429,$130430,$130431,$130432,$130433,$130434,$130435,$130436,$130437,$130438),(nextval($130439),$130440,$130441,$130442,$130443,$130444,$130445,$130446,$130447,$130448,$130449,$130450,$130451,$130452),(nextval($130453),$130454,$130455,$130456,$130457,$130458,$130459,$130460,$130461,$130462,$130463,$130464,$130465,$130466),(nextval($130467),$130468,$130469,$130470,$130471,$130472,$130473,$130474,$130475,$130476,$130477,$130478,$130479,$130480),(nextval($130481),$130482,$130483,$130484,$130485,$130486,$130487,$130488,$130489,$130490,$130491,$130492,$130493,$130494),(nextval($130495),$130496,$130497,$130498,$130499,$130500,$130501,$130502,$130503,$130504,$130505,$130506,$130507,$130508),(nextval($130509),$130510,$130511,$130512,$130513,$130514,$130515,$130516,$130517,$130518,$130519,$130520,$130521,$130522),(nextval($130523),$130524,$130525,$130526,$130527,$130528,$130529,$130530,$130531,$130532,$130533,$130534,$130535,$130536),(nextval($130537),$130538,$130539,$130540,$130541,$130542,$130543,$130544,$130545,$130546,$130547,$130548,$130549,$130550),(nextval($130551),$130552,$130553,$130554,$130555,$130556,$130557,$130558,$130559,$130560,$130561,$130562,$130563,$130564),(nextval($130565),$130566,$130567,$130568,$130569,$130570,$130571,$130572,$130573,$130574,$130575,$130576,$130577,$130578),(nextval($130579),$130580,$130581,$130582,$130583,$130584,$130585,$130586,$130587,$130588,$130589,$130590,$130591,$130592),(nextval($130593),$130594,$130595,$130596,$130597,$130598,$130599,$130600,$130601,$130602,$130603,$130604,$130605,$130606),(nextval($130607),$130608,$130609,$130610,$130611,$130612,$130613,$130614,$130615,$130616,$130617,$130618,$130619,$130620),(nextval($130621),$130622,$130623,$130624,$130625,$130626,$130627,$130628,$130629,$130630,$130631,$130632,$130633,$130634),(nextval($130635),$130636,$130637,$130638,$130639,$130640,$130641,$130642,$130643,$130644,$130645,$130646,$130647,$130648),(nextval($130649),$130650,$130651,$130652,$130653,$130654,$130655,$130656,$130657,$130658,$130659,$130660,$130661,$130662),(nextval($130663),$130664,$130665,$130666,$130667,$130668,$130669,$130670,$130671,$130672,$130673,$130674,$130675,$130676),(nextval($130677),$130678,$130679,$130680,$130681,$130682,$130683,$130684,$130685,$130686,$130687,$130688,$130689,$130690),(nextval($130691),$130692,$130693,$130694,$130695,$130696,$130697,$130698,$130699,$130700,$130701,$130702,$130703,$130704),(nextval($130705),$130706,$130707,$130708,$130709,$130710,$130711,$130712,$130713,$130714,$130715,$130716,$130717,$130718),(nextval($130719),$130720,$130721,$130722,$130723,$130724,$130725,$130726,$130727,$130728,$130729,$130730,$130731,$130732),(nextval($130733),$130734,$130735,$130736,$130737,$130738,$130739,$130740,$130741,$130742,$130743,$130744,$130745,$130746),(nextval($130747),$130748,$130749,$130750,$130751,$130752,$130753,$130754,$130755,$130756,$130757,$130758,$130759,$130760),(nextval($130761),$130762,$130763,$130764,$130765,$130766,$130767,$130768,$130769,$130770,$130771,$130772,$130773,$130774),(nextval($130775),$130776,$130777,$130778,$130779,$130780,$130781,$130782,$130783,$130784,$130785,$130786,$130787,$130788),(nextval($130789),$130790,$130791,$130792,$130793,$130794,$130795,$130796,$130797,$130798,$130799,$130800,$130801,$130802),(nextval($130803),$130804,$130805,$130806,$130807,$130808,$130809,$130810,$130811,$130812,$130813,$130814,$130815,$130816),(nextval($130817),$130818,$130819,$130820,$130821,$130822,$130823,$130824,$130825,$130826,$130827,$130828,$130829,$130830),(nextval($130831),$130832,$130833,$130834,$130835,$130836,$130837,$130838,$130839,$130840,$130841,$130842,$130843,$130844),(nextval($130845),$130846,$130847,$130848,$130849,$130850,$130851,$130852,$130853,$130854,$130855,$130856,$130857,$130858),(nextval($130859),$130860,$130861,$130862,$130863,$130864,$130865,$130866,$130867,$130868,$130869,$130870,$130871,$130872),(nextval($130873),$130874,$130875,$130876,$130877,$130878,$130879,$130880,$130881,$130882,$130883,$130884,$130885,$130886),(nextval($130887),$130888,$130889,$130890,$130891,$130892,$130893,$130894,$130895,$130896,$130897,$130898,$130899,$130900),(nextval($130901),$130902,$130903,$130904,$130905,$130906,$130907,$130908,$130909,$130910,$130911,$130912,$130913,$130914),(nextval($130915),$130916,$130917,$130918,$130919,$130920,$130921,$130922,$130923,$130924,$130925,$130926,$130927,$130928),(nextval($130929),$130930,$130931,$130932,$130933,$130934,$130935,$130936,$130937,$130938,$130939,$130940,$130941,$130942),(nextval($130943),$130944,$130945,$130946,$130947,$130948,$130949,$130950,$130951,$130952,$130953,$130954,$130955,$130956),(nextval($130957),$130958,$130959,$130960,$130961,$130962,$130963,$130964,$130965,$130966,$130967,$130968,$130969,$130970),(nextval($130971),$130972,$130973,$130974,$130975,$130976,$130977,$130978,$130979,$130980,$130981,$130982,$130983,$130984),(nextval($130985),$130986,$130987,$130988,$130989,$130990,$130991,$130992,$130993,$130994,$130995,$130996,$130997,$130998),(nextval($130999),$131000,$131001,$131002,$131003,$131004,$131005,$131006,$131007,$131008,$131009,$131010,$131011,$131012),(nextval($131013),$131014,$131015,$131016,$131017,$131018,$131019,$131020,$131021,$131022,$131023,$131024,$131025,$131026),(nextval($131027),$131028,$131029,$131030,$131031,$131032,$131033,$131034,$131035,$131036,$131037,$131038,$131039,$131040),(nextval($131041),$131042,$131043,$131044,$131045,$131046,$131047,$131048,$131049,$131050,$131051,$131052,$131053,$131054),(nextval($131055),$131056,$131057,$131058,$131059,$131060,$131061,$131062,$131063,$131064,$131065,$131066,$131067,$131068),(nextval($131069),$131070,$131071,$131072,$131073,$131074,$131075,$131076,$131077,$131078,$131079,$131080,$131081,$131082),(nextval($131083),$131084,$131085,$131086,$131087,$131088,$131089,$131090,$131091,$131092,$131093,$131094,$131095,$131096),(nextval($131097),$131098,$131099,$131100,$131101,$131102,$131103,$131104,$131105,$131106,$131107,$131108,$131109,$131110),(nextval($131111),$131112,$131113,$131114,$131115,$131116,$131117,$131118,$131119,$131120,$131121,$131122,$131123,$131124),(nextval($131125),$131126,$131127,$131128,$131129,$131130,$131131,$131132,$131133,$131134,$131135,$131136,$131137,$131138),(nextval($131139),$131140,$131141,$131142,$131143,$131144,$131145,$131146,$131147,$131148,$131149,$131150,$131151,$131152),(nextval($131153),$131154,$131155,$131156,$131157,$131158,$131159,$131160,$131161,$131162,$131163,$131164,$131165,$131166),(nextval($131167),$131168,$131169,$131170,$131171,$131172,$131173,$131174,$131175,$131176,$131177,$131178,$131179,$131180),(nextval($131181),$131182,$131183,$131184,$131185,$131186,$131187,$131188,$131189,$131190,$131191,$131192,$131193,$131194),(nextval($131195),$131196,$131197,$131198,$131199,$131200,$131201,$131202,$131203,$131204,$131205,$131206,$131207,$131208),(nextval($131209),$131210,$131211,$131212,$131213,$131214,$131215,$131216,$131217,$131218,$131219,$131220,$131221,$131222),(nextval($131223),$131224,$131225,$131226,$131227,$131228,$131229,$131230,$131231,$131232,$131233,$131234,$131235,$131236),(nextval($131237),$131238,$131239,$131240,$131241,$131242,$131243,$131244,$131245,$131246,$131247,$131248,$131249,$131250),(nextval($131251),$131252,$131253,$131254,$131255,$131256,$131257,$131258,$131259,$131260,$131261,$131262,$131263,$131264),(nextval($131265),$131266,$131267,$131268,$131269,$131270,$131271,$131272,$131273,$131274,$131275,$131276,$131277,$131278),(nextval($131279),$131280,$131281,$131282,$131283,$131284,$131285,$131286,$131287,$131288,$131289,$131290,$131291,$131292),(nextval($131293),$131294,$131295,$131296,$131297,$131298,$131299,$131300,$131301,$131302,$131303,$131304,$131305,$131306),(nextval($131307),$131308,$131309,$131310,$131311,$131312,$131313,$131314,$131315,$131316,$131317,$131318,$131319,$131320),(nextval($131321),$131322,$131323,$131324,$131325,$131326,$131327,$131328,$131329,$131330,$131331,$131332,$131333,$131334),(nextval($131335),$131336,$131337,$131338,$131339,$131340,$131341,$131342,$131343,$131344,$131345,$131346,$131347,$131348),(nextval($131349),$131350,$131351,$131352,$131353,$131354,$131355,$131356,$131357,$131358,$131359,$131360,$131361,$131362),(nextval($131363),$131364,$131365,$131366,$131367,$131368,$131369,$131370,$131371,$131372,$131373,$131374,$131375,$131376),(nextval($131377),$131378,$131379,$131380,$131381,$131382,$131383,$131384,$131385,$131386,$131387,$131388,$131389,$131390),(nextval($131391),$131392,$131393,$131394,$131395,$131396,$131397,$131398,$131399,$131400,$131401,$131402,$131403,$131404),(nextval($131405),$131406,$131407,$131408,$131409,$131410,$131411,$131412,$131413,$131414,$131415,$131416,$131417,$131418),(nextval($131419),$131420,$131421,$131422,$131423,$131424,$131425,$131426,$131427,$131428,$131429,$131430,$131431,$131432),(nextval($131433),$131434,$131435,$131436,$131437,$131438,$131439,$131440,$131441,$131442,$131443,$131444,$131445,$131446),(nextval($131447),$131448,$131449,$131450,$131451,$131452,$131453,$131454,$131455,$131456,$131457,$131458,$131459,$131460),(nextval($131461),$131462,$131463,$131464,$131465,$131466,$131467,$131468,$131469,$131470,$131471,$131472,$131473,$131474),(nextval($131475),$131476,$131477,$131478,$131479,$131480,$131481,$131482,$131483,$131484,$131485,$131486,$131487,$131488),(nextval($131489),$131490,$131491,$131492,$131493,$131494,$131495,$131496,$131497,$131498,$131499,$131500,$131501,$131502),(nextval($131503),$131504,$131505,$131506,$131507,$131508,$131509,$131510,$131511,$131512,$131513,$131514,$131515,$131516),(nextval($131517),$131518,$131519,$131520,$131521,$131522,$131523,$131524,$131525,$131526,$131527,$131528,$131529,$131530),(nextval($131531),$131532,$131533,$131534,$131535,$131536,$131537,$131538,$131539,$131540,$131541,$131542,$131543,$131544),(nextval($131545),$131546,$131547,$131548,$131549,$131550,$131551,$131552,$131553,$131554,$131555,$131556,$131557,$131558),(nextval($131559),$131560,$131561,$131562,$131563,$131564,$131565,$131566,$131567,$131568,$131569,$131570,$131571,$131572),(nextval($131573),$131574,$131575,$131576,$131577,$131578,$131579,$131580,$131581,$131582,$131583,$131584,$131585,$131586),(nextval($131587),$131588,$131589,$131590,$131591,$131592,$131593,$131594,$131595,$131596,$131597,$131598,$131599,$131600),(nextval($131601),$131602,$131603,$131604,$131605,$131606,$131607,$131608,$131609,$131610,$131611,$131612,$131613,$131614),(nextval($131615),$131616,$131617,$131618,$131619,$131620,$131621,$131622,$131623,$131624,$131625,$131626,$131627,$131628),(nextval($131629),$131630,$131631,$131632,$131633,$131634,$131635,$131636,$131637,$131638,$131639,$131640,$131641,$131642),(nextval($131643),$131644,$131645,$131646,$131647,$131648,$131649,$131650,$131651,$131652,$131653,$131654,$131655,$131656),(nextval($131657),$131658,$131659,$131660,$131661,$131662,$131663,$131664,$131665,$131666,$131667,$131668,$131669,$131670),(nextval($131671),$131672,$131673,$131674,$131675,$131676,$131677,$131678,$131679,$131680,$131681,$131682,$131683,$131684),(nextval($131685),$131686,$131687,$131688,$131689,$131690,$131691,$131692,$131693,$131694,$131695,$131696,$131697,$131698),(nextval($131699),$131700,$131701,$131702,$131703,$131704,$131705,$131706,$131707,$131708,$131709,$131710,$131711,$131712),(nextval($131713),$131714,$131715,$131716,$131717,$131718,$131719,$131720,$131721,$131722,$131723,$131724,$131725,$131726),(nextval($131727),$131728,$131729,$131730,$131731,$131732,$131733,$131734,$131735,$131736,$131737,$131738,$131739,$131740),(nextval($131741),$131742,$131743,$131744,$131745,$131746,$131747,$131748,$131749,$131750,$131751,$131752,$131753,$131754),(nextval($131755),$131756,$131757,$131758,$131759,$131760,$131761,$131762,$131763,$131764,$131765,$131766,$131767,$131768),(nextval($131769),$131770,$131771,$131772,$131773,$131774,$131775,$131776,$131777,$131778,$131779,$131780,$131781,$131782),(nextval($131783),$131784,$131785,$131786,$131787,$131788,$131789,$131790,$131791,$131792,$131793,$131794,$131795,$131796),(nextval($131797),$131798,$131799,$131800,$131801,$131802,$131803,$131804,$131805,$131806,$131807,$131808,$131809,$131810),(nextval($131811),$131812,$131813,$131814,$131815,$131816,$131817,$131818,$131819,$131820,$131821,$131822,$131823,$131824),(nextval($131825),$131826,$131827,$131828,$131829,$131830,$131831,$131832,$131833,$131834,$131835,$131836,$131837,$131838),(nextval($131839),$131840,$131841,$131842,$131843,$131844,$131845,$131846,$131847,$131848,$131849,$131850,$131851,$131852),(nextval($131853),$131854,$131855,$131856,$131857,$131858,$131859,$131860,$131861,$131862,$131863,$131864,$131865,$131866),(nextval($131867),$131868,$131869,$131870,$131871,$131872,$131873,$131874,$131875,$131876,$131877,$131878,$131879,$131880),(nextval($131881),$131882,$131883,$131884,$131885,$131886,$131887,$131888,$131889,$131890,$131891,$131892,$131893,$131894),(nextval($131895),$131896,$131897,$131898,$131899,$131900,$131901,$131902,$131903,$131904,$131905,$131906,$131907,$131908),(nextval($131909),$131910,$131911,$131912,$131913,$131914,$131915,$131916,$131917,$131918,$131919,$131920,$131921,$131922),(nextval($131923),$131924,$131925,$131926,$131927,$131928,$131929,$131930,$131931,$131932,$131933,$131934,$131935,$131936),(nextval($131937),$131938,$131939,$131940,$131941,$131942,$131943,$131944,$131945,$131946,$131947,$131948,$131949,$131950),(nextval($131951),$131952,$131953,$131954,$131955,$131956,$131957,$131958,$131959,$131960,$131961,$131962,$131963,$131964),(nextval($131965),$131966,$131967,$131968,$131969,$131970,$131971,$131972,$131973,$131974,$131975,$131976,$131977,$131978),(nextval($131979),$131980,$131981,$131982,$131983,$131984,$131985,$131986,$131987,$131988,$131989,$131990,$131991,$131992),(nextval($131993),$131994,$131995,$131996,$131997,$131998,$131999,$132000,$132001,$132002,$132003,$132004,$132005,$132006),(nextval($132007),$132008,$132009,$132010,$132011,$132012,$132013,$132014,$132015,$132016,$132017,$132018,$132019,$132020),(nextval($132021),$132022,$132023,$132024,$132025,$132026,$132027,$132028,$132029,$132030,$132031,$132032,$132033,$132034),(nextval($132035),$132036,$132037,$132038,$132039,$132040,$132041,$132042,$132043,$132044,$132045,$132046,$132047,$132048),(nextval($132049),$132050,$132051,$132052,$132053,$132054,$132055,$132056,$132057,$132058,$132059,$132060,$132061,$132062),(nextval($132063),$132064,$132065,$132066,$132067,$132068,$132069,$132070,$132071,$132072,$132073,$132074,$132075,$132076),(nextval($132077),$132078,$132079,$132080,$132081,$132082,$132083,$132084,$132085,$132086,$132087,$132088,$132089,$132090),(nextval($132091),$132092,$132093,$132094,$132095,$132096,$132097,$132098,$132099,$132100,$132101,$132102,$132103,$132104),(nextval($132105),$132106,$132107,$132108,$132109,$132110,$132111,$132112,$132113,$132114,$132115,$132116,$132117,$132118),(nextval($132119),$132120,$132121,$132122,$132123,$132124,$132125,$132126,$132127,$132128,$132129,$132130,$132131,$132132),(nextval($132133),$132134,$132135,$132136,$132137,$132138,$132139,$132140,$132141,$132142,$132143,$132144,$132145,$132146),(nextval($132147),$132148,$132149,$132150,$132151,$132152,$132153,$132154,$132155,$132156,$132157,$132158,$132159,$132160),(nextval($132161),$132162,$132163,$132164,$132165,$132166,$132167,$132168,$132169,$132170,$132171,$132172,$132173,$132174),(nextval($132175),$132176,$132177,$132178,$132179,$132180,$132181,$132182,$132183,$132184,$132185,$132186,$132187,$132188),(nextval($132189),$132190,$132191,$132192,$132193,$132194,$132195,$132196,$132197,$132198,$132199,$132200,$132201,$132202),(nextval($132203),$132204,$132205,$132206,$132207,$132208,$132209,$132210,$132211,$132212,$132213,$132214,$132215,$132216),(nextval($132217),$132218,$132219,$132220,$132221,$132222,$132223,$132224,$132225,$132226,$132227,$132228,$132229,$132230),(nextval($132231),$132232,$132233,$132234,$132235,$132236,$132237,$132238,$132239,$132240,$132241,$132242,$132243,$132244),(nextval($132245),$132246,$132247,$132248,$132249,$132250,$132251,$132252,$132253,$132254,$132255,$132256,$132257,$132258),(nextval($132259),$132260,$132261,$132262,$132263,$132264,$132265,$132266,$132267,$132268,$132269,$132270,$132271,$132272),(nextval($132273),$132274,$132275,$132276,$132277,$132278,$132279,$132280,$132281,$132282,$132283,$132284,$132285,$132286),(nextval($132287),$132288,$132289,$132290,$132291,$132292,$132293,$132294,$132295,$132296,$132297,$132298,$132299,$132300),(nextval($132301),$132302,$132303,$132304,$132305,$132306,$132307,$132308,$132309,$132310,$132311,$132312,$132313,$132314),(nextval($132315),$132316,$132317,$132318,$132319,$132320,$132321,$132322,$132323,$132324,$132325,$132326,$132327,$132328),(nextval($132329),$132330,$132331,$132332,$132333,$132334,$132335,$132336,$132337,$132338,$132339,$132340,$132341,$132342),(nextval($132343),$132344,$132345,$132346,$132347,$132348,$132349,$132350,$132351,$132352,$132353,$132354,$132355,$132356),(nextval($132357),$132358,$132359,$132360,$132361,$132362,$132363,$132364,$132365,$132366,$132367,$132368,$132369,$132370),(nextval($132371),$132372,$132373,$132374,$132375,$132376,$132377,$132378,$132379,$132380,$132381,$132382,$132383,$132384),(nextval($132385),$132386,$132387,$132388,$132389,$132390,$132391,$132392,$132393,$132394,$132395,$132396,$132397,$132398),(nextval($132399),$132400,$132401,$132402,$132403,$132404,$132405,$132406,$132407,$132408,$132409,$132410,$132411,$132412),(nextval($132413),$132414,$132415,$132416,$132417,$132418,$132419,$132420,$132421,$132422,$132423,$132424,$132425,$132426),(nextval($132427),$132428,$132429,$132430,$132431,$132432,$132433,$132434,$132435,$132436,$132437,$132438,$132439,$132440),(nextval($132441),$132442,$132443,$132444,$132445,$132446,$132447,$132448,$132449,$132450,$132451,$132452,$132453,$132454),(nextval($132455),$132456,$132457,$132458,$132459,$132460,$132461,$132462,$132463,$132464,$132465,$132466,$132467,$132468),(nextval($132469),$132470,$132471,$132472,$132473,$132474,$132475,$132476,$132477,$132478,$132479,$132480,$132481,$132482),(nextval($132483),$132484,$132485,$132486,$132487,$132488,$132489,$132490,$132491,$132492,$132493,$132494,$132495,$132496),(nextval($132497),$132498,$132499,$132500,$132501,$132502,$132503,$132504,$132505,$132506,$132507,$132508,$132509,$132510),(nextval($132511),$132512,$132513,$132514,$132515,$132516,$132517,$132518,$132519,$132520,$132521,$132522,$132523,$132524),(nextval($132525),$132526,$132527,$132528,$132529,$132530,$132531,$132532,$132533,$132534,$132535,$132536,$132537,$132538),(nextval($132539),$132540,$132541,$132542,$132543,$132544,$132545,$132546,$132547,$132548,$132549,$132550,$132551,$132552),(nextval($132553),$132554,$132555,$132556,$132557,$132558,$132559,$132560,$132561,$132562,$132563,$132564,$132565,$132566),(nextval($132567),$132568,$132569,$132570,$132571,$132572,$132573,$132574,$132575,$132576,$132577,$132578,$132579,$132580),(nextval($132581),$132582,$132583,$132584,$132585,$132586,$132587,$132588,$132589,$132590,$132591,$132592,$132593,$132594),(nextval($132595),$132596,$132597,$132598,$132599,$132600,$132601,$132602,$132603,$132604,$132605,$132606,$132607,$132608),(nextval($132609),$132610,$132611,$132612,$132613,$132614,$132615,$132616,$132617,$132618,$132619,$132620,$132621,$132622),(nextval($132623),$132624,$132625,$132626,$132627,$132628,$132629,$132630,$132631,$132632,$132633,$132634,$132635,$132636),(nextval($132637),$132638,$132639,$132640,$132641,$132642,$132643,$132644,$132645,$132646,$132647,$132648,$132649,$132650),(nextval($132651),$132652,$132653,$132654,$132655,$132656,$132657,$132658,$132659,$132660,$132661,$132662,$132663,$132664),(nextval($132665),$132666,$132667,$132668,$132669,$132670,$132671,$132672,$132673,$132674,$132675,$132676,$132677,$132678),(nextval($132679),$132680,$132681,$132682,$132683,$132684,$132685,$132686,$132687,$132688,$132689,$132690,$132691,$132692),(nextval($132693),$132694,$132695,$132696,$132697,$132698,$132699,$132700,$132701,$132702,$132703,$132704,$132705,$132706),(nextval($132707),$132708,$132709,$132710,$132711,$132712,$132713,$132714,$132715,$132716,$132717,$132718,$132719,$132720),(nextval($132721),$132722,$132723,$132724,$132725,$132726,$132727,$132728,$132729,$132730,$132731,$132732,$132733,$132734),(nextval($132735),$132736,$132737,$132738,$132739,$132740,$132741,$132742,$132743,$132744,$132745,$132746,$132747,$132748),(nextval($132749),$132750,$132751,$132752,$132753,$132754,$132755,$132756,$132757,$132758,$132759,$132760,$132761,$132762),(nextval($132763),$132764,$132765,$132766,$132767,$132768,$132769,$132770,$132771,$132772,$132773,$132774,$132775,$132776),(nextval($132777),$132778,$132779,$132780,$132781,$132782,$132783,$132784,$132785,$132786,$132787,$132788,$132789,$132790),(nextval($132791),$132792,$132793,$132794,$132795,$132796,$132797,$132798,$132799,$132800,$132801,$132802,$132803,$132804),(nextval($132805),$132806,$132807,$132808,$132809,$132810,$132811,$132812,$132813,$132814,$132815,$132816,$132817,$132818),(nextval($132819),$132820,$132821,$132822,$132823,$132824,$132825,$132826,$132827,$132828,$132829,$132830,$132831,$132832),(nextval($132833),$132834,$132835,$132836,$132837,$132838,$132839,$132840,$132841,$132842,$132843,$132844,$132845,$132846),(nextval($132847),$132848,$132849,$132850,$132851,$132852,$132853,$132854,$132855,$132856,$132857,$132858,$132859,$132860),(nextval($132861),$132862,$132863,$132864,$132865,$132866,$132867,$132868,$132869,$132870,$132871,$132872,$132873,$132874),(nextval($132875),$132876,$132877,$132878,$132879,$132880,$132881,$132882,$132883,$132884,$132885,$132886,$132887,$132888),(nextval($132889),$132890,$132891,$132892,$132893,$132894,$132895,$132896,$132897,$132898,$132899,$132900,$132901,$132902),(nextval($132903),$132904,$132905,$132906,$132907,$132908,$132909,$132910,$132911,$132912,$132913,$132914,$132915,$132916),(nextval($132917),$132918,$132919,$132920,$132921,$132922,$132923,$132924,$132925,$132926,$132927,$132928,$132929,$132930),(nextval($132931),$132932,$132933,$132934,$132935,$132936,$132937,$132938,$132939,$132940,$132941,$132942,$132943,$132944),(nextval($132945),$132946,$132947,$132948,$132949,$132950,$132951,$132952,$132953,$132954,$132955,$132956,$132957,$132958),(nextval($132959),$132960,$132961,$132962,$132963,$132964,$132965,$132966,$132967,$132968,$132969,$132970,$132971,$132972),(nextval($132973),$132974,$132975,$132976,$132977,$132978,$132979,$132980,$132981,$132982,$132983,$132984,$132985,$132986),(nextval($132987),$132988,$132989,$132990,$132991,$132992,$132993,$132994,$132995,$132996,$132997,$132998,$132999,$133000),(nextval($133001),$133002,$133003,$133004,$133005,$133006,$133007,$133008,$133009,$133010,$133011,$133012,$133013,$133014),(nextval($133015),$133016,$133017,$133018,$133019,$133020,$133021,$133022,$133023,$133024,$133025,$133026,$133027,$133028),(nextval($133029),$133030,$133031,$133032,$133033,$133034,$133035,$133036,$133037,$133038,$133039,$133040,$133041,$133042),(nextval($133043),$133044,$133045,$133046,$133047,$133048,$133049,$133050,$133051,$133052,$133053,$133054,$133055,$133056),(nextval($133057),$133058,$133059,$133060,$133061,$133062,$133063,$133064,$133065,$133066,$133067,$133068,$133069,$133070),(nextval($133071),$133072,$133073,$133074,$133075,$133076,$133077,$133078,$133079,$133080,$133081,$133082,$133083,$133084),(nextval($133085),$133086,$133087,$133088,$133089,$133090,$133091,$133092,$133093,$133094,$133095,$133096,$133097,$133098),(nextval($133099),$133100,$133101,$133102,$133103,$133104,$133105,$133106,$133107,$133108,$133109,$133110,$133111,$133112),(nextval($133113),$133114,$133115,$133116,$133117,$133118,$133119,$133120,$133121,$133122,$133123,$133124,$133125,$133126),(nextval($133127),$133128,$133129,$133130,$133131,$133132,$133133,$133134,$133135,$133136,$133137,$133138,$133139,$133140),(nextval($133141),$133142,$133143,$133144,$133145,$133146,$133147,$133148,$133149,$133150,$133151,$133152,$133153,$133154),(nextval($133155),$133156,$133157,$133158,$133159,$133160,$133161,$133162,$133163,$133164,$133165,$133166,$133167,$133168),(nextval($133169),$133170,$133171,$133172,$133173,$133174,$133175,$133176,$133177,$133178,$133179,$133180,$133181,$133182),(nextval($133183),$133184,$133185,$133186,$133187,$133188,$133189,$133190,$133191,$133192,$133193,$133194,$133195,$133196),(nextval($133197),$133198,$133199,$133200,$133201,$133202,$133203,$133204,$133205,$133206,$133207,$133208,$133209,$133210),(nextval($133211),$133212,$133213,$133214,$133215,$133216,$133217,$133218,$133219,$133220,$133221,$133222,$133223,$133224),(nextval($133225),$133226,$133227,$133228,$133229,$133230,$133231,$133232,$133233,$133234,$133235,$133236,$133237,$133238),(nextval($133239),$133240,$133241,$133242,$133243,$133244,$133245,$133246,$133247,$133248,$133249,$133250,$133251,$133252),(nextval($133253),$133254,$133255,$133256,$133257,$133258,$133259,$133260,$133261,$133262,$133263,$133264,$133265,$133266),(nextval($133267),$133268,$133269,$133270,$133271,$133272,$133273,$133274,$133275,$133276,$133277,$133278,$133279,$133280),(nextval($133281),$133282,$133283,$133284,$133285,$133286,$133287,$133288,$133289,$133290,$133291,$133292,$133293,$133294),(nextval($133295),$133296,$133297,$133298,$133299,$133300,$133301,$133302,$133303,$133304,$133305,$133306,$133307,$133308),(nextval($133309),$133310,$133311,$133312,$133313,$133314,$133315,$133316,$133317,$133318,$133319,$133320,$133321,$133322),(nextval($133323),$133324,$133325,$133326,$133327,$133328,$133329,$133330,$133331,$133332,$133333,$133334,$133335,$133336),(nextval($133337),$133338,$133339,$133340,$133341,$133342,$133343,$133344,$133345,$133346,$133347,$133348,$133349,$133350),(nextval($133351),$133352,$133353,$133354,$133355,$133356,$133357,$133358,$133359,$133360,$133361,$133362,$133363,$133364),(nextval($133365),$133366,$133367,$133368,$133369,$133370,$133371,$133372,$133373,$133374,$133375,$133376,$133377,$133378),(nextval($133379),$133380,$133381,$133382,$133383,$133384,$133385,$133386,$133387,$133388,$133389,$133390,$133391,$133392),(nextval($133393),$133394,$133395,$133396,$133397,$133398,$133399,$133400,$133401,$133402,$133403,$133404,$133405,$133406),(nextval($133407),$133408,$133409,$133410,$133411,$133412,$133413,$133414,$133415,$133416,$133417,$133418,$133419,$133420),(nextval($133421),$133422,$133423,$133424,$133425,$133426,$133427,$133428,$133429,$133430,$133431,$133432,$133433,$133434),(nextval($133435),$133436,$133437,$133438,$133439,$133440,$133441,$133442,$133443,$133444,$133445,$133446,$133447,$133448),(nextval($133449),$133450,$133451,$133452,$133453,$133454,$133455,$133456,$133457,$133458,$133459,$133460,$133461,$133462),(nextval($133463),$133464,$133465,$133466,$133467,$133468,$133469,$133470,$133471,$133472,$133473,$133474,$133475,$133476),(nextval($133477),$133478,$133479,$133480,$133481,$133482,$133483,$133484,$133485,$133486,$133487,$133488,$133489,$133490),(nextval($133491),$133492,$133493,$133494,$133495,$133496,$133497,$133498,$133499,$133500,$133501,$133502,$133503,$133504),(nextval($133505),$133506,$133507,$133508,$133509,$133510,$133511,$133512,$133513,$133514,$133515,$133516,$133517,$133518),(nextval($133519),$133520,$133521,$133522,$133523,$133524,$133525,$133526,$133527,$133528,$133529,$133530,$133531,$133532),(nextval($133533),$133534,$133535,$133536,$133537,$133538,$133539,$133540,$133541,$133542,$133543,$133544,$133545,$133546),(nextval($133547),$133548,$133549,$133550,$133551,$133552,$133553,$133554,$133555,$133556,$133557,$133558,$133559,$133560),(nextval($133561),$133562,$133563,$133564,$133565,$133566,$133567,$133568,$133569,$133570,$133571,$133572,$133573,$133574),(nextval($133575),$133576,$133577,$133578,$133579,$133580,$133581,$133582,$133583,$133584,$133585,$133586,$133587,$133588),(nextval($133589),$133590,$133591,$133592,$133593,$133594,$133595,$133596,$133597,$133598,$133599,$133600,$133601,$133602),(nextval($133603),$133604,$133605,$133606,$133607,$133608,$133609,$133610,$133611,$133612,$133613,$133614,$133615,$133616),(nextval($133617),$133618,$133619,$133620,$133621,$133622,$133623,$133624,$133625,$133626,$133627,$133628,$133629,$133630),(nextval($133631),$133632,$133633,$133634,$133635,$133636,$133637,$133638,$133639,$133640,$133641,$133642,$133643,$133644),(nextval($133645),$133646,$133647,$133648,$133649,$133650,$133651,$133652,$133653,$133654,$133655,$133656,$133657,$133658),(nextval($133659),$133660,$133661,$133662,$133663,$133664,$133665,$133666,$133667,$133668,$133669,$133670,$133671,$133672),(nextval($133673),$133674,$133675,$133676,$133677,$133678,$133679,$133680,$133681,$133682,$133683,$133684,$133685,$133686),(nextval($133687),$133688,$133689,$133690,$133691,$133692,$133693,$133694,$133695,$133696,$133697,$133698,$133699,$133700),(nextval($133701),$133702,$133703,$133704,$133705,$133706,$133707,$133708,$133709,$133710,$133711,$133712,$133713,$133714),(nextval($133715),$133716,$133717,$133718,$133719,$133720,$133721,$133722,$133723,$133724,$133725,$133726,$133727,$133728),(nextval($133729),$133730,$133731,$133732,$133733,$133734,$133735,$133736,$133737,$133738,$133739,$133740,$133741,$133742),(nextval($133743),$133744,$133745,$133746,$133747,$133748,$133749,$133750,$133751,$133752,$133753,$133754,$133755,$133756),(nextval($133757),$133758,$133759,$133760,$133761,$133762,$133763,$133764,$133765,$133766,$133767,$133768,$133769,$133770),(nextval($133771),$133772,$133773,$133774,$133775,$133776,$133777,$133778,$133779,$133780,$133781,$133782,$133783,$133784),(nextval($133785),$133786,$133787,$133788,$133789,$133790,$133791,$133792,$133793,$133794,$133795,$133796,$133797,$133798),(nextval($133799),$133800,$133801,$133802,$133803,$133804,$133805,$133806,$133807,$133808,$133809,$133810,$133811,$133812),(nextval($133813),$133814,$133815,$133816,$133817,$133818,$133819,$133820,$133821,$133822,$133823,$133824,$133825,$133826),(nextval($133827),$133828,$133829,$133830,$133831,$133832,$133833,$133834,$133835,$133836,$133837,$133838,$133839,$133840),(nextval($133841),$133842,$133843,$133844,$133845,$133846,$133847,$133848,$133849,$133850,$133851,$133852,$133853,$133854),(nextval($133855),$133856,$133857,$133858,$133859,$133860,$133861,$133862,$133863,$133864,$133865,$133866,$133867,$133868),(nextval($133869),$133870,$133871,$133872,$133873,$133874,$133875,$133876,$133877,$133878,$133879,$133880,$133881,$133882),(nextval($133883),$133884,$133885,$133886,$133887,$133888,$133889,$133890,$133891,$133892,$133893,$133894,$133895,$133896),(nextval($133897),$133898,$133899,$133900,$133901,$133902,$133903,$133904,$133905,$133906,$133907,$133908,$133909,$133910),(nextval($133911),$133912,$133913,$133914,$133915,$133916,$133917,$133918,$133919,$133920,$133921,$133922,$133923,$133924),(nextval($133925),$133926,$133927,$133928,$133929,$133930,$133931,$133932,$133933,$133934,$133935,$133936,$133937,$133938),(nextval($133939),$133940,$133941,$133942,$133943,$133944,$133945,$133946,$133947,$133948,$133949,$133950,$133951,$133952),(nextval($133953),$133954,$133955,$133956,$133957,$133958,$133959,$133960,$133961,$133962,$133963,$133964,$133965,$133966),(nextval($133967),$133968,$133969,$133970,$133971,$133972,$133973,$133974,$133975,$133976,$133977,$133978,$133979,$133980),(nextval($133981),$133982,$133983,$133984,$133985,$133986,$133987,$133988,$133989,$133990,$133991,$133992,$133993,$133994),(nextval($133995),$133996,$133997,$133998,$133999,$134000,$134001,$134002,$134003,$134004,$134005,$134006,$134007,$134008),(nextval($134009),$134010,$134011,$134012,$134013,$134014,$134015,$134016,$134017,$134018,$134019,$134020,$134021,$134022),(nextval($134023),$134024,$134025,$134026,$134027,$134028,$134029,$134030,$134031,$134032,$134033,$134034,$134035,$134036),(nextval($134037),$134038,$134039,$134040,$134041,$134042,$134043,$134044,$134045,$134046,$134047,$134048,$134049,$134050),(nextval($134051),$134052,$134053,$134054,$134055,$134056,$134057,$134058,$134059,$134060,$134061,$134062,$134063,$134064),(nextval($134065),$134066,$134067,$134068,$134069,$134070,$134071,$134072,$134073,$134074,$134075,$134076,$134077,$134078),(nextval($134079),$134080,$134081,$134082,$134083,$134084,$134085,$134086,$134087,$134088,$134089,$134090,$134091,$134092),(nextval($134093),$134094,$134095,$134096,$134097,$134098,$134099,$134100,$134101,$134102,$134103,$134104,$134105,$134106),(nextval($134107),$134108,$134109,$134110,$134111,$134112,$134113,$134114,$134115,$134116,$134117,$134118,$134119,$134120),(nextval($134121),$134122,$134123,$134124,$134125,$134126,$134127,$134128,$134129,$134130,$134131,$134132,$134133,$134134),(nextval($134135),$134136,$134137,$134138,$134139,$134140,$134141,$134142,$134143,$134144,$134145,$134146,$134147,$134148),(nextval($134149),$134150,$134151,$134152,$134153,$134154,$134155,$134156,$134157,$134158,$134159,$134160,$134161,$134162),(nextval($134163),$134164,$134165,$134166,$134167,$134168,$134169,$134170,$134171,$134172,$134173,$134174,$134175,$134176),(nextval($134177),$134178,$134179,$134180,$134181,$134182,$134183,$134184,$134185,$134186,$134187,$134188,$134189,$134190),(nextval($134191),$134192,$134193,$134194,$134195,$134196,$134197,$134198,$134199,$134200,$134201,$134202,$134203,$134204),(nextval($134205),$134206,$134207,$134208,$134209,$134210,$134211,$134212,$134213,$134214,$134215,$134216,$134217,$134218),(nextval($134219),$134220,$134221,$134222,$134223,$134224,$134225,$134226,$134227,$134228,$134229,$134230,$134231,$134232),(nextval($134233),$134234,$134235,$134236,$134237,$134238,$134239,$134240,$134241,$134242,$134243,$134244,$134245,$134246),(nextval($134247),$134248,$134249,$134250,$134251,$134252,$134253,$134254,$134255,$134256,$134257,$134258,$134259,$134260),(nextval($134261),$134262,$134263,$134264,$134265,$134266,$134267,$134268,$134269,$134270,$134271,$134272,$134273,$134274),(nextval($134275),$134276,$134277,$134278,$134279,$134280,$134281,$134282,$134283,$134284,$134285,$134286,$134287,$134288),(nextval($134289),$134290,$134291,$134292,$134293,$134294,$134295,$134296,$134297,$134298,$134299,$134300,$134301,$134302),(nextval($134303),$134304,$134305,$134306,$134307,$134308,$134309,$134310,$134311,$134312,$134313,$134314,$134315,$134316),(nextval($134317),$134318,$134319,$134320,$134321,$134322,$134323,$134324,$134325,$134326,$134327,$134328,$134329,$134330),(nextval($134331),$134332,$134333,$134334,$134335,$134336,$134337,$134338,$134339,$134340,$134341,$134342,$134343,$134344),(nextval($134345),$134346,$134347,$134348,$134349,$134350,$134351,$134352,$134353,$134354,$134355,$134356,$134357,$134358),(nextval($134359),$134360,$134361,$134362,$134363,$134364,$134365,$134366,$134367,$134368,$134369,$134370,$134371,$134372),(nextval($134373),$134374,$134375,$134376,$134377,$134378,$134379,$134380,$134381,$134382,$134383,$134384,$134385,$134386),(nextval($134387),$134388,$134389,$134390,$134391,$134392,$134393,$134394,$134395,$134396,$134397,$134398,$134399,$134400),(nextval($134401),$134402,$134403,$134404,$134405,$134406,$134407,$134408,$134409,$134410,$134411,$134412,$134413,$134414),(nextval($134415),$134416,$134417,$134418,$134419,$134420,$134421,$134422,$134423,$134424,$134425,$134426,$134427,$134428),(nextval($134429),$134430,$134431,$134432,$134433,$134434,$134435,$134436,$134437,$134438,$134439,$134440,$134441,$134442),(nextval($134443),$134444,$134445,$134446,$134447,$134448,$134449,$134450,$134451,$134452,$134453,$134454,$134455,$134456),(nextval($134457),$134458,$134459,$134460,$134461,$134462,$134463,$134464,$134465,$134466,$134467,$134468,$134469,$134470),(nextval($134471),$134472,$134473,$134474,$134475,$134476,$134477,$134478,$134479,$134480,$134481,$134482,$134483,$134484),(nextval($134485),$134486,$134487,$134488,$134489,$134490,$134491,$134492,$134493,$134494,$134495,$134496,$134497,$134498),(nextval($134499),$134500,$134501,$134502,$134503,$134504,$134505,$134506,$134507,$134508,$134509,$134510,$134511,$134512),(nextval($134513),$134514,$134515,$134516,$134517,$134518,$134519,$134520,$134521,$134522,$134523,$134524,$134525,$134526),(nextval($134527),$134528,$134529,$134530,$134531,$134532,$134533,$134534,$134535,$134536,$134537,$134538,$134539,$134540),(nextval($134541),$134542,$134543,$134544,$134545,$134546,$134547,$134548,$134549,$134550,$134551,$134552,$134553,$134554),(nextval($134555),$134556,$134557,$134558,$134559,$134560,$134561,$134562,$134563,$134564,$134565,$134566,$134567,$134568),(nextval($134569),$134570,$134571,$134572,$134573,$134574,$134575,$134576,$134577,$134578,$134579,$134580,$134581,$134582),(nextval($134583),$134584,$134585,$134586,$134587,$134588,$134589,$134590,$134591,$134592,$134593,$134594,$134595,$134596),(nextval($134597),$134598,$134599,$134600,$134601,$134602,$134603,$134604,$134605,$134606,$134607,$134608,$134609,$134610),(nextval($134611),$134612,$134613,$134614,$134615,$134616,$134617,$134618,$134619,$134620,$134621,$134622,$134623,$134624),(nextval($134625),$134626,$134627,$134628,$134629,$134630,$134631,$134632,$134633,$134634,$134635,$134636,$134637,$134638),(nextval($134639),$134640,$134641,$134642,$134643,$134644,$134645,$134646,$134647,$134648,$134649,$134650,$134651,$134652),(nextval($134653),$134654,$134655,$134656,$134657,$134658,$134659,$134660,$134661,$134662,$134663,$134664,$134665,$134666),(nextval($134667),$134668,$134669,$134670,$134671,$134672,$134673,$134674,$134675,$134676,$134677,$134678,$134679,$134680),(nextval($134681),$134682,$134683,$134684,$134685,$134686,$134687,$134688,$134689,$134690,$134691,$134692,$134693,$134694),(nextval($134695),$134696,$134697,$134698,$134699,$134700,$134701,$134702,$134703,$134704,$134705,$134706,$134707,$134708),(nextval($134709),$134710,$134711,$134712,$134713,$134714,$134715,$134716,$134717,$134718,$134719,$134720,$134721,$134722),(nextval($134723),$134724,$134725,$134726,$134727,$134728,$134729,$134730,$134731,$134732,$134733,$134734,$134735,$134736),(nextval($134737),$134738,$134739,$134740,$134741,$134742,$134743,$134744,$134745,$134746,$134747,$134748,$134749,$134750),(nextval($134751),$134752,$134753,$134754,$134755,$134756,$134757,$134758,$134759,$134760,$134761,$134762,$134763,$134764),(nextval($134765),$134766,$134767,$134768,$134769,$134770,$134771,$134772,$134773,$134774,$134775,$134776,$134777,$134778),(nextval($134779),$134780,$134781,$134782,$134783,$134784,$134785,$134786,$134787,$134788,$134789,$134790,$134791,$134792),(nextval($134793),$134794,$134795,$134796,$134797,$134798,$134799,$134800,$134801,$134802,$134803,$134804,$134805,$134806),(nextval($134807),$134808,$134809,$134810,$134811,$134812,$134813,$134814,$134815,$134816,$134817,$134818,$134819,$134820),(nextval($134821),$134822,$134823,$134824,$134825,$134826,$134827,$134828,$134829,$134830,$134831,$134832,$134833,$134834),(nextval($134835),$134836,$134837,$134838,$134839,$134840,$134841,$134842,$134843,$134844,$134845,$134846,$134847,$134848),(nextval($134849),$134850,$134851,$134852,$134853,$134854,$134855,$134856,$134857,$134858,$134859,$134860,$134861,$134862),(nextval($134863),$134864,$134865,$134866,$134867,$134868,$134869,$134870,$134871,$134872,$134873,$134874,$134875,$134876),(nextval($134877),$134878,$134879,$134880,$134881,$134882,$134883,$134884,$134885,$134886,$134887,$134888,$134889,$134890),(nextval($134891),$134892,$134893,$134894,$134895,$134896,$134897,$134898,$134899,$134900,$134901,$134902,$134903,$134904),(nextval($134905),$134906,$134907,$134908,$134909,$134910,$134911,$134912,$134913,$134914,$134915,$134916,$134917,$134918),(nextval($134919),$134920,$134921,$134922,$134923,$134924,$134925,$134926,$134927,$134928,$134929,$134930,$134931,$134932),(nextval($134933),$134934,$134935,$134936,$134937,$134938,$134939,$134940,$134941,$134942,$134943,$134944,$134945,$134946),(nextval($134947),$134948,$134949,$134950,$134951,$134952,$134953,$134954,$134955,$134956,$134957,$134958,$134959,$134960),(nextval($134961),$134962,$134963,$134964,$134965,$134966,$134967,$134968,$134969,$134970,$134971,$134972,$134973,$134974),(nextval($134975),$134976,$134977,$134978,$134979,$134980,$134981,$134982,$134983,$134984,$134985,$134986,$134987,$134988),(nextval($134989),$134990,$134991,$134992,$134993,$134994,$134995,$134996,$134997,$134998,$134999,$135000,$135001,$135002),(nextval($135003),$135004,$135005,$135006,$135007,$135008,$135009,$135010,$135011,$135012,$135013,$135014,$135015,$135016),(nextval($135017),$135018,$135019,$135020,$135021,$135022,$135023,$135024,$135025,$135026,$135027,$135028,$135029,$135030),(nextval($135031),$135032,$135033,$135034,$135035,$135036,$135037,$135038,$135039,$135040,$135041,$135042,$135043,$135044),(nextval($135045),$135046,$135047,$135048,$135049,$135050,$135051,$135052,$135053,$135054,$135055,$135056,$135057,$135058),(nextval($135059),$135060,$135061,$135062,$135063,$135064,$135065,$135066,$135067,$135068,$135069,$135070,$135071,$135072),(nextval($135073),$135074,$135075,$135076,$135077,$135078,$135079,$135080,$135081,$135082,$135083,$135084,$135085,$135086),(nextval($135087),$135088,$135089,$135090,$135091,$135092,$135093,$135094,$135095,$135096,$135097,$135098,$135099,$135100),(nextval($135101),$135102,$135103,$135104,$135105,$135106,$135107,$135108,$135109,$135110,$135111,$135112,$135113,$135114),(nextval($135115),$135116,$135117,$135118,$135119,$135120,$135121,$135122,$135123,$135124,$135125,$135126,$135127,$135128),(nextval($135129),$135130,$135131,$135132,$135133,$135134,$135135,$135136,$135137,$135138,$135139,$135140,$135141,$135142),(nextval($135143),$135144,$135145,$135146,$135147,$135148,$135149,$135150,$135151,$135152,$135153,$135154,$135155,$135156),(nextval($135157),$135158,$135159,$135160,$135161,$135162,$135163,$135164,$135165,$135166,$135167,$135168,$135169,$135170),(nextval($135171),$135172,$135173,$135174,$135175,$135176,$135177,$135178,$135179,$135180,$135181,$135182,$135183,$135184),(nextval($135185),$135186,$135187,$135188,$135189,$135190,$135191,$135192,$135193,$135194,$135195,$135196,$135197,$135198),(nextval($135199),$135200,$135201,$135202,$135203,$135204,$135205,$135206,$135207,$135208,$135209,$135210,$135211,$135212),(nextval($135213),$135214,$135215,$135216,$135217,$135218,$135219,$135220,$135221,$135222,$135223,$135224,$135225,$135226),(nextval($135227),$135228,$135229,$135230,$135231,$135232,$135233,$135234,$135235,$135236,$135237,$135238,$135239,$135240),(nextval($135241),$135242,$135243,$135244,$135245,$135246,$135247,$135248,$135249,$135250,$135251,$135252,$135253,$135254),(nextval($135255),$135256,$135257,$135258,$135259,$135260,$135261,$135262,$135263,$135264,$135265,$135266,$135267,$135268),(nextval($135269),$135270,$135271,$135272,$135273,$135274,$135275,$135276,$135277,$135278,$135279,$135280,$135281,$135282),(nextval($135283),$135284,$135285,$135286,$135287,$135288,$135289,$135290,$135291,$135292,$135293,$135294,$135295,$135296),(nextval($135297),$135298,$135299,$135300,$135301,$135302,$135303,$135304,$135305,$135306,$135307,$135308,$135309,$135310),(nextval($135311),$135312,$135313,$135314,$135315,$135316,$135317,$135318,$135319,$135320,$135321,$135322,$135323,$135324),(nextval($135325),$135326,$135327,$135328,$135329,$135330,$135331,$135332,$135333,$135334,$135335,$135336,$135337,$135338),(nextval($135339),$135340,$135341,$135342,$135343,$135344,$135345,$135346,$135347,$135348,$135349,$135350,$135351,$135352),(nextval($135353),$135354,$135355,$135356,$135357,$135358,$135359,$135360,$135361,$135362,$135363,$135364,$135365,$135366),(nextval($135367),$135368,$135369,$135370,$135371,$135372,$135373,$135374,$135375,$135376,$135377,$135378,$135379,$135380),(nextval($135381),$135382,$135383,$135384,$135385,$135386,$135387,$135388,$135389,$135390,$135391,$135392,$135393,$135394),(nextval($135395),$135396,$135397,$135398,$135399,$135400,$135401,$135402,$135403,$135404,$135405,$135406,$135407,$135408),(nextval($135409),$135410,$135411,$135412,$135413,$135414,$135415,$135416,$135417,$135418,$135419,$135420,$135421,$135422),(nextval($135423),$135424,$135425,$135426,$135427,$135428,$135429,$135430,$135431,$135432,$135433,$135434,$135435,$135436),(nextval($135437),$135438,$135439,$135440,$135441,$135442,$135443,$135444,$135445,$135446,$135447,$135448,$135449,$135450),(nextval($135451),$135452,$135453,$135454,$135455,$135456,$135457,$135458,$135459,$135460,$135461,$135462,$135463,$135464),(nextval($135465),$135466,$135467,$135468,$135469,$135470,$135471,$135472,$135473,$135474,$135475,$135476,$135477,$135478),(nextval($135479),$135480,$135481,$135482,$135483,$135484,$135485,$135486,$135487,$135488,$135489,$135490,$135491,$135492),(nextval($135493),$135494,$135495,$135496,$135497,$135498,$135499,$135500,$135501,$135502,$135503,$135504,$135505,$135506),(nextval($135507),$135508,$135509,$135510,$135511,$135512,$135513,$135514,$135515,$135516,$135517,$135518,$135519,$135520),(nextval($135521),$135522,$135523,$135524,$135525,$135526,$135527,$135528,$135529,$135530,$135531,$135532,$135533,$135534),(nextval($135535),$135536,$135537,$135538,$135539,$135540,$135541,$135542,$135543,$135544,$135545,$135546,$135547,$135548),(nextval($135549),$135550,$135551,$135552,$135553,$135554,$135555,$135556,$135557,$135558,$135559,$135560,$135561,$135562),(nextval($135563),$135564,$135565,$135566,$135567,$135568,$135569,$135570,$135571,$135572,$135573,$135574,$135575,$135576),(nextval($135577),$135578,$135579,$135580,$135581,$135582,$135583,$135584,$135585,$135586,$135587,$135588,$135589,$135590),(nextval($135591),$135592,$135593,$135594,$135595,$135596,$135597,$135598,$135599,$135600,$135601,$135602,$135603,$135604),(nextval($135605),$135606,$135607,$135608,$135609,$135610,$135611,$135612,$135613,$135614,$135615,$135616,$135617,$135618),(nextval($135619),$135620,$135621,$135622,$135623,$135624,$135625,$135626,$135627,$135628,$135629,$135630,$135631,$135632),(nextval($135633),$135634,$135635,$135636,$135637,$135638,$135639,$135640,$135641,$135642,$135643,$135644,$135645,$135646),(nextval($135647),$135648,$135649,$135650,$135651,$135652,$135653,$135654,$135655,$135656,$135657,$135658,$135659,$135660),(nextval($135661),$135662,$135663,$135664,$135665,$135666,$135667,$135668,$135669,$135670,$135671,$135672,$135673,$135674),(nextval($135675),$135676,$135677,$135678,$135679,$135680,$135681,$135682,$135683,$135684,$135685,$135686,$135687,$135688),(nextval($135689),$135690,$135691,$135692,$135693,$135694,$135695,$135696,$135697,$135698,$135699,$135700,$135701,$135702),(nextval($135703),$135704,$135705,$135706,$135707,$135708,$135709,$135710,$135711,$135712,$135713,$135714,$135715,$135716),(nextval($135717),$135718,$135719,$135720,$135721,$135722,$135723,$135724,$135725,$135726,$135727,$135728,$135729,$135730),(nextval($135731),$135732,$135733,$135734,$135735,$135736,$135737,$135738,$135739,$135740,$135741,$135742,$135743,$135744),(nextval($135745),$135746,$135747,$135748,$135749,$135750,$135751,$135752,$135753,$135754,$135755,$135756,$135757,$135758),(nextval($135759),$135760,$135761,$135762,$135763,$135764,$135765,$135766,$135767,$135768,$135769,$135770,$135771,$135772),(nextval($135773),$135774,$135775,$135776,$135777,$135778,$135779,$135780,$135781,$135782,$135783,$135784,$135785,$135786),(nextval($135787),$135788,$135789,$135790,$135791,$135792,$135793,$135794,$135795,$135796,$135797,$135798,$135799,$135800),(nextval($135801),$135802,$135803,$135804,$135805,$135806,$135807,$135808,$135809,$135810,$135811,$135812,$135813,$135814),(nextval($135815),$135816,$135817,$135818,$135819,$135820,$135821,$135822,$135823,$135824,$135825,$135826,$135827,$135828),(nextval($135829),$135830,$135831,$135832,$135833,$135834,$135835,$135836,$135837,$135838,$135839,$135840,$135841,$135842),(nextval($135843),$135844,$135845,$135846,$135847,$135848,$135849,$135850,$135851,$135852,$135853,$135854,$135855,$135856),(nextval($135857),$135858,$135859,$135860,$135861,$135862,$135863,$135864,$135865,$135866,$135867,$135868,$135869,$135870),(nextval($135871),$135872,$135873,$135874,$135875,$135876,$135877,$135878,$135879,$135880,$135881,$135882,$135883,$135884),(nextval($135885),$135886,$135887,$135888,$135889,$135890,$135891,$135892,$135893,$135894,$135895,$135896,$135897,$135898),(nextval($135899),$135900,$135901,$135902,$135903,$135904,$135905,$135906,$135907,$135908,$135909,$135910,$135911,$135912),(nextval($135913),$135914,$135915,$135916,$135917,$135918,$135919,$135920,$135921,$135922,$135923,$135924,$135925,$135926),(nextval($135927),$135928,$135929,$135930,$135931,$135932,$135933,$135934,$135935,$135936,$135937,$135938,$135939,$135940),(nextval($135941),$135942,$135943,$135944,$135945,$135946,$135947,$135948,$135949,$135950,$135951,$135952,$135953,$135954),(nextval($135955),$135956,$135957,$135958,$135959,$135960,$135961,$135962,$135963,$135964,$135965,$135966,$135967,$135968),(nextval($135969),$135970,$135971,$135972,$135973,$135974,$135975,$135976,$135977,$135978,$135979,$135980,$135981,$135982),(nextval($135983),$135984,$135985,$135986,$135987,$135988,$135989,$135990,$135991,$135992,$135993,$135994,$135995,$135996),(nextval($135997),$135998,$135999,$136000,$136001,$136002,$136003,$136004,$136005,$136006,$136007,$136008,$136009,$136010),(nextval($136011),$136012,$136013,$136014,$136015,$136016,$136017,$136018,$136019,$136020,$136021,$136022,$136023,$136024),(nextval($136025),$136026,$136027,$136028,$136029,$136030,$136031,$136032,$136033,$136034,$136035,$136036,$136037,$136038),(nextval($136039),$136040,$136041,$136042,$136043,$136044,$136045,$136046,$136047,$136048,$136049,$136050,$136051,$136052),(nextval($136053),$136054,$136055,$136056,$136057,$136058,$136059,$136060,$136061,$136062,$136063,$136064,$136065,$136066),(nextval($136067),$136068,$136069,$136070,$136071,$136072,$136073,$136074,$136075,$136076,$136077,$136078,$136079,$136080),(nextval($136081),$136082,$136083,$136084,$136085,$136086,$136087,$136088,$136089,$136090,$136091,$136092,$136093,$136094),(nextval($136095),$136096,$136097,$136098,$136099,$136100,$136101,$136102,$136103,$136104,$136105,$136106,$136107,$136108),(nextval($136109),$136110,$136111,$136112,$136113,$136114,$136115,$136116,$136117,$136118,$136119,$136120,$136121,$136122),(nextval($136123),$136124,$136125,$136126,$136127,$136128,$136129,$136130,$136131,$136132,$136133,$136134,$136135,$136136),(nextval($136137),$136138,$136139,$136140,$136141,$136142,$136143,$136144,$136145,$136146,$136147,$136148,$136149,$136150),(nextval($136151),$136152,$136153,$136154,$136155,$136156,$136157,$136158,$136159,$136160,$136161,$136162,$136163,$136164),(nextval($136165),$136166,$136167,$136168,$136169,$136170,$136171,$136172,$136173,$136174,$136175,$136176,$136177,$136178),(nextval($136179),$136180,$136181,$136182,$136183,$136184,$136185,$136186,$136187,$136188,$136189,$136190,$136191,$136192),(nextval($136193),$136194,$136195,$136196,$136197,$136198,$136199,$136200,$136201,$136202,$136203,$136204,$136205,$136206),(nextval($136207),$136208,$136209,$136210,$136211,$136212,$136213,$136214,$136215,$136216,$136217,$136218,$136219,$136220),(nextval($136221),$136222,$136223,$136224,$136225,$136226,$136227,$136228,$136229,$136230,$136231,$136232,$136233,$136234),(nextval($136235),$136236,$136237,$136238,$136239,$136240,$136241,$136242,$136243,$136244,$136245,$136246,$136247,$136248),(nextval($136249),$136250,$136251,$136252,$136253,$136254,$136255,$136256,$136257,$136258,$136259,$136260,$136261,$136262),(nextval($136263),$136264,$136265,$136266,$136267,$136268,$136269,$136270,$136271,$136272,$136273,$136274,$136275,$136276),(nextval($136277),$136278,$136279,$136280,$136281,$136282,$136283,$136284,$136285,$136286,$136287,$136288,$136289,$136290),(nextval($136291),$136292,$136293,$136294,$136295,$136296,$136297,$136298,$136299,$136300,$136301,$136302,$136303,$136304),(nextval($136305),$136306,$136307,$136308,$136309,$136310,$136311,$136312,$136313,$136314,$136315,$136316,$136317,$136318),(nextval($136319),$136320,$136321,$136322,$136323,$136324,$136325,$136326,$136327,$136328,$136329,$136330,$136331,$136332),(nextval($136333),$136334,$136335,$136336,$136337,$136338,$136339,$136340,$136341,$136342,$136343,$136344,$136345,$136346),(nextval($136347),$136348,$136349,$136350,$136351,$136352,$136353,$136354,$136355,$136356,$136357,$136358,$136359,$136360),(nextval($136361),$136362,$136363,$136364,$136365,$136366,$136367,$136368,$136369,$136370,$136371,$136372,$136373,$136374),(nextval($136375),$136376,$136377,$136378,$136379,$136380,$136381,$136382,$136383,$136384,$136385,$136386,$136387,$136388),(nextval($136389),$136390,$136391,$136392,$136393,$136394,$136395,$136396,$136397,$136398,$136399,$136400,$136401,$136402),(nextval($136403),$136404,$136405,$136406,$136407,$136408,$136409,$136410,$136411,$136412,$136413,$136414,$136415,$136416),(nextval($136417),$136418,$136419,$136420,$136421,$136422,$136423,$136424,$136425,$136426,$136427,$136428,$136429,$136430),(nextval($136431),$136432,$136433,$136434,$136435,$136436,$136437,$136438,$136439,$136440,$136441,$136442,$136443,$136444),(nextval($136445),$136446,$136447,$136448,$136449,$136450,$136451,$136452,$136453,$136454,$136455,$136456,$136457,$136458),(nextval($136459),$136460,$136461,$136462,$136463,$136464,$136465,$136466,$136467,$136468,$136469,$136470,$136471,$136472),(nextval($136473),$136474,$136475,$136476,$136477,$136478,$136479,$136480,$136481,$136482,$136483,$136484,$136485,$136486),(nextval($136487),$136488,$136489,$136490,$136491,$136492,$136493,$136494,$136495,$136496,$136497,$136498,$136499,$136500),(nextval($136501),$136502,$136503,$136504,$136505,$136506,$136507,$136508,$136509,$136510,$136511,$136512,$136513,$136514),(nextval($136515),$136516,$136517,$136518,$136519,$136520,$136521,$136522,$136523,$136524,$136525,$136526,$136527,$136528),(nextval($136529),$136530,$136531,$136532,$136533,$136534,$136535,$136536,$136537,$136538,$136539,$136540,$136541,$136542),(nextval($136543),$136544,$136545,$136546,$136547,$136548,$136549,$136550,$136551,$136552,$136553,$136554,$136555,$136556),(nextval($136557),$136558,$136559,$136560,$136561,$136562,$136563,$136564,$136565,$136566,$136567,$136568,$136569,$136570),(nextval($136571),$136572,$136573,$136574,$136575,$136576,$136577,$136578,$136579,$136580,$136581,$136582,$136583,$136584),(nextval($136585),$136586,$136587,$136588,$136589,$136590,$136591,$136592,$136593,$136594,$136595,$136596,$136597,$136598),(nextval($136599),$136600,$136601,$136602,$136603,$136604,$136605,$136606,$136607,$136608,$136609,$136610,$136611,$136612),(nextval($136613),$136614,$136615,$136616,$136617,$136618,$136619,$136620,$136621,$136622,$136623,$136624,$136625,$136626),(nextval($136627),$136628,$136629,$136630,$136631,$136632,$136633,$136634,$136635,$136636,$136637,$136638,$136639,$136640),(nextval($136641),$136642,$136643,$136644,$136645,$136646,$136647,$136648,$136649,$136650,$136651,$136652,$136653,$136654),(nextval($136655),$136656,$136657,$136658,$136659,$136660,$136661,$136662,$136663,$136664,$136665,$136666,$136667,$136668),(nextval($136669),$136670,$136671,$136672,$136673,$136674,$136675,$136676,$136677,$136678,$136679,$136680,$136681,$136682),(nextval($136683),$136684,$136685,$136686,$136687,$136688,$136689,$136690,$136691,$136692,$136693,$136694,$136695,$136696),(nextval($136697),$136698,$136699,$136700,$136701,$136702,$136703,$136704,$136705,$136706,$136707,$136708,$136709,$136710),(nextval($136711),$136712,$136713,$136714,$136715,$136716,$136717,$136718,$136719,$136720,$136721,$136722,$136723,$136724),(nextval($136725),$136726,$136727,$136728,$136729,$136730,$136731,$136732,$136733,$136734,$136735,$136736,$136737,$136738),(nextval($136739),$136740,$136741,$136742,$136743,$136744,$136745,$136746,$136747,$136748,$136749,$136750,$136751,$136752),(nextval($136753),$136754,$136755,$136756,$136757,$136758,$136759,$136760,$136761,$136762,$136763,$136764,$136765,$136766),(nextval($136767),$136768,$136769,$136770,$136771,$136772,$136773,$136774,$136775,$136776,$136777,$136778,$136779,$136780),(nextval($136781),$136782,$136783,$136784,$136785,$136786,$136787,$136788,$136789,$136790,$136791,$136792,$136793,$136794),(nextval($136795),$136796,$136797,$136798,$136799,$136800,$136801,$136802,$136803,$136804,$136805,$136806,$136807,$136808),(nextval($136809),$136810,$136811,$136812,$136813,$136814,$136815,$136816,$136817,$136818,$136819,$136820,$136821,$136822),(nextval($136823),$136824,$136825,$136826,$136827,$136828,$136829,$136830,$136831,$136832,$136833,$136834,$136835,$136836),(nextval($136837),$136838,$136839,$136840,$136841,$136842,$136843,$136844,$136845,$136846,$136847,$136848,$136849,$136850),(nextval($136851),$136852,$136853,$136854,$136855,$136856,$136857,$136858,$136859,$136860,$136861,$136862,$136863,$136864),(nextval($136865),$136866,$136867,$136868,$136869,$136870,$136871,$136872,$136873,$136874,$136875,$136876,$136877,$136878),(nextval($136879),$136880,$136881,$136882,$136883,$136884,$136885,$136886,$136887,$136888,$136889,$136890,$136891,$136892),(nextval($136893),$136894,$136895,$136896,$136897,$136898,$136899,$136900,$136901,$136902,$136903,$136904,$136905,$136906),(nextval($136907),$136908,$136909,$136910,$136911,$136912,$136913,$136914,$136915,$136916,$136917,$136918,$136919,$136920),(nextval($136921),$136922,$136923,$136924,$136925,$136926,$136927,$136928,$136929,$136930,$136931,$136932,$136933,$136934),(nextval($136935),$136936,$136937,$136938,$136939,$136940,$136941,$136942,$136943,$136944,$136945,$136946,$136947,$136948),(nextval($136949),$136950,$136951,$136952,$136953,$136954,$136955,$136956,$136957,$136958,$136959,$136960,$136961,$136962),(nextval($136963),$136964,$136965,$136966,$136967,$136968,$136969,$136970,$136971,$136972,$136973,$136974,$136975,$136976),(nextval($136977),$136978,$136979,$136980,$136981,$136982,$136983,$136984,$136985,$136986,$136987,$136988,$136989,$136990),(nextval($136991),$136992,$136993,$136994,$136995,$136996,$136997,$136998,$136999,$137000,$137001,$137002,$137003,$137004),(nextval($137005),$137006,$137007,$137008,$137009,$137010,$137011,$137012,$137013,$137014,$137015,$137016,$137017,$137018),(nextval($137019),$137020,$137021,$137022,$137023,$137024,$137025,$137026,$137027,$137028,$137029,$137030,$137031,$137032),(nextval($137033),$137034,$137035,$137036,$137037,$137038,$137039,$137040,$137041,$137042,$137043,$137044,$137045,$137046),(nextval($137047),$137048,$137049,$137050,$137051,$137052,$137053,$137054,$137055,$137056,$137057,$137058,$137059,$137060),(nextval($137061),$137062,$137063,$137064,$137065,$137066,$137067,$137068,$137069,$137070,$137071,$137072,$137073,$137074),(nextval($137075),$137076,$137077,$137078,$137079,$137080,$137081,$137082,$137083,$137084,$137085,$137086,$137087,$137088),(nextval($137089),$137090,$137091,$137092,$137093,$137094,$137095,$137096,$137097,$137098,$137099,$137100,$137101,$137102),(nextval($137103),$137104,$137105,$137106,$137107,$137108,$137109,$137110,$137111,$137112,$137113,$137114,$137115,$137116),(nextval($137117),$137118,$137119,$137120,$137121,$137122,$137123,$137124,$137125,$137126,$137127,$137128,$137129,$137130),(nextval($137131),$137132,$137133,$137134,$137135,$137136,$137137,$137138,$137139,$137140,$137141,$137142,$137143,$137144),(nextval($137145),$137146,$137147,$137148,$137149,$137150,$137151,$137152,$137153,$137154,$137155,$137156,$137157,$137158),(nextval($137159),$137160,$137161,$137162,$137163,$137164,$137165,$137166,$137167,$137168,$137169,$137170,$137171,$137172),(nextval($137173),$137174,$137175,$137176,$137177,$137178,$137179,$137180,$137181,$137182,$137183,$137184,$137185,$137186),(nextval($137187),$137188,$137189,$137190,$137191,$137192,$137193,$137194,$137195,$137196,$137197,$137198,$137199,$137200),(nextval($137201),$137202,$137203,$137204,$137205,$137206,$137207,$137208,$137209,$137210,$137211,$137212,$137213,$137214),(nextval($137215),$137216,$137217,$137218,$137219,$137220,$137221,$137222,$137223,$137224,$137225,$137226,$137227,$137228),(nextval($137229),$137230,$137231,$137232,$137233,$137234,$137235,$137236,$137237,$137238,$137239,$137240,$137241,$137242),(nextval($137243),$137244,$137245,$137246,$137247,$137248,$137249,$137250,$137251,$137252,$137253,$137254,$137255,$137256),(nextval($137257),$137258,$137259,$137260,$137261,$137262,$137263,$137264,$137265,$137266,$137267,$137268,$137269,$137270),(nextval($137271),$137272,$137273,$137274,$137275,$137276,$137277,$137278,$137279,$137280,$137281,$137282,$137283,$137284),(nextval($137285),$137286,$137287,$137288,$137289,$137290,$137291,$137292,$137293,$137294,$137295,$137296,$137297,$137298),(nextval($137299),$137300,$137301,$137302,$137303,$137304,$137305,$137306,$137307,$137308,$137309,$137310,$137311,$137312),(nextval($137313),$137314,$137315,$137316,$137317,$137318,$137319,$137320,$137321,$137322,$137323,$137324,$137325,$137326),(nextval($137327),$137328,$137329,$137330,$137331,$137332,$137333,$137334,$137335,$137336,$137337,$137338,$137339,$137340),(nextval($137341),$137342,$137343,$137344,$137345,$137346,$137347,$137348,$137349,$137350,$137351,$137352,$137353,$137354),(nextval($137355),$137356,$137357,$137358,$137359,$137360,$137361,$137362,$137363,$137364,$137365,$137366,$137367,$137368),(nextval($137369),$137370,$137371,$137372,$137373,$137374,$137375,$137376,$137377,$137378,$137379,$137380,$137381,$137382),(nextval($137383),$137384,$137385,$137386,$137387,$137388,$137389,$137390,$137391,$137392,$137393,$137394,$137395,$137396),(nextval($137397),$137398,$137399,$137400,$137401,$137402,$137403,$137404,$137405,$137406,$137407,$137408,$137409,$137410),(nextval($137411),$137412,$137413,$137414,$137415,$137416,$137417,$137418,$137419,$137420,$137421,$137422,$137423,$137424),(nextval($137425),$137426,$137427,$137428,$137429,$137430,$137431,$137432,$137433,$137434,$137435,$137436,$137437,$137438),(nextval($137439),$137440,$137441,$137442,$137443,$137444,$137445,$137446,$137447,$137448,$137449,$137450,$137451,$137452),(nextval($137453),$137454,$137455,$137456,$137457,$137458,$137459,$137460,$137461,$137462,$137463,$137464,$137465,$137466),(nextval($137467),$137468,$137469,$137470,$137471,$137472,$137473,$137474,$137475,$137476,$137477,$137478,$137479,$137480),(nextval($137481),$137482,$137483,$137484,$137485,$137486,$137487,$137488,$137489,$137490,$137491,$137492,$137493,$137494),(nextval($137495),$137496,$137497,$137498,$137499,$137500,$137501,$137502,$137503,$137504,$137505,$137506,$137507,$137508),(nextval($137509),$137510,$137511,$137512,$137513,$137514,$137515,$137516,$137517,$137518,$137519,$137520,$137521,$137522),(nextval($137523),$137524,$137525,$137526,$137527,$137528,$137529,$137530,$137531,$137532,$137533,$137534,$137535,$137536),(nextval($137537),$137538,$137539,$137540,$137541,$137542,$137543,$137544,$137545,$137546,$137547,$137548,$137549,$137550),(nextval($137551),$137552,$137553,$137554,$137555,$137556,$137557,$137558,$137559,$137560,$137561,$137562,$137563,$137564),(nextval($137565),$137566,$137567,$137568,$137569,$137570,$137571,$137572,$137573,$137574,$137575,$137576,$137577,$137578),(nextval($137579),$137580,$137581,$137582,$137583,$137584,$137585,$137586,$137587,$137588,$137589,$137590,$137591,$137592),(nextval($137593),$137594,$137595,$137596,$137597,$137598,$137599,$137600,$137601,$137602,$137603,$137604,$137605,$137606),(nextval($137607),$137608,$137609,$137610,$137611,$137612,$137613,$137614,$137615,$137616,$137617,$137618,$137619,$137620),(nextval($137621),$137622,$137623,$137624,$137625,$137626,$137627,$137628,$137629,$137630,$137631,$137632,$137633,$137634),(nextval($137635),$137636,$137637,$137638,$137639,$137640,$137641,$137642,$137643,$137644,$137645,$137646,$137647,$137648),(nextval($137649),$137650,$137651,$137652,$137653,$137654,$137655,$137656,$137657,$137658,$137659,$137660,$137661,$137662),(nextval($137663),$137664,$137665,$137666,$137667,$137668,$137669,$137670,$137671,$137672,$137673,$137674,$137675,$137676),(nextval($137677),$137678,$137679,$137680,$137681,$137682,$137683,$137684,$137685,$137686,$137687,$137688,$137689,$137690),(nextval($137691),$137692,$137693,$137694,$137695,$137696,$137697,$137698,$137699,$137700,$137701,$137702,$137703,$137704),(nextval($137705),$137706,$137707,$137708,$137709,$137710,$137711,$137712,$137713,$137714,$137715,$137716,$137717,$137718),(nextval($137719),$137720,$137721,$137722,$137723,$137724,$137725,$137726,$137727,$137728,$137729,$137730,$137731,$137732),(nextval($137733),$137734,$137735,$137736,$137737,$137738,$137739,$137740,$137741,$137742,$137743,$137744,$137745,$137746),(nextval($137747),$137748,$137749,$137750,$137751,$137752,$137753,$137754,$137755,$137756,$137757,$137758,$137759,$137760),(nextval($137761),$137762,$137763,$137764,$137765,$137766,$137767,$137768,$137769,$137770,$137771,$137772,$137773,$137774),(nextval($137775),$137776,$137777,$137778,$137779,$137780,$137781,$137782,$137783,$137784,$137785,$137786,$137787,$137788),(nextval($137789),$137790,$137791,$137792,$137793,$137794,$137795,$137796,$137797,$137798,$137799,$137800,$137801,$137802),(nextval($137803),$137804,$137805,$137806,$137807,$137808,$137809,$137810,$137811,$137812,$137813,$137814,$137815,$137816),(nextval($137817),$137818,$137819,$137820,$137821,$137822,$137823,$137824,$137825,$137826,$137827,$137828,$137829,$137830),(nextval($137831),$137832,$137833,$137834,$137835,$137836,$137837,$137838,$137839,$137840,$137841,$137842,$137843,$137844),(nextval($137845),$137846,$137847,$137848,$137849,$137850,$137851,$137852,$137853,$137854,$137855,$137856,$137857,$137858),(nextval($137859),$137860,$137861,$137862,$137863,$137864,$137865,$137866,$137867,$137868,$137869,$137870,$137871,$137872),(nextval($137873),$137874,$137875,$137876,$137877,$137878,$137879,$137880,$137881,$137882,$137883,$137884,$137885,$137886),(nextval($137887),$137888,$137889,$137890,$137891,$137892,$137893,$137894,$137895,$137896,$137897,$137898,$137899,$137900),(nextval($137901),$137902,$137903,$137904,$137905,$137906,$137907,$137908,$137909,$137910,$137911,$137912,$137913,$137914),(nextval($137915),$137916,$137917,$137918,$137919,$137920,$137921,$137922,$137923,$137924,$137925,$137926,$137927,$137928),(nextval($137929),$137930,$137931,$137932,$137933,$137934,$137935,$137936,$137937,$137938,$137939,$137940,$137941,$137942),(nextval($137943),$137944,$137945,$137946,$137947,$137948,$137949,$137950,$137951,$137952,$137953,$137954,$137955,$137956),(nextval($137957),$137958,$137959,$137960,$137961,$137962,$137963,$137964,$137965,$137966,$137967,$137968,$137969,$137970),(nextval($137971),$137972,$137973,$137974,$137975,$137976,$137977,$137978,$137979,$137980,$137981,$137982,$137983,$137984),(nextval($137985),$137986,$137987,$137988,$137989,$137990,$137991,$137992,$137993,$137994,$137995,$137996,$137997,$137998),(nextval($137999),$138000,$138001,$138002,$138003,$138004,$138005,$138006,$138007,$138008,$138009,$138010,$138011,$138012),(nextval($138013),$138014,$138015,$138016,$138017,$138018,$138019,$138020,$138021,$138022,$138023,$138024,$138025,$138026),(nextval($138027),$138028,$138029,$138030,$138031,$138032,$138033,$138034,$138035,$138036,$138037,$138038,$138039,$138040),(nextval($138041),$138042,$138043,$138044,$138045,$138046,$138047,$138048,$138049,$138050,$138051,$138052,$138053,$138054),(nextval($138055),$138056,$138057,$138058,$138059,$138060,$138061,$138062,$138063,$138064,$138065,$138066,$138067,$138068),(nextval($138069),$138070,$138071,$138072,$138073,$138074,$138075,$138076,$138077,$138078,$138079,$138080,$138081,$138082),(nextval($138083),$138084,$138085,$138086,$138087,$138088,$138089,$138090,$138091,$138092,$138093,$138094,$138095,$138096),(nextval($138097),$138098,$138099,$138100,$138101,$138102,$138103,$138104,$138105,$138106,$138107,$138108,$138109,$138110),(nextval($138111),$138112,$138113,$138114,$138115,$138116,$138117,$138118,$138119,$138120,$138121,$138122,$138123,$138124),(nextval($138125),$138126,$138127,$138128,$138129,$138130,$138131,$138132,$138133,$138134,$138135,$138136,$138137,$138138),(nextval($138139),$138140,$138141,$138142,$138143,$138144,$138145,$138146,$138147,$138148,$138149,$138150,$138151,$138152),(nextval($138153),$138154,$138155,$138156,$138157,$138158,$138159,$138160,$138161,$138162,$138163,$138164,$138165,$138166),(nextval($138167),$138168,$138169,$138170,$138171,$138172,$138173,$138174,$138175,$138176,$138177,$138178,$138179,$138180),(nextval($138181),$138182,$138183,$138184,$138185,$138186,$138187,$138188,$138189,$138190,$138191,$138192,$138193,$138194),(nextval($138195),$138196,$138197,$138198,$138199,$138200,$138201,$138202,$138203,$138204,$138205,$138206,$138207,$138208),(nextval($138209),$138210,$138211,$138212,$138213,$138214,$138215,$138216,$138217,$138218,$138219,$138220,$138221,$138222),(nextval($138223),$138224,$138225,$138226,$138227,$138228,$138229,$138230,$138231,$138232,$138233,$138234,$138235,$138236),(nextval($138237),$138238,$138239,$138240,$138241,$138242,$138243,$138244,$138245,$138246,$138247,$138248,$138249,$138250),(nextval($138251),$138252,$138253,$138254,$138255,$138256,$138257,$138258,$138259,$138260,$138261,$138262,$138263,$138264),(nextval($138265),$138266,$138267,$138268,$138269,$138270,$138271,$138272,$138273,$138274,$138275,$138276,$138277,$138278),(nextval($138279),$138280,$138281,$138282,$138283,$138284,$138285,$138286,$138287,$138288,$138289,$138290,$138291,$138292),(nextval($138293),$138294,$138295,$138296,$138297,$138298,$138299,$138300,$138301,$138302,$138303,$138304,$138305,$138306),(nextval($138307),$138308,$138309,$138310,$138311,$138312,$138313,$138314,$138315,$138316,$138317,$138318,$138319,$138320),(nextval($138321),$138322,$138323,$138324,$138325,$138326,$138327,$138328,$138329,$138330,$138331,$138332,$138333,$138334),(nextval($138335),$138336,$138337,$138338,$138339,$138340,$138341,$138342,$138343,$138344,$138345,$138346,$138347,$138348),(nextval($138349),$138350,$138351,$138352,$138353,$138354,$138355,$138356,$138357,$138358,$138359,$138360,$138361,$138362),(nextval($138363),$138364,$138365,$138366,$138367,$138368,$138369,$138370,$138371,$138372,$138373,$138374,$138375,$138376),(nextval($138377),$138378,$138379,$138380,$138381,$138382,$138383,$138384,$138385,$138386,$138387,$138388,$138389,$138390),(nextval($138391),$138392,$138393,$138394,$138395,$138396,$138397,$138398,$138399,$138400,$138401,$138402,$138403,$138404),(nextval($138405),$138406,$138407,$138408,$138409,$138410,$138411,$138412,$138413,$138414,$138415,$138416,$138417,$138418),(nextval($138419),$138420,$138421,$138422,$138423,$138424,$138425,$138426,$138427,$138428,$138429,$138430,$138431,$138432),(nextval($138433),$138434,$138435,$138436,$138437,$138438,$138439,$138440,$138441,$138442,$138443,$138444,$138445,$138446),(nextval($138447),$138448,$138449,$138450,$138451,$138452,$138453,$138454,$138455,$138456,$138457,$138458,$138459,$138460),(nextval($138461),$138462,$138463,$138464,$138465,$138466,$138467,$138468,$138469,$138470,$138471,$138472,$138473,$138474),(nextval($138475),$138476,$138477,$138478,$138479,$138480,$138481,$138482,$138483,$138484,$138485,$138486,$138487,$138488),(nextval($138489),$138490,$138491,$138492,$138493,$138494,$138495,$138496,$138497,$138498,$138499,$138500,$138501,$138502),(nextval($138503),$138504,$138505,$138506,$138507,$138508,$138509,$138510,$138511,$138512,$138513,$138514,$138515,$138516),(nextval($138517),$138518,$138519,$138520,$138521,$138522,$138523,$138524,$138525,$138526,$138527,$138528,$138529,$138530),(nextval($138531),$138532,$138533,$138534,$138535,$138536,$138537,$138538,$138539,$138540,$138541,$138542,$138543,$138544),(nextval($138545),$138546,$138547,$138548,$138549,$138550,$138551,$138552,$138553,$138554,$138555,$138556,$138557,$138558),(nextval($138559),$138560,$138561,$138562,$138563,$138564,$138565,$138566,$138567,$138568,$138569,$138570,$138571,$138572),(nextval($138573),$138574,$138575,$138576,$138577,$138578,$138579,$138580,$138581,$138582,$138583,$138584,$138585,$138586),(nextval($138587),$138588,$138589,$138590,$138591,$138592,$138593,$138594,$138595,$138596,$138597,$138598,$138599,$138600),(nextval($138601),$138602,$138603,$138604,$138605,$138606,$138607,$138608,$138609,$138610,$138611,$138612,$138613,$138614),(nextval($138615),$138616,$138617,$138618,$138619,$138620,$138621,$138622,$138623,$138624,$138625,$138626,$138627,$138628),(nextval($138629),$138630,$138631,$138632,$138633,$138634,$138635,$138636,$138637,$138638,$138639,$138640,$138641,$138642),(nextval($138643),$138644,$138645,$138646,$138647,$138648,$138649,$138650,$138651,$138652,$138653,$138654,$138655,$138656)", "b70397400fc2c1d2", }; size_t testsLength = __LINE__ - 4; libpg_query-13-2.1.0/test/fuzz/000077500000000000000000000000001413137616400162405ustar00rootroot00000000000000libpg_query-13-2.1.0/test/fuzz/fuzz_parser.c000066400000000000000000000006531413137616400207620ustar00rootroot00000000000000#include #include #include #include #include int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { char *new_str = (char *)malloc(size+1); if (new_str == NULL){ return 0; } memcpy(new_str, data, size); new_str[size] = '\0'; PgQueryParseResult result = pg_query_parse(new_str); pg_query_free_parse_result(result); free(new_str); return 0; } libpg_query-13-2.1.0/test/normalize.c000066400000000000000000000013251413137616400174070ustar00rootroot00000000000000#include #include #include #include #include #include "normalize_tests.c" int main() { size_t i; bool ret_code = 0; for (i = 0; i < testsLength; i += 2) { PgQueryNormalizeResult result = pg_query_normalize(tests[i]); if (result.error) { ret_code = -1; printf("%s\n", result.error->message); } else if (strcmp(result.normalized_query, tests[i + 1]) == 0) { printf("."); } else { ret_code = -1; printf("INVALID result for \"%s\"\nexpected: %s\nactual: %s\n", tests[i], tests[i + 1], result.normalized_query); } pg_query_free_normalize_result(result); } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-13-2.1.0/test/normalize_tests.c000066400000000000000000000032641413137616400206350ustar00rootroot00000000000000const char* tests[] = { "SELECT 1", "SELECT $1", "SELECT $1, 1", "SELECT $1, $2", "ALTER ROLE postgres LOGIN SUPERUSER PASSWORD 'xyz'", "ALTER ROLE postgres LOGIN SUPERUSER PASSWORD $1", "CREATE ROLE postgres ENCRYPTED PASSWORD 'xyz'", "CREATE ROLE postgres ENCRYPTED PASSWORD $1", "ALTER ROLE foo WITH PASSWORD 'bar' VALID UNTIL 'infinity'", "ALTER ROLE foo WITH PASSWORD $1 VALID UNTIL $2", "SELECT a, SUM(b) FROM tbl WHERE c = 'foo' GROUP BY 1, 'bar' ORDER BY 1, 'cafe'", "SELECT a, SUM(b) FROM tbl WHERE c = $1 GROUP BY 1, $2 ORDER BY 1, $3", "select date_trunc($1, created_at at time zone $2), count(*) from users group by date_trunc('day', created_at at time zone 'US/Pacific')", "select date_trunc($1, created_at at time zone $2), count(*) from users group by date_trunc($1, created_at at time zone $2)", "select count(1), date_trunc('day', created_at at time zone 'US/Pacific'), 'something', 'somethingelse' from users group by date_trunc('day', created_at at time zone 'US/Pacific'), date_trunc('day', created_at), 'foobar', 'abcdef'", "select count($1), date_trunc($2, created_at at time zone $3), $4, $5 from users group by date_trunc($2, created_at at time zone $3), date_trunc($6, created_at), $4, $5", "SELECT CAST('abc' as varchar(50))", "SELECT CAST($1 as varchar(50))", // These below are as expected, though questionable if upstream shouldn't be // fixed as this could bloat pg_stat_statements "DECLARE cursor_b CURSOR FOR SELECT * FROM x WHERE id = 123", "DECLARE cursor_b CURSOR FOR SELECT * FROM x WHERE id = $1", "FETCH 1000 FROM cursor_a", "FETCH 1000 FROM cursor_a", "CLOSE cursor_a", "CLOSE cursor_a", }; size_t testsLength = __LINE__ - 6; libpg_query-13-2.1.0/test/parse.c000066400000000000000000000012741413137616400165240ustar00rootroot00000000000000#include #include #include #include #include #include "parse_tests.c" int main() { size_t i; bool ret_code = 0; for (i = 0; i < testsLength; i += 2) { PgQueryParseResult result = pg_query_parse(tests[i]); if (result.error) { ret_code = -1; printf("%s\n", result.error->message); } else if (strcmp(result.parse_tree, tests[i + 1]) == 0) { printf("."); } else { ret_code = -1; printf("INVALID result for \"%s\"\nexpected: %s\n actual: %s\n", tests[i], tests[i + 1], result.parse_tree); } pg_query_free_parse_result(result); } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-13-2.1.0/test/parse_plpgsql.c000066400000000000000000000025571413137616400202730ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #include #include #include int main() { bool ret_code = EXIT_SUCCESS; char *sample_buffer; struct stat sample_stat; int fd; FILE* f_out; PgQueryPlpgsqlParseResult result; fd = open("test/plpgsql_samples.sql", O_RDONLY); if (fd < 0) { printf("Could not read samples file\n"); return EXIT_FAILURE; } fstat(fd, &sample_stat); sample_buffer = mmap(0, sample_stat.st_size, PROT_READ, MAP_PRIVATE, fd, 0); if (sample_buffer != (void *) - 1) { result = pg_query_parse_plpgsql(sample_buffer); munmap(sample_buffer, sample_stat.st_size); close(fd); } else { printf("Could not mmap samples file\n"); close(fd); return EXIT_FAILURE; } if (result.error) { printf("ERROR: %s\n", result.error->message); printf("CONTEXT: %s\n", result.error->context); printf("LOCATION: %s, %s:%d\n\n", result.error->funcname, result.error->filename, result.error->lineno); pg_query_free_plpgsql_parse_result(result); return EXIT_FAILURE; } f_out = fopen("test/plpgsql_samples.actual.json", "w"); fprintf(f_out, "%s\n", result.plpgsql_funcs); fclose(f_out); pg_query_free_plpgsql_parse_result(result); pg_query_exit(); return ret_code; } libpg_query-13-2.1.0/test/parse_protobuf.c000066400000000000000000000014171413137616400204430ustar00rootroot00000000000000#include #include #include #include #include #include "parse_tests.c" int main() { size_t i; bool ret_code = 0; for (i = 0; i < testsLength; i += 2) { PgQueryProtobufParseResult result = pg_query_parse_protobuf(tests[i]); if (result.error) { ret_code = -1; printf("%s\n", result.error->message); } else { printf("."); } //} else if (strcmp(result.parse_tree, tests[i + 1]) == 0) { // printf("."); //} else { // ret_code = -1; // printf("INVALID result for \"%s\"\nexpected: %s\nactual: %s\n", tests[i], tests[i + 1], result.parse_tree); //} pg_query_free_protobuf_parse_result(result); } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-13-2.1.0/test/parse_tests.c000066400000000000000000000422571413137616400177540ustar00rootroot00000000000000const char* tests[] = { "SELECT 1", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":1}},\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT 1; SELECT 2", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":1}},\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}},\"stmt_len\":8},{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":2}},\"location\":17}},\"location\":17}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}},\"stmt_location\":9}]}", "select sum(unique1) FILTER (WHERE unique1 IN (SELECT unique1 FROM onek where unique1 < 100)) FROM tenk1", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"str\":\"sum\"}}],\"args\":[{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"unique1\"}}],\"location\":11}}],\"agg_filter\":{\"SubLink\":{\"subLinkType\":\"ANY_SUBLINK\",\"testexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"unique1\"}}],\"location\":34}},\"subselect\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"unique1\"}}],\"location\":53}},\"location\":53}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"onek\",\"inh\":true,\"relpersistence\":\"p\",\"location\":66}}],\"whereClause\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"str\":\"\\u003c\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"unique1\"}}],\"location\":77}},\"rexpr\":{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":100}},\"location\":87}},\"location\":85}},\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}},\"location\":42}},\"location\":7}},\"location\":7}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"tenk1\",\"inh\":true,\"relpersistence\":\"p\",\"location\":98}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "select sum(unique1) FILTER (WHERE unique1 = ANY (SELECT unique1 FROM onek where unique1 < 100)) FROM tenk1", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"str\":\"sum\"}}],\"args\":[{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"unique1\"}}],\"location\":11}}],\"agg_filter\":{\"SubLink\":{\"subLinkType\":\"ANY_SUBLINK\",\"testexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"unique1\"}}],\"location\":34}},\"operName\":[{\"String\":{\"str\":\"=\"}}],\"subselect\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"unique1\"}}],\"location\":56}},\"location\":56}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"onek\",\"inh\":true,\"relpersistence\":\"p\",\"location\":69}}],\"whereClause\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"str\":\"\\u003c\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"unique1\"}}],\"location\":80}},\"rexpr\":{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":100}},\"location\":90}},\"location\":88}},\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}},\"location\":42}},\"location\":7}},\"location\":7}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"tenk1\",\"inh\":true,\"relpersistence\":\"p\",\"location\":101}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "CREATE FOREIGN TABLE films (code char(5) NOT NULL, title varchar(40) NOT NULL, did integer NOT NULL, date_prod date, kind varchar(10), len interval hour to minute) SERVER film_server;", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"CreateForeignTableStmt\":{\"base\":{\"relation\":{\"relname\":\"films\",\"inh\":true,\"relpersistence\":\"p\",\"location\":21},\"tableElts\":[{\"ColumnDef\":{\"colname\":\"code\",\"typeName\":{\"names\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"bpchar\"}}],\"typmods\":[{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":5}},\"location\":38}}],\"typemod\":-1,\"location\":33},\"is_local\":true,\"constraints\":[{\"Constraint\":{\"contype\":\"CONSTR_NOTNULL\",\"location\":41}}],\"location\":28}},{\"ColumnDef\":{\"colname\":\"title\",\"typeName\":{\"names\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"varchar\"}}],\"typmods\":[{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":40}},\"location\":65}}],\"typemod\":-1,\"location\":57},\"is_local\":true,\"constraints\":[{\"Constraint\":{\"contype\":\"CONSTR_NOTNULL\",\"location\":69}}],\"location\":51}},{\"ColumnDef\":{\"colname\":\"did\",\"typeName\":{\"names\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"int4\"}}],\"typemod\":-1,\"location\":83},\"is_local\":true,\"constraints\":[{\"Constraint\":{\"contype\":\"CONSTR_NOTNULL\",\"location\":91}}],\"location\":79}},{\"ColumnDef\":{\"colname\":\"date_prod\",\"typeName\":{\"names\":[{\"String\":{\"str\":\"date\"}}],\"typemod\":-1,\"location\":111},\"is_local\":true,\"location\":101}},{\"ColumnDef\":{\"colname\":\"kind\",\"typeName\":{\"names\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"varchar\"}}],\"typmods\":[{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":10}},\"location\":130}}],\"typemod\":-1,\"location\":122},\"is_local\":true,\"location\":117}},{\"ColumnDef\":{\"colname\":\"len\",\"typeName\":{\"names\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"interval\"}}],\"typmods\":[{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":3072}},\"location\":148}}],\"typemod\":-1,\"location\":139},\"is_local\":true,\"location\":135}}],\"oncommit\":\"ONCOMMIT_NOOP\"},\"servername\":\"film_server\"}},\"stmt_len\":182}]}", "CREATE FOREIGN TABLE ft1 () SERVER no_server", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"CreateForeignTableStmt\":{\"base\":{\"relation\":{\"relname\":\"ft1\",\"inh\":true,\"relpersistence\":\"p\",\"location\":21},\"oncommit\":\"ONCOMMIT_NOOP\"},\"servername\":\"no_server\"}}}]}", "SELECT parse_ident(E'\"c\".X XXXX\002XXXXXX')", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"str\":\"parse_ident\"}}],\"args\":[{\"A_Const\":{\"val\":{\"String\":{\"str\":\"\\\"c\\\".X XXXX\\u0002XXXXXX\"}},\"location\":19}}],\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "ALTER ROLE postgres LOGIN SUPERUSER PASSWORD 'xyz'", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"AlterRoleStmt\":{\"role\":{\"roletype\":\"ROLESPEC_CSTRING\",\"rolename\":\"postgres\",\"location\":11},\"options\":[{\"DefElem\":{\"defname\":\"canlogin\",\"arg\":{\"Integer\":{\"ival\":1}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":20}},{\"DefElem\":{\"defname\":\"superuser\",\"arg\":{\"Integer\":{\"ival\":1}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":26}},{\"DefElem\":{\"defname\":\"password\",\"arg\":{\"String\":{\"str\":\"xyz\"}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":36}}],\"action\":1}}}]}", "SELECT extract($1 FROM $2)", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"date_part\"}}],\"args\":[{\"ParamRef\":{\"number\":1,\"location\":15}},{\"ParamRef\":{\"number\":2,\"location\":23}}],\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "WITH w AS NOT MATERIALIZED (SELECT * FROM big_table) SELECT * FROM w LIMIT 1", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"A_Star\":{}}],\"location\":60}},\"location\":60}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"w\",\"inh\":true,\"relpersistence\":\"p\",\"location\":67}}],\"limitCount\":{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":1}},\"location\":75}},\"limitOption\":\"LIMIT_OPTION_COUNT\",\"withClause\":{\"ctes\":[{\"CommonTableExpr\":{\"ctename\":\"w\",\"ctematerialized\":\"CTEMaterializeNever\",\"ctequery\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"A_Star\":{}}],\"location\":35}},\"location\":35}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"big_table\",\"inh\":true,\"relpersistence\":\"p\",\"location\":42}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}},\"location\":5}}]},\"op\":\"SETOP_NONE\"}}}]}", "CREATE USER test PASSWORD $1", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"CreateRoleStmt\":{\"stmt_type\":\"ROLESTMT_USER\",\"role\":\"test\",\"options\":[{\"DefElem\":{\"defname\":\"password\",\"arg\":{\"ParamRef\":{\"number\":1,\"location\":26}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":17}}]}}}]}", "ALTER USER test ENCRYPTED PASSWORD $2", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"AlterRoleStmt\":{\"role\":{\"roletype\":\"ROLESPEC_CSTRING\",\"rolename\":\"test\",\"location\":11},\"options\":[{\"DefElem\":{\"defname\":\"password\",\"arg\":{\"ParamRef\":{\"number\":2,\"location\":35}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":16}}],\"action\":1}}}]}", "SET SCHEMA $3", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"VariableSetStmt\":{\"kind\":\"VAR_SET_VALUE\",\"name\":\"search_path\",\"args\":[{\"ParamRef\":{\"number\":3,\"location\":11}}]}}}]}", "SET ROLE $4", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"VariableSetStmt\":{\"kind\":\"VAR_SET_VALUE\",\"name\":\"role\",\"args\":[{\"ParamRef\":{\"number\":4,\"location\":9}}]}}}]}", "SET SESSION AUTHORIZATION $5", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"VariableSetStmt\":{\"kind\":\"VAR_SET_VALUE\",\"name\":\"session_authorization\",\"args\":[{\"ParamRef\":{\"number\":5,\"location\":26}}]}}}]}", "SELECT EXTRACT($1 FROM TIMESTAMP $2)", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"date_part\"}}],\"args\":[{\"ParamRef\":{\"number\":1,\"location\":15}},{\"TypeCast\":{\"arg\":{\"ParamRef\":{\"number\":2,\"location\":33}},\"typeName\":{\"names\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"timestamp\"}}],\"typemod\":-1,\"location\":23},\"location\":-1}}],\"location\":7}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT DATE $1", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"TypeCast\":{\"arg\":{\"ParamRef\":{\"number\":1,\"location\":12}},\"typeName\":{\"names\":[{\"String\":{\"str\":\"date\"}}],\"typemod\":-1,\"location\":7},\"location\":-1}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT INTERVAL $1", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"TypeCast\":{\"arg\":{\"ParamRef\":{\"number\":1,\"location\":16}},\"typeName\":{\"names\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"interval\"}}],\"typemod\":-1,\"location\":7},\"location\":-1}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT INTERVAL $1 YEAR", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"TypeCast\":{\"arg\":{\"ParamRef\":{\"number\":1,\"location\":16}},\"typeName\":{\"names\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"interval\"}}],\"typmods\":[{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":4}},\"location\":19}}],\"typemod\":-1,\"location\":7},\"location\":-1}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT INTERVAL (6) $1", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"TypeCast\":{\"arg\":{\"ParamRef\":{\"number\":1,\"location\":20}},\"typeName\":{\"names\":[{\"String\":{\"str\":\"pg_catalog\"}},{\"String\":{\"str\":\"interval\"}}],\"typmods\":[{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":32767}},\"location\":-1}},{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":6}},\"location\":17}}],\"typemod\":-1,\"location\":7},\"location\":-1}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SET search_path = $1", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"VariableSetStmt\":{\"kind\":\"VAR_SET_VALUE\",\"name\":\"search_path\",\"args\":[{\"ParamRef\":{\"number\":1,\"location\":18}}]}}}]}", "ALTER ROLE postgres LOGIN SUPERUSER PASSWORD ?", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"AlterRoleStmt\":{\"role\":{\"roletype\":\"ROLESPEC_CSTRING\",\"rolename\":\"postgres\",\"location\":11},\"options\":[{\"DefElem\":{\"defname\":\"canlogin\",\"arg\":{\"Integer\":{\"ival\":1}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":20}},{\"DefElem\":{\"defname\":\"superuser\",\"arg\":{\"Integer\":{\"ival\":1}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":26}},{\"DefElem\":{\"defname\":\"password\",\"arg\":{\"ParamRef\":{\"location\":45}},\"defaction\":\"DEFELEM_UNSPEC\",\"location\":36}}],\"action\":1}}}]}", "WITH a AS (SELECT * FROM x WHERE x.y = ? AND x.z = 1) SELECT * FROM a WHERE b = 5", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"A_Star\":{}}],\"location\":61}},\"location\":61}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"a\",\"inh\":true,\"relpersistence\":\"p\",\"location\":68}}],\"whereClause\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"str\":\"=\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"b\"}}],\"location\":76}},\"rexpr\":{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":5}},\"location\":80}},\"location\":78}},\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"withClause\":{\"ctes\":[{\"CommonTableExpr\":{\"ctename\":\"a\",\"ctematerialized\":\"CTEMaterializeDefault\",\"ctequery\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"A_Star\":{}}],\"location\":18}},\"location\":18}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"x\",\"inh\":true,\"relpersistence\":\"p\",\"location\":25}}],\"whereClause\":{\"BoolExpr\":{\"boolop\":\"AND_EXPR\",\"args\":[{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"str\":\"=\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"x\"}},{\"String\":{\"str\":\"y\"}}],\"location\":33}},\"rexpr\":{\"ParamRef\":{\"location\":39}},\"location\":37}},{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"str\":\"=\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"x\"}},{\"String\":{\"str\":\"z\"}}],\"location\":45}},\"rexpr\":{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":1}},\"location\":51}},\"location\":49}}],\"location\":41}},\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}},\"location\":5}}]},\"op\":\"SETOP_NONE\"}}}]}", "SELECT count(*) from testjsonb WHERE j->'array' ? 'bar'", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"FuncCall\":{\"funcname\":[{\"String\":{\"str\":\"count\"}}],\"agg_star\":true,\"location\":7}},\"location\":7}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"testjsonb\",\"inh\":true,\"relpersistence\":\"p\",\"location\":21}}],\"whereClause\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"str\":\"?\"}}],\"lexpr\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"str\":\"-\\u003e\"}}],\"lexpr\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"j\"}}],\"location\":38}},\"rexpr\":{\"A_Const\":{\"val\":{\"String\":{\"str\":\"array\"}},\"location\":41}},\"location\":39}},\"rexpr\":{\"A_Const\":{\"val\":{\"String\":{\"str\":\"bar\"}},\"location\":51}},\"location\":49}},\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT DISTINCT a FROM b", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"distinctClause\":[{}],\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"String\":{\"str\":\"a\"}}],\"location\":16}},\"location\":16}}],\"fromClause\":[{\"RangeVar\":{\"relname\":\"b\",\"inh\":true,\"relpersistence\":\"p\",\"location\":23}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT * FROM generate_series(1, 2)", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"ColumnRef\":{\"fields\":[{\"A_Star\":{}}],\"location\":7}},\"location\":7}}],\"fromClause\":[{\"RangeFunction\":{\"functions\":[{\"List\":{\"items\":[{\"FuncCall\":{\"funcname\":[{\"String\":{\"str\":\"generate_series\"}}],\"args\":[{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":1}},\"location\":30}},{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":2}},\"location\":33}}],\"location\":14}},{}]}}]}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}", "SELECT 1 + 1", "{\"version\":130003,\"stmts\":[{\"stmt\":{\"SelectStmt\":{\"targetList\":[{\"ResTarget\":{\"val\":{\"A_Expr\":{\"kind\":\"AEXPR_OP\",\"name\":[{\"String\":{\"str\":\"+\"}}],\"lexpr\":{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":1}},\"location\":7}},\"rexpr\":{\"A_Const\":{\"val\":{\"Integer\":{\"ival\":1}},\"location\":11}},\"location\":9}},\"location\":7}}],\"limitOption\":\"LIMIT_OPTION_DEFAULT\",\"op\":\"SETOP_NONE\"}}}]}" }; size_t testsLength = __LINE__ - 4; libpg_query-13-2.1.0/test/plpgsql_samples.expected.json000066400000000000000000000604411413137616400231500ustar00rootroot00000000000000[ {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"r","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"foo%rowtype"}}}},{"PLpgSQL_row":{"refname":"(unnamed row)","lineno":5,"fields":[{"name":"r","varno":1}]}}],"action":{"PLpgSQL_stmt_block":{"lineno":4,"body":[{"PLpgSQL_stmt_fors":{"lineno":5,"var":{"PLpgSQL_row":{"refname":"(unnamed row)","lineno":5,"fields":[{"name":"r","varno":1}]}},"body":[{"PLpgSQL_stmt_return_next":{"lineno":9}}],"query":{"PLpgSQL_expr":{"query":"SELECT * FROM foo WHERE fooid \u003e 0"}}}},{"PLpgSQL_stmt_return":{"lineno":11}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":2,"body":[{"PLpgSQL_stmt_return_query":{"lineno":3,"query":{"PLpgSQL_expr":{"query":"SELECT flightid\n FROM flight\n WHERE flightdate \u003e= $1\n AND flightdate \u003c ($1 + 1)"}}}},{"PLpgSQL_stmt_if":{"lineno":10,"cond":{"PLpgSQL_expr":{"query":"SELECT NOT FOUND"}},"then_body":[{"PLpgSQL_stmt_raise":{"lineno":11,"elog_level":20,"message":"No flight at %.","params":[{"PLpgSQL_expr":{"query":"SELECT $1"}}]}}]}},{"PLpgSQL_stmt_return":{"lineno":14}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"v_name","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"v_version","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":2,"body":[{"PLpgSQL_stmt_if":{"lineno":3,"cond":{"PLpgSQL_expr":{"query":"SELECT v_version IS NULL"}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":4,"expr":{"PLpgSQL_expr":{"query":"SELECT v_name"}}}}]}},{"PLpgSQL_stmt_return":{"lineno":6,"expr":{"PLpgSQL_expr":{"query":"SELECT v_name || '/' || v_version"}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"v_job_id","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"a_running_job_count","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}},{"PLpgSQL_row":{"refname":"(unnamed row)","lineno":7,"fields":[{"name":"a_running_job_count","varno":2}]}},{"PLpgSQL_var":{"refname":"sqlstate","lineno":18,"datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}},"isconst":true}},{"PLpgSQL_var":{"refname":"sqlerrm","lineno":18,"datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}},"isconst":true}}],"action":{"PLpgSQL_stmt_block":{"lineno":4,"body":[{"PLpgSQL_stmt_execsql":{"lineno":5,"sqlstmt":{"PLpgSQL_expr":{"query":"LOCK TABLE cs_jobs IN EXCLUSIVE MODE"}}}},{"PLpgSQL_stmt_execsql":{"lineno":7,"sqlstmt":{"PLpgSQL_expr":{"query":"SELECT count(*) FROM cs_jobs WHERE end_stamp IS NULL"}},"into":true,"target":{"PLpgSQL_row":{"refname":"(unnamed row)","lineno":7,"fields":[{"name":"a_running_job_count","varno":2}]}}}},{"PLpgSQL_stmt_if":{"lineno":9,"cond":{"PLpgSQL_expr":{"query":"SELECT a_running_job_count \u003e 0"}},"then_body":[{"PLpgSQL_stmt_raise":{"lineno":10,"elog_level":20,"message":"Unable to create a new job: a job is currently running"}}]}},{"PLpgSQL_stmt_execsql":{"lineno":13,"sqlstmt":{"PLpgSQL_expr":{"query":"DELETE FROM cs_active_job"}}}},{"PLpgSQL_stmt_execsql":{"lineno":14,"sqlstmt":{"PLpgSQL_expr":{"query":"INSERT INTO cs_active_job(job_id) VALUES (v_job_id)"}}}},{"PLpgSQL_stmt_block":{"lineno":16,"body":[{"PLpgSQL_stmt_execsql":{"lineno":17,"sqlstmt":{"PLpgSQL_expr":{"query":"INSERT INTO cs_jobs (job_id, start_stamp) VALUES (v_job_id, now())"}}}}],"exceptions":{"PLpgSQL_exception_block":{"exc_list":[{"PLpgSQL_exception":{"conditions":[{"PLpgSQL_condition":{"condname":"unique_violation"}}]}}]}}}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"pos","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":4,"body":[{"PLpgSQL_stmt_assign":{"lineno":5,"varno":1,"expr":{"PLpgSQL_expr":{"query":"SELECT instr($1, $2, 1)"}}}},{"PLpgSQL_stmt_return":{"lineno":6,"expr":{"PLpgSQL_expr":{"query":"SELECT pos"}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"string","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"string_to_search","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"beg_index","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"pos","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"integer "}},"notnull":true,"default_val":{"PLpgSQL_expr":{"query":"SELECT 0"}}}},{"PLpgSQL_var":{"refname":"temp_str","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"varchar"}}}},{"PLpgSQL_var":{"refname":"beg","lineno":5,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}},{"PLpgSQL_var":{"refname":"length","lineno":6,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}},{"PLpgSQL_var":{"refname":"ss_length","lineno":7,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":8,"body":[{"PLpgSQL_stmt_if":{"lineno":9,"cond":{"PLpgSQL_expr":{"query":"SELECT beg_index \u003e 0"}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":10,"varno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT substring(string FROM beg_index)"}}}},{"PLpgSQL_stmt_assign":{"lineno":11,"varno":4,"expr":{"PLpgSQL_expr":{"query":"SELECT position(string_to_search IN temp_str)"}}}},{"PLpgSQL_stmt_if":{"lineno":13,"cond":{"PLpgSQL_expr":{"query":"SELECT pos = 0"}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":14,"expr":{"PLpgSQL_expr":{"query":"SELECT 0"}}}}],"else_body":[{"PLpgSQL_stmt_return":{"lineno":16,"expr":{"PLpgSQL_expr":{"query":"SELECT pos + beg_index - 1"}}}}]}}],"elsif_list":[{"PLpgSQL_if_elsif":{"lineno":18,"cond":{"PLpgSQL_expr":{"query":"SELECT beg_index \u003c 0"}},"stmts":[{"PLpgSQL_stmt_assign":{"lineno":19,"varno":8,"expr":{"PLpgSQL_expr":{"query":"SELECT char_length(string_to_search)"}}}},{"PLpgSQL_stmt_assign":{"lineno":20,"varno":7,"expr":{"PLpgSQL_expr":{"query":"SELECT char_length(string)"}}}},{"PLpgSQL_stmt_assign":{"lineno":21,"varno":6,"expr":{"PLpgSQL_expr":{"query":"SELECT length + beg_index - ss_length + 2"}}}},{"PLpgSQL_stmt_while":{"lineno":23,"cond":{"PLpgSQL_expr":{"query":"SELECT beg \u003e 0"}},"body":[{"PLpgSQL_stmt_assign":{"lineno":24,"varno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT substring(string FROM beg FOR ss_length)"}}}},{"PLpgSQL_stmt_assign":{"lineno":25,"varno":4,"expr":{"PLpgSQL_expr":{"query":"SELECT position(string_to_search IN temp_str)"}}}},{"PLpgSQL_stmt_if":{"lineno":27,"cond":{"PLpgSQL_expr":{"query":"SELECT pos \u003e 0"}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":28,"expr":{"PLpgSQL_expr":{"query":"SELECT beg"}}}}]}},{"PLpgSQL_stmt_assign":{"lineno":31,"varno":6,"expr":{"PLpgSQL_expr":{"query":"SELECT beg - 1"}}}}]}},{"PLpgSQL_stmt_return":{"lineno":34,"expr":{"PLpgSQL_expr":{"query":"SELECT 0"}}}}]}}],"else_body":[{"PLpgSQL_stmt_return":{"lineno":36,"expr":{"PLpgSQL_expr":{"query":"SELECT 0"}}}}]}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"string","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"string_to_search","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"beg_index","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"occur_index","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"pos","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"integer "}},"notnull":true,"default_val":{"PLpgSQL_expr":{"query":"SELECT 0"}}}},{"PLpgSQL_var":{"refname":"occur_number","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"integer "}},"notnull":true,"default_val":{"PLpgSQL_expr":{"query":"SELECT 0"}}}},{"PLpgSQL_var":{"refname":"temp_str","lineno":5,"datatype":{"PLpgSQL_type":{"typname":"varchar"}}}},{"PLpgSQL_var":{"refname":"beg","lineno":6,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}},{"PLpgSQL_var":{"refname":"i","lineno":7,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}},{"PLpgSQL_var":{"refname":"length","lineno":8,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}},{"PLpgSQL_var":{"refname":"ss_length","lineno":9,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}},{"PLpgSQL_var":{"refname":"i","lineno":15,"datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":10,"body":[{"PLpgSQL_stmt_if":{"lineno":11,"cond":{"PLpgSQL_expr":{"query":"SELECT beg_index \u003e 0"}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":12,"varno":8,"expr":{"PLpgSQL_expr":{"query":"SELECT beg_index"}}}},{"PLpgSQL_stmt_assign":{"lineno":13,"varno":7,"expr":{"PLpgSQL_expr":{"query":"SELECT substring(string FROM beg_index)"}}}},{"PLpgSQL_stmt_fori":{"lineno":15,"var":{"PLpgSQL_var":{"refname":"i","lineno":15,"datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},"lower":{"PLpgSQL_expr":{"query":"SELECT 1"}},"upper":{"PLpgSQL_expr":{"query":"SELECT occur_index"}},"body":[{"PLpgSQL_stmt_assign":{"lineno":16,"varno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT position(string_to_search IN temp_str)"}}}},{"PLpgSQL_stmt_if":{"lineno":18,"cond":{"PLpgSQL_expr":{"query":"SELECT i = 1"}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":19,"varno":8,"expr":{"PLpgSQL_expr":{"query":"SELECT beg + pos - 1"}}}}],"else_body":[{"PLpgSQL_stmt_assign":{"lineno":21,"varno":8,"expr":{"PLpgSQL_expr":{"query":"SELECT beg + pos"}}}}]}},{"PLpgSQL_stmt_assign":{"lineno":24,"varno":7,"expr":{"PLpgSQL_expr":{"query":"SELECT substring(string FROM beg + 1)"}}}}]}},{"PLpgSQL_stmt_if":{"lineno":27,"cond":{"PLpgSQL_expr":{"query":"SELECT pos = 0"}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":28,"expr":{"PLpgSQL_expr":{"query":"SELECT 0"}}}}],"else_body":[{"PLpgSQL_stmt_return":{"lineno":30,"expr":{"PLpgSQL_expr":{"query":"SELECT beg"}}}}]}}],"elsif_list":[{"PLpgSQL_if_elsif":{"lineno":32,"cond":{"PLpgSQL_expr":{"query":"SELECT beg_index \u003c 0"}},"stmts":[{"PLpgSQL_stmt_assign":{"lineno":33,"varno":11,"expr":{"PLpgSQL_expr":{"query":"SELECT char_length(string_to_search)"}}}},{"PLpgSQL_stmt_assign":{"lineno":34,"varno":10,"expr":{"PLpgSQL_expr":{"query":"SELECT char_length(string)"}}}},{"PLpgSQL_stmt_assign":{"lineno":35,"varno":8,"expr":{"PLpgSQL_expr":{"query":"SELECT length + beg_index - ss_length + 2"}}}},{"PLpgSQL_stmt_while":{"lineno":37,"cond":{"PLpgSQL_expr":{"query":"SELECT beg \u003e 0"}},"body":[{"PLpgSQL_stmt_assign":{"lineno":38,"varno":7,"expr":{"PLpgSQL_expr":{"query":"SELECT substring(string FROM beg FOR ss_length)"}}}},{"PLpgSQL_stmt_assign":{"lineno":39,"varno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT position(string_to_search IN temp_str)"}}}},{"PLpgSQL_stmt_if":{"lineno":41,"cond":{"PLpgSQL_expr":{"query":"SELECT pos \u003e 0"}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":42,"varno":6,"expr":{"PLpgSQL_expr":{"query":"SELECT occur_number + 1"}}}},{"PLpgSQL_stmt_if":{"lineno":44,"cond":{"PLpgSQL_expr":{"query":"SELECT occur_number = occur_index"}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":45,"expr":{"PLpgSQL_expr":{"query":"SELECT beg"}}}}]}}]}},{"PLpgSQL_stmt_assign":{"lineno":49,"varno":8,"expr":{"PLpgSQL_expr":{"query":"SELECT beg - 1"}}}}]}},{"PLpgSQL_stmt_return":{"lineno":52,"expr":{"PLpgSQL_expr":{"query":"SELECT 0"}}}}]}}],"else_body":[{"PLpgSQL_stmt_return":{"lineno":54,"expr":{"PLpgSQL_expr":{"query":"SELECT 0"}}}}]}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"enddate","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"canceled","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":1,"body":[{"PLpgSQL_stmt_if":{"lineno":2,"cond":{"PLpgSQL_expr":{"query":"SELECT canceled = true"}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":3,"expr":{"PLpgSQL_expr":{"query":"SELECT null"}}}}],"else_body":[{"PLpgSQL_stmt_return":{"lineno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT endDate"}}}}]}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"date_inscription","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"date_observation","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":1,"body":[{"PLpgSQL_stmt_return":{"lineno":2,"expr":{"PLpgSQL_expr":{"query":"SELECT (calcule_duree(date_inscription,date_observation) + 1)"}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"origine","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"atdate","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"theday","lineno":2,"datatype":{"PLpgSQL_type":{"typname":"INTEGER"}}}},{"PLpgSQL_var":{"refname":"themonth","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"INTEGER"}}}},{"PLpgSQL_var":{"refname":"theyear","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"INTEGER"}}}},{"PLpgSQL_var":{"refname":"theday_now","lineno":5,"datatype":{"PLpgSQL_type":{"typname":"INTEGER"}}}},{"PLpgSQL_var":{"refname":"themonth_now","lineno":6,"datatype":{"PLpgSQL_type":{"typname":"INTEGER"}}}},{"PLpgSQL_var":{"refname":"theyear_now","lineno":7,"datatype":{"PLpgSQL_type":{"typname":"INTEGER"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":8,"body":[{"PLpgSQL_stmt_assign":{"lineno":9,"varno":3,"expr":{"PLpgSQL_expr":{"query":"SELECT EXTRACT(DAY FROM origine)"}}}},{"PLpgSQL_stmt_assign":{"lineno":10,"varno":4,"expr":{"PLpgSQL_expr":{"query":"SELECT EXTRACT(MONTH FROM origine)"}}}},{"PLpgSQL_stmt_assign":{"lineno":11,"varno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT EXTRACT(YEAR FROM origine)"}}}},{"PLpgSQL_stmt_assign":{"lineno":13,"varno":6,"expr":{"PLpgSQL_expr":{"query":"SELECT EXTRACT(DAY FROM atDate)"}}}},{"PLpgSQL_stmt_assign":{"lineno":14,"varno":7,"expr":{"PLpgSQL_expr":{"query":"SELECT EXTRACT(MONTH FROM atDate)"}}}},{"PLpgSQL_stmt_assign":{"lineno":15,"varno":8,"expr":{"PLpgSQL_expr":{"query":"SELECT EXTRACT(YEAR FROM atDate)"}}}},{"PLpgSQL_stmt_assign":{"lineno":17,"varno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT theYear_now - theYear"}}}},{"PLpgSQL_stmt_if":{"lineno":18,"cond":{"PLpgSQL_expr":{"query":"SELECT theMonth_now \u003c= theMonth"}},"then_body":[{"PLpgSQL_stmt_if":{"lineno":19,"cond":{"PLpgSQL_expr":{"query":"SELECT theMonth = theMonth_now"}},"then_body":[{"PLpgSQL_stmt_if":{"lineno":20,"cond":{"PLpgSQL_expr":{"query":"SELECT theDay \u003e theDay_now"}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":21,"varno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT theYear - 1"}}}}]}}],"else_body":[{"PLpgSQL_stmt_assign":{"lineno":24,"varno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT theYear - 1"}}}}]}}]}},{"PLpgSQL_stmt_return":{"lineno":28,"expr":{"PLpgSQL_expr":{"query":"SELECT theYear"}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"uidmember","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"memberid","lineno":2,"datatype":{"PLpgSQL_type":{"typname":"int4"}}}},{"PLpgSQL_row":{"refname":"(unnamed row)","lineno":5,"fields":[{"name":"memberid","varno":2}]}}],"action":{"PLpgSQL_stmt_block":{"lineno":4,"body":[{"PLpgSQL_stmt_execsql":{"lineno":5,"sqlstmt":{"PLpgSQL_expr":{"query":"SELECT key FROM\n\t\tmember\n\tWHERE\n\t\tuidmember = uid"}},"into":true,"target":{"PLpgSQL_row":{"refname":"(unnamed row)","lineno":5,"fields":[{"name":"memberid","varno":2}]}}}},{"PLpgSQL_stmt_return":{"lineno":11,"expr":{"PLpgSQL_expr":{"query":"SELECT memberID"}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"memberid","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"jobid","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"jobend","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_rec":{"refname":"lastjob","dno":4,"lineno":2}},{"PLpgSQL_var":{"refname":"lastemployer","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"record"}}}},{"PLpgSQL_var":{"refname":"updatejob","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"BOOL"}}}},{"PLpgSQL_recfield":{"fieldname":"jobid","recparentno":4}},{"PLpgSQL_row":{"refname":"(unnamed row)","lineno":13,"fields":[{"name":"lastemployer","varno":5}]}}],"action":{"PLpgSQL_stmt_block":{"lineno":5,"body":[{"PLpgSQL_stmt_assign":{"lineno":6,"varno":6,"expr":{"PLpgSQL_expr":{"query":"SELECT false"}}}},{"PLpgSQL_stmt_execsql":{"lineno":8,"sqlstmt":{"PLpgSQL_expr":{"query":"SELECT * FROM lire_lastJob(memberID) AS (jobID INT,startsupport DATE,jobEnd DATE)"}},"into":true,"target":{"PLpgSQL_rec":{"refname":"lastjob","dno":4,"lineno":2}}}},{"PLpgSQL_stmt_if":{"lineno":9,"cond":{"PLpgSQL_expr":{"query":"SELECT lastJob.jobID = jobID"}},"then_body":[{"PLpgSQL_stmt_execsql":{"lineno":10,"sqlstmt":{"PLpgSQL_expr":{"query":"SELECT\n\t\t\tr_perlab.key AS positionHeld,\n\t\t\tr_perlab.endDate AS positionEnd\n\t\t FROM\n\t\t\tr_perlab,\n\t\t\t(SELECT\n\t\t\t\tr_perlab.key_member AS col_memberID,\n\t\t\t\tmax(r_perlab.start) AS startrattachement\n\t\t\tFROM r_perlab\n\t\t\tGROUP BY col_memberID) positions\n\t\tWHERE ((positions.col_memberID = memberID) AND (r_perlab.key_member = positions.col_memberID) AND (r_perlab.start = startrattachement))"}},"into":true,"target":{"PLpgSQL_row":{"refname":"(unnamed row)","lineno":13,"fields":[{"name":"lastemployer","varno":5}]}}}},{"PLpgSQL_stmt_if":{"lineno":23,"cond":{"PLpgSQL_expr":{"query":"SELECT lastEmployer.positionHeld IS NOT NULL"}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":24,"varno":6,"expr":{"PLpgSQL_expr":{"query":"SELECT true"}}}},{"PLpgSQL_stmt_execsql":{"lineno":25,"sqlstmt":{"PLpgSQL_expr":{"query":"UPDATE r_perlab SET endDate = jobEnd WHERE key = lastEmployer.positionHeld"}}}}]}}]}},{"PLpgSQL_stmt_return":{"lineno":29,"expr":{"PLpgSQL_expr":{"query":"SELECT updateJob"}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"str","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"spechar","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"VARCHAR[ ] "}},"default_val":{"PLpgSQL_expr":{"query":"SELECT ARRAY['à','â','é','è','ê','ë','ï','î','ô','û','ù','À','Â','É','È','Ê','Ë','Ï','Î','ô','û','ù','ç' ]"}}}},{"PLpgSQL_var":{"refname":"lettres","lineno":5,"datatype":{"PLpgSQL_type":{"typname":"VARCHAR[ ] "}},"default_val":{"PLpgSQL_expr":{"query":"SELECT ARRAY['a','a','e','e','e','e','i','i','o','u','u','a','a','e','e','e','e','i','i','o','u','u','c' ]"}}}},{"PLpgSQL_var":{"refname":"resultat","lineno":6,"datatype":{"PLpgSQL_type":{"typname":"VARCHAR"}}}},{"PLpgSQL_var":{"refname":"nbrspechar","lineno":7,"datatype":{"PLpgSQL_type":{"typname":"INTEGER "}},"default_val":{"PLpgSQL_expr":{"query":"SELECT 23"}}}},{"PLpgSQL_var":{"refname":"i","lineno":12,"datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":9,"body":[{"PLpgSQL_stmt_if":{"lineno":10,"cond":{"PLpgSQL_expr":{"query":"SELECT (str IS NOT NULL)"}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":11,"varno":4,"expr":{"PLpgSQL_expr":{"query":"SELECT str"}}}},{"PLpgSQL_stmt_fori":{"lineno":12,"var":{"PLpgSQL_var":{"refname":"i","lineno":12,"datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},"lower":{"PLpgSQL_expr":{"query":"SELECT 1"}},"upper":{"PLpgSQL_expr":{"query":"SELECT nbrspechar"}},"body":[{"PLpgSQL_stmt_assign":{"lineno":13,"varno":4,"expr":{"PLpgSQL_expr":{"query":"SELECT regexp_replace(resultat,spechar[i],lettres[i],'g')"}}}}]}}]}},{"PLpgSQL_stmt_return":{"lineno":16,"expr":{"PLpgSQL_expr":{"query":"SELECT resultat"}}}}]}}}}, {"PLpgSQL_function":{"new_varno":1,"old_varno":2,"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_rec":{"refname":"new","dno":1}},{"PLpgSQL_rec":{"refname":"old","dno":2}},{"PLpgSQL_recfield":{"fieldname":"name","recparentno":1}}],"action":{"PLpgSQL_stmt_block":{"lineno":3,"body":[{"PLpgSQL_stmt_assign":{"lineno":4,"varno":3,"expr":{"PLpgSQL_expr":{"query":"SELECT upper(cleanString(NEW.name))"}}}},{"PLpgSQL_stmt_return":{"lineno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT NEW"}}}}]}}}}, {"PLpgSQL_function":{"new_varno":1,"old_varno":2,"datums":[{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_rec":{"refname":"new","dno":1}},{"PLpgSQL_rec":{"refname":"old","dno":2}},{"PLpgSQL_recfield":{"fieldname":"key","recparentno":1}}],"action":{"PLpgSQL_stmt_block":{"lineno":2,"body":[{"PLpgSQL_stmt_execsql":{"lineno":3,"sqlstmt":{"PLpgSQL_expr":{"query":"INSERT INTO list(key,date) VALUES(NEW.key,NEW.end)"}}}},{"PLpgSQL_stmt_return":{"lineno":4,"expr":{"PLpgSQL_expr":{"query":"SELECT NEW"}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"p_time_start","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"p_time_end","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"p_time_interval","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"ts","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"arbitrary_return","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":2,"body":[{"PLpgSQL_stmt_if":{"lineno":6,"cond":{"PLpgSQL_expr":{"query":"SELECT p_time_interval IS NULL"}},"then_body":[{"PLpgSQL_stmt_assign":{"lineno":7,"varno":2,"expr":{"PLpgSQL_expr":{"query":"SELECT interval_from_start_end(p_time_start, p_time_end)"}}}}]}},{"PLpgSQL_stmt_return_query":{"lineno":9,"query":{"PLpgSQL_expr":{"query":"SELECT\n bucket_function(p_time_interval, timestamp) AS ts,\n arbitrary_return\n FROM test.some_table\n WHERE\n start \u003e= p_time_start\n AND \"end\" \u003c p_time_end\n GROUP BY 1"}}}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"_result","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"active_on_to_date","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"uuid[]"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":4,"body":[{"PLpgSQL_stmt_assign":{"lineno":5,"expr":{"PLpgSQL_expr":{"query":"SELECT ARRAY( SELECT some_id FROM some_table)"}}}},{"PLpgSQL_stmt_return":{}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"v_name","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"v_version","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"_a","lineno":3,"datatype":{"PLpgSQL_type":{"typname":"int"}}}}],"action":{"PLpgSQL_stmt_block":{"lineno":5,"body":[{"PLpgSQL_stmt_if":{"lineno":6,"cond":{"PLpgSQL_expr":{"query":"SELECT v_version IS NULL"}},"then_body":[{"PLpgSQL_stmt_return":{"lineno":7,"expr":{"PLpgSQL_expr":{"query":"SELECT v_name"}}}}]}},{"PLpgSQL_stmt_return":{"lineno":10,"expr":{"PLpgSQL_expr":{"query":"SELECT v_name || '/' || v_version"}}}}]}}}}, {"PLpgSQL_function":{"datums":[{"PLpgSQL_var":{"refname":"str","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_var":{"refname":"found","datatype":{"PLpgSQL_type":{"typname":"UNKNOWN"}}}},{"PLpgSQL_rec":{"refname":"v3","dno":2,"lineno":3}},{"PLpgSQL_var":{"refname":"v4","lineno":4,"datatype":{"PLpgSQL_type":{"typname":"integer"}}}},{"PLpgSQL_recfield":{"fieldname":"c1","recparentno":2}}],"action":{"PLpgSQL_stmt_block":{"lineno":5,"body":[{"PLpgSQL_stmt_execsql":{"lineno":6,"sqlstmt":{"PLpgSQL_expr":{"query":"select 1 as c1, 2 as c2"}},"into":true,"target":{"PLpgSQL_rec":{"refname":"v3","dno":2,"lineno":3}}}},{"PLpgSQL_stmt_assign":{"lineno":7,"varno":4,"expr":{"PLpgSQL_expr":{"query":"SELECT 4"}}}},{"PLpgSQL_stmt_return":{}}]}}}} ] libpg_query-13-2.1.0/test/plpgsql_samples.sql000066400000000000000000000333071413137616400211770ustar00rootroot00000000000000-- Examples from https://www.postgresql.org/docs/9.6/static/plpgsql-control-structures.html CREATE OR REPLACE FUNCTION get_all_foo() RETURNS SETOF foo AS $BODY$ DECLARE r foo%rowtype; BEGIN FOR r IN SELECT * FROM foo WHERE fooid > 0 LOOP -- can do some processing here RETURN NEXT r; -- return current row of SELECT END LOOP; RETURN; END $BODY$ LANGUAGE plpgsql; CREATE FUNCTION get_available_flightid(date) RETURNS SETOF integer AS $BODY$ BEGIN RETURN QUERY SELECT flightid FROM flight WHERE flightdate >= $1 AND flightdate < ($1 + 1); -- Since execution is not finished, we can check whether rows were returned -- and raise exception if not. IF NOT FOUND THEN RAISE EXCEPTION 'No flight at %.', $1; END IF; RETURN; END $BODY$ LANGUAGE plpgsql; -- Examples from https://www.postgresql.org/docs/9.6/static/plpgsql-porting.html CREATE OR REPLACE FUNCTION cs_fmt_browser_version(v_name varchar, v_version varchar) RETURNS varchar AS $$ BEGIN IF v_version IS NULL THEN RETURN v_name; END IF; RETURN v_name || '/' || v_version; END;$$; -- CREATE OR REPLACE FUNCTION cs_update_referrer_type_proc() RETURNS void AS $func$ -- DECLARE -- referrer_keys CURSOR IS -- SELECT * FROM cs_referrer_keys -- ORDER BY try_order; -- func_body text; -- func_cmd text; -- BEGIN -- func_body := 'BEGIN'; -- -- Notice how we scan through the results of a query in a FOR loop -- -- using the FOR construct. -- FOR referrer_key IN SELECT * FROM cs_referrer_keys ORDER BY try_order LOOP -- func_body := func_body || -- ' IF v_' || referrer_key.kind -- || ' LIKE ' || quote_literal(referrer_key.key_string) -- || ' THEN RETURN ' || quote_literal(referrer_key.referrer_type) -- || '; END IF;' ; -- END LOOP; -- func_body := func_body || ' RETURN NULL; END;'; -- func_cmd := -- 'CREATE OR REPLACE FUNCTION cs_find_referrer_type(v_host varchar, -- v_domain varchar, -- v_url varchar) -- RETURNS varchar AS ' -- || quote_literal(func_body) -- || ' LANGUAGE plpgsql;' ; -- EXECUTE func_cmd; -- END;$func$; -- CREATE OR REPLACE FUNCTION cs_parse_url( -- v_url IN VARCHAR, -- v_host OUT VARCHAR, -- This will be passed back -- v_path OUT VARCHAR, -- This one too -- v_query OUT VARCHAR) -- And this one -- AS $$ -- DECLARE -- a_pos1 INTEGER; -- a_pos2 INTEGER; -- BEGIN -- v_host := NULL; -- v_path := NULL; -- v_query := NULL; -- a_pos1 := instr(v_url, '//'); -- -- IF a_pos1 = 0 THEN -- RETURN; -- END IF; -- a_pos2 := instr(v_url, '/', a_pos1 + 2); -- IF a_pos2 = 0 THEN -- v_host := substr(v_url, a_pos1 + 2); -- v_path := '/'; -- RETURN; -- END IF; -- -- v_host := substr(v_url, a_pos1 + 2, a_pos2 - a_pos1 - 2); -- a_pos1 := instr(v_url, '?', a_pos2 + 1); -- -- IF a_pos1 = 0 THEN -- v_path := substr(v_url, a_pos2); -- RETURN; -- END IF; -- -- v_path := substr(v_url, a_pos2, a_pos1 - a_pos2); -- v_query := substr(v_url, a_pos1 + 1); -- END; -- $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION cs_create_job(v_job_id integer) RETURNS void AS $$ DECLARE a_running_job_count integer; BEGIN LOCK TABLE cs_jobs IN EXCLUSIVE MODE; SELECT count(*) INTO a_running_job_count FROM cs_jobs WHERE end_stamp IS NULL; IF a_running_job_count > 0 THEN RAISE EXCEPTION 'Unable to create a new job: a job is currently running'; END IF; DELETE FROM cs_active_job; INSERT INTO cs_active_job(job_id) VALUES (v_job_id); BEGIN INSERT INTO cs_jobs (job_id, start_stamp) VALUES (v_job_id, now()); EXCEPTION WHEN unique_violation THEN -- don't worry if it already exists END; END; $$ LANGUAGE plpgsql; CREATE FUNCTION instr(varchar, varchar) RETURNS integer AS $$ DECLARE pos integer; BEGIN pos:= instr($1, $2, 1); RETURN pos; END; $$ LANGUAGE plpgsql STRICT IMMUTABLE; CREATE FUNCTION instr(string varchar, string_to_search varchar, beg_index integer) RETURNS integer AS $$ DECLARE pos integer NOT NULL DEFAULT 0; temp_str varchar; beg integer; length integer; ss_length integer; BEGIN IF beg_index > 0 THEN temp_str := substring(string FROM beg_index); pos := position(string_to_search IN temp_str); IF pos = 0 THEN RETURN 0; ELSE RETURN pos + beg_index - 1; END IF; ELSIF beg_index < 0 THEN ss_length := char_length(string_to_search); length := char_length(string); beg := length + beg_index - ss_length + 2; WHILE beg > 0 LOOP temp_str := substring(string FROM beg FOR ss_length); pos := position(string_to_search IN temp_str); IF pos > 0 THEN RETURN beg; END IF; beg := beg - 1; END LOOP; RETURN 0; ELSE RETURN 0; END IF; END; $$ LANGUAGE plpgsql STRICT IMMUTABLE; CREATE FUNCTION instr(string varchar, string_to_search varchar, beg_index integer, occur_index integer) RETURNS integer AS $$ DECLARE pos integer NOT NULL DEFAULT 0; occur_number integer NOT NULL DEFAULT 0; temp_str varchar; beg integer; i integer; length integer; ss_length integer; BEGIN IF beg_index > 0 THEN beg := beg_index; temp_str := substring(string FROM beg_index); FOR i IN 1..occur_index LOOP pos := position(string_to_search IN temp_str); IF i = 1 THEN beg := beg + pos - 1; ELSE beg := beg + pos; END IF; temp_str := substring(string FROM beg + 1); END LOOP; IF pos = 0 THEN RETURN 0; ELSE RETURN beg; END IF; ELSIF beg_index < 0 THEN ss_length := char_length(string_to_search); length := char_length(string); beg := length + beg_index - ss_length + 2; WHILE beg > 0 LOOP temp_str := substring(string FROM beg FOR ss_length); pos := position(string_to_search IN temp_str); IF pos > 0 THEN occur_number := occur_number + 1; IF occur_number = occur_index THEN RETURN beg; END IF; END IF; beg := beg - 1; END LOOP; RETURN 0; ELSE RETURN 0; END IF; END; $$ LANGUAGE plpgsql STRICT IMMUTABLE; -- Additional test data below kindly provided by Olivier Auverlot and used with permission CREATE FUNCTION displayDate(endDate date, canceled boolean) RETURNS text LANGUAGE plpgsql AS $$BEGIN IF canceled = true THEN return null; ELSE return endDate; END IF; END;$$; CREATE FUNCTION calcule_theYear_these(date_inscription date, date_observation date) RETURNS smallint LANGUAGE plpgsql AS $$BEGIN return (calcule_duree(date_inscription,date_observation) + 1); END;$$; CREATE FUNCTION calcule_duree(origine date, atDate date) RETURNS integer LANGUAGE plpgsql AS $$DECLARE theDay INTEGER; theMonth INTEGER; theYear INTEGER; theDay_now INTEGER; theMonth_now INTEGER; theYear_now INTEGER; BEGIN theDay := EXTRACT(DAY FROM origine); theMonth := EXTRACT(MONTH FROM origine); theYear := EXTRACT(YEAR FROM origine); theDay_now := EXTRACT(DAY FROM atDate); theMonth_now := EXTRACT(MONTH FROM atDate); theYear_now := EXTRACT(YEAR FROM atDate); theYear := theYear_now - theYear; if theMonth_now <= theMonth THEN IF theMonth = theMonth_now THEN IF theDay > theDay_now THEN theYear := theYear - 1; END IF; ELSE theYear := theYear - 1; END IF; END IF; return theYear; END;$$; CREATE FUNCTION endDatedUID(uidmember character varying) RETURNS integer LANGUAGE plpgsql AS $$DECLARE memberID int4; BEGIN SELECT key INTO memberID FROM member WHERE uidmember = uid; RETURN memberID; END;$$; CREATE FUNCTION currentEmployer(memberID integer, jobID integer, jobEnd date) RETURNS boolean LANGUAGE plpgsql AS $$DECLARE lastJob RECORD; lastEmployer record; updateJob BOOL; BEGIN updateJob := false; SELECT * INTO lastJob FROM lire_lastJob(memberID) AS (jobID INT,startsupport DATE,jobEnd DATE); IF lastJob.jobID = jobID THEN SELECT r_perlab.key AS positionHeld, r_perlab.endDate AS positionEnd INTO lastEmployer FROM r_perlab, (SELECT r_perlab.key_member AS col_memberID, max(r_perlab.start) AS startrattachement FROM r_perlab GROUP BY col_memberID) positions WHERE ((positions.col_memberID = memberID) AND (r_perlab.key_member = positions.col_memberID) AND (r_perlab.start = startrattachement)); IF lastEmployer.positionHeld IS NOT NULL THEN updateJob := true; UPDATE r_perlab SET endDate = jobEnd WHERE key = lastEmployer.positionHeld; END IF; END IF; RETURN updateJob; END;$$; -- CREATE FUNCTION getArrivalDate(memberID integer, teamID integer, atDate date) RETURNS date -- LANGUAGE plpgsql -- AS $$ -- DECLARE -- affectations affectation[]; -- aff affectation; -- -- DELAI_MAX CONSTANT INTEGER := 30; -- -- idx INTEGER; -- nbr_aff INTEGER; -- start DATE; -- endDate DATE; -- sortie BOOLEAN; -- -- arrivalDate DATE; -- -- crs_affectation CURSOR (memberID INTEGER) FOR -- SELECT -- affectation.key, -- affectation.key_team, -- affectation.key_support, -- affectation.start, -- affectation.endDate, -- affectation.repartition, -- affectation.key_typeaffectation -- FROM support,affectation -- WHERE -- support.key_member = memberID -- AND affectation.key_support = support.key -- AND affectation.start <= atDate -- AND affectation.key_team = teamID -- ORDER BY affectation.start DESC; -- BEGIN -- OPEN crs_affectation(memberID); -- LOOP -- IF NOT FOUND THEN -- EXIT; -- END IF; -- FETCH crs_affectation into aff.key,aff.key_team,aff.key_support,aff.start,aff.endDate,aff.repartition,aff.key_typeaffectation; -- affectations := ARRAY_APPEND(affectations,aff); -- END LOOP; -- CLOSE crs_affectation; -- -- nbr_aff := ARRAY_LENGTH(affectations, 1); -- idx := 1; -- sortie := FALSE; -- -- WHILE (idx <= nbr_aff AND sortie = FALSE) LOOP -- IF(arrivalDate IS NULL) THEN -- arrivalDate := affectations[idx].start; -- endDate := affectations[idx].endDate; -- ELSE -- IF(arrivalDate - affectations[idx].endDate) < DELAI_MAX THEN -- arrivalDate := affectations[idx].start; -- endDate := affectations[idx].endDate; -- ELSE -- sortie := TRUE; -- END IF; -- END IF; -- idx := idx + 1; -- END LOOP; -- -- RETURN arrivalDate; -- END;$$; CREATE FUNCTION cleanString(str character varying) RETURNS character varying LANGUAGE plpgsql AS $$ DECLARE spechar VARCHAR[ ] := ARRAY['à','â','é','è','ê','ë','ï','î','ô','û','ù','À','Â','É','È','Ê','Ë','Ï','Î','ô','û','ù','ç' ]; lettres VARCHAR[ ] := ARRAY['a','a','e','e','e','e','i','i','o','u','u','a','a','e','e','e','e','i','i','o','u','u','c' ]; resultat VARCHAR; nbrspechar INTEGER := 23; BEGIN IF (str IS NOT NULL) THEN resultat := str; FOR i IN 1..nbrspechar LOOP resultat := regexp_replace(resultat,spechar[i],lettres[i],'g'); END LOOP; END IF; RETURN resultat; END;$$; CREATE FUNCTION t_update() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN NEW.name = upper(cleanString(NEW.name)); return NEW; END;$$; CREATE FUNCTION t_create() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN INSERT INTO list(key,date) VALUES(NEW.key,NEW.end); RETURN NEW; END;$$; CREATE OR REPLACE FUNCTION test.test_parse ( p_time_start timestamptz, p_time_end timestamptz, p_time_interval interval default NULL ) RETURNS TABLE ( ts timestamptz, arbitrary_return bigint ) AS $$ BEGIN -- some comment -- some other comment IF p_time_interval IS NULL THEN p_time_interval := interval_from_start_end(p_time_start, p_time_end); END IF; RETURN QUERY SELECT bucket_function(p_time_interval, timestamp) AS ts, arbitrary_return FROM test.some_table WHERE start >= p_time_start AND "end" < p_time_end GROUP BY 1; END; $$ LANGUAGE plpgsql SECURITY DEFINER PARALLEL UNSAFE; CREATE FUNCTION public.somefunc(OUT _result uuid[]) RETURNS uuid[] LANGUAGE 'plpgsql' AS $BODY$ DECLARE active_on_to_date uuid[]; BEGIN _result := ARRAY( SELECT some_id FROM some_table); END; $BODY$; CREATE OR REPLACE FUNCTION cs_fmt_browser_version(v_name varchar, v_version varchar) RETURNS varchar AS $$ DECLARE _a int; _v_name_alias ALIAS FOR $1; BEGIN IF v_version IS NULL THEN RETURN v_name; END IF; RETURN v_name || '/' || v_version; END; $$ LANGUAGE plpgsql; CREATE FUNCTION test(str character varying) RETURNS integer LANGUAGE plpgsql AS $$ DECLARE v3 RECORD; v4 integer; BEGIN select 1 as c1, 2 as c2 into v3; v3.c1 := 4; END;$$; libpg_query-13-2.1.0/test/scan.c000066400000000000000000000032231413137616400163320ustar00rootroot00000000000000#include #include #include #include #include #include "scan_tests.c" #include "protobuf/pg_query.pb-c.h" int main() { size_t i; size_t j; bool ret_code = 0; PgQuery__ScanResult *scan_result; PgQuery__ScanToken *scan_token; const ProtobufCEnumValue *token_kind; const ProtobufCEnumValue *keyword_kind; PgQueryScanResult result; for (i = 0; i < testsCount * 2; i += 2) { char buffer[1024]; buffer[0] = '\0'; result = pg_query_scan(tests[i]); if (result.error) { ret_code = -1; printf("%s\n", result.error->message); } else { scan_result = pg_query__scan_result__unpack(NULL, result.pbuf.len, (void*) result.pbuf.data); for (j = 0; j < scan_result->n_tokens; j++) { char buffer2[1024]; scan_token = scan_result->tokens[j]; token_kind = protobuf_c_enum_descriptor_get_value(&pg_query__token__descriptor, scan_token->token); keyword_kind = protobuf_c_enum_descriptor_get_value(&pg_query__keyword_kind__descriptor, scan_token->keyword_kind); sprintf(buffer2, "%.*s = %s, %s\n", scan_token->end - scan_token->start, &(tests[i][scan_token->start]), token_kind->name, keyword_kind->name); strcat(buffer, buffer2); } pg_query__scan_result__free_unpacked(scan_result, NULL); if (strcmp(buffer, tests[i + 1]) == 0) { printf("."); } else { ret_code = -1; printf("INVALID result for \"%s\"\nexpected:\n%s\nactual:\n%s\n", tests[i], tests[i + 1], buffer); } } pg_query_free_scan_result(result); } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-13-2.1.0/test/scan_tests.c000066400000000000000000000074111413137616400175570ustar00rootroot00000000000000const char* tests[] = { "SELECT 1", "SELECT = SELECT, RESERVED_KEYWORD\n" "1 = ICONST, NO_KEYWORD\n", "SELECT * FROM x WHERE z = 2", "SELECT = SELECT, RESERVED_KEYWORD\n" "* = ASCII_42, NO_KEYWORD\n" "FROM = FROM, RESERVED_KEYWORD\n" "x = IDENT, NO_KEYWORD\n" "WHERE = WHERE, RESERVED_KEYWORD\n" "z = IDENT, NO_KEYWORD\n" "= = ASCII_61, NO_KEYWORD\n" "2 = ICONST, NO_KEYWORD\n", "SELECT 5.41414", "SELECT = SELECT, RESERVED_KEYWORD\n" "5.41414 = FCONST, NO_KEYWORD\n", "SELECT $1", "SELECT = SELECT, RESERVED_KEYWORD\n" "$1 = PARAM, NO_KEYWORD\n", "SELECT ?", "SELECT = SELECT, RESERVED_KEYWORD\n" "? = ASCII_63, NO_KEYWORD\n", "SELECT update AS left /* comment */ FROM between", "SELECT = SELECT, RESERVED_KEYWORD\n" "update = UPDATE, UNRESERVED_KEYWORD\n" "AS = AS, RESERVED_KEYWORD\n" "left = LEFT, TYPE_FUNC_NAME_KEYWORD\n" "/* comment */ = C_COMMENT, NO_KEYWORD\n" "FROM = FROM, RESERVED_KEYWORD\n" "between = BETWEEN, COL_NAME_KEYWORD\n", "SELECT 999999999999999999999::numeric/1000000000000000000000", "SELECT = SELECT, RESERVED_KEYWORD\n" "999999999999999999999 = FCONST, NO_KEYWORD\n" ":: = TYPECAST, NO_KEYWORD\n" "numeric = NUMERIC, COL_NAME_KEYWORD\n" "/ = ASCII_47, NO_KEYWORD\n" "1000000000000000000000 = FCONST, NO_KEYWORD\n", "SELECT 4790999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", "SELECT = SELECT, RESERVED_KEYWORD\n" "4790999999999999999999999999999999999999999999999999999999999999999999999999999999999999 = FCONST, NO_KEYWORD\n" "* = ASCII_42, NO_KEYWORD\n" "9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 = FCONST, NO_KEYWORD\n", "SELECT $foo$test$foo$, '123' FROM \"xy\", abc", "SELECT = SELECT, RESERVED_KEYWORD\n" "$foo$test$foo$ = SCONST, NO_KEYWORD\n" ", = ASCII_44, NO_KEYWORD\n" "'123' = SCONST, NO_KEYWORD\n" "FROM = FROM, RESERVED_KEYWORD\n" "\"xy\" = IDENT, NO_KEYWORD\n" ", = ASCII_44, NO_KEYWORD\n" "abc = IDENT, NO_KEYWORD\n", "SELECT '/*not a comment*/', E'\\134', B'10', X'12', -Infinity, U&\"d!0061t!+000061\" UESCAPE '!'", "SELECT = SELECT, RESERVED_KEYWORD\n" "'/*not a comment*/' = SCONST, NO_KEYWORD\n" ", = ASCII_44, NO_KEYWORD\n" "E'\\134' = SCONST, NO_KEYWORD\n" ", = ASCII_44, NO_KEYWORD\n" "B'10' = BCONST, NO_KEYWORD\n" ", = ASCII_44, NO_KEYWORD\n" "X'12' = XCONST, NO_KEYWORD\n" ", = ASCII_44, NO_KEYWORD\n" "- = ASCII_45, NO_KEYWORD\n" "Infinity = IDENT, NO_KEYWORD\n" ", = ASCII_44, NO_KEYWORD\n" "U = UIDENT, NO_KEYWORD\n" "UESCAPE = UESCAPE, UNRESERVED_KEYWORD\n" "'!' = SCONST, NO_KEYWORD\n", "SELECT 'a'/*;*/'b'; SELECT ';';", "SELECT = SELECT, RESERVED_KEYWORD\n" "'a' = SCONST, NO_KEYWORD\n" "/*;*/ = C_COMMENT, NO_KEYWORD\n" "'b' = SCONST, NO_KEYWORD\n" "; = ASCII_59, NO_KEYWORD\n" "SELECT = SELECT, RESERVED_KEYWORD\n" "';' = SCONST, NO_KEYWORD\n" "; = ASCII_59, NO_KEYWORD\n", "CREATE RULE x AS ON SELECT TO tbl DO (SELECT 1; SELECT 2)", "CREATE = CREATE, RESERVED_KEYWORD\n" "RULE = RULE, UNRESERVED_KEYWORD\n" "x = IDENT, NO_KEYWORD\n" "AS = AS, RESERVED_KEYWORD\n" "ON = ON, RESERVED_KEYWORD\n" "SELECT = SELECT, RESERVED_KEYWORD\n" "TO = TO, RESERVED_KEYWORD\n" "tbl = IDENT, NO_KEYWORD\n" "DO = DO, RESERVED_KEYWORD\n" "( = ASCII_40, NO_KEYWORD\n" "SELECT = SELECT, RESERVED_KEYWORD\n" "1 = ICONST, NO_KEYWORD\n" "; = ASCII_59, NO_KEYWORD\n" "SELECT = SELECT, RESERVED_KEYWORD\n" "2 = ICONST, NO_KEYWORD\n" ") = ASCII_41, NO_KEYWORD\n" }; size_t testsCount = 12; libpg_query-13-2.1.0/test/split.c000066400000000000000000000044021413137616400165410ustar00rootroot00000000000000// Ensure we have asprintf's definition on glibc-based platforms to avoid compiler warnings #define _GNU_SOURCE #include #include #include #include #include #include "split_tests.c" int main() { size_t i; bool ret_code = EXIT_SUCCESS; for (i = 0; i < testsLength; i += 2) { PgQuerySplitResult result = pg_query_split_with_scanner(tests[i]); if (result.error) { ret_code = EXIT_FAILURE; printf("%s\n", result.error->message); pg_query_free_split_result(result); continue; } char *buf = strdup(""); for (int i = 0; i < result.n_stmts; i++) { char *newbuf; int nbytes = asprintf(&newbuf, "%sloc=%d,len=%d;", buf, result.stmts[i]->stmt_location, result.stmts[i]->stmt_len); if (nbytes == -1) { printf("FAILED TO ALLOCATE MEMORY\n"); return EXIT_FAILURE; } free(buf); buf = newbuf; } // Drop trailing ; if (strlen(buf) > 0 && buf[strlen(buf) - 1] == ';') buf[strlen(buf) - 1] = '\0'; if (strcmp(buf, tests[i + 1]) != 0) { ret_code = EXIT_FAILURE; printf("INVALID scanner split result for \"%s\"\nexpected: %s\n actual: %s\n", tests[i], tests[i + 1], buf); } else { printf("."); } free(buf); pg_query_free_split_result(result); // Now the same again with the parser splitter result = pg_query_split_with_parser(tests[i]); if (result.error) { ret_code = EXIT_FAILURE; printf("%s\n", result.error->message); pg_query_free_split_result(result); continue; } buf = strdup(""); for (int i = 0; i < result.n_stmts; i++) { char *newbuf; int nbytes = asprintf(&newbuf, "%sloc=%d,len=%d;", buf, result.stmts[i]->stmt_location, result.stmts[i]->stmt_len); if (nbytes == -1) { printf("FAILED TO ALLOCATE MEMORY\n"); return EXIT_FAILURE; } free(buf); buf = newbuf; } // Drop trailing ; if (strlen(buf) > 0 && buf[strlen(buf) - 1] == ';') buf[strlen(buf) - 1] = '\0'; if (strcmp(buf, tests[i + 1]) != 0) { ret_code = EXIT_FAILURE; printf("INVALID parser split result for \"%s\"\nexpected: %s\n actual: %s\n", tests[i], tests[i + 1], buf); } else { printf("."); } free(buf); pg_query_free_split_result(result); } printf("\n"); pg_query_exit(); return ret_code; } libpg_query-13-2.1.0/test/split_tests.c000066400000000000000000000010411413137616400177570ustar00rootroot00000000000000const char* tests[] = { "", "", "SELECT 1", "loc=0,len=8", "SELECT 1; SELECT 2", "loc=0,len=8;loc=9,len=9", "SELECT 1; SELECT 2; SELECT 3", "loc=0,len=8;loc=9,len=9;loc=19,len=9", "SELECT /* comment with ; */ 1; SELECT 2", "loc=0,len=29;loc=30,len=9", "SELECT --othercomment with ;\n 1; SELECT 2", "loc=0,len=31;loc=32,len=9", "CREATE RULE x AS ON SELECT TO tbl DO (SELECT 1; SELECT 2)", "loc=0,len=57", "SELECT 1;\n;\n-- comment\nSELECT 2;\n;", "loc=0,len=8;loc=11,len=20" }; size_t testsLength = __LINE__ - 4; libpg_query-13-2.1.0/test/sql/000077500000000000000000000000001413137616400160415ustar00rootroot00000000000000libpg_query-13-2.1.0/test/sql/postgres_regress/000077500000000000000000000000001413137616400214415ustar00rootroot00000000000000libpg_query-13-2.1.0/test/sql/postgres_regress/advisory_lock.sql000066400000000000000000000100011413137616400250220ustar00rootroot00000000000000-- -- ADVISORY LOCKS -- BEGIN; SELECT pg_advisory_xact_lock(1), pg_advisory_xact_lock_shared(2), pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock_shared(2, 2); SELECT locktype, classid, objid, objsubid, mode, granted FROM pg_locks WHERE locktype = 'advisory' ORDER BY classid, objid, objsubid; -- pg_advisory_unlock_all() shouldn't release xact locks SELECT pg_advisory_unlock_all(); SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; -- can't unlock xact locks SELECT pg_advisory_unlock(1), pg_advisory_unlock_shared(2), pg_advisory_unlock(1, 1), pg_advisory_unlock_shared(2, 2); -- automatically release xact locks at commit COMMIT; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; BEGIN; -- holding both session and xact locks on the same objects, xact first SELECT pg_advisory_xact_lock(1), pg_advisory_xact_lock_shared(2), pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock_shared(2, 2); SELECT locktype, classid, objid, objsubid, mode, granted FROM pg_locks WHERE locktype = 'advisory' ORDER BY classid, objid, objsubid; SELECT pg_advisory_lock(1), pg_advisory_lock_shared(2), pg_advisory_lock(1, 1), pg_advisory_lock_shared(2, 2); ROLLBACK; SELECT locktype, classid, objid, objsubid, mode, granted FROM pg_locks WHERE locktype = 'advisory' ORDER BY classid, objid, objsubid; -- unlocking session locks SELECT pg_advisory_unlock(1), pg_advisory_unlock(1), pg_advisory_unlock_shared(2), pg_advisory_unlock_shared(2), pg_advisory_unlock(1, 1), pg_advisory_unlock(1, 1), pg_advisory_unlock_shared(2, 2), pg_advisory_unlock_shared(2, 2); SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; BEGIN; -- holding both session and xact locks on the same objects, session first SELECT pg_advisory_lock(1), pg_advisory_lock_shared(2), pg_advisory_lock(1, 1), pg_advisory_lock_shared(2, 2); SELECT locktype, classid, objid, objsubid, mode, granted FROM pg_locks WHERE locktype = 'advisory' ORDER BY classid, objid, objsubid; SELECT pg_advisory_xact_lock(1), pg_advisory_xact_lock_shared(2), pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock_shared(2, 2); ROLLBACK; SELECT locktype, classid, objid, objsubid, mode, granted FROM pg_locks WHERE locktype = 'advisory' ORDER BY classid, objid, objsubid; -- releasing all session locks SELECT pg_advisory_unlock_all(); SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; BEGIN; -- grabbing txn locks multiple times SELECT pg_advisory_xact_lock(1), pg_advisory_xact_lock(1), pg_advisory_xact_lock_shared(2), pg_advisory_xact_lock_shared(2), pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock_shared(2, 2), pg_advisory_xact_lock_shared(2, 2); SELECT locktype, classid, objid, objsubid, mode, granted FROM pg_locks WHERE locktype = 'advisory' ORDER BY classid, objid, objsubid; COMMIT; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; -- grabbing session locks multiple times SELECT pg_advisory_lock(1), pg_advisory_lock(1), pg_advisory_lock_shared(2), pg_advisory_lock_shared(2), pg_advisory_lock(1, 1), pg_advisory_lock(1, 1), pg_advisory_lock_shared(2, 2), pg_advisory_lock_shared(2, 2); SELECT locktype, classid, objid, objsubid, mode, granted FROM pg_locks WHERE locktype = 'advisory' ORDER BY classid, objid, objsubid; SELECT pg_advisory_unlock(1), pg_advisory_unlock(1), pg_advisory_unlock_shared(2), pg_advisory_unlock_shared(2), pg_advisory_unlock(1, 1), pg_advisory_unlock(1, 1), pg_advisory_unlock_shared(2, 2), pg_advisory_unlock_shared(2, 2); SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; -- .. and releasing them all at once SELECT pg_advisory_lock(1), pg_advisory_lock(1), pg_advisory_lock_shared(2), pg_advisory_lock_shared(2), pg_advisory_lock(1, 1), pg_advisory_lock(1, 1), pg_advisory_lock_shared(2, 2), pg_advisory_lock_shared(2, 2); SELECT locktype, classid, objid, objsubid, mode, granted FROM pg_locks WHERE locktype = 'advisory' ORDER BY classid, objid, objsubid; SELECT pg_advisory_unlock_all(); SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; libpg_query-13-2.1.0/test/sql/postgres_regress/aggregates.sql000066400000000000000000001134151413137616400243000ustar00rootroot00000000000000-- -- AGGREGATES -- -- avoid bit-exact output here because operations may not be bit-exact. SET extra_float_digits = 0; SELECT avg(four) AS avg_1 FROM onek; SELECT avg(a) AS avg_32 FROM aggtest WHERE a < 100; -- In 7.1, avg(float4) is computed using float8 arithmetic. -- Round the result to 3 digits to avoid platform-specific results. SELECT avg(b)::numeric(10,3) AS avg_107_943 FROM aggtest; SELECT avg(gpa) AS avg_3_4 FROM ONLY student; SELECT sum(four) AS sum_1500 FROM onek; SELECT sum(a) AS sum_198 FROM aggtest; SELECT sum(b) AS avg_431_773 FROM aggtest; SELECT sum(gpa) AS avg_6_8 FROM ONLY student; SELECT max(four) AS max_3 FROM onek; SELECT max(a) AS max_100 FROM aggtest; SELECT max(aggtest.b) AS max_324_78 FROM aggtest; SELECT max(student.gpa) AS max_3_7 FROM student; SELECT stddev_pop(b) FROM aggtest; SELECT stddev_samp(b) FROM aggtest; SELECT var_pop(b) FROM aggtest; SELECT var_samp(b) FROM aggtest; SELECT stddev_pop(b::numeric) FROM aggtest; SELECT stddev_samp(b::numeric) FROM aggtest; SELECT var_pop(b::numeric) FROM aggtest; SELECT var_samp(b::numeric) FROM aggtest; -- population variance is defined for a single tuple, sample variance -- is not SELECT var_pop(1.0::float8), var_samp(2.0::float8); SELECT stddev_pop(3.0::float8), stddev_samp(4.0::float8); SELECT var_pop('inf'::float8), var_samp('inf'::float8); SELECT stddev_pop('inf'::float8), stddev_samp('inf'::float8); SELECT var_pop('nan'::float8), var_samp('nan'::float8); SELECT stddev_pop('nan'::float8), stddev_samp('nan'::float8); SELECT var_pop(1.0::float4), var_samp(2.0::float4); SELECT stddev_pop(3.0::float4), stddev_samp(4.0::float4); SELECT var_pop('inf'::float4), var_samp('inf'::float4); SELECT stddev_pop('inf'::float4), stddev_samp('inf'::float4); SELECT var_pop('nan'::float4), var_samp('nan'::float4); SELECT stddev_pop('nan'::float4), stddev_samp('nan'::float4); SELECT var_pop(1.0::numeric), var_samp(2.0::numeric); SELECT stddev_pop(3.0::numeric), stddev_samp(4.0::numeric); SELECT var_pop('nan'::numeric), var_samp('nan'::numeric); SELECT stddev_pop('nan'::numeric), stddev_samp('nan'::numeric); -- verify correct results for null and NaN inputs select sum(null::int4) from generate_series(1,3); select sum(null::int8) from generate_series(1,3); select sum(null::numeric) from generate_series(1,3); select sum(null::float8) from generate_series(1,3); select avg(null::int4) from generate_series(1,3); select avg(null::int8) from generate_series(1,3); select avg(null::numeric) from generate_series(1,3); select avg(null::float8) from generate_series(1,3); select sum('NaN'::numeric) from generate_series(1,3); select avg('NaN'::numeric) from generate_series(1,3); -- verify correct results for infinite inputs SELECT avg(x::float8), var_pop(x::float8) FROM (VALUES ('1'), ('infinity')) v(x); SELECT avg(x::float8), var_pop(x::float8) FROM (VALUES ('infinity'), ('1')) v(x); SELECT avg(x::float8), var_pop(x::float8) FROM (VALUES ('infinity'), ('infinity')) v(x); SELECT avg(x::float8), var_pop(x::float8) FROM (VALUES ('-infinity'), ('infinity')) v(x); -- test accuracy with a large input offset SELECT avg(x::float8), var_pop(x::float8) FROM (VALUES (100000003), (100000004), (100000006), (100000007)) v(x); SELECT avg(x::float8), var_pop(x::float8) FROM (VALUES (7000000000005), (7000000000007)) v(x); -- SQL2003 binary aggregates SELECT regr_count(b, a) FROM aggtest; SELECT regr_sxx(b, a) FROM aggtest; SELECT regr_syy(b, a) FROM aggtest; SELECT regr_sxy(b, a) FROM aggtest; SELECT regr_avgx(b, a), regr_avgy(b, a) FROM aggtest; SELECT regr_r2(b, a) FROM aggtest; SELECT regr_slope(b, a), regr_intercept(b, a) FROM aggtest; SELECT covar_pop(b, a), covar_samp(b, a) FROM aggtest; SELECT corr(b, a) FROM aggtest; -- check single-tuple behavior SELECT covar_pop(1::float8,2::float8), covar_samp(3::float8,4::float8); SELECT covar_pop(1::float8,'inf'::float8), covar_samp(3::float8,'inf'::float8); SELECT covar_pop(1::float8,'nan'::float8), covar_samp(3::float8,'nan'::float8); -- test accum and combine functions directly CREATE TABLE regr_test (x float8, y float8); INSERT INTO regr_test VALUES (10,150),(20,250),(30,350),(80,540),(100,200); SELECT count(*), sum(x), regr_sxx(y,x), sum(y),regr_syy(y,x), regr_sxy(y,x) FROM regr_test WHERE x IN (10,20,30,80); SELECT count(*), sum(x), regr_sxx(y,x), sum(y),regr_syy(y,x), regr_sxy(y,x) FROM regr_test; SELECT float8_accum('{4,140,2900}'::float8[], 100); SELECT float8_regr_accum('{4,140,2900,1290,83075,15050}'::float8[], 200, 100); SELECT count(*), sum(x), regr_sxx(y,x), sum(y),regr_syy(y,x), regr_sxy(y,x) FROM regr_test WHERE x IN (10,20,30); SELECT count(*), sum(x), regr_sxx(y,x), sum(y),regr_syy(y,x), regr_sxy(y,x) FROM regr_test WHERE x IN (80,100); SELECT float8_combine('{3,60,200}'::float8[], '{0,0,0}'::float8[]); SELECT float8_combine('{0,0,0}'::float8[], '{2,180,200}'::float8[]); SELECT float8_combine('{3,60,200}'::float8[], '{2,180,200}'::float8[]); SELECT float8_regr_combine('{3,60,200,750,20000,2000}'::float8[], '{0,0,0,0,0,0}'::float8[]); SELECT float8_regr_combine('{0,0,0,0,0,0}'::float8[], '{2,180,200,740,57800,-3400}'::float8[]); SELECT float8_regr_combine('{3,60,200,750,20000,2000}'::float8[], '{2,180,200,740,57800,-3400}'::float8[]); DROP TABLE regr_test; -- test count, distinct SELECT count(four) AS cnt_1000 FROM onek; SELECT count(DISTINCT four) AS cnt_4 FROM onek; select ten, count(*), sum(four) from onek group by ten order by ten; select ten, count(four), sum(DISTINCT four) from onek group by ten order by ten; -- user-defined aggregates SELECT newavg(four) AS avg_1 FROM onek; SELECT newsum(four) AS sum_1500 FROM onek; SELECT newcnt(four) AS cnt_1000 FROM onek; SELECT newcnt(*) AS cnt_1000 FROM onek; SELECT oldcnt(*) AS cnt_1000 FROM onek; SELECT sum2(q1,q2) FROM int8_tbl; -- test for outer-level aggregates -- this should work select ten, sum(distinct four) from onek a group by ten having exists (select 1 from onek b where sum(distinct a.four) = b.four); -- this should fail because subquery has an agg of its own in WHERE select ten, sum(distinct four) from onek a group by ten having exists (select 1 from onek b where sum(distinct a.four + b.four) = b.four); -- Test handling of sublinks within outer-level aggregates. -- Per bug report from Daniel Grace. select (select max((select i.unique2 from tenk1 i where i.unique1 = o.unique1))) from tenk1 o; -- Test handling of Params within aggregate arguments in hashed aggregation. -- Per bug report from Jeevan Chalke. explain (verbose, costs off) select s1, s2, sm from generate_series(1, 3) s1, lateral (select s2, sum(s1 + s2) sm from generate_series(1, 3) s2 group by s2) ss order by 1, 2; select s1, s2, sm from generate_series(1, 3) s1, lateral (select s2, sum(s1 + s2) sm from generate_series(1, 3) s2 group by s2) ss order by 1, 2; explain (verbose, costs off) select array(select sum(x+y) s from generate_series(1,3) y group by y order by s) from generate_series(1,3) x; select array(select sum(x+y) s from generate_series(1,3) y group by y order by s) from generate_series(1,3) x; -- -- test for bitwise integer aggregates -- CREATE TEMPORARY TABLE bitwise_test( i2 INT2, i4 INT4, i8 INT8, i INTEGER, x INT2, y BIT(4) ); -- empty case SELECT BIT_AND(i2) AS "?", BIT_OR(i4) AS "?" FROM bitwise_test; COPY bitwise_test FROM STDIN NULL 'null'; 1 1 1 1 1 B0101 3 3 3 null 2 B0100 7 7 7 3 4 B1100 \. SELECT BIT_AND(i2) AS "1", BIT_AND(i4) AS "1", BIT_AND(i8) AS "1", BIT_AND(i) AS "?", BIT_AND(x) AS "0", BIT_AND(y) AS "0100", BIT_OR(i2) AS "7", BIT_OR(i4) AS "7", BIT_OR(i8) AS "7", BIT_OR(i) AS "?", BIT_OR(x) AS "7", BIT_OR(y) AS "1101" FROM bitwise_test; -- -- test boolean aggregates -- -- first test all possible transition and final states SELECT -- boolean and transitions -- null because strict booland_statefunc(NULL, NULL) IS NULL AS "t", booland_statefunc(TRUE, NULL) IS NULL AS "t", booland_statefunc(FALSE, NULL) IS NULL AS "t", booland_statefunc(NULL, TRUE) IS NULL AS "t", booland_statefunc(NULL, FALSE) IS NULL AS "t", -- and actual computations booland_statefunc(TRUE, TRUE) AS "t", NOT booland_statefunc(TRUE, FALSE) AS "t", NOT booland_statefunc(FALSE, TRUE) AS "t", NOT booland_statefunc(FALSE, FALSE) AS "t"; SELECT -- boolean or transitions -- null because strict boolor_statefunc(NULL, NULL) IS NULL AS "t", boolor_statefunc(TRUE, NULL) IS NULL AS "t", boolor_statefunc(FALSE, NULL) IS NULL AS "t", boolor_statefunc(NULL, TRUE) IS NULL AS "t", boolor_statefunc(NULL, FALSE) IS NULL AS "t", -- actual computations boolor_statefunc(TRUE, TRUE) AS "t", boolor_statefunc(TRUE, FALSE) AS "t", boolor_statefunc(FALSE, TRUE) AS "t", NOT boolor_statefunc(FALSE, FALSE) AS "t"; CREATE TEMPORARY TABLE bool_test( b1 BOOL, b2 BOOL, b3 BOOL, b4 BOOL); -- empty case SELECT BOOL_AND(b1) AS "n", BOOL_OR(b3) AS "n" FROM bool_test; COPY bool_test FROM STDIN NULL 'null'; TRUE null FALSE null FALSE TRUE null null null TRUE FALSE null \. SELECT BOOL_AND(b1) AS "f", BOOL_AND(b2) AS "t", BOOL_AND(b3) AS "f", BOOL_AND(b4) AS "n", BOOL_AND(NOT b2) AS "f", BOOL_AND(NOT b3) AS "t" FROM bool_test; SELECT EVERY(b1) AS "f", EVERY(b2) AS "t", EVERY(b3) AS "f", EVERY(b4) AS "n", EVERY(NOT b2) AS "f", EVERY(NOT b3) AS "t" FROM bool_test; SELECT BOOL_OR(b1) AS "t", BOOL_OR(b2) AS "t", BOOL_OR(b3) AS "f", BOOL_OR(b4) AS "n", BOOL_OR(NOT b2) AS "f", BOOL_OR(NOT b3) AS "t" FROM bool_test; -- -- Test cases that should be optimized into indexscans instead of -- the generic aggregate implementation. -- -- Basic cases explain (costs off) select min(unique1) from tenk1; select min(unique1) from tenk1; explain (costs off) select max(unique1) from tenk1; select max(unique1) from tenk1; explain (costs off) select max(unique1) from tenk1 where unique1 < 42; select max(unique1) from tenk1 where unique1 < 42; explain (costs off) select max(unique1) from tenk1 where unique1 > 42; select max(unique1) from tenk1 where unique1 > 42; -- the planner may choose a generic aggregate here if parallel query is -- enabled, since that plan will be parallel safe and the "optimized" -- plan, which has almost identical cost, will not be. we want to test -- the optimized plan, so temporarily disable parallel query. begin; set local max_parallel_workers_per_gather = 0; explain (costs off) select max(unique1) from tenk1 where unique1 > 42000; select max(unique1) from tenk1 where unique1 > 42000; rollback; -- multi-column index (uses tenk1_thous_tenthous) explain (costs off) select max(tenthous) from tenk1 where thousand = 33; select max(tenthous) from tenk1 where thousand = 33; explain (costs off) select min(tenthous) from tenk1 where thousand = 33; select min(tenthous) from tenk1 where thousand = 33; -- check parameter propagation into an indexscan subquery explain (costs off) select f1, (select min(unique1) from tenk1 where unique1 > f1) AS gt from int4_tbl; select f1, (select min(unique1) from tenk1 where unique1 > f1) AS gt from int4_tbl; -- check some cases that were handled incorrectly in 8.3.0 explain (costs off) select distinct max(unique2) from tenk1; select distinct max(unique2) from tenk1; explain (costs off) select max(unique2) from tenk1 order by 1; select max(unique2) from tenk1 order by 1; explain (costs off) select max(unique2) from tenk1 order by max(unique2); select max(unique2) from tenk1 order by max(unique2); explain (costs off) select max(unique2) from tenk1 order by max(unique2)+1; select max(unique2) from tenk1 order by max(unique2)+1; explain (costs off) select max(unique2), generate_series(1,3) as g from tenk1 order by g desc; select max(unique2), generate_series(1,3) as g from tenk1 order by g desc; -- interesting corner case: constant gets optimized into a seqscan explain (costs off) select max(100) from tenk1; select max(100) from tenk1; -- try it on an inheritance tree create table minmaxtest(f1 int); create table minmaxtest1() inherits (minmaxtest); create table minmaxtest2() inherits (minmaxtest); create table minmaxtest3() inherits (minmaxtest); create index minmaxtesti on minmaxtest(f1); create index minmaxtest1i on minmaxtest1(f1); create index minmaxtest2i on minmaxtest2(f1 desc); create index minmaxtest3i on minmaxtest3(f1) where f1 is not null; insert into minmaxtest values(11), (12); insert into minmaxtest1 values(13), (14); insert into minmaxtest2 values(15), (16); insert into minmaxtest3 values(17), (18); explain (costs off) select min(f1), max(f1) from minmaxtest; select min(f1), max(f1) from minmaxtest; -- DISTINCT doesn't do anything useful here, but it shouldn't fail explain (costs off) select distinct min(f1), max(f1) from minmaxtest; select distinct min(f1), max(f1) from minmaxtest; drop table minmaxtest cascade; -- check for correct detection of nested-aggregate errors select max(min(unique1)) from tenk1; select (select max(min(unique1)) from int8_tbl) from tenk1; -- -- Test removal of redundant GROUP BY columns -- create temp table t1 (a int, b int, c int, d int, primary key (a, b)); create temp table t2 (x int, y int, z int, primary key (x, y)); create temp table t3 (a int, b int, c int, primary key(a, b) deferrable); -- Non-primary-key columns can be removed from GROUP BY explain (costs off) select * from t1 group by a,b,c,d; -- No removal can happen if the complete PK is not present in GROUP BY explain (costs off) select a,c from t1 group by a,c,d; -- Test removal across multiple relations explain (costs off) select * from t1 inner join t2 on t1.a = t2.x and t1.b = t2.y group by t1.a,t1.b,t1.c,t1.d,t2.x,t2.y,t2.z; -- Test case where t1 can be optimized but not t2 explain (costs off) select t1.*,t2.x,t2.z from t1 inner join t2 on t1.a = t2.x and t1.b = t2.y group by t1.a,t1.b,t1.c,t1.d,t2.x,t2.z; -- Cannot optimize when PK is deferrable explain (costs off) select * from t3 group by a,b,c; create temp table t1c () inherits (t1); -- Ensure we don't remove any columns when t1 has a child table explain (costs off) select * from t1 group by a,b,c,d; -- Okay to remove columns if we're only querying the parent. explain (costs off) select * from only t1 group by a,b,c,d; create temp table p_t1 ( a int, b int, c int, d int, primary key(a,b) ) partition by list(a); create temp table p_t1_1 partition of p_t1 for values in(1); create temp table p_t1_2 partition of p_t1 for values in(2); -- Ensure we can remove non-PK columns for partitioned tables. explain (costs off) select * from p_t1 group by a,b,c,d; drop table t1 cascade; drop table t2; drop table t3; drop table p_t1; -- -- Test GROUP BY matching of join columns that are type-coerced due to USING -- create temp table t1(f1 int, f2 bigint); create temp table t2(f1 bigint, f22 bigint); select f1 from t1 left join t2 using (f1) group by f1; select f1 from t1 left join t2 using (f1) group by t1.f1; select t1.f1 from t1 left join t2 using (f1) group by t1.f1; -- only this one should fail: select t1.f1 from t1 left join t2 using (f1) group by f1; drop table t1, t2; -- -- Test combinations of DISTINCT and/or ORDER BY -- select array_agg(a order by b) from (values (1,4),(2,3),(3,1),(4,2)) v(a,b); select array_agg(a order by a) from (values (1,4),(2,3),(3,1),(4,2)) v(a,b); select array_agg(a order by a desc) from (values (1,4),(2,3),(3,1),(4,2)) v(a,b); select array_agg(b order by a desc) from (values (1,4),(2,3),(3,1),(4,2)) v(a,b); select array_agg(distinct a) from (values (1),(2),(1),(3),(null),(2)) v(a); select array_agg(distinct a order by a) from (values (1),(2),(1),(3),(null),(2)) v(a); select array_agg(distinct a order by a desc) from (values (1),(2),(1),(3),(null),(2)) v(a); select array_agg(distinct a order by a desc nulls last) from (values (1),(2),(1),(3),(null),(2)) v(a); -- multi-arg aggs, strict/nonstrict, distinct/order by select aggfstr(a,b,c) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c); select aggfns(a,b,c) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c); select aggfstr(distinct a,b,c) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,3) i; select aggfns(distinct a,b,c) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,3) i; select aggfstr(distinct a,b,c order by b) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,3) i; select aggfns(distinct a,b,c order by b) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,3) i; -- test specific code paths select aggfns(distinct a,a,c order by c using ~<~,a) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,2) i; select aggfns(distinct a,a,c order by c using ~<~) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,2) i; select aggfns(distinct a,a,c order by a) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,2) i; select aggfns(distinct a,b,c order by a,c using ~<~,b) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,2) i; -- check node I/O via view creation and usage, also deparsing logic create view agg_view1 as select aggfns(a,b,c) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c); select * from agg_view1; select pg_get_viewdef('agg_view1'::regclass); create or replace view agg_view1 as select aggfns(distinct a,b,c) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,3) i; select * from agg_view1; select pg_get_viewdef('agg_view1'::regclass); create or replace view agg_view1 as select aggfns(distinct a,b,c order by b) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,3) i; select * from agg_view1; select pg_get_viewdef('agg_view1'::regclass); create or replace view agg_view1 as select aggfns(a,b,c order by b+1) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c); select * from agg_view1; select pg_get_viewdef('agg_view1'::regclass); create or replace view agg_view1 as select aggfns(a,a,c order by b) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c); select * from agg_view1; select pg_get_viewdef('agg_view1'::regclass); create or replace view agg_view1 as select aggfns(a,b,c order by c using ~<~) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c); select * from agg_view1; select pg_get_viewdef('agg_view1'::regclass); create or replace view agg_view1 as select aggfns(distinct a,b,c order by a,c using ~<~,b) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,2) i; select * from agg_view1; select pg_get_viewdef('agg_view1'::regclass); drop view agg_view1; -- incorrect DISTINCT usage errors select aggfns(distinct a,b,c order by i) from (values (1,1,'foo')) v(a,b,c), generate_series(1,2) i; select aggfns(distinct a,b,c order by a,b+1) from (values (1,1,'foo')) v(a,b,c), generate_series(1,2) i; select aggfns(distinct a,b,c order by a,b,i,c) from (values (1,1,'foo')) v(a,b,c), generate_series(1,2) i; select aggfns(distinct a,a,c order by a,b) from (values (1,1,'foo')) v(a,b,c), generate_series(1,2) i; -- string_agg tests select string_agg(a,',') from (values('aaaa'),('bbbb'),('cccc')) g(a); select string_agg(a,',') from (values('aaaa'),(null),('bbbb'),('cccc')) g(a); select string_agg(a,'AB') from (values(null),(null),('bbbb'),('cccc')) g(a); select string_agg(a,',') from (values(null),(null)) g(a); -- check some implicit casting cases, as per bug #5564 select string_agg(distinct f1, ',' order by f1) from varchar_tbl; -- ok select string_agg(distinct f1::text, ',' order by f1) from varchar_tbl; -- not ok select string_agg(distinct f1, ',' order by f1::text) from varchar_tbl; -- not ok select string_agg(distinct f1::text, ',' order by f1::text) from varchar_tbl; -- ok -- string_agg bytea tests create table bytea_test_table(v bytea); select string_agg(v, '') from bytea_test_table; insert into bytea_test_table values(decode('ff','hex')); select string_agg(v, '') from bytea_test_table; insert into bytea_test_table values(decode('aa','hex')); select string_agg(v, '') from bytea_test_table; select string_agg(v, NULL) from bytea_test_table; select string_agg(v, decode('ee', 'hex')) from bytea_test_table; drop table bytea_test_table; -- FILTER tests select min(unique1) filter (where unique1 > 100) from tenk1; select sum(1/ten) filter (where ten > 0) from tenk1; select ten, sum(distinct four) filter (where four::text ~ '123') from onek a group by ten; select ten, sum(distinct four) filter (where four > 10) from onek a group by ten having exists (select 1 from onek b where sum(distinct a.four) = b.four); select max(foo COLLATE "C") filter (where (bar collate "POSIX") > '0') from (values ('a', 'b')) AS v(foo,bar); -- outer reference in FILTER (PostgreSQL extension) select (select count(*) from (values (1)) t0(inner_c)) from (values (2),(3)) t1(outer_c); -- inner query is aggregation query select (select count(*) filter (where outer_c <> 0) from (values (1)) t0(inner_c)) from (values (2),(3)) t1(outer_c); -- outer query is aggregation query select (select count(inner_c) filter (where outer_c <> 0) from (values (1)) t0(inner_c)) from (values (2),(3)) t1(outer_c); -- inner query is aggregation query select (select max((select i.unique2 from tenk1 i where i.unique1 = o.unique1)) filter (where o.unique1 < 10)) from tenk1 o; -- outer query is aggregation query -- subquery in FILTER clause (PostgreSQL extension) select sum(unique1) FILTER (WHERE unique1 IN (SELECT unique1 FROM onek where unique1 < 100)) FROM tenk1; -- exercise lots of aggregate parts with FILTER select aggfns(distinct a,b,c order by a,c using ~<~,b) filter (where a > 1) from (values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz')) v(a,b,c), generate_series(1,2) i; -- ordered-set aggregates select p, percentile_cont(p) within group (order by x::float8) from generate_series(1,5) x, (values (0::float8),(0.1),(0.25),(0.4),(0.5),(0.6),(0.75),(0.9),(1)) v(p) group by p order by p; select p, percentile_cont(p order by p) within group (order by x) -- error from generate_series(1,5) x, (values (0::float8),(0.1),(0.25),(0.4),(0.5),(0.6),(0.75),(0.9),(1)) v(p) group by p order by p; select p, sum() within group (order by x::float8) -- error from generate_series(1,5) x, (values (0::float8),(0.1),(0.25),(0.4),(0.5),(0.6),(0.75),(0.9),(1)) v(p) group by p order by p; select p, percentile_cont(p,p) -- error from generate_series(1,5) x, (values (0::float8),(0.1),(0.25),(0.4),(0.5),(0.6),(0.75),(0.9),(1)) v(p) group by p order by p; select percentile_cont(0.5) within group (order by b) from aggtest; select percentile_cont(0.5) within group (order by b), sum(b) from aggtest; select percentile_cont(0.5) within group (order by thousand) from tenk1; select percentile_disc(0.5) within group (order by thousand) from tenk1; select rank(3) within group (order by x) from (values (1),(1),(2),(2),(3),(3),(4)) v(x); select cume_dist(3) within group (order by x) from (values (1),(1),(2),(2),(3),(3),(4)) v(x); select percent_rank(3) within group (order by x) from (values (1),(1),(2),(2),(3),(3),(4),(5)) v(x); select dense_rank(3) within group (order by x) from (values (1),(1),(2),(2),(3),(3),(4)) v(x); select percentile_disc(array[0,0.1,0.25,0.5,0.75,0.9,1]) within group (order by thousand) from tenk1; select percentile_cont(array[0,0.25,0.5,0.75,1]) within group (order by thousand) from tenk1; select percentile_disc(array[[null,1,0.5],[0.75,0.25,null]]) within group (order by thousand) from tenk1; select percentile_cont(array[0,1,0.25,0.75,0.5,1,0.3,0.32,0.35,0.38,0.4]) within group (order by x) from generate_series(1,6) x; select ten, mode() within group (order by string4) from tenk1 group by ten; select percentile_disc(array[0.25,0.5,0.75]) within group (order by x) from unnest('{fred,jim,fred,jack,jill,fred,jill,jim,jim,sheila,jim,sheila}'::text[]) u(x); -- check collation propagates up in suitable cases: select pg_collation_for(percentile_disc(1) within group (order by x collate "POSIX")) from (values ('fred'),('jim')) v(x); -- ordered-set aggs created with CREATE AGGREGATE select test_rank(3) within group (order by x) from (values (1),(1),(2),(2),(3),(3),(4)) v(x); select test_percentile_disc(0.5) within group (order by thousand) from tenk1; -- ordered-set aggs can't use ungrouped vars in direct args: select rank(x) within group (order by x) from generate_series(1,5) x; -- outer-level agg can't use a grouped arg of a lower level, either: select array(select percentile_disc(a) within group (order by x) from (values (0.3),(0.7)) v(a) group by a) from generate_series(1,5) g(x); -- agg in the direct args is a grouping violation, too: select rank(sum(x)) within group (order by x) from generate_series(1,5) x; -- hypothetical-set type unification and argument-count failures: select rank(3) within group (order by x) from (values ('fred'),('jim')) v(x); select rank(3) within group (order by stringu1,stringu2) from tenk1; select rank('fred') within group (order by x) from generate_series(1,5) x; select rank('adam'::text collate "C") within group (order by x collate "POSIX") from (values ('fred'),('jim')) v(x); -- hypothetical-set type unification successes: select rank('adam'::varchar) within group (order by x) from (values ('fred'),('jim')) v(x); select rank('3') within group (order by x) from generate_series(1,5) x; -- divide by zero check select percent_rank(0) within group (order by x) from generate_series(1,0) x; -- deparse and multiple features: create view aggordview1 as select ten, percentile_disc(0.5) within group (order by thousand) as p50, percentile_disc(0.5) within group (order by thousand) filter (where hundred=1) as px, rank(5,'AZZZZ',50) within group (order by hundred, string4 desc, hundred) from tenk1 group by ten order by ten; select pg_get_viewdef('aggordview1'); select * from aggordview1 order by ten; drop view aggordview1; -- variadic aggregates select least_agg(q1,q2) from int8_tbl; select least_agg(variadic array[q1,q2]) from int8_tbl; select cleast_agg(q1,q2) from int8_tbl; select cleast_agg(4.5,f1) from int4_tbl; select cleast_agg(variadic array[4.5,f1]) from int4_tbl; select pg_typeof(cleast_agg(variadic array[4.5,f1])) from int4_tbl; -- test aggregates with common transition functions share the same states begin work; create type avg_state as (total bigint, count bigint); create or replace function avg_transfn(state avg_state, n int) returns avg_state as $$ declare new_state avg_state; begin raise notice 'avg_transfn called with %', n; if state is null then if n is not null then new_state.total := n; new_state.count := 1; return new_state; end if; return null; elsif n is not null then state.total := state.total + n; state.count := state.count + 1; return state; end if; return null; end $$ language plpgsql; create function avg_finalfn(state avg_state) returns int4 as $$ begin if state is null then return NULL; else return state.total / state.count; end if; end $$ language plpgsql; create function sum_finalfn(state avg_state) returns int4 as $$ begin if state is null then return NULL; else return state.total; end if; end $$ language plpgsql; create aggregate my_avg(int4) ( stype = avg_state, sfunc = avg_transfn, finalfunc = avg_finalfn ); create aggregate my_sum(int4) ( stype = avg_state, sfunc = avg_transfn, finalfunc = sum_finalfn ); -- aggregate state should be shared as aggs are the same. select my_avg(one),my_avg(one) from (values(1),(3)) t(one); -- aggregate state should be shared as transfn is the same for both aggs. select my_avg(one),my_sum(one) from (values(1),(3)) t(one); -- same as previous one, but with DISTINCT, which requires sorting the input. select my_avg(distinct one),my_sum(distinct one) from (values(1),(3),(1)) t(one); -- shouldn't share states due to the distinctness not matching. select my_avg(distinct one),my_sum(one) from (values(1),(3)) t(one); -- shouldn't share states due to the filter clause not matching. select my_avg(one) filter (where one > 1),my_sum(one) from (values(1),(3)) t(one); -- this should not share the state due to different input columns. select my_avg(one),my_sum(two) from (values(1,2),(3,4)) t(one,two); -- exercise cases where OSAs share state select percentile_cont(0.5) within group (order by a), percentile_disc(0.5) within group (order by a) from (values(1::float8),(3),(5),(7)) t(a); select percentile_cont(0.25) within group (order by a), percentile_disc(0.5) within group (order by a) from (values(1::float8),(3),(5),(7)) t(a); -- these can't share state currently select rank(4) within group (order by a), dense_rank(4) within group (order by a) from (values(1),(3),(5),(7)) t(a); -- test that aggs with the same sfunc and initcond share the same agg state create aggregate my_sum_init(int4) ( stype = avg_state, sfunc = avg_transfn, finalfunc = sum_finalfn, initcond = '(10,0)' ); create aggregate my_avg_init(int4) ( stype = avg_state, sfunc = avg_transfn, finalfunc = avg_finalfn, initcond = '(10,0)' ); create aggregate my_avg_init2(int4) ( stype = avg_state, sfunc = avg_transfn, finalfunc = avg_finalfn, initcond = '(4,0)' ); -- state should be shared if INITCONDs are matching select my_sum_init(one),my_avg_init(one) from (values(1),(3)) t(one); -- Varying INITCONDs should cause the states not to be shared. select my_sum_init(one),my_avg_init2(one) from (values(1),(3)) t(one); rollback; -- test aggregate state sharing to ensure it works if one aggregate has a -- finalfn and the other one has none. begin work; create or replace function sum_transfn(state int4, n int4) returns int4 as $$ declare new_state int4; begin raise notice 'sum_transfn called with %', n; if state is null then if n is not null then new_state := n; return new_state; end if; return null; elsif n is not null then state := state + n; return state; end if; return null; end $$ language plpgsql; create function halfsum_finalfn(state int4) returns int4 as $$ begin if state is null then return NULL; else return state / 2; end if; end $$ language plpgsql; create aggregate my_sum(int4) ( stype = int4, sfunc = sum_transfn ); create aggregate my_half_sum(int4) ( stype = int4, sfunc = sum_transfn, finalfunc = halfsum_finalfn ); -- Agg state should be shared even though my_sum has no finalfn select my_sum(one),my_half_sum(one) from (values(1),(2),(3),(4)) t(one); rollback; -- test that the aggregate transition logic correctly handles -- transition / combine functions returning NULL -- First test the case of a normal transition function returning NULL BEGIN; CREATE FUNCTION balkifnull(int8, int4) RETURNS int8 STRICT LANGUAGE plpgsql AS $$ BEGIN IF $1 IS NULL THEN RAISE 'erroneously called with NULL argument'; END IF; RETURN NULL; END$$; CREATE AGGREGATE balk(int4) ( SFUNC = balkifnull(int8, int4), STYPE = int8, PARALLEL = SAFE, INITCOND = '0' ); SELECT balk(hundred) FROM tenk1; ROLLBACK; -- Secondly test the case of a parallel aggregate combiner function -- returning NULL. For that use normal transition function, but a -- combiner function returning NULL. BEGIN ISOLATION LEVEL REPEATABLE READ; CREATE FUNCTION balkifnull(int8, int8) RETURNS int8 PARALLEL SAFE STRICT LANGUAGE plpgsql AS $$ BEGIN IF $1 IS NULL THEN RAISE 'erroneously called with NULL argument'; END IF; RETURN NULL; END$$; CREATE AGGREGATE balk(int4) ( SFUNC = int4_sum(int8, int4), STYPE = int8, COMBINEFUNC = balkifnull(int8, int8), PARALLEL = SAFE, INITCOND = '0' ); -- force use of parallelism ALTER TABLE tenk1 set (parallel_workers = 4); SET LOCAL parallel_setup_cost=0; SET LOCAL max_parallel_workers_per_gather=4; EXPLAIN (COSTS OFF) SELECT balk(hundred) FROM tenk1; SELECT balk(hundred) FROM tenk1; ROLLBACK; -- test coverage for aggregate combine/serial/deserial functions BEGIN ISOLATION LEVEL REPEATABLE READ; SET parallel_setup_cost = 0; SET parallel_tuple_cost = 0; SET min_parallel_table_scan_size = 0; SET max_parallel_workers_per_gather = 4; SET parallel_leader_participation = off; SET enable_indexonlyscan = off; -- variance(int4) covers numeric_poly_combine -- sum(int8) covers int8_avg_combine -- regr_count(float8, float8) covers int8inc_float8_float8 and aggregates with > 1 arg EXPLAIN (COSTS OFF, VERBOSE) SELECT variance(unique1::int4), sum(unique1::int8), regr_count(unique1::float8, unique1::float8) FROM (SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1) u; SELECT variance(unique1::int4), sum(unique1::int8), regr_count(unique1::float8, unique1::float8) FROM (SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1) u; -- variance(int8) covers numeric_combine -- avg(numeric) covers numeric_avg_combine EXPLAIN (COSTS OFF, VERBOSE) SELECT variance(unique1::int8), avg(unique1::numeric) FROM (SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1) u; SELECT variance(unique1::int8), avg(unique1::numeric) FROM (SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk1) u; ROLLBACK; -- test coverage for dense_rank SELECT dense_rank(x) WITHIN GROUP (ORDER BY x) FROM (VALUES (1),(1),(2),(2),(3),(3)) v(x) GROUP BY (x) ORDER BY 1; -- Ensure that the STRICT checks for aggregates does not take NULLness -- of ORDER BY columns into account. See bug report around -- 2a505161-2727-2473-7c46-591ed108ac52@email.cz SELECT min(x ORDER BY y) FROM (VALUES(1, NULL)) AS d(x,y); SELECT min(x ORDER BY y) FROM (VALUES(1, 2)) AS d(x,y); -- check collation-sensitive matching between grouping expressions select v||'a', case v||'a' when 'aa' then 1 else 0 end, count(*) from unnest(array['a','b']) u(v) group by v||'a' order by 1; select v||'a', case when v||'a' = 'aa' then 1 else 0 end, count(*) from unnest(array['a','b']) u(v) group by v||'a' order by 1; -- Make sure that generation of HashAggregate for uniqification purposes -- does not lead to array overflow due to unexpected duplicate hash keys -- see CAFeeJoKKu0u+A_A9R9316djW-YW3-+Gtgvy3ju655qRHR3jtdA@mail.gmail.com explain (costs off) select 1 from tenk1 where (hundred, thousand) in (select twothousand, twothousand from onek); -- -- Hash Aggregation Spill tests -- set enable_sort=false; set work_mem='64kB'; select unique1, count(*), sum(twothousand) from tenk1 group by unique1 having sum(fivethous) > 4975 order by sum(twothousand); set work_mem to default; set enable_sort to default; -- -- Compare results between plans using sorting and plans using hash -- aggregation. Force spilling in both cases by setting work_mem low. -- set work_mem='64kB'; create table agg_data_2k as select g from generate_series(0, 1999) g; analyze agg_data_2k; create table agg_data_20k as select g from generate_series(0, 19999) g; analyze agg_data_20k; -- Produce results with sorting. set enable_hashagg = false; set jit_above_cost = 0; explain (costs off) select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 from agg_data_20k group by g%10000; create table agg_group_1 as select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 from agg_data_20k group by g%10000; create table agg_group_2 as select * from (values (100), (300), (500)) as r(a), lateral ( select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 from agg_data_2k where g < r.a group by g/2) as s; set jit_above_cost to default; create table agg_group_3 as select (g/2)::numeric as c1, sum(7::int4) as c2, count(*) as c3 from agg_data_2k group by g/2; create table agg_group_4 as select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 from agg_data_2k group by g/2; -- Produce results with hash aggregation set enable_hashagg = true; set enable_sort = false; set jit_above_cost = 0; explain (costs off) select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 from agg_data_20k group by g%10000; create table agg_hash_1 as select g%10000 as c1, sum(g::numeric) as c2, count(*) as c3 from agg_data_20k group by g%10000; create table agg_hash_2 as select * from (values (100), (300), (500)) as r(a), lateral ( select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 from agg_data_2k where g < r.a group by g/2) as s; set jit_above_cost to default; create table agg_hash_3 as select (g/2)::numeric as c1, sum(7::int4) as c2, count(*) as c3 from agg_data_2k group by g/2; create table agg_hash_4 as select (g/2)::numeric as c1, array_agg(g::numeric) as c2, count(*) as c3 from agg_data_2k group by g/2; set enable_sort = true; set work_mem to default; -- Compare group aggregation results to hash aggregation results (select * from agg_hash_1 except select * from agg_group_1) union all (select * from agg_group_1 except select * from agg_hash_1); (select * from agg_hash_2 except select * from agg_group_2) union all (select * from agg_group_2 except select * from agg_hash_2); (select * from agg_hash_3 except select * from agg_group_3) union all (select * from agg_group_3 except select * from agg_hash_3); (select * from agg_hash_4 except select * from agg_group_4) union all (select * from agg_group_4 except select * from agg_hash_4); drop table agg_group_1; drop table agg_group_2; drop table agg_group_3; drop table agg_group_4; drop table agg_hash_1; drop table agg_hash_2; drop table agg_hash_3; drop table agg_hash_4; libpg_query-13-2.1.0/test/sql/postgres_regress/alter_generic.sql000066400000000000000000000666221413137616400250010ustar00rootroot00000000000000-- -- Test for ALTER some_object {RENAME TO, OWNER TO, SET SCHEMA} -- -- Clean up in case a prior regression run failed SET client_min_messages TO 'warning'; DROP ROLE IF EXISTS regress_alter_generic_user1; DROP ROLE IF EXISTS regress_alter_generic_user2; DROP ROLE IF EXISTS regress_alter_generic_user3; RESET client_min_messages; CREATE USER regress_alter_generic_user3; CREATE USER regress_alter_generic_user2; CREATE USER regress_alter_generic_user1 IN ROLE regress_alter_generic_user3; CREATE SCHEMA alt_nsp1; CREATE SCHEMA alt_nsp2; GRANT ALL ON SCHEMA alt_nsp1, alt_nsp2 TO public; SET search_path = alt_nsp1, public; -- -- Function and Aggregate -- SET SESSION AUTHORIZATION regress_alter_generic_user1; CREATE FUNCTION alt_func1(int) RETURNS int LANGUAGE sql AS 'SELECT $1 + 1'; CREATE FUNCTION alt_func2(int) RETURNS int LANGUAGE sql AS 'SELECT $1 - 1'; CREATE AGGREGATE alt_agg1 ( sfunc1 = int4pl, basetype = int4, stype1 = int4, initcond = 0 ); CREATE AGGREGATE alt_agg2 ( sfunc1 = int4mi, basetype = int4, stype1 = int4, initcond = 0 ); ALTER AGGREGATE alt_func1(int) RENAME TO alt_func3; -- failed (not aggregate) ALTER AGGREGATE alt_func1(int) OWNER TO regress_alter_generic_user3; -- failed (not aggregate) ALTER AGGREGATE alt_func1(int) SET SCHEMA alt_nsp2; -- failed (not aggregate) ALTER FUNCTION alt_func1(int) RENAME TO alt_func2; -- failed (name conflict) ALTER FUNCTION alt_func1(int) RENAME TO alt_func3; -- OK ALTER FUNCTION alt_func2(int) OWNER TO regress_alter_generic_user2; -- failed (no role membership) ALTER FUNCTION alt_func2(int) OWNER TO regress_alter_generic_user3; -- OK ALTER FUNCTION alt_func2(int) SET SCHEMA alt_nsp1; -- OK, already there ALTER FUNCTION alt_func2(int) SET SCHEMA alt_nsp2; -- OK ALTER AGGREGATE alt_agg1(int) RENAME TO alt_agg2; -- failed (name conflict) ALTER AGGREGATE alt_agg1(int) RENAME TO alt_agg3; -- OK ALTER AGGREGATE alt_agg2(int) OWNER TO regress_alter_generic_user2; -- failed (no role membership) ALTER AGGREGATE alt_agg2(int) OWNER TO regress_alter_generic_user3; -- OK ALTER AGGREGATE alt_agg2(int) SET SCHEMA alt_nsp2; -- OK SET SESSION AUTHORIZATION regress_alter_generic_user2; CREATE FUNCTION alt_func1(int) RETURNS int LANGUAGE sql AS 'SELECT $1 + 2'; CREATE FUNCTION alt_func2(int) RETURNS int LANGUAGE sql AS 'SELECT $1 - 2'; CREATE AGGREGATE alt_agg1 ( sfunc1 = int4pl, basetype = int4, stype1 = int4, initcond = 100 ); CREATE AGGREGATE alt_agg2 ( sfunc1 = int4mi, basetype = int4, stype1 = int4, initcond = -100 ); ALTER FUNCTION alt_func3(int) RENAME TO alt_func4; -- failed (not owner) ALTER FUNCTION alt_func1(int) RENAME TO alt_func4; -- OK ALTER FUNCTION alt_func3(int) OWNER TO regress_alter_generic_user2; -- failed (not owner) ALTER FUNCTION alt_func2(int) OWNER TO regress_alter_generic_user3; -- failed (no role membership) ALTER FUNCTION alt_func3(int) SET SCHEMA alt_nsp2; -- failed (not owner) ALTER FUNCTION alt_func2(int) SET SCHEMA alt_nsp2; -- failed (name conflicts) ALTER AGGREGATE alt_agg3(int) RENAME TO alt_agg4; -- failed (not owner) ALTER AGGREGATE alt_agg1(int) RENAME TO alt_agg4; -- OK ALTER AGGREGATE alt_agg3(int) OWNER TO regress_alter_generic_user2; -- failed (not owner) ALTER AGGREGATE alt_agg2(int) OWNER TO regress_alter_generic_user3; -- failed (no role membership) ALTER AGGREGATE alt_agg3(int) SET SCHEMA alt_nsp2; -- failed (not owner) ALTER AGGREGATE alt_agg2(int) SET SCHEMA alt_nsp2; -- failed (name conflict) RESET SESSION AUTHORIZATION; SELECT n.nspname, proname, prorettype::regtype, prokind, a.rolname FROM pg_proc p, pg_namespace n, pg_authid a WHERE p.pronamespace = n.oid AND p.proowner = a.oid AND n.nspname IN ('alt_nsp1', 'alt_nsp2') ORDER BY nspname, proname; -- -- We would test collations here, but it's not possible because the error -- messages tend to be nonportable. -- -- -- Conversion -- SET SESSION AUTHORIZATION regress_alter_generic_user1; CREATE CONVERSION alt_conv1 FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; CREATE CONVERSION alt_conv2 FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; ALTER CONVERSION alt_conv1 RENAME TO alt_conv2; -- failed (name conflict) ALTER CONVERSION alt_conv1 RENAME TO alt_conv3; -- OK ALTER CONVERSION alt_conv2 OWNER TO regress_alter_generic_user2; -- failed (no role membership) ALTER CONVERSION alt_conv2 OWNER TO regress_alter_generic_user3; -- OK ALTER CONVERSION alt_conv2 SET SCHEMA alt_nsp2; -- OK SET SESSION AUTHORIZATION regress_alter_generic_user2; CREATE CONVERSION alt_conv1 FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; CREATE CONVERSION alt_conv2 FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; ALTER CONVERSION alt_conv3 RENAME TO alt_conv4; -- failed (not owner) ALTER CONVERSION alt_conv1 RENAME TO alt_conv4; -- OK ALTER CONVERSION alt_conv3 OWNER TO regress_alter_generic_user2; -- failed (not owner) ALTER CONVERSION alt_conv2 OWNER TO regress_alter_generic_user3; -- failed (no role membership) ALTER CONVERSION alt_conv3 SET SCHEMA alt_nsp2; -- failed (not owner) ALTER CONVERSION alt_conv2 SET SCHEMA alt_nsp2; -- failed (name conflict) RESET SESSION AUTHORIZATION; SELECT n.nspname, c.conname, a.rolname FROM pg_conversion c, pg_namespace n, pg_authid a WHERE c.connamespace = n.oid AND c.conowner = a.oid AND n.nspname IN ('alt_nsp1', 'alt_nsp2') ORDER BY nspname, conname; -- -- Foreign Data Wrapper and Foreign Server -- CREATE FOREIGN DATA WRAPPER alt_fdw1; CREATE FOREIGN DATA WRAPPER alt_fdw2; CREATE SERVER alt_fserv1 FOREIGN DATA WRAPPER alt_fdw1; CREATE SERVER alt_fserv2 FOREIGN DATA WRAPPER alt_fdw2; ALTER FOREIGN DATA WRAPPER alt_fdw1 RENAME TO alt_fdw2; -- failed (name conflict) ALTER FOREIGN DATA WRAPPER alt_fdw1 RENAME TO alt_fdw3; -- OK ALTER SERVER alt_fserv1 RENAME TO alt_fserv2; -- failed (name conflict) ALTER SERVER alt_fserv1 RENAME TO alt_fserv3; -- OK SELECT fdwname FROM pg_foreign_data_wrapper WHERE fdwname like 'alt_fdw%'; SELECT srvname FROM pg_foreign_server WHERE srvname like 'alt_fserv%'; -- -- Procedural Language -- CREATE LANGUAGE alt_lang1 HANDLER plpgsql_call_handler; CREATE LANGUAGE alt_lang2 HANDLER plpgsql_call_handler; ALTER LANGUAGE alt_lang1 OWNER TO regress_alter_generic_user1; -- OK ALTER LANGUAGE alt_lang2 OWNER TO regress_alter_generic_user2; -- OK SET SESSION AUTHORIZATION regress_alter_generic_user1; ALTER LANGUAGE alt_lang1 RENAME TO alt_lang2; -- failed (name conflict) ALTER LANGUAGE alt_lang2 RENAME TO alt_lang3; -- failed (not owner) ALTER LANGUAGE alt_lang1 RENAME TO alt_lang3; -- OK ALTER LANGUAGE alt_lang2 OWNER TO regress_alter_generic_user3; -- failed (not owner) ALTER LANGUAGE alt_lang3 OWNER TO regress_alter_generic_user2; -- failed (no role membership) ALTER LANGUAGE alt_lang3 OWNER TO regress_alter_generic_user3; -- OK RESET SESSION AUTHORIZATION; SELECT lanname, a.rolname FROM pg_language l, pg_authid a WHERE l.lanowner = a.oid AND l.lanname like 'alt_lang%' ORDER BY lanname; -- -- Operator -- SET SESSION AUTHORIZATION regress_alter_generic_user1; CREATE OPERATOR @-@ ( leftarg = int4, rightarg = int4, procedure = int4mi ); CREATE OPERATOR @+@ ( leftarg = int4, rightarg = int4, procedure = int4pl ); ALTER OPERATOR @+@(int4, int4) OWNER TO regress_alter_generic_user2; -- failed (no role membership) ALTER OPERATOR @+@(int4, int4) OWNER TO regress_alter_generic_user3; -- OK ALTER OPERATOR @-@(int4, int4) SET SCHEMA alt_nsp2; -- OK SET SESSION AUTHORIZATION regress_alter_generic_user2; CREATE OPERATOR @-@ ( leftarg = int4, rightarg = int4, procedure = int4mi ); ALTER OPERATOR @+@(int4, int4) OWNER TO regress_alter_generic_user2; -- failed (not owner) ALTER OPERATOR @-@(int4, int4) OWNER TO regress_alter_generic_user3; -- failed (no role membership) ALTER OPERATOR @+@(int4, int4) SET SCHEMA alt_nsp2; -- failed (not owner) -- can't test this: the error message includes the raw oid of namespace -- ALTER OPERATOR @-@(int4, int4) SET SCHEMA alt_nsp2; -- failed (name conflict) RESET SESSION AUTHORIZATION; SELECT n.nspname, oprname, a.rolname, oprleft::regtype, oprright::regtype, oprcode::regproc FROM pg_operator o, pg_namespace n, pg_authid a WHERE o.oprnamespace = n.oid AND o.oprowner = a.oid AND n.nspname IN ('alt_nsp1', 'alt_nsp2') ORDER BY nspname, oprname; -- -- OpFamily and OpClass -- CREATE OPERATOR FAMILY alt_opf1 USING hash; CREATE OPERATOR FAMILY alt_opf2 USING hash; ALTER OPERATOR FAMILY alt_opf1 USING hash OWNER TO regress_alter_generic_user1; ALTER OPERATOR FAMILY alt_opf2 USING hash OWNER TO regress_alter_generic_user1; CREATE OPERATOR CLASS alt_opc1 FOR TYPE uuid USING hash AS STORAGE uuid; CREATE OPERATOR CLASS alt_opc2 FOR TYPE uuid USING hash AS STORAGE uuid; ALTER OPERATOR CLASS alt_opc1 USING hash OWNER TO regress_alter_generic_user1; ALTER OPERATOR CLASS alt_opc2 USING hash OWNER TO regress_alter_generic_user1; SET SESSION AUTHORIZATION regress_alter_generic_user1; ALTER OPERATOR FAMILY alt_opf1 USING hash RENAME TO alt_opf2; -- failed (name conflict) ALTER OPERATOR FAMILY alt_opf1 USING hash RENAME TO alt_opf3; -- OK ALTER OPERATOR FAMILY alt_opf2 USING hash OWNER TO regress_alter_generic_user2; -- failed (no role membership) ALTER OPERATOR FAMILY alt_opf2 USING hash OWNER TO regress_alter_generic_user3; -- OK ALTER OPERATOR FAMILY alt_opf2 USING hash SET SCHEMA alt_nsp2; -- OK ALTER OPERATOR CLASS alt_opc1 USING hash RENAME TO alt_opc2; -- failed (name conflict) ALTER OPERATOR CLASS alt_opc1 USING hash RENAME TO alt_opc3; -- OK ALTER OPERATOR CLASS alt_opc2 USING hash OWNER TO regress_alter_generic_user2; -- failed (no role membership) ALTER OPERATOR CLASS alt_opc2 USING hash OWNER TO regress_alter_generic_user3; -- OK ALTER OPERATOR CLASS alt_opc2 USING hash SET SCHEMA alt_nsp2; -- OK RESET SESSION AUTHORIZATION; CREATE OPERATOR FAMILY alt_opf1 USING hash; CREATE OPERATOR FAMILY alt_opf2 USING hash; ALTER OPERATOR FAMILY alt_opf1 USING hash OWNER TO regress_alter_generic_user2; ALTER OPERATOR FAMILY alt_opf2 USING hash OWNER TO regress_alter_generic_user2; CREATE OPERATOR CLASS alt_opc1 FOR TYPE macaddr USING hash AS STORAGE macaddr; CREATE OPERATOR CLASS alt_opc2 FOR TYPE macaddr USING hash AS STORAGE macaddr; ALTER OPERATOR CLASS alt_opc1 USING hash OWNER TO regress_alter_generic_user2; ALTER OPERATOR CLASS alt_opc2 USING hash OWNER TO regress_alter_generic_user2; SET SESSION AUTHORIZATION regress_alter_generic_user2; ALTER OPERATOR FAMILY alt_opf3 USING hash RENAME TO alt_opf4; -- failed (not owner) ALTER OPERATOR FAMILY alt_opf1 USING hash RENAME TO alt_opf4; -- OK ALTER OPERATOR FAMILY alt_opf3 USING hash OWNER TO regress_alter_generic_user2; -- failed (not owner) ALTER OPERATOR FAMILY alt_opf2 USING hash OWNER TO regress_alter_generic_user3; -- failed (no role membership) ALTER OPERATOR FAMILY alt_opf3 USING hash SET SCHEMA alt_nsp2; -- failed (not owner) ALTER OPERATOR FAMILY alt_opf2 USING hash SET SCHEMA alt_nsp2; -- failed (name conflict) ALTER OPERATOR CLASS alt_opc3 USING hash RENAME TO alt_opc4; -- failed (not owner) ALTER OPERATOR CLASS alt_opc1 USING hash RENAME TO alt_opc4; -- OK ALTER OPERATOR CLASS alt_opc3 USING hash OWNER TO regress_alter_generic_user2; -- failed (not owner) ALTER OPERATOR CLASS alt_opc2 USING hash OWNER TO regress_alter_generic_user3; -- failed (no role membership) ALTER OPERATOR CLASS alt_opc3 USING hash SET SCHEMA alt_nsp2; -- failed (not owner) ALTER OPERATOR CLASS alt_opc2 USING hash SET SCHEMA alt_nsp2; -- failed (name conflict) RESET SESSION AUTHORIZATION; SELECT nspname, opfname, amname, rolname FROM pg_opfamily o, pg_am m, pg_namespace n, pg_authid a WHERE o.opfmethod = m.oid AND o.opfnamespace = n.oid AND o.opfowner = a.oid AND n.nspname IN ('alt_nsp1', 'alt_nsp2') AND NOT opfname LIKE 'alt_opc%' ORDER BY nspname, opfname; SELECT nspname, opcname, amname, rolname FROM pg_opclass o, pg_am m, pg_namespace n, pg_authid a WHERE o.opcmethod = m.oid AND o.opcnamespace = n.oid AND o.opcowner = a.oid AND n.nspname IN ('alt_nsp1', 'alt_nsp2') ORDER BY nspname, opcname; -- ALTER OPERATOR FAMILY ... ADD/DROP -- Should work. Textbook case of CREATE / ALTER ADD / ALTER DROP / DROP BEGIN TRANSACTION; CREATE OPERATOR FAMILY alt_opf4 USING btree; ALTER OPERATOR FAMILY alt_opf4 USING btree ADD -- int4 vs int2 OPERATOR 1 < (int4, int2) , OPERATOR 2 <= (int4, int2) , OPERATOR 3 = (int4, int2) , OPERATOR 4 >= (int4, int2) , OPERATOR 5 > (int4, int2) , FUNCTION 1 btint42cmp(int4, int2); ALTER OPERATOR FAMILY alt_opf4 USING btree DROP -- int4 vs int2 OPERATOR 1 (int4, int2) , OPERATOR 2 (int4, int2) , OPERATOR 3 (int4, int2) , OPERATOR 4 (int4, int2) , OPERATOR 5 (int4, int2) , FUNCTION 1 (int4, int2) ; DROP OPERATOR FAMILY alt_opf4 USING btree; ROLLBACK; -- Should fail. Invalid values for ALTER OPERATOR FAMILY .. ADD / DROP CREATE OPERATOR FAMILY alt_opf4 USING btree; ALTER OPERATOR FAMILY alt_opf4 USING invalid_index_method ADD OPERATOR 1 < (int4, int2); -- invalid indexing_method ALTER OPERATOR FAMILY alt_opf4 USING btree ADD OPERATOR 6 < (int4, int2); -- operator number should be between 1 and 5 ALTER OPERATOR FAMILY alt_opf4 USING btree ADD OPERATOR 0 < (int4, int2); -- operator number should be between 1 and 5 ALTER OPERATOR FAMILY alt_opf4 USING btree ADD OPERATOR 1 < ; -- operator without argument types ALTER OPERATOR FAMILY alt_opf4 USING btree ADD FUNCTION 0 btint42cmp(int4, int2); -- invalid options parsing function ALTER OPERATOR FAMILY alt_opf4 USING btree ADD FUNCTION 6 btint42cmp(int4, int2); -- function number should be between 1 and 5 ALTER OPERATOR FAMILY alt_opf4 USING btree ADD STORAGE invalid_storage; -- Ensure STORAGE is not a part of ALTER OPERATOR FAMILY DROP OPERATOR FAMILY alt_opf4 USING btree; -- Should fail. Need to be SUPERUSER to do ALTER OPERATOR FAMILY .. ADD / DROP BEGIN TRANSACTION; CREATE ROLE regress_alter_generic_user5 NOSUPERUSER; CREATE OPERATOR FAMILY alt_opf5 USING btree; SET ROLE regress_alter_generic_user5; ALTER OPERATOR FAMILY alt_opf5 USING btree ADD OPERATOR 1 < (int4, int2), FUNCTION 1 btint42cmp(int4, int2); RESET ROLE; DROP OPERATOR FAMILY alt_opf5 USING btree; ROLLBACK; -- Should fail. Need rights to namespace for ALTER OPERATOR FAMILY .. ADD / DROP BEGIN TRANSACTION; CREATE ROLE regress_alter_generic_user6; CREATE SCHEMA alt_nsp6; REVOKE ALL ON SCHEMA alt_nsp6 FROM regress_alter_generic_user6; CREATE OPERATOR FAMILY alt_nsp6.alt_opf6 USING btree; SET ROLE regress_alter_generic_user6; ALTER OPERATOR FAMILY alt_nsp6.alt_opf6 USING btree ADD OPERATOR 1 < (int4, int2); ROLLBACK; -- Should fail. Only two arguments required for ALTER OPERATOR FAMILY ... DROP OPERATOR CREATE OPERATOR FAMILY alt_opf7 USING btree; ALTER OPERATOR FAMILY alt_opf7 USING btree ADD OPERATOR 1 < (int4, int2); ALTER OPERATOR FAMILY alt_opf7 USING btree DROP OPERATOR 1 (int4, int2, int8); DROP OPERATOR FAMILY alt_opf7 USING btree; -- Should work. During ALTER OPERATOR FAMILY ... DROP OPERATOR -- when left type is the same as right type, a DROP with only one argument type should work CREATE OPERATOR FAMILY alt_opf8 USING btree; ALTER OPERATOR FAMILY alt_opf8 USING btree ADD OPERATOR 1 < (int4, int4); DROP OPERATOR FAMILY alt_opf8 USING btree; -- Should work. Textbook case of ALTER OPERATOR FAMILY ... ADD OPERATOR with FOR ORDER BY CREATE OPERATOR FAMILY alt_opf9 USING gist; ALTER OPERATOR FAMILY alt_opf9 USING gist ADD OPERATOR 1 < (int4, int4) FOR ORDER BY float_ops; DROP OPERATOR FAMILY alt_opf9 USING gist; -- Should fail. Ensure correct ordering methods in ALTER OPERATOR FAMILY ... ADD OPERATOR .. FOR ORDER BY CREATE OPERATOR FAMILY alt_opf10 USING btree; ALTER OPERATOR FAMILY alt_opf10 USING btree ADD OPERATOR 1 < (int4, int4) FOR ORDER BY float_ops; DROP OPERATOR FAMILY alt_opf10 USING btree; -- Should work. Textbook case of ALTER OPERATOR FAMILY ... ADD OPERATOR with FOR ORDER BY CREATE OPERATOR FAMILY alt_opf11 USING gist; ALTER OPERATOR FAMILY alt_opf11 USING gist ADD OPERATOR 1 < (int4, int4) FOR ORDER BY float_ops; ALTER OPERATOR FAMILY alt_opf11 USING gist DROP OPERATOR 1 (int4, int4); DROP OPERATOR FAMILY alt_opf11 USING gist; -- Should fail. btree comparison functions should return INTEGER in ALTER OPERATOR FAMILY ... ADD FUNCTION BEGIN TRANSACTION; CREATE OPERATOR FAMILY alt_opf12 USING btree; CREATE FUNCTION fn_opf12 (int4, int2) RETURNS BIGINT AS 'SELECT NULL::BIGINT;' LANGUAGE SQL; ALTER OPERATOR FAMILY alt_opf12 USING btree ADD FUNCTION 1 fn_opf12(int4, int2); DROP OPERATOR FAMILY alt_opf12 USING btree; ROLLBACK; -- Should fail. hash comparison functions should return INTEGER in ALTER OPERATOR FAMILY ... ADD FUNCTION BEGIN TRANSACTION; CREATE OPERATOR FAMILY alt_opf13 USING hash; CREATE FUNCTION fn_opf13 (int4) RETURNS BIGINT AS 'SELECT NULL::BIGINT;' LANGUAGE SQL; ALTER OPERATOR FAMILY alt_opf13 USING hash ADD FUNCTION 1 fn_opf13(int4); DROP OPERATOR FAMILY alt_opf13 USING hash; ROLLBACK; -- Should fail. btree comparison functions should have two arguments in ALTER OPERATOR FAMILY ... ADD FUNCTION BEGIN TRANSACTION; CREATE OPERATOR FAMILY alt_opf14 USING btree; CREATE FUNCTION fn_opf14 (int4) RETURNS BIGINT AS 'SELECT NULL::BIGINT;' LANGUAGE SQL; ALTER OPERATOR FAMILY alt_opf14 USING btree ADD FUNCTION 1 fn_opf14(int4); DROP OPERATOR FAMILY alt_opf14 USING btree; ROLLBACK; -- Should fail. hash comparison functions should have one argument in ALTER OPERATOR FAMILY ... ADD FUNCTION BEGIN TRANSACTION; CREATE OPERATOR FAMILY alt_opf15 USING hash; CREATE FUNCTION fn_opf15 (int4, int2) RETURNS BIGINT AS 'SELECT NULL::BIGINT;' LANGUAGE SQL; ALTER OPERATOR FAMILY alt_opf15 USING hash ADD FUNCTION 1 fn_opf15(int4, int2); DROP OPERATOR FAMILY alt_opf15 USING hash; ROLLBACK; -- Should fail. In gist throw an error when giving different data types for function argument -- without defining left / right type in ALTER OPERATOR FAMILY ... ADD FUNCTION CREATE OPERATOR FAMILY alt_opf16 USING gist; ALTER OPERATOR FAMILY alt_opf16 USING gist ADD FUNCTION 1 btint42cmp(int4, int2); DROP OPERATOR FAMILY alt_opf16 USING gist; -- Should fail. duplicate operator number / function number in ALTER OPERATOR FAMILY ... ADD FUNCTION CREATE OPERATOR FAMILY alt_opf17 USING btree; ALTER OPERATOR FAMILY alt_opf17 USING btree ADD OPERATOR 1 < (int4, int4), OPERATOR 1 < (int4, int4); -- operator # appears twice in same statement ALTER OPERATOR FAMILY alt_opf17 USING btree ADD OPERATOR 1 < (int4, int4); -- operator 1 requested first-time ALTER OPERATOR FAMILY alt_opf17 USING btree ADD OPERATOR 1 < (int4, int4); -- operator 1 requested again in separate statement ALTER OPERATOR FAMILY alt_opf17 USING btree ADD OPERATOR 1 < (int4, int2) , OPERATOR 2 <= (int4, int2) , OPERATOR 3 = (int4, int2) , OPERATOR 4 >= (int4, int2) , OPERATOR 5 > (int4, int2) , FUNCTION 1 btint42cmp(int4, int2) , FUNCTION 1 btint42cmp(int4, int2); -- procedure 1 appears twice in same statement ALTER OPERATOR FAMILY alt_opf17 USING btree ADD OPERATOR 1 < (int4, int2) , OPERATOR 2 <= (int4, int2) , OPERATOR 3 = (int4, int2) , OPERATOR 4 >= (int4, int2) , OPERATOR 5 > (int4, int2) , FUNCTION 1 btint42cmp(int4, int2); -- procedure 1 appears first time ALTER OPERATOR FAMILY alt_opf17 USING btree ADD OPERATOR 1 < (int4, int2) , OPERATOR 2 <= (int4, int2) , OPERATOR 3 = (int4, int2) , OPERATOR 4 >= (int4, int2) , OPERATOR 5 > (int4, int2) , FUNCTION 1 btint42cmp(int4, int2); -- procedure 1 requested again in separate statement DROP OPERATOR FAMILY alt_opf17 USING btree; -- Should fail. Ensure that DROP requests for missing OPERATOR / FUNCTIONS -- return appropriate message in ALTER OPERATOR FAMILY ... DROP OPERATOR / FUNCTION CREATE OPERATOR FAMILY alt_opf18 USING btree; ALTER OPERATOR FAMILY alt_opf18 USING btree DROP OPERATOR 1 (int4, int4); ALTER OPERATOR FAMILY alt_opf18 USING btree ADD OPERATOR 1 < (int4, int2) , OPERATOR 2 <= (int4, int2) , OPERATOR 3 = (int4, int2) , OPERATOR 4 >= (int4, int2) , OPERATOR 5 > (int4, int2) , FUNCTION 1 btint42cmp(int4, int2); -- Should fail. Not allowed to have cross-type equalimage function. ALTER OPERATOR FAMILY alt_opf18 USING btree ADD FUNCTION 4 (int4, int2) btequalimage(oid); ALTER OPERATOR FAMILY alt_opf18 USING btree DROP FUNCTION 2 (int4, int4); DROP OPERATOR FAMILY alt_opf18 USING btree; -- Should fail. Invalid opclass options function (#5) specifications. CREATE OPERATOR FAMILY alt_opf19 USING btree; ALTER OPERATOR FAMILY alt_opf19 USING btree ADD FUNCTION 5 test_opclass_options_func(internal, text[], bool); ALTER OPERATOR FAMILY alt_opf19 USING btree ADD FUNCTION 5 (int4) btint42cmp(int4, int2); ALTER OPERATOR FAMILY alt_opf19 USING btree ADD FUNCTION 5 (int4, int2) btint42cmp(int4, int2); ALTER OPERATOR FAMILY alt_opf19 USING btree ADD FUNCTION 5 (int4) test_opclass_options_func(internal); -- Ok ALTER OPERATOR FAMILY alt_opf19 USING btree DROP FUNCTION 5 (int4, int4); DROP OPERATOR FAMILY alt_opf19 USING btree; -- -- Statistics -- SET SESSION AUTHORIZATION regress_alter_generic_user1; CREATE TABLE alt_regress_1 (a INTEGER, b INTEGER); CREATE STATISTICS alt_stat1 ON a, b FROM alt_regress_1; CREATE STATISTICS alt_stat2 ON a, b FROM alt_regress_1; ALTER STATISTICS alt_stat1 RENAME TO alt_stat2; -- failed (name conflict) ALTER STATISTICS alt_stat1 RENAME TO alt_stat3; -- OK ALTER STATISTICS alt_stat2 OWNER TO regress_alter_generic_user2; -- failed (no role membership) ALTER STATISTICS alt_stat2 OWNER TO regress_alter_generic_user3; -- OK ALTER STATISTICS alt_stat2 SET SCHEMA alt_nsp2; -- OK SET SESSION AUTHORIZATION regress_alter_generic_user2; CREATE TABLE alt_regress_2 (a INTEGER, b INTEGER); CREATE STATISTICS alt_stat1 ON a, b FROM alt_regress_2; CREATE STATISTICS alt_stat2 ON a, b FROM alt_regress_2; ALTER STATISTICS alt_stat3 RENAME TO alt_stat4; -- failed (not owner) ALTER STATISTICS alt_stat1 RENAME TO alt_stat4; -- OK ALTER STATISTICS alt_stat3 OWNER TO regress_alter_generic_user2; -- failed (not owner) ALTER STATISTICS alt_stat2 OWNER TO regress_alter_generic_user3; -- failed (no role membership) ALTER STATISTICS alt_stat3 SET SCHEMA alt_nsp2; -- failed (not owner) ALTER STATISTICS alt_stat2 SET SCHEMA alt_nsp2; -- failed (name conflict) RESET SESSION AUTHORIZATION; SELECT nspname, stxname, rolname FROM pg_statistic_ext s, pg_namespace n, pg_authid a WHERE s.stxnamespace = n.oid AND s.stxowner = a.oid AND n.nspname in ('alt_nsp1', 'alt_nsp2') ORDER BY nspname, stxname; -- -- Text Search Dictionary -- SET SESSION AUTHORIZATION regress_alter_generic_user1; CREATE TEXT SEARCH DICTIONARY alt_ts_dict1 (template=simple); CREATE TEXT SEARCH DICTIONARY alt_ts_dict2 (template=simple); ALTER TEXT SEARCH DICTIONARY alt_ts_dict1 RENAME TO alt_ts_dict2; -- failed (name conflict) ALTER TEXT SEARCH DICTIONARY alt_ts_dict1 RENAME TO alt_ts_dict3; -- OK ALTER TEXT SEARCH DICTIONARY alt_ts_dict2 OWNER TO regress_alter_generic_user2; -- failed (no role membership) ALTER TEXT SEARCH DICTIONARY alt_ts_dict2 OWNER TO regress_alter_generic_user3; -- OK ALTER TEXT SEARCH DICTIONARY alt_ts_dict2 SET SCHEMA alt_nsp2; -- OK SET SESSION AUTHORIZATION regress_alter_generic_user2; CREATE TEXT SEARCH DICTIONARY alt_ts_dict1 (template=simple); CREATE TEXT SEARCH DICTIONARY alt_ts_dict2 (template=simple); ALTER TEXT SEARCH DICTIONARY alt_ts_dict3 RENAME TO alt_ts_dict4; -- failed (not owner) ALTER TEXT SEARCH DICTIONARY alt_ts_dict1 RENAME TO alt_ts_dict4; -- OK ALTER TEXT SEARCH DICTIONARY alt_ts_dict3 OWNER TO regress_alter_generic_user2; -- failed (not owner) ALTER TEXT SEARCH DICTIONARY alt_ts_dict2 OWNER TO regress_alter_generic_user3; -- failed (no role membership) ALTER TEXT SEARCH DICTIONARY alt_ts_dict3 SET SCHEMA alt_nsp2; -- failed (not owner) ALTER TEXT SEARCH DICTIONARY alt_ts_dict2 SET SCHEMA alt_nsp2; -- failed (name conflict) RESET SESSION AUTHORIZATION; SELECT nspname, dictname, rolname FROM pg_ts_dict t, pg_namespace n, pg_authid a WHERE t.dictnamespace = n.oid AND t.dictowner = a.oid AND n.nspname in ('alt_nsp1', 'alt_nsp2') ORDER BY nspname, dictname; -- -- Text Search Configuration -- SET SESSION AUTHORIZATION regress_alter_generic_user1; CREATE TEXT SEARCH CONFIGURATION alt_ts_conf1 (copy=english); CREATE TEXT SEARCH CONFIGURATION alt_ts_conf2 (copy=english); ALTER TEXT SEARCH CONFIGURATION alt_ts_conf1 RENAME TO alt_ts_conf2; -- failed (name conflict) ALTER TEXT SEARCH CONFIGURATION alt_ts_conf1 RENAME TO alt_ts_conf3; -- OK ALTER TEXT SEARCH CONFIGURATION alt_ts_conf2 OWNER TO regress_alter_generic_user2; -- failed (no role membership) ALTER TEXT SEARCH CONFIGURATION alt_ts_conf2 OWNER TO regress_alter_generic_user3; -- OK ALTER TEXT SEARCH CONFIGURATION alt_ts_conf2 SET SCHEMA alt_nsp2; -- OK SET SESSION AUTHORIZATION regress_alter_generic_user2; CREATE TEXT SEARCH CONFIGURATION alt_ts_conf1 (copy=english); CREATE TEXT SEARCH CONFIGURATION alt_ts_conf2 (copy=english); ALTER TEXT SEARCH CONFIGURATION alt_ts_conf3 RENAME TO alt_ts_conf4; -- failed (not owner) ALTER TEXT SEARCH CONFIGURATION alt_ts_conf1 RENAME TO alt_ts_conf4; -- OK ALTER TEXT SEARCH CONFIGURATION alt_ts_conf3 OWNER TO regress_alter_generic_user2; -- failed (not owner) ALTER TEXT SEARCH CONFIGURATION alt_ts_conf2 OWNER TO regress_alter_generic_user3; -- failed (no role membership) ALTER TEXT SEARCH CONFIGURATION alt_ts_conf3 SET SCHEMA alt_nsp2; -- failed (not owner) ALTER TEXT SEARCH CONFIGURATION alt_ts_conf2 SET SCHEMA alt_nsp2; -- failed (name conflict) RESET SESSION AUTHORIZATION; SELECT nspname, cfgname, rolname FROM pg_ts_config t, pg_namespace n, pg_authid a WHERE t.cfgnamespace = n.oid AND t.cfgowner = a.oid AND n.nspname in ('alt_nsp1', 'alt_nsp2') ORDER BY nspname, cfgname; -- -- Text Search Template -- CREATE TEXT SEARCH TEMPLATE alt_ts_temp1 (lexize=dsimple_lexize); CREATE TEXT SEARCH TEMPLATE alt_ts_temp2 (lexize=dsimple_lexize); ALTER TEXT SEARCH TEMPLATE alt_ts_temp1 RENAME TO alt_ts_temp2; -- failed (name conflict) ALTER TEXT SEARCH TEMPLATE alt_ts_temp1 RENAME TO alt_ts_temp3; -- OK ALTER TEXT SEARCH TEMPLATE alt_ts_temp2 SET SCHEMA alt_nsp2; -- OK CREATE TEXT SEARCH TEMPLATE alt_ts_temp2 (lexize=dsimple_lexize); ALTER TEXT SEARCH TEMPLATE alt_ts_temp2 SET SCHEMA alt_nsp2; -- failed (name conflict) -- invalid: non-lowercase quoted identifiers CREATE TEXT SEARCH TEMPLATE tstemp_case ("Init" = init_function); SELECT nspname, tmplname FROM pg_ts_template t, pg_namespace n WHERE t.tmplnamespace = n.oid AND nspname like 'alt_nsp%' ORDER BY nspname, tmplname; -- -- Text Search Parser -- CREATE TEXT SEARCH PARSER alt_ts_prs1 (start = prsd_start, gettoken = prsd_nexttoken, end = prsd_end, lextypes = prsd_lextype); CREATE TEXT SEARCH PARSER alt_ts_prs2 (start = prsd_start, gettoken = prsd_nexttoken, end = prsd_end, lextypes = prsd_lextype); ALTER TEXT SEARCH PARSER alt_ts_prs1 RENAME TO alt_ts_prs2; -- failed (name conflict) ALTER TEXT SEARCH PARSER alt_ts_prs1 RENAME TO alt_ts_prs3; -- OK ALTER TEXT SEARCH PARSER alt_ts_prs2 SET SCHEMA alt_nsp2; -- OK CREATE TEXT SEARCH PARSER alt_ts_prs2 (start = prsd_start, gettoken = prsd_nexttoken, end = prsd_end, lextypes = prsd_lextype); ALTER TEXT SEARCH PARSER alt_ts_prs2 SET SCHEMA alt_nsp2; -- failed (name conflict) -- invalid: non-lowercase quoted identifiers CREATE TEXT SEARCH PARSER tspars_case ("Start" = start_function); SELECT nspname, prsname FROM pg_ts_parser t, pg_namespace n WHERE t.prsnamespace = n.oid AND nspname like 'alt_nsp%' ORDER BY nspname, prsname; --- --- Cleanup resources --- DROP FOREIGN DATA WRAPPER alt_fdw2 CASCADE; DROP FOREIGN DATA WRAPPER alt_fdw3 CASCADE; DROP LANGUAGE alt_lang2 CASCADE; DROP LANGUAGE alt_lang3 CASCADE; DROP SCHEMA alt_nsp1 CASCADE; DROP SCHEMA alt_nsp2 CASCADE; DROP USER regress_alter_generic_user1; DROP USER regress_alter_generic_user2; DROP USER regress_alter_generic_user3; libpg_query-13-2.1.0/test/sql/postgres_regress/alter_operator.sql000066400000000000000000000065051413137616400252120ustar00rootroot00000000000000CREATE FUNCTION alter_op_test_fn(boolean, boolean) RETURNS boolean AS $$ SELECT NULL::BOOLEAN; $$ LANGUAGE sql IMMUTABLE; CREATE FUNCTION customcontsel(internal, oid, internal, integer) RETURNS float8 AS 'contsel' LANGUAGE internal STABLE STRICT; CREATE OPERATOR === ( LEFTARG = boolean, RIGHTARG = boolean, PROCEDURE = alter_op_test_fn, COMMUTATOR = ===, NEGATOR = !==, RESTRICT = customcontsel, JOIN = contjoinsel, HASHES, MERGES ); SELECT pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype FROM pg_depend WHERE classid = 'pg_operator'::regclass AND objid = '===(bool,bool)'::regoperator ORDER BY 1; -- -- Reset and set params -- ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = NONE); ALTER OPERATOR === (boolean, boolean) SET (JOIN = NONE); SELECT oprrest, oprjoin FROM pg_operator WHERE oprname = '===' AND oprleft = 'boolean'::regtype AND oprright = 'boolean'::regtype; SELECT pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype FROM pg_depend WHERE classid = 'pg_operator'::regclass AND objid = '===(bool,bool)'::regoperator ORDER BY 1; ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = contsel); ALTER OPERATOR === (boolean, boolean) SET (JOIN = contjoinsel); SELECT oprrest, oprjoin FROM pg_operator WHERE oprname = '===' AND oprleft = 'boolean'::regtype AND oprright = 'boolean'::regtype; SELECT pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype FROM pg_depend WHERE classid = 'pg_operator'::regclass AND objid = '===(bool,bool)'::regoperator ORDER BY 1; ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = NONE, JOIN = NONE); SELECT oprrest, oprjoin FROM pg_operator WHERE oprname = '===' AND oprleft = 'boolean'::regtype AND oprright = 'boolean'::regtype; SELECT pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype FROM pg_depend WHERE classid = 'pg_operator'::regclass AND objid = '===(bool,bool)'::regoperator ORDER BY 1; ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = customcontsel, JOIN = contjoinsel); SELECT oprrest, oprjoin FROM pg_operator WHERE oprname = '===' AND oprleft = 'boolean'::regtype AND oprright = 'boolean'::regtype; SELECT pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype FROM pg_depend WHERE classid = 'pg_operator'::regclass AND objid = '===(bool,bool)'::regoperator ORDER BY 1; -- -- Test invalid options. -- ALTER OPERATOR === (boolean, boolean) SET (COMMUTATOR = ====); ALTER OPERATOR === (boolean, boolean) SET (NEGATOR = ====); ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = non_existent_func); ALTER OPERATOR === (boolean, boolean) SET (JOIN = non_existent_func); ALTER OPERATOR === (boolean, boolean) SET (COMMUTATOR = !==); ALTER OPERATOR === (boolean, boolean) SET (NEGATOR = !==); -- invalid: non-lowercase quoted identifiers ALTER OPERATOR & (bit, bit) SET ("Restrict" = _int_contsel, "Join" = _int_contjoinsel); -- -- Test permission check. Must be owner to ALTER OPERATOR. -- CREATE USER regress_alter_op_user; SET SESSION AUTHORIZATION regress_alter_op_user; ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = NONE); -- Clean up RESET SESSION AUTHORIZATION; DROP USER regress_alter_op_user; DROP OPERATOR === (boolean, boolean); DROP FUNCTION customcontsel(internal, oid, internal, integer); DROP FUNCTION alter_op_test_fn(boolean, boolean); libpg_query-13-2.1.0/test/sql/postgres_regress/alter_table.sql000066400000000000000000003251251413137616400244500ustar00rootroot00000000000000-- -- ALTER_TABLE -- -- Clean up in case a prior regression run failed SET client_min_messages TO 'warning'; DROP ROLE IF EXISTS regress_alter_table_user1; RESET client_min_messages; CREATE USER regress_alter_table_user1; -- -- add attribute -- CREATE TABLE attmp (initial int4); COMMENT ON TABLE attmp_wrong IS 'table comment'; COMMENT ON TABLE attmp IS 'table comment'; COMMENT ON TABLE attmp IS NULL; ALTER TABLE attmp ADD COLUMN xmin integer; -- fails ALTER TABLE attmp ADD COLUMN a int4 default 3; ALTER TABLE attmp ADD COLUMN b name; ALTER TABLE attmp ADD COLUMN c text; ALTER TABLE attmp ADD COLUMN d float8; ALTER TABLE attmp ADD COLUMN e float4; ALTER TABLE attmp ADD COLUMN f int2; ALTER TABLE attmp ADD COLUMN g polygon; ALTER TABLE attmp ADD COLUMN i char; ALTER TABLE attmp ADD COLUMN k int4; ALTER TABLE attmp ADD COLUMN l tid; ALTER TABLE attmp ADD COLUMN m xid; ALTER TABLE attmp ADD COLUMN n oidvector; --ALTER TABLE attmp ADD COLUMN o lock; ALTER TABLE attmp ADD COLUMN p boolean; ALTER TABLE attmp ADD COLUMN q point; ALTER TABLE attmp ADD COLUMN r lseg; ALTER TABLE attmp ADD COLUMN s path; ALTER TABLE attmp ADD COLUMN t box; ALTER TABLE attmp ADD COLUMN v timestamp; ALTER TABLE attmp ADD COLUMN w interval; ALTER TABLE attmp ADD COLUMN x float8[]; ALTER TABLE attmp ADD COLUMN y float4[]; ALTER TABLE attmp ADD COLUMN z int2[]; INSERT INTO attmp (a, b, c, d, e, f, g, i, k, l, m, n, p, q, r, s, t, v, w, x, y, z) VALUES (4, 'name', 'text', 4.1, 4.1, 2, '(4.1,4.1,3.1,3.1)', 'c', 314159, '(1,1)', '512', '1 2 3 4 5 6 7 8', true, '(1.1,1.1)', '(4.1,4.1,3.1,3.1)', '(0,2,4.1,4.1,3.1,3.1)', '(4.1,4.1,3.1,3.1)', 'epoch', '01:00:10', '{1.0,2.0,3.0,4.0}', '{1.0,2.0,3.0,4.0}', '{1,2,3,4}'); SELECT * FROM attmp; DROP TABLE attmp; -- the wolf bug - schema mods caused inconsistent row descriptors CREATE TABLE attmp ( initial int4 ); ALTER TABLE attmp ADD COLUMN a int4; ALTER TABLE attmp ADD COLUMN b name; ALTER TABLE attmp ADD COLUMN c text; ALTER TABLE attmp ADD COLUMN d float8; ALTER TABLE attmp ADD COLUMN e float4; ALTER TABLE attmp ADD COLUMN f int2; ALTER TABLE attmp ADD COLUMN g polygon; ALTER TABLE attmp ADD COLUMN i char; ALTER TABLE attmp ADD COLUMN k int4; ALTER TABLE attmp ADD COLUMN l tid; ALTER TABLE attmp ADD COLUMN m xid; ALTER TABLE attmp ADD COLUMN n oidvector; --ALTER TABLE attmp ADD COLUMN o lock; ALTER TABLE attmp ADD COLUMN p boolean; ALTER TABLE attmp ADD COLUMN q point; ALTER TABLE attmp ADD COLUMN r lseg; ALTER TABLE attmp ADD COLUMN s path; ALTER TABLE attmp ADD COLUMN t box; ALTER TABLE attmp ADD COLUMN v timestamp; ALTER TABLE attmp ADD COLUMN w interval; ALTER TABLE attmp ADD COLUMN x float8[]; ALTER TABLE attmp ADD COLUMN y float4[]; ALTER TABLE attmp ADD COLUMN z int2[]; INSERT INTO attmp (a, b, c, d, e, f, g, i, k, l, m, n, p, q, r, s, t, v, w, x, y, z) VALUES (4, 'name', 'text', 4.1, 4.1, 2, '(4.1,4.1,3.1,3.1)', 'c', 314159, '(1,1)', '512', '1 2 3 4 5 6 7 8', true, '(1.1,1.1)', '(4.1,4.1,3.1,3.1)', '(0,2,4.1,4.1,3.1,3.1)', '(4.1,4.1,3.1,3.1)', 'epoch', '01:00:10', '{1.0,2.0,3.0,4.0}', '{1.0,2.0,3.0,4.0}', '{1,2,3,4}'); SELECT * FROM attmp; CREATE INDEX attmp_idx ON attmp (a, (d + e), b); ALTER INDEX attmp_idx ALTER COLUMN 0 SET STATISTICS 1000; ALTER INDEX attmp_idx ALTER COLUMN 1 SET STATISTICS 1000; ALTER INDEX attmp_idx ALTER COLUMN 2 SET STATISTICS 1000; \d+ attmp_idx ALTER INDEX attmp_idx ALTER COLUMN 3 SET STATISTICS 1000; ALTER INDEX attmp_idx ALTER COLUMN 4 SET STATISTICS 1000; ALTER INDEX attmp_idx ALTER COLUMN 2 SET STATISTICS -1; DROP TABLE attmp; -- -- rename - check on both non-temp and temp tables -- CREATE TABLE attmp (regtable int); CREATE TEMP TABLE attmp (attmptable int); ALTER TABLE attmp RENAME TO attmp_new; SELECT * FROM attmp; SELECT * FROM attmp_new; ALTER TABLE attmp RENAME TO attmp_new2; SELECT * FROM attmp; -- should fail SELECT * FROM attmp_new; SELECT * FROM attmp_new2; DROP TABLE attmp_new; DROP TABLE attmp_new2; -- check rename of partitioned tables and indexes also CREATE TABLE part_attmp (a int primary key) partition by range (a); CREATE TABLE part_attmp1 PARTITION OF part_attmp FOR VALUES FROM (0) TO (100); ALTER INDEX part_attmp_pkey RENAME TO part_attmp_index; ALTER INDEX part_attmp1_pkey RENAME TO part_attmp1_index; ALTER TABLE part_attmp RENAME TO part_at2tmp; ALTER TABLE part_attmp1 RENAME TO part_at2tmp1; SET ROLE regress_alter_table_user1; ALTER INDEX part_attmp_index RENAME TO fail; ALTER INDEX part_attmp1_index RENAME TO fail; ALTER TABLE part_at2tmp RENAME TO fail; ALTER TABLE part_at2tmp1 RENAME TO fail; RESET ROLE; DROP TABLE part_at2tmp; -- -- check renaming to a table's array type's autogenerated name -- (the array type's name should get out of the way) -- CREATE TABLE attmp_array (id int); CREATE TABLE attmp_array2 (id int); SELECT typname FROM pg_type WHERE oid = 'attmp_array[]'::regtype; SELECT typname FROM pg_type WHERE oid = 'attmp_array2[]'::regtype; ALTER TABLE attmp_array2 RENAME TO _attmp_array; SELECT typname FROM pg_type WHERE oid = 'attmp_array[]'::regtype; SELECT typname FROM pg_type WHERE oid = '_attmp_array[]'::regtype; DROP TABLE _attmp_array; DROP TABLE attmp_array; -- renaming to table's own array type's name is an interesting corner case CREATE TABLE attmp_array (id int); SELECT typname FROM pg_type WHERE oid = 'attmp_array[]'::regtype; ALTER TABLE attmp_array RENAME TO _attmp_array; SELECT typname FROM pg_type WHERE oid = '_attmp_array[]'::regtype; DROP TABLE _attmp_array; -- ALTER TABLE ... RENAME on non-table relations -- renaming indexes (FIXME: this should probably test the index's functionality) ALTER INDEX IF EXISTS __onek_unique1 RENAME TO attmp_onek_unique1; ALTER INDEX IF EXISTS __attmp_onek_unique1 RENAME TO onek_unique1; ALTER INDEX onek_unique1 RENAME TO attmp_onek_unique1; ALTER INDEX attmp_onek_unique1 RENAME TO onek_unique1; SET ROLE regress_alter_table_user1; ALTER INDEX onek_unique1 RENAME TO fail; -- permission denied RESET ROLE; -- renaming views CREATE VIEW attmp_view (unique1) AS SELECT unique1 FROM tenk1; ALTER TABLE attmp_view RENAME TO attmp_view_new; SET ROLE regress_alter_table_user1; ALTER VIEW attmp_view_new RENAME TO fail; -- permission denied RESET ROLE; -- hack to ensure we get an indexscan here set enable_seqscan to off; set enable_bitmapscan to off; -- 5 values, sorted SELECT unique1 FROM tenk1 WHERE unique1 < 5; reset enable_seqscan; reset enable_bitmapscan; DROP VIEW attmp_view_new; -- toast-like relation name alter table stud_emp rename to pg_toast_stud_emp; alter table pg_toast_stud_emp rename to stud_emp; -- renaming index should rename constraint as well ALTER TABLE onek ADD CONSTRAINT onek_unique1_constraint UNIQUE (unique1); ALTER INDEX onek_unique1_constraint RENAME TO onek_unique1_constraint_foo; ALTER TABLE onek DROP CONSTRAINT onek_unique1_constraint_foo; -- renaming constraint ALTER TABLE onek ADD CONSTRAINT onek_check_constraint CHECK (unique1 >= 0); ALTER TABLE onek RENAME CONSTRAINT onek_check_constraint TO onek_check_constraint_foo; ALTER TABLE onek DROP CONSTRAINT onek_check_constraint_foo; -- renaming constraint should rename index as well ALTER TABLE onek ADD CONSTRAINT onek_unique1_constraint UNIQUE (unique1); DROP INDEX onek_unique1_constraint; -- to see whether it's there ALTER TABLE onek RENAME CONSTRAINT onek_unique1_constraint TO onek_unique1_constraint_foo; DROP INDEX onek_unique1_constraint_foo; -- to see whether it's there ALTER TABLE onek DROP CONSTRAINT onek_unique1_constraint_foo; -- renaming constraints vs. inheritance CREATE TABLE constraint_rename_test (a int CONSTRAINT con1 CHECK (a > 0), b int, c int); \d constraint_rename_test CREATE TABLE constraint_rename_test2 (a int CONSTRAINT con1 CHECK (a > 0), d int) INHERITS (constraint_rename_test); \d constraint_rename_test2 ALTER TABLE constraint_rename_test2 RENAME CONSTRAINT con1 TO con1foo; -- fail ALTER TABLE ONLY constraint_rename_test RENAME CONSTRAINT con1 TO con1foo; -- fail ALTER TABLE constraint_rename_test RENAME CONSTRAINT con1 TO con1foo; -- ok \d constraint_rename_test \d constraint_rename_test2 ALTER TABLE constraint_rename_test ADD CONSTRAINT con2 CHECK (b > 0) NO INHERIT; ALTER TABLE ONLY constraint_rename_test RENAME CONSTRAINT con2 TO con2foo; -- ok ALTER TABLE constraint_rename_test RENAME CONSTRAINT con2foo TO con2bar; -- ok \d constraint_rename_test \d constraint_rename_test2 ALTER TABLE constraint_rename_test ADD CONSTRAINT con3 PRIMARY KEY (a); ALTER TABLE constraint_rename_test RENAME CONSTRAINT con3 TO con3foo; -- ok \d constraint_rename_test \d constraint_rename_test2 DROP TABLE constraint_rename_test2; DROP TABLE constraint_rename_test; ALTER TABLE IF EXISTS constraint_not_exist RENAME CONSTRAINT con3 TO con3foo; -- ok ALTER TABLE IF EXISTS constraint_rename_test ADD CONSTRAINT con4 UNIQUE (a); -- renaming constraints with cache reset of target relation CREATE TABLE constraint_rename_cache (a int, CONSTRAINT chk_a CHECK (a > 0), PRIMARY KEY (a)); ALTER TABLE constraint_rename_cache RENAME CONSTRAINT chk_a TO chk_a_new; ALTER TABLE constraint_rename_cache RENAME CONSTRAINT constraint_rename_cache_pkey TO constraint_rename_pkey_new; CREATE TABLE like_constraint_rename_cache (LIKE constraint_rename_cache INCLUDING ALL); \d like_constraint_rename_cache DROP TABLE constraint_rename_cache; DROP TABLE like_constraint_rename_cache; -- FOREIGN KEY CONSTRAINT adding TEST CREATE TABLE attmp2 (a int primary key); CREATE TABLE attmp3 (a int, b int); CREATE TABLE attmp4 (a int, b int, unique(a,b)); CREATE TABLE attmp5 (a int, b int); -- Insert rows into attmp2 (pktable) INSERT INTO attmp2 values (1); INSERT INTO attmp2 values (2); INSERT INTO attmp2 values (3); INSERT INTO attmp2 values (4); -- Insert rows into attmp3 INSERT INTO attmp3 values (1,10); INSERT INTO attmp3 values (1,20); INSERT INTO attmp3 values (5,50); -- Try (and fail) to add constraint due to invalid source columns ALTER TABLE attmp3 add constraint attmpconstr foreign key(c) references attmp2 match full; -- Try (and fail) to add constraint due to invalid destination columns explicitly given ALTER TABLE attmp3 add constraint attmpconstr foreign key(a) references attmp2(b) match full; -- Try (and fail) to add constraint due to invalid data ALTER TABLE attmp3 add constraint attmpconstr foreign key (a) references attmp2 match full; -- Delete failing row DELETE FROM attmp3 where a=5; -- Try (and succeed) ALTER TABLE attmp3 add constraint attmpconstr foreign key (a) references attmp2 match full; ALTER TABLE attmp3 drop constraint attmpconstr; INSERT INTO attmp3 values (5,50); -- Try NOT VALID and then VALIDATE CONSTRAINT, but fails. Delete failure then re-validate ALTER TABLE attmp3 add constraint attmpconstr foreign key (a) references attmp2 match full NOT VALID; ALTER TABLE attmp3 validate constraint attmpconstr; -- Delete failing row DELETE FROM attmp3 where a=5; -- Try (and succeed) and repeat to show it works on already valid constraint ALTER TABLE attmp3 validate constraint attmpconstr; ALTER TABLE attmp3 validate constraint attmpconstr; -- Try a non-verified CHECK constraint ALTER TABLE attmp3 ADD CONSTRAINT b_greater_than_ten CHECK (b > 10); -- fail ALTER TABLE attmp3 ADD CONSTRAINT b_greater_than_ten CHECK (b > 10) NOT VALID; -- succeeds ALTER TABLE attmp3 VALIDATE CONSTRAINT b_greater_than_ten; -- fails DELETE FROM attmp3 WHERE NOT b > 10; ALTER TABLE attmp3 VALIDATE CONSTRAINT b_greater_than_ten; -- succeeds ALTER TABLE attmp3 VALIDATE CONSTRAINT b_greater_than_ten; -- succeeds -- Test inherited NOT VALID CHECK constraints select * from attmp3; CREATE TABLE attmp6 () INHERITS (attmp3); CREATE TABLE attmp7 () INHERITS (attmp3); INSERT INTO attmp6 VALUES (6, 30), (7, 16); ALTER TABLE attmp3 ADD CONSTRAINT b_le_20 CHECK (b <= 20) NOT VALID; ALTER TABLE attmp3 VALIDATE CONSTRAINT b_le_20; -- fails DELETE FROM attmp6 WHERE b > 20; ALTER TABLE attmp3 VALIDATE CONSTRAINT b_le_20; -- succeeds -- An already validated constraint must not be revalidated CREATE FUNCTION boo(int) RETURNS int IMMUTABLE STRICT LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'boo: %', $1; RETURN $1; END; $$; INSERT INTO attmp7 VALUES (8, 18); ALTER TABLE attmp7 ADD CONSTRAINT identity CHECK (b = boo(b)); ALTER TABLE attmp3 ADD CONSTRAINT IDENTITY check (b = boo(b)) NOT VALID; ALTER TABLE attmp3 VALIDATE CONSTRAINT identity; -- A NO INHERIT constraint should not be looked for in children during VALIDATE CONSTRAINT create table parent_noinh_convalid (a int); create table child_noinh_convalid () inherits (parent_noinh_convalid); insert into parent_noinh_convalid values (1); insert into child_noinh_convalid values (1); alter table parent_noinh_convalid add constraint check_a_is_2 check (a = 2) no inherit not valid; -- fail, because of the row in parent alter table parent_noinh_convalid validate constraint check_a_is_2; delete from only parent_noinh_convalid; -- ok (parent itself contains no violating rows) alter table parent_noinh_convalid validate constraint check_a_is_2; select convalidated from pg_constraint where conrelid = 'parent_noinh_convalid'::regclass and conname = 'check_a_is_2'; -- cleanup drop table parent_noinh_convalid, child_noinh_convalid; -- Try (and fail) to create constraint from attmp5(a) to attmp4(a) - unique constraint on -- attmp4 is a,b ALTER TABLE attmp5 add constraint attmpconstr foreign key(a) references attmp4(a) match full; DROP TABLE attmp7; DROP TABLE attmp6; DROP TABLE attmp5; DROP TABLE attmp4; DROP TABLE attmp3; DROP TABLE attmp2; -- NOT VALID with plan invalidation -- ensure we don't use a constraint for -- exclusion until validated set constraint_exclusion TO 'partition'; create table nv_parent (d date, check (false) no inherit not valid); -- not valid constraint added at creation time should automatically become valid \d nv_parent create table nv_child_2010 () inherits (nv_parent); create table nv_child_2011 () inherits (nv_parent); alter table nv_child_2010 add check (d between '2010-01-01'::date and '2010-12-31'::date) not valid; alter table nv_child_2011 add check (d between '2011-01-01'::date and '2011-12-31'::date) not valid; explain (costs off) select * from nv_parent where d between '2011-08-01' and '2011-08-31'; create table nv_child_2009 (check (d between '2009-01-01'::date and '2009-12-31'::date)) inherits (nv_parent); explain (costs off) select * from nv_parent where d between '2011-08-01'::date and '2011-08-31'::date; explain (costs off) select * from nv_parent where d between '2009-08-01'::date and '2009-08-31'::date; -- after validation, the constraint should be used alter table nv_child_2011 VALIDATE CONSTRAINT nv_child_2011_d_check; explain (costs off) select * from nv_parent where d between '2009-08-01'::date and '2009-08-31'::date; -- add an inherited NOT VALID constraint alter table nv_parent add check (d between '2001-01-01'::date and '2099-12-31'::date) not valid; \d nv_child_2009 -- we leave nv_parent and children around to help test pg_dump logic -- Foreign key adding test with mixed types -- Note: these tables are TEMP to avoid name conflicts when this test -- is run in parallel with foreign_key.sql. CREATE TEMP TABLE PKTABLE (ptest1 int PRIMARY KEY); INSERT INTO PKTABLE VALUES(42); CREATE TEMP TABLE FKTABLE (ftest1 inet); -- This next should fail, because int=inet does not exist ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable; -- This should also fail for the same reason, but here we -- give the column name ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable(ptest1); DROP TABLE FKTABLE; -- This should succeed, even though they are different types, -- because int=int8 exists and is a member of the integer opfamily CREATE TEMP TABLE FKTABLE (ftest1 int8); ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable; -- Check it actually works INSERT INTO FKTABLE VALUES(42); -- should succeed INSERT INTO FKTABLE VALUES(43); -- should fail DROP TABLE FKTABLE; -- This should fail, because we'd have to cast numeric to int which is -- not an implicit coercion (or use numeric=numeric, but that's not part -- of the integer opfamily) CREATE TEMP TABLE FKTABLE (ftest1 numeric); ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable; DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- On the other hand, this should work because int implicitly promotes to -- numeric, and we allow promotion on the FK side CREATE TEMP TABLE PKTABLE (ptest1 numeric PRIMARY KEY); INSERT INTO PKTABLE VALUES(42); CREATE TEMP TABLE FKTABLE (ftest1 int); ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable; -- Check it actually works INSERT INTO FKTABLE VALUES(42); -- should succeed INSERT INTO FKTABLE VALUES(43); -- should fail DROP TABLE FKTABLE; DROP TABLE PKTABLE; CREATE TEMP TABLE PKTABLE (ptest1 int, ptest2 inet, PRIMARY KEY(ptest1, ptest2)); -- This should fail, because we just chose really odd types CREATE TEMP TABLE FKTABLE (ftest1 cidr, ftest2 timestamp); ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2) references pktable; DROP TABLE FKTABLE; -- Again, so should this... CREATE TEMP TABLE FKTABLE (ftest1 cidr, ftest2 timestamp); ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2) references pktable(ptest1, ptest2); DROP TABLE FKTABLE; -- This fails because we mixed up the column ordering CREATE TEMP TABLE FKTABLE (ftest1 int, ftest2 inet); ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2) references pktable(ptest2, ptest1); -- As does this... ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest2, ftest1) references pktable(ptest1, ptest2); DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- Test that ALTER CONSTRAINT updates trigger deferrability properly CREATE TEMP TABLE PKTABLE (ptest1 int primary key); CREATE TEMP TABLE FKTABLE (ftest1 int); ALTER TABLE FKTABLE ADD CONSTRAINT fknd FOREIGN KEY(ftest1) REFERENCES pktable ON DELETE CASCADE ON UPDATE NO ACTION NOT DEFERRABLE; ALTER TABLE FKTABLE ADD CONSTRAINT fkdd FOREIGN KEY(ftest1) REFERENCES pktable ON DELETE CASCADE ON UPDATE NO ACTION DEFERRABLE INITIALLY DEFERRED; ALTER TABLE FKTABLE ADD CONSTRAINT fkdi FOREIGN KEY(ftest1) REFERENCES pktable ON DELETE CASCADE ON UPDATE NO ACTION DEFERRABLE INITIALLY IMMEDIATE; ALTER TABLE FKTABLE ADD CONSTRAINT fknd2 FOREIGN KEY(ftest1) REFERENCES pktable ON DELETE CASCADE ON UPDATE NO ACTION DEFERRABLE INITIALLY DEFERRED; ALTER TABLE FKTABLE ALTER CONSTRAINT fknd2 NOT DEFERRABLE; ALTER TABLE FKTABLE ADD CONSTRAINT fkdd2 FOREIGN KEY(ftest1) REFERENCES pktable ON DELETE CASCADE ON UPDATE NO ACTION NOT DEFERRABLE; ALTER TABLE FKTABLE ALTER CONSTRAINT fkdd2 DEFERRABLE INITIALLY DEFERRED; ALTER TABLE FKTABLE ADD CONSTRAINT fkdi2 FOREIGN KEY(ftest1) REFERENCES pktable ON DELETE CASCADE ON UPDATE NO ACTION NOT DEFERRABLE; ALTER TABLE FKTABLE ALTER CONSTRAINT fkdi2 DEFERRABLE INITIALLY IMMEDIATE; SELECT conname, tgfoid::regproc, tgtype, tgdeferrable, tginitdeferred FROM pg_trigger JOIN pg_constraint con ON con.oid = tgconstraint WHERE tgrelid = 'pktable'::regclass ORDER BY 1,2,3; SELECT conname, tgfoid::regproc, tgtype, tgdeferrable, tginitdeferred FROM pg_trigger JOIN pg_constraint con ON con.oid = tgconstraint WHERE tgrelid = 'fktable'::regclass ORDER BY 1,2,3; -- temp tables should go away by themselves, need not drop them. -- test check constraint adding create table atacc1 ( test int ); -- add a check constraint alter table atacc1 add constraint atacc_test1 check (test>3); -- should fail insert into atacc1 (test) values (2); -- should succeed insert into atacc1 (test) values (4); drop table atacc1; -- let's do one where the check fails when added create table atacc1 ( test int ); -- insert a soon to be failing row insert into atacc1 (test) values (2); -- add a check constraint (fails) alter table atacc1 add constraint atacc_test1 check (test>3); insert into atacc1 (test) values (4); drop table atacc1; -- let's do one where the check fails because the column doesn't exist create table atacc1 ( test int ); -- add a check constraint (fails) alter table atacc1 add constraint atacc_test1 check (test1>3); drop table atacc1; -- something a little more complicated create table atacc1 ( test int, test2 int, test3 int); -- add a check constraint (fails) alter table atacc1 add constraint atacc_test1 check (test+test23), test2 int); alter table atacc1 add check (test2>test); -- should fail for $2 insert into atacc1 (test2, test) values (3, 4); drop table atacc1; -- inheritance related tests create table atacc1 (test int); create table atacc2 (test2 int); create table atacc3 (test3 int) inherits (atacc1, atacc2); alter table atacc2 add constraint foo check (test2>0); -- fail and then succeed on atacc2 insert into atacc2 (test2) values (-3); insert into atacc2 (test2) values (3); -- fail and then succeed on atacc3 insert into atacc3 (test2) values (-3); insert into atacc3 (test2) values (3); drop table atacc3; drop table atacc2; drop table atacc1; -- same things with one created with INHERIT create table atacc1 (test int); create table atacc2 (test2 int); create table atacc3 (test3 int) inherits (atacc1, atacc2); alter table atacc3 no inherit atacc2; -- fail alter table atacc3 no inherit atacc2; -- make sure it really isn't a child insert into atacc3 (test2) values (3); select test2 from atacc2; -- fail due to missing constraint alter table atacc2 add constraint foo check (test2>0); alter table atacc3 inherit atacc2; -- fail due to missing column alter table atacc3 rename test2 to testx; alter table atacc3 inherit atacc2; -- fail due to mismatched data type alter table atacc3 add test2 bool; alter table atacc3 inherit atacc2; alter table atacc3 drop test2; -- succeed alter table atacc3 add test2 int; update atacc3 set test2 = 4 where test2 is null; alter table atacc3 add constraint foo check (test2>0); alter table atacc3 inherit atacc2; -- fail due to duplicates and circular inheritance alter table atacc3 inherit atacc2; alter table atacc2 inherit atacc3; alter table atacc2 inherit atacc2; -- test that we really are a child now (should see 4 not 3 and cascade should go through) select test2 from atacc2; drop table atacc2 cascade; drop table atacc1; -- adding only to a parent is allowed as of 9.2 create table atacc1 (test int); create table atacc2 (test2 int) inherits (atacc1); -- ok: alter table atacc1 add constraint foo check (test>0) no inherit; -- check constraint is not there on child insert into atacc2 (test) values (-3); -- check constraint is there on parent insert into atacc1 (test) values (-3); insert into atacc1 (test) values (3); -- fail, violating row: alter table atacc2 add constraint foo check (test>0) no inherit; drop table atacc2; drop table atacc1; -- test unique constraint adding create table atacc1 ( test int ) ; -- add a unique constraint alter table atacc1 add constraint atacc_test1 unique (test); -- insert first value insert into atacc1 (test) values (2); -- should fail insert into atacc1 (test) values (2); -- should succeed insert into atacc1 (test) values (4); -- try to create duplicates via alter table using - should fail alter table atacc1 alter column test type integer using 0; drop table atacc1; -- let's do one where the unique constraint fails when added create table atacc1 ( test int ); -- insert soon to be failing rows insert into atacc1 (test) values (2); insert into atacc1 (test) values (2); -- add a unique constraint (fails) alter table atacc1 add constraint atacc_test1 unique (test); insert into atacc1 (test) values (3); drop table atacc1; -- let's do one where the unique constraint fails -- because the column doesn't exist create table atacc1 ( test int ); -- add a unique constraint (fails) alter table atacc1 add constraint atacc_test1 unique (test1); drop table atacc1; -- something a little more complicated create table atacc1 ( test int, test2 int); -- add a unique constraint alter table atacc1 add constraint atacc_test1 unique (test, test2); -- insert initial value insert into atacc1 (test,test2) values (4,4); -- should fail insert into atacc1 (test,test2) values (4,4); -- should all succeed insert into atacc1 (test,test2) values (4,5); insert into atacc1 (test,test2) values (5,4); insert into atacc1 (test,test2) values (5,5); drop table atacc1; -- lets do some naming tests create table atacc1 (test int, test2 int, unique(test)); alter table atacc1 add unique (test2); -- should fail for @@ second one @@ insert into atacc1 (test2, test) values (3, 3); insert into atacc1 (test2, test) values (2, 3); drop table atacc1; -- test primary key constraint adding create table atacc1 ( id serial, test int) ; -- add a primary key constraint alter table atacc1 add constraint atacc_test1 primary key (test); -- insert first value insert into atacc1 (test) values (2); -- should fail insert into atacc1 (test) values (2); -- should succeed insert into atacc1 (test) values (4); -- inserting NULL should fail insert into atacc1 (test) values(NULL); -- try adding a second primary key (should fail) alter table atacc1 add constraint atacc_oid1 primary key(id); -- drop first primary key constraint alter table atacc1 drop constraint atacc_test1 restrict; -- try adding a primary key on oid (should succeed) alter table atacc1 add constraint atacc_oid1 primary key(id); drop table atacc1; -- let's do one where the primary key constraint fails when added create table atacc1 ( test int ); -- insert soon to be failing rows insert into atacc1 (test) values (2); insert into atacc1 (test) values (2); -- add a primary key (fails) alter table atacc1 add constraint atacc_test1 primary key (test); insert into atacc1 (test) values (3); drop table atacc1; -- let's do another one where the primary key constraint fails when added create table atacc1 ( test int ); -- insert soon to be failing row insert into atacc1 (test) values (NULL); -- add a primary key (fails) alter table atacc1 add constraint atacc_test1 primary key (test); insert into atacc1 (test) values (3); drop table atacc1; -- let's do one where the primary key constraint fails -- because the column doesn't exist create table atacc1 ( test int ); -- add a primary key constraint (fails) alter table atacc1 add constraint atacc_test1 primary key (test1); drop table atacc1; -- adding a new column as primary key to a non-empty table. -- should fail unless the column has a non-null default value. create table atacc1 ( test int ); insert into atacc1 (test) values (0); -- add a primary key column without a default (fails). alter table atacc1 add column test2 int primary key; -- now add a primary key column with a default (succeeds). alter table atacc1 add column test2 int default 0 primary key; drop table atacc1; -- this combination used to have order-of-execution problems (bug #15580) create table atacc1 (a int); insert into atacc1 values(1); alter table atacc1 add column b float8 not null default random(), add primary key(a); drop table atacc1; -- additionally, we've seen issues with foreign key validation not being -- properly delayed until after a table rewrite. Check that works ok. create table atacc1 (a int primary key); alter table atacc1 add constraint atacc1_fkey foreign key (a) references atacc1 (a) not valid; alter table atacc1 validate constraint atacc1_fkey, alter a type bigint; drop table atacc1; -- we've also seen issues with check constraints being validated at the wrong -- time when there's a pending table rewrite. create table atacc1 (a bigint, b int); insert into atacc1 values(1,1); alter table atacc1 add constraint atacc1_chk check(b = 1) not valid; alter table atacc1 validate constraint atacc1_chk, alter a type int; drop table atacc1; -- same as above, but ensure the constraint violation is detected create table atacc1 (a bigint, b int); insert into atacc1 values(1,2); alter table atacc1 add constraint atacc1_chk check(b = 1) not valid; alter table atacc1 validate constraint atacc1_chk, alter a type int; drop table atacc1; -- something a little more complicated create table atacc1 ( test int, test2 int); -- add a primary key constraint alter table atacc1 add constraint atacc_test1 primary key (test, test2); -- try adding a second primary key - should fail alter table atacc1 add constraint atacc_test2 primary key (test); -- insert initial value insert into atacc1 (test,test2) values (4,4); -- should fail insert into atacc1 (test,test2) values (4,4); insert into atacc1 (test,test2) values (NULL,3); insert into atacc1 (test,test2) values (3, NULL); insert into atacc1 (test,test2) values (NULL,NULL); -- should all succeed insert into atacc1 (test,test2) values (4,5); insert into atacc1 (test,test2) values (5,4); insert into atacc1 (test,test2) values (5,5); drop table atacc1; -- lets do some naming tests create table atacc1 (test int, test2 int, primary key(test)); -- only first should succeed insert into atacc1 (test2, test) values (3, 3); insert into atacc1 (test2, test) values (2, 3); insert into atacc1 (test2, test) values (1, NULL); drop table atacc1; -- alter table / alter column [set/drop] not null tests -- try altering system catalogs, should fail alter table pg_class alter column relname drop not null; alter table pg_class alter relname set not null; -- try altering non-existent table, should fail alter table non_existent alter column bar set not null; alter table non_existent alter column bar drop not null; -- test setting columns to null and not null and vice versa -- test checking for null values and primary key create table atacc1 (test int not null); alter table atacc1 add constraint "atacc1_pkey" primary key (test); alter table atacc1 alter column test drop not null; alter table atacc1 drop constraint "atacc1_pkey"; alter table atacc1 alter column test drop not null; insert into atacc1 values (null); alter table atacc1 alter test set not null; delete from atacc1; alter table atacc1 alter test set not null; -- try altering a non-existent column, should fail alter table atacc1 alter bar set not null; alter table atacc1 alter bar drop not null; -- try creating a view and altering that, should fail create view myview as select * from atacc1; alter table myview alter column test drop not null; alter table myview alter column test set not null; drop view myview; drop table atacc1; -- set not null verified by constraints create table atacc1 (test_a int, test_b int); insert into atacc1 values (null, 1); -- constraint not cover all values, should fail alter table atacc1 add constraint atacc1_constr_or check(test_a is not null or test_b < 10); alter table atacc1 alter test_a set not null; alter table atacc1 drop constraint atacc1_constr_or; -- not valid constraint, should fail alter table atacc1 add constraint atacc1_constr_invalid check(test_a is not null) not valid; alter table atacc1 alter test_a set not null; alter table atacc1 drop constraint atacc1_constr_invalid; -- with valid constraint update atacc1 set test_a = 1; alter table atacc1 add constraint atacc1_constr_a_valid check(test_a is not null); alter table atacc1 alter test_a set not null; delete from atacc1; insert into atacc1 values (2, null); alter table atacc1 alter test_a drop not null; -- test multiple set not null at same time -- test_a checked by atacc1_constr_a_valid, test_b should fail by table scan alter table atacc1 alter test_a set not null, alter test_b set not null; -- commands order has no importance alter table atacc1 alter test_b set not null, alter test_a set not null; -- valid one by table scan, one by check constraints update atacc1 set test_b = 1; alter table atacc1 alter test_b set not null, alter test_a set not null; alter table atacc1 alter test_a drop not null, alter test_b drop not null; -- both column has check constraints alter table atacc1 add constraint atacc1_constr_b_valid check(test_b is not null); alter table atacc1 alter test_b set not null, alter test_a set not null; drop table atacc1; -- test inheritance create table parent (a int); create table child (b varchar(255)) inherits (parent); alter table parent alter a set not null; insert into parent values (NULL); insert into child (a, b) values (NULL, 'foo'); alter table parent alter a drop not null; insert into parent values (NULL); insert into child (a, b) values (NULL, 'foo'); alter table only parent alter a set not null; alter table child alter a set not null; delete from parent; alter table only parent alter a set not null; insert into parent values (NULL); alter table child alter a set not null; insert into child (a, b) values (NULL, 'foo'); delete from child; alter table child alter a set not null; insert into child (a, b) values (NULL, 'foo'); drop table child; drop table parent; -- test setting and removing default values create table def_test ( c1 int4 default 5, c2 text default 'initial_default' ); insert into def_test default values; alter table def_test alter column c1 drop default; insert into def_test default values; alter table def_test alter column c2 drop default; insert into def_test default values; alter table def_test alter column c1 set default 10; alter table def_test alter column c2 set default 'new_default'; insert into def_test default values; select * from def_test; -- set defaults to an incorrect type: this should fail alter table def_test alter column c1 set default 'wrong_datatype'; alter table def_test alter column c2 set default 20; -- set defaults on a non-existent column: this should fail alter table def_test alter column c3 set default 30; -- set defaults on views: we need to create a view, add a rule -- to allow insertions into it, and then alter the view to add -- a default create view def_view_test as select * from def_test; create rule def_view_test_ins as on insert to def_view_test do instead insert into def_test select new.*; insert into def_view_test default values; alter table def_view_test alter column c1 set default 45; insert into def_view_test default values; alter table def_view_test alter column c2 set default 'view_default'; insert into def_view_test default values; select * from def_view_test; drop rule def_view_test_ins on def_view_test; drop view def_view_test; drop table def_test; -- alter table / drop column tests -- try altering system catalogs, should fail alter table pg_class drop column relname; -- try altering non-existent table, should fail alter table nosuchtable drop column bar; -- test dropping columns create table atacc1 (a int4 not null, b int4, c int4 not null, d int4); insert into atacc1 values (1, 2, 3, 4); alter table atacc1 drop a; alter table atacc1 drop a; -- SELECTs select * from atacc1; select * from atacc1 order by a; select * from atacc1 order by "........pg.dropped.1........"; select * from atacc1 group by a; select * from atacc1 group by "........pg.dropped.1........"; select atacc1.* from atacc1; select a from atacc1; select atacc1.a from atacc1; select b,c,d from atacc1; select a,b,c,d from atacc1; select * from atacc1 where a = 1; select "........pg.dropped.1........" from atacc1; select atacc1."........pg.dropped.1........" from atacc1; select "........pg.dropped.1........",b,c,d from atacc1; select * from atacc1 where "........pg.dropped.1........" = 1; -- UPDATEs update atacc1 set a = 3; update atacc1 set b = 2 where a = 3; update atacc1 set "........pg.dropped.1........" = 3; update atacc1 set b = 2 where "........pg.dropped.1........" = 3; -- INSERTs insert into atacc1 values (10, 11, 12, 13); insert into atacc1 values (default, 11, 12, 13); insert into atacc1 values (11, 12, 13); insert into atacc1 (a) values (10); insert into atacc1 (a) values (default); insert into atacc1 (a,b,c,d) values (10,11,12,13); insert into atacc1 (a,b,c,d) values (default,11,12,13); insert into atacc1 (b,c,d) values (11,12,13); insert into atacc1 ("........pg.dropped.1........") values (10); insert into atacc1 ("........pg.dropped.1........") values (default); insert into atacc1 ("........pg.dropped.1........",b,c,d) values (10,11,12,13); insert into atacc1 ("........pg.dropped.1........",b,c,d) values (default,11,12,13); -- DELETEs delete from atacc1 where a = 3; delete from atacc1 where "........pg.dropped.1........" = 3; delete from atacc1; -- try dropping a non-existent column, should fail alter table atacc1 drop bar; -- try removing an oid column, should succeed (as it's nonexistent) alter table atacc1 SET WITHOUT OIDS; -- try adding an oid column, should fail (not supported) alter table atacc1 SET WITH OIDS; -- try dropping the xmin column, should fail alter table atacc1 drop xmin; -- try creating a view and altering that, should fail create view myview as select * from atacc1; select * from myview; alter table myview drop d; drop view myview; -- test some commands to make sure they fail on the dropped column analyze atacc1(a); analyze atacc1("........pg.dropped.1........"); vacuum analyze atacc1(a); vacuum analyze atacc1("........pg.dropped.1........"); comment on column atacc1.a is 'testing'; comment on column atacc1."........pg.dropped.1........" is 'testing'; alter table atacc1 alter a set storage plain; alter table atacc1 alter "........pg.dropped.1........" set storage plain; alter table atacc1 alter a set statistics 0; alter table atacc1 alter "........pg.dropped.1........" set statistics 0; alter table atacc1 alter a set default 3; alter table atacc1 alter "........pg.dropped.1........" set default 3; alter table atacc1 alter a drop default; alter table atacc1 alter "........pg.dropped.1........" drop default; alter table atacc1 alter a set not null; alter table atacc1 alter "........pg.dropped.1........" set not null; alter table atacc1 alter a drop not null; alter table atacc1 alter "........pg.dropped.1........" drop not null; alter table atacc1 rename a to x; alter table atacc1 rename "........pg.dropped.1........" to x; alter table atacc1 add primary key(a); alter table atacc1 add primary key("........pg.dropped.1........"); alter table atacc1 add unique(a); alter table atacc1 add unique("........pg.dropped.1........"); alter table atacc1 add check (a > 3); alter table atacc1 add check ("........pg.dropped.1........" > 3); create table atacc2 (id int4 unique); alter table atacc1 add foreign key (a) references atacc2(id); alter table atacc1 add foreign key ("........pg.dropped.1........") references atacc2(id); alter table atacc2 add foreign key (id) references atacc1(a); alter table atacc2 add foreign key (id) references atacc1("........pg.dropped.1........"); drop table atacc2; create index "testing_idx" on atacc1(a); create index "testing_idx" on atacc1("........pg.dropped.1........"); -- test create as and select into insert into atacc1 values (21, 22, 23); create table attest1 as select * from atacc1; select * from attest1; drop table attest1; select * into attest2 from atacc1; select * from attest2; drop table attest2; -- try dropping all columns alter table atacc1 drop c; alter table atacc1 drop d; alter table atacc1 drop b; select * from atacc1; drop table atacc1; -- test constraint error reporting in presence of dropped columns create table atacc1 (id serial primary key, value int check (value < 10)); insert into atacc1(value) values (100); alter table atacc1 drop column value; alter table atacc1 add column value int check (value < 10); insert into atacc1(value) values (100); insert into atacc1(id, value) values (null, 0); drop table atacc1; -- test inheritance create table parent (a int, b int, c int); insert into parent values (1, 2, 3); alter table parent drop a; create table child (d varchar(255)) inherits (parent); insert into child values (12, 13, 'testing'); select * from parent; select * from child; alter table parent drop c; select * from parent; select * from child; drop table child; drop table parent; -- check error cases for inheritance column merging create table parent (a float8, b numeric(10,4), c text collate "C"); create table child (a float4) inherits (parent); -- fail create table child (b decimal(10,7)) inherits (parent); -- fail create table child (c text collate "POSIX") inherits (parent); -- fail create table child (a double precision, b decimal(10,4)) inherits (parent); drop table child; drop table parent; -- test copy in/out create table attest (a int4, b int4, c int4); insert into attest values (1,2,3); alter table attest drop a; copy attest to stdout; copy attest(a) to stdout; copy attest("........pg.dropped.1........") to stdout; copy attest from stdin; 10 11 12 \. select * from attest; copy attest from stdin; 21 22 \. select * from attest; copy attest(a) from stdin; copy attest("........pg.dropped.1........") from stdin; copy attest(b,c) from stdin; 31 32 \. select * from attest; drop table attest; -- test inheritance create table dropColumn (a int, b int, e int); create table dropColumnChild (c int) inherits (dropColumn); create table dropColumnAnother (d int) inherits (dropColumnChild); -- these two should fail alter table dropColumnchild drop column a; alter table only dropColumnChild drop column b; -- these three should work alter table only dropColumn drop column e; alter table dropColumnChild drop column c; alter table dropColumn drop column a; create table renameColumn (a int); create table renameColumnChild (b int) inherits (renameColumn); create table renameColumnAnother (c int) inherits (renameColumnChild); -- these three should fail alter table renameColumnChild rename column a to d; alter table only renameColumnChild rename column a to d; alter table only renameColumn rename column a to d; -- these should work alter table renameColumn rename column a to d; alter table renameColumnChild rename column b to a; -- these should work alter table if exists doesnt_exist_tab rename column a to d; alter table if exists doesnt_exist_tab rename column b to a; -- this should work alter table renameColumn add column w int; -- this should fail alter table only renameColumn add column x int; -- Test corner cases in dropping of inherited columns create table p1 (f1 int, f2 int); create table c1 (f1 int not null) inherits(p1); -- should be rejected since c1.f1 is inherited alter table c1 drop column f1; -- should work alter table p1 drop column f1; -- c1.f1 is still there, but no longer inherited select f1 from c1; alter table c1 drop column f1; select f1 from c1; drop table p1 cascade; create table p1 (f1 int, f2 int); create table c1 () inherits(p1); -- should be rejected since c1.f1 is inherited alter table c1 drop column f1; alter table p1 drop column f1; -- c1.f1 is dropped now, since there is no local definition for it select f1 from c1; drop table p1 cascade; create table p1 (f1 int, f2 int); create table c1 () inherits(p1); -- should be rejected since c1.f1 is inherited alter table c1 drop column f1; alter table only p1 drop column f1; -- c1.f1 is NOT dropped, but must now be considered non-inherited alter table c1 drop column f1; drop table p1 cascade; create table p1 (f1 int, f2 int); create table c1 (f1 int not null) inherits(p1); -- should be rejected since c1.f1 is inherited alter table c1 drop column f1; alter table only p1 drop column f1; -- c1.f1 is still there, but no longer inherited alter table c1 drop column f1; drop table p1 cascade; create table p1(id int, name text); create table p2(id2 int, name text, height int); create table c1(age int) inherits(p1,p2); create table gc1() inherits (c1); select relname, attname, attinhcount, attislocal from pg_class join pg_attribute on (pg_class.oid = pg_attribute.attrelid) where relname in ('p1','p2','c1','gc1') and attnum > 0 and not attisdropped order by relname, attnum; -- should work alter table only p1 drop column name; -- should work. Now c1.name is local and inhcount is 0. alter table p2 drop column name; -- should be rejected since its inherited alter table gc1 drop column name; -- should work, and drop gc1.name along alter table c1 drop column name; -- should fail: column does not exist alter table gc1 drop column name; -- should work and drop the attribute in all tables alter table p2 drop column height; -- IF EXISTS test create table dropColumnExists (); alter table dropColumnExists drop column non_existing; --fail alter table dropColumnExists drop column if exists non_existing; --succeed select relname, attname, attinhcount, attislocal from pg_class join pg_attribute on (pg_class.oid = pg_attribute.attrelid) where relname in ('p1','p2','c1','gc1') and attnum > 0 and not attisdropped order by relname, attnum; drop table p1, p2 cascade; -- test attinhcount tracking with merged columns create table depth0(); create table depth1(c text) inherits (depth0); create table depth2() inherits (depth1); alter table depth0 add c text; select attrelid::regclass, attname, attinhcount, attislocal from pg_attribute where attnum > 0 and attrelid::regclass in ('depth0', 'depth1', 'depth2') order by attrelid::regclass::text, attnum; -- test renumbering of child-table columns in inherited operations create table p1 (f1 int); create table c1 (f2 text, f3 int) inherits (p1); alter table p1 add column a1 int check (a1 > 0); alter table p1 add column f2 text; insert into p1 values (1,2,'abc'); insert into c1 values(11,'xyz',33,0); -- should fail insert into c1 values(11,'xyz',33,22); select * from p1; update p1 set a1 = a1 + 1, f2 = upper(f2); select * from p1; drop table p1 cascade; -- test that operations with a dropped column do not try to reference -- its datatype create domain mytype as text; create temp table foo (f1 text, f2 mytype, f3 text); insert into foo values('bb','cc','dd'); select * from foo; drop domain mytype cascade; select * from foo; insert into foo values('qq','rr'); select * from foo; update foo set f3 = 'zz'; select * from foo; select f3,max(f1) from foo group by f3; -- Simple tests for alter table column type alter table foo alter f1 TYPE integer; -- fails alter table foo alter f1 TYPE varchar(10); create table anothertab (atcol1 serial8, atcol2 boolean, constraint anothertab_chk check (atcol1 <= 3)); insert into anothertab (atcol1, atcol2) values (default, true); insert into anothertab (atcol1, atcol2) values (default, false); select * from anothertab; alter table anothertab alter column atcol1 type boolean; -- fails alter table anothertab alter column atcol1 type boolean using atcol1::int; -- fails alter table anothertab alter column atcol1 type integer; select * from anothertab; insert into anothertab (atcol1, atcol2) values (45, null); -- fails insert into anothertab (atcol1, atcol2) values (default, null); select * from anothertab; alter table anothertab alter column atcol2 type text using case when atcol2 is true then 'IT WAS TRUE' when atcol2 is false then 'IT WAS FALSE' else 'IT WAS NULL!' end; select * from anothertab; alter table anothertab alter column atcol1 type boolean using case when atcol1 % 2 = 0 then true else false end; -- fails alter table anothertab alter column atcol1 drop default; alter table anothertab alter column atcol1 type boolean using case when atcol1 % 2 = 0 then true else false end; -- fails alter table anothertab drop constraint anothertab_chk; alter table anothertab drop constraint anothertab_chk; -- fails alter table anothertab drop constraint IF EXISTS anothertab_chk; -- succeeds alter table anothertab alter column atcol1 type boolean using case when atcol1 % 2 = 0 then true else false end; select * from anothertab; drop table anothertab; -- Test index handling in alter table column type (cf. bugs #15835, #15865) create table anothertab(f1 int primary key, f2 int unique, f3 int, f4 int, f5 int); alter table anothertab add exclude using btree (f3 with =); alter table anothertab add exclude using btree (f4 with =) where (f4 is not null); alter table anothertab add exclude using btree (f4 with =) where (f5 > 0); alter table anothertab add unique(f1,f4); create index on anothertab(f2,f3); create unique index on anothertab(f4); \d anothertab alter table anothertab alter column f1 type bigint; alter table anothertab alter column f2 type bigint, alter column f3 type bigint, alter column f4 type bigint; alter table anothertab alter column f5 type bigint; \d anothertab drop table anothertab; -- test that USING expressions are parsed before column alter type / drop steps create table another (f1 int, f2 text, f3 text); insert into another values(1, 'one', 'uno'); insert into another values(2, 'two', 'due'); insert into another values(3, 'three', 'tre'); select * from another; alter table another alter f1 type text using f2 || ' and ' || f3 || ' more', alter f2 type bigint using f1 * 10, drop column f3; select * from another; drop table another; -- Create an index that skips WAL, then perform a SET DATA TYPE that skips -- rewriting the index. begin; create table skip_wal_skip_rewrite_index (c varchar(10) primary key); alter table skip_wal_skip_rewrite_index alter c type varchar(20); commit; -- table's row type create table tab1 (a int, b text); create table tab2 (x int, y tab1); alter table tab1 alter column b type varchar; -- fails -- Alter column type that's part of a partitioned index create table at_partitioned (a int, b text) partition by range (a); create table at_part_1 partition of at_partitioned for values from (0) to (1000); insert into at_partitioned values (512, '0.123'); create table at_part_2 (b text, a int); insert into at_part_2 values ('1.234', 1024); create index on at_partitioned (b); create index on at_partitioned (a); \d at_part_1 \d at_part_2 alter table at_partitioned attach partition at_part_2 for values from (1000) to (2000); \d at_part_2 alter table at_partitioned alter column b type numeric using b::numeric; \d at_part_1 \d at_part_2 drop table at_partitioned; -- Alter column type when no table rewrite is required -- Also check that comments are preserved create table at_partitioned(id int, name varchar(64), unique (id, name)) partition by hash(id); comment on constraint at_partitioned_id_name_key on at_partitioned is 'parent constraint'; comment on index at_partitioned_id_name_key is 'parent index'; create table at_partitioned_0 partition of at_partitioned for values with (modulus 2, remainder 0); comment on constraint at_partitioned_0_id_name_key on at_partitioned_0 is 'child 0 constraint'; comment on index at_partitioned_0_id_name_key is 'child 0 index'; create table at_partitioned_1 partition of at_partitioned for values with (modulus 2, remainder 1); comment on constraint at_partitioned_1_id_name_key on at_partitioned_1 is 'child 1 constraint'; comment on index at_partitioned_1_id_name_key is 'child 1 index'; insert into at_partitioned values(1, 'foo'); insert into at_partitioned values(3, 'bar'); create temp table old_oids as select relname, oid as oldoid, relfilenode as oldfilenode from pg_class where relname like 'at_partitioned%'; select relname, c.oid = oldoid as orig_oid, case relfilenode when 0 then 'none' when c.oid then 'own' when oldfilenode then 'orig' else 'OTHER' end as storage, obj_description(c.oid, 'pg_class') as desc from pg_class c left join old_oids using (relname) where relname like 'at_partitioned%' order by relname; select conname, obj_description(oid, 'pg_constraint') as desc from pg_constraint where conname like 'at_partitioned%' order by conname; alter table at_partitioned alter column name type varchar(127); -- Note: these tests currently show the wrong behavior for comments :-( select relname, c.oid = oldoid as orig_oid, case relfilenode when 0 then 'none' when c.oid then 'own' when oldfilenode then 'orig' else 'OTHER' end as storage, obj_description(c.oid, 'pg_class') as desc from pg_class c left join old_oids using (relname) where relname like 'at_partitioned%' order by relname; select conname, obj_description(oid, 'pg_constraint') as desc from pg_constraint where conname like 'at_partitioned%' order by conname; -- Don't remove this DROP, it exposes bug #15672 drop table at_partitioned; -- disallow recursive containment of row types create temp table recur1 (f1 int); alter table recur1 add column f2 recur1; -- fails alter table recur1 add column f2 recur1[]; -- fails create domain array_of_recur1 as recur1[]; alter table recur1 add column f2 array_of_recur1; -- fails create temp table recur2 (f1 int, f2 recur1); alter table recur1 add column f2 recur2; -- fails alter table recur1 add column f2 int; alter table recur1 alter column f2 type recur2; -- fails -- SET STORAGE may need to add a TOAST table create table test_storage (a text); alter table test_storage alter a set storage plain; alter table test_storage add b int default 0; -- rewrite table to remove its TOAST table alter table test_storage alter a set storage extended; -- re-add TOAST table select reltoastrelid <> 0 as has_toast_table from pg_class where oid = 'test_storage'::regclass; -- test that SET STORAGE propagates to index correctly create index test_storage_idx on test_storage (b, a); alter table test_storage alter column a set storage external; \d+ test_storage \d+ test_storage_idx -- ALTER COLUMN TYPE with a check constraint and a child table (bug #13779) CREATE TABLE test_inh_check (a float check (a > 10.2), b float); CREATE TABLE test_inh_check_child() INHERITS(test_inh_check); \d test_inh_check \d test_inh_check_child select relname, conname, coninhcount, conislocal, connoinherit from pg_constraint c, pg_class r where relname like 'test_inh_check%' and c.conrelid = r.oid order by 1, 2; ALTER TABLE test_inh_check ALTER COLUMN a TYPE numeric; \d test_inh_check \d test_inh_check_child select relname, conname, coninhcount, conislocal, connoinherit from pg_constraint c, pg_class r where relname like 'test_inh_check%' and c.conrelid = r.oid order by 1, 2; -- also try noinherit, local, and local+inherited cases ALTER TABLE test_inh_check ADD CONSTRAINT bnoinherit CHECK (b > 100) NO INHERIT; ALTER TABLE test_inh_check_child ADD CONSTRAINT blocal CHECK (b < 1000); ALTER TABLE test_inh_check_child ADD CONSTRAINT bmerged CHECK (b > 1); ALTER TABLE test_inh_check ADD CONSTRAINT bmerged CHECK (b > 1); \d test_inh_check \d test_inh_check_child select relname, conname, coninhcount, conislocal, connoinherit from pg_constraint c, pg_class r where relname like 'test_inh_check%' and c.conrelid = r.oid order by 1, 2; ALTER TABLE test_inh_check ALTER COLUMN b TYPE numeric; \d test_inh_check \d test_inh_check_child select relname, conname, coninhcount, conislocal, connoinherit from pg_constraint c, pg_class r where relname like 'test_inh_check%' and c.conrelid = r.oid order by 1, 2; -- ALTER COLUMN TYPE with different schema in children -- Bug at https://postgr.es/m/20170102225618.GA10071@telsasoft.com CREATE TABLE test_type_diff (f1 int); CREATE TABLE test_type_diff_c (extra smallint) INHERITS (test_type_diff); ALTER TABLE test_type_diff ADD COLUMN f2 int; INSERT INTO test_type_diff_c VALUES (1, 2, 3); ALTER TABLE test_type_diff ALTER COLUMN f2 TYPE bigint USING f2::bigint; CREATE TABLE test_type_diff2 (int_two int2, int_four int4, int_eight int8); CREATE TABLE test_type_diff2_c1 (int_four int4, int_eight int8, int_two int2); CREATE TABLE test_type_diff2_c2 (int_eight int8, int_two int2, int_four int4); CREATE TABLE test_type_diff2_c3 (int_two int2, int_four int4, int_eight int8); ALTER TABLE test_type_diff2_c1 INHERIT test_type_diff2; ALTER TABLE test_type_diff2_c2 INHERIT test_type_diff2; ALTER TABLE test_type_diff2_c3 INHERIT test_type_diff2; INSERT INTO test_type_diff2_c1 VALUES (1, 2, 3); INSERT INTO test_type_diff2_c2 VALUES (4, 5, 6); INSERT INTO test_type_diff2_c3 VALUES (7, 8, 9); ALTER TABLE test_type_diff2 ALTER COLUMN int_four TYPE int8 USING int_four::int8; -- whole-row references are disallowed ALTER TABLE test_type_diff2 ALTER COLUMN int_four TYPE int4 USING (pg_column_size(test_type_diff2)); -- check for rollback of ANALYZE corrupting table property flags (bug #11638) CREATE TABLE check_fk_presence_1 (id int PRIMARY KEY, t text); CREATE TABLE check_fk_presence_2 (id int REFERENCES check_fk_presence_1, t text); BEGIN; ALTER TABLE check_fk_presence_2 DROP CONSTRAINT check_fk_presence_2_id_fkey; ANALYZE check_fk_presence_2; ROLLBACK; \d check_fk_presence_2 DROP TABLE check_fk_presence_1, check_fk_presence_2; -- check column addition within a view (bug #14876) create table at_base_table(id int, stuff text); insert into at_base_table values (23, 'skidoo'); create view at_view_1 as select * from at_base_table bt; create view at_view_2 as select *, to_json(v1) as j from at_view_1 v1; \d+ at_view_1 \d+ at_view_2 explain (verbose, costs off) select * from at_view_2; select * from at_view_2; create or replace view at_view_1 as select *, 2+2 as more from at_base_table bt; \d+ at_view_1 \d+ at_view_2 explain (verbose, costs off) select * from at_view_2; select * from at_view_2; drop view at_view_2; drop view at_view_1; drop table at_base_table; -- check adding a column not iself requiring a rewrite, together with -- a column requiring a default (bug #16038) -- ensure that rewrites aren't silently optimized away, removing the -- value of the test CREATE FUNCTION check_ddl_rewrite(p_tablename regclass, p_ddl text) RETURNS boolean LANGUAGE plpgsql AS $$ DECLARE v_relfilenode oid; BEGIN v_relfilenode := relfilenode FROM pg_class WHERE oid = p_tablename; EXECUTE p_ddl; RETURN v_relfilenode <> (SELECT relfilenode FROM pg_class WHERE oid = p_tablename); END; $$; CREATE TABLE rewrite_test(col text); INSERT INTO rewrite_test VALUES ('something'); INSERT INTO rewrite_test VALUES (NULL); -- empty[12] don't need rewrite, but notempty[12]_rewrite will force one SELECT check_ddl_rewrite('rewrite_test', $$ ALTER TABLE rewrite_test ADD COLUMN empty1 text, ADD COLUMN notempty1_rewrite serial; $$); SELECT check_ddl_rewrite('rewrite_test', $$ ALTER TABLE rewrite_test ADD COLUMN notempty2_rewrite serial, ADD COLUMN empty2 text; $$); -- also check that fast defaults cause no problem, first without rewrite SELECT check_ddl_rewrite('rewrite_test', $$ ALTER TABLE rewrite_test ADD COLUMN empty3 text, ADD COLUMN notempty3_norewrite int default 42; $$); SELECT check_ddl_rewrite('rewrite_test', $$ ALTER TABLE rewrite_test ADD COLUMN notempty4_norewrite int default 42, ADD COLUMN empty4 text; $$); -- then with rewrite SELECT check_ddl_rewrite('rewrite_test', $$ ALTER TABLE rewrite_test ADD COLUMN empty5 text, ADD COLUMN notempty5_norewrite int default 42, ADD COLUMN notempty5_rewrite serial; $$); SELECT check_ddl_rewrite('rewrite_test', $$ ALTER TABLE rewrite_test ADD COLUMN notempty6_rewrite serial, ADD COLUMN empty6 text, ADD COLUMN notempty6_norewrite int default 42; $$); -- cleanup DROP FUNCTION check_ddl_rewrite(regclass, text); DROP TABLE rewrite_test; -- -- lock levels -- drop type lockmodes; create type lockmodes as enum ( 'SIReadLock' ,'AccessShareLock' ,'RowShareLock' ,'RowExclusiveLock' ,'ShareUpdateExclusiveLock' ,'ShareLock' ,'ShareRowExclusiveLock' ,'ExclusiveLock' ,'AccessExclusiveLock' ); drop view my_locks; create or replace view my_locks as select case when c.relname like 'pg_toast%' then 'pg_toast' else c.relname end, max(mode::lockmodes) as max_lockmode from pg_locks l join pg_class c on l.relation = c.oid where virtualtransaction = ( select virtualtransaction from pg_locks where transactionid = pg_current_xact_id()::xid) and locktype = 'relation' and relnamespace != (select oid from pg_namespace where nspname = 'pg_catalog') and c.relname != 'my_locks' group by c.relname; create table alterlock (f1 int primary key, f2 text); insert into alterlock values (1, 'foo'); create table alterlock2 (f3 int primary key, f1 int); insert into alterlock2 values (1, 1); begin; alter table alterlock alter column f2 set statistics 150; select * from my_locks order by 1; rollback; begin; alter table alterlock cluster on alterlock_pkey; select * from my_locks order by 1; commit; begin; alter table alterlock set without cluster; select * from my_locks order by 1; commit; begin; alter table alterlock set (fillfactor = 100); select * from my_locks order by 1; commit; begin; alter table alterlock reset (fillfactor); select * from my_locks order by 1; commit; begin; alter table alterlock set (toast.autovacuum_enabled = off); select * from my_locks order by 1; commit; begin; alter table alterlock set (autovacuum_enabled = off); select * from my_locks order by 1; commit; begin; alter table alterlock alter column f2 set (n_distinct = 1); select * from my_locks order by 1; rollback; -- test that mixing options with different lock levels works as expected begin; alter table alterlock set (autovacuum_enabled = off, fillfactor = 80); select * from my_locks order by 1; commit; begin; alter table alterlock alter column f2 set storage extended; select * from my_locks order by 1; rollback; begin; alter table alterlock alter column f2 set default 'x'; select * from my_locks order by 1; rollback; begin; create trigger ttdummy before delete or update on alterlock for each row execute procedure ttdummy (1, 1); select * from my_locks order by 1; rollback; begin; select * from my_locks order by 1; alter table alterlock2 add foreign key (f1) references alterlock (f1); select * from my_locks order by 1; rollback; begin; alter table alterlock2 add constraint alterlock2nv foreign key (f1) references alterlock (f1) NOT VALID; select * from my_locks order by 1; commit; begin; alter table alterlock2 validate constraint alterlock2nv; select * from my_locks order by 1; rollback; create or replace view my_locks as select case when c.relname like 'pg_toast%' then 'pg_toast' else c.relname end, max(mode::lockmodes) as max_lockmode from pg_locks l join pg_class c on l.relation = c.oid where virtualtransaction = ( select virtualtransaction from pg_locks where transactionid = pg_current_xact_id()::xid) and locktype = 'relation' and relnamespace != (select oid from pg_namespace where nspname = 'pg_catalog') and c.relname = 'my_locks' group by c.relname; -- raise exception alter table my_locks set (autovacuum_enabled = false); alter view my_locks set (autovacuum_enabled = false); alter table my_locks reset (autovacuum_enabled); alter view my_locks reset (autovacuum_enabled); begin; alter view my_locks set (security_barrier=off); select * from my_locks order by 1; alter view my_locks reset (security_barrier); rollback; -- this test intentionally applies the ALTER TABLE command against a view, but -- uses a view option so we expect this to succeed. This form of SQL is -- accepted for historical reasons, as shown in the docs for ALTER VIEW begin; alter table my_locks set (security_barrier=off); select * from my_locks order by 1; alter table my_locks reset (security_barrier); rollback; -- cleanup drop table alterlock2; drop table alterlock; drop view my_locks; drop type lockmodes; -- -- alter function -- create function test_strict(text) returns text as 'select coalesce($1, ''got passed a null'');' language sql returns null on null input; select test_strict(NULL); alter function test_strict(text) called on null input; select test_strict(NULL); create function non_strict(text) returns text as 'select coalesce($1, ''got passed a null'');' language sql called on null input; select non_strict(NULL); alter function non_strict(text) returns null on null input; select non_strict(NULL); -- -- alter object set schema -- create schema alter1; create schema alter2; create table alter1.t1(f1 serial primary key, f2 int check (f2 > 0)); create view alter1.v1 as select * from alter1.t1; create function alter1.plus1(int) returns int as 'select $1+1' language sql; create domain alter1.posint integer check (value > 0); create type alter1.ctype as (f1 int, f2 text); create function alter1.same(alter1.ctype, alter1.ctype) returns boolean language sql as 'select $1.f1 is not distinct from $2.f1 and $1.f2 is not distinct from $2.f2'; create operator alter1.=(procedure = alter1.same, leftarg = alter1.ctype, rightarg = alter1.ctype); create operator class alter1.ctype_hash_ops default for type alter1.ctype using hash as operator 1 alter1.=(alter1.ctype, alter1.ctype); create conversion alter1.latin1_to_utf8 for 'latin1' to 'utf8' from iso8859_1_to_utf8; create text search parser alter1.prs(start = prsd_start, gettoken = prsd_nexttoken, end = prsd_end, lextypes = prsd_lextype); create text search configuration alter1.cfg(parser = alter1.prs); create text search template alter1.tmpl(init = dsimple_init, lexize = dsimple_lexize); create text search dictionary alter1.dict(template = alter1.tmpl); insert into alter1.t1(f2) values(11); insert into alter1.t1(f2) values(12); alter table alter1.t1 set schema alter1; -- no-op, same schema alter table alter1.t1 set schema alter2; alter table alter1.v1 set schema alter2; alter function alter1.plus1(int) set schema alter2; alter domain alter1.posint set schema alter2; alter operator class alter1.ctype_hash_ops using hash set schema alter2; alter operator family alter1.ctype_hash_ops using hash set schema alter2; alter operator alter1.=(alter1.ctype, alter1.ctype) set schema alter2; alter function alter1.same(alter1.ctype, alter1.ctype) set schema alter2; alter type alter1.ctype set schema alter1; -- no-op, same schema alter type alter1.ctype set schema alter2; alter conversion alter1.latin1_to_utf8 set schema alter2; alter text search parser alter1.prs set schema alter2; alter text search configuration alter1.cfg set schema alter2; alter text search template alter1.tmpl set schema alter2; alter text search dictionary alter1.dict set schema alter2; -- this should succeed because nothing is left in alter1 drop schema alter1; insert into alter2.t1(f2) values(13); insert into alter2.t1(f2) values(14); select * from alter2.t1; select * from alter2.v1; select alter2.plus1(41); -- clean up drop schema alter2 cascade; -- -- composite types -- CREATE TYPE test_type AS (a int); \d test_type ALTER TYPE nosuchtype ADD ATTRIBUTE b text; -- fails ALTER TYPE test_type ADD ATTRIBUTE b text; \d test_type ALTER TYPE test_type ADD ATTRIBUTE b text; -- fails ALTER TYPE test_type ALTER ATTRIBUTE b SET DATA TYPE varchar; \d test_type ALTER TYPE test_type ALTER ATTRIBUTE b SET DATA TYPE integer; \d test_type ALTER TYPE test_type DROP ATTRIBUTE b; \d test_type ALTER TYPE test_type DROP ATTRIBUTE c; -- fails ALTER TYPE test_type DROP ATTRIBUTE IF EXISTS c; ALTER TYPE test_type DROP ATTRIBUTE a, ADD ATTRIBUTE d boolean; \d test_type ALTER TYPE test_type RENAME ATTRIBUTE a TO aa; ALTER TYPE test_type RENAME ATTRIBUTE d TO dd; \d test_type DROP TYPE test_type; CREATE TYPE test_type1 AS (a int, b text); CREATE TABLE test_tbl1 (x int, y test_type1); ALTER TYPE test_type1 ALTER ATTRIBUTE b TYPE varchar; -- fails CREATE TYPE test_type2 AS (a int, b text); CREATE TABLE test_tbl2 OF test_type2; CREATE TABLE test_tbl2_subclass () INHERITS (test_tbl2); \d test_type2 \d test_tbl2 ALTER TYPE test_type2 ADD ATTRIBUTE c text; -- fails ALTER TYPE test_type2 ADD ATTRIBUTE c text CASCADE; \d test_type2 \d test_tbl2 ALTER TYPE test_type2 ALTER ATTRIBUTE b TYPE varchar; -- fails ALTER TYPE test_type2 ALTER ATTRIBUTE b TYPE varchar CASCADE; \d test_type2 \d test_tbl2 ALTER TYPE test_type2 DROP ATTRIBUTE b; -- fails ALTER TYPE test_type2 DROP ATTRIBUTE b CASCADE; \d test_type2 \d test_tbl2 ALTER TYPE test_type2 RENAME ATTRIBUTE a TO aa; -- fails ALTER TYPE test_type2 RENAME ATTRIBUTE a TO aa CASCADE; \d test_type2 \d test_tbl2 \d test_tbl2_subclass DROP TABLE test_tbl2_subclass; CREATE TYPE test_typex AS (a int, b text); CREATE TABLE test_tblx (x int, y test_typex check ((y).a > 0)); ALTER TYPE test_typex DROP ATTRIBUTE a; -- fails ALTER TYPE test_typex DROP ATTRIBUTE a CASCADE; \d test_tblx DROP TABLE test_tblx; DROP TYPE test_typex; -- This test isn't that interesting on its own, but the purpose is to leave -- behind a table to test pg_upgrade with. The table has a composite type -- column in it, and the composite type has a dropped attribute. CREATE TYPE test_type3 AS (a int); CREATE TABLE test_tbl3 (c) AS SELECT '(1)'::test_type3; ALTER TYPE test_type3 DROP ATTRIBUTE a, ADD ATTRIBUTE b int; CREATE TYPE test_type_empty AS (); DROP TYPE test_type_empty; -- -- typed tables: OF / NOT OF -- CREATE TYPE tt_t0 AS (z inet, x int, y numeric(8,2)); ALTER TYPE tt_t0 DROP ATTRIBUTE z; CREATE TABLE tt0 (x int NOT NULL, y numeric(8,2)); -- OK CREATE TABLE tt1 (x int, y bigint); -- wrong base type CREATE TABLE tt2 (x int, y numeric(9,2)); -- wrong typmod CREATE TABLE tt3 (y numeric(8,2), x int); -- wrong column order CREATE TABLE tt4 (x int); -- too few columns CREATE TABLE tt5 (x int, y numeric(8,2), z int); -- too few columns CREATE TABLE tt6 () INHERITS (tt0); -- can't have a parent CREATE TABLE tt7 (x int, q text, y numeric(8,2)); ALTER TABLE tt7 DROP q; -- OK ALTER TABLE tt0 OF tt_t0; ALTER TABLE tt1 OF tt_t0; ALTER TABLE tt2 OF tt_t0; ALTER TABLE tt3 OF tt_t0; ALTER TABLE tt4 OF tt_t0; ALTER TABLE tt5 OF tt_t0; ALTER TABLE tt6 OF tt_t0; ALTER TABLE tt7 OF tt_t0; CREATE TYPE tt_t1 AS (x int, y numeric(8,2)); ALTER TABLE tt7 OF tt_t1; -- reassign an already-typed table ALTER TABLE tt7 NOT OF; \d tt7 -- make sure we can drop a constraint on the parent but it remains on the child CREATE TABLE test_drop_constr_parent (c text CHECK (c IS NOT NULL)); CREATE TABLE test_drop_constr_child () INHERITS (test_drop_constr_parent); ALTER TABLE ONLY test_drop_constr_parent DROP CONSTRAINT "test_drop_constr_parent_c_check"; -- should fail INSERT INTO test_drop_constr_child (c) VALUES (NULL); DROP TABLE test_drop_constr_parent CASCADE; -- -- IF EXISTS test -- ALTER TABLE IF EXISTS tt8 ADD COLUMN f int; ALTER TABLE IF EXISTS tt8 ADD CONSTRAINT xxx PRIMARY KEY(f); ALTER TABLE IF EXISTS tt8 ADD CHECK (f BETWEEN 0 AND 10); ALTER TABLE IF EXISTS tt8 ALTER COLUMN f SET DEFAULT 0; ALTER TABLE IF EXISTS tt8 RENAME COLUMN f TO f1; ALTER TABLE IF EXISTS tt8 SET SCHEMA alter2; CREATE TABLE tt8(a int); CREATE SCHEMA alter2; ALTER TABLE IF EXISTS tt8 ADD COLUMN f int; ALTER TABLE IF EXISTS tt8 ADD CONSTRAINT xxx PRIMARY KEY(f); ALTER TABLE IF EXISTS tt8 ADD CHECK (f BETWEEN 0 AND 10); ALTER TABLE IF EXISTS tt8 ALTER COLUMN f SET DEFAULT 0; ALTER TABLE IF EXISTS tt8 RENAME COLUMN f TO f1; ALTER TABLE IF EXISTS tt8 SET SCHEMA alter2; \d alter2.tt8 DROP TABLE alter2.tt8; DROP SCHEMA alter2; -- -- Check conflicts between index and CHECK constraint names -- CREATE TABLE tt9(c integer); ALTER TABLE tt9 ADD CHECK(c > 1); ALTER TABLE tt9 ADD CHECK(c > 2); -- picks nonconflicting name ALTER TABLE tt9 ADD CONSTRAINT foo CHECK(c > 3); ALTER TABLE tt9 ADD CONSTRAINT foo CHECK(c > 4); -- fail, dup name ALTER TABLE tt9 ADD UNIQUE(c); ALTER TABLE tt9 ADD UNIQUE(c); -- picks nonconflicting name ALTER TABLE tt9 ADD CONSTRAINT tt9_c_key UNIQUE(c); -- fail, dup name ALTER TABLE tt9 ADD CONSTRAINT foo UNIQUE(c); -- fail, dup name ALTER TABLE tt9 ADD CONSTRAINT tt9_c_key CHECK(c > 5); -- fail, dup name ALTER TABLE tt9 ADD CONSTRAINT tt9_c_key2 CHECK(c > 6); ALTER TABLE tt9 ADD UNIQUE(c); -- picks nonconflicting name \d tt9 DROP TABLE tt9; -- Check that comments on constraints and indexes are not lost at ALTER TABLE. CREATE TABLE comment_test ( id int, positive_col int CHECK (positive_col > 0), indexed_col int, CONSTRAINT comment_test_pk PRIMARY KEY (id)); CREATE INDEX comment_test_index ON comment_test(indexed_col); COMMENT ON COLUMN comment_test.id IS 'Column ''id'' on comment_test'; COMMENT ON INDEX comment_test_index IS 'Simple index on comment_test'; COMMENT ON CONSTRAINT comment_test_positive_col_check ON comment_test IS 'CHECK constraint on comment_test.positive_col'; COMMENT ON CONSTRAINT comment_test_pk ON comment_test IS 'PRIMARY KEY constraint of comment_test'; COMMENT ON INDEX comment_test_pk IS 'Index backing the PRIMARY KEY of comment_test'; SELECT col_description('comment_test'::regclass, 1) as comment; SELECT indexrelid::regclass::text as index, obj_description(indexrelid, 'pg_class') as comment FROM pg_index where indrelid = 'comment_test'::regclass ORDER BY 1, 2; SELECT conname as constraint, obj_description(oid, 'pg_constraint') as comment FROM pg_constraint where conrelid = 'comment_test'::regclass ORDER BY 1, 2; -- Change the datatype of all the columns. ALTER TABLE is optimized to not -- rebuild an index if the new data type is binary compatible with the old -- one. Check do a dummy ALTER TABLE that doesn't change the datatype -- first, to test that no-op codepath, and another one that does. ALTER TABLE comment_test ALTER COLUMN indexed_col SET DATA TYPE int; ALTER TABLE comment_test ALTER COLUMN indexed_col SET DATA TYPE text; ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE int; ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE text; ALTER TABLE comment_test ALTER COLUMN positive_col SET DATA TYPE int; ALTER TABLE comment_test ALTER COLUMN positive_col SET DATA TYPE bigint; -- Check that the comments are intact. SELECT col_description('comment_test'::regclass, 1) as comment; SELECT indexrelid::regclass::text as index, obj_description(indexrelid, 'pg_class') as comment FROM pg_index where indrelid = 'comment_test'::regclass ORDER BY 1, 2; SELECT conname as constraint, obj_description(oid, 'pg_constraint') as comment FROM pg_constraint where conrelid = 'comment_test'::regclass ORDER BY 1, 2; -- Check compatibility for foreign keys and comments. This is done -- separately as rebuilding the column type of the parent leads -- to an error and would reduce the test scope. CREATE TABLE comment_test_child ( id text CONSTRAINT comment_test_child_fk REFERENCES comment_test); CREATE INDEX comment_test_child_fk ON comment_test_child(id); COMMENT ON COLUMN comment_test_child.id IS 'Column ''id'' on comment_test_child'; COMMENT ON INDEX comment_test_child_fk IS 'Index backing the FOREIGN KEY of comment_test_child'; COMMENT ON CONSTRAINT comment_test_child_fk ON comment_test_child IS 'FOREIGN KEY constraint of comment_test_child'; -- Change column type of parent ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE text; ALTER TABLE comment_test ALTER COLUMN id SET DATA TYPE int USING id::integer; -- Comments should be intact SELECT col_description('comment_test_child'::regclass, 1) as comment; SELECT indexrelid::regclass::text as index, obj_description(indexrelid, 'pg_class') as comment FROM pg_index where indrelid = 'comment_test_child'::regclass ORDER BY 1, 2; SELECT conname as constraint, obj_description(oid, 'pg_constraint') as comment FROM pg_constraint where conrelid = 'comment_test_child'::regclass ORDER BY 1, 2; -- Check that we map relation oids to filenodes and back correctly. Only -- display bad mappings so the test output doesn't change all the time. A -- filenode function call can return NULL for a relation dropped concurrently -- with the call's surrounding query, so ignore a NULL mapped_oid for -- relations that no longer exist after all calls finish. CREATE TEMP TABLE filenode_mapping AS SELECT oid, mapped_oid, reltablespace, relfilenode, relname FROM pg_class, pg_filenode_relation(reltablespace, pg_relation_filenode(oid)) AS mapped_oid WHERE relkind IN ('r', 'i', 'S', 't', 'm') AND mapped_oid IS DISTINCT FROM oid; SELECT m.* FROM filenode_mapping m LEFT JOIN pg_class c ON c.oid = m.oid WHERE c.oid IS NOT NULL OR m.mapped_oid IS NOT NULL; -- Checks on creating and manipulation of user defined relations in -- pg_catalog. SHOW allow_system_table_mods; -- disallowed because of search_path issues with pg_dump CREATE TABLE pg_catalog.new_system_table(); -- instead create in public first, move to catalog CREATE TABLE new_system_table(id serial primary key, othercol text); ALTER TABLE new_system_table SET SCHEMA pg_catalog; ALTER TABLE new_system_table SET SCHEMA public; ALTER TABLE new_system_table SET SCHEMA pg_catalog; -- will be ignored -- already there: ALTER TABLE new_system_table SET SCHEMA pg_catalog; ALTER TABLE new_system_table RENAME TO old_system_table; CREATE INDEX old_system_table__othercol ON old_system_table (othercol); INSERT INTO old_system_table(othercol) VALUES ('somedata'), ('otherdata'); UPDATE old_system_table SET id = -id; DELETE FROM old_system_table WHERE othercol = 'somedata'; TRUNCATE old_system_table; ALTER TABLE old_system_table DROP CONSTRAINT new_system_table_pkey; ALTER TABLE old_system_table DROP COLUMN othercol; DROP TABLE old_system_table; -- set logged CREATE UNLOGGED TABLE unlogged1(f1 SERIAL PRIMARY KEY, f2 TEXT); -- check relpersistence of an unlogged table SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^unlogged1' UNION ALL SELECT 'toast table', t.relkind, t.relpersistence FROM pg_class r JOIN pg_class t ON t.oid = r.reltoastrelid WHERE r.relname ~ '^unlogged1' UNION ALL SELECT 'toast index', ri.relkind, ri.relpersistence FROM pg_class r join pg_class t ON t.oid = r.reltoastrelid JOIN pg_index i ON i.indrelid = t.oid JOIN pg_class ri ON ri.oid = i.indexrelid WHERE r.relname ~ '^unlogged1' ORDER BY relname; CREATE UNLOGGED TABLE unlogged2(f1 SERIAL PRIMARY KEY, f2 INTEGER REFERENCES unlogged1); -- foreign key CREATE UNLOGGED TABLE unlogged3(f1 SERIAL PRIMARY KEY, f2 INTEGER REFERENCES unlogged3); -- self-referencing foreign key ALTER TABLE unlogged3 SET LOGGED; -- skip self-referencing foreign key ALTER TABLE unlogged2 SET LOGGED; -- fails because a foreign key to an unlogged table exists ALTER TABLE unlogged1 SET LOGGED; -- check relpersistence of an unlogged table after changing to permanent SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^unlogged1' UNION ALL SELECT 'toast table', t.relkind, t.relpersistence FROM pg_class r JOIN pg_class t ON t.oid = r.reltoastrelid WHERE r.relname ~ '^unlogged1' UNION ALL SELECT 'toast index', ri.relkind, ri.relpersistence FROM pg_class r join pg_class t ON t.oid = r.reltoastrelid JOIN pg_index i ON i.indrelid = t.oid JOIN pg_class ri ON ri.oid = i.indexrelid WHERE r.relname ~ '^unlogged1' ORDER BY relname; ALTER TABLE unlogged1 SET LOGGED; -- silently do nothing DROP TABLE unlogged3; DROP TABLE unlogged2; DROP TABLE unlogged1; -- set unlogged CREATE TABLE logged1(f1 SERIAL PRIMARY KEY, f2 TEXT); -- check relpersistence of a permanent table SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^logged1' UNION ALL SELECT 'toast table', t.relkind, t.relpersistence FROM pg_class r JOIN pg_class t ON t.oid = r.reltoastrelid WHERE r.relname ~ '^logged1' UNION ALL SELECT 'toast index', ri.relkind, ri.relpersistence FROM pg_class r join pg_class t ON t.oid = r.reltoastrelid JOIN pg_index i ON i.indrelid = t.oid JOIN pg_class ri ON ri.oid = i.indexrelid WHERE r.relname ~ '^logged1' ORDER BY relname; CREATE TABLE logged2(f1 SERIAL PRIMARY KEY, f2 INTEGER REFERENCES logged1); -- foreign key CREATE TABLE logged3(f1 SERIAL PRIMARY KEY, f2 INTEGER REFERENCES logged3); -- self-referencing foreign key ALTER TABLE logged1 SET UNLOGGED; -- fails because a foreign key from a permanent table exists ALTER TABLE logged3 SET UNLOGGED; -- skip self-referencing foreign key ALTER TABLE logged2 SET UNLOGGED; ALTER TABLE logged1 SET UNLOGGED; -- check relpersistence of a permanent table after changing to unlogged SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^logged1' UNION ALL SELECT 'toast table', t.relkind, t.relpersistence FROM pg_class r JOIN pg_class t ON t.oid = r.reltoastrelid WHERE r.relname ~ '^logged1' UNION ALL SELECT 'toast index', ri.relkind, ri.relpersistence FROM pg_class r join pg_class t ON t.oid = r.reltoastrelid JOIN pg_index i ON i.indrelid = t.oid JOIN pg_class ri ON ri.oid = i.indexrelid WHERE r.relname ~ '^logged1' ORDER BY relname; ALTER TABLE logged1 SET UNLOGGED; -- silently do nothing DROP TABLE logged3; DROP TABLE logged2; DROP TABLE logged1; -- test ADD COLUMN IF NOT EXISTS CREATE TABLE test_add_column(c1 integer); \d test_add_column ALTER TABLE test_add_column ADD COLUMN c2 integer; \d test_add_column ALTER TABLE test_add_column ADD COLUMN c2 integer; -- fail because c2 already exists ALTER TABLE ONLY test_add_column ADD COLUMN c2 integer; -- fail because c2 already exists \d test_add_column ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists ALTER TABLE ONLY test_add_column ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists \d test_add_column ALTER TABLE test_add_column ADD COLUMN c2 integer, -- fail because c2 already exists ADD COLUMN c3 integer primary key; \d test_add_column ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c2 integer, -- skipping because c2 already exists ADD COLUMN c3 integer primary key; \d test_add_column ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c2 integer, -- skipping because c2 already exists ADD COLUMN IF NOT EXISTS c3 integer primary key; -- skipping because c3 already exists \d test_add_column ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c2 integer, -- skipping because c2 already exists ADD COLUMN IF NOT EXISTS c3 integer, -- skipping because c3 already exists ADD COLUMN c4 integer REFERENCES test_add_column; \d test_add_column ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c4 integer REFERENCES test_add_column; \d test_add_column ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c5 SERIAL CHECK (c5 > 8); \d test_add_column ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c5 SERIAL CHECK (c5 > 10); \d test_add_column* DROP TABLE test_add_column; \d test_add_column* -- assorted cases with multiple ALTER TABLE steps CREATE TABLE ataddindex(f1 INT); INSERT INTO ataddindex VALUES (42), (43); CREATE UNIQUE INDEX ataddindexi0 ON ataddindex(f1); ALTER TABLE ataddindex ADD PRIMARY KEY USING INDEX ataddindexi0, ALTER f1 TYPE BIGINT; \d ataddindex DROP TABLE ataddindex; CREATE TABLE ataddindex(f1 VARCHAR(10)); INSERT INTO ataddindex(f1) VALUES ('foo'), ('a'); ALTER TABLE ataddindex ALTER f1 SET DATA TYPE TEXT, ADD EXCLUDE ((f1 LIKE 'a') WITH =); \d ataddindex DROP TABLE ataddindex; CREATE TABLE ataddindex(id int, ref_id int); ALTER TABLE ataddindex ADD PRIMARY KEY (id), ADD FOREIGN KEY (ref_id) REFERENCES ataddindex; \d ataddindex DROP TABLE ataddindex; CREATE TABLE ataddindex(id int, ref_id int); ALTER TABLE ataddindex ADD UNIQUE (id), ADD FOREIGN KEY (ref_id) REFERENCES ataddindex (id); \d ataddindex DROP TABLE ataddindex; -- unsupported constraint types for partitioned tables CREATE TABLE partitioned ( a int, b int ) PARTITION BY RANGE (a, (a+b+1)); ALTER TABLE partitioned ADD EXCLUDE USING gist (a WITH &&); -- cannot drop column that is part of the partition key ALTER TABLE partitioned DROP COLUMN a; ALTER TABLE partitioned ALTER COLUMN a TYPE char(5); ALTER TABLE partitioned DROP COLUMN b; ALTER TABLE partitioned ALTER COLUMN b TYPE char(5); -- partitioned table cannot participate in regular inheritance CREATE TABLE nonpartitioned ( a int, b int ); ALTER TABLE partitioned INHERIT nonpartitioned; ALTER TABLE nonpartitioned INHERIT partitioned; -- cannot add NO INHERIT constraint to partitioned tables ALTER TABLE partitioned ADD CONSTRAINT chk_a CHECK (a > 0) NO INHERIT; DROP TABLE partitioned, nonpartitioned; -- -- ATTACH PARTITION -- -- check that target table is partitioned CREATE TABLE unparted ( a int ); CREATE TABLE fail_part (like unparted); ALTER TABLE unparted ATTACH PARTITION fail_part FOR VALUES IN ('a'); DROP TABLE unparted, fail_part; -- check that partition bound is compatible CREATE TABLE list_parted ( a int NOT NULL, b char(2) COLLATE "C", CONSTRAINT check_a CHECK (a > 0) ) PARTITION BY LIST (a); CREATE TABLE fail_part (LIKE list_parted); ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES FROM (1) TO (10); DROP TABLE fail_part; -- check that the table being attached exists ALTER TABLE list_parted ATTACH PARTITION nonexistent FOR VALUES IN (1); -- check ownership of the source table CREATE ROLE regress_test_me; CREATE ROLE regress_test_not_me; CREATE TABLE not_owned_by_me (LIKE list_parted); ALTER TABLE not_owned_by_me OWNER TO regress_test_not_me; SET SESSION AUTHORIZATION regress_test_me; CREATE TABLE owned_by_me ( a int ) PARTITION BY LIST (a); ALTER TABLE owned_by_me ATTACH PARTITION not_owned_by_me FOR VALUES IN (1); RESET SESSION AUTHORIZATION; DROP TABLE owned_by_me, not_owned_by_me; DROP ROLE regress_test_not_me; DROP ROLE regress_test_me; -- check that the table being attached is not part of regular inheritance CREATE TABLE parent (LIKE list_parted); CREATE TABLE child () INHERITS (parent); ALTER TABLE list_parted ATTACH PARTITION child FOR VALUES IN (1); ALTER TABLE list_parted ATTACH PARTITION parent FOR VALUES IN (1); DROP TABLE parent CASCADE; -- check any TEMP-ness CREATE TEMP TABLE temp_parted (a int) PARTITION BY LIST (a); CREATE TABLE perm_part (a int); ALTER TABLE temp_parted ATTACH PARTITION perm_part FOR VALUES IN (1); DROP TABLE temp_parted, perm_part; -- check that the table being attached is not a typed table CREATE TYPE mytype AS (a int); CREATE TABLE fail_part OF mytype; ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES IN (1); DROP TYPE mytype CASCADE; -- check that the table being attached has only columns present in the parent CREATE TABLE fail_part (like list_parted, c int); ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES IN (1); DROP TABLE fail_part; -- check that the table being attached has every column of the parent CREATE TABLE fail_part (a int NOT NULL); ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES IN (1); DROP TABLE fail_part; -- check that columns match in type, collation and NOT NULL status CREATE TABLE fail_part ( b char(3), a int NOT NULL ); ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES IN (1); ALTER TABLE fail_part ALTER b TYPE char (2) COLLATE "POSIX"; ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES IN (1); DROP TABLE fail_part; -- check that the table being attached has all constraints of the parent CREATE TABLE fail_part ( b char(2) COLLATE "C", a int NOT NULL ); ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES IN (1); -- check that the constraint matches in definition with parent's constraint ALTER TABLE fail_part ADD CONSTRAINT check_a CHECK (a >= 0); ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES IN (1); DROP TABLE fail_part; -- check the attributes and constraints after partition is attached CREATE TABLE part_1 ( a int NOT NULL, b char(2) COLLATE "C", CONSTRAINT check_a CHECK (a > 0) ); ALTER TABLE list_parted ATTACH PARTITION part_1 FOR VALUES IN (1); -- attislocal and conislocal are always false for merged attributes and constraints respectively. SELECT attislocal, attinhcount FROM pg_attribute WHERE attrelid = 'part_1'::regclass AND attnum > 0; SELECT conislocal, coninhcount FROM pg_constraint WHERE conrelid = 'part_1'::regclass AND conname = 'check_a'; -- check that the new partition won't overlap with an existing partition CREATE TABLE fail_part (LIKE part_1 INCLUDING CONSTRAINTS); ALTER TABLE list_parted ATTACH PARTITION fail_part FOR VALUES IN (1); DROP TABLE fail_part; -- check that an existing table can be attached as a default partition CREATE TABLE def_part (LIKE list_parted INCLUDING CONSTRAINTS); ALTER TABLE list_parted ATTACH PARTITION def_part DEFAULT; -- check attaching default partition fails if a default partition already -- exists CREATE TABLE fail_def_part (LIKE part_1 INCLUDING CONSTRAINTS); ALTER TABLE list_parted ATTACH PARTITION fail_def_part DEFAULT; -- check validation when attaching list partitions CREATE TABLE list_parted2 ( a int, b char ) PARTITION BY LIST (a); -- check that violating rows are correctly reported CREATE TABLE part_2 (LIKE list_parted2); INSERT INTO part_2 VALUES (3, 'a'); ALTER TABLE list_parted2 ATTACH PARTITION part_2 FOR VALUES IN (2); -- should be ok after deleting the bad row DELETE FROM part_2; ALTER TABLE list_parted2 ATTACH PARTITION part_2 FOR VALUES IN (2); -- check partition cannot be attached if default has some row for its values CREATE TABLE list_parted2_def PARTITION OF list_parted2 DEFAULT; INSERT INTO list_parted2_def VALUES (11, 'z'); CREATE TABLE part_3 (LIKE list_parted2); ALTER TABLE list_parted2 ATTACH PARTITION part_3 FOR VALUES IN (11); -- should be ok after deleting the bad row DELETE FROM list_parted2_def WHERE a = 11; ALTER TABLE list_parted2 ATTACH PARTITION part_3 FOR VALUES IN (11); -- adding constraints that describe the desired partition constraint -- (or more restrictive) will help skip the validation scan CREATE TABLE part_3_4 ( LIKE list_parted2, CONSTRAINT check_a CHECK (a IN (3)) ); -- however, if a list partition does not accept nulls, there should be -- an explicit NOT NULL constraint on the partition key column for the -- validation scan to be skipped; ALTER TABLE list_parted2 ATTACH PARTITION part_3_4 FOR VALUES IN (3, 4); -- adding a NOT NULL constraint will cause the scan to be skipped ALTER TABLE list_parted2 DETACH PARTITION part_3_4; ALTER TABLE part_3_4 ALTER a SET NOT NULL; ALTER TABLE list_parted2 ATTACH PARTITION part_3_4 FOR VALUES IN (3, 4); -- check if default partition scan skipped ALTER TABLE list_parted2_def ADD CONSTRAINT check_a CHECK (a IN (5, 6)); CREATE TABLE part_55_66 PARTITION OF list_parted2 FOR VALUES IN (55, 66); -- check validation when attaching range partitions CREATE TABLE range_parted ( a int, b int ) PARTITION BY RANGE (a, b); -- check that violating rows are correctly reported CREATE TABLE part1 ( a int NOT NULL CHECK (a = 1), b int NOT NULL CHECK (b >= 1 AND b <= 10) ); INSERT INTO part1 VALUES (1, 10); -- Remember the TO bound is exclusive ALTER TABLE range_parted ATTACH PARTITION part1 FOR VALUES FROM (1, 1) TO (1, 10); -- should be ok after deleting the bad row DELETE FROM part1; ALTER TABLE range_parted ATTACH PARTITION part1 FOR VALUES FROM (1, 1) TO (1, 10); -- adding constraints that describe the desired partition constraint -- (or more restrictive) will help skip the validation scan CREATE TABLE part2 ( a int NOT NULL CHECK (a = 1), b int NOT NULL CHECK (b >= 10 AND b < 18) ); ALTER TABLE range_parted ATTACH PARTITION part2 FOR VALUES FROM (1, 10) TO (1, 20); -- Create default partition CREATE TABLE partr_def1 PARTITION OF range_parted DEFAULT; -- Only one default partition is allowed, hence, following should give error CREATE TABLE partr_def2 (LIKE part1 INCLUDING CONSTRAINTS); ALTER TABLE range_parted ATTACH PARTITION partr_def2 DEFAULT; -- Overlapping partitions cannot be attached, hence, following should give error INSERT INTO partr_def1 VALUES (2, 10); CREATE TABLE part3 (LIKE range_parted); ALTER TABLE range_parted ATTACH partition part3 FOR VALUES FROM (2, 10) TO (2, 20); -- Attaching partitions should be successful when there are no overlapping rows ALTER TABLE range_parted ATTACH partition part3 FOR VALUES FROM (3, 10) TO (3, 20); -- check that leaf partitions are scanned when attaching a partitioned -- table CREATE TABLE part_5 ( LIKE list_parted2 ) PARTITION BY LIST (b); -- check that violating rows are correctly reported CREATE TABLE part_5_a PARTITION OF part_5 FOR VALUES IN ('a'); INSERT INTO part_5_a (a, b) VALUES (6, 'a'); ALTER TABLE list_parted2 ATTACH PARTITION part_5 FOR VALUES IN (5); -- delete the faulting row and also add a constraint to skip the scan DELETE FROM part_5_a WHERE a NOT IN (3); ALTER TABLE part_5 ADD CONSTRAINT check_a CHECK (a IS NOT NULL AND a = 5); ALTER TABLE list_parted2 ATTACH PARTITION part_5 FOR VALUES IN (5); ALTER TABLE list_parted2 DETACH PARTITION part_5; ALTER TABLE part_5 DROP CONSTRAINT check_a; -- scan should again be skipped, even though NOT NULL is now a column property ALTER TABLE part_5 ADD CONSTRAINT check_a CHECK (a IN (5)), ALTER a SET NOT NULL; ALTER TABLE list_parted2 ATTACH PARTITION part_5 FOR VALUES IN (5); -- Check the case where attnos of the partitioning columns in the table being -- attached differs from the parent. It should not affect the constraint- -- checking logic that allows to skip the scan. CREATE TABLE part_6 ( c int, LIKE list_parted2, CONSTRAINT check_a CHECK (a IS NOT NULL AND a = 6) ); ALTER TABLE part_6 DROP c; ALTER TABLE list_parted2 ATTACH PARTITION part_6 FOR VALUES IN (6); -- Similar to above, but the table being attached is a partitioned table -- whose partition has still different attnos for the root partitioning -- columns. CREATE TABLE part_7 ( LIKE list_parted2, CONSTRAINT check_a CHECK (a IS NOT NULL AND a = 7) ) PARTITION BY LIST (b); CREATE TABLE part_7_a_null ( c int, d int, e int, LIKE list_parted2, -- 'a' will have attnum = 4 CONSTRAINT check_b CHECK (b IS NULL OR b = 'a'), CONSTRAINT check_a CHECK (a IS NOT NULL AND a = 7) ); ALTER TABLE part_7_a_null DROP c, DROP d, DROP e; ALTER TABLE part_7 ATTACH PARTITION part_7_a_null FOR VALUES IN ('a', null); ALTER TABLE list_parted2 ATTACH PARTITION part_7 FOR VALUES IN (7); -- Same example, but check this time that the constraint correctly detects -- violating rows ALTER TABLE list_parted2 DETACH PARTITION part_7; ALTER TABLE part_7 DROP CONSTRAINT check_a; -- thusly, scan won't be skipped INSERT INTO part_7 (a, b) VALUES (8, null), (9, 'a'); SELECT tableoid::regclass, a, b FROM part_7 order by a; ALTER TABLE list_parted2 ATTACH PARTITION part_7 FOR VALUES IN (7); -- check that leaf partitions of default partition are scanned when -- attaching a partitioned table. ALTER TABLE part_5 DROP CONSTRAINT check_a; CREATE TABLE part5_def PARTITION OF part_5 DEFAULT PARTITION BY LIST(a); CREATE TABLE part5_def_p1 PARTITION OF part5_def FOR VALUES IN (5); INSERT INTO part5_def_p1 VALUES (5, 'y'); CREATE TABLE part5_p1 (LIKE part_5); ALTER TABLE part_5 ATTACH PARTITION part5_p1 FOR VALUES IN ('y'); -- should be ok after deleting the bad row DELETE FROM part5_def_p1 WHERE b = 'y'; ALTER TABLE part_5 ATTACH PARTITION part5_p1 FOR VALUES IN ('y'); -- check that the table being attached is not already a partition ALTER TABLE list_parted2 ATTACH PARTITION part_2 FOR VALUES IN (2); -- check that circular inheritance is not allowed ALTER TABLE part_5 ATTACH PARTITION list_parted2 FOR VALUES IN ('b'); ALTER TABLE list_parted2 ATTACH PARTITION list_parted2 FOR VALUES IN (0); -- If a partitioned table being created or an existing table being attached -- as a partition does not have a constraint that would allow validation scan -- to be skipped, but an individual partition does, then the partition's -- validation scan is skipped. CREATE TABLE quuux (a int, b text) PARTITION BY LIST (a); CREATE TABLE quuux_default PARTITION OF quuux DEFAULT PARTITION BY LIST (b); CREATE TABLE quuux_default1 PARTITION OF quuux_default ( CONSTRAINT check_1 CHECK (a IS NOT NULL AND a = 1) ) FOR VALUES IN ('b'); CREATE TABLE quuux1 (a int, b text); ALTER TABLE quuux ATTACH PARTITION quuux1 FOR VALUES IN (1); -- validate! CREATE TABLE quuux2 (a int, b text); ALTER TABLE quuux ATTACH PARTITION quuux2 FOR VALUES IN (2); -- skip validation DROP TABLE quuux1, quuux2; -- should validate for quuux1, but not for quuux2 CREATE TABLE quuux1 PARTITION OF quuux FOR VALUES IN (1); CREATE TABLE quuux2 PARTITION OF quuux FOR VALUES IN (2); DROP TABLE quuux; -- check validation when attaching hash partitions -- Use hand-rolled hash functions and operator class to get predictable result -- on different machines. part_test_int4_ops is defined in insert.sql. -- check that the new partition won't overlap with an existing partition CREATE TABLE hash_parted ( a int, b int ) PARTITION BY HASH (a part_test_int4_ops); CREATE TABLE hpart_1 PARTITION OF hash_parted FOR VALUES WITH (MODULUS 4, REMAINDER 0); CREATE TABLE fail_part (LIKE hpart_1); ALTER TABLE hash_parted ATTACH PARTITION fail_part FOR VALUES WITH (MODULUS 8, REMAINDER 4); ALTER TABLE hash_parted ATTACH PARTITION fail_part FOR VALUES WITH (MODULUS 8, REMAINDER 0); DROP TABLE fail_part; -- check validation when attaching hash partitions -- check that violating rows are correctly reported CREATE TABLE hpart_2 (LIKE hash_parted); INSERT INTO hpart_2 VALUES (3, 0); ALTER TABLE hash_parted ATTACH PARTITION hpart_2 FOR VALUES WITH (MODULUS 4, REMAINDER 1); -- should be ok after deleting the bad row DELETE FROM hpart_2; ALTER TABLE hash_parted ATTACH PARTITION hpart_2 FOR VALUES WITH (MODULUS 4, REMAINDER 1); -- check that leaf partitions are scanned when attaching a partitioned -- table CREATE TABLE hpart_5 ( LIKE hash_parted ) PARTITION BY LIST (b); -- check that violating rows are correctly reported CREATE TABLE hpart_5_a PARTITION OF hpart_5 FOR VALUES IN ('1', '2', '3'); INSERT INTO hpart_5_a (a, b) VALUES (7, 1); ALTER TABLE hash_parted ATTACH PARTITION hpart_5 FOR VALUES WITH (MODULUS 4, REMAINDER 2); -- should be ok after deleting the bad row DELETE FROM hpart_5_a; ALTER TABLE hash_parted ATTACH PARTITION hpart_5 FOR VALUES WITH (MODULUS 4, REMAINDER 2); -- check that the table being attach is with valid modulus and remainder value CREATE TABLE fail_part(LIKE hash_parted); ALTER TABLE hash_parted ATTACH PARTITION fail_part FOR VALUES WITH (MODULUS 0, REMAINDER 1); ALTER TABLE hash_parted ATTACH PARTITION fail_part FOR VALUES WITH (MODULUS 8, REMAINDER 8); ALTER TABLE hash_parted ATTACH PARTITION fail_part FOR VALUES WITH (MODULUS 3, REMAINDER 2); DROP TABLE fail_part; -- -- DETACH PARTITION -- -- check that the table is partitioned at all CREATE TABLE regular_table (a int); ALTER TABLE regular_table DETACH PARTITION any_name; DROP TABLE regular_table; -- check that the partition being detached exists at all ALTER TABLE list_parted2 DETACH PARTITION part_4; ALTER TABLE hash_parted DETACH PARTITION hpart_4; -- check that the partition being detached is actually a partition of the parent CREATE TABLE not_a_part (a int); ALTER TABLE list_parted2 DETACH PARTITION not_a_part; ALTER TABLE list_parted2 DETACH PARTITION part_1; ALTER TABLE hash_parted DETACH PARTITION not_a_part; DROP TABLE not_a_part; -- check that, after being detached, attinhcount/coninhcount is dropped to 0 and -- attislocal/conislocal is set to true ALTER TABLE list_parted2 DETACH PARTITION part_3_4; SELECT attinhcount, attislocal FROM pg_attribute WHERE attrelid = 'part_3_4'::regclass AND attnum > 0; SELECT coninhcount, conislocal FROM pg_constraint WHERE conrelid = 'part_3_4'::regclass AND conname = 'check_a'; DROP TABLE part_3_4; -- check that a detached partition is not dropped on dropping a partitioned table CREATE TABLE range_parted2 ( a int ) PARTITION BY RANGE(a); CREATE TABLE part_rp PARTITION OF range_parted2 FOR VALUES FROM (0) to (100); ALTER TABLE range_parted2 DETACH PARTITION part_rp; DROP TABLE range_parted2; SELECT * from part_rp; DROP TABLE part_rp; -- Check ALTER TABLE commands for partitioned tables and partitions -- cannot add/drop column to/from *only* the parent ALTER TABLE ONLY list_parted2 ADD COLUMN c int; ALTER TABLE ONLY list_parted2 DROP COLUMN b; -- cannot add a column to partition or drop an inherited one ALTER TABLE part_2 ADD COLUMN c text; ALTER TABLE part_2 DROP COLUMN b; -- Nor rename, alter type ALTER TABLE part_2 RENAME COLUMN b to c; ALTER TABLE part_2 ALTER COLUMN b TYPE text; -- cannot add/drop NOT NULL or check constraints to *only* the parent, when -- partitions exist ALTER TABLE ONLY list_parted2 ALTER b SET NOT NULL; ALTER TABLE ONLY list_parted2 ADD CONSTRAINT check_b CHECK (b <> 'zz'); ALTER TABLE list_parted2 ALTER b SET NOT NULL; ALTER TABLE ONLY list_parted2 ALTER b DROP NOT NULL; ALTER TABLE list_parted2 ADD CONSTRAINT check_b CHECK (b <> 'zz'); ALTER TABLE ONLY list_parted2 DROP CONSTRAINT check_b; -- It's alright though, if no partitions are yet created CREATE TABLE parted_no_parts (a int) PARTITION BY LIST (a); ALTER TABLE ONLY parted_no_parts ALTER a SET NOT NULL; ALTER TABLE ONLY parted_no_parts ADD CONSTRAINT check_a CHECK (a > 0); ALTER TABLE ONLY parted_no_parts ALTER a DROP NOT NULL; ALTER TABLE ONLY parted_no_parts DROP CONSTRAINT check_a; DROP TABLE parted_no_parts; -- cannot drop inherited NOT NULL or check constraints from partition ALTER TABLE list_parted2 ALTER b SET NOT NULL, ADD CONSTRAINT check_a2 CHECK (a > 0); ALTER TABLE part_2 ALTER b DROP NOT NULL; ALTER TABLE part_2 DROP CONSTRAINT check_a2; -- Doesn't make sense to add NO INHERIT constraints on partitioned tables ALTER TABLE list_parted2 add constraint check_b2 check (b <> 'zz') NO INHERIT; -- check that a partition cannot participate in regular inheritance CREATE TABLE inh_test () INHERITS (part_2); CREATE TABLE inh_test (LIKE part_2); ALTER TABLE inh_test INHERIT part_2; ALTER TABLE part_2 INHERIT inh_test; -- cannot drop or alter type of partition key columns of lower level -- partitioned tables; for example, part_5, which is list_parted2's -- partition, is partitioned on b; ALTER TABLE list_parted2 DROP COLUMN b; ALTER TABLE list_parted2 ALTER COLUMN b TYPE text; -- dropping non-partition key columns should be allowed on the parent table. ALTER TABLE list_parted DROP COLUMN b; SELECT * FROM list_parted; -- cleanup DROP TABLE list_parted, list_parted2, range_parted; DROP TABLE fail_def_part; DROP TABLE hash_parted; -- more tests for certain multi-level partitioning scenarios create table p (a int, b int) partition by range (a, b); create table p1 (b int, a int not null) partition by range (b); create table p11 (like p1); alter table p11 drop a; alter table p11 add a int; alter table p11 drop a; alter table p11 add a int not null; -- attnum for key attribute 'a' is different in p, p1, and p11 select attrelid::regclass, attname, attnum from pg_attribute where attname = 'a' and (attrelid = 'p'::regclass or attrelid = 'p1'::regclass or attrelid = 'p11'::regclass) order by attrelid::regclass::text; alter table p1 attach partition p11 for values from (2) to (5); insert into p1 (a, b) values (2, 3); -- check that partition validation scan correctly detects violating rows alter table p attach partition p1 for values from (1, 2) to (1, 10); -- cleanup drop table p; drop table p1; -- validate constraint on partitioned tables should only scan leaf partitions create table parted_validate_test (a int) partition by list (a); create table parted_validate_test_1 partition of parted_validate_test for values in (0, 1); alter table parted_validate_test add constraint parted_validate_test_chka check (a > 0) not valid; alter table parted_validate_test validate constraint parted_validate_test_chka; drop table parted_validate_test; -- test alter column options CREATE TABLE attmp(i integer); INSERT INTO attmp VALUES (1); ALTER TABLE attmp ALTER COLUMN i SET (n_distinct = 1, n_distinct_inherited = 2); ALTER TABLE attmp ALTER COLUMN i RESET (n_distinct_inherited); ANALYZE attmp; DROP TABLE attmp; DROP USER regress_alter_table_user1; -- check that violating rows are correctly reported when attaching as the -- default partition create table defpart_attach_test (a int) partition by list (a); create table defpart_attach_test1 partition of defpart_attach_test for values in (1); create table defpart_attach_test_d (b int, a int); alter table defpart_attach_test_d drop b; insert into defpart_attach_test_d values (1), (2); -- error because its constraint as the default partition would be violated -- by the row containing 1 alter table defpart_attach_test attach partition defpart_attach_test_d default; delete from defpart_attach_test_d where a = 1; alter table defpart_attach_test_d add check (a > 1); -- should be attached successfully and without needing to be scanned alter table defpart_attach_test attach partition defpart_attach_test_d default; -- check that attaching a partition correctly reports any rows in the default -- partition that should not be there for the new partition to be attached -- successfully create table defpart_attach_test_2 (like defpart_attach_test_d); alter table defpart_attach_test attach partition defpart_attach_test_2 for values in (2); drop table defpart_attach_test; -- check combinations of temporary and permanent relations when attaching -- partitions. create table perm_part_parent (a int) partition by list (a); create temp table temp_part_parent (a int) partition by list (a); create table perm_part_child (a int); create temp table temp_part_child (a int); alter table temp_part_parent attach partition perm_part_child default; -- error alter table perm_part_parent attach partition temp_part_child default; -- error alter table temp_part_parent attach partition temp_part_child default; -- ok drop table perm_part_parent cascade; drop table temp_part_parent cascade; -- check that attaching partitions to a table while it is being used is -- prevented create table tab_part_attach (a int) partition by list (a); create or replace function func_part_attach() returns trigger language plpgsql as $$ begin execute 'create table tab_part_attach_1 (a int)'; execute 'alter table tab_part_attach attach partition tab_part_attach_1 for values in (1)'; return null; end $$; create trigger trig_part_attach before insert on tab_part_attach for each statement execute procedure func_part_attach(); insert into tab_part_attach values (1); drop table tab_part_attach; drop function func_part_attach(); -- test case where the partitioning operator is a SQL function whose -- evaluation results in the table's relcache being rebuilt partway through -- the execution of an ATTACH PARTITION command create function at_test_sql_partop (int4, int4) returns int language sql as $$ select case when $1 = $2 then 0 when $1 > $2 then 1 else -1 end; $$; create operator class at_test_sql_partop for type int4 using btree as operator 1 < (int4, int4), operator 2 <= (int4, int4), operator 3 = (int4, int4), operator 4 >= (int4, int4), operator 5 > (int4, int4), function 1 at_test_sql_partop(int4, int4); create table at_test_sql_partop (a int) partition by range (a at_test_sql_partop); create table at_test_sql_partop_1 (a int); alter table at_test_sql_partop attach partition at_test_sql_partop_1 for values from (0) to (10); drop table at_test_sql_partop; drop operator class at_test_sql_partop using btree; drop function at_test_sql_partop; /* Test case for bug #16242 */ -- We create a parent and child where the child has missing -- non-null attribute values, and arrange to pass them through -- tuple conversion from the child to the parent tupdesc create table bar1 (a integer, b integer not null default 1) partition by range (a); create table bar2 (a integer); insert into bar2 values (1); alter table bar2 add column b integer not null default 1; -- (at this point bar2 contains tuple with natts=1) alter table bar1 attach partition bar2 default; -- this works: select * from bar1; -- this exercises tuple conversion: create function xtrig() returns trigger language plpgsql as $$ declare r record; begin for r in select * from old loop raise info 'a=%, b=%', r.a, r.b; end loop; return NULL; end; $$; create trigger xtrig after update on bar1 referencing old table as old for each statement execute procedure xtrig(); update bar1 set a = a + 1; /* End test case for bug #16242 */ -- Test that ALTER TABLE rewrite preserves a clustered index -- for normal indexes and indexes on constraints. create table alttype_cluster (a int); alter table alttype_cluster add primary key (a); create index alttype_cluster_ind on alttype_cluster (a); alter table alttype_cluster cluster on alttype_cluster_ind; -- Normal index remains clustered. select indexrelid::regclass, indisclustered from pg_index where indrelid = 'alttype_cluster'::regclass order by indexrelid::regclass::text; alter table alttype_cluster alter a type bigint; select indexrelid::regclass, indisclustered from pg_index where indrelid = 'alttype_cluster'::regclass order by indexrelid::regclass::text; -- Constraint index remains clustered. alter table alttype_cluster cluster on alttype_cluster_pkey; select indexrelid::regclass, indisclustered from pg_index where indrelid = 'alttype_cluster'::regclass order by indexrelid::regclass::text; alter table alttype_cluster alter a type int; select indexrelid::regclass, indisclustered from pg_index where indrelid = 'alttype_cluster'::regclass order by indexrelid::regclass::text; drop table alttype_cluster; libpg_query-13-2.1.0/test/sql/postgres_regress/amutils.sql000066400000000000000000000102451413137616400236420ustar00rootroot00000000000000-- -- Test index AM property-reporting functions -- select prop, pg_indexam_has_property(a.oid, prop) as "AM", pg_index_has_property('onek_hundred'::regclass, prop) as "Index", pg_index_column_has_property('onek_hundred'::regclass, 1, prop) as "Column" from pg_am a, unnest(array['asc', 'desc', 'nulls_first', 'nulls_last', 'orderable', 'distance_orderable', 'returnable', 'search_array', 'search_nulls', 'clusterable', 'index_scan', 'bitmap_scan', 'backward_scan', 'can_order', 'can_unique', 'can_multi_col', 'can_exclude', 'can_include', 'bogus']::text[]) with ordinality as u(prop,ord) where a.amname = 'btree' order by ord; select prop, pg_indexam_has_property(a.oid, prop) as "AM", pg_index_has_property('gcircleind'::regclass, prop) as "Index", pg_index_column_has_property('gcircleind'::regclass, 1, prop) as "Column" from pg_am a, unnest(array['asc', 'desc', 'nulls_first', 'nulls_last', 'orderable', 'distance_orderable', 'returnable', 'search_array', 'search_nulls', 'clusterable', 'index_scan', 'bitmap_scan', 'backward_scan', 'can_order', 'can_unique', 'can_multi_col', 'can_exclude', 'can_include', 'bogus']::text[]) with ordinality as u(prop,ord) where a.amname = 'gist' order by ord; select prop, pg_index_column_has_property('onek_hundred'::regclass, 1, prop) as btree, pg_index_column_has_property('hash_i4_index'::regclass, 1, prop) as hash, pg_index_column_has_property('gcircleind'::regclass, 1, prop) as gist, pg_index_column_has_property('sp_radix_ind'::regclass, 1, prop) as spgist_radix, pg_index_column_has_property('sp_quad_ind'::regclass, 1, prop) as spgist_quad, pg_index_column_has_property('botharrayidx'::regclass, 1, prop) as gin, pg_index_column_has_property('brinidx'::regclass, 1, prop) as brin from unnest(array['asc', 'desc', 'nulls_first', 'nulls_last', 'orderable', 'distance_orderable', 'returnable', 'search_array', 'search_nulls', 'bogus']::text[]) with ordinality as u(prop,ord) order by ord; select prop, pg_index_has_property('onek_hundred'::regclass, prop) as btree, pg_index_has_property('hash_i4_index'::regclass, prop) as hash, pg_index_has_property('gcircleind'::regclass, prop) as gist, pg_index_has_property('sp_radix_ind'::regclass, prop) as spgist, pg_index_has_property('botharrayidx'::regclass, prop) as gin, pg_index_has_property('brinidx'::regclass, prop) as brin from unnest(array['clusterable', 'index_scan', 'bitmap_scan', 'backward_scan', 'bogus']::text[]) with ordinality as u(prop,ord) order by ord; select amname, prop, pg_indexam_has_property(a.oid, prop) as p from pg_am a, unnest(array['can_order', 'can_unique', 'can_multi_col', 'can_exclude', 'can_include', 'bogus']::text[]) with ordinality as u(prop,ord) where amtype = 'i' order by amname, ord; -- -- additional checks for pg_index_column_has_property -- CREATE TEMP TABLE foo (f1 int, f2 int, f3 int, f4 int); CREATE INDEX fooindex ON foo (f1 desc, f2 asc, f3 nulls first, f4 nulls last); select col, prop, pg_index_column_has_property(o, col, prop) from (values ('fooindex'::regclass)) v1(o), (values (1,'orderable'),(2,'asc'),(3,'desc'), (4,'nulls_first'),(5,'nulls_last'), (6, 'bogus')) v2(idx,prop), generate_series(1,4) col order by col, idx; CREATE INDEX foocover ON foo (f1) INCLUDE (f2,f3); select col, prop, pg_index_column_has_property(o, col, prop) from (values ('foocover'::regclass)) v1(o), (values (1,'orderable'),(2,'asc'),(3,'desc'), (4,'nulls_first'),(5,'nulls_last'), (6,'distance_orderable'),(7,'returnable'), (8, 'bogus')) v2(idx,prop), generate_series(1,3) col order by col, idx; libpg_query-13-2.1.0/test/sql/postgres_regress/arrays.sql000066400000000000000000000605711413137616400234740ustar00rootroot00000000000000-- -- ARRAYS -- CREATE TABLE arrtest ( a int2[], b int4[][][], c name[], d text[][], e float8[], f char(5)[], g varchar(5)[] ); -- -- only the 'e' array is 0-based, the others are 1-based. -- INSERT INTO arrtest (a[1:5], b[1:1][1:2][1:2], c, d, f, g) VALUES ('{1,2,3,4,5}', '{{{0,0},{1,2}}}', '{}', '{}', '{}', '{}'); UPDATE arrtest SET e[0] = '1.1'; UPDATE arrtest SET e[1] = '2.2'; INSERT INTO arrtest (f) VALUES ('{"too long"}'); INSERT INTO arrtest (a, b[1:2][1:2], c, d, e, f, g) VALUES ('{11,12,23}', '{{3,4},{4,5}}', '{"foobar"}', '{{"elt1", "elt2"}}', '{"3.4", "6.7"}', '{"abc","abcde"}', '{"abc","abcde"}'); INSERT INTO arrtest (a, b[1:2], c, d[1:2]) VALUES ('{}', '{3,4}', '{foo,bar}', '{bar,foo}'); SELECT * FROM arrtest; SELECT arrtest.a[1], arrtest.b[1][1][1], arrtest.c[1], arrtest.d[1][1], arrtest.e[0] FROM arrtest; SELECT a[1], b[1][1][1], c[1], d[1][1], e[0] FROM arrtest; SELECT a[1:3], b[1:1][1:2][1:2], c[1:2], d[1:1][1:2] FROM arrtest; SELECT array_ndims(a) AS a,array_ndims(b) AS b,array_ndims(c) AS c FROM arrtest; SELECT array_dims(a) AS a,array_dims(b) AS b,array_dims(c) AS c FROM arrtest; -- returns nothing SELECT * FROM arrtest WHERE a[1] < 5 and c = '{"foobar"}'::_name; UPDATE arrtest SET a[1:2] = '{16,25}' WHERE NOT a = '{}'::_int2; UPDATE arrtest SET b[1:1][1:1][1:2] = '{113, 117}', b[1:1][1:2][2:2] = '{142, 147}' WHERE array_dims(b) = '[1:1][1:2][1:2]'; UPDATE arrtest SET c[2:2] = '{"new_word"}' WHERE array_dims(c) is not null; SELECT a,b,c FROM arrtest; SELECT a[1:3], b[1:1][1:2][1:2], c[1:2], d[1:1][2:2] FROM arrtest; SELECT b[1:1][2][2], d[1:1][2] FROM arrtest; INSERT INTO arrtest(a) VALUES('{1,null,3}'); SELECT a FROM arrtest; UPDATE arrtest SET a[4] = NULL WHERE a[2] IS NULL; SELECT a FROM arrtest WHERE a[2] IS NULL; DELETE FROM arrtest WHERE a[2] IS NULL AND b IS NULL; SELECT a,b,c FROM arrtest; -- test mixed slice/scalar subscripting select '{{1,2,3},{4,5,6},{7,8,9}}'::int[]; select ('{{1,2,3},{4,5,6},{7,8,9}}'::int[])[1:2][2]; select '[0:2][0:2]={{1,2,3},{4,5,6},{7,8,9}}'::int[]; select ('[0:2][0:2]={{1,2,3},{4,5,6},{7,8,9}}'::int[])[1:2][2]; -- -- check subscription corner cases -- -- More subscripts than MAXDIMS(6) SELECT ('{}'::int[])[1][2][3][4][5][6][7]; -- NULL index yields NULL when selecting SELECT ('{{{1},{2},{3}},{{4},{5},{6}}}'::int[])[1][NULL][1]; SELECT ('{{{1},{2},{3}},{{4},{5},{6}}}'::int[])[1][NULL:1][1]; SELECT ('{{{1},{2},{3}},{{4},{5},{6}}}'::int[])[1][1:NULL][1]; -- NULL index in assignment is an error UPDATE arrtest SET c[NULL] = '{"can''t assign"}' WHERE array_dims(c) is not null; UPDATE arrtest SET c[NULL:1] = '{"can''t assign"}' WHERE array_dims(c) is not null; UPDATE arrtest SET c[1:NULL] = '{"can''t assign"}' WHERE array_dims(c) is not null; -- test slices with empty lower and/or upper index CREATE TEMP TABLE arrtest_s ( a int2[], b int2[][] ); INSERT INTO arrtest_s VALUES ('{1,2,3,4,5}', '{{1,2,3}, {4,5,6}, {7,8,9}}'); INSERT INTO arrtest_s VALUES ('[0:4]={1,2,3,4,5}', '[0:2][0:2]={{1,2,3}, {4,5,6}, {7,8,9}}'); SELECT * FROM arrtest_s; SELECT a[:3], b[:2][:2] FROM arrtest_s; SELECT a[2:], b[2:][2:] FROM arrtest_s; SELECT a[:], b[:] FROM arrtest_s; -- updates UPDATE arrtest_s SET a[:3] = '{11, 12, 13}', b[:2][:2] = '{{11,12}, {14,15}}' WHERE array_lower(a,1) = 1; SELECT * FROM arrtest_s; UPDATE arrtest_s SET a[3:] = '{23, 24, 25}', b[2:][2:] = '{{25,26}, {28,29}}'; SELECT * FROM arrtest_s; UPDATE arrtest_s SET a[:] = '{11, 12, 13, 14, 15}'; SELECT * FROM arrtest_s; UPDATE arrtest_s SET a[:] = '{23, 24, 25}'; -- fail, too small INSERT INTO arrtest_s VALUES(NULL, NULL); UPDATE arrtest_s SET a[:] = '{11, 12, 13, 14, 15}'; -- fail, no good with null -- check with fixed-length-array type, such as point SELECT f1[0:1] FROM POINT_TBL; SELECT f1[0:] FROM POINT_TBL; SELECT f1[:1] FROM POINT_TBL; SELECT f1[:] FROM POINT_TBL; -- subscript assignments to fixed-width result in NULL if previous value is NULL UPDATE point_tbl SET f1[0] = 10 WHERE f1 IS NULL RETURNING *; INSERT INTO point_tbl(f1[0]) VALUES(0) RETURNING *; -- NULL assignments get ignored UPDATE point_tbl SET f1[0] = NULL WHERE f1::text = '(10,10)'::point::text RETURNING *; -- but non-NULL subscript assignments work UPDATE point_tbl SET f1[0] = -10, f1[1] = -10 WHERE f1::text = '(10,10)'::point::text RETURNING *; -- but not to expand the range UPDATE point_tbl SET f1[3] = 10 WHERE f1::text = '(-10,-10)'::point::text RETURNING *; -- -- test array extension -- CREATE TEMP TABLE arrtest1 (i int[], t text[]); insert into arrtest1 values(array[1,2,null,4], array['one','two',null,'four']); select * from arrtest1; update arrtest1 set i[2] = 22, t[2] = 'twenty-two'; select * from arrtest1; update arrtest1 set i[5] = 5, t[5] = 'five'; select * from arrtest1; update arrtest1 set i[8] = 8, t[8] = 'eight'; select * from arrtest1; update arrtest1 set i[0] = 0, t[0] = 'zero'; select * from arrtest1; update arrtest1 set i[-3] = -3, t[-3] = 'minus-three'; select * from arrtest1; update arrtest1 set i[0:2] = array[10,11,12], t[0:2] = array['ten','eleven','twelve']; select * from arrtest1; update arrtest1 set i[8:10] = array[18,null,20], t[8:10] = array['p18',null,'p20']; select * from arrtest1; update arrtest1 set i[11:12] = array[null,22], t[11:12] = array[null,'p22']; select * from arrtest1; update arrtest1 set i[15:16] = array[null,26], t[15:16] = array[null,'p26']; select * from arrtest1; update arrtest1 set i[-5:-3] = array[-15,-14,-13], t[-5:-3] = array['m15','m14','m13']; select * from arrtest1; update arrtest1 set i[-7:-6] = array[-17,null], t[-7:-6] = array['m17',null]; select * from arrtest1; update arrtest1 set i[-12:-10] = array[-22,null,-20], t[-12:-10] = array['m22',null,'m20']; select * from arrtest1; delete from arrtest1; insert into arrtest1 values(array[1,2,null,4], array['one','two',null,'four']); select * from arrtest1; update arrtest1 set i[0:5] = array[0,1,2,null,4,5], t[0:5] = array['z','p1','p2',null,'p4','p5']; select * from arrtest1; -- -- array expressions and operators -- -- table creation and INSERTs CREATE TEMP TABLE arrtest2 (i integer ARRAY[4], f float8[], n numeric[], t text[], d timestamp[]); INSERT INTO arrtest2 VALUES( ARRAY[[[113,142],[1,147]]], ARRAY[1.1,1.2,1.3]::float8[], ARRAY[1.1,1.2,1.3], ARRAY[[['aaa','aab'],['aba','abb'],['aca','acb']],[['baa','bab'],['bba','bbb'],['bca','bcb']]], ARRAY['19620326','19931223','19970117']::timestamp[] ); -- some more test data CREATE TEMP TABLE arrtest_f (f0 int, f1 text, f2 float8); insert into arrtest_f values(1,'cat1',1.21); insert into arrtest_f values(2,'cat1',1.24); insert into arrtest_f values(3,'cat1',1.18); insert into arrtest_f values(4,'cat1',1.26); insert into arrtest_f values(5,'cat1',1.15); insert into arrtest_f values(6,'cat2',1.15); insert into arrtest_f values(7,'cat2',1.26); insert into arrtest_f values(8,'cat2',1.32); insert into arrtest_f values(9,'cat2',1.30); CREATE TEMP TABLE arrtest_i (f0 int, f1 text, f2 int); insert into arrtest_i values(1,'cat1',21); insert into arrtest_i values(2,'cat1',24); insert into arrtest_i values(3,'cat1',18); insert into arrtest_i values(4,'cat1',26); insert into arrtest_i values(5,'cat1',15); insert into arrtest_i values(6,'cat2',15); insert into arrtest_i values(7,'cat2',26); insert into arrtest_i values(8,'cat2',32); insert into arrtest_i values(9,'cat2',30); -- expressions SELECT t.f[1][3][1] AS "131", t.f[2][2][1] AS "221" FROM ( SELECT ARRAY[[[111,112],[121,122],[131,132]],[[211,212],[221,122],[231,232]]] AS f ) AS t; SELECT ARRAY[[[[[['hello'],['world']]]]]]; SELECT ARRAY[ARRAY['hello'],ARRAY['world']]; SELECT ARRAY(select f2 from arrtest_f order by f2) AS "ARRAY"; -- with nulls SELECT '{1,null,3}'::int[]; SELECT ARRAY[1,NULL,3]; -- functions SELECT array_append(array[42], 6) AS "{42,6}"; SELECT array_prepend(6, array[42]) AS "{6,42}"; SELECT array_cat(ARRAY[1,2], ARRAY[3,4]) AS "{1,2,3,4}"; SELECT array_cat(ARRAY[1,2], ARRAY[[3,4],[5,6]]) AS "{{1,2},{3,4},{5,6}}"; SELECT array_cat(ARRAY[[3,4],[5,6]], ARRAY[1,2]) AS "{{3,4},{5,6},{1,2}}"; SELECT array_position(ARRAY[1,2,3,4,5], 4); SELECT array_position(ARRAY[5,3,4,2,1], 4); SELECT array_position(ARRAY[[1,2],[3,4]], 3); SELECT array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat'], 'mon'); SELECT array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat'], 'sat'); SELECT array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat'], NULL); SELECT array_position(ARRAY['sun','mon','tue','wed','thu',NULL,'fri','sat'], NULL); SELECT array_position(ARRAY['sun','mon','tue','wed','thu',NULL,'fri','sat'], 'sat'); SELECT array_positions(NULL, 10); SELECT array_positions(NULL, NULL::int); SELECT array_positions(ARRAY[1,2,3,4,5,6,1,2,3,4,5,6], 4); SELECT array_positions(ARRAY[[1,2],[3,4]], 4); SELECT array_positions(ARRAY[1,2,3,4,5,6,1,2,3,4,5,6], NULL); SELECT array_positions(ARRAY[1,2,3,NULL,5,6,1,2,3,NULL,5,6], NULL); SELECT array_length(array_positions(ARRAY(SELECT 'AAAAAAAAAAAAAAAAAAAAAAAAA'::text || i % 10 FROM generate_series(1,100) g(i)), 'AAAAAAAAAAAAAAAAAAAAAAAAA5'), 1); DO $$ DECLARE o int; a int[] := ARRAY[1,2,3,2,3,1,2]; BEGIN o := array_position(a, 2); WHILE o IS NOT NULL LOOP RAISE NOTICE '%', o; o := array_position(a, 2, o + 1); END LOOP; END $$ LANGUAGE plpgsql; SELECT array_position('[2:4]={1,2,3}'::int[], 1); SELECT array_positions('[2:4]={1,2,3}'::int[], 1); SELECT array_position(ids, (1, 1)), array_positions(ids, (1, 1)) FROM (VALUES (ARRAY[(0, 0), (1, 1)]), (ARRAY[(1, 1)]) ) AS f (ids); -- operators SELECT a FROM arrtest WHERE b = ARRAY[[[113,142],[1,147]]]; SELECT NOT ARRAY[1.1,1.2,1.3] = ARRAY[1.1,1.2,1.3] AS "FALSE"; SELECT ARRAY[1,2] || 3 AS "{1,2,3}"; SELECT 0 || ARRAY[1,2] AS "{0,1,2}"; SELECT ARRAY[1,2] || ARRAY[3,4] AS "{1,2,3,4}"; SELECT ARRAY[[['hello','world']]] || ARRAY[[['happy','birthday']]] AS "ARRAY"; SELECT ARRAY[[1,2],[3,4]] || ARRAY[5,6] AS "{{1,2},{3,4},{5,6}}"; SELECT ARRAY[0,0] || ARRAY[1,1] || ARRAY[2,2] AS "{0,0,1,1,2,2}"; SELECT 0 || ARRAY[1,2] || 3 AS "{0,1,2,3}"; SELECT * FROM array_op_test WHERE i @> '{32}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i && '{32}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i @> '{17}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i && '{17}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i @> '{32,17}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i && '{32,17}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i <@ '{38,34,32,89}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i = '{}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i @> '{}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i && '{}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i <@ '{}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i = '{NULL}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i @> '{NULL}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i && '{NULL}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i <@ '{NULL}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t @> '{AAAAAAAA72908}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t && '{AAAAAAAA72908}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t @> '{AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t && '{AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t @> '{AAAAAAAA72908,AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t && '{AAAAAAAA72908,AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t <@ '{AAAAAAAA72908,AAAAAAAAAAAAAAAAAAA17075,AA88409,AAAAAAAAAAAAAAAAAA36842,AAAAAAA48038,AAAAAAAAAAAAAA10611}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t = '{}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t @> '{}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t && '{}' ORDER BY seqno; SELECT * FROM array_op_test WHERE t <@ '{}' ORDER BY seqno; -- array casts SELECT ARRAY[1,2,3]::text[]::int[]::float8[] AS "{1,2,3}"; SELECT ARRAY[1,2,3]::text[]::int[]::float8[] is of (float8[]) as "TRUE"; SELECT ARRAY[['a','bc'],['def','hijk']]::text[]::varchar[] AS "{{a,bc},{def,hijk}}"; SELECT ARRAY[['a','bc'],['def','hijk']]::text[]::varchar[] is of (varchar[]) as "TRUE"; SELECT CAST(ARRAY[[[[[['a','bb','ccc']]]]]] as text[]) as "{{{{{{a,bb,ccc}}}}}}"; SELECT NULL::text[]::int[] AS "NULL"; -- scalar op any/all (array) select 33 = any ('{1,2,3}'); select 33 = any ('{1,2,33}'); select 33 = all ('{1,2,33}'); select 33 >= all ('{1,2,33}'); -- boundary cases select null::int >= all ('{1,2,33}'); select null::int >= all ('{}'); select null::int >= any ('{}'); -- cross-datatype select 33.4 = any (array[1,2,3]); select 33.4 > all (array[1,2,3]); -- errors select 33 * any ('{1,2,3}'); select 33 * any (44); -- nulls select 33 = any (null::int[]); select null::int = any ('{1,2,3}'); select 33 = any ('{1,null,3}'); select 33 = any ('{1,null,33}'); select 33 = all (null::int[]); select null::int = all ('{1,2,3}'); select 33 = all ('{1,null,3}'); select 33 = all ('{33,null,33}'); -- nulls later in the bitmap SELECT -1 != ALL(ARRAY(SELECT NULLIF(g.i, 900) FROM generate_series(1,1000) g(i))); -- test indexes on arrays create temp table arr_tbl (f1 int[] unique); insert into arr_tbl values ('{1,2,3}'); insert into arr_tbl values ('{1,2}'); -- failure expected: insert into arr_tbl values ('{1,2,3}'); insert into arr_tbl values ('{2,3,4}'); insert into arr_tbl values ('{1,5,3}'); insert into arr_tbl values ('{1,2,10}'); set enable_seqscan to off; set enable_bitmapscan to off; select * from arr_tbl where f1 > '{1,2,3}' and f1 <= '{1,5,3}'; select * from arr_tbl where f1 >= '{1,2,3}' and f1 < '{1,5,3}'; -- test ON CONFLICT DO UPDATE with arrays create temp table arr_pk_tbl (pk int4 primary key, f1 int[]); insert into arr_pk_tbl values (1, '{1,2,3}'); insert into arr_pk_tbl values (1, '{3,4,5}') on conflict (pk) do update set f1[1] = excluded.f1[1], f1[3] = excluded.f1[3] returning pk, f1; insert into arr_pk_tbl(pk, f1[1:2]) values (1, '{6,7,8}') on conflict (pk) do update set f1[1] = excluded.f1[1], f1[2] = excluded.f1[2], f1[3] = excluded.f1[3] returning pk, f1; -- note: if above selects don't produce the expected tuple order, -- then you didn't get an indexscan plan, and something is busted. reset enable_seqscan; reset enable_bitmapscan; -- test [not] (like|ilike) (any|all) (...) select 'foo' like any (array['%a', '%o']); -- t select 'foo' like any (array['%a', '%b']); -- f select 'foo' like all (array['f%', '%o']); -- t select 'foo' like all (array['f%', '%b']); -- f select 'foo' not like any (array['%a', '%b']); -- t select 'foo' not like all (array['%a', '%o']); -- f select 'foo' ilike any (array['%A', '%O']); -- t select 'foo' ilike all (array['F%', '%O']); -- t -- -- General array parser tests -- -- none of the following should be accepted select '{{1,{2}},{2,3}}'::text[]; select '{{},{}}'::text[]; select E'{{1,2},\\{2,3}}'::text[]; select '{{"1 2" x},{3}}'::text[]; select '{}}'::text[]; select '{ }}'::text[]; select array[]; -- none of the above should be accepted -- all of the following should be accepted select '{}'::text[]; select '{{{1,2,3,4},{2,3,4,5}},{{3,4,5,6},{4,5,6,7}}}'::text[]; select '{0 second ,0 second}'::interval[]; select '{ { "," } , { 3 } }'::text[]; select ' { { " 0 second " , 0 second } }'::text[]; select '{ 0 second, @ 1 hour @ 42 minutes @ 20 seconds }'::interval[]; select array[]::text[]; select '[0:1]={1.1,2.2}'::float8[]; -- all of the above should be accepted -- tests for array aggregates CREATE TEMP TABLE arraggtest ( f1 INT[], f2 TEXT[][], f3 FLOAT[]); INSERT INTO arraggtest (f1, f2, f3) VALUES ('{1,2,3,4}','{{grey,red},{blue,blue}}','{1.6, 0.0}'); INSERT INTO arraggtest (f1, f2, f3) VALUES ('{1,2,3}','{{grey,red},{grey,blue}}','{1.6}'); SELECT max(f1), min(f1), max(f2), min(f2), max(f3), min(f3) FROM arraggtest; INSERT INTO arraggtest (f1, f2, f3) VALUES ('{3,3,2,4,5,6}','{{white,yellow},{pink,orange}}','{2.1,3.3,1.8,1.7,1.6}'); SELECT max(f1), min(f1), max(f2), min(f2), max(f3), min(f3) FROM arraggtest; INSERT INTO arraggtest (f1, f2, f3) VALUES ('{2}','{{black,red},{green,orange}}','{1.6,2.2,2.6,0.4}'); SELECT max(f1), min(f1), max(f2), min(f2), max(f3), min(f3) FROM arraggtest; INSERT INTO arraggtest (f1, f2, f3) VALUES ('{4,2,6,7,8,1}','{{red},{black},{purple},{blue},{blue}}',NULL); SELECT max(f1), min(f1), max(f2), min(f2), max(f3), min(f3) FROM arraggtest; INSERT INTO arraggtest (f1, f2, f3) VALUES ('{}','{{pink,white,blue,red,grey,orange}}','{2.1,1.87,1.4,2.2}'); SELECT max(f1), min(f1), max(f2), min(f2), max(f3), min(f3) FROM arraggtest; -- A few simple tests for arrays of composite types create type comptype as (f1 int, f2 text); create table comptable (c1 comptype, c2 comptype[]); -- XXX would like to not have to specify row() construct types here ... insert into comptable values (row(1,'foo'), array[row(2,'bar')::comptype, row(3,'baz')::comptype]); -- check that implicitly named array type _comptype isn't a problem create type _comptype as enum('fooey'); select * from comptable; select c2[2].f2 from comptable; drop type _comptype; drop table comptable; drop type comptype; create or replace function unnest1(anyarray) returns setof anyelement as $$ select $1[s] from generate_subscripts($1,1) g(s); $$ language sql immutable; create or replace function unnest2(anyarray) returns setof anyelement as $$ select $1[s1][s2] from generate_subscripts($1,1) g1(s1), generate_subscripts($1,2) g2(s2); $$ language sql immutable; select * from unnest1(array[1,2,3]); select * from unnest2(array[[1,2,3],[4,5,6]]); drop function unnest1(anyarray); drop function unnest2(anyarray); select array_fill(null::integer, array[3,3],array[2,2]); select array_fill(null::integer, array[3,3]); select array_fill(null::text, array[3,3],array[2,2]); select array_fill(null::text, array[3,3]); select array_fill(7, array[3,3],array[2,2]); select array_fill(7, array[3,3]); select array_fill('juhu'::text, array[3,3],array[2,2]); select array_fill('juhu'::text, array[3,3]); select a, a = '{}' as is_eq, array_dims(a) from (select array_fill(42, array[0]) as a) ss; select a, a = '{}' as is_eq, array_dims(a) from (select array_fill(42, '{}') as a) ss; select a, a = '{}' as is_eq, array_dims(a) from (select array_fill(42, '{}', '{}') as a) ss; -- raise exception select array_fill(1, null, array[2,2]); select array_fill(1, array[2,2], null); select array_fill(1, array[2,2], '{}'); select array_fill(1, array[3,3], array[1,1,1]); select array_fill(1, array[1,2,null]); select array_fill(1, array[[1,2],[3,4]]); select string_to_array('1|2|3', '|'); select string_to_array('1|2|3|', '|'); select string_to_array('1||2|3||', '||'); select string_to_array('1|2|3', ''); select string_to_array('', '|'); select string_to_array('1|2|3', NULL); select string_to_array(NULL, '|') IS NULL; select string_to_array('abc', ''); select string_to_array('abc', '', 'abc'); select string_to_array('abc', ','); select string_to_array('abc', ',', 'abc'); select string_to_array('1,2,3,4,,6', ','); select string_to_array('1,2,3,4,,6', ',', ''); select string_to_array('1,2,3,4,*,6', ',', '*'); select array_to_string(NULL::int4[], ',') IS NULL; select array_to_string('{}'::int4[], ','); select array_to_string(array[1,2,3,4,NULL,6], ','); select array_to_string(array[1,2,3,4,NULL,6], ',', '*'); select array_to_string(array[1,2,3,4,NULL,6], NULL); select array_to_string(array[1,2,3,4,NULL,6], ',', NULL); select array_to_string(string_to_array('1|2|3', '|'), '|'); select array_length(array[1,2,3], 1); select array_length(array[[1,2,3], [4,5,6]], 0); select array_length(array[[1,2,3], [4,5,6]], 1); select array_length(array[[1,2,3], [4,5,6]], 2); select array_length(array[[1,2,3], [4,5,6]], 3); select cardinality(NULL::int[]); select cardinality('{}'::int[]); select cardinality(array[1,2,3]); select cardinality('[2:4]={5,6,7}'::int[]); select cardinality('{{1,2}}'::int[]); select cardinality('{{1,2},{3,4},{5,6}}'::int[]); select cardinality('{{{1,9},{5,6}},{{2,3},{3,4}}}'::int[]); -- array_agg(anynonarray) select array_agg(unique1) from (select unique1 from tenk1 where unique1 < 15 order by unique1) ss; select array_agg(ten) from (select ten from tenk1 where unique1 < 15 order by unique1) ss; select array_agg(nullif(ten, 4)) from (select ten from tenk1 where unique1 < 15 order by unique1) ss; select array_agg(unique1) from tenk1 where unique1 < -15; -- array_agg(anyarray) select array_agg(ar) from (values ('{1,2}'::int[]), ('{3,4}'::int[])) v(ar); select array_agg(distinct ar order by ar desc) from (select array[i / 2] from generate_series(1,10) a(i)) b(ar); select array_agg(ar) from (select array_agg(array[i, i+1, i-1]) from generate_series(1,2) a(i)) b(ar); select array_agg(array[i+1.2, i+1.3, i+1.4]) from generate_series(1,3) g(i); select array_agg(array['Hello', i::text]) from generate_series(9,11) g(i); select array_agg(array[i, nullif(i, 3), i+1]) from generate_series(1,4) g(i); -- errors select array_agg('{}'::int[]) from generate_series(1,2); select array_agg(null::int[]) from generate_series(1,2); select array_agg(ar) from (values ('{1,2}'::int[]), ('{3}'::int[])) v(ar); select unnest(array[1,2,3]); select * from unnest(array[1,2,3]); select unnest(array[1,2,3,4.5]::float8[]); select unnest(array[1,2,3,4.5]::numeric[]); select unnest(array[1,2,3,null,4,null,null,5,6]); select unnest(array[1,2,3,null,4,null,null,5,6]::text[]); select abs(unnest(array[1,2,null,-3])); select array_remove(array[1,2,2,3], 2); select array_remove(array[1,2,2,3], 5); select array_remove(array[1,NULL,NULL,3], NULL); select array_remove(array['A','CC','D','C','RR'], 'RR'); select array_remove('{{1,2,2},{1,4,3}}', 2); -- not allowed select array_remove(array['X','X','X'], 'X') = '{}'; select array_replace(array[1,2,5,4],5,3); select array_replace(array[1,2,5,4],5,NULL); select array_replace(array[1,2,NULL,4,NULL],NULL,5); select array_replace(array['A','B','DD','B'],'B','CC'); select array_replace(array[1,NULL,3],NULL,NULL); select array_replace(array['AB',NULL,'CDE'],NULL,'12'); -- array(select array-value ...) select array(select array[i,i/2] from generate_series(1,5) i); select array(select array['Hello', i::text] from generate_series(9,11) i); -- Insert/update on a column that is array of composite create temp table t1 (f1 int8_tbl[]); insert into t1 (f1[5].q1) values(42); select * from t1; update t1 set f1[5].q2 = 43; select * from t1; -- Check that arrays of composites are safely detoasted when needed create temp table src (f1 text); insert into src select string_agg(random()::text,'') from generate_series(1,10000); create type textandtext as (c1 text, c2 text); create temp table dest (f1 textandtext[]); insert into dest select array[row(f1,f1)::textandtext] from src; select length(md5((f1[1]).c2)) from dest; delete from src; select length(md5((f1[1]).c2)) from dest; truncate table src; drop table src; select length(md5((f1[1]).c2)) from dest; drop table dest; drop type textandtext; -- Tests for polymorphic-array form of width_bucket() -- this exercises the varwidth and float8 code paths SELECT op, width_bucket(op::numeric, ARRAY[1, 3, 5, 10.0]::numeric[]) AS wb_n1, width_bucket(op::numeric, ARRAY[0, 5.5, 9.99]::numeric[]) AS wb_n2, width_bucket(op::numeric, ARRAY[-6, -5, 2.0]::numeric[]) AS wb_n3, width_bucket(op::float8, ARRAY[1, 3, 5, 10.0]::float8[]) AS wb_f1, width_bucket(op::float8, ARRAY[0, 5.5, 9.99]::float8[]) AS wb_f2, width_bucket(op::float8, ARRAY[-6, -5, 2.0]::float8[]) AS wb_f3 FROM (VALUES (-5.2), (-0.0000000001), (0.000000000001), (1), (1.99999999999999), (2), (2.00000000000001), (3), (4), (4.5), (5), (5.5), (6), (7), (8), (9), (9.99999999999999), (10), (10.0000000000001) ) v(op); -- ensure float8 path handles NaN properly SELECT op, width_bucket(op, ARRAY[1, 3, 9, 'NaN', 'NaN']::float8[]) AS wb FROM (VALUES (-5.2::float8), (4::float8), (77::float8), ('NaN'::float8) ) v(op); -- these exercise the generic fixed-width code path SELECT op, width_bucket(op, ARRAY[1, 3, 5, 10]) AS wb_1 FROM generate_series(0,11) as op; SELECT width_bucket(now(), array['yesterday', 'today', 'tomorrow']::timestamptz[]); -- corner cases SELECT width_bucket(5, ARRAY[3]); SELECT width_bucket(5, '{}'); -- error cases SELECT width_bucket('5'::text, ARRAY[3, 4]::integer[]); SELECT width_bucket(5, ARRAY[3, 4, NULL]); SELECT width_bucket(5, ARRAY[ARRAY[1, 2], ARRAY[3, 4]]); libpg_query-13-2.1.0/test/sql/postgres_regress/async.sql000066400000000000000000000013771413137616400233070ustar00rootroot00000000000000-- -- ASYNC -- --Should work. Send a valid message via a valid channel name SELECT pg_notify('notify_async1','sample message1'); SELECT pg_notify('notify_async1',''); SELECT pg_notify('notify_async1',NULL); -- Should fail. Send a valid message via an invalid channel name SELECT pg_notify('','sample message1'); SELECT pg_notify(NULL,'sample message1'); SELECT pg_notify('notify_async_channel_name_too_long______________________________','sample_message1'); --Should work. Valid NOTIFY/LISTEN/UNLISTEN commands NOTIFY notify_async2; LISTEN notify_async2; UNLISTEN notify_async2; UNLISTEN *; -- Should return zero while there are no pending notifications. -- src/test/isolation/specs/async-notify.spec tests for actual usage. SELECT pg_notification_queue_usage(); libpg_query-13-2.1.0/test/sql/postgres_regress/bit.sql000066400000000000000000000167621413137616400227540ustar00rootroot00000000000000-- -- BIT types -- -- -- Build tables for testing -- CREATE TABLE BIT_TABLE(b BIT(11)); INSERT INTO BIT_TABLE VALUES (B'10'); -- too short INSERT INTO BIT_TABLE VALUES (B'00000000000'); INSERT INTO BIT_TABLE VALUES (B'11011000000'); INSERT INTO BIT_TABLE VALUES (B'01010101010'); INSERT INTO BIT_TABLE VALUES (B'101011111010'); -- too long --INSERT INTO BIT_TABLE VALUES ('X554'); --INSERT INTO BIT_TABLE VALUES ('X555'); SELECT * FROM BIT_TABLE; CREATE TABLE VARBIT_TABLE(v BIT VARYING(11)); INSERT INTO VARBIT_TABLE VALUES (B''); INSERT INTO VARBIT_TABLE VALUES (B'0'); INSERT INTO VARBIT_TABLE VALUES (B'010101'); INSERT INTO VARBIT_TABLE VALUES (B'01010101010'); INSERT INTO VARBIT_TABLE VALUES (B'101011111010'); -- too long --INSERT INTO VARBIT_TABLE VALUES ('X554'); --INSERT INTO VARBIT_TABLE VALUES ('X555'); SELECT * FROM VARBIT_TABLE; -- Concatenation SELECT v, b, (v || b) AS concat FROM BIT_TABLE, VARBIT_TABLE ORDER BY 3; -- Length SELECT b, length(b) AS lb FROM BIT_TABLE; SELECT v, length(v) AS lv FROM VARBIT_TABLE; -- Substring SELECT b, SUBSTRING(b FROM 2 FOR 4) AS sub_2_4, SUBSTRING(b FROM 7 FOR 13) AS sub_7_13, SUBSTRING(b FROM 6) AS sub_6 FROM BIT_TABLE; SELECT v, SUBSTRING(v FROM 2 FOR 4) AS sub_2_4, SUBSTRING(v FROM 7 FOR 13) AS sub_7_13, SUBSTRING(v FROM 6) AS sub_6 FROM VARBIT_TABLE; -- test overflow cases SELECT SUBSTRING('01010101'::bit(8) FROM 2 FOR 2147483646) AS "1010101"; SELECT SUBSTRING('01010101'::bit(8) FROM -10 FOR 2147483646) AS "01010101"; SELECT SUBSTRING('01010101'::bit(8) FROM -10 FOR -2147483646) AS "error"; SELECT SUBSTRING('01010101'::varbit FROM 2 FOR 2147483646) AS "1010101"; SELECT SUBSTRING('01010101'::varbit FROM -10 FOR 2147483646) AS "01010101"; SELECT SUBSTRING('01010101'::varbit FROM -10 FOR -2147483646) AS "error"; --- Bit operations DROP TABLE varbit_table; CREATE TABLE varbit_table (a BIT VARYING(16), b BIT VARYING(16)); COPY varbit_table FROM stdin; X0F X10 X1F X11 X2F X12 X3F X13 X8F X04 X000F X0010 X0123 XFFFF X2468 X2468 XFA50 X05AF X1234 XFFF5 \. SELECT a, b, ~a AS "~ a", a & b AS "a & b", a | b AS "a | b", a # b AS "a # b" FROM varbit_table; SELECT a,b,a=b AS "a>=b",a>b AS "a>b",a<>b AS "a<>b" FROM varbit_table; SELECT a,a<<4 AS "a<<4",b,b>>2 AS "b>>2" FROM varbit_table; DROP TABLE varbit_table; --- Bit operations DROP TABLE bit_table; CREATE TABLE bit_table (a BIT(16), b BIT(16)); COPY bit_table FROM stdin; X0F00 X1000 X1F00 X1100 X2F00 X1200 X3F00 X1300 X8F00 X0400 X000F X0010 X0123 XFFFF X2468 X2468 XFA50 X05AF X1234 XFFF5 \. SELECT a,b,~a AS "~ a",a & b AS "a & b", a|b AS "a | b", a # b AS "a # b" FROM bit_table; SELECT a,b,a=b AS "a>=b",a>b AS "a>b",a<>b AS "a<>b" FROM bit_table; SELECT a,a<<4 AS "a<<4",b,b>>2 AS "b>>2" FROM bit_table; DROP TABLE bit_table; -- The following should fail select B'001' & B'10'; select B'0111' | B'011'; select B'0010' # B'011101'; -- More position tests, checking all the boundary cases SELECT POSITION(B'1010' IN B'0000101'); -- 0 SELECT POSITION(B'1010' IN B'00001010'); -- 5 SELECT POSITION(B'1010' IN B'00000101'); -- 0 SELECT POSITION(B'1010' IN B'000001010'); -- 6 SELECT POSITION(B'' IN B'00001010'); -- 1 SELECT POSITION(B'0' IN B''); -- 0 SELECT POSITION(B'' IN B''); -- 0 SELECT POSITION(B'101101' IN B'001011011011011000'); -- 3 SELECT POSITION(B'10110110' IN B'001011011011010'); -- 3 SELECT POSITION(B'1011011011011' IN B'001011011011011'); -- 3 SELECT POSITION(B'1011011011011' IN B'00001011011011011'); -- 5 SELECT POSITION(B'11101011' IN B'11101011'); -- 1 SELECT POSITION(B'11101011' IN B'011101011'); -- 2 SELECT POSITION(B'11101011' IN B'00011101011'); -- 4 SELECT POSITION(B'11101011' IN B'0000011101011'); -- 6 SELECT POSITION(B'111010110' IN B'111010110'); -- 1 SELECT POSITION(B'111010110' IN B'0111010110'); -- 2 SELECT POSITION(B'111010110' IN B'000111010110'); -- 4 SELECT POSITION(B'111010110' IN B'00000111010110'); -- 6 SELECT POSITION(B'111010110' IN B'11101011'); -- 0 SELECT POSITION(B'111010110' IN B'011101011'); -- 0 SELECT POSITION(B'111010110' IN B'00011101011'); -- 0 SELECT POSITION(B'111010110' IN B'0000011101011'); -- 0 SELECT POSITION(B'111010110' IN B'111010110'); -- 1 SELECT POSITION(B'111010110' IN B'0111010110'); -- 2 SELECT POSITION(B'111010110' IN B'000111010110'); -- 4 SELECT POSITION(B'111010110' IN B'00000111010110'); -- 6 SELECT POSITION(B'111010110' IN B'000001110101111101011'); -- 0 SELECT POSITION(B'111010110' IN B'0000001110101111101011'); -- 0 SELECT POSITION(B'111010110' IN B'000000001110101111101011'); -- 0 SELECT POSITION(B'111010110' IN B'00000000001110101111101011'); -- 0 SELECT POSITION(B'111010110' IN B'0000011101011111010110'); -- 14 SELECT POSITION(B'111010110' IN B'00000011101011111010110'); -- 15 SELECT POSITION(B'111010110' IN B'0000000011101011111010110'); -- 17 SELECT POSITION(B'111010110' IN B'000000000011101011111010110'); -- 19 SELECT POSITION(B'000000000011101011111010110' IN B'000000000011101011111010110'); -- 1 SELECT POSITION(B'00000000011101011111010110' IN B'000000000011101011111010110'); -- 2 SELECT POSITION(B'0000000000011101011111010110' IN B'000000000011101011111010110'); -- 0 -- Shifting CREATE TABLE BIT_SHIFT_TABLE(b BIT(16)); INSERT INTO BIT_SHIFT_TABLE VALUES (B'1101100000000000'); INSERT INTO BIT_SHIFT_TABLE SELECT b>>1 FROM BIT_SHIFT_TABLE; INSERT INTO BIT_SHIFT_TABLE SELECT b>>2 FROM BIT_SHIFT_TABLE; INSERT INTO BIT_SHIFT_TABLE SELECT b>>4 FROM BIT_SHIFT_TABLE; INSERT INTO BIT_SHIFT_TABLE SELECT b>>8 FROM BIT_SHIFT_TABLE; SELECT POSITION(B'1101' IN b), POSITION(B'11011' IN b), b FROM BIT_SHIFT_TABLE ; SELECT b, b >> 1 AS bsr, b << 1 AS bsl FROM BIT_SHIFT_TABLE ; SELECT b, b >> 8 AS bsr8, b << 8 AS bsl8 FROM BIT_SHIFT_TABLE ; SELECT b::bit(15), b::bit(15) >> 1 AS bsr, b::bit(15) << 1 AS bsl FROM BIT_SHIFT_TABLE ; SELECT b::bit(15), b::bit(15) >> 8 AS bsr8, b::bit(15) << 8 AS bsl8 FROM BIT_SHIFT_TABLE ; CREATE TABLE VARBIT_SHIFT_TABLE(v BIT VARYING(20)); INSERT INTO VARBIT_SHIFT_TABLE VALUES (B'11011'); INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'0' AS BIT VARYING(6)) >>1 FROM VARBIT_SHIFT_TABLE; INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'00' AS BIT VARYING(8)) >>2 FROM VARBIT_SHIFT_TABLE; INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'0000' AS BIT VARYING(12)) >>4 FROM VARBIT_SHIFT_TABLE; INSERT INTO VARBIT_SHIFT_TABLE SELECT CAST(v || B'00000000' AS BIT VARYING(20)) >>8 FROM VARBIT_SHIFT_TABLE; SELECT POSITION(B'1101' IN v), POSITION(B'11011' IN v), v FROM VARBIT_SHIFT_TABLE ; SELECT v, v >> 1 AS vsr, v << 1 AS vsl FROM VARBIT_SHIFT_TABLE ; SELECT v, v >> 8 AS vsr8, v << 8 AS vsl8 FROM VARBIT_SHIFT_TABLE ; DROP TABLE BIT_SHIFT_TABLE; DROP TABLE VARBIT_SHIFT_TABLE; -- Get/Set bit SELECT get_bit(B'0101011000100', 10); SELECT set_bit(B'0101011000100100', 15, 1); SELECT set_bit(B'0101011000100100', 16, 1); -- fail -- Overlay SELECT overlay(B'0101011100' placing '001' from 2 for 3); SELECT overlay(B'0101011100' placing '101' from 6); SELECT overlay(B'0101011100' placing '001' from 11); SELECT overlay(B'0101011100' placing '001' from 20); -- This table is intentionally left around to exercise pg_dump/pg_upgrade CREATE TABLE bit_defaults( b1 bit(4) DEFAULT '1001', b2 bit(4) DEFAULT B'0101', b3 bit varying(5) DEFAULT '1001', b4 bit varying(5) DEFAULT B'0101' ); \d bit_defaults INSERT INTO bit_defaults DEFAULT VALUES; TABLE bit_defaults; libpg_query-13-2.1.0/test/sql/postgres_regress/bitmapops.sql000066400000000000000000000025251413137616400241640ustar00rootroot00000000000000-- Test bitmap AND and OR -- Generate enough data that we can test the lossy bitmaps. -- There's 55 tuples per page in the table. 53 is just -- below 55, so that an index scan with qual a = constant -- will return at least one hit per page. 59 is just above -- 55, so that an index scan with qual b = constant will return -- hits on most but not all pages. 53 and 59 are prime, so that -- there's a maximum number of a,b combinations in the table. -- That allows us to test all the different combinations of -- lossy and non-lossy pages with the minimum amount of data CREATE TABLE bmscantest (a int, b int, t text); INSERT INTO bmscantest SELECT (r%53), (r%59), 'foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' FROM generate_series(1,70000) r; CREATE INDEX i_bmtest_a ON bmscantest(a); CREATE INDEX i_bmtest_b ON bmscantest(b); -- We want to use bitmapscans. With default settings, the planner currently -- chooses a bitmap scan for the queries below anyway, but let's make sure. set enable_indexscan=false; set enable_seqscan=false; -- Lower work_mem to trigger use of lossy bitmaps set work_mem = 64; -- Test bitmap-and. SELECT count(*) FROM bmscantest WHERE a = 1 AND b = 1; -- Test bitmap-or. SELECT count(*) FROM bmscantest WHERE a = 1 OR b = 1; -- clean up DROP TABLE bmscantest; libpg_query-13-2.1.0/test/sql/postgres_regress/boolean.sql000066400000000000000000000131741413137616400236070ustar00rootroot00000000000000-- -- BOOLEAN -- -- -- sanity check - if this fails go insane! -- SELECT 1 AS one; -- ******************testing built-in type bool******************** -- check bool input syntax SELECT true AS true; SELECT false AS false; SELECT bool 't' AS true; SELECT bool ' f ' AS false; SELECT bool 'true' AS true; SELECT bool 'test' AS error; SELECT bool 'false' AS false; SELECT bool 'foo' AS error; SELECT bool 'y' AS true; SELECT bool 'yes' AS true; SELECT bool 'yeah' AS error; SELECT bool 'n' AS false; SELECT bool 'no' AS false; SELECT bool 'nay' AS error; SELECT bool 'on' AS true; SELECT bool 'off' AS false; SELECT bool 'of' AS false; SELECT bool 'o' AS error; SELECT bool 'on_' AS error; SELECT bool 'off_' AS error; SELECT bool '1' AS true; SELECT bool '11' AS error; SELECT bool '0' AS false; SELECT bool '000' AS error; SELECT bool '' AS error; -- and, or, not in qualifications SELECT bool 't' or bool 'f' AS true; SELECT bool 't' and bool 'f' AS false; SELECT not bool 'f' AS true; SELECT bool 't' = bool 'f' AS false; SELECT bool 't' <> bool 'f' AS true; SELECT bool 't' > bool 'f' AS true; SELECT bool 't' >= bool 'f' AS true; SELECT bool 'f' < bool 't' AS true; SELECT bool 'f' <= bool 't' AS true; -- explicit casts to/from text SELECT 'TrUe'::text::boolean AS true, 'fAlse'::text::boolean AS false; SELECT ' true '::text::boolean AS true, ' FALSE'::text::boolean AS false; SELECT true::boolean::text AS true, false::boolean::text AS false; SELECT ' tru e '::text::boolean AS invalid; -- error SELECT ''::text::boolean AS invalid; -- error CREATE TABLE BOOLTBL1 (f1 bool); INSERT INTO BOOLTBL1 (f1) VALUES (bool 't'); INSERT INTO BOOLTBL1 (f1) VALUES (bool 'True'); INSERT INTO BOOLTBL1 (f1) VALUES (bool 'true'); -- BOOLTBL1 should be full of true's at this point SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1; SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1 WHERE f1 = bool 'true'; SELECT '' AS t_3, BOOLTBL1.* FROM BOOLTBL1 WHERE f1 <> bool 'false'; SELECT '' AS zero, BOOLTBL1.* FROM BOOLTBL1 WHERE booleq(bool 'false', f1); INSERT INTO BOOLTBL1 (f1) VALUES (bool 'f'); SELECT '' AS f_1, BOOLTBL1.* FROM BOOLTBL1 WHERE f1 = bool 'false'; CREATE TABLE BOOLTBL2 (f1 bool); INSERT INTO BOOLTBL2 (f1) VALUES (bool 'f'); INSERT INTO BOOLTBL2 (f1) VALUES (bool 'false'); INSERT INTO BOOLTBL2 (f1) VALUES (bool 'False'); INSERT INTO BOOLTBL2 (f1) VALUES (bool 'FALSE'); -- This is now an invalid expression -- For pre-v6.3 this evaluated to false - thomas 1997-10-23 INSERT INTO BOOLTBL2 (f1) VALUES (bool 'XXX'); -- BOOLTBL2 should be full of false's at this point SELECT '' AS f_4, BOOLTBL2.* FROM BOOLTBL2; SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE BOOLTBL2.f1 <> BOOLTBL1.f1; SELECT '' AS tf_12, BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE boolne(BOOLTBL2.f1,BOOLTBL1.f1); SELECT '' AS ff_4, BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE BOOLTBL2.f1 = BOOLTBL1.f1 and BOOLTBL1.f1 = bool 'false'; SELECT '' AS tf_12_ff_4, BOOLTBL1.*, BOOLTBL2.* FROM BOOLTBL1, BOOLTBL2 WHERE BOOLTBL2.f1 = BOOLTBL1.f1 or BOOLTBL1.f1 = bool 'true' ORDER BY BOOLTBL1.f1, BOOLTBL2.f1; -- -- SQL syntax -- Try all combinations to ensure that we get nothing when we expect nothing -- - thomas 2000-01-04 -- SELECT '' AS "True", f1 FROM BOOLTBL1 WHERE f1 IS TRUE; SELECT '' AS "Not False", f1 FROM BOOLTBL1 WHERE f1 IS NOT FALSE; SELECT '' AS "False", f1 FROM BOOLTBL1 WHERE f1 IS FALSE; SELECT '' AS "Not True", f1 FROM BOOLTBL1 WHERE f1 IS NOT TRUE; SELECT '' AS "True", f1 FROM BOOLTBL2 WHERE f1 IS TRUE; SELECT '' AS "Not False", f1 FROM BOOLTBL2 WHERE f1 IS NOT FALSE; SELECT '' AS "False", f1 FROM BOOLTBL2 WHERE f1 IS FALSE; SELECT '' AS "Not True", f1 FROM BOOLTBL2 WHERE f1 IS NOT TRUE; -- -- Tests for BooleanTest -- CREATE TABLE BOOLTBL3 (d text, b bool, o int); INSERT INTO BOOLTBL3 (d, b, o) VALUES ('true', true, 1); INSERT INTO BOOLTBL3 (d, b, o) VALUES ('false', false, 2); INSERT INTO BOOLTBL3 (d, b, o) VALUES ('null', null, 3); SELECT d, b IS TRUE AS istrue, b IS NOT TRUE AS isnottrue, b IS FALSE AS isfalse, b IS NOT FALSE AS isnotfalse, b IS UNKNOWN AS isunknown, b IS NOT UNKNOWN AS isnotunknown FROM booltbl3 ORDER BY o; -- Test to make sure short-circuiting and NULL handling is -- correct. Use a table as source to prevent constant simplification -- to interfer. CREATE TABLE booltbl4(isfalse bool, istrue bool, isnul bool); INSERT INTO booltbl4 VALUES (false, true, null); \pset null '(null)' -- AND expression need to return null if there's any nulls and not all -- of the value are true SELECT istrue AND isnul AND istrue FROM booltbl4; SELECT istrue AND istrue AND isnul FROM booltbl4; SELECT isnul AND istrue AND istrue FROM booltbl4; SELECT isfalse AND isnul AND istrue FROM booltbl4; SELECT istrue AND isfalse AND isnul FROM booltbl4; SELECT isnul AND istrue AND isfalse FROM booltbl4; -- OR expression need to return null if there's any nulls and none -- of the value is true SELECT isfalse OR isnul OR isfalse FROM booltbl4; SELECT isfalse OR isfalse OR isnul FROM booltbl4; SELECT isnul OR isfalse OR isfalse FROM booltbl4; SELECT isfalse OR isnul OR istrue FROM booltbl4; SELECT istrue OR isfalse OR isnul FROM booltbl4; SELECT isnul OR istrue OR isfalse FROM booltbl4; -- -- Clean up -- Many tables are retained by the regression test, but these do not seem -- particularly useful so just get rid of them for now. -- - thomas 1997-11-30 -- DROP TABLE BOOLTBL1; DROP TABLE BOOLTBL2; DROP TABLE BOOLTBL3; DROP TABLE BOOLTBL4; libpg_query-13-2.1.0/test/sql/postgres_regress/box.sql000066400000000000000000000200351413137616400227520ustar00rootroot00000000000000-- -- BOX -- -- -- box logic -- o -- 3 o--|X -- | o| -- 2 +-+-+ | -- | | | | -- 1 | o-+-o -- | | -- 0 +---+ -- -- 0 1 2 3 -- -- boxes are specified by two points, given by four floats x1,y1,x2,y2 CREATE TABLE BOX_TBL (f1 box); INSERT INTO BOX_TBL (f1) VALUES ('(2.0,2.0,0.0,0.0)'); INSERT INTO BOX_TBL (f1) VALUES ('(1.0,1.0,3.0,3.0)'); INSERT INTO BOX_TBL (f1) VALUES ('((-8, 2), (-2, -10))'); -- degenerate cases where the box is a line or a point -- note that lines and points boxes all have zero area INSERT INTO BOX_TBL (f1) VALUES ('(2.5, 2.5, 2.5,3.5)'); INSERT INTO BOX_TBL (f1) VALUES ('(3.0, 3.0,3.0,3.0)'); -- badly formatted box inputs INSERT INTO BOX_TBL (f1) VALUES ('(2.3, 4.5)'); INSERT INTO BOX_TBL (f1) VALUES ('[1, 2, 3, 4)'); INSERT INTO BOX_TBL (f1) VALUES ('(1, 2, 3, 4]'); INSERT INTO BOX_TBL (f1) VALUES ('(1, 2, 3, 4) x'); INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad'); SELECT '' AS four, * FROM BOX_TBL; SELECT '' AS four, b.*, area(b.f1) as barea FROM BOX_TBL b; -- overlap SELECT '' AS three, b.f1 FROM BOX_TBL b WHERE b.f1 && box '(2.5,2.5,1.0,1.0)'; -- left-or-overlap (x only) SELECT '' AS two, b1.* FROM BOX_TBL b1 WHERE b1.f1 &< box '(2.0,2.0,2.5,2.5)'; -- right-or-overlap (x only) SELECT '' AS two, b1.* FROM BOX_TBL b1 WHERE b1.f1 &> box '(2.0,2.0,2.5,2.5)'; -- left of SELECT '' AS two, b.f1 FROM BOX_TBL b WHERE b.f1 << box '(3.0,3.0,5.0,5.0)'; -- area <= SELECT '' AS four, b.f1 FROM BOX_TBL b WHERE b.f1 <= box '(3.0,3.0,5.0,5.0)'; -- area < SELECT '' AS two, b.f1 FROM BOX_TBL b WHERE b.f1 < box '(3.0,3.0,5.0,5.0)'; -- area = SELECT '' AS two, b.f1 FROM BOX_TBL b WHERE b.f1 = box '(3.0,3.0,5.0,5.0)'; -- area > SELECT '' AS two, b.f1 FROM BOX_TBL b -- zero area WHERE b.f1 > box '(3.5,3.0,4.5,3.0)'; -- area >= SELECT '' AS four, b.f1 FROM BOX_TBL b -- zero area WHERE b.f1 >= box '(3.5,3.0,4.5,3.0)'; -- right of SELECT '' AS two, b.f1 FROM BOX_TBL b WHERE box '(3.0,3.0,5.0,5.0)' >> b.f1; -- contained in SELECT '' AS three, b.f1 FROM BOX_TBL b WHERE b.f1 <@ box '(0,0,3,3)'; -- contains SELECT '' AS three, b.f1 FROM BOX_TBL b WHERE box '(0,0,3,3)' @> b.f1; -- box equality SELECT '' AS one, b.f1 FROM BOX_TBL b WHERE box '(1,1,3,3)' ~= b.f1; -- center of box, left unary operator SELECT '' AS four, @@(b1.f1) AS p FROM BOX_TBL b1; -- wholly-contained SELECT '' AS one, b1.*, b2.* FROM BOX_TBL b1, BOX_TBL b2 WHERE b1.f1 @> b2.f1 and not b1.f1 ~= b2.f1; SELECT '' AS four, height(f1), width(f1) FROM BOX_TBL; -- -- Test the SP-GiST index -- CREATE TEMPORARY TABLE box_temp (f1 box); INSERT INTO box_temp SELECT box(point(i, i), point(i * 2, i * 2)) FROM generate_series(1, 50) AS i; CREATE INDEX box_spgist ON box_temp USING spgist (f1); INSERT INTO box_temp VALUES (NULL), ('(0,0)(0,100)'), ('(-3,4.3333333333)(40,1)'), ('(0,100)(0,infinity)'), ('(-infinity,0)(0,infinity)'), ('(-infinity,-infinity)(infinity,infinity)'); SET enable_seqscan = false; SELECT * FROM box_temp WHERE f1 << '(10,20),(30,40)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 << '(10,20),(30,40)'; SELECT * FROM box_temp WHERE f1 &< '(10,4.333334),(5,100)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 &< '(10,4.333334),(5,100)'; SELECT * FROM box_temp WHERE f1 && '(15,20),(25,30)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 && '(15,20),(25,30)'; SELECT * FROM box_temp WHERE f1 &> '(40,30),(45,50)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 &> '(40,30),(45,50)'; SELECT * FROM box_temp WHERE f1 >> '(30,40),(40,30)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 >> '(30,40),(40,30)'; SELECT * FROM box_temp WHERE f1 <<| '(10,4.33334),(5,100)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 <<| '(10,4.33334),(5,100)'; SELECT * FROM box_temp WHERE f1 &<| '(10,4.3333334),(5,1)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 &<| '(10,4.3333334),(5,1)'; SELECT * FROM box_temp WHERE f1 |&> '(49.99,49.99),(49.99,49.99)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 |&> '(49.99,49.99),(49.99,49.99)'; SELECT * FROM box_temp WHERE f1 |>> '(37,38),(39,40)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 |>> '(37,38),(39,40)'; SELECT * FROM box_temp WHERE f1 @> '(10,11),(15,16)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 @> '(10,11),(15,15)'; SELECT * FROM box_temp WHERE f1 <@ '(10,15),(30,35)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 <@ '(10,15),(30,35)'; SELECT * FROM box_temp WHERE f1 ~= '(20,20),(40,40)'; EXPLAIN (COSTS OFF) SELECT * FROM box_temp WHERE f1 ~= '(20,20),(40,40)'; RESET enable_seqscan; DROP INDEX box_spgist; -- -- Test the SP-GiST index on the larger volume of data -- CREATE TABLE quad_box_tbl (id int, b box); INSERT INTO quad_box_tbl SELECT (x - 1) * 100 + y, box(point(x * 10, y * 10), point(x * 10 + 5, y * 10 + 5)) FROM generate_series(1, 100) x, generate_series(1, 100) y; -- insert repeating data to test allTheSame INSERT INTO quad_box_tbl SELECT i, '((200, 300),(210, 310))' FROM generate_series(10001, 11000) AS i; INSERT INTO quad_box_tbl VALUES (11001, NULL), (11002, NULL), (11003, '((-infinity,-infinity),(infinity,infinity))'), (11004, '((-infinity,100),(-infinity,500))'), (11005, '((-infinity,-infinity),(700,infinity))'); CREATE INDEX quad_box_tbl_idx ON quad_box_tbl USING spgist(b); -- get reference results for ORDER BY distance from seq scan SET enable_seqscan = ON; SET enable_indexscan = OFF; SET enable_bitmapscan = OFF; CREATE TABLE quad_box_tbl_ord_seq1 AS SELECT rank() OVER (ORDER BY b <-> point '123,456') n, b <-> point '123,456' dist, id FROM quad_box_tbl; CREATE TABLE quad_box_tbl_ord_seq2 AS SELECT rank() OVER (ORDER BY b <-> point '123,456') n, b <-> point '123,456' dist, id FROM quad_box_tbl WHERE b <@ box '((200,300),(500,600))'; SET enable_seqscan = OFF; SET enable_indexscan = ON; SET enable_bitmapscan = ON; SELECT count(*) FROM quad_box_tbl WHERE b << box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b &< box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b && box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b &> box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b >> box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b >> box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b <<| box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b &<| box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b |&> box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b |>> box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b @> box '((201,301),(202,303))'; SELECT count(*) FROM quad_box_tbl WHERE b <@ box '((100,200),(300,500))'; SELECT count(*) FROM quad_box_tbl WHERE b ~= box '((200,300),(205,305))'; -- test ORDER BY distance SET enable_indexscan = ON; SET enable_bitmapscan = OFF; EXPLAIN (COSTS OFF) SELECT rank() OVER (ORDER BY b <-> point '123,456') n, b <-> point '123,456' dist, id FROM quad_box_tbl; CREATE TEMP TABLE quad_box_tbl_ord_idx1 AS SELECT rank() OVER (ORDER BY b <-> point '123,456') n, b <-> point '123,456' dist, id FROM quad_box_tbl; SELECT * FROM quad_box_tbl_ord_seq1 seq FULL JOIN quad_box_tbl_ord_idx1 idx ON seq.n = idx.n AND seq.id = idx.id AND (seq.dist = idx.dist OR seq.dist IS NULL AND idx.dist IS NULL) WHERE seq.id IS NULL OR idx.id IS NULL; EXPLAIN (COSTS OFF) SELECT rank() OVER (ORDER BY b <-> point '123,456') n, b <-> point '123,456' dist, id FROM quad_box_tbl WHERE b <@ box '((200,300),(500,600))'; CREATE TEMP TABLE quad_box_tbl_ord_idx2 AS SELECT rank() OVER (ORDER BY b <-> point '123,456') n, b <-> point '123,456' dist, id FROM quad_box_tbl WHERE b <@ box '((200,300),(500,600))'; SELECT * FROM quad_box_tbl_ord_seq2 seq FULL JOIN quad_box_tbl_ord_idx2 idx ON seq.n = idx.n AND seq.id = idx.id AND (seq.dist = idx.dist OR seq.dist IS NULL AND idx.dist IS NULL) WHERE seq.id IS NULL OR idx.id IS NULL; RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; libpg_query-13-2.1.0/test/sql/postgres_regress/brin.sql000066400000000000000000000426071413137616400231250ustar00rootroot00000000000000CREATE TABLE brintest (byteacol bytea, charcol "char", namecol name, int8col bigint, int2col smallint, int4col integer, textcol text, oidcol oid, tidcol tid, float4col real, float8col double precision, macaddrcol macaddr, inetcol inet, cidrcol cidr, bpcharcol character, datecol date, timecol time without time zone, timestampcol timestamp without time zone, timestamptzcol timestamp with time zone, intervalcol interval, timetzcol time with time zone, bitcol bit(10), varbitcol bit varying(16), numericcol numeric, uuidcol uuid, int4rangecol int4range, lsncol pg_lsn, boxcol box ) WITH (fillfactor=10, autovacuum_enabled=off); INSERT INTO brintest SELECT repeat(stringu1, 8)::bytea, substr(stringu1, 1, 1)::"char", stringu1::name, 142857 * tenthous, thousand, twothousand, repeat(stringu1, 8), unique1::oid, format('(%s,%s)', tenthous, twenty)::tid, (four + 1.0)/(hundred+1), odd::float8 / (tenthous + 1), format('%s:00:%s:00:%s:00', to_hex(odd), to_hex(even), to_hex(hundred))::macaddr, inet '10.2.3.4/24' + tenthous, cidr '10.2.3/24' + tenthous, substr(stringu1, 1, 1)::bpchar, date '1995-08-15' + tenthous, time '01:20:30' + thousand * interval '18.5 second', timestamp '1942-07-23 03:05:09' + tenthous * interval '36.38 hours', timestamptz '1972-10-10 03:00' + thousand * interval '1 hour', justify_days(justify_hours(tenthous * interval '12 minutes')), timetz '01:30:20+02' + hundred * interval '15 seconds', thousand::bit(10), tenthous::bit(16)::varbit, tenthous::numeric(36,30) * fivethous * even / (hundred + 1), format('%s%s-%s-%s-%s-%s%s%s', to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'))::uuid, int4range(thousand, twothousand), format('%s/%s%s', odd, even, tenthous)::pg_lsn, box(point(odd, even), point(thousand, twothousand)) FROM tenk1 ORDER BY unique2 LIMIT 100; -- throw in some NULL's and different values INSERT INTO brintest (inetcol, cidrcol, int4rangecol) SELECT inet 'fe80::6e40:8ff:fea9:8c46' + tenthous, cidr 'fe80::6e40:8ff:fea9:8c46' + tenthous, 'empty'::int4range FROM tenk1 ORDER BY thousand, tenthous LIMIT 25; CREATE INDEX brinidx ON brintest USING brin ( byteacol, charcol, namecol, int8col, int2col, int4col, textcol, oidcol, tidcol, float4col, float8col, macaddrcol, inetcol inet_inclusion_ops, inetcol inet_minmax_ops, cidrcol inet_inclusion_ops, cidrcol inet_minmax_ops, bpcharcol, datecol, timecol, timestampcol, timestamptzcol, intervalcol, timetzcol, bitcol, varbitcol, numericcol, uuidcol, int4rangecol, lsncol, boxcol ) with (pages_per_range = 1); CREATE TABLE brinopers (colname name, typ text, op text[], value text[], matches int[], check (cardinality(op) = cardinality(value)), check (cardinality(op) = cardinality(matches))); INSERT INTO brinopers VALUES ('byteacol', 'bytea', '{>, >=, =, <=, <}', '{AAAAAA, AAAAAA, BNAAAABNAAAABNAAAABNAAAABNAAAABNAAAABNAAAABNAAAA, ZZZZZZ, ZZZZZZ}', '{100, 100, 1, 100, 100}'), ('charcol', '"char"', '{>, >=, =, <=, <}', '{A, A, M, Z, Z}', '{97, 100, 6, 100, 98}'), ('namecol', 'name', '{>, >=, =, <=, <}', '{AAAAAA, AAAAAA, MAAAAA, ZZAAAA, ZZAAAA}', '{100, 100, 2, 100, 100}'), ('int2col', 'int2', '{>, >=, =, <=, <}', '{0, 0, 800, 999, 999}', '{100, 100, 1, 100, 100}'), ('int2col', 'int4', '{>, >=, =, <=, <}', '{0, 0, 800, 999, 1999}', '{100, 100, 1, 100, 100}'), ('int2col', 'int8', '{>, >=, =, <=, <}', '{0, 0, 800, 999, 1428427143}', '{100, 100, 1, 100, 100}'), ('int4col', 'int2', '{>, >=, =, <=, <}', '{0, 0, 800, 1999, 1999}', '{100, 100, 1, 100, 100}'), ('int4col', 'int4', '{>, >=, =, <=, <}', '{0, 0, 800, 1999, 1999}', '{100, 100, 1, 100, 100}'), ('int4col', 'int8', '{>, >=, =, <=, <}', '{0, 0, 800, 1999, 1428427143}', '{100, 100, 1, 100, 100}'), ('int8col', 'int2', '{>, >=}', '{0, 0}', '{100, 100}'), ('int8col', 'int4', '{>, >=}', '{0, 0}', '{100, 100}'), ('int8col', 'int8', '{>, >=, =, <=, <}', '{0, 0, 1257141600, 1428427143, 1428427143}', '{100, 100, 1, 100, 100}'), ('textcol', 'text', '{>, >=, =, <=, <}', '{ABABAB, ABABAB, BNAAAABNAAAABNAAAABNAAAABNAAAABNAAAABNAAAABNAAAA, ZZAAAA, ZZAAAA}', '{100, 100, 1, 100, 100}'), ('oidcol', 'oid', '{>, >=, =, <=, <}', '{0, 0, 8800, 9999, 9999}', '{100, 100, 1, 100, 100}'), ('tidcol', 'tid', '{>, >=, =, <=, <}', '{"(0,0)", "(0,0)", "(8800,0)", "(9999,19)", "(9999,19)"}', '{100, 100, 1, 100, 100}'), ('float4col', 'float4', '{>, >=, =, <=, <}', '{0.0103093, 0.0103093, 1, 1, 1}', '{100, 100, 4, 100, 96}'), ('float4col', 'float8', '{>, >=, =, <=, <}', '{0.0103093, 0.0103093, 1, 1, 1}', '{100, 100, 4, 100, 96}'), ('float8col', 'float4', '{>, >=, =, <=, <}', '{0, 0, 0, 1.98, 1.98}', '{99, 100, 1, 100, 100}'), ('float8col', 'float8', '{>, >=, =, <=, <}', '{0, 0, 0, 1.98, 1.98}', '{99, 100, 1, 100, 100}'), ('macaddrcol', 'macaddr', '{>, >=, =, <=, <}', '{00:00:01:00:00:00, 00:00:01:00:00:00, 2c:00:2d:00:16:00, ff:fe:00:00:00:00, ff:fe:00:00:00:00}', '{99, 100, 2, 100, 100}'), ('inetcol', 'inet', '{&&, =, <, <=, >, >=, >>=, >>, <<=, <<}', '{10/8, 10.2.14.231/24, 255.255.255.255, 255.255.255.255, 0.0.0.0, 0.0.0.0, 10.2.14.231/24, 10.2.14.231/25, 10.2.14.231/8, 0/0}', '{100, 1, 100, 100, 125, 125, 2, 2, 100, 100}'), ('inetcol', 'inet', '{&&, >>=, <<=, =}', '{fe80::6e40:8ff:fea9:a673/32, fe80::6e40:8ff:fea9:8c46, fe80::6e40:8ff:fea9:a673/32, fe80::6e40:8ff:fea9:8c46}', '{25, 1, 25, 1}'), ('inetcol', 'cidr', '{&&, <, <=, >, >=, >>=, >>, <<=, <<}', '{10/8, 255.255.255.255, 255.255.255.255, 0.0.0.0, 0.0.0.0, 10.2.14/24, 10.2.14/25, 10/8, 0/0}', '{100, 100, 100, 125, 125, 2, 2, 100, 100}'), ('inetcol', 'cidr', '{&&, >>=, <<=, =}', '{fe80::/32, fe80::6e40:8ff:fea9:8c46, fe80::/32, fe80::6e40:8ff:fea9:8c46}', '{25, 1, 25, 1}'), ('cidrcol', 'inet', '{&&, =, <, <=, >, >=, >>=, >>, <<=, <<}', '{10/8, 10.2.14/24, 255.255.255.255, 255.255.255.255, 0.0.0.0, 0.0.0.0, 10.2.14.231/24, 10.2.14.231/25, 10.2.14.231/8, 0/0}', '{100, 2, 100, 100, 125, 125, 2, 2, 100, 100}'), ('cidrcol', 'inet', '{&&, >>=, <<=, =}', '{fe80::6e40:8ff:fea9:a673/32, fe80::6e40:8ff:fea9:8c46, fe80::6e40:8ff:fea9:a673/32, fe80::6e40:8ff:fea9:8c46}', '{25, 1, 25, 1}'), ('cidrcol', 'cidr', '{&&, =, <, <=, >, >=, >>=, >>, <<=, <<}', '{10/8, 10.2.14/24, 255.255.255.255, 255.255.255.255, 0.0.0.0, 0.0.0.0, 10.2.14/24, 10.2.14/25, 10/8, 0/0}', '{100, 2, 100, 100, 125, 125, 2, 2, 100, 100}'), ('cidrcol', 'cidr', '{&&, >>=, <<=, =}', '{fe80::/32, fe80::6e40:8ff:fea9:8c46, fe80::/32, fe80::6e40:8ff:fea9:8c46}', '{25, 1, 25, 1}'), ('bpcharcol', 'bpchar', '{>, >=, =, <=, <}', '{A, A, W, Z, Z}', '{97, 100, 6, 100, 98}'), ('datecol', 'date', '{>, >=, =, <=, <}', '{1995-08-15, 1995-08-15, 2009-12-01, 2022-12-30, 2022-12-30}', '{100, 100, 1, 100, 100}'), ('timecol', 'time', '{>, >=, =, <=, <}', '{01:20:30, 01:20:30, 02:28:57, 06:28:31.5, 06:28:31.5}', '{100, 100, 1, 100, 100}'), ('timestampcol', 'timestamp', '{>, >=, =, <=, <}', '{1942-07-23 03:05:09, 1942-07-23 03:05:09, 1964-03-24 19:26:45, 1984-01-20 22:42:21, 1984-01-20 22:42:21}', '{100, 100, 1, 100, 100}'), ('timestampcol', 'timestamptz', '{>, >=, =, <=, <}', '{1942-07-23 03:05:09, 1942-07-23 03:05:09, 1964-03-24 19:26:45, 1984-01-20 22:42:21, 1984-01-20 22:42:21}', '{100, 100, 1, 100, 100}'), ('timestamptzcol', 'timestamptz', '{>, >=, =, <=, <}', '{1972-10-10 03:00:00-04, 1972-10-10 03:00:00-04, 1972-10-19 09:00:00-07, 1972-11-20 19:00:00-03, 1972-11-20 19:00:00-03}', '{100, 100, 1, 100, 100}'), ('intervalcol', 'interval', '{>, >=, =, <=, <}', '{00:00:00, 00:00:00, 1 mons 13 days 12:24, 2 mons 23 days 07:48:00, 1 year}', '{100, 100, 1, 100, 100}'), ('timetzcol', 'timetz', '{>, >=, =, <=, <}', '{01:30:20+02, 01:30:20+02, 01:35:50+02, 23:55:05+02, 23:55:05+02}', '{99, 100, 2, 100, 100}'), ('bitcol', 'bit(10)', '{>, >=, =, <=, <}', '{0000000010, 0000000010, 0011011110, 1111111000, 1111111000}', '{100, 100, 1, 100, 100}'), ('varbitcol', 'varbit(16)', '{>, >=, =, <=, <}', '{0000000000000100, 0000000000000100, 0001010001100110, 1111111111111000, 1111111111111000}', '{100, 100, 1, 100, 100}'), ('numericcol', 'numeric', '{>, >=, =, <=, <}', '{0.00, 0.01, 2268164.347826086956521739130434782609, 99470151.9, 99470151.9}', '{100, 100, 1, 100, 100}'), ('uuidcol', 'uuid', '{>, >=, =, <=, <}', '{00040004-0004-0004-0004-000400040004, 00040004-0004-0004-0004-000400040004, 52225222-5222-5222-5222-522252225222, 99989998-9998-9998-9998-999899989998, 99989998-9998-9998-9998-999899989998}', '{100, 100, 1, 100, 100}'), ('int4rangecol', 'int4range', '{<<, &<, &&, &>, >>, @>, <@, =, <, <=, >, >=}', '{"[10000,)","[10000,)","(,]","[3,4)","[36,44)","(1500,1501]","[3,4)","[222,1222)","[36,44)","[43,1043)","[367,4466)","[519,)"}', '{53, 53, 53, 53, 50, 22, 72, 1, 74, 75, 34, 21}'), ('int4rangecol', 'int4range', '{@>, <@, =, <=, >, >=}', '{empty, empty, empty, empty, empty, empty}', '{125, 72, 72, 72, 53, 125}'), ('int4rangecol', 'int4', '{@>}', '{1500}', '{22}'), ('lsncol', 'pg_lsn', '{>, >=, =, <=, <, IS, IS NOT}', '{0/1200, 0/1200, 44/455222, 198/1999799, 198/1999799, NULL, NULL}', '{100, 100, 1, 100, 100, 25, 100}'), ('boxcol', 'point', '{@>}', '{"(500,43)"}', '{11}'), ('boxcol', 'box', '{<<, &<, &&, &>, >>, <<|, &<|, |&>, |>>, @>, <@, ~=}', '{"((1000,2000),(3000,4000))","((1,2),(3000,4000))","((1,2),(3000,4000))","((1,2),(3000,4000))","((1,2),(3,4))","((1000,2000),(3000,4000))","((1,2000),(3,4000))","((1000,2),(3000,4))","((1,2),(3,4))","((1,2),(300,400))","((1,2),(3000,4000))","((222,1222),(44,45))"}', '{100, 100, 100, 99, 96, 100, 100, 99, 96, 1, 99, 1}'); DO $x$ DECLARE r record; r2 record; cond text; idx_ctids tid[]; ss_ctids tid[]; count int; plan_ok bool; plan_line text; BEGIN FOR r IN SELECT colname, oper, typ, value[ordinality], matches[ordinality] FROM brinopers, unnest(op) WITH ORDINALITY AS oper LOOP -- prepare the condition IF r.value IS NULL THEN cond := format('%I %s %L', r.colname, r.oper, r.value); ELSE cond := format('%I %s %L::%s', r.colname, r.oper, r.value, r.typ); END IF; -- run the query using the brin index SET enable_seqscan = 0; SET enable_bitmapscan = 1; plan_ok := false; FOR plan_line IN EXECUTE format($y$EXPLAIN SELECT array_agg(ctid) FROM brintest WHERE %s $y$, cond) LOOP IF plan_line LIKE '%Bitmap Heap Scan on brintest%' THEN plan_ok := true; END IF; END LOOP; IF NOT plan_ok THEN RAISE WARNING 'did not get bitmap indexscan plan for %', r; END IF; EXECUTE format($y$SELECT array_agg(ctid) FROM brintest WHERE %s $y$, cond) INTO idx_ctids; -- run the query using a seqscan SET enable_seqscan = 1; SET enable_bitmapscan = 0; plan_ok := false; FOR plan_line IN EXECUTE format($y$EXPLAIN SELECT array_agg(ctid) FROM brintest WHERE %s $y$, cond) LOOP IF plan_line LIKE '%Seq Scan on brintest%' THEN plan_ok := true; END IF; END LOOP; IF NOT plan_ok THEN RAISE WARNING 'did not get seqscan plan for %', r; END IF; EXECUTE format($y$SELECT array_agg(ctid) FROM brintest WHERE %s $y$, cond) INTO ss_ctids; -- make sure both return the same results count := array_length(idx_ctids, 1); IF NOT (count = array_length(ss_ctids, 1) AND idx_ctids @> ss_ctids AND idx_ctids <@ ss_ctids) THEN -- report the results of each scan to make the differences obvious RAISE WARNING 'something not right in %: count %', r, count; SET enable_seqscan = 1; SET enable_bitmapscan = 0; FOR r2 IN EXECUTE 'SELECT ' || r.colname || ' FROM brintest WHERE ' || cond LOOP RAISE NOTICE 'seqscan: %', r2; END LOOP; SET enable_seqscan = 0; SET enable_bitmapscan = 1; FOR r2 IN EXECUTE 'SELECT ' || r.colname || ' FROM brintest WHERE ' || cond LOOP RAISE NOTICE 'bitmapscan: %', r2; END LOOP; END IF; -- make sure we found expected number of matches IF count != r.matches THEN RAISE WARNING 'unexpected number of results % for %', count, r; END IF; END LOOP; END; $x$; RESET enable_seqscan; RESET enable_bitmapscan; INSERT INTO brintest SELECT repeat(stringu1, 42)::bytea, substr(stringu1, 1, 1)::"char", stringu1::name, 142857 * tenthous, thousand, twothousand, repeat(stringu1, 42), unique1::oid, format('(%s,%s)', tenthous, twenty)::tid, (four + 1.0)/(hundred+1), odd::float8 / (tenthous + 1), format('%s:00:%s:00:%s:00', to_hex(odd), to_hex(even), to_hex(hundred))::macaddr, inet '10.2.3.4' + tenthous, cidr '10.2.3/24' + tenthous, substr(stringu1, 1, 1)::bpchar, date '1995-08-15' + tenthous, time '01:20:30' + thousand * interval '18.5 second', timestamp '1942-07-23 03:05:09' + tenthous * interval '36.38 hours', timestamptz '1972-10-10 03:00' + thousand * interval '1 hour', justify_days(justify_hours(tenthous * interval '12 minutes')), timetz '01:30:20' + hundred * interval '15 seconds', thousand::bit(10), tenthous::bit(16)::varbit, tenthous::numeric(36,30) * fivethous * even / (hundred + 1), format('%s%s-%s-%s-%s-%s%s%s', to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'), to_char(tenthous, 'FM0000'))::uuid, int4range(thousand, twothousand), format('%s/%s%s', odd, even, tenthous)::pg_lsn, box(point(odd, even), point(thousand, twothousand)) FROM tenk1 ORDER BY unique2 LIMIT 5 OFFSET 5; SELECT brin_desummarize_range('brinidx', 0); VACUUM brintest; -- force a summarization cycle in brinidx UPDATE brintest SET int8col = int8col * int4col; UPDATE brintest SET textcol = '' WHERE textcol IS NOT NULL; -- Tests for brin_summarize_new_values SELECT brin_summarize_new_values('brintest'); -- error, not an index SELECT brin_summarize_new_values('tenk1_unique1'); -- error, not a BRIN index SELECT brin_summarize_new_values('brinidx'); -- ok, no change expected -- Tests for brin_desummarize_range SELECT brin_desummarize_range('brinidx', -1); -- error, invalid range SELECT brin_desummarize_range('brinidx', 0); SELECT brin_desummarize_range('brinidx', 0); SELECT brin_desummarize_range('brinidx', 100000000); -- Test brin_summarize_range CREATE TABLE brin_summarize ( value int ) WITH (fillfactor=10, autovacuum_enabled=false); CREATE INDEX brin_summarize_idx ON brin_summarize USING brin (value) WITH (pages_per_range=2); -- Fill a few pages DO $$ DECLARE curtid tid; BEGIN LOOP INSERT INTO brin_summarize VALUES (1) RETURNING ctid INTO curtid; EXIT WHEN curtid > tid '(2, 0)'; END LOOP; END; $$; -- summarize one range SELECT brin_summarize_range('brin_summarize_idx', 0); -- nothing: already summarized SELECT brin_summarize_range('brin_summarize_idx', 1); -- summarize one range SELECT brin_summarize_range('brin_summarize_idx', 2); -- nothing: page doesn't exist in table SELECT brin_summarize_range('brin_summarize_idx', 4294967295); -- invalid block number values SELECT brin_summarize_range('brin_summarize_idx', -1); SELECT brin_summarize_range('brin_summarize_idx', 4294967296); -- test value merging in add_value CREATE TABLE brintest_2 (n numrange); CREATE INDEX brinidx_2 ON brintest_2 USING brin (n); INSERT INTO brintest_2 VALUES ('empty'); INSERT INTO brintest_2 VALUES (numrange(0, 2^1000::numeric)); INSERT INTO brintest_2 VALUES ('(-1, 0)'); SELECT brin_desummarize_range('brinidx', 0); SELECT brin_summarize_range('brinidx', 0); DROP TABLE brintest_2; -- test brin cost estimates behave sanely based on correlation of values CREATE TABLE brin_test (a INT, b INT); INSERT INTO brin_test SELECT x/100,x%100 FROM generate_series(1,10000) x(x); CREATE INDEX brin_test_a_idx ON brin_test USING brin (a) WITH (pages_per_range = 2); CREATE INDEX brin_test_b_idx ON brin_test USING brin (b) WITH (pages_per_range = 2); VACUUM ANALYZE brin_test; -- Ensure brin index is used when columns are perfectly correlated EXPLAIN (COSTS OFF) SELECT * FROM brin_test WHERE a = 1; -- Ensure brin index is not used when values are not correlated EXPLAIN (COSTS OFF) SELECT * FROM brin_test WHERE b = 1; -- make sure data are properly de-toasted in BRIN index CREATE TABLE brintest_3 (a text, b text, c text, d text); -- long random strings (~2000 chars each, so ~6kB for min/max on two -- columns) to trigger toasting WITH rand_value AS (SELECT string_agg(md5(i::text),'') AS val FROM generate_series(1,60) s(i)) INSERT INTO brintest_3 SELECT val, val, val, val FROM rand_value; CREATE INDEX brin_test_toast_idx ON brintest_3 USING brin (b, c); DELETE FROM brintest_3; -- We need to wait a bit for all transactions to complete, so that the -- vacuum actually removes the TOAST rows. Creating an index concurrently -- is a one way to achieve that, because it does exactly such wait. CREATE INDEX CONCURRENTLY brin_test_temp_idx ON brintest_3(a); DROP INDEX brin_test_temp_idx; -- vacuum the table, to discard TOAST data VACUUM brintest_3; -- retry insert with a different random-looking (but deterministic) value -- the value is different, and so should replace either min or max in the -- brin summary WITH rand_value AS (SELECT string_agg(md5((-i)::text),'') AS val FROM generate_series(1,60) s(i)) INSERT INTO brintest_3 SELECT val, val, val, val FROM rand_value; -- now try some queries, accessing the brin index SET enable_seqscan = off; EXPLAIN (COSTS OFF) SELECT * FROM brintest_3 WHERE b < '0'; SELECT * FROM brintest_3 WHERE b < '0'; DROP TABLE brintest_3; RESET enable_seqscan; libpg_query-13-2.1.0/test/sql/postgres_regress/btree_index.sql000066400000000000000000000135371413137616400244630ustar00rootroot00000000000000-- -- BTREE_INDEX -- test retrieval of min/max keys for each index -- SELECT b.* FROM bt_i4_heap b WHERE b.seqno < 1; SELECT b.* FROM bt_i4_heap b WHERE b.seqno >= 9999; SELECT b.* FROM bt_i4_heap b WHERE b.seqno = 4500; SELECT b.* FROM bt_name_heap b WHERE b.seqno < '1'::name; SELECT b.* FROM bt_name_heap b WHERE b.seqno >= '9999'::name; SELECT b.* FROM bt_name_heap b WHERE b.seqno = '4500'::name; SELECT b.* FROM bt_txt_heap b WHERE b.seqno < '1'::text; SELECT b.* FROM bt_txt_heap b WHERE b.seqno >= '9999'::text; SELECT b.* FROM bt_txt_heap b WHERE b.seqno = '4500'::text; SELECT b.* FROM bt_f8_heap b WHERE b.seqno < '1'::float8; SELECT b.* FROM bt_f8_heap b WHERE b.seqno >= '9999'::float8; SELECT b.* FROM bt_f8_heap b WHERE b.seqno = '4500'::float8; -- -- Check correct optimization of LIKE (special index operator support) -- for both indexscan and bitmapscan cases -- set enable_seqscan to false; set enable_indexscan to true; set enable_bitmapscan to false; explain (costs off) select proname from pg_proc where proname like E'RI\\_FKey%del' order by 1; select proname from pg_proc where proname like E'RI\\_FKey%del' order by 1; explain (costs off) select proname from pg_proc where proname ilike '00%foo' order by 1; select proname from pg_proc where proname ilike '00%foo' order by 1; explain (costs off) select proname from pg_proc where proname ilike 'ri%foo' order by 1; set enable_indexscan to false; set enable_bitmapscan to true; explain (costs off) select proname from pg_proc where proname like E'RI\\_FKey%del' order by 1; select proname from pg_proc where proname like E'RI\\_FKey%del' order by 1; explain (costs off) select proname from pg_proc where proname ilike '00%foo' order by 1; select proname from pg_proc where proname ilike '00%foo' order by 1; explain (costs off) select proname from pg_proc where proname ilike 'ri%foo' order by 1; reset enable_seqscan; reset enable_indexscan; reset enable_bitmapscan; -- Also check LIKE optimization with binary-compatible cases create temp table btree_bpchar (f1 text collate "C"); create index on btree_bpchar(f1 bpchar_ops) WITH (deduplicate_items=on); insert into btree_bpchar values ('foo'), ('fool'), ('bar'), ('quux'); -- doesn't match index: explain (costs off) select * from btree_bpchar where f1 like 'foo'; select * from btree_bpchar where f1 like 'foo'; explain (costs off) select * from btree_bpchar where f1 like 'foo%'; select * from btree_bpchar where f1 like 'foo%'; -- these do match the index: explain (costs off) select * from btree_bpchar where f1::bpchar like 'foo'; select * from btree_bpchar where f1::bpchar like 'foo'; explain (costs off) select * from btree_bpchar where f1::bpchar like 'foo%'; select * from btree_bpchar where f1::bpchar like 'foo%'; -- get test coverage for "single value" deduplication strategy: insert into btree_bpchar select 'foo' from generate_series(1,1500); -- -- Perform unique checking, with and without the use of deduplication -- CREATE TABLE dedup_unique_test_table (a int) WITH (autovacuum_enabled=false); CREATE UNIQUE INDEX dedup_unique ON dedup_unique_test_table (a) WITH (deduplicate_items=on); CREATE UNIQUE INDEX plain_unique ON dedup_unique_test_table (a) WITH (deduplicate_items=off); -- Generate enough garbage tuples in index to ensure that even the unique index -- with deduplication enabled has to check multiple leaf pages during unique -- checking (at least with a BLCKSZ of 8192 or less) DO $$ BEGIN FOR r IN 1..1350 LOOP DELETE FROM dedup_unique_test_table; INSERT INTO dedup_unique_test_table SELECT 1; END LOOP; END$$; -- Exercise the LP_DEAD-bit-set tuple deletion code with a posting list tuple. -- The implementation prefers deleting existing items to merging any duplicate -- tuples into a posting list, so we need an explicit test to make sure we get -- coverage (note that this test also assumes BLCKSZ is 8192 or less): DROP INDEX plain_unique; DELETE FROM dedup_unique_test_table WHERE a = 1; INSERT INTO dedup_unique_test_table SELECT i FROM generate_series(0,450) i; -- -- Test B-tree fast path (cache rightmost leaf page) optimization. -- -- First create a tree that's at least three levels deep (i.e. has one level -- between the root and leaf levels). The text inserted is long. It won't be -- TOAST compressed because we use plain storage in the table. Only a few -- index tuples fit on each internal page, allowing us to get a tall tree with -- few pages. (A tall tree is required to trigger caching.) -- -- The text column must be the leading column in the index, since suffix -- truncation would otherwise truncate tuples on internal pages, leaving us -- with a short tree. create table btree_tall_tbl(id int4, t text); alter table btree_tall_tbl alter COLUMN t set storage plain; create index btree_tall_idx on btree_tall_tbl (t, id) with (fillfactor = 10); insert into btree_tall_tbl select g, repeat('x', 250) from generate_series(1, 130) g; -- -- Test for multilevel page deletion -- CREATE TABLE delete_test_table (a bigint, b bigint, c bigint, d bigint); INSERT INTO delete_test_table SELECT i, 1, 2, 3 FROM generate_series(1,80000) i; ALTER TABLE delete_test_table ADD PRIMARY KEY (a,b,c,d); -- Delete most entries, and vacuum, deleting internal pages and creating "fast -- root" DELETE FROM delete_test_table WHERE a < 79990; VACUUM delete_test_table; -- -- Test B-tree insertion with a metapage update (XLOG_BTREE_INSERT_META -- WAL record type). This happens when a "fast root" page is split. This -- also creates coverage for nbtree FSM page recycling. -- -- The vacuum above should've turned the leaf page into a fast root. We just -- need to insert some rows to cause the fast root page to split. INSERT INTO delete_test_table SELECT i, 1, 2, 3 FROM generate_series(1,1000) i; -- Test unsupported btree opclass parameters create index on btree_tall_tbl (id int4_ops(foo=1)); libpg_query-13-2.1.0/test/sql/postgres_regress/case.sql000066400000000000000000000136421413137616400231030ustar00rootroot00000000000000-- -- CASE -- Test the case statement -- CREATE TABLE CASE_TBL ( i integer, f double precision ); CREATE TABLE CASE2_TBL ( i integer, j integer ); INSERT INTO CASE_TBL VALUES (1, 10.1); INSERT INTO CASE_TBL VALUES (2, 20.2); INSERT INTO CASE_TBL VALUES (3, -30.3); INSERT INTO CASE_TBL VALUES (4, NULL); INSERT INTO CASE2_TBL VALUES (1, -1); INSERT INTO CASE2_TBL VALUES (2, -2); INSERT INTO CASE2_TBL VALUES (3, -3); INSERT INTO CASE2_TBL VALUES (2, -4); INSERT INTO CASE2_TBL VALUES (1, NULL); INSERT INTO CASE2_TBL VALUES (NULL, -6); -- -- Simplest examples without tables -- SELECT '3' AS "One", CASE WHEN 1 < 2 THEN 3 END AS "Simple WHEN"; SELECT '' AS "One", CASE WHEN 1 > 2 THEN 3 END AS "Simple default"; SELECT '3' AS "One", CASE WHEN 1 < 2 THEN 3 ELSE 4 END AS "Simple ELSE"; SELECT '4' AS "One", CASE WHEN 1 > 2 THEN 3 ELSE 4 END AS "ELSE default"; SELECT '6' AS "One", CASE WHEN 1 > 2 THEN 3 WHEN 4 < 5 THEN 6 ELSE 7 END AS "Two WHEN with default"; SELECT '7' AS "None", CASE WHEN random() < 0 THEN 1 END AS "NULL on no matches"; -- Constant-expression folding shouldn't evaluate unreachable subexpressions SELECT CASE WHEN 1=0 THEN 1/0 WHEN 1=1 THEN 1 ELSE 2/0 END; SELECT CASE 1 WHEN 0 THEN 1/0 WHEN 1 THEN 1 ELSE 2/0 END; -- However we do not currently suppress folding of potentially -- reachable subexpressions SELECT CASE WHEN i > 100 THEN 1/0 ELSE 0 END FROM case_tbl; -- Test for cases involving untyped literals in test expression SELECT CASE 'a' WHEN 'a' THEN 1 ELSE 2 END; -- -- Examples of targets involving tables -- SELECT '' AS "Five", CASE WHEN i >= 3 THEN i END AS ">= 3 or Null" FROM CASE_TBL; SELECT '' AS "Five", CASE WHEN i >= 3 THEN (i + i) ELSE i END AS "Simplest Math" FROM CASE_TBL; SELECT '' AS "Five", i AS "Value", CASE WHEN (i < 0) THEN 'small' WHEN (i = 0) THEN 'zero' WHEN (i = 1) THEN 'one' WHEN (i = 2) THEN 'two' ELSE 'big' END AS "Category" FROM CASE_TBL; SELECT '' AS "Five", CASE WHEN ((i < 0) or (i < 0)) THEN 'small' WHEN ((i = 0) or (i = 0)) THEN 'zero' WHEN ((i = 1) or (i = 1)) THEN 'one' WHEN ((i = 2) or (i = 2)) THEN 'two' ELSE 'big' END AS "Category" FROM CASE_TBL; -- -- Examples of qualifications involving tables -- -- -- NULLIF() and COALESCE() -- Shorthand forms for typical CASE constructs -- defined in the SQL standard. -- SELECT * FROM CASE_TBL WHERE COALESCE(f,i) = 4; SELECT * FROM CASE_TBL WHERE NULLIF(f,i) = 2; SELECT COALESCE(a.f, b.i, b.j) FROM CASE_TBL a, CASE2_TBL b; SELECT * FROM CASE_TBL a, CASE2_TBL b WHERE COALESCE(a.f, b.i, b.j) = 2; SELECT '' AS Five, NULLIF(a.i,b.i) AS "NULLIF(a.i,b.i)", NULLIF(b.i, 4) AS "NULLIF(b.i,4)" FROM CASE_TBL a, CASE2_TBL b; SELECT '' AS "Two", * FROM CASE_TBL a, CASE2_TBL b WHERE COALESCE(f,b.i) = 2; -- -- Examples of updates involving tables -- UPDATE CASE_TBL SET i = CASE WHEN i >= 3 THEN (- i) ELSE (2 * i) END; SELECT * FROM CASE_TBL; UPDATE CASE_TBL SET i = CASE WHEN i >= 2 THEN (2 * i) ELSE (3 * i) END; SELECT * FROM CASE_TBL; UPDATE CASE_TBL SET i = CASE WHEN b.i >= 2 THEN (2 * j) ELSE (3 * j) END FROM CASE2_TBL b WHERE j = -CASE_TBL.i; SELECT * FROM CASE_TBL; -- -- Nested CASE expressions -- -- This test exercises a bug caused by aliasing econtext->caseValue_isNull -- with the isNull argument of the inner CASE's CaseExpr evaluation. After -- evaluating the vol(null) expression in the inner CASE's second WHEN-clause, -- the isNull flag for the case test value incorrectly became true, causing -- the third WHEN-clause not to match. The volatile function calls are needed -- to prevent constant-folding in the planner, which would hide the bug. -- Wrap this in a single transaction so the transient '=' operator doesn't -- cause problems in concurrent sessions BEGIN; CREATE FUNCTION vol(text) returns text as 'begin return $1; end' language plpgsql volatile; SELECT CASE (CASE vol('bar') WHEN 'foo' THEN 'it was foo!' WHEN vol(null) THEN 'null input' WHEN 'bar' THEN 'it was bar!' END ) WHEN 'it was foo!' THEN 'foo recognized' WHEN 'it was bar!' THEN 'bar recognized' ELSE 'unrecognized' END; -- In this case, we can't inline the SQL function without confusing things. CREATE DOMAIN foodomain AS text; CREATE FUNCTION volfoo(text) returns foodomain as 'begin return $1::foodomain; end' language plpgsql volatile; CREATE FUNCTION inline_eq(foodomain, foodomain) returns boolean as 'SELECT CASE $2::text WHEN $1::text THEN true ELSE false END' language sql; CREATE OPERATOR = (procedure = inline_eq, leftarg = foodomain, rightarg = foodomain); SELECT CASE volfoo('bar') WHEN 'foo'::foodomain THEN 'is foo' ELSE 'is not foo' END; ROLLBACK; -- Test multiple evaluation of a CASE arg that is a read/write object (#14472) -- Wrap this in a single transaction so the transient '=' operator doesn't -- cause problems in concurrent sessions BEGIN; CREATE DOMAIN arrdomain AS int[]; CREATE FUNCTION make_ad(int,int) returns arrdomain as 'declare x arrdomain; begin x := array[$1,$2]; return x; end' language plpgsql volatile; CREATE FUNCTION ad_eq(arrdomain, arrdomain) returns boolean as 'begin return array_eq($1, $2); end' language plpgsql; CREATE OPERATOR = (procedure = ad_eq, leftarg = arrdomain, rightarg = arrdomain); SELECT CASE make_ad(1,2) WHEN array[2,4]::arrdomain THEN 'wrong' WHEN array[2,5]::arrdomain THEN 'still wrong' WHEN array[1,2]::arrdomain THEN 'right' END; ROLLBACK; -- Test interaction of CASE with ArrayCoerceExpr (bug #15471) BEGIN; CREATE TYPE casetestenum AS ENUM ('e', 'f', 'g'); SELECT CASE 'foo'::text WHEN 'foo' THEN ARRAY['a', 'b', 'c', 'd'] || enum_range(NULL::casetestenum)::text[] ELSE ARRAY['x', 'y'] END; ROLLBACK; -- -- Clean up -- DROP TABLE CASE_TBL; DROP TABLE CASE2_TBL; libpg_query-13-2.1.0/test/sql/postgres_regress/char.sql000066400000000000000000000026161413137616400231040ustar00rootroot00000000000000-- -- CHAR -- -- fixed-length by value -- internally passed by value if <= 4 bytes in storage SELECT char 'c' = char 'c' AS true; -- -- Build a table for testing -- CREATE TABLE CHAR_TBL(f1 char); INSERT INTO CHAR_TBL (f1) VALUES ('a'); INSERT INTO CHAR_TBL (f1) VALUES ('A'); -- any of the following three input formats are acceptable INSERT INTO CHAR_TBL (f1) VALUES ('1'); INSERT INTO CHAR_TBL (f1) VALUES (2); INSERT INTO CHAR_TBL (f1) VALUES ('3'); -- zero-length char INSERT INTO CHAR_TBL (f1) VALUES (''); -- try char's of greater than 1 length INSERT INTO CHAR_TBL (f1) VALUES ('cd'); INSERT INTO CHAR_TBL (f1) VALUES ('c '); SELECT '' AS seven, * FROM CHAR_TBL; SELECT '' AS six, c.* FROM CHAR_TBL c WHERE c.f1 <> 'a'; SELECT '' AS one, c.* FROM CHAR_TBL c WHERE c.f1 = 'a'; SELECT '' AS five, c.* FROM CHAR_TBL c WHERE c.f1 < 'a'; SELECT '' AS six, c.* FROM CHAR_TBL c WHERE c.f1 <= 'a'; SELECT '' AS one, c.* FROM CHAR_TBL c WHERE c.f1 > 'a'; SELECT '' AS two, c.* FROM CHAR_TBL c WHERE c.f1 >= 'a'; DROP TABLE CHAR_TBL; -- -- Now test longer arrays of char -- CREATE TABLE CHAR_TBL(f1 char(4)); INSERT INTO CHAR_TBL (f1) VALUES ('a'); INSERT INTO CHAR_TBL (f1) VALUES ('ab'); INSERT INTO CHAR_TBL (f1) VALUES ('abcd'); INSERT INTO CHAR_TBL (f1) VALUES ('abcde'); INSERT INTO CHAR_TBL (f1) VALUES ('abcd '); SELECT '' AS four, * FROM CHAR_TBL; libpg_query-13-2.1.0/test/sql/postgres_regress/circle.sql000066400000000000000000000026301413137616400234240ustar00rootroot00000000000000-- -- CIRCLE -- -- Back off displayed precision a little bit to reduce platform-to-platform -- variation in results. SET extra_float_digits = -1; CREATE TABLE CIRCLE_TBL (f1 circle); INSERT INTO CIRCLE_TBL VALUES ('<(5,1),3>'); INSERT INTO CIRCLE_TBL VALUES ('((1,2),100)'); INSERT INTO CIRCLE_TBL VALUES (' 1 , 3 , 5 '); INSERT INTO CIRCLE_TBL VALUES (' ( ( 1 , 2 ) , 3 ) '); INSERT INTO CIRCLE_TBL VALUES (' ( 100 , 200 ) , 10 '); INSERT INTO CIRCLE_TBL VALUES (' < ( 100 , 1 ) , 115 > '); INSERT INTO CIRCLE_TBL VALUES ('<(3,5),0>'); -- Zero radius INSERT INTO CIRCLE_TBL VALUES ('<(3,5),NaN>'); -- NaN radius -- bad values INSERT INTO CIRCLE_TBL VALUES ('<(-100,0),-100>'); INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10'); INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10> x'); INSERT INTO CIRCLE_TBL VALUES ('1abc,3,5'); INSERT INTO CIRCLE_TBL VALUES ('(3,(1,2),3)'); SELECT * FROM CIRCLE_TBL; SELECT '' AS six, center(f1) AS center FROM CIRCLE_TBL; SELECT '' AS six, radius(f1) AS radius FROM CIRCLE_TBL; SELECT '' AS six, diameter(f1) AS diameter FROM CIRCLE_TBL; SELECT '' AS two, f1 FROM CIRCLE_TBL WHERE radius(f1) < 5; SELECT '' AS four, f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10; SELECT '' as five, c1.f1 AS one, c2.f1 AS two, (c1.f1 <-> c2.f1) AS distance FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0) ORDER BY distance, area(c1.f1), area(c2.f1); libpg_query-13-2.1.0/test/sql/postgres_regress/cluster.sql000066400000000000000000000232071413137616400236470ustar00rootroot00000000000000-- -- CLUSTER -- CREATE TABLE clstr_tst_s (rf_a SERIAL PRIMARY KEY, b INT); CREATE TABLE clstr_tst (a SERIAL PRIMARY KEY, b INT, c TEXT, d TEXT, CONSTRAINT clstr_tst_con FOREIGN KEY (b) REFERENCES clstr_tst_s); CREATE INDEX clstr_tst_b ON clstr_tst (b); CREATE INDEX clstr_tst_c ON clstr_tst (c); CREATE INDEX clstr_tst_c_b ON clstr_tst (c,b); CREATE INDEX clstr_tst_b_c ON clstr_tst (b,c); INSERT INTO clstr_tst_s (b) VALUES (0); INSERT INTO clstr_tst_s (b) SELECT b FROM clstr_tst_s; INSERT INTO clstr_tst_s (b) SELECT b FROM clstr_tst_s; INSERT INTO clstr_tst_s (b) SELECT b FROM clstr_tst_s; INSERT INTO clstr_tst_s (b) SELECT b FROM clstr_tst_s; INSERT INTO clstr_tst_s (b) SELECT b FROM clstr_tst_s; CREATE TABLE clstr_tst_inh () INHERITS (clstr_tst); INSERT INTO clstr_tst (b, c) VALUES (11, 'once'); INSERT INTO clstr_tst (b, c) VALUES (10, 'diez'); INSERT INTO clstr_tst (b, c) VALUES (31, 'treinta y uno'); INSERT INTO clstr_tst (b, c) VALUES (22, 'veintidos'); INSERT INTO clstr_tst (b, c) VALUES (3, 'tres'); INSERT INTO clstr_tst (b, c) VALUES (20, 'veinte'); INSERT INTO clstr_tst (b, c) VALUES (23, 'veintitres'); INSERT INTO clstr_tst (b, c) VALUES (21, 'veintiuno'); INSERT INTO clstr_tst (b, c) VALUES (4, 'cuatro'); INSERT INTO clstr_tst (b, c) VALUES (14, 'catorce'); INSERT INTO clstr_tst (b, c) VALUES (2, 'dos'); INSERT INTO clstr_tst (b, c) VALUES (18, 'dieciocho'); INSERT INTO clstr_tst (b, c) VALUES (27, 'veintisiete'); INSERT INTO clstr_tst (b, c) VALUES (25, 'veinticinco'); INSERT INTO clstr_tst (b, c) VALUES (13, 'trece'); INSERT INTO clstr_tst (b, c) VALUES (28, 'veintiocho'); INSERT INTO clstr_tst (b, c) VALUES (32, 'treinta y dos'); INSERT INTO clstr_tst (b, c) VALUES (5, 'cinco'); INSERT INTO clstr_tst (b, c) VALUES (29, 'veintinueve'); INSERT INTO clstr_tst (b, c) VALUES (1, 'uno'); INSERT INTO clstr_tst (b, c) VALUES (24, 'veinticuatro'); INSERT INTO clstr_tst (b, c) VALUES (30, 'treinta'); INSERT INTO clstr_tst (b, c) VALUES (12, 'doce'); INSERT INTO clstr_tst (b, c) VALUES (17, 'diecisiete'); INSERT INTO clstr_tst (b, c) VALUES (9, 'nueve'); INSERT INTO clstr_tst (b, c) VALUES (19, 'diecinueve'); INSERT INTO clstr_tst (b, c) VALUES (26, 'veintiseis'); INSERT INTO clstr_tst (b, c) VALUES (15, 'quince'); INSERT INTO clstr_tst (b, c) VALUES (7, 'siete'); INSERT INTO clstr_tst (b, c) VALUES (16, 'dieciseis'); INSERT INTO clstr_tst (b, c) VALUES (8, 'ocho'); -- This entry is needed to test that TOASTED values are copied correctly. INSERT INTO clstr_tst (b, c, d) VALUES (6, 'seis', repeat('xyzzy', 100000)); CLUSTER clstr_tst_c ON clstr_tst; SELECT a,b,c,substring(d for 30), length(d) from clstr_tst; SELECT a,b,c,substring(d for 30), length(d) from clstr_tst ORDER BY a; SELECT a,b,c,substring(d for 30), length(d) from clstr_tst ORDER BY b; SELECT a,b,c,substring(d for 30), length(d) from clstr_tst ORDER BY c; -- Verify that inheritance link still works INSERT INTO clstr_tst_inh VALUES (0, 100, 'in child table'); SELECT a,b,c,substring(d for 30), length(d) from clstr_tst; -- Verify that foreign key link still works INSERT INTO clstr_tst (b, c) VALUES (1111, 'this should fail'); SELECT conname FROM pg_constraint WHERE conrelid = 'clstr_tst'::regclass ORDER BY 1; SELECT relname, relkind, EXISTS(SELECT 1 FROM pg_class WHERE oid = c.reltoastrelid) AS hastoast FROM pg_class c WHERE relname LIKE 'clstr_tst%' ORDER BY relname; -- Verify that indisclustered is correctly set SELECT pg_class.relname FROM pg_index, pg_class, pg_class AS pg_class_2 WHERE pg_class.oid=indexrelid AND indrelid=pg_class_2.oid AND pg_class_2.relname = 'clstr_tst' AND indisclustered; -- Try changing indisclustered ALTER TABLE clstr_tst CLUSTER ON clstr_tst_b_c; SELECT pg_class.relname FROM pg_index, pg_class, pg_class AS pg_class_2 WHERE pg_class.oid=indexrelid AND indrelid=pg_class_2.oid AND pg_class_2.relname = 'clstr_tst' AND indisclustered; -- Try turning off all clustering ALTER TABLE clstr_tst SET WITHOUT CLUSTER; SELECT pg_class.relname FROM pg_index, pg_class, pg_class AS pg_class_2 WHERE pg_class.oid=indexrelid AND indrelid=pg_class_2.oid AND pg_class_2.relname = 'clstr_tst' AND indisclustered; -- Verify that clustering all tables does in fact cluster the right ones CREATE USER regress_clstr_user; CREATE TABLE clstr_1 (a INT PRIMARY KEY); CREATE TABLE clstr_2 (a INT PRIMARY KEY); CREATE TABLE clstr_3 (a INT PRIMARY KEY); ALTER TABLE clstr_1 OWNER TO regress_clstr_user; ALTER TABLE clstr_3 OWNER TO regress_clstr_user; GRANT SELECT ON clstr_2 TO regress_clstr_user; INSERT INTO clstr_1 VALUES (2); INSERT INTO clstr_1 VALUES (1); INSERT INTO clstr_2 VALUES (2); INSERT INTO clstr_2 VALUES (1); INSERT INTO clstr_3 VALUES (2); INSERT INTO clstr_3 VALUES (1); -- "CLUSTER " on a table that hasn't been clustered CLUSTER clstr_2; CLUSTER clstr_1_pkey ON clstr_1; CLUSTER clstr_2 USING clstr_2_pkey; SELECT * FROM clstr_1 UNION ALL SELECT * FROM clstr_2 UNION ALL SELECT * FROM clstr_3; -- revert to the original state DELETE FROM clstr_1; DELETE FROM clstr_2; DELETE FROM clstr_3; INSERT INTO clstr_1 VALUES (2); INSERT INTO clstr_1 VALUES (1); INSERT INTO clstr_2 VALUES (2); INSERT INTO clstr_2 VALUES (1); INSERT INTO clstr_3 VALUES (2); INSERT INTO clstr_3 VALUES (1); -- this user can only cluster clstr_1 and clstr_3, but the latter -- has not been clustered SET SESSION AUTHORIZATION regress_clstr_user; CLUSTER; SELECT * FROM clstr_1 UNION ALL SELECT * FROM clstr_2 UNION ALL SELECT * FROM clstr_3; -- cluster a single table using the indisclustered bit previously set DELETE FROM clstr_1; INSERT INTO clstr_1 VALUES (2); INSERT INTO clstr_1 VALUES (1); CLUSTER clstr_1; SELECT * FROM clstr_1; -- Test MVCC-safety of cluster. There isn't much we can do to verify the -- results with a single backend... CREATE TABLE clustertest (key int PRIMARY KEY); INSERT INTO clustertest VALUES (10); INSERT INTO clustertest VALUES (20); INSERT INTO clustertest VALUES (30); INSERT INTO clustertest VALUES (40); INSERT INTO clustertest VALUES (50); -- Use a transaction so that updates are not committed when CLUSTER sees 'em BEGIN; -- Test update where the old row version is found first in the scan UPDATE clustertest SET key = 100 WHERE key = 10; -- Test update where the new row version is found first in the scan UPDATE clustertest SET key = 35 WHERE key = 40; -- Test longer update chain UPDATE clustertest SET key = 60 WHERE key = 50; UPDATE clustertest SET key = 70 WHERE key = 60; UPDATE clustertest SET key = 80 WHERE key = 70; SELECT * FROM clustertest; CLUSTER clustertest_pkey ON clustertest; SELECT * FROM clustertest; COMMIT; SELECT * FROM clustertest; -- check that temp tables can be clustered create temp table clstr_temp (col1 int primary key, col2 text); insert into clstr_temp values (2, 'two'), (1, 'one'); cluster clstr_temp using clstr_temp_pkey; select * from clstr_temp; drop table clstr_temp; RESET SESSION AUTHORIZATION; -- check clustering an empty table DROP TABLE clustertest; CREATE TABLE clustertest (f1 int PRIMARY KEY); CLUSTER clustertest USING clustertest_pkey; CLUSTER clustertest; -- Check that partitioned tables cannot be clustered CREATE TABLE clstrpart (a int) PARTITION BY RANGE (a); CREATE INDEX clstrpart_idx ON clstrpart (a); ALTER TABLE clstrpart CLUSTER ON clstrpart_idx; CLUSTER clstrpart USING clstrpart_idx; DROP TABLE clstrpart; -- Test CLUSTER with external tuplesorting create table clstr_4 as select * from tenk1; create index cluster_sort on clstr_4 (hundred, thousand, tenthous); -- ensure we don't use the index in CLUSTER nor the checking SELECTs set enable_indexscan = off; -- Use external sort: set maintenance_work_mem = '1MB'; cluster clstr_4 using cluster_sort; select * from (select hundred, lag(hundred) over () as lhundred, thousand, lag(thousand) over () as lthousand, tenthous, lag(tenthous) over () as ltenthous from clstr_4) ss where row(hundred, thousand, tenthous) <= row(lhundred, lthousand, ltenthous); reset enable_indexscan; reset maintenance_work_mem; -- test CLUSTER on expression index CREATE TABLE clstr_expression(id serial primary key, a int, b text COLLATE "C"); INSERT INTO clstr_expression(a, b) SELECT g.i % 42, 'prefix'||g.i FROM generate_series(1, 133) g(i); CREATE INDEX clstr_expression_minus_a ON clstr_expression ((-a), b); CREATE INDEX clstr_expression_upper_b ON clstr_expression ((upper(b))); -- verify indexes work before cluster BEGIN; SET LOCAL enable_seqscan = false; EXPLAIN (COSTS OFF) SELECT * FROM clstr_expression WHERE upper(b) = 'PREFIX3'; SELECT * FROM clstr_expression WHERE upper(b) = 'PREFIX3'; EXPLAIN (COSTS OFF) SELECT * FROM clstr_expression WHERE -a = -3 ORDER BY -a, b; SELECT * FROM clstr_expression WHERE -a = -3 ORDER BY -a, b; COMMIT; -- and after clustering on clstr_expression_minus_a CLUSTER clstr_expression USING clstr_expression_minus_a; BEGIN; SET LOCAL enable_seqscan = false; EXPLAIN (COSTS OFF) SELECT * FROM clstr_expression WHERE upper(b) = 'PREFIX3'; SELECT * FROM clstr_expression WHERE upper(b) = 'PREFIX3'; EXPLAIN (COSTS OFF) SELECT * FROM clstr_expression WHERE -a = -3 ORDER BY -a, b; SELECT * FROM clstr_expression WHERE -a = -3 ORDER BY -a, b; COMMIT; -- and after clustering on clstr_expression_upper_b CLUSTER clstr_expression USING clstr_expression_upper_b; BEGIN; SET LOCAL enable_seqscan = false; EXPLAIN (COSTS OFF) SELECT * FROM clstr_expression WHERE upper(b) = 'PREFIX3'; SELECT * FROM clstr_expression WHERE upper(b) = 'PREFIX3'; EXPLAIN (COSTS OFF) SELECT * FROM clstr_expression WHERE -a = -3 ORDER BY -a, b; SELECT * FROM clstr_expression WHERE -a = -3 ORDER BY -a, b; COMMIT; -- clean up DROP TABLE clustertest; DROP TABLE clstr_1; DROP TABLE clstr_2; DROP TABLE clstr_3; DROP TABLE clstr_4; DROP TABLE clstr_expression; DROP USER regress_clstr_user; libpg_query-13-2.1.0/test/sql/postgres_regress/collate.icu.utf8.sql000066400000000000000000000723331413137616400252610ustar00rootroot00000000000000/* * This test is for ICU collations. */ /* skip test if not UTF8 server encoding or no ICU collations installed */ SELECT getdatabaseencoding() <> 'UTF8' OR (SELECT count(*) FROM pg_collation WHERE collprovider = 'i') = 0 AS skip_test \gset \if :skip_test \quit \endif SET client_encoding TO UTF8; CREATE SCHEMA collate_tests; SET search_path = collate_tests; CREATE TABLE collate_test1 ( a int, b text COLLATE "en-x-icu" NOT NULL ); \d collate_test1 CREATE TABLE collate_test_fail ( a int, b text COLLATE "ja_JP.eucjp-x-icu" ); CREATE TABLE collate_test_fail ( a int, b text COLLATE "foo-x-icu" ); CREATE TABLE collate_test_fail ( a int COLLATE "en-x-icu", b text ); CREATE TABLE collate_test_like ( LIKE collate_test1 ); \d collate_test_like CREATE TABLE collate_test2 ( a int, b text COLLATE "sv-x-icu" ); CREATE TABLE collate_test3 ( a int, b text COLLATE "C" ); INSERT INTO collate_test1 VALUES (1, 'abc'), (2, 'äbc'), (3, 'bbc'), (4, 'ABC'); INSERT INTO collate_test2 SELECT * FROM collate_test1; INSERT INTO collate_test3 SELECT * FROM collate_test1; SELECT * FROM collate_test1 WHERE b >= 'bbc'; SELECT * FROM collate_test2 WHERE b >= 'bbc'; SELECT * FROM collate_test3 WHERE b >= 'bbc'; SELECT * FROM collate_test3 WHERE b >= 'BBC'; SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc'; SELECT * FROM collate_test1 WHERE b >= 'bbc' COLLATE "C"; SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc' COLLATE "C"; SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc' COLLATE "en-x-icu"; CREATE DOMAIN testdomain_sv AS text COLLATE "sv-x-icu"; CREATE DOMAIN testdomain_i AS int COLLATE "sv-x-icu"; -- fails CREATE TABLE collate_test4 ( a int, b testdomain_sv ); INSERT INTO collate_test4 SELECT * FROM collate_test1; SELECT a, b FROM collate_test4 ORDER BY b; CREATE TABLE collate_test5 ( a int, b testdomain_sv COLLATE "en-x-icu" ); INSERT INTO collate_test5 SELECT * FROM collate_test1; SELECT a, b FROM collate_test5 ORDER BY b; SELECT a, b FROM collate_test1 ORDER BY b; SELECT a, b FROM collate_test2 ORDER BY b; SELECT a, b FROM collate_test3 ORDER BY b; SELECT a, b FROM collate_test1 ORDER BY b COLLATE "C"; -- star expansion SELECT * FROM collate_test1 ORDER BY b; SELECT * FROM collate_test2 ORDER BY b; SELECT * FROM collate_test3 ORDER BY b; -- constant expression folding SELECT 'bbc' COLLATE "en-x-icu" > 'äbc' COLLATE "en-x-icu" AS "true"; SELECT 'bbc' COLLATE "sv-x-icu" > 'äbc' COLLATE "sv-x-icu" AS "false"; -- upper/lower CREATE TABLE collate_test10 ( a int, x text COLLATE "en-x-icu", y text COLLATE "tr-x-icu" ); INSERT INTO collate_test10 VALUES (1, 'hij', 'hij'), (2, 'HIJ', 'HIJ'); SELECT a, lower(x), lower(y), upper(x), upper(y), initcap(x), initcap(y) FROM collate_test10; SELECT a, lower(x COLLATE "C"), lower(y COLLATE "C") FROM collate_test10; SELECT a, x, y FROM collate_test10 ORDER BY lower(y), a; -- LIKE/ILIKE SELECT * FROM collate_test1 WHERE b LIKE 'abc'; SELECT * FROM collate_test1 WHERE b LIKE 'abc%'; SELECT * FROM collate_test1 WHERE b LIKE '%bc%'; SELECT * FROM collate_test1 WHERE b ILIKE 'abc'; SELECT * FROM collate_test1 WHERE b ILIKE 'abc%'; SELECT * FROM collate_test1 WHERE b ILIKE '%bc%'; SELECT 'Türkiye' COLLATE "en-x-icu" ILIKE '%KI%' AS "true"; SELECT 'Türkiye' COLLATE "tr-x-icu" ILIKE '%KI%' AS "false"; SELECT 'bıt' ILIKE 'BIT' COLLATE "en-x-icu" AS "false"; SELECT 'bıt' ILIKE 'BIT' COLLATE "tr-x-icu" AS "true"; -- The following actually exercises the selectivity estimation for ILIKE. SELECT relname FROM pg_class WHERE relname ILIKE 'abc%'; -- regular expressions SELECT * FROM collate_test1 WHERE b ~ '^abc$'; SELECT * FROM collate_test1 WHERE b ~ '^abc'; SELECT * FROM collate_test1 WHERE b ~ 'bc'; SELECT * FROM collate_test1 WHERE b ~* '^abc$'; SELECT * FROM collate_test1 WHERE b ~* '^abc'; SELECT * FROM collate_test1 WHERE b ~* 'bc'; CREATE TABLE collate_test6 ( a int, b text COLLATE "en-x-icu" ); INSERT INTO collate_test6 VALUES (1, 'abc'), (2, 'ABC'), (3, '123'), (4, 'ab1'), (5, 'a1!'), (6, 'a c'), (7, '!.;'), (8, ' '), (9, 'äbç'), (10, 'ÄBÇ'); SELECT b, b ~ '^[[:alpha:]]+$' AS is_alpha, b ~ '^[[:upper:]]+$' AS is_upper, b ~ '^[[:lower:]]+$' AS is_lower, b ~ '^[[:digit:]]+$' AS is_digit, b ~ '^[[:alnum:]]+$' AS is_alnum, b ~ '^[[:graph:]]+$' AS is_graph, b ~ '^[[:print:]]+$' AS is_print, b ~ '^[[:punct:]]+$' AS is_punct, b ~ '^[[:space:]]+$' AS is_space FROM collate_test6; SELECT 'Türkiye' COLLATE "en-x-icu" ~* 'KI' AS "true"; SELECT 'Türkiye' COLLATE "tr-x-icu" ~* 'KI' AS "true"; -- true with ICU SELECT 'bıt' ~* 'BIT' COLLATE "en-x-icu" AS "false"; SELECT 'bıt' ~* 'BIT' COLLATE "tr-x-icu" AS "false"; -- false with ICU -- The following actually exercises the selectivity estimation for ~*. SELECT relname FROM pg_class WHERE relname ~* '^abc'; /* not run by default because it requires tr_TR system locale -- to_char SET lc_time TO 'tr_TR'; SELECT to_char(date '2010-04-01', 'DD TMMON YYYY'); SELECT to_char(date '2010-04-01', 'DD TMMON YYYY' COLLATE "tr-x-icu"); */ -- backwards parsing CREATE VIEW collview1 AS SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc'; CREATE VIEW collview2 AS SELECT a, b FROM collate_test1 ORDER BY b COLLATE "C"; CREATE VIEW collview3 AS SELECT a, lower((x || x) COLLATE "C") FROM collate_test10; SELECT table_name, view_definition FROM information_schema.views WHERE table_name LIKE 'collview%' ORDER BY 1; -- collation propagation in various expression types SELECT a, coalesce(b, 'foo') FROM collate_test1 ORDER BY 2; SELECT a, coalesce(b, 'foo') FROM collate_test2 ORDER BY 2; SELECT a, coalesce(b, 'foo') FROM collate_test3 ORDER BY 2; SELECT a, lower(coalesce(x, 'foo')), lower(coalesce(y, 'foo')) FROM collate_test10; SELECT a, b, greatest(b, 'CCC') FROM collate_test1 ORDER BY 3; SELECT a, b, greatest(b, 'CCC') FROM collate_test2 ORDER BY 3; SELECT a, b, greatest(b, 'CCC') FROM collate_test3 ORDER BY 3; SELECT a, x, y, lower(greatest(x, 'foo')), lower(greatest(y, 'foo')) FROM collate_test10; SELECT a, nullif(b, 'abc') FROM collate_test1 ORDER BY 2; SELECT a, nullif(b, 'abc') FROM collate_test2 ORDER BY 2; SELECT a, nullif(b, 'abc') FROM collate_test3 ORDER BY 2; SELECT a, lower(nullif(x, 'foo')), lower(nullif(y, 'foo')) FROM collate_test10; SELECT a, CASE b WHEN 'abc' THEN 'abcd' ELSE b END FROM collate_test1 ORDER BY 2; SELECT a, CASE b WHEN 'abc' THEN 'abcd' ELSE b END FROM collate_test2 ORDER BY 2; SELECT a, CASE b WHEN 'abc' THEN 'abcd' ELSE b END FROM collate_test3 ORDER BY 2; CREATE DOMAIN testdomain AS text; SELECT a, b::testdomain FROM collate_test1 ORDER BY 2; SELECT a, b::testdomain FROM collate_test2 ORDER BY 2; SELECT a, b::testdomain FROM collate_test3 ORDER BY 2; SELECT a, b::testdomain_sv FROM collate_test3 ORDER BY 2; SELECT a, lower(x::testdomain), lower(y::testdomain) FROM collate_test10; SELECT min(b), max(b) FROM collate_test1; SELECT min(b), max(b) FROM collate_test2; SELECT min(b), max(b) FROM collate_test3; SELECT array_agg(b ORDER BY b) FROM collate_test1; SELECT array_agg(b ORDER BY b) FROM collate_test2; SELECT array_agg(b ORDER BY b) FROM collate_test3; SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test1 ORDER BY 2; SELECT a, b FROM collate_test2 UNION SELECT a, b FROM collate_test2 ORDER BY 2; SELECT a, b FROM collate_test3 WHERE a < 4 INTERSECT SELECT a, b FROM collate_test3 WHERE a > 1 ORDER BY 2; SELECT a, b FROM collate_test3 EXCEPT SELECT a, b FROM collate_test3 WHERE a < 2 ORDER BY 2; SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test3 ORDER BY 2; -- fail SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test3; -- ok SELECT a, b FROM collate_test1 UNION SELECT a, b FROM collate_test3 ORDER BY 2; -- fail SELECT a, b COLLATE "C" FROM collate_test1 UNION SELECT a, b FROM collate_test3 ORDER BY 2; -- ok SELECT a, b FROM collate_test1 INTERSECT SELECT a, b FROM collate_test3 ORDER BY 2; -- fail SELECT a, b FROM collate_test1 EXCEPT SELECT a, b FROM collate_test3 ORDER BY 2; -- fail CREATE TABLE test_u AS SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test3; -- fail -- ideally this would be a parse-time error, but for now it must be run-time: select x < y from collate_test10; -- fail select x || y from collate_test10; -- ok, because || is not collation aware select x, y from collate_test10 order by x || y; -- not so ok -- collation mismatch between recursive and non-recursive term WITH RECURSIVE foo(x) AS (SELECT x FROM (VALUES('a' COLLATE "en-x-icu"),('b')) t(x) UNION ALL SELECT (x || 'c') COLLATE "de-x-icu" FROM foo WHERE length(x) < 10) SELECT * FROM foo; -- casting SELECT CAST('42' AS text COLLATE "C"); SELECT a, CAST(b AS varchar) FROM collate_test1 ORDER BY 2; SELECT a, CAST(b AS varchar) FROM collate_test2 ORDER BY 2; SELECT a, CAST(b AS varchar) FROM collate_test3 ORDER BY 2; -- propagation of collation in SQL functions (inlined and non-inlined cases) -- and plpgsql functions too CREATE FUNCTION mylt (text, text) RETURNS boolean LANGUAGE sql AS $$ select $1 < $2 $$; CREATE FUNCTION mylt_noninline (text, text) RETURNS boolean LANGUAGE sql AS $$ select $1 < $2 limit 1 $$; CREATE FUNCTION mylt_plpgsql (text, text) RETURNS boolean LANGUAGE plpgsql AS $$ begin return $1 < $2; end $$; SELECT a.b AS a, b.b AS b, a.b < b.b AS lt, mylt(a.b, b.b), mylt_noninline(a.b, b.b), mylt_plpgsql(a.b, b.b) FROM collate_test1 a, collate_test1 b ORDER BY a.b, b.b; SELECT a.b AS a, b.b AS b, a.b < b.b COLLATE "C" AS lt, mylt(a.b, b.b COLLATE "C"), mylt_noninline(a.b, b.b COLLATE "C"), mylt_plpgsql(a.b, b.b COLLATE "C") FROM collate_test1 a, collate_test1 b ORDER BY a.b, b.b; -- collation override in plpgsql CREATE FUNCTION mylt2 (x text, y text) RETURNS boolean LANGUAGE plpgsql AS $$ declare xx text := x; yy text := y; begin return xx < yy; end $$; SELECT mylt2('a', 'B' collate "en-x-icu") as t, mylt2('a', 'B' collate "C") as f; CREATE OR REPLACE FUNCTION mylt2 (x text, y text) RETURNS boolean LANGUAGE plpgsql AS $$ declare xx text COLLATE "POSIX" := x; yy text := y; begin return xx < yy; end $$; SELECT mylt2('a', 'B') as f; SELECT mylt2('a', 'B' collate "C") as fail; -- conflicting collations SELECT mylt2('a', 'B' collate "POSIX") as f; -- polymorphism SELECT * FROM unnest((SELECT array_agg(b ORDER BY b) FROM collate_test1)) ORDER BY 1; SELECT * FROM unnest((SELECT array_agg(b ORDER BY b) FROM collate_test2)) ORDER BY 1; SELECT * FROM unnest((SELECT array_agg(b ORDER BY b) FROM collate_test3)) ORDER BY 1; CREATE FUNCTION dup (anyelement) RETURNS anyelement AS 'select $1' LANGUAGE sql; SELECT a, dup(b) FROM collate_test1 ORDER BY 2; SELECT a, dup(b) FROM collate_test2 ORDER BY 2; SELECT a, dup(b) FROM collate_test3 ORDER BY 2; -- indexes CREATE INDEX collate_test1_idx1 ON collate_test1 (b); CREATE INDEX collate_test1_idx2 ON collate_test1 (b COLLATE "C"); CREATE INDEX collate_test1_idx3 ON collate_test1 ((b COLLATE "C")); -- this is different grammatically CREATE INDEX collate_test1_idx4 ON collate_test1 (((b||'foo') COLLATE "POSIX")); CREATE INDEX collate_test1_idx5 ON collate_test1 (a COLLATE "C"); -- fail CREATE INDEX collate_test1_idx6 ON collate_test1 ((a COLLATE "C")); -- fail SELECT relname, pg_get_indexdef(oid) FROM pg_class WHERE relname LIKE 'collate_test%_idx%' ORDER BY 1; set enable_seqscan = off; explain (costs off) select * from collate_test1 where b ilike 'abc'; select * from collate_test1 where b ilike 'abc'; explain (costs off) select * from collate_test1 where b ilike 'ABC'; select * from collate_test1 where b ilike 'ABC'; reset enable_seqscan; -- schema manipulation commands CREATE ROLE regress_test_role; CREATE SCHEMA test_schema; -- We need to do this this way to cope with varying names for encodings: do $$ BEGIN EXECUTE 'CREATE COLLATION test0 (provider = icu, locale = ' || quote_literal(current_setting('lc_collate')) || ');'; END $$; CREATE COLLATION test0 FROM "C"; -- fail, duplicate name do $$ BEGIN EXECUTE 'CREATE COLLATION test1 (provider = icu, lc_collate = ' || quote_literal(current_setting('lc_collate')) || ', lc_ctype = ' || quote_literal(current_setting('lc_ctype')) || ');'; END $$; CREATE COLLATION test3 (provider = icu, lc_collate = 'en_US.utf8'); -- fail, need lc_ctype CREATE COLLATION testx (provider = icu, locale = 'nonsense'); /* never fails with ICU */ DROP COLLATION testx; CREATE COLLATION test4 FROM nonsense; CREATE COLLATION test5 FROM test0; SELECT collname FROM pg_collation WHERE collname LIKE 'test%' ORDER BY 1; ALTER COLLATION test1 RENAME TO test11; ALTER COLLATION test0 RENAME TO test11; -- fail ALTER COLLATION test1 RENAME TO test22; -- fail ALTER COLLATION test11 OWNER TO regress_test_role; ALTER COLLATION test11 OWNER TO nonsense; ALTER COLLATION test11 SET SCHEMA test_schema; COMMENT ON COLLATION test0 IS 'US English'; SELECT collname, nspname, obj_description(pg_collation.oid, 'pg_collation') FROM pg_collation JOIN pg_namespace ON (collnamespace = pg_namespace.oid) WHERE collname LIKE 'test%' ORDER BY 1; DROP COLLATION test0, test_schema.test11, test5; DROP COLLATION test0; -- fail DROP COLLATION IF EXISTS test0; SELECT collname FROM pg_collation WHERE collname LIKE 'test%'; DROP SCHEMA test_schema; DROP ROLE regress_test_role; -- ALTER ALTER COLLATION "en-x-icu" REFRESH VERSION; -- dependencies CREATE COLLATION test0 FROM "C"; CREATE TABLE collate_dep_test1 (a int, b text COLLATE test0); CREATE DOMAIN collate_dep_dom1 AS text COLLATE test0; CREATE TYPE collate_dep_test2 AS (x int, y text COLLATE test0); CREATE VIEW collate_dep_test3 AS SELECT text 'foo' COLLATE test0 AS foo; CREATE TABLE collate_dep_test4t (a int, b text); CREATE INDEX collate_dep_test4i ON collate_dep_test4t (b COLLATE test0); DROP COLLATION test0 RESTRICT; -- fail DROP COLLATION test0 CASCADE; \d collate_dep_test1 \d collate_dep_test2 DROP TABLE collate_dep_test1, collate_dep_test4t; DROP TYPE collate_dep_test2; -- test range types and collations create type textrange_c as range(subtype=text, collation="C"); create type textrange_en_us as range(subtype=text, collation="en-x-icu"); select textrange_c('A','Z') @> 'b'::text; select textrange_en_us('A','Z') @> 'b'::text; drop type textrange_c; drop type textrange_en_us; -- test ICU collation customization -- test the attributes handled by icu_set_collation_attributes() CREATE COLLATION testcoll_ignore_accents (provider = icu, locale = '@colStrength=primary;colCaseLevel=yes'); SELECT 'aaá' > 'AAA' COLLATE "und-x-icu", 'aaá' < 'AAA' COLLATE testcoll_ignore_accents; CREATE COLLATION testcoll_backwards (provider = icu, locale = '@colBackwards=yes'); SELECT 'coté' < 'côte' COLLATE "und-x-icu", 'coté' > 'côte' COLLATE testcoll_backwards; CREATE COLLATION testcoll_lower_first (provider = icu, locale = '@colCaseFirst=lower'); CREATE COLLATION testcoll_upper_first (provider = icu, locale = '@colCaseFirst=upper'); SELECT 'aaa' < 'AAA' COLLATE testcoll_lower_first, 'aaa' > 'AAA' COLLATE testcoll_upper_first; CREATE COLLATION testcoll_shifted (provider = icu, locale = '@colAlternate=shifted'); SELECT 'de-luge' < 'deanza' COLLATE "und-x-icu", 'de-luge' > 'deanza' COLLATE testcoll_shifted; CREATE COLLATION testcoll_numeric (provider = icu, locale = '@colNumeric=yes'); SELECT 'A-21' > 'A-123' COLLATE "und-x-icu", 'A-21' < 'A-123' COLLATE testcoll_numeric; CREATE COLLATION testcoll_error1 (provider = icu, locale = '@colNumeric=lower'); -- test that attributes not handled by icu_set_collation_attributes() -- (handled by ucol_open() directly) also work CREATE COLLATION testcoll_de_phonebook (provider = icu, locale = 'de@collation=phonebook'); SELECT 'Goldmann' < 'Götz' COLLATE "de-x-icu", 'Goldmann' > 'Götz' COLLATE testcoll_de_phonebook; -- nondeterministic collations CREATE COLLATION ctest_det (provider = icu, locale = '', deterministic = true); CREATE COLLATION ctest_nondet (provider = icu, locale = '', deterministic = false); CREATE TABLE test6 (a int, b text); -- same string in different normal forms INSERT INTO test6 VALUES (1, U&'\00E4bc'); INSERT INTO test6 VALUES (2, U&'\0061\0308bc'); SELECT * FROM test6; SELECT * FROM test6 WHERE b = 'äbc' COLLATE ctest_det; SELECT * FROM test6 WHERE b = 'äbc' COLLATE ctest_nondet; -- same with arrays CREATE TABLE test6a (a int, b text[]); INSERT INTO test6a VALUES (1, ARRAY[U&'\00E4bc']); INSERT INTO test6a VALUES (2, ARRAY[U&'\0061\0308bc']); SELECT * FROM test6a; SELECT * FROM test6a WHERE b = ARRAY['äbc'] COLLATE ctest_det; SELECT * FROM test6a WHERE b = ARRAY['äbc'] COLLATE ctest_nondet; CREATE COLLATION case_sensitive (provider = icu, locale = ''); CREATE COLLATION case_insensitive (provider = icu, locale = '@colStrength=secondary', deterministic = false); SELECT 'abc' <= 'ABC' COLLATE case_sensitive, 'abc' >= 'ABC' COLLATE case_sensitive; SELECT 'abc' <= 'ABC' COLLATE case_insensitive, 'abc' >= 'ABC' COLLATE case_insensitive; CREATE TABLE test1cs (x text COLLATE case_sensitive); CREATE TABLE test2cs (x text COLLATE case_sensitive); CREATE TABLE test3cs (x text COLLATE case_sensitive); INSERT INTO test1cs VALUES ('abc'), ('def'), ('ghi'); INSERT INTO test2cs VALUES ('ABC'), ('ghi'); INSERT INTO test3cs VALUES ('abc'), ('ABC'), ('def'), ('ghi'); SELECT x FROM test3cs WHERE x = 'abc'; SELECT x FROM test3cs WHERE x <> 'abc'; SELECT x FROM test3cs WHERE x LIKE 'a%'; SELECT x FROM test3cs WHERE x ILIKE 'a%'; SELECT x FROM test3cs WHERE x SIMILAR TO 'a%'; SELECT x FROM test3cs WHERE x ~ 'a'; SELECT x FROM test1cs UNION SELECT x FROM test2cs ORDER BY x; SELECT x FROM test2cs UNION SELECT x FROM test1cs ORDER BY x; SELECT x FROM test1cs INTERSECT SELECT x FROM test2cs; SELECT x FROM test2cs INTERSECT SELECT x FROM test1cs; SELECT x FROM test1cs EXCEPT SELECT x FROM test2cs; SELECT x FROM test2cs EXCEPT SELECT x FROM test1cs; SELECT DISTINCT x FROM test3cs ORDER BY x; SELECT count(DISTINCT x) FROM test3cs; SELECT x, count(*) FROM test3cs GROUP BY x ORDER BY x; SELECT x, row_number() OVER (ORDER BY x), rank() OVER (ORDER BY x) FROM test3cs ORDER BY x; CREATE UNIQUE INDEX ON test1cs (x); -- ok INSERT INTO test1cs VALUES ('ABC'); -- ok CREATE UNIQUE INDEX ON test3cs (x); -- ok SELECT string_to_array('ABC,DEF,GHI' COLLATE case_sensitive, ',', 'abc'); SELECT string_to_array('ABCDEFGHI' COLLATE case_sensitive, NULL, 'b'); CREATE TABLE test1ci (x text COLLATE case_insensitive); CREATE TABLE test2ci (x text COLLATE case_insensitive); CREATE TABLE test3ci (x text COLLATE case_insensitive); CREATE INDEX ON test3ci (x text_pattern_ops); -- error INSERT INTO test1ci VALUES ('abc'), ('def'), ('ghi'); INSERT INTO test2ci VALUES ('ABC'), ('ghi'); INSERT INTO test3ci VALUES ('abc'), ('ABC'), ('def'), ('ghi'); SELECT x FROM test3ci WHERE x = 'abc'; SELECT x FROM test3ci WHERE x <> 'abc'; SELECT x FROM test3ci WHERE x LIKE 'a%'; SELECT x FROM test3ci WHERE x ILIKE 'a%'; SELECT x FROM test3ci WHERE x SIMILAR TO 'a%'; SELECT x FROM test3ci WHERE x ~ 'a'; SELECT x FROM test1ci UNION SELECT x FROM test2ci ORDER BY x; SELECT x FROM test2ci UNION SELECT x FROM test1ci ORDER BY x; SELECT x FROM test1ci INTERSECT SELECT x FROM test2ci ORDER BY x; SELECT x FROM test2ci INTERSECT SELECT x FROM test1ci ORDER BY x; SELECT x FROM test1ci EXCEPT SELECT x FROM test2ci; SELECT x FROM test2ci EXCEPT SELECT x FROM test1ci; SELECT DISTINCT x FROM test3ci ORDER BY x; SELECT count(DISTINCT x) FROM test3ci; SELECT x, count(*) FROM test3ci GROUP BY x ORDER BY x; SELECT x, row_number() OVER (ORDER BY x), rank() OVER (ORDER BY x) FROM test3ci ORDER BY x; CREATE UNIQUE INDEX ON test1ci (x); -- ok INSERT INTO test1ci VALUES ('ABC'); -- error CREATE UNIQUE INDEX ON test3ci (x); -- error SELECT string_to_array('ABC,DEF,GHI' COLLATE case_insensitive, ',', 'abc'); SELECT string_to_array('ABCDEFGHI' COLLATE case_insensitive, NULL, 'b'); -- bpchar CREATE TABLE test1bpci (x char(3) COLLATE case_insensitive); CREATE TABLE test2bpci (x char(3) COLLATE case_insensitive); CREATE TABLE test3bpci (x char(3) COLLATE case_insensitive); CREATE INDEX ON test3bpci (x bpchar_pattern_ops); -- error INSERT INTO test1bpci VALUES ('abc'), ('def'), ('ghi'); INSERT INTO test2bpci VALUES ('ABC'), ('ghi'); INSERT INTO test3bpci VALUES ('abc'), ('ABC'), ('def'), ('ghi'); SELECT x FROM test3bpci WHERE x = 'abc'; SELECT x FROM test3bpci WHERE x <> 'abc'; SELECT x FROM test3bpci WHERE x LIKE 'a%'; SELECT x FROM test3bpci WHERE x ILIKE 'a%'; SELECT x FROM test3bpci WHERE x SIMILAR TO 'a%'; SELECT x FROM test3bpci WHERE x ~ 'a'; SELECT x FROM test1bpci UNION SELECT x FROM test2bpci ORDER BY x; SELECT x FROM test2bpci UNION SELECT x FROM test1bpci ORDER BY x; SELECT x FROM test1bpci INTERSECT SELECT x FROM test2bpci ORDER BY x; SELECT x FROM test2bpci INTERSECT SELECT x FROM test1bpci ORDER BY x; SELECT x FROM test1bpci EXCEPT SELECT x FROM test2bpci; SELECT x FROM test2bpci EXCEPT SELECT x FROM test1bpci; SELECT DISTINCT x FROM test3bpci ORDER BY x; SELECT count(DISTINCT x) FROM test3bpci; SELECT x, count(*) FROM test3bpci GROUP BY x ORDER BY x; SELECT x, row_number() OVER (ORDER BY x), rank() OVER (ORDER BY x) FROM test3bpci ORDER BY x; CREATE UNIQUE INDEX ON test1bpci (x); -- ok INSERT INTO test1bpci VALUES ('ABC'); -- error CREATE UNIQUE INDEX ON test3bpci (x); -- error SELECT string_to_array('ABC,DEF,GHI'::char(11) COLLATE case_insensitive, ',', 'abc'); SELECT string_to_array('ABCDEFGHI'::char(9) COLLATE case_insensitive, NULL, 'b'); -- This tests the issue described in match_pattern_prefix(). In the -- absence of that check, the case_insensitive tests below would -- return no rows where they should logically return one. CREATE TABLE test4c (x text COLLATE "C"); INSERT INTO test4c VALUES ('abc'); CREATE INDEX ON test4c (x); SET enable_seqscan = off; SELECT x FROM test4c WHERE x LIKE 'ABC' COLLATE case_sensitive; -- ok, no rows SELECT x FROM test4c WHERE x LIKE 'ABC%' COLLATE case_sensitive; -- ok, no rows SELECT x FROM test4c WHERE x LIKE 'ABC' COLLATE case_insensitive; -- error SELECT x FROM test4c WHERE x LIKE 'ABC%' COLLATE case_insensitive; -- error RESET enable_seqscan; -- Unicode special case: different variants of Greek lower case sigma. -- A naive implementation like citext that just does lower(x) = -- lower(y) will do the wrong thing here, because lower('Σ') is 'σ' -- but upper('ς') is 'Σ'. SELECT 'ὀδυσσεύς' = 'ὈΔΥΣΣΕΎΣ' COLLATE case_sensitive; SELECT 'ὀδυσσεύς' = 'ὈΔΥΣΣΕΎΣ' COLLATE case_insensitive; -- name vs. text comparison operators SELECT relname FROM pg_class WHERE relname = 'PG_CLASS'::text COLLATE case_insensitive; SELECT relname FROM pg_class WHERE 'PG_CLASS'::text = relname COLLATE case_insensitive; SELECT typname FROM pg_type WHERE typname LIKE 'int_' AND typname <> 'INT2'::text COLLATE case_insensitive ORDER BY typname; SELECT typname FROM pg_type WHERE typname LIKE 'int_' AND 'INT2'::text <> typname COLLATE case_insensitive ORDER BY typname; -- test case adapted from subselect.sql CREATE TEMP TABLE outer_text (f1 text COLLATE case_insensitive, f2 text); INSERT INTO outer_text VALUES ('a', 'a'); INSERT INTO outer_text VALUES ('b', 'a'); INSERT INTO outer_text VALUES ('A', NULL); INSERT INTO outer_text VALUES ('B', NULL); CREATE TEMP TABLE inner_text (c1 text COLLATE case_insensitive, c2 text); INSERT INTO inner_text VALUES ('a', NULL); SELECT * FROM outer_text WHERE (f1, f2) NOT IN (SELECT * FROM inner_text); -- accents CREATE COLLATION ignore_accents (provider = icu, locale = '@colStrength=primary;colCaseLevel=yes', deterministic = false); CREATE TABLE test4 (a int, b text); INSERT INTO test4 VALUES (1, 'cote'), (2, 'côte'), (3, 'coté'), (4, 'côté'); SELECT * FROM test4 WHERE b = 'cote'; SELECT * FROM test4 WHERE b = 'cote' COLLATE ignore_accents; SELECT * FROM test4 WHERE b = 'Cote' COLLATE ignore_accents; -- still case-sensitive SELECT * FROM test4 WHERE b = 'Cote' COLLATE case_insensitive; -- foreign keys (should use collation of primary key) -- PK is case-sensitive, FK is case-insensitive CREATE TABLE test10pk (x text COLLATE case_sensitive PRIMARY KEY); INSERT INTO test10pk VALUES ('abc'), ('def'), ('ghi'); CREATE TABLE test10fk (x text COLLATE case_insensitive REFERENCES test10pk (x) ON UPDATE CASCADE ON DELETE CASCADE); INSERT INTO test10fk VALUES ('abc'); -- ok INSERT INTO test10fk VALUES ('ABC'); -- error INSERT INTO test10fk VALUES ('xyz'); -- error SELECT * FROM test10pk; SELECT * FROM test10fk; -- restrict update even though the values are "equal" in the FK table UPDATE test10fk SET x = 'ABC' WHERE x = 'abc'; -- error SELECT * FROM test10fk; DELETE FROM test10pk WHERE x = 'abc'; SELECT * FROM test10pk; SELECT * FROM test10fk; -- PK is case-insensitive, FK is case-sensitive CREATE TABLE test11pk (x text COLLATE case_insensitive PRIMARY KEY); INSERT INTO test11pk VALUES ('abc'), ('def'), ('ghi'); CREATE TABLE test11fk (x text COLLATE case_sensitive REFERENCES test11pk (x) ON UPDATE CASCADE ON DELETE CASCADE); INSERT INTO test11fk VALUES ('abc'); -- ok INSERT INTO test11fk VALUES ('ABC'); -- ok INSERT INTO test11fk VALUES ('xyz'); -- error SELECT * FROM test11pk; SELECT * FROM test11fk; -- cascade update even though the values are "equal" in the PK table UPDATE test11pk SET x = 'ABC' WHERE x = 'abc'; SELECT * FROM test11fk; DELETE FROM test11pk WHERE x = 'abc'; SELECT * FROM test11pk; SELECT * FROM test11fk; -- partitioning CREATE TABLE test20 (a int, b text COLLATE case_insensitive) PARTITION BY LIST (b); CREATE TABLE test20_1 PARTITION OF test20 FOR VALUES IN ('abc'); INSERT INTO test20 VALUES (1, 'abc'); INSERT INTO test20 VALUES (2, 'ABC'); SELECT * FROM test20_1; CREATE TABLE test21 (a int, b text COLLATE case_insensitive) PARTITION BY RANGE (b); CREATE TABLE test21_1 PARTITION OF test21 FOR VALUES FROM ('ABC') TO ('DEF'); INSERT INTO test21 VALUES (1, 'abc'); INSERT INTO test21 VALUES (2, 'ABC'); SELECT * FROM test21_1; CREATE TABLE test22 (a int, b text COLLATE case_sensitive) PARTITION BY HASH (b); CREATE TABLE test22_0 PARTITION OF test22 FOR VALUES WITH (MODULUS 2, REMAINDER 0); CREATE TABLE test22_1 PARTITION OF test22 FOR VALUES WITH (MODULUS 2, REMAINDER 1); INSERT INTO test22 VALUES (1, 'def'); INSERT INTO test22 VALUES (2, 'DEF'); -- they end up in different partitions SELECT (SELECT count(*) FROM test22_0) = (SELECT count(*) FROM test22_1); -- same with arrays CREATE TABLE test22a (a int, b text[] COLLATE case_sensitive) PARTITION BY HASH (b); CREATE TABLE test22a_0 PARTITION OF test22a FOR VALUES WITH (MODULUS 2, REMAINDER 0); CREATE TABLE test22a_1 PARTITION OF test22a FOR VALUES WITH (MODULUS 2, REMAINDER 1); INSERT INTO test22a VALUES (1, ARRAY['def']); INSERT INTO test22a VALUES (2, ARRAY['DEF']); -- they end up in different partitions SELECT (SELECT count(*) FROM test22a_0) = (SELECT count(*) FROM test22a_1); CREATE TABLE test23 (a int, b text COLLATE case_insensitive) PARTITION BY HASH (b); CREATE TABLE test23_0 PARTITION OF test23 FOR VALUES WITH (MODULUS 2, REMAINDER 0); CREATE TABLE test23_1 PARTITION OF test23 FOR VALUES WITH (MODULUS 2, REMAINDER 1); INSERT INTO test23 VALUES (1, 'def'); INSERT INTO test23 VALUES (2, 'DEF'); -- they end up in the same partition (but it's platform-dependent which one) SELECT (SELECT count(*) FROM test23_0) <> (SELECT count(*) FROM test23_1); -- same with arrays CREATE TABLE test23a (a int, b text[] COLLATE case_insensitive) PARTITION BY HASH (b); CREATE TABLE test23a_0 PARTITION OF test23a FOR VALUES WITH (MODULUS 2, REMAINDER 0); CREATE TABLE test23a_1 PARTITION OF test23a FOR VALUES WITH (MODULUS 2, REMAINDER 1); INSERT INTO test23a VALUES (1, ARRAY['def']); INSERT INTO test23a VALUES (2, ARRAY['DEF']); -- they end up in the same partition (but it's platform-dependent which one) SELECT (SELECT count(*) FROM test23a_0) <> (SELECT count(*) FROM test23a_1); CREATE TABLE test30 (a int, b char(3) COLLATE case_insensitive) PARTITION BY LIST (b); CREATE TABLE test30_1 PARTITION OF test30 FOR VALUES IN ('abc'); INSERT INTO test30 VALUES (1, 'abc'); INSERT INTO test30 VALUES (2, 'ABC'); SELECT * FROM test30_1; CREATE TABLE test31 (a int, b char(3) COLLATE case_insensitive) PARTITION BY RANGE (b); CREATE TABLE test31_1 PARTITION OF test31 FOR VALUES FROM ('ABC') TO ('DEF'); INSERT INTO test31 VALUES (1, 'abc'); INSERT INTO test31 VALUES (2, 'ABC'); SELECT * FROM test31_1; CREATE TABLE test32 (a int, b char(3) COLLATE case_sensitive) PARTITION BY HASH (b); CREATE TABLE test32_0 PARTITION OF test32 FOR VALUES WITH (MODULUS 2, REMAINDER 0); CREATE TABLE test32_1 PARTITION OF test32 FOR VALUES WITH (MODULUS 2, REMAINDER 1); INSERT INTO test32 VALUES (1, 'def'); INSERT INTO test32 VALUES (2, 'DEF'); -- they end up in different partitions SELECT (SELECT count(*) FROM test32_0) = (SELECT count(*) FROM test32_1); CREATE TABLE test33 (a int, b char(3) COLLATE case_insensitive) PARTITION BY HASH (b); CREATE TABLE test33_0 PARTITION OF test33 FOR VALUES WITH (MODULUS 2, REMAINDER 0); CREATE TABLE test33_1 PARTITION OF test33 FOR VALUES WITH (MODULUS 2, REMAINDER 1); INSERT INTO test33 VALUES (1, 'def'); INSERT INTO test33 VALUES (2, 'DEF'); -- they end up in the same partition (but it's platform-dependent which one) SELECT (SELECT count(*) FROM test33_0) <> (SELECT count(*) FROM test33_1); -- cleanup RESET search_path; SET client_min_messages TO warning; DROP SCHEMA collate_tests CASCADE; RESET client_min_messages; -- leave a collation for pg_upgrade test CREATE COLLATION coll_icu_upgrade FROM "und-x-icu"; libpg_query-13-2.1.0/test/sql/postgres_regress/collate.linux.utf8.sql000066400000000000000000000352101413137616400256310ustar00rootroot00000000000000/* * This test is for Linux/glibc systems and assumes that a full set of * locales is installed. It must be run in a database with UTF-8 encoding, * because other encodings don't support all the characters used. */ SELECT getdatabaseencoding() <> 'UTF8' OR (SELECT count(*) FROM pg_collation WHERE collname IN ('de_DE', 'en_US', 'sv_SE', 'tr_TR') AND collencoding = pg_char_to_encoding('UTF8')) <> 4 OR version() !~ 'linux-gnu' AS skip_test \gset \if :skip_test \quit \endif SET client_encoding TO UTF8; CREATE SCHEMA collate_tests; SET search_path = collate_tests; CREATE TABLE collate_test1 ( a int, b text COLLATE "en_US" NOT NULL ); \d collate_test1 CREATE TABLE collate_test_fail ( a int, b text COLLATE "ja_JP.eucjp" ); CREATE TABLE collate_test_fail ( a int, b text COLLATE "foo" ); CREATE TABLE collate_test_fail ( a int COLLATE "en_US", b text ); CREATE TABLE collate_test_like ( LIKE collate_test1 ); \d collate_test_like CREATE TABLE collate_test2 ( a int, b text COLLATE "sv_SE" ); CREATE TABLE collate_test3 ( a int, b text COLLATE "C" ); INSERT INTO collate_test1 VALUES (1, 'abc'), (2, 'äbc'), (3, 'bbc'), (4, 'ABC'); INSERT INTO collate_test2 SELECT * FROM collate_test1; INSERT INTO collate_test3 SELECT * FROM collate_test1; SELECT * FROM collate_test1 WHERE b >= 'bbc'; SELECT * FROM collate_test2 WHERE b >= 'bbc'; SELECT * FROM collate_test3 WHERE b >= 'bbc'; SELECT * FROM collate_test3 WHERE b >= 'BBC'; SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc'; SELECT * FROM collate_test1 WHERE b >= 'bbc' COLLATE "C"; SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc' COLLATE "C"; SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc' COLLATE "en_US"; CREATE DOMAIN testdomain_sv AS text COLLATE "sv_SE"; CREATE DOMAIN testdomain_i AS int COLLATE "sv_SE"; -- fails CREATE TABLE collate_test4 ( a int, b testdomain_sv ); INSERT INTO collate_test4 SELECT * FROM collate_test1; SELECT a, b FROM collate_test4 ORDER BY b; CREATE TABLE collate_test5 ( a int, b testdomain_sv COLLATE "en_US" ); INSERT INTO collate_test5 SELECT * FROM collate_test1; SELECT a, b FROM collate_test5 ORDER BY b; SELECT a, b FROM collate_test1 ORDER BY b; SELECT a, b FROM collate_test2 ORDER BY b; SELECT a, b FROM collate_test3 ORDER BY b; SELECT a, b FROM collate_test1 ORDER BY b COLLATE "C"; -- star expansion SELECT * FROM collate_test1 ORDER BY b; SELECT * FROM collate_test2 ORDER BY b; SELECT * FROM collate_test3 ORDER BY b; -- constant expression folding SELECT 'bbc' COLLATE "en_US" > 'äbc' COLLATE "en_US" AS "true"; SELECT 'bbc' COLLATE "sv_SE" > 'äbc' COLLATE "sv_SE" AS "false"; -- upper/lower CREATE TABLE collate_test10 ( a int, x text COLLATE "en_US", y text COLLATE "tr_TR" ); INSERT INTO collate_test10 VALUES (1, 'hij', 'hij'), (2, 'HIJ', 'HIJ'); SELECT a, lower(x), lower(y), upper(x), upper(y), initcap(x), initcap(y) FROM collate_test10; SELECT a, lower(x COLLATE "C"), lower(y COLLATE "C") FROM collate_test10; SELECT a, x, y FROM collate_test10 ORDER BY lower(y), a; -- LIKE/ILIKE SELECT * FROM collate_test1 WHERE b LIKE 'abc'; SELECT * FROM collate_test1 WHERE b LIKE 'abc%'; SELECT * FROM collate_test1 WHERE b LIKE '%bc%'; SELECT * FROM collate_test1 WHERE b ILIKE 'abc'; SELECT * FROM collate_test1 WHERE b ILIKE 'abc%'; SELECT * FROM collate_test1 WHERE b ILIKE '%bc%'; SELECT 'Türkiye' COLLATE "en_US" ILIKE '%KI%' AS "true"; SELECT 'Türkiye' COLLATE "tr_TR" ILIKE '%KI%' AS "false"; SELECT 'bıt' ILIKE 'BIT' COLLATE "en_US" AS "false"; SELECT 'bıt' ILIKE 'BIT' COLLATE "tr_TR" AS "true"; -- The following actually exercises the selectivity estimation for ILIKE. SELECT relname FROM pg_class WHERE relname ILIKE 'abc%'; -- regular expressions SELECT * FROM collate_test1 WHERE b ~ '^abc$'; SELECT * FROM collate_test1 WHERE b ~ '^abc'; SELECT * FROM collate_test1 WHERE b ~ 'bc'; SELECT * FROM collate_test1 WHERE b ~* '^abc$'; SELECT * FROM collate_test1 WHERE b ~* '^abc'; SELECT * FROM collate_test1 WHERE b ~* 'bc'; CREATE TABLE collate_test6 ( a int, b text COLLATE "en_US" ); INSERT INTO collate_test6 VALUES (1, 'abc'), (2, 'ABC'), (3, '123'), (4, 'ab1'), (5, 'a1!'), (6, 'a c'), (7, '!.;'), (8, ' '), (9, 'äbç'), (10, 'ÄBÇ'); SELECT b, b ~ '^[[:alpha:]]+$' AS is_alpha, b ~ '^[[:upper:]]+$' AS is_upper, b ~ '^[[:lower:]]+$' AS is_lower, b ~ '^[[:digit:]]+$' AS is_digit, b ~ '^[[:alnum:]]+$' AS is_alnum, b ~ '^[[:graph:]]+$' AS is_graph, b ~ '^[[:print:]]+$' AS is_print, b ~ '^[[:punct:]]+$' AS is_punct, b ~ '^[[:space:]]+$' AS is_space FROM collate_test6; SELECT 'Türkiye' COLLATE "en_US" ~* 'KI' AS "true"; SELECT 'Türkiye' COLLATE "tr_TR" ~* 'KI' AS "false"; SELECT 'bıt' ~* 'BIT' COLLATE "en_US" AS "false"; SELECT 'bıt' ~* 'BIT' COLLATE "tr_TR" AS "true"; -- The following actually exercises the selectivity estimation for ~*. SELECT relname FROM pg_class WHERE relname ~* '^abc'; -- to_char SET lc_time TO 'tr_TR'; SELECT to_char(date '2010-02-01', 'DD TMMON YYYY'); SELECT to_char(date '2010-02-01', 'DD TMMON YYYY' COLLATE "tr_TR"); SELECT to_char(date '2010-04-01', 'DD TMMON YYYY'); SELECT to_char(date '2010-04-01', 'DD TMMON YYYY' COLLATE "tr_TR"); -- to_date SELECT to_date('01 ŞUB 2010', 'DD TMMON YYYY'); SELECT to_date('01 Şub 2010', 'DD TMMON YYYY'); SELECT to_date('1234567890ab 2010', 'TMMONTH YYYY'); -- fail -- backwards parsing CREATE VIEW collview1 AS SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc'; CREATE VIEW collview2 AS SELECT a, b FROM collate_test1 ORDER BY b COLLATE "C"; CREATE VIEW collview3 AS SELECT a, lower((x || x) COLLATE "C") FROM collate_test10; SELECT table_name, view_definition FROM information_schema.views WHERE table_name LIKE 'collview%' ORDER BY 1; -- collation propagation in various expression types SELECT a, coalesce(b, 'foo') FROM collate_test1 ORDER BY 2; SELECT a, coalesce(b, 'foo') FROM collate_test2 ORDER BY 2; SELECT a, coalesce(b, 'foo') FROM collate_test3 ORDER BY 2; SELECT a, lower(coalesce(x, 'foo')), lower(coalesce(y, 'foo')) FROM collate_test10; SELECT a, b, greatest(b, 'CCC') FROM collate_test1 ORDER BY 3; SELECT a, b, greatest(b, 'CCC') FROM collate_test2 ORDER BY 3; SELECT a, b, greatest(b, 'CCC') FROM collate_test3 ORDER BY 3; SELECT a, x, y, lower(greatest(x, 'foo')), lower(greatest(y, 'foo')) FROM collate_test10; SELECT a, nullif(b, 'abc') FROM collate_test1 ORDER BY 2; SELECT a, nullif(b, 'abc') FROM collate_test2 ORDER BY 2; SELECT a, nullif(b, 'abc') FROM collate_test3 ORDER BY 2; SELECT a, lower(nullif(x, 'foo')), lower(nullif(y, 'foo')) FROM collate_test10; SELECT a, CASE b WHEN 'abc' THEN 'abcd' ELSE b END FROM collate_test1 ORDER BY 2; SELECT a, CASE b WHEN 'abc' THEN 'abcd' ELSE b END FROM collate_test2 ORDER BY 2; SELECT a, CASE b WHEN 'abc' THEN 'abcd' ELSE b END FROM collate_test3 ORDER BY 2; CREATE DOMAIN testdomain AS text; SELECT a, b::testdomain FROM collate_test1 ORDER BY 2; SELECT a, b::testdomain FROM collate_test2 ORDER BY 2; SELECT a, b::testdomain FROM collate_test3 ORDER BY 2; SELECT a, b::testdomain_sv FROM collate_test3 ORDER BY 2; SELECT a, lower(x::testdomain), lower(y::testdomain) FROM collate_test10; SELECT min(b), max(b) FROM collate_test1; SELECT min(b), max(b) FROM collate_test2; SELECT min(b), max(b) FROM collate_test3; SELECT array_agg(b ORDER BY b) FROM collate_test1; SELECT array_agg(b ORDER BY b) FROM collate_test2; SELECT array_agg(b ORDER BY b) FROM collate_test3; SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test1 ORDER BY 2; SELECT a, b FROM collate_test2 UNION SELECT a, b FROM collate_test2 ORDER BY 2; SELECT a, b FROM collate_test3 WHERE a < 4 INTERSECT SELECT a, b FROM collate_test3 WHERE a > 1 ORDER BY 2; SELECT a, b FROM collate_test3 EXCEPT SELECT a, b FROM collate_test3 WHERE a < 2 ORDER BY 2; SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test3 ORDER BY 2; -- fail SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test3; -- ok SELECT a, b FROM collate_test1 UNION SELECT a, b FROM collate_test3 ORDER BY 2; -- fail SELECT a, b COLLATE "C" FROM collate_test1 UNION SELECT a, b FROM collate_test3 ORDER BY 2; -- ok SELECT a, b FROM collate_test1 INTERSECT SELECT a, b FROM collate_test3 ORDER BY 2; -- fail SELECT a, b FROM collate_test1 EXCEPT SELECT a, b FROM collate_test3 ORDER BY 2; -- fail CREATE TABLE test_u AS SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test3; -- fail -- ideally this would be a parse-time error, but for now it must be run-time: select x < y from collate_test10; -- fail select x || y from collate_test10; -- ok, because || is not collation aware select x, y from collate_test10 order by x || y; -- not so ok -- collation mismatch between recursive and non-recursive term WITH RECURSIVE foo(x) AS (SELECT x FROM (VALUES('a' COLLATE "en_US"),('b')) t(x) UNION ALL SELECT (x || 'c') COLLATE "de_DE" FROM foo WHERE length(x) < 10) SELECT * FROM foo; -- casting SELECT CAST('42' AS text COLLATE "C"); SELECT a, CAST(b AS varchar) FROM collate_test1 ORDER BY 2; SELECT a, CAST(b AS varchar) FROM collate_test2 ORDER BY 2; SELECT a, CAST(b AS varchar) FROM collate_test3 ORDER BY 2; -- propagation of collation in SQL functions (inlined and non-inlined cases) -- and plpgsql functions too CREATE FUNCTION mylt (text, text) RETURNS boolean LANGUAGE sql AS $$ select $1 < $2 $$; CREATE FUNCTION mylt_noninline (text, text) RETURNS boolean LANGUAGE sql AS $$ select $1 < $2 limit 1 $$; CREATE FUNCTION mylt_plpgsql (text, text) RETURNS boolean LANGUAGE plpgsql AS $$ begin return $1 < $2; end $$; SELECT a.b AS a, b.b AS b, a.b < b.b AS lt, mylt(a.b, b.b), mylt_noninline(a.b, b.b), mylt_plpgsql(a.b, b.b) FROM collate_test1 a, collate_test1 b ORDER BY a.b, b.b; SELECT a.b AS a, b.b AS b, a.b < b.b COLLATE "C" AS lt, mylt(a.b, b.b COLLATE "C"), mylt_noninline(a.b, b.b COLLATE "C"), mylt_plpgsql(a.b, b.b COLLATE "C") FROM collate_test1 a, collate_test1 b ORDER BY a.b, b.b; -- collation override in plpgsql CREATE FUNCTION mylt2 (x text, y text) RETURNS boolean LANGUAGE plpgsql AS $$ declare xx text := x; yy text := y; begin return xx < yy; end $$; SELECT mylt2('a', 'B' collate "en_US") as t, mylt2('a', 'B' collate "C") as f; CREATE OR REPLACE FUNCTION mylt2 (x text, y text) RETURNS boolean LANGUAGE plpgsql AS $$ declare xx text COLLATE "POSIX" := x; yy text := y; begin return xx < yy; end $$; SELECT mylt2('a', 'B') as f; SELECT mylt2('a', 'B' collate "C") as fail; -- conflicting collations SELECT mylt2('a', 'B' collate "POSIX") as f; -- polymorphism SELECT * FROM unnest((SELECT array_agg(b ORDER BY b) FROM collate_test1)) ORDER BY 1; SELECT * FROM unnest((SELECT array_agg(b ORDER BY b) FROM collate_test2)) ORDER BY 1; SELECT * FROM unnest((SELECT array_agg(b ORDER BY b) FROM collate_test3)) ORDER BY 1; CREATE FUNCTION dup (anyelement) RETURNS anyelement AS 'select $1' LANGUAGE sql; SELECT a, dup(b) FROM collate_test1 ORDER BY 2; SELECT a, dup(b) FROM collate_test2 ORDER BY 2; SELECT a, dup(b) FROM collate_test3 ORDER BY 2; -- indexes CREATE INDEX collate_test1_idx1 ON collate_test1 (b); CREATE INDEX collate_test1_idx2 ON collate_test1 (b COLLATE "C"); CREATE INDEX collate_test1_idx3 ON collate_test1 ((b COLLATE "C")); -- this is different grammatically CREATE INDEX collate_test1_idx4 ON collate_test1 (((b||'foo') COLLATE "POSIX")); CREATE INDEX collate_test1_idx5 ON collate_test1 (a COLLATE "C"); -- fail CREATE INDEX collate_test1_idx6 ON collate_test1 ((a COLLATE "C")); -- fail SELECT relname, pg_get_indexdef(oid) FROM pg_class WHERE relname LIKE 'collate_test%_idx%' ORDER BY 1; -- schema manipulation commands CREATE ROLE regress_test_role; CREATE SCHEMA test_schema; -- We need to do this this way to cope with varying names for encodings: do $$ BEGIN EXECUTE 'CREATE COLLATION test0 (locale = ' || quote_literal(current_setting('lc_collate')) || ');'; END $$; CREATE COLLATION test0 FROM "C"; -- fail, duplicate name CREATE COLLATION IF NOT EXISTS test0 FROM "C"; -- ok, skipped CREATE COLLATION IF NOT EXISTS test0 (locale = 'foo'); -- ok, skipped do $$ BEGIN EXECUTE 'CREATE COLLATION test1 (lc_collate = ' || quote_literal(current_setting('lc_collate')) || ', lc_ctype = ' || quote_literal(current_setting('lc_ctype')) || ');'; END $$; CREATE COLLATION test3 (lc_collate = 'en_US.utf8'); -- fail, need lc_ctype CREATE COLLATION testx (locale = 'nonsense'); -- fail CREATE COLLATION test4 FROM nonsense; CREATE COLLATION test5 FROM test0; SELECT collname FROM pg_collation WHERE collname LIKE 'test%' ORDER BY 1; ALTER COLLATION test1 RENAME TO test11; ALTER COLLATION test0 RENAME TO test11; -- fail ALTER COLLATION test1 RENAME TO test22; -- fail ALTER COLLATION test11 OWNER TO regress_test_role; ALTER COLLATION test11 OWNER TO nonsense; ALTER COLLATION test11 SET SCHEMA test_schema; COMMENT ON COLLATION test0 IS 'US English'; SELECT collname, nspname, obj_description(pg_collation.oid, 'pg_collation') FROM pg_collation JOIN pg_namespace ON (collnamespace = pg_namespace.oid) WHERE collname LIKE 'test%' ORDER BY 1; DROP COLLATION test0, test_schema.test11, test5; DROP COLLATION test0; -- fail DROP COLLATION IF EXISTS test0; SELECT collname FROM pg_collation WHERE collname LIKE 'test%'; DROP SCHEMA test_schema; DROP ROLE regress_test_role; -- ALTER ALTER COLLATION "en_US" REFRESH VERSION; -- dependencies CREATE COLLATION test0 FROM "C"; CREATE TABLE collate_dep_test1 (a int, b text COLLATE test0); CREATE DOMAIN collate_dep_dom1 AS text COLLATE test0; CREATE TYPE collate_dep_test2 AS (x int, y text COLLATE test0); CREATE VIEW collate_dep_test3 AS SELECT text 'foo' COLLATE test0 AS foo; CREATE TABLE collate_dep_test4t (a int, b text); CREATE INDEX collate_dep_test4i ON collate_dep_test4t (b COLLATE test0); DROP COLLATION test0 RESTRICT; -- fail DROP COLLATION test0 CASCADE; \d collate_dep_test1 \d collate_dep_test2 DROP TABLE collate_dep_test1, collate_dep_test4t; DROP TYPE collate_dep_test2; -- test range types and collations create type textrange_c as range(subtype=text, collation="C"); create type textrange_en_us as range(subtype=text, collation="en_US"); select textrange_c('A','Z') @> 'b'::text; select textrange_en_us('A','Z') @> 'b'::text; drop type textrange_c; drop type textrange_en_us; -- nondeterministic collations -- (not supported with libc provider) CREATE COLLATION ctest_det (locale = 'en_US.utf8', deterministic = true); CREATE COLLATION ctest_nondet (locale = 'en_US.utf8', deterministic = false); -- cleanup SET client_min_messages TO warning; DROP SCHEMA collate_tests CASCADE; libpg_query-13-2.1.0/test/sql/postgres_regress/collate.sql000066400000000000000000000242241413137616400236110ustar00rootroot00000000000000/* * This test is intended to pass on all platforms supported by Postgres. * We can therefore only assume that the default, C, and POSIX collations * are available --- and since the regression tests are often run in a * C-locale database, these may well all have the same behavior. But * fortunately, the system doesn't know that and will treat them as * incompatible collations. It is therefore at least possible to test * parser behaviors such as collation conflict resolution. This test will, * however, be more revealing when run in a database with non-C locale, * since any departure from C sorting behavior will show as a failure. */ CREATE SCHEMA collate_tests; SET search_path = collate_tests; CREATE TABLE collate_test1 ( a int, b text COLLATE "C" NOT NULL ); \d collate_test1 CREATE TABLE collate_test_fail ( a int COLLATE "C", b text ); CREATE TABLE collate_test_like ( LIKE collate_test1 ); \d collate_test_like CREATE TABLE collate_test2 ( a int, b text COLLATE "POSIX" ); INSERT INTO collate_test1 VALUES (1, 'abc'), (2, 'Abc'), (3, 'bbc'), (4, 'ABD'); INSERT INTO collate_test2 SELECT * FROM collate_test1; SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'abc'; SELECT * FROM collate_test1 WHERE b >= 'abc' COLLATE "C"; SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'abc' COLLATE "C"; SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc' COLLATE "POSIX"; -- fail CREATE DOMAIN testdomain_p AS text COLLATE "POSIX"; CREATE DOMAIN testdomain_i AS int COLLATE "POSIX"; -- fail CREATE TABLE collate_test4 ( a int, b testdomain_p ); INSERT INTO collate_test4 SELECT * FROM collate_test1; SELECT a, b FROM collate_test4 ORDER BY b; CREATE TABLE collate_test5 ( a int, b testdomain_p COLLATE "C" ); INSERT INTO collate_test5 SELECT * FROM collate_test1; SELECT a, b FROM collate_test5 ORDER BY b; SELECT a, b FROM collate_test1 ORDER BY b; SELECT a, b FROM collate_test2 ORDER BY b; SELECT a, b FROM collate_test1 ORDER BY b COLLATE "C"; -- star expansion SELECT * FROM collate_test1 ORDER BY b; SELECT * FROM collate_test2 ORDER BY b; -- constant expression folding SELECT 'bbc' COLLATE "C" > 'Abc' COLLATE "C" AS "true"; SELECT 'bbc' COLLATE "POSIX" < 'Abc' COLLATE "POSIX" AS "false"; -- upper/lower CREATE TABLE collate_test10 ( a int, x text COLLATE "C", y text COLLATE "POSIX" ); INSERT INTO collate_test10 VALUES (1, 'hij', 'hij'), (2, 'HIJ', 'HIJ'); SELECT a, lower(x), lower(y), upper(x), upper(y), initcap(x), initcap(y) FROM collate_test10; SELECT a, lower(x COLLATE "C"), lower(y COLLATE "C") FROM collate_test10; SELECT a, x, y FROM collate_test10 ORDER BY lower(y), a; -- backwards parsing CREATE VIEW collview1 AS SELECT * FROM collate_test1 WHERE b COLLATE "C" >= 'bbc'; CREATE VIEW collview2 AS SELECT a, b FROM collate_test1 ORDER BY b COLLATE "C"; CREATE VIEW collview3 AS SELECT a, lower((x || x) COLLATE "POSIX") FROM collate_test10; SELECT table_name, view_definition FROM information_schema.views WHERE table_name LIKE 'collview%' ORDER BY 1; -- collation propagation in various expression types SELECT a, coalesce(b, 'foo') FROM collate_test1 ORDER BY 2; SELECT a, coalesce(b, 'foo') FROM collate_test2 ORDER BY 2; SELECT a, lower(coalesce(x, 'foo')), lower(coalesce(y, 'foo')) FROM collate_test10; SELECT a, b, greatest(b, 'CCC') FROM collate_test1 ORDER BY 3; SELECT a, b, greatest(b, 'CCC') FROM collate_test2 ORDER BY 3; SELECT a, x, y, lower(greatest(x, 'foo')), lower(greatest(y, 'foo')) FROM collate_test10; SELECT a, nullif(b, 'abc') FROM collate_test1 ORDER BY 2; SELECT a, nullif(b, 'abc') FROM collate_test2 ORDER BY 2; SELECT a, lower(nullif(x, 'foo')), lower(nullif(y, 'foo')) FROM collate_test10; SELECT a, CASE b WHEN 'abc' THEN 'abcd' ELSE b END FROM collate_test1 ORDER BY 2; SELECT a, CASE b WHEN 'abc' THEN 'abcd' ELSE b END FROM collate_test2 ORDER BY 2; CREATE DOMAIN testdomain AS text; SELECT a, b::testdomain FROM collate_test1 ORDER BY 2; SELECT a, b::testdomain FROM collate_test2 ORDER BY 2; SELECT a, b::testdomain_p FROM collate_test2 ORDER BY 2; SELECT a, lower(x::testdomain), lower(y::testdomain) FROM collate_test10; SELECT min(b), max(b) FROM collate_test1; SELECT min(b), max(b) FROM collate_test2; SELECT array_agg(b ORDER BY b) FROM collate_test1; SELECT array_agg(b ORDER BY b) FROM collate_test2; -- In aggregates, ORDER BY expressions don't affect aggregate's collation SELECT string_agg(x COLLATE "C", y COLLATE "POSIX") FROM collate_test10; -- fail SELECT array_agg(x COLLATE "C" ORDER BY y COLLATE "POSIX") FROM collate_test10; SELECT array_agg(a ORDER BY x COLLATE "C", y COLLATE "POSIX") FROM collate_test10; SELECT array_agg(a ORDER BY x||y) FROM collate_test10; -- fail SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test1 ORDER BY 2; SELECT a, b FROM collate_test2 UNION SELECT a, b FROM collate_test2 ORDER BY 2; SELECT a, b FROM collate_test2 WHERE a < 4 INTERSECT SELECT a, b FROM collate_test2 WHERE a > 1 ORDER BY 2; SELECT a, b FROM collate_test2 EXCEPT SELECT a, b FROM collate_test2 WHERE a < 2 ORDER BY 2; SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test2 ORDER BY 2; -- fail SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test2; -- ok SELECT a, b FROM collate_test1 UNION SELECT a, b FROM collate_test2 ORDER BY 2; -- fail SELECT a, b COLLATE "C" FROM collate_test1 UNION SELECT a, b FROM collate_test2 ORDER BY 2; -- ok SELECT a, b FROM collate_test1 INTERSECT SELECT a, b FROM collate_test2 ORDER BY 2; -- fail SELECT a, b FROM collate_test1 EXCEPT SELECT a, b FROM collate_test2 ORDER BY 2; -- fail CREATE TABLE test_u AS SELECT a, b FROM collate_test1 UNION ALL SELECT a, b FROM collate_test2; -- fail -- ideally this would be a parse-time error, but for now it must be run-time: select x < y from collate_test10; -- fail select x || y from collate_test10; -- ok, because || is not collation aware select x, y from collate_test10 order by x || y; -- not so ok -- collation mismatch between recursive and non-recursive term WITH RECURSIVE foo(x) AS (SELECT x FROM (VALUES('a' COLLATE "C"),('b')) t(x) UNION ALL SELECT (x || 'c') COLLATE "POSIX" FROM foo WHERE length(x) < 10) SELECT * FROM foo; SELECT a, b, a < b as lt FROM (VALUES ('a', 'B'), ('A', 'b' COLLATE "C")) v(a,b); -- collation mismatch in subselects SELECT * FROM collate_test10 WHERE (x, y) NOT IN (SELECT y, x FROM collate_test10); -- now it works with overrides SELECT * FROM collate_test10 WHERE (x COLLATE "POSIX", y COLLATE "C") NOT IN (SELECT y, x FROM collate_test10); SELECT * FROM collate_test10 WHERE (x, y) NOT IN (SELECT y COLLATE "C", x COLLATE "POSIX" FROM collate_test10); -- casting SELECT CAST('42' AS text COLLATE "C"); SELECT a, CAST(b AS varchar) FROM collate_test1 ORDER BY 2; SELECT a, CAST(b AS varchar) FROM collate_test2 ORDER BY 2; -- result of a SQL function CREATE FUNCTION vc (text) RETURNS text LANGUAGE sql AS 'select $1::varchar'; SELECT a, b FROM collate_test1 ORDER BY a, vc(b); -- polymorphism SELECT * FROM unnest((SELECT array_agg(b ORDER BY b) FROM collate_test1)) ORDER BY 1; SELECT * FROM unnest((SELECT array_agg(b ORDER BY b) FROM collate_test2)) ORDER BY 1; CREATE FUNCTION dup (anyelement) RETURNS anyelement AS 'select $1' LANGUAGE sql; SELECT a, dup(b) FROM collate_test1 ORDER BY 2; SELECT a, dup(b) FROM collate_test2 ORDER BY 2; -- indexes CREATE INDEX collate_test1_idx1 ON collate_test1 (b); CREATE INDEX collate_test1_idx2 ON collate_test1 (b COLLATE "POSIX"); CREATE INDEX collate_test1_idx3 ON collate_test1 ((b COLLATE "POSIX")); -- this is different grammatically CREATE INDEX collate_test1_idx4 ON collate_test1 (((b||'foo') COLLATE "POSIX")); CREATE INDEX collate_test1_idx5 ON collate_test1 (a COLLATE "POSIX"); -- fail CREATE INDEX collate_test1_idx6 ON collate_test1 ((a COLLATE "POSIX")); -- fail SELECT relname, pg_get_indexdef(oid) FROM pg_class WHERE relname LIKE 'collate_test%_idx%' ORDER BY 1; -- foreign keys -- force indexes and mergejoins to be used for FK checking queries, -- else they might not exercise collation-dependent operators SET enable_seqscan TO 0; SET enable_hashjoin TO 0; SET enable_nestloop TO 0; CREATE TABLE collate_test20 (f1 text COLLATE "C" PRIMARY KEY); INSERT INTO collate_test20 VALUES ('foo'), ('bar'); CREATE TABLE collate_test21 (f2 text COLLATE "POSIX" REFERENCES collate_test20); INSERT INTO collate_test21 VALUES ('foo'), ('bar'); INSERT INTO collate_test21 VALUES ('baz'); -- fail CREATE TABLE collate_test22 (f2 text COLLATE "POSIX"); INSERT INTO collate_test22 VALUES ('foo'), ('bar'), ('baz'); ALTER TABLE collate_test22 ADD FOREIGN KEY (f2) REFERENCES collate_test20; -- fail DELETE FROM collate_test22 WHERE f2 = 'baz'; ALTER TABLE collate_test22 ADD FOREIGN KEY (f2) REFERENCES collate_test20; RESET enable_seqscan; RESET enable_hashjoin; RESET enable_nestloop; -- EXPLAIN EXPLAIN (COSTS OFF) SELECT * FROM collate_test10 ORDER BY x, y; EXPLAIN (COSTS OFF) SELECT * FROM collate_test10 ORDER BY x DESC, y COLLATE "C" ASC NULLS FIRST; -- CREATE/DROP COLLATION CREATE COLLATION mycoll1 FROM "C"; CREATE COLLATION mycoll2 ( LC_COLLATE = "POSIX", LC_CTYPE = "POSIX" ); CREATE COLLATION mycoll3 FROM "default"; -- intentionally unsupported DROP COLLATION mycoll1; CREATE TABLE collate_test23 (f1 text collate mycoll2); DROP COLLATION mycoll2; -- fail -- invalid: non-lowercase quoted identifiers CREATE COLLATION case_coll ("Lc_Collate" = "POSIX", "Lc_Ctype" = "POSIX"); -- 9.1 bug with useless COLLATE in an expression subject to length coercion CREATE TEMP TABLE vctable (f1 varchar(25)); INSERT INTO vctable VALUES ('foo' COLLATE "C"); SELECT collation for ('foo'); -- unknown type - null SELECT collation for ('foo'::text); SELECT collation for ((SELECT a FROM collate_test1 LIMIT 1)); -- non-collatable type - error SELECT collation for ((SELECT b FROM collate_test1 LIMIT 1)); -- old bug with not dropping COLLATE when coercing to non-collatable type CREATE VIEW collate_on_int AS SELECT c1+1 AS c1p FROM (SELECT ('4' COLLATE "C")::INT AS c1) ss; \d+ collate_on_int -- -- Clean up. Many of these table names will be re-used if the user is -- trying to run any platform-specific collation tests later, so we -- must get rid of them. -- DROP SCHEMA collate_tests CASCADE; libpg_query-13-2.1.0/test/sql/postgres_regress/combocid.sql000066400000000000000000000054161413137616400237470ustar00rootroot00000000000000-- -- Tests for some likely failure cases with combo cmin/cmax mechanism -- CREATE TEMP TABLE combocidtest (foobar int); BEGIN; -- a few dummy ops to push up the CommandId counter INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest VALUES (1); INSERT INTO combocidtest VALUES (2); SELECT ctid,cmin,* FROM combocidtest; SAVEPOINT s1; UPDATE combocidtest SET foobar = foobar + 10; -- here we should see only updated tuples SELECT ctid,cmin,* FROM combocidtest; ROLLBACK TO s1; -- now we should see old tuples, but with combo CIDs starting at 0 SELECT ctid,cmin,* FROM combocidtest; COMMIT; -- combo data is not there anymore, but should still see tuples SELECT ctid,cmin,* FROM combocidtest; -- Test combo cids with portals BEGIN; INSERT INTO combocidtest VALUES (333); DECLARE c CURSOR FOR SELECT ctid,cmin,* FROM combocidtest; DELETE FROM combocidtest; FETCH ALL FROM c; ROLLBACK; SELECT ctid,cmin,* FROM combocidtest; -- check behavior with locked tuples BEGIN; -- a few dummy ops to push up the CommandId counter INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest SELECT 1 LIMIT 0; INSERT INTO combocidtest VALUES (444); SELECT ctid,cmin,* FROM combocidtest; SAVEPOINT s1; -- this doesn't affect cmin SELECT ctid,cmin,* FROM combocidtest FOR UPDATE; SELECT ctid,cmin,* FROM combocidtest; -- but this does UPDATE combocidtest SET foobar = foobar + 10; SELECT ctid,cmin,* FROM combocidtest; ROLLBACK TO s1; SELECT ctid,cmin,* FROM combocidtest; COMMIT; SELECT ctid,cmin,* FROM combocidtest; -- test for bug reported in -- CABRT9RC81YUf1=jsmWopcKJEro=VoeG2ou6sPwyOUTx_qteRsg@mail.gmail.com CREATE TABLE IF NOT EXISTS testcase( id int PRIMARY KEY, balance numeric ); INSERT INTO testcase VALUES (1, 0); BEGIN; SELECT * FROM testcase WHERE testcase.id = 1 FOR UPDATE; UPDATE testcase SET balance = balance + 400 WHERE id=1; SAVEPOINT subxact; UPDATE testcase SET balance = balance - 100 WHERE id=1; ROLLBACK TO SAVEPOINT subxact; -- should return one tuple SELECT * FROM testcase WHERE id = 1 FOR UPDATE; ROLLBACK; DROP TABLE testcase; libpg_query-13-2.1.0/test/sql/postgres_regress/comments.sql000066400000000000000000000020211413137616400240020ustar00rootroot00000000000000-- -- COMMENTS -- SELECT 'trailing' AS first; -- trailing single line SELECT /* embedded single line */ 'embedded' AS second; SELECT /* both embedded and trailing single line */ 'both' AS third; -- trailing single line SELECT 'before multi-line' AS fourth; /* This is an example of SQL which should not execute: * select 'multi-line'; */ SELECT 'after multi-line' AS fifth; -- -- Nested comments -- /* SELECT 'trailing' as x1; -- inside block comment */ /* This block comment surrounds a query which itself has a block comment... SELECT /* embedded single line */ 'embedded' AS x2; */ SELECT -- continued after the following block comments... /* Deeply nested comment. This includes a single apostrophe to make sure we aren't decoding this part as a string. SELECT 'deep nest' AS n1; /* Second level of nesting... SELECT 'deeper nest' as n2; /* Third level of nesting... SELECT 'deepest nest' as n3; */ Hoo boy. Still two deep... */ Now just one deep... */ 'deeply nested example' AS sixth; /* and this is the end of the file */ libpg_query-13-2.1.0/test/sql/postgres_regress/conversion.sql000066400000000000000000000021141413137616400243450ustar00rootroot00000000000000-- -- create user defined conversion -- CREATE USER regress_conversion_user WITH NOCREATEDB NOCREATEROLE; SET SESSION AUTHORIZATION regress_conversion_user; CREATE CONVERSION myconv FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; -- -- cannot make same name conversion in same schema -- CREATE CONVERSION myconv FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; -- -- create default conversion with qualified name -- CREATE DEFAULT CONVERSION public.mydef FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; -- -- cannot make default conversion with same schema/for_encoding/to_encoding -- CREATE DEFAULT CONVERSION public.mydef2 FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; -- test comments COMMENT ON CONVERSION myconv_bad IS 'foo'; COMMENT ON CONVERSION myconv IS 'bar'; COMMENT ON CONVERSION myconv IS NULL; -- -- drop user defined conversion -- DROP CONVERSION myconv; DROP CONVERSION mydef; -- -- Note: the built-in conversions are exercised in opr_sanity.sql, -- so there's no need to do that here. -- -- -- return to the super user -- RESET SESSION AUTHORIZATION; DROP USER regress_conversion_user; libpg_query-13-2.1.0/test/sql/postgres_regress/copy2.sql000066400000000000000000000226351413137616400232260ustar00rootroot00000000000000CREATE TEMP TABLE x ( a serial, b int, c text not null default 'stuff', d text, e text ) ; CREATE FUNCTION fn_x_before () RETURNS TRIGGER AS ' BEGIN NEW.e := ''before trigger fired''::text; return NEW; END; ' LANGUAGE plpgsql; CREATE FUNCTION fn_x_after () RETURNS TRIGGER AS ' BEGIN UPDATE x set e=''after trigger fired'' where c=''stuff''; return NULL; END; ' LANGUAGE plpgsql; CREATE TRIGGER trg_x_after AFTER INSERT ON x FOR EACH ROW EXECUTE PROCEDURE fn_x_after(); CREATE TRIGGER trg_x_before BEFORE INSERT ON x FOR EACH ROW EXECUTE PROCEDURE fn_x_before(); COPY x (a, b, c, d, e) from stdin; 9999 \N \\N \NN \N 10000 21 31 41 51 \. COPY x (b, d) from stdin; 1 test_1 \. COPY x (b, d) from stdin; 2 test_2 3 test_3 4 test_4 5 test_5 \. COPY x (a, b, c, d, e) from stdin; 10001 22 32 42 52 10002 23 33 43 53 10003 24 34 44 54 10004 25 35 45 55 10005 26 36 46 56 \. -- non-existent column in column list: should fail COPY x (xyz) from stdin; -- too many columns in column list: should fail COPY x (a, b, c, d, e, d, c) from stdin; -- missing data: should fail COPY x from stdin; \. COPY x from stdin; 2000 230 23 23 \. COPY x from stdin; 2001 231 \N \N \. -- extra data: should fail COPY x from stdin; 2002 232 40 50 60 70 80 \. -- various COPY options: delimiters, oids, NULL string, encoding COPY x (b, c, d, e) from stdin delimiter ',' null 'x'; x,45,80,90 x,\x,\\x,\\\x x,\,,\\\,,\\ \. COPY x from stdin WITH DELIMITER AS ';' NULL AS ''; 3000;;c;; \. COPY x from stdin WITH DELIMITER AS ':' NULL AS E'\\X' ENCODING 'sql_ascii'; 4000:\X:C:\X:\X 4001:1:empty:: 4002:2:null:\X:\X 4003:3:Backslash:\\:\\ 4004:4:BackslashX:\\X:\\X 4005:5:N:\N:\N 4006:6:BackslashN:\\N:\\N 4007:7:XX:\XX:\XX 4008:8:Delimiter:\::\: \. COPY x TO stdout WHERE a = 1; COPY x from stdin WHERE a = 50004; 50003 24 34 44 54 50004 25 35 45 55 50005 26 36 46 56 \. COPY x from stdin WHERE a > 60003; 60001 22 32 42 52 60002 23 33 43 53 60003 24 34 44 54 60004 25 35 45 55 60005 26 36 46 56 \. COPY x from stdin WHERE f > 60003; COPY x from stdin WHERE a = max(x.b); COPY x from stdin WHERE a IN (SELECT 1 FROM x); COPY x from stdin WHERE a IN (generate_series(1,5)); COPY x from stdin WHERE a = row_number() over(b); -- check results of copy in SELECT * FROM x; -- check copy out COPY x TO stdout; COPY x (c, e) TO stdout; COPY x (b, e) TO stdout WITH NULL 'I''m null'; CREATE TEMP TABLE y ( col1 text, col2 text ); INSERT INTO y VALUES ('Jackson, Sam', E'\\h'); INSERT INTO y VALUES ('It is "perfect".',E'\t'); INSERT INTO y VALUES ('', NULL); COPY y TO stdout WITH CSV; COPY y TO stdout WITH CSV QUOTE '''' DELIMITER '|'; COPY y TO stdout WITH CSV FORCE QUOTE col2 ESCAPE E'\\' ENCODING 'sql_ascii'; COPY y TO stdout WITH CSV FORCE QUOTE *; -- Repeat above tests with new 9.0 option syntax COPY y TO stdout (FORMAT CSV); COPY y TO stdout (FORMAT CSV, QUOTE '''', DELIMITER '|'); COPY y TO stdout (FORMAT CSV, FORCE_QUOTE (col2), ESCAPE E'\\'); COPY y TO stdout (FORMAT CSV, FORCE_QUOTE *); \copy y TO stdout (FORMAT CSV) \copy y TO stdout (FORMAT CSV, QUOTE '''', DELIMITER '|') \copy y TO stdout (FORMAT CSV, FORCE_QUOTE (col2), ESCAPE E'\\') \copy y TO stdout (FORMAT CSV, FORCE_QUOTE *) --test that we read consecutive LFs properly CREATE TEMP TABLE testnl (a int, b text, c int); COPY testnl FROM stdin CSV; 1,"a field with two LFs inside",2 \. -- test end of copy marker CREATE TEMP TABLE testeoc (a text); COPY testeoc FROM stdin CSV; a\. \.b c\.d "\." \. COPY testeoc TO stdout CSV; -- test handling of nonstandard null marker that violates escaping rules CREATE TEMP TABLE testnull(a int, b text); INSERT INTO testnull VALUES (1, E'\\0'), (NULL, NULL); COPY testnull TO stdout WITH NULL AS E'\\0'; COPY testnull FROM stdin WITH NULL AS E'\\0'; 42 \\0 \0 \0 \. SELECT * FROM testnull; BEGIN; CREATE TABLE vistest (LIKE testeoc); COPY vistest FROM stdin CSV; a0 b \. COMMIT; SELECT * FROM vistest; BEGIN; TRUNCATE vistest; COPY vistest FROM stdin CSV; a1 b \. SELECT * FROM vistest; SAVEPOINT s1; TRUNCATE vistest; COPY vistest FROM stdin CSV; d1 e \. SELECT * FROM vistest; COMMIT; SELECT * FROM vistest; BEGIN; TRUNCATE vistest; COPY vistest FROM stdin CSV FREEZE; a2 b \. SELECT * FROM vistest; SAVEPOINT s1; TRUNCATE vistest; COPY vistest FROM stdin CSV FREEZE; d2 e \. SELECT * FROM vistest; COMMIT; SELECT * FROM vistest; BEGIN; TRUNCATE vistest; COPY vistest FROM stdin CSV FREEZE; x y \. SELECT * FROM vistest; COMMIT; TRUNCATE vistest; COPY vistest FROM stdin CSV FREEZE; p g \. BEGIN; TRUNCATE vistest; SAVEPOINT s1; COPY vistest FROM stdin CSV FREEZE; m k \. COMMIT; BEGIN; INSERT INTO vistest VALUES ('z'); SAVEPOINT s1; TRUNCATE vistest; ROLLBACK TO SAVEPOINT s1; COPY vistest FROM stdin CSV FREEZE; d3 e \. COMMIT; CREATE FUNCTION truncate_in_subxact() RETURNS VOID AS $$ BEGIN TRUNCATE vistest; EXCEPTION WHEN OTHERS THEN INSERT INTO vistest VALUES ('subxact failure'); END; $$ language plpgsql; BEGIN; INSERT INTO vistest VALUES ('z'); SELECT truncate_in_subxact(); COPY vistest FROM stdin CSV FREEZE; d4 e \. SELECT * FROM vistest; COMMIT; SELECT * FROM vistest; -- Test FORCE_NOT_NULL and FORCE_NULL options CREATE TEMP TABLE forcetest ( a INT NOT NULL, b TEXT NOT NULL, c TEXT, d TEXT, e TEXT ); \pset null NULL -- should succeed with no effect ("b" remains an empty string, "c" remains NULL) BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL(b), FORCE_NULL(c)); 1,,"notempty" \. COMMIT; SELECT b, c FROM forcetest WHERE a = 1; -- should succeed, FORCE_NULL and FORCE_NOT_NULL can be both specified BEGIN; COPY forcetest (a, b, c, d) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL(c,d), FORCE_NULL(c,d)); 2,'a',,"notempty" \. COMMIT; SELECT c, d FROM forcetest WHERE a = 2; -- should fail with not-null constraint violation BEGIN; COPY forcetest (a, b, c) FROM STDIN WITH (FORMAT csv, FORCE_NULL(b), FORCE_NOT_NULL(c)); 3,,"notempty" \. ROLLBACK; -- should fail with "not referenced by COPY" error BEGIN; COPY forcetest (d, e) FROM STDIN WITH (FORMAT csv, FORCE_NOT_NULL(b)); ROLLBACK; -- should fail with "not referenced by COPY" error BEGIN; COPY forcetest (d, e) FROM STDIN WITH (FORMAT csv, FORCE_NULL(b)); ROLLBACK; \pset null '' -- test case with whole-row Var in a check constraint create table check_con_tbl (f1 int); create function check_con_function(check_con_tbl) returns bool as $$ begin raise notice 'input = %', row_to_json($1); return $1.f1 > 0; end $$ language plpgsql immutable; alter table check_con_tbl add check (check_con_function(check_con_tbl.*)); \d+ check_con_tbl copy check_con_tbl from stdin; 1 \N \. copy check_con_tbl from stdin; 0 \. select * from check_con_tbl; -- test with RLS enabled. CREATE ROLE regress_rls_copy_user; CREATE ROLE regress_rls_copy_user_colperms; CREATE TABLE rls_t1 (a int, b int, c int); COPY rls_t1 (a, b, c) from stdin; 1 4 1 2 3 2 3 2 3 4 1 4 \. CREATE POLICY p1 ON rls_t1 FOR SELECT USING (a % 2 = 0); ALTER TABLE rls_t1 ENABLE ROW LEVEL SECURITY; ALTER TABLE rls_t1 FORCE ROW LEVEL SECURITY; GRANT SELECT ON TABLE rls_t1 TO regress_rls_copy_user; GRANT SELECT (a, b) ON TABLE rls_t1 TO regress_rls_copy_user_colperms; -- all columns COPY rls_t1 TO stdout; COPY rls_t1 (a, b, c) TO stdout; -- subset of columns COPY rls_t1 (a) TO stdout; COPY rls_t1 (a, b) TO stdout; -- column reordering COPY rls_t1 (b, a) TO stdout; SET SESSION AUTHORIZATION regress_rls_copy_user; -- all columns COPY rls_t1 TO stdout; COPY rls_t1 (a, b, c) TO stdout; -- subset of columns COPY rls_t1 (a) TO stdout; COPY rls_t1 (a, b) TO stdout; -- column reordering COPY rls_t1 (b, a) TO stdout; RESET SESSION AUTHORIZATION; SET SESSION AUTHORIZATION regress_rls_copy_user_colperms; -- attempt all columns (should fail) COPY rls_t1 TO stdout; COPY rls_t1 (a, b, c) TO stdout; -- try to copy column with no privileges (should fail) COPY rls_t1 (c) TO stdout; -- subset of columns (should succeed) COPY rls_t1 (a) TO stdout; COPY rls_t1 (a, b) TO stdout; RESET SESSION AUTHORIZATION; -- test with INSTEAD OF INSERT trigger on a view CREATE TABLE instead_of_insert_tbl(id serial, name text); CREATE VIEW instead_of_insert_tbl_view AS SELECT ''::text AS str; COPY instead_of_insert_tbl_view FROM stdin; -- fail test1 \. CREATE FUNCTION fun_instead_of_insert_tbl() RETURNS trigger AS $$ BEGIN INSERT INTO instead_of_insert_tbl (name) VALUES (NEW.str); RETURN NULL; END; $$ LANGUAGE plpgsql; CREATE TRIGGER trig_instead_of_insert_tbl_view INSTEAD OF INSERT ON instead_of_insert_tbl_view FOR EACH ROW EXECUTE PROCEDURE fun_instead_of_insert_tbl(); COPY instead_of_insert_tbl_view FROM stdin; test1 \. SELECT * FROM instead_of_insert_tbl; -- Test of COPY optimization with view using INSTEAD OF INSERT -- trigger when relation is created in the same transaction as -- when COPY is executed. BEGIN; CREATE VIEW instead_of_insert_tbl_view_2 as select ''::text as str; CREATE TRIGGER trig_instead_of_insert_tbl_view_2 INSTEAD OF INSERT ON instead_of_insert_tbl_view_2 FOR EACH ROW EXECUTE PROCEDURE fun_instead_of_insert_tbl(); COPY instead_of_insert_tbl_view_2 FROM stdin; test1 \. SELECT * FROM instead_of_insert_tbl; COMMIT; -- clean up DROP TABLE forcetest; DROP TABLE vistest; DROP FUNCTION truncate_in_subxact(); DROP TABLE x, y; DROP TABLE rls_t1 CASCADE; DROP ROLE regress_rls_copy_user; DROP ROLE regress_rls_copy_user_colperms; DROP FUNCTION fn_x_before(); DROP FUNCTION fn_x_after(); DROP TABLE instead_of_insert_tbl; DROP VIEW instead_of_insert_tbl_view; DROP VIEW instead_of_insert_tbl_view_2; DROP FUNCTION fun_instead_of_insert_tbl(); libpg_query-13-2.1.0/test/sql/postgres_regress/copydml.sql000066400000000000000000000074611413137616400236410ustar00rootroot00000000000000-- -- Test cases for COPY (INSERT/UPDATE/DELETE) TO -- create table copydml_test (id serial, t text); insert into copydml_test (t) values ('a'); insert into copydml_test (t) values ('b'); insert into copydml_test (t) values ('c'); insert into copydml_test (t) values ('d'); insert into copydml_test (t) values ('e'); -- -- Test COPY (insert/update/delete ...) -- copy (insert into copydml_test (t) values ('f') returning id) to stdout; copy (update copydml_test set t = 'g' where t = 'f' returning id) to stdout; copy (delete from copydml_test where t = 'g' returning id) to stdout; -- -- Test \copy (insert/update/delete ...) -- \copy (insert into copydml_test (t) values ('f') returning id) to stdout; \copy (update copydml_test set t = 'g' where t = 'f' returning id) to stdout; \copy (delete from copydml_test where t = 'g' returning id) to stdout; -- Error cases copy (insert into copydml_test default values) to stdout; copy (update copydml_test set t = 'g') to stdout; copy (delete from copydml_test) to stdout; create rule qqq as on insert to copydml_test do instead nothing; copy (insert into copydml_test default values) to stdout; drop rule qqq on copydml_test; create rule qqq as on insert to copydml_test do also delete from copydml_test; copy (insert into copydml_test default values) to stdout; drop rule qqq on copydml_test; create rule qqq as on insert to copydml_test do instead (delete from copydml_test; delete from copydml_test); copy (insert into copydml_test default values) to stdout; drop rule qqq on copydml_test; create rule qqq as on insert to copydml_test where new.t <> 'f' do instead delete from copydml_test; copy (insert into copydml_test default values) to stdout; drop rule qqq on copydml_test; create rule qqq as on update to copydml_test do instead nothing; copy (update copydml_test set t = 'f') to stdout; drop rule qqq on copydml_test; create rule qqq as on update to copydml_test do also delete from copydml_test; copy (update copydml_test set t = 'f') to stdout; drop rule qqq on copydml_test; create rule qqq as on update to copydml_test do instead (delete from copydml_test; delete from copydml_test); copy (update copydml_test set t = 'f') to stdout; drop rule qqq on copydml_test; create rule qqq as on update to copydml_test where new.t <> 'f' do instead delete from copydml_test; copy (update copydml_test set t = 'f') to stdout; drop rule qqq on copydml_test; create rule qqq as on delete to copydml_test do instead nothing; copy (delete from copydml_test) to stdout; drop rule qqq on copydml_test; create rule qqq as on delete to copydml_test do also insert into copydml_test default values; copy (delete from copydml_test) to stdout; drop rule qqq on copydml_test; create rule qqq as on delete to copydml_test do instead (insert into copydml_test default values; insert into copydml_test default values); copy (delete from copydml_test) to stdout; drop rule qqq on copydml_test; create rule qqq as on delete to copydml_test where old.t <> 'f' do instead insert into copydml_test default values; copy (delete from copydml_test) to stdout; drop rule qqq on copydml_test; -- triggers create function qqq_trig() returns trigger as $$ begin if tg_op in ('INSERT', 'UPDATE') then raise notice '% %', tg_op, new.id; return new; else raise notice '% %', tg_op, old.id; return old; end if; end $$ language plpgsql; create trigger qqqbef before insert or update or delete on copydml_test for each row execute procedure qqq_trig(); create trigger qqqaf after insert or update or delete on copydml_test for each row execute procedure qqq_trig(); copy (insert into copydml_test (t) values ('f') returning id) to stdout; copy (update copydml_test set t = 'g' where t = 'f' returning id) to stdout; copy (delete from copydml_test where t = 'g' returning id) to stdout; drop table copydml_test; drop function qqq_trig(); libpg_query-13-2.1.0/test/sql/postgres_regress/copyselect.sql000066400000000000000000000042371413137616400243420ustar00rootroot00000000000000-- -- Test cases for COPY (select) TO -- create table test1 (id serial, t text); insert into test1 (t) values ('a'); insert into test1 (t) values ('b'); insert into test1 (t) values ('c'); insert into test1 (t) values ('d'); insert into test1 (t) values ('e'); create table test2 (id serial, t text); insert into test2 (t) values ('A'); insert into test2 (t) values ('B'); insert into test2 (t) values ('C'); insert into test2 (t) values ('D'); insert into test2 (t) values ('E'); create view v_test1 as select 'v_'||t from test1; -- -- Test COPY table TO -- copy test1 to stdout; -- -- This should fail -- copy v_test1 to stdout; -- -- Test COPY (select) TO -- copy (select t from test1 where id=1) to stdout; -- -- Test COPY (select for update) TO -- copy (select t from test1 where id=3 for update) to stdout; -- -- This should fail -- copy (select t into temp test3 from test1 where id=3) to stdout; -- -- This should fail -- copy (select * from test1) from stdin; -- -- This should fail -- copy (select * from test1) (t,id) to stdout; -- -- Test JOIN -- copy (select * from test1 join test2 using (id)) to stdout; -- -- Test UNION SELECT -- copy (select t from test1 where id = 1 UNION select * from v_test1 ORDER BY 1) to stdout; -- -- Test subselect -- copy (select * from (select t from test1 where id = 1 UNION select * from v_test1 ORDER BY 1) t1) to stdout; -- -- Test headers, CSV and quotes -- copy (select t from test1 where id = 1) to stdout csv header force quote t; -- -- Test psql builtins, plain table -- \copy test1 to stdout -- -- This should fail -- \copy v_test1 to stdout -- -- Test \copy (select ...) -- \copy (select "id",'id','id""'||t,(id + 1)*id,t,"test1"."t" from test1 where id=3) to stdout -- -- Drop everything -- drop table test2; drop view v_test1; drop table test1; -- psql handling of COPY in multi-command strings copy (select 1) to stdout\; select 1/0; -- row, then error select 1/0\; copy (select 1) to stdout; -- error only copy (select 1) to stdout\; copy (select 2) to stdout\; select 0\; select 3; -- 1 2 3 create table test3 (c int); select 0\; copy test3 from stdin\; copy test3 from stdin\; select 1; -- 1 1 \. 2 \. select * from test3; drop table test3; libpg_query-13-2.1.0/test/sql/postgres_regress/create_aggregate.sql000066400000000000000000000202071413137616400254340ustar00rootroot00000000000000-- -- CREATE_AGGREGATE -- -- all functions CREATEd CREATE AGGREGATE newavg ( sfunc = int4_avg_accum, basetype = int4, stype = _int8, finalfunc = int8_avg, initcond1 = '{0,0}' ); -- test comments COMMENT ON AGGREGATE newavg_wrong (int4) IS 'an agg comment'; COMMENT ON AGGREGATE newavg (int4) IS 'an agg comment'; COMMENT ON AGGREGATE newavg (int4) IS NULL; -- without finalfunc; test obsolete spellings 'sfunc1' etc CREATE AGGREGATE newsum ( sfunc1 = int4pl, basetype = int4, stype1 = int4, initcond1 = '0' ); -- zero-argument aggregate CREATE AGGREGATE newcnt (*) ( sfunc = int8inc, stype = int8, initcond = '0', parallel = safe ); -- old-style spelling of same (except without parallel-safe; that's too new) CREATE AGGREGATE oldcnt ( sfunc = int8inc, basetype = 'ANY', stype = int8, initcond = '0' ); -- aggregate that only cares about null/nonnull input CREATE AGGREGATE newcnt ("any") ( sfunc = int8inc_any, stype = int8, initcond = '0' ); COMMENT ON AGGREGATE nosuchagg (*) IS 'should fail'; COMMENT ON AGGREGATE newcnt (*) IS 'an agg(*) comment'; COMMENT ON AGGREGATE newcnt ("any") IS 'an agg(any) comment'; -- multi-argument aggregate create function sum3(int8,int8,int8) returns int8 as 'select $1 + $2 + $3' language sql strict immutable; create aggregate sum2(int8,int8) ( sfunc = sum3, stype = int8, initcond = '0' ); -- multi-argument aggregates sensitive to distinct/order, strict/nonstrict create type aggtype as (a integer, b integer, c text); create function aggf_trans(aggtype[],integer,integer,text) returns aggtype[] as 'select array_append($1,ROW($2,$3,$4)::aggtype)' language sql strict immutable; create function aggfns_trans(aggtype[],integer,integer,text) returns aggtype[] as 'select array_append($1,ROW($2,$3,$4)::aggtype)' language sql immutable; create aggregate aggfstr(integer,integer,text) ( sfunc = aggf_trans, stype = aggtype[], initcond = '{}' ); create aggregate aggfns(integer,integer,text) ( sfunc = aggfns_trans, stype = aggtype[], sspace = 10000, initcond = '{}' ); -- check error cases that would require run-time type coercion create function least_accum(int8, int8) returns int8 language sql as 'select least($1, $2)'; create aggregate least_agg(int4) ( stype = int8, sfunc = least_accum ); -- fails drop function least_accum(int8, int8); create function least_accum(anycompatible, anycompatible) returns anycompatible language sql as 'select least($1, $2)'; create aggregate least_agg(int4) ( stype = int8, sfunc = least_accum ); -- fails create aggregate least_agg(int8) ( stype = int8, sfunc = least_accum ); drop function least_accum(anycompatible, anycompatible) cascade; -- variadic aggregates create function least_accum(anyelement, variadic anyarray) returns anyelement language sql as 'select least($1, min($2[i])) from generate_subscripts($2,1) g(i)'; create aggregate least_agg(variadic items anyarray) ( stype = anyelement, sfunc = least_accum ); create function cleast_accum(anycompatible, variadic anycompatiblearray) returns anycompatible language sql as 'select least($1, min($2[i])) from generate_subscripts($2,1) g(i)'; create aggregate cleast_agg(variadic items anycompatiblearray) ( stype = anycompatible, sfunc = cleast_accum ); -- test ordered-set aggs using built-in support functions create aggregate my_percentile_disc(float8 ORDER BY anyelement) ( stype = internal, sfunc = ordered_set_transition, finalfunc = percentile_disc_final, finalfunc_extra = true, finalfunc_modify = read_write ); create aggregate my_rank(VARIADIC "any" ORDER BY VARIADIC "any") ( stype = internal, sfunc = ordered_set_transition_multi, finalfunc = rank_final, finalfunc_extra = true, hypothetical ); alter aggregate my_percentile_disc(float8 ORDER BY anyelement) rename to test_percentile_disc; alter aggregate my_rank(VARIADIC "any" ORDER BY VARIADIC "any") rename to test_rank; \da test_* -- moving-aggregate options CREATE AGGREGATE sumdouble (float8) ( stype = float8, sfunc = float8pl, mstype = float8, msfunc = float8pl, minvfunc = float8mi ); -- aggregate combine and serialization functions -- can't specify just one of serialfunc and deserialfunc CREATE AGGREGATE myavg (numeric) ( stype = internal, sfunc = numeric_avg_accum, serialfunc = numeric_avg_serialize ); -- serialfunc must have correct parameters CREATE AGGREGATE myavg (numeric) ( stype = internal, sfunc = numeric_avg_accum, serialfunc = numeric_avg_deserialize, deserialfunc = numeric_avg_deserialize ); -- deserialfunc must have correct parameters CREATE AGGREGATE myavg (numeric) ( stype = internal, sfunc = numeric_avg_accum, serialfunc = numeric_avg_serialize, deserialfunc = numeric_avg_serialize ); -- ensure combine function parameters are checked CREATE AGGREGATE myavg (numeric) ( stype = internal, sfunc = numeric_avg_accum, serialfunc = numeric_avg_serialize, deserialfunc = numeric_avg_deserialize, combinefunc = int4larger ); -- ensure create aggregate works. CREATE AGGREGATE myavg (numeric) ( stype = internal, sfunc = numeric_avg_accum, finalfunc = numeric_avg, serialfunc = numeric_avg_serialize, deserialfunc = numeric_avg_deserialize, combinefunc = numeric_avg_combine, finalfunc_modify = shareable -- just to test a non-default setting ); -- Ensure all these functions made it into the catalog SELECT aggfnoid, aggtransfn, aggcombinefn, aggtranstype::regtype, aggserialfn, aggdeserialfn, aggfinalmodify FROM pg_aggregate WHERE aggfnoid = 'myavg'::REGPROC; DROP AGGREGATE myavg (numeric); -- create or replace aggregate CREATE AGGREGATE myavg (numeric) ( stype = internal, sfunc = numeric_avg_accum, finalfunc = numeric_avg ); CREATE OR REPLACE AGGREGATE myavg (numeric) ( stype = internal, sfunc = numeric_avg_accum, finalfunc = numeric_avg, serialfunc = numeric_avg_serialize, deserialfunc = numeric_avg_deserialize, combinefunc = numeric_avg_combine, finalfunc_modify = shareable -- just to test a non-default setting ); -- Ensure all these functions made it into the catalog again SELECT aggfnoid, aggtransfn, aggcombinefn, aggtranstype::regtype, aggserialfn, aggdeserialfn, aggfinalmodify FROM pg_aggregate WHERE aggfnoid = 'myavg'::REGPROC; -- can change stype: CREATE OR REPLACE AGGREGATE myavg (numeric) ( stype = numeric, sfunc = numeric_add ); SELECT aggfnoid, aggtransfn, aggcombinefn, aggtranstype::regtype, aggserialfn, aggdeserialfn, aggfinalmodify FROM pg_aggregate WHERE aggfnoid = 'myavg'::REGPROC; -- can't change return type: CREATE OR REPLACE AGGREGATE myavg (numeric) ( stype = numeric, sfunc = numeric_add, finalfunc = numeric_out ); -- can't change to a different kind: CREATE OR REPLACE AGGREGATE myavg (order by numeric) ( stype = numeric, sfunc = numeric_add ); -- can't change plain function to aggregate: create function sum4(int8,int8,int8,int8) returns int8 as 'select $1 + $2 + $3 + $4' language sql strict immutable; CREATE OR REPLACE AGGREGATE sum3 (int8,int8,int8) ( stype = int8, sfunc = sum4 ); drop function sum4(int8,int8,int8,int8); DROP AGGREGATE myavg (numeric); -- invalid: bad parallel-safety marking CREATE AGGREGATE mysum (int) ( stype = int, sfunc = int4pl, parallel = pear ); -- invalid: nonstrict inverse with strict forward function CREATE FUNCTION float8mi_n(float8, float8) RETURNS float8 AS $$ SELECT $1 - $2; $$ LANGUAGE SQL; CREATE AGGREGATE invalidsumdouble (float8) ( stype = float8, sfunc = float8pl, mstype = float8, msfunc = float8pl, minvfunc = float8mi_n ); -- invalid: non-matching result types CREATE FUNCTION float8mi_int(float8, float8) RETURNS int AS $$ SELECT CAST($1 - $2 AS INT); $$ LANGUAGE SQL; CREATE AGGREGATE wrongreturntype (float8) ( stype = float8, sfunc = float8pl, mstype = float8, msfunc = float8pl, minvfunc = float8mi_int ); -- invalid: non-lowercase quoted identifiers CREATE AGGREGATE case_agg ( -- old syntax "Sfunc1" = int4pl, "Basetype" = int4, "Stype1" = int4, "Initcond1" = '0', "Parallel" = safe ); CREATE AGGREGATE case_agg(float8) ( "Stype" = internal, "Sfunc" = ordered_set_transition, "Finalfunc" = percentile_disc_final, "Finalfunc_extra" = true, "Finalfunc_modify" = read_write, "Parallel" = safe ); libpg_query-13-2.1.0/test/sql/postgres_regress/create_am.sql000066400000000000000000000165721413137616400241150ustar00rootroot00000000000000-- -- Create access method tests -- -- Make gist2 over gisthandler. In fact, it would be a synonym to gist. CREATE ACCESS METHOD gist2 TYPE INDEX HANDLER gisthandler; -- Verify return type checks for handlers CREATE ACCESS METHOD bogus TYPE INDEX HANDLER int4in; CREATE ACCESS METHOD bogus TYPE INDEX HANDLER heap_tableam_handler; -- Try to create gist2 index on fast_emp4000: fail because opclass doesn't exist CREATE INDEX grect2ind2 ON fast_emp4000 USING gist2 (home_base); -- Make operator class for boxes using gist2 CREATE OPERATOR CLASS box_ops DEFAULT FOR TYPE box USING gist2 AS OPERATOR 1 <<, OPERATOR 2 &<, OPERATOR 3 &&, OPERATOR 4 &>, OPERATOR 5 >>, OPERATOR 6 ~=, OPERATOR 7 @>, OPERATOR 8 <@, OPERATOR 9 &<|, OPERATOR 10 <<|, OPERATOR 11 |>>, OPERATOR 12 |&>, OPERATOR 13 ~, OPERATOR 14 @, FUNCTION 1 gist_box_consistent(internal, box, smallint, oid, internal), FUNCTION 2 gist_box_union(internal, internal), -- don't need compress, decompress, or fetch functions FUNCTION 5 gist_box_penalty(internal, internal, internal), FUNCTION 6 gist_box_picksplit(internal, internal), FUNCTION 7 gist_box_same(box, box, internal); -- Create gist2 index on fast_emp4000 CREATE INDEX grect2ind2 ON fast_emp4000 USING gist2 (home_base); -- Now check the results from plain indexscan; temporarily drop existing -- index grect2ind to ensure it doesn't capture the plan BEGIN; DROP INDEX grect2ind; SET enable_seqscan = OFF; SET enable_indexscan = ON; SET enable_bitmapscan = OFF; EXPLAIN (COSTS OFF) SELECT * FROM fast_emp4000 WHERE home_base @ '(200,200),(2000,1000)'::box ORDER BY (home_base[0])[0]; SELECT * FROM fast_emp4000 WHERE home_base @ '(200,200),(2000,1000)'::box ORDER BY (home_base[0])[0]; EXPLAIN (COSTS OFF) SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; EXPLAIN (COSTS OFF) SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL; SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL; ROLLBACK; -- Try to drop access method: fail because of dependent objects DROP ACCESS METHOD gist2; -- Drop access method cascade -- To prevent a (rare) deadlock against autovacuum, -- we must lock the table that owns the index that will be dropped BEGIN; LOCK TABLE fast_emp4000; DROP ACCESS METHOD gist2 CASCADE; COMMIT; -- -- Test table access methods -- -- prevent empty values SET default_table_access_method = ''; -- prevent nonexistent values SET default_table_access_method = 'I do not exist AM'; -- prevent setting it to an index AM SET default_table_access_method = 'btree'; -- Create a heap2 table am handler with heapam handler CREATE ACCESS METHOD heap2 TYPE TABLE HANDLER heap_tableam_handler; -- Verify return type checks for handlers CREATE ACCESS METHOD bogus TYPE TABLE HANDLER int4in; CREATE ACCESS METHOD bogus TYPE TABLE HANDLER bthandler; SELECT amname, amhandler, amtype FROM pg_am where amtype = 't' ORDER BY 1, 2; -- First create tables employing the new AM using USING -- plain CREATE TABLE CREATE TABLE tableam_tbl_heap2(f1 int) USING heap2; INSERT INTO tableam_tbl_heap2 VALUES(1); SELECT f1 FROM tableam_tbl_heap2 ORDER BY f1; -- CREATE TABLE AS CREATE TABLE tableam_tblas_heap2 USING heap2 AS SELECT * FROM tableam_tbl_heap2; SELECT f1 FROM tableam_tbl_heap2 ORDER BY f1; -- SELECT INTO doesn't support USING SELECT INTO tableam_tblselectinto_heap2 USING heap2 FROM tableam_tbl_heap2; -- CREATE VIEW doesn't support USING CREATE VIEW tableam_view_heap2 USING heap2 AS SELECT * FROM tableam_tbl_heap2; -- CREATE SEQUENCE doesn't support USING CREATE SEQUENCE tableam_seq_heap2 USING heap2; -- CREATE MATERIALIZED VIEW does support USING CREATE MATERIALIZED VIEW tableam_tblmv_heap2 USING heap2 AS SELECT * FROM tableam_tbl_heap2; SELECT f1 FROM tableam_tblmv_heap2 ORDER BY f1; -- CREATE TABLE .. PARTITION BY doesn't not support USING CREATE TABLE tableam_parted_heap2 (a text, b int) PARTITION BY list (a) USING heap2; CREATE TABLE tableam_parted_heap2 (a text, b int) PARTITION BY list (a); -- new partitions will inherit from the current default, rather the partition root SET default_table_access_method = 'heap'; CREATE TABLE tableam_parted_a_heap2 PARTITION OF tableam_parted_heap2 FOR VALUES IN ('a'); SET default_table_access_method = 'heap2'; CREATE TABLE tableam_parted_b_heap2 PARTITION OF tableam_parted_heap2 FOR VALUES IN ('b'); RESET default_table_access_method; -- but the method can be explicitly specified CREATE TABLE tableam_parted_c_heap2 PARTITION OF tableam_parted_heap2 FOR VALUES IN ('c') USING heap; CREATE TABLE tableam_parted_d_heap2 PARTITION OF tableam_parted_heap2 FOR VALUES IN ('d') USING heap2; -- List all objects in AM SELECT pc.relkind, pa.amname, CASE WHEN relkind = 't' THEN (SELECT 'toast for ' || relname::regclass FROM pg_class pcm WHERE pcm.reltoastrelid = pc.oid) ELSE relname::regclass::text END COLLATE "C" AS relname FROM pg_class AS pc, pg_am AS pa WHERE pa.oid = pc.relam AND pa.amname = 'heap2' ORDER BY 3, 1, 2; -- Show dependencies onto AM - there shouldn't be any for toast SELECT pg_describe_object(classid,objid,objsubid) AS obj FROM pg_depend, pg_am WHERE pg_depend.refclassid = 'pg_am'::regclass AND pg_am.oid = pg_depend.refobjid AND pg_am.amname = 'heap2' ORDER BY classid, objid, objsubid; -- Second, create objects in the new AM by changing the default AM BEGIN; SET LOCAL default_table_access_method = 'heap2'; -- following tests should all respect the default AM CREATE TABLE tableam_tbl_heapx(f1 int); CREATE TABLE tableam_tblas_heapx AS SELECT * FROM tableam_tbl_heapx; SELECT INTO tableam_tblselectinto_heapx FROM tableam_tbl_heapx; CREATE MATERIALIZED VIEW tableam_tblmv_heapx USING heap2 AS SELECT * FROM tableam_tbl_heapx; CREATE TABLE tableam_parted_heapx (a text, b int) PARTITION BY list (a); CREATE TABLE tableam_parted_1_heapx PARTITION OF tableam_parted_heapx FOR VALUES IN ('a', 'b'); -- but an explicitly set AM overrides it CREATE TABLE tableam_parted_2_heapx PARTITION OF tableam_parted_heapx FOR VALUES IN ('c', 'd') USING heap; -- sequences, views and foreign servers shouldn't have an AM CREATE VIEW tableam_view_heapx AS SELECT * FROM tableam_tbl_heapx; CREATE SEQUENCE tableam_seq_heapx; CREATE FOREIGN DATA WRAPPER fdw_heap2 VALIDATOR postgresql_fdw_validator; CREATE SERVER fs_heap2 FOREIGN DATA WRAPPER fdw_heap2 ; CREATE FOREIGN table tableam_fdw_heapx () SERVER fs_heap2; -- Verify that new AM was used for tables, matviews, but not for sequences, views and fdws SELECT pc.relkind, pa.amname, CASE WHEN relkind = 't' THEN (SELECT 'toast for ' || relname::regclass FROM pg_class pcm WHERE pcm.reltoastrelid = pc.oid) ELSE relname::regclass::text END COLLATE "C" AS relname FROM pg_class AS pc LEFT JOIN pg_am AS pa ON (pa.oid = pc.relam) WHERE pc.relname LIKE 'tableam_%_heapx' ORDER BY 3, 1, 2; -- don't want to keep those tables, nor the default ROLLBACK; -- Third, check that we can neither create a table using a nonexistent -- AM, nor using an index AM CREATE TABLE i_am_a_failure() USING "notempty"; CREATE TABLE i_am_a_failure() USING i_do_not_exist_am; CREATE TABLE i_am_a_failure() USING "I do not exist AM"; CREATE TABLE i_am_a_failure() USING "btree"; -- Drop table access method, which fails as objects depends on it DROP ACCESS METHOD heap2; -- we intentionally leave the objects created above alive, to verify pg_dump support libpg_query-13-2.1.0/test/sql/postgres_regress/create_cast.sql000066400000000000000000000030741413137616400244430ustar00rootroot00000000000000-- -- CREATE_CAST -- -- Create some types to test with CREATE TYPE casttesttype; CREATE FUNCTION casttesttype_in(cstring) RETURNS casttesttype AS 'textin' LANGUAGE internal STRICT IMMUTABLE; CREATE FUNCTION casttesttype_out(casttesttype) RETURNS cstring AS 'textout' LANGUAGE internal STRICT IMMUTABLE; CREATE TYPE casttesttype ( internallength = variable, input = casttesttype_in, output = casttesttype_out, alignment = int4 ); -- a dummy function to test with CREATE FUNCTION casttestfunc(casttesttype) RETURNS int4 LANGUAGE SQL AS $$ SELECT 1; $$; SELECT casttestfunc('foo'::text); -- fails, as there's no cast -- Try binary coercion cast CREATE CAST (text AS casttesttype) WITHOUT FUNCTION; SELECT casttestfunc('foo'::text); -- doesn't work, as the cast is explicit SELECT casttestfunc('foo'::text::casttesttype); -- should work DROP CAST (text AS casttesttype); -- cleanup -- Try IMPLICIT binary coercion cast CREATE CAST (text AS casttesttype) WITHOUT FUNCTION AS IMPLICIT; SELECT casttestfunc('foo'::text); -- Should work now -- Try I/O conversion cast. SELECT 1234::int4::casttesttype; -- No cast yet, should fail CREATE CAST (int4 AS casttesttype) WITH INOUT; SELECT 1234::int4::casttesttype; -- Should work now DROP CAST (int4 AS casttesttype); -- Try cast with a function CREATE FUNCTION int4_casttesttype(int4) RETURNS casttesttype LANGUAGE SQL AS $$ SELECT ('foo'::text || $1::text)::casttesttype; $$; CREATE CAST (int4 AS casttesttype) WITH FUNCTION int4_casttesttype(int4) AS IMPLICIT; SELECT 1234::int4::casttesttype; -- Should work now libpg_query-13-2.1.0/test/sql/postgres_regress/create_function_3.sql000066400000000000000000000173041413137616400255610ustar00rootroot00000000000000-- -- CREATE FUNCTION -- -- Assorted tests using SQL-language functions -- -- All objects made in this test are in temp_func_test schema CREATE USER regress_unpriv_user; CREATE SCHEMA temp_func_test; GRANT ALL ON SCHEMA temp_func_test TO public; SET search_path TO temp_func_test, public; -- -- Make sanity checks on the pg_proc entries created by CREATE FUNCTION -- -- -- ARGUMENT and RETURN TYPES -- CREATE FUNCTION functest_A_1(text, date) RETURNS bool LANGUAGE 'sql' AS 'SELECT $1 = ''abcd'' AND $2 > ''2001-01-01'''; CREATE FUNCTION functest_A_2(text[]) RETURNS int LANGUAGE 'sql' AS 'SELECT $1[0]::int'; CREATE FUNCTION functest_A_3() RETURNS bool LANGUAGE 'sql' AS 'SELECT false'; SELECT proname, prorettype::regtype, proargtypes::regtype[] FROM pg_proc WHERE oid in ('functest_A_1'::regproc, 'functest_A_2'::regproc, 'functest_A_3'::regproc) ORDER BY proname; -- -- IMMUTABLE | STABLE | VOLATILE -- CREATE FUNCTION functest_B_1(int) RETURNS bool LANGUAGE 'sql' AS 'SELECT $1 > 0'; CREATE FUNCTION functest_B_2(int) RETURNS bool LANGUAGE 'sql' IMMUTABLE AS 'SELECT $1 > 0'; CREATE FUNCTION functest_B_3(int) RETURNS bool LANGUAGE 'sql' STABLE AS 'SELECT $1 = 0'; CREATE FUNCTION functest_B_4(int) RETURNS bool LANGUAGE 'sql' VOLATILE AS 'SELECT $1 < 0'; SELECT proname, provolatile FROM pg_proc WHERE oid in ('functest_B_1'::regproc, 'functest_B_2'::regproc, 'functest_B_3'::regproc, 'functest_B_4'::regproc) ORDER BY proname; ALTER FUNCTION functest_B_2(int) VOLATILE; ALTER FUNCTION functest_B_3(int) COST 100; -- unrelated change, no effect SELECT proname, provolatile FROM pg_proc WHERE oid in ('functest_B_1'::regproc, 'functest_B_2'::regproc, 'functest_B_3'::regproc, 'functest_B_4'::regproc) ORDER BY proname; -- -- SECURITY DEFINER | INVOKER -- CREATE FUNCTION functest_C_1(int) RETURNS bool LANGUAGE 'sql' AS 'SELECT $1 > 0'; CREATE FUNCTION functest_C_2(int) RETURNS bool LANGUAGE 'sql' SECURITY DEFINER AS 'SELECT $1 = 0'; CREATE FUNCTION functest_C_3(int) RETURNS bool LANGUAGE 'sql' SECURITY INVOKER AS 'SELECT $1 < 0'; SELECT proname, prosecdef FROM pg_proc WHERE oid in ('functest_C_1'::regproc, 'functest_C_2'::regproc, 'functest_C_3'::regproc) ORDER BY proname; ALTER FUNCTION functest_C_1(int) IMMUTABLE; -- unrelated change, no effect ALTER FUNCTION functest_C_2(int) SECURITY INVOKER; ALTER FUNCTION functest_C_3(int) SECURITY DEFINER; SELECT proname, prosecdef FROM pg_proc WHERE oid in ('functest_C_1'::regproc, 'functest_C_2'::regproc, 'functest_C_3'::regproc) ORDER BY proname; -- -- LEAKPROOF -- CREATE FUNCTION functest_E_1(int) RETURNS bool LANGUAGE 'sql' AS 'SELECT $1 > 100'; CREATE FUNCTION functest_E_2(int) RETURNS bool LANGUAGE 'sql' LEAKPROOF AS 'SELECT $1 > 100'; SELECT proname, proleakproof FROM pg_proc WHERE oid in ('functest_E_1'::regproc, 'functest_E_2'::regproc) ORDER BY proname; ALTER FUNCTION functest_E_1(int) LEAKPROOF; ALTER FUNCTION functest_E_2(int) STABLE; -- unrelated change, no effect SELECT proname, proleakproof FROM pg_proc WHERE oid in ('functest_E_1'::regproc, 'functest_E_2'::regproc) ORDER BY proname; ALTER FUNCTION functest_E_2(int) NOT LEAKPROOF; -- remove leakproof attribute SELECT proname, proleakproof FROM pg_proc WHERE oid in ('functest_E_1'::regproc, 'functest_E_2'::regproc) ORDER BY proname; -- it takes superuser privilege to turn on leakproof, but not to turn off ALTER FUNCTION functest_E_1(int) OWNER TO regress_unpriv_user; ALTER FUNCTION functest_E_2(int) OWNER TO regress_unpriv_user; SET SESSION AUTHORIZATION regress_unpriv_user; SET search_path TO temp_func_test, public; ALTER FUNCTION functest_E_1(int) NOT LEAKPROOF; ALTER FUNCTION functest_E_2(int) LEAKPROOF; CREATE FUNCTION functest_E_3(int) RETURNS bool LANGUAGE 'sql' LEAKPROOF AS 'SELECT $1 < 200'; -- fail RESET SESSION AUTHORIZATION; -- -- CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT -- CREATE FUNCTION functest_F_1(int) RETURNS bool LANGUAGE 'sql' AS 'SELECT $1 > 50'; CREATE FUNCTION functest_F_2(int) RETURNS bool LANGUAGE 'sql' CALLED ON NULL INPUT AS 'SELECT $1 = 50'; CREATE FUNCTION functest_F_3(int) RETURNS bool LANGUAGE 'sql' RETURNS NULL ON NULL INPUT AS 'SELECT $1 < 50'; CREATE FUNCTION functest_F_4(int) RETURNS bool LANGUAGE 'sql' STRICT AS 'SELECT $1 = 50'; SELECT proname, proisstrict FROM pg_proc WHERE oid in ('functest_F_1'::regproc, 'functest_F_2'::regproc, 'functest_F_3'::regproc, 'functest_F_4'::regproc) ORDER BY proname; ALTER FUNCTION functest_F_1(int) IMMUTABLE; -- unrelated change, no effect ALTER FUNCTION functest_F_2(int) STRICT; ALTER FUNCTION functest_F_3(int) CALLED ON NULL INPUT; SELECT proname, proisstrict FROM pg_proc WHERE oid in ('functest_F_1'::regproc, 'functest_F_2'::regproc, 'functest_F_3'::regproc, 'functest_F_4'::regproc) ORDER BY proname; -- pg_get_functiondef tests SELECT pg_get_functiondef('functest_A_1'::regproc); SELECT pg_get_functiondef('functest_B_3'::regproc); SELECT pg_get_functiondef('functest_C_3'::regproc); SELECT pg_get_functiondef('functest_F_2'::regproc); -- information_schema tests CREATE FUNCTION functest_IS_1(a int, b int default 1, c text default 'foo') RETURNS int LANGUAGE SQL AS 'SELECT $1 + $2'; CREATE FUNCTION functest_IS_2(out a int, b int default 1) RETURNS int LANGUAGE SQL AS 'SELECT $1'; CREATE FUNCTION functest_IS_3(a int default 1, out b int) RETURNS int LANGUAGE SQL AS 'SELECT $1'; SELECT routine_name, ordinal_position, parameter_name, parameter_default FROM information_schema.parameters JOIN information_schema.routines USING (specific_schema, specific_name) WHERE routine_schema = 'temp_func_test' AND routine_name ~ '^functest_is_' ORDER BY 1, 2; DROP FUNCTION functest_IS_1(int, int, text), functest_IS_2(int), functest_IS_3(int); -- overload CREATE FUNCTION functest_B_2(bigint) RETURNS bool LANGUAGE 'sql' IMMUTABLE AS 'SELECT $1 > 0'; DROP FUNCTION functest_b_1; DROP FUNCTION functest_b_1; -- error, not found DROP FUNCTION functest_b_2; -- error, ambiguous -- CREATE OR REPLACE tests CREATE FUNCTION functest1(a int) RETURNS int LANGUAGE SQL AS 'SELECT $1'; CREATE OR REPLACE FUNCTION functest1(a int) RETURNS int LANGUAGE SQL WINDOW AS 'SELECT $1'; CREATE OR REPLACE PROCEDURE functest1(a int) LANGUAGE SQL AS 'SELECT $1'; DROP FUNCTION functest1(a int); -- Check behavior of VOID-returning SQL functions CREATE FUNCTION voidtest1(a int) RETURNS VOID LANGUAGE SQL AS $$ SELECT a + 1 $$; SELECT voidtest1(42); CREATE FUNCTION voidtest2(a int, b int) RETURNS VOID LANGUAGE SQL AS $$ SELECT voidtest1(a + b) $$; SELECT voidtest2(11,22); -- currently, we can inline voidtest2 but not voidtest1 EXPLAIN (verbose, costs off) SELECT voidtest2(11,22); CREATE TEMP TABLE sometable(f1 int); CREATE FUNCTION voidtest3(a int) RETURNS VOID LANGUAGE SQL AS $$ INSERT INTO sometable VALUES(a + 1) $$; SELECT voidtest3(17); CREATE FUNCTION voidtest4(a int) RETURNS VOID LANGUAGE SQL AS $$ INSERT INTO sometable VALUES(a - 1) RETURNING f1 $$; SELECT voidtest4(39); TABLE sometable; CREATE FUNCTION voidtest5(a int) RETURNS SETOF VOID LANGUAGE SQL AS $$ SELECT generate_series(1, a) $$ STABLE; SELECT * FROM voidtest5(3); -- Cleanup DROP SCHEMA temp_func_test CASCADE; DROP USER regress_unpriv_user; RESET search_path; libpg_query-13-2.1.0/test/sql/postgres_regress/create_index.sql000066400000000000000000001241741413137616400246250ustar00rootroot00000000000000-- -- CREATE_INDEX -- Create ancillary data structures (i.e. indices) -- -- -- BTREE -- CREATE INDEX onek_unique1 ON onek USING btree(unique1 int4_ops); CREATE INDEX IF NOT EXISTS onek_unique1 ON onek USING btree(unique1 int4_ops); CREATE INDEX IF NOT EXISTS ON onek USING btree(unique1 int4_ops); CREATE INDEX onek_unique2 ON onek USING btree(unique2 int4_ops); CREATE INDEX onek_hundred ON onek USING btree(hundred int4_ops); CREATE INDEX onek_stringu1 ON onek USING btree(stringu1 name_ops); CREATE INDEX tenk1_unique1 ON tenk1 USING btree(unique1 int4_ops); CREATE INDEX tenk1_unique2 ON tenk1 USING btree(unique2 int4_ops); CREATE INDEX tenk1_hundred ON tenk1 USING btree(hundred int4_ops); CREATE INDEX tenk1_thous_tenthous ON tenk1 (thousand, tenthous); CREATE INDEX tenk2_unique1 ON tenk2 USING btree(unique1 int4_ops); CREATE INDEX tenk2_unique2 ON tenk2 USING btree(unique2 int4_ops); CREATE INDEX tenk2_hundred ON tenk2 USING btree(hundred int4_ops); CREATE INDEX rix ON road USING btree (name text_ops); CREATE INDEX iix ON ihighway USING btree (name text_ops); CREATE INDEX six ON shighway USING btree (name text_ops); -- test comments COMMENT ON INDEX six_wrong IS 'bad index'; COMMENT ON INDEX six IS 'good index'; COMMENT ON INDEX six IS NULL; -- -- BTREE ascending/descending cases -- -- we load int4/text from pure descending data (each key is a new -- low key) and name/f8 from pure ascending data (each key is a new -- high key). we had a bug where new low keys would sometimes be -- "lost". -- CREATE INDEX bt_i4_index ON bt_i4_heap USING btree (seqno int4_ops); CREATE INDEX bt_name_index ON bt_name_heap USING btree (seqno name_ops); CREATE INDEX bt_txt_index ON bt_txt_heap USING btree (seqno text_ops); CREATE INDEX bt_f8_index ON bt_f8_heap USING btree (seqno float8_ops); -- -- BTREE partial indices -- CREATE INDEX onek2_u1_prtl ON onek2 USING btree(unique1 int4_ops) where unique1 < 20 or unique1 > 980; CREATE INDEX onek2_u2_prtl ON onek2 USING btree(unique2 int4_ops) where stringu1 < 'B'; CREATE INDEX onek2_stu1_prtl ON onek2 USING btree(stringu1 name_ops) where onek2.stringu1 >= 'J' and onek2.stringu1 < 'K'; -- -- GiST (rtree-equivalent opclasses only) -- CREATE INDEX grect2ind ON fast_emp4000 USING gist (home_base); CREATE INDEX gpolygonind ON polygon_tbl USING gist (f1); CREATE INDEX gcircleind ON circle_tbl USING gist (f1); INSERT INTO POINT_TBL(f1) VALUES (NULL); CREATE INDEX gpointind ON point_tbl USING gist (f1); CREATE TEMP TABLE gpolygon_tbl AS SELECT polygon(home_base) AS f1 FROM slow_emp4000; INSERT INTO gpolygon_tbl VALUES ( '(1000,0,0,1000)' ); INSERT INTO gpolygon_tbl VALUES ( '(0,1000,1000,1000)' ); CREATE TEMP TABLE gcircle_tbl AS SELECT circle(home_base) AS f1 FROM slow_emp4000; CREATE INDEX ggpolygonind ON gpolygon_tbl USING gist (f1); CREATE INDEX ggcircleind ON gcircle_tbl USING gist (f1); -- -- Test GiST indexes -- -- get non-indexed results for comparison purposes SET enable_seqscan = ON; SET enable_indexscan = OFF; SET enable_bitmapscan = OFF; SELECT * FROM fast_emp4000 WHERE home_base @ '(200,200),(2000,1000)'::box ORDER BY (home_base[0])[0]; SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL; SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon ORDER BY (poly_center(f1))[0]; SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) ORDER BY area(f1); SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon; SELECT count(*) FROM gcircle_tbl WHERE f1 && '<(500,500),500>'::circle; SELECT count(*) FROM point_tbl WHERE f1 <@ box '(0,0,100,100)'; SELECT count(*) FROM point_tbl WHERE box '(0,0,100,100)' @> f1; SELECT count(*) FROM point_tbl WHERE f1 <@ polygon '(0,0),(0,100),(100,100),(50,50),(100,0),(0,0)'; SELECT count(*) FROM point_tbl WHERE f1 <@ circle '<(50,50),50>'; SELECT count(*) FROM point_tbl p WHERE p.f1 << '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 >> '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 <^ '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 >^ '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 ~= '(-5, -12)'; SELECT * FROM point_tbl ORDER BY f1 <-> '0,1'; SELECT * FROM point_tbl WHERE f1 IS NULL; SELECT * FROM point_tbl WHERE f1 IS NOT NULL ORDER BY f1 <-> '0,1'; SELECT * FROM point_tbl WHERE f1 <@ '(-10,-10),(10,10)':: box ORDER BY f1 <-> '0,1'; SELECT * FROM gpolygon_tbl ORDER BY f1 <-> '(0,0)'::point LIMIT 10; SELECT circle_center(f1), round(radius(f1)) as radius FROM gcircle_tbl ORDER BY f1 <-> '(200,300)'::point LIMIT 10; -- Now check the results from plain indexscan SET enable_seqscan = OFF; SET enable_indexscan = ON; SET enable_bitmapscan = OFF; EXPLAIN (COSTS OFF) SELECT * FROM fast_emp4000 WHERE home_base @ '(200,200),(2000,1000)'::box ORDER BY (home_base[0])[0]; SELECT * FROM fast_emp4000 WHERE home_base @ '(200,200),(2000,1000)'::box ORDER BY (home_base[0])[0]; EXPLAIN (COSTS OFF) SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box; EXPLAIN (COSTS OFF) SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL; SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL; EXPLAIN (COSTS OFF) SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon ORDER BY (poly_center(f1))[0]; SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon ORDER BY (poly_center(f1))[0]; EXPLAIN (COSTS OFF) SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) ORDER BY area(f1); SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) ORDER BY area(f1); EXPLAIN (COSTS OFF) SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon; SELECT count(*) FROM gpolygon_tbl WHERE f1 && '(1000,1000,0,0)'::polygon; EXPLAIN (COSTS OFF) SELECT count(*) FROM gcircle_tbl WHERE f1 && '<(500,500),500>'::circle; SELECT count(*) FROM gcircle_tbl WHERE f1 && '<(500,500),500>'::circle; EXPLAIN (COSTS OFF) SELECT count(*) FROM point_tbl WHERE f1 <@ box '(0,0,100,100)'; SELECT count(*) FROM point_tbl WHERE f1 <@ box '(0,0,100,100)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM point_tbl WHERE box '(0,0,100,100)' @> f1; SELECT count(*) FROM point_tbl WHERE box '(0,0,100,100)' @> f1; EXPLAIN (COSTS OFF) SELECT count(*) FROM point_tbl WHERE f1 <@ polygon '(0,0),(0,100),(100,100),(50,50),(100,0),(0,0)'; SELECT count(*) FROM point_tbl WHERE f1 <@ polygon '(0,0),(0,100),(100,100),(50,50),(100,0),(0,0)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM point_tbl WHERE f1 <@ circle '<(50,50),50>'; SELECT count(*) FROM point_tbl WHERE f1 <@ circle '<(50,50),50>'; EXPLAIN (COSTS OFF) SELECT count(*) FROM point_tbl p WHERE p.f1 << '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 << '(0.0, 0.0)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM point_tbl p WHERE p.f1 >> '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 >> '(0.0, 0.0)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM point_tbl p WHERE p.f1 <^ '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 <^ '(0.0, 0.0)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM point_tbl p WHERE p.f1 >^ '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 >^ '(0.0, 0.0)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM point_tbl p WHERE p.f1 ~= '(-5, -12)'; SELECT count(*) FROM point_tbl p WHERE p.f1 ~= '(-5, -12)'; EXPLAIN (COSTS OFF) SELECT * FROM point_tbl ORDER BY f1 <-> '0,1'; SELECT * FROM point_tbl ORDER BY f1 <-> '0,1'; EXPLAIN (COSTS OFF) SELECT * FROM point_tbl WHERE f1 IS NULL; SELECT * FROM point_tbl WHERE f1 IS NULL; EXPLAIN (COSTS OFF) SELECT * FROM point_tbl WHERE f1 IS NOT NULL ORDER BY f1 <-> '0,1'; SELECT * FROM point_tbl WHERE f1 IS NOT NULL ORDER BY f1 <-> '0,1'; EXPLAIN (COSTS OFF) SELECT * FROM point_tbl WHERE f1 <@ '(-10,-10),(10,10)':: box ORDER BY f1 <-> '0,1'; SELECT * FROM point_tbl WHERE f1 <@ '(-10,-10),(10,10)':: box ORDER BY f1 <-> '0,1'; EXPLAIN (COSTS OFF) SELECT * FROM gpolygon_tbl ORDER BY f1 <-> '(0,0)'::point LIMIT 10; SELECT * FROM gpolygon_tbl ORDER BY f1 <-> '(0,0)'::point LIMIT 10; EXPLAIN (COSTS OFF) SELECT circle_center(f1), round(radius(f1)) as radius FROM gcircle_tbl ORDER BY f1 <-> '(200,300)'::point LIMIT 10; SELECT circle_center(f1), round(radius(f1)) as radius FROM gcircle_tbl ORDER BY f1 <-> '(200,300)'::point LIMIT 10; -- Now check the results from bitmap indexscan SET enable_seqscan = OFF; SET enable_indexscan = OFF; SET enable_bitmapscan = ON; EXPLAIN (COSTS OFF) SELECT * FROM point_tbl WHERE f1 <@ '(-10,-10),(10,10)':: box ORDER BY f1 <-> '0,1'; SELECT * FROM point_tbl WHERE f1 <@ '(-10,-10),(10,10)':: box ORDER BY f1 <-> '0,1'; RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; -- -- GIN over int[] and text[] -- -- Note: GIN currently supports only bitmap scans, not plain indexscans -- SET enable_seqscan = OFF; SET enable_indexscan = OFF; SET enable_bitmapscan = ON; CREATE INDEX intarrayidx ON array_index_op_test USING gin (i); explain (costs off) SELECT * FROM array_index_op_test WHERE i @> '{32}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i @> '{32}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i && '{32}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i @> '{17}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i && '{17}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i @> '{32,17}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i && '{32,17}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i <@ '{38,34,32,89}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i = '{47,77}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i = '{}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i @> '{}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i && '{}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i <@ '{}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i = '{NULL}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i @> '{NULL}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i && '{NULL}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i <@ '{NULL}' ORDER BY seqno; CREATE INDEX textarrayidx ON array_index_op_test USING gin (t); explain (costs off) SELECT * FROM array_index_op_test WHERE t @> '{AAAAAAAA72908}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t @> '{AAAAAAAA72908}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t && '{AAAAAAAA72908}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t @> '{AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t && '{AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t @> '{AAAAAAAA72908,AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t && '{AAAAAAAA72908,AAAAAAAAAA646}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t <@ '{AAAAAAAA72908,AAAAAAAAAAAAAAAAAAA17075,AA88409,AAAAAAAAAAAAAAAAAA36842,AAAAAAA48038,AAAAAAAAAAAAAA10611}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t = '{AAAAAAAAAA646,A87088}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t = '{}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t @> '{}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t && '{}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t <@ '{}' ORDER BY seqno; -- And try it with a multicolumn GIN index DROP INDEX intarrayidx, textarrayidx; CREATE INDEX botharrayidx ON array_index_op_test USING gin (i, t); SELECT * FROM array_index_op_test WHERE i @> '{32}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i && '{32}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t @> '{AAAAAAA80240}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t && '{AAAAAAA80240}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i @> '{32}' AND t && '{AAAAAAA80240}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE i && '{32}' AND t @> '{AAAAAAA80240}' ORDER BY seqno; SELECT * FROM array_index_op_test WHERE t = '{}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i = '{NULL}' ORDER BY seqno; SELECT * FROM array_op_test WHERE i <@ '{NULL}' ORDER BY seqno; RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; -- -- Try a GIN index with a lot of items with same key. (GIN creates a posting -- tree when there are enough duplicates) -- CREATE TABLE array_gin_test (a int[]); INSERT INTO array_gin_test SELECT ARRAY[1, g%5, g] FROM generate_series(1, 10000) g; CREATE INDEX array_gin_test_idx ON array_gin_test USING gin (a); SELECT COUNT(*) FROM array_gin_test WHERE a @> '{2}'; DROP TABLE array_gin_test; -- -- Test GIN index's reloptions -- CREATE INDEX gin_relopts_test ON array_index_op_test USING gin (i) WITH (FASTUPDATE=on, GIN_PENDING_LIST_LIMIT=128); \d+ gin_relopts_test -- -- HASH -- CREATE INDEX hash_i4_index ON hash_i4_heap USING hash (random int4_ops); CREATE INDEX hash_name_index ON hash_name_heap USING hash (random name_ops); CREATE INDEX hash_txt_index ON hash_txt_heap USING hash (random text_ops); CREATE INDEX hash_f8_index ON hash_f8_heap USING hash (random float8_ops) WITH (fillfactor=60); CREATE UNLOGGED TABLE unlogged_hash_table (id int4); CREATE INDEX unlogged_hash_index ON unlogged_hash_table USING hash (id int4_ops); DROP TABLE unlogged_hash_table; -- CREATE INDEX hash_ovfl_index ON hash_ovfl_heap USING hash (x int4_ops); -- Test hash index build tuplesorting. Force hash tuplesort using low -- maintenance_work_mem setting and fillfactor: SET maintenance_work_mem = '1MB'; CREATE INDEX hash_tuplesort_idx ON tenk1 USING hash (stringu1 name_ops) WITH (fillfactor = 10); EXPLAIN (COSTS OFF) SELECT count(*) FROM tenk1 WHERE stringu1 = 'TVAAAA'; SELECT count(*) FROM tenk1 WHERE stringu1 = 'TVAAAA'; DROP INDEX hash_tuplesort_idx; RESET maintenance_work_mem; -- -- Test functional index -- CREATE TABLE func_index_heap (f1 text, f2 text); CREATE UNIQUE INDEX func_index_index on func_index_heap (textcat(f1,f2)); INSERT INTO func_index_heap VALUES('ABC','DEF'); INSERT INTO func_index_heap VALUES('AB','CDEFG'); INSERT INTO func_index_heap VALUES('QWE','RTY'); -- this should fail because of unique index: INSERT INTO func_index_heap VALUES('ABCD', 'EF'); -- but this shouldn't: INSERT INTO func_index_heap VALUES('QWERTY'); -- while we're here, see that the metadata looks sane \d func_index_heap \d func_index_index -- -- Same test, expressional index -- DROP TABLE func_index_heap; CREATE TABLE func_index_heap (f1 text, f2 text); CREATE UNIQUE INDEX func_index_index on func_index_heap ((f1 || f2) text_ops); INSERT INTO func_index_heap VALUES('ABC','DEF'); INSERT INTO func_index_heap VALUES('AB','CDEFG'); INSERT INTO func_index_heap VALUES('QWE','RTY'); -- this should fail because of unique index: INSERT INTO func_index_heap VALUES('ABCD', 'EF'); -- but this shouldn't: INSERT INTO func_index_heap VALUES('QWERTY'); -- while we're here, see that the metadata looks sane \d func_index_heap \d func_index_index -- this should fail because of unsafe column type (anonymous record) create index on func_index_heap ((f1 || f2), (row(f1, f2))); -- -- Test unique index with included columns -- CREATE TABLE covering_index_heap (f1 int, f2 int, f3 text); CREATE UNIQUE INDEX covering_index_index on covering_index_heap (f1,f2) INCLUDE(f3); INSERT INTO covering_index_heap VALUES(1,1,'AAA'); INSERT INTO covering_index_heap VALUES(1,2,'AAA'); -- this should fail because of unique index on f1,f2: INSERT INTO covering_index_heap VALUES(1,2,'BBB'); -- and this shouldn't: INSERT INTO covering_index_heap VALUES(1,4,'AAA'); -- Try to build index on table that already contains data CREATE UNIQUE INDEX covering_pkey on covering_index_heap (f1,f2) INCLUDE(f3); -- Try to use existing covering index as primary key ALTER TABLE covering_index_heap ADD CONSTRAINT covering_pkey PRIMARY KEY USING INDEX covering_pkey; DROP TABLE covering_index_heap; -- -- Also try building functional, expressional, and partial indexes on -- tables that already contain data. -- create unique index hash_f8_index_1 on hash_f8_heap(abs(random)); create unique index hash_f8_index_2 on hash_f8_heap((seqno + 1), random); create unique index hash_f8_index_3 on hash_f8_heap(random) where seqno > 1000; -- -- Try some concurrent index builds -- -- Unfortunately this only tests about half the code paths because there are -- no concurrent updates happening to the table at the same time. CREATE TABLE concur_heap (f1 text, f2 text); -- empty table CREATE INDEX CONCURRENTLY concur_index1 ON concur_heap(f2,f1); CREATE INDEX CONCURRENTLY IF NOT EXISTS concur_index1 ON concur_heap(f2,f1); INSERT INTO concur_heap VALUES ('a','b'); INSERT INTO concur_heap VALUES ('b','b'); -- unique index CREATE UNIQUE INDEX CONCURRENTLY concur_index2 ON concur_heap(f1); CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS concur_index2 ON concur_heap(f1); -- check if constraint is set up properly to be enforced INSERT INTO concur_heap VALUES ('b','x'); -- check if constraint is enforced properly at build time CREATE UNIQUE INDEX CONCURRENTLY concur_index3 ON concur_heap(f2); -- test that expression indexes and partial indexes work concurrently CREATE INDEX CONCURRENTLY concur_index4 on concur_heap(f2) WHERE f1='a'; CREATE INDEX CONCURRENTLY concur_index5 on concur_heap(f2) WHERE f1='x'; -- here we also check that you can default the index name CREATE INDEX CONCURRENTLY on concur_heap((f2||f1)); -- You can't do a concurrent index build in a transaction BEGIN; CREATE INDEX CONCURRENTLY concur_index7 ON concur_heap(f1); COMMIT; -- But you can do a regular index build in a transaction BEGIN; CREATE INDEX std_index on concur_heap(f2); COMMIT; -- Failed builds are left invalid by VACUUM FULL, fixed by REINDEX VACUUM FULL concur_heap; REINDEX TABLE concur_heap; DELETE FROM concur_heap WHERE f1 = 'b'; VACUUM FULL concur_heap; \d concur_heap REINDEX TABLE concur_heap; \d concur_heap -- Temporary tables with concurrent builds and on-commit actions -- CONCURRENTLY used with CREATE INDEX and DROP INDEX is ignored. -- PRESERVE ROWS, the default. CREATE TEMP TABLE concur_temp (f1 int, f2 text) ON COMMIT PRESERVE ROWS; INSERT INTO concur_temp VALUES (1, 'foo'), (2, 'bar'); CREATE INDEX CONCURRENTLY concur_temp_ind ON concur_temp(f1); DROP INDEX CONCURRENTLY concur_temp_ind; DROP TABLE concur_temp; -- ON COMMIT DROP BEGIN; CREATE TEMP TABLE concur_temp (f1 int, f2 text) ON COMMIT DROP; INSERT INTO concur_temp VALUES (1, 'foo'), (2, 'bar'); -- Fails when running in a transaction. CREATE INDEX CONCURRENTLY concur_temp_ind ON concur_temp(f1); COMMIT; -- ON COMMIT DELETE ROWS CREATE TEMP TABLE concur_temp (f1 int, f2 text) ON COMMIT DELETE ROWS; INSERT INTO concur_temp VALUES (1, 'foo'), (2, 'bar'); CREATE INDEX CONCURRENTLY concur_temp_ind ON concur_temp(f1); DROP INDEX CONCURRENTLY concur_temp_ind; DROP TABLE concur_temp; -- -- Try some concurrent index drops -- DROP INDEX CONCURRENTLY "concur_index2"; -- works DROP INDEX CONCURRENTLY IF EXISTS "concur_index2"; -- notice -- failures DROP INDEX CONCURRENTLY "concur_index2", "concur_index3"; BEGIN; DROP INDEX CONCURRENTLY "concur_index5"; ROLLBACK; -- successes DROP INDEX CONCURRENTLY IF EXISTS "concur_index3"; DROP INDEX CONCURRENTLY "concur_index4"; DROP INDEX CONCURRENTLY "concur_index5"; DROP INDEX CONCURRENTLY "concur_index1"; DROP INDEX CONCURRENTLY "concur_heap_expr_idx"; \d concur_heap DROP TABLE concur_heap; -- -- Test ADD CONSTRAINT USING INDEX -- CREATE TABLE cwi_test( a int , b varchar(10), c char); -- add some data so that all tests have something to work with. INSERT INTO cwi_test VALUES(1, 2), (3, 4), (5, 6); CREATE UNIQUE INDEX cwi_uniq_idx ON cwi_test(a , b); ALTER TABLE cwi_test ADD primary key USING INDEX cwi_uniq_idx; \d cwi_test \d cwi_uniq_idx CREATE UNIQUE INDEX cwi_uniq2_idx ON cwi_test(b , a); ALTER TABLE cwi_test DROP CONSTRAINT cwi_uniq_idx, ADD CONSTRAINT cwi_replaced_pkey PRIMARY KEY USING INDEX cwi_uniq2_idx; \d cwi_test \d cwi_replaced_pkey DROP INDEX cwi_replaced_pkey; -- Should fail; a constraint depends on it -- Check that non-default index options are rejected CREATE UNIQUE INDEX cwi_uniq3_idx ON cwi_test(a desc); ALTER TABLE cwi_test ADD UNIQUE USING INDEX cwi_uniq3_idx; -- fail CREATE UNIQUE INDEX cwi_uniq4_idx ON cwi_test(b collate "POSIX"); ALTER TABLE cwi_test ADD UNIQUE USING INDEX cwi_uniq4_idx; -- fail DROP TABLE cwi_test; -- ADD CONSTRAINT USING INDEX is forbidden on partitioned tables CREATE TABLE cwi_test(a int) PARTITION BY hash (a); create unique index on cwi_test (a); alter table cwi_test add primary key using index cwi_test_a_idx ; DROP TABLE cwi_test; -- -- Check handling of indexes on system columns -- CREATE TABLE syscol_table (a INT); -- System columns cannot be indexed CREATE INDEX ON syscolcol_table (ctid); -- nor used in expressions CREATE INDEX ON syscol_table ((ctid >= '(1000,0)')); -- nor used in predicates CREATE INDEX ON syscol_table (a) WHERE ctid >= '(1000,0)'; DROP TABLE syscol_table; -- -- Tests for IS NULL/IS NOT NULL with b-tree indexes -- SELECT unique1, unique2 INTO onek_with_null FROM onek; INSERT INTO onek_with_null (unique1,unique2) VALUES (NULL, -1), (NULL, NULL); CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2,unique1); SET enable_seqscan = OFF; SET enable_indexscan = ON; SET enable_bitmapscan = ON; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; DROP INDEX onek_nulltest; CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2 desc,unique1); SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; DROP INDEX onek_nulltest; CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2 desc nulls last,unique1); SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; DROP INDEX onek_nulltest; CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2 nulls first,unique1); SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; DROP INDEX onek_nulltest; -- Check initial-positioning logic too CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2); SET enable_seqscan = OFF; SET enable_indexscan = ON; SET enable_bitmapscan = OFF; SELECT unique1, unique2 FROM onek_with_null ORDER BY unique2 LIMIT 2; SELECT unique1, unique2 FROM onek_with_null WHERE unique2 >= -1 ORDER BY unique2 LIMIT 2; SELECT unique1, unique2 FROM onek_with_null WHERE unique2 >= 0 ORDER BY unique2 LIMIT 2; SELECT unique1, unique2 FROM onek_with_null ORDER BY unique2 DESC LIMIT 2; SELECT unique1, unique2 FROM onek_with_null WHERE unique2 >= -1 ORDER BY unique2 DESC LIMIT 2; SELECT unique1, unique2 FROM onek_with_null WHERE unique2 < 999 ORDER BY unique2 DESC LIMIT 2; RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; DROP TABLE onek_with_null; -- -- Check bitmap index path planning -- EXPLAIN (COSTS OFF) SELECT * FROM tenk1 WHERE thousand = 42 AND (tenthous = 1 OR tenthous = 3 OR tenthous = 42); SELECT * FROM tenk1 WHERE thousand = 42 AND (tenthous = 1 OR tenthous = 3 OR tenthous = 42); EXPLAIN (COSTS OFF) SELECT count(*) FROM tenk1 WHERE hundred = 42 AND (thousand = 42 OR thousand = 99); SELECT count(*) FROM tenk1 WHERE hundred = 42 AND (thousand = 42 OR thousand = 99); -- -- Check behavior with duplicate index column contents -- CREATE TABLE dupindexcols AS SELECT unique1 as id, stringu2::text as f1 FROM tenk1; CREATE INDEX dupindexcols_i ON dupindexcols (f1, id, f1 text_pattern_ops); ANALYZE dupindexcols; EXPLAIN (COSTS OFF) SELECT count(*) FROM dupindexcols WHERE f1 BETWEEN 'WA' AND 'ZZZ' and id < 1000 and f1 ~<~ 'YX'; SELECT count(*) FROM dupindexcols WHERE f1 BETWEEN 'WA' AND 'ZZZ' and id < 1000 and f1 ~<~ 'YX'; -- -- Check ordering of =ANY indexqual results (bug in 9.2.0) -- vacuum tenk1; -- ensure we get consistent plans here explain (costs off) SELECT unique1 FROM tenk1 WHERE unique1 IN (1,42,7) ORDER BY unique1; SELECT unique1 FROM tenk1 WHERE unique1 IN (1,42,7) ORDER BY unique1; explain (costs off) SELECT thousand, tenthous FROM tenk1 WHERE thousand < 2 AND tenthous IN (1001,3000) ORDER BY thousand; SELECT thousand, tenthous FROM tenk1 WHERE thousand < 2 AND tenthous IN (1001,3000) ORDER BY thousand; SET enable_indexonlyscan = OFF; explain (costs off) SELECT thousand, tenthous FROM tenk1 WHERE thousand < 2 AND tenthous IN (1001,3000) ORDER BY thousand; SELECT thousand, tenthous FROM tenk1 WHERE thousand < 2 AND tenthous IN (1001,3000) ORDER BY thousand; RESET enable_indexonlyscan; -- -- Check elimination of constant-NULL subexpressions -- explain (costs off) select * from tenk1 where (thousand, tenthous) in ((1,1001), (null,null)); -- -- Check matching of boolean index columns to WHERE conditions and sort keys -- create temp table boolindex (b bool, i int, unique(b, i), junk float); explain (costs off) select * from boolindex order by b, i limit 10; explain (costs off) select * from boolindex where b order by i limit 10; explain (costs off) select * from boolindex where b = true order by i desc limit 10; explain (costs off) select * from boolindex where not b order by i limit 10; explain (costs off) select * from boolindex where b is true order by i desc limit 10; explain (costs off) select * from boolindex where b is false order by i desc limit 10; -- -- REINDEX (VERBOSE) -- CREATE TABLE reindex_verbose(id integer primary key); \set VERBOSITY terse \\ -- suppress machine-dependent details REINDEX (VERBOSE) TABLE reindex_verbose; \set VERBOSITY default DROP TABLE reindex_verbose; -- -- REINDEX CONCURRENTLY -- CREATE TABLE concur_reindex_tab (c1 int); -- REINDEX REINDEX TABLE concur_reindex_tab; -- notice REINDEX TABLE CONCURRENTLY concur_reindex_tab; -- notice ALTER TABLE concur_reindex_tab ADD COLUMN c2 text; -- add toast index -- Normal index with integer column CREATE UNIQUE INDEX concur_reindex_ind1 ON concur_reindex_tab(c1); -- Normal index with text column CREATE INDEX concur_reindex_ind2 ON concur_reindex_tab(c2); -- UNIQUE index with expression CREATE UNIQUE INDEX concur_reindex_ind3 ON concur_reindex_tab(abs(c1)); -- Duplicate column names CREATE INDEX concur_reindex_ind4 ON concur_reindex_tab(c1, c1, c2); -- Create table for check on foreign key dependence switch with indexes swapped ALTER TABLE concur_reindex_tab ADD PRIMARY KEY USING INDEX concur_reindex_ind1; CREATE TABLE concur_reindex_tab2 (c1 int REFERENCES concur_reindex_tab); INSERT INTO concur_reindex_tab VALUES (1, 'a'); INSERT INTO concur_reindex_tab VALUES (2, 'a'); -- Reindex concurrently of exclusion constraint currently not supported CREATE TABLE concur_reindex_tab3 (c1 int, c2 int4range, EXCLUDE USING gist (c2 WITH &&)); INSERT INTO concur_reindex_tab3 VALUES (3, '[1,2]'); REINDEX INDEX CONCURRENTLY concur_reindex_tab3_c2_excl; -- error REINDEX TABLE CONCURRENTLY concur_reindex_tab3; -- succeeds with warning INSERT INTO concur_reindex_tab3 VALUES (4, '[2,4]'); -- Check materialized views CREATE MATERIALIZED VIEW concur_reindex_matview AS SELECT * FROM concur_reindex_tab; -- Dependency lookup before and after the follow-up REINDEX commands. -- These should remain consistent. SELECT pg_describe_object(classid, objid, objsubid) as obj, pg_describe_object(refclassid,refobjid,refobjsubid) as objref, deptype FROM pg_depend WHERE classid = 'pg_class'::regclass AND objid in ('concur_reindex_tab'::regclass, 'concur_reindex_ind1'::regclass, 'concur_reindex_ind2'::regclass, 'concur_reindex_ind3'::regclass, 'concur_reindex_ind4'::regclass, 'concur_reindex_matview'::regclass) ORDER BY 1, 2; REINDEX INDEX CONCURRENTLY concur_reindex_ind1; REINDEX TABLE CONCURRENTLY concur_reindex_tab; REINDEX TABLE CONCURRENTLY concur_reindex_matview; SELECT pg_describe_object(classid, objid, objsubid) as obj, pg_describe_object(refclassid,refobjid,refobjsubid) as objref, deptype FROM pg_depend WHERE classid = 'pg_class'::regclass AND objid in ('concur_reindex_tab'::regclass, 'concur_reindex_ind1'::regclass, 'concur_reindex_ind2'::regclass, 'concur_reindex_ind3'::regclass, 'concur_reindex_ind4'::regclass, 'concur_reindex_matview'::regclass) ORDER BY 1, 2; -- Check that comments are preserved CREATE TABLE testcomment (i int); CREATE INDEX testcomment_idx1 ON testcomment (i); COMMENT ON INDEX testcomment_idx1 IS 'test comment'; SELECT obj_description('testcomment_idx1'::regclass, 'pg_class'); REINDEX TABLE testcomment; SELECT obj_description('testcomment_idx1'::regclass, 'pg_class'); REINDEX TABLE CONCURRENTLY testcomment ; SELECT obj_description('testcomment_idx1'::regclass, 'pg_class'); DROP TABLE testcomment; -- Check that indisclustered updates are preserved CREATE TABLE concur_clustered(i int); CREATE INDEX concur_clustered_i_idx ON concur_clustered(i); ALTER TABLE concur_clustered CLUSTER ON concur_clustered_i_idx; REINDEX TABLE CONCURRENTLY concur_clustered; SELECT indexrelid::regclass, indisclustered FROM pg_index WHERE indrelid = 'concur_clustered'::regclass; DROP TABLE concur_clustered; -- Check that indisreplident updates are preserved. CREATE TABLE concur_replident(i int NOT NULL); CREATE UNIQUE INDEX concur_replident_i_idx ON concur_replident(i); ALTER TABLE concur_replident REPLICA IDENTITY USING INDEX concur_replident_i_idx; SELECT indexrelid::regclass, indisreplident FROM pg_index WHERE indrelid = 'concur_replident'::regclass; REINDEX TABLE CONCURRENTLY concur_replident; SELECT indexrelid::regclass, indisreplident FROM pg_index WHERE indrelid = 'concur_replident'::regclass; DROP TABLE concur_replident; -- Partitions -- Create some partitioned tables CREATE TABLE concur_reindex_part (c1 int, c2 int) PARTITION BY RANGE (c1); CREATE TABLE concur_reindex_part_0 PARTITION OF concur_reindex_part FOR VALUES FROM (0) TO (10) PARTITION BY list (c2); CREATE TABLE concur_reindex_part_0_1 PARTITION OF concur_reindex_part_0 FOR VALUES IN (1); CREATE TABLE concur_reindex_part_0_2 PARTITION OF concur_reindex_part_0 FOR VALUES IN (2); -- This partitioned table will have no partitions. CREATE TABLE concur_reindex_part_10 PARTITION OF concur_reindex_part FOR VALUES FROM (10) TO (20) PARTITION BY list (c2); -- Create some partitioned indexes CREATE INDEX concur_reindex_part_index ON ONLY concur_reindex_part (c1); CREATE INDEX concur_reindex_part_index_0 ON ONLY concur_reindex_part_0 (c1); ALTER INDEX concur_reindex_part_index ATTACH PARTITION concur_reindex_part_index_0; -- This partitioned index will have no partitions. CREATE INDEX concur_reindex_part_index_10 ON ONLY concur_reindex_part_10 (c1); ALTER INDEX concur_reindex_part_index ATTACH PARTITION concur_reindex_part_index_10; CREATE INDEX concur_reindex_part_index_0_1 ON ONLY concur_reindex_part_0_1 (c1); ALTER INDEX concur_reindex_part_index_0 ATTACH PARTITION concur_reindex_part_index_0_1; CREATE INDEX concur_reindex_part_index_0_2 ON ONLY concur_reindex_part_0_2 (c1); ALTER INDEX concur_reindex_part_index_0 ATTACH PARTITION concur_reindex_part_index_0_2; SELECT relid, parentrelid, level FROM pg_partition_tree('concur_reindex_part_index') ORDER BY relid, level; -- REINDEX fails for partitioned indexes REINDEX INDEX concur_reindex_part_index_10; REINDEX INDEX CONCURRENTLY concur_reindex_part_index_10; -- REINDEX is a no-op for partitioned tables REINDEX TABLE concur_reindex_part_10; REINDEX TABLE CONCURRENTLY concur_reindex_part_10; SELECT relid, parentrelid, level FROM pg_partition_tree('concur_reindex_part_index') ORDER BY relid, level; -- REINDEX should preserve dependencies of partition tree. SELECT pg_describe_object(classid, objid, objsubid) as obj, pg_describe_object(refclassid,refobjid,refobjsubid) as objref, deptype FROM pg_depend WHERE classid = 'pg_class'::regclass AND objid in ('concur_reindex_part'::regclass, 'concur_reindex_part_0'::regclass, 'concur_reindex_part_0_1'::regclass, 'concur_reindex_part_0_2'::regclass, 'concur_reindex_part_index'::regclass, 'concur_reindex_part_index_0'::regclass, 'concur_reindex_part_index_0_1'::regclass, 'concur_reindex_part_index_0_2'::regclass) ORDER BY 1, 2; REINDEX INDEX CONCURRENTLY concur_reindex_part_index_0_1; REINDEX INDEX CONCURRENTLY concur_reindex_part_index_0_2; SELECT relid, parentrelid, level FROM pg_partition_tree('concur_reindex_part_index') ORDER BY relid, level; REINDEX TABLE CONCURRENTLY concur_reindex_part_0_1; REINDEX TABLE CONCURRENTLY concur_reindex_part_0_2; SELECT pg_describe_object(classid, objid, objsubid) as obj, pg_describe_object(refclassid,refobjid,refobjsubid) as objref, deptype FROM pg_depend WHERE classid = 'pg_class'::regclass AND objid in ('concur_reindex_part'::regclass, 'concur_reindex_part_0'::regclass, 'concur_reindex_part_0_1'::regclass, 'concur_reindex_part_0_2'::regclass, 'concur_reindex_part_index'::regclass, 'concur_reindex_part_index_0'::regclass, 'concur_reindex_part_index_0_1'::regclass, 'concur_reindex_part_index_0_2'::regclass) ORDER BY 1, 2; SELECT relid, parentrelid, level FROM pg_partition_tree('concur_reindex_part_index') ORDER BY relid, level; DROP TABLE concur_reindex_part; -- Check errors -- Cannot run inside a transaction block BEGIN; REINDEX TABLE CONCURRENTLY concur_reindex_tab; COMMIT; REINDEX TABLE CONCURRENTLY pg_class; -- no catalog relation REINDEX INDEX CONCURRENTLY pg_class_oid_index; -- no catalog index -- These are the toast table and index of pg_authid. REINDEX TABLE CONCURRENTLY pg_toast.pg_toast_1260; -- no catalog toast table REINDEX INDEX CONCURRENTLY pg_toast.pg_toast_1260_index; -- no catalog toast index REINDEX SYSTEM CONCURRENTLY postgres; -- not allowed for SYSTEM -- Warns about catalog relations REINDEX SCHEMA CONCURRENTLY pg_catalog; -- Check the relation status, there should not be invalid indexes \d concur_reindex_tab DROP MATERIALIZED VIEW concur_reindex_matview; DROP TABLE concur_reindex_tab, concur_reindex_tab2, concur_reindex_tab3; -- Check handling of invalid indexes CREATE TABLE concur_reindex_tab4 (c1 int); INSERT INTO concur_reindex_tab4 VALUES (1), (1), (2); -- This trick creates an invalid index. CREATE UNIQUE INDEX CONCURRENTLY concur_reindex_ind5 ON concur_reindex_tab4 (c1); -- Reindexing concurrently this index fails with the same failure. -- The extra index created is itself invalid, and can be dropped. REINDEX INDEX CONCURRENTLY concur_reindex_ind5; \d concur_reindex_tab4 DROP INDEX concur_reindex_ind5_ccnew; -- This makes the previous failure go away, so the index can become valid. DELETE FROM concur_reindex_tab4 WHERE c1 = 1; -- The invalid index is not processed when running REINDEX TABLE. REINDEX TABLE CONCURRENTLY concur_reindex_tab4; \d concur_reindex_tab4 -- But it is fixed with REINDEX INDEX. REINDEX INDEX CONCURRENTLY concur_reindex_ind5; \d concur_reindex_tab4 DROP TABLE concur_reindex_tab4; -- Check handling of indexes with expressions and predicates. The -- definitions of the rebuilt indexes should match the original -- definitions. CREATE TABLE concur_exprs_tab (c1 int , c2 boolean); INSERT INTO concur_exprs_tab (c1, c2) VALUES (1369652450, FALSE), (414515746, TRUE), (897778963, FALSE); CREATE UNIQUE INDEX concur_exprs_index_expr ON concur_exprs_tab ((c1::text COLLATE "C")); CREATE UNIQUE INDEX concur_exprs_index_pred ON concur_exprs_tab (c1) WHERE (c1::text > 500000000::text COLLATE "C"); CREATE UNIQUE INDEX concur_exprs_index_pred_2 ON concur_exprs_tab ((1 / c1)) WHERE ('-H') >= (c2::TEXT) COLLATE "C"; ALTER INDEX concur_exprs_index_expr ALTER COLUMN 1 SET STATISTICS 100; ANALYZE concur_exprs_tab; SELECT starelid::regclass, count(*) FROM pg_statistic WHERE starelid IN ( 'concur_exprs_index_expr'::regclass, 'concur_exprs_index_pred'::regclass, 'concur_exprs_index_pred_2'::regclass) GROUP BY starelid ORDER BY starelid::regclass::text; SELECT pg_get_indexdef('concur_exprs_index_expr'::regclass); SELECT pg_get_indexdef('concur_exprs_index_pred'::regclass); SELECT pg_get_indexdef('concur_exprs_index_pred_2'::regclass); REINDEX TABLE CONCURRENTLY concur_exprs_tab; SELECT pg_get_indexdef('concur_exprs_index_expr'::regclass); SELECT pg_get_indexdef('concur_exprs_index_pred'::regclass); SELECT pg_get_indexdef('concur_exprs_index_pred_2'::regclass); -- ALTER TABLE recreates the indexes, which should keep their collations. ALTER TABLE concur_exprs_tab ALTER c2 TYPE TEXT; SELECT pg_get_indexdef('concur_exprs_index_expr'::regclass); SELECT pg_get_indexdef('concur_exprs_index_pred'::regclass); SELECT pg_get_indexdef('concur_exprs_index_pred_2'::regclass); -- Statistics should remain intact. SELECT starelid::regclass, count(*) FROM pg_statistic WHERE starelid IN ( 'concur_exprs_index_expr'::regclass, 'concur_exprs_index_pred'::regclass, 'concur_exprs_index_pred_2'::regclass) GROUP BY starelid ORDER BY starelid::regclass::text; -- attstattarget should remain intact SELECT attrelid::regclass, attnum, attstattarget FROM pg_attribute WHERE attrelid IN ( 'concur_exprs_index_expr'::regclass, 'concur_exprs_index_pred'::regclass, 'concur_exprs_index_pred_2'::regclass) ORDER BY attrelid::regclass::text, attnum; DROP TABLE concur_exprs_tab; -- Temporary tables and on-commit actions, where CONCURRENTLY is ignored. -- ON COMMIT PRESERVE ROWS, the default. CREATE TEMP TABLE concur_temp_tab_1 (c1 int, c2 text) ON COMMIT PRESERVE ROWS; INSERT INTO concur_temp_tab_1 VALUES (1, 'foo'), (2, 'bar'); CREATE INDEX concur_temp_ind_1 ON concur_temp_tab_1(c2); REINDEX TABLE CONCURRENTLY concur_temp_tab_1; REINDEX INDEX CONCURRENTLY concur_temp_ind_1; -- Still fails in transaction blocks BEGIN; REINDEX INDEX CONCURRENTLY concur_temp_ind_1; COMMIT; -- ON COMMIT DELETE ROWS CREATE TEMP TABLE concur_temp_tab_2 (c1 int, c2 text) ON COMMIT DELETE ROWS; CREATE INDEX concur_temp_ind_2 ON concur_temp_tab_2(c2); REINDEX TABLE CONCURRENTLY concur_temp_tab_2; REINDEX INDEX CONCURRENTLY concur_temp_ind_2; -- ON COMMIT DROP BEGIN; CREATE TEMP TABLE concur_temp_tab_3 (c1 int, c2 text) ON COMMIT PRESERVE ROWS; INSERT INTO concur_temp_tab_3 VALUES (1, 'foo'), (2, 'bar'); CREATE INDEX concur_temp_ind_3 ON concur_temp_tab_3(c2); -- Fails when running in a transaction REINDEX INDEX CONCURRENTLY concur_temp_ind_3; COMMIT; -- REINDEX SCHEMA processes all temporary relations CREATE TABLE reindex_temp_before AS SELECT oid, relname, relfilenode, relkind, reltoastrelid FROM pg_class WHERE relname IN ('concur_temp_ind_1', 'concur_temp_ind_2'); SELECT pg_my_temp_schema()::regnamespace as temp_schema_name \gset REINDEX SCHEMA CONCURRENTLY :temp_schema_name; SELECT b.relname, b.relkind, CASE WHEN a.relfilenode = b.relfilenode THEN 'relfilenode is unchanged' ELSE 'relfilenode has changed' END FROM reindex_temp_before b JOIN pg_class a ON b.oid = a.oid ORDER BY 1; DROP TABLE concur_temp_tab_1, concur_temp_tab_2, reindex_temp_before; -- -- REINDEX SCHEMA -- REINDEX SCHEMA schema_to_reindex; -- failure, schema does not exist CREATE SCHEMA schema_to_reindex; SET search_path = 'schema_to_reindex'; CREATE TABLE table1(col1 SERIAL PRIMARY KEY); INSERT INTO table1 SELECT generate_series(1,400); CREATE TABLE table2(col1 SERIAL PRIMARY KEY, col2 TEXT NOT NULL); INSERT INTO table2 SELECT generate_series(1,400), 'abc'; CREATE INDEX ON table2(col2); CREATE MATERIALIZED VIEW matview AS SELECT col1 FROM table2; CREATE INDEX ON matview(col1); CREATE VIEW view AS SELECT col2 FROM table2; CREATE TABLE reindex_before AS SELECT oid, relname, relfilenode, relkind, reltoastrelid FROM pg_class where relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'schema_to_reindex'); INSERT INTO reindex_before SELECT oid, 'pg_toast_TABLE', relfilenode, relkind, reltoastrelid FROM pg_class WHERE oid IN (SELECT reltoastrelid FROM reindex_before WHERE reltoastrelid > 0); INSERT INTO reindex_before SELECT oid, 'pg_toast_TABLE_index', relfilenode, relkind, reltoastrelid FROM pg_class where oid in (select indexrelid from pg_index where indrelid in (select reltoastrelid from reindex_before where reltoastrelid > 0)); REINDEX SCHEMA schema_to_reindex; CREATE TABLE reindex_after AS SELECT oid, relname, relfilenode, relkind FROM pg_class where relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'schema_to_reindex'); SELECT b.relname, b.relkind, CASE WHEN a.relfilenode = b.relfilenode THEN 'relfilenode is unchanged' ELSE 'relfilenode has changed' END FROM reindex_before b JOIN pg_class a ON b.oid = a.oid ORDER BY 1; REINDEX SCHEMA schema_to_reindex; BEGIN; REINDEX SCHEMA schema_to_reindex; -- failure, cannot run in a transaction END; -- concurrently REINDEX SCHEMA CONCURRENTLY schema_to_reindex; -- Failure for unauthorized user CREATE ROLE regress_reindexuser NOLOGIN; SET SESSION ROLE regress_reindexuser; REINDEX SCHEMA schema_to_reindex; -- Permission failures with toast tables and indexes (pg_authid here) RESET ROLE; GRANT USAGE ON SCHEMA pg_toast TO regress_reindexuser; SET SESSION ROLE regress_reindexuser; REINDEX TABLE pg_toast.pg_toast_1260; REINDEX INDEX pg_toast.pg_toast_1260_index; -- Clean up RESET ROLE; REVOKE USAGE ON SCHEMA pg_toast FROM regress_reindexuser; DROP ROLE regress_reindexuser; DROP SCHEMA schema_to_reindex CASCADE; libpg_query-13-2.1.0/test/sql/postgres_regress/create_index_spgist.sql000066400000000000000000000376531413137616400262230ustar00rootroot00000000000000-- -- SP-GiST index tests -- CREATE TABLE quad_point_tbl AS SELECT point(unique1,unique2) AS p FROM tenk1; INSERT INTO quad_point_tbl SELECT '(333.0,400.0)'::point FROM generate_series(1,1000); INSERT INTO quad_point_tbl VALUES (NULL), (NULL), (NULL); CREATE INDEX sp_quad_ind ON quad_point_tbl USING spgist (p); CREATE TABLE kd_point_tbl AS SELECT * FROM quad_point_tbl; CREATE INDEX sp_kd_ind ON kd_point_tbl USING spgist (p kd_point_ops); CREATE TABLE radix_text_tbl AS SELECT name AS t FROM road WHERE name !~ '^[0-9]'; INSERT INTO radix_text_tbl SELECT 'P0123456789abcdef' FROM generate_series(1,1000); INSERT INTO radix_text_tbl VALUES ('P0123456789abcde'); INSERT INTO radix_text_tbl VALUES ('P0123456789abcdefF'); CREATE INDEX sp_radix_ind ON radix_text_tbl USING spgist (t); -- get non-indexed results for comparison purposes SET enable_seqscan = ON; SET enable_indexscan = OFF; SET enable_bitmapscan = OFF; SELECT count(*) FROM quad_point_tbl WHERE p IS NULL; SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL; SELECT count(*) FROM quad_point_tbl; SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p; SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p <^ '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p >^ '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; CREATE TEMP TABLE quad_point_tbl_ord_seq1 AS SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p FROM quad_point_tbl; CREATE TEMP TABLE quad_point_tbl_ord_seq2 AS SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; CREATE TEMP TABLE quad_point_tbl_ord_seq3 AS SELECT row_number() OVER (ORDER BY p <-> '333,400') n, p <-> '333,400' dist, p FROM quad_point_tbl WHERE p IS NOT NULL; SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth'; -- Now check the results from plain indexscan SET enable_seqscan = OFF; SET enable_indexscan = ON; SET enable_bitmapscan = OFF; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p IS NULL; SELECT count(*) FROM quad_point_tbl WHERE p IS NULL; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL; SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl; SELECT count(*) FROM quad_point_tbl; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p; SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p <^ '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p <^ '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p >^ '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p >^ '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; EXPLAIN (COSTS OFF) SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p FROM quad_point_tbl; CREATE TEMP TABLE quad_point_tbl_ord_idx1 AS SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p FROM quad_point_tbl; SELECT * FROM quad_point_tbl_ord_seq1 seq FULL JOIN quad_point_tbl_ord_idx1 idx ON seq.n = idx.n WHERE seq.dist IS DISTINCT FROM idx.dist; EXPLAIN (COSTS OFF) SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; CREATE TEMP TABLE quad_point_tbl_ord_idx2 AS SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; SELECT * FROM quad_point_tbl_ord_seq2 seq FULL JOIN quad_point_tbl_ord_idx2 idx ON seq.n = idx.n WHERE seq.dist IS DISTINCT FROM idx.dist; EXPLAIN (COSTS OFF) SELECT row_number() OVER (ORDER BY p <-> '333,400') n, p <-> '333,400' dist, p FROM quad_point_tbl WHERE p IS NOT NULL; CREATE TEMP TABLE quad_point_tbl_ord_idx3 AS SELECT row_number() OVER (ORDER BY p <-> '333,400') n, p <-> '333,400' dist, p FROM quad_point_tbl WHERE p IS NOT NULL; SELECT * FROM quad_point_tbl_ord_seq3 seq FULL JOIN quad_point_tbl_ord_idx3 idx ON seq.n = idx.n WHERE seq.dist IS DISTINCT FROM idx.dist; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p; SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p << '(5000, 4000)'; SELECT count(*) FROM kd_point_tbl WHERE p << '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p >> '(5000, 4000)'; SELECT count(*) FROM kd_point_tbl WHERE p >> '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p <^ '(5000, 4000)'; SELECT count(*) FROM kd_point_tbl WHERE p <^ '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p >^ '(5000, 4000)'; SELECT count(*) FROM kd_point_tbl WHERE p >^ '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; EXPLAIN (COSTS OFF) SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p FROM kd_point_tbl; CREATE TEMP TABLE kd_point_tbl_ord_idx1 AS SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p FROM kd_point_tbl; SELECT * FROM quad_point_tbl_ord_seq1 seq FULL JOIN kd_point_tbl_ord_idx1 idx ON seq.n = idx.n WHERE seq.dist IS DISTINCT FROM idx.dist; EXPLAIN (COSTS OFF) SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; CREATE TEMP TABLE kd_point_tbl_ord_idx2 AS SELECT row_number() OVER (ORDER BY p <-> '0,0') n, p <-> '0,0' dist, p FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; SELECT * FROM quad_point_tbl_ord_seq2 seq FULL JOIN kd_point_tbl_ord_idx2 idx ON seq.n = idx.n WHERE seq.dist IS DISTINCT FROM idx.dist; EXPLAIN (COSTS OFF) SELECT row_number() OVER (ORDER BY p <-> '333,400') n, p <-> '333,400' dist, p FROM kd_point_tbl WHERE p IS NOT NULL; CREATE TEMP TABLE kd_point_tbl_ord_idx3 AS SELECT row_number() OVER (ORDER BY p <-> '333,400') n, p <-> '333,400' dist, p FROM kd_point_tbl WHERE p IS NOT NULL; SELECT * FROM quad_point_tbl_ord_seq3 seq FULL JOIN kd_point_tbl_ord_idx3 idx ON seq.n = idx.n WHERE seq.dist IS DISTINCT FROM idx.dist; -- check ORDER BY distance to NULL SELECT (SELECT p FROM kd_point_tbl ORDER BY p <-> pt, p <-> '0,0' LIMIT 1) FROM (VALUES (point '1,2'), (NULL), ('1234,5678')) pts(pt); EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth'; SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth'; -- Now check the results from bitmap indexscan SET enable_seqscan = OFF; SET enable_indexscan = OFF; SET enable_bitmapscan = ON; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p IS NULL; SELECT count(*) FROM quad_point_tbl WHERE p IS NULL; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL; SELECT count(*) FROM quad_point_tbl WHERE p IS NOT NULL; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl; SELECT count(*) FROM quad_point_tbl; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; SELECT count(*) FROM quad_point_tbl WHERE p <@ box '(200,200,1000,1000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p; SELECT count(*) FROM quad_point_tbl WHERE box '(200,200,1000,1000)' @> p; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p << '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p >> '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p <^ '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p <^ '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p >^ '(5000, 4000)'; SELECT count(*) FROM quad_point_tbl WHERE p >^ '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; SELECT count(*) FROM quad_point_tbl WHERE p ~= '(4585, 365)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; SELECT count(*) FROM kd_point_tbl WHERE p <@ box '(200,200,1000,1000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p; SELECT count(*) FROM kd_point_tbl WHERE box '(200,200,1000,1000)' @> p; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p << '(5000, 4000)'; SELECT count(*) FROM kd_point_tbl WHERE p << '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p >> '(5000, 4000)'; SELECT count(*) FROM kd_point_tbl WHERE p >> '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p <^ '(5000, 4000)'; SELECT count(*) FROM kd_point_tbl WHERE p <^ '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p >^ '(5000, 4000)'; SELECT count(*) FROM kd_point_tbl WHERE p >^ '(5000, 4000)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; SELECT count(*) FROM kd_point_tbl WHERE p ~= '(4585, 365)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdef'; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcde'; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; SELECT count(*) FROM radix_text_tbl WHERE t = 'P0123456789abcdefF'; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t < 'Aztec Ct '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t ~<~ 'Aztec Ct '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t <= 'Aztec Ct '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t ~<=~ 'Aztec Ct '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; SELECT count(*) FROM radix_text_tbl WHERE t = 'Aztec Ct '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t = 'Worth St '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t >= 'Worth St '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t ~>=~ 'Worth St '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t > 'Worth St '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; SELECT count(*) FROM radix_text_tbl WHERE t ~>~ 'Worth St '; EXPLAIN (COSTS OFF) SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth'; SELECT count(*) FROM radix_text_tbl WHERE t ^@ 'Worth'; RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; libpg_query-13-2.1.0/test/sql/postgres_regress/create_misc.sql000066400000000000000000000126371413137616400244510ustar00rootroot00000000000000-- -- CREATE_MISC -- -- CLASS POPULATION -- (any resemblance to real life is purely coincidental) -- INSERT INTO tenk2 SELECT * FROM tenk1; SELECT * INTO TABLE onek2 FROM onek; INSERT INTO fast_emp4000 SELECT * FROM slow_emp4000; SELECT * INTO TABLE Bprime FROM tenk1 WHERE unique2 < 1000; INSERT INTO hobbies_r (name, person) SELECT 'posthacking', p.name FROM person* p WHERE p.name = 'mike' or p.name = 'jeff'; INSERT INTO hobbies_r (name, person) SELECT 'basketball', p.name FROM person p WHERE p.name = 'joe' or p.name = 'sally'; INSERT INTO hobbies_r (name) VALUES ('skywalking'); INSERT INTO equipment_r (name, hobby) VALUES ('advil', 'posthacking'); INSERT INTO equipment_r (name, hobby) VALUES ('peet''s coffee', 'posthacking'); INSERT INTO equipment_r (name, hobby) VALUES ('hightops', 'basketball'); INSERT INTO equipment_r (name, hobby) VALUES ('guts', 'skywalking'); INSERT INTO city VALUES ('Podunk', '(1,2),(3,4)', '100,127,1000'), ('Gotham', '(1000,34),(1100,334)', '123456,127,-1000,6789'); TABLE city; SELECT * INTO TABLE ramp FROM road WHERE name ~ '.*Ramp'; INSERT INTO ihighway SELECT * FROM road WHERE name ~ 'I- .*'; INSERT INTO shighway SELECT * FROM road WHERE name ~ 'State Hwy.*'; UPDATE shighway SET surface = 'asphalt'; INSERT INTO a_star (class, a) VALUES ('a', 1); INSERT INTO a_star (class, a) VALUES ('a', 2); INSERT INTO a_star (class) VALUES ('a'); INSERT INTO b_star (class, a, b) VALUES ('b', 3, 'mumble'::text); INSERT INTO b_star (class, a) VALUES ('b', 4); INSERT INTO b_star (class, b) VALUES ('b', 'bumble'::text); INSERT INTO b_star (class) VALUES ('b'); INSERT INTO c_star (class, a, c) VALUES ('c', 5, 'hi mom'::name); INSERT INTO c_star (class, a) VALUES ('c', 6); INSERT INTO c_star (class, c) VALUES ('c', 'hi paul'::name); INSERT INTO c_star (class) VALUES ('c'); INSERT INTO d_star (class, a, b, c, d) VALUES ('d', 7, 'grumble'::text, 'hi sunita'::name, '0.0'::float8); INSERT INTO d_star (class, a, b, c) VALUES ('d', 8, 'stumble'::text, 'hi koko'::name); INSERT INTO d_star (class, a, b, d) VALUES ('d', 9, 'rumble'::text, '1.1'::float8); INSERT INTO d_star (class, a, c, d) VALUES ('d', 10, 'hi kristin'::name, '10.01'::float8); INSERT INTO d_star (class, b, c, d) VALUES ('d', 'crumble'::text, 'hi boris'::name, '100.001'::float8); INSERT INTO d_star (class, a, b) VALUES ('d', 11, 'fumble'::text); INSERT INTO d_star (class, a, c) VALUES ('d', 12, 'hi avi'::name); INSERT INTO d_star (class, a, d) VALUES ('d', 13, '1000.0001'::float8); INSERT INTO d_star (class, b, c) VALUES ('d', 'tumble'::text, 'hi andrew'::name); INSERT INTO d_star (class, b, d) VALUES ('d', 'humble'::text, '10000.00001'::float8); INSERT INTO d_star (class, c, d) VALUES ('d', 'hi ginger'::name, '100000.000001'::float8); INSERT INTO d_star (class, a) VALUES ('d', 14); INSERT INTO d_star (class, b) VALUES ('d', 'jumble'::text); INSERT INTO d_star (class, c) VALUES ('d', 'hi jolly'::name); INSERT INTO d_star (class, d) VALUES ('d', '1000000.0000001'::float8); INSERT INTO d_star (class) VALUES ('d'); INSERT INTO e_star (class, a, c, e) VALUES ('e', 15, 'hi carol'::name, '-1'::int2); INSERT INTO e_star (class, a, c) VALUES ('e', 16, 'hi bob'::name); INSERT INTO e_star (class, a, e) VALUES ('e', 17, '-2'::int2); INSERT INTO e_star (class, c, e) VALUES ('e', 'hi michelle'::name, '-3'::int2); INSERT INTO e_star (class, a) VALUES ('e', 18); INSERT INTO e_star (class, c) VALUES ('e', 'hi elisa'::name); INSERT INTO e_star (class, e) VALUES ('e', '-4'::int2); INSERT INTO f_star (class, a, c, e, f) VALUES ('f', 19, 'hi claire'::name, '-5'::int2, '(1,3),(2,4)'::polygon); INSERT INTO f_star (class, a, c, e) VALUES ('f', 20, 'hi mike'::name, '-6'::int2); INSERT INTO f_star (class, a, c, f) VALUES ('f', 21, 'hi marcel'::name, '(11,44),(22,55),(33,66)'::polygon); INSERT INTO f_star (class, a, e, f) VALUES ('f', 22, '-7'::int2, '(111,555),(222,666),(333,777),(444,888)'::polygon); INSERT INTO f_star (class, c, e, f) VALUES ('f', 'hi keith'::name, '-8'::int2, '(1111,3333),(2222,4444)'::polygon); INSERT INTO f_star (class, a, c) VALUES ('f', 24, 'hi marc'::name); INSERT INTO f_star (class, a, e) VALUES ('f', 25, '-9'::int2); INSERT INTO f_star (class, a, f) VALUES ('f', 26, '(11111,33333),(22222,44444)'::polygon); INSERT INTO f_star (class, c, e) VALUES ('f', 'hi allison'::name, '-10'::int2); INSERT INTO f_star (class, c, f) VALUES ('f', 'hi jeff'::name, '(111111,333333),(222222,444444)'::polygon); INSERT INTO f_star (class, e, f) VALUES ('f', '-11'::int2, '(1111111,3333333),(2222222,4444444)'::polygon); INSERT INTO f_star (class, a) VALUES ('f', 27); INSERT INTO f_star (class, c) VALUES ('f', 'hi carl'::name); INSERT INTO f_star (class, e) VALUES ('f', '-12'::int2); INSERT INTO f_star (class, f) VALUES ('f', '(11111111,33333333),(22222222,44444444)'::polygon); INSERT INTO f_star (class) VALUES ('f'); -- Analyze the X_star tables for better plan stability in later tests ANALYZE a_star; ANALYZE b_star; ANALYZE c_star; ANALYZE d_star; ANALYZE e_star; ANALYZE f_star; -- -- for internal portal (cursor) tests -- CREATE TABLE iportaltest ( i int4, d float4, p polygon ); INSERT INTO iportaltest (i, d, p) VALUES (1, 3.567, '(3.0,1.0),(4.0,2.0)'::polygon); INSERT INTO iportaltest (i, d, p) VALUES (2, 89.05, '(4.0,2.0),(3.0,1.0)'::polygon); libpg_query-13-2.1.0/test/sql/postgres_regress/create_operator.sql000066400000000000000000000134231413137616400253430ustar00rootroot00000000000000-- -- CREATE_OPERATOR -- CREATE OPERATOR ## ( leftarg = path, rightarg = path, function = path_inter, commutator = ## ); CREATE OPERATOR <% ( leftarg = point, rightarg = widget, procedure = pt_in_widget, commutator = >% , negator = >=% ); CREATE OPERATOR @#@ ( rightarg = int8, -- left unary procedure = factorial ); CREATE OPERATOR #@# ( leftarg = int8, -- right unary procedure = factorial ); CREATE OPERATOR #%# ( leftarg = int8, -- right unary procedure = factorial ); -- Test operator created above SELECT point '(1,2)' <% widget '(0,0,3)' AS t, point '(1,2)' <% widget '(0,0,1)' AS f; -- Test comments COMMENT ON OPERATOR ###### (int4, NONE) IS 'bad right unary'; -- => is disallowed now CREATE OPERATOR => ( leftarg = int8, -- right unary procedure = factorial ); -- lexing of <=, >=, <>, != has a number of edge cases -- (=> is tested elsewhere) -- this is legal because ! is not allowed in sql ops CREATE OPERATOR !=- ( leftarg = int8, -- right unary procedure = factorial ); SELECT 2 !=-; -- make sure lexer returns != as <> even in edge cases SELECT 2 !=/**/ 1, 2 !=/**/ 2; SELECT 2 !=-- comment to be removed by psql 1; DO $$ -- use DO to protect -- from psql declare r boolean; begin execute $e$ select 2 !=-- comment 1 $e$ into r; raise info 'r = %', r; end; $$; -- check that <= etc. followed by more operator characters are returned -- as the correct token with correct precedence SELECT true<>-1 BETWEEN 1 AND 1; -- BETWEEN has prec. above <> but below Op SELECT false<>/**/1 BETWEEN 1 AND 1; SELECT false<=-1 BETWEEN 1 AND 1; SELECT false>=-1 BETWEEN 1 AND 1; SELECT 2<=/**/3, 3>=/**/2, 2<>/**/3; SELECT 3<=/**/2, 2>=/**/3, 2<>/**/2; -- Should fail. CREATE OPERATOR requires USAGE on SCHEMA BEGIN TRANSACTION; CREATE ROLE regress_rol_op1; CREATE SCHEMA schema_op1; GRANT USAGE ON SCHEMA schema_op1 TO PUBLIC; REVOKE USAGE ON SCHEMA schema_op1 FROM regress_rol_op1; SET ROLE regress_rol_op1; CREATE OPERATOR schema_op1.#*# ( leftarg = int8, -- right unary procedure = factorial ); ROLLBACK; -- Should fail. SETOF type functions not allowed as argument (testing leftarg) BEGIN TRANSACTION; CREATE OPERATOR #*# ( leftarg = SETOF int8, procedure = factorial ); ROLLBACK; -- Should fail. SETOF type functions not allowed as argument (testing rightarg) BEGIN TRANSACTION; CREATE OPERATOR #*# ( rightarg = SETOF int8, procedure = factorial ); ROLLBACK; -- Should work. Sample text-book case BEGIN TRANSACTION; CREATE OR REPLACE FUNCTION fn_op2(boolean, boolean) RETURNS boolean AS $$ SELECT NULL::BOOLEAN; $$ LANGUAGE sql IMMUTABLE; CREATE OPERATOR === ( LEFTARG = boolean, RIGHTARG = boolean, PROCEDURE = fn_op2, COMMUTATOR = ===, NEGATOR = !==, RESTRICT = contsel, JOIN = contjoinsel, SORT1, SORT2, LTCMP, GTCMP, HASHES, MERGES ); ROLLBACK; -- Should fail. Invalid attribute CREATE OPERATOR #@%# ( leftarg = int8, -- right unary procedure = factorial, invalid_att = int8 ); -- Should fail. At least leftarg or rightarg should be mandatorily specified CREATE OPERATOR #@%# ( procedure = factorial ); -- Should fail. Procedure should be mandatorily specified CREATE OPERATOR #@%# ( leftarg = int8 ); -- Should fail. CREATE OPERATOR requires USAGE on TYPE BEGIN TRANSACTION; CREATE ROLE regress_rol_op3; CREATE TYPE type_op3 AS ENUM ('new', 'open', 'closed'); CREATE FUNCTION fn_op3(type_op3, int8) RETURNS int8 AS $$ SELECT NULL::int8; $$ LANGUAGE sql IMMUTABLE; REVOKE USAGE ON TYPE type_op3 FROM regress_rol_op3; REVOKE USAGE ON TYPE type_op3 FROM PUBLIC; -- Need to do this so that regress_rol_op3 is not allowed USAGE via PUBLIC SET ROLE regress_rol_op3; CREATE OPERATOR #*# ( leftarg = type_op3, rightarg = int8, procedure = fn_op3 ); ROLLBACK; -- Should fail. CREATE OPERATOR requires USAGE on TYPE (need to check separately for rightarg) BEGIN TRANSACTION; CREATE ROLE regress_rol_op4; CREATE TYPE type_op4 AS ENUM ('new', 'open', 'closed'); CREATE FUNCTION fn_op4(int8, type_op4) RETURNS int8 AS $$ SELECT NULL::int8; $$ LANGUAGE sql IMMUTABLE; REVOKE USAGE ON TYPE type_op4 FROM regress_rol_op4; REVOKE USAGE ON TYPE type_op4 FROM PUBLIC; -- Need to do this so that regress_rol_op3 is not allowed USAGE via PUBLIC SET ROLE regress_rol_op4; CREATE OPERATOR #*# ( leftarg = int8, rightarg = type_op4, procedure = fn_op4 ); ROLLBACK; -- Should fail. CREATE OPERATOR requires EXECUTE on function BEGIN TRANSACTION; CREATE ROLE regress_rol_op5; CREATE TYPE type_op5 AS ENUM ('new', 'open', 'closed'); CREATE FUNCTION fn_op5(int8, int8) RETURNS int8 AS $$ SELECT NULL::int8; $$ LANGUAGE sql IMMUTABLE; REVOKE EXECUTE ON FUNCTION fn_op5(int8, int8) FROM regress_rol_op5; REVOKE EXECUTE ON FUNCTION fn_op5(int8, int8) FROM PUBLIC;-- Need to do this so that regress_rol_op3 is not allowed EXECUTE via PUBLIC SET ROLE regress_rol_op5; CREATE OPERATOR #*# ( leftarg = int8, rightarg = int8, procedure = fn_op5 ); ROLLBACK; -- Should fail. CREATE OPERATOR requires USAGE on return TYPE BEGIN TRANSACTION; CREATE ROLE regress_rol_op6; CREATE TYPE type_op6 AS ENUM ('new', 'open', 'closed'); CREATE FUNCTION fn_op6(int8, int8) RETURNS type_op6 AS $$ SELECT NULL::type_op6; $$ LANGUAGE sql IMMUTABLE; REVOKE USAGE ON TYPE type_op6 FROM regress_rol_op6; REVOKE USAGE ON TYPE type_op6 FROM PUBLIC; -- Need to do this so that regress_rol_op3 is not allowed USAGE via PUBLIC SET ROLE regress_rol_op6; CREATE OPERATOR #*# ( leftarg = int8, rightarg = int8, procedure = fn_op6 ); ROLLBACK; -- invalid: non-lowercase quoted identifiers CREATE OPERATOR === ( "Leftarg" = box, "Rightarg" = box, "Procedure" = area_equal_function, "Commutator" = ===, "Negator" = !==, "Restrict" = area_restriction_function, "Join" = area_join_function, "Hashes", "Merges" ); libpg_query-13-2.1.0/test/sql/postgres_regress/create_procedure.sql000066400000000000000000000063011413137616400254750ustar00rootroot00000000000000CALL nonexistent(); -- error CALL random(); -- error CREATE FUNCTION cp_testfunc1(a int) RETURNS int LANGUAGE SQL AS $$ SELECT a $$; CREATE TABLE cp_test (a int, b text); CREATE PROCEDURE ptest1(x text) LANGUAGE SQL AS $$ INSERT INTO cp_test VALUES (1, x); $$; \df ptest1 SELECT pg_get_functiondef('ptest1'::regproc); -- show only normal functions \dfn public.*test*1 -- show only procedures \dfp public.*test*1 SELECT ptest1('x'); -- error CALL ptest1('a'); -- ok CALL ptest1('xy' || 'zzy'); -- ok, constant-folded arg CALL ptest1(substring(random()::numeric(20,15)::text, 1, 1)); -- ok, volatile arg SELECT * FROM cp_test ORDER BY b COLLATE "C"; CREATE PROCEDURE ptest2() LANGUAGE SQL AS $$ SELECT 5; $$; CALL ptest2(); -- nested CALL TRUNCATE cp_test; CREATE PROCEDURE ptest3(y text) LANGUAGE SQL AS $$ CALL ptest1(y); CALL ptest1($1); $$; CALL ptest3('b'); SELECT * FROM cp_test; -- output arguments CREATE PROCEDURE ptest4a(INOUT a int, INOUT b int) LANGUAGE SQL AS $$ SELECT 1, 2; $$; CALL ptest4a(NULL, NULL); CREATE PROCEDURE ptest4b(INOUT b int, INOUT a int) LANGUAGE SQL AS $$ CALL ptest4a(a, b); -- error, not supported $$; DROP PROCEDURE ptest4a; -- named and default parameters CREATE OR REPLACE PROCEDURE ptest5(a int, b text, c int default 100) LANGUAGE SQL AS $$ INSERT INTO cp_test VALUES(a, b); INSERT INTO cp_test VALUES(c, b); $$; TRUNCATE cp_test; CALL ptest5(10, 'Hello', 20); CALL ptest5(10, 'Hello'); CALL ptest5(10, b => 'Hello'); CALL ptest5(b => 'Hello', a => 10); SELECT * FROM cp_test; -- polymorphic types CREATE PROCEDURE ptest6(a int, b anyelement) LANGUAGE SQL AS $$ SELECT NULL::int; $$; CALL ptest6(1, 2); -- collation assignment CREATE PROCEDURE ptest7(a text, b text) LANGUAGE SQL AS $$ SELECT a = b; $$; CALL ptest7(least('a', 'b'), 'a'); -- various error cases CALL version(); -- error: not a procedure CALL sum(1); -- error: not a procedure CREATE PROCEDURE ptestx() LANGUAGE SQL WINDOW AS $$ INSERT INTO cp_test VALUES (1, 'a') $$; CREATE PROCEDURE ptestx() LANGUAGE SQL STRICT AS $$ INSERT INTO cp_test VALUES (1, 'a') $$; CREATE PROCEDURE ptestx(OUT a int) LANGUAGE SQL AS $$ INSERT INTO cp_test VALUES (1, 'a') $$; ALTER PROCEDURE ptest1(text) STRICT; ALTER FUNCTION ptest1(text) VOLATILE; -- error: not a function ALTER PROCEDURE cp_testfunc1(int) VOLATILE; -- error: not a procedure ALTER PROCEDURE nonexistent() VOLATILE; DROP FUNCTION ptest1(text); -- error: not a function DROP PROCEDURE cp_testfunc1(int); -- error: not a procedure DROP PROCEDURE nonexistent(); -- privileges CREATE USER regress_cp_user1; GRANT INSERT ON cp_test TO regress_cp_user1; REVOKE EXECUTE ON PROCEDURE ptest1(text) FROM PUBLIC; SET ROLE regress_cp_user1; CALL ptest1('a'); -- error RESET ROLE; GRANT EXECUTE ON PROCEDURE ptest1(text) TO regress_cp_user1; SET ROLE regress_cp_user1; CALL ptest1('a'); -- ok RESET ROLE; -- ROUTINE syntax ALTER ROUTINE cp_testfunc1(int) RENAME TO cp_testfunc1a; ALTER ROUTINE cp_testfunc1a RENAME TO cp_testfunc1; ALTER ROUTINE ptest1(text) RENAME TO ptest1a; ALTER ROUTINE ptest1a RENAME TO ptest1; DROP ROUTINE cp_testfunc1(int); -- cleanup DROP PROCEDURE ptest1; DROP PROCEDURE ptest2; DROP TABLE cp_test; DROP USER regress_cp_user1; libpg_query-13-2.1.0/test/sql/postgres_regress/create_table.sql000066400000000000000000001003571413137616400246020ustar00rootroot00000000000000-- -- CREATE_TABLE -- -- -- CLASS DEFINITIONS -- CREATE TABLE hobbies_r ( name text, person text ); CREATE TABLE equipment_r ( name text, hobby text ); CREATE TABLE onek ( unique1 int4, unique2 int4, two int4, four int4, ten int4, twenty int4, hundred int4, thousand int4, twothousand int4, fivethous int4, tenthous int4, odd int4, even int4, stringu1 name, stringu2 name, string4 name ); CREATE TABLE tenk1 ( unique1 int4, unique2 int4, two int4, four int4, ten int4, twenty int4, hundred int4, thousand int4, twothousand int4, fivethous int4, tenthous int4, odd int4, even int4, stringu1 name, stringu2 name, string4 name ); CREATE TABLE tenk2 ( unique1 int4, unique2 int4, two int4, four int4, ten int4, twenty int4, hundred int4, thousand int4, twothousand int4, fivethous int4, tenthous int4, odd int4, even int4, stringu1 name, stringu2 name, string4 name ); CREATE TABLE person ( name text, age int4, location point ); CREATE TABLE emp ( salary int4, manager name ) INHERITS (person); CREATE TABLE student ( gpa float8 ) INHERITS (person); CREATE TABLE stud_emp ( percent int4 ) INHERITS (emp, student); CREATE TABLE city ( name name, location box, budget city_budget ); CREATE TABLE dept ( dname name, mgrname text ); CREATE TABLE slow_emp4000 ( home_base box ); CREATE TABLE fast_emp4000 ( home_base box ); CREATE TABLE road ( name text, thepath path ); CREATE TABLE ihighway () INHERITS (road); CREATE TABLE shighway ( surface text ) INHERITS (road); CREATE TABLE real_city ( pop int4, cname text, outline path ); -- -- test the "star" operators a bit more thoroughly -- this time, -- throw in lots of NULL fields... -- -- a is the type root -- b and c inherit from a (one-level single inheritance) -- d inherits from b and c (two-level multiple inheritance) -- e inherits from c (two-level single inheritance) -- f inherits from e (three-level single inheritance) -- CREATE TABLE a_star ( class char, a int4 ); CREATE TABLE b_star ( b text ) INHERITS (a_star); CREATE TABLE c_star ( c name ) INHERITS (a_star); CREATE TABLE d_star ( d float8 ) INHERITS (b_star, c_star); CREATE TABLE e_star ( e int2 ) INHERITS (c_star); CREATE TABLE f_star ( f polygon ) INHERITS (e_star); CREATE TABLE aggtest ( a int2, b float4 ); CREATE TABLE hash_i4_heap ( seqno int4, random int4 ); CREATE TABLE hash_name_heap ( seqno int4, random name ); CREATE TABLE hash_txt_heap ( seqno int4, random text ); CREATE TABLE hash_f8_heap ( seqno int4, random float8 ); -- don't include the hash_ovfl_heap stuff in the distribution -- the data set is too large for what it's worth -- -- CREATE TABLE hash_ovfl_heap ( -- x int4, -- y int4 -- ); CREATE TABLE bt_i4_heap ( seqno int4, random int4 ); CREATE TABLE bt_name_heap ( seqno name, random int4 ); CREATE TABLE bt_txt_heap ( seqno text, random int4 ); CREATE TABLE bt_f8_heap ( seqno float8, random int4 ); CREATE TABLE array_op_test ( seqno int4, i int4[], t text[] ); CREATE TABLE array_index_op_test ( seqno int4, i int4[], t text[] ); CREATE TABLE testjsonb ( j jsonb ); CREATE TABLE unknowntab ( u unknown -- fail ); CREATE TYPE unknown_comptype AS ( u unknown -- fail ); CREATE TABLE IF NOT EXISTS test_tsvector( t text, a tsvector ); CREATE TABLE IF NOT EXISTS test_tsvector( t text ); -- invalid: non-lowercase quoted reloptions identifiers CREATE TABLE tas_case WITH ("Fillfactor" = 10) AS SELECT 1 a; CREATE UNLOGGED TABLE unlogged1 (a int primary key); -- OK CREATE TEMPORARY TABLE unlogged2 (a int primary key); -- OK SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^unlogged\d' ORDER BY relname; REINDEX INDEX unlogged1_pkey; REINDEX INDEX unlogged2_pkey; SELECT relname, relkind, relpersistence FROM pg_class WHERE relname ~ '^unlogged\d' ORDER BY relname; DROP TABLE unlogged2; INSERT INTO unlogged1 VALUES (42); CREATE UNLOGGED TABLE public.unlogged2 (a int primary key); -- also OK CREATE UNLOGGED TABLE pg_temp.unlogged3 (a int primary key); -- not OK CREATE TABLE pg_temp.implicitly_temp (a int primary key); -- OK CREATE TEMP TABLE explicitly_temp (a int primary key); -- also OK CREATE TEMP TABLE pg_temp.doubly_temp (a int primary key); -- also OK CREATE TEMP TABLE public.temp_to_perm (a int primary key); -- not OK DROP TABLE unlogged1, public.unlogged2; CREATE TABLE as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; CREATE TABLE as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; CREATE TABLE IF NOT EXISTS as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; DROP TABLE as_select1; PREPARE select1 AS SELECT 1 as a; CREATE TABLE as_select1 AS EXECUTE select1; CREATE TABLE as_select1 AS EXECUTE select1; SELECT * FROM as_select1; CREATE TABLE IF NOT EXISTS as_select1 AS EXECUTE select1; DROP TABLE as_select1; DEALLOCATE select1; -- create an extra wide table to test for issues related to that -- (temporarily hide query, to avoid the long CREATE TABLE stmt) \set ECHO none SELECT 'CREATE TABLE extra_wide_table(firstc text, '|| array_to_string(array_agg('c'||i||' bool'),',')||', lastc text);' FROM generate_series(1, 1100) g(i) \gexec \set ECHO all INSERT INTO extra_wide_table(firstc, lastc) VALUES('first col', 'last col'); SELECT firstc, lastc FROM extra_wide_table; -- check that tables with oids cannot be created anymore CREATE TABLE withoid() WITH OIDS; CREATE TABLE withoid() WITH (oids); CREATE TABLE withoid() WITH (oids = true); -- but explicitly not adding oids is still supported CREATE TEMP TABLE withoutoid() WITHOUT OIDS; DROP TABLE withoutoid; CREATE TEMP TABLE withoutoid() WITH (oids = false); DROP TABLE withoutoid; -- check restriction with default expressions -- invalid use of column reference in default expressions CREATE TABLE default_expr_column (id int DEFAULT (id)); CREATE TABLE default_expr_column (id int DEFAULT (bar.id)); CREATE TABLE default_expr_agg_column (id int DEFAULT (avg(id))); -- invalid column definition CREATE TABLE default_expr_non_column (a int DEFAULT (avg(non_existent))); -- invalid use of aggregate CREATE TABLE default_expr_agg (a int DEFAULT (avg(1))); -- invalid use of subquery CREATE TABLE default_expr_agg (a int DEFAULT (select 1)); -- invalid use of set-returning function CREATE TABLE default_expr_agg (a int DEFAULT (generate_series(1,3))); -- Verify that subtransaction rollback restores rd_createSubid. BEGIN; CREATE TABLE remember_create_subid (c int); SAVEPOINT q; DROP TABLE remember_create_subid; ROLLBACK TO q; COMMIT; DROP TABLE remember_create_subid; -- Verify that subtransaction rollback restores rd_firstRelfilenodeSubid. CREATE TABLE remember_node_subid (c int); BEGIN; ALTER TABLE remember_node_subid ALTER c TYPE bigint; SAVEPOINT q; DROP TABLE remember_node_subid; ROLLBACK TO q; COMMIT; DROP TABLE remember_node_subid; -- -- Partitioned tables -- -- cannot combine INHERITS and PARTITION BY (although grammar allows) CREATE TABLE partitioned ( a int ) INHERITS (some_table) PARTITION BY LIST (a); -- cannot use more than 1 column as partition key for list partitioned table CREATE TABLE partitioned ( a1 int, a2 int ) PARTITION BY LIST (a1, a2); -- fail -- unsupported constraint type for partitioned tables CREATE TABLE partitioned ( a int, EXCLUDE USING gist (a WITH &&) ) PARTITION BY RANGE (a); -- prevent using prohibited expressions in the key CREATE FUNCTION retset (a int) RETURNS SETOF int AS $$ SELECT 1; $$ LANGUAGE SQL IMMUTABLE; CREATE TABLE partitioned ( a int ) PARTITION BY RANGE (retset(a)); DROP FUNCTION retset(int); CREATE TABLE partitioned ( a int ) PARTITION BY RANGE ((avg(a))); CREATE TABLE partitioned ( a int, b int ) PARTITION BY RANGE ((avg(a) OVER (PARTITION BY b))); CREATE TABLE partitioned ( a int ) PARTITION BY LIST ((a LIKE (SELECT 1))); CREATE TABLE partitioned ( a int ) PARTITION BY RANGE ((42)); CREATE FUNCTION const_func () RETURNS int AS $$ SELECT 1; $$ LANGUAGE SQL IMMUTABLE; CREATE TABLE partitioned ( a int ) PARTITION BY RANGE (const_func()); DROP FUNCTION const_func(); -- only accept valid partitioning strategy CREATE TABLE partitioned ( a int ) PARTITION BY MAGIC (a); -- specified column must be present in the table CREATE TABLE partitioned ( a int ) PARTITION BY RANGE (b); -- cannot use system columns in partition key CREATE TABLE partitioned ( a int ) PARTITION BY RANGE (xmin); -- cannot use pseudotypes CREATE TABLE partitioned ( a int, b int ) PARTITION BY RANGE (((a, b))); CREATE TABLE partitioned ( a int, b int ) PARTITION BY RANGE (a, ('unknown')); -- functions in key must be immutable CREATE FUNCTION immut_func (a int) RETURNS int AS $$ SELECT a + random()::int; $$ LANGUAGE SQL; CREATE TABLE partitioned ( a int ) PARTITION BY RANGE (immut_func(a)); DROP FUNCTION immut_func(int); -- prevent using columns of unsupported types in key (type must have a btree operator class) CREATE TABLE partitioned ( a point ) PARTITION BY LIST (a); CREATE TABLE partitioned ( a point ) PARTITION BY LIST (a point_ops); CREATE TABLE partitioned ( a point ) PARTITION BY RANGE (a); CREATE TABLE partitioned ( a point ) PARTITION BY RANGE (a point_ops); -- cannot add NO INHERIT constraints to partitioned tables CREATE TABLE partitioned ( a int, CONSTRAINT check_a CHECK (a > 0) NO INHERIT ) PARTITION BY RANGE (a); -- some checks after successful creation of a partitioned table CREATE FUNCTION plusone(a int) RETURNS INT AS $$ SELECT a+1; $$ LANGUAGE SQL; CREATE TABLE partitioned ( a int, b int, c text, d text ) PARTITION BY RANGE (a oid_ops, plusone(b), c collate "default", d collate "C"); -- check relkind SELECT relkind FROM pg_class WHERE relname = 'partitioned'; -- prevent a function referenced in partition key from being dropped DROP FUNCTION plusone(int); -- partitioned table cannot participate in regular inheritance CREATE TABLE partitioned2 ( a int, b text ) PARTITION BY RANGE ((a+1), substr(b, 1, 5)); CREATE TABLE fail () INHERITS (partitioned2); -- Partition key in describe output \d partitioned \d+ partitioned2 INSERT INTO partitioned2 VALUES (1, 'hello'); CREATE TABLE part2_1 PARTITION OF partitioned2 FOR VALUES FROM (-1, 'aaaaa') TO (100, 'ccccc'); \d+ part2_1 DROP TABLE partitioned, partitioned2; -- check reference to partitioned table's rowtype in partition descriptor create table partitioned (a int, b int) partition by list ((row(a, b)::partitioned)); create table partitioned1 partition of partitioned for values in ('(1,2)'::partitioned); create table partitioned2 partition of partitioned for values in ('(2,4)'::partitioned); explain (costs off) select * from partitioned where row(a,b)::partitioned = '(1,2)'::partitioned; drop table partitioned; -- whole-row Var in partition key works too create table partitioned (a int, b int) partition by list ((partitioned)); create table partitioned1 partition of partitioned for values in ('(1,2)'); create table partitioned2 partition of partitioned for values in ('(2,4)'); explain (costs off) select * from partitioned where partitioned = '(1,2)'::partitioned; \d+ partitioned1 drop table partitioned; -- check that dependencies of partition columns are handled correctly create domain intdom1 as int; create table partitioned ( a intdom1, b text ) partition by range (a); alter table partitioned drop column a; -- fail drop domain intdom1; -- fail, requires cascade drop domain intdom1 cascade; table partitioned; -- gone -- likewise for columns used in partition expressions create domain intdom1 as int; create table partitioned ( a intdom1, b text ) partition by range (plusone(a)); alter table partitioned drop column a; -- fail drop domain intdom1; -- fail, requires cascade drop domain intdom1 cascade; table partitioned; -- gone -- -- Partitions -- -- check partition bound syntax CREATE TABLE list_parted ( a int ) PARTITION BY LIST (a); CREATE TABLE part_p1 PARTITION OF list_parted FOR VALUES IN ('1'); CREATE TABLE part_p2 PARTITION OF list_parted FOR VALUES IN (2); CREATE TABLE part_p3 PARTITION OF list_parted FOR VALUES IN ((2+1)); CREATE TABLE part_null PARTITION OF list_parted FOR VALUES IN (null); \d+ list_parted -- forbidden expressions for partition bound with list partitioned table CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (somename); CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (somename.somename); CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (a); CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (sum(a)); CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (sum(somename)); CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (sum(1)); CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN ((select 1)); CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN (generate_series(4, 6)); CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN ('1' collate "POSIX"); CREATE TABLE part_bogus_expr_fail PARTITION OF list_parted FOR VALUES IN ((1+1) collate "POSIX"); -- syntax does not allow empty list of values for list partitions CREATE TABLE fail_part PARTITION OF list_parted FOR VALUES IN (); -- trying to specify range for list partitioned table CREATE TABLE fail_part PARTITION OF list_parted FOR VALUES FROM (1) TO (2); -- trying to specify modulus and remainder for list partitioned table CREATE TABLE fail_part PARTITION OF list_parted FOR VALUES WITH (MODULUS 10, REMAINDER 1); -- check default partition cannot be created more than once CREATE TABLE part_default PARTITION OF list_parted DEFAULT; CREATE TABLE fail_default_part PARTITION OF list_parted DEFAULT; -- specified literal can't be cast to the partition column data type CREATE TABLE bools ( a bool ) PARTITION BY LIST (a); CREATE TABLE bools_true PARTITION OF bools FOR VALUES IN (1); DROP TABLE bools; -- specified literal can be cast, and the cast might not be immutable CREATE TABLE moneyp ( a money ) PARTITION BY LIST (a); CREATE TABLE moneyp_10 PARTITION OF moneyp FOR VALUES IN (10); CREATE TABLE moneyp_11 PARTITION OF moneyp FOR VALUES IN ('11'); CREATE TABLE moneyp_12 PARTITION OF moneyp FOR VALUES IN (to_char(12, '99')::int); DROP TABLE moneyp; -- cast is immutable CREATE TABLE bigintp ( a bigint ) PARTITION BY LIST (a); CREATE TABLE bigintp_10 PARTITION OF bigintp FOR VALUES IN (10); -- fails due to overlap: CREATE TABLE bigintp_10_2 PARTITION OF bigintp FOR VALUES IN ('10'); DROP TABLE bigintp; CREATE TABLE range_parted ( a date ) PARTITION BY RANGE (a); -- forbidden expressions for partition bounds with range partitioned table CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (somename) TO ('2019-01-01'); CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (somename.somename) TO ('2019-01-01'); CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (a) TO ('2019-01-01'); CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (max(a)) TO ('2019-01-01'); CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (max(somename)) TO ('2019-01-01'); CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (max('2019-02-01'::date)) TO ('2019-01-01'); CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM ((select 1)) TO ('2019-01-01'); CREATE TABLE part_bogus_expr_fail PARTITION OF range_parted FOR VALUES FROM (generate_series(1, 3)) TO ('2019-01-01'); -- trying to specify list for range partitioned table CREATE TABLE fail_part PARTITION OF range_parted FOR VALUES IN ('a'); -- trying to specify modulus and remainder for range partitioned table CREATE TABLE fail_part PARTITION OF range_parted FOR VALUES WITH (MODULUS 10, REMAINDER 1); -- each of start and end bounds must have same number of values as the -- length of the partition key CREATE TABLE fail_part PARTITION OF range_parted FOR VALUES FROM ('a', 1) TO ('z'); CREATE TABLE fail_part PARTITION OF range_parted FOR VALUES FROM ('a') TO ('z', 1); -- cannot specify null values in range bounds CREATE TABLE fail_part PARTITION OF range_parted FOR VALUES FROM (null) TO (maxvalue); -- trying to specify modulus and remainder for range partitioned table CREATE TABLE fail_part PARTITION OF range_parted FOR VALUES WITH (MODULUS 10, REMAINDER 1); -- check partition bound syntax for the hash partition CREATE TABLE hash_parted ( a int ) PARTITION BY HASH (a); CREATE TABLE hpart_1 PARTITION OF hash_parted FOR VALUES WITH (MODULUS 10, REMAINDER 0); CREATE TABLE hpart_2 PARTITION OF hash_parted FOR VALUES WITH (MODULUS 50, REMAINDER 1); CREATE TABLE hpart_3 PARTITION OF hash_parted FOR VALUES WITH (MODULUS 200, REMAINDER 2); -- modulus 25 is factor of modulus of 50 but 10 is not factor of 25. CREATE TABLE fail_part PARTITION OF hash_parted FOR VALUES WITH (MODULUS 25, REMAINDER 3); -- previous modulus 50 is factor of 150 but this modulus is not factor of next modulus 200. CREATE TABLE fail_part PARTITION OF hash_parted FOR VALUES WITH (MODULUS 150, REMAINDER 3); -- trying to specify range for the hash partitioned table CREATE TABLE fail_part PARTITION OF hash_parted FOR VALUES FROM ('a', 1) TO ('z'); -- trying to specify list value for the hash partitioned table CREATE TABLE fail_part PARTITION OF hash_parted FOR VALUES IN (1000); -- trying to create default partition for the hash partitioned table CREATE TABLE fail_default_part PARTITION OF hash_parted DEFAULT; -- check if compatible with the specified parent -- cannot create as partition of a non-partitioned table CREATE TABLE unparted ( a int ); CREATE TABLE fail_part PARTITION OF unparted FOR VALUES IN ('a'); CREATE TABLE fail_part PARTITION OF unparted FOR VALUES WITH (MODULUS 2, REMAINDER 1); DROP TABLE unparted; -- cannot create a permanent rel as partition of a temp rel CREATE TEMP TABLE temp_parted ( a int ) PARTITION BY LIST (a); CREATE TABLE fail_part PARTITION OF temp_parted FOR VALUES IN ('a'); DROP TABLE temp_parted; -- check for partition bound overlap and other invalid specifications CREATE TABLE list_parted2 ( a varchar ) PARTITION BY LIST (a); CREATE TABLE part_null_z PARTITION OF list_parted2 FOR VALUES IN (null, 'z'); CREATE TABLE part_ab PARTITION OF list_parted2 FOR VALUES IN ('a', 'b'); CREATE TABLE list_parted2_def PARTITION OF list_parted2 DEFAULT; CREATE TABLE fail_part PARTITION OF list_parted2 FOR VALUES IN (null); CREATE TABLE fail_part PARTITION OF list_parted2 FOR VALUES IN ('b', 'c'); -- check default partition overlap INSERT INTO list_parted2 VALUES('X'); CREATE TABLE fail_part PARTITION OF list_parted2 FOR VALUES IN ('W', 'X', 'Y'); CREATE TABLE range_parted2 ( a int ) PARTITION BY RANGE (a); -- trying to create range partition with empty range CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (1) TO (0); -- note that the range '[1, 1)' has no elements CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (1) TO (1); CREATE TABLE part0 PARTITION OF range_parted2 FOR VALUES FROM (minvalue) TO (1); CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (minvalue) TO (2); CREATE TABLE part1 PARTITION OF range_parted2 FOR VALUES FROM (1) TO (10); CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (9) TO (maxvalue); CREATE TABLE part2 PARTITION OF range_parted2 FOR VALUES FROM (20) TO (30); CREATE TABLE part3 PARTITION OF range_parted2 FOR VALUES FROM (30) TO (40); CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (10) TO (30); CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (10) TO (50); -- Create a default partition for range partitioned table CREATE TABLE range2_default PARTITION OF range_parted2 DEFAULT; -- More than one default partition is not allowed, so this should give error CREATE TABLE fail_default_part PARTITION OF range_parted2 DEFAULT; -- Check if the range for default partitions overlap INSERT INTO range_parted2 VALUES (85); CREATE TABLE fail_part PARTITION OF range_parted2 FOR VALUES FROM (80) TO (90); CREATE TABLE part4 PARTITION OF range_parted2 FOR VALUES FROM (90) TO (100); -- now check for multi-column range partition key CREATE TABLE range_parted3 ( a int, b int ) PARTITION BY RANGE (a, (b+1)); CREATE TABLE part00 PARTITION OF range_parted3 FOR VALUES FROM (0, minvalue) TO (0, maxvalue); CREATE TABLE fail_part PARTITION OF range_parted3 FOR VALUES FROM (0, minvalue) TO (0, 1); CREATE TABLE part10 PARTITION OF range_parted3 FOR VALUES FROM (1, minvalue) TO (1, 1); CREATE TABLE part11 PARTITION OF range_parted3 FOR VALUES FROM (1, 1) TO (1, 10); CREATE TABLE part12 PARTITION OF range_parted3 FOR VALUES FROM (1, 10) TO (1, maxvalue); CREATE TABLE fail_part PARTITION OF range_parted3 FOR VALUES FROM (1, 10) TO (1, 20); CREATE TABLE range3_default PARTITION OF range_parted3 DEFAULT; -- cannot create a partition that says column b is allowed to range -- from -infinity to +infinity, while there exist partitions that have -- more specific ranges CREATE TABLE fail_part PARTITION OF range_parted3 FOR VALUES FROM (1, minvalue) TO (1, maxvalue); -- check for partition bound overlap and other invalid specifications for the hash partition CREATE TABLE hash_parted2 ( a varchar ) PARTITION BY HASH (a); CREATE TABLE h2part_1 PARTITION OF hash_parted2 FOR VALUES WITH (MODULUS 4, REMAINDER 2); CREATE TABLE h2part_2 PARTITION OF hash_parted2 FOR VALUES WITH (MODULUS 8, REMAINDER 0); CREATE TABLE h2part_3 PARTITION OF hash_parted2 FOR VALUES WITH (MODULUS 8, REMAINDER 4); CREATE TABLE h2part_4 PARTITION OF hash_parted2 FOR VALUES WITH (MODULUS 8, REMAINDER 5); -- overlap with part_4 CREATE TABLE fail_part PARTITION OF hash_parted2 FOR VALUES WITH (MODULUS 2, REMAINDER 1); -- modulus must be greater than zero CREATE TABLE fail_part PARTITION OF hash_parted2 FOR VALUES WITH (MODULUS 0, REMAINDER 1); -- remainder must be greater than or equal to zero and less than modulus CREATE TABLE fail_part PARTITION OF hash_parted2 FOR VALUES WITH (MODULUS 8, REMAINDER 8); -- check schema propagation from parent CREATE TABLE parted ( a text, b int NOT NULL DEFAULT 0, CONSTRAINT check_a CHECK (length(a) > 0) ) PARTITION BY LIST (a); CREATE TABLE part_a PARTITION OF parted FOR VALUES IN ('a'); -- only inherited attributes (never local ones) SELECT attname, attislocal, attinhcount FROM pg_attribute WHERE attrelid = 'part_a'::regclass and attnum > 0 ORDER BY attnum; -- able to specify column default, column constraint, and table constraint -- first check the "column specified more than once" error CREATE TABLE part_b PARTITION OF parted ( b NOT NULL, b DEFAULT 1, b CHECK (b >= 0), CONSTRAINT check_a CHECK (length(a) > 0) ) FOR VALUES IN ('b'); CREATE TABLE part_b PARTITION OF parted ( b NOT NULL DEFAULT 1, CONSTRAINT check_a CHECK (length(a) > 0), CONSTRAINT check_b CHECK (b >= 0) ) FOR VALUES IN ('b'); -- conislocal should be false for any merged constraints, true otherwise SELECT conislocal, coninhcount FROM pg_constraint WHERE conrelid = 'part_b'::regclass ORDER BY conislocal, coninhcount; -- Once check_b is added to the parent, it should be made non-local for part_b ALTER TABLE parted ADD CONSTRAINT check_b CHECK (b >= 0); SELECT conislocal, coninhcount FROM pg_constraint WHERE conrelid = 'part_b'::regclass; -- Neither check_a nor check_b are droppable from part_b ALTER TABLE part_b DROP CONSTRAINT check_a; ALTER TABLE part_b DROP CONSTRAINT check_b; -- And dropping it from parted should leave no trace of them on part_b, unlike -- traditional inheritance where they will be left behind, because they would -- be local constraints. ALTER TABLE parted DROP CONSTRAINT check_a, DROP CONSTRAINT check_b; SELECT conislocal, coninhcount FROM pg_constraint WHERE conrelid = 'part_b'::regclass; -- specify PARTITION BY for a partition CREATE TABLE fail_part_col_not_found PARTITION OF parted FOR VALUES IN ('c') PARTITION BY RANGE (c); CREATE TABLE part_c PARTITION OF parted (b WITH OPTIONS NOT NULL DEFAULT 0) FOR VALUES IN ('c') PARTITION BY RANGE ((b)); -- create a level-2 partition CREATE TABLE part_c_1_10 PARTITION OF part_c FOR VALUES FROM (1) TO (10); -- check that NOT NULL and default value are inherited correctly create table parted_notnull_inh_test (a int default 1, b int not null default 0) partition by list (a); create table parted_notnull_inh_test1 partition of parted_notnull_inh_test (a not null, b default 1) for values in (1); insert into parted_notnull_inh_test (b) values (null); -- note that while b's default is overriden, a's default is preserved \d parted_notnull_inh_test1 drop table parted_notnull_inh_test; -- check that collations are assigned in partition bound expressions create table parted_boolean_col (a bool, b text) partition by list(a); create table parted_boolean_less partition of parted_boolean_col for values in ('foo' < 'bar'); create table parted_boolean_greater partition of parted_boolean_col for values in ('foo' > 'bar'); drop table parted_boolean_col; -- check for a conflicting COLLATE clause create table parted_collate_must_match (a text collate "C", b text collate "C") partition by range (a); -- on the partition key create table parted_collate_must_match1 partition of parted_collate_must_match (a collate "POSIX") for values from ('a') to ('m'); -- on another column create table parted_collate_must_match2 partition of parted_collate_must_match (b collate "POSIX") for values from ('m') to ('z'); drop table parted_collate_must_match; -- check that specifying incompatible collations for partition bound -- expressions fails promptly create table test_part_coll_posix (a text) partition by range (a collate "POSIX"); -- fail create table test_part_coll partition of test_part_coll_posix for values from ('a' collate "C") to ('g'); -- ok create table test_part_coll partition of test_part_coll_posix for values from ('a' collate "POSIX") to ('g'); -- ok create table test_part_coll2 partition of test_part_coll_posix for values from ('g') to ('m'); -- using a cast expression uses the target type's default collation -- fail create table test_part_coll_cast partition of test_part_coll_posix for values from (name 'm' collate "C") to ('s'); -- ok create table test_part_coll_cast partition of test_part_coll_posix for values from (name 'm' collate "POSIX") to ('s'); -- ok; partition collation silently overrides the default collation of type 'name' create table test_part_coll_cast2 partition of test_part_coll_posix for values from (name 's') to ('z'); drop table test_part_coll_posix; -- Partition bound in describe output \d+ part_b -- Both partition bound and partition key in describe output \d+ part_c -- a level-2 partition's constraint will include the parent's expressions \d+ part_c_1_10 -- Show partition count in the parent's describe output -- Tempted to include \d+ output listing partitions with bound info but -- output could vary depending on the order in which partition oids are -- returned. \d parted \d hash_parted -- check that we get the expected partition constraints CREATE TABLE range_parted4 (a int, b int, c int) PARTITION BY RANGE (abs(a), abs(b), c); CREATE TABLE unbounded_range_part PARTITION OF range_parted4 FOR VALUES FROM (MINVALUE, MINVALUE, MINVALUE) TO (MAXVALUE, MAXVALUE, MAXVALUE); \d+ unbounded_range_part DROP TABLE unbounded_range_part; CREATE TABLE range_parted4_1 PARTITION OF range_parted4 FOR VALUES FROM (MINVALUE, MINVALUE, MINVALUE) TO (1, MAXVALUE, MAXVALUE); \d+ range_parted4_1 CREATE TABLE range_parted4_2 PARTITION OF range_parted4 FOR VALUES FROM (3, 4, 5) TO (6, 7, MAXVALUE); \d+ range_parted4_2 CREATE TABLE range_parted4_3 PARTITION OF range_parted4 FOR VALUES FROM (6, 8, MINVALUE) TO (9, MAXVALUE, MAXVALUE); \d+ range_parted4_3 DROP TABLE range_parted4; -- user-defined operator class in partition key CREATE FUNCTION my_int4_sort(int4,int4) RETURNS int LANGUAGE sql AS $$ SELECT CASE WHEN $1 = $2 THEN 0 WHEN $1 > $2 THEN 1 ELSE -1 END; $$; CREATE OPERATOR CLASS test_int4_ops FOR TYPE int4 USING btree AS OPERATOR 1 < (int4,int4), OPERATOR 2 <= (int4,int4), OPERATOR 3 = (int4,int4), OPERATOR 4 >= (int4,int4), OPERATOR 5 > (int4,int4), FUNCTION 1 my_int4_sort(int4,int4); CREATE TABLE partkey_t (a int4) PARTITION BY RANGE (a test_int4_ops); CREATE TABLE partkey_t_1 PARTITION OF partkey_t FOR VALUES FROM (0) TO (1000); INSERT INTO partkey_t VALUES (100); INSERT INTO partkey_t VALUES (200); -- cleanup DROP TABLE parted, list_parted, range_parted, list_parted2, range_parted2, range_parted3; DROP TABLE partkey_t, hash_parted, hash_parted2; DROP OPERATOR CLASS test_int4_ops USING btree; DROP FUNCTION my_int4_sort(int4,int4); -- comments on partitioned tables columns CREATE TABLE parted_col_comment (a int, b text) PARTITION BY LIST (a); COMMENT ON TABLE parted_col_comment IS 'Am partitioned table'; COMMENT ON COLUMN parted_col_comment.a IS 'Partition key'; SELECT obj_description('parted_col_comment'::regclass); \d+ parted_col_comment DROP TABLE parted_col_comment; -- list partitioning on array type column CREATE TABLE arrlp (a int[]) PARTITION BY LIST (a); CREATE TABLE arrlp12 PARTITION OF arrlp FOR VALUES IN ('{1}', '{2}'); \d+ arrlp12 DROP TABLE arrlp; -- partition on boolean column create table boolspart (a bool) partition by list (a); create table boolspart_t partition of boolspart for values in (true); create table boolspart_f partition of boolspart for values in (false); \d+ boolspart drop table boolspart; -- partitions mixing temporary and permanent relations create table perm_parted (a int) partition by list (a); create temporary table temp_parted (a int) partition by list (a); create table perm_part partition of temp_parted default; -- error create temp table temp_part partition of perm_parted default; -- error create temp table temp_part partition of temp_parted default; -- ok drop table perm_parted cascade; drop table temp_parted cascade; -- check that adding partitions to a table while it is being used is prevented create table tab_part_create (a int) partition by list (a); create or replace function func_part_create() returns trigger language plpgsql as $$ begin execute 'create table tab_part_create_1 partition of tab_part_create for values in (1)'; return null; end $$; create trigger trig_part_create before insert on tab_part_create for each statement execute procedure func_part_create(); insert into tab_part_create values (1); drop table tab_part_create; drop function func_part_create(); -- test using a volatile expression as partition bound create table volatile_partbound_test (partkey timestamp) partition by range (partkey); create table volatile_partbound_test1 partition of volatile_partbound_test for values from (minvalue) to (current_timestamp); create table volatile_partbound_test2 partition of volatile_partbound_test for values from (current_timestamp) to (maxvalue); -- this should go into the partition volatile_partbound_test2 insert into volatile_partbound_test values (current_timestamp); select tableoid::regclass from volatile_partbound_test; drop table volatile_partbound_test; -- test the case where a check constraint on default partition allows -- to avoid scanning it when adding a new partition create table defcheck (a int, b int) partition by list (b); create table defcheck_def (a int, c int, b int); alter table defcheck_def drop c; alter table defcheck attach partition defcheck_def default; alter table defcheck_def add check (b <= 0 and b is not null); create table defcheck_1 partition of defcheck for values in (1, null); -- test that complex default partition constraints are enforced correctly insert into defcheck_def values (0, 0); create table defcheck_0 partition of defcheck for values in (0); drop table defcheck; -- tests of column drop with partition tables and indexes using -- predicates and expressions. create table part_column_drop ( useless_1 int, id int, useless_2 int, d int, b int, useless_3 int ) partition by range (id); alter table part_column_drop drop column useless_1; alter table part_column_drop drop column useless_2; alter table part_column_drop drop column useless_3; create index part_column_drop_b_pred on part_column_drop(b) where b = 1; create index part_column_drop_b_expr on part_column_drop((b = 1)); create index part_column_drop_d_pred on part_column_drop(d) where d = 2; create index part_column_drop_d_expr on part_column_drop((d = 2)); create table part_column_drop_1_10 partition of part_column_drop for values from (1) to (10); \d part_column_drop \d part_column_drop_1_10 drop table part_column_drop; libpg_query-13-2.1.0/test/sql/postgres_regress/create_table_like.sql000066400000000000000000000213741413137616400256070ustar00rootroot00000000000000/* Test inheritance of structure (LIKE) */ CREATE TABLE inhx (xx text DEFAULT 'text'); /* * Test double inheritance * * Ensure that defaults are NOT included unless * INCLUDING DEFAULTS is specified */ CREATE TABLE ctla (aa TEXT); CREATE TABLE ctlb (bb TEXT) INHERITS (ctla); CREATE TABLE foo (LIKE nonexistent); CREATE TABLE inhe (ee text, LIKE inhx) inherits (ctlb); INSERT INTO inhe VALUES ('ee-col1', 'ee-col2', DEFAULT, 'ee-col4'); SELECT * FROM inhe; /* Columns aa, bb, xx value NULL, ee */ SELECT * FROM inhx; /* Empty set since LIKE inherits structure only */ SELECT * FROM ctlb; /* Has ee entry */ SELECT * FROM ctla; /* Has ee entry */ CREATE TABLE inhf (LIKE inhx, LIKE inhx); /* Throw error */ CREATE TABLE inhf (LIKE inhx INCLUDING DEFAULTS INCLUDING CONSTRAINTS); INSERT INTO inhf DEFAULT VALUES; SELECT * FROM inhf; /* Single entry with value 'text' */ ALTER TABLE inhx add constraint foo CHECK (xx = 'text'); ALTER TABLE inhx ADD PRIMARY KEY (xx); CREATE TABLE inhg (LIKE inhx); /* Doesn't copy constraint */ INSERT INTO inhg VALUES ('foo'); DROP TABLE inhg; CREATE TABLE inhg (x text, LIKE inhx INCLUDING CONSTRAINTS, y text); /* Copies constraints */ INSERT INTO inhg VALUES ('x', 'text', 'y'); /* Succeeds */ INSERT INTO inhg VALUES ('x', 'text', 'y'); /* Succeeds -- Unique constraints not copied */ INSERT INTO inhg VALUES ('x', 'foo', 'y'); /* fails due to constraint */ SELECT * FROM inhg; /* Two records with three columns in order x=x, xx=text, y=y */ DROP TABLE inhg; CREATE TABLE test_like_id_1 (a bigint GENERATED ALWAYS AS IDENTITY, b text); \d test_like_id_1 INSERT INTO test_like_id_1 (b) VALUES ('b1'); SELECT * FROM test_like_id_1; CREATE TABLE test_like_id_2 (LIKE test_like_id_1); \d test_like_id_2 INSERT INTO test_like_id_2 (b) VALUES ('b2'); SELECT * FROM test_like_id_2; -- identity was not copied CREATE TABLE test_like_id_3 (LIKE test_like_id_1 INCLUDING IDENTITY); \d test_like_id_3 INSERT INTO test_like_id_3 (b) VALUES ('b3'); SELECT * FROM test_like_id_3; -- identity was copied and applied DROP TABLE test_like_id_1, test_like_id_2, test_like_id_3; CREATE TABLE test_like_gen_1 (a int, b int GENERATED ALWAYS AS (a * 2) STORED); \d test_like_gen_1 INSERT INTO test_like_gen_1 (a) VALUES (1); SELECT * FROM test_like_gen_1; CREATE TABLE test_like_gen_2 (LIKE test_like_gen_1); \d test_like_gen_2 INSERT INTO test_like_gen_2 (a) VALUES (1); SELECT * FROM test_like_gen_2; CREATE TABLE test_like_gen_3 (LIKE test_like_gen_1 INCLUDING GENERATED); \d test_like_gen_3 INSERT INTO test_like_gen_3 (a) VALUES (1); SELECT * FROM test_like_gen_3; DROP TABLE test_like_gen_1, test_like_gen_2, test_like_gen_3; -- also test generated column with a "forward" reference (bug #16342) CREATE TABLE test_like_4 (b int DEFAULT 42, c int GENERATED ALWAYS AS (a * 2) STORED, a int CHECK (a > 0)); \d test_like_4 CREATE TABLE test_like_4a (LIKE test_like_4); CREATE TABLE test_like_4b (LIKE test_like_4 INCLUDING DEFAULTS); CREATE TABLE test_like_4c (LIKE test_like_4 INCLUDING GENERATED); CREATE TABLE test_like_4d (LIKE test_like_4 INCLUDING DEFAULTS INCLUDING GENERATED); \d test_like_4a INSERT INTO test_like_4a (a) VALUES(11); SELECT a, b, c FROM test_like_4a; \d test_like_4b INSERT INTO test_like_4b (a) VALUES(11); SELECT a, b, c FROM test_like_4b; \d test_like_4c INSERT INTO test_like_4c (a) VALUES(11); SELECT a, b, c FROM test_like_4c; \d test_like_4d INSERT INTO test_like_4d (a) VALUES(11); SELECT a, b, c FROM test_like_4d; -- Test renumbering of Vars when combining LIKE with inheritance CREATE TABLE test_like_5 (x point, y point, z point); CREATE TABLE test_like_5x (p int CHECK (p > 0), q int GENERATED ALWAYS AS (p * 2) STORED); CREATE TABLE test_like_5c (LIKE test_like_4 INCLUDING ALL) INHERITS (test_like_5, test_like_5x); \d test_like_5c DROP TABLE test_like_4, test_like_4a, test_like_4b, test_like_4c, test_like_4d; DROP TABLE test_like_5, test_like_5x, test_like_5c; CREATE TABLE inhg (x text, LIKE inhx INCLUDING INDEXES, y text); /* copies indexes */ INSERT INTO inhg VALUES (5, 10); INSERT INTO inhg VALUES (20, 10); -- should fail DROP TABLE inhg; /* Multiple primary keys creation should fail */ CREATE TABLE inhg (x text, LIKE inhx INCLUDING INDEXES, PRIMARY KEY(x)); /* fails */ CREATE TABLE inhz (xx text DEFAULT 'text', yy int UNIQUE); CREATE UNIQUE INDEX inhz_xx_idx on inhz (xx) WHERE xx <> 'test'; /* Ok to create multiple unique indexes */ CREATE TABLE inhg (x text UNIQUE, LIKE inhz INCLUDING INDEXES); INSERT INTO inhg (xx, yy, x) VALUES ('test', 5, 10); INSERT INTO inhg (xx, yy, x) VALUES ('test', 10, 15); INSERT INTO inhg (xx, yy, x) VALUES ('foo', 10, 15); -- should fail DROP TABLE inhg; DROP TABLE inhz; /* Use primary key imported by LIKE for self-referential FK constraint */ CREATE TABLE inhz (x text REFERENCES inhz, LIKE inhx INCLUDING INDEXES); \d inhz DROP TABLE inhz; -- including storage and comments CREATE TABLE ctlt1 (a text CHECK (length(a) > 2) PRIMARY KEY, b text); CREATE INDEX ctlt1_b_key ON ctlt1 (b); CREATE INDEX ctlt1_fnidx ON ctlt1 ((a || b)); CREATE STATISTICS ctlt1_a_b_stat ON a,b FROM ctlt1; COMMENT ON STATISTICS ctlt1_a_b_stat IS 'ab stats'; COMMENT ON COLUMN ctlt1.a IS 'A'; COMMENT ON COLUMN ctlt1.b IS 'B'; COMMENT ON CONSTRAINT ctlt1_a_check ON ctlt1 IS 't1_a_check'; COMMENT ON INDEX ctlt1_pkey IS 'index pkey'; COMMENT ON INDEX ctlt1_b_key IS 'index b_key'; ALTER TABLE ctlt1 ALTER COLUMN a SET STORAGE MAIN; CREATE TABLE ctlt2 (c text); ALTER TABLE ctlt2 ALTER COLUMN c SET STORAGE EXTERNAL; COMMENT ON COLUMN ctlt2.c IS 'C'; CREATE TABLE ctlt3 (a text CHECK (length(a) < 5), c text CHECK (length(c) < 7)); ALTER TABLE ctlt3 ALTER COLUMN c SET STORAGE EXTERNAL; ALTER TABLE ctlt3 ALTER COLUMN a SET STORAGE MAIN; CREATE INDEX ctlt3_fnidx ON ctlt3 ((a || c)); COMMENT ON COLUMN ctlt3.a IS 'A3'; COMMENT ON COLUMN ctlt3.c IS 'C'; COMMENT ON CONSTRAINT ctlt3_a_check ON ctlt3 IS 't3_a_check'; CREATE TABLE ctlt4 (a text, c text); ALTER TABLE ctlt4 ALTER COLUMN c SET STORAGE EXTERNAL; CREATE TABLE ctlt12_storage (LIKE ctlt1 INCLUDING STORAGE, LIKE ctlt2 INCLUDING STORAGE); \d+ ctlt12_storage CREATE TABLE ctlt12_comments (LIKE ctlt1 INCLUDING COMMENTS, LIKE ctlt2 INCLUDING COMMENTS); \d+ ctlt12_comments CREATE TABLE ctlt1_inh (LIKE ctlt1 INCLUDING CONSTRAINTS INCLUDING COMMENTS) INHERITS (ctlt1); \d+ ctlt1_inh SELECT description FROM pg_description, pg_constraint c WHERE classoid = 'pg_constraint'::regclass AND objoid = c.oid AND c.conrelid = 'ctlt1_inh'::regclass; CREATE TABLE ctlt13_inh () INHERITS (ctlt1, ctlt3); \d+ ctlt13_inh CREATE TABLE ctlt13_like (LIKE ctlt3 INCLUDING CONSTRAINTS INCLUDING INDEXES INCLUDING COMMENTS INCLUDING STORAGE) INHERITS (ctlt1); \d+ ctlt13_like SELECT description FROM pg_description, pg_constraint c WHERE classoid = 'pg_constraint'::regclass AND objoid = c.oid AND c.conrelid = 'ctlt13_like'::regclass; CREATE TABLE ctlt_all (LIKE ctlt1 INCLUDING ALL); \d+ ctlt_all SELECT c.relname, objsubid, description FROM pg_description, pg_index i, pg_class c WHERE classoid = 'pg_class'::regclass AND objoid = i.indexrelid AND c.oid = i.indexrelid AND i.indrelid = 'ctlt_all'::regclass ORDER BY c.relname, objsubid; SELECT s.stxname, objsubid, description FROM pg_description, pg_statistic_ext s WHERE classoid = 'pg_statistic_ext'::regclass AND objoid = s.oid AND s.stxrelid = 'ctlt_all'::regclass ORDER BY s.stxname, objsubid; CREATE TABLE inh_error1 () INHERITS (ctlt1, ctlt4); CREATE TABLE inh_error2 (LIKE ctlt4 INCLUDING STORAGE) INHERITS (ctlt1); -- Check that LIKE isn't confused by a system catalog of the same name CREATE TABLE pg_attrdef (LIKE ctlt1 INCLUDING ALL); \d+ public.pg_attrdef DROP TABLE public.pg_attrdef; -- Check that LIKE isn't confused when new table masks the old, either BEGIN; CREATE SCHEMA ctl_schema; SET LOCAL search_path = ctl_schema, public; CREATE TABLE ctlt1 (LIKE ctlt1 INCLUDING ALL); \d+ ctlt1 ROLLBACK; DROP TABLE ctlt1, ctlt2, ctlt3, ctlt4, ctlt12_storage, ctlt12_comments, ctlt1_inh, ctlt13_inh, ctlt13_like, ctlt_all, ctla, ctlb CASCADE; -- LIKE must respect NO INHERIT property of constraints CREATE TABLE noinh_con_copy (a int CHECK (a > 0) NO INHERIT); CREATE TABLE noinh_con_copy1 (LIKE noinh_con_copy INCLUDING CONSTRAINTS); \d noinh_con_copy1 -- fail, as partitioned tables don't allow NO INHERIT constraints CREATE TABLE noinh_con_copy1_parted (LIKE noinh_con_copy INCLUDING ALL) PARTITION BY LIST (a); DROP TABLE noinh_con_copy, noinh_con_copy1; /* LIKE with other relation kinds */ CREATE TABLE ctlt4 (a int, b text); CREATE SEQUENCE ctlseq1; CREATE TABLE ctlt10 (LIKE ctlseq1); -- fail CREATE VIEW ctlv1 AS SELECT * FROM ctlt4; CREATE TABLE ctlt11 (LIKE ctlv1); CREATE TABLE ctlt11a (LIKE ctlv1 INCLUDING ALL); CREATE TYPE ctlty1 AS (a int, b text); CREATE TABLE ctlt12 (LIKE ctlty1); DROP SEQUENCE ctlseq1; DROP TYPE ctlty1; DROP VIEW ctlv1; DROP TABLE IF EXISTS ctlt4, ctlt10, ctlt11, ctlt11a, ctlt12; libpg_query-13-2.1.0/test/sql/postgres_regress/create_type.sql000066400000000000000000000150541413137616400244730ustar00rootroot00000000000000-- -- CREATE_TYPE -- -- -- Note: widget_in/out were created in create_function_1, without any -- prior shell-type creation. These commands therefore complete a test -- of the "old style" approach of making the functions first. -- CREATE TYPE widget ( internallength = 24, input = widget_in, output = widget_out, typmod_in = numerictypmodin, typmod_out = numerictypmodout, alignment = double ); CREATE TYPE city_budget ( internallength = 16, input = int44in, output = int44out, element = int4, category = 'x', -- just to verify the system will take it preferred = true -- ditto ); -- Test creation and destruction of shell types CREATE TYPE shell; CREATE TYPE shell; -- fail, type already present DROP TYPE shell; DROP TYPE shell; -- fail, type not exist -- also, let's leave one around for purposes of pg_dump testing CREATE TYPE myshell; -- -- Test type-related default values (broken in releases before PG 7.2) -- -- This part of the test also exercises the "new style" approach of making -- a shell type and then filling it in. -- CREATE TYPE int42; CREATE TYPE text_w_default; -- Make dummy I/O routines using the existing internal support for int4, text CREATE FUNCTION int42_in(cstring) RETURNS int42 AS 'int4in' LANGUAGE internal STRICT IMMUTABLE; CREATE FUNCTION int42_out(int42) RETURNS cstring AS 'int4out' LANGUAGE internal STRICT IMMUTABLE; CREATE FUNCTION text_w_default_in(cstring) RETURNS text_w_default AS 'textin' LANGUAGE internal STRICT IMMUTABLE; CREATE FUNCTION text_w_default_out(text_w_default) RETURNS cstring AS 'textout' LANGUAGE internal STRICT IMMUTABLE; CREATE TYPE int42 ( internallength = 4, input = int42_in, output = int42_out, alignment = int4, default = 42, passedbyvalue ); CREATE TYPE text_w_default ( internallength = variable, input = text_w_default_in, output = text_w_default_out, alignment = int4, default = 'zippo' ); CREATE TABLE default_test (f1 text_w_default, f2 int42); INSERT INTO default_test DEFAULT VALUES; SELECT * FROM default_test; -- We need a shell type to test some CREATE TYPE failure cases with CREATE TYPE bogus_type; -- invalid: non-lowercase quoted identifiers CREATE TYPE bogus_type ( "Internallength" = 4, "Input" = int42_in, "Output" = int42_out, "Alignment" = int4, "Default" = 42, "Passedbyvalue" ); -- invalid: input/output function incompatibility CREATE TYPE bogus_type (INPUT = array_in, OUTPUT = array_out, ELEMENT = int, INTERNALLENGTH = 32); DROP TYPE bogus_type; -- It no longer is possible to issue CREATE TYPE without making a shell first CREATE TYPE bogus_type (INPUT = array_in, OUTPUT = array_out, ELEMENT = int, INTERNALLENGTH = 32); -- Test stand-alone composite type CREATE TYPE default_test_row AS (f1 text_w_default, f2 int42); CREATE FUNCTION get_default_test() RETURNS SETOF default_test_row AS ' SELECT * FROM default_test; ' LANGUAGE SQL; SELECT * FROM get_default_test(); -- Test comments COMMENT ON TYPE bad IS 'bad comment'; COMMENT ON TYPE default_test_row IS 'good comment'; COMMENT ON TYPE default_test_row IS NULL; COMMENT ON COLUMN default_test_row.nope IS 'bad comment'; COMMENT ON COLUMN default_test_row.f1 IS 'good comment'; COMMENT ON COLUMN default_test_row.f1 IS NULL; -- Check shell type create for existing types CREATE TYPE text_w_default; -- should fail DROP TYPE default_test_row CASCADE; DROP TABLE default_test; -- Check dependencies are established when creating a new type CREATE TYPE base_type; CREATE FUNCTION base_fn_in(cstring) RETURNS base_type AS 'boolin' LANGUAGE internal IMMUTABLE STRICT; CREATE FUNCTION base_fn_out(base_type) RETURNS cstring AS 'boolout' LANGUAGE internal IMMUTABLE STRICT; CREATE TYPE base_type(INPUT = base_fn_in, OUTPUT = base_fn_out); DROP FUNCTION base_fn_in(cstring); -- error DROP FUNCTION base_fn_out(base_type); -- error DROP TYPE base_type; -- error DROP TYPE base_type CASCADE; -- Check usage of typmod with a user-defined type -- (we have borrowed numeric's typmod functions) CREATE TEMP TABLE mytab (foo widget(42,13,7)); -- should fail CREATE TEMP TABLE mytab (foo widget(42,13)); SELECT format_type(atttypid,atttypmod) FROM pg_attribute WHERE attrelid = 'mytab'::regclass AND attnum > 0; -- might as well exercise the widget type while we're here INSERT INTO mytab VALUES ('(1,2,3)'), ('(-44,5.5,12)'); TABLE mytab; -- and test format_type() a bit more, too select format_type('varchar'::regtype, 42); select format_type('bpchar'::regtype, null); -- this behavior difference is intentional select format_type('bpchar'::regtype, -1); -- -- Test CREATE/ALTER TYPE using a type that's compatible with varchar, -- so we can re-use those support functions -- CREATE TYPE myvarchar; CREATE FUNCTION myvarcharin(cstring, oid, integer) RETURNS myvarchar LANGUAGE internal IMMUTABLE PARALLEL SAFE STRICT AS 'varcharin'; CREATE FUNCTION myvarcharout(myvarchar) RETURNS cstring LANGUAGE internal IMMUTABLE PARALLEL SAFE STRICT AS 'varcharout'; CREATE FUNCTION myvarcharsend(myvarchar) RETURNS bytea LANGUAGE internal STABLE PARALLEL SAFE STRICT AS 'varcharsend'; CREATE FUNCTION myvarcharrecv(internal, oid, integer) RETURNS myvarchar LANGUAGE internal STABLE PARALLEL SAFE STRICT AS 'varcharrecv'; -- fail, it's still a shell: ALTER TYPE myvarchar SET (storage = extended); CREATE TYPE myvarchar ( input = myvarcharin, output = myvarcharout, alignment = integer, storage = main ); -- want to check updating of a domain over the target type, too CREATE DOMAIN myvarchardom AS myvarchar; ALTER TYPE myvarchar SET (storage = plain); -- not allowed ALTER TYPE myvarchar SET (storage = extended); ALTER TYPE myvarchar SET ( send = myvarcharsend, receive = myvarcharrecv, typmod_in = varchartypmodin, typmod_out = varchartypmodout, analyze = array_typanalyze -- bogus, but it doesn't matter ); SELECT typinput, typoutput, typreceive, typsend, typmodin, typmodout, typanalyze, typstorage FROM pg_type WHERE typname = 'myvarchar'; SELECT typinput, typoutput, typreceive, typsend, typmodin, typmodout, typanalyze, typstorage FROM pg_type WHERE typname = '_myvarchar'; SELECT typinput, typoutput, typreceive, typsend, typmodin, typmodout, typanalyze, typstorage FROM pg_type WHERE typname = 'myvarchardom'; SELECT typinput, typoutput, typreceive, typsend, typmodin, typmodout, typanalyze, typstorage FROM pg_type WHERE typname = '_myvarchardom'; -- ensure dependencies are straight DROP FUNCTION myvarcharsend(myvarchar); -- fail DROP TYPE myvarchar; -- fail DROP TYPE myvarchar CASCADE; libpg_query-13-2.1.0/test/sql/postgres_regress/create_view.sql000066400000000000000000000464421413137616400244710ustar00rootroot00000000000000-- -- CREATE_VIEW -- Virtual class definitions -- (this also tests the query rewrite system) -- CREATE VIEW street AS SELECT r.name, r.thepath, c.cname AS cname FROM ONLY road r, real_city c WHERE c.outline ## r.thepath; CREATE VIEW iexit AS SELECT ih.name, ih.thepath, interpt_pp(ih.thepath, r.thepath) AS exit FROM ihighway ih, ramp r WHERE ih.thepath ## r.thepath; CREATE VIEW toyemp AS SELECT name, age, location, 12*salary AS annualsal FROM emp; -- Test comments COMMENT ON VIEW noview IS 'no view'; COMMENT ON VIEW toyemp IS 'is a view'; COMMENT ON VIEW toyemp IS NULL; -- These views are left around mainly to exercise special cases in pg_dump. CREATE TABLE view_base_table (key int PRIMARY KEY, data varchar(20)); CREATE VIEW key_dependent_view AS SELECT * FROM view_base_table GROUP BY key; ALTER TABLE view_base_table DROP CONSTRAINT view_base_table_pkey; -- fails CREATE VIEW key_dependent_view_no_cols AS SELECT FROM view_base_table GROUP BY key HAVING length(data) > 0; -- -- CREATE OR REPLACE VIEW -- CREATE TABLE viewtest_tbl (a int, b int); COPY viewtest_tbl FROM stdin; 5 10 10 15 15 20 20 25 \. CREATE OR REPLACE VIEW viewtest AS SELECT * FROM viewtest_tbl; CREATE OR REPLACE VIEW viewtest AS SELECT * FROM viewtest_tbl WHERE a > 10; SELECT * FROM viewtest; CREATE OR REPLACE VIEW viewtest AS SELECT a, b FROM viewtest_tbl WHERE a > 5 ORDER BY b DESC; SELECT * FROM viewtest; -- should fail CREATE OR REPLACE VIEW viewtest AS SELECT a FROM viewtest_tbl WHERE a <> 20; -- should fail CREATE OR REPLACE VIEW viewtest AS SELECT 1, * FROM viewtest_tbl; -- should fail CREATE OR REPLACE VIEW viewtest AS SELECT a, b::numeric FROM viewtest_tbl; -- should work CREATE OR REPLACE VIEW viewtest AS SELECT a, b, 0 AS c FROM viewtest_tbl; DROP VIEW viewtest; DROP TABLE viewtest_tbl; -- tests for temporary views CREATE SCHEMA temp_view_test CREATE TABLE base_table (a int, id int) CREATE TABLE base_table2 (a int, id int); SET search_path TO temp_view_test, public; CREATE TEMPORARY TABLE temp_table (a int, id int); -- should be created in temp_view_test schema CREATE VIEW v1 AS SELECT * FROM base_table; -- should be created in temp object schema CREATE VIEW v1_temp AS SELECT * FROM temp_table; -- should be created in temp object schema CREATE TEMP VIEW v2_temp AS SELECT * FROM base_table; -- should be created in temp_views schema CREATE VIEW temp_view_test.v2 AS SELECT * FROM base_table; -- should fail CREATE VIEW temp_view_test.v3_temp AS SELECT * FROM temp_table; -- should fail CREATE SCHEMA test_view_schema CREATE TEMP VIEW testview AS SELECT 1; -- joins: if any of the join relations are temporary, the view -- should also be temporary -- should be non-temp CREATE VIEW v3 AS SELECT t1.a AS t1_a, t2.a AS t2_a FROM base_table t1, base_table2 t2 WHERE t1.id = t2.id; -- should be temp (one join rel is temp) CREATE VIEW v4_temp AS SELECT t1.a AS t1_a, t2.a AS t2_a FROM base_table t1, temp_table t2 WHERE t1.id = t2.id; -- should be temp CREATE VIEW v5_temp AS SELECT t1.a AS t1_a, t2.a AS t2_a, t3.a AS t3_a FROM base_table t1, base_table2 t2, temp_table t3 WHERE t1.id = t2.id and t2.id = t3.id; -- subqueries CREATE VIEW v4 AS SELECT * FROM base_table WHERE id IN (SELECT id FROM base_table2); CREATE VIEW v5 AS SELECT t1.id, t2.a FROM base_table t1, (SELECT * FROM base_table2) t2; CREATE VIEW v6 AS SELECT * FROM base_table WHERE EXISTS (SELECT 1 FROM base_table2); CREATE VIEW v7 AS SELECT * FROM base_table WHERE NOT EXISTS (SELECT 1 FROM base_table2); CREATE VIEW v8 AS SELECT * FROM base_table WHERE EXISTS (SELECT 1); CREATE VIEW v6_temp AS SELECT * FROM base_table WHERE id IN (SELECT id FROM temp_table); CREATE VIEW v7_temp AS SELECT t1.id, t2.a FROM base_table t1, (SELECT * FROM temp_table) t2; CREATE VIEW v8_temp AS SELECT * FROM base_table WHERE EXISTS (SELECT 1 FROM temp_table); CREATE VIEW v9_temp AS SELECT * FROM base_table WHERE NOT EXISTS (SELECT 1 FROM temp_table); -- a view should also be temporary if it references a temporary view CREATE VIEW v10_temp AS SELECT * FROM v7_temp; CREATE VIEW v11_temp AS SELECT t1.id, t2.a FROM base_table t1, v10_temp t2; CREATE VIEW v12_temp AS SELECT true FROM v11_temp; -- a view should also be temporary if it references a temporary sequence CREATE SEQUENCE seq1; CREATE TEMPORARY SEQUENCE seq1_temp; CREATE VIEW v9 AS SELECT seq1.is_called FROM seq1; CREATE VIEW v13_temp AS SELECT seq1_temp.is_called FROM seq1_temp; SELECT relname FROM pg_class WHERE relname LIKE 'v_' AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'temp_view_test') ORDER BY relname; SELECT relname FROM pg_class WHERE relname LIKE 'v%' AND relnamespace IN (SELECT oid FROM pg_namespace WHERE nspname LIKE 'pg_temp%') ORDER BY relname; CREATE SCHEMA testviewschm2; SET search_path TO testviewschm2, public; CREATE TABLE t1 (num int, name text); CREATE TABLE t2 (num2 int, value text); CREATE TEMP TABLE tt (num2 int, value text); CREATE VIEW nontemp1 AS SELECT * FROM t1 CROSS JOIN t2; CREATE VIEW temporal1 AS SELECT * FROM t1 CROSS JOIN tt; CREATE VIEW nontemp2 AS SELECT * FROM t1 INNER JOIN t2 ON t1.num = t2.num2; CREATE VIEW temporal2 AS SELECT * FROM t1 INNER JOIN tt ON t1.num = tt.num2; CREATE VIEW nontemp3 AS SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num2; CREATE VIEW temporal3 AS SELECT * FROM t1 LEFT JOIN tt ON t1.num = tt.num2; CREATE VIEW nontemp4 AS SELECT * FROM t1 LEFT JOIN t2 ON t1.num = t2.num2 AND t2.value = 'xxx'; CREATE VIEW temporal4 AS SELECT * FROM t1 LEFT JOIN tt ON t1.num = tt.num2 AND tt.value = 'xxx'; SELECT relname FROM pg_class WHERE relname LIKE 'nontemp%' AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'testviewschm2') ORDER BY relname; SELECT relname FROM pg_class WHERE relname LIKE 'temporal%' AND relnamespace IN (SELECT oid FROM pg_namespace WHERE nspname LIKE 'pg_temp%') ORDER BY relname; CREATE TABLE tbl1 ( a int, b int); CREATE TABLE tbl2 (c int, d int); CREATE TABLE tbl3 (e int, f int); CREATE TABLE tbl4 (g int, h int); CREATE TEMP TABLE tmptbl (i int, j int); --Should be in testviewschm2 CREATE VIEW pubview AS SELECT * FROM tbl1 WHERE tbl1.a BETWEEN (SELECT d FROM tbl2 WHERE c = 1) AND (SELECT e FROM tbl3 WHERE f = 2) AND EXISTS (SELECT g FROM tbl4 LEFT JOIN tbl3 ON tbl4.h = tbl3.f); SELECT count(*) FROM pg_class where relname = 'pubview' AND relnamespace IN (SELECT OID FROM pg_namespace WHERE nspname = 'testviewschm2'); --Should be in temp object schema CREATE VIEW mytempview AS SELECT * FROM tbl1 WHERE tbl1.a BETWEEN (SELECT d FROM tbl2 WHERE c = 1) AND (SELECT e FROM tbl3 WHERE f = 2) AND EXISTS (SELECT g FROM tbl4 LEFT JOIN tbl3 ON tbl4.h = tbl3.f) AND NOT EXISTS (SELECT g FROM tbl4 LEFT JOIN tmptbl ON tbl4.h = tmptbl.j); SELECT count(*) FROM pg_class where relname LIKE 'mytempview' And relnamespace IN (SELECT OID FROM pg_namespace WHERE nspname LIKE 'pg_temp%'); -- -- CREATE VIEW and WITH(...) clause -- CREATE VIEW mysecview1 AS SELECT * FROM tbl1 WHERE a = 0; CREATE VIEW mysecview2 WITH (security_barrier=true) AS SELECT * FROM tbl1 WHERE a > 0; CREATE VIEW mysecview3 WITH (security_barrier=false) AS SELECT * FROM tbl1 WHERE a < 0; CREATE VIEW mysecview4 WITH (security_barrier) AS SELECT * FROM tbl1 WHERE a <> 0; CREATE VIEW mysecview5 WITH (security_barrier=100) -- Error AS SELECT * FROM tbl1 WHERE a > 100; CREATE VIEW mysecview6 WITH (invalid_option) -- Error AS SELECT * FROM tbl1 WHERE a < 100; SELECT relname, relkind, reloptions FROM pg_class WHERE oid in ('mysecview1'::regclass, 'mysecview2'::regclass, 'mysecview3'::regclass, 'mysecview4'::regclass) ORDER BY relname; CREATE OR REPLACE VIEW mysecview1 AS SELECT * FROM tbl1 WHERE a = 256; CREATE OR REPLACE VIEW mysecview2 AS SELECT * FROM tbl1 WHERE a > 256; CREATE OR REPLACE VIEW mysecview3 WITH (security_barrier=true) AS SELECT * FROM tbl1 WHERE a < 256; CREATE OR REPLACE VIEW mysecview4 WITH (security_barrier=false) AS SELECT * FROM tbl1 WHERE a <> 256; SELECT relname, relkind, reloptions FROM pg_class WHERE oid in ('mysecview1'::regclass, 'mysecview2'::regclass, 'mysecview3'::regclass, 'mysecview4'::regclass) ORDER BY relname; -- Check that unknown literals are converted to "text" in CREATE VIEW, -- so that we don't end up with unknown-type columns. CREATE VIEW unspecified_types AS SELECT 42 as i, 42.5 as num, 'foo' as u, 'foo'::unknown as u2, null as n; \d+ unspecified_types SELECT * FROM unspecified_types; -- This test checks that proper typmods are assigned in a multi-row VALUES CREATE VIEW tt1 AS SELECT * FROM ( VALUES ('abc'::varchar(3), '0123456789', 42, 'abcd'::varchar(4)), ('0123456789', 'abc'::varchar(3), 42.12, 'abc'::varchar(4)) ) vv(a,b,c,d); \d+ tt1 SELECT * FROM tt1; SELECT a::varchar(3) FROM tt1; DROP VIEW tt1; -- Test view decompilation in the face of relation renaming conflicts CREATE TABLE tt1 (f1 int, f2 int, f3 text); CREATE TABLE tx1 (x1 int, x2 int, x3 text); CREATE TABLE temp_view_test.tt1 (y1 int, f2 int, f3 text); CREATE VIEW aliased_view_1 AS select * from tt1 where exists (select 1 from tx1 where tt1.f1 = tx1.x1); CREATE VIEW aliased_view_2 AS select * from tt1 a1 where exists (select 1 from tx1 where a1.f1 = tx1.x1); CREATE VIEW aliased_view_3 AS select * from tt1 where exists (select 1 from tx1 a2 where tt1.f1 = a2.x1); CREATE VIEW aliased_view_4 AS select * from temp_view_test.tt1 where exists (select 1 from tt1 where temp_view_test.tt1.y1 = tt1.f1); \d+ aliased_view_1 \d+ aliased_view_2 \d+ aliased_view_3 \d+ aliased_view_4 ALTER TABLE tx1 RENAME TO a1; \d+ aliased_view_1 \d+ aliased_view_2 \d+ aliased_view_3 \d+ aliased_view_4 ALTER TABLE tt1 RENAME TO a2; \d+ aliased_view_1 \d+ aliased_view_2 \d+ aliased_view_3 \d+ aliased_view_4 ALTER TABLE a1 RENAME TO tt1; \d+ aliased_view_1 \d+ aliased_view_2 \d+ aliased_view_3 \d+ aliased_view_4 ALTER TABLE a2 RENAME TO tx1; ALTER TABLE tx1 SET SCHEMA temp_view_test; \d+ aliased_view_1 \d+ aliased_view_2 \d+ aliased_view_3 \d+ aliased_view_4 ALTER TABLE temp_view_test.tt1 RENAME TO tmp1; ALTER TABLE temp_view_test.tmp1 SET SCHEMA testviewschm2; ALTER TABLE tmp1 RENAME TO tx1; \d+ aliased_view_1 \d+ aliased_view_2 \d+ aliased_view_3 \d+ aliased_view_4 -- Test aliasing of joins create view view_of_joins as select * from (select * from (tbl1 cross join tbl2) same) ss, (tbl3 cross join tbl4) same; \d+ view_of_joins -- Test view decompilation in the face of column addition/deletion/renaming create table tt2 (a int, b int, c int); create table tt3 (ax int8, b int2, c numeric); create table tt4 (ay int, b int, q int); create view v1 as select * from tt2 natural join tt3; create view v1a as select * from (tt2 natural join tt3) j; create view v2 as select * from tt2 join tt3 using (b,c) join tt4 using (b); create view v2a as select * from (tt2 join tt3 using (b,c) join tt4 using (b)) j; create view v3 as select * from tt2 join tt3 using (b,c) full join tt4 using (b); select pg_get_viewdef('v1', true); select pg_get_viewdef('v1a', true); select pg_get_viewdef('v2', true); select pg_get_viewdef('v2a', true); select pg_get_viewdef('v3', true); alter table tt2 add column d int; alter table tt2 add column e int; select pg_get_viewdef('v1', true); select pg_get_viewdef('v1a', true); select pg_get_viewdef('v2', true); select pg_get_viewdef('v2a', true); select pg_get_viewdef('v3', true); alter table tt3 rename c to d; select pg_get_viewdef('v1', true); select pg_get_viewdef('v1a', true); select pg_get_viewdef('v2', true); select pg_get_viewdef('v2a', true); select pg_get_viewdef('v3', true); alter table tt3 add column c int; alter table tt3 add column e int; select pg_get_viewdef('v1', true); select pg_get_viewdef('v1a', true); select pg_get_viewdef('v2', true); select pg_get_viewdef('v2a', true); select pg_get_viewdef('v3', true); alter table tt2 drop column d; select pg_get_viewdef('v1', true); select pg_get_viewdef('v1a', true); select pg_get_viewdef('v2', true); select pg_get_viewdef('v2a', true); select pg_get_viewdef('v3', true); create table tt5 (a int, b int); create table tt6 (c int, d int); create view vv1 as select * from (tt5 cross join tt6) j(aa,bb,cc,dd); select pg_get_viewdef('vv1', true); alter table tt5 add column c int; select pg_get_viewdef('vv1', true); alter table tt5 add column cc int; select pg_get_viewdef('vv1', true); alter table tt5 drop column c; select pg_get_viewdef('vv1', true); create view v4 as select * from v1; alter view v1 rename column a to x; select pg_get_viewdef('v1', true); select pg_get_viewdef('v4', true); -- Unnamed FULL JOIN USING is lots of fun too create table tt7 (x int, xx int, y int); alter table tt7 drop column xx; create table tt8 (x int, z int); create view vv2 as select * from (values(1,2,3,4,5)) v(a,b,c,d,e) union all select * from tt7 full join tt8 using (x), tt8 tt8x; select pg_get_viewdef('vv2', true); create view vv3 as select * from (values(1,2,3,4,5,6)) v(a,b,c,x,e,f) union all select * from tt7 full join tt8 using (x), tt7 tt7x full join tt8 tt8x using (x); select pg_get_viewdef('vv3', true); create view vv4 as select * from (values(1,2,3,4,5,6,7)) v(a,b,c,x,e,f,g) union all select * from tt7 full join tt8 using (x), tt7 tt7x full join tt8 tt8x using (x) full join tt8 tt8y using (x); select pg_get_viewdef('vv4', true); alter table tt7 add column zz int; alter table tt7 add column z int; alter table tt7 drop column zz; alter table tt8 add column z2 int; select pg_get_viewdef('vv2', true); select pg_get_viewdef('vv3', true); select pg_get_viewdef('vv4', true); -- Implicit coercions in a JOIN USING create issues similar to FULL JOIN create table tt7a (x date, xx int, y int); alter table tt7a drop column xx; create table tt8a (x timestamptz, z int); create view vv2a as select * from (values(now(),2,3,now(),5)) v(a,b,c,d,e) union all select * from tt7a left join tt8a using (x), tt8a tt8ax; select pg_get_viewdef('vv2a', true); -- -- Also check dropping a column that existed when the view was made -- create table tt9 (x int, xx int, y int); create table tt10 (x int, z int); create view vv5 as select x,y,z from tt9 join tt10 using(x); select pg_get_viewdef('vv5', true); alter table tt9 drop column xx; select pg_get_viewdef('vv5', true); -- -- Another corner case is that we might add a column to a table below a -- JOIN USING, and thereby make the USING column name ambiguous -- create table tt11 (x int, y int); create table tt12 (x int, z int); create table tt13 (z int, q int); create view vv6 as select x,y,z,q from (tt11 join tt12 using(x)) join tt13 using(z); select pg_get_viewdef('vv6', true); alter table tt11 add column z int; select pg_get_viewdef('vv6', true); -- -- Check cases involving dropped/altered columns in a function's rowtype result -- create table tt14t (f1 text, f2 text, f3 text, f4 text); insert into tt14t values('foo', 'bar', 'baz', '42'); alter table tt14t drop column f2; create function tt14f() returns setof tt14t as $$ declare rec1 record; begin for rec1 in select * from tt14t loop return next rec1; end loop; end; $$ language plpgsql; create view tt14v as select t.* from tt14f() t; select pg_get_viewdef('tt14v', true); select * from tt14v; begin; -- this perhaps should be rejected, but it isn't: alter table tt14t drop column f3; -- f3 is still in the view ... select pg_get_viewdef('tt14v', true); -- but will fail at execution select f1, f4 from tt14v; select * from tt14v; rollback; begin; -- this perhaps should be rejected, but it isn't: alter table tt14t alter column f4 type integer using f4::integer; -- f4 is still in the view ... select pg_get_viewdef('tt14v', true); -- but will fail at execution select f1, f3 from tt14v; select * from tt14v; rollback; -- check display of whole-row variables in some corner cases create type nestedcomposite as (x int8_tbl); create view tt15v as select row(i)::nestedcomposite from int8_tbl i; select * from tt15v; select pg_get_viewdef('tt15v', true); select row(i.*::int8_tbl)::nestedcomposite from int8_tbl i; create view tt16v as select * from int8_tbl i, lateral(values(i)) ss; select * from tt16v; select pg_get_viewdef('tt16v', true); select * from int8_tbl i, lateral(values(i.*::int8_tbl)) ss; create view tt17v as select * from int8_tbl i where i in (values(i)); select * from tt17v; select pg_get_viewdef('tt17v', true); select * from int8_tbl i where i.* in (values(i.*::int8_tbl)); -- check unique-ification of overlength names create view tt18v as select * from int8_tbl xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxy union all select * from int8_tbl xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz; select pg_get_viewdef('tt18v', true); explain (costs off) select * from tt18v; -- check display of ScalarArrayOp with a sub-select select 'foo'::text = any(array['abc','def','foo']::text[]); select 'foo'::text = any((select array['abc','def','foo']::text[])); -- fail select 'foo'::text = any((select array['abc','def','foo']::text[])::text[]); create view tt19v as select 'foo'::text = any(array['abc','def','foo']::text[]) c1, 'foo'::text = any((select array['abc','def','foo']::text[])::text[]) c2; select pg_get_viewdef('tt19v', true); -- check display of assorted RTE_FUNCTION expressions create view tt20v as select * from coalesce(1,2) as c, collation for ('x'::text) col, current_date as d, localtimestamp(3) as t, cast(1+2 as int4) as i4, cast(1+2 as int8) as i8; select pg_get_viewdef('tt20v', true); -- corner cases with empty join conditions create view tt21v as select * from tt5 natural inner join tt6; select pg_get_viewdef('tt21v', true); create view tt22v as select * from tt5 natural left join tt6; select pg_get_viewdef('tt22v', true); -- check handling of views with immediately-renamed columns create view tt23v (col_a, col_b) as select q1 as other_name1, q2 as other_name2 from int8_tbl union select 42, 43; select pg_get_viewdef('tt23v', true); select pg_get_ruledef(oid, true) from pg_rewrite where ev_class = 'tt23v'::regclass and ev_type = '1'; -- test extraction of FieldSelect field names (get_name_for_var_field) create view tt24v as with cte as materialized (select r from (values(1,2),(3,4)) r) select (r).column2 as col_a, (rr).column2 as col_b from cte join (select rr from (values(1,7),(3,8)) rr limit 2) ss on (r).column1 = (rr).column1; select pg_get_viewdef('tt24v', true); create view tt25v as with cte as materialized (select pg_get_keywords() k) select (k).word from cte; select pg_get_viewdef('tt25v', true); -- also check cases seen only in EXPLAIN explain (verbose, costs off) select * from tt24v; explain (verbose, costs off) select (r).column2 from (select r from (values(1,2),(3,4)) r limit 1) ss; -- test pretty-print parenthesization rules, and SubLink deparsing create view tt26v as select x + y + z as c1, (x * y) + z as c2, x + (y * z) as c3, (x + y) * z as c4, x * (y + z) as c5, x + (y + z) as c6, x + (y # z) as c7, (x > y) AND (y > z OR x > z) as c8, (x > y) OR (y > z AND NOT (x > z)) as c9, (x,y) <> ALL (values(1,2),(3,4)) as c10, (x,y) <= ANY (values(1,2),(3,4)) as c11 from (values(1,2,3)) v(x,y,z); select pg_get_viewdef('tt26v', true); -- clean up all the random objects we made above DROP SCHEMA temp_view_test CASCADE; DROP SCHEMA testviewschm2 CASCADE; libpg_query-13-2.1.0/test/sql/postgres_regress/date.sql000066400000000000000000000255131413137616400231050ustar00rootroot00000000000000-- -- DATE -- CREATE TABLE DATE_TBL (f1 date); INSERT INTO DATE_TBL VALUES ('1957-04-09'); INSERT INTO DATE_TBL VALUES ('1957-06-13'); INSERT INTO DATE_TBL VALUES ('1996-02-28'); INSERT INTO DATE_TBL VALUES ('1996-02-29'); INSERT INTO DATE_TBL VALUES ('1996-03-01'); INSERT INTO DATE_TBL VALUES ('1996-03-02'); INSERT INTO DATE_TBL VALUES ('1997-02-28'); INSERT INTO DATE_TBL VALUES ('1997-02-29'); INSERT INTO DATE_TBL VALUES ('1997-03-01'); INSERT INTO DATE_TBL VALUES ('1997-03-02'); INSERT INTO DATE_TBL VALUES ('2000-04-01'); INSERT INTO DATE_TBL VALUES ('2000-04-02'); INSERT INTO DATE_TBL VALUES ('2000-04-03'); INSERT INTO DATE_TBL VALUES ('2038-04-08'); INSERT INTO DATE_TBL VALUES ('2039-04-09'); INSERT INTO DATE_TBL VALUES ('2040-04-10'); SELECT f1 AS "Fifteen" FROM DATE_TBL; SELECT f1 AS "Nine" FROM DATE_TBL WHERE f1 < '2000-01-01'; SELECT f1 AS "Three" FROM DATE_TBL WHERE f1 BETWEEN '2000-01-01' AND '2001-01-01'; -- -- Check all the documented input formats -- SET datestyle TO iso; -- display results in ISO SET datestyle TO ymd; SELECT date 'January 8, 1999'; SELECT date '1999-01-08'; SELECT date '1999-01-18'; SELECT date '1/8/1999'; SELECT date '1/18/1999'; SELECT date '18/1/1999'; SELECT date '01/02/03'; SELECT date '19990108'; SELECT date '990108'; SELECT date '1999.008'; SELECT date 'J2451187'; SELECT date 'January 8, 99 BC'; SELECT date '99-Jan-08'; SELECT date '1999-Jan-08'; SELECT date '08-Jan-99'; SELECT date '08-Jan-1999'; SELECT date 'Jan-08-99'; SELECT date 'Jan-08-1999'; SELECT date '99-08-Jan'; SELECT date '1999-08-Jan'; SELECT date '99 Jan 08'; SELECT date '1999 Jan 08'; SELECT date '08 Jan 99'; SELECT date '08 Jan 1999'; SELECT date 'Jan 08 99'; SELECT date 'Jan 08 1999'; SELECT date '99 08 Jan'; SELECT date '1999 08 Jan'; SELECT date '99-01-08'; SELECT date '1999-01-08'; SELECT date '08-01-99'; SELECT date '08-01-1999'; SELECT date '01-08-99'; SELECT date '01-08-1999'; SELECT date '99-08-01'; SELECT date '1999-08-01'; SELECT date '99 01 08'; SELECT date '1999 01 08'; SELECT date '08 01 99'; SELECT date '08 01 1999'; SELECT date '01 08 99'; SELECT date '01 08 1999'; SELECT date '99 08 01'; SELECT date '1999 08 01'; SET datestyle TO dmy; SELECT date 'January 8, 1999'; SELECT date '1999-01-08'; SELECT date '1999-01-18'; SELECT date '1/8/1999'; SELECT date '1/18/1999'; SELECT date '18/1/1999'; SELECT date '01/02/03'; SELECT date '19990108'; SELECT date '990108'; SELECT date '1999.008'; SELECT date 'J2451187'; SELECT date 'January 8, 99 BC'; SELECT date '99-Jan-08'; SELECT date '1999-Jan-08'; SELECT date '08-Jan-99'; SELECT date '08-Jan-1999'; SELECT date 'Jan-08-99'; SELECT date 'Jan-08-1999'; SELECT date '99-08-Jan'; SELECT date '1999-08-Jan'; SELECT date '99 Jan 08'; SELECT date '1999 Jan 08'; SELECT date '08 Jan 99'; SELECT date '08 Jan 1999'; SELECT date 'Jan 08 99'; SELECT date 'Jan 08 1999'; SELECT date '99 08 Jan'; SELECT date '1999 08 Jan'; SELECT date '99-01-08'; SELECT date '1999-01-08'; SELECT date '08-01-99'; SELECT date '08-01-1999'; SELECT date '01-08-99'; SELECT date '01-08-1999'; SELECT date '99-08-01'; SELECT date '1999-08-01'; SELECT date '99 01 08'; SELECT date '1999 01 08'; SELECT date '08 01 99'; SELECT date '08 01 1999'; SELECT date '01 08 99'; SELECT date '01 08 1999'; SELECT date '99 08 01'; SELECT date '1999 08 01'; SET datestyle TO mdy; SELECT date 'January 8, 1999'; SELECT date '1999-01-08'; SELECT date '1999-01-18'; SELECT date '1/8/1999'; SELECT date '1/18/1999'; SELECT date '18/1/1999'; SELECT date '01/02/03'; SELECT date '19990108'; SELECT date '990108'; SELECT date '1999.008'; SELECT date 'J2451187'; SELECT date 'January 8, 99 BC'; SELECT date '99-Jan-08'; SELECT date '1999-Jan-08'; SELECT date '08-Jan-99'; SELECT date '08-Jan-1999'; SELECT date 'Jan-08-99'; SELECT date 'Jan-08-1999'; SELECT date '99-08-Jan'; SELECT date '1999-08-Jan'; SELECT date '99 Jan 08'; SELECT date '1999 Jan 08'; SELECT date '08 Jan 99'; SELECT date '08 Jan 1999'; SELECT date 'Jan 08 99'; SELECT date 'Jan 08 1999'; SELECT date '99 08 Jan'; SELECT date '1999 08 Jan'; SELECT date '99-01-08'; SELECT date '1999-01-08'; SELECT date '08-01-99'; SELECT date '08-01-1999'; SELECT date '01-08-99'; SELECT date '01-08-1999'; SELECT date '99-08-01'; SELECT date '1999-08-01'; SELECT date '99 01 08'; SELECT date '1999 01 08'; SELECT date '08 01 99'; SELECT date '08 01 1999'; SELECT date '01 08 99'; SELECT date '01 08 1999'; SELECT date '99 08 01'; SELECT date '1999 08 01'; -- Check upper and lower limits of date range SELECT date '4714-11-24 BC'; SELECT date '4714-11-23 BC'; -- out of range SELECT date '5874897-12-31'; SELECT date '5874898-01-01'; -- out of range RESET datestyle; -- -- Simple math -- Leave most of it for the horology tests -- SELECT f1 - date '2000-01-01' AS "Days From 2K" FROM DATE_TBL; SELECT f1 - date 'epoch' AS "Days From Epoch" FROM DATE_TBL; SELECT date 'yesterday' - date 'today' AS "One day"; SELECT date 'today' - date 'tomorrow' AS "One day"; SELECT date 'yesterday' - date 'tomorrow' AS "Two days"; SELECT date 'tomorrow' - date 'today' AS "One day"; SELECT date 'today' - date 'yesterday' AS "One day"; SELECT date 'tomorrow' - date 'yesterday' AS "Two days"; -- -- test extract! -- -- epoch -- SELECT EXTRACT(EPOCH FROM DATE '1970-01-01'); -- 0 SELECT EXTRACT(EPOCH FROM TIMESTAMP '1970-01-01'); -- 0 SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ '1970-01-01+00'); -- 0 -- -- century -- SELECT EXTRACT(CENTURY FROM DATE '0101-12-31 BC'); -- -2 SELECT EXTRACT(CENTURY FROM DATE '0100-12-31 BC'); -- -1 SELECT EXTRACT(CENTURY FROM DATE '0001-12-31 BC'); -- -1 SELECT EXTRACT(CENTURY FROM DATE '0001-01-01'); -- 1 SELECT EXTRACT(CENTURY FROM DATE '0001-01-01 AD'); -- 1 SELECT EXTRACT(CENTURY FROM DATE '1900-12-31'); -- 19 SELECT EXTRACT(CENTURY FROM DATE '1901-01-01'); -- 20 SELECT EXTRACT(CENTURY FROM DATE '2000-12-31'); -- 20 SELECT EXTRACT(CENTURY FROM DATE '2001-01-01'); -- 21 SELECT EXTRACT(CENTURY FROM CURRENT_DATE)>=21 AS True; -- true -- -- millennium -- SELECT EXTRACT(MILLENNIUM FROM DATE '0001-12-31 BC'); -- -1 SELECT EXTRACT(MILLENNIUM FROM DATE '0001-01-01 AD'); -- 1 SELECT EXTRACT(MILLENNIUM FROM DATE '1000-12-31'); -- 1 SELECT EXTRACT(MILLENNIUM FROM DATE '1001-01-01'); -- 2 SELECT EXTRACT(MILLENNIUM FROM DATE '2000-12-31'); -- 2 SELECT EXTRACT(MILLENNIUM FROM DATE '2001-01-01'); -- 3 -- next test to be fixed on the turn of the next millennium;-) SELECT EXTRACT(MILLENNIUM FROM CURRENT_DATE); -- 3 -- -- decade -- SELECT EXTRACT(DECADE FROM DATE '1994-12-25'); -- 199 SELECT EXTRACT(DECADE FROM DATE '0010-01-01'); -- 1 SELECT EXTRACT(DECADE FROM DATE '0009-12-31'); -- 0 SELECT EXTRACT(DECADE FROM DATE '0001-01-01 BC'); -- 0 SELECT EXTRACT(DECADE FROM DATE '0002-12-31 BC'); -- -1 SELECT EXTRACT(DECADE FROM DATE '0011-01-01 BC'); -- -1 SELECT EXTRACT(DECADE FROM DATE '0012-12-31 BC'); -- -2 -- -- some other types: -- -- on a timestamp. SELECT EXTRACT(CENTURY FROM NOW())>=21 AS True; -- true SELECT EXTRACT(CENTURY FROM TIMESTAMP '1970-03-20 04:30:00.00000'); -- 20 -- on an interval SELECT EXTRACT(CENTURY FROM INTERVAL '100 y'); -- 1 SELECT EXTRACT(CENTURY FROM INTERVAL '99 y'); -- 0 SELECT EXTRACT(CENTURY FROM INTERVAL '-99 y'); -- 0 SELECT EXTRACT(CENTURY FROM INTERVAL '-100 y'); -- -1 -- -- test trunc function! -- SELECT DATE_TRUNC('MILLENNIUM', TIMESTAMP '1970-03-20 04:30:00.00000'); -- 1001 SELECT DATE_TRUNC('MILLENNIUM', DATE '1970-03-20'); -- 1001-01-01 SELECT DATE_TRUNC('CENTURY', TIMESTAMP '1970-03-20 04:30:00.00000'); -- 1901 SELECT DATE_TRUNC('CENTURY', DATE '1970-03-20'); -- 1901 SELECT DATE_TRUNC('CENTURY', DATE '2004-08-10'); -- 2001-01-01 SELECT DATE_TRUNC('CENTURY', DATE '0002-02-04'); -- 0001-01-01 SELECT DATE_TRUNC('CENTURY', DATE '0055-08-10 BC'); -- 0100-01-01 BC SELECT DATE_TRUNC('DECADE', DATE '1993-12-25'); -- 1990-01-01 SELECT DATE_TRUNC('DECADE', DATE '0004-12-25'); -- 0001-01-01 BC SELECT DATE_TRUNC('DECADE', DATE '0002-12-31 BC'); -- 0011-01-01 BC -- -- test infinity -- select 'infinity'::date, '-infinity'::date; select 'infinity'::date > 'today'::date as t; select '-infinity'::date < 'today'::date as t; select isfinite('infinity'::date), isfinite('-infinity'::date), isfinite('today'::date); -- -- oscillating fields from non-finite date/timestamptz: -- SELECT EXTRACT(HOUR FROM DATE 'infinity'); -- NULL SELECT EXTRACT(HOUR FROM DATE '-infinity'); -- NULL SELECT EXTRACT(HOUR FROM TIMESTAMP 'infinity'); -- NULL SELECT EXTRACT(HOUR FROM TIMESTAMP '-infinity'); -- NULL SELECT EXTRACT(HOUR FROM TIMESTAMPTZ 'infinity'); -- NULL SELECT EXTRACT(HOUR FROM TIMESTAMPTZ '-infinity'); -- NULL -- all possible fields SELECT EXTRACT(MICROSECONDS FROM DATE 'infinity'); -- NULL SELECT EXTRACT(MILLISECONDS FROM DATE 'infinity'); -- NULL SELECT EXTRACT(SECOND FROM DATE 'infinity'); -- NULL SELECT EXTRACT(MINUTE FROM DATE 'infinity'); -- NULL SELECT EXTRACT(HOUR FROM DATE 'infinity'); -- NULL SELECT EXTRACT(DAY FROM DATE 'infinity'); -- NULL SELECT EXTRACT(MONTH FROM DATE 'infinity'); -- NULL SELECT EXTRACT(QUARTER FROM DATE 'infinity'); -- NULL SELECT EXTRACT(WEEK FROM DATE 'infinity'); -- NULL SELECT EXTRACT(DOW FROM DATE 'infinity'); -- NULL SELECT EXTRACT(ISODOW FROM DATE 'infinity'); -- NULL SELECT EXTRACT(DOY FROM DATE 'infinity'); -- NULL SELECT EXTRACT(TIMEZONE FROM DATE 'infinity'); -- NULL SELECT EXTRACT(TIMEZONE_M FROM DATE 'infinity'); -- NULL SELECT EXTRACT(TIMEZONE_H FROM DATE 'infinity'); -- NULL -- -- monotonic fields from non-finite date/timestamptz: -- SELECT EXTRACT(EPOCH FROM DATE 'infinity'); -- Infinity SELECT EXTRACT(EPOCH FROM DATE '-infinity'); -- -Infinity SELECT EXTRACT(EPOCH FROM TIMESTAMP 'infinity'); -- Infinity SELECT EXTRACT(EPOCH FROM TIMESTAMP '-infinity'); -- -Infinity SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ 'infinity'); -- Infinity SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ '-infinity'); -- -Infinity -- all possible fields SELECT EXTRACT(YEAR FROM DATE 'infinity'); -- Infinity SELECT EXTRACT(DECADE FROM DATE 'infinity'); -- Infinity SELECT EXTRACT(CENTURY FROM DATE 'infinity'); -- Infinity SELECT EXTRACT(MILLENNIUM FROM DATE 'infinity'); -- Infinity SELECT EXTRACT(JULIAN FROM DATE 'infinity'); -- Infinity SELECT EXTRACT(ISOYEAR FROM DATE 'infinity'); -- Infinity SELECT EXTRACT(EPOCH FROM DATE 'infinity'); -- Infinity -- -- wrong fields from non-finite date: -- SELECT EXTRACT(MICROSEC FROM DATE 'infinity'); -- ERROR: timestamp units "microsec" not recognized -- test constructors select make_date(2013, 7, 15); select make_date(-44, 3, 15); select make_time(8, 20, 0.0); -- should fail select make_date(2013, 2, 30); select make_date(2013, 13, 1); select make_date(2013, 11, -1); select make_time(10, 55, 100.1); select make_time(24, 0, 2.1); libpg_query-13-2.1.0/test/sql/postgres_regress/dbsize.sql000066400000000000000000000037631413137616400234530ustar00rootroot00000000000000SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM (VALUES (10::bigint), (1000::bigint), (1000000::bigint), (1000000000::bigint), (1000000000000::bigint), (1000000000000000::bigint)) x(size); SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM (VALUES (10::numeric), (1000::numeric), (1000000::numeric), (1000000000::numeric), (1000000000000::numeric), (1000000000000000::numeric), (10.5::numeric), (1000.5::numeric), (1000000.5::numeric), (1000000000.5::numeric), (1000000000000.5::numeric), (1000000000000000.5::numeric)) x(size); SELECT size, pg_size_bytes(size) FROM (VALUES ('1'), ('123bytes'), ('1kB'), ('1MB'), (' 1 GB'), ('1.5 GB '), ('1TB'), ('3000 TB'), ('1e6 MB')) x(size); -- case-insensitive units are supported SELECT size, pg_size_bytes(size) FROM (VALUES ('1'), ('123bYteS'), ('1kb'), ('1mb'), (' 1 Gb'), ('1.5 gB '), ('1tb'), ('3000 tb'), ('1e6 mb')) x(size); -- negative numbers are supported SELECT size, pg_size_bytes(size) FROM (VALUES ('-1'), ('-123bytes'), ('-1kb'), ('-1mb'), (' -1 Gb'), ('-1.5 gB '), ('-1tb'), ('-3000 TB'), ('-10e-1 MB')) x(size); -- different cases with allowed points SELECT size, pg_size_bytes(size) FROM (VALUES ('-1.'), ('-1.kb'), ('-1. kb'), ('-0. gb'), ('-.1'), ('-.1kb'), ('-.1 kb'), ('-.0 gb')) x(size); -- invalid inputs SELECT pg_size_bytes('1 AB'); SELECT pg_size_bytes('1 AB A'); SELECT pg_size_bytes('1 AB A '); SELECT pg_size_bytes('9223372036854775807.9'); SELECT pg_size_bytes('1e100'); SELECT pg_size_bytes('1e1000000000000000000'); SELECT pg_size_bytes('1 byte'); -- the singular "byte" is not supported SELECT pg_size_bytes(''); SELECT pg_size_bytes('kb'); SELECT pg_size_bytes('..'); SELECT pg_size_bytes('-.'); SELECT pg_size_bytes('-.kb'); SELECT pg_size_bytes('-. kb'); SELECT pg_size_bytes('.+912'); SELECT pg_size_bytes('+912+ kB'); SELECT pg_size_bytes('++123 kB'); libpg_query-13-2.1.0/test/sql/postgres_regress/delete.sql000066400000000000000000000012371413137616400234270ustar00rootroot00000000000000CREATE TABLE delete_test ( id SERIAL PRIMARY KEY, a INT, b text ); INSERT INTO delete_test (a) VALUES (10); INSERT INTO delete_test (a, b) VALUES (50, repeat('x', 10000)); INSERT INTO delete_test (a) VALUES (100); -- allow an alias to be specified for DELETE's target table DELETE FROM delete_test AS dt WHERE dt.a > 75; -- if an alias is specified, don't allow the original table name -- to be referenced DELETE FROM delete_test dt WHERE delete_test.a > 25; SELECT id, a, char_length(b) FROM delete_test; -- delete a row with a TOASTed value DELETE FROM delete_test WHERE a > 25; SELECT id, a, char_length(b) FROM delete_test; DROP TABLE delete_test; libpg_query-13-2.1.0/test/sql/postgres_regress/dependency.sql000066400000000000000000000070561413137616400243100ustar00rootroot00000000000000-- -- DEPENDENCIES -- CREATE USER regress_dep_user; CREATE USER regress_dep_user2; CREATE USER regress_dep_user3; CREATE GROUP regress_dep_group; CREATE TABLE deptest (f1 serial primary key, f2 text); GRANT SELECT ON TABLE deptest TO GROUP regress_dep_group; GRANT ALL ON TABLE deptest TO regress_dep_user, regress_dep_user2; -- can't drop neither because they have privileges somewhere DROP USER regress_dep_user; DROP GROUP regress_dep_group; -- if we revoke the privileges we can drop the group REVOKE SELECT ON deptest FROM GROUP regress_dep_group; DROP GROUP regress_dep_group; -- can't drop the user if we revoke the privileges partially REVOKE SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES ON deptest FROM regress_dep_user; DROP USER regress_dep_user; -- now we are OK to drop him REVOKE TRIGGER ON deptest FROM regress_dep_user; DROP USER regress_dep_user; -- we are OK too if we drop the privileges all at once REVOKE ALL ON deptest FROM regress_dep_user2; DROP USER regress_dep_user2; -- can't drop the owner of an object -- the error message detail here would include a pg_toast_nnn name that -- is not constant, so suppress it \set VERBOSITY terse ALTER TABLE deptest OWNER TO regress_dep_user3; DROP USER regress_dep_user3; \set VERBOSITY default -- if we drop the object, we can drop the user too DROP TABLE deptest; DROP USER regress_dep_user3; -- Test DROP OWNED CREATE USER regress_dep_user0; CREATE USER regress_dep_user1; CREATE USER regress_dep_user2; SET SESSION AUTHORIZATION regress_dep_user0; -- permission denied DROP OWNED BY regress_dep_user1; DROP OWNED BY regress_dep_user0, regress_dep_user2; REASSIGN OWNED BY regress_dep_user0 TO regress_dep_user1; REASSIGN OWNED BY regress_dep_user1 TO regress_dep_user0; -- this one is allowed DROP OWNED BY regress_dep_user0; CREATE TABLE deptest1 (f1 int unique); GRANT ALL ON deptest1 TO regress_dep_user1 WITH GRANT OPTION; SET SESSION AUTHORIZATION regress_dep_user1; CREATE TABLE deptest (a serial primary key, b text); GRANT ALL ON deptest1 TO regress_dep_user2; RESET SESSION AUTHORIZATION; \z deptest1 DROP OWNED BY regress_dep_user1; -- all grants revoked \z deptest1 -- table was dropped \d deptest -- Test REASSIGN OWNED GRANT ALL ON deptest1 TO regress_dep_user1; GRANT CREATE ON DATABASE regression TO regress_dep_user1; SET SESSION AUTHORIZATION regress_dep_user1; CREATE SCHEMA deptest; CREATE TABLE deptest (a serial primary key, b text); ALTER DEFAULT PRIVILEGES FOR ROLE regress_dep_user1 IN SCHEMA deptest GRANT ALL ON TABLES TO regress_dep_user2; CREATE FUNCTION deptest_func() RETURNS void LANGUAGE plpgsql AS $$ BEGIN END; $$; CREATE TYPE deptest_enum AS ENUM ('red'); CREATE TYPE deptest_range AS RANGE (SUBTYPE = int4); CREATE TABLE deptest2 (f1 int); -- make a serial column the hard way CREATE SEQUENCE ss1; ALTER TABLE deptest2 ALTER f1 SET DEFAULT nextval('ss1'); ALTER SEQUENCE ss1 OWNED BY deptest2.f1; -- When reassigning ownership of a composite type, its pg_class entry -- should match CREATE TYPE deptest_t AS (a int); SELECT typowner = relowner FROM pg_type JOIN pg_class c ON typrelid = c.oid WHERE typname = 'deptest_t'; RESET SESSION AUTHORIZATION; REASSIGN OWNED BY regress_dep_user1 TO regress_dep_user2; \dt deptest SELECT typowner = relowner FROM pg_type JOIN pg_class c ON typrelid = c.oid WHERE typname = 'deptest_t'; -- doesn't work: grant still exists DROP USER regress_dep_user1; DROP OWNED BY regress_dep_user1; DROP USER regress_dep_user1; DROP USER regress_dep_user2; DROP OWNED BY regress_dep_user2, regress_dep_user0; DROP USER regress_dep_user2; DROP USER regress_dep_user0; libpg_query-13-2.1.0/test/sql/postgres_regress/domain.sql000066400000000000000000000534411413137616400234400ustar00rootroot00000000000000-- -- Test domains. -- -- Test Comment / Drop create domain domaindroptest int4; comment on domain domaindroptest is 'About to drop this..'; create domain dependenttypetest domaindroptest; -- fail because of dependent type drop domain domaindroptest; drop domain domaindroptest cascade; -- this should fail because already gone drop domain domaindroptest cascade; -- Test domain input. -- Note: the point of checking both INSERT and COPY FROM is that INSERT -- exercises CoerceToDomain while COPY exercises domain_in. create domain domainvarchar varchar(5); create domain domainnumeric numeric(8,2); create domain domainint4 int4; create domain domaintext text; -- Test explicit coercions --- these should succeed (and truncate) SELECT cast('123456' as domainvarchar); SELECT cast('12345' as domainvarchar); -- Test tables using domains create table basictest ( testint4 domainint4 , testtext domaintext , testvarchar domainvarchar , testnumeric domainnumeric ); INSERT INTO basictest values ('88', 'haha', 'short', '123.12'); -- Good INSERT INTO basictest values ('88', 'haha', 'short text', '123.12'); -- Bad varchar INSERT INTO basictest values ('88', 'haha', 'short', '123.1212'); -- Truncate numeric -- Test copy COPY basictest (testvarchar) FROM stdin; -- fail notsoshorttext \. COPY basictest (testvarchar) FROM stdin; short \. select * from basictest; -- check that domains inherit operations from base types select testtext || testvarchar as concat, testnumeric + 42 as sum from basictest; -- check that union/case/coalesce type resolution handles domains properly select coalesce(4::domainint4, 7) is of (int4) as t; select coalesce(4::domainint4, 7) is of (domainint4) as f; select coalesce(4::domainint4, 7::domainint4) is of (domainint4) as t; drop table basictest; drop domain domainvarchar restrict; drop domain domainnumeric restrict; drop domain domainint4 restrict; drop domain domaintext; -- Test domains over array types create domain domainint4arr int4[1]; create domain domainchar4arr varchar(4)[2][3]; create table domarrtest ( testint4arr domainint4arr , testchar4arr domainchar4arr ); INSERT INTO domarrtest values ('{2,2}', '{{"a","b"},{"c","d"}}'); INSERT INTO domarrtest values ('{{2,2},{2,2}}', '{{"a","b"}}'); INSERT INTO domarrtest values ('{2,2}', '{{"a","b"},{"c","d"},{"e","f"}}'); INSERT INTO domarrtest values ('{2,2}', '{{"a"},{"c"}}'); INSERT INTO domarrtest values (NULL, '{{"a","b","c"},{"d","e","f"}}'); INSERT INTO domarrtest values (NULL, '{{"toolong","b","c"},{"d","e","f"}}'); INSERT INTO domarrtest (testint4arr[1], testint4arr[3]) values (11,22); select * from domarrtest; select testint4arr[1], testchar4arr[2:2] from domarrtest; select array_dims(testint4arr), array_dims(testchar4arr) from domarrtest; COPY domarrtest FROM stdin; {3,4} {q,w,e} \N \N \. COPY domarrtest FROM stdin; -- fail {3,4} {qwerty,w,e} \. select * from domarrtest; update domarrtest set testint4arr[1] = testint4arr[1] + 1, testint4arr[3] = testint4arr[3] - 1 where testchar4arr is null; select * from domarrtest where testchar4arr is null; drop table domarrtest; drop domain domainint4arr restrict; drop domain domainchar4arr restrict; create domain dia as int[]; select '{1,2,3}'::dia; select array_dims('{1,2,3}'::dia); select pg_typeof('{1,2,3}'::dia); select pg_typeof('{1,2,3}'::dia || 42); -- should be int[] not dia drop domain dia; -- Test domains over composites create type comptype as (r float8, i float8); create domain dcomptype as comptype; create table dcomptable (d1 dcomptype unique); insert into dcomptable values (row(1,2)::dcomptype); insert into dcomptable values (row(3,4)::comptype); insert into dcomptable values (row(1,2)::dcomptype); -- fail on uniqueness insert into dcomptable (d1.r) values(11); select * from dcomptable; select (d1).r, (d1).i, (d1).* from dcomptable; update dcomptable set d1.r = (d1).r + 1 where (d1).i > 0; select * from dcomptable; alter domain dcomptype add constraint c1 check ((value).r <= (value).i); alter domain dcomptype add constraint c2 check ((value).r > (value).i); -- fail select row(2,1)::dcomptype; -- fail insert into dcomptable values (row(1,2)::comptype); insert into dcomptable values (row(2,1)::comptype); -- fail insert into dcomptable (d1.r) values(99); insert into dcomptable (d1.r, d1.i) values(99, 100); insert into dcomptable (d1.r, d1.i) values(100, 99); -- fail update dcomptable set d1.r = (d1).r + 1 where (d1).i > 0; -- fail update dcomptable set d1.r = (d1).r - 1, d1.i = (d1).i + 1 where (d1).i > 0; select * from dcomptable; explain (verbose, costs off) update dcomptable set d1.r = (d1).r - 1, d1.i = (d1).i + 1 where (d1).i > 0; create rule silly as on delete to dcomptable do instead update dcomptable set d1.r = (d1).r - 1, d1.i = (d1).i + 1 where (d1).i > 0; \d+ dcomptable drop table dcomptable; drop type comptype cascade; -- check altering and dropping columns used by domain constraints create type comptype as (r float8, i float8); create domain dcomptype as comptype; alter domain dcomptype add constraint c1 check ((value).r > 0); comment on constraint c1 on domain dcomptype is 'random commentary'; select row(0,1)::dcomptype; -- fail alter type comptype alter attribute r type varchar; -- fail alter type comptype alter attribute r type bigint; alter type comptype drop attribute r; -- fail alter type comptype drop attribute i; select conname, obj_description(oid, 'pg_constraint') from pg_constraint where contypid = 'dcomptype'::regtype; -- check comment is still there drop type comptype cascade; -- Test domains over arrays of composite create type comptype as (r float8, i float8); create domain dcomptypea as comptype[]; create table dcomptable (d1 dcomptypea unique); insert into dcomptable values (array[row(1,2)]::dcomptypea); insert into dcomptable values (array[row(3,4), row(5,6)]::comptype[]); insert into dcomptable values (array[row(7,8)::comptype, row(9,10)::comptype]); insert into dcomptable values (array[row(1,2)]::dcomptypea); -- fail on uniqueness insert into dcomptable (d1[1]) values(row(9,10)); insert into dcomptable (d1[1].r) values(11); select * from dcomptable; select d1[2], d1[1].r, d1[1].i from dcomptable; update dcomptable set d1[2] = row(d1[2].i, d1[2].r); select * from dcomptable; update dcomptable set d1[1].r = d1[1].r + 1 where d1[1].i > 0; select * from dcomptable; alter domain dcomptypea add constraint c1 check (value[1].r <= value[1].i); alter domain dcomptypea add constraint c2 check (value[1].r > value[1].i); -- fail select array[row(2,1)]::dcomptypea; -- fail insert into dcomptable values (array[row(1,2)]::comptype[]); insert into dcomptable values (array[row(2,1)]::comptype[]); -- fail insert into dcomptable (d1[1].r) values(99); insert into dcomptable (d1[1].r, d1[1].i) values(99, 100); insert into dcomptable (d1[1].r, d1[1].i) values(100, 99); -- fail update dcomptable set d1[1].r = d1[1].r + 1 where d1[1].i > 0; -- fail update dcomptable set d1[1].r = d1[1].r - 1, d1[1].i = d1[1].i + 1 where d1[1].i > 0; select * from dcomptable; explain (verbose, costs off) update dcomptable set d1[1].r = d1[1].r - 1, d1[1].i = d1[1].i + 1 where d1[1].i > 0; create rule silly as on delete to dcomptable do instead update dcomptable set d1[1].r = d1[1].r - 1, d1[1].i = d1[1].i + 1 where d1[1].i > 0; \d+ dcomptable drop table dcomptable; drop type comptype cascade; -- Test arrays over domains create domain posint as int check (value > 0); create table pitable (f1 posint[]); insert into pitable values(array[42]); insert into pitable values(array[-1]); -- fail insert into pitable values('{0}'); -- fail update pitable set f1[1] = f1[1] + 1; update pitable set f1[1] = 0; -- fail select * from pitable; drop table pitable; create domain vc4 as varchar(4); create table vc4table (f1 vc4[]); insert into vc4table values(array['too long']); -- fail insert into vc4table values(array['too long']::vc4[]); -- cast truncates select * from vc4table; drop table vc4table; drop type vc4; -- You can sort of fake arrays-of-arrays by putting a domain in between create domain dposinta as posint[]; create table dposintatable (f1 dposinta[]); insert into dposintatable values(array[array[42]]); -- fail insert into dposintatable values(array[array[42]::posint[]]); -- still fail insert into dposintatable values(array[array[42]::dposinta]); -- but this works select f1, f1[1], (f1[1])[1] from dposintatable; select pg_typeof(f1) from dposintatable; select pg_typeof(f1[1]) from dposintatable; select pg_typeof(f1[1][1]) from dposintatable; select pg_typeof((f1[1])[1]) from dposintatable; update dposintatable set f1[2] = array[99]; select f1, f1[1], (f1[2])[1] from dposintatable; -- it'd be nice if you could do something like this, but for now you can't: update dposintatable set f1[2][1] = array[97]; -- maybe someday we can make this syntax work: update dposintatable set (f1[2])[1] = array[98]; drop table dposintatable; drop domain posint cascade; -- Test not-null restrictions create domain dnotnull varchar(15) NOT NULL; create domain dnull varchar(15); create domain dcheck varchar(15) NOT NULL CHECK (VALUE = 'a' OR VALUE = 'c' OR VALUE = 'd'); create table nulltest ( col1 dnotnull , col2 dnotnull NULL -- NOT NULL in the domain cannot be overridden , col3 dnull NOT NULL , col4 dnull , col5 dcheck CHECK (col5 IN ('c', 'd')) ); INSERT INTO nulltest DEFAULT VALUES; INSERT INTO nulltest values ('a', 'b', 'c', 'd', 'c'); -- Good insert into nulltest values ('a', 'b', 'c', 'd', NULL); insert into nulltest values ('a', 'b', 'c', 'd', 'a'); INSERT INTO nulltest values (NULL, 'b', 'c', 'd', 'd'); INSERT INTO nulltest values ('a', NULL, 'c', 'd', 'c'); INSERT INTO nulltest values ('a', 'b', NULL, 'd', 'c'); INSERT INTO nulltest values ('a', 'b', 'c', NULL, 'd'); -- Good -- Test copy COPY nulltest FROM stdin; --fail a b \N d d \. COPY nulltest FROM stdin; --fail a b c d \N \. -- Last row is bad COPY nulltest FROM stdin; a b c \N c a b c \N d a b c \N a \. select * from nulltest; -- Test out coerced (casted) constraints SELECT cast('1' as dnotnull); SELECT cast(NULL as dnotnull); -- fail SELECT cast(cast(NULL as dnull) as dnotnull); -- fail SELECT cast(col4 as dnotnull) from nulltest; -- fail -- cleanup drop table nulltest; drop domain dnotnull restrict; drop domain dnull restrict; drop domain dcheck restrict; create domain ddef1 int4 DEFAULT 3; create domain ddef2 oid DEFAULT '12'; -- Type mixing, function returns int8 create domain ddef3 text DEFAULT 5; create sequence ddef4_seq; create domain ddef4 int4 DEFAULT nextval('ddef4_seq'); create domain ddef5 numeric(8,2) NOT NULL DEFAULT '12.12'; create table defaulttest ( col1 ddef1 , col2 ddef2 , col3 ddef3 , col4 ddef4 PRIMARY KEY , col5 ddef1 NOT NULL DEFAULT NULL , col6 ddef2 DEFAULT '88' , col7 ddef4 DEFAULT 8000 , col8 ddef5 ); insert into defaulttest(col4) values(0); -- fails, col5 defaults to null alter table defaulttest alter column col5 drop default; insert into defaulttest default values; -- succeeds, inserts domain default -- We used to treat SET DEFAULT NULL as equivalent to DROP DEFAULT; wrong alter table defaulttest alter column col5 set default null; insert into defaulttest(col4) values(0); -- fails alter table defaulttest alter column col5 drop default; insert into defaulttest default values; insert into defaulttest default values; -- Test defaults with copy COPY defaulttest(col5) FROM stdin; 42 \. select * from defaulttest; drop table defaulttest cascade; -- Test ALTER DOMAIN .. NOT NULL create domain dnotnulltest integer; create table domnotnull ( col1 dnotnulltest , col2 dnotnulltest ); insert into domnotnull default values; alter domain dnotnulltest set not null; -- fails update domnotnull set col1 = 5; alter domain dnotnulltest set not null; -- fails update domnotnull set col2 = 6; alter domain dnotnulltest set not null; update domnotnull set col1 = null; -- fails alter domain dnotnulltest drop not null; update domnotnull set col1 = null; drop domain dnotnulltest cascade; -- Test ALTER DOMAIN .. DEFAULT .. create table domdeftest (col1 ddef1); insert into domdeftest default values; select * from domdeftest; alter domain ddef1 set default '42'; insert into domdeftest default values; select * from domdeftest; alter domain ddef1 drop default; insert into domdeftest default values; select * from domdeftest; drop table domdeftest; -- Test ALTER DOMAIN .. CONSTRAINT .. create domain con as integer; create table domcontest (col1 con); insert into domcontest values (1); insert into domcontest values (2); alter domain con add constraint t check (VALUE < 1); -- fails alter domain con add constraint t check (VALUE < 34); alter domain con add check (VALUE > 0); insert into domcontest values (-5); -- fails insert into domcontest values (42); -- fails insert into domcontest values (5); alter domain con drop constraint t; insert into domcontest values (-5); --fails insert into domcontest values (42); alter domain con drop constraint nonexistent; alter domain con drop constraint if exists nonexistent; -- Test ALTER DOMAIN .. CONSTRAINT .. NOT VALID create domain things AS INT; CREATE TABLE thethings (stuff things); INSERT INTO thethings (stuff) VALUES (55); ALTER DOMAIN things ADD CONSTRAINT meow CHECK (VALUE < 11); ALTER DOMAIN things ADD CONSTRAINT meow CHECK (VALUE < 11) NOT VALID; ALTER DOMAIN things VALIDATE CONSTRAINT meow; UPDATE thethings SET stuff = 10; ALTER DOMAIN things VALIDATE CONSTRAINT meow; -- Confirm ALTER DOMAIN with RULES. create table domtab (col1 integer); create domain dom as integer; create view domview as select cast(col1 as dom) from domtab; insert into domtab (col1) values (null); insert into domtab (col1) values (5); select * from domview; alter domain dom set not null; select * from domview; -- fail alter domain dom drop not null; select * from domview; alter domain dom add constraint domchkgt6 check(value > 6); select * from domview; --fail alter domain dom drop constraint domchkgt6 restrict; select * from domview; -- cleanup drop domain ddef1 restrict; drop domain ddef2 restrict; drop domain ddef3 restrict; drop domain ddef4 restrict; drop domain ddef5 restrict; drop sequence ddef4_seq; -- Test domains over domains create domain vchar4 varchar(4); create domain dinter vchar4 check (substring(VALUE, 1, 1) = 'x'); create domain dtop dinter check (substring(VALUE, 2, 1) = '1'); select 'x123'::dtop; select 'x1234'::dtop; -- explicit coercion should truncate select 'y1234'::dtop; -- fail select 'y123'::dtop; -- fail select 'yz23'::dtop; -- fail select 'xz23'::dtop; -- fail create temp table dtest(f1 dtop); insert into dtest values('x123'); insert into dtest values('x1234'); -- fail, implicit coercion insert into dtest values('y1234'); -- fail, implicit coercion insert into dtest values('y123'); -- fail insert into dtest values('yz23'); -- fail insert into dtest values('xz23'); -- fail drop table dtest; drop domain vchar4 cascade; -- Make sure that constraints of newly-added domain columns are -- enforced correctly, even if there's no default value for the new -- column. Per bug #1433 create domain str_domain as text not null; create table domain_test (a int, b int); insert into domain_test values (1, 2); insert into domain_test values (1, 2); -- should fail alter table domain_test add column c str_domain; create domain str_domain2 as text check (value <> 'foo') default 'foo'; -- should fail alter table domain_test add column d str_domain2; -- Check that domain constraints on prepared statement parameters of -- unknown type are enforced correctly. create domain pos_int as int4 check (value > 0) not null; prepare s1 as select $1::pos_int = 10 as "is_ten"; execute s1(10); execute s1(0); -- should fail execute s1(NULL); -- should fail -- Check that domain constraints on plpgsql function parameters, results, -- and local variables are enforced correctly. create function doubledecrement(p1 pos_int) returns pos_int as $$ declare v pos_int; begin return p1; end$$ language plpgsql; select doubledecrement(3); -- fail because of implicit null assignment create or replace function doubledecrement(p1 pos_int) returns pos_int as $$ declare v pos_int := 0; begin return p1; end$$ language plpgsql; select doubledecrement(3); -- fail at initialization assignment create or replace function doubledecrement(p1 pos_int) returns pos_int as $$ declare v pos_int := 1; begin v := p1 - 1; return v - 1; end$$ language plpgsql; select doubledecrement(null); -- fail before call select doubledecrement(0); -- fail before call select doubledecrement(1); -- fail at assignment to v select doubledecrement(2); -- fail at return select doubledecrement(3); -- good -- Check that ALTER DOMAIN tests columns of derived types create domain posint as int4; -- Currently, this doesn't work for composite types, but verify it complains create type ddtest1 as (f1 posint); create table ddtest2(f1 ddtest1); insert into ddtest2 values(row(-1)); alter domain posint add constraint c1 check(value >= 0); drop table ddtest2; -- Likewise for domains within arrays of composite create table ddtest2(f1 ddtest1[]); insert into ddtest2 values('{(-1)}'); alter domain posint add constraint c1 check(value >= 0); drop table ddtest2; -- Likewise for domains within domains over composite create domain ddtest1d as ddtest1; create table ddtest2(f1 ddtest1d); insert into ddtest2 values('(-1)'); alter domain posint add constraint c1 check(value >= 0); drop table ddtest2; drop domain ddtest1d; -- Likewise for domains within domains over array of composite create domain ddtest1d as ddtest1[]; create table ddtest2(f1 ddtest1d); insert into ddtest2 values('{(-1)}'); alter domain posint add constraint c1 check(value >= 0); drop table ddtest2; drop domain ddtest1d; -- Doesn't work for ranges, either create type rposint as range (subtype = posint); create table ddtest2(f1 rposint); insert into ddtest2 values('(-1,3]'); alter domain posint add constraint c1 check(value >= 0); drop table ddtest2; drop type rposint; alter domain posint add constraint c1 check(value >= 0); create domain posint2 as posint check (value % 2 = 0); create table ddtest2(f1 posint2); insert into ddtest2 values(11); -- fail insert into ddtest2 values(-2); -- fail insert into ddtest2 values(2); alter domain posint add constraint c2 check(value >= 10); -- fail alter domain posint add constraint c2 check(value > 0); -- OK drop table ddtest2; drop type ddtest1; drop domain posint cascade; -- -- Check enforcement of domain-related typmod in plpgsql (bug #5717) -- create or replace function array_elem_check(numeric) returns numeric as $$ declare x numeric(4,2)[1]; begin x[1] := $1; return x[1]; end$$ language plpgsql; select array_elem_check(121.00); select array_elem_check(1.23456); create domain mynums as numeric(4,2)[1]; create or replace function array_elem_check(numeric) returns numeric as $$ declare x mynums; begin x[1] := $1; return x[1]; end$$ language plpgsql; select array_elem_check(121.00); select array_elem_check(1.23456); create domain mynums2 as mynums; create or replace function array_elem_check(numeric) returns numeric as $$ declare x mynums2; begin x[1] := $1; return x[1]; end$$ language plpgsql; select array_elem_check(121.00); select array_elem_check(1.23456); drop function array_elem_check(numeric); -- -- Check enforcement of array-level domain constraints -- create domain orderedpair as int[2] check (value[1] < value[2]); select array[1,2]::orderedpair; select array[2,1]::orderedpair; -- fail create temp table op (f1 orderedpair); insert into op values (array[1,2]); insert into op values (array[2,1]); -- fail update op set f1[2] = 3; update op set f1[2] = 0; -- fail select * from op; create or replace function array_elem_check(int) returns int as $$ declare x orderedpair := '{1,2}'; begin x[2] := $1; return x[2]; end$$ language plpgsql; select array_elem_check(3); select array_elem_check(-1); drop function array_elem_check(int); -- -- Check enforcement of changing constraints in plpgsql -- create domain di as int; create function dom_check(int) returns di as $$ declare d di; begin d := $1::di; return d; end $$ language plpgsql immutable; select dom_check(0); alter domain di add constraint pos check (value > 0); select dom_check(0); -- fail alter domain di drop constraint pos; select dom_check(0); -- implicit cast during assignment is a separate code path, test that too create or replace function dom_check(int) returns di as $$ declare d di; begin d := $1; return d; end $$ language plpgsql immutable; select dom_check(0); alter domain di add constraint pos check (value > 0); select dom_check(0); -- fail alter domain di drop constraint pos; select dom_check(0); drop function dom_check(int); drop domain di; -- -- Check use of a (non-inline-able) SQL function in a domain constraint; -- this has caused issues in the past -- create function sql_is_distinct_from(anyelement, anyelement) returns boolean language sql as 'select $1 is distinct from $2 limit 1'; create domain inotnull int check (sql_is_distinct_from(value, null)); select 1::inotnull; select null::inotnull; create table dom_table (x inotnull); insert into dom_table values ('1'); insert into dom_table values (1); insert into dom_table values (null); drop table dom_table; drop domain inotnull; drop function sql_is_distinct_from(anyelement, anyelement); -- -- Renaming -- create domain testdomain1 as int; alter domain testdomain1 rename to testdomain2; alter type testdomain2 rename to testdomain3; -- alter type also works drop domain testdomain3; -- -- Renaming domain constraints -- create domain testdomain1 as int constraint unsigned check (value > 0); alter domain testdomain1 rename constraint unsigned to unsigned_foo; alter domain testdomain1 drop constraint unsigned_foo; drop domain testdomain1; libpg_query-13-2.1.0/test/sql/postgres_regress/drop_if_exists.sql000066400000000000000000000213431413137616400252060ustar00rootroot00000000000000-- -- IF EXISTS tests -- -- table (will be really dropped at the end) DROP TABLE test_exists; DROP TABLE IF EXISTS test_exists; CREATE TABLE test_exists (a int, b text); -- view DROP VIEW test_view_exists; DROP VIEW IF EXISTS test_view_exists; CREATE VIEW test_view_exists AS select * from test_exists; DROP VIEW IF EXISTS test_view_exists; DROP VIEW test_view_exists; -- index DROP INDEX test_index_exists; DROP INDEX IF EXISTS test_index_exists; CREATE INDEX test_index_exists on test_exists(a); DROP INDEX IF EXISTS test_index_exists; DROP INDEX test_index_exists; -- sequence DROP SEQUENCE test_sequence_exists; DROP SEQUENCE IF EXISTS test_sequence_exists; CREATE SEQUENCE test_sequence_exists; DROP SEQUENCE IF EXISTS test_sequence_exists; DROP SEQUENCE test_sequence_exists; -- schema DROP SCHEMA test_schema_exists; DROP SCHEMA IF EXISTS test_schema_exists; CREATE SCHEMA test_schema_exists; DROP SCHEMA IF EXISTS test_schema_exists; DROP SCHEMA test_schema_exists; -- type DROP TYPE test_type_exists; DROP TYPE IF EXISTS test_type_exists; CREATE type test_type_exists as (a int, b text); DROP TYPE IF EXISTS test_type_exists; DROP TYPE test_type_exists; -- domain DROP DOMAIN test_domain_exists; DROP DOMAIN IF EXISTS test_domain_exists; CREATE domain test_domain_exists as int not null check (value > 0); DROP DOMAIN IF EXISTS test_domain_exists; DROP DOMAIN test_domain_exists; --- --- role/user/group --- CREATE USER regress_test_u1; CREATE ROLE regress_test_r1; CREATE GROUP regress_test_g1; DROP USER regress_test_u2; DROP USER IF EXISTS regress_test_u1, regress_test_u2; DROP USER regress_test_u1; DROP ROLE regress_test_r2; DROP ROLE IF EXISTS regress_test_r1, regress_test_r2; DROP ROLE regress_test_r1; DROP GROUP regress_test_g2; DROP GROUP IF EXISTS regress_test_g1, regress_test_g2; DROP GROUP regress_test_g1; -- collation DROP COLLATION IF EXISTS test_collation_exists; -- conversion DROP CONVERSION test_conversion_exists; DROP CONVERSION IF EXISTS test_conversion_exists; CREATE CONVERSION test_conversion_exists FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; DROP CONVERSION test_conversion_exists; -- text search parser DROP TEXT SEARCH PARSER test_tsparser_exists; DROP TEXT SEARCH PARSER IF EXISTS test_tsparser_exists; -- text search dictionary DROP TEXT SEARCH DICTIONARY test_tsdict_exists; DROP TEXT SEARCH DICTIONARY IF EXISTS test_tsdict_exists; CREATE TEXT SEARCH DICTIONARY test_tsdict_exists ( Template=ispell, DictFile=ispell_sample, AffFile=ispell_sample ); DROP TEXT SEARCH DICTIONARY test_tsdict_exists; -- test search template DROP TEXT SEARCH TEMPLATE test_tstemplate_exists; DROP TEXT SEARCH TEMPLATE IF EXISTS test_tstemplate_exists; -- text search configuration DROP TEXT SEARCH CONFIGURATION test_tsconfig_exists; DROP TEXT SEARCH CONFIGURATION IF EXISTS test_tsconfig_exists; CREATE TEXT SEARCH CONFIGURATION test_tsconfig_exists (COPY=english); DROP TEXT SEARCH CONFIGURATION test_tsconfig_exists; -- extension DROP EXTENSION test_extension_exists; DROP EXTENSION IF EXISTS test_extension_exists; -- functions DROP FUNCTION test_function_exists(); DROP FUNCTION IF EXISTS test_function_exists(); DROP FUNCTION test_function_exists(int, text, int[]); DROP FUNCTION IF EXISTS test_function_exists(int, text, int[]); -- aggregate DROP AGGREGATE test_aggregate_exists(*); DROP AGGREGATE IF EXISTS test_aggregate_exists(*); DROP AGGREGATE test_aggregate_exists(int); DROP AGGREGATE IF EXISTS test_aggregate_exists(int); -- operator DROP OPERATOR @#@ (int, int); DROP OPERATOR IF EXISTS @#@ (int, int); CREATE OPERATOR @#@ (leftarg = int8, rightarg = int8, procedure = int8xor); DROP OPERATOR @#@ (int8, int8); -- language DROP LANGUAGE test_language_exists; DROP LANGUAGE IF EXISTS test_language_exists; -- cast DROP CAST (text AS text); DROP CAST IF EXISTS (text AS text); -- trigger DROP TRIGGER test_trigger_exists ON test_exists; DROP TRIGGER IF EXISTS test_trigger_exists ON test_exists; DROP TRIGGER test_trigger_exists ON no_such_table; DROP TRIGGER IF EXISTS test_trigger_exists ON no_such_table; DROP TRIGGER test_trigger_exists ON no_such_schema.no_such_table; DROP TRIGGER IF EXISTS test_trigger_exists ON no_such_schema.no_such_table; CREATE TRIGGER test_trigger_exists BEFORE UPDATE ON test_exists FOR EACH ROW EXECUTE PROCEDURE suppress_redundant_updates_trigger(); DROP TRIGGER test_trigger_exists ON test_exists; -- rule DROP RULE test_rule_exists ON test_exists; DROP RULE IF EXISTS test_rule_exists ON test_exists; DROP RULE test_rule_exists ON no_such_table; DROP RULE IF EXISTS test_rule_exists ON no_such_table; DROP RULE test_rule_exists ON no_such_schema.no_such_table; DROP RULE IF EXISTS test_rule_exists ON no_such_schema.no_such_table; CREATE RULE test_rule_exists AS ON INSERT TO test_exists DO INSTEAD INSERT INTO test_exists VALUES (NEW.a, NEW.b || NEW.a::text); DROP RULE test_rule_exists ON test_exists; -- foreign data wrapper DROP FOREIGN DATA WRAPPER test_fdw_exists; DROP FOREIGN DATA WRAPPER IF EXISTS test_fdw_exists; -- foreign server DROP SERVER test_server_exists; DROP SERVER IF EXISTS test_server_exists; -- operator class DROP OPERATOR CLASS test_operator_class USING btree; DROP OPERATOR CLASS IF EXISTS test_operator_class USING btree; DROP OPERATOR CLASS test_operator_class USING no_such_am; DROP OPERATOR CLASS IF EXISTS test_operator_class USING no_such_am; -- operator family DROP OPERATOR FAMILY test_operator_family USING btree; DROP OPERATOR FAMILY IF EXISTS test_operator_family USING btree; DROP OPERATOR FAMILY test_operator_family USING no_such_am; DROP OPERATOR FAMILY IF EXISTS test_operator_family USING no_such_am; -- access method DROP ACCESS METHOD no_such_am; DROP ACCESS METHOD IF EXISTS no_such_am; -- drop the table DROP TABLE IF EXISTS test_exists; DROP TABLE test_exists; -- be tolerant with missing schemas, types, etc DROP AGGREGATE IF EXISTS no_such_schema.foo(int); DROP AGGREGATE IF EXISTS foo(no_such_type); DROP AGGREGATE IF EXISTS foo(no_such_schema.no_such_type); DROP CAST IF EXISTS (INTEGER AS no_such_type2); DROP CAST IF EXISTS (no_such_type1 AS INTEGER); DROP CAST IF EXISTS (INTEGER AS no_such_schema.bar); DROP CAST IF EXISTS (no_such_schema.foo AS INTEGER); DROP COLLATION IF EXISTS no_such_schema.foo; DROP CONVERSION IF EXISTS no_such_schema.foo; DROP DOMAIN IF EXISTS no_such_schema.foo; DROP FOREIGN TABLE IF EXISTS no_such_schema.foo; DROP FUNCTION IF EXISTS no_such_schema.foo(); DROP FUNCTION IF EXISTS foo(no_such_type); DROP FUNCTION IF EXISTS foo(no_such_schema.no_such_type); DROP INDEX IF EXISTS no_such_schema.foo; DROP MATERIALIZED VIEW IF EXISTS no_such_schema.foo; DROP OPERATOR IF EXISTS no_such_schema.+ (int, int); DROP OPERATOR IF EXISTS + (no_such_type, no_such_type); DROP OPERATOR IF EXISTS + (no_such_schema.no_such_type, no_such_schema.no_such_type); DROP OPERATOR IF EXISTS # (NONE, no_such_schema.no_such_type); DROP OPERATOR CLASS IF EXISTS no_such_schema.widget_ops USING btree; DROP OPERATOR FAMILY IF EXISTS no_such_schema.float_ops USING btree; DROP RULE IF EXISTS foo ON no_such_schema.bar; DROP SEQUENCE IF EXISTS no_such_schema.foo; DROP TABLE IF EXISTS no_such_schema.foo; DROP TEXT SEARCH CONFIGURATION IF EXISTS no_such_schema.foo; DROP TEXT SEARCH DICTIONARY IF EXISTS no_such_schema.foo; DROP TEXT SEARCH PARSER IF EXISTS no_such_schema.foo; DROP TEXT SEARCH TEMPLATE IF EXISTS no_such_schema.foo; DROP TRIGGER IF EXISTS foo ON no_such_schema.bar; DROP TYPE IF EXISTS no_such_schema.foo; DROP VIEW IF EXISTS no_such_schema.foo; -- Check we receive an ambiguous function error when there are -- multiple matching functions. CREATE FUNCTION test_ambiguous_funcname(int) returns int as $$ select $1; $$ language sql; CREATE FUNCTION test_ambiguous_funcname(text) returns text as $$ select $1; $$ language sql; DROP FUNCTION test_ambiguous_funcname; DROP FUNCTION IF EXISTS test_ambiguous_funcname; -- cleanup DROP FUNCTION test_ambiguous_funcname(int); DROP FUNCTION test_ambiguous_funcname(text); -- Likewise for procedures. CREATE PROCEDURE test_ambiguous_procname(int) as $$ begin end; $$ language plpgsql; CREATE PROCEDURE test_ambiguous_procname(text) as $$ begin end; $$ language plpgsql; DROP PROCEDURE test_ambiguous_procname; DROP PROCEDURE IF EXISTS test_ambiguous_procname; -- Check we get a similar error if we use ROUTINE instead of PROCEDURE. DROP ROUTINE IF EXISTS test_ambiguous_procname; -- cleanup DROP PROCEDURE test_ambiguous_procname(int); DROP PROCEDURE test_ambiguous_procname(text); -- This test checks both the functionality of 'if exists' and the syntax -- of the drop database command. drop database test_database_exists (force); drop database test_database_exists with (force); drop database if exists test_database_exists (force); drop database if exists test_database_exists with (force); libpg_query-13-2.1.0/test/sql/postgres_regress/drop_operator.sql000066400000000000000000000025271413137616400250470ustar00rootroot00000000000000CREATE OPERATOR === ( PROCEDURE = int8eq, LEFTARG = bigint, RIGHTARG = bigint, COMMUTATOR = === ); CREATE OPERATOR !== ( PROCEDURE = int8ne, LEFTARG = bigint, RIGHTARG = bigint, NEGATOR = ===, COMMUTATOR = !== ); DROP OPERATOR !==(bigint, bigint); SELECT ctid, oprcom FROM pg_catalog.pg_operator fk WHERE oprcom != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.oprcom); SELECT ctid, oprnegate FROM pg_catalog.pg_operator fk WHERE oprnegate != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.oprnegate); DROP OPERATOR ===(bigint, bigint); CREATE OPERATOR <| ( PROCEDURE = int8lt, LEFTARG = bigint, RIGHTARG = bigint ); CREATE OPERATOR |> ( PROCEDURE = int8gt, LEFTARG = bigint, RIGHTARG = bigint, NEGATOR = <|, COMMUTATOR = <| ); DROP OPERATOR |>(bigint, bigint); SELECT ctid, oprcom FROM pg_catalog.pg_operator fk WHERE oprcom != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.oprcom); SELECT ctid, oprnegate FROM pg_catalog.pg_operator fk WHERE oprnegate != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.oprnegate); DROP OPERATOR <|(bigint, bigint); libpg_query-13-2.1.0/test/sql/postgres_regress/enum.sql000066400000000000000000000224521413137616400231330ustar00rootroot00000000000000-- -- Enum tests -- CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple'); -- -- Did it create the right number of rows? -- SELECT COUNT(*) FROM pg_enum WHERE enumtypid = 'rainbow'::regtype; -- -- I/O functions -- SELECT 'red'::rainbow; SELECT 'mauve'::rainbow; -- -- adding new values -- CREATE TYPE planets AS ENUM ( 'venus', 'earth', 'mars' ); SELECT enumlabel, enumsortorder FROM pg_enum WHERE enumtypid = 'planets'::regtype ORDER BY 2; ALTER TYPE planets ADD VALUE 'uranus'; SELECT enumlabel, enumsortorder FROM pg_enum WHERE enumtypid = 'planets'::regtype ORDER BY 2; ALTER TYPE planets ADD VALUE 'mercury' BEFORE 'venus'; ALTER TYPE planets ADD VALUE 'saturn' BEFORE 'uranus'; ALTER TYPE planets ADD VALUE 'jupiter' AFTER 'mars'; ALTER TYPE planets ADD VALUE 'neptune' AFTER 'uranus'; SELECT enumlabel, enumsortorder FROM pg_enum WHERE enumtypid = 'planets'::regtype ORDER BY 2; SELECT enumlabel, enumsortorder FROM pg_enum WHERE enumtypid = 'planets'::regtype ORDER BY enumlabel::planets; -- errors for adding labels ALTER TYPE planets ADD VALUE 'plutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutoplutopluto'; ALTER TYPE planets ADD VALUE 'pluto' AFTER 'zeus'; -- if not exists tests -- existing value gives error ALTER TYPE planets ADD VALUE 'mercury'; -- unless IF NOT EXISTS is specified ALTER TYPE planets ADD VALUE IF NOT EXISTS 'mercury'; -- should be neptune, not mercury SELECT enum_last(NULL::planets); ALTER TYPE planets ADD VALUE IF NOT EXISTS 'pluto'; -- should be pluto, i.e. the new value SELECT enum_last(NULL::planets); -- -- Test inserting so many values that we have to renumber -- create type insenum as enum ('L1', 'L2'); alter type insenum add value 'i1' before 'L2'; alter type insenum add value 'i2' before 'L2'; alter type insenum add value 'i3' before 'L2'; alter type insenum add value 'i4' before 'L2'; alter type insenum add value 'i5' before 'L2'; alter type insenum add value 'i6' before 'L2'; alter type insenum add value 'i7' before 'L2'; alter type insenum add value 'i8' before 'L2'; alter type insenum add value 'i9' before 'L2'; alter type insenum add value 'i10' before 'L2'; alter type insenum add value 'i11' before 'L2'; alter type insenum add value 'i12' before 'L2'; alter type insenum add value 'i13' before 'L2'; alter type insenum add value 'i14' before 'L2'; alter type insenum add value 'i15' before 'L2'; alter type insenum add value 'i16' before 'L2'; alter type insenum add value 'i17' before 'L2'; alter type insenum add value 'i18' before 'L2'; alter type insenum add value 'i19' before 'L2'; alter type insenum add value 'i20' before 'L2'; alter type insenum add value 'i21' before 'L2'; alter type insenum add value 'i22' before 'L2'; alter type insenum add value 'i23' before 'L2'; alter type insenum add value 'i24' before 'L2'; alter type insenum add value 'i25' before 'L2'; alter type insenum add value 'i26' before 'L2'; alter type insenum add value 'i27' before 'L2'; alter type insenum add value 'i28' before 'L2'; alter type insenum add value 'i29' before 'L2'; alter type insenum add value 'i30' before 'L2'; -- The exact values of enumsortorder will now depend on the local properties -- of float4, but in any reasonable implementation we should get at least -- 20 splits before having to renumber; so only hide values > 20. SELECT enumlabel, case when enumsortorder > 20 then null else enumsortorder end as so FROM pg_enum WHERE enumtypid = 'insenum'::regtype ORDER BY enumsortorder; -- -- Basic table creation, row selection -- CREATE TABLE enumtest (col rainbow); INSERT INTO enumtest values ('red'), ('orange'), ('yellow'), ('green'); COPY enumtest FROM stdin; blue purple \. SELECT * FROM enumtest; -- -- Operators, no index -- SELECT * FROM enumtest WHERE col = 'orange'; SELECT * FROM enumtest WHERE col <> 'orange' ORDER BY col; SELECT * FROM enumtest WHERE col > 'yellow' ORDER BY col; SELECT * FROM enumtest WHERE col >= 'yellow' ORDER BY col; SELECT * FROM enumtest WHERE col < 'green' ORDER BY col; SELECT * FROM enumtest WHERE col <= 'green' ORDER BY col; -- -- Cast to/from text -- SELECT 'red'::rainbow::text || 'hithere'; SELECT 'red'::text::rainbow = 'red'::rainbow; -- -- Aggregates -- SELECT min(col) FROM enumtest; SELECT max(col) FROM enumtest; SELECT max(col) FROM enumtest WHERE col < 'green'; -- -- Index tests, force use of index -- SET enable_seqscan = off; SET enable_bitmapscan = off; -- -- Btree index / opclass with the various operators -- CREATE UNIQUE INDEX enumtest_btree ON enumtest USING btree (col); SELECT * FROM enumtest WHERE col = 'orange'; SELECT * FROM enumtest WHERE col <> 'orange' ORDER BY col; SELECT * FROM enumtest WHERE col > 'yellow' ORDER BY col; SELECT * FROM enumtest WHERE col >= 'yellow' ORDER BY col; SELECT * FROM enumtest WHERE col < 'green' ORDER BY col; SELECT * FROM enumtest WHERE col <= 'green' ORDER BY col; SELECT min(col) FROM enumtest; SELECT max(col) FROM enumtest; SELECT max(col) FROM enumtest WHERE col < 'green'; DROP INDEX enumtest_btree; -- -- Hash index / opclass with the = operator -- CREATE INDEX enumtest_hash ON enumtest USING hash (col); SELECT * FROM enumtest WHERE col = 'orange'; DROP INDEX enumtest_hash; -- -- End index tests -- RESET enable_seqscan; RESET enable_bitmapscan; -- -- Domains over enums -- CREATE DOMAIN rgb AS rainbow CHECK (VALUE IN ('red', 'green', 'blue')); SELECT 'red'::rgb; SELECT 'purple'::rgb; SELECT 'purple'::rainbow::rgb; DROP DOMAIN rgb; -- -- Arrays -- SELECT '{red,green,blue}'::rainbow[]; SELECT ('{red,green,blue}'::rainbow[])[2]; SELECT 'red' = ANY ('{red,green,blue}'::rainbow[]); SELECT 'yellow' = ANY ('{red,green,blue}'::rainbow[]); SELECT 'red' = ALL ('{red,green,blue}'::rainbow[]); SELECT 'red' = ALL ('{red,red}'::rainbow[]); -- -- Support functions -- SELECT enum_first(NULL::rainbow); SELECT enum_last('green'::rainbow); SELECT enum_range(NULL::rainbow); SELECT enum_range('orange'::rainbow, 'green'::rainbow); SELECT enum_range(NULL, 'green'::rainbow); SELECT enum_range('orange'::rainbow, NULL); SELECT enum_range(NULL::rainbow, NULL); -- -- User functions, can't test perl/python etc here since may not be compiled. -- CREATE FUNCTION echo_me(anyenum) RETURNS text AS $$ BEGIN RETURN $1::text || 'omg'; END $$ LANGUAGE plpgsql; SELECT echo_me('red'::rainbow); -- -- Concrete function should override generic one -- CREATE FUNCTION echo_me(rainbow) RETURNS text AS $$ BEGIN RETURN $1::text || 'wtf'; END $$ LANGUAGE plpgsql; SELECT echo_me('red'::rainbow); -- -- If we drop the original generic one, we don't have to qualify the type -- anymore, since there's only one match -- DROP FUNCTION echo_me(anyenum); SELECT echo_me('red'); DROP FUNCTION echo_me(rainbow); -- -- RI triggers on enum types -- CREATE TABLE enumtest_parent (id rainbow PRIMARY KEY); CREATE TABLE enumtest_child (parent rainbow REFERENCES enumtest_parent); INSERT INTO enumtest_parent VALUES ('red'); INSERT INTO enumtest_child VALUES ('red'); INSERT INTO enumtest_child VALUES ('blue'); -- fail DELETE FROM enumtest_parent; -- fail -- -- cross-type RI should fail -- CREATE TYPE bogus AS ENUM('good', 'bad', 'ugly'); CREATE TABLE enumtest_bogus_child(parent bogus REFERENCES enumtest_parent); DROP TYPE bogus; -- check renaming a value ALTER TYPE rainbow RENAME VALUE 'red' TO 'crimson'; SELECT enumlabel, enumsortorder FROM pg_enum WHERE enumtypid = 'rainbow'::regtype ORDER BY 2; -- check that renaming a non-existent value fails ALTER TYPE rainbow RENAME VALUE 'red' TO 'crimson'; -- check that renaming to an existent value fails ALTER TYPE rainbow RENAME VALUE 'blue' TO 'green'; -- -- check transactional behaviour of ALTER TYPE ... ADD VALUE -- CREATE TYPE bogus AS ENUM('good'); -- check that we can add new values to existing enums in a transaction -- but we can't use them BEGIN; ALTER TYPE bogus ADD VALUE 'new'; SAVEPOINT x; SELECT 'new'::bogus; -- unsafe ROLLBACK TO x; SELECT enum_first(null::bogus); -- safe SELECT enum_last(null::bogus); -- unsafe ROLLBACK TO x; SELECT enum_range(null::bogus); -- unsafe ROLLBACK TO x; COMMIT; SELECT 'new'::bogus; -- now safe SELECT enumlabel, enumsortorder FROM pg_enum WHERE enumtypid = 'bogus'::regtype ORDER BY 2; -- check that we recognize the case where the enum already existed but was -- modified in the current txn; this should not be considered safe BEGIN; ALTER TYPE bogus RENAME TO bogon; ALTER TYPE bogon ADD VALUE 'bad'; SELECT 'bad'::bogon; ROLLBACK; -- but a renamed value is safe to use later in same transaction BEGIN; ALTER TYPE bogus RENAME VALUE 'good' to 'bad'; SELECT 'bad'::bogus; ROLLBACK; DROP TYPE bogus; -- check that values created during CREATE TYPE can be used in any case BEGIN; CREATE TYPE bogus AS ENUM('good','bad','ugly'); ALTER TYPE bogus RENAME TO bogon; select enum_range(null::bogon); ROLLBACK; -- ideally, we'd allow this usage; but it requires keeping track of whether -- the enum type was created in the current transaction, which is expensive BEGIN; CREATE TYPE bogus AS ENUM('good'); ALTER TYPE bogus RENAME TO bogon; ALTER TYPE bogon ADD VALUE 'bad'; ALTER TYPE bogon ADD VALUE 'ugly'; select enum_range(null::bogon); -- fails ROLLBACK; -- -- Cleanup -- DROP TABLE enumtest_child; DROP TABLE enumtest_parent; DROP TABLE enumtest; DROP TYPE rainbow; -- -- Verify properly cleaned up -- SELECT COUNT(*) FROM pg_type WHERE typname = 'rainbow'; SELECT * FROM pg_enum WHERE NOT EXISTS (SELECT 1 FROM pg_type WHERE pg_type.oid = enumtypid); libpg_query-13-2.1.0/test/sql/postgres_regress/equivclass.sql000066400000000000000000000212701413137616400243430ustar00rootroot00000000000000-- -- Tests for the planner's "equivalence class" mechanism -- -- One thing that's not tested well during normal querying is the logic -- for handling "broken" ECs. This is because an EC can only become broken -- if its underlying btree operator family doesn't include a complete set -- of cross-type equality operators. There are not (and should not be) -- any such families built into Postgres; so we have to hack things up -- to create one. We do this by making two alias types that are really -- int8 (so we need no new C code) and adding only some operators for them -- into the standard integer_ops opfamily. create type int8alias1; create function int8alias1in(cstring) returns int8alias1 strict immutable language internal as 'int8in'; create function int8alias1out(int8alias1) returns cstring strict immutable language internal as 'int8out'; create type int8alias1 ( input = int8alias1in, output = int8alias1out, like = int8 ); create type int8alias2; create function int8alias2in(cstring) returns int8alias2 strict immutable language internal as 'int8in'; create function int8alias2out(int8alias2) returns cstring strict immutable language internal as 'int8out'; create type int8alias2 ( input = int8alias2in, output = int8alias2out, like = int8 ); create cast (int8 as int8alias1) without function; create cast (int8 as int8alias2) without function; create cast (int8alias1 as int8) without function; create cast (int8alias2 as int8) without function; create function int8alias1eq(int8alias1, int8alias1) returns bool strict immutable language internal as 'int8eq'; create operator = ( procedure = int8alias1eq, leftarg = int8alias1, rightarg = int8alias1, commutator = =, restrict = eqsel, join = eqjoinsel, merges ); alter operator family integer_ops using btree add operator 3 = (int8alias1, int8alias1); create function int8alias2eq(int8alias2, int8alias2) returns bool strict immutable language internal as 'int8eq'; create operator = ( procedure = int8alias2eq, leftarg = int8alias2, rightarg = int8alias2, commutator = =, restrict = eqsel, join = eqjoinsel, merges ); alter operator family integer_ops using btree add operator 3 = (int8alias2, int8alias2); create function int8alias1eq(int8, int8alias1) returns bool strict immutable language internal as 'int8eq'; create operator = ( procedure = int8alias1eq, leftarg = int8, rightarg = int8alias1, restrict = eqsel, join = eqjoinsel, merges ); alter operator family integer_ops using btree add operator 3 = (int8, int8alias1); create function int8alias1eq(int8alias1, int8alias2) returns bool strict immutable language internal as 'int8eq'; create operator = ( procedure = int8alias1eq, leftarg = int8alias1, rightarg = int8alias2, restrict = eqsel, join = eqjoinsel, merges ); alter operator family integer_ops using btree add operator 3 = (int8alias1, int8alias2); create function int8alias1lt(int8alias1, int8alias1) returns bool strict immutable language internal as 'int8lt'; create operator < ( procedure = int8alias1lt, leftarg = int8alias1, rightarg = int8alias1 ); alter operator family integer_ops using btree add operator 1 < (int8alias1, int8alias1); create function int8alias1cmp(int8, int8alias1) returns int strict immutable language internal as 'btint8cmp'; alter operator family integer_ops using btree add function 1 int8alias1cmp (int8, int8alias1); create table ec0 (ff int8 primary key, f1 int8, f2 int8); create table ec1 (ff int8 primary key, f1 int8alias1, f2 int8alias2); create table ec2 (xf int8 primary key, x1 int8alias1, x2 int8alias2); -- for the moment we only want to look at nestloop plans set enable_hashjoin = off; set enable_mergejoin = off; -- -- Note that for cases where there's a missing operator, we don't care so -- much whether the plan is ideal as that we don't fail or generate an -- outright incorrect plan. -- explain (costs off) select * from ec0 where ff = f1 and f1 = '42'::int8; explain (costs off) select * from ec0 where ff = f1 and f1 = '42'::int8alias1; explain (costs off) select * from ec1 where ff = f1 and f1 = '42'::int8alias1; explain (costs off) select * from ec1 where ff = f1 and f1 = '42'::int8alias2; explain (costs off) select * from ec1, ec2 where ff = x1 and ff = '42'::int8; explain (costs off) select * from ec1, ec2 where ff = x1 and ff = '42'::int8alias1; explain (costs off) select * from ec1, ec2 where ff = x1 and '42'::int8 = x1; explain (costs off) select * from ec1, ec2 where ff = x1 and x1 = '42'::int8alias1; explain (costs off) select * from ec1, ec2 where ff = x1 and x1 = '42'::int8alias2; create unique index ec1_expr1 on ec1((ff + 1)); create unique index ec1_expr2 on ec1((ff + 2 + 1)); create unique index ec1_expr3 on ec1((ff + 3 + 1)); create unique index ec1_expr4 on ec1((ff + 4)); explain (costs off) select * from ec1, (select ff + 1 as x from (select ff + 2 as ff from ec1 union all select ff + 3 as ff from ec1) ss0 union all select ff + 4 as x from ec1) as ss1 where ss1.x = ec1.f1 and ec1.ff = 42::int8; explain (costs off) select * from ec1, (select ff + 1 as x from (select ff + 2 as ff from ec1 union all select ff + 3 as ff from ec1) ss0 union all select ff + 4 as x from ec1) as ss1 where ss1.x = ec1.f1 and ec1.ff = 42::int8 and ec1.ff = ec1.f1; explain (costs off) select * from ec1, (select ff + 1 as x from (select ff + 2 as ff from ec1 union all select ff + 3 as ff from ec1) ss0 union all select ff + 4 as x from ec1) as ss1, (select ff + 1 as x from (select ff + 2 as ff from ec1 union all select ff + 3 as ff from ec1) ss0 union all select ff + 4 as x from ec1) as ss2 where ss1.x = ec1.f1 and ss1.x = ss2.x and ec1.ff = 42::int8; -- let's try that as a mergejoin set enable_mergejoin = on; set enable_nestloop = off; explain (costs off) select * from ec1, (select ff + 1 as x from (select ff + 2 as ff from ec1 union all select ff + 3 as ff from ec1) ss0 union all select ff + 4 as x from ec1) as ss1, (select ff + 1 as x from (select ff + 2 as ff from ec1 union all select ff + 3 as ff from ec1) ss0 union all select ff + 4 as x from ec1) as ss2 where ss1.x = ec1.f1 and ss1.x = ss2.x and ec1.ff = 42::int8; -- check partially indexed scan set enable_nestloop = on; set enable_mergejoin = off; drop index ec1_expr3; explain (costs off) select * from ec1, (select ff + 1 as x from (select ff + 2 as ff from ec1 union all select ff + 3 as ff from ec1) ss0 union all select ff + 4 as x from ec1) as ss1 where ss1.x = ec1.f1 and ec1.ff = 42::int8; -- let's try that as a mergejoin set enable_mergejoin = on; set enable_nestloop = off; explain (costs off) select * from ec1, (select ff + 1 as x from (select ff + 2 as ff from ec1 union all select ff + 3 as ff from ec1) ss0 union all select ff + 4 as x from ec1) as ss1 where ss1.x = ec1.f1 and ec1.ff = 42::int8; -- check effects of row-level security set enable_nestloop = on; set enable_mergejoin = off; alter table ec1 enable row level security; create policy p1 on ec1 using (f1 < '5'::int8alias1); create user regress_user_ectest; grant select on ec0 to regress_user_ectest; grant select on ec1 to regress_user_ectest; -- without any RLS, we'll treat {a.ff, b.ff, 43} as an EquivalenceClass explain (costs off) select * from ec0 a, ec1 b where a.ff = b.ff and a.ff = 43::bigint::int8alias1; set session authorization regress_user_ectest; -- with RLS active, the non-leakproof a.ff = 43 clause is not treated -- as a suitable source for an EquivalenceClass; currently, this is true -- even though the RLS clause has nothing to do directly with the EC explain (costs off) select * from ec0 a, ec1 b where a.ff = b.ff and a.ff = 43::bigint::int8alias1; reset session authorization; revoke select on ec0 from regress_user_ectest; revoke select on ec1 from regress_user_ectest; drop user regress_user_ectest; -- check that X=X is converted to X IS NOT NULL when appropriate explain (costs off) select * from tenk1 where unique1 = unique1 and unique2 = unique2; -- this could be converted, but isn't at present explain (costs off) select * from tenk1 where unique1 = unique1 or unique2 = unique2; -- check that we recognize equivalence with dummy domains in the way create temp table undername (f1 name, f2 int); create temp view overview as select f1::information_schema.sql_identifier as sqli, f2 from undername; explain (costs off) -- this should not require a sort select * from overview where sqli = 'foo' order by sqli; libpg_query-13-2.1.0/test/sql/postgres_regress/errors.sql000066400000000000000000000134731413137616400235060ustar00rootroot00000000000000-- -- ERRORS -- -- bad in postquel, but ok in PostgreSQL select 1; -- -- UNSUPPORTED STUFF -- doesn't work -- notify pg_class -- -- -- SELECT -- this used to be a syntax error, but now we allow an empty target list select; -- no such relation select * from nonesuch; -- bad name in target list select nonesuch from pg_database; -- empty distinct list isn't OK select distinct from pg_database; -- bad attribute name on lhs of operator select * from pg_database where nonesuch = pg_database.datname; -- bad attribute name on rhs of operator select * from pg_database where pg_database.datname = nonesuch; -- bad attribute name in select distinct on select distinct on (foobar) * from pg_database; -- -- DELETE -- missing relation name (this had better not wildcard!) delete from; -- no such relation delete from nonesuch; -- -- DROP -- missing relation name (this had better not wildcard!) drop table; -- no such relation drop table nonesuch; -- -- ALTER TABLE -- relation renaming -- missing relation name alter table rename; -- no such relation alter table nonesuch rename to newnonesuch; -- no such relation alter table nonesuch rename to stud_emp; -- conflict alter table stud_emp rename to aggtest; -- self-conflict alter table stud_emp rename to stud_emp; -- attribute renaming -- no such relation alter table nonesuchrel rename column nonesuchatt to newnonesuchatt; -- no such attribute alter table emp rename column nonesuchatt to newnonesuchatt; -- conflict alter table emp rename column salary to manager; -- conflict alter table emp rename column salary to ctid; -- -- TRANSACTION STUFF -- not in a xact abort; -- not in a xact end; -- -- CREATE AGGREGATE -- sfunc/finalfunc type disagreement create aggregate newavg2 (sfunc = int4pl, basetype = int4, stype = int4, finalfunc = int2um, initcond = '0'); -- left out basetype create aggregate newcnt1 (sfunc = int4inc, stype = int4, initcond = '0'); -- -- DROP INDEX -- missing index name drop index; -- bad index name drop index 314159; -- no such index drop index nonesuch; -- -- DROP AGGREGATE -- missing aggregate name drop aggregate; -- missing aggregate type drop aggregate newcnt1; -- bad aggregate name drop aggregate 314159 (int); -- bad aggregate type drop aggregate newcnt (nonesuch); -- no such aggregate drop aggregate nonesuch (int4); -- no such aggregate for type drop aggregate newcnt (float4); -- -- DROP FUNCTION -- missing function name drop function (); -- bad function name drop function 314159(); -- no such function drop function nonesuch(); -- -- DROP TYPE -- missing type name drop type; -- bad type name drop type 314159; -- no such type drop type nonesuch; -- -- DROP OPERATOR -- missing everything drop operator; -- bad operator name drop operator equals; -- missing type list drop operator ===; -- missing parentheses drop operator int4, int4; -- missing operator name drop operator (int4, int4); -- missing type list contents drop operator === (); -- no such operator drop operator === (int4); -- no such operator by that name drop operator === (int4, int4); -- no such type1 drop operator = (nonesuch); -- no such type1 drop operator = ( , int4); -- no such type1 drop operator = (nonesuch, int4); -- no such type2 drop operator = (int4, nonesuch); -- no such type2 drop operator = (int4, ); -- -- DROP RULE -- missing rule name drop rule; -- bad rule name drop rule 314159; -- no such rule drop rule nonesuch on noplace; -- these postquel variants are no longer supported drop tuple rule nonesuch; drop instance rule nonesuch on noplace; drop rewrite rule nonesuch; -- -- Check that division-by-zero is properly caught. -- select 1/0; select 1::int8/0; select 1/0::int8; select 1::int2/0; select 1/0::int2; select 1::numeric/0; select 1/0::numeric; select 1::float8/0; select 1/0::float8; select 1::float4/0; select 1/0::float4; -- -- Test psql's reporting of syntax error location -- xxx; CREATE foo; CREATE TABLE ; CREATE TABLE \g INSERT INTO foo VALUES(123) foo; INSERT INTO 123 VALUES(123); INSERT INTO foo VALUES(123) 123 ; -- with a tab CREATE TABLE foo (id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL); -- long line to be truncated on the left CREATE TABLE foo(id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL); -- long line to be truncated on the right CREATE TABLE foo( id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL, id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY); -- long line to be truncated both ways CREATE TABLE foo(id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL); -- long line to be truncated on the left, many lines CREATE TEMPORARY TABLE foo(id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL) ; -- long line to be truncated on the right, many lines CREATE TEMPORARY TABLE foo( id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL, id INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY) ; -- long line to be truncated both ways, many lines CREATE TEMPORARY TABLE foo (id INT4 UNIQUE NOT NULL, idx INT4 UNIQUE NOT NULL, idy INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL, idz INT4 UNIQUE NOT NULL, idv INT4 UNIQUE NOT NULL); -- more than 10 lines... CREATE TEMPORARY TABLE foo (id INT4 UNIQUE NOT NULL , idm INT4 UNIQUE NOT NULL, idx INT4 UNIQUE NOT NULL, idy INT4 UNIQUE NOT NULL, id2 TEXT NOT NULL PRIMARY KEY, id3 INTEGER NOT NUL, id4 INT4 UNIQUE NOT NULL, id5 TEXT UNIQUE NOT NULL, idz INT4 UNIQUE NOT NULL, idv INT4 UNIQUE NOT NULL); libpg_query-13-2.1.0/test/sql/postgres_regress/event_trigger.sql000066400000000000000000000354031413137616400250330ustar00rootroot00000000000000-- should fail, return type mismatch create event trigger regress_event_trigger on ddl_command_start execute procedure pg_backend_pid(); -- OK create function test_event_trigger() returns event_trigger as $$ BEGIN RAISE NOTICE 'test_event_trigger: % %', tg_event, tg_tag; END $$ language plpgsql; -- should fail, can't call it as a plain function SELECT test_event_trigger(); -- should fail, event triggers cannot have declared arguments create function test_event_trigger_arg(name text) returns event_trigger as $$ BEGIN RETURN 1; END $$ language plpgsql; -- should fail, SQL functions cannot be event triggers create function test_event_trigger_sql() returns event_trigger as $$ SELECT 1 $$ language sql; -- should fail, no elephant_bootstrap entry point create event trigger regress_event_trigger on elephant_bootstrap execute procedure test_event_trigger(); -- OK create event trigger regress_event_trigger on ddl_command_start execute procedure test_event_trigger(); -- OK create event trigger regress_event_trigger_end on ddl_command_end execute function test_event_trigger(); -- should fail, food is not a valid filter variable create event trigger regress_event_trigger2 on ddl_command_start when food in ('sandwich') execute procedure test_event_trigger(); -- should fail, sandwich is not a valid command tag create event trigger regress_event_trigger2 on ddl_command_start when tag in ('sandwich') execute procedure test_event_trigger(); -- should fail, create skunkcabbage is not a valid command tag create event trigger regress_event_trigger2 on ddl_command_start when tag in ('create table', 'create skunkcabbage') execute procedure test_event_trigger(); -- should fail, can't have event triggers on event triggers create event trigger regress_event_trigger2 on ddl_command_start when tag in ('DROP EVENT TRIGGER') execute procedure test_event_trigger(); -- should fail, can't have event triggers on global objects create event trigger regress_event_trigger2 on ddl_command_start when tag in ('CREATE ROLE') execute procedure test_event_trigger(); -- should fail, can't have event triggers on global objects create event trigger regress_event_trigger2 on ddl_command_start when tag in ('CREATE DATABASE') execute procedure test_event_trigger(); -- should fail, can't have event triggers on global objects create event trigger regress_event_trigger2 on ddl_command_start when tag in ('CREATE TABLESPACE') execute procedure test_event_trigger(); -- should fail, can't have same filter variable twice create event trigger regress_event_trigger2 on ddl_command_start when tag in ('create table') and tag in ('CREATE FUNCTION') execute procedure test_event_trigger(); -- should fail, can't have arguments create event trigger regress_event_trigger2 on ddl_command_start execute procedure test_event_trigger('argument not allowed'); -- OK create event trigger regress_event_trigger2 on ddl_command_start when tag in ('create table', 'CREATE FUNCTION') execute procedure test_event_trigger(); -- OK comment on event trigger regress_event_trigger is 'test comment'; -- drop as non-superuser should fail create role regress_evt_user; set role regress_evt_user; create event trigger regress_event_trigger_noperms on ddl_command_start execute procedure test_event_trigger(); reset role; -- test enabling and disabling alter event trigger regress_event_trigger disable; -- fires _trigger2 and _trigger_end should fire, but not _trigger create table event_trigger_fire1 (a int); alter event trigger regress_event_trigger enable; set session_replication_role = replica; -- fires nothing create table event_trigger_fire2 (a int); alter event trigger regress_event_trigger enable replica; -- fires only _trigger create table event_trigger_fire3 (a int); alter event trigger regress_event_trigger enable always; -- fires only _trigger create table event_trigger_fire4 (a int); reset session_replication_role; -- fires all three create table event_trigger_fire5 (a int); -- non-top-level command create function f1() returns int language plpgsql as $$ begin create table event_trigger_fire6 (a int); return 0; end $$; select f1(); -- non-top-level command create procedure p1() language plpgsql as $$ begin create table event_trigger_fire7 (a int); end $$; call p1(); -- clean up alter event trigger regress_event_trigger disable; drop table event_trigger_fire2, event_trigger_fire3, event_trigger_fire4, event_trigger_fire5, event_trigger_fire6, event_trigger_fire7; drop routine f1(), p1(); -- regress_event_trigger_end should fire on these commands grant all on table event_trigger_fire1 to public; comment on table event_trigger_fire1 is 'here is a comment'; revoke all on table event_trigger_fire1 from public; drop table event_trigger_fire1; create foreign data wrapper useless; create server useless_server foreign data wrapper useless; create user mapping for regress_evt_user server useless_server; alter default privileges for role regress_evt_user revoke delete on tables from regress_evt_user; -- alter owner to non-superuser should fail alter event trigger regress_event_trigger owner to regress_evt_user; -- alter owner to superuser should work alter role regress_evt_user superuser; alter event trigger regress_event_trigger owner to regress_evt_user; -- should fail, name collision alter event trigger regress_event_trigger rename to regress_event_trigger2; -- OK alter event trigger regress_event_trigger rename to regress_event_trigger3; -- should fail, doesn't exist any more drop event trigger regress_event_trigger; -- should fail, regress_evt_user owns some objects drop role regress_evt_user; -- cleanup before next test -- these are all OK; the second one should emit a NOTICE drop event trigger if exists regress_event_trigger2; drop event trigger if exists regress_event_trigger2; drop event trigger regress_event_trigger3; drop event trigger regress_event_trigger_end; -- test support for dropped objects CREATE SCHEMA schema_one authorization regress_evt_user; CREATE SCHEMA schema_two authorization regress_evt_user; CREATE SCHEMA audit_tbls authorization regress_evt_user; CREATE TEMP TABLE a_temp_tbl (); SET SESSION AUTHORIZATION regress_evt_user; CREATE TABLE schema_one.table_one(a int); CREATE TABLE schema_one."table two"(a int); CREATE TABLE schema_one.table_three(a int); CREATE TABLE audit_tbls.schema_one_table_two(the_value text); CREATE TABLE schema_two.table_two(a int); CREATE TABLE schema_two.table_three(a int, b text); CREATE TABLE audit_tbls.schema_two_table_three(the_value text); CREATE OR REPLACE FUNCTION schema_two.add(int, int) RETURNS int LANGUAGE plpgsql CALLED ON NULL INPUT AS $$ BEGIN RETURN coalesce($1,0) + coalesce($2,0); END; $$; CREATE AGGREGATE schema_two.newton (BASETYPE = int, SFUNC = schema_two.add, STYPE = int); RESET SESSION AUTHORIZATION; CREATE TABLE undroppable_objs ( object_type text, object_identity text ); INSERT INTO undroppable_objs VALUES ('table', 'schema_one.table_three'), ('table', 'audit_tbls.schema_two_table_three'); CREATE TABLE dropped_objects ( type text, schema text, object text ); -- This tests errors raised within event triggers; the one in audit_tbls -- uses 2nd-level recursive invocation via test_evtrig_dropped_objects(). CREATE OR REPLACE FUNCTION undroppable() RETURNS event_trigger LANGUAGE plpgsql AS $$ DECLARE obj record; BEGIN PERFORM 1 FROM pg_tables WHERE tablename = 'undroppable_objs'; IF NOT FOUND THEN RAISE NOTICE 'table undroppable_objs not found, skipping'; RETURN; END IF; FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects() JOIN undroppable_objs USING (object_type, object_identity) LOOP RAISE EXCEPTION 'object % of type % cannot be dropped', obj.object_identity, obj.object_type; END LOOP; END; $$; CREATE EVENT TRIGGER undroppable ON sql_drop EXECUTE PROCEDURE undroppable(); CREATE OR REPLACE FUNCTION test_evtrig_dropped_objects() RETURNS event_trigger LANGUAGE plpgsql AS $$ DECLARE obj record; BEGIN FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects() LOOP IF obj.object_type = 'table' THEN EXECUTE format('DROP TABLE IF EXISTS audit_tbls.%I', format('%s_%s', obj.schema_name, obj.object_name)); END IF; INSERT INTO dropped_objects (type, schema, object) VALUES (obj.object_type, obj.schema_name, obj.object_identity); END LOOP; END $$; CREATE EVENT TRIGGER regress_event_trigger_drop_objects ON sql_drop WHEN TAG IN ('drop table', 'drop function', 'drop view', 'drop owned', 'drop schema', 'alter table') EXECUTE PROCEDURE test_evtrig_dropped_objects(); ALTER TABLE schema_one.table_one DROP COLUMN a; DROP SCHEMA schema_one, schema_two CASCADE; DELETE FROM undroppable_objs WHERE object_identity = 'audit_tbls.schema_two_table_three'; DROP SCHEMA schema_one, schema_two CASCADE; DELETE FROM undroppable_objs WHERE object_identity = 'schema_one.table_three'; DROP SCHEMA schema_one, schema_two CASCADE; SELECT * FROM dropped_objects WHERE schema IS NULL OR schema <> 'pg_toast'; DROP OWNED BY regress_evt_user; SELECT * FROM dropped_objects WHERE type = 'schema'; DROP ROLE regress_evt_user; DROP EVENT TRIGGER regress_event_trigger_drop_objects; DROP EVENT TRIGGER undroppable; CREATE OR REPLACE FUNCTION event_trigger_report_dropped() RETURNS event_trigger LANGUAGE plpgsql AS $$ DECLARE r record; BEGIN FOR r IN SELECT * from pg_event_trigger_dropped_objects() LOOP IF NOT r.normal AND NOT r.original THEN CONTINUE; END IF; RAISE NOTICE 'NORMAL: orig=% normal=% istemp=% type=% identity=% name=% args=%', r.original, r.normal, r.is_temporary, r.object_type, r.object_identity, r.address_names, r.address_args; END LOOP; END; $$; CREATE EVENT TRIGGER regress_event_trigger_report_dropped ON sql_drop EXECUTE PROCEDURE event_trigger_report_dropped(); CREATE SCHEMA evttrig CREATE TABLE one (col_a SERIAL PRIMARY KEY, col_b text DEFAULT 'forty two') CREATE INDEX one_idx ON one (col_b) CREATE TABLE two (col_c INTEGER CHECK (col_c > 0) REFERENCES one DEFAULT 42); -- Partitioned tables with a partitioned index CREATE TABLE evttrig.parted ( id int PRIMARY KEY) PARTITION BY RANGE (id); CREATE TABLE evttrig.part_1_10 PARTITION OF evttrig.parted (id) FOR VALUES FROM (1) TO (10); CREATE TABLE evttrig.part_10_20 PARTITION OF evttrig.parted (id) FOR VALUES FROM (10) TO (20) PARTITION BY RANGE (id); CREATE TABLE evttrig.part_10_15 PARTITION OF evttrig.part_10_20 (id) FOR VALUES FROM (10) TO (15); CREATE TABLE evttrig.part_15_20 PARTITION OF evttrig.part_10_20 (id) FOR VALUES FROM (15) TO (20); ALTER TABLE evttrig.two DROP COLUMN col_c; ALTER TABLE evttrig.one ALTER COLUMN col_b DROP DEFAULT; ALTER TABLE evttrig.one DROP CONSTRAINT one_pkey; DROP INDEX evttrig.one_idx; DROP SCHEMA evttrig CASCADE; DROP TABLE a_temp_tbl; DROP EVENT TRIGGER regress_event_trigger_report_dropped; -- only allowed from within an event trigger function, should fail select pg_event_trigger_table_rewrite_oid(); -- test Table Rewrite Event Trigger CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE EXCEPTION 'rewrites not allowed'; END; $$; create event trigger no_rewrite_allowed on table_rewrite execute procedure test_evtrig_no_rewrite(); create table rewriteme (id serial primary key, foo float, bar timestamptz); insert into rewriteme select x * 1.001 from generate_series(1, 500) as t(x); alter table rewriteme alter column foo type numeric; alter table rewriteme add column baz int default 0; -- test with more than one reason to rewrite a single table CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'Table ''%'' is being rewritten (reason = %)', pg_event_trigger_table_rewrite_oid()::regclass, pg_event_trigger_table_rewrite_reason(); END; $$; alter table rewriteme add column onemore int default 0, add column another int default -1, alter column foo type numeric(10,4); -- shouldn't trigger a table_rewrite event alter table rewriteme alter column foo type numeric(12,4); begin; set timezone to 'UTC'; alter table rewriteme alter column bar type timestamp; set timezone to '0'; alter table rewriteme alter column bar type timestamptz; set timezone to 'Europe/London'; alter table rewriteme alter column bar type timestamp; -- does rewrite rollback; -- typed tables are rewritten when their type changes. Don't emit table -- name, because firing order is not stable. CREATE OR REPLACE FUNCTION test_evtrig_no_rewrite() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'Table is being rewritten (reason = %)', pg_event_trigger_table_rewrite_reason(); END; $$; create type rewritetype as (a int); create table rewritemetoo1 of rewritetype; create table rewritemetoo2 of rewritetype; alter type rewritetype alter attribute a type text cascade; -- but this doesn't work create table rewritemetoo3 (a rewritetype); alter type rewritetype alter attribute a type varchar cascade; drop table rewriteme; drop event trigger no_rewrite_allowed; drop function test_evtrig_no_rewrite(); -- test Row Security Event Trigger RESET SESSION AUTHORIZATION; CREATE TABLE event_trigger_test (a integer, b text); CREATE OR REPLACE FUNCTION start_command() RETURNS event_trigger AS $$ BEGIN RAISE NOTICE '% - ddl_command_start', tg_tag; END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION end_command() RETURNS event_trigger AS $$ BEGIN RAISE NOTICE '% - ddl_command_end', tg_tag; END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION drop_sql_command() RETURNS event_trigger AS $$ BEGIN RAISE NOTICE '% - sql_drop', tg_tag; END; $$ LANGUAGE plpgsql; CREATE EVENT TRIGGER start_rls_command ON ddl_command_start WHEN TAG IN ('CREATE POLICY', 'ALTER POLICY', 'DROP POLICY') EXECUTE PROCEDURE start_command(); CREATE EVENT TRIGGER end_rls_command ON ddl_command_end WHEN TAG IN ('CREATE POLICY', 'ALTER POLICY', 'DROP POLICY') EXECUTE PROCEDURE end_command(); CREATE EVENT TRIGGER sql_drop_command ON sql_drop WHEN TAG IN ('DROP POLICY') EXECUTE PROCEDURE drop_sql_command(); CREATE POLICY p1 ON event_trigger_test USING (FALSE); ALTER POLICY p1 ON event_trigger_test USING (TRUE); ALTER POLICY p1 ON event_trigger_test RENAME TO p2; DROP POLICY p2 ON event_trigger_test; -- Check the object addresses of all the event triggers. SELECT e.evtname, pg_describe_object('pg_event_trigger'::regclass, e.oid, 0) as descr, b.type, b.object_names, b.object_args, pg_identify_object(a.classid, a.objid, a.objsubid) as ident FROM pg_event_trigger as e, LATERAL pg_identify_object_as_address('pg_event_trigger'::regclass, e.oid, 0) as b, LATERAL pg_get_object_address(b.type, b.object_names, b.object_args) as a ORDER BY e.evtname; DROP EVENT TRIGGER start_rls_command; DROP EVENT TRIGGER end_rls_command; DROP EVENT TRIGGER sql_drop_command; libpg_query-13-2.1.0/test/sql/postgres_regress/explain.sql000066400000000000000000000075701413137616400236330ustar00rootroot00000000000000-- -- EXPLAIN -- -- There are many test cases elsewhere that use EXPLAIN as a vehicle for -- checking something else (usually planner behavior). This file is -- concerned with testing EXPLAIN in its own right. -- -- To produce stable regression test output, it's usually necessary to -- ignore details such as exact costs or row counts. These filter -- functions replace changeable output details with fixed strings. create function explain_filter(text) returns setof text language plpgsql as $$ declare ln text; begin for ln in execute $1 loop -- Replace any numeric word with just 'N' ln := regexp_replace(ln, '\m\d+\M', 'N', 'g'); -- In sort output, the above won't match units-suffixed numbers ln := regexp_replace(ln, '\m\d+kB', 'NkB', 'g'); -- Ignore text-mode buffers output because it varies depending -- on the system state CONTINUE WHEN (ln ~ ' +Buffers: .*'); -- Ignore text-mode "Planning:" line because whether it's output -- varies depending on the system state CONTINUE WHEN (ln = 'Planning:'); return next ln; end loop; end; $$; -- To produce valid JSON output, replace numbers with "0" or "0.0" not "N" create function explain_filter_to_json(text) returns jsonb language plpgsql as $$ declare data text := ''; ln text; begin for ln in execute $1 loop -- Replace any numeric word with just '0' ln := regexp_replace(ln, '\m\d+\M', '0', 'g'); data := data || ln; end loop; return data::jsonb; end; $$; -- Simple cases select explain_filter('explain select * from int8_tbl i8'); select explain_filter('explain (analyze) select * from int8_tbl i8'); select explain_filter('explain (analyze, verbose) select * from int8_tbl i8'); select explain_filter('explain (analyze, buffers, format text) select * from int8_tbl i8'); select explain_filter('explain (analyze, buffers, format json) select * from int8_tbl i8'); select explain_filter('explain (analyze, buffers, format xml) select * from int8_tbl i8'); select explain_filter('explain (analyze, buffers, format yaml) select * from int8_tbl i8'); select explain_filter('explain (buffers, format text) select * from int8_tbl i8'); select explain_filter('explain (buffers, format json) select * from int8_tbl i8'); -- SETTINGS option -- We have to ignore other settings that might be imposed by the environment, -- so printing the whole Settings field unfortunately won't do. begin; set local plan_cache_mode = force_generic_plan; select true as "OK" from explain_filter('explain (settings) select * from int8_tbl i8') ln where ln ~ '^ *Settings: .*plan_cache_mode = ''force_generic_plan'''; select explain_filter_to_json('explain (settings, format json) select * from int8_tbl i8') #> '{0,Settings,plan_cache_mode}'; rollback; -- -- Test production of per-worker data -- -- Unfortunately, because we don't know how many worker processes we'll -- actually get (maybe none at all), we can't examine the "Workers" output -- in any detail. We can check that it parses correctly as JSON, and then -- remove it from the displayed results. -- Serializable isolation would disable parallel query, so explicitly use an -- arbitrary other level. begin isolation level repeatable read; -- encourage use of parallel plans set parallel_setup_cost=0; set parallel_tuple_cost=0; set min_parallel_table_scan_size=0; set max_parallel_workers_per_gather=4; select jsonb_pretty( explain_filter_to_json('explain (analyze, verbose, buffers, format json) select * from tenk1 order by tenthous') -- remove "Workers" node of the Seq Scan plan node #- '{0,Plan,Plans,0,Plans,0,Workers}' -- remove "Workers" node of the Sort plan node #- '{0,Plan,Plans,0,Workers}' -- Also remove its sort-type fields, as those aren't 100% stable #- '{0,Plan,Plans,0,Sort Method}' #- '{0,Plan,Plans,0,Sort Space Type}' ); rollback; libpg_query-13-2.1.0/test/sql/postgres_regress/expressions.sql000066400000000000000000000034751413137616400245550ustar00rootroot00000000000000-- -- expression evaluation tests that don't fit into a more specific file -- -- -- Tests for SQLVAlueFunction -- -- current_date (always matches because of transactional behaviour) SELECT date(now())::text = current_date::text; -- current_time / localtime SELECT now()::timetz::text = current_time::text; SELECT now()::timetz(4)::text = current_time(4)::text; SELECT now()::time::text = localtime::text; SELECT now()::time(3)::text = localtime(3)::text; -- current_timestamp / localtimestamp (always matches because of transactional behaviour) SELECT current_timestamp = NOW(); -- precision SELECT length(current_timestamp::text) >= length(current_timestamp(0)::text); -- localtimestamp SELECT now()::timestamp::text = localtimestamp::text; -- current_role/user/user is tested in rolnames.sql -- current database / catalog SELECT current_catalog = current_database(); -- current_schema SELECT current_schema; SET search_path = 'notme'; SELECT current_schema; SET search_path = 'pg_catalog'; SELECT current_schema; RESET search_path; -- -- Tests for BETWEEN -- explain (costs off) select count(*) from date_tbl where f1 between '1997-01-01' and '1998-01-01'; select count(*) from date_tbl where f1 between '1997-01-01' and '1998-01-01'; explain (costs off) select count(*) from date_tbl where f1 not between '1997-01-01' and '1998-01-01'; select count(*) from date_tbl where f1 not between '1997-01-01' and '1998-01-01'; explain (costs off) select count(*) from date_tbl where f1 between symmetric '1997-01-01' and '1998-01-01'; select count(*) from date_tbl where f1 between symmetric '1997-01-01' and '1998-01-01'; explain (costs off) select count(*) from date_tbl where f1 not between symmetric '1997-01-01' and '1998-01-01'; select count(*) from date_tbl where f1 not between symmetric '1997-01-01' and '1998-01-01'; libpg_query-13-2.1.0/test/sql/postgres_regress/fast_default.sql000066400000000000000000000367771413137616400246470ustar00rootroot00000000000000-- -- ALTER TABLE ADD COLUMN DEFAULT test -- SET search_path = fast_default; CREATE SCHEMA fast_default; CREATE TABLE m(id OID); INSERT INTO m VALUES (NULL::OID); CREATE FUNCTION set(tabname name) RETURNS VOID AS $$ BEGIN UPDATE m SET id = (SELECT c.relfilenode FROM pg_class AS c, pg_namespace AS s WHERE c.relname = tabname AND c.relnamespace = s.oid AND s.nspname = 'fast_default'); END; $$ LANGUAGE 'plpgsql'; CREATE FUNCTION comp() RETURNS TEXT AS $$ BEGIN RETURN (SELECT CASE WHEN m.id = c.relfilenode THEN 'Unchanged' ELSE 'Rewritten' END FROM m, pg_class AS c, pg_namespace AS s WHERE c.relname = 't' AND c.relnamespace = s.oid AND s.nspname = 'fast_default'); END; $$ LANGUAGE 'plpgsql'; CREATE FUNCTION log_rewrite() RETURNS event_trigger LANGUAGE plpgsql as $func$ declare this_schema text; begin select into this_schema relnamespace::regnamespace::text from pg_class where oid = pg_event_trigger_table_rewrite_oid(); if this_schema = 'fast_default' then RAISE NOTICE 'rewriting table % for reason %', pg_event_trigger_table_rewrite_oid()::regclass, pg_event_trigger_table_rewrite_reason(); end if; end; $func$; CREATE TABLE has_volatile AS SELECT * FROM generate_series(1,10) id; CREATE EVENT TRIGGER has_volatile_rewrite ON table_rewrite EXECUTE PROCEDURE log_rewrite(); -- only the last of these should trigger a rewrite ALTER TABLE has_volatile ADD col1 int; ALTER TABLE has_volatile ADD col2 int DEFAULT 1; ALTER TABLE has_volatile ADD col3 timestamptz DEFAULT current_timestamp; ALTER TABLE has_volatile ADD col4 int DEFAULT (random() * 10000)::int; -- Test a large sample of different datatypes CREATE TABLE T(pk INT NOT NULL PRIMARY KEY, c_int INT DEFAULT 1); SELECT set('t'); INSERT INTO T VALUES (1), (2); ALTER TABLE T ADD COLUMN c_bpchar BPCHAR(5) DEFAULT 'hello', ALTER COLUMN c_int SET DEFAULT 2; INSERT INTO T VALUES (3), (4); ALTER TABLE T ADD COLUMN c_text TEXT DEFAULT 'world', ALTER COLUMN c_bpchar SET DEFAULT 'dog'; INSERT INTO T VALUES (5), (6); ALTER TABLE T ADD COLUMN c_date DATE DEFAULT '2016-06-02', ALTER COLUMN c_text SET DEFAULT 'cat'; INSERT INTO T VALUES (7), (8); ALTER TABLE T ADD COLUMN c_timestamp TIMESTAMP DEFAULT '2016-09-01 12:00:00', ADD COLUMN c_timestamp_null TIMESTAMP, ALTER COLUMN c_date SET DEFAULT '2010-01-01'; INSERT INTO T VALUES (9), (10); ALTER TABLE T ADD COLUMN c_array TEXT[] DEFAULT '{"This", "is", "the", "real", "world"}', ALTER COLUMN c_timestamp SET DEFAULT '1970-12-31 11:12:13', ALTER COLUMN c_timestamp_null SET DEFAULT '2016-09-29 12:00:00'; INSERT INTO T VALUES (11), (12); ALTER TABLE T ADD COLUMN c_small SMALLINT DEFAULT -5, ADD COLUMN c_small_null SMALLINT, ALTER COLUMN c_array SET DEFAULT '{"This", "is", "no", "fantasy"}'; INSERT INTO T VALUES (13), (14); ALTER TABLE T ADD COLUMN c_big BIGINT DEFAULT 180000000000018, ALTER COLUMN c_small SET DEFAULT 9, ALTER COLUMN c_small_null SET DEFAULT 13; INSERT INTO T VALUES (15), (16); ALTER TABLE T ADD COLUMN c_num NUMERIC DEFAULT 1.00000000001, ALTER COLUMN c_big SET DEFAULT -9999999999999999; INSERT INTO T VALUES (17), (18); ALTER TABLE T ADD COLUMN c_time TIME DEFAULT '12:00:00', ALTER COLUMN c_num SET DEFAULT 2.000000000000002; INSERT INTO T VALUES (19), (20); ALTER TABLE T ADD COLUMN c_interval INTERVAL DEFAULT '1 day', ALTER COLUMN c_time SET DEFAULT '23:59:59'; INSERT INTO T VALUES (21), (22); ALTER TABLE T ADD COLUMN c_hugetext TEXT DEFAULT repeat('abcdefg',1000), ALTER COLUMN c_interval SET DEFAULT '3 hours'; INSERT INTO T VALUES (23), (24); ALTER TABLE T ALTER COLUMN c_interval DROP DEFAULT, ALTER COLUMN c_hugetext SET DEFAULT repeat('poiuyt', 1000); INSERT INTO T VALUES (25), (26); ALTER TABLE T ALTER COLUMN c_bpchar DROP DEFAULT, ALTER COLUMN c_date DROP DEFAULT, ALTER COLUMN c_text DROP DEFAULT, ALTER COLUMN c_timestamp DROP DEFAULT, ALTER COLUMN c_array DROP DEFAULT, ALTER COLUMN c_small DROP DEFAULT, ALTER COLUMN c_big DROP DEFAULT, ALTER COLUMN c_num DROP DEFAULT, ALTER COLUMN c_time DROP DEFAULT, ALTER COLUMN c_hugetext DROP DEFAULT; INSERT INTO T VALUES (27), (28); SELECT pk, c_int, c_bpchar, c_text, c_date, c_timestamp, c_timestamp_null, c_array, c_small, c_small_null, c_big, c_num, c_time, c_interval, c_hugetext = repeat('abcdefg',1000) as c_hugetext_origdef, c_hugetext = repeat('poiuyt', 1000) as c_hugetext_newdef FROM T ORDER BY pk; SELECT comp(); DROP TABLE T; -- Test expressions in the defaults CREATE OR REPLACE FUNCTION foo(a INT) RETURNS TEXT AS $$ DECLARE res TEXT := ''; i INT; BEGIN i := 0; WHILE (i < a) LOOP res := res || chr(ascii('a') + i); i := i + 1; END LOOP; RETURN res; END; $$ LANGUAGE PLPGSQL STABLE; CREATE TABLE T(pk INT NOT NULL PRIMARY KEY, c_int INT DEFAULT LENGTH(foo(6))); SELECT set('t'); INSERT INTO T VALUES (1), (2); ALTER TABLE T ADD COLUMN c_bpchar BPCHAR(5) DEFAULT foo(4), ALTER COLUMN c_int SET DEFAULT LENGTH(foo(8)); INSERT INTO T VALUES (3), (4); ALTER TABLE T ADD COLUMN c_text TEXT DEFAULT foo(6), ALTER COLUMN c_bpchar SET DEFAULT foo(3); INSERT INTO T VALUES (5), (6); ALTER TABLE T ADD COLUMN c_date DATE DEFAULT '2016-06-02'::DATE + LENGTH(foo(10)), ALTER COLUMN c_text SET DEFAULT foo(12); INSERT INTO T VALUES (7), (8); ALTER TABLE T ADD COLUMN c_timestamp TIMESTAMP DEFAULT '2016-09-01'::DATE + LENGTH(foo(10)), ALTER COLUMN c_date SET DEFAULT '2010-01-01'::DATE - LENGTH(foo(4)); INSERT INTO T VALUES (9), (10); ALTER TABLE T ADD COLUMN c_array TEXT[] DEFAULT ('{"This", "is", "' || foo(4) || '","the", "real", "world"}')::TEXT[], ALTER COLUMN c_timestamp SET DEFAULT '1970-12-31'::DATE + LENGTH(foo(30)); INSERT INTO T VALUES (11), (12); ALTER TABLE T ALTER COLUMN c_int DROP DEFAULT, ALTER COLUMN c_array SET DEFAULT ('{"This", "is", "' || foo(1) || '", "fantasy"}')::text[]; INSERT INTO T VALUES (13), (14); ALTER TABLE T ALTER COLUMN c_bpchar DROP DEFAULT, ALTER COLUMN c_date DROP DEFAULT, ALTER COLUMN c_text DROP DEFAULT, ALTER COLUMN c_timestamp DROP DEFAULT, ALTER COLUMN c_array DROP DEFAULT; INSERT INTO T VALUES (15), (16); SELECT * FROM T; SELECT comp(); DROP TABLE T; DROP FUNCTION foo(INT); -- Fall back to full rewrite for volatile expressions CREATE TABLE T(pk INT NOT NULL PRIMARY KEY); INSERT INTO T VALUES (1); SELECT set('t'); -- now() is stable, because it returns the transaction timestamp ALTER TABLE T ADD COLUMN c1 TIMESTAMP DEFAULT now(); SELECT comp(); -- clock_timestamp() is volatile ALTER TABLE T ADD COLUMN c2 TIMESTAMP DEFAULT clock_timestamp(); SELECT comp(); DROP TABLE T; -- Simple querie CREATE TABLE T (pk INT NOT NULL PRIMARY KEY); SELECT set('t'); INSERT INTO T SELECT * FROM generate_series(1, 10) a; ALTER TABLE T ADD COLUMN c_bigint BIGINT NOT NULL DEFAULT -1; INSERT INTO T SELECT b, b - 10 FROM generate_series(11, 20) a(b); ALTER TABLE T ADD COLUMN c_text TEXT DEFAULT 'hello'; INSERT INTO T SELECT b, b - 10, (b + 10)::text FROM generate_series(21, 30) a(b); -- WHERE clause SELECT c_bigint, c_text FROM T WHERE c_bigint = -1 LIMIT 1; EXPLAIN (VERBOSE TRUE, COSTS FALSE) SELECT c_bigint, c_text FROM T WHERE c_bigint = -1 LIMIT 1; SELECT c_bigint, c_text FROM T WHERE c_text = 'hello' LIMIT 1; EXPLAIN (VERBOSE TRUE, COSTS FALSE) SELECT c_bigint, c_text FROM T WHERE c_text = 'hello' LIMIT 1; -- COALESCE SELECT COALESCE(c_bigint, pk), COALESCE(c_text, pk::text) FROM T ORDER BY pk LIMIT 10; -- Aggregate function SELECT SUM(c_bigint), MAX(c_text COLLATE "C" ), MIN(c_text COLLATE "C") FROM T; -- ORDER BY SELECT * FROM T ORDER BY c_bigint, c_text, pk LIMIT 10; EXPLAIN (VERBOSE TRUE, COSTS FALSE) SELECT * FROM T ORDER BY c_bigint, c_text, pk LIMIT 10; -- LIMIT SELECT * FROM T WHERE c_bigint > -1 ORDER BY c_bigint, c_text, pk LIMIT 10; EXPLAIN (VERBOSE TRUE, COSTS FALSE) SELECT * FROM T WHERE c_bigint > -1 ORDER BY c_bigint, c_text, pk LIMIT 10; -- DELETE with RETURNING DELETE FROM T WHERE pk BETWEEN 10 AND 20 RETURNING *; EXPLAIN (VERBOSE TRUE, COSTS FALSE) DELETE FROM T WHERE pk BETWEEN 10 AND 20 RETURNING *; -- UPDATE UPDATE T SET c_text = '"' || c_text || '"' WHERE pk < 10; SELECT * FROM T WHERE c_text LIKE '"%"' ORDER BY PK; SELECT comp(); DROP TABLE T; -- Combine with other DDL CREATE TABLE T(pk INT NOT NULL PRIMARY KEY); SELECT set('t'); INSERT INTO T VALUES (1), (2); ALTER TABLE T ADD COLUMN c_int INT NOT NULL DEFAULT -1; INSERT INTO T VALUES (3), (4); ALTER TABLE T ADD COLUMN c_text TEXT DEFAULT 'Hello'; INSERT INTO T VALUES (5), (6); ALTER TABLE T ALTER COLUMN c_text SET DEFAULT 'world', ALTER COLUMN c_int SET DEFAULT 1; INSERT INTO T VALUES (7), (8); SELECT * FROM T ORDER BY pk; -- Add an index CREATE INDEX i ON T(c_int, c_text); SELECT c_text FROM T WHERE c_int = -1; SELECT comp(); -- query to exercise expand_tuple function CREATE TABLE t1 AS SELECT 1::int AS a , 2::int AS b FROM generate_series(1,20) q; ALTER TABLE t1 ADD COLUMN c text; SELECT a, stddev(cast((SELECT sum(1) FROM generate_series(1,20) x) AS float4)) OVER (PARTITION BY a,b,c ORDER BY b) AS z FROM t1; DROP TABLE T; -- test that we account for missing columns without defaults correctly -- in expand_tuple, and that rows are correctly expanded for triggers CREATE FUNCTION test_trigger() RETURNS trigger LANGUAGE plpgsql AS $$ begin raise notice 'old tuple: %', to_json(OLD)::text; if TG_OP = 'DELETE' then return OLD; else return NEW; end if; end; $$; -- 2 new columns, both have defaults CREATE TABLE t (id serial PRIMARY KEY, a int, b int, c int); INSERT INTO t (a,b,c) VALUES (1,2,3); ALTER TABLE t ADD COLUMN x int NOT NULL DEFAULT 4; ALTER TABLE t ADD COLUMN y int NOT NULL DEFAULT 5; CREATE TRIGGER a BEFORE UPDATE ON t FOR EACH ROW EXECUTE PROCEDURE test_trigger(); SELECT * FROM t; UPDATE t SET y = 2; SELECT * FROM t; DROP TABLE t; -- 2 new columns, first has default CREATE TABLE t (id serial PRIMARY KEY, a int, b int, c int); INSERT INTO t (a,b,c) VALUES (1,2,3); ALTER TABLE t ADD COLUMN x int NOT NULL DEFAULT 4; ALTER TABLE t ADD COLUMN y int; CREATE TRIGGER a BEFORE UPDATE ON t FOR EACH ROW EXECUTE PROCEDURE test_trigger(); SELECT * FROM t; UPDATE t SET y = 2; SELECT * FROM t; DROP TABLE t; -- 2 new columns, second has default CREATE TABLE t (id serial PRIMARY KEY, a int, b int, c int); INSERT INTO t (a,b,c) VALUES (1,2,3); ALTER TABLE t ADD COLUMN x int; ALTER TABLE t ADD COLUMN y int NOT NULL DEFAULT 5; CREATE TRIGGER a BEFORE UPDATE ON t FOR EACH ROW EXECUTE PROCEDURE test_trigger(); SELECT * FROM t; UPDATE t SET y = 2; SELECT * FROM t; DROP TABLE t; -- 2 new columns, neither has default CREATE TABLE t (id serial PRIMARY KEY, a int, b int, c int); INSERT INTO t (a,b,c) VALUES (1,2,3); ALTER TABLE t ADD COLUMN x int; ALTER TABLE t ADD COLUMN y int; CREATE TRIGGER a BEFORE UPDATE ON t FOR EACH ROW EXECUTE PROCEDURE test_trigger(); SELECT * FROM t; UPDATE t SET y = 2; SELECT * FROM t; DROP TABLE t; -- same as last 4 tests but here the last original column has a NULL value -- 2 new columns, both have defaults CREATE TABLE t (id serial PRIMARY KEY, a int, b int, c int); INSERT INTO t (a,b,c) VALUES (1,2,NULL); ALTER TABLE t ADD COLUMN x int NOT NULL DEFAULT 4; ALTER TABLE t ADD COLUMN y int NOT NULL DEFAULT 5; CREATE TRIGGER a BEFORE UPDATE ON t FOR EACH ROW EXECUTE PROCEDURE test_trigger(); SELECT * FROM t; UPDATE t SET y = 2; SELECT * FROM t; DROP TABLE t; -- 2 new columns, first has default CREATE TABLE t (id serial PRIMARY KEY, a int, b int, c int); INSERT INTO t (a,b,c) VALUES (1,2,NULL); ALTER TABLE t ADD COLUMN x int NOT NULL DEFAULT 4; ALTER TABLE t ADD COLUMN y int; CREATE TRIGGER a BEFORE UPDATE ON t FOR EACH ROW EXECUTE PROCEDURE test_trigger(); SELECT * FROM t; UPDATE t SET y = 2; SELECT * FROM t; DROP TABLE t; -- 2 new columns, second has default CREATE TABLE t (id serial PRIMARY KEY, a int, b int, c int); INSERT INTO t (a,b,c) VALUES (1,2,NULL); ALTER TABLE t ADD COLUMN x int; ALTER TABLE t ADD COLUMN y int NOT NULL DEFAULT 5; CREATE TRIGGER a BEFORE UPDATE ON t FOR EACH ROW EXECUTE PROCEDURE test_trigger(); SELECT * FROM t; UPDATE t SET y = 2; SELECT * FROM t; DROP TABLE t; -- 2 new columns, neither has default CREATE TABLE t (id serial PRIMARY KEY, a int, b int, c int); INSERT INTO t (a,b,c) VALUES (1,2,NULL); ALTER TABLE t ADD COLUMN x int; ALTER TABLE t ADD COLUMN y int; CREATE TRIGGER a BEFORE UPDATE ON t FOR EACH ROW EXECUTE PROCEDURE test_trigger(); SELECT * FROM t; UPDATE t SET y = 2; SELECT * FROM t; DROP TABLE t; -- make sure expanded tuple has correct self pointer -- it will be required by the RI trigger doing the cascading delete CREATE TABLE leader (a int PRIMARY KEY, b int); CREATE TABLE follower (a int REFERENCES leader ON DELETE CASCADE, b int); INSERT INTO leader VALUES (1, 1), (2, 2); ALTER TABLE leader ADD c int; ALTER TABLE leader DROP c; DELETE FROM leader; -- check that ALTER TABLE ... ALTER TYPE does the right thing CREATE TABLE vtype( a integer); INSERT INTO vtype VALUES (1); ALTER TABLE vtype ADD COLUMN b DOUBLE PRECISION DEFAULT 0.2; ALTER TABLE vtype ADD COLUMN c BOOLEAN DEFAULT true; SELECT * FROM vtype; ALTER TABLE vtype ALTER b TYPE text USING b::text, ALTER c TYPE text USING c::text; SELECT * FROM vtype; -- also check the case that doesn't rewrite the table CREATE TABLE vtype2 (a int); INSERT INTO vtype2 VALUES (1); ALTER TABLE vtype2 ADD COLUMN b varchar(10) DEFAULT 'xxx'; ALTER TABLE vtype2 ALTER COLUMN b SET DEFAULT 'yyy'; INSERT INTO vtype2 VALUES (2); ALTER TABLE vtype2 ALTER COLUMN b TYPE varchar(20) USING b::varchar(20); SELECT * FROM vtype2; -- Ensure that defaults are checked when evaluating whether HOT update -- is possible, this was broken for a while: -- https://postgr.es/m/20190202133521.ylauh3ckqa7colzj%40alap3.anarazel.de BEGIN; CREATE TABLE t(); INSERT INTO t DEFAULT VALUES; ALTER TABLE t ADD COLUMN a int DEFAULT 1; CREATE INDEX ON t(a); -- set column with a default 1 to NULL, due to a bug that wasn't -- noticed has heap_getattr buggily returned NULL for default columns UPDATE t SET a = NULL; -- verify that index and non-index scans show the same result SET LOCAL enable_seqscan = true; SELECT * FROM t WHERE a IS NULL; SET LOCAL enable_seqscan = false; SELECT * FROM t WHERE a IS NULL; ROLLBACK; -- cleanup DROP TABLE vtype; DROP TABLE vtype2; DROP TABLE follower; DROP TABLE leader; DROP FUNCTION test_trigger(); DROP TABLE t1; DROP FUNCTION set(name); DROP FUNCTION comp(); DROP TABLE m; DROP TABLE has_volatile; DROP EVENT TRIGGER has_volatile_rewrite; DROP FUNCTION log_rewrite; DROP SCHEMA fast_default; -- Leave a table with an active fast default in place, for pg_upgrade testing set search_path = public; create table has_fast_default(f1 int); insert into has_fast_default values(1); alter table has_fast_default add column f2 int default 42; table has_fast_default; libpg_query-13-2.1.0/test/sql/postgres_regress/float4.sql000066400000000000000000000262771413137616400233710ustar00rootroot00000000000000-- -- FLOAT4 -- CREATE TABLE FLOAT4_TBL (f1 float4); INSERT INTO FLOAT4_TBL(f1) VALUES (' 0.0'); INSERT INTO FLOAT4_TBL(f1) VALUES ('1004.30 '); INSERT INTO FLOAT4_TBL(f1) VALUES (' -34.84 '); INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e+20'); INSERT INTO FLOAT4_TBL(f1) VALUES ('1.2345678901234e-20'); -- test for over and under flow INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70'); INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70'); INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70'); INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70'); INSERT INTO FLOAT4_TBL(f1) VALUES ('10e70'::float8); INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e70'::float8); INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-70'::float8); INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-70'::float8); INSERT INTO FLOAT4_TBL(f1) VALUES ('10e400'); INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e400'); INSERT INTO FLOAT4_TBL(f1) VALUES ('10e-400'); INSERT INTO FLOAT4_TBL(f1) VALUES ('-10e-400'); -- bad input INSERT INTO FLOAT4_TBL(f1) VALUES (''); INSERT INTO FLOAT4_TBL(f1) VALUES (' '); INSERT INTO FLOAT4_TBL(f1) VALUES ('xyz'); INSERT INTO FLOAT4_TBL(f1) VALUES ('5.0.0'); INSERT INTO FLOAT4_TBL(f1) VALUES ('5 . 0'); INSERT INTO FLOAT4_TBL(f1) VALUES ('5. 0'); INSERT INTO FLOAT4_TBL(f1) VALUES (' - 3.0'); INSERT INTO FLOAT4_TBL(f1) VALUES ('123 5'); -- special inputs SELECT 'NaN'::float4; SELECT 'nan'::float4; SELECT ' NAN '::float4; SELECT 'infinity'::float4; SELECT ' -INFINiTY '::float4; -- bad special inputs SELECT 'N A N'::float4; SELECT 'NaN x'::float4; SELECT ' INFINITY x'::float4; SELECT 'Infinity'::float4 + 100.0; SELECT 'Infinity'::float4 / 'Infinity'::float4; SELECT 'nan'::float4 / 'nan'::float4; SELECT 'nan'::numeric::float4; SELECT '' AS five, * FROM FLOAT4_TBL; SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <> '1004.3'; SELECT '' AS one, f.* FROM FLOAT4_TBL f WHERE f.f1 = '1004.3'; SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE '1004.3' > f.f1; SELECT '' AS three, f.* FROM FLOAT4_TBL f WHERE f.f1 < '1004.3'; SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE '1004.3' >= f.f1; SELECT '' AS four, f.* FROM FLOAT4_TBL f WHERE f.f1 <= '1004.3'; SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT4_TBL f WHERE f.f1 > '0.0'; SELECT '' AS three, f.f1, f.f1 + '-10' AS x FROM FLOAT4_TBL f WHERE f.f1 > '0.0'; SELECT '' AS three, f.f1, f.f1 / '-10' AS x FROM FLOAT4_TBL f WHERE f.f1 > '0.0'; SELECT '' AS three, f.f1, f.f1 - '-10' AS x FROM FLOAT4_TBL f WHERE f.f1 > '0.0'; -- test divide by zero SELECT '' AS bad, f.f1 / '0.0' from FLOAT4_TBL f; SELECT '' AS five, * FROM FLOAT4_TBL; -- test the unary float4abs operator SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT4_TBL f; UPDATE FLOAT4_TBL SET f1 = FLOAT4_TBL.f1 * '-1' WHERE FLOAT4_TBL.f1 > '0.0'; SELECT '' AS five, * FROM FLOAT4_TBL; -- test edge-case coercions to integer SELECT '32767.4'::float4::int2; SELECT '32767.6'::float4::int2; SELECT '-32768.4'::float4::int2; SELECT '-32768.6'::float4::int2; SELECT '2147483520'::float4::int4; SELECT '2147483647'::float4::int4; SELECT '-2147483648.5'::float4::int4; SELECT '-2147483900'::float4::int4; SELECT '9223369837831520256'::float4::int8; SELECT '9223372036854775807'::float4::int8; SELECT '-9223372036854775808.5'::float4::int8; SELECT '-9223380000000000000'::float4::int8; -- Test for correct input rounding in edge cases. -- These lists are from Paxson 1991, excluding subnormals and -- inputs of over 9 sig. digits. SELECT float4send('5e-20'::float4); SELECT float4send('67e14'::float4); SELECT float4send('985e15'::float4); SELECT float4send('55895e-16'::float4); SELECT float4send('7038531e-32'::float4); SELECT float4send('702990899e-20'::float4); SELECT float4send('3e-23'::float4); SELECT float4send('57e18'::float4); SELECT float4send('789e-35'::float4); SELECT float4send('2539e-18'::float4); SELECT float4send('76173e28'::float4); SELECT float4send('887745e-11'::float4); SELECT float4send('5382571e-37'::float4); SELECT float4send('82381273e-35'::float4); SELECT float4send('750486563e-38'::float4); -- Test that the smallest possible normalized input value inputs -- correctly, either in 9-significant-digit or shortest-decimal -- format. -- -- exact val is 1.1754943508... -- shortest val is 1.1754944000 -- midpoint to next val is 1.1754944208... SELECT float4send('1.17549435e-38'::float4); SELECT float4send('1.1754944e-38'::float4); -- test output (and round-trip safety) of various values. -- To ensure we're testing what we think we're testing, start with -- float values specified by bit patterns (as a useful side effect, -- this means we'll fail on non-IEEE platforms). create type xfloat4; create function xfloat4in(cstring) returns xfloat4 immutable strict language internal as 'int4in'; create function xfloat4out(xfloat4) returns cstring immutable strict language internal as 'int4out'; create type xfloat4 (input = xfloat4in, output = xfloat4out, like = float4); create cast (xfloat4 as float4) without function; create cast (float4 as xfloat4) without function; create cast (xfloat4 as integer) without function; create cast (integer as xfloat4) without function; -- float4: seeeeeee emmmmmmm mmmmmmmm mmmmmmmm -- we don't care to assume the platform's strtod() handles subnormals -- correctly; those are "use at your own risk". However we do test -- subnormal outputs, since those are under our control. with testdata(bits) as (values -- small subnormals (x'00000001'), (x'00000002'), (x'00000003'), (x'00000010'), (x'00000011'), (x'00000100'), (x'00000101'), (x'00004000'), (x'00004001'), (x'00080000'), (x'00080001'), -- stress values (x'0053c4f4'), -- 7693e-42 (x'006c85c4'), -- 996622e-44 (x'0041ca76'), -- 60419369e-46 (x'004b7678'), -- 6930161142e-48 -- taken from upstream testsuite (x'00000007'), (x'00424fe2'), -- borderline between subnormal and normal (x'007ffff0'), (x'007ffff1'), (x'007ffffe'), (x'007fffff')) select float4send(flt) as ibits, flt from (select bits::integer::xfloat4::float4 as flt from testdata offset 0) s; with testdata(bits) as (values (x'00000000'), -- smallest normal values (x'00800000'), (x'00800001'), (x'00800004'), (x'00800005'), (x'00800006'), -- small normal values chosen for short vs. long output (x'008002f1'), (x'008002f2'), (x'008002f3'), (x'00800e17'), (x'00800e18'), (x'00800e19'), -- assorted values (random mantissae) (x'01000001'), (x'01102843'), (x'01a52c98'), (x'0219c229'), (x'02e4464d'), (x'037343c1'), (x'03a91b36'), (x'047ada65'), (x'0496fe87'), (x'0550844f'), (x'05999da3'), (x'060ea5e2'), (x'06e63c45'), (x'07f1e548'), (x'0fc5282b'), (x'1f850283'), (x'2874a9d6'), -- values around 5e-08 (x'3356bf94'), (x'3356bf95'), (x'3356bf96'), -- around 1e-07 (x'33d6bf94'), (x'33d6bf95'), (x'33d6bf96'), -- around 3e-07 .. 1e-04 (x'34a10faf'), (x'34a10fb0'), (x'34a10fb1'), (x'350637bc'), (x'350637bd'), (x'350637be'), (x'35719786'), (x'35719787'), (x'35719788'), (x'358637bc'), (x'358637bd'), (x'358637be'), (x'36a7c5ab'), (x'36a7c5ac'), (x'36a7c5ad'), (x'3727c5ab'), (x'3727c5ac'), (x'3727c5ad'), -- format crossover at 1e-04 (x'38d1b714'), (x'38d1b715'), (x'38d1b716'), (x'38d1b717'), (x'38d1b718'), (x'38d1b719'), (x'38d1b71a'), (x'38d1b71b'), (x'38d1b71c'), (x'38d1b71d'), -- (x'38dffffe'), (x'38dfffff'), (x'38e00000'), (x'38efffff'), (x'38f00000'), (x'38f00001'), (x'3a83126e'), (x'3a83126f'), (x'3a831270'), (x'3c23d709'), (x'3c23d70a'), (x'3c23d70b'), (x'3dcccccc'), (x'3dcccccd'), (x'3dccccce'), -- chosen to need 9 digits for 3dcccd70 (x'3dcccd6f'), (x'3dcccd70'), (x'3dcccd71'), -- (x'3effffff'), (x'3f000000'), (x'3f000001'), (x'3f333332'), (x'3f333333'), (x'3f333334'), -- approach 1.0 with increasing numbers of 9s (x'3f666665'), (x'3f666666'), (x'3f666667'), (x'3f7d70a3'), (x'3f7d70a4'), (x'3f7d70a5'), (x'3f7fbe76'), (x'3f7fbe77'), (x'3f7fbe78'), (x'3f7ff971'), (x'3f7ff972'), (x'3f7ff973'), (x'3f7fff57'), (x'3f7fff58'), (x'3f7fff59'), (x'3f7fffee'), (x'3f7fffef'), -- values very close to 1 (x'3f7ffff0'), (x'3f7ffff1'), (x'3f7ffff2'), (x'3f7ffff3'), (x'3f7ffff4'), (x'3f7ffff5'), (x'3f7ffff6'), (x'3f7ffff7'), (x'3f7ffff8'), (x'3f7ffff9'), (x'3f7ffffa'), (x'3f7ffffb'), (x'3f7ffffc'), (x'3f7ffffd'), (x'3f7ffffe'), (x'3f7fffff'), (x'3f800000'), (x'3f800001'), (x'3f800002'), (x'3f800003'), (x'3f800004'), (x'3f800005'), (x'3f800006'), (x'3f800007'), (x'3f800008'), (x'3f800009'), -- values 1 to 1.1 (x'3f80000f'), (x'3f800010'), (x'3f800011'), (x'3f800012'), (x'3f800013'), (x'3f800014'), (x'3f800017'), (x'3f800018'), (x'3f800019'), (x'3f80001a'), (x'3f80001b'), (x'3f80001c'), (x'3f800029'), (x'3f80002a'), (x'3f80002b'), (x'3f800053'), (x'3f800054'), (x'3f800055'), (x'3f800346'), (x'3f800347'), (x'3f800348'), (x'3f8020c4'), (x'3f8020c5'), (x'3f8020c6'), (x'3f8147ad'), (x'3f8147ae'), (x'3f8147af'), (x'3f8ccccc'), (x'3f8ccccd'), (x'3f8cccce'), -- (x'3fc90fdb'), -- pi/2 (x'402df854'), -- e (x'40490fdb'), -- pi -- (x'409fffff'), (x'40a00000'), (x'40a00001'), (x'40afffff'), (x'40b00000'), (x'40b00001'), (x'411fffff'), (x'41200000'), (x'41200001'), (x'42c7ffff'), (x'42c80000'), (x'42c80001'), (x'4479ffff'), (x'447a0000'), (x'447a0001'), (x'461c3fff'), (x'461c4000'), (x'461c4001'), (x'47c34fff'), (x'47c35000'), (x'47c35001'), (x'497423ff'), (x'49742400'), (x'49742401'), (x'4b18967f'), (x'4b189680'), (x'4b189681'), (x'4cbebc1f'), (x'4cbebc20'), (x'4cbebc21'), (x'4e6e6b27'), (x'4e6e6b28'), (x'4e6e6b29'), (x'501502f8'), (x'501502f9'), (x'501502fa'), (x'51ba43b6'), (x'51ba43b7'), (x'51ba43b8'), -- stress values (x'1f6c1e4a'), -- 5e-20 (x'59be6cea'), -- 67e14 (x'5d5ab6c4'), -- 985e15 (x'2cc4a9bd'), -- 55895e-16 (x'15ae43fd'), -- 7038531e-32 (x'2cf757ca'), -- 702990899e-20 (x'665ba998'), -- 25933168707e13 (x'743c3324'), -- 596428896559e20 -- exercise fixed-point memmoves (x'47f1205a'), (x'4640e6ae'), (x'449a5225'), (x'42f6e9d5'), (x'414587dd'), (x'3f9e064b'), -- these cases come from the upstream's testsuite -- BoundaryRoundEven (x'4c000004'), (x'50061c46'), (x'510006a8'), -- ExactValueRoundEven (x'48951f84'), (x'45fd1840'), -- LotsOfTrailingZeros (x'39800000'), (x'3b200000'), (x'3b900000'), (x'3bd00000'), -- Regression (x'63800000'), (x'4b000000'), (x'4b800000'), (x'4c000001'), (x'4c800b0d'), (x'00d24584'), (x'00d90b88'), (x'45803f34'), (x'4f9f24f7'), (x'3a8722c3'), (x'5c800041'), (x'15ae43fd'), (x'5d4cccfb'), (x'4c800001'), (x'57800ed8'), (x'5f000000'), (x'700000f0'), (x'5f23e9ac'), (x'5e9502f9'), (x'5e8012b1'), (x'3c000028'), (x'60cde861'), (x'03aa2a50'), (x'43480000'), (x'4c000000'), -- LooksLikePow5 (x'5D1502F9'), (x'5D9502F9'), (x'5E1502F9'), -- OutputLength (x'3f99999a'), (x'3f9d70a4'), (x'3f9df3b6'), (x'3f9e0419'), (x'3f9e0610'), (x'3f9e064b'), (x'3f9e0651'), (x'03d20cfe') ) select float4send(flt) as ibits, flt, flt::text::float4 as r_flt, float4send(flt::text::float4) as obits, float4send(flt::text::float4) = float4send(flt) as correct from (select bits::integer::xfloat4::float4 as flt from testdata offset 0) s; -- clean up, lest opr_sanity complain drop type xfloat4 cascade; libpg_query-13-2.1.0/test/sql/postgres_regress/float8.sql000066400000000000000000000353001413137616400233600ustar00rootroot00000000000000-- -- FLOAT8 -- CREATE TABLE FLOAT8_TBL(f1 float8); INSERT INTO FLOAT8_TBL(f1) VALUES (' 0.0 '); INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30 '); INSERT INTO FLOAT8_TBL(f1) VALUES (' -34.84'); INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200'); INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200'); -- test for underflow and overflow handling SELECT '10e400'::float8; SELECT '-10e400'::float8; SELECT '10e-400'::float8; SELECT '-10e-400'::float8; -- test smallest normalized input SELECT float8send('2.2250738585072014E-308'::float8); -- bad input INSERT INTO FLOAT8_TBL(f1) VALUES (''); INSERT INTO FLOAT8_TBL(f1) VALUES (' '); INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz'); INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0'); INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0'); INSERT INTO FLOAT8_TBL(f1) VALUES ('5. 0'); INSERT INTO FLOAT8_TBL(f1) VALUES (' - 3'); INSERT INTO FLOAT8_TBL(f1) VALUES ('123 5'); -- special inputs SELECT 'NaN'::float8; SELECT 'nan'::float8; SELECT ' NAN '::float8; SELECT 'infinity'::float8; SELECT ' -INFINiTY '::float8; -- bad special inputs SELECT 'N A N'::float8; SELECT 'NaN x'::float8; SELECT ' INFINITY x'::float8; SELECT 'Infinity'::float8 + 100.0; SELECT 'Infinity'::float8 / 'Infinity'::float8; SELECT 'nan'::float8 / 'nan'::float8; SELECT 'nan'::numeric::float8; SELECT '' AS five, * FROM FLOAT8_TBL; SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3'; SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3'; SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE '1004.3' > f.f1; SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE f.f1 < '1004.3'; SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1; SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <= '1004.3'; SELECT '' AS three, f.f1, f.f1 * '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; SELECT '' AS three, f.f1, f.f1 + '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; SELECT '' AS three, f.f1, f.f1 / '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; SELECT '' AS three, f.f1, f.f1 - '-10' AS x FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; SELECT '' AS one, f.f1 ^ '2.0' AS square_f1 FROM FLOAT8_TBL f where f.f1 = '1004.3'; -- absolute value SELECT '' AS five, f.f1, @f.f1 AS abs_f1 FROM FLOAT8_TBL f; -- truncate SELECT '' AS five, f.f1, trunc(f.f1) AS trunc_f1 FROM FLOAT8_TBL f; -- round SELECT '' AS five, f.f1, round(f.f1) AS round_f1 FROM FLOAT8_TBL f; -- ceil / ceiling select ceil(f1) as ceil_f1 from float8_tbl f; select ceiling(f1) as ceiling_f1 from float8_tbl f; -- floor select floor(f1) as floor_f1 from float8_tbl f; -- sign select sign(f1) as sign_f1 from float8_tbl f; -- avoid bit-exact output here because operations may not be bit-exact. SET extra_float_digits = 0; -- square root SELECT sqrt(float8 '64') AS eight; SELECT |/ float8 '64' AS eight; SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1 FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; -- power SELECT power(float8 '144', float8 '0.5'); SELECT power(float8 'NaN', float8 '0.5'); SELECT power(float8 '144', float8 'NaN'); SELECT power(float8 'NaN', float8 'NaN'); SELECT power(float8 '-1', float8 'NaN'); SELECT power(float8 '1', float8 'NaN'); SELECT power(float8 'NaN', float8 '0'); -- take exp of ln(f.f1) SELECT '' AS three, f.f1, exp(ln(f.f1)) AS exp_ln_f1 FROM FLOAT8_TBL f WHERE f.f1 > '0.0'; -- cube root SELECT ||/ float8 '27' AS three; SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f; SELECT '' AS five, * FROM FLOAT8_TBL; UPDATE FLOAT8_TBL SET f1 = FLOAT8_TBL.f1 * '-1' WHERE FLOAT8_TBL.f1 > '0.0'; SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f; SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f; SELECT 0 ^ 0 + 0 ^ 1 + 0 ^ 0.0 + 0 ^ 0.5; SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ; SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 < '0.0' ; SELECT '' AS bad, exp(f.f1) from FLOAT8_TBL f; SELECT '' AS bad, f.f1 / '0.0' from FLOAT8_TBL f; SELECT '' AS five, * FROM FLOAT8_TBL; -- hyperbolic functions -- we run these with extra_float_digits = 0 too, since different platforms -- tend to produce results that vary in the last place. SELECT sinh(float8 '1'); SELECT cosh(float8 '1'); SELECT tanh(float8 '1'); SELECT asinh(float8 '1'); SELECT acosh(float8 '2'); SELECT atanh(float8 '0.5'); -- test Inf/NaN cases for hyperbolic functions SELECT sinh(float8 'infinity'); SELECT sinh(float8 '-infinity'); SELECT sinh(float8 'nan'); SELECT cosh(float8 'infinity'); SELECT cosh(float8 '-infinity'); SELECT cosh(float8 'nan'); SELECT tanh(float8 'infinity'); SELECT tanh(float8 '-infinity'); SELECT tanh(float8 'nan'); SELECT asinh(float8 'infinity'); SELECT asinh(float8 '-infinity'); SELECT asinh(float8 'nan'); -- acosh(Inf) should be Inf, but some mingw versions produce NaN, so skip test -- SELECT acosh(float8 'infinity'); SELECT acosh(float8 '-infinity'); SELECT acosh(float8 'nan'); SELECT atanh(float8 'infinity'); SELECT atanh(float8 '-infinity'); SELECT atanh(float8 'nan'); RESET extra_float_digits; -- test for over- and underflow INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400'); INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400'); INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400'); INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400'); -- maintain external table consistency across platforms -- delete all values and reinsert well-behaved ones DELETE FROM FLOAT8_TBL; INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0'); INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84'); INSERT INTO FLOAT8_TBL(f1) VALUES ('-1004.30'); INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e+200'); INSERT INTO FLOAT8_TBL(f1) VALUES ('-1.2345678901234e-200'); SELECT '' AS five, * FROM FLOAT8_TBL; -- test edge-case coercions to integer SELECT '32767.4'::float8::int2; SELECT '32767.6'::float8::int2; SELECT '-32768.4'::float8::int2; SELECT '-32768.6'::float8::int2; SELECT '2147483647.4'::float8::int4; SELECT '2147483647.6'::float8::int4; SELECT '-2147483648.4'::float8::int4; SELECT '-2147483648.6'::float8::int4; SELECT '9223372036854773760'::float8::int8; SELECT '9223372036854775807'::float8::int8; SELECT '-9223372036854775808.5'::float8::int8; SELECT '-9223372036854780000'::float8::int8; -- test exact cases for trigonometric functions in degrees SELECT x, sind(x), sind(x) IN (-1,-0.5,0,0.5,1) AS sind_exact FROM (VALUES (0), (30), (90), (150), (180), (210), (270), (330), (360)) AS t(x); SELECT x, cosd(x), cosd(x) IN (-1,-0.5,0,0.5,1) AS cosd_exact FROM (VALUES (0), (60), (90), (120), (180), (240), (270), (300), (360)) AS t(x); SELECT x, tand(x), tand(x) IN ('-Infinity'::float8,-1,0, 1,'Infinity'::float8) AS tand_exact, cotd(x), cotd(x) IN ('-Infinity'::float8,-1,0, 1,'Infinity'::float8) AS cotd_exact FROM (VALUES (0), (45), (90), (135), (180), (225), (270), (315), (360)) AS t(x); SELECT x, asind(x), asind(x) IN (-90,-30,0,30,90) AS asind_exact, acosd(x), acosd(x) IN (0,60,90,120,180) AS acosd_exact FROM (VALUES (-1), (-0.5), (0), (0.5), (1)) AS t(x); SELECT x, atand(x), atand(x) IN (-90,-45,0,45,90) AS atand_exact FROM (VALUES ('-Infinity'::float8), (-1), (0), (1), ('Infinity'::float8)) AS t(x); SELECT x, y, atan2d(y, x), atan2d(y, x) IN (-90,0,90,180) AS atan2d_exact FROM (SELECT 10*cosd(a), 10*sind(a) FROM generate_series(0, 360, 90) AS t(a)) AS t(x,y); -- -- test output (and round-trip safety) of various values. -- To ensure we're testing what we think we're testing, start with -- float values specified by bit patterns (as a useful side effect, -- this means we'll fail on non-IEEE platforms). create type xfloat8; create function xfloat8in(cstring) returns xfloat8 immutable strict language internal as 'int8in'; create function xfloat8out(xfloat8) returns cstring immutable strict language internal as 'int8out'; create type xfloat8 (input = xfloat8in, output = xfloat8out, like = float8); create cast (xfloat8 as float8) without function; create cast (float8 as xfloat8) without function; create cast (xfloat8 as bigint) without function; create cast (bigint as xfloat8) without function; -- float8: seeeeeee eeeeeeee eeeeeeee mmmmmmmm mmmmmmmm(x4) -- we don't care to assume the platform's strtod() handles subnormals -- correctly; those are "use at your own risk". However we do test -- subnormal outputs, since those are under our control. with testdata(bits) as (values -- small subnormals (x'0000000000000001'), (x'0000000000000002'), (x'0000000000000003'), (x'0000000000001000'), (x'0000000100000000'), (x'0000010000000000'), (x'0000010100000000'), (x'0000400000000000'), (x'0000400100000000'), (x'0000800000000000'), (x'0000800000000001'), -- these values taken from upstream testsuite (x'00000000000f4240'), (x'00000000016e3600'), (x'0000008cdcdea440'), -- borderline between subnormal and normal (x'000ffffffffffff0'), (x'000ffffffffffff1'), (x'000ffffffffffffe'), (x'000fffffffffffff')) select float8send(flt) as ibits, flt from (select bits::bigint::xfloat8::float8 as flt from testdata offset 0) s; -- round-trip tests with testdata(bits) as (values (x'0000000000000000'), -- smallest normal values (x'0010000000000000'), (x'0010000000000001'), (x'0010000000000002'), (x'0018000000000000'), -- (x'3ddb7cdfd9d7bdba'), (x'3ddb7cdfd9d7bdbb'), (x'3ddb7cdfd9d7bdbc'), (x'3e112e0be826d694'), (x'3e112e0be826d695'), (x'3e112e0be826d696'), (x'3e45798ee2308c39'), (x'3e45798ee2308c3a'), (x'3e45798ee2308c3b'), (x'3e7ad7f29abcaf47'), (x'3e7ad7f29abcaf48'), (x'3e7ad7f29abcaf49'), (x'3eb0c6f7a0b5ed8c'), (x'3eb0c6f7a0b5ed8d'), (x'3eb0c6f7a0b5ed8e'), (x'3ee4f8b588e368ef'), (x'3ee4f8b588e368f0'), (x'3ee4f8b588e368f1'), (x'3f1a36e2eb1c432c'), (x'3f1a36e2eb1c432d'), (x'3f1a36e2eb1c432e'), (x'3f50624dd2f1a9fb'), (x'3f50624dd2f1a9fc'), (x'3f50624dd2f1a9fd'), (x'3f847ae147ae147a'), (x'3f847ae147ae147b'), (x'3f847ae147ae147c'), (x'3fb9999999999999'), (x'3fb999999999999a'), (x'3fb999999999999b'), -- values very close to 1 (x'3feffffffffffff0'), (x'3feffffffffffff1'), (x'3feffffffffffff2'), (x'3feffffffffffff3'), (x'3feffffffffffff4'), (x'3feffffffffffff5'), (x'3feffffffffffff6'), (x'3feffffffffffff7'), (x'3feffffffffffff8'), (x'3feffffffffffff9'), (x'3feffffffffffffa'), (x'3feffffffffffffb'), (x'3feffffffffffffc'), (x'3feffffffffffffd'), (x'3feffffffffffffe'), (x'3fefffffffffffff'), (x'3ff0000000000000'), (x'3ff0000000000001'), (x'3ff0000000000002'), (x'3ff0000000000003'), (x'3ff0000000000004'), (x'3ff0000000000005'), (x'3ff0000000000006'), (x'3ff0000000000007'), (x'3ff0000000000008'), (x'3ff0000000000009'), -- (x'3ff921fb54442d18'), (x'4005bf0a8b14576a'), (x'400921fb54442d18'), -- (x'4023ffffffffffff'), (x'4024000000000000'), (x'4024000000000001'), (x'4058ffffffffffff'), (x'4059000000000000'), (x'4059000000000001'), (x'408f3fffffffffff'), (x'408f400000000000'), (x'408f400000000001'), (x'40c387ffffffffff'), (x'40c3880000000000'), (x'40c3880000000001'), (x'40f869ffffffffff'), (x'40f86a0000000000'), (x'40f86a0000000001'), (x'412e847fffffffff'), (x'412e848000000000'), (x'412e848000000001'), (x'416312cfffffffff'), (x'416312d000000000'), (x'416312d000000001'), (x'4197d783ffffffff'), (x'4197d78400000000'), (x'4197d78400000001'), (x'41cdcd64ffffffff'), (x'41cdcd6500000000'), (x'41cdcd6500000001'), (x'4202a05f1fffffff'), (x'4202a05f20000000'), (x'4202a05f20000001'), (x'42374876e7ffffff'), (x'42374876e8000000'), (x'42374876e8000001'), (x'426d1a94a1ffffff'), (x'426d1a94a2000000'), (x'426d1a94a2000001'), (x'42a2309ce53fffff'), (x'42a2309ce5400000'), (x'42a2309ce5400001'), (x'42d6bcc41e8fffff'), (x'42d6bcc41e900000'), (x'42d6bcc41e900001'), (x'430c6bf52633ffff'), (x'430c6bf526340000'), (x'430c6bf526340001'), (x'4341c37937e07fff'), (x'4341c37937e08000'), (x'4341c37937e08001'), (x'4376345785d89fff'), (x'4376345785d8a000'), (x'4376345785d8a001'), (x'43abc16d674ec7ff'), (x'43abc16d674ec800'), (x'43abc16d674ec801'), (x'43e158e460913cff'), (x'43e158e460913d00'), (x'43e158e460913d01'), (x'4415af1d78b58c3f'), (x'4415af1d78b58c40'), (x'4415af1d78b58c41'), (x'444b1ae4d6e2ef4f'), (x'444b1ae4d6e2ef50'), (x'444b1ae4d6e2ef51'), (x'4480f0cf064dd591'), (x'4480f0cf064dd592'), (x'4480f0cf064dd593'), (x'44b52d02c7e14af5'), (x'44b52d02c7e14af6'), (x'44b52d02c7e14af7'), (x'44ea784379d99db3'), (x'44ea784379d99db4'), (x'44ea784379d99db5'), (x'45208b2a2c280290'), (x'45208b2a2c280291'), (x'45208b2a2c280292'), -- (x'7feffffffffffffe'), (x'7fefffffffffffff'), -- round to even tests (+ve) (x'4350000000000002'), (x'4350000000002e06'), (x'4352000000000003'), (x'4352000000000004'), (x'4358000000000003'), (x'4358000000000004'), (x'435f000000000020'), -- round to even tests (-ve) (x'c350000000000002'), (x'c350000000002e06'), (x'c352000000000003'), (x'c352000000000004'), (x'c358000000000003'), (x'c358000000000004'), (x'c35f000000000020'), -- exercise fixed-point memmoves (x'42dc12218377de66'), (x'42a674e79c5fe51f'), (x'4271f71fb04cb74c'), (x'423cbe991a145879'), (x'4206fee0e1a9e061'), (x'41d26580b487e6b4'), (x'419d6f34540ca453'), (x'41678c29dcd6e9dc'), (x'4132d687e3df217d'), (x'40fe240c9fcb68c8'), (x'40c81cd6e63c53d3'), (x'40934a4584fd0fdc'), (x'405edd3c07fb4c93'), (x'4028b0fcd32f7076'), (x'3ff3c0ca428c59f8'), -- these cases come from the upstream's testsuite -- LotsOfTrailingZeros) (x'3e60000000000000'), -- Regression (x'c352bd2668e077c4'), (x'434018601510c000'), (x'43d055dc36f24000'), (x'43e052961c6f8000'), (x'3ff3c0ca2a5b1d5d'), -- LooksLikePow5 (x'4830f0cf064dd592'), (x'4840f0cf064dd592'), (x'4850f0cf064dd592'), -- OutputLength (x'3ff3333333333333'), (x'3ff3ae147ae147ae'), (x'3ff3be76c8b43958'), (x'3ff3c083126e978d'), (x'3ff3c0c1fc8f3238'), (x'3ff3c0c9539b8887'), (x'3ff3c0ca2a5b1d5d'), (x'3ff3c0ca4283de1b'), (x'3ff3c0ca43db770a'), (x'3ff3c0ca428abd53'), (x'3ff3c0ca428c1d2b'), (x'3ff3c0ca428c51f2'), (x'3ff3c0ca428c58fc'), (x'3ff3c0ca428c59dd'), (x'3ff3c0ca428c59f8'), (x'3ff3c0ca428c59fb'), -- 32-bit chunking (x'40112e0be8047a7d'), (x'40112e0be815a889'), (x'40112e0be826d695'), (x'40112e0be83804a1'), (x'40112e0be84932ad'), -- MinMaxShift (x'0040000000000000'), (x'007fffffffffffff'), (x'0290000000000000'), (x'029fffffffffffff'), (x'4350000000000000'), (x'435fffffffffffff'), (x'1330000000000000'), (x'133fffffffffffff'), (x'3a6fa7161a4d6e0c') ) select float8send(flt) as ibits, flt, flt::text::float8 as r_flt, float8send(flt::text::float8) as obits, float8send(flt::text::float8) = float8send(flt) as correct from (select bits::bigint::xfloat8::float8 as flt from testdata offset 0) s; -- clean up, lest opr_sanity complain drop type xfloat8 cascade; libpg_query-13-2.1.0/test/sql/postgres_regress/foreign_data.sql000066400000000000000000001051631413137616400246120ustar00rootroot00000000000000-- -- Test foreign-data wrapper and server management. -- -- Clean up in case a prior regression run failed -- Suppress NOTICE messages when roles don't exist SET client_min_messages TO 'warning'; DROP ROLE IF EXISTS regress_foreign_data_user, regress_test_role, regress_test_role2, regress_test_role_super, regress_test_indirect, regress_unprivileged_role; RESET client_min_messages; CREATE ROLE regress_foreign_data_user LOGIN SUPERUSER; SET SESSION AUTHORIZATION 'regress_foreign_data_user'; CREATE ROLE regress_test_role; CREATE ROLE regress_test_role2; CREATE ROLE regress_test_role_super SUPERUSER; CREATE ROLE regress_test_indirect; CREATE ROLE regress_unprivileged_role; CREATE FOREIGN DATA WRAPPER dummy; COMMENT ON FOREIGN DATA WRAPPER dummy IS 'useless'; CREATE FOREIGN DATA WRAPPER postgresql VALIDATOR postgresql_fdw_validator; -- At this point we should have 2 built-in wrappers and no servers. SELECT fdwname, fdwhandler::regproc, fdwvalidator::regproc, fdwoptions FROM pg_foreign_data_wrapper ORDER BY 1, 2, 3; SELECT srvname, srvoptions FROM pg_foreign_server; SELECT * FROM pg_user_mapping; -- CREATE FOREIGN DATA WRAPPER CREATE FOREIGN DATA WRAPPER foo VALIDATOR bar; -- ERROR CREATE FOREIGN DATA WRAPPER foo; \dew CREATE FOREIGN DATA WRAPPER foo; -- duplicate DROP FOREIGN DATA WRAPPER foo; CREATE FOREIGN DATA WRAPPER foo OPTIONS (testing '1'); \dew+ DROP FOREIGN DATA WRAPPER foo; CREATE FOREIGN DATA WRAPPER foo OPTIONS (testing '1', testing '2'); -- ERROR CREATE FOREIGN DATA WRAPPER foo OPTIONS (testing '1', another '2'); \dew+ DROP FOREIGN DATA WRAPPER foo; SET ROLE regress_test_role; CREATE FOREIGN DATA WRAPPER foo; -- ERROR RESET ROLE; CREATE FOREIGN DATA WRAPPER foo VALIDATOR postgresql_fdw_validator; \dew+ -- HANDLER related checks CREATE FUNCTION invalid_fdw_handler() RETURNS int LANGUAGE SQL AS 'SELECT 1;'; CREATE FOREIGN DATA WRAPPER test_fdw HANDLER invalid_fdw_handler; -- ERROR CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler HANDLER invalid_fdw_handler; -- ERROR CREATE FOREIGN DATA WRAPPER test_fdw HANDLER test_fdw_handler; DROP FOREIGN DATA WRAPPER test_fdw; -- ALTER FOREIGN DATA WRAPPER ALTER FOREIGN DATA WRAPPER foo; -- ERROR ALTER FOREIGN DATA WRAPPER foo VALIDATOR bar; -- ERROR ALTER FOREIGN DATA WRAPPER foo NO VALIDATOR; \dew+ ALTER FOREIGN DATA WRAPPER foo OPTIONS (a '1', b '2'); ALTER FOREIGN DATA WRAPPER foo OPTIONS (SET c '4'); -- ERROR ALTER FOREIGN DATA WRAPPER foo OPTIONS (DROP c); -- ERROR ALTER FOREIGN DATA WRAPPER foo OPTIONS (ADD x '1', DROP x); \dew+ ALTER FOREIGN DATA WRAPPER foo OPTIONS (DROP a, SET b '3', ADD c '4'); \dew+ ALTER FOREIGN DATA WRAPPER foo OPTIONS (a '2'); ALTER FOREIGN DATA WRAPPER foo OPTIONS (b '4'); -- ERROR \dew+ SET ROLE regress_test_role; ALTER FOREIGN DATA WRAPPER foo OPTIONS (ADD d '5'); -- ERROR SET ROLE regress_test_role_super; ALTER FOREIGN DATA WRAPPER foo OPTIONS (ADD d '5'); \dew+ ALTER FOREIGN DATA WRAPPER foo OWNER TO regress_test_role; -- ERROR ALTER FOREIGN DATA WRAPPER foo OWNER TO regress_test_role_super; ALTER ROLE regress_test_role_super NOSUPERUSER; SET ROLE regress_test_role_super; ALTER FOREIGN DATA WRAPPER foo OPTIONS (ADD e '6'); -- ERROR RESET ROLE; \dew+ ALTER FOREIGN DATA WRAPPER foo RENAME TO foo1; \dew+ ALTER FOREIGN DATA WRAPPER foo1 RENAME TO foo; -- HANDLER related checks ALTER FOREIGN DATA WRAPPER foo HANDLER invalid_fdw_handler; -- ERROR ALTER FOREIGN DATA WRAPPER foo HANDLER test_fdw_handler HANDLER anything; -- ERROR ALTER FOREIGN DATA WRAPPER foo HANDLER test_fdw_handler; DROP FUNCTION invalid_fdw_handler(); -- DROP FOREIGN DATA WRAPPER DROP FOREIGN DATA WRAPPER nonexistent; -- ERROR DROP FOREIGN DATA WRAPPER IF EXISTS nonexistent; \dew+ DROP ROLE regress_test_role_super; -- ERROR SET ROLE regress_test_role_super; DROP FOREIGN DATA WRAPPER foo; RESET ROLE; DROP ROLE regress_test_role_super; \dew+ CREATE FOREIGN DATA WRAPPER foo; CREATE SERVER s1 FOREIGN DATA WRAPPER foo; COMMENT ON SERVER s1 IS 'foreign server'; CREATE USER MAPPING FOR current_user SERVER s1; CREATE USER MAPPING FOR current_user SERVER s1; -- ERROR CREATE USER MAPPING IF NOT EXISTS FOR current_user SERVER s1; -- NOTICE \dew+ \des+ \deu+ DROP FOREIGN DATA WRAPPER foo; -- ERROR SET ROLE regress_test_role; DROP FOREIGN DATA WRAPPER foo CASCADE; -- ERROR RESET ROLE; DROP FOREIGN DATA WRAPPER foo CASCADE; \dew+ \des+ \deu+ -- exercise CREATE SERVER CREATE SERVER s1 FOREIGN DATA WRAPPER foo; -- ERROR CREATE FOREIGN DATA WRAPPER foo OPTIONS ("test wrapper" 'true'); CREATE SERVER s1 FOREIGN DATA WRAPPER foo; CREATE SERVER s1 FOREIGN DATA WRAPPER foo; -- ERROR CREATE SERVER IF NOT EXISTS s1 FOREIGN DATA WRAPPER foo; -- No ERROR, just NOTICE CREATE SERVER s2 FOREIGN DATA WRAPPER foo OPTIONS (host 'a', dbname 'b'); CREATE SERVER s3 TYPE 'oracle' FOREIGN DATA WRAPPER foo; CREATE SERVER s4 TYPE 'oracle' FOREIGN DATA WRAPPER foo OPTIONS (host 'a', dbname 'b'); CREATE SERVER s5 VERSION '15.0' FOREIGN DATA WRAPPER foo; CREATE SERVER s6 VERSION '16.0' FOREIGN DATA WRAPPER foo OPTIONS (host 'a', dbname 'b'); CREATE SERVER s7 TYPE 'oracle' VERSION '17.0' FOREIGN DATA WRAPPER foo OPTIONS (host 'a', dbname 'b'); CREATE SERVER s8 FOREIGN DATA WRAPPER postgresql OPTIONS (foo '1'); -- ERROR CREATE SERVER s8 FOREIGN DATA WRAPPER postgresql OPTIONS (host 'localhost', dbname 's8db'); \des+ SET ROLE regress_test_role; CREATE SERVER t1 FOREIGN DATA WRAPPER foo; -- ERROR: no usage on FDW RESET ROLE; GRANT USAGE ON FOREIGN DATA WRAPPER foo TO regress_test_role; SET ROLE regress_test_role; CREATE SERVER t1 FOREIGN DATA WRAPPER foo; RESET ROLE; \des+ REVOKE USAGE ON FOREIGN DATA WRAPPER foo FROM regress_test_role; GRANT USAGE ON FOREIGN DATA WRAPPER foo TO regress_test_indirect; SET ROLE regress_test_role; CREATE SERVER t2 FOREIGN DATA WRAPPER foo; -- ERROR RESET ROLE; GRANT regress_test_indirect TO regress_test_role; SET ROLE regress_test_role; CREATE SERVER t2 FOREIGN DATA WRAPPER foo; \des+ RESET ROLE; REVOKE regress_test_indirect FROM regress_test_role; -- ALTER SERVER ALTER SERVER s0; -- ERROR ALTER SERVER s0 OPTIONS (a '1'); -- ERROR ALTER SERVER s1 VERSION '1.0' OPTIONS (servername 's1'); ALTER SERVER s2 VERSION '1.1'; ALTER SERVER s3 OPTIONS ("tns name" 'orcl', port '1521'); GRANT USAGE ON FOREIGN SERVER s1 TO regress_test_role; GRANT USAGE ON FOREIGN SERVER s6 TO regress_test_role2 WITH GRANT OPTION; \des+ SET ROLE regress_test_role; ALTER SERVER s1 VERSION '1.1'; -- ERROR ALTER SERVER s1 OWNER TO regress_test_role; -- ERROR RESET ROLE; ALTER SERVER s1 OWNER TO regress_test_role; GRANT regress_test_role2 TO regress_test_role; SET ROLE regress_test_role; ALTER SERVER s1 VERSION '1.1'; ALTER SERVER s1 OWNER TO regress_test_role2; -- ERROR RESET ROLE; ALTER SERVER s8 OPTIONS (foo '1'); -- ERROR option validation ALTER SERVER s8 OPTIONS (connect_timeout '30', SET dbname 'db1', DROP host); SET ROLE regress_test_role; ALTER SERVER s1 OWNER TO regress_test_indirect; -- ERROR RESET ROLE; GRANT regress_test_indirect TO regress_test_role; SET ROLE regress_test_role; ALTER SERVER s1 OWNER TO regress_test_indirect; RESET ROLE; GRANT USAGE ON FOREIGN DATA WRAPPER foo TO regress_test_indirect; SET ROLE regress_test_role; ALTER SERVER s1 OWNER TO regress_test_indirect; RESET ROLE; DROP ROLE regress_test_indirect; -- ERROR \des+ ALTER SERVER s8 RENAME to s8new; \des+ ALTER SERVER s8new RENAME to s8; -- DROP SERVER DROP SERVER nonexistent; -- ERROR DROP SERVER IF EXISTS nonexistent; \des SET ROLE regress_test_role; DROP SERVER s2; -- ERROR DROP SERVER s1; RESET ROLE; \des ALTER SERVER s2 OWNER TO regress_test_role; SET ROLE regress_test_role; DROP SERVER s2; RESET ROLE; \des CREATE USER MAPPING FOR current_user SERVER s3; \deu DROP SERVER s3; -- ERROR DROP SERVER s3 CASCADE; \des \deu -- CREATE USER MAPPING CREATE USER MAPPING FOR regress_test_missing_role SERVER s1; -- ERROR CREATE USER MAPPING FOR current_user SERVER s1; -- ERROR CREATE USER MAPPING FOR current_user SERVER s4; CREATE USER MAPPING FOR user SERVER s4; -- ERROR duplicate CREATE USER MAPPING FOR public SERVER s4 OPTIONS ("this mapping" 'is public'); CREATE USER MAPPING FOR user SERVER s8 OPTIONS (username 'test', password 'secret'); -- ERROR CREATE USER MAPPING FOR user SERVER s8 OPTIONS (user 'test', password 'secret'); ALTER SERVER s5 OWNER TO regress_test_role; ALTER SERVER s6 OWNER TO regress_test_indirect; SET ROLE regress_test_role; CREATE USER MAPPING FOR current_user SERVER s5; CREATE USER MAPPING FOR current_user SERVER s6 OPTIONS (username 'test'); CREATE USER MAPPING FOR current_user SERVER s7; -- ERROR CREATE USER MAPPING FOR public SERVER s8; -- ERROR RESET ROLE; ALTER SERVER t1 OWNER TO regress_test_indirect; SET ROLE regress_test_role; CREATE USER MAPPING FOR current_user SERVER t1 OPTIONS (username 'bob', password 'boo'); CREATE USER MAPPING FOR public SERVER t1; RESET ROLE; \deu -- ALTER USER MAPPING ALTER USER MAPPING FOR regress_test_missing_role SERVER s4 OPTIONS (gotcha 'true'); -- ERROR ALTER USER MAPPING FOR user SERVER ss4 OPTIONS (gotcha 'true'); -- ERROR ALTER USER MAPPING FOR public SERVER s5 OPTIONS (gotcha 'true'); -- ERROR ALTER USER MAPPING FOR current_user SERVER s8 OPTIONS (username 'test'); -- ERROR ALTER USER MAPPING FOR current_user SERVER s8 OPTIONS (DROP user, SET password 'public'); SET ROLE regress_test_role; ALTER USER MAPPING FOR current_user SERVER s5 OPTIONS (ADD modified '1'); ALTER USER MAPPING FOR public SERVER s4 OPTIONS (ADD modified '1'); -- ERROR ALTER USER MAPPING FOR public SERVER t1 OPTIONS (ADD modified '1'); RESET ROLE; \deu+ -- DROP USER MAPPING DROP USER MAPPING FOR regress_test_missing_role SERVER s4; -- ERROR DROP USER MAPPING FOR user SERVER ss4; DROP USER MAPPING FOR public SERVER s7; -- ERROR DROP USER MAPPING IF EXISTS FOR regress_test_missing_role SERVER s4; DROP USER MAPPING IF EXISTS FOR user SERVER ss4; DROP USER MAPPING IF EXISTS FOR public SERVER s7; CREATE USER MAPPING FOR public SERVER s8; SET ROLE regress_test_role; DROP USER MAPPING FOR public SERVER s8; -- ERROR RESET ROLE; DROP SERVER s7; \deu -- CREATE FOREIGN TABLE CREATE SCHEMA foreign_schema; CREATE SERVER s0 FOREIGN DATA WRAPPER dummy; CREATE FOREIGN TABLE ft1 (); -- ERROR CREATE FOREIGN TABLE ft1 () SERVER no_server; -- ERROR CREATE FOREIGN TABLE ft1 ( c1 integer OPTIONS ("param 1" 'val1') PRIMARY KEY, c2 text OPTIONS (param2 'val2', param3 'val3'), c3 date ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); -- ERROR CREATE TABLE ref_table (id integer PRIMARY KEY); CREATE FOREIGN TABLE ft1 ( c1 integer OPTIONS ("param 1" 'val1') REFERENCES ref_table (id), c2 text OPTIONS (param2 'val2', param3 'val3'), c3 date ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); -- ERROR DROP TABLE ref_table; CREATE FOREIGN TABLE ft1 ( c1 integer OPTIONS ("param 1" 'val1') NOT NULL, c2 text OPTIONS (param2 'val2', param3 'val3'), c3 date, UNIQUE (c3) ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); -- ERROR CREATE FOREIGN TABLE ft1 ( c1 integer OPTIONS ("param 1" 'val1') NOT NULL, c2 text OPTIONS (param2 'val2', param3 'val3') CHECK (c2 <> ''), c3 date, CHECK (c3 BETWEEN '1994-01-01'::date AND '1994-01-31'::date) ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); COMMENT ON FOREIGN TABLE ft1 IS 'ft1'; COMMENT ON COLUMN ft1.c1 IS 'ft1.c1'; \d+ ft1 \det+ CREATE INDEX id_ft1_c2 ON ft1 (c2); -- ERROR SELECT * FROM ft1; -- ERROR EXPLAIN SELECT * FROM ft1; -- ERROR CREATE TABLE lt1 (a INT) PARTITION BY RANGE (a); CREATE FOREIGN TABLE ft_part1 PARTITION OF lt1 FOR VALUES FROM (0) TO (1000) SERVER s0; CREATE INDEX ON lt1 (a); -- skips partition CREATE UNIQUE INDEX ON lt1 (a); -- ERROR ALTER TABLE lt1 ADD PRIMARY KEY (a); -- ERROR DROP TABLE lt1; CREATE TABLE lt1 (a INT) PARTITION BY RANGE (a); CREATE INDEX ON lt1 (a); CREATE FOREIGN TABLE ft_part1 PARTITION OF lt1 FOR VALUES FROM (0) TO (1000) SERVER s0; CREATE FOREIGN TABLE ft_part2 (a INT) SERVER s0; ALTER TABLE lt1 ATTACH PARTITION ft_part2 FOR VALUES FROM (1000) TO (2000); DROP FOREIGN TABLE ft_part1, ft_part2; CREATE UNIQUE INDEX ON lt1 (a); ALTER TABLE lt1 ADD PRIMARY KEY (a); CREATE FOREIGN TABLE ft_part1 PARTITION OF lt1 FOR VALUES FROM (0) TO (1000) SERVER s0; -- ERROR CREATE FOREIGN TABLE ft_part2 (a INT NOT NULL) SERVER s0; ALTER TABLE lt1 ATTACH PARTITION ft_part2 FOR VALUES FROM (1000) TO (2000); -- ERROR DROP TABLE lt1; DROP FOREIGN TABLE ft_part2; CREATE TABLE lt1 (a INT) PARTITION BY RANGE (a); CREATE INDEX ON lt1 (a); CREATE TABLE lt1_part1 PARTITION OF lt1 FOR VALUES FROM (0) TO (1000) PARTITION BY RANGE (a); CREATE FOREIGN TABLE ft_part_1_1 PARTITION OF lt1_part1 FOR VALUES FROM (0) TO (100) SERVER s0; CREATE FOREIGN TABLE ft_part_1_2 (a INT) SERVER s0; ALTER TABLE lt1_part1 ATTACH PARTITION ft_part_1_2 FOR VALUES FROM (100) TO (200); CREATE UNIQUE INDEX ON lt1 (a); ALTER TABLE lt1 ADD PRIMARY KEY (a); DROP FOREIGN TABLE ft_part_1_1, ft_part_1_2; CREATE UNIQUE INDEX ON lt1 (a); ALTER TABLE lt1 ADD PRIMARY KEY (a); CREATE FOREIGN TABLE ft_part_1_1 PARTITION OF lt1_part1 FOR VALUES FROM (0) TO (100) SERVER s0; CREATE FOREIGN TABLE ft_part_1_2 (a INT NOT NULL) SERVER s0; ALTER TABLE lt1_part1 ATTACH PARTITION ft_part_1_2 FOR VALUES FROM (100) TO (200); DROP TABLE lt1; DROP FOREIGN TABLE ft_part_1_2; -- ALTER FOREIGN TABLE COMMENT ON FOREIGN TABLE ft1 IS 'foreign table'; COMMENT ON FOREIGN TABLE ft1 IS NULL; COMMENT ON COLUMN ft1.c1 IS 'foreign column'; COMMENT ON COLUMN ft1.c1 IS NULL; ALTER FOREIGN TABLE ft1 ADD COLUMN c4 integer; ALTER FOREIGN TABLE ft1 ADD COLUMN c5 integer DEFAULT 0; ALTER FOREIGN TABLE ft1 ADD COLUMN c6 integer; ALTER FOREIGN TABLE ft1 ADD COLUMN c7 integer NOT NULL; ALTER FOREIGN TABLE ft1 ADD COLUMN c8 integer; ALTER FOREIGN TABLE ft1 ADD COLUMN c9 integer; ALTER FOREIGN TABLE ft1 ADD COLUMN c10 integer OPTIONS (p1 'v1'); ALTER FOREIGN TABLE ft1 ALTER COLUMN c4 SET DEFAULT 0; ALTER FOREIGN TABLE ft1 ALTER COLUMN c5 DROP DEFAULT; ALTER FOREIGN TABLE ft1 ALTER COLUMN c6 SET NOT NULL; ALTER FOREIGN TABLE ft1 ALTER COLUMN c7 DROP NOT NULL; ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) USING '0'; -- ERROR ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10); ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET DATA TYPE text; ALTER FOREIGN TABLE ft1 ALTER COLUMN xmin OPTIONS (ADD p1 'v1'); -- ERROR ALTER FOREIGN TABLE ft1 ALTER COLUMN c7 OPTIONS (ADD p1 'v1', ADD p2 'v2'), ALTER COLUMN c8 OPTIONS (ADD p1 'v1', ADD p2 'v2'); ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 OPTIONS (SET p2 'V2', DROP p1); ALTER FOREIGN TABLE ft1 ALTER COLUMN c1 SET STATISTICS 10000; ALTER FOREIGN TABLE ft1 ALTER COLUMN c1 SET (n_distinct = 100); ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET STATISTICS -1; ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET STORAGE PLAIN; \d+ ft1 -- can't change the column type if it's used elsewhere CREATE TABLE use_ft1_column_type (x ft1); ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET DATA TYPE integer; -- ERROR DROP TABLE use_ft1_column_type; ALTER FOREIGN TABLE ft1 ADD PRIMARY KEY (c7); -- ERROR ALTER FOREIGN TABLE ft1 ADD CONSTRAINT ft1_c9_check CHECK (c9 < 0) NOT VALID; ALTER FOREIGN TABLE ft1 ALTER CONSTRAINT ft1_c9_check DEFERRABLE; -- ERROR ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c9_check; ALTER FOREIGN TABLE ft1 DROP CONSTRAINT no_const; -- ERROR ALTER FOREIGN TABLE ft1 DROP CONSTRAINT IF EXISTS no_const; ALTER FOREIGN TABLE ft1 OWNER TO regress_test_role; ALTER FOREIGN TABLE ft1 OPTIONS (DROP delimiter, SET quote '~', ADD escape '@'); ALTER FOREIGN TABLE ft1 DROP COLUMN no_column; -- ERROR ALTER FOREIGN TABLE ft1 DROP COLUMN IF EXISTS no_column; ALTER FOREIGN TABLE ft1 DROP COLUMN c9; ALTER FOREIGN TABLE ft1 SET SCHEMA foreign_schema; ALTER FOREIGN TABLE ft1 SET TABLESPACE ts; -- ERROR ALTER FOREIGN TABLE foreign_schema.ft1 RENAME c1 TO foreign_column_1; ALTER FOREIGN TABLE foreign_schema.ft1 RENAME TO foreign_table_1; \d foreign_schema.foreign_table_1 -- alter noexisting table ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c4 integer; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c6 integer; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c7 integer NOT NULL; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c8 integer; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c9 integer; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c10 integer OPTIONS (p1 'v1'); ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ALTER COLUMN c6 SET NOT NULL; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ALTER COLUMN c7 DROP NOT NULL; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ALTER COLUMN c8 TYPE char(10); ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ALTER COLUMN c8 SET DATA TYPE text; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ALTER COLUMN c7 OPTIONS (ADD p1 'v1', ADD p2 'v2'), ALTER COLUMN c8 OPTIONS (ADD p1 'v1', ADD p2 'v2'); ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ALTER COLUMN c8 OPTIONS (SET p2 'V2', DROP p1); ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP CONSTRAINT IF EXISTS no_const; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP CONSTRAINT ft1_c1_check; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 OWNER TO regress_test_role; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 OPTIONS (DROP delimiter, SET quote '~', ADD escape '@'); ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP COLUMN IF EXISTS no_column; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP COLUMN c9; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 SET SCHEMA foreign_schema; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 RENAME c1 TO foreign_column_1; ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 RENAME TO foreign_table_1; -- Information schema SELECT * FROM information_schema.foreign_data_wrappers ORDER BY 1, 2; SELECT * FROM information_schema.foreign_data_wrapper_options ORDER BY 1, 2, 3; SELECT * FROM information_schema.foreign_servers ORDER BY 1, 2; SELECT * FROM information_schema.foreign_server_options ORDER BY 1, 2, 3; SELECT * FROM information_schema.user_mappings ORDER BY lower(authorization_identifier), 2, 3; SELECT * FROM information_schema.user_mapping_options ORDER BY lower(authorization_identifier), 2, 3, 4; SELECT * FROM information_schema.usage_privileges WHERE object_type LIKE 'FOREIGN%' AND object_name IN ('s6', 'foo') ORDER BY 1, 2, 3, 4, 5; SELECT * FROM information_schema.role_usage_grants WHERE object_type LIKE 'FOREIGN%' AND object_name IN ('s6', 'foo') ORDER BY 1, 2, 3, 4, 5; SELECT * FROM information_schema.foreign_tables ORDER BY 1, 2, 3; SELECT * FROM information_schema.foreign_table_options ORDER BY 1, 2, 3, 4; SET ROLE regress_test_role; SELECT * FROM information_schema.user_mapping_options ORDER BY 1, 2, 3, 4; SELECT * FROM information_schema.usage_privileges WHERE object_type LIKE 'FOREIGN%' AND object_name IN ('s6', 'foo') ORDER BY 1, 2, 3, 4, 5; SELECT * FROM information_schema.role_usage_grants WHERE object_type LIKE 'FOREIGN%' AND object_name IN ('s6', 'foo') ORDER BY 1, 2, 3, 4, 5; DROP USER MAPPING FOR current_user SERVER t1; SET ROLE regress_test_role2; SELECT * FROM information_schema.user_mapping_options ORDER BY 1, 2, 3, 4; RESET ROLE; -- has_foreign_data_wrapper_privilege SELECT has_foreign_data_wrapper_privilege('regress_test_role', (SELECT oid FROM pg_foreign_data_wrapper WHERE fdwname='foo'), 'USAGE'); SELECT has_foreign_data_wrapper_privilege('regress_test_role', 'foo', 'USAGE'); SELECT has_foreign_data_wrapper_privilege( (SELECT oid FROM pg_roles WHERE rolname='regress_test_role'), (SELECT oid FROM pg_foreign_data_wrapper WHERE fdwname='foo'), 'USAGE'); SELECT has_foreign_data_wrapper_privilege( (SELECT oid FROM pg_foreign_data_wrapper WHERE fdwname='foo'), 'USAGE'); SELECT has_foreign_data_wrapper_privilege( (SELECT oid FROM pg_roles WHERE rolname='regress_test_role'), 'foo', 'USAGE'); SELECT has_foreign_data_wrapper_privilege('foo', 'USAGE'); GRANT USAGE ON FOREIGN DATA WRAPPER foo TO regress_test_role; SELECT has_foreign_data_wrapper_privilege('regress_test_role', 'foo', 'USAGE'); -- has_server_privilege SELECT has_server_privilege('regress_test_role', (SELECT oid FROM pg_foreign_server WHERE srvname='s8'), 'USAGE'); SELECT has_server_privilege('regress_test_role', 's8', 'USAGE'); SELECT has_server_privilege( (SELECT oid FROM pg_roles WHERE rolname='regress_test_role'), (SELECT oid FROM pg_foreign_server WHERE srvname='s8'), 'USAGE'); SELECT has_server_privilege( (SELECT oid FROM pg_foreign_server WHERE srvname='s8'), 'USAGE'); SELECT has_server_privilege( (SELECT oid FROM pg_roles WHERE rolname='regress_test_role'), 's8', 'USAGE'); SELECT has_server_privilege('s8', 'USAGE'); GRANT USAGE ON FOREIGN SERVER s8 TO regress_test_role; SELECT has_server_privilege('regress_test_role', 's8', 'USAGE'); REVOKE USAGE ON FOREIGN SERVER s8 FROM regress_test_role; GRANT USAGE ON FOREIGN SERVER s4 TO regress_test_role; DROP USER MAPPING FOR public SERVER s4; ALTER SERVER s6 OPTIONS (DROP host, DROP dbname); ALTER USER MAPPING FOR regress_test_role SERVER s6 OPTIONS (DROP username); ALTER FOREIGN DATA WRAPPER foo VALIDATOR postgresql_fdw_validator; -- Privileges SET ROLE regress_unprivileged_role; CREATE FOREIGN DATA WRAPPER foobar; -- ERROR ALTER FOREIGN DATA WRAPPER foo OPTIONS (gotcha 'true'); -- ERROR ALTER FOREIGN DATA WRAPPER foo OWNER TO regress_unprivileged_role; -- ERROR DROP FOREIGN DATA WRAPPER foo; -- ERROR GRANT USAGE ON FOREIGN DATA WRAPPER foo TO regress_test_role; -- ERROR CREATE SERVER s9 FOREIGN DATA WRAPPER foo; -- ERROR ALTER SERVER s4 VERSION '0.5'; -- ERROR ALTER SERVER s4 OWNER TO regress_unprivileged_role; -- ERROR DROP SERVER s4; -- ERROR GRANT USAGE ON FOREIGN SERVER s4 TO regress_test_role; -- ERROR CREATE USER MAPPING FOR public SERVER s4; -- ERROR ALTER USER MAPPING FOR regress_test_role SERVER s6 OPTIONS (gotcha 'true'); -- ERROR DROP USER MAPPING FOR regress_test_role SERVER s6; -- ERROR RESET ROLE; GRANT USAGE ON FOREIGN DATA WRAPPER postgresql TO regress_unprivileged_role; GRANT USAGE ON FOREIGN DATA WRAPPER foo TO regress_unprivileged_role WITH GRANT OPTION; SET ROLE regress_unprivileged_role; CREATE FOREIGN DATA WRAPPER foobar; -- ERROR ALTER FOREIGN DATA WRAPPER foo OPTIONS (gotcha 'true'); -- ERROR DROP FOREIGN DATA WRAPPER foo; -- ERROR GRANT USAGE ON FOREIGN DATA WRAPPER postgresql TO regress_test_role; -- WARNING GRANT USAGE ON FOREIGN DATA WRAPPER foo TO regress_test_role; CREATE SERVER s9 FOREIGN DATA WRAPPER postgresql; ALTER SERVER s6 VERSION '0.5'; -- ERROR DROP SERVER s6; -- ERROR GRANT USAGE ON FOREIGN SERVER s6 TO regress_test_role; -- ERROR GRANT USAGE ON FOREIGN SERVER s9 TO regress_test_role; CREATE USER MAPPING FOR public SERVER s6; -- ERROR CREATE USER MAPPING FOR public SERVER s9; ALTER USER MAPPING FOR regress_test_role SERVER s6 OPTIONS (gotcha 'true'); -- ERROR DROP USER MAPPING FOR regress_test_role SERVER s6; -- ERROR RESET ROLE; REVOKE USAGE ON FOREIGN DATA WRAPPER foo FROM regress_unprivileged_role; -- ERROR REVOKE USAGE ON FOREIGN DATA WRAPPER foo FROM regress_unprivileged_role CASCADE; SET ROLE regress_unprivileged_role; GRANT USAGE ON FOREIGN DATA WRAPPER foo TO regress_test_role; -- ERROR CREATE SERVER s10 FOREIGN DATA WRAPPER foo; -- ERROR ALTER SERVER s9 VERSION '1.1'; GRANT USAGE ON FOREIGN SERVER s9 TO regress_test_role; CREATE USER MAPPING FOR current_user SERVER s9; DROP SERVER s9 CASCADE; RESET ROLE; CREATE SERVER s9 FOREIGN DATA WRAPPER foo; GRANT USAGE ON FOREIGN SERVER s9 TO regress_unprivileged_role; SET ROLE regress_unprivileged_role; ALTER SERVER s9 VERSION '1.2'; -- ERROR GRANT USAGE ON FOREIGN SERVER s9 TO regress_test_role; -- WARNING CREATE USER MAPPING FOR current_user SERVER s9; DROP SERVER s9 CASCADE; -- ERROR -- Check visibility of user mapping data SET ROLE regress_test_role; CREATE SERVER s10 FOREIGN DATA WRAPPER foo; CREATE USER MAPPING FOR public SERVER s10 OPTIONS (user 'secret'); CREATE USER MAPPING FOR regress_unprivileged_role SERVER s10 OPTIONS (user 'secret'); -- owner of server can see some option fields \deu+ RESET ROLE; -- superuser can see all option fields \deu+ -- unprivileged user cannot see any option field SET ROLE regress_unprivileged_role; \deu+ RESET ROLE; DROP SERVER s10 CASCADE; -- Triggers CREATE FUNCTION dummy_trigger() RETURNS TRIGGER AS $$ BEGIN RETURN NULL; END $$ language plpgsql; CREATE TRIGGER trigtest_before_stmt BEFORE INSERT OR UPDATE OR DELETE ON foreign_schema.foreign_table_1 FOR EACH STATEMENT EXECUTE PROCEDURE dummy_trigger(); CREATE TRIGGER trigtest_after_stmt AFTER INSERT OR UPDATE OR DELETE ON foreign_schema.foreign_table_1 FOR EACH STATEMENT EXECUTE PROCEDURE dummy_trigger(); CREATE TRIGGER trigtest_after_stmt_tt AFTER INSERT OR UPDATE OR DELETE -- ERROR ON foreign_schema.foreign_table_1 REFERENCING NEW TABLE AS new_table FOR EACH STATEMENT EXECUTE PROCEDURE dummy_trigger(); CREATE TRIGGER trigtest_before_row BEFORE INSERT OR UPDATE OR DELETE ON foreign_schema.foreign_table_1 FOR EACH ROW EXECUTE PROCEDURE dummy_trigger(); CREATE TRIGGER trigtest_after_row AFTER INSERT OR UPDATE OR DELETE ON foreign_schema.foreign_table_1 FOR EACH ROW EXECUTE PROCEDURE dummy_trigger(); CREATE CONSTRAINT TRIGGER trigtest_constraint AFTER INSERT OR UPDATE OR DELETE ON foreign_schema.foreign_table_1 FOR EACH ROW EXECUTE PROCEDURE dummy_trigger(); ALTER FOREIGN TABLE foreign_schema.foreign_table_1 DISABLE TRIGGER trigtest_before_stmt; ALTER FOREIGN TABLE foreign_schema.foreign_table_1 ENABLE TRIGGER trigtest_before_stmt; DROP TRIGGER trigtest_before_stmt ON foreign_schema.foreign_table_1; DROP TRIGGER trigtest_before_row ON foreign_schema.foreign_table_1; DROP TRIGGER trigtest_after_stmt ON foreign_schema.foreign_table_1; DROP TRIGGER trigtest_after_row ON foreign_schema.foreign_table_1; DROP FUNCTION dummy_trigger(); -- Table inheritance CREATE TABLE fd_pt1 ( c1 integer NOT NULL, c2 text, c3 date ); CREATE FOREIGN TABLE ft2 () INHERITS (fd_pt1) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); \d+ fd_pt1 \d+ ft2 DROP FOREIGN TABLE ft2; \d+ fd_pt1 CREATE FOREIGN TABLE ft2 ( c1 integer NOT NULL, c2 text, c3 date ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); \d+ ft2 ALTER FOREIGN TABLE ft2 INHERIT fd_pt1; \d+ fd_pt1 \d+ ft2 CREATE TABLE ct3() INHERITS(ft2); CREATE FOREIGN TABLE ft3 ( c1 integer NOT NULL, c2 text, c3 date ) INHERITS(ft2) SERVER s0; \d+ ft2 \d+ ct3 \d+ ft3 -- add attributes recursively ALTER TABLE fd_pt1 ADD COLUMN c4 integer; ALTER TABLE fd_pt1 ADD COLUMN c5 integer DEFAULT 0; ALTER TABLE fd_pt1 ADD COLUMN c6 integer; ALTER TABLE fd_pt1 ADD COLUMN c7 integer NOT NULL; ALTER TABLE fd_pt1 ADD COLUMN c8 integer; \d+ fd_pt1 \d+ ft2 \d+ ct3 \d+ ft3 -- alter attributes recursively ALTER TABLE fd_pt1 ALTER COLUMN c4 SET DEFAULT 0; ALTER TABLE fd_pt1 ALTER COLUMN c5 DROP DEFAULT; ALTER TABLE fd_pt1 ALTER COLUMN c6 SET NOT NULL; ALTER TABLE fd_pt1 ALTER COLUMN c7 DROP NOT NULL; ALTER TABLE fd_pt1 ALTER COLUMN c8 TYPE char(10) USING '0'; -- ERROR ALTER TABLE fd_pt1 ALTER COLUMN c8 TYPE char(10); ALTER TABLE fd_pt1 ALTER COLUMN c8 SET DATA TYPE text; ALTER TABLE fd_pt1 ALTER COLUMN c1 SET STATISTICS 10000; ALTER TABLE fd_pt1 ALTER COLUMN c1 SET (n_distinct = 100); ALTER TABLE fd_pt1 ALTER COLUMN c8 SET STATISTICS -1; ALTER TABLE fd_pt1 ALTER COLUMN c8 SET STORAGE EXTERNAL; \d+ fd_pt1 \d+ ft2 -- drop attributes recursively ALTER TABLE fd_pt1 DROP COLUMN c4; ALTER TABLE fd_pt1 DROP COLUMN c5; ALTER TABLE fd_pt1 DROP COLUMN c6; ALTER TABLE fd_pt1 DROP COLUMN c7; ALTER TABLE fd_pt1 DROP COLUMN c8; \d+ fd_pt1 \d+ ft2 -- add constraints recursively ALTER TABLE fd_pt1 ADD CONSTRAINT fd_pt1chk1 CHECK (c1 > 0) NO INHERIT; ALTER TABLE fd_pt1 ADD CONSTRAINT fd_pt1chk2 CHECK (c2 <> ''); -- connoinherit should be true for NO INHERIT constraint SELECT relname, conname, contype, conislocal, coninhcount, connoinherit FROM pg_class AS pc JOIN pg_constraint AS pgc ON (conrelid = pc.oid) WHERE pc.relname = 'fd_pt1' ORDER BY 1,2; -- child does not inherit NO INHERIT constraints \d+ fd_pt1 \d+ ft2 DROP FOREIGN TABLE ft2; -- ERROR DROP FOREIGN TABLE ft2 CASCADE; CREATE FOREIGN TABLE ft2 ( c1 integer NOT NULL, c2 text, c3 date ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); -- child must have parent's INHERIT constraints ALTER FOREIGN TABLE ft2 INHERIT fd_pt1; -- ERROR ALTER FOREIGN TABLE ft2 ADD CONSTRAINT fd_pt1chk2 CHECK (c2 <> ''); ALTER FOREIGN TABLE ft2 INHERIT fd_pt1; -- child does not inherit NO INHERIT constraints \d+ fd_pt1 \d+ ft2 -- drop constraints recursively ALTER TABLE fd_pt1 DROP CONSTRAINT fd_pt1chk1 CASCADE; ALTER TABLE fd_pt1 DROP CONSTRAINT fd_pt1chk2 CASCADE; -- NOT VALID case INSERT INTO fd_pt1 VALUES (1, 'fd_pt1'::text, '1994-01-01'::date); ALTER TABLE fd_pt1 ADD CONSTRAINT fd_pt1chk3 CHECK (c2 <> '') NOT VALID; \d+ fd_pt1 \d+ ft2 -- VALIDATE CONSTRAINT need do nothing on foreign tables ALTER TABLE fd_pt1 VALIDATE CONSTRAINT fd_pt1chk3; \d+ fd_pt1 \d+ ft2 -- changes name of an attribute recursively ALTER TABLE fd_pt1 RENAME COLUMN c1 TO f1; ALTER TABLE fd_pt1 RENAME COLUMN c2 TO f2; ALTER TABLE fd_pt1 RENAME COLUMN c3 TO f3; -- changes name of a constraint recursively ALTER TABLE fd_pt1 RENAME CONSTRAINT fd_pt1chk3 TO f2_check; \d+ fd_pt1 \d+ ft2 -- TRUNCATE doesn't work on foreign tables, either directly or recursively TRUNCATE ft2; -- ERROR TRUNCATE fd_pt1; -- ERROR DROP TABLE fd_pt1 CASCADE; -- IMPORT FOREIGN SCHEMA IMPORT FOREIGN SCHEMA s1 FROM SERVER s9 INTO public; -- ERROR IMPORT FOREIGN SCHEMA s1 LIMIT TO (t1) FROM SERVER s9 INTO public; --ERROR IMPORT FOREIGN SCHEMA s1 EXCEPT (t1) FROM SERVER s9 INTO public; -- ERROR IMPORT FOREIGN SCHEMA s1 EXCEPT (t1, t2) FROM SERVER s9 INTO public OPTIONS (option1 'value1', option2 'value2'); -- ERROR -- DROP FOREIGN TABLE DROP FOREIGN TABLE no_table; -- ERROR DROP FOREIGN TABLE IF EXISTS no_table; DROP FOREIGN TABLE foreign_schema.foreign_table_1; -- REASSIGN OWNED/DROP OWNED of foreign objects REASSIGN OWNED BY regress_test_role TO regress_test_role2; DROP OWNED BY regress_test_role2; DROP OWNED BY regress_test_role2 CASCADE; -- Foreign partition DDL stuff CREATE TABLE fd_pt2 ( c1 integer NOT NULL, c2 text, c3 date ) PARTITION BY LIST (c1); CREATE FOREIGN TABLE fd_pt2_1 PARTITION OF fd_pt2 FOR VALUES IN (1) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); \d+ fd_pt2 \d+ fd_pt2_1 -- partition cannot have additional columns DROP FOREIGN TABLE fd_pt2_1; CREATE FOREIGN TABLE fd_pt2_1 ( c1 integer NOT NULL, c2 text, c3 date, c4 char ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); \d+ fd_pt2_1 ALTER TABLE fd_pt2 ATTACH PARTITION fd_pt2_1 FOR VALUES IN (1); -- ERROR DROP FOREIGN TABLE fd_pt2_1; \d+ fd_pt2 CREATE FOREIGN TABLE fd_pt2_1 ( c1 integer NOT NULL, c2 text, c3 date ) SERVER s0 OPTIONS (delimiter ',', quote '"', "be quoted" 'value'); \d+ fd_pt2_1 -- no attach partition validation occurs for foreign tables ALTER TABLE fd_pt2 ATTACH PARTITION fd_pt2_1 FOR VALUES IN (1); \d+ fd_pt2 \d+ fd_pt2_1 -- cannot add column to a partition ALTER TABLE fd_pt2_1 ADD c4 char; -- ok to have a partition's own constraints though ALTER TABLE fd_pt2_1 ALTER c3 SET NOT NULL; ALTER TABLE fd_pt2_1 ADD CONSTRAINT p21chk CHECK (c2 <> ''); \d+ fd_pt2 \d+ fd_pt2_1 -- cannot drop inherited NOT NULL constraint from a partition ALTER TABLE fd_pt2_1 ALTER c1 DROP NOT NULL; -- partition must have parent's constraints ALTER TABLE fd_pt2 DETACH PARTITION fd_pt2_1; ALTER TABLE fd_pt2 ALTER c2 SET NOT NULL; \d+ fd_pt2 \d+ fd_pt2_1 ALTER TABLE fd_pt2 ATTACH PARTITION fd_pt2_1 FOR VALUES IN (1); -- ERROR ALTER FOREIGN TABLE fd_pt2_1 ALTER c2 SET NOT NULL; ALTER TABLE fd_pt2 ATTACH PARTITION fd_pt2_1 FOR VALUES IN (1); ALTER TABLE fd_pt2 DETACH PARTITION fd_pt2_1; ALTER TABLE fd_pt2 ADD CONSTRAINT fd_pt2chk1 CHECK (c1 > 0); \d+ fd_pt2 \d+ fd_pt2_1 ALTER TABLE fd_pt2 ATTACH PARTITION fd_pt2_1 FOR VALUES IN (1); -- ERROR ALTER FOREIGN TABLE fd_pt2_1 ADD CONSTRAINT fd_pt2chk1 CHECK (c1 > 0); ALTER TABLE fd_pt2 ATTACH PARTITION fd_pt2_1 FOR VALUES IN (1); -- TRUNCATE doesn't work on foreign tables, either directly or recursively TRUNCATE fd_pt2_1; -- ERROR TRUNCATE fd_pt2; -- ERROR DROP FOREIGN TABLE fd_pt2_1; DROP TABLE fd_pt2; -- foreign table cannot be part of partition tree made of temporary -- relations. CREATE TEMP TABLE temp_parted (a int) PARTITION BY LIST (a); CREATE FOREIGN TABLE foreign_part PARTITION OF temp_parted DEFAULT SERVER s0; -- ERROR CREATE FOREIGN TABLE foreign_part (a int) SERVER s0; ALTER TABLE temp_parted ATTACH PARTITION foreign_part DEFAULT; -- ERROR DROP FOREIGN TABLE foreign_part; DROP TABLE temp_parted; -- Cleanup DROP SCHEMA foreign_schema CASCADE; DROP ROLE regress_test_role; -- ERROR DROP SERVER t1 CASCADE; DROP USER MAPPING FOR regress_test_role SERVER s6; DROP FOREIGN DATA WRAPPER foo CASCADE; DROP SERVER s8 CASCADE; DROP ROLE regress_test_indirect; DROP ROLE regress_test_role; DROP ROLE regress_unprivileged_role; -- ERROR REVOKE ALL ON FOREIGN DATA WRAPPER postgresql FROM regress_unprivileged_role; DROP ROLE regress_unprivileged_role; DROP ROLE regress_test_role2; DROP FOREIGN DATA WRAPPER postgresql CASCADE; DROP FOREIGN DATA WRAPPER dummy CASCADE; \c DROP ROLE regress_foreign_data_user; -- At this point we should have no wrappers, no servers, and no mappings. SELECT fdwname, fdwhandler, fdwvalidator, fdwoptions FROM pg_foreign_data_wrapper; SELECT srvname, srvoptions FROM pg_foreign_server; SELECT * FROM pg_user_mapping; libpg_query-13-2.1.0/test/sql/postgres_regress/foreign_key.sql000066400000000000000000002001121413137616400244570ustar00rootroot00000000000000-- -- FOREIGN KEY -- -- MATCH FULL -- -- First test, check and cascade -- CREATE TABLE PKTABLE ( ptest1 int PRIMARY KEY, ptest2 text ); CREATE TABLE FKTABLE ( ftest1 int REFERENCES PKTABLE MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE, ftest2 int ); -- Insert test data into PKTABLE INSERT INTO PKTABLE VALUES (1, 'Test1'); INSERT INTO PKTABLE VALUES (2, 'Test2'); INSERT INTO PKTABLE VALUES (3, 'Test3'); INSERT INTO PKTABLE VALUES (4, 'Test4'); INSERT INTO PKTABLE VALUES (5, 'Test5'); -- Insert successful rows into FK TABLE INSERT INTO FKTABLE VALUES (1, 2); INSERT INTO FKTABLE VALUES (2, 3); INSERT INTO FKTABLE VALUES (3, 4); INSERT INTO FKTABLE VALUES (NULL, 1); -- Insert a failed row into FK TABLE INSERT INTO FKTABLE VALUES (100, 2); -- Check FKTABLE SELECT * FROM FKTABLE; -- Delete a row from PK TABLE DELETE FROM PKTABLE WHERE ptest1=1; -- Check FKTABLE for removal of matched row SELECT * FROM FKTABLE; -- Update a row from PK TABLE UPDATE PKTABLE SET ptest1=1 WHERE ptest1=2; -- Check FKTABLE for update of matched row SELECT * FROM FKTABLE; DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- -- check set NULL and table constraint on multiple columns -- CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, ptest3 text, PRIMARY KEY(ptest1, ptest2) ); CREATE TABLE FKTABLE ( ftest1 int, ftest2 int, ftest3 int, CONSTRAINT constrname FOREIGN KEY(ftest1, ftest2) REFERENCES PKTABLE MATCH FULL ON DELETE SET NULL ON UPDATE SET NULL); -- Test comments COMMENT ON CONSTRAINT constrname_wrong ON FKTABLE IS 'fk constraint comment'; COMMENT ON CONSTRAINT constrname ON FKTABLE IS 'fk constraint comment'; COMMENT ON CONSTRAINT constrname ON FKTABLE IS NULL; -- Insert test data into PKTABLE INSERT INTO PKTABLE VALUES (1, 2, 'Test1'); INSERT INTO PKTABLE VALUES (1, 3, 'Test1-2'); INSERT INTO PKTABLE VALUES (2, 4, 'Test2'); INSERT INTO PKTABLE VALUES (3, 6, 'Test3'); INSERT INTO PKTABLE VALUES (4, 8, 'Test4'); INSERT INTO PKTABLE VALUES (5, 10, 'Test5'); -- Insert successful rows into FK TABLE INSERT INTO FKTABLE VALUES (1, 2, 4); INSERT INTO FKTABLE VALUES (1, 3, 5); INSERT INTO FKTABLE VALUES (2, 4, 8); INSERT INTO FKTABLE VALUES (3, 6, 12); INSERT INTO FKTABLE VALUES (NULL, NULL, 0); -- Insert failed rows into FK TABLE INSERT INTO FKTABLE VALUES (100, 2, 4); INSERT INTO FKTABLE VALUES (2, 2, 4); INSERT INTO FKTABLE VALUES (NULL, 2, 4); INSERT INTO FKTABLE VALUES (1, NULL, 4); -- Check FKTABLE SELECT * FROM FKTABLE; -- Delete a row from PK TABLE DELETE FROM PKTABLE WHERE ptest1=1 and ptest2=2; -- Check FKTABLE for removal of matched row SELECT * FROM FKTABLE; -- Delete another row from PK TABLE DELETE FROM PKTABLE WHERE ptest1=5 and ptest2=10; -- Check FKTABLE (should be no change) SELECT * FROM FKTABLE; -- Update a row from PK TABLE UPDATE PKTABLE SET ptest1=1 WHERE ptest1=2; -- Check FKTABLE for update of matched row SELECT * FROM FKTABLE; -- Check update with part of key null UPDATE FKTABLE SET ftest1 = NULL WHERE ftest1 = 1; -- Check update with old and new key values equal UPDATE FKTABLE SET ftest1 = 1 WHERE ftest1 = 1; -- Try altering the column type where foreign keys are involved ALTER TABLE PKTABLE ALTER COLUMN ptest1 TYPE bigint; ALTER TABLE FKTABLE ALTER COLUMN ftest1 TYPE bigint; SELECT * FROM PKTABLE; SELECT * FROM FKTABLE; DROP TABLE PKTABLE CASCADE; DROP TABLE FKTABLE; -- -- check set default and table constraint on multiple columns -- CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, ptest3 text, PRIMARY KEY(ptest1, ptest2) ); CREATE TABLE FKTABLE ( ftest1 int DEFAULT -1, ftest2 int DEFAULT -2, ftest3 int, CONSTRAINT constrname2 FOREIGN KEY(ftest1, ftest2) REFERENCES PKTABLE MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET DEFAULT); -- Insert a value in PKTABLE for default INSERT INTO PKTABLE VALUES (-1, -2, 'The Default!'); -- Insert test data into PKTABLE INSERT INTO PKTABLE VALUES (1, 2, 'Test1'); INSERT INTO PKTABLE VALUES (1, 3, 'Test1-2'); INSERT INTO PKTABLE VALUES (2, 4, 'Test2'); INSERT INTO PKTABLE VALUES (3, 6, 'Test3'); INSERT INTO PKTABLE VALUES (4, 8, 'Test4'); INSERT INTO PKTABLE VALUES (5, 10, 'Test5'); -- Insert successful rows into FK TABLE INSERT INTO FKTABLE VALUES (1, 2, 4); INSERT INTO FKTABLE VALUES (1, 3, 5); INSERT INTO FKTABLE VALUES (2, 4, 8); INSERT INTO FKTABLE VALUES (3, 6, 12); INSERT INTO FKTABLE VALUES (NULL, NULL, 0); -- Insert failed rows into FK TABLE INSERT INTO FKTABLE VALUES (100, 2, 4); INSERT INTO FKTABLE VALUES (2, 2, 4); INSERT INTO FKTABLE VALUES (NULL, 2, 4); INSERT INTO FKTABLE VALUES (1, NULL, 4); -- Check FKTABLE SELECT * FROM FKTABLE; -- Delete a row from PK TABLE DELETE FROM PKTABLE WHERE ptest1=1 and ptest2=2; -- Check FKTABLE to check for removal SELECT * FROM FKTABLE; -- Delete another row from PK TABLE DELETE FROM PKTABLE WHERE ptest1=5 and ptest2=10; -- Check FKTABLE (should be no change) SELECT * FROM FKTABLE; -- Update a row from PK TABLE UPDATE PKTABLE SET ptest1=1 WHERE ptest1=2; -- Check FKTABLE for update of matched row SELECT * FROM FKTABLE; -- this should fail for lack of CASCADE DROP TABLE PKTABLE; DROP TABLE PKTABLE CASCADE; DROP TABLE FKTABLE; -- -- First test, check with no on delete or on update -- CREATE TABLE PKTABLE ( ptest1 int PRIMARY KEY, ptest2 text ); CREATE TABLE FKTABLE ( ftest1 int REFERENCES PKTABLE MATCH FULL, ftest2 int ); -- Insert test data into PKTABLE INSERT INTO PKTABLE VALUES (1, 'Test1'); INSERT INTO PKTABLE VALUES (2, 'Test2'); INSERT INTO PKTABLE VALUES (3, 'Test3'); INSERT INTO PKTABLE VALUES (4, 'Test4'); INSERT INTO PKTABLE VALUES (5, 'Test5'); -- Insert successful rows into FK TABLE INSERT INTO FKTABLE VALUES (1, 2); INSERT INTO FKTABLE VALUES (2, 3); INSERT INTO FKTABLE VALUES (3, 4); INSERT INTO FKTABLE VALUES (NULL, 1); -- Insert a failed row into FK TABLE INSERT INTO FKTABLE VALUES (100, 2); -- Check FKTABLE SELECT * FROM FKTABLE; -- Check PKTABLE SELECT * FROM PKTABLE; -- Delete a row from PK TABLE (should fail) DELETE FROM PKTABLE WHERE ptest1=1; -- Delete a row from PK TABLE (should succeed) DELETE FROM PKTABLE WHERE ptest1=5; -- Check PKTABLE for deletes SELECT * FROM PKTABLE; -- Update a row from PK TABLE (should fail) UPDATE PKTABLE SET ptest1=0 WHERE ptest1=2; -- Update a row from PK TABLE (should succeed) UPDATE PKTABLE SET ptest1=0 WHERE ptest1=4; -- Check PKTABLE for updates SELECT * FROM PKTABLE; DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- -- Check initial check upon ALTER TABLE -- CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, PRIMARY KEY(ptest1, ptest2) ); CREATE TABLE FKTABLE ( ftest1 int, ftest2 int ); INSERT INTO PKTABLE VALUES (1, 2); INSERT INTO FKTABLE VALUES (1, NULL); ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2) REFERENCES PKTABLE MATCH FULL; DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- MATCH SIMPLE -- Base test restricting update/delete CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, ptest3 int, ptest4 text, PRIMARY KEY(ptest1, ptest2, ptest3) ); CREATE TABLE FKTABLE ( ftest1 int, ftest2 int, ftest3 int, ftest4 int, CONSTRAINT constrname3 FOREIGN KEY(ftest1, ftest2, ftest3) REFERENCES PKTABLE); -- Insert Primary Key values INSERT INTO PKTABLE VALUES (1, 2, 3, 'test1'); INSERT INTO PKTABLE VALUES (1, 3, 3, 'test2'); INSERT INTO PKTABLE VALUES (2, 3, 4, 'test3'); INSERT INTO PKTABLE VALUES (2, 4, 5, 'test4'); -- Insert Foreign Key values INSERT INTO FKTABLE VALUES (1, 2, 3, 1); INSERT INTO FKTABLE VALUES (NULL, 2, 3, 2); INSERT INTO FKTABLE VALUES (2, NULL, 3, 3); INSERT INTO FKTABLE VALUES (NULL, 2, 7, 4); INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5); -- Insert a failed values INSERT INTO FKTABLE VALUES (1, 2, 7, 6); -- Show FKTABLE SELECT * from FKTABLE; -- Try to update something that should fail UPDATE PKTABLE set ptest2=5 where ptest2=2; -- Try to update something that should succeed UPDATE PKTABLE set ptest1=1 WHERE ptest2=3; -- Try to delete something that should fail DELETE FROM PKTABLE where ptest1=1 and ptest2=2 and ptest3=3; -- Try to delete something that should work DELETE FROM PKTABLE where ptest1=2; -- Show PKTABLE and FKTABLE SELECT * from PKTABLE; SELECT * from FKTABLE; DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- restrict with null values CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, ptest3 int, ptest4 text, UNIQUE(ptest1, ptest2, ptest3) ); CREATE TABLE FKTABLE ( ftest1 int, ftest2 int, ftest3 int, ftest4 int, CONSTRAINT constrname3 FOREIGN KEY(ftest1, ftest2, ftest3) REFERENCES PKTABLE (ptest1, ptest2, ptest3)); INSERT INTO PKTABLE VALUES (1, 2, 3, 'test1'); INSERT INTO PKTABLE VALUES (1, 3, NULL, 'test2'); INSERT INTO PKTABLE VALUES (2, NULL, 4, 'test3'); INSERT INTO FKTABLE VALUES (1, 2, 3, 1); DELETE FROM PKTABLE WHERE ptest1 = 2; SELECT * FROM PKTABLE; SELECT * FROM FKTABLE; DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- cascade update/delete CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, ptest3 int, ptest4 text, PRIMARY KEY(ptest1, ptest2, ptest3) ); CREATE TABLE FKTABLE ( ftest1 int, ftest2 int, ftest3 int, ftest4 int, CONSTRAINT constrname3 FOREIGN KEY(ftest1, ftest2, ftest3) REFERENCES PKTABLE ON DELETE CASCADE ON UPDATE CASCADE); -- Insert Primary Key values INSERT INTO PKTABLE VALUES (1, 2, 3, 'test1'); INSERT INTO PKTABLE VALUES (1, 3, 3, 'test2'); INSERT INTO PKTABLE VALUES (2, 3, 4, 'test3'); INSERT INTO PKTABLE VALUES (2, 4, 5, 'test4'); -- Insert Foreign Key values INSERT INTO FKTABLE VALUES (1, 2, 3, 1); INSERT INTO FKTABLE VALUES (NULL, 2, 3, 2); INSERT INTO FKTABLE VALUES (2, NULL, 3, 3); INSERT INTO FKTABLE VALUES (NULL, 2, 7, 4); INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5); -- Insert a failed values INSERT INTO FKTABLE VALUES (1, 2, 7, 6); -- Show FKTABLE SELECT * from FKTABLE; -- Try to update something that will cascade UPDATE PKTABLE set ptest2=5 where ptest2=2; -- Try to update something that should not cascade UPDATE PKTABLE set ptest1=1 WHERE ptest2=3; -- Show PKTABLE and FKTABLE SELECT * from PKTABLE; SELECT * from FKTABLE; -- Try to delete something that should cascade DELETE FROM PKTABLE where ptest1=1 and ptest2=5 and ptest3=3; -- Show PKTABLE and FKTABLE SELECT * from PKTABLE; SELECT * from FKTABLE; -- Try to delete something that should not have a cascade DELETE FROM PKTABLE where ptest1=2; -- Show PKTABLE and FKTABLE SELECT * from PKTABLE; SELECT * from FKTABLE; DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- set null update / set default delete CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, ptest3 int, ptest4 text, PRIMARY KEY(ptest1, ptest2, ptest3) ); CREATE TABLE FKTABLE ( ftest1 int DEFAULT 0, ftest2 int, ftest3 int, ftest4 int, CONSTRAINT constrname3 FOREIGN KEY(ftest1, ftest2, ftest3) REFERENCES PKTABLE ON DELETE SET DEFAULT ON UPDATE SET NULL); -- Insert Primary Key values INSERT INTO PKTABLE VALUES (1, 2, 3, 'test1'); INSERT INTO PKTABLE VALUES (1, 3, 3, 'test2'); INSERT INTO PKTABLE VALUES (2, 3, 4, 'test3'); INSERT INTO PKTABLE VALUES (2, 4, 5, 'test4'); -- Insert Foreign Key values INSERT INTO FKTABLE VALUES (1, 2, 3, 1); INSERT INTO FKTABLE VALUES (2, 3, 4, 1); INSERT INTO FKTABLE VALUES (NULL, 2, 3, 2); INSERT INTO FKTABLE VALUES (2, NULL, 3, 3); INSERT INTO FKTABLE VALUES (NULL, 2, 7, 4); INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5); -- Insert a failed values INSERT INTO FKTABLE VALUES (1, 2, 7, 6); -- Show FKTABLE SELECT * from FKTABLE; -- Try to update something that will set null UPDATE PKTABLE set ptest2=5 where ptest2=2; -- Try to update something that should not set null UPDATE PKTABLE set ptest2=2 WHERE ptest2=3 and ptest1=1; -- Show PKTABLE and FKTABLE SELECT * from PKTABLE; SELECT * from FKTABLE; -- Try to delete something that should set default DELETE FROM PKTABLE where ptest1=2 and ptest2=3 and ptest3=4; -- Show PKTABLE and FKTABLE SELECT * from PKTABLE; SELECT * from FKTABLE; -- Try to delete something that should not set default DELETE FROM PKTABLE where ptest2=5; -- Show PKTABLE and FKTABLE SELECT * from PKTABLE; SELECT * from FKTABLE; DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- set default update / set null delete CREATE TABLE PKTABLE ( ptest1 int, ptest2 int, ptest3 int, ptest4 text, PRIMARY KEY(ptest1, ptest2, ptest3) ); CREATE TABLE FKTABLE ( ftest1 int DEFAULT 0, ftest2 int DEFAULT -1, ftest3 int DEFAULT -2, ftest4 int, CONSTRAINT constrname3 FOREIGN KEY(ftest1, ftest2, ftest3) REFERENCES PKTABLE ON DELETE SET NULL ON UPDATE SET DEFAULT); -- Insert Primary Key values INSERT INTO PKTABLE VALUES (1, 2, 3, 'test1'); INSERT INTO PKTABLE VALUES (1, 3, 3, 'test2'); INSERT INTO PKTABLE VALUES (2, 3, 4, 'test3'); INSERT INTO PKTABLE VALUES (2, 4, 5, 'test4'); INSERT INTO PKTABLE VALUES (2, -1, 5, 'test5'); -- Insert Foreign Key values INSERT INTO FKTABLE VALUES (1, 2, 3, 1); INSERT INTO FKTABLE VALUES (2, 3, 4, 1); INSERT INTO FKTABLE VALUES (2, 4, 5, 1); INSERT INTO FKTABLE VALUES (NULL, 2, 3, 2); INSERT INTO FKTABLE VALUES (2, NULL, 3, 3); INSERT INTO FKTABLE VALUES (NULL, 2, 7, 4); INSERT INTO FKTABLE VALUES (NULL, 3, 4, 5); -- Insert a failed values INSERT INTO FKTABLE VALUES (1, 2, 7, 6); -- Show FKTABLE SELECT * from FKTABLE; -- Try to update something that will fail UPDATE PKTABLE set ptest2=5 where ptest2=2; -- Try to update something that will set default UPDATE PKTABLE set ptest1=0, ptest2=-1, ptest3=-2 where ptest2=2; UPDATE PKTABLE set ptest2=10 where ptest2=4; -- Try to update something that should not set default UPDATE PKTABLE set ptest2=2 WHERE ptest2=3 and ptest1=1; -- Show PKTABLE and FKTABLE SELECT * from PKTABLE; SELECT * from FKTABLE; -- Try to delete something that should set null DELETE FROM PKTABLE where ptest1=2 and ptest2=3 and ptest3=4; -- Show PKTABLE and FKTABLE SELECT * from PKTABLE; SELECT * from FKTABLE; -- Try to delete something that should not set null DELETE FROM PKTABLE where ptest2=-1 and ptest3=5; -- Show PKTABLE and FKTABLE SELECT * from PKTABLE; SELECT * from FKTABLE; DROP TABLE FKTABLE; DROP TABLE PKTABLE; CREATE TABLE PKTABLE (ptest1 int PRIMARY KEY); CREATE TABLE FKTABLE_FAIL1 ( ftest1 int, CONSTRAINT fkfail1 FOREIGN KEY (ftest2) REFERENCES PKTABLE); CREATE TABLE FKTABLE_FAIL2 ( ftest1 int, CONSTRAINT fkfail1 FOREIGN KEY (ftest1) REFERENCES PKTABLE(ptest2)); DROP TABLE FKTABLE_FAIL1; DROP TABLE FKTABLE_FAIL2; DROP TABLE PKTABLE; -- Test for referencing column number smaller than referenced constraint CREATE TABLE PKTABLE (ptest1 int, ptest2 int, UNIQUE(ptest1, ptest2)); CREATE TABLE FKTABLE_FAIL1 (ftest1 int REFERENCES pktable(ptest1)); DROP TABLE FKTABLE_FAIL1; DROP TABLE PKTABLE; -- -- Tests for mismatched types -- -- Basic one column, two table setup CREATE TABLE PKTABLE (ptest1 int PRIMARY KEY); INSERT INTO PKTABLE VALUES(42); -- This next should fail, because int=inet does not exist CREATE TABLE FKTABLE (ftest1 inet REFERENCES pktable); -- This should also fail for the same reason, but here we -- give the column name CREATE TABLE FKTABLE (ftest1 inet REFERENCES pktable(ptest1)); -- This should succeed, even though they are different types, -- because int=int8 exists and is a member of the integer opfamily CREATE TABLE FKTABLE (ftest1 int8 REFERENCES pktable); -- Check it actually works INSERT INTO FKTABLE VALUES(42); -- should succeed INSERT INTO FKTABLE VALUES(43); -- should fail UPDATE FKTABLE SET ftest1 = ftest1; -- should succeed UPDATE FKTABLE SET ftest1 = ftest1 + 1; -- should fail DROP TABLE FKTABLE; -- This should fail, because we'd have to cast numeric to int which is -- not an implicit coercion (or use numeric=numeric, but that's not part -- of the integer opfamily) CREATE TABLE FKTABLE (ftest1 numeric REFERENCES pktable); DROP TABLE PKTABLE; -- On the other hand, this should work because int implicitly promotes to -- numeric, and we allow promotion on the FK side CREATE TABLE PKTABLE (ptest1 numeric PRIMARY KEY); INSERT INTO PKTABLE VALUES(42); CREATE TABLE FKTABLE (ftest1 int REFERENCES pktable); -- Check it actually works INSERT INTO FKTABLE VALUES(42); -- should succeed INSERT INTO FKTABLE VALUES(43); -- should fail UPDATE FKTABLE SET ftest1 = ftest1; -- should succeed UPDATE FKTABLE SET ftest1 = ftest1 + 1; -- should fail DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- Two columns, two tables CREATE TABLE PKTABLE (ptest1 int, ptest2 inet, PRIMARY KEY(ptest1, ptest2)); -- This should fail, because we just chose really odd types CREATE TABLE FKTABLE (ftest1 cidr, ftest2 timestamp, FOREIGN KEY(ftest1, ftest2) REFERENCES pktable); -- Again, so should this... CREATE TABLE FKTABLE (ftest1 cidr, ftest2 timestamp, FOREIGN KEY(ftest1, ftest2) REFERENCES pktable(ptest1, ptest2)); -- This fails because we mixed up the column ordering CREATE TABLE FKTABLE (ftest1 int, ftest2 inet, FOREIGN KEY(ftest2, ftest1) REFERENCES pktable); -- As does this... CREATE TABLE FKTABLE (ftest1 int, ftest2 inet, FOREIGN KEY(ftest2, ftest1) REFERENCES pktable(ptest1, ptest2)); -- And again.. CREATE TABLE FKTABLE (ftest1 int, ftest2 inet, FOREIGN KEY(ftest1, ftest2) REFERENCES pktable(ptest2, ptest1)); -- This works... CREATE TABLE FKTABLE (ftest1 int, ftest2 inet, FOREIGN KEY(ftest2, ftest1) REFERENCES pktable(ptest2, ptest1)); DROP TABLE FKTABLE; -- As does this CREATE TABLE FKTABLE (ftest1 int, ftest2 inet, FOREIGN KEY(ftest1, ftest2) REFERENCES pktable(ptest1, ptest2)); DROP TABLE FKTABLE; DROP TABLE PKTABLE; -- Two columns, same table -- Make sure this still works... CREATE TABLE PKTABLE (ptest1 int, ptest2 inet, ptest3 int, ptest4 inet, PRIMARY KEY(ptest1, ptest2), FOREIGN KEY(ptest3, ptest4) REFERENCES pktable(ptest1, ptest2)); DROP TABLE PKTABLE; -- And this, CREATE TABLE PKTABLE (ptest1 int, ptest2 inet, ptest3 int, ptest4 inet, PRIMARY KEY(ptest1, ptest2), FOREIGN KEY(ptest3, ptest4) REFERENCES pktable); DROP TABLE PKTABLE; -- This shouldn't (mixed up columns) CREATE TABLE PKTABLE (ptest1 int, ptest2 inet, ptest3 int, ptest4 inet, PRIMARY KEY(ptest1, ptest2), FOREIGN KEY(ptest3, ptest4) REFERENCES pktable(ptest2, ptest1)); -- Nor should this... (same reason, we have 4,3 referencing 1,2 which mismatches types CREATE TABLE PKTABLE (ptest1 int, ptest2 inet, ptest3 int, ptest4 inet, PRIMARY KEY(ptest1, ptest2), FOREIGN KEY(ptest4, ptest3) REFERENCES pktable(ptest1, ptest2)); -- Not this one either... Same as the last one except we didn't defined the columns being referenced. CREATE TABLE PKTABLE (ptest1 int, ptest2 inet, ptest3 int, ptest4 inet, PRIMARY KEY(ptest1, ptest2), FOREIGN KEY(ptest4, ptest3) REFERENCES pktable); -- -- Now some cases with inheritance -- Basic 2 table case: 1 column of matching types. create table pktable_base (base1 int not null); create table pktable (ptest1 int, primary key(base1), unique(base1, ptest1)) inherits (pktable_base); create table fktable (ftest1 int references pktable(base1)); -- now some ins, upd, del insert into pktable(base1) values (1); insert into pktable(base1) values (2); -- let's insert a non-existent fktable value insert into fktable(ftest1) values (3); -- let's make a valid row for that insert into pktable(base1) values (3); insert into fktable(ftest1) values (3); -- let's try removing a row that should fail from pktable delete from pktable where base1>2; -- okay, let's try updating all of the base1 values to *4 -- which should fail. update pktable set base1=base1*4; -- okay, let's try an update that should work. update pktable set base1=base1*4 where base1<3; -- and a delete that should work delete from pktable where base1>3; -- cleanup drop table fktable; delete from pktable; -- Now 2 columns 2 tables, matching types create table fktable (ftest1 int, ftest2 int, foreign key(ftest1, ftest2) references pktable(base1, ptest1)); -- now some ins, upd, del insert into pktable(base1, ptest1) values (1, 1); insert into pktable(base1, ptest1) values (2, 2); -- let's insert a non-existent fktable value insert into fktable(ftest1, ftest2) values (3, 1); -- let's make a valid row for that insert into pktable(base1,ptest1) values (3, 1); insert into fktable(ftest1, ftest2) values (3, 1); -- let's try removing a row that should fail from pktable delete from pktable where base1>2; -- okay, let's try updating all of the base1 values to *4 -- which should fail. update pktable set base1=base1*4; -- okay, let's try an update that should work. update pktable set base1=base1*4 where base1<3; -- and a delete that should work delete from pktable where base1>3; -- cleanup drop table fktable; drop table pktable; drop table pktable_base; -- Now we'll do one all in 1 table with 2 columns of matching types create table pktable_base(base1 int not null, base2 int); create table pktable(ptest1 int, ptest2 int, primary key(base1, ptest1), foreign key(base2, ptest2) references pktable(base1, ptest1)) inherits (pktable_base); insert into pktable (base1, ptest1, base2, ptest2) values (1, 1, 1, 1); insert into pktable (base1, ptest1, base2, ptest2) values (2, 1, 1, 1); insert into pktable (base1, ptest1, base2, ptest2) values (2, 2, 2, 1); insert into pktable (base1, ptest1, base2, ptest2) values (1, 3, 2, 2); -- fails (3,2) isn't in base1, ptest1 insert into pktable (base1, ptest1, base2, ptest2) values (2, 3, 3, 2); -- fails (2,2) is being referenced delete from pktable where base1=2; -- fails (1,1) is being referenced (twice) update pktable set base1=3 where base1=1; -- this sequence of two deletes will work, since after the first there will be no (2,*) references delete from pktable where base2=2; delete from pktable where base1=2; drop table pktable; drop table pktable_base; -- 2 columns (2 tables), mismatched types create table pktable_base(base1 int not null); create table pktable(ptest1 inet, primary key(base1, ptest1)) inherits (pktable_base); -- just generally bad types (with and without column references on the referenced table) create table fktable(ftest1 cidr, ftest2 int[], foreign key (ftest1, ftest2) references pktable); create table fktable(ftest1 cidr, ftest2 int[], foreign key (ftest1, ftest2) references pktable(base1, ptest1)); -- let's mix up which columns reference which create table fktable(ftest1 int, ftest2 inet, foreign key(ftest2, ftest1) references pktable); create table fktable(ftest1 int, ftest2 inet, foreign key(ftest2, ftest1) references pktable(base1, ptest1)); create table fktable(ftest1 int, ftest2 inet, foreign key(ftest1, ftest2) references pktable(ptest1, base1)); drop table pktable; drop table pktable_base; -- 2 columns (1 table), mismatched types create table pktable_base(base1 int not null, base2 int); create table pktable(ptest1 inet, ptest2 inet[], primary key(base1, ptest1), foreign key(base2, ptest2) references pktable(base1, ptest1)) inherits (pktable_base); create table pktable(ptest1 inet, ptest2 inet, primary key(base1, ptest1), foreign key(base2, ptest2) references pktable(ptest1, base1)) inherits (pktable_base); create table pktable(ptest1 inet, ptest2 inet, primary key(base1, ptest1), foreign key(ptest2, base2) references pktable(base1, ptest1)) inherits (pktable_base); create table pktable(ptest1 inet, ptest2 inet, primary key(base1, ptest1), foreign key(ptest2, base2) references pktable(base1, ptest1)) inherits (pktable_base); drop table pktable; drop table pktable_base; -- -- Deferrable constraints -- -- deferrable, explicitly deferred CREATE TABLE pktable ( id INT4 PRIMARY KEY, other INT4 ); CREATE TABLE fktable ( id INT4 PRIMARY KEY, fk INT4 REFERENCES pktable DEFERRABLE ); -- default to immediate: should fail INSERT INTO fktable VALUES (5, 10); -- explicitly defer the constraint BEGIN; SET CONSTRAINTS ALL DEFERRED; INSERT INTO fktable VALUES (10, 15); INSERT INTO pktable VALUES (15, 0); -- make the FK insert valid COMMIT; DROP TABLE fktable, pktable; -- deferrable, initially deferred CREATE TABLE pktable ( id INT4 PRIMARY KEY, other INT4 ); CREATE TABLE fktable ( id INT4 PRIMARY KEY, fk INT4 REFERENCES pktable DEFERRABLE INITIALLY DEFERRED ); -- default to deferred, should succeed BEGIN; INSERT INTO fktable VALUES (100, 200); INSERT INTO pktable VALUES (200, 500); -- make the FK insert valid COMMIT; -- default to deferred, explicitly make immediate BEGIN; SET CONSTRAINTS ALL IMMEDIATE; -- should fail INSERT INTO fktable VALUES (500, 1000); COMMIT; DROP TABLE fktable, pktable; -- tricky behavior: according to SQL99, if a deferred constraint is set -- to 'immediate' mode, it should be checked for validity *immediately*, -- not when the current transaction commits (i.e. the mode change applies -- retroactively) CREATE TABLE pktable ( id INT4 PRIMARY KEY, other INT4 ); CREATE TABLE fktable ( id INT4 PRIMARY KEY, fk INT4 REFERENCES pktable DEFERRABLE ); BEGIN; SET CONSTRAINTS ALL DEFERRED; -- should succeed, for now INSERT INTO fktable VALUES (1000, 2000); -- should cause transaction abort, due to preceding error SET CONSTRAINTS ALL IMMEDIATE; INSERT INTO pktable VALUES (2000, 3); -- too late COMMIT; DROP TABLE fktable, pktable; -- deferrable, initially deferred CREATE TABLE pktable ( id INT4 PRIMARY KEY, other INT4 ); CREATE TABLE fktable ( id INT4 PRIMARY KEY, fk INT4 REFERENCES pktable DEFERRABLE INITIALLY DEFERRED ); BEGIN; -- no error here INSERT INTO fktable VALUES (100, 200); -- error here on commit COMMIT; DROP TABLE pktable, fktable; -- test notice about expensive referential integrity checks, -- where the index cannot be used because of type incompatibilities. CREATE TEMP TABLE pktable ( id1 INT4 PRIMARY KEY, id2 VARCHAR(4) UNIQUE, id3 REAL UNIQUE, UNIQUE(id1, id2, id3) ); CREATE TEMP TABLE fktable ( x1 INT4 REFERENCES pktable(id1), x2 VARCHAR(4) REFERENCES pktable(id2), x3 REAL REFERENCES pktable(id3), x4 TEXT, x5 INT2 ); -- check individual constraints with alter table. -- should fail -- varchar does not promote to real ALTER TABLE fktable ADD CONSTRAINT fk_2_3 FOREIGN KEY (x2) REFERENCES pktable(id3); -- nor to int4 ALTER TABLE fktable ADD CONSTRAINT fk_2_1 FOREIGN KEY (x2) REFERENCES pktable(id1); -- real does not promote to int4 ALTER TABLE fktable ADD CONSTRAINT fk_3_1 FOREIGN KEY (x3) REFERENCES pktable(id1); -- int4 does not promote to text ALTER TABLE fktable ADD CONSTRAINT fk_1_2 FOREIGN KEY (x1) REFERENCES pktable(id2); -- should succeed -- int4 promotes to real ALTER TABLE fktable ADD CONSTRAINT fk_1_3 FOREIGN KEY (x1) REFERENCES pktable(id3); -- text is compatible with varchar ALTER TABLE fktable ADD CONSTRAINT fk_4_2 FOREIGN KEY (x4) REFERENCES pktable(id2); -- int2 is part of integer opfamily as of 8.0 ALTER TABLE fktable ADD CONSTRAINT fk_5_1 FOREIGN KEY (x5) REFERENCES pktable(id1); -- check multikey cases, especially out-of-order column lists -- these should work ALTER TABLE fktable ADD CONSTRAINT fk_123_123 FOREIGN KEY (x1,x2,x3) REFERENCES pktable(id1,id2,id3); ALTER TABLE fktable ADD CONSTRAINT fk_213_213 FOREIGN KEY (x2,x1,x3) REFERENCES pktable(id2,id1,id3); ALTER TABLE fktable ADD CONSTRAINT fk_253_213 FOREIGN KEY (x2,x5,x3) REFERENCES pktable(id2,id1,id3); -- these should fail ALTER TABLE fktable ADD CONSTRAINT fk_123_231 FOREIGN KEY (x1,x2,x3) REFERENCES pktable(id2,id3,id1); ALTER TABLE fktable ADD CONSTRAINT fk_241_132 FOREIGN KEY (x2,x4,x1) REFERENCES pktable(id1,id3,id2); DROP TABLE pktable, fktable; -- test a tricky case: we can elide firing the FK check trigger during -- an UPDATE if the UPDATE did not change the foreign key -- field. However, we can't do this if our transaction was the one that -- created the updated row and the trigger is deferred, since our UPDATE -- will have invalidated the original newly-inserted tuple, and therefore -- cause the on-INSERT RI trigger not to be fired. CREATE TEMP TABLE pktable ( id int primary key, other int ); CREATE TEMP TABLE fktable ( id int primary key, fk int references pktable deferrable initially deferred ); INSERT INTO pktable VALUES (5, 10); BEGIN; -- doesn't match PK, but no error yet INSERT INTO fktable VALUES (0, 20); -- don't change FK UPDATE fktable SET id = id + 1; -- should catch error from initial INSERT COMMIT; -- check same case when insert is in a different subtransaction than update BEGIN; -- doesn't match PK, but no error yet INSERT INTO fktable VALUES (0, 20); -- UPDATE will be in a subxact SAVEPOINT savept1; -- don't change FK UPDATE fktable SET id = id + 1; -- should catch error from initial INSERT COMMIT; BEGIN; -- INSERT will be in a subxact SAVEPOINT savept1; -- doesn't match PK, but no error yet INSERT INTO fktable VALUES (0, 20); RELEASE SAVEPOINT savept1; -- don't change FK UPDATE fktable SET id = id + 1; -- should catch error from initial INSERT COMMIT; BEGIN; -- doesn't match PK, but no error yet INSERT INTO fktable VALUES (0, 20); -- UPDATE will be in a subxact SAVEPOINT savept1; -- don't change FK UPDATE fktable SET id = id + 1; -- Roll back the UPDATE ROLLBACK TO savept1; -- should catch error from initial INSERT COMMIT; -- -- check ALTER CONSTRAINT -- INSERT INTO fktable VALUES (1, 5); ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey DEFERRABLE INITIALLY IMMEDIATE; BEGIN; -- doesn't match FK, should throw error now UPDATE pktable SET id = 10 WHERE id = 5; COMMIT; BEGIN; -- doesn't match PK, should throw error now INSERT INTO fktable VALUES (0, 20); COMMIT; -- try additional syntax ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey NOT DEFERRABLE; -- illegal option ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey NOT DEFERRABLE INITIALLY DEFERRED; -- test order of firing of FK triggers when several RI-induced changes need to -- be made to the same row. This was broken by subtransaction-related -- changes in 8.0. CREATE TEMP TABLE users ( id INT PRIMARY KEY, name VARCHAR NOT NULL ); INSERT INTO users VALUES (1, 'Jozko'); INSERT INTO users VALUES (2, 'Ferko'); INSERT INTO users VALUES (3, 'Samko'); CREATE TEMP TABLE tasks ( id INT PRIMARY KEY, owner INT REFERENCES users ON UPDATE CASCADE ON DELETE SET NULL, worker INT REFERENCES users ON UPDATE CASCADE ON DELETE SET NULL, checked_by INT REFERENCES users ON UPDATE CASCADE ON DELETE SET NULL ); INSERT INTO tasks VALUES (1,1,NULL,NULL); INSERT INTO tasks VALUES (2,2,2,NULL); INSERT INTO tasks VALUES (3,3,3,3); SELECT * FROM tasks; UPDATE users SET id = 4 WHERE id = 3; SELECT * FROM tasks; DELETE FROM users WHERE id = 4; SELECT * FROM tasks; -- could fail with only 2 changes to make, if row was already updated BEGIN; UPDATE tasks set id=id WHERE id=2; SELECT * FROM tasks; DELETE FROM users WHERE id = 2; SELECT * FROM tasks; COMMIT; -- -- Test self-referential FK with CASCADE (bug #6268) -- create temp table selfref ( a int primary key, b int, foreign key (b) references selfref (a) on update cascade on delete cascade ); insert into selfref (a, b) values (0, 0), (1, 1); begin; update selfref set a = 123 where a = 0; select a, b from selfref; update selfref set a = 456 where a = 123; select a, b from selfref; commit; -- -- Test that SET DEFAULT actions recognize updates to default values -- create temp table defp (f1 int primary key); create temp table defc (f1 int default 0 references defp on delete set default); insert into defp values (0), (1), (2); insert into defc values (2); select * from defc; delete from defp where f1 = 2; select * from defc; delete from defp where f1 = 0; -- fail alter table defc alter column f1 set default 1; delete from defp where f1 = 0; select * from defc; delete from defp where f1 = 1; -- fail -- -- Test the difference between NO ACTION and RESTRICT -- create temp table pp (f1 int primary key); create temp table cc (f1 int references pp on update no action on delete no action); insert into pp values(12); insert into pp values(11); update pp set f1=f1+1; insert into cc values(13); update pp set f1=f1+1; update pp set f1=f1+1; -- fail delete from pp where f1 = 13; -- fail drop table pp, cc; create temp table pp (f1 int primary key); create temp table cc (f1 int references pp on update restrict on delete restrict); insert into pp values(12); insert into pp values(11); update pp set f1=f1+1; insert into cc values(13); update pp set f1=f1+1; -- fail delete from pp where f1 = 13; -- fail drop table pp, cc; -- -- Test interaction of foreign-key optimization with rules (bug #14219) -- create temp table t1 (a integer primary key, b text); create temp table t2 (a integer primary key, b integer references t1); create rule r1 as on delete to t1 do delete from t2 where t2.b = old.a; explain (costs off) delete from t1 where a = 1; delete from t1 where a = 1; -- Test a primary key with attributes located in later attnum positions -- compared to the fk attributes. create table pktable2 (a int, b int, c int, d int, e int, primary key (d, e)); create table fktable2 (d int, e int, foreign key (d, e) references pktable2); insert into pktable2 values (1, 2, 3, 4, 5); insert into fktable2 values (4, 5); delete from pktable2; update pktable2 set d = 5; drop table pktable2, fktable2; -- Test truncation of long foreign key names create table pktable1 (a int primary key); create table pktable2 (a int, b int, primary key (a, b)); create table fktable2 ( a int, b int, very_very_long_column_name_to_exceed_63_characters int, foreign key (very_very_long_column_name_to_exceed_63_characters) references pktable1, foreign key (a, very_very_long_column_name_to_exceed_63_characters) references pktable2, foreign key (a, very_very_long_column_name_to_exceed_63_characters) references pktable2 ); select conname from pg_constraint where conrelid = 'fktable2'::regclass order by conname; drop table pktable1, pktable2, fktable2; -- -- Test deferred FK check on a tuple deleted by a rolled-back subtransaction -- create table pktable2(f1 int primary key); create table fktable2(f1 int references pktable2 deferrable initially deferred); insert into pktable2 values(1); begin; insert into fktable2 values(1); savepoint x; delete from fktable2; rollback to x; commit; begin; insert into fktable2 values(2); savepoint x; delete from fktable2; rollback to x; commit; -- fail -- -- Test that we prevent dropping FK constraint with pending trigger events -- begin; insert into fktable2 values(2); alter table fktable2 drop constraint fktable2_f1_fkey; commit; begin; delete from pktable2 where f1 = 1; alter table fktable2 drop constraint fktable2_f1_fkey; commit; drop table pktable2, fktable2; -- -- Test keys that "look" different but compare as equal -- create table pktable2 (a float8, b float8, primary key (a, b)); create table fktable2 (x float8, y float8, foreign key (x, y) references pktable2 (a, b) on update cascade); insert into pktable2 values ('-0', '-0'); insert into fktable2 values ('-0', '-0'); select * from pktable2; select * from fktable2; update pktable2 set a = '0' where a = '-0'; select * from pktable2; -- should have updated fktable2.x select * from fktable2; drop table pktable2, fktable2; -- -- Foreign keys and partitioned tables -- -- Creation of a partitioned hierarchy with irregular definitions CREATE TABLE fk_notpartitioned_pk (fdrop1 int, a int, fdrop2 int, b int, PRIMARY KEY (a, b)); ALTER TABLE fk_notpartitioned_pk DROP COLUMN fdrop1, DROP COLUMN fdrop2; CREATE TABLE fk_partitioned_fk (b int, fdrop1 int, a int) PARTITION BY RANGE (a, b); ALTER TABLE fk_partitioned_fk DROP COLUMN fdrop1; CREATE TABLE fk_partitioned_fk_1 (fdrop1 int, fdrop2 int, a int, fdrop3 int, b int); ALTER TABLE fk_partitioned_fk_1 DROP COLUMN fdrop1, DROP COLUMN fdrop2, DROP COLUMN fdrop3; ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_1 FOR VALUES FROM (0,0) TO (1000,1000); ALTER TABLE fk_partitioned_fk ADD FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk; CREATE TABLE fk_partitioned_fk_2 (b int, fdrop1 int, fdrop2 int, a int); ALTER TABLE fk_partitioned_fk_2 DROP COLUMN fdrop1, DROP COLUMN fdrop2; ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_2 FOR VALUES FROM (1000,1000) TO (2000,2000); CREATE TABLE fk_partitioned_fk_3 (fdrop1 int, fdrop2 int, fdrop3 int, fdrop4 int, b int, a int) PARTITION BY HASH (a); ALTER TABLE fk_partitioned_fk_3 DROP COLUMN fdrop1, DROP COLUMN fdrop2, DROP COLUMN fdrop3, DROP COLUMN fdrop4; CREATE TABLE fk_partitioned_fk_3_0 PARTITION OF fk_partitioned_fk_3 FOR VALUES WITH (MODULUS 5, REMAINDER 0); CREATE TABLE fk_partitioned_fk_3_1 PARTITION OF fk_partitioned_fk_3 FOR VALUES WITH (MODULUS 5, REMAINDER 1); ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_3 FOR VALUES FROM (2000,2000) TO (3000,3000); -- Creating a foreign key with ONLY on a partitioned table referencing -- a non-partitioned table fails. ALTER TABLE ONLY fk_partitioned_fk ADD FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk; -- Adding a NOT VALID foreign key on a partitioned table referencing -- a non-partitioned table fails. ALTER TABLE fk_partitioned_fk ADD FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk NOT VALID; -- these inserts, targeting both the partition directly as well as the -- partitioned table, should all fail INSERT INTO fk_partitioned_fk (a,b) VALUES (500, 501); INSERT INTO fk_partitioned_fk_1 (a,b) VALUES (500, 501); INSERT INTO fk_partitioned_fk (a,b) VALUES (1500, 1501); INSERT INTO fk_partitioned_fk_2 (a,b) VALUES (1500, 1501); INSERT INTO fk_partitioned_fk (a,b) VALUES (2500, 2502); INSERT INTO fk_partitioned_fk_3 (a,b) VALUES (2500, 2502); INSERT INTO fk_partitioned_fk (a,b) VALUES (2501, 2503); INSERT INTO fk_partitioned_fk_3 (a,b) VALUES (2501, 2503); -- but if we insert the values that make them valid, then they work INSERT INTO fk_notpartitioned_pk VALUES (500, 501), (1500, 1501), (2500, 2502), (2501, 2503); INSERT INTO fk_partitioned_fk (a,b) VALUES (500, 501); INSERT INTO fk_partitioned_fk (a,b) VALUES (1500, 1501); INSERT INTO fk_partitioned_fk (a,b) VALUES (2500, 2502); INSERT INTO fk_partitioned_fk (a,b) VALUES (2501, 2503); -- this update fails because there is no referenced row UPDATE fk_partitioned_fk SET a = a + 1 WHERE a = 2501; -- but we can fix it thusly: INSERT INTO fk_notpartitioned_pk (a,b) VALUES (2502, 2503); UPDATE fk_partitioned_fk SET a = a + 1 WHERE a = 2501; -- these updates would leave lingering rows in the referencing table; disallow UPDATE fk_notpartitioned_pk SET b = 502 WHERE a = 500; UPDATE fk_notpartitioned_pk SET b = 1502 WHERE a = 1500; UPDATE fk_notpartitioned_pk SET b = 2504 WHERE a = 2500; -- check psql behavior \d fk_notpartitioned_pk ALTER TABLE fk_partitioned_fk DROP CONSTRAINT fk_partitioned_fk_a_b_fkey; -- done. DROP TABLE fk_notpartitioned_pk, fk_partitioned_fk; -- Altering a type referenced by a foreign key needs to drop/recreate the FK. -- Ensure that works. CREATE TABLE fk_notpartitioned_pk (a INT, PRIMARY KEY(a), CHECK (a > 0)); CREATE TABLE fk_partitioned_fk (a INT REFERENCES fk_notpartitioned_pk(a) PRIMARY KEY) PARTITION BY RANGE(a); CREATE TABLE fk_partitioned_fk_1 PARTITION OF fk_partitioned_fk FOR VALUES FROM (MINVALUE) TO (MAXVALUE); INSERT INTO fk_notpartitioned_pk VALUES (1); INSERT INTO fk_partitioned_fk VALUES (1); ALTER TABLE fk_notpartitioned_pk ALTER COLUMN a TYPE bigint; DELETE FROM fk_notpartitioned_pk WHERE a = 1; DROP TABLE fk_notpartitioned_pk, fk_partitioned_fk; -- Test some other exotic foreign key features: MATCH SIMPLE, ON UPDATE/DELETE -- actions CREATE TABLE fk_notpartitioned_pk (a int, b int, primary key (a, b)); CREATE TABLE fk_partitioned_fk (a int default 2501, b int default 142857) PARTITION BY LIST (a); CREATE TABLE fk_partitioned_fk_1 PARTITION OF fk_partitioned_fk FOR VALUES IN (NULL,500,501,502); ALTER TABLE fk_partitioned_fk ADD FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk MATCH SIMPLE ON DELETE SET NULL ON UPDATE SET NULL; CREATE TABLE fk_partitioned_fk_2 PARTITION OF fk_partitioned_fk FOR VALUES IN (1500,1502); CREATE TABLE fk_partitioned_fk_3 (a int, b int); ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_3 FOR VALUES IN (2500,2501,2502,2503); -- this insert fails INSERT INTO fk_partitioned_fk (a, b) VALUES (2502, 2503); INSERT INTO fk_partitioned_fk_3 (a, b) VALUES (2502, 2503); -- but since the FK is MATCH SIMPLE, this one doesn't INSERT INTO fk_partitioned_fk_3 (a, b) VALUES (2502, NULL); -- now create the referenced row ... INSERT INTO fk_notpartitioned_pk VALUES (2502, 2503); --- and now the same insert work INSERT INTO fk_partitioned_fk_3 (a, b) VALUES (2502, 2503); -- this always works INSERT INTO fk_partitioned_fk (a,b) VALUES (NULL, NULL); -- MATCH FULL INSERT INTO fk_notpartitioned_pk VALUES (1, 2); CREATE TABLE fk_partitioned_fk_full (x int, y int) PARTITION BY RANGE (x); CREATE TABLE fk_partitioned_fk_full_1 PARTITION OF fk_partitioned_fk_full DEFAULT; INSERT INTO fk_partitioned_fk_full VALUES (1, NULL); ALTER TABLE fk_partitioned_fk_full ADD FOREIGN KEY (x, y) REFERENCES fk_notpartitioned_pk MATCH FULL; -- fails TRUNCATE fk_partitioned_fk_full; ALTER TABLE fk_partitioned_fk_full ADD FOREIGN KEY (x, y) REFERENCES fk_notpartitioned_pk MATCH FULL; INSERT INTO fk_partitioned_fk_full VALUES (1, NULL); -- fails DROP TABLE fk_partitioned_fk_full; -- ON UPDATE SET NULL SELECT tableoid::regclass, a, b FROM fk_partitioned_fk WHERE b IS NULL ORDER BY a; UPDATE fk_notpartitioned_pk SET a = a + 1 WHERE a = 2502; SELECT tableoid::regclass, a, b FROM fk_partitioned_fk WHERE b IS NULL ORDER BY a; -- ON DELETE SET NULL INSERT INTO fk_partitioned_fk VALUES (2503, 2503); SELECT count(*) FROM fk_partitioned_fk WHERE a IS NULL; DELETE FROM fk_notpartitioned_pk; SELECT count(*) FROM fk_partitioned_fk WHERE a IS NULL; -- ON UPDATE/DELETE SET DEFAULT ALTER TABLE fk_partitioned_fk DROP CONSTRAINT fk_partitioned_fk_a_b_fkey; ALTER TABLE fk_partitioned_fk ADD FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk ON DELETE SET DEFAULT ON UPDATE SET DEFAULT; INSERT INTO fk_notpartitioned_pk VALUES (2502, 2503); INSERT INTO fk_partitioned_fk_3 (a, b) VALUES (2502, 2503); -- this fails, because the defaults for the referencing table are not present -- in the referenced table: UPDATE fk_notpartitioned_pk SET a = 1500 WHERE a = 2502; -- but inserting the row we can make it work: INSERT INTO fk_notpartitioned_pk VALUES (2501, 142857); UPDATE fk_notpartitioned_pk SET a = 1500 WHERE a = 2502; SELECT * FROM fk_partitioned_fk WHERE b = 142857; -- ON UPDATE/DELETE CASCADE ALTER TABLE fk_partitioned_fk DROP CONSTRAINT fk_partitioned_fk_a_b_fkey; ALTER TABLE fk_partitioned_fk ADD FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk ON DELETE CASCADE ON UPDATE CASCADE; UPDATE fk_notpartitioned_pk SET a = 2502 WHERE a = 2501; SELECT * FROM fk_partitioned_fk WHERE b = 142857; -- Now you see it ... SELECT * FROM fk_partitioned_fk WHERE b = 142857; DELETE FROM fk_notpartitioned_pk WHERE b = 142857; -- now you don't. SELECT * FROM fk_partitioned_fk WHERE a = 142857; -- verify that DROP works DROP TABLE fk_partitioned_fk_2; -- Test behavior of the constraint together with attaching and detaching -- partitions. CREATE TABLE fk_partitioned_fk_2 PARTITION OF fk_partitioned_fk FOR VALUES IN (1500,1502); ALTER TABLE fk_partitioned_fk DETACH PARTITION fk_partitioned_fk_2; BEGIN; DROP TABLE fk_partitioned_fk; -- constraint should still be there \d fk_partitioned_fk_2; ROLLBACK; ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_2 FOR VALUES IN (1500,1502); DROP TABLE fk_partitioned_fk_2; CREATE TABLE fk_partitioned_fk_2 (b int, c text, a int, FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk ON UPDATE CASCADE ON DELETE CASCADE); ALTER TABLE fk_partitioned_fk_2 DROP COLUMN c; ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_2 FOR VALUES IN (1500,1502); -- should have only one constraint \d fk_partitioned_fk_2 DROP TABLE fk_partitioned_fk_2; CREATE TABLE fk_partitioned_fk_4 (a int, b int, FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk(a, b) ON UPDATE CASCADE ON DELETE CASCADE) PARTITION BY RANGE (b, a); CREATE TABLE fk_partitioned_fk_4_1 PARTITION OF fk_partitioned_fk_4 FOR VALUES FROM (1,1) TO (100,100); CREATE TABLE fk_partitioned_fk_4_2 (a int, b int, FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk(a, b) ON UPDATE SET NULL); ALTER TABLE fk_partitioned_fk_4 ATTACH PARTITION fk_partitioned_fk_4_2 FOR VALUES FROM (100,100) TO (1000,1000); ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_4 FOR VALUES IN (3500,3502); ALTER TABLE fk_partitioned_fk DETACH PARTITION fk_partitioned_fk_4; ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_4 FOR VALUES IN (3500,3502); -- should only have one constraint \d fk_partitioned_fk_4 \d fk_partitioned_fk_4_1 -- this one has an FK with mismatched properties \d fk_partitioned_fk_4_2 CREATE TABLE fk_partitioned_fk_5 (a int, b int, FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk(a, b) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE, FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk(a, b) MATCH FULL ON UPDATE CASCADE ON DELETE CASCADE) PARTITION BY RANGE (a); CREATE TABLE fk_partitioned_fk_5_1 (a int, b int, FOREIGN KEY (a, b) REFERENCES fk_notpartitioned_pk); ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_5 FOR VALUES IN (4500); ALTER TABLE fk_partitioned_fk_5 ATTACH PARTITION fk_partitioned_fk_5_1 FOR VALUES FROM (0) TO (10); ALTER TABLE fk_partitioned_fk DETACH PARTITION fk_partitioned_fk_5; ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_5 FOR VALUES IN (4500); -- this one has two constraints, similar but not quite the one in the parent, -- so it gets a new one \d fk_partitioned_fk_5 -- verify that it works to reattaching a child with multiple candidate -- constraints ALTER TABLE fk_partitioned_fk_5 DETACH PARTITION fk_partitioned_fk_5_1; ALTER TABLE fk_partitioned_fk_5 ATTACH PARTITION fk_partitioned_fk_5_1 FOR VALUES FROM (0) TO (10); \d fk_partitioned_fk_5_1 -- verify that attaching a table checks that the existing data satisfies the -- constraint CREATE TABLE fk_partitioned_fk_2 (a int, b int) PARTITION BY RANGE (b); CREATE TABLE fk_partitioned_fk_2_1 PARTITION OF fk_partitioned_fk_2 FOR VALUES FROM (0) TO (1000); CREATE TABLE fk_partitioned_fk_2_2 PARTITION OF fk_partitioned_fk_2 FOR VALUES FROM (1000) TO (2000); INSERT INTO fk_partitioned_fk_2 VALUES (1600, 601), (1600, 1601); ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_2 FOR VALUES IN (1600); INSERT INTO fk_notpartitioned_pk VALUES (1600, 601), (1600, 1601); ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_2 FOR VALUES IN (1600); -- leave these tables around intentionally -- test the case when the referenced table is owned by a different user create role regress_other_partitioned_fk_owner; grant references on fk_notpartitioned_pk to regress_other_partitioned_fk_owner; set role regress_other_partitioned_fk_owner; create table other_partitioned_fk(a int, b int) partition by list (a); create table other_partitioned_fk_1 partition of other_partitioned_fk for values in (2048); insert into other_partitioned_fk select 2048, x from generate_series(1,10) x; -- this should fail alter table other_partitioned_fk add foreign key (a, b) references fk_notpartitioned_pk(a, b); -- add the missing keys and retry reset role; insert into fk_notpartitioned_pk (a, b) select 2048, x from generate_series(1,10) x; set role regress_other_partitioned_fk_owner; alter table other_partitioned_fk add foreign key (a, b) references fk_notpartitioned_pk(a, b); -- clean up drop table other_partitioned_fk; reset role; revoke all on fk_notpartitioned_pk from regress_other_partitioned_fk_owner; drop role regress_other_partitioned_fk_owner; -- Test creating a constraint at the parent that already exists in partitions. -- There should be no duplicated constraints, and attempts to drop the -- constraint in partitions should raise appropriate errors. create schema fkpart0 create table pkey (a int primary key) create table fk_part (a int) partition by list (a) create table fk_part_1 partition of fk_part (foreign key (a) references fkpart0.pkey) for values in (1) create table fk_part_23 partition of fk_part (foreign key (a) references fkpart0.pkey) for values in (2, 3) partition by list (a) create table fk_part_23_2 partition of fk_part_23 for values in (2); alter table fkpart0.fk_part add foreign key (a) references fkpart0.pkey; \d fkpart0.fk_part_1 \\ -- should have only one FK alter table fkpart0.fk_part_1 drop constraint fk_part_1_a_fkey; \d fkpart0.fk_part_23 \\ -- should have only one FK \d fkpart0.fk_part_23_2 \\ -- should have only one FK alter table fkpart0.fk_part_23 drop constraint fk_part_23_a_fkey; alter table fkpart0.fk_part_23_2 drop constraint fk_part_23_a_fkey; create table fkpart0.fk_part_4 partition of fkpart0.fk_part for values in (4); \d fkpart0.fk_part_4 alter table fkpart0.fk_part_4 drop constraint fk_part_a_fkey; create table fkpart0.fk_part_56 partition of fkpart0.fk_part for values in (5,6) partition by list (a); create table fkpart0.fk_part_56_5 partition of fkpart0.fk_part_56 for values in (5); \d fkpart0.fk_part_56 alter table fkpart0.fk_part_56 drop constraint fk_part_a_fkey; alter table fkpart0.fk_part_56_5 drop constraint fk_part_a_fkey; -- verify that attaching and detaching partitions maintains the right set of -- triggers create schema fkpart1 create table pkey (a int primary key) create table fk_part (a int) partition by list (a) create table fk_part_1 partition of fk_part for values in (1) partition by list (a) create table fk_part_1_1 partition of fk_part_1 for values in (1); alter table fkpart1.fk_part add foreign key (a) references fkpart1.pkey; insert into fkpart1.fk_part values (1); -- should fail insert into fkpart1.pkey values (1); insert into fkpart1.fk_part values (1); delete from fkpart1.pkey where a = 1; -- should fail alter table fkpart1.fk_part detach partition fkpart1.fk_part_1; create table fkpart1.fk_part_1_2 partition of fkpart1.fk_part_1 for values in (2); insert into fkpart1.fk_part_1 values (2); -- should fail delete from fkpart1.pkey where a = 1; -- verify that attaching and detaching partitions manipulates the inheritance -- properties of their FK constraints correctly create schema fkpart2 create table pkey (a int primary key) create table fk_part (a int, constraint fkey foreign key (a) references fkpart2.pkey) partition by list (a) create table fk_part_1 partition of fkpart2.fk_part for values in (1) partition by list (a) create table fk_part_1_1 (a int, constraint my_fkey foreign key (a) references fkpart2.pkey); alter table fkpart2.fk_part_1 attach partition fkpart2.fk_part_1_1 for values in (1); alter table fkpart2.fk_part_1 drop constraint fkey; -- should fail alter table fkpart2.fk_part_1_1 drop constraint my_fkey; -- should fail alter table fkpart2.fk_part detach partition fkpart2.fk_part_1; alter table fkpart2.fk_part_1 drop constraint fkey; -- ok alter table fkpart2.fk_part_1_1 drop constraint my_fkey; -- doesn't exist -- verify constraint deferrability create schema fkpart3 create table pkey (a int primary key) create table fk_part (a int, constraint fkey foreign key (a) references fkpart3.pkey deferrable initially immediate) partition by list (a) create table fk_part_1 partition of fkpart3.fk_part for values in (1) partition by list (a) create table fk_part_1_1 partition of fkpart3.fk_part_1 for values in (1) create table fk_part_2 partition of fkpart3.fk_part for values in (2); begin; set constraints fkpart3.fkey deferred; insert into fkpart3.fk_part values (1); insert into fkpart3.pkey values (1); commit; begin; set constraints fkpart3.fkey deferred; delete from fkpart3.pkey; delete from fkpart3.fk_part; commit; drop schema fkpart0, fkpart1, fkpart2, fkpart3 cascade; -- Test a partitioned table as referenced table. -- Verify basic functionality with a regular partition creation and a partition -- with a different column layout, as well as partitions added (created and -- attached) after creating the foreign key. CREATE SCHEMA fkpart3; SET search_path TO fkpart3; CREATE TABLE pk (a int PRIMARY KEY) PARTITION BY RANGE (a); CREATE TABLE pk1 PARTITION OF pk FOR VALUES FROM (0) TO (1000); CREATE TABLE pk2 (b int, a int); ALTER TABLE pk2 DROP COLUMN b; ALTER TABLE pk2 ALTER a SET NOT NULL; ALTER TABLE pk ATTACH PARTITION pk2 FOR VALUES FROM (1000) TO (2000); CREATE TABLE fk (a int) PARTITION BY RANGE (a); CREATE TABLE fk1 PARTITION OF fk FOR VALUES FROM (0) TO (750); ALTER TABLE fk ADD FOREIGN KEY (a) REFERENCES pk; CREATE TABLE fk2 (b int, a int) ; ALTER TABLE fk2 DROP COLUMN b; ALTER TABLE fk ATTACH PARTITION fk2 FOR VALUES FROM (750) TO (3500); CREATE TABLE pk3 PARTITION OF pk FOR VALUES FROM (2000) TO (3000); CREATE TABLE pk4 (LIKE pk); ALTER TABLE pk ATTACH PARTITION pk4 FOR VALUES FROM (3000) TO (4000); CREATE TABLE pk5 (c int, b int, a int NOT NULL) PARTITION BY RANGE (a); ALTER TABLE pk5 DROP COLUMN b, DROP COLUMN c; CREATE TABLE pk51 PARTITION OF pk5 FOR VALUES FROM (4000) TO (4500); CREATE TABLE pk52 PARTITION OF pk5 FOR VALUES FROM (4500) TO (5000); ALTER TABLE pk ATTACH PARTITION pk5 FOR VALUES FROM (4000) TO (5000); CREATE TABLE fk3 PARTITION OF fk FOR VALUES FROM (3500) TO (5000); -- these should fail: referenced value not present INSERT into fk VALUES (1); INSERT into fk VALUES (1000); INSERT into fk VALUES (2000); INSERT into fk VALUES (3000); INSERT into fk VALUES (4000); INSERT into fk VALUES (4500); -- insert into the referenced table, now they should work INSERT into pk VALUES (1), (1000), (2000), (3000), (4000), (4500); INSERT into fk VALUES (1), (1000), (2000), (3000), (4000), (4500); -- should fail: referencing value present DELETE FROM pk WHERE a = 1; DELETE FROM pk WHERE a = 1000; DELETE FROM pk WHERE a = 2000; DELETE FROM pk WHERE a = 3000; DELETE FROM pk WHERE a = 4000; DELETE FROM pk WHERE a = 4500; UPDATE pk SET a = 2 WHERE a = 1; UPDATE pk SET a = 1002 WHERE a = 1000; UPDATE pk SET a = 2002 WHERE a = 2000; UPDATE pk SET a = 3002 WHERE a = 3000; UPDATE pk SET a = 4002 WHERE a = 4000; UPDATE pk SET a = 4502 WHERE a = 4500; -- now they should work DELETE FROM fk; UPDATE pk SET a = 2 WHERE a = 1; DELETE FROM pk WHERE a = 2; UPDATE pk SET a = 1002 WHERE a = 1000; DELETE FROM pk WHERE a = 1002; UPDATE pk SET a = 2002 WHERE a = 2000; DELETE FROM pk WHERE a = 2002; UPDATE pk SET a = 3002 WHERE a = 3000; DELETE FROM pk WHERE a = 3002; UPDATE pk SET a = 4002 WHERE a = 4000; DELETE FROM pk WHERE a = 4002; UPDATE pk SET a = 4502 WHERE a = 4500; DELETE FROM pk WHERE a = 4502; CREATE SCHEMA fkpart4; SET search_path TO fkpart4; -- dropping/detaching PARTITIONs is prevented if that would break -- a foreign key's existing data CREATE TABLE droppk (a int PRIMARY KEY) PARTITION BY RANGE (a); CREATE TABLE droppk1 PARTITION OF droppk FOR VALUES FROM (0) TO (1000); CREATE TABLE droppk_d PARTITION OF droppk DEFAULT; CREATE TABLE droppk2 PARTITION OF droppk FOR VALUES FROM (1000) TO (2000) PARTITION BY RANGE (a); CREATE TABLE droppk21 PARTITION OF droppk2 FOR VALUES FROM (1000) TO (1400); CREATE TABLE droppk2_d PARTITION OF droppk2 DEFAULT; INSERT into droppk VALUES (1), (1000), (1500), (2000); CREATE TABLE dropfk (a int REFERENCES droppk); INSERT into dropfk VALUES (1), (1000), (1500), (2000); -- these should all fail ALTER TABLE droppk DETACH PARTITION droppk_d; ALTER TABLE droppk2 DETACH PARTITION droppk2_d; ALTER TABLE droppk DETACH PARTITION droppk1; ALTER TABLE droppk DETACH PARTITION droppk2; ALTER TABLE droppk2 DETACH PARTITION droppk21; -- dropping partitions is disallowed DROP TABLE droppk_d; DROP TABLE droppk2_d; DROP TABLE droppk1; DROP TABLE droppk2; DROP TABLE droppk21; DELETE FROM dropfk; -- dropping partitions is disallowed, even when no referencing values DROP TABLE droppk_d; DROP TABLE droppk2_d; DROP TABLE droppk1; -- but DETACH is allowed, and DROP afterwards works ALTER TABLE droppk2 DETACH PARTITION droppk21; DROP TABLE droppk2; -- Verify that initial constraint creation and cloning behave correctly CREATE SCHEMA fkpart5; SET search_path TO fkpart5; CREATE TABLE pk (a int PRIMARY KEY) PARTITION BY LIST (a); CREATE TABLE pk1 PARTITION OF pk FOR VALUES IN (1) PARTITION BY LIST (a); CREATE TABLE pk11 PARTITION OF pk1 FOR VALUES IN (1); CREATE TABLE fk (a int) PARTITION BY LIST (a); CREATE TABLE fk1 PARTITION OF fk FOR VALUES IN (1) PARTITION BY LIST (a); CREATE TABLE fk11 PARTITION OF fk1 FOR VALUES IN (1); ALTER TABLE fk ADD FOREIGN KEY (a) REFERENCES pk; CREATE TABLE pk2 PARTITION OF pk FOR VALUES IN (2); CREATE TABLE pk3 (a int NOT NULL) PARTITION BY LIST (a); CREATE TABLE pk31 PARTITION OF pk3 FOR VALUES IN (31); CREATE TABLE pk32 (b int, a int NOT NULL); ALTER TABLE pk32 DROP COLUMN b; ALTER TABLE pk3 ATTACH PARTITION pk32 FOR VALUES IN (32); ALTER TABLE pk ATTACH PARTITION pk3 FOR VALUES IN (31, 32); CREATE TABLE fk2 PARTITION OF fk FOR VALUES IN (2); CREATE TABLE fk3 (b int, a int); ALTER TABLE fk3 DROP COLUMN b; ALTER TABLE fk ATTACH PARTITION fk3 FOR VALUES IN (3); SELECT pg_describe_object('pg_constraint'::regclass, oid, 0), confrelid::regclass, CASE WHEN conparentid <> 0 THEN pg_describe_object('pg_constraint'::regclass, conparentid, 0) ELSE 'TOP' END FROM pg_catalog.pg_constraint WHERE conrelid IN (SELECT relid FROM pg_partition_tree('fk')) ORDER BY conrelid::regclass::text, conname; CREATE TABLE fk4 (LIKE fk); INSERT INTO fk4 VALUES (50); ALTER TABLE fk ATTACH PARTITION fk4 FOR VALUES IN (50); -- Verify constraint deferrability CREATE SCHEMA fkpart9; SET search_path TO fkpart9; CREATE TABLE pk (a int PRIMARY KEY) PARTITION BY LIST (a); CREATE TABLE pk1 PARTITION OF pk FOR VALUES IN (1, 2) PARTITION BY LIST (a); CREATE TABLE pk11 PARTITION OF pk1 FOR VALUES IN (1); CREATE TABLE pk3 PARTITION OF pk FOR VALUES IN (3); CREATE TABLE fk (a int REFERENCES pk DEFERRABLE INITIALLY IMMEDIATE); INSERT INTO fk VALUES (1); -- should fail BEGIN; SET CONSTRAINTS fk_a_fkey DEFERRED; INSERT INTO fk VALUES (1); COMMIT; -- should fail BEGIN; SET CONSTRAINTS fk_a_fkey DEFERRED; INSERT INTO fk VALUES (1); INSERT INTO pk VALUES (1); COMMIT; -- OK BEGIN; SET CONSTRAINTS fk_a_fkey DEFERRED; DELETE FROM pk WHERE a = 1; DELETE FROM fk WHERE a = 1; COMMIT; -- OK -- Verify constraint deferrability when changed by ALTER -- Partitioned table at referencing end CREATE TABLE pt(f1 int, f2 int, f3 int, PRIMARY KEY(f1,f2)); CREATE TABLE ref(f1 int, f2 int, f3 int) PARTITION BY list(f1); CREATE TABLE ref1 PARTITION OF ref FOR VALUES IN (1); CREATE TABLE ref2 PARTITION OF ref FOR VALUES in (2); ALTER TABLE ref ADD FOREIGN KEY(f1,f2) REFERENCES pt; ALTER TABLE ref ALTER CONSTRAINT ref_f1_f2_fkey DEFERRABLE INITIALLY DEFERRED; INSERT INTO pt VALUES(1,2,3); INSERT INTO ref VALUES(1,2,3); BEGIN; DELETE FROM pt; DELETE FROM ref; ABORT; DROP TABLE pt, ref; -- Multi-level partitioning at referencing end CREATE TABLE pt(f1 int, f2 int, f3 int, PRIMARY KEY(f1,f2)); CREATE TABLE ref(f1 int, f2 int, f3 int) PARTITION BY list(f1); CREATE TABLE ref1_2 PARTITION OF ref FOR VALUES IN (1, 2) PARTITION BY list (f2); CREATE TABLE ref1 PARTITION OF ref1_2 FOR VALUES IN (1); CREATE TABLE ref2 PARTITION OF ref1_2 FOR VALUES IN (2) PARTITION BY list (f2); CREATE TABLE ref22 PARTITION OF ref2 FOR VALUES IN (2); ALTER TABLE ref ADD FOREIGN KEY(f1,f2) REFERENCES pt; INSERT INTO pt VALUES(1,2,3); INSERT INTO ref VALUES(1,2,3); ALTER TABLE ref22 ALTER CONSTRAINT ref_f1_f2_fkey DEFERRABLE INITIALLY IMMEDIATE; -- fails ALTER TABLE ref ALTER CONSTRAINT ref_f1_f2_fkey DEFERRABLE INITIALLY DEFERRED; BEGIN; DELETE FROM pt; DELETE FROM ref; ABORT; DROP TABLE pt, ref; -- Partitioned table at referenced end CREATE TABLE pt(f1 int, f2 int, f3 int, PRIMARY KEY(f1,f2)) PARTITION BY LIST(f1); CREATE TABLE pt1 PARTITION OF pt FOR VALUES IN (1); CREATE TABLE pt2 PARTITION OF pt FOR VALUES IN (2); CREATE TABLE ref(f1 int, f2 int, f3 int); ALTER TABLE ref ADD FOREIGN KEY(f1,f2) REFERENCES pt; ALTER TABLE ref ALTER CONSTRAINT ref_f1_f2_fkey DEFERRABLE INITIALLY DEFERRED; INSERT INTO pt VALUES(1,2,3); INSERT INTO ref VALUES(1,2,3); BEGIN; DELETE FROM pt; DELETE FROM ref; ABORT; DROP TABLE pt, ref; -- Multi-level partitioning at at referenced end CREATE TABLE pt(f1 int, f2 int, f3 int, PRIMARY KEY(f1,f2)) PARTITION BY LIST(f1); CREATE TABLE pt1_2 PARTITION OF pt FOR VALUES IN (1, 2) PARTITION BY LIST (f1); CREATE TABLE pt1 PARTITION OF pt1_2 FOR VALUES IN (1); CREATE TABLE pt2 PARTITION OF pt1_2 FOR VALUES IN (2); CREATE TABLE ref(f1 int, f2 int, f3 int); ALTER TABLE ref ADD FOREIGN KEY(f1,f2) REFERENCES pt; ALTER TABLE ref ALTER CONSTRAINT ref_f1_f2_fkey1 DEFERRABLE INITIALLY DEFERRED; -- fails ALTER TABLE ref ALTER CONSTRAINT ref_f1_f2_fkey DEFERRABLE INITIALLY DEFERRED; INSERT INTO pt VALUES(1,2,3); INSERT INTO ref VALUES(1,2,3); BEGIN; DELETE FROM pt; DELETE FROM ref; ABORT; DROP TABLE pt, ref; DROP SCHEMA fkpart9 CASCADE; -- Verify ON UPDATE/DELETE behavior CREATE SCHEMA fkpart6; SET search_path TO fkpart6; CREATE TABLE pk (a int PRIMARY KEY) PARTITION BY RANGE (a); CREATE TABLE pk1 PARTITION OF pk FOR VALUES FROM (1) TO (100) PARTITION BY RANGE (a); CREATE TABLE pk11 PARTITION OF pk1 FOR VALUES FROM (1) TO (50); CREATE TABLE pk12 PARTITION OF pk1 FOR VALUES FROM (50) TO (100); CREATE TABLE fk (a int) PARTITION BY RANGE (a); CREATE TABLE fk1 PARTITION OF fk FOR VALUES FROM (1) TO (100) PARTITION BY RANGE (a); CREATE TABLE fk11 PARTITION OF fk1 FOR VALUES FROM (1) TO (10); CREATE TABLE fk12 PARTITION OF fk1 FOR VALUES FROM (10) TO (100); ALTER TABLE fk ADD FOREIGN KEY (a) REFERENCES pk ON UPDATE CASCADE ON DELETE CASCADE; CREATE TABLE fk_d PARTITION OF fk DEFAULT; INSERT INTO pk VALUES (1); INSERT INTO fk VALUES (1); UPDATE pk SET a = 20; SELECT tableoid::regclass, * FROM fk; DELETE FROM pk WHERE a = 20; SELECT tableoid::regclass, * FROM fk; DROP TABLE fk; TRUNCATE TABLE pk; INSERT INTO pk VALUES (20), (50); CREATE TABLE fk (a int) PARTITION BY RANGE (a); CREATE TABLE fk1 PARTITION OF fk FOR VALUES FROM (1) TO (100) PARTITION BY RANGE (a); CREATE TABLE fk11 PARTITION OF fk1 FOR VALUES FROM (1) TO (10); CREATE TABLE fk12 PARTITION OF fk1 FOR VALUES FROM (10) TO (100); ALTER TABLE fk ADD FOREIGN KEY (a) REFERENCES pk ON UPDATE SET NULL ON DELETE SET NULL; CREATE TABLE fk_d PARTITION OF fk DEFAULT; INSERT INTO fk VALUES (20), (50); UPDATE pk SET a = 21 WHERE a = 20; DELETE FROM pk WHERE a = 50; SELECT tableoid::regclass, * FROM fk; DROP TABLE fk; TRUNCATE TABLE pk; INSERT INTO pk VALUES (20), (30), (50); CREATE TABLE fk (id int, a int DEFAULT 50) PARTITION BY RANGE (a); CREATE TABLE fk1 PARTITION OF fk FOR VALUES FROM (1) TO (100) PARTITION BY RANGE (a); CREATE TABLE fk11 PARTITION OF fk1 FOR VALUES FROM (1) TO (10); CREATE TABLE fk12 PARTITION OF fk1 FOR VALUES FROM (10) TO (100); ALTER TABLE fk ADD FOREIGN KEY (a) REFERENCES pk ON UPDATE SET DEFAULT ON DELETE SET DEFAULT; CREATE TABLE fk_d PARTITION OF fk DEFAULT; INSERT INTO fk VALUES (1, 20), (2, 30); DELETE FROM pk WHERE a = 20 RETURNING *; UPDATE pk SET a = 90 WHERE a = 30 RETURNING *; SELECT tableoid::regclass, * FROM fk; DROP TABLE fk; TRUNCATE TABLE pk; INSERT INTO pk VALUES (20), (30); CREATE TABLE fk (a int DEFAULT 50) PARTITION BY RANGE (a); CREATE TABLE fk1 PARTITION OF fk FOR VALUES FROM (1) TO (100) PARTITION BY RANGE (a); CREATE TABLE fk11 PARTITION OF fk1 FOR VALUES FROM (1) TO (10); CREATE TABLE fk12 PARTITION OF fk1 FOR VALUES FROM (10) TO (100); ALTER TABLE fk ADD FOREIGN KEY (a) REFERENCES pk ON UPDATE RESTRICT ON DELETE RESTRICT; CREATE TABLE fk_d PARTITION OF fk DEFAULT; INSERT INTO fk VALUES (20), (30); DELETE FROM pk WHERE a = 20; UPDATE pk SET a = 90 WHERE a = 30; SELECT tableoid::regclass, * FROM fk; DROP TABLE fk; -- test for reported bug: relispartition not set -- https://postgr.es/m/CA+HiwqHMsRtRYRWYTWavKJ8x14AFsv7bmAV46mYwnfD3vy8goQ@mail.gmail.com CREATE SCHEMA fkpart7 CREATE TABLE pkpart (a int) PARTITION BY LIST (a) CREATE TABLE pkpart1 PARTITION OF pkpart FOR VALUES IN (1); ALTER TABLE fkpart7.pkpart1 ADD PRIMARY KEY (a); ALTER TABLE fkpart7.pkpart ADD PRIMARY KEY (a); CREATE TABLE fkpart7.fk (a int REFERENCES fkpart7.pkpart); DROP SCHEMA fkpart7 CASCADE; -- ensure we check partitions are "not used" when dropping constraints CREATE SCHEMA fkpart8 CREATE TABLE tbl1(f1 int PRIMARY KEY) CREATE TABLE tbl2(f1 int REFERENCES tbl1 DEFERRABLE INITIALLY DEFERRED) PARTITION BY RANGE(f1) CREATE TABLE tbl2_p1 PARTITION OF tbl2 FOR VALUES FROM (minvalue) TO (maxvalue); INSERT INTO fkpart8.tbl1 VALUES(1); BEGIN; INSERT INTO fkpart8.tbl2 VALUES(1); ALTER TABLE fkpart8.tbl2 DROP CONSTRAINT tbl2_f1_fkey; COMMIT; DROP SCHEMA fkpart8 CASCADE; -- ensure FK referencing a multi-level partitioned table are -- enforce reference to sub-children. CREATE SCHEMA fkpart9 CREATE TABLE pk (a INT PRIMARY KEY) PARTITION BY RANGE (a) CREATE TABLE fk ( fk_a INT REFERENCES pk(a) ON DELETE CASCADE ) CREATE TABLE pk1 PARTITION OF pk FOR VALUES FROM (30) TO (50) PARTITION BY RANGE (a) CREATE TABLE pk11 PARTITION OF pk1 FOR VALUES FROM (30) TO (40); INSERT INTO fkpart9.pk VALUES (35); INSERT INTO fkpart9.fk VALUES (35); DELETE FROM fkpart9.pk WHERE a=35; SELECT * FROM fkpart9.pk; SELECT * FROM fkpart9.fk; DROP SCHEMA fkpart9 CASCADE; libpg_query-13-2.1.0/test/sql/postgres_regress/functional_deps.sql000066400000000000000000000124151413137616400253420ustar00rootroot00000000000000-- from http://www.depesz.com/index.php/2010/04/19/getting-unique-elements/ CREATE TEMP TABLE articles ( id int CONSTRAINT articles_pkey PRIMARY KEY, keywords text, title text UNIQUE NOT NULL, body text UNIQUE, created date ); CREATE TEMP TABLE articles_in_category ( article_id int, category_id int, changed date, PRIMARY KEY (article_id, category_id) ); -- test functional dependencies based on primary keys/unique constraints -- base tables -- group by primary key (OK) SELECT id, keywords, title, body, created FROM articles GROUP BY id; -- group by unique not null (fail/todo) SELECT id, keywords, title, body, created FROM articles GROUP BY title; -- group by unique nullable (fail) SELECT id, keywords, title, body, created FROM articles GROUP BY body; -- group by something else (fail) SELECT id, keywords, title, body, created FROM articles GROUP BY keywords; -- multiple tables -- group by primary key (OK) SELECT a.id, a.keywords, a.title, a.body, a.created FROM articles AS a, articles_in_category AS aic WHERE a.id = aic.article_id AND aic.category_id in (14,62,70,53,138) GROUP BY a.id; -- group by something else (fail) SELECT a.id, a.keywords, a.title, a.body, a.created FROM articles AS a, articles_in_category AS aic WHERE a.id = aic.article_id AND aic.category_id in (14,62,70,53,138) GROUP BY aic.article_id, aic.category_id; -- JOIN syntax -- group by left table's primary key (OK) SELECT a.id, a.keywords, a.title, a.body, a.created FROM articles AS a JOIN articles_in_category AS aic ON a.id = aic.article_id WHERE aic.category_id in (14,62,70,53,138) GROUP BY a.id; -- group by something else (fail) SELECT a.id, a.keywords, a.title, a.body, a.created FROM articles AS a JOIN articles_in_category AS aic ON a.id = aic.article_id WHERE aic.category_id in (14,62,70,53,138) GROUP BY aic.article_id, aic.category_id; -- group by right table's (composite) primary key (OK) SELECT aic.changed FROM articles AS a JOIN articles_in_category AS aic ON a.id = aic.article_id WHERE aic.category_id in (14,62,70,53,138) GROUP BY aic.category_id, aic.article_id; -- group by right table's partial primary key (fail) SELECT aic.changed FROM articles AS a JOIN articles_in_category AS aic ON a.id = aic.article_id WHERE aic.category_id in (14,62,70,53,138) GROUP BY aic.article_id; -- example from documentation CREATE TEMP TABLE products (product_id int, name text, price numeric); CREATE TEMP TABLE sales (product_id int, units int); -- OK SELECT product_id, p.name, (sum(s.units) * p.price) AS sales FROM products p LEFT JOIN sales s USING (product_id) GROUP BY product_id, p.name, p.price; -- fail SELECT product_id, p.name, (sum(s.units) * p.price) AS sales FROM products p LEFT JOIN sales s USING (product_id) GROUP BY product_id; ALTER TABLE products ADD PRIMARY KEY (product_id); -- OK now SELECT product_id, p.name, (sum(s.units) * p.price) AS sales FROM products p LEFT JOIN sales s USING (product_id) GROUP BY product_id; -- Drupal example, http://drupal.org/node/555530 CREATE TEMP TABLE node ( nid SERIAL, vid integer NOT NULL default '0', type varchar(32) NOT NULL default '', title varchar(128) NOT NULL default '', uid integer NOT NULL default '0', status integer NOT NULL default '1', created integer NOT NULL default '0', -- snip PRIMARY KEY (nid, vid) ); CREATE TEMP TABLE users ( uid integer NOT NULL default '0', name varchar(60) NOT NULL default '', pass varchar(32) NOT NULL default '', -- snip PRIMARY KEY (uid), UNIQUE (name) ); -- OK SELECT u.uid, u.name FROM node n INNER JOIN users u ON u.uid = n.uid WHERE n.type = 'blog' AND n.status = 1 GROUP BY u.uid, u.name; -- OK SELECT u.uid, u.name FROM node n INNER JOIN users u ON u.uid = n.uid WHERE n.type = 'blog' AND n.status = 1 GROUP BY u.uid; -- Check views and dependencies -- fail CREATE TEMP VIEW fdv1 AS SELECT id, keywords, title, body, created FROM articles GROUP BY body; -- OK CREATE TEMP VIEW fdv1 AS SELECT id, keywords, title, body, created FROM articles GROUP BY id; -- fail ALTER TABLE articles DROP CONSTRAINT articles_pkey RESTRICT; DROP VIEW fdv1; -- multiple dependencies CREATE TEMP VIEW fdv2 AS SELECT a.id, a.keywords, a.title, aic.category_id, aic.changed FROM articles AS a JOIN articles_in_category AS aic ON a.id = aic.article_id WHERE aic.category_id in (14,62,70,53,138) GROUP BY a.id, aic.category_id, aic.article_id; ALTER TABLE articles DROP CONSTRAINT articles_pkey RESTRICT; -- fail ALTER TABLE articles_in_category DROP CONSTRAINT articles_in_category_pkey RESTRICT; --fail DROP VIEW fdv2; -- nested queries CREATE TEMP VIEW fdv3 AS SELECT id, keywords, title, body, created FROM articles GROUP BY id UNION SELECT id, keywords, title, body, created FROM articles GROUP BY id; ALTER TABLE articles DROP CONSTRAINT articles_pkey RESTRICT; -- fail DROP VIEW fdv3; CREATE TEMP VIEW fdv4 AS SELECT * FROM articles WHERE title IN (SELECT title FROM articles GROUP BY id); ALTER TABLE articles DROP CONSTRAINT articles_pkey RESTRICT; -- fail DROP VIEW fdv4; -- prepared query plans: this results in failure on reuse PREPARE foo AS SELECT id, keywords, title, body, created FROM articles GROUP BY id; EXECUTE foo; ALTER TABLE articles DROP CONSTRAINT articles_pkey RESTRICT; EXECUTE foo; -- fail libpg_query-13-2.1.0/test/sql/postgres_regress/generated.sql000066400000000000000000000447251413137616400241340ustar00rootroot00000000000000-- sanity check of system catalog SELECT attrelid, attname, attgenerated FROM pg_attribute WHERE attgenerated NOT IN ('', 's'); CREATE TABLE gtest0 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (55) STORED); CREATE TABLE gtest1 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED); SELECT table_name, column_name, column_default, is_nullable, is_generated, generation_expression FROM information_schema.columns WHERE table_name LIKE 'gtest_' ORDER BY 1, 2; SELECT table_name, column_name, dependent_column FROM information_schema.column_column_usage ORDER BY 1, 2, 3; \d gtest1 -- duplicate generated CREATE TABLE gtest_err_1 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED GENERATED ALWAYS AS (a * 3) STORED); -- references to other generated columns, including self-references CREATE TABLE gtest_err_2a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (b * 2) STORED); CREATE TABLE gtest_err_2b (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED, c int GENERATED ALWAYS AS (b * 3) STORED); -- invalid reference CREATE TABLE gtest_err_3 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (c * 2) STORED); -- generation expression must be immutable CREATE TABLE gtest_err_4 (a int PRIMARY KEY, b double precision GENERATED ALWAYS AS (random()) STORED); -- cannot have default/identity and generated CREATE TABLE gtest_err_5a (a int PRIMARY KEY, b int DEFAULT 5 GENERATED ALWAYS AS (a * 2) STORED); CREATE TABLE gtest_err_5b (a int PRIMARY KEY, b int GENERATED ALWAYS AS identity GENERATED ALWAYS AS (a * 2) STORED); -- reference to system column not allowed in generated column CREATE TABLE gtest_err_6a (a int PRIMARY KEY, b bool GENERATED ALWAYS AS (xmin <> 37) STORED); -- various prohibited constructs CREATE TABLE gtest_err_7a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (avg(a)) STORED); CREATE TABLE gtest_err_7b (a int PRIMARY KEY, b int GENERATED ALWAYS AS (row_number() OVER (ORDER BY a)) STORED); CREATE TABLE gtest_err_7c (a int PRIMARY KEY, b int GENERATED ALWAYS AS ((SELECT a)) STORED); CREATE TABLE gtest_err_7d (a int PRIMARY KEY, b int GENERATED ALWAYS AS (generate_series(1, a)) STORED); -- GENERATED BY DEFAULT not allowed CREATE TABLE gtest_err_8 (a int PRIMARY KEY, b int GENERATED BY DEFAULT AS (a * 2) STORED); INSERT INTO gtest1 VALUES (1); INSERT INTO gtest1 VALUES (2, DEFAULT); INSERT INTO gtest1 VALUES (3, 33); -- error SELECT * FROM gtest1 ORDER BY a; UPDATE gtest1 SET b = DEFAULT WHERE a = 1; UPDATE gtest1 SET b = 11 WHERE a = 1; -- error SELECT * FROM gtest1 ORDER BY a; SELECT a, b, b * 2 AS b2 FROM gtest1 ORDER BY a; SELECT a, b FROM gtest1 WHERE b = 4 ORDER BY a; -- test that overflow error happens on write INSERT INTO gtest1 VALUES (2000000000); SELECT * FROM gtest1; DELETE FROM gtest1 WHERE a = 2000000000; -- test with joins CREATE TABLE gtestx (x int, y int); INSERT INTO gtestx VALUES (11, 1), (22, 2), (33, 3); SELECT * FROM gtestx, gtest1 WHERE gtestx.y = gtest1.a; DROP TABLE gtestx; -- test UPDATE/DELETE quals SELECT * FROM gtest1 ORDER BY a; UPDATE gtest1 SET a = 3 WHERE b = 4; SELECT * FROM gtest1 ORDER BY a; DELETE FROM gtest1 WHERE b = 2; SELECT * FROM gtest1 ORDER BY a; -- views CREATE VIEW gtest1v AS SELECT * FROM gtest1; SELECT * FROM gtest1v; INSERT INTO gtest1v VALUES (4, 8); -- fails DROP VIEW gtest1v; -- CTEs WITH foo AS (SELECT * FROM gtest1) SELECT * FROM foo; -- inheritance CREATE TABLE gtest1_1 () INHERITS (gtest1); SELECT * FROM gtest1_1; \d gtest1_1 INSERT INTO gtest1_1 VALUES (4); SELECT * FROM gtest1_1; SELECT * FROM gtest1; CREATE TABLE gtest_normal (a int, b int); CREATE TABLE gtest_normal_child (a int, b int GENERATED ALWAYS AS (a * 2) STORED) INHERITS (gtest_normal); \d gtest_normal_child INSERT INTO gtest_normal (a) VALUES (1); INSERT INTO gtest_normal_child (a) VALUES (2); SELECT * FROM gtest_normal; CREATE TABLE gtest_normal_child2 (a int, b int GENERATED ALWAYS AS (a * 3) STORED); ALTER TABLE gtest_normal_child2 INHERIT gtest_normal; INSERT INTO gtest_normal_child2 (a) VALUES (3); SELECT * FROM gtest_normal; -- test inheritance mismatches between parent and child CREATE TABLE gtestx (x int, b int GENERATED ALWAYS AS (a * 22) STORED) INHERITS (gtest1); -- error CREATE TABLE gtestx (x int, b int DEFAULT 10) INHERITS (gtest1); -- error CREATE TABLE gtestx (x int, b int GENERATED ALWAYS AS IDENTITY) INHERITS (gtest1); -- error CREATE TABLE gtestxx_1 (a int NOT NULL, b int); ALTER TABLE gtestxx_1 INHERIT gtest1; -- error CREATE TABLE gtestxx_2 (a int NOT NULL, b int GENERATED ALWAYS AS (a * 22) STORED); ALTER TABLE gtestxx_2 INHERIT gtest1; -- error CREATE TABLE gtestxx_3 (a int NOT NULL, b int GENERATED ALWAYS AS (a * 2) STORED); ALTER TABLE gtestxx_3 INHERIT gtest1; -- ok CREATE TABLE gtestxx_4 (b int GENERATED ALWAYS AS (a * 2) STORED, a int NOT NULL); ALTER TABLE gtestxx_4 INHERIT gtest1; -- ok -- test multiple inheritance mismatches CREATE TABLE gtesty (x int, b int); CREATE TABLE gtest1_2 () INHERITS (gtest1, gtesty); -- error DROP TABLE gtesty; CREATE TABLE gtesty (x int, b int GENERATED ALWAYS AS (x * 22) STORED); CREATE TABLE gtest1_2 () INHERITS (gtest1, gtesty); -- error DROP TABLE gtesty; CREATE TABLE gtesty (x int, b int DEFAULT 55); CREATE TABLE gtest1_2 () INHERITS (gtest0, gtesty); -- error DROP TABLE gtesty; -- test stored update CREATE TABLE gtest3 (a int, b int GENERATED ALWAYS AS (a * 3) STORED); INSERT INTO gtest3 (a) VALUES (1), (2), (3), (NULL); SELECT * FROM gtest3 ORDER BY a; UPDATE gtest3 SET a = 22 WHERE a = 2; SELECT * FROM gtest3 ORDER BY a; CREATE TABLE gtest3a (a text, b text GENERATED ALWAYS AS (a || '+' || a) STORED); INSERT INTO gtest3a (a) VALUES ('a'), ('b'), ('c'), (NULL); SELECT * FROM gtest3a ORDER BY a; UPDATE gtest3a SET a = 'bb' WHERE a = 'b'; SELECT * FROM gtest3a ORDER BY a; -- COPY TRUNCATE gtest1; INSERT INTO gtest1 (a) VALUES (1), (2); COPY gtest1 TO stdout; COPY gtest1 (a, b) TO stdout; COPY gtest1 FROM stdin; 3 4 \. COPY gtest1 (a, b) FROM stdin; SELECT * FROM gtest1 ORDER BY a; TRUNCATE gtest3; INSERT INTO gtest3 (a) VALUES (1), (2); COPY gtest3 TO stdout; COPY gtest3 (a, b) TO stdout; COPY gtest3 FROM stdin; 3 4 \. COPY gtest3 (a, b) FROM stdin; SELECT * FROM gtest3 ORDER BY a; -- null values CREATE TABLE gtest2 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (NULL) STORED); INSERT INTO gtest2 VALUES (1); SELECT * FROM gtest2; -- simple column reference for varlena types CREATE TABLE gtest_varlena (a varchar, b varchar GENERATED ALWAYS AS (a) STORED); INSERT INTO gtest_varlena (a) VALUES('01234567890123456789'); INSERT INTO gtest_varlena (a) VALUES(NULL); SELECT * FROM gtest_varlena ORDER BY a; DROP TABLE gtest_varlena; -- composite types CREATE TYPE double_int as (a int, b int); CREATE TABLE gtest4 ( a int, b double_int GENERATED ALWAYS AS ((a * 2, a * 3)) STORED ); INSERT INTO gtest4 VALUES (1), (6); SELECT * FROM gtest4; DROP TABLE gtest4; DROP TYPE double_int; -- using tableoid is allowed CREATE TABLE gtest_tableoid ( a int PRIMARY KEY, b bool GENERATED ALWAYS AS (tableoid <> 0) STORED ); INSERT INTO gtest_tableoid VALUES (1), (2); SELECT * FROM gtest_tableoid; -- drop column behavior CREATE TABLE gtest10 (a int PRIMARY KEY, b int, c int GENERATED ALWAYS AS (b * 2) STORED); ALTER TABLE gtest10 DROP COLUMN b; \d gtest10 CREATE TABLE gtest10a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED); ALTER TABLE gtest10a DROP COLUMN b; INSERT INTO gtest10a (a) VALUES (1); -- privileges CREATE USER regress_user11; CREATE TABLE gtest11s (a int PRIMARY KEY, b int, c int GENERATED ALWAYS AS (b * 2) STORED); INSERT INTO gtest11s VALUES (1, 10), (2, 20); GRANT SELECT (a, c) ON gtest11s TO regress_user11; CREATE FUNCTION gf1(a int) RETURNS int AS $$ SELECT a * 3 $$ IMMUTABLE LANGUAGE SQL; REVOKE ALL ON FUNCTION gf1(int) FROM PUBLIC; CREATE TABLE gtest12s (a int PRIMARY KEY, b int, c int GENERATED ALWAYS AS (gf1(b)) STORED); INSERT INTO gtest12s VALUES (1, 10), (2, 20); GRANT SELECT (a, c) ON gtest12s TO regress_user11; SET ROLE regress_user11; SELECT a, b FROM gtest11s; -- not allowed SELECT a, c FROM gtest11s; -- allowed SELECT gf1(10); -- not allowed SELECT a, c FROM gtest12s; -- allowed RESET ROLE; DROP TABLE gtest11s, gtest12s; DROP FUNCTION gf1(int); DROP USER regress_user11; -- check constraints CREATE TABLE gtest20 (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED CHECK (b < 50)); INSERT INTO gtest20 (a) VALUES (10); -- ok INSERT INTO gtest20 (a) VALUES (30); -- violates constraint CREATE TABLE gtest20a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED); INSERT INTO gtest20a (a) VALUES (10); INSERT INTO gtest20a (a) VALUES (30); ALTER TABLE gtest20a ADD CHECK (b < 50); -- fails on existing row CREATE TABLE gtest20b (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED); INSERT INTO gtest20b (a) VALUES (10); INSERT INTO gtest20b (a) VALUES (30); ALTER TABLE gtest20b ADD CONSTRAINT chk CHECK (b < 50) NOT VALID; ALTER TABLE gtest20b VALIDATE CONSTRAINT chk; -- fails on existing row -- not-null constraints CREATE TABLE gtest21a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (nullif(a, 0)) STORED NOT NULL); INSERT INTO gtest21a (a) VALUES (1); -- ok INSERT INTO gtest21a (a) VALUES (0); -- violates constraint CREATE TABLE gtest21b (a int PRIMARY KEY, b int GENERATED ALWAYS AS (nullif(a, 0)) STORED); ALTER TABLE gtest21b ALTER COLUMN b SET NOT NULL; INSERT INTO gtest21b (a) VALUES (1); -- ok INSERT INTO gtest21b (a) VALUES (0); -- violates constraint ALTER TABLE gtest21b ALTER COLUMN b DROP NOT NULL; INSERT INTO gtest21b (a) VALUES (0); -- ok now -- index constraints CREATE TABLE gtest22a (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a / 2) STORED UNIQUE); INSERT INTO gtest22a VALUES (2); INSERT INTO gtest22a VALUES (3); INSERT INTO gtest22a VALUES (4); CREATE TABLE gtest22b (a int, b int GENERATED ALWAYS AS (a / 2) STORED, PRIMARY KEY (a, b)); INSERT INTO gtest22b VALUES (2); INSERT INTO gtest22b VALUES (2); -- indexes CREATE TABLE gtest22c (a int, b int GENERATED ALWAYS AS (a * 2) STORED); CREATE INDEX gtest22c_b_idx ON gtest22c (b); CREATE INDEX gtest22c_expr_idx ON gtest22c ((b * 3)); CREATE INDEX gtest22c_pred_idx ON gtest22c (a) WHERE b > 0; \d gtest22c INSERT INTO gtest22c VALUES (1), (2), (3); SET enable_seqscan TO off; SET enable_bitmapscan TO off; EXPLAIN (COSTS OFF) SELECT * FROM gtest22c WHERE b = 4; SELECT * FROM gtest22c WHERE b = 4; EXPLAIN (COSTS OFF) SELECT * FROM gtest22c WHERE b * 3 = 6; SELECT * FROM gtest22c WHERE b * 3 = 6; EXPLAIN (COSTS OFF) SELECT * FROM gtest22c WHERE a = 1 AND b > 0; SELECT * FROM gtest22c WHERE a = 1 AND b > 0; RESET enable_seqscan; RESET enable_bitmapscan; -- foreign keys CREATE TABLE gtest23a (x int PRIMARY KEY, y int); INSERT INTO gtest23a VALUES (1, 11), (2, 22), (3, 33); CREATE TABLE gtest23x (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED REFERENCES gtest23a (x) ON UPDATE CASCADE); -- error CREATE TABLE gtest23x (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED REFERENCES gtest23a (x) ON DELETE SET NULL); -- error CREATE TABLE gtest23b (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED REFERENCES gtest23a (x)); \d gtest23b INSERT INTO gtest23b VALUES (1); -- ok INSERT INTO gtest23b VALUES (5); -- error DROP TABLE gtest23b; DROP TABLE gtest23a; CREATE TABLE gtest23p (x int, y int GENERATED ALWAYS AS (x * 2) STORED, PRIMARY KEY (y)); INSERT INTO gtest23p VALUES (1), (2), (3); CREATE TABLE gtest23q (a int PRIMARY KEY, b int REFERENCES gtest23p (y)); INSERT INTO gtest23q VALUES (1, 2); -- ok INSERT INTO gtest23q VALUES (2, 5); -- error -- domains CREATE DOMAIN gtestdomain1 AS int CHECK (VALUE < 10); CREATE TABLE gtest24 (a int PRIMARY KEY, b gtestdomain1 GENERATED ALWAYS AS (a * 2) STORED); INSERT INTO gtest24 (a) VALUES (4); -- ok INSERT INTO gtest24 (a) VALUES (6); -- error -- typed tables (currently not supported) CREATE TYPE gtest_type AS (f1 integer, f2 text, f3 bigint); CREATE TABLE gtest28 OF gtest_type (f1 WITH OPTIONS GENERATED ALWAYS AS (f2 *2) STORED); DROP TYPE gtest_type CASCADE; -- table partitions (currently not supported) CREATE TABLE gtest_parent (f1 date NOT NULL, f2 text, f3 bigint) PARTITION BY RANGE (f1); CREATE TABLE gtest_child PARTITION OF gtest_parent ( f3 WITH OPTIONS GENERATED ALWAYS AS (f2 * 2) STORED ) FOR VALUES FROM ('2016-07-01') TO ('2016-08-01'); -- error DROP TABLE gtest_parent; -- partitioned table CREATE TABLE gtest_parent (f1 date NOT NULL, f2 bigint, f3 bigint GENERATED ALWAYS AS (f2 * 2) STORED) PARTITION BY RANGE (f1); CREATE TABLE gtest_child PARTITION OF gtest_parent FOR VALUES FROM ('2016-07-01') TO ('2016-08-01'); INSERT INTO gtest_parent (f1, f2) VALUES ('2016-07-15', 1); SELECT * FROM gtest_parent; SELECT * FROM gtest_child; DROP TABLE gtest_parent; -- generated columns in partition key (not allowed) CREATE TABLE gtest_parent (f1 date NOT NULL, f2 bigint, f3 bigint GENERATED ALWAYS AS (f2 * 2) STORED) PARTITION BY RANGE (f3); CREATE TABLE gtest_parent (f1 date NOT NULL, f2 bigint, f3 bigint GENERATED ALWAYS AS (f2 * 2) STORED) PARTITION BY RANGE ((f3 * 3)); -- ALTER TABLE ... ADD COLUMN CREATE TABLE gtest25 (a int PRIMARY KEY); INSERT INTO gtest25 VALUES (3), (4); ALTER TABLE gtest25 ADD COLUMN b int GENERATED ALWAYS AS (a * 3) STORED; SELECT * FROM gtest25 ORDER BY a; ALTER TABLE gtest25 ADD COLUMN x int GENERATED ALWAYS AS (b * 4) STORED; -- error ALTER TABLE gtest25 ADD COLUMN x int GENERATED ALWAYS AS (z * 4) STORED; -- error ALTER TABLE gtest25 ADD COLUMN c int DEFAULT 42, ADD COLUMN x int GENERATED ALWAYS AS (c * 4) STORED; ALTER TABLE gtest25 ADD COLUMN d int DEFAULT 101; ALTER TABLE gtest25 ALTER COLUMN d SET DATA TYPE float8, ADD COLUMN y float8 GENERATED ALWAYS AS (d * 4) STORED; SELECT * FROM gtest25 ORDER BY a; \d gtest25 -- ALTER TABLE ... ALTER COLUMN CREATE TABLE gtest27 ( a int, b int, x int GENERATED ALWAYS AS ((a + b) * 2) STORED ); INSERT INTO gtest27 (a, b) VALUES (3, 7), (4, 11); ALTER TABLE gtest27 ALTER COLUMN a TYPE text; -- error ALTER TABLE gtest27 ALTER COLUMN x TYPE numeric; \d gtest27 SELECT * FROM gtest27; ALTER TABLE gtest27 ALTER COLUMN x TYPE boolean USING x <> 0; -- error ALTER TABLE gtest27 ALTER COLUMN x DROP DEFAULT; -- error -- It's possible to alter the column types this way: ALTER TABLE gtest27 DROP COLUMN x, ALTER COLUMN a TYPE bigint, ALTER COLUMN b TYPE bigint, ADD COLUMN x bigint GENERATED ALWAYS AS ((a + b) * 2) STORED; \d gtest27 -- Ideally you could just do this, but not today (and should x change type?): ALTER TABLE gtest27 ALTER COLUMN a TYPE float8, ALTER COLUMN b TYPE float8; -- error \d gtest27 SELECT * FROM gtest27; -- ALTER TABLE ... ALTER COLUMN ... DROP EXPRESSION CREATE TABLE gtest29 ( a int, b int GENERATED ALWAYS AS (a * 2) STORED ); INSERT INTO gtest29 (a) VALUES (3), (4); ALTER TABLE gtest29 ALTER COLUMN a DROP EXPRESSION; -- error ALTER TABLE gtest29 ALTER COLUMN a DROP EXPRESSION IF EXISTS; -- notice ALTER TABLE gtest29 ALTER COLUMN b DROP EXPRESSION; INSERT INTO gtest29 (a) VALUES (5); INSERT INTO gtest29 (a, b) VALUES (6, 66); SELECT * FROM gtest29; \d gtest29 -- check that dependencies between columns have also been removed ALTER TABLE gtest29 DROP COLUMN a; -- should not drop b \d gtest29 -- with inheritance CREATE TABLE gtest30 ( a int, b int GENERATED ALWAYS AS (a * 2) STORED ); CREATE TABLE gtest30_1 () INHERITS (gtest30); ALTER TABLE gtest30 ALTER COLUMN b DROP EXPRESSION; \d gtest30 \d gtest30_1 DROP TABLE gtest30 CASCADE; CREATE TABLE gtest30 ( a int, b int GENERATED ALWAYS AS (a * 2) STORED ); CREATE TABLE gtest30_1 () INHERITS (gtest30); ALTER TABLE ONLY gtest30 ALTER COLUMN b DROP EXPRESSION; -- error \d gtest30 \d gtest30_1 ALTER TABLE gtest30_1 ALTER COLUMN b DROP EXPRESSION; -- error -- triggers CREATE TABLE gtest26 ( a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) STORED ); CREATE FUNCTION gtest_trigger_func() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN IF tg_op IN ('DELETE', 'UPDATE') THEN RAISE INFO '%: %: old = %', TG_NAME, TG_WHEN, OLD; END IF; IF tg_op IN ('INSERT', 'UPDATE') THEN RAISE INFO '%: %: new = %', TG_NAME, TG_WHEN, NEW; END IF; IF tg_op = 'DELETE' THEN RETURN OLD; ELSE RETURN NEW; END IF; END $$; CREATE TRIGGER gtest1 BEFORE DELETE OR UPDATE ON gtest26 FOR EACH ROW WHEN (OLD.b < 0) -- ok EXECUTE PROCEDURE gtest_trigger_func(); CREATE TRIGGER gtest2a BEFORE INSERT OR UPDATE ON gtest26 FOR EACH ROW WHEN (NEW.b < 0) -- error EXECUTE PROCEDURE gtest_trigger_func(); CREATE TRIGGER gtest2b BEFORE INSERT OR UPDATE ON gtest26 FOR EACH ROW WHEN (NEW.* IS NOT NULL) -- error EXECUTE PROCEDURE gtest_trigger_func(); CREATE TRIGGER gtest2 BEFORE INSERT ON gtest26 FOR EACH ROW WHEN (NEW.a < 0) EXECUTE PROCEDURE gtest_trigger_func(); CREATE TRIGGER gtest3 AFTER DELETE OR UPDATE ON gtest26 FOR EACH ROW WHEN (OLD.b < 0) -- ok EXECUTE PROCEDURE gtest_trigger_func(); CREATE TRIGGER gtest4 AFTER INSERT OR UPDATE ON gtest26 FOR EACH ROW WHEN (NEW.b < 0) -- ok EXECUTE PROCEDURE gtest_trigger_func(); INSERT INTO gtest26 (a) VALUES (-2), (0), (3); SELECT * FROM gtest26 ORDER BY a; UPDATE gtest26 SET a = a * -2; SELECT * FROM gtest26 ORDER BY a; DELETE FROM gtest26 WHERE a = -6; SELECT * FROM gtest26 ORDER BY a; DROP TRIGGER gtest1 ON gtest26; DROP TRIGGER gtest2 ON gtest26; DROP TRIGGER gtest3 ON gtest26; -- Check that an UPDATE of "a" fires the trigger for UPDATE OF b, per -- SQL standard. CREATE FUNCTION gtest_trigger_func3() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'OK'; RETURN NEW; END $$; CREATE TRIGGER gtest11 BEFORE UPDATE OF b ON gtest26 FOR EACH ROW EXECUTE PROCEDURE gtest_trigger_func3(); UPDATE gtest26 SET a = 1 WHERE a = 0; DROP TRIGGER gtest11 ON gtest26; TRUNCATE gtest26; -- check that modifications of stored generated columns in triggers do -- not get propagated CREATE FUNCTION gtest_trigger_func4() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN NEW.a = 10; NEW.b = 300; RETURN NEW; END; $$; CREATE TRIGGER gtest12_01 BEFORE UPDATE ON gtest26 FOR EACH ROW EXECUTE PROCEDURE gtest_trigger_func(); CREATE TRIGGER gtest12_02 BEFORE UPDATE ON gtest26 FOR EACH ROW EXECUTE PROCEDURE gtest_trigger_func4(); CREATE TRIGGER gtest12_03 BEFORE UPDATE ON gtest26 FOR EACH ROW EXECUTE PROCEDURE gtest_trigger_func(); INSERT INTO gtest26 (a) VALUES (1); UPDATE gtest26 SET a = 11 WHERE a = 1; SELECT * FROM gtest26 ORDER BY a; -- LIKE INCLUDING GENERATED and dropped column handling CREATE TABLE gtest28a ( a int, b int, c int, x int GENERATED ALWAYS AS (b * 2) STORED ); ALTER TABLE gtest28a DROP COLUMN a; CREATE TABLE gtest28b (LIKE gtest28a INCLUDING GENERATED); \d gtest28* libpg_query-13-2.1.0/test/sql/postgres_regress/geometry.sql000066400000000000000000000337431413137616400240270ustar00rootroot00000000000000-- -- GEOMETRY -- -- Back off displayed precision a little bit to reduce platform-to-platform -- variation in results. SET extra_float_digits TO -3; -- -- Points -- SELECT '' AS four, center(f1) AS center FROM BOX_TBL; SELECT '' AS four, (@@ f1) AS center FROM BOX_TBL; SELECT '' AS six, point(f1) AS center FROM CIRCLE_TBL; SELECT '' AS six, (@@ f1) AS center FROM CIRCLE_TBL; SELECT '' AS two, (@@ f1) AS center FROM POLYGON_TBL WHERE (# f1) > 2; -- "is horizontal" function SELECT '' AS two, p1.f1 FROM POINT_TBL p1 WHERE ishorizontal(p1.f1, point '(0,0)'); -- "is horizontal" operator SELECT '' AS two, p1.f1 FROM POINT_TBL p1 WHERE p1.f1 ?- point '(0,0)'; -- "is vertical" function SELECT '' AS one, p1.f1 FROM POINT_TBL p1 WHERE isvertical(p1.f1, point '(5.1,34.5)'); -- "is vertical" operator SELECT '' AS one, p1.f1 FROM POINT_TBL p1 WHERE p1.f1 ?| point '(5.1,34.5)'; -- Slope SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2; -- Add point SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2; -- Subtract point SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2; -- Multiply with point SELECT p1.f1, p2.f1, p1.f1 * p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1[0] BETWEEN 1 AND 1000; -- Underflow error SELECT p1.f1, p2.f1, p1.f1 * p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1[0] < 1; -- Divide by point SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1[0] BETWEEN 1 AND 1000; -- Overflow error SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1[0] > 1000; -- Division by 0 error SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1 ~= '(0,0)'::point; -- Distance to line SELECT p.f1, l.s, p.f1 <-> l.s AS dist_pl, l.s <-> p.f1 AS dist_lp FROM POINT_TBL p, LINE_TBL l; -- Distance to line segment SELECT p.f1, l.s, p.f1 <-> l.s AS dist_ps, l.s <-> p.f1 AS dist_sp FROM POINT_TBL p, LSEG_TBL l; -- Distance to box SELECT p.f1, b.f1, p.f1 <-> b.f1 AS dist_pb, b.f1 <-> p.f1 AS dist_bp FROM POINT_TBL p, BOX_TBL b; -- Distance to path SELECT p.f1, p1.f1, p.f1 <-> p1.f1 AS dist_ppath, p1.f1 <-> p.f1 AS dist_pathp FROM POINT_TBL p, PATH_TBL p1; -- Distance to polygon SELECT p.f1, p1.f1, p.f1 <-> p1.f1 AS dist_ppoly, p1.f1 <-> p.f1 AS dist_polyp FROM POINT_TBL p, POLYGON_TBL p1; -- Closest point to line SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LINE_TBL l; -- Closest point to line segment SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LSEG_TBL l; -- Closest point to box SELECT p.f1, b.f1, p.f1 ## b.f1 FROM POINT_TBL p, BOX_TBL b; -- On line SELECT p.f1, l.s FROM POINT_TBL p, LINE_TBL l WHERE p.f1 <@ l.s; -- On line segment SELECT p.f1, l.s FROM POINT_TBL p, LSEG_TBL l WHERE p.f1 <@ l.s; -- On path SELECT p.f1, p1.f1 FROM POINT_TBL p, PATH_TBL p1 WHERE p.f1 <@ p1.f1; -- -- Lines -- -- Vertical SELECT s FROM LINE_TBL WHERE ?| s; -- Horizontal SELECT s FROM LINE_TBL WHERE ?- s; -- Same as line SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s = l2.s; -- Parallel to line SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s ?|| l2.s; -- Perpendicular to line SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s ?-| l2.s; -- Distance to line SELECT l1.s, l2.s, l1.s <-> l2.s FROM LINE_TBL l1, LINE_TBL l2; -- Distance to box SELECT l.s, b.f1, l.s <-> b.f1 FROM LINE_TBL l, BOX_TBL b; SELECT l.s, b.f1, b.f1 <-> l.s FROM LINE_TBL l, BOX_TBL b; -- Intersect with line SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s ?# l2.s; -- Intersect with box SELECT l.s, b.f1 FROM LINE_TBL l, BOX_TBL b WHERE l.s ?# b.f1; -- Intersection point with line SELECT l1.s, l2.s, l1.s # l2.s FROM LINE_TBL l1, LINE_TBL l2; -- Closest point to line segment SELECT l.s, l1.s, l.s ## l1.s FROM LINE_TBL l, LSEG_TBL l1; -- Closest point to box SELECT l.s, b.f1, l.s ## b.f1 FROM LINE_TBL l, BOX_TBL b; -- -- Line segments -- -- intersection SELECT '' AS count, p.f1, l.s, l.s # p.f1 AS intersection FROM LSEG_TBL l, POINT_TBL p; -- Length SELECT s, @-@ s FROM LSEG_TBL; -- Vertical SELECT s FROM LSEG_TBL WHERE ?| s; -- Horizontal SELECT s FROM LSEG_TBL WHERE ?- s; -- Center SELECT s, @@ s FROM LSEG_TBL; -- To point SELECT s, s::point FROM LSEG_TBL; -- Has points less than line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s < l2.s; -- Has points less than or equal to line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s <= l2.s; -- Has points equal to line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s = l2.s; -- Has points greater than or equal to line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s >= l2.s; -- Has points greater than line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s > l2.s; -- Has points not equal to line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s != l2.s; -- Parallel with line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s ?|| l2.s; -- Perpendicular with line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s ?-| l2.s; -- Distance to line SELECT l.s, l1.s, l.s <-> l1.s AS dist_sl, l1.s <-> l.s AS dist_ls FROM LSEG_TBL l, LINE_TBL l1; -- Distance to line segment SELECT l1.s, l2.s, l1.s <-> l2.s FROM LSEG_TBL l1, LSEG_TBL l2; -- Distance to box SELECT l.s, b.f1, l.s <-> b.f1 AS dist_sb, b.f1 <-> l.s AS dist_bs FROM LSEG_TBL l, BOX_TBL b; -- Intersect with line segment SELECT l.s, l1.s FROM LSEG_TBL l, LINE_TBL l1 WHERE l.s ?# l1.s; -- Intersect with box SELECT l.s, b.f1 FROM LSEG_TBL l, BOX_TBL b WHERE l.s ?# b.f1; -- Intersection point with line segment SELECT l1.s, l2.s, l1.s # l2.s FROM LSEG_TBL l1, LSEG_TBL l2; -- Closest point to line SELECT l.s, l1.s, l.s ## l1.s FROM LSEG_TBL l, LINE_TBL l1; -- Closest point to line segment SELECT l1.s, l2.s, l1.s ## l2.s FROM LSEG_TBL l1, LSEG_TBL l2; -- Closest point to box SELECT l.s, b.f1, l.s ## b.f1 FROM LSEG_TBL l, BOX_TBL b; -- On line SELECT l.s, l1.s FROM LSEG_TBL l, LINE_TBL l1 WHERE l.s <@ l1.s; -- On box SELECT l.s, b.f1 FROM LSEG_TBL l, BOX_TBL b WHERE l.s <@ b.f1; -- -- Boxes -- SELECT '' as six, box(f1) AS box FROM CIRCLE_TBL; -- translation SELECT '' AS twentyfour, b.f1 + p.f1 AS translation FROM BOX_TBL b, POINT_TBL p; SELECT '' AS twentyfour, b.f1 - p.f1 AS translation FROM BOX_TBL b, POINT_TBL p; -- Multiply with point SELECT b.f1, p.f1, b.f1 * p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000; -- Overflow error SELECT b.f1, p.f1, b.f1 * p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] > 1000; -- Divide by point SELECT b.f1, p.f1, b.f1 / p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000; -- To box SELECT f1::box FROM POINT_TBL; SELECT bound_box(a.f1, b.f1) FROM BOX_TBL a, BOX_TBL b; -- Below box SELECT b1.f1, b2.f1, b1.f1 <^ b2.f1 FROM BOX_TBL b1, BOX_TBL b2; -- Above box SELECT b1.f1, b2.f1, b1.f1 >^ b2.f1 FROM BOX_TBL b1, BOX_TBL b2; -- Intersection point with box SELECT b1.f1, b2.f1, b1.f1 # b2.f1 FROM BOX_TBL b1, BOX_TBL b2; -- Diagonal SELECT f1, diagonal(f1) FROM BOX_TBL; -- Distance to box SELECT b1.f1, b2.f1, b1.f1 <-> b2.f1 FROM BOX_TBL b1, BOX_TBL b2; -- -- Paths -- -- Points SELECT f1, npoints(f1) FROM PATH_TBL; -- Area SELECT f1, area(f1) FROM PATH_TBL; -- Length SELECT f1, @-@ f1 FROM PATH_TBL; -- Center SELECT f1, @@ f1 FROM PATH_TBL; -- To polygon SELECT f1, f1::polygon FROM PATH_TBL WHERE isclosed(f1); -- Open path cannot be converted to polygon error SELECT f1, f1::polygon FROM PATH_TBL WHERE isopen(f1); -- Has points less than path SELECT p1.f1, p2.f1 FROM PATH_TBL p1, PATH_TBL p2 WHERE p1.f1 < p2.f1; -- Has points less than or equal to path SELECT p1.f1, p2.f1 FROM PATH_TBL p1, PATH_TBL p2 WHERE p1.f1 <= p2.f1; -- Has points equal to path SELECT p1.f1, p2.f1 FROM PATH_TBL p1, PATH_TBL p2 WHERE p1.f1 = p2.f1; -- Has points greater than or equal to path SELECT p1.f1, p2.f1 FROM PATH_TBL p1, PATH_TBL p2 WHERE p1.f1 >= p2.f1; -- Has points greater than path SELECT p1.f1, p2.f1 FROM PATH_TBL p1, PATH_TBL p2 WHERE p1.f1 > p2.f1; -- Add path SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM PATH_TBL p1, PATH_TBL p2; -- Add point SELECT p.f1, p1.f1, p.f1 + p1.f1 FROM PATH_TBL p, POINT_TBL p1; -- Subtract point SELECT p.f1, p1.f1, p.f1 - p1.f1 FROM PATH_TBL p, POINT_TBL p1; -- Multiply with point SELECT p.f1, p1.f1, p.f1 * p1.f1 FROM PATH_TBL p, POINT_TBL p1; -- Divide by point SELECT p.f1, p1.f1, p.f1 / p1.f1 FROM PATH_TBL p, POINT_TBL p1 WHERE p1.f1[0] BETWEEN 1 AND 1000; -- Division by 0 error SELECT p.f1, p1.f1, p.f1 / p1.f1 FROM PATH_TBL p, POINT_TBL p1 WHERE p1.f1 ~= '(0,0)'::point; -- Distance to path SELECT p1.f1, p2.f1, p1.f1 <-> p2.f1 FROM PATH_TBL p1, PATH_TBL p2; -- -- Polygons -- -- containment SELECT '' AS twentyfour, p.f1, poly.f1, poly.f1 @> p.f1 AS contains FROM POLYGON_TBL poly, POINT_TBL p; SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 <@ poly.f1 AS contained FROM POLYGON_TBL poly, POINT_TBL p; SELECT '' AS four, npoints(f1) AS npoints, f1 AS polygon FROM POLYGON_TBL; SELECT '' AS four, polygon(f1) FROM BOX_TBL; SELECT '' AS four, polygon(f1) FROM PATH_TBL WHERE isclosed(f1); SELECT '' AS four, f1 AS open_path, polygon( pclose(f1)) AS polygon FROM PATH_TBL WHERE isopen(f1); -- To box SELECT f1, f1::box FROM POLYGON_TBL; -- To path SELECT f1, f1::path FROM POLYGON_TBL; -- Same as polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 ~= p2.f1; -- Contained by polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 <@ p2.f1; -- Contains polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 @> p2.f1; -- Overlap with polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 && p2.f1; -- Left of polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 << p2.f1; -- Overlap of left of polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 &< p2.f1; -- Right of polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 >> p2.f1; -- Overlap of right of polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 &> p2.f1; -- Below polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 <<| p2.f1; -- Overlap or below polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 &<| p2.f1; -- Above polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 |>> p2.f1; -- Overlap or above polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 |&> p2.f1; -- Distance to polygon SELECT p1.f1, p2.f1, p1.f1 <-> p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2; -- -- Circles -- SELECT '' AS six, circle(f1, 50.0) FROM POINT_TBL; SELECT '' AS four, circle(f1) FROM BOX_TBL; SELECT '' AS two, circle(f1) FROM POLYGON_TBL WHERE (# f1) >= 3; SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance FROM CIRCLE_TBL c1, POINT_TBL p1 WHERE (p1.f1 <-> c1.f1) > 0 ORDER BY distance, area(c1.f1), p1.f1[0]; -- To polygon SELECT f1, f1::polygon FROM CIRCLE_TBL WHERE f1 >= '<(0,0),1>'; -- To polygon with less points SELECT f1, polygon(8, f1) FROM CIRCLE_TBL WHERE f1 >= '<(0,0),1>'; -- Too less points error SELECT f1, polygon(1, f1) FROM CIRCLE_TBL WHERE f1 >= '<(0,0),1>'; -- Zero radius error SELECT f1, polygon(10, f1) FROM CIRCLE_TBL WHERE f1 < '<(0,0),1>'; -- Same as circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 ~= c2.f1; -- Overlap with circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 && c2.f1; -- Overlap or left of circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 &< c2.f1; -- Left of circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 << c2.f1; -- Right of circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 >> c2.f1; -- Overlap or right of circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 &> c2.f1; -- Contained by circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 <@ c2.f1; -- Contain by circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 @> c2.f1; -- Below circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 <<| c2.f1; -- Above circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 |>> c2.f1; -- Overlap or below circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 &<| c2.f1; -- Overlap or above circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 |&> c2.f1; -- Area equal with circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 = c2.f1; -- Area not equal with circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 != c2.f1; -- Area less than circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 < c2.f1; -- Area greater than circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 > c2.f1; -- Area less than or equal circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 <= c2.f1; -- Area greater than or equal circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 >= c2.f1; -- Area less than circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 < c2.f1; -- Area greater than circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 < c2.f1; -- Add point SELECT c.f1, p.f1, c.f1 + p.f1 FROM CIRCLE_TBL c, POINT_TBL p; -- Subtract point SELECT c.f1, p.f1, c.f1 - p.f1 FROM CIRCLE_TBL c, POINT_TBL p; -- Multiply with point SELECT c.f1, p.f1, c.f1 * p.f1 FROM CIRCLE_TBL c, POINT_TBL p; -- Divide by point SELECT c.f1, p.f1, c.f1 / p.f1 FROM CIRCLE_TBL c, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000; -- Overflow error SELECT c.f1, p.f1, c.f1 / p.f1 FROM CIRCLE_TBL c, POINT_TBL p WHERE p.f1[0] > 1000; -- Division by 0 error SELECT c.f1, p.f1, c.f1 / p.f1 FROM CIRCLE_TBL c, POINT_TBL p WHERE p.f1 ~= '(0,0)'::point; -- Distance to polygon SELECT c.f1, p.f1, c.f1 <-> p.f1 FROM CIRCLE_TBL c, POLYGON_TBL p; libpg_query-13-2.1.0/test/sql/postgres_regress/gin.sql000066400000000000000000000117241413137616400227440ustar00rootroot00000000000000-- -- Test GIN indexes. -- -- There are other tests to test different GIN opclasses. This is for testing -- GIN itself. -- Create and populate a test table with a GIN index. create table gin_test_tbl(i int4[]) with (autovacuum_enabled = off); create index gin_test_idx on gin_test_tbl using gin (i) with (fastupdate = on, gin_pending_list_limit = 4096); insert into gin_test_tbl select array[1, 2, g] from generate_series(1, 20000) g; insert into gin_test_tbl select array[1, 3, g] from generate_series(1, 1000) g; select gin_clean_pending_list('gin_test_idx')>10 as many; -- flush the fastupdate buffers insert into gin_test_tbl select array[3, 1, g] from generate_series(1, 1000) g; vacuum gin_test_tbl; -- flush the fastupdate buffers select gin_clean_pending_list('gin_test_idx'); -- nothing to flush -- Test vacuuming delete from gin_test_tbl where i @> array[2]; vacuum gin_test_tbl; -- Disable fastupdate, and do more insertions. With fastupdate enabled, most -- insertions (by flushing the list pages) cause page splits. Without -- fastupdate, we get more churn in the GIN data leaf pages, and exercise the -- recompression codepaths. alter index gin_test_idx set (fastupdate = off); insert into gin_test_tbl select array[1, 2, g] from generate_series(1, 1000) g; insert into gin_test_tbl select array[1, 3, g] from generate_series(1, 1000) g; delete from gin_test_tbl where i @> array[2]; vacuum gin_test_tbl; -- Test for "rare && frequent" searches explain (costs off) select count(*) from gin_test_tbl where i @> array[1, 999]; select count(*) from gin_test_tbl where i @> array[1, 999]; -- Very weak test for gin_fuzzy_search_limit set gin_fuzzy_search_limit = 1000; explain (costs off) select count(*) > 0 as ok from gin_test_tbl where i @> array[1]; select count(*) > 0 as ok from gin_test_tbl where i @> array[1]; reset gin_fuzzy_search_limit; -- Test optimization of empty queries create temp table t_gin_test_tbl(i int4[], j int4[]); create index on t_gin_test_tbl using gin (i, j); insert into t_gin_test_tbl values (null, null), ('{}', null), ('{1}', null), ('{1,2}', null), (null, '{}'), (null, '{10}'), ('{1,2}', '{10}'), ('{2}', '{10}'), ('{1,3}', '{}'), ('{1,1}', '{10}'); set enable_seqscan = off; explain (costs off) select * from t_gin_test_tbl where array[0] <@ i; select * from t_gin_test_tbl where array[0] <@ i; select * from t_gin_test_tbl where array[0] <@ i and '{}'::int4[] <@ j; explain (costs off) select * from t_gin_test_tbl where i @> '{}'; select * from t_gin_test_tbl where i @> '{}'; create function explain_query_json(query_sql text) returns table (explain_line json) language plpgsql as $$ begin set enable_seqscan = off; set enable_bitmapscan = on; return query execute 'EXPLAIN (ANALYZE, FORMAT json) ' || query_sql; end; $$; create function execute_text_query_index(query_sql text) returns setof text language plpgsql as $$ begin set enable_seqscan = off; set enable_bitmapscan = on; return query execute query_sql; end; $$; create function execute_text_query_heap(query_sql text) returns setof text language plpgsql as $$ begin set enable_seqscan = on; set enable_bitmapscan = off; return query execute query_sql; end; $$; -- check number of rows returned by index and removed by recheck select query, js->0->'Plan'->'Plans'->0->'Actual Rows' as "return by index", js->0->'Plan'->'Rows Removed by Index Recheck' as "removed by recheck", (res_index = res_heap) as "match" from (values ($$ i @> '{}' $$), ($$ j @> '{}' $$), ($$ i @> '{}' and j @> '{}' $$), ($$ i @> '{1}' $$), ($$ i @> '{1}' and j @> '{}' $$), ($$ i @> '{1}' and i @> '{}' and j @> '{}' $$), ($$ j @> '{10}' $$), ($$ j @> '{10}' and i @> '{}' $$), ($$ j @> '{10}' and j @> '{}' and i @> '{}' $$), ($$ i @> '{1}' and j @> '{10}' $$) ) q(query), lateral explain_query_json($$select * from t_gin_test_tbl where $$ || query) js, lateral execute_text_query_index($$select string_agg((i, j)::text, ' ') from t_gin_test_tbl where $$ || query) res_index, lateral execute_text_query_heap($$select string_agg((i, j)::text, ' ') from t_gin_test_tbl where $$ || query) res_heap; reset enable_seqscan; reset enable_bitmapscan; -- re-purpose t_gin_test_tbl to test scans involving posting trees insert into t_gin_test_tbl select array[1, g, g/10], array[2, g, g/10] from generate_series(1, 20000) g; select gin_clean_pending_list('t_gin_test_tbl_i_j_idx') is not null; analyze t_gin_test_tbl; set enable_seqscan = off; set enable_bitmapscan = on; explain (costs off) select count(*) from t_gin_test_tbl where j @> array[50]; select count(*) from t_gin_test_tbl where j @> array[50]; explain (costs off) select count(*) from t_gin_test_tbl where j @> array[2]; select count(*) from t_gin_test_tbl where j @> array[2]; explain (costs off) select count(*) from t_gin_test_tbl where j @> '{}'::int[]; select count(*) from t_gin_test_tbl where j @> '{}'::int[]; reset enable_seqscan; reset enable_bitmapscan; drop table t_gin_test_tbl; libpg_query-13-2.1.0/test/sql/postgres_regress/gist.sql000066400000000000000000000114331413137616400231320ustar00rootroot00000000000000-- -- Test GiST indexes. -- -- There are other tests to test different GiST opclasses. This is for -- testing GiST code itself. Vacuuming in particular. create table gist_point_tbl(id int4, p point); create index gist_pointidx on gist_point_tbl using gist(p); -- Verify the fillfactor and buffering options create index gist_pointidx2 on gist_point_tbl using gist(p) with (buffering = on, fillfactor=50); create index gist_pointidx3 on gist_point_tbl using gist(p) with (buffering = off); create index gist_pointidx4 on gist_point_tbl using gist(p) with (buffering = auto); drop index gist_pointidx2, gist_pointidx3, gist_pointidx4; -- Make sure bad values are refused create index gist_pointidx5 on gist_point_tbl using gist(p) with (buffering = invalid_value); create index gist_pointidx5 on gist_point_tbl using gist(p) with (fillfactor=9); create index gist_pointidx5 on gist_point_tbl using gist(p) with (fillfactor=101); -- Insert enough data to create a tree that's a couple of levels deep. insert into gist_point_tbl (id, p) select g, point(g*10, g*10) from generate_series(1, 10000) g; insert into gist_point_tbl (id, p) select g+100000, point(g*10+1, g*10+1) from generate_series(1, 10000) g; -- To test vacuum, delete some entries from all over the index. delete from gist_point_tbl where id % 2 = 1; -- And also delete some concentration of values. delete from gist_point_tbl where id > 5000; vacuum analyze gist_point_tbl; -- rebuild the index with a different fillfactor alter index gist_pointidx SET (fillfactor = 40); reindex index gist_pointidx; -- -- Test Index-only plans on GiST indexes -- create table gist_tbl (b box, p point, c circle); insert into gist_tbl select box(point(0.05*i, 0.05*i), point(0.05*i, 0.05*i)), point(0.05*i, 0.05*i), circle(point(0.05*i, 0.05*i), 1.0) from generate_series(0,10000) as i; vacuum analyze gist_tbl; set enable_seqscan=off; set enable_bitmapscan=off; set enable_indexonlyscan=on; -- Test index-only scan with point opclass create index gist_tbl_point_index on gist_tbl using gist (p); -- check that the planner chooses an index-only scan explain (costs off) select p from gist_tbl where p <@ box(point(0,0), point(0.5, 0.5)); -- execute the same select p from gist_tbl where p <@ box(point(0,0), point(0.5, 0.5)); -- Also test an index-only knn-search explain (costs off) select p from gist_tbl where p <@ box(point(0,0), point(0.5, 0.5)) order by p <-> point(0.201, 0.201); select p from gist_tbl where p <@ box(point(0,0), point(0.5, 0.5)) order by p <-> point(0.201, 0.201); -- Check commuted case as well explain (costs off) select p from gist_tbl where p <@ box(point(0,0), point(0.5, 0.5)) order by point(0.101, 0.101) <-> p; select p from gist_tbl where p <@ box(point(0,0), point(0.5, 0.5)) order by point(0.101, 0.101) <-> p; -- Check case with multiple rescans (bug #14641) explain (costs off) select p from (values (box(point(0,0), point(0.5,0.5))), (box(point(0.5,0.5), point(0.75,0.75))), (box(point(0.8,0.8), point(1.0,1.0)))) as v(bb) cross join lateral (select p from gist_tbl where p <@ bb order by p <-> bb[0] limit 2) ss; select p from (values (box(point(0,0), point(0.5,0.5))), (box(point(0.5,0.5), point(0.75,0.75))), (box(point(0.8,0.8), point(1.0,1.0)))) as v(bb) cross join lateral (select p from gist_tbl where p <@ bb order by p <-> bb[0] limit 2) ss; drop index gist_tbl_point_index; -- Test index-only scan with box opclass create index gist_tbl_box_index on gist_tbl using gist (b); -- check that the planner chooses an index-only scan explain (costs off) select b from gist_tbl where b <@ box(point(5,5), point(6,6)); -- execute the same select b from gist_tbl where b <@ box(point(5,5), point(6,6)); -- Also test an index-only knn-search explain (costs off) select b from gist_tbl where b <@ box(point(5,5), point(6,6)) order by b <-> point(5.2, 5.91); select b from gist_tbl where b <@ box(point(5,5), point(6,6)) order by b <-> point(5.2, 5.91); -- Check commuted case as well explain (costs off) select b from gist_tbl where b <@ box(point(5,5), point(6,6)) order by point(5.2, 5.91) <-> b; select b from gist_tbl where b <@ box(point(5,5), point(6,6)) order by point(5.2, 5.91) <-> b; drop index gist_tbl_box_index; -- Test that an index-only scan is not chosen, when the query involves the -- circle column (the circle opclass does not support index-only scans). create index gist_tbl_multi_index on gist_tbl using gist (p, c); explain (costs off) select p, c from gist_tbl where p <@ box(point(5,5), point(6, 6)); -- execute the same select b, p from gist_tbl where b <@ box(point(4.5, 4.5), point(5.5, 5.5)) and p <@ box(point(5,5), point(6, 6)); drop index gist_tbl_multi_index; -- Clean up reset enable_seqscan; reset enable_bitmapscan; reset enable_indexonlyscan; drop table gist_tbl; libpg_query-13-2.1.0/test/sql/postgres_regress/groupingsets.sql000066400000000000000000000461261413137616400247240ustar00rootroot00000000000000-- -- grouping sets -- -- test data sources create temp view gstest1(a,b,v) as values (1,1,10),(1,1,11),(1,2,12),(1,2,13),(1,3,14), (2,3,15), (3,3,16),(3,4,17), (4,1,18),(4,1,19); create temp table gstest2 (a integer, b integer, c integer, d integer, e integer, f integer, g integer, h integer); copy gstest2 from stdin; 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 2 1 1 1 1 1 2 2 2 1 1 1 1 2 2 2 2 1 1 1 2 2 2 2 2 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 \. create temp table gstest3 (a integer, b integer, c integer, d integer); copy gstest3 from stdin; 1 1 1 1 2 2 2 2 \. alter table gstest3 add primary key (a); create temp table gstest4(id integer, v integer, unhashable_col bit(4), unsortable_col xid); insert into gstest4 values (1,1,b'0000','1'), (2,2,b'0001','1'), (3,4,b'0010','2'), (4,8,b'0011','2'), (5,16,b'0000','2'), (6,32,b'0001','2'), (7,64,b'0010','1'), (8,128,b'0011','1'); create temp table gstest_empty (a integer, b integer, v integer); create function gstest_data(v integer, out a integer, out b integer) returns setof record as $f$ begin return query select v, i from generate_series(1,3) i; end; $f$ language plpgsql; -- basic functionality set enable_hashagg = false; -- test hashing explicitly later -- simple rollup with multiple plain aggregates, with and without ordering -- (and with ordering differing from grouping) select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by rollup (a,b); select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by rollup (a,b) order by a,b; select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by rollup (a,b) order by b desc, a; select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by rollup (a,b) order by coalesce(a,0)+coalesce(b,0); -- various types of ordered aggs select a, b, grouping(a,b), array_agg(v order by v), string_agg(v::text, ':' order by v desc), percentile_disc(0.5) within group (order by v), rank(1,2,12) within group (order by a,b,v) from gstest1 group by rollup (a,b) order by a,b; -- test usage of grouped columns in direct args of aggs select grouping(a), a, array_agg(b), rank(a) within group (order by b nulls first), rank(a) within group (order by b nulls last) from (values (1,1),(1,4),(1,5),(3,1),(3,2)) v(a,b) group by rollup (a) order by a; -- nesting with window functions select a, b, sum(c), sum(sum(c)) over (order by a,b) as rsum from gstest2 group by rollup (a,b) order by rsum, a, b; -- nesting with grouping sets select sum(c) from gstest2 group by grouping sets((), grouping sets((), grouping sets(()))) order by 1 desc; select sum(c) from gstest2 group by grouping sets((), grouping sets((), grouping sets(((a, b))))) order by 1 desc; select sum(c) from gstest2 group by grouping sets(grouping sets(rollup(c), grouping sets(cube(c)))) order by 1 desc; select sum(c) from gstest2 group by grouping sets(a, grouping sets(a, cube(b))) order by 1 desc; select sum(c) from gstest2 group by grouping sets(grouping sets((a, (b)))) order by 1 desc; select sum(c) from gstest2 group by grouping sets(grouping sets((a, b))) order by 1 desc; select sum(c) from gstest2 group by grouping sets(grouping sets(a, grouping sets(a), a)) order by 1 desc; select sum(c) from gstest2 group by grouping sets(grouping sets(a, grouping sets(a, grouping sets(a), ((a)), a, grouping sets(a), (a)), a)) order by 1 desc; select sum(c) from gstest2 group by grouping sets((a,(a,b)), grouping sets((a,(a,b)),a)) order by 1 desc; -- empty input: first is 0 rows, second 1, third 3 etc. select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),a); select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),()); select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),(),(),()); select sum(v), count(*) from gstest_empty group by grouping sets ((),(),()); -- empty input with joins tests some important code paths select t1.a, t2.b, sum(t1.v), count(*) from gstest_empty t1, gstest_empty t2 group by grouping sets ((t1.a,t2.b),()); -- simple joins, var resolution, GROUPING on join vars select t1.a, t2.b, grouping(t1.a, t2.b), sum(t1.v), max(t2.a) from gstest1 t1, gstest2 t2 group by grouping sets ((t1.a, t2.b), ()); select t1.a, t2.b, grouping(t1.a, t2.b), sum(t1.v), max(t2.a) from gstest1 t1 join gstest2 t2 on (t1.a=t2.a) group by grouping sets ((t1.a, t2.b), ()); select a, b, grouping(a, b), sum(t1.v), max(t2.c) from gstest1 t1 join gstest2 t2 using (a,b) group by grouping sets ((a, b), ()); -- check that functionally dependent cols are not nulled select a, d, grouping(a,b,c) from gstest3 group by grouping sets ((a,b), (a,c)); -- check that distinct grouping columns are kept separate -- even if they are equal() explain (costs off) select g as alias1, g as alias2 from generate_series(1,3) g group by alias1, rollup(alias2); select g as alias1, g as alias2 from generate_series(1,3) g group by alias1, rollup(alias2); -- check that pulled-up subquery outputs still go to null when appropriate select four, x from (select four, ten, 'foo'::text as x from tenk1) as t group by grouping sets (four, x) having x = 'foo'; select four, x || 'x' from (select four, ten, 'foo'::text as x from tenk1) as t group by grouping sets (four, x) order by four; select (x+y)*1, sum(z) from (select 1 as x, 2 as y, 3 as z) s group by grouping sets (x+y, x); select x, not x as not_x, q2 from (select *, q1 = 1 as x from int8_tbl i1) as t group by grouping sets(x, q2) order by x, q2; -- check qual push-down rules for a subquery with grouping sets explain (verbose, costs off) select * from ( select 1 as x, q1, sum(q2) from int8_tbl i1 group by grouping sets(1, 2) ) ss where x = 1 and q1 = 123; select * from ( select 1 as x, q1, sum(q2) from int8_tbl i1 group by grouping sets(1, 2) ) ss where x = 1 and q1 = 123; -- simple rescan tests select a, b, sum(v.x) from (values (1),(2)) v(x), gstest_data(v.x) group by rollup (a,b); select * from (values (1),(2)) v(x), lateral (select a, b, sum(v.x) from gstest_data(v.x) group by rollup (a,b)) s; -- min max optimization should still work with GROUP BY () explain (costs off) select min(unique1) from tenk1 GROUP BY (); -- Views with GROUPING SET queries CREATE VIEW gstest_view AS select a, b, grouping(a,b), sum(c), count(*), max(c) from gstest2 group by rollup ((a,b,c),(c,d)); select pg_get_viewdef('gstest_view'::regclass, true); -- Nested queries with 3 or more levels of nesting select(select (select grouping(a,b) from (values (1)) v2(c)) from (values (1,2)) v1(a,b) group by (a,b)) from (values(6,7)) v3(e,f) GROUP BY ROLLUP(e,f); select(select (select grouping(e,f) from (values (1)) v2(c)) from (values (1,2)) v1(a,b) group by (a,b)) from (values(6,7)) v3(e,f) GROUP BY ROLLUP(e,f); select(select (select grouping(c) from (values (1)) v2(c) GROUP BY c) from (values (1,2)) v1(a,b) group by (a,b)) from (values(6,7)) v3(e,f) GROUP BY ROLLUP(e,f); -- Combinations of operations select a, b, c, d from gstest2 group by rollup(a,b),grouping sets(c,d); select a, b from (values (1,2),(2,3)) v(a,b) group by a,b, grouping sets(a); -- Tests for chained aggregates select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by grouping sets ((a,b),(a+1,b+1),(a+2,b+2)) order by 3,6; select(select (select grouping(a,b) from (values (1)) v2(c)) from (values (1,2)) v1(a,b) group by (a,b)) from (values(6,7)) v3(e,f) GROUP BY ROLLUP((e+1),(f+1)); select(select (select grouping(a,b) from (values (1)) v2(c)) from (values (1,2)) v1(a,b) group by (a,b)) from (values(6,7)) v3(e,f) GROUP BY CUBE((e+1),(f+1)) ORDER BY (e+1),(f+1); select a, b, sum(c), sum(sum(c)) over (order by a,b) as rsum from gstest2 group by cube (a,b) order by rsum, a, b; select a, b, sum(c) from (values (1,1,10),(1,1,11),(1,2,12),(1,2,13),(1,3,14),(2,3,15),(3,3,16),(3,4,17),(4,1,18),(4,1,19)) v(a,b,c) group by rollup (a,b); select a, b, sum(v.x) from (values (1),(2)) v(x), gstest_data(v.x) group by cube (a,b) order by a,b; -- Test reordering of grouping sets explain (costs off) select * from gstest1 group by grouping sets((a,b,v),(v)) order by v,b,a; -- Agg level check. This query should error out. select (select grouping(a,b) from gstest2) from gstest2 group by a,b; --Nested queries select a, b, sum(c), count(*) from gstest2 group by grouping sets (rollup(a,b),a); -- HAVING queries select ten, sum(distinct four) from onek a group by grouping sets((ten,four),(ten)) having exists (select 1 from onek b where sum(distinct a.four) = b.four); -- Tests around pushdown of HAVING clauses, partially testing against previous bugs select a,count(*) from gstest2 group by rollup(a) order by a; select a,count(*) from gstest2 group by rollup(a) having a is distinct from 1 order by a; explain (costs off) select a,count(*) from gstest2 group by rollup(a) having a is distinct from 1 order by a; select v.c, (select count(*) from gstest2 group by () having v.c) from (values (false),(true)) v(c) order by v.c; explain (costs off) select v.c, (select count(*) from gstest2 group by () having v.c) from (values (false),(true)) v(c) order by v.c; -- HAVING with GROUPING queries select ten, grouping(ten) from onek group by grouping sets(ten) having grouping(ten) >= 0 order by 2,1; select ten, grouping(ten) from onek group by grouping sets(ten, four) having grouping(ten) > 0 order by 2,1; select ten, grouping(ten) from onek group by rollup(ten) having grouping(ten) > 0 order by 2,1; select ten, grouping(ten) from onek group by cube(ten) having grouping(ten) > 0 order by 2,1; select ten, grouping(ten) from onek group by (ten) having grouping(ten) >= 0 order by 2,1; -- FILTER queries select ten, sum(distinct four) filter (where four::text ~ '123') from onek a group by rollup(ten); -- More rescan tests select * from (values (1),(2)) v(a) left join lateral (select v.a, four, ten, count(*) from onek group by cube(four,ten)) s on true order by v.a,four,ten; select array(select row(v.a,s1.*) from (select two,four, count(*) from onek group by cube(two,four) order by two,four) s1) from (values (1),(2)) v(a); -- Grouping on text columns select sum(ten) from onek group by two, rollup(four::text) order by 1; select sum(ten) from onek group by rollup(four::text), two order by 1; -- hashing support set enable_hashagg = true; -- failure cases select count(*) from gstest4 group by rollup(unhashable_col,unsortable_col); select array_agg(v order by v) from gstest4 group by grouping sets ((id,unsortable_col),(id)); -- simple cases select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by grouping sets ((a),(b)) order by 3,1,2; explain (costs off) select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by grouping sets ((a),(b)) order by 3,1,2; select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by cube(a,b) order by 3,1,2; explain (costs off) select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by cube(a,b) order by 3,1,2; -- shouldn't try and hash explain (costs off) select a, b, grouping(a,b), array_agg(v order by v) from gstest1 group by cube(a,b); -- unsortable cases select unsortable_col, count(*) from gstest4 group by grouping sets ((unsortable_col),(unsortable_col)) order by unsortable_col::text; -- mixed hashable/sortable cases select unhashable_col, unsortable_col, grouping(unhashable_col, unsortable_col), count(*), sum(v) from gstest4 group by grouping sets ((unhashable_col),(unsortable_col)) order by 3, 5; explain (costs off) select unhashable_col, unsortable_col, grouping(unhashable_col, unsortable_col), count(*), sum(v) from gstest4 group by grouping sets ((unhashable_col),(unsortable_col)) order by 3,5; select unhashable_col, unsortable_col, grouping(unhashable_col, unsortable_col), count(*), sum(v) from gstest4 group by grouping sets ((v,unhashable_col),(v,unsortable_col)) order by 3,5; explain (costs off) select unhashable_col, unsortable_col, grouping(unhashable_col, unsortable_col), count(*), sum(v) from gstest4 group by grouping sets ((v,unhashable_col),(v,unsortable_col)) order by 3,5; -- empty input: first is 0 rows, second 1, third 3 etc. select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),a); explain (costs off) select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),a); select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),()); select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),(),(),()); explain (costs off) select a, b, sum(v), count(*) from gstest_empty group by grouping sets ((a,b),(),(),()); select sum(v), count(*) from gstest_empty group by grouping sets ((),(),()); explain (costs off) select sum(v), count(*) from gstest_empty group by grouping sets ((),(),()); -- check that functionally dependent cols are not nulled select a, d, grouping(a,b,c) from gstest3 group by grouping sets ((a,b), (a,c)); explain (costs off) select a, d, grouping(a,b,c) from gstest3 group by grouping sets ((a,b), (a,c)); -- simple rescan tests select a, b, sum(v.x) from (values (1),(2)) v(x), gstest_data(v.x) group by grouping sets (a,b) order by 1, 2, 3; explain (costs off) select a, b, sum(v.x) from (values (1),(2)) v(x), gstest_data(v.x) group by grouping sets (a,b) order by 3, 1, 2; select * from (values (1),(2)) v(x), lateral (select a, b, sum(v.x) from gstest_data(v.x) group by grouping sets (a,b)) s; explain (costs off) select * from (values (1),(2)) v(x), lateral (select a, b, sum(v.x) from gstest_data(v.x) group by grouping sets (a,b)) s; -- Tests for chained aggregates select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by grouping sets ((a,b),(a+1,b+1),(a+2,b+2)) order by 3,6; explain (costs off) select a, b, grouping(a,b), sum(v), count(*), max(v) from gstest1 group by grouping sets ((a,b),(a+1,b+1),(a+2,b+2)) order by 3,6; select a, b, sum(c), sum(sum(c)) over (order by a,b) as rsum from gstest2 group by cube (a,b) order by rsum, a, b; explain (costs off) select a, b, sum(c), sum(sum(c)) over (order by a,b) as rsum from gstest2 group by cube (a,b) order by rsum, a, b; select a, b, sum(v.x) from (values (1),(2)) v(x), gstest_data(v.x) group by cube (a,b) order by a,b; explain (costs off) select a, b, sum(v.x) from (values (1),(2)) v(x), gstest_data(v.x) group by cube (a,b) order by a,b; -- Verify that we correctly handle the child node returning a -- non-minimal slot, which happens if the input is pre-sorted, -- e.g. due to an index scan. BEGIN; SET LOCAL enable_hashagg = false; EXPLAIN (COSTS OFF) SELECT a, b, count(*), max(a), max(b) FROM gstest3 GROUP BY GROUPING SETS(a, b,()) ORDER BY a, b; SELECT a, b, count(*), max(a), max(b) FROM gstest3 GROUP BY GROUPING SETS(a, b,()) ORDER BY a, b; SET LOCAL enable_seqscan = false; EXPLAIN (COSTS OFF) SELECT a, b, count(*), max(a), max(b) FROM gstest3 GROUP BY GROUPING SETS(a, b,()) ORDER BY a, b; SELECT a, b, count(*), max(a), max(b) FROM gstest3 GROUP BY GROUPING SETS(a, b,()) ORDER BY a, b; COMMIT; -- More rescan tests select * from (values (1),(2)) v(a) left join lateral (select v.a, four, ten, count(*) from onek group by cube(four,ten)) s on true order by v.a,four,ten; select array(select row(v.a,s1.*) from (select two,four, count(*) from onek group by cube(two,four) order by two,four) s1) from (values (1),(2)) v(a); -- Rescan logic changes when there are no empty grouping sets, so test -- that too: select * from (values (1),(2)) v(a) left join lateral (select v.a, four, ten, count(*) from onek group by grouping sets(four,ten)) s on true order by v.a,four,ten; select array(select row(v.a,s1.*) from (select two,four, count(*) from onek group by grouping sets(two,four) order by two,four) s1) from (values (1),(2)) v(a); -- test the knapsack set enable_indexscan = false; set work_mem = '64kB'; explain (costs off) select unique1, count(two), count(four), count(ten), count(hundred), count(thousand), count(twothousand), count(*) from tenk1 group by grouping sets (unique1,twothousand,thousand,hundred,ten,four,two); explain (costs off) select unique1, count(two), count(four), count(ten), count(hundred), count(thousand), count(twothousand), count(*) from tenk1 group by grouping sets (unique1,hundred,ten,four,two); set work_mem = '384kB'; explain (costs off) select unique1, count(two), count(four), count(ten), count(hundred), count(thousand), count(twothousand), count(*) from tenk1 group by grouping sets (unique1,twothousand,thousand,hundred,ten,four,two); -- check collation-sensitive matching between grouping expressions -- (similar to a check for aggregates, but there are additional code -- paths for GROUPING, so check again here) select v||'a', case grouping(v||'a') when 1 then 1 else 0 end, count(*) from unnest(array[1,1], array['a','b']) u(i,v) group by rollup(i, v||'a') order by 1,3; select v||'a', case when grouping(v||'a') = 1 then 1 else 0 end, count(*) from unnest(array[1,1], array['a','b']) u(i,v) group by rollup(i, v||'a') order by 1,3; -- Bug #16784 create table bug_16784(i int, j int); analyze bug_16784; alter table bug_16784 set (autovacuum_enabled = 'false'); update pg_class set reltuples = 10 where relname='bug_16784'; insert into bug_16784 select g/10, g from generate_series(1,40) g; set work_mem='64kB'; set enable_sort = false; select * from (values (1),(2)) v(a), lateral (select a, i, j, count(*) from bug_16784 group by cube(i,j)) s order by v.a, i, j; -- -- Compare results between plans using sorting and plans using hash -- aggregation. Force spilling in both cases by setting work_mem low -- and altering the statistics. -- create table gs_data_1 as select g%1000 as g1000, g%100 as g100, g%10 as g10, g from generate_series(0,1999) g; analyze gs_data_1; alter table gs_data_1 set (autovacuum_enabled = 'false'); update pg_class set reltuples = 10 where relname='gs_data_1'; set work_mem='64kB'; -- Produce results with sorting. set enable_sort = true; set enable_hashagg = false; set jit_above_cost = 0; explain (costs off) select g100, g10, sum(g::numeric), count(*), max(g::text) from gs_data_1 group by cube (g1000, g100,g10); create table gs_group_1 as select g100, g10, sum(g::numeric), count(*), max(g::text) from gs_data_1 group by cube (g1000, g100,g10); -- Produce results with hash aggregation. set enable_hashagg = true; set enable_sort = false; explain (costs off) select g100, g10, sum(g::numeric), count(*), max(g::text) from gs_data_1 group by cube (g1000, g100,g10); create table gs_hash_1 as select g100, g10, sum(g::numeric), count(*), max(g::text) from gs_data_1 group by cube (g1000, g100,g10); set enable_sort = true; set work_mem to default; -- Compare results (select * from gs_hash_1 except select * from gs_group_1) union all (select * from gs_group_1 except select * from gs_hash_1); drop table gs_group_1; drop table gs_hash_1; -- end libpg_query-13-2.1.0/test/sql/postgres_regress/guc.sql000066400000000000000000000171231413137616400227440ustar00rootroot00000000000000-- pg_regress should ensure that this default value applies; however -- we can't rely on any specific default value of vacuum_cost_delay SHOW datestyle; -- SET to some nondefault value SET vacuum_cost_delay TO 40; SET datestyle = 'ISO, YMD'; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; -- SET LOCAL has no effect outside of a transaction SET LOCAL vacuum_cost_delay TO 50; SHOW vacuum_cost_delay; SET LOCAL datestyle = 'SQL'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; -- SET LOCAL within a transaction that commits BEGIN; SET LOCAL vacuum_cost_delay TO 50; SHOW vacuum_cost_delay; SET LOCAL datestyle = 'SQL'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; COMMIT; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; -- SET should be reverted after ROLLBACK BEGIN; SET vacuum_cost_delay TO 60; SHOW vacuum_cost_delay; SET datestyle = 'German'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; ROLLBACK; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; -- Some tests with subtransactions BEGIN; SET vacuum_cost_delay TO 70; SET datestyle = 'MDY'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; SAVEPOINT first_sp; SET vacuum_cost_delay TO 80.1; SHOW vacuum_cost_delay; SET datestyle = 'German, DMY'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; ROLLBACK TO first_sp; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; SAVEPOINT second_sp; SET vacuum_cost_delay TO '900us'; SET datestyle = 'SQL, YMD'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; SAVEPOINT third_sp; SET vacuum_cost_delay TO 100; SHOW vacuum_cost_delay; SET datestyle = 'Postgres, MDY'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; ROLLBACK TO third_sp; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; ROLLBACK TO second_sp; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; ROLLBACK; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; -- SET LOCAL with Savepoints BEGIN; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; SAVEPOINT sp; SET LOCAL vacuum_cost_delay TO 30; SHOW vacuum_cost_delay; SET LOCAL datestyle = 'Postgres, MDY'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; ROLLBACK TO sp; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; ROLLBACK; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; -- SET LOCAL persists through RELEASE (which was not true in 8.0-8.2) BEGIN; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; SAVEPOINT sp; SET LOCAL vacuum_cost_delay TO 30; SHOW vacuum_cost_delay; SET LOCAL datestyle = 'Postgres, MDY'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; RELEASE SAVEPOINT sp; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; ROLLBACK; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; -- SET followed by SET LOCAL BEGIN; SET vacuum_cost_delay TO 40; SET LOCAL vacuum_cost_delay TO 50; SHOW vacuum_cost_delay; SET datestyle = 'ISO, DMY'; SET LOCAL datestyle = 'Postgres, MDY'; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; COMMIT; SHOW vacuum_cost_delay; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; -- -- Test RESET. We use datestyle because the reset value is forced by -- pg_regress, so it doesn't depend on the installation's configuration. -- SET datestyle = iso, ymd; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; RESET datestyle; SHOW datestyle; SELECT '2006-08-13 12:34:56'::timestamptz; -- Test some simple error cases SET seq_page_cost TO 'NaN'; SET vacuum_cost_delay TO '10s'; -- -- Test DISCARD TEMP -- CREATE TEMP TABLE reset_test ( data text ) ON COMMIT DELETE ROWS; SELECT relname FROM pg_class WHERE relname = 'reset_test'; DISCARD TEMP; SELECT relname FROM pg_class WHERE relname = 'reset_test'; -- -- Test DISCARD ALL -- -- do changes DECLARE foo CURSOR WITH HOLD FOR SELECT 1; PREPARE foo AS SELECT 1; LISTEN foo_event; SET vacuum_cost_delay = 13; CREATE TEMP TABLE tmp_foo (data text) ON COMMIT DELETE ROWS; CREATE ROLE regress_guc_user; SET SESSION AUTHORIZATION regress_guc_user; -- look changes SELECT pg_listening_channels(); SELECT name FROM pg_prepared_statements; SELECT name FROM pg_cursors; SHOW vacuum_cost_delay; SELECT relname from pg_class where relname = 'tmp_foo'; SELECT current_user = 'regress_guc_user'; -- discard everything DISCARD ALL; -- look again SELECT pg_listening_channels(); SELECT name FROM pg_prepared_statements; SELECT name FROM pg_cursors; SHOW vacuum_cost_delay; SELECT relname from pg_class where relname = 'tmp_foo'; SELECT current_user = 'regress_guc_user'; DROP ROLE regress_guc_user; -- -- search_path should react to changes in pg_namespace -- set search_path = foo, public, not_there_initially; select current_schemas(false); create schema not_there_initially; select current_schemas(false); drop schema not_there_initially; select current_schemas(false); reset search_path; -- -- Tests for function-local GUC settings -- set work_mem = '3MB'; create function report_guc(text) returns text as $$ select current_setting($1) $$ language sql set work_mem = '1MB'; select report_guc('work_mem'), current_setting('work_mem'); alter function report_guc(text) set work_mem = '2MB'; select report_guc('work_mem'), current_setting('work_mem'); alter function report_guc(text) reset all; select report_guc('work_mem'), current_setting('work_mem'); -- SET LOCAL is restricted by a function SET option create or replace function myfunc(int) returns text as $$ begin set local work_mem = '2MB'; return current_setting('work_mem'); end $$ language plpgsql set work_mem = '1MB'; select myfunc(0), current_setting('work_mem'); alter function myfunc(int) reset all; select myfunc(0), current_setting('work_mem'); set work_mem = '3MB'; -- but SET isn't create or replace function myfunc(int) returns text as $$ begin set work_mem = '2MB'; return current_setting('work_mem'); end $$ language plpgsql set work_mem = '1MB'; select myfunc(0), current_setting('work_mem'); set work_mem = '3MB'; -- it should roll back on error, though create or replace function myfunc(int) returns text as $$ begin set work_mem = '2MB'; perform 1/$1; return current_setting('work_mem'); end $$ language plpgsql set work_mem = '1MB'; select myfunc(0); select current_setting('work_mem'); select myfunc(1), current_setting('work_mem'); -- check current_setting()'s behavior with invalid setting name select current_setting('nosuch.setting'); -- FAIL select current_setting('nosuch.setting', false); -- FAIL select current_setting('nosuch.setting', true) is null; -- after this, all three cases should yield 'nada' set nosuch.setting = 'nada'; select current_setting('nosuch.setting'); select current_setting('nosuch.setting', false); select current_setting('nosuch.setting', true); -- Normally, CREATE FUNCTION should complain about invalid values in -- function SET options; but not if check_function_bodies is off, -- because that creates ordering hazards for pg_dump create function func_with_bad_set() returns int as $$ select 1 $$ language sql set default_text_search_config = no_such_config; set check_function_bodies = off; create function func_with_bad_set() returns int as $$ select 1 $$ language sql set default_text_search_config = no_such_config; select func_with_bad_set(); reset check_function_bodies; set default_with_oids to f; -- Should not allow to set it to true. set default_with_oids to t; libpg_query-13-2.1.0/test/sql/postgres_regress/hash_func.sql000066400000000000000000000261061413137616400241250ustar00rootroot00000000000000-- -- Test hash functions -- -- When the salt is 0, the extended hash function should produce a result -- whose low 32 bits match the standard hash function. When the salt is -- not 0, we should get a different result. -- SELECT v as value, hashint2(v)::bit(32) as standard, hashint2extended(v, 0)::bit(32) as extended0, hashint2extended(v, 1)::bit(32) as extended1 FROM (VALUES (0::int2), (1::int2), (17::int2), (42::int2)) x(v) WHERE hashint2(v)::bit(32) != hashint2extended(v, 0)::bit(32) OR hashint2(v)::bit(32) = hashint2extended(v, 1)::bit(32); SELECT v as value, hashint4(v)::bit(32) as standard, hashint4extended(v, 0)::bit(32) as extended0, hashint4extended(v, 1)::bit(32) as extended1 FROM (VALUES (0), (1), (17), (42), (550273), (207112489)) x(v) WHERE hashint4(v)::bit(32) != hashint4extended(v, 0)::bit(32) OR hashint4(v)::bit(32) = hashint4extended(v, 1)::bit(32); SELECT v as value, hashint8(v)::bit(32) as standard, hashint8extended(v, 0)::bit(32) as extended0, hashint8extended(v, 1)::bit(32) as extended1 FROM (VALUES (0), (1), (17), (42), (550273), (207112489)) x(v) WHERE hashint8(v)::bit(32) != hashint8extended(v, 0)::bit(32) OR hashint8(v)::bit(32) = hashint8extended(v, 1)::bit(32); SELECT v as value, hashfloat4(v)::bit(32) as standard, hashfloat4extended(v, 0)::bit(32) as extended0, hashfloat4extended(v, 1)::bit(32) as extended1 FROM (VALUES (0), (1), (17), (42), (550273), (207112489)) x(v) WHERE hashfloat4(v)::bit(32) != hashfloat4extended(v, 0)::bit(32) OR hashfloat4(v)::bit(32) = hashfloat4extended(v, 1)::bit(32); SELECT v as value, hashfloat8(v)::bit(32) as standard, hashfloat8extended(v, 0)::bit(32) as extended0, hashfloat8extended(v, 1)::bit(32) as extended1 FROM (VALUES (0), (1), (17), (42), (550273), (207112489)) x(v) WHERE hashfloat8(v)::bit(32) != hashfloat8extended(v, 0)::bit(32) OR hashfloat8(v)::bit(32) = hashfloat8extended(v, 1)::bit(32); SELECT v as value, hashoid(v)::bit(32) as standard, hashoidextended(v, 0)::bit(32) as extended0, hashoidextended(v, 1)::bit(32) as extended1 FROM (VALUES (0), (1), (17), (42), (550273), (207112489)) x(v) WHERE hashoid(v)::bit(32) != hashoidextended(v, 0)::bit(32) OR hashoid(v)::bit(32) = hashoidextended(v, 1)::bit(32); SELECT v as value, hashchar(v)::bit(32) as standard, hashcharextended(v, 0)::bit(32) as extended0, hashcharextended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::"char"), ('1'), ('x'), ('X'), ('p'), ('N')) x(v) WHERE hashchar(v)::bit(32) != hashcharextended(v, 0)::bit(32) OR hashchar(v)::bit(32) = hashcharextended(v, 1)::bit(32); SELECT v as value, hashname(v)::bit(32) as standard, hashnameextended(v, 0)::bit(32) as extended0, hashnameextended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL), ('PostgreSQL'), ('eIpUEtqmY89'), ('AXKEJBTK'), ('muop28x03'), ('yi3nm0d73')) x(v) WHERE hashname(v)::bit(32) != hashnameextended(v, 0)::bit(32) OR hashname(v)::bit(32) = hashnameextended(v, 1)::bit(32); SELECT v as value, hashtext(v)::bit(32) as standard, hashtextextended(v, 0)::bit(32) as extended0, hashtextextended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL), ('PostgreSQL'), ('eIpUEtqmY89'), ('AXKEJBTK'), ('muop28x03'), ('yi3nm0d73')) x(v) WHERE hashtext(v)::bit(32) != hashtextextended(v, 0)::bit(32) OR hashtext(v)::bit(32) = hashtextextended(v, 1)::bit(32); SELECT v as value, hashoidvector(v)::bit(32) as standard, hashoidvectorextended(v, 0)::bit(32) as extended0, hashoidvectorextended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::oidvector), ('0 1 2 3 4'), ('17 18 19 20'), ('42 43 42 45'), ('550273 550273 570274'), ('207112489 207112499 21512 2155 372325 1363252')) x(v) WHERE hashoidvector(v)::bit(32) != hashoidvectorextended(v, 0)::bit(32) OR hashoidvector(v)::bit(32) = hashoidvectorextended(v, 1)::bit(32); SELECT v as value, hash_aclitem(v)::bit(32) as standard, hash_aclitem_extended(v, 0)::bit(32) as extended0, hash_aclitem_extended(v, 1)::bit(32) as extended1 FROM (SELECT DISTINCT(relacl[1]) FROM pg_class LIMIT 10) x(v) WHERE hash_aclitem(v)::bit(32) != hash_aclitem_extended(v, 0)::bit(32) OR hash_aclitem(v)::bit(32) = hash_aclitem_extended(v, 1)::bit(32); SELECT v as value, hashmacaddr(v)::bit(32) as standard, hashmacaddrextended(v, 0)::bit(32) as extended0, hashmacaddrextended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::macaddr), ('08:00:2b:01:02:04'), ('08:00:2b:01:02:04'), ('e2:7f:51:3e:70:49'), ('d6:a9:4a:78:1c:d5'), ('ea:29:b1:5e:1f:a5')) x(v) WHERE hashmacaddr(v)::bit(32) != hashmacaddrextended(v, 0)::bit(32) OR hashmacaddr(v)::bit(32) = hashmacaddrextended(v, 1)::bit(32); SELECT v as value, hashinet(v)::bit(32) as standard, hashinetextended(v, 0)::bit(32) as extended0, hashinetextended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::inet), ('192.168.100.128/25'), ('192.168.100.0/8'), ('172.168.10.126/16'), ('172.18.103.126/24'), ('192.188.13.16/32')) x(v) WHERE hashinet(v)::bit(32) != hashinetextended(v, 0)::bit(32) OR hashinet(v)::bit(32) = hashinetextended(v, 1)::bit(32); SELECT v as value, hash_numeric(v)::bit(32) as standard, hash_numeric_extended(v, 0)::bit(32) as extended0, hash_numeric_extended(v, 1)::bit(32) as extended1 FROM (VALUES (0), (1.149484958), (17.149484958), (42.149484958), (149484958.550273), (2071124898672)) x(v) WHERE hash_numeric(v)::bit(32) != hash_numeric_extended(v, 0)::bit(32) OR hash_numeric(v)::bit(32) = hash_numeric_extended(v, 1)::bit(32); SELECT v as value, hashmacaddr8(v)::bit(32) as standard, hashmacaddr8extended(v, 0)::bit(32) as extended0, hashmacaddr8extended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::macaddr8), ('08:00:2b:01:02:04:36:49'), ('08:00:2b:01:02:04:f0:e8'), ('e2:7f:51:3e:70:49:16:29'), ('d6:a9:4a:78:1c:d5:47:32'), ('ea:29:b1:5e:1f:a5')) x(v) WHERE hashmacaddr8(v)::bit(32) != hashmacaddr8extended(v, 0)::bit(32) OR hashmacaddr8(v)::bit(32) = hashmacaddr8extended(v, 1)::bit(32); SELECT v as value, hash_array(v)::bit(32) as standard, hash_array_extended(v, 0)::bit(32) as extended0, hash_array_extended(v, 1)::bit(32) as extended1 FROM (VALUES ('{0}'::int4[]), ('{0,1,2,3,4}'), ('{17,18,19,20}'), ('{42,34,65,98}'), ('{550273,590027, 870273}'), ('{207112489, 807112489}')) x(v) WHERE hash_array(v)::bit(32) != hash_array_extended(v, 0)::bit(32) OR hash_array(v)::bit(32) = hash_array_extended(v, 1)::bit(32); SELECT v as value, hashbpchar(v)::bit(32) as standard, hashbpcharextended(v, 0)::bit(32) as extended0, hashbpcharextended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL), ('PostgreSQL'), ('eIpUEtqmY89'), ('AXKEJBTK'), ('muop28x03'), ('yi3nm0d73')) x(v) WHERE hashbpchar(v)::bit(32) != hashbpcharextended(v, 0)::bit(32) OR hashbpchar(v)::bit(32) = hashbpcharextended(v, 1)::bit(32); SELECT v as value, time_hash(v)::bit(32) as standard, time_hash_extended(v, 0)::bit(32) as extended0, time_hash_extended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::time), ('11:09:59'), ('1:09:59'), ('11:59:59'), ('7:9:59'), ('5:15:59')) x(v) WHERE time_hash(v)::bit(32) != time_hash_extended(v, 0)::bit(32) OR time_hash(v)::bit(32) = time_hash_extended(v, 1)::bit(32); SELECT v as value, timetz_hash(v)::bit(32) as standard, timetz_hash_extended(v, 0)::bit(32) as extended0, timetz_hash_extended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::timetz), ('00:11:52.518762-07'), ('00:11:52.51762-08'), ('00:11:52.62-01'), ('00:11:52.62+01'), ('11:59:59+04')) x(v) WHERE timetz_hash(v)::bit(32) != timetz_hash_extended(v, 0)::bit(32) OR timetz_hash(v)::bit(32) = timetz_hash_extended(v, 1)::bit(32); SELECT v as value, interval_hash(v)::bit(32) as standard, interval_hash_extended(v, 0)::bit(32) as extended0, interval_hash_extended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::interval), ('5 month 7 day 46 minutes'), ('1 year 7 day 46 minutes'), ('1 year 7 month 20 day 46 minutes'), ('5 month'), ('17 year 11 month 7 day 9 hours 46 minutes 5 seconds')) x(v) WHERE interval_hash(v)::bit(32) != interval_hash_extended(v, 0)::bit(32) OR interval_hash(v)::bit(32) = interval_hash_extended(v, 1)::bit(32); SELECT v as value, timestamp_hash(v)::bit(32) as standard, timestamp_hash_extended(v, 0)::bit(32) as extended0, timestamp_hash_extended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::timestamp), ('2017-08-22 00:09:59.518762'), ('2015-08-20 00:11:52.51762-08'), ('2017-05-22 00:11:52.62-01'), ('2013-08-22 00:11:52.62+01'), ('2013-08-22 11:59:59+04')) x(v) WHERE timestamp_hash(v)::bit(32) != timestamp_hash_extended(v, 0)::bit(32) OR timestamp_hash(v)::bit(32) = timestamp_hash_extended(v, 1)::bit(32); SELECT v as value, uuid_hash(v)::bit(32) as standard, uuid_hash_extended(v, 0)::bit(32) as extended0, uuid_hash_extended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::uuid), ('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'), ('5a9ba4ac-8d6f-11e7-bb31-be2e44b06b34'), ('99c6705c-d939-461c-a3c9-1690ad64ed7b'), ('7deed3ca-8d6f-11e7-bb31-be2e44b06b34'), ('9ad46d4f-6f2a-4edd-aadb-745993928e1e')) x(v) WHERE uuid_hash(v)::bit(32) != uuid_hash_extended(v, 0)::bit(32) OR uuid_hash(v)::bit(32) = uuid_hash_extended(v, 1)::bit(32); SELECT v as value, pg_lsn_hash(v)::bit(32) as standard, pg_lsn_hash_extended(v, 0)::bit(32) as extended0, pg_lsn_hash_extended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::pg_lsn), ('16/B374D84'), ('30/B374D84'), ('255/B374D84'), ('25/B379D90'), ('900/F37FD90')) x(v) WHERE pg_lsn_hash(v)::bit(32) != pg_lsn_hash_extended(v, 0)::bit(32) OR pg_lsn_hash(v)::bit(32) = pg_lsn_hash_extended(v, 1)::bit(32); CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy'); SELECT v as value, hashenum(v)::bit(32) as standard, hashenumextended(v, 0)::bit(32) as extended0, hashenumextended(v, 1)::bit(32) as extended1 FROM (VALUES ('sad'::mood), ('ok'), ('happy')) x(v) WHERE hashenum(v)::bit(32) != hashenumextended(v, 0)::bit(32) OR hashenum(v)::bit(32) = hashenumextended(v, 1)::bit(32); DROP TYPE mood; SELECT v as value, jsonb_hash(v)::bit(32) as standard, jsonb_hash_extended(v, 0)::bit(32) as extended0, jsonb_hash_extended(v, 1)::bit(32) as extended1 FROM (VALUES (NULL::jsonb), ('{"a": "aaa bbb ddd ccc", "b": ["eee fff ggg"], "c": {"d": "hhh iii"}}'), ('{"foo": [true, "bar"], "tags": {"e": 1, "f": null}}'), ('{"g": {"h": "value"}}')) x(v) WHERE jsonb_hash(v)::bit(32) != jsonb_hash_extended(v, 0)::bit(32) OR jsonb_hash(v)::bit(32) = jsonb_hash_extended(v, 1)::bit(32); SELECT v as value, hash_range(v)::bit(32) as standard, hash_range_extended(v, 0)::bit(32) as extended0, hash_range_extended(v, 1)::bit(32) as extended1 FROM (VALUES (int4range(10, 20)), (int4range(23, 43)), (int4range(5675, 550273)), (int4range(550274, 1550274)), (int4range(1550275, 208112489))) x(v) WHERE hash_range(v)::bit(32) != hash_range_extended(v, 0)::bit(32) OR hash_range(v)::bit(32) = hash_range_extended(v, 1)::bit(32); libpg_query-13-2.1.0/test/sql/postgres_regress/hash_index.sql000066400000000000000000000111671413137616400243020ustar00rootroot00000000000000-- -- HASH_INDEX -- grep 843938989 hash.data -- SELECT * FROM hash_i4_heap WHERE hash_i4_heap.random = 843938989; -- -- hash index -- grep 66766766 hash.data -- SELECT * FROM hash_i4_heap WHERE hash_i4_heap.random = 66766766; -- -- hash index -- grep 1505703298 hash.data -- SELECT * FROM hash_name_heap WHERE hash_name_heap.random = '1505703298'::name; -- -- hash index -- grep 7777777 hash.data -- SELECT * FROM hash_name_heap WHERE hash_name_heap.random = '7777777'::name; -- -- hash index -- grep 1351610853 hash.data -- SELECT * FROM hash_txt_heap WHERE hash_txt_heap.random = '1351610853'::text; -- -- hash index -- grep 111111112222222233333333 hash.data -- SELECT * FROM hash_txt_heap WHERE hash_txt_heap.random = '111111112222222233333333'::text; -- -- hash index -- grep 444705537 hash.data -- SELECT * FROM hash_f8_heap WHERE hash_f8_heap.random = '444705537'::float8; -- -- hash index -- grep 88888888 hash.data -- SELECT * FROM hash_f8_heap WHERE hash_f8_heap.random = '88888888'::float8; -- -- hash index -- grep '^90[^0-9]' hashovfl.data -- -- SELECT count(*) AS i988 FROM hash_ovfl_heap -- WHERE x = 90; -- -- hash index -- grep '^1000[^0-9]' hashovfl.data -- -- SELECT count(*) AS i0 FROM hash_ovfl_heap -- WHERE x = 1000; -- -- HASH -- UPDATE hash_i4_heap SET random = 1 WHERE hash_i4_heap.seqno = 1492; SELECT h.seqno AS i1492, h.random AS i1 FROM hash_i4_heap h WHERE h.random = 1; UPDATE hash_i4_heap SET seqno = 20000 WHERE hash_i4_heap.random = 1492795354; SELECT h.seqno AS i20000 FROM hash_i4_heap h WHERE h.random = 1492795354; UPDATE hash_name_heap SET random = '0123456789abcdef'::name WHERE hash_name_heap.seqno = 6543; SELECT h.seqno AS i6543, h.random AS c0_to_f FROM hash_name_heap h WHERE h.random = '0123456789abcdef'::name; UPDATE hash_name_heap SET seqno = 20000 WHERE hash_name_heap.random = '76652222'::name; -- -- this is the row we just replaced; index scan should return zero rows -- SELECT h.seqno AS emptyset FROM hash_name_heap h WHERE h.random = '76652222'::name; UPDATE hash_txt_heap SET random = '0123456789abcdefghijklmnop'::text WHERE hash_txt_heap.seqno = 4002; SELECT h.seqno AS i4002, h.random AS c0_to_p FROM hash_txt_heap h WHERE h.random = '0123456789abcdefghijklmnop'::text; UPDATE hash_txt_heap SET seqno = 20000 WHERE hash_txt_heap.random = '959363399'::text; SELECT h.seqno AS t20000 FROM hash_txt_heap h WHERE h.random = '959363399'::text; UPDATE hash_f8_heap SET random = '-1234.1234'::float8 WHERE hash_f8_heap.seqno = 8906; SELECT h.seqno AS i8096, h.random AS f1234_1234 FROM hash_f8_heap h WHERE h.random = '-1234.1234'::float8; UPDATE hash_f8_heap SET seqno = 20000 WHERE hash_f8_heap.random = '488912369'::float8; SELECT h.seqno AS f20000 FROM hash_f8_heap h WHERE h.random = '488912369'::float8; -- UPDATE hash_ovfl_heap -- SET x = 1000 -- WHERE x = 90; -- this vacuums the index as well -- VACUUM hash_ovfl_heap; -- SELECT count(*) AS i0 FROM hash_ovfl_heap -- WHERE x = 90; -- SELECT count(*) AS i988 FROM hash_ovfl_heap -- WHERE x = 1000; -- -- Cause some overflow insert and splits. -- CREATE TABLE hash_split_heap (keycol INT); INSERT INTO hash_split_heap SELECT 1 FROM generate_series(1, 500) a; CREATE INDEX hash_split_index on hash_split_heap USING HASH (keycol); INSERT INTO hash_split_heap SELECT 1 FROM generate_series(1, 5000) a; -- Let's do a backward scan. BEGIN; SET enable_seqscan = OFF; SET enable_bitmapscan = OFF; DECLARE c CURSOR FOR SELECT * from hash_split_heap WHERE keycol = 1; MOVE FORWARD ALL FROM c; MOVE BACKWARD 10000 FROM c; MOVE BACKWARD ALL FROM c; CLOSE c; END; -- DELETE, INSERT, VACUUM. DELETE FROM hash_split_heap WHERE keycol = 1; INSERT INTO hash_split_heap SELECT a/2 FROM generate_series(1, 25000) a; VACUUM hash_split_heap; -- Rebuild the index using a different fillfactor ALTER INDEX hash_split_index SET (fillfactor = 10); REINDEX INDEX hash_split_index; -- Clean up. DROP TABLE hash_split_heap; -- Index on temp table. CREATE TEMP TABLE hash_temp_heap (x int, y int); INSERT INTO hash_temp_heap VALUES (1,1); CREATE INDEX hash_idx ON hash_temp_heap USING hash (x); DROP TABLE hash_temp_heap CASCADE; -- Float4 type. CREATE TABLE hash_heap_float4 (x float4, y int); INSERT INTO hash_heap_float4 VALUES (1.1,1); CREATE INDEX hash_idx ON hash_heap_float4 USING hash (x); DROP TABLE hash_heap_float4 CASCADE; -- Test out-of-range fillfactor values CREATE INDEX hash_f8_index2 ON hash_f8_heap USING hash (random float8_ops) WITH (fillfactor=9); CREATE INDEX hash_f8_index2 ON hash_f8_heap USING hash (random float8_ops) WITH (fillfactor=101); libpg_query-13-2.1.0/test/sql/postgres_regress/hash_part.sql000066400000000000000000000060661413137616400241430ustar00rootroot00000000000000-- -- Hash partitioning. -- -- Use hand-rolled hash functions and operator classes to get predictable -- result on different machines. See the definitions of -- part_part_test_int4_ops and part_test_text_ops in insert.sql. CREATE TABLE mchash (a int, b text, c jsonb) PARTITION BY HASH (a part_test_int4_ops, b part_test_text_ops); CREATE TABLE mchash1 PARTITION OF mchash FOR VALUES WITH (MODULUS 4, REMAINDER 0); -- invalid OID, no such table SELECT satisfies_hash_partition(0, 4, 0, NULL); -- not partitioned SELECT satisfies_hash_partition('tenk1'::regclass, 4, 0, NULL); -- partition rather than the parent SELECT satisfies_hash_partition('mchash1'::regclass, 4, 0, NULL); -- invalid modulus SELECT satisfies_hash_partition('mchash'::regclass, 0, 0, NULL); -- remainder too small SELECT satisfies_hash_partition('mchash'::regclass, 1, -1, NULL); -- remainder too large SELECT satisfies_hash_partition('mchash'::regclass, 1, 1, NULL); -- modulus is null SELECT satisfies_hash_partition('mchash'::regclass, NULL, 0, NULL); -- remainder is null SELECT satisfies_hash_partition('mchash'::regclass, 4, NULL, NULL); -- too many arguments SELECT satisfies_hash_partition('mchash'::regclass, 4, 0, NULL::int, NULL::text, NULL::json); -- too few arguments SELECT satisfies_hash_partition('mchash'::regclass, 3, 1, NULL::int); -- wrong argument type SELECT satisfies_hash_partition('mchash'::regclass, 2, 1, NULL::int, NULL::int); -- ok, should be false SELECT satisfies_hash_partition('mchash'::regclass, 4, 0, 0, ''::text); -- ok, should be true SELECT satisfies_hash_partition('mchash'::regclass, 4, 0, 2, ''::text); -- argument via variadic syntax, should fail because not all partitioning -- columns are of the correct type SELECT satisfies_hash_partition('mchash'::regclass, 2, 1, variadic array[1,2]::int[]); -- multiple partitioning columns of the same type CREATE TABLE mcinthash (a int, b int, c jsonb) PARTITION BY HASH (a part_test_int4_ops, b part_test_int4_ops); -- now variadic should work, should be false SELECT satisfies_hash_partition('mcinthash'::regclass, 4, 0, variadic array[0, 0]); -- should be true SELECT satisfies_hash_partition('mcinthash'::regclass, 4, 0, variadic array[0, 1]); -- wrong length SELECT satisfies_hash_partition('mcinthash'::regclass, 4, 0, variadic array[]::int[]); -- wrong type SELECT satisfies_hash_partition('mcinthash'::regclass, 4, 0, variadic array[now(), now()]); -- check satisfies_hash_partition passes correct collation create table text_hashp (a text) partition by hash (a); create table text_hashp0 partition of text_hashp for values with (modulus 2, remainder 0); create table text_hashp1 partition of text_hashp for values with (modulus 2, remainder 1); -- The result here should always be true, because 'xxx' must belong to -- one of the two defined partitions select satisfies_hash_partition('text_hashp'::regclass, 2, 0, 'xxx'::text) OR satisfies_hash_partition('text_hashp'::regclass, 2, 1, 'xxx'::text) AS satisfies; -- cleanup DROP TABLE mchash; DROP TABLE mcinthash; DROP TABLE text_hashp; libpg_query-13-2.1.0/test/sql/postgres_regress/horology.sql000066400000000000000000000572631413137616400240410ustar00rootroot00000000000000-- -- HOROLOGY -- SET DateStyle = 'Postgres, MDY'; SHOW TimeZone; -- Many of these tests depend on the prevailing setting -- -- Test various input formats -- SELECT timestamp with time zone '20011227 040506+08'; SELECT timestamp with time zone '20011227 040506-08'; SELECT timestamp with time zone '20011227 040506.789+08'; SELECT timestamp with time zone '20011227 040506.789-08'; SELECT timestamp with time zone '20011227T040506+08'; SELECT timestamp with time zone '20011227T040506-08'; SELECT timestamp with time zone '20011227T040506.789+08'; SELECT timestamp with time zone '20011227T040506.789-08'; SELECT timestamp with time zone '2001-12-27 04:05:06.789-08'; SELECT timestamp with time zone '2001.12.27 04:05:06.789-08'; SELECT timestamp with time zone '2001/12/27 04:05:06.789-08'; SELECT timestamp with time zone '12/27/2001 04:05:06.789-08'; -- should fail in mdy mode: SELECT timestamp with time zone '27/12/2001 04:05:06.789-08'; set datestyle to dmy; SELECT timestamp with time zone '27/12/2001 04:05:06.789-08'; reset datestyle; SELECT timestamp with time zone 'Y2001M12D27H04M05S06.789+08'; SELECT timestamp with time zone 'Y2001M12D27H04M05S06.789-08'; SELECT timestamp with time zone 'Y2001M12D27H04MM05S06.789+08'; SELECT timestamp with time zone 'Y2001M12D27H04MM05S06.789-08'; SELECT timestamp with time zone 'J2452271+08'; SELECT timestamp with time zone 'J2452271-08'; SELECT timestamp with time zone 'J2452271.5+08'; SELECT timestamp with time zone 'J2452271.5-08'; SELECT timestamp with time zone 'J2452271 04:05:06+08'; SELECT timestamp with time zone 'J2452271 04:05:06-08'; SELECT timestamp with time zone 'J2452271T040506+08'; SELECT timestamp with time zone 'J2452271T040506-08'; SELECT timestamp with time zone 'J2452271T040506.789+08'; SELECT timestamp with time zone 'J2452271T040506.789-08'; -- German/European-style dates with periods as delimiters SELECT timestamp with time zone '12.27.2001 04:05:06.789+08'; SELECT timestamp with time zone '12.27.2001 04:05:06.789-08'; SET DateStyle = 'German'; SELECT timestamp with time zone '27.12.2001 04:05:06.789+08'; SELECT timestamp with time zone '27.12.2001 04:05:06.789-08'; SET DateStyle = 'ISO'; -- As of 7.4, allow time without time zone having a time zone specified SELECT time without time zone '040506.789+08'; SELECT time without time zone '040506.789-08'; SELECT time without time zone 'T040506.789+08'; SELECT time without time zone 'T040506.789-08'; SELECT time with time zone '040506.789+08'; SELECT time with time zone '040506.789-08'; SELECT time with time zone 'T040506.789+08'; SELECT time with time zone 'T040506.789-08'; SELECT time with time zone 'T040506.789 +08'; SELECT time with time zone 'T040506.789 -08'; SET DateStyle = 'Postgres, MDY'; -- Check Julian dates BC SELECT date 'J1520447' AS "Confucius' Birthday"; SELECT date 'J0' AS "Julian Epoch"; -- -- date, time arithmetic -- SELECT date '1981-02-03' + time '04:05:06' AS "Date + Time"; SELECT date '1991-02-03' + time with time zone '04:05:06 PST' AS "Date + Time PST"; SELECT date '2001-02-03' + time with time zone '04:05:06 UTC' AS "Date + Time UTC"; SELECT date '1991-02-03' + interval '2 years' AS "Add Two Years"; SELECT date '2001-12-13' - interval '2 years' AS "Subtract Two Years"; -- subtract time from date should not make sense; use interval instead SELECT date '1991-02-03' - time '04:05:06' AS "Subtract Time"; SELECT date '1991-02-03' - time with time zone '04:05:06 UTC' AS "Subtract Time UTC"; -- -- timestamp, interval arithmetic -- SELECT timestamp without time zone '1996-03-01' - interval '1 second' AS "Feb 29"; SELECT timestamp without time zone '1999-03-01' - interval '1 second' AS "Feb 28"; SELECT timestamp without time zone '2000-03-01' - interval '1 second' AS "Feb 29"; SELECT timestamp without time zone '1999-12-01' + interval '1 month - 1 second' AS "Dec 31"; SELECT timestamp without time zone 'Jan 1, 4713 BC' + interval '106000000 days' AS "Feb 23, 285506"; SELECT timestamp without time zone 'Jan 1, 4713 BC' + interval '107000000 days' AS "Jan 20, 288244"; SELECT timestamp without time zone 'Jan 1, 4713 BC' + interval '109203489 days' AS "Dec 31, 294276"; SELECT timestamp without time zone '12/31/294276' - timestamp without time zone '12/23/1999' AS "106751991 Days"; -- Shorthand values -- Not directly usable for regression testing since these are not constants. -- So, just try to test parser and hope for the best - thomas 97/04/26 SELECT (timestamp without time zone 'today' = (timestamp without time zone 'yesterday' + interval '1 day')) as "True"; SELECT (timestamp without time zone 'today' = (timestamp without time zone 'tomorrow' - interval '1 day')) as "True"; SELECT (timestamp without time zone 'today 10:30' = (timestamp without time zone 'yesterday' + interval '1 day 10 hr 30 min')) as "True"; SELECT (timestamp without time zone '10:30 today' = (timestamp without time zone 'yesterday' + interval '1 day 10 hr 30 min')) as "True"; SELECT (timestamp without time zone 'tomorrow' = (timestamp without time zone 'yesterday' + interval '2 days')) as "True"; SELECT (timestamp without time zone 'tomorrow 16:00:00' = (timestamp without time zone 'today' + interval '1 day 16 hours')) as "True"; SELECT (timestamp without time zone '16:00:00 tomorrow' = (timestamp without time zone 'today' + interval '1 day 16 hours')) as "True"; SELECT (timestamp without time zone 'yesterday 12:34:56' = (timestamp without time zone 'tomorrow' - interval '2 days - 12:34:56')) as "True"; SELECT (timestamp without time zone '12:34:56 yesterday' = (timestamp without time zone 'tomorrow' - interval '2 days - 12:34:56')) as "True"; SELECT (timestamp without time zone 'tomorrow' > 'now') as "True"; -- Convert from date and time to timestamp -- This test used to be timestamp(date,time) but no longer allowed by grammar -- to enable support for SQL99 timestamp type syntax. SELECT date '1994-01-01' + time '11:00' AS "Jan_01_1994_11am"; SELECT date '1994-01-01' + time '10:00' AS "Jan_01_1994_10am"; SELECT date '1994-01-01' + timetz '11:00-5' AS "Jan_01_1994_8am"; SELECT timestamptz(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_8am"; SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMP_TBL; SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMP_TBL; SELECT timestamp with time zone '1996-03-01' - interval '1 second' AS "Feb 29"; SELECT timestamp with time zone '1999-03-01' - interval '1 second' AS "Feb 28"; SELECT timestamp with time zone '2000-03-01' - interval '1 second' AS "Feb 29"; SELECT timestamp with time zone '1999-12-01' + interval '1 month - 1 second' AS "Dec 31"; SELECT (timestamp with time zone 'today' = (timestamp with time zone 'yesterday' + interval '1 day')) as "True"; SELECT (timestamp with time zone 'today' = (timestamp with time zone 'tomorrow' - interval '1 day')) as "True"; SELECT (timestamp with time zone 'tomorrow' = (timestamp with time zone 'yesterday' + interval '2 days')) as "True"; SELECT (timestamp with time zone 'tomorrow' > 'now') as "True"; -- timestamp with time zone, interval arithmetic around DST change -- (just for fun, let's use an intentionally nonstandard POSIX zone spec) SET TIME ZONE 'CST7CDT,M4.1.0,M10.5.0'; SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '1 day' as "Apr 3, 12:00"; SELECT timestamp with time zone '2005-04-02 12:00-07' + interval '24 hours' as "Apr 3, 13:00"; SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '1 day' as "Apr 2, 12:00"; SELECT timestamp with time zone '2005-04-03 12:00-06' - interval '24 hours' as "Apr 2, 11:00"; RESET TIME ZONE; SELECT timestamptz(date '1994-01-01', time '11:00') AS "Jan_01_1994_10am"; SELECT timestamptz(date '1994-01-01', time '10:00') AS "Jan_01_1994_9am"; SELECT timestamptz(date '1994-01-01', time with time zone '11:00-8') AS "Jan_01_1994_11am"; SELECT timestamptz(date '1994-01-01', time with time zone '10:00-8') AS "Jan_01_1994_10am"; SELECT timestamptz(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_8am"; SELECT '' AS "64", d1 + interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL; SELECT '' AS "64", d1 - interval '1 year' AS one_year FROM TIMESTAMPTZ_TBL; -- -- time, interval arithmetic -- SELECT CAST(time '01:02' AS interval) AS "+01:02"; SELECT CAST(interval '02:03' AS time) AS "02:03:00"; SELECT time '01:30' + interval '02:01' AS "03:31:00"; SELECT time '01:30' - interval '02:01' AS "23:29:00"; SELECT time '02:30' + interval '36:01' AS "14:31:00"; SELECT time '03:30' + interval '1 month 04:01' AS "07:31:00"; SELECT CAST(time with time zone '01:02-08' AS interval) AS "+00:01"; SELECT CAST(interval '02:03' AS time with time zone) AS "02:03:00-08"; SELECT time with time zone '01:30-08' - interval '02:01' AS "23:29:00-08"; SELECT time with time zone '02:30-08' + interval '36:01' AS "14:31:00-08"; -- These two tests cannot be used because they default to current timezone, -- which may be either -08 or -07 depending on the time of year. -- SELECT time with time zone '01:30' + interval '02:01' AS "03:31:00-08"; -- SELECT time with time zone '03:30' + interval '1 month 04:01' AS "07:31:00-08"; -- Try the following two tests instead, as a poor substitute SELECT CAST(CAST(date 'today' + time with time zone '05:30' + interval '02:01' AS time with time zone) AS time) AS "07:31:00"; SELECT CAST(cast(date 'today' + time with time zone '03:30' + interval '1 month 04:01' as timestamp without time zone) AS time) AS "07:31:00"; SELECT t.d1 AS t, i.f1 AS i, t.d1 + i.f1 AS "add", t.d1 - i.f1 AS "subtract" FROM TIMESTAMP_TBL t, INTERVAL_TBL i WHERE t.d1 BETWEEN '1990-01-01' AND '2001-01-01' AND i.f1 BETWEEN '00:00' AND '23:00' ORDER BY 1,2; SELECT t.f1 AS t, i.f1 AS i, t.f1 + i.f1 AS "add", t.f1 - i.f1 AS "subtract" FROM TIME_TBL t, INTERVAL_TBL i ORDER BY 1,2; SELECT t.f1 AS t, i.f1 AS i, t.f1 + i.f1 AS "add", t.f1 - i.f1 AS "subtract" FROM TIMETZ_TBL t, INTERVAL_TBL i ORDER BY 1,2; -- SQL9x OVERLAPS operator -- test with time zone SELECT (timestamp with time zone '2000-11-27', timestamp with time zone '2000-11-28') OVERLAPS (timestamp with time zone '2000-11-27 12:00', timestamp with time zone '2000-11-30') AS "True"; SELECT (timestamp with time zone '2000-11-26', timestamp with time zone '2000-11-27') OVERLAPS (timestamp with time zone '2000-11-27 12:00', timestamp with time zone '2000-11-30') AS "False"; SELECT (timestamp with time zone '2000-11-27', timestamp with time zone '2000-11-28') OVERLAPS (timestamp with time zone '2000-11-27 12:00', interval '1 day') AS "True"; SELECT (timestamp with time zone '2000-11-27', interval '12 hours') OVERLAPS (timestamp with time zone '2000-11-27 12:00', timestamp with time zone '2000-11-30') AS "False"; SELECT (timestamp with time zone '2000-11-27', interval '12 hours') OVERLAPS (timestamp with time zone '2000-11-27', interval '12 hours') AS "True"; SELECT (timestamp with time zone '2000-11-27', interval '12 hours') OVERLAPS (timestamp with time zone '2000-11-27 12:00', interval '12 hours') AS "False"; -- test without time zone SELECT (timestamp without time zone '2000-11-27', timestamp without time zone '2000-11-28') OVERLAPS (timestamp without time zone '2000-11-27 12:00', timestamp without time zone '2000-11-30') AS "True"; SELECT (timestamp without time zone '2000-11-26', timestamp without time zone '2000-11-27') OVERLAPS (timestamp without time zone '2000-11-27 12:00', timestamp without time zone '2000-11-30') AS "False"; SELECT (timestamp without time zone '2000-11-27', timestamp without time zone '2000-11-28') OVERLAPS (timestamp without time zone '2000-11-27 12:00', interval '1 day') AS "True"; SELECT (timestamp without time zone '2000-11-27', interval '12 hours') OVERLAPS (timestamp without time zone '2000-11-27 12:00', timestamp without time zone '2000-11-30') AS "False"; SELECT (timestamp without time zone '2000-11-27', interval '12 hours') OVERLAPS (timestamp without time zone '2000-11-27', interval '12 hours') AS "True"; SELECT (timestamp without time zone '2000-11-27', interval '12 hours') OVERLAPS (timestamp without time zone '2000-11-27 12:00', interval '12 hours') AS "False"; -- test time and interval SELECT (time '00:00', time '01:00') OVERLAPS (time '00:30', time '01:30') AS "True"; SELECT (time '00:00', interval '1 hour') OVERLAPS (time '00:30', interval '1 hour') AS "True"; SELECT (time '00:00', interval '1 hour') OVERLAPS (time '01:30', interval '1 hour') AS "False"; -- SQL99 seems to want this to be false (and we conform to the spec). -- istm that this *should* return true, on the theory that time -- intervals can wrap around the day boundary - thomas 2001-09-25 SELECT (time '00:00', interval '1 hour') OVERLAPS (time '01:30', interval '1 day') AS "False"; CREATE TABLE TEMP_TIMESTAMP (f1 timestamp with time zone); -- get some candidate input values INSERT INTO TEMP_TIMESTAMP (f1) SELECT d1 FROM TIMESTAMP_TBL WHERE d1 BETWEEN '13-jun-1957' AND '1-jan-1997' OR d1 BETWEEN '1-jan-1999' AND '1-jan-2010'; SELECT '' AS "16", f1 AS "timestamp" FROM TEMP_TIMESTAMP ORDER BY "timestamp"; SELECT '' AS "160", d.f1 AS "timestamp", t.f1 AS "interval", d.f1 + t.f1 AS plus FROM TEMP_TIMESTAMP d, INTERVAL_TBL t ORDER BY plus, "timestamp", "interval"; SELECT '' AS "160", d.f1 AS "timestamp", t.f1 AS "interval", d.f1 - t.f1 AS minus FROM TEMP_TIMESTAMP d, INTERVAL_TBL t WHERE isfinite(d.f1) ORDER BY minus, "timestamp", "interval"; SELECT '' AS "16", d.f1 AS "timestamp", timestamp with time zone '1980-01-06 00:00 GMT' AS gpstime_zero, d.f1 - timestamp with time zone '1980-01-06 00:00 GMT' AS difference FROM TEMP_TIMESTAMP d ORDER BY difference; SELECT '' AS "226", d1.f1 AS timestamp1, d2.f1 AS timestamp2, d1.f1 - d2.f1 AS difference FROM TEMP_TIMESTAMP d1, TEMP_TIMESTAMP d2 ORDER BY timestamp1, timestamp2, difference; -- -- Conversions -- SELECT '' AS "16", f1 AS "timestamp", date(f1) AS date FROM TEMP_TIMESTAMP WHERE f1 <> timestamp 'now' ORDER BY date, "timestamp"; DROP TABLE TEMP_TIMESTAMP; -- -- Comparisons between datetime types, especially overflow cases --- SELECT '2202020-10-05'::date::timestamp; -- fail SELECT '2202020-10-05'::date > '2020-10-05'::timestamp as t; SELECT '2020-10-05'::timestamp > '2202020-10-05'::date as f; SELECT '2202020-10-05'::date::timestamptz; -- fail SELECT '2202020-10-05'::date > '2020-10-05'::timestamptz as t; SELECT '2020-10-05'::timestamptz > '2202020-10-05'::date as f; -- This conversion may work depending on timezone SELECT '4714-11-24 BC'::date::timestamptz; SET TimeZone = 'UTC-2'; SELECT '4714-11-24 BC'::date::timestamptz; -- fail SELECT '4714-11-24 BC'::date < '2020-10-05'::timestamptz as t; SELECT '2020-10-05'::timestamptz >= '4714-11-24 BC'::date as t; SELECT '4714-11-24 BC'::timestamp < '2020-10-05'::timestamptz as t; SELECT '2020-10-05'::timestamptz >= '4714-11-24 BC'::timestamp as t; RESET TimeZone; -- -- Formats -- SET DateStyle TO 'US,Postgres'; SHOW DateStyle; SELECT '' AS "64", d1 AS us_postgres FROM TIMESTAMP_TBL; SET DateStyle TO 'US,ISO'; SELECT '' AS "64", d1 AS us_iso FROM TIMESTAMP_TBL; SET DateStyle TO 'US,SQL'; SHOW DateStyle; SELECT '' AS "64", d1 AS us_sql FROM TIMESTAMP_TBL; SET DateStyle TO 'European,Postgres'; SHOW DateStyle; INSERT INTO TIMESTAMP_TBL VALUES('13/06/1957'); SELECT count(*) as one FROM TIMESTAMP_TBL WHERE d1 = 'Jun 13 1957'; SELECT '' AS "65", d1 AS european_postgres FROM TIMESTAMP_TBL; SET DateStyle TO 'European,ISO'; SHOW DateStyle; SELECT '' AS "65", d1 AS european_iso FROM TIMESTAMP_TBL; SET DateStyle TO 'European,SQL'; SHOW DateStyle; SELECT '' AS "65", d1 AS european_sql FROM TIMESTAMP_TBL; RESET DateStyle; -- -- to_timestamp() -- SELECT to_timestamp('0097/Feb/16 --> 08:14:30', 'YYYY/Mon/DD --> HH:MI:SS'); SELECT to_timestamp('97/2/16 8:14:30', 'FMYYYY/FMMM/FMDD FMHH:FMMI:FMSS'); SELECT to_timestamp('2011$03!18 23_38_15', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('1985 January 12', 'YYYY FMMonth DD'); SELECT to_timestamp('1985 FMMonth 12', 'YYYY "FMMonth" DD'); SELECT to_timestamp('1985 \ 12', 'YYYY \\ DD'); SELECT to_timestamp('My birthday-> Year: 1976, Month: May, Day: 16', '"My birthday-> Year:" YYYY, "Month:" FMMonth, "Day:" DD'); SELECT to_timestamp('1,582nd VIII 21', 'Y,YYYth FMRM DD'); SELECT to_timestamp('15 "text between quote marks" 98 54 45', E'HH24 "\\"text between quote marks\\"" YY MI SS'); SELECT to_timestamp('05121445482000', 'MMDDHH24MISSYYYY'); SELECT to_timestamp('2000January09Sunday', 'YYYYFMMonthDDFMDay'); SELECT to_timestamp('97/Feb/16', 'YYMonDD'); SELECT to_timestamp('97/Feb/16', 'YY:Mon:DD'); SELECT to_timestamp('97/Feb/16', 'FXYY:Mon:DD'); SELECT to_timestamp('97/Feb/16', 'FXYY/Mon/DD'); SELECT to_timestamp('19971116', 'YYYYMMDD'); SELECT to_timestamp('20000-1116', 'YYYY-MMDD'); SELECT to_timestamp('1997 AD 11 16', 'YYYY BC MM DD'); SELECT to_timestamp('1997 BC 11 16', 'YYYY BC MM DD'); SELECT to_timestamp('1997 A.D. 11 16', 'YYYY B.C. MM DD'); SELECT to_timestamp('1997 B.C. 11 16', 'YYYY B.C. MM DD'); SELECT to_timestamp('9-1116', 'Y-MMDD'); SELECT to_timestamp('95-1116', 'YY-MMDD'); SELECT to_timestamp('995-1116', 'YYY-MMDD'); SELECT to_timestamp('2005426', 'YYYYWWD'); SELECT to_timestamp('2005300', 'YYYYDDD'); SELECT to_timestamp('2005527', 'IYYYIWID'); SELECT to_timestamp('005527', 'IYYIWID'); SELECT to_timestamp('05527', 'IYIWID'); SELECT to_timestamp('5527', 'IIWID'); SELECT to_timestamp('2005364', 'IYYYIDDD'); SELECT to_timestamp('20050302', 'YYYYMMDD'); SELECT to_timestamp('2005 03 02', 'YYYYMMDD'); SELECT to_timestamp(' 2005 03 02', 'YYYYMMDD'); SELECT to_timestamp(' 20050302', 'YYYYMMDD'); SELECT to_timestamp('2011-12-18 11:38 AM', 'YYYY-MM-DD HH12:MI PM'); SELECT to_timestamp('2011-12-18 11:38 PM', 'YYYY-MM-DD HH12:MI PM'); SELECT to_timestamp('2011-12-18 11:38 A.M.', 'YYYY-MM-DD HH12:MI P.M.'); SELECT to_timestamp('2011-12-18 11:38 P.M.', 'YYYY-MM-DD HH12:MI P.M.'); SELECT to_timestamp('2011-12-18 11:38 +05', 'YYYY-MM-DD HH12:MI TZH'); SELECT to_timestamp('2011-12-18 11:38 -05', 'YYYY-MM-DD HH12:MI TZH'); SELECT to_timestamp('2011-12-18 11:38 +05:20', 'YYYY-MM-DD HH12:MI TZH:TZM'); SELECT to_timestamp('2011-12-18 11:38 -05:20', 'YYYY-MM-DD HH12:MI TZH:TZM'); SELECT to_timestamp('2011-12-18 11:38 20', 'YYYY-MM-DD HH12:MI TZM'); SELECT to_timestamp('2011-12-18 11:38 PST', 'YYYY-MM-DD HH12:MI TZ'); -- NYI SELECT to_timestamp('2018-11-02 12:34:56.025', 'YYYY-MM-DD HH24:MI:SS.MS'); SELECT i, to_timestamp('2018-11-02 12:34:56', 'YYYY-MM-DD HH24:MI:SS.FF' || i) FROM generate_series(1, 6) i; SELECT i, to_timestamp('2018-11-02 12:34:56.1', 'YYYY-MM-DD HH24:MI:SS.FF' || i) FROM generate_series(1, 6) i; SELECT i, to_timestamp('2018-11-02 12:34:56.12', 'YYYY-MM-DD HH24:MI:SS.FF' || i) FROM generate_series(1, 6) i; SELECT i, to_timestamp('2018-11-02 12:34:56.123', 'YYYY-MM-DD HH24:MI:SS.FF' || i) FROM generate_series(1, 6) i; SELECT i, to_timestamp('2018-11-02 12:34:56.1234', 'YYYY-MM-DD HH24:MI:SS.FF' || i) FROM generate_series(1, 6) i; SELECT i, to_timestamp('2018-11-02 12:34:56.12345', 'YYYY-MM-DD HH24:MI:SS.FF' || i) FROM generate_series(1, 6) i; SELECT i, to_timestamp('2018-11-02 12:34:56.123456', 'YYYY-MM-DD HH24:MI:SS.FF' || i) FROM generate_series(1, 6) i; SELECT i, to_timestamp('2018-11-02 12:34:56.123456789', 'YYYY-MM-DD HH24:MI:SS.FF' || i) FROM generate_series(1, 6) i; SELECT to_date('1 4 1902', 'Q MM YYYY'); -- Q is ignored SELECT to_date('3 4 21 01', 'W MM CC YY'); SELECT to_date('2458872', 'J'); -- -- Check handling of BC dates -- SELECT to_date('44-02-01 BC','YYYY-MM-DD BC'); SELECT to_date('-44-02-01','YYYY-MM-DD'); SELECT to_date('-44-02-01 BC','YYYY-MM-DD BC'); SELECT to_timestamp('44-02-01 11:12:13 BC','YYYY-MM-DD HH24:MI:SS BC'); SELECT to_timestamp('-44-02-01 11:12:13','YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('-44-02-01 11:12:13 BC','YYYY-MM-DD HH24:MI:SS BC'); -- -- Check handling of multiple spaces in format and/or input -- SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2011-12-18 23:38:15', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2000+ JUN', 'YYYY/MON'); SELECT to_timestamp(' 2000 +JUN', 'YYYY/MON'); SELECT to_timestamp(' 2000 +JUN', 'YYYY//MON'); SELECT to_timestamp('2000 +JUN', 'YYYY//MON'); SELECT to_timestamp('2000 + JUN', 'YYYY MON'); SELECT to_timestamp('2000 ++ JUN', 'YYYY MON'); SELECT to_timestamp('2000 + + JUN', 'YYYY MON'); SELECT to_timestamp('2000 + + JUN', 'YYYY MON'); SELECT to_timestamp('2000 -10', 'YYYY TZH'); SELECT to_timestamp('2000 -10', 'YYYY TZH'); SELECT to_date('2011 12 18', 'YYYY MM DD'); SELECT to_date('2011 12 18', 'YYYY MM DD'); SELECT to_date('2011 12 18', 'YYYY MM DD'); SELECT to_date('2011 12 18', 'YYYY MM DD'); SELECT to_date('2011 12 18', 'YYYY MM DD'); SELECT to_date('2011 12 18', 'YYYY MM DD'); SELECT to_date('2011 12 18', 'YYYYxMMxDD'); SELECT to_date('2011x 12x 18', 'YYYYxMMxDD'); SELECT to_date('2011 x12 x18', 'YYYYxMMxDD'); -- -- Check errors for some incorrect usages of to_timestamp() and to_date() -- -- Mixture of date conventions (ISO week and Gregorian): SELECT to_timestamp('2005527', 'YYYYIWID'); -- Insufficient characters in the source string: SELECT to_timestamp('19971', 'YYYYMMDD'); -- Insufficient digit characters for a single node: SELECT to_timestamp('19971)24', 'YYYYMMDD'); -- We don't accept full-length day or month names if short form is specified: SELECT to_timestamp('Friday 1-January-1999', 'DY DD MON YYYY'); SELECT to_timestamp('Fri 1-January-1999', 'DY DD MON YYYY'); SELECT to_timestamp('Fri 1-Jan-1999', 'DY DD MON YYYY'); -- ok -- Value clobbering: SELECT to_timestamp('1997-11-Jan-16', 'YYYY-MM-Mon-DD'); -- Non-numeric input: SELECT to_timestamp('199711xy', 'YYYYMMDD'); -- Input that doesn't fit in an int: SELECT to_timestamp('10000000000', 'FMYYYY'); -- Out-of-range and not-quite-out-of-range fields: SELECT to_timestamp('2016-06-13 25:00:00', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2016-06-13 15:60:00', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2016-06-13 15:50:60', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2016-06-13 15:50:55', 'YYYY-MM-DD HH24:MI:SS'); -- ok SELECT to_timestamp('2016-06-13 15:50:55', 'YYYY-MM-DD HH:MI:SS'); SELECT to_timestamp('2016-13-01 15:50:55', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2016-02-30 15:50:55', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2016-02-29 15:50:55', 'YYYY-MM-DD HH24:MI:SS'); -- ok SELECT to_timestamp('2015-02-29 15:50:55', 'YYYY-MM-DD HH24:MI:SS'); SELECT to_timestamp('2015-02-11 86000', 'YYYY-MM-DD SSSS'); -- ok SELECT to_timestamp('2015-02-11 86400', 'YYYY-MM-DD SSSS'); SELECT to_timestamp('2015-02-11 86000', 'YYYY-MM-DD SSSSS'); -- ok SELECT to_timestamp('2015-02-11 86400', 'YYYY-MM-DD SSSSS'); SELECT to_date('2016-13-10', 'YYYY-MM-DD'); SELECT to_date('2016-02-30', 'YYYY-MM-DD'); SELECT to_date('2016-02-29', 'YYYY-MM-DD'); -- ok SELECT to_date('2015-02-29', 'YYYY-MM-DD'); SELECT to_date('2015 365', 'YYYY DDD'); -- ok SELECT to_date('2015 366', 'YYYY DDD'); SELECT to_date('2016 365', 'YYYY DDD'); -- ok SELECT to_date('2016 366', 'YYYY DDD'); -- ok SELECT to_date('2016 367', 'YYYY DDD'); SELECT to_date('0000-02-01','YYYY-MM-DD'); -- allowed, though it shouldn't be -- -- Check behavior with SQL-style fixed-GMT-offset time zone (cf bug #8572) -- SET TIME ZONE 'America/New_York'; SET TIME ZONE '-1.5'; SHOW TIME ZONE; SELECT '2012-12-12 12:00'::timestamptz; SELECT '2012-12-12 12:00 America/New_York'::timestamptz; SELECT to_char('2012-12-12 12:00'::timestamptz, 'YYYY-MM-DD HH:MI:SS TZ'); SELECT to_char('2012-12-12 12:00'::timestamptz, 'YYYY-MM-DD SSSS'); SELECT to_char('2012-12-12 12:00'::timestamptz, 'YYYY-MM-DD SSSSS'); RESET TIME ZONE; libpg_query-13-2.1.0/test/sql/postgres_regress/hs_primary_extremes.sql000066400000000000000000000026401413137616400262550ustar00rootroot00000000000000-- -- Hot Standby tests -- -- hs_primary_extremes.sql -- drop table if exists hs_extreme; create table hs_extreme (col1 integer); CREATE OR REPLACE FUNCTION hs_subxids (n integer) RETURNS void LANGUAGE plpgsql AS $$ BEGIN IF n <= 0 THEN RETURN; END IF; INSERT INTO hs_extreme VALUES (n); PERFORM hs_subxids(n - 1); RETURN; EXCEPTION WHEN raise_exception THEN NULL; END; $$; BEGIN; SELECT hs_subxids(257); ROLLBACK; BEGIN; SELECT hs_subxids(257); COMMIT; set client_min_messages = 'warning'; CREATE OR REPLACE FUNCTION hs_locks_create (n integer) RETURNS void LANGUAGE plpgsql AS $$ BEGIN IF n <= 0 THEN CHECKPOINT; RETURN; END IF; EXECUTE 'CREATE TABLE hs_locks_' || n::text || ' ()'; PERFORM hs_locks_create(n - 1); RETURN; EXCEPTION WHEN raise_exception THEN NULL; END; $$; CREATE OR REPLACE FUNCTION hs_locks_drop (n integer) RETURNS void LANGUAGE plpgsql AS $$ BEGIN IF n <= 0 THEN CHECKPOINT; RETURN; END IF; EXECUTE 'DROP TABLE IF EXISTS hs_locks_' || n::text; PERFORM hs_locks_drop(n - 1); RETURN; EXCEPTION WHEN raise_exception THEN NULL; END; $$; BEGIN; SELECT hs_locks_drop(257); SELECT hs_locks_create(257); SELECT count(*) > 257 FROM pg_locks; ROLLBACK; BEGIN; SELECT hs_locks_drop(257); SELECT hs_locks_create(257); SELECT count(*) > 257 FROM pg_locks; COMMIT; SELECT hs_locks_drop(257); SELECT pg_switch_wal(); libpg_query-13-2.1.0/test/sql/postgres_regress/hs_primary_setup.sql000066400000000000000000000010161413137616400255550ustar00rootroot00000000000000-- -- Hot Standby tests -- -- hs_primary_setup.sql -- drop table if exists hs1; create table hs1 (col1 integer primary key); insert into hs1 values (1); drop table if exists hs2; create table hs2 (col1 integer primary key); insert into hs2 values (12); insert into hs2 values (13); drop table if exists hs3; create table hs3 (col1 integer primary key); insert into hs3 values (113); insert into hs3 values (114); insert into hs3 values (115); DROP sequence if exists hsseq; create sequence hsseq; SELECT pg_switch_wal(); libpg_query-13-2.1.0/test/sql/postgres_regress/hs_standby_allowed.sql000066400000000000000000000040271413137616400260320ustar00rootroot00000000000000-- -- Hot Standby tests -- -- hs_standby_allowed.sql -- -- SELECT select count(*) as should_be_1 from hs1; select count(*) as should_be_2 from hs2; select count(*) as should_be_3 from hs3; COPY hs1 TO '/tmp/copy_test'; \! cat /tmp/copy_test -- Access sequence directly select is_called from hsseq; -- Transactions begin; select count(*) as should_be_1 from hs1; end; begin transaction read only; select count(*) as should_be_1 from hs1; end; begin transaction isolation level repeatable read; select count(*) as should_be_1 from hs1; select count(*) as should_be_1 from hs1; select count(*) as should_be_1 from hs1; commit; begin; select count(*) as should_be_1 from hs1; commit; begin; select count(*) as should_be_1 from hs1; abort; start transaction; select count(*) as should_be_1 from hs1; commit; begin; select count(*) as should_be_1 from hs1; rollback; begin; select count(*) as should_be_1 from hs1; savepoint s; select count(*) as should_be_2 from hs2; commit; begin; select count(*) as should_be_1 from hs1; savepoint s; select count(*) as should_be_2 from hs2; release savepoint s; select count(*) as should_be_2 from hs2; savepoint s; select count(*) as should_be_3 from hs3; rollback to savepoint s; select count(*) as should_be_2 from hs2; commit; -- SET parameters -- has no effect on read only transactions, but we can still set it set synchronous_commit = on; show synchronous_commit; reset synchronous_commit; discard temp; discard all; -- CURSOR commands BEGIN; DECLARE hsc CURSOR FOR select * from hs3; FETCH next from hsc; fetch first from hsc; fetch last from hsc; fetch 1 from hsc; CLOSE hsc; COMMIT; -- Prepared plans PREPARE hsp AS select count(*) from hs1; PREPARE hsp_noexec (integer) AS insert into hs1 values ($1); EXECUTE hsp; DEALLOCATE hsp; -- LOCK BEGIN; LOCK hs1 IN ACCESS SHARE MODE; LOCK hs1 IN ROW SHARE MODE; LOCK hs1 IN ROW EXCLUSIVE MODE; COMMIT; -- UNLISTEN UNLISTEN a; UNLISTEN *; -- LOAD -- should work, easier if there is no test for that... -- ALLOWED COMMANDS CHECKPOINT; discard all; libpg_query-13-2.1.0/test/sql/postgres_regress/hs_standby_check.sql000066400000000000000000000007541413137616400254630ustar00rootroot00000000000000-- -- Hot Standby tests -- -- hs_standby_check.sql -- -- -- If the query below returns false then all other tests will fail after it. -- select case pg_is_in_recovery() when false then 'These tests are intended only for execution on a standby server that is reading ' || 'WAL from a server upon which the regression database is already created and into ' || 'which src/test/regress/sql/hs_primary_setup.sql has been run' else 'Tests are running on a standby server during recovery' end; libpg_query-13-2.1.0/test/sql/postgres_regress/hs_standby_disallowed.sql000066400000000000000000000025761413137616400265410ustar00rootroot00000000000000-- -- Hot Standby tests -- -- hs_standby_disallowed.sql -- SET transaction_read_only = off; begin transaction read write; commit; -- SELECT select * from hs1 FOR SHARE; select * from hs1 FOR UPDATE; -- DML BEGIN; insert into hs1 values (37); ROLLBACK; BEGIN; delete from hs1 where col1 = 1; ROLLBACK; BEGIN; update hs1 set col1 = NULL where col1 > 0; ROLLBACK; BEGIN; truncate hs3; ROLLBACK; -- DDL create temporary table hstemp1 (col1 integer); BEGIN; drop table hs2; ROLLBACK; BEGIN; create table hs4 (col1 integer); ROLLBACK; -- Sequences SELECT nextval('hsseq'); -- Two-phase commit transaction stuff BEGIN; SELECT count(*) FROM hs1; PREPARE TRANSACTION 'foobar'; ROLLBACK; BEGIN; SELECT count(*) FROM hs1; COMMIT PREPARED 'foobar'; ROLLBACK; BEGIN; SELECT count(*) FROM hs1; PREPARE TRANSACTION 'foobar'; ROLLBACK PREPARED 'foobar'; ROLLBACK; BEGIN; SELECT count(*) FROM hs1; ROLLBACK PREPARED 'foobar'; ROLLBACK; -- Locks BEGIN; LOCK hs1; COMMIT; BEGIN; LOCK hs1 IN SHARE UPDATE EXCLUSIVE MODE; COMMIT; BEGIN; LOCK hs1 IN SHARE MODE; COMMIT; BEGIN; LOCK hs1 IN SHARE ROW EXCLUSIVE MODE; COMMIT; BEGIN; LOCK hs1 IN EXCLUSIVE MODE; COMMIT; BEGIN; LOCK hs1 IN ACCESS EXCLUSIVE MODE; COMMIT; -- Listen listen a; notify a; -- disallowed commands ANALYZE hs1; VACUUM hs2; CLUSTER hs2 using hs1_pkey; REINDEX TABLE hs2; REVOKE SELECT ON hs1 FROM PUBLIC; GRANT SELECT ON hs1 TO PUBLIC; libpg_query-13-2.1.0/test/sql/postgres_regress/hs_standby_functions.sql000066400000000000000000000007651413137616400264200ustar00rootroot00000000000000-- -- Hot Standby tests -- -- hs_standby_functions.sql -- -- should fail select pg_current_xact_id(); select length(pg_current_snapshot()::text) >= 4; select pg_start_backup('should fail'); select pg_switch_wal(); select pg_stop_backup(); -- should return no rows select * from pg_prepared_xacts; -- just the startup process select locktype, virtualxid, virtualtransaction, mode, granted from pg_locks where virtualxid = '1/1'; -- suicide is painless select pg_cancel_backend(pg_backend_pid()); libpg_query-13-2.1.0/test/sql/postgres_regress/identity.sql000066400000000000000000000241711413137616400240200ustar00rootroot00000000000000-- sanity check of system catalog SELECT attrelid, attname, attidentity FROM pg_attribute WHERE attidentity NOT IN ('', 'a', 'd'); CREATE TABLE itest1 (a int generated by default as identity, b text); CREATE TABLE itest2 (a bigint generated always as identity, b text); CREATE TABLE itest3 (a smallint generated by default as identity (start with 7 increment by 5), b text); ALTER TABLE itest3 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; -- error SELECT table_name, column_name, column_default, is_nullable, is_identity, identity_generation, identity_start, identity_increment, identity_maximum, identity_minimum, identity_cycle FROM information_schema.columns WHERE table_name LIKE 'itest_' ORDER BY 1, 2; -- internal sequences should not be shown here SELECT sequence_name FROM information_schema.sequences WHERE sequence_name LIKE 'itest%'; SELECT pg_get_serial_sequence('itest1', 'a'); \d itest1_a_seq CREATE TABLE itest4 (a int, b text); ALTER TABLE itest4 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; -- error, requires NOT NULL ALTER TABLE itest4 ALTER COLUMN a SET NOT NULL; ALTER TABLE itest4 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; -- ok ALTER TABLE itest4 ALTER COLUMN a DROP NOT NULL; -- error, disallowed ALTER TABLE itest4 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; -- error, already set ALTER TABLE itest4 ALTER COLUMN b ADD GENERATED ALWAYS AS IDENTITY; -- error, wrong data type -- for later ALTER TABLE itest4 ALTER COLUMN b SET DEFAULT ''; -- invalid column type CREATE TABLE itest_err_1 (a text generated by default as identity); -- duplicate identity CREATE TABLE itest_err_2 (a int generated always as identity generated by default as identity); -- cannot have default and identity CREATE TABLE itest_err_3 (a int default 5 generated by default as identity); -- cannot combine serial and identity CREATE TABLE itest_err_4 (a serial generated by default as identity); INSERT INTO itest1 DEFAULT VALUES; INSERT INTO itest1 DEFAULT VALUES; INSERT INTO itest2 DEFAULT VALUES; INSERT INTO itest2 DEFAULT VALUES; INSERT INTO itest3 DEFAULT VALUES; INSERT INTO itest3 DEFAULT VALUES; INSERT INTO itest4 DEFAULT VALUES; INSERT INTO itest4 DEFAULT VALUES; SELECT * FROM itest1; SELECT * FROM itest2; SELECT * FROM itest3; SELECT * FROM itest4; -- VALUES RTEs INSERT INTO itest3 VALUES (DEFAULT, 'a'); INSERT INTO itest3 VALUES (DEFAULT, 'b'), (DEFAULT, 'c'); SELECT * FROM itest3; -- OVERRIDING tests -- GENERATED BY DEFAULT -- This inserts the row as presented: INSERT INTO itest1 VALUES (10, 'xyz'); -- With GENERATED BY DEFAULT, OVERRIDING SYSTEM VALUE is not allowed -- by the standard, but we allow it as a no-op, since it is of use if -- there are multiple identity columns in a table, which is also an -- extension. INSERT INTO itest1 OVERRIDING SYSTEM VALUE VALUES (20, 'xyz'); -- This ignores the 30 and uses the sequence value instead: INSERT INTO itest1 OVERRIDING USER VALUE VALUES (30, 'xyz'); SELECT * FROM itest1; -- GENERATED ALWAYS -- This is an error: INSERT INTO itest2 VALUES (10, 'xyz'); -- This inserts the row as presented: INSERT INTO itest2 OVERRIDING SYSTEM VALUE VALUES (20, 'xyz'); -- This ignores the 30 and uses the sequence value instead: INSERT INTO itest2 OVERRIDING USER VALUE VALUES (30, 'xyz'); SELECT * FROM itest2; -- UPDATE tests -- GENERATED BY DEFAULT is not restricted. UPDATE itest1 SET a = 101 WHERE a = 1; UPDATE itest1 SET a = DEFAULT WHERE a = 2; SELECT * FROM itest1; -- GENERATED ALWAYS allows only DEFAULT. UPDATE itest2 SET a = 101 WHERE a = 1; -- error UPDATE itest2 SET a = DEFAULT WHERE a = 2; -- ok SELECT * FROM itest2; -- COPY tests CREATE TABLE itest9 (a int GENERATED ALWAYS AS IDENTITY, b text, c bigint); COPY itest9 FROM stdin; 100 foo 200 101 bar 201 \. COPY itest9 (b, c) FROM stdin; foo2 202 bar2 203 \. SELECT * FROM itest9 ORDER BY c; -- DROP IDENTITY tests ALTER TABLE itest4 ALTER COLUMN a DROP IDENTITY; ALTER TABLE itest4 ALTER COLUMN a DROP IDENTITY; -- error ALTER TABLE itest4 ALTER COLUMN a DROP IDENTITY IF EXISTS; -- noop INSERT INTO itest4 DEFAULT VALUES; -- fails because NOT NULL is not dropped ALTER TABLE itest4 ALTER COLUMN a DROP NOT NULL; INSERT INTO itest4 DEFAULT VALUES; SELECT * FROM itest4; -- check that sequence is removed SELECT sequence_name FROM itest4_a_seq; -- test views CREATE TABLE itest10 (a int generated by default as identity, b text); CREATE TABLE itest11 (a int generated always as identity, b text); CREATE VIEW itestv10 AS SELECT * FROM itest10; CREATE VIEW itestv11 AS SELECT * FROM itest11; INSERT INTO itestv10 DEFAULT VALUES; INSERT INTO itestv10 DEFAULT VALUES; INSERT INTO itestv11 DEFAULT VALUES; INSERT INTO itestv11 DEFAULT VALUES; SELECT * FROM itestv10; SELECT * FROM itestv11; INSERT INTO itestv10 VALUES (10, 'xyz'); INSERT INTO itestv10 OVERRIDING USER VALUE VALUES (11, 'xyz'); SELECT * FROM itestv10; INSERT INTO itestv11 VALUES (10, 'xyz'); INSERT INTO itestv11 OVERRIDING SYSTEM VALUE VALUES (11, 'xyz'); SELECT * FROM itestv11; DROP VIEW itestv10, itestv11; -- ADD COLUMN CREATE TABLE itest13 (a int); -- add column to empty table ALTER TABLE itest13 ADD COLUMN b int GENERATED BY DEFAULT AS IDENTITY; INSERT INTO itest13 VALUES (1), (2), (3); -- add column to populated table ALTER TABLE itest13 ADD COLUMN c int GENERATED BY DEFAULT AS IDENTITY; SELECT * FROM itest13; -- various ALTER COLUMN tests -- fail, not allowed for identity columns ALTER TABLE itest1 ALTER COLUMN a SET DEFAULT 1; -- fail, not allowed, already has a default CREATE TABLE itest5 (a serial, b text); ALTER TABLE itest5 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; ALTER TABLE itest3 ALTER COLUMN a TYPE int; SELECT seqtypid::regtype FROM pg_sequence WHERE seqrelid = 'itest3_a_seq'::regclass; \d itest3 ALTER TABLE itest3 ALTER COLUMN a TYPE text; -- error -- kinda silly to change property in the same command, but it should work ALTER TABLE itest3 ADD COLUMN c int GENERATED BY DEFAULT AS IDENTITY, ALTER COLUMN c SET GENERATED ALWAYS; \d itest3 -- ALTER COLUMN ... SET CREATE TABLE itest6 (a int GENERATED ALWAYS AS IDENTITY, b text); INSERT INTO itest6 DEFAULT VALUES; ALTER TABLE itest6 ALTER COLUMN a SET GENERATED BY DEFAULT SET INCREMENT BY 2 SET START WITH 100 RESTART; INSERT INTO itest6 DEFAULT VALUES; INSERT INTO itest6 DEFAULT VALUES; SELECT * FROM itest6; SELECT table_name, column_name, is_identity, identity_generation FROM information_schema.columns WHERE table_name = 'itest6' ORDER BY 1, 2; ALTER TABLE itest6 ALTER COLUMN b SET INCREMENT BY 2; -- fail, not identity -- prohibited direct modification of sequence ALTER SEQUENCE itest6_a_seq OWNED BY NONE; -- inheritance CREATE TABLE itest7 (a int GENERATED ALWAYS AS IDENTITY); INSERT INTO itest7 DEFAULT VALUES; SELECT * FROM itest7; -- identity property is not inherited CREATE TABLE itest7a (b text) INHERITS (itest7); -- make column identity in child table CREATE TABLE itest7b (a int); CREATE TABLE itest7c (a int GENERATED ALWAYS AS IDENTITY) INHERITS (itest7b); INSERT INTO itest7c DEFAULT VALUES; SELECT * FROM itest7c; CREATE TABLE itest7d (a int not null); CREATE TABLE itest7e () INHERITS (itest7d); ALTER TABLE itest7d ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY; ALTER TABLE itest7d ADD COLUMN b int GENERATED ALWAYS AS IDENTITY; -- error SELECT table_name, column_name, is_nullable, is_identity, identity_generation FROM information_schema.columns WHERE table_name LIKE 'itest7%' ORDER BY 1, 2; -- These ALTER TABLE variants will not recurse. ALTER TABLE itest7 ALTER COLUMN a SET GENERATED BY DEFAULT; ALTER TABLE itest7 ALTER COLUMN a RESTART; ALTER TABLE itest7 ALTER COLUMN a DROP IDENTITY; -- privileges CREATE USER regress_identity_user1; CREATE TABLE itest8 (a int GENERATED ALWAYS AS IDENTITY, b text); GRANT SELECT, INSERT ON itest8 TO regress_identity_user1; SET ROLE regress_identity_user1; INSERT INTO itest8 DEFAULT VALUES; SELECT * FROM itest8; RESET ROLE; DROP TABLE itest8; DROP USER regress_identity_user1; -- multiple steps in ALTER TABLE CREATE TABLE itest8 (f1 int); ALTER TABLE itest8 ADD COLUMN f2 int NOT NULL, ALTER COLUMN f2 ADD GENERATED ALWAYS AS IDENTITY; ALTER TABLE itest8 ADD COLUMN f3 int NOT NULL, ALTER COLUMN f3 ADD GENERATED ALWAYS AS IDENTITY, ALTER COLUMN f3 SET GENERATED BY DEFAULT SET INCREMENT 10; ALTER TABLE itest8 ADD COLUMN f4 int; ALTER TABLE itest8 ALTER COLUMN f4 SET NOT NULL, ALTER COLUMN f4 ADD GENERATED ALWAYS AS IDENTITY, ALTER COLUMN f4 SET DATA TYPE bigint; ALTER TABLE itest8 ADD COLUMN f5 int GENERATED ALWAYS AS IDENTITY; ALTER TABLE itest8 ALTER COLUMN f5 DROP IDENTITY, ALTER COLUMN f5 DROP NOT NULL, ALTER COLUMN f5 SET DATA TYPE bigint; INSERT INTO itest8 VALUES(0), (1); -- This does not work when the table isn't empty. That's intentional, -- since ADD GENERATED should only affect later insertions: ALTER TABLE itest8 ADD COLUMN f22 int NOT NULL, ALTER COLUMN f22 ADD GENERATED ALWAYS AS IDENTITY; TABLE itest8; \d+ itest8 \d itest8_f2_seq \d itest8_f3_seq \d itest8_f4_seq \d itest8_f5_seq DROP TABLE itest8; -- typed tables (currently not supported) CREATE TYPE itest_type AS (f1 integer, f2 text, f3 bigint); CREATE TABLE itest12 OF itest_type (f1 WITH OPTIONS GENERATED ALWAYS AS IDENTITY); -- error DROP TYPE itest_type CASCADE; -- table partitions (currently not supported) CREATE TABLE itest_parent (f1 date NOT NULL, f2 text, f3 bigint) PARTITION BY RANGE (f1); CREATE TABLE itest_child PARTITION OF itest_parent ( f3 WITH OPTIONS GENERATED ALWAYS AS IDENTITY ) FOR VALUES FROM ('2016-07-01') TO ('2016-08-01'); -- error DROP TABLE itest_parent; -- test that sequence of half-dropped serial column is properly ignored CREATE TABLE itest14 (id serial); ALTER TABLE itest14 ALTER id DROP DEFAULT; ALTER TABLE itest14 ALTER id ADD GENERATED BY DEFAULT AS IDENTITY; INSERT INTO itest14 (id) VALUES (DEFAULT); -- Identity columns must be NOT NULL (cf bug #16913) CREATE TABLE itest15 (id integer GENERATED ALWAYS AS IDENTITY NULL); -- fail CREATE TABLE itest15 (id integer NULL GENERATED ALWAYS AS IDENTITY); -- fail CREATE TABLE itest15 (id integer GENERATED ALWAYS AS IDENTITY NOT NULL); DROP TABLE itest15; CREATE TABLE itest15 (id integer NOT NULL GENERATED ALWAYS AS IDENTITY); DROP TABLE itest15; libpg_query-13-2.1.0/test/sql/postgres_regress/incremental_sort.sql000066400000000000000000000305321413137616400255350ustar00rootroot00000000000000-- When we have to sort the entire table, incremental sort will -- be slower than plain sort, so it should not be used. explain (costs off) select * from (select * from tenk1 order by four) t order by four, ten; -- When there is a LIMIT clause, incremental sort is beneficial because -- it only has to sort some of the groups, and not the entire table. explain (costs off) select * from (select * from tenk1 order by four) t order by four, ten limit 1; -- When work_mem is not enough to sort the entire table, incremental sort -- may be faster if individual groups still fit into work_mem. set work_mem to '2MB'; explain (costs off) select * from (select * from tenk1 order by four) t order by four, ten; reset work_mem; create table t(a integer, b integer); create or replace function explain_analyze_without_memory(query text) returns table (out_line text) language plpgsql as $$ declare line text; begin for line in execute 'explain (analyze, costs off, summary off, timing off) ' || query loop out_line := regexp_replace(line, '\d+kB', 'NNkB', 'g'); return next; end loop; end; $$; create or replace function explain_analyze_inc_sort_nodes(query text) returns jsonb language plpgsql as $$ declare elements jsonb; element jsonb; matching_nodes jsonb := '[]'::jsonb; begin execute 'explain (analyze, costs off, summary off, timing off, format ''json'') ' || query into strict elements; while jsonb_array_length(elements) > 0 loop element := elements->0; elements := elements - 0; case jsonb_typeof(element) when 'array' then if jsonb_array_length(element) > 0 then elements := elements || element; end if; when 'object' then if element ? 'Plan' then elements := elements || jsonb_build_array(element->'Plan'); element := element - 'Plan'; else if element ? 'Plans' then elements := elements || jsonb_build_array(element->'Plans'); element := element - 'Plans'; end if; if (element->>'Node Type')::text = 'Incremental Sort' then matching_nodes := matching_nodes || element; end if; end if; end case; end loop; return matching_nodes; end; $$; create or replace function explain_analyze_inc_sort_nodes_without_memory(query text) returns jsonb language plpgsql as $$ declare nodes jsonb := '[]'::jsonb; node jsonb; group_key text; space_key text; begin for node in select * from jsonb_array_elements(explain_analyze_inc_sort_nodes(query)) t loop for group_key in select unnest(array['Full-sort Groups', 'Pre-sorted Groups']::text[]) t loop for space_key in select unnest(array['Sort Space Memory', 'Sort Space Disk']::text[]) t loop node := jsonb_set(node, array[group_key, space_key, 'Average Sort Space Used'], '"NN"', false); node := jsonb_set(node, array[group_key, space_key, 'Peak Sort Space Used'], '"NN"', false); end loop; end loop; nodes := nodes || node; end loop; return nodes; end; $$; create or replace function explain_analyze_inc_sort_nodes_verify_invariants(query text) returns bool language plpgsql as $$ declare node jsonb; group_stats jsonb; group_key text; space_key text; begin for node in select * from jsonb_array_elements(explain_analyze_inc_sort_nodes(query)) t loop for group_key in select unnest(array['Full-sort Groups', 'Pre-sorted Groups']::text[]) t loop group_stats := node->group_key; for space_key in select unnest(array['Sort Space Memory', 'Sort Space Disk']::text[]) t loop if (group_stats->space_key->'Peak Sort Space Used')::bigint < (group_stats->space_key->'Peak Sort Space Used')::bigint then raise exception '% has invalid max space < average space', group_key; end if; end loop; end loop; end loop; return true; end; $$; -- A single large group tested around each mode transition point. insert into t(a, b) select i/100 + 1, i + 1 from generate_series(0, 999) n(i); analyze t; explain (costs off) select * from (select * from t order by a) s order by a, b limit 31; select * from (select * from t order by a) s order by a, b limit 31; explain (costs off) select * from (select * from t order by a) s order by a, b limit 32; select * from (select * from t order by a) s order by a, b limit 32; explain (costs off) select * from (select * from t order by a) s order by a, b limit 33; select * from (select * from t order by a) s order by a, b limit 33; explain (costs off) select * from (select * from t order by a) s order by a, b limit 65; select * from (select * from t order by a) s order by a, b limit 65; explain (costs off) select * from (select * from t order by a) s order by a, b limit 66; select * from (select * from t order by a) s order by a, b limit 66; delete from t; -- An initial large group followed by a small group. insert into t(a, b) select i/50 + 1, i + 1 from generate_series(0, 999) n(i); analyze t; explain (costs off) select * from (select * from t order by a) s order by a, b limit 55; select * from (select * from t order by a) s order by a, b limit 55; -- Test EXPLAIN ANALYZE with only a fullsort group. select explain_analyze_without_memory('select * from (select * from t order by a) s order by a, b limit 55'); select jsonb_pretty(explain_analyze_inc_sort_nodes_without_memory('select * from (select * from t order by a) s order by a, b limit 55')); select explain_analyze_inc_sort_nodes_verify_invariants('select * from (select * from t order by a) s order by a, b limit 55'); delete from t; -- An initial small group followed by a large group. insert into t(a, b) select (case when i < 5 then i else 9 end), i from generate_series(1, 1000) n(i); analyze t; explain (costs off) select * from (select * from t order by a) s order by a, b limit 70; select * from (select * from t order by a) s order by a, b limit 70; -- Checks case where we hit a group boundary at the last tuple of a batch. -- Because the full sort state is bounded, we scan 64 tuples (the mode -- transition point) but only retain 5. Thus when we transition modes, all -- tuples in the full sort state have different prefix keys. explain (costs off) select * from (select * from t order by a) s order by a, b limit 5; select * from (select * from t order by a) s order by a, b limit 5; -- Test rescan. begin; -- We force the planner to choose a plan with incremental sort on the right side -- of a nested loop join node. That way we trigger the rescan code path. set local enable_hashjoin = off; set local enable_mergejoin = off; set local enable_material = off; set local enable_sort = off; explain (costs off) select * from t left join (select * from (select * from t order by a) v order by a, b) s on s.a = t.a where t.a in (1, 2); select * from t left join (select * from (select * from t order by a) v order by a, b) s on s.a = t.a where t.a in (1, 2); rollback; -- Test EXPLAIN ANALYZE with both fullsort and presorted groups. select explain_analyze_without_memory('select * from (select * from t order by a) s order by a, b limit 70'); select jsonb_pretty(explain_analyze_inc_sort_nodes_without_memory('select * from (select * from t order by a) s order by a, b limit 70')); select explain_analyze_inc_sort_nodes_verify_invariants('select * from (select * from t order by a) s order by a, b limit 70'); delete from t; -- Small groups of 10 tuples each tested around each mode transition point. insert into t(a, b) select i / 10, i from generate_series(1, 1000) n(i); analyze t; explain (costs off) select * from (select * from t order by a) s order by a, b limit 31; select * from (select * from t order by a) s order by a, b limit 31; explain (costs off) select * from (select * from t order by a) s order by a, b limit 32; select * from (select * from t order by a) s order by a, b limit 32; explain (costs off) select * from (select * from t order by a) s order by a, b limit 33; select * from (select * from t order by a) s order by a, b limit 33; explain (costs off) select * from (select * from t order by a) s order by a, b limit 65; select * from (select * from t order by a) s order by a, b limit 65; explain (costs off) select * from (select * from t order by a) s order by a, b limit 66; select * from (select * from t order by a) s order by a, b limit 66; delete from t; -- Small groups of only 1 tuple each tested around each mode transition point. insert into t(a, b) select i, i from generate_series(1, 1000) n(i); analyze t; explain (costs off) select * from (select * from t order by a) s order by a, b limit 31; select * from (select * from t order by a) s order by a, b limit 31; explain (costs off) select * from (select * from t order by a) s order by a, b limit 32; select * from (select * from t order by a) s order by a, b limit 32; explain (costs off) select * from (select * from t order by a) s order by a, b limit 33; select * from (select * from t order by a) s order by a, b limit 33; explain (costs off) select * from (select * from t order by a) s order by a, b limit 65; select * from (select * from t order by a) s order by a, b limit 65; explain (costs off) select * from (select * from t order by a) s order by a, b limit 66; select * from (select * from t order by a) s order by a, b limit 66; delete from t; drop table t; -- Incremental sort vs. parallel queries set min_parallel_table_scan_size = '1kB'; set min_parallel_index_scan_size = '1kB'; set parallel_setup_cost = 0; set parallel_tuple_cost = 0; set max_parallel_workers_per_gather = 2; create table t (a int, b int, c int); insert into t select mod(i,10),mod(i,10),i from generate_series(1,10000) s(i); create index on t (a); analyze t; set enable_incremental_sort = off; explain (costs off) select a,b,sum(c) from t group by 1,2 order by 1,2,3 limit 1; set enable_incremental_sort = on; explain (costs off) select a,b,sum(c) from t group by 1,2 order by 1,2,3 limit 1; -- Incremental sort vs. set operations with varno 0 set enable_hashagg to off; explain (costs off) select * from t union select * from t order by 1,3; -- Full sort, not just incremental sort can be pushed below a gather merge path -- by generate_useful_gather_paths. explain (costs off) select distinct a,b from t; drop table t; -- Sort pushdown can't go below where expressions are part of the rel target. -- In particular this is interesting for volatile expressions which have to -- go above joins since otherwise we'll incorrectly use expression evaluations -- across multiple rows. set enable_hashagg=off; set enable_seqscan=off; set enable_incremental_sort = off; set parallel_tuple_cost=0; set parallel_setup_cost=0; set min_parallel_table_scan_size = 0; set min_parallel_index_scan_size = 0; -- Parallel sort below join. explain (costs off) select distinct sub.unique1, stringu1 from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub; explain (costs off) select sub.unique1, stringu1 from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub order by 1, 2; -- Parallel sort but with expression that can be safely generated at the base rel. explain (costs off) select distinct sub.unique1, md5(stringu1) from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub; explain (costs off) select sub.unique1, md5(stringu1) from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub order by 1, 2; -- Parallel sort with an aggregate that can be safely generated in parallel, -- but we can't sort by partial aggregate values. explain (costs off) select count(*) from tenk1 t1 join tenk1 t2 on t1.unique1 = t2.unique2 join tenk1 t3 on t2.unique1 = t3.unique1 order by count(*); -- Parallel sort but with expression (correlated subquery) that -- is prohibited in parallel plans. explain (costs off) select distinct unique1, (select t.unique1 from tenk1 where tenk1.unique1 = t.unique1) from tenk1 t, generate_series(1, 1000); explain (costs off) select unique1, (select t.unique1 from tenk1 where tenk1.unique1 = t.unique1) from tenk1 t, generate_series(1, 1000) order by 1, 2; -- Parallel sort but with expression not available until the upper rel. explain (costs off) select distinct sub.unique1, stringu1 || random()::text from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub; explain (costs off) select sub.unique1, stringu1 || random()::text from tenk1, lateral (select tenk1.unique1 from generate_series(1, 1000)) as sub order by 1, 2; -- Disallow pushing down sort when pathkey is an SRF. explain (costs off) select unique1 from tenk1 order by unnest('{1,2}'::int[]); libpg_query-13-2.1.0/test/sql/postgres_regress/index_including.sql000066400000000000000000000236661413137616400253420ustar00rootroot00000000000000/* * 1.test CREATE INDEX * * Deliberately avoid dropping objects in this section, to get some pg_dump * coverage. */ -- Regular index with included columns CREATE TABLE tbl_include_reg (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl_include_reg SELECT x, 2*x, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; CREATE INDEX tbl_include_reg_idx ON tbl_include_reg (c1, c2) INCLUDE (c3, c4); -- duplicate column is pretty pointless, but we allow it anyway CREATE INDEX ON tbl_include_reg (c1, c2) INCLUDE (c1, c3); SELECT pg_get_indexdef(i.indexrelid) FROM pg_index i JOIN pg_class c ON i.indexrelid = c.oid WHERE i.indrelid = 'tbl_include_reg'::regclass ORDER BY c.relname; \d tbl_include_reg_idx -- Unique index and unique constraint CREATE TABLE tbl_include_unique1 (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl_include_unique1 SELECT x, 2*x, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; CREATE UNIQUE INDEX tbl_include_unique1_idx_unique ON tbl_include_unique1 using btree (c1, c2) INCLUDE (c3, c4); ALTER TABLE tbl_include_unique1 add UNIQUE USING INDEX tbl_include_unique1_idx_unique; ALTER TABLE tbl_include_unique1 add UNIQUE (c1, c2) INCLUDE (c3, c4); SELECT pg_get_indexdef(i.indexrelid) FROM pg_index i JOIN pg_class c ON i.indexrelid = c.oid WHERE i.indrelid = 'tbl_include_unique1'::regclass ORDER BY c.relname; -- Unique index and unique constraint. Both must fail. CREATE TABLE tbl_include_unique2 (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl_include_unique2 SELECT 1, 2, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; CREATE UNIQUE INDEX tbl_include_unique2_idx_unique ON tbl_include_unique2 using btree (c1, c2) INCLUDE (c3, c4); ALTER TABLE tbl_include_unique2 add UNIQUE (c1, c2) INCLUDE (c3, c4); -- PK constraint CREATE TABLE tbl_include_pk (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl_include_pk SELECT 1, 2*x, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; ALTER TABLE tbl_include_pk add PRIMARY KEY (c1, c2) INCLUDE (c3, c4); SELECT pg_get_indexdef(i.indexrelid) FROM pg_index i JOIN pg_class c ON i.indexrelid = c.oid WHERE i.indrelid = 'tbl_include_pk'::regclass ORDER BY c.relname; CREATE TABLE tbl_include_box (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl_include_box SELECT 1, 2*x, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; CREATE UNIQUE INDEX tbl_include_box_idx_unique ON tbl_include_box using btree (c1, c2) INCLUDE (c3, c4); ALTER TABLE tbl_include_box add PRIMARY KEY USING INDEX tbl_include_box_idx_unique; SELECT pg_get_indexdef(i.indexrelid) FROM pg_index i JOIN pg_class c ON i.indexrelid = c.oid WHERE i.indrelid = 'tbl_include_box'::regclass ORDER BY c.relname; -- PK constraint. Must fail. CREATE TABLE tbl_include_box_pk (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl_include_box_pk SELECT 1, 2, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; ALTER TABLE tbl_include_box_pk add PRIMARY KEY (c1, c2) INCLUDE (c3, c4); /* * 2. Test CREATE TABLE with constraint */ CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 box, CONSTRAINT covering UNIQUE(c1,c2) INCLUDE(c3,c4)); SELECT indexrelid::regclass, indnatts, indnkeyatts, indisunique, indisprimary, indkey, indclass FROM pg_index WHERE indrelid = 'tbl'::regclass::oid; SELECT pg_get_constraintdef(oid), conname, conkey FROM pg_constraint WHERE conrelid = 'tbl'::regclass::oid; -- ensure that constraint works INSERT INTO tbl SELECT 1, 2, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; DROP TABLE tbl; CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 box, CONSTRAINT covering PRIMARY KEY(c1,c2) INCLUDE(c3,c4)); SELECT indexrelid::regclass, indnatts, indnkeyatts, indisunique, indisprimary, indkey, indclass FROM pg_index WHERE indrelid = 'tbl'::regclass::oid; SELECT pg_get_constraintdef(oid), conname, conkey FROM pg_constraint WHERE conrelid = 'tbl'::regclass::oid; -- ensure that constraint works INSERT INTO tbl SELECT 1, 2, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; INSERT INTO tbl SELECT 1, NULL, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; INSERT INTO tbl SELECT x, 2*x, NULL, NULL FROM generate_series(1,300) AS x; explain (costs off) select * from tbl where (c1,c2,c3) < (2,5,1); select * from tbl where (c1,c2,c3) < (2,5,1); -- row comparison that compares high key at page boundary SET enable_seqscan = off; explain (costs off) select * from tbl where (c1,c2,c3) < (262,1,1) limit 1; select * from tbl where (c1,c2,c3) < (262,1,1) limit 1; DROP TABLE tbl; RESET enable_seqscan; CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 box, UNIQUE(c1,c2) INCLUDE(c3,c4)); SELECT indexrelid::regclass, indnatts, indnkeyatts, indisunique, indisprimary, indkey, indclass FROM pg_index WHERE indrelid = 'tbl'::regclass::oid; SELECT pg_get_constraintdef(oid), conname, conkey FROM pg_constraint WHERE conrelid = 'tbl'::regclass::oid; -- ensure that constraint works INSERT INTO tbl SELECT 1, 2, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; DROP TABLE tbl; CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 box, PRIMARY KEY(c1,c2) INCLUDE(c3,c4)); SELECT indexrelid::regclass, indnatts, indnkeyatts, indisunique, indisprimary, indkey, indclass FROM pg_index WHERE indrelid = 'tbl'::regclass::oid; SELECT pg_get_constraintdef(oid), conname, conkey FROM pg_constraint WHERE conrelid = 'tbl'::regclass::oid; -- ensure that constraint works INSERT INTO tbl SELECT 1, 2, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; INSERT INTO tbl SELECT 1, NULL, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; INSERT INTO tbl SELECT x, 2*x, NULL, NULL FROM generate_series(1,10) AS x; DROP TABLE tbl; CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 box, EXCLUDE USING btree (c1 WITH =) INCLUDE(c3,c4)); SELECT indexrelid::regclass, indnatts, indnkeyatts, indisunique, indisprimary, indkey, indclass FROM pg_index WHERE indrelid = 'tbl'::regclass::oid; SELECT pg_get_constraintdef(oid), conname, conkey FROM pg_constraint WHERE conrelid = 'tbl'::regclass::oid; -- ensure that constraint works INSERT INTO tbl SELECT 1, 2, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; INSERT INTO tbl SELECT x, 2*x, NULL, NULL FROM generate_series(1,10) AS x; DROP TABLE tbl; /* * 3.0 Test ALTER TABLE DROP COLUMN. * Any column deletion leads to index deletion. */ CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 int); CREATE UNIQUE INDEX tbl_idx ON tbl using btree(c1, c2, c3, c4); SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; ALTER TABLE tbl DROP COLUMN c3; SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; DROP TABLE tbl; /* * 3.1 Test ALTER TABLE DROP COLUMN. * Included column deletion leads to the index deletion, * AS well AS key columns deletion. It's explained in documentation. */ CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 box); CREATE UNIQUE INDEX tbl_idx ON tbl using btree(c1, c2) INCLUDE(c3,c4); SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; ALTER TABLE tbl DROP COLUMN c3; SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; DROP TABLE tbl; /* * 3.2 Test ALTER TABLE DROP COLUMN. * Included column deletion leads to the index deletion. * AS well AS key columns deletion. It's explained in documentation. */ CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 box, UNIQUE(c1, c2) INCLUDE(c3,c4)); SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; ALTER TABLE tbl DROP COLUMN c3; SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; ALTER TABLE tbl DROP COLUMN c1; SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; DROP TABLE tbl; /* * 3.3 Test ALTER TABLE SET STATISTICS */ CREATE TABLE tbl (c1 int, c2 int); CREATE INDEX tbl_idx ON tbl (c1, (c1+0)) INCLUDE (c2); ALTER INDEX tbl_idx ALTER COLUMN 1 SET STATISTICS 1000; ALTER INDEX tbl_idx ALTER COLUMN 2 SET STATISTICS 1000; ALTER INDEX tbl_idx ALTER COLUMN 3 SET STATISTICS 1000; ALTER INDEX tbl_idx ALTER COLUMN 4 SET STATISTICS 1000; DROP TABLE tbl; /* * 4. CREATE INDEX CONCURRENTLY */ CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 box, UNIQUE(c1, c2) INCLUDE(c3,c4)); INSERT INTO tbl SELECT x, 2*x, 3*x, box('4,4,4,4') FROM generate_series(1,1000) AS x; CREATE UNIQUE INDEX CONCURRENTLY on tbl (c1, c2) INCLUDE (c3, c4); SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; DROP TABLE tbl; /* * 5. REINDEX */ CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 box, UNIQUE(c1, c2) INCLUDE(c3,c4)); SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; ALTER TABLE tbl DROP COLUMN c3; SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; REINDEX INDEX tbl_c1_c2_c3_c4_key; SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; ALTER TABLE tbl DROP COLUMN c1; SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl' ORDER BY indexname; DROP TABLE tbl; /* * 7. Check various AMs. All but btree and gist must fail. */ CREATE TABLE tbl (c1 int,c2 int, c3 box, c4 box); CREATE INDEX on tbl USING brin(c1, c2) INCLUDE (c3, c4); CREATE INDEX on tbl USING gist(c3) INCLUDE (c1, c4); CREATE INDEX on tbl USING spgist(c3) INCLUDE (c4); CREATE INDEX on tbl USING gin(c1, c2) INCLUDE (c3, c4); CREATE INDEX on tbl USING hash(c1, c2) INCLUDE (c3, c4); CREATE INDEX on tbl USING rtree(c3) INCLUDE (c1, c4); CREATE INDEX on tbl USING btree(c1, c2) INCLUDE (c3, c4); DROP TABLE tbl; /* * 8. Update, delete values in indexed table. */ CREATE TABLE tbl (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl SELECT x, 2*x, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; CREATE UNIQUE INDEX tbl_idx_unique ON tbl using btree(c1, c2) INCLUDE (c3,c4); UPDATE tbl SET c1 = 100 WHERE c1 = 2; UPDATE tbl SET c1 = 1 WHERE c1 = 3; -- should fail UPDATE tbl SET c2 = 2 WHERE c1 = 1; UPDATE tbl SET c3 = 1; DELETE FROM tbl WHERE c1 = 5 OR c3 = 12; DROP TABLE tbl; /* * 9. Alter column type. */ CREATE TABLE tbl (c1 int,c2 int, c3 int, c4 box, UNIQUE(c1, c2) INCLUDE(c3,c4)); INSERT INTO tbl SELECT x, 2*x, 3*x, box('4,4,4,4') FROM generate_series(1,10) AS x; ALTER TABLE tbl ALTER c1 TYPE bigint; ALTER TABLE tbl ALTER c3 TYPE bigint; \d tbl DROP TABLE tbl; libpg_query-13-2.1.0/test/sql/postgres_regress/index_including_gist.sql000066400000000000000000000074401413137616400263600ustar00rootroot00000000000000/* * 1.1. test CREATE INDEX with buffered build */ -- Regular index with included columns CREATE TABLE tbl_gist (c1 int, c2 int, c3 int, c4 box); -- size is chosen to exceed page size and trigger actual truncation INSERT INTO tbl_gist SELECT x, 2*x, 3*x, box(point(x,x+1),point(2*x,2*x+1)) FROM generate_series(1,8000) AS x; CREATE INDEX tbl_gist_idx ON tbl_gist using gist (c4) INCLUDE (c1,c2,c3); SELECT pg_get_indexdef(i.indexrelid) FROM pg_index i JOIN pg_class c ON i.indexrelid = c.oid WHERE i.indrelid = 'tbl_gist'::regclass ORDER BY c.relname; SELECT * FROM tbl_gist where c4 <@ box(point(1,1),point(10,10)); SET enable_bitmapscan TO off; EXPLAIN (costs off) SELECT * FROM tbl_gist where c4 <@ box(point(1,1),point(10,10)); SET enable_bitmapscan TO default; DROP TABLE tbl_gist; /* * 1.2. test CREATE INDEX with inserts */ -- Regular index with included columns CREATE TABLE tbl_gist (c1 int, c2 int, c3 int, c4 box); -- size is chosen to exceed page size and trigger actual truncation CREATE INDEX tbl_gist_idx ON tbl_gist using gist (c4) INCLUDE (c1,c2,c3); INSERT INTO tbl_gist SELECT x, 2*x, 3*x, box(point(x,x+1),point(2*x,2*x+1)) FROM generate_series(1,8000) AS x; SELECT pg_get_indexdef(i.indexrelid) FROM pg_index i JOIN pg_class c ON i.indexrelid = c.oid WHERE i.indrelid = 'tbl_gist'::regclass ORDER BY c.relname; SELECT * FROM tbl_gist where c4 <@ box(point(1,1),point(10,10)); SET enable_bitmapscan TO off; EXPLAIN (costs off) SELECT * FROM tbl_gist where c4 <@ box(point(1,1),point(10,10)); SET enable_bitmapscan TO default; DROP TABLE tbl_gist; /* * 2. CREATE INDEX CONCURRENTLY */ CREATE TABLE tbl_gist (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl_gist SELECT x, 2*x, 3*x, box(point(x,x+1),point(2*x,2*x+1)) FROM generate_series(1,10) AS x; CREATE INDEX CONCURRENTLY tbl_gist_idx ON tbl_gist using gist (c4) INCLUDE (c1,c2,c3); SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl_gist' ORDER BY indexname; DROP TABLE tbl_gist; /* * 3. REINDEX */ CREATE TABLE tbl_gist (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl_gist SELECT x, 2*x, 3*x, box(point(x,x+1),point(2*x,2*x+1)) FROM generate_series(1,10) AS x; CREATE INDEX tbl_gist_idx ON tbl_gist using gist (c4) INCLUDE (c1,c3); SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl_gist' ORDER BY indexname; REINDEX INDEX tbl_gist_idx; SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl_gist' ORDER BY indexname; ALTER TABLE tbl_gist DROP COLUMN c1; SELECT indexdef FROM pg_indexes WHERE tablename = 'tbl_gist' ORDER BY indexname; DROP TABLE tbl_gist; /* * 4. Update, delete values in indexed table. */ CREATE TABLE tbl_gist (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl_gist SELECT x, 2*x, 3*x, box(point(x,x+1),point(2*x,2*x+1)) FROM generate_series(1,10) AS x; CREATE INDEX tbl_gist_idx ON tbl_gist using gist (c4) INCLUDE (c1,c3); UPDATE tbl_gist SET c1 = 100 WHERE c1 = 2; UPDATE tbl_gist SET c1 = 1 WHERE c1 = 3; DELETE FROM tbl_gist WHERE c1 = 5 OR c3 = 12; DROP TABLE tbl_gist; /* * 5. Alter column type. */ CREATE TABLE tbl_gist (c1 int, c2 int, c3 int, c4 box); INSERT INTO tbl_gist SELECT x, 2*x, 3*x, box(point(x,x+1),point(2*x,2*x+1)) FROM generate_series(1,10) AS x; CREATE INDEX tbl_gist_idx ON tbl_gist using gist (c4) INCLUDE (c1,c3); ALTER TABLE tbl_gist ALTER c1 TYPE bigint; ALTER TABLE tbl_gist ALTER c3 TYPE bigint; \d tbl_gist DROP TABLE tbl_gist; /* * 6. EXCLUDE constraint. */ CREATE TABLE tbl_gist (c1 int, c2 int, c3 int, c4 box, EXCLUDE USING gist (c4 WITH &&) INCLUDE (c1, c2, c3)); INSERT INTO tbl_gist SELECT x, 2*x, 3*x, box(point(x,x+1),point(2*x,2*x+1)) FROM generate_series(1,10) AS x; INSERT INTO tbl_gist SELECT x, 2*x, 3*x, box(point(3*x,2*x),point(3*x+1,2*x+1)) FROM generate_series(1,10) AS x; EXPLAIN (costs off) SELECT * FROM tbl_gist where c4 <@ box(point(1,1),point(10,10)); \d tbl_gist DROP TABLE tbl_gist; libpg_query-13-2.1.0/test/sql/postgres_regress/indexing.sql000066400000000000000000001102121413137616400237640ustar00rootroot00000000000000-- Creating an index on a partitioned table makes the partitions -- automatically get the index create table idxpart (a int, b int, c text) partition by range (a); -- relhassubclass of a partitioned index is false before creating any partition. -- It will be set after the first partition is created. create index idxpart_idx on idxpart (a); select relhassubclass from pg_class where relname = 'idxpart_idx'; -- Check that partitioned indexes are present in pg_indexes. select indexdef from pg_indexes where indexname like 'idxpart_idx%'; drop index idxpart_idx; create table idxpart1 partition of idxpart for values from (0) to (10); create table idxpart2 partition of idxpart for values from (10) to (100) partition by range (b); create table idxpart21 partition of idxpart2 for values from (0) to (100); -- Even with partitions, relhassubclass should not be set if a partitioned -- index is created only on the parent. create index idxpart_idx on only idxpart(a); select relhassubclass from pg_class where relname = 'idxpart_idx'; drop index idxpart_idx; create index on idxpart (a); select relname, relkind, relhassubclass, inhparent::regclass from pg_class left join pg_index ix on (indexrelid = oid) left join pg_inherits on (ix.indexrelid = inhrelid) where relname like 'idxpart%' order by relname; drop table idxpart; -- Some unsupported features create table idxpart (a int, b int, c text) partition by range (a); create table idxpart1 partition of idxpart for values from (0) to (10); create index concurrently on idxpart (a); drop table idxpart; -- Verify bugfix with query on indexed partitioned table with no partitions -- https://postgr.es/m/20180124162006.pmapfiznhgngwtjf@alvherre.pgsql CREATE TABLE idxpart (col1 INT) PARTITION BY RANGE (col1); CREATE INDEX ON idxpart (col1); CREATE TABLE idxpart_two (col2 INT); SELECT col2 FROM idxpart_two fk LEFT OUTER JOIN idxpart pk ON (col1 = col2); DROP table idxpart, idxpart_two; -- Verify bugfix with index rewrite on ALTER TABLE / SET DATA TYPE -- https://postgr.es/m/CAKcux6mxNCGsgATwf5CGMF8g4WSupCXicCVMeKUTuWbyxHOMsQ@mail.gmail.com CREATE TABLE idxpart (a INT, b TEXT, c INT) PARTITION BY RANGE(a); CREATE TABLE idxpart1 PARTITION OF idxpart FOR VALUES FROM (MINVALUE) TO (MAXVALUE); CREATE INDEX partidx_abc_idx ON idxpart (a, b, c); INSERT INTO idxpart (a, b, c) SELECT i, i, i FROM generate_series(1, 50) i; ALTER TABLE idxpart ALTER COLUMN c TYPE numeric; DROP TABLE idxpart; -- If a table without index is attached as partition to a table with -- an index, the index is automatically created create table idxpart (a int, b int, c text) partition by range (a); create index idxparti on idxpart (a); create index idxparti2 on idxpart (b, c); create table idxpart1 (like idxpart); \d idxpart1 alter table idxpart attach partition idxpart1 for values from (0) to (10); \d idxpart1 \d+ idxpart1_a_idx \d+ idxpart1_b_c_idx -- Forbid ALTER TABLE when attaching or detaching an index to a partition. create index idxpart_c on only idxpart (c); create index idxpart1_c on idxpart1 (c); alter table idxpart_c attach partition idxpart1_c for values from (10) to (20); alter index idxpart_c attach partition idxpart1_c; select relname, relpartbound from pg_class where relname in ('idxpart_c', 'idxpart1_c') order by relname; alter table idxpart_c detach partition idxpart1_c; drop table idxpart; -- If a partition already has an index, don't create a duplicative one create table idxpart (a int, b int) partition by range (a, b); create table idxpart1 partition of idxpart for values from (0, 0) to (10, 10); create index on idxpart1 (a, b); create index on idxpart (a, b); \d idxpart1 select relname, relkind, relhassubclass, inhparent::regclass from pg_class left join pg_index ix on (indexrelid = oid) left join pg_inherits on (ix.indexrelid = inhrelid) where relname like 'idxpart%' order by relname; drop table idxpart; -- DROP behavior for partitioned indexes create table idxpart (a int) partition by range (a); create index on idxpart (a); create table idxpart1 partition of idxpart for values from (0) to (10); drop index idxpart1_a_idx; -- no way drop index concurrently idxpart_a_idx; -- unsupported drop index idxpart_a_idx; -- both indexes go away select relname, relkind from pg_class where relname like 'idxpart%' order by relname; create index on idxpart (a); drop table idxpart1; -- the index on partition goes away too select relname, relkind from pg_class where relname like 'idxpart%' order by relname; drop table idxpart; -- DROP behavior with temporary partitioned indexes create temp table idxpart_temp (a int) partition by range (a); create index on idxpart_temp(a); create temp table idxpart1_temp partition of idxpart_temp for values from (0) to (10); drop index idxpart1_temp_a_idx; -- error -- non-concurrent drop is enforced here, so it is a valid case. drop index concurrently idxpart_temp_a_idx; select relname, relkind from pg_class where relname like 'idxpart_temp%' order by relname; drop table idxpart_temp; -- ALTER INDEX .. ATTACH, error cases create table idxpart (a int, b int) partition by range (a, b); create table idxpart1 partition of idxpart for values from (0, 0) to (10, 10); create index idxpart_a_b_idx on only idxpart (a, b); create index idxpart1_a_b_idx on idxpart1 (a, b); create index idxpart1_tst1 on idxpart1 (b, a); create index idxpart1_tst2 on idxpart1 using hash (a); create index idxpart1_tst3 on idxpart1 (a, b) where a > 10; alter index idxpart attach partition idxpart1; alter index idxpart_a_b_idx attach partition idxpart1; alter index idxpart_a_b_idx attach partition idxpart_a_b_idx; alter index idxpart_a_b_idx attach partition idxpart1_b_idx; alter index idxpart_a_b_idx attach partition idxpart1_tst1; alter index idxpart_a_b_idx attach partition idxpart1_tst2; alter index idxpart_a_b_idx attach partition idxpart1_tst3; -- OK alter index idxpart_a_b_idx attach partition idxpart1_a_b_idx; alter index idxpart_a_b_idx attach partition idxpart1_a_b_idx; -- quiet -- reject dupe create index idxpart1_2_a_b on idxpart1 (a, b); alter index idxpart_a_b_idx attach partition idxpart1_2_a_b; drop table idxpart; -- make sure everything's gone select indexrelid::regclass, indrelid::regclass from pg_index where indexrelid::regclass::text like 'idxpart%'; -- Don't auto-attach incompatible indexes create table idxpart (a int, b int) partition by range (a); create table idxpart1 (a int, b int); create index on idxpart1 using hash (a); create index on idxpart1 (a) where b > 1; create index on idxpart1 ((a + 0)); create index on idxpart1 (a, a); create index on idxpart (a); alter table idxpart attach partition idxpart1 for values from (0) to (1000); \d idxpart1 drop table idxpart; -- If CREATE INDEX ONLY, don't create indexes on partitions; and existing -- indexes on partitions don't change parent. ALTER INDEX ATTACH can change -- the parent after the fact. create table idxpart (a int) partition by range (a); create table idxpart1 partition of idxpart for values from (0) to (100); create table idxpart2 partition of idxpart for values from (100) to (1000) partition by range (a); create table idxpart21 partition of idxpart2 for values from (100) to (200); create table idxpart22 partition of idxpart2 for values from (200) to (300); create index on idxpart22 (a); create index on only idxpart2 (a); create index on idxpart (a); -- Here we expect that idxpart1 and idxpart2 have a new index, but idxpart21 -- does not; also, idxpart22 is not attached. \d idxpart1 \d idxpart2 \d idxpart21 select indexrelid::regclass, indrelid::regclass, inhparent::regclass from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) where indexrelid::regclass::text like 'idxpart%' order by indexrelid::regclass::text collate "C"; alter index idxpart2_a_idx attach partition idxpart22_a_idx; select indexrelid::regclass, indrelid::regclass, inhparent::regclass from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) where indexrelid::regclass::text like 'idxpart%' order by indexrelid::regclass::text collate "C"; -- attaching idxpart22 is not enough to set idxpart22_a_idx valid ... alter index idxpart2_a_idx attach partition idxpart22_a_idx; \d idxpart2 -- ... but this one is. create index on idxpart21 (a); alter index idxpart2_a_idx attach partition idxpart21_a_idx; \d idxpart2 drop table idxpart; -- When a table is attached a partition and it already has an index, a -- duplicate index should not get created, but rather the index becomes -- attached to the parent's index. create table idxpart (a int, b int, c text) partition by range (a); create index idxparti on idxpart (a); create index idxparti2 on idxpart (b, c); create table idxpart1 (like idxpart including indexes); \d idxpart1 select relname, relkind, inhparent::regclass from pg_class left join pg_index ix on (indexrelid = oid) left join pg_inherits on (ix.indexrelid = inhrelid) where relname like 'idxpart%' order by relname; alter table idxpart attach partition idxpart1 for values from (0) to (10); \d idxpart1 select relname, relkind, inhparent::regclass from pg_class left join pg_index ix on (indexrelid = oid) left join pg_inherits on (ix.indexrelid = inhrelid) where relname like 'idxpart%' order by relname; drop table idxpart; -- Verify that attaching an invalid index does not mark the parent index valid. -- On the other hand, attaching a valid index marks not only its direct -- ancestor valid, but also any indirect ancestor that was only missing the one -- that was just made valid create table idxpart (a int, b int) partition by range (a); create table idxpart1 partition of idxpart for values from (1) to (1000) partition by range (a); create table idxpart11 partition of idxpart1 for values from (1) to (100); create index on only idxpart1 (a); create index on only idxpart (a); -- this results in two invalid indexes: select relname, indisvalid from pg_class join pg_index on indexrelid = oid where relname like 'idxpart%' order by relname; -- idxpart1_a_idx is not valid, so idxpart_a_idx should not become valid: alter index idxpart_a_idx attach partition idxpart1_a_idx; select relname, indisvalid from pg_class join pg_index on indexrelid = oid where relname like 'idxpart%' order by relname; -- after creating and attaching this, both idxpart1_a_idx and idxpart_a_idx -- should become valid create index on idxpart11 (a); alter index idxpart1_a_idx attach partition idxpart11_a_idx; select relname, indisvalid from pg_class join pg_index on indexrelid = oid where relname like 'idxpart%' order by relname; drop table idxpart; -- verify dependency handling during ALTER TABLE DETACH PARTITION create table idxpart (a int) partition by range (a); create table idxpart1 (like idxpart); create index on idxpart1 (a); create index on idxpart (a); create table idxpart2 (like idxpart); alter table idxpart attach partition idxpart1 for values from (0000) to (1000); alter table idxpart attach partition idxpart2 for values from (1000) to (2000); create table idxpart3 partition of idxpart for values from (2000) to (3000); select relname, relkind from pg_class where relname like 'idxpart%' order by relname; -- a) after detaching partitions, the indexes can be dropped independently alter table idxpart detach partition idxpart1; alter table idxpart detach partition idxpart2; alter table idxpart detach partition idxpart3; drop index idxpart1_a_idx; drop index idxpart2_a_idx; drop index idxpart3_a_idx; select relname, relkind from pg_class where relname like 'idxpart%' order by relname; drop table idxpart, idxpart1, idxpart2, idxpart3; select relname, relkind from pg_class where relname like 'idxpart%' order by relname; create table idxpart (a int) partition by range (a); create table idxpart1 (like idxpart); create index on idxpart1 (a); create index on idxpart (a); create table idxpart2 (like idxpart); alter table idxpart attach partition idxpart1 for values from (0000) to (1000); alter table idxpart attach partition idxpart2 for values from (1000) to (2000); create table idxpart3 partition of idxpart for values from (2000) to (3000); -- b) after detaching, dropping the index on parent does not remove the others select relname, relkind from pg_class where relname like 'idxpart%' order by relname; alter table idxpart detach partition idxpart1; alter table idxpart detach partition idxpart2; alter table idxpart detach partition idxpart3; drop index idxpart_a_idx; select relname, relkind from pg_class where relname like 'idxpart%' order by relname; drop table idxpart, idxpart1, idxpart2, idxpart3; select relname, relkind from pg_class where relname like 'idxpart%' order by relname; create table idxpart (a int, b int, c int) partition by range(a); create index on idxpart(c); create table idxpart1 partition of idxpart for values from (0) to (250); create table idxpart2 partition of idxpart for values from (250) to (500); alter table idxpart detach partition idxpart2; \d idxpart2 alter table idxpart2 drop column c; \d idxpart2 drop table idxpart, idxpart2; -- Verify that expression indexes inherit correctly create table idxpart (a int, b int) partition by range (a); create table idxpart1 (like idxpart); create index on idxpart1 ((a + b)); create index on idxpart ((a + b)); create table idxpart2 (like idxpart); alter table idxpart attach partition idxpart1 for values from (0000) to (1000); alter table idxpart attach partition idxpart2 for values from (1000) to (2000); create table idxpart3 partition of idxpart for values from (2000) to (3000); select relname as child, inhparent::regclass as parent, pg_get_indexdef as childdef from pg_class join pg_inherits on inhrelid = oid, lateral pg_get_indexdef(pg_class.oid) where relkind in ('i', 'I') and relname like 'idxpart%' order by relname; drop table idxpart; -- Verify behavior for collation (mis)matches create table idxpart (a text) partition by range (a); create table idxpart1 (like idxpart); create table idxpart2 (like idxpart); create index on idxpart2 (a collate "POSIX"); create index on idxpart2 (a); create index on idxpart2 (a collate "C"); alter table idxpart attach partition idxpart1 for values from ('aaa') to ('bbb'); alter table idxpart attach partition idxpart2 for values from ('bbb') to ('ccc'); create table idxpart3 partition of idxpart for values from ('ccc') to ('ddd'); create index on idxpart (a collate "C"); create table idxpart4 partition of idxpart for values from ('ddd') to ('eee'); select relname as child, inhparent::regclass as parent, pg_get_indexdef as childdef from pg_class left join pg_inherits on inhrelid = oid, lateral pg_get_indexdef(pg_class.oid) where relkind in ('i', 'I') and relname like 'idxpart%' order by relname; drop table idxpart; -- Verify behavior for opclass (mis)matches create table idxpart (a text) partition by range (a); create table idxpart1 (like idxpart); create table idxpart2 (like idxpart); create index on idxpart2 (a); alter table idxpart attach partition idxpart1 for values from ('aaa') to ('bbb'); alter table idxpart attach partition idxpart2 for values from ('bbb') to ('ccc'); create table idxpart3 partition of idxpart for values from ('ccc') to ('ddd'); create index on idxpart (a text_pattern_ops); create table idxpart4 partition of idxpart for values from ('ddd') to ('eee'); -- must *not* have attached the index we created on idxpart2 select relname as child, inhparent::regclass as parent, pg_get_indexdef as childdef from pg_class left join pg_inherits on inhrelid = oid, lateral pg_get_indexdef(pg_class.oid) where relkind in ('i', 'I') and relname like 'idxpart%' order by relname; drop index idxpart_a_idx; create index on only idxpart (a text_pattern_ops); -- must reject alter index idxpart_a_idx attach partition idxpart2_a_idx; drop table idxpart; -- Verify that attaching indexes maps attribute numbers correctly create table idxpart (col1 int, a int, col2 int, b int) partition by range (a); create table idxpart1 (b int, col1 int, col2 int, col3 int, a int); alter table idxpart drop column col1, drop column col2; alter table idxpart1 drop column col1, drop column col2, drop column col3; alter table idxpart attach partition idxpart1 for values from (0) to (1000); create index idxpart_1_idx on only idxpart (b, a); create index idxpart1_1_idx on idxpart1 (b, a); create index idxpart1_1b_idx on idxpart1 (b); -- test expressions and partial-index predicate, too create index idxpart_2_idx on only idxpart ((b + a)) where a > 1; create index idxpart1_2_idx on idxpart1 ((b + a)) where a > 1; create index idxpart1_2b_idx on idxpart1 ((a + b)) where a > 1; create index idxpart1_2c_idx on idxpart1 ((b + a)) where b > 1; alter index idxpart_1_idx attach partition idxpart1_1b_idx; -- fail alter index idxpart_1_idx attach partition idxpart1_1_idx; alter index idxpart_2_idx attach partition idxpart1_2b_idx; -- fail alter index idxpart_2_idx attach partition idxpart1_2c_idx; -- fail alter index idxpart_2_idx attach partition idxpart1_2_idx; -- ok select relname as child, inhparent::regclass as parent, pg_get_indexdef as childdef from pg_class left join pg_inherits on inhrelid = oid, lateral pg_get_indexdef(pg_class.oid) where relkind in ('i', 'I') and relname like 'idxpart%' order by relname; drop table idxpart; -- Make sure the partition columns are mapped correctly create table idxpart (a int, b int, c text) partition by range (a); create index idxparti on idxpart (a); create index idxparti2 on idxpart (c, b); create table idxpart1 (c text, a int, b int); alter table idxpart attach partition idxpart1 for values from (0) to (10); create table idxpart2 (c text, a int, b int); create index on idxpart2 (a); create index on idxpart2 (c, b); alter table idxpart attach partition idxpart2 for values from (10) to (20); select c.relname, pg_get_indexdef(indexrelid) from pg_class c join pg_index i on c.oid = i.indexrelid where indrelid::regclass::text like 'idxpart%' order by indexrelid::regclass::text collate "C"; drop table idxpart; -- Verify that columns are mapped correctly in expression indexes create table idxpart (col1 int, col2 int, a int, b int) partition by range (a); create table idxpart1 (col2 int, b int, col1 int, a int); create table idxpart2 (col1 int, col2 int, b int, a int); alter table idxpart drop column col1, drop column col2; alter table idxpart1 drop column col1, drop column col2; alter table idxpart2 drop column col1, drop column col2; create index on idxpart2 (abs(b)); alter table idxpart attach partition idxpart2 for values from (0) to (1); create index on idxpart (abs(b)); create index on idxpart ((b + 1)); alter table idxpart attach partition idxpart1 for values from (1) to (2); select c.relname, pg_get_indexdef(indexrelid) from pg_class c join pg_index i on c.oid = i.indexrelid where indrelid::regclass::text like 'idxpart%' order by indexrelid::regclass::text collate "C"; drop table idxpart; -- Verify that columns are mapped correctly for WHERE in a partial index create table idxpart (col1 int, a int, col3 int, b int) partition by range (a); alter table idxpart drop column col1, drop column col3; create table idxpart1 (col1 int, col2 int, col3 int, col4 int, b int, a int); alter table idxpart1 drop column col1, drop column col2, drop column col3, drop column col4; alter table idxpart attach partition idxpart1 for values from (0) to (1000); create table idxpart2 (col1 int, col2 int, b int, a int); create index on idxpart2 (a) where b > 1000; alter table idxpart2 drop column col1, drop column col2; alter table idxpart attach partition idxpart2 for values from (1000) to (2000); create index on idxpart (a) where b > 1000; select c.relname, pg_get_indexdef(indexrelid) from pg_class c join pg_index i on c.oid = i.indexrelid where indrelid::regclass::text like 'idxpart%' order by indexrelid::regclass::text collate "C"; drop table idxpart; -- Column number mapping: dropped columns in the partition create table idxpart1 (drop_1 int, drop_2 int, col_keep int, drop_3 int); alter table idxpart1 drop column drop_1; alter table idxpart1 drop column drop_2; alter table idxpart1 drop column drop_3; create index on idxpart1 (col_keep); create table idxpart (col_keep int) partition by range (col_keep); create index on idxpart (col_keep); alter table idxpart attach partition idxpart1 for values from (0) to (1000); \d idxpart \d idxpart1 select attrelid::regclass, attname, attnum from pg_attribute where attrelid::regclass::text like 'idxpart%' and attnum > 0 order by attrelid::regclass, attnum; drop table idxpart; -- Column number mapping: dropped columns in the parent table create table idxpart(drop_1 int, drop_2 int, col_keep int, drop_3 int) partition by range (col_keep); alter table idxpart drop column drop_1; alter table idxpart drop column drop_2; alter table idxpart drop column drop_3; create table idxpart1 (col_keep int); create index on idxpart1 (col_keep); create index on idxpart (col_keep); alter table idxpart attach partition idxpart1 for values from (0) to (1000); \d idxpart \d idxpart1 select attrelid::regclass, attname, attnum from pg_attribute where attrelid::regclass::text like 'idxpart%' and attnum > 0 order by attrelid::regclass, attnum; drop table idxpart; -- -- Constraint-related indexes -- -- Verify that it works to add primary key / unique to partitioned tables create table idxpart (a int primary key, b int) partition by range (a); \d idxpart -- multiple primary key on child should fail create table failpart partition of idxpart (b primary key) for values from (0) to (100); drop table idxpart; -- primary key on child is okay if there's no PK in the parent, though create table idxpart (a int) partition by range (a); create table idxpart1pk partition of idxpart (a primary key) for values from (0) to (100); \d idxpart1pk drop table idxpart; -- Failing to use the full partition key is not allowed create table idxpart (a int unique, b int) partition by range (a, b); create table idxpart (a int, b int unique) partition by range (a, b); create table idxpart (a int primary key, b int) partition by range (b, a); create table idxpart (a int, b int primary key) partition by range (b, a); -- OK if you use them in some other order create table idxpart (a int, b int, c text, primary key (a, b, c)) partition by range (b, c, a); drop table idxpart; -- not other types of index-based constraints create table idxpart (a int, exclude (a with = )) partition by range (a); -- no expressions in partition key for PK/UNIQUE create table idxpart (a int primary key, b int) partition by range ((b + a)); create table idxpart (a int unique, b int) partition by range ((b + a)); -- use ALTER TABLE to add a primary key create table idxpart (a int, b int, c text) partition by range (a, b); alter table idxpart add primary key (a); -- not an incomplete one though alter table idxpart add primary key (a, b); -- this works \d idxpart create table idxpart1 partition of idxpart for values from (0, 0) to (1000, 1000); \d idxpart1 drop table idxpart; -- use ALTER TABLE to add a unique constraint create table idxpart (a int, b int) partition by range (a, b); alter table idxpart add unique (a); -- not an incomplete one though alter table idxpart add unique (b, a); -- this works \d idxpart drop table idxpart; -- Exclusion constraints cannot be added create table idxpart (a int, b int) partition by range (a); alter table idxpart add exclude (a with =); drop table idxpart; -- When (sub)partitions are created, they also contain the constraint create table idxpart (a int, b int, primary key (a, b)) partition by range (a, b); create table idxpart1 partition of idxpart for values from (1, 1) to (10, 10); create table idxpart2 partition of idxpart for values from (10, 10) to (20, 20) partition by range (b); create table idxpart21 partition of idxpart2 for values from (10) to (15); create table idxpart22 partition of idxpart2 for values from (15) to (20); create table idxpart3 (b int not null, a int not null); alter table idxpart attach partition idxpart3 for values from (20, 20) to (30, 30); select conname, contype, conrelid::regclass, conindid::regclass, conkey from pg_constraint where conrelid::regclass::text like 'idxpart%' order by conname; drop table idxpart; -- Verify that multi-layer partitioning honors the requirement that all -- columns in the partition key must appear in primary/unique key create table idxpart (a int, b int, primary key (a)) partition by range (a); create table idxpart2 partition of idxpart for values from (0) to (1000) partition by range (b); -- fail drop table idxpart; -- Ditto for the ATTACH PARTITION case create table idxpart (a int unique, b int) partition by range (a); create table idxpart1 (a int not null, b int, unique (a, b)) partition by range (a, b); alter table idxpart attach partition idxpart1 for values from (1) to (1000); DROP TABLE idxpart, idxpart1; -- Multi-layer partitioning works correctly in this case: create table idxpart (a int, b int, primary key (a, b)) partition by range (a); create table idxpart2 partition of idxpart for values from (0) to (1000) partition by range (b); create table idxpart21 partition of idxpart2 for values from (0) to (1000); select conname, contype, conrelid::regclass, conindid::regclass, conkey from pg_constraint where conrelid::regclass::text like 'idxpart%' order by conname; drop table idxpart; -- If a partitioned table has a unique/PK constraint, then it's not possible -- to drop the corresponding constraint in the children; nor it's possible -- to drop the indexes individually. Dropping the constraint in the parent -- gets rid of the lot. create table idxpart (i int) partition by hash (i); create table idxpart0 partition of idxpart (i) for values with (modulus 2, remainder 0); create table idxpart1 partition of idxpart (i) for values with (modulus 2, remainder 1); alter table idxpart0 add primary key(i); alter table idxpart add primary key(i); select indrelid::regclass, indexrelid::regclass, inhparent::regclass, indisvalid, conname, conislocal, coninhcount, connoinherit, convalidated from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) left join pg_constraint con on (idx.indexrelid = con.conindid) where indrelid::regclass::text like 'idxpart%' order by indexrelid::regclass::text collate "C"; drop index idxpart0_pkey; -- fail drop index idxpart1_pkey; -- fail alter table idxpart0 drop constraint idxpart0_pkey; -- fail alter table idxpart1 drop constraint idxpart1_pkey; -- fail alter table idxpart drop constraint idxpart_pkey; -- ok select indrelid::regclass, indexrelid::regclass, inhparent::regclass, indisvalid, conname, conislocal, coninhcount, connoinherit, convalidated from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) left join pg_constraint con on (idx.indexrelid = con.conindid) where indrelid::regclass::text like 'idxpart%' order by indexrelid::regclass::text collate "C"; drop table idxpart; -- If the partition to be attached already has a primary key, fail if -- it doesn't match the parent's PK. CREATE TABLE idxpart (c1 INT PRIMARY KEY, c2 INT, c3 VARCHAR(10)) PARTITION BY RANGE(c1); CREATE TABLE idxpart1 (LIKE idxpart); ALTER TABLE idxpart1 ADD PRIMARY KEY (c1, c2); ALTER TABLE idxpart ATTACH PARTITION idxpart1 FOR VALUES FROM (100) TO (200); DROP TABLE idxpart, idxpart1; -- Ditto if there is some distance between the PKs (subpartitioning) create table idxpart (a int, b int, primary key (a)) partition by range (a); create table idxpart1 (a int not null, b int) partition by range (a); create table idxpart11 (a int not null, b int primary key); alter table idxpart1 attach partition idxpart11 for values from (0) to (1000); alter table idxpart attach partition idxpart1 for values from (0) to (10000); drop table idxpart, idxpart1, idxpart11; -- If a partitioned table has a constraint whose index is not valid, -- attaching a missing partition makes it valid. create table idxpart (a int) partition by range (a); create table idxpart0 (like idxpart); alter table idxpart0 add primary key (a); alter table idxpart attach partition idxpart0 for values from (0) to (1000); alter table only idxpart add primary key (a); select indrelid::regclass, indexrelid::regclass, inhparent::regclass, indisvalid, conname, conislocal, coninhcount, connoinherit, convalidated from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) left join pg_constraint con on (idx.indexrelid = con.conindid) where indrelid::regclass::text like 'idxpart%' order by indexrelid::regclass::text collate "C"; alter index idxpart_pkey attach partition idxpart0_pkey; select indrelid::regclass, indexrelid::regclass, inhparent::regclass, indisvalid, conname, conislocal, coninhcount, connoinherit, convalidated from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) left join pg_constraint con on (idx.indexrelid = con.conindid) where indrelid::regclass::text like 'idxpart%' order by indexrelid::regclass::text collate "C"; drop table idxpart; -- Related to the above scenario: ADD PRIMARY KEY on the parent mustn't -- automatically propagate NOT NULL to child columns. create table idxpart (a int) partition by range (a); create table idxpart0 (like idxpart); alter table idxpart0 add unique (a); alter table idxpart attach partition idxpart0 default; alter table only idxpart add primary key (a); -- fail, no NOT NULL constraint alter table idxpart0 alter column a set not null; alter table only idxpart add primary key (a); -- now it works alter table idxpart0 alter column a drop not null; -- fail, pkey needs it drop table idxpart; -- if a partition has a unique index without a constraint, does not attach -- automatically; creates a new index instead. create table idxpart (a int, b int) partition by range (a); create table idxpart1 (a int not null, b int); create unique index on idxpart1 (a); alter table idxpart add primary key (a); alter table idxpart attach partition idxpart1 for values from (1) to (1000); select indrelid::regclass, indexrelid::regclass, inhparent::regclass, indisvalid, conname, conislocal, coninhcount, connoinherit, convalidated from pg_index idx left join pg_inherits inh on (idx.indexrelid = inh.inhrelid) left join pg_constraint con on (idx.indexrelid = con.conindid) where indrelid::regclass::text like 'idxpart%' order by indexrelid::regclass::text collate "C"; drop table idxpart; -- Can't attach an index without a corresponding constraint create table idxpart (a int, b int) partition by range (a); create table idxpart1 (a int not null, b int); create unique index on idxpart1 (a); alter table idxpart attach partition idxpart1 for values from (1) to (1000); alter table only idxpart add primary key (a); alter index idxpart_pkey attach partition idxpart1_a_idx; -- fail drop table idxpart; -- Test that unique constraints are working create table idxpart (a int, b text, primary key (a, b)) partition by range (a); create table idxpart1 partition of idxpart for values from (0) to (100000); create table idxpart2 (c int, like idxpart); insert into idxpart2 (c, a, b) values (42, 572814, 'inserted first'); alter table idxpart2 drop column c; create unique index on idxpart (a); alter table idxpart attach partition idxpart2 for values from (100000) to (1000000); insert into idxpart values (0, 'zero'), (42, 'life'), (2^16, 'sixteen'); insert into idxpart select 2^g, format('two to power of %s', g) from generate_series(15, 17) g; insert into idxpart values (16, 'sixteen'); insert into idxpart (b, a) values ('one', 142857), ('two', 285714); insert into idxpart select a * 2, b || b from idxpart where a between 2^16 and 2^19; insert into idxpart values (572814, 'five'); insert into idxpart values (857142, 'six'); select tableoid::regclass, * from idxpart order by a; drop table idxpart; -- intentionally leave some objects around create table idxpart (a int) partition by range (a); create table idxpart1 partition of idxpart for values from (0) to (100); create table idxpart2 partition of idxpart for values from (100) to (1000) partition by range (a); create table idxpart21 partition of idxpart2 for values from (100) to (200); create table idxpart22 partition of idxpart2 for values from (200) to (300); create index on idxpart22 (a); create index on only idxpart2 (a); alter index idxpart2_a_idx attach partition idxpart22_a_idx; create index on idxpart (a); create table idxpart_another (a int, b int, primary key (a, b)) partition by range (a); create table idxpart_another_1 partition of idxpart_another for values from (0) to (100); create table idxpart3 (c int, b int, a int) partition by range (a); alter table idxpart3 drop column b, drop column c; create table idxpart31 partition of idxpart3 for values from (1000) to (1200); create table idxpart32 partition of idxpart3 for values from (1200) to (1400); alter table idxpart attach partition idxpart3 for values from (1000) to (2000); -- More objects intentionally left behind, to verify some pg_dump/pg_upgrade -- behavior; see https://postgr.es/m/20190321204928.GA17535@alvherre.pgsql create schema regress_indexing; set search_path to regress_indexing; create table pk (a int primary key) partition by range (a); create table pk1 partition of pk for values from (0) to (1000); create table pk2 (b int, a int); alter table pk2 drop column b; alter table pk2 alter a set not null; alter table pk attach partition pk2 for values from (1000) to (2000); create table pk3 partition of pk for values from (2000) to (3000); create table pk4 (like pk); alter table pk attach partition pk4 for values from (3000) to (4000); create table pk5 (like pk) partition by range (a); create table pk51 partition of pk5 for values from (4000) to (4500); create table pk52 partition of pk5 for values from (4500) to (5000); alter table pk attach partition pk5 for values from (4000) to (5000); reset search_path; -- Test that covering partitioned indexes work in various cases create table covidxpart (a int, b int) partition by list (a); create unique index on covidxpart (a) include (b); create table covidxpart1 partition of covidxpart for values in (1); create table covidxpart2 partition of covidxpart for values in (2); insert into covidxpart values (1, 1); insert into covidxpart values (1, 1); create table covidxpart3 (b int, c int, a int); alter table covidxpart3 drop c; alter table covidxpart attach partition covidxpart3 for values in (3); insert into covidxpart values (3, 1); insert into covidxpart values (3, 1); create table covidxpart4 (b int, a int); create unique index on covidxpart4 (a) include (b); create unique index on covidxpart4 (a); alter table covidxpart attach partition covidxpart4 for values in (4); insert into covidxpart values (4, 1); insert into covidxpart values (4, 1); create unique index on covidxpart (b) include (a); -- should fail -- check that detaching a partition also detaches the primary key constraint create table parted_pk_detach_test (a int primary key) partition by list (a); create table parted_pk_detach_test1 partition of parted_pk_detach_test for values in (1); alter table parted_pk_detach_test1 drop constraint parted_pk_detach_test1_pkey; -- should fail alter table parted_pk_detach_test detach partition parted_pk_detach_test1; alter table parted_pk_detach_test1 drop constraint parted_pk_detach_test1_pkey; drop table parted_pk_detach_test, parted_pk_detach_test1; create table parted_uniq_detach_test (a int unique) partition by list (a); create table parted_uniq_detach_test1 partition of parted_uniq_detach_test for values in (1); alter table parted_uniq_detach_test1 drop constraint parted_uniq_detach_test1_a_key; -- should fail alter table parted_uniq_detach_test detach partition parted_uniq_detach_test1; alter table parted_uniq_detach_test1 drop constraint parted_uniq_detach_test1_a_key; drop table parted_uniq_detach_test, parted_uniq_detach_test1; -- check that dropping a column takes with it any partitioned indexes -- depending on it. create table parted_index_col_drop(a int, b int, c int) partition by list (a); create table parted_index_col_drop1 partition of parted_index_col_drop for values in (1) partition by list (a); -- leave this partition without children. create table parted_index_col_drop2 partition of parted_index_col_drop for values in (2) partition by list (a); create table parted_index_col_drop11 partition of parted_index_col_drop1 for values in (1); create index on parted_index_col_drop (b); create index on parted_index_col_drop (c); create index on parted_index_col_drop (b, c); alter table parted_index_col_drop drop column c; \d parted_index_col_drop \d parted_index_col_drop1 \d parted_index_col_drop2 \d parted_index_col_drop11 drop table parted_index_col_drop; libpg_query-13-2.1.0/test/sql/postgres_regress/indirect_toast.sql000066400000000000000000000053301413137616400251760ustar00rootroot00000000000000CREATE TABLE indtoasttest(descr text, cnt int DEFAULT 0, f1 text, f2 text); INSERT INTO indtoasttest(descr, f1, f2) VALUES('two-compressed', repeat('1234567890',1000), repeat('1234567890',1000)); INSERT INTO indtoasttest(descr, f1, f2) VALUES('two-toasted', repeat('1234567890',30000), repeat('1234567890',50000)); INSERT INTO indtoasttest(descr, f1, f2) VALUES('one-compressed,one-null', NULL, repeat('1234567890',1000)); INSERT INTO indtoasttest(descr, f1, f2) VALUES('one-toasted,one-null', NULL, repeat('1234567890',50000)); -- check whether indirect tuples works on the most basic level SELECT descr, substring(make_tuple_indirect(indtoasttest)::text, 1, 200) FROM indtoasttest; -- modification without changing varlenas UPDATE indtoasttest SET cnt = cnt +1 RETURNING substring(indtoasttest::text, 1, 200); -- modification without modifying assigned value UPDATE indtoasttest SET cnt = cnt +1, f1 = f1 RETURNING substring(indtoasttest::text, 1, 200); -- modification modifying, but effectively not changing UPDATE indtoasttest SET cnt = cnt +1, f1 = f1||'' RETURNING substring(indtoasttest::text, 1, 200); UPDATE indtoasttest SET cnt = cnt +1, f1 = '-'||f1||'-' RETURNING substring(indtoasttest::text, 1, 200); SELECT substring(indtoasttest::text, 1, 200) FROM indtoasttest; -- check we didn't screw with main/toast tuple visibility VACUUM FREEZE indtoasttest; SELECT substring(indtoasttest::text, 1, 200) FROM indtoasttest; -- now create a trigger that forces all Datums to be indirect ones CREATE FUNCTION update_using_indirect() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN NEW := make_tuple_indirect(NEW); RETURN NEW; END$$; CREATE TRIGGER indtoasttest_update_indirect BEFORE INSERT OR UPDATE ON indtoasttest FOR EACH ROW EXECUTE PROCEDURE update_using_indirect(); -- modification without changing varlenas UPDATE indtoasttest SET cnt = cnt +1 RETURNING substring(indtoasttest::text, 1, 200); -- modification without modifying assigned value UPDATE indtoasttest SET cnt = cnt +1, f1 = f1 RETURNING substring(indtoasttest::text, 1, 200); -- modification modifying, but effectively not changing UPDATE indtoasttest SET cnt = cnt +1, f1 = f1||'' RETURNING substring(indtoasttest::text, 1, 200); UPDATE indtoasttest SET cnt = cnt +1, f1 = '-'||f1||'-' RETURNING substring(indtoasttest::text, 1, 200); INSERT INTO indtoasttest(descr, f1, f2) VALUES('one-toasted,one-null, via indirect', repeat('1234567890',30000), NULL); SELECT substring(indtoasttest::text, 1, 200) FROM indtoasttest; -- check we didn't screw with main/toast tuple visibility VACUUM FREEZE indtoasttest; SELECT substring(indtoasttest::text, 1, 200) FROM indtoasttest; DROP TABLE indtoasttest; DROP FUNCTION update_using_indirect(); libpg_query-13-2.1.0/test/sql/postgres_regress/inet.sql000066400000000000000000000242771413137616400231350ustar00rootroot00000000000000-- -- INET -- -- prepare the table... DROP TABLE INET_TBL; CREATE TABLE INET_TBL (c cidr, i inet); INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.226/24'); INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.0/26', '192.168.1.226'); INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.0/24'); INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.0/25'); INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.255/24'); INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.255/25'); INSERT INTO INET_TBL (c, i) VALUES ('10', '10.1.2.3/8'); INSERT INTO INET_TBL (c, i) VALUES ('10.0.0.0', '10.1.2.3/8'); INSERT INTO INET_TBL (c, i) VALUES ('10.1.2.3', '10.1.2.3/32'); INSERT INTO INET_TBL (c, i) VALUES ('10.1.2', '10.1.2.3/24'); INSERT INTO INET_TBL (c, i) VALUES ('10.1', '10.1.2.3/16'); INSERT INTO INET_TBL (c, i) VALUES ('10', '10.1.2.3/8'); INSERT INTO INET_TBL (c, i) VALUES ('10', '11.1.2.3/8'); INSERT INTO INET_TBL (c, i) VALUES ('10', '9.1.2.3/8'); INSERT INTO INET_TBL (c, i) VALUES ('10:23::f1', '10:23::f1/64'); INSERT INTO INET_TBL (c, i) VALUES ('10:23::8000/113', '10:23::ffff'); INSERT INTO INET_TBL (c, i) VALUES ('::ffff:1.2.3.4', '::4.3.2.1/24'); -- check that CIDR rejects invalid input: INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.2/30', '192.168.1.226'); INSERT INTO INET_TBL (c, i) VALUES ('1234::1234::1234', '::1.2.3.4'); -- check that CIDR rejects invalid input when converting from text: INSERT INTO INET_TBL (c, i) VALUES (cidr('192.168.1.2/30'), '192.168.1.226'); INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:ffff::/24'), '::192.168.1.226'); SELECT '' AS ten, c AS cidr, i AS inet FROM INET_TBL; -- now test some support functions SELECT '' AS ten, i AS inet, host(i), text(i), family(i) FROM INET_TBL; SELECT '' AS ten, c AS cidr, broadcast(c), i AS inet, broadcast(i) FROM INET_TBL; SELECT '' AS ten, c AS cidr, network(c) AS "network(cidr)", i AS inet, network(i) AS "network(inet)" FROM INET_TBL; SELECT '' AS ten, c AS cidr, masklen(c) AS "masklen(cidr)", i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL; SELECT '' AS four, c AS cidr, masklen(c) AS "masklen(cidr)", i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL WHERE masklen(c) <= 8; SELECT '' AS six, c AS cidr, i AS inet FROM INET_TBL WHERE c = i; SELECT '' AS ten, i, c, i < c AS lt, i <= c AS le, i = c AS eq, i >= c AS ge, i > c AS gt, i <> c AS ne, i << c AS sb, i <<= c AS sbe, i >> c AS sup, i >>= c AS spe, i && c AS ovr FROM INET_TBL; SELECT max(i) AS max, min(i) AS min FROM INET_TBL; SELECT max(c) AS max, min(c) AS min FROM INET_TBL; -- check the conversion to/from text and set_netmask SELECT '' AS ten, set_masklen(inet(text(i)), 24) FROM INET_TBL; -- check that btree index works correctly CREATE INDEX inet_idx1 ON inet_tbl(i); SET enable_seqscan TO off; EXPLAIN (COSTS OFF) SELECT * FROM inet_tbl WHERE i<<'192.168.1.0/24'::cidr; SELECT * FROM inet_tbl WHERE i<<'192.168.1.0/24'::cidr; EXPLAIN (COSTS OFF) SELECT * FROM inet_tbl WHERE i<<='192.168.1.0/24'::cidr; SELECT * FROM inet_tbl WHERE i<<='192.168.1.0/24'::cidr; EXPLAIN (COSTS OFF) SELECT * FROM inet_tbl WHERE '192.168.1.0/24'::cidr >>= i; SELECT * FROM inet_tbl WHERE '192.168.1.0/24'::cidr >>= i; EXPLAIN (COSTS OFF) SELECT * FROM inet_tbl WHERE '192.168.1.0/24'::cidr >> i; SELECT * FROM inet_tbl WHERE '192.168.1.0/24'::cidr >> i; SET enable_seqscan TO on; DROP INDEX inet_idx1; -- check that gist index works correctly CREATE INDEX inet_idx2 ON inet_tbl using gist (i inet_ops); SET enable_seqscan TO off; SELECT * FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i <<= '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i && '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i >>= '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i >> '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i < '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i <= '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i = '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i >= '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i > '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i <> '192.168.1.0/24'::cidr ORDER BY i; -- test index-only scans EXPLAIN (COSTS OFF) SELECT i FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDER BY i; SELECT i FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDER BY i; SET enable_seqscan TO on; DROP INDEX inet_idx2; -- check that spgist index works correctly CREATE INDEX inet_idx3 ON inet_tbl using spgist (i); SET enable_seqscan TO off; SELECT * FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i <<= '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i && '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i >>= '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i >> '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i < '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i <= '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i = '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i >= '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i > '192.168.1.0/24'::cidr ORDER BY i; SELECT * FROM inet_tbl WHERE i <> '192.168.1.0/24'::cidr ORDER BY i; -- test index-only scans EXPLAIN (COSTS OFF) SELECT i FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDER BY i; SELECT i FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDER BY i; SET enable_seqscan TO on; DROP INDEX inet_idx3; -- simple tests of inet boolean and arithmetic operators SELECT i, ~i AS "~i" FROM inet_tbl; SELECT i, c, i & c AS "and" FROM inet_tbl; SELECT i, c, i | c AS "or" FROM inet_tbl; SELECT i, i + 500 AS "i+500" FROM inet_tbl; SELECT i, i - 500 AS "i-500" FROM inet_tbl; SELECT i, c, i - c AS "minus" FROM inet_tbl; SELECT '127.0.0.1'::inet + 257; SELECT ('127.0.0.1'::inet + 257) - 257; SELECT '127::1'::inet + 257; SELECT ('127::1'::inet + 257) - 257; SELECT '127.0.0.2'::inet - ('127.0.0.2'::inet + 500); SELECT '127.0.0.2'::inet - ('127.0.0.2'::inet - 500); SELECT '127::2'::inet - ('127::2'::inet + 500); SELECT '127::2'::inet - ('127::2'::inet - 500); -- these should give overflow errors: SELECT '127.0.0.1'::inet + 10000000000; SELECT '127.0.0.1'::inet - 10000000000; SELECT '126::1'::inet - '127::2'::inet; SELECT '127::1'::inet - '126::2'::inet; -- but not these SELECT '127::1'::inet + 10000000000; SELECT '127::1'::inet - '127::2'::inet; -- insert one more row with addressed from different families INSERT INTO INET_TBL (c, i) VALUES ('10', '10::/8'); -- now, this one should fail SELECT inet_merge(c, i) FROM INET_TBL; -- fix it by inet_same_family() condition SELECT inet_merge(c, i) FROM INET_TBL WHERE inet_same_family(c, i); -- Test inet sortsupport with a variety of boundary inputs: SELECT a FROM (VALUES ('0.0.0.0/0'::inet), ('0.0.0.0/1'::inet), ('0.0.0.0/32'::inet), ('0.0.0.1/0'::inet), ('0.0.0.1/1'::inet), ('127.126.127.127/0'::inet), ('127.127.127.127/0'::inet), ('127.128.127.127/0'::inet), ('192.168.1.0/24'::inet), ('192.168.1.0/25'::inet), ('192.168.1.1/23'::inet), ('192.168.1.1/5'::inet), ('192.168.1.1/6'::inet), ('192.168.1.1/25'::inet), ('192.168.1.2/25'::inet), ('192.168.1.1/26'::inet), ('192.168.1.2/26'::inet), ('192.168.1.2/23'::inet), ('192.168.1.255/5'::inet), ('192.168.1.255/6'::inet), ('192.168.1.3/1'::inet), ('192.168.1.3/23'::inet), ('192.168.1.4/0'::inet), ('192.168.1.5/0'::inet), ('255.0.0.0/0'::inet), ('255.1.0.0/0'::inet), ('255.2.0.0/0'::inet), ('255.255.000.000/0'::inet), ('255.255.000.000/0'::inet), ('255.255.000.000/15'::inet), ('255.255.000.000/16'::inet), ('255.255.255.254/32'::inet), ('255.255.255.000/32'::inet), ('255.255.255.001/31'::inet), ('255.255.255.002/31'::inet), ('255.255.255.003/31'::inet), ('255.255.255.003/32'::inet), ('255.255.255.001/32'::inet), ('255.255.255.255/0'::inet), ('255.255.255.255/0'::inet), ('255.255.255.255/0'::inet), ('255.255.255.255/1'::inet), ('255.255.255.255/16'::inet), ('255.255.255.255/16'::inet), ('255.255.255.255/31'::inet), ('255.255.255.255/32'::inet), ('255.255.255.253/32'::inet), ('255.255.255.252/32'::inet), ('255.3.0.0/0'::inet), ('0000:0000:0000:0000:0000:0000:0000:0000/0'::inet), ('0000:0000:0000:0000:0000:0000:0000:0000/128'::inet), ('0000:0000:0000:0000:0000:0000:0000:0001/128'::inet), ('10:23::f1/64'::inet), ('10:23::f1/65'::inet), ('10:23::ffff'::inet), ('127::1'::inet), ('127::2'::inet), ('8000:0000:0000:0000:0000:0000:0000:0000/1'::inet), ('::1:ffff:ffff:ffff:ffff/128'::inet), ('::2:ffff:ffff:ffff:ffff/128'::inet), ('::4:3:2:0/24'::inet), ('::4:3:2:1/24'::inet), ('::4:3:2:2/24'::inet), ('ffff:83e7:f118:57dc:6093:6d92:689d:58cf/70'::inet), ('ffff:84b0:4775:536e:c3ed:7116:a6d6:34f0/44'::inet), ('ffff:8566:f84:5867:47f1:7867:d2ba:8a1a/69'::inet), ('ffff:8883:f028:7d2:4d68:d510:7d6b:ac43/73'::inet), ('ffff:8ae8:7c14:65b3:196:8e4a:89ae:fb30/89'::inet), ('ffff:8dd0:646:694c:7c16:7e35:6a26:171/104'::inet), ('ffff:8eef:cbf:700:eda3:ae32:f4b4:318b/121'::inet), ('ffff:90e7:e744:664:a93:8efe:1f25:7663/122'::inet), ('ffff:9597:c69c:8b24:57a:8639:ec78:6026/111'::inet), ('ffff:9e86:79ea:f16e:df31:8e4d:7783:532e/88'::inet), ('ffff:a0c7:82d3:24de:f762:6e1f:316d:3fb2/23'::inet), ('ffff:fffa:ffff:ffff:ffff:ffff:ffff:ffff/0'::inet), ('ffff:fffb:ffff:ffff:ffff:ffff:ffff:ffff/0'::inet), ('ffff:fffc:ffff:ffff:ffff:ffff:ffff:ffff/0'::inet), ('ffff:fffd:ffff:ffff:ffff:ffff:ffff:ffff/0'::inet), ('ffff:fffe:ffff:ffff:ffff:ffff:ffff:ffff/0'::inet), ('ffff:ffff:ffff:fffa:ffff:ffff:ffff:ffff/0'::inet), ('ffff:ffff:ffff:fffb:ffff:ffff:ffff:ffff/0'::inet), ('ffff:ffff:ffff:fffc:ffff:ffff:ffff:ffff/0'::inet), ('ffff:ffff:ffff:fffd::/128'::inet), ('ffff:ffff:ffff:fffd:ffff:ffff:ffff:ffff/0'::inet), ('ffff:ffff:ffff:fffe::/128'::inet), ('ffff:ffff:ffff:fffe:ffff:ffff:ffff:ffff/0'::inet), ('ffff:ffff:ffff:ffff:4:3:2:0/24'::inet), ('ffff:ffff:ffff:ffff:4:3:2:1/24'::inet), ('ffff:ffff:ffff:ffff:4:3:2:2/24'::inet), ('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/0'::inet), ('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128'::inet) ) AS i(a) ORDER BY a; libpg_query-13-2.1.0/test/sql/postgres_regress/infinite_recurse.sql000066400000000000000000000017431413137616400255240ustar00rootroot00000000000000-- Check that stack depth detection mechanism works and -- max_stack_depth is not set too high. create function infinite_recurse() returns int as 'select infinite_recurse()' language sql; -- Unfortunately, up till mid 2020 the Linux kernel had a bug in PPC64 -- signal handling that would cause this test to crash if it happened -- to receive an sinval catchup interrupt while the stack is deep: -- https://bugzilla.kernel.org/show_bug.cgi?id=205183 -- It is likely to be many years before that bug disappears from all -- production kernels, so disable this test on such platforms. -- (We still create the function, so as not to have a cross-platform -- difference in the end state of the regression database.) SELECT version() ~ 'powerpc64[^,]*-linux-gnu' AS skip_test \gset \if :skip_test \quit \endif -- The full error report is not very stable, so we show only SQLSTATE -- and primary error message. \set VERBOSITY sqlstate select infinite_recurse(); \echo :LAST_ERROR_MESSAGE libpg_query-13-2.1.0/test/sql/postgres_regress/inherit.sql000066400000000000000000001220751413137616400236330ustar00rootroot00000000000000-- -- Test inheritance features -- CREATE TABLE a (aa TEXT); CREATE TABLE b (bb TEXT) INHERITS (a); CREATE TABLE c (cc TEXT) INHERITS (a); CREATE TABLE d (dd TEXT) INHERITS (b,c,a); INSERT INTO a(aa) VALUES('aaa'); INSERT INTO a(aa) VALUES('aaaa'); INSERT INTO a(aa) VALUES('aaaaa'); INSERT INTO a(aa) VALUES('aaaaaa'); INSERT INTO a(aa) VALUES('aaaaaaa'); INSERT INTO a(aa) VALUES('aaaaaaaa'); INSERT INTO b(aa) VALUES('bbb'); INSERT INTO b(aa) VALUES('bbbb'); INSERT INTO b(aa) VALUES('bbbbb'); INSERT INTO b(aa) VALUES('bbbbbb'); INSERT INTO b(aa) VALUES('bbbbbbb'); INSERT INTO b(aa) VALUES('bbbbbbbb'); INSERT INTO c(aa) VALUES('ccc'); INSERT INTO c(aa) VALUES('cccc'); INSERT INTO c(aa) VALUES('ccccc'); INSERT INTO c(aa) VALUES('cccccc'); INSERT INTO c(aa) VALUES('ccccccc'); INSERT INTO c(aa) VALUES('cccccccc'); INSERT INTO d(aa) VALUES('ddd'); INSERT INTO d(aa) VALUES('dddd'); INSERT INTO d(aa) VALUES('ddddd'); INSERT INTO d(aa) VALUES('dddddd'); INSERT INTO d(aa) VALUES('ddddddd'); INSERT INTO d(aa) VALUES('dddddddd'); SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; UPDATE a SET aa='zzzz' WHERE aa='aaaa'; UPDATE ONLY a SET aa='zzzzz' WHERE aa='aaaaa'; UPDATE b SET aa='zzz' WHERE aa='aaa'; UPDATE ONLY b SET aa='zzz' WHERE aa='aaa'; UPDATE a SET aa='zzzzzz' WHERE aa LIKE 'aaa%'; SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; UPDATE b SET aa='new'; SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; UPDATE a SET aa='new'; DELETE FROM ONLY c WHERE aa='new'; SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; DELETE FROM a; SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; -- Confirm PRIMARY KEY adds NOT NULL constraint to child table CREATE TEMP TABLE z (b TEXT, PRIMARY KEY(aa, b)) inherits (a); INSERT INTO z VALUES (NULL, 'text'); -- should fail -- Check inherited UPDATE with all children excluded create table some_tab (a int, b int); create table some_tab_child () inherits (some_tab); insert into some_tab_child values(1,2); explain (verbose, costs off) update some_tab set a = a + 1 where false; update some_tab set a = a + 1 where false; explain (verbose, costs off) update some_tab set a = a + 1 where false returning b, a; update some_tab set a = a + 1 where false returning b, a; table some_tab; drop table some_tab cascade; -- Check UPDATE with inherited target and an inherited source table create temp table foo(f1 int, f2 int); create temp table foo2(f3 int) inherits (foo); create temp table bar(f1 int, f2 int); create temp table bar2(f3 int) inherits (bar); insert into foo values(1,1); insert into foo values(3,3); insert into foo2 values(2,2,2); insert into foo2 values(3,3,3); insert into bar values(1,1); insert into bar values(2,2); insert into bar values(3,3); insert into bar values(4,4); insert into bar2 values(1,1,1); insert into bar2 values(2,2,2); insert into bar2 values(3,3,3); insert into bar2 values(4,4,4); update bar set f2 = f2 + 100 where f1 in (select f1 from foo); select tableoid::regclass::text as relname, bar.* from bar order by 1,2; -- Check UPDATE with inherited target and an appendrel subquery update bar set f2 = f2 + 100 from ( select f1 from foo union all select f1+3 from foo ) ss where bar.f1 = ss.f1; select tableoid::regclass::text as relname, bar.* from bar order by 1,2; -- Check UPDATE with *partitioned* inherited target and an appendrel subquery create table some_tab (a int); insert into some_tab values (0); create table some_tab_child () inherits (some_tab); insert into some_tab_child values (1); create table parted_tab (a int, b char) partition by list (a); create table parted_tab_part1 partition of parted_tab for values in (1); create table parted_tab_part2 partition of parted_tab for values in (2); create table parted_tab_part3 partition of parted_tab for values in (3); insert into parted_tab values (1, 'a'), (2, 'a'), (3, 'a'); update parted_tab set b = 'b' from (select a from some_tab union all select a+1 from some_tab) ss (a) where parted_tab.a = ss.a; select tableoid::regclass::text as relname, parted_tab.* from parted_tab order by 1,2; truncate parted_tab; insert into parted_tab values (1, 'a'), (2, 'a'), (3, 'a'); update parted_tab set b = 'b' from (select 0 from parted_tab union all select 1 from parted_tab) ss (a) where parted_tab.a = ss.a; select tableoid::regclass::text as relname, parted_tab.* from parted_tab order by 1,2; -- modifies partition key, but no rows will actually be updated explain update parted_tab set a = 2 where false; drop table parted_tab; -- Check UPDATE with multi-level partitioned inherited target create table mlparted_tab (a int, b char, c text) partition by list (a); create table mlparted_tab_part1 partition of mlparted_tab for values in (1); create table mlparted_tab_part2 partition of mlparted_tab for values in (2) partition by list (b); create table mlparted_tab_part3 partition of mlparted_tab for values in (3); create table mlparted_tab_part2a partition of mlparted_tab_part2 for values in ('a'); create table mlparted_tab_part2b partition of mlparted_tab_part2 for values in ('b'); insert into mlparted_tab values (1, 'a'), (2, 'a'), (2, 'b'), (3, 'a'); update mlparted_tab mlp set c = 'xxx' from (select a from some_tab union all select a+1 from some_tab) ss (a) where (mlp.a = ss.a and mlp.b = 'b') or mlp.a = 3; select tableoid::regclass::text as relname, mlparted_tab.* from mlparted_tab order by 1,2; drop table mlparted_tab; drop table some_tab cascade; /* Test multiple inheritance of column defaults */ CREATE TABLE firstparent (tomorrow date default now()::date + 1); CREATE TABLE secondparent (tomorrow date default now() :: date + 1); CREATE TABLE jointchild () INHERITS (firstparent, secondparent); -- ok CREATE TABLE thirdparent (tomorrow date default now()::date - 1); CREATE TABLE otherchild () INHERITS (firstparent, thirdparent); -- not ok CREATE TABLE otherchild (tomorrow date default now()) INHERITS (firstparent, thirdparent); -- ok, child resolves ambiguous default DROP TABLE firstparent, secondparent, jointchild, thirdparent, otherchild; -- Test changing the type of inherited columns insert into d values('test','one','two','three'); alter table a alter column aa type integer using bit_length(aa); select * from d; -- The above verified that we can change the type of a multiply-inherited -- column; but we should reject that if any definition was inherited from -- an unrelated parent. create temp table parent1(f1 int, f2 int); create temp table parent2(f1 int, f3 bigint); create temp table childtab(f4 int) inherits(parent1, parent2); alter table parent1 alter column f1 type bigint; -- fail, conflict w/parent2 alter table parent1 alter column f2 type bigint; -- ok -- Test non-inheritable parent constraints create table p1(ff1 int); alter table p1 add constraint p1chk check (ff1 > 0) no inherit; alter table p1 add constraint p2chk check (ff1 > 10); -- connoinherit should be true for NO INHERIT constraint select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pgc.connoinherit from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname = 'p1' order by 1,2; -- Test that child does not inherit NO INHERIT constraints create table c1 () inherits (p1); \d p1 \d c1 -- Test that child does not override inheritable constraints of the parent create table c2 (constraint p2chk check (ff1 > 10) no inherit) inherits (p1); --fails drop table p1 cascade; -- Tests for casting between the rowtypes of parent and child -- tables. See the pgsql-hackers thread beginning Dec. 4/04 create table base (i integer); create table derived () inherits (base); create table more_derived (like derived, b int) inherits (derived); insert into derived (i) values (0); select derived::base from derived; select NULL::derived::base; -- remove redundant conversions. explain (verbose on, costs off) select row(i, b)::more_derived::derived::base from more_derived; explain (verbose on, costs off) select (1, 2)::more_derived::derived::base; drop table more_derived; drop table derived; drop table base; create table p1(ff1 int); create table p2(f1 text); create function p2text(p2) returns text as 'select $1.f1' language sql; create table c1(f3 int) inherits(p1,p2); insert into c1 values(123456789, 'hi', 42); select p2text(c1.*) from c1; drop function p2text(p2); drop table c1; drop table p2; drop table p1; CREATE TABLE ac (aa TEXT); alter table ac add constraint ac_check check (aa is not null); CREATE TABLE bc (bb TEXT) INHERITS (ac); select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pg_get_expr(pgc.conbin, pc.oid) as consrc from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname in ('ac', 'bc') order by 1,2; insert into ac (aa) values (NULL); insert into bc (aa) values (NULL); alter table bc drop constraint ac_check; -- fail, disallowed alter table ac drop constraint ac_check; select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pg_get_expr(pgc.conbin, pc.oid) as consrc from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname in ('ac', 'bc') order by 1,2; -- try the unnamed-constraint case alter table ac add check (aa is not null); select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pg_get_expr(pgc.conbin, pc.oid) as consrc from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname in ('ac', 'bc') order by 1,2; insert into ac (aa) values (NULL); insert into bc (aa) values (NULL); alter table bc drop constraint ac_aa_check; -- fail, disallowed alter table ac drop constraint ac_aa_check; select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pg_get_expr(pgc.conbin, pc.oid) as consrc from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname in ('ac', 'bc') order by 1,2; alter table ac add constraint ac_check check (aa is not null); alter table bc no inherit ac; select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pg_get_expr(pgc.conbin, pc.oid) as consrc from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname in ('ac', 'bc') order by 1,2; alter table bc drop constraint ac_check; select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pg_get_expr(pgc.conbin, pc.oid) as consrc from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname in ('ac', 'bc') order by 1,2; alter table ac drop constraint ac_check; select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pg_get_expr(pgc.conbin, pc.oid) as consrc from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname in ('ac', 'bc') order by 1,2; drop table bc; drop table ac; create table ac (a int constraint check_a check (a <> 0)); create table bc (a int constraint check_a check (a <> 0), b int constraint check_b check (b <> 0)) inherits (ac); select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pg_get_expr(pgc.conbin, pc.oid) as consrc from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname in ('ac', 'bc') order by 1,2; drop table bc; drop table ac; create table ac (a int constraint check_a check (a <> 0)); create table bc (b int constraint check_b check (b <> 0)); create table cc (c int constraint check_c check (c <> 0)) inherits (ac, bc); select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pg_get_expr(pgc.conbin, pc.oid) as consrc from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname in ('ac', 'bc', 'cc') order by 1,2; alter table cc no inherit bc; select pc.relname, pgc.conname, pgc.contype, pgc.conislocal, pgc.coninhcount, pg_get_expr(pgc.conbin, pc.oid) as consrc from pg_class as pc inner join pg_constraint as pgc on (pgc.conrelid = pc.oid) where pc.relname in ('ac', 'bc', 'cc') order by 1,2; drop table cc; drop table bc; drop table ac; create table p1(f1 int); create table p2(f2 int); create table c1(f3 int) inherits(p1,p2); insert into c1 values(1,-1,2); alter table p2 add constraint cc check (f2>0); -- fail alter table p2 add check (f2>0); -- check it without a name, too delete from c1; insert into c1 values(1,1,2); alter table p2 add check (f2>0); insert into c1 values(1,-1,2); -- fail create table c2(f3 int) inherits(p1,p2); \d c2 create table c3 (f4 int) inherits(c1,c2); \d c3 drop table p1 cascade; drop table p2 cascade; create table pp1 (f1 int); create table cc1 (f2 text, f3 int) inherits (pp1); alter table pp1 add column a1 int check (a1 > 0); \d cc1 create table cc2(f4 float) inherits(pp1,cc1); \d cc2 alter table pp1 add column a2 int check (a2 > 0); \d cc2 drop table pp1 cascade; -- Test for renaming in simple multiple inheritance CREATE TABLE inht1 (a int, b int); CREATE TABLE inhs1 (b int, c int); CREATE TABLE inhts (d int) INHERITS (inht1, inhs1); ALTER TABLE inht1 RENAME a TO aa; ALTER TABLE inht1 RENAME b TO bb; -- to be failed ALTER TABLE inhts RENAME aa TO aaa; -- to be failed ALTER TABLE inhts RENAME d TO dd; \d+ inhts DROP TABLE inhts; -- Test for renaming in diamond inheritance CREATE TABLE inht2 (x int) INHERITS (inht1); CREATE TABLE inht3 (y int) INHERITS (inht1); CREATE TABLE inht4 (z int) INHERITS (inht2, inht3); ALTER TABLE inht1 RENAME aa TO aaa; \d+ inht4 CREATE TABLE inhts (d int) INHERITS (inht2, inhs1); ALTER TABLE inht1 RENAME aaa TO aaaa; ALTER TABLE inht1 RENAME b TO bb; -- to be failed \d+ inhts WITH RECURSIVE r AS ( SELECT 'inht1'::regclass AS inhrelid UNION ALL SELECT c.inhrelid FROM pg_inherits c, r WHERE r.inhrelid = c.inhparent ) SELECT a.attrelid::regclass, a.attname, a.attinhcount, e.expected FROM (SELECT inhrelid, count(*) AS expected FROM pg_inherits WHERE inhparent IN (SELECT inhrelid FROM r) GROUP BY inhrelid) e JOIN pg_attribute a ON e.inhrelid = a.attrelid WHERE NOT attislocal ORDER BY a.attrelid::regclass::name, a.attnum; DROP TABLE inht1, inhs1 CASCADE; -- Test non-inheritable indices [UNIQUE, EXCLUDE] constraints CREATE TABLE test_constraints (id int, val1 varchar, val2 int, UNIQUE(val1, val2)); CREATE TABLE test_constraints_inh () INHERITS (test_constraints); \d+ test_constraints ALTER TABLE ONLY test_constraints DROP CONSTRAINT test_constraints_val1_val2_key; \d+ test_constraints \d+ test_constraints_inh DROP TABLE test_constraints_inh; DROP TABLE test_constraints; CREATE TABLE test_ex_constraints ( c circle, EXCLUDE USING gist (c WITH &&) ); CREATE TABLE test_ex_constraints_inh () INHERITS (test_ex_constraints); \d+ test_ex_constraints ALTER TABLE test_ex_constraints DROP CONSTRAINT test_ex_constraints_c_excl; \d+ test_ex_constraints \d+ test_ex_constraints_inh DROP TABLE test_ex_constraints_inh; DROP TABLE test_ex_constraints; -- Test non-inheritable foreign key constraints CREATE TABLE test_primary_constraints(id int PRIMARY KEY); CREATE TABLE test_foreign_constraints(id1 int REFERENCES test_primary_constraints(id)); CREATE TABLE test_foreign_constraints_inh () INHERITS (test_foreign_constraints); \d+ test_primary_constraints \d+ test_foreign_constraints ALTER TABLE test_foreign_constraints DROP CONSTRAINT test_foreign_constraints_id1_fkey; \d+ test_foreign_constraints \d+ test_foreign_constraints_inh DROP TABLE test_foreign_constraints_inh; DROP TABLE test_foreign_constraints; DROP TABLE test_primary_constraints; -- Test foreign key behavior create table inh_fk_1 (a int primary key); insert into inh_fk_1 values (1), (2), (3); create table inh_fk_2 (x int primary key, y int references inh_fk_1 on delete cascade); insert into inh_fk_2 values (11, 1), (22, 2), (33, 3); create table inh_fk_2_child () inherits (inh_fk_2); insert into inh_fk_2_child values (111, 1), (222, 2); delete from inh_fk_1 where a = 1; select * from inh_fk_1 order by 1; select * from inh_fk_2 order by 1, 2; drop table inh_fk_1, inh_fk_2, inh_fk_2_child; -- Test that parent and child CHECK constraints can be created in either order create table p1(f1 int); create table p1_c1() inherits(p1); alter table p1 add constraint inh_check_constraint1 check (f1 > 0); alter table p1_c1 add constraint inh_check_constraint1 check (f1 > 0); alter table p1_c1 add constraint inh_check_constraint2 check (f1 < 10); alter table p1 add constraint inh_check_constraint2 check (f1 < 10); select conrelid::regclass::text as relname, conname, conislocal, coninhcount from pg_constraint where conname like 'inh\_check\_constraint%' order by 1, 2; drop table p1 cascade; -- Test that a valid child can have not-valid parent, but not vice versa create table invalid_check_con(f1 int); create table invalid_check_con_child() inherits(invalid_check_con); alter table invalid_check_con_child add constraint inh_check_constraint check(f1 > 0) not valid; alter table invalid_check_con add constraint inh_check_constraint check(f1 > 0); -- fail alter table invalid_check_con_child drop constraint inh_check_constraint; insert into invalid_check_con values(0); alter table invalid_check_con_child add constraint inh_check_constraint check(f1 > 0); alter table invalid_check_con add constraint inh_check_constraint check(f1 > 0) not valid; insert into invalid_check_con values(0); -- fail insert into invalid_check_con_child values(0); -- fail select conrelid::regclass::text as relname, conname, convalidated, conislocal, coninhcount, connoinherit from pg_constraint where conname like 'inh\_check\_constraint%' order by 1, 2; -- We don't drop the invalid_check_con* tables, to test dump/reload with -- -- Test parameterized append plans for inheritance trees -- create temp table patest0 (id, x) as select x, x from generate_series(0,1000) x; create temp table patest1() inherits (patest0); insert into patest1 select x, x from generate_series(0,1000) x; create temp table patest2() inherits (patest0); insert into patest2 select x, x from generate_series(0,1000) x; create index patest0i on patest0(id); create index patest1i on patest1(id); create index patest2i on patest2(id); analyze patest0; analyze patest1; analyze patest2; explain (costs off) select * from patest0 join (select f1 from int4_tbl limit 1) ss on id = f1; select * from patest0 join (select f1 from int4_tbl limit 1) ss on id = f1; drop index patest2i; explain (costs off) select * from patest0 join (select f1 from int4_tbl limit 1) ss on id = f1; select * from patest0 join (select f1 from int4_tbl limit 1) ss on id = f1; drop table patest0 cascade; -- -- Test merge-append plans for inheritance trees -- create table matest0 (id serial primary key, name text); create table matest1 (id integer primary key) inherits (matest0); create table matest2 (id integer primary key) inherits (matest0); create table matest3 (id integer primary key) inherits (matest0); create index matest0i on matest0 ((1-id)); create index matest1i on matest1 ((1-id)); -- create index matest2i on matest2 ((1-id)); -- intentionally missing create index matest3i on matest3 ((1-id)); insert into matest1 (name) values ('Test 1'); insert into matest1 (name) values ('Test 2'); insert into matest2 (name) values ('Test 3'); insert into matest2 (name) values ('Test 4'); insert into matest3 (name) values ('Test 5'); insert into matest3 (name) values ('Test 6'); set enable_indexscan = off; -- force use of seqscan/sort, so no merge explain (verbose, costs off) select * from matest0 order by 1-id; select * from matest0 order by 1-id; explain (verbose, costs off) select min(1-id) from matest0; select min(1-id) from matest0; reset enable_indexscan; set enable_seqscan = off; -- plan with fewest seqscans should be merge set enable_parallel_append = off; -- Don't let parallel-append interfere explain (verbose, costs off) select * from matest0 order by 1-id; select * from matest0 order by 1-id; explain (verbose, costs off) select min(1-id) from matest0; select min(1-id) from matest0; reset enable_seqscan; reset enable_parallel_append; drop table matest0 cascade; -- -- Check that use of an index with an extraneous column doesn't produce -- a plan with extraneous sorting -- create table matest0 (a int, b int, c int, d int); create table matest1 () inherits(matest0); create index matest0i on matest0 (b, c); create index matest1i on matest1 (b, c); set enable_nestloop = off; -- we want a plan with two MergeAppends explain (costs off) select t1.* from matest0 t1, matest0 t2 where t1.b = t2.b and t2.c = t2.d order by t1.b limit 10; reset enable_nestloop; drop table matest0 cascade; -- -- Test merge-append for UNION ALL append relations -- set enable_seqscan = off; set enable_indexscan = on; set enable_bitmapscan = off; -- Check handling of duplicated, constant, or volatile targetlist items explain (costs off) SELECT thousand, tenthous FROM tenk1 UNION ALL SELECT thousand, thousand FROM tenk1 ORDER BY thousand, tenthous; explain (costs off) SELECT thousand, tenthous, thousand+tenthous AS x FROM tenk1 UNION ALL SELECT 42, 42, hundred FROM tenk1 ORDER BY thousand, tenthous; explain (costs off) SELECT thousand, tenthous FROM tenk1 UNION ALL SELECT thousand, random()::integer FROM tenk1 ORDER BY thousand, tenthous; -- Check min/max aggregate optimization explain (costs off) SELECT min(x) FROM (SELECT unique1 AS x FROM tenk1 a UNION ALL SELECT unique2 AS x FROM tenk1 b) s; explain (costs off) SELECT min(y) FROM (SELECT unique1 AS x, unique1 AS y FROM tenk1 a UNION ALL SELECT unique2 AS x, unique2 AS y FROM tenk1 b) s; -- XXX planner doesn't recognize that index on unique2 is sufficiently sorted explain (costs off) SELECT x, y FROM (SELECT thousand AS x, tenthous AS y FROM tenk1 a UNION ALL SELECT unique2 AS x, unique2 AS y FROM tenk1 b) s ORDER BY x, y; -- exercise rescan code path via a repeatedly-evaluated subquery explain (costs off) SELECT ARRAY(SELECT f.i FROM ( (SELECT d + g.i FROM generate_series(4, 30, 3) d ORDER BY 1) UNION ALL (SELECT d + g.i FROM generate_series(0, 30, 5) d ORDER BY 1) ) f(i) ORDER BY f.i LIMIT 10) FROM generate_series(1, 3) g(i); SELECT ARRAY(SELECT f.i FROM ( (SELECT d + g.i FROM generate_series(4, 30, 3) d ORDER BY 1) UNION ALL (SELECT d + g.i FROM generate_series(0, 30, 5) d ORDER BY 1) ) f(i) ORDER BY f.i LIMIT 10) FROM generate_series(1, 3) g(i); reset enable_seqscan; reset enable_indexscan; reset enable_bitmapscan; -- -- Check handling of a constant-null CHECK constraint -- create table cnullparent (f1 int); create table cnullchild (check (f1 = 1 or f1 = null)) inherits(cnullparent); insert into cnullchild values(1); insert into cnullchild values(2); insert into cnullchild values(null); select * from cnullparent; select * from cnullparent where f1 = 2; drop table cnullparent cascade; -- -- Check use of temporary tables with inheritance trees -- create table inh_perm_parent (a1 int); create temp table inh_temp_parent (a1 int); create temp table inh_temp_child () inherits (inh_perm_parent); -- ok create table inh_perm_child () inherits (inh_temp_parent); -- error create temp table inh_temp_child_2 () inherits (inh_temp_parent); -- ok insert into inh_perm_parent values (1); insert into inh_temp_parent values (2); insert into inh_temp_child values (3); insert into inh_temp_child_2 values (4); select tableoid::regclass, a1 from inh_perm_parent; select tableoid::regclass, a1 from inh_temp_parent; drop table inh_perm_parent cascade; drop table inh_temp_parent cascade; -- -- Check that constraint exclusion works correctly with partitions using -- implicit constraints generated from the partition bound information. -- create table list_parted ( a varchar ) partition by list (a); create table part_ab_cd partition of list_parted for values in ('ab', 'cd'); create table part_ef_gh partition of list_parted for values in ('ef', 'gh'); create table part_null_xy partition of list_parted for values in (null, 'xy'); explain (costs off) select * from list_parted; explain (costs off) select * from list_parted where a is null; explain (costs off) select * from list_parted where a is not null; explain (costs off) select * from list_parted where a in ('ab', 'cd', 'ef'); explain (costs off) select * from list_parted where a = 'ab' or a in (null, 'cd'); explain (costs off) select * from list_parted where a = 'ab'; create table range_list_parted ( a int, b char(2) ) partition by range (a); create table part_1_10 partition of range_list_parted for values from (1) to (10) partition by list (b); create table part_1_10_ab partition of part_1_10 for values in ('ab'); create table part_1_10_cd partition of part_1_10 for values in ('cd'); create table part_10_20 partition of range_list_parted for values from (10) to (20) partition by list (b); create table part_10_20_ab partition of part_10_20 for values in ('ab'); create table part_10_20_cd partition of part_10_20 for values in ('cd'); create table part_21_30 partition of range_list_parted for values from (21) to (30) partition by list (b); create table part_21_30_ab partition of part_21_30 for values in ('ab'); create table part_21_30_cd partition of part_21_30 for values in ('cd'); create table part_40_inf partition of range_list_parted for values from (40) to (maxvalue) partition by list (b); create table part_40_inf_ab partition of part_40_inf for values in ('ab'); create table part_40_inf_cd partition of part_40_inf for values in ('cd'); create table part_40_inf_null partition of part_40_inf for values in (null); explain (costs off) select * from range_list_parted; explain (costs off) select * from range_list_parted where a = 5; explain (costs off) select * from range_list_parted where b = 'ab'; explain (costs off) select * from range_list_parted where a between 3 and 23 and b in ('ab'); /* Should select no rows because range partition key cannot be null */ explain (costs off) select * from range_list_parted where a is null; /* Should only select rows from the null-accepting partition */ explain (costs off) select * from range_list_parted where b is null; explain (costs off) select * from range_list_parted where a is not null and a < 67; explain (costs off) select * from range_list_parted where a >= 30; drop table list_parted; drop table range_list_parted; -- check that constraint exclusion is able to cope with the partition -- constraint emitted for multi-column range partitioned tables create table mcrparted (a int, b int, c int) partition by range (a, abs(b), c); create table mcrparted_def partition of mcrparted default; create table mcrparted0 partition of mcrparted for values from (minvalue, minvalue, minvalue) to (1, 1, 1); create table mcrparted1 partition of mcrparted for values from (1, 1, 1) to (10, 5, 10); create table mcrparted2 partition of mcrparted for values from (10, 5, 10) to (10, 10, 10); create table mcrparted3 partition of mcrparted for values from (11, 1, 1) to (20, 10, 10); create table mcrparted4 partition of mcrparted for values from (20, 10, 10) to (20, 20, 20); create table mcrparted5 partition of mcrparted for values from (20, 20, 20) to (maxvalue, maxvalue, maxvalue); explain (costs off) select * from mcrparted where a = 0; -- scans mcrparted0, mcrparted_def explain (costs off) select * from mcrparted where a = 10 and abs(b) < 5; -- scans mcrparted1, mcrparted_def explain (costs off) select * from mcrparted where a = 10 and abs(b) = 5; -- scans mcrparted1, mcrparted2, mcrparted_def explain (costs off) select * from mcrparted where abs(b) = 5; -- scans all partitions explain (costs off) select * from mcrparted where a > -1; -- scans all partitions explain (costs off) select * from mcrparted where a = 20 and abs(b) = 10 and c > 10; -- scans mcrparted4 explain (costs off) select * from mcrparted where a = 20 and c > 20; -- scans mcrparted3, mcrparte4, mcrparte5, mcrparted_def -- check that partitioned table Appends cope with being referenced in -- subplans create table parted_minmax (a int, b varchar(16)) partition by range (a); create table parted_minmax1 partition of parted_minmax for values from (1) to (10); create index parted_minmax1i on parted_minmax1 (a, b); insert into parted_minmax values (1,'12345'); explain (costs off) select min(a), max(a) from parted_minmax where b = '12345'; select min(a), max(a) from parted_minmax where b = '12345'; drop table parted_minmax; -- Test code that uses Append nodes in place of MergeAppend when the -- partition ordering matches the desired ordering. create index mcrparted_a_abs_c_idx on mcrparted (a, abs(b), c); -- MergeAppend must be used when a default partition exists explain (costs off) select * from mcrparted order by a, abs(b), c; drop table mcrparted_def; -- Append is used for a RANGE partitioned table with no default -- and no subpartitions explain (costs off) select * from mcrparted order by a, abs(b), c; -- Append is used with subpaths in reverse order with backwards index scans explain (costs off) select * from mcrparted order by a desc, abs(b) desc, c desc; -- check that Append plan is used containing a MergeAppend for sub-partitions -- that are unordered. drop table mcrparted5; create table mcrparted5 partition of mcrparted for values from (20, 20, 20) to (maxvalue, maxvalue, maxvalue) partition by list (a); create table mcrparted5a partition of mcrparted5 for values in(20); create table mcrparted5_def partition of mcrparted5 default; explain (costs off) select * from mcrparted order by a, abs(b), c; drop table mcrparted5_def; -- check that an Append plan is used and the sub-partitions are flattened -- into the main Append when the sub-partition is unordered but contains -- just a single sub-partition. explain (costs off) select a, abs(b) from mcrparted order by a, abs(b), c; -- check that Append is used when the sub-partitioned tables are pruned -- during planning. explain (costs off) select * from mcrparted where a < 20 order by a, abs(b), c; create table mclparted (a int) partition by list(a); create table mclparted1 partition of mclparted for values in(1); create table mclparted2 partition of mclparted for values in(2); create index on mclparted (a); -- Ensure an Append is used for a list partition with an order by. explain (costs off) select * from mclparted order by a; -- Ensure a MergeAppend is used when a partition exists with interleaved -- datums in the partition bound. create table mclparted3_5 partition of mclparted for values in(3,5); create table mclparted4 partition of mclparted for values in(4); explain (costs off) select * from mclparted order by a; drop table mclparted; -- Ensure subplans which don't have a path with the correct pathkeys get -- sorted correctly. drop index mcrparted_a_abs_c_idx; create index on mcrparted1 (a, abs(b), c); create index on mcrparted2 (a, abs(b), c); create index on mcrparted3 (a, abs(b), c); create index on mcrparted4 (a, abs(b), c); explain (costs off) select * from mcrparted where a < 20 order by a, abs(b), c limit 1; set enable_bitmapscan = 0; -- Ensure Append node can be used when the partition is ordered by some -- pathkeys which were deemed redundant. explain (costs off) select * from mcrparted where a = 10 order by a, abs(b), c; reset enable_bitmapscan; drop table mcrparted; -- Ensure LIST partitions allow an Append to be used instead of a MergeAppend create table bool_lp (b bool) partition by list(b); create table bool_lp_true partition of bool_lp for values in(true); create table bool_lp_false partition of bool_lp for values in(false); create index on bool_lp (b); explain (costs off) select * from bool_lp order by b; drop table bool_lp; -- Ensure const bool quals can be properly detected as redundant create table bool_rp (b bool, a int) partition by range(b,a); create table bool_rp_false_1k partition of bool_rp for values from (false,0) to (false,1000); create table bool_rp_true_1k partition of bool_rp for values from (true,0) to (true,1000); create table bool_rp_false_2k partition of bool_rp for values from (false,1000) to (false,2000); create table bool_rp_true_2k partition of bool_rp for values from (true,1000) to (true,2000); create index on bool_rp (b,a); explain (costs off) select * from bool_rp where b = true order by b,a; explain (costs off) select * from bool_rp where b = false order by b,a; explain (costs off) select * from bool_rp where b = true order by a; explain (costs off) select * from bool_rp where b = false order by a; drop table bool_rp; -- Ensure an Append scan is chosen when the partition order is a subset of -- the required order. create table range_parted (a int, b int, c int) partition by range(a, b); create table range_parted1 partition of range_parted for values from (0,0) to (10,10); create table range_parted2 partition of range_parted for values from (10,10) to (20,20); create index on range_parted (a,b,c); explain (costs off) select * from range_parted order by a,b,c; explain (costs off) select * from range_parted order by a desc,b desc,c desc; drop table range_parted; -- Check that we allow access to a child table's statistics when the user -- has permissions only for the parent table. create table permtest_parent (a int, b text, c text) partition by list (a); create table permtest_child (b text, c text, a int) partition by list (b); create table permtest_grandchild (c text, b text, a int); alter table permtest_child attach partition permtest_grandchild for values in ('a'); alter table permtest_parent attach partition permtest_child for values in (1); create index on permtest_parent (left(c, 3)); insert into permtest_parent select 1, 'a', left(md5(i::text), 5) from generate_series(0, 100) i; analyze permtest_parent; create role regress_no_child_access; revoke all on permtest_grandchild from regress_no_child_access; grant select on permtest_parent to regress_no_child_access; set session authorization regress_no_child_access; -- without stats access, these queries would produce hash join plans: explain (costs off) select * from permtest_parent p1 inner join permtest_parent p2 on p1.a = p2.a and p1.c ~ 'a1$'; explain (costs off) select * from permtest_parent p1 inner join permtest_parent p2 on p1.a = p2.a and left(p1.c, 3) ~ 'a1$'; reset session authorization; revoke all on permtest_parent from regress_no_child_access; grant select(a,c) on permtest_parent to regress_no_child_access; set session authorization regress_no_child_access; explain (costs off) select p2.a, p1.c from permtest_parent p1 inner join permtest_parent p2 on p1.a = p2.a and p1.c ~ 'a1$'; -- we will not have access to the expression index's stats here: explain (costs off) select p2.a, p1.c from permtest_parent p1 inner join permtest_parent p2 on p1.a = p2.a and left(p1.c, 3) ~ 'a1$'; reset session authorization; revoke all on permtest_parent from regress_no_child_access; drop role regress_no_child_access; drop table permtest_parent; -- Verify that constraint errors across partition root / child are -- handled correctly (Bug #16293) CREATE TABLE errtst_parent ( partid int not null, shdata int not null, data int NOT NULL DEFAULT 0, CONSTRAINT shdata_small CHECK(shdata < 3) ) PARTITION BY RANGE (partid); -- fast defaults lead to attribute mapping being used in one -- direction, but not the other CREATE TABLE errtst_child_fastdef ( partid int not null, shdata int not null, CONSTRAINT shdata_small CHECK(shdata < 3) ); -- no remapping in either direction necessary CREATE TABLE errtst_child_plaindef ( partid int not null, shdata int not null, data int NOT NULL DEFAULT 0, CONSTRAINT shdata_small CHECK(shdata < 3), CHECK(data < 10) ); -- remapping in both direction CREATE TABLE errtst_child_reorder ( data int NOT NULL DEFAULT 0, shdata int not null, partid int not null, CONSTRAINT shdata_small CHECK(shdata < 3), CHECK(data < 10) ); ALTER TABLE errtst_child_fastdef ADD COLUMN data int NOT NULL DEFAULT 0; ALTER TABLE errtst_child_fastdef ADD CONSTRAINT errtest_child_fastdef_data_check CHECK (data < 10); ALTER TABLE errtst_parent ATTACH PARTITION errtst_child_fastdef FOR VALUES FROM (0) TO (10); ALTER TABLE errtst_parent ATTACH PARTITION errtst_child_plaindef FOR VALUES FROM (10) TO (20); ALTER TABLE errtst_parent ATTACH PARTITION errtst_child_reorder FOR VALUES FROM (20) TO (30); -- insert without child check constraint error INSERT INTO errtst_parent(partid, shdata, data) VALUES ( '0', '1', '5'); INSERT INTO errtst_parent(partid, shdata, data) VALUES ('10', '1', '5'); INSERT INTO errtst_parent(partid, shdata, data) VALUES ('20', '1', '5'); -- insert with child check constraint error INSERT INTO errtst_parent(partid, shdata, data) VALUES ( '0', '1', '10'); INSERT INTO errtst_parent(partid, shdata, data) VALUES ('10', '1', '10'); INSERT INTO errtst_parent(partid, shdata, data) VALUES ('20', '1', '10'); -- insert with child not null constraint error INSERT INTO errtst_parent(partid, shdata, data) VALUES ( '0', '1', NULL); INSERT INTO errtst_parent(partid, shdata, data) VALUES ('10', '1', NULL); INSERT INTO errtst_parent(partid, shdata, data) VALUES ('20', '1', NULL); -- insert with shared check constraint error INSERT INTO errtst_parent(partid, shdata, data) VALUES ( '0', '5', '5'); INSERT INTO errtst_parent(partid, shdata, data) VALUES ('10', '5', '5'); INSERT INTO errtst_parent(partid, shdata, data) VALUES ('20', '5', '5'); -- within partition update without child check constraint violation BEGIN; UPDATE errtst_parent SET data = data + 1 WHERE partid = 0; UPDATE errtst_parent SET data = data + 1 WHERE partid = 10; UPDATE errtst_parent SET data = data + 1 WHERE partid = 20; ROLLBACK; -- within partition update with child check constraint violation UPDATE errtst_parent SET data = data + 10 WHERE partid = 0; UPDATE errtst_parent SET data = data + 10 WHERE partid = 10; UPDATE errtst_parent SET data = data + 10 WHERE partid = 20; -- direct leaf partition update, without partition id violation BEGIN; UPDATE errtst_child_fastdef SET partid = 1 WHERE partid = 0; UPDATE errtst_child_plaindef SET partid = 11 WHERE partid = 10; UPDATE errtst_child_reorder SET partid = 21 WHERE partid = 20; ROLLBACK; -- direct leaf partition update, with partition id violation UPDATE errtst_child_fastdef SET partid = partid + 10 WHERE partid = 0; UPDATE errtst_child_plaindef SET partid = partid + 10 WHERE partid = 10; UPDATE errtst_child_reorder SET partid = partid + 10 WHERE partid = 20; -- partition move, without child check constraint violation BEGIN; UPDATE errtst_parent SET partid = 10, data = data + 1 WHERE partid = 0; UPDATE errtst_parent SET partid = 20, data = data + 1 WHERE partid = 10; UPDATE errtst_parent SET partid = 0, data = data + 1 WHERE partid = 20; ROLLBACK; -- partition move, with child check constraint violation UPDATE errtst_parent SET partid = 10, data = data + 10 WHERE partid = 0; UPDATE errtst_parent SET partid = 20, data = data + 10 WHERE partid = 10; UPDATE errtst_parent SET partid = 0, data = data + 10 WHERE partid = 20; -- partition move, without target partition UPDATE errtst_parent SET partid = 30, data = data + 10 WHERE partid = 20; DROP TABLE errtst_parent; libpg_query-13-2.1.0/test/sql/postgres_regress/init_privs.sql000066400000000000000000000005541413137616400243540ustar00rootroot00000000000000-- Test initial privileges -- There should always be some initial privileges, set up by initdb SELECT count(*) > 0 FROM pg_init_privs; -- Intentionally include some non-initial privs for pg_dump to dump out GRANT SELECT ON pg_proc TO CURRENT_USER; GRANT SELECT (prosrc) ON pg_proc TO CURRENT_USER; GRANT SELECT (rolname, rolsuper) ON pg_authid TO CURRENT_USER; libpg_query-13-2.1.0/test/sql/postgres_regress/insert.sql000066400000000000000000000622141413137616400234730ustar00rootroot00000000000000-- -- insert with DEFAULT in the target_list -- create table inserttest (col1 int4, col2 int4 NOT NULL, col3 text default 'testing'); insert into inserttest (col1, col2, col3) values (DEFAULT, DEFAULT, DEFAULT); insert into inserttest (col2, col3) values (3, DEFAULT); insert into inserttest (col1, col2, col3) values (DEFAULT, 5, DEFAULT); insert into inserttest values (DEFAULT, 5, 'test'); insert into inserttest values (DEFAULT, 7); select * from inserttest; -- -- insert with similar expression / target_list values (all fail) -- insert into inserttest (col1, col2, col3) values (DEFAULT, DEFAULT); insert into inserttest (col1, col2, col3) values (1, 2); insert into inserttest (col1) values (1, 2); insert into inserttest (col1) values (DEFAULT, DEFAULT); select * from inserttest; -- -- VALUES test -- insert into inserttest values(10, 20, '40'), (-1, 2, DEFAULT), ((select 2), (select i from (values(3)) as foo (i)), 'values are fun!'); select * from inserttest; -- -- TOASTed value test -- insert into inserttest values(30, 50, repeat('x', 10000)); select col1, col2, char_length(col3) from inserttest; drop table inserttest; -- -- check indirection (field/array assignment), cf bug #14265 -- -- these tests are aware that transformInsertStmt has 3 separate code paths -- create type insert_test_type as (if1 int, if2 text[]); create table inserttest (f1 int, f2 int[], f3 insert_test_type, f4 insert_test_type[]); insert into inserttest (f2[1], f2[2]) values (1,2); insert into inserttest (f2[1], f2[2]) values (3,4), (5,6); insert into inserttest (f2[1], f2[2]) select 7,8; insert into inserttest (f2[1], f2[2]) values (1,default); -- not supported insert into inserttest (f3.if1, f3.if2) values (1,array['foo']); insert into inserttest (f3.if1, f3.if2) values (1,'{foo}'), (2,'{bar}'); insert into inserttest (f3.if1, f3.if2) select 3, '{baz,quux}'; insert into inserttest (f3.if1, f3.if2) values (1,default); -- not supported insert into inserttest (f3.if2[1], f3.if2[2]) values ('foo', 'bar'); insert into inserttest (f3.if2[1], f3.if2[2]) values ('foo', 'bar'), ('baz', 'quux'); insert into inserttest (f3.if2[1], f3.if2[2]) select 'bear', 'beer'; insert into inserttest (f4[1].if2[1], f4[1].if2[2]) values ('foo', 'bar'); insert into inserttest (f4[1].if2[1], f4[1].if2[2]) values ('foo', 'bar'), ('baz', 'quux'); insert into inserttest (f4[1].if2[1], f4[1].if2[2]) select 'bear', 'beer'; select * from inserttest; -- also check reverse-listing create table inserttest2 (f1 bigint, f2 text); create rule irule1 as on insert to inserttest2 do also insert into inserttest (f3.if2[1], f3.if2[2]) values (new.f1,new.f2); create rule irule2 as on insert to inserttest2 do also insert into inserttest (f4[1].if1, f4[1].if2[2]) values (1,'fool'),(new.f1,new.f2); create rule irule3 as on insert to inserttest2 do also insert into inserttest (f4[1].if1, f4[1].if2[2]) select new.f1, new.f2; \d+ inserttest2 drop table inserttest2; drop table inserttest; drop type insert_test_type; -- direct partition inserts should check partition bound constraint create table range_parted ( a text, b int ) partition by range (a, (b+0)); -- no partitions, so fail insert into range_parted values ('a', 11); create table part1 partition of range_parted for values from ('a', 1) to ('a', 10); create table part2 partition of range_parted for values from ('a', 10) to ('a', 20); create table part3 partition of range_parted for values from ('b', 1) to ('b', 10); create table part4 partition of range_parted for values from ('b', 10) to ('b', 20); -- fail insert into part1 values ('a', 11); insert into part1 values ('b', 1); -- ok insert into part1 values ('a', 1); -- fail insert into part4 values ('b', 21); insert into part4 values ('a', 10); -- ok insert into part4 values ('b', 10); -- fail (partition key a has a NOT NULL constraint) insert into part1 values (null); -- fail (expression key (b+0) cannot be null either) insert into part1 values (1); create table list_parted ( a text, b int ) partition by list (lower(a)); create table part_aa_bb partition of list_parted FOR VALUES IN ('aa', 'bb'); create table part_cc_dd partition of list_parted FOR VALUES IN ('cc', 'dd'); create table part_null partition of list_parted FOR VALUES IN (null); -- fail insert into part_aa_bb values ('cc', 1); insert into part_aa_bb values ('AAa', 1); insert into part_aa_bb values (null); -- ok insert into part_cc_dd values ('cC', 1); insert into part_null values (null, 0); -- check in case of multi-level partitioned table create table part_ee_ff partition of list_parted for values in ('ee', 'ff') partition by range (b); create table part_ee_ff1 partition of part_ee_ff for values from (1) to (10); create table part_ee_ff2 partition of part_ee_ff for values from (10) to (20); -- test default partition create table part_default partition of list_parted default; -- Negative test: a row, which would fit in other partition, does not fit -- default partition, even when inserted directly insert into part_default values ('aa', 2); insert into part_default values (null, 2); -- ok insert into part_default values ('Zz', 2); -- test if default partition works as expected for multi-level partitioned -- table as well as when default partition itself is further partitioned drop table part_default; create table part_xx_yy partition of list_parted for values in ('xx', 'yy') partition by list (a); create table part_xx_yy_p1 partition of part_xx_yy for values in ('xx'); create table part_xx_yy_defpart partition of part_xx_yy default; create table part_default partition of list_parted default partition by range(b); create table part_default_p1 partition of part_default for values from (20) to (30); create table part_default_p2 partition of part_default for values from (30) to (40); -- fail insert into part_ee_ff1 values ('EE', 11); insert into part_default_p2 values ('gg', 43); -- fail (even the parent's, ie, part_ee_ff's partition constraint applies) insert into part_ee_ff1 values ('cc', 1); insert into part_default values ('gg', 43); -- ok insert into part_ee_ff1 values ('ff', 1); insert into part_ee_ff2 values ('ff', 11); insert into part_default_p1 values ('cd', 25); insert into part_default_p2 values ('de', 35); insert into list_parted values ('ab', 21); insert into list_parted values ('xx', 1); insert into list_parted values ('yy', 2); select tableoid::regclass, * from list_parted; -- Check tuple routing for partitioned tables -- fail insert into range_parted values ('a', 0); -- ok insert into range_parted values ('a', 1); insert into range_parted values ('a', 10); -- fail insert into range_parted values ('a', 20); -- ok insert into range_parted values ('b', 1); insert into range_parted values ('b', 10); -- fail (partition key (b+0) is null) insert into range_parted values ('a'); -- Check default partition create table part_def partition of range_parted default; -- fail insert into part_def values ('b', 10); -- ok insert into part_def values ('c', 10); insert into range_parted values (null, null); insert into range_parted values ('a', null); insert into range_parted values (null, 19); insert into range_parted values ('b', 20); select tableoid::regclass, * from range_parted; -- ok insert into list_parted values (null, 1); insert into list_parted (a) values ('aA'); -- fail (partition of part_ee_ff not found in both cases) insert into list_parted values ('EE', 0); insert into part_ee_ff values ('EE', 0); -- ok insert into list_parted values ('EE', 1); insert into part_ee_ff values ('EE', 10); select tableoid::regclass, * from list_parted; -- some more tests to exercise tuple-routing with multi-level partitioning create table part_gg partition of list_parted for values in ('gg') partition by range (b); create table part_gg1 partition of part_gg for values from (minvalue) to (1); create table part_gg2 partition of part_gg for values from (1) to (10) partition by range (b); create table part_gg2_1 partition of part_gg2 for values from (1) to (5); create table part_gg2_2 partition of part_gg2 for values from (5) to (10); create table part_ee_ff3 partition of part_ee_ff for values from (20) to (30) partition by range (b); create table part_ee_ff3_1 partition of part_ee_ff3 for values from (20) to (25); create table part_ee_ff3_2 partition of part_ee_ff3 for values from (25) to (30); truncate list_parted; insert into list_parted values ('aa'), ('cc'); insert into list_parted select 'Ff', s.a from generate_series(1, 29) s(a); insert into list_parted select 'gg', s.a from generate_series(1, 9) s(a); insert into list_parted (b) values (1); select tableoid::regclass::text, a, min(b) as min_b, max(b) as max_b from list_parted group by 1, 2 order by 1; -- direct partition inserts should check hash partition bound constraint -- Use hand-rolled hash functions and operator classes to get predictable -- result on different machines. The hash function for int4 simply returns -- the sum of the values passed to it and the one for text returns the length -- of the non-empty string value passed to it or 0. create or replace function part_hashint4_noop(value int4, seed int8) returns int8 as $$ select value + seed; $$ language sql immutable; create operator class part_test_int4_ops for type int4 using hash as operator 1 =, function 2 part_hashint4_noop(int4, int8); create or replace function part_hashtext_length(value text, seed int8) RETURNS int8 AS $$ select length(coalesce(value, ''))::int8 $$ language sql immutable; create operator class part_test_text_ops for type text using hash as operator 1 =, function 2 part_hashtext_length(text, int8); create table hash_parted ( a int ) partition by hash (a part_test_int4_ops); create table hpart0 partition of hash_parted for values with (modulus 4, remainder 0); create table hpart1 partition of hash_parted for values with (modulus 4, remainder 1); create table hpart2 partition of hash_parted for values with (modulus 4, remainder 2); create table hpart3 partition of hash_parted for values with (modulus 4, remainder 3); insert into hash_parted values(generate_series(1,10)); -- direct insert of values divisible by 4 - ok; insert into hpart0 values(12),(16); -- fail; insert into hpart0 values(11); -- 11 % 4 -> 3 remainder i.e. valid data for hpart3 partition insert into hpart3 values(11); -- view data select tableoid::regclass as part, a, a%4 as "remainder = a % 4" from hash_parted order by part; -- test \d+ output on a table which has both partitioned and unpartitioned -- partitions \d+ list_parted -- cleanup drop table range_parted, list_parted; drop table hash_parted; -- test that a default partition added as the first partition accepts any value -- including null create table list_parted (a int) partition by list (a); create table part_default partition of list_parted default; \d+ part_default insert into part_default values (null); insert into part_default values (1); insert into part_default values (-1); select tableoid::regclass, a from list_parted; -- cleanup drop table list_parted; -- more tests for certain multi-level partitioning scenarios create table mlparted (a int, b int) partition by range (a, b); create table mlparted1 (b int not null, a int not null) partition by range ((b+0)); create table mlparted11 (like mlparted1); alter table mlparted11 drop a; alter table mlparted11 add a int; alter table mlparted11 drop a; alter table mlparted11 add a int not null; -- attnum for key attribute 'a' is different in mlparted, mlparted1, and mlparted11 select attrelid::regclass, attname, attnum from pg_attribute where attname = 'a' and (attrelid = 'mlparted'::regclass or attrelid = 'mlparted1'::regclass or attrelid = 'mlparted11'::regclass) order by attrelid::regclass::text; alter table mlparted1 attach partition mlparted11 for values from (2) to (5); alter table mlparted attach partition mlparted1 for values from (1, 2) to (1, 10); -- check that "(1, 2)" is correctly routed to mlparted11. insert into mlparted values (1, 2); select tableoid::regclass, * from mlparted; -- check that proper message is shown after failure to route through mlparted1 insert into mlparted (a, b) values (1, 5); truncate mlparted; alter table mlparted add constraint check_b check (b = 3); -- have a BR trigger modify the row such that the check_b is violated create function mlparted11_trig_fn() returns trigger AS $$ begin NEW.b := 4; return NEW; end; $$ language plpgsql; create trigger mlparted11_trig before insert ON mlparted11 for each row execute procedure mlparted11_trig_fn(); -- check that the correct row is shown when constraint check_b fails after -- "(1, 2)" is routed to mlparted11 (actually "(1, 4)" would be shown due -- to the BR trigger mlparted11_trig_fn) insert into mlparted values (1, 2); drop trigger mlparted11_trig on mlparted11; drop function mlparted11_trig_fn(); -- check that inserting into an internal partition successfully results in -- checking its partition constraint before inserting into the leaf partition -- selected by tuple-routing insert into mlparted1 (a, b) values (2, 3); -- check routing error through a list partitioned table when the key is null create table lparted_nonullpart (a int, b char) partition by list (b); create table lparted_nonullpart_a partition of lparted_nonullpart for values in ('a'); insert into lparted_nonullpart values (1); drop table lparted_nonullpart; -- check that RETURNING works correctly with tuple-routing alter table mlparted drop constraint check_b; create table mlparted12 partition of mlparted1 for values from (5) to (10); create table mlparted2 (b int not null, a int not null); alter table mlparted attach partition mlparted2 for values from (1, 10) to (1, 20); create table mlparted3 partition of mlparted for values from (1, 20) to (1, 30); create table mlparted4 (like mlparted); alter table mlparted4 drop a; alter table mlparted4 add a int not null; alter table mlparted attach partition mlparted4 for values from (1, 30) to (1, 40); with ins (a, b, c) as (insert into mlparted (b, a) select s.a, 1 from generate_series(2, 39) s(a) returning tableoid::regclass, *) select a, b, min(c), max(c) from ins group by a, b order by 1; alter table mlparted add c text; create table mlparted5 (c text, a int not null, b int not null) partition by list (c); create table mlparted5a (a int not null, c text, b int not null); alter table mlparted5 attach partition mlparted5a for values in ('a'); alter table mlparted attach partition mlparted5 for values from (1, 40) to (1, 50); alter table mlparted add constraint check_b check (a = 1 and b < 45); insert into mlparted values (1, 45, 'a'); create function mlparted5abrtrig_func() returns trigger as $$ begin new.c = 'b'; return new; end; $$ language plpgsql; create trigger mlparted5abrtrig before insert on mlparted5a for each row execute procedure mlparted5abrtrig_func(); insert into mlparted5 (a, b, c) values (1, 40, 'a'); drop table mlparted5; alter table mlparted drop constraint check_b; -- Check multi-level default partition create table mlparted_def partition of mlparted default partition by range(a); create table mlparted_def1 partition of mlparted_def for values from (40) to (50); create table mlparted_def2 partition of mlparted_def for values from (50) to (60); insert into mlparted values (40, 100); insert into mlparted_def1 values (42, 100); insert into mlparted_def2 values (54, 50); -- fail insert into mlparted values (70, 100); insert into mlparted_def1 values (52, 50); insert into mlparted_def2 values (34, 50); -- ok create table mlparted_defd partition of mlparted_def default; insert into mlparted values (70, 100); select tableoid::regclass, * from mlparted_def; -- Check multi-level tuple routing with attributes dropped from the -- top-most parent. First remove the last attribute. alter table mlparted add d int, add e int; alter table mlparted drop e; create table mlparted5 partition of mlparted for values from (1, 40) to (1, 50) partition by range (c); create table mlparted5_ab partition of mlparted5 for values from ('a') to ('c') partition by list (c); -- This partitioned table should remain with no partitions. create table mlparted5_cd partition of mlparted5 for values from ('c') to ('e') partition by list (c); create table mlparted5_a partition of mlparted5_ab for values in ('a'); create table mlparted5_b (d int, b int, c text, a int); alter table mlparted5_ab attach partition mlparted5_b for values in ('b'); truncate mlparted; insert into mlparted values (1, 2, 'a', 1); insert into mlparted values (1, 40, 'a', 1); -- goes to mlparted5_a insert into mlparted values (1, 45, 'b', 1); -- goes to mlparted5_b insert into mlparted values (1, 45, 'c', 1); -- goes to mlparted5_cd, fails insert into mlparted values (1, 45, 'f', 1); -- goes to mlparted5, fails select tableoid::regclass, * from mlparted order by a, b, c, d; alter table mlparted drop d; truncate mlparted; -- Remove the before last attribute. alter table mlparted add e int, add d int; alter table mlparted drop e; insert into mlparted values (1, 2, 'a', 1); insert into mlparted values (1, 40, 'a', 1); -- goes to mlparted5_a insert into mlparted values (1, 45, 'b', 1); -- goes to mlparted5_b insert into mlparted values (1, 45, 'c', 1); -- goes to mlparted5_cd, fails insert into mlparted values (1, 45, 'f', 1); -- goes to mlparted5, fails select tableoid::regclass, * from mlparted order by a, b, c, d; alter table mlparted drop d; drop table mlparted5; -- check that message shown after failure to find a partition shows the -- appropriate key description (or none) in various situations create table key_desc (a int, b int) partition by list ((a+0)); create table key_desc_1 partition of key_desc for values in (1) partition by range (b); create user regress_insert_other_user; grant select (a) on key_desc_1 to regress_insert_other_user; grant insert on key_desc to regress_insert_other_user; set role regress_insert_other_user; -- no key description is shown insert into key_desc values (1, 1); reset role; grant select (b) on key_desc_1 to regress_insert_other_user; set role regress_insert_other_user; -- key description (b)=(1) is now shown insert into key_desc values (1, 1); -- key description is not shown if key contains expression insert into key_desc values (2, 1); reset role; revoke all on key_desc from regress_insert_other_user; revoke all on key_desc_1 from regress_insert_other_user; drop role regress_insert_other_user; drop table key_desc, key_desc_1; -- test minvalue/maxvalue restrictions create table mcrparted (a int, b int, c int) partition by range (a, abs(b), c); create table mcrparted0 partition of mcrparted for values from (minvalue, 0, 0) to (1, maxvalue, maxvalue); create table mcrparted2 partition of mcrparted for values from (10, 6, minvalue) to (10, maxvalue, minvalue); create table mcrparted4 partition of mcrparted for values from (21, minvalue, 0) to (30, 20, minvalue); -- check multi-column range partitioning expression enforces the same -- constraint as what tuple-routing would determine it to be create table mcrparted0 partition of mcrparted for values from (minvalue, minvalue, minvalue) to (1, maxvalue, maxvalue); create table mcrparted1 partition of mcrparted for values from (2, 1, minvalue) to (10, 5, 10); create table mcrparted2 partition of mcrparted for values from (10, 6, minvalue) to (10, maxvalue, maxvalue); create table mcrparted3 partition of mcrparted for values from (11, 1, 1) to (20, 10, 10); create table mcrparted4 partition of mcrparted for values from (21, minvalue, minvalue) to (30, 20, maxvalue); create table mcrparted5 partition of mcrparted for values from (30, 21, 20) to (maxvalue, maxvalue, maxvalue); -- null not allowed in range partition insert into mcrparted values (null, null, null); -- routed to mcrparted0 insert into mcrparted values (0, 1, 1); insert into mcrparted0 values (0, 1, 1); -- routed to mcparted1 insert into mcrparted values (9, 1000, 1); insert into mcrparted1 values (9, 1000, 1); insert into mcrparted values (10, 5, -1); insert into mcrparted1 values (10, 5, -1); insert into mcrparted values (2, 1, 0); insert into mcrparted1 values (2, 1, 0); -- routed to mcparted2 insert into mcrparted values (10, 6, 1000); insert into mcrparted2 values (10, 6, 1000); insert into mcrparted values (10, 1000, 1000); insert into mcrparted2 values (10, 1000, 1000); -- no partition exists, nor does mcrparted3 accept it insert into mcrparted values (11, 1, -1); insert into mcrparted3 values (11, 1, -1); -- routed to mcrparted5 insert into mcrparted values (30, 21, 20); insert into mcrparted5 values (30, 21, 20); insert into mcrparted4 values (30, 21, 20); -- error -- check rows select tableoid::regclass::text, * from mcrparted order by 1; -- cleanup drop table mcrparted; -- check that a BR constraint can't make partition contain violating rows create table brtrigpartcon (a int, b text) partition by list (a); create table brtrigpartcon1 partition of brtrigpartcon for values in (1); create or replace function brtrigpartcon1trigf() returns trigger as $$begin new.a := 2; return new; end$$ language plpgsql; create trigger brtrigpartcon1trig before insert on brtrigpartcon1 for each row execute procedure brtrigpartcon1trigf(); insert into brtrigpartcon values (1, 'hi there'); insert into brtrigpartcon1 values (1, 'hi there'); -- check that the message shows the appropriate column description in a -- situation where the partitioned table is not the primary ModifyTable node create table inserttest3 (f1 text default 'foo', f2 text default 'bar', f3 int); create role regress_coldesc_role; grant insert on inserttest3 to regress_coldesc_role; grant insert on brtrigpartcon to regress_coldesc_role; revoke select on brtrigpartcon from regress_coldesc_role; set role regress_coldesc_role; with result as (insert into brtrigpartcon values (1, 'hi there') returning 1) insert into inserttest3 (f3) select * from result; reset role; -- cleanup revoke all on inserttest3 from regress_coldesc_role; revoke all on brtrigpartcon from regress_coldesc_role; drop role regress_coldesc_role; drop table inserttest3; drop table brtrigpartcon; drop function brtrigpartcon1trigf(); -- check that "do nothing" BR triggers work with tuple-routing (this checks -- that estate->es_result_relation_info is appropriately set/reset for each -- routed tuple) create table donothingbrtrig_test (a int, b text) partition by list (a); create table donothingbrtrig_test1 (b text, a int); create table donothingbrtrig_test2 (c text, b text, a int); alter table donothingbrtrig_test2 drop column c; create or replace function donothingbrtrig_func() returns trigger as $$begin raise notice 'b: %', new.b; return NULL; end$$ language plpgsql; create trigger donothingbrtrig1 before insert on donothingbrtrig_test1 for each row execute procedure donothingbrtrig_func(); create trigger donothingbrtrig2 before insert on donothingbrtrig_test2 for each row execute procedure donothingbrtrig_func(); alter table donothingbrtrig_test attach partition donothingbrtrig_test1 for values in (1); alter table donothingbrtrig_test attach partition donothingbrtrig_test2 for values in (2); insert into donothingbrtrig_test values (1, 'foo'), (2, 'bar'); copy donothingbrtrig_test from stdout; 1 baz 2 qux \. select tableoid::regclass, * from donothingbrtrig_test; -- cleanup drop table donothingbrtrig_test; drop function donothingbrtrig_func(); -- check multi-column range partitioning with minvalue/maxvalue constraints create table mcrparted (a text, b int) partition by range(a, b); create table mcrparted1_lt_b partition of mcrparted for values from (minvalue, minvalue) to ('b', minvalue); create table mcrparted2_b partition of mcrparted for values from ('b', minvalue) to ('c', minvalue); create table mcrparted3_c_to_common partition of mcrparted for values from ('c', minvalue) to ('common', minvalue); create table mcrparted4_common_lt_0 partition of mcrparted for values from ('common', minvalue) to ('common', 0); create table mcrparted5_common_0_to_10 partition of mcrparted for values from ('common', 0) to ('common', 10); create table mcrparted6_common_ge_10 partition of mcrparted for values from ('common', 10) to ('common', maxvalue); create table mcrparted7_gt_common_lt_d partition of mcrparted for values from ('common', maxvalue) to ('d', minvalue); create table mcrparted8_ge_d partition of mcrparted for values from ('d', minvalue) to (maxvalue, maxvalue); \d+ mcrparted \d+ mcrparted1_lt_b \d+ mcrparted2_b \d+ mcrparted3_c_to_common \d+ mcrparted4_common_lt_0 \d+ mcrparted5_common_0_to_10 \d+ mcrparted6_common_ge_10 \d+ mcrparted7_gt_common_lt_d \d+ mcrparted8_ge_d insert into mcrparted values ('aaa', 0), ('b', 0), ('bz', 10), ('c', -10), ('comm', -10), ('common', -10), ('common', 0), ('common', 10), ('commons', 0), ('d', -10), ('e', 0); select tableoid::regclass, * from mcrparted order by a, b; drop table mcrparted; -- check that wholerow vars in the RETURNING list work with partitioned tables create table returningwrtest (a int) partition by list (a); create table returningwrtest1 partition of returningwrtest for values in (1); insert into returningwrtest values (1) returning returningwrtest; -- check also that the wholerow vars in RETURNING list are converted as needed alter table returningwrtest add b text; create table returningwrtest2 (b text, c int, a int); alter table returningwrtest2 drop c; alter table returningwrtest attach partition returningwrtest2 for values in (2); insert into returningwrtest values (2, 'foo') returning returningwrtest; drop table returningwrtest; libpg_query-13-2.1.0/test/sql/postgres_regress/insert_conflict.sql000066400000000000000000000670551413137616400253640ustar00rootroot00000000000000-- -- insert...on conflict do unique index inference -- create table insertconflicttest(key int4, fruit text); -- -- Test unique index inference with operator class specifications and -- named collations -- create unique index op_index_key on insertconflicttest(key, fruit text_pattern_ops); create unique index collation_index_key on insertconflicttest(key, fruit collate "C"); create unique index both_index_key on insertconflicttest(key, fruit collate "C" text_pattern_ops); create unique index both_index_expr_key on insertconflicttest(key, lower(fruit) collate "C" text_pattern_ops); -- fails explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (key) do nothing; explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (fruit) do nothing; -- succeeds explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (key, fruit) do nothing; explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (fruit, key, fruit, key) do nothing; explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (lower(fruit), key, lower(fruit), key) do nothing; explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (key, fruit) do update set fruit = excluded.fruit where exists (select 1 from insertconflicttest ii where ii.key = excluded.key); -- Neither collation nor operator class specifications are required -- -- supplying them merely *limits* matches to indexes with matching opclasses -- used for relevant indexes explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (key, fruit text_pattern_ops) do nothing; -- Okay, arbitrates using both index where text_pattern_ops opclass does and -- does not appear. explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (key, fruit collate "C") do nothing; -- Okay, but only accepts the single index where both opclass and collation are -- specified explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (fruit collate "C" text_pattern_ops, key) do nothing; -- Okay, but only accepts the single index where both opclass and collation are -- specified (plus expression variant) explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (lower(fruit) collate "C", key, key) do nothing; -- Attribute appears twice, while not all attributes/expressions on attributes -- appearing within index definition match in terms of both opclass and -- collation. -- -- Works because every attribute in inference specification needs to be -- satisfied once or more by cataloged index attribute, and as always when an -- attribute in the cataloged definition has a non-default opclass/collation, -- it still satisfied some inference attribute lacking any particular -- opclass/collation specification. -- -- The implementation is liberal in accepting inference specifications on the -- assumption that multiple inferred unique indexes will prevent problematic -- cases. It rolls with unique indexes where attributes redundantly appear -- multiple times, too (which is not tested here). explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (fruit, key, fruit text_pattern_ops, key) do nothing; explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (lower(fruit) collate "C" text_pattern_ops, key, key) do nothing; drop index op_index_key; drop index collation_index_key; drop index both_index_key; drop index both_index_expr_key; -- -- Make sure that cross matching of attribute opclass/collation does not occur -- create unique index cross_match on insertconflicttest(lower(fruit) collate "C", upper(fruit) text_pattern_ops); -- fails: explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (lower(fruit) text_pattern_ops, upper(fruit) collate "C") do nothing; -- works: explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (lower(fruit) collate "C", upper(fruit) text_pattern_ops) do nothing; drop index cross_match; -- -- Single key tests -- create unique index key_index on insertconflicttest(key); -- -- Explain tests -- explain (costs off) insert into insertconflicttest values (0, 'Bilberry') on conflict (key) do update set fruit = excluded.fruit; -- Should display qual actually attributable to internal sequential scan: explain (costs off) insert into insertconflicttest values (0, 'Bilberry') on conflict (key) do update set fruit = excluded.fruit where insertconflicttest.fruit != 'Cawesh'; -- With EXCLUDED.* expression in scan node: explain (costs off) insert into insertconflicttest values(0, 'Crowberry') on conflict (key) do update set fruit = excluded.fruit where excluded.fruit != 'Elderberry'; -- Does the same, but JSON format shows "Conflict Arbiter Index" as JSON array: explain (costs off, format json) insert into insertconflicttest values (0, 'Bilberry') on conflict (key) do update set fruit = excluded.fruit where insertconflicttest.fruit != 'Lime' returning *; -- Fails (no unique index inference specification, required for do update variant): insert into insertconflicttest values (1, 'Apple') on conflict do update set fruit = excluded.fruit; -- inference succeeds: insert into insertconflicttest values (1, 'Apple') on conflict (key) do update set fruit = excluded.fruit; insert into insertconflicttest values (2, 'Orange') on conflict (key, key, key) do update set fruit = excluded.fruit; -- Succeed, since multi-assignment does not involve subquery: insert into insertconflicttest values (1, 'Apple'), (2, 'Orange') on conflict (key) do update set (fruit, key) = (excluded.fruit, excluded.key); -- Give good diagnostic message when EXCLUDED.* spuriously referenced from -- RETURNING: insert into insertconflicttest values (1, 'Apple') on conflict (key) do update set fruit = excluded.fruit RETURNING excluded.fruit; -- Only suggest .* column when inference element misspelled: insert into insertconflicttest values (1, 'Apple') on conflict (keyy) do update set fruit = excluded.fruit; -- Have useful HINT for EXCLUDED.* RTE within UPDATE: insert into insertconflicttest values (1, 'Apple') on conflict (key) do update set fruit = excluded.fruitt; -- inference fails: insert into insertconflicttest values (3, 'Kiwi') on conflict (key, fruit) do update set fruit = excluded.fruit; insert into insertconflicttest values (4, 'Mango') on conflict (fruit, key) do update set fruit = excluded.fruit; insert into insertconflicttest values (5, 'Lemon') on conflict (fruit) do update set fruit = excluded.fruit; insert into insertconflicttest values (6, 'Passionfruit') on conflict (lower(fruit)) do update set fruit = excluded.fruit; -- Check the target relation can be aliased insert into insertconflicttest AS ict values (6, 'Passionfruit') on conflict (key) do update set fruit = excluded.fruit; -- ok, no reference to target table insert into insertconflicttest AS ict values (6, 'Passionfruit') on conflict (key) do update set fruit = ict.fruit; -- ok, alias insert into insertconflicttest AS ict values (6, 'Passionfruit') on conflict (key) do update set fruit = insertconflicttest.fruit; -- error, references aliased away name drop index key_index; -- -- Composite key tests -- create unique index comp_key_index on insertconflicttest(key, fruit); -- inference succeeds: insert into insertconflicttest values (7, 'Raspberry') on conflict (key, fruit) do update set fruit = excluded.fruit; insert into insertconflicttest values (8, 'Lime') on conflict (fruit, key) do update set fruit = excluded.fruit; -- inference fails: insert into insertconflicttest values (9, 'Banana') on conflict (key) do update set fruit = excluded.fruit; insert into insertconflicttest values (10, 'Blueberry') on conflict (key, key, key) do update set fruit = excluded.fruit; insert into insertconflicttest values (11, 'Cherry') on conflict (key, lower(fruit)) do update set fruit = excluded.fruit; insert into insertconflicttest values (12, 'Date') on conflict (lower(fruit), key) do update set fruit = excluded.fruit; drop index comp_key_index; -- -- Partial index tests, no inference predicate specified -- create unique index part_comp_key_index on insertconflicttest(key, fruit) where key < 5; create unique index expr_part_comp_key_index on insertconflicttest(key, lower(fruit)) where key < 5; -- inference fails: insert into insertconflicttest values (13, 'Grape') on conflict (key, fruit) do update set fruit = excluded.fruit; insert into insertconflicttest values (14, 'Raisin') on conflict (fruit, key) do update set fruit = excluded.fruit; insert into insertconflicttest values (15, 'Cranberry') on conflict (key) do update set fruit = excluded.fruit; insert into insertconflicttest values (16, 'Melon') on conflict (key, key, key) do update set fruit = excluded.fruit; insert into insertconflicttest values (17, 'Mulberry') on conflict (key, lower(fruit)) do update set fruit = excluded.fruit; insert into insertconflicttest values (18, 'Pineapple') on conflict (lower(fruit), key) do update set fruit = excluded.fruit; drop index part_comp_key_index; drop index expr_part_comp_key_index; -- -- Expression index tests -- create unique index expr_key_index on insertconflicttest(lower(fruit)); -- inference succeeds: insert into insertconflicttest values (20, 'Quince') on conflict (lower(fruit)) do update set fruit = excluded.fruit; insert into insertconflicttest values (21, 'Pomegranate') on conflict (lower(fruit), lower(fruit)) do update set fruit = excluded.fruit; -- inference fails: insert into insertconflicttest values (22, 'Apricot') on conflict (upper(fruit)) do update set fruit = excluded.fruit; insert into insertconflicttest values (23, 'Blackberry') on conflict (fruit) do update set fruit = excluded.fruit; drop index expr_key_index; -- -- Expression index tests (with regular column) -- create unique index expr_comp_key_index on insertconflicttest(key, lower(fruit)); create unique index tricky_expr_comp_key_index on insertconflicttest(key, lower(fruit), upper(fruit)); -- inference succeeds: insert into insertconflicttest values (24, 'Plum') on conflict (key, lower(fruit)) do update set fruit = excluded.fruit; insert into insertconflicttest values (25, 'Peach') on conflict (lower(fruit), key) do update set fruit = excluded.fruit; -- Should not infer "tricky_expr_comp_key_index" index: explain (costs off) insert into insertconflicttest values (26, 'Fig') on conflict (lower(fruit), key, lower(fruit), key) do update set fruit = excluded.fruit; -- inference fails: insert into insertconflicttest values (27, 'Prune') on conflict (key, upper(fruit)) do update set fruit = excluded.fruit; insert into insertconflicttest values (28, 'Redcurrant') on conflict (fruit, key) do update set fruit = excluded.fruit; insert into insertconflicttest values (29, 'Nectarine') on conflict (key) do update set fruit = excluded.fruit; drop index expr_comp_key_index; drop index tricky_expr_comp_key_index; -- -- Non-spurious duplicate violation tests -- create unique index key_index on insertconflicttest(key); create unique index fruit_index on insertconflicttest(fruit); -- succeeds, since UPDATE happens to update "fruit" to existing value: insert into insertconflicttest values (26, 'Fig') on conflict (key) do update set fruit = excluded.fruit; -- fails, since UPDATE is to row with key value 26, and we're updating "fruit" -- to a value that happens to exist in another row ('peach'): insert into insertconflicttest values (26, 'Peach') on conflict (key) do update set fruit = excluded.fruit; -- succeeds, since "key" isn't repeated/referenced in UPDATE, and "fruit" -- arbitrates that statement updates existing "Fig" row: insert into insertconflicttest values (25, 'Fig') on conflict (fruit) do update set fruit = excluded.fruit; drop index key_index; drop index fruit_index; -- -- Test partial unique index inference -- create unique index partial_key_index on insertconflicttest(key) where fruit like '%berry'; -- Succeeds insert into insertconflicttest values (23, 'Blackberry') on conflict (key) where fruit like '%berry' do update set fruit = excluded.fruit; insert into insertconflicttest values (23, 'Blackberry') on conflict (key) where fruit like '%berry' and fruit = 'inconsequential' do nothing; -- fails insert into insertconflicttest values (23, 'Blackberry') on conflict (key) do update set fruit = excluded.fruit; insert into insertconflicttest values (23, 'Blackberry') on conflict (key) where fruit like '%berry' or fruit = 'consequential' do nothing; insert into insertconflicttest values (23, 'Blackberry') on conflict (fruit) where fruit like '%berry' do update set fruit = excluded.fruit; drop index partial_key_index; -- -- Test that wholerow references to ON CONFLICT's EXCLUDED work -- create unique index plain on insertconflicttest(key); -- Succeeds, updates existing row: insert into insertconflicttest as i values (23, 'Jackfruit') on conflict (key) do update set fruit = excluded.fruit where i.* != excluded.* returning *; -- No update this time, though: insert into insertconflicttest as i values (23, 'Jackfruit') on conflict (key) do update set fruit = excluded.fruit where i.* != excluded.* returning *; -- Predicate changed to require match rather than non-match, so updates once more: insert into insertconflicttest as i values (23, 'Jackfruit') on conflict (key) do update set fruit = excluded.fruit where i.* = excluded.* returning *; -- Assign: insert into insertconflicttest as i values (23, 'Avocado') on conflict (key) do update set fruit = excluded.*::text returning *; -- deparse whole row var in WHERE and SET clauses: explain (costs off) insert into insertconflicttest as i values (23, 'Avocado') on conflict (key) do update set fruit = excluded.fruit where excluded.* is null; explain (costs off) insert into insertconflicttest as i values (23, 'Avocado') on conflict (key) do update set fruit = excluded.*::text; drop index plain; -- Cleanup drop table insertconflicttest; -- -- Verify that EXCLUDED does not allow system column references. These -- do not make sense because EXCLUDED isn't an already stored tuple -- (and thus doesn't have a ctid etc). -- create table syscolconflicttest(key int4, data text); insert into syscolconflicttest values (1); insert into syscolconflicttest values (1) on conflict (key) do update set data = excluded.ctid::text; drop table syscolconflicttest; -- -- Previous tests all managed to not test any expressions requiring -- planner preprocessing ... -- create table insertconflict (a bigint, b bigint); create unique index insertconflicti1 on insertconflict(coalesce(a, 0)); create unique index insertconflicti2 on insertconflict(b) where coalesce(a, 1) > 0; insert into insertconflict values (1, 2) on conflict (coalesce(a, 0)) do nothing; insert into insertconflict values (1, 2) on conflict (b) where coalesce(a, 1) > 0 do nothing; insert into insertconflict values (1, 2) on conflict (b) where coalesce(a, 1) > 1 do nothing; drop table insertconflict; -- -- test insertion through view -- create table insertconflict (f1 int primary key, f2 text); create view insertconflictv as select * from insertconflict with cascaded check option; insert into insertconflictv values (1,'foo') on conflict (f1) do update set f2 = excluded.f2; select * from insertconflict; insert into insertconflictv values (1,'bar') on conflict (f1) do update set f2 = excluded.f2; select * from insertconflict; drop view insertconflictv; drop table insertconflict; -- ****************************************************************** -- * * -- * Test inheritance (example taken from tutorial) * -- * * -- ****************************************************************** create table cities ( name text, population float8, altitude int -- (in ft) ); create table capitals ( state char(2) ) inherits (cities); -- Create unique indexes. Due to a general limitation of inheritance, -- uniqueness is only enforced per-relation. Unique index inference -- specification will do the right thing, though. create unique index cities_names_unique on cities (name); create unique index capitals_names_unique on capitals (name); -- prepopulate the tables. insert into cities values ('San Francisco', 7.24E+5, 63); insert into cities values ('Las Vegas', 2.583E+5, 2174); insert into cities values ('Mariposa', 1200, 1953); insert into capitals values ('Sacramento', 3.694E+5, 30, 'CA'); insert into capitals values ('Madison', 1.913E+5, 845, 'WI'); -- Tests proper for inheritance: select * from capitals; -- Succeeds: insert into cities values ('Las Vegas', 2.583E+5, 2174) on conflict do nothing; insert into capitals values ('Sacramento', 4664.E+5, 30, 'CA') on conflict (name) do update set population = excluded.population; -- Wrong "Sacramento", so do nothing: insert into capitals values ('Sacramento', 50, 2267, 'NE') on conflict (name) do nothing; select * from capitals; insert into cities values ('Las Vegas', 5.83E+5, 2001) on conflict (name) do update set population = excluded.population, altitude = excluded.altitude; select tableoid::regclass, * from cities; insert into capitals values ('Las Vegas', 5.83E+5, 2222, 'NV') on conflict (name) do update set population = excluded.population; -- Capitals will contain new capital, Las Vegas: select * from capitals; -- Cities contains two instances of "Las Vegas", since unique constraints don't -- work across inheritance: select tableoid::regclass, * from cities; -- This only affects "cities" version of "Las Vegas": insert into cities values ('Las Vegas', 5.86E+5, 2223) on conflict (name) do update set population = excluded.population, altitude = excluded.altitude; select tableoid::regclass, * from cities; -- clean up drop table capitals; drop table cities; -- Make sure a table named excluded is handled properly create table excluded(key int primary key, data text); insert into excluded values(1, '1'); -- error, ambiguous insert into excluded values(1, '2') on conflict (key) do update set data = excluded.data RETURNING *; -- ok, aliased insert into excluded AS target values(1, '2') on conflict (key) do update set data = excluded.data RETURNING *; -- ok, aliased insert into excluded AS target values(1, '2') on conflict (key) do update set data = target.data RETURNING *; -- make sure excluded isn't a problem in returning clause insert into excluded values(1, '2') on conflict (key) do update set data = 3 RETURNING excluded.*; -- clean up drop table excluded; -- check that references to columns after dropped columns are handled correctly create table dropcol(key int primary key, drop1 int, keep1 text, drop2 numeric, keep2 float); insert into dropcol(key, drop1, keep1, drop2, keep2) values(1, 1, '1', '1', 1); -- set using excluded insert into dropcol(key, drop1, keep1, drop2, keep2) values(1, 2, '2', '2', 2) on conflict(key) do update set drop1 = excluded.drop1, keep1 = excluded.keep1, drop2 = excluded.drop2, keep2 = excluded.keep2 where excluded.drop1 is not null and excluded.keep1 is not null and excluded.drop2 is not null and excluded.keep2 is not null and dropcol.drop1 is not null and dropcol.keep1 is not null and dropcol.drop2 is not null and dropcol.keep2 is not null returning *; ; -- set using existing table insert into dropcol(key, drop1, keep1, drop2, keep2) values(1, 3, '3', '3', 3) on conflict(key) do update set drop1 = dropcol.drop1, keep1 = dropcol.keep1, drop2 = dropcol.drop2, keep2 = dropcol.keep2 returning *; ; alter table dropcol drop column drop1, drop column drop2; -- set using excluded insert into dropcol(key, keep1, keep2) values(1, '4', 4) on conflict(key) do update set keep1 = excluded.keep1, keep2 = excluded.keep2 where excluded.keep1 is not null and excluded.keep2 is not null and dropcol.keep1 is not null and dropcol.keep2 is not null returning *; ; -- set using existing table insert into dropcol(key, keep1, keep2) values(1, '5', 5) on conflict(key) do update set keep1 = dropcol.keep1, keep2 = dropcol.keep2 returning *; ; DROP TABLE dropcol; -- check handling of regular btree constraint along with gist constraint create table twoconstraints (f1 int unique, f2 box, exclude using gist(f2 with &&)); insert into twoconstraints values(1, '((0,0),(1,1))'); insert into twoconstraints values(1, '((2,2),(3,3))'); -- fail on f1 insert into twoconstraints values(2, '((0,0),(1,2))'); -- fail on f2 insert into twoconstraints values(2, '((0,0),(1,2))') on conflict on constraint twoconstraints_f1_key do nothing; -- fail on f2 insert into twoconstraints values(2, '((0,0),(1,2))') on conflict on constraint twoconstraints_f2_excl do nothing; -- do nothing select * from twoconstraints; drop table twoconstraints; -- check handling of self-conflicts at various isolation levels create table selfconflict (f1 int primary key, f2 int); begin transaction isolation level read committed; insert into selfconflict values (1,1), (1,2) on conflict do nothing; commit; begin transaction isolation level repeatable read; insert into selfconflict values (2,1), (2,2) on conflict do nothing; commit; begin transaction isolation level serializable; insert into selfconflict values (3,1), (3,2) on conflict do nothing; commit; begin transaction isolation level read committed; insert into selfconflict values (4,1), (4,2) on conflict(f1) do update set f2 = 0; commit; begin transaction isolation level repeatable read; insert into selfconflict values (5,1), (5,2) on conflict(f1) do update set f2 = 0; commit; begin transaction isolation level serializable; insert into selfconflict values (6,1), (6,2) on conflict(f1) do update set f2 = 0; commit; select * from selfconflict; drop table selfconflict; -- check ON CONFLICT handling with partitioned tables create table parted_conflict_test (a int unique, b char) partition by list (a); create table parted_conflict_test_1 partition of parted_conflict_test (b unique) for values in (1, 2); -- no indexes required here insert into parted_conflict_test values (1, 'a') on conflict do nothing; -- index on a required, which does exist in parent insert into parted_conflict_test values (1, 'a') on conflict (a) do nothing; insert into parted_conflict_test values (1, 'a') on conflict (a) do update set b = excluded.b; -- targeting partition directly will work insert into parted_conflict_test_1 values (1, 'a') on conflict (a) do nothing; insert into parted_conflict_test_1 values (1, 'b') on conflict (a) do update set b = excluded.b; -- index on b required, which doesn't exist in parent insert into parted_conflict_test values (2, 'b') on conflict (b) do update set a = excluded.a; -- targeting partition directly will work insert into parted_conflict_test_1 values (2, 'b') on conflict (b) do update set a = excluded.a; -- should see (2, 'b') select * from parted_conflict_test order by a; -- now check that DO UPDATE works correctly for target partition with -- different attribute numbers create table parted_conflict_test_2 (b char, a int unique); alter table parted_conflict_test attach partition parted_conflict_test_2 for values in (3); truncate parted_conflict_test; insert into parted_conflict_test values (3, 'a') on conflict (a) do update set b = excluded.b; insert into parted_conflict_test values (3, 'b') on conflict (a) do update set b = excluded.b; -- should see (3, 'b') select * from parted_conflict_test order by a; -- case where parent will have a dropped column, but the partition won't alter table parted_conflict_test drop b, add b char; create table parted_conflict_test_3 partition of parted_conflict_test for values in (4); truncate parted_conflict_test; insert into parted_conflict_test (a, b) values (4, 'a') on conflict (a) do update set b = excluded.b; insert into parted_conflict_test (a, b) values (4, 'b') on conflict (a) do update set b = excluded.b where parted_conflict_test.b = 'a'; -- should see (4, 'b') select * from parted_conflict_test order by a; -- case with multi-level partitioning create table parted_conflict_test_4 partition of parted_conflict_test for values in (5) partition by list (a); create table parted_conflict_test_4_1 partition of parted_conflict_test_4 for values in (5); truncate parted_conflict_test; insert into parted_conflict_test (a, b) values (5, 'a') on conflict (a) do update set b = excluded.b; insert into parted_conflict_test (a, b) values (5, 'b') on conflict (a) do update set b = excluded.b where parted_conflict_test.b = 'a'; -- should see (5, 'b') select * from parted_conflict_test order by a; -- test with multiple rows truncate parted_conflict_test; insert into parted_conflict_test (a, b) values (1, 'a'), (2, 'a'), (4, 'a') on conflict (a) do update set b = excluded.b where excluded.b = 'b'; insert into parted_conflict_test (a, b) values (1, 'b'), (2, 'c'), (4, 'b') on conflict (a) do update set b = excluded.b where excluded.b = 'b'; -- should see (1, 'b'), (2, 'a'), (4, 'b') select * from parted_conflict_test order by a; drop table parted_conflict_test; -- test behavior of inserting a conflicting tuple into an intermediate -- partitioning level create table parted_conflict (a int primary key, b text) partition by range (a); create table parted_conflict_1 partition of parted_conflict for values from (0) to (1000) partition by range (a); create table parted_conflict_1_1 partition of parted_conflict_1 for values from (0) to (500); insert into parted_conflict values (40, 'forty'); insert into parted_conflict_1 values (40, 'cuarenta') on conflict (a) do update set b = excluded.b; drop table parted_conflict; -- same thing, but this time try to use an index that's created not in the -- partition create table parted_conflict (a int, b text) partition by range (a); create table parted_conflict_1 partition of parted_conflict for values from (0) to (1000) partition by range (a); create table parted_conflict_1_1 partition of parted_conflict_1 for values from (0) to (500); create unique index on only parted_conflict_1 (a); create unique index on only parted_conflict (a); alter index parted_conflict_a_idx attach partition parted_conflict_1_a_idx; insert into parted_conflict values (40, 'forty'); insert into parted_conflict_1 values (40, 'cuarenta') on conflict (a) do update set b = excluded.b; drop table parted_conflict; -- test whole-row Vars in ON CONFLICT expressions create table parted_conflict (a int, b text, c int) partition by range (a); create table parted_conflict_1 (drp text, c int, a int, b text); alter table parted_conflict_1 drop column drp; create unique index on parted_conflict (a, b); alter table parted_conflict attach partition parted_conflict_1 for values from (0) to (1000); truncate parted_conflict; insert into parted_conflict values (50, 'cincuenta', 1); insert into parted_conflict values (50, 'cincuenta', 2) on conflict (a, b) do update set (a, b, c) = row(excluded.*) where parted_conflict = (50, text 'cincuenta', 1) and excluded = (50, text 'cincuenta', 2); -- should see (50, 'cincuenta', 2) select * from parted_conflict order by a; -- test with statement level triggers create or replace function parted_conflict_update_func() returns trigger as $$ declare r record; begin for r in select * from inserted loop raise notice 'a = %, b = %, c = %', r.a, r.b, r.c; end loop; return new; end; $$ language plpgsql; create trigger parted_conflict_update after update on parted_conflict referencing new table as inserted for each statement execute procedure parted_conflict_update_func(); truncate parted_conflict; insert into parted_conflict values (0, 'cero', 1); insert into parted_conflict values(0, 'cero', 1) on conflict (a,b) do update set c = parted_conflict.c + 1; drop table parted_conflict; drop function parted_conflict_update_func(); libpg_query-13-2.1.0/test/sql/postgres_regress/int2.sql000066400000000000000000000062521413137616400230430ustar00rootroot00000000000000-- -- INT2 -- CREATE TABLE INT2_TBL(f1 int2); INSERT INTO INT2_TBL(f1) VALUES ('0 '); INSERT INTO INT2_TBL(f1) VALUES (' 1234 '); INSERT INTO INT2_TBL(f1) VALUES (' -1234'); INSERT INTO INT2_TBL(f1) VALUES ('34.5'); -- largest and smallest values INSERT INTO INT2_TBL(f1) VALUES ('32767'); INSERT INTO INT2_TBL(f1) VALUES ('-32767'); -- bad input values -- should give errors INSERT INTO INT2_TBL(f1) VALUES ('100000'); INSERT INTO INT2_TBL(f1) VALUES ('asdf'); INSERT INTO INT2_TBL(f1) VALUES (' '); INSERT INTO INT2_TBL(f1) VALUES ('- 1234'); INSERT INTO INT2_TBL(f1) VALUES ('4 444'); INSERT INTO INT2_TBL(f1) VALUES ('123 dt'); INSERT INTO INT2_TBL(f1) VALUES (''); SELECT '' AS five, * FROM INT2_TBL; SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> int2 '0'; SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> int4 '0'; SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = int2 '0'; SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = int4 '0'; SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < int2 '0'; SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < int4 '0'; SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= int2 '0'; SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= int4 '0'; SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > int2 '0'; SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > int4 '0'; SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= int2 '0'; SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= int4 '0'; -- positive odds SELECT '' AS one, i.* FROM INT2_TBL i WHERE (i.f1 % int2 '2') = int2 '1'; -- any evens SELECT '' AS three, i.* FROM INT2_TBL i WHERE (i.f1 % int4 '2') = int2 '0'; SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i; SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT2_TBL i WHERE abs(f1) < 16384; SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT2_TBL i; SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i; SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT2_TBL i WHERE f1 < 32766; SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT2_TBL i; SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i; SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT2_TBL i WHERE f1 > -32767; SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT2_TBL i; SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT2_TBL i; SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT2_TBL i; -- corner cases SELECT (-1::int2<<15)::text; SELECT ((-1::int2<<15)+1::int2)::text; -- check sane handling of INT16_MIN overflow cases SELECT (-32768)::int2 * (-1)::int2; SELECT (-32768)::int2 / (-1)::int2; SELECT (-32768)::int2 % (-1)::int2; -- check rounding when casting from float SELECT x, x::int2 AS int2_value FROM (VALUES (-2.5::float8), (-1.5::float8), (-0.5::float8), (0.0::float8), (0.5::float8), (1.5::float8), (2.5::float8)) t(x); -- check rounding when casting from numeric SELECT x, x::int2 AS int2_value FROM (VALUES (-2.5::numeric), (-1.5::numeric), (-0.5::numeric), (0.0::numeric), (0.5::numeric), (1.5::numeric), (2.5::numeric)) t(x); libpg_query-13-2.1.0/test/sql/postgres_regress/int4.sql000066400000000000000000000120651413137616400230440ustar00rootroot00000000000000-- -- INT4 -- CREATE TABLE INT4_TBL(f1 int4); INSERT INTO INT4_TBL(f1) VALUES (' 0 '); INSERT INTO INT4_TBL(f1) VALUES ('123456 '); INSERT INTO INT4_TBL(f1) VALUES (' -123456'); INSERT INTO INT4_TBL(f1) VALUES ('34.5'); -- largest and smallest values INSERT INTO INT4_TBL(f1) VALUES ('2147483647'); INSERT INTO INT4_TBL(f1) VALUES ('-2147483647'); -- bad input values -- should give errors INSERT INTO INT4_TBL(f1) VALUES ('1000000000000'); INSERT INTO INT4_TBL(f1) VALUES ('asdf'); INSERT INTO INT4_TBL(f1) VALUES (' '); INSERT INTO INT4_TBL(f1) VALUES (' asdf '); INSERT INTO INT4_TBL(f1) VALUES ('- 1234'); INSERT INTO INT4_TBL(f1) VALUES ('123 5'); INSERT INTO INT4_TBL(f1) VALUES (''); SELECT '' AS five, * FROM INT4_TBL; SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0'; SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0'; SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int2 '0'; SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int4 '0'; SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int2 '0'; SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int4 '0'; SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0'; SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0'; SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int2 '0'; SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int4 '0'; SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0'; SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0'; -- positive odds SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1'; -- any evens SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0'; SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i; SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i WHERE abs(f1) < 1073741824; SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i; SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i WHERE abs(f1) < 1073741824; SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i; SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i WHERE f1 < 2147483646; SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i; SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i WHERE f1 < 2147483646; SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i; SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i WHERE f1 > -2147483647; SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i; SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i WHERE f1 > -2147483647; SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i; SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i; -- -- more complex expressions -- -- variations on unary minus parsing SELECT -2+3 AS one; SELECT 4-2 AS two; SELECT 2- -1 AS three; SELECT 2 - -2 AS four; SELECT int2 '2' * int2 '2' = int2 '16' / int2 '4' AS true; SELECT int4 '2' * int2 '2' = int2 '16' / int4 '4' AS true; SELECT int2 '2' * int4 '2' = int4 '16' / int2 '4' AS true; SELECT int4 '1000' < int4 '999' AS false; SELECT 4! AS twenty_four; SELECT !!3 AS six; SELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS ten; SELECT 2 + 2 / 2 AS three; SELECT (2 + 2) / 2 AS two; -- corner case SELECT (-1::int4<<31)::text; SELECT ((-1::int4<<31)+1)::text; -- check sane handling of INT_MIN overflow cases SELECT (-2147483648)::int4 * (-1)::int4; SELECT (-2147483648)::int4 / (-1)::int4; SELECT (-2147483648)::int4 % (-1)::int4; SELECT (-2147483648)::int4 * (-1)::int2; SELECT (-2147483648)::int4 / (-1)::int2; SELECT (-2147483648)::int4 % (-1)::int2; -- check rounding when casting from float SELECT x, x::int4 AS int4_value FROM (VALUES (-2.5::float8), (-1.5::float8), (-0.5::float8), (0.0::float8), (0.5::float8), (1.5::float8), (2.5::float8)) t(x); -- check rounding when casting from numeric SELECT x, x::int4 AS int4_value FROM (VALUES (-2.5::numeric), (-1.5::numeric), (-0.5::numeric), (0.0::numeric), (0.5::numeric), (1.5::numeric), (2.5::numeric)) t(x); -- test gcd() SELECT a, b, gcd(a, b), gcd(a, -b), gcd(b, a), gcd(-b, a) FROM (VALUES (0::int4, 0::int4), (0::int4, 6410818::int4), (61866666::int4, 6410818::int4), (-61866666::int4, 6410818::int4), ((-2147483648)::int4, 1::int4), ((-2147483648)::int4, 2147483647::int4), ((-2147483648)::int4, 1073741824::int4)) AS v(a, b); SELECT gcd((-2147483648)::int4, 0::int4); -- overflow SELECT gcd((-2147483648)::int4, (-2147483648)::int4); -- overflow -- test lcm() SELECT a, b, lcm(a, b), lcm(a, -b), lcm(b, a), lcm(-b, a) FROM (VALUES (0::int4, 0::int4), (0::int4, 42::int4), (42::int4, 42::int4), (330::int4, 462::int4), (-330::int4, 462::int4), ((-2147483648)::int4, 0::int4)) AS v(a, b); SELECT lcm((-2147483648)::int4, 1::int4); -- overflow SELECT lcm(2147483647::int4, 2147483646::int4); -- overflow libpg_query-13-2.1.0/test/sql/postgres_regress/int8.sql000066400000000000000000000233711413137616400230520ustar00rootroot00000000000000-- -- INT8 -- Test int8 64-bit integers. -- CREATE TABLE INT8_TBL(q1 int8, q2 int8); INSERT INTO INT8_TBL VALUES(' 123 ',' 456'); INSERT INTO INT8_TBL VALUES('123 ','4567890123456789'); INSERT INTO INT8_TBL VALUES('4567890123456789','123'); INSERT INTO INT8_TBL VALUES(+4567890123456789,'4567890123456789'); INSERT INTO INT8_TBL VALUES('+4567890123456789','-4567890123456789'); -- bad inputs INSERT INTO INT8_TBL(q1) VALUES (' '); INSERT INTO INT8_TBL(q1) VALUES ('xxx'); INSERT INTO INT8_TBL(q1) VALUES ('3908203590239580293850293850329485'); INSERT INTO INT8_TBL(q1) VALUES ('-1204982019841029840928340329840934'); INSERT INTO INT8_TBL(q1) VALUES ('- 123'); INSERT INTO INT8_TBL(q1) VALUES (' 345 5'); INSERT INTO INT8_TBL(q1) VALUES (''); SELECT * FROM INT8_TBL; -- int8/int8 cmp SELECT * FROM INT8_TBL WHERE q2 = 4567890123456789; SELECT * FROM INT8_TBL WHERE q2 <> 4567890123456789; SELECT * FROM INT8_TBL WHERE q2 < 4567890123456789; SELECT * FROM INT8_TBL WHERE q2 > 4567890123456789; SELECT * FROM INT8_TBL WHERE q2 <= 4567890123456789; SELECT * FROM INT8_TBL WHERE q2 >= 4567890123456789; -- int8/int4 cmp SELECT * FROM INT8_TBL WHERE q2 = 456; SELECT * FROM INT8_TBL WHERE q2 <> 456; SELECT * FROM INT8_TBL WHERE q2 < 456; SELECT * FROM INT8_TBL WHERE q2 > 456; SELECT * FROM INT8_TBL WHERE q2 <= 456; SELECT * FROM INT8_TBL WHERE q2 >= 456; -- int4/int8 cmp SELECT * FROM INT8_TBL WHERE 123 = q1; SELECT * FROM INT8_TBL WHERE 123 <> q1; SELECT * FROM INT8_TBL WHERE 123 < q1; SELECT * FROM INT8_TBL WHERE 123 > q1; SELECT * FROM INT8_TBL WHERE 123 <= q1; SELECT * FROM INT8_TBL WHERE 123 >= q1; -- int8/int2 cmp SELECT * FROM INT8_TBL WHERE q2 = '456'::int2; SELECT * FROM INT8_TBL WHERE q2 <> '456'::int2; SELECT * FROM INT8_TBL WHERE q2 < '456'::int2; SELECT * FROM INT8_TBL WHERE q2 > '456'::int2; SELECT * FROM INT8_TBL WHERE q2 <= '456'::int2; SELECT * FROM INT8_TBL WHERE q2 >= '456'::int2; -- int2/int8 cmp SELECT * FROM INT8_TBL WHERE '123'::int2 = q1; SELECT * FROM INT8_TBL WHERE '123'::int2 <> q1; SELECT * FROM INT8_TBL WHERE '123'::int2 < q1; SELECT * FROM INT8_TBL WHERE '123'::int2 > q1; SELECT * FROM INT8_TBL WHERE '123'::int2 <= q1; SELECT * FROM INT8_TBL WHERE '123'::int2 >= q1; SELECT '' AS five, q1 AS plus, -q1 AS minus FROM INT8_TBL; SELECT '' AS five, q1, q2, q1 + q2 AS plus FROM INT8_TBL; SELECT '' AS five, q1, q2, q1 - q2 AS minus FROM INT8_TBL; SELECT '' AS three, q1, q2, q1 * q2 AS multiply FROM INT8_TBL; SELECT '' AS three, q1, q2, q1 * q2 AS multiply FROM INT8_TBL WHERE q1 < 1000 or (q2 > 0 and q2 < 1000); SELECT '' AS five, q1, q2, q1 / q2 AS divide, q1 % q2 AS mod FROM INT8_TBL; SELECT '' AS five, q1, float8(q1) FROM INT8_TBL; SELECT '' AS five, q2, float8(q2) FROM INT8_TBL; SELECT 37 + q1 AS plus4 FROM INT8_TBL; SELECT 37 - q1 AS minus4 FROM INT8_TBL; SELECT '' AS five, 2 * q1 AS "twice int4" FROM INT8_TBL; SELECT '' AS five, q1 * 2 AS "twice int4" FROM INT8_TBL; -- int8 op int4 SELECT q1 + 42::int4 AS "8plus4", q1 - 42::int4 AS "8minus4", q1 * 42::int4 AS "8mul4", q1 / 42::int4 AS "8div4" FROM INT8_TBL; -- int4 op int8 SELECT 246::int4 + q1 AS "4plus8", 246::int4 - q1 AS "4minus8", 246::int4 * q1 AS "4mul8", 246::int4 / q1 AS "4div8" FROM INT8_TBL; -- int8 op int2 SELECT q1 + 42::int2 AS "8plus2", q1 - 42::int2 AS "8minus2", q1 * 42::int2 AS "8mul2", q1 / 42::int2 AS "8div2" FROM INT8_TBL; -- int2 op int8 SELECT 246::int2 + q1 AS "2plus8", 246::int2 - q1 AS "2minus8", 246::int2 * q1 AS "2mul8", 246::int2 / q1 AS "2div8" FROM INT8_TBL; SELECT q2, abs(q2) FROM INT8_TBL; SELECT min(q1), min(q2) FROM INT8_TBL; SELECT max(q1), max(q2) FROM INT8_TBL; -- TO_CHAR() -- SELECT '' AS to_char_1, to_char(q1, '9G999G999G999G999G999'), to_char(q2, '9,999,999,999,999,999') FROM INT8_TBL; SELECT '' AS to_char_2, to_char(q1, '9G999G999G999G999G999D999G999'), to_char(q2, '9,999,999,999,999,999.999,999') FROM INT8_TBL; SELECT '' AS to_char_3, to_char( (q1 * -1), '9999999999999999PR'), to_char( (q2 * -1), '9999999999999999.999PR') FROM INT8_TBL; SELECT '' AS to_char_4, to_char( (q1 * -1), '9999999999999999S'), to_char( (q2 * -1), 'S9999999999999999') FROM INT8_TBL; SELECT '' AS to_char_5, to_char(q2, 'MI9999999999999999') FROM INT8_TBL; SELECT '' AS to_char_6, to_char(q2, 'FMS9999999999999999') FROM INT8_TBL; SELECT '' AS to_char_7, to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL; SELECT '' AS to_char_8, to_char(q2, 'SG9999999999999999th') FROM INT8_TBL; SELECT '' AS to_char_9, to_char(q2, '0999999999999999') FROM INT8_TBL; SELECT '' AS to_char_10, to_char(q2, 'S0999999999999999') FROM INT8_TBL; SELECT '' AS to_char_11, to_char(q2, 'FM0999999999999999') FROM INT8_TBL; SELECT '' AS to_char_12, to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL; SELECT '' AS to_char_13, to_char(q2, 'L9999999999999999.000') FROM INT8_TBL; SELECT '' AS to_char_14, to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL; SELECT '' AS to_char_15, to_char(q2, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9') FROM INT8_TBL; SELECT '' AS to_char_16, to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL; SELECT '' AS to_char_17, to_char(q2, '999999SG9999999999') FROM INT8_TBL; -- check min/max values and overflow behavior select '-9223372036854775808'::int8; select '-9223372036854775809'::int8; select '9223372036854775807'::int8; select '9223372036854775808'::int8; select -('-9223372036854775807'::int8); select -('-9223372036854775808'::int8); select '9223372036854775800'::int8 + '9223372036854775800'::int8; select '-9223372036854775800'::int8 + '-9223372036854775800'::int8; select '9223372036854775800'::int8 - '-9223372036854775800'::int8; select '-9223372036854775800'::int8 - '9223372036854775800'::int8; select '9223372036854775800'::int8 * '9223372036854775800'::int8; select '9223372036854775800'::int8 / '0'::int8; select '9223372036854775800'::int8 % '0'::int8; select abs('-9223372036854775808'::int8); select '9223372036854775800'::int8 + '100'::int4; select '-9223372036854775800'::int8 - '100'::int4; select '9223372036854775800'::int8 * '100'::int4; select '100'::int4 + '9223372036854775800'::int8; select '-100'::int4 - '9223372036854775800'::int8; select '100'::int4 * '9223372036854775800'::int8; select '9223372036854775800'::int8 + '100'::int2; select '-9223372036854775800'::int8 - '100'::int2; select '9223372036854775800'::int8 * '100'::int2; select '-9223372036854775808'::int8 / '0'::int2; select '100'::int2 + '9223372036854775800'::int8; select '-100'::int2 - '9223372036854775800'::int8; select '100'::int2 * '9223372036854775800'::int8; select '100'::int2 / '0'::int8; SELECT CAST(q1 AS int4) FROM int8_tbl WHERE q2 = 456; SELECT CAST(q1 AS int4) FROM int8_tbl WHERE q2 <> 456; SELECT CAST(q1 AS int2) FROM int8_tbl WHERE q2 = 456; SELECT CAST(q1 AS int2) FROM int8_tbl WHERE q2 <> 456; SELECT CAST('42'::int2 AS int8), CAST('-37'::int2 AS int8); SELECT CAST(q1 AS float4), CAST(q2 AS float8) FROM INT8_TBL; SELECT CAST('36854775807.0'::float4 AS int8); SELECT CAST('922337203685477580700.0'::float8 AS int8); SELECT CAST(q1 AS oid) FROM INT8_TBL; SELECT oid::int8 FROM pg_class WHERE relname = 'pg_class'; -- bit operations SELECT q1, q2, q1 & q2 AS "and", q1 | q2 AS "or", q1 # q2 AS "xor", ~q1 AS "not" FROM INT8_TBL; SELECT q1, q1 << 2 AS "shl", q1 >> 3 AS "shr" FROM INT8_TBL; -- generate_series SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8); SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8, 0); SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8, 2); -- corner case SELECT (-1::int8<<63)::text; SELECT ((-1::int8<<63)+1)::text; -- check sane handling of INT64_MIN overflow cases SELECT (-9223372036854775808)::int8 * (-1)::int8; SELECT (-9223372036854775808)::int8 / (-1)::int8; SELECT (-9223372036854775808)::int8 % (-1)::int8; SELECT (-9223372036854775808)::int8 * (-1)::int4; SELECT (-9223372036854775808)::int8 / (-1)::int4; SELECT (-9223372036854775808)::int8 % (-1)::int4; SELECT (-9223372036854775808)::int8 * (-1)::int2; SELECT (-9223372036854775808)::int8 / (-1)::int2; SELECT (-9223372036854775808)::int8 % (-1)::int2; -- check rounding when casting from float SELECT x, x::int8 AS int8_value FROM (VALUES (-2.5::float8), (-1.5::float8), (-0.5::float8), (0.0::float8), (0.5::float8), (1.5::float8), (2.5::float8)) t(x); -- check rounding when casting from numeric SELECT x, x::int8 AS int8_value FROM (VALUES (-2.5::numeric), (-1.5::numeric), (-0.5::numeric), (0.0::numeric), (0.5::numeric), (1.5::numeric), (2.5::numeric)) t(x); -- test gcd() SELECT a, b, gcd(a, b), gcd(a, -b), gcd(b, a), gcd(-b, a) FROM (VALUES (0::int8, 0::int8), (0::int8, 29893644334::int8), (288484263558::int8, 29893644334::int8), (-288484263558::int8, 29893644334::int8), ((-9223372036854775808)::int8, 1::int8), ((-9223372036854775808)::int8, 9223372036854775807::int8), ((-9223372036854775808)::int8, 4611686018427387904::int8)) AS v(a, b); SELECT gcd((-9223372036854775808)::int8, 0::int8); -- overflow SELECT gcd((-9223372036854775808)::int8, (-9223372036854775808)::int8); -- overflow -- test lcm() SELECT a, b, lcm(a, b), lcm(a, -b), lcm(b, a), lcm(-b, a) FROM (VALUES (0::int8, 0::int8), (0::int8, 29893644334::int8), (29893644334::int8, 29893644334::int8), (288484263558::int8, 29893644334::int8), (-288484263558::int8, 29893644334::int8), ((-9223372036854775808)::int8, 0::int8)) AS v(a, b); SELECT lcm((-9223372036854775808)::int8, 1::int8); -- overflow SELECT lcm(9223372036854775807::int8, 9223372036854775806::int8); -- overflow libpg_query-13-2.1.0/test/sql/postgres_regress/interval.sql000066400000000000000000000301011413137616400240010ustar00rootroot00000000000000-- -- INTERVAL -- SET DATESTYLE = 'ISO'; SET IntervalStyle to postgres; -- check acceptance of "time zone style" SELECT INTERVAL '01:00' AS "One hour"; SELECT INTERVAL '+02:00' AS "Two hours"; SELECT INTERVAL '-08:00' AS "Eight hours"; SELECT INTERVAL '-1 +02:03' AS "22 hours ago..."; SELECT INTERVAL '-1 days +02:03' AS "22 hours ago..."; SELECT INTERVAL '1.5 weeks' AS "Ten days twelve hours"; SELECT INTERVAL '1.5 months' AS "One month 15 days"; SELECT INTERVAL '10 years -11 month -12 days +13:14' AS "9 years..."; CREATE TABLE INTERVAL_TBL (f1 interval); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 1 minute'); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 5 hour'); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 10 day'); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 34 year'); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 3 months'); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 14 seconds ago'); INSERT INTO INTERVAL_TBL (f1) VALUES ('1 day 2 hours 3 minutes 4 seconds'); INSERT INTO INTERVAL_TBL (f1) VALUES ('6 years'); INSERT INTO INTERVAL_TBL (f1) VALUES ('5 months'); INSERT INTO INTERVAL_TBL (f1) VALUES ('5 months 12 hours'); -- badly formatted interval INSERT INTO INTERVAL_TBL (f1) VALUES ('badly formatted interval'); INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago'); -- test interval operators SELECT '' AS ten, * FROM INTERVAL_TBL; SELECT '' AS nine, * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 <> interval '@ 10 days'; SELECT '' AS three, * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours'; SELECT '' AS three, * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 < interval '@ 1 day'; SELECT '' AS one, * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 = interval '@ 34 years'; SELECT '' AS five, * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 >= interval '@ 1 month'; SELECT '' AS nine, * FROM INTERVAL_TBL WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago'; SELECT '' AS fortyfive, r1.*, r2.* FROM INTERVAL_TBL r1, INTERVAL_TBL r2 WHERE r1.f1 > r2.f1 ORDER BY r1.f1, r2.f1; -- Test intervals that are large enough to overflow 64 bits in comparisons CREATE TEMP TABLE INTERVAL_TBL_OF (f1 interval); INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('2147483647 days 2147483647 months'), ('2147483647 days -2147483648 months'), ('1 year'), ('-2147483648 days 2147483647 months'), ('-2147483648 days -2147483648 months'); -- these should fail as out-of-range INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('2147483648 days'); INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('-2147483649 days'); INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('2147483647 years'); INSERT INTO INTERVAL_TBL_OF (f1) VALUES ('-2147483648 years'); -- Test edge-case overflow detection in interval multiplication select extract(epoch from '256 microseconds'::interval * (2^55)::float8); SELECT r1.*, r2.* FROM INTERVAL_TBL_OF r1, INTERVAL_TBL_OF r2 WHERE r1.f1 > r2.f1 ORDER BY r1.f1, r2.f1; CREATE INDEX ON INTERVAL_TBL_OF USING btree (f1); SET enable_seqscan TO false; EXPLAIN (COSTS OFF) SELECT f1 FROM INTERVAL_TBL_OF r1 ORDER BY f1; SELECT f1 FROM INTERVAL_TBL_OF r1 ORDER BY f1; RESET enable_seqscan; DROP TABLE INTERVAL_TBL_OF; -- Test multiplication and division with intervals. -- Floating point arithmetic rounding errors can lead to unexpected results, -- though the code attempts to do the right thing and round up to days and -- minutes to avoid results such as '3 days 24:00 hours' or '14:20:60'. -- Note that it is expected for some day components to be greater than 29 and -- some time components be greater than 23:59:59 due to how intervals are -- stored internally. CREATE TABLE INTERVAL_MULDIV_TBL (span interval); COPY INTERVAL_MULDIV_TBL FROM STDIN; 41 mon 12 days 360:00 -41 mon -12 days +360:00 -12 days 9 mon -27 days 12:34:56 -3 years 482 days 76:54:32.189 4 mon 14 mon 999 mon 999 days \. SELECT span * 0.3 AS product FROM INTERVAL_MULDIV_TBL; SELECT span * 8.2 AS product FROM INTERVAL_MULDIV_TBL; SELECT span / 10 AS quotient FROM INTERVAL_MULDIV_TBL; SELECT span / 100 AS quotient FROM INTERVAL_MULDIV_TBL; DROP TABLE INTERVAL_MULDIV_TBL; SET DATESTYLE = 'postgres'; SET IntervalStyle to postgres_verbose; SELECT '' AS ten, * FROM INTERVAL_TBL; -- test avg(interval), which is somewhat fragile since people have been -- known to change the allowed input syntax for type interval without -- updating pg_aggregate.agginitval select avg(f1) from interval_tbl; -- test long interval input select '4 millenniums 5 centuries 4 decades 1 year 4 months 4 days 17 minutes 31 seconds'::interval; -- test long interval output -- Note: the actual maximum length of the interval output is longer, -- but we need the test to work for both integer and floating-point -- timestamps. select '100000000y 10mon -1000000000d -100000h -10min -10.000001s ago'::interval; -- test justify_hours() and justify_days() SELECT justify_hours(interval '6 months 3 days 52 hours 3 minutes 2 seconds') as "6 mons 5 days 4 hours 3 mins 2 seconds"; SELECT justify_days(interval '6 months 36 days 5 hours 4 minutes 3 seconds') as "7 mons 6 days 5 hours 4 mins 3 seconds"; -- test justify_interval() SELECT justify_interval(interval '1 month -1 hour') as "1 month -1 hour"; -- test fractional second input, and detection of duplicate units SET DATESTYLE = 'ISO'; SET IntervalStyle TO postgres; SELECT '1 millisecond'::interval, '1 microsecond'::interval, '500 seconds 99 milliseconds 51 microseconds'::interval; SELECT '3 days 5 milliseconds'::interval; SELECT '1 second 2 seconds'::interval; -- error SELECT '10 milliseconds 20 milliseconds'::interval; -- error SELECT '5.5 seconds 3 milliseconds'::interval; -- error SELECT '1:20:05 5 microseconds'::interval; -- error SELECT '1 day 1 day'::interval; -- error SELECT interval '1-2'; -- SQL year-month literal SELECT interval '999' second; -- oversize leading field is ok SELECT interval '999' minute; SELECT interval '999' hour; SELECT interval '999' day; SELECT interval '999' month; -- test SQL-spec syntaxes for restricted field sets SELECT interval '1' year; SELECT interval '2' month; SELECT interval '3' day; SELECT interval '4' hour; SELECT interval '5' minute; SELECT interval '6' second; SELECT interval '1' year to month; SELECT interval '1-2' year to month; SELECT interval '1 2' day to hour; SELECT interval '1 2:03' day to hour; SELECT interval '1 2:03:04' day to hour; SELECT interval '1 2' day to minute; SELECT interval '1 2:03' day to minute; SELECT interval '1 2:03:04' day to minute; SELECT interval '1 2' day to second; SELECT interval '1 2:03' day to second; SELECT interval '1 2:03:04' day to second; SELECT interval '1 2' hour to minute; SELECT interval '1 2:03' hour to minute; SELECT interval '1 2:03:04' hour to minute; SELECT interval '1 2' hour to second; SELECT interval '1 2:03' hour to second; SELECT interval '1 2:03:04' hour to second; SELECT interval '1 2' minute to second; SELECT interval '1 2:03' minute to second; SELECT interval '1 2:03:04' minute to second; SELECT interval '1 +2:03' minute to second; SELECT interval '1 +2:03:04' minute to second; SELECT interval '1 -2:03' minute to second; SELECT interval '1 -2:03:04' minute to second; SELECT interval '123 11' day to hour; -- ok SELECT interval '123 11' day; -- not ok SELECT interval '123 11'; -- not ok, too ambiguous SELECT interval '123 2:03 -2:04'; -- not ok, redundant hh:mm fields -- test syntaxes for restricted precision SELECT interval(0) '1 day 01:23:45.6789'; SELECT interval(2) '1 day 01:23:45.6789'; SELECT interval '12:34.5678' minute to second(2); -- per SQL spec SELECT interval '1.234' second; SELECT interval '1.234' second(2); SELECT interval '1 2.345' day to second(2); SELECT interval '1 2:03' day to second(2); SELECT interval '1 2:03.4567' day to second(2); SELECT interval '1 2:03:04.5678' day to second(2); SELECT interval '1 2.345' hour to second(2); SELECT interval '1 2:03.45678' hour to second(2); SELECT interval '1 2:03:04.5678' hour to second(2); SELECT interval '1 2.3456' minute to second(2); SELECT interval '1 2:03.5678' minute to second(2); SELECT interval '1 2:03:04.5678' minute to second(2); -- test casting to restricted precision (bug #14479) SELECT f1, f1::INTERVAL DAY TO MINUTE AS "minutes", (f1 + INTERVAL '1 month')::INTERVAL MONTH::INTERVAL YEAR AS "years" FROM interval_tbl; -- test inputting and outputting SQL standard interval literals SET IntervalStyle TO sql_standard; SELECT interval '0' AS "zero", interval '1-2' year to month AS "year-month", interval '1 2:03:04' day to second AS "day-time", - interval '1-2' AS "negative year-month", - interval '1 2:03:04' AS "negative day-time"; -- test input of some not-quite-standard interval values in the sql style SET IntervalStyle TO postgres; SELECT interval '+1 -1:00:00', interval '-1 +1:00:00', interval '+1-2 -3 +4:05:06.789', interval '-1-2 +3 -4:05:06.789'; -- test output of couple non-standard interval values in the sql style SET IntervalStyle TO sql_standard; SELECT interval '1 day -1 hours', interval '-1 days +1 hours', interval '1 years 2 months -3 days 4 hours 5 minutes 6.789 seconds', - interval '1 years 2 months -3 days 4 hours 5 minutes 6.789 seconds'; -- test outputting iso8601 intervals SET IntervalStyle to iso_8601; select interval '0' AS "zero", interval '1-2' AS "a year 2 months", interval '1 2:03:04' AS "a bit over a day", interval '2:03:04.45679' AS "a bit over 2 hours", (interval '1-2' + interval '3 4:05:06.7') AS "all fields", (interval '1-2' - interval '3 4:05:06.7') AS "mixed sign", (- interval '1-2' + interval '3 4:05:06.7') AS "negative"; -- test inputting ISO 8601 4.4.2.1 "Format With Time Unit Designators" SET IntervalStyle to sql_standard; select interval 'P0Y' AS "zero", interval 'P1Y2M' AS "a year 2 months", interval 'P1W' AS "a week", interval 'P1DT2H3M4S' AS "a bit over a day", interval 'P1Y2M3DT4H5M6.7S' AS "all fields", interval 'P-1Y-2M-3DT-4H-5M-6.7S' AS "negative", interval 'PT-0.1S' AS "fractional second"; -- test inputting ISO 8601 4.4.2.2 "Alternative Format" SET IntervalStyle to postgres; select interval 'P00021015T103020' AS "ISO8601 Basic Format", interval 'P0002-10-15T10:30:20' AS "ISO8601 Extended Format"; -- Make sure optional ISO8601 alternative format fields are optional. select interval 'P0002' AS "year only", interval 'P0002-10' AS "year month", interval 'P0002-10-15' AS "year month day", interval 'P0002T1S' AS "year only plus time", interval 'P0002-10T1S' AS "year month plus time", interval 'P0002-10-15T1S' AS "year month day plus time", interval 'PT10' AS "hour only", interval 'PT10:30' AS "hour minute"; -- test a couple rounding cases that changed since 8.3 w/ HAVE_INT64_TIMESTAMP. SET IntervalStyle to postgres_verbose; select interval '-10 mons -3 days +03:55:06.70'; select interval '1 year 2 mons 3 days 04:05:06.699999'; select interval '0:0:0.7', interval '@ 0.70 secs', interval '0.7 seconds'; -- check that '30 days' equals '1 month' according to the hash function select '30 days'::interval = '1 month'::interval as t; select interval_hash('30 days'::interval) = interval_hash('1 month'::interval) as t; -- numeric constructor select make_interval(years := 2); select make_interval(years := 1, months := 6); select make_interval(years := 1, months := -1, weeks := 5, days := -7, hours := 25, mins := -180); select make_interval() = make_interval(years := 0, months := 0, weeks := 0, days := 0, mins := 0, secs := 0.0); select make_interval(hours := -2, mins := -10, secs := -25.3); select make_interval(years := 'inf'::float::int); select make_interval(months := 'NaN'::float::int); select make_interval(secs := 'inf'); select make_interval(secs := 'NaN'); select make_interval(secs := 7e12); libpg_query-13-2.1.0/test/sql/postgres_regress/join.sql000066400000000000000000001776601413137616400231420ustar00rootroot00000000000000-- -- JOIN -- Test JOIN clauses -- CREATE TABLE J1_TBL ( i integer, j integer, t text ); CREATE TABLE J2_TBL ( i integer, k integer ); INSERT INTO J1_TBL VALUES (1, 4, 'one'); INSERT INTO J1_TBL VALUES (2, 3, 'two'); INSERT INTO J1_TBL VALUES (3, 2, 'three'); INSERT INTO J1_TBL VALUES (4, 1, 'four'); INSERT INTO J1_TBL VALUES (5, 0, 'five'); INSERT INTO J1_TBL VALUES (6, 6, 'six'); INSERT INTO J1_TBL VALUES (7, 7, 'seven'); INSERT INTO J1_TBL VALUES (8, 8, 'eight'); INSERT INTO J1_TBL VALUES (0, NULL, 'zero'); INSERT INTO J1_TBL VALUES (NULL, NULL, 'null'); INSERT INTO J1_TBL VALUES (NULL, 0, 'zero'); INSERT INTO J2_TBL VALUES (1, -1); INSERT INTO J2_TBL VALUES (2, 2); INSERT INTO J2_TBL VALUES (3, -3); INSERT INTO J2_TBL VALUES (2, 4); INSERT INTO J2_TBL VALUES (5, -5); INSERT INTO J2_TBL VALUES (5, -5); INSERT INTO J2_TBL VALUES (0, NULL); INSERT INTO J2_TBL VALUES (NULL, NULL); INSERT INTO J2_TBL VALUES (NULL, 0); -- useful in some tests below create temp table onerow(); insert into onerow default values; analyze onerow; -- -- CORRELATION NAMES -- Make sure that table/column aliases are supported -- before diving into more complex join syntax. -- SELECT '' AS "xxx", * FROM J1_TBL AS tx; SELECT '' AS "xxx", * FROM J1_TBL tx; SELECT '' AS "xxx", * FROM J1_TBL AS t1 (a, b, c); SELECT '' AS "xxx", * FROM J1_TBL t1 (a, b, c); SELECT '' AS "xxx", * FROM J1_TBL t1 (a, b, c), J2_TBL t2 (d, e); SELECT '' AS "xxx", t1.a, t2.e FROM J1_TBL t1 (a, b, c), J2_TBL t2 (d, e) WHERE t1.a = t2.d; -- -- CROSS JOIN -- Qualifications are not allowed on cross joins, -- which degenerate into a standard unqualified inner join. -- SELECT '' AS "xxx", * FROM J1_TBL CROSS JOIN J2_TBL; -- ambiguous column SELECT '' AS "xxx", i, k, t FROM J1_TBL CROSS JOIN J2_TBL; -- resolve previous ambiguity by specifying the table name SELECT '' AS "xxx", t1.i, k, t FROM J1_TBL t1 CROSS JOIN J2_TBL t2; SELECT '' AS "xxx", ii, tt, kk FROM (J1_TBL CROSS JOIN J2_TBL) AS tx (ii, jj, tt, ii2, kk); SELECT '' AS "xxx", tx.ii, tx.jj, tx.kk FROM (J1_TBL t1 (a, b, c) CROSS JOIN J2_TBL t2 (d, e)) AS tx (ii, jj, tt, ii2, kk); SELECT '' AS "xxx", * FROM J1_TBL CROSS JOIN J2_TBL a CROSS JOIN J2_TBL b; -- -- -- Inner joins (equi-joins) -- -- -- -- Inner joins (equi-joins) with USING clause -- The USING syntax changes the shape of the resulting table -- by including a column in the USING clause only once in the result. -- -- Inner equi-join on specified column SELECT '' AS "xxx", * FROM J1_TBL INNER JOIN J2_TBL USING (i); -- Same as above, slightly different syntax SELECT '' AS "xxx", * FROM J1_TBL JOIN J2_TBL USING (i); SELECT '' AS "xxx", * FROM J1_TBL t1 (a, b, c) JOIN J2_TBL t2 (a, d) USING (a) ORDER BY a, d; SELECT '' AS "xxx", * FROM J1_TBL t1 (a, b, c) JOIN J2_TBL t2 (a, b) USING (b) ORDER BY b, t1.a; -- -- NATURAL JOIN -- Inner equi-join on all columns with the same name -- SELECT '' AS "xxx", * FROM J1_TBL NATURAL JOIN J2_TBL; SELECT '' AS "xxx", * FROM J1_TBL t1 (a, b, c) NATURAL JOIN J2_TBL t2 (a, d); SELECT '' AS "xxx", * FROM J1_TBL t1 (a, b, c) NATURAL JOIN J2_TBL t2 (d, a); -- mismatch number of columns -- currently, Postgres will fill in with underlying names SELECT '' AS "xxx", * FROM J1_TBL t1 (a, b) NATURAL JOIN J2_TBL t2 (a); -- -- Inner joins (equi-joins) -- SELECT '' AS "xxx", * FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i = J2_TBL.i); SELECT '' AS "xxx", * FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i = J2_TBL.k); -- -- Non-equi-joins -- SELECT '' AS "xxx", * FROM J1_TBL JOIN J2_TBL ON (J1_TBL.i <= J2_TBL.k); -- -- Outer joins -- Note that OUTER is a noise word -- SELECT '' AS "xxx", * FROM J1_TBL LEFT OUTER JOIN J2_TBL USING (i) ORDER BY i, k, t; SELECT '' AS "xxx", * FROM J1_TBL LEFT JOIN J2_TBL USING (i) ORDER BY i, k, t; SELECT '' AS "xxx", * FROM J1_TBL RIGHT OUTER JOIN J2_TBL USING (i); SELECT '' AS "xxx", * FROM J1_TBL RIGHT JOIN J2_TBL USING (i); SELECT '' AS "xxx", * FROM J1_TBL FULL OUTER JOIN J2_TBL USING (i) ORDER BY i, k, t; SELECT '' AS "xxx", * FROM J1_TBL FULL JOIN J2_TBL USING (i) ORDER BY i, k, t; SELECT '' AS "xxx", * FROM J1_TBL LEFT JOIN J2_TBL USING (i) WHERE (k = 1); SELECT '' AS "xxx", * FROM J1_TBL LEFT JOIN J2_TBL USING (i) WHERE (i = 1); -- -- semijoin selectivity for <> -- explain (costs off) select * from int4_tbl i4, tenk1 a where exists(select * from tenk1 b where a.twothousand = b.twothousand and a.fivethous <> b.fivethous) and i4.f1 = a.tenthous; -- -- More complicated constructs -- -- -- Multiway full join -- CREATE TABLE t1 (name TEXT, n INTEGER); CREATE TABLE t2 (name TEXT, n INTEGER); CREATE TABLE t3 (name TEXT, n INTEGER); INSERT INTO t1 VALUES ( 'bb', 11 ); INSERT INTO t2 VALUES ( 'bb', 12 ); INSERT INTO t2 VALUES ( 'cc', 22 ); INSERT INTO t2 VALUES ( 'ee', 42 ); INSERT INTO t3 VALUES ( 'bb', 13 ); INSERT INTO t3 VALUES ( 'cc', 23 ); INSERT INTO t3 VALUES ( 'dd', 33 ); SELECT * FROM t1 FULL JOIN t2 USING (name) FULL JOIN t3 USING (name); -- -- Test interactions of join syntax and subqueries -- -- Basic cases (we expect planner to pull up the subquery here) SELECT * FROM (SELECT * FROM t2) as s2 INNER JOIN (SELECT * FROM t3) s3 USING (name); SELECT * FROM (SELECT * FROM t2) as s2 LEFT JOIN (SELECT * FROM t3) s3 USING (name); SELECT * FROM (SELECT * FROM t2) as s2 FULL JOIN (SELECT * FROM t3) s3 USING (name); -- Cases with non-nullable expressions in subquery results; -- make sure these go to null as expected SELECT * FROM (SELECT name, n as s2_n, 2 as s2_2 FROM t2) as s2 NATURAL INNER JOIN (SELECT name, n as s3_n, 3 as s3_2 FROM t3) s3; SELECT * FROM (SELECT name, n as s2_n, 2 as s2_2 FROM t2) as s2 NATURAL LEFT JOIN (SELECT name, n as s3_n, 3 as s3_2 FROM t3) s3; SELECT * FROM (SELECT name, n as s2_n, 2 as s2_2 FROM t2) as s2 NATURAL FULL JOIN (SELECT name, n as s3_n, 3 as s3_2 FROM t3) s3; SELECT * FROM (SELECT name, n as s1_n, 1 as s1_1 FROM t1) as s1 NATURAL INNER JOIN (SELECT name, n as s2_n, 2 as s2_2 FROM t2) as s2 NATURAL INNER JOIN (SELECT name, n as s3_n, 3 as s3_2 FROM t3) s3; SELECT * FROM (SELECT name, n as s1_n, 1 as s1_1 FROM t1) as s1 NATURAL FULL JOIN (SELECT name, n as s2_n, 2 as s2_2 FROM t2) as s2 NATURAL FULL JOIN (SELECT name, n as s3_n, 3 as s3_2 FROM t3) s3; SELECT * FROM (SELECT name, n as s1_n FROM t1) as s1 NATURAL FULL JOIN (SELECT * FROM (SELECT name, n as s2_n FROM t2) as s2 NATURAL FULL JOIN (SELECT name, n as s3_n FROM t3) as s3 ) ss2; SELECT * FROM (SELECT name, n as s1_n FROM t1) as s1 NATURAL FULL JOIN (SELECT * FROM (SELECT name, n as s2_n, 2 as s2_2 FROM t2) as s2 NATURAL FULL JOIN (SELECT name, n as s3_n FROM t3) as s3 ) ss2; -- Constants as join keys can also be problematic SELECT * FROM (SELECT name, n as s1_n FROM t1) as s1 FULL JOIN (SELECT name, 2 as s2_n FROM t2) as s2 ON (s1_n = s2_n); -- Test for propagation of nullability constraints into sub-joins create temp table x (x1 int, x2 int); insert into x values (1,11); insert into x values (2,22); insert into x values (3,null); insert into x values (4,44); insert into x values (5,null); create temp table y (y1 int, y2 int); insert into y values (1,111); insert into y values (2,222); insert into y values (3,333); insert into y values (4,null); select * from x; select * from y; select * from x left join y on (x1 = y1 and x2 is not null); select * from x left join y on (x1 = y1 and y2 is not null); select * from (x left join y on (x1 = y1)) left join x xx(xx1,xx2) on (x1 = xx1); select * from (x left join y on (x1 = y1)) left join x xx(xx1,xx2) on (x1 = xx1 and x2 is not null); select * from (x left join y on (x1 = y1)) left join x xx(xx1,xx2) on (x1 = xx1 and y2 is not null); select * from (x left join y on (x1 = y1)) left join x xx(xx1,xx2) on (x1 = xx1 and xx2 is not null); -- these should NOT give the same answers as above select * from (x left join y on (x1 = y1)) left join x xx(xx1,xx2) on (x1 = xx1) where (x2 is not null); select * from (x left join y on (x1 = y1)) left join x xx(xx1,xx2) on (x1 = xx1) where (y2 is not null); select * from (x left join y on (x1 = y1)) left join x xx(xx1,xx2) on (x1 = xx1) where (xx2 is not null); -- -- regression test: check for bug with propagation of implied equality -- to outside an IN -- select count(*) from tenk1 a where unique1 in (select unique1 from tenk1 b join tenk1 c using (unique1) where b.unique2 = 42); -- -- regression test: check for failure to generate a plan with multiple -- degenerate IN clauses -- select count(*) from tenk1 x where x.unique1 in (select a.f1 from int4_tbl a,float8_tbl b where a.f1=b.f1) and x.unique1 = 0 and x.unique1 in (select aa.f1 from int4_tbl aa,float8_tbl bb where aa.f1=bb.f1); -- try that with GEQO too begin; set geqo = on; set geqo_threshold = 2; select count(*) from tenk1 x where x.unique1 in (select a.f1 from int4_tbl a,float8_tbl b where a.f1=b.f1) and x.unique1 = 0 and x.unique1 in (select aa.f1 from int4_tbl aa,float8_tbl bb where aa.f1=bb.f1); rollback; -- -- regression test: be sure we cope with proven-dummy append rels -- explain (costs off) select aa, bb, unique1, unique1 from tenk1 right join b on aa = unique1 where bb < bb and bb is null; select aa, bb, unique1, unique1 from tenk1 right join b on aa = unique1 where bb < bb and bb is null; -- -- regression test: check handling of empty-FROM subquery underneath outer join -- explain (costs off) select * from int8_tbl i1 left join (int8_tbl i2 join (select 123 as x) ss on i2.q1 = x) on i1.q2 = i2.q2 order by 1, 2; select * from int8_tbl i1 left join (int8_tbl i2 join (select 123 as x) ss on i2.q1 = x) on i1.q2 = i2.q2 order by 1, 2; -- -- regression test: check a case where join_clause_is_movable_into() gives -- an imprecise result, causing an assertion failure -- select count(*) from (select t3.tenthous as x1, coalesce(t1.stringu1, t2.stringu1) as x2 from tenk1 t1 left join tenk1 t2 on t1.unique1 = t2.unique1 join tenk1 t3 on t1.unique2 = t3.unique2) ss, tenk1 t4, tenk1 t5 where t4.thousand = t5.unique1 and ss.x1 = t4.tenthous and ss.x2 = t5.stringu1; -- -- regression test: check a case where we formerly missed including an EC -- enforcement clause because it was expected to be handled at scan level -- explain (costs off) select a.f1, b.f1, t.thousand, t.tenthous from tenk1 t, (select sum(f1)+1 as f1 from int4_tbl i4a) a, (select sum(f1) as f1 from int4_tbl i4b) b where b.f1 = t.thousand and a.f1 = b.f1 and (a.f1+b.f1+999) = t.tenthous; select a.f1, b.f1, t.thousand, t.tenthous from tenk1 t, (select sum(f1)+1 as f1 from int4_tbl i4a) a, (select sum(f1) as f1 from int4_tbl i4b) b where b.f1 = t.thousand and a.f1 = b.f1 and (a.f1+b.f1+999) = t.tenthous; -- -- check a case where we formerly got confused by conflicting sort orders -- in redundant merge join path keys -- explain (costs off) select * from j1_tbl full join (select * from j2_tbl order by j2_tbl.i desc, j2_tbl.k asc) j2_tbl on j1_tbl.i = j2_tbl.i and j1_tbl.i = j2_tbl.k; select * from j1_tbl full join (select * from j2_tbl order by j2_tbl.i desc, j2_tbl.k asc) j2_tbl on j1_tbl.i = j2_tbl.i and j1_tbl.i = j2_tbl.k; -- -- a different check for handling of redundant sort keys in merge joins -- explain (costs off) select count(*) from (select * from tenk1 x order by x.thousand, x.twothousand, x.fivethous) x left join (select * from tenk1 y order by y.unique2) y on x.thousand = y.unique2 and x.twothousand = y.hundred and x.fivethous = y.unique2; select count(*) from (select * from tenk1 x order by x.thousand, x.twothousand, x.fivethous) x left join (select * from tenk1 y order by y.unique2) y on x.thousand = y.unique2 and x.twothousand = y.hundred and x.fivethous = y.unique2; -- -- Clean up -- DROP TABLE t1; DROP TABLE t2; DROP TABLE t3; DROP TABLE J1_TBL; DROP TABLE J2_TBL; -- Both DELETE and UPDATE allow the specification of additional tables -- to "join" against to determine which rows should be modified. CREATE TEMP TABLE t1 (a int, b int); CREATE TEMP TABLE t2 (a int, b int); CREATE TEMP TABLE t3 (x int, y int); INSERT INTO t1 VALUES (5, 10); INSERT INTO t1 VALUES (15, 20); INSERT INTO t1 VALUES (100, 100); INSERT INTO t1 VALUES (200, 1000); INSERT INTO t2 VALUES (200, 2000); INSERT INTO t3 VALUES (5, 20); INSERT INTO t3 VALUES (6, 7); INSERT INTO t3 VALUES (7, 8); INSERT INTO t3 VALUES (500, 100); DELETE FROM t3 USING t1 table1 WHERE t3.x = table1.a; SELECT * FROM t3; DELETE FROM t3 USING t1 JOIN t2 USING (a) WHERE t3.x > t1.a; SELECT * FROM t3; DELETE FROM t3 USING t3 t3_other WHERE t3.x = t3_other.x AND t3.y = t3_other.y; SELECT * FROM t3; -- Test join against inheritance tree create temp table t2a () inherits (t2); insert into t2a values (200, 2001); select * from t1 left join t2 on (t1.a = t2.a); -- Test matching of column name with wrong alias select t1.x from t1 join t3 on (t1.a = t3.x); -- -- regression test for 8.1 merge right join bug -- CREATE TEMP TABLE tt1 ( tt1_id int4, joincol int4 ); INSERT INTO tt1 VALUES (1, 11); INSERT INTO tt1 VALUES (2, NULL); CREATE TEMP TABLE tt2 ( tt2_id int4, joincol int4 ); INSERT INTO tt2 VALUES (21, 11); INSERT INTO tt2 VALUES (22, 11); set enable_hashjoin to off; set enable_nestloop to off; -- these should give the same results select tt1.*, tt2.* from tt1 left join tt2 on tt1.joincol = tt2.joincol; select tt1.*, tt2.* from tt2 right join tt1 on tt1.joincol = tt2.joincol; reset enable_hashjoin; reset enable_nestloop; -- -- regression test for bug #13908 (hash join with skew tuples & nbatch increase) -- set work_mem to '64kB'; set enable_mergejoin to off; explain (costs off) select count(*) from tenk1 a, tenk1 b where a.hundred = b.thousand and (b.fivethous % 10) < 10; select count(*) from tenk1 a, tenk1 b where a.hundred = b.thousand and (b.fivethous % 10) < 10; reset work_mem; reset enable_mergejoin; -- -- regression test for 8.2 bug with improper re-ordering of left joins -- create temp table tt3(f1 int, f2 text); insert into tt3 select x, repeat('xyzzy', 100) from generate_series(1,10000) x; create index tt3i on tt3(f1); analyze tt3; create temp table tt4(f1 int); insert into tt4 values (0),(1),(9999); analyze tt4; SELECT a.f1 FROM tt4 a LEFT JOIN ( SELECT b.f1 FROM tt3 b LEFT JOIN tt3 c ON (b.f1 = c.f1) WHERE c.f1 IS NULL ) AS d ON (a.f1 = d.f1) WHERE d.f1 IS NULL; -- -- regression test for proper handling of outer joins within antijoins -- create temp table tt4x(c1 int, c2 int, c3 int); explain (costs off) select * from tt4x t1 where not exists ( select 1 from tt4x t2 left join tt4x t3 on t2.c3 = t3.c1 left join ( select t5.c1 as c1 from tt4x t4 left join tt4x t5 on t4.c2 = t5.c1 ) a1 on t3.c2 = a1.c1 where t1.c1 = t2.c2 ); -- -- regression test for problems of the sort depicted in bug #3494 -- create temp table tt5(f1 int, f2 int); create temp table tt6(f1 int, f2 int); insert into tt5 values(1, 10); insert into tt5 values(1, 11); insert into tt6 values(1, 9); insert into tt6 values(1, 2); insert into tt6 values(2, 9); select * from tt5,tt6 where tt5.f1 = tt6.f1 and tt5.f1 = tt5.f2 - tt6.f2; -- -- regression test for problems of the sort depicted in bug #3588 -- create temp table xx (pkxx int); create temp table yy (pkyy int, pkxx int); insert into xx values (1); insert into xx values (2); insert into xx values (3); insert into yy values (101, 1); insert into yy values (201, 2); insert into yy values (301, NULL); select yy.pkyy as yy_pkyy, yy.pkxx as yy_pkxx, yya.pkyy as yya_pkyy, xxa.pkxx as xxa_pkxx, xxb.pkxx as xxb_pkxx from yy left join (SELECT * FROM yy where pkyy = 101) as yya ON yy.pkyy = yya.pkyy left join xx xxa on yya.pkxx = xxa.pkxx left join xx xxb on coalesce (xxa.pkxx, 1) = xxb.pkxx; -- -- regression test for improper pushing of constants across outer-join clauses -- (as seen in early 8.2.x releases) -- create temp table zt1 (f1 int primary key); create temp table zt2 (f2 int primary key); create temp table zt3 (f3 int primary key); insert into zt1 values(53); insert into zt2 values(53); select * from zt2 left join zt3 on (f2 = f3) left join zt1 on (f3 = f1) where f2 = 53; create temp view zv1 as select *,'dummy'::text AS junk from zt1; select * from zt2 left join zt3 on (f2 = f3) left join zv1 on (f3 = f1) where f2 = 53; -- -- regression test for improper extraction of OR indexqual conditions -- (as seen in early 8.3.x releases) -- select a.unique2, a.ten, b.tenthous, b.unique2, b.hundred from tenk1 a left join tenk1 b on a.unique2 = b.tenthous where a.unique1 = 42 and ((b.unique2 is null and a.ten = 2) or b.hundred = 3); -- -- test proper positioning of one-time quals in EXISTS (8.4devel bug) -- prepare foo(bool) as select count(*) from tenk1 a left join tenk1 b on (a.unique2 = b.unique1 and exists (select 1 from tenk1 c where c.thousand = b.unique2 and $1)); execute foo(true); execute foo(false); -- -- test for sane behavior with noncanonical merge clauses, per bug #4926 -- begin; set enable_mergejoin = 1; set enable_hashjoin = 0; set enable_nestloop = 0; create temp table a (i integer); create temp table b (x integer, y integer); select * from a left join b on i = x and i = y and x = i; rollback; -- -- test handling of merge clauses using record_ops -- begin; create type mycomptype as (id int, v bigint); create temp table tidv (idv mycomptype); create index on tidv (idv); explain (costs off) select a.idv, b.idv from tidv a, tidv b where a.idv = b.idv; set enable_mergejoin = 0; explain (costs off) select a.idv, b.idv from tidv a, tidv b where a.idv = b.idv; rollback; -- -- test NULL behavior of whole-row Vars, per bug #5025 -- select t1.q2, count(t2.*) from int8_tbl t1 left join int8_tbl t2 on (t1.q2 = t2.q1) group by t1.q2 order by 1; select t1.q2, count(t2.*) from int8_tbl t1 left join (select * from int8_tbl) t2 on (t1.q2 = t2.q1) group by t1.q2 order by 1; select t1.q2, count(t2.*) from int8_tbl t1 left join (select * from int8_tbl offset 0) t2 on (t1.q2 = t2.q1) group by t1.q2 order by 1; select t1.q2, count(t2.*) from int8_tbl t1 left join (select q1, case when q2=1 then 1 else q2 end as q2 from int8_tbl) t2 on (t1.q2 = t2.q1) group by t1.q2 order by 1; -- -- test incorrect failure to NULL pulled-up subexpressions -- begin; create temp table a ( code char not null, constraint a_pk primary key (code) ); create temp table b ( a char not null, num integer not null, constraint b_pk primary key (a, num) ); create temp table c ( name char not null, a char, constraint c_pk primary key (name) ); insert into a (code) values ('p'); insert into a (code) values ('q'); insert into b (a, num) values ('p', 1); insert into b (a, num) values ('p', 2); insert into c (name, a) values ('A', 'p'); insert into c (name, a) values ('B', 'q'); insert into c (name, a) values ('C', null); select c.name, ss.code, ss.b_cnt, ss.const from c left join (select a.code, coalesce(b_grp.cnt, 0) as b_cnt, -1 as const from a left join (select count(1) as cnt, b.a from b group by b.a) as b_grp on a.code = b_grp.a ) as ss on (c.a = ss.code) order by c.name; rollback; -- -- test incorrect handling of placeholders that only appear in targetlists, -- per bug #6154 -- SELECT * FROM ( SELECT 1 as key1 ) sub1 LEFT JOIN ( SELECT sub3.key3, sub4.value2, COALESCE(sub4.value2, 66) as value3 FROM ( SELECT 1 as key3 ) sub3 LEFT JOIN ( SELECT sub5.key5, COALESCE(sub6.value1, 1) as value2 FROM ( SELECT 1 as key5 ) sub5 LEFT JOIN ( SELECT 2 as key6, 42 as value1 ) sub6 ON sub5.key5 = sub6.key6 ) sub4 ON sub4.key5 = sub3.key3 ) sub2 ON sub1.key1 = sub2.key3; -- test the path using join aliases, too SELECT * FROM ( SELECT 1 as key1 ) sub1 LEFT JOIN ( SELECT sub3.key3, value2, COALESCE(value2, 66) as value3 FROM ( SELECT 1 as key3 ) sub3 LEFT JOIN ( SELECT sub5.key5, COALESCE(sub6.value1, 1) as value2 FROM ( SELECT 1 as key5 ) sub5 LEFT JOIN ( SELECT 2 as key6, 42 as value1 ) sub6 ON sub5.key5 = sub6.key6 ) sub4 ON sub4.key5 = sub3.key3 ) sub2 ON sub1.key1 = sub2.key3; -- -- test case where a PlaceHolderVar is used as a nestloop parameter -- EXPLAIN (COSTS OFF) SELECT qq, unique1 FROM ( SELECT COALESCE(q1, 0) AS qq FROM int8_tbl a ) AS ss1 FULL OUTER JOIN ( SELECT COALESCE(q2, -1) AS qq FROM int8_tbl b ) AS ss2 USING (qq) INNER JOIN tenk1 c ON qq = unique2; SELECT qq, unique1 FROM ( SELECT COALESCE(q1, 0) AS qq FROM int8_tbl a ) AS ss1 FULL OUTER JOIN ( SELECT COALESCE(q2, -1) AS qq FROM int8_tbl b ) AS ss2 USING (qq) INNER JOIN tenk1 c ON qq = unique2; -- -- nested nestloops can require nested PlaceHolderVars -- create temp table nt1 ( id int primary key, a1 boolean, a2 boolean ); create temp table nt2 ( id int primary key, nt1_id int, b1 boolean, b2 boolean, foreign key (nt1_id) references nt1(id) ); create temp table nt3 ( id int primary key, nt2_id int, c1 boolean, foreign key (nt2_id) references nt2(id) ); insert into nt1 values (1,true,true); insert into nt1 values (2,true,false); insert into nt1 values (3,false,false); insert into nt2 values (1,1,true,true); insert into nt2 values (2,2,true,false); insert into nt2 values (3,3,false,false); insert into nt3 values (1,1,true); insert into nt3 values (2,2,false); insert into nt3 values (3,3,true); explain (costs off) select nt3.id from nt3 as nt3 left join (select nt2.*, (nt2.b1 and ss1.a3) AS b3 from nt2 as nt2 left join (select nt1.*, (nt1.id is not null) as a3 from nt1) as ss1 on ss1.id = nt2.nt1_id ) as ss2 on ss2.id = nt3.nt2_id where nt3.id = 1 and ss2.b3; select nt3.id from nt3 as nt3 left join (select nt2.*, (nt2.b1 and ss1.a3) AS b3 from nt2 as nt2 left join (select nt1.*, (nt1.id is not null) as a3 from nt1) as ss1 on ss1.id = nt2.nt1_id ) as ss2 on ss2.id = nt3.nt2_id where nt3.id = 1 and ss2.b3; -- -- test case where a PlaceHolderVar is propagated into a subquery -- explain (costs off) select * from int8_tbl t1 left join (select q1 as x, 42 as y from int8_tbl t2) ss on t1.q2 = ss.x where 1 = (select 1 from int8_tbl t3 where ss.y is not null limit 1) order by 1,2; select * from int8_tbl t1 left join (select q1 as x, 42 as y from int8_tbl t2) ss on t1.q2 = ss.x where 1 = (select 1 from int8_tbl t3 where ss.y is not null limit 1) order by 1,2; -- -- variant where a PlaceHolderVar is needed at a join, but not above the join -- explain (costs off) select * from int4_tbl as i41, lateral (select 1 as x from (select i41.f1 as lat, i42.f1 as loc from int8_tbl as i81, int4_tbl as i42) as ss1 right join int4_tbl as i43 on (i43.f1 > 1) where ss1.loc = ss1.lat) as ss2 where i41.f1 > 0; select * from int4_tbl as i41, lateral (select 1 as x from (select i41.f1 as lat, i42.f1 as loc from int8_tbl as i81, int4_tbl as i42) as ss1 right join int4_tbl as i43 on (i43.f1 > 1) where ss1.loc = ss1.lat) as ss2 where i41.f1 > 0; -- -- test the corner cases FULL JOIN ON TRUE and FULL JOIN ON FALSE -- select * from int4_tbl a full join int4_tbl b on true; select * from int4_tbl a full join int4_tbl b on false; -- -- test for ability to use a cartesian join when necessary -- create temp table q1 as select 1 as q1; create temp table q2 as select 0 as q2; analyze q1; analyze q2; explain (costs off) select * from tenk1 join int4_tbl on f1 = twothousand, q1, q2 where q1 = thousand or q2 = thousand; explain (costs off) select * from tenk1 join int4_tbl on f1 = twothousand, q1, q2 where thousand = (q1 + q2); -- -- test ability to generate a suitable plan for a star-schema query -- explain (costs off) select * from tenk1, int8_tbl a, int8_tbl b where thousand = a.q1 and tenthous = b.q1 and a.q2 = 1 and b.q2 = 2; -- -- test a corner case in which we shouldn't apply the star-schema optimization -- explain (costs off) select t1.unique2, t1.stringu1, t2.unique1, t2.stringu2 from tenk1 t1 inner join int4_tbl i1 left join (select v1.x2, v2.y1, 11 AS d1 from (select 1,0 from onerow) v1(x1,x2) left join (select 3,1 from onerow) v2(y1,y2) on v1.x1 = v2.y2) subq1 on (i1.f1 = subq1.x2) on (t1.unique2 = subq1.d1) left join tenk1 t2 on (subq1.y1 = t2.unique1) where t1.unique2 < 42 and t1.stringu1 > t2.stringu2; select t1.unique2, t1.stringu1, t2.unique1, t2.stringu2 from tenk1 t1 inner join int4_tbl i1 left join (select v1.x2, v2.y1, 11 AS d1 from (select 1,0 from onerow) v1(x1,x2) left join (select 3,1 from onerow) v2(y1,y2) on v1.x1 = v2.y2) subq1 on (i1.f1 = subq1.x2) on (t1.unique2 = subq1.d1) left join tenk1 t2 on (subq1.y1 = t2.unique1) where t1.unique2 < 42 and t1.stringu1 > t2.stringu2; -- variant that isn't quite a star-schema case select ss1.d1 from tenk1 as t1 inner join tenk1 as t2 on t1.tenthous = t2.ten inner join int8_tbl as i8 left join int4_tbl as i4 inner join (select 64::information_schema.cardinal_number as d1 from tenk1 t3, lateral (select abs(t3.unique1) + random()) ss0(x) where t3.fivethous < 0) as ss1 on i4.f1 = ss1.d1 on i8.q1 = i4.f1 on t1.tenthous = ss1.d1 where t1.unique1 < i4.f1; -- this variant is foldable by the remove-useless-RESULT-RTEs code explain (costs off) select t1.unique2, t1.stringu1, t2.unique1, t2.stringu2 from tenk1 t1 inner join int4_tbl i1 left join (select v1.x2, v2.y1, 11 AS d1 from (values(1,0)) v1(x1,x2) left join (values(3,1)) v2(y1,y2) on v1.x1 = v2.y2) subq1 on (i1.f1 = subq1.x2) on (t1.unique2 = subq1.d1) left join tenk1 t2 on (subq1.y1 = t2.unique1) where t1.unique2 < 42 and t1.stringu1 > t2.stringu2; select t1.unique2, t1.stringu1, t2.unique1, t2.stringu2 from tenk1 t1 inner join int4_tbl i1 left join (select v1.x2, v2.y1, 11 AS d1 from (values(1,0)) v1(x1,x2) left join (values(3,1)) v2(y1,y2) on v1.x1 = v2.y2) subq1 on (i1.f1 = subq1.x2) on (t1.unique2 = subq1.d1) left join tenk1 t2 on (subq1.y1 = t2.unique1) where t1.unique2 < 42 and t1.stringu1 > t2.stringu2; -- Here's a variant that we can't fold too aggressively, though, -- or we end up with noplace to evaluate the lateral PHV explain (verbose, costs off) select * from (select 1 as x) ss1 left join (select 2 as y) ss2 on (true), lateral (select ss2.y as z limit 1) ss3; select * from (select 1 as x) ss1 left join (select 2 as y) ss2 on (true), lateral (select ss2.y as z limit 1) ss3; -- Test proper handling of appendrel PHVs during useless-RTE removal explain (costs off) select * from (select 0 as z) as t1 left join (select true as a) as t2 on true, lateral (select true as b union all select a as b) as t3 where b; select * from (select 0 as z) as t1 left join (select true as a) as t2 on true, lateral (select true as b union all select a as b) as t3 where b; -- -- test inlining of immutable functions -- create function f_immutable_int4(i integer) returns integer as $$ begin return i; end; $$ language plpgsql immutable; -- check optimization of function scan with join explain (costs off) select unique1 from tenk1, (select * from f_immutable_int4(1) x) x where x = unique1; explain (verbose, costs off) select unique1, x.* from tenk1, (select *, random() from f_immutable_int4(1) x) x where x = unique1; explain (costs off) select unique1 from tenk1, f_immutable_int4(1) x where x = unique1; explain (costs off) select unique1 from tenk1, lateral f_immutable_int4(1) x where x = unique1; explain (costs off) select unique1, x from tenk1 join f_immutable_int4(1) x on unique1 = x; explain (costs off) select unique1, x from tenk1 left join f_immutable_int4(1) x on unique1 = x; explain (costs off) select unique1, x from tenk1 right join f_immutable_int4(1) x on unique1 = x; explain (costs off) select unique1, x from tenk1 full join f_immutable_int4(1) x on unique1 = x; -- check that pullup of a const function allows further const-folding explain (costs off) select unique1 from tenk1, f_immutable_int4(1) x where x = 42; -- test inlining of immutable functions with PlaceHolderVars explain (costs off) select nt3.id from nt3 as nt3 left join (select nt2.*, (nt2.b1 or i4 = 42) AS b3 from nt2 as nt2 left join f_immutable_int4(0) i4 on i4 = nt2.nt1_id ) as ss2 on ss2.id = nt3.nt2_id where nt3.id = 1 and ss2.b3; drop function f_immutable_int4(int); -- test inlining when function returns composite create function mki8(bigint, bigint) returns int8_tbl as $$select row($1,$2)::int8_tbl$$ language sql; create function mki4(int) returns int4_tbl as $$select row($1)::int4_tbl$$ language sql; explain (verbose, costs off) select * from mki8(1,2); select * from mki8(1,2); explain (verbose, costs off) select * from mki4(42); select * from mki4(42); drop function mki8(bigint, bigint); drop function mki4(int); -- -- test extraction of restriction OR clauses from join OR clause -- (we used to only do this for indexable clauses) -- explain (costs off) select * from tenk1 a join tenk1 b on (a.unique1 = 1 and b.unique1 = 2) or (a.unique2 = 3 and b.hundred = 4); explain (costs off) select * from tenk1 a join tenk1 b on (a.unique1 = 1 and b.unique1 = 2) or (a.unique2 = 3 and b.ten = 4); explain (costs off) select * from tenk1 a join tenk1 b on (a.unique1 = 1 and b.unique1 = 2) or ((a.unique2 = 3 or a.unique2 = 7) and b.hundred = 4); -- -- test placement of movable quals in a parameterized join tree -- explain (costs off) select * from tenk1 t1 left join (tenk1 t2 join tenk1 t3 on t2.thousand = t3.unique2) on t1.hundred = t2.hundred and t1.ten = t3.ten where t1.unique1 = 1; explain (costs off) select * from tenk1 t1 left join (tenk1 t2 join tenk1 t3 on t2.thousand = t3.unique2) on t1.hundred = t2.hundred and t1.ten + t2.ten = t3.ten where t1.unique1 = 1; explain (costs off) select count(*) from tenk1 a join tenk1 b on a.unique1 = b.unique2 left join tenk1 c on a.unique2 = b.unique1 and c.thousand = a.thousand join int4_tbl on b.thousand = f1; select count(*) from tenk1 a join tenk1 b on a.unique1 = b.unique2 left join tenk1 c on a.unique2 = b.unique1 and c.thousand = a.thousand join int4_tbl on b.thousand = f1; explain (costs off) select b.unique1 from tenk1 a join tenk1 b on a.unique1 = b.unique2 left join tenk1 c on b.unique1 = 42 and c.thousand = a.thousand join int4_tbl i1 on b.thousand = f1 right join int4_tbl i2 on i2.f1 = b.tenthous order by 1; select b.unique1 from tenk1 a join tenk1 b on a.unique1 = b.unique2 left join tenk1 c on b.unique1 = 42 and c.thousand = a.thousand join int4_tbl i1 on b.thousand = f1 right join int4_tbl i2 on i2.f1 = b.tenthous order by 1; explain (costs off) select * from ( select unique1, q1, coalesce(unique1, -1) + q1 as fault from int8_tbl left join tenk1 on (q2 = unique2) ) ss where fault = 122 order by fault; select * from ( select unique1, q1, coalesce(unique1, -1) + q1 as fault from int8_tbl left join tenk1 on (q2 = unique2) ) ss where fault = 122 order by fault; explain (costs off) select * from (values (1, array[10,20]), (2, array[20,30])) as v1(v1x,v1ys) left join (values (1, 10), (2, 20)) as v2(v2x,v2y) on v2x = v1x left join unnest(v1ys) as u1(u1y) on u1y = v2y; select * from (values (1, array[10,20]), (2, array[20,30])) as v1(v1x,v1ys) left join (values (1, 10), (2, 20)) as v2(v2x,v2y) on v2x = v1x left join unnest(v1ys) as u1(u1y) on u1y = v2y; -- -- test handling of potential equivalence clauses above outer joins -- explain (costs off) select q1, unique2, thousand, hundred from int8_tbl a left join tenk1 b on q1 = unique2 where coalesce(thousand,123) = q1 and q1 = coalesce(hundred,123); select q1, unique2, thousand, hundred from int8_tbl a left join tenk1 b on q1 = unique2 where coalesce(thousand,123) = q1 and q1 = coalesce(hundred,123); explain (costs off) select f1, unique2, case when unique2 is null then f1 else 0 end from int4_tbl a left join tenk1 b on f1 = unique2 where (case when unique2 is null then f1 else 0 end) = 0; select f1, unique2, case when unique2 is null then f1 else 0 end from int4_tbl a left join tenk1 b on f1 = unique2 where (case when unique2 is null then f1 else 0 end) = 0; -- -- another case with equivalence clauses above outer joins (bug #8591) -- explain (costs off) select a.unique1, b.unique1, c.unique1, coalesce(b.twothousand, a.twothousand) from tenk1 a left join tenk1 b on b.thousand = a.unique1 left join tenk1 c on c.unique2 = coalesce(b.twothousand, a.twothousand) where a.unique2 < 10 and coalesce(b.twothousand, a.twothousand) = 44; select a.unique1, b.unique1, c.unique1, coalesce(b.twothousand, a.twothousand) from tenk1 a left join tenk1 b on b.thousand = a.unique1 left join tenk1 c on c.unique2 = coalesce(b.twothousand, a.twothousand) where a.unique2 < 10 and coalesce(b.twothousand, a.twothousand) = 44; -- -- check handling of join aliases when flattening multiple levels of subquery -- explain (verbose, costs off) select foo1.join_key as foo1_id, foo3.join_key AS foo3_id, bug_field from (values (0),(1)) foo1(join_key) left join (select join_key, bug_field from (select ss1.join_key, ss1.bug_field from (select f1 as join_key, 666 as bug_field from int4_tbl i1) ss1 ) foo2 left join (select unique2 as join_key from tenk1 i2) ss2 using (join_key) ) foo3 using (join_key); select foo1.join_key as foo1_id, foo3.join_key AS foo3_id, bug_field from (values (0),(1)) foo1(join_key) left join (select join_key, bug_field from (select ss1.join_key, ss1.bug_field from (select f1 as join_key, 666 as bug_field from int4_tbl i1) ss1 ) foo2 left join (select unique2 as join_key from tenk1 i2) ss2 using (join_key) ) foo3 using (join_key); -- -- test successful handling of nested outer joins with degenerate join quals -- explain (verbose, costs off) select t1.* from text_tbl t1 left join (select *, '***'::text as d1 from int8_tbl i8b1) b1 left join int8_tbl i8 left join (select *, null::int as d2 from int8_tbl i8b2) b2 on (i8.q1 = b2.q1) on (b2.d2 = b1.q2) on (t1.f1 = b1.d1) left join int4_tbl i4 on (i8.q2 = i4.f1); select t1.* from text_tbl t1 left join (select *, '***'::text as d1 from int8_tbl i8b1) b1 left join int8_tbl i8 left join (select *, null::int as d2 from int8_tbl i8b2) b2 on (i8.q1 = b2.q1) on (b2.d2 = b1.q2) on (t1.f1 = b1.d1) left join int4_tbl i4 on (i8.q2 = i4.f1); explain (verbose, costs off) select t1.* from text_tbl t1 left join (select *, '***'::text as d1 from int8_tbl i8b1) b1 left join int8_tbl i8 left join (select *, null::int as d2 from int8_tbl i8b2, int4_tbl i4b2) b2 on (i8.q1 = b2.q1) on (b2.d2 = b1.q2) on (t1.f1 = b1.d1) left join int4_tbl i4 on (i8.q2 = i4.f1); select t1.* from text_tbl t1 left join (select *, '***'::text as d1 from int8_tbl i8b1) b1 left join int8_tbl i8 left join (select *, null::int as d2 from int8_tbl i8b2, int4_tbl i4b2) b2 on (i8.q1 = b2.q1) on (b2.d2 = b1.q2) on (t1.f1 = b1.d1) left join int4_tbl i4 on (i8.q2 = i4.f1); explain (verbose, costs off) select t1.* from text_tbl t1 left join (select *, '***'::text as d1 from int8_tbl i8b1) b1 left join int8_tbl i8 left join (select *, null::int as d2 from int8_tbl i8b2, int4_tbl i4b2 where q1 = f1) b2 on (i8.q1 = b2.q1) on (b2.d2 = b1.q2) on (t1.f1 = b1.d1) left join int4_tbl i4 on (i8.q2 = i4.f1); select t1.* from text_tbl t1 left join (select *, '***'::text as d1 from int8_tbl i8b1) b1 left join int8_tbl i8 left join (select *, null::int as d2 from int8_tbl i8b2, int4_tbl i4b2 where q1 = f1) b2 on (i8.q1 = b2.q1) on (b2.d2 = b1.q2) on (t1.f1 = b1.d1) left join int4_tbl i4 on (i8.q2 = i4.f1); explain (verbose, costs off) select * from text_tbl t1 inner join int8_tbl i8 on i8.q2 = 456 right join text_tbl t2 on t1.f1 = 'doh!' left join int4_tbl i4 on i8.q1 = i4.f1; select * from text_tbl t1 inner join int8_tbl i8 on i8.q2 = 456 right join text_tbl t2 on t1.f1 = 'doh!' left join int4_tbl i4 on i8.q1 = i4.f1; -- -- test for appropriate join order in the presence of lateral references -- explain (verbose, costs off) select * from text_tbl t1 left join int8_tbl i8 on i8.q2 = 123, lateral (select i8.q1, t2.f1 from text_tbl t2 limit 1) as ss where t1.f1 = ss.f1; select * from text_tbl t1 left join int8_tbl i8 on i8.q2 = 123, lateral (select i8.q1, t2.f1 from text_tbl t2 limit 1) as ss where t1.f1 = ss.f1; explain (verbose, costs off) select * from text_tbl t1 left join int8_tbl i8 on i8.q2 = 123, lateral (select i8.q1, t2.f1 from text_tbl t2 limit 1) as ss1, lateral (select ss1.* from text_tbl t3 limit 1) as ss2 where t1.f1 = ss2.f1; select * from text_tbl t1 left join int8_tbl i8 on i8.q2 = 123, lateral (select i8.q1, t2.f1 from text_tbl t2 limit 1) as ss1, lateral (select ss1.* from text_tbl t3 limit 1) as ss2 where t1.f1 = ss2.f1; explain (verbose, costs off) select 1 from text_tbl as tt1 inner join text_tbl as tt2 on (tt1.f1 = 'foo') left join text_tbl as tt3 on (tt3.f1 = 'foo') left join text_tbl as tt4 on (tt3.f1 = tt4.f1), lateral (select tt4.f1 as c0 from text_tbl as tt5 limit 1) as ss1 where tt1.f1 = ss1.c0; select 1 from text_tbl as tt1 inner join text_tbl as tt2 on (tt1.f1 = 'foo') left join text_tbl as tt3 on (tt3.f1 = 'foo') left join text_tbl as tt4 on (tt3.f1 = tt4.f1), lateral (select tt4.f1 as c0 from text_tbl as tt5 limit 1) as ss1 where tt1.f1 = ss1.c0; -- -- check a case in which a PlaceHolderVar forces join order -- explain (verbose, costs off) select ss2.* from int4_tbl i41 left join int8_tbl i8 join (select i42.f1 as c1, i43.f1 as c2, 42 as c3 from int4_tbl i42, int4_tbl i43) ss1 on i8.q1 = ss1.c2 on i41.f1 = ss1.c1, lateral (select i41.*, i8.*, ss1.* from text_tbl limit 1) ss2 where ss1.c2 = 0; select ss2.* from int4_tbl i41 left join int8_tbl i8 join (select i42.f1 as c1, i43.f1 as c2, 42 as c3 from int4_tbl i42, int4_tbl i43) ss1 on i8.q1 = ss1.c2 on i41.f1 = ss1.c1, lateral (select i41.*, i8.*, ss1.* from text_tbl limit 1) ss2 where ss1.c2 = 0; -- -- test successful handling of full join underneath left join (bug #14105) -- explain (costs off) select * from (select 1 as id) as xx left join (tenk1 as a1 full join (select 1 as id) as yy on (a1.unique1 = yy.id)) on (xx.id = coalesce(yy.id)); select * from (select 1 as id) as xx left join (tenk1 as a1 full join (select 1 as id) as yy on (a1.unique1 = yy.id)) on (xx.id = coalesce(yy.id)); -- -- test ability to push constants through outer join clauses -- explain (costs off) select * from int4_tbl a left join tenk1 b on f1 = unique2 where f1 = 0; explain (costs off) select * from tenk1 a full join tenk1 b using(unique2) where unique2 = 42; -- -- test that quals attached to an outer join have correct semantics, -- specifically that they don't re-use expressions computed below the join; -- we force a mergejoin so that coalesce(b.q1, 1) appears as a join input -- set enable_hashjoin to off; set enable_nestloop to off; explain (verbose, costs off) select a.q2, b.q1 from int8_tbl a left join int8_tbl b on a.q2 = coalesce(b.q1, 1) where coalesce(b.q1, 1) > 0; select a.q2, b.q1 from int8_tbl a left join int8_tbl b on a.q2 = coalesce(b.q1, 1) where coalesce(b.q1, 1) > 0; reset enable_hashjoin; reset enable_nestloop; -- -- test join removal -- begin; CREATE TEMP TABLE a (id int PRIMARY KEY, b_id int); CREATE TEMP TABLE b (id int PRIMARY KEY, c_id int); CREATE TEMP TABLE c (id int PRIMARY KEY); CREATE TEMP TABLE d (a int, b int); INSERT INTO a VALUES (0, 0), (1, NULL); INSERT INTO b VALUES (0, 0), (1, NULL); INSERT INTO c VALUES (0), (1); INSERT INTO d VALUES (1,3), (2,2), (3,1); -- all three cases should be optimizable into a simple seqscan explain (costs off) SELECT a.* FROM a LEFT JOIN b ON a.b_id = b.id; explain (costs off) SELECT b.* FROM b LEFT JOIN c ON b.c_id = c.id; explain (costs off) SELECT a.* FROM a LEFT JOIN (b left join c on b.c_id = c.id) ON (a.b_id = b.id); -- check optimization of outer join within another special join explain (costs off) select id from a where id in ( select b.id from b left join c on b.id = c.id ); -- check that join removal works for a left join when joining a subquery -- that is guaranteed to be unique by its GROUP BY clause explain (costs off) select d.* from d left join (select * from b group by b.id, b.c_id) s on d.a = s.id and d.b = s.c_id; -- similarly, but keying off a DISTINCT clause explain (costs off) select d.* from d left join (select distinct * from b) s on d.a = s.id and d.b = s.c_id; -- join removal is not possible when the GROUP BY contains a column that is -- not in the join condition. (Note: as of 9.6, we notice that b.id is a -- primary key and so drop b.c_id from the GROUP BY of the resulting plan; -- but this happens too late for join removal in the outer plan level.) explain (costs off) select d.* from d left join (select * from b group by b.id, b.c_id) s on d.a = s.id; -- similarly, but keying off a DISTINCT clause explain (costs off) select d.* from d left join (select distinct * from b) s on d.a = s.id; -- check join removal works when uniqueness of the join condition is enforced -- by a UNION explain (costs off) select d.* from d left join (select id from a union select id from b) s on d.a = s.id; -- check join removal with a cross-type comparison operator explain (costs off) select i8.* from int8_tbl i8 left join (select f1 from int4_tbl group by f1) i4 on i8.q1 = i4.f1; -- check join removal with lateral references explain (costs off) select 1 from (select a.id FROM a left join b on a.b_id = b.id) q, lateral generate_series(1, q.id) gs(i) where q.id = gs.i; rollback; create temp table parent (k int primary key, pd int); create temp table child (k int unique, cd int); insert into parent values (1, 10), (2, 20), (3, 30); insert into child values (1, 100), (4, 400); -- this case is optimizable select p.* from parent p left join child c on (p.k = c.k); explain (costs off) select p.* from parent p left join child c on (p.k = c.k); -- this case is not select p.*, linked from parent p left join (select c.*, true as linked from child c) as ss on (p.k = ss.k); explain (costs off) select p.*, linked from parent p left join (select c.*, true as linked from child c) as ss on (p.k = ss.k); -- check for a 9.0rc1 bug: join removal breaks pseudoconstant qual handling select p.* from parent p left join child c on (p.k = c.k) where p.k = 1 and p.k = 2; explain (costs off) select p.* from parent p left join child c on (p.k = c.k) where p.k = 1 and p.k = 2; select p.* from (parent p left join child c on (p.k = c.k)) join parent x on p.k = x.k where p.k = 1 and p.k = 2; explain (costs off) select p.* from (parent p left join child c on (p.k = c.k)) join parent x on p.k = x.k where p.k = 1 and p.k = 2; -- bug 5255: this is not optimizable by join removal begin; CREATE TEMP TABLE a (id int PRIMARY KEY); CREATE TEMP TABLE b (id int PRIMARY KEY, a_id int); INSERT INTO a VALUES (0), (1); INSERT INTO b VALUES (0, 0), (1, NULL); SELECT * FROM b LEFT JOIN a ON (b.a_id = a.id) WHERE (a.id IS NULL OR a.id > 0); SELECT b.* FROM b LEFT JOIN a ON (b.a_id = a.id) WHERE (a.id IS NULL OR a.id > 0); rollback; -- another join removal bug: this is not optimizable, either begin; create temp table innertab (id int8 primary key, dat1 int8); insert into innertab values(123, 42); SELECT * FROM (SELECT 1 AS x) ss1 LEFT JOIN (SELECT q1, q2, COALESCE(dat1, q1) AS y FROM int8_tbl LEFT JOIN innertab ON q2 = id) ss2 ON true; rollback; -- another join removal bug: we must clean up correctly when removing a PHV begin; create temp table uniquetbl (f1 text unique); explain (costs off) select t1.* from uniquetbl as t1 left join (select *, '***'::text as d1 from uniquetbl) t2 on t1.f1 = t2.f1 left join uniquetbl t3 on t2.d1 = t3.f1; explain (costs off) select t0.* from text_tbl t0 left join (select case t1.ten when 0 then 'doh!'::text else null::text end as case1, t1.stringu2 from tenk1 t1 join int4_tbl i4 ON i4.f1 = t1.unique2 left join uniquetbl u1 ON u1.f1 = t1.string4) ss on t0.f1 = ss.case1 where ss.stringu2 !~* ss.case1; select t0.* from text_tbl t0 left join (select case t1.ten when 0 then 'doh!'::text else null::text end as case1, t1.stringu2 from tenk1 t1 join int4_tbl i4 ON i4.f1 = t1.unique2 left join uniquetbl u1 ON u1.f1 = t1.string4) ss on t0.f1 = ss.case1 where ss.stringu2 !~* ss.case1; rollback; -- test case to expose miscomputation of required relid set for a PHV explain (verbose, costs off) select i8.*, ss.v, t.unique2 from int8_tbl i8 left join int4_tbl i4 on i4.f1 = 1 left join lateral (select i4.f1 + 1 as v) as ss on true left join tenk1 t on t.unique2 = ss.v where q2 = 456; select i8.*, ss.v, t.unique2 from int8_tbl i8 left join int4_tbl i4 on i4.f1 = 1 left join lateral (select i4.f1 + 1 as v) as ss on true left join tenk1 t on t.unique2 = ss.v where q2 = 456; -- bug #8444: we've historically allowed duplicate aliases within aliased JOINs select * from int8_tbl x join (int4_tbl x cross join int4_tbl y) j on q1 = f1; -- error select * from int8_tbl x join (int4_tbl x cross join int4_tbl y) j on q1 = y.f1; -- error select * from int8_tbl x join (int4_tbl x cross join int4_tbl y(ff)) j on q1 = f1; -- ok -- -- Test hints given on incorrect column references are useful -- select t1.uunique1 from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, prefer "t1" suggestion select t2.uunique1 from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, prefer "t2" suggestion select uunique1 from tenk1 t1 join tenk2 t2 on t1.two = t2.two; -- error, suggest both at once -- -- Take care to reference the correct RTE -- select atts.relid::regclass, s.* from pg_stats s join pg_attribute a on s.attname = a.attname and s.tablename = a.attrelid::regclass::text join (select unnest(indkey) attnum, indexrelid from pg_index i) atts on atts.attnum = a.attnum where schemaname != 'pg_catalog'; -- -- Test LATERAL -- select unique2, x.* from tenk1 a, lateral (select * from int4_tbl b where f1 = a.unique1) x; explain (costs off) select unique2, x.* from tenk1 a, lateral (select * from int4_tbl b where f1 = a.unique1) x; select unique2, x.* from int4_tbl x, lateral (select unique2 from tenk1 where f1 = unique1) ss; explain (costs off) select unique2, x.* from int4_tbl x, lateral (select unique2 from tenk1 where f1 = unique1) ss; explain (costs off) select unique2, x.* from int4_tbl x cross join lateral (select unique2 from tenk1 where f1 = unique1) ss; select unique2, x.* from int4_tbl x left join lateral (select unique1, unique2 from tenk1 where f1 = unique1) ss on true; explain (costs off) select unique2, x.* from int4_tbl x left join lateral (select unique1, unique2 from tenk1 where f1 = unique1) ss on true; -- check scoping of lateral versus parent references -- the first of these should return int8_tbl.q2, the second int8_tbl.q1 select *, (select r from (select q1 as q2) x, (select q2 as r) y) from int8_tbl; select *, (select r from (select q1 as q2) x, lateral (select q2 as r) y) from int8_tbl; -- lateral with function in FROM select count(*) from tenk1 a, lateral generate_series(1,two) g; explain (costs off) select count(*) from tenk1 a, lateral generate_series(1,two) g; explain (costs off) select count(*) from tenk1 a cross join lateral generate_series(1,two) g; -- don't need the explicit LATERAL keyword for functions explain (costs off) select count(*) from tenk1 a, generate_series(1,two) g; -- lateral with UNION ALL subselect explain (costs off) select * from generate_series(100,200) g, lateral (select * from int8_tbl a where g = q1 union all select * from int8_tbl b where g = q2) ss; select * from generate_series(100,200) g, lateral (select * from int8_tbl a where g = q1 union all select * from int8_tbl b where g = q2) ss; -- lateral with VALUES explain (costs off) select count(*) from tenk1 a, tenk1 b join lateral (values(a.unique1)) ss(x) on b.unique2 = ss.x; select count(*) from tenk1 a, tenk1 b join lateral (values(a.unique1)) ss(x) on b.unique2 = ss.x; -- lateral with VALUES, no flattening possible explain (costs off) select count(*) from tenk1 a, tenk1 b join lateral (values(a.unique1),(-1)) ss(x) on b.unique2 = ss.x; select count(*) from tenk1 a, tenk1 b join lateral (values(a.unique1),(-1)) ss(x) on b.unique2 = ss.x; -- lateral injecting a strange outer join condition explain (costs off) select * from int8_tbl a, int8_tbl x left join lateral (select a.q1 from int4_tbl y) ss(z) on x.q2 = ss.z order by a.q1, a.q2, x.q1, x.q2, ss.z; select * from int8_tbl a, int8_tbl x left join lateral (select a.q1 from int4_tbl y) ss(z) on x.q2 = ss.z order by a.q1, a.q2, x.q1, x.q2, ss.z; -- lateral reference to a join alias variable select * from (select f1/2 as x from int4_tbl) ss1 join int4_tbl i4 on x = f1, lateral (select x) ss2(y); select * from (select f1 as x from int4_tbl) ss1 join int4_tbl i4 on x = f1, lateral (values(x)) ss2(y); select * from ((select f1/2 as x from int4_tbl) ss1 join int4_tbl i4 on x = f1) j, lateral (select x) ss2(y); -- lateral references requiring pullup select * from (values(1)) x(lb), lateral generate_series(lb,4) x4; select * from (select f1/1000000000 from int4_tbl) x(lb), lateral generate_series(lb,4) x4; select * from (values(1)) x(lb), lateral (values(lb)) y(lbcopy); select * from (values(1)) x(lb), lateral (select lb from int4_tbl) y(lbcopy); select * from int8_tbl x left join (select q1,coalesce(q2,0) q2 from int8_tbl) y on x.q2 = y.q1, lateral (values(x.q1,y.q1,y.q2)) v(xq1,yq1,yq2); select * from int8_tbl x left join (select q1,coalesce(q2,0) q2 from int8_tbl) y on x.q2 = y.q1, lateral (select x.q1,y.q1,y.q2) v(xq1,yq1,yq2); select x.* from int8_tbl x left join (select q1,coalesce(q2,0) q2 from int8_tbl) y on x.q2 = y.q1, lateral (select x.q1,y.q1,y.q2) v(xq1,yq1,yq2); select v.* from (int8_tbl x left join (select q1,coalesce(q2,0) q2 from int8_tbl) y on x.q2 = y.q1) left join int4_tbl z on z.f1 = x.q2, lateral (select x.q1,y.q1 union all select x.q2,y.q2) v(vx,vy); select v.* from (int8_tbl x left join (select q1,(select coalesce(q2,0)) q2 from int8_tbl) y on x.q2 = y.q1) left join int4_tbl z on z.f1 = x.q2, lateral (select x.q1,y.q1 union all select x.q2,y.q2) v(vx,vy); select v.* from (int8_tbl x left join (select q1,(select coalesce(q2,0)) q2 from int8_tbl) y on x.q2 = y.q1) left join int4_tbl z on z.f1 = x.q2, lateral (select x.q1,y.q1 from onerow union all select x.q2,y.q2 from onerow) v(vx,vy); explain (verbose, costs off) select * from int8_tbl a left join lateral (select *, a.q2 as x from int8_tbl b) ss on a.q2 = ss.q1; select * from int8_tbl a left join lateral (select *, a.q2 as x from int8_tbl b) ss on a.q2 = ss.q1; explain (verbose, costs off) select * from int8_tbl a left join lateral (select *, coalesce(a.q2, 42) as x from int8_tbl b) ss on a.q2 = ss.q1; select * from int8_tbl a left join lateral (select *, coalesce(a.q2, 42) as x from int8_tbl b) ss on a.q2 = ss.q1; -- lateral can result in join conditions appearing below their -- real semantic level explain (verbose, costs off) select * from int4_tbl i left join lateral (select * from int2_tbl j where i.f1 = j.f1) k on true; select * from int4_tbl i left join lateral (select * from int2_tbl j where i.f1 = j.f1) k on true; explain (verbose, costs off) select * from int4_tbl i left join lateral (select coalesce(i) from int2_tbl j where i.f1 = j.f1) k on true; select * from int4_tbl i left join lateral (select coalesce(i) from int2_tbl j where i.f1 = j.f1) k on true; explain (verbose, costs off) select * from int4_tbl a, lateral ( select * from int4_tbl b left join int8_tbl c on (b.f1 = q1 and a.f1 = q2) ) ss; select * from int4_tbl a, lateral ( select * from int4_tbl b left join int8_tbl c on (b.f1 = q1 and a.f1 = q2) ) ss; -- lateral reference in a PlaceHolderVar evaluated at join level explain (verbose, costs off) select * from int8_tbl a left join lateral (select b.q1 as bq1, c.q1 as cq1, least(a.q1,b.q1,c.q1) from int8_tbl b cross join int8_tbl c) ss on a.q2 = ss.bq1; select * from int8_tbl a left join lateral (select b.q1 as bq1, c.q1 as cq1, least(a.q1,b.q1,c.q1) from int8_tbl b cross join int8_tbl c) ss on a.q2 = ss.bq1; -- case requiring nested PlaceHolderVars explain (verbose, costs off) select * from int8_tbl c left join ( int8_tbl a left join (select q1, coalesce(q2,42) as x from int8_tbl b) ss1 on a.q2 = ss1.q1 cross join lateral (select q1, coalesce(ss1.x,q2) as y from int8_tbl d) ss2 ) on c.q2 = ss2.q1, lateral (select ss2.y offset 0) ss3; -- case that breaks the old ph_may_need optimization explain (verbose, costs off) select c.*,a.*,ss1.q1,ss2.q1,ss3.* from int8_tbl c left join ( int8_tbl a left join (select q1, coalesce(q2,f1) as x from int8_tbl b, int4_tbl b2 where q1 < f1) ss1 on a.q2 = ss1.q1 cross join lateral (select q1, coalesce(ss1.x,q2) as y from int8_tbl d) ss2 ) on c.q2 = ss2.q1, lateral (select * from int4_tbl i where ss2.y > f1) ss3; -- check processing of postponed quals (bug #9041) explain (verbose, costs off) select * from (select 1 as x offset 0) x cross join (select 2 as y offset 0) y left join lateral ( select * from (select 3 as z offset 0) z where z.z = x.x ) zz on zz.z = y.y; -- check dummy rels with lateral references (bug #15694) explain (verbose, costs off) select * from int8_tbl i8 left join lateral (select *, i8.q2 from int4_tbl where false) ss on true; explain (verbose, costs off) select * from int8_tbl i8 left join lateral (select *, i8.q2 from int4_tbl i1, int4_tbl i2 where false) ss on true; -- check handling of nested appendrels inside LATERAL select * from ((select 2 as v) union all (select 3 as v)) as q1 cross join lateral ((select * from ((select 4 as v) union all (select 5 as v)) as q3) union all (select q1.v) ) as q2; -- check we don't try to do a unique-ified semijoin with LATERAL explain (verbose, costs off) select * from (values (0,9998), (1,1000)) v(id,x), lateral (select f1 from int4_tbl where f1 = any (select unique1 from tenk1 where unique2 = v.x offset 0)) ss; select * from (values (0,9998), (1,1000)) v(id,x), lateral (select f1 from int4_tbl where f1 = any (select unique1 from tenk1 where unique2 = v.x offset 0)) ss; -- check proper extParam/allParam handling (this isn't exactly a LATERAL issue, -- but we can make the test case much more compact with LATERAL) explain (verbose, costs off) select * from (values (0), (1)) v(id), lateral (select * from int8_tbl t1, lateral (select * from (select * from int8_tbl t2 where q1 = any (select q2 from int8_tbl t3 where q2 = (select greatest(t1.q1,t2.q2)) and (select v.id=0)) offset 0) ss2) ss where t1.q1 = ss.q2) ss0; select * from (values (0), (1)) v(id), lateral (select * from int8_tbl t1, lateral (select * from (select * from int8_tbl t2 where q1 = any (select q2 from int8_tbl t3 where q2 = (select greatest(t1.q1,t2.q2)) and (select v.id=0)) offset 0) ss2) ss where t1.q1 = ss.q2) ss0; -- test some error cases where LATERAL should have been used but wasn't select f1,g from int4_tbl a, (select f1 as g) ss; select f1,g from int4_tbl a, (select a.f1 as g) ss; select f1,g from int4_tbl a cross join (select f1 as g) ss; select f1,g from int4_tbl a cross join (select a.f1 as g) ss; -- SQL:2008 says the left table is in scope but illegal to access here select f1,g from int4_tbl a right join lateral generate_series(0, a.f1) g on true; select f1,g from int4_tbl a full join lateral generate_series(0, a.f1) g on true; -- check we complain about ambiguous table references select * from int8_tbl x cross join (int4_tbl x cross join lateral (select x.f1) ss); -- LATERAL can be used to put an aggregate into the FROM clause of its query select 1 from tenk1 a, lateral (select max(a.unique1) from int4_tbl b) ss; -- check behavior of LATERAL in UPDATE/DELETE create temp table xx1 as select f1 as x1, -f1 as x2 from int4_tbl; -- error, can't do this: update xx1 set x2 = f1 from (select * from int4_tbl where f1 = x1) ss; update xx1 set x2 = f1 from (select * from int4_tbl where f1 = xx1.x1) ss; -- can't do it even with LATERAL: update xx1 set x2 = f1 from lateral (select * from int4_tbl where f1 = x1) ss; -- we might in future allow something like this, but for now it's an error: update xx1 set x2 = f1 from xx1, lateral (select * from int4_tbl where f1 = x1) ss; -- also errors: delete from xx1 using (select * from int4_tbl where f1 = x1) ss; delete from xx1 using (select * from int4_tbl where f1 = xx1.x1) ss; delete from xx1 using lateral (select * from int4_tbl where f1 = x1) ss; -- -- test LATERAL reference propagation down a multi-level inheritance hierarchy -- produced for a multi-level partitioned table hierarchy. -- create table join_pt1 (a int, b int, c varchar) partition by range(a); create table join_pt1p1 partition of join_pt1 for values from (0) to (100) partition by range(b); create table join_pt1p2 partition of join_pt1 for values from (100) to (200); create table join_pt1p1p1 partition of join_pt1p1 for values from (0) to (100); insert into join_pt1 values (1, 1, 'x'), (101, 101, 'y'); create table join_ut1 (a int, b int, c varchar); insert into join_ut1 values (101, 101, 'y'), (2, 2, 'z'); explain (verbose, costs off) select t1.b, ss.phv from join_ut1 t1 left join lateral (select t2.a as t2a, t3.a t3a, least(t1.a, t2.a, t3.a) phv from join_pt1 t2 join join_ut1 t3 on t2.a = t3.b) ss on t1.a = ss.t2a order by t1.a; select t1.b, ss.phv from join_ut1 t1 left join lateral (select t2.a as t2a, t3.a t3a, least(t1.a, t2.a, t3.a) phv from join_pt1 t2 join join_ut1 t3 on t2.a = t3.b) ss on t1.a = ss.t2a order by t1.a; drop table join_pt1; drop table join_ut1; -- -- test that foreign key join estimation performs sanely for outer joins -- begin; create table fkest (a int, b int, c int unique, primary key(a,b)); create table fkest1 (a int, b int, primary key(a,b)); insert into fkest select x/10, x%10, x from generate_series(1,1000) x; insert into fkest1 select x/10, x%10 from generate_series(1,1000) x; alter table fkest1 add constraint fkest1_a_b_fkey foreign key (a,b) references fkest; analyze fkest; analyze fkest1; explain (costs off) select * from fkest f left join fkest1 f1 on f.a = f1.a and f.b = f1.b left join fkest1 f2 on f.a = f2.a and f.b = f2.b left join fkest1 f3 on f.a = f3.a and f.b = f3.b where f.c = 1; rollback; -- -- test planner's ability to mark joins as unique -- create table j1 (id int primary key); create table j2 (id int primary key); create table j3 (id int); insert into j1 values(1),(2),(3); insert into j2 values(1),(2),(3); insert into j3 values(1),(1); analyze j1; analyze j2; analyze j3; -- ensure join is properly marked as unique explain (verbose, costs off) select * from j1 inner join j2 on j1.id = j2.id; -- ensure join is not unique when not an equi-join explain (verbose, costs off) select * from j1 inner join j2 on j1.id > j2.id; -- ensure non-unique rel is not chosen as inner explain (verbose, costs off) select * from j1 inner join j3 on j1.id = j3.id; -- ensure left join is marked as unique explain (verbose, costs off) select * from j1 left join j2 on j1.id = j2.id; -- ensure right join is marked as unique explain (verbose, costs off) select * from j1 right join j2 on j1.id = j2.id; -- ensure full join is marked as unique explain (verbose, costs off) select * from j1 full join j2 on j1.id = j2.id; -- a clauseless (cross) join can't be unique explain (verbose, costs off) select * from j1 cross join j2; -- ensure a natural join is marked as unique explain (verbose, costs off) select * from j1 natural join j2; -- ensure a distinct clause allows the inner to become unique explain (verbose, costs off) select * from j1 inner join (select distinct id from j3) j3 on j1.id = j3.id; -- ensure group by clause allows the inner to become unique explain (verbose, costs off) select * from j1 inner join (select id from j3 group by id) j3 on j1.id = j3.id; drop table j1; drop table j2; drop table j3; -- test more complex permutations of unique joins create table j1 (id1 int, id2 int, primary key(id1,id2)); create table j2 (id1 int, id2 int, primary key(id1,id2)); create table j3 (id1 int, id2 int, primary key(id1,id2)); insert into j1 values(1,1),(1,2); insert into j2 values(1,1); insert into j3 values(1,1); analyze j1; analyze j2; analyze j3; -- ensure there's no unique join when not all columns which are part of the -- unique index are seen in the join clause explain (verbose, costs off) select * from j1 inner join j2 on j1.id1 = j2.id1; -- ensure proper unique detection with multiple join quals explain (verbose, costs off) select * from j1 inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2; -- ensure we don't detect the join to be unique when quals are not part of the -- join condition explain (verbose, costs off) select * from j1 inner join j2 on j1.id1 = j2.id1 where j1.id2 = 1; -- as above, but for left joins. explain (verbose, costs off) select * from j1 left join j2 on j1.id1 = j2.id1 where j1.id2 = 1; -- validate logic in merge joins which skips mark and restore. -- it should only do this if all quals which were used to detect the unique -- are present as join quals, and not plain quals. set enable_nestloop to 0; set enable_hashjoin to 0; set enable_sort to 0; -- create indexes that will be preferred over the PKs to perform the join create index j1_id1_idx on j1 (id1) where id1 % 1000 = 1; create index j2_id1_idx on j2 (id1) where id1 % 1000 = 1; -- need an additional row in j2, if we want j2_id1_idx to be preferred insert into j2 values(1,2); analyze j2; explain (costs off) select * from j1 inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2 where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1; select * from j1 inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2 where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1; -- Exercise array keys mark/restore B-Tree code explain (costs off) select * from j1 inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2 where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 = any (array[1]); select * from j1 inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2 where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 = any (array[1]); -- Exercise array keys "find extreme element" B-Tree code explain (costs off) select * from j1 inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2 where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 >= any (array[1,5]); select * from j1 inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2 where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 >= any (array[1,5]); reset enable_nestloop; reset enable_hashjoin; reset enable_sort; drop table j1; drop table j2; drop table j3; -- check that semijoin inner is not seen as unique for a portion of the outerrel explain (verbose, costs off) select t1.unique1, t2.hundred from onek t1, tenk1 t2 where exists (select 1 from tenk1 t3 where t3.thousand = t1.unique1 and t3.tenthous = t2.hundred) and t1.unique1 < 1; -- ... unless it actually is unique create table j3 as select unique1, tenthous from onek; vacuum analyze j3; create unique index on j3(unique1, tenthous); explain (verbose, costs off) select t1.unique1, t2.hundred from onek t1, tenk1 t2 where exists (select 1 from j3 where j3.unique1 = t1.unique1 and j3.tenthous = t2.hundred) and t1.unique1 < 1; drop table j3; libpg_query-13-2.1.0/test/sql/postgres_regress/join_hash.sql000066400000000000000000000462401413137616400241320ustar00rootroot00000000000000-- -- exercises for the hash join code -- begin; set local min_parallel_table_scan_size = 0; set local parallel_setup_cost = 0; set local enable_hashjoin = on; -- Extract bucket and batch counts from an explain analyze plan. In -- general we can't make assertions about how many batches (or -- buckets) will be required because it can vary, but we can in some -- special cases and we can check for growth. create or replace function find_hash(node json) returns json language plpgsql as $$ declare x json; child json; begin if node->>'Node Type' = 'Hash' then return node; else for child in select json_array_elements(node->'Plans') loop x := find_hash(child); if x is not null then return x; end if; end loop; return null; end if; end; $$; create or replace function hash_join_batches(query text) returns table (original int, final int) language plpgsql as $$ declare whole_plan json; hash_node json; begin for whole_plan in execute 'explain (analyze, format ''json'') ' || query loop hash_node := find_hash(json_extract_path(whole_plan, '0', 'Plan')); original := hash_node->>'Original Hash Batches'; final := hash_node->>'Hash Batches'; return next; end loop; end; $$; -- Make a simple relation with well distributed keys and correctly -- estimated size. create table simple as select generate_series(1, 20000) AS id, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; alter table simple set (parallel_workers = 2); analyze simple; -- Make a relation whose size we will under-estimate. We want stats -- to say 1000 rows, but actually there are 20,000 rows. create table bigger_than_it_looks as select generate_series(1, 20000) as id, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; alter table bigger_than_it_looks set (autovacuum_enabled = 'false'); alter table bigger_than_it_looks set (parallel_workers = 2); analyze bigger_than_it_looks; update pg_class set reltuples = 1000 where relname = 'bigger_than_it_looks'; -- Make a relation whose size we underestimate and that also has a -- kind of skew that breaks our batching scheme. We want stats to say -- 2 rows, but actually there are 20,000 rows with the same key. create table extremely_skewed (id int, t text); alter table extremely_skewed set (autovacuum_enabled = 'false'); alter table extremely_skewed set (parallel_workers = 2); analyze extremely_skewed; insert into extremely_skewed select 42 as id, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' from generate_series(1, 20000); update pg_class set reltuples = 2, relpages = pg_relation_size('extremely_skewed') / 8192 where relname = 'extremely_skewed'; -- Make a relation with a couple of enormous tuples. create table wide as select generate_series(1, 2) as id, rpad('', 320000, 'x') as t; alter table wide set (parallel_workers = 2); -- The "optimal" case: the hash table fits in memory; we plan for 1 -- batch, we stick to that number, and peak memory usage stays within -- our work_mem budget -- non-parallel savepoint settings; set local max_parallel_workers_per_gather = 0; set local work_mem = '4MB'; explain (costs off) select count(*) from simple r join simple s using (id); select count(*) from simple r join simple s using (id); select original > 1 as initially_multibatch, final > original as increased_batches from hash_join_batches( $$ select count(*) from simple r join simple s using (id); $$); rollback to settings; -- parallel with parallel-oblivious hash join savepoint settings; set local max_parallel_workers_per_gather = 2; set local work_mem = '4MB'; set local enable_parallel_hash = off; explain (costs off) select count(*) from simple r join simple s using (id); select count(*) from simple r join simple s using (id); select original > 1 as initially_multibatch, final > original as increased_batches from hash_join_batches( $$ select count(*) from simple r join simple s using (id); $$); rollback to settings; -- parallel with parallel-aware hash join savepoint settings; set local max_parallel_workers_per_gather = 2; set local work_mem = '4MB'; set local enable_parallel_hash = on; explain (costs off) select count(*) from simple r join simple s using (id); select count(*) from simple r join simple s using (id); select original > 1 as initially_multibatch, final > original as increased_batches from hash_join_batches( $$ select count(*) from simple r join simple s using (id); $$); rollback to settings; -- The "good" case: batches required, but we plan the right number; we -- plan for some number of batches, and we stick to that number, and -- peak memory usage says within our work_mem budget -- non-parallel savepoint settings; set local max_parallel_workers_per_gather = 0; set local work_mem = '128kB'; explain (costs off) select count(*) from simple r join simple s using (id); select count(*) from simple r join simple s using (id); select original > 1 as initially_multibatch, final > original as increased_batches from hash_join_batches( $$ select count(*) from simple r join simple s using (id); $$); rollback to settings; -- parallel with parallel-oblivious hash join savepoint settings; set local max_parallel_workers_per_gather = 2; set local work_mem = '128kB'; set local enable_parallel_hash = off; explain (costs off) select count(*) from simple r join simple s using (id); select count(*) from simple r join simple s using (id); select original > 1 as initially_multibatch, final > original as increased_batches from hash_join_batches( $$ select count(*) from simple r join simple s using (id); $$); rollback to settings; -- parallel with parallel-aware hash join savepoint settings; set local max_parallel_workers_per_gather = 2; set local work_mem = '192kB'; set local enable_parallel_hash = on; explain (costs off) select count(*) from simple r join simple s using (id); select count(*) from simple r join simple s using (id); select original > 1 as initially_multibatch, final > original as increased_batches from hash_join_batches( $$ select count(*) from simple r join simple s using (id); $$); rollback to settings; -- The "bad" case: during execution we need to increase number of -- batches; in this case we plan for 1 batch, and increase at least a -- couple of times, and peak memory usage stays within our work_mem -- budget -- non-parallel savepoint settings; set local max_parallel_workers_per_gather = 0; set local work_mem = '128kB'; explain (costs off) select count(*) FROM simple r JOIN bigger_than_it_looks s USING (id); select count(*) FROM simple r JOIN bigger_than_it_looks s USING (id); select original > 1 as initially_multibatch, final > original as increased_batches from hash_join_batches( $$ select count(*) FROM simple r JOIN bigger_than_it_looks s USING (id); $$); rollback to settings; -- parallel with parallel-oblivious hash join savepoint settings; set local max_parallel_workers_per_gather = 2; set local work_mem = '128kB'; set local enable_parallel_hash = off; explain (costs off) select count(*) from simple r join bigger_than_it_looks s using (id); select count(*) from simple r join bigger_than_it_looks s using (id); select original > 1 as initially_multibatch, final > original as increased_batches from hash_join_batches( $$ select count(*) from simple r join bigger_than_it_looks s using (id); $$); rollback to settings; -- parallel with parallel-aware hash join savepoint settings; set local max_parallel_workers_per_gather = 1; set local work_mem = '192kB'; set local enable_parallel_hash = on; explain (costs off) select count(*) from simple r join bigger_than_it_looks s using (id); select count(*) from simple r join bigger_than_it_looks s using (id); select original > 1 as initially_multibatch, final > original as increased_batches from hash_join_batches( $$ select count(*) from simple r join bigger_than_it_looks s using (id); $$); rollback to settings; -- The "ugly" case: increasing the number of batches during execution -- doesn't help, so stop trying to fit in work_mem and hope for the -- best; in this case we plan for 1 batch, increases just once and -- then stop increasing because that didn't help at all, so we blow -- right through the work_mem budget and hope for the best... -- non-parallel savepoint settings; set local max_parallel_workers_per_gather = 0; set local work_mem = '128kB'; explain (costs off) select count(*) from simple r join extremely_skewed s using (id); select count(*) from simple r join extremely_skewed s using (id); select * from hash_join_batches( $$ select count(*) from simple r join extremely_skewed s using (id); $$); rollback to settings; -- parallel with parallel-oblivious hash join savepoint settings; set local max_parallel_workers_per_gather = 2; set local work_mem = '128kB'; set local enable_parallel_hash = off; explain (costs off) select count(*) from simple r join extremely_skewed s using (id); select count(*) from simple r join extremely_skewed s using (id); select * from hash_join_batches( $$ select count(*) from simple r join extremely_skewed s using (id); $$); rollback to settings; -- parallel with parallel-aware hash join savepoint settings; set local max_parallel_workers_per_gather = 1; set local work_mem = '128kB'; set local enable_parallel_hash = on; explain (costs off) select count(*) from simple r join extremely_skewed s using (id); select count(*) from simple r join extremely_skewed s using (id); select * from hash_join_batches( $$ select count(*) from simple r join extremely_skewed s using (id); $$); rollback to settings; -- A couple of other hash join tests unrelated to work_mem management. -- Check that EXPLAIN ANALYZE has data even if the leader doesn't participate savepoint settings; set local max_parallel_workers_per_gather = 2; set local work_mem = '4MB'; set local parallel_leader_participation = off; select * from hash_join_batches( $$ select count(*) from simple r join simple s using (id); $$); rollback to settings; -- Exercise rescans. We'll turn off parallel_leader_participation so -- that we can check that instrumentation comes back correctly. create table join_foo as select generate_series(1, 3) as id, 'xxxxx'::text as t; alter table join_foo set (parallel_workers = 0); create table join_bar as select generate_series(1, 10000) as id, 'xxxxx'::text as t; alter table join_bar set (parallel_workers = 2); -- multi-batch with rescan, parallel-oblivious savepoint settings; set enable_parallel_hash = off; set parallel_leader_participation = off; set min_parallel_table_scan_size = 0; set parallel_setup_cost = 0; set parallel_tuple_cost = 0; set max_parallel_workers_per_gather = 2; set enable_material = off; set enable_mergejoin = off; set work_mem = '64kB'; explain (costs off) select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; select final > 1 as multibatch from hash_join_batches( $$ select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; $$); rollback to settings; -- single-batch with rescan, parallel-oblivious savepoint settings; set enable_parallel_hash = off; set parallel_leader_participation = off; set min_parallel_table_scan_size = 0; set parallel_setup_cost = 0; set parallel_tuple_cost = 0; set max_parallel_workers_per_gather = 2; set enable_material = off; set enable_mergejoin = off; set work_mem = '4MB'; explain (costs off) select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; select final > 1 as multibatch from hash_join_batches( $$ select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; $$); rollback to settings; -- multi-batch with rescan, parallel-aware savepoint settings; set enable_parallel_hash = on; set parallel_leader_participation = off; set min_parallel_table_scan_size = 0; set parallel_setup_cost = 0; set parallel_tuple_cost = 0; set max_parallel_workers_per_gather = 2; set enable_material = off; set enable_mergejoin = off; set work_mem = '64kB'; explain (costs off) select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; select final > 1 as multibatch from hash_join_batches( $$ select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; $$); rollback to settings; -- single-batch with rescan, parallel-aware savepoint settings; set enable_parallel_hash = on; set parallel_leader_participation = off; set min_parallel_table_scan_size = 0; set parallel_setup_cost = 0; set parallel_tuple_cost = 0; set max_parallel_workers_per_gather = 2; set enable_material = off; set enable_mergejoin = off; set work_mem = '4MB'; explain (costs off) select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; select final > 1 as multibatch from hash_join_batches( $$ select count(*) from join_foo left join (select b1.id, b1.t from join_bar b1 join join_bar b2 using (id)) ss on join_foo.id < ss.id + 1 and join_foo.id > ss.id - 1; $$); rollback to settings; -- A full outer join where every record is matched. -- non-parallel savepoint settings; set local max_parallel_workers_per_gather = 0; explain (costs off) select count(*) from simple r full outer join simple s using (id); select count(*) from simple r full outer join simple s using (id); rollback to settings; -- parallelism not possible with parallel-oblivious outer hash join savepoint settings; set local max_parallel_workers_per_gather = 2; explain (costs off) select count(*) from simple r full outer join simple s using (id); select count(*) from simple r full outer join simple s using (id); rollback to settings; -- An full outer join where every record is not matched. -- non-parallel savepoint settings; set local max_parallel_workers_per_gather = 0; explain (costs off) select count(*) from simple r full outer join simple s on (r.id = 0 - s.id); select count(*) from simple r full outer join simple s on (r.id = 0 - s.id); rollback to settings; -- parallelism not possible with parallel-oblivious outer hash join savepoint settings; set local max_parallel_workers_per_gather = 2; explain (costs off) select count(*) from simple r full outer join simple s on (r.id = 0 - s.id); select count(*) from simple r full outer join simple s on (r.id = 0 - s.id); rollback to settings; -- exercise special code paths for huge tuples (note use of non-strict -- expression and left join required to get the detoasted tuple into -- the hash table) -- parallel with parallel-aware hash join (hits ExecParallelHashLoadTuple and -- sts_puttuple oversized tuple cases because it's multi-batch) savepoint settings; set max_parallel_workers_per_gather = 2; set enable_parallel_hash = on; set work_mem = '128kB'; explain (costs off) select length(max(s.t)) from wide left join (select id, coalesce(t, '') || '' as t from wide) s using (id); select length(max(s.t)) from wide left join (select id, coalesce(t, '') || '' as t from wide) s using (id); select final > 1 as multibatch from hash_join_batches( $$ select length(max(s.t)) from wide left join (select id, coalesce(t, '') || '' as t from wide) s using (id); $$); rollback to settings; rollback; -- Verify that hash key expressions reference the correct -- nodes. Hashjoin's hashkeys need to reference its outer plan, Hash's -- need to reference Hash's outer plan (which is below HashJoin's -- inner plan). It's not trivial to verify that the references are -- correct (we don't display the hashkeys themselves), but if the -- hashkeys contain subplan references, those will be displayed. Force -- subplans to appear just about everywhere. -- -- Bug report: -- https://www.postgresql.org/message-id/CAPpHfdvGVegF_TKKRiBrSmatJL2dR9uwFCuR%2BteQ_8tEXU8mxg%40mail.gmail.com -- BEGIN; SET LOCAL enable_sort = OFF; -- avoid mergejoins SET LOCAL from_collapse_limit = 1; -- allows easy changing of join order CREATE TABLE hjtest_1 (a text, b int, id int, c bool); CREATE TABLE hjtest_2 (a bool, id int, b text, c int); INSERT INTO hjtest_1(a, b, id, c) VALUES ('text', 2, 1, false); -- matches INSERT INTO hjtest_1(a, b, id, c) VALUES ('text', 1, 2, false); -- fails id join condition INSERT INTO hjtest_1(a, b, id, c) VALUES ('text', 20, 1, false); -- fails < 50 INSERT INTO hjtest_1(a, b, id, c) VALUES ('text', 1, 1, false); -- fails (SELECT hjtest_1.b * 5) = (SELECT hjtest_2.c*5) INSERT INTO hjtest_2(a, id, b, c) VALUES (true, 1, 'another', 2); -- matches INSERT INTO hjtest_2(a, id, b, c) VALUES (true, 3, 'another', 7); -- fails id join condition INSERT INTO hjtest_2(a, id, b, c) VALUES (true, 1, 'another', 90); -- fails < 55 INSERT INTO hjtest_2(a, id, b, c) VALUES (true, 1, 'another', 3); -- fails (SELECT hjtest_1.b * 5) = (SELECT hjtest_2.c*5) INSERT INTO hjtest_2(a, id, b, c) VALUES (true, 1, 'text', 1); -- fails hjtest_1.a <> hjtest_2.b; EXPLAIN (COSTS OFF, VERBOSE) SELECT hjtest_1.a a1, hjtest_2.a a2,hjtest_1.tableoid::regclass t1, hjtest_2.tableoid::regclass t2 FROM hjtest_1, hjtest_2 WHERE hjtest_1.id = (SELECT 1 WHERE hjtest_2.id = 1) AND (SELECT hjtest_1.b * 5) = (SELECT hjtest_2.c*5) AND (SELECT hjtest_1.b * 5) < 50 AND (SELECT hjtest_2.c * 5) < 55 AND hjtest_1.a <> hjtest_2.b; SELECT hjtest_1.a a1, hjtest_2.a a2,hjtest_1.tableoid::regclass t1, hjtest_2.tableoid::regclass t2 FROM hjtest_1, hjtest_2 WHERE hjtest_1.id = (SELECT 1 WHERE hjtest_2.id = 1) AND (SELECT hjtest_1.b * 5) = (SELECT hjtest_2.c*5) AND (SELECT hjtest_1.b * 5) < 50 AND (SELECT hjtest_2.c * 5) < 55 AND hjtest_1.a <> hjtest_2.b; EXPLAIN (COSTS OFF, VERBOSE) SELECT hjtest_1.a a1, hjtest_2.a a2,hjtest_1.tableoid::regclass t1, hjtest_2.tableoid::regclass t2 FROM hjtest_2, hjtest_1 WHERE hjtest_1.id = (SELECT 1 WHERE hjtest_2.id = 1) AND (SELECT hjtest_1.b * 5) = (SELECT hjtest_2.c*5) AND (SELECT hjtest_1.b * 5) < 50 AND (SELECT hjtest_2.c * 5) < 55 AND hjtest_1.a <> hjtest_2.b; SELECT hjtest_1.a a1, hjtest_2.a a2,hjtest_1.tableoid::regclass t1, hjtest_2.tableoid::regclass t2 FROM hjtest_2, hjtest_1 WHERE hjtest_1.id = (SELECT 1 WHERE hjtest_2.id = 1) AND (SELECT hjtest_1.b * 5) = (SELECT hjtest_2.c*5) AND (SELECT hjtest_1.b * 5) < 50 AND (SELECT hjtest_2.c * 5) < 55 AND hjtest_1.a <> hjtest_2.b; ROLLBACK; libpg_query-13-2.1.0/test/sql/postgres_regress/json.sql000066400000000000000000001050421413137616400231350ustar00rootroot00000000000000-- Strings. SELECT '""'::json; -- OK. SELECT $$''$$::json; -- ERROR, single quotes are not allowed SELECT '"abc"'::json; -- OK SELECT '"abc'::json; -- ERROR, quotes not closed SELECT '"abc def"'::json; -- ERROR, unescaped newline in string constant SELECT '"\n\"\\"'::json; -- OK, legal escapes SELECT '"\v"'::json; -- ERROR, not a valid JSON escape -- see json_encoding test for input with unicode escapes -- Numbers. SELECT '1'::json; -- OK SELECT '0'::json; -- OK SELECT '01'::json; -- ERROR, not valid according to JSON spec SELECT '0.1'::json; -- OK SELECT '9223372036854775808'::json; -- OK, even though it's too large for int8 SELECT '1e100'::json; -- OK SELECT '1.3e100'::json; -- OK SELECT '1f2'::json; -- ERROR SELECT '0.x1'::json; -- ERROR SELECT '1.3ex100'::json; -- ERROR -- Arrays. SELECT '[]'::json; -- OK SELECT '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]'::json; -- OK SELECT '[1,2]'::json; -- OK SELECT '[1,2,]'::json; -- ERROR, trailing comma SELECT '[1,2'::json; -- ERROR, no closing bracket SELECT '[1,[2]'::json; -- ERROR, no closing bracket -- Objects. SELECT '{}'::json; -- OK SELECT '{"abc"}'::json; -- ERROR, no value SELECT '{"abc":1}'::json; -- OK SELECT '{1:"abc"}'::json; -- ERROR, keys must be strings SELECT '{"abc",1}'::json; -- ERROR, wrong separator SELECT '{"abc"=1}'::json; -- ERROR, totally wrong separator SELECT '{"abc"::1}'::json; -- ERROR, another wrong separator SELECT '{"abc":1,"def":2,"ghi":[3,4],"hij":{"klm":5,"nop":[6]}}'::json; -- OK SELECT '{"abc":1:2}'::json; -- ERROR, colon in wrong spot SELECT '{"abc":1,3}'::json; -- ERROR, no value -- Recursion. SET max_stack_depth = '100kB'; SELECT repeat('[', 10000)::json; SELECT repeat('{"a":', 10000)::json; RESET max_stack_depth; -- Miscellaneous stuff. SELECT 'true'::json; -- OK SELECT 'false'::json; -- OK SELECT 'null'::json; -- OK SELECT ' true '::json; -- OK, even with extra whitespace SELECT 'true false'::json; -- ERROR, too many values SELECT 'true, false'::json; -- ERROR, too many values SELECT 'truf'::json; -- ERROR, not a keyword SELECT 'trues'::json; -- ERROR, not a keyword SELECT ''::json; -- ERROR, no value SELECT ' '::json; -- ERROR, no value --constructors -- array_to_json SELECT array_to_json(array(select 1 as a)); SELECT array_to_json(array_agg(q),false) from (select x as b, x * 2 as c from generate_series(1,3) x) q; SELECT array_to_json(array_agg(q),true) from (select x as b, x * 2 as c from generate_series(1,3) x) q; SELECT array_to_json(array_agg(q),false) FROM ( SELECT $$a$$ || x AS b, y AS c, ARRAY[ROW(x.*,ARRAY[1,2,3]), ROW(y.*,ARRAY[4,5,6])] AS z FROM generate_series(1,2) x, generate_series(4,5) y) q; SELECT array_to_json(array_agg(x),false) from generate_series(5,10) x; SELECT array_to_json('{{1,5},{99,100}}'::int[]); -- row_to_json SELECT row_to_json(row(1,'foo')); SELECT row_to_json(q) FROM (SELECT $$a$$ || x AS b, y AS c, ARRAY[ROW(x.*,ARRAY[1,2,3]), ROW(y.*,ARRAY[4,5,6])] AS z FROM generate_series(1,2) x, generate_series(4,5) y) q; SELECT row_to_json(q,true) FROM (SELECT $$a$$ || x AS b, y AS c, ARRAY[ROW(x.*,ARRAY[1,2,3]), ROW(y.*,ARRAY[4,5,6])] AS z FROM generate_series(1,2) x, generate_series(4,5) y) q; CREATE TEMP TABLE rows AS SELECT x, 'txt' || x as y FROM generate_series(1,3) AS x; SELECT row_to_json(q,true) FROM rows q; SELECT row_to_json(row((select array_agg(x) as d from generate_series(5,10) x)),false); -- anyarray column analyze rows; select attname, to_json(histogram_bounds) histogram_bounds from pg_stats where tablename = 'rows' and schemaname = pg_my_temp_schema()::regnamespace::text order by 1; -- to_json, timestamps select to_json(timestamp '2014-05-28 12:22:35.614298'); BEGIN; SET LOCAL TIME ZONE 10.5; select to_json(timestamptz '2014-05-28 12:22:35.614298-04'); SET LOCAL TIME ZONE -8; select to_json(timestamptz '2014-05-28 12:22:35.614298-04'); COMMIT; select to_json(date '2014-05-28'); select to_json(date 'Infinity'); select to_json(date '-Infinity'); select to_json(timestamp 'Infinity'); select to_json(timestamp '-Infinity'); select to_json(timestamptz 'Infinity'); select to_json(timestamptz '-Infinity'); --json_agg SELECT json_agg(q) FROM ( SELECT $$a$$ || x AS b, y AS c, ARRAY[ROW(x.*,ARRAY[1,2,3]), ROW(y.*,ARRAY[4,5,6])] AS z FROM generate_series(1,2) x, generate_series(4,5) y) q; SELECT json_agg(q ORDER BY x, y) FROM rows q; UPDATE rows SET x = NULL WHERE x = 1; SELECT json_agg(q ORDER BY x NULLS FIRST, y) FROM rows q; -- non-numeric output SELECT row_to_json(q) FROM (SELECT 'NaN'::float8 AS "float8field") q; SELECT row_to_json(q) FROM (SELECT 'Infinity'::float8 AS "float8field") q; SELECT row_to_json(q) FROM (SELECT '-Infinity'::float8 AS "float8field") q; -- json input SELECT row_to_json(q) FROM (SELECT '{"a":1,"b": [2,3,4,"d","e","f"],"c":{"p":1,"q":2}}'::json AS "jsonfield") q; -- json extraction functions CREATE TEMP TABLE test_json ( json_type text, test_json json ); INSERT INTO test_json VALUES ('scalar','"a scalar"'), ('array','["zero", "one","two",null,"four","five", [1,2,3],{"f1":9}]'), ('object','{"field1":"val1","field2":"val2","field3":null, "field4": 4, "field5": [1,2,3], "field6": {"f1":9}}'); SELECT test_json -> 'x' FROM test_json WHERE json_type = 'scalar'; SELECT test_json -> 'x' FROM test_json WHERE json_type = 'array'; SELECT test_json -> 'x' FROM test_json WHERE json_type = 'object'; SELECT test_json->'field2' FROM test_json WHERE json_type = 'object'; SELECT test_json->>'field2' FROM test_json WHERE json_type = 'object'; SELECT test_json -> 2 FROM test_json WHERE json_type = 'scalar'; SELECT test_json -> 2 FROM test_json WHERE json_type = 'array'; SELECT test_json -> -1 FROM test_json WHERE json_type = 'array'; SELECT test_json -> 2 FROM test_json WHERE json_type = 'object'; SELECT test_json->>2 FROM test_json WHERE json_type = 'array'; SELECT test_json ->> 6 FROM test_json WHERE json_type = 'array'; SELECT test_json ->> 7 FROM test_json WHERE json_type = 'array'; SELECT test_json ->> 'field4' FROM test_json WHERE json_type = 'object'; SELECT test_json ->> 'field5' FROM test_json WHERE json_type = 'object'; SELECT test_json ->> 'field6' FROM test_json WHERE json_type = 'object'; SELECT json_object_keys(test_json) FROM test_json WHERE json_type = 'scalar'; SELECT json_object_keys(test_json) FROM test_json WHERE json_type = 'array'; SELECT json_object_keys(test_json) FROM test_json WHERE json_type = 'object'; -- test extending object_keys resultset - initial resultset size is 256 select count(*) from (select json_object_keys(json_object(array_agg(g))) from (select unnest(array['f'||n,n::text])as g from generate_series(1,300) as n) x ) y; -- nulls select (test_json->'field3') is null as expect_false from test_json where json_type = 'object'; select (test_json->>'field3') is null as expect_true from test_json where json_type = 'object'; select (test_json->3) is null as expect_false from test_json where json_type = 'array'; select (test_json->>3) is null as expect_true from test_json where json_type = 'array'; -- corner cases select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json -> null::text; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json -> null::int; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json -> 1; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json -> -1; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json -> 'z'; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json -> ''; select '[{"b": "c"}, {"b": "cc"}]'::json -> 1; select '[{"b": "c"}, {"b": "cc"}]'::json -> 3; select '[{"b": "c"}, {"b": "cc"}]'::json -> 'z'; select '{"a": "c", "b": null}'::json -> 'b'; select '"foo"'::json -> 1; select '"foo"'::json -> 'z'; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json ->> null::text; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json ->> null::int; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json ->> 1; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json ->> 'z'; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json ->> ''; select '[{"b": "c"}, {"b": "cc"}]'::json ->> 1; select '[{"b": "c"}, {"b": "cc"}]'::json ->> 3; select '[{"b": "c"}, {"b": "cc"}]'::json ->> 'z'; select '{"a": "c", "b": null}'::json ->> 'b'; select '"foo"'::json ->> 1; select '"foo"'::json ->> 'z'; -- array length SELECT json_array_length('[1,2,3,{"f1":1,"f2":[5,6]},4]'); SELECT json_array_length('[]'); SELECT json_array_length('{"f1":1,"f2":[5,6]}'); SELECT json_array_length('4'); -- each select json_each('{"f1":[1,2,3],"f2":{"f3":1},"f4":null}'); select * from json_each('{"f1":[1,2,3],"f2":{"f3":1},"f4":null,"f5":99,"f6":"stringy"}') q; select json_each_text('{"f1":[1,2,3],"f2":{"f3":1},"f4":null,"f5":"null"}'); select * from json_each_text('{"f1":[1,2,3],"f2":{"f3":1},"f4":null,"f5":99,"f6":"stringy"}') q; -- extract_path, extract_path_as_text select json_extract_path('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}','f4','f6'); select json_extract_path('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}','f2'); select json_extract_path('{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}','f2',0::text); select json_extract_path('{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}','f2',1::text); select json_extract_path_text('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}','f4','f6'); select json_extract_path_text('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}','f2'); select json_extract_path_text('{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}','f2',0::text); select json_extract_path_text('{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}','f2',1::text); -- extract_path nulls select json_extract_path('{"f2":{"f3":1},"f4":{"f5":null,"f6":"stringy"}}','f4','f5') is null as expect_false; select json_extract_path_text('{"f2":{"f3":1},"f4":{"f5":null,"f6":"stringy"}}','f4','f5') is null as expect_true; select json_extract_path('{"f2":{"f3":1},"f4":[0,1,2,null]}','f4','3') is null as expect_false; select json_extract_path_text('{"f2":{"f3":1},"f4":[0,1,2,null]}','f4','3') is null as expect_true; -- extract_path operators select '{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}'::json#>array['f4','f6']; select '{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}'::json#>array['f2']; select '{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}'::json#>array['f2','0']; select '{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}'::json#>array['f2','1']; select '{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}'::json#>>array['f4','f6']; select '{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}'::json#>>array['f2']; select '{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}'::json#>>array['f2','0']; select '{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}'::json#>>array['f2','1']; -- corner cases for same select '{"a": {"b":{"c": "foo"}}}'::json #> '{}'; select '[1,2,3]'::json #> '{}'; select '"foo"'::json #> '{}'; select '42'::json #> '{}'; select 'null'::json #> '{}'; select '{"a": {"b":{"c": "foo"}}}'::json #> array['a']; select '{"a": {"b":{"c": "foo"}}}'::json #> array['a', null]; select '{"a": {"b":{"c": "foo"}}}'::json #> array['a', '']; select '{"a": {"b":{"c": "foo"}}}'::json #> array['a','b']; select '{"a": {"b":{"c": "foo"}}}'::json #> array['a','b','c']; select '{"a": {"b":{"c": "foo"}}}'::json #> array['a','b','c','d']; select '{"a": {"b":{"c": "foo"}}}'::json #> array['a','z','c']; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json #> array['a','1','b']; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json #> array['a','z','b']; select '[{"b": "c"}, {"b": "cc"}]'::json #> array['1','b']; select '[{"b": "c"}, {"b": "cc"}]'::json #> array['z','b']; select '[{"b": "c"}, {"b": null}]'::json #> array['1','b']; select '"foo"'::json #> array['z']; select '42'::json #> array['f2']; select '42'::json #> array['0']; select '{"a": {"b":{"c": "foo"}}}'::json #>> '{}'; select '[1,2,3]'::json #>> '{}'; select '"foo"'::json #>> '{}'; select '42'::json #>> '{}'; select 'null'::json #>> '{}'; select '{"a": {"b":{"c": "foo"}}}'::json #>> array['a']; select '{"a": {"b":{"c": "foo"}}}'::json #>> array['a', null]; select '{"a": {"b":{"c": "foo"}}}'::json #>> array['a', '']; select '{"a": {"b":{"c": "foo"}}}'::json #>> array['a','b']; select '{"a": {"b":{"c": "foo"}}}'::json #>> array['a','b','c']; select '{"a": {"b":{"c": "foo"}}}'::json #>> array['a','b','c','d']; select '{"a": {"b":{"c": "foo"}}}'::json #>> array['a','z','c']; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json #>> array['a','1','b']; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::json #>> array['a','z','b']; select '[{"b": "c"}, {"b": "cc"}]'::json #>> array['1','b']; select '[{"b": "c"}, {"b": "cc"}]'::json #>> array['z','b']; select '[{"b": "c"}, {"b": null}]'::json #>> array['1','b']; select '"foo"'::json #>> array['z']; select '42'::json #>> array['f2']; select '42'::json #>> array['0']; -- array_elements select json_array_elements('[1,true,[1,[2,3]],null,{"f1":1,"f2":[7,8,9]},false,"stringy"]'); select * from json_array_elements('[1,true,[1,[2,3]],null,{"f1":1,"f2":[7,8,9]},false,"stringy"]') q; select json_array_elements_text('[1,true,[1,[2,3]],null,{"f1":1,"f2":[7,8,9]},false,"stringy"]'); select * from json_array_elements_text('[1,true,[1,[2,3]],null,{"f1":1,"f2":[7,8,9]},false,"stringy"]') q; -- populate_record create type jpop as (a text, b int, c timestamp); CREATE DOMAIN js_int_not_null AS int NOT NULL; CREATE DOMAIN js_int_array_1d AS int[] CHECK(array_length(VALUE, 1) = 3); CREATE DOMAIN js_int_array_2d AS int[][] CHECK(array_length(VALUE, 2) = 3); create type j_unordered_pair as (x int, y int); create domain j_ordered_pair as j_unordered_pair check((value).x <= (value).y); CREATE TYPE jsrec AS ( i int, ia _int4, ia1 int[], ia2 int[][], ia3 int[][][], ia1d js_int_array_1d, ia2d js_int_array_2d, t text, ta text[], c char(10), ca char(10)[], ts timestamp, js json, jsb jsonb, jsa json[], rec jpop, reca jpop[] ); CREATE TYPE jsrec_i_not_null AS ( i js_int_not_null ); select * from json_populate_record(null::jpop,'{"a":"blurfl","x":43.2}') q; select * from json_populate_record(row('x',3,'2012-12-31 15:30:56')::jpop,'{"a":"blurfl","x":43.2}') q; select * from json_populate_record(null::jpop,'{"a":"blurfl","x":43.2}') q; select * from json_populate_record(row('x',3,'2012-12-31 15:30:56')::jpop,'{"a":"blurfl","x":43.2}') q; select * from json_populate_record(null::jpop,'{"a":[100,200,false],"x":43.2}') q; select * from json_populate_record(row('x',3,'2012-12-31 15:30:56')::jpop,'{"a":[100,200,false],"x":43.2}') q; select * from json_populate_record(row('x',3,'2012-12-31 15:30:56')::jpop,'{"c":[100,200,false],"x":43.2}') q; select * from json_populate_record(row('x',3,'2012-12-31 15:30:56')::jpop,'{}') q; SELECT i FROM json_populate_record(NULL::jsrec_i_not_null, '{"x": 43.2}') q; SELECT i FROM json_populate_record(NULL::jsrec_i_not_null, '{"i": null}') q; SELECT i FROM json_populate_record(NULL::jsrec_i_not_null, '{"i": 12345}') q; SELECT ia FROM json_populate_record(NULL::jsrec, '{"ia": null}') q; SELECT ia FROM json_populate_record(NULL::jsrec, '{"ia": 123}') q; SELECT ia FROM json_populate_record(NULL::jsrec, '{"ia": [1, "2", null, 4]}') q; SELECT ia FROM json_populate_record(NULL::jsrec, '{"ia": [[1, 2], [3, 4]]}') q; SELECT ia FROM json_populate_record(NULL::jsrec, '{"ia": [[1], 2]}') q; SELECT ia FROM json_populate_record(NULL::jsrec, '{"ia": [[1], [2, 3]]}') q; SELECT ia FROM json_populate_record(NULL::jsrec, '{"ia": "{1,2,3}"}') q; SELECT ia1 FROM json_populate_record(NULL::jsrec, '{"ia1": null}') q; SELECT ia1 FROM json_populate_record(NULL::jsrec, '{"ia1": 123}') q; SELECT ia1 FROM json_populate_record(NULL::jsrec, '{"ia1": [1, "2", null, 4]}') q; SELECT ia1 FROM json_populate_record(NULL::jsrec, '{"ia1": [[1, 2, 3]]}') q; SELECT ia1d FROM json_populate_record(NULL::jsrec, '{"ia1d": null}') q; SELECT ia1d FROM json_populate_record(NULL::jsrec, '{"ia1d": 123}') q; SELECT ia1d FROM json_populate_record(NULL::jsrec, '{"ia1d": [1, "2", null, 4]}') q; SELECT ia1d FROM json_populate_record(NULL::jsrec, '{"ia1d": [1, "2", null]}') q; SELECT ia2 FROM json_populate_record(NULL::jsrec, '{"ia2": [1, "2", null, 4]}') q; SELECT ia2 FROM json_populate_record(NULL::jsrec, '{"ia2": [[1, 2], [null, 4]]}') q; SELECT ia2 FROM json_populate_record(NULL::jsrec, '{"ia2": [[], []]}') q; SELECT ia2 FROM json_populate_record(NULL::jsrec, '{"ia2": [[1, 2], [3]]}') q; SELECT ia2 FROM json_populate_record(NULL::jsrec, '{"ia2": [[1, 2], 3, 4]}') q; SELECT ia2d FROM json_populate_record(NULL::jsrec, '{"ia2d": [[1, "2"], [null, 4]]}') q; SELECT ia2d FROM json_populate_record(NULL::jsrec, '{"ia2d": [[1, "2", 3], [null, 5, 6]]}') q; SELECT ia3 FROM json_populate_record(NULL::jsrec, '{"ia3": [1, "2", null, 4]}') q; SELECT ia3 FROM json_populate_record(NULL::jsrec, '{"ia3": [[1, 2], [null, 4]]}') q; SELECT ia3 FROM json_populate_record(NULL::jsrec, '{"ia3": [ [[], []], [[], []], [[], []] ]}') q; SELECT ia3 FROM json_populate_record(NULL::jsrec, '{"ia3": [ [[1, 2]], [[3, 4]] ]}') q; SELECT ia3 FROM json_populate_record(NULL::jsrec, '{"ia3": [ [[1, 2], [3, 4]], [[5, 6], [7, 8]] ]}') q; SELECT ia3 FROM json_populate_record(NULL::jsrec, '{"ia3": [ [[1, 2], [3, 4]], [[5, 6], [7, 8], [9, 10]] ]}') q; SELECT ta FROM json_populate_record(NULL::jsrec, '{"ta": null}') q; SELECT ta FROM json_populate_record(NULL::jsrec, '{"ta": 123}') q; SELECT ta FROM json_populate_record(NULL::jsrec, '{"ta": [1, "2", null, 4]}') q; SELECT ta FROM json_populate_record(NULL::jsrec, '{"ta": [[1, 2, 3], {"k": "v"}]}') q; SELECT c FROM json_populate_record(NULL::jsrec, '{"c": null}') q; SELECT c FROM json_populate_record(NULL::jsrec, '{"c": "aaa"}') q; SELECT c FROM json_populate_record(NULL::jsrec, '{"c": "aaaaaaaaaa"}') q; SELECT c FROM json_populate_record(NULL::jsrec, '{"c": "aaaaaaaaaaaaa"}') q; SELECT ca FROM json_populate_record(NULL::jsrec, '{"ca": null}') q; SELECT ca FROM json_populate_record(NULL::jsrec, '{"ca": 123}') q; SELECT ca FROM json_populate_record(NULL::jsrec, '{"ca": [1, "2", null, 4]}') q; SELECT ca FROM json_populate_record(NULL::jsrec, '{"ca": ["aaaaaaaaaaaaaaaa"]}') q; SELECT ca FROM json_populate_record(NULL::jsrec, '{"ca": [[1, 2, 3], {"k": "v"}]}') q; SELECT js FROM json_populate_record(NULL::jsrec, '{"js": null}') q; SELECT js FROM json_populate_record(NULL::jsrec, '{"js": true}') q; SELECT js FROM json_populate_record(NULL::jsrec, '{"js": 123.45}') q; SELECT js FROM json_populate_record(NULL::jsrec, '{"js": "123.45"}') q; SELECT js FROM json_populate_record(NULL::jsrec, '{"js": "abc"}') q; SELECT js FROM json_populate_record(NULL::jsrec, '{"js": [123, "123", null, {"key": "value"}]}') q; SELECT js FROM json_populate_record(NULL::jsrec, '{"js": {"a": "bbb", "b": null, "c": 123.45}}') q; SELECT jsb FROM json_populate_record(NULL::jsrec, '{"jsb": null}') q; SELECT jsb FROM json_populate_record(NULL::jsrec, '{"jsb": true}') q; SELECT jsb FROM json_populate_record(NULL::jsrec, '{"jsb": 123.45}') q; SELECT jsb FROM json_populate_record(NULL::jsrec, '{"jsb": "123.45"}') q; SELECT jsb FROM json_populate_record(NULL::jsrec, '{"jsb": "abc"}') q; SELECT jsb FROM json_populate_record(NULL::jsrec, '{"jsb": [123, "123", null, {"key": "value"}]}') q; SELECT jsb FROM json_populate_record(NULL::jsrec, '{"jsb": {"a": "bbb", "b": null, "c": 123.45}}') q; SELECT jsa FROM json_populate_record(NULL::jsrec, '{"jsa": null}') q; SELECT jsa FROM json_populate_record(NULL::jsrec, '{"jsa": 123}') q; SELECT jsa FROM json_populate_record(NULL::jsrec, '{"jsa": [1, "2", null, 4]}') q; SELECT jsa FROM json_populate_record(NULL::jsrec, '{"jsa": ["aaa", null, [1, 2, "3", {}], { "k" : "v" }]}') q; SELECT rec FROM json_populate_record(NULL::jsrec, '{"rec": 123}') q; SELECT rec FROM json_populate_record(NULL::jsrec, '{"rec": [1, 2]}') q; SELECT rec FROM json_populate_record(NULL::jsrec, '{"rec": {"a": "abc", "c": "01.02.2003", "x": 43.2}}') q; SELECT rec FROM json_populate_record(NULL::jsrec, '{"rec": "(abc,42,01.02.2003)"}') q; SELECT reca FROM json_populate_record(NULL::jsrec, '{"reca": 123}') q; SELECT reca FROM json_populate_record(NULL::jsrec, '{"reca": [1, 2]}') q; SELECT reca FROM json_populate_record(NULL::jsrec, '{"reca": [{"a": "abc", "b": 456}, null, {"c": "01.02.2003", "x": 43.2}]}') q; SELECT reca FROM json_populate_record(NULL::jsrec, '{"reca": ["(abc,42,01.02.2003)"]}') q; SELECT reca FROM json_populate_record(NULL::jsrec, '{"reca": "{\"(abc,42,01.02.2003)\"}"}') q; SELECT rec FROM json_populate_record( row(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, row('x',3,'2012-12-31 15:30:56')::jpop,NULL)::jsrec, '{"rec": {"a": "abc", "c": "01.02.2003", "x": 43.2}}' ) q; -- anonymous record type SELECT json_populate_record(null::record, '{"x": 0, "y": 1}'); SELECT json_populate_record(row(1,2), '{"f1": 0, "f2": 1}'); SELECT * FROM json_populate_record(null::record, '{"x": 776}') AS (x int, y int); -- composite domain SELECT json_populate_record(null::j_ordered_pair, '{"x": 0, "y": 1}'); SELECT json_populate_record(row(1,2)::j_ordered_pair, '{"x": 0}'); SELECT json_populate_record(row(1,2)::j_ordered_pair, '{"x": 1, "y": 0}'); -- populate_recordset select * from json_populate_recordset(null::jpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; select * from json_populate_recordset(row('def',99,null)::jpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; select * from json_populate_recordset(null::jpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; select * from json_populate_recordset(row('def',99,null)::jpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; select * from json_populate_recordset(row('def',99,null)::jpop,'[{"a":[100,200,300],"x":43.2},{"a":{"z":true},"b":3,"c":"2012-01-20 10:42:53"}]') q; select * from json_populate_recordset(row('def',99,null)::jpop,'[{"c":[100,200,300],"x":43.2},{"a":{"z":true},"b":3,"c":"2012-01-20 10:42:53"}]') q; create type jpop2 as (a int, b json, c int, d int); select * from json_populate_recordset(null::jpop2, '[{"a":2,"c":3,"b":{"z":4},"d":6}]') q; select * from json_populate_recordset(null::jpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; select * from json_populate_recordset(row('def',99,null)::jpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; select * from json_populate_recordset(row('def',99,null)::jpop,'[{"a":[100,200,300],"x":43.2},{"a":{"z":true},"b":3,"c":"2012-01-20 10:42:53"}]') q; -- anonymous record type SELECT json_populate_recordset(null::record, '[{"x": 0, "y": 1}]'); SELECT json_populate_recordset(row(1,2), '[{"f1": 0, "f2": 1}]'); SELECT i, json_populate_recordset(row(i,50), '[{"f1":"42"},{"f2":"43"}]') FROM (VALUES (1),(2)) v(i); SELECT * FROM json_populate_recordset(null::record, '[{"x": 776}]') AS (x int, y int); -- empty array is a corner case SELECT json_populate_recordset(null::record, '[]'); SELECT json_populate_recordset(row(1,2), '[]'); SELECT * FROM json_populate_recordset(NULL::jpop,'[]') q; SELECT * FROM json_populate_recordset(null::record, '[]') AS (x int, y int); -- composite domain SELECT json_populate_recordset(null::j_ordered_pair, '[{"x": 0, "y": 1}]'); SELECT json_populate_recordset(row(1,2)::j_ordered_pair, '[{"x": 0}, {"y": 3}]'); SELECT json_populate_recordset(row(1,2)::j_ordered_pair, '[{"x": 1, "y": 0}]'); -- negative cases where the wrong record type is supplied select * from json_populate_recordset(row(0::int),'[{"a":"1","b":"2"},{"a":"3"}]') q (a text, b text); select * from json_populate_recordset(row(0::int,0::int),'[{"a":"1","b":"2"},{"a":"3"}]') q (a text, b text); select * from json_populate_recordset(row(0::int,0::int,0::int),'[{"a":"1","b":"2"},{"a":"3"}]') q (a text, b text); select * from json_populate_recordset(row(1000000000::int,50::int),'[{"b":"2"},{"a":"3"}]') q (a text, b text); -- test type info caching in json_populate_record() CREATE TEMP TABLE jspoptest (js json); INSERT INTO jspoptest SELECT '{ "jsa": [1, "2", null, 4], "rec": {"a": "abc", "c": "01.02.2003", "x": 43.2}, "reca": [{"a": "abc", "b": 456}, null, {"c": "01.02.2003", "x": 43.2}] }'::json FROM generate_series(1, 3); SELECT (json_populate_record(NULL::jsrec, js)).* FROM jspoptest; DROP TYPE jsrec; DROP TYPE jsrec_i_not_null; DROP DOMAIN js_int_not_null; DROP DOMAIN js_int_array_1d; DROP DOMAIN js_int_array_2d; DROP DOMAIN j_ordered_pair; DROP TYPE j_unordered_pair; --json_typeof() function select value, json_typeof(value) from (values (json '123.4'), (json '-1'), (json '"foo"'), (json 'true'), (json 'false'), (json 'null'), (json '[1, 2, 3]'), (json '[]'), (json '{"x":"foo", "y":123}'), (json '{}'), (NULL::json)) as data(value); -- json_build_array, json_build_object, json_object_agg SELECT json_build_array('a',1,'b',1.2,'c',true,'d',null,'e',json '{"x": 3, "y": [1,2,3]}'); SELECT json_build_array('a', NULL); -- ok SELECT json_build_array(VARIADIC NULL::text[]); -- ok SELECT json_build_array(VARIADIC '{}'::text[]); -- ok SELECT json_build_array(VARIADIC '{a,b,c}'::text[]); -- ok SELECT json_build_array(VARIADIC ARRAY['a', NULL]::text[]); -- ok SELECT json_build_array(VARIADIC '{1,2,3,4}'::text[]); -- ok SELECT json_build_array(VARIADIC '{1,2,3,4}'::int[]); -- ok SELECT json_build_array(VARIADIC '{{1,4},{2,5},{3,6}}'::int[][]); -- ok SELECT json_build_object('a',1,'b',1.2,'c',true,'d',null,'e',json '{"x": 3, "y": [1,2,3]}'); SELECT json_build_object( 'a', json_build_object('b',false,'c',99), 'd', json_build_object('e',array[9,8,7]::int[], 'f', (select row_to_json(r) from ( select relkind, oid::regclass as name from pg_class where relname = 'pg_class') r))); SELECT json_build_object('{a,b,c}'::text[]); -- error SELECT json_build_object('{a,b,c}'::text[], '{d,e,f}'::text[]); -- error, key cannot be array SELECT json_build_object('a', 'b', 'c'); -- error SELECT json_build_object(NULL, 'a'); -- error, key cannot be NULL SELECT json_build_object('a', NULL); -- ok SELECT json_build_object(VARIADIC NULL::text[]); -- ok SELECT json_build_object(VARIADIC '{}'::text[]); -- ok SELECT json_build_object(VARIADIC '{a,b,c}'::text[]); -- error SELECT json_build_object(VARIADIC ARRAY['a', NULL]::text[]); -- ok SELECT json_build_object(VARIADIC ARRAY[NULL, 'a']::text[]); -- error, key cannot be NULL SELECT json_build_object(VARIADIC '{1,2,3,4}'::text[]); -- ok SELECT json_build_object(VARIADIC '{1,2,3,4}'::int[]); -- ok SELECT json_build_object(VARIADIC '{{1,4},{2,5},{3,6}}'::int[][]); -- ok -- empty objects/arrays SELECT json_build_array(); SELECT json_build_object(); -- make sure keys are quoted SELECT json_build_object(1,2); -- keys must be scalar and not null SELECT json_build_object(null,2); SELECT json_build_object(r,2) FROM (SELECT 1 AS a, 2 AS b) r; SELECT json_build_object(json '{"a":1,"b":2}', 3); SELECT json_build_object('{1,2,3}'::int[], 3); CREATE TEMP TABLE foo (serial_num int, name text, type text); INSERT INTO foo VALUES (847001,'t15','GE1043'); INSERT INTO foo VALUES (847002,'t16','GE1043'); INSERT INTO foo VALUES (847003,'sub-alpha','GESS90'); SELECT json_build_object('turbines',json_object_agg(serial_num,json_build_object('name',name,'type',type))) FROM foo; SELECT json_object_agg(name, type) FROM foo; INSERT INTO foo VALUES (999999, NULL, 'bar'); SELECT json_object_agg(name, type) FROM foo; -- json_object -- empty object, one dimension SELECT json_object('{}'); -- empty object, two dimensions SELECT json_object('{}', '{}'); -- one dimension SELECT json_object('{a,1,b,2,3,NULL,"d e f","a b c"}'); -- same but with two dimensions SELECT json_object('{{a,1},{b,2},{3,NULL},{"d e f","a b c"}}'); -- odd number error SELECT json_object('{a,b,c}'); -- one column error SELECT json_object('{{a},{b}}'); -- too many columns error SELECT json_object('{{a,b,c},{b,c,d}}'); -- too many dimensions error SELECT json_object('{{{a,b},{c,d}},{{b,c},{d,e}}}'); --two argument form of json_object select json_object('{a,b,c,"d e f"}','{1,2,3,"a b c"}'); -- too many dimensions SELECT json_object('{{a,1},{b,2},{3,NULL},{"d e f","a b c"}}', '{{a,1},{b,2},{3,NULL},{"d e f","a b c"}}'); -- mismatched dimensions select json_object('{a,b,c,"d e f",g}','{1,2,3,"a b c"}'); select json_object('{a,b,c,"d e f"}','{1,2,3,"a b c",g}'); -- null key error select json_object('{a,b,NULL,"d e f"}','{1,2,3,"a b c"}'); -- empty key is allowed select json_object('{a,b,"","d e f"}','{1,2,3,"a b c"}'); -- json_to_record and json_to_recordset select * from json_to_record('{"a":1,"b":"foo","c":"bar"}') as x(a int, b text, d text); select * from json_to_recordset('[{"a":1,"b":"foo","d":false},{"a":2,"b":"bar","c":true}]') as x(a int, b text, c boolean); select * from json_to_recordset('[{"a":1,"b":{"d":"foo"},"c":true},{"a":2,"c":false,"b":{"d":"bar"}}]') as x(a int, b json, c boolean); select *, c is null as c_is_null from json_to_record('{"a":1, "b":{"c":16, "d":2}, "x":8, "ca": ["1 2", 3], "ia": [[1,2],[3,4]], "r": {"a": "aaa", "b": 123}}'::json) as t(a int, b json, c text, x int, ca char(5)[], ia int[][], r jpop); select *, c is null as c_is_null from json_to_recordset('[{"a":1, "b":{"c":16, "d":2}, "x":8}]'::json) as t(a int, b json, c text, x int); select * from json_to_record('{"ia": null}') as x(ia _int4); select * from json_to_record('{"ia": 123}') as x(ia _int4); select * from json_to_record('{"ia": [1, "2", null, 4]}') as x(ia _int4); select * from json_to_record('{"ia": [[1, 2], [3, 4]]}') as x(ia _int4); select * from json_to_record('{"ia": [[1], 2]}') as x(ia _int4); select * from json_to_record('{"ia": [[1], [2, 3]]}') as x(ia _int4); select * from json_to_record('{"ia2": [1, 2, 3]}') as x(ia2 int[][]); select * from json_to_record('{"ia2": [[1, 2], [3, 4]]}') as x(ia2 int4[][]); select * from json_to_record('{"ia2": [[[1], [2], [3]]]}') as x(ia2 int4[][]); select * from json_to_record('{"out": {"key": 1}}') as x(out json); select * from json_to_record('{"out": [{"key": 1}]}') as x(out json); select * from json_to_record('{"out": "{\"key\": 1}"}') as x(out json); select * from json_to_record('{"out": {"key": 1}}') as x(out jsonb); select * from json_to_record('{"out": [{"key": 1}]}') as x(out jsonb); select * from json_to_record('{"out": "{\"key\": 1}"}') as x(out jsonb); -- json_strip_nulls select json_strip_nulls(null); select json_strip_nulls('1'); select json_strip_nulls('"a string"'); select json_strip_nulls('null'); select json_strip_nulls('[1,2,null,3,4]'); select json_strip_nulls('{"a":1,"b":null,"c":[2,null,3],"d":{"e":4,"f":null}}'); select json_strip_nulls('[1,{"a":1,"b":null,"c":2},3]'); -- an empty object is not null and should not be stripped select json_strip_nulls('{"a": {"b": null, "c": null}, "d": {} }'); -- json to tsvector select to_tsvector('{"a": "aaa bbb ddd ccc", "b": ["eee fff ggg"], "c": {"d": "hhh iii"}}'::json); -- json to tsvector with config select to_tsvector('simple', '{"a": "aaa bbb ddd ccc", "b": ["eee fff ggg"], "c": {"d": "hhh iii"}}'::json); -- json to tsvector with stop words select to_tsvector('english', '{"a": "aaa in bbb ddd ccc", "b": ["the eee fff ggg"], "c": {"d": "hhh. iii"}}'::json); -- json to tsvector with numeric values select to_tsvector('english', '{"a": "aaa in bbb ddd ccc", "b": 123, "c": 456}'::json); -- json_to_tsvector select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '"all"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '"key"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '"string"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '"numeric"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '"boolean"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '["string", "numeric"]'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '"all"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '"key"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '"string"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '"numeric"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '"boolean"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '["string", "numeric"]'); -- to_tsvector corner cases select to_tsvector('""'::json); select to_tsvector('{}'::json); select to_tsvector('[]'::json); select to_tsvector('null'::json); -- json_to_tsvector corner cases select json_to_tsvector('""'::json, '"all"'); select json_to_tsvector('{}'::json, '"all"'); select json_to_tsvector('[]'::json, '"all"'); select json_to_tsvector('null'::json, '"all"'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '""'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '{}'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '[]'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, 'null'); select json_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::json, '["all", null]'); -- ts_headline for json select ts_headline('{"a": "aaa bbb", "b": {"c": "ccc ddd fff", "c1": "ccc1 ddd1"}, "d": ["ggg hhh", "iii jjj"]}'::json, tsquery('bbb & ddd & hhh')); select ts_headline('english', '{"a": "aaa bbb", "b": {"c": "ccc ddd fff"}, "d": ["ggg hhh", "iii jjj"]}'::json, tsquery('bbb & ddd & hhh')); select ts_headline('{"a": "aaa bbb", "b": {"c": "ccc ddd fff", "c1": "ccc1 ddd1"}, "d": ["ggg hhh", "iii jjj"]}'::json, tsquery('bbb & ddd & hhh'), 'StartSel = <, StopSel = >'); select ts_headline('english', '{"a": "aaa bbb", "b": {"c": "ccc ddd fff", "c1": "ccc1 ddd1"}, "d": ["ggg hhh", "iii jjj"]}'::json, tsquery('bbb & ddd & hhh'), 'StartSel = <, StopSel = >'); -- corner cases for ts_headline with json select ts_headline('null'::json, tsquery('aaa & bbb')); select ts_headline('{}'::json, tsquery('aaa & bbb')); select ts_headline('[]'::json, tsquery('aaa & bbb')); libpg_query-13-2.1.0/test/sql/postgres_regress/json_encoding.sql000066400000000000000000000066601413137616400250110ustar00rootroot00000000000000-- -- encoding-sensitive tests for json and jsonb -- -- We provide expected-results files for UTF8 (json_encoding.out) -- and for SQL_ASCII (json_encoding_1.out). Skip otherwise. SELECT getdatabaseencoding() NOT IN ('UTF8', 'SQL_ASCII') AS skip_test \gset \if :skip_test \quit \endif SELECT getdatabaseencoding(); -- just to label the results files -- first json -- basic unicode input SELECT '"\u"'::json; -- ERROR, incomplete escape SELECT '"\u00"'::json; -- ERROR, incomplete escape SELECT '"\u000g"'::json; -- ERROR, g is not a hex digit SELECT '"\u0000"'::json; -- OK, legal escape SELECT '"\uaBcD"'::json; -- OK, uppercase and lower case both OK -- handling of unicode surrogate pairs select json '{ "a": "\ud83d\ude04\ud83d\udc36" }' -> 'a' as correct_in_utf8; select json '{ "a": "\ud83d\ud83d" }' -> 'a'; -- 2 high surrogates in a row select json '{ "a": "\ude04\ud83d" }' -> 'a'; -- surrogates in wrong order select json '{ "a": "\ud83dX" }' -> 'a'; -- orphan high surrogate select json '{ "a": "\ude04X" }' -> 'a'; -- orphan low surrogate --handling of simple unicode escapes select json '{ "a": "the Copyright \u00a9 sign" }' as correct_in_utf8; select json '{ "a": "dollar \u0024 character" }' as correct_everywhere; select json '{ "a": "dollar \\u0024 character" }' as not_an_escape; select json '{ "a": "null \u0000 escape" }' as not_unescaped; select json '{ "a": "null \\u0000 escape" }' as not_an_escape; select json '{ "a": "the Copyright \u00a9 sign" }' ->> 'a' as correct_in_utf8; select json '{ "a": "dollar \u0024 character" }' ->> 'a' as correct_everywhere; select json '{ "a": "dollar \\u0024 character" }' ->> 'a' as not_an_escape; select json '{ "a": "null \u0000 escape" }' ->> 'a' as fails; select json '{ "a": "null \\u0000 escape" }' ->> 'a' as not_an_escape; -- then jsonb -- basic unicode input SELECT '"\u"'::jsonb; -- ERROR, incomplete escape SELECT '"\u00"'::jsonb; -- ERROR, incomplete escape SELECT '"\u000g"'::jsonb; -- ERROR, g is not a hex digit SELECT '"\u0045"'::jsonb; -- OK, legal escape SELECT '"\u0000"'::jsonb; -- ERROR, we don't support U+0000 -- use octet_length here so we don't get an odd unicode char in the -- output SELECT octet_length('"\uaBcD"'::jsonb::text); -- OK, uppercase and lower case both OK -- handling of unicode surrogate pairs SELECT octet_length((jsonb '{ "a": "\ud83d\ude04\ud83d\udc36" }' -> 'a')::text) AS correct_in_utf8; SELECT jsonb '{ "a": "\ud83d\ud83d" }' -> 'a'; -- 2 high surrogates in a row SELECT jsonb '{ "a": "\ude04\ud83d" }' -> 'a'; -- surrogates in wrong order SELECT jsonb '{ "a": "\ud83dX" }' -> 'a'; -- orphan high surrogate SELECT jsonb '{ "a": "\ude04X" }' -> 'a'; -- orphan low surrogate -- handling of simple unicode escapes SELECT jsonb '{ "a": "the Copyright \u00a9 sign" }' as correct_in_utf8; SELECT jsonb '{ "a": "dollar \u0024 character" }' as correct_everywhere; SELECT jsonb '{ "a": "dollar \\u0024 character" }' as not_an_escape; SELECT jsonb '{ "a": "null \u0000 escape" }' as fails; SELECT jsonb '{ "a": "null \\u0000 escape" }' as not_an_escape; SELECT jsonb '{ "a": "the Copyright \u00a9 sign" }' ->> 'a' as correct_in_utf8; SELECT jsonb '{ "a": "dollar \u0024 character" }' ->> 'a' as correct_everywhere; SELECT jsonb '{ "a": "dollar \\u0024 character" }' ->> 'a' as not_an_escape; SELECT jsonb '{ "a": "null \u0000 escape" }' ->> 'a' as fails; SELECT jsonb '{ "a": "null \\u0000 escape" }' ->> 'a' as not_an_escape; libpg_query-13-2.1.0/test/sql/postgres_regress/jsonb.sql000066400000000000000000001732361413137616400233110ustar00rootroot00000000000000-- Strings. SELECT '""'::jsonb; -- OK. SELECT $$''$$::jsonb; -- ERROR, single quotes are not allowed SELECT '"abc"'::jsonb; -- OK SELECT '"abc'::jsonb; -- ERROR, quotes not closed SELECT '"abc def"'::jsonb; -- ERROR, unescaped newline in string constant SELECT '"\n\"\\"'::jsonb; -- OK, legal escapes SELECT '"\v"'::jsonb; -- ERROR, not a valid JSON escape -- see json_encoding test for input with unicode escapes -- Numbers. SELECT '1'::jsonb; -- OK SELECT '0'::jsonb; -- OK SELECT '01'::jsonb; -- ERROR, not valid according to JSON spec SELECT '0.1'::jsonb; -- OK SELECT '9223372036854775808'::jsonb; -- OK, even though it's too large for int8 SELECT '1e100'::jsonb; -- OK SELECT '1.3e100'::jsonb; -- OK SELECT '1f2'::jsonb; -- ERROR SELECT '0.x1'::jsonb; -- ERROR SELECT '1.3ex100'::jsonb; -- ERROR -- Arrays. SELECT '[]'::jsonb; -- OK SELECT '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]'::jsonb; -- OK SELECT '[1,2]'::jsonb; -- OK SELECT '[1,2,]'::jsonb; -- ERROR, trailing comma SELECT '[1,2'::jsonb; -- ERROR, no closing bracket SELECT '[1,[2]'::jsonb; -- ERROR, no closing bracket -- Objects. SELECT '{}'::jsonb; -- OK SELECT '{"abc"}'::jsonb; -- ERROR, no value SELECT '{"abc":1}'::jsonb; -- OK SELECT '{1:"abc"}'::jsonb; -- ERROR, keys must be strings SELECT '{"abc",1}'::jsonb; -- ERROR, wrong separator SELECT '{"abc"=1}'::jsonb; -- ERROR, totally wrong separator SELECT '{"abc"::1}'::jsonb; -- ERROR, another wrong separator SELECT '{"abc":1,"def":2,"ghi":[3,4],"hij":{"klm":5,"nop":[6]}}'::jsonb; -- OK SELECT '{"abc":1:2}'::jsonb; -- ERROR, colon in wrong spot SELECT '{"abc":1,3}'::jsonb; -- ERROR, no value -- Recursion. SET max_stack_depth = '100kB'; SELECT repeat('[', 10000)::jsonb; SELECT repeat('{"a":', 10000)::jsonb; RESET max_stack_depth; -- Miscellaneous stuff. SELECT 'true'::jsonb; -- OK SELECT 'false'::jsonb; -- OK SELECT 'null'::jsonb; -- OK SELECT ' true '::jsonb; -- OK, even with extra whitespace SELECT 'true false'::jsonb; -- ERROR, too many values SELECT 'true, false'::jsonb; -- ERROR, too many values SELECT 'truf'::jsonb; -- ERROR, not a keyword SELECT 'trues'::jsonb; -- ERROR, not a keyword SELECT ''::jsonb; -- ERROR, no value SELECT ' '::jsonb; -- ERROR, no value -- make sure jsonb is passed through json generators without being escaped SELECT array_to_json(ARRAY [jsonb '{"a":1}', jsonb '{"b":[2,3]}']); -- anyarray column CREATE TEMP TABLE rows AS SELECT x, 'txt' || x as y FROM generate_series(1,3) AS x; analyze rows; select attname, to_jsonb(histogram_bounds) histogram_bounds from pg_stats where tablename = 'rows' and schemaname = pg_my_temp_schema()::regnamespace::text order by 1; -- to_jsonb, timestamps select to_jsonb(timestamp '2014-05-28 12:22:35.614298'); BEGIN; SET LOCAL TIME ZONE 10.5; select to_jsonb(timestamptz '2014-05-28 12:22:35.614298-04'); SET LOCAL TIME ZONE -8; select to_jsonb(timestamptz '2014-05-28 12:22:35.614298-04'); COMMIT; select to_jsonb(date '2014-05-28'); select to_jsonb(date 'Infinity'); select to_jsonb(date '-Infinity'); select to_jsonb(timestamp 'Infinity'); select to_jsonb(timestamp '-Infinity'); select to_jsonb(timestamptz 'Infinity'); select to_jsonb(timestamptz '-Infinity'); --jsonb_agg SELECT jsonb_agg(q) FROM ( SELECT $$a$$ || x AS b, y AS c, ARRAY[ROW(x.*,ARRAY[1,2,3]), ROW(y.*,ARRAY[4,5,6])] AS z FROM generate_series(1,2) x, generate_series(4,5) y) q; SELECT jsonb_agg(q ORDER BY x, y) FROM rows q; UPDATE rows SET x = NULL WHERE x = 1; SELECT jsonb_agg(q ORDER BY x NULLS FIRST, y) FROM rows q; -- jsonb extraction functions CREATE TEMP TABLE test_jsonb ( json_type text, test_json jsonb ); INSERT INTO test_jsonb VALUES ('scalar','"a scalar"'), ('array','["zero", "one","two",null,"four","five", [1,2,3],{"f1":9}]'), ('object','{"field1":"val1","field2":"val2","field3":null, "field4": 4, "field5": [1,2,3], "field6": {"f1":9}}'); SELECT test_json -> 'x' FROM test_jsonb WHERE json_type = 'scalar'; SELECT test_json -> 'x' FROM test_jsonb WHERE json_type = 'array'; SELECT test_json -> 'x' FROM test_jsonb WHERE json_type = 'object'; SELECT test_json -> 'field2' FROM test_jsonb WHERE json_type = 'object'; SELECT test_json ->> 'field2' FROM test_jsonb WHERE json_type = 'scalar'; SELECT test_json ->> 'field2' FROM test_jsonb WHERE json_type = 'array'; SELECT test_json ->> 'field2' FROM test_jsonb WHERE json_type = 'object'; SELECT test_json -> 2 FROM test_jsonb WHERE json_type = 'scalar'; SELECT test_json -> 2 FROM test_jsonb WHERE json_type = 'array'; SELECT test_json -> 9 FROM test_jsonb WHERE json_type = 'array'; SELECT test_json -> 2 FROM test_jsonb WHERE json_type = 'object'; SELECT test_json ->> 6 FROM test_jsonb WHERE json_type = 'array'; SELECT test_json ->> 7 FROM test_jsonb WHERE json_type = 'array'; SELECT test_json ->> 'field4' FROM test_jsonb WHERE json_type = 'object'; SELECT test_json ->> 'field5' FROM test_jsonb WHERE json_type = 'object'; SELECT test_json ->> 'field6' FROM test_jsonb WHERE json_type = 'object'; SELECT test_json ->> 2 FROM test_jsonb WHERE json_type = 'scalar'; SELECT test_json ->> 2 FROM test_jsonb WHERE json_type = 'array'; SELECT test_json ->> 2 FROM test_jsonb WHERE json_type = 'object'; SELECT jsonb_object_keys(test_json) FROM test_jsonb WHERE json_type = 'scalar'; SELECT jsonb_object_keys(test_json) FROM test_jsonb WHERE json_type = 'array'; SELECT jsonb_object_keys(test_json) FROM test_jsonb WHERE json_type = 'object'; -- nulls SELECT (test_json->'field3') IS NULL AS expect_false FROM test_jsonb WHERE json_type = 'object'; SELECT (test_json->>'field3') IS NULL AS expect_true FROM test_jsonb WHERE json_type = 'object'; SELECT (test_json->3) IS NULL AS expect_false FROM test_jsonb WHERE json_type = 'array'; SELECT (test_json->>3) IS NULL AS expect_true FROM test_jsonb WHERE json_type = 'array'; -- corner cases select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb -> null::text; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb -> null::int; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb -> 1; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb -> 'z'; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb -> ''; select '[{"b": "c"}, {"b": "cc"}]'::jsonb -> 1; select '[{"b": "c"}, {"b": "cc"}]'::jsonb -> 3; select '[{"b": "c"}, {"b": "cc"}]'::jsonb -> 'z'; select '{"a": "c", "b": null}'::jsonb -> 'b'; select '"foo"'::jsonb -> 1; select '"foo"'::jsonb -> 'z'; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb ->> null::text; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb ->> null::int; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb ->> 1; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb ->> 'z'; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb ->> ''; select '[{"b": "c"}, {"b": "cc"}]'::jsonb ->> 1; select '[{"b": "c"}, {"b": "cc"}]'::jsonb ->> 3; select '[{"b": "c"}, {"b": "cc"}]'::jsonb ->> 'z'; select '{"a": "c", "b": null}'::jsonb ->> 'b'; select '"foo"'::jsonb ->> 1; select '"foo"'::jsonb ->> 'z'; -- equality and inequality SELECT '{"x":"y"}'::jsonb = '{"x":"y"}'::jsonb; SELECT '{"x":"y"}'::jsonb = '{"x":"z"}'::jsonb; SELECT '{"x":"y"}'::jsonb <> '{"x":"y"}'::jsonb; SELECT '{"x":"y"}'::jsonb <> '{"x":"z"}'::jsonb; -- containment SELECT jsonb_contains('{"a":"b", "b":1, "c":null}', '{"a":"b"}'); SELECT jsonb_contains('{"a":"b", "b":1, "c":null}', '{"a":"b", "c":null}'); SELECT jsonb_contains('{"a":"b", "b":1, "c":null}', '{"a":"b", "g":null}'); SELECT jsonb_contains('{"a":"b", "b":1, "c":null}', '{"g":null}'); SELECT jsonb_contains('{"a":"b", "b":1, "c":null}', '{"a":"c"}'); SELECT jsonb_contains('{"a":"b", "b":1, "c":null}', '{"a":"b"}'); SELECT jsonb_contains('{"a":"b", "b":1, "c":null}', '{"a":"b", "c":"q"}'); SELECT '{"a":"b", "b":1, "c":null}'::jsonb @> '{"a":"b"}'; SELECT '{"a":"b", "b":1, "c":null}'::jsonb @> '{"a":"b", "c":null}'; SELECT '{"a":"b", "b":1, "c":null}'::jsonb @> '{"a":"b", "g":null}'; SELECT '{"a":"b", "b":1, "c":null}'::jsonb @> '{"g":null}'; SELECT '{"a":"b", "b":1, "c":null}'::jsonb @> '{"a":"c"}'; SELECT '{"a":"b", "b":1, "c":null}'::jsonb @> '{"a":"b"}'; SELECT '{"a":"b", "b":1, "c":null}'::jsonb @> '{"a":"b", "c":"q"}'; SELECT '[1,2]'::jsonb @> '[1,2,2]'::jsonb; SELECT '[1,1,2]'::jsonb @> '[1,2,2]'::jsonb; SELECT '[[1,2]]'::jsonb @> '[[1,2,2]]'::jsonb; SELECT '[1,2,2]'::jsonb <@ '[1,2]'::jsonb; SELECT '[1,2,2]'::jsonb <@ '[1,1,2]'::jsonb; SELECT '[[1,2,2]]'::jsonb <@ '[[1,2]]'::jsonb; SELECT jsonb_contained('{"a":"b"}', '{"a":"b", "b":1, "c":null}'); SELECT jsonb_contained('{"a":"b", "c":null}', '{"a":"b", "b":1, "c":null}'); SELECT jsonb_contained('{"a":"b", "g":null}', '{"a":"b", "b":1, "c":null}'); SELECT jsonb_contained('{"g":null}', '{"a":"b", "b":1, "c":null}'); SELECT jsonb_contained('{"a":"c"}', '{"a":"b", "b":1, "c":null}'); SELECT jsonb_contained('{"a":"b"}', '{"a":"b", "b":1, "c":null}'); SELECT jsonb_contained('{"a":"b", "c":"q"}', '{"a":"b", "b":1, "c":null}'); SELECT '{"a":"b"}'::jsonb <@ '{"a":"b", "b":1, "c":null}'; SELECT '{"a":"b", "c":null}'::jsonb <@ '{"a":"b", "b":1, "c":null}'; SELECT '{"a":"b", "g":null}'::jsonb <@ '{"a":"b", "b":1, "c":null}'; SELECT '{"g":null}'::jsonb <@ '{"a":"b", "b":1, "c":null}'; SELECT '{"a":"c"}'::jsonb <@ '{"a":"b", "b":1, "c":null}'; SELECT '{"a":"b"}'::jsonb <@ '{"a":"b", "b":1, "c":null}'; SELECT '{"a":"b", "c":"q"}'::jsonb <@ '{"a":"b", "b":1, "c":null}'; -- Raw scalar may contain another raw scalar, array may contain a raw scalar SELECT '[5]'::jsonb @> '[5]'; SELECT '5'::jsonb @> '5'; SELECT '[5]'::jsonb @> '5'; -- But a raw scalar cannot contain an array SELECT '5'::jsonb @> '[5]'; -- In general, one thing should always contain itself. Test array containment: SELECT '["9", ["7", "3"], 1]'::jsonb @> '["9", ["7", "3"], 1]'::jsonb; SELECT '["9", ["7", "3"], ["1"]]'::jsonb @> '["9", ["7", "3"], ["1"]]'::jsonb; -- array containment string matching confusion bug SELECT '{ "name": "Bob", "tags": [ "enim", "qui"]}'::jsonb @> '{"tags":["qu"]}'; -- array length SELECT jsonb_array_length('[1,2,3,{"f1":1,"f2":[5,6]},4]'); SELECT jsonb_array_length('[]'); SELECT jsonb_array_length('{"f1":1,"f2":[5,6]}'); SELECT jsonb_array_length('4'); -- each SELECT jsonb_each('{"f1":[1,2,3],"f2":{"f3":1},"f4":null}'); SELECT jsonb_each('{"a":{"b":"c","c":"b","1":"first"},"b":[1,2],"c":"cc","1":"first","n":null}'::jsonb) AS q; SELECT * FROM jsonb_each('{"f1":[1,2,3],"f2":{"f3":1},"f4":null,"f5":99,"f6":"stringy"}') q; SELECT * FROM jsonb_each('{"a":{"b":"c","c":"b","1":"first"},"b":[1,2],"c":"cc","1":"first","n":null}'::jsonb) AS q; SELECT jsonb_each_text('{"f1":[1,2,3],"f2":{"f3":1},"f4":null,"f5":"null"}'); SELECT jsonb_each_text('{"a":{"b":"c","c":"b","1":"first"},"b":[1,2],"c":"cc","1":"first","n":null}'::jsonb) AS q; SELECT * FROM jsonb_each_text('{"f1":[1,2,3],"f2":{"f3":1},"f4":null,"f5":99,"f6":"stringy"}') q; SELECT * FROM jsonb_each_text('{"a":{"b":"c","c":"b","1":"first"},"b":[1,2],"c":"cc","1":"first","n":null}'::jsonb) AS q; -- exists SELECT jsonb_exists('{"a":null, "b":"qq"}', 'a'); SELECT jsonb_exists('{"a":null, "b":"qq"}', 'b'); SELECT jsonb_exists('{"a":null, "b":"qq"}', 'c'); SELECT jsonb_exists('{"a":"null", "b":"qq"}', 'a'); SELECT jsonb '{"a":null, "b":"qq"}' ? 'a'; SELECT jsonb '{"a":null, "b":"qq"}' ? 'b'; SELECT jsonb '{"a":null, "b":"qq"}' ? 'c'; SELECT jsonb '{"a":"null", "b":"qq"}' ? 'a'; -- array exists - array elements should behave as keys SELECT count(*) from testjsonb WHERE j->'array' ? 'bar'; -- type sensitive array exists - should return no rows (since "exists" only -- matches strings that are either object keys or array elements) SELECT count(*) from testjsonb WHERE j->'array' ? '5'::text; -- However, a raw scalar is *contained* within the array SELECT count(*) from testjsonb WHERE j->'array' @> '5'::jsonb; SELECT jsonb_exists_any('{"a":null, "b":"qq"}', ARRAY['a','b']); SELECT jsonb_exists_any('{"a":null, "b":"qq"}', ARRAY['b','a']); SELECT jsonb_exists_any('{"a":null, "b":"qq"}', ARRAY['c','a']); SELECT jsonb_exists_any('{"a":null, "b":"qq"}', ARRAY['c','d']); SELECT jsonb_exists_any('{"a":null, "b":"qq"}', '{}'::text[]); SELECT jsonb '{"a":null, "b":"qq"}' ?| ARRAY['a','b']; SELECT jsonb '{"a":null, "b":"qq"}' ?| ARRAY['b','a']; SELECT jsonb '{"a":null, "b":"qq"}' ?| ARRAY['c','a']; SELECT jsonb '{"a":null, "b":"qq"}' ?| ARRAY['c','d']; SELECT jsonb '{"a":null, "b":"qq"}' ?| '{}'::text[]; SELECT jsonb_exists_all('{"a":null, "b":"qq"}', ARRAY['a','b']); SELECT jsonb_exists_all('{"a":null, "b":"qq"}', ARRAY['b','a']); SELECT jsonb_exists_all('{"a":null, "b":"qq"}', ARRAY['c','a']); SELECT jsonb_exists_all('{"a":null, "b":"qq"}', ARRAY['c','d']); SELECT jsonb_exists_all('{"a":null, "b":"qq"}', '{}'::text[]); SELECT jsonb '{"a":null, "b":"qq"}' ?& ARRAY['a','b']; SELECT jsonb '{"a":null, "b":"qq"}' ?& ARRAY['b','a']; SELECT jsonb '{"a":null, "b":"qq"}' ?& ARRAY['c','a']; SELECT jsonb '{"a":null, "b":"qq"}' ?& ARRAY['c','d']; SELECT jsonb '{"a":null, "b":"qq"}' ?& ARRAY['a','a', 'b', 'b', 'b']; SELECT jsonb '{"a":null, "b":"qq"}' ?& '{}'::text[]; -- typeof SELECT jsonb_typeof('{}') AS object; SELECT jsonb_typeof('{"c":3,"p":"o"}') AS object; SELECT jsonb_typeof('[]') AS array; SELECT jsonb_typeof('["a", 1]') AS array; SELECT jsonb_typeof('null') AS "null"; SELECT jsonb_typeof('1') AS number; SELECT jsonb_typeof('-1') AS number; SELECT jsonb_typeof('1.0') AS number; SELECT jsonb_typeof('1e2') AS number; SELECT jsonb_typeof('-1.0') AS number; SELECT jsonb_typeof('true') AS boolean; SELECT jsonb_typeof('false') AS boolean; SELECT jsonb_typeof('"hello"') AS string; SELECT jsonb_typeof('"true"') AS string; SELECT jsonb_typeof('"1.0"') AS string; -- jsonb_build_array, jsonb_build_object, jsonb_object_agg SELECT jsonb_build_array('a',1,'b',1.2,'c',true,'d',null,'e',json '{"x": 3, "y": [1,2,3]}'); SELECT jsonb_build_array('a', NULL); -- ok SELECT jsonb_build_array(VARIADIC NULL::text[]); -- ok SELECT jsonb_build_array(VARIADIC '{}'::text[]); -- ok SELECT jsonb_build_array(VARIADIC '{a,b,c}'::text[]); -- ok SELECT jsonb_build_array(VARIADIC ARRAY['a', NULL]::text[]); -- ok SELECT jsonb_build_array(VARIADIC '{1,2,3,4}'::text[]); -- ok SELECT jsonb_build_array(VARIADIC '{1,2,3,4}'::int[]); -- ok SELECT jsonb_build_array(VARIADIC '{{1,4},{2,5},{3,6}}'::int[][]); -- ok SELECT jsonb_build_object('a',1,'b',1.2,'c',true,'d',null,'e',json '{"x": 3, "y": [1,2,3]}'); SELECT jsonb_build_object( 'a', jsonb_build_object('b',false,'c',99), 'd', jsonb_build_object('e',array[9,8,7]::int[], 'f', (select row_to_json(r) from ( select relkind, oid::regclass as name from pg_class where relname = 'pg_class') r))); SELECT jsonb_build_object('{a,b,c}'::text[]); -- error SELECT jsonb_build_object('{a,b,c}'::text[], '{d,e,f}'::text[]); -- error, key cannot be array SELECT jsonb_build_object('a', 'b', 'c'); -- error SELECT jsonb_build_object(NULL, 'a'); -- error, key cannot be NULL SELECT jsonb_build_object('a', NULL); -- ok SELECT jsonb_build_object(VARIADIC NULL::text[]); -- ok SELECT jsonb_build_object(VARIADIC '{}'::text[]); -- ok SELECT jsonb_build_object(VARIADIC '{a,b,c}'::text[]); -- error SELECT jsonb_build_object(VARIADIC ARRAY['a', NULL]::text[]); -- ok SELECT jsonb_build_object(VARIADIC ARRAY[NULL, 'a']::text[]); -- error, key cannot be NULL SELECT jsonb_build_object(VARIADIC '{1,2,3,4}'::text[]); -- ok SELECT jsonb_build_object(VARIADIC '{1,2,3,4}'::int[]); -- ok SELECT jsonb_build_object(VARIADIC '{{1,4},{2,5},{3,6}}'::int[][]); -- ok -- empty objects/arrays SELECT jsonb_build_array(); SELECT jsonb_build_object(); -- make sure keys are quoted SELECT jsonb_build_object(1,2); -- keys must be scalar and not null SELECT jsonb_build_object(null,2); SELECT jsonb_build_object(r,2) FROM (SELECT 1 AS a, 2 AS b) r; SELECT jsonb_build_object(json '{"a":1,"b":2}', 3); SELECT jsonb_build_object('{1,2,3}'::int[], 3); -- handling of NULL values SELECT jsonb_object_agg(1, NULL::jsonb); SELECT jsonb_object_agg(NULL, '{"a":1}'); CREATE TEMP TABLE foo (serial_num int, name text, type text); INSERT INTO foo VALUES (847001,'t15','GE1043'); INSERT INTO foo VALUES (847002,'t16','GE1043'); INSERT INTO foo VALUES (847003,'sub-alpha','GESS90'); SELECT jsonb_build_object('turbines',jsonb_object_agg(serial_num,jsonb_build_object('name',name,'type',type))) FROM foo; SELECT jsonb_object_agg(name, type) FROM foo; INSERT INTO foo VALUES (999999, NULL, 'bar'); SELECT jsonb_object_agg(name, type) FROM foo; -- jsonb_object -- empty object, one dimension SELECT jsonb_object('{}'); -- empty object, two dimensions SELECT jsonb_object('{}', '{}'); -- one dimension SELECT jsonb_object('{a,1,b,2,3,NULL,"d e f","a b c"}'); -- same but with two dimensions SELECT jsonb_object('{{a,1},{b,2},{3,NULL},{"d e f","a b c"}}'); -- odd number error SELECT jsonb_object('{a,b,c}'); -- one column error SELECT jsonb_object('{{a},{b}}'); -- too many columns error SELECT jsonb_object('{{a,b,c},{b,c,d}}'); -- too many dimensions error SELECT jsonb_object('{{{a,b},{c,d}},{{b,c},{d,e}}}'); --two argument form of jsonb_object select jsonb_object('{a,b,c,"d e f"}','{1,2,3,"a b c"}'); -- too many dimensions SELECT jsonb_object('{{a,1},{b,2},{3,NULL},{"d e f","a b c"}}', '{{a,1},{b,2},{3,NULL},{"d e f","a b c"}}'); -- mismatched dimensions select jsonb_object('{a,b,c,"d e f",g}','{1,2,3,"a b c"}'); select jsonb_object('{a,b,c,"d e f"}','{1,2,3,"a b c",g}'); -- null key error select jsonb_object('{a,b,NULL,"d e f"}','{1,2,3,"a b c"}'); -- empty key is allowed select jsonb_object('{a,b,"","d e f"}','{1,2,3,"a b c"}'); -- extract_path, extract_path_as_text SELECT jsonb_extract_path('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}','f4','f6'); SELECT jsonb_extract_path('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}','f2'); SELECT jsonb_extract_path('{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}','f2',0::text); SELECT jsonb_extract_path('{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}','f2',1::text); SELECT jsonb_extract_path_text('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}','f4','f6'); SELECT jsonb_extract_path_text('{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}','f2'); SELECT jsonb_extract_path_text('{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}','f2',0::text); SELECT jsonb_extract_path_text('{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}','f2',1::text); -- extract_path nulls SELECT jsonb_extract_path('{"f2":{"f3":1},"f4":{"f5":null,"f6":"stringy"}}','f4','f5') IS NULL AS expect_false; SELECT jsonb_extract_path_text('{"f2":{"f3":1},"f4":{"f5":null,"f6":"stringy"}}','f4','f5') IS NULL AS expect_true; SELECT jsonb_extract_path('{"f2":{"f3":1},"f4":[0,1,2,null]}','f4','3') IS NULL AS expect_false; SELECT jsonb_extract_path_text('{"f2":{"f3":1},"f4":[0,1,2,null]}','f4','3') IS NULL AS expect_true; -- extract_path operators SELECT '{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}'::jsonb#>array['f4','f6']; SELECT '{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}'::jsonb#>array['f2']; SELECT '{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}'::jsonb#>array['f2','0']; SELECT '{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}'::jsonb#>array['f2','1']; SELECT '{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}'::jsonb#>>array['f4','f6']; SELECT '{"f2":{"f3":1},"f4":{"f5":99,"f6":"stringy"}}'::jsonb#>>array['f2']; SELECT '{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}'::jsonb#>>array['f2','0']; SELECT '{"f2":["f3",1],"f4":{"f5":99,"f6":"stringy"}}'::jsonb#>>array['f2','1']; -- corner cases for same select '{"a": {"b":{"c": "foo"}}}'::jsonb #> '{}'; select '[1,2,3]'::jsonb #> '{}'; select '"foo"'::jsonb #> '{}'; select '42'::jsonb #> '{}'; select 'null'::jsonb #> '{}'; select '{"a": {"b":{"c": "foo"}}}'::jsonb #> array['a']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #> array['a', null]; select '{"a": {"b":{"c": "foo"}}}'::jsonb #> array['a', '']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #> array['a','b']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #> array['a','b','c']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #> array['a','b','c','d']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #> array['a','z','c']; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb #> array['a','1','b']; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb #> array['a','z','b']; select '[{"b": "c"}, {"b": "cc"}]'::jsonb #> array['1','b']; select '[{"b": "c"}, {"b": "cc"}]'::jsonb #> array['z','b']; select '[{"b": "c"}, {"b": null}]'::jsonb #> array['1','b']; select '"foo"'::jsonb #> array['z']; select '42'::jsonb #> array['f2']; select '42'::jsonb #> array['0']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #>> '{}'; select '[1,2,3]'::jsonb #>> '{}'; select '"foo"'::jsonb #>> '{}'; select '42'::jsonb #>> '{}'; select 'null'::jsonb #>> '{}'; select '{"a": {"b":{"c": "foo"}}}'::jsonb #>> array['a']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #>> array['a', null]; select '{"a": {"b":{"c": "foo"}}}'::jsonb #>> array['a', '']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #>> array['a','b']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #>> array['a','b','c']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #>> array['a','b','c','d']; select '{"a": {"b":{"c": "foo"}}}'::jsonb #>> array['a','z','c']; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb #>> array['a','1','b']; select '{"a": [{"b": "c"}, {"b": "cc"}]}'::jsonb #>> array['a','z','b']; select '[{"b": "c"}, {"b": "cc"}]'::jsonb #>> array['1','b']; select '[{"b": "c"}, {"b": "cc"}]'::jsonb #>> array['z','b']; select '[{"b": "c"}, {"b": null}]'::jsonb #>> array['1','b']; select '"foo"'::jsonb #>> array['z']; select '42'::jsonb #>> array['f2']; select '42'::jsonb #>> array['0']; -- array_elements SELECT jsonb_array_elements('[1,true,[1,[2,3]],null,{"f1":1,"f2":[7,8,9]},false]'); SELECT * FROM jsonb_array_elements('[1,true,[1,[2,3]],null,{"f1":1,"f2":[7,8,9]},false]') q; SELECT jsonb_array_elements_text('[1,true,[1,[2,3]],null,{"f1":1,"f2":[7,8,9]},false,"stringy"]'); SELECT * FROM jsonb_array_elements_text('[1,true,[1,[2,3]],null,{"f1":1,"f2":[7,8,9]},false,"stringy"]') q; -- populate_record CREATE TYPE jbpop AS (a text, b int, c timestamp); CREATE DOMAIN jsb_int_not_null AS int NOT NULL; CREATE DOMAIN jsb_int_array_1d AS int[] CHECK(array_length(VALUE, 1) = 3); CREATE DOMAIN jsb_int_array_2d AS int[][] CHECK(array_length(VALUE, 2) = 3); create type jb_unordered_pair as (x int, y int); create domain jb_ordered_pair as jb_unordered_pair check((value).x <= (value).y); CREATE TYPE jsbrec AS ( i int, ia _int4, ia1 int[], ia2 int[][], ia3 int[][][], ia1d jsb_int_array_1d, ia2d jsb_int_array_2d, t text, ta text[], c char(10), ca char(10)[], ts timestamp, js json, jsb jsonb, jsa json[], rec jbpop, reca jbpop[] ); CREATE TYPE jsbrec_i_not_null AS ( i jsb_int_not_null ); SELECT * FROM jsonb_populate_record(NULL::jbpop,'{"a":"blurfl","x":43.2}') q; SELECT * FROM jsonb_populate_record(row('x',3,'2012-12-31 15:30:56')::jbpop,'{"a":"blurfl","x":43.2}') q; SELECT * FROM jsonb_populate_record(NULL::jbpop,'{"a":"blurfl","x":43.2}') q; SELECT * FROM jsonb_populate_record(row('x',3,'2012-12-31 15:30:56')::jbpop,'{"a":"blurfl","x":43.2}') q; SELECT * FROM jsonb_populate_record(NULL::jbpop,'{"a":[100,200,false],"x":43.2}') q; SELECT * FROM jsonb_populate_record(row('x',3,'2012-12-31 15:30:56')::jbpop,'{"a":[100,200,false],"x":43.2}') q; SELECT * FROM jsonb_populate_record(row('x',3,'2012-12-31 15:30:56')::jbpop,'{"c":[100,200,false],"x":43.2}') q; SELECT * FROM jsonb_populate_record(row('x',3,'2012-12-31 15:30:56')::jbpop, '{}') q; SELECT i FROM jsonb_populate_record(NULL::jsbrec_i_not_null, '{"x": 43.2}') q; SELECT i FROM jsonb_populate_record(NULL::jsbrec_i_not_null, '{"i": null}') q; SELECT i FROM jsonb_populate_record(NULL::jsbrec_i_not_null, '{"i": 12345}') q; SELECT ia FROM jsonb_populate_record(NULL::jsbrec, '{"ia": null}') q; SELECT ia FROM jsonb_populate_record(NULL::jsbrec, '{"ia": 123}') q; SELECT ia FROM jsonb_populate_record(NULL::jsbrec, '{"ia": [1, "2", null, 4]}') q; SELECT ia FROM jsonb_populate_record(NULL::jsbrec, '{"ia": [[1, 2], [3, 4]]}') q; SELECT ia FROM jsonb_populate_record(NULL::jsbrec, '{"ia": [[1], 2]}') q; SELECT ia FROM jsonb_populate_record(NULL::jsbrec, '{"ia": [[1], [2, 3]]}') q; SELECT ia FROM jsonb_populate_record(NULL::jsbrec, '{"ia": "{1,2,3}"}') q; SELECT ia1 FROM jsonb_populate_record(NULL::jsbrec, '{"ia1": null}') q; SELECT ia1 FROM jsonb_populate_record(NULL::jsbrec, '{"ia1": 123}') q; SELECT ia1 FROM jsonb_populate_record(NULL::jsbrec, '{"ia1": [1, "2", null, 4]}') q; SELECT ia1 FROM jsonb_populate_record(NULL::jsbrec, '{"ia1": [[1, 2, 3]]}') q; SELECT ia1d FROM jsonb_populate_record(NULL::jsbrec, '{"ia1d": null}') q; SELECT ia1d FROM jsonb_populate_record(NULL::jsbrec, '{"ia1d": 123}') q; SELECT ia1d FROM jsonb_populate_record(NULL::jsbrec, '{"ia1d": [1, "2", null, 4]}') q; SELECT ia1d FROM jsonb_populate_record(NULL::jsbrec, '{"ia1d": [1, "2", null]}') q; SELECT ia2 FROM jsonb_populate_record(NULL::jsbrec, '{"ia2": [1, "2", null, 4]}') q; SELECT ia2 FROM jsonb_populate_record(NULL::jsbrec, '{"ia2": [[1, 2], [null, 4]]}') q; SELECT ia2 FROM jsonb_populate_record(NULL::jsbrec, '{"ia2": [[], []]}') q; SELECT ia2 FROM jsonb_populate_record(NULL::jsbrec, '{"ia2": [[1, 2], [3]]}') q; SELECT ia2 FROM jsonb_populate_record(NULL::jsbrec, '{"ia2": [[1, 2], 3, 4]}') q; SELECT ia2d FROM jsonb_populate_record(NULL::jsbrec, '{"ia2d": [[1, "2"], [null, 4]]}') q; SELECT ia2d FROM jsonb_populate_record(NULL::jsbrec, '{"ia2d": [[1, "2", 3], [null, 5, 6]]}') q; SELECT ia3 FROM jsonb_populate_record(NULL::jsbrec, '{"ia3": [1, "2", null, 4]}') q; SELECT ia3 FROM jsonb_populate_record(NULL::jsbrec, '{"ia3": [[1, 2], [null, 4]]}') q; SELECT ia3 FROM jsonb_populate_record(NULL::jsbrec, '{"ia3": [ [[], []], [[], []], [[], []] ]}') q; SELECT ia3 FROM jsonb_populate_record(NULL::jsbrec, '{"ia3": [ [[1, 2]], [[3, 4]] ]}') q; SELECT ia3 FROM jsonb_populate_record(NULL::jsbrec, '{"ia3": [ [[1, 2], [3, 4]], [[5, 6], [7, 8]] ]}') q; SELECT ia3 FROM jsonb_populate_record(NULL::jsbrec, '{"ia3": [ [[1, 2], [3, 4]], [[5, 6], [7, 8], [9, 10]] ]}') q; SELECT ta FROM jsonb_populate_record(NULL::jsbrec, '{"ta": null}') q; SELECT ta FROM jsonb_populate_record(NULL::jsbrec, '{"ta": 123}') q; SELECT ta FROM jsonb_populate_record(NULL::jsbrec, '{"ta": [1, "2", null, 4]}') q; SELECT ta FROM jsonb_populate_record(NULL::jsbrec, '{"ta": [[1, 2, 3], {"k": "v"}]}') q; SELECT c FROM jsonb_populate_record(NULL::jsbrec, '{"c": null}') q; SELECT c FROM jsonb_populate_record(NULL::jsbrec, '{"c": "aaa"}') q; SELECT c FROM jsonb_populate_record(NULL::jsbrec, '{"c": "aaaaaaaaaa"}') q; SELECT c FROM jsonb_populate_record(NULL::jsbrec, '{"c": "aaaaaaaaaaaaa"}') q; SELECT ca FROM jsonb_populate_record(NULL::jsbrec, '{"ca": null}') q; SELECT ca FROM jsonb_populate_record(NULL::jsbrec, '{"ca": 123}') q; SELECT ca FROM jsonb_populate_record(NULL::jsbrec, '{"ca": [1, "2", null, 4]}') q; SELECT ca FROM jsonb_populate_record(NULL::jsbrec, '{"ca": ["aaaaaaaaaaaaaaaa"]}') q; SELECT ca FROM jsonb_populate_record(NULL::jsbrec, '{"ca": [[1, 2, 3], {"k": "v"}]}') q; SELECT js FROM jsonb_populate_record(NULL::jsbrec, '{"js": null}') q; SELECT js FROM jsonb_populate_record(NULL::jsbrec, '{"js": true}') q; SELECT js FROM jsonb_populate_record(NULL::jsbrec, '{"js": 123.45}') q; SELECT js FROM jsonb_populate_record(NULL::jsbrec, '{"js": "123.45"}') q; SELECT js FROM jsonb_populate_record(NULL::jsbrec, '{"js": "abc"}') q; SELECT js FROM jsonb_populate_record(NULL::jsbrec, '{"js": [123, "123", null, {"key": "value"}]}') q; SELECT js FROM jsonb_populate_record(NULL::jsbrec, '{"js": {"a": "bbb", "b": null, "c": 123.45}}') q; SELECT jsb FROM jsonb_populate_record(NULL::jsbrec, '{"jsb": null}') q; SELECT jsb FROM jsonb_populate_record(NULL::jsbrec, '{"jsb": true}') q; SELECT jsb FROM jsonb_populate_record(NULL::jsbrec, '{"jsb": 123.45}') q; SELECT jsb FROM jsonb_populate_record(NULL::jsbrec, '{"jsb": "123.45"}') q; SELECT jsb FROM jsonb_populate_record(NULL::jsbrec, '{"jsb": "abc"}') q; SELECT jsb FROM jsonb_populate_record(NULL::jsbrec, '{"jsb": [123, "123", null, {"key": "value"}]}') q; SELECT jsb FROM jsonb_populate_record(NULL::jsbrec, '{"jsb": {"a": "bbb", "b": null, "c": 123.45}}') q; SELECT jsa FROM jsonb_populate_record(NULL::jsbrec, '{"jsa": null}') q; SELECT jsa FROM jsonb_populate_record(NULL::jsbrec, '{"jsa": 123}') q; SELECT jsa FROM jsonb_populate_record(NULL::jsbrec, '{"jsa": [1, "2", null, 4]}') q; SELECT jsa FROM jsonb_populate_record(NULL::jsbrec, '{"jsa": ["aaa", null, [1, 2, "3", {}], { "k" : "v" }]}') q; SELECT rec FROM jsonb_populate_record(NULL::jsbrec, '{"rec": 123}') q; SELECT rec FROM jsonb_populate_record(NULL::jsbrec, '{"rec": [1, 2]}') q; SELECT rec FROM jsonb_populate_record(NULL::jsbrec, '{"rec": {"a": "abc", "c": "01.02.2003", "x": 43.2}}') q; SELECT rec FROM jsonb_populate_record(NULL::jsbrec, '{"rec": "(abc,42,01.02.2003)"}') q; SELECT reca FROM jsonb_populate_record(NULL::jsbrec, '{"reca": 123}') q; SELECT reca FROM jsonb_populate_record(NULL::jsbrec, '{"reca": [1, 2]}') q; SELECT reca FROM jsonb_populate_record(NULL::jsbrec, '{"reca": [{"a": "abc", "b": 456}, null, {"c": "01.02.2003", "x": 43.2}]}') q; SELECT reca FROM jsonb_populate_record(NULL::jsbrec, '{"reca": ["(abc,42,01.02.2003)"]}') q; SELECT reca FROM jsonb_populate_record(NULL::jsbrec, '{"reca": "{\"(abc,42,01.02.2003)\"}"}') q; SELECT rec FROM jsonb_populate_record( row(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, row('x',3,'2012-12-31 15:30:56')::jbpop,NULL)::jsbrec, '{"rec": {"a": "abc", "c": "01.02.2003", "x": 43.2}}' ) q; -- anonymous record type SELECT jsonb_populate_record(null::record, '{"x": 0, "y": 1}'); SELECT jsonb_populate_record(row(1,2), '{"f1": 0, "f2": 1}'); SELECT * FROM jsonb_populate_record(null::record, '{"x": 776}') AS (x int, y int); -- composite domain SELECT jsonb_populate_record(null::jb_ordered_pair, '{"x": 0, "y": 1}'); SELECT jsonb_populate_record(row(1,2)::jb_ordered_pair, '{"x": 0}'); SELECT jsonb_populate_record(row(1,2)::jb_ordered_pair, '{"x": 1, "y": 0}'); -- populate_recordset SELECT * FROM jsonb_populate_recordset(NULL::jbpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; SELECT * FROM jsonb_populate_recordset(row('def',99,NULL)::jbpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; SELECT * FROM jsonb_populate_recordset(NULL::jbpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; SELECT * FROM jsonb_populate_recordset(row('def',99,NULL)::jbpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; SELECT * FROM jsonb_populate_recordset(row('def',99,NULL)::jbpop,'[{"a":[100,200,300],"x":43.2},{"a":{"z":true},"b":3,"c":"2012-01-20 10:42:53"}]') q; SELECT * FROM jsonb_populate_recordset(row('def',99,NULL)::jbpop,'[{"c":[100,200,300],"x":43.2},{"a":{"z":true},"b":3,"c":"2012-01-20 10:42:53"}]') q; SELECT * FROM jsonb_populate_recordset(NULL::jbpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; SELECT * FROM jsonb_populate_recordset(row('def',99,NULL)::jbpop,'[{"a":"blurfl","x":43.2},{"b":3,"c":"2012-01-20 10:42:53"}]') q; SELECT * FROM jsonb_populate_recordset(row('def',99,NULL)::jbpop,'[{"a":[100,200,300],"x":43.2},{"a":{"z":true},"b":3,"c":"2012-01-20 10:42:53"}]') q; -- anonymous record type SELECT jsonb_populate_recordset(null::record, '[{"x": 0, "y": 1}]'); SELECT jsonb_populate_recordset(row(1,2), '[{"f1": 0, "f2": 1}]'); SELECT i, jsonb_populate_recordset(row(i,50), '[{"f1":"42"},{"f2":"43"}]') FROM (VALUES (1),(2)) v(i); SELECT * FROM jsonb_populate_recordset(null::record, '[{"x": 776}]') AS (x int, y int); -- empty array is a corner case SELECT jsonb_populate_recordset(null::record, '[]'); SELECT jsonb_populate_recordset(row(1,2), '[]'); SELECT * FROM jsonb_populate_recordset(NULL::jbpop,'[]') q; SELECT * FROM jsonb_populate_recordset(null::record, '[]') AS (x int, y int); -- composite domain SELECT jsonb_populate_recordset(null::jb_ordered_pair, '[{"x": 0, "y": 1}]'); SELECT jsonb_populate_recordset(row(1,2)::jb_ordered_pair, '[{"x": 0}, {"y": 3}]'); SELECT jsonb_populate_recordset(row(1,2)::jb_ordered_pair, '[{"x": 1, "y": 0}]'); -- negative cases where the wrong record type is supplied select * from jsonb_populate_recordset(row(0::int),'[{"a":"1","b":"2"},{"a":"3"}]') q (a text, b text); select * from jsonb_populate_recordset(row(0::int,0::int),'[{"a":"1","b":"2"},{"a":"3"}]') q (a text, b text); select * from jsonb_populate_recordset(row(0::int,0::int,0::int),'[{"a":"1","b":"2"},{"a":"3"}]') q (a text, b text); select * from jsonb_populate_recordset(row(1000000000::int,50::int),'[{"b":"2"},{"a":"3"}]') q (a text, b text); -- jsonb_to_record and jsonb_to_recordset select * from jsonb_to_record('{"a":1,"b":"foo","c":"bar"}') as x(a int, b text, d text); select * from jsonb_to_recordset('[{"a":1,"b":"foo","d":false},{"a":2,"b":"bar","c":true}]') as x(a int, b text, c boolean); select *, c is null as c_is_null from jsonb_to_record('{"a":1, "b":{"c":16, "d":2}, "x":8, "ca": ["1 2", 3], "ia": [[1,2],[3,4]], "r": {"a": "aaa", "b": 123}}'::jsonb) as t(a int, b jsonb, c text, x int, ca char(5)[], ia int[][], r jbpop); select *, c is null as c_is_null from jsonb_to_recordset('[{"a":1, "b":{"c":16, "d":2}, "x":8}]'::jsonb) as t(a int, b jsonb, c text, x int); select * from jsonb_to_record('{"ia": null}') as x(ia _int4); select * from jsonb_to_record('{"ia": 123}') as x(ia _int4); select * from jsonb_to_record('{"ia": [1, "2", null, 4]}') as x(ia _int4); select * from jsonb_to_record('{"ia": [[1, 2], [3, 4]]}') as x(ia _int4); select * from jsonb_to_record('{"ia": [[1], 2]}') as x(ia _int4); select * from jsonb_to_record('{"ia": [[1], [2, 3]]}') as x(ia _int4); select * from jsonb_to_record('{"ia2": [1, 2, 3]}') as x(ia2 int[][]); select * from jsonb_to_record('{"ia2": [[1, 2], [3, 4]]}') as x(ia2 int4[][]); select * from jsonb_to_record('{"ia2": [[[1], [2], [3]]]}') as x(ia2 int4[][]); select * from jsonb_to_record('{"out": {"key": 1}}') as x(out json); select * from jsonb_to_record('{"out": [{"key": 1}]}') as x(out json); select * from jsonb_to_record('{"out": "{\"key\": 1}"}') as x(out json); select * from jsonb_to_record('{"out": {"key": 1}}') as x(out jsonb); select * from jsonb_to_record('{"out": [{"key": 1}]}') as x(out jsonb); select * from jsonb_to_record('{"out": "{\"key\": 1}"}') as x(out jsonb); -- test type info caching in jsonb_populate_record() CREATE TEMP TABLE jsbpoptest (js jsonb); INSERT INTO jsbpoptest SELECT '{ "jsa": [1, "2", null, 4], "rec": {"a": "abc", "c": "01.02.2003", "x": 43.2}, "reca": [{"a": "abc", "b": 456}, null, {"c": "01.02.2003", "x": 43.2}] }'::jsonb FROM generate_series(1, 3); SELECT (jsonb_populate_record(NULL::jsbrec, js)).* FROM jsbpoptest; DROP TYPE jsbrec; DROP TYPE jsbrec_i_not_null; DROP DOMAIN jsb_int_not_null; DROP DOMAIN jsb_int_array_1d; DROP DOMAIN jsb_int_array_2d; DROP DOMAIN jb_ordered_pair; DROP TYPE jb_unordered_pair; -- indexing SELECT count(*) FROM testjsonb WHERE j @> '{"wait":null}'; SELECT count(*) FROM testjsonb WHERE j @> '{"wait":"CC"}'; SELECT count(*) FROM testjsonb WHERE j @> '{"wait":"CC", "public":true}'; SELECT count(*) FROM testjsonb WHERE j @> '{"age":25}'; SELECT count(*) FROM testjsonb WHERE j @> '{"age":25.0}'; SELECT count(*) FROM testjsonb WHERE j ? 'public'; SELECT count(*) FROM testjsonb WHERE j ? 'bar'; SELECT count(*) FROM testjsonb WHERE j ?| ARRAY['public','disabled']; SELECT count(*) FROM testjsonb WHERE j ?& ARRAY['public','disabled']; SELECT count(*) FROM testjsonb WHERE j @@ '$.wait == null'; SELECT count(*) FROM testjsonb WHERE j @@ '"CC" == $.wait'; SELECT count(*) FROM testjsonb WHERE j @@ '$.wait == "CC" && true == $.public'; SELECT count(*) FROM testjsonb WHERE j @@ '$.age == 25'; SELECT count(*) FROM testjsonb WHERE j @@ '$.age == 25.0'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($)'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.public)'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.bar)'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.public) || exists($.disabled)'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.public) && exists($.disabled)'; SELECT count(*) FROM testjsonb WHERE j @? '$.wait ? (@ == null)'; SELECT count(*) FROM testjsonb WHERE j @? '$.wait ? ("CC" == @)'; SELECT count(*) FROM testjsonb WHERE j @? '$ ? (@.wait == "CC" && true == @.public)'; SELECT count(*) FROM testjsonb WHERE j @? '$.age ? (@ == 25)'; SELECT count(*) FROM testjsonb WHERE j @? '$ ? (@.age == 25.0)'; SELECT count(*) FROM testjsonb WHERE j @? '$'; SELECT count(*) FROM testjsonb WHERE j @? '$.public'; SELECT count(*) FROM testjsonb WHERE j @? '$.bar'; CREATE INDEX jidx ON testjsonb USING gin (j); SET enable_seqscan = off; SELECT count(*) FROM testjsonb WHERE j @> '{"wait":null}'; SELECT count(*) FROM testjsonb WHERE j @> '{"wait":"CC"}'; SELECT count(*) FROM testjsonb WHERE j @> '{"wait":"CC", "public":true}'; SELECT count(*) FROM testjsonb WHERE j @> '{"age":25}'; SELECT count(*) FROM testjsonb WHERE j @> '{"age":25.0}'; SELECT count(*) FROM testjsonb WHERE j @> '{"array":["foo"]}'; SELECT count(*) FROM testjsonb WHERE j @> '{"array":["bar"]}'; -- exercise GIN_SEARCH_MODE_ALL SELECT count(*) FROM testjsonb WHERE j @> '{}'; SELECT count(*) FROM testjsonb WHERE j ? 'public'; SELECT count(*) FROM testjsonb WHERE j ? 'bar'; SELECT count(*) FROM testjsonb WHERE j ?| ARRAY['public','disabled']; SELECT count(*) FROM testjsonb WHERE j ?& ARRAY['public','disabled']; EXPLAIN (COSTS OFF) SELECT count(*) FROM testjsonb WHERE j @@ '$.wait == null'; SELECT count(*) FROM testjsonb WHERE j @@ '$.wait == null'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($ ? (@.wait == null))'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.wait ? (@ == null))'; SELECT count(*) FROM testjsonb WHERE j @@ '"CC" == $.wait'; SELECT count(*) FROM testjsonb WHERE j @@ '$.wait == "CC" && true == $.public'; SELECT count(*) FROM testjsonb WHERE j @@ '$.age == 25'; SELECT count(*) FROM testjsonb WHERE j @@ '$.age == 25.0'; SELECT count(*) FROM testjsonb WHERE j @@ '$.array[*] == "foo"'; SELECT count(*) FROM testjsonb WHERE j @@ '$.array[*] == "bar"'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($ ? (@.array[*] == "bar"))'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.array ? (@[*] == "bar"))'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.array[*] ? (@ == "bar"))'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($)'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.public)'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.bar)'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.public) || exists($.disabled)'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.public) && exists($.disabled)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM testjsonb WHERE j @? '$.wait ? (@ == null)'; SELECT count(*) FROM testjsonb WHERE j @? '$.wait ? (@ == null)'; SELECT count(*) FROM testjsonb WHERE j @? '$.wait ? ("CC" == @)'; SELECT count(*) FROM testjsonb WHERE j @? '$ ? (@.wait == "CC" && true == @.public)'; SELECT count(*) FROM testjsonb WHERE j @? '$.age ? (@ == 25)'; SELECT count(*) FROM testjsonb WHERE j @? '$ ? (@.age == 25.0)'; SELECT count(*) FROM testjsonb WHERE j @? '$ ? (@.array[*] == "bar")'; SELECT count(*) FROM testjsonb WHERE j @? '$.array ? (@[*] == "bar")'; SELECT count(*) FROM testjsonb WHERE j @? '$.array[*] ? (@ == "bar")'; SELECT count(*) FROM testjsonb WHERE j @? '$'; SELECT count(*) FROM testjsonb WHERE j @? '$.public'; SELECT count(*) FROM testjsonb WHERE j @? '$.bar'; -- array exists - array elements should behave as keys (for GIN index scans too) CREATE INDEX jidx_array ON testjsonb USING gin((j->'array')); SELECT count(*) from testjsonb WHERE j->'array' ? 'bar'; -- type sensitive array exists - should return no rows (since "exists" only -- matches strings that are either object keys or array elements) SELECT count(*) from testjsonb WHERE j->'array' ? '5'::text; -- However, a raw scalar is *contained* within the array SELECT count(*) from testjsonb WHERE j->'array' @> '5'::jsonb; RESET enable_seqscan; SELECT count(*) FROM (SELECT (jsonb_each(j)).key FROM testjsonb) AS wow; SELECT key, count(*) FROM (SELECT (jsonb_each(j)).key FROM testjsonb) AS wow GROUP BY key ORDER BY count DESC, key; -- sort/hash SELECT count(distinct j) FROM testjsonb; SET enable_hashagg = off; SELECT count(*) FROM (SELECT j FROM (SELECT * FROM testjsonb UNION ALL SELECT * FROM testjsonb) js GROUP BY j) js2; SET enable_hashagg = on; SET enable_sort = off; SELECT count(*) FROM (SELECT j FROM (SELECT * FROM testjsonb UNION ALL SELECT * FROM testjsonb) js GROUP BY j) js2; SELECT distinct * FROM (values (jsonb '{}' || ''::text),('{}')) v(j); SET enable_sort = on; RESET enable_hashagg; RESET enable_sort; DROP INDEX jidx; DROP INDEX jidx_array; -- btree CREATE INDEX jidx ON testjsonb USING btree (j); SET enable_seqscan = off; SELECT count(*) FROM testjsonb WHERE j > '{"p":1}'; SELECT count(*) FROM testjsonb WHERE j = '{"pos":98, "line":371, "node":"CBA", "indexed":true}'; --gin path opclass DROP INDEX jidx; CREATE INDEX jidx ON testjsonb USING gin (j jsonb_path_ops); SET enable_seqscan = off; SELECT count(*) FROM testjsonb WHERE j @> '{"wait":null}'; SELECT count(*) FROM testjsonb WHERE j @> '{"wait":"CC"}'; SELECT count(*) FROM testjsonb WHERE j @> '{"wait":"CC", "public":true}'; SELECT count(*) FROM testjsonb WHERE j @> '{"age":25}'; SELECT count(*) FROM testjsonb WHERE j @> '{"age":25.0}'; -- exercise GIN_SEARCH_MODE_ALL SELECT count(*) FROM testjsonb WHERE j @> '{}'; SELECT count(*) FROM testjsonb WHERE j @@ '$.wait == null'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($ ? (@.wait == null))'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.wait ? (@ == null))'; SELECT count(*) FROM testjsonb WHERE j @@ '"CC" == $.wait'; SELECT count(*) FROM testjsonb WHERE j @@ '$.wait == "CC" && true == $.public'; SELECT count(*) FROM testjsonb WHERE j @@ '$.age == 25'; SELECT count(*) FROM testjsonb WHERE j @@ '$.age == 25.0'; SELECT count(*) FROM testjsonb WHERE j @@ '$.array[*] == "foo"'; SELECT count(*) FROM testjsonb WHERE j @@ '$.array[*] == "bar"'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($ ? (@.array[*] == "bar"))'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.array ? (@[*] == "bar"))'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($.array[*] ? (@ == "bar"))'; SELECT count(*) FROM testjsonb WHERE j @@ 'exists($)'; EXPLAIN (COSTS OFF) SELECT count(*) FROM testjsonb WHERE j @? '$.wait ? (@ == null)'; SELECT count(*) FROM testjsonb WHERE j @? '$.wait ? (@ == null)'; SELECT count(*) FROM testjsonb WHERE j @? '$.wait ? ("CC" == @)'; SELECT count(*) FROM testjsonb WHERE j @? '$ ? (@.wait == "CC" && true == @.public)'; SELECT count(*) FROM testjsonb WHERE j @? '$.age ? (@ == 25)'; SELECT count(*) FROM testjsonb WHERE j @? '$ ? (@.age == 25.0)'; SELECT count(*) FROM testjsonb WHERE j @? '$ ? (@.array[*] == "bar")'; SELECT count(*) FROM testjsonb WHERE j @? '$.array ? (@[*] == "bar")'; SELECT count(*) FROM testjsonb WHERE j @? '$.array[*] ? (@ == "bar")'; SELECT count(*) FROM testjsonb WHERE j @? '$'; SELECT count(*) FROM testjsonb WHERE j @? '$.public'; SELECT count(*) FROM testjsonb WHERE j @? '$.bar'; RESET enable_seqscan; DROP INDEX jidx; -- nested tests SELECT '{"ff":{"a":12,"b":16}}'::jsonb; SELECT '{"ff":{"a":12,"b":16},"qq":123}'::jsonb; SELECT '{"aa":["a","aaa"],"qq":{"a":12,"b":16,"c":["c1","c2"],"d":{"d1":"d1","d2":"d2","d1":"d3"}}}'::jsonb; SELECT '{"aa":["a","aaa"],"qq":{"a":"12","b":"16","c":["c1","c2"],"d":{"d1":"d1","d2":"d2"}}}'::jsonb; SELECT '{"aa":["a","aaa"],"qq":{"a":"12","b":"16","c":["c1","c2",["c3"],{"c4":4}],"d":{"d1":"d1","d2":"d2"}}}'::jsonb; SELECT '{"ff":["a","aaa"]}'::jsonb; SELECT '{"ff":{"a":12,"b":16},"qq":123,"x":[1,2],"Y":null}'::jsonb -> 'ff', '{"ff":{"a":12,"b":16},"qq":123,"x":[1,2],"Y":null}'::jsonb -> 'qq', ('{"ff":{"a":12,"b":16},"qq":123,"x":[1,2],"Y":null}'::jsonb -> 'Y') IS NULL AS f, ('{"ff":{"a":12,"b":16},"qq":123,"x":[1,2],"Y":null}'::jsonb ->> 'Y') IS NULL AS t, '{"ff":{"a":12,"b":16},"qq":123,"x":[1,2],"Y":null}'::jsonb -> 'x'; -- nested containment SELECT '{"a":[1,2],"c":"b"}'::jsonb @> '{"a":[1,2]}'; SELECT '{"a":[2,1],"c":"b"}'::jsonb @> '{"a":[1,2]}'; SELECT '{"a":{"1":2},"c":"b"}'::jsonb @> '{"a":[1,2]}'; SELECT '{"a":{"2":1},"c":"b"}'::jsonb @> '{"a":[1,2]}'; SELECT '{"a":{"1":2},"c":"b"}'::jsonb @> '{"a":{"1":2}}'; SELECT '{"a":{"2":1},"c":"b"}'::jsonb @> '{"a":{"1":2}}'; SELECT '["a","b"]'::jsonb @> '["a","b","c","b"]'; SELECT '["a","b","c","b"]'::jsonb @> '["a","b"]'; SELECT '["a","b","c",[1,2]]'::jsonb @> '["a",[1,2]]'; SELECT '["a","b","c",[1,2]]'::jsonb @> '["b",[1,2]]'; SELECT '{"a":[1,2],"c":"b"}'::jsonb @> '{"a":[1]}'; SELECT '{"a":[1,2],"c":"b"}'::jsonb @> '{"a":[2]}'; SELECT '{"a":[1,2],"c":"b"}'::jsonb @> '{"a":[3]}'; SELECT '{"a":[1,2,{"c":3,"x":4}],"c":"b"}'::jsonb @> '{"a":[{"c":3}]}'; SELECT '{"a":[1,2,{"c":3,"x":4}],"c":"b"}'::jsonb @> '{"a":[{"x":4}]}'; SELECT '{"a":[1,2,{"c":3,"x":4}],"c":"b"}'::jsonb @> '{"a":[{"x":4},3]}'; SELECT '{"a":[1,2,{"c":3,"x":4}],"c":"b"}'::jsonb @> '{"a":[{"x":4},1]}'; -- check some corner cases for indexed nested containment (bug #13756) create temp table nestjsonb (j jsonb); insert into nestjsonb (j) values ('{"a":[["b",{"x":1}],["b",{"x":2}]],"c":3}'); insert into nestjsonb (j) values ('[[14,2,3]]'); insert into nestjsonb (j) values ('[1,[14,2,3]]'); create index on nestjsonb using gin(j jsonb_path_ops); set enable_seqscan = on; set enable_bitmapscan = off; select * from nestjsonb where j @> '{"a":[[{"x":2}]]}'::jsonb; select * from nestjsonb where j @> '{"c":3}'; select * from nestjsonb where j @> '[[14]]'; set enable_seqscan = off; set enable_bitmapscan = on; select * from nestjsonb where j @> '{"a":[[{"x":2}]]}'::jsonb; select * from nestjsonb where j @> '{"c":3}'; select * from nestjsonb where j @> '[[14]]'; reset enable_seqscan; reset enable_bitmapscan; -- nested object field / array index lookup SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb -> 'n'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb -> 'a'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb -> 'b'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb -> 'c'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb -> 'd'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb -> 'd' -> '1'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb -> 'e'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb -> 0; --expecting error SELECT '["a","b","c",[1,2],null]'::jsonb -> 0; SELECT '["a","b","c",[1,2],null]'::jsonb -> 1; SELECT '["a","b","c",[1,2],null]'::jsonb -> 2; SELECT '["a","b","c",[1,2],null]'::jsonb -> 3; SELECT '["a","b","c",[1,2],null]'::jsonb -> 3 -> 1; SELECT '["a","b","c",[1,2],null]'::jsonb -> 4; SELECT '["a","b","c",[1,2],null]'::jsonb -> 5; SELECT '["a","b","c",[1,2],null]'::jsonb -> -1; SELECT '["a","b","c",[1,2],null]'::jsonb -> -5; SELECT '["a","b","c",[1,2],null]'::jsonb -> -6; --nested path extraction SELECT '{"a":"b","c":[1,2,3]}'::jsonb #> '{0}'; SELECT '{"a":"b","c":[1,2,3]}'::jsonb #> '{a}'; SELECT '{"a":"b","c":[1,2,3]}'::jsonb #> '{c}'; SELECT '{"a":"b","c":[1,2,3]}'::jsonb #> '{c,0}'; SELECT '{"a":"b","c":[1,2,3]}'::jsonb #> '{c,1}'; SELECT '{"a":"b","c":[1,2,3]}'::jsonb #> '{c,2}'; SELECT '{"a":"b","c":[1,2,3]}'::jsonb #> '{c,3}'; SELECT '{"a":"b","c":[1,2,3]}'::jsonb #> '{c,-1}'; SELECT '{"a":"b","c":[1,2,3]}'::jsonb #> '{c,-3}'; SELECT '{"a":"b","c":[1,2,3]}'::jsonb #> '{c,-4}'; SELECT '[0,1,2,[3,4],{"5":"five"}]'::jsonb #> '{0}'; SELECT '[0,1,2,[3,4],{"5":"five"}]'::jsonb #> '{3}'; SELECT '[0,1,2,[3,4],{"5":"five"}]'::jsonb #> '{4}'; SELECT '[0,1,2,[3,4],{"5":"five"}]'::jsonb #> '{4,5}'; --nested exists SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb ? 'n'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb ? 'a'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb ? 'b'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb ? 'c'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb ? 'd'; SELECT '{"n":null,"a":1,"b":[1,2],"c":{"1":2},"d":{"1":[2,3]}}'::jsonb ? 'e'; -- jsonb_strip_nulls select jsonb_strip_nulls(null); select jsonb_strip_nulls('1'); select jsonb_strip_nulls('"a string"'); select jsonb_strip_nulls('null'); select jsonb_strip_nulls('[1,2,null,3,4]'); select jsonb_strip_nulls('{"a":1,"b":null,"c":[2,null,3],"d":{"e":4,"f":null}}'); select jsonb_strip_nulls('[1,{"a":1,"b":null,"c":2},3]'); -- an empty object is not null and should not be stripped select jsonb_strip_nulls('{"a": {"b": null, "c": null}, "d": {} }'); select jsonb_pretty('{"a": "test", "b": [1, 2, 3], "c": "test3", "d":{"dd": "test4", "dd2":{"ddd": "test5"}}}'); select jsonb_pretty('[{"f1":1,"f2":null},2,null,[[{"x":true},6,7],8],3]'); select jsonb_pretty('{"a":["b", "c"], "d": {"e":"f"}}'); select jsonb_concat('{"d": "test", "a": [1, 2]}', '{"g": "test2", "c": {"c1":1, "c2":2}}'); select '{"aa":1 , "b":2, "cq":3}'::jsonb || '{"cq":"l", "b":"g", "fg":false}'; select '{"aa":1 , "b":2, "cq":3}'::jsonb || '{"aq":"l"}'; select '{"aa":1 , "b":2, "cq":3}'::jsonb || '{"aa":"l"}'; select '{"aa":1 , "b":2, "cq":3}'::jsonb || '{}'; select '["a", "b"]'::jsonb || '["c"]'; select '["a", "b"]'::jsonb || '["c", "d"]'; select '["c"]' || '["a", "b"]'::jsonb; select '["a", "b"]'::jsonb || '"c"'; select '"c"' || '["a", "b"]'::jsonb; select '[]'::jsonb || '["a"]'::jsonb; select '[]'::jsonb || '"a"'::jsonb; select '"b"'::jsonb || '"a"'::jsonb; select '{}'::jsonb || '{"a":"b"}'::jsonb; select '[]'::jsonb || '{"a":"b"}'::jsonb; select '{"a":"b"}'::jsonb || '[]'::jsonb; select '"a"'::jsonb || '{"a":1}'; select '{"a":1}' || '"a"'::jsonb; select '[3]'::jsonb || '{}'::jsonb; select '3'::jsonb || '[]'::jsonb; select '3'::jsonb || '4'::jsonb; select '3'::jsonb || '{}'::jsonb; select '["a", "b"]'::jsonb || '{"c":1}'; select '{"c": 1}'::jsonb || '["a", "b"]'; select '{}'::jsonb || '{"cq":"l", "b":"g", "fg":false}'; select pg_column_size('{}'::jsonb || '{}'::jsonb) = pg_column_size('{}'::jsonb); select pg_column_size('{"aa":1}'::jsonb || '{"b":2}'::jsonb) = pg_column_size('{"aa":1, "b":2}'::jsonb); select pg_column_size('{"aa":1, "b":2}'::jsonb || '{}'::jsonb) = pg_column_size('{"aa":1, "b":2}'::jsonb); select pg_column_size('{}'::jsonb || '{"aa":1, "b":2}'::jsonb) = pg_column_size('{"aa":1, "b":2}'::jsonb); select jsonb_delete('{"a":1 , "b":2, "c":3}'::jsonb, 'a'); select jsonb_delete('{"a":null , "b":2, "c":3}'::jsonb, 'a'); select jsonb_delete('{"a":1 , "b":2, "c":3}'::jsonb, 'b'); select jsonb_delete('{"a":1 , "b":2, "c":3}'::jsonb, 'c'); select jsonb_delete('{"a":1 , "b":2, "c":3}'::jsonb, 'd'); select '{"a":1 , "b":2, "c":3}'::jsonb - 'a'; select '{"a":null , "b":2, "c":3}'::jsonb - 'a'; select '{"a":1 , "b":2, "c":3}'::jsonb - 'b'; select '{"a":1 , "b":2, "c":3}'::jsonb - 'c'; select '{"a":1 , "b":2, "c":3}'::jsonb - 'd'; select pg_column_size('{"a":1 , "b":2, "c":3}'::jsonb - 'b') = pg_column_size('{"a":1, "b":2}'::jsonb); select '["a","b","c"]'::jsonb - 3; select '["a","b","c"]'::jsonb - 2; select '["a","b","c"]'::jsonb - 1; select '["a","b","c"]'::jsonb - 0; select '["a","b","c"]'::jsonb - -1; select '["a","b","c"]'::jsonb - -2; select '["a","b","c"]'::jsonb - -3; select '["a","b","c"]'::jsonb - -4; select '{"a":1 , "b":2, "c":3}'::jsonb - '{b}'::text[]; select '{"a":1 , "b":2, "c":3}'::jsonb - '{c,b}'::text[]; select '{"a":1 , "b":2, "c":3}'::jsonb - '{}'::text[]; select jsonb_set('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb, '{n}', '[1,2,3]'); select jsonb_set('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb, '{b,-1}', '[1,2,3]'); select jsonb_set('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb, '{d,1,0}', '[1,2,3]'); select jsonb_set('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb, '{d,NULL,0}', '[1,2,3]'); select jsonb_set('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb, '{n}', '{"1": 2}'); select jsonb_set('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb, '{b,-1}', '{"1": 2}'); select jsonb_set('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb, '{d,1,0}', '{"1": 2}'); select jsonb_set('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb, '{d,NULL,0}', '{"1": 2}'); select jsonb_set('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb, '{b,-1}', '"test"'); select jsonb_set('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb, '{b,-1}', '{"f": "test"}'); select jsonb_delete_path('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}', '{n}'); select jsonb_delete_path('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}', '{b,-1}'); select jsonb_delete_path('{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}', '{d,1,0}'); select '{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb #- '{n}'; select '{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb #- '{b,-1}'; select '{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb #- '{b,-1e}'; -- invalid array subscript select '{"n":null, "a":1, "b":[1,2], "c":{"1":2}, "d":{"1":[2,3]}}'::jsonb #- '{d,1,0}'; -- empty structure and error conditions for delete and replace select '"a"'::jsonb - 'a'; -- error select '{}'::jsonb - 'a'; select '[]'::jsonb - 'a'; select '"a"'::jsonb - 1; -- error select '{}'::jsonb - 1; -- error select '[]'::jsonb - 1; select '"a"'::jsonb #- '{a}'; -- error select '{}'::jsonb #- '{a}'; select '[]'::jsonb #- '{a}'; select jsonb_set('"a"','{a}','"b"'); --error select jsonb_set('{}','{a}','"b"', false); select jsonb_set('[]','{1}','"b"', false); select jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0}','[2,3,4]', false); -- jsonb_set adding instead of replacing -- prepend to array select jsonb_set('{"a":1,"b":[0,1,2],"c":{"d":4}}','{b,-33}','{"foo":123}'); -- append to array select jsonb_set('{"a":1,"b":[0,1,2],"c":{"d":4}}','{b,33}','{"foo":123}'); -- check nesting levels addition select jsonb_set('{"a":1,"b":[4,5,[0,1,2],6,7],"c":{"d":4}}','{b,2,33}','{"foo":123}'); -- add new key select jsonb_set('{"a":1,"b":[0,1,2],"c":{"d":4}}','{c,e}','{"foo":123}'); -- adding doesn't do anything if elements before last aren't present select jsonb_set('{"a":1,"b":[0,1,2],"c":{"d":4}}','{x,-33}','{"foo":123}'); select jsonb_set('{"a":1,"b":[0,1,2],"c":{"d":4}}','{x,y}','{"foo":123}'); -- add to empty object select jsonb_set('{}','{x}','{"foo":123}'); --add to empty array select jsonb_set('[]','{0}','{"foo":123}'); select jsonb_set('[]','{99}','{"foo":123}'); select jsonb_set('[]','{-99}','{"foo":123}'); select jsonb_set('{"a": [1, 2, 3]}', '{a, non_integer}', '"new_value"'); select jsonb_set('{"a": {"b": [1, 2, 3]}}', '{a, b, non_integer}', '"new_value"'); select jsonb_set('{"a": {"b": [1, 2, 3]}}', '{a, b, NULL}', '"new_value"'); -- jsonb_set_lax \pset null NULL -- pass though non nulls to jsonb_set select jsonb_set_lax('{"a":1,"b":2}','{b}','5') ; select jsonb_set_lax('{"a":1,"b":2}','{d}','6', true) ; -- using the default treatment select jsonb_set_lax('{"a":1,"b":2}','{b}',null); select jsonb_set_lax('{"a":1,"b":2}','{d}',null,true); -- errors select jsonb_set_lax('{"a":1,"b":2}', '{b}', null, true, null); select jsonb_set_lax('{"a":1,"b":2}', '{b}', null, true, 'no_such_treatment'); -- explicit treatments select jsonb_set_lax('{"a":1,"b":2}', '{b}', null, null_value_treatment => 'raise_exception') as raise_exception; select jsonb_set_lax('{"a":1,"b":2}', '{b}', null, null_value_treatment => 'return_target') as return_target; select jsonb_set_lax('{"a":1,"b":2}', '{b}', null, null_value_treatment => 'delete_key') as delete_key; select jsonb_set_lax('{"a":1,"b":2}', '{b}', null, null_value_treatment => 'use_json_null') as use_json_null; \pset null -- jsonb_insert select jsonb_insert('{"a": [0,1,2]}', '{a, 1}', '"new_value"'); select jsonb_insert('{"a": [0,1,2]}', '{a, 1}', '"new_value"', true); select jsonb_insert('{"a": {"b": {"c": [0, 1, "test1", "test2"]}}}', '{a, b, c, 2}', '"new_value"'); select jsonb_insert('{"a": {"b": {"c": [0, 1, "test1", "test2"]}}}', '{a, b, c, 2}', '"new_value"', true); select jsonb_insert('{"a": [0,1,2]}', '{a, 1}', '{"b": "value"}'); select jsonb_insert('{"a": [0,1,2]}', '{a, 1}', '["value1", "value2"]'); -- edge cases select jsonb_insert('{"a": [0,1,2]}', '{a, 0}', '"new_value"'); select jsonb_insert('{"a": [0,1,2]}', '{a, 0}', '"new_value"', true); select jsonb_insert('{"a": [0,1,2]}', '{a, 2}', '"new_value"'); select jsonb_insert('{"a": [0,1,2]}', '{a, 2}', '"new_value"', true); select jsonb_insert('{"a": [0,1,2]}', '{a, -1}', '"new_value"'); select jsonb_insert('{"a": [0,1,2]}', '{a, -1}', '"new_value"', true); select jsonb_insert('[]', '{1}', '"new_value"'); select jsonb_insert('[]', '{1}', '"new_value"', true); select jsonb_insert('{"a": []}', '{a, 1}', '"new_value"'); select jsonb_insert('{"a": []}', '{a, 1}', '"new_value"', true); select jsonb_insert('{"a": [0,1,2]}', '{a, 10}', '"new_value"'); select jsonb_insert('{"a": [0,1,2]}', '{a, -10}', '"new_value"'); -- jsonb_insert should be able to insert new value for objects, but not to replace select jsonb_insert('{"a": {"b": "value"}}', '{a, c}', '"new_value"'); select jsonb_insert('{"a": {"b": "value"}}', '{a, c}', '"new_value"', true); select jsonb_insert('{"a": {"b": "value"}}', '{a, b}', '"new_value"'); select jsonb_insert('{"a": {"b": "value"}}', '{a, b}', '"new_value"', true); -- jsonb to tsvector select to_tsvector('{"a": "aaa bbb ddd ccc", "b": ["eee fff ggg"], "c": {"d": "hhh iii"}}'::jsonb); -- jsonb to tsvector with config select to_tsvector('simple', '{"a": "aaa bbb ddd ccc", "b": ["eee fff ggg"], "c": {"d": "hhh iii"}}'::jsonb); -- jsonb to tsvector with stop words select to_tsvector('english', '{"a": "aaa in bbb ddd ccc", "b": ["the eee fff ggg"], "c": {"d": "hhh. iii"}}'::jsonb); -- jsonb to tsvector with numeric values select to_tsvector('english', '{"a": "aaa in bbb ddd ccc", "b": 123, "c": 456}'::jsonb); -- jsonb_to_tsvector select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '"all"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '"key"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '"string"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '"numeric"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '"boolean"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '["string", "numeric"]'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '"all"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '"key"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '"string"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '"numeric"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '"boolean"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '["string", "numeric"]'); -- to_tsvector corner cases select to_tsvector('""'::jsonb); select to_tsvector('{}'::jsonb); select to_tsvector('[]'::jsonb); select to_tsvector('null'::jsonb); -- jsonb_to_tsvector corner cases select jsonb_to_tsvector('""'::jsonb, '"all"'); select jsonb_to_tsvector('{}'::jsonb, '"all"'); select jsonb_to_tsvector('[]'::jsonb, '"all"'); select jsonb_to_tsvector('null'::jsonb, '"all"'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '""'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '{}'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '[]'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, 'null'); select jsonb_to_tsvector('english', '{"a": "aaa in bbb", "b": 123, "c": 456, "d": true, "f": false, "g": null}'::jsonb, '["all", null]'); -- ts_headline for jsonb select ts_headline('{"a": "aaa bbb", "b": {"c": "ccc ddd fff", "c1": "ccc1 ddd1"}, "d": ["ggg hhh", "iii jjj"]}'::jsonb, tsquery('bbb & ddd & hhh')); select ts_headline('english', '{"a": "aaa bbb", "b": {"c": "ccc ddd fff"}, "d": ["ggg hhh", "iii jjj"]}'::jsonb, tsquery('bbb & ddd & hhh')); select ts_headline('{"a": "aaa bbb", "b": {"c": "ccc ddd fff", "c1": "ccc1 ddd1"}, "d": ["ggg hhh", "iii jjj"]}'::jsonb, tsquery('bbb & ddd & hhh'), 'StartSel = <, StopSel = >'); select ts_headline('english', '{"a": "aaa bbb", "b": {"c": "ccc ddd fff", "c1": "ccc1 ddd1"}, "d": ["ggg hhh", "iii jjj"]}'::jsonb, tsquery('bbb & ddd & hhh'), 'StartSel = <, StopSel = >'); -- corner cases for ts_headline with jsonb select ts_headline('null'::jsonb, tsquery('aaa & bbb')); select ts_headline('{}'::jsonb, tsquery('aaa & bbb')); select ts_headline('[]'::jsonb, tsquery('aaa & bbb')); -- casts select 'true'::jsonb::bool; select '[]'::jsonb::bool; select '1.0'::jsonb::float; select '[1.0]'::jsonb::float; select '12345'::jsonb::int4; select '"hello"'::jsonb::int4; select '12345'::jsonb::numeric; select '{}'::jsonb::numeric; select '12345.05'::jsonb::numeric; select '12345.05'::jsonb::float4; select '12345.05'::jsonb::float8; select '12345.05'::jsonb::int2; select '12345.05'::jsonb::int4; select '12345.05'::jsonb::int8; select '12345.0000000000000000000000000000000000000000000005'::jsonb::numeric; select '12345.0000000000000000000000000000000000000000000005'::jsonb::float4; select '12345.0000000000000000000000000000000000000000000005'::jsonb::float8; select '12345.0000000000000000000000000000000000000000000005'::jsonb::int2; select '12345.0000000000000000000000000000000000000000000005'::jsonb::int4; select '12345.0000000000000000000000000000000000000000000005'::jsonb::int8; libpg_query-13-2.1.0/test/sql/postgres_regress/jsonb_jsonpath.sql000066400000000000000000001073121413137616400252070ustar00rootroot00000000000000select jsonb '{"a": 12}' @? '$'; select jsonb '{"a": 12}' @? '1'; select jsonb '{"a": 12}' @? '$.a.b'; select jsonb '{"a": 12}' @? '$.b'; select jsonb '{"a": 12}' @? '$.a + 2'; select jsonb '{"a": 12}' @? '$.b + 2'; select jsonb '{"a": {"a": 12}}' @? '$.a.a'; select jsonb '{"a": {"a": 12}}' @? '$.*.a'; select jsonb '{"b": {"a": 12}}' @? '$.*.a'; select jsonb '{"b": {"a": 12}}' @? '$.*.b'; select jsonb '{"b": {"a": 12}}' @? 'strict $.*.b'; select jsonb '{}' @? '$.*'; select jsonb '{"a": 1}' @? '$.*'; select jsonb '{"a": {"b": 1}}' @? 'lax $.**{1}'; select jsonb '{"a": {"b": 1}}' @? 'lax $.**{2}'; select jsonb '{"a": {"b": 1}}' @? 'lax $.**{3}'; select jsonb '[]' @? '$[*]'; select jsonb '[1]' @? '$[*]'; select jsonb '[1]' @? '$[1]'; select jsonb '[1]' @? 'strict $[1]'; select jsonb_path_query('[1]', 'strict $[1]'); select jsonb_path_query('[1]', 'strict $[1]', silent => true); select jsonb '[1]' @? 'lax $[10000000000000000]'; select jsonb '[1]' @? 'strict $[10000000000000000]'; select jsonb_path_query('[1]', 'lax $[10000000000000000]'); select jsonb_path_query('[1]', 'strict $[10000000000000000]'); select jsonb '[1]' @? '$[0]'; select jsonb '[1]' @? '$[0.3]'; select jsonb '[1]' @? '$[0.5]'; select jsonb '[1]' @? '$[0.9]'; select jsonb '[1]' @? '$[1.2]'; select jsonb '[1]' @? 'strict $[1.2]'; select jsonb '{"a": [1,2,3], "b": [3,4,5]}' @? '$ ? (@.a[*] > @.b[*])'; select jsonb '{"a": [1,2,3], "b": [3,4,5]}' @? '$ ? (@.a[*] >= @.b[*])'; select jsonb '{"a": [1,2,3], "b": [3,4,"5"]}' @? '$ ? (@.a[*] >= @.b[*])'; select jsonb '{"a": [1,2,3], "b": [3,4,"5"]}' @? 'strict $ ? (@.a[*] >= @.b[*])'; select jsonb '{"a": [1,2,3], "b": [3,4,null]}' @? '$ ? (@.a[*] >= @.b[*])'; select jsonb '1' @? '$ ? ((@ == "1") is unknown)'; select jsonb '1' @? '$ ? ((@ == 1) is unknown)'; select jsonb '[{"a": 1}, {"a": 2}]' @? '$[0 to 1] ? (@.a > 1)'; select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'lax $[*].a', silent => false); select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'lax $[*].a', silent => true); select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'strict $[*].a', silent => false); select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'strict $[*].a', silent => true); select jsonb_path_query('1', 'lax $.a'); select jsonb_path_query('1', 'strict $.a'); select jsonb_path_query('1', 'strict $.*'); select jsonb_path_query('1', 'strict $.a', silent => true); select jsonb_path_query('1', 'strict $.*', silent => true); select jsonb_path_query('[]', 'lax $.a'); select jsonb_path_query('[]', 'strict $.a'); select jsonb_path_query('[]', 'strict $.a', silent => true); select jsonb_path_query('{}', 'lax $.a'); select jsonb_path_query('{}', 'strict $.a'); select jsonb_path_query('{}', 'strict $.a', silent => true); select jsonb_path_query('1', 'strict $[1]'); select jsonb_path_query('1', 'strict $[*]'); select jsonb_path_query('[]', 'strict $[1]'); select jsonb_path_query('[]', 'strict $["a"]'); select jsonb_path_query('1', 'strict $[1]', silent => true); select jsonb_path_query('1', 'strict $[*]', silent => true); select jsonb_path_query('[]', 'strict $[1]', silent => true); select jsonb_path_query('[]', 'strict $["a"]', silent => true); select jsonb_path_query('{"a": 12, "b": {"a": 13}}', '$.a'); select jsonb_path_query('{"a": 12, "b": {"a": 13}}', '$.b'); select jsonb_path_query('{"a": 12, "b": {"a": 13}}', '$.*'); select jsonb_path_query('{"a": 12, "b": {"a": 13}}', 'lax $.*.a'); select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[*].a'); select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[*].*'); select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[0].a'); select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[1].a'); select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[2].a'); select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[0,1].a'); select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[0 to 10].a'); select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[0 to 10 / 0].a'); select jsonb_path_query('[12, {"a": 13}, {"b": 14}, "ccc", true]', '$[2.5 - 1 to $.size() - 2]'); select jsonb_path_query('1', 'lax $[0]'); select jsonb_path_query('1', 'lax $[*]'); select jsonb_path_query('[1]', 'lax $[0]'); select jsonb_path_query('[1]', 'lax $[*]'); select jsonb_path_query('[1,2,3]', 'lax $[*]'); select jsonb_path_query('[1,2,3]', 'strict $[*].a'); select jsonb_path_query('[1,2,3]', 'strict $[*].a', silent => true); select jsonb_path_query('[]', '$[last]'); select jsonb_path_query('[]', '$[last ? (exists(last))]'); select jsonb_path_query('[]', 'strict $[last]'); select jsonb_path_query('[]', 'strict $[last]', silent => true); select jsonb_path_query('[1]', '$[last]'); select jsonb_path_query('[1,2,3]', '$[last]'); select jsonb_path_query('[1,2,3]', '$[last - 1]'); select jsonb_path_query('[1,2,3]', '$[last ? (@.type() == "number")]'); select jsonb_path_query('[1,2,3]', '$[last ? (@.type() == "string")]'); select jsonb_path_query('[1,2,3]', '$[last ? (@.type() == "string")]', silent => true); select * from jsonb_path_query('{"a": 10}', '$'); select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)'); select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '1'); select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '[{"value" : 13}]'); select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '{"value" : 13}'); select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '{"value" : 8}'); select * from jsonb_path_query('{"a": 10}', '$.a ? (@ < $value)', '{"value" : 13}'); select * from jsonb_path_query('[10,11,12,13,14,15]', '$[*] ? (@ < $value)', '{"value" : 13}'); select * from jsonb_path_query('[10,11,12,13,14,15]', '$[0,1] ? (@ < $x.value)', '{"x": {"value" : 13}}'); select * from jsonb_path_query('[10,11,12,13,14,15]', '$[0 to 2] ? (@ < $value)', '{"value" : 15}'); select * from jsonb_path_query('[1,"1",2,"2",null]', '$[*] ? (@ == "1")'); select * from jsonb_path_query('[1,"1",2,"2",null]', '$[*] ? (@ == $value)', '{"value" : "1"}'); select * from jsonb_path_query('[1,"1",2,"2",null]', '$[*] ? (@ == $value)', '{"value" : null}'); select * from jsonb_path_query('[1, "2", null]', '$[*] ? (@ != null)'); select * from jsonb_path_query('[1, "2", null]', '$[*] ? (@ == null)'); select * from jsonb_path_query('{}', '$ ? (@ == @)'); select * from jsonb_path_query('[]', 'strict $ ? (@ == @)'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{0}'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{0 to last}'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{1}'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{1 to last}'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{2}'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{2 to last}'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{3 to last}'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{last}'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**.b ? (@ > 0)'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{0}.b ? (@ > 0)'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{1}.b ? (@ > 0)'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{0 to last}.b ? (@ > 0)'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{1 to last}.b ? (@ > 0)'); select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{1 to 2}.b ? (@ > 0)'); select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**.b ? (@ > 0)'); select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{0}.b ? (@ > 0)'); select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{1}.b ? (@ > 0)'); select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{0 to last}.b ? (@ > 0)'); select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{1 to last}.b ? (@ > 0)'); select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{1 to 2}.b ? (@ > 0)'); select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{2 to 3}.b ? (@ > 0)'); select jsonb '{"a": {"b": 1}}' @? '$.**.b ? ( @ > 0)'; select jsonb '{"a": {"b": 1}}' @? '$.**{0}.b ? ( @ > 0)'; select jsonb '{"a": {"b": 1}}' @? '$.**{1}.b ? ( @ > 0)'; select jsonb '{"a": {"b": 1}}' @? '$.**{0 to last}.b ? ( @ > 0)'; select jsonb '{"a": {"b": 1}}' @? '$.**{1 to last}.b ? ( @ > 0)'; select jsonb '{"a": {"b": 1}}' @? '$.**{1 to 2}.b ? ( @ > 0)'; select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**.b ? ( @ > 0)'; select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{0}.b ? ( @ > 0)'; select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{1}.b ? ( @ > 0)'; select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{0 to last}.b ? ( @ > 0)'; select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{1 to last}.b ? ( @ > 0)'; select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{1 to 2}.b ? ( @ > 0)'; select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{2 to 3}.b ? ( @ > 0)'; select jsonb_path_query('{"g": {"x": 2}}', '$.g ? (exists (@.x))'); select jsonb_path_query('{"g": {"x": 2}}', '$.g ? (exists (@.y))'); select jsonb_path_query('{"g": {"x": 2}}', '$.g ? (exists (@.x ? (@ >= 2) ))'); select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'lax $.g ? (exists (@.x))'); select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'lax $.g ? (exists (@.x + "3"))'); select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'lax $.g ? ((exists (@.x + "3")) is unknown)'); select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'strict $.g[*] ? (exists (@.x))'); select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'strict $.g[*] ? ((exists (@.x)) is unknown)'); select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'strict $.g ? (exists (@[*].x))'); select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'strict $.g ? ((exists (@[*].x)) is unknown)'); --test ternary logic select x, y, jsonb_path_query( '[true, false, null]', '$[*] ? (@ == true && ($x == true && $y == true) || @ == false && !($x == true && $y == true) || @ == null && ($x == true && $y == true) is unknown)', jsonb_build_object('x', x, 'y', y) ) as "x && y" from (values (jsonb 'true'), ('false'), ('"null"')) x(x), (values (jsonb 'true'), ('false'), ('"null"')) y(y); select x, y, jsonb_path_query( '[true, false, null]', '$[*] ? (@ == true && ($x == true || $y == true) || @ == false && !($x == true || $y == true) || @ == null && ($x == true || $y == true) is unknown)', jsonb_build_object('x', x, 'y', y) ) as "x || y" from (values (jsonb 'true'), ('false'), ('"null"')) x(x), (values (jsonb 'true'), ('false'), ('"null"')) y(y); select jsonb '{"a": 1, "b":1}' @? '$ ? (@.a == @.b)'; select jsonb '{"c": {"a": 1, "b":1}}' @? '$ ? (@.a == @.b)'; select jsonb '{"c": {"a": 1, "b":1}}' @? '$.c ? (@.a == @.b)'; select jsonb '{"c": {"a": 1, "b":1}}' @? '$.c ? ($.c.a == @.b)'; select jsonb '{"c": {"a": 1, "b":1}}' @? '$.* ? (@.a == @.b)'; select jsonb '{"a": 1, "b":1}' @? '$.** ? (@.a == @.b)'; select jsonb '{"c": {"a": 1, "b":1}}' @? '$.** ? (@.a == @.b)'; select jsonb_path_query('{"c": {"a": 2, "b":1}}', '$.** ? (@.a == 1 + 1)'); select jsonb_path_query('{"c": {"a": 2, "b":1}}', '$.** ? (@.a == (1 + 1))'); select jsonb_path_query('{"c": {"a": 2, "b":1}}', '$.** ? (@.a == @.b + 1)'); select jsonb_path_query('{"c": {"a": 2, "b":1}}', '$.** ? (@.a == (@.b + 1))'); select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == - 1)'; select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == -1)'; select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == -@.b)'; select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == - @.b)'; select jsonb '{"c": {"a": 0, "b":1}}' @? '$.** ? (@.a == 1 - @.b)'; select jsonb '{"c": {"a": 2, "b":1}}' @? '$.** ? (@.a == 1 - - @.b)'; select jsonb '{"c": {"a": 0, "b":1}}' @? '$.** ? (@.a == 1 - +@.b)'; select jsonb '[1,2,3]' @? '$ ? (+@[*] > +2)'; select jsonb '[1,2,3]' @? '$ ? (+@[*] > +3)'; select jsonb '[1,2,3]' @? '$ ? (-@[*] < -2)'; select jsonb '[1,2,3]' @? '$ ? (-@[*] < -3)'; select jsonb '1' @? '$ ? ($ > 0)'; -- arithmetic errors select jsonb_path_query('[1,2,0,3]', '$[*] ? (2 / @ > 0)'); select jsonb_path_query('[1,2,0,3]', '$[*] ? ((2 / @ > 0) is unknown)'); select jsonb_path_query('0', '1 / $'); select jsonb_path_query('0', '1 / $ + 2'); select jsonb_path_query('0', '-(3 + 1 % $)'); select jsonb_path_query('1', '$ + "2"'); select jsonb_path_query('[1, 2]', '3 * $'); select jsonb_path_query('"a"', '-$'); select jsonb_path_query('[1,"2",3]', '+$'); select jsonb_path_query('1', '$ + "2"', silent => true); select jsonb_path_query('[1, 2]', '3 * $', silent => true); select jsonb_path_query('"a"', '-$', silent => true); select jsonb_path_query('[1,"2",3]', '+$', silent => true); select jsonb '["1",2,0,3]' @? '-$[*]'; select jsonb '[1,"2",0,3]' @? '-$[*]'; select jsonb '["1",2,0,3]' @? 'strict -$[*]'; select jsonb '[1,"2",0,3]' @? 'strict -$[*]'; -- unwrapping of operator arguments in lax mode select jsonb_path_query('{"a": [2]}', 'lax $.a * 3'); select jsonb_path_query('{"a": [2]}', 'lax $.a + 3'); select jsonb_path_query('{"a": [2, 3, 4]}', 'lax -$.a'); -- should fail select jsonb_path_query('{"a": [1, 2]}', 'lax $.a * 3'); select jsonb_path_query('{"a": [1, 2]}', 'lax $.a * 3', silent => true); -- extension: boolean expressions select jsonb_path_query('2', '$ > 1'); select jsonb_path_query('2', '$ <= 1'); select jsonb_path_query('2', '$ == "2"'); select jsonb '2' @? '$ == "2"'; select jsonb '2' @@ '$ > 1'; select jsonb '2' @@ '$ <= 1'; select jsonb '2' @@ '$ == "2"'; select jsonb '2' @@ '1'; select jsonb '{}' @@ '$'; select jsonb '[]' @@ '$'; select jsonb '[1,2,3]' @@ '$[*]'; select jsonb '[]' @@ '$[*]'; select jsonb_path_match('[[1, true], [2, false]]', 'strict $[*] ? (@[0] > $x) [1]', '{"x": 1}'); select jsonb_path_match('[[1, true], [2, false]]', 'strict $[*] ? (@[0] < $x) [1]', '{"x": 2}'); select jsonb_path_match('[{"a": 1}, {"a": 2}, 3]', 'lax exists($[*].a)', silent => false); select jsonb_path_match('[{"a": 1}, {"a": 2}, 3]', 'lax exists($[*].a)', silent => true); select jsonb_path_match('[{"a": 1}, {"a": 2}, 3]', 'strict exists($[*].a)', silent => false); select jsonb_path_match('[{"a": 1}, {"a": 2}, 3]', 'strict exists($[*].a)', silent => true); select jsonb_path_query('[null,1,true,"a",[],{}]', '$.type()'); select jsonb_path_query('[null,1,true,"a",[],{}]', 'lax $.type()'); select jsonb_path_query('[null,1,true,"a",[],{}]', '$[*].type()'); select jsonb_path_query('null', 'null.type()'); select jsonb_path_query('null', 'true.type()'); select jsonb_path_query('null', '(123).type()'); select jsonb_path_query('null', '"123".type()'); select jsonb_path_query('{"a": 2}', '($.a - 5).abs() + 10'); select jsonb_path_query('{"a": 2.5}', '-($.a * $.a).floor() % 4.3'); select jsonb_path_query('[1, 2, 3]', '($[*] > 2) ? (@ == true)'); select jsonb_path_query('[1, 2, 3]', '($[*] > 3).type()'); select jsonb_path_query('[1, 2, 3]', '($[*].a > 3).type()'); select jsonb_path_query('[1, 2, 3]', 'strict ($[*].a > 3).type()'); select jsonb_path_query('[1,null,true,"11",[],[1],[1,2,3],{},{"a":1,"b":2}]', 'strict $[*].size()'); select jsonb_path_query('[1,null,true,"11",[],[1],[1,2,3],{},{"a":1,"b":2}]', 'strict $[*].size()', silent => true); select jsonb_path_query('[1,null,true,"11",[],[1],[1,2,3],{},{"a":1,"b":2}]', 'lax $[*].size()'); select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].abs()'); select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].floor()'); select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].ceiling()'); select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].ceiling().abs()'); select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].ceiling().abs().type()'); select jsonb_path_query('[{},1]', '$[*].keyvalue()'); select jsonb_path_query('[{},1]', '$[*].keyvalue()', silent => true); select jsonb_path_query('{}', '$.keyvalue()'); select jsonb_path_query('{"a": 1, "b": [1, 2], "c": {"a": "bbb"}}', '$.keyvalue()'); select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', '$[*].keyvalue()'); select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', 'strict $.keyvalue()'); select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', 'lax $.keyvalue()'); select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', 'strict $.keyvalue().a'); select jsonb '{"a": 1, "b": [1, 2]}' @? 'lax $.keyvalue()'; select jsonb '{"a": 1, "b": [1, 2]}' @? 'lax $.keyvalue().key'; select jsonb_path_query('null', '$.double()'); select jsonb_path_query('true', '$.double()'); select jsonb_path_query('null', '$.double()', silent => true); select jsonb_path_query('true', '$.double()', silent => true); select jsonb_path_query('[]', '$.double()'); select jsonb_path_query('[]', 'strict $.double()'); select jsonb_path_query('{}', '$.double()'); select jsonb_path_query('[]', 'strict $.double()', silent => true); select jsonb_path_query('{}', '$.double()', silent => true); select jsonb_path_query('1.23', '$.double()'); select jsonb_path_query('"1.23"', '$.double()'); select jsonb_path_query('"1.23aaa"', '$.double()'); select jsonb_path_query('1e1000', '$.double()'); select jsonb_path_query('"nan"', '$.double()'); select jsonb_path_query('"NaN"', '$.double()'); select jsonb_path_query('"inf"', '$.double()'); select jsonb_path_query('"-inf"', '$.double()'); select jsonb_path_query('"inf"', '$.double()', silent => true); select jsonb_path_query('"-inf"', '$.double()', silent => true); select jsonb_path_query('{}', '$.abs()'); select jsonb_path_query('true', '$.floor()'); select jsonb_path_query('"1.2"', '$.ceiling()'); select jsonb_path_query('{}', '$.abs()', silent => true); select jsonb_path_query('true', '$.floor()', silent => true); select jsonb_path_query('"1.2"', '$.ceiling()', silent => true); select jsonb_path_query('["", "a", "abc", "abcabc"]', '$[*] ? (@ starts with "abc")'); select jsonb_path_query('["", "a", "abc", "abcabc"]', 'strict $ ? (@[*] starts with "abc")'); select jsonb_path_query('["", "a", "abd", "abdabc"]', 'strict $ ? (@[*] starts with "abc")'); select jsonb_path_query('["abc", "abcabc", null, 1]', 'strict $ ? (@[*] starts with "abc")'); select jsonb_path_query('["abc", "abcabc", null, 1]', 'strict $ ? ((@[*] starts with "abc") is unknown)'); select jsonb_path_query('[[null, 1, "abc", "abcabc"]]', 'lax $ ? (@[*] starts with "abc")'); select jsonb_path_query('[[null, 1, "abd", "abdabc"]]', 'lax $ ? ((@[*] starts with "abc") is unknown)'); select jsonb_path_query('[null, 1, "abd", "abdabc"]', 'lax $[*] ? ((@ starts with "abc") is unknown)'); select jsonb_path_query('[null, 1, "abc", "abd", "aBdC", "abdacb", "babc", "adc\nabc", "ab\nadc"]', 'lax $[*] ? (@ like_regex "^ab.*c")'); select jsonb_path_query('[null, 1, "abc", "abd", "aBdC", "abdacb", "babc", "adc\nabc", "ab\nadc"]', 'lax $[*] ? (@ like_regex "^ab.*c" flag "i")'); select jsonb_path_query('[null, 1, "abc", "abd", "aBdC", "abdacb", "babc", "adc\nabc", "ab\nadc"]', 'lax $[*] ? (@ like_regex "^ab.*c" flag "m")'); select jsonb_path_query('[null, 1, "abc", "abd", "aBdC", "abdacb", "babc", "adc\nabc", "ab\nadc"]', 'lax $[*] ? (@ like_regex "^ab.*c" flag "s")'); select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "a\\b" flag "q")'); select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "a\\b" flag "")'); select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "^a\\b$" flag "q")'); select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "^a\\B$" flag "q")'); select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "^a\\B$" flag "iq")'); select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "^a\\b$" flag "")'); select jsonb_path_query('null', '$.datetime()'); select jsonb_path_query('true', '$.datetime()'); select jsonb_path_query('1', '$.datetime()'); select jsonb_path_query('[]', '$.datetime()'); select jsonb_path_query('[]', 'strict $.datetime()'); select jsonb_path_query('{}', '$.datetime()'); select jsonb_path_query('"bogus"', '$.datetime()'); select jsonb_path_query('"12:34"', '$.datetime("aaa")'); select jsonb_path_query('"aaaa"', '$.datetime("HH24")'); select jsonb '"10-03-2017"' @? '$.datetime("dd-mm-yyyy")'; select jsonb_path_query('"10-03-2017"', '$.datetime("dd-mm-yyyy")'); select jsonb_path_query('"10-03-2017"', '$.datetime("dd-mm-yyyy").type()'); select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy")'); select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy").type()'); select jsonb_path_query('"10-03-2017 12:34"', ' $.datetime("dd-mm-yyyy HH24:MI").type()'); select jsonb_path_query('"10-03-2017 12:34 +05:20"', '$.datetime("dd-mm-yyyy HH24:MI TZH:TZM").type()'); select jsonb_path_query('"12:34:56"', '$.datetime("HH24:MI:SS").type()'); select jsonb_path_query('"12:34:56 +05:20"', '$.datetime("HH24:MI:SS TZH:TZM").type()'); select jsonb_path_query('"10-03-2017T12:34:56"', '$.datetime("dd-mm-yyyy\"T\"HH24:MI:SS")'); select jsonb_path_query('"10-03-2017t12:34:56"', '$.datetime("dd-mm-yyyy\"T\"HH24:MI:SS")'); select jsonb_path_query('"10-03-2017 12:34:56"', '$.datetime("dd-mm-yyyy\"T\"HH24:MI:SS")'); set time zone '+00'; select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy HH24:MI")'); select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy HH24:MI TZH")'); select jsonb_path_query('"10-03-2017 12:34 +05"', '$.datetime("dd-mm-yyyy HH24:MI TZH")'); select jsonb_path_query('"10-03-2017 12:34 -05"', '$.datetime("dd-mm-yyyy HH24:MI TZH")'); select jsonb_path_query('"10-03-2017 12:34 +05:20"', '$.datetime("dd-mm-yyyy HH24:MI TZH:TZM")'); select jsonb_path_query('"10-03-2017 12:34 -05:20"', '$.datetime("dd-mm-yyyy HH24:MI TZH:TZM")'); select jsonb_path_query('"12:34"', '$.datetime("HH24:MI")'); select jsonb_path_query('"12:34"', '$.datetime("HH24:MI TZH")'); select jsonb_path_query('"12:34 +05"', '$.datetime("HH24:MI TZH")'); select jsonb_path_query('"12:34 -05"', '$.datetime("HH24:MI TZH")'); select jsonb_path_query('"12:34 +05:20"', '$.datetime("HH24:MI TZH:TZM")'); select jsonb_path_query('"12:34 -05:20"', '$.datetime("HH24:MI TZH:TZM")'); set time zone '+10'; select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy HH24:MI")'); select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy HH24:MI TZH")'); select jsonb_path_query('"10-03-2017 12:34 +05"', '$.datetime("dd-mm-yyyy HH24:MI TZH")'); select jsonb_path_query('"10-03-2017 12:34 -05"', '$.datetime("dd-mm-yyyy HH24:MI TZH")'); select jsonb_path_query('"10-03-2017 12:34 +05:20"', '$.datetime("dd-mm-yyyy HH24:MI TZH:TZM")'); select jsonb_path_query('"10-03-2017 12:34 -05:20"', '$.datetime("dd-mm-yyyy HH24:MI TZH:TZM")'); select jsonb_path_query('"12:34"', '$.datetime("HH24:MI")'); select jsonb_path_query('"12:34"', '$.datetime("HH24:MI TZH")'); select jsonb_path_query('"12:34 +05"', '$.datetime("HH24:MI TZH")'); select jsonb_path_query('"12:34 -05"', '$.datetime("HH24:MI TZH")'); select jsonb_path_query('"12:34 +05:20"', '$.datetime("HH24:MI TZH:TZM")'); select jsonb_path_query('"12:34 -05:20"', '$.datetime("HH24:MI TZH:TZM")'); set time zone default; select jsonb_path_query('"2017-03-10"', '$.datetime().type()'); select jsonb_path_query('"2017-03-10"', '$.datetime()'); select jsonb_path_query('"2017-03-10 12:34:56"', '$.datetime().type()'); select jsonb_path_query('"2017-03-10 12:34:56"', '$.datetime()'); select jsonb_path_query('"2017-03-10 12:34:56+3"', '$.datetime().type()'); select jsonb_path_query('"2017-03-10 12:34:56+3"', '$.datetime()'); select jsonb_path_query('"2017-03-10 12:34:56+3:10"', '$.datetime().type()'); select jsonb_path_query('"2017-03-10 12:34:56+3:10"', '$.datetime()'); select jsonb_path_query('"2017-03-10T12:34:56+3:10"', '$.datetime()'); select jsonb_path_query('"2017-03-10t12:34:56+3:10"', '$.datetime()'); select jsonb_path_query('"12:34:56"', '$.datetime().type()'); select jsonb_path_query('"12:34:56"', '$.datetime()'); select jsonb_path_query('"12:34:56+3"', '$.datetime().type()'); select jsonb_path_query('"12:34:56+3"', '$.datetime()'); select jsonb_path_query('"12:34:56+3:10"', '$.datetime().type()'); select jsonb_path_query('"12:34:56+3:10"', '$.datetime()'); set time zone '+00'; -- date comparison select jsonb_path_query( '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]', '$[*].datetime() ? (@ == "10.03.2017".datetime("dd.mm.yyyy"))'); select jsonb_path_query( '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]', '$[*].datetime() ? (@ >= "10.03.2017".datetime("dd.mm.yyyy"))'); select jsonb_path_query( '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]', '$[*].datetime() ? (@ < "10.03.2017".datetime("dd.mm.yyyy"))'); select jsonb_path_query_tz( '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]', '$[*].datetime() ? (@ == "10.03.2017".datetime("dd.mm.yyyy"))'); select jsonb_path_query_tz( '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]', '$[*].datetime() ? (@ >= "10.03.2017".datetime("dd.mm.yyyy"))'); select jsonb_path_query_tz( '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]', '$[*].datetime() ? (@ < "10.03.2017".datetime("dd.mm.yyyy"))'); -- time comparison select jsonb_path_query( '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].datetime() ? (@ == "12:35".datetime("HH24:MI"))'); select jsonb_path_query( '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].datetime() ? (@ >= "12:35".datetime("HH24:MI"))'); select jsonb_path_query( '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].datetime() ? (@ < "12:35".datetime("HH24:MI"))'); select jsonb_path_query_tz( '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].datetime() ? (@ == "12:35".datetime("HH24:MI"))'); select jsonb_path_query_tz( '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].datetime() ? (@ >= "12:35".datetime("HH24:MI"))'); select jsonb_path_query_tz( '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]', '$[*].datetime() ? (@ < "12:35".datetime("HH24:MI"))'); -- timetz comparison select jsonb_path_query( '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]', '$[*].datetime() ? (@ == "12:35 +1".datetime("HH24:MI TZH"))'); select jsonb_path_query( '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]', '$[*].datetime() ? (@ >= "12:35 +1".datetime("HH24:MI TZH"))'); select jsonb_path_query( '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]', '$[*].datetime() ? (@ < "12:35 +1".datetime("HH24:MI TZH"))'); select jsonb_path_query_tz( '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]', '$[*].datetime() ? (@ == "12:35 +1".datetime("HH24:MI TZH"))'); select jsonb_path_query_tz( '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]', '$[*].datetime() ? (@ >= "12:35 +1".datetime("HH24:MI TZH"))'); select jsonb_path_query_tz( '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]', '$[*].datetime() ? (@ < "12:35 +1".datetime("HH24:MI TZH"))'); -- timestamp comparison select jsonb_path_query( '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ == "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))'); select jsonb_path_query( '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ >= "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))'); select jsonb_path_query( '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ < "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))'); select jsonb_path_query_tz( '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ == "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))'); select jsonb_path_query_tz( '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ >= "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))'); select jsonb_path_query_tz( '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ < "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))'); -- timestamptz comparison select jsonb_path_query( '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ == "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))'); select jsonb_path_query( '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ >= "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))'); select jsonb_path_query( '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ < "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))'); select jsonb_path_query_tz( '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ == "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))'); select jsonb_path_query_tz( '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ >= "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))'); select jsonb_path_query_tz( '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]', '$[*].datetime() ? (@ < "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))'); -- overflow during comparison select jsonb_path_query('"1000000-01-01"', '$.datetime() > "2020-01-01 12:00:00".datetime()'::jsonpath); set time zone default; -- jsonpath operators SELECT jsonb_path_query('[{"a": 1}, {"a": 2}]', '$[*]'); SELECT jsonb_path_query('[{"a": 1}, {"a": 2}]', '$[*] ? (@.a > 10)'); SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}, {}]', 'strict $[*].a'); SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}]', '$[*].a'); SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}]', '$[*].a ? (@ == 1)'); SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}]', '$[*].a ? (@ > 10)'); SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*].a ? (@ > $min && @ < $max)', vars => '{"min": 1, "max": 4}'); SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*].a ? (@ > $min && @ < $max)', vars => '{"min": 3, "max": 4}'); SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}, {}]', 'strict $[*].a'); SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}, {}]', 'strict $[*].a', silent => true); SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}]', '$[*].a'); SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}]', '$[*].a ? (@ == 1)'); SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}]', '$[*].a ? (@ > 10)'); SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*].a ? (@ > $min && @ < $max)', vars => '{"min": 1, "max": 4}'); SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*].a ? (@ > $min && @ < $max)', vars => '{"min": 3, "max": 4}'); SELECT jsonb '[{"a": 1}, {"a": 2}]' @? '$[*].a ? (@ > 1)'; SELECT jsonb '[{"a": 1}, {"a": 2}]' @? '$[*] ? (@.a > 2)'; SELECT jsonb_path_exists('[{"a": 1}, {"a": 2}]', '$[*].a ? (@ > 1)'); SELECT jsonb_path_exists('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*] ? (@.a > $min && @.a < $max)', vars => '{"min": 1, "max": 4}'); SELECT jsonb_path_exists('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*] ? (@.a > $min && @.a < $max)', vars => '{"min": 3, "max": 4}'); SELECT jsonb_path_match('true', '$', silent => false); SELECT jsonb_path_match('false', '$', silent => false); SELECT jsonb_path_match('null', '$', silent => false); SELECT jsonb_path_match('1', '$', silent => true); SELECT jsonb_path_match('1', '$', silent => false); SELECT jsonb_path_match('"a"', '$', silent => false); SELECT jsonb_path_match('{}', '$', silent => false); SELECT jsonb_path_match('[true]', '$', silent => false); SELECT jsonb_path_match('{}', 'lax $.a', silent => false); SELECT jsonb_path_match('{}', 'strict $.a', silent => false); SELECT jsonb_path_match('{}', 'strict $.a', silent => true); SELECT jsonb_path_match('[true, true]', '$[*]', silent => false); SELECT jsonb '[{"a": 1}, {"a": 2}]' @@ '$[*].a > 1'; SELECT jsonb '[{"a": 1}, {"a": 2}]' @@ '$[*].a > 2'; SELECT jsonb_path_match('[{"a": 1}, {"a": 2}]', '$[*].a > 1'); -- test string comparison (Unicode codepoint collation) WITH str(j, num) AS ( SELECT jsonb_build_object('s', s), num FROM unnest('{"", "a", "ab", "abc", "abcd", "b", "A", "AB", "ABC", "ABc", "ABcD", "B"}'::text[]) WITH ORDINALITY AS a(s, num) ) SELECT s1.j, s2.j, jsonb_path_query_first(s1.j, '$.s < $s', vars => s2.j) lt, jsonb_path_query_first(s1.j, '$.s <= $s', vars => s2.j) le, jsonb_path_query_first(s1.j, '$.s == $s', vars => s2.j) eq, jsonb_path_query_first(s1.j, '$.s >= $s', vars => s2.j) ge, jsonb_path_query_first(s1.j, '$.s > $s', vars => s2.j) gt FROM str s1, str s2 ORDER BY s1.num, s2.num; libpg_query-13-2.1.0/test/sql/postgres_regress/jsonpath.sql000066400000000000000000000143231413137616400240130ustar00rootroot00000000000000--jsonpath io select ''::jsonpath; select '$'::jsonpath; select 'strict $'::jsonpath; select 'lax $'::jsonpath; select '$.a'::jsonpath; select '$.a.v'::jsonpath; select '$.a.*'::jsonpath; select '$.*[*]'::jsonpath; select '$.a[*]'::jsonpath; select '$.a[*][*]'::jsonpath; select '$[*]'::jsonpath; select '$[0]'::jsonpath; select '$[*][0]'::jsonpath; select '$[*].a'::jsonpath; select '$[*][0].a.b'::jsonpath; select '$.a.**.b'::jsonpath; select '$.a.**{2}.b'::jsonpath; select '$.a.**{2 to 2}.b'::jsonpath; select '$.a.**{2 to 5}.b'::jsonpath; select '$.a.**{0 to 5}.b'::jsonpath; select '$.a.**{5 to last}.b'::jsonpath; select '$.a.**{last}.b'::jsonpath; select '$.a.**{last to 5}.b'::jsonpath; select '$+1'::jsonpath; select '$-1'::jsonpath; select '$--+1'::jsonpath; select '$.a/+-1'::jsonpath; select '1 * 2 + 4 % -3 != false'::jsonpath; select '"\b\f\r\n\t\v\"\''\\"'::jsonpath; select '"\x50\u0067\u{53}\u{051}\u{00004C}"'::jsonpath; select '$.foo\x50\u0067\u{53}\u{051}\u{00004C}\t\"bar'::jsonpath; select '"\z"'::jsonpath; -- unrecognized escape is just the literal char select '$.g ? ($.a == 1)'::jsonpath; select '$.g ? (@ == 1)'::jsonpath; select '$.g ? (@.a == 1)'::jsonpath; select '$.g ? (@.a == 1 || @.a == 4)'::jsonpath; select '$.g ? (@.a == 1 && @.a == 4)'::jsonpath; select '$.g ? (@.a == 1 || @.a == 4 && @.b == 7)'::jsonpath; select '$.g ? (@.a == 1 || !(@.a == 4) && @.b == 7)'::jsonpath; select '$.g ? (@.a == 1 || !(@.x >= 123 || @.a == 4) && @.b == 7)'::jsonpath; select '$.g ? (@.x >= @[*]?(@.a > "abc"))'::jsonpath; select '$.g ? ((@.x >= 123 || @.a == 4) is unknown)'::jsonpath; select '$.g ? (exists (@.x))'::jsonpath; select '$.g ? (exists (@.x ? (@ == 14)))'::jsonpath; select '$.g ? ((@.x >= 123 || @.a == 4) && exists (@.x ? (@ == 14)))'::jsonpath; select '$.g ? (+@.x >= +-(+@.a + 2))'::jsonpath; select '$a'::jsonpath; select '$a.b'::jsonpath; select '$a[*]'::jsonpath; select '$.g ? (@.zip == $zip)'::jsonpath; select '$.a[1,2, 3 to 16]'::jsonpath; select '$.a[$a + 1, ($b[*]) to -($[0] * 2)]'::jsonpath; select '$.a[$.a.size() - 3]'::jsonpath; select 'last'::jsonpath; select '"last"'::jsonpath; select '$.last'::jsonpath; select '$ ? (last > 0)'::jsonpath; select '$[last]'::jsonpath; select '$[$[0] ? (last > 0)]'::jsonpath; select 'null.type()'::jsonpath; select '1.type()'::jsonpath; select '(1).type()'::jsonpath; select '1.2.type()'::jsonpath; select '"aaa".type()'::jsonpath; select 'true.type()'::jsonpath; select '$.double().floor().ceiling().abs()'::jsonpath; select '$.keyvalue().key'::jsonpath; select '$.datetime()'::jsonpath; select '$.datetime("datetime template")'::jsonpath; select '$ ? (@ starts with "abc")'::jsonpath; select '$ ? (@ starts with $var)'::jsonpath; select '$ ? (@ like_regex "(invalid pattern")'::jsonpath; select '$ ? (@ like_regex "pattern")'::jsonpath; select '$ ? (@ like_regex "pattern" flag "")'::jsonpath; select '$ ? (@ like_regex "pattern" flag "i")'::jsonpath; select '$ ? (@ like_regex "pattern" flag "is")'::jsonpath; select '$ ? (@ like_regex "pattern" flag "isim")'::jsonpath; select '$ ? (@ like_regex "pattern" flag "xsms")'::jsonpath; select '$ ? (@ like_regex "pattern" flag "q")'::jsonpath; select '$ ? (@ like_regex "pattern" flag "iq")'::jsonpath; select '$ ? (@ like_regex "pattern" flag "smixq")'::jsonpath; select '$ ? (@ like_regex "pattern" flag "a")'::jsonpath; select '$ < 1'::jsonpath; select '($ < 1) || $.a.b <= $x'::jsonpath; select '@ + 1'::jsonpath; select '($).a.b'::jsonpath; select '($.a.b).c.d'::jsonpath; select '($.a.b + -$.x.y).c.d'::jsonpath; select '(-+$.a.b).c.d'::jsonpath; select '1 + ($.a.b + 2).c.d'::jsonpath; select '1 + ($.a.b > 2).c.d'::jsonpath; select '($)'::jsonpath; select '(($))'::jsonpath; select '((($ + 1)).a + ((2)).b ? ((((@ > 1)) || (exists(@.c)))))'::jsonpath; select '$ ? (@.a < 1)'::jsonpath; select '$ ? (@.a < -1)'::jsonpath; select '$ ? (@.a < +1)'::jsonpath; select '$ ? (@.a < .1)'::jsonpath; select '$ ? (@.a < -.1)'::jsonpath; select '$ ? (@.a < +.1)'::jsonpath; select '$ ? (@.a < 0.1)'::jsonpath; select '$ ? (@.a < -0.1)'::jsonpath; select '$ ? (@.a < +0.1)'::jsonpath; select '$ ? (@.a < 10.1)'::jsonpath; select '$ ? (@.a < -10.1)'::jsonpath; select '$ ? (@.a < +10.1)'::jsonpath; select '$ ? (@.a < 1e1)'::jsonpath; select '$ ? (@.a < -1e1)'::jsonpath; select '$ ? (@.a < +1e1)'::jsonpath; select '$ ? (@.a < .1e1)'::jsonpath; select '$ ? (@.a < -.1e1)'::jsonpath; select '$ ? (@.a < +.1e1)'::jsonpath; select '$ ? (@.a < 0.1e1)'::jsonpath; select '$ ? (@.a < -0.1e1)'::jsonpath; select '$ ? (@.a < +0.1e1)'::jsonpath; select '$ ? (@.a < 10.1e1)'::jsonpath; select '$ ? (@.a < -10.1e1)'::jsonpath; select '$ ? (@.a < +10.1e1)'::jsonpath; select '$ ? (@.a < 1e-1)'::jsonpath; select '$ ? (@.a < -1e-1)'::jsonpath; select '$ ? (@.a < +1e-1)'::jsonpath; select '$ ? (@.a < .1e-1)'::jsonpath; select '$ ? (@.a < -.1e-1)'::jsonpath; select '$ ? (@.a < +.1e-1)'::jsonpath; select '$ ? (@.a < 0.1e-1)'::jsonpath; select '$ ? (@.a < -0.1e-1)'::jsonpath; select '$ ? (@.a < +0.1e-1)'::jsonpath; select '$ ? (@.a < 10.1e-1)'::jsonpath; select '$ ? (@.a < -10.1e-1)'::jsonpath; select '$ ? (@.a < +10.1e-1)'::jsonpath; select '$ ? (@.a < 1e+1)'::jsonpath; select '$ ? (@.a < -1e+1)'::jsonpath; select '$ ? (@.a < +1e+1)'::jsonpath; select '$ ? (@.a < .1e+1)'::jsonpath; select '$ ? (@.a < -.1e+1)'::jsonpath; select '$ ? (@.a < +.1e+1)'::jsonpath; select '$ ? (@.a < 0.1e+1)'::jsonpath; select '$ ? (@.a < -0.1e+1)'::jsonpath; select '$ ? (@.a < +0.1e+1)'::jsonpath; select '$ ? (@.a < 10.1e+1)'::jsonpath; select '$ ? (@.a < -10.1e+1)'::jsonpath; select '$ ? (@.a < +10.1e+1)'::jsonpath; select '0'::jsonpath; select '00'::jsonpath; select '0.0'::jsonpath; select '0.000'::jsonpath; select '0.000e1'::jsonpath; select '0.000e2'::jsonpath; select '0.000e3'::jsonpath; select '0.0010'::jsonpath; select '0.0010e-1'::jsonpath; select '0.0010e+1'::jsonpath; select '0.0010e+2'::jsonpath; select '1e'::jsonpath; select '1.e'::jsonpath; select '1.2e'::jsonpath; select '1.2.e'::jsonpath; select '(1.2).e'::jsonpath; select '1e3'::jsonpath; select '1.e3'::jsonpath; select '1.e3.e'::jsonpath; select '1.e3.e4'::jsonpath; select '1.2e3'::jsonpath; select '1.2.e3'::jsonpath; select '(1.2).e3'::jsonpath; select '1..e'::jsonpath; select '1..e3'::jsonpath; select '(1.).e'::jsonpath; select '(1.).e3'::jsonpath; libpg_query-13-2.1.0/test/sql/postgres_regress/jsonpath_encoding.sql000066400000000000000000000046701413137616400256650ustar00rootroot00000000000000-- -- encoding-sensitive tests for jsonpath -- -- We provide expected-results files for UTF8 (jsonpath_encoding.out) -- and for SQL_ASCII (jsonpath_encoding_1.out). Skip otherwise. SELECT getdatabaseencoding() NOT IN ('UTF8', 'SQL_ASCII') AS skip_test \gset \if :skip_test \quit \endif SELECT getdatabaseencoding(); -- just to label the results files -- checks for double-quoted values -- basic unicode input SELECT '"\u"'::jsonpath; -- ERROR, incomplete escape SELECT '"\u00"'::jsonpath; -- ERROR, incomplete escape SELECT '"\u000g"'::jsonpath; -- ERROR, g is not a hex digit SELECT '"\u0000"'::jsonpath; -- OK, legal escape SELECT '"\uaBcD"'::jsonpath; -- OK, uppercase and lower case both OK -- handling of unicode surrogate pairs select '"\ud83d\ude04\ud83d\udc36"'::jsonpath as correct_in_utf8; select '"\ud83d\ud83d"'::jsonpath; -- 2 high surrogates in a row select '"\ude04\ud83d"'::jsonpath; -- surrogates in wrong order select '"\ud83dX"'::jsonpath; -- orphan high surrogate select '"\ude04X"'::jsonpath; -- orphan low surrogate --handling of simple unicode escapes select '"the Copyright \u00a9 sign"'::jsonpath as correct_in_utf8; select '"dollar \u0024 character"'::jsonpath as correct_everywhere; select '"dollar \\u0024 character"'::jsonpath as not_an_escape; select '"null \u0000 escape"'::jsonpath as not_unescaped; select '"null \\u0000 escape"'::jsonpath as not_an_escape; -- checks for quoted key names -- basic unicode input SELECT '$."\u"'::jsonpath; -- ERROR, incomplete escape SELECT '$."\u00"'::jsonpath; -- ERROR, incomplete escape SELECT '$."\u000g"'::jsonpath; -- ERROR, g is not a hex digit SELECT '$."\u0000"'::jsonpath; -- OK, legal escape SELECT '$."\uaBcD"'::jsonpath; -- OK, uppercase and lower case both OK -- handling of unicode surrogate pairs select '$."\ud83d\ude04\ud83d\udc36"'::jsonpath as correct_in_utf8; select '$."\ud83d\ud83d"'::jsonpath; -- 2 high surrogates in a row select '$."\ude04\ud83d"'::jsonpath; -- surrogates in wrong order select '$."\ud83dX"'::jsonpath; -- orphan high surrogate select '$."\ude04X"'::jsonpath; -- orphan low surrogate --handling of simple unicode escapes select '$."the Copyright \u00a9 sign"'::jsonpath as correct_in_utf8; select '$."dollar \u0024 character"'::jsonpath as correct_everywhere; select '$."dollar \\u0024 character"'::jsonpath as not_an_escape; select '$."null \u0000 escape"'::jsonpath as not_unescaped; select '$."null \\u0000 escape"'::jsonpath as not_an_escape; libpg_query-13-2.1.0/test/sql/postgres_regress/limit.sql000066400000000000000000000134261413137616400233060ustar00rootroot00000000000000-- -- LIMIT -- Check the LIMIT/OFFSET feature of SELECT -- SELECT ''::text AS two, unique1, unique2, stringu1 FROM onek WHERE unique1 > 50 ORDER BY unique1 LIMIT 2; SELECT ''::text AS five, unique1, unique2, stringu1 FROM onek WHERE unique1 > 60 ORDER BY unique1 LIMIT 5; SELECT ''::text AS two, unique1, unique2, stringu1 FROM onek WHERE unique1 > 60 AND unique1 < 63 ORDER BY unique1 LIMIT 5; SELECT ''::text AS three, unique1, unique2, stringu1 FROM onek WHERE unique1 > 100 ORDER BY unique1 LIMIT 3 OFFSET 20; SELECT ''::text AS zero, unique1, unique2, stringu1 FROM onek WHERE unique1 < 50 ORDER BY unique1 DESC LIMIT 8 OFFSET 99; SELECT ''::text AS eleven, unique1, unique2, stringu1 FROM onek WHERE unique1 < 50 ORDER BY unique1 DESC LIMIT 20 OFFSET 39; SELECT ''::text AS ten, unique1, unique2, stringu1 FROM onek ORDER BY unique1 OFFSET 990; SELECT ''::text AS five, unique1, unique2, stringu1 FROM onek ORDER BY unique1 OFFSET 990 LIMIT 5; SELECT ''::text AS five, unique1, unique2, stringu1 FROM onek ORDER BY unique1 LIMIT 5 OFFSET 900; -- Test null limit and offset. The planner would discard a simple null -- constant, so to ensure executor is exercised, do this: select * from int8_tbl limit (case when random() < 0.5 then null::bigint end); select * from int8_tbl offset (case when random() < 0.5 then null::bigint end); -- Test assorted cases involving backwards fetch from a LIMIT plan node begin; declare c1 cursor for select * from int8_tbl limit 10; fetch all in c1; fetch 1 in c1; fetch backward 1 in c1; fetch backward all in c1; fetch backward 1 in c1; fetch all in c1; declare c2 cursor for select * from int8_tbl limit 3; fetch all in c2; fetch 1 in c2; fetch backward 1 in c2; fetch backward all in c2; fetch backward 1 in c2; fetch all in c2; declare c3 cursor for select * from int8_tbl offset 3; fetch all in c3; fetch 1 in c3; fetch backward 1 in c3; fetch backward all in c3; fetch backward 1 in c3; fetch all in c3; declare c4 cursor for select * from int8_tbl offset 10; fetch all in c4; fetch 1 in c4; fetch backward 1 in c4; fetch backward all in c4; fetch backward 1 in c4; fetch all in c4; declare c5 cursor for select * from int8_tbl order by q1 fetch first 2 rows with ties; fetch all in c5; fetch 1 in c5; fetch backward 1 in c5; fetch backward 1 in c5; fetch all in c5; fetch backward all in c5; fetch all in c5; fetch backward all in c5; rollback; -- Stress test for variable LIMIT in conjunction with bounded-heap sorting SELECT (SELECT n FROM (VALUES (1)) AS x, (SELECT n FROM generate_series(1,10) AS n ORDER BY n LIMIT 1 OFFSET s-1) AS y) AS z FROM generate_series(1,10) AS s; -- -- Test behavior of volatile and set-returning functions in conjunction -- with ORDER BY and LIMIT. -- create temp sequence testseq; explain (verbose, costs off) select unique1, unique2, nextval('testseq') from tenk1 order by unique2 limit 10; select unique1, unique2, nextval('testseq') from tenk1 order by unique2 limit 10; select currval('testseq'); explain (verbose, costs off) select unique1, unique2, nextval('testseq') from tenk1 order by tenthous limit 10; select unique1, unique2, nextval('testseq') from tenk1 order by tenthous limit 10; select currval('testseq'); explain (verbose, costs off) select unique1, unique2, generate_series(1,10) from tenk1 order by unique2 limit 7; select unique1, unique2, generate_series(1,10) from tenk1 order by unique2 limit 7; explain (verbose, costs off) select unique1, unique2, generate_series(1,10) from tenk1 order by tenthous limit 7; select unique1, unique2, generate_series(1,10) from tenk1 order by tenthous limit 7; -- use of random() is to keep planner from folding the expressions together explain (verbose, costs off) select generate_series(0,2) as s1, generate_series((random()*.1)::int,2) as s2; select generate_series(0,2) as s1, generate_series((random()*.1)::int,2) as s2; explain (verbose, costs off) select generate_series(0,2) as s1, generate_series((random()*.1)::int,2) as s2 order by s2 desc; select generate_series(0,2) as s1, generate_series((random()*.1)::int,2) as s2 order by s2 desc; -- test for failure to set all aggregates' aggtranstype explain (verbose, costs off) select sum(tenthous) as s1, sum(tenthous) + random()*0 as s2 from tenk1 group by thousand order by thousand limit 3; select sum(tenthous) as s1, sum(tenthous) + random()*0 as s2 from tenk1 group by thousand order by thousand limit 3; -- -- FETCH FIRST -- Check the WITH TIES clause -- SELECT thousand FROM onek WHERE thousand < 5 ORDER BY thousand FETCH FIRST 2 ROW WITH TIES; SELECT thousand FROM onek WHERE thousand < 5 ORDER BY thousand FETCH FIRST ROWS WITH TIES; SELECT thousand FROM onek WHERE thousand < 5 ORDER BY thousand FETCH FIRST 1 ROW WITH TIES; SELECT thousand FROM onek WHERE thousand < 5 ORDER BY thousand FETCH FIRST 2 ROW ONLY; -- should fail SELECT ''::text AS two, unique1, unique2, stringu1 FROM onek WHERE unique1 > 50 FETCH FIRST 2 ROW WITH TIES; -- test ruleutils CREATE VIEW limit_thousand_v_1 AS SELECT thousand FROM onek WHERE thousand < 995 ORDER BY thousand FETCH FIRST 5 ROWS WITH TIES OFFSET 10; \d+ limit_thousand_v_1 CREATE VIEW limit_thousand_v_2 AS SELECT thousand FROM onek WHERE thousand < 995 ORDER BY thousand OFFSET 10 FETCH FIRST 5 ROWS ONLY; \d+ limit_thousand_v_2 CREATE VIEW limit_thousand_v_3 AS SELECT thousand FROM onek WHERE thousand < 995 ORDER BY thousand FETCH FIRST NULL ROWS WITH TIES; -- fails CREATE VIEW limit_thousand_v_3 AS SELECT thousand FROM onek WHERE thousand < 995 ORDER BY thousand FETCH FIRST (NULL+1) ROWS WITH TIES; \d+ limit_thousand_v_3 CREATE VIEW limit_thousand_v_4 AS SELECT thousand FROM onek WHERE thousand < 995 ORDER BY thousand FETCH FIRST NULL ROWS ONLY; \d+ limit_thousand_v_4 -- leave these views libpg_query-13-2.1.0/test/sql/postgres_regress/line.sql000066400000000000000000000024771413137616400231230ustar00rootroot00000000000000-- -- LINE -- Infinite lines -- --DROP TABLE LINE_TBL; CREATE TABLE LINE_TBL (s line); INSERT INTO LINE_TBL VALUES ('{0,-1,5}'); -- A == 0 INSERT INTO LINE_TBL VALUES ('{1,0,5}'); -- B == 0 INSERT INTO LINE_TBL VALUES ('{0,3,0}'); -- A == C == 0 INSERT INTO LINE_TBL VALUES (' (0,0), (6,6)'); INSERT INTO LINE_TBL VALUES ('10,-10 ,-5,-4'); INSERT INTO LINE_TBL VALUES ('[-1e6,2e2,3e5, -4e1]'); INSERT INTO LINE_TBL VALUES ('{3,NaN,5}'); INSERT INTO LINE_TBL VALUES ('{NaN,NaN,NaN}'); -- horizontal INSERT INTO LINE_TBL VALUES ('[(1,3),(2,3)]'); -- vertical INSERT INTO LINE_TBL VALUES (line(point '(3,1)', point '(3,2)')); -- bad values for parser testing INSERT INTO LINE_TBL VALUES ('{}'); INSERT INTO LINE_TBL VALUES ('{0'); INSERT INTO LINE_TBL VALUES ('{0,0}'); INSERT INTO LINE_TBL VALUES ('{0,0,1'); INSERT INTO LINE_TBL VALUES ('{0,0,1}'); INSERT INTO LINE_TBL VALUES ('{0,0,1} x'); INSERT INTO LINE_TBL VALUES ('(3asdf,2 ,3,4r2)'); INSERT INTO LINE_TBL VALUES ('[1,2,3, 4'); INSERT INTO LINE_TBL VALUES ('[(,2),(3,4)]'); INSERT INTO LINE_TBL VALUES ('[(1,2),(3,4)'); INSERT INTO LINE_TBL VALUES ('[(1,2),(1,2)]'); INSERT INTO LINE_TBL VALUES (line(point '(1,0)', point '(1,0)')); select * from LINE_TBL; select '{nan, 1, nan}'::line = '{nan, 1, nan}'::line as true, '{nan, 1, nan}'::line = '{nan, 2, nan}'::line as false; libpg_query-13-2.1.0/test/sql/postgres_regress/lock.sql000066400000000000000000000110441413137616400231120ustar00rootroot00000000000000-- -- Test the LOCK statement -- -- Setup CREATE SCHEMA lock_schema1; SET search_path = lock_schema1; CREATE TABLE lock_tbl1 (a BIGINT); CREATE TABLE lock_tbl1a (a BIGINT); CREATE VIEW lock_view1 AS SELECT * FROM lock_tbl1; CREATE VIEW lock_view2(a,b) AS SELECT * FROM lock_tbl1, lock_tbl1a; CREATE VIEW lock_view3 AS SELECT * from lock_view2; CREATE VIEW lock_view4 AS SELECT (select a from lock_tbl1a limit 1) from lock_tbl1; CREATE VIEW lock_view5 AS SELECT * from lock_tbl1 where a in (select * from lock_tbl1a); CREATE VIEW lock_view6 AS SELECT * from (select * from lock_tbl1) sub; CREATE ROLE regress_rol_lock1; ALTER ROLE regress_rol_lock1 SET search_path = lock_schema1; GRANT USAGE ON SCHEMA lock_schema1 TO regress_rol_lock1; -- Try all valid lock options; also try omitting the optional TABLE keyword. BEGIN TRANSACTION; LOCK TABLE lock_tbl1 IN ACCESS SHARE MODE; LOCK lock_tbl1 IN ROW SHARE MODE; LOCK TABLE lock_tbl1 IN ROW EXCLUSIVE MODE; LOCK TABLE lock_tbl1 IN SHARE UPDATE EXCLUSIVE MODE; LOCK TABLE lock_tbl1 IN SHARE MODE; LOCK lock_tbl1 IN SHARE ROW EXCLUSIVE MODE; LOCK TABLE lock_tbl1 IN EXCLUSIVE MODE; LOCK TABLE lock_tbl1 IN ACCESS EXCLUSIVE MODE; ROLLBACK; -- Try using NOWAIT along with valid options. BEGIN TRANSACTION; LOCK TABLE lock_tbl1 IN ACCESS SHARE MODE NOWAIT; LOCK TABLE lock_tbl1 IN ROW SHARE MODE NOWAIT; LOCK TABLE lock_tbl1 IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE lock_tbl1 IN SHARE UPDATE EXCLUSIVE MODE NOWAIT; LOCK TABLE lock_tbl1 IN SHARE MODE NOWAIT; LOCK TABLE lock_tbl1 IN SHARE ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE lock_tbl1 IN EXCLUSIVE MODE NOWAIT; LOCK TABLE lock_tbl1 IN ACCESS EXCLUSIVE MODE NOWAIT; ROLLBACK; -- Verify that we can lock views. BEGIN TRANSACTION; LOCK TABLE lock_view1 IN EXCLUSIVE MODE; -- lock_view1 and lock_tbl1 are locked. select relname from pg_locks l, pg_class c where l.relation = c.oid and relname like '%lock_%' and mode = 'ExclusiveLock' order by relname; ROLLBACK; BEGIN TRANSACTION; LOCK TABLE lock_view2 IN EXCLUSIVE MODE; -- lock_view1, lock_tbl1, and lock_tbl1a are locked. select relname from pg_locks l, pg_class c where l.relation = c.oid and relname like '%lock_%' and mode = 'ExclusiveLock' order by relname; ROLLBACK; BEGIN TRANSACTION; LOCK TABLE lock_view3 IN EXCLUSIVE MODE; -- lock_view3, lock_view2, lock_tbl1, and lock_tbl1a are locked recursively. select relname from pg_locks l, pg_class c where l.relation = c.oid and relname like '%lock_%' and mode = 'ExclusiveLock' order by relname; ROLLBACK; BEGIN TRANSACTION; LOCK TABLE lock_view4 IN EXCLUSIVE MODE; -- lock_view4, lock_tbl1, and lock_tbl1a are locked. select relname from pg_locks l, pg_class c where l.relation = c.oid and relname like '%lock_%' and mode = 'ExclusiveLock' order by relname; ROLLBACK; BEGIN TRANSACTION; LOCK TABLE lock_view5 IN EXCLUSIVE MODE; -- lock_view5, lock_tbl1, and lock_tbl1a are locked. select relname from pg_locks l, pg_class c where l.relation = c.oid and relname like '%lock_%' and mode = 'ExclusiveLock' order by relname; ROLLBACK; BEGIN TRANSACTION; LOCK TABLE lock_view6 IN EXCLUSIVE MODE; -- lock_view6 an lock_tbl1 are locked. select relname from pg_locks l, pg_class c where l.relation = c.oid and relname like '%lock_%' and mode = 'ExclusiveLock' order by relname; ROLLBACK; -- Verify that we cope with infinite recursion in view definitions. CREATE OR REPLACE VIEW lock_view2 AS SELECT * from lock_view3; BEGIN TRANSACTION; LOCK TABLE lock_view2 IN EXCLUSIVE MODE; ROLLBACK; CREATE VIEW lock_view7 AS SELECT * from lock_view2; BEGIN TRANSACTION; LOCK TABLE lock_view7 IN EXCLUSIVE MODE; ROLLBACK; -- Verify that we can lock a table with inheritance children. CREATE TABLE lock_tbl2 (b BIGINT) INHERITS (lock_tbl1); CREATE TABLE lock_tbl3 () INHERITS (lock_tbl2); BEGIN TRANSACTION; LOCK TABLE lock_tbl1 * IN ACCESS EXCLUSIVE MODE; ROLLBACK; -- Child tables are locked without granting explicit permission to do so as -- long as we have permission to lock the parent. GRANT UPDATE ON TABLE lock_tbl1 TO regress_rol_lock1; SET ROLE regress_rol_lock1; -- fail when child locked directly BEGIN; LOCK TABLE lock_tbl2; ROLLBACK; BEGIN; LOCK TABLE lock_tbl1 * IN ACCESS EXCLUSIVE MODE; ROLLBACK; BEGIN; LOCK TABLE ONLY lock_tbl1; ROLLBACK; RESET ROLE; -- -- Clean up -- DROP VIEW lock_view7; DROP VIEW lock_view6; DROP VIEW lock_view5; DROP VIEW lock_view4; DROP VIEW lock_view3 CASCADE; DROP VIEW lock_view1; DROP TABLE lock_tbl3; DROP TABLE lock_tbl2; DROP TABLE lock_tbl1; DROP TABLE lock_tbl1a; DROP SCHEMA lock_schema1 CASCADE; DROP ROLE regress_rol_lock1; -- atomic ops tests RESET search_path; SELECT test_atomic_ops(); libpg_query-13-2.1.0/test/sql/postgres_regress/lseg.sql000066400000000000000000000014121413137616400231120ustar00rootroot00000000000000-- -- LSEG -- Line segments -- --DROP TABLE LSEG_TBL; CREATE TABLE LSEG_TBL (s lseg); INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)]'); INSERT INTO LSEG_TBL VALUES ('(0,0),(6,6)'); INSERT INTO LSEG_TBL VALUES ('10,-10 ,-3,-4'); INSERT INTO LSEG_TBL VALUES ('[-1e6,2e2,3e5, -4e1]'); INSERT INTO LSEG_TBL VALUES (lseg(point(11, 22), point(33,44))); INSERT INTO LSEG_TBL VALUES ('[(-10,2),(-10,3)]'); -- vertical INSERT INTO LSEG_TBL VALUES ('[(0,-20),(30,-20)]'); -- horizontal INSERT INTO LSEG_TBL VALUES ('[(NaN,1),(NaN,90)]'); -- NaN -- bad values for parser testing INSERT INTO LSEG_TBL VALUES ('(3asdf,2 ,3,4r2)'); INSERT INTO LSEG_TBL VALUES ('[1,2,3, 4'); INSERT INTO LSEG_TBL VALUES ('[(,2),(3,4)]'); INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)'); select * from LSEG_TBL; libpg_query-13-2.1.0/test/sql/postgres_regress/macaddr.sql000066400000000000000000000034671413137616400235670ustar00rootroot00000000000000-- -- macaddr -- CREATE TABLE macaddr_data (a int, b macaddr); INSERT INTO macaddr_data VALUES (1, '08:00:2b:01:02:03'); INSERT INTO macaddr_data VALUES (2, '08-00-2b-01-02-03'); INSERT INTO macaddr_data VALUES (3, '08002b:010203'); INSERT INTO macaddr_data VALUES (4, '08002b-010203'); INSERT INTO macaddr_data VALUES (5, '0800.2b01.0203'); INSERT INTO macaddr_data VALUES (6, '0800-2b01-0203'); INSERT INTO macaddr_data VALUES (7, '08002b010203'); INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203'); -- invalid INSERT INTO macaddr_data VALUES (9, 'not even close'); -- invalid INSERT INTO macaddr_data VALUES (10, '08:00:2b:01:02:04'); INSERT INTO macaddr_data VALUES (11, '08:00:2b:01:02:02'); INSERT INTO macaddr_data VALUES (12, '08:00:2a:01:02:03'); INSERT INTO macaddr_data VALUES (13, '08:00:2c:01:02:03'); INSERT INTO macaddr_data VALUES (14, '08:00:2a:01:02:04'); SELECT * FROM macaddr_data; CREATE INDEX macaddr_data_btree ON macaddr_data USING btree (b); CREATE INDEX macaddr_data_hash ON macaddr_data USING hash (b); SELECT a, b, trunc(b) FROM macaddr_data ORDER BY 2, 1; SELECT b < '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true SELECT b > '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- false SELECT b > '08:00:2b:01:02:03' FROM macaddr_data WHERE a = 1; -- false SELECT b <= '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true SELECT b >= '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- false SELECT b = '08:00:2b:01:02:03' FROM macaddr_data WHERE a = 1; -- true SELECT b <> '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true SELECT b <> '08:00:2b:01:02:03' FROM macaddr_data WHERE a = 1; -- false SELECT ~b FROM macaddr_data; SELECT b & '00:00:00:ff:ff:ff' FROM macaddr_data; SELECT b | '01:02:03:04:05:06' FROM macaddr_data; DROP TABLE macaddr_data; libpg_query-13-2.1.0/test/sql/postgres_regress/macaddr8.sql000066400000000000000000000103001413137616400236370ustar00rootroot00000000000000-- -- macaddr8 -- -- test various cases of valid and invalid input -- valid SELECT '08:00:2b:01:02:03 '::macaddr8; SELECT ' 08:00:2b:01:02:03 '::macaddr8; SELECT ' 08:00:2b:01:02:03'::macaddr8; SELECT '08:00:2b:01:02:03:04:05 '::macaddr8; SELECT ' 08:00:2b:01:02:03:04:05 '::macaddr8; SELECT ' 08:00:2b:01:02:03:04:05'::macaddr8; SELECT '123 08:00:2b:01:02:03'::macaddr8; -- invalid SELECT '08:00:2b:01:02:03 123'::macaddr8; -- invalid SELECT '123 08:00:2b:01:02:03:04:05'::macaddr8; -- invalid SELECT '08:00:2b:01:02:03:04:05 123'::macaddr8; -- invalid SELECT '08:00:2b:01:02:03:04:05:06:07'::macaddr8; -- invalid SELECT '08-00-2b-01-02-03-04-05-06-07'::macaddr8; -- invalid SELECT '08002b:01020304050607'::macaddr8; -- invalid SELECT '08002b01020304050607'::macaddr8; -- invalid SELECT '0z002b0102030405'::macaddr8; -- invalid SELECT '08002b010203xyza'::macaddr8; -- invalid SELECT '08:00-2b:01:02:03:04:05'::macaddr8; -- invalid SELECT '08:00-2b:01:02:03:04:05'::macaddr8; -- invalid SELECT '08:00:2b:01.02:03:04:05'::macaddr8; -- invalid SELECT '08:00:2b:01.02:03:04:05'::macaddr8; -- invalid -- test converting a MAC address to modified EUI-64 for inclusion -- in an ipv6 address SELECT macaddr8_set7bit('00:08:2b:01:02:03'::macaddr8); CREATE TABLE macaddr8_data (a int, b macaddr8); INSERT INTO macaddr8_data VALUES (1, '08:00:2b:01:02:03'); INSERT INTO macaddr8_data VALUES (2, '08-00-2b-01-02-03'); INSERT INTO macaddr8_data VALUES (3, '08002b:010203'); INSERT INTO macaddr8_data VALUES (4, '08002b-010203'); INSERT INTO macaddr8_data VALUES (5, '0800.2b01.0203'); INSERT INTO macaddr8_data VALUES (6, '0800-2b01-0203'); INSERT INTO macaddr8_data VALUES (7, '08002b010203'); INSERT INTO macaddr8_data VALUES (8, '0800:2b01:0203'); INSERT INTO macaddr8_data VALUES (9, 'not even close'); -- invalid INSERT INTO macaddr8_data VALUES (10, '08:00:2b:01:02:04'); INSERT INTO macaddr8_data VALUES (11, '08:00:2b:01:02:02'); INSERT INTO macaddr8_data VALUES (12, '08:00:2a:01:02:03'); INSERT INTO macaddr8_data VALUES (13, '08:00:2c:01:02:03'); INSERT INTO macaddr8_data VALUES (14, '08:00:2a:01:02:04'); INSERT INTO macaddr8_data VALUES (15, '08:00:2b:01:02:03:04:05'); INSERT INTO macaddr8_data VALUES (16, '08-00-2b-01-02-03-04-05'); INSERT INTO macaddr8_data VALUES (17, '08002b:0102030405'); INSERT INTO macaddr8_data VALUES (18, '08002b-0102030405'); INSERT INTO macaddr8_data VALUES (19, '0800.2b01.0203.0405'); INSERT INTO macaddr8_data VALUES (20, '08002b01:02030405'); INSERT INTO macaddr8_data VALUES (21, '08002b0102030405'); SELECT * FROM macaddr8_data ORDER BY 1; CREATE INDEX macaddr8_data_btree ON macaddr8_data USING btree (b); CREATE INDEX macaddr8_data_hash ON macaddr8_data USING hash (b); SELECT a, b, trunc(b) FROM macaddr8_data ORDER BY 2, 1; SELECT b < '08:00:2b:01:02:04' FROM macaddr8_data WHERE a = 1; -- true SELECT b > '08:00:2b:ff:fe:01:02:04' FROM macaddr8_data WHERE a = 1; -- false SELECT b > '08:00:2b:ff:fe:01:02:03' FROM macaddr8_data WHERE a = 1; -- false SELECT b::macaddr <= '08:00:2b:01:02:04' FROM macaddr8_data WHERE a = 1; -- true SELECT b::macaddr >= '08:00:2b:01:02:04' FROM macaddr8_data WHERE a = 1; -- false SELECT b = '08:00:2b:ff:fe:01:02:03' FROM macaddr8_data WHERE a = 1; -- true SELECT b::macaddr <> '08:00:2b:01:02:04'::macaddr FROM macaddr8_data WHERE a = 1; -- true SELECT b::macaddr <> '08:00:2b:01:02:03'::macaddr FROM macaddr8_data WHERE a = 1; -- false SELECT b < '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- true SELECT b > '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- false SELECT b > '08:00:2b:01:02:03:04:05' FROM macaddr8_data WHERE a = 15; -- false SELECT b <= '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- true SELECT b >= '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- false SELECT b = '08:00:2b:01:02:03:04:05' FROM macaddr8_data WHERE a = 15; -- true SELECT b <> '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- true SELECT b <> '08:00:2b:01:02:03:04:05' FROM macaddr8_data WHERE a = 15; -- false SELECT ~b FROM macaddr8_data; SELECT b & '00:00:00:ff:ff:ff' FROM macaddr8_data; SELECT b | '01:02:03:04:05:06' FROM macaddr8_data; DROP TABLE macaddr8_data; libpg_query-13-2.1.0/test/sql/postgres_regress/matview.sql000066400000000000000000000231601413137616400236400ustar00rootroot00000000000000-- create a table to use as a basis for views and materialized views in various combinations CREATE TABLE mvtest_t (id int NOT NULL PRIMARY KEY, type text NOT NULL, amt numeric NOT NULL); INSERT INTO mvtest_t VALUES (1, 'x', 2), (2, 'x', 3), (3, 'y', 5), (4, 'y', 7), (5, 'z', 11); -- we want a view based on the table, too, since views present additional challenges CREATE VIEW mvtest_tv AS SELECT type, sum(amt) AS totamt FROM mvtest_t GROUP BY type; SELECT * FROM mvtest_tv ORDER BY type; -- create a materialized view with no data, and confirm correct behavior EXPLAIN (costs off) CREATE MATERIALIZED VIEW mvtest_tm AS SELECT type, sum(amt) AS totamt FROM mvtest_t GROUP BY type WITH NO DATA; CREATE MATERIALIZED VIEW mvtest_tm AS SELECT type, sum(amt) AS totamt FROM mvtest_t GROUP BY type WITH NO DATA; SELECT relispopulated FROM pg_class WHERE oid = 'mvtest_tm'::regclass; SELECT * FROM mvtest_tm ORDER BY type; REFRESH MATERIALIZED VIEW mvtest_tm; SELECT relispopulated FROM pg_class WHERE oid = 'mvtest_tm'::regclass; CREATE UNIQUE INDEX mvtest_tm_type ON mvtest_tm (type); SELECT * FROM mvtest_tm ORDER BY type; -- create various views EXPLAIN (costs off) CREATE MATERIALIZED VIEW mvtest_tvm AS SELECT * FROM mvtest_tv ORDER BY type; CREATE MATERIALIZED VIEW mvtest_tvm AS SELECT * FROM mvtest_tv ORDER BY type; SELECT * FROM mvtest_tvm; CREATE MATERIALIZED VIEW mvtest_tmm AS SELECT sum(totamt) AS grandtot FROM mvtest_tm; CREATE MATERIALIZED VIEW mvtest_tvmm AS SELECT sum(totamt) AS grandtot FROM mvtest_tvm; CREATE UNIQUE INDEX mvtest_tvmm_expr ON mvtest_tvmm ((grandtot > 0)); CREATE UNIQUE INDEX mvtest_tvmm_pred ON mvtest_tvmm (grandtot) WHERE grandtot < 0; CREATE VIEW mvtest_tvv AS SELECT sum(totamt) AS grandtot FROM mvtest_tv; EXPLAIN (costs off) CREATE MATERIALIZED VIEW mvtest_tvvm AS SELECT * FROM mvtest_tvv; CREATE MATERIALIZED VIEW mvtest_tvvm AS SELECT * FROM mvtest_tvv; CREATE VIEW mvtest_tvvmv AS SELECT * FROM mvtest_tvvm; CREATE MATERIALIZED VIEW mvtest_bb AS SELECT * FROM mvtest_tvvmv; CREATE INDEX mvtest_aa ON mvtest_bb (grandtot); -- check that plans seem reasonable \d+ mvtest_tvm \d+ mvtest_tvm \d+ mvtest_tvvm \d+ mvtest_bb -- test schema behavior CREATE SCHEMA mvtest_mvschema; ALTER MATERIALIZED VIEW mvtest_tvm SET SCHEMA mvtest_mvschema; \d+ mvtest_tvm \d+ mvtest_tvmm SET search_path = mvtest_mvschema, public; \d+ mvtest_tvm -- modify the underlying table data INSERT INTO mvtest_t VALUES (6, 'z', 13); -- confirm pre- and post-refresh contents of fairly simple materialized views SELECT * FROM mvtest_tm ORDER BY type; SELECT * FROM mvtest_tvm ORDER BY type; REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_tm; REFRESH MATERIALIZED VIEW mvtest_tvm; SELECT * FROM mvtest_tm ORDER BY type; SELECT * FROM mvtest_tvm ORDER BY type; RESET search_path; -- confirm pre- and post-refresh contents of nested materialized views EXPLAIN (costs off) SELECT * FROM mvtest_tmm; EXPLAIN (costs off) SELECT * FROM mvtest_tvmm; EXPLAIN (costs off) SELECT * FROM mvtest_tvvm; SELECT * FROM mvtest_tmm; SELECT * FROM mvtest_tvmm; SELECT * FROM mvtest_tvvm; REFRESH MATERIALIZED VIEW mvtest_tmm; REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_tvmm; REFRESH MATERIALIZED VIEW mvtest_tvmm; REFRESH MATERIALIZED VIEW mvtest_tvvm; EXPLAIN (costs off) SELECT * FROM mvtest_tmm; EXPLAIN (costs off) SELECT * FROM mvtest_tvmm; EXPLAIN (costs off) SELECT * FROM mvtest_tvvm; SELECT * FROM mvtest_tmm; SELECT * FROM mvtest_tvmm; SELECT * FROM mvtest_tvvm; -- test diemv when the mv does not exist DROP MATERIALIZED VIEW IF EXISTS no_such_mv; -- make sure invalid combination of options is prohibited REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_tvmm WITH NO DATA; -- no tuple locks on materialized views SELECT * FROM mvtest_tvvm FOR SHARE; -- test join of mv and view SELECT type, m.totamt AS mtot, v.totamt AS vtot FROM mvtest_tm m LEFT JOIN mvtest_tv v USING (type) ORDER BY type; -- make sure that dependencies are reported properly when they block the drop DROP TABLE mvtest_t; -- make sure dependencies are dropped and reported -- and make sure that transactional behavior is correct on rollback -- incidentally leaving some interesting materialized views for pg_dump testing BEGIN; DROP TABLE mvtest_t CASCADE; ROLLBACK; -- some additional tests not using base tables CREATE VIEW mvtest_vt1 AS SELECT 1 moo; CREATE VIEW mvtest_vt2 AS SELECT moo, 2*moo FROM mvtest_vt1 UNION ALL SELECT moo, 3*moo FROM mvtest_vt1; \d+ mvtest_vt2 CREATE MATERIALIZED VIEW mv_test2 AS SELECT moo, 2*moo FROM mvtest_vt2 UNION ALL SELECT moo, 3*moo FROM mvtest_vt2; \d+ mv_test2 CREATE MATERIALIZED VIEW mv_test3 AS SELECT * FROM mv_test2 WHERE moo = 12345; SELECT relispopulated FROM pg_class WHERE oid = 'mv_test3'::regclass; DROP VIEW mvtest_vt1 CASCADE; -- test that duplicate values on unique index prevent refresh CREATE TABLE mvtest_foo(a, b) AS VALUES(1, 10); CREATE MATERIALIZED VIEW mvtest_mv AS SELECT * FROM mvtest_foo; CREATE UNIQUE INDEX ON mvtest_mv(a); INSERT INTO mvtest_foo SELECT * FROM mvtest_foo; REFRESH MATERIALIZED VIEW mvtest_mv; REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_mv; DROP TABLE mvtest_foo CASCADE; -- make sure that all columns covered by unique indexes works CREATE TABLE mvtest_foo(a, b, c) AS VALUES(1, 2, 3); CREATE MATERIALIZED VIEW mvtest_mv AS SELECT * FROM mvtest_foo; CREATE UNIQUE INDEX ON mvtest_mv (a); CREATE UNIQUE INDEX ON mvtest_mv (b); CREATE UNIQUE INDEX on mvtest_mv (c); INSERT INTO mvtest_foo VALUES(2, 3, 4); INSERT INTO mvtest_foo VALUES(3, 4, 5); REFRESH MATERIALIZED VIEW mvtest_mv; REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_mv; DROP TABLE mvtest_foo CASCADE; -- allow subquery to reference unpopulated matview if WITH NO DATA is specified CREATE MATERIALIZED VIEW mvtest_mv1 AS SELECT 1 AS col1 WITH NO DATA; CREATE MATERIALIZED VIEW mvtest_mv2 AS SELECT * FROM mvtest_mv1 WHERE col1 = (SELECT LEAST(col1) FROM mvtest_mv1) WITH NO DATA; DROP MATERIALIZED VIEW mvtest_mv1 CASCADE; -- make sure that types with unusual equality tests work CREATE TABLE mvtest_boxes (id serial primary key, b box); INSERT INTO mvtest_boxes (b) VALUES ('(32,32),(31,31)'), ('(2.0000004,2.0000004),(1,1)'), ('(1.9999996,1.9999996),(1,1)'); CREATE MATERIALIZED VIEW mvtest_boxmv AS SELECT * FROM mvtest_boxes; CREATE UNIQUE INDEX mvtest_boxmv_id ON mvtest_boxmv (id); UPDATE mvtest_boxes SET b = '(2,2),(1,1)' WHERE id = 2; REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_boxmv; SELECT * FROM mvtest_boxmv ORDER BY id; DROP TABLE mvtest_boxes CASCADE; -- make sure that column names are handled correctly CREATE TABLE mvtest_v (i int, j int); CREATE MATERIALIZED VIEW mvtest_mv_v (ii, jj, kk) AS SELECT i, j FROM mvtest_v; -- error CREATE MATERIALIZED VIEW mvtest_mv_v (ii, jj) AS SELECT i, j FROM mvtest_v; -- ok CREATE MATERIALIZED VIEW mvtest_mv_v_2 (ii) AS SELECT i, j FROM mvtest_v; -- ok CREATE MATERIALIZED VIEW mvtest_mv_v_3 (ii, jj, kk) AS SELECT i, j FROM mvtest_v WITH NO DATA; -- error CREATE MATERIALIZED VIEW mvtest_mv_v_3 (ii, jj) AS SELECT i, j FROM mvtest_v WITH NO DATA; -- ok CREATE MATERIALIZED VIEW mvtest_mv_v_4 (ii) AS SELECT i, j FROM mvtest_v WITH NO DATA; -- ok ALTER TABLE mvtest_v RENAME COLUMN i TO x; INSERT INTO mvtest_v values (1, 2); CREATE UNIQUE INDEX mvtest_mv_v_ii ON mvtest_mv_v (ii); REFRESH MATERIALIZED VIEW mvtest_mv_v; UPDATE mvtest_v SET j = 3 WHERE x = 1; REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_mv_v; REFRESH MATERIALIZED VIEW mvtest_mv_v_2; REFRESH MATERIALIZED VIEW mvtest_mv_v_3; REFRESH MATERIALIZED VIEW mvtest_mv_v_4; SELECT * FROM mvtest_v; SELECT * FROM mvtest_mv_v; SELECT * FROM mvtest_mv_v_2; SELECT * FROM mvtest_mv_v_3; SELECT * FROM mvtest_mv_v_4; DROP TABLE mvtest_v CASCADE; -- Check that unknown literals are converted to "text" in CREATE MATVIEW, -- so that we don't end up with unknown-type columns. CREATE MATERIALIZED VIEW mv_unspecified_types AS SELECT 42 as i, 42.5 as num, 'foo' as u, 'foo'::unknown as u2, null as n; \d+ mv_unspecified_types SELECT * FROM mv_unspecified_types; DROP MATERIALIZED VIEW mv_unspecified_types; -- make sure that create WITH NO DATA does not plan the query (bug #13907) create materialized view mvtest_error as select 1/0 as x; -- fail create materialized view mvtest_error as select 1/0 as x with no data; refresh materialized view mvtest_error; -- fail here drop materialized view mvtest_error; -- make sure that matview rows can be referenced as source rows (bug #9398) CREATE TABLE mvtest_v AS SELECT generate_series(1,10) AS a; CREATE MATERIALIZED VIEW mvtest_mv_v AS SELECT a FROM mvtest_v WHERE a <= 5; DELETE FROM mvtest_v WHERE EXISTS ( SELECT * FROM mvtest_mv_v WHERE mvtest_mv_v.a = mvtest_v.a ); SELECT * FROM mvtest_v; SELECT * FROM mvtest_mv_v; DROP TABLE mvtest_v CASCADE; -- make sure running as superuser works when MV owned by another role (bug #11208) CREATE ROLE regress_user_mvtest; SET ROLE regress_user_mvtest; CREATE TABLE mvtest_foo_data AS SELECT i, md5(random()::text) FROM generate_series(1, 10) i; CREATE MATERIALIZED VIEW mvtest_mv_foo AS SELECT * FROM mvtest_foo_data; CREATE MATERIALIZED VIEW mvtest_mv_foo AS SELECT * FROM mvtest_foo_data; CREATE MATERIALIZED VIEW IF NOT EXISTS mvtest_mv_foo AS SELECT * FROM mvtest_foo_data; CREATE UNIQUE INDEX ON mvtest_mv_foo (i); RESET ROLE; REFRESH MATERIALIZED VIEW mvtest_mv_foo; REFRESH MATERIALIZED VIEW CONCURRENTLY mvtest_mv_foo; DROP OWNED BY regress_user_mvtest CASCADE; DROP ROLE regress_user_mvtest; -- make sure that create WITH NO DATA works via SPI BEGIN; CREATE FUNCTION mvtest_func() RETURNS void AS $$ BEGIN CREATE MATERIALIZED VIEW mvtest1 AS SELECT 1 AS x; CREATE MATERIALIZED VIEW mvtest2 AS SELECT 1 AS x WITH NO DATA; END; $$ LANGUAGE plpgsql; SELECT mvtest_func(); SELECT * FROM mvtest1; SELECT * FROM mvtest2; ROLLBACK; libpg_query-13-2.1.0/test/sql/postgres_regress/misc_functions.sql000066400000000000000000000061361413137616400252130ustar00rootroot00000000000000-- -- num_nulls() -- SELECT num_nonnulls(NULL); SELECT num_nonnulls('1'); SELECT num_nonnulls(NULL::text); SELECT num_nonnulls(NULL::text, NULL::int); SELECT num_nonnulls(1, 2, NULL::text, NULL::point, '', int8 '9', 1.0 / NULL); SELECT num_nonnulls(VARIADIC '{1,2,NULL,3}'::int[]); SELECT num_nonnulls(VARIADIC '{"1","2","3","4"}'::text[]); SELECT num_nonnulls(VARIADIC ARRAY(SELECT CASE WHEN i <> 40 THEN i END FROM generate_series(1, 100) i)); SELECT num_nulls(NULL); SELECT num_nulls('1'); SELECT num_nulls(NULL::text); SELECT num_nulls(NULL::text, NULL::int); SELECT num_nulls(1, 2, NULL::text, NULL::point, '', int8 '9', 1.0 / NULL); SELECT num_nulls(VARIADIC '{1,2,NULL,3}'::int[]); SELECT num_nulls(VARIADIC '{"1","2","3","4"}'::text[]); SELECT num_nulls(VARIADIC ARRAY(SELECT CASE WHEN i <> 40 THEN i END FROM generate_series(1, 100) i)); -- special cases SELECT num_nonnulls(VARIADIC NULL::text[]); SELECT num_nonnulls(VARIADIC '{}'::int[]); SELECT num_nulls(VARIADIC NULL::text[]); SELECT num_nulls(VARIADIC '{}'::int[]); -- should fail, one or more arguments is required SELECT num_nonnulls(); SELECT num_nulls(); -- -- Test some built-in SRFs -- -- The outputs of these are variable, so we can't just print their results -- directly, but we can at least verify that the code doesn't fail. -- select setting as segsize from pg_settings where name = 'wal_segment_size' \gset select count(*) > 0 as ok from pg_ls_waldir(); -- Test ProjectSet as well as FunctionScan select count(*) > 0 as ok from (select pg_ls_waldir()) ss; -- Test not-run-to-completion cases. select * from pg_ls_waldir() limit 0; select count(*) > 0 as ok from (select * from pg_ls_waldir() limit 1) ss; select (w).size = :segsize as ok from (select pg_ls_waldir() w) ss where length((w).name) = 24 limit 1; select count(*) >= 0 as ok from pg_ls_archive_statusdir(); select * from (select pg_ls_dir('.') a) a where a = 'base' limit 1; select * from (select (pg_timezone_names()).name) ptn where name='UTC' limit 1; select count(*) > 0 from (select pg_tablespace_databases(oid) as pts from pg_tablespace where spcname = 'pg_default') pts join pg_database db on pts.pts = db.oid; -- -- Test adding a support function to a subject function -- CREATE FUNCTION my_int_eq(int, int) RETURNS bool LANGUAGE internal STRICT IMMUTABLE PARALLEL SAFE AS $$int4eq$$; -- By default, planner does not think that's selective EXPLAIN (COSTS OFF) SELECT * FROM tenk1 a JOIN tenk1 b ON a.unique1 = b.unique1 WHERE my_int_eq(a.unique2, 42); -- With support function that knows it's int4eq, we get a different plan ALTER FUNCTION my_int_eq(int, int) SUPPORT test_support_func; EXPLAIN (COSTS OFF) SELECT * FROM tenk1 a JOIN tenk1 b ON a.unique1 = b.unique1 WHERE my_int_eq(a.unique2, 42); -- Also test non-default rowcount estimate CREATE FUNCTION my_gen_series(int, int) RETURNS SETOF integer LANGUAGE internal STRICT IMMUTABLE PARALLEL SAFE AS $$generate_series_int4$$ SUPPORT test_support_func; EXPLAIN (COSTS OFF) SELECT * FROM tenk1 a JOIN my_gen_series(1,1000) g ON a.unique1 = g; EXPLAIN (COSTS OFF) SELECT * FROM tenk1 a JOIN my_gen_series(1,10) g ON a.unique1 = g; libpg_query-13-2.1.0/test/sql/postgres_regress/misc_sanity.sql000066400000000000000000000067041413137616400245130ustar00rootroot00000000000000-- -- MISC_SANITY -- Sanity checks for common errors in making system tables that don't fit -- comfortably into either opr_sanity or type_sanity. -- -- Every test failure in this file should be closely inspected. -- The description of the failing test should be read carefully before -- adjusting the expected output. In most cases, the queries should -- not find *any* matching entries. -- -- NB: run this test early, because some later tests create bogus entries. -- **************** pg_depend **************** -- Look for illegal values in pg_depend fields. -- classid/objid can be zero, but only in 'p' entries SELECT * FROM pg_depend as d1 WHERE refclassid = 0 OR refobjid = 0 OR deptype NOT IN ('a', 'e', 'i', 'n', 'p') OR (deptype != 'p' AND (classid = 0 OR objid = 0)) OR (deptype = 'p' AND (classid != 0 OR objid != 0 OR objsubid != 0)); -- **************** pg_shdepend **************** -- Look for illegal values in pg_shdepend fields. -- classid/objid can be zero, but only in 'p' entries SELECT * FROM pg_shdepend as d1 WHERE refclassid = 0 OR refobjid = 0 OR deptype NOT IN ('a', 'o', 'p', 'r') OR (deptype != 'p' AND (classid = 0 OR objid = 0)) OR (deptype = 'p' AND (dbid != 0 OR classid != 0 OR objid != 0 OR objsubid != 0)); -- Check each OID-containing system catalog to see if its lowest-numbered OID -- is pinned. If not, and if that OID was generated during initdb, then -- perhaps initdb forgot to scan that catalog for pinnable entries. -- Generally, it's okay for a catalog to be listed in the output of this -- test if that catalog is scanned by initdb.c's setup_depend() function; -- whatever OID the test is complaining about must have been added later -- in initdb, where it intentionally isn't pinned. Legitimate exceptions -- to that rule are listed in the comments in setup_depend(). do $$ declare relnm text; reloid oid; shared bool; lowoid oid; pinned bool; begin for relnm, reloid, shared in select relname, oid, relisshared from pg_class where EXISTS( SELECT * FROM pg_attribute WHERE attrelid = pg_class.oid AND attname = 'oid') and relkind = 'r' and oid < 16384 order by 1 loop execute 'select min(oid) from ' || relnm into lowoid; continue when lowoid is null or lowoid >= 16384; if shared then pinned := exists(select 1 from pg_shdepend where refclassid = reloid and refobjid = lowoid and deptype = 'p'); else pinned := exists(select 1 from pg_depend where refclassid = reloid and refobjid = lowoid and deptype = 'p'); end if; if not pinned then raise notice '% contains unpinned initdb-created object(s)', relnm; end if; end loop; end$$; -- **************** pg_class **************** -- Look for system tables with varlena columns but no toast table. All -- system tables with toastable columns should have toast tables, with -- the following exceptions: -- 1. pg_class, pg_attribute, and pg_index, due to fear of recursive -- dependencies as toast tables depend on them. -- 2. pg_largeobject and pg_largeobject_metadata. Large object catalogs -- and toast tables are mutually exclusive and large object data is handled -- as user data by pg_upgrade, which would cause failures. SELECT relname, attname, atttypid::regtype FROM pg_class c JOIN pg_attribute a ON c.oid = attrelid WHERE c.oid < 16384 AND reltoastrelid = 0 AND relkind = 'r' AND attstorage != 'p' ORDER BY 1, 2; libpg_query-13-2.1.0/test/sql/postgres_regress/money.sql000066400000000000000000000073611413137616400233200ustar00rootroot00000000000000-- -- MONEY -- -- Note that we assume lc_monetary has been set to C. -- CREATE TABLE money_data (m money); INSERT INTO money_data VALUES ('123'); SELECT * FROM money_data; SELECT m + '123' FROM money_data; SELECT m + '123.45' FROM money_data; SELECT m - '123.45' FROM money_data; SELECT m / '2'::money FROM money_data; SELECT m * 2 FROM money_data; SELECT 2 * m FROM money_data; SELECT m / 2 FROM money_data; SELECT m * 2::int2 FROM money_data; SELECT 2::int2 * m FROM money_data; SELECT m / 2::int2 FROM money_data; SELECT m * 2::int8 FROM money_data; SELECT 2::int8 * m FROM money_data; SELECT m / 2::int8 FROM money_data; SELECT m * 2::float8 FROM money_data; SELECT 2::float8 * m FROM money_data; SELECT m / 2::float8 FROM money_data; SELECT m * 2::float4 FROM money_data; SELECT 2::float4 * m FROM money_data; SELECT m / 2::float4 FROM money_data; -- All true SELECT m = '$123.00' FROM money_data; SELECT m != '$124.00' FROM money_data; SELECT m <= '$123.00' FROM money_data; SELECT m >= '$123.00' FROM money_data; SELECT m < '$124.00' FROM money_data; SELECT m > '$122.00' FROM money_data; -- All false SELECT m = '$123.01' FROM money_data; SELECT m != '$123.00' FROM money_data; SELECT m <= '$122.99' FROM money_data; SELECT m >= '$123.01' FROM money_data; SELECT m > '$124.00' FROM money_data; SELECT m < '$122.00' FROM money_data; SELECT cashlarger(m, '$124.00') FROM money_data; SELECT cashsmaller(m, '$124.00') FROM money_data; SELECT cash_words(m) FROM money_data; SELECT cash_words(m + '1.23') FROM money_data; DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.45'); SELECT * FROM money_data; DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.451'); SELECT * FROM money_data; DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.454'); SELECT * FROM money_data; DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.455'); SELECT * FROM money_data; DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.456'); SELECT * FROM money_data; DELETE FROM money_data; INSERT INTO money_data VALUES ('$123.459'); SELECT * FROM money_data; -- input checks SELECT '1234567890'::money; SELECT '12345678901234567'::money; SELECT '123456789012345678'::money; SELECT '9223372036854775807'::money; SELECT '-12345'::money; SELECT '-1234567890'::money; SELECT '-12345678901234567'::money; SELECT '-123456789012345678'::money; SELECT '-9223372036854775808'::money; -- special characters SELECT '(1)'::money; SELECT '($123,456.78)'::money; -- documented minimums and maximums SELECT '-92233720368547758.08'::money; SELECT '92233720368547758.07'::money; SELECT '-92233720368547758.09'::money; SELECT '92233720368547758.08'::money; -- rounding SELECT '-92233720368547758.085'::money; SELECT '92233720368547758.075'::money; -- rounding vs. truncation in division SELECT '878.08'::money / 11::float8; SELECT '878.08'::money / 11::float4; SELECT '878.08'::money / 11::bigint; SELECT '878.08'::money / 11::int; SELECT '878.08'::money / 11::smallint; -- check for precision loss in division SELECT '90000000000000099.00'::money / 10::bigint; SELECT '90000000000000099.00'::money / 10::int; SELECT '90000000000000099.00'::money / 10::smallint; -- Cast int4/int8/numeric to money SELECT 1234567890::money; SELECT 12345678901234567::money; SELECT (-12345)::money; SELECT (-1234567890)::money; SELECT (-12345678901234567)::money; SELECT 1234567890::int4::money; SELECT 12345678901234567::int8::money; SELECT 12345678901234567::numeric::money; SELECT (-1234567890)::int4::money; SELECT (-12345678901234567)::int8::money; SELECT (-12345678901234567)::numeric::money; -- Cast from money to numeric SELECT '12345678901234567'::money::numeric; SELECT '-12345678901234567'::money::numeric; SELECT '92233720368547758.07'::money::numeric; SELECT '-92233720368547758.08'::money::numeric; libpg_query-13-2.1.0/test/sql/postgres_regress/name.sql000066400000000000000000000067151413137616400231130ustar00rootroot00000000000000-- -- NAME -- all inputs are silently truncated at NAMEDATALEN-1 (63) characters -- -- fixed-length by reference SELECT name 'name string' = name 'name string' AS "True"; SELECT name 'name string' = name 'name string ' AS "False"; -- -- -- CREATE TABLE NAME_TBL(f1 name); INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'); INSERT INTO NAME_TBL(f1) VALUES ('1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr'); INSERT INTO NAME_TBL(f1) VALUES ('asdfghjkl;'); INSERT INTO NAME_TBL(f1) VALUES ('343f%2a'); INSERT INTO NAME_TBL(f1) VALUES ('d34aaasdf'); INSERT INTO NAME_TBL(f1) VALUES (''); INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'); SELECT '' AS seven, * FROM NAME_TBL; SELECT '' AS six, c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT '' AS one, c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT '' AS seven, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*'; SELECT '' AS zero, c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*'; SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]'; SELECT '' AS two, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*'; DROP TABLE NAME_TBL; DO $$ DECLARE r text[]; BEGIN r := parse_ident('Schemax.Tabley'); RAISE NOTICE '%', format('%I.%I', r[1], r[2]); r := parse_ident('"SchemaX"."TableY"'); RAISE NOTICE '%', format('%I.%I', r[1], r[2]); END; $$; SELECT parse_ident('foo.boo'); SELECT parse_ident('foo.boo[]'); -- should fail SELECT parse_ident('foo.boo[]', strict => false); -- ok -- should fail SELECT parse_ident(' '); SELECT parse_ident(' .aaa'); SELECT parse_ident(' aaa . '); SELECT parse_ident('aaa.a%b'); SELECT parse_ident(E'X\rXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'); SELECT length(a[1]), length(a[2]) from parse_ident('"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy') as a ; SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"'); SELECT parse_ident(' first . " second " ." third ". " ' || repeat('x',66) || '"')::name[]; SELECT parse_ident(E'"c".X XXXX\002XXXXXX'); SELECT parse_ident('1020'); SELECT parse_ident('10.20'); SELECT parse_ident('.'); SELECT parse_ident('.1020'); SELECT parse_ident('xxx.1020'); libpg_query-13-2.1.0/test/sql/postgres_regress/namespace.sql000066400000000000000000000026011413137616400241150ustar00rootroot00000000000000-- -- Regression tests for schemas (namespaces) -- CREATE SCHEMA test_ns_schema_1 CREATE UNIQUE INDEX abc_a_idx ON abc (a) CREATE VIEW abc_view AS SELECT a+1 AS a, b+1 AS b FROM abc CREATE TABLE abc ( a serial, b int UNIQUE ); -- verify that the objects were created SELECT COUNT(*) FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'test_ns_schema_1'); INSERT INTO test_ns_schema_1.abc DEFAULT VALUES; INSERT INTO test_ns_schema_1.abc DEFAULT VALUES; INSERT INTO test_ns_schema_1.abc DEFAULT VALUES; SELECT * FROM test_ns_schema_1.abc; SELECT * FROM test_ns_schema_1.abc_view; ALTER SCHEMA test_ns_schema_1 RENAME TO test_ns_schema_renamed; SELECT COUNT(*) FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'test_ns_schema_1'); -- test IF NOT EXISTS cases CREATE SCHEMA test_ns_schema_renamed; -- fail, already exists CREATE SCHEMA IF NOT EXISTS test_ns_schema_renamed; -- ok with notice CREATE SCHEMA IF NOT EXISTS test_ns_schema_renamed -- fail, disallowed CREATE TABLE abc ( a serial, b int UNIQUE ); DROP SCHEMA test_ns_schema_renamed CASCADE; -- verify that the objects were dropped SELECT COUNT(*) FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'test_ns_schema_renamed'); libpg_query-13-2.1.0/test/sql/postgres_regress/numeric.sql000066400000000000000000001363311413137616400236330ustar00rootroot00000000000000-- -- NUMERIC -- CREATE TABLE num_data (id int4, val numeric(210,10)); CREATE TABLE num_exp_add (id1 int4, id2 int4, expected numeric(210,10)); CREATE TABLE num_exp_sub (id1 int4, id2 int4, expected numeric(210,10)); CREATE TABLE num_exp_div (id1 int4, id2 int4, expected numeric(210,10)); CREATE TABLE num_exp_mul (id1 int4, id2 int4, expected numeric(210,10)); CREATE TABLE num_exp_sqrt (id int4, expected numeric(210,10)); CREATE TABLE num_exp_ln (id int4, expected numeric(210,10)); CREATE TABLE num_exp_log10 (id int4, expected numeric(210,10)); CREATE TABLE num_exp_power_10_ln (id int4, expected numeric(210,10)); CREATE TABLE num_result (id1 int4, id2 int4, result numeric(210,10)); -- ****************************** -- * The following EXPECTED results are computed by bc(1) -- * with a scale of 200 -- ****************************** BEGIN TRANSACTION; INSERT INTO num_exp_add VALUES (0,0,'0'); INSERT INTO num_exp_sub VALUES (0,0,'0'); INSERT INTO num_exp_mul VALUES (0,0,'0'); INSERT INTO num_exp_div VALUES (0,0,'NaN'); INSERT INTO num_exp_add VALUES (0,1,'0'); INSERT INTO num_exp_sub VALUES (0,1,'0'); INSERT INTO num_exp_mul VALUES (0,1,'0'); INSERT INTO num_exp_div VALUES (0,1,'NaN'); INSERT INTO num_exp_add VALUES (0,2,'-34338492.215397047'); INSERT INTO num_exp_sub VALUES (0,2,'34338492.215397047'); INSERT INTO num_exp_mul VALUES (0,2,'0'); INSERT INTO num_exp_div VALUES (0,2,'0'); INSERT INTO num_exp_add VALUES (0,3,'4.31'); INSERT INTO num_exp_sub VALUES (0,3,'-4.31'); INSERT INTO num_exp_mul VALUES (0,3,'0'); INSERT INTO num_exp_div VALUES (0,3,'0'); INSERT INTO num_exp_add VALUES (0,4,'7799461.4119'); INSERT INTO num_exp_sub VALUES (0,4,'-7799461.4119'); INSERT INTO num_exp_mul VALUES (0,4,'0'); INSERT INTO num_exp_div VALUES (0,4,'0'); INSERT INTO num_exp_add VALUES (0,5,'16397.038491'); INSERT INTO num_exp_sub VALUES (0,5,'-16397.038491'); INSERT INTO num_exp_mul VALUES (0,5,'0'); INSERT INTO num_exp_div VALUES (0,5,'0'); INSERT INTO num_exp_add VALUES (0,6,'93901.57763026'); INSERT INTO num_exp_sub VALUES (0,6,'-93901.57763026'); INSERT INTO num_exp_mul VALUES (0,6,'0'); INSERT INTO num_exp_div VALUES (0,6,'0'); INSERT INTO num_exp_add VALUES (0,7,'-83028485'); INSERT INTO num_exp_sub VALUES (0,7,'83028485'); INSERT INTO num_exp_mul VALUES (0,7,'0'); INSERT INTO num_exp_div VALUES (0,7,'0'); INSERT INTO num_exp_add VALUES (0,8,'74881'); INSERT INTO num_exp_sub VALUES (0,8,'-74881'); INSERT INTO num_exp_mul VALUES (0,8,'0'); INSERT INTO num_exp_div VALUES (0,8,'0'); INSERT INTO num_exp_add VALUES (0,9,'-24926804.045047420'); INSERT INTO num_exp_sub VALUES (0,9,'24926804.045047420'); INSERT INTO num_exp_mul VALUES (0,9,'0'); INSERT INTO num_exp_div VALUES (0,9,'0'); INSERT INTO num_exp_add VALUES (1,0,'0'); INSERT INTO num_exp_sub VALUES (1,0,'0'); INSERT INTO num_exp_mul VALUES (1,0,'0'); INSERT INTO num_exp_div VALUES (1,0,'NaN'); INSERT INTO num_exp_add VALUES (1,1,'0'); INSERT INTO num_exp_sub VALUES (1,1,'0'); INSERT INTO num_exp_mul VALUES (1,1,'0'); INSERT INTO num_exp_div VALUES (1,1,'NaN'); INSERT INTO num_exp_add VALUES (1,2,'-34338492.215397047'); INSERT INTO num_exp_sub VALUES (1,2,'34338492.215397047'); INSERT INTO num_exp_mul VALUES (1,2,'0'); INSERT INTO num_exp_div VALUES (1,2,'0'); INSERT INTO num_exp_add VALUES (1,3,'4.31'); INSERT INTO num_exp_sub VALUES (1,3,'-4.31'); INSERT INTO num_exp_mul VALUES (1,3,'0'); INSERT INTO num_exp_div VALUES (1,3,'0'); INSERT INTO num_exp_add VALUES (1,4,'7799461.4119'); INSERT INTO num_exp_sub VALUES (1,4,'-7799461.4119'); INSERT INTO num_exp_mul VALUES (1,4,'0'); INSERT INTO num_exp_div VALUES (1,4,'0'); INSERT INTO num_exp_add VALUES (1,5,'16397.038491'); INSERT INTO num_exp_sub VALUES (1,5,'-16397.038491'); INSERT INTO num_exp_mul VALUES (1,5,'0'); INSERT INTO num_exp_div VALUES (1,5,'0'); INSERT INTO num_exp_add VALUES (1,6,'93901.57763026'); INSERT INTO num_exp_sub VALUES (1,6,'-93901.57763026'); INSERT INTO num_exp_mul VALUES (1,6,'0'); INSERT INTO num_exp_div VALUES (1,6,'0'); INSERT INTO num_exp_add VALUES (1,7,'-83028485'); INSERT INTO num_exp_sub VALUES (1,7,'83028485'); INSERT INTO num_exp_mul VALUES (1,7,'0'); INSERT INTO num_exp_div VALUES (1,7,'0'); INSERT INTO num_exp_add VALUES (1,8,'74881'); INSERT INTO num_exp_sub VALUES (1,8,'-74881'); INSERT INTO num_exp_mul VALUES (1,8,'0'); INSERT INTO num_exp_div VALUES (1,8,'0'); INSERT INTO num_exp_add VALUES (1,9,'-24926804.045047420'); INSERT INTO num_exp_sub VALUES (1,9,'24926804.045047420'); INSERT INTO num_exp_mul VALUES (1,9,'0'); INSERT INTO num_exp_div VALUES (1,9,'0'); INSERT INTO num_exp_add VALUES (2,0,'-34338492.215397047'); INSERT INTO num_exp_sub VALUES (2,0,'-34338492.215397047'); INSERT INTO num_exp_mul VALUES (2,0,'0'); INSERT INTO num_exp_div VALUES (2,0,'NaN'); INSERT INTO num_exp_add VALUES (2,1,'-34338492.215397047'); INSERT INTO num_exp_sub VALUES (2,1,'-34338492.215397047'); INSERT INTO num_exp_mul VALUES (2,1,'0'); INSERT INTO num_exp_div VALUES (2,1,'NaN'); INSERT INTO num_exp_add VALUES (2,2,'-68676984.430794094'); INSERT INTO num_exp_sub VALUES (2,2,'0'); INSERT INTO num_exp_mul VALUES (2,2,'1179132047626883.596862135856320209'); INSERT INTO num_exp_div VALUES (2,2,'1.00000000000000000000'); INSERT INTO num_exp_add VALUES (2,3,'-34338487.905397047'); INSERT INTO num_exp_sub VALUES (2,3,'-34338496.525397047'); INSERT INTO num_exp_mul VALUES (2,3,'-147998901.44836127257'); INSERT INTO num_exp_div VALUES (2,3,'-7967167.56737750510440835266'); INSERT INTO num_exp_add VALUES (2,4,'-26539030.803497047'); INSERT INTO num_exp_sub VALUES (2,4,'-42137953.627297047'); INSERT INTO num_exp_mul VALUES (2,4,'-267821744976817.8111137106593'); INSERT INTO num_exp_div VALUES (2,4,'-4.40267480046830116685'); INSERT INTO num_exp_add VALUES (2,5,'-34322095.176906047'); INSERT INTO num_exp_sub VALUES (2,5,'-34354889.253888047'); INSERT INTO num_exp_mul VALUES (2,5,'-563049578578.769242506736077'); INSERT INTO num_exp_div VALUES (2,5,'-2094.18866914563535496429'); INSERT INTO num_exp_add VALUES (2,6,'-34244590.637766787'); INSERT INTO num_exp_sub VALUES (2,6,'-34432393.793027307'); INSERT INTO num_exp_mul VALUES (2,6,'-3224438592470.18449811926184222'); INSERT INTO num_exp_div VALUES (2,6,'-365.68599891479766440940'); INSERT INTO num_exp_add VALUES (2,7,'-117366977.215397047'); INSERT INTO num_exp_sub VALUES (2,7,'48689992.784602953'); INSERT INTO num_exp_mul VALUES (2,7,'2851072985828710.485883795'); INSERT INTO num_exp_div VALUES (2,7,'.41357483778485235518'); INSERT INTO num_exp_add VALUES (2,8,'-34263611.215397047'); INSERT INTO num_exp_sub VALUES (2,8,'-34413373.215397047'); INSERT INTO num_exp_mul VALUES (2,8,'-2571300635581.146276407'); INSERT INTO num_exp_div VALUES (2,8,'-458.57416721727870888476'); INSERT INTO num_exp_add VALUES (2,9,'-59265296.260444467'); INSERT INTO num_exp_sub VALUES (2,9,'-9411688.170349627'); INSERT INTO num_exp_mul VALUES (2,9,'855948866655588.453741509242968740'); INSERT INTO num_exp_div VALUES (2,9,'1.37757299946438931811'); INSERT INTO num_exp_add VALUES (3,0,'4.31'); INSERT INTO num_exp_sub VALUES (3,0,'4.31'); INSERT INTO num_exp_mul VALUES (3,0,'0'); INSERT INTO num_exp_div VALUES (3,0,'NaN'); INSERT INTO num_exp_add VALUES (3,1,'4.31'); INSERT INTO num_exp_sub VALUES (3,1,'4.31'); INSERT INTO num_exp_mul VALUES (3,1,'0'); INSERT INTO num_exp_div VALUES (3,1,'NaN'); INSERT INTO num_exp_add VALUES (3,2,'-34338487.905397047'); INSERT INTO num_exp_sub VALUES (3,2,'34338496.525397047'); INSERT INTO num_exp_mul VALUES (3,2,'-147998901.44836127257'); INSERT INTO num_exp_div VALUES (3,2,'-.00000012551512084352'); INSERT INTO num_exp_add VALUES (3,3,'8.62'); INSERT INTO num_exp_sub VALUES (3,3,'0'); INSERT INTO num_exp_mul VALUES (3,3,'18.5761'); INSERT INTO num_exp_div VALUES (3,3,'1.00000000000000000000'); INSERT INTO num_exp_add VALUES (3,4,'7799465.7219'); INSERT INTO num_exp_sub VALUES (3,4,'-7799457.1019'); INSERT INTO num_exp_mul VALUES (3,4,'33615678.685289'); INSERT INTO num_exp_div VALUES (3,4,'.00000055260225961552'); INSERT INTO num_exp_add VALUES (3,5,'16401.348491'); INSERT INTO num_exp_sub VALUES (3,5,'-16392.728491'); INSERT INTO num_exp_mul VALUES (3,5,'70671.23589621'); INSERT INTO num_exp_div VALUES (3,5,'.00026285234387695504'); INSERT INTO num_exp_add VALUES (3,6,'93905.88763026'); INSERT INTO num_exp_sub VALUES (3,6,'-93897.26763026'); INSERT INTO num_exp_mul VALUES (3,6,'404715.7995864206'); INSERT INTO num_exp_div VALUES (3,6,'.00004589912234457595'); INSERT INTO num_exp_add VALUES (3,7,'-83028480.69'); INSERT INTO num_exp_sub VALUES (3,7,'83028489.31'); INSERT INTO num_exp_mul VALUES (3,7,'-357852770.35'); INSERT INTO num_exp_div VALUES (3,7,'-.00000005190989574240'); INSERT INTO num_exp_add VALUES (3,8,'74885.31'); INSERT INTO num_exp_sub VALUES (3,8,'-74876.69'); INSERT INTO num_exp_mul VALUES (3,8,'322737.11'); INSERT INTO num_exp_div VALUES (3,8,'.00005755799201399553'); INSERT INTO num_exp_add VALUES (3,9,'-24926799.735047420'); INSERT INTO num_exp_sub VALUES (3,9,'24926808.355047420'); INSERT INTO num_exp_mul VALUES (3,9,'-107434525.43415438020'); INSERT INTO num_exp_div VALUES (3,9,'-.00000017290624149854'); INSERT INTO num_exp_add VALUES (4,0,'7799461.4119'); INSERT INTO num_exp_sub VALUES (4,0,'7799461.4119'); INSERT INTO num_exp_mul VALUES (4,0,'0'); INSERT INTO num_exp_div VALUES (4,0,'NaN'); INSERT INTO num_exp_add VALUES (4,1,'7799461.4119'); INSERT INTO num_exp_sub VALUES (4,1,'7799461.4119'); INSERT INTO num_exp_mul VALUES (4,1,'0'); INSERT INTO num_exp_div VALUES (4,1,'NaN'); INSERT INTO num_exp_add VALUES (4,2,'-26539030.803497047'); INSERT INTO num_exp_sub VALUES (4,2,'42137953.627297047'); INSERT INTO num_exp_mul VALUES (4,2,'-267821744976817.8111137106593'); INSERT INTO num_exp_div VALUES (4,2,'-.22713465002993920385'); INSERT INTO num_exp_add VALUES (4,3,'7799465.7219'); INSERT INTO num_exp_sub VALUES (4,3,'7799457.1019'); INSERT INTO num_exp_mul VALUES (4,3,'33615678.685289'); INSERT INTO num_exp_div VALUES (4,3,'1809619.81714617169373549883'); INSERT INTO num_exp_add VALUES (4,4,'15598922.8238'); INSERT INTO num_exp_sub VALUES (4,4,'0'); INSERT INTO num_exp_mul VALUES (4,4,'60831598315717.14146161'); INSERT INTO num_exp_div VALUES (4,4,'1.00000000000000000000'); INSERT INTO num_exp_add VALUES (4,5,'7815858.450391'); INSERT INTO num_exp_sub VALUES (4,5,'7783064.373409'); INSERT INTO num_exp_mul VALUES (4,5,'127888068979.9935054429'); INSERT INTO num_exp_div VALUES (4,5,'475.66281046305802686061'); INSERT INTO num_exp_add VALUES (4,6,'7893362.98953026'); INSERT INTO num_exp_sub VALUES (4,6,'7705559.83426974'); INSERT INTO num_exp_mul VALUES (4,6,'732381731243.745115764094'); INSERT INTO num_exp_div VALUES (4,6,'83.05996138436129499606'); INSERT INTO num_exp_add VALUES (4,7,'-75229023.5881'); INSERT INTO num_exp_sub VALUES (4,7,'90827946.4119'); INSERT INTO num_exp_mul VALUES (4,7,'-647577464846017.9715'); INSERT INTO num_exp_div VALUES (4,7,'-.09393717604145131637'); INSERT INTO num_exp_add VALUES (4,8,'7874342.4119'); INSERT INTO num_exp_sub VALUES (4,8,'7724580.4119'); INSERT INTO num_exp_mul VALUES (4,8,'584031469984.4839'); INSERT INTO num_exp_div VALUES (4,8,'104.15808298366741897143'); INSERT INTO num_exp_add VALUES (4,9,'-17127342.633147420'); INSERT INTO num_exp_sub VALUES (4,9,'32726265.456947420'); INSERT INTO num_exp_mul VALUES (4,9,'-194415646271340.1815956522980'); INSERT INTO num_exp_div VALUES (4,9,'-.31289456112403769409'); INSERT INTO num_exp_add VALUES (5,0,'16397.038491'); INSERT INTO num_exp_sub VALUES (5,0,'16397.038491'); INSERT INTO num_exp_mul VALUES (5,0,'0'); INSERT INTO num_exp_div VALUES (5,0,'NaN'); INSERT INTO num_exp_add VALUES (5,1,'16397.038491'); INSERT INTO num_exp_sub VALUES (5,1,'16397.038491'); INSERT INTO num_exp_mul VALUES (5,1,'0'); INSERT INTO num_exp_div VALUES (5,1,'NaN'); INSERT INTO num_exp_add VALUES (5,2,'-34322095.176906047'); INSERT INTO num_exp_sub VALUES (5,2,'34354889.253888047'); INSERT INTO num_exp_mul VALUES (5,2,'-563049578578.769242506736077'); INSERT INTO num_exp_div VALUES (5,2,'-.00047751189505192446'); INSERT INTO num_exp_add VALUES (5,3,'16401.348491'); INSERT INTO num_exp_sub VALUES (5,3,'16392.728491'); INSERT INTO num_exp_mul VALUES (5,3,'70671.23589621'); INSERT INTO num_exp_div VALUES (5,3,'3804.41728329466357308584'); INSERT INTO num_exp_add VALUES (5,4,'7815858.450391'); INSERT INTO num_exp_sub VALUES (5,4,'-7783064.373409'); INSERT INTO num_exp_mul VALUES (5,4,'127888068979.9935054429'); INSERT INTO num_exp_div VALUES (5,4,'.00210232958726897192'); INSERT INTO num_exp_add VALUES (5,5,'32794.076982'); INSERT INTO num_exp_sub VALUES (5,5,'0'); INSERT INTO num_exp_mul VALUES (5,5,'268862871.275335557081'); INSERT INTO num_exp_div VALUES (5,5,'1.00000000000000000000'); INSERT INTO num_exp_add VALUES (5,6,'110298.61612126'); INSERT INTO num_exp_sub VALUES (5,6,'-77504.53913926'); INSERT INTO num_exp_mul VALUES (5,6,'1539707782.76899778633766'); INSERT INTO num_exp_div VALUES (5,6,'.17461941433576102689'); INSERT INTO num_exp_add VALUES (5,7,'-83012087.961509'); INSERT INTO num_exp_sub VALUES (5,7,'83044882.038491'); INSERT INTO num_exp_mul VALUES (5,7,'-1361421264394.416135'); INSERT INTO num_exp_div VALUES (5,7,'-.00019748690453643710'); INSERT INTO num_exp_add VALUES (5,8,'91278.038491'); INSERT INTO num_exp_sub VALUES (5,8,'-58483.961509'); INSERT INTO num_exp_mul VALUES (5,8,'1227826639.244571'); INSERT INTO num_exp_div VALUES (5,8,'.21897461960978085228'); INSERT INTO num_exp_add VALUES (5,9,'-24910407.006556420'); INSERT INTO num_exp_sub VALUES (5,9,'24943201.083538420'); INSERT INTO num_exp_mul VALUES (5,9,'-408725765384.257043660243220'); INSERT INTO num_exp_div VALUES (5,9,'-.00065780749354660427'); INSERT INTO num_exp_add VALUES (6,0,'93901.57763026'); INSERT INTO num_exp_sub VALUES (6,0,'93901.57763026'); INSERT INTO num_exp_mul VALUES (6,0,'0'); INSERT INTO num_exp_div VALUES (6,0,'NaN'); INSERT INTO num_exp_add VALUES (6,1,'93901.57763026'); INSERT INTO num_exp_sub VALUES (6,1,'93901.57763026'); INSERT INTO num_exp_mul VALUES (6,1,'0'); INSERT INTO num_exp_div VALUES (6,1,'NaN'); INSERT INTO num_exp_add VALUES (6,2,'-34244590.637766787'); INSERT INTO num_exp_sub VALUES (6,2,'34432393.793027307'); INSERT INTO num_exp_mul VALUES (6,2,'-3224438592470.18449811926184222'); INSERT INTO num_exp_div VALUES (6,2,'-.00273458651128995823'); INSERT INTO num_exp_add VALUES (6,3,'93905.88763026'); INSERT INTO num_exp_sub VALUES (6,3,'93897.26763026'); INSERT INTO num_exp_mul VALUES (6,3,'404715.7995864206'); INSERT INTO num_exp_div VALUES (6,3,'21786.90896293735498839907'); INSERT INTO num_exp_add VALUES (6,4,'7893362.98953026'); INSERT INTO num_exp_sub VALUES (6,4,'-7705559.83426974'); INSERT INTO num_exp_mul VALUES (6,4,'732381731243.745115764094'); INSERT INTO num_exp_div VALUES (6,4,'.01203949512295682469'); INSERT INTO num_exp_add VALUES (6,5,'110298.61612126'); INSERT INTO num_exp_sub VALUES (6,5,'77504.53913926'); INSERT INTO num_exp_mul VALUES (6,5,'1539707782.76899778633766'); INSERT INTO num_exp_div VALUES (6,5,'5.72674008674192359679'); INSERT INTO num_exp_add VALUES (6,6,'187803.15526052'); INSERT INTO num_exp_sub VALUES (6,6,'0'); INSERT INTO num_exp_mul VALUES (6,6,'8817506281.4517452372676676'); INSERT INTO num_exp_div VALUES (6,6,'1.00000000000000000000'); INSERT INTO num_exp_add VALUES (6,7,'-82934583.42236974'); INSERT INTO num_exp_sub VALUES (6,7,'83122386.57763026'); INSERT INTO num_exp_mul VALUES (6,7,'-7796505729750.37795610'); INSERT INTO num_exp_div VALUES (6,7,'-.00113095617281538980'); INSERT INTO num_exp_add VALUES (6,8,'168782.57763026'); INSERT INTO num_exp_sub VALUES (6,8,'19020.57763026'); INSERT INTO num_exp_mul VALUES (6,8,'7031444034.53149906'); INSERT INTO num_exp_div VALUES (6,8,'1.25401073209839612184'); INSERT INTO num_exp_add VALUES (6,9,'-24832902.467417160'); INSERT INTO num_exp_sub VALUES (6,9,'25020705.622677680'); INSERT INTO num_exp_mul VALUES (6,9,'-2340666225110.29929521292692920'); INSERT INTO num_exp_div VALUES (6,9,'-.00376709254265256789'); INSERT INTO num_exp_add VALUES (7,0,'-83028485'); INSERT INTO num_exp_sub VALUES (7,0,'-83028485'); INSERT INTO num_exp_mul VALUES (7,0,'0'); INSERT INTO num_exp_div VALUES (7,0,'NaN'); INSERT INTO num_exp_add VALUES (7,1,'-83028485'); INSERT INTO num_exp_sub VALUES (7,1,'-83028485'); INSERT INTO num_exp_mul VALUES (7,1,'0'); INSERT INTO num_exp_div VALUES (7,1,'NaN'); INSERT INTO num_exp_add VALUES (7,2,'-117366977.215397047'); INSERT INTO num_exp_sub VALUES (7,2,'-48689992.784602953'); INSERT INTO num_exp_mul VALUES (7,2,'2851072985828710.485883795'); INSERT INTO num_exp_div VALUES (7,2,'2.41794207151503385700'); INSERT INTO num_exp_add VALUES (7,3,'-83028480.69'); INSERT INTO num_exp_sub VALUES (7,3,'-83028489.31'); INSERT INTO num_exp_mul VALUES (7,3,'-357852770.35'); INSERT INTO num_exp_div VALUES (7,3,'-19264149.65197215777262180974'); INSERT INTO num_exp_add VALUES (7,4,'-75229023.5881'); INSERT INTO num_exp_sub VALUES (7,4,'-90827946.4119'); INSERT INTO num_exp_mul VALUES (7,4,'-647577464846017.9715'); INSERT INTO num_exp_div VALUES (7,4,'-10.64541262725136247686'); INSERT INTO num_exp_add VALUES (7,5,'-83012087.961509'); INSERT INTO num_exp_sub VALUES (7,5,'-83044882.038491'); INSERT INTO num_exp_mul VALUES (7,5,'-1361421264394.416135'); INSERT INTO num_exp_div VALUES (7,5,'-5063.62688881730941836574'); INSERT INTO num_exp_add VALUES (7,6,'-82934583.42236974'); INSERT INTO num_exp_sub VALUES (7,6,'-83122386.57763026'); INSERT INTO num_exp_mul VALUES (7,6,'-7796505729750.37795610'); INSERT INTO num_exp_div VALUES (7,6,'-884.20756174009028770294'); INSERT INTO num_exp_add VALUES (7,7,'-166056970'); INSERT INTO num_exp_sub VALUES (7,7,'0'); INSERT INTO num_exp_mul VALUES (7,7,'6893729321395225'); INSERT INTO num_exp_div VALUES (7,7,'1.00000000000000000000'); INSERT INTO num_exp_add VALUES (7,8,'-82953604'); INSERT INTO num_exp_sub VALUES (7,8,'-83103366'); INSERT INTO num_exp_mul VALUES (7,8,'-6217255985285'); INSERT INTO num_exp_div VALUES (7,8,'-1108.80577182462841041118'); INSERT INTO num_exp_add VALUES (7,9,'-107955289.045047420'); INSERT INTO num_exp_sub VALUES (7,9,'-58101680.954952580'); INSERT INTO num_exp_mul VALUES (7,9,'2069634775752159.035758700'); INSERT INTO num_exp_div VALUES (7,9,'3.33089171198810413382'); INSERT INTO num_exp_add VALUES (8,0,'74881'); INSERT INTO num_exp_sub VALUES (8,0,'74881'); INSERT INTO num_exp_mul VALUES (8,0,'0'); INSERT INTO num_exp_div VALUES (8,0,'NaN'); INSERT INTO num_exp_add VALUES (8,1,'74881'); INSERT INTO num_exp_sub VALUES (8,1,'74881'); INSERT INTO num_exp_mul VALUES (8,1,'0'); INSERT INTO num_exp_div VALUES (8,1,'NaN'); INSERT INTO num_exp_add VALUES (8,2,'-34263611.215397047'); INSERT INTO num_exp_sub VALUES (8,2,'34413373.215397047'); INSERT INTO num_exp_mul VALUES (8,2,'-2571300635581.146276407'); INSERT INTO num_exp_div VALUES (8,2,'-.00218067233500788615'); INSERT INTO num_exp_add VALUES (8,3,'74885.31'); INSERT INTO num_exp_sub VALUES (8,3,'74876.69'); INSERT INTO num_exp_mul VALUES (8,3,'322737.11'); INSERT INTO num_exp_div VALUES (8,3,'17373.78190255220417633410'); INSERT INTO num_exp_add VALUES (8,4,'7874342.4119'); INSERT INTO num_exp_sub VALUES (8,4,'-7724580.4119'); INSERT INTO num_exp_mul VALUES (8,4,'584031469984.4839'); INSERT INTO num_exp_div VALUES (8,4,'.00960079113741758956'); INSERT INTO num_exp_add VALUES (8,5,'91278.038491'); INSERT INTO num_exp_sub VALUES (8,5,'58483.961509'); INSERT INTO num_exp_mul VALUES (8,5,'1227826639.244571'); INSERT INTO num_exp_div VALUES (8,5,'4.56673929509287019456'); INSERT INTO num_exp_add VALUES (8,6,'168782.57763026'); INSERT INTO num_exp_sub VALUES (8,6,'-19020.57763026'); INSERT INTO num_exp_mul VALUES (8,6,'7031444034.53149906'); INSERT INTO num_exp_div VALUES (8,6,'.79744134113322314424'); INSERT INTO num_exp_add VALUES (8,7,'-82953604'); INSERT INTO num_exp_sub VALUES (8,7,'83103366'); INSERT INTO num_exp_mul VALUES (8,7,'-6217255985285'); INSERT INTO num_exp_div VALUES (8,7,'-.00090187120721280172'); INSERT INTO num_exp_add VALUES (8,8,'149762'); INSERT INTO num_exp_sub VALUES (8,8,'0'); INSERT INTO num_exp_mul VALUES (8,8,'5607164161'); INSERT INTO num_exp_div VALUES (8,8,'1.00000000000000000000'); INSERT INTO num_exp_add VALUES (8,9,'-24851923.045047420'); INSERT INTO num_exp_sub VALUES (8,9,'25001685.045047420'); INSERT INTO num_exp_mul VALUES (8,9,'-1866544013697.195857020'); INSERT INTO num_exp_div VALUES (8,9,'-.00300403532938582735'); INSERT INTO num_exp_add VALUES (9,0,'-24926804.045047420'); INSERT INTO num_exp_sub VALUES (9,0,'-24926804.045047420'); INSERT INTO num_exp_mul VALUES (9,0,'0'); INSERT INTO num_exp_div VALUES (9,0,'NaN'); INSERT INTO num_exp_add VALUES (9,1,'-24926804.045047420'); INSERT INTO num_exp_sub VALUES (9,1,'-24926804.045047420'); INSERT INTO num_exp_mul VALUES (9,1,'0'); INSERT INTO num_exp_div VALUES (9,1,'NaN'); INSERT INTO num_exp_add VALUES (9,2,'-59265296.260444467'); INSERT INTO num_exp_sub VALUES (9,2,'9411688.170349627'); INSERT INTO num_exp_mul VALUES (9,2,'855948866655588.453741509242968740'); INSERT INTO num_exp_div VALUES (9,2,'.72591434384152961526'); INSERT INTO num_exp_add VALUES (9,3,'-24926799.735047420'); INSERT INTO num_exp_sub VALUES (9,3,'-24926808.355047420'); INSERT INTO num_exp_mul VALUES (9,3,'-107434525.43415438020'); INSERT INTO num_exp_div VALUES (9,3,'-5783481.21694835730858468677'); INSERT INTO num_exp_add VALUES (9,4,'-17127342.633147420'); INSERT INTO num_exp_sub VALUES (9,4,'-32726265.456947420'); INSERT INTO num_exp_mul VALUES (9,4,'-194415646271340.1815956522980'); INSERT INTO num_exp_div VALUES (9,4,'-3.19596478892958416484'); INSERT INTO num_exp_add VALUES (9,5,'-24910407.006556420'); INSERT INTO num_exp_sub VALUES (9,5,'-24943201.083538420'); INSERT INTO num_exp_mul VALUES (9,5,'-408725765384.257043660243220'); INSERT INTO num_exp_div VALUES (9,5,'-1520.20159364322004505807'); INSERT INTO num_exp_add VALUES (9,6,'-24832902.467417160'); INSERT INTO num_exp_sub VALUES (9,6,'-25020705.622677680'); INSERT INTO num_exp_mul VALUES (9,6,'-2340666225110.29929521292692920'); INSERT INTO num_exp_div VALUES (9,6,'-265.45671195426965751280'); INSERT INTO num_exp_add VALUES (9,7,'-107955289.045047420'); INSERT INTO num_exp_sub VALUES (9,7,'58101680.954952580'); INSERT INTO num_exp_mul VALUES (9,7,'2069634775752159.035758700'); INSERT INTO num_exp_div VALUES (9,7,'.30021990699995814689'); INSERT INTO num_exp_add VALUES (9,8,'-24851923.045047420'); INSERT INTO num_exp_sub VALUES (9,8,'-25001685.045047420'); INSERT INTO num_exp_mul VALUES (9,8,'-1866544013697.195857020'); INSERT INTO num_exp_div VALUES (9,8,'-332.88556569820675471748'); INSERT INTO num_exp_add VALUES (9,9,'-49853608.090094840'); INSERT INTO num_exp_sub VALUES (9,9,'0'); INSERT INTO num_exp_mul VALUES (9,9,'621345559900192.420120630048656400'); INSERT INTO num_exp_div VALUES (9,9,'1.00000000000000000000'); COMMIT TRANSACTION; BEGIN TRANSACTION; INSERT INTO num_exp_sqrt VALUES (0,'0'); INSERT INTO num_exp_sqrt VALUES (1,'0'); INSERT INTO num_exp_sqrt VALUES (2,'5859.90547836712524903505'); INSERT INTO num_exp_sqrt VALUES (3,'2.07605394920266944396'); INSERT INTO num_exp_sqrt VALUES (4,'2792.75158435189147418923'); INSERT INTO num_exp_sqrt VALUES (5,'128.05092147657509145473'); INSERT INTO num_exp_sqrt VALUES (6,'306.43364311096782703406'); INSERT INTO num_exp_sqrt VALUES (7,'9111.99676251039939975230'); INSERT INTO num_exp_sqrt VALUES (8,'273.64392922189960397542'); INSERT INTO num_exp_sqrt VALUES (9,'4992.67503899937593364766'); COMMIT TRANSACTION; BEGIN TRANSACTION; INSERT INTO num_exp_ln VALUES (0,'NaN'); INSERT INTO num_exp_ln VALUES (1,'NaN'); INSERT INTO num_exp_ln VALUES (2,'17.35177750493897715514'); INSERT INTO num_exp_ln VALUES (3,'1.46093790411565641971'); INSERT INTO num_exp_ln VALUES (4,'15.86956523951936572464'); INSERT INTO num_exp_ln VALUES (5,'9.70485601768871834038'); INSERT INTO num_exp_ln VALUES (6,'11.45000246622944403127'); INSERT INTO num_exp_ln VALUES (7,'18.23469429965478772991'); INSERT INTO num_exp_ln VALUES (8,'11.22365546576315513668'); INSERT INTO num_exp_ln VALUES (9,'17.03145425013166006962'); COMMIT TRANSACTION; BEGIN TRANSACTION; INSERT INTO num_exp_log10 VALUES (0,'NaN'); INSERT INTO num_exp_log10 VALUES (1,'NaN'); INSERT INTO num_exp_log10 VALUES (2,'7.53578122160797276459'); INSERT INTO num_exp_log10 VALUES (3,'.63447727016073160075'); INSERT INTO num_exp_log10 VALUES (4,'6.89206461372691743345'); INSERT INTO num_exp_log10 VALUES (5,'4.21476541614777768626'); INSERT INTO num_exp_log10 VALUES (6,'4.97267288886207207671'); INSERT INTO num_exp_log10 VALUES (7,'7.91922711353275546914'); INSERT INTO num_exp_log10 VALUES (8,'4.87437163556421004138'); INSERT INTO num_exp_log10 VALUES (9,'7.39666659961986567059'); COMMIT TRANSACTION; BEGIN TRANSACTION; INSERT INTO num_exp_power_10_ln VALUES (0,'NaN'); INSERT INTO num_exp_power_10_ln VALUES (1,'NaN'); INSERT INTO num_exp_power_10_ln VALUES (2,'224790267919917955.13261618583642653184'); INSERT INTO num_exp_power_10_ln VALUES (3,'28.90266599445155957393'); INSERT INTO num_exp_power_10_ln VALUES (4,'7405685069594999.07733999469386277636'); INSERT INTO num_exp_power_10_ln VALUES (5,'5068226527.32127265408584640098'); INSERT INTO num_exp_power_10_ln VALUES (6,'281839893606.99372343357047819067'); INSERT INTO num_exp_power_10_ln VALUES (7,'1716699575118597095.42330819910640247627'); INSERT INTO num_exp_power_10_ln VALUES (8,'167361463828.07491320069016125952'); INSERT INTO num_exp_power_10_ln VALUES (9,'107511333880052007.04141124673540337457'); COMMIT TRANSACTION; BEGIN TRANSACTION; INSERT INTO num_data VALUES (0, '0'); INSERT INTO num_data VALUES (1, '0'); INSERT INTO num_data VALUES (2, '-34338492.215397047'); INSERT INTO num_data VALUES (3, '4.31'); INSERT INTO num_data VALUES (4, '7799461.4119'); INSERT INTO num_data VALUES (5, '16397.038491'); INSERT INTO num_data VALUES (6, '93901.57763026'); INSERT INTO num_data VALUES (7, '-83028485'); INSERT INTO num_data VALUES (8, '74881'); INSERT INTO num_data VALUES (9, '-24926804.045047420'); COMMIT TRANSACTION; -- ****************************** -- * Create indices for faster checks -- ****************************** CREATE UNIQUE INDEX num_exp_add_idx ON num_exp_add (id1, id2); CREATE UNIQUE INDEX num_exp_sub_idx ON num_exp_sub (id1, id2); CREATE UNIQUE INDEX num_exp_div_idx ON num_exp_div (id1, id2); CREATE UNIQUE INDEX num_exp_mul_idx ON num_exp_mul (id1, id2); CREATE UNIQUE INDEX num_exp_sqrt_idx ON num_exp_sqrt (id); CREATE UNIQUE INDEX num_exp_ln_idx ON num_exp_ln (id); CREATE UNIQUE INDEX num_exp_log10_idx ON num_exp_log10 (id); CREATE UNIQUE INDEX num_exp_power_10_ln_idx ON num_exp_power_10_ln (id); VACUUM ANALYZE num_exp_add; VACUUM ANALYZE num_exp_sub; VACUUM ANALYZE num_exp_div; VACUUM ANALYZE num_exp_mul; VACUUM ANALYZE num_exp_sqrt; VACUUM ANALYZE num_exp_ln; VACUUM ANALYZE num_exp_log10; VACUUM ANALYZE num_exp_power_10_ln; -- ****************************** -- * Now check the behaviour of the NUMERIC type -- ****************************** -- ****************************** -- * Addition check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, t1.val + t2.val FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, t2.expected FROM num_result t1, num_exp_add t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != t2.expected; DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val + t2.val, 10) FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 10) as expected FROM num_result t1, num_exp_add t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != round(t2.expected, 10); -- ****************************** -- * Subtraction check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, t1.val - t2.val FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, t2.expected FROM num_result t1, num_exp_sub t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != t2.expected; DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val - t2.val, 40) FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 40) FROM num_result t1, num_exp_sub t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != round(t2.expected, 40); -- ****************************** -- * Multiply check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, t1.val * t2.val FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, t2.expected FROM num_result t1, num_exp_mul t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != t2.expected; DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 30) as expected FROM num_result t1, num_exp_mul t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != round(t2.expected, 30); -- ****************************** -- * Division check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, t1.val / t2.val FROM num_data t1, num_data t2 WHERE t2.val != '0.0'; SELECT t1.id1, t1.id2, t1.result, t2.expected FROM num_result t1, num_exp_div t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != t2.expected; DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val / t2.val, 80) FROM num_data t1, num_data t2 WHERE t2.val != '0.0'; SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 80) as expected FROM num_result t1, num_exp_div t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != round(t2.expected, 80); -- ****************************** -- * Square root check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT id, 0, SQRT(ABS(val)) FROM num_data; SELECT t1.id1, t1.result, t2.expected FROM num_result t1, num_exp_sqrt t2 WHERE t1.id1 = t2.id AND t1.result != t2.expected; -- ****************************** -- * Natural logarithm check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT id, 0, LN(ABS(val)) FROM num_data WHERE val != '0.0'; SELECT t1.id1, t1.result, t2.expected FROM num_result t1, num_exp_ln t2 WHERE t1.id1 = t2.id AND t1.result != t2.expected; -- ****************************** -- * Logarithm base 10 check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT id, 0, LOG(numeric '10', ABS(val)) FROM num_data WHERE val != '0.0'; SELECT t1.id1, t1.result, t2.expected FROM num_result t1, num_exp_log10 t2 WHERE t1.id1 = t2.id AND t1.result != t2.expected; -- ****************************** -- * POWER(10, LN(value)) check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT id, 0, POWER(numeric '10', LN(ABS(round(val,200)))) FROM num_data WHERE val != '0.0'; SELECT t1.id1, t1.result, t2.expected FROM num_result t1, num_exp_power_10_ln t2 WHERE t1.id1 = t2.id AND t1.result != t2.expected; -- ****************************** -- * miscellaneous checks for things that have been broken in the past... -- ****************************** -- numeric AVG used to fail on some platforms SELECT AVG(val) FROM num_data; SELECT STDDEV(val) FROM num_data; SELECT VARIANCE(val) FROM num_data; -- Check for appropriate rounding and overflow CREATE TABLE fract_only (id int, val numeric(4,4)); INSERT INTO fract_only VALUES (1, '0.0'); INSERT INTO fract_only VALUES (2, '0.1'); INSERT INTO fract_only VALUES (3, '1.0'); -- should fail INSERT INTO fract_only VALUES (4, '-0.9999'); INSERT INTO fract_only VALUES (5, '0.99994'); INSERT INTO fract_only VALUES (6, '0.99995'); -- should fail INSERT INTO fract_only VALUES (7, '0.00001'); INSERT INTO fract_only VALUES (8, '0.00017'); SELECT * FROM fract_only; DROP TABLE fract_only; -- Check inf/nan conversion behavior SELECT 'NaN'::float8::numeric; SELECT 'Infinity'::float8::numeric; SELECT '-Infinity'::float8::numeric; SELECT 'NaN'::float4::numeric; SELECT 'Infinity'::float4::numeric; SELECT '-Infinity'::float4::numeric; -- Simple check that ceil(), floor(), and round() work correctly CREATE TABLE ceil_floor_round (a numeric); INSERT INTO ceil_floor_round VALUES ('-5.5'); INSERT INTO ceil_floor_round VALUES ('-5.499999'); INSERT INTO ceil_floor_round VALUES ('9.5'); INSERT INTO ceil_floor_round VALUES ('9.4999999'); INSERT INTO ceil_floor_round VALUES ('0.0'); INSERT INTO ceil_floor_round VALUES ('0.0000001'); INSERT INTO ceil_floor_round VALUES ('-0.000001'); SELECT a, ceil(a), ceiling(a), floor(a), round(a) FROM ceil_floor_round; DROP TABLE ceil_floor_round; -- Check rounding, it should round ties away from zero. SELECT i as pow, round((-2.5 * 10 ^ i)::numeric, -i), round((-1.5 * 10 ^ i)::numeric, -i), round((-0.5 * 10 ^ i)::numeric, -i), round((0.5 * 10 ^ i)::numeric, -i), round((1.5 * 10 ^ i)::numeric, -i), round((2.5 * 10 ^ i)::numeric, -i) FROM generate_series(-5,5) AS t(i); -- Testing for width_bucket(). For convenience, we test both the -- numeric and float8 versions of the function in this file. -- errors SELECT width_bucket(5.0, 3.0, 4.0, 0); SELECT width_bucket(5.0, 3.0, 4.0, -5); SELECT width_bucket(3.5, 3.0, 3.0, 888); SELECT width_bucket(5.0::float8, 3.0::float8, 4.0::float8, 0); SELECT width_bucket(5.0::float8, 3.0::float8, 4.0::float8, -5); SELECT width_bucket(3.5::float8, 3.0::float8, 3.0::float8, 888); SELECT width_bucket('NaN', 3.0, 4.0, 888); SELECT width_bucket(0::float8, 'NaN', 4.0::float8, 888); -- normal operation CREATE TABLE width_bucket_test (operand_num numeric, operand_f8 float8); COPY width_bucket_test (operand_num) FROM stdin; -5.2 -0.0000000001 0.000000000001 1 1.99999999999999 2 2.00000000000001 3 4 4.5 5 5.5 6 7 8 9 9.99999999999999 10 10.0000000000001 \. UPDATE width_bucket_test SET operand_f8 = operand_num::float8; SELECT operand_num, width_bucket(operand_num, 0, 10, 5) AS wb_1, width_bucket(operand_f8, 0, 10, 5) AS wb_1f, width_bucket(operand_num, 10, 0, 5) AS wb_2, width_bucket(operand_f8, 10, 0, 5) AS wb_2f, width_bucket(operand_num, 2, 8, 4) AS wb_3, width_bucket(operand_f8, 2, 8, 4) AS wb_3f, width_bucket(operand_num, 5.0, 5.5, 20) AS wb_4, width_bucket(operand_f8, 5.0, 5.5, 20) AS wb_4f, width_bucket(operand_num, -25, 25, 10) AS wb_5, width_bucket(operand_f8, -25, 25, 10) AS wb_5f FROM width_bucket_test; -- for float8 only, check positive and negative infinity: we require -- finite bucket bounds, but allow an infinite operand SELECT width_bucket(0.0::float8, 'Infinity'::float8, 5, 10); -- error SELECT width_bucket(0.0::float8, 5, '-Infinity'::float8, 20); -- error SELECT width_bucket('Infinity'::float8, 1, 10, 10), width_bucket('-Infinity'::float8, 1, 10, 10); DROP TABLE width_bucket_test; -- TO_CHAR() -- SELECT '' AS to_char_1, to_char(val, '9G999G999G999G999G999') FROM num_data; SELECT '' AS to_char_2, to_char(val, '9G999G999G999G999G999D999G999G999G999G999') FROM num_data; SELECT '' AS to_char_3, to_char(val, '9999999999999999.999999999999999PR') FROM num_data; SELECT '' AS to_char_4, to_char(val, '9999999999999999.999999999999999S') FROM num_data; SELECT '' AS to_char_5, to_char(val, 'MI9999999999999999.999999999999999') FROM num_data; SELECT '' AS to_char_6, to_char(val, 'FMS9999999999999999.999999999999999') FROM num_data; SELECT '' AS to_char_7, to_char(val, 'FM9999999999999999.999999999999999THPR') FROM num_data; SELECT '' AS to_char_8, to_char(val, 'SG9999999999999999.999999999999999th') FROM num_data; SELECT '' AS to_char_9, to_char(val, '0999999999999999.999999999999999') FROM num_data; SELECT '' AS to_char_10, to_char(val, 'S0999999999999999.999999999999999') FROM num_data; SELECT '' AS to_char_11, to_char(val, 'FM0999999999999999.999999999999999') FROM num_data; SELECT '' AS to_char_12, to_char(val, 'FM9999999999999999.099999999999999') FROM num_data; SELECT '' AS to_char_13, to_char(val, 'FM9999999999990999.990999999999999') FROM num_data; SELECT '' AS to_char_14, to_char(val, 'FM0999999999999999.999909999999999') FROM num_data; SELECT '' AS to_char_15, to_char(val, 'FM9999999990999999.099999999999999') FROM num_data; SELECT '' AS to_char_16, to_char(val, 'L9999999999999999.099999999999999') FROM num_data; SELECT '' AS to_char_17, to_char(val, 'FM9999999999999999.99999999999999') FROM num_data; SELECT '' AS to_char_18, to_char(val, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data; SELECT '' AS to_char_19, to_char(val, 'FMS 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9') FROM num_data; SELECT '' AS to_char_20, to_char(val, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM num_data; SELECT '' AS to_char_21, to_char(val, '999999SG9999999999') FROM num_data; SELECT '' AS to_char_22, to_char(val, 'FM9999999999999999.999999999999999') FROM num_data; SELECT '' AS to_char_23, to_char(val, '9.999EEEE') FROM num_data; SELECT '' AS to_char_24, to_char('100'::numeric, 'FM999.9'); SELECT '' AS to_char_25, to_char('100'::numeric, 'FM999.'); SELECT '' AS to_char_26, to_char('100'::numeric, 'FM999'); -- Check parsing of literal text in a format string SELECT '' AS to_char_27, to_char('100'::numeric, 'foo999'); SELECT '' AS to_char_28, to_char('100'::numeric, 'f\oo999'); SELECT '' AS to_char_29, to_char('100'::numeric, 'f\\oo999'); SELECT '' AS to_char_30, to_char('100'::numeric, 'f\"oo999'); SELECT '' AS to_char_31, to_char('100'::numeric, 'f\\"oo999'); SELECT '' AS to_char_32, to_char('100'::numeric, 'f"ool"999'); SELECT '' AS to_char_33, to_char('100'::numeric, 'f"\ool"999'); SELECT '' AS to_char_34, to_char('100'::numeric, 'f"\\ool"999'); SELECT '' AS to_char_35, to_char('100'::numeric, 'f"ool\"999'); SELECT '' AS to_char_36, to_char('100'::numeric, 'f"ool\\"999'); -- TO_NUMBER() -- SET lc_numeric = 'C'; SELECT '' AS to_number_1, to_number('-34,338,492', '99G999G999'); SELECT '' AS to_number_2, to_number('-34,338,492.654,878', '99G999G999D999G999'); SELECT '' AS to_number_3, to_number('<564646.654564>', '999999.999999PR'); SELECT '' AS to_number_4, to_number('0.00001-', '9.999999S'); SELECT '' AS to_number_5, to_number('5.01-', 'FM9.999999S'); SELECT '' AS to_number_5, to_number('5.01-', 'FM9.999999MI'); SELECT '' AS to_number_7, to_number('5 4 4 4 4 8 . 7 8', '9 9 9 9 9 9 . 9 9'); SELECT '' AS to_number_8, to_number('.01', 'FM9.99'); SELECT '' AS to_number_9, to_number('.0', '99999999.99999999'); SELECT '' AS to_number_10, to_number('0', '99.99'); SELECT '' AS to_number_11, to_number('.-01', 'S99.99'); SELECT '' AS to_number_12, to_number('.01-', '99.99S'); SELECT '' AS to_number_13, to_number(' . 0 1-', ' 9 9 . 9 9 S'); SELECT '' AS to_number_14, to_number('34,50','999,99'); SELECT '' AS to_number_15, to_number('123,000','999G'); SELECT '' AS to_number_16, to_number('123456','999G999'); SELECT '' AS to_number_17, to_number('$1234.56','L9,999.99'); SELECT '' AS to_number_18, to_number('$1234.56','L99,999.99'); SELECT '' AS to_number_19, to_number('$1,234.56','L99,999.99'); SELECT '' AS to_number_20, to_number('1234.56','L99,999.99'); SELECT '' AS to_number_21, to_number('1,234.56','L99,999.99'); SELECT '' AS to_number_22, to_number('42nd', '99th'); RESET lc_numeric; -- -- Input syntax -- CREATE TABLE num_input_test (n1 numeric); -- good inputs INSERT INTO num_input_test(n1) VALUES (' 123'); INSERT INTO num_input_test(n1) VALUES (' 3245874 '); INSERT INTO num_input_test(n1) VALUES (' -93853'); INSERT INTO num_input_test(n1) VALUES ('555.50'); INSERT INTO num_input_test(n1) VALUES ('-555.50'); INSERT INTO num_input_test(n1) VALUES ('NaN '); INSERT INTO num_input_test(n1) VALUES (' nan'); -- bad inputs INSERT INTO num_input_test(n1) VALUES (' '); INSERT INTO num_input_test(n1) VALUES (' 1234 %'); INSERT INTO num_input_test(n1) VALUES ('xyz'); INSERT INTO num_input_test(n1) VALUES ('- 1234'); INSERT INTO num_input_test(n1) VALUES ('5 . 0'); INSERT INTO num_input_test(n1) VALUES ('5. 0 '); INSERT INTO num_input_test(n1) VALUES (''); INSERT INTO num_input_test(n1) VALUES (' N aN '); SELECT * FROM num_input_test; -- -- Test some corner cases for multiplication -- select 4790999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; select 4789999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; select 4770999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; select 4769999999999999999999999999999999999999999999999999999999999999999999999999999999999999 * 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999; -- -- Test some corner cases for division -- select 999999999999999999999::numeric/1000000000000000000000; select div(999999999999999999999::numeric,1000000000000000000000); select mod(999999999999999999999::numeric,1000000000000000000000); select div(-9999999999999999999999::numeric,1000000000000000000000); select mod(-9999999999999999999999::numeric,1000000000000000000000); select div(-9999999999999999999999::numeric,1000000000000000000000)*1000000000000000000000 + mod(-9999999999999999999999::numeric,1000000000000000000000); select mod (70.0,70) ; select div (70.0,70) ; select 70.0 / 70 ; select 12345678901234567890 % 123; select 12345678901234567890 / 123; select div(12345678901234567890, 123); select div(12345678901234567890, 123) * 123 + 12345678901234567890 % 123; -- -- Test some corner cases for square root -- select sqrt(1.000000000000003::numeric); select sqrt(1.000000000000004::numeric); select sqrt(96627521408608.56340355805::numeric); select sqrt(96627521408608.56340355806::numeric); select sqrt(515549506212297735.073688290367::numeric); select sqrt(515549506212297735.073688290368::numeric); select sqrt(8015491789940783531003294973900306::numeric); select sqrt(8015491789940783531003294973900307::numeric); -- -- Test code path for raising to integer powers -- select 10.0 ^ -2147483648 as rounds_to_zero; select 10.0 ^ -2147483647 as rounds_to_zero; select 10.0 ^ 2147483647 as overflows; select 117743296169.0 ^ 1000000000 as overflows; -- cases that used to return inaccurate results select 3.789 ^ 21; select 3.789 ^ 35; select 1.2 ^ 345; select 0.12 ^ (-20); select 1.000000000123 ^ (-2147483648); -- cases that used to error out select 0.12 ^ (-25); select 0.5678 ^ (-85); -- -- Tests for raising to non-integer powers -- -- special cases select 0.0 ^ 0.0; select (-12.34) ^ 0.0; select 12.34 ^ 0.0; select 0.0 ^ 12.34; -- NaNs select 'NaN'::numeric ^ 'NaN'::numeric; select 'NaN'::numeric ^ 0; select 'NaN'::numeric ^ 1; select 0 ^ 'NaN'::numeric; select 1 ^ 'NaN'::numeric; -- invalid inputs select 0.0 ^ (-12.34); select (-12.34) ^ 1.2; -- cases that used to generate inaccurate results select 32.1 ^ 9.8; select 32.1 ^ (-9.8); select 12.3 ^ 45.6; select 12.3 ^ (-45.6); -- big test select 1.234 ^ 5678; -- -- Tests for EXP() -- -- special cases select exp(0.0); select exp(1.0); select exp(1.0::numeric(71,70)); -- cases that used to generate inaccurate results select exp(32.999); select exp(-32.999); select exp(123.456); select exp(-123.456); -- big test select exp(1234.5678); -- -- Tests for generate_series -- select * from generate_series(0.0::numeric, 4.0::numeric); select * from generate_series(0.1::numeric, 4.0::numeric, 1.3::numeric); select * from generate_series(4.0::numeric, -1.5::numeric, -2.2::numeric); -- Trigger errors select * from generate_series(-100::numeric, 100::numeric, 0::numeric); select * from generate_series(-100::numeric, 100::numeric, 'nan'::numeric); select * from generate_series('nan'::numeric, 100::numeric, 10::numeric); select * from generate_series(0::numeric, 'nan'::numeric, 10::numeric); -- Checks maximum, output is truncated select (i / (10::numeric ^ 131071))::numeric(1,0) from generate_series(6 * (10::numeric ^ 131071), 9 * (10::numeric ^ 131071), 10::numeric ^ 131071) as a(i); -- Check usage with variables select * from generate_series(1::numeric, 3::numeric) i, generate_series(i,3) j; select * from generate_series(1::numeric, 3::numeric) i, generate_series(1,i) j; select * from generate_series(1::numeric, 3::numeric) i, generate_series(1,5,i) j; -- -- Tests for LN() -- -- Invalid inputs select ln(-12.34); select ln(0.0); -- Some random tests select ln(1.2345678e-28); select ln(0.0456789); select ln(0.349873948359354029493948309745709580730482050975); select ln(0.99949452); select ln(1.00049687395); select ln(1234.567890123456789); select ln(5.80397490724e5); select ln(9.342536355e34); -- -- Tests for LOG() (base 10) -- -- invalid inputs select log(-12.34); select log(0.0); -- some random tests select log(1.234567e-89); select log(3.4634998359873254962349856073435545); select log(9.999999999999999999); select log(10.00000000000000000); select log(10.00000000000000001); select log(590489.45235237); -- -- Tests for LOG() (arbitrary base) -- -- invalid inputs select log(-12.34, 56.78); select log(-12.34, -56.78); select log(12.34, -56.78); select log(0.0, 12.34); select log(12.34, 0.0); select log(1.0, 12.34); -- some random tests select log(1.23e-89, 6.4689e45); select log(0.99923, 4.58934e34); select log(1.000016, 8.452010e18); select log(3.1954752e47, 9.4792021e-73); -- -- Tests for scale() -- select scale(numeric 'NaN'); select scale(NULL::numeric); select scale(1.12); select scale(0); select scale(0.00); select scale(1.12345); select scale(110123.12475871856128); select scale(-1123.12471856128); select scale(-13.000000000000000); -- -- Tests for min_scale() -- select min_scale(numeric 'NaN') is NULL; -- should be true select min_scale(0); -- no digits select min_scale(0.00); -- no digits again select min_scale(1.0); -- no scale select min_scale(1.1); -- scale 1 select min_scale(1.12); -- scale 2 select min_scale(1.123); -- scale 3 select min_scale(1.1234); -- scale 4, filled digit select min_scale(1.12345); -- scale 5, 2 NDIGITS select min_scale(1.1000); -- 1 pos in NDIGITS select min_scale(1e100); -- very big number -- -- Tests for trim_scale() -- select trim_scale(numeric 'NaN'); select trim_scale(1.120); select trim_scale(0); select trim_scale(0.00); select trim_scale(1.1234500); select trim_scale(110123.12475871856128000); select trim_scale(-1123.124718561280000000); select trim_scale(-13.00000000000000000000); select trim_scale(1e100); -- -- Tests for SUM() -- -- cases that need carry propagation SELECT SUM(9999::numeric) FROM generate_series(1, 100000); SELECT SUM((-9999)::numeric) FROM generate_series(1, 100000); -- -- Tests for GCD() -- SELECT a, b, gcd(a, b), gcd(a, -b), gcd(-b, a), gcd(-b, -a) FROM (VALUES (0::numeric, 0::numeric), (0::numeric, numeric 'NaN'), (0::numeric, 46375::numeric), (433125::numeric, 46375::numeric), (43312.5::numeric, 4637.5::numeric), (4331.250::numeric, 463.75000::numeric)) AS v(a, b); -- -- Tests for LCM() -- SELECT a,b, lcm(a, b), lcm(a, -b), lcm(-b, a), lcm(-b, -a) FROM (VALUES (0::numeric, 0::numeric), (0::numeric, numeric 'NaN'), (0::numeric, 13272::numeric), (13272::numeric, 13272::numeric), (423282::numeric, 13272::numeric), (42328.2::numeric, 1327.2::numeric), (4232.820::numeric, 132.72000::numeric)) AS v(a, b); SELECT lcm(9999 * (10::numeric)^131068 + (10::numeric^131068 - 1), 2); -- overflow libpg_query-13-2.1.0/test/sql/postgres_regress/numeric_big.sql000066400000000000000000011233711413137616400244550ustar00rootroot00000000000000-- ****************************** -- * Test suite for the Postgres NUMERIC data type -- ****************************** -- Must drop tables created by short numeric test. DROP TABLE num_data; DROP TABLE num_exp_add; DROP TABLE num_exp_sub; DROP TABLE num_exp_div; DROP TABLE num_exp_mul; DROP TABLE num_exp_sqrt; DROP TABLE num_exp_ln; DROP TABLE num_exp_log10; DROP TABLE num_exp_power_10_ln; DROP TABLE num_result; CREATE TABLE num_data (id int4, val numeric(1000,800)); CREATE TABLE num_exp_add (id1 int4, id2 int4, expected numeric(1000,800)); CREATE TABLE num_exp_sub (id1 int4, id2 int4, expected numeric(1000,800)); CREATE TABLE num_exp_div (id1 int4, id2 int4, expected numeric(1000,800)); CREATE TABLE num_exp_mul (id1 int4, id2 int4, expected numeric(1000,800)); CREATE TABLE num_exp_sqrt (id int4, expected numeric(1000,800)); CREATE TABLE num_exp_ln (id int4, expected numeric(1000,800)); CREATE TABLE num_exp_log10 (id int4, expected numeric(1000,800)); CREATE TABLE num_exp_power_10_ln (id int4, expected numeric(1000,800)); CREATE TABLE num_result (id1 int4, id2 int4, result numeric(1000,800)); -- ****************************** -- * The following EXPECTED results are computed by bc(1) -- * with a scale of 1000 -- ****************************** BEGIN TRANSACTION; INSERT INTO num_exp_add VALUES (0,0,'0'); INSERT INTO num_exp_sub VALUES (0,0,'0'); INSERT INTO num_exp_mul VALUES (0,0,'0'); INSERT INTO num_exp_div VALUES (0,0,'NaN'); INSERT INTO num_exp_add VALUES (0,1,'85243.39540024977626076239847863600785982737155858270959890014613035727868293618673807776733416230953723818527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_sub VALUES (0,1,'-85243.39540024977626076239847863600785982737155858270959890014613035727868293618673807776733416230953723818527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_mul VALUES (0,1,'0'); INSERT INTO num_exp_div VALUES (0,1,'0'); INSERT INTO num_exp_add VALUES (0,2,'-994877526002806872754342148749241.04353023451866590387054959174736129501310680280823383331007646306243540953499740615246583399296334239109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_sub VALUES (0,2,'994877526002806872754342148749241.04353023451866590387054959174736129501310680280823383331007646306243540953499740615246583399296334239109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_mul VALUES (0,2,'0'); INSERT INTO num_exp_div VALUES (0,2,'0'); INSERT INTO num_exp_add VALUES (0,3,'-60302029489319384367663884408085757480.2322712404088283093870869198708849258097125725036189625900174440196153781995220721511009855207486224837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (0,3,'60302029489319384367663884408085757480.2322712404088283093870869198708849258097125725036189625900174440196153781995220721511009855207486224837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (0,3,'0'); INSERT INTO num_exp_div VALUES (0,3,'0'); INSERT INTO num_exp_add VALUES (0,4,'5329378275943663322215245.24931765987630429629836382184742348353920297283690739124220773955591340709935970062776650204659187764581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (0,4,'-5329378275943663322215245.24931765987630429629836382184742348353920297283690739124220773955591340709935970062776650204659187764581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (0,4,'0'); INSERT INTO num_exp_div VALUES (0,4,'0'); INSERT INTO num_exp_add VALUES (0,5,'-652755630.43456071828048833552593835051449845484289562110789582081210403487973096161149072377955192388469356112505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (0,5,'652755630.43456071828048833552593835051449845484289562110789582081210403487973096161149072377955192388469356112505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_mul VALUES (0,5,'0'); INSERT INTO num_exp_div VALUES (0,5,'0'); INSERT INTO num_exp_add VALUES (0,6,'.0469370721950711508944806393077762204079964905145503836835397203739563036579760026190241480514409364'); INSERT INTO num_exp_sub VALUES (0,6,'-.0469370721950711508944806393077762204079964905145503836835397203739563036579760026190241480514409364'); INSERT INTO num_exp_mul VALUES (0,6,'0'); INSERT INTO num_exp_div VALUES (0,6,'0'); INSERT INTO num_exp_add VALUES (0,7,'-818934540071845742'); INSERT INTO num_exp_sub VALUES (0,7,'818934540071845742'); INSERT INTO num_exp_mul VALUES (0,7,'0'); INSERT INTO num_exp_div VALUES (0,7,'0'); INSERT INTO num_exp_add VALUES (0,8,'8496986223.64063724353165506167988570717591150432282238795309964705925283285060558038824227595710139960766584401003765241409149793494330798800'); INSERT INTO num_exp_sub VALUES (0,8,'-8496986223.64063724353165506167988570717591150432282238795309964705925283285060558038824227595710139960766584401003765241409149793494330798800'); INSERT INTO num_exp_mul VALUES (0,8,'0'); INSERT INTO num_exp_div VALUES (0,8,'0'); INSERT INTO num_exp_add VALUES (0,9,'54863480.34685027005508022756223282084742813020271603840941647350440860843570182437301045468670059279379903480024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_sub VALUES (0,9,'-54863480.34685027005508022756223282084742813020271603840941647350440860843570182437301045468670059279379903480024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_mul VALUES (0,9,'0'); INSERT INTO num_exp_div VALUES (0,9,'0'); INSERT INTO num_exp_add VALUES (1,0,'85243.39540024977626076239847863600785982737155858270959890014613035727868293618673807776733416230953723818527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_sub VALUES (1,0,'85243.39540024977626076239847863600785982737155858270959890014613035727868293618673807776733416230953723818527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_mul VALUES (1,0,'0'); INSERT INTO num_exp_div VALUES (1,0,'NaN'); INSERT INTO num_exp_add VALUES (1,1,'170486.79080049955252152479695727201571965474311716541919780029226071455736587237347615553466832461907447637054203186991790701615551214692555785671028648640897898741246882118067609728317430043806625387779037980513762118868084887015059202190301421555269486602797852927777567694581746398790609996101506730430853942556475840126871131898407356048450541232591147357021858041662012293323494543567675306406079659294204054863522259037763051870433216859794083051717080761509518250300466106939998045710070'); INSERT INTO num_exp_sub VALUES (1,1,'0'); INSERT INTO num_exp_mul VALUES (1,1,'7266436459.363324713115467666113895787027372854351303425444968800459979742082292257107107767894843498525848597439323325297125474674300428669958003640228730876886174255457103020291514229439701871032118057857763809224712818579091741996335014138185389554630910658876423205103697147288306070059640369158894028731728589073730895396494400175420670713113234800826523252075036892246807434088405522834549449664122407363485486902219500109237667016524913027290777216477989904700729228025571098410870506256758678625928245828210775042611512394316804583459576285681159178280400209217948833631961377519855502763611693070238579591463373484424582723121059964236704135695706864890193388054537703767833595331866551990460050750959493829603581882430597105627056085260296454181999581594565113210481151487049158699087454047624433576922179904629'); INSERT INTO num_exp_div VALUES (1,1,'1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); INSERT INTO num_exp_add VALUES (1,2,'-994877526002806872754342148663997.64812998474240514147207095573950146764154822009863493316394610578375247334825932838513167168342610420582834742950389452212867974756590355021495169819086060202117180229196935525386766373096687306110481009743118940565957556492470398904849289222365256698601073536111216152709126800604695001949246634784573028721762079936564434050796321975774729383704426321489070979168993853338252728216162346796960170352897972568238870481118474064783391570102958474141459619245240874849766946530000977144965'); INSERT INTO num_exp_sub VALUES (1,2,'994877526002806872754342148834484.43893048429492666626902822775522112238466538551783273345620682034111834572173548391979999630250058057637037929942180153828419189449146140692523818459983958943364062347264545253704196416903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_mul VALUES (1,2,'-84806738323879544552397401815149740513.8505875535743013876823142649666132764556588225959336097903898464616542203793600590311980154402068027051522932586050753865288419084437796768749509032177577451738712965496693249429231838833655025794915864261585848007162358912070811805298210095333433397862313304655108809804359760907473898420016370058274978588765092161529583480924554820756527238472641797198545539410039895140087686344382628317530286295498797849942258314364503000942821309916954725689781458590617068629906894951122301020797266469357701283289275708774593896770378558232444454118891917258610753077932026885574920166837998049508644891327208474213193224700658584824407382455480657734911543930195324144216374573825'); INSERT INTO num_exp_div VALUES (1,2,'-.000000000000000000000000000085682300757901809257711279577127388124986344391495296640171942990079130291883279872719240502687189411421655284515420074848478500192127657883342858267913417679786356766341637336955924836847768457039175660279784295612167899455618405343686908907695358239088351870495830739180518509859269437015797489301844593920484927630172344269378248455657186218762679357609204333669024237648538465053048724383898528808961206696787294681884412485427843796696788390072124570957047672341581447744981862017791206857428430183366004980966398716823512288330174863890117558744630102020144500158878244146399686532935435591262767487823942606452349972401012308378888947381934278131785907155692007064636085000405504866631011593239041758448995933095907216863744502344014999804306234830774259496097549717476344048'); INSERT INTO num_exp_add VALUES (1,3,'-60302029489319384367663884408085672236.83687099063256754698860828386302509843815398979402006244388708674093244201278399438376682321121138429850885935540924586964982855913223221441591310211730902799041126800414795030815514254713522692405212716783388698431088814919226444677188004928663343696636297536500970117716818423689175692808344185016908913828066250587407384563498516598672584120143890364303296142744031320345312431817858545326010704685255237541162931904446804064783391570102958474141459619245240874849766946530000977144965'); INSERT INTO num_exp_sub VALUES (1,3,'60302029489319384367663884408085842723.62767149018508907178556555587874475318127115521321786273614780129829831438626014991843514783028586066905089122532715288580534070605779007112619958852628801540288008918482404759132944298520148080184250697297150817299173701934285646867489426483932830299434150464278537812298564822479785688909850915447762856384542090714278516461905872647123125352735037721325154184406043613668806975385533851732090363979459292404685190942209855935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_mul VALUES (1,3,'-5140349743195574373979577554212527512597024.162480344833040409158673429491690439298506850052285119390701002577176786023622062742050099464897084793357329597395417632908812044304066963549928478520702505283307379218587635434673128958824348493758429380623577527186462464399974242800361134191519694694139153279582776168995426125926314513926640766117733774558011741611075336271613675760116784769700605008122422944290652448956922432960815546502965310676913079866511016221573557684245901002643719965652152439520727383305120298495304784052489867651462175349450610643411043707261107569691076730261762793560088893354750383257372118118753366377402045596735023445172252225346164608897913115394905485106225627590643805003075069931177395059698550161546962768768895596088478488887530518018212441345360153523733317120037436403475909117998647781920105313938836144009539683'); INSERT INTO num_exp_div VALUES (1,3,'-.000000000000000000000000000000001413607404628860353773457807436398753936801768769045711604884548436548520368932184112069166807060840219636509423284498981041814526856251281381511288768719259120481595036745286884246627534964287523188738499223075292690431699417313258943941279343383979626641848305343592679057491670166887054819766294147341982669243114259272404203080347707713358471397866402657818267495050115642987782080912962056565478445923456884713049272637646637760989004917643369240372476411912794578381690666695711891846833983534126217706309741885844723208036219144146342212915129560758201609824034610223907791643110990898577049488934294259106725414517181607988173722432655731491050637087261030314548853334338835938120502930424813699221083197863303458179445322810087784892821862085562891180364134284641396475'); INSERT INTO num_exp_add VALUES (1,4,'5329378275943663322300488.64471790965256505869684245785528331091076155554650629138833809683459634328609777839510066435612911583108717191216693735823717997111970662575497378762952496582183738308720094529950793570383580785385569873278068217936841324404119828637880370718028782103860007754579779716996004352284614661690063919125301052941328989181561787543541920734755989452320799185700078241880935083616978140555713297241612718277766918005268951861880490889884082730841740604517529391011862694381726143520658746305661338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (1,4,'-5329378275943663322130001.85391741010004353389988518583956365616764439012730849109607738227723047091262162286043233973705463946054514004224903034208166782419414876904468730122054597840936856190652484801633363526576955397606531892764306099068756437389060626447578949162759295501062154826802212022414257953494004665588557188694447110384853149054690655645134564686305448219729651828678220200218922790293483596988037990835533058983562863141746692824117439019450865871047657552800448629502344444081260036580660700595591338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (1,4,'454294299613767152878025320780.534199313974295807138790763501115780294529340799108297697573066187975311338382917022391830256203305238757334106943821060545424417350991354829668286194840925251162479496893943917530660694097932059166013476064988623431110002057735318529554555260199417935495388243829261809007709919225000608711536928171687251088217591210419208480251102484043683131687013687838713055660405381318396419588727500715930145098362997142075433472039319292466570912777345841400769387321465602989947078951135489852486382469990409873227894248208197179481868230244584527040573428134962626267135732247029762468417273891700661832893497067151409134724061246612631376075173287264787886064622106855886785805818642123776489793586531950438285720668411465570116161790343538663297713926678759640594912243360541590368666922379919514826022141331900181'); INSERT INTO num_exp_div VALUES (1,4,'.000000000000000000015994998100440878014888861029956505927201309704413242103407885948184870841766875212766910686894450511886242468216220470061916924303252919423028993720180330014505454865704155281502763018913215741264982350384245753394656021401865680441649920273268554396350483440173848850052788410943178207336328451359951614056237100465802151856198860908371340425459435127133071447273887829397881221098443685586506647314622864702873235212396755866459409263439958011711379929751157260020133239574261188528305921244365838405372320186907437842180388704854605498842516581811515413843298370501194935797268161171428747542997504369133579105180311662221854071962295818264211400101689450830279979372422749150894553349570063000769685274875561760334738424509532610467832951796852051505383374693614022043010735004494395190'); INSERT INTO num_exp_add VALUES (1,5,'-652670387.03916046850422757312745971450663862747133703839829692066597367760104802542475264601221776157515632293978442027199108085723617181683235487266149426304575903892721468296143475297345699313102262188759506518376019936160961709578829069446312051432780603656651983414612264636232727512091101057374054475214114364113300402823059519499217878746766275164739724770556122895799337810694888119810524986616938847385753562624139431982468828696587199570410008890188532132652095915565323400735066310142303225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (1,5,'652840873.82996096805674909792441698652235828221445420381749472095823439215841389779822880154688608619423079931032645214190898787339168396375791272937178074945473802633968350414211085025663129356908887576538544498889782055029046596593888271636613472988050090259449836342389832330814473910881711053475561205644968306669776242949930651397625234795216816397330872127577980937461350104018382663378200293023018506679957617487661691020231880567020416430204091941905612894161614165865789507675064355852373225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_mul VALUES (1,5,'-55643106304872.575994253221940844841058071061962511162776681458310912066379595519265546225338405882027547140476045378015935579066580347282075024392379464189067155567624835346798806677988850250198082355055954078446421075165109896091047534711081616362392995575466807084807876544560268050611445006601394735810211678919646667455478469014906335433468365011768049600750224822391684377238242162320161552720449713229523135506671063115436813348612986916614320012995541575293478341408982118538094438068036422562665160411591652618670802973618768526197813319204816293073794413317669922144705633308090832805914096147659820167569140291210526520361556881576175809360614782817717579318298657744021133210954279487777567785280633309576696708168342539425395482429923273623865667723482418178781573723597156804085501875735112311466228778929147929'); INSERT INTO num_exp_div VALUES (1,5,'-.000130590057635351941758745900947472461593749814351229292370661147301124533787181489468804246182606762727711479707901680546780430454163647774077629503207962424213266902732555945190365467801995495570282501722505521485829885605904543846887348545254658726343578684749830307120625129857380290225370772763609458975555029415082569247186899112975387051141777417911244576134390940441209829852154391377911942082738699481875795620569383196133124499983396562167632007454221121465745085962247988140942672429187053671899537331280701003778040796615094903602095098880716919238394057384949891444700347825726273725378453454782330181608182747900774711384845635284701538541452235224216112380245660177463043471814071809869894647262285332580556739424040615194137651616350340752691170045698234853734471923738591898290468792787543896'); INSERT INTO num_exp_add VALUES (1,6,'85243.44233732197133191329295927531563604777955507322414928382967007765263923984471408038635831036097817458527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_sub VALUES (1,6,'85243.34846317758118961150399799670008360696356209219504851646259063690472663252876207514831001425809630178527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_mul VALUES (1,6,'4001.075404054519813215296429095020391062109905613738157927030437221793757373268325953178030040276107574363822832168160758728653712686313134828282109532831190239521843808940611025488601517574653932032236616573457735900045655665690517797280666732780030171712864961531623060353548802466577910774711998056232872212688464691036260746751992072745518373073825852119460094113694393273456369345499434994672730920070410547163082189385645712866100999708173472360864669110044660667614583576570496399103026286828660558854973376227247132815728164629722965145778698957093136175449225024685874279280018547740'); INSERT INTO num_exp_div VALUES (1,6,'1816120.848909727306817960620941575637231136442992819290405125420545200026620306446043740992108329883383706060582482495616151605111275635501481354526017831484915013545483361715432312183101964395505340188909970344423950565285639911521082834494088840596716495422427543520536844348040681236845850482165744696068209384509064196671206362539077218412355776790921130042376467606683622970728503408501481791356294886150690067651815776445750760428874351556866105285911902433352126498951242195408782804314174041618879250740246352525074791310920062276490422853700893340860452528740673590486626464460321410814395342850270921486724297414692313177440726749004398703147904603937755702369682956482832074779404350351752662820773690162594400557957241676636030332988289683112176900913522668426137377289536793838959751008646843014106876005'); INSERT INTO num_exp_add VALUES (1,7,'-818934540071760498.60459975022373923760152136399214017262844141729040109985386964272131706381326192223266583769046276181472898406504104649192224392653722107164485675679551050629376558940966195135841284978096687306110481009743118940565957556492470398904849289222365256698601073536111216152709126800604695001949246634784573028721762079936564434050796321975774729383704426321489070979168993853338252728216162346796960170352897972568238870481118474064783391570102958474141459619245240874849766946530000977144965'); INSERT INTO num_exp_sub VALUES (1,7,'818934540071930985.39540024977626076239847863600785982737155858270959890014613035727868293618673807776733416230953723818527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_mul VALUES (1,7,'-69808760806266041400340.70700818693892852138813934414383886494691670042143650609934777814995087699409404201920249076407981012095999320858479644760715204999741683528746097757549835956359129287002171391961763797857794730120426599135099619822532290339000466211195776337667123320942107370731349851576864242697412616810236323676004067839744992733887503405311090677026008324895177587064547630828026123718296429295638934384446325302964896473296829265805737112709269803814942537657996725913938408781715328945194948010970'); INSERT INTO num_exp_div VALUES (1,7,'-.000000000000104090609479936344103210175655521317012597986331111866307697262848964666360492361638117930801818899121383806224630563676018240181412174154250663423230239912527388431901852952893943812666142740182651125508583527237123596541789628675379232473721293630968882045044077795828674268595016625198802475186587918019739056755398151182369187670251750080227679555002307777300392769289647975058449905106584837938556260801229545589323224752038795423164214112897202147313792076165011373139219134850954217300915326944185918762838321705825423789073869940092569940135329697980600082436317664012683589681419530904283106912171330819469065141821685734295058255484933744156717782754922568796985634397878149984177882018261742637463462647452140104146195353696596211873925359508622779658904411330975862442989437933211964821'); INSERT INTO num_exp_add VALUES (1,8,'8497071467.03603749330791582407836434318377133169438097066269854720538319012928851657498035372443556191720308219530866834905045144302106406146277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_sub VALUES (1,8,'-8496900980.24523699375539429928140707116805167695126380524350074691312247557192264420150419818976723729812860582476663647913254442686555191453722107164485675679551050629376558940966195135841284978096687306110481009743118940565957556492470398904849289222365256698601073536111216152709126800604695001949246634784573028721762079936564434050796321975774729383704426321489070979168993853338252728216162346796960170352897972568238870481118474064783391570102958474141459619245240874849766946530000977144965'); INSERT INTO num_exp_mul VALUES (1,8,'724311956372274.0135050255361637906710330203036651743488213007179039756514944640108625580172737414192938789413338554327986697518463087452612658955180411327002900979574347739956600177846996063741787205122007268468674386396156638261992679442768654367111433834151087792255469957061758837789341439211010331332174981459471333376067541234901538285101103690622656631026001337239036711179989456674399137008584021283568040818388709554256523118702728176420022080138548890713013682480239784198421500241995499841675772793497485550923152267616622892846304530712344886979674416990935007952941652591352603797627920865960622077762568060903908151958000'); INSERT INTO num_exp_div VALUES (1,8,'.000010032191786198542900505683562217892317481076466949299850809276743457759270150820565375820388277409258249926696079166209409657808406245382887790534127749833677458375931047385994887406206232330491317602830654688957983804698568410728278089250379255157030886262396950539100566975000094268415749476738358914633948867977798590927055566888255636132486899287919515638902721543629183577900872078173883974905921239149419877613723476347774771230668479296621531969573505480695490386225866950545725121902534610730154727385072738079149623798073810167706094070842646222833137345669922898403368997676634709281456818189049718956207208697021706186341405575300648248555331280690778367620868775005181264547924615247991795542738868003191757946979714250339430363902549866892041102771965653407197094250270379367437342632741280710'); INSERT INTO num_exp_add VALUES (1,9,'54948723.74225051983134098996071145685528795757427462111901537365053896571438476055974853245403475510333627298551845046116291696445177112567064282766115207407461565363967417615506303416694032848457927390574251904212425813072768882213388082765916956736282110801611726537663292922699021333445658549608928179155685881583228490235606377831724593358583903616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_sub VALUES (1,9,'-54778236.95145002027881946516375418483956830283115745569981757335827825115701888818627237691936643048426179661497641859124500994829625897874508497095086558766563666622720535497438693688376602804651302002795213923698663694204683995198328880575615535181012624198813873609885725228117274934655048553507421448724831939026752650108735245933317237310133362383704426321489070979168993853338252728216162346796960170352897972568238870481118474064783391570102958474141459619245240874849766946530000977144965'); INSERT INTO num_exp_mul VALUES (1,9,'4676749348240.390309875431213992853550297086049749814750492488995108783145961719774217441193547534210468967573344456866203963659951312519988497979489304488948342258375915152429008993288817366720647491166024151209542534474867042837694499222928509320280684557676243780452100132238968233413333851595648146954975713386711764268506890884764704949969602122157394714663532141060559896359465918874990769222345665160127552795532197771168442486088776803398878354288847069602460071745966589164282641033852314335279121191855487126430176047553895892632834940595958394834437871886013513058514896870683979585091413977173250824451205330441299000850618134248917380244749589254309567551846327349592529960432446947239714236828401206843011440433362544797025114476612133622499094287321570559088587999417440664282418005102546343020409520421747216'); INSERT INTO num_exp_div VALUES (1,9,'.001553736563217204408368240901181555234014339476186598647410198373122572205209277343865051610898136462487966496673511261433286284257044548634547569923035899634327495195510767312478861719221916387940027268721306540663743713345337497285507595251328382906111997524508729275471287648008479480805967901972481289402930660848950039779707354469389216931774094174326513465502460315792834278614886136688161679443873815113442220055827192996984074129528034845339130162104547166079591654852164993577408422015514100323825529286511720963047269483211930770803479398243069649400360625259869765138545866815758888670363356947311319523139395191102286838888146829667276592755438606664644975648828848738708349790766370694194763606850690923803984129157519048493985198591771429264967247245289970213262206709011468289046840862597010969'); INSERT INTO num_exp_add VALUES (2,0,'-994877526002806872754342148749241.04353023451866590387054959174736129501310680280823383331007646306243540953499740615246583399296334239109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_sub VALUES (2,0,'-994877526002806872754342148749241.04353023451866590387054959174736129501310680280823383331007646306243540953499740615246583399296334239109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_mul VALUES (2,0,'0'); INSERT INTO num_exp_div VALUES (2,0,'NaN'); INSERT INTO num_exp_add VALUES (2,1,'-994877526002806872754342148663997.64812998474240514147207095573950146764154822009863493316394610578375247334825932838513167168342610420582834742950389452212867974756590355021495169819086060202117180229196935525386766373096687306110481009743118940565957556492470398904849289222365256698601073536111216152709126800604695001949246634784573028721762079936564434050796321975774729383704426321489070979168993853338252728216162346796960170352897972568238870481118474064783391570102958474141459619245240874849766946530000977144965'); INSERT INTO num_exp_sub VALUES (2,1,'-994877526002806872754342148834484.43893048429492666626902822775522112238466538551783273345620682034111834572173548391979999630250058057637037929942180153828419189449146140692523818459983958943364062347264545253704196416903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_mul VALUES (2,1,'-84806738323879544552397401815149740513.8505875535743013876823142649666132764556588225959336097903898464616542203793600590311980154402068027051522932586050753865288419084437796768749509032177577451738712965496693249429231838833655025794915864261585848007162358912070811805298210095333433397862313304655108809804359760907473898420016370058274978588765092161529583480924554820756527238472641797198545539410039895140087686344382628317530286295498797849942258314364503000942821309916954725689781458590617068629906894951122301020797266469357701283289275708774593896770378558232444454118891917258610753077932026885574920166837998049508644891327208474213193224700658584824407382455480657734911543930195324144216374573825'); INSERT INTO num_exp_div VALUES (2,1,'-11671021799770914903865020509.301561107153561058074179843542446420696517132461554451075945807420674211966679216615407057626541711186781735967334896541890595771915856783008831770988426637435694856170266346306640678577376310547806764332837625966429200996250687908930748245035578756314083608655163891041399241377675534416837659335561005203219889972336214863417948542956735403991871098341470996860469878038840964359144637726669728240650066795729910649523281308716277906908340457162235831526838308777581569974551673352306004330423694524256415657620427590352277556907586751621496248973165690360552007637570957980230685679819820147036159174977086193494572117089582758015847544798464543446227632367713941117001423437766840744488426025388612316819120660814681298624293065972395923651314350558006567251033289878238407790871784676348196394482477767774'); INSERT INTO num_exp_add VALUES (2,2,'-1989755052005613745508684297498482.08706046903733180774109918349472259002621360561646766662015292612487081906999481230493166798592668478219872672892569606041287164205736495714018988279070019145481242576461480779090962790'); INSERT INTO num_exp_sub VALUES (2,2,'0'); INSERT INTO num_exp_mul VALUES (2,2,'989781291745465665243281323944996915810556285052564220274237162526.1617859904902612197894543199389468971679632139059029459520163585971122643624316475417489000981872666677202334180945949860058384424993911721081868337499377890298636260338063268639283065887210924895929155083478140340889209440025415565915964293989840603863813531303253038823629712989041722072693449251635519992922148998556112923060331794396659338057474019846675262291146025'); INSERT INTO num_exp_div VALUES (2,2,'1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); INSERT INTO num_exp_add VALUES (2,3,'-60303024366845387174536638750234506721.2758014749274942132576365116182462208228193753118527959000939070820507877345194783035668195137119648748792386548310474079340204536236936213411512867171486174240518914767934028451971067161683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (2,3,'60301034611793381560791130065937008239.1887410058901624055165373281235236307966057696953851292799409809571799686645246659986351515277852800926805119259053513475211488115663286642009614039264484259692394657121785950542874788161683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (2,3,'59993133911282372667149627097418449223835595194300848703012380022306762.154418449236691515146061305380465061074531890529497774836941002526095632166401249277270674802626154774328055399254982998368191676630276960361274433270795772477146870294928855773172789856196219950097157391050424577381777627004101100872747943673762087675405200265837631665464736842180920496158545887039337399558993437594084473932658319914390365451919627956823980800124880375978662052111797881386060353490432427832058851094210488804887183034572364751639107535041308434932952695103493677600969712634416241541391613699710826602011076372592299807609658979777598672141389319098817824624950794758296679318319299142035'); INSERT INTO num_exp_div VALUES (2,3,'.000016498242835741013709859217005931279826178662180173096568520102488480129191427472581644597420895622947234184547373944996197105916093347103336318249582032230903680989710242610024298937774441533502282949127537125997753002819456724709929935850697744632904111143787011103837624936502324835260843148595669524694347566421203164808527739207590986975750648112133699756328511947175496694080071202064255118777680958612315513441989609682655431197367166056616661045712867189326408877133865572680407329449150282415810958772293869902662884761202424695742898573841869524376684740249281181605067345203479719345061595919652192297531638467223956758315591610733251562492794891852151639643060692698365496208796638230566761231611376199140556503620471090364900792180618741355091923808605890415081571900697282725022629812561702118'); INSERT INTO num_exp_add VALUES (2,4,'-994877520673428596810678826533995.79421257464236160757218576989993781147390382997132644206786872350652200243563770552469933194637146474528320738725486418004701192337175478117026439697031462361180324038544450723753402846519731908503949116978812841497201119103409772457270340059605961197538918709309004130294868847110690336360689446090125918336908930881873778405661757289469281163974774492810850778950071063044769131228124355961427111369335109426492177657001035045332525699055300921341010989742896430768506909949340276549373661076950964959025967328861569387160956730002517417236732463510495205173523163676450203614971844583064927040066684531931069310935516821795449174271052747559395296525950219449541557191520903507653089998307641491381797101485104546410643'); INSERT INTO num_exp_sub VALUES (2,4,'-994877531332185148698005470964486.29284789439497020016891341359478477855230977564514122455228420261834881663435710678023233603955522003691551934167083188036585971868561017596992548582038556784300918537917030055337559943480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (2,4,'-5302078674303935968062773235453828254014583744527466365136.236414807326868572353809920518232561005161225922028750078608989965741402418802255050636954800114792425419735155504035469350521800895164087027043476055514245942961100610551646034472084954313670284875310691807937254054948742125729353864014122131419164449567115006621212424805182687707372956385102095255735458593389920872596796806885847543910224476727171570873698525606016990229936284811067826588349092841322512643043008589065847223683467371925773023109720951609815041012521485326120380123169545818055967455575736140138663815073081494226676896278654189873597341203197903408668523514375373841493189836809506003729379742035629498519683885268256481104619815130659628225053833297766479068686119691010593208135616363994230674606991733148502293102108193522604968743948323130517040609601859735899914987426089053869350663'); INSERT INTO num_exp_div VALUES (2,4,'-186677971.517539861245390308778107722315862721823627804195528485535806132067679059453022306691281662574091826898288146790399178357754908901382135796783067563944022498807930452234032896817601590728156392188660701355670595952594500812333935362955625137944589981298793332621503315902294100258945995827423279442031218510259915311555745581797315793010762585658196457363672908315687720174516274528662385172326028870945153551774300419158584379602045442200523311437013776079979639415633358878239012925000523542907592866797199229858272764668664323316251874027468128770456766875866492004650352654523634716923150212263912760225390093339729495231675627059805624175587380165509763048913150826017167286786277908970769297060278191518730887417202276531151575412404467497036737825989088867451153485938272367300939127313445244028528055624'); INSERT INTO num_exp_add VALUES (2,5,'-994877526002806872754342801504871.47809095279915423939648794226185974985600242391612965412218049794216637114648812993201775787765690351615479957141288239552036371132381627958673244764559862836085530643408020551049895730005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (2,5,'-994877526002806872754341495993610.60896951623817756834461124123286284017021118170033801249797242818270444792350668237291391010826978126604392715751281366489250793073354867755345743514510156309395711933053460228041067059994425117350974491367099004404995846913641329458537237789584653041949090121498951516476399288513593944575192159570458664608461677113504914551578443229008454218964701550932948083369656042643364608405637360180021322967144409944099438498649645368196191999692949583952927486593144959284443545794934667002661774373364219852712996869245745722896071593910890197478196462961042627387162830776094709087748993678069776845437889735782063'); INSERT INTO num_exp_mul VALUES (2,5,'649411906691138274293985410502516861224852.2323455192714410716272307781034189160865613770320102043319541634113746032638191509585045862973333645830298922352816245477556264222094036953195419857712804755170632292914187367964994214922001758104594052499795564860466055599417895782179851297585155129541589802249540436678824225950907268084876110445460948679383611117263673106597132046331719468816839434908155684738864149955129235751738204036443603521478609787295079710078973503970964790273461142497259987849074597264522099648376356902360358310245001183020992360260836105404118742418040965190000718736837422434593694808973939805954329718232693154128543253581495885789333274488461716809104532693754070810202831113003978085636579574171344721710232931261731022478029314435363413498991740750878099825781577297965642009156858479681236085226911858782115'); INSERT INTO num_exp_div VALUES (2,5,'1524119409495532727030986.638577103454261465522025182901477334004986357902177024959076085490119358611626688213654669281670407680244740174673394111775678935383154847014211641601227316639834450258566053805263858706381900273201146454036688771735398324537667996974210741719621449948660517037619359095556637235980122706739013220201060795557114248610410815988952748489854367480813823114296393315170621979351958306734282429929421779129764262568942699813166237466796852578307944635545174715298176546980314973426586923195248536376403319094417073026382024413817222396402299695717290716014320518777088811749776114378145110676170242861393274018655137797545194817703831240390631723050378397773341835222892981773205967439339460305257986693600088957772328044922955990976285151896366292514128607363007421484320868718566256882080399264346243272770200676'); INSERT INTO num_exp_add VALUES (2,6,'-994877526002806872754342148749240.99659316232359475297606895243958507460511031229368344962653674268847910587702140353344168594152240599109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_sub VALUES (2,6,'-994877526002806872754342148749241.09046730671373705476503023105513751542110329332278421699361618343639171319297340877148998204440427879109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_mul VALUES (2,6,'-46696638263247522384986521136500.479312417066793299922708112595886608370451213741279484136907754744903470430131032928908162742687359367826808123516519335458861613010646992354378739165872253762686683966945711430182491860196341344982195078000259063231136011430995647812149294224699587849791008794261026932467933475782780'); INSERT INTO num_exp_div VALUES (2,6,'-21195986018643887410662481595901800.342199657994285865579781485758715114242459388977583220756870314514884887803267837816669111279417861218648323488364513921592045485003563036021370174294475403630933854767386355037781881144701319212711655881277140183173924089814927297045029394618083349813549439341772734606115369911736164723942330187830605893993276674913563980890459604886172701331890746621222114280438198802989678877404376001410627722336243835841751052795437979198996482216031399073597399901975686733315751292369326904428230195579137225651689857057115970784985439417129044974524632220457594191305254649113470116960582543784928547885740020507755033347968928034294570497118410435615856155184563329718831512839630769097935523279881940380220955993456451396417879773380305142918906742431812580562496634831735169817705720949712410595406012323294829461'); INSERT INTO num_exp_add VALUES (2,7,'-994877526002807691688882220594983.04353023451866590387054959174736129501310680280823383331007646306243540953499740615246583399296334239109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_sub VALUES (2,7,'-994877526002806053819802076903499.04353023451866590387054959174736129501310680280823383331007646306243540953499740615246583399296334239109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_mul VALUES (2,7,'814739569184924399102711674444306584731316176345067.39834031417849342571224916231092924046722938910652929295271097903377854123984307101079073134405782275535446337229706620713104545454319555885847481531722101704765783025789147453570970090'); INSERT INTO num_exp_div VALUES (2,7,'1214843772391778.127361407585140553741220126410637250571020684739034685508176000812180032686291124045768750332493129822580347351032145964983629059968936201592138368806173099130176852606440296388856520582890650384142745607345709716826703676313341953999327129144154152914234659001555055379537780751567782847296067128932113870102563522810980359433259696591977617184951677390423898232135100000764121508662830515405980450892222598485287609657612482190264517684867291774820716746063133066053446257163185646067618679478975882247893469409405379034723543061767846895135644429012095930584952053545016706315299076691015196261253199176743281648949731423486208098120903720124071047872917636988241710583721537777321338769039241700203546247947405745989053846970910400831817998342969657501678430211657755864160072525313889413731419647001970593'); INSERT INTO num_exp_add VALUES (2,8,'-994877526002806872754333651763017.40289299098701084219066388457144979069028441485513418625082363021182982914675513019536443438529749838106171095037135009526312783302868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_sub VALUES (2,8,'-994877526002806872754350645735464.68416747805032096555043529892327279933592919076133348036932929591304098992323968210956723360062918640113701577855434596514974380902868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_mul VALUES (2,8,'-8453460632655529853033389979024265783461224.3195241893307807116624750282852146303290708492834695194274289713076935297734670940696121761483641291930931061232942894577813178566088927221374036301485916497770984757492912292002695944367308880163698595015497307574177176409203214324418237020500352652934909632442547242092296504047310806151851207329042221920888326000'); INSERT INTO num_exp_div VALUES (2,8,'-117085929036205907700251.219065234073336548829793284434494573185718678644093751558890746941383215425734761534822966779511801033216479269605150574332107020180872343673157350081102818832254463561564431056604957702984438484261858890324442581609284935850435611342611117035589511568432559140282381526487115307554496353616929034919886387903446436924514812698404129456069856633480965357915969548215985452939172313964007318881987188665231550330515412104367728617802960792164260429920719961650164518261501571220901151359208484337831586551714193024143212288426326740373893030225940355268499071669300664200888186064836443459131985786957267268845966279576380786883200277187591448294590370986026461176853573555996139940001165172158855197070946665074838360933025833716166930231164328918316437195201546383664484983447934244744303265471044295601062898'); INSERT INTO num_exp_add VALUES (2,9,'-994877526002806872754342093885760.69667996446358567630831677089993316481039076439881735980566785462673358516198695146576524119916430759085192883825888457383242076882081857926408611052522393579396644731758241837010163568445385303315267086044455246361273561294141518329233754041352632499787199926225490924591851865949646448441825186059741089695009429827829188117479084665641367'); INSERT INTO num_exp_sub VALUES (2,9,'-994877526002806872754342203612721.39038050457374613143278241259478942521582284121765030681448507149813723390800786083916642678676237719134679789066681148658045087323654637787610377226547625566084597844703238942080799221554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_mul VALUES (2,9,'-54582443595378013373024060492546032003692.4875677735896411267274323339692558458420972958075073392126734000341372096298914875892612108329218081214550050039133117695428196702128258481789017059073444323729583900855712795086447886053552786449313809589992185978097430132940882612817775035217244553616977182049775786664446683332098226841743818600819221587510039430478859412452506872131851471967577741190323481953867845129745440745526578327709351120432530702446916035797432129052518980799424635406993848916727957825620638983706180841278402925286540375225365057191075559133035'); INSERT INTO num_exp_div VALUES (2,9,'-18133693300409132895168796.074616314168631402221003009151140409826855230810646429042722071403306917323628118792142878282108022292754325022530103525285999179488507720688317761243448898240836430183645778132937666952111134601563043980164547020295727057908447220163534134835130866457657964382363853570827467081988390359191484798677813656413640874450449802233520570178139244957518604566383671867773821069602665918688868868894979351219381089954104823746091972754649316823714354000113723793845707472924569647945844436702275724514171940901057842455729977729388911537391920702753167125695758365521631000334183494148229356487592577177344247694925635113222720411958290166668659311154664393442690740373285505786584987609789805525300762074682544164213490532272590665630428583216403362629445153016404037983825555019274338559686335405719430737559715778'); INSERT INTO num_exp_add VALUES (3,0,'-60302029489319384367663884408085757480.2322712404088283093870869198708849258097125725036189625900174440196153781995220721511009855207486224837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (3,0,'-60302029489319384367663884408085757480.2322712404088283093870869198708849258097125725036189625900174440196153781995220721511009855207486224837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (3,0,'0'); INSERT INTO num_exp_div VALUES (3,0,'NaN'); INSERT INTO num_exp_add VALUES (3,1,'-60302029489319384367663884408085672236.83687099063256754698860828386302509843815398979402006244388708674093244201278399438376682321121138429850885935540924586964982855913223221441591310211730902799041126800414795030815514254713522692405212716783388698431088814919226444677188004928663343696636297536500970117716818423689175692808344185016908913828066250587407384563498516598672584120143890364303296142744031320345312431817858545326010704685255237541162931904446804064783391570102958474141459619245240874849766946530000977144965'); INSERT INTO num_exp_sub VALUES (3,1,'-60302029489319384367663884408085842723.62767149018508907178556555587874475318127115521321786273614780129829831438626014991843514783028586066905089122532715288580534070605779007112619958852628801540288008918482404759132944298520148080184250697297150817299173701934285646867489426483932830299434150464278537812298564822479785688909850915447762856384542090714278516461905872647123125352735037721325154184406043613668806975385533851732090363979459292404685190942209855935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_mul VALUES (3,1,'-5140349743195574373979577554212527512597024.162480344833040409158673429491690439298506850052285119390701002577176786023622062742050099464897084793357329597395417632908812044304066963549928478520702505283307379218587635434673128958824348493758429380623577527186462464399974242800361134191519694694139153279582776168995426125926314513926640766117733774558011741611075336271613675760116784769700605008122422944290652448956922432960815546502965310676913079866511016221573557684245901002643719965652152439520727383305120298495304784052489867651462175349450610643411043707261107569691076730261762793560088893354750383257372118118753366377402045596735023445172252225346164608897913115394905485106225627590643805003075069931177395059698550161546962768768895596088478488887530518018212441345360153523733317120037436403475909117998647781920105313938836144009539683'); INSERT INTO num_exp_div VALUES (3,1,'-707409990019504668223608170643582.082425157530076679823177950190511141917761066423266390864536360056345386873500583953954967225431526056199231768143978526582904071798714789552447782850723926323452633811653766838064983821149041415149067433978085927687765773012158659685363079191901396502099956189371719135315616249471739677995520904113581848295732911534266040260836644379296158092198514963023001686666281725991605685524015227112003429486755206848316731257322742428352116058878710728614841247581716185886403744830796740424927494009978599974431617064012221450054532987372285996679180090592706458366967534834069977644215413076082570497451654516268857039718730203921980307096740864747006176117071983875364434497517026142488015705391255750729200497229031250705777282987863242056223584453312226818451807347197583925624299372040413470456696588043062815'); INSERT INTO num_exp_add VALUES (3,2,'-60303024366845387174536638750234506721.2758014749274942132576365116182462208228193753118527959000939070820507877345194783035668195137119648748792386548310474079340204536236936213411512867171486174240518914767934028451971067161683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (3,2,'-60301034611793381560791130065937008239.1887410058901624055165373281235236307966057696953851292799409809571799686645246659986351515277852800926805119259053513475211488115663286642009614039264484259692394657121785950542874788161683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (3,2,'59993133911282372667149627097418449223835595194300848703012380022306762.154418449236691515146061305380465061074531890529497774836941002526095632166401249277270674802626154774328055399254982998368191676630276960361274433270795772477146870294928855773172789856196219950097157391050424577381777627004101100872747943673762087675405200265837631665464736842180920496158545887039337399558993437594084473932658319914390365451919627956823980800124880375978662052111797881386060353490432427832058851094210488804887183034572364751639107535041308434932952695103493677600969712634416241541391613699710826602011076372592299807609658979777598672141389319098817824624950794758296679318319299142035'); INSERT INTO num_exp_div VALUES (3,2,'60612.515523995516156897729403721504966784736064970538891936016753206905080265887046037910122269129293912171105589512464185386239562077778499936203155976336284324712221812806801062157592930664021782540155687632208890794166119782594464410498356083266087045927038416810562596141871858142749062925965665039981381277808608946877852933015970874447235220989360704166270479475802673572039541121473138382812420076284458769543418652217394352637294823914346726065145538710933281768776286965107974980550163605068693568717671571780028113969794125200592691656568731359981803586296135840575095063824258761205175762907549288801963550628589530419118771779395037240198270853609924445368393952404606326559485235840170339343865253618184271158932135392539396160392488927771488269959497352568205940636180870805982484030168838833607478593'); INSERT INTO num_exp_add VALUES (3,3,'-120604058978638768735327768816171514960.4645424808176566187741738397417698516194251450072379251800348880392307563990441443022019710414972449675597505807363987554551692651900222855421126906435970433932913571889719978994845855323367077258946341408053951573026251685351209154467743141259617399607044800077950793001538324616896138171819510046467177021260834130168590102540438924579570947287892808562845032715007493401411940720339239705810106866471452994584812284665666'); INSERT INTO num_exp_sub VALUES (3,3,'0'); INSERT INTO num_exp_mul VALUES (3,3,'3636334760530744652235488357607657374520053530993537920755375319352615385278.023608692512217812784472508939511216316773023870624171279878340621219698109986095090336065266376220109007718694455520948311677863167090936408887147442375455695868593092154861636486745490748828207939155392396090682312136290864359484540126174821846208064763823279315343506148025281475729723686566174395516982893064510403581479746673749128344955124070957545815390178764940816628194640888255387443237798761377617383817511745005525149990207764725040109364671749403389999498572538135588695345112358160274671918953118753964073105250116426665508214894805722798842017943220605600452911496071424281587802689830031742105619630787641205011894680546049982654601956546154572720177337696285354350903475239411654436042931409507429892682706228354459580412759920815932840348933425754970917910500027837428631661182510071352138858'); INSERT INTO num_exp_div VALUES (3,3,'1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); INSERT INTO num_exp_add VALUES (3,4,'-60302029489314054989387940744763542234.98295358053252401308872309802346144227050959966671157134780970446370197110016237152333448347415674483796371931316021552756816073493808344537122580089676304958104270609762310229182150728136567294798680824019082599362332377530165818229609055765904048195574142709698758095302560470195171027219786996322461803443213101532716728918363951912367135900414238535625075942525108530051828834829820554490477645701692374399416239080329365045332525699055300921341010989742896430768506909949340276549373661076950964959025967328861569387160956730002517417236732463510495205173523163676450203614971844583064927040066684531931069310935516821795449174271052747559395296525950219449541557191520903507653089998307641491381797101485104546410643'); INSERT INTO num_exp_sub VALUES (3,4,'-60302029489324713745939828071407972725.48158890028513260568545074171830840934891554534052635383222518357552878529888177277886748756734050012959603126757618322788700853025193884017088688974683399381224865109134889560766307825097103477790782590061456916367930139323346273315068375646692125800496305291080749834712822775973790354498408104142209966769395239768969172107040437333428573572464689550003374384624966403962290572373571842567623422963022155546431883766327294954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (3,4,'-321372325955692885069615337209737469749246561535004445508427591.072860243358366933071485495726715620133686420023451450292996945184959542770492705998350644739298629407567812798540119555932604687814429669592481327761428042980782672136901602006622227365754036664912989085940235439697789102358431343119457114603363936544931303133371137532006899162833369543279729021228901466728220729625107362063321334489394782322741444425117731922691457341543446841167138481424319752111748042440994701571955325673470021626946676976482516292402239416632497972073915818846704053624707839813514171497746804751780741682011937606462260710753056669269928580460921188286249923152921382198282201761171043384698319895970192114563900025573490442674225227682235790590616707857188385274186584856872573669591460447105688151281208238908470285147895678001948902280493477604361481216667716971590499226735103039'); INSERT INTO num_exp_div VALUES (3,4,'-11315021446594.877643290091276308982961654569173523687151347727612592478433578066762912541361898899908505997444632820107356713116459078630334224890355872486337973552333755378190316811715776951317058334754704988120078733912131691682869448731717816749620336196719541702138949084375907248656748314375183301372633028246109596775255074617515860012417935744433243071057057560464360663978361945666099558526069794464437818864063206829678640156992474597480916575712563493776637239091589972373682399519931569163592317107392231951775499293572134702843085474656152913351183535194499521618027894129537558509428098859715020703897463518891082573242502356303078754574312965093639182648263511466558336912294702019648266054331227425119096294871153811412169351624751542166779635702042223762951850816568617453355571302500885410532963789364822647'); INSERT INTO num_exp_add VALUES (3,5,'-60302029489319384367663884408738513110.66683195868931664491302527038538338065260819361151478340212147889934633981101279593065290940544218360883531149731823374304151252289014494378769385157204705433009477214625880056478643611622410268943757215673170753460135411513114716313801477916713433956086133878890802448531292334570886746283905390661877220497842493537338035961123751393889400517474762491881277080205381424363695095196058838349029211365212855028824622924678684631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (3,5,'-60302029489319384367663884407433001849.79771052212833997386114856935638647096681695139572314177791340913988441658803134837154906163605506135872443908341816501241365674229987734175441883907154998906319658504271319733469814941611260503645706198407368762270127105340397375230875953495882740039984314121888705481484090911598074635434289709802794549714765847764347865064280637851906308955404165593747173246944693509650424312007333558709071857299501674917023499921977975368196191999692949583952927486593144959284443545794934667002661774373364219852712996869245745722896071593910890197478196462961042627387162830776094709087748993678069776845437889735782063'); INSERT INTO num_exp_mul VALUES (3,5,'39362489275784146262776411377472433635883331946.794473520543457442955620133347015506556162839462623905489255080102447195050109095701660164272430316804466254467810714209179752718730906325952685817112992943656292503112803950215110778476301809440329937774061163668461957943313261962261081942055908935814323069621279128270849852239727888939033546870208376394878842958202403235309372240005941467570230067124830916866857395233038346727879951123599893174252558078732888910139309038957525961212820831321973219557165558911222848692996406741318948607549825343491479728117062814094258484536263158005174429922237853707635743736923521032098496725445243775790161216159399180889906705265012270270348146530113428221072591696851818281866095288773371414866822270689959827332258348570976075184933893434327278299820594014788148344260948638847457822697682605612771344335201258128'); INSERT INTO num_exp_div VALUES (3,5,'92380711368470856513514428781.033155715252174277753317877861994356621252232374386687048394529670637693505779282500567256835271428113529026462111032257747830329068594622091282098767000694818101994264352932243278144124687156236926607422077479412495979777588932692081795130282128890441931602671468684153168580234070246201722180460130467506344034452687371838907269162119534950946217165384250603250357360223255177692065141037447374172264943732616165429783010079281851748804739433821308362193703012671569249508710820679009084891198169587484117171861141580870066764275087111843275285564262902405980617569581840831518012986031156042600391943605532635833608358301306456966765206853910579231447150839538731157206153540873916893579943906851149770881336811951119112558311734171557608362620988555075663589827484854016702489324791126228380209309587206299'); INSERT INTO num_exp_add VALUES (3,6,'-60302029489319384367663884408085757480.1853341682137571584926062805631087054017160819890685789064777236456590745415460695320768374693076860837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (3,6,'-60302029489319384367663884408085757480.2792083126038994602815675591786611462177090630181693462735571643935716818574980747701251335721895588837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (3,6,'-2830400711649493468815157129316992649.40542786074520931471973065281957756940496588853021620372179463538053123396140685749478530925306163968207226329985017644835203709485594362663495728106061878665324856417118064730721101615473194292620972173690618491026470353143141125614124440035267592258385099934706896692953497971326605145704135723011753705907329979207428661473172503098296622281647255008204864404416199384701720347319806375450632245634238172654086373193251877533131784268854289406126119630708578053354762596511353053106459297339360827562281168219966099848212'); INSERT INTO num_exp_div VALUES (3,6,'-1284742031601444539630782308463065726620.121021225455596762466053504195700643301310745151565435123335541550963124666304408503436412726848834604336377169205828654564329888653766451656774534718709065521243637375270687684572524302099749018591530352756390467862377335526634920857924031482455373589053524922608255779040656019538392173139295812160325688504210040741075388404155144782519528791757450256668977268409265390016721724966592135644698341754332845002439113523127047593325646484654291494607100188094186116001064043796216982681807318598789324900462932294782971663150070521334398542559480877366424630693734132836518604260869235580641521264976411493166969530737254118968281271908306432918913600567757535151861421384835424322504855607676315840963696944683182767935565256136130185809101891760917733694553800748568697830680328155128016670099315391685422333'); INSERT INTO num_exp_add VALUES (3,7,'-60302029489319384368482818948157603222.2322712404088283093870869198708849258097125725036189625900174440196153781995220721511009855207486224837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (3,7,'-60302029489319384366844949868013911738.2322712404088283093870869198708849258097125725036189625900174440196153781995220721511009855207486224837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (3,7,'49383414785234649002982046297226894664526726187218771083.0993243619030008310875293647868815940421844461627295157812843657782639833900543200310573708100000958929315945039020410482966753145208427035917753919085618457760620513481628641658765820294863970581642745379331727722585319163262763708386199720411053619449096019862596221607526610103408936214184850115071874430846697061554769773328338028749631552202705583855831155461651414320570061181212214810086436100771547030013079997847086'); INSERT INTO num_exp_div VALUES (3,7,'73634737013325927185.787791148221519354461791539553527545166847382784629235192342551464898036004011575416717008403527685470842765455409054592207142526523023201841973047779202013398235864494503216973882479116841765663948294836180515686647139678530220909072497288527276378202532400736141014848907023234659020093073127450778982904578906877634654521825977382116752537063128793631412296206704078569268566614023846282524151679028060869175439188773864994186109445961525301841201265289707928211114515861536069733921800160245586536759625418951427346236213019358749196674633237197452976517130405065120577692737021174118093373953642724512531935525024447977867020930500433287279183436509990047372809400167546185096048971157700858970777301410692908939206693154161335335755844997198191427289546263182822280127912118140820265025555165337881999926'); INSERT INTO num_exp_add VALUES (3,8,'-60302029489319384367663884399588771256.5916339968771732477072012126949734214868901845505193155307646111690097978112797961939995859130827784737422228762767014427842766445950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (3,8,'-60302029489319384367663884416582743703.8729084839404833710669726270467964301325349604567186096492702768702209585877643481082023851284144664938175277044596973126708926205950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (3,8,'-512385513828318260570283740065493064477880918352.732624553690077857674083796435724202494963885926573907185100543184828131859183999195040110586155435203949963570735841632689374488877298209082579317039061893012560130258753218955057387206477423088065663401594359617882154814262843273526859406265633827109554791772242178864873774889091687515990672487380368975556580539271333144212685871370972163560839446696514092637412587953506052848750866803569213269271165856310101244342151576488190595936869490659700946174362872797854591188391982770203203644172999264143929484089237665313698600170041324566984832357000400'); INSERT INTO num_exp_div VALUES (3,8,'-7096872691348467943606706217.907270287823269424282176534343841939501231816905820949045946136373255017076943323578903040918266385724756894003692978391468202345397178445216069294845721607024056189567609414049207292919519881725733381453217071918292453682942046440563446278374996563501512335133749731529362537349288419883140401056747081065947774593869673146309163791076953204291951821124894409171722911526435445719071769008713367057971351892550570642991097981458696464929009464411568672010548002196406312721789582428747564855324072212842315229302959908665089850886951261233852165624100634055045684536311382452553544676139507899503993644452161529145849579200003677255968757773363970434791501820320494192909660871475590637419913907191608957830524390049664686282439567943053924245852983990958276537000732363895444894582579142752920882750130052682'); INSERT INTO num_exp_add VALUES (3,9,'-60302029489319384367663884408030893999.8854209703537480818248540990234567956069965340942024890856088355839135538265116174644003927269495876835324407641642359213535695803871472434650475144516723617632059130297610134243891145006222068960999879308472500422640481972089756410157246974765071949782242392661524488959954348903412713930092273629207697480131360047867213863018127928853922173643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (3,9,'-60302029489319384367663884408140620960.5791215104639085369493197407183130560124286109130354360944260524553172025725325268378015783145476572840273098165721628341015996848028750420770651761919246816300854441592109844750954710317145008297946462099581451150385769713261452744310496166494545449824802407416426304041583975713483424241727236417259479541129474082301376239522310995725648773643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (3,9,'-3308379209762459471107480259839508279070920437.883503980178028214343751083865562028455061662673132221930429904398963590401793045470444301883103141901787466923883803951815572606105617157736442670792467625964359169270739534412932791178258858918086886061702512427989129732248215348301444245772127142869263635282888226326427510486246184233225114523636171202034558843515894542952126988613018789833835507734620046994907453602573865012044120483116345444810078666601100257620969379968264504287700045822481492526688635364586344704730579892342786173395802035361824932075736340405960099542224953439044947229246847140957298841482874444906129049023002897135347878048572628834749795298712449864571996898774444932083319581439741625832405434317985988163261591679157437224404970927012111196724239860528859217322132733404472897289'); INSERT INTO num_exp_div VALUES (3,9,'-1099128766678422054524173986658.839339966689456265703816212189145237878729886466041806078542573981227645802109969871638687985985845489422516004202630099080709709893022100481258818112345013009059633421290241583864468453396484606925071369550998772875840640325758308835852391176503689677263605949075815552026731067384737231681068134099746550363063940273625924224721503126912810251607546172009765059506591787282558727077669973711491157840340631805422942099954647016059576777054339588421998882440726473698513560202030309804089250300097589174314677765341104767702983421063649104691583044460507666600260994707192787133590502137391691330098102374713996115782701417107878938473243874299874872852713499024851414757892169376458916467621226859152075901273014182163212783658933754507272478777304254191033562324994395916168496097385872331012258027431094381'); INSERT INTO num_exp_add VALUES (4,0,'5329378275943663322215245.24931765987630429629836382184742348353920297283690739124220773955591340709935970062776650204659187764581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (4,0,'5329378275943663322215245.24931765987630429629836382184742348353920297283690739124220773955591340709935970062776650204659187764581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (4,0,'0'); INSERT INTO num_exp_div VALUES (4,0,'NaN'); INSERT INTO num_exp_add VALUES (4,1,'5329378275943663322300488.64471790965256505869684245785528331091076155554650629138833809683459634328609777839510066435612911583108717191216693735823717997111970662575497378762952496582183738308720094529950793570383580785385569873278068217936841324404119828637880370718028782103860007754579779716996004352284614661690063919125301052941328989181561787543541920734755989452320799185700078241880935083616978140555713297241612718277766918005268951861880490889884082730841740604517529391011862694381726143520658746305661338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (4,1,'5329378275943663322130001.85391741010004353389988518583956365616764439012730849109607738227723047091262162286043233973705463946054514004224903034208166782419414876904468730122054597840936856190652484801633363526576955397606531892764306099068756437389060626447578949162759295501062154826802212022414257953494004665588557188694447110384853149054690655645134564686305448219729651828678220200218922790293483596988037990835533058983562863141746692824117439019450865871047657552800448629502344444081260036580660700595591338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (4,1,'454294299613767152878025320780.534199313974295807138790763501115780294529340799108297697573066187975311338382917022391830256203305238757334106943821060545424417350991354829668286194840925251162479496893943917530660694097932059166013476064988623431110002057735318529554555260199417935495388243829261809007709919225000608711536928171687251088217591210419208480251102484043683131687013687838713055660405381318396419588727500715930145098362997142075433472039319292466570912777345841400769387321465602989947078951135489852486382469990409873227894248208197179481868230244584527040573428134962626267135732247029762468417273891700661832893497067151409134724061246612631376075173287264787886064622106855886785805818642123776489793586531950438285720668411465570116161790343538663297713926678759640594912243360541590368666922379919514826022141331900181'); INSERT INTO num_exp_div VALUES (4,1,'62519544780217042176.800424689664850775296526267109332647921183817056683200043718160298562843864918741523494444361916531159341418970534833628106062976341639276761669219281771109561175175033739624472497927501467465456946098280878993371659461957361369508794842102784763955539708800574418468150309301129490186416766691183270872711413796386178009615777589066235359283212636467980113350635181915492452697347977967985810294150853782607014649150457138118264698071689065469752702524632313088938504181640435324554007553994564705401249228914199354821595855823113730697333390936834057091883654016371107974899726642500486005445063301647520527084320363513388355471718583708935211830796440056542408492723718088396437530207347815505844074508948817594746824098278470533148171941442049323578854023683167934569551595335539887777638716651319134577441'); INSERT INTO num_exp_add VALUES (4,2,'-994877520673428596810678826533995.79421257464236160757218576989993781147390382997132644206786872350652200243563770552469933194637146474528320738725486418004701192337175478117026439697031462361180324038544450723753402846519731908503949116978812841497201119103409772457270340059605961197538918709309004130294868847110690336360689446090125918336908930881873778405661757289469281163974774492810850778950071063044769131228124355961427111369335109426492177657001035045332525699055300921341010989742896430768506909949340276549373661076950964959025967328861569387160956730002517417236732463510495205173523163676450203614971844583064927040066684531931069310935516821795449174271052747559395296525950219449541557191520903507653089998307641491381797101485104546410643'); INSERT INTO num_exp_sub VALUES (4,2,'994877531332185148698005470964486.29284789439497020016891341359478477855230977564514122455228420261834881663435710678023233603955522003691551934167083188036585971868561017596992548582038556784300918537917030055337559943480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (4,2,'-5302078674303935968062773235453828254014583744527466365136.236414807326868572353809920518232561005161225922028750078608989965741402418802255050636954800114792425419735155504035469350521800895164087027043476055514245942961100610551646034472084954313670284875310691807937254054948742125729353864014122131419164449567115006621212424805182687707372956385102095255735458593389920872596796806885847543910224476727171570873698525606016990229936284811067826588349092841322512643043008589065847223683467371925773023109720951609815041012521485326120380123169545818055967455575736140138663815073081494226676896278654189873597341203197903408668523514375373841493189836809506003729379742035629498519683885268256481104619815130659628225053833297766479068686119691010593208135616363994230674606991733148502293102108193522604968743948323130517040609601859735899914987426089053869350663'); INSERT INTO num_exp_div VALUES (4,2,'-.000000005356818439105666775800262590702859770599410113087721172791624002387236505438218124867814437523686300450045582100868990117124343222534568799037421944272316277130975314766456260710406160143182498931595199129228915695802952695510723443157825968340043198200740606202264287904755124946591110599335909404657109057432686191440989434662797205973563889238804413861126260401987949920244286377128599413927273444061572120561496904543200956508673923547626768641271397088562966176629018606103663605145666976048261236691866387601532424530473754175270500777679603569715192364542901360534980926452487443629100484491344001509360344122933911316486556042277769848194790964257060927912344609376571637126617813506411190014141992988288983968823792971270853369317867326071952900448455162898476163801382836761898292684175721846'); INSERT INTO num_exp_add VALUES (4,3,'-60302029489314054989387940744763542234.98295358053252401308872309802346144227050959966671157134780970446370197110016237152333448347415674483796371931316021552756816073493808344537122580089676304958104270609762310229182150728136567294798680824019082599362332377530165818229609055765904048195574142709698758095302560470195171027219786996322461803443213101532716728918363951912367135900414238535625075942525108530051828834829820554490477645701692374399416239080329365045332525699055300921341010989742896430768506909949340276549373661076950964959025967328861569387160956730002517417236732463510495205173523163676450203614971844583064927040066684531931069310935516821795449174271052747559395296525950219449541557191520903507653089998307641491381797101485104546410643'); INSERT INTO num_exp_sub VALUES (4,3,'60302029489324713745939828071407972725.48158890028513260568545074171830840934891554534052635383222518357552878529888177277886748756734050012959603126757618322788700853025193884017088688974683399381224865109134889560766307825097103477790782590061456916367930139323346273315068375646692125800496305291080749834712822775973790354498408104142209966769395239768969172107040437333428573572464689550003374384624966403962290572373571842567623422963022155546431883766327294954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (4,3,'-321372325955692885069615337209737469749246561535004445508427591.072860243358366933071485495726715620133686420023451450292996945184959542770492705998350644739298629407567812798540119555932604687814429669592481327761428042980782672136901602006622227365754036664912989085940235439697789102358431343119457114603363936544931303133371137532006899162833369543279729021228901466728220729625107362063321334489394782322741444425117731922691457341543446841167138481424319752111748042440994701571955325673470021626946676976482516292402239416632497972073915818846704053624707839813514171497746804751780741682011937606462260710753056669269928580460921188286249923152921382198282201761171043384698319895970192114563900025573490442674225227682235790590616707857188385274186584856872573669591460447105688151281208238908470285147895678001948902280493477604361481216667716971590499226735103039'); INSERT INTO num_exp_div VALUES (4,3,'-.000000000000088378091435340426596348183959201660680284222502095357746364378698792730669202270228092348823133529449019715406417264278615046537007844589547485282959556860316942508808911542109265489435572674031608663747132688980867386885961271358592278360097086532747883342438036287136994589308551796702164612609710942175900921197001888540314760352113821737014875886635147123114456910985089625906448913621495025509697742196814421833448856595853403450682101743559369637786458968714240975228615283970739279506239628546165569688434254286341567486905374255702980370754235630955328837646999003123103831262789115646588779721625156078607919060762857866951417867378220773543985422722165221371084387943737083254760594128718841665355053236168688218864433967871311858292181233490194833547273501436630325295640020916257836404'); INSERT INTO num_exp_add VALUES (4,4,'10658756551887326644430490.49863531975260859259672764369484696707840594567381478248441547911182681419871940125553300409318375529163231195441596770031884779531385539479966108885007094423120594499372579331584157096960536182992101766042374317005597761793180455085459319880788077604922162581381991739410262305778619327278621107819748163326182138236252443188676485421061437672050451014378298442099857873910461737543751288077145777261329781147015644685997929909334948601889398157317978020514207138462986180101319446901252677846098070081948065342276861225678086539994965165526535072979009589652953672647099592770056310833870145919866630936137861378128966356409101651457894504881209406948099561100916885616958192984693820003384717017236405797029790907178714'); INSERT INTO num_exp_sub VALUES (4,4,'0'); INSERT INTO num_exp_mul VALUES (4,4,'28402272808100253242547006276715304015308580784958.804614276533085644370816876160290159450291717634111299841065255625515058118012211808741402904995080624675460593676923639082981788732031193774047612589113654423166826140872334380708795266307037944059108148612979119729408762532396036043629484049508789880964586236575769826806092391573178899640321403656891487586452524427223891405519836671312830183895761747460911777623703557946796784873885800089025388390522992806365773290733075927321101736155663727528284512100509273076328103465333687228713897893434161293693971954442699482857938492961830350598789444266860160794913830991304996676299650460125000959751177037694425217989910261807246272771711816326991282202653917488360776928533800529297474279497910326579608191975246060946079639658615178160271122713225105861574160788280907842327681375920919676063500116492292319'); INSERT INTO num_exp_div VALUES (4,4,'1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); INSERT INTO num_exp_add VALUES (4,5,'5329378275943662669459614.81475694159581596077242547133292502869630735172901157043010370467618244548786897684821457816189831652076071977025794948484549600736179389638319303817478693948215387894509009504287664213474693208847025374388286162907794727810231557001266897729978691844410171412189947386181530441402903608214502713480332746271552746231631136145916685939539173054989927058122097304419584979598595477177513004218594211597809300517607260841648610322863666300637648662611916496850248528515936635845594390453288113296413254893687029540384176335735114863908372780241463999450547422213639667099644505472777149095004849805371205203850993689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (4,5,'5329378275943663974970875.68387837815679263182430217236192193838209859394480321205431177443564436871085042440731842593128543877087159218415801821547335178795206149841646805067528400474905206604863569827296492883485842974145076391654088154097803033982948898084192422150809385760511991169192044353228731864375715719064118394339415417054629392004621307042759799481522264617060523956256201137680272894311866260366238283858551565663520480629408383844349319586471282301251749494706061523663958609947049544255725056447964564549684815188261035801892684889942971676086592385285071073528462167439314005547455087297279161738865296114495425732286867689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (4,5,'-3478781676337858247983014311182511.567538638808357215203593479841446379226774481291286361639429856698999485760647422501864626078375852610019829111004807806660731243672830787729048847342063218718651165150612717759770504648306347926061960607388621011846314969634048226452709389995594961695723139571002939804473057725442880410434039783304583526414509590532906062732322732569475349107437896717416548237633532805602064623969799081086996320156575550896200848758685986331692388099427314008504506503745527468550106879602399030419569897808150076298414568875477195447656904373310322813412927463518325927626891046356679526447117311923853482118502868148386882363449163182892615259995945992014431502761210899772725227648729095696228388558331052524469604046072203605897109629560683446827492904111565278516043939137760721315953500281379039771826554155511347152'); INSERT INTO num_exp_div VALUES (4,5,'-8164430956184510.184223536017248184022252663660196916321116266103608317725855237211273642694947892658721606226082017525816544904635887836163201565923338826779819876742736219975639586566502584026349778499211535661173597356253186281116862244165796632756909578140184577853088376334255860281874385669242675881761388233070861374295536603371778669602656670852115614651462552069294889723058758969660566508798011830996965570446030123780674316363670374970480994905368006454513642480180066435609577311074332150098288374616437489163254821095377348025470309665651059603665062887597814064136313866690824972464351274062540825405003954064175728198182815347642172934453828192850870808373638597839434504241236228591053696481146252072190903430582534862988719805163692697482513169856291048966811374872266165034373412719593685881972700171726777938'); INSERT INTO num_exp_add VALUES (4,6,'5329378275943663322215245.29625473207137544719284446115519970394719946335145777492574745992986971075733570324679065009803281404581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (4,6,'5329378275943663322215245.20238058768123314540388318253964726313120648232235700755866801918195710344138369800874235399515094124581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (4,6,'250145412892811547138949.592621291590152419206270097656346630226508074074623894951308487425470437268130465956063593951784820669318897182831355375451719125809800516979013437732298382708070979871283132689492336823087794373113039154669229889503700598930220858275174342776478898670277868700384853696009897221747924643343353942154528501454689084608965009561564638167714973711022212547096732831847202912862290958304510651828842182545311077713664465815992616213663619529378061133917572474298028065850515876361609671565914027186063801852554353160801534696062207299890867876199323530337336273950892723090754719547285920090419070001019943385293110663922226230169381423410428577990604776655422105400452217085311617728003688836185608912367677734364834577573255789160419371322775733777518997638403409000055707558465286469808848200141192627396502735'); INSERT INTO num_exp_div VALUES (4,6,'113543048739697485358574290.758354267447744932153707340542459183720907885610125346262898114677742971240785031722334497858930434531517077525413654346644836353208132641713415396062580605566225794048569430676355036264762949452090151450855446984773994337170590068740235544320694721909983307239491151139099779296496785240814600627140543144068640768857707110930453204162312973998304574796413938461971472337040811785231390930046688391955000749644938061585377150632133417156866197053052425576957646564943278156977176976876921235395711611898108821587442609611001702344783440618040704066809035404237786023075676374788819144406909313755996914145273176359246052899650387182222905558751208368173052381982668563471143298720677965028880626152749773712037769548408324298835212547215352657271696665387200792785056233953536347605130973626194099064678842085'); INSERT INTO num_exp_add VALUES (4,7,'5329377457009123250369503.24931765987630429629836382184742348353920297283690739124220773955591340709935970062776650204659187764581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (4,7,'5329379094878203394060987.24931765987630429629836382184742348353920297283690739124220773955591340709935970062776650204659187764581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (4,7,'-4364411947278810125327066890819882483326918.05664098958260550284395870948992407314161088028674246708928421994893923699743452802989464864039994566042797942433140378990308345483670828497915478397481687305406460330009319949623844175096007381662809083363069100235985794575399268709260901964834244796150883807308976949196661411035264619638771824190014274817662519438658481432363824187693821267613212631153175155634316128036152465184903927860719447693468054624663668062006049759837326188252927823612718163916100588143128358998656306593393889422386501730237442526450419990376323903182669190482615734972147533221144682538647497701130447816148459762464395194383090936159579764712919396391813914821973715879062992249315474841639591907249142779103650773383644785606333916967894'); INSERT INTO num_exp_div VALUES (4,7,'-6507697.520580964829176145824902679560705744817573189143227837387224410616222039115571544850095278317993922427931439719549137387753697989249394347047436951117850128104928719365703899136632100669607126357491484781141296021264049762417528697619931558728863308905257358126654378784709213859234056696519305650316810797382293500878834933984458810656133463638442959750083607649924453935287420620424368291770694630751828333903156364366745210911640207075765008558904788350844410055253643515389003711759818446776538393914018427075074171758415188027562645239606914126802490579848138218395145734902830046359100742374008993296019987093605275289913663224324033923096998194326249508491872193747944673057257521552387923218450155737056841633810711295424578984452176016198348344913655301417872189073133147510027427530833694019910340299'); INSERT INTO num_exp_add VALUES (4,8,'5329378275943671819201468.88995490340795935797824952902333498786202536079000703830146057240651898748760197658486790165425772165585380839129948178510273188565692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (4,8,'5329378275943654825229021.60868041634464923461847811467151197921638058488380774418295490670530782671111742467066510243892603363577850356311648591521611590965692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (4,8,'45283653791262997781451381354094822.762732909505051438036873220502792213670540454778361182993875916509061144859281577740137081988678361247725064336120451090222456518107029158304937620179032477664627949959143233370320432203497828243297406462513350790251761540074946469824444452248386782451723637769289822576372357189700319768797708375563651655860093365309717823602754924352327588945034832436331911584742966378275504545736896430718939807674966738116698454215555860047859161126694019895490767779791933882712567492115664113775047192011252893773389940988533801360010782816196288710063568554147458866942816721046004257953642508395867837127678980002737669139369781058046396738606563716339660654364541530532834806205571191828994250708412638796240377704994928921528330863683630622922959130920715261879547446054261914770022377059156125037157979236658010950'); INSERT INTO num_exp_div VALUES (4,8,'627208063620965.397582272040628872773601055303353339700043792111288801181637510303989399395425313995651311362368773096988861977687484912995632130587762386590996099363383976320342247076516604162469063709298438133327434461462906199160715395064249299615054970359309619951777972710299484596875999967582794277241285253106817446259313281064844416249524876385699646393555435017820686376877981018047574348711991428666249794623006175739581915209218834701034964043360823844816042368184094857692062884223864639972005010863342567608351008172649209459933114800143792514183138995700133608613158857147417653998048890116531052767737435620558349226865105888201598712435680481803901906613772821370519525404423549161696526405320391828194356063547089626322474164332505209233143121068245585662919687001395119229263995765376465304715643388771609446'); INSERT INTO num_exp_add VALUES (4,9,'5329378275943663377078725.59616792993138452386059664269485161374191901124632386474661634799161523147237015531446709484039091244606359050341194730653343894986479159670583937529516163204904273806158788218327396375034882788180783796976731912141525319602448709213495905899041406302673881364465504945113279286939663215197485367850132991968081639290297033476859158044889351836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (4,9,'5329378275943663267351764.90246738982122406873613100099999535333648693442749091773779913112021158272634924594106590925279284284556872145100402039378540884544906379809382171355490931218216320693213791113256760721925653394811317969065642404864072442190731745871963413981746671302248281216916486794296983018838956112081135739969615171358100498945955409711817327376172085836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (4,9,'292388240303165948041827159734686.255558469787242316676287235194652580157149226950109397295920730296960145548003120827363226435916209781396711693581454960342091452830648929118261388933297036933167543189308061917640517578583521401267417187854611829815212778183983326568586118831109538377828156118900313778053576483381085207892754728937946691892849474364477434665960112125254104966566712906532318984871145605839506991591027939136026602051635433295687547552796828217859648186757719639965988287173297286034098497871707197092627676226053609131138590878743560287292934815277894463305001278326023708395571840850120055316276256138004565442099731931051413153564744766098053176049414330146267604802971221161572130161432525297614616942172815141372973870720928125699420370428856022295499447755488148545048400795053604349570217878099721865670458104653570360'); INSERT INTO num_exp_div VALUES (4,9,'97138902640718538.241246716463110895614166618530828908023040947887095196830690221211560526562522274118188963051412359798837957512805692731972838989047910709158995922699598619854907969493232150042212406549916252602794415099066259707018021422154933830674786488990033885447289593742424717170197810316367637885248684134204152352748803532396210051700193575105804898183523770153431536054848843504020390623875664696278263569145547515663340450903772852615789980257449146000410036925975898331113013857953289990299253584950458042598491897496393582249411290555264437893099880371008957017323366523688894303458743415715114628052487518110654201696604914159777300997374156315186315524817636714210119873791848535246674326877611945112249137224923201544452904111118569299934059002046318394345055859769572070097973298522564724884895879226870720839'); INSERT INTO num_exp_add VALUES (5,0,'-652755630.43456071828048833552593835051449845484289562110789582081210403487973096161149072377955192388469356112505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (5,0,'-652755630.43456071828048833552593835051449845484289562110789582081210403487973096161149072377955192388469356112505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_mul VALUES (5,0,'0'); INSERT INTO num_exp_div VALUES (5,0,'NaN'); INSERT INTO num_exp_add VALUES (5,1,'-652670387.03916046850422757312745971450663862747133703839829692066597367760104802542475264601221776157515632293978442027199108085723617181683235487266149426304575903892721468296143475297345699313102262188759506518376019936160961709578829069446312051432780603656651983414612264636232727512091101057374054475214114364113300402823059519499217878746766275164739724770556122895799337810694888119810524986616938847385753562624139431982468828696587199570410008890188532132652095915565323400735066310142303225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (5,1,'-652840873.82996096805674909792441698652235828221445420381749472095823439215841389779822880154688608619423079931032645214190898787339168396375791272937178074945473802633968350414211085025663129356908887576538544498889782055029046596593888271636613472988050090259449836342389832330814473910881711053475561205644968306669776242949930651397625234795216816397330872127577980937461350104018382663378200293023018506679957617487661691020231880567020416430204091941905612894161614165865789507675064355852373225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_mul VALUES (5,1,'-55643106304872.575994253221940844841058071061962511162776681458310912066379595519265546225338405882027547140476045378015935579066580347282075024392379464189067155567624835346798806677988850250198082355055954078446421075165109896091047534711081616362392995575466807084807876544560268050611445006601394735810211678919646667455478469014906335433468365011768049600750224822391684377238242162320161552720449713229523135506671063115436813348612986916614320012995541575293478341408982118538094438068036422562665160411591652618670802973618768526197813319204816293073794413317669922144705633308090832805914096147659820167569140291210526520361556881576175809360614782817717579318298657744021133210954279487777567785280633309576696708168342539425395482429923273623865667723482418178781573723597156804085501875735112311466228778929147929'); INSERT INTO num_exp_div VALUES (5,1,'-7657.550797567691019915353529993301413746369700087741672762343206271266232635965032053368224472333368713006346867984576168784127503674579531243603836945595880917241997606783133673324236134063757452734295148763280059050480246827193380861494669624151921824660313516974440913733511526807313019192263170823268678149435664224184903925632177789052038092611394447709922076676981043877747276056677801802695466205531230350209787298926245402046182150996849906836743231861317120171583577624262765589605263477198809166390259128339127005924586833372241946051704497188891325715185091060185547236923494393813210904033520844572880475265306843414506359253445517738473745552980984097762509546161690823646176501838559393690565709795724159196133663168004773260451322595899506776323262195323943138344537866088159583331807728944620284996'); INSERT INTO num_exp_add VALUES (5,2,'-994877526002806872754342801504871.47809095279915423939648794226185974985600242391612965412218049794216637114648812993201775787765690351615479957141288239552036371132381627958673244764559862836085530643408020551049895730005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (5,2,'994877526002806872754341495993610.60896951623817756834461124123286284017021118170033801249797242818270444792350668237291391010826978126604392715751281366489250793073354867755345743514510156309395711933053460228041067059994425117350974491367099004404995846913641329458537237789584653041949090121498951516476399288513593944575192159570458664608461677113504914551578443229008454218964701550932948083369656042643364608405637360180021322967144409944099438498649645368196191999692949583952927486593144959284443545794934667002661774373364219852712996869245745722896071593910890197478196462961042627387162830776094709087748993678069776845437889735782063'); INSERT INTO num_exp_mul VALUES (5,2,'649411906691138274293985410502516861224852.2323455192714410716272307781034189160865613770320102043319541634113746032638191509585045862973333645830298922352816245477556264222094036953195419857712804755170632292914187367964994214922001758104594052499795564860466055599417895782179851297585155129541589802249540436678824225950907268084876110445460948679383611117263673106597132046331719468816839434908155684738864149955129235751738204036443603521478609787295079710078973503970964790273461142497259987849074597264522099648376356902360358310245001183020992360260836105404118742418040965190000718736837422434593694808973939805954329718232693154128543253581495885789333274488461716809104532693754070810202831113003978085636579574171344721710232931261731022478029314435363413498991740750878099825781577297965642009156858479681236085226911858782115'); INSERT INTO num_exp_div VALUES (5,2,'.000000000000000000000000656116570506105776235076334177868550033347254561166417969910286926369599900073757929714260350320362090452092025380232792749476245042480546813848702351830607516880397305138543526307608094143028291193163613755680419049060162928958489964834941920423432354996040147818253087783193280640282263490705632002572757216731766513434035163528102590524432221718194164133959630768718395847710529339782880381264265894322494716854757290930538739000043383104085867828258790010654331660516512156519838978751447311068903958136482041673109857552178367614498426226323001399275980281507353231821022591045797658991388304873240910526149138339658220844723880158150606035181559877351791752701872877147074033569061408920725522180134133183999181370354585872214368766629114773129541658653693832843354053701079334077'); INSERT INTO num_exp_add VALUES (5,3,'-60302029489319384367663884408738513110.66683195868931664491302527038538338065260819361151478340212147889934633981101279593065290940544218360883531149731823374304151252289014494378769385157204705433009477214625880056478643611622410268943757215673170753460135411513114716313801477916713433956086133878890802448531292334570886746283905390661877220497842493537338035961123751393889400517474762491881277080205381424363695095196058838349029211365212855028824622924678684631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (5,3,'60302029489319384367663884407433001849.79771052212833997386114856935638647096681695139572314177791340913988441658803134837154906163605506135872443908341816501241365674229987734175441883907154998906319658504271319733469814941611260503645706198407368762270127105340397375230875953495882740039984314121888705481484090911598074635434289709802794549714765847764347865064280637851906308955404165593747173246944693509650424312007333558709071857299501674917023499921977975368196191999692949583952927486593144959284443545794934667002661774373364219852712996869245745722896071593910890197478196462961042627387162830776094709087748993678069776845437889735782063'); INSERT INTO num_exp_mul VALUES (5,3,'39362489275784146262776411377472433635883331946.794473520543457442955620133347015506556162839462623905489255080102447195050109095701660164272430316804466254467810714209179752718730906325952685817112992943656292503112803950215110778476301809440329937774061163668461957943313261962261081942055908935814323069621279128270849852239727888939033546870208376394878842958202403235309372240005941467570230067124830916866857395233038346727879951123599893174252558078732888910139309038957525961212820831321973219557165558911222848692996406741318948607549825343491479728117062814094258484536263158005174429922237853707635743736923521032098496725445243775790161216159399180889906705265012270270348146530113428221072591696851818281866095288773371414866822270689959827332258348570976075184933893434327278299820594014788148344260948638847457822697682605612771344335201258128'); INSERT INTO num_exp_div VALUES (5,3,'.000000000000000000000000000010824770508763323320533297369674519056450544793568147911931789010432012750062661590994728968589403602468229106206242395792957238667714358401601098858606386995096923432407249369639633268143022787987190106724545750803196130511146323174462918572423414631798141263222875752767731279138952850500369328934959764805948568471324562210715908420467881411844098258193571194910997918428786213948547748701831331312040839544355427357749520227124858111324859160114175254197992204974033767300989488517391063188153561391320190653403747521648794370679322504188364455328709488846777004202196382575648619395139553279192346251133156445942281048959845827006761160755031086836046398020850814350246219929303018051720203943879538087954853996826539712240458022307680912400297508925714946398031304516583939283'); INSERT INTO num_exp_add VALUES (5,4,'5329378275943662669459614.81475694159581596077242547133292502869630735172901157043010370467618244548786897684821457816189831652076071977025794948484549600736179389638319303817478693948215387894509009504287664213474693208847025374388286162907794727810231557001266897729978691844410171412189947386181530441402903608214502713480332746271552746231631136145916685939539173054989927058122097304419584979598595477177513004218594211597809300517607260841648610322863666300637648662611916496850248528515936635845594390453288113296413254893687029540384176335735114863908372780241463999450547422213639667099644505472777149095004849805371205203850993689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (5,4,'-5329378275943663974970875.68387837815679263182430217236192193838209859394480321205431177443564436871085042440731842593128543877087159218415801821547335178795206149841646805067528400474905206604863569827296492883485842974145076391654088154097803033982948898084192422150809385760511991169192044353228731864375715719064118394339415417054629392004621307042759799481522264617060523956256201137680272894311866260366238283858551565663520480629408383844349319586471282301251749494706061523663958609947049544255725056447964564549684815188261035801892684889942971676086592385285071073528462167439314005547455087297279161738865296114495425732286867689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (5,4,'-3478781676337858247983014311182511.567538638808357215203593479841446379226774481291286361639429856698999485760647422501864626078375852610019829111004807806660731243672830787729048847342063218718651165150612717759770504648306347926061960607388621011846314969634048226452709389995594961695723139571002939804473057725442880410434039783304583526414509590532906062732322732569475349107437896717416548237633532805602064623969799081086996320156575550896200848758685986331692388099427314008504506503745527468550106879602399030419569897808150076298414568875477195447656904373310322813412927463518325927626891046356679526447117311923853482118502868148386882363449163182892615259995945992014431502761210899772725227648729095696228388558331052524469604046072203605897109629560683446827492904111565278516043939137760721315953500281379039771826554155511347152'); INSERT INTO num_exp_div VALUES (5,4,'-.000000000000000122482510461124748279475400009367345900846466958806966807399903713411658400733717078392550780910604704603123670767210550800752620037863340961255721285160854785449315208955654408132775022766783343331151895973970395232686910362226184006990485313002943710214511418310741271074710741339586430026286272098156531835438969774325517509155992092194349661122678547097423264670055720422496527272118788005921590521726691666219504214087867030003203385360001614199656989667055583749577099440092378355805901262289841168751608673297446473709956390142112843400255748161809121986096092991616144443486023218404881798896685413932215981950393130292001833627899480153863300557853617312991880655905907971211246077450786084079040513198340644157868678782195341316027563717617074364438885981635394382733697473265872796207'); INSERT INTO num_exp_add VALUES (5,5,'-1305511260.86912143656097667105187670102899690968579124221579164162420806975946192322298144755910384776938712225011087241390006873062785578059026760203327501250049706526689818710354560323008828670011149765298051017265801991190008306172717341082925524420830693916101819757002096967047201422972812110849615680859082670783076645772990170896843113541983091562070596898134103833260687914713270783188725279639957354065711180111801123002700709263607616000614100832094145026813710081431112908410130665994676451253271560294574006261508508554207856812178219605043607074077914745225674338447810581824502012643860446309124220528435874'); INSERT INTO num_exp_sub VALUES (5,5,'0'); INSERT INTO num_exp_mul VALUES (5,5,'426089913064020811.057708378200224487694731586862745370027417544052374884336177893807736467646454486029424673621605232432043672119510371547153895504456723242262639262542904151307250842477327375961936454637964429999741717244285121019840463692418987118402683746281993192269229200465080358289645050337976214115902915692028162689089167194843185708212911364017271332623359100711545479273675423617018342297822477514128997410642005300368966199980354369928371655155437291469427189561877718971914040675572136507472590254222870537216617260612835805368361975725573009455402822669103118872235140158440342063571894152305875004532651814592458133460160514384171804043127771746596286988679698684698755896736275307574630777027620558428909546664763675431701332632828281070572045822129984625797185173815273651376003614106277727279230096226977335510'); INSERT INTO num_exp_div VALUES (5,5,'1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); INSERT INTO num_exp_add VALUES (5,6,'-652755630.38762364608541718463145771120672223443489913059334543712856431450577465795351472116052777583325262472505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (5,6,'-652755630.48149779047555948642041898982227467525089211162244620449564375525368726526946672639857607193613449752505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_mul VALUES (5,6,'-30638438.151446159804025029882398388155309149089870990062944469684482366692824338098201222171115395923414887930224163525189097571163687285244255335505387733673499447610577050114902372990462064696637481657064525319516004273769831260452832960893174173254560250804003884280384718123289136453955482855362019158401218620018346500189769819687260476334734259702665316562988639223597110627626759216850014150105605927773639897638043177685498804811787888811168524202700283461266793154726325540776914500415140842975457394524215869103737379109516024460317825645645301237375972914247141703084877141866316168268901439172491577729880760950895760711857112463508064820414904611059588717092145484656103798852859978690742216940980929562068'); INSERT INTO num_exp_div VALUES (5,6,'-13907037655.047994416383638650569341223199042786813441967582376077478024677494832069402897226848055043557486983268019376307288565911231748501636517992289743940159005664424461285010295150828744259113760652210086696250085454819340987566229400805422509198052317518991183515696724846560872057916862620762789778660622787735923967096950195583369113574365386627110408307941105082873469072519133330718161987781080307947247163619814890462416622144825161521790673339279047700672881113718394727610096366361422482794458375587355933614201638489194194834709433413694420512869179976485096875057742460003147602405353823942488343056906912173170809084207937229591627643451380735179767199816663168139837088183577975769442341678933576388936845704303859241320794255052627716474860113993958556604381707826493168941926878481079724185426298004604'); INSERT INTO num_exp_add VALUES (5,7,'-818934540724601372.43456071828048833552593835051449845484289562110789582081210403487973096161149072377955192388469356112505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (5,7,'818934539419090111.56543928171951166447406164948550154515710437889210417918789596512026903838850927622044807611530643887494456379304996563468607210970486619898336249374975146736655090644822719838495585664994425117350974491367099004404995846913641329458537237789584653041949090121498951516476399288513593944575192159570458664608461677113504914551578443229008454218964701550932948083369656042643364608405637360180021322967144409944099438498649645368196191999692949583952927486593144959284443545794934667002661774373364219852712996869245745722896071593910890197478196462961042627387162830776094709087748993678069776845437889735782063'); INSERT INTO num_exp_mul VALUES (5,7,'534564131989234694540350103.27821462973515555648644772098605028371173048154132108733819196629002548296868548691993248746628993380136454426833349407578676005545111508293942736555269938962058196496152360848131645787941032968937794930046928523006455386861100809286408671908320322523368135203881520526880998279355848280412933152306299256343179622513731096363088094541514890135766460631462465021694553063366717467560655272004461368865264059368514271105464855575429914212085797297268595943955105608543373940035636033207568676745293499106348500559628723682588033431457023964317090780615020801564861497990103549650624438425421690193862533733474254'); INSERT INTO num_exp_div VALUES (5,7,'.000000000797079129642393611556079160915147221153735075943759104977169600937534508973732991117540626046659124172765761873705978811124901421049332579161931652390647472911517923131800238903184679028518657818755558526885018755394697157094867449047655737107085020874974955627907737126958129710597811740696534189608639914753884882702680512272194316887744972931453458445314561564591875764930680945589486999586667912816485821717403892703364322658245615895415781719033810595358092343690359557942948213374234065052300866661453767599465059289920067095083062096458980564265691295895672503728815182981118876144075942348853666085714846210822847053889733510154276933759200630639642310562242207518883342516103725757482864105340008709446643820864294556778969997115586027866760708448174502158738150605938364482719960251612464993'); INSERT INTO num_exp_add VALUES (5,8,'7844230593.20607652525116672615394735666141304947992676684520382624714879797087461877675155217754947572297228288498221620714146356962938009770486619898336249374975146736655090644822719838495585664994425117350974491367099004404995846913641329458537237789584653041949090121498951516476399288513593944575192159570458664608461677113504914551578443229008454218964701550932948083369656042643364608405637360180021322967144409944099438498649645368196191999692949583952927486593144959284443545794934667002661774373364219852712996869245745722896071593910890197478196462961042627387162830776094709087748993678069776845437889735782063'); INSERT INTO num_exp_sub VALUES (5,8,'-9149741854.07519796181214339720582405769040995916571800906099546787135686773033654199973299973665332349235940513509308862104153230025723587829513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_mul VALUES (5,8,'-5546455599206321494.0676583421119904300307105296377723816472192007866147764761501865875232824814135783697976183493106885436876081315217834621720906478074798596116645640251460842350553806256223963023430631066024389364515688765194373161385579258482225808660340732705687558150699172147896486727530192499184101617379930846663835628510376484675411350654979679181852179924386290069790336316958202582966248703889464308649631486542724072047294216362186036638115240070658004553260251510288423749333873893917690832829128021808383128393431810674177390352413548658782609064839524756041501835115152819802758773711821322162752064589750295542985780512921839490040396053737870038534216948323935020460307350020911362024271167085905714873548388570602799432705061561572854498075600'); INSERT INTO num_exp_div VALUES (5,8,'-.076822018213756690975099471985461347542955923191183223634407380481978143225129486622351714276452369661632980197282261508936298649901018470846144321441236073683990324039849865750139470288565622579952182053792815638469841531577235191276257498209844422440366423136595067535337374223115507557306455001792362506235886189722508617024948653046102060677266555476719102193278190540414934812073355995577639986512222998268934000209944414236509139290657402937840986061987219441410741189615344050459067454369371094189930607834375561948483494321255500497786795636801854613881105643003358210407867114145806225724880370339074242480071595684502491827709175732777776915682786771730423733673667248186336046898260378049328204094804755195626798951644386924178161926128482002518979482630732440619051262620098544265763306253807191182'); INSERT INTO num_exp_add VALUES (5,9,'-597892150.08771044822540810796370552966707032464017958269847934730769542644402913723848026909285133109089452632480800168074607090893991283808726990171062867538012237270000932798704781608969096508450960185964292594677356241956277714380500188870696516251767979457838109804726539408115452577436052503866633026489282425086547752714324273565900641436632912781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (5,9,'-707619110.78141098833556856308817117136192658504561165951731229431651264331543278598450117846625251667849259592530287073315399782168794294250299770032264633712037469256688885911649778714039732161560189579333758422588445749233730591792217152212229008169062714458263709952275557558931748845536759606982982654369800245696528893058665897330942472105350178781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_mul VALUES (5,9,'-35812445701642379.972368737320206275515144213236752803936806738624588812089615098329765811617509505790110909629109400553415312470540217508070421816878544125783329593128638405659896184248784794258084116406472768709113030915308410565617764394827427154923321461158387012978726512246146545834669665093228316853342805604075936530371665576147966721599968786161939347726656168798065647411457701453987215491345496003650288850096338695703984042549594979897253521041581573388369367579323607093487743440894765114619634001789457486407909224339065748496715380572175183589195611952939575073075140094901024063428239223964510824958346570603142906309198033196987949067156046076497974760641964978711558209708743776024313916111738542765749928287600981397080809041007714387564206594515733287925008053261840295560398311905155157989225181164097547541'); INSERT INTO num_exp_div VALUES (5,9,'-11.897816658873986795664687519069203701902563457968097729876034796143085813450454323128600602495745166997629078984618283588337379184733369491549230343315369634754204412939757136108898254582353378508832611703989221079986765793923635928759179573599208612516427628403686659479459867527627014558600521732194240404211484706621458983727740143568799713006127585168144158660566534382037451913967363675002134687952374080694449905223371627606557311710348820900963340884001770733452314715448053233208783321215998063958966729954113843581448912079950334969908657535514847005768455377990262943747367245613296497099716892292154137652893990339292671106003657659470243633112063075297194691349631518467702876183897580432003030164590920118726657290102377710611324297862045849839571689192181090062958059281673245670440852080202548743'); INSERT INTO num_exp_add VALUES (6,0,'.0469370721950711508944806393077762204079964905145503836835397203739563036579760026190241480514409364'); INSERT INTO num_exp_sub VALUES (6,0,'.0469370721950711508944806393077762204079964905145503836835397203739563036579760026190241480514409364'); INSERT INTO num_exp_mul VALUES (6,0,'0'); INSERT INTO num_exp_div VALUES (6,0,'NaN'); INSERT INTO num_exp_add VALUES (6,1,'85243.44233732197133191329295927531563604777955507322414928382967007765263923984471408038635831036097817458527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_sub VALUES (6,1,'-85243.34846317758118961150399799670008360696356209219504851646259063690472663252876207514831001425809630178527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_mul VALUES (6,1,'4001.075404054519813215296429095020391062109905613738157927030437221793757373268325953178030040276107574363822832168160758728653712686313134828282109532831190239521843808940611025488601517574653932032236616573457735900045655665690517797280666732780030171712864961531623060353548802466577910774711998056232872212688464691036260746751992072745518373073825852119460094113694393273456369345499434994672730920070410547163082189385645712866100999708173472360864669110044660667614583576570496399103026286828660558854973376227247132815728164629722965145778698957093136175449225024685874279280018547740'); INSERT INTO num_exp_div VALUES (6,1,'.000000550624150700285432940805295709861455424264970126953321538967550091614148982212874391026630805836518138806917934859138493583812313778188030836027246840794439412443826640206464415527687555214009725107630387889854278497875708390050387195108441635824296563108288712340902423706104029452615686971019125750530034798026103476074158922893374911891438688457439945897348811702908216883650280617098402133628688982793791562476980709924382381505517834196446365877784931355599480881104446907801805570471686295270927836995181422963320376948188855989986414581755633425437161760674162177776773597848142496583128607548351599750592863590334617838124741567654525843413232313914310487355539260264225486180000012813397807525203822863232682089295055713257835007742845010741137213301116647610033909062369843750685396196342928455'); INSERT INTO num_exp_add VALUES (6,2,'-994877526002806872754342148749240.99659316232359475297606895243958507460511031229368344962653674268847910587702140353344168594152240599109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_sub VALUES (6,2,'994877526002806872754342148749241.09046730671373705476503023105513751542110329332278421699361618343639171319297340877148998204440427879109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_mul VALUES (6,2,'-46696638263247522384986521136500.479312417066793299922708112595886608370451213741279484136907754744903470430131032928908162742687359367826808123516519335458861613010646992354378739165872253762686683966945711430182491860196341344982195078000259063231136011430995647812149294224699587849791008794261026932467933475782780'); INSERT INTO num_exp_div VALUES (6,2,'-.000000000000000000000000000000000047178744084866106587600962473825168237820701199970144691815329658682341685812472535816245052671243808078367856957579485152424914481414614360809698177236664771558713606961423658442962083541733004775309314926918118528217478256885324362912426275407382550929085958089798861918760121727491366034496581249711153289495601712583077918760003840368008056353090552282274780428335438032908213783490070198414584291402513547386013689752310173492320159738977752795528725029134841933604057954874523842273790958618375118974623107241366036640538085329921129023905888674299774726871808862832797230915933851225308164365269753526489223540580759951230801125605963901491073619448437890841032149898629231552019804656219062534881074125995130202820302133432951999011667568746004715268323913437054078537'); INSERT INTO num_exp_add VALUES (6,3,'-60302029489319384367663884408085757480.1853341682137571584926062805631087054017160819890685789064777236456590745415460695320768374693076860837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (6,3,'60302029489319384367663884408085757480.2792083126038994602815675591786611462177090630181693462735571643935716818574980747701251335721895588837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (6,3,'-2830400711649493468815157129316992649.40542786074520931471973065281957756940496588853021620372179463538053123396140685749478530925306163968207226329985017644835203709485594362663495728106061878665324856417118064730721101615473194292620972173690618491026470353143141125614124440035267592258385099934706896692953497971326605145704135723011753705907329979207428661473172503098296622281647255008204864404416199384701720347319806375450632245634238172654086373193251877533131784268854289406126119630708578053354762596511353053106459297339360827562281168219966099848212'); INSERT INTO num_exp_div VALUES (6,3,'-.000000000000000000000000000000000000000778366376597400971124059102619954214055884926284646546105035591052258074563706355894551049631537984053410850060739107742208523938741961208742831871056600773325053133977559789796700130019975964192371715826863472981072974742704091801166438465082519558956925444635729210849210496466189037623555622901738570979273502405907969114110345815802999687171113749364073269902319653450479463404003706147915064100959774312307195946966281098140229199529866429134937742584938255441169541436021827079647129394362379406256722903991353136733939395366152312959281905058592776286736536360235356737359904478313225848562436632109470589310799000750518904145312512621838935796912993778920622238202744037977772169066929474233952081158212174549695244127987299282384885288897893503991509410567351494'); INSERT INTO num_exp_add VALUES (6,4,'5329378275943663322215245.29625473207137544719284446115519970394719946335145777492574745992986971075733570324679065009803281404581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (6,4,'-5329378275943663322215245.20238058768123314540388318253964726313120648232235700755866801918195710344138369800874235399515094124581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (6,4,'250145412892811547138949.592621291590152419206270097656346630226508074074623894951308487425470437268130465956063593951784820669318897182831355375451719125809800516979013437732298382708070979871283132689492336823087794373113039154669229889503700598930220858275174342776478898670277868700384853696009897221747924643343353942154528501454689084608965009561564638167714973711022212547096732831847202912862290958304510651828842182545311077713664465815992616213663619529378061133917572474298028065850515876361609671565914027186063801852554353160801534696062207299890867876199323530337336273950892723090754719547285920090419070001019943385293110663922226230169381423410428577990604776655422105400452217085311617728003688836185608912367677734364834577573255789160419371322775733777518997638403409000055707558465286469808848200141192627396502735'); INSERT INTO num_exp_div VALUES (6,4,'.000000000000000000000000008807232244507937251856465017967626593430084223212999583902527587737263981869382895220711835510154989851222501080395520249593128253795609198666884523792646863341248402687314509176781281863891589925961900674092953408613128961234166906173266411035009516545964362406728942021813644419154548354247112601793685146960840364604115937119024575638240439041250900118977183124605578660115160551830946251713350556181960983267689939549506518185340972020820080460565392359379680036788592213479105831301723237102710863182596413567756605711230290883888612188805367801369264231165178487334557824054205160222371548005742602736713668548450400926514169967213301919971189065307721110805424950794015852531342286935114651278691214233054575660712537044810163930633456573860895791198853393107188289695511873068'); INSERT INTO num_exp_add VALUES (6,5,'-652755630.38762364608541718463145771120672223443489913059334543712856431450577465795351472116052777583325262472505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (6,5,'652755630.48149779047555948642041898982227467525089211162244620449564375525368726526946672639857607193613449752505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_mul VALUES (6,5,'-30638438.151446159804025029882398388155309149089870990062944469684482366692824338098201222171115395923414887930224163525189097571163687285244255335505387733673499447610577050114902372990462064696637481657064525319516004273769831260452832960893174173254560250804003884280384718123289136453955482855362019158401218620018346500189769819687260476334734259702665316562988639223597110627626759216850014150105605927773639897638043177685498804811787888811168524202700283461266793154726325540776914500415140842975457394524215869103737379109516024460317825645645301237375972914247141703084877141866316168268901439172491577729880760950895760711857112463508064820414904611059588717092145484656103798852859978690742216940980929562068'); INSERT INTO num_exp_div VALUES (6,5,'-.000000000071906039575366987930696117572143566208825430801491864851999044659045681114433294052065377679745375399878664822361548237094424148992770296383642432040129230180142339557437679166815114510467763288057917694948929009212876391059413439647163295629904270262780935228234994930653489111444964446097124407804311494588517082748514970905563707392765567625639455978464081409330528324962333492925267647686759704415549221137291475247571296491073010175087298752769122449499990102435819414671847617062560524758344361194566796343756743243766853291113852464023843527189221162680613675369708907935197867458588904367993736363321133720345058432019986643353417257503619558797249295232894674255060861358071309619524800424087896023710729815248847792174290644245138831518072176198607255346603270853333176255533974364728342822'); INSERT INTO num_exp_add VALUES (6,6,'.0938741443901423017889612786155524408159929810291007673670794407479126073159520052380482961028818728'); INSERT INTO num_exp_sub VALUES (6,6,'0'); INSERT INTO num_exp_mul VALUES (6,6,'.00220308874624532134736695825088747995945783791378828770826401323533973395137378460250799184832278118133622563295093909508983301127615815865216895482784469538070133388154961402881325731054433770884496'); INSERT INTO num_exp_div VALUES (6,6,'1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); INSERT INTO num_exp_add VALUES (6,7,'-818934540071845741.9530629278049288491055193606922237795920035094854496163164602796260436963420239973809758519485590636'); INSERT INTO num_exp_sub VALUES (6,7,'818934540071845742.0469370721950711508944806393077762204079964905145503836835397203739563036579760026190241480514409364'); INSERT INTO num_exp_mul VALUES (6,7,'-38438389630389612.0042045464692275627184627672063157323631169405883031379129843031477339360597564128205768842448328088'); INSERT INTO num_exp_div VALUES (6,7,'-.000000000000000000057314803440765029050667129936880528769333499793237773980613524885506515999851858649385968476426313207429914995755091541422893944525222307473169425244462149015717526718376299808423552027796204632286454853167559026787019718806449038446612978917236245943248168920696452018925986743620392955122431521581268518101342690974749463089739042586011924590503136498488946387508310209984849243014542648765897536338824721211252335866349509669538308454367849024503312249951727948786393404944555844863805495937835281927012430439403132382055464307180153473189842433614777883826783689904293115204700185380661601223693428304020047393499702811581067120117405280772944184877279069842269329959037186324135435468322336398566440055479142909170224780318371473684868152271947368867666706912563225912012901437076773416'); INSERT INTO num_exp_add VALUES (6,8,'8496986223.68757431572672621257436634648368772473081887846765003074279255322456188404621827857612554765910678041003765241409149793494330798800'); INSERT INTO num_exp_sub VALUES (6,8,'-8496986223.59370017133658391078540506786813528391482589743854926337571311247664927673026627333807725155622490761003765241409149793494330798800'); INSERT INTO num_exp_mul VALUES (6,8,'398823655.819545574205652791249227663407026876411660299394659390409794761643751582473390322547798567169668246138880832642141417531427935520467563318363116897177899262525720710134129529640376020947774470933902793259531840625444267816319963200'); INSERT INTO num_exp_div VALUES (6,8,'.000000000005523967081937952184172713994498918048454262874017009201501812494019618863622631634736130436187167745347383745890248619882896153083428308074678908731005176810208100004498415662458272149380846809398637385270265351808328466537502823071145089961996689711299405627596294988646826454676198092260759424935699382655736524042353938814268760468122584678267125994645166955751211397353140569987758938572953312303398024147927938612934833827734142292697389251052485981023756760420972614486278837214553818521196182883489483756785207650821722660455451660719560529693418375773124813290305501923899840247103166971466167032437598057958226806335324315214908788839919408525748236713611579486768218564733151121028172253396652755590051310396973181595992981076269789287489208817712754098019817792758730835341151711523474207'); INSERT INTO num_exp_add VALUES (6,9,'54863480.39378734225015137845671346015520435061071252892396685718794832880965812803098645730572474084523997120024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_sub VALUES (6,9,'-54863480.29991319786000907666775218153965190979471954789486608982086888806174552071503445206767644474235809840024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_mul VALUES (6,9,'2575131.137912978352131546639620215541477987701194164886305951830806120142596646541302305984776928560906754259789485960991272272782091464270104432109904222200473616116525297615725803495463468272171161659654385929185160689572943852767523792651123455283534072794326647404332228203001469884016996499768656263775233430922446983838511590562929268821678518640501686017030536100955531423152839988008496919169395159653034847677470665418765966542111749439412'); INSERT INTO num_exp_div VALUES (6,9,'.000000000855524875533453524582534418967571681572635027972658867593464437484123442242521660317156546196609749230372398872487667521984251509483676665788527375343148382604836976332389890799079878151841905152004537926201190193814594954194044560537664560344224646197027029681984683465852110060077865421064400958821808374370779297676624123638191407441015008434084079839721156870032377372497814037418047056438760664237367081226979226606227037631073946209105678283624370820396871058367779887709720661001099338250009251834581804647326512873792849059661525874160414378459696930831877643599421297749483849526695657467708603491876916749718079725746259119898269814551222336219537198318796277931946529242436502235147453584237994498566122973953203597470078105606906752099294162422474758048436539653041606499637623370030079916'); INSERT INTO num_exp_add VALUES (7,0,'-818934540071845742'); INSERT INTO num_exp_sub VALUES (7,0,'-818934540071845742'); INSERT INTO num_exp_mul VALUES (7,0,'0'); INSERT INTO num_exp_div VALUES (7,0,'NaN'); INSERT INTO num_exp_add VALUES (7,1,'-818934540071760498.60459975022373923760152136399214017262844141729040109985386964272131706381326192223266583769046276181472898406504104649192224392653722107164485675679551050629376558940966195135841284978096687306110481009743118940565957556492470398904849289222365256698601073536111216152709126800604695001949246634784573028721762079936564434050796321975774729383704426321489070979168993853338252728216162346796960170352897972568238870481118474064783391570102958474141459619245240874849766946530000977144965'); INSERT INTO num_exp_sub VALUES (7,1,'-818934540071930985.39540024977626076239847863600785982737155858270959890014613035727868293618673807776733416230953723818527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_mul VALUES (7,1,'-69808760806266041400340.70700818693892852138813934414383886494691670042143650609934777814995087699409404201920249076407981012095999320858479644760715204999741683528746097757549835956359129287002171391961763797857794730120426599135099619822532290339000466211195776337667123320942107370731349851576864242697412616810236323676004067839744992733887503405311090677026008324895177587064547630828026123718296429295638934384446325302964896473296829265805737112709269803814942537657996725913938408781715328945194948010970'); INSERT INTO num_exp_div VALUES (7,1,'-9607014551997.140858001442365669993007297071681832468350855627077185145567261170534005832165603932891201648027598773639089125980996652005412450490063683624648655909636499261774535015914730479401090227915382926027949990128880284298688443593909017437720828163877690126019616194376778317148693270900349151496295698078575648169637635898560612738481294674167553369445426793073304518646116539082953755973571046622684332425840412198776081251646424875405772676893185726872613804612566569794177506268399878105117763696990094108960076591684779180089885283939385808214239337829666227427148603057941899878123459708920227867371285837642561064461118016739395972994827327543594846953341750907541716807985738518071480209106185726125017342997283356926976052909493074301401955202616191210810331245427141945840542129607439703255628683506772979'); INSERT INTO num_exp_add VALUES (7,2,'-994877526002807691688882220594983.04353023451866590387054959174736129501310680280823383331007646306243540953499740615246583399296334239109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_sub VALUES (7,2,'994877526002806053819802076903499.04353023451866590387054959174736129501310680280823383331007646306243540953499740615246583399296334239109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_mul VALUES (7,2,'814739569184924399102711674444306584731316176345067.39834031417849342571224916231092924046722938910652929295271097903377854123984307101079073134405782275535446337229706620713104545454319555885847481531722101704765783025789147453570970090'); INSERT INTO num_exp_div VALUES (7,2,'.000000000000000823151110229758332661330617426417726331211894330147399760458555778324097596176117291103184653828305857999638466183347321835058943563347767579219763002258622507889760416640758842509635599414768344140175277742935564567127659688612699366182158030839083982896107176174766408199870924563237827899202849733606842856491701660599599211106794572237923985121475458446997860253437578966578617985764298513928307852082168209458400544457824307270777530312648199364084272310536024283945598340590403612752287693234647719354745060851129534452514828239800716088248915975054881011343555492596002595181046121935660176097475159074973635534016835214952415720717896518544064238656360099884889450237541254761746029507300068198731306211736696956568648033834554273602524147075895460874922913883751452403825099444642503437'); INSERT INTO num_exp_add VALUES (7,3,'-60302029489319384368482818948157603222.2322712404088283093870869198708849258097125725036189625900174440196153781995220721511009855207486224837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (7,3,'60302029489319384366844949868013911738.2322712404088283093870869198708849258097125725036189625900174440196153781995220721511009855207486224837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (7,3,'49383414785234649002982046297226894664526726187218771083.0993243619030008310875293647868815940421844461627295157812843657782639833900543200310573708100000958929315945039020410482966753145208427035917753919085618457760620513481628641658765820294863970581642745379331727722585319163262763708386199720411053619449096019862596221607526610103408936214184850115071874430846697061554769773328338028749631552202705583855831155461651414320570061181212214810086436100771547030013079997847086'); INSERT INTO num_exp_div VALUES (7,3,'.000000000000000000013580546907080371873577430837141172674171921610919544849037647398734065712983603204704663262116138799357430947986241590690589753181299773842880079777640016786921825609617596862828930939366173224366864448436461306602680780407912534492687474933386043505172346330210659476505435994582446405414027199938970759003336829722057241708213838318628292667946636226143164221380503228191376939596663443230082698085439531600756771639601022064620204571458766303985028143400866776954225590745596639602613498355332049777798367675438365442468743270334407716567057368347458892075084694158566383133325959042076573734408841629149903649365079563374278550978052491499304166424686842598833319515705663176855033865872333988551611996194856472662292344160194821687681312501127516922809221030420253714666026321243515830'); INSERT INTO num_exp_add VALUES (7,4,'5329377457009123250369503.24931765987630429629836382184742348353920297283690739124220773955591340709935970062776650204659187764581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (7,4,'-5329379094878203394060987.24931765987630429629836382184742348353920297283690739124220773955591340709935970062776650204659187764581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (7,4,'-4364411947278810125327066890819882483326918.05664098958260550284395870948992407314161088028674246708928421994893923699743452802989464864039994566042797942433140378990308345483670828497915478397481687305406460330009319949623844175096007381662809083363069100235985794575399268709260901964834244796150883807308976949196661411035264619638771824190014274817662519438658481432363824187693821267613212631153175155634316128036152465184903927860719447693468054624663668062006049759837326188252927823612718163916100588143128358998656306593393889422386501730237442526450419990376323903182669190482615734972147533221144682538647497701130447816148459762464395194383090936159579764712919396391813914821973715879062992249315474841639591907249142779103650773383644785606333916967894'); INSERT INTO num_exp_div VALUES (7,4,'-.000000153664179510102140733858340480800294287837601105047285453457000254577644933901525444082336054243749405512900867540483190494113677173628646221933766421338612376123824684592850465460156248403574333545090544920568230979754949827013129083778435107488003838746926270955224758508832133483591156567868631938590248213604979638895901933775098150684618378235712437137852195098700137765601802898366867034641606131280434771339920637353140131159441790904703083143627590062236537714415872864218260252838432414759890832271190606933534662897006726154587341385852258168335058931957995901987808602365467861573344491265289043037273815504867254228957776127752540924854546837197432384563153608878864912196453587628891285275067452280357349897203095502806923463147414086919014592380804424300739713935051357374227246098303140106'); INSERT INTO num_exp_add VALUES (7,5,'-818934540724601372.43456071828048833552593835051449845484289562110789582081210403487973096161149072377955192388469356112505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (7,5,'-818934539419090111.56543928171951166447406164948550154515710437889210417918789596512026903838850927622044807611530643887494456379304996563468607210970486619898336249374975146736655090644822719838495585664994425117350974491367099004404995846913641329458537237789584653041949090121498951516476399288513593944575192159570458664608461677113504914551578443229008454218964701550932948083369656042643364608405637360180021322967144409944099438498649645368196191999692949583952927486593144959284443545794934667002661774373364219852712996869245745722896071593910890197478196462961042627387162830776094709087748993678069776845437889735782063'); INSERT INTO num_exp_mul VALUES (7,5,'534564131989234694540350103.27821462973515555648644772098605028371173048154132108733819196629002548296868548691993248746628993380136454426833349407578676005545111508293942736555269938962058196496152360848131645787941032968937794930046928523006455386861100809286408671908320322523368135203881520526880998279355848280412933152306299256343179622513731096363088094541514890135766460631462465021694553063366717467560655272004461368865264059368514271105464855575429914212085797297268595943955105608543373940035636033207568676745293499106348500559628723682588033431457023964317090780615020801564861497990103549650624438425421690193862533733474254'); INSERT INTO num_exp_div VALUES (7,5,'1254580584.048971438599349046867230181719371038956756285986415773300837165755558702217197735811549684202279755101552533605390208155708695952004683670878589028717509749282693444655857296902117478518511492735290086040573521482737598395369632843374456793385511847676556826348943588519880411018079886373631771830925920986588708409208527042927229627786932908015502292313887561198156623702404977221789649731458241770690830680067801377815840764873662400590343236662968218256211697981048576328148435241545372543075051594952109757428031762469834781538302930957095080167901199455226976113347018972534334210416375400979738414416582588689496706548495076287263281908191770792203069614447622517839588243746755480572371988630084226963919158931419126724681617069720048557166545204944250492282054791996953359013543036918134163144772567093'); INSERT INTO num_exp_add VALUES (7,6,'-818934540071845741.9530629278049288491055193606922237795920035094854496163164602796260436963420239973809758519485590636'); INSERT INTO num_exp_sub VALUES (7,6,'-818934540071845742.0469370721950711508944806393077762204079964905145503836835397203739563036579760026190241480514409364'); INSERT INTO num_exp_mul VALUES (7,6,'-38438389630389612.0042045464692275627184627672063157323631169405883031379129843031477339360597564128205768842448328088'); INSERT INTO num_exp_div VALUES (7,6,'-17447499423661151023.558342555162228919125358089491573318627107322332520978657843895009110781773496490472817700487707134216424855867015781267287628022535529641238372370292374146871103236048507252055787621394728096799222976387108688980537900309311204203302960751747509648304056939321473462375648710590981564101023812800603438271190184064874290215309040519813024962909469701968804925443161094255632624090623433640078421818321246597728308302979223833487133268472455479442002005374793705431817866798804822885690193667521606781156962792120052947767160957903073698536973292205899421787948529970837601521657406211962967291912148632072929662185840265855612193255596825032457033402506154930851214421895488796227471490998190312007513478459049382774782886773158311656817014322925167278223360446454868236479549745612973293185989975394307678926'); INSERT INTO num_exp_add VALUES (7,7,'-1637869080143691484'); INSERT INTO num_exp_sub VALUES (7,7,'0'); INSERT INTO num_exp_mul VALUES (7,7,'670653780922685519356619170643530564'); INSERT INTO num_exp_div VALUES (7,7,'1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); INSERT INTO num_exp_add VALUES (7,8,'-818934531574859518.35936275646834493832011429282408849567717761204690035294074716714939441961175772404289860039233415598996234758590850206505669201200'); INSERT INTO num_exp_sub VALUES (7,8,'-818934548568831965.64063724353165506167988570717591150432282238795309964705925283285060558038824227595710139960766584401003765241409149793494330798800'); INSERT INTO num_exp_mul VALUES (7,8,'-6958475505053954666339703437.48985528725312694198056665033448258303533387675711770743843194274181580881296671866212320171337132096489224277825857521033238709600'); INSERT INTO num_exp_div VALUES (7,8,'-96379412.478435590945480884955616049873645089637121682284625533034225619945532704111492738646389632607594293500930307222576571876059094206480673293295865214240456906965855425738072430281475736130342229749511650392658808510082775031098547507966544723255869156056349218776847523349173551313282283869146710349521487706884633419341568648959204688757523312579312713453540395840470692533267158388401676533369105590789036132185107859069994833345453200014884023709597817280132465224778002071890368479648934317322270613208789859930618055792958996389145963056607200020526949699302565905917600478429628844015684879886549766473809801710003649193772354147104446894109928903223843036925147624639466770660174828940577089095480826473544099693433597812637069287644606693066736302793687011165899362920686114156254982709172925265118077531'); INSERT INTO num_exp_add VALUES (7,9,'-818934540016982261.65314972994491977243776717915257186979728396159058352649559139156429817562698954531329940720620096519975256547379603654362598494779213610069399116912987384006656023443527501447464682173445385303315267086044455246361273561294141518329233754041352632499787199926225490924591851865949646448441825186059741089695009429827829188117479084665641367'); INSERT INTO num_exp_sub VALUES (7,9,'-818934540126709222.34685027005508022756223282084742813020271603840941647350440860843570182437301045468670059279379903480024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_mul VALUES (7,9,'-44929599044588573810654775.83678007633232843418115790847152455559258007804727916986432256198687661496804050903769496933400455947645400628259699874770581538122521805603947464462448454681701547899144129061961394870320463199545502030106801911915987309444301341575451240764927967432593181449618816978119423290767783843864768557371257918447461479570164065303599994081990686'); INSERT INTO num_exp_div VALUES (7,9,'-14926769772.797708334489652004325241753714626257641081061212878627972973992233480868793527325656854681817156284203427388055525855608883067129036717726368707982450450575794623567027457808927082390474261155500697096284790656757163047499531247323702909360444831707029353441147768321257650234732286165724178549576948957405037843360446785505536809409054071975214796532504678683693402401018726571884721963641317944453797513145055081061680091585467186975354801535734149952115333241283186621720677488342266420359417174224757781125498130120775969091933838082305123652811689513300403051544682523761263183781206840940347226802620226164265210810994106136738030959199259066517106713585343004140573604437146025585149934286364795122716971496775012412420105368351774715982565252533025207453326002101655121126631180162560463548157187175671'); INSERT INTO num_exp_add VALUES (8,0,'8496986223.64063724353165506167988570717591150432282238795309964705925283285060558038824227595710139960766584401003765241409149793494330798800'); INSERT INTO num_exp_sub VALUES (8,0,'8496986223.64063724353165506167988570717591150432282238795309964705925283285060558038824227595710139960766584401003765241409149793494330798800'); INSERT INTO num_exp_mul VALUES (8,0,'0'); INSERT INTO num_exp_div VALUES (8,0,'NaN'); INSERT INTO num_exp_add VALUES (8,1,'8497071467.03603749330791582407836434318377133169438097066269854720538319012928851657498035372443556191720308219530866834905045144302106406146277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_sub VALUES (8,1,'8496900980.24523699375539429928140707116805167695126380524350074691312247557192264420150419818976723729812860582476663647913254442686555191453722107164485675679551050629376558940966195135841284978096687306110481009743118940565957556492470398904849289222365256698601073536111216152709126800604695001949246634784573028721762079936564434050796321975774729383704426321489070979168993853338252728216162346796960170352897972568238870481118474064783391570102958474141459619245240874849766946530000977144965'); INSERT INTO num_exp_mul VALUES (8,1,'724311956372274.0135050255361637906710330203036651743488213007179039756514944640108625580172737414192938789413338554327986697518463087452612658955180411327002900979574347739956600177846996063741787205122007268468674386396156638261992679442768654367111433834151087792255469957061758837789341439211010331332174981459471333376067541234901538285101103690622656631026001337239036711179989456674399137008584021283568040818388709554256523118702728176420022080138548890713013682480239784198421500241995499841675772793497485550923152267616622892846304530712344886979674416990935007952941652591352603797627920865960622077762568060903908151958000'); INSERT INTO num_exp_div VALUES (8,1,'99679.115123747637190903598543851248555278745675862923884476564848911494649941770503156134872464666625927195645517181131678518619856156844072856993813601495176097972982587061507650426363887871820112714099226501603733968262566093655417466145183587899155614471697804006772915054739361437054029183182533671508695646413074668188590846200362324428338974890534273352188276373478524543505805545661569395314989170104140776362043880099775594658817242753124957385625811310332354760117110779649164022618274859298031549851269619167173746259018497289174255201452265070501056913033329291819570027877856677145579673495987354805150868813877928857472561883332547900866904764950837506993759536410161752469488392566682723027340638271076406246129989851281210810196699482980833204884400423019400653089825859983062096326294783573417554749'); INSERT INTO num_exp_add VALUES (8,2,'-994877526002806872754333651763017.40289299098701084219066388457144979069028441485513418625082363021182982914675513019536443438529749838106171095037135009526312783302868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_sub VALUES (8,2,'994877526002806872754350645735464.68416747805032096555043529892327279933592919076133348036932929591304098992323968210956723360062918640113701577855434596514974380902868247857009494139535009572740621288230740389545481395'); INSERT INTO num_exp_mul VALUES (8,2,'-8453460632655529853033389979024265783461224.3195241893307807116624750282852146303290708492834695194274289713076935297734670940696121761483641291930931061232942894577813178566088927221374036301485916497770984757492912292002695944367308880163698595015497307574177176409203214324418237020500352652934909632442547242092296504047310806151851207329042221920888326000'); INSERT INTO num_exp_div VALUES (8,2,'-.000000000000000000000008540735921314463871578184793632135730756619558669911183806487803411545406462244216408739432325839683804021466133071768612386706692296158696852363349481716813410857655324486448455846562309041306880675446880859847445987588059144788756984750993583865748280824370754934966494724951583311563735533173023858438364336214213295786266815116844775733072416507474834701984381586060478606371028156925222726225495235702395502085206072985373035972506738983640539009567237336002073370431753469632428303255926718930619221521257726366850472572830063284204851204189447233044832163423057501488364913539948261528280564870049935369825245920984413480757133585498984374354957754078525161296201228031555280486615145365039415418251448980923331334883673792135893857917681235883506783408111446970710546686739582471'); INSERT INTO num_exp_add VALUES (8,3,'-60302029489319384367663884399588771256.5916339968771732477072012126949734214868901845505193155307646111690097978112797961939995859130827784737422228762767014427842766445950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (8,3,'60302029489319384367663884416582743703.8729084839404833710669726270467964301325349604567186096492702768702209585877643481082023851284144664938175277044596973126708926205950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (8,3,'-512385513828318260570283740065493064477880918352.732624553690077857674083796435724202494963885926573907185100543184828131859183999195040110586155435203949963570735841632689374488877298209082579317039061893012560130258753218955057387206477423088065663401594359617882154814262843273526859406265633827109554791772242178864873774889091687515990672487380368975556580539271333144212685871370972163560839446696514092637412587953506052848750866803569213269271165856310101244342151576488190595936869490659700946174362872797854591188391982770203203644172999264143929484089237665313698600170041324566984832357000400'); INSERT INTO num_exp_div VALUES (8,3,'-.000000000000000000000000000140907135225782279761112255989433531718277338909398600029580768021365259747075253760824424092983497958717844671162530550507041138147836569244869107757945370200122955794509365120853536859837243314494576053441804831018954867623755033888264275704547752628348151132333655667171970175829826792355986148522268067032057293494927558322394395160508723637192234110428953945018965078022622950949911124494740703606109543716688008516750321047603009424529696862953094999450658951089435460411028678817795100630449046993274191915359520936265372754315076684798942557329584282177053819106884196674660057281227248874819417305259132106690385871316407455034281900110779740008476645291647094776093567400422266906817555937149628005629880142615126571231411138926043531449659320501743591992888328328980526602'); INSERT INTO num_exp_add VALUES (8,4,'5329378275943671819201468.88995490340795935797824952902333498786202536079000703830146057240651898748760197658486790165425772165585380839129948178510273188565692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (8,4,'-5329378275943654825229021.60868041634464923461847811467151197921638058488380774418295490670530782671111742467066510243892603363577850356311648591521611590965692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (8,4,'45283653791262997781451381354094822.762732909505051438036873220502792213670540454778361182993875916509061144859281577740137081988678361247725064336120451090222456518107029158304937620179032477664627949959143233370320432203497828243297406462513350790251761540074946469824444452248386782451723637769289822576372357189700319768797708375563651655860093365309717823602754924352327588945034832436331911584742966378275504545736896430718939807674966738116698454215555860047859161126694019895490767779791933882712567492115664113775047192011252893773389940988533801360010782816196288710063568554147458866942816721046004257953642508395867837127678980002737669139369781058046396738606563716339660654364541530532834806205571191828994250708412638796240377704994928921528330863683630622922959130920715261879547446054261914770022377059156125037157979236658010950'); INSERT INTO num_exp_div VALUES (8,4,'.000000000000001594367257057971052149628499448029056279649281098852958322409409919964709324200796473211884339143791758566019217634542932882694487712398244322522748736692741288668885362384266615527166964187404128216235057387796054457728789109537338988453837993084016408244895452291151218602815057669592284587317035387004942691671916981967449109983992675125005085762403043329820872839739877674121174083273716295673230993049263574856197011389828478636779342320299895806297835595427859271617831720398457416685435560152182883615601663820189195644140652141180949257192740185075408019971747810015931542757445763460947106918998459997631117642552273815713467150465548031203738878873114842844016176922502916339025283749846225376341878386377192605865913018132981323065698049618379727531925408677611856682983907951667054819'); INSERT INTO num_exp_add VALUES (8,5,'7844230593.20607652525116672615394735666141304947992676684520382624714879797087461877675155217754947572297228288498221620714146356962938009770486619898336249374975146736655090644822719838495585664994425117350974491367099004404995846913641329458537237789584653041949090121498951516476399288513593944575192159570458664608461677113504914551578443229008454218964701550932948083369656042643364608405637360180021322967144409944099438498649645368196191999692949583952927486593144959284443545794934667002661774373364219852712996869245745722896071593910890197478196462961042627387162830776094709087748993678069776845437889735782063'); INSERT INTO num_exp_sub VALUES (8,5,'9149741854.07519796181214339720582405769040995916571800906099546787135686773033654199973299973665332349235940513509308862104153230025723587829513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_mul VALUES (8,5,'-5546455599206321494.0676583421119904300307105296377723816472192007866147764761501865875232824814135783697976183493106885436876081315217834621720906478074798596116645640251460842350553806256223963023430631066024389364515688765194373161385579258482225808660340732705687558150699172147896486727530192499184101617379930846663835628510376484675411350654979679181852179924386290069790336316958202582966248703889464308649631486542724072047294216362186036638115240070658004553260251510288423749333873893917690832829128021808383128393431810674177390352413548658782609064839524756041501835115152819802758773711821322162752064589750295542985780512921839490040396053737870038534216948323935020460307350020911362024271167085905714873548388570602799432705061561572854498075600'); INSERT INTO num_exp_div VALUES (8,5,'-13.017101389051085341042057308965769356145255575582875626848796382322826525772114256699384710400140437710569924703769685567402446691691210934185000959063158239023412379691360587119206695513775971704926722817528818197919265145207032750407924774510773427697188520818450702875142190949766251178733262143962213111236591970766836685919581025629742334704854852196126735685421250263035895756028805974153787560164935038227108975229771590754808331856162035119882347418116049174638416621093907738608991987582465865527947015457540650512339263071898410531735438556948115098562123055444965056347091625748703503220861221718449714020622377233272042277814766996198081939221253025243417993701684007826177845003391944496774674489538520354606358872276671998045196738090133576377830721671972381371985771591052597345572374064920279182'); INSERT INTO num_exp_add VALUES (8,6,'8496986223.68757431572672621257436634648368772473081887846765003074279255322456188404621827857612554765910678041003765241409149793494330798800'); INSERT INTO num_exp_sub VALUES (8,6,'8496986223.59370017133658391078540506786813528391482589743854926337571311247664927673026627333807725155622490761003765241409149793494330798800'); INSERT INTO num_exp_mul VALUES (8,6,'398823655.819545574205652791249227663407026876411660299394659390409794761643751582473390322547798567169668246138880832642141417531427935520467563318363116897177899262525720710134129529640376020947774470933902793259531840625444267816319963200'); INSERT INTO num_exp_div VALUES (8,6,'181029319177.110996740664566780784253502559986936959009611748146099327460471609593148344991059106574612143724330935988823134137686051475120980257829276671900076859337187540608483895641504622910361858962883971613675309676443079313179200981488761707281247447120551917205792352229666049191991270809865110506639390610910481490688182068719005593641339338678014189749279508731647492051879768743158839680867283217578754666643688259810863605002821607490100820241093473083445658378988069593782353275713240897038366242558466047071334385431080003439842348547427066389352198560236731403235927478177780757802759046212921140424771887928786549573201311120885052685761195784207710933764480136690216943336587118385525047554334029388869436622866247240903231799829259264158812528305210833683370536416861544931420820452512390255774498188962903'); INSERT INTO num_exp_add VALUES (8,7,'-818934531574859518.35936275646834493832011429282408849567717761204690035294074716714939441961175772404289860039233415598996234758590850206505669201200'); INSERT INTO num_exp_sub VALUES (8,7,'818934548568831965.64063724353165506167988570717591150432282238795309964705925283285060558038824227595710139960766584401003765241409149793494330798800'); INSERT INTO num_exp_mul VALUES (8,7,'-6958475505053954666339703437.48985528725312694198056665033448258303533387675711770743843194274181580881296671866212320171337132096489224277825857521033238709600'); INSERT INTO num_exp_div VALUES (8,7,'-.000000010375659845651632013446652385870617923988120764298690164486716047614260682259722116360931978511176121353975789418625836899338225571166376573732227571704071000348895791547943896682585450808398324252224265156214259224488248639550967292466343168350213394398101712526534464002532408445204630441167137710565437434313424987517531891145368203998329086865151248833625645567863740298397742783405267970015165358620026813812552194344790169289440822038223606218360105618852154152168496637886434061050281055613760360200323363465925493033734895631921307644481639236601187225135325401868178006133838932915485272554505684060229409404902185944047523033315868230944723282246159741659387362889777495094736963530708159604929268812778894177095572578862150793098548829744006499229853198046828954650334595737117597239208825268'); INSERT INTO num_exp_add VALUES (8,8,'16993972447.28127448706331012335977141435182300864564477590619929411850566570121116077648455191420279921533168802007530482818299586988661597600'); INSERT INTO num_exp_sub VALUES (8,8,'0'); INSERT INTO num_exp_mul VALUES (8,8,'72198774884738777393.8687539247642452953425155400068591498151280875559609979248583367700231031634872342122563819478919600402159024059794279536786611373504966204744811722007869415559012475160471227957857756325962941799428857291371597146319816910515366298862558849452235442246081440000'); INSERT INTO num_exp_div VALUES (8,8,'1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); INSERT INTO num_exp_add VALUES (8,9,'8551849703.98748751358673528924211852802333963452553842636251612056366144128630740476125273064380199240146487881028508694029546139131732304020786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_sub VALUES (8,9,'8442122743.29378697347657483411765288632848337412010634954368317355484422441490375601523182127040080681386680920979021788788753447856929293579213610069399116912987384006656023443527501447464682173445385303315267086044455246361273561294141518329233754041352632499787199926225490924591851865949646448441825186059741089695009429827829188117479084665641367'); INSERT INTO num_exp_mul VALUES (8,9,'466174236688165594.9218054325256670866060556227711696100465581464881295978997280335378678072434776702952026828137140986670189756965420183565968027969700090735690246176791371115610886533930223141650377886909408268207750238603105232560663571044993507074695683027062426288270199495225881785499139012931143826099668999261931834700467395442768201666740663642498098541516326470052372008385656719236306238735524802875519713512894448940917708118676095378518264553310312628830009314653641136566040400'); INSERT INTO num_exp_div VALUES (8,9,'154.875085756903716715488911525453064308758123952566428258639786597308109810869086867746263482721081985848551254298524280231489145092826397833394044637104667137816928932471315095067524966582810436282901424423215992139000153713476369887383242289102867530775908269805285313842050961754114751975054515055089553180717444020378611767296609130477264722612784088270193199394531972594028420402254831778715196248487757266330454269044609134602570688339750190391651801546906342796660819535014295618246236706572780627362908121159003488810140236665846928586992082180006454824311789091323774002510945263351862712964422865623934112293184149374573706760114682326698881257123280119140924775171374360283137569618025005229268057970275164869735173660958715166148344076027212231446680947914004346760896298312286730627916684448923824769'); INSERT INTO num_exp_add VALUES (9,0,'54863480.34685027005508022756223282084742813020271603840941647350440860843570182437301045468670059279379903480024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_sub VALUES (9,0,'54863480.34685027005508022756223282084742813020271603840941647350440860843570182437301045468670059279379903480024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_mul VALUES (9,0,'0'); INSERT INTO num_exp_div VALUES (9,0,'NaN'); INSERT INTO num_exp_add VALUES (9,1,'54948723.74225051983134098996071145685528795757427462111901537365053896571438476055974853245403475510333627298551845046116291696445177112567064282766115207407461565363967417615506303416694032848457927390574251904212425813072768882213388082765916956736282110801611726537663292922699021333445658549608928179155685881583228490235606377831724593358583903616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_exp_sub VALUES (9,1,'54778236.95145002027881946516375418483956830283115745569981757335827825115701888818627237691936643048426179661497641859124500994829625897874508497095086558766563666622720535497438693688376602804651302002795213923698663694204683995198328880575615535181012624198813873609885725228117274934655048553507421448724831939026752650108735245933317237310133362383704426321489070979168993853338252728216162346796960170352897972568238870481118474064783391570102958474141459619245240874849766946530000977144965'); INSERT INTO num_exp_mul VALUES (9,1,'4676749348240.390309875431213992853550297086049749814750492488995108783145961719774217441193547534210468967573344456866203963659951312519988497979489304488948342258375915152429008993288817366720647491166024151209542534474867042837694499222928509320280684557676243780452100132238968233413333851595648146954975713386711764268506890884764704949969602122157394714663532141060559896359465918874990769222345665160127552795532197771168442486088776803398878354288847069602460071745966589164282641033852314335279121191855487126430176047553895892632834940595958394834437871886013513058514896870683979585091413977173250824451205330441299000850618134248917380244749589254309567551846327349592529960432446947239714236828401206843011440433362544797025114476612133622499094287321570559088587999417440664282418005102546343020409520421747216'); INSERT INTO num_exp_div VALUES (9,1,'643.609749344751131516972294140174556703217311736700045690413622699888869645595256683013323517984528456698303984909359393772036036540901870537096836621035845014213031549051156299974682317824766457362427063305495772666640279328909129870227828460705733995380145417663304348663705694070309475835826101153850359826502235923289787750107778906593010060115662191620280031872002110849782776325630424918493602259707267214006217268630948545349980430128422952869610116216278256812581821942763705098526140427280008360043829906543029486315209818099697988089748683904695870401517598840185535891464842870210715421728852789815860153472208176465166954851895457846723102438114697692610933532992841803219018495137378534010155991355251803548866919409031477821173935696065078362044927492034445482457329200246282082707380974745411383781'); INSERT INTO num_exp_add VALUES (9,2,'-994877526002806872754342093885760.69667996446358567630831677089993316481039076439881735980566785462673358516198695146576524119916430759085192883825888457383242076882081857926408611052522393579396644731758241837010163568445385303315267086044455246361273561294141518329233754041352632499787199926225490924591851865949646448441825186059741089695009429827829188117479084665641367'); INSERT INTO num_exp_sub VALUES (9,2,'994877526002806872754342203612721.39038050457374613143278241259478942521582284121765030681448507149813723390800786083916642678676237719134679789066681148658045087323654637787610377226547625566084597844703238942080799221554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_mul VALUES (9,2,'-54582443595378013373024060492546032003692.4875677735896411267274323339692558458420972958075073392126734000341372096298914875892612108329218081214550050039133117695428196702128258481789017059073444323729583900855712795086447886053552786449313809589992185978097430132940882612817775035217244553616977182049775786664446683332098226841743818600819221587510039430478859412452506872131851471967577741190323481953867845129745440745526578327709351120432530702446916035797432129052518980799424635406993848916727957825620638983706180841278402925286540375225365057191075559133035'); INSERT INTO num_exp_div VALUES (9,2,'-.000000000000000000000000055145964114074763360265614481666934002579974728749248345352023099030383962250681574081874554842623852433135871821620640200582985140388676650602814646133317791813938390695683843848260103199745295436998313216878337673674660966362155480524935736646623766057029148471463569162153009963312016563281545776175277904913263614668092319707343286073000287493274965714031678784835459999763925833141049057636632430975424499618419962303087175237320046300285962065818926167792812657620724550768858763098967149546312995222223400007044549870620849992226072041407997925405957501929449911416474388622107825120486594723448780503829317691081601820425151593487431389373265285594626753418140874747955925763163132984655078996173911578832035721963554569605730262976354029623260224710106409129114204296314733036'); INSERT INTO num_exp_add VALUES (9,3,'-60302029489319384367663884408030893999.8854209703537480818248540990234567956069965340942024890856088355839135538265116174644003927269495876835324407641642359213535695803871472434650475144516723617632059130297610134243891145006222068960999879308472500422640481972089756410157246974765071949782242392661524488959954348903412713930092273629207697480131360047867213863018127928853922173643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_sub VALUES (9,3,'60302029489319384367663884408140620960.5791215104639085369493197407183130560124286109130354360944260524553172025725325268378015783145476572840273098165721628341015996848028750420770651761919246816300854441592109844750954710317145008297946462099581451150385769713261452744310496166494545449824802407416426304041583975713483424241727236417259479541129474082301376239522310995725648773643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_exp_mul VALUES (9,3,'-3308379209762459471107480259839508279070920437.883503980178028214343751083865562028455061662673132221930429904398963590401793045470444301883103141901787466923883803951815572606105617157736442670792467625964359169270739534412932791178258858918086886061702512427989129732248215348301444245772127142869263635282888226326427510486246184233225114523636171202034558843515894542952126988613018789833835507734620046994907453602573865012044120483116345444810078666601100257620969379968264504287700045822481492526688635364586344704730579892342786173395802035361824932075736340405960099542224953439044947229246847140957298841482874444906129049023002897135347878048572628834749795298712449864571996898774444932083319581439741625832405434317985988163261591679157437224404970927012111196724239860528859217322132733404472897289'); INSERT INTO num_exp_div VALUES (9,3,'-.000000000000000000000000000000909811507365065002714756487495210579371808512079908127938523896001746219475805196061435010714649189975968123072269549018826343830061696154665503565341929634172463095299662727352635590451263034658630449260378893723785917860125051787451512267088404686342938118993621396641623525252649748977992770709930435013456855344203854749977414354164157192885125263071636468941596567220391082793700307461350484216679632552883058303710297475827456761138832914743429330069022439380297715971317819244718196187172770061156794130040674050533617155253444764036426045091327368023602807193742585178432544430741520636125146531502042579276206322507516332917325631822606079220413965396706334639331097621824106950192993127113903265025719013680733760540930122186345919977470628988674677630636632053583144327'); INSERT INTO num_exp_add VALUES (9,4,'5329378275943663377078725.59616792993138452386059664269485161374191901124632386474661634799161523147237015531446709484039091244606359050341194730653343894986479159670583937529516163204904273806158788218327396375034882788180783796976731912141525319602448709213495905899041406302673881364465504945113279286939663215197485367850132991968081639290297033476859158044889351836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_sub VALUES (9,4,'-5329378275943663267351764.90246738982122406873613100099999535333648693442749091773779913112021158272634924594106590925279284284556872145100402039378540884544906379809382171355490931218216320693213791113256760721925653394811317969065642404864072442190731745871963413981746671302248281216916486794296983018838956112081135739969615171358100498945955409711817327376172085836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_exp_mul VALUES (9,4,'292388240303165948041827159734686.255558469787242316676287235194652580157149226950109397295920730296960145548003120827363226435916209781396711693581454960342091452830648929118261388933297036933167543189308061917640517578583521401267417187854611829815212778183983326568586118831109538377828156118900313778053576483381085207892754728937946691892849474364477434665960112125254104966566712906532318984871145605839506991591027939136026602051635433295687547552796828217859648186757719639965988287173297286034098497871707197092627676226053609131138590878743560287292934815277894463305001278326023708395571840850120055316276256138004565442099731931051413153564744766098053176049414330146267604802971221161572130161432525297614616942172815141372973870720928125699420370428856022295499447755488148545048400795053604349570217878099721865670458104653570360'); INSERT INTO num_exp_div VALUES (9,4,'.000000000000000010294536718194523982241053267404812827031741197656209184880073175960433631103885281961037127283726462743623757855378209281373475473018922090781553213750339001555832360656399849031527008437303091226051008068950896796359518673740801770866360774945096397034708173365378527676779736929035450380795854046109380272505550244458858231227568118355064007614608452292270378691774826689216790090661497154742954386244856792006376222923780801296832612827123778915598893970651480451509706836620045721191411824060983487064555397842027454385628620582036592315345973096405447742002746762099231557054678593446667904250189208490698468539396733604833688133512716508825505666644390119877423938820483653319376926639295680552194966870285838815705038244628263602997511842285889300557188773128635554621378148419364876651'); INSERT INTO num_exp_add VALUES (9,5,'-597892150.08771044822540810796370552966707032464017958269847934730769542644402913723848026909285133109089452632480800168074607090893991283808726990171062867538012237270000932798704781608969096508450960185964292594677356241956277714380500188870696516251767979457838109804726539408115452577436052503866633026489282425086547752714324273565900641436632912781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_sub VALUES (9,5,'707619110.78141098833556856308817117136192658504561165951731229431651264331543278598450117846625251667849259592530287073315399782168794294250299770032264633712037469256688885911649778714039732161560189579333758422588445749233730591792217152212229008169062714458263709952275557558931748845536759606982982654369800245696528893058665897330942472105350178781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_exp_mul VALUES (9,5,'-35812445701642379.972368737320206275515144213236752803936806738624588812089615098329765811617509505790110909629109400553415312470540217508070421816878544125783329593128638405659896184248784794258084116406472768709113030915308410565617764394827427154923321461158387012978726512246146545834669665093228316853342805604075936530371665576147966721599968786161939347726656168798065647411457701453987215491345496003650288850096338695703984042549594979897253521041581573388369367579323607093487743440894765114619634001789457486407909224339065748496715380572175183589195611952939575073075140094901024063428239223964510824958346570603142906309198033196987949067156046076497974760641964978711558209708743776024313916111738542765749928287600981397080809041007714387564206594515733287925008053261840295560398311905155157989225181164097547541'); INSERT INTO num_exp_div VALUES (9,5,'-.084049034261605466896663277055600903951276881294745183935726262038673990196778002490449355450474227878560465916800470848046625257516764244432096856845087412397406701521972651300484716852035267197801389708234913163750232707469240634303111868882057393120649919262424619226282082184091177505826009374043368623853156698509808569378758387708910629731005691079770517679511879694426434724918004419953301426679939010592502325130576915399009756468717124460489039474155719834555522581553817856854607844133431854471292027873672356863673617090151801474016666978499651970627896504709551656249007718965259502928591648533670568214972768900993459927860068104745163979267716597907297073374689384723943955361288974065531322408839914599555769945298758102515352082822617428033648130099822033393662643586331479103933840387663729387'); INSERT INTO num_exp_add VALUES (9,6,'54863480.39378734225015137845671346015520435061071252892396685718794832880965812803098645730572474084523997120024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_sub VALUES (9,6,'54863480.29991319786000907666775218153965190979471954789486608982086888806174552071503445206767644474235809840024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_mul VALUES (9,6,'2575131.137912978352131546639620215541477987701194164886305951830806120142596646541302305984776928560906754259789485960991272272782091464270104432109904222200473616116525297615725803495463468272171161659654385929185160689572943852767523792651123455283534072794326647404332228203001469884016996499768656263775233430922446983838511590562929268821678518640501686017030536100955531423152839988008496919169395159653034847677470665418765966542111749439412'); INSERT INTO num_exp_div VALUES (9,6,'1168873084.346566233232746391559830634361431940000227460271861554316197556566224118756340501278103405856646766537018954185964066240457859194626558143313125824412559635129130086906976028635444060218797992547370132082916380788496584864016645155338102476357490305222392452114945853620686975383081427840791892729407194179236897452655907829255937027286698570784397487382242990326347080472574546312522326038419753951437799831430690304084087684303035538181812523230890783372773953961677974396907303758903934808035747944477277528267001070234880092255363221274303820343225415479126819937070570562654065195009839593938440374000473302075568746771126391307584779249330981594640387657042725725493800876630516005713789705652827210295338592985225924959199657729900181287069808881130884115897407246324220524401243575641227725030779990490'); INSERT INTO num_exp_add VALUES (9,7,'-818934540016982261.65314972994491977243776717915257186979728396159058352649559139156429817562698954531329940720620096519975256547379603654362598494779213610069399116912987384006656023443527501447464682173445385303315267086044455246361273561294141518329233754041352632499787199926225490924591851865949646448441825186059741089695009429827829188117479084665641367'); INSERT INTO num_exp_sub VALUES (9,7,'818934540126709222.34685027005508022756223282084742813020271603840941647350440860843570182437301045468670059279379903480024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_mul VALUES (9,7,'-44929599044588573810654775.83678007633232843418115790847152455559258007804727916986432256198687661496804050903769496933400455947645400628259699874770581538122521805603947464462448454681701547899144129061961394870320463199545502030106801911915987309444301341575451240764927967432593181449618816978119423290767783843864768557371257918447461479570164065303599994081990686'); INSERT INTO num_exp_div VALUES (9,7,'-.000000000066993731076524206362744068866774567920404984046399050881532938231826344009126898802592302273719505485084766150904380671495128604515800845609713368334606489445184535043833069145643553083555507533900955661105251251918425885537513359541698046533092111969478225528665278023069818968531644884466229545497943710817187632203193468836772459599856856811131193744272314519908999458320275710240994009061040198159739169960258978462113813370513611735006229733329565083659159456172425715216475781507996483885669437855000029758892126410922067202159414570164537031153818197618428471046051340835826664787585016361564969663413176434498159140395476980277574789931364078570781760777773379636490084338326576889857824344578398580499610233575273027387501809967324874264742269453420400624883982643066864175851881870402856698'); INSERT INTO num_exp_add VALUES (9,8,'8551849703.98748751358673528924211852802333963452553842636251612056366144128630740476125273064380199240146487881028508694029546139131732304020786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); INSERT INTO num_exp_sub VALUES (9,8,'-8442122743.29378697347657483411765288632848337412010634954368317355484422441490375601523182127040080681386680920979021788788753447856929293579213610069399116912987384006656023443527501447464682173445385303315267086044455246361273561294141518329233754041352632499787199926225490924591851865949646448441825186059741089695009429827829188117479084665641367'); INSERT INTO num_exp_mul VALUES (9,8,'466174236688165594.9218054325256670866060556227711696100465581464881295978997280335378678072434776702952026828137140986670189756965420183565968027969700090735690246176791371115610886533930223141650377886909408268207750238603105232560663571044993507074695683027062426288270199495225881785499139012931143826099668999261931834700467395442768201666740663642498098541516326470052372008385656719236306238735524802875519713512894448940917708118676095378518264553310312628830009314653641136566040400'); INSERT INTO num_exp_div VALUES (9,8,'.006456816440893715330247418029019114736889626790871612141686117271826070935285769018710680035004320626745647926106882508048159628931624522666638442625219959259156539178378186912871506893482633695438850964052285542425753626455183282159259999492971992739484319464700978750304962671213318202670228197968646486740006148091321740497272644910882302412140576608739962605210964504469426861972705740810533465451230811358870068391007718532021526225893542801514255726272411690175555142385382688220121052891017808391607717500701760375927811435030512071347521837090721052128992926357375527600337655573639413811262412492632491693179011503973930804928749370652038245414768103001067902012962988384812280453070895781287237746786414435546976395632454474312533482077585837153357017362048554313154580576238549196250793055676215164'); INSERT INTO num_exp_add VALUES (9,9,'109726960.69370054011016045512446564169485626040543207681883294700881721687140364874602090937340118558759806960049486905240792691274803010441572779861201766174025231986687953112944997105070635653109229393369465827911089507277452877411716963341532491917294735000425600147549018150816296268100707103116349627880517820609981140344341623765041830668717266'); INSERT INTO num_exp_sub VALUES (9,9,'0'); INSERT INTO num_exp_mul VALUES (9,9,'3010001475769225.8286280957637941018500905354415197182850820227163907782811814730309044010416886791014702373809932926301368137684091094408663914110947072451332976891128659038142954192986392936981664792370678656287232795203974766040821110221158579481177539669363513848425151485663431478439528936592701070340012569297177488556353760756495238304538439278682066056721729656193616571456456325016960870401748115848423105783116854283646624807603476682295234280408938557209608025246638166902335016025467565869375885610813662767004038102486303756741615124814580306266901273803721191779461890468156043551004644728343579032524687612403663816107770451694666844862368101122025340182510019516924578414085461628689'); INSERT INTO num_exp_div VALUES (9,9,'1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'); COMMIT TRANSACTION; BEGIN TRANSACTION; INSERT INTO num_exp_sqrt VALUES (0,'0'); INSERT INTO num_exp_sqrt VALUES (1,'291.964716019333021494947753821238960905461614737525349376826064492714634914263808902604580614735501799528494357560837535773816469841426747889103714048646989532842972129124080559131220979335403729022278994440514872845756198274805589586120535745968205107562348427941379641465378272611453955517402598409789621997041856848783989993820946766177453801729783316269310186191833995557234577548740940419224137195404391193633808203715191863638616433190672511651125299379882126530500870287424768024674231651229908224729856278167033444719242144302972892419034855417126978468296581589282861879645409909873113678361180607775255758820910366926076380306290306477790931129670172989289536405788838857428768869345763784112862591549008321546447442552533919976570125718481191724503352619626562352280522949665158335559389298720990302071'); INSERT INTO num_exp_sqrt VALUES (2,'31541679188064906.712574384704440356216787857626740375004266523720148374188511622980520374202725176835435173058936870163875556102907654264048353814040480579464700545975346621546520503928314632418705230212623378642743044255181848913683862360044189531298446109955034944189751302497670367665492719604026161836224535961347218522748523360100432275693829501972749859329753224444694962089604095212784768854310289429208671271394086829270986183171968944659703708706544668326267327938226750760690620258967209626420981505237183055363540806281098871221581265173394406715458619627534396065960117454160969749739483126059760636526242783235685190739315590041294766649891987044641492234243404608847939002062827210734973778130441825067858641461599799772535304379732674727995848518807202053316225824685704785148921785964036119338754973714515974054'); INSERT INTO num_exp_sqrt VALUES (3,'7765438138915239878.949520541017683429203286303188179443533225547096446554008374834292278237558244698868300666061834105683999048386497322007336816482648302911579331582895326423063492240235074387242190187374869842856897538718280497895072291181675294000739548676781615025944675912072664211455701112700937190832332966000160156597821149428032612782336278939437593991008833233156511435294360065004167893309428565243314846456225604669764879344135321428948841659419438769652686215993544390780212859309497190065178705035652106614050448518931820975038314187040226298661787490226917902356569717171481159691409131778764973037046501816919243659681416263730519167614043077472097520207347950292377914586524327206547377189493301153212000966249655331053184913579513686655963686155890934436604123384536027235444923674128269748280097789270784333442'); INSERT INTO num_exp_sqrt VALUES (4,'2308544622905.016172868282330339228589083058636874526727829838244942341440716909466939214393597311710652963849541394758298277969240038668406494621950956862959196896847352631445328917063551082418729435554972200530109505384839391233286173517804321019323644218483570886304028175359854335870835404627608254205407525763332087823548640923282031978903399118139052814618531713327991857575390136755426466065839913887477577516426991104516201265995293600539957187007068885368699949673989051443005684755994465547159213587471972139403333249259808344536605314911144950465968669770276463111776581675944967401948957460097365849699783091843609965345747287667911324039374314413430490112443463386381631812537639503425989372084906324702158112088898424705684574998783112519152403201231176840068666882123684602080460378627639651465436618032671756'); INSERT INTO num_exp_sqrt VALUES (5,'25549.082770905117529972076915050747181125832857399138345044265535151111965091602789684342996759657333588444489085160336703294705499665424408218434077722506748278242942379566431768762487954917389137120540138359870652558814224523699917122023018717544160579704907452934297025088008618627873220397030397424422097405152321366495319708580932627092620533785271831833326130796638935296720064431288560292191928489034307645738331451165431755179025359993690642194334018457793169983249853388987495489562746304107188105521296156525984787815685365255240654972150342496329030279439124533240114879332406941960563154881888172285475336782757262639979527682925214971861707635327995621436598536743180180978457735632181738067997521785965451385630326464388080990200265186437768409003553910194212076755448477164192901658547251079126833187'); INSERT INTO num_exp_sqrt VALUES (6,'.216649653115510782473161631235601739254284877523828136703593069337209747459679979369185882839688430004369697316986054374456779366220242645866798278985273820408495361607183119980716020227424205519727777568954933592987351750339481522149106749713967143685591960510946511796062486795368200503801097611436787402191532618456991115230272084771674098613479989808680789347124789253499967359190605681912854639520917409710307182238065185749856554472717209097115325999946728168357936779767099041518574001682560265549916593333117469681763348860131760281253987626822958726920016922608371657319505153308390495179319529587670415367205193280809809356733443291197315823747505896510820272670040485083775482983378341120809542502350385555577946098824446199419354197416933858522419312733314383889554606932774046771497129486979593226'); INSERT INTO num_exp_sqrt VALUES (7,'904950020.759072496304165474991957396337281699986101765045213964054286624338102141970514306010139529492299343393832200631760194440206005974547202512275476562767685193838576516154915404389465528270010938533075930081897392863141132529694804621418663424569202655893682412466871297412964570322984865326770090075582481194532433411398133265643849129084449161396724635797324126396071308557057830046688990212282866035593809633839882468628249964862932050189148498591642162462777480125024786829078066012617362076651920045684345679767223337287825546294839320770903419463644110383560050404456170063805115223954191445548226706113970164823214416171441655706141596091717118495955441099867737827763335880891937222647408575142200256804313345924443344596462585960919126827045197885802122062165934504665811115031150357820196176799560314653'); INSERT INTO num_exp_sqrt VALUES (8,'92179.098626752893864900181023972781406074846653380680747862421481598042923358730531575438403865501429843141967819802251116774924400485954931201776260931315313253827346015775662310076094882239170765060649024538403329505426563390044695320714825481746233901773893996663258170360232639353378395244461670781152793416950717050461856097473105730100523010642696332151571372764781034028324977128554099993021459338419164426784774496292405945103200724413639660488309795423335142455569853549710795692020963174011003447023610692365550245567840477105794884132665155376243735213346877116105595296043532605899184658904822980397411096930267453332143879534914237169761039374689145860503772331147367757318826885494994339695470190886515765452545019167989882527248872835783707554463866334705735781549392895480816605355996057201589681125'); INSERT INTO num_exp_sqrt VALUES (9,'7406.988615277484686670011157489572203134420118818648711986549881046321377798441006745317356200279801348355202517703531020643333388857073977704009782384103170022716610432579974132111487533733493986910583223121269323909760573942980360508642443245341392335557152177332615977623338526935953706604224108508582338123915133189529507760875123300397933931420500010248194253078118618381590347297853307090813639981736227771834732256867579490224181748450683295253634852775448770576585177080941820456051588076218688792321741398867304684922665590162004919486643750098085197190000638539994723704724550600891137853975703823903659121582583388450687255538838161486019214242094423895463814933532217776443473765708693285683261505695170847285063013324823850724236845500162436661946026097459146424122412596018946436589967013641971183281'); COMMIT TRANSACTION; BEGIN TRANSACTION; INSERT INTO num_exp_ln VALUES (0,'NaN'); INSERT INTO num_exp_ln VALUES (1,'11.353265918833698201334218522735144514838241118349715803442713722607336732214173255618762341321138898556011520430414052782971985419141860417968593746833898952016980791997105866598425597066404919489902082738711038276194174786383758877067916049129476352925010880025206629976454341252818402788928939407784629386362069592202090897264194883276572978998896242281239126931595483958092059051047739223830394259082355969005503976135238921488192773135287876801394308064862257453262299764712613486466254696464150007113953810688169396432889052881763511661127351872408811370081346456019961324265446884877073712053408327408917588393884214304220369626106333713688792094943405258431214313197283237071070354654837081449831786573831004911008790533179001070424813584405346221388686999574752038655226138085374176702005198770598232862'); INSERT INTO num_exp_ln VALUES (2,'75.980172429959420723484178622920965327708652620924912610122049843800380131746381968266727388919414524075492921510147435877107720844487333947572033626887969846858337336557672107987074468763307953130616555202495401302128216460637786993535376622372745654109623249396257174895352222213037880060756992073605135503615371392439827458529942230210514752764526895030759481226199720092008002458654297737883219558685499445394647863430593136350562417924068100891680398878483362058595716232013516337079804607378041880078724811071904523716775991447489914128580100888252698281559809224785596795038122963619830942475652745611551345360922016753939774272970008770647516790944335173711498988149783075646985898883858697162003144539047532603946093022417842140993960433780913606807466518632121884254341907122163281927271483110212890483'); INSERT INTO num_exp_ln VALUES (3,'86.992429107491709045555322727377654177072455841678650084144967727028762699430180506209786297136121512625728883607972513154010138109866327600596617277403558404624813332464431424791338402731178416819791932126837396086742033973404980654712734845137075562739300866280737071167943367603243180515859476717635339619107593771719314284984269343476343816253634799874584843436046260962736006310389088154751401911743739429257286834178656182340416539923956100441369280015412718483971113838923221170027312390404790743389872757674342133486652087007983701950040432125562287337697971646750563062524010514537132255605131615248097901911480464339325353279118429890601202554448469387179349495284716473293965884844451619766312048304583068386805927433174443889441171878078987788018564357316138422561213329104267180509029624308926098065'); INSERT INTO num_exp_ln VALUES (4,'56.935276817066740776567329017240462885579486075188456418197311631774373422196025180114152248099799048545382060930401786002025479108787121595516444894009593031141335985913019897883627990503003577804436730367402618412514152465206336556967419434371593632864308139215157721913158949066717186782560422199668568894551013785702491365073449320535603830475158258853167712460432995074161536886421366716995573365924430692151761737886552457036412140640821310927642146210426044265504978418405684030862182425702683702307323138985481047994648222224089112998195621687911787785594701557252468626097576375468916953563766801336922479861708649876362257086586679701715813254414915314296890025577780265459584203893089574567331742100451277992780400302806430264717887468808962517029442262560742822875484362427192693300423729233467613910'); INSERT INTO num_exp_ln VALUES (5,'20.296713391219923821414834924710998522858242536565236229645868008008504475111229451635162536658197320282791428572861452713483981402773630985812066048575864982038046409484905688236579134672910905547858248343712686247795669280482288748331949478864729205285910525962001251260319741279139167559906461672936902355959755164523720443059989357054368460911050707727029320725144824995614445423492687177126412520389766864793826362309254124276325522276592246655562770110024099522184080118637524912964002223613671995639705240767929562023556724031894855094820328152633412077228479168557819219970917880393852962560319397442566813746504969336443969816954424715197797253670026862362130664772772977978222813915593329422557592316429203293264572088112274848838446633519530653849595288125585730314673691986554304725866754516304420665'); INSERT INTO num_exp_ln VALUES (6,'-3.058947463851998053084898503420969773173569760507671013593014983772013099601022840164736581595033399273677583253456908293015637115395777673836877852797643436458673662566205707359569792482081945396989472318998080581824382006377064185813936544714612287417301161454496258176319380348780934551188852900784476213986897306897793456700682073399936398243222895442594762628402487110466705108765286617060826203345783502301472192906817785365563881556293576463515218574477264521950513789471494214626744754200844840310516235570475410854073969787604451971790833680742315518808178608136598148628107328076871698598743664423452623124027059698038466681488746505289551548778131621576387262707147068500249466398507704796800459013580425992071957391417767257856002976954566094297724379688683375704613872658653366052459242767328235849'); INSERT INTO num_exp_ln VALUES (7,'41.246780548917246608934265057073076900048579756649769602488660179351587788197892095257027979113051775079905924990472069951828742350559917110289416201523653941731339141666097617614477426376799479821365070373247490598890520285155435501242427296281987676879064510605563522117334502131946383957407685328562874307957108543536378261847119286989184256009392692140821396916222386573424618796707564187152459973446833193743614720624765332006827171872712331032607870580880807058576154429597725560836582655488602546786785520452359711161305828045237044625934404295366273012300148250900116489718279757540843657039519736455668388572899273464839528462223812926410544976290646668870192676914370659142463304861500879195867873346447316374869974900582948166687948531910220128160490935170837209017355954301127162240133341813847180541'); INSERT INTO num_exp_ln VALUES (8,'22.862977375646110045361670561177818139082238721442691850491173190000619222046296383571431877856442345505931635735363450488731186880557789439424987680284612480261693386095598289519783790826332183796775862215503493910816035128476952347072320869461206895223935484838130924268616681347949695029657753251443811448783435000569829291535036468240771401957519222523032235686030017496209956550934543164421459898155836108824017735809352580723262896259290484291175350770265895317482371895188221452083719817251845416195168686335127805092334984596224320638378502008767433534450949989322562311171685891891122105437154553106840103473941148230953978989145470651955269817951560544095229079088083494695756914405635176899994279484466773598435268700064279990885608144109747858515514066444373797446449729058958270758597627587968112958'); INSERT INTO num_exp_ln VALUES (9,'17.820358481980064387183481028572263407130633079314879566896470101569251997264841660326428805413719418277889123643557369421967068805165885825106611310020187894256310674762734896979157570968168599492401269694048046876387337971177513661006711375440365724346137980004810780215236524986274043416621637509807126148966029923572853117418545426960105154053049098579812135003711132897895016476695223444397389521434633067499404903493027304737402519428197015899833229473322655155458942323004249812974150129789653469524573801259946118454333405580647485894435301530550214095993989552176497867244278699359917247910082169086524111229983698975613609318418313798992088206507831757327320958918656453341769110558376097374227592021075267882222057385413453949580066342977546145482215220982989992069525148522710254796105001938615214263'); COMMIT TRANSACTION; BEGIN TRANSACTION; INSERT INTO num_exp_log10 VALUES (0,'NaN'); INSERT INTO num_exp_log10 VALUES (1,'4.930660740129727276654889314296515979425461685461970306647398411855044094312185293195497201658739777714943974003690119189101973212927970410047992001003936259467465542044528955416040460487922970233600641954269411521809500203864460110903973264337093883907933081597350982496469748131390809569321256206859934619579029279954574676601709408712255490686948453752571699579252140062805776361984468580258289509013081691778727372026090522694670379557247829136504595898935235926069699309392675806881162434168418505908116911054206058735257796918687777716036307205415038158583184624809880157060625643069601549803887864772092583549388533013233603450097615537162442973385137488450178790573546382354482351187412256794374383453695483855501587939419102008302408157959291557415763034668013452188944554607063362933134950906875499201'); INSERT INTO num_exp_log10 VALUES (2,'32.997769620388965086774969704518222090258389987679691893351902336370051104718852164011301929506188893338106627980171059175447833290713847317665944354651476245003161501753612545484635275306181777040447675475670149066399611203341262105766118892586541910243351018829302798733989560900125591073082441126709911019648451232244139674063434385451279378543163944005973452562993913383659295688375546058256196254319767218634546732685705517341998116744642480938405113447415486950667007645850519659606476727681944251201236366198374488204017630268083077471516734133869728427050843306716313813724061560369884508660845630727190444623729815564381063131729592825825486515070406390371638817503915214206586939112681762984038333298146999891250107667687034785493312416966635780188163871680959873288697497561452228182734430749066579749'); INSERT INTO num_exp_log10 VALUES (3,'37.780331928743475574895606142114739140772838801045013007323050327909196792739138159615327729728110344767302636436234256468332011934881494997184865617793179255006442447189720642997935223133982347184994174261506212652322213673745795726283311685835974151422721233207287206894148660531800622455957268888702309499182978182878524951883775154983702898237404558813230370364953160102391101897560104513279410610948028599674950811462114131673380477843456965645417025376374320207504913806546872166094337441573669261285052323206348035827948287081776955945081345131570610652073053464020209215624179904586956137079321655773178387441622685682721151900601340680061607114354850640946256225260430676099781727317540719923791064452012925902993317349390523278687089530234444415688602090547516647302454865526291471706301790881694022223'); INSERT INTO num_exp_log10 VALUES (4,'24.726676547286224970759328746582840552419566534667446425423046931401641497155587075591229106937829957279943690528061985864558314570189069764367933957499905044566413640017549478921384160584906257607957223101377816440084188042395098536074479064548620374152344954289432050971466476174493306432228880930006524504974367146536665170956555486181410864034862861231267121149652317599303804477688621597163730470970207231328339082779056152481480926452142005969020950341307977091850953883445808399574256295803245530993204179747743812544604144379381347499056545148243304041538981954204310612049423688645476667184129189153715486929216331980316967699254518020077226689317148303152585009031597809279387172427408557115400021035692880631275593381822805377317270568779655383061987766693697518921188619814204902583361096973421134004'); INSERT INTO num_exp_log10 VALUES (5,'8.814750626578650238811431417807018895270298639823442501111235973209197727215795256506525221092818797578008152140054383421240180435087611869193019443372556081555311825248667278358330916098378127100899126895012782320751838528480712942601038190627182482614147263228588284866661508052724762701223357327343090598060805245853527435948381893458352744679795853650453594546267600486696643924152372736774331080527157374379043696696647158270918245668579680394279565181670004245143555617589138267976417280970718829942998800499312890580011246294669585429723974582350357991472101919333996770115834067969654217063942059882195268353998096891812525364797586486311202350700339609637274043915687880562465121559531284337603363356183320193656553931871200575467929714875483123706358278876389849119105053294688326141759401230994901405'); INSERT INTO num_exp_log10 VALUES (6,'-1.328484003982869642690619298690906747763234110040562640557173509402512757735587333095924652711056556491908059708986413635120656426593745303715671199761364516107844087845783714418487426723538440387069985879601248897538855843115404484229652166941838283489828419407478748732927617251897244190697443966424660881366993754577233476597163021768156814527570512834684713730559883782625870597080940193303268818336816535968869931456641949301731046034660616615392129109391145214470757259042172416816936479713743188047425796931722546185493217275537303458837771965375448968719169174136287532752370175863826715450565025635651343928205805494319778539652563499901671319955144823432132740582617949774638538594081514904904341299199113721131520557004571803778698005652464301037962272085633628653321081368256925971558076970172779715'); INSERT INTO num_exp_log10 VALUES (7,'17.913249188669140643510654105014358282516966474257460687880559542190804665566625978925406311113121982595279826214959603627387555578965653325278444455875162277940655989601428868642914577248262147833499137348602966573601719040813549936948178463592211685237720748377879836890106515699728652218324794927458352954247096536337594789471529493944292143186953509162522579060020018226817623648563806559917579317916242706559131476179714031602207057714677845347616752450567251644277767418397621490301286115159509360375419599968738067461569666699939732107480135216621373057421990702923042287910730395998082514702629760389192370666675364405730936537832803383367187639209534697198515928978064543150195911463663617683085348965065679311986715357338675515370634753254774665197233934933271954463040729779956682570415317734489164385'); INSERT INTO num_exp_log10 VALUES (8,'9.929264914121995501917993119394933531225401243275938207624866270551448544301376913376130982251708700134720886862945040266148728213253651323129942781577143957084726727561987639140151337848818195806259935747329665025823709044567138449084349729747202164413995795609659711723455165142329822773177102845804114214340046404641970845707372809306219463962664551623665322610139794354769767829380018857313559373283673392337954610346290037758389035140213224696023751541663171574697035012610534455189013755134090933979479069288110010954211669067225249755249337768792642303351914884187159646984708862430789018895140670365476746734456807215043628059581947593694929159076346249490593187993386780521089745819640214783614157516171005086731241769146397577246387886107367648843380733370112546792442909347322732196805316614555689762'); INSERT INTO num_exp_log10 VALUES (9,'7.739283354261751283625223433456284905560931805428759681411970457812279544250432389511382263439324085689734710188041049046660480575958686859942980599595036769090747781359217248301544587434077376812293034848418204834388504169166350770257248896025815531248627658465029806509131631454856186387892627989218208026727504548130018922325585619738185507999433763118148418722504204066578294826264005398891049629199412773138457218976050467479292777172717500219850781664314597312411301296201533610562886229900497272268364496763758868455934979903774531992886483396489868888731578355541611359130188566524240259770918423445785338175040098706500034487703124623745259139247432324145633151895802637182446905097253961951018926565652497920605819785424451050191604602898777804133717341512568151920576684198443843944721398831404081859'); COMMIT TRANSACTION; BEGIN TRANSACTION; INSERT INTO num_exp_power_10_ln VALUES (0,'NaN'); INSERT INTO num_exp_power_10_ln VALUES (1,'225561990715.277245515991117670624124484084762557459065170589803293759247930753528436379932442146759103295277479258327642314622036941865221478746258727236601688778946696303277607709407496616423493315166963938393760548678730128692212077086588682984700837334554241405763691119669847463520746595280034536307041368063462023793177898200220207765205127584303464304601759554817607633012272490650155253979182893585119965271975927569080191838676053084168631217591768468344106219831174026139608715965691941366334940196517120885214887008671956523579678156919416435031020452971977153991139145404842034138317592877675821045409772456977018293365238179815614004574330200783530118851005077771478448804470170641452481992602803877112958872108069738434946694089025321283178188028224338756015337492913115267362635647236447601252924834642796058'); INSERT INTO num_exp_power_10_ln VALUES (2,'9553718264533556311125292459627965006385666643531070061102266984368939757379.536714147420215784125170401370065894858487440153494392538261078415409784085960333028254155527328359894197540839556987826344995348426293585457768226283066583722499658006242709930685932246087653832230889613022921575445199055131152661556678809191264086381976922223866204038615136758192929883317207903579770917317641181652055458721731297347443662717939116561947785705140374908203404860090658919334137955075887697259604047657534191202566335372150375993361370075961180728155127447781364264047857624746079509591666068708743260905728661917791822925979235918475633100283148558978385583805341715868143937062092264994833222352433299015979561976964779350640064096690062929265992966564232453102431600199173711947391200249130712039686700111791790265309426741120465259677894665532560198051256215915373145226284270408649736509'); INSERT INTO num_exp_power_10_ln VALUES (3,'982718444846268846508445482774217796844461660819285525931206164100817251856409365450682.362683768066405322653747385034480250394145008573806022660379219602846285813744865438912887625784087005970975437905783802114553690522787857272953842288090141945268495451006273685577260054069522075046955466204804067271437138871789034722069934693546671607506851844248427950939791205412350536883779850165603116191193657054604569586553874805856647223849267039531773072343908345333155562072887754900969504551717514980465801806565999410206735831440712124661645970935112535081991606671600328471264697018198676317466846450405861359235297846597981143547119390922405594115478086038680663368675222949247096131378724350715530605691796680604309063173515781378545860473572389718345696107553363715518601596249508215455106779522851210398208919496668879040223859884166805448827948087400426315425231119801173387715922086154065273'); INSERT INTO num_exp_power_10_ln VALUES (4,'861542720105376650266753999919217194383259935058507531116.774511336660822591851369622743235084609149542494189385785321912210129989390054947787009383210009523204976629456268332186620016067379702483800883493431423160815760933380418976582725913410929214462739708321325884209636272001805871036779154087677637129248122540412937033791526383240502286607736226090213753913654673523613612439527815137888202973659987501649474772884055648603290154867585312925699571949539600328906295652872654314913539778815035321695215634102441494403825526533235061083947035338872599854931230001361227174477274708230470794066733245241594719912710139298949856243576688344051439047966427547889756037265151798639614843866387316916203238068277912991427278268083231579195846744438643659745041780103653332041031419793815914447232121937821142169172566753399257291244398531365781832297786941359729799400'); INSERT INTO num_exp_power_10_ln VALUES (5,'198021976607570296508.271597639984889464620426933601643322058775615235389194561064983706229795978402690473201671702614911129095149240715527556855309177671128442458698638704394974473956869419481315262823632891676087912529523219333012290621046361106033860210270638559271706082115529424772192777643046125905852037759566224116373416253787241195450409652089019290072319861181399387753223422998872180810295299831487867222464355713552301775702554189470264147325049133532522718679336524769566984150923939420759804463781082299907043016120177416779442865059261387111806785876531152192378576258351599534512031062777609734092707165605364139201322351960602280089186180302246827234844736393745487324460438448807241887783263546165171099497316415863122023114646876909575845860402164818094500541234974716577550807551946414081410743197768993152975501'); INSERT INTO num_exp_power_10_ln VALUES (6,'.000873076977206566818052116526263730226812004454463281371489634779519089200224205946321120805055212090024554381349223642352209212670470260295303361873760972918129853308169576675500721645609379420329169271088810484607337679253503247351324049221970104335289487989027621978310506220905131150125321713385148268584530413680037620544212746920563790371941626294733473967065607791756894237438288480748407449237446113996117912144587258434808327522518688617394025018756570740098795745692805352377041347367240475846033282850136270250633825482156304826383360291164928049344226886150285595932088884965511963310715773499733217615863523253012606066583814112265708693122563204149232245895551314975524172504103194858904869273185785182598234060315036187756490539352752560361560286717869643902435677448962235275054804452967413005'); INSERT INTO num_exp_power_10_ln VALUES (7,'176514565873872717825163931126806100435750.096278384530154766967061948052237623936423931849868926020451465515367348890410352640552194499619062823622476972850692557798609619250753020363520533767813563613425606228355802781302735485038377521515850536680425059519814786118919994914180918228654298075183514200191737597656810036850772127169441661576862538643715648802139886576391427423689320082366572297580054381937437005879583216745596935643579262248665490169331304003204939561361718554509909313409421397022626924406091551900222555950699170864234411017062042057683304265485826061096835531732950909546314722726990314852356462874701181085379772134121978510387397276859318242238150439474660772561390798432890789762504242822787017140808209820627435991445529404692793744568204608385843245177656436105160780897472099970336514833257055017279707999437302548655364559'); INSERT INTO num_exp_power_10_ln VALUES (8,'72941951052009383458167.300747500436981484566111756088702608000390737594784514635592222758882092500858797317505303492923829092720870826490477962201959426813271424853341826896270963213736922458746003100613943600855942721319226948714369219316345322636075285343544788982588956431405042577296229122673590336976893594798942025893296105815818487227300314490440902574022885833779324177053242170024559675073866612316965636832258283516275906085642459351367507561963945012828379111856700009391438637054015804558386733558956649061672420804826896303889067785497738203077050774825608647969196321506624991188638449047860249367840775936911749905927108478444112230174584693363226143549933224252679398881354887872642908328737917862751077365602631600279486028043329404269490375935308156815477700961014566228692743960491745353377403533037122586797765130'); INSERT INTO num_exp_power_10_ln VALUES (9,'661239032819374816.097553651299556484820492272269662685578275493609248662925676004753503494252951243895572437264999063878330704584509915845096232798927524470286655554736724913758600775591269525423912692080421094644542553026831758426157681271572808657664918053119324646138457659418857926209701677786068580819823633713337632456905824562235373422309621872998037966404189020165296080436871220718574009921789858751384547836431858428729570977259373272041837411903005303672798845573379758630607982213326716018594073712340609488043353995410508475153538231445235003980586600882223782814368245305160648543466496726973755388826656879616734762068443462618454921858705377028522664844761719759342490380417060255776725333319537746890406213693117052223545525717132695297770810635066731941724108167146710297146989770382041617889670713111888375717'); COMMIT TRANSACTION; BEGIN TRANSACTION; INSERT INTO num_data VALUES (0, '0'); INSERT INTO num_data VALUES (1, '85243.39540024977626076239847863600785982737155858270959890014613035727868293618673807776733416230953723818527101593495895350807775607346277892835514324320448949370623441059033804864158715021903312693889518990256881059434042443507529601095150710777634743301398926463888783847290873199395304998050753365215426971278237920063435565949203678024225270616295573678510929020831006146661747271783837653203039829647102027431761129518881525935216608429897041525858540380754759125150233053469999022855035'); INSERT INTO num_data VALUES (2, '-994877526002806872754342148749241.04353023451866590387054959174736129501310680280823383331007646306243540953499740615246583399296334239109936336446284803020643582102868247857009494139535009572740621288230740389545481395'); INSERT INTO num_data VALUES (3, '-60302029489319384367663884408085757480.2322712404088283093870869198708849258097125725036189625900174440196153781995220721511009855207486224837798752903681993777275846325950111427710563453217985216966456785944859989497422927661683538629473170704026975786513125842675604577233871570629808699803522400038975396500769162308448069085909755023233588510630417065084295051270219462289785473643946404281422516357503746700705970360169619852905053433235726497292406142332833'); INSERT INTO num_data VALUES (4, '5329378275943663322215245.24931765987630429629836382184742348353920297283690739124220773955591340709935970062776650204659187764581615597720798385015942389765692769739983054442503547211560297249686289665792078548480268091496050883021187158502798880896590227542729659940394038802461081290690995869705131152889309663639310553909874081663091069118126221594338242710530718836025225507189149221049928936955230868771875644038572888630664890573507822342998964954667474300944699078658989010257103569231493090050659723450626338923049035040974032671138430612839043269997482582763267536489504794826476836323549796385028155416935072959933315468068930689064483178204550825728947252440604703474049780550458442808479096492346910001692358508618202898514895453589357'); INSERT INTO num_data VALUES (5, '-652755630.43456071828048833552593835051449845484289562110789582081210403487973096161149072377955192388469356112505543620695003436531392789029513380101663750625024853263344909355177280161504414335005574882649025508632900995595004153086358670541462762210415346958050909878501048483523600711486406055424807840429541335391538322886495085448421556770991545781035298449067051916630343957356635391594362639819978677032855590055900561501350354631803808000307050416047072513406855040715556454205065332997338225626635780147287003130754254277103928406089109802521803537038957372612837169223905290912251006321930223154562110264217937'); INSERT INTO num_data VALUES (6, '0.0469370721950711508944806393077762204079964905145503836835397203739563036579760026190241480514409364'); INSERT INTO num_data VALUES (7, '-818934540071845742'); INSERT INTO num_data VALUES (8, '8496986223.64063724353165506167988570717591150432282238795309964705925283285060558038824227595710139960766584401003765241409149793494330798800'); INSERT INTO num_data VALUES (9, '054863480.34685027005508022756223282084742813020271603840941647350440860843570182437301045468670059279379903480024743452620396345637401505220786389930600883087012615993343976556472498552535317826554614696684732913955544753638726438705858481670766245958647367500212800073774509075408148134050353551558174813940258910304990570172170811882520915334358633'); COMMIT TRANSACTION; -- ****************************** -- * Create indices for faster checks -- ****************************** CREATE UNIQUE INDEX num_exp_add_idx ON num_exp_add (id1, id2); CREATE UNIQUE INDEX num_exp_sub_idx ON num_exp_sub (id1, id2); CREATE UNIQUE INDEX num_exp_div_idx ON num_exp_div (id1, id2); CREATE UNIQUE INDEX num_exp_mul_idx ON num_exp_mul (id1, id2); CREATE UNIQUE INDEX num_exp_sqrt_idx ON num_exp_sqrt (id); CREATE UNIQUE INDEX num_exp_ln_idx ON num_exp_ln (id); CREATE UNIQUE INDEX num_exp_log10_idx ON num_exp_log10 (id); CREATE UNIQUE INDEX num_exp_power_10_ln_idx ON num_exp_power_10_ln (id); VACUUM ANALYZE num_exp_add; VACUUM ANALYZE num_exp_sub; VACUUM ANALYZE num_exp_div; VACUUM ANALYZE num_exp_mul; VACUUM ANALYZE num_exp_sqrt; VACUUM ANALYZE num_exp_ln; VACUUM ANALYZE num_exp_log10; VACUUM ANALYZE num_exp_power_10_ln; -- ****************************** -- * Now check the behaviour of the NUMERIC type -- ****************************** -- ****************************** -- * Addition check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, t1.val + t2.val FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, t2.expected FROM num_result t1, num_exp_add t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != t2.expected; DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val + t2.val, 10) FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 10) as expected FROM num_result t1, num_exp_add t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != round(t2.expected, 10); -- ****************************** -- * Subtraction check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, t1.val - t2.val FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, t2.expected FROM num_result t1, num_exp_sub t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != t2.expected; DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val - t2.val, 40) FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 40) FROM num_result t1, num_exp_sub t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != round(t2.expected, 40); -- ****************************** -- * Multiply check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, t1.val * t2.val FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, t2.expected FROM num_result t1, num_exp_mul t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != t2.expected; DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val * t2.val, 30) FROM num_data t1, num_data t2; SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 30) as expected FROM num_result t1, num_exp_mul t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != round(t2.expected, 30); -- ****************************** -- * Division check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, t1.val / t2.val FROM num_data t1, num_data t2 WHERE t2.val != '0.0'; SELECT t1.id1, t1.id2, t1.result, t2.expected FROM num_result t1, num_exp_div t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != t2.expected; DELETE FROM num_result; INSERT INTO num_result SELECT t1.id, t2.id, round(t1.val / t2.val, 80) FROM num_data t1, num_data t2 WHERE t2.val != '0.0'; SELECT t1.id1, t1.id2, t1.result, round(t2.expected, 80) as expected FROM num_result t1, num_exp_div t2 WHERE t1.id1 = t2.id1 AND t1.id2 = t2.id2 AND t1.result != round(t2.expected, 80); -- ****************************** -- * Square root check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT id, 0, SQRT(ABS(val)) FROM num_data; SELECT t1.id1, t1.result, t2.expected FROM num_result t1, num_exp_sqrt t2 WHERE t1.id1 = t2.id AND t1.result != t2.expected; -- ****************************** -- * Natural logarithm check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT id, 0, LN(ABS(val)) FROM num_data WHERE val != '0.0'; SELECT t1.id1, t1.result, t2.expected FROM num_result t1, num_exp_ln t2 WHERE t1.id1 = t2.id AND t1.result != t2.expected; -- ****************************** -- * Logarithm base 10 check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT id, 0, LOG('10'::numeric, ABS(val)) FROM num_data WHERE val != '0.0'; SELECT t1.id1, t1.result, t2.expected FROM num_result t1, num_exp_log10 t2 WHERE t1.id1 = t2.id AND t1.result != t2.expected; -- ****************************** -- * POW(10, LN(value)) check -- ****************************** DELETE FROM num_result; INSERT INTO num_result SELECT id, 0, POW(numeric '10', LN(ABS(round(val,1000)))) FROM num_data WHERE val != '0.0'; SELECT t1.id1, t1.result, t2.expected FROM num_result t1, num_exp_power_10_ln t2 WHERE t1.id1 = t2.id AND t1.result != t2.expected; -- -- Test code path for raising to integer powers -- -- base less than 1 -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of POW(): -- -- for p in {-20..20} -- do -- b="0.084738" -- r=$(bc -ql <<< "scale=500 ; $b^$p" | head -n 1) -- echo "($b, $p, $r)," -- done WITH t(b, p, bc_result) AS (VALUES (0.084738, -20, 2744326694304960114888.7859130502035257), (0.084738, -19, 232548755422013710215.4459407000481464), (0.084738, -18, 19705716436950597776.2364581230406798), (0.084738, -17, 1669822999434319754.3627249884302211), (0.084738, -16, 141497461326065387.3451885900696001), (0.084738, -15, 11990211877848128.7928565907453178), (0.084738, -14, 1016026574105094.7376490817865767), (0.084738, -13, 86096059836517.5178789078924309), (0.084738, -12, 7295607918426.8214300228969888), (0.084738, -11, 618215223791.6519943372802450), (0.084738, -10, 52386321633.6570066961524534), (0.084738, -9, 4439112122.5928274334185666), (0.084738, -8, 376161483.0442710110530225), (0.084738, -7, 31875171.7502054369346110), (0.084738, -6, 2701038.3037689083149651), (0.084738, -5, 228880.5837847697527935), (0.084738, -4, 19394.8829087538193122), (0.084738, -3, 1643.4835879219811409), (0.084738, -2, 139.2655122733328379), (0.084738, -1, 11.8010809790176780), (0.084738, 0, 1), (0.084738, 1, .084738), (0.084738, 2, .007180528644), (0.084738, 3, .0006084636362353), (0.084738, 4, .0000515599916073), (0.084738, 5, .0000043690905688), (0.084738, 6, .0000003702279966), (0.084738, 7, .0000000313723800), (0.084738, 8, .0000000026584327), (0.084738, 9, .0000000002252703), (0.084738, 10, .0000000000190890), (0.084738, 11, .0000000000016176), (0.084738, 12, .0000000000001371), (0.084738, 13, .0000000000000116), (0.084738, 14, .0000000000000010), (0.084738, 15, .0000000000000001), (0.084738, 16, .0000000000000000), (0.084738, 17, .0000000000000000), (0.084738, 18, .0000000000000000), (0.084738, 19, .0000000000000000), (0.084738, 20, .0000000000000000)) SELECT b, p, bc_result, b^p AS power, b^p - bc_result AS diff FROM t; -- base greater than 1 -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of POW(): -- -- for p in {-20..20} -- do -- b="37.821637" -- r=$(bc -ql <<< "scale=500 ; $b^$p" | head -n 1) -- echo "($b, $p, $r)," -- done WITH t(b, p, bc_result) AS (VALUES (37.821637, -20, .0000000000000000), (37.821637, -19, .0000000000000000), (37.821637, -18, .0000000000000000), (37.821637, -17, .0000000000000000), (37.821637, -16, .0000000000000000), (37.821637, -15, .0000000000000000), (37.821637, -14, .0000000000000000), (37.821637, -13, .0000000000000000), (37.821637, -12, .0000000000000000), (37.821637, -11, .0000000000000000), (37.821637, -10, .0000000000000002), (37.821637, -9, .0000000000000063), (37.821637, -8, .0000000000002388), (37.821637, -7, .0000000000090327), (37.821637, -6, .0000000003416316), (37.821637, -5, .0000000129210673), (37.821637, -4, .0000004886959182), (37.821637, -3, .0000184832796213), (37.821637, -2, .0006990678924066), (37.821637, -1, .0264398920649574), (37.821637, 0, 1), (37.821637, 1, 37.821637), (37.821637, 2, 1430.476225359769), (37.821637, 3, 54102.9525326873775219), (37.821637, 4, 2046262.2313195326271135), (37.821637, 5, 77392987.3197773940323425), (37.821637, 6, 2927129472.7542235178972258), (37.821637, 7, 110708828370.5116321107718772), (37.821637, 8, 4187189119324.7924539711577286), (37.821637, 9, 158366346921451.9852944363360812), (37.821637, 10, 5989674486279224.5007355092228730), (37.821637, 11, 226539294168214309.7083246628376531), (37.821637, 12, 8568086950266418559.9938312759931069), (37.821637, 13, 324059074417413536066.1494087598581043), (37.821637, 14, 12256444679171401239980.3109258799733927), (37.821637, 15, 463558801566202198479885.2069857662592280), (37.821637, 16, 17532552720991931019508170.1002855156233684), (37.821637, 17, 663109844696719094948877928.0672523682648687), (37.821637, 18, 25079899837245684700124994552.6717306599041850), (37.821637, 19, 948562867640665366544581398598.1275771806665398), (37.821637, 20, 35876200451584291931921101974730.6901038166532866)) SELECT b, p, bc_result, b^p AS power, b^p - bc_result AS diff FROM t; -- -- Tests for raising to non-integer powers -- -- base less than 1 -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of POW(): -- -- for n in {-20..20} -- do -- b="0.06933247" -- p="$n.342987" -- r=$(bc -ql <<< "scale=500 ; e($p*l($b))" | head -n 1) -- echo "($b, $p, $r)," -- done WITH t(b, p, bc_result) AS (VALUES (0.06933247, -20.342987, 379149253615977128356318.39406340), (0.06933247, -19.342987, 26287354251852125772450.59436685), (0.06933247, -18.342987, 1822567200045909954554.65766042), (0.06933247, -17.342987, 126363085720167050546.86216560), (0.06933247, -16.342987, 8761064849800910427.02880469), (0.06933247, -15.342987, 607426265866876128.15466179), (0.06933247, -14.342987, 42114363355427213.14899924), (0.06933247, -13.342987, 2919892833909256.59283660), (0.06933247, -12.342987, 202443382310228.51544515), (0.06933247, -11.342987, 14035899730722.44924025), (0.06933247, -10.342987, 973143597003.32229028), (0.06933247, -9.342987, 67470449244.92493259), (0.06933247, -8.342987, 4677892898.16028054), (0.06933247, -7.342987, 324329869.02491071), (0.06933247, -6.342987, 22486590.914273551), (0.06933247, -5.342987, 1559050.8899661435), (0.06933247, -4.342987, 108092.84905705095), (0.06933247, -3.342987, 7494.3442144625131), (0.06933247, -2.342987, 519.60139541889576), (0.06933247, -1.342987, 36.025248159838727), (0.06933247, 0.342987, .40036522320023350), (0.06933247, 1.342987, .02775830982657349), (0.06933247, 2.342987, .001924552183301612), (0.06933247, 3.342987, .0001334339565121935), (0.06933247, 4.342987, .000009251305786862961), (0.06933247, 5.342987, .0000006414158809285026), (0.06933247, 6.342987, .00000004447094732199898), (0.06933247, 7.342987, .000000003083280621074075), (0.06933247, 8.342987, .0000000002137714611621997), (0.06933247, 9.342987, .00000000001482130341788437), (0.06933247, 10.342987, .000000000001027597574581366), (0.06933247, 11.342987, .00000000000007124587801173530), (0.06933247, 12.342987, .000000000000004939652699872298), (0.06933247, 13.342987, .0000000000000003424783226243151), (0.06933247, 14.342987, .00000000000000002374486802900065), (0.06933247, 15.342987, .000000000000000001646290350274646), (0.06933247, 16.342987, .0000000000000000001141413763217064), (0.06933247, 17.342987, .000000000000000000007913703549583420), (0.06933247, 18.342987, .0000000000000000000005486766139403860), (0.06933247, 19.342987, .00000000000000000000003804110487572339), (0.06933247, 20.342987, .000000000000000000000002637483762562946)) SELECT b, p, bc_result, b^p AS power, b^p - bc_result AS diff FROM t; -- base greater than 1 -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of POW(): -- -- for n in {-20..20} -- do -- b="27.234987" -- p="$n.230957" -- r=$(bc -ql <<< "scale=500 ; e($p*l($b))" | head -n 1) -- echo "($b, $p, $r)," -- done WITH t(b, p, bc_result) AS (VALUES (27.234987, -20.230957, .000000000000000000000000000009247064512095633), (27.234987, -19.230957, .0000000000000000000000000002518436817750859), (27.234987, -18.230957, .000000000000000000000000006858959399176602), (27.234987, -17.230957, .0000000000000000000000001868036700701026), (27.234987, -16.230957, .000000000000000000000005087595525911532), (27.234987, -15.230957, .0000000000000000000001385605980094587), (27.234987, -14.230957, .000000000000000000003773696085499835), (27.234987, -13.230957, .0000000000000000001027765638305389), (27.234987, -12.230957, .000000000000000002799118379829397), (27.234987, -11.230957, .00000000000000007623395268611469), (27.234987, -10.230957, .000000000000002076230710364949), (27.234987, -9.230957, .00000000000005654611640579014), (27.234987, -8.230957, .000000000001540032745212181), (27.234987, -7.230957, .00000000004194277179542807), (27.234987, -6.230957, .000000001142310844592450), (27.234987, -5.230957, .00000003111082100243440), (27.234987, -4.230957, .0000008473028055606278), (27.234987, -3.230957, .00002307628089450723), (27.234987, -2.230957, .0006284822101702527), (27.234987, -1.230957, .01711670482371810), (27.234987, 0.230957, 2.1451253063142300), (27.234987, 1.230957, 58.422459830839071), (27.234987, 2.230957, 1591.1349340009243), (27.234987, 3.230957, 43334.539242761031), (27.234987, 4.230957, 1180215.6129275865), (27.234987, 5.230957, 32143156.875279851), (27.234987, 6.230957, 875418459.63720737), (27.234987, 7.230957, 23842010367.779367), (27.234987, 8.230957, 649336842420.336290), (27.234987, 9.230957, 17684680461938.907402), (27.234987, 10.230957, 481642042480060.137900), (27.234987, 11.230957, 13117514765597885.614921), (27.234987, 12.230957, 357255344113366461.949871), (27.234987, 13.230957, 9729844652608062117.440722), (27.234987, 14.230957, 264992192625800087863.690528), (27.234987, 15.230957, 7217058921265161257566.469315), (27.234987, 16.230957, 196556505898890690402726.443417), (27.234987, 17.230957, 5353213882921711267539279.451015), (27.234987, 18.230957, 145794710509592328389185797.837767), (27.234987, 19.230957, 3970717045397510438979206144.696206), (27.234987, 20.230957, 108142427112079606637962972621.121293)) SELECT b, p, bc_result, b^p AS power, b^p - bc_result AS diff FROM t; -- Inputs close to overflow -- -- bc(1) results computed with a scale of 2700 and truncated to 4 decimal -- places. WITH t(b, p, bc_result) AS (VALUES (0.12, -2829.8369, 58463948950011752465280493160293790845494328939320966633018493248607815580903065923369555885857984675501574162389726507612128133630191173383130639968378879506624785786843501848666498440326970769604109017960864573408272864266102690849952650095786874354625921641729880352858506454246180842452983243549491658464046163869265572232996388827878976066830374513768599285647145439771472435206769249126377164951470622827631950210853282324510655982757098065657709137845327135766013147354253426364240746381620690117663724329288646510198895137275207992825719846135857839292915100523542874885080351683587865157015032404901182924720371819942957083390475846809517968191151435281268695782594904484795360890092607679215675240583291240729468370895035823777914792823688291214492607109455017754453939895630226174304357121900605689015734289765672740769194115142607443713769825894380064727556869268488695795705030158832909348803019429370973064732712469794182891757241046263341655894972953512257981661670321890336672832647028099324621932563236459127918144141230217523147304565594514812518826936144181257723061181656522095236928347413997136815409159361412494284201481609684892562646522086577634100783077813105675590737823924220663206479031113753135119759722725207724879578900186075841393115040465401462266086907464970054073340036852442184414587772177753008511913377364966775792477387717262694468450099866775550614257191941835797445874557362115814601886902749237439492398087966544817154173072811937702110580330775581851211123491341435883319798273456296794954514173820352334127081705706502510709179711510240917772628308487366740741280043704807717608366220401933596364641284631036907635403895053036499618723044314773148779735006542501244942039455169872946018271985844759209768927953340447524637670938413827595013338859796135512187473850161303598087634723542727044978083220970836296653305188470017342167913572166172051819741354902582606590658382067039498769674611071582171914886494269818475850690414812481252963932223686078322390396586222238852602472958831686564971334200490182175112490433364675164900946902818404704835106260174052265784055642968397240262737313737007322288203637798365320295080314524864099419556398713380156353062937736280885716820226469419928595465390700629307079710611273715705695938635644841913194091407807776191951797748706106000922803167645881087385311847268311361092838264814899353459146959869764278464187826798546290981492648723002412475976344071283321798061003719251864595518596639432393032991023409676558943539937377229130132816883146259468718344018277257037013406135980469482324577407154032999045733141275895.3432), (1.2, 32908.8896, 58463467728170833376633133695001863276259293590926929026251227859007891876739460057725441400966420577009060860805883032969522911803372870882799865787473726926215148161529632590083389287080925059682489116446754279752928005457087175157581627230586554364417068189211136840990661174760199073702207450133797324318403866058202372178813998850887986769280847189341565507156189065295823921162851958925352114220880236114784962150135485415106748467247897246441194126125699204912883449386043559785865023459356275014504597646990160571664166410683323036984805434677654413174177920726210827006973855410386789516533036723888687725436216478665958434776205940192130053647653715221076841771578099896259902368829351569726536927952661429685419815305418450230567773264738536471211804481206474781470237730069753206249915908804615495060673071058534441654604668770343616386612119048579369195201590008082689834456232255266932976831478404670192731621439902738547169253818323045451045749609624500171633897705543164388470746657118050314064066768449450440405619135824055131398727045420324382226572368236570500391463795989258779677208133531636928003546809249007993065200108076924439703799231711400266122025052209803513232429907231051873161206025860851056337427740362763618748092029386371493898291580557004812947013231371383576580415676519066503391905962989205397824064923920045371823949776899815750413244195402085917098964452866825666226141169411712884994564949174271056284898570445214367063763956186792886147126466387576513166370247576466566827375268334148320298849218878848928271566491769458471357076035396330179659440244425914213309776100351793665960978678576150833311810944729586040624059867137538839913141142139636023129691775489034134511666020819676247950267220131499463010350308195762769192775344260909521732256844149916046793599150786757764962585268686580124987490115873389726527572428003433405659445349155536369077209682951123806333170190998931670309088422483075609203671527331975811507450670132060984691061148836994322505371265263690017938762760088575875666254883673433331627055180154954694693433502522592907190906966067656027637884202418119121728966267936832338377284832958974299187166554160783467156478554899314000348357280306042140481751668215838656488457943830180819301102535170705017482946779698265096226184239631924271857062033454725540956591929965181603262502135610768915716020374362368495244256420143645126927013882334008435586481691725030031204304273292938132599127402133470745819213047706793887965197191137237066440328777206799072470374264316425913530947082957300047105685634407092811630672103242089966046839626911122.7149)) SELECT b, p, bc_result, b^p AS power, b^p - bc_result AS diff FROM t; -- -- Tests for EXP() -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of EXP(): -- -- for n in {-20..20} -- do -- x="$n.29837" -- r=$(bc -ql <<< "scale=500 ; e($x)" | head -n 1) -- echo "($x, $r)," -- done WITH t(x, bc_result) AS (VALUES (-20.29837, .000000001529431101152222), (-19.29837, .000000004157424770142192), (-18.29837, .00000001130105220586304), (-17.29837, .00000003071944485366452), (-16.29837, .00000008350410872606600), (-15.29837, .0000002269877013517336), (-14.29837, .0000006170165438681061), (-13.29837, .000001677224859055276), (-12.29837, .000004559169856609741), (-11.29837, .00001239310857408049), (-10.29837, .00003368796183504298), (-9.29837, .00009157337449401917), (-8.29837, .0002489222398577673), (-7.29837, .0006766408013046928), (-6.29837, .001839300394580514), (-5.29837, .004999736839665763), (-4.29837, .01359069379834070), (-3.29837, .03694333598818056), (-2.29837, .1004223988993283), (-1.29837, .2729763820983097), (0.29837, 1.3476603299656679), (1.29837, 3.6633205858807959), (2.29837, 9.9579377804197108), (3.29837, 27.068481317440698), (4.29837, 73.579760889182206), (5.29837, 200.01052696742555), (6.29837, 543.68498095607070), (7.29837, 1477.8890041389891), (8.29837, 4017.3188244304487), (9.29837, 10920.204759575742), (10.29837, 29684.194161006717), (11.29837, 80690.005580314652), (12.29837, 219338.17590722828), (13.29837, 596222.97785597218), (14.29837, 1620702.0864156289), (15.29837, 4405525.0308492653), (16.29837, 11975458.636179032), (17.29837, 32552671.598188404), (18.29837, 88487335.673150406), (19.29837, 240533516.60908059), (20.29837, 653837887.33381570)) SELECT x, bc_result, exp(x), exp(x)-bc_result AS diff FROM t; -- -- Tests for LN() -- -- input very small -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of LN(): -- -- for p in {1..40} -- do -- l=$(bc -ql <<< "scale=500 ; l(10^-$p)" | head -n 1) -- echo "('1.0e-$p', $l)," -- done WITH t(x, bc_result) AS (VALUES ('1.0e-1', -2.3025850929940457), ('1.0e-2', -4.6051701859880914), ('1.0e-3', -6.9077552789821371), ('1.0e-4', -9.2103403719761827), ('1.0e-5', -11.512925464970228), ('1.0e-6', -13.815510557964274), ('1.0e-7', -16.118095650958320), ('1.0e-8', -18.420680743952365), ('1.0e-9', -20.723265836946411), ('1.0e-10', -23.025850929940457), ('1.0e-11', -25.328436022934503), ('1.0e-12', -27.631021115928548), ('1.0e-13', -29.933606208922594), ('1.0e-14', -32.236191301916640), ('1.0e-15', -34.5387763949106853), ('1.0e-16', -36.84136148790473094), ('1.0e-17', -39.143946580898776628), ('1.0e-18', -41.4465316738928223123), ('1.0e-19', -43.74911676688686799634), ('1.0e-20', -46.051701859880913680360), ('1.0e-21', -48.3542869528749593643778), ('1.0e-22', -50.65687204586900504839581), ('1.0e-23', -52.959457138863050732413803), ('1.0e-24', -55.2620422318570964164317949), ('1.0e-25', -57.56462732485114210044978637), ('1.0e-26', -59.867212417845187784467777822), ('1.0e-27', -62.1697975108392334684857692765), ('1.0e-28', -64.47238260383327915250376073116), ('1.0e-29', -66.774967696827324836521752185847), ('1.0e-30', -69.0775527898213705205397436405309), ('1.0e-31', -71.38013788281541620455773509521529), ('1.0e-32', -73.682722975809461888575726549899655), ('1.0e-33', -75.9853080688035075725937180045840189), ('1.0e-34', -78.28789316179755325661170945926838306), ('1.0e-35', -80.590478254791598940629700913952747266), ('1.0e-36', -82.8930633477856446246476923686371114736), ('1.0e-37', -85.19564844077969030866568382332147568124), ('1.0e-38', -87.498233533773735992683675278005839888842), ('1.0e-39', -89.8008186267677816767016667326902040964430), ('1.0e-40', -92.10340371976182736071965818737456830404406)) SELECT x, bc_result, ln(x::numeric), ln(x::numeric)-bc_result AS diff FROM t; -- input very close to but smaller than 1 -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of LN(): -- -- for p in {1..40} -- do -- l=$(bc -ql <<< "scale=500 ; l(1-10^-$p)" | head -n 1) -- echo "('1.0e-$p', $l)," -- done WITH t(x, bc_result) AS (VALUES ('1.0e-1', -.10536051565782630), ('1.0e-2', -.010050335853501441), ('1.0e-3', -.0010005003335835335), ('1.0e-4', -.00010000500033335834), ('1.0e-5', -.000010000050000333336), ('1.0e-6', -.0000010000005000003333), ('1.0e-7', -.00000010000000500000033), ('1.0e-8', -.000000010000000050000000), ('1.0e-9', -.0000000010000000005000000), ('1.0e-10', -.00000000010000000000500000), ('1.0e-11', -.000000000010000000000050000), ('1.0e-12', -.0000000000010000000000005000), ('1.0e-13', -.00000000000010000000000000500), ('1.0e-14', -.000000000000010000000000000050), ('1.0e-15', -.0000000000000010000000000000005), ('1.0e-16', -.00000000000000010000000000000001), ('1.0e-17', -.000000000000000010000000000000000), ('1.0e-18', -.0000000000000000010000000000000000), ('1.0e-19', -.00000000000000000010000000000000000), ('1.0e-20', -.000000000000000000010000000000000000), ('1.0e-21', -.0000000000000000000010000000000000000), ('1.0e-22', -.00000000000000000000010000000000000000), ('1.0e-23', -.000000000000000000000010000000000000000), ('1.0e-24', -.0000000000000000000000010000000000000000), ('1.0e-25', -.00000000000000000000000010000000000000000), ('1.0e-26', -.000000000000000000000000010000000000000000), ('1.0e-27', -.0000000000000000000000000010000000000000000), ('1.0e-28', -.00000000000000000000000000010000000000000000), ('1.0e-29', -.000000000000000000000000000010000000000000000), ('1.0e-30', -.0000000000000000000000000000010000000000000000), ('1.0e-31', -.00000000000000000000000000000010000000000000000), ('1.0e-32', -.000000000000000000000000000000010000000000000000), ('1.0e-33', -.0000000000000000000000000000000010000000000000000), ('1.0e-34', -.00000000000000000000000000000000010000000000000000), ('1.0e-35', -.000000000000000000000000000000000010000000000000000), ('1.0e-36', -.0000000000000000000000000000000000010000000000000000), ('1.0e-37', -.00000000000000000000000000000000000010000000000000000), ('1.0e-38', -.000000000000000000000000000000000000010000000000000000), ('1.0e-39', -.0000000000000000000000000000000000000010000000000000000), ('1.0e-40', -.00000000000000000000000000000000000000010000000000000000)) SELECT '1-'||x, bc_result, ln(1.0-x::numeric), ln(1.0-x::numeric)-bc_result AS diff FROM t; -- input very close to but larger than 1 -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of LN(): -- -- for p in {1..40} -- do -- l=$(bc -ql <<< "scale=500 ; l(1+10^-$p)" | head -n 1) -- echo "('1.0e-$p', $l)," -- done WITH t(x, bc_result) AS (VALUES ('1.0e-1', .09531017980432486), ('1.0e-2', .009950330853168083), ('1.0e-3', .0009995003330835332), ('1.0e-4', .00009999500033330834), ('1.0e-5', .000009999950000333331), ('1.0e-6', .0000009999995000003333), ('1.0e-7', .00000009999999500000033), ('1.0e-8', .000000009999999950000000), ('1.0e-9', .0000000009999999995000000), ('1.0e-10', .00000000009999999999500000), ('1.0e-11', .000000000009999999999950000), ('1.0e-12', .0000000000009999999999995000), ('1.0e-13', .00000000000009999999999999500), ('1.0e-14', .000000000000009999999999999950), ('1.0e-15', .0000000000000009999999999999995), ('1.0e-16', .00000000000000010000000000000000), ('1.0e-17', .000000000000000010000000000000000), ('1.0e-18', .0000000000000000010000000000000000), ('1.0e-19', .00000000000000000010000000000000000), ('1.0e-20', .000000000000000000010000000000000000), ('1.0e-21', .0000000000000000000010000000000000000), ('1.0e-22', .00000000000000000000010000000000000000), ('1.0e-23', .000000000000000000000010000000000000000), ('1.0e-24', .0000000000000000000000010000000000000000), ('1.0e-25', .00000000000000000000000010000000000000000), ('1.0e-26', .000000000000000000000000010000000000000000), ('1.0e-27', .0000000000000000000000000010000000000000000), ('1.0e-28', .00000000000000000000000000010000000000000000), ('1.0e-29', .000000000000000000000000000010000000000000000), ('1.0e-30', .0000000000000000000000000000010000000000000000), ('1.0e-31', .00000000000000000000000000000010000000000000000), ('1.0e-32', .000000000000000000000000000000010000000000000000), ('1.0e-33', .0000000000000000000000000000000010000000000000000), ('1.0e-34', .00000000000000000000000000000000010000000000000000), ('1.0e-35', .000000000000000000000000000000000010000000000000000), ('1.0e-36', .0000000000000000000000000000000000010000000000000000), ('1.0e-37', .00000000000000000000000000000000000010000000000000000), ('1.0e-38', .000000000000000000000000000000000000010000000000000000), ('1.0e-39', .0000000000000000000000000000000000000010000000000000000), ('1.0e-40', .00000000000000000000000000000000000000010000000000000000)) SELECT '1+'||x, bc_result, ln(1.0+x::numeric), ln(1.0+x::numeric)-bc_result AS diff FROM t; -- input very large -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of LN(): -- -- for p in {1..40} -- do -- l=$(bc -ql <<< "scale=500 ; l(10^$p)" | head -n 1) -- echo "('1.0e$p', $l)," -- done WITH t(x, bc_result) AS (VALUES ('1.0e1', 2.3025850929940457), ('1.0e2', 4.6051701859880914), ('1.0e3', 6.9077552789821371), ('1.0e4', 9.2103403719761827), ('1.0e5', 11.512925464970228), ('1.0e6', 13.815510557964274), ('1.0e7', 16.118095650958320), ('1.0e8', 18.420680743952365), ('1.0e9', 20.723265836946411), ('1.0e10', 23.025850929940457), ('1.0e11', 25.328436022934503), ('1.0e12', 27.631021115928548), ('1.0e13', 29.933606208922594), ('1.0e14', 32.236191301916640), ('1.0e15', 34.538776394910685), ('1.0e16', 36.841361487904731), ('1.0e17', 39.143946580898777), ('1.0e18', 41.446531673892822), ('1.0e19', 43.749116766886868), ('1.0e20', 46.051701859880914), ('1.0e21', 48.354286952874959), ('1.0e22', 50.656872045869005), ('1.0e23', 52.959457138863051), ('1.0e24', 55.262042231857096), ('1.0e25', 57.564627324851142), ('1.0e26', 59.867212417845188), ('1.0e27', 62.169797510839233), ('1.0e28', 64.472382603833279), ('1.0e29', 66.774967696827325), ('1.0e30', 69.077552789821371), ('1.0e31', 71.380137882815416), ('1.0e32', 73.682722975809462), ('1.0e33', 75.985308068803508), ('1.0e34', 78.287893161797553), ('1.0e35', 80.590478254791599), ('1.0e36', 82.893063347785645), ('1.0e37', 85.195648440779690), ('1.0e38', 87.498233533773736), ('1.0e39', 89.800818626767782), ('1.0e40', 92.103403719761827)) SELECT x, bc_result, ln(x::numeric), ln(x::numeric)-bc_result AS diff FROM t; -- input huge -- -- bc(1) results computed with a scale of 1000 and truncated using the script -- below, and then rounded by hand to match the precision of LN(): -- -- for p in {1..10} -- do -- l=$(bc -ql <<< "scale=1000 ; l(10^${p}00)" | head -n 1) -- echo "('1.0e${p}00', $l)," -- done WITH t(x, bc_result) AS (VALUES ('1.0e100', 230.25850929940457), ('1.0e200', 460.51701859880914), ('1.0e300', 690.77552789821371), ('1.0e400', 921.03403719761827), ('1.0e500', 1151.2925464970228), ('1.0e600', 1381.5510557964274), ('1.0e700', 1611.8095650958320), ('1.0e800', 1842.0680743952365), ('1.0e900', 2072.3265836946411), ('1.0e1000', 2302.5850929940457)) SELECT x, bc_result, ln(x::numeric), ln(x::numeric)-bc_result AS diff FROM t; -- inputs with 1000 decimal places -- -- bc(1) results computed with a scale of 2000 and rounded to 1000 decimal -- places WITH t(x, bc_result) AS (VALUES (484990182159328900690402236933516249572671683638747490717351807610531884491845416923860371219625151551889257298200816555016472471293780254009492949585031653913930735918829139712249577547959394351523545901788627247613322896296041868431769047433229466634098452564756860190085118463828382895145244362033728480588969626012192733802377468089120757046364393407262957242230928854711898925295251902007136232994524624903257456111389508582206404271734668422903183500589303866613158037169610592539145461637447957948521714058034772237111009429638870236361143304703683377693378577075353794118557951847394763531830696578809001981568860219578880229402696449243344235099860421846016326538272155937175661905904288335499593232232926636205909086901191153907183842087577811871344870731324067822883041265129394268082883745408414994.8967939438561591657171240282983703914075472645212002662497023142663831371447287624846942598424990784971781730103682951722370983277124599054059027055336437808366784501932987082321905202623642371063626378290734289114618092750984153422293450048717769065428713836637664433167768445609659527458911187829232316677137895259433038764404970599325009178297626038331436654541552998098529141205301472138026818453893127265938030066392881979113522757891639646670670272542401773230506961559808927249585675430838495658225557294666522469887436551840596777627408780618586500922973500018513068499587683746133637919751545157547095670767246977244726331271787622126889459658539988980096764323712767863722912919120929339399753431689512753214200090670880647731689804555417871258907716687575767185444541243606329768784843125926070743277339790277626515824924290352180761378846035233155198504033292692893297993698953705472933411199778880561376633444249703838589180474329586470353212010427945060694794274109764269805332803290229, 1864.3702986939570026328504202935192533137907736189919154633800554877738455118081651650863235106905871352085850240570561347180517240105510505203972860921397909573687877993477806728098306202020229409548306695695574102950949468160529713610952021974630774784174851619325758380143625473386495586347322798415543385655090746985183329114860118551572428921774322172798724455202876781611633419444058398798142214904998877857425038669920064728855823072107227506485770367799671977282350083029452784747350395161797215115525867416898416360638482342253129160308632504217096916335590470843180746834864303790913372081974355613359678634194879425862536147988835528973291020680020540866655622823550861337486588647231688134992810403147262346312159819432914207194632564009749236609081399504118359354620598232725290537215007867979331582119891661859015726276335168158288396939655310210558566592649049602925182137256134162660116182293851038854455437841571331011002023088829768308520393956515509475418031437505751407687618234418262), (87190145885430429849953615409019208993240447426362428988181639909267773304254748257120061524000254226856815085523676417146197197996896030672521334101413071112068202429835905642444187493717977611730127126387257253646790849384975208460867137315507010888782632024640844766297185244443116696943912406389670302370461137850160539373600494054874979342373255280815156048999900951842673141766630630919020492255966628630634124452614590400422133958133100159154995520080124736657520969784129924799670552560034302960877087853678350801769339861812435411200669026902417951572668727488315537985378304242438181615160041688723201917323705450185975141141262578884689500612295576288125956289035673242989906973367691922065122033180281670221390667818909912035903387888639331486823729897326624516015340.0330856710565117793999512551468220085711713631167607285185762046751452975325645379302403715842570486302993296501788672462090620871511446272026693318239212657949496275318383141403236705902077406660768573015707706831878445598837931116223956945944726162551477136715847593742032488181481888084716920605114101902724395659898621880016853548602514706686907951229872573180602614761229992106144727082722940736406782659562775289407005631298246624198606031298081220736931229256511054595028182057216042683060059115371651410352645266000330509331097811566633211452233019461903115970558624057877018778178814946285827512359903934291318219271464841957435711594154280905473802599888081783098187210283997106131616471807951265003903143099667366508222327805543948921694362089860577380749774036318574113007382111997454202845559941557812813566442364810680529092880773126707073967537693927177460459341763934709686530005721141046645111784404932103241501569571235364365556796422998363930810983452790309019295181282099408260156, 1793.5767085750017553306932533574391150814202249805881581227430032600579405884415934520704053351781361105595296647510475380766428668443641914861849764330704062323054023252886955844207807229267936432730818329225450152491146839618683772020068682795388746108876393249306737841247788224204701299467519965182171772253974884845661168860422489046657965359832930382114760565628765599962013955588754803194908990025689040598990346417563277021386852342928910383706995866844541160576254266641602065102228267316550706943783591722246885978355472097314691737807509436806788803362444745551013400341861820755594413819894154786253014501454443272120342005711761286524843010157182464200556865694401941794983935172457481497909987740544409272349152397774548604845897687504977786762391359552407068124283290504752932824699865504970420939586707791994870941813718246825616335675307740641350673558328821461530563823677144691877374809441673507467507447891562257806191361453045937798278733402269265623588493124129181374135958668436774), (93936642222690597390233191619858485419795942047468396309991947772747208870873993801669373075421461116465960407843923269693395211616591453397070258466704654943689268224479477016161636938138334729982904232438440955361656138189836032891825113139184685132178764873033678116450665758561650355252211196676137179184043639278410827092182700922151290703747496962700158844772453483316974221113826173404445159281421213715669245417896170368554410830320000019029956317336703559699859949692222685614036912057150632902650913831404804982509990655560731349634628713944739168096272097122388116038119844786988276635032016787352796502360718569977397214936366251320294621522016.6483354941025384161536675750898007896744690911429670830432784905421638721478353275821072200938900938046264210604940707974410950770029535636602548377806284157951164875821446035013896786653932045182167021839184824627082391478016195098055107001433336586881395912782883663046617432598969149948351689103230162742769845955320418573803127107923535948653168889411316007796459064267436246637115946581149511513369842911210359447262641996566147462977170742544980481275049898092152042927981394239266559286915303786701737610786594006685748456635797125029722684151298695274097006242412384086302106763844070230264910503179385988626477852818174114043927841085089058972074427820150462261941575665882880501074676800316585217150509780489224388148722603385921057007086785238310735038314861960410473809826927329368597558806004392175746233568789445929554890241140656324160187253042639339549705859147930476532359840809944163908006480881926041259363654863689570520534301207043189181147254153307163555433328278834311658232337, 1510.4332713542154696529645934345554302578243896764921637693542962119938599884313210100957753316832762996428481801312323020427109678979117469716796746760060470871840325255146954580681101106876674367471955788143763250819168311353856748872452260808797135108102729064040463343792765872545182299889360257515315869180266759715933989413256377582681707188367254513700731642913479683031478361835565783219287780434673712341147656477670848734998849030451414278832848680301511646182446524915091598080243532068451726548537866633622180283865668708517173065893429240665300584705585310049892047293928733753369421499719516009692095913169665213597158441636480707309244604139865130782756488091268094213446272360006907802989573582755585110277620911226015342778471352130366770729972784317323917141031824334355639769512749560550167491709646539950725523461943580211843652293561678342656010571108219244870234329176123205423872844099992204896411752620881541000940129833754169391528449211839693800724450201835161044717173715867437)) SELECT trim_scale(ln(x::numeric)-bc_result) AS diff FROM t; -- -- Tests for LOG() (base 10) -- -- input very small, exact result known WITH t(x) AS (SELECT '1e-'||n FROM generate_series(1, 100) g(n)) SELECT x, log(x::numeric) FROM t; -- input very small, non-exact results -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of LN(): -- -- for p in {1..50..7} -- do -- for d in {9..1..3} -- do -- l=$(bc -ql <<< "scale=500 ; l($d*10^-$p) / l(10)" | head -n 1) -- echo "('${d}.0e-$p', $l)," -- done -- done WITH t(x, bc_result) AS (VALUES ('9.0e-1', -.04575749056067513), ('6.0e-1', -.2218487496163564), ('3.0e-1', -.5228787452803376), ('9.0e-8', -7.045757490560675), ('6.0e-8', -7.221848749616356), ('3.0e-8', -7.522878745280338), ('9.0e-15', -14.0457574905606751), ('6.0e-15', -14.2218487496163564), ('3.0e-15', -14.5228787452803376), ('9.0e-22', -21.04575749056067512540994), ('6.0e-22', -21.22184874961635636749123), ('3.0e-22', -21.52287874528033756270497), ('9.0e-29', -28.045757490560675125409944193490), ('6.0e-29', -28.221848749616356367491233202020), ('3.0e-29', -28.522878745280337562704972096745), ('9.0e-36', -35.0457574905606751254099441934897693816), ('6.0e-36', -35.2218487496163563674912332020203916640), ('3.0e-36', -35.5228787452803375627049720967448846908), ('9.0e-43', -42.04575749056067512540994419348976938159974227), ('6.0e-43', -42.22184874961635636749123320202039166403168125), ('3.0e-43', -42.52287874528033756270497209674488469079987114), ('9.0e-50', -49.045757490560675125409944193489769381599742271618608), ('6.0e-50', -49.221848749616356367491233202020391664031681254347196), ('3.0e-50', -49.522878745280337562704972096744884690799871135809304)) SELECT x, bc_result, log(x::numeric), log(x::numeric)-bc_result AS diff FROM t; -- input very close to but smaller than 1 -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of LN(): -- -- for p in {1..40..7} -- do -- for d in {9..1..3} -- do -- l=$(bc -ql <<< "scale=500 ; l(1-$d*10^-$p) / l(10)" | head -n 1) -- echo "('${d}.0e-$p', $l)," -- done -- done WITH t(x, bc_result) AS (VALUES ('9.0e-1', -1.0000000000000000), ('6.0e-1', -.3979400086720376), ('3.0e-1', -.1549019599857432), ('9.0e-8', -.000000039086505130185422), ('6.0e-8', -.000000026057669695925208), ('3.0e-8', -.000000013028834652530076), ('9.0e-15', -.0000000000000039086503371292840), ('6.0e-15', -.0000000000000026057668914195188), ('3.0e-15', -.0000000000000013028834457097574), ('9.0e-22', -.00000000000000000000039086503371292664), ('6.0e-22', -.00000000000000000000026057668914195110), ('3.0e-22', -.00000000000000000000013028834457097555), ('9.0e-29', -.000000000000000000000000000039086503371292664), ('6.0e-29', -.000000000000000000000000000026057668914195110), ('3.0e-29', -.000000000000000000000000000013028834457097555), ('9.0e-36', -.0000000000000000000000000000000000039086503371292664), ('6.0e-36', -.0000000000000000000000000000000000026057668914195110), ('3.0e-36', -.0000000000000000000000000000000000013028834457097555)) SELECT '1-'||x, bc_result, log(1.0-x::numeric), log(1.0-x::numeric)-bc_result AS diff FROM t; -- input very close to but larger than 1 -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of LN(): -- -- for p in {1..40..7} -- do -- for d in {9..1..3} -- do -- l=$(bc -ql <<< "scale=500 ; l(1+$d*10^-$p) / l(10)" | head -n 1) -- echo "('${d}.0e-$p', $l)," -- done -- done WITH t(x, bc_result) AS (VALUES ('9.0e-1', .2787536009528290), ('6.0e-1', .2041199826559248), ('3.0e-1', .1139433523068368), ('9.0e-8', .000000039086501612400118), ('6.0e-8', .000000026057668132465074), ('3.0e-8', .000000013028834261665042), ('9.0e-15', .0000000000000039086503371292489), ('6.0e-15', .0000000000000026057668914195031), ('3.0e-15', .0000000000000013028834457097535), ('9.0e-22', .00000000000000000000039086503371292664), ('6.0e-22', .00000000000000000000026057668914195110), ('3.0e-22', .00000000000000000000013028834457097555), ('9.0e-29', .000000000000000000000000000039086503371292664), ('6.0e-29', .000000000000000000000000000026057668914195110), ('3.0e-29', .000000000000000000000000000013028834457097555), ('9.0e-36', .0000000000000000000000000000000000039086503371292664), ('6.0e-36', .0000000000000000000000000000000000026057668914195110), ('3.0e-36', .0000000000000000000000000000000000013028834457097555)) SELECT '1+'||x, bc_result, log(1.0+x::numeric), log(1.0+x::numeric)-bc_result AS diff FROM t; -- input very large, exact result known WITH t(x) AS (SELECT '1e'||n FROM generate_series(1, 100) g(n)) SELECT x, log(x::numeric) FROM t; -- input very large, non-exact results -- -- bc(1) results computed with a scale of 500 and truncated using the script -- below, and then rounded by hand to match the precision of LN(): -- -- for p in {10..50..7} -- do -- for d in {2..9..3} -- do -- l=$(bc -ql <<< "scale=500 ; l($d*10^$p) / l(10)" | head -n 1) -- echo "('${d}.0e$p', $l)," -- done -- done WITH t(x, bc_result) AS (VALUES ('2.0e10', 10.301029995663981), ('5.0e10', 10.698970004336019), ('8.0e10', 10.903089986991944), ('2.0e17', 17.301029995663981), ('5.0e17', 17.698970004336019), ('8.0e17', 17.903089986991944), ('2.0e24', 24.301029995663981), ('5.0e24', 24.698970004336019), ('8.0e24', 24.903089986991944), ('2.0e31', 31.301029995663981), ('5.0e31', 31.698970004336019), ('8.0e31', 31.903089986991944), ('2.0e38', 38.301029995663981), ('5.0e38', 38.698970004336019), ('8.0e38', 38.903089986991944), ('2.0e45', 45.30102999566398), ('5.0e45', 45.69897000433602), ('8.0e45', 45.90308998699194)) SELECT x, bc_result, log(x::numeric), log(x::numeric)-bc_result AS diff FROM t; libpg_query-13-2.1.0/test/sql/postgres_regress/numerology.sql000066400000000000000000000041231413137616400243620ustar00rootroot00000000000000-- -- NUMEROLOGY -- Test various combinations of numeric types and functions. -- -- -- Test implicit type conversions -- This fails for Postgres v6.1 (and earlier?) -- so let's try explicit conversions for now - tgl 97/05/07 -- CREATE TABLE TEMP_FLOAT (f1 FLOAT8); INSERT INTO TEMP_FLOAT (f1) SELECT float8(f1) FROM INT4_TBL; INSERT INTO TEMP_FLOAT (f1) SELECT float8(f1) FROM INT2_TBL; SELECT '' AS ten, f1 FROM TEMP_FLOAT ORDER BY f1; -- int4 CREATE TABLE TEMP_INT4 (f1 INT4); INSERT INTO TEMP_INT4 (f1) SELECT int4(f1) FROM FLOAT8_TBL WHERE (f1 > -2147483647) AND (f1 < 2147483647); INSERT INTO TEMP_INT4 (f1) SELECT int4(f1) FROM INT2_TBL; SELECT '' AS nine, f1 FROM TEMP_INT4 ORDER BY f1; -- int2 CREATE TABLE TEMP_INT2 (f1 INT2); INSERT INTO TEMP_INT2 (f1) SELECT int2(f1) FROM FLOAT8_TBL WHERE (f1 >= -32767) AND (f1 <= 32767); INSERT INTO TEMP_INT2 (f1) SELECT int2(f1) FROM INT4_TBL WHERE (f1 >= -32767) AND (f1 <= 32767); SELECT '' AS five, f1 FROM TEMP_INT2 ORDER BY f1; -- -- Group-by combinations -- CREATE TABLE TEMP_GROUP (f1 INT4, f2 INT4, f3 FLOAT8); INSERT INTO TEMP_GROUP SELECT 1, (- i.f1), (- f.f1) FROM INT4_TBL i, FLOAT8_TBL f; INSERT INTO TEMP_GROUP SELECT 2, i.f1, f.f1 FROM INT4_TBL i, FLOAT8_TBL f; SELECT DISTINCT f1 AS two FROM TEMP_GROUP ORDER BY 1; SELECT f1 AS two, max(f3) AS max_float, min(f3) as min_float FROM TEMP_GROUP GROUP BY f1 ORDER BY two, max_float, min_float; -- GROUP BY a result column name is not legal per SQL92, but we accept it -- anyway (if the name is not the name of any column exposed by FROM). SELECT f1 AS two, max(f3) AS max_float, min(f3) AS min_float FROM TEMP_GROUP GROUP BY two ORDER BY two, max_float, min_float; SELECT f1 AS two, (max(f3) + 1) AS max_plus_1, (min(f3) - 1) AS min_minus_1 FROM TEMP_GROUP GROUP BY f1 ORDER BY two, min_minus_1; SELECT f1 AS two, max(f2) + min(f2) AS max_plus_min, min(f3) - 1 AS min_minus_1 FROM TEMP_GROUP GROUP BY f1 ORDER BY two, min_minus_1; DROP TABLE TEMP_INT2; DROP TABLE TEMP_INT4; DROP TABLE TEMP_FLOAT; DROP TABLE TEMP_GROUP; libpg_query-13-2.1.0/test/sql/postgres_regress/object_address.sql000066400000000000000000000234431413137616400251430ustar00rootroot00000000000000-- -- Test for pg_get_object_address -- -- Clean up in case a prior regression run failed SET client_min_messages TO 'warning'; DROP ROLE IF EXISTS regress_addr_user; RESET client_min_messages; CREATE USER regress_addr_user; -- Test generic object addressing/identification functions CREATE SCHEMA addr_nsp; SET search_path TO 'addr_nsp'; CREATE FOREIGN DATA WRAPPER addr_fdw; CREATE SERVER addr_fserv FOREIGN DATA WRAPPER addr_fdw; CREATE TEXT SEARCH DICTIONARY addr_ts_dict (template=simple); CREATE TEXT SEARCH CONFIGURATION addr_ts_conf (copy=english); CREATE TEXT SEARCH TEMPLATE addr_ts_temp (lexize=dsimple_lexize); CREATE TEXT SEARCH PARSER addr_ts_prs (start = prsd_start, gettoken = prsd_nexttoken, end = prsd_end, lextypes = prsd_lextype); CREATE TABLE addr_nsp.gentable ( a serial primary key CONSTRAINT a_chk CHECK (a > 0), b text DEFAULT 'hello'); CREATE TABLE addr_nsp.parttable ( a int PRIMARY KEY ) PARTITION BY RANGE (a); CREATE VIEW addr_nsp.genview AS SELECT * from addr_nsp.gentable; CREATE MATERIALIZED VIEW addr_nsp.genmatview AS SELECT * FROM addr_nsp.gentable; CREATE TYPE addr_nsp.gencomptype AS (a int); CREATE TYPE addr_nsp.genenum AS ENUM ('one', 'two'); CREATE FOREIGN TABLE addr_nsp.genftable (a int) SERVER addr_fserv; CREATE AGGREGATE addr_nsp.genaggr(int4) (sfunc = int4pl, stype = int4); CREATE DOMAIN addr_nsp.gendomain AS int4 CONSTRAINT domconstr CHECK (value > 0); CREATE FUNCTION addr_nsp.trig() RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN END; $$; CREATE TRIGGER t BEFORE INSERT ON addr_nsp.gentable FOR EACH ROW EXECUTE PROCEDURE addr_nsp.trig(); CREATE POLICY genpol ON addr_nsp.gentable; CREATE PROCEDURE addr_nsp.proc(int4) LANGUAGE SQL AS $$ $$; CREATE SERVER "integer" FOREIGN DATA WRAPPER addr_fdw; CREATE USER MAPPING FOR regress_addr_user SERVER "integer"; ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user IN SCHEMA public GRANT ALL ON TABLES TO regress_addr_user; ALTER DEFAULT PRIVILEGES FOR ROLE regress_addr_user REVOKE DELETE ON TABLES FROM regress_addr_user; -- this transform would be quite unsafe to leave lying around, -- except that the SQL language pays no attention to transforms: CREATE TRANSFORM FOR int LANGUAGE SQL ( FROM SQL WITH FUNCTION prsd_lextype(internal), TO SQL WITH FUNCTION int4recv(internal)); -- suppress warning that depends on wal_level SET client_min_messages = 'ERROR'; CREATE PUBLICATION addr_pub FOR TABLE addr_nsp.gentable; RESET client_min_messages; CREATE SUBSCRIPTION regress_addr_sub CONNECTION '' PUBLICATION bar WITH (connect = false, slot_name = NONE); CREATE STATISTICS addr_nsp.gentable_stat ON a, b FROM addr_nsp.gentable; -- test some error cases SELECT pg_get_object_address('stone', '{}', '{}'); SELECT pg_get_object_address('table', '{}', '{}'); SELECT pg_get_object_address('table', '{NULL}', '{}'); -- unrecognized object types DO $$ DECLARE objtype text; BEGIN FOR objtype IN VALUES ('toast table'), ('index column'), ('sequence column'), ('toast table column'), ('view column'), ('materialized view column') LOOP BEGIN PERFORM pg_get_object_address(objtype, '{one}', '{}'); EXCEPTION WHEN invalid_parameter_value THEN RAISE WARNING 'error for %: %', objtype, sqlerrm; END; END LOOP; END; $$; -- miscellaneous other errors select * from pg_get_object_address('operator of access method', '{btree,integer_ops,1}', '{int4,bool}'); select * from pg_get_object_address('operator of access method', '{btree,integer_ops,99}', '{int4,int4}'); select * from pg_get_object_address('function of access method', '{btree,integer_ops,1}', '{int4,bool}'); select * from pg_get_object_address('function of access method', '{btree,integer_ops,99}', '{int4,int4}'); DO $$ DECLARE objtype text; names text[]; args text[]; BEGIN FOR objtype IN VALUES ('table'), ('index'), ('sequence'), ('view'), ('materialized view'), ('foreign table'), ('table column'), ('foreign table column'), ('aggregate'), ('function'), ('procedure'), ('type'), ('cast'), ('table constraint'), ('domain constraint'), ('conversion'), ('default value'), ('operator'), ('operator class'), ('operator family'), ('rule'), ('trigger'), ('text search parser'), ('text search dictionary'), ('text search template'), ('text search configuration'), ('policy'), ('user mapping'), ('default acl'), ('transform'), ('operator of access method'), ('function of access method'), ('publication relation') LOOP FOR names IN VALUES ('{eins}'), ('{addr_nsp, zwei}'), ('{eins, zwei, drei}') LOOP FOR args IN VALUES ('{}'), ('{integer}') LOOP BEGIN PERFORM pg_get_object_address(objtype, names, args); EXCEPTION WHEN OTHERS THEN RAISE WARNING 'error for %,%,%: %', objtype, names, args, sqlerrm; END; END LOOP; END LOOP; END LOOP; END; $$; -- these object types cannot be qualified names SELECT pg_get_object_address('language', '{one}', '{}'); SELECT pg_get_object_address('language', '{one,two}', '{}'); SELECT pg_get_object_address('large object', '{123}', '{}'); SELECT pg_get_object_address('large object', '{123,456}', '{}'); SELECT pg_get_object_address('large object', '{blargh}', '{}'); SELECT pg_get_object_address('schema', '{one}', '{}'); SELECT pg_get_object_address('schema', '{one,two}', '{}'); SELECT pg_get_object_address('role', '{one}', '{}'); SELECT pg_get_object_address('role', '{one,two}', '{}'); SELECT pg_get_object_address('database', '{one}', '{}'); SELECT pg_get_object_address('database', '{one,two}', '{}'); SELECT pg_get_object_address('tablespace', '{one}', '{}'); SELECT pg_get_object_address('tablespace', '{one,two}', '{}'); SELECT pg_get_object_address('foreign-data wrapper', '{one}', '{}'); SELECT pg_get_object_address('foreign-data wrapper', '{one,two}', '{}'); SELECT pg_get_object_address('server', '{one}', '{}'); SELECT pg_get_object_address('server', '{one,two}', '{}'); SELECT pg_get_object_address('extension', '{one}', '{}'); SELECT pg_get_object_address('extension', '{one,two}', '{}'); SELECT pg_get_object_address('event trigger', '{one}', '{}'); SELECT pg_get_object_address('event trigger', '{one,two}', '{}'); SELECT pg_get_object_address('access method', '{one}', '{}'); SELECT pg_get_object_address('access method', '{one,two}', '{}'); SELECT pg_get_object_address('publication', '{one}', '{}'); SELECT pg_get_object_address('publication', '{one,two}', '{}'); SELECT pg_get_object_address('subscription', '{one}', '{}'); SELECT pg_get_object_address('subscription', '{one,two}', '{}'); -- test successful cases WITH objects (type, name, args) AS (VALUES ('table', '{addr_nsp, gentable}'::text[], '{}'::text[]), ('table', '{addr_nsp, parttable}'::text[], '{}'::text[]), ('index', '{addr_nsp, gentable_pkey}', '{}'), ('index', '{addr_nsp, parttable_pkey}', '{}'), ('sequence', '{addr_nsp, gentable_a_seq}', '{}'), -- toast table ('view', '{addr_nsp, genview}', '{}'), ('materialized view', '{addr_nsp, genmatview}', '{}'), ('foreign table', '{addr_nsp, genftable}', '{}'), ('table column', '{addr_nsp, gentable, b}', '{}'), ('foreign table column', '{addr_nsp, genftable, a}', '{}'), ('aggregate', '{addr_nsp, genaggr}', '{int4}'), ('function', '{pg_catalog, pg_identify_object}', '{pg_catalog.oid, pg_catalog.oid, int4}'), ('procedure', '{addr_nsp, proc}', '{int4}'), ('type', '{pg_catalog._int4}', '{}'), ('type', '{addr_nsp.gendomain}', '{}'), ('type', '{addr_nsp.gencomptype}', '{}'), ('type', '{addr_nsp.genenum}', '{}'), ('cast', '{int8}', '{int4}'), ('collation', '{default}', '{}'), ('table constraint', '{addr_nsp, gentable, a_chk}', '{}'), ('domain constraint', '{addr_nsp.gendomain}', '{domconstr}'), ('conversion', '{pg_catalog, koi8_r_to_mic}', '{}'), ('default value', '{addr_nsp, gentable, b}', '{}'), ('language', '{plpgsql}', '{}'), -- large object ('operator', '{+}', '{int4, int4}'), ('operator class', '{btree, int4_ops}', '{}'), ('operator family', '{btree, integer_ops}', '{}'), ('operator of access method', '{btree,integer_ops,1}', '{integer,integer}'), ('function of access method', '{btree,integer_ops,2}', '{integer,integer}'), ('rule', '{addr_nsp, genview, _RETURN}', '{}'), ('trigger', '{addr_nsp, gentable, t}', '{}'), ('schema', '{addr_nsp}', '{}'), ('text search parser', '{addr_ts_prs}', '{}'), ('text search dictionary', '{addr_ts_dict}', '{}'), ('text search template', '{addr_ts_temp}', '{}'), ('text search configuration', '{addr_ts_conf}', '{}'), ('role', '{regress_addr_user}', '{}'), -- database -- tablespace ('foreign-data wrapper', '{addr_fdw}', '{}'), ('server', '{addr_fserv}', '{}'), ('user mapping', '{regress_addr_user}', '{integer}'), ('default acl', '{regress_addr_user,public}', '{r}'), ('default acl', '{regress_addr_user}', '{r}'), -- extension -- event trigger ('policy', '{addr_nsp, gentable, genpol}', '{}'), ('transform', '{int}', '{sql}'), ('access method', '{btree}', '{}'), ('publication', '{addr_pub}', '{}'), ('publication relation', '{addr_nsp, gentable}', '{addr_pub}'), ('subscription', '{regress_addr_sub}', '{}'), ('statistics object', '{addr_nsp, gentable_stat}', '{}') ) SELECT (pg_identify_object(addr1.classid, addr1.objid, addr1.objsubid)).*, -- test roundtrip through pg_identify_object_as_address ROW(pg_identify_object(addr1.classid, addr1.objid, addr1.objsubid)) = ROW(pg_identify_object(addr2.classid, addr2.objid, addr2.objsubid)) FROM objects, pg_get_object_address(type, name, args) addr1, pg_identify_object_as_address(classid, objid, objsubid) ioa(typ,nms,args), pg_get_object_address(typ, nms, ioa.args) as addr2 ORDER BY addr1.classid, addr1.objid, addr1.objsubid; --- --- Cleanup resources --- DROP FOREIGN DATA WRAPPER addr_fdw CASCADE; DROP PUBLICATION addr_pub; DROP SUBSCRIPTION regress_addr_sub; DROP SCHEMA addr_nsp CASCADE; DROP OWNED BY regress_addr_user; DROP USER regress_addr_user; libpg_query-13-2.1.0/test/sql/postgres_regress/oid.sql000066400000000000000000000024471413137616400227440ustar00rootroot00000000000000-- -- OID -- CREATE TABLE OID_TBL(f1 oid); INSERT INTO OID_TBL(f1) VALUES ('1234'); INSERT INTO OID_TBL(f1) VALUES ('1235'); INSERT INTO OID_TBL(f1) VALUES ('987'); INSERT INTO OID_TBL(f1) VALUES ('-1040'); INSERT INTO OID_TBL(f1) VALUES ('99999999'); INSERT INTO OID_TBL(f1) VALUES ('5 '); INSERT INTO OID_TBL(f1) VALUES (' 10 '); -- leading/trailing hard tab is also allowed INSERT INTO OID_TBL(f1) VALUES (' 15 '); -- bad inputs INSERT INTO OID_TBL(f1) VALUES (''); INSERT INTO OID_TBL(f1) VALUES (' '); INSERT INTO OID_TBL(f1) VALUES ('asdfasd'); INSERT INTO OID_TBL(f1) VALUES ('99asdfasd'); INSERT INTO OID_TBL(f1) VALUES ('5 d'); INSERT INTO OID_TBL(f1) VALUES (' 5d'); INSERT INTO OID_TBL(f1) VALUES ('5 5'); INSERT INTO OID_TBL(f1) VALUES (' - 500'); INSERT INTO OID_TBL(f1) VALUES ('32958209582039852935'); INSERT INTO OID_TBL(f1) VALUES ('-23582358720398502385'); SELECT '' AS six, * FROM OID_TBL; SELECT '' AS one, o.* FROM OID_TBL o WHERE o.f1 = 1234; SELECT '' AS five, o.* FROM OID_TBL o WHERE o.f1 <> '1234'; SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 <= '1234'; SELECT '' AS two, o.* FROM OID_TBL o WHERE o.f1 < '1234'; SELECT '' AS four, o.* FROM OID_TBL o WHERE o.f1 >= '1234'; SELECT '' AS three, o.* FROM OID_TBL o WHERE o.f1 > '1234'; DROP TABLE OID_TBL; libpg_query-13-2.1.0/test/sql/postgres_regress/oidjoins.sql000066400000000000000000000715551413137616400240150ustar00rootroot00000000000000-- -- This is created by pgsql/src/tools/findoidjoins/make_oidjoins_check -- SELECT ctid, aggfnoid FROM pg_catalog.pg_aggregate fk WHERE aggfnoid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggfnoid); SELECT ctid, aggtransfn FROM pg_catalog.pg_aggregate fk WHERE aggtransfn != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggtransfn); SELECT ctid, aggfinalfn FROM pg_catalog.pg_aggregate fk WHERE aggfinalfn != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggfinalfn); SELECT ctid, aggcombinefn FROM pg_catalog.pg_aggregate fk WHERE aggcombinefn != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggcombinefn); SELECT ctid, aggserialfn FROM pg_catalog.pg_aggregate fk WHERE aggserialfn != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggserialfn); SELECT ctid, aggdeserialfn FROM pg_catalog.pg_aggregate fk WHERE aggdeserialfn != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggdeserialfn); SELECT ctid, aggmtransfn FROM pg_catalog.pg_aggregate fk WHERE aggmtransfn != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggmtransfn); SELECT ctid, aggminvtransfn FROM pg_catalog.pg_aggregate fk WHERE aggminvtransfn != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggminvtransfn); SELECT ctid, aggmfinalfn FROM pg_catalog.pg_aggregate fk WHERE aggmfinalfn != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.aggmfinalfn); SELECT ctid, aggsortop FROM pg_catalog.pg_aggregate fk WHERE aggsortop != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.aggsortop); SELECT ctid, aggtranstype FROM pg_catalog.pg_aggregate fk WHERE aggtranstype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.aggtranstype); SELECT ctid, aggmtranstype FROM pg_catalog.pg_aggregate fk WHERE aggmtranstype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.aggmtranstype); SELECT ctid, amhandler FROM pg_catalog.pg_am fk WHERE amhandler != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amhandler); SELECT ctid, amopfamily FROM pg_catalog.pg_amop fk WHERE amopfamily != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opfamily pk WHERE pk.oid = fk.amopfamily); SELECT ctid, amoplefttype FROM pg_catalog.pg_amop fk WHERE amoplefttype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.amoplefttype); SELECT ctid, amoprighttype FROM pg_catalog.pg_amop fk WHERE amoprighttype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.amoprighttype); SELECT ctid, amopopr FROM pg_catalog.pg_amop fk WHERE amopopr != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.amopopr); SELECT ctid, amopmethod FROM pg_catalog.pg_amop fk WHERE amopmethod != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_am pk WHERE pk.oid = fk.amopmethod); SELECT ctid, amopsortfamily FROM pg_catalog.pg_amop fk WHERE amopsortfamily != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opfamily pk WHERE pk.oid = fk.amopsortfamily); SELECT ctid, amprocfamily FROM pg_catalog.pg_amproc fk WHERE amprocfamily != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opfamily pk WHERE pk.oid = fk.amprocfamily); SELECT ctid, amproclefttype FROM pg_catalog.pg_amproc fk WHERE amproclefttype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.amproclefttype); SELECT ctid, amprocrighttype FROM pg_catalog.pg_amproc fk WHERE amprocrighttype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.amprocrighttype); SELECT ctid, amproc FROM pg_catalog.pg_amproc fk WHERE amproc != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.amproc); SELECT ctid, adrelid FROM pg_catalog.pg_attrdef fk WHERE adrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.adrelid); SELECT ctid, attrelid FROM pg_catalog.pg_attribute fk WHERE attrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.attrelid); SELECT ctid, atttypid FROM pg_catalog.pg_attribute fk WHERE atttypid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.atttypid); SELECT ctid, attcollation FROM pg_catalog.pg_attribute fk WHERE attcollation != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.attcollation); SELECT ctid, roleid FROM pg_catalog.pg_auth_members fk WHERE roleid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.roleid); SELECT ctid, member FROM pg_catalog.pg_auth_members fk WHERE member != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.member); SELECT ctid, grantor FROM pg_catalog.pg_auth_members fk WHERE grantor != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.grantor); SELECT ctid, castsource FROM pg_catalog.pg_cast fk WHERE castsource != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.castsource); SELECT ctid, casttarget FROM pg_catalog.pg_cast fk WHERE casttarget != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.casttarget); SELECT ctid, castfunc FROM pg_catalog.pg_cast fk WHERE castfunc != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.castfunc); SELECT ctid, relnamespace FROM pg_catalog.pg_class fk WHERE relnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.relnamespace); SELECT ctid, reltype FROM pg_catalog.pg_class fk WHERE reltype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.reltype); SELECT ctid, reloftype FROM pg_catalog.pg_class fk WHERE reloftype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.reloftype); SELECT ctid, relowner FROM pg_catalog.pg_class fk WHERE relowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.relowner); SELECT ctid, relam FROM pg_catalog.pg_class fk WHERE relam != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_am pk WHERE pk.oid = fk.relam); SELECT ctid, reltablespace FROM pg_catalog.pg_class fk WHERE reltablespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_tablespace pk WHERE pk.oid = fk.reltablespace); SELECT ctid, reltoastrelid FROM pg_catalog.pg_class fk WHERE reltoastrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.reltoastrelid); SELECT ctid, collnamespace FROM pg_catalog.pg_collation fk WHERE collnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.collnamespace); SELECT ctid, collowner FROM pg_catalog.pg_collation fk WHERE collowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.collowner); SELECT ctid, connamespace FROM pg_catalog.pg_constraint fk WHERE connamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.connamespace); SELECT ctid, conrelid FROM pg_catalog.pg_constraint fk WHERE conrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.conrelid); SELECT ctid, contypid FROM pg_catalog.pg_constraint fk WHERE contypid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.contypid); SELECT ctid, conindid FROM pg_catalog.pg_constraint fk WHERE conindid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.conindid); SELECT ctid, conparentid FROM pg_catalog.pg_constraint fk WHERE conparentid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_constraint pk WHERE pk.oid = fk.conparentid); SELECT ctid, confrelid FROM pg_catalog.pg_constraint fk WHERE confrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.confrelid); SELECT ctid, connamespace FROM pg_catalog.pg_conversion fk WHERE connamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.connamespace); SELECT ctid, conowner FROM pg_catalog.pg_conversion fk WHERE conowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.conowner); SELECT ctid, conproc FROM pg_catalog.pg_conversion fk WHERE conproc != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.conproc); SELECT ctid, datdba FROM pg_catalog.pg_database fk WHERE datdba != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.datdba); SELECT ctid, dattablespace FROM pg_catalog.pg_database fk WHERE dattablespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_tablespace pk WHERE pk.oid = fk.dattablespace); SELECT ctid, setdatabase FROM pg_catalog.pg_db_role_setting fk WHERE setdatabase != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_database pk WHERE pk.oid = fk.setdatabase); SELECT ctid, classid FROM pg_catalog.pg_depend fk WHERE classid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.classid); SELECT ctid, refclassid FROM pg_catalog.pg_depend fk WHERE refclassid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.refclassid); SELECT ctid, classoid FROM pg_catalog.pg_description fk WHERE classoid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.classoid); SELECT ctid, enumtypid FROM pg_catalog.pg_enum fk WHERE enumtypid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.enumtypid); SELECT ctid, extowner FROM pg_catalog.pg_extension fk WHERE extowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.extowner); SELECT ctid, extnamespace FROM pg_catalog.pg_extension fk WHERE extnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.extnamespace); SELECT ctid, fdwowner FROM pg_catalog.pg_foreign_data_wrapper fk WHERE fdwowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.fdwowner); SELECT ctid, srvowner FROM pg_catalog.pg_foreign_server fk WHERE srvowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.srvowner); SELECT ctid, srvfdw FROM pg_catalog.pg_foreign_server fk WHERE srvfdw != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_foreign_data_wrapper pk WHERE pk.oid = fk.srvfdw); SELECT ctid, indexrelid FROM pg_catalog.pg_index fk WHERE indexrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.indexrelid); SELECT ctid, indrelid FROM pg_catalog.pg_index fk WHERE indrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.indrelid); SELECT ctid, inhrelid FROM pg_catalog.pg_inherits fk WHERE inhrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.inhrelid); SELECT ctid, inhparent FROM pg_catalog.pg_inherits fk WHERE inhparent != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.inhparent); SELECT ctid, classoid FROM pg_catalog.pg_init_privs fk WHERE classoid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.classoid); SELECT ctid, lanowner FROM pg_catalog.pg_language fk WHERE lanowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.lanowner); SELECT ctid, lanplcallfoid FROM pg_catalog.pg_language fk WHERE lanplcallfoid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.lanplcallfoid); SELECT ctid, laninline FROM pg_catalog.pg_language fk WHERE laninline != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.laninline); SELECT ctid, lanvalidator FROM pg_catalog.pg_language fk WHERE lanvalidator != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.lanvalidator); SELECT ctid, loid FROM pg_catalog.pg_largeobject fk WHERE loid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_largeobject_metadata pk WHERE pk.oid = fk.loid); SELECT ctid, lomowner FROM pg_catalog.pg_largeobject_metadata fk WHERE lomowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.lomowner); SELECT ctid, nspowner FROM pg_catalog.pg_namespace fk WHERE nspowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.nspowner); SELECT ctid, opcmethod FROM pg_catalog.pg_opclass fk WHERE opcmethod != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_am pk WHERE pk.oid = fk.opcmethod); SELECT ctid, opcnamespace FROM pg_catalog.pg_opclass fk WHERE opcnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.opcnamespace); SELECT ctid, opcowner FROM pg_catalog.pg_opclass fk WHERE opcowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.opcowner); SELECT ctid, opcfamily FROM pg_catalog.pg_opclass fk WHERE opcfamily != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opfamily pk WHERE pk.oid = fk.opcfamily); SELECT ctid, opcintype FROM pg_catalog.pg_opclass fk WHERE opcintype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.opcintype); SELECT ctid, opckeytype FROM pg_catalog.pg_opclass fk WHERE opckeytype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.opckeytype); SELECT ctid, oprnamespace FROM pg_catalog.pg_operator fk WHERE oprnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.oprnamespace); SELECT ctid, oprowner FROM pg_catalog.pg_operator fk WHERE oprowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.oprowner); SELECT ctid, oprleft FROM pg_catalog.pg_operator fk WHERE oprleft != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.oprleft); SELECT ctid, oprright FROM pg_catalog.pg_operator fk WHERE oprright != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.oprright); SELECT ctid, oprresult FROM pg_catalog.pg_operator fk WHERE oprresult != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.oprresult); SELECT ctid, oprcom FROM pg_catalog.pg_operator fk WHERE oprcom != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.oprcom); SELECT ctid, oprnegate FROM pg_catalog.pg_operator fk WHERE oprnegate != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.oprnegate); SELECT ctid, oprcode FROM pg_catalog.pg_operator fk WHERE oprcode != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.oprcode); SELECT ctid, oprrest FROM pg_catalog.pg_operator fk WHERE oprrest != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.oprrest); SELECT ctid, oprjoin FROM pg_catalog.pg_operator fk WHERE oprjoin != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.oprjoin); SELECT ctid, opfmethod FROM pg_catalog.pg_opfamily fk WHERE opfmethod != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_am pk WHERE pk.oid = fk.opfmethod); SELECT ctid, opfnamespace FROM pg_catalog.pg_opfamily fk WHERE opfnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.opfnamespace); SELECT ctid, opfowner FROM pg_catalog.pg_opfamily fk WHERE opfowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.opfowner); SELECT ctid, partrelid FROM pg_catalog.pg_partitioned_table fk WHERE partrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.partrelid); SELECT ctid, partdefid FROM pg_catalog.pg_partitioned_table fk WHERE partdefid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.partdefid); SELECT ctid, polrelid FROM pg_catalog.pg_policy fk WHERE polrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.polrelid); SELECT ctid, pronamespace FROM pg_catalog.pg_proc fk WHERE pronamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.pronamespace); SELECT ctid, proowner FROM pg_catalog.pg_proc fk WHERE proowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.proowner); SELECT ctid, prolang FROM pg_catalog.pg_proc fk WHERE prolang != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_language pk WHERE pk.oid = fk.prolang); SELECT ctid, provariadic FROM pg_catalog.pg_proc fk WHERE provariadic != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.provariadic); SELECT ctid, prosupport FROM pg_catalog.pg_proc fk WHERE prosupport != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.prosupport); SELECT ctid, prorettype FROM pg_catalog.pg_proc fk WHERE prorettype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.prorettype); SELECT ctid, rngtypid FROM pg_catalog.pg_range fk WHERE rngtypid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.rngtypid); SELECT ctid, rngsubtype FROM pg_catalog.pg_range fk WHERE rngsubtype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.rngsubtype); SELECT ctid, rngcollation FROM pg_catalog.pg_range fk WHERE rngcollation != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.rngcollation); SELECT ctid, rngsubopc FROM pg_catalog.pg_range fk WHERE rngsubopc != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.rngsubopc); SELECT ctid, rngcanonical FROM pg_catalog.pg_range fk WHERE rngcanonical != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.rngcanonical); SELECT ctid, rngsubdiff FROM pg_catalog.pg_range fk WHERE rngsubdiff != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.rngsubdiff); SELECT ctid, ev_class FROM pg_catalog.pg_rewrite fk WHERE ev_class != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.ev_class); SELECT ctid, seqrelid FROM pg_catalog.pg_sequence fk WHERE seqrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.seqrelid); SELECT ctid, seqtypid FROM pg_catalog.pg_sequence fk WHERE seqtypid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.seqtypid); SELECT ctid, refclassid FROM pg_catalog.pg_shdepend fk WHERE refclassid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.refclassid); SELECT ctid, classoid FROM pg_catalog.pg_shdescription fk WHERE classoid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.classoid); SELECT ctid, starelid FROM pg_catalog.pg_statistic fk WHERE starelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.starelid); SELECT ctid, staop1 FROM pg_catalog.pg_statistic fk WHERE staop1 != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop1); SELECT ctid, staop2 FROM pg_catalog.pg_statistic fk WHERE staop2 != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop2); SELECT ctid, staop3 FROM pg_catalog.pg_statistic fk WHERE staop3 != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop3); SELECT ctid, staop4 FROM pg_catalog.pg_statistic fk WHERE staop4 != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop4); SELECT ctid, staop5 FROM pg_catalog.pg_statistic fk WHERE staop5 != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.staop5); SELECT ctid, stacoll1 FROM pg_catalog.pg_statistic fk WHERE stacoll1 != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll1); SELECT ctid, stacoll2 FROM pg_catalog.pg_statistic fk WHERE stacoll2 != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll2); SELECT ctid, stacoll3 FROM pg_catalog.pg_statistic fk WHERE stacoll3 != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll3); SELECT ctid, stacoll4 FROM pg_catalog.pg_statistic fk WHERE stacoll4 != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll4); SELECT ctid, stacoll5 FROM pg_catalog.pg_statistic fk WHERE stacoll5 != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.stacoll5); SELECT ctid, stxrelid FROM pg_catalog.pg_statistic_ext fk WHERE stxrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.stxrelid); SELECT ctid, stxnamespace FROM pg_catalog.pg_statistic_ext fk WHERE stxnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.stxnamespace); SELECT ctid, stxowner FROM pg_catalog.pg_statistic_ext fk WHERE stxowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.stxowner); SELECT ctid, stxoid FROM pg_catalog.pg_statistic_ext_data fk WHERE stxoid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_statistic_ext pk WHERE pk.oid = fk.stxoid); SELECT ctid, spcowner FROM pg_catalog.pg_tablespace fk WHERE spcowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.spcowner); SELECT ctid, trftype FROM pg_catalog.pg_transform fk WHERE trftype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.trftype); SELECT ctid, trflang FROM pg_catalog.pg_transform fk WHERE trflang != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_language pk WHERE pk.oid = fk.trflang); SELECT ctid, trffromsql FROM pg_catalog.pg_transform fk WHERE trffromsql != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.trffromsql); SELECT ctid, trftosql FROM pg_catalog.pg_transform fk WHERE trftosql != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.trftosql); SELECT ctid, tgrelid FROM pg_catalog.pg_trigger fk WHERE tgrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.tgrelid); SELECT ctid, tgparentid FROM pg_catalog.pg_trigger fk WHERE tgparentid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_trigger pk WHERE pk.oid = fk.tgparentid); SELECT ctid, tgfoid FROM pg_catalog.pg_trigger fk WHERE tgfoid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.tgfoid); SELECT ctid, tgconstrrelid FROM pg_catalog.pg_trigger fk WHERE tgconstrrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.tgconstrrelid); SELECT ctid, tgconstrindid FROM pg_catalog.pg_trigger fk WHERE tgconstrindid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.tgconstrindid); SELECT ctid, tgconstraint FROM pg_catalog.pg_trigger fk WHERE tgconstraint != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_constraint pk WHERE pk.oid = fk.tgconstraint); SELECT ctid, cfgnamespace FROM pg_catalog.pg_ts_config fk WHERE cfgnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.cfgnamespace); SELECT ctid, cfgowner FROM pg_catalog.pg_ts_config fk WHERE cfgowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.cfgowner); SELECT ctid, cfgparser FROM pg_catalog.pg_ts_config fk WHERE cfgparser != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_ts_parser pk WHERE pk.oid = fk.cfgparser); SELECT ctid, mapcfg FROM pg_catalog.pg_ts_config_map fk WHERE mapcfg != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_ts_config pk WHERE pk.oid = fk.mapcfg); SELECT ctid, mapdict FROM pg_catalog.pg_ts_config_map fk WHERE mapdict != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_ts_dict pk WHERE pk.oid = fk.mapdict); SELECT ctid, dictnamespace FROM pg_catalog.pg_ts_dict fk WHERE dictnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.dictnamespace); SELECT ctid, dictowner FROM pg_catalog.pg_ts_dict fk WHERE dictowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.dictowner); SELECT ctid, dicttemplate FROM pg_catalog.pg_ts_dict fk WHERE dicttemplate != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_ts_template pk WHERE pk.oid = fk.dicttemplate); SELECT ctid, prsnamespace FROM pg_catalog.pg_ts_parser fk WHERE prsnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.prsnamespace); SELECT ctid, prsstart FROM pg_catalog.pg_ts_parser fk WHERE prsstart != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.prsstart); SELECT ctid, prstoken FROM pg_catalog.pg_ts_parser fk WHERE prstoken != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.prstoken); SELECT ctid, prsend FROM pg_catalog.pg_ts_parser fk WHERE prsend != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.prsend); SELECT ctid, prsheadline FROM pg_catalog.pg_ts_parser fk WHERE prsheadline != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.prsheadline); SELECT ctid, prslextype FROM pg_catalog.pg_ts_parser fk WHERE prslextype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.prslextype); SELECT ctid, tmplnamespace FROM pg_catalog.pg_ts_template fk WHERE tmplnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.tmplnamespace); SELECT ctid, tmplinit FROM pg_catalog.pg_ts_template fk WHERE tmplinit != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.tmplinit); SELECT ctid, tmpllexize FROM pg_catalog.pg_ts_template fk WHERE tmpllexize != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.tmpllexize); SELECT ctid, typnamespace FROM pg_catalog.pg_type fk WHERE typnamespace != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_namespace pk WHERE pk.oid = fk.typnamespace); SELECT ctid, typowner FROM pg_catalog.pg_type fk WHERE typowner != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_authid pk WHERE pk.oid = fk.typowner); SELECT ctid, typrelid FROM pg_catalog.pg_type fk WHERE typrelid != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_class pk WHERE pk.oid = fk.typrelid); SELECT ctid, typelem FROM pg_catalog.pg_type fk WHERE typelem != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.typelem); SELECT ctid, typarray FROM pg_catalog.pg_type fk WHERE typarray != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.typarray); SELECT ctid, typinput FROM pg_catalog.pg_type fk WHERE typinput != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.typinput); SELECT ctid, typoutput FROM pg_catalog.pg_type fk WHERE typoutput != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.typoutput); SELECT ctid, typreceive FROM pg_catalog.pg_type fk WHERE typreceive != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.typreceive); SELECT ctid, typsend FROM pg_catalog.pg_type fk WHERE typsend != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.typsend); SELECT ctid, typmodin FROM pg_catalog.pg_type fk WHERE typmodin != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.typmodin); SELECT ctid, typmodout FROM pg_catalog.pg_type fk WHERE typmodout != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.typmodout); SELECT ctid, typanalyze FROM pg_catalog.pg_type fk WHERE typanalyze != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_proc pk WHERE pk.oid = fk.typanalyze); SELECT ctid, typbasetype FROM pg_catalog.pg_type fk WHERE typbasetype != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.typbasetype); SELECT ctid, typcollation FROM pg_catalog.pg_type fk WHERE typcollation != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.typcollation); SELECT ctid, conpfeqop FROM (SELECT ctid, unnest(conpfeqop) AS conpfeqop FROM pg_catalog.pg_constraint) fk WHERE conpfeqop != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.conpfeqop); SELECT ctid, conppeqop FROM (SELECT ctid, unnest(conppeqop) AS conppeqop FROM pg_catalog.pg_constraint) fk WHERE conppeqop != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.conppeqop); SELECT ctid, conffeqop FROM (SELECT ctid, unnest(conffeqop) AS conffeqop FROM pg_catalog.pg_constraint) fk WHERE conffeqop != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.conffeqop); SELECT ctid, conexclop FROM (SELECT ctid, unnest(conexclop) AS conexclop FROM pg_catalog.pg_constraint) fk WHERE conexclop != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_operator pk WHERE pk.oid = fk.conexclop); SELECT ctid, indcollation FROM (SELECT ctid, unnest(indcollation) AS indcollation FROM pg_catalog.pg_index) fk WHERE indcollation != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.indcollation); SELECT ctid, indclass FROM (SELECT ctid, unnest(indclass) AS indclass FROM pg_catalog.pg_index) fk WHERE indclass != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.indclass); SELECT ctid, partclass FROM (SELECT ctid, unnest(partclass) AS partclass FROM pg_catalog.pg_partitioned_table) fk WHERE partclass != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_opclass pk WHERE pk.oid = fk.partclass); SELECT ctid, partcollation FROM (SELECT ctid, unnest(partcollation) AS partcollation FROM pg_catalog.pg_partitioned_table) fk WHERE partcollation != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_collation pk WHERE pk.oid = fk.partcollation); SELECT ctid, proargtypes FROM (SELECT ctid, unnest(proargtypes) AS proargtypes FROM pg_catalog.pg_proc) fk WHERE proargtypes != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.proargtypes); SELECT ctid, proallargtypes FROM (SELECT ctid, unnest(proallargtypes) AS proallargtypes FROM pg_catalog.pg_proc) fk WHERE proallargtypes != 0 AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type pk WHERE pk.oid = fk.proallargtypes); libpg_query-13-2.1.0/test/sql/postgres_regress/opr_sanity.sql000066400000000000000000001543471413137616400243670ustar00rootroot00000000000000-- -- OPR_SANITY -- Sanity checks for common errors in making operator/procedure system tables: -- pg_operator, pg_proc, pg_cast, pg_conversion, pg_aggregate, pg_am, -- pg_amop, pg_amproc, pg_opclass, pg_opfamily, pg_index. -- -- Every test failure in this file should be closely inspected. -- The description of the failing test should be read carefully before -- adjusting the expected output. In most cases, the queries should -- not find *any* matching entries. -- -- NB: we assume the oidjoins test will have caught any dangling links, -- that is OID or REGPROC fields that are not zero and do not match some -- row in the linked-to table. However, if we want to enforce that a link -- field can't be 0, we have to check it here. -- -- NB: run this test earlier than the create_operator test, because -- that test creates some bogus operators... -- Helper functions to deal with cases where binary-coercible matches are -- allowed. -- This should match IsBinaryCoercible() in parse_coerce.c. -- It doesn't currently know about some cases, notably domains, anyelement, -- anynonarray, anyenum, or record, but it doesn't need to (yet). create function binary_coercible(oid, oid) returns bool as $$ begin if $1 = $2 then return true; end if; if EXISTS(select 1 from pg_catalog.pg_cast where castsource = $1 and casttarget = $2 and castmethod = 'b' and castcontext = 'i') then return true; end if; if $2 = 'pg_catalog.any'::pg_catalog.regtype then return true; end if; if $2 = 'pg_catalog.anyarray'::pg_catalog.regtype then if EXISTS(select 1 from pg_catalog.pg_type where oid = $1 and typelem != 0 and typlen = -1) then return true; end if; end if; if $2 = 'pg_catalog.anyrange'::pg_catalog.regtype then if (select typtype from pg_catalog.pg_type where oid = $1) = 'r' then return true; end if; end if; return false; end $$ language plpgsql strict stable; -- This one ignores castcontext, so it will allow cases where an explicit -- (but still binary) cast would be required to convert the input type. -- We don't currently use this for any tests in this file, but it is a -- reasonable alternative definition for some scenarios. create function explicitly_binary_coercible(oid, oid) returns bool as $$ begin if $1 = $2 then return true; end if; if EXISTS(select 1 from pg_catalog.pg_cast where castsource = $1 and casttarget = $2 and castmethod = 'b') then return true; end if; if $2 = 'pg_catalog.any'::pg_catalog.regtype then return true; end if; if $2 = 'pg_catalog.anyarray'::pg_catalog.regtype then if EXISTS(select 1 from pg_catalog.pg_type where oid = $1 and typelem != 0 and typlen = -1) then return true; end if; end if; if $2 = 'pg_catalog.anyrange'::pg_catalog.regtype then if (select typtype from pg_catalog.pg_type where oid = $1) = 'r' then return true; end if; end if; return false; end $$ language plpgsql strict stable; -- **************** pg_proc **************** -- Look for illegal values in pg_proc fields. SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE p1.prolang = 0 OR p1.prorettype = 0 OR p1.pronargs < 0 OR p1.pronargdefaults < 0 OR p1.pronargdefaults > p1.pronargs OR array_lower(p1.proargtypes, 1) != 0 OR array_upper(p1.proargtypes, 1) != p1.pronargs-1 OR 0::oid = ANY (p1.proargtypes) OR procost <= 0 OR CASE WHEN proretset THEN prorows <= 0 ELSE prorows != 0 END OR prokind NOT IN ('f', 'a', 'w', 'p') OR provolatile NOT IN ('i', 's', 'v') OR proparallel NOT IN ('s', 'r', 'u'); -- prosrc should never be null or empty SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE prosrc IS NULL OR prosrc = '' OR prosrc = '-'; -- proretset should only be set for normal functions SELECT p1.oid, p1.proname FROM pg_proc AS p1 WHERE proretset AND prokind != 'f'; -- currently, no built-in functions should be SECURITY DEFINER; -- this might change in future, but there will probably never be many. SELECT p1.oid, p1.proname FROM pg_proc AS p1 WHERE prosecdef ORDER BY 1; -- pronargdefaults should be 0 iff proargdefaults is null SELECT p1.oid, p1.proname FROM pg_proc AS p1 WHERE (pronargdefaults <> 0) != (proargdefaults IS NOT NULL); -- probin should be non-empty for C functions, null everywhere else SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE prolang = 13 AND (probin IS NULL OR probin = '' OR probin = '-'); SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE prolang != 13 AND probin IS NOT NULL; -- Look for conflicting proc definitions (same names and input datatypes). -- (This test should be dead code now that we have the unique index -- pg_proc_proname_args_nsp_index, but I'll leave it in anyway.) SELECT p1.oid, p1.proname, p2.oid, p2.proname FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid != p2.oid AND p1.proname = p2.proname AND p1.pronargs = p2.pronargs AND p1.proargtypes = p2.proargtypes; -- Considering only built-in procs (prolang = 12), look for multiple uses -- of the same internal function (ie, matching prosrc fields). It's OK to -- have several entries with different pronames for the same internal function, -- but conflicts in the number of arguments and other critical items should -- be complained of. (We don't check data types here; see next query.) -- Note: ignore aggregate functions here, since they all point to the same -- dummy built-in function. SELECT p1.oid, p1.proname, p2.oid, p2.proname FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid < p2.oid AND p1.prosrc = p2.prosrc AND p1.prolang = 12 AND p2.prolang = 12 AND (p1.prokind != 'a' OR p2.prokind != 'a') AND (p1.prolang != p2.prolang OR p1.prokind != p2.prokind OR p1.prosecdef != p2.prosecdef OR p1.proleakproof != p2.proleakproof OR p1.proisstrict != p2.proisstrict OR p1.proretset != p2.proretset OR p1.provolatile != p2.provolatile OR p1.pronargs != p2.pronargs); -- Look for uses of different type OIDs in the argument/result type fields -- for different aliases of the same built-in function. -- This indicates that the types are being presumed to be binary-equivalent, -- or that the built-in function is prepared to deal with different types. -- That's not wrong, necessarily, but we make lists of all the types being -- so treated. Note that the expected output of this part of the test will -- need to be modified whenever new pairs of types are made binary-equivalent, -- or when new polymorphic built-in functions are added! -- Note: ignore aggregate functions here, since they all point to the same -- dummy built-in function. Likewise, ignore range constructor functions. SELECT DISTINCT p1.prorettype::regtype, p2.prorettype::regtype FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid != p2.oid AND p1.prosrc = p2.prosrc AND p1.prolang = 12 AND p2.prolang = 12 AND p1.prokind != 'a' AND p2.prokind != 'a' AND p1.prosrc NOT LIKE E'range\\_constructor_' AND p2.prosrc NOT LIKE E'range\\_constructor_' AND (p1.prorettype < p2.prorettype) ORDER BY 1, 2; SELECT DISTINCT p1.proargtypes[0]::regtype, p2.proargtypes[0]::regtype FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid != p2.oid AND p1.prosrc = p2.prosrc AND p1.prolang = 12 AND p2.prolang = 12 AND p1.prokind != 'a' AND p2.prokind != 'a' AND p1.prosrc NOT LIKE E'range\\_constructor_' AND p2.prosrc NOT LIKE E'range\\_constructor_' AND (p1.proargtypes[0] < p2.proargtypes[0]) ORDER BY 1, 2; SELECT DISTINCT p1.proargtypes[1]::regtype, p2.proargtypes[1]::regtype FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid != p2.oid AND p1.prosrc = p2.prosrc AND p1.prolang = 12 AND p2.prolang = 12 AND p1.prokind != 'a' AND p2.prokind != 'a' AND p1.prosrc NOT LIKE E'range\\_constructor_' AND p2.prosrc NOT LIKE E'range\\_constructor_' AND (p1.proargtypes[1] < p2.proargtypes[1]) ORDER BY 1, 2; SELECT DISTINCT p1.proargtypes[2]::regtype, p2.proargtypes[2]::regtype FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid != p2.oid AND p1.prosrc = p2.prosrc AND p1.prolang = 12 AND p2.prolang = 12 AND p1.prokind != 'a' AND p2.prokind != 'a' AND (p1.proargtypes[2] < p2.proargtypes[2]) ORDER BY 1, 2; SELECT DISTINCT p1.proargtypes[3]::regtype, p2.proargtypes[3]::regtype FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid != p2.oid AND p1.prosrc = p2.prosrc AND p1.prolang = 12 AND p2.prolang = 12 AND p1.prokind != 'a' AND p2.prokind != 'a' AND (p1.proargtypes[3] < p2.proargtypes[3]) ORDER BY 1, 2; SELECT DISTINCT p1.proargtypes[4]::regtype, p2.proargtypes[4]::regtype FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid != p2.oid AND p1.prosrc = p2.prosrc AND p1.prolang = 12 AND p2.prolang = 12 AND p1.prokind != 'a' AND p2.prokind != 'a' AND (p1.proargtypes[4] < p2.proargtypes[4]) ORDER BY 1, 2; SELECT DISTINCT p1.proargtypes[5]::regtype, p2.proargtypes[5]::regtype FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid != p2.oid AND p1.prosrc = p2.prosrc AND p1.prolang = 12 AND p2.prolang = 12 AND p1.prokind != 'a' AND p2.prokind != 'a' AND (p1.proargtypes[5] < p2.proargtypes[5]) ORDER BY 1, 2; SELECT DISTINCT p1.proargtypes[6]::regtype, p2.proargtypes[6]::regtype FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid != p2.oid AND p1.prosrc = p2.prosrc AND p1.prolang = 12 AND p2.prolang = 12 AND p1.prokind != 'a' AND p2.prokind != 'a' AND (p1.proargtypes[6] < p2.proargtypes[6]) ORDER BY 1, 2; SELECT DISTINCT p1.proargtypes[7]::regtype, p2.proargtypes[7]::regtype FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid != p2.oid AND p1.prosrc = p2.prosrc AND p1.prolang = 12 AND p2.prolang = 12 AND p1.prokind != 'a' AND p2.prokind != 'a' AND (p1.proargtypes[7] < p2.proargtypes[7]) ORDER BY 1, 2; -- Look for functions that return type "internal" and do not have any -- "internal" argument. Such a function would be a security hole since -- it might be used to call an internal function from an SQL command. -- As of 7.3 this query should find only internal_in, which is safe because -- it always throws an error when called. SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE p1.prorettype = 'internal'::regtype AND NOT 'internal'::regtype = ANY (p1.proargtypes); -- Look for functions that return a polymorphic type and do not have any -- polymorphic argument. Calls of such functions would be unresolvable -- at parse time. As of 9.6 this query should find only some input functions -- and GiST support functions associated with these pseudotypes. SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE p1.prorettype IN ('anyelement'::regtype, 'anyarray'::regtype, 'anynonarray'::regtype, 'anyenum'::regtype) AND NOT ('anyelement'::regtype = ANY (p1.proargtypes) OR 'anyarray'::regtype = ANY (p1.proargtypes) OR 'anynonarray'::regtype = ANY (p1.proargtypes) OR 'anyenum'::regtype = ANY (p1.proargtypes) OR 'anyrange'::regtype = ANY (p1.proargtypes)) ORDER BY 2; -- anyrange is tighter than the rest, can only resolve from anyrange input SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE p1.prorettype = 'anyrange'::regtype AND NOT 'anyrange'::regtype = ANY (p1.proargtypes) ORDER BY 2; -- similarly for the anycompatible family SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE p1.prorettype IN ('anycompatible'::regtype, 'anycompatiblearray'::regtype, 'anycompatiblenonarray'::regtype) AND NOT ('anycompatible'::regtype = ANY (p1.proargtypes) OR 'anycompatiblearray'::regtype = ANY (p1.proargtypes) OR 'anycompatiblenonarray'::regtype = ANY (p1.proargtypes) OR 'anycompatiblerange'::regtype = ANY (p1.proargtypes)) ORDER BY 2; SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE p1.prorettype = 'anycompatiblerange'::regtype AND NOT 'anycompatiblerange'::regtype = ANY (p1.proargtypes) ORDER BY 2; -- Look for functions that accept cstring and are neither datatype input -- functions nor encoding conversion functions. It's almost never a good -- idea to use cstring input for a function meant to be called from SQL; -- text should be used instead, because cstring lacks suitable casts. -- As of 9.6 this query should find only cstring_out and cstring_send. -- However, we must manually exclude shell_in, which might or might not be -- rejected by the EXISTS clause depending on whether there are currently -- any shell types. SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE 'cstring'::regtype = ANY (p1.proargtypes) AND NOT EXISTS(SELECT 1 FROM pg_type WHERE typinput = p1.oid) AND NOT EXISTS(SELECT 1 FROM pg_conversion WHERE conproc = p1.oid) AND p1.oid != 'shell_in(cstring)'::regprocedure ORDER BY 1; -- Likewise, look for functions that return cstring and aren't datatype output -- functions nor typmod output functions. -- As of 9.6 this query should find only cstring_in and cstring_recv. -- However, we must manually exclude shell_out. SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE p1.prorettype = 'cstring'::regtype AND NOT EXISTS(SELECT 1 FROM pg_type WHERE typoutput = p1.oid) AND NOT EXISTS(SELECT 1 FROM pg_type WHERE typmodout = p1.oid) AND p1.oid != 'shell_out(void)'::regprocedure ORDER BY 1; -- Check for length inconsistencies between the various argument-info arrays. SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE proallargtypes IS NOT NULL AND array_length(proallargtypes,1) < array_length(proargtypes,1); SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE proargmodes IS NOT NULL AND array_length(proargmodes,1) < array_length(proargtypes,1); SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE proargnames IS NOT NULL AND array_length(proargnames,1) < array_length(proargtypes,1); SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE proallargtypes IS NOT NULL AND proargmodes IS NOT NULL AND array_length(proallargtypes,1) <> array_length(proargmodes,1); SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE proallargtypes IS NOT NULL AND proargnames IS NOT NULL AND array_length(proallargtypes,1) <> array_length(proargnames,1); SELECT p1.oid, p1.proname FROM pg_proc as p1 WHERE proargmodes IS NOT NULL AND proargnames IS NOT NULL AND array_length(proargmodes,1) <> array_length(proargnames,1); -- Check that proallargtypes matches proargtypes SELECT p1.oid, p1.proname, p1.proargtypes, p1.proallargtypes, p1.proargmodes FROM pg_proc as p1 WHERE proallargtypes IS NOT NULL AND ARRAY(SELECT unnest(proargtypes)) <> ARRAY(SELECT proallargtypes[i] FROM generate_series(1, array_length(proallargtypes, 1)) g(i) WHERE proargmodes IS NULL OR proargmodes[i] IN ('i', 'b', 'v')); -- Check for prosupport functions with the wrong signature SELECT p1.oid, p1.proname, p2.oid, p2.proname FROM pg_proc AS p1, pg_proc AS p2 WHERE p2.oid = p1.prosupport AND (p2.prorettype != 'internal'::regtype OR p2.proretset OR p2.pronargs != 1 OR p2.proargtypes[0] != 'internal'::regtype); -- Insist that all built-in pg_proc entries have descriptions SELECT p1.oid, p1.proname FROM pg_proc as p1 LEFT JOIN pg_description as d ON p1.tableoid = d.classoid and p1.oid = d.objoid and d.objsubid = 0 WHERE d.classoid IS NULL AND p1.oid <= 9999; -- List of built-in leakproof functions -- -- Leakproof functions should only be added after carefully -- scrutinizing all possibly executed codepaths for possible -- information leaks. Don't add functions here unless you know what a -- leakproof function is. If unsure, don't mark it as such. -- temporarily disable fancy output, so catalog changes create less diff noise \a\t SELECT p1.oid::regprocedure FROM pg_proc p1 JOIN pg_namespace pn ON pronamespace = pn.oid WHERE nspname = 'pg_catalog' AND proleakproof ORDER BY 1; -- restore normal output mode \a\t -- List of functions used by libpq's fe-lobj.c -- -- If the output of this query changes, you probably broke libpq. -- lo_initialize() assumes that there will be at most one match for -- each listed name. select proname, oid from pg_catalog.pg_proc where proname in ( 'lo_open', 'lo_close', 'lo_creat', 'lo_create', 'lo_unlink', 'lo_lseek', 'lo_lseek64', 'lo_tell', 'lo_tell64', 'lo_truncate', 'lo_truncate64', 'loread', 'lowrite') and pronamespace = (select oid from pg_catalog.pg_namespace where nspname = 'pg_catalog') order by 1; -- Check that all immutable functions are marked parallel safe SELECT p1.oid, p1.proname FROM pg_proc AS p1 WHERE provolatile = 'i' AND proparallel = 'u'; -- **************** pg_cast **************** -- Catch bogus values in pg_cast columns (other than cases detected by -- oidjoins test). SELECT * FROM pg_cast c WHERE castsource = 0 OR casttarget = 0 OR castcontext NOT IN ('e', 'a', 'i') OR castmethod NOT IN ('f', 'b' ,'i'); -- Check that castfunc is nonzero only for cast methods that need a function, -- and zero otherwise SELECT * FROM pg_cast c WHERE (castmethod = 'f' AND castfunc = 0) OR (castmethod IN ('b', 'i') AND castfunc <> 0); -- Look for casts to/from the same type that aren't length coercion functions. -- (We assume they are length coercions if they take multiple arguments.) -- Such entries are not necessarily harmful, but they are useless. SELECT * FROM pg_cast c WHERE castsource = casttarget AND castfunc = 0; SELECT c.* FROM pg_cast c, pg_proc p WHERE c.castfunc = p.oid AND p.pronargs < 2 AND castsource = casttarget; -- Look for cast functions that don't have the right signature. The -- argument and result types in pg_proc must be the same as, or binary -- compatible with, what it says in pg_cast. -- As a special case, we allow casts from CHAR(n) that use functions -- declared to take TEXT. This does not pass the binary-coercibility test -- because CHAR(n)-to-TEXT normally invokes rtrim(). However, the results -- are the same, so long as the function is one that ignores trailing blanks. SELECT c.* FROM pg_cast c, pg_proc p WHERE c.castfunc = p.oid AND (p.pronargs < 1 OR p.pronargs > 3 OR NOT (binary_coercible(c.castsource, p.proargtypes[0]) OR (c.castsource = 'character'::regtype AND p.proargtypes[0] = 'text'::regtype)) OR NOT binary_coercible(p.prorettype, c.casttarget)); SELECT c.* FROM pg_cast c, pg_proc p WHERE c.castfunc = p.oid AND ((p.pronargs > 1 AND p.proargtypes[1] != 'int4'::regtype) OR (p.pronargs > 2 AND p.proargtypes[2] != 'bool'::regtype)); -- Look for binary compatible casts that do not have the reverse -- direction registered as well, or where the reverse direction is not -- also binary compatible. This is legal, but usually not intended. -- As of 7.4, this finds the casts from text and varchar to bpchar, because -- those are binary-compatible while the reverse way goes through rtrim(). -- As of 8.2, this finds the cast from cidr to inet, because that is a -- trivial binary coercion while the other way goes through inet_to_cidr(). -- As of 8.3, this finds the casts from xml to text, varchar, and bpchar, -- because those are binary-compatible while the reverse goes through -- texttoxml(), which does an XML syntax check. -- As of 9.1, this finds the cast from pg_node_tree to text, which we -- intentionally do not provide a reverse pathway for. SELECT castsource::regtype, casttarget::regtype, castfunc, castcontext FROM pg_cast c WHERE c.castmethod = 'b' AND NOT EXISTS (SELECT 1 FROM pg_cast k WHERE k.castmethod = 'b' AND k.castsource = c.casttarget AND k.casttarget = c.castsource); -- **************** pg_conversion **************** -- Look for illegal values in pg_conversion fields. SELECT p1.oid, p1.conname FROM pg_conversion as p1 WHERE p1.conproc = 0 OR pg_encoding_to_char(conforencoding) = '' OR pg_encoding_to_char(contoencoding) = ''; -- Look for conprocs that don't have the expected signature. SELECT p.oid, p.proname, c.oid, c.conname FROM pg_proc p, pg_conversion c WHERE p.oid = c.conproc AND (p.prorettype != 'void'::regtype OR p.proretset OR p.pronargs != 5 OR p.proargtypes[0] != 'int4'::regtype OR p.proargtypes[1] != 'int4'::regtype OR p.proargtypes[2] != 'cstring'::regtype OR p.proargtypes[3] != 'internal'::regtype OR p.proargtypes[4] != 'int4'::regtype); -- Check for conprocs that don't perform the specific conversion that -- pg_conversion alleges they do, by trying to invoke each conversion -- on some simple ASCII data. (The conproc should throw an error if -- it doesn't accept the encodings that are passed to it.) -- Unfortunately, we can't test non-default conprocs this way, because -- there is no way to ask convert() to invoke them, and we cannot call -- them directly from SQL. But there are no non-default built-in -- conversions anyway. -- (Similarly, this doesn't cope with any search path issues.) SELECT p1.oid, p1.conname FROM pg_conversion as p1 WHERE condefault AND convert('ABC'::bytea, pg_encoding_to_char(conforencoding), pg_encoding_to_char(contoencoding)) != 'ABC'; -- **************** pg_operator **************** -- Look for illegal values in pg_operator fields. SELECT p1.oid, p1.oprname FROM pg_operator as p1 WHERE (p1.oprkind != 'b' AND p1.oprkind != 'l' AND p1.oprkind != 'r') OR p1.oprresult = 0 OR p1.oprcode = 0; -- Look for missing or unwanted operand types SELECT p1.oid, p1.oprname FROM pg_operator as p1 WHERE (p1.oprleft = 0 and p1.oprkind != 'l') OR (p1.oprleft != 0 and p1.oprkind = 'l') OR (p1.oprright = 0 and p1.oprkind != 'r') OR (p1.oprright != 0 and p1.oprkind = 'r'); -- Look for conflicting operator definitions (same names and input datatypes). SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode FROM pg_operator AS p1, pg_operator AS p2 WHERE p1.oid != p2.oid AND p1.oprname = p2.oprname AND p1.oprkind = p2.oprkind AND p1.oprleft = p2.oprleft AND p1.oprright = p2.oprright; -- Look for commutative operators that don't commute. -- DEFINITIONAL NOTE: If A.oprcom = B, then x A y has the same result as y B x. -- We expect that B will always say that B.oprcom = A as well; that's not -- inherently essential, but it would be inefficient not to mark it so. SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode FROM pg_operator AS p1, pg_operator AS p2 WHERE p1.oprcom = p2.oid AND (p1.oprkind != 'b' OR p1.oprleft != p2.oprright OR p1.oprright != p2.oprleft OR p1.oprresult != p2.oprresult OR p1.oid != p2.oprcom); -- Look for negatory operators that don't agree. -- DEFINITIONAL NOTE: If A.oprnegate = B, then both A and B must yield -- boolean results, and (x A y) == ! (x B y), or the equivalent for -- single-operand operators. -- We expect that B will always say that B.oprnegate = A as well; that's not -- inherently essential, but it would be inefficient not to mark it so. -- Also, A and B had better not be the same operator. SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode FROM pg_operator AS p1, pg_operator AS p2 WHERE p1.oprnegate = p2.oid AND (p1.oprkind != p2.oprkind OR p1.oprleft != p2.oprleft OR p1.oprright != p2.oprright OR p1.oprresult != 'bool'::regtype OR p2.oprresult != 'bool'::regtype OR p1.oid != p2.oprnegate OR p1.oid = p2.oid); -- Make a list of the names of operators that are claimed to be commutator -- pairs. This list will grow over time, but before accepting a new entry -- make sure you didn't link the wrong operators. SELECT DISTINCT o1.oprname AS op1, o2.oprname AS op2 FROM pg_operator o1, pg_operator o2 WHERE o1.oprcom = o2.oid AND o1.oprname <= o2.oprname ORDER BY 1, 2; -- Likewise for negator pairs. SELECT DISTINCT o1.oprname AS op1, o2.oprname AS op2 FROM pg_operator o1, pg_operator o2 WHERE o1.oprnegate = o2.oid AND o1.oprname <= o2.oprname ORDER BY 1, 2; -- A mergejoinable or hashjoinable operator must be binary, must return -- boolean, and must have a commutator (itself, unless it's a cross-type -- operator). SELECT p1.oid, p1.oprname FROM pg_operator AS p1 WHERE (p1.oprcanmerge OR p1.oprcanhash) AND NOT (p1.oprkind = 'b' AND p1.oprresult = 'bool'::regtype AND p1.oprcom != 0); -- What's more, the commutator had better be mergejoinable/hashjoinable too. SELECT p1.oid, p1.oprname, p2.oid, p2.oprname FROM pg_operator AS p1, pg_operator AS p2 WHERE p1.oprcom = p2.oid AND (p1.oprcanmerge != p2.oprcanmerge OR p1.oprcanhash != p2.oprcanhash); -- Mergejoinable operators should appear as equality members of btree index -- opfamilies. SELECT p1.oid, p1.oprname FROM pg_operator AS p1 WHERE p1.oprcanmerge AND NOT EXISTS (SELECT 1 FROM pg_amop WHERE amopmethod = (SELECT oid FROM pg_am WHERE amname = 'btree') AND amopopr = p1.oid AND amopstrategy = 3); -- And the converse. SELECT p1.oid, p1.oprname, p.amopfamily FROM pg_operator AS p1, pg_amop p WHERE amopopr = p1.oid AND amopmethod = (SELECT oid FROM pg_am WHERE amname = 'btree') AND amopstrategy = 3 AND NOT p1.oprcanmerge; -- Hashable operators should appear as members of hash index opfamilies. SELECT p1.oid, p1.oprname FROM pg_operator AS p1 WHERE p1.oprcanhash AND NOT EXISTS (SELECT 1 FROM pg_amop WHERE amopmethod = (SELECT oid FROM pg_am WHERE amname = 'hash') AND amopopr = p1.oid AND amopstrategy = 1); -- And the converse. SELECT p1.oid, p1.oprname, p.amopfamily FROM pg_operator AS p1, pg_amop p WHERE amopopr = p1.oid AND amopmethod = (SELECT oid FROM pg_am WHERE amname = 'hash') AND NOT p1.oprcanhash; -- Check that each operator defined in pg_operator matches its oprcode entry -- in pg_proc. Easiest to do this separately for each oprkind. SELECT p1.oid, p1.oprname, p2.oid, p2.proname FROM pg_operator AS p1, pg_proc AS p2 WHERE p1.oprcode = p2.oid AND p1.oprkind = 'b' AND (p2.pronargs != 2 OR NOT binary_coercible(p2.prorettype, p1.oprresult) OR NOT binary_coercible(p1.oprleft, p2.proargtypes[0]) OR NOT binary_coercible(p1.oprright, p2.proargtypes[1])); SELECT p1.oid, p1.oprname, p2.oid, p2.proname FROM pg_operator AS p1, pg_proc AS p2 WHERE p1.oprcode = p2.oid AND p1.oprkind = 'l' AND (p2.pronargs != 1 OR NOT binary_coercible(p2.prorettype, p1.oprresult) OR NOT binary_coercible(p1.oprright, p2.proargtypes[0]) OR p1.oprleft != 0); SELECT p1.oid, p1.oprname, p2.oid, p2.proname FROM pg_operator AS p1, pg_proc AS p2 WHERE p1.oprcode = p2.oid AND p1.oprkind = 'r' AND (p2.pronargs != 1 OR NOT binary_coercible(p2.prorettype, p1.oprresult) OR NOT binary_coercible(p1.oprleft, p2.proargtypes[0]) OR p1.oprright != 0); -- If the operator is mergejoinable or hashjoinable, its underlying function -- should not be volatile. SELECT p1.oid, p1.oprname, p2.oid, p2.proname FROM pg_operator AS p1, pg_proc AS p2 WHERE p1.oprcode = p2.oid AND (p1.oprcanmerge OR p1.oprcanhash) AND p2.provolatile = 'v'; -- If oprrest is set, the operator must return boolean, -- and it must link to a proc with the right signature -- to be a restriction selectivity estimator. -- The proc signature we want is: float8 proc(internal, oid, internal, int4) SELECT p1.oid, p1.oprname, p2.oid, p2.proname FROM pg_operator AS p1, pg_proc AS p2 WHERE p1.oprrest = p2.oid AND (p1.oprresult != 'bool'::regtype OR p2.prorettype != 'float8'::regtype OR p2.proretset OR p2.pronargs != 4 OR p2.proargtypes[0] != 'internal'::regtype OR p2.proargtypes[1] != 'oid'::regtype OR p2.proargtypes[2] != 'internal'::regtype OR p2.proargtypes[3] != 'int4'::regtype); -- If oprjoin is set, the operator must be a binary boolean op, -- and it must link to a proc with the right signature -- to be a join selectivity estimator. -- The proc signature we want is: float8 proc(internal, oid, internal, int2, internal) -- (Note: the old signature with only 4 args is still allowed, but no core -- estimator should be using it.) SELECT p1.oid, p1.oprname, p2.oid, p2.proname FROM pg_operator AS p1, pg_proc AS p2 WHERE p1.oprjoin = p2.oid AND (p1.oprkind != 'b' OR p1.oprresult != 'bool'::regtype OR p2.prorettype != 'float8'::regtype OR p2.proretset OR p2.pronargs != 5 OR p2.proargtypes[0] != 'internal'::regtype OR p2.proargtypes[1] != 'oid'::regtype OR p2.proargtypes[2] != 'internal'::regtype OR p2.proargtypes[3] != 'int2'::regtype OR p2.proargtypes[4] != 'internal'::regtype); -- Insist that all built-in pg_operator entries have descriptions SELECT p1.oid, p1.oprname FROM pg_operator as p1 LEFT JOIN pg_description as d ON p1.tableoid = d.classoid and p1.oid = d.objoid and d.objsubid = 0 WHERE d.classoid IS NULL AND p1.oid <= 9999; -- Check that operators' underlying functions have suitable comments, -- namely 'implementation of XXX operator'. (Note: it's not necessary to -- put such comments into pg_proc.dat; initdb will generate them as needed.) -- In some cases involving legacy names for operators, there are multiple -- operators referencing the same pg_proc entry, so ignore operators whose -- comments say they are deprecated. -- We also have a few functions that are both operator support and meant to -- be called directly; those should have comments matching their operator. WITH funcdescs AS ( SELECT p.oid as p_oid, proname, o.oid as o_oid, pd.description as prodesc, 'implementation of ' || oprname || ' operator' as expecteddesc, od.description as oprdesc FROM pg_proc p JOIN pg_operator o ON oprcode = p.oid LEFT JOIN pg_description pd ON (pd.objoid = p.oid and pd.classoid = p.tableoid and pd.objsubid = 0) LEFT JOIN pg_description od ON (od.objoid = o.oid and od.classoid = o.tableoid and od.objsubid = 0) WHERE o.oid <= 9999 ) SELECT * FROM funcdescs WHERE prodesc IS DISTINCT FROM expecteddesc AND oprdesc NOT LIKE 'deprecated%' AND prodesc IS DISTINCT FROM oprdesc; -- Show all the operator-implementation functions that have their own -- comments. This should happen only in cases where the function and -- operator syntaxes are both documented at the user level. -- This should be a pretty short list; it's mostly legacy cases. WITH funcdescs AS ( SELECT p.oid as p_oid, proname, o.oid as o_oid, pd.description as prodesc, 'implementation of ' || oprname || ' operator' as expecteddesc, od.description as oprdesc FROM pg_proc p JOIN pg_operator o ON oprcode = p.oid LEFT JOIN pg_description pd ON (pd.objoid = p.oid and pd.classoid = p.tableoid and pd.objsubid = 0) LEFT JOIN pg_description od ON (od.objoid = o.oid and od.classoid = o.tableoid and od.objsubid = 0) WHERE o.oid <= 9999 ) SELECT p_oid, proname, prodesc FROM funcdescs WHERE prodesc IS DISTINCT FROM expecteddesc AND oprdesc NOT LIKE 'deprecated%' ORDER BY 1; -- Operators that are commutator pairs should have identical volatility -- and leakproofness markings on their implementation functions. SELECT o1.oid, o1.oprcode, o2.oid, o2.oprcode FROM pg_operator AS o1, pg_operator AS o2, pg_proc AS p1, pg_proc AS p2 WHERE o1.oprcom = o2.oid AND p1.oid = o1.oprcode AND p2.oid = o2.oprcode AND (p1.provolatile != p2.provolatile OR p1.proleakproof != p2.proleakproof); -- Likewise for negator pairs. SELECT o1.oid, o1.oprcode, o2.oid, o2.oprcode FROM pg_operator AS o1, pg_operator AS o2, pg_proc AS p1, pg_proc AS p2 WHERE o1.oprnegate = o2.oid AND p1.oid = o1.oprcode AND p2.oid = o2.oprcode AND (p1.provolatile != p2.provolatile OR p1.proleakproof != p2.proleakproof); -- Btree comparison operators' functions should have the same volatility -- and leakproofness markings as the associated comparison support function. SELECT pp.oid::regprocedure as proc, pp.provolatile as vp, pp.proleakproof as lp, po.oid::regprocedure as opr, po.provolatile as vo, po.proleakproof as lo FROM pg_proc pp, pg_proc po, pg_operator o, pg_amproc ap, pg_amop ao WHERE pp.oid = ap.amproc AND po.oid = o.oprcode AND o.oid = ao.amopopr AND ao.amopmethod = (SELECT oid FROM pg_am WHERE amname = 'btree') AND ao.amopfamily = ap.amprocfamily AND ao.amoplefttype = ap.amproclefttype AND ao.amoprighttype = ap.amprocrighttype AND ap.amprocnum = 1 AND (pp.provolatile != po.provolatile OR pp.proleakproof != po.proleakproof) ORDER BY 1; -- **************** pg_aggregate **************** -- Look for illegal values in pg_aggregate fields. SELECT ctid, aggfnoid::oid FROM pg_aggregate as p1 WHERE aggfnoid = 0 OR aggtransfn = 0 OR aggkind NOT IN ('n', 'o', 'h') OR aggnumdirectargs < 0 OR (aggkind = 'n' AND aggnumdirectargs > 0) OR aggfinalmodify NOT IN ('r', 's', 'w') OR aggmfinalmodify NOT IN ('r', 's', 'w') OR aggtranstype = 0 OR aggtransspace < 0 OR aggmtransspace < 0; -- Make sure the matching pg_proc entry is sensible, too. SELECT a.aggfnoid::oid, p.proname FROM pg_aggregate as a, pg_proc as p WHERE a.aggfnoid = p.oid AND (p.prokind != 'a' OR p.proretset OR p.pronargs < a.aggnumdirectargs); -- Make sure there are no prokind = PROKIND_AGGREGATE pg_proc entries without matches. SELECT oid, proname FROM pg_proc as p WHERE p.prokind = 'a' AND NOT EXISTS (SELECT 1 FROM pg_aggregate a WHERE a.aggfnoid = p.oid); -- If there is no finalfn then the output type must be the transtype. SELECT a.aggfnoid::oid, p.proname FROM pg_aggregate as a, pg_proc as p WHERE a.aggfnoid = p.oid AND a.aggfinalfn = 0 AND p.prorettype != a.aggtranstype; -- Cross-check transfn against its entry in pg_proc. SELECT a.aggfnoid::oid, p.proname, ptr.oid, ptr.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS ptr WHERE a.aggfnoid = p.oid AND a.aggtransfn = ptr.oid AND (ptr.proretset OR NOT (ptr.pronargs = CASE WHEN a.aggkind = 'n' THEN p.pronargs + 1 ELSE greatest(p.pronargs - a.aggnumdirectargs, 1) + 1 END) OR NOT binary_coercible(ptr.prorettype, a.aggtranstype) OR NOT binary_coercible(a.aggtranstype, ptr.proargtypes[0]) OR (p.pronargs > 0 AND NOT binary_coercible(p.proargtypes[0], ptr.proargtypes[1])) OR (p.pronargs > 1 AND NOT binary_coercible(p.proargtypes[1], ptr.proargtypes[2])) OR (p.pronargs > 2 AND NOT binary_coercible(p.proargtypes[2], ptr.proargtypes[3])) -- we could carry the check further, but 3 args is enough for now OR (p.pronargs > 3) ); -- Cross-check finalfn (if present) against its entry in pg_proc. SELECT a.aggfnoid::oid, p.proname, pfn.oid, pfn.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS pfn WHERE a.aggfnoid = p.oid AND a.aggfinalfn = pfn.oid AND (pfn.proretset OR NOT binary_coercible(pfn.prorettype, p.prorettype) OR NOT binary_coercible(a.aggtranstype, pfn.proargtypes[0]) OR CASE WHEN a.aggfinalextra THEN pfn.pronargs != p.pronargs + 1 ELSE pfn.pronargs != a.aggnumdirectargs + 1 END OR (pfn.pronargs > 1 AND NOT binary_coercible(p.proargtypes[0], pfn.proargtypes[1])) OR (pfn.pronargs > 2 AND NOT binary_coercible(p.proargtypes[1], pfn.proargtypes[2])) OR (pfn.pronargs > 3 AND NOT binary_coercible(p.proargtypes[2], pfn.proargtypes[3])) -- we could carry the check further, but 4 args is enough for now OR (pfn.pronargs > 4) ); -- If transfn is strict then either initval should be non-NULL, or -- input type should match transtype so that the first non-null input -- can be assigned as the state value. SELECT a.aggfnoid::oid, p.proname, ptr.oid, ptr.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS ptr WHERE a.aggfnoid = p.oid AND a.aggtransfn = ptr.oid AND ptr.proisstrict AND a.agginitval IS NULL AND NOT binary_coercible(p.proargtypes[0], a.aggtranstype); -- Check for inconsistent specifications of moving-aggregate columns. SELECT ctid, aggfnoid::oid FROM pg_aggregate as p1 WHERE aggmtranstype != 0 AND (aggmtransfn = 0 OR aggminvtransfn = 0); SELECT ctid, aggfnoid::oid FROM pg_aggregate as p1 WHERE aggmtranstype = 0 AND (aggmtransfn != 0 OR aggminvtransfn != 0 OR aggmfinalfn != 0 OR aggmtransspace != 0 OR aggminitval IS NOT NULL); -- If there is no mfinalfn then the output type must be the mtranstype. SELECT a.aggfnoid::oid, p.proname FROM pg_aggregate as a, pg_proc as p WHERE a.aggfnoid = p.oid AND a.aggmtransfn != 0 AND a.aggmfinalfn = 0 AND p.prorettype != a.aggmtranstype; -- Cross-check mtransfn (if present) against its entry in pg_proc. SELECT a.aggfnoid::oid, p.proname, ptr.oid, ptr.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS ptr WHERE a.aggfnoid = p.oid AND a.aggmtransfn = ptr.oid AND (ptr.proretset OR NOT (ptr.pronargs = CASE WHEN a.aggkind = 'n' THEN p.pronargs + 1 ELSE greatest(p.pronargs - a.aggnumdirectargs, 1) + 1 END) OR NOT binary_coercible(ptr.prorettype, a.aggmtranstype) OR NOT binary_coercible(a.aggmtranstype, ptr.proargtypes[0]) OR (p.pronargs > 0 AND NOT binary_coercible(p.proargtypes[0], ptr.proargtypes[1])) OR (p.pronargs > 1 AND NOT binary_coercible(p.proargtypes[1], ptr.proargtypes[2])) OR (p.pronargs > 2 AND NOT binary_coercible(p.proargtypes[2], ptr.proargtypes[3])) -- we could carry the check further, but 3 args is enough for now OR (p.pronargs > 3) ); -- Cross-check minvtransfn (if present) against its entry in pg_proc. SELECT a.aggfnoid::oid, p.proname, ptr.oid, ptr.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS ptr WHERE a.aggfnoid = p.oid AND a.aggminvtransfn = ptr.oid AND (ptr.proretset OR NOT (ptr.pronargs = CASE WHEN a.aggkind = 'n' THEN p.pronargs + 1 ELSE greatest(p.pronargs - a.aggnumdirectargs, 1) + 1 END) OR NOT binary_coercible(ptr.prorettype, a.aggmtranstype) OR NOT binary_coercible(a.aggmtranstype, ptr.proargtypes[0]) OR (p.pronargs > 0 AND NOT binary_coercible(p.proargtypes[0], ptr.proargtypes[1])) OR (p.pronargs > 1 AND NOT binary_coercible(p.proargtypes[1], ptr.proargtypes[2])) OR (p.pronargs > 2 AND NOT binary_coercible(p.proargtypes[2], ptr.proargtypes[3])) -- we could carry the check further, but 3 args is enough for now OR (p.pronargs > 3) ); -- Cross-check mfinalfn (if present) against its entry in pg_proc. SELECT a.aggfnoid::oid, p.proname, pfn.oid, pfn.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS pfn WHERE a.aggfnoid = p.oid AND a.aggmfinalfn = pfn.oid AND (pfn.proretset OR NOT binary_coercible(pfn.prorettype, p.prorettype) OR NOT binary_coercible(a.aggmtranstype, pfn.proargtypes[0]) OR CASE WHEN a.aggmfinalextra THEN pfn.pronargs != p.pronargs + 1 ELSE pfn.pronargs != a.aggnumdirectargs + 1 END OR (pfn.pronargs > 1 AND NOT binary_coercible(p.proargtypes[0], pfn.proargtypes[1])) OR (pfn.pronargs > 2 AND NOT binary_coercible(p.proargtypes[1], pfn.proargtypes[2])) OR (pfn.pronargs > 3 AND NOT binary_coercible(p.proargtypes[2], pfn.proargtypes[3])) -- we could carry the check further, but 4 args is enough for now OR (pfn.pronargs > 4) ); -- If mtransfn is strict then either minitval should be non-NULL, or -- input type should match mtranstype so that the first non-null input -- can be assigned as the state value. SELECT a.aggfnoid::oid, p.proname, ptr.oid, ptr.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS ptr WHERE a.aggfnoid = p.oid AND a.aggmtransfn = ptr.oid AND ptr.proisstrict AND a.aggminitval IS NULL AND NOT binary_coercible(p.proargtypes[0], a.aggmtranstype); -- mtransfn and minvtransfn should have same strictness setting. SELECT a.aggfnoid::oid, p.proname, ptr.oid, ptr.proname, iptr.oid, iptr.proname FROM pg_aggregate AS a, pg_proc AS p, pg_proc AS ptr, pg_proc AS iptr WHERE a.aggfnoid = p.oid AND a.aggmtransfn = ptr.oid AND a.aggminvtransfn = iptr.oid AND ptr.proisstrict != iptr.proisstrict; -- Check that all combine functions have signature -- combine(transtype, transtype) returns transtype SELECT a.aggfnoid, p.proname FROM pg_aggregate as a, pg_proc as p WHERE a.aggcombinefn = p.oid AND (p.pronargs != 2 OR p.prorettype != p.proargtypes[0] OR p.prorettype != p.proargtypes[1] OR NOT binary_coercible(a.aggtranstype, p.proargtypes[0])); -- Check that no combine function for an INTERNAL transtype is strict. SELECT a.aggfnoid, p.proname FROM pg_aggregate as a, pg_proc as p WHERE a.aggcombinefn = p.oid AND a.aggtranstype = 'internal'::regtype AND p.proisstrict; -- serialize/deserialize functions should be specified only for aggregates -- with transtype internal and a combine function, and we should have both -- or neither of them. SELECT aggfnoid, aggtranstype, aggserialfn, aggdeserialfn FROM pg_aggregate WHERE (aggserialfn != 0 OR aggdeserialfn != 0) AND (aggtranstype != 'internal'::regtype OR aggcombinefn = 0 OR aggserialfn = 0 OR aggdeserialfn = 0); -- Check that all serialization functions have signature -- serialize(internal) returns bytea -- Also insist that they be strict; it's wasteful to run them on NULLs. SELECT a.aggfnoid, p.proname FROM pg_aggregate as a, pg_proc as p WHERE a.aggserialfn = p.oid AND (p.prorettype != 'bytea'::regtype OR p.pronargs != 1 OR p.proargtypes[0] != 'internal'::regtype OR NOT p.proisstrict); -- Check that all deserialization functions have signature -- deserialize(bytea, internal) returns internal -- Also insist that they be strict; it's wasteful to run them on NULLs. SELECT a.aggfnoid, p.proname FROM pg_aggregate as a, pg_proc as p WHERE a.aggdeserialfn = p.oid AND (p.prorettype != 'internal'::regtype OR p.pronargs != 2 OR p.proargtypes[0] != 'bytea'::regtype OR p.proargtypes[1] != 'internal'::regtype OR NOT p.proisstrict); -- Check that aggregates which have the same transition function also have -- the same combine, serialization, and deserialization functions. -- While that isn't strictly necessary, it's fishy if they don't. SELECT a.aggfnoid, a.aggcombinefn, a.aggserialfn, a.aggdeserialfn, b.aggfnoid, b.aggcombinefn, b.aggserialfn, b.aggdeserialfn FROM pg_aggregate a, pg_aggregate b WHERE a.aggfnoid < b.aggfnoid AND a.aggtransfn = b.aggtransfn AND (a.aggcombinefn != b.aggcombinefn OR a.aggserialfn != b.aggserialfn OR a.aggdeserialfn != b.aggdeserialfn); -- Cross-check aggsortop (if present) against pg_operator. -- We expect to find entries for bool_and, bool_or, every, max, and min. SELECT DISTINCT proname, oprname FROM pg_operator AS o, pg_aggregate AS a, pg_proc AS p WHERE a.aggfnoid = p.oid AND a.aggsortop = o.oid ORDER BY 1, 2; -- Check datatypes match SELECT a.aggfnoid::oid, o.oid FROM pg_operator AS o, pg_aggregate AS a, pg_proc AS p WHERE a.aggfnoid = p.oid AND a.aggsortop = o.oid AND (oprkind != 'b' OR oprresult != 'boolean'::regtype OR oprleft != p.proargtypes[0] OR oprright != p.proargtypes[0]); -- Check operator is a suitable btree opfamily member SELECT a.aggfnoid::oid, o.oid FROM pg_operator AS o, pg_aggregate AS a, pg_proc AS p WHERE a.aggfnoid = p.oid AND a.aggsortop = o.oid AND NOT EXISTS(SELECT 1 FROM pg_amop WHERE amopmethod = (SELECT oid FROM pg_am WHERE amname = 'btree') AND amopopr = o.oid AND amoplefttype = o.oprleft AND amoprighttype = o.oprright); -- Check correspondence of btree strategies and names SELECT DISTINCT proname, oprname, amopstrategy FROM pg_operator AS o, pg_aggregate AS a, pg_proc AS p, pg_amop as ao WHERE a.aggfnoid = p.oid AND a.aggsortop = o.oid AND amopopr = o.oid AND amopmethod = (SELECT oid FROM pg_am WHERE amname = 'btree') ORDER BY 1, 2; -- Check that there are not aggregates with the same name and different -- numbers of arguments. While not technically wrong, we have a project policy -- to avoid this because it opens the door for confusion in connection with -- ORDER BY: novices frequently put the ORDER BY in the wrong place. -- See the fate of the single-argument form of string_agg() for history. -- (Note: we don't forbid users from creating such aggregates; the policy is -- just to think twice before creating built-in aggregates like this.) -- The only aggregates that should show up here are count(x) and count(*). SELECT p1.oid::regprocedure, p2.oid::regprocedure FROM pg_proc AS p1, pg_proc AS p2 WHERE p1.oid < p2.oid AND p1.proname = p2.proname AND p1.prokind = 'a' AND p2.prokind = 'a' AND array_dims(p1.proargtypes) != array_dims(p2.proargtypes) ORDER BY 1; -- For the same reason, built-in aggregates with default arguments are no good. SELECT oid, proname FROM pg_proc AS p WHERE prokind = 'a' AND proargdefaults IS NOT NULL; -- For the same reason, we avoid creating built-in variadic aggregates, except -- that variadic ordered-set aggregates are OK (since they have special syntax -- that is not subject to the misplaced ORDER BY issue). SELECT p.oid, proname FROM pg_proc AS p JOIN pg_aggregate AS a ON a.aggfnoid = p.oid WHERE prokind = 'a' AND provariadic != 0 AND a.aggkind = 'n'; -- **************** pg_opfamily **************** -- Look for illegal values in pg_opfamily fields SELECT p1.oid FROM pg_opfamily as p1 WHERE p1.opfmethod = 0 OR p1.opfnamespace = 0; -- Look for opfamilies having no opclasses. While most validation of -- opfamilies is now handled by AM-specific amvalidate functions, that's -- driven from pg_opclass entries below, so an empty opfamily would not -- get noticed. SELECT oid, opfname FROM pg_opfamily f WHERE NOT EXISTS (SELECT 1 FROM pg_opclass WHERE opcfamily = f.oid); -- **************** pg_opclass **************** -- Look for illegal values in pg_opclass fields SELECT p1.oid FROM pg_opclass AS p1 WHERE p1.opcmethod = 0 OR p1.opcnamespace = 0 OR p1.opcfamily = 0 OR p1.opcintype = 0; -- opcmethod must match owning opfamily's opfmethod SELECT p1.oid, p2.oid FROM pg_opclass AS p1, pg_opfamily AS p2 WHERE p1.opcfamily = p2.oid AND p1.opcmethod != p2.opfmethod; -- There should not be multiple entries in pg_opclass with opcdefault true -- and the same opcmethod/opcintype combination. SELECT p1.oid, p2.oid FROM pg_opclass AS p1, pg_opclass AS p2 WHERE p1.oid != p2.oid AND p1.opcmethod = p2.opcmethod AND p1.opcintype = p2.opcintype AND p1.opcdefault AND p2.opcdefault; -- Ask access methods to validate opclasses -- (this replaces a lot of SQL-level checks that used to be done in this file) SELECT oid, opcname FROM pg_opclass WHERE NOT amvalidate(oid); -- **************** pg_am **************** -- Look for illegal values in pg_am fields SELECT p1.oid, p1.amname FROM pg_am AS p1 WHERE p1.amhandler = 0; -- Check for index amhandler functions with the wrong signature SELECT p1.oid, p1.amname, p2.oid, p2.proname FROM pg_am AS p1, pg_proc AS p2 WHERE p2.oid = p1.amhandler AND p1.amtype = 'i' AND (p2.prorettype != 'index_am_handler'::regtype OR p2.proretset OR p2.pronargs != 1 OR p2.proargtypes[0] != 'internal'::regtype); -- Check for table amhandler functions with the wrong signature SELECT p1.oid, p1.amname, p2.oid, p2.proname FROM pg_am AS p1, pg_proc AS p2 WHERE p2.oid = p1.amhandler AND p1.amtype = 's' AND (p2.prorettype != 'table_am_handler'::regtype OR p2.proretset OR p2.pronargs != 1 OR p2.proargtypes[0] != 'internal'::regtype); -- **************** pg_amop **************** -- Look for illegal values in pg_amop fields SELECT p1.amopfamily, p1.amopstrategy FROM pg_amop as p1 WHERE p1.amopfamily = 0 OR p1.amoplefttype = 0 OR p1.amoprighttype = 0 OR p1.amopopr = 0 OR p1.amopmethod = 0 OR p1.amopstrategy < 1; SELECT p1.amopfamily, p1.amopstrategy FROM pg_amop as p1 WHERE NOT ((p1.amoppurpose = 's' AND p1.amopsortfamily = 0) OR (p1.amoppurpose = 'o' AND p1.amopsortfamily <> 0)); -- amopmethod must match owning opfamily's opfmethod SELECT p1.oid, p2.oid FROM pg_amop AS p1, pg_opfamily AS p2 WHERE p1.amopfamily = p2.oid AND p1.amopmethod != p2.opfmethod; -- Make a list of all the distinct operator names being used in particular -- strategy slots. This is a bit hokey, since the list might need to change -- in future releases, but it's an effective way of spotting mistakes such as -- swapping two operators within a family. SELECT DISTINCT amopmethod, amopstrategy, oprname FROM pg_amop p1 LEFT JOIN pg_operator p2 ON amopopr = p2.oid ORDER BY 1, 2, 3; -- Check that all opclass search operators have selectivity estimators. -- This is not absolutely required, but it seems a reasonable thing -- to insist on for all standard datatypes. SELECT p1.amopfamily, p1.amopopr, p2.oid, p2.oprname FROM pg_amop AS p1, pg_operator AS p2 WHERE p1.amopopr = p2.oid AND p1.amoppurpose = 's' AND (p2.oprrest = 0 OR p2.oprjoin = 0); -- Check that each opclass in an opfamily has associated operators, that is -- ones whose oprleft matches opcintype (possibly by coercion). SELECT p1.opcname, p1.opcfamily FROM pg_opclass AS p1 WHERE NOT EXISTS(SELECT 1 FROM pg_amop AS p2 WHERE p2.amopfamily = p1.opcfamily AND binary_coercible(p1.opcintype, p2.amoplefttype)); -- Check that each operator listed in pg_amop has an associated opclass, -- that is one whose opcintype matches oprleft (possibly by coercion). -- Otherwise the operator is useless because it cannot be matched to an index. -- (In principle it could be useful to list such operators in multiple-datatype -- btree opfamilies, but in practice you'd expect there to be an opclass for -- every datatype the family knows about.) SELECT p1.amopfamily, p1.amopstrategy, p1.amopopr FROM pg_amop AS p1 WHERE NOT EXISTS(SELECT 1 FROM pg_opclass AS p2 WHERE p2.opcfamily = p1.amopfamily AND binary_coercible(p2.opcintype, p1.amoplefttype)); -- Operators that are primary members of opclasses must be immutable (else -- it suggests that the index ordering isn't fixed). Operators that are -- cross-type members need only be stable, since they are just shorthands -- for index probe queries. SELECT p1.amopfamily, p1.amopopr, p2.oprname, p3.prosrc FROM pg_amop AS p1, pg_operator AS p2, pg_proc AS p3 WHERE p1.amopopr = p2.oid AND p2.oprcode = p3.oid AND p1.amoplefttype = p1.amoprighttype AND p3.provolatile != 'i'; SELECT p1.amopfamily, p1.amopopr, p2.oprname, p3.prosrc FROM pg_amop AS p1, pg_operator AS p2, pg_proc AS p3 WHERE p1.amopopr = p2.oid AND p2.oprcode = p3.oid AND p1.amoplefttype != p1.amoprighttype AND p3.provolatile = 'v'; -- **************** pg_amproc **************** -- Look for illegal values in pg_amproc fields SELECT p1.amprocfamily, p1.amprocnum FROM pg_amproc as p1 WHERE p1.amprocfamily = 0 OR p1.amproclefttype = 0 OR p1.amprocrighttype = 0 OR p1.amprocnum < 0 OR p1.amproc = 0; -- Support routines that are primary members of opfamilies must be immutable -- (else it suggests that the index ordering isn't fixed). But cross-type -- members need only be stable, since they are just shorthands -- for index probe queries. SELECT p1.amprocfamily, p1.amproc, p2.prosrc FROM pg_amproc AS p1, pg_proc AS p2 WHERE p1.amproc = p2.oid AND p1.amproclefttype = p1.amprocrighttype AND p2.provolatile != 'i'; SELECT p1.amprocfamily, p1.amproc, p2.prosrc FROM pg_amproc AS p1, pg_proc AS p2 WHERE p1.amproc = p2.oid AND p1.amproclefttype != p1.amprocrighttype AND p2.provolatile = 'v'; -- Almost all of the core distribution's Btree opclasses can use one of the -- two generic "equalimage" functions as their support function 4. Look for -- opclasses that don't allow deduplication unconditionally here. -- -- Newly added Btree opclasses don't have to support deduplication. It will -- usually be trivial to add support, though. Note that the expected output -- of this part of the test will need to be updated when a new opclass cannot -- support deduplication (by using btequalimage). SELECT amp.amproc::regproc AS proc, opf.opfname AS opfamily_name, opc.opcname AS opclass_name, opc.opcintype::regtype AS opcintype FROM pg_am AS am JOIN pg_opclass AS opc ON opc.opcmethod = am.oid JOIN pg_opfamily AS opf ON opc.opcfamily = opf.oid LEFT JOIN pg_amproc AS amp ON amp.amprocfamily = opf.oid AND amp.amproclefttype = opc.opcintype AND amp.amprocnum = 4 WHERE am.amname = 'btree' AND amp.amproc IS DISTINCT FROM 'btequalimage'::regproc ORDER BY 1, 2, 3; -- **************** pg_index **************** -- Look for illegal values in pg_index fields. SELECT p1.indexrelid, p1.indrelid FROM pg_index as p1 WHERE p1.indexrelid = 0 OR p1.indrelid = 0 OR p1.indnatts <= 0 OR p1.indnatts > 32; -- oidvector and int2vector fields should be of length indnatts. SELECT p1.indexrelid, p1.indrelid FROM pg_index as p1 WHERE array_lower(indkey, 1) != 0 OR array_upper(indkey, 1) != indnatts-1 OR array_lower(indclass, 1) != 0 OR array_upper(indclass, 1) != indnatts-1 OR array_lower(indcollation, 1) != 0 OR array_upper(indcollation, 1) != indnatts-1 OR array_lower(indoption, 1) != 0 OR array_upper(indoption, 1) != indnatts-1; -- Check that opclasses and collations match the underlying columns. -- (As written, this test ignores expression indexes.) SELECT indexrelid::regclass, indrelid::regclass, attname, atttypid::regtype, opcname FROM (SELECT indexrelid, indrelid, unnest(indkey) as ikey, unnest(indclass) as iclass, unnest(indcollation) as icoll FROM pg_index) ss, pg_attribute a, pg_opclass opc WHERE a.attrelid = indrelid AND a.attnum = ikey AND opc.oid = iclass AND (NOT binary_coercible(atttypid, opcintype) OR icoll != attcollation); -- For system catalogs, be even tighter: nearly all indexes should be -- exact type matches not binary-coercible matches. At this writing -- the only exception is an OID index on a regproc column. SELECT indexrelid::regclass, indrelid::regclass, attname, atttypid::regtype, opcname FROM (SELECT indexrelid, indrelid, unnest(indkey) as ikey, unnest(indclass) as iclass, unnest(indcollation) as icoll FROM pg_index WHERE indrelid < 16384) ss, pg_attribute a, pg_opclass opc WHERE a.attrelid = indrelid AND a.attnum = ikey AND opc.oid = iclass AND (opcintype != atttypid OR icoll != attcollation) ORDER BY 1; -- Check for system catalogs with collation-sensitive ordering. This is not -- a representational error in pg_index, but simply wrong catalog design. -- It's bad because we expect to be able to clone template0 and assign the -- copy a different database collation. It would especially not work for -- shared catalogs. SELECT relname, attname, attcollation FROM pg_class c, pg_attribute a WHERE c.oid = attrelid AND c.oid < 16384 AND c.relkind != 'v' AND -- we don't care about columns in views attcollation != 0 AND attcollation != (SELECT oid FROM pg_collation WHERE collname = 'C'); -- Double-check that collation-sensitive indexes have "C" collation, too. SELECT indexrelid::regclass, indrelid::regclass, iclass, icoll FROM (SELECT indexrelid, indrelid, unnest(indclass) as iclass, unnest(indcollation) as icoll FROM pg_index WHERE indrelid < 16384) ss WHERE icoll != 0 AND icoll != (SELECT oid FROM pg_collation WHERE collname = 'C'); libpg_query-13-2.1.0/test/sql/postgres_regress/partition_aggregate.sql000066400000000000000000000417171413137616400262130ustar00rootroot00000000000000-- -- PARTITION_AGGREGATE -- Test partitionwise aggregation on partitioned tables -- -- Note: to ensure plan stability, it's a good idea to make the partitions of -- any one partitioned table in this test all have different numbers of rows. -- -- Enable partitionwise aggregate, which by default is disabled. SET enable_partitionwise_aggregate TO true; -- Enable partitionwise join, which by default is disabled. SET enable_partitionwise_join TO true; -- Disable parallel plans. SET max_parallel_workers_per_gather TO 0; -- Disable incremental sort, which can influence selected plans due to fuzz factor. SET enable_incremental_sort TO off; -- -- Tests for list partitioned tables. -- CREATE TABLE pagg_tab (a int, b int, c text, d int) PARTITION BY LIST(c); CREATE TABLE pagg_tab_p1 PARTITION OF pagg_tab FOR VALUES IN ('0000', '0001', '0002', '0003', '0004'); CREATE TABLE pagg_tab_p2 PARTITION OF pagg_tab FOR VALUES IN ('0005', '0006', '0007', '0008'); CREATE TABLE pagg_tab_p3 PARTITION OF pagg_tab FOR VALUES IN ('0009', '0010', '0011'); INSERT INTO pagg_tab SELECT i % 20, i % 30, to_char(i % 12, 'FM0000'), i % 30 FROM generate_series(0, 2999) i; ANALYZE pagg_tab; -- When GROUP BY clause matches; full aggregation is performed for each partition. EXPLAIN (COSTS OFF) SELECT c, sum(a), avg(b), count(*), min(a), max(b) FROM pagg_tab GROUP BY c HAVING avg(d) < 15 ORDER BY 1, 2, 3; SELECT c, sum(a), avg(b), count(*), min(a), max(b) FROM pagg_tab GROUP BY c HAVING avg(d) < 15 ORDER BY 1, 2, 3; -- When GROUP BY clause does not match; partial aggregation is performed for each partition. EXPLAIN (COSTS OFF) SELECT a, sum(b), avg(b), count(*), min(a), max(b) FROM pagg_tab GROUP BY a HAVING avg(d) < 15 ORDER BY 1, 2, 3; SELECT a, sum(b), avg(b), count(*), min(a), max(b) FROM pagg_tab GROUP BY a HAVING avg(d) < 15 ORDER BY 1, 2, 3; -- Check with multiple columns in GROUP BY EXPLAIN (COSTS OFF) SELECT a, c, count(*) FROM pagg_tab GROUP BY a, c; -- Check with multiple columns in GROUP BY, order in GROUP BY is reversed EXPLAIN (COSTS OFF) SELECT a, c, count(*) FROM pagg_tab GROUP BY c, a; -- Check with multiple columns in GROUP BY, order in target-list is reversed EXPLAIN (COSTS OFF) SELECT c, a, count(*) FROM pagg_tab GROUP BY a, c; -- Test when input relation for grouping is dummy EXPLAIN (COSTS OFF) SELECT c, sum(a) FROM pagg_tab WHERE 1 = 2 GROUP BY c; SELECT c, sum(a) FROM pagg_tab WHERE 1 = 2 GROUP BY c; EXPLAIN (COSTS OFF) SELECT c, sum(a) FROM pagg_tab WHERE c = 'x' GROUP BY c; SELECT c, sum(a) FROM pagg_tab WHERE c = 'x' GROUP BY c; -- Test GroupAggregate paths by disabling hash aggregates. SET enable_hashagg TO false; -- When GROUP BY clause matches full aggregation is performed for each partition. EXPLAIN (COSTS OFF) SELECT c, sum(a), avg(b), count(*) FROM pagg_tab GROUP BY 1 HAVING avg(d) < 15 ORDER BY 1, 2, 3; SELECT c, sum(a), avg(b), count(*) FROM pagg_tab GROUP BY 1 HAVING avg(d) < 15 ORDER BY 1, 2, 3; -- When GROUP BY clause does not match; partial aggregation is performed for each partition. EXPLAIN (COSTS OFF) SELECT a, sum(b), avg(b), count(*) FROM pagg_tab GROUP BY 1 HAVING avg(d) < 15 ORDER BY 1, 2, 3; SELECT a, sum(b), avg(b), count(*) FROM pagg_tab GROUP BY 1 HAVING avg(d) < 15 ORDER BY 1, 2, 3; -- Test partitionwise grouping without any aggregates EXPLAIN (COSTS OFF) SELECT c FROM pagg_tab GROUP BY c ORDER BY 1; SELECT c FROM pagg_tab GROUP BY c ORDER BY 1; EXPLAIN (COSTS OFF) SELECT a FROM pagg_tab WHERE a < 3 GROUP BY a ORDER BY 1; SELECT a FROM pagg_tab WHERE a < 3 GROUP BY a ORDER BY 1; RESET enable_hashagg; -- ROLLUP, partitionwise aggregation does not apply EXPLAIN (COSTS OFF) SELECT c, sum(a) FROM pagg_tab GROUP BY rollup(c) ORDER BY 1, 2; -- ORDERED SET within the aggregate. -- Full aggregation; since all the rows that belong to the same group come -- from the same partition, having an ORDER BY within the aggregate doesn't -- make any difference. EXPLAIN (COSTS OFF) SELECT c, sum(b order by a) FROM pagg_tab GROUP BY c ORDER BY 1, 2; -- Since GROUP BY clause does not match with PARTITION KEY; we need to do -- partial aggregation. However, ORDERED SET are not partial safe and thus -- partitionwise aggregation plan is not generated. EXPLAIN (COSTS OFF) SELECT a, sum(b order by a) FROM pagg_tab GROUP BY a ORDER BY 1, 2; -- JOIN query CREATE TABLE pagg_tab1(x int, y int) PARTITION BY RANGE(x); CREATE TABLE pagg_tab1_p1 PARTITION OF pagg_tab1 FOR VALUES FROM (0) TO (10); CREATE TABLE pagg_tab1_p2 PARTITION OF pagg_tab1 FOR VALUES FROM (10) TO (20); CREATE TABLE pagg_tab1_p3 PARTITION OF pagg_tab1 FOR VALUES FROM (20) TO (30); CREATE TABLE pagg_tab2(x int, y int) PARTITION BY RANGE(y); CREATE TABLE pagg_tab2_p1 PARTITION OF pagg_tab2 FOR VALUES FROM (0) TO (10); CREATE TABLE pagg_tab2_p2 PARTITION OF pagg_tab2 FOR VALUES FROM (10) TO (20); CREATE TABLE pagg_tab2_p3 PARTITION OF pagg_tab2 FOR VALUES FROM (20) TO (30); INSERT INTO pagg_tab1 SELECT i % 30, i % 20 FROM generate_series(0, 299, 2) i; INSERT INTO pagg_tab2 SELECT i % 20, i % 30 FROM generate_series(0, 299, 3) i; ANALYZE pagg_tab1; ANALYZE pagg_tab2; -- When GROUP BY clause matches; full aggregation is performed for each partition. EXPLAIN (COSTS OFF) SELECT t1.x, sum(t1.y), count(*) FROM pagg_tab1 t1, pagg_tab2 t2 WHERE t1.x = t2.y GROUP BY t1.x ORDER BY 1, 2, 3; SELECT t1.x, sum(t1.y), count(*) FROM pagg_tab1 t1, pagg_tab2 t2 WHERE t1.x = t2.y GROUP BY t1.x ORDER BY 1, 2, 3; -- Check with whole-row reference; partitionwise aggregation does not apply EXPLAIN (COSTS OFF) SELECT t1.x, sum(t1.y), count(t1) FROM pagg_tab1 t1, pagg_tab2 t2 WHERE t1.x = t2.y GROUP BY t1.x ORDER BY 1, 2, 3; SELECT t1.x, sum(t1.y), count(t1) FROM pagg_tab1 t1, pagg_tab2 t2 WHERE t1.x = t2.y GROUP BY t1.x ORDER BY 1, 2, 3; -- GROUP BY having other matching key EXPLAIN (COSTS OFF) SELECT t2.y, sum(t1.y), count(*) FROM pagg_tab1 t1, pagg_tab2 t2 WHERE t1.x = t2.y GROUP BY t2.y ORDER BY 1, 2, 3; -- When GROUP BY clause does not match; partial aggregation is performed for each partition. -- Also test GroupAggregate paths by disabling hash aggregates. SET enable_hashagg TO false; EXPLAIN (COSTS OFF) SELECT t1.y, sum(t1.x), count(*) FROM pagg_tab1 t1, pagg_tab2 t2 WHERE t1.x = t2.y GROUP BY t1.y HAVING avg(t1.x) > 10 ORDER BY 1, 2, 3; SELECT t1.y, sum(t1.x), count(*) FROM pagg_tab1 t1, pagg_tab2 t2 WHERE t1.x = t2.y GROUP BY t1.y HAVING avg(t1.x) > 10 ORDER BY 1, 2, 3; RESET enable_hashagg; -- Check with LEFT/RIGHT/FULL OUTER JOINs which produces NULL values for -- aggregation -- LEFT JOIN, should produce partial partitionwise aggregation plan as -- GROUP BY is on nullable column EXPLAIN (COSTS OFF) SELECT b.y, sum(a.y) FROM pagg_tab1 a LEFT JOIN pagg_tab2 b ON a.x = b.y GROUP BY b.y ORDER BY 1 NULLS LAST; SELECT b.y, sum(a.y) FROM pagg_tab1 a LEFT JOIN pagg_tab2 b ON a.x = b.y GROUP BY b.y ORDER BY 1 NULLS LAST; -- RIGHT JOIN, should produce full partitionwise aggregation plan as -- GROUP BY is on non-nullable column EXPLAIN (COSTS OFF) SELECT b.y, sum(a.y) FROM pagg_tab1 a RIGHT JOIN pagg_tab2 b ON a.x = b.y GROUP BY b.y ORDER BY 1 NULLS LAST; SELECT b.y, sum(a.y) FROM pagg_tab1 a RIGHT JOIN pagg_tab2 b ON a.x = b.y GROUP BY b.y ORDER BY 1 NULLS LAST; -- FULL JOIN, should produce partial partitionwise aggregation plan as -- GROUP BY is on nullable column EXPLAIN (COSTS OFF) SELECT a.x, sum(b.x) FROM pagg_tab1 a FULL OUTER JOIN pagg_tab2 b ON a.x = b.y GROUP BY a.x ORDER BY 1 NULLS LAST; SELECT a.x, sum(b.x) FROM pagg_tab1 a FULL OUTER JOIN pagg_tab2 b ON a.x = b.y GROUP BY a.x ORDER BY 1 NULLS LAST; -- LEFT JOIN, with dummy relation on right side, ideally -- should produce full partitionwise aggregation plan as GROUP BY is on -- non-nullable columns. -- But right now we are unable to do partitionwise join in this case. EXPLAIN (COSTS OFF) SELECT a.x, b.y, count(*) FROM (SELECT * FROM pagg_tab1 WHERE x < 20) a LEFT JOIN (SELECT * FROM pagg_tab2 WHERE y > 10) b ON a.x = b.y WHERE a.x > 5 or b.y < 20 GROUP BY a.x, b.y ORDER BY 1, 2; SELECT a.x, b.y, count(*) FROM (SELECT * FROM pagg_tab1 WHERE x < 20) a LEFT JOIN (SELECT * FROM pagg_tab2 WHERE y > 10) b ON a.x = b.y WHERE a.x > 5 or b.y < 20 GROUP BY a.x, b.y ORDER BY 1, 2; -- FULL JOIN, with dummy relations on both sides, ideally -- should produce partial partitionwise aggregation plan as GROUP BY is on -- nullable columns. -- But right now we are unable to do partitionwise join in this case. EXPLAIN (COSTS OFF) SELECT a.x, b.y, count(*) FROM (SELECT * FROM pagg_tab1 WHERE x < 20) a FULL JOIN (SELECT * FROM pagg_tab2 WHERE y > 10) b ON a.x = b.y WHERE a.x > 5 or b.y < 20 GROUP BY a.x, b.y ORDER BY 1, 2; SELECT a.x, b.y, count(*) FROM (SELECT * FROM pagg_tab1 WHERE x < 20) a FULL JOIN (SELECT * FROM pagg_tab2 WHERE y > 10) b ON a.x = b.y WHERE a.x > 5 or b.y < 20 GROUP BY a.x, b.y ORDER BY 1, 2; -- Empty join relation because of empty outer side, no partitionwise agg plan EXPLAIN (COSTS OFF) SELECT a.x, a.y, count(*) FROM (SELECT * FROM pagg_tab1 WHERE x = 1 AND x = 2) a LEFT JOIN pagg_tab2 b ON a.x = b.y GROUP BY a.x, a.y ORDER BY 1, 2; SELECT a.x, a.y, count(*) FROM (SELECT * FROM pagg_tab1 WHERE x = 1 AND x = 2) a LEFT JOIN pagg_tab2 b ON a.x = b.y GROUP BY a.x, a.y ORDER BY 1, 2; -- Partition by multiple columns CREATE TABLE pagg_tab_m (a int, b int, c int) PARTITION BY RANGE(a, ((a+b)/2)); CREATE TABLE pagg_tab_m_p1 PARTITION OF pagg_tab_m FOR VALUES FROM (0, 0) TO (12, 12); CREATE TABLE pagg_tab_m_p2 PARTITION OF pagg_tab_m FOR VALUES FROM (12, 12) TO (22, 22); CREATE TABLE pagg_tab_m_p3 PARTITION OF pagg_tab_m FOR VALUES FROM (22, 22) TO (30, 30); INSERT INTO pagg_tab_m SELECT i % 30, i % 40, i % 50 FROM generate_series(0, 2999) i; ANALYZE pagg_tab_m; -- Partial aggregation as GROUP BY clause does not match with PARTITION KEY EXPLAIN (COSTS OFF) SELECT a, sum(b), avg(c), count(*) FROM pagg_tab_m GROUP BY a HAVING avg(c) < 22 ORDER BY 1, 2, 3; SELECT a, sum(b), avg(c), count(*) FROM pagg_tab_m GROUP BY a HAVING avg(c) < 22 ORDER BY 1, 2, 3; -- Full aggregation as GROUP BY clause matches with PARTITION KEY EXPLAIN (COSTS OFF) SELECT a, sum(b), avg(c), count(*) FROM pagg_tab_m GROUP BY a, (a+b)/2 HAVING sum(b) < 50 ORDER BY 1, 2, 3; SELECT a, sum(b), avg(c), count(*) FROM pagg_tab_m GROUP BY a, (a+b)/2 HAVING sum(b) < 50 ORDER BY 1, 2, 3; -- Full aggregation as PARTITION KEY is part of GROUP BY clause EXPLAIN (COSTS OFF) SELECT a, c, sum(b), avg(c), count(*) FROM pagg_tab_m GROUP BY (a+b)/2, 2, 1 HAVING sum(b) = 50 AND avg(c) > 25 ORDER BY 1, 2, 3; SELECT a, c, sum(b), avg(c), count(*) FROM pagg_tab_m GROUP BY (a+b)/2, 2, 1 HAVING sum(b) = 50 AND avg(c) > 25 ORDER BY 1, 2, 3; -- Test with multi-level partitioning scheme CREATE TABLE pagg_tab_ml (a int, b int, c text) PARTITION BY RANGE(a); CREATE TABLE pagg_tab_ml_p1 PARTITION OF pagg_tab_ml FOR VALUES FROM (0) TO (12); CREATE TABLE pagg_tab_ml_p2 PARTITION OF pagg_tab_ml FOR VALUES FROM (12) TO (20) PARTITION BY LIST (c); CREATE TABLE pagg_tab_ml_p2_s1 PARTITION OF pagg_tab_ml_p2 FOR VALUES IN ('0000', '0001', '0002'); CREATE TABLE pagg_tab_ml_p2_s2 PARTITION OF pagg_tab_ml_p2 FOR VALUES IN ('0003'); -- This level of partitioning has different column positions than the parent CREATE TABLE pagg_tab_ml_p3(b int, c text, a int) PARTITION BY RANGE (b); CREATE TABLE pagg_tab_ml_p3_s1(c text, a int, b int); CREATE TABLE pagg_tab_ml_p3_s2 PARTITION OF pagg_tab_ml_p3 FOR VALUES FROM (7) TO (10); ALTER TABLE pagg_tab_ml_p3 ATTACH PARTITION pagg_tab_ml_p3_s1 FOR VALUES FROM (0) TO (7); ALTER TABLE pagg_tab_ml ATTACH PARTITION pagg_tab_ml_p3 FOR VALUES FROM (20) TO (30); INSERT INTO pagg_tab_ml SELECT i % 30, i % 10, to_char(i % 4, 'FM0000') FROM generate_series(0, 29999) i; ANALYZE pagg_tab_ml; -- For Parallel Append SET max_parallel_workers_per_gather TO 2; -- Full aggregation at level 1 as GROUP BY clause matches with PARTITION KEY -- for level 1 only. For subpartitions, GROUP BY clause does not match with -- PARTITION KEY, but still we do not see a partial aggregation as array_agg() -- is not partial agg safe. EXPLAIN (COSTS OFF) SELECT a, sum(b), array_agg(distinct c), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3 ORDER BY 1, 2, 3; SELECT a, sum(b), array_agg(distinct c), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3 ORDER BY 1, 2, 3; -- Without ORDER BY clause, to test Gather at top-most path EXPLAIN (COSTS OFF) SELECT a, sum(b), array_agg(distinct c), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3; -- Full aggregation at level 1 as GROUP BY clause matches with PARTITION KEY -- for level 1 only. For subpartitions, GROUP BY clause does not match with -- PARTITION KEY, thus we will have a partial aggregation for them. EXPLAIN (COSTS OFF) SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3 ORDER BY 1, 2, 3; SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3 ORDER BY 1, 2, 3; -- Partial aggregation at all levels as GROUP BY clause does not match with -- PARTITION KEY EXPLAIN (COSTS OFF) SELECT b, sum(a), count(*) FROM pagg_tab_ml GROUP BY b ORDER BY 1, 2, 3; SELECT b, sum(a), count(*) FROM pagg_tab_ml GROUP BY b HAVING avg(a) < 15 ORDER BY 1, 2, 3; -- Full aggregation at all levels as GROUP BY clause matches with PARTITION KEY EXPLAIN (COSTS OFF) SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a, b, c HAVING avg(b) > 7 ORDER BY 1, 2, 3; SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a, b, c HAVING avg(b) > 7 ORDER BY 1, 2, 3; -- Parallelism within partitionwise aggregates SET min_parallel_table_scan_size TO '8kB'; SET parallel_setup_cost TO 0; -- Full aggregation at level 1 as GROUP BY clause matches with PARTITION KEY -- for level 1 only. For subpartitions, GROUP BY clause does not match with -- PARTITION KEY, thus we will have a partial aggregation for them. EXPLAIN (COSTS OFF) SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3 ORDER BY 1, 2, 3; SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a HAVING avg(b) < 3 ORDER BY 1, 2, 3; -- Partial aggregation at all levels as GROUP BY clause does not match with -- PARTITION KEY EXPLAIN (COSTS OFF) SELECT b, sum(a), count(*) FROM pagg_tab_ml GROUP BY b ORDER BY 1, 2, 3; SELECT b, sum(a), count(*) FROM pagg_tab_ml GROUP BY b HAVING avg(a) < 15 ORDER BY 1, 2, 3; -- Full aggregation at all levels as GROUP BY clause matches with PARTITION KEY EXPLAIN (COSTS OFF) SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a, b, c HAVING avg(b) > 7 ORDER BY 1, 2, 3; SELECT a, sum(b), count(*) FROM pagg_tab_ml GROUP BY a, b, c HAVING avg(b) > 7 ORDER BY 1, 2, 3; -- Parallelism within partitionwise aggregates (single level) -- Add few parallel setup cost, so that we will see a plan which gathers -- partially created paths even for full aggregation and sticks a single Gather -- followed by finalization step. -- Without this, the cost of doing partial aggregation + Gather + finalization -- for each partition and then Append over it turns out to be same and this -- wins as we add it first. This parallel_setup_cost plays a vital role in -- costing such plans. SET parallel_setup_cost TO 10; CREATE TABLE pagg_tab_para(x int, y int) PARTITION BY RANGE(x); CREATE TABLE pagg_tab_para_p1 PARTITION OF pagg_tab_para FOR VALUES FROM (0) TO (12); CREATE TABLE pagg_tab_para_p2 PARTITION OF pagg_tab_para FOR VALUES FROM (12) TO (22); CREATE TABLE pagg_tab_para_p3 PARTITION OF pagg_tab_para FOR VALUES FROM (22) TO (30); INSERT INTO pagg_tab_para SELECT i % 30, i % 20 FROM generate_series(0, 29999) i; ANALYZE pagg_tab_para; -- When GROUP BY clause matches; full aggregation is performed for each partition. EXPLAIN (COSTS OFF) SELECT x, sum(y), avg(y), count(*) FROM pagg_tab_para GROUP BY x HAVING avg(y) < 7 ORDER BY 1, 2, 3; SELECT x, sum(y), avg(y), count(*) FROM pagg_tab_para GROUP BY x HAVING avg(y) < 7 ORDER BY 1, 2, 3; -- When GROUP BY clause does not match; partial aggregation is performed for each partition. EXPLAIN (COSTS OFF) SELECT y, sum(x), avg(x), count(*) FROM pagg_tab_para GROUP BY y HAVING avg(x) < 12 ORDER BY 1, 2, 3; SELECT y, sum(x), avg(x), count(*) FROM pagg_tab_para GROUP BY y HAVING avg(x) < 12 ORDER BY 1, 2, 3; -- Test when parent can produce parallel paths but not any (or some) of its children ALTER TABLE pagg_tab_para_p1 SET (parallel_workers = 0); ALTER TABLE pagg_tab_para_p3 SET (parallel_workers = 0); ANALYZE pagg_tab_para; EXPLAIN (COSTS OFF) SELECT x, sum(y), avg(y), count(*) FROM pagg_tab_para GROUP BY x HAVING avg(y) < 7 ORDER BY 1, 2, 3; SELECT x, sum(y), avg(y), count(*) FROM pagg_tab_para GROUP BY x HAVING avg(y) < 7 ORDER BY 1, 2, 3; ALTER TABLE pagg_tab_para_p2 SET (parallel_workers = 0); ANALYZE pagg_tab_para; EXPLAIN (COSTS OFF) SELECT x, sum(y), avg(y), count(*) FROM pagg_tab_para GROUP BY x HAVING avg(y) < 7 ORDER BY 1, 2, 3; SELECT x, sum(y), avg(y), count(*) FROM pagg_tab_para GROUP BY x HAVING avg(y) < 7 ORDER BY 1, 2, 3; -- Reset parallelism parameters to get partitionwise aggregation plan. RESET min_parallel_table_scan_size; RESET parallel_setup_cost; EXPLAIN (COSTS OFF) SELECT x, sum(y), avg(y), count(*) FROM pagg_tab_para GROUP BY x HAVING avg(y) < 7 ORDER BY 1, 2, 3; SELECT x, sum(y), avg(y), count(*) FROM pagg_tab_para GROUP BY x HAVING avg(y) < 7 ORDER BY 1, 2, 3; libpg_query-13-2.1.0/test/sql/postgres_regress/partition_info.sql000066400000000000000000000127631413137616400252170ustar00rootroot00000000000000-- -- Tests for functions providing information about partitions -- SELECT * FROM pg_partition_tree(NULL); SELECT * FROM pg_partition_tree(0); SELECT * FROM pg_partition_ancestors(NULL); SELECT * FROM pg_partition_ancestors(0); SELECT pg_partition_root(NULL); SELECT pg_partition_root(0); -- Test table partition trees CREATE TABLE ptif_test (a int, b int) PARTITION BY range (a); CREATE TABLE ptif_test0 PARTITION OF ptif_test FOR VALUES FROM (minvalue) TO (0) PARTITION BY list (b); CREATE TABLE ptif_test01 PARTITION OF ptif_test0 FOR VALUES IN (1); CREATE TABLE ptif_test1 PARTITION OF ptif_test FOR VALUES FROM (0) TO (100) PARTITION BY list (b); CREATE TABLE ptif_test11 PARTITION OF ptif_test1 FOR VALUES IN (1); CREATE TABLE ptif_test2 PARTITION OF ptif_test FOR VALUES FROM (100) TO (200); -- This partitioned table should remain with no partitions. CREATE TABLE ptif_test3 PARTITION OF ptif_test FOR VALUES FROM (200) TO (maxvalue) PARTITION BY list (b); -- Test pg_partition_root for tables SELECT pg_partition_root('ptif_test'); SELECT pg_partition_root('ptif_test0'); SELECT pg_partition_root('ptif_test01'); SELECT pg_partition_root('ptif_test3'); -- Test index partition tree CREATE INDEX ptif_test_index ON ONLY ptif_test (a); CREATE INDEX ptif_test0_index ON ONLY ptif_test0 (a); ALTER INDEX ptif_test_index ATTACH PARTITION ptif_test0_index; CREATE INDEX ptif_test01_index ON ptif_test01 (a); ALTER INDEX ptif_test0_index ATTACH PARTITION ptif_test01_index; CREATE INDEX ptif_test1_index ON ONLY ptif_test1 (a); ALTER INDEX ptif_test_index ATTACH PARTITION ptif_test1_index; CREATE INDEX ptif_test11_index ON ptif_test11 (a); ALTER INDEX ptif_test1_index ATTACH PARTITION ptif_test11_index; CREATE INDEX ptif_test2_index ON ptif_test2 (a); ALTER INDEX ptif_test_index ATTACH PARTITION ptif_test2_index; CREATE INDEX ptif_test3_index ON ptif_test3 (a); ALTER INDEX ptif_test_index ATTACH PARTITION ptif_test3_index; -- Test pg_partition_root for indexes SELECT pg_partition_root('ptif_test_index'); SELECT pg_partition_root('ptif_test0_index'); SELECT pg_partition_root('ptif_test01_index'); SELECT pg_partition_root('ptif_test3_index'); -- List all tables members of the tree SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree('ptif_test'); -- List tables from an intermediate level SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree('ptif_test0') p JOIN pg_class c ON (p.relid = c.oid); -- List from leaf table SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree('ptif_test01') p JOIN pg_class c ON (p.relid = c.oid); -- List from partitioned table with no partitions SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree('ptif_test3') p JOIN pg_class c ON (p.relid = c.oid); -- List all ancestors of root and leaf tables SELECT * FROM pg_partition_ancestors('ptif_test01'); SELECT * FROM pg_partition_ancestors('ptif_test'); -- List all members using pg_partition_root with leaf table reference SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree(pg_partition_root('ptif_test01')) p JOIN pg_class c ON (p.relid = c.oid); -- List all indexes members of the tree SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree('ptif_test_index'); -- List indexes from an intermediate level SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree('ptif_test0_index') p JOIN pg_class c ON (p.relid = c.oid); -- List from leaf index SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree('ptif_test01_index') p JOIN pg_class c ON (p.relid = c.oid); -- List from partitioned index with no partitions SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree('ptif_test3_index') p JOIN pg_class c ON (p.relid = c.oid); -- List all members using pg_partition_root with leaf index reference SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree(pg_partition_root('ptif_test01_index')) p JOIN pg_class c ON (p.relid = c.oid); -- List all ancestors of root and leaf indexes SELECT * FROM pg_partition_ancestors('ptif_test01_index'); SELECT * FROM pg_partition_ancestors('ptif_test_index'); DROP TABLE ptif_test; -- Table that is not part of any partition tree is not listed. CREATE TABLE ptif_normal_table(a int); SELECT relid, parentrelid, level, isleaf FROM pg_partition_tree('ptif_normal_table'); SELECT * FROM pg_partition_ancestors('ptif_normal_table'); SELECT pg_partition_root('ptif_normal_table'); DROP TABLE ptif_normal_table; -- Various partitioning-related functions return empty/NULL if passed relations -- of types that cannot be part of a partition tree; for example, views, -- materialized views, legacy inheritance children or parents, etc. CREATE VIEW ptif_test_view AS SELECT 1; CREATE MATERIALIZED VIEW ptif_test_matview AS SELECT 1; CREATE TABLE ptif_li_parent (); CREATE TABLE ptif_li_child () INHERITS (ptif_li_parent); SELECT * FROM pg_partition_tree('ptif_test_view'); SELECT * FROM pg_partition_tree('ptif_test_matview'); SELECT * FROM pg_partition_tree('ptif_li_parent'); SELECT * FROM pg_partition_tree('ptif_li_child'); SELECT * FROM pg_partition_ancestors('ptif_test_view'); SELECT * FROM pg_partition_ancestors('ptif_test_matview'); SELECT * FROM pg_partition_ancestors('ptif_li_parent'); SELECT * FROM pg_partition_ancestors('ptif_li_child'); SELECT pg_partition_root('ptif_test_view'); SELECT pg_partition_root('ptif_test_matview'); SELECT pg_partition_root('ptif_li_parent'); SELECT pg_partition_root('ptif_li_child'); DROP VIEW ptif_test_view; DROP MATERIALIZED VIEW ptif_test_matview; DROP TABLE ptif_li_parent, ptif_li_child; libpg_query-13-2.1.0/test/sql/postgres_regress/partition_join.sql000066400000000000000000001746131413137616400252260ustar00rootroot00000000000000-- -- PARTITION_JOIN -- Test partitionwise join between partitioned tables -- -- Enable partitionwise join, which by default is disabled. SET enable_partitionwise_join to true; -- -- partitioned by a single column -- CREATE TABLE prt1 (a int, b int, c varchar) PARTITION BY RANGE(a); CREATE TABLE prt1_p1 PARTITION OF prt1 FOR VALUES FROM (0) TO (250); CREATE TABLE prt1_p3 PARTITION OF prt1 FOR VALUES FROM (500) TO (600); CREATE TABLE prt1_p2 PARTITION OF prt1 FOR VALUES FROM (250) TO (500); INSERT INTO prt1 SELECT i, i % 25, to_char(i, 'FM0000') FROM generate_series(0, 599) i WHERE i % 2 = 0; CREATE INDEX iprt1_p1_a on prt1_p1(a); CREATE INDEX iprt1_p2_a on prt1_p2(a); CREATE INDEX iprt1_p3_a on prt1_p3(a); ANALYZE prt1; CREATE TABLE prt2 (a int, b int, c varchar) PARTITION BY RANGE(b); CREATE TABLE prt2_p1 PARTITION OF prt2 FOR VALUES FROM (0) TO (250); CREATE TABLE prt2_p2 PARTITION OF prt2 FOR VALUES FROM (250) TO (500); CREATE TABLE prt2_p3 PARTITION OF prt2 FOR VALUES FROM (500) TO (600); INSERT INTO prt2 SELECT i % 25, i, to_char(i, 'FM0000') FROM generate_series(0, 599) i WHERE i % 3 = 0; CREATE INDEX iprt2_p1_b on prt2_p1(b); CREATE INDEX iprt2_p2_b on prt2_p2(b); CREATE INDEX iprt2_p3_b on prt2_p3(b); ANALYZE prt2; -- inner join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1, prt2 t2 WHERE t1.a = t2.b AND t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1, prt2 t2 WHERE t1.a = t2.b AND t1.b = 0 ORDER BY t1.a, t2.b; -- left outer join, with whole-row reference; partitionwise join does not apply EXPLAIN (COSTS OFF) SELECT t1, t2 FROM prt1 t1 LEFT JOIN prt2 t2 ON t1.a = t2.b WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1, t2 FROM prt1 t1 LEFT JOIN prt2 t2 ON t1.a = t2.b WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- right outer join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1 RIGHT JOIN prt2 t2 ON t1.a = t2.b WHERE t2.a = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1 RIGHT JOIN prt2 t2 ON t1.a = t2.b WHERE t2.a = 0 ORDER BY t1.a, t2.b; -- full outer join, with placeholder vars EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT 50 phv, * FROM prt1 WHERE prt1.b = 0) t1 FULL JOIN (SELECT 75 phv, * FROM prt2 WHERE prt2.a = 0) t2 ON (t1.a = t2.b) WHERE t1.phv = t1.a OR t2.phv = t2.b ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT 50 phv, * FROM prt1 WHERE prt1.b = 0) t1 FULL JOIN (SELECT 75 phv, * FROM prt2 WHERE prt2.a = 0) t2 ON (t1.a = t2.b) WHERE t1.phv = t1.a OR t2.phv = t2.b ORDER BY t1.a, t2.b; -- Join with pruned partitions from joining relations EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1, prt2 t2 WHERE t1.a = t2.b AND t1.a < 450 AND t2.b > 250 AND t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1, prt2 t2 WHERE t1.a = t2.b AND t1.a < 450 AND t2.b > 250 AND t1.b = 0 ORDER BY t1.a, t2.b; -- Currently we can't do partitioned join if nullable-side partitions are pruned EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1 WHERE a < 450) t1 LEFT JOIN (SELECT * FROM prt2 WHERE b > 250) t2 ON t1.a = t2.b WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1 WHERE a < 450) t1 LEFT JOIN (SELECT * FROM prt2 WHERE b > 250) t2 ON t1.a = t2.b WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- Currently we can't do partitioned join if nullable-side partitions are pruned EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1 WHERE a < 450) t1 FULL JOIN (SELECT * FROM prt2 WHERE b > 250) t2 ON t1.a = t2.b WHERE t1.b = 0 OR t2.a = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1 WHERE a < 450) t1 FULL JOIN (SELECT * FROM prt2 WHERE b > 250) t2 ON t1.a = t2.b WHERE t1.b = 0 OR t2.a = 0 ORDER BY t1.a, t2.b; -- Semi-join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1 t1 WHERE t1.a IN (SELECT t2.b FROM prt2 t2 WHERE t2.a = 0) AND t1.b = 0 ORDER BY t1.a; SELECT t1.* FROM prt1 t1 WHERE t1.a IN (SELECT t2.b FROM prt2 t2 WHERE t2.a = 0) AND t1.b = 0 ORDER BY t1.a; -- Anti-join with aggregates EXPLAIN (COSTS OFF) SELECT sum(t1.a), avg(t1.a), sum(t1.b), avg(t1.b) FROM prt1 t1 WHERE NOT EXISTS (SELECT 1 FROM prt2 t2 WHERE t1.a = t2.b); SELECT sum(t1.a), avg(t1.a), sum(t1.b), avg(t1.b) FROM prt1 t1 WHERE NOT EXISTS (SELECT 1 FROM prt2 t2 WHERE t1.a = t2.b); -- lateral reference EXPLAIN (COSTS OFF) SELECT * FROM prt1 t1 LEFT JOIN LATERAL (SELECT t2.a AS t2a, t3.a AS t3a, least(t1.a,t2.a,t3.b) FROM prt1 t2 JOIN prt2 t3 ON (t2.a = t3.b)) ss ON t1.a = ss.t2a WHERE t1.b = 0 ORDER BY t1.a; SELECT * FROM prt1 t1 LEFT JOIN LATERAL (SELECT t2.a AS t2a, t3.a AS t3a, least(t1.a,t2.a,t3.b) FROM prt1 t2 JOIN prt2 t3 ON (t2.a = t3.b)) ss ON t1.a = ss.t2a WHERE t1.b = 0 ORDER BY t1.a; EXPLAIN (COSTS OFF) SELECT t1.a, ss.t2a, ss.t2c FROM prt1 t1 LEFT JOIN LATERAL (SELECT t2.a AS t2a, t3.a AS t3a, t2.b t2b, t2.c t2c, least(t1.a,t2.a,t3.b) FROM prt1 t2 JOIN prt2 t3 ON (t2.a = t3.b)) ss ON t1.c = ss.t2c WHERE (t1.b + coalesce(ss.t2b, 0)) = 0 ORDER BY t1.a; SELECT t1.a, ss.t2a, ss.t2c FROM prt1 t1 LEFT JOIN LATERAL (SELECT t2.a AS t2a, t3.a AS t3a, t2.b t2b, t2.c t2c, least(t1.a,t2.a,t3.a) FROM prt1 t2 JOIN prt2 t3 ON (t2.a = t3.b)) ss ON t1.c = ss.t2c WHERE (t1.b + coalesce(ss.t2b, 0)) = 0 ORDER BY t1.a; -- bug with inadequate sort key representation SET enable_partitionwise_aggregate TO true; SET enable_hashjoin TO false; EXPLAIN (COSTS OFF) SELECT a, b FROM prt1 FULL JOIN prt2 p2(b,a,c) USING(a,b) WHERE a BETWEEN 490 AND 510 GROUP BY 1, 2 ORDER BY 1, 2; SELECT a, b FROM prt1 FULL JOIN prt2 p2(b,a,c) USING(a,b) WHERE a BETWEEN 490 AND 510 GROUP BY 1, 2 ORDER BY 1, 2; RESET enable_partitionwise_aggregate; RESET enable_hashjoin; -- -- partitioned by expression -- CREATE TABLE prt1_e (a int, b int, c int) PARTITION BY RANGE(((a + b)/2)); CREATE TABLE prt1_e_p1 PARTITION OF prt1_e FOR VALUES FROM (0) TO (250); CREATE TABLE prt1_e_p2 PARTITION OF prt1_e FOR VALUES FROM (250) TO (500); CREATE TABLE prt1_e_p3 PARTITION OF prt1_e FOR VALUES FROM (500) TO (600); INSERT INTO prt1_e SELECT i, i, i % 25 FROM generate_series(0, 599, 2) i; CREATE INDEX iprt1_e_p1_ab2 on prt1_e_p1(((a+b)/2)); CREATE INDEX iprt1_e_p2_ab2 on prt1_e_p2(((a+b)/2)); CREATE INDEX iprt1_e_p3_ab2 on prt1_e_p3(((a+b)/2)); ANALYZE prt1_e; CREATE TABLE prt2_e (a int, b int, c int) PARTITION BY RANGE(((b + a)/2)); CREATE TABLE prt2_e_p1 PARTITION OF prt2_e FOR VALUES FROM (0) TO (250); CREATE TABLE prt2_e_p2 PARTITION OF prt2_e FOR VALUES FROM (250) TO (500); CREATE TABLE prt2_e_p3 PARTITION OF prt2_e FOR VALUES FROM (500) TO (600); INSERT INTO prt2_e SELECT i, i, i % 25 FROM generate_series(0, 599, 3) i; ANALYZE prt2_e; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_e t1, prt2_e t2 WHERE (t1.a + t1.b)/2 = (t2.b + t2.a)/2 AND t1.c = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_e t1, prt2_e t2 WHERE (t1.a + t1.b)/2 = (t2.b + t2.a)/2 AND t1.c = 0 ORDER BY t1.a, t2.b; -- -- N-way join -- EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c, t3.a + t3.b, t3.c FROM prt1 t1, prt2 t2, prt1_e t3 WHERE t1.a = t2.b AND t1.a = (t3.a + t3.b)/2 AND t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c, t3.a + t3.b, t3.c FROM prt1 t1, prt2 t2, prt1_e t3 WHERE t1.a = t2.b AND t1.a = (t3.a + t3.b)/2 AND t1.b = 0 ORDER BY t1.a, t2.b; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c, t3.a + t3.b, t3.c FROM (prt1 t1 LEFT JOIN prt2 t2 ON t1.a = t2.b) LEFT JOIN prt1_e t3 ON (t1.a = (t3.a + t3.b)/2) WHERE t1.b = 0 ORDER BY t1.a, t2.b, t3.a + t3.b; SELECT t1.a, t1.c, t2.b, t2.c, t3.a + t3.b, t3.c FROM (prt1 t1 LEFT JOIN prt2 t2 ON t1.a = t2.b) LEFT JOIN prt1_e t3 ON (t1.a = (t3.a + t3.b)/2) WHERE t1.b = 0 ORDER BY t1.a, t2.b, t3.a + t3.b; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c, t3.a + t3.b, t3.c FROM (prt1 t1 LEFT JOIN prt2 t2 ON t1.a = t2.b) RIGHT JOIN prt1_e t3 ON (t1.a = (t3.a + t3.b)/2) WHERE t3.c = 0 ORDER BY t1.a, t2.b, t3.a + t3.b; SELECT t1.a, t1.c, t2.b, t2.c, t3.a + t3.b, t3.c FROM (prt1 t1 LEFT JOIN prt2 t2 ON t1.a = t2.b) RIGHT JOIN prt1_e t3 ON (t1.a = (t3.a + t3.b)/2) WHERE t3.c = 0 ORDER BY t1.a, t2.b, t3.a + t3.b; -- -- 3-way full join -- EXPLAIN (COSTS OFF) SELECT COUNT(*) FROM prt1 FULL JOIN prt2 p2(b,a,c) USING(a,b) FULL JOIN prt2 p3(b,a,c) USING (a, b) WHERE a BETWEEN 490 AND 510; SELECT COUNT(*) FROM prt1 FULL JOIN prt2 p2(b,a,c) USING(a,b) FULL JOIN prt2 p3(b,a,c) USING (a, b) WHERE a BETWEEN 490 AND 510; -- -- 4-way full join -- EXPLAIN (COSTS OFF) SELECT COUNT(*) FROM prt1 FULL JOIN prt2 p2(b,a,c) USING(a,b) FULL JOIN prt2 p3(b,a,c) USING (a, b) FULL JOIN prt1 p4 (a,b,c) USING (a, b) WHERE a BETWEEN 490 AND 510; SELECT COUNT(*) FROM prt1 FULL JOIN prt2 p2(b,a,c) USING(a,b) FULL JOIN prt2 p3(b,a,c) USING (a, b) FULL JOIN prt1 p4 (a,b,c) USING (a, b) WHERE a BETWEEN 490 AND 510; -- Cases with non-nullable expressions in subquery results; -- make sure these go to null as expected EXPLAIN (COSTS OFF) SELECT t1.a, t1.phv, t2.b, t2.phv, t3.a + t3.b, t3.phv FROM ((SELECT 50 phv, * FROM prt1 WHERE prt1.b = 0) t1 FULL JOIN (SELECT 75 phv, * FROM prt2 WHERE prt2.a = 0) t2 ON (t1.a = t2.b)) FULL JOIN (SELECT 50 phv, * FROM prt1_e WHERE prt1_e.c = 0) t3 ON (t1.a = (t3.a + t3.b)/2) WHERE t1.a = t1.phv OR t2.b = t2.phv OR (t3.a + t3.b)/2 = t3.phv ORDER BY t1.a, t2.b, t3.a + t3.b; SELECT t1.a, t1.phv, t2.b, t2.phv, t3.a + t3.b, t3.phv FROM ((SELECT 50 phv, * FROM prt1 WHERE prt1.b = 0) t1 FULL JOIN (SELECT 75 phv, * FROM prt2 WHERE prt2.a = 0) t2 ON (t1.a = t2.b)) FULL JOIN (SELECT 50 phv, * FROM prt1_e WHERE prt1_e.c = 0) t3 ON (t1.a = (t3.a + t3.b)/2) WHERE t1.a = t1.phv OR t2.b = t2.phv OR (t3.a + t3.b)/2 = t3.phv ORDER BY t1.a, t2.b, t3.a + t3.b; -- Semi-join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1 t1 WHERE t1.a IN (SELECT t1.b FROM prt2 t1, prt1_e t2 WHERE t1.a = 0 AND t1.b = (t2.a + t2.b)/2) AND t1.b = 0 ORDER BY t1.a; SELECT t1.* FROM prt1 t1 WHERE t1.a IN (SELECT t1.b FROM prt2 t1, prt1_e t2 WHERE t1.a = 0 AND t1.b = (t2.a + t2.b)/2) AND t1.b = 0 ORDER BY t1.a; EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1 t1 WHERE t1.a IN (SELECT t1.b FROM prt2 t1 WHERE t1.b IN (SELECT (t1.a + t1.b)/2 FROM prt1_e t1 WHERE t1.c = 0)) AND t1.b = 0 ORDER BY t1.a; SELECT t1.* FROM prt1 t1 WHERE t1.a IN (SELECT t1.b FROM prt2 t1 WHERE t1.b IN (SELECT (t1.a + t1.b)/2 FROM prt1_e t1 WHERE t1.c = 0)) AND t1.b = 0 ORDER BY t1.a; -- test merge joins SET enable_hashjoin TO off; SET enable_nestloop TO off; EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1 t1 WHERE t1.a IN (SELECT t1.b FROM prt2 t1 WHERE t1.b IN (SELECT (t1.a + t1.b)/2 FROM prt1_e t1 WHERE t1.c = 0)) AND t1.b = 0 ORDER BY t1.a; SELECT t1.* FROM prt1 t1 WHERE t1.a IN (SELECT t1.b FROM prt2 t1 WHERE t1.b IN (SELECT (t1.a + t1.b)/2 FROM prt1_e t1 WHERE t1.c = 0)) AND t1.b = 0 ORDER BY t1.a; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c, t3.a + t3.b, t3.c FROM (prt1 t1 LEFT JOIN prt2 t2 ON t1.a = t2.b) RIGHT JOIN prt1_e t3 ON (t1.a = (t3.a + t3.b)/2) WHERE t3.c = 0 ORDER BY t1.a, t2.b, t3.a + t3.b; SELECT t1.a, t1.c, t2.b, t2.c, t3.a + t3.b, t3.c FROM (prt1 t1 LEFT JOIN prt2 t2 ON t1.a = t2.b) RIGHT JOIN prt1_e t3 ON (t1.a = (t3.a + t3.b)/2) WHERE t3.c = 0 ORDER BY t1.a, t2.b, t3.a + t3.b; -- MergeAppend on nullable column -- This should generate a partitionwise join, but currently fails to EXPLAIN (COSTS OFF) SELECT t1.a, t2.b FROM (SELECT * FROM prt1 WHERE a < 450) t1 LEFT JOIN (SELECT * FROM prt2 WHERE b > 250) t2 ON t1.a = t2.b WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t2.b FROM (SELECT * FROM prt1 WHERE a < 450) t1 LEFT JOIN (SELECT * FROM prt2 WHERE b > 250) t2 ON t1.a = t2.b WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- merge join when expression with whole-row reference needs to be sorted; -- partitionwise join does not apply EXPLAIN (COSTS OFF) SELECT t1.a, t2.b FROM prt1 t1, prt2 t2 WHERE t1::text = t2::text AND t1.a = t2.b ORDER BY t1.a; SELECT t1.a, t2.b FROM prt1 t1, prt2 t2 WHERE t1::text = t2::text AND t1.a = t2.b ORDER BY t1.a; RESET enable_hashjoin; RESET enable_nestloop; -- -- partitioned by multiple columns -- CREATE TABLE prt1_m (a int, b int, c int) PARTITION BY RANGE(a, ((a + b)/2)); CREATE TABLE prt1_m_p1 PARTITION OF prt1_m FOR VALUES FROM (0, 0) TO (250, 250); CREATE TABLE prt1_m_p2 PARTITION OF prt1_m FOR VALUES FROM (250, 250) TO (500, 500); CREATE TABLE prt1_m_p3 PARTITION OF prt1_m FOR VALUES FROM (500, 500) TO (600, 600); INSERT INTO prt1_m SELECT i, i, i % 25 FROM generate_series(0, 599, 2) i; ANALYZE prt1_m; CREATE TABLE prt2_m (a int, b int, c int) PARTITION BY RANGE(((b + a)/2), b); CREATE TABLE prt2_m_p1 PARTITION OF prt2_m FOR VALUES FROM (0, 0) TO (250, 250); CREATE TABLE prt2_m_p2 PARTITION OF prt2_m FOR VALUES FROM (250, 250) TO (500, 500); CREATE TABLE prt2_m_p3 PARTITION OF prt2_m FOR VALUES FROM (500, 500) TO (600, 600); INSERT INTO prt2_m SELECT i, i, i % 25 FROM generate_series(0, 599, 3) i; ANALYZE prt2_m; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1_m WHERE prt1_m.c = 0) t1 FULL JOIN (SELECT * FROM prt2_m WHERE prt2_m.c = 0) t2 ON (t1.a = (t2.b + t2.a)/2 AND t2.b = (t1.a + t1.b)/2) ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1_m WHERE prt1_m.c = 0) t1 FULL JOIN (SELECT * FROM prt2_m WHERE prt2_m.c = 0) t2 ON (t1.a = (t2.b + t2.a)/2 AND t2.b = (t1.a + t1.b)/2) ORDER BY t1.a, t2.b; -- -- tests for list partitioned tables. -- CREATE TABLE plt1 (a int, b int, c text) PARTITION BY LIST(c); CREATE TABLE plt1_p1 PARTITION OF plt1 FOR VALUES IN ('0000', '0003', '0004', '0010'); CREATE TABLE plt1_p2 PARTITION OF plt1 FOR VALUES IN ('0001', '0005', '0002', '0009'); CREATE TABLE plt1_p3 PARTITION OF plt1 FOR VALUES IN ('0006', '0007', '0008', '0011'); INSERT INTO plt1 SELECT i, i, to_char(i/50, 'FM0000') FROM generate_series(0, 599, 2) i; ANALYZE plt1; CREATE TABLE plt2 (a int, b int, c text) PARTITION BY LIST(c); CREATE TABLE plt2_p1 PARTITION OF plt2 FOR VALUES IN ('0000', '0003', '0004', '0010'); CREATE TABLE plt2_p2 PARTITION OF plt2 FOR VALUES IN ('0001', '0005', '0002', '0009'); CREATE TABLE plt2_p3 PARTITION OF plt2 FOR VALUES IN ('0006', '0007', '0008', '0011'); INSERT INTO plt2 SELECT i, i, to_char(i/50, 'FM0000') FROM generate_series(0, 599, 3) i; ANALYZE plt2; -- -- list partitioned by expression -- CREATE TABLE plt1_e (a int, b int, c text) PARTITION BY LIST(ltrim(c, 'A')); CREATE TABLE plt1_e_p1 PARTITION OF plt1_e FOR VALUES IN ('0000', '0003', '0004', '0010'); CREATE TABLE plt1_e_p2 PARTITION OF plt1_e FOR VALUES IN ('0001', '0005', '0002', '0009'); CREATE TABLE plt1_e_p3 PARTITION OF plt1_e FOR VALUES IN ('0006', '0007', '0008', '0011'); INSERT INTO plt1_e SELECT i, i, 'A' || to_char(i/50, 'FM0000') FROM generate_series(0, 599, 2) i; ANALYZE plt1_e; -- test partition matching with N-way join EXPLAIN (COSTS OFF) SELECT avg(t1.a), avg(t2.b), avg(t3.a + t3.b), t1.c, t2.c, t3.c FROM plt1 t1, plt2 t2, plt1_e t3 WHERE t1.b = t2.b AND t1.c = t2.c AND ltrim(t3.c, 'A') = t1.c GROUP BY t1.c, t2.c, t3.c ORDER BY t1.c, t2.c, t3.c; SELECT avg(t1.a), avg(t2.b), avg(t3.a + t3.b), t1.c, t2.c, t3.c FROM plt1 t1, plt2 t2, plt1_e t3 WHERE t1.b = t2.b AND t1.c = t2.c AND ltrim(t3.c, 'A') = t1.c GROUP BY t1.c, t2.c, t3.c ORDER BY t1.c, t2.c, t3.c; -- joins where one of the relations is proven empty EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1, prt2 t2 WHERE t1.a = t2.b AND t1.a = 1 AND t1.a = 2; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1 WHERE a = 1 AND a = 2) t1 LEFT JOIN prt2 t2 ON t1.a = t2.b; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1 WHERE a = 1 AND a = 2) t1 RIGHT JOIN prt2 t2 ON t1.a = t2.b, prt1 t3 WHERE t2.b = t3.a; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1 WHERE a = 1 AND a = 2) t1 FULL JOIN prt2 t2 ON t1.a = t2.b WHERE t2.a = 0 ORDER BY t1.a, t2.b; -- -- tests for hash partitioned tables. -- CREATE TABLE pht1 (a int, b int, c text) PARTITION BY HASH(c); CREATE TABLE pht1_p1 PARTITION OF pht1 FOR VALUES WITH (MODULUS 3, REMAINDER 0); CREATE TABLE pht1_p2 PARTITION OF pht1 FOR VALUES WITH (MODULUS 3, REMAINDER 1); CREATE TABLE pht1_p3 PARTITION OF pht1 FOR VALUES WITH (MODULUS 3, REMAINDER 2); INSERT INTO pht1 SELECT i, i, to_char(i/50, 'FM0000') FROM generate_series(0, 599, 2) i; ANALYZE pht1; CREATE TABLE pht2 (a int, b int, c text) PARTITION BY HASH(c); CREATE TABLE pht2_p1 PARTITION OF pht2 FOR VALUES WITH (MODULUS 3, REMAINDER 0); CREATE TABLE pht2_p2 PARTITION OF pht2 FOR VALUES WITH (MODULUS 3, REMAINDER 1); CREATE TABLE pht2_p3 PARTITION OF pht2 FOR VALUES WITH (MODULUS 3, REMAINDER 2); INSERT INTO pht2 SELECT i, i, to_char(i/50, 'FM0000') FROM generate_series(0, 599, 3) i; ANALYZE pht2; -- -- hash partitioned by expression -- CREATE TABLE pht1_e (a int, b int, c text) PARTITION BY HASH(ltrim(c, 'A')); CREATE TABLE pht1_e_p1 PARTITION OF pht1_e FOR VALUES WITH (MODULUS 3, REMAINDER 0); CREATE TABLE pht1_e_p2 PARTITION OF pht1_e FOR VALUES WITH (MODULUS 3, REMAINDER 1); CREATE TABLE pht1_e_p3 PARTITION OF pht1_e FOR VALUES WITH (MODULUS 3, REMAINDER 2); INSERT INTO pht1_e SELECT i, i, 'A' || to_char(i/50, 'FM0000') FROM generate_series(0, 299, 2) i; ANALYZE pht1_e; -- test partition matching with N-way join EXPLAIN (COSTS OFF) SELECT avg(t1.a), avg(t2.b), avg(t3.a + t3.b), t1.c, t2.c, t3.c FROM pht1 t1, pht2 t2, pht1_e t3 WHERE t1.b = t2.b AND t1.c = t2.c AND ltrim(t3.c, 'A') = t1.c GROUP BY t1.c, t2.c, t3.c ORDER BY t1.c, t2.c, t3.c; SELECT avg(t1.a), avg(t2.b), avg(t3.a + t3.b), t1.c, t2.c, t3.c FROM pht1 t1, pht2 t2, pht1_e t3 WHERE t1.b = t2.b AND t1.c = t2.c AND ltrim(t3.c, 'A') = t1.c GROUP BY t1.c, t2.c, t3.c ORDER BY t1.c, t2.c, t3.c; -- test default partition behavior for range ALTER TABLE prt1 DETACH PARTITION prt1_p3; ALTER TABLE prt1 ATTACH PARTITION prt1_p3 DEFAULT; ANALYZE prt1; ALTER TABLE prt2 DETACH PARTITION prt2_p3; ALTER TABLE prt2 ATTACH PARTITION prt2_p3 DEFAULT; ANALYZE prt2; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1, prt2 t2 WHERE t1.a = t2.b AND t1.b = 0 ORDER BY t1.a, t2.b; -- test default partition behavior for list ALTER TABLE plt1 DETACH PARTITION plt1_p3; ALTER TABLE plt1 ATTACH PARTITION plt1_p3 DEFAULT; ANALYZE plt1; ALTER TABLE plt2 DETACH PARTITION plt2_p3; ALTER TABLE plt2 ATTACH PARTITION plt2_p3 DEFAULT; ANALYZE plt2; EXPLAIN (COSTS OFF) SELECT avg(t1.a), avg(t2.b), t1.c, t2.c FROM plt1 t1 RIGHT JOIN plt2 t2 ON t1.c = t2.c WHERE t1.a % 25 = 0 GROUP BY t1.c, t2.c ORDER BY t1.c, t2.c; -- -- multiple levels of partitioning -- CREATE TABLE prt1_l (a int, b int, c varchar) PARTITION BY RANGE(a); CREATE TABLE prt1_l_p1 PARTITION OF prt1_l FOR VALUES FROM (0) TO (250); CREATE TABLE prt1_l_p2 PARTITION OF prt1_l FOR VALUES FROM (250) TO (500) PARTITION BY LIST (c); CREATE TABLE prt1_l_p2_p1 PARTITION OF prt1_l_p2 FOR VALUES IN ('0000', '0001'); CREATE TABLE prt1_l_p2_p2 PARTITION OF prt1_l_p2 FOR VALUES IN ('0002', '0003'); CREATE TABLE prt1_l_p3 PARTITION OF prt1_l FOR VALUES FROM (500) TO (600) PARTITION BY RANGE (b); CREATE TABLE prt1_l_p3_p1 PARTITION OF prt1_l_p3 FOR VALUES FROM (0) TO (13); CREATE TABLE prt1_l_p3_p2 PARTITION OF prt1_l_p3 FOR VALUES FROM (13) TO (25); INSERT INTO prt1_l SELECT i, i % 25, to_char(i % 4, 'FM0000') FROM generate_series(0, 599, 2) i; ANALYZE prt1_l; CREATE TABLE prt2_l (a int, b int, c varchar) PARTITION BY RANGE(b); CREATE TABLE prt2_l_p1 PARTITION OF prt2_l FOR VALUES FROM (0) TO (250); CREATE TABLE prt2_l_p2 PARTITION OF prt2_l FOR VALUES FROM (250) TO (500) PARTITION BY LIST (c); CREATE TABLE prt2_l_p2_p1 PARTITION OF prt2_l_p2 FOR VALUES IN ('0000', '0001'); CREATE TABLE prt2_l_p2_p2 PARTITION OF prt2_l_p2 FOR VALUES IN ('0002', '0003'); CREATE TABLE prt2_l_p3 PARTITION OF prt2_l FOR VALUES FROM (500) TO (600) PARTITION BY RANGE (a); CREATE TABLE prt2_l_p3_p1 PARTITION OF prt2_l_p3 FOR VALUES FROM (0) TO (13); CREATE TABLE prt2_l_p3_p2 PARTITION OF prt2_l_p3 FOR VALUES FROM (13) TO (25); INSERT INTO prt2_l SELECT i % 25, i, to_char(i % 4, 'FM0000') FROM generate_series(0, 599, 3) i; ANALYZE prt2_l; -- inner join, qual covering only top-level partitions EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_l t1, prt2_l t2 WHERE t1.a = t2.b AND t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_l t1, prt2_l t2 WHERE t1.a = t2.b AND t1.b = 0 ORDER BY t1.a, t2.b; -- left join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_l t1 LEFT JOIN prt2_l t2 ON t1.a = t2.b AND t1.c = t2.c WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_l t1 LEFT JOIN prt2_l t2 ON t1.a = t2.b AND t1.c = t2.c WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- right join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_l t1 RIGHT JOIN prt2_l t2 ON t1.a = t2.b AND t1.c = t2.c WHERE t2.a = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_l t1 RIGHT JOIN prt2_l t2 ON t1.a = t2.b AND t1.c = t2.c WHERE t2.a = 0 ORDER BY t1.a, t2.b; -- full join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1_l WHERE prt1_l.b = 0) t1 FULL JOIN (SELECT * FROM prt2_l WHERE prt2_l.a = 0) t2 ON (t1.a = t2.b AND t1.c = t2.c) ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1_l WHERE prt1_l.b = 0) t1 FULL JOIN (SELECT * FROM prt2_l WHERE prt2_l.a = 0) t2 ON (t1.a = t2.b AND t1.c = t2.c) ORDER BY t1.a, t2.b; -- lateral partitionwise join EXPLAIN (COSTS OFF) SELECT * FROM prt1_l t1 LEFT JOIN LATERAL (SELECT t2.a AS t2a, t2.c AS t2c, t2.b AS t2b, t3.b AS t3b, least(t1.a,t2.a,t3.b) FROM prt1_l t2 JOIN prt2_l t3 ON (t2.a = t3.b AND t2.c = t3.c)) ss ON t1.a = ss.t2a AND t1.c = ss.t2c WHERE t1.b = 0 ORDER BY t1.a; SELECT * FROM prt1_l t1 LEFT JOIN LATERAL (SELECT t2.a AS t2a, t2.c AS t2c, t2.b AS t2b, t3.b AS t3b, least(t1.a,t2.a,t3.b) FROM prt1_l t2 JOIN prt2_l t3 ON (t2.a = t3.b AND t2.c = t3.c)) ss ON t1.a = ss.t2a AND t1.c = ss.t2c WHERE t1.b = 0 ORDER BY t1.a; -- join with one side empty EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT * FROM prt1_l WHERE a = 1 AND a = 2) t1 RIGHT JOIN prt2_l t2 ON t1.a = t2.b AND t1.b = t2.a AND t1.c = t2.c; -- Test case to verify proper handling of subqueries in a partitioned delete. -- The weird-looking lateral join is just there to force creation of a -- nestloop parameter within the subquery, which exposes the problem if the -- planner fails to make multiple copies of the subquery as appropriate. EXPLAIN (COSTS OFF) DELETE FROM prt1_l WHERE EXISTS ( SELECT 1 FROM int4_tbl, LATERAL (SELECT int4_tbl.f1 FROM int8_tbl LIMIT 2) ss WHERE prt1_l.c IS NULL); -- -- negative testcases -- CREATE TABLE prt1_n (a int, b int, c varchar) PARTITION BY RANGE(c); CREATE TABLE prt1_n_p1 PARTITION OF prt1_n FOR VALUES FROM ('0000') TO ('0250'); CREATE TABLE prt1_n_p2 PARTITION OF prt1_n FOR VALUES FROM ('0250') TO ('0500'); INSERT INTO prt1_n SELECT i, i, to_char(i, 'FM0000') FROM generate_series(0, 499, 2) i; ANALYZE prt1_n; CREATE TABLE prt2_n (a int, b int, c text) PARTITION BY LIST(c); CREATE TABLE prt2_n_p1 PARTITION OF prt2_n FOR VALUES IN ('0000', '0003', '0004', '0010', '0006', '0007'); CREATE TABLE prt2_n_p2 PARTITION OF prt2_n FOR VALUES IN ('0001', '0005', '0002', '0009', '0008', '0011'); INSERT INTO prt2_n SELECT i, i, to_char(i/50, 'FM0000') FROM generate_series(0, 599, 2) i; ANALYZE prt2_n; CREATE TABLE prt3_n (a int, b int, c text) PARTITION BY LIST(c); CREATE TABLE prt3_n_p1 PARTITION OF prt3_n FOR VALUES IN ('0000', '0004', '0006', '0007'); CREATE TABLE prt3_n_p2 PARTITION OF prt3_n FOR VALUES IN ('0001', '0002', '0008', '0010'); CREATE TABLE prt3_n_p3 PARTITION OF prt3_n FOR VALUES IN ('0003', '0005', '0009', '0011'); INSERT INTO prt2_n SELECT i, i, to_char(i/50, 'FM0000') FROM generate_series(0, 599, 2) i; ANALYZE prt3_n; CREATE TABLE prt4_n (a int, b int, c text) PARTITION BY RANGE(a); CREATE TABLE prt4_n_p1 PARTITION OF prt4_n FOR VALUES FROM (0) TO (300); CREATE TABLE prt4_n_p2 PARTITION OF prt4_n FOR VALUES FROM (300) TO (500); CREATE TABLE prt4_n_p3 PARTITION OF prt4_n FOR VALUES FROM (500) TO (600); INSERT INTO prt4_n SELECT i, i, to_char(i, 'FM0000') FROM generate_series(0, 599, 2) i; ANALYZE prt4_n; -- partitionwise join can not be applied if the partition ranges differ EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1, prt4_n t2 WHERE t1.a = t2.a; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1, prt4_n t2, prt2 t3 WHERE t1.a = t2.a and t1.a = t3.b; -- partitionwise join can not be applied if there are no equi-join conditions -- between partition keys EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1 t1 LEFT JOIN prt2 t2 ON (t1.a < t2.b); -- equi-join with join condition on partial keys does not qualify for -- partitionwise join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_m t1, prt2_m t2 WHERE t1.a = (t2.b + t2.a)/2; -- equi-join between out-of-order partition key columns does not qualify for -- partitionwise join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_m t1 LEFT JOIN prt2_m t2 ON t1.a = t2.b; -- equi-join between non-key columns does not qualify for partitionwise join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_m t1 LEFT JOIN prt2_m t2 ON t1.c = t2.c; -- partitionwise join can not be applied for a join between list and range -- partitioned tables EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_n t1 LEFT JOIN prt2_n t2 ON (t1.c = t2.c); -- partitionwise join can not be applied between tables with different -- partition lists EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_n t1 JOIN prt2_n t2 ON (t1.c = t2.c) JOIN plt1 t3 ON (t1.c = t3.c); -- partitionwise join can not be applied for a join between key column and -- non-key column EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_n t1 FULL JOIN prt1 t2 ON (t1.c = t2.c); -- -- Test some other plan types in a partitionwise join (unfortunately, -- we need larger tables to get the planner to choose these plan types) -- create temp table prtx1 (a integer, b integer, c integer) partition by range (a); create temp table prtx1_1 partition of prtx1 for values from (1) to (11); create temp table prtx1_2 partition of prtx1 for values from (11) to (21); create temp table prtx1_3 partition of prtx1 for values from (21) to (31); create temp table prtx2 (a integer, b integer, c integer) partition by range (a); create temp table prtx2_1 partition of prtx2 for values from (1) to (11); create temp table prtx2_2 partition of prtx2 for values from (11) to (21); create temp table prtx2_3 partition of prtx2 for values from (21) to (31); insert into prtx1 select 1 + i%30, i, i from generate_series(1,1000) i; insert into prtx2 select 1 + i%30, i, i from generate_series(1,500) i, generate_series(1,10) j; create index on prtx2 (b); create index on prtx2 (c); analyze prtx1; analyze prtx2; explain (costs off) select * from prtx1 where not exists (select 1 from prtx2 where prtx2.a=prtx1.a and prtx2.b=prtx1.b and prtx2.c=123) and a<20 and c=120; select * from prtx1 where not exists (select 1 from prtx2 where prtx2.a=prtx1.a and prtx2.b=prtx1.b and prtx2.c=123) and a<20 and c=120; explain (costs off) select * from prtx1 where not exists (select 1 from prtx2 where prtx2.a=prtx1.a and (prtx2.b=prtx1.b+1 or prtx2.c=99)) and a<20 and c=91; select * from prtx1 where not exists (select 1 from prtx2 where prtx2.a=prtx1.a and (prtx2.b=prtx1.b+1 or prtx2.c=99)) and a<20 and c=91; -- -- Test advanced partition-matching algorithm for partitioned join -- -- Tests for range-partitioned tables CREATE TABLE prt1_adv (a int, b int, c varchar) PARTITION BY RANGE (a); CREATE TABLE prt1_adv_p1 PARTITION OF prt1_adv FOR VALUES FROM (100) TO (200); CREATE TABLE prt1_adv_p2 PARTITION OF prt1_adv FOR VALUES FROM (200) TO (300); CREATE TABLE prt1_adv_p3 PARTITION OF prt1_adv FOR VALUES FROM (300) TO (400); CREATE INDEX prt1_adv_a_idx ON prt1_adv (a); INSERT INTO prt1_adv SELECT i, i % 25, to_char(i, 'FM0000') FROM generate_series(100, 399) i; ANALYZE prt1_adv; CREATE TABLE prt2_adv (a int, b int, c varchar) PARTITION BY RANGE (b); CREATE TABLE prt2_adv_p1 PARTITION OF prt2_adv FOR VALUES FROM (100) TO (150); CREATE TABLE prt2_adv_p2 PARTITION OF prt2_adv FOR VALUES FROM (200) TO (300); CREATE TABLE prt2_adv_p3 PARTITION OF prt2_adv FOR VALUES FROM (350) TO (500); CREATE INDEX prt2_adv_b_idx ON prt2_adv (b); INSERT INTO prt2_adv_p1 SELECT i % 25, i, to_char(i, 'FM0000') FROM generate_series(100, 149) i; INSERT INTO prt2_adv_p2 SELECT i % 25, i, to_char(i, 'FM0000') FROM generate_series(200, 299) i; INSERT INTO prt2_adv_p3 SELECT i % 25, i, to_char(i, 'FM0000') FROM generate_series(350, 499) i; ANALYZE prt2_adv; -- inner join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; -- left join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 LEFT JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 LEFT JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- anti join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; SELECT t1.* FROM prt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; -- full join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT 175 phv, * FROM prt1_adv WHERE prt1_adv.b = 0) t1 FULL JOIN (SELECT 425 phv, * FROM prt2_adv WHERE prt2_adv.a = 0) t2 ON (t1.a = t2.b) WHERE t1.phv = t1.a OR t2.phv = t2.b ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT 175 phv, * FROM prt1_adv WHERE prt1_adv.b = 0) t1 FULL JOIN (SELECT 425 phv, * FROM prt2_adv WHERE prt2_adv.a = 0) t2 ON (t1.a = t2.b) WHERE t1.phv = t1.a OR t2.phv = t2.b ORDER BY t1.a, t2.b; -- Test cases where one side has an extra partition CREATE TABLE prt2_adv_extra PARTITION OF prt2_adv FOR VALUES FROM (500) TO (MAXVALUE); INSERT INTO prt2_adv SELECT i % 25, i, to_char(i, 'FM0000') FROM generate_series(500, 599) i; ANALYZE prt2_adv; -- inner join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; -- left join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 LEFT JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 LEFT JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- left join; currently we can't do partitioned join if there are no matched -- partitions on the nullable side EXPLAIN (COSTS OFF) SELECT t1.b, t1.c, t2.a, t2.c FROM prt2_adv t1 LEFT JOIN prt1_adv t2 ON (t1.b = t2.a) WHERE t1.a = 0 ORDER BY t1.b, t2.a; -- anti join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; SELECT t1.* FROM prt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; -- anti join; currently we can't do partitioned join if there are no matched -- partitions on the nullable side EXPLAIN (COSTS OFF) SELECT t1.* FROM prt2_adv t1 WHERE NOT EXISTS (SELECT 1 FROM prt1_adv t2 WHERE t1.b = t2.a) AND t1.a = 0 ORDER BY t1.b; -- full join; currently we can't do partitioned join if there are no matched -- partitions on the nullable side EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT 175 phv, * FROM prt1_adv WHERE prt1_adv.b = 0) t1 FULL JOIN (SELECT 425 phv, * FROM prt2_adv WHERE prt2_adv.a = 0) t2 ON (t1.a = t2.b) WHERE t1.phv = t1.a OR t2.phv = t2.b ORDER BY t1.a, t2.b; -- 3-way join where not every pair of relations can do partitioned join EXPLAIN (COSTS OFF) SELECT t1.b, t1.c, t2.a, t2.c, t3.a, t3.c FROM prt2_adv t1 LEFT JOIN prt1_adv t2 ON (t1.b = t2.a) INNER JOIN prt1_adv t3 ON (t1.b = t3.a) WHERE t1.a = 0 ORDER BY t1.b, t2.a, t3.a; SELECT t1.b, t1.c, t2.a, t2.c, t3.a, t3.c FROM prt2_adv t1 LEFT JOIN prt1_adv t2 ON (t1.b = t2.a) INNER JOIN prt1_adv t3 ON (t1.b = t3.a) WHERE t1.a = 0 ORDER BY t1.b, t2.a, t3.a; DROP TABLE prt2_adv_extra; -- Test cases where a partition on one side matches multiple partitions on -- the other side; we currently can't do partitioned join in such cases ALTER TABLE prt2_adv DETACH PARTITION prt2_adv_p3; -- Split prt2_adv_p3 into two partitions so that prt1_adv_p3 matches both CREATE TABLE prt2_adv_p3_1 PARTITION OF prt2_adv FOR VALUES FROM (350) TO (375); CREATE TABLE prt2_adv_p3_2 PARTITION OF prt2_adv FOR VALUES FROM (375) TO (500); INSERT INTO prt2_adv SELECT i % 25, i, to_char(i, 'FM0000') FROM generate_series(350, 499) i; ANALYZE prt2_adv; -- inner join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; -- left join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 LEFT JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- anti join EXPLAIN (COSTS OFF) SELECT t1.* FROM prt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM prt2_adv t2 WHERE t1.a = t2.b) AND t1.b = 0 ORDER BY t1.a; -- full join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM (SELECT 175 phv, * FROM prt1_adv WHERE prt1_adv.b = 0) t1 FULL JOIN (SELECT 425 phv, * FROM prt2_adv WHERE prt2_adv.a = 0) t2 ON (t1.a = t2.b) WHERE t1.phv = t1.a OR t2.phv = t2.b ORDER BY t1.a, t2.b; DROP TABLE prt2_adv_p3_1; DROP TABLE prt2_adv_p3_2; ANALYZE prt2_adv; -- Test default partitions ALTER TABLE prt1_adv DETACH PARTITION prt1_adv_p1; -- Change prt1_adv_p1 to the default partition ALTER TABLE prt1_adv ATTACH PARTITION prt1_adv_p1 DEFAULT; ALTER TABLE prt1_adv DETACH PARTITION prt1_adv_p3; ANALYZE prt1_adv; -- We can do partitioned join even if only one of relations has the default -- partition EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; -- Restore prt1_adv_p3 ALTER TABLE prt1_adv ATTACH PARTITION prt1_adv_p3 FOR VALUES FROM (300) TO (400); ANALYZE prt1_adv; -- Restore prt2_adv_p3 ALTER TABLE prt2_adv ATTACH PARTITION prt2_adv_p3 FOR VALUES FROM (350) TO (500); ANALYZE prt2_adv; -- Partitioned join can't be applied because the default partition of prt1_adv -- matches prt2_adv_p1 and prt2_adv_p3 EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; ALTER TABLE prt2_adv DETACH PARTITION prt2_adv_p3; -- Change prt2_adv_p3 to the default partition ALTER TABLE prt2_adv ATTACH PARTITION prt2_adv_p3 DEFAULT; ANALYZE prt2_adv; -- Partitioned join can't be applied because the default partition of prt1_adv -- matches prt2_adv_p1 and prt2_adv_p3 EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.b = 0 ORDER BY t1.a, t2.b; DROP TABLE prt1_adv_p3; ANALYZE prt1_adv; DROP TABLE prt2_adv_p3; ANALYZE prt2_adv; CREATE TABLE prt3_adv (a int, b int, c varchar) PARTITION BY RANGE (a); CREATE TABLE prt3_adv_p1 PARTITION OF prt3_adv FOR VALUES FROM (200) TO (300); CREATE TABLE prt3_adv_p2 PARTITION OF prt3_adv FOR VALUES FROM (300) TO (400); CREATE INDEX prt3_adv_a_idx ON prt3_adv (a); INSERT INTO prt3_adv SELECT i, i % 25, to_char(i, 'FM0000') FROM generate_series(200, 399) i; ANALYZE prt3_adv; -- 3-way join to test the default partition of a join relation EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c, t3.a, t3.c FROM prt1_adv t1 LEFT JOIN prt2_adv t2 ON (t1.a = t2.b) LEFT JOIN prt3_adv t3 ON (t1.a = t3.a) WHERE t1.b = 0 ORDER BY t1.a, t2.b, t3.a; SELECT t1.a, t1.c, t2.b, t2.c, t3.a, t3.c FROM prt1_adv t1 LEFT JOIN prt2_adv t2 ON (t1.a = t2.b) LEFT JOIN prt3_adv t3 ON (t1.a = t3.a) WHERE t1.b = 0 ORDER BY t1.a, t2.b, t3.a; DROP TABLE prt1_adv; DROP TABLE prt2_adv; DROP TABLE prt3_adv; -- Test interaction of partitioned join with partition pruning CREATE TABLE prt1_adv (a int, b int, c varchar) PARTITION BY RANGE (a); CREATE TABLE prt1_adv_p1 PARTITION OF prt1_adv FOR VALUES FROM (100) TO (200); CREATE TABLE prt1_adv_p2 PARTITION OF prt1_adv FOR VALUES FROM (200) TO (300); CREATE TABLE prt1_adv_p3 PARTITION OF prt1_adv FOR VALUES FROM (300) TO (400); CREATE INDEX prt1_adv_a_idx ON prt1_adv (a); INSERT INTO prt1_adv SELECT i, i % 25, to_char(i, 'FM0000') FROM generate_series(100, 399) i; ANALYZE prt1_adv; CREATE TABLE prt2_adv (a int, b int, c varchar) PARTITION BY RANGE (b); CREATE TABLE prt2_adv_p1 PARTITION OF prt2_adv FOR VALUES FROM (100) TO (200); CREATE TABLE prt2_adv_p2 PARTITION OF prt2_adv FOR VALUES FROM (200) TO (400); CREATE INDEX prt2_adv_b_idx ON prt2_adv (b); INSERT INTO prt2_adv SELECT i % 25, i, to_char(i, 'FM0000') FROM generate_series(100, 399) i; ANALYZE prt2_adv; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.a < 300 AND t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.a < 300 AND t1.b = 0 ORDER BY t1.a, t2.b; DROP TABLE prt1_adv_p3; CREATE TABLE prt1_adv_default PARTITION OF prt1_adv DEFAULT; ANALYZE prt1_adv; CREATE TABLE prt2_adv_default PARTITION OF prt2_adv DEFAULT; ANALYZE prt2_adv; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.a >= 100 AND t1.a < 300 AND t1.b = 0 ORDER BY t1.a, t2.b; SELECT t1.a, t1.c, t2.b, t2.c FROM prt1_adv t1 INNER JOIN prt2_adv t2 ON (t1.a = t2.b) WHERE t1.a >= 100 AND t1.a < 300 AND t1.b = 0 ORDER BY t1.a, t2.b; DROP TABLE prt1_adv; DROP TABLE prt2_adv; -- Tests for list-partitioned tables CREATE TABLE plt1_adv (a int, b int, c text) PARTITION BY LIST (c); CREATE TABLE plt1_adv_p1 PARTITION OF plt1_adv FOR VALUES IN ('0001', '0003'); CREATE TABLE plt1_adv_p2 PARTITION OF plt1_adv FOR VALUES IN ('0004', '0006'); CREATE TABLE plt1_adv_p3 PARTITION OF plt1_adv FOR VALUES IN ('0008', '0009'); INSERT INTO plt1_adv SELECT i, i, to_char(i % 10, 'FM0000') FROM generate_series(1, 299) i WHERE i % 10 IN (1, 3, 4, 6, 8, 9); ANALYZE plt1_adv; CREATE TABLE plt2_adv (a int, b int, c text) PARTITION BY LIST (c); CREATE TABLE plt2_adv_p1 PARTITION OF plt2_adv FOR VALUES IN ('0002', '0003'); CREATE TABLE plt2_adv_p2 PARTITION OF plt2_adv FOR VALUES IN ('0004', '0006'); CREATE TABLE plt2_adv_p3 PARTITION OF plt2_adv FOR VALUES IN ('0007', '0009'); INSERT INTO plt2_adv SELECT i, i, to_char(i % 10, 'FM0000') FROM generate_series(1, 299) i WHERE i % 10 IN (2, 3, 4, 6, 7, 9); ANALYZE plt2_adv; -- inner join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM plt1_adv t1 WHERE EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; SELECT t1.* FROM plt1_adv t1 WHERE EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; -- left join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- anti join EXPLAIN (COSTS OFF) SELECT t1.* FROM plt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; SELECT t1.* FROM plt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; -- full join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 FULL JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE coalesce(t1.b, 0) < 10 AND coalesce(t2.b, 0) < 10 ORDER BY t1.a, t2.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 FULL JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE coalesce(t1.b, 0) < 10 AND coalesce(t2.b, 0) < 10 ORDER BY t1.a, t2.a; -- Test cases where one side has an extra partition CREATE TABLE plt2_adv_extra PARTITION OF plt2_adv FOR VALUES IN ('0000'); INSERT INTO plt2_adv_extra VALUES (0, 0, '0000'); ANALYZE plt2_adv; -- inner join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM plt1_adv t1 WHERE EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; SELECT t1.* FROM plt1_adv t1 WHERE EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; -- left join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- left join; currently we can't do partitioned join if there are no matched -- partitions on the nullable side EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt2_adv t1 LEFT JOIN plt1_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- anti join EXPLAIN (COSTS OFF) SELECT t1.* FROM plt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; SELECT t1.* FROM plt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; -- anti join; currently we can't do partitioned join if there are no matched -- partitions on the nullable side EXPLAIN (COSTS OFF) SELECT t1.* FROM plt2_adv t1 WHERE NOT EXISTS (SELECT 1 FROM plt1_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; -- full join; currently we can't do partitioned join if there are no matched -- partitions on the nullable side EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 FULL JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE coalesce(t1.b, 0) < 10 AND coalesce(t2.b, 0) < 10 ORDER BY t1.a, t2.a; DROP TABLE plt2_adv_extra; -- Test cases where a partition on one side matches multiple partitions on -- the other side; we currently can't do partitioned join in such cases ALTER TABLE plt2_adv DETACH PARTITION plt2_adv_p2; -- Split plt2_adv_p2 into two partitions so that plt1_adv_p2 matches both CREATE TABLE plt2_adv_p2_1 PARTITION OF plt2_adv FOR VALUES IN ('0004'); CREATE TABLE plt2_adv_p2_2 PARTITION OF plt2_adv FOR VALUES IN ('0006'); INSERT INTO plt2_adv SELECT i, i, to_char(i % 10, 'FM0000') FROM generate_series(1, 299) i WHERE i % 10 IN (4, 6); ANALYZE plt2_adv; -- inner join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM plt1_adv t1 WHERE EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; -- left join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- anti join EXPLAIN (COSTS OFF) SELECT t1.* FROM plt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; -- full join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 FULL JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE coalesce(t1.b, 0) < 10 AND coalesce(t2.b, 0) < 10 ORDER BY t1.a, t2.a; DROP TABLE plt2_adv_p2_1; DROP TABLE plt2_adv_p2_2; -- Restore plt2_adv_p2 ALTER TABLE plt2_adv ATTACH PARTITION plt2_adv_p2 FOR VALUES IN ('0004', '0006'); -- Test NULL partitions ALTER TABLE plt1_adv DETACH PARTITION plt1_adv_p1; -- Change plt1_adv_p1 to the NULL partition CREATE TABLE plt1_adv_p1_null PARTITION OF plt1_adv FOR VALUES IN (NULL, '0001', '0003'); INSERT INTO plt1_adv SELECT i, i, to_char(i % 10, 'FM0000') FROM generate_series(1, 299) i WHERE i % 10 IN (1, 3); INSERT INTO plt1_adv VALUES (-1, -1, NULL); ANALYZE plt1_adv; ALTER TABLE plt2_adv DETACH PARTITION plt2_adv_p3; -- Change plt2_adv_p3 to the NULL partition CREATE TABLE plt2_adv_p3_null PARTITION OF plt2_adv FOR VALUES IN (NULL, '0007', '0009'); INSERT INTO plt2_adv SELECT i, i, to_char(i % 10, 'FM0000') FROM generate_series(1, 299) i WHERE i % 10 IN (7, 9); INSERT INTO plt2_adv VALUES (-1, -1, NULL); ANALYZE plt2_adv; -- inner join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- semi join EXPLAIN (COSTS OFF) SELECT t1.* FROM plt1_adv t1 WHERE EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; SELECT t1.* FROM plt1_adv t1 WHERE EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; -- left join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- anti join EXPLAIN (COSTS OFF) SELECT t1.* FROM plt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; SELECT t1.* FROM plt1_adv t1 WHERE NOT EXISTS (SELECT 1 FROM plt2_adv t2 WHERE t1.a = t2.a AND t1.c = t2.c) AND t1.b < 10 ORDER BY t1.a; -- full join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 FULL JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE coalesce(t1.b, 0) < 10 AND coalesce(t2.b, 0) < 10 ORDER BY t1.a, t2.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 FULL JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE coalesce(t1.b, 0) < 10 AND coalesce(t2.b, 0) < 10 ORDER BY t1.a, t2.a; DROP TABLE plt1_adv_p1_null; -- Restore plt1_adv_p1 ALTER TABLE plt1_adv ATTACH PARTITION plt1_adv_p1 FOR VALUES IN ('0001', '0003'); -- Add to plt1_adv the extra NULL partition containing only NULL values as the -- key values CREATE TABLE plt1_adv_extra PARTITION OF plt1_adv FOR VALUES IN (NULL); INSERT INTO plt1_adv VALUES (-1, -1, NULL); ANALYZE plt1_adv; DROP TABLE plt2_adv_p3_null; -- Restore plt2_adv_p3 ALTER TABLE plt2_adv ATTACH PARTITION plt2_adv_p3 FOR VALUES IN ('0007', '0009'); ANALYZE plt2_adv; -- inner join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- left join; currently we can't do partitioned join if there are no matched -- partitions on the nullable side EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- full join; currently we can't do partitioned join if there are no matched -- partitions on the nullable side EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 FULL JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE coalesce(t1.b, 0) < 10 AND coalesce(t2.b, 0) < 10 ORDER BY t1.a, t2.a; -- Add to plt2_adv the extra NULL partition containing only NULL values as the -- key values CREATE TABLE plt2_adv_extra PARTITION OF plt2_adv FOR VALUES IN (NULL); INSERT INTO plt2_adv VALUES (-1, -1, NULL); ANALYZE plt2_adv; -- inner join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- left join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; -- full join EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 FULL JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE coalesce(t1.b, 0) < 10 AND coalesce(t2.b, 0) < 10 ORDER BY t1.a, t2.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 FULL JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE coalesce(t1.b, 0) < 10 AND coalesce(t2.b, 0) < 10 ORDER BY t1.a, t2.a; -- 3-way join to test the NULL partition of a join relation EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c, t3.a, t3.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) LEFT JOIN plt1_adv t3 ON (t1.a = t3.a AND t1.c = t3.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c, t3.a, t3.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) LEFT JOIN plt1_adv t3 ON (t1.a = t3.a AND t1.c = t3.c) WHERE t1.b < 10 ORDER BY t1.a; DROP TABLE plt1_adv_extra; DROP TABLE plt2_adv_extra; -- Test default partitions ALTER TABLE plt1_adv DETACH PARTITION plt1_adv_p1; -- Change plt1_adv_p1 to the default partition ALTER TABLE plt1_adv ATTACH PARTITION plt1_adv_p1 DEFAULT; DROP TABLE plt1_adv_p3; ANALYZE plt1_adv; DROP TABLE plt2_adv_p3; ANALYZE plt2_adv; -- We can do partitioned join even if only one of relations has the default -- partition EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; ALTER TABLE plt2_adv DETACH PARTITION plt2_adv_p2; -- Change plt2_adv_p2 to contain '0005' in addition to '0004' and '0006' as -- the key values CREATE TABLE plt2_adv_p2_ext PARTITION OF plt2_adv FOR VALUES IN ('0004', '0005', '0006'); INSERT INTO plt2_adv SELECT i, i, to_char(i % 10, 'FM0000') FROM generate_series(1, 299) i WHERE i % 10 IN (4, 5, 6); ANALYZE plt2_adv; -- Partitioned join can't be applied because the default partition of plt1_adv -- matches plt2_adv_p1 and plt2_adv_p2_ext EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; ALTER TABLE plt2_adv DETACH PARTITION plt2_adv_p2_ext; -- Change plt2_adv_p2_ext to the default partition ALTER TABLE plt2_adv ATTACH PARTITION plt2_adv_p2_ext DEFAULT; ANALYZE plt2_adv; -- Partitioned join can't be applied because the default partition of plt1_adv -- matches plt2_adv_p1 and plt2_adv_p2_ext EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; DROP TABLE plt2_adv_p2_ext; -- Restore plt2_adv_p2 ALTER TABLE plt2_adv ATTACH PARTITION plt2_adv_p2 FOR VALUES IN ('0004', '0006'); ANALYZE plt2_adv; CREATE TABLE plt3_adv (a int, b int, c text) PARTITION BY LIST (c); CREATE TABLE plt3_adv_p1 PARTITION OF plt3_adv FOR VALUES IN ('0004', '0006'); CREATE TABLE plt3_adv_p2 PARTITION OF plt3_adv FOR VALUES IN ('0007', '0009'); INSERT INTO plt3_adv SELECT i, i, to_char(i % 10, 'FM0000') FROM generate_series(1, 299) i WHERE i % 10 IN (4, 6, 7, 9); ANALYZE plt3_adv; -- 3-way join to test the default partition of a join relation EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c, t3.a, t3.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) LEFT JOIN plt3_adv t3 ON (t1.a = t3.a AND t1.c = t3.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c, t3.a, t3.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) LEFT JOIN plt3_adv t3 ON (t1.a = t3.a AND t1.c = t3.c) WHERE t1.b < 10 ORDER BY t1.a; -- Test cases where one side has the default partition while the other side -- has the NULL partition DROP TABLE plt2_adv_p1; -- Add the NULL partition to plt2_adv CREATE TABLE plt2_adv_p1_null PARTITION OF plt2_adv FOR VALUES IN (NULL, '0001', '0003'); INSERT INTO plt2_adv SELECT i, i, to_char(i % 10, 'FM0000') FROM generate_series(1, 299) i WHERE i % 10 IN (1, 3); INSERT INTO plt2_adv VALUES (-1, -1, NULL); ANALYZE plt2_adv; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; DROP TABLE plt2_adv_p1_null; -- Add the NULL partition that contains only NULL values as the key values CREATE TABLE plt2_adv_p1_null PARTITION OF plt2_adv FOR VALUES IN (NULL); INSERT INTO plt2_adv VALUES (-1, -1, NULL); ANALYZE plt2_adv; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.b < 10 ORDER BY t1.a; DROP TABLE plt1_adv; DROP TABLE plt2_adv; DROP TABLE plt3_adv; -- Test interaction of partitioned join with partition pruning CREATE TABLE plt1_adv (a int, b int, c text) PARTITION BY LIST (c); CREATE TABLE plt1_adv_p1 PARTITION OF plt1_adv FOR VALUES IN ('0001'); CREATE TABLE plt1_adv_p2 PARTITION OF plt1_adv FOR VALUES IN ('0002'); CREATE TABLE plt1_adv_p3 PARTITION OF plt1_adv FOR VALUES IN ('0003'); CREATE TABLE plt1_adv_p4 PARTITION OF plt1_adv FOR VALUES IN (NULL, '0004', '0005'); INSERT INTO plt1_adv SELECT i, i, to_char(i % 10, 'FM0000') FROM generate_series(1, 299) i WHERE i % 10 IN (1, 2, 3, 4, 5); INSERT INTO plt1_adv VALUES (-1, -1, NULL); ANALYZE plt1_adv; CREATE TABLE plt2_adv (a int, b int, c text) PARTITION BY LIST (c); CREATE TABLE plt2_adv_p1 PARTITION OF plt2_adv FOR VALUES IN ('0001', '0002'); CREATE TABLE plt2_adv_p2 PARTITION OF plt2_adv FOR VALUES IN (NULL); CREATE TABLE plt2_adv_p3 PARTITION OF plt2_adv FOR VALUES IN ('0003'); CREATE TABLE plt2_adv_p4 PARTITION OF plt2_adv FOR VALUES IN ('0004', '0005'); INSERT INTO plt2_adv SELECT i, i, to_char(i % 10, 'FM0000') FROM generate_series(1, 299) i WHERE i % 10 IN (1, 2, 3, 4, 5); INSERT INTO plt2_adv VALUES (-1, -1, NULL); ANALYZE plt2_adv; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.c IN ('0003', '0004', '0005') AND t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.c IN ('0003', '0004', '0005') AND t1.b < 10 ORDER BY t1.a; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.c IS NULL AND t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.c IS NULL AND t1.b < 10 ORDER BY t1.a; CREATE TABLE plt1_adv_default PARTITION OF plt1_adv DEFAULT; ANALYZE plt1_adv; CREATE TABLE plt2_adv_default PARTITION OF plt2_adv DEFAULT; ANALYZE plt2_adv; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.c IN ('0003', '0004', '0005') AND t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 INNER JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.c IN ('0003', '0004', '0005') AND t1.b < 10 ORDER BY t1.a; EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.c IS NULL AND t1.b < 10 ORDER BY t1.a; SELECT t1.a, t1.c, t2.a, t2.c FROM plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE t1.c IS NULL AND t1.b < 10 ORDER BY t1.a; DROP TABLE plt1_adv; DROP TABLE plt2_adv; -- Test the process_outer_partition() code path CREATE TABLE plt1_adv (a int, b int, c text) PARTITION BY LIST (c); CREATE TABLE plt1_adv_p1 PARTITION OF plt1_adv FOR VALUES IN ('0000', '0001', '0002'); CREATE TABLE plt1_adv_p2 PARTITION OF plt1_adv FOR VALUES IN ('0003', '0004'); INSERT INTO plt1_adv SELECT i, i, to_char(i % 5, 'FM0000') FROM generate_series(0, 24) i; ANALYZE plt1_adv; CREATE TABLE plt2_adv (a int, b int, c text) PARTITION BY LIST (c); CREATE TABLE plt2_adv_p1 PARTITION OF plt2_adv FOR VALUES IN ('0002'); CREATE TABLE plt2_adv_p2 PARTITION OF plt2_adv FOR VALUES IN ('0003', '0004'); INSERT INTO plt2_adv SELECT i, i, to_char(i % 5, 'FM0000') FROM generate_series(0, 24) i WHERE i % 5 IN (2, 3, 4); ANALYZE plt2_adv; CREATE TABLE plt3_adv (a int, b int, c text) PARTITION BY LIST (c); CREATE TABLE plt3_adv_p1 PARTITION OF plt3_adv FOR VALUES IN ('0001'); CREATE TABLE plt3_adv_p2 PARTITION OF plt3_adv FOR VALUES IN ('0003', '0004'); INSERT INTO plt3_adv SELECT i, i, to_char(i % 5, 'FM0000') FROM generate_series(0, 24) i WHERE i % 5 IN (1, 3, 4); ANALYZE plt3_adv; -- This tests that when merging partitions from plt1_adv and plt2_adv in -- merge_list_bounds(), process_outer_partition() returns an already-assigned -- merged partition when re-called with plt1_adv_p1 for the second list value -- '0001' of that partition EXPLAIN (COSTS OFF) SELECT t1.a, t1.c, t2.a, t2.c, t3.a, t3.c FROM (plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.c = t2.c)) FULL JOIN plt3_adv t3 ON (t1.c = t3.c) WHERE coalesce(t1.a, 0) % 5 != 3 AND coalesce(t1.a, 0) % 5 != 4 ORDER BY t1.c, t1.a, t2.a, t3.a; SELECT t1.a, t1.c, t2.a, t2.c, t3.a, t3.c FROM (plt1_adv t1 LEFT JOIN plt2_adv t2 ON (t1.c = t2.c)) FULL JOIN plt3_adv t3 ON (t1.c = t3.c) WHERE coalesce(t1.a, 0) % 5 != 3 AND coalesce(t1.a, 0) % 5 != 4 ORDER BY t1.c, t1.a, t2.a, t3.a; DROP TABLE plt1_adv; DROP TABLE plt2_adv; DROP TABLE plt3_adv; -- Tests for multi-level partitioned tables CREATE TABLE alpha (a double precision, b int, c text) PARTITION BY RANGE (a); CREATE TABLE alpha_neg PARTITION OF alpha FOR VALUES FROM ('-Infinity') TO (0) PARTITION BY RANGE (b); CREATE TABLE alpha_pos PARTITION OF alpha FOR VALUES FROM (0) TO (10.0) PARTITION BY LIST (c); CREATE TABLE alpha_neg_p1 PARTITION OF alpha_neg FOR VALUES FROM (100) TO (200); CREATE TABLE alpha_neg_p2 PARTITION OF alpha_neg FOR VALUES FROM (200) TO (300); CREATE TABLE alpha_neg_p3 PARTITION OF alpha_neg FOR VALUES FROM (300) TO (400); CREATE TABLE alpha_pos_p1 PARTITION OF alpha_pos FOR VALUES IN ('0001', '0003'); CREATE TABLE alpha_pos_p2 PARTITION OF alpha_pos FOR VALUES IN ('0004', '0006'); CREATE TABLE alpha_pos_p3 PARTITION OF alpha_pos FOR VALUES IN ('0008', '0009'); INSERT INTO alpha_neg SELECT -1.0, i, to_char(i % 10, 'FM0000') FROM generate_series(100, 399) i WHERE i % 10 IN (1, 3, 4, 6, 8, 9); INSERT INTO alpha_pos SELECT 1.0, i, to_char(i % 10, 'FM0000') FROM generate_series(100, 399) i WHERE i % 10 IN (1, 3, 4, 6, 8, 9); ANALYZE alpha; CREATE TABLE beta (a double precision, b int, c text) PARTITION BY RANGE (a); CREATE TABLE beta_neg PARTITION OF beta FOR VALUES FROM (-10.0) TO (0) PARTITION BY RANGE (b); CREATE TABLE beta_pos PARTITION OF beta FOR VALUES FROM (0) TO ('Infinity') PARTITION BY LIST (c); CREATE TABLE beta_neg_p1 PARTITION OF beta_neg FOR VALUES FROM (100) TO (150); CREATE TABLE beta_neg_p2 PARTITION OF beta_neg FOR VALUES FROM (200) TO (300); CREATE TABLE beta_neg_p3 PARTITION OF beta_neg FOR VALUES FROM (350) TO (500); CREATE TABLE beta_pos_p1 PARTITION OF beta_pos FOR VALUES IN ('0002', '0003'); CREATE TABLE beta_pos_p2 PARTITION OF beta_pos FOR VALUES IN ('0004', '0006'); CREATE TABLE beta_pos_p3 PARTITION OF beta_pos FOR VALUES IN ('0007', '0009'); INSERT INTO beta_neg SELECT -1.0, i, to_char(i % 10, 'FM0000') FROM generate_series(100, 149) i WHERE i % 10 IN (2, 3, 4, 6, 7, 9); INSERT INTO beta_neg SELECT -1.0, i, to_char(i % 10, 'FM0000') FROM generate_series(200, 299) i WHERE i % 10 IN (2, 3, 4, 6, 7, 9); INSERT INTO beta_neg SELECT -1.0, i, to_char(i % 10, 'FM0000') FROM generate_series(350, 499) i WHERE i % 10 IN (2, 3, 4, 6, 7, 9); INSERT INTO beta_pos SELECT 1.0, i, to_char(i % 10, 'FM0000') FROM generate_series(100, 149) i WHERE i % 10 IN (2, 3, 4, 6, 7, 9); INSERT INTO beta_pos SELECT 1.0, i, to_char(i % 10, 'FM0000') FROM generate_series(200, 299) i WHERE i % 10 IN (2, 3, 4, 6, 7, 9); INSERT INTO beta_pos SELECT 1.0, i, to_char(i % 10, 'FM0000') FROM generate_series(350, 499) i WHERE i % 10 IN (2, 3, 4, 6, 7, 9); ANALYZE beta; EXPLAIN (COSTS OFF) SELECT t1.*, t2.* FROM alpha t1 INNER JOIN beta t2 ON (t1.a = t2.a AND t1.b = t2.b) WHERE t1.b >= 125 AND t1.b < 225 ORDER BY t1.a, t1.b; SELECT t1.*, t2.* FROM alpha t1 INNER JOIN beta t2 ON (t1.a = t2.a AND t1.b = t2.b) WHERE t1.b >= 125 AND t1.b < 225 ORDER BY t1.a, t1.b; EXPLAIN (COSTS OFF) SELECT t1.*, t2.* FROM alpha t1 INNER JOIN beta t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE ((t1.b >= 100 AND t1.b < 110) OR (t1.b >= 200 AND t1.b < 210)) AND ((t2.b >= 100 AND t2.b < 110) OR (t2.b >= 200 AND t2.b < 210)) AND t1.c IN ('0004', '0009') ORDER BY t1.a, t1.b, t2.b; SELECT t1.*, t2.* FROM alpha t1 INNER JOIN beta t2 ON (t1.a = t2.a AND t1.c = t2.c) WHERE ((t1.b >= 100 AND t1.b < 110) OR (t1.b >= 200 AND t1.b < 210)) AND ((t2.b >= 100 AND t2.b < 110) OR (t2.b >= 200 AND t2.b < 210)) AND t1.c IN ('0004', '0009') ORDER BY t1.a, t1.b, t2.b; EXPLAIN (COSTS OFF) SELECT t1.*, t2.* FROM alpha t1 INNER JOIN beta t2 ON (t1.a = t2.a AND t1.b = t2.b AND t1.c = t2.c) WHERE ((t1.b >= 100 AND t1.b < 110) OR (t1.b >= 200 AND t1.b < 210)) AND ((t2.b >= 100 AND t2.b < 110) OR (t2.b >= 200 AND t2.b < 210)) AND t1.c IN ('0004', '0009') ORDER BY t1.a, t1.b; SELECT t1.*, t2.* FROM alpha t1 INNER JOIN beta t2 ON (t1.a = t2.a AND t1.b = t2.b AND t1.c = t2.c) WHERE ((t1.b >= 100 AND t1.b < 110) OR (t1.b >= 200 AND t1.b < 210)) AND ((t2.b >= 100 AND t2.b < 110) OR (t2.b >= 200 AND t2.b < 210)) AND t1.c IN ('0004', '0009') ORDER BY t1.a, t1.b; libpg_query-13-2.1.0/test/sql/postgres_regress/partition_prune.sql000066400000000000000000001417361413137616400254200ustar00rootroot00000000000000-- -- Test partitioning planner code -- -- Force generic plans to be used for all prepared statements in this file. set plan_cache_mode = force_generic_plan; create table lp (a char) partition by list (a); create table lp_default partition of lp default; create table lp_ef partition of lp for values in ('e', 'f'); create table lp_ad partition of lp for values in ('a', 'd'); create table lp_bc partition of lp for values in ('b', 'c'); create table lp_g partition of lp for values in ('g'); create table lp_null partition of lp for values in (null); explain (costs off) select * from lp; explain (costs off) select * from lp where a > 'a' and a < 'd'; explain (costs off) select * from lp where a > 'a' and a <= 'd'; explain (costs off) select * from lp where a = 'a'; explain (costs off) select * from lp where 'a' = a; /* commuted */ explain (costs off) select * from lp where a is not null; explain (costs off) select * from lp where a is null; explain (costs off) select * from lp where a = 'a' or a = 'c'; explain (costs off) select * from lp where a is not null and (a = 'a' or a = 'c'); explain (costs off) select * from lp where a <> 'g'; explain (costs off) select * from lp where a <> 'a' and a <> 'd'; explain (costs off) select * from lp where a not in ('a', 'd'); -- collation matches the partitioning collation, pruning works create table coll_pruning (a text collate "C") partition by list (a); create table coll_pruning_a partition of coll_pruning for values in ('a'); create table coll_pruning_b partition of coll_pruning for values in ('b'); create table coll_pruning_def partition of coll_pruning default; explain (costs off) select * from coll_pruning where a collate "C" = 'a' collate "C"; -- collation doesn't match the partitioning collation, no pruning occurs explain (costs off) select * from coll_pruning where a collate "POSIX" = 'a' collate "POSIX"; create table rlp (a int, b varchar) partition by range (a); create table rlp_default partition of rlp default partition by list (a); create table rlp_default_default partition of rlp_default default; create table rlp_default_10 partition of rlp_default for values in (10); create table rlp_default_30 partition of rlp_default for values in (30); create table rlp_default_null partition of rlp_default for values in (null); create table rlp1 partition of rlp for values from (minvalue) to (1); create table rlp2 partition of rlp for values from (1) to (10); create table rlp3 (b varchar, a int) partition by list (b varchar_ops); create table rlp3_default partition of rlp3 default; create table rlp3abcd partition of rlp3 for values in ('ab', 'cd'); create table rlp3efgh partition of rlp3 for values in ('ef', 'gh'); create table rlp3nullxy partition of rlp3 for values in (null, 'xy'); alter table rlp attach partition rlp3 for values from (15) to (20); create table rlp4 partition of rlp for values from (20) to (30) partition by range (a); create table rlp4_default partition of rlp4 default; create table rlp4_1 partition of rlp4 for values from (20) to (25); create table rlp4_2 partition of rlp4 for values from (25) to (29); create table rlp5 partition of rlp for values from (31) to (maxvalue) partition by range (a); create table rlp5_default partition of rlp5 default; create table rlp5_1 partition of rlp5 for values from (31) to (40); explain (costs off) select * from rlp where a < 1; explain (costs off) select * from rlp where 1 > a; /* commuted */ explain (costs off) select * from rlp where a <= 1; explain (costs off) select * from rlp where a = 1; explain (costs off) select * from rlp where a = 1::bigint; /* same as above */ explain (costs off) select * from rlp where a = 1::numeric; /* no pruning */ explain (costs off) select * from rlp where a <= 10; explain (costs off) select * from rlp where a > 10; explain (costs off) select * from rlp where a < 15; explain (costs off) select * from rlp where a <= 15; explain (costs off) select * from rlp where a > 15 and b = 'ab'; explain (costs off) select * from rlp where a = 16; explain (costs off) select * from rlp where a = 16 and b in ('not', 'in', 'here'); explain (costs off) select * from rlp where a = 16 and b < 'ab'; explain (costs off) select * from rlp where a = 16 and b <= 'ab'; explain (costs off) select * from rlp where a = 16 and b is null; explain (costs off) select * from rlp where a = 16 and b is not null; explain (costs off) select * from rlp where a is null; explain (costs off) select * from rlp where a is not null; explain (costs off) select * from rlp where a > 30; explain (costs off) select * from rlp where a = 30; /* only default is scanned */ explain (costs off) select * from rlp where a <= 31; explain (costs off) select * from rlp where a = 1 or a = 7; explain (costs off) select * from rlp where a = 1 or b = 'ab'; explain (costs off) select * from rlp where a > 20 and a < 27; explain (costs off) select * from rlp where a = 29; explain (costs off) select * from rlp where a >= 29; explain (costs off) select * from rlp where a < 1 or (a > 20 and a < 25); -- where clause contradicts sub-partition's constraint explain (costs off) select * from rlp where a = 20 or a = 40; explain (costs off) select * from rlp3 where a = 20; /* empty */ -- redundant clauses are eliminated explain (costs off) select * from rlp where a > 1 and a = 10; /* only default */ explain (costs off) select * from rlp where a > 1 and a >=15; /* rlp3 onwards, including default */ explain (costs off) select * from rlp where a = 1 and a = 3; /* empty */ explain (costs off) select * from rlp where (a = 1 and a = 3) or (a > 1 and a = 15); -- multi-column keys create table mc3p (a int, b int, c int) partition by range (a, abs(b), c); create table mc3p_default partition of mc3p default; create table mc3p0 partition of mc3p for values from (minvalue, minvalue, minvalue) to (1, 1, 1); create table mc3p1 partition of mc3p for values from (1, 1, 1) to (10, 5, 10); create table mc3p2 partition of mc3p for values from (10, 5, 10) to (10, 10, 10); create table mc3p3 partition of mc3p for values from (10, 10, 10) to (10, 10, 20); create table mc3p4 partition of mc3p for values from (10, 10, 20) to (10, maxvalue, maxvalue); create table mc3p5 partition of mc3p for values from (11, 1, 1) to (20, 10, 10); create table mc3p6 partition of mc3p for values from (20, 10, 10) to (20, 20, 20); create table mc3p7 partition of mc3p for values from (20, 20, 20) to (maxvalue, maxvalue, maxvalue); explain (costs off) select * from mc3p where a = 1; explain (costs off) select * from mc3p where a = 1 and abs(b) < 1; explain (costs off) select * from mc3p where a = 1 and abs(b) = 1; explain (costs off) select * from mc3p where a = 1 and abs(b) = 1 and c < 8; explain (costs off) select * from mc3p where a = 10 and abs(b) between 5 and 35; explain (costs off) select * from mc3p where a > 10; explain (costs off) select * from mc3p where a >= 10; explain (costs off) select * from mc3p where a < 10; explain (costs off) select * from mc3p where a <= 10 and abs(b) < 10; explain (costs off) select * from mc3p where a = 11 and abs(b) = 0; explain (costs off) select * from mc3p where a = 20 and abs(b) = 10 and c = 100; explain (costs off) select * from mc3p where a > 20; explain (costs off) select * from mc3p where a >= 20; explain (costs off) select * from mc3p where (a = 1 and abs(b) = 1 and c = 1) or (a = 10 and abs(b) = 5 and c = 10) or (a > 11 and a < 20); explain (costs off) select * from mc3p where (a = 1 and abs(b) = 1 and c = 1) or (a = 10 and abs(b) = 5 and c = 10) or (a > 11 and a < 20) or a < 1; explain (costs off) select * from mc3p where (a = 1 and abs(b) = 1 and c = 1) or (a = 10 and abs(b) = 5 and c = 10) or (a > 11 and a < 20) or a < 1 or a = 1; explain (costs off) select * from mc3p where a = 1 or abs(b) = 1 or c = 1; explain (costs off) select * from mc3p where (a = 1 and abs(b) = 1) or (a = 10 and abs(b) = 10); explain (costs off) select * from mc3p where (a = 1 and abs(b) = 1) or (a = 10 and abs(b) = 9); -- a simpler multi-column keys case create table mc2p (a int, b int) partition by range (a, b); create table mc2p_default partition of mc2p default; create table mc2p0 partition of mc2p for values from (minvalue, minvalue) to (1, minvalue); create table mc2p1 partition of mc2p for values from (1, minvalue) to (1, 1); create table mc2p2 partition of mc2p for values from (1, 1) to (2, minvalue); create table mc2p3 partition of mc2p for values from (2, minvalue) to (2, 1); create table mc2p4 partition of mc2p for values from (2, 1) to (2, maxvalue); create table mc2p5 partition of mc2p for values from (2, maxvalue) to (maxvalue, maxvalue); explain (costs off) select * from mc2p where a < 2; explain (costs off) select * from mc2p where a = 2 and b < 1; explain (costs off) select * from mc2p where a > 1; explain (costs off) select * from mc2p where a = 1 and b > 1; -- all partitions but the default one should be pruned explain (costs off) select * from mc2p where a = 1 and b is null; explain (costs off) select * from mc2p where a is null and b is null; explain (costs off) select * from mc2p where a is null and b = 1; explain (costs off) select * from mc2p where a is null; explain (costs off) select * from mc2p where b is null; -- boolean partitioning create table boolpart (a bool) partition by list (a); create table boolpart_default partition of boolpart default; create table boolpart_t partition of boolpart for values in ('true'); create table boolpart_f partition of boolpart for values in ('false'); explain (costs off) select * from boolpart where a in (true, false); explain (costs off) select * from boolpart where a = false; explain (costs off) select * from boolpart where not a = false; explain (costs off) select * from boolpart where a is true or a is not true; explain (costs off) select * from boolpart where a is not true; explain (costs off) select * from boolpart where a is not true and a is not false; explain (costs off) select * from boolpart where a is unknown; explain (costs off) select * from boolpart where a is not unknown; create table boolrangep (a bool, b bool, c int) partition by range (a,b,c); create table boolrangep_tf partition of boolrangep for values from ('true', 'false', 0) to ('true', 'false', 100); create table boolrangep_ft partition of boolrangep for values from ('false', 'true', 0) to ('false', 'true', 100); create table boolrangep_ff1 partition of boolrangep for values from ('false', 'false', 0) to ('false', 'false', 50); create table boolrangep_ff2 partition of boolrangep for values from ('false', 'false', 50) to ('false', 'false', 100); -- try a more complex case that's been known to trip up pruning in the past explain (costs off) select * from boolrangep where not a and not b and c = 25; -- test scalar-to-array operators create table coercepart (a varchar) partition by list (a); create table coercepart_ab partition of coercepart for values in ('ab'); create table coercepart_bc partition of coercepart for values in ('bc'); create table coercepart_cd partition of coercepart for values in ('cd'); explain (costs off) select * from coercepart where a in ('ab', to_char(125, '999')); explain (costs off) select * from coercepart where a ~ any ('{ab}'); explain (costs off) select * from coercepart where a !~ all ('{ab}'); explain (costs off) select * from coercepart where a ~ any ('{ab,bc}'); explain (costs off) select * from coercepart where a !~ all ('{ab,bc}'); explain (costs off) select * from coercepart where a = any ('{ab,bc}'); explain (costs off) select * from coercepart where a = any ('{ab,null}'); explain (costs off) select * from coercepart where a = any (null::text[]); explain (costs off) select * from coercepart where a = all ('{ab}'); explain (costs off) select * from coercepart where a = all ('{ab,bc}'); explain (costs off) select * from coercepart where a = all ('{ab,null}'); explain (costs off) select * from coercepart where a = all (null::text[]); drop table coercepart; CREATE TABLE part (a INT, b INT) PARTITION BY LIST (a); CREATE TABLE part_p1 PARTITION OF part FOR VALUES IN (-2,-1,0,1,2); CREATE TABLE part_p2 PARTITION OF part DEFAULT PARTITION BY RANGE(a); CREATE TABLE part_p2_p1 PARTITION OF part_p2 DEFAULT; CREATE TABLE part_rev (b INT, c INT, a INT); ALTER TABLE part ATTACH PARTITION part_rev FOR VALUES IN (3); -- fail ALTER TABLE part_rev DROP COLUMN c; ALTER TABLE part ATTACH PARTITION part_rev FOR VALUES IN (3); -- now it's ok INSERT INTO part VALUES (-1,-1), (1,1), (2,NULL), (NULL,-2),(NULL,NULL); EXPLAIN (COSTS OFF) SELECT tableoid::regclass as part, a, b FROM part WHERE a IS NULL ORDER BY 1, 2, 3; EXPLAIN (VERBOSE, COSTS OFF) SELECT * FROM part p(x) ORDER BY x; -- -- some more cases -- -- -- pruning for partitioned table appearing inside a sub-query -- -- pruning won't work for mc3p, because some keys are Params explain (costs off) select * from mc2p t1, lateral (select count(*) from mc3p t2 where t2.a = t1.b and abs(t2.b) = 1 and t2.c = 1) s where t1.a = 1; -- pruning should work fine, because values for a prefix of keys (a, b) are -- available explain (costs off) select * from mc2p t1, lateral (select count(*) from mc3p t2 where t2.c = t1.b and abs(t2.b) = 1 and t2.a = 1) s where t1.a = 1; -- also here, because values for all keys are provided explain (costs off) select * from mc2p t1, lateral (select count(*) from mc3p t2 where t2.a = 1 and abs(t2.b) = 1 and t2.c = 1) s where t1.a = 1; -- -- pruning with clauses containing <> operator -- -- doesn't prune range partitions create table rp (a int) partition by range (a); create table rp0 partition of rp for values from (minvalue) to (1); create table rp1 partition of rp for values from (1) to (2); create table rp2 partition of rp for values from (2) to (maxvalue); explain (costs off) select * from rp where a <> 1; explain (costs off) select * from rp where a <> 1 and a <> 2; -- null partition should be eliminated due to strict <> clause. explain (costs off) select * from lp where a <> 'a'; -- ensure we detect contradictions in clauses; a can't be NULL and NOT NULL. explain (costs off) select * from lp where a <> 'a' and a is null; explain (costs off) select * from lp where (a <> 'a' and a <> 'd') or a is null; -- check that it also works for a partitioned table that's not root, -- which in this case are partitions of rlp that are themselves -- list-partitioned on b explain (costs off) select * from rlp where a = 15 and b <> 'ab' and b <> 'cd' and b <> 'xy' and b is not null; -- -- different collations for different keys with same expression -- create table coll_pruning_multi (a text) partition by range (substr(a, 1) collate "POSIX", substr(a, 1) collate "C"); create table coll_pruning_multi1 partition of coll_pruning_multi for values from ('a', 'a') to ('a', 'e'); create table coll_pruning_multi2 partition of coll_pruning_multi for values from ('a', 'e') to ('a', 'z'); create table coll_pruning_multi3 partition of coll_pruning_multi for values from ('b', 'a') to ('b', 'e'); -- no pruning, because no value for the leading key explain (costs off) select * from coll_pruning_multi where substr(a, 1) = 'e' collate "C"; -- pruning, with a value provided for the leading key explain (costs off) select * from coll_pruning_multi where substr(a, 1) = 'a' collate "POSIX"; -- pruning, with values provided for both keys explain (costs off) select * from coll_pruning_multi where substr(a, 1) = 'e' collate "C" and substr(a, 1) = 'a' collate "POSIX"; -- -- LIKE operators don't prune -- create table like_op_noprune (a text) partition by list (a); create table like_op_noprune1 partition of like_op_noprune for values in ('ABC'); create table like_op_noprune2 partition of like_op_noprune for values in ('BCD'); explain (costs off) select * from like_op_noprune where a like '%BC'; -- -- tests wherein clause value requires a cross-type comparison function -- create table lparted_by_int2 (a smallint) partition by list (a); create table lparted_by_int2_1 partition of lparted_by_int2 for values in (1); create table lparted_by_int2_16384 partition of lparted_by_int2 for values in (16384); explain (costs off) select * from lparted_by_int2 where a = 100000000000000; create table rparted_by_int2 (a smallint) partition by range (a); create table rparted_by_int2_1 partition of rparted_by_int2 for values from (1) to (10); create table rparted_by_int2_16384 partition of rparted_by_int2 for values from (10) to (16384); -- all partitions pruned explain (costs off) select * from rparted_by_int2 where a > 100000000000000; create table rparted_by_int2_maxvalue partition of rparted_by_int2 for values from (16384) to (maxvalue); -- all partitions but rparted_by_int2_maxvalue pruned explain (costs off) select * from rparted_by_int2 where a > 100000000000000; drop table lp, coll_pruning, rlp, mc3p, mc2p, boolpart, boolrangep, rp, coll_pruning_multi, like_op_noprune, lparted_by_int2, rparted_by_int2; -- -- Test Partition pruning for HASH partitioning -- -- Use hand-rolled hash functions and operator classes to get predictable -- result on different machines. See the definitions of -- part_part_test_int4_ops and part_test_text_ops in insert.sql. -- create table hp (a int, b text, c int) partition by hash (a part_test_int4_ops, b part_test_text_ops); create table hp0 partition of hp for values with (modulus 4, remainder 0); create table hp3 partition of hp for values with (modulus 4, remainder 3); create table hp1 partition of hp for values with (modulus 4, remainder 1); create table hp2 partition of hp for values with (modulus 4, remainder 2); insert into hp values (null, null, 0); insert into hp values (1, null, 1); insert into hp values (1, 'xxx', 2); insert into hp values (null, 'xxx', 3); insert into hp values (2, 'xxx', 4); insert into hp values (1, 'abcde', 5); select tableoid::regclass, * from hp order by c; -- partial keys won't prune, nor would non-equality conditions explain (costs off) select * from hp where a = 1; explain (costs off) select * from hp where b = 'xxx'; explain (costs off) select * from hp where a is null; explain (costs off) select * from hp where b is null; explain (costs off) select * from hp where a < 1 and b = 'xxx'; explain (costs off) select * from hp where a <> 1 and b = 'yyy'; explain (costs off) select * from hp where a <> 1 and b <> 'xxx'; -- pruning should work if either a value or a IS NULL clause is provided for -- each of the keys explain (costs off) select * from hp where a is null and b is null; explain (costs off) select * from hp where a = 1 and b is null; explain (costs off) select * from hp where a = 1 and b = 'xxx'; explain (costs off) select * from hp where a is null and b = 'xxx'; explain (costs off) select * from hp where a = 2 and b = 'xxx'; explain (costs off) select * from hp where a = 1 and b = 'abcde'; explain (costs off) select * from hp where (a = 1 and b = 'abcde') or (a = 2 and b = 'xxx') or (a is null and b is null); -- test pruning when not all the partitions exist drop table hp1; drop table hp3; explain (costs off) select * from hp where a = 1 and b = 'abcde'; explain (costs off) select * from hp where a = 1 and b = 'abcde' and (c = 2 or c = 3); drop table hp2; explain (costs off) select * from hp where a = 1 and b = 'abcde' and (c = 2 or c = 3); drop table hp; -- -- Test runtime partition pruning -- create table ab (a int not null, b int not null) partition by list (a); create table ab_a2 partition of ab for values in(2) partition by list (b); create table ab_a2_b1 partition of ab_a2 for values in (1); create table ab_a2_b2 partition of ab_a2 for values in (2); create table ab_a2_b3 partition of ab_a2 for values in (3); create table ab_a1 partition of ab for values in(1) partition by list (b); create table ab_a1_b1 partition of ab_a1 for values in (1); create table ab_a1_b2 partition of ab_a1 for values in (2); create table ab_a1_b3 partition of ab_a1 for values in (3); create table ab_a3 partition of ab for values in(3) partition by list (b); create table ab_a3_b1 partition of ab_a3 for values in (1); create table ab_a3_b2 partition of ab_a3 for values in (2); create table ab_a3_b3 partition of ab_a3 for values in (3); -- Disallow index only scans as concurrent transactions may stop visibility -- bits being set causing "Heap Fetches" to be unstable in the EXPLAIN ANALYZE -- output. set enable_indexonlyscan = off; prepare ab_q1 (int, int, int) as select * from ab where a between $1 and $2 and b <= $3; explain (analyze, costs off, summary off, timing off) execute ab_q1 (2, 2, 3); explain (analyze, costs off, summary off, timing off) execute ab_q1 (1, 2, 3); deallocate ab_q1; -- Runtime pruning after optimizer pruning prepare ab_q1 (int, int) as select a from ab where a between $1 and $2 and b < 3; explain (analyze, costs off, summary off, timing off) execute ab_q1 (2, 2); explain (analyze, costs off, summary off, timing off) execute ab_q1 (2, 4); -- Ensure a mix of PARAM_EXTERN and PARAM_EXEC Params work together at -- different levels of partitioning. prepare ab_q2 (int, int) as select a from ab where a between $1 and $2 and b < (select 3); explain (analyze, costs off, summary off, timing off) execute ab_q2 (2, 2); -- As above, but swap the PARAM_EXEC Param to the first partition level prepare ab_q3 (int, int) as select a from ab where b between $1 and $2 and a < (select 3); explain (analyze, costs off, summary off, timing off) execute ab_q3 (2, 2); -- Test a backwards Append scan create table list_part (a int) partition by list (a); create table list_part1 partition of list_part for values in (1); create table list_part2 partition of list_part for values in (2); create table list_part3 partition of list_part for values in (3); create table list_part4 partition of list_part for values in (4); insert into list_part select generate_series(1,4); begin; -- Don't select an actual value out of the table as the order of the Append's -- subnodes may not be stable. declare cur SCROLL CURSOR for select 1 from list_part where a > (select 1) and a < (select 4); -- move beyond the final row move 3 from cur; -- Ensure we get two rows. fetch backward all from cur; commit; begin; -- Test run-time pruning using stable functions create function list_part_fn(int) returns int as $$ begin return $1; end;$$ language plpgsql stable; -- Ensure pruning works using a stable function containing no Vars explain (analyze, costs off, summary off, timing off) select * from list_part where a = list_part_fn(1); -- Ensure pruning does not take place when the function has a Var parameter explain (analyze, costs off, summary off, timing off) select * from list_part where a = list_part_fn(a); -- Ensure pruning does not take place when the expression contains a Var. explain (analyze, costs off, summary off, timing off) select * from list_part where a = list_part_fn(1) + a; rollback; drop table list_part; -- Parallel append -- Parallel queries won't necessarily get as many workers as the planner -- asked for. This affects not only the "Workers Launched:" field of EXPLAIN -- results, but also row counts and loop counts for parallel scans, Gathers, -- and everything in between. This function filters out the values we can't -- rely on to be stable. -- This removes enough info that you might wonder why bother with EXPLAIN -- ANALYZE at all. The answer is that we need to see '(never executed)' -- notations because that's the only way to verify runtime pruning. create function explain_parallel_append(text) returns setof text language plpgsql as $$ declare ln text; begin for ln in execute format('explain (analyze, costs off, summary off, timing off) %s', $1) loop ln := regexp_replace(ln, 'Workers Launched: \d+', 'Workers Launched: N'); ln := regexp_replace(ln, 'actual rows=\d+ loops=\d+', 'actual rows=N loops=N'); ln := regexp_replace(ln, 'Rows Removed by Filter: \d+', 'Rows Removed by Filter: N'); return next ln; end loop; end; $$; prepare ab_q4 (int, int) as select avg(a) from ab where a between $1 and $2 and b < 4; -- Encourage use of parallel plans set parallel_setup_cost = 0; set parallel_tuple_cost = 0; set min_parallel_table_scan_size = 0; set max_parallel_workers_per_gather = 2; select explain_parallel_append('execute ab_q4 (2, 2)'); -- Test run-time pruning with IN lists. prepare ab_q5 (int, int, int) as select avg(a) from ab where a in($1,$2,$3) and b < 4; select explain_parallel_append('execute ab_q5 (1, 1, 1)'); select explain_parallel_append('execute ab_q5 (2, 3, 3)'); -- Try some params whose values do not belong to any partition. select explain_parallel_append('execute ab_q5 (33, 44, 55)'); -- Test Parallel Append with PARAM_EXEC Params select explain_parallel_append('select count(*) from ab where (a = (select 1) or a = (select 3)) and b = 2'); -- Test pruning during parallel nested loop query create table lprt_a (a int not null); -- Insert some values we won't find in ab insert into lprt_a select 0 from generate_series(1,100); -- and insert some values that we should find. insert into lprt_a values(1),(1); analyze lprt_a; create index ab_a2_b1_a_idx on ab_a2_b1 (a); create index ab_a2_b2_a_idx on ab_a2_b2 (a); create index ab_a2_b3_a_idx on ab_a2_b3 (a); create index ab_a1_b1_a_idx on ab_a1_b1 (a); create index ab_a1_b2_a_idx on ab_a1_b2 (a); create index ab_a1_b3_a_idx on ab_a1_b3 (a); create index ab_a3_b1_a_idx on ab_a3_b1 (a); create index ab_a3_b2_a_idx on ab_a3_b2 (a); create index ab_a3_b3_a_idx on ab_a3_b3 (a); set enable_hashjoin = 0; set enable_mergejoin = 0; select explain_parallel_append('select avg(ab.a) from ab inner join lprt_a a on ab.a = a.a where a.a in(0, 0, 1)'); -- Ensure the same partitions are pruned when we make the nested loop -- parameter an Expr rather than a plain Param. select explain_parallel_append('select avg(ab.a) from ab inner join lprt_a a on ab.a = a.a + 0 where a.a in(0, 0, 1)'); insert into lprt_a values(3),(3); select explain_parallel_append('select avg(ab.a) from ab inner join lprt_a a on ab.a = a.a where a.a in(1, 0, 3)'); select explain_parallel_append('select avg(ab.a) from ab inner join lprt_a a on ab.a = a.a where a.a in(1, 0, 0)'); delete from lprt_a where a = 1; select explain_parallel_append('select avg(ab.a) from ab inner join lprt_a a on ab.a = a.a where a.a in(1, 0, 0)'); reset enable_hashjoin; reset enable_mergejoin; reset parallel_setup_cost; reset parallel_tuple_cost; reset min_parallel_table_scan_size; reset max_parallel_workers_per_gather; -- Test run-time partition pruning with an initplan explain (analyze, costs off, summary off, timing off) select * from ab where a = (select max(a) from lprt_a) and b = (select max(a)-1 from lprt_a); -- Test run-time partition pruning with UNION ALL parents explain (analyze, costs off, summary off, timing off) select * from (select * from ab where a = 1 union all select * from ab) ab where b = (select 1); -- A case containing a UNION ALL with a non-partitioned child. explain (analyze, costs off, summary off, timing off) select * from (select * from ab where a = 1 union all (values(10,5)) union all select * from ab) ab where b = (select 1); -- Another UNION ALL test, but containing a mix of exec init and exec run-time pruning. create table xy_1 (x int, y int); insert into xy_1 values(100,-10); set enable_bitmapscan = 0; set enable_indexscan = 0; prepare ab_q6 as select * from ( select tableoid::regclass,a,b from ab union all select tableoid::regclass,x,y from xy_1 union all select tableoid::regclass,a,b from ab ) ab where a = $1 and b = (select -10); -- Ensure the xy_1 subplan is not pruned. explain (analyze, costs off, summary off, timing off) execute ab_q6(1); -- Ensure we see just the xy_1 row. execute ab_q6(100); reset enable_bitmapscan; reset enable_indexscan; deallocate ab_q1; deallocate ab_q2; deallocate ab_q3; deallocate ab_q4; deallocate ab_q5; deallocate ab_q6; -- UPDATE on a partition subtree has been seen to have problems. insert into ab values (1,2); explain (analyze, costs off, summary off, timing off) update ab_a1 set b = 3 from ab where ab.a = 1 and ab.a = ab_a1.a; table ab; -- Test UPDATE where source relation has run-time pruning enabled truncate ab; insert into ab values (1, 1), (1, 2), (1, 3), (2, 1); explain (analyze, costs off, summary off, timing off) update ab_a1 set b = 3 from ab_a2 where ab_a2.b = (select 1); select tableoid::regclass, * from ab; drop table ab, lprt_a; -- Join create table tbl1(col1 int); insert into tbl1 values (501), (505); -- Basic table create table tprt (col1 int) partition by range (col1); create table tprt_1 partition of tprt for values from (1) to (501); create table tprt_2 partition of tprt for values from (501) to (1001); create table tprt_3 partition of tprt for values from (1001) to (2001); create table tprt_4 partition of tprt for values from (2001) to (3001); create table tprt_5 partition of tprt for values from (3001) to (4001); create table tprt_6 partition of tprt for values from (4001) to (5001); create index tprt1_idx on tprt_1 (col1); create index tprt2_idx on tprt_2 (col1); create index tprt3_idx on tprt_3 (col1); create index tprt4_idx on tprt_4 (col1); create index tprt5_idx on tprt_5 (col1); create index tprt6_idx on tprt_6 (col1); insert into tprt values (10), (20), (501), (502), (505), (1001), (4500); set enable_hashjoin = off; set enable_mergejoin = off; explain (analyze, costs off, summary off, timing off) select * from tbl1 join tprt on tbl1.col1 > tprt.col1; explain (analyze, costs off, summary off, timing off) select * from tbl1 join tprt on tbl1.col1 = tprt.col1; select tbl1.col1, tprt.col1 from tbl1 inner join tprt on tbl1.col1 > tprt.col1 order by tbl1.col1, tprt.col1; select tbl1.col1, tprt.col1 from tbl1 inner join tprt on tbl1.col1 = tprt.col1 order by tbl1.col1, tprt.col1; -- Multiple partitions insert into tbl1 values (1001), (1010), (1011); explain (analyze, costs off, summary off, timing off) select * from tbl1 inner join tprt on tbl1.col1 > tprt.col1; explain (analyze, costs off, summary off, timing off) select * from tbl1 inner join tprt on tbl1.col1 = tprt.col1; select tbl1.col1, tprt.col1 from tbl1 inner join tprt on tbl1.col1 > tprt.col1 order by tbl1.col1, tprt.col1; select tbl1.col1, tprt.col1 from tbl1 inner join tprt on tbl1.col1 = tprt.col1 order by tbl1.col1, tprt.col1; -- Last partition delete from tbl1; insert into tbl1 values (4400); explain (analyze, costs off, summary off, timing off) select * from tbl1 join tprt on tbl1.col1 < tprt.col1; select tbl1.col1, tprt.col1 from tbl1 inner join tprt on tbl1.col1 < tprt.col1 order by tbl1.col1, tprt.col1; -- No matching partition delete from tbl1; insert into tbl1 values (10000); explain (analyze, costs off, summary off, timing off) select * from tbl1 join tprt on tbl1.col1 = tprt.col1; select tbl1.col1, tprt.col1 from tbl1 inner join tprt on tbl1.col1 = tprt.col1 order by tbl1.col1, tprt.col1; drop table tbl1, tprt; -- Test with columns defined in varying orders between each level create table part_abc (a int not null, b int not null, c int not null) partition by list (a); create table part_bac (b int not null, a int not null, c int not null) partition by list (b); create table part_cab (c int not null, a int not null, b int not null) partition by list (c); create table part_abc_p1 (a int not null, b int not null, c int not null); alter table part_abc attach partition part_bac for values in(1); alter table part_bac attach partition part_cab for values in(2); alter table part_cab attach partition part_abc_p1 for values in(3); prepare part_abc_q1 (int, int, int) as select * from part_abc where a = $1 and b = $2 and c = $3; -- Single partition should be scanned. explain (analyze, costs off, summary off, timing off) execute part_abc_q1 (1, 2, 3); deallocate part_abc_q1; drop table part_abc; -- Ensure that an Append node properly handles a sub-partitioned table -- matching without any of its leaf partitions matching the clause. create table listp (a int, b int) partition by list (a); create table listp_1 partition of listp for values in(1) partition by list (b); create table listp_1_1 partition of listp_1 for values in(1); create table listp_2 partition of listp for values in(2) partition by list (b); create table listp_2_1 partition of listp_2 for values in(2); select * from listp where b = 1; -- Ensure that an Append node properly can handle selection of all first level -- partitions before finally detecting the correct set of 2nd level partitions -- which match the given parameter. prepare q1 (int,int) as select * from listp where b in ($1,$2); explain (analyze, costs off, summary off, timing off) execute q1 (1,1); explain (analyze, costs off, summary off, timing off) execute q1 (2,2); -- Try with no matching partitions. explain (analyze, costs off, summary off, timing off) execute q1 (0,0); deallocate q1; -- Test more complex cases where a not-equal condition further eliminates partitions. prepare q1 (int,int,int,int) as select * from listp where b in($1,$2) and $3 <> b and $4 <> b; -- Both partitions allowed by IN clause, but one disallowed by <> clause explain (analyze, costs off, summary off, timing off) execute q1 (1,2,2,0); -- Both partitions allowed by IN clause, then both excluded again by <> clauses. explain (analyze, costs off, summary off, timing off) execute q1 (1,2,2,1); -- Ensure Params that evaluate to NULL properly prune away all partitions explain (analyze, costs off, summary off, timing off) select * from listp where a = (select null::int); drop table listp; -- -- check that stable query clauses are only used in run-time pruning -- create table stable_qual_pruning (a timestamp) partition by range (a); create table stable_qual_pruning1 partition of stable_qual_pruning for values from ('2000-01-01') to ('2000-02-01'); create table stable_qual_pruning2 partition of stable_qual_pruning for values from ('2000-02-01') to ('2000-03-01'); create table stable_qual_pruning3 partition of stable_qual_pruning for values from ('3000-02-01') to ('3000-03-01'); -- comparison against a stable value requires run-time pruning explain (analyze, costs off, summary off, timing off) select * from stable_qual_pruning where a < localtimestamp; -- timestamp < timestamptz comparison is only stable, not immutable explain (analyze, costs off, summary off, timing off) select * from stable_qual_pruning where a < '2000-02-01'::timestamptz; -- check ScalarArrayOp cases explain (analyze, costs off, summary off, timing off) select * from stable_qual_pruning where a = any(array['2010-02-01', '2020-01-01']::timestamp[]); explain (analyze, costs off, summary off, timing off) select * from stable_qual_pruning where a = any(array['2000-02-01', '2010-01-01']::timestamp[]); explain (analyze, costs off, summary off, timing off) select * from stable_qual_pruning where a = any(array['2000-02-01', localtimestamp]::timestamp[]); explain (analyze, costs off, summary off, timing off) select * from stable_qual_pruning where a = any(array['2010-02-01', '2020-01-01']::timestamptz[]); explain (analyze, costs off, summary off, timing off) select * from stable_qual_pruning where a = any(array['2000-02-01', '2010-01-01']::timestamptz[]); explain (analyze, costs off, summary off, timing off) select * from stable_qual_pruning where a = any(null::timestamptz[]); drop table stable_qual_pruning; -- -- Check that pruning with composite range partitioning works correctly when -- it must ignore clauses for trailing keys once it has seen a clause with -- non-inclusive operator for an earlier key -- create table mc3p (a int, b int, c int) partition by range (a, abs(b), c); create table mc3p0 partition of mc3p for values from (0, 0, 0) to (0, maxvalue, maxvalue); create table mc3p1 partition of mc3p for values from (1, 1, 1) to (2, minvalue, minvalue); create table mc3p2 partition of mc3p for values from (2, minvalue, minvalue) to (3, maxvalue, maxvalue); insert into mc3p values (0, 1, 1), (1, 1, 1), (2, 1, 1); explain (analyze, costs off, summary off, timing off) select * from mc3p where a < 3 and abs(b) = 1; -- -- Check that pruning with composite range partitioning works correctly when -- a combination of runtime parameters is specified, not all of whose values -- are available at the same time -- prepare ps1 as select * from mc3p where a = $1 and abs(b) < (select 3); explain (analyze, costs off, summary off, timing off) execute ps1(1); deallocate ps1; prepare ps2 as select * from mc3p where a <= $1 and abs(b) < (select 3); explain (analyze, costs off, summary off, timing off) execute ps2(1); deallocate ps2; drop table mc3p; -- Ensure runtime pruning works with initplans params with boolean types create table boolvalues (value bool not null); insert into boolvalues values('t'),('f'); create table boolp (a bool) partition by list (a); create table boolp_t partition of boolp for values in('t'); create table boolp_f partition of boolp for values in('f'); explain (analyze, costs off, summary off, timing off) select * from boolp where a = (select value from boolvalues where value); explain (analyze, costs off, summary off, timing off) select * from boolp where a = (select value from boolvalues where not value); drop table boolp; -- -- Test run-time pruning of MergeAppend subnodes -- set enable_seqscan = off; set enable_sort = off; create table ma_test (a int, b int) partition by range (a); create table ma_test_p1 partition of ma_test for values from (0) to (10); create table ma_test_p2 partition of ma_test for values from (10) to (20); create table ma_test_p3 partition of ma_test for values from (20) to (30); insert into ma_test select x,x from generate_series(0,29) t(x); create index on ma_test (b); analyze ma_test; prepare mt_q1 (int) as select a from ma_test where a >= $1 and a % 10 = 5 order by b; explain (analyze, costs off, summary off, timing off) execute mt_q1(15); execute mt_q1(15); explain (analyze, costs off, summary off, timing off) execute mt_q1(25); execute mt_q1(25); -- Ensure MergeAppend behaves correctly when no subplans match explain (analyze, costs off, summary off, timing off) execute mt_q1(35); execute mt_q1(35); deallocate mt_q1; prepare mt_q2 (int) as select * from ma_test where a >= $1 order by b limit 1; -- Ensure output list looks sane when the MergeAppend has no subplans. explain (analyze, verbose, costs off, summary off, timing off) execute mt_q2 (35); deallocate mt_q2; -- ensure initplan params properly prune partitions explain (analyze, costs off, summary off, timing off) select * from ma_test where a >= (select min(b) from ma_test_p2) order by b; reset enable_seqscan; reset enable_sort; drop table ma_test; reset enable_indexonlyscan; -- -- check that pruning works properly when the partition key is of a -- pseudotype -- -- array type list partition key create table pp_arrpart (a int[]) partition by list (a); create table pp_arrpart1 partition of pp_arrpart for values in ('{1}'); create table pp_arrpart2 partition of pp_arrpart for values in ('{2, 3}', '{4, 5}'); explain (costs off) select * from pp_arrpart where a = '{1}'; explain (costs off) select * from pp_arrpart where a = '{1, 2}'; explain (costs off) select * from pp_arrpart where a in ('{4, 5}', '{1}'); explain (costs off) update pp_arrpart set a = a where a = '{1}'; explain (costs off) delete from pp_arrpart where a = '{1}'; drop table pp_arrpart; -- array type hash partition key create table pph_arrpart (a int[]) partition by hash (a); create table pph_arrpart1 partition of pph_arrpart for values with (modulus 2, remainder 0); create table pph_arrpart2 partition of pph_arrpart for values with (modulus 2, remainder 1); insert into pph_arrpart values ('{1}'), ('{1, 2}'), ('{4, 5}'); select tableoid::regclass, * from pph_arrpart order by 1; explain (costs off) select * from pph_arrpart where a = '{1}'; explain (costs off) select * from pph_arrpart where a = '{1, 2}'; explain (costs off) select * from pph_arrpart where a in ('{4, 5}', '{1}'); drop table pph_arrpart; -- enum type list partition key create type pp_colors as enum ('green', 'blue', 'black'); create table pp_enumpart (a pp_colors) partition by list (a); create table pp_enumpart_green partition of pp_enumpart for values in ('green'); create table pp_enumpart_blue partition of pp_enumpart for values in ('blue'); explain (costs off) select * from pp_enumpart where a = 'blue'; explain (costs off) select * from pp_enumpart where a = 'black'; drop table pp_enumpart; drop type pp_colors; -- record type as partition key create type pp_rectype as (a int, b int); create table pp_recpart (a pp_rectype) partition by list (a); create table pp_recpart_11 partition of pp_recpart for values in ('(1,1)'); create table pp_recpart_23 partition of pp_recpart for values in ('(2,3)'); explain (costs off) select * from pp_recpart where a = '(1,1)'::pp_rectype; explain (costs off) select * from pp_recpart where a = '(1,2)'::pp_rectype; drop table pp_recpart; drop type pp_rectype; -- range type partition key create table pp_intrangepart (a int4range) partition by list (a); create table pp_intrangepart12 partition of pp_intrangepart for values in ('[1,2]'); create table pp_intrangepart2inf partition of pp_intrangepart for values in ('[2,)'); explain (costs off) select * from pp_intrangepart where a = '[1,2]'::int4range; explain (costs off) select * from pp_intrangepart where a = '(1,2)'::int4range; drop table pp_intrangepart; -- -- Ensure the enable_partition_prune GUC properly disables partition pruning. -- create table pp_lp (a int, value int) partition by list (a); create table pp_lp1 partition of pp_lp for values in(1); create table pp_lp2 partition of pp_lp for values in(2); explain (costs off) select * from pp_lp where a = 1; explain (costs off) update pp_lp set value = 10 where a = 1; explain (costs off) delete from pp_lp where a = 1; set enable_partition_pruning = off; set constraint_exclusion = 'partition'; -- this should not affect the result. explain (costs off) select * from pp_lp where a = 1; explain (costs off) update pp_lp set value = 10 where a = 1; explain (costs off) delete from pp_lp where a = 1; set constraint_exclusion = 'off'; -- this should not affect the result. explain (costs off) select * from pp_lp where a = 1; explain (costs off) update pp_lp set value = 10 where a = 1; explain (costs off) delete from pp_lp where a = 1; drop table pp_lp; -- Ensure enable_partition_prune does not affect non-partitioned tables. create table inh_lp (a int, value int); create table inh_lp1 (a int, value int, check(a = 1)) inherits (inh_lp); create table inh_lp2 (a int, value int, check(a = 2)) inherits (inh_lp); set constraint_exclusion = 'partition'; -- inh_lp2 should be removed in the following 3 cases. explain (costs off) select * from inh_lp where a = 1; explain (costs off) update inh_lp set value = 10 where a = 1; explain (costs off) delete from inh_lp where a = 1; -- Ensure we don't exclude normal relations when we only expect to exclude -- inheritance children explain (costs off) update inh_lp1 set value = 10 where a = 2; drop table inh_lp cascade; reset enable_partition_pruning; reset constraint_exclusion; -- Check pruning for a partition tree containing only temporary relations create temp table pp_temp_parent (a int) partition by list (a); create temp table pp_temp_part_1 partition of pp_temp_parent for values in (1); create temp table pp_temp_part_def partition of pp_temp_parent default; explain (costs off) select * from pp_temp_parent where true; explain (costs off) select * from pp_temp_parent where a = 2; drop table pp_temp_parent; -- Stress run-time partition pruning a bit more, per bug reports create temp table p (a int, b int, c int) partition by list (a); create temp table p1 partition of p for values in (1); create temp table p2 partition of p for values in (2); create temp table q (a int, b int, c int) partition by list (a); create temp table q1 partition of q for values in (1) partition by list (b); create temp table q11 partition of q1 for values in (1) partition by list (c); create temp table q111 partition of q11 for values in (1); create temp table q2 partition of q for values in (2) partition by list (b); create temp table q21 partition of q2 for values in (1); create temp table q22 partition of q2 for values in (2); insert into q22 values (2, 2, 3); explain (costs off) select * from ( select * from p union all select * from q1 union all select 1, 1, 1 ) s(a, b, c) where s.a = 1 and s.b = 1 and s.c = (select 1); select * from ( select * from p union all select * from q1 union all select 1, 1, 1 ) s(a, b, c) where s.a = 1 and s.b = 1 and s.c = (select 1); prepare q (int, int) as select * from ( select * from p union all select * from q1 union all select 1, 1, 1 ) s(a, b, c) where s.a = $1 and s.b = $2 and s.c = (select 1); explain (costs off) execute q (1, 1); execute q (1, 1); drop table p, q; -- Ensure run-time pruning works correctly when we match a partitioned table -- on the first level but find no matching partitions on the second level. create table listp (a int, b int) partition by list (a); create table listp1 partition of listp for values in(1); create table listp2 partition of listp for values in(2) partition by list(b); create table listp2_10 partition of listp2 for values in (10); explain (analyze, costs off, summary off, timing off) select * from listp where a = (select 2) and b <> 10; -- -- check that a partition directly accessed in a query is excluded with -- constraint_exclusion = on -- -- turn off partition pruning, so that it doesn't interfere set enable_partition_pruning to off; -- setting constraint_exclusion to 'partition' disables exclusion set constraint_exclusion to 'partition'; explain (costs off) select * from listp1 where a = 2; explain (costs off) update listp1 set a = 1 where a = 2; -- constraint exclusion enabled set constraint_exclusion to 'on'; explain (costs off) select * from listp1 where a = 2; explain (costs off) update listp1 set a = 1 where a = 2; reset constraint_exclusion; reset enable_partition_pruning; drop table listp; -- -- Check that gen_prune_steps_from_opexps() works well for various cases of -- clauses for different partition keys -- create table rp_prefix_test1 (a int, b varchar) partition by range(a, b); create table rp_prefix_test1_p1 partition of rp_prefix_test1 for values from (1, 'a') to (1, 'b'); create table rp_prefix_test1_p2 partition of rp_prefix_test1 for values from (2, 'a') to (2, 'b'); -- Don't call get_steps_using_prefix() with the last partition key b plus -- an empty prefix explain (costs off) select * from rp_prefix_test1 where a <= 1 and b = 'a'; create table rp_prefix_test2 (a int, b int, c int) partition by range(a, b, c); create table rp_prefix_test2_p1 partition of rp_prefix_test2 for values from (1, 1, 0) to (1, 1, 10); create table rp_prefix_test2_p2 partition of rp_prefix_test2 for values from (2, 2, 0) to (2, 2, 10); -- Don't call get_steps_using_prefix() with the last partition key c plus -- an invalid prefix (ie, b = 1) explain (costs off) select * from rp_prefix_test2 where a <= 1 and b = 1 and c >= 0; create table rp_prefix_test3 (a int, b int, c int, d int) partition by range(a, b, c, d); create table rp_prefix_test3_p1 partition of rp_prefix_test3 for values from (1, 1, 1, 0) to (1, 1, 1, 10); create table rp_prefix_test3_p2 partition of rp_prefix_test3 for values from (2, 2, 2, 0) to (2, 2, 2, 10); -- Test that get_steps_using_prefix() handles a prefix that contains multiple -- clauses for the partition key b (ie, b >= 1 and b >= 2) explain (costs off) select * from rp_prefix_test3 where a >= 1 and b >= 1 and b >= 2 and c >= 2 and d >= 0; -- Test that get_steps_using_prefix() handles a prefix that contains multiple -- clauses for the partition key b (ie, b >= 1 and b = 2) (This also tests -- that the caller arranges clauses in that prefix in the required order) explain (costs off) select * from rp_prefix_test3 where a >= 1 and b >= 1 and b = 2 and c = 2 and d >= 0; create table hp_prefix_test (a int, b int, c int, d int) partition by hash (a part_test_int4_ops, b part_test_int4_ops, c part_test_int4_ops, d part_test_int4_ops); create table hp_prefix_test_p1 partition of hp_prefix_test for values with (modulus 2, remainder 0); create table hp_prefix_test_p2 partition of hp_prefix_test for values with (modulus 2, remainder 1); -- Test that get_steps_using_prefix() handles non-NULL step_nullkeys explain (costs off) select * from hp_prefix_test where a = 1 and b is null and c = 1 and d = 1; drop table rp_prefix_test1; drop table rp_prefix_test2; drop table rp_prefix_test3; drop table hp_prefix_test; -- -- Check that gen_partprune_steps() detects self-contradiction from clauses -- regardless of the order of the clauses (Here we use a custom operator to -- prevent the equivclass.c machinery from reordering the clauses) -- create operator === ( leftarg = int4, rightarg = int4, procedure = int4eq, commutator = ===, hashes ); create operator class part_test_int4_ops2 for type int4 using hash as operator 1 ===, function 2 part_hashint4_noop(int4, int8); create table hp_contradict_test (a int, b int) partition by hash (a part_test_int4_ops2, b part_test_int4_ops2); create table hp_contradict_test_p1 partition of hp_contradict_test for values with (modulus 2, remainder 0); create table hp_contradict_test_p2 partition of hp_contradict_test for values with (modulus 2, remainder 1); explain (costs off) select * from hp_contradict_test where a is null and a === 1 and b === 1; explain (costs off) select * from hp_contradict_test where a === 1 and b === 1 and a is null; drop table hp_contradict_test; drop operator class part_test_int4_ops2 using hash; drop operator ===(int4, int4); libpg_query-13-2.1.0/test/sql/postgres_regress/password.sql000066400000000000000000000117001413137616400240230ustar00rootroot00000000000000-- -- Tests for password types -- -- Tests for GUC password_encryption SET password_encryption = 'novalue'; -- error SET password_encryption = true; -- ok SET password_encryption = 'md5'; -- ok SET password_encryption = 'scram-sha-256'; -- ok -- consistency of password entries SET password_encryption = 'md5'; CREATE ROLE regress_passwd1 PASSWORD 'role_pwd1'; SET password_encryption = 'on'; CREATE ROLE regress_passwd2 PASSWORD 'role_pwd2'; SET password_encryption = 'scram-sha-256'; CREATE ROLE regress_passwd3 PASSWORD 'role_pwd3'; CREATE ROLE regress_passwd4 PASSWORD NULL; -- check list of created entries -- -- The scram secret will look something like: -- SCRAM-SHA-256$4096:E4HxLGtnRzsYwg==$6YtlR4t69SguDiwFvbVgVZtuz6gpJQQqUMZ7IQJK5yI=:ps75jrHeYU4lXCcXI4O8oIdJ3eO8o2jirjruw9phBTo= -- -- Since the salt is random, the exact value stored will be different on every test -- run. Use a regular expression to mask the changing parts. SELECT rolname, regexp_replace(rolpassword, '(SCRAM-SHA-256)\$(\d+):([a-zA-Z0-9+/=]+)\$([a-zA-Z0-9+=/]+):([a-zA-Z0-9+/=]+)', '\1$\2:$:') as rolpassword_masked FROM pg_authid WHERE rolname LIKE 'regress_passwd%' ORDER BY rolname, rolpassword; -- Rename a role ALTER ROLE regress_passwd2 RENAME TO regress_passwd2_new; -- md5 entry should have been removed SELECT rolname, rolpassword FROM pg_authid WHERE rolname LIKE 'regress_passwd2_new' ORDER BY rolname, rolpassword; ALTER ROLE regress_passwd2_new RENAME TO regress_passwd2; -- Change passwords with ALTER USER. With plaintext or already-encrypted -- passwords. SET password_encryption = 'md5'; -- encrypt with MD5 ALTER ROLE regress_passwd2 PASSWORD 'foo'; -- already encrypted, use as they are ALTER ROLE regress_passwd1 PASSWORD 'md5cd3578025fe2c3d7ed1b9a9b26238b70'; ALTER ROLE regress_passwd3 PASSWORD 'SCRAM-SHA-256$4096:VLK4RMaQLCvNtQ==$6YtlR4t69SguDiwFvbVgVZtuz6gpJQQqUMZ7IQJK5yI=:ps75jrHeYU4lXCcXI4O8oIdJ3eO8o2jirjruw9phBTo='; SET password_encryption = 'scram-sha-256'; -- create SCRAM secret ALTER ROLE regress_passwd4 PASSWORD 'foo'; -- already encrypted with MD5, use as it is CREATE ROLE regress_passwd5 PASSWORD 'md5e73a4b11df52a6068f8b39f90be36023'; -- This looks like a valid SCRAM-SHA-256 secret, but it is not -- so it should be hashed with SCRAM-SHA-256. CREATE ROLE regress_passwd6 PASSWORD 'SCRAM-SHA-256$1234'; -- These may look like valid MD5 secrets, but they are not, so they -- should be hashed with SCRAM-SHA-256. -- trailing garbage at the end CREATE ROLE regress_passwd7 PASSWORD 'md5012345678901234567890123456789zz'; -- invalid length CREATE ROLE regress_passwd8 PASSWORD 'md501234567890123456789012345678901zz'; SELECT rolname, regexp_replace(rolpassword, '(SCRAM-SHA-256)\$(\d+):([a-zA-Z0-9+/=]+)\$([a-zA-Z0-9+=/]+):([a-zA-Z0-9+/=]+)', '\1$\2:$:') as rolpassword_masked FROM pg_authid WHERE rolname LIKE 'regress_passwd%' ORDER BY rolname, rolpassword; -- An empty password is not allowed, in any form CREATE ROLE regress_passwd_empty PASSWORD ''; ALTER ROLE regress_passwd_empty PASSWORD 'md585939a5ce845f1a1b620742e3c659e0a'; ALTER ROLE regress_passwd_empty PASSWORD 'SCRAM-SHA-256$4096:hpFyHTUsSWcR7O9P$LgZFIt6Oqdo27ZFKbZ2nV+vtnYM995pDh9ca6WSi120=:qVV5NeluNfUPkwm7Vqat25RjSPLkGeoZBQs6wVv+um4='; SELECT rolpassword FROM pg_authid WHERE rolname='regress_passwd_empty'; -- Test with invalid stored and server keys. -- -- The first is valid, to act as a control. The others have too long -- stored/server keys. They will be re-hashed. CREATE ROLE regress_passwd_sha_len0 PASSWORD 'SCRAM-SHA-256$4096:A6xHKoH/494E941doaPOYg==$Ky+A30sewHIH3VHQLRN9vYsuzlgNyGNKCh37dy96Rqw=:COPdlNiIkrsacU5QoxydEuOH6e/KfiipeETb/bPw8ZI='; CREATE ROLE regress_passwd_sha_len1 PASSWORD 'SCRAM-SHA-256$4096:A6xHKoH/494E941doaPOYg==$Ky+A30sewHIH3VHQLRN9vYsuzlgNyGNKCh37dy96RqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=:COPdlNiIkrsacU5QoxydEuOH6e/KfiipeETb/bPw8ZI='; CREATE ROLE regress_passwd_sha_len2 PASSWORD 'SCRAM-SHA-256$4096:A6xHKoH/494E941doaPOYg==$Ky+A30sewHIH3VHQLRN9vYsuzlgNyGNKCh37dy96Rqw=:COPdlNiIkrsacU5QoxydEuOH6e/KfiipeETb/bPw8ZIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='; -- Check that the invalid secrets were re-hashed. A re-hashed secret -- should not contain the original salt. SELECT rolname, rolpassword not like '%A6xHKoH/494E941doaPOYg==%' as is_rolpassword_rehashed FROM pg_authid WHERE rolname LIKE 'regress_passwd_sha_len%' ORDER BY rolname; DROP ROLE regress_passwd1; DROP ROLE regress_passwd2; DROP ROLE regress_passwd3; DROP ROLE regress_passwd4; DROP ROLE regress_passwd5; DROP ROLE regress_passwd6; DROP ROLE regress_passwd7; DROP ROLE regress_passwd8; DROP ROLE regress_passwd_empty; DROP ROLE regress_passwd_sha_len0; DROP ROLE regress_passwd_sha_len1; DROP ROLE regress_passwd_sha_len2; -- all entries should have been removed SELECT rolname, rolpassword FROM pg_authid WHERE rolname LIKE 'regress_passwd%' ORDER BY rolname, rolpassword; libpg_query-13-2.1.0/test/sql/postgres_regress/path.sql000066400000000000000000000020501413137616400231130ustar00rootroot00000000000000-- -- PATH -- --DROP TABLE PATH_TBL; CREATE TABLE PATH_TBL (f1 path); INSERT INTO PATH_TBL VALUES ('[(1,2),(3,4)]'); INSERT INTO PATH_TBL VALUES (' ( ( 1 , 2 ) , ( 3 , 4 ) ) '); INSERT INTO PATH_TBL VALUES ('[ (0,0),(3,0),(4,5),(1,6) ]'); INSERT INTO PATH_TBL VALUES ('((1,2) ,(3,4 ))'); INSERT INTO PATH_TBL VALUES ('1,2 ,3,4 '); INSERT INTO PATH_TBL VALUES (' [1,2,3, 4] '); INSERT INTO PATH_TBL VALUES ('((10,20))'); -- Only one point INSERT INTO PATH_TBL VALUES ('[ 11,12,13,14 ]'); INSERT INTO PATH_TBL VALUES ('( 11,12,13,14) '); -- bad values for parser testing INSERT INTO PATH_TBL VALUES ('[]'); INSERT INTO PATH_TBL VALUES ('[(,2),(3,4)]'); INSERT INTO PATH_TBL VALUES ('[(1,2),(3,4)'); INSERT INTO PATH_TBL VALUES ('(1,2,3,4'); INSERT INTO PATH_TBL VALUES ('(1,2),(3,4)]'); SELECT '' AS count, f1 AS open_path FROM PATH_TBL WHERE isopen(f1); SELECT '' AS count, f1 AS closed_path FROM PATH_TBL WHERE isclosed(f1); SELECT '' AS count, pclose(f1) AS closed_path FROM PATH_TBL; SELECT '' AS count, popen(f1) AS open_path FROM PATH_TBL; libpg_query-13-2.1.0/test/sql/postgres_regress/pg_lsn.sql000066400000000000000000000022761413137616400234530ustar00rootroot00000000000000-- -- PG_LSN -- CREATE TABLE PG_LSN_TBL (f1 pg_lsn); -- Largest and smallest input INSERT INTO PG_LSN_TBL VALUES ('0/0'); INSERT INTO PG_LSN_TBL VALUES ('FFFFFFFF/FFFFFFFF'); -- Incorrect input INSERT INTO PG_LSN_TBL VALUES ('G/0'); INSERT INTO PG_LSN_TBL VALUES ('-1/0'); INSERT INTO PG_LSN_TBL VALUES (' 0/12345678'); INSERT INTO PG_LSN_TBL VALUES ('ABCD/'); INSERT INTO PG_LSN_TBL VALUES ('/ABCD'); -- Min/Max aggregation SELECT MIN(f1), MAX(f1) FROM PG_LSN_TBL; DROP TABLE PG_LSN_TBL; -- Operators SELECT '0/16AE7F8' = '0/16AE7F8'::pg_lsn; SELECT '0/16AE7F8'::pg_lsn != '0/16AE7F7'; SELECT '0/16AE7F7' < '0/16AE7F8'::pg_lsn; SELECT '0/16AE7F8' > pg_lsn '0/16AE7F7'; SELECT '0/16AE7F7'::pg_lsn - '0/16AE7F8'::pg_lsn; SELECT '0/16AE7F8'::pg_lsn - '0/16AE7F7'::pg_lsn; -- Check btree and hash opclasses EXPLAIN (COSTS OFF) SELECT DISTINCT (i || '/' || j)::pg_lsn f FROM generate_series(1, 10) i, generate_series(1, 10) j, generate_series(1, 5) k WHERE i <= 10 AND j > 0 AND j <= 10 ORDER BY f; SELECT DISTINCT (i || '/' || j)::pg_lsn f FROM generate_series(1, 10) i, generate_series(1, 10) j, generate_series(1, 5) k WHERE i <= 10 AND j > 0 AND j <= 10 ORDER BY f; libpg_query-13-2.1.0/test/sql/postgres_regress/plancache.sql000066400000000000000000000121731413137616400241040ustar00rootroot00000000000000-- -- Tests to exercise the plan caching/invalidation mechanism -- CREATE TEMP TABLE pcachetest AS SELECT * FROM int8_tbl; -- create and use a cached plan PREPARE prepstmt AS SELECT * FROM pcachetest; EXECUTE prepstmt; -- and one with parameters PREPARE prepstmt2(bigint) AS SELECT * FROM pcachetest WHERE q1 = $1; EXECUTE prepstmt2(123); -- invalidate the plans and see what happens DROP TABLE pcachetest; EXECUTE prepstmt; EXECUTE prepstmt2(123); -- recreate the temp table (this demonstrates that the raw plan is -- purely textual and doesn't depend on OIDs, for instance) CREATE TEMP TABLE pcachetest AS SELECT * FROM int8_tbl ORDER BY 2; EXECUTE prepstmt; EXECUTE prepstmt2(123); -- prepared statements should prevent change in output tupdesc, -- since clients probably aren't expecting that to change on the fly ALTER TABLE pcachetest ADD COLUMN q3 bigint; EXECUTE prepstmt; EXECUTE prepstmt2(123); -- but we're nice guys and will let you undo your mistake ALTER TABLE pcachetest DROP COLUMN q3; EXECUTE prepstmt; EXECUTE prepstmt2(123); -- Try it with a view, which isn't directly used in the resulting plan -- but should trigger invalidation anyway CREATE TEMP VIEW pcacheview AS SELECT * FROM pcachetest; PREPARE vprep AS SELECT * FROM pcacheview; EXECUTE vprep; CREATE OR REPLACE TEMP VIEW pcacheview AS SELECT q1, q2/2 AS q2 FROM pcachetest; EXECUTE vprep; -- Check basic SPI plan invalidation create function cache_test(int) returns int as $$ declare total int; begin create temp table t1(f1 int); insert into t1 values($1); insert into t1 values(11); insert into t1 values(12); insert into t1 values(13); select sum(f1) into total from t1; drop table t1; return total; end $$ language plpgsql; select cache_test(1); select cache_test(2); select cache_test(3); -- Check invalidation of plpgsql "simple expression" create temp view v1 as select 2+2 as f1; create function cache_test_2() returns int as $$ begin return f1 from v1; end$$ language plpgsql; select cache_test_2(); create or replace temp view v1 as select 2+2+4 as f1; select cache_test_2(); create or replace temp view v1 as select 2+2+4+(select max(unique1) from tenk1) as f1; select cache_test_2(); --- Check that change of search_path is honored when re-using cached plan create schema s1 create table abc (f1 int); create schema s2 create table abc (f1 int); insert into s1.abc values(123); insert into s2.abc values(456); set search_path = s1; prepare p1 as select f1 from abc; execute p1; set search_path = s2; select f1 from abc; execute p1; alter table s1.abc add column f2 float8; -- force replan execute p1; drop schema s1 cascade; drop schema s2 cascade; reset search_path; -- Check that invalidation deals with regclass constants create temp sequence seq; prepare p2 as select nextval('seq'); execute p2; drop sequence seq; create temp sequence seq; execute p2; -- Check DDL via SPI, immediately followed by SPI plan re-use -- (bug in original coding) create function cachebug() returns void as $$ declare r int; begin drop table if exists temptable cascade; create temp table temptable as select * from generate_series(1,3) as f1; create temp view vv as select * from temptable; for r in select * from vv loop raise notice '%', r; end loop; end$$ language plpgsql; select cachebug(); select cachebug(); -- Check that addition or removal of any partition is correctly dealt with by -- default partition table when it is being used in prepared statement. create table pc_list_parted (a int) partition by list(a); create table pc_list_part_null partition of pc_list_parted for values in (null); create table pc_list_part_1 partition of pc_list_parted for values in (1); create table pc_list_part_def partition of pc_list_parted default; prepare pstmt_def_insert (int) as insert into pc_list_part_def values($1); -- should fail execute pstmt_def_insert(null); execute pstmt_def_insert(1); create table pc_list_part_2 partition of pc_list_parted for values in (2); execute pstmt_def_insert(2); alter table pc_list_parted detach partition pc_list_part_null; -- should be ok execute pstmt_def_insert(null); drop table pc_list_part_1; -- should be ok execute pstmt_def_insert(1); drop table pc_list_parted, pc_list_part_null; deallocate pstmt_def_insert; -- Test plan_cache_mode create table test_mode (a int); insert into test_mode select 1 from generate_series(1,1000) union all select 2; create index on test_mode (a); analyze test_mode; prepare test_mode_pp (int) as select count(*) from test_mode where a = $1; -- up to 5 executions, custom plan is used explain (costs off) execute test_mode_pp(2); -- force generic plan set plan_cache_mode to force_generic_plan; explain (costs off) execute test_mode_pp(2); -- get to generic plan by 5 executions set plan_cache_mode to auto; execute test_mode_pp(1); -- 1x execute test_mode_pp(1); -- 2x execute test_mode_pp(1); -- 3x execute test_mode_pp(1); -- 4x execute test_mode_pp(1); -- 5x -- we should now get a really bad plan explain (costs off) execute test_mode_pp(2); -- but we can force a custom plan set plan_cache_mode to force_custom_plan; explain (costs off) execute test_mode_pp(2); drop table test_mode; libpg_query-13-2.1.0/test/sql/postgres_regress/plpgsql.sql000066400000000000000000003534621413137616400236610ustar00rootroot00000000000000-- -- PLPGSQL -- -- Scenario: -- -- A building with a modern TP cable installation where any -- of the wall connectors can be used to plug in phones, -- ethernet interfaces or local office hubs. The backside -- of the wall connectors is wired to one of several patch- -- fields in the building. -- -- In the patchfields, there are hubs and all the slots -- representing the wall connectors. In addition there are -- slots that can represent a phone line from the central -- phone system. -- -- Triggers ensure consistency of the patching information. -- -- Functions are used to build up powerful views that let -- you look behind the wall when looking at a patchfield -- or into a room. -- create table Room ( roomno char(8), comment text ); create unique index Room_rno on Room using btree (roomno bpchar_ops); create table WSlot ( slotname char(20), roomno char(8), slotlink char(20), backlink char(20) ); create unique index WSlot_name on WSlot using btree (slotname bpchar_ops); create table PField ( name text, comment text ); create unique index PField_name on PField using btree (name text_ops); create table PSlot ( slotname char(20), pfname text, slotlink char(20), backlink char(20) ); create unique index PSlot_name on PSlot using btree (slotname bpchar_ops); create table PLine ( slotname char(20), phonenumber char(20), comment text, backlink char(20) ); create unique index PLine_name on PLine using btree (slotname bpchar_ops); create table Hub ( name char(14), comment text, nslots integer ); create unique index Hub_name on Hub using btree (name bpchar_ops); create table HSlot ( slotname char(20), hubname char(14), slotno integer, slotlink char(20) ); create unique index HSlot_name on HSlot using btree (slotname bpchar_ops); create index HSlot_hubname on HSlot using btree (hubname bpchar_ops); create table System ( name text, comment text ); create unique index System_name on System using btree (name text_ops); create table IFace ( slotname char(20), sysname text, ifname text, slotlink char(20) ); create unique index IFace_name on IFace using btree (slotname bpchar_ops); create table PHone ( slotname char(20), comment text, slotlink char(20) ); create unique index PHone_name on PHone using btree (slotname bpchar_ops); -- ************************************************************ -- * -- * Trigger procedures and functions for the patchfield -- * test of PL/pgSQL -- * -- ************************************************************ -- ************************************************************ -- * AFTER UPDATE on Room -- * - If room no changes let wall slots follow -- ************************************************************ create function tg_room_au() returns trigger as ' begin if new.roomno != old.roomno then update WSlot set roomno = new.roomno where roomno = old.roomno; end if; return new; end; ' language plpgsql; create trigger tg_room_au after update on Room for each row execute procedure tg_room_au(); -- ************************************************************ -- * AFTER DELETE on Room -- * - delete wall slots in this room -- ************************************************************ create function tg_room_ad() returns trigger as ' begin delete from WSlot where roomno = old.roomno; return old; end; ' language plpgsql; create trigger tg_room_ad after delete on Room for each row execute procedure tg_room_ad(); -- ************************************************************ -- * BEFORE INSERT or UPDATE on WSlot -- * - Check that room exists -- ************************************************************ create function tg_wslot_biu() returns trigger as $$ begin if count(*) = 0 from Room where roomno = new.roomno then raise exception 'Room % does not exist', new.roomno; end if; return new; end; $$ language plpgsql; create trigger tg_wslot_biu before insert or update on WSlot for each row execute procedure tg_wslot_biu(); -- ************************************************************ -- * AFTER UPDATE on PField -- * - Let PSlots of this field follow -- ************************************************************ create function tg_pfield_au() returns trigger as ' begin if new.name != old.name then update PSlot set pfname = new.name where pfname = old.name; end if; return new; end; ' language plpgsql; create trigger tg_pfield_au after update on PField for each row execute procedure tg_pfield_au(); -- ************************************************************ -- * AFTER DELETE on PField -- * - Remove all slots of this patchfield -- ************************************************************ create function tg_pfield_ad() returns trigger as ' begin delete from PSlot where pfname = old.name; return old; end; ' language plpgsql; create trigger tg_pfield_ad after delete on PField for each row execute procedure tg_pfield_ad(); -- ************************************************************ -- * BEFORE INSERT or UPDATE on PSlot -- * - Ensure that our patchfield does exist -- ************************************************************ create function tg_pslot_biu() returns trigger as $proc$ declare pfrec record; ps alias for new; begin select into pfrec * from PField where name = ps.pfname; if not found then raise exception $$Patchfield "%" does not exist$$, ps.pfname; end if; return ps; end; $proc$ language plpgsql; create trigger tg_pslot_biu before insert or update on PSlot for each row execute procedure tg_pslot_biu(); -- ************************************************************ -- * AFTER UPDATE on System -- * - If system name changes let interfaces follow -- ************************************************************ create function tg_system_au() returns trigger as ' begin if new.name != old.name then update IFace set sysname = new.name where sysname = old.name; end if; return new; end; ' language plpgsql; create trigger tg_system_au after update on System for each row execute procedure tg_system_au(); -- ************************************************************ -- * BEFORE INSERT or UPDATE on IFace -- * - set the slotname to IF.sysname.ifname -- ************************************************************ create function tg_iface_biu() returns trigger as $$ declare sname text; sysrec record; begin select into sysrec * from system where name = new.sysname; if not found then raise exception $q$system "%" does not exist$q$, new.sysname; end if; sname := 'IF.' || new.sysname; sname := sname || '.'; sname := sname || new.ifname; if length(sname) > 20 then raise exception 'IFace slotname "%" too long (20 char max)', sname; end if; new.slotname := sname; return new; end; $$ language plpgsql; create trigger tg_iface_biu before insert or update on IFace for each row execute procedure tg_iface_biu(); -- ************************************************************ -- * AFTER INSERT or UPDATE or DELETE on Hub -- * - insert/delete/rename slots as required -- ************************************************************ create function tg_hub_a() returns trigger as ' declare hname text; dummy integer; begin if tg_op = ''INSERT'' then dummy := tg_hub_adjustslots(new.name, 0, new.nslots); return new; end if; if tg_op = ''UPDATE'' then if new.name != old.name then update HSlot set hubname = new.name where hubname = old.name; end if; dummy := tg_hub_adjustslots(new.name, old.nslots, new.nslots); return new; end if; if tg_op = ''DELETE'' then dummy := tg_hub_adjustslots(old.name, old.nslots, 0); return old; end if; end; ' language plpgsql; create trigger tg_hub_a after insert or update or delete on Hub for each row execute procedure tg_hub_a(); -- ************************************************************ -- * Support function to add/remove slots of Hub -- ************************************************************ create function tg_hub_adjustslots(hname bpchar, oldnslots integer, newnslots integer) returns integer as ' begin if newnslots = oldnslots then return 0; end if; if newnslots < oldnslots then delete from HSlot where hubname = hname and slotno > newnslots; return 0; end if; for i in oldnslots + 1 .. newnslots loop insert into HSlot (slotname, hubname, slotno, slotlink) values (''HS.dummy'', hname, i, ''''); end loop; return 0; end ' language plpgsql; -- Test comments COMMENT ON FUNCTION tg_hub_adjustslots_wrong(bpchar, integer, integer) IS 'function with args'; COMMENT ON FUNCTION tg_hub_adjustslots(bpchar, integer, integer) IS 'function with args'; COMMENT ON FUNCTION tg_hub_adjustslots(bpchar, integer, integer) IS NULL; -- ************************************************************ -- * BEFORE INSERT or UPDATE on HSlot -- * - prevent from manual manipulation -- * - set the slotname to HS.hubname.slotno -- ************************************************************ create function tg_hslot_biu() returns trigger as ' declare sname text; xname HSlot.slotname%TYPE; hubrec record; begin select into hubrec * from Hub where name = new.hubname; if not found then raise exception ''no manual manipulation of HSlot''; end if; if new.slotno < 1 or new.slotno > hubrec.nslots then raise exception ''no manual manipulation of HSlot''; end if; if tg_op = ''UPDATE'' and new.hubname != old.hubname then if count(*) > 0 from Hub where name = old.hubname then raise exception ''no manual manipulation of HSlot''; end if; end if; sname := ''HS.'' || trim(new.hubname); sname := sname || ''.''; sname := sname || new.slotno::text; if length(sname) > 20 then raise exception ''HSlot slotname "%" too long (20 char max)'', sname; end if; new.slotname := sname; return new; end; ' language plpgsql; create trigger tg_hslot_biu before insert or update on HSlot for each row execute procedure tg_hslot_biu(); -- ************************************************************ -- * BEFORE DELETE on HSlot -- * - prevent from manual manipulation -- ************************************************************ create function tg_hslot_bd() returns trigger as ' declare hubrec record; begin select into hubrec * from Hub where name = old.hubname; if not found then return old; end if; if old.slotno > hubrec.nslots then return old; end if; raise exception ''no manual manipulation of HSlot''; end; ' language plpgsql; create trigger tg_hslot_bd before delete on HSlot for each row execute procedure tg_hslot_bd(); -- ************************************************************ -- * BEFORE INSERT on all slots -- * - Check name prefix -- ************************************************************ create function tg_chkslotname() returns trigger as ' begin if substr(new.slotname, 1, 2) != tg_argv[0] then raise exception ''slotname must begin with %'', tg_argv[0]; end if; return new; end; ' language plpgsql; create trigger tg_chkslotname before insert on PSlot for each row execute procedure tg_chkslotname('PS'); create trigger tg_chkslotname before insert on WSlot for each row execute procedure tg_chkslotname('WS'); create trigger tg_chkslotname before insert on PLine for each row execute procedure tg_chkslotname('PL'); create trigger tg_chkslotname before insert on IFace for each row execute procedure tg_chkslotname('IF'); create trigger tg_chkslotname before insert on PHone for each row execute procedure tg_chkslotname('PH'); -- ************************************************************ -- * BEFORE INSERT or UPDATE on all slots with slotlink -- * - Set slotlink to empty string if NULL value given -- ************************************************************ create function tg_chkslotlink() returns trigger as ' begin if new.slotlink isnull then new.slotlink := ''''; end if; return new; end; ' language plpgsql; create trigger tg_chkslotlink before insert or update on PSlot for each row execute procedure tg_chkslotlink(); create trigger tg_chkslotlink before insert or update on WSlot for each row execute procedure tg_chkslotlink(); create trigger tg_chkslotlink before insert or update on IFace for each row execute procedure tg_chkslotlink(); create trigger tg_chkslotlink before insert or update on HSlot for each row execute procedure tg_chkslotlink(); create trigger tg_chkslotlink before insert or update on PHone for each row execute procedure tg_chkslotlink(); -- ************************************************************ -- * BEFORE INSERT or UPDATE on all slots with backlink -- * - Set backlink to empty string if NULL value given -- ************************************************************ create function tg_chkbacklink() returns trigger as ' begin if new.backlink isnull then new.backlink := ''''; end if; return new; end; ' language plpgsql; create trigger tg_chkbacklink before insert or update on PSlot for each row execute procedure tg_chkbacklink(); create trigger tg_chkbacklink before insert or update on WSlot for each row execute procedure tg_chkbacklink(); create trigger tg_chkbacklink before insert or update on PLine for each row execute procedure tg_chkbacklink(); -- ************************************************************ -- * BEFORE UPDATE on PSlot -- * - do delete/insert instead of update if name changes -- ************************************************************ create function tg_pslot_bu() returns trigger as ' begin if new.slotname != old.slotname then delete from PSlot where slotname = old.slotname; insert into PSlot ( slotname, pfname, slotlink, backlink ) values ( new.slotname, new.pfname, new.slotlink, new.backlink ); return null; end if; return new; end; ' language plpgsql; create trigger tg_pslot_bu before update on PSlot for each row execute procedure tg_pslot_bu(); -- ************************************************************ -- * BEFORE UPDATE on WSlot -- * - do delete/insert instead of update if name changes -- ************************************************************ create function tg_wslot_bu() returns trigger as ' begin if new.slotname != old.slotname then delete from WSlot where slotname = old.slotname; insert into WSlot ( slotname, roomno, slotlink, backlink ) values ( new.slotname, new.roomno, new.slotlink, new.backlink ); return null; end if; return new; end; ' language plpgsql; create trigger tg_wslot_bu before update on WSlot for each row execute procedure tg_Wslot_bu(); -- ************************************************************ -- * BEFORE UPDATE on PLine -- * - do delete/insert instead of update if name changes -- ************************************************************ create function tg_pline_bu() returns trigger as ' begin if new.slotname != old.slotname then delete from PLine where slotname = old.slotname; insert into PLine ( slotname, phonenumber, comment, backlink ) values ( new.slotname, new.phonenumber, new.comment, new.backlink ); return null; end if; return new; end; ' language plpgsql; create trigger tg_pline_bu before update on PLine for each row execute procedure tg_pline_bu(); -- ************************************************************ -- * BEFORE UPDATE on IFace -- * - do delete/insert instead of update if name changes -- ************************************************************ create function tg_iface_bu() returns trigger as ' begin if new.slotname != old.slotname then delete from IFace where slotname = old.slotname; insert into IFace ( slotname, sysname, ifname, slotlink ) values ( new.slotname, new.sysname, new.ifname, new.slotlink ); return null; end if; return new; end; ' language plpgsql; create trigger tg_iface_bu before update on IFace for each row execute procedure tg_iface_bu(); -- ************************************************************ -- * BEFORE UPDATE on HSlot -- * - do delete/insert instead of update if name changes -- ************************************************************ create function tg_hslot_bu() returns trigger as ' begin if new.slotname != old.slotname or new.hubname != old.hubname then delete from HSlot where slotname = old.slotname; insert into HSlot ( slotname, hubname, slotno, slotlink ) values ( new.slotname, new.hubname, new.slotno, new.slotlink ); return null; end if; return new; end; ' language plpgsql; create trigger tg_hslot_bu before update on HSlot for each row execute procedure tg_hslot_bu(); -- ************************************************************ -- * BEFORE UPDATE on PHone -- * - do delete/insert instead of update if name changes -- ************************************************************ create function tg_phone_bu() returns trigger as ' begin if new.slotname != old.slotname then delete from PHone where slotname = old.slotname; insert into PHone ( slotname, comment, slotlink ) values ( new.slotname, new.comment, new.slotlink ); return null; end if; return new; end; ' language plpgsql; create trigger tg_phone_bu before update on PHone for each row execute procedure tg_phone_bu(); -- ************************************************************ -- * AFTER INSERT or UPDATE or DELETE on slot with backlink -- * - Ensure that the opponent correctly points back to us -- ************************************************************ create function tg_backlink_a() returns trigger as ' declare dummy integer; begin if tg_op = ''INSERT'' then if new.backlink != '''' then dummy := tg_backlink_set(new.backlink, new.slotname); end if; return new; end if; if tg_op = ''UPDATE'' then if new.backlink != old.backlink then if old.backlink != '''' then dummy := tg_backlink_unset(old.backlink, old.slotname); end if; if new.backlink != '''' then dummy := tg_backlink_set(new.backlink, new.slotname); end if; else if new.slotname != old.slotname and new.backlink != '''' then dummy := tg_slotlink_set(new.backlink, new.slotname); end if; end if; return new; end if; if tg_op = ''DELETE'' then if old.backlink != '''' then dummy := tg_backlink_unset(old.backlink, old.slotname); end if; return old; end if; end; ' language plpgsql; create trigger tg_backlink_a after insert or update or delete on PSlot for each row execute procedure tg_backlink_a('PS'); create trigger tg_backlink_a after insert or update or delete on WSlot for each row execute procedure tg_backlink_a('WS'); create trigger tg_backlink_a after insert or update or delete on PLine for each row execute procedure tg_backlink_a('PL'); -- ************************************************************ -- * Support function to set the opponents backlink field -- * if it does not already point to the requested slot -- ************************************************************ create function tg_backlink_set(myname bpchar, blname bpchar) returns integer as ' declare mytype char(2); link char(4); rec record; begin mytype := substr(myname, 1, 2); link := mytype || substr(blname, 1, 2); if link = ''PLPL'' then raise exception ''backlink between two phone lines does not make sense''; end if; if link in (''PLWS'', ''WSPL'') then raise exception ''direct link of phone line to wall slot not permitted''; end if; if mytype = ''PS'' then select into rec * from PSlot where slotname = myname; if not found then raise exception ''% does not exist'', myname; end if; if rec.backlink != blname then update PSlot set backlink = blname where slotname = myname; end if; return 0; end if; if mytype = ''WS'' then select into rec * from WSlot where slotname = myname; if not found then raise exception ''% does not exist'', myname; end if; if rec.backlink != blname then update WSlot set backlink = blname where slotname = myname; end if; return 0; end if; if mytype = ''PL'' then select into rec * from PLine where slotname = myname; if not found then raise exception ''% does not exist'', myname; end if; if rec.backlink != blname then update PLine set backlink = blname where slotname = myname; end if; return 0; end if; raise exception ''illegal backlink beginning with %'', mytype; end; ' language plpgsql; -- ************************************************************ -- * Support function to clear out the backlink field if -- * it still points to specific slot -- ************************************************************ create function tg_backlink_unset(bpchar, bpchar) returns integer as ' declare myname alias for $1; blname alias for $2; mytype char(2); rec record; begin mytype := substr(myname, 1, 2); if mytype = ''PS'' then select into rec * from PSlot where slotname = myname; if not found then return 0; end if; if rec.backlink = blname then update PSlot set backlink = '''' where slotname = myname; end if; return 0; end if; if mytype = ''WS'' then select into rec * from WSlot where slotname = myname; if not found then return 0; end if; if rec.backlink = blname then update WSlot set backlink = '''' where slotname = myname; end if; return 0; end if; if mytype = ''PL'' then select into rec * from PLine where slotname = myname; if not found then return 0; end if; if rec.backlink = blname then update PLine set backlink = '''' where slotname = myname; end if; return 0; end if; end ' language plpgsql; -- ************************************************************ -- * AFTER INSERT or UPDATE or DELETE on slot with slotlink -- * - Ensure that the opponent correctly points back to us -- ************************************************************ create function tg_slotlink_a() returns trigger as ' declare dummy integer; begin if tg_op = ''INSERT'' then if new.slotlink != '''' then dummy := tg_slotlink_set(new.slotlink, new.slotname); end if; return new; end if; if tg_op = ''UPDATE'' then if new.slotlink != old.slotlink then if old.slotlink != '''' then dummy := tg_slotlink_unset(old.slotlink, old.slotname); end if; if new.slotlink != '''' then dummy := tg_slotlink_set(new.slotlink, new.slotname); end if; else if new.slotname != old.slotname and new.slotlink != '''' then dummy := tg_slotlink_set(new.slotlink, new.slotname); end if; end if; return new; end if; if tg_op = ''DELETE'' then if old.slotlink != '''' then dummy := tg_slotlink_unset(old.slotlink, old.slotname); end if; return old; end if; end; ' language plpgsql; create trigger tg_slotlink_a after insert or update or delete on PSlot for each row execute procedure tg_slotlink_a('PS'); create trigger tg_slotlink_a after insert or update or delete on WSlot for each row execute procedure tg_slotlink_a('WS'); create trigger tg_slotlink_a after insert or update or delete on IFace for each row execute procedure tg_slotlink_a('IF'); create trigger tg_slotlink_a after insert or update or delete on HSlot for each row execute procedure tg_slotlink_a('HS'); create trigger tg_slotlink_a after insert or update or delete on PHone for each row execute procedure tg_slotlink_a('PH'); -- ************************************************************ -- * Support function to set the opponents slotlink field -- * if it does not already point to the requested slot -- ************************************************************ create function tg_slotlink_set(bpchar, bpchar) returns integer as ' declare myname alias for $1; blname alias for $2; mytype char(2); link char(4); rec record; begin mytype := substr(myname, 1, 2); link := mytype || substr(blname, 1, 2); if link = ''PHPH'' then raise exception ''slotlink between two phones does not make sense''; end if; if link in (''PHHS'', ''HSPH'') then raise exception ''link of phone to hub does not make sense''; end if; if link in (''PHIF'', ''IFPH'') then raise exception ''link of phone to hub does not make sense''; end if; if link in (''PSWS'', ''WSPS'') then raise exception ''slotlink from patchslot to wallslot not permitted''; end if; if mytype = ''PS'' then select into rec * from PSlot where slotname = myname; if not found then raise exception ''% does not exist'', myname; end if; if rec.slotlink != blname then update PSlot set slotlink = blname where slotname = myname; end if; return 0; end if; if mytype = ''WS'' then select into rec * from WSlot where slotname = myname; if not found then raise exception ''% does not exist'', myname; end if; if rec.slotlink != blname then update WSlot set slotlink = blname where slotname = myname; end if; return 0; end if; if mytype = ''IF'' then select into rec * from IFace where slotname = myname; if not found then raise exception ''% does not exist'', myname; end if; if rec.slotlink != blname then update IFace set slotlink = blname where slotname = myname; end if; return 0; end if; if mytype = ''HS'' then select into rec * from HSlot where slotname = myname; if not found then raise exception ''% does not exist'', myname; end if; if rec.slotlink != blname then update HSlot set slotlink = blname where slotname = myname; end if; return 0; end if; if mytype = ''PH'' then select into rec * from PHone where slotname = myname; if not found then raise exception ''% does not exist'', myname; end if; if rec.slotlink != blname then update PHone set slotlink = blname where slotname = myname; end if; return 0; end if; raise exception ''illegal slotlink beginning with %'', mytype; end; ' language plpgsql; -- ************************************************************ -- * Support function to clear out the slotlink field if -- * it still points to specific slot -- ************************************************************ create function tg_slotlink_unset(bpchar, bpchar) returns integer as ' declare myname alias for $1; blname alias for $2; mytype char(2); rec record; begin mytype := substr(myname, 1, 2); if mytype = ''PS'' then select into rec * from PSlot where slotname = myname; if not found then return 0; end if; if rec.slotlink = blname then update PSlot set slotlink = '''' where slotname = myname; end if; return 0; end if; if mytype = ''WS'' then select into rec * from WSlot where slotname = myname; if not found then return 0; end if; if rec.slotlink = blname then update WSlot set slotlink = '''' where slotname = myname; end if; return 0; end if; if mytype = ''IF'' then select into rec * from IFace where slotname = myname; if not found then return 0; end if; if rec.slotlink = blname then update IFace set slotlink = '''' where slotname = myname; end if; return 0; end if; if mytype = ''HS'' then select into rec * from HSlot where slotname = myname; if not found then return 0; end if; if rec.slotlink = blname then update HSlot set slotlink = '''' where slotname = myname; end if; return 0; end if; if mytype = ''PH'' then select into rec * from PHone where slotname = myname; if not found then return 0; end if; if rec.slotlink = blname then update PHone set slotlink = '''' where slotname = myname; end if; return 0; end if; end; ' language plpgsql; -- ************************************************************ -- * Describe the backside of a patchfield slot -- ************************************************************ create function pslot_backlink_view(bpchar) returns text as ' <> declare rec record; bltype char(2); retval text; begin select into rec * from PSlot where slotname = $1; if not found then return ''''; end if; if rec.backlink = '''' then return ''-''; end if; bltype := substr(rec.backlink, 1, 2); if bltype = ''PL'' then declare rec record; begin select into rec * from PLine where slotname = "outer".rec.backlink; retval := ''Phone line '' || trim(rec.phonenumber); if rec.comment != '''' then retval := retval || '' (''; retval := retval || rec.comment; retval := retval || '')''; end if; return retval; end; end if; if bltype = ''WS'' then select into rec * from WSlot where slotname = rec.backlink; retval := trim(rec.slotname) || '' in room ''; retval := retval || trim(rec.roomno); retval := retval || '' -> ''; return retval || wslot_slotlink_view(rec.slotname); end if; return rec.backlink; end; ' language plpgsql; -- ************************************************************ -- * Describe the front of a patchfield slot -- ************************************************************ create function pslot_slotlink_view(bpchar) returns text as ' declare psrec record; sltype char(2); retval text; begin select into psrec * from PSlot where slotname = $1; if not found then return ''''; end if; if psrec.slotlink = '''' then return ''-''; end if; sltype := substr(psrec.slotlink, 1, 2); if sltype = ''PS'' then retval := trim(psrec.slotlink) || '' -> ''; return retval || pslot_backlink_view(psrec.slotlink); end if; if sltype = ''HS'' then retval := comment from Hub H, HSlot HS where HS.slotname = psrec.slotlink and H.name = HS.hubname; retval := retval || '' slot ''; retval := retval || slotno::text from HSlot where slotname = psrec.slotlink; return retval; end if; return psrec.slotlink; end; ' language plpgsql; -- ************************************************************ -- * Describe the front of a wall connector slot -- ************************************************************ create function wslot_slotlink_view(bpchar) returns text as ' declare rec record; sltype char(2); retval text; begin select into rec * from WSlot where slotname = $1; if not found then return ''''; end if; if rec.slotlink = '''' then return ''-''; end if; sltype := substr(rec.slotlink, 1, 2); if sltype = ''PH'' then select into rec * from PHone where slotname = rec.slotlink; retval := ''Phone '' || trim(rec.slotname); if rec.comment != '''' then retval := retval || '' (''; retval := retval || rec.comment; retval := retval || '')''; end if; return retval; end if; if sltype = ''IF'' then declare syrow System%RowType; ifrow IFace%ROWTYPE; begin select into ifrow * from IFace where slotname = rec.slotlink; select into syrow * from System where name = ifrow.sysname; retval := syrow.name || '' IF ''; retval := retval || ifrow.ifname; if syrow.comment != '''' then retval := retval || '' (''; retval := retval || syrow.comment; retval := retval || '')''; end if; return retval; end; end if; return rec.slotlink; end; ' language plpgsql; -- ************************************************************ -- * View of a patchfield describing backside and patches -- ************************************************************ create view Pfield_v1 as select PF.pfname, PF.slotname, pslot_backlink_view(PF.slotname) as backside, pslot_slotlink_view(PF.slotname) as patch from PSlot PF; -- -- First we build the house - so we create the rooms -- insert into Room values ('001', 'Entrance'); insert into Room values ('002', 'Office'); insert into Room values ('003', 'Office'); insert into Room values ('004', 'Technical'); insert into Room values ('101', 'Office'); insert into Room values ('102', 'Conference'); insert into Room values ('103', 'Restroom'); insert into Room values ('104', 'Technical'); insert into Room values ('105', 'Office'); insert into Room values ('106', 'Office'); -- -- Second we install the wall connectors -- insert into WSlot values ('WS.001.1a', '001', '', ''); insert into WSlot values ('WS.001.1b', '001', '', ''); insert into WSlot values ('WS.001.2a', '001', '', ''); insert into WSlot values ('WS.001.2b', '001', '', ''); insert into WSlot values ('WS.001.3a', '001', '', ''); insert into WSlot values ('WS.001.3b', '001', '', ''); insert into WSlot values ('WS.002.1a', '002', '', ''); insert into WSlot values ('WS.002.1b', '002', '', ''); insert into WSlot values ('WS.002.2a', '002', '', ''); insert into WSlot values ('WS.002.2b', '002', '', ''); insert into WSlot values ('WS.002.3a', '002', '', ''); insert into WSlot values ('WS.002.3b', '002', '', ''); insert into WSlot values ('WS.003.1a', '003', '', ''); insert into WSlot values ('WS.003.1b', '003', '', ''); insert into WSlot values ('WS.003.2a', '003', '', ''); insert into WSlot values ('WS.003.2b', '003', '', ''); insert into WSlot values ('WS.003.3a', '003', '', ''); insert into WSlot values ('WS.003.3b', '003', '', ''); insert into WSlot values ('WS.101.1a', '101', '', ''); insert into WSlot values ('WS.101.1b', '101', '', ''); insert into WSlot values ('WS.101.2a', '101', '', ''); insert into WSlot values ('WS.101.2b', '101', '', ''); insert into WSlot values ('WS.101.3a', '101', '', ''); insert into WSlot values ('WS.101.3b', '101', '', ''); insert into WSlot values ('WS.102.1a', '102', '', ''); insert into WSlot values ('WS.102.1b', '102', '', ''); insert into WSlot values ('WS.102.2a', '102', '', ''); insert into WSlot values ('WS.102.2b', '102', '', ''); insert into WSlot values ('WS.102.3a', '102', '', ''); insert into WSlot values ('WS.102.3b', '102', '', ''); insert into WSlot values ('WS.105.1a', '105', '', ''); insert into WSlot values ('WS.105.1b', '105', '', ''); insert into WSlot values ('WS.105.2a', '105', '', ''); insert into WSlot values ('WS.105.2b', '105', '', ''); insert into WSlot values ('WS.105.3a', '105', '', ''); insert into WSlot values ('WS.105.3b', '105', '', ''); insert into WSlot values ('WS.106.1a', '106', '', ''); insert into WSlot values ('WS.106.1b', '106', '', ''); insert into WSlot values ('WS.106.2a', '106', '', ''); insert into WSlot values ('WS.106.2b', '106', '', ''); insert into WSlot values ('WS.106.3a', '106', '', ''); insert into WSlot values ('WS.106.3b', '106', '', ''); -- -- Now create the patch fields and their slots -- insert into PField values ('PF0_1', 'Wallslots basement'); -- -- The cables for these will be made later, so they are unconnected for now -- insert into PSlot values ('PS.base.a1', 'PF0_1', '', ''); insert into PSlot values ('PS.base.a2', 'PF0_1', '', ''); insert into PSlot values ('PS.base.a3', 'PF0_1', '', ''); insert into PSlot values ('PS.base.a4', 'PF0_1', '', ''); insert into PSlot values ('PS.base.a5', 'PF0_1', '', ''); insert into PSlot values ('PS.base.a6', 'PF0_1', '', ''); -- -- These are already wired to the wall connectors -- insert into PSlot values ('PS.base.b1', 'PF0_1', '', 'WS.002.1a'); insert into PSlot values ('PS.base.b2', 'PF0_1', '', 'WS.002.1b'); insert into PSlot values ('PS.base.b3', 'PF0_1', '', 'WS.002.2a'); insert into PSlot values ('PS.base.b4', 'PF0_1', '', 'WS.002.2b'); insert into PSlot values ('PS.base.b5', 'PF0_1', '', 'WS.002.3a'); insert into PSlot values ('PS.base.b6', 'PF0_1', '', 'WS.002.3b'); insert into PSlot values ('PS.base.c1', 'PF0_1', '', 'WS.003.1a'); insert into PSlot values ('PS.base.c2', 'PF0_1', '', 'WS.003.1b'); insert into PSlot values ('PS.base.c3', 'PF0_1', '', 'WS.003.2a'); insert into PSlot values ('PS.base.c4', 'PF0_1', '', 'WS.003.2b'); insert into PSlot values ('PS.base.c5', 'PF0_1', '', 'WS.003.3a'); insert into PSlot values ('PS.base.c6', 'PF0_1', '', 'WS.003.3b'); -- -- This patchfield will be renamed later into PF0_2 - so its -- slots references in pfname should follow -- insert into PField values ('PF0_X', 'Phonelines basement'); insert into PSlot values ('PS.base.ta1', 'PF0_X', '', ''); insert into PSlot values ('PS.base.ta2', 'PF0_X', '', ''); insert into PSlot values ('PS.base.ta3', 'PF0_X', '', ''); insert into PSlot values ('PS.base.ta4', 'PF0_X', '', ''); insert into PSlot values ('PS.base.ta5', 'PF0_X', '', ''); insert into PSlot values ('PS.base.ta6', 'PF0_X', '', ''); insert into PSlot values ('PS.base.tb1', 'PF0_X', '', ''); insert into PSlot values ('PS.base.tb2', 'PF0_X', '', ''); insert into PSlot values ('PS.base.tb3', 'PF0_X', '', ''); insert into PSlot values ('PS.base.tb4', 'PF0_X', '', ''); insert into PSlot values ('PS.base.tb5', 'PF0_X', '', ''); insert into PSlot values ('PS.base.tb6', 'PF0_X', '', ''); insert into PField values ('PF1_1', 'Wallslots first floor'); insert into PSlot values ('PS.first.a1', 'PF1_1', '', 'WS.101.1a'); insert into PSlot values ('PS.first.a2', 'PF1_1', '', 'WS.101.1b'); insert into PSlot values ('PS.first.a3', 'PF1_1', '', 'WS.101.2a'); insert into PSlot values ('PS.first.a4', 'PF1_1', '', 'WS.101.2b'); insert into PSlot values ('PS.first.a5', 'PF1_1', '', 'WS.101.3a'); insert into PSlot values ('PS.first.a6', 'PF1_1', '', 'WS.101.3b'); insert into PSlot values ('PS.first.b1', 'PF1_1', '', 'WS.102.1a'); insert into PSlot values ('PS.first.b2', 'PF1_1', '', 'WS.102.1b'); insert into PSlot values ('PS.first.b3', 'PF1_1', '', 'WS.102.2a'); insert into PSlot values ('PS.first.b4', 'PF1_1', '', 'WS.102.2b'); insert into PSlot values ('PS.first.b5', 'PF1_1', '', 'WS.102.3a'); insert into PSlot values ('PS.first.b6', 'PF1_1', '', 'WS.102.3b'); insert into PSlot values ('PS.first.c1', 'PF1_1', '', 'WS.105.1a'); insert into PSlot values ('PS.first.c2', 'PF1_1', '', 'WS.105.1b'); insert into PSlot values ('PS.first.c3', 'PF1_1', '', 'WS.105.2a'); insert into PSlot values ('PS.first.c4', 'PF1_1', '', 'WS.105.2b'); insert into PSlot values ('PS.first.c5', 'PF1_1', '', 'WS.105.3a'); insert into PSlot values ('PS.first.c6', 'PF1_1', '', 'WS.105.3b'); insert into PSlot values ('PS.first.d1', 'PF1_1', '', 'WS.106.1a'); insert into PSlot values ('PS.first.d2', 'PF1_1', '', 'WS.106.1b'); insert into PSlot values ('PS.first.d3', 'PF1_1', '', 'WS.106.2a'); insert into PSlot values ('PS.first.d4', 'PF1_1', '', 'WS.106.2b'); insert into PSlot values ('PS.first.d5', 'PF1_1', '', 'WS.106.3a'); insert into PSlot values ('PS.first.d6', 'PF1_1', '', 'WS.106.3b'); -- -- Now we wire the wall connectors 1a-2a in room 001 to the -- patchfield. In the second update we make an error, and -- correct it after -- update PSlot set backlink = 'WS.001.1a' where slotname = 'PS.base.a1'; update PSlot set backlink = 'WS.001.1b' where slotname = 'PS.base.a3'; select * from WSlot where roomno = '001' order by slotname; select * from PSlot where slotname ~ 'PS.base.a' order by slotname; update PSlot set backlink = 'WS.001.2a' where slotname = 'PS.base.a3'; select * from WSlot where roomno = '001' order by slotname; select * from PSlot where slotname ~ 'PS.base.a' order by slotname; update PSlot set backlink = 'WS.001.1b' where slotname = 'PS.base.a2'; select * from WSlot where roomno = '001' order by slotname; select * from PSlot where slotname ~ 'PS.base.a' order by slotname; -- -- Same procedure for 2b-3b but this time updating the WSlot instead -- of the PSlot. Due to the triggers the result is the same: -- WSlot and corresponding PSlot point to each other. -- update WSlot set backlink = 'PS.base.a4' where slotname = 'WS.001.2b'; update WSlot set backlink = 'PS.base.a6' where slotname = 'WS.001.3a'; select * from WSlot where roomno = '001' order by slotname; select * from PSlot where slotname ~ 'PS.base.a' order by slotname; update WSlot set backlink = 'PS.base.a6' where slotname = 'WS.001.3b'; select * from WSlot where roomno = '001' order by slotname; select * from PSlot where slotname ~ 'PS.base.a' order by slotname; update WSlot set backlink = 'PS.base.a5' where slotname = 'WS.001.3a'; select * from WSlot where roomno = '001' order by slotname; select * from PSlot where slotname ~ 'PS.base.a' order by slotname; insert into PField values ('PF1_2', 'Phonelines first floor'); insert into PSlot values ('PS.first.ta1', 'PF1_2', '', ''); insert into PSlot values ('PS.first.ta2', 'PF1_2', '', ''); insert into PSlot values ('PS.first.ta3', 'PF1_2', '', ''); insert into PSlot values ('PS.first.ta4', 'PF1_2', '', ''); insert into PSlot values ('PS.first.ta5', 'PF1_2', '', ''); insert into PSlot values ('PS.first.ta6', 'PF1_2', '', ''); insert into PSlot values ('PS.first.tb1', 'PF1_2', '', ''); insert into PSlot values ('PS.first.tb2', 'PF1_2', '', ''); insert into PSlot values ('PS.first.tb3', 'PF1_2', '', ''); insert into PSlot values ('PS.first.tb4', 'PF1_2', '', ''); insert into PSlot values ('PS.first.tb5', 'PF1_2', '', ''); insert into PSlot values ('PS.first.tb6', 'PF1_2', '', ''); -- -- Fix the wrong name for patchfield PF0_2 -- update PField set name = 'PF0_2' where name = 'PF0_X'; select * from PSlot order by slotname; select * from WSlot order by slotname; -- -- Install the central phone system and create the phone numbers. -- They are wired on insert to the patchfields. Again the -- triggers automatically tell the PSlots to update their -- backlink field. -- insert into PLine values ('PL.001', '-0', 'Central call', 'PS.base.ta1'); insert into PLine values ('PL.002', '-101', '', 'PS.base.ta2'); insert into PLine values ('PL.003', '-102', '', 'PS.base.ta3'); insert into PLine values ('PL.004', '-103', '', 'PS.base.ta5'); insert into PLine values ('PL.005', '-104', '', 'PS.base.ta6'); insert into PLine values ('PL.006', '-106', '', 'PS.base.tb2'); insert into PLine values ('PL.007', '-108', '', 'PS.base.tb3'); insert into PLine values ('PL.008', '-109', '', 'PS.base.tb4'); insert into PLine values ('PL.009', '-121', '', 'PS.base.tb5'); insert into PLine values ('PL.010', '-122', '', 'PS.base.tb6'); insert into PLine values ('PL.015', '-134', '', 'PS.first.ta1'); insert into PLine values ('PL.016', '-137', '', 'PS.first.ta3'); insert into PLine values ('PL.017', '-139', '', 'PS.first.ta4'); insert into PLine values ('PL.018', '-362', '', 'PS.first.tb1'); insert into PLine values ('PL.019', '-363', '', 'PS.first.tb2'); insert into PLine values ('PL.020', '-364', '', 'PS.first.tb3'); insert into PLine values ('PL.021', '-365', '', 'PS.first.tb5'); insert into PLine values ('PL.022', '-367', '', 'PS.first.tb6'); insert into PLine values ('PL.028', '-501', 'Fax entrance', 'PS.base.ta2'); insert into PLine values ('PL.029', '-502', 'Fax first floor', 'PS.first.ta1'); -- -- Buy some phones, plug them into the wall and patch the -- phone lines to the corresponding patchfield slots. -- insert into PHone values ('PH.hc001', 'Hicom standard', 'WS.001.1a'); update PSlot set slotlink = 'PS.base.ta1' where slotname = 'PS.base.a1'; insert into PHone values ('PH.hc002', 'Hicom standard', 'WS.002.1a'); update PSlot set slotlink = 'PS.base.ta5' where slotname = 'PS.base.b1'; insert into PHone values ('PH.hc003', 'Hicom standard', 'WS.002.2a'); update PSlot set slotlink = 'PS.base.tb2' where slotname = 'PS.base.b3'; insert into PHone values ('PH.fax001', 'Canon fax', 'WS.001.2a'); update PSlot set slotlink = 'PS.base.ta2' where slotname = 'PS.base.a3'; -- -- Install a hub at one of the patchfields, plug a computers -- ethernet interface into the wall and patch it to the hub. -- insert into Hub values ('base.hub1', 'Patchfield PF0_1 hub', 16); insert into System values ('orion', 'PC'); insert into IFace values ('IF', 'orion', 'eth0', 'WS.002.1b'); update PSlot set slotlink = 'HS.base.hub1.1' where slotname = 'PS.base.b2'; -- -- Now we take a look at the patchfield -- select * from PField_v1 where pfname = 'PF0_1' order by slotname; select * from PField_v1 where pfname = 'PF0_2' order by slotname; -- -- Finally we want errors -- insert into PField values ('PF1_1', 'should fail due to unique index'); update PSlot set backlink = 'WS.not.there' where slotname = 'PS.base.a1'; update PSlot set backlink = 'XX.illegal' where slotname = 'PS.base.a1'; update PSlot set slotlink = 'PS.not.there' where slotname = 'PS.base.a1'; update PSlot set slotlink = 'XX.illegal' where slotname = 'PS.base.a1'; insert into HSlot values ('HS', 'base.hub1', 1, ''); insert into HSlot values ('HS', 'base.hub1', 20, ''); delete from HSlot; insert into IFace values ('IF', 'notthere', 'eth0', ''); insert into IFace values ('IF', 'orion', 'ethernet_interface_name_too_long', ''); -- -- The following tests are unrelated to the scenario outlined above; -- they merely exercise specific parts of PL/pgSQL -- -- -- Test recursion, per bug report 7-Sep-01 -- CREATE FUNCTION recursion_test(int,int) RETURNS text AS ' DECLARE rslt text; BEGIN IF $1 <= 0 THEN rslt = CAST($2 AS TEXT); ELSE rslt = CAST($1 AS TEXT) || '','' || recursion_test($1 - 1, $2); END IF; RETURN rslt; END;' LANGUAGE plpgsql; SELECT recursion_test(4,3); -- -- Test the FOUND magic variable -- CREATE TABLE found_test_tbl (a int); create function test_found() returns boolean as ' declare begin insert into found_test_tbl values (1); if FOUND then insert into found_test_tbl values (2); end if; update found_test_tbl set a = 100 where a = 1; if FOUND then insert into found_test_tbl values (3); end if; delete from found_test_tbl where a = 9999; -- matches no rows if not FOUND then insert into found_test_tbl values (4); end if; for i in 1 .. 10 loop -- no need to do anything end loop; if FOUND then insert into found_test_tbl values (5); end if; -- never executes the loop for i in 2 .. 1 loop -- no need to do anything end loop; if not FOUND then insert into found_test_tbl values (6); end if; return true; end;' language plpgsql; select test_found(); select * from found_test_tbl; -- -- Test set-returning functions for PL/pgSQL -- create function test_table_func_rec() returns setof found_test_tbl as ' DECLARE rec RECORD; BEGIN FOR rec IN select * from found_test_tbl LOOP RETURN NEXT rec; END LOOP; RETURN; END;' language plpgsql; select * from test_table_func_rec(); create function test_table_func_row() returns setof found_test_tbl as ' DECLARE row found_test_tbl%ROWTYPE; BEGIN FOR row IN select * from found_test_tbl LOOP RETURN NEXT row; END LOOP; RETURN; END;' language plpgsql; select * from test_table_func_row(); create function test_ret_set_scalar(int,int) returns setof int as ' DECLARE i int; BEGIN FOR i IN $1 .. $2 LOOP RETURN NEXT i + 1; END LOOP; RETURN; END;' language plpgsql; select * from test_ret_set_scalar(1,10); create function test_ret_set_rec_dyn(int) returns setof record as ' DECLARE retval RECORD; BEGIN IF $1 > 10 THEN SELECT INTO retval 5, 10, 15; RETURN NEXT retval; RETURN NEXT retval; ELSE SELECT INTO retval 50, 5::numeric, ''xxx''::text; RETURN NEXT retval; RETURN NEXT retval; END IF; RETURN; END;' language plpgsql; SELECT * FROM test_ret_set_rec_dyn(1500) AS (a int, b int, c int); SELECT * FROM test_ret_set_rec_dyn(5) AS (a int, b numeric, c text); create function test_ret_rec_dyn(int) returns record as ' DECLARE retval RECORD; BEGIN IF $1 > 10 THEN SELECT INTO retval 5, 10, 15; RETURN retval; ELSE SELECT INTO retval 50, 5::numeric, ''xxx''::text; RETURN retval; END IF; END;' language plpgsql; SELECT * FROM test_ret_rec_dyn(1500) AS (a int, b int, c int); SELECT * FROM test_ret_rec_dyn(5) AS (a int, b numeric, c text); -- -- Test some simple polymorphism cases. -- create function f1(x anyelement) returns anyelement as $$ begin return x + 1; end$$ language plpgsql; select f1(42) as int, f1(4.5) as num; select f1(point(3,4)); -- fail for lack of + operator drop function f1(x anyelement); create function f1(x anyelement) returns anyarray as $$ begin return array[x + 1, x + 2]; end$$ language plpgsql; select f1(42) as int, f1(4.5) as num; drop function f1(x anyelement); create function f1(x anyarray) returns anyelement as $$ begin return x[1]; end$$ language plpgsql; select f1(array[2,4]) as int, f1(array[4.5, 7.7]) as num; select f1(stavalues1) from pg_statistic; -- fail, can't infer element type drop function f1(x anyarray); create function f1(x anyarray) returns anyarray as $$ begin return x; end$$ language plpgsql; select f1(array[2,4]) as int, f1(array[4.5, 7.7]) as num; select f1(stavalues1) from pg_statistic; -- fail, can't infer element type drop function f1(x anyarray); -- fail, can't infer type: create function f1(x anyelement) returns anyrange as $$ begin return array[x + 1, x + 2]; end$$ language plpgsql; create function f1(x anyrange) returns anyarray as $$ begin return array[lower(x), upper(x)]; end$$ language plpgsql; select f1(int4range(42, 49)) as int, f1(float8range(4.5, 7.8)) as num; drop function f1(x anyrange); create function f1(x anycompatible, y anycompatible) returns anycompatiblearray as $$ begin return array[x, y]; end$$ language plpgsql; select f1(2, 4) as int, f1(2, 4.5) as num; drop function f1(x anycompatible, y anycompatible); create function f1(x anycompatiblerange, y anycompatible, z anycompatible) returns anycompatiblearray as $$ begin return array[lower(x), upper(x), y, z]; end$$ language plpgsql; select f1(int4range(42, 49), 11, 2::smallint) as int, f1(float8range(4.5, 7.8), 7.8, 11::real) as num; select f1(int4range(42, 49), 11, 4.5) as fail; -- range type doesn't fit drop function f1(x anycompatiblerange, y anycompatible, z anycompatible); -- fail, can't infer type: create function f1(x anycompatible) returns anycompatiblerange as $$ begin return array[x + 1, x + 2]; end$$ language plpgsql; create function f1(x anycompatiblerange, y anycompatiblearray) returns anycompatiblerange as $$ begin return x; end$$ language plpgsql; select f1(int4range(42, 49), array[11]) as int, f1(float8range(4.5, 7.8), array[7]) as num; drop function f1(x anycompatiblerange, y anycompatiblearray); create function f1(a anyelement, b anyarray, c anycompatible, d anycompatible, OUT x anyarray, OUT y anycompatiblearray) as $$ begin x := a || b; y := array[c, d]; end$$ language plpgsql; select x, pg_typeof(x), y, pg_typeof(y) from f1(11, array[1, 2], 42, 34.5); select x, pg_typeof(x), y, pg_typeof(y) from f1(11, array[1, 2], point(1,2), point(3,4)); select x, pg_typeof(x), y, pg_typeof(y) from f1(11, '{1,2}', point(1,2), '(3,4)'); select x, pg_typeof(x), y, pg_typeof(y) from f1(11, array[1, 2.2], 42, 34.5); -- fail drop function f1(a anyelement, b anyarray, c anycompatible, d anycompatible); -- -- Test handling of OUT parameters, including polymorphic cases. -- Note that RETURN is optional with OUT params; we try both ways. -- -- wrong way to do it: create function f1(in i int, out j int) returns int as $$ begin return i+1; end$$ language plpgsql; create function f1(in i int, out j int) as $$ begin j := i+1; return; end$$ language plpgsql; select f1(42); select * from f1(42); create or replace function f1(inout i int) as $$ begin i := i+1; end$$ language plpgsql; select f1(42); select * from f1(42); drop function f1(int); create function f1(in i int, out j int) returns setof int as $$ begin j := i+1; return next; j := i+2; return next; return; end$$ language plpgsql; select * from f1(42); drop function f1(int); create function f1(in i int, out j int, out k text) as $$ begin j := i; j := j+1; k := 'foo'; end$$ language plpgsql; select f1(42); select * from f1(42); drop function f1(int); create function f1(in i int, out j int, out k text) returns setof record as $$ begin j := i+1; k := 'foo'; return next; j := j+1; k := 'foot'; return next; end$$ language plpgsql; select * from f1(42); drop function f1(int); create function duplic(in i anyelement, out j anyelement, out k anyarray) as $$ begin j := i; k := array[j,j]; return; end$$ language plpgsql; select * from duplic(42); select * from duplic('foo'::text); drop function duplic(anyelement); create function duplic(in i anycompatiblerange, out j anycompatible, out k anycompatiblearray) as $$ begin j := lower(i); k := array[lower(i),upper(i)]; return; end$$ language plpgsql; select * from duplic(int4range(42,49)); select * from duplic(textrange('aaa', 'bbb')); drop function duplic(anycompatiblerange); -- -- test PERFORM -- create table perform_test ( a INT, b INT ); create function perform_simple_func(int) returns boolean as ' BEGIN IF $1 < 20 THEN INSERT INTO perform_test VALUES ($1, $1 + 10); RETURN TRUE; ELSE RETURN FALSE; END IF; END;' language plpgsql; create function perform_test_func() returns void as ' BEGIN IF FOUND then INSERT INTO perform_test VALUES (100, 100); END IF; PERFORM perform_simple_func(5); IF FOUND then INSERT INTO perform_test VALUES (100, 100); END IF; PERFORM perform_simple_func(50); IF FOUND then INSERT INTO perform_test VALUES (100, 100); END IF; RETURN; END;' language plpgsql; SELECT perform_test_func(); SELECT * FROM perform_test; drop table perform_test; -- -- Test proper snapshot handling in simple expressions -- create temp table users(login text, id serial); create function sp_id_user(a_login text) returns int as $$ declare x int; begin select into x id from users where login = a_login; if found then return x; end if; return 0; end$$ language plpgsql stable; insert into users values('user1'); select sp_id_user('user1'); select sp_id_user('userx'); create function sp_add_user(a_login text) returns int as $$ declare my_id_user int; begin my_id_user = sp_id_user( a_login ); IF my_id_user > 0 THEN RETURN -1; -- error code for existing user END IF; INSERT INTO users ( login ) VALUES ( a_login ); my_id_user = sp_id_user( a_login ); IF my_id_user = 0 THEN RETURN -2; -- error code for insertion failure END IF; RETURN my_id_user; end$$ language plpgsql; select sp_add_user('user1'); select sp_add_user('user2'); select sp_add_user('user2'); select sp_add_user('user3'); select sp_add_user('user3'); drop function sp_add_user(text); drop function sp_id_user(text); -- -- tests for refcursors -- create table rc_test (a int, b int); copy rc_test from stdin; 5 10 50 100 500 1000 \. create function return_unnamed_refcursor() returns refcursor as $$ declare rc refcursor; begin open rc for select a from rc_test; return rc; end $$ language plpgsql; create function use_refcursor(rc refcursor) returns int as $$ declare rc refcursor; x record; begin rc := return_unnamed_refcursor(); fetch next from rc into x; return x.a; end $$ language plpgsql; select use_refcursor(return_unnamed_refcursor()); create function return_refcursor(rc refcursor) returns refcursor as $$ begin open rc for select a from rc_test; return rc; end $$ language plpgsql; create function refcursor_test1(refcursor) returns refcursor as $$ begin perform return_refcursor($1); return $1; end $$ language plpgsql; begin; select refcursor_test1('test1'); fetch next in test1; select refcursor_test1('test2'); fetch all from test2; commit; -- should fail fetch next from test1; create function refcursor_test2(int, int) returns boolean as $$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; nonsense record; begin open c1($1, $2); fetch c1 into nonsense; close c1; if found then return true; else return false; end if; end $$ language plpgsql; select refcursor_test2(20000, 20000) as "Should be false", refcursor_test2(20, 20) as "Should be true"; -- -- tests for cursors with named parameter arguments -- create function namedparmcursor_test1(int, int) returns boolean as $$ declare c1 cursor (param1 int, param12 int) for select * from rc_test where a > param1 and b > param12; nonsense record; begin open c1(param12 := $2, param1 := $1); fetch c1 into nonsense; close c1; if found then return true; else return false; end if; end $$ language plpgsql; select namedparmcursor_test1(20000, 20000) as "Should be false", namedparmcursor_test1(20, 20) as "Should be true"; -- mixing named and positional argument notations create function namedparmcursor_test2(int, int) returns boolean as $$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; nonsense record; begin open c1(param1 := $1, $2); fetch c1 into nonsense; close c1; if found then return true; else return false; end if; end $$ language plpgsql; select namedparmcursor_test2(20, 20); -- mixing named and positional: param2 is given twice, once in named notation -- and second time in positional notation. Should throw an error at parse time create function namedparmcursor_test3() returns void as $$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; begin open c1(param2 := 20, 21); end $$ language plpgsql; -- mixing named and positional: same as previous test, but param1 is duplicated create function namedparmcursor_test4() returns void as $$ declare c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; begin open c1(20, param1 := 21); end $$ language plpgsql; -- duplicate named parameter, should throw an error at parse time create function namedparmcursor_test5() returns void as $$ declare c1 cursor (p1 int, p2 int) for select * from tenk1 where thousand = p1 and tenthous = p2; begin open c1 (p2 := 77, p2 := 42); end $$ language plpgsql; -- not enough parameters, should throw an error at parse time create function namedparmcursor_test6() returns void as $$ declare c1 cursor (p1 int, p2 int) for select * from tenk1 where thousand = p1 and tenthous = p2; begin open c1 (p2 := 77); end $$ language plpgsql; -- division by zero runtime error, the context given in the error message -- should be sensible create function namedparmcursor_test7() returns void as $$ declare c1 cursor (p1 int, p2 int) for select * from tenk1 where thousand = p1 and tenthous = p2; begin open c1 (p2 := 77, p1 := 42/0); end $$ language plpgsql; select namedparmcursor_test7(); -- check that line comments work correctly within the argument list (there -- is some special handling of this case in the code: the newline after the -- comment must be preserved when the argument-evaluating query is -- constructed, otherwise the comment effectively comments out the next -- argument, too) create function namedparmcursor_test8() returns int4 as $$ declare c1 cursor (p1 int, p2 int) for select count(*) from tenk1 where thousand = p1 and tenthous = p2; n int4; begin open c1 (77 -- test , 42); fetch c1 into n; return n; end $$ language plpgsql; select namedparmcursor_test8(); -- cursor parameter name can match plpgsql variable or unreserved keyword create function namedparmcursor_test9(p1 int) returns int4 as $$ declare c1 cursor (p1 int, p2 int, debug int) for select count(*) from tenk1 where thousand = p1 and tenthous = p2 and four = debug; p2 int4 := 1006; n int4; begin open c1 (p1 := p1, p2 := p2, debug := 2); fetch c1 into n; return n; end $$ language plpgsql; select namedparmcursor_test9(6); -- -- tests for "raise" processing -- create function raise_test1(int) returns int as $$ begin raise notice 'This message has too many parameters!', $1; return $1; end; $$ language plpgsql; create function raise_test2(int) returns int as $$ begin raise notice 'This message has too few parameters: %, %, %', $1, $1; return $1; end; $$ language plpgsql; create function raise_test3(int) returns int as $$ begin raise notice 'This message has no parameters (despite having %% signs in it)!'; return $1; end; $$ language plpgsql; select raise_test3(1); -- Test re-RAISE inside a nested exception block. This case is allowed -- by Oracle's PL/SQL but was handled differently by PG before 9.1. CREATE FUNCTION reraise_test() RETURNS void AS $$ BEGIN BEGIN RAISE syntax_error; EXCEPTION WHEN syntax_error THEN BEGIN raise notice 'exception % thrown in inner block, reraising', sqlerrm; RAISE; EXCEPTION WHEN OTHERS THEN raise notice 'RIGHT - exception % caught in inner block', sqlerrm; END; END; EXCEPTION WHEN OTHERS THEN raise notice 'WRONG - exception % caught in outer block', sqlerrm; END; $$ LANGUAGE plpgsql; SELECT reraise_test(); -- -- reject function definitions that contain malformed SQL queries at -- compile-time, where possible -- create function bad_sql1() returns int as $$ declare a int; begin a := 5; Johnny Yuma; a := 10; return a; end$$ language plpgsql; create function bad_sql2() returns int as $$ declare r record; begin for r in select I fought the law, the law won LOOP raise notice 'in loop'; end loop; return 5; end;$$ language plpgsql; -- a RETURN expression is mandatory, except for void-returning -- functions, where it is not allowed create function missing_return_expr() returns int as $$ begin return ; end;$$ language plpgsql; create function void_return_expr() returns void as $$ begin return 5; end;$$ language plpgsql; -- VOID functions are allowed to omit RETURN create function void_return_expr() returns void as $$ begin perform 2+2; end;$$ language plpgsql; select void_return_expr(); -- but ordinary functions are not create function missing_return_expr() returns int as $$ begin perform 2+2; end;$$ language plpgsql; select missing_return_expr(); drop function void_return_expr(); drop function missing_return_expr(); -- -- EXECUTE ... INTO test -- create table eifoo (i integer, y integer); create type eitype as (i integer, y integer); create or replace function execute_into_test(varchar) returns record as $$ declare _r record; _rt eifoo%rowtype; _v eitype; i int; j int; k int; begin execute 'insert into '||$1||' values(10,15)'; execute 'select (row).* from (select row(10,1)::eifoo) s' into _r; raise notice '% %', _r.i, _r.y; execute 'select * from '||$1||' limit 1' into _rt; raise notice '% %', _rt.i, _rt.y; execute 'select *, 20 from '||$1||' limit 1' into i, j, k; raise notice '% % %', i, j, k; execute 'select 1,2' into _v; return _v; end; $$ language plpgsql; select execute_into_test('eifoo'); drop table eifoo cascade; drop type eitype cascade; -- -- SQLSTATE and SQLERRM test -- create function excpt_test1() returns void as $$ begin raise notice '% %', sqlstate, sqlerrm; end; $$ language plpgsql; -- should fail: SQLSTATE and SQLERRM are only in defined EXCEPTION -- blocks select excpt_test1(); create function excpt_test2() returns void as $$ begin begin begin raise notice '% %', sqlstate, sqlerrm; end; end; end; $$ language plpgsql; -- should fail select excpt_test2(); create function excpt_test3() returns void as $$ begin begin raise exception 'user exception'; exception when others then raise notice 'caught exception % %', sqlstate, sqlerrm; begin raise notice '% %', sqlstate, sqlerrm; perform 10/0; exception when substring_error then -- this exception handler shouldn't be invoked raise notice 'unexpected exception: % %', sqlstate, sqlerrm; when division_by_zero then raise notice 'caught exception % %', sqlstate, sqlerrm; end; raise notice '% %', sqlstate, sqlerrm; end; end; $$ language plpgsql; select excpt_test3(); create function excpt_test4() returns text as $$ begin begin perform 1/0; exception when others then return sqlerrm; end; end; $$ language plpgsql; select excpt_test4(); drop function excpt_test1(); drop function excpt_test2(); drop function excpt_test3(); drop function excpt_test4(); -- parameters of raise stmt can be expressions create function raise_exprs() returns void as $$ declare a integer[] = '{10,20,30}'; c varchar = 'xyz'; i integer; begin i := 2; raise notice '%; %; %; %; %; %', a, a[i], c, (select c || 'abc'), row(10,'aaa',NULL,30), NULL; end;$$ language plpgsql; select raise_exprs(); drop function raise_exprs(); -- regression test: verify that multiple uses of same plpgsql datum within -- a SQL command all get mapped to the same $n parameter. The return value -- of the SELECT is not important, we only care that it doesn't fail with -- a complaint about an ungrouped column reference. create function multi_datum_use(p1 int) returns bool as $$ declare x int; y int; begin select into x,y unique1/p1, unique1/$1 from tenk1 group by unique1/p1; return x = y; end$$ language plpgsql; select multi_datum_use(42); -- -- Test STRICT limiter in both planned and EXECUTE invocations. -- Note that a data-modifying query is quasi strict (disallow multi rows) -- by default in the planned case, but not in EXECUTE. -- create temp table foo (f1 int, f2 int); insert into foo values (1,2), (3,4); create or replace function stricttest() returns void as $$ declare x record; begin -- should work insert into foo values(5,6) returning * into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- should fail due to implicit strict insert into foo values(7,8),(9,10) returning * into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- should work execute 'insert into foo values(5,6) returning *' into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- this should work since EXECUTE isn't as picky execute 'insert into foo values(7,8),(9,10) returning *' into x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); select * from foo; create or replace function stricttest() returns void as $$ declare x record; begin -- should work select * from foo where f1 = 3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- should fail, no rows select * from foo where f1 = 0 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- should fail, too many rows select * from foo where f1 > 3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- should work execute 'select * from foo where f1 = 3' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- should fail, no rows execute 'select * from foo where f1 = 0' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- should fail, too many rows execute 'select * from foo where f1 > 3' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); drop function stricttest(); -- test printing parameters after failure due to STRICT set plpgsql.print_strict_params to true; create or replace function stricttest() returns void as $$ declare x record; p1 int := 2; p3 text := 'foo'; begin -- no rows select * from foo where f1 = p1 and f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; p1 int := 2; p3 text := $a$'Valame Dios!' dijo Sancho; 'no le dije yo a vuestra merced que mirase bien lo que hacia?'$a$; begin -- no rows select * from foo where f1 = p1 and f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; p1 int := 2; p3 text := 'foo'; begin -- too many rows select * from foo where f1 > p1 or f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- too many rows, no params select * from foo where f1 > 3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- no rows execute 'select * from foo where f1 = $1 or f1::text = $2' using 0, 'foo' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- too many rows execute 'select * from foo where f1 > $1' using 1 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ declare x record; begin -- too many rows, no parameters execute 'select * from foo where f1 > 3' into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); create or replace function stricttest() returns void as $$ -- override the global #print_strict_params off declare x record; p1 int := 2; p3 text := 'foo'; begin -- too many rows select * from foo where f1 > p1 or f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); reset plpgsql.print_strict_params; create or replace function stricttest() returns void as $$ -- override the global #print_strict_params on declare x record; p1 int := 2; p3 text := 'foo'; begin -- too many rows select * from foo where f1 > p1 or f1::text = p3 into strict x; raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; end$$ language plpgsql; select stricttest(); -- test warnings and errors set plpgsql.extra_warnings to 'all'; set plpgsql.extra_warnings to 'none'; set plpgsql.extra_errors to 'all'; set plpgsql.extra_errors to 'none'; -- test warnings when shadowing a variable set plpgsql.extra_warnings to 'shadowed_variables'; -- simple shadowing of input and output parameters create or replace function shadowtest(in1 int) returns table (out1 int) as $$ declare in1 int; out1 int; begin end $$ language plpgsql; select shadowtest(1); set plpgsql.extra_warnings to 'shadowed_variables'; select shadowtest(1); create or replace function shadowtest(in1 int) returns table (out1 int) as $$ declare in1 int; out1 int; begin end $$ language plpgsql; select shadowtest(1); drop function shadowtest(int); -- shadowing in a second DECLARE block create or replace function shadowtest() returns void as $$ declare f1 int; begin declare f1 int; begin end; end$$ language plpgsql; drop function shadowtest(); -- several levels of shadowing create or replace function shadowtest(in1 int) returns void as $$ declare in1 int; begin declare in1 int; begin end; end$$ language plpgsql; drop function shadowtest(int); -- shadowing in cursor definitions create or replace function shadowtest() returns void as $$ declare f1 int; c1 cursor (f1 int) for select 1; begin end$$ language plpgsql; drop function shadowtest(); -- test errors when shadowing a variable set plpgsql.extra_errors to 'shadowed_variables'; create or replace function shadowtest(f1 int) returns boolean as $$ declare f1 int; begin return 1; end $$ language plpgsql; select shadowtest(1); reset plpgsql.extra_errors; reset plpgsql.extra_warnings; create or replace function shadowtest(f1 int) returns boolean as $$ declare f1 int; begin return 1; end $$ language plpgsql; select shadowtest(1); -- runtime extra checks set plpgsql.extra_warnings to 'too_many_rows'; do $$ declare x int; begin select v from generate_series(1,2) g(v) into x; end; $$; set plpgsql.extra_errors to 'too_many_rows'; do $$ declare x int; begin select v from generate_series(1,2) g(v) into x; end; $$; reset plpgsql.extra_errors; reset plpgsql.extra_warnings; set plpgsql.extra_warnings to 'strict_multi_assignment'; do $$ declare x int; y int; begin select 1 into x, y; select 1,2 into x, y; select 1,2,3 into x, y; end $$; set plpgsql.extra_errors to 'strict_multi_assignment'; do $$ declare x int; y int; begin select 1 into x, y; select 1,2 into x, y; select 1,2,3 into x, y; end $$; create table test_01(a int, b int, c int); alter table test_01 drop column a; -- the check is active only when source table is not empty insert into test_01 values(10,20); do $$ declare x int; y int; begin select * from test_01 into x, y; -- should be ok raise notice 'ok'; select * from test_01 into x; -- should to fail end; $$; do $$ declare t test_01; begin select 1, 2 into t; -- should be ok raise notice 'ok'; select 1, 2, 3 into t; -- should fail; end; $$; do $$ declare t test_01; begin select 1 into t; -- should fail; end; $$; drop table test_01; reset plpgsql.extra_errors; reset plpgsql.extra_warnings; -- test scrollable cursor support create function sc_test() returns setof integer as $$ declare c scroll cursor for select f1 from int4_tbl; x integer; begin open c; fetch last from c into x; while found loop return next x; fetch prior from c into x; end loop; close c; end; $$ language plpgsql; select * from sc_test(); create or replace function sc_test() returns setof integer as $$ declare c no scroll cursor for select f1 from int4_tbl; x integer; begin open c; fetch last from c into x; while found loop return next x; fetch prior from c into x; end loop; close c; end; $$ language plpgsql; select * from sc_test(); -- fails because of NO SCROLL specification create or replace function sc_test() returns setof integer as $$ declare c refcursor; x integer; begin open c scroll for select f1 from int4_tbl; fetch last from c into x; while found loop return next x; fetch prior from c into x; end loop; close c; end; $$ language plpgsql; select * from sc_test(); create or replace function sc_test() returns setof integer as $$ declare c refcursor; x integer; begin open c scroll for execute 'select f1 from int4_tbl'; fetch last from c into x; while found loop return next x; fetch relative -2 from c into x; end loop; close c; end; $$ language plpgsql; select * from sc_test(); create or replace function sc_test() returns setof integer as $$ declare c refcursor; x integer; begin open c scroll for execute 'select f1 from int4_tbl'; fetch last from c into x; while found loop return next x; move backward 2 from c; fetch relative -1 from c into x; end loop; close c; end; $$ language plpgsql; select * from sc_test(); create or replace function sc_test() returns setof integer as $$ declare c cursor for select * from generate_series(1, 10); x integer; begin open c; loop move relative 2 in c; if not found then exit; end if; fetch next from c into x; if found then return next x; end if; end loop; close c; end; $$ language plpgsql; select * from sc_test(); create or replace function sc_test() returns setof integer as $$ declare c cursor for select * from generate_series(1, 10); x integer; begin open c; move forward all in c; fetch backward from c into x; if found then return next x; end if; close c; end; $$ language plpgsql; select * from sc_test(); drop function sc_test(); -- test qualified variable names create function pl_qual_names (param1 int) returns void as $$ <> declare param1 int := 1; begin <> declare param1 int := 2; begin raise notice 'param1 = %', param1; raise notice 'pl_qual_names.param1 = %', pl_qual_names.param1; raise notice 'outerblock.param1 = %', outerblock.param1; raise notice 'innerblock.param1 = %', innerblock.param1; end; end; $$ language plpgsql; select pl_qual_names(42); drop function pl_qual_names(int); -- tests for RETURN QUERY create function ret_query1(out int, out int) returns setof record as $$ begin $1 := -1; $2 := -2; return next; return query select x + 1, x * 10 from generate_series(0, 10) s (x); return next; end; $$ language plpgsql; select * from ret_query1(); create type record_type as (x text, y int, z boolean); create or replace function ret_query2(lim int) returns setof record_type as $$ begin return query select md5(s.x::text), s.x, s.x > 0 from generate_series(-8, lim) s (x) where s.x % 2 = 0; end; $$ language plpgsql; select * from ret_query2(8); -- test EXECUTE USING create function exc_using(int, text) returns int as $$ declare i int; begin for i in execute 'select * from generate_series(1,$1)' using $1+1 loop raise notice '%', i; end loop; execute 'select $2 + $2*3 + length($1)' into i using $2,$1; return i; end $$ language plpgsql; select exc_using(5, 'foobar'); drop function exc_using(int, text); create or replace function exc_using(int) returns void as $$ declare c refcursor; i int; begin open c for execute 'select * from generate_series(1,$1)' using $1+1; loop fetch c into i; exit when not found; raise notice '%', i; end loop; close c; return; end; $$ language plpgsql; select exc_using(5); drop function exc_using(int); -- test FOR-over-cursor create or replace function forc01() returns void as $$ declare c cursor(r1 integer, r2 integer) for select * from generate_series(r1,r2) i; c2 cursor for select * from generate_series(41,43) i; begin for r in c(5,7) loop raise notice '% from %', r.i, c; end loop; -- again, to test if cursor was closed properly for r in c(9,10) loop raise notice '% from %', r.i, c; end loop; -- and test a parameterless cursor for r in c2 loop raise notice '% from %', r.i, c2; end loop; -- and try it with a hand-assigned name raise notice 'after loop, c2 = %', c2; c2 := 'special_name'; for r in c2 loop raise notice '% from %', r.i, c2; end loop; raise notice 'after loop, c2 = %', c2; -- and try it with a generated name -- (which we can't show in the output because it's variable) c2 := null; for r in c2 loop raise notice '%', r.i; end loop; raise notice 'after loop, c2 = %', c2; return; end; $$ language plpgsql; select forc01(); -- try updating the cursor's current row create temp table forc_test as select n as i, n as j from generate_series(1,10) n; create or replace function forc01() returns void as $$ declare c cursor for select * from forc_test; begin for r in c loop raise notice '%, %', r.i, r.j; update forc_test set i = i * 100, j = r.j * 2 where current of c; end loop; end; $$ language plpgsql; select forc01(); select * from forc_test; -- same, with a cursor whose portal name doesn't match variable name create or replace function forc01() returns void as $$ declare c refcursor := 'fooled_ya'; r record; begin open c for select * from forc_test; loop fetch c into r; exit when not found; raise notice '%, %', r.i, r.j; update forc_test set i = i * 100, j = r.j * 2 where current of c; end loop; end; $$ language plpgsql; select forc01(); select * from forc_test; drop function forc01(); -- fail because cursor has no query bound to it create or replace function forc_bad() returns void as $$ declare c refcursor; begin for r in c loop raise notice '%', r.i; end loop; end; $$ language plpgsql; -- test RETURN QUERY EXECUTE create or replace function return_dquery() returns setof int as $$ begin return query execute 'select * from (values(10),(20)) f'; return query execute 'select * from (values($1),($2)) f' using 40,50; end; $$ language plpgsql; select * from return_dquery(); drop function return_dquery(); -- test RETURN QUERY with dropped columns create table tabwithcols(a int, b int, c int, d int); insert into tabwithcols values(10,20,30,40),(50,60,70,80); create or replace function returnqueryf() returns setof tabwithcols as $$ begin return query select * from tabwithcols; return query execute 'select * from tabwithcols'; end; $$ language plpgsql; select * from returnqueryf(); alter table tabwithcols drop column b; select * from returnqueryf(); alter table tabwithcols drop column d; select * from returnqueryf(); alter table tabwithcols add column d int; select * from returnqueryf(); drop function returnqueryf(); drop table tabwithcols; -- -- Tests for composite-type results -- create type compostype as (x int, y varchar); -- test: use of variable of composite type in return statement create or replace function compos() returns compostype as $$ declare v compostype; begin v := (1, 'hello'); return v; end; $$ language plpgsql; select compos(); -- test: use of variable of record type in return statement create or replace function compos() returns compostype as $$ declare v record; begin v := (1, 'hello'::varchar); return v; end; $$ language plpgsql; select compos(); -- test: use of row expr in return statement create or replace function compos() returns compostype as $$ begin return (1, 'hello'::varchar); end; $$ language plpgsql; select compos(); -- this does not work currently (no implicit casting) create or replace function compos() returns compostype as $$ begin return (1, 'hello'); end; $$ language plpgsql; select compos(); -- ... but this does create or replace function compos() returns compostype as $$ begin return (1, 'hello')::compostype; end; $$ language plpgsql; select compos(); drop function compos(); -- test: return a row expr as record. create or replace function composrec() returns record as $$ declare v record; begin v := (1, 'hello'); return v; end; $$ language plpgsql; select composrec(); -- test: return row expr in return statement. create or replace function composrec() returns record as $$ begin return (1, 'hello'); end; $$ language plpgsql; select composrec(); drop function composrec(); -- test: row expr in RETURN NEXT statement. create or replace function compos() returns setof compostype as $$ begin for i in 1..3 loop return next (1, 'hello'::varchar); end loop; return next null::compostype; return next (2, 'goodbye')::compostype; end; $$ language plpgsql; select * from compos(); drop function compos(); -- test: use invalid expr in return statement. create or replace function compos() returns compostype as $$ begin return 1 + 1; end; $$ language plpgsql; select compos(); -- RETURN variable is a different code path ... create or replace function compos() returns compostype as $$ declare x int := 42; begin return x; end; $$ language plpgsql; select * from compos(); drop function compos(); -- test: invalid use of composite variable in scalar-returning function create or replace function compos() returns int as $$ declare v compostype; begin v := (1, 'hello'); return v; end; $$ language plpgsql; select compos(); -- test: invalid use of composite expression in scalar-returning function create or replace function compos() returns int as $$ begin return (1, 'hello')::compostype; end; $$ language plpgsql; select compos(); drop function compos(); drop type compostype; -- -- Tests for 8.4's new RAISE features -- create or replace function raise_test() returns void as $$ begin raise notice '% % %', 1, 2, 3 using errcode = '55001', detail = 'some detail info', hint = 'some hint'; raise '% % %', 1, 2, 3 using errcode = 'division_by_zero', detail = 'some detail info'; end; $$ language plpgsql; select raise_test(); -- Since we can't actually see the thrown SQLSTATE in default psql output, -- test it like this; this also tests re-RAISE create or replace function raise_test() returns void as $$ begin raise 'check me' using errcode = 'division_by_zero', detail = 'some detail info'; exception when others then raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; $$ language plpgsql; select raise_test(); create or replace function raise_test() returns void as $$ begin raise 'check me' using errcode = '1234F', detail = 'some detail info'; exception when others then raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; $$ language plpgsql; select raise_test(); -- SQLSTATE specification in WHEN create or replace function raise_test() returns void as $$ begin raise 'check me' using errcode = '1234F', detail = 'some detail info'; exception when sqlstate '1234F' then raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; $$ language plpgsql; select raise_test(); create or replace function raise_test() returns void as $$ begin raise division_by_zero using detail = 'some detail info'; exception when others then raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; raise; end; $$ language plpgsql; select raise_test(); create or replace function raise_test() returns void as $$ begin raise division_by_zero; end; $$ language plpgsql; select raise_test(); create or replace function raise_test() returns void as $$ begin raise sqlstate '1234F'; end; $$ language plpgsql; select raise_test(); create or replace function raise_test() returns void as $$ begin raise division_by_zero using message = 'custom' || ' message'; end; $$ language plpgsql; select raise_test(); create or replace function raise_test() returns void as $$ begin raise using message = 'custom' || ' message', errcode = '22012'; end; $$ language plpgsql; select raise_test(); -- conflict on message create or replace function raise_test() returns void as $$ begin raise notice 'some message' using message = 'custom' || ' message', errcode = '22012'; end; $$ language plpgsql; select raise_test(); -- conflict on errcode create or replace function raise_test() returns void as $$ begin raise division_by_zero using message = 'custom' || ' message', errcode = '22012'; end; $$ language plpgsql; select raise_test(); -- nothing to re-RAISE create or replace function raise_test() returns void as $$ begin raise; end; $$ language plpgsql; select raise_test(); -- test access to exception data create function zero_divide() returns int as $$ declare v int := 0; begin return 10 / v; end; $$ language plpgsql; create or replace function raise_test() returns void as $$ begin raise exception 'custom exception' using detail = 'some detail of custom exception', hint = 'some hint related to custom exception'; end; $$ language plpgsql; create function stacked_diagnostics_test() returns void as $$ declare _sqlstate text; _message text; _context text; begin perform zero_divide(); exception when others then get stacked diagnostics _sqlstate = returned_sqlstate, _message = message_text, _context = pg_exception_context; raise notice 'sqlstate: %, message: %, context: [%]', _sqlstate, _message, replace(_context, E'\n', ' <- '); end; $$ language plpgsql; select stacked_diagnostics_test(); create or replace function stacked_diagnostics_test() returns void as $$ declare _detail text; _hint text; _message text; begin perform raise_test(); exception when others then get stacked diagnostics _message = message_text, _detail = pg_exception_detail, _hint = pg_exception_hint; raise notice 'message: %, detail: %, hint: %', _message, _detail, _hint; end; $$ language plpgsql; select stacked_diagnostics_test(); -- fail, cannot use stacked diagnostics statement outside handler create or replace function stacked_diagnostics_test() returns void as $$ declare _detail text; _hint text; _message text; begin get stacked diagnostics _message = message_text, _detail = pg_exception_detail, _hint = pg_exception_hint; raise notice 'message: %, detail: %, hint: %', _message, _detail, _hint; end; $$ language plpgsql; select stacked_diagnostics_test(); drop function zero_divide(); drop function stacked_diagnostics_test(); -- check cases where implicit SQLSTATE variable could be confused with -- SQLSTATE as a keyword, cf bug #5524 create or replace function raise_test() returns void as $$ begin perform 1/0; exception when sqlstate '22012' then raise notice using message = sqlstate; raise sqlstate '22012' using message = 'substitute message'; end; $$ language plpgsql; select raise_test(); drop function raise_test(); -- test passing column_name, constraint_name, datatype_name, table_name -- and schema_name error fields create or replace function stacked_diagnostics_test() returns void as $$ declare _column_name text; _constraint_name text; _datatype_name text; _table_name text; _schema_name text; begin raise exception using column = '>>some column name<<', constraint = '>>some constraint name<<', datatype = '>>some datatype name<<', table = '>>some table name<<', schema = '>>some schema name<<'; exception when others then get stacked diagnostics _column_name = column_name, _constraint_name = constraint_name, _datatype_name = pg_datatype_name, _table_name = table_name, _schema_name = schema_name; raise notice 'column %, constraint %, type %, table %, schema %', _column_name, _constraint_name, _datatype_name, _table_name, _schema_name; end; $$ language plpgsql; select stacked_diagnostics_test(); drop function stacked_diagnostics_test(); -- test variadic functions create or replace function vari(variadic int[]) returns void as $$ begin for i in array_lower($1,1)..array_upper($1,1) loop raise notice '%', $1[i]; end loop; end; $$ language plpgsql; select vari(1,2,3,4,5); select vari(3,4,5); select vari(variadic array[5,6,7]); drop function vari(int[]); -- coercion test create or replace function pleast(variadic numeric[]) returns numeric as $$ declare aux numeric = $1[array_lower($1,1)]; begin for i in array_lower($1,1)+1..array_upper($1,1) loop if $1[i] < aux then aux := $1[i]; end if; end loop; return aux; end; $$ language plpgsql immutable strict; select pleast(10,1,2,3,-16); select pleast(10.2,2.2,-1.1); select pleast(10.2,10, -20); select pleast(10,20, -1.0); -- in case of conflict, non-variadic version is preferred create or replace function pleast(numeric) returns numeric as $$ begin raise notice 'non-variadic function called'; return $1; end; $$ language plpgsql immutable strict; select pleast(10); drop function pleast(numeric[]); drop function pleast(numeric); -- test table functions create function tftest(int) returns table(a int, b int) as $$ begin return query select $1, $1+i from generate_series(1,5) g(i); end; $$ language plpgsql immutable strict; select * from tftest(10); create or replace function tftest(a1 int) returns table(a int, b int) as $$ begin a := a1; b := a1 + 1; return next; a := a1 * 10; b := a1 * 10 + 1; return next; end; $$ language plpgsql immutable strict; select * from tftest(10); drop function tftest(int); create or replace function rttest() returns setof int as $$ declare rc int; rca int[]; begin return query values(10),(20); get diagnostics rc = row_count; raise notice '% %', found, rc; return query select * from (values(10),(20)) f(a) where false; get diagnostics rc = row_count; raise notice '% %', found, rc; return query execute 'values(10),(20)'; -- just for fun, let's use array elements as targets get diagnostics rca[1] = row_count; raise notice '% %', found, rca[1]; return query execute 'select * from (values(10),(20)) f(a) where false'; get diagnostics rca[2] = row_count; raise notice '% %', found, rca[2]; end; $$ language plpgsql; select * from rttest(); drop function rttest(); -- Test for proper cleanup at subtransaction exit. This example -- exposed a bug in PG 8.2. CREATE FUNCTION leaker_1(fail BOOL) RETURNS INTEGER AS $$ DECLARE v_var INTEGER; BEGIN BEGIN v_var := (leaker_2(fail)).error_code; EXCEPTION WHEN others THEN RETURN 0; END; RETURN 1; END; $$ LANGUAGE plpgsql; CREATE FUNCTION leaker_2(fail BOOL, OUT error_code INTEGER, OUT new_id INTEGER) RETURNS RECORD AS $$ BEGIN IF fail THEN RAISE EXCEPTION 'fail ...'; END IF; error_code := 1; new_id := 1; RETURN; END; $$ LANGUAGE plpgsql; SELECT * FROM leaker_1(false); SELECT * FROM leaker_1(true); DROP FUNCTION leaker_1(bool); DROP FUNCTION leaker_2(bool); -- Test for appropriate cleanup of non-simple expression evaluations -- (bug in all versions prior to August 2010) CREATE FUNCTION nonsimple_expr_test() RETURNS text[] AS $$ DECLARE arr text[]; lr text; i integer; BEGIN arr := array[array['foo','bar'], array['baz', 'quux']]; lr := 'fool'; i := 1; -- use sub-SELECTs to make expressions non-simple arr[(SELECT i)][(SELECT i+1)] := (SELECT lr); RETURN arr; END; $$ LANGUAGE plpgsql; SELECT nonsimple_expr_test(); DROP FUNCTION nonsimple_expr_test(); CREATE FUNCTION nonsimple_expr_test() RETURNS integer AS $$ declare i integer NOT NULL := 0; begin begin i := (SELECT NULL::integer); -- should throw error exception WHEN OTHERS THEN i := (SELECT 1::integer); end; return i; end; $$ LANGUAGE plpgsql; SELECT nonsimple_expr_test(); DROP FUNCTION nonsimple_expr_test(); -- -- Test cases involving recursion and error recovery in simple expressions -- (bugs in all versions before October 2010). The problems are most -- easily exposed by mutual recursion between plpgsql and sql functions. -- create function recurse(float8) returns float8 as $$ begin if ($1 > 0) then return sql_recurse($1 - 1); else return $1; end if; end; $$ language plpgsql; -- "limit" is to prevent this from being inlined create function sql_recurse(float8) returns float8 as $$ select recurse($1) limit 1; $$ language sql; select recurse(10); create function error1(text) returns text language sql as $$ SELECT relname::text FROM pg_class c WHERE c.oid = $1::regclass $$; create function error2(p_name_table text) returns text language plpgsql as $$ begin return error1(p_name_table); end$$; BEGIN; create table public.stuffs (stuff text); SAVEPOINT a; select error2('nonexistent.stuffs'); ROLLBACK TO a; select error2('public.stuffs'); rollback; drop function error2(p_name_table text); drop function error1(text); -- Test for proper handling of cast-expression caching create function sql_to_date(integer) returns date as $$ select $1::text::date $$ language sql immutable strict; create cast (integer as date) with function sql_to_date(integer) as assignment; create function cast_invoker(integer) returns date as $$ begin return $1; end$$ language plpgsql; select cast_invoker(20150717); select cast_invoker(20150718); -- second call crashed in pre-release 9.5 begin; select cast_invoker(20150717); select cast_invoker(20150718); savepoint s1; select cast_invoker(20150718); select cast_invoker(-1); -- fails rollback to savepoint s1; select cast_invoker(20150719); select cast_invoker(20150720); commit; drop function cast_invoker(integer); drop function sql_to_date(integer) cascade; -- Test handling of cast cache inside DO blocks -- (to check the original crash case, this must be a cast not previously -- used in this session) begin; do $$ declare x text[]; begin x := '{1.23, 4.56}'::numeric[]; end $$; do $$ declare x text[]; begin x := '{1.23, 4.56}'::numeric[]; end $$; end; -- Test for consistent reporting of error context create function fail() returns int language plpgsql as $$ begin return 1/0; end $$; select fail(); select fail(); drop function fail(); -- Test handling of string literals. set standard_conforming_strings = off; create or replace function strtest() returns text as $$ begin raise notice 'foo\\bar\041baz'; return 'foo\\bar\041baz'; end $$ language plpgsql; select strtest(); create or replace function strtest() returns text as $$ begin raise notice E'foo\\bar\041baz'; return E'foo\\bar\041baz'; end $$ language plpgsql; select strtest(); set standard_conforming_strings = on; create or replace function strtest() returns text as $$ begin raise notice 'foo\\bar\041baz\'; return 'foo\\bar\041baz\'; end $$ language plpgsql; select strtest(); create or replace function strtest() returns text as $$ begin raise notice E'foo\\bar\041baz'; return E'foo\\bar\041baz'; end $$ language plpgsql; select strtest(); drop function strtest(); -- Test anonymous code blocks. DO $$ DECLARE r record; BEGIN FOR r IN SELECT rtrim(roomno) AS roomno, comment FROM Room ORDER BY roomno LOOP RAISE NOTICE '%, %', r.roomno, r.comment; END LOOP; END$$; -- these are to check syntax error reporting DO LANGUAGE plpgsql $$begin return 1; end$$; DO $$ DECLARE r record; BEGIN FOR r IN SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomno LOOP RAISE NOTICE '%, %', r.roomno, r.comment; END LOOP; END$$; -- Check handling of errors thrown from/into anonymous code blocks. do $outer$ begin for i in 1..10 loop begin execute $ex$ do $$ declare x int = 0; begin x := 1 / x; end; $$; $ex$; exception when division_by_zero then raise notice 'caught division by zero'; end; end loop; end; $outer$; -- Check variable scoping -- a var is not available in its own or prior -- default expressions. create function scope_test() returns int as $$ declare x int := 42; begin declare y int := x + 1; x int := x + 2; begin return x * 100 + y; end; end; $$ language plpgsql; select scope_test(); drop function scope_test(); -- Check handling of conflicts between plpgsql vars and table columns. set plpgsql.variable_conflict = error; create function conflict_test() returns setof int8_tbl as $$ declare r record; q1 bigint := 42; begin for r in select q1,q2 from int8_tbl loop return next r; end loop; end; $$ language plpgsql; select * from conflict_test(); create or replace function conflict_test() returns setof int8_tbl as $$ #variable_conflict use_variable declare r record; q1 bigint := 42; begin for r in select q1,q2 from int8_tbl loop return next r; end loop; end; $$ language plpgsql; select * from conflict_test(); create or replace function conflict_test() returns setof int8_tbl as $$ #variable_conflict use_column declare r record; q1 bigint := 42; begin for r in select q1,q2 from int8_tbl loop return next r; end loop; end; $$ language plpgsql; select * from conflict_test(); drop function conflict_test(); -- Check that an unreserved keyword can be used as a variable name create function unreserved_test() returns int as $$ declare forward int := 21; begin forward := forward * 2; return forward; end $$ language plpgsql; select unreserved_test(); create or replace function unreserved_test() returns int as $$ declare return int := 42; begin return := return + 1; return return; end $$ language plpgsql; select unreserved_test(); create or replace function unreserved_test() returns int as $$ declare comment int := 21; begin comment := comment * 2; comment on function unreserved_test() is 'this is a test'; return comment; end $$ language plpgsql; select unreserved_test(); select obj_description('unreserved_test()'::regprocedure, 'pg_proc'); drop function unreserved_test(); -- -- Test FOREACH over arrays -- create function foreach_test(anyarray) returns void as $$ declare x int; begin foreach x in array $1 loop raise notice '%', x; end loop; end; $$ language plpgsql; select foreach_test(ARRAY[1,2,3,4]); select foreach_test(ARRAY[[1,2],[3,4]]); create or replace function foreach_test(anyarray) returns void as $$ declare x int; begin foreach x slice 1 in array $1 loop raise notice '%', x; end loop; end; $$ language plpgsql; -- should fail select foreach_test(ARRAY[1,2,3,4]); select foreach_test(ARRAY[[1,2],[3,4]]); create or replace function foreach_test(anyarray) returns void as $$ declare x int[]; begin foreach x slice 1 in array $1 loop raise notice '%', x; end loop; end; $$ language plpgsql; select foreach_test(ARRAY[1,2,3,4]); select foreach_test(ARRAY[[1,2],[3,4]]); -- higher level of slicing create or replace function foreach_test(anyarray) returns void as $$ declare x int[]; begin foreach x slice 2 in array $1 loop raise notice '%', x; end loop; end; $$ language plpgsql; -- should fail select foreach_test(ARRAY[1,2,3,4]); -- ok select foreach_test(ARRAY[[1,2],[3,4]]); select foreach_test(ARRAY[[[1,2]],[[3,4]]]); create type xy_tuple AS (x int, y int); -- iteration over array of records create or replace function foreach_test(anyarray) returns void as $$ declare r record; begin foreach r in array $1 loop raise notice '%', r; end loop; end; $$ language plpgsql; select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); create or replace function foreach_test(anyarray) returns void as $$ declare x int; y int; begin foreach x, y in array $1 loop raise notice 'x = %, y = %', x, y; end loop; end; $$ language plpgsql; select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); -- slicing over array of composite types create or replace function foreach_test(anyarray) returns void as $$ declare x xy_tuple[]; begin foreach x slice 1 in array $1 loop raise notice '%', x; end loop; end; $$ language plpgsql; select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); drop function foreach_test(anyarray); drop type xy_tuple; -- -- Assorted tests for array subscript assignment -- create temp table rtype (id int, ar text[]); create function arrayassign1() returns text[] language plpgsql as $$ declare r record; begin r := row(12, '{foo,bar,baz}')::rtype; r.ar[2] := 'replace'; return r.ar; end$$; select arrayassign1(); select arrayassign1(); -- try again to exercise internal caching create domain orderedarray as int[2] constraint sorted check (value[1] < value[2]); select '{1,2}'::orderedarray; select '{2,1}'::orderedarray; -- fail create function testoa(x1 int, x2 int, x3 int) returns orderedarray language plpgsql as $$ declare res orderedarray; begin res := array[x1, x2]; res[2] := x3; return res; end$$; select testoa(1,2,3); select testoa(1,2,3); -- try again to exercise internal caching select testoa(2,1,3); -- fail at initial assign select testoa(1,2,1); -- fail at update drop function arrayassign1(); drop function testoa(x1 int, x2 int, x3 int); -- -- Test handling of expanded arrays -- create function returns_rw_array(int) returns int[] language plpgsql as $$ declare r int[]; begin r := array[$1, $1]; return r; end; $$ stable; create function consumes_rw_array(int[]) returns int language plpgsql as $$ begin return $1[1]; end; $$ stable; select consumes_rw_array(returns_rw_array(42)); -- bug #14174 explain (verbose, costs off) select i, a from (select returns_rw_array(1) as a offset 0) ss, lateral consumes_rw_array(a) i; select i, a from (select returns_rw_array(1) as a offset 0) ss, lateral consumes_rw_array(a) i; explain (verbose, costs off) select consumes_rw_array(a), a from returns_rw_array(1) a; select consumes_rw_array(a), a from returns_rw_array(1) a; explain (verbose, costs off) select consumes_rw_array(a), a from (values (returns_rw_array(1)), (returns_rw_array(2))) v(a); select consumes_rw_array(a), a from (values (returns_rw_array(1)), (returns_rw_array(2))) v(a); do $$ declare a int[] := array[1,2]; begin a := a || 3; raise notice 'a = %', a; end$$; -- -- Test access to call stack -- create function inner_func(int) returns int as $$ declare _context text; begin get diagnostics _context = pg_context; raise notice '***%***', _context; -- lets do it again, just for fun.. get diagnostics _context = pg_context; raise notice '***%***', _context; raise notice 'lets make sure we didnt break anything'; return 2 * $1; end; $$ language plpgsql; create or replace function outer_func(int) returns int as $$ declare myresult int; begin raise notice 'calling down into inner_func()'; myresult := inner_func($1); raise notice 'inner_func() done'; return myresult; end; $$ language plpgsql; create or replace function outer_outer_func(int) returns int as $$ declare myresult int; begin raise notice 'calling down into outer_func()'; myresult := outer_func($1); raise notice 'outer_func() done'; return myresult; end; $$ language plpgsql; select outer_outer_func(10); -- repeated call should to work select outer_outer_func(20); drop function outer_outer_func(int); drop function outer_func(int); drop function inner_func(int); -- access to call stack from exception create function inner_func(int) returns int as $$ declare _context text; sx int := 5; begin begin perform sx / 0; exception when division_by_zero then get diagnostics _context = pg_context; raise notice '***%***', _context; end; -- lets do it again, just for fun.. get diagnostics _context = pg_context; raise notice '***%***', _context; raise notice 'lets make sure we didnt break anything'; return 2 * $1; end; $$ language plpgsql; create or replace function outer_func(int) returns int as $$ declare myresult int; begin raise notice 'calling down into inner_func()'; myresult := inner_func($1); raise notice 'inner_func() done'; return myresult; end; $$ language plpgsql; create or replace function outer_outer_func(int) returns int as $$ declare myresult int; begin raise notice 'calling down into outer_func()'; myresult := outer_func($1); raise notice 'outer_func() done'; return myresult; end; $$ language plpgsql; select outer_outer_func(10); -- repeated call should to work select outer_outer_func(20); drop function outer_outer_func(int); drop function outer_func(int); drop function inner_func(int); -- -- Test ASSERT -- do $$ begin assert 1=1; -- should succeed end; $$; do $$ begin assert 1=0; -- should fail end; $$; do $$ begin assert NULL; -- should fail end; $$; -- check controlling GUC set plpgsql.check_asserts = off; do $$ begin assert 1=0; -- won't be tested end; $$; reset plpgsql.check_asserts; -- test custom message do $$ declare var text := 'some value'; begin assert 1=0, format('assertion failed, var = "%s"', var); end; $$; -- ensure assertions are not trapped by 'others' do $$ begin assert 1=0, 'unhandled assertion'; exception when others then null; -- do nothing end; $$; -- Test use of plpgsql in a domain check constraint (cf. bug #14414) create function plpgsql_domain_check(val int) returns boolean as $$ begin return val > 0; end $$ language plpgsql immutable; create domain plpgsql_domain as integer check(plpgsql_domain_check(value)); do $$ declare v_test plpgsql_domain; begin v_test := 1; end; $$; do $$ declare v_test plpgsql_domain := 1; begin v_test := 0; -- fail end; $$; -- Test handling of expanded array passed to a domain constraint (bug #14472) create function plpgsql_arr_domain_check(val int[]) returns boolean as $$ begin return val[1] > 0; end $$ language plpgsql immutable; create domain plpgsql_arr_domain as int[] check(plpgsql_arr_domain_check(value)); do $$ declare v_test plpgsql_arr_domain; begin v_test := array[1]; v_test := v_test || 2; end; $$; do $$ declare v_test plpgsql_arr_domain := array[1]; begin v_test := 0 || v_test; -- fail end; $$; -- -- test usage of transition tables in AFTER triggers -- CREATE TABLE transition_table_base (id int PRIMARY KEY, val text); CREATE FUNCTION transition_table_base_ins_func() RETURNS trigger LANGUAGE plpgsql AS $$ DECLARE t text; l text; BEGIN t = ''; FOR l IN EXECUTE $q$ EXPLAIN (TIMING off, COSTS off, VERBOSE on) SELECT * FROM newtable $q$ LOOP t = t || l || E'\n'; END LOOP; RAISE INFO '%', t; RETURN new; END; $$; CREATE TRIGGER transition_table_base_ins_trig AFTER INSERT ON transition_table_base REFERENCING OLD TABLE AS oldtable NEW TABLE AS newtable FOR EACH STATEMENT EXECUTE PROCEDURE transition_table_base_ins_func(); CREATE TRIGGER transition_table_base_ins_trig AFTER INSERT ON transition_table_base REFERENCING NEW TABLE AS newtable FOR EACH STATEMENT EXECUTE PROCEDURE transition_table_base_ins_func(); INSERT INTO transition_table_base VALUES (1, 'One'), (2, 'Two'); INSERT INTO transition_table_base VALUES (3, 'Three'), (4, 'Four'); CREATE OR REPLACE FUNCTION transition_table_base_upd_func() RETURNS trigger LANGUAGE plpgsql AS $$ DECLARE t text; l text; BEGIN t = ''; FOR l IN EXECUTE $q$ EXPLAIN (TIMING off, COSTS off, VERBOSE on) SELECT * FROM oldtable ot FULL JOIN newtable nt USING (id) $q$ LOOP t = t || l || E'\n'; END LOOP; RAISE INFO '%', t; RETURN new; END; $$; CREATE TRIGGER transition_table_base_upd_trig AFTER UPDATE ON transition_table_base REFERENCING OLD TABLE AS oldtable NEW TABLE AS newtable FOR EACH STATEMENT EXECUTE PROCEDURE transition_table_base_upd_func(); UPDATE transition_table_base SET val = '*' || val || '*' WHERE id BETWEEN 2 AND 3; CREATE TABLE transition_table_level1 ( level1_no serial NOT NULL , level1_node_name varchar(255), PRIMARY KEY (level1_no) ) WITHOUT OIDS; CREATE TABLE transition_table_level2 ( level2_no serial NOT NULL , parent_no int NOT NULL, level1_node_name varchar(255), PRIMARY KEY (level2_no) ) WITHOUT OIDS; CREATE TABLE transition_table_status ( level int NOT NULL, node_no int NOT NULL, status int, PRIMARY KEY (level, node_no) ) WITHOUT OIDS; CREATE FUNCTION transition_table_level1_ri_parent_del_func() RETURNS TRIGGER LANGUAGE plpgsql AS $$ DECLARE n bigint; BEGIN PERFORM FROM p JOIN transition_table_level2 c ON c.parent_no = p.level1_no; IF FOUND THEN RAISE EXCEPTION 'RI error'; END IF; RETURN NULL; END; $$; CREATE TRIGGER transition_table_level1_ri_parent_del_trigger AFTER DELETE ON transition_table_level1 REFERENCING OLD TABLE AS p FOR EACH STATEMENT EXECUTE PROCEDURE transition_table_level1_ri_parent_del_func(); CREATE FUNCTION transition_table_level1_ri_parent_upd_func() RETURNS TRIGGER LANGUAGE plpgsql AS $$ DECLARE x int; BEGIN WITH p AS (SELECT level1_no, sum(delta) cnt FROM (SELECT level1_no, 1 AS delta FROM i UNION ALL SELECT level1_no, -1 AS delta FROM d) w GROUP BY level1_no HAVING sum(delta) < 0) SELECT level1_no FROM p JOIN transition_table_level2 c ON c.parent_no = p.level1_no INTO x; IF FOUND THEN RAISE EXCEPTION 'RI error'; END IF; RETURN NULL; END; $$; CREATE TRIGGER transition_table_level1_ri_parent_upd_trigger AFTER UPDATE ON transition_table_level1 REFERENCING OLD TABLE AS d NEW TABLE AS i FOR EACH STATEMENT EXECUTE PROCEDURE transition_table_level1_ri_parent_upd_func(); CREATE FUNCTION transition_table_level2_ri_child_insupd_func() RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN PERFORM FROM i LEFT JOIN transition_table_level1 p ON p.level1_no IS NOT NULL AND p.level1_no = i.parent_no WHERE p.level1_no IS NULL; IF FOUND THEN RAISE EXCEPTION 'RI error'; END IF; RETURN NULL; END; $$; CREATE TRIGGER transition_table_level2_ri_child_ins_trigger AFTER INSERT ON transition_table_level2 REFERENCING NEW TABLE AS i FOR EACH STATEMENT EXECUTE PROCEDURE transition_table_level2_ri_child_insupd_func(); CREATE TRIGGER transition_table_level2_ri_child_upd_trigger AFTER UPDATE ON transition_table_level2 REFERENCING NEW TABLE AS i FOR EACH STATEMENT EXECUTE PROCEDURE transition_table_level2_ri_child_insupd_func(); -- create initial test data INSERT INTO transition_table_level1 (level1_no) SELECT generate_series(1,200); ANALYZE transition_table_level1; INSERT INTO transition_table_level2 (level2_no, parent_no) SELECT level2_no, level2_no / 50 + 1 AS parent_no FROM generate_series(1,9999) level2_no; ANALYZE transition_table_level2; INSERT INTO transition_table_status (level, node_no, status) SELECT 1, level1_no, 0 FROM transition_table_level1; INSERT INTO transition_table_status (level, node_no, status) SELECT 2, level2_no, 0 FROM transition_table_level2; ANALYZE transition_table_status; INSERT INTO transition_table_level1(level1_no) SELECT generate_series(201,1000); ANALYZE transition_table_level1; -- behave reasonably if someone tries to modify a transition table CREATE FUNCTION transition_table_level2_bad_usage_func() RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN INSERT INTO dx VALUES (1000000, 1000000, 'x'); RETURN NULL; END; $$; CREATE TRIGGER transition_table_level2_bad_usage_trigger AFTER DELETE ON transition_table_level2 REFERENCING OLD TABLE AS dx FOR EACH STATEMENT EXECUTE PROCEDURE transition_table_level2_bad_usage_func(); DELETE FROM transition_table_level2 WHERE level2_no BETWEEN 301 AND 305; DROP TRIGGER transition_table_level2_bad_usage_trigger ON transition_table_level2; -- attempt modifications which would break RI (should all fail) DELETE FROM transition_table_level1 WHERE level1_no = 25; UPDATE transition_table_level1 SET level1_no = -1 WHERE level1_no = 30; INSERT INTO transition_table_level2 (level2_no, parent_no) VALUES (10000, 10000); UPDATE transition_table_level2 SET parent_no = 2000 WHERE level2_no = 40; -- attempt modifications which would not break RI (should all succeed) DELETE FROM transition_table_level1 WHERE level1_no BETWEEN 201 AND 1000; DELETE FROM transition_table_level1 WHERE level1_no BETWEEN 100000000 AND 100000010; SELECT count(*) FROM transition_table_level1; DELETE FROM transition_table_level2 WHERE level2_no BETWEEN 211 AND 220; SELECT count(*) FROM transition_table_level2; CREATE TABLE alter_table_under_transition_tables ( id int PRIMARY KEY, name text ); CREATE FUNCTION alter_table_under_transition_tables_upd_func() RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN RAISE WARNING 'old table = %, new table = %', (SELECT string_agg(id || '=' || name, ',') FROM d), (SELECT string_agg(id || '=' || name, ',') FROM i); RAISE NOTICE 'one = %', (SELECT 1 FROM alter_table_under_transition_tables LIMIT 1); RETURN NULL; END; $$; -- should fail, TRUNCATE is not compatible with transition tables CREATE TRIGGER alter_table_under_transition_tables_upd_trigger AFTER TRUNCATE OR UPDATE ON alter_table_under_transition_tables REFERENCING OLD TABLE AS d NEW TABLE AS i FOR EACH STATEMENT EXECUTE PROCEDURE alter_table_under_transition_tables_upd_func(); -- should work CREATE TRIGGER alter_table_under_transition_tables_upd_trigger AFTER UPDATE ON alter_table_under_transition_tables REFERENCING OLD TABLE AS d NEW TABLE AS i FOR EACH STATEMENT EXECUTE PROCEDURE alter_table_under_transition_tables_upd_func(); INSERT INTO alter_table_under_transition_tables VALUES (1, '1'), (2, '2'), (3, '3'); UPDATE alter_table_under_transition_tables SET name = name || name; -- now change 'name' to an integer to see what happens... ALTER TABLE alter_table_under_transition_tables ALTER COLUMN name TYPE int USING name::integer; UPDATE alter_table_under_transition_tables SET name = (name::text || name::text)::integer; -- now drop column 'name' ALTER TABLE alter_table_under_transition_tables DROP column name; UPDATE alter_table_under_transition_tables SET id = id; -- -- Test multiple reference to a transition table -- CREATE TABLE multi_test (i int); INSERT INTO multi_test VALUES (1); CREATE OR REPLACE FUNCTION multi_test_trig() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'count = %', (SELECT COUNT(*) FROM new_test); RAISE NOTICE 'count union = %', (SELECT COUNT(*) FROM (SELECT * FROM new_test UNION ALL SELECT * FROM new_test) ss); RETURN NULL; END$$; CREATE TRIGGER my_trigger AFTER UPDATE ON multi_test REFERENCING NEW TABLE AS new_test OLD TABLE as old_test FOR EACH STATEMENT EXECUTE PROCEDURE multi_test_trig(); UPDATE multi_test SET i = i; DROP TABLE multi_test; DROP FUNCTION multi_test_trig(); -- -- Check type parsing and record fetching from partitioned tables -- CREATE TABLE partitioned_table (a int, b text) PARTITION BY LIST (a); CREATE TABLE pt_part1 PARTITION OF partitioned_table FOR VALUES IN (1); CREATE TABLE pt_part2 PARTITION OF partitioned_table FOR VALUES IN (2); INSERT INTO partitioned_table VALUES (1, 'Row 1'); INSERT INTO partitioned_table VALUES (2, 'Row 2'); CREATE OR REPLACE FUNCTION get_from_partitioned_table(partitioned_table.a%type) RETURNS partitioned_table AS $$ DECLARE a_val partitioned_table.a%TYPE; result partitioned_table%ROWTYPE; BEGIN a_val := $1; SELECT * INTO result FROM partitioned_table WHERE a = a_val; RETURN result; END; $$ LANGUAGE plpgsql; SELECT * FROM get_from_partitioned_table(1) AS t; CREATE OR REPLACE FUNCTION list_partitioned_table() RETURNS SETOF partitioned_table.a%TYPE AS $$ DECLARE row partitioned_table%ROWTYPE; a_val partitioned_table.a%TYPE; BEGIN FOR row IN SELECT * FROM partitioned_table ORDER BY a LOOP a_val := row.a; RETURN NEXT a_val; END LOOP; RETURN; END; $$ LANGUAGE plpgsql; SELECT * FROM list_partitioned_table() AS t; -- -- Check argument name is used instead of $n in error message -- CREATE FUNCTION fx(x WSlot) RETURNS void AS $$ BEGIN GET DIAGNOSTICS x = ROW_COUNT; RETURN; END; $$ LANGUAGE plpgsql; libpg_query-13-2.1.0/test/sql/postgres_regress/point.sql000066400000000000000000000074261413137616400233240ustar00rootroot00000000000000-- -- POINT -- -- avoid bit-exact output here because operations may not be bit-exact. SET extra_float_digits = 0; CREATE TABLE POINT_TBL(f1 point); INSERT INTO POINT_TBL(f1) VALUES ('(0.0,0.0)'); INSERT INTO POINT_TBL(f1) VALUES ('(-10.0,0.0)'); INSERT INTO POINT_TBL(f1) VALUES ('(-3.0,4.0)'); INSERT INTO POINT_TBL(f1) VALUES ('(5.1, 34.5)'); INSERT INTO POINT_TBL(f1) VALUES ('(-5.0,-12.0)'); INSERT INTO POINT_TBL(f1) VALUES ('(1e-300,-1e-300)'); -- To underflow INSERT INTO POINT_TBL(f1) VALUES ('(1e+300,Inf)'); -- To overflow INSERT INTO POINT_TBL(f1) VALUES (' ( Nan , NaN ) '); -- bad format points INSERT INTO POINT_TBL(f1) VALUES ('asdfasdf'); INSERT INTO POINT_TBL(f1) VALUES ('10.0,10.0'); INSERT INTO POINT_TBL(f1) VALUES ('(10.0 10.0)'); INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 10.0) x'); INSERT INTO POINT_TBL(f1) VALUES ('(10.0,10.0'); INSERT INTO POINT_TBL(f1) VALUES ('(10.0, 1e+500)'); -- Out of range SELECT '' AS six, * FROM POINT_TBL; -- left of SELECT '' AS three, p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)'; -- right of SELECT '' AS three, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1; -- above SELECT '' AS one, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >^ p.f1; -- below SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 <^ '(0.0, 0.0)'; -- equal SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)'; -- point in box SELECT '' AS three, p.* FROM POINT_TBL p WHERE p.f1 <@ box '(0,0,100,100)'; SELECT '' AS three, p.* FROM POINT_TBL p WHERE box '(0,0,100,100)' @> p.f1; SELECT '' AS three, p.* FROM POINT_TBL p WHERE not p.f1 <@ box '(0,0,100,100)'; SELECT '' AS two, p.* FROM POINT_TBL p WHERE p.f1 <@ path '[(0,0),(-10,0),(-10,10)]'; SELECT '' AS three, p.* FROM POINT_TBL p WHERE not box '(0,0,100,100)' @> p.f1; SELECT '' AS six, p.f1, p.f1 <-> point '(0,0)' AS dist FROM POINT_TBL p ORDER BY dist; SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dist FROM POINT_TBL p1, POINT_TBL p2 ORDER BY dist, p1.f1[0], p2.f1[0]; SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2 FROM POINT_TBL p1, POINT_TBL p2 WHERE (p1.f1 <-> p2.f1) > 3; -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10 SELECT '' AS fifteen, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance FROM POINT_TBL p1, POINT_TBL p2 WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 ORDER BY distance, p1.f1[0], p2.f1[0]; -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10 SELECT '' AS three, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance FROM POINT_TBL p1, POINT_TBL p2 WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 >^ p2.f1 ORDER BY distance; -- Test that GiST indexes provide same behavior as sequential scan CREATE TEMP TABLE point_gist_tbl(f1 point); INSERT INTO point_gist_tbl SELECT '(0,0)' FROM generate_series(0,1000); CREATE INDEX point_gist_tbl_index ON point_gist_tbl USING gist (f1); INSERT INTO point_gist_tbl VALUES ('(0.0000009,0.0000009)'); SET enable_seqscan TO true; SET enable_indexscan TO false; SET enable_bitmapscan TO false; SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000009,0.0000009)'::point; SELECT COUNT(*) FROM point_gist_tbl WHERE f1 <@ '(0.0000009,0.0000009),(0.0000009,0.0000009)'::box; SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000018,0.0000018)'::point; SET enable_seqscan TO false; SET enable_indexscan TO true; SET enable_bitmapscan TO true; SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000009,0.0000009)'::point; SELECT COUNT(*) FROM point_gist_tbl WHERE f1 <@ '(0.0000009,0.0000009),(0.0000009,0.0000009)'::box; SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000018,0.0000018)'::point; RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; libpg_query-13-2.1.0/test/sql/postgres_regress/polygon.sql000066400000000000000000000122171413137616400236540ustar00rootroot00000000000000-- -- POLYGON -- -- polygon logic -- CREATE TABLE POLYGON_TBL(f1 polygon); INSERT INTO POLYGON_TBL(f1) VALUES ('(2.0,0.0),(2.0,4.0),(0.0,0.0)'); INSERT INTO POLYGON_TBL(f1) VALUES ('(3.0,1.0),(3.0,3.0),(1.0,0.0)'); INSERT INTO POLYGON_TBL(f1) VALUES ('(1,2),(3,4),(5,6),(7,8)'); INSERT INTO POLYGON_TBL(f1) VALUES ('(7,8),(5,6),(3,4),(1,2)'); -- Reverse INSERT INTO POLYGON_TBL(f1) VALUES ('(1,2),(7,8),(5,6),(3,-4)'); -- degenerate polygons INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0,0.0)'); INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0,1.0),(0.0,1.0)'); -- bad polygon input strings INSERT INTO POLYGON_TBL(f1) VALUES ('0.0'); INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0 0.0'); INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2)'); INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2,3'); INSERT INTO POLYGON_TBL(f1) VALUES ('asdf'); SELECT '' AS four, * FROM POLYGON_TBL; -- -- Test the SP-GiST index -- CREATE TABLE quad_poly_tbl (id int, p polygon); INSERT INTO quad_poly_tbl SELECT (x - 1) * 100 + y, polygon(circle(point(x * 10, y * 10), 1 + (x + y) % 10)) FROM generate_series(1, 100) x, generate_series(1, 100) y; INSERT INTO quad_poly_tbl SELECT i, polygon '((200, 300),(210, 310),(230, 290))' FROM generate_series(10001, 11000) AS i; INSERT INTO quad_poly_tbl VALUES (11001, NULL), (11002, NULL), (11003, NULL); CREATE INDEX quad_poly_tbl_idx ON quad_poly_tbl USING spgist(p); -- get reference results for ORDER BY distance from seq scan SET enable_seqscan = ON; SET enable_indexscan = OFF; SET enable_bitmapscan = OFF; CREATE TEMP TABLE quad_poly_tbl_ord_seq2 AS SELECT rank() OVER (ORDER BY p <-> point '123,456') n, p <-> point '123,456' dist, id FROM quad_poly_tbl WHERE p <@ polygon '((300,300),(400,600),(600,500),(700,200))'; -- check results from index scan SET enable_seqscan = OFF; SET enable_indexscan = OFF; SET enable_bitmapscan = ON; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p << polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT count(*) FROM quad_poly_tbl WHERE p << polygon '((300,300),(400,600),(600,500),(700,200))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p &< polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT count(*) FROM quad_poly_tbl WHERE p &< polygon '((300,300),(400,600),(600,500),(700,200))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p && polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT count(*) FROM quad_poly_tbl WHERE p && polygon '((300,300),(400,600),(600,500),(700,200))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p &> polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT count(*) FROM quad_poly_tbl WHERE p &> polygon '((300,300),(400,600),(600,500),(700,200))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p >> polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT count(*) FROM quad_poly_tbl WHERE p >> polygon '((300,300),(400,600),(600,500),(700,200))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p <<| polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT count(*) FROM quad_poly_tbl WHERE p <<| polygon '((300,300),(400,600),(600,500),(700,200))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p &<| polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT count(*) FROM quad_poly_tbl WHERE p &<| polygon '((300,300),(400,600),(600,500),(700,200))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p |&> polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT count(*) FROM quad_poly_tbl WHERE p |&> polygon '((300,300),(400,600),(600,500),(700,200))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p |>> polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT count(*) FROM quad_poly_tbl WHERE p |>> polygon '((300,300),(400,600),(600,500),(700,200))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p <@ polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT count(*) FROM quad_poly_tbl WHERE p <@ polygon '((300,300),(400,600),(600,500),(700,200))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p @> polygon '((340,550),(343,552),(341,553))'; SELECT count(*) FROM quad_poly_tbl WHERE p @> polygon '((340,550),(343,552),(341,553))'; EXPLAIN (COSTS OFF) SELECT count(*) FROM quad_poly_tbl WHERE p ~= polygon '((200, 300),(210, 310),(230, 290))'; SELECT count(*) FROM quad_poly_tbl WHERE p ~= polygon '((200, 300),(210, 310),(230, 290))'; -- test ORDER BY distance SET enable_indexscan = ON; SET enable_bitmapscan = OFF; EXPLAIN (COSTS OFF) SELECT rank() OVER (ORDER BY p <-> point '123,456') n, p <-> point '123,456' dist, id FROM quad_poly_tbl WHERE p <@ polygon '((300,300),(400,600),(600,500),(700,200))'; CREATE TEMP TABLE quad_poly_tbl_ord_idx2 AS SELECT rank() OVER (ORDER BY p <-> point '123,456') n, p <-> point '123,456' dist, id FROM quad_poly_tbl WHERE p <@ polygon '((300,300),(400,600),(600,500),(700,200))'; SELECT * FROM quad_poly_tbl_ord_seq2 seq FULL JOIN quad_poly_tbl_ord_idx2 idx ON seq.n = idx.n AND seq.id = idx.id AND (seq.dist = idx.dist OR seq.dist IS NULL AND idx.dist IS NULL) WHERE seq.id IS NULL OR idx.id IS NULL; RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; libpg_query-13-2.1.0/test/sql/postgres_regress/polymorphism.sql000066400000000000000000001043711413137616400247320ustar00rootroot00000000000000-- -- Tests for polymorphic SQL functions and aggregates based on them. -- Tests for other features related to function-calling have snuck in, too. -- create function polyf(x anyelement) returns anyelement as $$ select x + 1 $$ language sql; select polyf(42) as int, polyf(4.5) as num; select polyf(point(3,4)); -- fail for lack of + operator drop function polyf(x anyelement); create function polyf(x anyelement) returns anyarray as $$ select array[x + 1, x + 2] $$ language sql; select polyf(42) as int, polyf(4.5) as num; drop function polyf(x anyelement); create function polyf(x anyarray) returns anyelement as $$ select x[1] $$ language sql; select polyf(array[2,4]) as int, polyf(array[4.5, 7.7]) as num; select polyf(stavalues1) from pg_statistic; -- fail, can't infer element type drop function polyf(x anyarray); create function polyf(x anyarray) returns anyarray as $$ select x $$ language sql; select polyf(array[2,4]) as int, polyf(array[4.5, 7.7]) as num; select polyf(stavalues1) from pg_statistic; -- fail, can't infer element type drop function polyf(x anyarray); -- fail, can't infer type: create function polyf(x anyelement) returns anyrange as $$ select array[x + 1, x + 2] $$ language sql; create function polyf(x anyrange) returns anyarray as $$ select array[lower(x), upper(x)] $$ language sql; select polyf(int4range(42, 49)) as int, polyf(float8range(4.5, 7.8)) as num; drop function polyf(x anyrange); create function polyf(x anycompatible, y anycompatible) returns anycompatiblearray as $$ select array[x, y] $$ language sql; select polyf(2, 4) as int, polyf(2, 4.5) as num; drop function polyf(x anycompatible, y anycompatible); create function polyf(x anycompatiblerange, y anycompatible, z anycompatible) returns anycompatiblearray as $$ select array[lower(x), upper(x), y, z] $$ language sql; select polyf(int4range(42, 49), 11, 2::smallint) as int, polyf(float8range(4.5, 7.8), 7.8, 11::real) as num; select polyf(int4range(42, 49), 11, 4.5) as fail; -- range type doesn't fit drop function polyf(x anycompatiblerange, y anycompatible, z anycompatible); -- fail, can't infer type: create function polyf(x anycompatible) returns anycompatiblerange as $$ select array[x + 1, x + 2] $$ language sql; create function polyf(x anycompatiblerange, y anycompatiblearray) returns anycompatiblerange as $$ select x $$ language sql; select polyf(int4range(42, 49), array[11]) as int, polyf(float8range(4.5, 7.8), array[7]) as num; drop function polyf(x anycompatiblerange, y anycompatiblearray); create function polyf(a anyelement, b anyarray, c anycompatible, d anycompatible, OUT x anyarray, OUT y anycompatiblearray) as $$ select a || b, array[c, d] $$ language sql; select x, pg_typeof(x), y, pg_typeof(y) from polyf(11, array[1, 2], 42, 34.5); select x, pg_typeof(x), y, pg_typeof(y) from polyf(11, array[1, 2], point(1,2), point(3,4)); select x, pg_typeof(x), y, pg_typeof(y) from polyf(11, '{1,2}', point(1,2), '(3,4)'); select x, pg_typeof(x), y, pg_typeof(y) from polyf(11, array[1, 2.2], 42, 34.5); -- fail drop function polyf(a anyelement, b anyarray, c anycompatible, d anycompatible); -- -- Polymorphic aggregate tests -- -- Legend: ----------- -- A = type is ANY -- P = type is polymorphic -- N = type is non-polymorphic -- B = aggregate base type -- S = aggregate state type -- R = aggregate return type -- 1 = arg1 of a function -- 2 = arg2 of a function -- ag = aggregate -- tf = trans (state) function -- ff = final function -- rt = return type of a function -- -> = implies -- => = allowed -- !> = not allowed -- E = exists -- NE = not-exists -- -- Possible states: -- ---------------- -- B = (A || P || N) -- when (B = A) -> (tf2 = NE) -- S = (P || N) -- ff = (E || NE) -- tf1 = (P || N) -- tf2 = (NE || P || N) -- R = (P || N) -- create functions for use as tf and ff with the needed combinations of -- argument polymorphism, but within the constraints of valid aggregate -- functions, i.e. tf arg1 and tf return type must match -- polymorphic single arg transfn CREATE FUNCTION stfp(anyarray) RETURNS anyarray AS 'select $1' LANGUAGE SQL; -- non-polymorphic single arg transfn CREATE FUNCTION stfnp(int[]) RETURNS int[] AS 'select $1' LANGUAGE SQL; -- dual polymorphic transfn CREATE FUNCTION tfp(anyarray,anyelement) RETURNS anyarray AS 'select $1 || $2' LANGUAGE SQL; -- dual non-polymorphic transfn CREATE FUNCTION tfnp(int[],int) RETURNS int[] AS 'select $1 || $2' LANGUAGE SQL; -- arg1 only polymorphic transfn CREATE FUNCTION tf1p(anyarray,int) RETURNS anyarray AS 'select $1' LANGUAGE SQL; -- arg2 only polymorphic transfn CREATE FUNCTION tf2p(int[],anyelement) RETURNS int[] AS 'select $1' LANGUAGE SQL; -- multi-arg polymorphic CREATE FUNCTION sum3(anyelement,anyelement,anyelement) returns anyelement AS 'select $1+$2+$3' language sql strict; -- finalfn polymorphic CREATE FUNCTION ffp(anyarray) RETURNS anyarray AS 'select $1' LANGUAGE SQL; -- finalfn non-polymorphic CREATE FUNCTION ffnp(int[]) returns int[] as 'select $1' LANGUAGE SQL; -- Try to cover all the possible states: -- -- Note: in Cases 1 & 2, we are trying to return P. Therefore, if the transfn -- is stfnp, tfnp, or tf2p, we must use ffp as finalfn, because stfnp, tfnp, -- and tf2p do not return P. Conversely, in Cases 3 & 4, we are trying to -- return N. Therefore, if the transfn is stfp, tfp, or tf1p, we must use ffnp -- as finalfn, because stfp, tfp, and tf1p do not return N. -- -- Case1 (R = P) && (B = A) -- ------------------------ -- S tf1 -- ------- -- N N -- should CREATE CREATE AGGREGATE myaggp01a(*) (SFUNC = stfnp, STYPE = int4[], FINALFUNC = ffp, INITCOND = '{}'); -- P N -- should ERROR: stfnp(anyarray) not matched by stfnp(int[]) CREATE AGGREGATE myaggp02a(*) (SFUNC = stfnp, STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}'); -- N P -- should CREATE CREATE AGGREGATE myaggp03a(*) (SFUNC = stfp, STYPE = int4[], FINALFUNC = ffp, INITCOND = '{}'); CREATE AGGREGATE myaggp03b(*) (SFUNC = stfp, STYPE = int4[], INITCOND = '{}'); -- P P -- should ERROR: we have no way to resolve S CREATE AGGREGATE myaggp04a(*) (SFUNC = stfp, STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}'); CREATE AGGREGATE myaggp04b(*) (SFUNC = stfp, STYPE = anyarray, INITCOND = '{}'); -- Case2 (R = P) && ((B = P) || (B = N)) -- ------------------------------------- -- S tf1 B tf2 -- ----------------------- -- N N N N -- should CREATE CREATE AGGREGATE myaggp05a(BASETYPE = int, SFUNC = tfnp, STYPE = int[], FINALFUNC = ffp, INITCOND = '{}'); -- N N N P -- should CREATE CREATE AGGREGATE myaggp06a(BASETYPE = int, SFUNC = tf2p, STYPE = int[], FINALFUNC = ffp, INITCOND = '{}'); -- N N P N -- should ERROR: tfnp(int[], anyelement) not matched by tfnp(int[], int) CREATE AGGREGATE myaggp07a(BASETYPE = anyelement, SFUNC = tfnp, STYPE = int[], FINALFUNC = ffp, INITCOND = '{}'); -- N N P P -- should CREATE CREATE AGGREGATE myaggp08a(BASETYPE = anyelement, SFUNC = tf2p, STYPE = int[], FINALFUNC = ffp, INITCOND = '{}'); -- N P N N -- should CREATE CREATE AGGREGATE myaggp09a(BASETYPE = int, SFUNC = tf1p, STYPE = int[], FINALFUNC = ffp, INITCOND = '{}'); CREATE AGGREGATE myaggp09b(BASETYPE = int, SFUNC = tf1p, STYPE = int[], INITCOND = '{}'); -- N P N P -- should CREATE CREATE AGGREGATE myaggp10a(BASETYPE = int, SFUNC = tfp, STYPE = int[], FINALFUNC = ffp, INITCOND = '{}'); CREATE AGGREGATE myaggp10b(BASETYPE = int, SFUNC = tfp, STYPE = int[], INITCOND = '{}'); -- N P P N -- should ERROR: tf1p(int[],anyelement) not matched by tf1p(anyarray,int) CREATE AGGREGATE myaggp11a(BASETYPE = anyelement, SFUNC = tf1p, STYPE = int[], FINALFUNC = ffp, INITCOND = '{}'); CREATE AGGREGATE myaggp11b(BASETYPE = anyelement, SFUNC = tf1p, STYPE = int[], INITCOND = '{}'); -- N P P P -- should ERROR: tfp(int[],anyelement) not matched by tfp(anyarray,anyelement) CREATE AGGREGATE myaggp12a(BASETYPE = anyelement, SFUNC = tfp, STYPE = int[], FINALFUNC = ffp, INITCOND = '{}'); CREATE AGGREGATE myaggp12b(BASETYPE = anyelement, SFUNC = tfp, STYPE = int[], INITCOND = '{}'); -- P N N N -- should ERROR: tfnp(anyarray, int) not matched by tfnp(int[],int) CREATE AGGREGATE myaggp13a(BASETYPE = int, SFUNC = tfnp, STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}'); -- P N N P -- should ERROR: tf2p(anyarray, int) not matched by tf2p(int[],anyelement) CREATE AGGREGATE myaggp14a(BASETYPE = int, SFUNC = tf2p, STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}'); -- P N P N -- should ERROR: tfnp(anyarray, anyelement) not matched by tfnp(int[],int) CREATE AGGREGATE myaggp15a(BASETYPE = anyelement, SFUNC = tfnp, STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}'); -- P N P P -- should ERROR: tf2p(anyarray, anyelement) not matched by tf2p(int[],anyelement) CREATE AGGREGATE myaggp16a(BASETYPE = anyelement, SFUNC = tf2p, STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}'); -- P P N N -- should ERROR: we have no way to resolve S CREATE AGGREGATE myaggp17a(BASETYPE = int, SFUNC = tf1p, STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}'); CREATE AGGREGATE myaggp17b(BASETYPE = int, SFUNC = tf1p, STYPE = anyarray, INITCOND = '{}'); -- P P N P -- should ERROR: tfp(anyarray, int) not matched by tfp(anyarray, anyelement) CREATE AGGREGATE myaggp18a(BASETYPE = int, SFUNC = tfp, STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}'); CREATE AGGREGATE myaggp18b(BASETYPE = int, SFUNC = tfp, STYPE = anyarray, INITCOND = '{}'); -- P P P N -- should ERROR: tf1p(anyarray, anyelement) not matched by tf1p(anyarray, int) CREATE AGGREGATE myaggp19a(BASETYPE = anyelement, SFUNC = tf1p, STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}'); CREATE AGGREGATE myaggp19b(BASETYPE = anyelement, SFUNC = tf1p, STYPE = anyarray, INITCOND = '{}'); -- P P P P -- should CREATE CREATE AGGREGATE myaggp20a(BASETYPE = anyelement, SFUNC = tfp, STYPE = anyarray, FINALFUNC = ffp, INITCOND = '{}'); CREATE AGGREGATE myaggp20b(BASETYPE = anyelement, SFUNC = tfp, STYPE = anyarray, INITCOND = '{}'); -- Case3 (R = N) && (B = A) -- ------------------------ -- S tf1 -- ------- -- N N -- should CREATE CREATE AGGREGATE myaggn01a(*) (SFUNC = stfnp, STYPE = int4[], FINALFUNC = ffnp, INITCOND = '{}'); CREATE AGGREGATE myaggn01b(*) (SFUNC = stfnp, STYPE = int4[], INITCOND = '{}'); -- P N -- should ERROR: stfnp(anyarray) not matched by stfnp(int[]) CREATE AGGREGATE myaggn02a(*) (SFUNC = stfnp, STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}'); CREATE AGGREGATE myaggn02b(*) (SFUNC = stfnp, STYPE = anyarray, INITCOND = '{}'); -- N P -- should CREATE CREATE AGGREGATE myaggn03a(*) (SFUNC = stfp, STYPE = int4[], FINALFUNC = ffnp, INITCOND = '{}'); -- P P -- should ERROR: ffnp(anyarray) not matched by ffnp(int[]) CREATE AGGREGATE myaggn04a(*) (SFUNC = stfp, STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}'); -- Case4 (R = N) && ((B = P) || (B = N)) -- ------------------------------------- -- S tf1 B tf2 -- ----------------------- -- N N N N -- should CREATE CREATE AGGREGATE myaggn05a(BASETYPE = int, SFUNC = tfnp, STYPE = int[], FINALFUNC = ffnp, INITCOND = '{}'); CREATE AGGREGATE myaggn05b(BASETYPE = int, SFUNC = tfnp, STYPE = int[], INITCOND = '{}'); -- N N N P -- should CREATE CREATE AGGREGATE myaggn06a(BASETYPE = int, SFUNC = tf2p, STYPE = int[], FINALFUNC = ffnp, INITCOND = '{}'); CREATE AGGREGATE myaggn06b(BASETYPE = int, SFUNC = tf2p, STYPE = int[], INITCOND = '{}'); -- N N P N -- should ERROR: tfnp(int[], anyelement) not matched by tfnp(int[], int) CREATE AGGREGATE myaggn07a(BASETYPE = anyelement, SFUNC = tfnp, STYPE = int[], FINALFUNC = ffnp, INITCOND = '{}'); CREATE AGGREGATE myaggn07b(BASETYPE = anyelement, SFUNC = tfnp, STYPE = int[], INITCOND = '{}'); -- N N P P -- should CREATE CREATE AGGREGATE myaggn08a(BASETYPE = anyelement, SFUNC = tf2p, STYPE = int[], FINALFUNC = ffnp, INITCOND = '{}'); CREATE AGGREGATE myaggn08b(BASETYPE = anyelement, SFUNC = tf2p, STYPE = int[], INITCOND = '{}'); -- N P N N -- should CREATE CREATE AGGREGATE myaggn09a(BASETYPE = int, SFUNC = tf1p, STYPE = int[], FINALFUNC = ffnp, INITCOND = '{}'); -- N P N P -- should CREATE CREATE AGGREGATE myaggn10a(BASETYPE = int, SFUNC = tfp, STYPE = int[], FINALFUNC = ffnp, INITCOND = '{}'); -- N P P N -- should ERROR: tf1p(int[],anyelement) not matched by tf1p(anyarray,int) CREATE AGGREGATE myaggn11a(BASETYPE = anyelement, SFUNC = tf1p, STYPE = int[], FINALFUNC = ffnp, INITCOND = '{}'); -- N P P P -- should ERROR: tfp(int[],anyelement) not matched by tfp(anyarray,anyelement) CREATE AGGREGATE myaggn12a(BASETYPE = anyelement, SFUNC = tfp, STYPE = int[], FINALFUNC = ffnp, INITCOND = '{}'); -- P N N N -- should ERROR: tfnp(anyarray, int) not matched by tfnp(int[],int) CREATE AGGREGATE myaggn13a(BASETYPE = int, SFUNC = tfnp, STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}'); CREATE AGGREGATE myaggn13b(BASETYPE = int, SFUNC = tfnp, STYPE = anyarray, INITCOND = '{}'); -- P N N P -- should ERROR: tf2p(anyarray, int) not matched by tf2p(int[],anyelement) CREATE AGGREGATE myaggn14a(BASETYPE = int, SFUNC = tf2p, STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}'); CREATE AGGREGATE myaggn14b(BASETYPE = int, SFUNC = tf2p, STYPE = anyarray, INITCOND = '{}'); -- P N P N -- should ERROR: tfnp(anyarray, anyelement) not matched by tfnp(int[],int) CREATE AGGREGATE myaggn15a(BASETYPE = anyelement, SFUNC = tfnp, STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}'); CREATE AGGREGATE myaggn15b(BASETYPE = anyelement, SFUNC = tfnp, STYPE = anyarray, INITCOND = '{}'); -- P N P P -- should ERROR: tf2p(anyarray, anyelement) not matched by tf2p(int[],anyelement) CREATE AGGREGATE myaggn16a(BASETYPE = anyelement, SFUNC = tf2p, STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}'); CREATE AGGREGATE myaggn16b(BASETYPE = anyelement, SFUNC = tf2p, STYPE = anyarray, INITCOND = '{}'); -- P P N N -- should ERROR: ffnp(anyarray) not matched by ffnp(int[]) CREATE AGGREGATE myaggn17a(BASETYPE = int, SFUNC = tf1p, STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}'); -- P P N P -- should ERROR: tfp(anyarray, int) not matched by tfp(anyarray, anyelement) CREATE AGGREGATE myaggn18a(BASETYPE = int, SFUNC = tfp, STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}'); -- P P P N -- should ERROR: tf1p(anyarray, anyelement) not matched by tf1p(anyarray, int) CREATE AGGREGATE myaggn19a(BASETYPE = anyelement, SFUNC = tf1p, STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}'); -- P P P P -- should ERROR: ffnp(anyarray) not matched by ffnp(int[]) CREATE AGGREGATE myaggn20a(BASETYPE = anyelement, SFUNC = tfp, STYPE = anyarray, FINALFUNC = ffnp, INITCOND = '{}'); -- multi-arg polymorphic CREATE AGGREGATE mysum2(anyelement,anyelement) (SFUNC = sum3, STYPE = anyelement, INITCOND = '0'); -- create test data for polymorphic aggregates create temp table t(f1 int, f2 int[], f3 text); insert into t values(1,array[1],'a'); insert into t values(1,array[11],'b'); insert into t values(1,array[111],'c'); insert into t values(2,array[2],'a'); insert into t values(2,array[22],'b'); insert into t values(2,array[222],'c'); insert into t values(3,array[3],'a'); insert into t values(3,array[3],'b'); -- test the successfully created polymorphic aggregates select f3, myaggp01a(*) from t group by f3 order by f3; select f3, myaggp03a(*) from t group by f3 order by f3; select f3, myaggp03b(*) from t group by f3 order by f3; select f3, myaggp05a(f1) from t group by f3 order by f3; select f3, myaggp06a(f1) from t group by f3 order by f3; select f3, myaggp08a(f1) from t group by f3 order by f3; select f3, myaggp09a(f1) from t group by f3 order by f3; select f3, myaggp09b(f1) from t group by f3 order by f3; select f3, myaggp10a(f1) from t group by f3 order by f3; select f3, myaggp10b(f1) from t group by f3 order by f3; select f3, myaggp20a(f1) from t group by f3 order by f3; select f3, myaggp20b(f1) from t group by f3 order by f3; select f3, myaggn01a(*) from t group by f3 order by f3; select f3, myaggn01b(*) from t group by f3 order by f3; select f3, myaggn03a(*) from t group by f3 order by f3; select f3, myaggn05a(f1) from t group by f3 order by f3; select f3, myaggn05b(f1) from t group by f3 order by f3; select f3, myaggn06a(f1) from t group by f3 order by f3; select f3, myaggn06b(f1) from t group by f3 order by f3; select f3, myaggn08a(f1) from t group by f3 order by f3; select f3, myaggn08b(f1) from t group by f3 order by f3; select f3, myaggn09a(f1) from t group by f3 order by f3; select f3, myaggn10a(f1) from t group by f3 order by f3; select mysum2(f1, f1 + 1) from t; -- test inlining of polymorphic SQL functions create function bleat(int) returns int as $$ begin raise notice 'bleat %', $1; return $1; end$$ language plpgsql; create function sql_if(bool, anyelement, anyelement) returns anyelement as $$ select case when $1 then $2 else $3 end $$ language sql; -- Note this would fail with integer overflow, never mind wrong bleat() output, -- if the CASE expression were not successfully inlined select f1, sql_if(f1 > 0, bleat(f1), bleat(f1 + 1)) from int4_tbl; select q2, sql_if(q2 > 0, q2, q2 + 1) from int8_tbl; -- another sort of polymorphic aggregate CREATE AGGREGATE array_larger_accum (anyarray) ( sfunc = array_larger, stype = anyarray, initcond = '{}' ); SELECT array_larger_accum(i) FROM (VALUES (ARRAY[1,2]), (ARRAY[3,4])) as t(i); SELECT array_larger_accum(i) FROM (VALUES (ARRAY[row(1,2),row(3,4)]), (ARRAY[row(5,6),row(7,8)])) as t(i); -- another kind of polymorphic aggregate create function add_group(grp anyarray, ad anyelement, size integer) returns anyarray as $$ begin if grp is null then return array[ad]; end if; if array_upper(grp, 1) < size then return grp || ad; end if; return grp; end; $$ language plpgsql immutable; create aggregate build_group(anyelement, integer) ( SFUNC = add_group, STYPE = anyarray ); select build_group(q1,3) from int8_tbl; -- this should fail because stype isn't compatible with arg create aggregate build_group(int8, integer) ( SFUNC = add_group, STYPE = int2[] ); -- but we can make a non-poly agg from a poly sfunc if types are OK create aggregate build_group(int8, integer) ( SFUNC = add_group, STYPE = int8[] ); -- check proper resolution of data types for polymorphic transfn/finalfn create function first_el_transfn(anyarray, anyelement) returns anyarray as 'select $1 || $2' language sql immutable; create function first_el(anyarray) returns anyelement as 'select $1[1]' language sql strict immutable; create aggregate first_el_agg_f8(float8) ( SFUNC = array_append, STYPE = float8[], FINALFUNC = first_el ); create aggregate first_el_agg_any(anyelement) ( SFUNC = first_el_transfn, STYPE = anyarray, FINALFUNC = first_el ); select first_el_agg_f8(x::float8) from generate_series(1,10) x; select first_el_agg_any(x) from generate_series(1,10) x; select first_el_agg_f8(x::float8) over(order by x) from generate_series(1,10) x; select first_el_agg_any(x) over(order by x) from generate_series(1,10) x; -- check that we can apply functions taking ANYARRAY to pg_stats select distinct array_ndims(histogram_bounds) from pg_stats where histogram_bounds is not null; -- such functions must protect themselves if varying element type isn't OK -- (WHERE clause here is to avoid possibly getting a collation error instead) select max(histogram_bounds) from pg_stats where tablename = 'pg_am'; -- another corner case is the input functions for polymorphic pseudotypes select array_in('{1,2,3}','int4'::regtype,-1); -- this has historically worked select * from array_in('{1,2,3}','int4'::regtype,-1); -- this not select anyrange_in('[10,20)','int4range'::regtype,-1); -- test variadic polymorphic functions create function myleast(variadic anyarray) returns anyelement as $$ select min($1[i]) from generate_subscripts($1,1) g(i) $$ language sql immutable strict; select myleast(10, 1, 20, 33); select myleast(1.1, 0.22, 0.55); select myleast('z'::text); select myleast(); -- fail -- test with variadic call parameter select myleast(variadic array[1,2,3,4,-1]); select myleast(variadic array[1.1, -5.5]); --test with empty variadic call parameter select myleast(variadic array[]::int[]); -- an example with some ordinary arguments too create function concat(text, variadic anyarray) returns text as $$ select array_to_string($2, $1); $$ language sql immutable strict; select concat('%', 1, 2, 3, 4, 5); select concat('|', 'a'::text, 'b', 'c'); select concat('|', variadic array[1,2,33]); select concat('|', variadic array[]::int[]); drop function concat(text, anyarray); -- mix variadic with anyelement create function formarray(anyelement, variadic anyarray) returns anyarray as $$ select array_prepend($1, $2); $$ language sql immutable strict; select formarray(1,2,3,4,5); select formarray(1.1, variadic array[1.2,55.5]); select formarray(1.1, array[1.2,55.5]); -- fail without variadic select formarray(1, 'x'::text); -- fail, type mismatch select formarray(1, variadic array['x'::text]); -- fail, type mismatch drop function formarray(anyelement, variadic anyarray); -- test pg_typeof() function select pg_typeof(null); -- unknown select pg_typeof(0); -- integer select pg_typeof(0.0); -- numeric select pg_typeof(1+1 = 2); -- boolean select pg_typeof('x'); -- unknown select pg_typeof('' || ''); -- text select pg_typeof(pg_typeof(0)); -- regtype select pg_typeof(array[1.2,55.5]); -- numeric[] select pg_typeof(myleast(10, 1, 20, 33)); -- polymorphic input -- test functions with default parameters -- test basic functionality create function dfunc(a int = 1, int = 2) returns int as $$ select $1 + $2; $$ language sql; select dfunc(); select dfunc(10); select dfunc(10, 20); select dfunc(10, 20, 30); -- fail drop function dfunc(); -- fail drop function dfunc(int); -- fail drop function dfunc(int, int); -- ok -- fail: defaults must be at end of argument list create function dfunc(a int = 1, b int) returns int as $$ select $1 + $2; $$ language sql; -- however, this should work: create function dfunc(a int = 1, out sum int, b int = 2) as $$ select $1 + $2; $$ language sql; select dfunc(); -- verify it lists properly \df dfunc drop function dfunc(int, int); -- check implicit coercion create function dfunc(a int DEFAULT 1.0, int DEFAULT '-1') returns int as $$ select $1 + $2; $$ language sql; select dfunc(); create function dfunc(a text DEFAULT 'Hello', b text DEFAULT 'World') returns text as $$ select $1 || ', ' || $2; $$ language sql; select dfunc(); -- fail: which dfunc should be called? int or text select dfunc('Hi'); -- ok select dfunc('Hi', 'City'); -- ok select dfunc(0); -- ok select dfunc(10, 20); -- ok drop function dfunc(int, int); drop function dfunc(text, text); create function dfunc(int = 1, int = 2) returns int as $$ select 2; $$ language sql; create function dfunc(int = 1, int = 2, int = 3, int = 4) returns int as $$ select 4; $$ language sql; -- Now, dfunc(nargs = 2) and dfunc(nargs = 4) are ambiguous when called -- with 0 to 2 arguments. select dfunc(); -- fail select dfunc(1); -- fail select dfunc(1, 2); -- fail select dfunc(1, 2, 3); -- ok select dfunc(1, 2, 3, 4); -- ok drop function dfunc(int, int); drop function dfunc(int, int, int, int); -- default values are not allowed for output parameters create function dfunc(out int = 20) returns int as $$ select 1; $$ language sql; -- polymorphic parameter test create function dfunc(anyelement = 'World'::text) returns text as $$ select 'Hello, ' || $1::text; $$ language sql; select dfunc(); select dfunc(0); select dfunc(to_date('20081215','YYYYMMDD')); select dfunc('City'::text); drop function dfunc(anyelement); -- check defaults for variadics create function dfunc(a variadic int[]) returns int as $$ select array_upper($1, 1) $$ language sql; select dfunc(); -- fail select dfunc(10); select dfunc(10,20); create or replace function dfunc(a variadic int[] default array[]::int[]) returns int as $$ select array_upper($1, 1) $$ language sql; select dfunc(); -- now ok select dfunc(10); select dfunc(10,20); -- can't remove the default once it exists create or replace function dfunc(a variadic int[]) returns int as $$ select array_upper($1, 1) $$ language sql; \df dfunc drop function dfunc(a variadic int[]); -- Ambiguity should be reported only if there's not a better match available create function dfunc(int = 1, int = 2, int = 3) returns int as $$ select 3; $$ language sql; create function dfunc(int = 1, int = 2) returns int as $$ select 2; $$ language sql; create function dfunc(text) returns text as $$ select $1; $$ language sql; -- dfunc(narg=2) and dfunc(narg=3) are ambiguous select dfunc(1); -- fail -- but this works since the ambiguous functions aren't preferred anyway select dfunc('Hi'); drop function dfunc(int, int, int); drop function dfunc(int, int); drop function dfunc(text); -- -- Tests for named- and mixed-notation function calling -- create function dfunc(a int, b int, c int = 0, d int = 0) returns table (a int, b int, c int, d int) as $$ select $1, $2, $3, $4; $$ language sql; select (dfunc(10,20,30)).*; select (dfunc(a := 10, b := 20, c := 30)).*; select * from dfunc(a := 10, b := 20); select * from dfunc(b := 10, a := 20); select * from dfunc(0); -- fail select * from dfunc(1,2); select * from dfunc(1,2,c := 3); select * from dfunc(1,2,d := 3); select * from dfunc(x := 20, b := 10, x := 30); -- fail, duplicate name select * from dfunc(10, b := 20, 30); -- fail, named args must be last select * from dfunc(x := 10, b := 20, c := 30); -- fail, unknown param select * from dfunc(10, 10, a := 20); -- fail, a overlaps positional parameter select * from dfunc(1,c := 2,d := 3); -- fail, no value for b drop function dfunc(int, int, int, int); -- test with different parameter types create function dfunc(a varchar, b numeric, c date = current_date) returns table (a varchar, b numeric, c date) as $$ select $1, $2, $3; $$ language sql; select (dfunc('Hello World', 20, '2009-07-25'::date)).*; select * from dfunc('Hello World', 20, '2009-07-25'::date); select * from dfunc(c := '2009-07-25'::date, a := 'Hello World', b := 20); select * from dfunc('Hello World', b := 20, c := '2009-07-25'::date); select * from dfunc('Hello World', c := '2009-07-25'::date, b := 20); select * from dfunc('Hello World', c := 20, b := '2009-07-25'::date); -- fail drop function dfunc(varchar, numeric, date); -- test out parameters with named params create function dfunc(a varchar = 'def a', out _a varchar, c numeric = NULL, out _c numeric) returns record as $$ select $1, $2; $$ language sql; select (dfunc()).*; select * from dfunc(); select * from dfunc('Hello', 100); select * from dfunc(a := 'Hello', c := 100); select * from dfunc(c := 100, a := 'Hello'); select * from dfunc('Hello'); select * from dfunc('Hello', c := 100); select * from dfunc(c := 100); -- fail, can no longer change an input parameter's name create or replace function dfunc(a varchar = 'def a', out _a varchar, x numeric = NULL, out _c numeric) returns record as $$ select $1, $2; $$ language sql; create or replace function dfunc(a varchar = 'def a', out _a varchar, numeric = NULL, out _c numeric) returns record as $$ select $1, $2; $$ language sql; drop function dfunc(varchar, numeric); --fail, named parameters are not unique create function testpolym(a int, a int) returns int as $$ select 1;$$ language sql; create function testpolym(int, out a int, out a int) returns int as $$ select 1;$$ language sql; create function testpolym(out a int, inout a int) returns int as $$ select 1;$$ language sql; create function testpolym(a int, inout a int) returns int as $$ select 1;$$ language sql; -- valid create function testpolym(a int, out a int) returns int as $$ select $1;$$ language sql; select testpolym(37); drop function testpolym(int); create function testpolym(a int) returns table(a int) as $$ select $1;$$ language sql; select * from testpolym(37); drop function testpolym(int); -- test polymorphic params and defaults create function dfunc(a anyelement, b anyelement = null, flag bool = true) returns anyelement as $$ select case when $3 then $1 else $2 end; $$ language sql; select dfunc(1,2); select dfunc('a'::text, 'b'); -- positional notation with default select dfunc(a := 1, b := 2); select dfunc(a := 'a'::text, b := 'b'); select dfunc(a := 'a'::text, b := 'b', flag := false); -- named notation select dfunc(b := 'b'::text, a := 'a'); -- named notation with default select dfunc(a := 'a'::text, flag := true); -- named notation with default select dfunc(a := 'a'::text, flag := false); -- named notation with default select dfunc(b := 'b'::text, a := 'a', flag := true); -- named notation select dfunc('a'::text, 'b', false); -- full positional notation select dfunc('a'::text, 'b', flag := false); -- mixed notation select dfunc('a'::text, 'b', true); -- full positional notation select dfunc('a'::text, 'b', flag := true); -- mixed notation -- ansi/sql syntax select dfunc(a => 1, b => 2); select dfunc(a => 'a'::text, b => 'b'); select dfunc(a => 'a'::text, b => 'b', flag => false); -- named notation select dfunc(b => 'b'::text, a => 'a'); -- named notation with default select dfunc(a => 'a'::text, flag => true); -- named notation with default select dfunc(a => 'a'::text, flag => false); -- named notation with default select dfunc(b => 'b'::text, a => 'a', flag => true); -- named notation select dfunc('a'::text, 'b', false); -- full positional notation select dfunc('a'::text, 'b', flag => false); -- mixed notation select dfunc('a'::text, 'b', true); -- full positional notation select dfunc('a'::text, 'b', flag => true); -- mixed notation -- this tests lexer edge cases around => select dfunc(a =>-1); select dfunc(a =>+1); select dfunc(a =>/**/1); select dfunc(a =>--comment to be removed by psql 1); -- need DO to protect the -- from psql do $$ declare r integer; begin select dfunc(a=>-- comment 1) into r; raise info 'r = %', r; end; $$; -- check reverse-listing of named-arg calls CREATE VIEW dfview AS SELECT q1, q2, dfunc(q1,q2, flag := q1>q2) as c3, dfunc(q1, flag := q1= 1000 AND oid < 3000 ORDER BY oid; RESET client_min_messages; -- test proper begins here CREATE USER regress_priv_user1; CREATE USER regress_priv_user2; CREATE USER regress_priv_user3; CREATE USER regress_priv_user4; CREATE USER regress_priv_user5; CREATE USER regress_priv_user5; -- duplicate CREATE GROUP regress_priv_group1; CREATE GROUP regress_priv_group2 WITH USER regress_priv_user1, regress_priv_user2; ALTER GROUP regress_priv_group1 ADD USER regress_priv_user4; ALTER GROUP regress_priv_group2 ADD USER regress_priv_user2; -- duplicate ALTER GROUP regress_priv_group2 DROP USER regress_priv_user2; GRANT regress_priv_group2 TO regress_priv_user4 WITH ADMIN OPTION; -- test owner privileges SET SESSION AUTHORIZATION regress_priv_user1; SELECT session_user, current_user; CREATE TABLE atest1 ( a int, b text ); SELECT * FROM atest1; INSERT INTO atest1 VALUES (1, 'one'); DELETE FROM atest1; UPDATE atest1 SET a = 1 WHERE b = 'blech'; TRUNCATE atest1; BEGIN; LOCK atest1 IN ACCESS EXCLUSIVE MODE; COMMIT; REVOKE ALL ON atest1 FROM PUBLIC; SELECT * FROM atest1; GRANT ALL ON atest1 TO regress_priv_user2; GRANT SELECT ON atest1 TO regress_priv_user3, regress_priv_user4; SELECT * FROM atest1; CREATE TABLE atest2 (col1 varchar(10), col2 boolean); GRANT SELECT ON atest2 TO regress_priv_user2; GRANT UPDATE ON atest2 TO regress_priv_user3; GRANT INSERT ON atest2 TO regress_priv_user4; GRANT TRUNCATE ON atest2 TO regress_priv_user5; SET SESSION AUTHORIZATION regress_priv_user2; SELECT session_user, current_user; -- try various combinations of queries on atest1 and atest2 SELECT * FROM atest1; -- ok SELECT * FROM atest2; -- ok INSERT INTO atest1 VALUES (2, 'two'); -- ok INSERT INTO atest2 VALUES ('foo', true); -- fail INSERT INTO atest1 SELECT 1, b FROM atest1; -- ok UPDATE atest1 SET a = 1 WHERE a = 2; -- ok UPDATE atest2 SET col2 = NOT col2; -- fail SELECT * FROM atest1 FOR UPDATE; -- ok SELECT * FROM atest2 FOR UPDATE; -- fail DELETE FROM atest2; -- fail TRUNCATE atest2; -- fail BEGIN; LOCK atest2 IN ACCESS EXCLUSIVE MODE; -- fail COMMIT; COPY atest2 FROM stdin; -- fail GRANT ALL ON atest1 TO PUBLIC; -- fail -- checks in subquery, both ok SELECT * FROM atest1 WHERE ( b IN ( SELECT col1 FROM atest2 ) ); SELECT * FROM atest2 WHERE ( col1 IN ( SELECT b FROM atest1 ) ); SET SESSION AUTHORIZATION regress_priv_user3; SELECT session_user, current_user; SELECT * FROM atest1; -- ok SELECT * FROM atest2; -- fail INSERT INTO atest1 VALUES (2, 'two'); -- fail INSERT INTO atest2 VALUES ('foo', true); -- fail INSERT INTO atest1 SELECT 1, b FROM atest1; -- fail UPDATE atest1 SET a = 1 WHERE a = 2; -- fail UPDATE atest2 SET col2 = NULL; -- ok UPDATE atest2 SET col2 = NOT col2; -- fails; requires SELECT on atest2 UPDATE atest2 SET col2 = true FROM atest1 WHERE atest1.a = 5; -- ok SELECT * FROM atest1 FOR UPDATE; -- fail SELECT * FROM atest2 FOR UPDATE; -- fail DELETE FROM atest2; -- fail TRUNCATE atest2; -- fail BEGIN; LOCK atest2 IN ACCESS EXCLUSIVE MODE; -- ok COMMIT; COPY atest2 FROM stdin; -- fail -- checks in subquery, both fail SELECT * FROM atest1 WHERE ( b IN ( SELECT col1 FROM atest2 ) ); SELECT * FROM atest2 WHERE ( col1 IN ( SELECT b FROM atest1 ) ); SET SESSION AUTHORIZATION regress_priv_user4; COPY atest2 FROM stdin; -- ok bar true \. SELECT * FROM atest1; -- ok -- test leaky-function protections in selfuncs -- regress_priv_user1 will own a table and provide views for it. SET SESSION AUTHORIZATION regress_priv_user1; CREATE TABLE atest12 as SELECT x AS a, 10001 - x AS b FROM generate_series(1,10000) x; CREATE INDEX ON atest12 (a); CREATE INDEX ON atest12 (abs(a)); -- results below depend on having quite accurate stats for atest12, so... ALTER TABLE atest12 SET (autovacuum_enabled = off); SET default_statistics_target = 10000; VACUUM ANALYZE atest12; RESET default_statistics_target; CREATE FUNCTION leak(integer,integer) RETURNS boolean AS $$begin return $1 < $2; end$$ LANGUAGE plpgsql immutable; CREATE OPERATOR <<< (procedure = leak, leftarg = integer, rightarg = integer, restrict = scalarltsel); -- views with leaky operator CREATE VIEW atest12v AS SELECT * FROM atest12 WHERE b <<< 5; CREATE VIEW atest12sbv WITH (security_barrier=true) AS SELECT * FROM atest12 WHERE b <<< 5; GRANT SELECT ON atest12v TO PUBLIC; GRANT SELECT ON atest12sbv TO PUBLIC; -- This plan should use nestloop, knowing that few rows will be selected. EXPLAIN (COSTS OFF) SELECT * FROM atest12v x, atest12v y WHERE x.a = y.b; -- And this one. EXPLAIN (COSTS OFF) SELECT * FROM atest12 x, atest12 y WHERE x.a = y.b and abs(y.a) <<< 5; -- This should also be a nestloop, but the security barrier forces the inner -- scan to be materialized EXPLAIN (COSTS OFF) SELECT * FROM atest12sbv x, atest12sbv y WHERE x.a = y.b; -- Check if regress_priv_user2 can break security. SET SESSION AUTHORIZATION regress_priv_user2; CREATE FUNCTION leak2(integer,integer) RETURNS boolean AS $$begin raise notice 'leak % %', $1, $2; return $1 > $2; end$$ LANGUAGE plpgsql immutable; CREATE OPERATOR >>> (procedure = leak2, leftarg = integer, rightarg = integer, restrict = scalargtsel); -- This should not show any "leak" notices before failing. EXPLAIN (COSTS OFF) SELECT * FROM atest12 WHERE a >>> 0; -- These plans should continue to use a nestloop, since they execute with the -- privileges of the view owner. EXPLAIN (COSTS OFF) SELECT * FROM atest12v x, atest12v y WHERE x.a = y.b; EXPLAIN (COSTS OFF) SELECT * FROM atest12sbv x, atest12sbv y WHERE x.a = y.b; -- A non-security barrier view does not guard against information leakage. EXPLAIN (COSTS OFF) SELECT * FROM atest12v x, atest12v y WHERE x.a = y.b and abs(y.a) <<< 5; -- But a security barrier view isolates the leaky operator. EXPLAIN (COSTS OFF) SELECT * FROM atest12sbv x, atest12sbv y WHERE x.a = y.b and abs(y.a) <<< 5; -- Now regress_priv_user1 grants sufficient access to regress_priv_user2. SET SESSION AUTHORIZATION regress_priv_user1; GRANT SELECT (a, b) ON atest12 TO PUBLIC; SET SESSION AUTHORIZATION regress_priv_user2; -- regress_priv_user2 should continue to get a good row estimate. EXPLAIN (COSTS OFF) SELECT * FROM atest12v x, atest12v y WHERE x.a = y.b; -- But not for this, due to lack of table-wide permissions needed -- to make use of the expression index's statistics. EXPLAIN (COSTS OFF) SELECT * FROM atest12 x, atest12 y WHERE x.a = y.b and abs(y.a) <<< 5; -- clean up (regress_priv_user1's objects are all dropped later) DROP FUNCTION leak2(integer, integer) CASCADE; -- groups SET SESSION AUTHORIZATION regress_priv_user3; CREATE TABLE atest3 (one int, two int, three int); GRANT DELETE ON atest3 TO GROUP regress_priv_group2; SET SESSION AUTHORIZATION regress_priv_user1; SELECT * FROM atest3; -- fail DELETE FROM atest3; -- ok BEGIN; RESET SESSION AUTHORIZATION; ALTER ROLE regress_priv_user1 NOINHERIT; SET SESSION AUTHORIZATION regress_priv_user1; DELETE FROM atest3; ROLLBACK; -- views SET SESSION AUTHORIZATION regress_priv_user3; CREATE VIEW atestv1 AS SELECT * FROM atest1; -- ok /* The next *should* fail, but it's not implemented that way yet. */ CREATE VIEW atestv2 AS SELECT * FROM atest2; CREATE VIEW atestv3 AS SELECT * FROM atest3; -- ok /* Empty view is a corner case that failed in 9.2. */ CREATE VIEW atestv0 AS SELECT 0 as x WHERE false; -- ok SELECT * FROM atestv1; -- ok SELECT * FROM atestv2; -- fail GRANT SELECT ON atestv1, atestv3 TO regress_priv_user4; GRANT SELECT ON atestv2 TO regress_priv_user2; SET SESSION AUTHORIZATION regress_priv_user4; SELECT * FROM atestv1; -- ok SELECT * FROM atestv2; -- fail SELECT * FROM atestv3; -- ok SELECT * FROM atestv0; -- fail -- Appendrels excluded by constraints failed to check permissions in 8.4-9.2. select * from ((select a.q1 as x from int8_tbl a offset 0) union all (select b.q2 as x from int8_tbl b offset 0)) ss where false; set constraint_exclusion = on; select * from ((select a.q1 as x, random() from int8_tbl a where q1 > 0) union all (select b.q2 as x, random() from int8_tbl b where q2 > 0)) ss where x < 0; reset constraint_exclusion; CREATE VIEW atestv4 AS SELECT * FROM atestv3; -- nested view SELECT * FROM atestv4; -- ok GRANT SELECT ON atestv4 TO regress_priv_user2; SET SESSION AUTHORIZATION regress_priv_user2; -- Two complex cases: SELECT * FROM atestv3; -- fail SELECT * FROM atestv4; -- ok (even though regress_priv_user2 cannot access underlying atestv3) SELECT * FROM atest2; -- ok SELECT * FROM atestv2; -- fail (even though regress_priv_user2 can access underlying atest2) -- Test column level permissions SET SESSION AUTHORIZATION regress_priv_user1; CREATE TABLE atest5 (one int, two int unique, three int, four int unique); CREATE TABLE atest6 (one int, two int, blue int); GRANT SELECT (one), INSERT (two), UPDATE (three) ON atest5 TO regress_priv_user4; GRANT ALL (one) ON atest5 TO regress_priv_user3; INSERT INTO atest5 VALUES (1,2,3); SET SESSION AUTHORIZATION regress_priv_user4; SELECT * FROM atest5; -- fail SELECT one FROM atest5; -- ok COPY atest5 (one) TO stdout; -- ok SELECT two FROM atest5; -- fail COPY atest5 (two) TO stdout; -- fail SELECT atest5 FROM atest5; -- fail COPY atest5 (one,two) TO stdout; -- fail SELECT 1 FROM atest5; -- ok SELECT 1 FROM atest5 a JOIN atest5 b USING (one); -- ok SELECT 1 FROM atest5 a JOIN atest5 b USING (two); -- fail SELECT 1 FROM atest5 a NATURAL JOIN atest5 b; -- fail SELECT * FROM (atest5 a JOIN atest5 b USING (one)) j; -- fail SELECT j.* FROM (atest5 a JOIN atest5 b USING (one)) j; -- fail SELECT (j.*) IS NULL FROM (atest5 a JOIN atest5 b USING (one)) j; -- fail SELECT one FROM (atest5 a JOIN atest5 b(one,x,y,z) USING (one)) j; -- ok SELECT j.one FROM (atest5 a JOIN atest5 b(one,x,y,z) USING (one)) j; -- ok SELECT two FROM (atest5 a JOIN atest5 b(one,x,y,z) USING (one)) j; -- fail SELECT j.two FROM (atest5 a JOIN atest5 b(one,x,y,z) USING (one)) j; -- fail SELECT y FROM (atest5 a JOIN atest5 b(one,x,y,z) USING (one)) j; -- fail SELECT j.y FROM (atest5 a JOIN atest5 b(one,x,y,z) USING (one)) j; -- fail SELECT * FROM (atest5 a JOIN atest5 b USING (one)); -- fail SELECT a.* FROM (atest5 a JOIN atest5 b USING (one)); -- fail SELECT (a.*) IS NULL FROM (atest5 a JOIN atest5 b USING (one)); -- fail SELECT two FROM (atest5 a JOIN atest5 b(one,x,y,z) USING (one)); -- fail SELECT a.two FROM (atest5 a JOIN atest5 b(one,x,y,z) USING (one)); -- fail SELECT y FROM (atest5 a JOIN atest5 b(one,x,y,z) USING (one)); -- fail SELECT b.y FROM (atest5 a JOIN atest5 b(one,x,y,z) USING (one)); -- fail SELECT y FROM (atest5 a LEFT JOIN atest5 b(one,x,y,z) USING (one)); -- fail SELECT b.y FROM (atest5 a LEFT JOIN atest5 b(one,x,y,z) USING (one)); -- fail SELECT y FROM (atest5 a FULL JOIN atest5 b(one,x,y,z) USING (one)); -- fail SELECT b.y FROM (atest5 a FULL JOIN atest5 b(one,x,y,z) USING (one)); -- fail SELECT 1 FROM atest5 WHERE two = 2; -- fail SELECT * FROM atest1, atest5; -- fail SELECT atest1.* FROM atest1, atest5; -- ok SELECT atest1.*,atest5.one FROM atest1, atest5; -- ok SELECT atest1.*,atest5.one FROM atest1 JOIN atest5 ON (atest1.a = atest5.two); -- fail SELECT atest1.*,atest5.one FROM atest1 JOIN atest5 ON (atest1.a = atest5.one); -- ok SELECT one, two FROM atest5; -- fail SET SESSION AUTHORIZATION regress_priv_user1; GRANT SELECT (one,two) ON atest6 TO regress_priv_user4; SET SESSION AUTHORIZATION regress_priv_user4; SELECT one, two FROM atest5 NATURAL JOIN atest6; -- fail still SET SESSION AUTHORIZATION regress_priv_user1; GRANT SELECT (two) ON atest5 TO regress_priv_user4; SET SESSION AUTHORIZATION regress_priv_user4; SELECT one, two FROM atest5 NATURAL JOIN atest6; -- ok now -- test column-level privileges for INSERT and UPDATE INSERT INTO atest5 (two) VALUES (3); -- ok COPY atest5 FROM stdin; -- fail COPY atest5 (two) FROM stdin; -- ok 1 \. INSERT INTO atest5 (three) VALUES (4); -- fail INSERT INTO atest5 VALUES (5,5,5); -- fail UPDATE atest5 SET three = 10; -- ok UPDATE atest5 SET one = 8; -- fail UPDATE atest5 SET three = 5, one = 2; -- fail -- Check that column level privs are enforced in RETURNING -- Ok. INSERT INTO atest5(two) VALUES (6) ON CONFLICT (two) DO UPDATE set three = 10; -- Error. No SELECT on column three. INSERT INTO atest5(two) VALUES (6) ON CONFLICT (two) DO UPDATE set three = 10 RETURNING atest5.three; -- Ok. May SELECT on column "one": INSERT INTO atest5(two) VALUES (6) ON CONFLICT (two) DO UPDATE set three = 10 RETURNING atest5.one; -- Check that column level privileges are enforced for EXCLUDED -- Ok. we may select one INSERT INTO atest5(two) VALUES (6) ON CONFLICT (two) DO UPDATE set three = EXCLUDED.one; -- Error. No select rights on three INSERT INTO atest5(two) VALUES (6) ON CONFLICT (two) DO UPDATE set three = EXCLUDED.three; INSERT INTO atest5(two) VALUES (6) ON CONFLICT (two) DO UPDATE set one = 8; -- fails (due to UPDATE) INSERT INTO atest5(three) VALUES (4) ON CONFLICT (two) DO UPDATE set three = 10; -- fails (due to INSERT) -- Check that the columns in the inference require select privileges INSERT INTO atest5(four) VALUES (4); -- fail SET SESSION AUTHORIZATION regress_priv_user1; GRANT INSERT (four) ON atest5 TO regress_priv_user4; SET SESSION AUTHORIZATION regress_priv_user4; INSERT INTO atest5(four) VALUES (4) ON CONFLICT (four) DO UPDATE set three = 3; -- fails (due to SELECT) INSERT INTO atest5(four) VALUES (4) ON CONFLICT ON CONSTRAINT atest5_four_key DO UPDATE set three = 3; -- fails (due to SELECT) INSERT INTO atest5(four) VALUES (4); -- ok SET SESSION AUTHORIZATION regress_priv_user1; GRANT SELECT (four) ON atest5 TO regress_priv_user4; SET SESSION AUTHORIZATION regress_priv_user4; INSERT INTO atest5(four) VALUES (4) ON CONFLICT (four) DO UPDATE set three = 3; -- ok INSERT INTO atest5(four) VALUES (4) ON CONFLICT ON CONSTRAINT atest5_four_key DO UPDATE set three = 3; -- ok SET SESSION AUTHORIZATION regress_priv_user1; REVOKE ALL (one) ON atest5 FROM regress_priv_user4; GRANT SELECT (one,two,blue) ON atest6 TO regress_priv_user4; SET SESSION AUTHORIZATION regress_priv_user4; SELECT one FROM atest5; -- fail UPDATE atest5 SET one = 1; -- fail SELECT atest6 FROM atest6; -- ok COPY atest6 TO stdout; -- ok -- check error reporting with column privs SET SESSION AUTHORIZATION regress_priv_user1; CREATE TABLE t1 (c1 int, c2 int, c3 int check (c3 < 5), primary key (c1, c2)); GRANT SELECT (c1) ON t1 TO regress_priv_user2; GRANT INSERT (c1, c2, c3) ON t1 TO regress_priv_user2; GRANT UPDATE (c1, c2, c3) ON t1 TO regress_priv_user2; -- seed data INSERT INTO t1 VALUES (1, 1, 1); INSERT INTO t1 VALUES (1, 2, 1); INSERT INTO t1 VALUES (2, 1, 2); INSERT INTO t1 VALUES (2, 2, 2); INSERT INTO t1 VALUES (3, 1, 3); SET SESSION AUTHORIZATION regress_priv_user2; INSERT INTO t1 (c1, c2) VALUES (1, 1); -- fail, but row not shown UPDATE t1 SET c2 = 1; -- fail, but row not shown INSERT INTO t1 (c1, c2) VALUES (null, null); -- fail, but see columns being inserted INSERT INTO t1 (c3) VALUES (null); -- fail, but see columns being inserted or have SELECT INSERT INTO t1 (c1) VALUES (5); -- fail, but see columns being inserted or have SELECT UPDATE t1 SET c3 = 10; -- fail, but see columns with SELECT rights, or being modified SET SESSION AUTHORIZATION regress_priv_user1; DROP TABLE t1; -- check error reporting with column privs on a partitioned table CREATE TABLE errtst(a text, b text NOT NULL, c text, secret1 text, secret2 text) PARTITION BY LIST (a); CREATE TABLE errtst_part_1(secret2 text, c text, a text, b text NOT NULL, secret1 text); CREATE TABLE errtst_part_2(secret1 text, secret2 text, a text, c text, b text NOT NULL); ALTER TABLE errtst ATTACH PARTITION errtst_part_1 FOR VALUES IN ('aaa'); ALTER TABLE errtst ATTACH PARTITION errtst_part_2 FOR VALUES IN ('aaaa'); GRANT SELECT (a, b, c) ON TABLE errtst TO regress_priv_user2; GRANT UPDATE (a, b, c) ON TABLE errtst TO regress_priv_user2; GRANT INSERT (a, b, c) ON TABLE errtst TO regress_priv_user2; INSERT INTO errtst_part_1 (a, b, c, secret1, secret2) VALUES ('aaa', 'bbb', 'ccc', 'the body', 'is in the attic'); SET SESSION AUTHORIZATION regress_priv_user2; -- Perform a few updates that violate the NOT NULL constraint. Make sure -- the error messages don't leak the secret fields. -- simple insert. INSERT INTO errtst (a, b) VALUES ('aaa', NULL); -- simple update. UPDATE errtst SET b = NULL; -- partitioning key is updated, doesn't move the row. UPDATE errtst SET a = 'aaa', b = NULL; -- row is moved to another partition. UPDATE errtst SET a = 'aaaa', b = NULL; -- row is moved to another partition. This differs from the previous case in -- that the new partition is excluded by constraint exclusion, so its -- ResultRelInfo is not created at ExecInitModifyTable, but needs to be -- constructed on the fly when the updated tuple is routed to it. UPDATE errtst SET a = 'aaaa', b = NULL WHERE a = 'aaa'; SET SESSION AUTHORIZATION regress_priv_user1; DROP TABLE errtst; -- test column-level privileges when involved with DELETE SET SESSION AUTHORIZATION regress_priv_user1; ALTER TABLE atest6 ADD COLUMN three integer; GRANT DELETE ON atest5 TO regress_priv_user3; GRANT SELECT (two) ON atest5 TO regress_priv_user3; REVOKE ALL (one) ON atest5 FROM regress_priv_user3; GRANT SELECT (one) ON atest5 TO regress_priv_user4; SET SESSION AUTHORIZATION regress_priv_user4; SELECT atest6 FROM atest6; -- fail SELECT one FROM atest5 NATURAL JOIN atest6; -- fail SET SESSION AUTHORIZATION regress_priv_user1; ALTER TABLE atest6 DROP COLUMN three; SET SESSION AUTHORIZATION regress_priv_user4; SELECT atest6 FROM atest6; -- ok SELECT one FROM atest5 NATURAL JOIN atest6; -- ok SET SESSION AUTHORIZATION regress_priv_user1; ALTER TABLE atest6 DROP COLUMN two; REVOKE SELECT (one,blue) ON atest6 FROM regress_priv_user4; SET SESSION AUTHORIZATION regress_priv_user4; SELECT * FROM atest6; -- fail SELECT 1 FROM atest6; -- fail SET SESSION AUTHORIZATION regress_priv_user3; DELETE FROM atest5 WHERE one = 1; -- fail DELETE FROM atest5 WHERE two = 2; -- ok -- check inheritance cases SET SESSION AUTHORIZATION regress_priv_user1; CREATE TABLE atestp1 (f1 int, f2 int); CREATE TABLE atestp2 (fx int, fy int); CREATE TABLE atestc (fz int) INHERITS (atestp1, atestp2); GRANT SELECT(fx,fy,tableoid) ON atestp2 TO regress_priv_user2; GRANT SELECT(fx) ON atestc TO regress_priv_user2; SET SESSION AUTHORIZATION regress_priv_user2; SELECT fx FROM atestp2; -- ok SELECT fy FROM atestp2; -- ok SELECT atestp2 FROM atestp2; -- ok SELECT tableoid FROM atestp2; -- ok SELECT fy FROM atestc; -- fail SET SESSION AUTHORIZATION regress_priv_user1; GRANT SELECT(fy,tableoid) ON atestc TO regress_priv_user2; SET SESSION AUTHORIZATION regress_priv_user2; SELECT fx FROM atestp2; -- still ok SELECT fy FROM atestp2; -- ok SELECT atestp2 FROM atestp2; -- ok SELECT tableoid FROM atestp2; -- ok -- child's permissions do not apply when operating on parent SET SESSION AUTHORIZATION regress_priv_user1; REVOKE ALL ON atestc FROM regress_priv_user2; GRANT ALL ON atestp1 TO regress_priv_user2; SET SESSION AUTHORIZATION regress_priv_user2; SELECT f2 FROM atestp1; -- ok SELECT f2 FROM atestc; -- fail DELETE FROM atestp1; -- ok DELETE FROM atestc; -- fail UPDATE atestp1 SET f1 = 1; -- ok UPDATE atestc SET f1 = 1; -- fail TRUNCATE atestp1; -- ok TRUNCATE atestc; -- fail BEGIN; LOCK atestp1; END; BEGIN; LOCK atestc; END; -- privileges on functions, languages -- switch to superuser \c - REVOKE ALL PRIVILEGES ON LANGUAGE sql FROM PUBLIC; GRANT USAGE ON LANGUAGE sql TO regress_priv_user1; -- ok GRANT USAGE ON LANGUAGE c TO PUBLIC; -- fail SET SESSION AUTHORIZATION regress_priv_user1; GRANT USAGE ON LANGUAGE sql TO regress_priv_user2; -- fail CREATE FUNCTION priv_testfunc1(int) RETURNS int AS 'select 2 * $1;' LANGUAGE sql; CREATE FUNCTION priv_testfunc2(int) RETURNS int AS 'select 3 * $1;' LANGUAGE sql; CREATE AGGREGATE priv_testagg1(int) (sfunc = int4pl, stype = int4); CREATE PROCEDURE priv_testproc1(int) AS 'select $1;' LANGUAGE sql; REVOKE ALL ON FUNCTION priv_testfunc1(int), priv_testfunc2(int), priv_testagg1(int) FROM PUBLIC; GRANT EXECUTE ON FUNCTION priv_testfunc1(int), priv_testfunc2(int), priv_testagg1(int) TO regress_priv_user2; REVOKE ALL ON FUNCTION priv_testproc1(int) FROM PUBLIC; -- fail, not a function REVOKE ALL ON PROCEDURE priv_testproc1(int) FROM PUBLIC; GRANT EXECUTE ON PROCEDURE priv_testproc1(int) TO regress_priv_user2; GRANT USAGE ON FUNCTION priv_testfunc1(int) TO regress_priv_user3; -- semantic error GRANT USAGE ON FUNCTION priv_testagg1(int) TO regress_priv_user3; -- semantic error GRANT USAGE ON PROCEDURE priv_testproc1(int) TO regress_priv_user3; -- semantic error GRANT ALL PRIVILEGES ON FUNCTION priv_testfunc1(int) TO regress_priv_user4; GRANT ALL PRIVILEGES ON FUNCTION priv_testfunc_nosuch(int) TO regress_priv_user4; GRANT ALL PRIVILEGES ON FUNCTION priv_testagg1(int) TO regress_priv_user4; GRANT ALL PRIVILEGES ON PROCEDURE priv_testproc1(int) TO regress_priv_user4; CREATE FUNCTION priv_testfunc4(boolean) RETURNS text AS 'select col1 from atest2 where col2 = $1;' LANGUAGE sql SECURITY DEFINER; GRANT EXECUTE ON FUNCTION priv_testfunc4(boolean) TO regress_priv_user3; SET SESSION AUTHORIZATION regress_priv_user2; SELECT priv_testfunc1(5), priv_testfunc2(5); -- ok CREATE FUNCTION priv_testfunc3(int) RETURNS int AS 'select 2 * $1;' LANGUAGE sql; -- fail SELECT priv_testagg1(x) FROM (VALUES (1), (2), (3)) _(x); -- ok CALL priv_testproc1(6); -- ok SET SESSION AUTHORIZATION regress_priv_user3; SELECT priv_testfunc1(5); -- fail SELECT priv_testagg1(x) FROM (VALUES (1), (2), (3)) _(x); -- fail CALL priv_testproc1(6); -- fail SELECT col1 FROM atest2 WHERE col2 = true; -- fail SELECT priv_testfunc4(true); -- ok SET SESSION AUTHORIZATION regress_priv_user4; SELECT priv_testfunc1(5); -- ok SELECT priv_testagg1(x) FROM (VALUES (1), (2), (3)) _(x); -- ok CALL priv_testproc1(6); -- ok DROP FUNCTION priv_testfunc1(int); -- fail DROP AGGREGATE priv_testagg1(int); -- fail DROP PROCEDURE priv_testproc1(int); -- fail \c - DROP FUNCTION priv_testfunc1(int); -- ok -- restore to sanity GRANT ALL PRIVILEGES ON LANGUAGE sql TO PUBLIC; -- verify privilege checks on array-element coercions BEGIN; SELECT '{1}'::int4[]::int8[]; REVOKE ALL ON FUNCTION int8(integer) FROM PUBLIC; SELECT '{1}'::int4[]::int8[]; --superuser, succeed SET SESSION AUTHORIZATION regress_priv_user4; SELECT '{1}'::int4[]::int8[]; --other user, fail ROLLBACK; -- privileges on types -- switch to superuser \c - CREATE TYPE priv_testtype1 AS (a int, b text); REVOKE USAGE ON TYPE priv_testtype1 FROM PUBLIC; GRANT USAGE ON TYPE priv_testtype1 TO regress_priv_user2; GRANT USAGE ON TYPE _priv_testtype1 TO regress_priv_user2; -- fail GRANT USAGE ON DOMAIN priv_testtype1 TO regress_priv_user2; -- fail CREATE DOMAIN priv_testdomain1 AS int; REVOKE USAGE on DOMAIN priv_testdomain1 FROM PUBLIC; GRANT USAGE ON DOMAIN priv_testdomain1 TO regress_priv_user2; GRANT USAGE ON TYPE priv_testdomain1 TO regress_priv_user2; -- ok SET SESSION AUTHORIZATION regress_priv_user1; -- commands that should fail CREATE AGGREGATE priv_testagg1a(priv_testdomain1) (sfunc = int4_sum, stype = bigint); CREATE DOMAIN priv_testdomain2a AS priv_testdomain1; CREATE DOMAIN priv_testdomain3a AS int; CREATE FUNCTION castfunc(int) RETURNS priv_testdomain3a AS $$ SELECT $1::priv_testdomain3a $$ LANGUAGE SQL; CREATE CAST (priv_testdomain1 AS priv_testdomain3a) WITH FUNCTION castfunc(int); DROP FUNCTION castfunc(int) CASCADE; DROP DOMAIN priv_testdomain3a; CREATE FUNCTION priv_testfunc5a(a priv_testdomain1) RETURNS int LANGUAGE SQL AS $$ SELECT $1 $$; CREATE FUNCTION priv_testfunc6a(b int) RETURNS priv_testdomain1 LANGUAGE SQL AS $$ SELECT $1::priv_testdomain1 $$; CREATE OPERATOR !+! (PROCEDURE = int4pl, LEFTARG = priv_testdomain1, RIGHTARG = priv_testdomain1); CREATE TABLE test5a (a int, b priv_testdomain1); CREATE TABLE test6a OF priv_testtype1; CREATE TABLE test10a (a int[], b priv_testtype1[]); CREATE TABLE test9a (a int, b int); ALTER TABLE test9a ADD COLUMN c priv_testdomain1; ALTER TABLE test9a ALTER COLUMN b TYPE priv_testdomain1; CREATE TYPE test7a AS (a int, b priv_testdomain1); CREATE TYPE test8a AS (a int, b int); ALTER TYPE test8a ADD ATTRIBUTE c priv_testdomain1; ALTER TYPE test8a ALTER ATTRIBUTE b TYPE priv_testdomain1; CREATE TABLE test11a AS (SELECT 1::priv_testdomain1 AS a); REVOKE ALL ON TYPE priv_testtype1 FROM PUBLIC; SET SESSION AUTHORIZATION regress_priv_user2; -- commands that should succeed CREATE AGGREGATE priv_testagg1b(priv_testdomain1) (sfunc = int4_sum, stype = bigint); CREATE DOMAIN priv_testdomain2b AS priv_testdomain1; CREATE DOMAIN priv_testdomain3b AS int; CREATE FUNCTION castfunc(int) RETURNS priv_testdomain3b AS $$ SELECT $1::priv_testdomain3b $$ LANGUAGE SQL; CREATE CAST (priv_testdomain1 AS priv_testdomain3b) WITH FUNCTION castfunc(int); CREATE FUNCTION priv_testfunc5b(a priv_testdomain1) RETURNS int LANGUAGE SQL AS $$ SELECT $1 $$; CREATE FUNCTION priv_testfunc6b(b int) RETURNS priv_testdomain1 LANGUAGE SQL AS $$ SELECT $1::priv_testdomain1 $$; CREATE OPERATOR !! (PROCEDURE = priv_testfunc5b, RIGHTARG = priv_testdomain1); CREATE TABLE test5b (a int, b priv_testdomain1); CREATE TABLE test6b OF priv_testtype1; CREATE TABLE test10b (a int[], b priv_testtype1[]); CREATE TABLE test9b (a int, b int); ALTER TABLE test9b ADD COLUMN c priv_testdomain1; ALTER TABLE test9b ALTER COLUMN b TYPE priv_testdomain1; CREATE TYPE test7b AS (a int, b priv_testdomain1); CREATE TYPE test8b AS (a int, b int); ALTER TYPE test8b ADD ATTRIBUTE c priv_testdomain1; ALTER TYPE test8b ALTER ATTRIBUTE b TYPE priv_testdomain1; CREATE TABLE test11b AS (SELECT 1::priv_testdomain1 AS a); REVOKE ALL ON TYPE priv_testtype1 FROM PUBLIC; \c - DROP AGGREGATE priv_testagg1b(priv_testdomain1); DROP DOMAIN priv_testdomain2b; DROP OPERATOR !! (NONE, priv_testdomain1); DROP FUNCTION priv_testfunc5b(a priv_testdomain1); DROP FUNCTION priv_testfunc6b(b int); DROP TABLE test5b; DROP TABLE test6b; DROP TABLE test9b; DROP TABLE test10b; DROP TYPE test7b; DROP TYPE test8b; DROP CAST (priv_testdomain1 AS priv_testdomain3b); DROP FUNCTION castfunc(int) CASCADE; DROP DOMAIN priv_testdomain3b; DROP TABLE test11b; DROP TYPE priv_testtype1; -- ok DROP DOMAIN priv_testdomain1; -- ok -- truncate SET SESSION AUTHORIZATION regress_priv_user5; TRUNCATE atest2; -- ok TRUNCATE atest3; -- fail -- has_table_privilege function -- bad-input checks select has_table_privilege(NULL,'pg_authid','select'); select has_table_privilege('pg_shad','select'); select has_table_privilege('nosuchuser','pg_authid','select'); select has_table_privilege('pg_authid','sel'); select has_table_privilege(-999999,'pg_authid','update'); select has_table_privilege(1,'select'); -- superuser \c - select has_table_privilege(current_user,'pg_authid','select'); select has_table_privilege(current_user,'pg_authid','insert'); select has_table_privilege(t2.oid,'pg_authid','update') from (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege(t2.oid,'pg_authid','delete') from (select oid from pg_roles where rolname = current_user) as t2; -- 'rule' privilege no longer exists, but for backwards compatibility -- has_table_privilege still recognizes the keyword and says FALSE select has_table_privilege(current_user,t1.oid,'rule') from (select oid from pg_class where relname = 'pg_authid') as t1; select has_table_privilege(current_user,t1.oid,'references') from (select oid from pg_class where relname = 'pg_authid') as t1; select has_table_privilege(t2.oid,t1.oid,'select') from (select oid from pg_class where relname = 'pg_authid') as t1, (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege(t2.oid,t1.oid,'insert') from (select oid from pg_class where relname = 'pg_authid') as t1, (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege('pg_authid','update'); select has_table_privilege('pg_authid','delete'); select has_table_privilege('pg_authid','truncate'); select has_table_privilege(t1.oid,'select') from (select oid from pg_class where relname = 'pg_authid') as t1; select has_table_privilege(t1.oid,'trigger') from (select oid from pg_class where relname = 'pg_authid') as t1; -- non-superuser SET SESSION AUTHORIZATION regress_priv_user3; select has_table_privilege(current_user,'pg_class','select'); select has_table_privilege(current_user,'pg_class','insert'); select has_table_privilege(t2.oid,'pg_class','update') from (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege(t2.oid,'pg_class','delete') from (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege(current_user,t1.oid,'references') from (select oid from pg_class where relname = 'pg_class') as t1; select has_table_privilege(t2.oid,t1.oid,'select') from (select oid from pg_class where relname = 'pg_class') as t1, (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege(t2.oid,t1.oid,'insert') from (select oid from pg_class where relname = 'pg_class') as t1, (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege('pg_class','update'); select has_table_privilege('pg_class','delete'); select has_table_privilege('pg_class','truncate'); select has_table_privilege(t1.oid,'select') from (select oid from pg_class where relname = 'pg_class') as t1; select has_table_privilege(t1.oid,'trigger') from (select oid from pg_class where relname = 'pg_class') as t1; select has_table_privilege(current_user,'atest1','select'); select has_table_privilege(current_user,'atest1','insert'); select has_table_privilege(t2.oid,'atest1','update') from (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege(t2.oid,'atest1','delete') from (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege(current_user,t1.oid,'references') from (select oid from pg_class where relname = 'atest1') as t1; select has_table_privilege(t2.oid,t1.oid,'select') from (select oid from pg_class where relname = 'atest1') as t1, (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege(t2.oid,t1.oid,'insert') from (select oid from pg_class where relname = 'atest1') as t1, (select oid from pg_roles where rolname = current_user) as t2; select has_table_privilege('atest1','update'); select has_table_privilege('atest1','delete'); select has_table_privilege('atest1','truncate'); select has_table_privilege(t1.oid,'select') from (select oid from pg_class where relname = 'atest1') as t1; select has_table_privilege(t1.oid,'trigger') from (select oid from pg_class where relname = 'atest1') as t1; -- has_column_privilege function -- bad-input checks (as non-super-user) select has_column_privilege('pg_authid',NULL,'select'); select has_column_privilege('pg_authid','nosuchcol','select'); select has_column_privilege(9999,'nosuchcol','select'); select has_column_privilege(9999,99::int2,'select'); select has_column_privilege('pg_authid',99::int2,'select'); select has_column_privilege(9999,99::int2,'select'); create temp table mytable(f1 int, f2 int, f3 int); alter table mytable drop column f2; select has_column_privilege('mytable','f2','select'); select has_column_privilege('mytable','........pg.dropped.2........','select'); select has_column_privilege('mytable',2::int2,'select'); revoke select on table mytable from regress_priv_user3; select has_column_privilege('mytable',2::int2,'select'); drop table mytable; -- Grant options SET SESSION AUTHORIZATION regress_priv_user1; CREATE TABLE atest4 (a int); GRANT SELECT ON atest4 TO regress_priv_user2 WITH GRANT OPTION; GRANT UPDATE ON atest4 TO regress_priv_user2; GRANT SELECT ON atest4 TO GROUP regress_priv_group1 WITH GRANT OPTION; SET SESSION AUTHORIZATION regress_priv_user2; GRANT SELECT ON atest4 TO regress_priv_user3; GRANT UPDATE ON atest4 TO regress_priv_user3; -- fail SET SESSION AUTHORIZATION regress_priv_user1; REVOKE SELECT ON atest4 FROM regress_priv_user3; -- does nothing SELECT has_table_privilege('regress_priv_user3', 'atest4', 'SELECT'); -- true REVOKE SELECT ON atest4 FROM regress_priv_user2; -- fail REVOKE GRANT OPTION FOR SELECT ON atest4 FROM regress_priv_user2 CASCADE; -- ok SELECT has_table_privilege('regress_priv_user2', 'atest4', 'SELECT'); -- true SELECT has_table_privilege('regress_priv_user3', 'atest4', 'SELECT'); -- false SELECT has_table_privilege('regress_priv_user1', 'atest4', 'SELECT WITH GRANT OPTION'); -- true -- security-restricted operations \c - CREATE ROLE regress_sro_user; SET SESSION AUTHORIZATION regress_sro_user; CREATE FUNCTION unwanted_grant() RETURNS void LANGUAGE sql AS 'GRANT regress_priv_group2 TO regress_sro_user'; CREATE FUNCTION mv_action() RETURNS bool LANGUAGE sql AS 'DECLARE c CURSOR WITH HOLD FOR SELECT unwanted_grant(); SELECT true'; -- REFRESH of this MV will queue a GRANT at end of transaction CREATE MATERIALIZED VIEW sro_mv AS SELECT mv_action() WITH NO DATA; REFRESH MATERIALIZED VIEW sro_mv; \c - REFRESH MATERIALIZED VIEW sro_mv; SET SESSION AUTHORIZATION regress_sro_user; -- INSERT to this table will queue a GRANT at end of transaction CREATE TABLE sro_trojan_table (); CREATE FUNCTION sro_trojan() RETURNS trigger LANGUAGE plpgsql AS 'BEGIN PERFORM unwanted_grant(); RETURN NULL; END'; CREATE CONSTRAINT TRIGGER t AFTER INSERT ON sro_trojan_table INITIALLY DEFERRED FOR EACH ROW EXECUTE PROCEDURE sro_trojan(); -- Now, REFRESH will issue such an INSERT, queueing the GRANT CREATE OR REPLACE FUNCTION mv_action() RETURNS bool LANGUAGE sql AS 'INSERT INTO sro_trojan_table DEFAULT VALUES; SELECT true'; REFRESH MATERIALIZED VIEW sro_mv; \c - REFRESH MATERIALIZED VIEW sro_mv; BEGIN; SET CONSTRAINTS ALL IMMEDIATE; REFRESH MATERIALIZED VIEW sro_mv; COMMIT; DROP OWNED BY regress_sro_user; DROP ROLE regress_sro_user; -- Admin options SET SESSION AUTHORIZATION regress_priv_user4; CREATE FUNCTION dogrant_ok() RETURNS void LANGUAGE sql SECURITY DEFINER AS 'GRANT regress_priv_group2 TO regress_priv_user5'; GRANT regress_priv_group2 TO regress_priv_user5; -- ok: had ADMIN OPTION SET ROLE regress_priv_group2; GRANT regress_priv_group2 TO regress_priv_user5; -- fails: SET ROLE suspended privilege SET SESSION AUTHORIZATION regress_priv_user1; GRANT regress_priv_group2 TO regress_priv_user5; -- fails: no ADMIN OPTION SELECT dogrant_ok(); -- ok: SECURITY DEFINER conveys ADMIN SET ROLE regress_priv_group2; GRANT regress_priv_group2 TO regress_priv_user5; -- fails: SET ROLE did not help SET SESSION AUTHORIZATION regress_priv_group2; GRANT regress_priv_group2 TO regress_priv_user5; -- ok: a role can self-admin CREATE FUNCTION dogrant_fails() RETURNS void LANGUAGE sql SECURITY DEFINER AS 'GRANT regress_priv_group2 TO regress_priv_user5'; SELECT dogrant_fails(); -- fails: no self-admin in SECURITY DEFINER DROP FUNCTION dogrant_fails(); SET SESSION AUTHORIZATION regress_priv_user4; DROP FUNCTION dogrant_ok(); REVOKE regress_priv_group2 FROM regress_priv_user5; -- has_sequence_privilege tests \c - CREATE SEQUENCE x_seq; GRANT USAGE on x_seq to regress_priv_user2; SELECT has_sequence_privilege('regress_priv_user1', 'atest1', 'SELECT'); SELECT has_sequence_privilege('regress_priv_user1', 'x_seq', 'INSERT'); SELECT has_sequence_privilege('regress_priv_user1', 'x_seq', 'SELECT'); SET SESSION AUTHORIZATION regress_priv_user2; SELECT has_sequence_privilege('x_seq', 'USAGE'); -- largeobject privilege tests \c - SET SESSION AUTHORIZATION regress_priv_user1; SELECT lo_create(1001); SELECT lo_create(1002); SELECT lo_create(1003); SELECT lo_create(1004); SELECT lo_create(1005); GRANT ALL ON LARGE OBJECT 1001 TO PUBLIC; GRANT SELECT ON LARGE OBJECT 1003 TO regress_priv_user2; GRANT SELECT,UPDATE ON LARGE OBJECT 1004 TO regress_priv_user2; GRANT ALL ON LARGE OBJECT 1005 TO regress_priv_user2; GRANT SELECT ON LARGE OBJECT 1005 TO regress_priv_user2 WITH GRANT OPTION; GRANT SELECT, INSERT ON LARGE OBJECT 1001 TO PUBLIC; -- to be failed GRANT SELECT, UPDATE ON LARGE OBJECT 1001 TO nosuchuser; -- to be failed GRANT SELECT, UPDATE ON LARGE OBJECT 999 TO PUBLIC; -- to be failed \c - SET SESSION AUTHORIZATION regress_priv_user2; SELECT lo_create(2001); SELECT lo_create(2002); SELECT loread(lo_open(1001, x'20000'::int), 32); -- allowed, for now SELECT lowrite(lo_open(1001, x'40000'::int), 'abcd'); -- fail, wrong mode SELECT loread(lo_open(1001, x'40000'::int), 32); SELECT loread(lo_open(1002, x'40000'::int), 32); -- to be denied SELECT loread(lo_open(1003, x'40000'::int), 32); SELECT loread(lo_open(1004, x'40000'::int), 32); SELECT lowrite(lo_open(1001, x'20000'::int), 'abcd'); SELECT lowrite(lo_open(1002, x'20000'::int), 'abcd'); -- to be denied SELECT lowrite(lo_open(1003, x'20000'::int), 'abcd'); -- to be denied SELECT lowrite(lo_open(1004, x'20000'::int), 'abcd'); GRANT SELECT ON LARGE OBJECT 1005 TO regress_priv_user3; GRANT UPDATE ON LARGE OBJECT 1006 TO regress_priv_user3; -- to be denied REVOKE ALL ON LARGE OBJECT 2001, 2002 FROM PUBLIC; GRANT ALL ON LARGE OBJECT 2001 TO regress_priv_user3; SELECT lo_unlink(1001); -- to be denied SELECT lo_unlink(2002); \c - -- confirm ACL setting SELECT oid, pg_get_userbyid(lomowner) ownername, lomacl FROM pg_largeobject_metadata WHERE oid >= 1000 AND oid < 3000 ORDER BY oid; SET SESSION AUTHORIZATION regress_priv_user3; SELECT loread(lo_open(1001, x'40000'::int), 32); SELECT loread(lo_open(1003, x'40000'::int), 32); -- to be denied SELECT loread(lo_open(1005, x'40000'::int), 32); SELECT lo_truncate(lo_open(1005, x'20000'::int), 10); -- to be denied SELECT lo_truncate(lo_open(2001, x'20000'::int), 10); -- compatibility mode in largeobject permission \c - SET lo_compat_privileges = false; -- default setting SET SESSION AUTHORIZATION regress_priv_user4; SELECT loread(lo_open(1002, x'40000'::int), 32); -- to be denied SELECT lowrite(lo_open(1002, x'20000'::int), 'abcd'); -- to be denied SELECT lo_truncate(lo_open(1002, x'20000'::int), 10); -- to be denied SELECT lo_put(1002, 1, 'abcd'); -- to be denied SELECT lo_unlink(1002); -- to be denied SELECT lo_export(1001, '/dev/null'); -- to be denied SELECT lo_import('/dev/null'); -- to be denied SELECT lo_import('/dev/null', 2003); -- to be denied \c - SET lo_compat_privileges = true; -- compatibility mode SET SESSION AUTHORIZATION regress_priv_user4; SELECT loread(lo_open(1002, x'40000'::int), 32); SELECT lowrite(lo_open(1002, x'20000'::int), 'abcd'); SELECT lo_truncate(lo_open(1002, x'20000'::int), 10); SELECT lo_unlink(1002); SELECT lo_export(1001, '/dev/null'); -- to be denied -- don't allow unpriv users to access pg_largeobject contents \c - SELECT * FROM pg_largeobject LIMIT 0; SET SESSION AUTHORIZATION regress_priv_user1; SELECT * FROM pg_largeobject LIMIT 0; -- to be denied -- test default ACLs \c - CREATE SCHEMA testns; GRANT ALL ON SCHEMA testns TO regress_priv_user1; CREATE TABLE testns.acltest1 (x int); SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'SELECT'); -- no SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'INSERT'); -- no -- placeholder for test with duplicated schema and role names ALTER DEFAULT PRIVILEGES IN SCHEMA testns,testns GRANT SELECT ON TABLES TO public,public; SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'SELECT'); -- no SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'INSERT'); -- no DROP TABLE testns.acltest1; CREATE TABLE testns.acltest1 (x int); SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'SELECT'); -- yes SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'INSERT'); -- no ALTER DEFAULT PRIVILEGES IN SCHEMA testns GRANT INSERT ON TABLES TO regress_priv_user1; DROP TABLE testns.acltest1; CREATE TABLE testns.acltest1 (x int); SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'SELECT'); -- yes SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'INSERT'); -- yes ALTER DEFAULT PRIVILEGES IN SCHEMA testns REVOKE INSERT ON TABLES FROM regress_priv_user1; DROP TABLE testns.acltest1; CREATE TABLE testns.acltest1 (x int); SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'SELECT'); -- yes SELECT has_table_privilege('regress_priv_user1', 'testns.acltest1', 'INSERT'); -- no ALTER DEFAULT PRIVILEGES FOR ROLE regress_priv_user1 REVOKE EXECUTE ON FUNCTIONS FROM public; ALTER DEFAULT PRIVILEGES IN SCHEMA testns GRANT USAGE ON SCHEMAS TO regress_priv_user2; -- error -- -- Testing blanket default grants is very hazardous since it might change -- the privileges attached to objects created by concurrent regression tests. -- To avoid that, be sure to revoke the privileges again before committing. -- BEGIN; ALTER DEFAULT PRIVILEGES GRANT USAGE ON SCHEMAS TO regress_priv_user2; CREATE SCHEMA testns2; SELECT has_schema_privilege('regress_priv_user2', 'testns2', 'USAGE'); -- yes SELECT has_schema_privilege('regress_priv_user2', 'testns2', 'CREATE'); -- no ALTER DEFAULT PRIVILEGES REVOKE USAGE ON SCHEMAS FROM regress_priv_user2; CREATE SCHEMA testns3; SELECT has_schema_privilege('regress_priv_user2', 'testns3', 'USAGE'); -- no SELECT has_schema_privilege('regress_priv_user2', 'testns3', 'CREATE'); -- no ALTER DEFAULT PRIVILEGES GRANT ALL ON SCHEMAS TO regress_priv_user2; CREATE SCHEMA testns4; SELECT has_schema_privilege('regress_priv_user2', 'testns4', 'USAGE'); -- yes SELECT has_schema_privilege('regress_priv_user2', 'testns4', 'CREATE'); -- yes ALTER DEFAULT PRIVILEGES REVOKE ALL ON SCHEMAS FROM regress_priv_user2; COMMIT; CREATE SCHEMA testns5; SELECT has_schema_privilege('regress_priv_user2', 'testns5', 'USAGE'); -- no SELECT has_schema_privilege('regress_priv_user2', 'testns5', 'CREATE'); -- no SET ROLE regress_priv_user1; CREATE FUNCTION testns.foo() RETURNS int AS 'select 1' LANGUAGE sql; CREATE AGGREGATE testns.agg1(int) (sfunc = int4pl, stype = int4); CREATE PROCEDURE testns.bar() AS 'select 1' LANGUAGE sql; SELECT has_function_privilege('regress_priv_user2', 'testns.foo()', 'EXECUTE'); -- no SELECT has_function_privilege('regress_priv_user2', 'testns.agg1(int)', 'EXECUTE'); -- no SELECT has_function_privilege('regress_priv_user2', 'testns.bar()', 'EXECUTE'); -- no ALTER DEFAULT PRIVILEGES IN SCHEMA testns GRANT EXECUTE ON ROUTINES to public; DROP FUNCTION testns.foo(); CREATE FUNCTION testns.foo() RETURNS int AS 'select 1' LANGUAGE sql; DROP AGGREGATE testns.agg1(int); CREATE AGGREGATE testns.agg1(int) (sfunc = int4pl, stype = int4); DROP PROCEDURE testns.bar(); CREATE PROCEDURE testns.bar() AS 'select 1' LANGUAGE sql; SELECT has_function_privilege('regress_priv_user2', 'testns.foo()', 'EXECUTE'); -- yes SELECT has_function_privilege('regress_priv_user2', 'testns.agg1(int)', 'EXECUTE'); -- yes SELECT has_function_privilege('regress_priv_user2', 'testns.bar()', 'EXECUTE'); -- yes (counts as function here) DROP FUNCTION testns.foo(); DROP AGGREGATE testns.agg1(int); DROP PROCEDURE testns.bar(); ALTER DEFAULT PRIVILEGES FOR ROLE regress_priv_user1 REVOKE USAGE ON TYPES FROM public; CREATE DOMAIN testns.priv_testdomain1 AS int; SELECT has_type_privilege('regress_priv_user2', 'testns.priv_testdomain1', 'USAGE'); -- no ALTER DEFAULT PRIVILEGES IN SCHEMA testns GRANT USAGE ON TYPES to public; DROP DOMAIN testns.priv_testdomain1; CREATE DOMAIN testns.priv_testdomain1 AS int; SELECT has_type_privilege('regress_priv_user2', 'testns.priv_testdomain1', 'USAGE'); -- yes DROP DOMAIN testns.priv_testdomain1; RESET ROLE; SELECT count(*) FROM pg_default_acl d LEFT JOIN pg_namespace n ON defaclnamespace = n.oid WHERE nspname = 'testns'; DROP SCHEMA testns CASCADE; DROP SCHEMA testns2 CASCADE; DROP SCHEMA testns3 CASCADE; DROP SCHEMA testns4 CASCADE; DROP SCHEMA testns5 CASCADE; SELECT d.* -- check that entries went away FROM pg_default_acl d LEFT JOIN pg_namespace n ON defaclnamespace = n.oid WHERE nspname IS NULL AND defaclnamespace != 0; -- Grant on all objects of given type in a schema \c - CREATE SCHEMA testns; CREATE TABLE testns.t1 (f1 int); CREATE TABLE testns.t2 (f1 int); SELECT has_table_privilege('regress_priv_user1', 'testns.t1', 'SELECT'); -- false GRANT ALL ON ALL TABLES IN SCHEMA testns TO regress_priv_user1; SELECT has_table_privilege('regress_priv_user1', 'testns.t1', 'SELECT'); -- true SELECT has_table_privilege('regress_priv_user1', 'testns.t2', 'SELECT'); -- true REVOKE ALL ON ALL TABLES IN SCHEMA testns FROM regress_priv_user1; SELECT has_table_privilege('regress_priv_user1', 'testns.t1', 'SELECT'); -- false SELECT has_table_privilege('regress_priv_user1', 'testns.t2', 'SELECT'); -- false CREATE FUNCTION testns.priv_testfunc(int) RETURNS int AS 'select 3 * $1;' LANGUAGE sql; CREATE AGGREGATE testns.priv_testagg(int) (sfunc = int4pl, stype = int4); CREATE PROCEDURE testns.priv_testproc(int) AS 'select 3' LANGUAGE sql; SELECT has_function_privilege('regress_priv_user1', 'testns.priv_testfunc(int)', 'EXECUTE'); -- true by default SELECT has_function_privilege('regress_priv_user1', 'testns.priv_testagg(int)', 'EXECUTE'); -- true by default SELECT has_function_privilege('regress_priv_user1', 'testns.priv_testproc(int)', 'EXECUTE'); -- true by default REVOKE ALL ON ALL FUNCTIONS IN SCHEMA testns FROM PUBLIC; SELECT has_function_privilege('regress_priv_user1', 'testns.priv_testfunc(int)', 'EXECUTE'); -- false SELECT has_function_privilege('regress_priv_user1', 'testns.priv_testagg(int)', 'EXECUTE'); -- false SELECT has_function_privilege('regress_priv_user1', 'testns.priv_testproc(int)', 'EXECUTE'); -- still true, not a function REVOKE ALL ON ALL PROCEDURES IN SCHEMA testns FROM PUBLIC; SELECT has_function_privilege('regress_priv_user1', 'testns.priv_testproc(int)', 'EXECUTE'); -- now false GRANT ALL ON ALL ROUTINES IN SCHEMA testns TO PUBLIC; SELECT has_function_privilege('regress_priv_user1', 'testns.priv_testfunc(int)', 'EXECUTE'); -- true SELECT has_function_privilege('regress_priv_user1', 'testns.priv_testagg(int)', 'EXECUTE'); -- true SELECT has_function_privilege('regress_priv_user1', 'testns.priv_testproc(int)', 'EXECUTE'); -- true DROP SCHEMA testns CASCADE; -- Change owner of the schema & and rename of new schema owner \c - CREATE ROLE regress_schemauser1 superuser login; CREATE ROLE regress_schemauser2 superuser login; SET SESSION ROLE regress_schemauser1; CREATE SCHEMA testns; SELECT nspname, rolname FROM pg_namespace, pg_roles WHERE pg_namespace.nspname = 'testns' AND pg_namespace.nspowner = pg_roles.oid; ALTER SCHEMA testns OWNER TO regress_schemauser2; ALTER ROLE regress_schemauser2 RENAME TO regress_schemauser_renamed; SELECT nspname, rolname FROM pg_namespace, pg_roles WHERE pg_namespace.nspname = 'testns' AND pg_namespace.nspowner = pg_roles.oid; set session role regress_schemauser_renamed; DROP SCHEMA testns CASCADE; -- clean up \c - DROP ROLE regress_schemauser1; DROP ROLE regress_schemauser_renamed; -- test that dependent privileges are revoked (or not) properly \c - set session role regress_priv_user1; create table dep_priv_test (a int); grant select on dep_priv_test to regress_priv_user2 with grant option; grant select on dep_priv_test to regress_priv_user3 with grant option; set session role regress_priv_user2; grant select on dep_priv_test to regress_priv_user4 with grant option; set session role regress_priv_user3; grant select on dep_priv_test to regress_priv_user4 with grant option; set session role regress_priv_user4; grant select on dep_priv_test to regress_priv_user5; \dp dep_priv_test set session role regress_priv_user2; revoke select on dep_priv_test from regress_priv_user4 cascade; \dp dep_priv_test set session role regress_priv_user3; revoke select on dep_priv_test from regress_priv_user4 cascade; \dp dep_priv_test set session role regress_priv_user1; drop table dep_priv_test; -- clean up \c drop sequence x_seq; DROP AGGREGATE priv_testagg1(int); DROP FUNCTION priv_testfunc2(int); DROP FUNCTION priv_testfunc4(boolean); DROP PROCEDURE priv_testproc1(int); DROP VIEW atestv0; DROP VIEW atestv1; DROP VIEW atestv2; -- this should cascade to drop atestv4 DROP VIEW atestv3 CASCADE; -- this should complain "does not exist" DROP VIEW atestv4; DROP TABLE atest1; DROP TABLE atest2; DROP TABLE atest3; DROP TABLE atest4; DROP TABLE atest5; DROP TABLE atest6; DROP TABLE atestc; DROP TABLE atestp1; DROP TABLE atestp2; SELECT lo_unlink(oid) FROM pg_largeobject_metadata WHERE oid >= 1000 AND oid < 3000 ORDER BY oid; DROP GROUP regress_priv_group1; DROP GROUP regress_priv_group2; -- these are needed to clean up permissions REVOKE USAGE ON LANGUAGE sql FROM regress_priv_user1; DROP OWNED BY regress_priv_user1; DROP USER regress_priv_user1; DROP USER regress_priv_user2; DROP USER regress_priv_user3; DROP USER regress_priv_user4; DROP USER regress_priv_user5; DROP USER regress_priv_user6; -- permissions with LOCK TABLE CREATE USER regress_locktable_user; CREATE TABLE lock_table (a int); -- LOCK TABLE and SELECT permission GRANT SELECT ON lock_table TO regress_locktable_user; SET SESSION AUTHORIZATION regress_locktable_user; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should fail ROLLBACK; BEGIN; LOCK TABLE lock_table IN ACCESS SHARE MODE; -- should pass COMMIT; BEGIN; LOCK TABLE lock_table IN ACCESS EXCLUSIVE MODE; -- should fail ROLLBACK; \c REVOKE SELECT ON lock_table FROM regress_locktable_user; -- LOCK TABLE and INSERT permission GRANT INSERT ON lock_table TO regress_locktable_user; SET SESSION AUTHORIZATION regress_locktable_user; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should pass COMMIT; BEGIN; LOCK TABLE lock_table IN ACCESS SHARE MODE; -- should fail ROLLBACK; BEGIN; LOCK TABLE lock_table IN ACCESS EXCLUSIVE MODE; -- should fail ROLLBACK; \c REVOKE INSERT ON lock_table FROM regress_locktable_user; -- LOCK TABLE and UPDATE permission GRANT UPDATE ON lock_table TO regress_locktable_user; SET SESSION AUTHORIZATION regress_locktable_user; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should pass COMMIT; BEGIN; LOCK TABLE lock_table IN ACCESS SHARE MODE; -- should fail ROLLBACK; BEGIN; LOCK TABLE lock_table IN ACCESS EXCLUSIVE MODE; -- should pass COMMIT; \c REVOKE UPDATE ON lock_table FROM regress_locktable_user; -- LOCK TABLE and DELETE permission GRANT DELETE ON lock_table TO regress_locktable_user; SET SESSION AUTHORIZATION regress_locktable_user; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should pass COMMIT; BEGIN; LOCK TABLE lock_table IN ACCESS SHARE MODE; -- should fail ROLLBACK; BEGIN; LOCK TABLE lock_table IN ACCESS EXCLUSIVE MODE; -- should pass COMMIT; \c REVOKE DELETE ON lock_table FROM regress_locktable_user; -- LOCK TABLE and TRUNCATE permission GRANT TRUNCATE ON lock_table TO regress_locktable_user; SET SESSION AUTHORIZATION regress_locktable_user; BEGIN; LOCK TABLE lock_table IN ROW EXCLUSIVE MODE; -- should pass COMMIT; BEGIN; LOCK TABLE lock_table IN ACCESS SHARE MODE; -- should fail ROLLBACK; BEGIN; LOCK TABLE lock_table IN ACCESS EXCLUSIVE MODE; -- should pass COMMIT; \c REVOKE TRUNCATE ON lock_table FROM regress_locktable_user; -- clean up DROP TABLE lock_table; DROP USER regress_locktable_user; libpg_query-13-2.1.0/test/sql/postgres_regress/psql.sql000066400000000000000000000536021413137616400231470ustar00rootroot00000000000000-- -- Tests for psql features that aren't closely connected to any -- specific server features -- -- \set -- fail: invalid name \set invalid/name foo -- fail: invalid value for special variable \set AUTOCOMMIT foo \set FETCH_COUNT foo -- check handling of built-in boolean variable \echo :ON_ERROR_ROLLBACK \set ON_ERROR_ROLLBACK \echo :ON_ERROR_ROLLBACK \set ON_ERROR_ROLLBACK foo \echo :ON_ERROR_ROLLBACK \set ON_ERROR_ROLLBACK on \echo :ON_ERROR_ROLLBACK \unset ON_ERROR_ROLLBACK \echo :ON_ERROR_ROLLBACK -- \g and \gx SELECT 1 as one, 2 as two \g \gx SELECT 3 as three, 4 as four \gx \g -- \gx should work in FETCH_COUNT mode too \set FETCH_COUNT 1 SELECT 1 as one, 2 as two \g \gx SELECT 3 as three, 4 as four \gx \g \unset FETCH_COUNT -- \g/\gx with pset options SELECT 1 as one, 2 as two \g (format=csv csv_fieldsep='\t') \g SELECT 1 as one, 2 as two \gx (title='foo bar') \g -- \gset select 10 as test01, 20 as test02, 'Hello' as test03 \gset pref01_ \echo :pref01_test01 :pref01_test02 :pref01_test03 -- should fail: bad variable name select 10 as "bad name" \gset select 97 as "EOF", 'ok' as _foo \gset IGNORE \echo :IGNORE_foo :IGNOREEOF -- multiple backslash commands in one line select 1 as x, 2 as y \gset pref01_ \\ \echo :pref01_x select 3 as x, 4 as y \gset pref01_ \echo :pref01_x \echo :pref01_y select 5 as x, 6 as y \gset pref01_ \\ \g \echo :pref01_x :pref01_y select 7 as x, 8 as y \g \gset pref01_ \echo :pref01_x :pref01_y -- NULL should unset the variable \set var2 xyz select 1 as var1, NULL as var2, 3 as var3 \gset \echo :var1 :var2 :var3 -- \gset requires just one tuple select 10 as test01, 20 as test02 from generate_series(1,3) \gset select 10 as test01, 20 as test02 from generate_series(1,0) \gset -- \gset should work in FETCH_COUNT mode too \set FETCH_COUNT 1 select 1 as x, 2 as y \gset pref01_ \\ \echo :pref01_x select 3 as x, 4 as y \gset pref01_ \echo :pref01_x \echo :pref01_y select 10 as test01, 20 as test02 from generate_series(1,3) \gset select 10 as test01, 20 as test02 from generate_series(1,0) \gset \unset FETCH_COUNT -- \gdesc SELECT NULL AS zero, 1 AS one, 2.0 AS two, 'three' AS three, $1 AS four, sin($2) as five, 'foo'::varchar(4) as six, CURRENT_DATE AS now \gdesc -- should work with tuple-returning utilities, such as EXECUTE PREPARE test AS SELECT 1 AS first, 2 AS second; EXECUTE test \gdesc EXPLAIN EXECUTE test \gdesc -- should fail cleanly - syntax error SELECT 1 + \gdesc -- check behavior with empty results SELECT \gdesc CREATE TABLE bububu(a int) \gdesc -- subject command should not have executed TABLE bububu; -- fail -- query buffer should remain unchanged SELECT 1 AS x, 'Hello', 2 AS y, true AS "dirty\name" \gdesc \g -- all on one line SELECT 3 AS x, 'Hello', 4 AS y, true AS "dirty\name" \gdesc \g -- \gexec create temporary table gexec_test(a int, b text, c date, d float); select format('create index on gexec_test(%I)', attname) from pg_attribute where attrelid = 'gexec_test'::regclass and attnum > 0 order by attnum \gexec -- \gexec should work in FETCH_COUNT mode too -- (though the fetch limit applies to the executed queries not the meta query) \set FETCH_COUNT 1 select 'select 1 as ones', 'select x.y, x.y*2 as double from generate_series(1,4) as x(y)' union all select 'drop table gexec_test', NULL union all select 'drop table gexec_test', 'select ''2000-01-01''::date as party_over' \gexec \unset FETCH_COUNT -- show all pset options \pset -- test multi-line headers, wrapping, and newline indicators -- in aligned, unaligned, and wrapped formats prepare q as select array_to_string(array_agg(repeat('x',2*n)),E'\n') as "ab c", array_to_string(array_agg(repeat('y',20-2*n)),E'\n') as "a bc" from generate_series(1,10) as n(n) group by n>1 order by n>1; \pset linestyle ascii \pset expanded off \pset columns 40 \pset border 0 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 1 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 2 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset expanded on \pset columns 20 \pset border 0 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 1 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 2 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset linestyle old-ascii \pset expanded off \pset columns 40 \pset border 0 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 1 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 2 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset expanded on \pset columns 20 \pset border 0 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 1 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 2 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; deallocate q; -- test single-line header and data prepare q as select repeat('x',2*n) as "0123456789abcdef", repeat('y',20-2*n) as "0123456789" from generate_series(1,10) as n; \pset linestyle ascii \pset expanded off \pset columns 40 \pset border 0 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 1 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 2 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset expanded on \pset columns 30 \pset border 0 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 1 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 2 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset expanded on \pset columns 20 \pset border 0 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 1 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 2 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset linestyle old-ascii \pset expanded off \pset columns 40 \pset border 0 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 1 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 2 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset expanded on \pset border 0 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 1 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; \pset border 2 \pset format unaligned execute q; \pset format aligned execute q; \pset format wrapped execute q; deallocate q; \pset linestyle ascii \pset border 1 -- support table for output-format tests (useful to create a footer) create table psql_serial_tab (id serial); -- test header/footer/tuples_only behavior in aligned/unaligned/wrapped cases \pset format aligned \pset expanded off \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false \pset expanded on \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false -- empty table is a special case for this format select 1 where false; \pset format unaligned \pset expanded off \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false \pset expanded on \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false \pset format wrapped \pset expanded off \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false \pset expanded on \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false -- check conditional tableam display -- Create a heap2 table am handler with heapam handler CREATE ACCESS METHOD heap_psql TYPE TABLE HANDLER heap_tableam_handler; CREATE TABLE tbl_heap_psql(f1 int, f2 char(100)) using heap_psql; CREATE TABLE tbl_heap(f1 int, f2 char(100)) using heap; \d+ tbl_heap_psql \d+ tbl_heap \set HIDE_TABLEAM off \d+ tbl_heap_psql \d+ tbl_heap \set HIDE_TABLEAM on DROP TABLE tbl_heap, tbl_heap_psql; DROP ACCESS METHOD heap_psql; -- test numericlocale (as best we can without control of psql's locale) \pset format aligned \pset expanded off \pset numericlocale true select n, -n as m, n * 111 as x, '1e90'::float8 as f from generate_series(0,3) n; \pset numericlocale false -- test asciidoc output format \pset format asciidoc \pset border 1 \pset expanded off \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false \pset expanded on \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false prepare q as select 'some|text' as "a|title", ' ' as "empty ", n as int from generate_series(1,2) as n; \pset expanded off \pset border 0 execute q; \pset border 1 execute q; \pset border 2 execute q; \pset expanded on \pset border 0 execute q; \pset border 1 execute q; \pset border 2 execute q; deallocate q; -- test csv output format \pset format csv \pset border 1 \pset expanded off \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false \pset expanded on \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false prepare q as select 'some"text' as "a""title", E' \n' as "junk", ' ' as "empty", n as int from generate_series(1,2) as n; \pset expanded off execute q; \pset expanded on execute q; deallocate q; -- special cases \pset expanded off select 'comma,comma' as comma, 'semi;semi' as semi; \pset csv_fieldsep ';' select 'comma,comma' as comma, 'semi;semi' as semi; select '\.' as data; \pset csv_fieldsep '.' select '\' as d1, '' as d2; -- illegal csv separators \pset csv_fieldsep '' \pset csv_fieldsep '\0' \pset csv_fieldsep '\n' \pset csv_fieldsep '\r' \pset csv_fieldsep '"' \pset csv_fieldsep ',,' \pset csv_fieldsep ',' -- test html output format \pset format html \pset border 1 \pset expanded off \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false \pset expanded on \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false prepare q as select 'some"text' as "a&title", E' \n' as "junk", ' ' as "empty", n as int from generate_series(1,2) as n; \pset expanded off \pset border 0 execute q; \pset border 1 execute q; \pset tableattr foobar execute q; \pset tableattr \pset expanded on \pset border 0 execute q; \pset border 1 execute q; \pset tableattr foobar execute q; \pset tableattr deallocate q; -- test latex output format \pset format latex \pset border 1 \pset expanded off \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false \pset expanded on \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false prepare q as select 'some\more_text' as "a$title", E' #%&^~|\n{bar}' as "junk", ' ' as "empty", n as int from generate_series(1,2) as n; \pset expanded off \pset border 0 execute q; \pset border 1 execute q; \pset border 2 execute q; \pset border 3 execute q; \pset expanded on \pset border 0 execute q; \pset border 1 execute q; \pset border 2 execute q; \pset border 3 execute q; deallocate q; -- test latex-longtable output format \pset format latex-longtable \pset border 1 \pset expanded off \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false \pset expanded on \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false prepare q as select 'some\more_text' as "a$title", E' #%&^~|\n{bar}' as "junk", ' ' as "empty", n as int from generate_series(1,2) as n; \pset expanded off \pset border 0 execute q; \pset border 1 execute q; \pset border 2 execute q; \pset border 3 execute q; \pset tableattr lr execute q; \pset tableattr \pset expanded on \pset border 0 execute q; \pset border 1 execute q; \pset border 2 execute q; \pset border 3 execute q; \pset tableattr lr execute q; \pset tableattr deallocate q; -- test troff-ms output format \pset format troff-ms \pset border 1 \pset expanded off \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false \pset expanded on \d psql_serial_tab_id_seq \pset tuples_only true \df exp \pset tuples_only false prepare q as select 'some\text' as "a\title", E' \n' as "junk", ' ' as "empty", n as int from generate_series(1,2) as n; \pset expanded off \pset border 0 execute q; \pset border 1 execute q; \pset border 2 execute q; \pset expanded on \pset border 0 execute q; \pset border 1 execute q; \pset border 2 execute q; deallocate q; -- check ambiguous format requests \pset format a \pset format l -- clean up after output format tests drop table psql_serial_tab; \pset format aligned \pset expanded off \pset border 1 -- \echo and allied features \echo this is a test \echo -n without newline \echo with -n newline \echo '-n' with newline \set foo bar \echo foo = :foo \qecho this is a test \qecho foo = :foo \warn this is a test \warn foo = :foo -- tests for \if ... \endif \if true select 'okay'; select 'still okay'; \else not okay; still not okay \endif -- at this point query buffer should still have last valid line \g -- \if should work okay on part of a query select \if true 42 \else (bogus \endif forty_two; select \if false \\ (bogus \else \\ 42 \endif \\ forty_two; -- test a large nested if using a variety of true-equivalents \if true \if 1 \if yes \if on \echo 'all true' \else \echo 'should not print #1-1' \endif \else \echo 'should not print #1-2' \endif \else \echo 'should not print #1-3' \endif \else \echo 'should not print #1-4' \endif -- test a variety of false-equivalents in an if/elif/else structure \if false \echo 'should not print #2-1' \elif 0 \echo 'should not print #2-2' \elif no \echo 'should not print #2-3' \elif off \echo 'should not print #2-4' \else \echo 'all false' \endif -- test true-false elif after initial true branch \if true \echo 'should print #2-5' \elif true \echo 'should not print #2-6' \elif false \echo 'should not print #2-7' \else \echo 'should not print #2-8' \endif -- test simple true-then-else \if true \echo 'first thing true' \else \echo 'should not print #3-1' \endif -- test simple false-true-else \if false \echo 'should not print #4-1' \elif true \echo 'second thing true' \else \echo 'should not print #5-1' \endif -- invalid boolean expressions are false \if invalid boolean expression \echo 'will not print #6-1' \else \echo 'will print anyway #6-2' \endif -- test un-matched endif \endif -- test un-matched else \else -- test un-matched elif \elif -- test double-else error \if true \else \else \endif -- test elif out-of-order \if false \else \elif \endif -- test if-endif matching in a false branch \if false \if false \echo 'should not print #7-1' \else \echo 'should not print #7-2' \endif \echo 'should not print #7-3' \else \echo 'should print #7-4' \endif -- show that vars and backticks are not expanded when ignoring extra args \set foo bar \echo :foo :'foo' :"foo" \pset fieldsep | `nosuchcommand` :foo :'foo' :"foo" -- show that vars and backticks are not expanded and commands are ignored -- when in a false if-branch \set try_to_quit '\\q' \if false :try_to_quit \echo `nosuchcommand` :foo :'foo' :"foo" \pset fieldsep | `nosuchcommand` :foo :'foo' :"foo" \a \C arg1 \c arg1 arg2 arg3 arg4 \cd arg1 \conninfo \copy arg1 arg2 arg3 arg4 arg5 arg6 \copyright SELECT 1 as one, 2, 3 \crosstabview \dt arg1 \e arg1 arg2 \ef whole_line \ev whole_line \echo arg1 arg2 arg3 arg4 arg5 \echo arg1 \encoding arg1 \errverbose \f arg1 \g arg1 \gx arg1 \gexec SELECT 1 AS one \gset \h \? \html \i arg1 \ir arg1 \l arg1 \lo arg1 arg2 \lo_list \o arg1 \p \password arg1 \prompt arg1 arg2 \pset arg1 arg2 \q \reset \s arg1 \set arg1 arg2 arg3 arg4 arg5 arg6 arg7 \setenv arg1 arg2 \sf whole_line \sv whole_line \t arg1 \T arg1 \timing arg1 \unset arg1 \w arg1 \watch arg1 \x arg1 -- \else here is eaten as part of OT_FILEPIPE argument \w |/no/such/file \else -- \endif here is eaten as part of whole-line argument \! whole_line \endif \z \else \echo 'should print #8-1' \endif -- :{?...} defined variable test \set i 1 \if :{?i} \echo '#9-1 ok, variable i is defined' \else \echo 'should not print #9-2' \endif \if :{?no_such_variable} \echo 'should not print #10-1' \else \echo '#10-2 ok, variable no_such_variable is not defined' \endif SELECT :{?i} AS i_is_defined; SELECT NOT :{?no_such_var} AS no_such_var_is_not_defined; -- SHOW_CONTEXT \set SHOW_CONTEXT never do $$ begin raise notice 'foo'; raise exception 'bar'; end $$; \set SHOW_CONTEXT errors do $$ begin raise notice 'foo'; raise exception 'bar'; end $$; \set SHOW_CONTEXT always do $$ begin raise notice 'foo'; raise exception 'bar'; end $$; -- test printing and clearing the query buffer SELECT 1; \p SELECT 2 \r \p SELECT 3 \p UNION SELECT 4 \p UNION SELECT 5 ORDER BY 1; \r \p -- tests for special result variables -- working query, 2 rows selected SELECT 1 AS stuff UNION SELECT 2; \echo 'error:' :ERROR \echo 'error code:' :SQLSTATE \echo 'number of rows:' :ROW_COUNT -- syntax error SELECT 1 UNION; \echo 'error:' :ERROR \echo 'error code:' :SQLSTATE \echo 'number of rows:' :ROW_COUNT \echo 'last error message:' :LAST_ERROR_MESSAGE \echo 'last error code:' :LAST_ERROR_SQLSTATE -- empty query ; \echo 'error:' :ERROR \echo 'error code:' :SQLSTATE \echo 'number of rows:' :ROW_COUNT -- must have kept previous values \echo 'last error message:' :LAST_ERROR_MESSAGE \echo 'last error code:' :LAST_ERROR_SQLSTATE -- other query error DROP TABLE this_table_does_not_exist; \echo 'error:' :ERROR \echo 'error code:' :SQLSTATE \echo 'number of rows:' :ROW_COUNT \echo 'last error message:' :LAST_ERROR_MESSAGE \echo 'last error code:' :LAST_ERROR_SQLSTATE -- nondefault verbosity error settings (except verbose, which is too unstable) \set VERBOSITY terse SELECT 1 UNION; \echo 'error:' :ERROR \echo 'error code:' :SQLSTATE \echo 'last error message:' :LAST_ERROR_MESSAGE \set VERBOSITY sqlstate SELECT 1/0; \echo 'error:' :ERROR \echo 'error code:' :SQLSTATE \echo 'last error message:' :LAST_ERROR_MESSAGE \set VERBOSITY default -- working \gdesc SELECT 3 AS three, 4 AS four \gdesc \echo 'error:' :ERROR \echo 'error code:' :SQLSTATE \echo 'number of rows:' :ROW_COUNT -- \gdesc with an error SELECT 4 AS \gdesc \echo 'error:' :ERROR \echo 'error code:' :SQLSTATE \echo 'number of rows:' :ROW_COUNT \echo 'last error message:' :LAST_ERROR_MESSAGE \echo 'last error code:' :LAST_ERROR_SQLSTATE -- check row count for a cursor-fetched query \set FETCH_COUNT 10 select unique2 from tenk1 order by unique2 limit 19; \echo 'error:' :ERROR \echo 'error code:' :SQLSTATE \echo 'number of rows:' :ROW_COUNT -- cursor-fetched query with an error after the first group select 1/(15-unique2) from tenk1 order by unique2 limit 19; \echo 'error:' :ERROR \echo 'error code:' :SQLSTATE \echo 'number of rows:' :ROW_COUNT \echo 'last error message:' :LAST_ERROR_MESSAGE \echo 'last error code:' :LAST_ERROR_SQLSTATE \unset FETCH_COUNT create schema testpart; create role regress_partitioning_role; alter schema testpart owner to regress_partitioning_role; set role to regress_partitioning_role; -- run test inside own schema and hide other partitions set search_path to testpart; create table testtable_apple(logdate date); create table testtable_orange(logdate date); create index testtable_apple_index on testtable_apple(logdate); create index testtable_orange_index on testtable_orange(logdate); create table testpart_apple(logdate date) partition by range(logdate); create table testpart_orange(logdate date) partition by range(logdate); create index testpart_apple_index on testpart_apple(logdate); create index testpart_orange_index on testpart_orange(logdate); -- only partition related object should be displayed \dP test*apple* \dPt test*apple* \dPi test*apple* drop table testtable_apple; drop table testtable_orange; drop table testpart_apple; drop table testpart_orange; create table parent_tab (id int) partition by range (id); create index parent_index on parent_tab (id); create table child_0_10 partition of parent_tab for values from (0) to (10); create table child_10_20 partition of parent_tab for values from (10) to (20); create table child_20_30 partition of parent_tab for values from (20) to (30); insert into parent_tab values (generate_series(0,29)); create table child_30_40 partition of parent_tab for values from (30) to (40) partition by range(id); create table child_30_35 partition of child_30_40 for values from (30) to (35); create table child_35_40 partition of child_30_40 for values from (35) to (40); insert into parent_tab values (generate_series(30,39)); \dPt \dPi \dP testpart.* \dP \dPtn \dPin \dPn \dPn testpart.* drop table parent_tab cascade; drop schema testpart; set search_path to default; set role to default; drop role regress_partitioning_role; -- \d on toast table (use pg_statistic's toast table, which has a known name) \d pg_toast.pg_toast_2619 -- check printing info about access methods \dA \dA * \dA h* \dA foo \dA foo bar \dA+ \dA+ * \dA+ h* \dA+ foo \dAc brin pg*.oid* \dAf spgist \dAf btree int4 \dAo+ btree float_ops \dAo * pg_catalog.jsonb_path_ops \dAp+ btree float_ops \dAp * pg_catalog.uuid_ops libpg_query-13-2.1.0/test/sql/postgres_regress/psql_crosstab.sql000066400000000000000000000071461413137616400250510ustar00rootroot00000000000000-- -- \crosstabview -- CREATE TABLE ctv_data (v, h, c, i, d) AS VALUES ('v1','h2','foo', 3, '2015-04-01'::date), ('v2','h1','bar', 3, '2015-01-02'), ('v1','h0','baz', NULL, '2015-07-12'), ('v0','h4','qux', 4, '2015-07-15'), ('v0','h4','dbl', -3, '2014-12-15'), ('v0',NULL,'qux', 5, '2014-07-15'), ('v1','h2','quux',7, '2015-04-04'); -- make plans more stable ANALYZE ctv_data; -- running \crosstabview after query uses query in buffer SELECT v, EXTRACT(year FROM d), count(*) FROM ctv_data GROUP BY 1, 2 ORDER BY 1, 2; -- basic usage with 3 columns \crosstabview -- ordered months in horizontal header, quoted column name SELECT v, to_char(d, 'Mon') AS "month name", EXTRACT(month FROM d) AS num, count(*) FROM ctv_data GROUP BY 1,2,3 ORDER BY 1 \crosstabview v "month name" 4 num -- ordered months in vertical header, ordered years in horizontal header SELECT EXTRACT(year FROM d) AS year, to_char(d,'Mon') AS """month"" name", EXTRACT(month FROM d) AS month, format('sum=%s avg=%s', sum(i), avg(i)::numeric(2,1)) FROM ctv_data GROUP BY EXTRACT(year FROM d), to_char(d,'Mon'), EXTRACT(month FROM d) ORDER BY month \crosstabview """month"" name" year format year -- combine contents vertically into the same cell (V/H duplicates) SELECT v, h, string_agg(c, E'\n') FROM ctv_data GROUP BY v, h ORDER BY 1,2,3 \crosstabview 1 2 3 -- horizontal ASC order from window function SELECT v,h, string_agg(c, E'\n') AS c, row_number() OVER(ORDER BY h) AS r FROM ctv_data GROUP BY v, h ORDER BY 1,3,2 \crosstabview v h c r -- horizontal DESC order from window function SELECT v, h, string_agg(c, E'\n') AS c, row_number() OVER(ORDER BY h DESC) AS r FROM ctv_data GROUP BY v, h ORDER BY 1,3,2 \crosstabview v h c r -- horizontal ASC order from window function, NULLs pushed rightmost SELECT v,h, string_agg(c, E'\n') AS c, row_number() OVER(ORDER BY h NULLS LAST) AS r FROM ctv_data GROUP BY v, h ORDER BY 1,3,2 \crosstabview v h c r -- only null, no column name, 2 columns: error SELECT null,null \crosstabview -- only null, no column name, 3 columns: works SELECT null,null,null \crosstabview -- null display \pset null '#null#' SELECT v,h, string_agg(i::text, E'\n') AS i FROM ctv_data GROUP BY v, h ORDER BY h,v \crosstabview v h i \pset null '' -- refer to columns by position SELECT v,h,string_agg(i::text, E'\n'), string_agg(c, E'\n') FROM ctv_data GROUP BY v, h ORDER BY h,v \crosstabview 2 1 4 -- refer to columns by positions and names mixed SELECT v,h, string_agg(i::text, E'\n') AS i, string_agg(c, E'\n') AS c FROM ctv_data GROUP BY v, h ORDER BY h,v \crosstabview 1 "h" 4 -- refer to columns by quoted names, check downcasing of unquoted name SELECT 1 as "22", 2 as b, 3 as "Foo" \crosstabview "22" B "Foo" -- error: bad column name SELECT v,h,c,i FROM ctv_data \crosstabview v h j -- error: need to quote name SELECT 1 as "22", 2 as b, 3 as "Foo" \crosstabview 1 2 Foo -- error: need to not quote name SELECT 1 as "22", 2 as b, 3 as "Foo" \crosstabview 1 "B" "Foo" -- error: bad column number SELECT v,h,i,c FROM ctv_data \crosstabview 2 1 5 -- error: same H and V columns SELECT v,h,i,c FROM ctv_data \crosstabview 2 h 4 -- error: too many columns SELECT a,a,1 FROM generate_series(1,3000) AS a \crosstabview -- error: only one column SELECT 1 \crosstabview DROP TABLE ctv_data; -- check error reporting (bug #14476) CREATE TABLE ctv_data (x int, y int, v text); INSERT INTO ctv_data SELECT 1, x, '*' || x FROM generate_series(1,10) x; SELECT * FROM ctv_data \crosstabview INSERT INTO ctv_data VALUES (1, 10, '*'); -- duplicate data to cause error SELECT * FROM ctv_data \crosstabview DROP TABLE ctv_data; libpg_query-13-2.1.0/test/sql/postgres_regress/publication.sql000066400000000000000000000136561413137616400245060ustar00rootroot00000000000000-- -- PUBLICATION -- CREATE ROLE regress_publication_user LOGIN SUPERUSER; CREATE ROLE regress_publication_user2; CREATE ROLE regress_publication_user_dummy LOGIN NOSUPERUSER; SET SESSION AUTHORIZATION 'regress_publication_user'; -- suppress warning that depends on wal_level SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_default; RESET client_min_messages; COMMENT ON PUBLICATION testpub_default IS 'test publication'; SELECT obj_description(p.oid, 'pg_publication') FROM pg_publication p; SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpib_ins_trunct WITH (publish = insert); RESET client_min_messages; ALTER PUBLICATION testpub_default SET (publish = update); -- error cases CREATE PUBLICATION testpub_xxx WITH (foo); CREATE PUBLICATION testpub_xxx WITH (publish = 'cluster, vacuum'); CREATE PUBLICATION testpub_xxx WITH (publish_via_partition_root = 'true', publish_via_partition_root = '0'); \dRp ALTER PUBLICATION testpub_default SET (publish = 'insert, update, delete'); \dRp --- adding tables CREATE SCHEMA pub_test; CREATE TABLE testpub_tbl1 (id serial primary key, data text); CREATE TABLE pub_test.testpub_nopk (foo int, bar int); CREATE VIEW testpub_view AS SELECT 1; CREATE TABLE testpub_parted (a int) PARTITION BY LIST (a); SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_foralltables FOR ALL TABLES WITH (publish = 'insert'); RESET client_min_messages; ALTER PUBLICATION testpub_foralltables SET (publish = 'insert, update'); CREATE TABLE testpub_tbl2 (id serial primary key, data text); -- fail - can't add to for all tables publication ALTER PUBLICATION testpub_foralltables ADD TABLE testpub_tbl2; -- fail - can't drop from all tables publication ALTER PUBLICATION testpub_foralltables DROP TABLE testpub_tbl2; -- fail - can't add to for all tables publication ALTER PUBLICATION testpub_foralltables SET TABLE pub_test.testpub_nopk; SELECT pubname, puballtables FROM pg_publication WHERE pubname = 'testpub_foralltables'; \d+ testpub_tbl2 \dRp+ testpub_foralltables DROP TABLE testpub_tbl2; DROP PUBLICATION testpub_foralltables; CREATE TABLE testpub_tbl3 (a int); CREATE TABLE testpub_tbl3a (b text) INHERITS (testpub_tbl3); SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub3 FOR TABLE testpub_tbl3; CREATE PUBLICATION testpub4 FOR TABLE ONLY testpub_tbl3; RESET client_min_messages; \dRp+ testpub3 \dRp+ testpub4 DROP TABLE testpub_tbl3, testpub_tbl3a; DROP PUBLICATION testpub3, testpub4; -- Tests for partitioned tables SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_forparted; CREATE PUBLICATION testpub_forparted1; RESET client_min_messages; CREATE TABLE testpub_parted1 (LIKE testpub_parted); ALTER PUBLICATION testpub_forparted1 SET (publish='insert'); -- works despite missing REPLICA IDENTITY, because updates are not replicated UPDATE testpub_parted1 SET a = 1; ALTER TABLE testpub_parted ATTACH PARTITION testpub_parted1 FOR VALUES IN (1); -- only parent is listed as being in publication, not the partition ALTER PUBLICATION testpub_forparted ADD TABLE testpub_parted; \dRp+ testpub_forparted -- should now fail, because parent's publication replicates updates UPDATE testpub_parted1 SET a = 1; ALTER TABLE testpub_parted DETACH PARTITION testpub_parted1; -- works again, because parent's publication is no longer considered UPDATE testpub_parted1 SET a = 1; ALTER PUBLICATION testpub_forparted SET (publish_via_partition_root = true); \dRp+ testpub_forparted DROP TABLE testpub_parted1; DROP PUBLICATION testpub_forparted, testpub_forparted1; -- fail - view CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_view; SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1, pub_test.testpub_nopk; RESET client_min_messages; -- fail - already added ALTER PUBLICATION testpub_fortbl ADD TABLE testpub_tbl1; -- fail - already added CREATE PUBLICATION testpub_fortbl FOR TABLE testpub_tbl1; \dRp+ testpub_fortbl -- fail - view ALTER PUBLICATION testpub_default ADD TABLE testpub_view; ALTER PUBLICATION testpub_default ADD TABLE testpub_tbl1; ALTER PUBLICATION testpub_default SET TABLE testpub_tbl1; ALTER PUBLICATION testpub_default ADD TABLE pub_test.testpub_nopk; ALTER PUBLICATION testpib_ins_trunct ADD TABLE pub_test.testpub_nopk, testpub_tbl1; \d+ pub_test.testpub_nopk \d+ testpub_tbl1 \dRp+ testpub_default ALTER PUBLICATION testpub_default DROP TABLE testpub_tbl1, pub_test.testpub_nopk; -- fail - nonexistent ALTER PUBLICATION testpub_default DROP TABLE pub_test.testpub_nopk; \d+ testpub_tbl1 -- permissions SET ROLE regress_publication_user2; CREATE PUBLICATION testpub2; -- fail SET ROLE regress_publication_user; GRANT CREATE ON DATABASE regression TO regress_publication_user2; SET ROLE regress_publication_user2; SET client_min_messages = 'ERROR'; CREATE PUBLICATION testpub2; -- ok RESET client_min_messages; ALTER PUBLICATION testpub2 ADD TABLE testpub_tbl1; -- fail SET ROLE regress_publication_user; GRANT regress_publication_user TO regress_publication_user2; SET ROLE regress_publication_user2; ALTER PUBLICATION testpub2 ADD TABLE testpub_tbl1; -- ok DROP PUBLICATION testpub2; SET ROLE regress_publication_user; REVOKE CREATE ON DATABASE regression FROM regress_publication_user2; DROP TABLE testpub_parted; DROP VIEW testpub_view; DROP TABLE testpub_tbl1; \dRp+ testpub_default -- fail - must be owner of publication SET ROLE regress_publication_user_dummy; ALTER PUBLICATION testpub_default RENAME TO testpub_dummy; RESET ROLE; ALTER PUBLICATION testpub_default RENAME TO testpub_foo; \dRp testpub_foo -- rename back to keep the rest simple ALTER PUBLICATION testpub_foo RENAME TO testpub_default; ALTER PUBLICATION testpub_default OWNER TO regress_publication_user2; \dRp testpub_default DROP PUBLICATION testpub_default; DROP PUBLICATION testpib_ins_trunct; DROP PUBLICATION testpub_fortbl; DROP SCHEMA pub_test CASCADE; RESET SESSION AUTHORIZATION; DROP ROLE regress_publication_user, regress_publication_user2; DROP ROLE regress_publication_user_dummy; libpg_query-13-2.1.0/test/sql/postgres_regress/random.sql000066400000000000000000000021511413137616400234410ustar00rootroot00000000000000-- -- RANDOM -- Test the random function -- -- count the number of tuples originally, should be 1000 SELECT count(*) FROM onek; -- pick three random rows, they shouldn't match (SELECT unique1 AS random FROM onek ORDER BY random() LIMIT 1) INTERSECT (SELECT unique1 AS random FROM onek ORDER BY random() LIMIT 1) INTERSECT (SELECT unique1 AS random FROM onek ORDER BY random() LIMIT 1); -- count roughly 1/10 of the tuples SELECT count(*) AS random INTO RANDOM_TBL FROM onek WHERE random() < 1.0/10; -- select again, the count should be different INSERT INTO RANDOM_TBL (random) SELECT count(*) FROM onek WHERE random() < 1.0/10; -- select again, the count should be different INSERT INTO RANDOM_TBL (random) SELECT count(*) FROM onek WHERE random() < 1.0/10; -- select again, the count should be different INSERT INTO RANDOM_TBL (random) SELECT count(*) FROM onek WHERE random() < 1.0/10; -- now test that they are different counts SELECT random, count(random) FROM RANDOM_TBL GROUP BY random HAVING count(random) > 3; SELECT AVG(random) FROM RANDOM_TBL HAVING AVG(random) NOT BETWEEN 80 AND 120; libpg_query-13-2.1.0/test/sql/postgres_regress/rangefuncs.sql000066400000000000000000000751261413137616400243300ustar00rootroot00000000000000CREATE TABLE rngfunc2(rngfuncid int, f2 int); INSERT INTO rngfunc2 VALUES(1, 11); INSERT INTO rngfunc2 VALUES(2, 22); INSERT INTO rngfunc2 VALUES(1, 111); CREATE FUNCTION rngfunct(int) returns setof rngfunc2 as 'SELECT * FROM rngfunc2 WHERE rngfuncid = $1 ORDER BY f2;' LANGUAGE SQL; -- function with ORDINALITY select * from rngfunct(1) with ordinality as z(a,b,ord); select * from rngfunct(1) with ordinality as z(a,b,ord) where b > 100; -- ordinal 2, not 1 -- ordinality vs. column names and types select a,b,ord from rngfunct(1) with ordinality as z(a,b,ord); select a,ord from unnest(array['a','b']) with ordinality as z(a,ord); select * from unnest(array['a','b']) with ordinality as z(a,ord); select a,ord from unnest(array[1.0::float8]) with ordinality as z(a,ord); select * from unnest(array[1.0::float8]) with ordinality as z(a,ord); select row_to_json(s.*) from generate_series(11,14) with ordinality s; -- ordinality vs. views create temporary view vw_ord as select * from (values (1)) v(n) join rngfunct(1) with ordinality as z(a,b,ord) on (n=ord); select * from vw_ord; select definition from pg_views where viewname='vw_ord'; drop view vw_ord; -- multiple functions select * from rows from(rngfunct(1),rngfunct(2)) with ordinality as z(a,b,c,d,ord); create temporary view vw_ord as select * from (values (1)) v(n) join rows from(rngfunct(1),rngfunct(2)) with ordinality as z(a,b,c,d,ord) on (n=ord); select * from vw_ord; select definition from pg_views where viewname='vw_ord'; drop view vw_ord; -- expansions of unnest() select * from unnest(array[10,20],array['foo','bar'],array[1.0]); select * from unnest(array[10,20],array['foo','bar'],array[1.0]) with ordinality as z(a,b,c,ord); select * from rows from(unnest(array[10,20],array['foo','bar'],array[1.0])) with ordinality as z(a,b,c,ord); select * from rows from(unnest(array[10,20],array['foo','bar']), generate_series(101,102)) with ordinality as z(a,b,c,ord); create temporary view vw_ord as select * from unnest(array[10,20],array['foo','bar'],array[1.0]) as z(a,b,c); select * from vw_ord; select definition from pg_views where viewname='vw_ord'; drop view vw_ord; create temporary view vw_ord as select * from rows from(unnest(array[10,20],array['foo','bar'],array[1.0])) as z(a,b,c); select * from vw_ord; select definition from pg_views where viewname='vw_ord'; drop view vw_ord; create temporary view vw_ord as select * from rows from(unnest(array[10,20],array['foo','bar']), generate_series(1,2)) as z(a,b,c); select * from vw_ord; select definition from pg_views where viewname='vw_ord'; drop view vw_ord; -- ordinality and multiple functions vs. rewind and reverse scan begin; declare rf_cur scroll cursor for select * from rows from(generate_series(1,5),generate_series(1,2)) with ordinality as g(i,j,o); fetch all from rf_cur; fetch backward all from rf_cur; fetch all from rf_cur; fetch next from rf_cur; fetch next from rf_cur; fetch prior from rf_cur; fetch absolute 1 from rf_cur; fetch next from rf_cur; fetch next from rf_cur; fetch next from rf_cur; fetch prior from rf_cur; fetch prior from rf_cur; fetch prior from rf_cur; commit; -- function with implicit LATERAL select * from rngfunc2, rngfunct(rngfunc2.rngfuncid) z where rngfunc2.f2 = z.f2; -- function with implicit LATERAL and explicit ORDINALITY select * from rngfunc2, rngfunct(rngfunc2.rngfuncid) with ordinality as z(rngfuncid,f2,ord) where rngfunc2.f2 = z.f2; -- function in subselect select * from rngfunc2 where f2 in (select f2 from rngfunct(rngfunc2.rngfuncid) z where z.rngfuncid = rngfunc2.rngfuncid) ORDER BY 1,2; -- function in subselect select * from rngfunc2 where f2 in (select f2 from rngfunct(1) z where z.rngfuncid = rngfunc2.rngfuncid) ORDER BY 1,2; -- function in subselect select * from rngfunc2 where f2 in (select f2 from rngfunct(rngfunc2.rngfuncid) z where z.rngfuncid = 1) ORDER BY 1,2; -- nested functions select rngfunct.rngfuncid, rngfunct.f2 from rngfunct(sin(pi()/2)::int) ORDER BY 1,2; CREATE TABLE rngfunc (rngfuncid int, rngfuncsubid int, rngfuncname text, primary key(rngfuncid,rngfuncsubid)); INSERT INTO rngfunc VALUES(1,1,'Joe'); INSERT INTO rngfunc VALUES(1,2,'Ed'); INSERT INTO rngfunc VALUES(2,1,'Mary'); -- sql, proretset = f, prorettype = b CREATE FUNCTION getrngfunc1(int) RETURNS int AS 'SELECT $1;' LANGUAGE SQL; SELECT * FROM getrngfunc1(1) AS t1; SELECT * FROM getrngfunc1(1) WITH ORDINALITY AS t1(v,o); CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc1(1); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc1(1) WITH ORDINALITY as t1(v,o); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; -- sql, proretset = t, prorettype = b CREATE FUNCTION getrngfunc2(int) RETURNS setof int AS 'SELECT rngfuncid FROM rngfunc WHERE rngfuncid = $1;' LANGUAGE SQL; SELECT * FROM getrngfunc2(1) AS t1; SELECT * FROM getrngfunc2(1) WITH ORDINALITY AS t1(v,o); CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc2(1); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc2(1) WITH ORDINALITY AS t1(v,o); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; -- sql, proretset = t, prorettype = b CREATE FUNCTION getrngfunc3(int) RETURNS setof text AS 'SELECT rngfuncname FROM rngfunc WHERE rngfuncid = $1;' LANGUAGE SQL; SELECT * FROM getrngfunc3(1) AS t1; SELECT * FROM getrngfunc3(1) WITH ORDINALITY AS t1(v,o); CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc3(1); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc3(1) WITH ORDINALITY AS t1(v,o); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; -- sql, proretset = f, prorettype = c CREATE FUNCTION getrngfunc4(int) RETURNS rngfunc AS 'SELECT * FROM rngfunc WHERE rngfuncid = $1;' LANGUAGE SQL; SELECT * FROM getrngfunc4(1) AS t1; SELECT * FROM getrngfunc4(1) WITH ORDINALITY AS t1(a,b,c,o); CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc4(1); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc4(1) WITH ORDINALITY AS t1(a,b,c,o); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; -- sql, proretset = t, prorettype = c CREATE FUNCTION getrngfunc5(int) RETURNS setof rngfunc AS 'SELECT * FROM rngfunc WHERE rngfuncid = $1;' LANGUAGE SQL; SELECT * FROM getrngfunc5(1) AS t1; SELECT * FROM getrngfunc5(1) WITH ORDINALITY AS t1(a,b,c,o); CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc5(1); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc5(1) WITH ORDINALITY AS t1(a,b,c,o); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; -- sql, proretset = f, prorettype = record CREATE FUNCTION getrngfunc6(int) RETURNS RECORD AS 'SELECT * FROM rngfunc WHERE rngfuncid = $1;' LANGUAGE SQL; SELECT * FROM getrngfunc6(1) AS t1(rngfuncid int, rngfuncsubid int, rngfuncname text); SELECT * FROM ROWS FROM( getrngfunc6(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text) ) WITH ORDINALITY; CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc6(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; CREATE VIEW vw_getrngfunc AS SELECT * FROM ROWS FROM( getrngfunc6(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text) ) WITH ORDINALITY; SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; -- sql, proretset = t, prorettype = record CREATE FUNCTION getrngfunc7(int) RETURNS setof record AS 'SELECT * FROM rngfunc WHERE rngfuncid = $1;' LANGUAGE SQL; SELECT * FROM getrngfunc7(1) AS t1(rngfuncid int, rngfuncsubid int, rngfuncname text); SELECT * FROM ROWS FROM( getrngfunc7(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text) ) WITH ORDINALITY; CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc7(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; CREATE VIEW vw_getrngfunc AS SELECT * FROM ROWS FROM( getrngfunc7(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text) ) WITH ORDINALITY; SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; -- plpgsql, proretset = f, prorettype = b CREATE FUNCTION getrngfunc8(int) RETURNS int AS 'DECLARE rngfuncint int; BEGIN SELECT rngfuncid into rngfuncint FROM rngfunc WHERE rngfuncid = $1; RETURN rngfuncint; END;' LANGUAGE plpgsql; SELECT * FROM getrngfunc8(1) AS t1; SELECT * FROM getrngfunc8(1) WITH ORDINALITY AS t1(v,o); CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc8(1); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc8(1) WITH ORDINALITY AS t1(v,o); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; -- plpgsql, proretset = f, prorettype = c CREATE FUNCTION getrngfunc9(int) RETURNS rngfunc AS 'DECLARE rngfunctup rngfunc%ROWTYPE; BEGIN SELECT * into rngfunctup FROM rngfunc WHERE rngfuncid = $1; RETURN rngfunctup; END;' LANGUAGE plpgsql; SELECT * FROM getrngfunc9(1) AS t1; SELECT * FROM getrngfunc9(1) WITH ORDINALITY AS t1(a,b,c,o); CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc9(1); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; CREATE VIEW vw_getrngfunc AS SELECT * FROM getrngfunc9(1) WITH ORDINALITY AS t1(a,b,c,o); SELECT * FROM vw_getrngfunc; DROP VIEW vw_getrngfunc; -- mix 'n match kinds, to exercise expandRTE and related logic select * from rows from(getrngfunc1(1),getrngfunc2(1),getrngfunc3(1),getrngfunc4(1),getrngfunc5(1), getrngfunc6(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text), getrngfunc7(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text), getrngfunc8(1),getrngfunc9(1)) with ordinality as t1(a,b,c,d,e,f,g,h,i,j,k,l,m,o,p,q,r,s,t,u); select * from rows from(getrngfunc9(1),getrngfunc8(1), getrngfunc7(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text), getrngfunc6(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text), getrngfunc5(1),getrngfunc4(1),getrngfunc3(1),getrngfunc2(1),getrngfunc1(1)) with ordinality as t1(a,b,c,d,e,f,g,h,i,j,k,l,m,o,p,q,r,s,t,u); create temporary view vw_rngfunc as select * from rows from(getrngfunc9(1), getrngfunc7(1) AS (rngfuncid int, rngfuncsubid int, rngfuncname text), getrngfunc1(1)) with ordinality as t1(a,b,c,d,e,f,g,n); select * from vw_rngfunc; select pg_get_viewdef('vw_rngfunc'); drop view vw_rngfunc; DROP FUNCTION getrngfunc1(int); DROP FUNCTION getrngfunc2(int); DROP FUNCTION getrngfunc3(int); DROP FUNCTION getrngfunc4(int); DROP FUNCTION getrngfunc5(int); DROP FUNCTION getrngfunc6(int); DROP FUNCTION getrngfunc7(int); DROP FUNCTION getrngfunc8(int); DROP FUNCTION getrngfunc9(int); DROP FUNCTION rngfunct(int); DROP TABLE rngfunc2; DROP TABLE rngfunc; -- Rescan tests -- CREATE TEMPORARY SEQUENCE rngfunc_rescan_seq1; CREATE TEMPORARY SEQUENCE rngfunc_rescan_seq2; CREATE TYPE rngfunc_rescan_t AS (i integer, s bigint); CREATE FUNCTION rngfunc_sql(int,int) RETURNS setof rngfunc_rescan_t AS 'SELECT i, nextval(''rngfunc_rescan_seq1'') FROM generate_series($1,$2) i;' LANGUAGE SQL; -- plpgsql functions use materialize mode CREATE FUNCTION rngfunc_mat(int,int) RETURNS setof rngfunc_rescan_t AS 'begin for i in $1..$2 loop return next (i, nextval(''rngfunc_rescan_seq2'')); end loop; end;' LANGUAGE plpgsql; --invokes ExecReScanFunctionScan - all these cases should materialize the function only once -- LEFT JOIN on a condition that the planner can't prove to be true is used to ensure the function -- is on the inner path of a nestloop join SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r) LEFT JOIN rngfunc_sql(11,13) ON (r+i)<100; SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r) LEFT JOIN rngfunc_sql(11,13) WITH ORDINALITY AS f(i,s,o) ON (r+i)<100; SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r) LEFT JOIN rngfunc_mat(11,13) ON (r+i)<100; SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r) LEFT JOIN rngfunc_mat(11,13) WITH ORDINALITY AS f(i,s,o) ON (r+i)<100; SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r) LEFT JOIN ROWS FROM( rngfunc_sql(11,13), rngfunc_mat(11,13) ) WITH ORDINALITY AS f(i1,s1,i2,s2,o) ON (r+i1+i2)<100; SELECT * FROM (VALUES (1),(2),(3)) v(r) LEFT JOIN generate_series(11,13) f(i) ON (r+i)<100; SELECT * FROM (VALUES (1),(2),(3)) v(r) LEFT JOIN generate_series(11,13) WITH ORDINALITY AS f(i,o) ON (r+i)<100; SELECT * FROM (VALUES (1),(2),(3)) v(r) LEFT JOIN unnest(array[10,20,30]) f(i) ON (r+i)<100; SELECT * FROM (VALUES (1),(2),(3)) v(r) LEFT JOIN unnest(array[10,20,30]) WITH ORDINALITY AS f(i,o) ON (r+i)<100; --invokes ExecReScanFunctionScan with chgParam != NULL (using implied LATERAL) SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), rngfunc_sql(10+r,13); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), rngfunc_sql(10+r,13) WITH ORDINALITY AS f(i,s,o); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), rngfunc_sql(11,10+r); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), rngfunc_sql(11,10+r) WITH ORDINALITY AS f(i,s,o); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (11,12),(13,15),(16,20)) v(r1,r2), rngfunc_sql(r1,r2); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (11,12),(13,15),(16,20)) v(r1,r2), rngfunc_sql(r1,r2) WITH ORDINALITY AS f(i,s,o); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), rngfunc_mat(10+r,13); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), rngfunc_mat(10+r,13) WITH ORDINALITY AS f(i,s,o); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), rngfunc_mat(11,10+r); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), rngfunc_mat(11,10+r) WITH ORDINALITY AS f(i,s,o); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (11,12),(13,15),(16,20)) v(r1,r2), rngfunc_mat(r1,r2); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (11,12),(13,15),(16,20)) v(r1,r2), rngfunc_mat(r1,r2) WITH ORDINALITY AS f(i,s,o); -- selective rescan of multiple functions: SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), ROWS FROM( rngfunc_sql(11,11), rngfunc_mat(10+r,13) ); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), ROWS FROM( rngfunc_sql(10+r,13), rngfunc_mat(11,11) ); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM (VALUES (1),(2),(3)) v(r), ROWS FROM( rngfunc_sql(10+r,13), rngfunc_mat(10+r,13) ); SELECT setval('rngfunc_rescan_seq1',1,false),setval('rngfunc_rescan_seq2',1,false); SELECT * FROM generate_series(1,2) r1, generate_series(r1,3) r2, ROWS FROM( rngfunc_sql(10+r1,13), rngfunc_mat(10+r2,13) ); SELECT * FROM (VALUES (1),(2),(3)) v(r), generate_series(10+r,20-r) f(i); SELECT * FROM (VALUES (1),(2),(3)) v(r), generate_series(10+r,20-r) WITH ORDINALITY AS f(i,o); SELECT * FROM (VALUES (1),(2),(3)) v(r), unnest(array[r*10,r*20,r*30]) f(i); SELECT * FROM (VALUES (1),(2),(3)) v(r), unnest(array[r*10,r*20,r*30]) WITH ORDINALITY AS f(i,o); -- deep nesting SELECT * FROM (VALUES (1),(2),(3)) v1(r1), LATERAL (SELECT r1, * FROM (VALUES (10),(20),(30)) v2(r2) LEFT JOIN generate_series(21,23) f(i) ON ((r2+i)<100) OFFSET 0) s1; SELECT * FROM (VALUES (1),(2),(3)) v1(r1), LATERAL (SELECT r1, * FROM (VALUES (10),(20),(30)) v2(r2) LEFT JOIN generate_series(20+r1,23) f(i) ON ((r2+i)<100) OFFSET 0) s1; SELECT * FROM (VALUES (1),(2),(3)) v1(r1), LATERAL (SELECT r1, * FROM (VALUES (10),(20),(30)) v2(r2) LEFT JOIN generate_series(r2,r2+3) f(i) ON ((r2+i)<100) OFFSET 0) s1; SELECT * FROM (VALUES (1),(2),(3)) v1(r1), LATERAL (SELECT r1, * FROM (VALUES (10),(20),(30)) v2(r2) LEFT JOIN generate_series(r1,2+r2/5) f(i) ON ((r2+i)<100) OFFSET 0) s1; -- check handling of FULL JOIN with multiple lateral references (bug #15741) SELECT * FROM (VALUES (1),(2)) v1(r1) LEFT JOIN LATERAL ( SELECT * FROM generate_series(1, v1.r1) AS gs1 LEFT JOIN LATERAL ( SELECT * FROM generate_series(1, gs1) AS gs2 LEFT JOIN generate_series(1, gs2) AS gs3 ON TRUE ) AS ss1 ON TRUE FULL JOIN generate_series(1, v1.r1) AS gs4 ON FALSE ) AS ss0 ON TRUE; DROP FUNCTION rngfunc_sql(int,int); DROP FUNCTION rngfunc_mat(int,int); DROP SEQUENCE rngfunc_rescan_seq1; DROP SEQUENCE rngfunc_rescan_seq2; -- -- Test cases involving OUT parameters -- CREATE FUNCTION rngfunc(in f1 int, out f2 int) AS 'select $1+1' LANGUAGE sql; SELECT rngfunc(42); SELECT * FROM rngfunc(42); SELECT * FROM rngfunc(42) AS p(x); -- explicit spec of return type is OK CREATE OR REPLACE FUNCTION rngfunc(in f1 int, out f2 int) RETURNS int AS 'select $1+1' LANGUAGE sql; -- error, wrong result type CREATE OR REPLACE FUNCTION rngfunc(in f1 int, out f2 int) RETURNS float AS 'select $1+1' LANGUAGE sql; -- with multiple OUT params you must get a RECORD result CREATE OR REPLACE FUNCTION rngfunc(in f1 int, out f2 int, out f3 text) RETURNS int AS 'select $1+1' LANGUAGE sql; CREATE OR REPLACE FUNCTION rngfunc(in f1 int, out f2 int, out f3 text) RETURNS record AS 'select $1+1' LANGUAGE sql; CREATE OR REPLACE FUNCTION rngfuncr(in f1 int, out f2 int, out text) AS $$select $1-1, $1::text || 'z'$$ LANGUAGE sql; SELECT f1, rngfuncr(f1) FROM int4_tbl; SELECT * FROM rngfuncr(42); SELECT * FROM rngfuncr(42) AS p(a,b); CREATE OR REPLACE FUNCTION rngfuncb(in f1 int, inout f2 int, out text) AS $$select $2-1, $1::text || 'z'$$ LANGUAGE sql; SELECT f1, rngfuncb(f1, f1/2) FROM int4_tbl; SELECT * FROM rngfuncb(42, 99); SELECT * FROM rngfuncb(42, 99) AS p(a,b); -- Can reference function with or without OUT params for DROP, etc DROP FUNCTION rngfunc(int); DROP FUNCTION rngfuncr(in f2 int, out f1 int, out text); DROP FUNCTION rngfuncb(in f1 int, inout f2 int); -- -- For my next trick, polymorphic OUT parameters -- CREATE FUNCTION dup (f1 anyelement, f2 out anyelement, f3 out anyarray) AS 'select $1, array[$1,$1]' LANGUAGE sql; SELECT dup(22); SELECT dup('xyz'); -- fails SELECT dup('xyz'::text); SELECT * FROM dup('xyz'::text); -- fails, as we are attempting to rename first argument CREATE OR REPLACE FUNCTION dup (inout f2 anyelement, out f3 anyarray) AS 'select $1, array[$1,$1]' LANGUAGE sql; DROP FUNCTION dup(anyelement); -- equivalent behavior, though different name exposed for input arg CREATE OR REPLACE FUNCTION dup (inout f2 anyelement, out f3 anyarray) AS 'select $1, array[$1,$1]' LANGUAGE sql; SELECT dup(22); DROP FUNCTION dup(anyelement); -- fails, no way to deduce outputs CREATE FUNCTION bad (f1 int, out f2 anyelement, out f3 anyarray) AS 'select $1, array[$1,$1]' LANGUAGE sql; CREATE FUNCTION dup (f1 anycompatible, f2 anycompatiblearray, f3 out anycompatible, f4 out anycompatiblearray) AS 'select $1, $2' LANGUAGE sql; SELECT dup(22, array[44]); SELECT dup(4.5, array[44]); SELECT dup(22, array[44::bigint]); SELECT *, pg_typeof(f3), pg_typeof(f4) FROM dup(22, array[44::bigint]); DROP FUNCTION dup(f1 anycompatible, f2 anycompatiblearray); CREATE FUNCTION dup (f1 anycompatiblerange, f2 out anycompatible, f3 out anycompatiblearray, f4 out anycompatiblerange) AS 'select lower($1), array[lower($1), upper($1)], $1' LANGUAGE sql; SELECT dup(int4range(4,7)); SELECT dup(numrange(4,7)); SELECT dup(textrange('aaa', 'bbb')); DROP FUNCTION dup(f1 anycompatiblerange); -- fails, no way to deduce outputs CREATE FUNCTION bad (f1 anyarray, out f2 anycompatible, out f3 anycompatiblearray) AS 'select $1, array[$1,$1]' LANGUAGE sql; -- -- table functions -- CREATE OR REPLACE FUNCTION rngfunc() RETURNS TABLE(a int) AS $$ SELECT a FROM generate_series(1,5) a(a) $$ LANGUAGE sql; SELECT * FROM rngfunc(); DROP FUNCTION rngfunc(); CREATE OR REPLACE FUNCTION rngfunc(int) RETURNS TABLE(a int, b int) AS $$ SELECT a, b FROM generate_series(1,$1) a(a), generate_series(1,$1) b(b) $$ LANGUAGE sql; SELECT * FROM rngfunc(3); DROP FUNCTION rngfunc(int); -- case that causes change of typmod knowledge during inlining CREATE OR REPLACE FUNCTION rngfunc() RETURNS TABLE(a varchar(5)) AS $$ SELECT 'hello'::varchar(5) $$ LANGUAGE sql STABLE; SELECT * FROM rngfunc() GROUP BY 1; DROP FUNCTION rngfunc(); -- -- some tests on SQL functions with RETURNING -- create temp table tt(f1 serial, data text); create function insert_tt(text) returns int as $$ insert into tt(data) values($1) returning f1 $$ language sql; select insert_tt('foo'); select insert_tt('bar'); select * from tt; -- insert will execute to completion even if function needs just 1 row create or replace function insert_tt(text) returns int as $$ insert into tt(data) values($1),($1||$1) returning f1 $$ language sql; select insert_tt('fool'); select * from tt; -- setof does what's expected create or replace function insert_tt2(text,text) returns setof int as $$ insert into tt(data) values($1),($2) returning f1 $$ language sql; select insert_tt2('foolish','barrish'); select * from insert_tt2('baz','quux'); select * from tt; -- limit doesn't prevent execution to completion select insert_tt2('foolish','barrish') limit 1; select * from tt; -- triggers will fire, too create function noticetrigger() returns trigger as $$ begin raise notice 'noticetrigger % %', new.f1, new.data; return null; end $$ language plpgsql; create trigger tnoticetrigger after insert on tt for each row execute procedure noticetrigger(); select insert_tt2('foolme','barme') limit 1; select * from tt; -- and rules work create temp table tt_log(f1 int, data text); create rule insert_tt_rule as on insert to tt do also insert into tt_log values(new.*); select insert_tt2('foollog','barlog') limit 1; select * from tt; -- note that nextval() gets executed a second time in the rule expansion, -- which is expected. select * from tt_log; -- test case for a whole-row-variable bug create function rngfunc1(n integer, out a text, out b text) returns setof record language sql as $$ select 'foo ' || i, 'bar ' || i from generate_series(1,$1) i $$; set work_mem='64kB'; select t.a, t, t.a from rngfunc1(10000) t limit 1; reset work_mem; select t.a, t, t.a from rngfunc1(10000) t limit 1; drop function rngfunc1(n integer); -- test use of SQL functions returning record -- this is supported in some cases where the query doesn't specify -- the actual record type ... create function array_to_set(anyarray) returns setof record as $$ select i AS "index", $1[i] AS "value" from generate_subscripts($1, 1) i $$ language sql strict immutable; select array_to_set(array['one', 'two']); select * from array_to_set(array['one', 'two']) as t(f1 int,f2 text); select * from array_to_set(array['one', 'two']); -- fail -- after-the-fact coercion of the columns is now possible, too select * from array_to_set(array['one', 'two']) as t(f1 numeric(4,2),f2 text); -- and if it doesn't work, you get a compile-time not run-time error select * from array_to_set(array['one', 'two']) as t(f1 point,f2 text); -- with "strict", this function can't be inlined in FROM explain (verbose, costs off) select * from array_to_set(array['one', 'two']) as t(f1 numeric(4,2),f2 text); -- but without, it can be: create or replace function array_to_set(anyarray) returns setof record as $$ select i AS "index", $1[i] AS "value" from generate_subscripts($1, 1) i $$ language sql immutable; select array_to_set(array['one', 'two']); select * from array_to_set(array['one', 'two']) as t(f1 int,f2 text); select * from array_to_set(array['one', 'two']) as t(f1 numeric(4,2),f2 text); select * from array_to_set(array['one', 'two']) as t(f1 point,f2 text); explain (verbose, costs off) select * from array_to_set(array['one', 'two']) as t(f1 numeric(4,2),f2 text); create temp table rngfunc(f1 int8, f2 int8); create function testrngfunc() returns record as $$ insert into rngfunc values (1,2) returning *; $$ language sql; select testrngfunc(); select * from testrngfunc() as t(f1 int8,f2 int8); select * from testrngfunc(); -- fail drop function testrngfunc(); create function testrngfunc() returns setof record as $$ insert into rngfunc values (1,2), (3,4) returning *; $$ language sql; select testrngfunc(); select * from testrngfunc() as t(f1 int8,f2 int8); select * from testrngfunc(); -- fail drop function testrngfunc(); -- Check that typmod imposed by a composite type is honored create type rngfunc_type as (f1 numeric(35,6), f2 numeric(35,2)); create function testrngfunc() returns rngfunc_type as $$ select 7.136178319899999964, 7.136178319899999964; $$ language sql immutable; explain (verbose, costs off) select testrngfunc(); select testrngfunc(); explain (verbose, costs off) select * from testrngfunc(); select * from testrngfunc(); create or replace function testrngfunc() returns rngfunc_type as $$ select 7.136178319899999964, 7.136178319899999964; $$ language sql volatile; explain (verbose, costs off) select testrngfunc(); select testrngfunc(); explain (verbose, costs off) select * from testrngfunc(); select * from testrngfunc(); drop function testrngfunc(); create function testrngfunc() returns setof rngfunc_type as $$ select 7.136178319899999964, 7.136178319899999964; $$ language sql immutable; explain (verbose, costs off) select testrngfunc(); select testrngfunc(); explain (verbose, costs off) select * from testrngfunc(); select * from testrngfunc(); create or replace function testrngfunc() returns setof rngfunc_type as $$ select 7.136178319899999964, 7.136178319899999964; $$ language sql volatile; explain (verbose, costs off) select testrngfunc(); select testrngfunc(); explain (verbose, costs off) select * from testrngfunc(); select * from testrngfunc(); create or replace function testrngfunc() returns setof rngfunc_type as $$ select 1, 2 union select 3, 4 order by 1; $$ language sql immutable; explain (verbose, costs off) select testrngfunc(); select testrngfunc(); explain (verbose, costs off) select * from testrngfunc(); select * from testrngfunc(); drop type rngfunc_type cascade; -- -- Check some cases involving added/dropped columns in a rowtype result -- create temp table users (userid text, seq int, email text, todrop bool, moredrop int, enabled bool); insert into users values ('id',1,'email',true,11,true); insert into users values ('id2',2,'email2',true,12,true); alter table users drop column todrop; create or replace function get_first_user() returns users as $$ SELECT * FROM users ORDER BY userid LIMIT 1; $$ language sql stable; SELECT get_first_user(); SELECT * FROM get_first_user(); create or replace function get_users() returns setof users as $$ SELECT * FROM users ORDER BY userid; $$ language sql stable; SELECT get_users(); SELECT * FROM get_users(); SELECT * FROM get_users() WITH ORDINALITY; -- make sure ordinality copes -- multiple functions vs. dropped columns SELECT * FROM ROWS FROM(generate_series(10,11), get_users()) WITH ORDINALITY; SELECT * FROM ROWS FROM(get_users(), generate_series(10,11)) WITH ORDINALITY; -- check that we can cope with post-parsing changes in rowtypes create temp view usersview as SELECT * FROM ROWS FROM(get_users(), generate_series(10,11)) WITH ORDINALITY; select * from usersview; alter table users add column junk text; select * from usersview; begin; alter table users drop column moredrop; select * from usersview; -- expect clean failure rollback; alter table users alter column seq type numeric; select * from usersview; -- expect clean failure drop view usersview; drop function get_first_user(); drop function get_users(); drop table users; -- check behavior with type coercion required for a set-op create or replace function rngfuncbar() returns setof text as $$ select 'foo'::varchar union all select 'bar'::varchar ; $$ language sql stable; select rngfuncbar(); select * from rngfuncbar(); -- this function is now inlinable, too: explain (verbose, costs off) select * from rngfuncbar(); drop function rngfuncbar(); -- check handling of a SQL function with multiple OUT params (bug #5777) create or replace function rngfuncbar(out integer, out numeric) as $$ select (1, 2.1) $$ language sql; select * from rngfuncbar(); create or replace function rngfuncbar(out integer, out numeric) as $$ select (1, 2) $$ language sql; select * from rngfuncbar(); -- fail create or replace function rngfuncbar(out integer, out numeric) as $$ select (1, 2.1, 3) $$ language sql; select * from rngfuncbar(); -- fail drop function rngfuncbar(); -- check whole-row-Var handling in nested lateral functions (bug #11703) create function extractq2(t int8_tbl) returns int8 as $$ select t.q2 $$ language sql immutable; explain (verbose, costs off) select x from int8_tbl, extractq2(int8_tbl) f(x); select x from int8_tbl, extractq2(int8_tbl) f(x); create function extractq2_2(t int8_tbl) returns table(ret1 int8) as $$ select extractq2(t) offset 0 $$ language sql immutable; explain (verbose, costs off) select x from int8_tbl, extractq2_2(int8_tbl) f(x); select x from int8_tbl, extractq2_2(int8_tbl) f(x); -- without the "offset 0", this function gets optimized quite differently create function extractq2_2_opt(t int8_tbl) returns table(ret1 int8) as $$ select extractq2(t) $$ language sql immutable; explain (verbose, costs off) select x from int8_tbl, extractq2_2_opt(int8_tbl) f(x); select x from int8_tbl, extractq2_2_opt(int8_tbl) f(x); -- check handling of nulls in SRF results (bug #7808) create type rngfunc2 as (a integer, b text); select *, row_to_json(u) from unnest(array[(1,'foo')::rngfunc2, null::rngfunc2]) u; select *, row_to_json(u) from unnest(array[null::rngfunc2, null::rngfunc2]) u; select *, row_to_json(u) from unnest(array[null::rngfunc2, (1,'foo')::rngfunc2, null::rngfunc2]) u; select *, row_to_json(u) from unnest(array[]::rngfunc2[]) u; drop type rngfunc2; libpg_query-13-2.1.0/test/sql/postgres_regress/rangetypes.sql000066400000000000000000000524201413137616400243460ustar00rootroot00000000000000-- Tests for range data types. create type textrange as range (subtype=text, collation="C"); -- -- test input parser -- -- negative tests; should fail select ''::textrange; select '-[a,z)'::textrange; select '[a,z) - '::textrange; select '(",a)'::textrange; select '(,,a)'::textrange; select '(),a)'::textrange; select '(a,))'::textrange; select '(],a)'::textrange; select '(a,])'::textrange; select '[z,a]'::textrange; -- should succeed select ' empty '::textrange; select ' ( empty, empty ) '::textrange; select ' ( " a " " a ", " z " " z " ) '::textrange; select '(,z)'::textrange; select '(a,)'::textrange; select '[,z]'::textrange; select '[a,]'::textrange; select '(,)'::textrange; select '[ , ]'::textrange; select '["",""]'::textrange; select '[",",","]'::textrange; select '["\\","\\"]'::textrange; select '(\\,a)'::textrange; select '((,z)'::textrange; select '([,z)'::textrange; select '(!,()'::textrange; select '(!,[)'::textrange; select '[a,a]'::textrange; -- these are allowed but normalize to empty: select '[a,a)'::textrange; select '(a,a]'::textrange; select '(a,a)'::textrange; -- -- create some test data and test the operators -- CREATE TABLE numrange_test (nr NUMRANGE); create index numrange_test_btree on numrange_test(nr); INSERT INTO numrange_test VALUES('[,)'); INSERT INTO numrange_test VALUES('[3,]'); INSERT INTO numrange_test VALUES('[, 5)'); INSERT INTO numrange_test VALUES(numrange(1.1, 2.2)); INSERT INTO numrange_test VALUES('empty'); INSERT INTO numrange_test VALUES(numrange(1.7, 1.7, '[]')); SELECT nr, isempty(nr), lower(nr), upper(nr) FROM numrange_test; SELECT nr, lower_inc(nr), lower_inf(nr), upper_inc(nr), upper_inf(nr) FROM numrange_test; SELECT * FROM numrange_test WHERE range_contains(nr, numrange(1.9,1.91)); SELECT * FROM numrange_test WHERE nr @> numrange(1.0,10000.1); SELECT * FROM numrange_test WHERE range_contained_by(numrange(-1e7,-10000.1), nr); SELECT * FROM numrange_test WHERE 1.9 <@ nr; select * from numrange_test where nr = 'empty'; select * from numrange_test where nr = '(1.1, 2.2)'; select * from numrange_test where nr = '[1.1, 2.2)'; select * from numrange_test where nr < 'empty'; select * from numrange_test where nr < numrange(-1000.0, -1000.0,'[]'); select * from numrange_test where nr < numrange(0.0, 1.0,'[]'); select * from numrange_test where nr < numrange(1000.0, 1001.0,'[]'); select * from numrange_test where nr <= 'empty'; select * from numrange_test where nr >= 'empty'; select * from numrange_test where nr > 'empty'; select * from numrange_test where nr > numrange(-1001.0, -1000.0,'[]'); select * from numrange_test where nr > numrange(0.0, 1.0,'[]'); select * from numrange_test where nr > numrange(1000.0, 1000.0,'[]'); select numrange(2.0, 1.0); select numrange(2.0, 3.0) -|- numrange(3.0, 4.0); select range_adjacent(numrange(2.0, 3.0), numrange(3.1, 4.0)); select range_adjacent(numrange(2.0, 3.0), numrange(3.1, null)); select numrange(2.0, 3.0, '[]') -|- numrange(3.0, 4.0, '()'); select numrange(1.0, 2.0) -|- numrange(2.0, 3.0,'[]'); select range_adjacent(numrange(2.0, 3.0, '(]'), numrange(1.0, 2.0, '(]')); select numrange(1.1, 3.3) <@ numrange(0.1,10.1); select numrange(0.1, 10.1) <@ numrange(1.1,3.3); select numrange(1.1, 2.2) - numrange(2.0, 3.0); select numrange(1.1, 2.2) - numrange(2.2, 3.0); select numrange(1.1, 2.2,'[]') - numrange(2.0, 3.0); select range_minus(numrange(10.1,12.2,'[]'), numrange(110.0,120.2,'(]')); select range_minus(numrange(10.1,12.2,'[]'), numrange(0.0,120.2,'(]')); select numrange(4.5, 5.5, '[]') && numrange(5.5, 6.5); select numrange(1.0, 2.0) << numrange(3.0, 4.0); select numrange(1.0, 3.0,'[]') << numrange(3.0, 4.0,'[]'); select numrange(1.0, 3.0,'()') << numrange(3.0, 4.0,'()'); select numrange(1.0, 2.0) >> numrange(3.0, 4.0); select numrange(3.0, 70.0) &< numrange(6.6, 100.0); select numrange(1.1, 2.2) < numrange(1.0, 200.2); select numrange(1.1, 2.2) < numrange(1.1, 1.2); select numrange(1.0, 2.0) + numrange(2.0, 3.0); select numrange(1.0, 2.0) + numrange(1.5, 3.0); select numrange(1.0, 2.0) + numrange(2.5, 3.0); -- should fail select range_merge(numrange(1.0, 2.0), numrange(2.0, 3.0)); select range_merge(numrange(1.0, 2.0), numrange(1.5, 3.0)); select range_merge(numrange(1.0, 2.0), numrange(2.5, 3.0)); -- shouldn't fail select numrange(1.0, 2.0) * numrange(2.0, 3.0); select numrange(1.0, 2.0) * numrange(1.5, 3.0); select numrange(1.0, 2.0) * numrange(2.5, 3.0); create table numrange_test2(nr numrange); create index numrange_test2_hash_idx on numrange_test2 using hash (nr); INSERT INTO numrange_test2 VALUES('[, 5)'); INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2)); INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2)); INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2,'()')); INSERT INTO numrange_test2 VALUES('empty'); select * from numrange_test2 where nr = 'empty'::numrange; select * from numrange_test2 where nr = numrange(1.1, 2.2); select * from numrange_test2 where nr = numrange(1.1, 2.3); set enable_nestloop=t; set enable_hashjoin=f; set enable_mergejoin=f; select * from numrange_test natural join numrange_test2 order by nr; set enable_nestloop=f; set enable_hashjoin=t; set enable_mergejoin=f; select * from numrange_test natural join numrange_test2 order by nr; set enable_nestloop=f; set enable_hashjoin=f; set enable_mergejoin=t; select * from numrange_test natural join numrange_test2 order by nr; set enable_nestloop to default; set enable_hashjoin to default; set enable_mergejoin to default; -- keep numrange_test around to help exercise dump/reload DROP TABLE numrange_test2; -- -- Apply a subset of the above tests on a collatable type, too -- CREATE TABLE textrange_test (tr textrange); create index textrange_test_btree on textrange_test(tr); INSERT INTO textrange_test VALUES('[,)'); INSERT INTO textrange_test VALUES('["a",]'); INSERT INTO textrange_test VALUES('[,"q")'); INSERT INTO textrange_test VALUES(textrange('b', 'g')); INSERT INTO textrange_test VALUES('empty'); INSERT INTO textrange_test VALUES(textrange('d', 'd', '[]')); SELECT tr, isempty(tr), lower(tr), upper(tr) FROM textrange_test; SELECT tr, lower_inc(tr), lower_inf(tr), upper_inc(tr), upper_inf(tr) FROM textrange_test; SELECT * FROM textrange_test WHERE range_contains(tr, textrange('f', 'fx')); SELECT * FROM textrange_test WHERE tr @> textrange('a', 'z'); SELECT * FROM textrange_test WHERE range_contained_by(textrange('0','9'), tr); SELECT * FROM textrange_test WHERE 'e'::text <@ tr; select * from textrange_test where tr = 'empty'; select * from textrange_test where tr = '("b","g")'; select * from textrange_test where tr = '["b","g")'; select * from textrange_test where tr < 'empty'; -- test canonical form for int4range select int4range(1, 10, '[]'); select int4range(1, 10, '[)'); select int4range(1, 10, '(]'); select int4range(1, 10, '()'); select int4range(1, 2, '()'); -- test canonical form for daterange select daterange('2000-01-10'::date, '2000-01-20'::date, '[]'); select daterange('2000-01-10'::date, '2000-01-20'::date, '[)'); select daterange('2000-01-10'::date, '2000-01-20'::date, '(]'); select daterange('2000-01-10'::date, '2000-01-20'::date, '()'); select daterange('2000-01-10'::date, '2000-01-11'::date, '()'); select daterange('2000-01-10'::date, '2000-01-11'::date, '(]'); select daterange('-infinity'::date, '2000-01-01'::date, '()'); select daterange('-infinity'::date, '2000-01-01'::date, '[)'); select daterange('2000-01-01'::date, 'infinity'::date, '[)'); select daterange('2000-01-01'::date, 'infinity'::date, '[]'); -- test GiST index that's been built incrementally create table test_range_gist(ir int4range); create index test_range_gist_idx on test_range_gist using gist (ir); insert into test_range_gist select int4range(g, g+10) from generate_series(1,2000) g; insert into test_range_gist select 'empty'::int4range from generate_series(1,500) g; insert into test_range_gist select int4range(g, g+10000) from generate_series(1,1000) g; insert into test_range_gist select 'empty'::int4range from generate_series(1,500) g; insert into test_range_gist select int4range(NULL,g*10,'(]') from generate_series(1,100) g; insert into test_range_gist select int4range(g*10,NULL,'(]') from generate_series(1,100) g; insert into test_range_gist select int4range(g, g+10) from generate_series(1,2000) g; -- first, verify non-indexed results SET enable_seqscan = t; SET enable_indexscan = f; SET enable_bitmapscan = f; select count(*) from test_range_gist where ir @> 'empty'::int4range; select count(*) from test_range_gist where ir = int4range(10,20); select count(*) from test_range_gist where ir @> 10; select count(*) from test_range_gist where ir @> int4range(10,20); select count(*) from test_range_gist where ir && int4range(10,20); select count(*) from test_range_gist where ir <@ int4range(10,50); select count(*) from test_range_gist where ir << int4range(100,500); select count(*) from test_range_gist where ir >> int4range(100,500); select count(*) from test_range_gist where ir &< int4range(100,500); select count(*) from test_range_gist where ir &> int4range(100,500); select count(*) from test_range_gist where ir -|- int4range(100,500); -- now check same queries using index SET enable_seqscan = f; SET enable_indexscan = t; SET enable_bitmapscan = f; select count(*) from test_range_gist where ir @> 'empty'::int4range; select count(*) from test_range_gist where ir = int4range(10,20); select count(*) from test_range_gist where ir @> 10; select count(*) from test_range_gist where ir @> int4range(10,20); select count(*) from test_range_gist where ir && int4range(10,20); select count(*) from test_range_gist where ir <@ int4range(10,50); select count(*) from test_range_gist where ir << int4range(100,500); select count(*) from test_range_gist where ir >> int4range(100,500); select count(*) from test_range_gist where ir &< int4range(100,500); select count(*) from test_range_gist where ir &> int4range(100,500); select count(*) from test_range_gist where ir -|- int4range(100,500); -- now check same queries using a bulk-loaded index drop index test_range_gist_idx; create index test_range_gist_idx on test_range_gist using gist (ir); select count(*) from test_range_gist where ir @> 'empty'::int4range; select count(*) from test_range_gist where ir = int4range(10,20); select count(*) from test_range_gist where ir @> 10; select count(*) from test_range_gist where ir @> int4range(10,20); select count(*) from test_range_gist where ir && int4range(10,20); select count(*) from test_range_gist where ir <@ int4range(10,50); select count(*) from test_range_gist where ir << int4range(100,500); select count(*) from test_range_gist where ir >> int4range(100,500); select count(*) from test_range_gist where ir &< int4range(100,500); select count(*) from test_range_gist where ir &> int4range(100,500); select count(*) from test_range_gist where ir -|- int4range(100,500); -- test SP-GiST index that's been built incrementally create table test_range_spgist(ir int4range); create index test_range_spgist_idx on test_range_spgist using spgist (ir); insert into test_range_spgist select int4range(g, g+10) from generate_series(1,2000) g; insert into test_range_spgist select 'empty'::int4range from generate_series(1,500) g; insert into test_range_spgist select int4range(g, g+10000) from generate_series(1,1000) g; insert into test_range_spgist select 'empty'::int4range from generate_series(1,500) g; insert into test_range_spgist select int4range(NULL,g*10,'(]') from generate_series(1,100) g; insert into test_range_spgist select int4range(g*10,NULL,'(]') from generate_series(1,100) g; insert into test_range_spgist select int4range(g, g+10) from generate_series(1,2000) g; -- first, verify non-indexed results SET enable_seqscan = t; SET enable_indexscan = f; SET enable_bitmapscan = f; select count(*) from test_range_spgist where ir @> 'empty'::int4range; select count(*) from test_range_spgist where ir = int4range(10,20); select count(*) from test_range_spgist where ir @> 10; select count(*) from test_range_spgist where ir @> int4range(10,20); select count(*) from test_range_spgist where ir && int4range(10,20); select count(*) from test_range_spgist where ir <@ int4range(10,50); select count(*) from test_range_spgist where ir << int4range(100,500); select count(*) from test_range_spgist where ir >> int4range(100,500); select count(*) from test_range_spgist where ir &< int4range(100,500); select count(*) from test_range_spgist where ir &> int4range(100,500); select count(*) from test_range_spgist where ir -|- int4range(100,500); -- now check same queries using index SET enable_seqscan = f; SET enable_indexscan = t; SET enable_bitmapscan = f; select count(*) from test_range_spgist where ir @> 'empty'::int4range; select count(*) from test_range_spgist where ir = int4range(10,20); select count(*) from test_range_spgist where ir @> 10; select count(*) from test_range_spgist where ir @> int4range(10,20); select count(*) from test_range_spgist where ir && int4range(10,20); select count(*) from test_range_spgist where ir <@ int4range(10,50); select count(*) from test_range_spgist where ir << int4range(100,500); select count(*) from test_range_spgist where ir >> int4range(100,500); select count(*) from test_range_spgist where ir &< int4range(100,500); select count(*) from test_range_spgist where ir &> int4range(100,500); select count(*) from test_range_spgist where ir -|- int4range(100,500); -- now check same queries using a bulk-loaded index drop index test_range_spgist_idx; create index test_range_spgist_idx on test_range_spgist using spgist (ir); select count(*) from test_range_spgist where ir @> 'empty'::int4range; select count(*) from test_range_spgist where ir = int4range(10,20); select count(*) from test_range_spgist where ir @> 10; select count(*) from test_range_spgist where ir @> int4range(10,20); select count(*) from test_range_spgist where ir && int4range(10,20); select count(*) from test_range_spgist where ir <@ int4range(10,50); select count(*) from test_range_spgist where ir << int4range(100,500); select count(*) from test_range_spgist where ir >> int4range(100,500); select count(*) from test_range_spgist where ir &< int4range(100,500); select count(*) from test_range_spgist where ir &> int4range(100,500); select count(*) from test_range_spgist where ir -|- int4range(100,500); -- test index-only scans explain (costs off) select ir from test_range_spgist where ir -|- int4range(10,20) order by ir; select ir from test_range_spgist where ir -|- int4range(10,20) order by ir; RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; -- test elem <@ range operator create table test_range_elem(i int4); create index test_range_elem_idx on test_range_elem (i); insert into test_range_elem select i from generate_series(1,100) i; select count(*) from test_range_elem where i <@ int4range(10,50); drop table test_range_elem; -- -- Btree_gist is not included by default, so to test exclusion -- constraints with range types, use singleton int ranges for the "=" -- portion of the constraint. -- create table test_range_excl( room int4range, speaker int4range, during tsrange, exclude using gist (room with =, during with &&), exclude using gist (speaker with =, during with &&) ); insert into test_range_excl values(int4range(123, 123, '[]'), int4range(1, 1, '[]'), '[2010-01-02 10:00, 2010-01-02 11:00)'); insert into test_range_excl values(int4range(123, 123, '[]'), int4range(2, 2, '[]'), '[2010-01-02 11:00, 2010-01-02 12:00)'); insert into test_range_excl values(int4range(123, 123, '[]'), int4range(3, 3, '[]'), '[2010-01-02 10:10, 2010-01-02 11:00)'); insert into test_range_excl values(int4range(124, 124, '[]'), int4range(3, 3, '[]'), '[2010-01-02 10:10, 2010-01-02 11:10)'); insert into test_range_excl values(int4range(125, 125, '[]'), int4range(1, 1, '[]'), '[2010-01-02 10:10, 2010-01-02 11:00)'); -- test bigint ranges select int8range(10000000000::int8, 20000000000::int8,'(]'); -- test tstz ranges set timezone to '-08'; select '[2010-01-01 01:00:00 -05, 2010-01-01 02:00:00 -08)'::tstzrange; -- should fail select '[2010-01-01 01:00:00 -08, 2010-01-01 02:00:00 -05)'::tstzrange; set timezone to default; -- -- Test user-defined range of floats -- --should fail create type float8range as range (subtype=float8, subtype_diff=float4mi); --should succeed create type float8range as range (subtype=float8, subtype_diff=float8mi); select '[123.001, 5.e9)'::float8range @> 888.882::float8; create table float8range_test(f8r float8range, i int); insert into float8range_test values(float8range(-100.00007, '1.111113e9'), 42); select * from float8range_test; drop table float8range_test; -- -- Test range types over domains -- create domain mydomain as int4; create type mydomainrange as range(subtype=mydomain); select '[4,50)'::mydomainrange @> 7::mydomain; drop domain mydomain; -- fail drop domain mydomain cascade; -- -- Test domains over range types -- create domain restrictedrange as int4range check (upper(value) < 10); select '[4,5)'::restrictedrange @> 7; select '[4,50)'::restrictedrange @> 7; -- should fail drop domain restrictedrange; -- -- Test multiple range types over the same subtype -- create type textrange1 as range(subtype=text, collation="C"); create type textrange2 as range(subtype=text, collation="C"); select textrange1('a','Z') @> 'b'::text; select textrange2('a','z') @> 'b'::text; drop type textrange1; drop type textrange2; -- -- Test polymorphic type system -- create function anyarray_anyrange_func(a anyarray, r anyrange) returns anyelement as 'select $1[1] + lower($2);' language sql; select anyarray_anyrange_func(ARRAY[1,2], int4range(10,20)); -- should fail select anyarray_anyrange_func(ARRAY[1,2], numrange(10,20)); drop function anyarray_anyrange_func(anyarray, anyrange); -- should fail create function bogus_func(anyelement) returns anyrange as 'select int4range(1,10)' language sql; -- should fail create function bogus_func(int) returns anyrange as 'select int4range(1,10)' language sql; create function range_add_bounds(anyrange) returns anyelement as 'select lower($1) + upper($1)' language sql; select range_add_bounds(int4range(1, 17)); select range_add_bounds(numrange(1.0001, 123.123)); create function rangetypes_sql(q anyrange, b anyarray, out c anyelement) as $$ select upper($1) + $2[1] $$ language sql; select rangetypes_sql(int4range(1,10), ARRAY[2,20]); select rangetypes_sql(numrange(1,10), ARRAY[2,20]); -- match failure create function anycompatiblearray_anycompatiblerange_func(a anycompatiblearray, r anycompatiblerange) returns anycompatible as 'select $1[1] + lower($2);' language sql; select anycompatiblearray_anycompatiblerange_func(ARRAY[1,2], int4range(10,20)); select anycompatiblearray_anycompatiblerange_func(ARRAY[1,2], numrange(10,20)); -- should fail select anycompatiblearray_anycompatiblerange_func(ARRAY[1.1,2], int4range(10,20)); drop function anycompatiblearray_anycompatiblerange_func(anycompatiblearray, anycompatiblerange); -- should fail create function bogus_func(anycompatible) returns anycompatiblerange as 'select int4range(1,10)' language sql; -- -- Arrays of ranges -- select ARRAY[numrange(1.1, 1.2), numrange(12.3, 155.5)]; create table i8r_array (f1 int, f2 int8range[]); insert into i8r_array values (42, array[int8range(1,10), int8range(2,20)]); select * from i8r_array; drop table i8r_array; -- -- Ranges of arrays -- create type arrayrange as range (subtype=int4[]); select arrayrange(ARRAY[1,2], ARRAY[2,1]); select arrayrange(ARRAY[2,1], ARRAY[1,2]); -- fail select array[1,1] <@ arrayrange(array[1,2], array[2,1]); select array[1,3] <@ arrayrange(array[1,2], array[2,1]); -- -- Ranges of composites -- create type two_ints as (a int, b int); create type two_ints_range as range (subtype = two_ints); -- with force_parallel_mode on, this exercises tqueue.c's range remapping select *, row_to_json(upper(t)) as u from (values (two_ints_range(row(1,2), row(3,4))), (two_ints_range(row(5,6), row(7,8)))) v(t); -- this must be rejected to avoid self-inclusion issues: alter type two_ints add attribute c two_ints_range; drop type two_ints cascade; -- -- Check behavior when subtype lacks a hash function -- create type cashrange as range (subtype = money); set enable_sort = off; -- try to make it pick a hash setop implementation select '(2,5)'::cashrange except select '(5,6)'::cashrange; reset enable_sort; -- -- OUT/INOUT/TABLE functions -- create function outparam_succeed(i anyrange, out r anyrange, out t text) as $$ select $1, 'foo'::text $$ language sql; select * from outparam_succeed(int4range(1,2)); create function outparam2_succeed(r anyrange, out lu anyarray, out ul anyarray) as $$ select array[lower($1), upper($1)], array[upper($1), lower($1)] $$ language sql; select * from outparam2_succeed(int4range(1,11)); create function inoutparam_succeed(out i anyelement, inout r anyrange) as $$ select upper($1), $1 $$ language sql; select * from inoutparam_succeed(int4range(1,2)); create function table_succeed(r anyrange) returns table(l anyelement, u anyelement) as $$ select lower($1), upper($1) $$ language sql; select * from table_succeed(int4range(1,11)); -- should fail create function outparam_fail(i anyelement, out r anyrange, out t text) as $$ select '[1,10]', 'foo' $$ language sql; --should fail create function inoutparam_fail(inout i anyelement, out r anyrange) as $$ select $1, '[1,10]' $$ language sql; --should fail create function table_fail(i anyelement) returns table(i anyelement, r anyrange) as $$ select $1, '[1,10]' $$ language sql; libpg_query-13-2.1.0/test/sql/postgres_regress/regex.linux.utf8.sql000066400000000000000000000033041413137616400253170ustar00rootroot00000000000000/* * This test is for Linux/glibc systems and others that implement proper * locale classification of Unicode characters with high code values. * It must be run in a database with UTF8 encoding and a Unicode-aware locale. */ SET client_encoding TO UTF8; -- -- Test the "high colormap" logic with single characters and ranges that -- exceed the MAX_SIMPLE_CHR cutoff, here assumed to be less than U+2000. -- -- trivial cases: SELECT 'aⓐ' ~ U&'a\24D0' AS t; SELECT 'aⓐ' ~ U&'a\24D1' AS f; SELECT 'aⓕ' ~ 'a[ⓐ-ⓩ]' AS t; SELECT 'aⒻ' ~ 'a[ⓐ-ⓩ]' AS f; -- cases requiring splitting of ranges: SELECT 'aⓕⓕ' ~ 'aⓕ[ⓐ-ⓩ]' AS t; SELECT 'aⓕⓐ' ~ 'aⓕ[ⓐ-ⓩ]' AS t; SELECT 'aⓐⓕ' ~ 'aⓕ[ⓐ-ⓩ]' AS f; SELECT 'aⓕⓕ' ~ 'a[ⓐ-ⓩ]ⓕ' AS t; SELECT 'aⓕⓐ' ~ 'a[ⓐ-ⓩ]ⓕ' AS f; SELECT 'aⓐⓕ' ~ 'a[ⓐ-ⓩ]ⓕ' AS t; SELECT 'aⒶⓜ' ~ 'a[Ⓐ-ⓜ][ⓜ-ⓩ]' AS t; SELECT 'aⓜⓜ' ~ 'a[Ⓐ-ⓜ][ⓜ-ⓩ]' AS t; SELECT 'aⓜⓩ' ~ 'a[Ⓐ-ⓜ][ⓜ-ⓩ]' AS t; SELECT 'aⓩⓩ' ~ 'a[Ⓐ-ⓜ][ⓜ-ⓩ]' AS f; SELECT 'aⓜ⓪' ~ 'a[Ⓐ-ⓜ][ⓜ-ⓩ]' AS f; SELECT 'a0' ~ 'a[a-ⓩ]' AS f; SELECT 'aq' ~ 'a[a-ⓩ]' AS t; SELECT 'aⓜ' ~ 'a[a-ⓩ]' AS t; SELECT 'a⓪' ~ 'a[a-ⓩ]' AS f; -- Locale-dependent character classes SELECT 'aⒶⓜ⓪' ~ '[[:alpha:]][[:alpha:]][[:alpha:]][[:graph:]]' AS t; SELECT 'aⒶⓜ⓪' ~ '[[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]]' AS f; -- Locale-dependent character classes with high ranges SELECT 'aⒶⓜ⓪' ~ '[a-z][[:alpha:]][ⓐ-ⓩ][[:graph:]]' AS t; SELECT 'aⓜⒶ⓪' ~ '[a-z][[:alpha:]][ⓐ-ⓩ][[:graph:]]' AS f; SELECT 'aⓜⒶ⓪' ~ '[a-z][ⓐ-ⓩ][[:alpha:]][[:graph:]]' AS t; SELECT 'aⒶⓜ⓪' ~ '[a-z][ⓐ-ⓩ][[:alpha:]][[:graph:]]' AS f; libpg_query-13-2.1.0/test/sql/postgres_regress/regex.sql000066400000000000000000000125151413137616400233000ustar00rootroot00000000000000-- -- Regular expression tests -- -- Don't want to have to double backslashes in regexes set standard_conforming_strings = on; -- Test simple quantified backrefs select 'bbbbb' ~ '^([bc])\1*$' as t; select 'ccc' ~ '^([bc])\1*$' as t; select 'xxx' ~ '^([bc])\1*$' as f; select 'bbc' ~ '^([bc])\1*$' as f; select 'b' ~ '^([bc])\1*$' as t; -- Test quantified backref within a larger expression select 'abc abc abc' ~ '^(\w+)( \1)+$' as t; select 'abc abd abc' ~ '^(\w+)( \1)+$' as f; select 'abc abc abd' ~ '^(\w+)( \1)+$' as f; select 'abc abc abc' ~ '^(.+)( \1)+$' as t; select 'abc abd abc' ~ '^(.+)( \1)+$' as f; select 'abc abc abd' ~ '^(.+)( \1)+$' as f; -- Test some cases that crashed in 9.2beta1 due to pmatch[] array overrun select substring('asd TO foo' from ' TO (([a-z0-9._]+|"([^"]+|"")+")+)'); select substring('a' from '((a))+'); select substring('a' from '((a)+)'); -- Test regexp_match() select regexp_match('abc', ''); select regexp_match('abc', 'bc'); select regexp_match('abc', 'd') is null; select regexp_match('abc', '(B)(c)', 'i'); select regexp_match('abc', 'Bd', 'ig'); -- error -- Test lookahead constraints select regexp_matches('ab', 'a(?=b)b*'); select regexp_matches('a', 'a(?=b)b*'); select regexp_matches('abc', 'a(?=b)b*(?=c)c*'); select regexp_matches('ab', 'a(?=b)b*(?=c)c*'); select regexp_matches('ab', 'a(?!b)b*'); select regexp_matches('a', 'a(?!b)b*'); select regexp_matches('b', '(?=b)b'); select regexp_matches('a', '(?=b)b'); -- Test lookbehind constraints select regexp_matches('abb', '(?<=a)b*'); select regexp_matches('a', 'a(?<=a)b*'); select regexp_matches('abc', 'a(?<=a)b*(?<=b)c*'); select regexp_matches('ab', 'a(?<=a)b*(?<=b)c*'); select regexp_matches('ab', 'a*(? 0; SELECT reloptions FROM pg_class WHERE oid = (SELECT reltoastrelid FROM pg_class WHERE oid = 'reloptions_test'::regclass); ALTER TABLE reloptions_test RESET (vacuum_truncate); SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass; INSERT INTO reloptions_test VALUES (1, NULL), (NULL, NULL); -- Do an aggressive vacuum to prevent page-skipping. VACUUM FREEZE reloptions_test; SELECT pg_relation_size('reloptions_test') = 0; -- Test toast.* options DROP TABLE reloptions_test; CREATE TABLE reloptions_test (s VARCHAR) WITH (toast.autovacuum_vacuum_cost_delay = 23); SELECT reltoastrelid as toast_oid FROM pg_class WHERE oid = 'reloptions_test'::regclass \gset SELECT reloptions FROM pg_class WHERE oid = :toast_oid; ALTER TABLE reloptions_test SET (toast.autovacuum_vacuum_cost_delay = 24); SELECT reloptions FROM pg_class WHERE oid = :toast_oid; ALTER TABLE reloptions_test RESET (toast.autovacuum_vacuum_cost_delay); SELECT reloptions FROM pg_class WHERE oid = :toast_oid; -- Fail on non-existent options in toast namespace CREATE TABLE reloptions_test2 (i int) WITH (toast.not_existing_option = 42); -- Mix TOAST & heap DROP TABLE reloptions_test; CREATE TABLE reloptions_test (s VARCHAR) WITH (toast.autovacuum_vacuum_cost_delay = 23, autovacuum_vacuum_cost_delay = 24, fillfactor = 40); SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test'::regclass; SELECT reloptions FROM pg_class WHERE oid = ( SELECT reltoastrelid FROM pg_class WHERE oid = 'reloptions_test'::regclass); -- -- CREATE INDEX, ALTER INDEX for btrees -- CREATE INDEX reloptions_test_idx ON reloptions_test (s) WITH (fillfactor=30); SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test_idx'::regclass; -- Fail when option and namespace do not exist CREATE INDEX reloptions_test_idx ON reloptions_test (s) WITH (not_existing_option=2); CREATE INDEX reloptions_test_idx ON reloptions_test (s) WITH (not_existing_ns.fillfactor=2); -- Check allowed ranges CREATE INDEX reloptions_test_idx2 ON reloptions_test (s) WITH (fillfactor=1); CREATE INDEX reloptions_test_idx2 ON reloptions_test (s) WITH (fillfactor=130); -- Check ALTER ALTER INDEX reloptions_test_idx SET (fillfactor=40); SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test_idx'::regclass; -- Check ALTER on empty reloption list CREATE INDEX reloptions_test_idx3 ON reloptions_test (s); ALTER INDEX reloptions_test_idx3 SET (fillfactor=40); SELECT reloptions FROM pg_class WHERE oid = 'reloptions_test_idx3'::regclass; libpg_query-13-2.1.0/test/sql/postgres_regress/replica_identity.sql000066400000000000000000000107731413137616400255220ustar00rootroot00000000000000CREATE TABLE test_replica_identity ( id serial primary key, keya text not null, keyb text not null, nonkey text, CONSTRAINT test_replica_identity_unique_defer UNIQUE (keya, keyb) DEFERRABLE, CONSTRAINT test_replica_identity_unique_nondefer UNIQUE (keya, keyb) ) ; CREATE TABLE test_replica_identity_othertable (id serial primary key); CREATE INDEX test_replica_identity_keyab ON test_replica_identity (keya, keyb); CREATE UNIQUE INDEX test_replica_identity_keyab_key ON test_replica_identity (keya, keyb); CREATE UNIQUE INDEX test_replica_identity_nonkey ON test_replica_identity (keya, nonkey); CREATE INDEX test_replica_identity_hash ON test_replica_identity USING hash (nonkey); CREATE UNIQUE INDEX test_replica_identity_expr ON test_replica_identity (keya, keyb, (3)); CREATE UNIQUE INDEX test_replica_identity_partial ON test_replica_identity (keya, keyb) WHERE keyb != '3'; -- default is 'd'/DEFAULT for user created tables SELECT relreplident FROM pg_class WHERE oid = 'test_replica_identity'::regclass; -- but 'none' for system tables SELECT relreplident FROM pg_class WHERE oid = 'pg_class'::regclass; SELECT relreplident FROM pg_class WHERE oid = 'pg_constraint'::regclass; ---- -- Make sure we detect ineligible indexes ---- -- fail, not unique ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_keyab; -- fail, not a candidate key, nullable column ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_nonkey; -- fail, hash indexes cannot do uniqueness ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_hash; -- fail, expression index ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_expr; -- fail, partial index ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_partial; -- fail, not our index ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_othertable_pkey; -- fail, deferrable ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_unique_defer; SELECT relreplident FROM pg_class WHERE oid = 'test_replica_identity'::regclass; ---- -- Make sure index cases succeed ---- -- succeed, primary key ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_pkey; SELECT relreplident FROM pg_class WHERE oid = 'test_replica_identity'::regclass; \d test_replica_identity -- succeed, nondeferrable unique constraint over nonnullable cols ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_unique_nondefer; -- succeed unique index over nonnullable cols ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_keyab_key; ALTER TABLE test_replica_identity REPLICA IDENTITY USING INDEX test_replica_identity_keyab_key; SELECT relreplident FROM pg_class WHERE oid = 'test_replica_identity'::regclass; \d test_replica_identity SELECT count(*) FROM pg_index WHERE indrelid = 'test_replica_identity'::regclass AND indisreplident; ---- -- Make sure non index cases work ---- ALTER TABLE test_replica_identity REPLICA IDENTITY DEFAULT; SELECT relreplident FROM pg_class WHERE oid = 'test_replica_identity'::regclass; SELECT count(*) FROM pg_index WHERE indrelid = 'test_replica_identity'::regclass AND indisreplident; ALTER TABLE test_replica_identity REPLICA IDENTITY FULL; SELECT relreplident FROM pg_class WHERE oid = 'test_replica_identity'::regclass; \d+ test_replica_identity ALTER TABLE test_replica_identity REPLICA IDENTITY NOTHING; SELECT relreplident FROM pg_class WHERE oid = 'test_replica_identity'::regclass; --- -- Test that ALTER TABLE rewrite preserves nondefault replica identity --- -- constraint variant CREATE TABLE test_replica_identity2 (id int UNIQUE NOT NULL); ALTER TABLE test_replica_identity2 REPLICA IDENTITY USING INDEX test_replica_identity2_id_key; \d test_replica_identity2 ALTER TABLE test_replica_identity2 ALTER COLUMN id TYPE bigint; \d test_replica_identity2 -- straight index variant CREATE TABLE test_replica_identity3 (id int NOT NULL); CREATE UNIQUE INDEX test_replica_identity3_id_key ON test_replica_identity3 (id); ALTER TABLE test_replica_identity3 REPLICA IDENTITY USING INDEX test_replica_identity3_id_key; \d test_replica_identity3 ALTER TABLE test_replica_identity3 ALTER COLUMN id TYPE bigint; \d test_replica_identity3 DROP TABLE test_replica_identity; DROP TABLE test_replica_identity2; DROP TABLE test_replica_identity3; DROP TABLE test_replica_identity_othertable; libpg_query-13-2.1.0/test/sql/postgres_regress/returning.sql000066400000000000000000000074751413137616400242140ustar00rootroot00000000000000-- -- Test INSERT/UPDATE/DELETE RETURNING -- -- Simple cases CREATE TEMP TABLE foo (f1 serial, f2 text, f3 int default 42); INSERT INTO foo (f2,f3) VALUES ('test', DEFAULT), ('More', 11), (upper('more'), 7+9) RETURNING *, f1+f3 AS sum; SELECT * FROM foo; UPDATE foo SET f2 = lower(f2), f3 = DEFAULT RETURNING foo.*, f1+f3 AS sum13; SELECT * FROM foo; DELETE FROM foo WHERE f1 > 2 RETURNING f3, f2, f1, least(f1,f3); SELECT * FROM foo; -- Subplans and initplans in the RETURNING list INSERT INTO foo SELECT f1+10, f2, f3+99 FROM foo RETURNING *, f1+112 IN (SELECT q1 FROM int8_tbl) AS subplan, EXISTS(SELECT * FROM int4_tbl) AS initplan; UPDATE foo SET f3 = f3 * 2 WHERE f1 > 10 RETURNING *, f1+112 IN (SELECT q1 FROM int8_tbl) AS subplan, EXISTS(SELECT * FROM int4_tbl) AS initplan; DELETE FROM foo WHERE f1 > 10 RETURNING *, f1+112 IN (SELECT q1 FROM int8_tbl) AS subplan, EXISTS(SELECT * FROM int4_tbl) AS initplan; -- Joins UPDATE foo SET f3 = f3*2 FROM int4_tbl i WHERE foo.f1 + 123455 = i.f1 RETURNING foo.*, i.f1 as "i.f1"; SELECT * FROM foo; DELETE FROM foo USING int4_tbl i WHERE foo.f1 + 123455 = i.f1 RETURNING foo.*, i.f1 as "i.f1"; SELECT * FROM foo; -- Check inheritance cases CREATE TEMP TABLE foochild (fc int) INHERITS (foo); INSERT INTO foochild VALUES(123,'child',999,-123); ALTER TABLE foo ADD COLUMN f4 int8 DEFAULT 99; SELECT * FROM foo; SELECT * FROM foochild; UPDATE foo SET f4 = f4 + f3 WHERE f4 = 99 RETURNING *; SELECT * FROM foo; SELECT * FROM foochild; UPDATE foo SET f3 = f3*2 FROM int8_tbl i WHERE foo.f1 = i.q2 RETURNING *; SELECT * FROM foo; SELECT * FROM foochild; DELETE FROM foo USING int8_tbl i WHERE foo.f1 = i.q2 RETURNING *; SELECT * FROM foo; SELECT * FROM foochild; DROP TABLE foochild; -- Rules and views CREATE TEMP VIEW voo AS SELECT f1, f2 FROM foo; CREATE RULE voo_i AS ON INSERT TO voo DO INSTEAD INSERT INTO foo VALUES(new.*, 57); INSERT INTO voo VALUES(11,'zit'); -- fails: INSERT INTO voo VALUES(12,'zoo') RETURNING *, f1*2; -- fails, incompatible list: CREATE OR REPLACE RULE voo_i AS ON INSERT TO voo DO INSTEAD INSERT INTO foo VALUES(new.*, 57) RETURNING *; CREATE OR REPLACE RULE voo_i AS ON INSERT TO voo DO INSTEAD INSERT INTO foo VALUES(new.*, 57) RETURNING f1, f2; -- should still work INSERT INTO voo VALUES(13,'zit2'); -- works now INSERT INTO voo VALUES(14,'zoo2') RETURNING *; SELECT * FROM foo; SELECT * FROM voo; CREATE OR REPLACE RULE voo_u AS ON UPDATE TO voo DO INSTEAD UPDATE foo SET f1 = new.f1, f2 = new.f2 WHERE f1 = old.f1 RETURNING f1, f2; update voo set f1 = f1 + 1 where f2 = 'zoo2'; update voo set f1 = f1 + 1 where f2 = 'zoo2' RETURNING *, f1*2; SELECT * FROM foo; SELECT * FROM voo; CREATE OR REPLACE RULE voo_d AS ON DELETE TO voo DO INSTEAD DELETE FROM foo WHERE f1 = old.f1 RETURNING f1, f2; DELETE FROM foo WHERE f1 = 13; DELETE FROM foo WHERE f2 = 'zit' RETURNING *; SELECT * FROM foo; SELECT * FROM voo; -- Try a join case CREATE TEMP TABLE joinme (f2j text, other int); INSERT INTO joinme VALUES('more', 12345); INSERT INTO joinme VALUES('zoo2', 54321); INSERT INTO joinme VALUES('other', 0); CREATE TEMP VIEW joinview AS SELECT foo.*, other FROM foo JOIN joinme ON (f2 = f2j); SELECT * FROM joinview; CREATE RULE joinview_u AS ON UPDATE TO joinview DO INSTEAD UPDATE foo SET f1 = new.f1, f3 = new.f3 FROM joinme WHERE f2 = f2j AND f2 = old.f2 RETURNING foo.*, other; UPDATE joinview SET f1 = f1 + 1 WHERE f3 = 57 RETURNING *, other + 1; SELECT * FROM joinview; SELECT * FROM foo; SELECT * FROM voo; -- Check aliased target relation INSERT INTO foo AS bar DEFAULT VALUES RETURNING *; -- ok INSERT INTO foo AS bar DEFAULT VALUES RETURNING foo.*; -- fails, wrong name INSERT INTO foo AS bar DEFAULT VALUES RETURNING bar.*; -- ok INSERT INTO foo AS bar DEFAULT VALUES RETURNING bar.f3; -- ok libpg_query-13-2.1.0/test/sql/postgres_regress/roleattributes.sql000066400000000000000000000217071413137616400252410ustar00rootroot00000000000000-- default for superuser is false CREATE ROLE regress_test_def_superuser; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_def_superuser'; CREATE ROLE regress_test_superuser WITH SUPERUSER; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_superuser'; ALTER ROLE regress_test_superuser WITH NOSUPERUSER; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_superuser'; ALTER ROLE regress_test_superuser WITH SUPERUSER; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_superuser'; -- default for inherit is true CREATE ROLE regress_test_def_inherit; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_def_inherit'; CREATE ROLE regress_test_inherit WITH NOINHERIT; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_inherit'; ALTER ROLE regress_test_inherit WITH INHERIT; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_inherit'; ALTER ROLE regress_test_inherit WITH NOINHERIT; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_inherit'; -- default for create role is false CREATE ROLE regress_test_def_createrole; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_def_createrole'; CREATE ROLE regress_test_createrole WITH CREATEROLE; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_createrole'; ALTER ROLE regress_test_createrole WITH NOCREATEROLE; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_createrole'; ALTER ROLE regress_test_createrole WITH CREATEROLE; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_createrole'; -- default for create database is false CREATE ROLE regress_test_def_createdb; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_def_createdb'; CREATE ROLE regress_test_createdb WITH CREATEDB; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_createdb'; ALTER ROLE regress_test_createdb WITH NOCREATEDB; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_createdb'; ALTER ROLE regress_test_createdb WITH CREATEDB; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_createdb'; -- default for can login is false for role CREATE ROLE regress_test_def_role_canlogin; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_def_role_canlogin'; CREATE ROLE regress_test_role_canlogin WITH LOGIN; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_role_canlogin'; ALTER ROLE regress_test_role_canlogin WITH NOLOGIN; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_role_canlogin'; ALTER ROLE regress_test_role_canlogin WITH LOGIN; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_role_canlogin'; -- default for can login is true for user CREATE USER regress_test_def_user_canlogin; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_def_user_canlogin'; CREATE USER regress_test_user_canlogin WITH NOLOGIN; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_user_canlogin'; ALTER USER regress_test_user_canlogin WITH LOGIN; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_user_canlogin'; ALTER USER regress_test_user_canlogin WITH NOLOGIN; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_user_canlogin'; -- default for replication is false CREATE ROLE regress_test_def_replication; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_def_replication'; CREATE ROLE regress_test_replication WITH REPLICATION; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_replication'; ALTER ROLE regress_test_replication WITH NOREPLICATION; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_replication'; ALTER ROLE regress_test_replication WITH REPLICATION; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_replication'; -- default for bypassrls is false CREATE ROLE regress_test_def_bypassrls; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_def_bypassrls'; CREATE ROLE regress_test_bypassrls WITH BYPASSRLS; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_bypassrls'; ALTER ROLE regress_test_bypassrls WITH NOBYPASSRLS; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_bypassrls'; ALTER ROLE regress_test_bypassrls WITH BYPASSRLS; SELECT rolname, rolsuper, rolinherit, rolcreaterole, rolcreatedb, rolcanlogin, rolreplication, rolbypassrls, rolconnlimit, rolpassword, rolvaliduntil FROM pg_authid WHERE rolname = 'regress_test_bypassrls'; -- clean up roles DROP ROLE regress_test_def_superuser; DROP ROLE regress_test_superuser; DROP ROLE regress_test_def_inherit; DROP ROLE regress_test_inherit; DROP ROLE regress_test_def_createrole; DROP ROLE regress_test_createrole; DROP ROLE regress_test_def_createdb; DROP ROLE regress_test_createdb; DROP ROLE regress_test_def_role_canlogin; DROP ROLE regress_test_role_canlogin; DROP USER regress_test_def_user_canlogin; DROP USER regress_test_user_canlogin; DROP ROLE regress_test_def_replication; DROP ROLE regress_test_replication; DROP ROLE regress_test_def_bypassrls; DROP ROLE regress_test_bypassrls; libpg_query-13-2.1.0/test/sql/postgres_regress/rowsecurity.sql000066400000000000000000001734041413137616400245720ustar00rootroot00000000000000-- -- Test of Row-level security feature -- -- Clean up in case a prior regression run failed -- Suppress NOTICE messages when users/groups don't exist SET client_min_messages TO 'warning'; DROP USER IF EXISTS regress_rls_alice; DROP USER IF EXISTS regress_rls_bob; DROP USER IF EXISTS regress_rls_carol; DROP USER IF EXISTS regress_rls_dave; DROP USER IF EXISTS regress_rls_exempt_user; DROP ROLE IF EXISTS regress_rls_group1; DROP ROLE IF EXISTS regress_rls_group2; DROP SCHEMA IF EXISTS regress_rls_schema CASCADE; RESET client_min_messages; -- initial setup CREATE USER regress_rls_alice NOLOGIN; CREATE USER regress_rls_bob NOLOGIN; CREATE USER regress_rls_carol NOLOGIN; CREATE USER regress_rls_dave NOLOGIN; CREATE USER regress_rls_exempt_user BYPASSRLS NOLOGIN; CREATE ROLE regress_rls_group1 NOLOGIN; CREATE ROLE regress_rls_group2 NOLOGIN; GRANT regress_rls_group1 TO regress_rls_bob; GRANT regress_rls_group2 TO regress_rls_carol; CREATE SCHEMA regress_rls_schema; GRANT ALL ON SCHEMA regress_rls_schema to public; SET search_path = regress_rls_schema; -- setup of malicious function CREATE OR REPLACE FUNCTION f_leak(text) RETURNS bool COST 0.0000001 LANGUAGE plpgsql AS 'BEGIN RAISE NOTICE ''f_leak => %'', $1; RETURN true; END'; GRANT EXECUTE ON FUNCTION f_leak(text) TO public; -- BASIC Row-Level Security Scenario SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE uaccount ( pguser name primary key, seclv int ); GRANT SELECT ON uaccount TO public; INSERT INTO uaccount VALUES ('regress_rls_alice', 99), ('regress_rls_bob', 1), ('regress_rls_carol', 2), ('regress_rls_dave', 3); CREATE TABLE category ( cid int primary key, cname text ); GRANT ALL ON category TO public; INSERT INTO category VALUES (11, 'novel'), (22, 'science fiction'), (33, 'technology'), (44, 'manga'); CREATE TABLE document ( did int primary key, cid int references category(cid), dlevel int not null, dauthor name, dtitle text ); GRANT ALL ON document TO public; INSERT INTO document VALUES ( 1, 11, 1, 'regress_rls_bob', 'my first novel'), ( 2, 11, 2, 'regress_rls_bob', 'my second novel'), ( 3, 22, 2, 'regress_rls_bob', 'my science fiction'), ( 4, 44, 1, 'regress_rls_bob', 'my first manga'), ( 5, 44, 2, 'regress_rls_bob', 'my second manga'), ( 6, 22, 1, 'regress_rls_carol', 'great science fiction'), ( 7, 33, 2, 'regress_rls_carol', 'great technology book'), ( 8, 44, 1, 'regress_rls_carol', 'great manga'), ( 9, 22, 1, 'regress_rls_dave', 'awesome science fiction'), (10, 33, 2, 'regress_rls_dave', 'awesome technology book'); ALTER TABLE document ENABLE ROW LEVEL SECURITY; -- user's security level must be higher than or equal to document's CREATE POLICY p1 ON document AS PERMISSIVE USING (dlevel <= (SELECT seclv FROM uaccount WHERE pguser = current_user)); -- try to create a policy of bogus type CREATE POLICY p1 ON document AS UGLY USING (dlevel <= (SELECT seclv FROM uaccount WHERE pguser = current_user)); -- but Dave isn't allowed to anything at cid 50 or above -- this is to make sure that we sort the policies by name first -- when applying WITH CHECK, a later INSERT by Dave should fail due -- to p1r first CREATE POLICY p2r ON document AS RESTRICTIVE TO regress_rls_dave USING (cid <> 44 AND cid < 50); -- and Dave isn't allowed to see manga documents CREATE POLICY p1r ON document AS RESTRICTIVE TO regress_rls_dave USING (cid <> 44); \dp \d document SELECT * FROM pg_policies WHERE schemaname = 'regress_rls_schema' AND tablename = 'document' ORDER BY policyname; -- viewpoint from regress_rls_bob SET SESSION AUTHORIZATION regress_rls_bob; SET row_security TO ON; SELECT * FROM document WHERE f_leak(dtitle) ORDER BY did; SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle) ORDER BY did; -- try a sampled version SELECT * FROM document TABLESAMPLE BERNOULLI(50) REPEATABLE(0) WHERE f_leak(dtitle) ORDER BY did; -- viewpoint from regress_rls_carol SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM document WHERE f_leak(dtitle) ORDER BY did; SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle) ORDER BY did; -- try a sampled version SELECT * FROM document TABLESAMPLE BERNOULLI(50) REPEATABLE(0) WHERE f_leak(dtitle) ORDER BY did; EXPLAIN (COSTS OFF) SELECT * FROM document WHERE f_leak(dtitle); EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle); -- viewpoint from regress_rls_dave SET SESSION AUTHORIZATION regress_rls_dave; SELECT * FROM document WHERE f_leak(dtitle) ORDER BY did; SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle) ORDER BY did; EXPLAIN (COSTS OFF) SELECT * FROM document WHERE f_leak(dtitle); EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle); -- 44 would technically fail for both p2r and p1r, but we should get an error -- back from p1r for this because it sorts first INSERT INTO document VALUES (100, 44, 1, 'regress_rls_dave', 'testing sorting of policies'); -- fail -- Just to see a p2r error INSERT INTO document VALUES (100, 55, 1, 'regress_rls_dave', 'testing sorting of policies'); -- fail -- only owner can change policies ALTER POLICY p1 ON document USING (true); --fail DROP POLICY p1 ON document; --fail SET SESSION AUTHORIZATION regress_rls_alice; ALTER POLICY p1 ON document USING (dauthor = current_user); -- viewpoint from regress_rls_bob again SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM document WHERE f_leak(dtitle) ORDER BY did; SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle) ORDER by did; -- viewpoint from rls_regres_carol again SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM document WHERE f_leak(dtitle) ORDER BY did; SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle) ORDER by did; EXPLAIN (COSTS OFF) SELECT * FROM document WHERE f_leak(dtitle); EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle); -- interaction of FK/PK constraints SET SESSION AUTHORIZATION regress_rls_alice; CREATE POLICY p2 ON category USING (CASE WHEN current_user = 'regress_rls_bob' THEN cid IN (11, 33) WHEN current_user = 'regress_rls_carol' THEN cid IN (22, 44) ELSE false END); ALTER TABLE category ENABLE ROW LEVEL SECURITY; -- cannot delete PK referenced by invisible FK SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM document d FULL OUTER JOIN category c on d.cid = c.cid ORDER BY d.did, c.cid; DELETE FROM category WHERE cid = 33; -- fails with FK violation -- can insert FK referencing invisible PK SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM document d FULL OUTER JOIN category c on d.cid = c.cid ORDER BY d.did, c.cid; INSERT INTO document VALUES (11, 33, 1, current_user, 'hoge'); -- UNIQUE or PRIMARY KEY constraint violation DOES reveal presence of row SET SESSION AUTHORIZATION regress_rls_bob; INSERT INTO document VALUES (8, 44, 1, 'regress_rls_bob', 'my third manga'); -- Must fail with unique violation, revealing presence of did we can't see SELECT * FROM document WHERE did = 8; -- and confirm we can't see it -- RLS policies are checked before constraints INSERT INTO document VALUES (8, 44, 1, 'regress_rls_carol', 'my third manga'); -- Should fail with RLS check violation, not duplicate key violation UPDATE document SET did = 8, dauthor = 'regress_rls_carol' WHERE did = 5; -- Should fail with RLS check violation, not duplicate key violation -- database superuser does bypass RLS policy when enabled RESET SESSION AUTHORIZATION; SET row_security TO ON; SELECT * FROM document; SELECT * FROM category; -- database superuser does bypass RLS policy when disabled RESET SESSION AUTHORIZATION; SET row_security TO OFF; SELECT * FROM document; SELECT * FROM category; -- database non-superuser with bypass privilege can bypass RLS policy when disabled SET SESSION AUTHORIZATION regress_rls_exempt_user; SET row_security TO OFF; SELECT * FROM document; SELECT * FROM category; -- RLS policy does not apply to table owner when RLS enabled. SET SESSION AUTHORIZATION regress_rls_alice; SET row_security TO ON; SELECT * FROM document; SELECT * FROM category; -- RLS policy does not apply to table owner when RLS disabled. SET SESSION AUTHORIZATION regress_rls_alice; SET row_security TO OFF; SELECT * FROM document; SELECT * FROM category; -- -- Table inheritance and RLS policy -- SET SESSION AUTHORIZATION regress_rls_alice; SET row_security TO ON; CREATE TABLE t1 (id int not null primary key, a int, junk1 text, b text); ALTER TABLE t1 DROP COLUMN junk1; -- just a disturbing factor GRANT ALL ON t1 TO public; COPY t1 FROM stdin WITH ; 101 1 aba 102 2 bbb 103 3 ccc 104 4 dad \. CREATE TABLE t2 (c float) INHERITS (t1); GRANT ALL ON t2 TO public; COPY t2 FROM stdin; 201 1 abc 1.1 202 2 bcd 2.2 203 3 cde 3.3 204 4 def 4.4 \. CREATE TABLE t3 (id int not null primary key, c text, b text, a int); ALTER TABLE t3 INHERIT t1; GRANT ALL ON t3 TO public; COPY t3(id, a,b,c) FROM stdin; 301 1 xxx X 302 2 yyy Y 303 3 zzz Z \. CREATE POLICY p1 ON t1 FOR ALL TO PUBLIC USING (a % 2 = 0); -- be even number CREATE POLICY p2 ON t2 FOR ALL TO PUBLIC USING (a % 2 = 1); -- be odd number ALTER TABLE t1 ENABLE ROW LEVEL SECURITY; ALTER TABLE t2 ENABLE ROW LEVEL SECURITY; SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM t1; EXPLAIN (COSTS OFF) SELECT * FROM t1; SELECT * FROM t1 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b); -- reference to system column SELECT tableoid::regclass, * FROM t1; EXPLAIN (COSTS OFF) SELECT *, t1 FROM t1; -- reference to whole-row reference SELECT *, t1 FROM t1; EXPLAIN (COSTS OFF) SELECT *, t1 FROM t1; -- for share/update lock SELECT * FROM t1 FOR SHARE; EXPLAIN (COSTS OFF) SELECT * FROM t1 FOR SHARE; SELECT * FROM t1 WHERE f_leak(b) FOR SHARE; EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b) FOR SHARE; -- union all query SELECT a, b, tableoid::regclass FROM t2 UNION ALL SELECT a, b, tableoid::regclass FROM t3; EXPLAIN (COSTS OFF) SELECT a, b, tableoid::regclass FROM t2 UNION ALL SELECT a, b, tableoid::regclass FROM t3; -- superuser is allowed to bypass RLS checks RESET SESSION AUTHORIZATION; SET row_security TO OFF; SELECT * FROM t1 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b); -- non-superuser with bypass privilege can bypass RLS policy when disabled SET SESSION AUTHORIZATION regress_rls_exempt_user; SET row_security TO OFF; SELECT * FROM t1 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b); -- -- Partitioned Tables -- SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE part_document ( did int, cid int, dlevel int not null, dauthor name, dtitle text ) PARTITION BY RANGE (cid); GRANT ALL ON part_document TO public; -- Create partitions for document categories CREATE TABLE part_document_fiction PARTITION OF part_document FOR VALUES FROM (11) to (12); CREATE TABLE part_document_satire PARTITION OF part_document FOR VALUES FROM (55) to (56); CREATE TABLE part_document_nonfiction PARTITION OF part_document FOR VALUES FROM (99) to (100); GRANT ALL ON part_document_fiction TO public; GRANT ALL ON part_document_satire TO public; GRANT ALL ON part_document_nonfiction TO public; INSERT INTO part_document VALUES ( 1, 11, 1, 'regress_rls_bob', 'my first novel'), ( 2, 11, 2, 'regress_rls_bob', 'my second novel'), ( 3, 99, 2, 'regress_rls_bob', 'my science textbook'), ( 4, 55, 1, 'regress_rls_bob', 'my first satire'), ( 5, 99, 2, 'regress_rls_bob', 'my history book'), ( 6, 11, 1, 'regress_rls_carol', 'great science fiction'), ( 7, 99, 2, 'regress_rls_carol', 'great technology book'), ( 8, 55, 2, 'regress_rls_carol', 'great satire'), ( 9, 11, 1, 'regress_rls_dave', 'awesome science fiction'), (10, 99, 2, 'regress_rls_dave', 'awesome technology book'); ALTER TABLE part_document ENABLE ROW LEVEL SECURITY; -- Create policy on parent -- user's security level must be higher than or equal to document's CREATE POLICY pp1 ON part_document AS PERMISSIVE USING (dlevel <= (SELECT seclv FROM uaccount WHERE pguser = current_user)); -- Dave is only allowed to see cid < 55 CREATE POLICY pp1r ON part_document AS RESTRICTIVE TO regress_rls_dave USING (cid < 55); \d+ part_document SELECT * FROM pg_policies WHERE schemaname = 'regress_rls_schema' AND tablename like '%part_document%' ORDER BY policyname; -- viewpoint from regress_rls_bob SET SESSION AUTHORIZATION regress_rls_bob; SET row_security TO ON; SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did; EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle); -- viewpoint from regress_rls_carol SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did; EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle); -- viewpoint from regress_rls_dave SET SESSION AUTHORIZATION regress_rls_dave; SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did; EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle); -- pp1 ERROR INSERT INTO part_document VALUES (100, 11, 5, 'regress_rls_dave', 'testing pp1'); -- fail -- pp1r ERROR INSERT INTO part_document VALUES (100, 99, 1, 'regress_rls_dave', 'testing pp1r'); -- fail -- Show that RLS policy does not apply for direct inserts to children -- This should fail with RLS POLICY pp1r violation. INSERT INTO part_document VALUES (100, 55, 1, 'regress_rls_dave', 'testing RLS with partitions'); -- fail -- But this should succeed. INSERT INTO part_document_satire VALUES (100, 55, 1, 'regress_rls_dave', 'testing RLS with partitions'); -- success -- We still cannot see the row using the parent SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did; -- But we can if we look directly SELECT * FROM part_document_satire WHERE f_leak(dtitle) ORDER BY did; -- Turn on RLS and create policy on child to show RLS is checked before constraints SET SESSION AUTHORIZATION regress_rls_alice; ALTER TABLE part_document_satire ENABLE ROW LEVEL SECURITY; CREATE POLICY pp3 ON part_document_satire AS RESTRICTIVE USING (cid < 55); -- This should fail with RLS violation now. SET SESSION AUTHORIZATION regress_rls_dave; INSERT INTO part_document_satire VALUES (101, 55, 1, 'regress_rls_dave', 'testing RLS with partitions'); -- fail -- And now we cannot see directly into the partition either, due to RLS SELECT * FROM part_document_satire WHERE f_leak(dtitle) ORDER BY did; -- The parent looks same as before -- viewpoint from regress_rls_dave SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did; EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle); -- viewpoint from regress_rls_carol SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did; EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle); -- only owner can change policies ALTER POLICY pp1 ON part_document USING (true); --fail DROP POLICY pp1 ON part_document; --fail SET SESSION AUTHORIZATION regress_rls_alice; ALTER POLICY pp1 ON part_document USING (dauthor = current_user); -- viewpoint from regress_rls_bob again SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did; -- viewpoint from rls_regres_carol again SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM part_document WHERE f_leak(dtitle) ORDER BY did; EXPLAIN (COSTS OFF) SELECT * FROM part_document WHERE f_leak(dtitle); -- database superuser does bypass RLS policy when enabled RESET SESSION AUTHORIZATION; SET row_security TO ON; SELECT * FROM part_document ORDER BY did; SELECT * FROM part_document_satire ORDER by did; -- database non-superuser with bypass privilege can bypass RLS policy when disabled SET SESSION AUTHORIZATION regress_rls_exempt_user; SET row_security TO OFF; SELECT * FROM part_document ORDER BY did; SELECT * FROM part_document_satire ORDER by did; -- RLS policy does not apply to table owner when RLS enabled. SET SESSION AUTHORIZATION regress_rls_alice; SET row_security TO ON; SELECT * FROM part_document ORDER by did; SELECT * FROM part_document_satire ORDER by did; -- When RLS disabled, other users get ERROR. SET SESSION AUTHORIZATION regress_rls_dave; SET row_security TO OFF; SELECT * FROM part_document ORDER by did; SELECT * FROM part_document_satire ORDER by did; -- Check behavior with a policy that uses a SubPlan not an InitPlan. SET SESSION AUTHORIZATION regress_rls_alice; SET row_security TO ON; CREATE POLICY pp3 ON part_document AS RESTRICTIVE USING ((SELECT dlevel <= seclv FROM uaccount WHERE pguser = current_user)); SET SESSION AUTHORIZATION regress_rls_carol; INSERT INTO part_document VALUES (100, 11, 5, 'regress_rls_carol', 'testing pp3'); -- fail ----- Dependencies ----- SET SESSION AUTHORIZATION regress_rls_alice; SET row_security TO ON; CREATE TABLE dependee (x integer, y integer); CREATE TABLE dependent (x integer, y integer); CREATE POLICY d1 ON dependent FOR ALL TO PUBLIC USING (x = (SELECT d.x FROM dependee d WHERE d.y = y)); DROP TABLE dependee; -- Should fail without CASCADE due to dependency on row security qual? DROP TABLE dependee CASCADE; EXPLAIN (COSTS OFF) SELECT * FROM dependent; -- After drop, should be unqualified ----- RECURSION ---- -- -- Simple recursion -- SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE rec1 (x integer, y integer); CREATE POLICY r1 ON rec1 USING (x = (SELECT r.x FROM rec1 r WHERE y = r.y)); ALTER TABLE rec1 ENABLE ROW LEVEL SECURITY; SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rec1; -- fail, direct recursion -- -- Mutual recursion -- SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE rec2 (a integer, b integer); ALTER POLICY r1 ON rec1 USING (x = (SELECT a FROM rec2 WHERE b = y)); CREATE POLICY r2 ON rec2 USING (a = (SELECT x FROM rec1 WHERE y = b)); ALTER TABLE rec2 ENABLE ROW LEVEL SECURITY; SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rec1; -- fail, mutual recursion -- -- Mutual recursion via views -- SET SESSION AUTHORIZATION regress_rls_bob; CREATE VIEW rec1v AS SELECT * FROM rec1; CREATE VIEW rec2v AS SELECT * FROM rec2; SET SESSION AUTHORIZATION regress_rls_alice; ALTER POLICY r1 ON rec1 USING (x = (SELECT a FROM rec2v WHERE b = y)); ALTER POLICY r2 ON rec2 USING (a = (SELECT x FROM rec1v WHERE y = b)); SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rec1; -- fail, mutual recursion via views -- -- Mutual recursion via .s.b views -- SET SESSION AUTHORIZATION regress_rls_bob; DROP VIEW rec1v, rec2v CASCADE; CREATE VIEW rec1v WITH (security_barrier) AS SELECT * FROM rec1; CREATE VIEW rec2v WITH (security_barrier) AS SELECT * FROM rec2; SET SESSION AUTHORIZATION regress_rls_alice; CREATE POLICY r1 ON rec1 USING (x = (SELECT a FROM rec2v WHERE b = y)); CREATE POLICY r2 ON rec2 USING (a = (SELECT x FROM rec1v WHERE y = b)); SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rec1; -- fail, mutual recursion via s.b. views -- -- recursive RLS and VIEWs in policy -- SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE s1 (a int, b text); INSERT INTO s1 (SELECT x, md5(x::text) FROM generate_series(-10,10) x); CREATE TABLE s2 (x int, y text); INSERT INTO s2 (SELECT x, md5(x::text) FROM generate_series(-6,6) x); GRANT SELECT ON s1, s2 TO regress_rls_bob; CREATE POLICY p1 ON s1 USING (a in (select x from s2 where y like '%2f%')); CREATE POLICY p2 ON s2 USING (x in (select a from s1 where b like '%22%')); CREATE POLICY p3 ON s1 FOR INSERT WITH CHECK (a = (SELECT a FROM s1)); ALTER TABLE s1 ENABLE ROW LEVEL SECURITY; ALTER TABLE s2 ENABLE ROW LEVEL SECURITY; SET SESSION AUTHORIZATION regress_rls_bob; CREATE VIEW v2 AS SELECT * FROM s2 WHERE y like '%af%'; SELECT * FROM s1 WHERE f_leak(b); -- fail (infinite recursion) INSERT INTO s1 VALUES (1, 'foo'); -- fail (infinite recursion) SET SESSION AUTHORIZATION regress_rls_alice; DROP POLICY p3 on s1; ALTER POLICY p2 ON s2 USING (x % 2 = 0); SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM s1 WHERE f_leak(b); -- OK EXPLAIN (COSTS OFF) SELECT * FROM only s1 WHERE f_leak(b); SET SESSION AUTHORIZATION regress_rls_alice; ALTER POLICY p1 ON s1 USING (a in (select x from v2)); -- using VIEW in RLS policy SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM s1 WHERE f_leak(b); -- OK EXPLAIN (COSTS OFF) SELECT * FROM s1 WHERE f_leak(b); SELECT (SELECT x FROM s1 LIMIT 1) xx, * FROM s2 WHERE y like '%28%'; EXPLAIN (COSTS OFF) SELECT (SELECT x FROM s1 LIMIT 1) xx, * FROM s2 WHERE y like '%28%'; SET SESSION AUTHORIZATION regress_rls_alice; ALTER POLICY p2 ON s2 USING (x in (select a from s1 where b like '%d2%')); SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM s1 WHERE f_leak(b); -- fail (infinite recursion via view) -- prepared statement with regress_rls_alice privilege PREPARE p1(int) AS SELECT * FROM t1 WHERE a <= $1; EXECUTE p1(2); EXPLAIN (COSTS OFF) EXECUTE p1(2); -- superuser is allowed to bypass RLS checks RESET SESSION AUTHORIZATION; SET row_security TO OFF; SELECT * FROM t1 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM t1 WHERE f_leak(b); -- plan cache should be invalidated EXECUTE p1(2); EXPLAIN (COSTS OFF) EXECUTE p1(2); PREPARE p2(int) AS SELECT * FROM t1 WHERE a = $1; EXECUTE p2(2); EXPLAIN (COSTS OFF) EXECUTE p2(2); -- also, case when privilege switch from superuser SET SESSION AUTHORIZATION regress_rls_bob; SET row_security TO ON; EXECUTE p2(2); EXPLAIN (COSTS OFF) EXECUTE p2(2); -- -- UPDATE / DELETE and Row-level security -- SET SESSION AUTHORIZATION regress_rls_bob; EXPLAIN (COSTS OFF) UPDATE t1 SET b = b || b WHERE f_leak(b); UPDATE t1 SET b = b || b WHERE f_leak(b); EXPLAIN (COSTS OFF) UPDATE only t1 SET b = b || '_updt' WHERE f_leak(b); UPDATE only t1 SET b = b || '_updt' WHERE f_leak(b); -- returning clause with system column UPDATE only t1 SET b = b WHERE f_leak(b) RETURNING tableoid::regclass, *, t1; UPDATE t1 SET b = b WHERE f_leak(b) RETURNING *; UPDATE t1 SET b = b WHERE f_leak(b) RETURNING tableoid::regclass, *, t1; -- updates with from clause EXPLAIN (COSTS OFF) UPDATE t2 SET b=t2.b FROM t3 WHERE t2.a = 3 and t3.a = 2 AND f_leak(t2.b) AND f_leak(t3.b); UPDATE t2 SET b=t2.b FROM t3 WHERE t2.a = 3 and t3.a = 2 AND f_leak(t2.b) AND f_leak(t3.b); EXPLAIN (COSTS OFF) UPDATE t1 SET b=t1.b FROM t2 WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b); UPDATE t1 SET b=t1.b FROM t2 WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b); EXPLAIN (COSTS OFF) UPDATE t2 SET b=t2.b FROM t1 WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b); UPDATE t2 SET b=t2.b FROM t1 WHERE t1.a = 3 and t2.a = 3 AND f_leak(t1.b) AND f_leak(t2.b); -- updates with from clause self join EXPLAIN (COSTS OFF) UPDATE t2 t2_1 SET b = t2_2.b FROM t2 t2_2 WHERE t2_1.a = 3 AND t2_2.a = t2_1.a AND t2_2.b = t2_1.b AND f_leak(t2_1.b) AND f_leak(t2_2.b) RETURNING *, t2_1, t2_2; UPDATE t2 t2_1 SET b = t2_2.b FROM t2 t2_2 WHERE t2_1.a = 3 AND t2_2.a = t2_1.a AND t2_2.b = t2_1.b AND f_leak(t2_1.b) AND f_leak(t2_2.b) RETURNING *, t2_1, t2_2; EXPLAIN (COSTS OFF) UPDATE t1 t1_1 SET b = t1_2.b FROM t1 t1_2 WHERE t1_1.a = 4 AND t1_2.a = t1_1.a AND t1_2.b = t1_1.b AND f_leak(t1_1.b) AND f_leak(t1_2.b) RETURNING *, t1_1, t1_2; UPDATE t1 t1_1 SET b = t1_2.b FROM t1 t1_2 WHERE t1_1.a = 4 AND t1_2.a = t1_1.a AND t1_2.b = t1_1.b AND f_leak(t1_1.b) AND f_leak(t1_2.b) RETURNING *, t1_1, t1_2; RESET SESSION AUTHORIZATION; SET row_security TO OFF; SELECT * FROM t1 ORDER BY a,b; SET SESSION AUTHORIZATION regress_rls_bob; SET row_security TO ON; EXPLAIN (COSTS OFF) DELETE FROM only t1 WHERE f_leak(b); EXPLAIN (COSTS OFF) DELETE FROM t1 WHERE f_leak(b); DELETE FROM only t1 WHERE f_leak(b) RETURNING tableoid::regclass, *, t1; DELETE FROM t1 WHERE f_leak(b) RETURNING tableoid::regclass, *, t1; -- -- S.b. view on top of Row-level security -- SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE b1 (a int, b text); INSERT INTO b1 (SELECT x, md5(x::text) FROM generate_series(-10,10) x); CREATE POLICY p1 ON b1 USING (a % 2 = 0); ALTER TABLE b1 ENABLE ROW LEVEL SECURITY; GRANT ALL ON b1 TO regress_rls_bob; SET SESSION AUTHORIZATION regress_rls_bob; CREATE VIEW bv1 WITH (security_barrier) AS SELECT * FROM b1 WHERE a > 0 WITH CHECK OPTION; GRANT ALL ON bv1 TO regress_rls_carol; SET SESSION AUTHORIZATION regress_rls_carol; EXPLAIN (COSTS OFF) SELECT * FROM bv1 WHERE f_leak(b); SELECT * FROM bv1 WHERE f_leak(b); INSERT INTO bv1 VALUES (-1, 'xxx'); -- should fail view WCO INSERT INTO bv1 VALUES (11, 'xxx'); -- should fail RLS check INSERT INTO bv1 VALUES (12, 'xxx'); -- ok EXPLAIN (COSTS OFF) UPDATE bv1 SET b = 'yyy' WHERE a = 4 AND f_leak(b); UPDATE bv1 SET b = 'yyy' WHERE a = 4 AND f_leak(b); EXPLAIN (COSTS OFF) DELETE FROM bv1 WHERE a = 6 AND f_leak(b); DELETE FROM bv1 WHERE a = 6 AND f_leak(b); SET SESSION AUTHORIZATION regress_rls_alice; SELECT * FROM b1; -- -- INSERT ... ON CONFLICT DO UPDATE and Row-level security -- SET SESSION AUTHORIZATION regress_rls_alice; DROP POLICY p1 ON document; DROP POLICY p1r ON document; CREATE POLICY p1 ON document FOR SELECT USING (true); CREATE POLICY p2 ON document FOR INSERT WITH CHECK (dauthor = current_user); CREATE POLICY p3 ON document FOR UPDATE USING (cid = (SELECT cid from category WHERE cname = 'novel')) WITH CHECK (dauthor = current_user); SET SESSION AUTHORIZATION regress_rls_bob; -- Exists... SELECT * FROM document WHERE did = 2; -- ...so violates actual WITH CHECK OPTION within UPDATE (not INSERT, since -- alternative UPDATE path happens to be taken): INSERT INTO document VALUES (2, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_carol', 'my first novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, dauthor = EXCLUDED.dauthor; -- Violates USING qual for UPDATE policy p3. -- -- UPDATE path is taken, but UPDATE fails purely because *existing* row to be -- updated is not a "novel"/cid 11 (row is not leaked, even though we have -- SELECT privileges sufficient to see the row in this instance): INSERT INTO document VALUES (33, 22, 1, 'regress_rls_bob', 'okay science fiction'); -- preparation for next statement INSERT INTO document VALUES (33, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'Some novel, replaces sci-fi') -- takes UPDATE path ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle; -- Fine (we UPDATE, since INSERT WCOs and UPDATE security barrier quals + WCOs -- not violated): INSERT INTO document VALUES (2, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'my first novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle RETURNING *; -- Fine (we INSERT, so "cid = 33" ("technology") isn't evaluated): INSERT INTO document VALUES (78, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'some technology novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, cid = 33 RETURNING *; -- Fine (same query, but we UPDATE, so "cid = 33", ("technology") is not the -- case in respect of *existing* tuple): INSERT INTO document VALUES (78, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'some technology novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, cid = 33 RETURNING *; -- Same query a third time, but now fails due to existing tuple finally not -- passing quals: INSERT INTO document VALUES (78, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'some technology novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, cid = 33 RETURNING *; -- Don't fail just because INSERT doesn't satisfy WITH CHECK option that -- originated as a barrier/USING() qual from the UPDATE. Note that the UPDATE -- path *isn't* taken, and so UPDATE-related policy does not apply: INSERT INTO document VALUES (79, (SELECT cid from category WHERE cname = 'technology'), 1, 'regress_rls_bob', 'technology book, can only insert') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle RETURNING *; -- But this time, the same statement fails, because the UPDATE path is taken, -- and updating the row just inserted falls afoul of security barrier qual -- (enforced as WCO) -- what we might have updated target tuple to is -- irrelevant, in fact. INSERT INTO document VALUES (79, (SELECT cid from category WHERE cname = 'technology'), 1, 'regress_rls_bob', 'technology book, can only insert') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle RETURNING *; -- Test default USING qual enforced as WCO SET SESSION AUTHORIZATION regress_rls_alice; DROP POLICY p1 ON document; DROP POLICY p2 ON document; DROP POLICY p3 ON document; CREATE POLICY p3_with_default ON document FOR UPDATE USING (cid = (SELECT cid from category WHERE cname = 'novel')); SET SESSION AUTHORIZATION regress_rls_bob; -- Just because WCO-style enforcement of USING quals occurs with -- existing/target tuple does not mean that the implementation can be allowed -- to fail to also enforce this qual against the final tuple appended to -- relation (since in the absence of an explicit WCO, this is also interpreted -- as an UPDATE/ALL WCO in general). -- -- UPDATE path is taken here (fails due to existing tuple). Note that this is -- not reported as a "USING expression", because it's an RLS UPDATE check that originated as -- a USING qual for the purposes of RLS in general, as opposed to an explicit -- USING qual that is ordinarily a security barrier. We leave it up to the -- UPDATE to make this fail: INSERT INTO document VALUES (79, (SELECT cid from category WHERE cname = 'technology'), 1, 'regress_rls_bob', 'technology book, can only insert') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle RETURNING *; -- UPDATE path is taken here. Existing tuple passes, since its cid -- corresponds to "novel", but default USING qual is enforced against -- post-UPDATE tuple too (as always when updating with a policy that lacks an -- explicit WCO), and so this fails: INSERT INTO document VALUES (2, (SELECT cid from category WHERE cname = 'technology'), 1, 'regress_rls_bob', 'my first novel') ON CONFLICT (did) DO UPDATE SET cid = EXCLUDED.cid, dtitle = EXCLUDED.dtitle RETURNING *; SET SESSION AUTHORIZATION regress_rls_alice; DROP POLICY p3_with_default ON document; -- -- Test ALL policies with ON CONFLICT DO UPDATE (much the same as existing UPDATE -- tests) -- CREATE POLICY p3_with_all ON document FOR ALL USING (cid = (SELECT cid from category WHERE cname = 'novel')) WITH CHECK (dauthor = current_user); SET SESSION AUTHORIZATION regress_rls_bob; -- Fails, since ALL WCO is enforced in insert path: INSERT INTO document VALUES (80, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_carol', 'my first novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, cid = 33; -- Fails, since ALL policy USING qual is enforced (existing, target tuple is in -- violation, since it has the "manga" cid): INSERT INTO document VALUES (4, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'my first novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle; -- Fails, since ALL WCO are enforced: INSERT INTO document VALUES (1, (SELECT cid from category WHERE cname = 'novel'), 1, 'regress_rls_bob', 'my first novel') ON CONFLICT (did) DO UPDATE SET dauthor = 'regress_rls_carol'; -- -- ROLE/GROUP -- SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE z1 (a int, b text); CREATE TABLE z2 (a int, b text); GRANT SELECT ON z1,z2 TO regress_rls_group1, regress_rls_group2, regress_rls_bob, regress_rls_carol; INSERT INTO z1 VALUES (1, 'aba'), (2, 'bbb'), (3, 'ccc'), (4, 'dad'); CREATE POLICY p1 ON z1 TO regress_rls_group1 USING (a % 2 = 0); CREATE POLICY p2 ON z1 TO regress_rls_group2 USING (a % 2 = 1); ALTER TABLE z1 ENABLE ROW LEVEL SECURITY; SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM z1 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM z1 WHERE f_leak(b); PREPARE plancache_test AS SELECT * FROM z1 WHERE f_leak(b); EXPLAIN (COSTS OFF) EXECUTE plancache_test; PREPARE plancache_test2 AS WITH q AS MATERIALIZED (SELECT * FROM z1 WHERE f_leak(b)) SELECT * FROM q,z2; EXPLAIN (COSTS OFF) EXECUTE plancache_test2; PREPARE plancache_test3 AS WITH q AS MATERIALIZED (SELECT * FROM z2) SELECT * FROM q,z1 WHERE f_leak(z1.b); EXPLAIN (COSTS OFF) EXECUTE plancache_test3; SET ROLE regress_rls_group1; SELECT * FROM z1 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM z1 WHERE f_leak(b); EXPLAIN (COSTS OFF) EXECUTE plancache_test; EXPLAIN (COSTS OFF) EXECUTE plancache_test2; EXPLAIN (COSTS OFF) EXECUTE plancache_test3; SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM z1 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM z1 WHERE f_leak(b); EXPLAIN (COSTS OFF) EXECUTE plancache_test; EXPLAIN (COSTS OFF) EXECUTE plancache_test2; EXPLAIN (COSTS OFF) EXECUTE plancache_test3; SET ROLE regress_rls_group2; SELECT * FROM z1 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM z1 WHERE f_leak(b); EXPLAIN (COSTS OFF) EXECUTE plancache_test; EXPLAIN (COSTS OFF) EXECUTE plancache_test2; EXPLAIN (COSTS OFF) EXECUTE plancache_test3; -- -- Views should follow policy for view owner. -- -- View and Table owner are the same. SET SESSION AUTHORIZATION regress_rls_alice; CREATE VIEW rls_view AS SELECT * FROM z1 WHERE f_leak(b); GRANT SELECT ON rls_view TO regress_rls_bob; -- Query as role that is not owner of view or table. Should return all records. SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; -- Query as view/table owner. Should return all records. SET SESSION AUTHORIZATION regress_rls_alice; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; DROP VIEW rls_view; -- View and Table owners are different. SET SESSION AUTHORIZATION regress_rls_bob; CREATE VIEW rls_view AS SELECT * FROM z1 WHERE f_leak(b); GRANT SELECT ON rls_view TO regress_rls_alice; -- Query as role that is not owner of view but is owner of table. -- Should return records based on view owner policies. SET SESSION AUTHORIZATION regress_rls_alice; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; -- Query as role that is not owner of table but is owner of view. -- Should return records based on view owner policies. SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; -- Query as role that is not the owner of the table or view without permissions. SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM rls_view; --fail - permission denied. EXPLAIN (COSTS OFF) SELECT * FROM rls_view; --fail - permission denied. -- Query as role that is not the owner of the table or view with permissions. SET SESSION AUTHORIZATION regress_rls_bob; GRANT SELECT ON rls_view TO regress_rls_carol; SELECT * FROM rls_view; EXPLAIN (COSTS OFF) SELECT * FROM rls_view; SET SESSION AUTHORIZATION regress_rls_bob; DROP VIEW rls_view; -- -- Command specific -- SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE x1 (a int, b text, c text); GRANT ALL ON x1 TO PUBLIC; INSERT INTO x1 VALUES (1, 'abc', 'regress_rls_bob'), (2, 'bcd', 'regress_rls_bob'), (3, 'cde', 'regress_rls_carol'), (4, 'def', 'regress_rls_carol'), (5, 'efg', 'regress_rls_bob'), (6, 'fgh', 'regress_rls_bob'), (7, 'fgh', 'regress_rls_carol'), (8, 'fgh', 'regress_rls_carol'); CREATE POLICY p0 ON x1 FOR ALL USING (c = current_user); CREATE POLICY p1 ON x1 FOR SELECT USING (a % 2 = 0); CREATE POLICY p2 ON x1 FOR INSERT WITH CHECK (a % 2 = 1); CREATE POLICY p3 ON x1 FOR UPDATE USING (a % 2 = 0); CREATE POLICY p4 ON x1 FOR DELETE USING (a < 8); ALTER TABLE x1 ENABLE ROW LEVEL SECURITY; SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM x1 WHERE f_leak(b) ORDER BY a ASC; UPDATE x1 SET b = b || '_updt' WHERE f_leak(b) RETURNING *; SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM x1 WHERE f_leak(b) ORDER BY a ASC; UPDATE x1 SET b = b || '_updt' WHERE f_leak(b) RETURNING *; DELETE FROM x1 WHERE f_leak(b) RETURNING *; -- -- Duplicate Policy Names -- SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE y1 (a int, b text); CREATE TABLE y2 (a int, b text); GRANT ALL ON y1, y2 TO regress_rls_bob; CREATE POLICY p1 ON y1 FOR ALL USING (a % 2 = 0); CREATE POLICY p2 ON y1 FOR SELECT USING (a > 2); CREATE POLICY p1 ON y1 FOR SELECT USING (a % 2 = 1); --fail CREATE POLICY p1 ON y2 FOR ALL USING (a % 2 = 0); --OK ALTER TABLE y1 ENABLE ROW LEVEL SECURITY; ALTER TABLE y2 ENABLE ROW LEVEL SECURITY; -- -- Expression structure with SBV -- -- Create view as table owner. RLS should NOT be applied. SET SESSION AUTHORIZATION regress_rls_alice; CREATE VIEW rls_sbv WITH (security_barrier) AS SELECT * FROM y1 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM rls_sbv WHERE (a = 1); DROP VIEW rls_sbv; -- Create view as role that does not own table. RLS should be applied. SET SESSION AUTHORIZATION regress_rls_bob; CREATE VIEW rls_sbv WITH (security_barrier) AS SELECT * FROM y1 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM rls_sbv WHERE (a = 1); DROP VIEW rls_sbv; -- -- Expression structure -- SET SESSION AUTHORIZATION regress_rls_alice; INSERT INTO y2 (SELECT x, md5(x::text) FROM generate_series(0,20) x); CREATE POLICY p2 ON y2 USING (a % 3 = 0); CREATE POLICY p3 ON y2 USING (a % 4 = 0); SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM y2 WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM y2 WHERE f_leak(b); -- -- Qual push-down of leaky functions, when not referring to table -- SELECT * FROM y2 WHERE f_leak('abc'); EXPLAIN (COSTS OFF) SELECT * FROM y2 WHERE f_leak('abc'); CREATE TABLE test_qual_pushdown ( abc text ); INSERT INTO test_qual_pushdown VALUES ('abc'),('def'); SELECT * FROM y2 JOIN test_qual_pushdown ON (b = abc) WHERE f_leak(abc); EXPLAIN (COSTS OFF) SELECT * FROM y2 JOIN test_qual_pushdown ON (b = abc) WHERE f_leak(abc); SELECT * FROM y2 JOIN test_qual_pushdown ON (b = abc) WHERE f_leak(b); EXPLAIN (COSTS OFF) SELECT * FROM y2 JOIN test_qual_pushdown ON (b = abc) WHERE f_leak(b); DROP TABLE test_qual_pushdown; -- -- Plancache invalidate on user change. -- RESET SESSION AUTHORIZATION; DROP TABLE t1 CASCADE; CREATE TABLE t1 (a integer); GRANT SELECT ON t1 TO regress_rls_bob, regress_rls_carol; CREATE POLICY p1 ON t1 TO regress_rls_bob USING ((a % 2) = 0); CREATE POLICY p2 ON t1 TO regress_rls_carol USING ((a % 4) = 0); ALTER TABLE t1 ENABLE ROW LEVEL SECURITY; -- Prepare as regress_rls_bob SET ROLE regress_rls_bob; PREPARE role_inval AS SELECT * FROM t1; -- Check plan EXPLAIN (COSTS OFF) EXECUTE role_inval; -- Change to regress_rls_carol SET ROLE regress_rls_carol; -- Check plan- should be different EXPLAIN (COSTS OFF) EXECUTE role_inval; -- Change back to regress_rls_bob SET ROLE regress_rls_bob; -- Check plan- should be back to original EXPLAIN (COSTS OFF) EXECUTE role_inval; -- -- CTE and RLS -- RESET SESSION AUTHORIZATION; DROP TABLE t1 CASCADE; CREATE TABLE t1 (a integer, b text); CREATE POLICY p1 ON t1 USING (a % 2 = 0); ALTER TABLE t1 ENABLE ROW LEVEL SECURITY; GRANT ALL ON t1 TO regress_rls_bob; INSERT INTO t1 (SELECT x, md5(x::text) FROM generate_series(0,20) x); SET SESSION AUTHORIZATION regress_rls_bob; WITH cte1 AS MATERIALIZED (SELECT * FROM t1 WHERE f_leak(b)) SELECT * FROM cte1; EXPLAIN (COSTS OFF) WITH cte1 AS MATERIALIZED (SELECT * FROM t1 WHERE f_leak(b)) SELECT * FROM cte1; WITH cte1 AS (UPDATE t1 SET a = a + 1 RETURNING *) SELECT * FROM cte1; --fail WITH cte1 AS (UPDATE t1 SET a = a RETURNING *) SELECT * FROM cte1; --ok WITH cte1 AS (INSERT INTO t1 VALUES (21, 'Fail') RETURNING *) SELECT * FROM cte1; --fail WITH cte1 AS (INSERT INTO t1 VALUES (20, 'Success') RETURNING *) SELECT * FROM cte1; --ok -- -- Rename Policy -- RESET SESSION AUTHORIZATION; ALTER POLICY p1 ON t1 RENAME TO p1; --fail SELECT polname, relname FROM pg_policy pol JOIN pg_class pc ON (pc.oid = pol.polrelid) WHERE relname = 't1'; ALTER POLICY p1 ON t1 RENAME TO p2; --ok SELECT polname, relname FROM pg_policy pol JOIN pg_class pc ON (pc.oid = pol.polrelid) WHERE relname = 't1'; -- -- Check INSERT SELECT -- SET SESSION AUTHORIZATION regress_rls_bob; CREATE TABLE t2 (a integer, b text); INSERT INTO t2 (SELECT * FROM t1); EXPLAIN (COSTS OFF) INSERT INTO t2 (SELECT * FROM t1); SELECT * FROM t2; EXPLAIN (COSTS OFF) SELECT * FROM t2; CREATE TABLE t3 AS SELECT * FROM t1; SELECT * FROM t3; SELECT * INTO t4 FROM t1; SELECT * FROM t4; -- -- RLS with JOIN -- SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE blog (id integer, author text, post text); CREATE TABLE comment (blog_id integer, message text); GRANT ALL ON blog, comment TO regress_rls_bob; CREATE POLICY blog_1 ON blog USING (id % 2 = 0); ALTER TABLE blog ENABLE ROW LEVEL SECURITY; INSERT INTO blog VALUES (1, 'alice', 'blog #1'), (2, 'bob', 'blog #1'), (3, 'alice', 'blog #2'), (4, 'alice', 'blog #3'), (5, 'john', 'blog #1'); INSERT INTO comment VALUES (1, 'cool blog'), (1, 'fun blog'), (3, 'crazy blog'), (5, 'what?'), (4, 'insane!'), (2, 'who did it?'); SET SESSION AUTHORIZATION regress_rls_bob; -- Check RLS JOIN with Non-RLS. SELECT id, author, message FROM blog JOIN comment ON id = blog_id; -- Check Non-RLS JOIN with RLS. SELECT id, author, message FROM comment JOIN blog ON id = blog_id; SET SESSION AUTHORIZATION regress_rls_alice; CREATE POLICY comment_1 ON comment USING (blog_id < 4); ALTER TABLE comment ENABLE ROW LEVEL SECURITY; SET SESSION AUTHORIZATION regress_rls_bob; -- Check RLS JOIN RLS SELECT id, author, message FROM blog JOIN comment ON id = blog_id; SELECT id, author, message FROM comment JOIN blog ON id = blog_id; SET SESSION AUTHORIZATION regress_rls_alice; DROP TABLE blog, comment; -- -- Default Deny Policy -- RESET SESSION AUTHORIZATION; DROP POLICY p2 ON t1; ALTER TABLE t1 OWNER TO regress_rls_alice; -- Check that default deny does not apply to superuser. RESET SESSION AUTHORIZATION; SELECT * FROM t1; EXPLAIN (COSTS OFF) SELECT * FROM t1; -- Check that default deny does not apply to table owner. SET SESSION AUTHORIZATION regress_rls_alice; SELECT * FROM t1; EXPLAIN (COSTS OFF) SELECT * FROM t1; -- Check that default deny applies to non-owner/non-superuser when RLS on. SET SESSION AUTHORIZATION regress_rls_bob; SET row_security TO ON; SELECT * FROM t1; EXPLAIN (COSTS OFF) SELECT * FROM t1; SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM t1; EXPLAIN (COSTS OFF) SELECT * FROM t1; -- -- COPY TO/FROM -- RESET SESSION AUTHORIZATION; DROP TABLE copy_t CASCADE; CREATE TABLE copy_t (a integer, b text); CREATE POLICY p1 ON copy_t USING (a % 2 = 0); ALTER TABLE copy_t ENABLE ROW LEVEL SECURITY; GRANT ALL ON copy_t TO regress_rls_bob, regress_rls_exempt_user; INSERT INTO copy_t (SELECT x, md5(x::text) FROM generate_series(0,10) x); -- Check COPY TO as Superuser/owner. RESET SESSION AUTHORIZATION; SET row_security TO OFF; COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; SET row_security TO ON; COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; -- Check COPY TO as user with permissions. SET SESSION AUTHORIZATION regress_rls_bob; SET row_security TO OFF; COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --fail - would be affected by RLS SET row_security TO ON; COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --ok -- Check COPY TO as user with permissions and BYPASSRLS SET SESSION AUTHORIZATION regress_rls_exempt_user; SET row_security TO OFF; COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --ok SET row_security TO ON; COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --ok -- Check COPY TO as user without permissions. SET row_security TO OFF; SET SESSION AUTHORIZATION regress_rls_carol; SET row_security TO OFF; COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --fail - would be affected by RLS SET row_security TO ON; COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --fail - permission denied -- Check COPY relation TO; keep it just one row to avoid reordering issues RESET SESSION AUTHORIZATION; SET row_security TO ON; CREATE TABLE copy_rel_to (a integer, b text); CREATE POLICY p1 ON copy_rel_to USING (a % 2 = 0); ALTER TABLE copy_rel_to ENABLE ROW LEVEL SECURITY; GRANT ALL ON copy_rel_to TO regress_rls_bob, regress_rls_exempt_user; INSERT INTO copy_rel_to VALUES (1, md5('1')); -- Check COPY TO as Superuser/owner. RESET SESSION AUTHORIZATION; SET row_security TO OFF; COPY copy_rel_to TO STDOUT WITH DELIMITER ','; SET row_security TO ON; COPY copy_rel_to TO STDOUT WITH DELIMITER ','; -- Check COPY TO as user with permissions. SET SESSION AUTHORIZATION regress_rls_bob; SET row_security TO OFF; COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --fail - would be affected by RLS SET row_security TO ON; COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --ok -- Check COPY TO as user with permissions and BYPASSRLS SET SESSION AUTHORIZATION regress_rls_exempt_user; SET row_security TO OFF; COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --ok SET row_security TO ON; COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --ok -- Check COPY TO as user without permissions. SET row_security TO OFF; SET SESSION AUTHORIZATION regress_rls_carol; SET row_security TO OFF; COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --fail - permission denied SET row_security TO ON; COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --fail - permission denied -- Check COPY FROM as Superuser/owner. RESET SESSION AUTHORIZATION; SET row_security TO OFF; COPY copy_t FROM STDIN; --ok 1 abc 2 bcd 3 cde 4 def \. SET row_security TO ON; COPY copy_t FROM STDIN; --ok 1 abc 2 bcd 3 cde 4 def \. -- Check COPY FROM as user with permissions. SET SESSION AUTHORIZATION regress_rls_bob; SET row_security TO OFF; COPY copy_t FROM STDIN; --fail - would be affected by RLS. SET row_security TO ON; COPY copy_t FROM STDIN; --fail - COPY FROM not supported by RLS. -- Check COPY FROM as user with permissions and BYPASSRLS SET SESSION AUTHORIZATION regress_rls_exempt_user; SET row_security TO ON; COPY copy_t FROM STDIN; --ok 1 abc 2 bcd 3 cde 4 def \. -- Check COPY FROM as user without permissions. SET SESSION AUTHORIZATION regress_rls_carol; SET row_security TO OFF; COPY copy_t FROM STDIN; --fail - permission denied. SET row_security TO ON; COPY copy_t FROM STDIN; --fail - permission denied. RESET SESSION AUTHORIZATION; DROP TABLE copy_t; DROP TABLE copy_rel_to CASCADE; -- Check WHERE CURRENT OF SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE current_check (currentid int, payload text, rlsuser text); GRANT ALL ON current_check TO PUBLIC; INSERT INTO current_check VALUES (1, 'abc', 'regress_rls_bob'), (2, 'bcd', 'regress_rls_bob'), (3, 'cde', 'regress_rls_bob'), (4, 'def', 'regress_rls_bob'); CREATE POLICY p1 ON current_check FOR SELECT USING (currentid % 2 = 0); CREATE POLICY p2 ON current_check FOR DELETE USING (currentid = 4 AND rlsuser = current_user); CREATE POLICY p3 ON current_check FOR UPDATE USING (currentid = 4) WITH CHECK (rlsuser = current_user); ALTER TABLE current_check ENABLE ROW LEVEL SECURITY; SET SESSION AUTHORIZATION regress_rls_bob; -- Can SELECT even rows SELECT * FROM current_check; -- Cannot UPDATE row 2 UPDATE current_check SET payload = payload || '_new' WHERE currentid = 2 RETURNING *; BEGIN; DECLARE current_check_cursor SCROLL CURSOR FOR SELECT * FROM current_check; -- Returns rows that can be seen according to SELECT policy, like plain SELECT -- above (even rows) FETCH ABSOLUTE 1 FROM current_check_cursor; -- Still cannot UPDATE row 2 through cursor UPDATE current_check SET payload = payload || '_new' WHERE CURRENT OF current_check_cursor RETURNING *; -- Can update row 4 through cursor, which is the next visible row FETCH RELATIVE 1 FROM current_check_cursor; UPDATE current_check SET payload = payload || '_new' WHERE CURRENT OF current_check_cursor RETURNING *; SELECT * FROM current_check; -- Plan should be a subquery TID scan EXPLAIN (COSTS OFF) UPDATE current_check SET payload = payload WHERE CURRENT OF current_check_cursor; -- Similarly can only delete row 4 FETCH ABSOLUTE 1 FROM current_check_cursor; DELETE FROM current_check WHERE CURRENT OF current_check_cursor RETURNING *; FETCH RELATIVE 1 FROM current_check_cursor; DELETE FROM current_check WHERE CURRENT OF current_check_cursor RETURNING *; SELECT * FROM current_check; COMMIT; -- -- check pg_stats view filtering -- SET row_security TO ON; SET SESSION AUTHORIZATION regress_rls_alice; ANALYZE current_check; -- Stats visible SELECT row_security_active('current_check'); SELECT attname, most_common_vals FROM pg_stats WHERE tablename = 'current_check' ORDER BY 1; SET SESSION AUTHORIZATION regress_rls_bob; -- Stats not visible SELECT row_security_active('current_check'); SELECT attname, most_common_vals FROM pg_stats WHERE tablename = 'current_check' ORDER BY 1; -- -- Collation support -- BEGIN; CREATE TABLE coll_t (c) AS VALUES ('bar'::text); CREATE POLICY coll_p ON coll_t USING (c < ('foo'::text COLLATE "C")); ALTER TABLE coll_t ENABLE ROW LEVEL SECURITY; GRANT SELECT ON coll_t TO regress_rls_alice; SELECT (string_to_array(polqual, ':'))[7] AS inputcollid FROM pg_policy WHERE polrelid = 'coll_t'::regclass; SET SESSION AUTHORIZATION regress_rls_alice; SELECT * FROM coll_t; ROLLBACK; -- -- Shared Object Dependencies -- RESET SESSION AUTHORIZATION; BEGIN; CREATE ROLE regress_rls_eve; CREATE ROLE regress_rls_frank; CREATE TABLE tbl1 (c) AS VALUES ('bar'::text); GRANT SELECT ON TABLE tbl1 TO regress_rls_eve; CREATE POLICY P ON tbl1 TO regress_rls_eve, regress_rls_frank USING (true); SELECT refclassid::regclass, deptype FROM pg_depend WHERE classid = 'pg_policy'::regclass AND refobjid = 'tbl1'::regclass; SELECT refclassid::regclass, deptype FROM pg_shdepend WHERE classid = 'pg_policy'::regclass AND refobjid IN ('regress_rls_eve'::regrole, 'regress_rls_frank'::regrole); SAVEPOINT q; DROP ROLE regress_rls_eve; --fails due to dependency on POLICY p ROLLBACK TO q; ALTER POLICY p ON tbl1 TO regress_rls_frank USING (true); SAVEPOINT q; DROP ROLE regress_rls_eve; --fails due to dependency on GRANT SELECT ROLLBACK TO q; REVOKE ALL ON TABLE tbl1 FROM regress_rls_eve; SAVEPOINT q; DROP ROLE regress_rls_eve; --succeeds ROLLBACK TO q; SAVEPOINT q; DROP ROLE regress_rls_frank; --fails due to dependency on POLICY p ROLLBACK TO q; DROP POLICY p ON tbl1; SAVEPOINT q; DROP ROLE regress_rls_frank; -- succeeds ROLLBACK TO q; ROLLBACK; -- cleanup -- -- Converting table to view -- BEGIN; CREATE TABLE t (c int); CREATE POLICY p ON t USING (c % 2 = 1); ALTER TABLE t ENABLE ROW LEVEL SECURITY; SAVEPOINT q; CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD SELECT * FROM generate_series(1,5) t0(c); -- fails due to row level security enabled ROLLBACK TO q; ALTER TABLE t DISABLE ROW LEVEL SECURITY; SAVEPOINT q; CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD SELECT * FROM generate_series(1,5) t0(c); -- fails due to policy p on t ROLLBACK TO q; DROP POLICY p ON t; CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD SELECT * FROM generate_series(1,5) t0(c); -- succeeds ROLLBACK; -- -- Policy expression handling -- BEGIN; CREATE TABLE t (c) AS VALUES ('bar'::text); CREATE POLICY p ON t USING (max(c)); -- fails: aggregate functions are not allowed in policy expressions ROLLBACK; -- -- Non-target relations are only subject to SELECT policies -- SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE r1 (a int); CREATE TABLE r2 (a int); INSERT INTO r1 VALUES (10), (20); INSERT INTO r2 VALUES (10), (20); GRANT ALL ON r1, r2 TO regress_rls_bob; CREATE POLICY p1 ON r1 USING (true); ALTER TABLE r1 ENABLE ROW LEVEL SECURITY; CREATE POLICY p1 ON r2 FOR SELECT USING (true); CREATE POLICY p2 ON r2 FOR INSERT WITH CHECK (false); CREATE POLICY p3 ON r2 FOR UPDATE USING (false); CREATE POLICY p4 ON r2 FOR DELETE USING (false); ALTER TABLE r2 ENABLE ROW LEVEL SECURITY; SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM r1; SELECT * FROM r2; -- r2 is read-only INSERT INTO r2 VALUES (2); -- Not allowed UPDATE r2 SET a = 2 RETURNING *; -- Updates nothing DELETE FROM r2 RETURNING *; -- Deletes nothing -- r2 can be used as a non-target relation in DML INSERT INTO r1 SELECT a + 1 FROM r2 RETURNING *; -- OK UPDATE r1 SET a = r2.a + 2 FROM r2 WHERE r1.a = r2.a RETURNING *; -- OK DELETE FROM r1 USING r2 WHERE r1.a = r2.a + 2 RETURNING *; -- OK SELECT * FROM r1; SELECT * FROM r2; SET SESSION AUTHORIZATION regress_rls_alice; DROP TABLE r1; DROP TABLE r2; -- -- FORCE ROW LEVEL SECURITY applies RLS to owners too -- SET SESSION AUTHORIZATION regress_rls_alice; SET row_security = on; CREATE TABLE r1 (a int); INSERT INTO r1 VALUES (10), (20); CREATE POLICY p1 ON r1 USING (false); ALTER TABLE r1 ENABLE ROW LEVEL SECURITY; ALTER TABLE r1 FORCE ROW LEVEL SECURITY; -- No error, but no rows TABLE r1; -- RLS error INSERT INTO r1 VALUES (1); -- No error (unable to see any rows to update) UPDATE r1 SET a = 1; TABLE r1; -- No error (unable to see any rows to delete) DELETE FROM r1; TABLE r1; SET row_security = off; -- these all fail, would be affected by RLS TABLE r1; UPDATE r1 SET a = 1; DELETE FROM r1; DROP TABLE r1; -- -- FORCE ROW LEVEL SECURITY does not break RI -- SET SESSION AUTHORIZATION regress_rls_alice; SET row_security = on; CREATE TABLE r1 (a int PRIMARY KEY); CREATE TABLE r2 (a int REFERENCES r1); INSERT INTO r1 VALUES (10), (20); INSERT INTO r2 VALUES (10), (20); -- Create policies on r2 which prevent the -- owner from seeing any rows, but RI should -- still see them. CREATE POLICY p1 ON r2 USING (false); ALTER TABLE r2 ENABLE ROW LEVEL SECURITY; ALTER TABLE r2 FORCE ROW LEVEL SECURITY; -- Errors due to rows in r2 DELETE FROM r1; -- Reset r2 to no-RLS DROP POLICY p1 ON r2; ALTER TABLE r2 NO FORCE ROW LEVEL SECURITY; ALTER TABLE r2 DISABLE ROW LEVEL SECURITY; -- clean out r2 for INSERT test below DELETE FROM r2; -- Change r1 to not allow rows to be seen CREATE POLICY p1 ON r1 USING (false); ALTER TABLE r1 ENABLE ROW LEVEL SECURITY; ALTER TABLE r1 FORCE ROW LEVEL SECURITY; -- No rows seen TABLE r1; -- No error, RI still sees that row exists in r1 INSERT INTO r2 VALUES (10); DROP TABLE r2; DROP TABLE r1; -- Ensure cascaded DELETE works CREATE TABLE r1 (a int PRIMARY KEY); CREATE TABLE r2 (a int REFERENCES r1 ON DELETE CASCADE); INSERT INTO r1 VALUES (10), (20); INSERT INTO r2 VALUES (10), (20); -- Create policies on r2 which prevent the -- owner from seeing any rows, but RI should -- still see them. CREATE POLICY p1 ON r2 USING (false); ALTER TABLE r2 ENABLE ROW LEVEL SECURITY; ALTER TABLE r2 FORCE ROW LEVEL SECURITY; -- Deletes all records from both DELETE FROM r1; -- Remove FORCE from r2 ALTER TABLE r2 NO FORCE ROW LEVEL SECURITY; -- As owner, we now bypass RLS -- verify no rows in r2 now TABLE r2; DROP TABLE r2; DROP TABLE r1; -- Ensure cascaded UPDATE works CREATE TABLE r1 (a int PRIMARY KEY); CREATE TABLE r2 (a int REFERENCES r1 ON UPDATE CASCADE); INSERT INTO r1 VALUES (10), (20); INSERT INTO r2 VALUES (10), (20); -- Create policies on r2 which prevent the -- owner from seeing any rows, but RI should -- still see them. CREATE POLICY p1 ON r2 USING (false); ALTER TABLE r2 ENABLE ROW LEVEL SECURITY; ALTER TABLE r2 FORCE ROW LEVEL SECURITY; -- Updates records in both UPDATE r1 SET a = a+5; -- Remove FORCE from r2 ALTER TABLE r2 NO FORCE ROW LEVEL SECURITY; -- As owner, we now bypass RLS -- verify records in r2 updated TABLE r2; DROP TABLE r2; DROP TABLE r1; -- -- Test INSERT+RETURNING applies SELECT policies as -- WithCheckOptions (meaning an error is thrown) -- SET SESSION AUTHORIZATION regress_rls_alice; SET row_security = on; CREATE TABLE r1 (a int); CREATE POLICY p1 ON r1 FOR SELECT USING (false); CREATE POLICY p2 ON r1 FOR INSERT WITH CHECK (true); ALTER TABLE r1 ENABLE ROW LEVEL SECURITY; ALTER TABLE r1 FORCE ROW LEVEL SECURITY; -- Works fine INSERT INTO r1 VALUES (10), (20); -- No error, but no rows TABLE r1; SET row_security = off; -- fail, would be affected by RLS TABLE r1; SET row_security = on; -- Error INSERT INTO r1 VALUES (10), (20) RETURNING *; DROP TABLE r1; -- -- Test UPDATE+RETURNING applies SELECT policies as -- WithCheckOptions (meaning an error is thrown) -- SET SESSION AUTHORIZATION regress_rls_alice; SET row_security = on; CREATE TABLE r1 (a int PRIMARY KEY); CREATE POLICY p1 ON r1 FOR SELECT USING (a < 20); CREATE POLICY p2 ON r1 FOR UPDATE USING (a < 20) WITH CHECK (true); CREATE POLICY p3 ON r1 FOR INSERT WITH CHECK (true); INSERT INTO r1 VALUES (10); ALTER TABLE r1 ENABLE ROW LEVEL SECURITY; ALTER TABLE r1 FORCE ROW LEVEL SECURITY; -- Works fine UPDATE r1 SET a = 30; -- Show updated rows ALTER TABLE r1 NO FORCE ROW LEVEL SECURITY; TABLE r1; -- reset value in r1 for test with RETURNING UPDATE r1 SET a = 10; -- Verify row reset TABLE r1; ALTER TABLE r1 FORCE ROW LEVEL SECURITY; -- Error UPDATE r1 SET a = 30 RETURNING *; -- UPDATE path of INSERT ... ON CONFLICT DO UPDATE should also error out INSERT INTO r1 VALUES (10) ON CONFLICT (a) DO UPDATE SET a = 30 RETURNING *; -- Should still error out without RETURNING (use of arbiter always requires -- SELECT permissions) INSERT INTO r1 VALUES (10) ON CONFLICT (a) DO UPDATE SET a = 30; INSERT INTO r1 VALUES (10) ON CONFLICT ON CONSTRAINT r1_pkey DO UPDATE SET a = 30; DROP TABLE r1; -- Check dependency handling RESET SESSION AUTHORIZATION; CREATE TABLE dep1 (c1 int); CREATE TABLE dep2 (c1 int); CREATE POLICY dep_p1 ON dep1 TO regress_rls_bob USING (c1 > (select max(dep2.c1) from dep2)); ALTER POLICY dep_p1 ON dep1 TO regress_rls_bob,regress_rls_carol; -- Should return one SELECT count(*) = 1 FROM pg_depend WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1') AND refobjid = (SELECT oid FROM pg_class WHERE relname = 'dep2'); ALTER POLICY dep_p1 ON dep1 USING (true); -- Should return one SELECT count(*) = 1 FROM pg_shdepend WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1') AND refobjid = (SELECT oid FROM pg_authid WHERE rolname = 'regress_rls_bob'); -- Should return one SELECT count(*) = 1 FROM pg_shdepend WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1') AND refobjid = (SELECT oid FROM pg_authid WHERE rolname = 'regress_rls_carol'); -- Should return zero SELECT count(*) = 0 FROM pg_depend WHERE objid = (SELECT oid FROM pg_policy WHERE polname = 'dep_p1') AND refobjid = (SELECT oid FROM pg_class WHERE relname = 'dep2'); -- DROP OWNED BY testing RESET SESSION AUTHORIZATION; CREATE ROLE regress_rls_dob_role1; CREATE ROLE regress_rls_dob_role2; CREATE TABLE dob_t1 (c1 int); CREATE TABLE dob_t2 (c1 int) PARTITION BY RANGE (c1); CREATE POLICY p1 ON dob_t1 TO regress_rls_dob_role1 USING (true); DROP OWNED BY regress_rls_dob_role1; DROP POLICY p1 ON dob_t1; -- should fail, already gone CREATE POLICY p1 ON dob_t1 TO regress_rls_dob_role1,regress_rls_dob_role2 USING (true); DROP OWNED BY regress_rls_dob_role1; DROP POLICY p1 ON dob_t1; -- should succeed CREATE POLICY p1 ON dob_t2 TO regress_rls_dob_role1,regress_rls_dob_role2 USING (true); DROP OWNED BY regress_rls_dob_role1; DROP POLICY p1 ON dob_t2; -- should succeed DROP USER regress_rls_dob_role1; DROP USER regress_rls_dob_role2; -- Bug #15708: view + table with RLS should check policies as view owner CREATE TABLE ref_tbl (a int); INSERT INTO ref_tbl VALUES (1); CREATE TABLE rls_tbl (a int); INSERT INTO rls_tbl VALUES (10); ALTER TABLE rls_tbl ENABLE ROW LEVEL SECURITY; CREATE POLICY p1 ON rls_tbl USING (EXISTS (SELECT 1 FROM ref_tbl)); GRANT SELECT ON ref_tbl TO regress_rls_bob; GRANT SELECT ON rls_tbl TO regress_rls_bob; CREATE VIEW rls_view AS SELECT * FROM rls_tbl; ALTER VIEW rls_view OWNER TO regress_rls_bob; GRANT SELECT ON rls_view TO regress_rls_alice; SET SESSION AUTHORIZATION regress_rls_alice; SELECT * FROM ref_tbl; -- Permission denied SELECT * FROM rls_tbl; -- Permission denied SELECT * FROM rls_view; -- OK RESET SESSION AUTHORIZATION; DROP VIEW rls_view; DROP TABLE rls_tbl; DROP TABLE ref_tbl; -- Leaky operator test CREATE TABLE rls_tbl (a int); INSERT INTO rls_tbl SELECT x/10 FROM generate_series(1, 100) x; ANALYZE rls_tbl; ALTER TABLE rls_tbl ENABLE ROW LEVEL SECURITY; GRANT SELECT ON rls_tbl TO regress_rls_alice; SET SESSION AUTHORIZATION regress_rls_alice; CREATE FUNCTION op_leak(int, int) RETURNS bool AS 'BEGIN RAISE NOTICE ''op_leak => %, %'', $1, $2; RETURN $1 < $2; END' LANGUAGE plpgsql; CREATE OPERATOR <<< (procedure = op_leak, leftarg = int, rightarg = int, restrict = scalarltsel); SELECT * FROM rls_tbl WHERE a <<< 1000; DROP OPERATOR <<< (int, int); DROP FUNCTION op_leak(int, int); RESET SESSION AUTHORIZATION; DROP TABLE rls_tbl; -- Bug #16006: whole-row Vars in a policy don't play nice with sub-selects SET SESSION AUTHORIZATION regress_rls_alice; CREATE TABLE rls_tbl (a int, b int, c int); CREATE POLICY p1 ON rls_tbl USING (rls_tbl >= ROW(1,1,1)); ALTER TABLE rls_tbl ENABLE ROW LEVEL SECURITY; ALTER TABLE rls_tbl FORCE ROW LEVEL SECURITY; INSERT INTO rls_tbl SELECT 10, 20, 30; EXPLAIN (VERBOSE, COSTS OFF) INSERT INTO rls_tbl SELECT * FROM (SELECT b, c FROM rls_tbl ORDER BY a) ss; INSERT INTO rls_tbl SELECT * FROM (SELECT b, c FROM rls_tbl ORDER BY a) ss; SELECT * FROM rls_tbl; DROP TABLE rls_tbl; RESET SESSION AUTHORIZATION; -- -- Clean up objects -- RESET SESSION AUTHORIZATION; DROP SCHEMA regress_rls_schema CASCADE; DROP USER regress_rls_alice; DROP USER regress_rls_bob; DROP USER regress_rls_carol; DROP USER regress_rls_dave; DROP USER regress_rls_exempt_user; DROP ROLE regress_rls_group1; DROP ROLE regress_rls_group2; -- Arrange to have a few policies left over, for testing -- pg_dump/pg_restore CREATE SCHEMA regress_rls_schema; CREATE TABLE rls_tbl (c1 int); ALTER TABLE rls_tbl ENABLE ROW LEVEL SECURITY; CREATE POLICY p1 ON rls_tbl USING (c1 > 5); CREATE POLICY p2 ON rls_tbl FOR SELECT USING (c1 <= 3); CREATE POLICY p3 ON rls_tbl FOR UPDATE USING (c1 <= 3) WITH CHECK (c1 > 5); CREATE POLICY p4 ON rls_tbl FOR DELETE USING (c1 <= 3); CREATE TABLE rls_tbl_force (c1 int); ALTER TABLE rls_tbl_force ENABLE ROW LEVEL SECURITY; ALTER TABLE rls_tbl_force FORCE ROW LEVEL SECURITY; CREATE POLICY p1 ON rls_tbl_force USING (c1 = 5) WITH CHECK (c1 < 5); CREATE POLICY p2 ON rls_tbl_force FOR SELECT USING (c1 = 8); CREATE POLICY p3 ON rls_tbl_force FOR UPDATE USING (c1 = 8) WITH CHECK (c1 >= 5); CREATE POLICY p4 ON rls_tbl_force FOR DELETE USING (c1 = 8); libpg_query-13-2.1.0/test/sql/postgres_regress/rowtypes.sql000066400000000000000000000401611413137616400240600ustar00rootroot00000000000000-- -- ROWTYPES -- -- Make both a standalone composite type and a table rowtype create type complex as (r float8, i float8); create temp table fullname (first text, last text); -- Nested composite create type quad as (c1 complex, c2 complex); -- Some simple tests of I/O conversions and row construction select (1.1,2.2)::complex, row((3.3,4.4),(5.5,null))::quad; select row('Joe', 'Blow')::fullname, '(Joe,Blow)'::fullname; select '(Joe,von Blow)'::fullname, '(Joe,d''Blow)'::fullname; select '(Joe,"von""Blow")'::fullname, E'(Joe,d\\\\Blow)'::fullname; select '(Joe,"Blow,Jr")'::fullname; select '(Joe,)'::fullname; -- ok, null 2nd column select '(Joe)'::fullname; -- bad select '(Joe,,)'::fullname; -- bad select '[]'::fullname; -- bad select ' (Joe,Blow) '::fullname; -- ok, extra whitespace select '(Joe,Blow) /'::fullname; -- bad create temp table quadtable(f1 int, q quad); insert into quadtable values (1, ((3.3,4.4),(5.5,6.6))); insert into quadtable values (2, ((null,4.4),(5.5,6.6))); select * from quadtable; select f1, q.c1 from quadtable; -- fails, q is a table reference select f1, (q).c1, (qq.q).c1.i from quadtable qq; create temp table people (fn fullname, bd date); insert into people values ('(Joe,Blow)', '1984-01-10'); select * from people; -- at the moment this will not work due to ALTER TABLE inadequacy: alter table fullname add column suffix text default ''; -- but this should work: alter table fullname add column suffix text default null; select * from people; -- test insertion/updating of subfields update people set fn.suffix = 'Jr'; select * from people; insert into quadtable (f1, q.c1.r, q.c2.i) values(44,55,66); select * from quadtable; -- The object here is to ensure that toasted references inside -- composite values don't cause problems. The large f1 value will -- be toasted inside pp, it must still work after being copied to people. create temp table pp (f1 text); insert into pp values (repeat('abcdefghijkl', 100000)); insert into people select ('Jim', f1, null)::fullname, current_date from pp; select (fn).first, substr((fn).last, 1, 20), length((fn).last) from people; -- Test row comparison semantics. Prior to PG 8.2 we did this in a totally -- non-spec-compliant way. select ROW(1,2) < ROW(1,3) as true; select ROW(1,2) < ROW(1,1) as false; select ROW(1,2) < ROW(1,NULL) as null; select ROW(1,2,3) < ROW(1,3,NULL) as true; -- the NULL is not examined select ROW(11,'ABC') < ROW(11,'DEF') as true; select ROW(11,'ABC') > ROW(11,'DEF') as false; select ROW(12,'ABC') > ROW(11,'DEF') as true; -- = and <> have different NULL-behavior than < etc select ROW(1,2,3) < ROW(1,NULL,4) as null; select ROW(1,2,3) = ROW(1,NULL,4) as false; select ROW(1,2,3) <> ROW(1,NULL,4) as true; -- We allow operators beyond the six standard ones, if they have btree -- operator classes. select ROW('ABC','DEF') ~<=~ ROW('DEF','ABC') as true; select ROW('ABC','DEF') ~>=~ ROW('DEF','ABC') as false; select ROW('ABC','DEF') ~~ ROW('DEF','ABC') as fail; -- Comparisons of ROW() expressions can cope with some type mismatches select ROW(1,2) = ROW(1,2::int8); select ROW(1,2) in (ROW(3,4), ROW(1,2)); select ROW(1,2) in (ROW(3,4), ROW(1,2::int8)); -- Check row comparison with a subselect select unique1, unique2 from tenk1 where (unique1, unique2) < any (select ten, ten from tenk1 where hundred < 3) and unique1 <= 20 order by 1; -- Also check row comparison with an indexable condition explain (costs off) select thousand, tenthous from tenk1 where (thousand, tenthous) >= (997, 5000) order by thousand, tenthous; select thousand, tenthous from tenk1 where (thousand, tenthous) >= (997, 5000) order by thousand, tenthous; explain (costs off) select thousand, tenthous, four from tenk1 where (thousand, tenthous, four) > (998, 5000, 3) order by thousand, tenthous; select thousand, tenthous, four from tenk1 where (thousand, tenthous, four) > (998, 5000, 3) order by thousand, tenthous; explain (costs off) select thousand, tenthous from tenk1 where (998, 5000) < (thousand, tenthous) order by thousand, tenthous; select thousand, tenthous from tenk1 where (998, 5000) < (thousand, tenthous) order by thousand, tenthous; explain (costs off) select thousand, hundred from tenk1 where (998, 5000) < (thousand, hundred) order by thousand, hundred; select thousand, hundred from tenk1 where (998, 5000) < (thousand, hundred) order by thousand, hundred; -- Test case for bug #14010: indexed row comparisons fail with nulls create temp table test_table (a text, b text); insert into test_table values ('a', 'b'); insert into test_table select 'a', null from generate_series(1,1000); insert into test_table values ('b', 'a'); create index on test_table (a,b); set enable_sort = off; explain (costs off) select a,b from test_table where (a,b) > ('a','a') order by a,b; select a,b from test_table where (a,b) > ('a','a') order by a,b; reset enable_sort; -- Check row comparisons with IN select * from int8_tbl i8 where i8 in (row(123,456)); -- fail, type mismatch explain (costs off) select * from int8_tbl i8 where i8 in (row(123,456)::int8_tbl, '(4567890123456789,123)'); select * from int8_tbl i8 where i8 in (row(123,456)::int8_tbl, '(4567890123456789,123)'); -- Check ability to select columns from an anonymous rowtype select (row(1, 2.0)).f1; select (row(1, 2.0)).f2; select (row(1, 2.0)).nosuch; -- fail select (row(1, 2.0)).*; select (r).f1 from (select row(1, 2.0) as r) ss; select (r).f3 from (select row(1, 2.0) as r) ss; -- fail select (r).* from (select row(1, 2.0) as r) ss; -- Check some corner cases involving empty rowtypes select ROW(); select ROW() IS NULL; select ROW() = ROW(); -- Check ability to create arrays of anonymous rowtypes select array[ row(1,2), row(3,4), row(5,6) ]; -- Check ability to compare an anonymous row to elements of an array select row(1,1.1) = any (array[ row(7,7.7), row(1,1.1), row(0,0.0) ]); select row(1,1.1) = any (array[ row(7,7.7), row(1,1.0), row(0,0.0) ]); -- Check behavior with a non-comparable rowtype create type cantcompare as (p point, r float8); create temp table cc (f1 cantcompare); insert into cc values('("(1,2)",3)'); insert into cc values('("(4,5)",6)'); select * from cc order by f1; -- fail, but should complain about cantcompare -- -- Tests for record_{eq,cmp} -- create type testtype1 as (a int, b int); -- all true select row(1, 2)::testtype1 < row(1, 3)::testtype1; select row(1, 2)::testtype1 <= row(1, 3)::testtype1; select row(1, 2)::testtype1 = row(1, 2)::testtype1; select row(1, 2)::testtype1 <> row(1, 3)::testtype1; select row(1, 3)::testtype1 >= row(1, 2)::testtype1; select row(1, 3)::testtype1 > row(1, 2)::testtype1; -- all false select row(1, -2)::testtype1 < row(1, -3)::testtype1; select row(1, -2)::testtype1 <= row(1, -3)::testtype1; select row(1, -2)::testtype1 = row(1, -3)::testtype1; select row(1, -2)::testtype1 <> row(1, -2)::testtype1; select row(1, -3)::testtype1 >= row(1, -2)::testtype1; select row(1, -3)::testtype1 > row(1, -2)::testtype1; -- true, but see *< below select row(1, -2)::testtype1 < row(1, 3)::testtype1; -- mismatches create type testtype3 as (a int, b text); select row(1, 2)::testtype1 < row(1, 'abc')::testtype3; select row(1, 2)::testtype1 <> row(1, 'abc')::testtype3; create type testtype5 as (a int); select row(1, 2)::testtype1 < row(1)::testtype5; select row(1, 2)::testtype1 <> row(1)::testtype5; -- non-comparable types create type testtype6 as (a int, b point); select row(1, '(1,2)')::testtype6 < row(1, '(1,3)')::testtype6; select row(1, '(1,2)')::testtype6 <> row(1, '(1,3)')::testtype6; drop type testtype1, testtype3, testtype5, testtype6; -- -- Tests for record_image_{eq,cmp} -- create type testtype1 as (a int, b int); -- all true select row(1, 2)::testtype1 *< row(1, 3)::testtype1; select row(1, 2)::testtype1 *<= row(1, 3)::testtype1; select row(1, 2)::testtype1 *= row(1, 2)::testtype1; select row(1, 2)::testtype1 *<> row(1, 3)::testtype1; select row(1, 3)::testtype1 *>= row(1, 2)::testtype1; select row(1, 3)::testtype1 *> row(1, 2)::testtype1; -- all false select row(1, -2)::testtype1 *< row(1, -3)::testtype1; select row(1, -2)::testtype1 *<= row(1, -3)::testtype1; select row(1, -2)::testtype1 *= row(1, -3)::testtype1; select row(1, -2)::testtype1 *<> row(1, -2)::testtype1; select row(1, -3)::testtype1 *>= row(1, -2)::testtype1; select row(1, -3)::testtype1 *> row(1, -2)::testtype1; -- This returns the "wrong" order because record_image_cmp works on -- unsigned datums without knowing about the actual data type. select row(1, -2)::testtype1 *< row(1, 3)::testtype1; -- other types create type testtype2 as (a smallint, b bool); -- byval different sizes select row(1, true)::testtype2 *< row(2, true)::testtype2; select row(-2, true)::testtype2 *< row(-1, true)::testtype2; select row(0, false)::testtype2 *< row(0, true)::testtype2; select row(0, false)::testtype2 *<> row(0, true)::testtype2; create type testtype3 as (a int, b text); -- variable length select row(1, 'abc')::testtype3 *< row(1, 'abd')::testtype3; select row(1, 'abc')::testtype3 *< row(1, 'abcd')::testtype3; select row(1, 'abc')::testtype3 *> row(1, 'abd')::testtype3; select row(1, 'abc')::testtype3 *<> row(1, 'abd')::testtype3; create type testtype4 as (a int, b point); -- by ref, fixed length select row(1, '(1,2)')::testtype4 *< row(1, '(1,3)')::testtype4; select row(1, '(1,2)')::testtype4 *<> row(1, '(1,3)')::testtype4; -- mismatches select row(1, 2)::testtype1 *< row(1, 'abc')::testtype3; select row(1, 2)::testtype1 *<> row(1, 'abc')::testtype3; create type testtype5 as (a int); select row(1, 2)::testtype1 *< row(1)::testtype5; select row(1, 2)::testtype1 *<> row(1)::testtype5; -- non-comparable types create type testtype6 as (a int, b point); select row(1, '(1,2)')::testtype6 *< row(1, '(1,3)')::testtype6; select row(1, '(1,2)')::testtype6 *>= row(1, '(1,3)')::testtype6; select row(1, '(1,2)')::testtype6 *<> row(1, '(1,3)')::testtype6; -- anonymous rowtypes in coldeflists select q.a, q.b = row(2), q.c = array[row(3)], q.d = row(row(4)) from unnest(array[row(1, row(2), array[row(3)], row(row(4))), row(2, row(3), array[row(4)], row(row(5)))]) as q(a int, b record, c record[], d record); drop type testtype1, testtype2, testtype3, testtype4, testtype5, testtype6; -- -- Test case derived from bug #5716: check multiple uses of a rowtype result -- BEGIN; CREATE TABLE price ( id SERIAL PRIMARY KEY, active BOOLEAN NOT NULL, price NUMERIC ); CREATE TYPE price_input AS ( id INTEGER, price NUMERIC ); CREATE TYPE price_key AS ( id INTEGER ); CREATE FUNCTION price_key_from_table(price) RETURNS price_key AS $$ SELECT $1.id $$ LANGUAGE SQL; CREATE FUNCTION price_key_from_input(price_input) RETURNS price_key AS $$ SELECT $1.id $$ LANGUAGE SQL; insert into price values (1,false,42), (10,false,100), (11,true,17.99); UPDATE price SET active = true, price = input_prices.price FROM unnest(ARRAY[(10, 123.00), (11, 99.99)]::price_input[]) input_prices WHERE price_key_from_table(price.*) = price_key_from_input(input_prices.*); select * from price; rollback; -- -- Test case derived from bug #9085: check * qualification of composite -- parameters for SQL functions -- create temp table compos (f1 int, f2 text); create function fcompos1(v compos) returns void as $$ insert into compos values (v); -- fail $$ language sql; create function fcompos1(v compos) returns void as $$ insert into compos values (v.*); $$ language sql; create function fcompos2(v compos) returns void as $$ select fcompos1(v); $$ language sql; create function fcompos3(v compos) returns void as $$ select fcompos1(fcompos3.v.*); $$ language sql; select fcompos1(row(1,'one')); select fcompos2(row(2,'two')); select fcompos3(row(3,'three')); select * from compos; -- -- We allow I/O conversion casts from composite types to strings to be -- invoked via cast syntax, but not functional syntax. This is because -- the latter is too prone to be invoked unintentionally. -- select cast (fullname as text) from fullname; select fullname::text from fullname; select text(fullname) from fullname; -- error select fullname.text from fullname; -- error -- same, but RECORD instead of named composite type: select cast (row('Jim', 'Beam') as text); select (row('Jim', 'Beam'))::text; select text(row('Jim', 'Beam')); -- error select (row('Jim', 'Beam')).text; -- error -- -- Check the equivalence of functional and column notation -- insert into fullname values ('Joe', 'Blow'); select f.last from fullname f; select last(f) from fullname f; create function longname(fullname) returns text language sql as $$select $1.first || ' ' || $1.last$$; select f.longname from fullname f; select longname(f) from fullname f; -- Starting in v11, the notational form does matter if there's ambiguity alter table fullname add column longname text; select f.longname from fullname f; select longname(f) from fullname f; -- -- Test that composite values are seen to have the correct column names -- (bug #11210 and other reports) -- select row_to_json(i) from int8_tbl i; select row_to_json(i) from int8_tbl i(x,y); create temp view vv1 as select * from int8_tbl; select row_to_json(i) from vv1 i; select row_to_json(i) from vv1 i(x,y); select row_to_json(ss) from (select q1, q2 from int8_tbl) as ss; select row_to_json(ss) from (select q1, q2 from int8_tbl offset 0) as ss; select row_to_json(ss) from (select q1 as a, q2 as b from int8_tbl) as ss; select row_to_json(ss) from (select q1 as a, q2 as b from int8_tbl offset 0) as ss; select row_to_json(ss) from (select q1 as a, q2 as b from int8_tbl) as ss(x,y); select row_to_json(ss) from (select q1 as a, q2 as b from int8_tbl offset 0) as ss(x,y); explain (costs off) select row_to_json(q) from (select thousand, tenthous from tenk1 where thousand = 42 and tenthous < 2000 offset 0) q; select row_to_json(q) from (select thousand, tenthous from tenk1 where thousand = 42 and tenthous < 2000 offset 0) q; select row_to_json(q) from (select thousand as x, tenthous as y from tenk1 where thousand = 42 and tenthous < 2000 offset 0) q; select row_to_json(q) from (select thousand as x, tenthous as y from tenk1 where thousand = 42 and tenthous < 2000 offset 0) q(a,b); create temp table tt1 as select * from int8_tbl limit 2; create temp table tt2 () inherits(tt1); insert into tt2 values(0,0); select row_to_json(r) from (select q2,q1 from tt1 offset 0) r; -- check no-op rowtype conversions create temp table tt3 () inherits(tt2); insert into tt3 values(33,44); select row_to_json(tt3::tt2::tt1) from tt3; -- -- IS [NOT] NULL should not recurse into nested composites (bug #14235) -- explain (verbose, costs off) select r, r is null as isnull, r is not null as isnotnull from (values (1,row(1,2)), (1,row(null,null)), (1,null), (null,row(1,2)), (null,row(null,null)), (null,null) ) r(a,b); select r, r is null as isnull, r is not null as isnotnull from (values (1,row(1,2)), (1,row(null,null)), (1,null), (null,row(1,2)), (null,row(null,null)), (null,null) ) r(a,b); explain (verbose, costs off) with r(a,b) as materialized (values (1,row(1,2)), (1,row(null,null)), (1,null), (null,row(1,2)), (null,row(null,null)), (null,null) ) select r, r is null as isnull, r is not null as isnotnull from r; with r(a,b) as materialized (values (1,row(1,2)), (1,row(null,null)), (1,null), (null,row(1,2)), (null,row(null,null)), (null,null) ) select r, r is null as isnull, r is not null as isnotnull from r; -- -- Tests for component access / FieldSelect -- CREATE TABLE compositetable(a text, b text); INSERT INTO compositetable(a, b) VALUES('fa', 'fb'); -- composite type columns can't directly be accessed (error) SELECT d.a FROM (SELECT compositetable AS d FROM compositetable) s; -- but can be accessed with proper parens SELECT (d).a, (d).b FROM (SELECT compositetable AS d FROM compositetable) s; -- system columns can't be accessed in composite types (error) SELECT (d).ctid FROM (SELECT compositetable AS d FROM compositetable) s; -- accessing non-existing column in NULL datum errors out SELECT (NULL::compositetable).nonexistent; -- existing column in a NULL composite yield NULL SELECT (NULL::compositetable).a; -- oids can't be accessed in composite types (error) SELECT (NULL::compositetable).oid; DROP TABLE compositetable; libpg_query-13-2.1.0/test/sql/postgres_regress/rules.sql000066400000000000000000001165731413137616400233310ustar00rootroot00000000000000-- -- RULES -- From Jan's original setup_ruletest.sql and run_ruletest.sql -- - thomas 1998-09-13 -- -- -- Tables and rules for the view test -- create table rtest_t1 (a int4, b int4); create table rtest_t2 (a int4, b int4); create table rtest_t3 (a int4, b int4); create view rtest_v1 as select * from rtest_t1; create rule rtest_v1_ins as on insert to rtest_v1 do instead insert into rtest_t1 values (new.a, new.b); create rule rtest_v1_upd as on update to rtest_v1 do instead update rtest_t1 set a = new.a, b = new.b where a = old.a; create rule rtest_v1_del as on delete to rtest_v1 do instead delete from rtest_t1 where a = old.a; -- Test comments COMMENT ON RULE rtest_v1_bad ON rtest_v1 IS 'bad rule'; COMMENT ON RULE rtest_v1_del ON rtest_v1 IS 'delete rule'; COMMENT ON RULE rtest_v1_del ON rtest_v1 IS NULL; -- -- Tables and rules for the constraint update/delete test -- -- Note: -- Now that we have multiple action rule support, we check -- both possible syntaxes to define them (The last action -- can but must not have a semicolon at the end). -- create table rtest_system (sysname text, sysdesc text); create table rtest_interface (sysname text, ifname text); create table rtest_person (pname text, pdesc text); create table rtest_admin (pname text, sysname text); create rule rtest_sys_upd as on update to rtest_system do also ( update rtest_interface set sysname = new.sysname where sysname = old.sysname; update rtest_admin set sysname = new.sysname where sysname = old.sysname ); create rule rtest_sys_del as on delete to rtest_system do also ( delete from rtest_interface where sysname = old.sysname; delete from rtest_admin where sysname = old.sysname; ); create rule rtest_pers_upd as on update to rtest_person do also update rtest_admin set pname = new.pname where pname = old.pname; create rule rtest_pers_del as on delete to rtest_person do also delete from rtest_admin where pname = old.pname; -- -- Tables and rules for the logging test -- create table rtest_emp (ename char(20), salary money); create table rtest_emplog (ename char(20), who name, action char(10), newsal money, oldsal money); create table rtest_empmass (ename char(20), salary money); create rule rtest_emp_ins as on insert to rtest_emp do insert into rtest_emplog values (new.ename, current_user, 'hired', new.salary, '0.00'); create rule rtest_emp_upd as on update to rtest_emp where new.salary != old.salary do insert into rtest_emplog values (new.ename, current_user, 'honored', new.salary, old.salary); create rule rtest_emp_del as on delete to rtest_emp do insert into rtest_emplog values (old.ename, current_user, 'fired', '0.00', old.salary); -- -- Tables and rules for the multiple cascaded qualified instead -- rule test -- create table rtest_t4 (a int4, b text); create table rtest_t5 (a int4, b text); create table rtest_t6 (a int4, b text); create table rtest_t7 (a int4, b text); create table rtest_t8 (a int4, b text); create table rtest_t9 (a int4, b text); create rule rtest_t4_ins1 as on insert to rtest_t4 where new.a >= 10 and new.a < 20 do instead insert into rtest_t5 values (new.a, new.b); create rule rtest_t4_ins2 as on insert to rtest_t4 where new.a >= 20 and new.a < 30 do insert into rtest_t6 values (new.a, new.b); create rule rtest_t5_ins as on insert to rtest_t5 where new.a > 15 do insert into rtest_t7 values (new.a, new.b); create rule rtest_t6_ins as on insert to rtest_t6 where new.a > 25 do instead insert into rtest_t8 values (new.a, new.b); -- -- Tables and rules for the rule fire order test -- -- As of PG 7.3, the rules should fire in order by name, regardless -- of INSTEAD attributes or creation order. -- create table rtest_order1 (a int4); create table rtest_order2 (a int4, b int4, c text); create sequence rtest_seq; create rule rtest_order_r3 as on insert to rtest_order1 do instead insert into rtest_order2 values (new.a, nextval('rtest_seq'), 'rule 3 - this should run 3rd'); create rule rtest_order_r4 as on insert to rtest_order1 where a < 100 do instead insert into rtest_order2 values (new.a, nextval('rtest_seq'), 'rule 4 - this should run 4th'); create rule rtest_order_r2 as on insert to rtest_order1 do insert into rtest_order2 values (new.a, nextval('rtest_seq'), 'rule 2 - this should run 2nd'); create rule rtest_order_r1 as on insert to rtest_order1 do instead insert into rtest_order2 values (new.a, nextval('rtest_seq'), 'rule 1 - this should run 1st'); -- -- Tables and rules for the instead nothing test -- create table rtest_nothn1 (a int4, b text); create table rtest_nothn2 (a int4, b text); create table rtest_nothn3 (a int4, b text); create table rtest_nothn4 (a int4, b text); create rule rtest_nothn_r1 as on insert to rtest_nothn1 where new.a >= 10 and new.a < 20 do instead nothing; create rule rtest_nothn_r2 as on insert to rtest_nothn1 where new.a >= 30 and new.a < 40 do instead nothing; create rule rtest_nothn_r3 as on insert to rtest_nothn2 where new.a >= 100 do instead insert into rtest_nothn3 values (new.a, new.b); create rule rtest_nothn_r4 as on insert to rtest_nothn2 do instead nothing; -- -- Tests on a view that is select * of a table -- and has insert/update/delete instead rules to -- behave close like the real table. -- -- -- We need test date later -- insert into rtest_t2 values (1, 21); insert into rtest_t2 values (2, 22); insert into rtest_t2 values (3, 23); insert into rtest_t3 values (1, 31); insert into rtest_t3 values (2, 32); insert into rtest_t3 values (3, 33); insert into rtest_t3 values (4, 34); insert into rtest_t3 values (5, 35); -- insert values insert into rtest_v1 values (1, 11); insert into rtest_v1 values (2, 12); select * from rtest_v1; -- delete with constant expression delete from rtest_v1 where a = 1; select * from rtest_v1; insert into rtest_v1 values (1, 11); delete from rtest_v1 where b = 12; select * from rtest_v1; insert into rtest_v1 values (2, 12); insert into rtest_v1 values (2, 13); select * from rtest_v1; ** Remember the delete rule on rtest_v1: It says ** DO INSTEAD DELETE FROM rtest_t1 WHERE a = old.a ** So this time both rows with a = 2 must get deleted \p \r delete from rtest_v1 where b = 12; select * from rtest_v1; delete from rtest_v1; -- insert select insert into rtest_v1 select * from rtest_t2; select * from rtest_v1; delete from rtest_v1; -- same with swapped targetlist insert into rtest_v1 (b, a) select b, a from rtest_t2; select * from rtest_v1; -- now with only one target attribute insert into rtest_v1 (a) select a from rtest_t3; select * from rtest_v1; select * from rtest_v1 where b isnull; -- let attribute a differ (must be done on rtest_t1 - see above) update rtest_t1 set a = a + 10 where b isnull; delete from rtest_v1 where b isnull; select * from rtest_v1; -- now updates with constant expression update rtest_v1 set b = 42 where a = 2; select * from rtest_v1; update rtest_v1 set b = 99 where b = 42; select * from rtest_v1; update rtest_v1 set b = 88 where b < 50; select * from rtest_v1; delete from rtest_v1; insert into rtest_v1 select rtest_t2.a, rtest_t3.b from rtest_t2, rtest_t3 where rtest_t2.a = rtest_t3.a; select * from rtest_v1; -- updates in a mergejoin update rtest_v1 set b = rtest_t2.b from rtest_t2 where rtest_v1.a = rtest_t2.a; select * from rtest_v1; insert into rtest_v1 select * from rtest_t3; select * from rtest_v1; update rtest_t1 set a = a + 10 where b > 30; select * from rtest_v1; update rtest_v1 set a = rtest_t3.a + 20 from rtest_t3 where rtest_v1.b = rtest_t3.b; select * from rtest_v1; -- -- Test for constraint updates/deletes -- insert into rtest_system values ('orion', 'Linux Jan Wieck'); insert into rtest_system values ('notjw', 'WinNT Jan Wieck (notebook)'); insert into rtest_system values ('neptun', 'Fileserver'); insert into rtest_interface values ('orion', 'eth0'); insert into rtest_interface values ('orion', 'eth1'); insert into rtest_interface values ('notjw', 'eth0'); insert into rtest_interface values ('neptun', 'eth0'); insert into rtest_person values ('jw', 'Jan Wieck'); insert into rtest_person values ('bm', 'Bruce Momjian'); insert into rtest_admin values ('jw', 'orion'); insert into rtest_admin values ('jw', 'notjw'); insert into rtest_admin values ('bm', 'neptun'); update rtest_system set sysname = 'pluto' where sysname = 'neptun'; select * from rtest_interface; select * from rtest_admin; update rtest_person set pname = 'jwieck' where pdesc = 'Jan Wieck'; -- Note: use ORDER BY here to ensure consistent output across all systems. -- The above UPDATE affects two rows with equal keys, so they could be -- updated in either order depending on the whim of the local qsort(). select * from rtest_admin order by pname, sysname; delete from rtest_system where sysname = 'orion'; select * from rtest_interface; select * from rtest_admin; -- -- Rule qualification test -- insert into rtest_emp values ('wiecc', '5000.00'); insert into rtest_emp values ('gates', '80000.00'); update rtest_emp set ename = 'wiecx' where ename = 'wiecc'; update rtest_emp set ename = 'wieck', salary = '6000.00' where ename = 'wiecx'; update rtest_emp set salary = '7000.00' where ename = 'wieck'; delete from rtest_emp where ename = 'gates'; select ename, who = current_user as "matches user", action, newsal, oldsal from rtest_emplog order by ename, action, newsal; insert into rtest_empmass values ('meyer', '4000.00'); insert into rtest_empmass values ('maier', '5000.00'); insert into rtest_empmass values ('mayr', '6000.00'); insert into rtest_emp select * from rtest_empmass; select ename, who = current_user as "matches user", action, newsal, oldsal from rtest_emplog order by ename, action, newsal; update rtest_empmass set salary = salary + '1000.00'; update rtest_emp set salary = rtest_empmass.salary from rtest_empmass where rtest_emp.ename = rtest_empmass.ename; select ename, who = current_user as "matches user", action, newsal, oldsal from rtest_emplog order by ename, action, newsal; delete from rtest_emp using rtest_empmass where rtest_emp.ename = rtest_empmass.ename; select ename, who = current_user as "matches user", action, newsal, oldsal from rtest_emplog order by ename, action, newsal; -- -- Multiple cascaded qualified instead rule test -- insert into rtest_t4 values (1, 'Record should go to rtest_t4'); insert into rtest_t4 values (2, 'Record should go to rtest_t4'); insert into rtest_t4 values (10, 'Record should go to rtest_t5'); insert into rtest_t4 values (15, 'Record should go to rtest_t5'); insert into rtest_t4 values (19, 'Record should go to rtest_t5 and t7'); insert into rtest_t4 values (20, 'Record should go to rtest_t4 and t6'); insert into rtest_t4 values (26, 'Record should go to rtest_t4 and t8'); insert into rtest_t4 values (28, 'Record should go to rtest_t4 and t8'); insert into rtest_t4 values (30, 'Record should go to rtest_t4'); insert into rtest_t4 values (40, 'Record should go to rtest_t4'); select * from rtest_t4; select * from rtest_t5; select * from rtest_t6; select * from rtest_t7; select * from rtest_t8; delete from rtest_t4; delete from rtest_t5; delete from rtest_t6; delete from rtest_t7; delete from rtest_t8; insert into rtest_t9 values (1, 'Record should go to rtest_t4'); insert into rtest_t9 values (2, 'Record should go to rtest_t4'); insert into rtest_t9 values (10, 'Record should go to rtest_t5'); insert into rtest_t9 values (15, 'Record should go to rtest_t5'); insert into rtest_t9 values (19, 'Record should go to rtest_t5 and t7'); insert into rtest_t9 values (20, 'Record should go to rtest_t4 and t6'); insert into rtest_t9 values (26, 'Record should go to rtest_t4 and t8'); insert into rtest_t9 values (28, 'Record should go to rtest_t4 and t8'); insert into rtest_t9 values (30, 'Record should go to rtest_t4'); insert into rtest_t9 values (40, 'Record should go to rtest_t4'); insert into rtest_t4 select * from rtest_t9 where a < 20; select * from rtest_t4; select * from rtest_t5; select * from rtest_t6; select * from rtest_t7; select * from rtest_t8; insert into rtest_t4 select * from rtest_t9 where b ~ 'and t8'; select * from rtest_t4; select * from rtest_t5; select * from rtest_t6; select * from rtest_t7; select * from rtest_t8; insert into rtest_t4 select a + 1, b from rtest_t9 where a in (20, 30, 40); select * from rtest_t4; select * from rtest_t5; select * from rtest_t6; select * from rtest_t7; select * from rtest_t8; -- -- Check that the ordering of rules fired is correct -- insert into rtest_order1 values (1); select * from rtest_order2; -- -- Check if instead nothing w/without qualification works -- insert into rtest_nothn1 values (1, 'want this'); insert into rtest_nothn1 values (2, 'want this'); insert into rtest_nothn1 values (10, 'don''t want this'); insert into rtest_nothn1 values (19, 'don''t want this'); insert into rtest_nothn1 values (20, 'want this'); insert into rtest_nothn1 values (29, 'want this'); insert into rtest_nothn1 values (30, 'don''t want this'); insert into rtest_nothn1 values (39, 'don''t want this'); insert into rtest_nothn1 values (40, 'want this'); insert into rtest_nothn1 values (50, 'want this'); insert into rtest_nothn1 values (60, 'want this'); select * from rtest_nothn1; insert into rtest_nothn2 values (10, 'too small'); insert into rtest_nothn2 values (50, 'too small'); insert into rtest_nothn2 values (100, 'OK'); insert into rtest_nothn2 values (200, 'OK'); select * from rtest_nothn2; select * from rtest_nothn3; delete from rtest_nothn1; delete from rtest_nothn2; delete from rtest_nothn3; insert into rtest_nothn4 values (1, 'want this'); insert into rtest_nothn4 values (2, 'want this'); insert into rtest_nothn4 values (10, 'don''t want this'); insert into rtest_nothn4 values (19, 'don''t want this'); insert into rtest_nothn4 values (20, 'want this'); insert into rtest_nothn4 values (29, 'want this'); insert into rtest_nothn4 values (30, 'don''t want this'); insert into rtest_nothn4 values (39, 'don''t want this'); insert into rtest_nothn4 values (40, 'want this'); insert into rtest_nothn4 values (50, 'want this'); insert into rtest_nothn4 values (60, 'want this'); insert into rtest_nothn1 select * from rtest_nothn4; select * from rtest_nothn1; delete from rtest_nothn4; insert into rtest_nothn4 values (10, 'too small'); insert into rtest_nothn4 values (50, 'too small'); insert into rtest_nothn4 values (100, 'OK'); insert into rtest_nothn4 values (200, 'OK'); insert into rtest_nothn2 select * from rtest_nothn4; select * from rtest_nothn2; select * from rtest_nothn3; create table rtest_view1 (a int4, b text, v bool); create table rtest_view2 (a int4); create table rtest_view3 (a int4, b text); create table rtest_view4 (a int4, b text, c int4); create view rtest_vview1 as select a, b from rtest_view1 X where 0 < (select count(*) from rtest_view2 Y where Y.a = X.a); create view rtest_vview2 as select a, b from rtest_view1 where v; create view rtest_vview3 as select a, b from rtest_vview2 X where 0 < (select count(*) from rtest_view2 Y where Y.a = X.a); create view rtest_vview4 as select X.a, X.b, count(Y.a) as refcount from rtest_view1 X, rtest_view2 Y where X.a = Y.a group by X.a, X.b; create function rtest_viewfunc1(int4) returns int4 as 'select count(*)::int4 from rtest_view2 where a = $1' language sql; create view rtest_vview5 as select a, b, rtest_viewfunc1(a) as refcount from rtest_view1; insert into rtest_view1 values (1, 'item 1', 't'); insert into rtest_view1 values (2, 'item 2', 't'); insert into rtest_view1 values (3, 'item 3', 't'); insert into rtest_view1 values (4, 'item 4', 'f'); insert into rtest_view1 values (5, 'item 5', 't'); insert into rtest_view1 values (6, 'item 6', 'f'); insert into rtest_view1 values (7, 'item 7', 't'); insert into rtest_view1 values (8, 'item 8', 't'); insert into rtest_view2 values (2); insert into rtest_view2 values (2); insert into rtest_view2 values (4); insert into rtest_view2 values (5); insert into rtest_view2 values (7); insert into rtest_view2 values (7); insert into rtest_view2 values (7); insert into rtest_view2 values (7); select * from rtest_vview1; select * from rtest_vview2; select * from rtest_vview3; select * from rtest_vview4 order by a, b; select * from rtest_vview5; insert into rtest_view3 select * from rtest_vview1 where a < 7; select * from rtest_view3; delete from rtest_view3; insert into rtest_view3 select * from rtest_vview2 where a != 5 and b !~ '2'; select * from rtest_view3; delete from rtest_view3; insert into rtest_view3 select * from rtest_vview3; select * from rtest_view3; delete from rtest_view3; insert into rtest_view4 select * from rtest_vview4 where 3 > refcount; select * from rtest_view4 order by a, b; delete from rtest_view4; insert into rtest_view4 select * from rtest_vview5 where a > 2 and refcount = 0; select * from rtest_view4; delete from rtest_view4; -- -- Test for computations in views -- create table rtest_comp ( part text, unit char(4), size float ); create table rtest_unitfact ( unit char(4), factor float ); create view rtest_vcomp as select X.part, (X.size * Y.factor) as size_in_cm from rtest_comp X, rtest_unitfact Y where X.unit = Y.unit; insert into rtest_unitfact values ('m', 100.0); insert into rtest_unitfact values ('cm', 1.0); insert into rtest_unitfact values ('inch', 2.54); insert into rtest_comp values ('p1', 'm', 5.0); insert into rtest_comp values ('p2', 'm', 3.0); insert into rtest_comp values ('p3', 'cm', 5.0); insert into rtest_comp values ('p4', 'cm', 15.0); insert into rtest_comp values ('p5', 'inch', 7.0); insert into rtest_comp values ('p6', 'inch', 4.4); select * from rtest_vcomp order by part; select * from rtest_vcomp where size_in_cm > 10.0 order by size_in_cm using >; -- -- In addition run the (slightly modified) queries from the -- programmers manual section on the rule system. -- CREATE TABLE shoe_data ( shoename char(10), -- primary key sh_avail integer, -- available # of pairs slcolor char(10), -- preferred shoelace color slminlen float, -- minimum shoelace length slmaxlen float, -- maximum shoelace length slunit char(8) -- length unit ); CREATE TABLE shoelace_data ( sl_name char(10), -- primary key sl_avail integer, -- available # of pairs sl_color char(10), -- shoelace color sl_len float, -- shoelace length sl_unit char(8) -- length unit ); CREATE TABLE unit ( un_name char(8), -- the primary key un_fact float -- factor to transform to cm ); CREATE VIEW shoe AS SELECT sh.shoename, sh.sh_avail, sh.slcolor, sh.slminlen, sh.slminlen * un.un_fact AS slminlen_cm, sh.slmaxlen, sh.slmaxlen * un.un_fact AS slmaxlen_cm, sh.slunit FROM shoe_data sh, unit un WHERE sh.slunit = un.un_name; CREATE VIEW shoelace AS SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, s.sl_len * u.un_fact AS sl_len_cm FROM shoelace_data s, unit u WHERE s.sl_unit = u.un_name; CREATE VIEW shoe_ready AS SELECT rsh.shoename, rsh.sh_avail, rsl.sl_name, rsl.sl_avail, int4smaller(rsh.sh_avail, rsl.sl_avail) AS total_avail FROM shoe rsh, shoelace rsl WHERE rsl.sl_color = rsh.slcolor AND rsl.sl_len_cm >= rsh.slminlen_cm AND rsl.sl_len_cm <= rsh.slmaxlen_cm; INSERT INTO unit VALUES ('cm', 1.0); INSERT INTO unit VALUES ('m', 100.0); INSERT INTO unit VALUES ('inch', 2.54); INSERT INTO shoe_data VALUES ('sh1', 2, 'black', 70.0, 90.0, 'cm'); INSERT INTO shoe_data VALUES ('sh2', 0, 'black', 30.0, 40.0, 'inch'); INSERT INTO shoe_data VALUES ('sh3', 4, 'brown', 50.0, 65.0, 'cm'); INSERT INTO shoe_data VALUES ('sh4', 3, 'brown', 40.0, 50.0, 'inch'); INSERT INTO shoelace_data VALUES ('sl1', 5, 'black', 80.0, 'cm'); INSERT INTO shoelace_data VALUES ('sl2', 6, 'black', 100.0, 'cm'); INSERT INTO shoelace_data VALUES ('sl3', 0, 'black', 35.0 , 'inch'); INSERT INTO shoelace_data VALUES ('sl4', 8, 'black', 40.0 , 'inch'); INSERT INTO shoelace_data VALUES ('sl5', 4, 'brown', 1.0 , 'm'); INSERT INTO shoelace_data VALUES ('sl6', 0, 'brown', 0.9 , 'm'); INSERT INTO shoelace_data VALUES ('sl7', 7, 'brown', 60 , 'cm'); INSERT INTO shoelace_data VALUES ('sl8', 1, 'brown', 40 , 'inch'); -- SELECTs in doc SELECT * FROM shoelace ORDER BY sl_name; SELECT * FROM shoe_ready WHERE total_avail >= 2 ORDER BY 1; CREATE TABLE shoelace_log ( sl_name char(10), -- shoelace changed sl_avail integer, -- new available value log_who name, -- who did it log_when timestamp -- when ); -- Want "log_who" to be CURRENT_USER, -- but that is non-portable for the regression test -- - thomas 1999-02-21 CREATE RULE log_shoelace AS ON UPDATE TO shoelace_data WHERE NEW.sl_avail != OLD.sl_avail DO INSERT INTO shoelace_log VALUES ( NEW.sl_name, NEW.sl_avail, 'Al Bundy', 'epoch' ); UPDATE shoelace_data SET sl_avail = 6 WHERE sl_name = 'sl7'; SELECT * FROM shoelace_log; CREATE RULE shoelace_ins AS ON INSERT TO shoelace DO INSTEAD INSERT INTO shoelace_data VALUES ( NEW.sl_name, NEW.sl_avail, NEW.sl_color, NEW.sl_len, NEW.sl_unit); CREATE RULE shoelace_upd AS ON UPDATE TO shoelace DO INSTEAD UPDATE shoelace_data SET sl_name = NEW.sl_name, sl_avail = NEW.sl_avail, sl_color = NEW.sl_color, sl_len = NEW.sl_len, sl_unit = NEW.sl_unit WHERE sl_name = OLD.sl_name; CREATE RULE shoelace_del AS ON DELETE TO shoelace DO INSTEAD DELETE FROM shoelace_data WHERE sl_name = OLD.sl_name; CREATE TABLE shoelace_arrive ( arr_name char(10), arr_quant integer ); CREATE TABLE shoelace_ok ( ok_name char(10), ok_quant integer ); CREATE RULE shoelace_ok_ins AS ON INSERT TO shoelace_ok DO INSTEAD UPDATE shoelace SET sl_avail = sl_avail + NEW.ok_quant WHERE sl_name = NEW.ok_name; INSERT INTO shoelace_arrive VALUES ('sl3', 10); INSERT INTO shoelace_arrive VALUES ('sl6', 20); INSERT INTO shoelace_arrive VALUES ('sl8', 20); SELECT * FROM shoelace ORDER BY sl_name; insert into shoelace_ok select * from shoelace_arrive; SELECT * FROM shoelace ORDER BY sl_name; SELECT * FROM shoelace_log ORDER BY sl_name; CREATE VIEW shoelace_obsolete AS SELECT * FROM shoelace WHERE NOT EXISTS (SELECT shoename FROM shoe WHERE slcolor = sl_color); CREATE VIEW shoelace_candelete AS SELECT * FROM shoelace_obsolete WHERE sl_avail = 0; insert into shoelace values ('sl9', 0, 'pink', 35.0, 'inch', 0.0); insert into shoelace values ('sl10', 1000, 'magenta', 40.0, 'inch', 0.0); -- Unsupported (even though a similar updatable view construct is) insert into shoelace values ('sl10', 1000, 'magenta', 40.0, 'inch', 0.0) on conflict do nothing; SELECT * FROM shoelace_obsolete ORDER BY sl_len_cm; SELECT * FROM shoelace_candelete; DELETE FROM shoelace WHERE EXISTS (SELECT * FROM shoelace_candelete WHERE sl_name = shoelace.sl_name); SELECT * FROM shoelace ORDER BY sl_name; SELECT * FROM shoe ORDER BY shoename; SELECT count(*) FROM shoe; -- -- Simple test of qualified ON INSERT ... this did not work in 7.0 ... -- create table rules_foo (f1 int); create table rules_foo2 (f1 int); create rule rules_foorule as on insert to rules_foo where f1 < 100 do instead nothing; insert into rules_foo values(1); insert into rules_foo values(1001); select * from rules_foo; drop rule rules_foorule on rules_foo; -- this should fail because f1 is not exposed for unqualified reference: create rule rules_foorule as on insert to rules_foo where f1 < 100 do instead insert into rules_foo2 values (f1); -- this is the correct way: create rule rules_foorule as on insert to rules_foo where f1 < 100 do instead insert into rules_foo2 values (new.f1); insert into rules_foo values(2); insert into rules_foo values(100); select * from rules_foo; select * from rules_foo2; drop rule rules_foorule on rules_foo; drop table rules_foo; drop table rules_foo2; -- -- Test rules containing INSERT ... SELECT, which is a very ugly special -- case as of 7.1. Example is based on bug report from Joel Burton. -- create table pparent (pid int, txt text); insert into pparent values (1,'parent1'); insert into pparent values (2,'parent2'); create table cchild (pid int, descrip text); insert into cchild values (1,'descrip1'); create view vview as select pparent.pid, txt, descrip from pparent left join cchild using (pid); create rule rrule as on update to vview do instead ( insert into cchild (pid, descrip) select old.pid, new.descrip where old.descrip isnull; update cchild set descrip = new.descrip where cchild.pid = old.pid; ); select * from vview; update vview set descrip='test1' where pid=1; select * from vview; update vview set descrip='test2' where pid=2; select * from vview; update vview set descrip='test3' where pid=3; select * from vview; select * from cchild; drop rule rrule on vview; drop view vview; drop table pparent; drop table cchild; -- -- Check that ruleutils are working -- -- temporarily disable fancy output, so view changes create less diff noise \a\t SELECT viewname, definition FROM pg_views WHERE schemaname IN ('pg_catalog', 'public') ORDER BY viewname; SELECT tablename, rulename, definition FROM pg_rules WHERE schemaname IN ('pg_catalog', 'public') ORDER BY tablename, rulename; -- restore normal output mode \a\t -- -- CREATE OR REPLACE RULE -- CREATE TABLE ruletest_tbl (a int, b int); CREATE TABLE ruletest_tbl2 (a int, b int); CREATE OR REPLACE RULE myrule AS ON INSERT TO ruletest_tbl DO INSTEAD INSERT INTO ruletest_tbl2 VALUES (10, 10); INSERT INTO ruletest_tbl VALUES (99, 99); CREATE OR REPLACE RULE myrule AS ON INSERT TO ruletest_tbl DO INSTEAD INSERT INTO ruletest_tbl2 VALUES (1000, 1000); INSERT INTO ruletest_tbl VALUES (99, 99); SELECT * FROM ruletest_tbl2; -- Check that rewrite rules splitting one INSERT into multiple -- conditional statements does not disable FK checking. create table rule_and_refint_t1 ( id1a integer, id1b integer, primary key (id1a, id1b) ); create table rule_and_refint_t2 ( id2a integer, id2c integer, primary key (id2a, id2c) ); create table rule_and_refint_t3 ( id3a integer, id3b integer, id3c integer, data text, primary key (id3a, id3b, id3c), foreign key (id3a, id3b) references rule_and_refint_t1 (id1a, id1b), foreign key (id3a, id3c) references rule_and_refint_t2 (id2a, id2c) ); insert into rule_and_refint_t1 values (1, 11); insert into rule_and_refint_t1 values (1, 12); insert into rule_and_refint_t1 values (2, 21); insert into rule_and_refint_t1 values (2, 22); insert into rule_and_refint_t2 values (1, 11); insert into rule_and_refint_t2 values (1, 12); insert into rule_and_refint_t2 values (2, 21); insert into rule_and_refint_t2 values (2, 22); insert into rule_and_refint_t3 values (1, 11, 11, 'row1'); insert into rule_and_refint_t3 values (1, 11, 12, 'row2'); insert into rule_and_refint_t3 values (1, 12, 11, 'row3'); insert into rule_and_refint_t3 values (1, 12, 12, 'row4'); insert into rule_and_refint_t3 values (1, 11, 13, 'row5'); insert into rule_and_refint_t3 values (1, 13, 11, 'row6'); -- Ordinary table insert into rule_and_refint_t3 values (1, 13, 11, 'row6') on conflict do nothing; -- rule not fired, so fk violation insert into rule_and_refint_t3 values (1, 13, 11, 'row6') on conflict (id3a, id3b, id3c) do update set id3b = excluded.id3b; -- rule fired, so unsupported insert into shoelace values ('sl9', 0, 'pink', 35.0, 'inch', 0.0) on conflict (sl_name) do update set sl_avail = excluded.sl_avail; create rule rule_and_refint_t3_ins as on insert to rule_and_refint_t3 where (exists (select 1 from rule_and_refint_t3 where (((rule_and_refint_t3.id3a = new.id3a) and (rule_and_refint_t3.id3b = new.id3b)) and (rule_and_refint_t3.id3c = new.id3c)))) do instead update rule_and_refint_t3 set data = new.data where (((rule_and_refint_t3.id3a = new.id3a) and (rule_and_refint_t3.id3b = new.id3b)) and (rule_and_refint_t3.id3c = new.id3c)); insert into rule_and_refint_t3 values (1, 11, 13, 'row7'); insert into rule_and_refint_t3 values (1, 13, 11, 'row8'); -- -- disallow dropping a view's rule (bug #5072) -- create view rules_fooview as select 'rules_foo'::text; drop rule "_RETURN" on rules_fooview; drop view rules_fooview; -- -- test conversion of table to view (needed to load some pg_dump files) -- create table rules_fooview (x int, y text); select xmin, * from rules_fooview; create rule "_RETURN" as on select to rules_fooview do instead select 1 as x, 'aaa'::text as y; select * from rules_fooview; select xmin, * from rules_fooview; -- fail, views don't have such a column select reltoastrelid, relkind, relfrozenxid from pg_class where oid = 'rules_fooview'::regclass; drop view rules_fooview; -- cannot convert an inheritance parent or child to a view, though create table rules_fooview (x int, y text); create table rules_fooview_child () inherits (rules_fooview); create rule "_RETURN" as on select to rules_fooview do instead select 1 as x, 'aaa'::text as y; create rule "_RETURN" as on select to rules_fooview_child do instead select 1 as x, 'aaa'::text as y; drop table rules_fooview cascade; -- likewise, converting a partitioned table or partition to view is not allowed create table rules_fooview (x int, y text) partition by list (x); create rule "_RETURN" as on select to rules_fooview do instead select 1 as x, 'aaa'::text as y; create table rules_fooview_part partition of rules_fooview for values in (1); create rule "_RETURN" as on select to rules_fooview_part do instead select 1 as x, 'aaa'::text as y; drop table rules_fooview; -- -- check for planner problems with complex inherited UPDATES -- create table id (id serial primary key, name text); -- currently, must respecify PKEY for each inherited subtable create table test_1 (id integer primary key) inherits (id); create table test_2 (id integer primary key) inherits (id); create table test_3 (id integer primary key) inherits (id); insert into test_1 (name) values ('Test 1'); insert into test_1 (name) values ('Test 2'); insert into test_2 (name) values ('Test 3'); insert into test_2 (name) values ('Test 4'); insert into test_3 (name) values ('Test 5'); insert into test_3 (name) values ('Test 6'); create view id_ordered as select * from id order by id; create rule update_id_ordered as on update to id_ordered do instead update id set name = new.name where id = old.id; select * from id_ordered; update id_ordered set name = 'update 2' where id = 2; update id_ordered set name = 'update 4' where id = 4; update id_ordered set name = 'update 5' where id = 5; select * from id_ordered; drop table id cascade; -- -- check corner case where an entirely-dummy subplan is created by -- constraint exclusion -- create temp table t1 (a integer primary key); create temp table t1_1 (check (a >= 0 and a < 10)) inherits (t1); create temp table t1_2 (check (a >= 10 and a < 20)) inherits (t1); create rule t1_ins_1 as on insert to t1 where new.a >= 0 and new.a < 10 do instead insert into t1_1 values (new.a); create rule t1_ins_2 as on insert to t1 where new.a >= 10 and new.a < 20 do instead insert into t1_2 values (new.a); create rule t1_upd_1 as on update to t1 where old.a >= 0 and old.a < 10 do instead update t1_1 set a = new.a where a = old.a; create rule t1_upd_2 as on update to t1 where old.a >= 10 and old.a < 20 do instead update t1_2 set a = new.a where a = old.a; set constraint_exclusion = on; insert into t1 select * from generate_series(5,19,1) g; update t1 set a = 4 where a = 5; select * from only t1; select * from only t1_1; select * from only t1_2; reset constraint_exclusion; -- test various flavors of pg_get_viewdef() select pg_get_viewdef('shoe'::regclass) as unpretty; select pg_get_viewdef('shoe'::regclass,true) as pretty; select pg_get_viewdef('shoe'::regclass,0) as prettier; -- -- check multi-row VALUES in rules -- create table rules_src(f1 int, f2 int); create table rules_log(f1 int, f2 int, tag text); insert into rules_src values(1,2), (11,12); create rule r1 as on update to rules_src do also insert into rules_log values(old.*, 'old'), (new.*, 'new'); update rules_src set f2 = f2 + 1; update rules_src set f2 = f2 * 10; select * from rules_src; select * from rules_log; create rule r2 as on update to rules_src do also values(old.*, 'old'), (new.*, 'new'); update rules_src set f2 = f2 / 10; select * from rules_src; select * from rules_log; create rule r3 as on delete to rules_src do notify rules_src_deletion; \d+ rules_src -- -- Ensure an aliased target relation for insert is correctly deparsed. -- create rule r4 as on insert to rules_src do instead insert into rules_log AS trgt SELECT NEW.* RETURNING trgt.f1, trgt.f2; create rule r5 as on update to rules_src do instead UPDATE rules_log AS trgt SET tag = 'updated' WHERE trgt.f1 = new.f1; \d+ rules_src -- -- Also check multiassignment deparsing. -- create table rule_t1(f1 int, f2 int); create table rule_dest(f1 int, f2 int[], tag text); create rule rr as on update to rule_t1 do instead UPDATE rule_dest trgt SET (f2[1], f1, tag) = (SELECT new.f2, new.f1, 'updated'::varchar) WHERE trgt.f1 = new.f1 RETURNING new.*; \d+ rule_t1 drop table rule_t1, rule_dest; -- -- check alter rename rule -- CREATE TABLE rule_t1 (a INT); CREATE VIEW rule_v1 AS SELECT * FROM rule_t1; CREATE RULE InsertRule AS ON INSERT TO rule_v1 DO INSTEAD INSERT INTO rule_t1 VALUES(new.a); ALTER RULE InsertRule ON rule_v1 RENAME to NewInsertRule; INSERT INTO rule_v1 VALUES(1); SELECT * FROM rule_v1; \d+ rule_v1 -- -- error conditions for alter rename rule -- ALTER RULE InsertRule ON rule_v1 RENAME TO NewInsertRule; -- doesn't exist ALTER RULE NewInsertRule ON rule_v1 RENAME TO "_RETURN"; -- already exists ALTER RULE "_RETURN" ON rule_v1 RENAME TO abc; -- ON SELECT rule cannot be renamed DROP VIEW rule_v1; DROP TABLE rule_t1; -- -- check display of VALUES in view definitions -- create view rule_v1 as values(1,2); \d+ rule_v1 alter table rule_v1 rename column column2 to q2; \d+ rule_v1 drop view rule_v1; create view rule_v1(x) as values(1,2); \d+ rule_v1 drop view rule_v1; create view rule_v1(x) as select * from (values(1,2)) v; \d+ rule_v1 drop view rule_v1; create view rule_v1(x) as select * from (values(1,2)) v(q,w); \d+ rule_v1 drop view rule_v1; -- -- Check DO INSTEAD rules with ON CONFLICT -- CREATE TABLE hats ( hat_name char(10) primary key, hat_color char(10) -- hat color ); CREATE TABLE hat_data ( hat_name char(10), hat_color char(10) -- hat color ); create unique index hat_data_unique_idx on hat_data (hat_name COLLATE "C" bpchar_pattern_ops); -- DO NOTHING with ON CONFLICT CREATE RULE hat_nosert AS ON INSERT TO hats DO INSTEAD INSERT INTO hat_data VALUES ( NEW.hat_name, NEW.hat_color) ON CONFLICT (hat_name COLLATE "C" bpchar_pattern_ops) WHERE hat_color = 'green' DO NOTHING RETURNING *; SELECT definition FROM pg_rules WHERE tablename = 'hats' ORDER BY rulename; -- Works (projects row) INSERT INTO hats VALUES ('h7', 'black') RETURNING *; -- Works (does nothing) INSERT INTO hats VALUES ('h7', 'black') RETURNING *; SELECT tablename, rulename, definition FROM pg_rules WHERE tablename = 'hats'; DROP RULE hat_nosert ON hats; -- DO NOTHING without ON CONFLICT CREATE RULE hat_nosert_all AS ON INSERT TO hats DO INSTEAD INSERT INTO hat_data VALUES ( NEW.hat_name, NEW.hat_color) ON CONFLICT DO NOTHING RETURNING *; SELECT definition FROM pg_rules WHERE tablename = 'hats' ORDER BY rulename; DROP RULE hat_nosert_all ON hats; -- Works (does nothing) INSERT INTO hats VALUES ('h7', 'black') RETURNING *; -- DO UPDATE with a WHERE clause CREATE RULE hat_upsert AS ON INSERT TO hats DO INSTEAD INSERT INTO hat_data VALUES ( NEW.hat_name, NEW.hat_color) ON CONFLICT (hat_name) DO UPDATE SET hat_name = hat_data.hat_name, hat_color = excluded.hat_color WHERE excluded.hat_color <> 'forbidden' AND hat_data.* != excluded.* RETURNING *; SELECT definition FROM pg_rules WHERE tablename = 'hats' ORDER BY rulename; -- Works (does upsert) INSERT INTO hats VALUES ('h8', 'black') RETURNING *; SELECT * FROM hat_data WHERE hat_name = 'h8'; INSERT INTO hats VALUES ('h8', 'white') RETURNING *; SELECT * FROM hat_data WHERE hat_name = 'h8'; INSERT INTO hats VALUES ('h8', 'forbidden') RETURNING *; SELECT * FROM hat_data WHERE hat_name = 'h8'; SELECT tablename, rulename, definition FROM pg_rules WHERE tablename = 'hats'; -- ensure explain works for on insert conflict rules explain (costs off) INSERT INTO hats VALUES ('h8', 'forbidden') RETURNING *; -- ensure upserting into a rule, with a CTE (different offsets!) works WITH data(hat_name, hat_color) AS MATERIALIZED ( VALUES ('h8', 'green'), ('h9', 'blue'), ('h7', 'forbidden') ) INSERT INTO hats SELECT * FROM data RETURNING *; EXPLAIN (costs off) WITH data(hat_name, hat_color) AS MATERIALIZED ( VALUES ('h8', 'green'), ('h9', 'blue'), ('h7', 'forbidden') ) INSERT INTO hats SELECT * FROM data RETURNING *; SELECT * FROM hat_data WHERE hat_name IN ('h8', 'h9', 'h7') ORDER BY hat_name; DROP RULE hat_upsert ON hats; drop table hats; drop table hat_data; -- test for pg_get_functiondef properly regurgitating SET parameters -- Note that the function is kept around to stress pg_dump. CREATE FUNCTION func_with_set_params() RETURNS integer AS 'select 1;' LANGUAGE SQL SET search_path TO PG_CATALOG SET extra_float_digits TO 2 SET work_mem TO '4MB' SET datestyle to iso, mdy SET local_preload_libraries TO "Mixed/Case", 'c:/''a"/path', '', '0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789' IMMUTABLE STRICT; SELECT pg_get_functiondef('func_with_set_params()'::regprocedure); -- tests for pg_get_*def with invalid objects SELECT pg_get_constraintdef(0); SELECT pg_get_functiondef(0); SELECT pg_get_indexdef(0); SELECT pg_get_ruledef(0); SELECT pg_get_statisticsobjdef(0); SELECT pg_get_triggerdef(0); SELECT pg_get_viewdef(0); SELECT pg_get_function_arguments(0); SELECT pg_get_function_identity_arguments(0); SELECT pg_get_function_result(0); SELECT pg_get_function_arg_default(0, 0); SELECT pg_get_function_arg_default('pg_class'::regclass, 0); SELECT pg_get_partkeydef(0); -- test rename for a rule defined on a partitioned table CREATE TABLE rules_parted_table (a int) PARTITION BY LIST (a); CREATE TABLE rules_parted_table_1 PARTITION OF rules_parted_table FOR VALUES IN (1); CREATE RULE rules_parted_table_insert AS ON INSERT to rules_parted_table DO INSTEAD INSERT INTO rules_parted_table_1 VALUES (NEW.*); ALTER RULE rules_parted_table_insert ON rules_parted_table RENAME TO rules_parted_table_insert_redirect; DROP TABLE rules_parted_table; -- -- Test enabling/disabling -- CREATE TABLE ruletest1 (a int); CREATE TABLE ruletest2 (b int); CREATE RULE rule1 AS ON INSERT TO ruletest1 DO INSTEAD INSERT INTO ruletest2 VALUES (NEW.*); INSERT INTO ruletest1 VALUES (1); ALTER TABLE ruletest1 DISABLE RULE rule1; INSERT INTO ruletest1 VALUES (2); ALTER TABLE ruletest1 ENABLE RULE rule1; SET session_replication_role = replica; INSERT INTO ruletest1 VALUES (3); ALTER TABLE ruletest1 ENABLE REPLICA RULE rule1; INSERT INTO ruletest1 VALUES (4); RESET session_replication_role; INSERT INTO ruletest1 VALUES (5); SELECT * FROM ruletest1; SELECT * FROM ruletest2; DROP TABLE ruletest1; DROP TABLE ruletest2; libpg_query-13-2.1.0/test/sql/postgres_regress/sanity_check.sql000066400000000000000000000026571413137616400246400ustar00rootroot00000000000000VACUUM; -- -- sanity check, if we don't have indices the test will take years to -- complete. But skip TOAST relations (since they will have varying -- names depending on the current OID counter) as well as temp tables -- of other backends (to avoid timing-dependent behavior). -- -- temporarily disable fancy output, so catalog changes create less diff noise \a\t SELECT relname, relhasindex FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = relnamespace WHERE relkind IN ('r', 'p') AND (nspname ~ '^pg_temp_') IS NOT TRUE ORDER BY relname; -- restore normal output mode \a\t -- -- another sanity check: every system catalog that has OIDs should have -- a unique index on OID. This ensures that the OIDs will be unique, -- even after the OID counter wraps around. -- We exclude non-system tables from the check by looking at nspname. -- SELECT relname, nspname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = relnamespace JOIN pg_attribute a ON (attrelid = c.oid AND attname = 'oid') WHERE relkind = 'r' and c.oid < 16384 AND ((nspname ~ '^pg_') IS NOT FALSE) AND NOT EXISTS (SELECT 1 FROM pg_index i WHERE indrelid = c.oid AND indkey[0] = a.attnum AND indnatts = 1 AND indisunique AND indimmediate); -- check that relations without storage don't have relfilenode SELECT relname, relkind FROM pg_class WHERE relkind IN ('v', 'c', 'f', 'p', 'I') AND relfilenode <> 0; libpg_query-13-2.1.0/test/sql/postgres_regress/security_label.sql000066400000000000000000000030501413137616400251660ustar00rootroot00000000000000-- -- Test for facilities of security label -- -- initial setups SET client_min_messages TO 'warning'; DROP ROLE IF EXISTS regress_seclabel_user1; DROP ROLE IF EXISTS regress_seclabel_user2; RESET client_min_messages; CREATE USER regress_seclabel_user1 WITH CREATEROLE; CREATE USER regress_seclabel_user2; CREATE TABLE seclabel_tbl1 (a int, b text); CREATE TABLE seclabel_tbl2 (x int, y text); CREATE VIEW seclabel_view1 AS SELECT * FROM seclabel_tbl2; CREATE FUNCTION seclabel_four() RETURNS integer AS $$SELECT 4$$ language sql; CREATE DOMAIN seclabel_domain AS text; ALTER TABLE seclabel_tbl1 OWNER TO regress_seclabel_user1; ALTER TABLE seclabel_tbl2 OWNER TO regress_seclabel_user2; -- -- Test of SECURITY LABEL statement without a plugin -- SECURITY LABEL ON TABLE seclabel_tbl1 IS 'classified'; -- fail SECURITY LABEL FOR 'dummy' ON TABLE seclabel_tbl1 IS 'classified'; -- fail SECURITY LABEL ON TABLE seclabel_tbl1 IS '...invalid label...'; -- fail SECURITY LABEL ON TABLE seclabel_tbl3 IS 'unclassified'; -- fail SECURITY LABEL ON ROLE regress_seclabel_user1 IS 'classified'; -- fail SECURITY LABEL FOR 'dummy' ON ROLE regress_seclabel_user1 IS 'classified'; -- fail SECURITY LABEL ON ROLE regress_seclabel_user1 IS '...invalid label...'; -- fail SECURITY LABEL ON ROLE regress_seclabel_user3 IS 'unclassified'; -- fail -- clean up objects DROP FUNCTION seclabel_four(); DROP DOMAIN seclabel_domain; DROP VIEW seclabel_view1; DROP TABLE seclabel_tbl1; DROP TABLE seclabel_tbl2; DROP USER regress_seclabel_user1; DROP USER regress_seclabel_user2; libpg_query-13-2.1.0/test/sql/postgres_regress/select.sql000066400000000000000000000175561413137616400234570ustar00rootroot00000000000000-- -- SELECT -- -- btree index -- awk '{if($1<10){print;}else{next;}}' onek.data | sort +0n -1 -- SELECT * FROM onek WHERE onek.unique1 < 10 ORDER BY onek.unique1; -- -- awk '{if($1<20){print $1,$14;}else{next;}}' onek.data | sort +0nr -1 -- SELECT onek.unique1, onek.stringu1 FROM onek WHERE onek.unique1 < 20 ORDER BY unique1 using >; -- -- awk '{if($1>980){print $1,$14;}else{next;}}' onek.data | sort +1d -2 -- SELECT onek.unique1, onek.stringu1 FROM onek WHERE onek.unique1 > 980 ORDER BY stringu1 using <; -- -- awk '{if($1>980){print $1,$16;}else{next;}}' onek.data | -- sort +1d -2 +0nr -1 -- SELECT onek.unique1, onek.string4 FROM onek WHERE onek.unique1 > 980 ORDER BY string4 using <, unique1 using >; -- -- awk '{if($1>980){print $1,$16;}else{next;}}' onek.data | -- sort +1dr -2 +0n -1 -- SELECT onek.unique1, onek.string4 FROM onek WHERE onek.unique1 > 980 ORDER BY string4 using >, unique1 using <; -- -- awk '{if($1<20){print $1,$16;}else{next;}}' onek.data | -- sort +0nr -1 +1d -2 -- SELECT onek.unique1, onek.string4 FROM onek WHERE onek.unique1 < 20 ORDER BY unique1 using >, string4 using <; -- -- awk '{if($1<20){print $1,$16;}else{next;}}' onek.data | -- sort +0n -1 +1dr -2 -- SELECT onek.unique1, onek.string4 FROM onek WHERE onek.unique1 < 20 ORDER BY unique1 using <, string4 using >; -- -- test partial btree indexes -- -- As of 7.2, planner probably won't pick an indexscan without stats, -- so ANALYZE first. Also, we want to prevent it from picking a bitmapscan -- followed by sort, because that could hide index ordering problems. -- ANALYZE onek2; SET enable_seqscan TO off; SET enable_bitmapscan TO off; SET enable_sort TO off; -- -- awk '{if($1<10){print $0;}else{next;}}' onek.data | sort +0n -1 -- SELECT onek2.* FROM onek2 WHERE onek2.unique1 < 10; -- -- awk '{if($1<20){print $1,$14;}else{next;}}' onek.data | sort +0nr -1 -- SELECT onek2.unique1, onek2.stringu1 FROM onek2 WHERE onek2.unique1 < 20 ORDER BY unique1 using >; -- -- awk '{if($1>980){print $1,$14;}else{next;}}' onek.data | sort +1d -2 -- SELECT onek2.unique1, onek2.stringu1 FROM onek2 WHERE onek2.unique1 > 980; RESET enable_seqscan; RESET enable_bitmapscan; RESET enable_sort; SELECT two, stringu1, ten, string4 INTO TABLE tmp FROM onek; -- -- awk '{print $1,$2;}' person.data | -- awk '{if(NF!=2){print $3,$2;}else{print;}}' - emp.data | -- awk '{if(NF!=2){print $3,$2;}else{print;}}' - student.data | -- awk 'BEGIN{FS=" ";}{if(NF!=2){print $4,$5;}else{print;}}' - stud_emp.data -- -- SELECT name, age FROM person*; ??? check if different SELECT p.name, p.age FROM person* p; -- -- awk '{print $1,$2;}' person.data | -- awk '{if(NF!=2){print $3,$2;}else{print;}}' - emp.data | -- awk '{if(NF!=2){print $3,$2;}else{print;}}' - student.data | -- awk 'BEGIN{FS=" ";}{if(NF!=1){print $4,$5;}else{print;}}' - stud_emp.data | -- sort +1nr -2 -- SELECT p.name, p.age FROM person* p ORDER BY age using >, name; -- -- Test some cases involving whole-row Var referencing a subquery -- select foo from (select 1 offset 0) as foo; select foo from (select null offset 0) as foo; select foo from (select 'xyzzy',1,null offset 0) as foo; -- -- Test VALUES lists -- select * from onek, (values(147, 'RFAAAA'), (931, 'VJAAAA')) as v (i, j) WHERE onek.unique1 = v.i and onek.stringu1 = v.j; -- a more complex case -- looks like we're coding lisp :-) select * from onek, (values ((select i from (values(10000), (2), (389), (1000), (2000), ((select 10029))) as foo(i) order by i asc limit 1))) bar (i) where onek.unique1 = bar.i; -- try VALUES in a subquery select * from onek where (unique1,ten) in (values (1,1), (20,0), (99,9), (17,99)) order by unique1; -- VALUES is also legal as a standalone query or a set-operation member VALUES (1,2), (3,4+4), (7,77.7); VALUES (1,2), (3,4+4), (7,77.7) UNION ALL SELECT 2+2, 57 UNION ALL TABLE int8_tbl; -- -- Test ORDER BY options -- CREATE TEMP TABLE foo (f1 int); INSERT INTO foo VALUES (42),(3),(10),(7),(null),(null),(1); SELECT * FROM foo ORDER BY f1; SELECT * FROM foo ORDER BY f1 ASC; -- same thing SELECT * FROM foo ORDER BY f1 NULLS FIRST; SELECT * FROM foo ORDER BY f1 DESC; SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; -- check if indexscans do the right things CREATE INDEX fooi ON foo (f1); SET enable_sort = false; SELECT * FROM foo ORDER BY f1; SELECT * FROM foo ORDER BY f1 NULLS FIRST; SELECT * FROM foo ORDER BY f1 DESC; SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; DROP INDEX fooi; CREATE INDEX fooi ON foo (f1 DESC); SELECT * FROM foo ORDER BY f1; SELECT * FROM foo ORDER BY f1 NULLS FIRST; SELECT * FROM foo ORDER BY f1 DESC; SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; DROP INDEX fooi; CREATE INDEX fooi ON foo (f1 DESC NULLS LAST); SELECT * FROM foo ORDER BY f1; SELECT * FROM foo ORDER BY f1 NULLS FIRST; SELECT * FROM foo ORDER BY f1 DESC; SELECT * FROM foo ORDER BY f1 DESC NULLS LAST; -- -- Test planning of some cases with partial indexes -- -- partial index is usable explain (costs off) select * from onek2 where unique2 = 11 and stringu1 = 'ATAAAA'; select * from onek2 where unique2 = 11 and stringu1 = 'ATAAAA'; -- actually run the query with an analyze to use the partial index explain (costs off, analyze on, timing off, summary off) select * from onek2 where unique2 = 11 and stringu1 = 'ATAAAA'; explain (costs off) select unique2 from onek2 where unique2 = 11 and stringu1 = 'ATAAAA'; select unique2 from onek2 where unique2 = 11 and stringu1 = 'ATAAAA'; -- partial index predicate implies clause, so no need for retest explain (costs off) select * from onek2 where unique2 = 11 and stringu1 < 'B'; select * from onek2 where unique2 = 11 and stringu1 < 'B'; explain (costs off) select unique2 from onek2 where unique2 = 11 and stringu1 < 'B'; select unique2 from onek2 where unique2 = 11 and stringu1 < 'B'; -- but if it's an update target, must retest anyway explain (costs off) select unique2 from onek2 where unique2 = 11 and stringu1 < 'B' for update; select unique2 from onek2 where unique2 = 11 and stringu1 < 'B' for update; -- partial index is not applicable explain (costs off) select unique2 from onek2 where unique2 = 11 and stringu1 < 'C'; select unique2 from onek2 where unique2 = 11 and stringu1 < 'C'; -- partial index implies clause, but bitmap scan must recheck predicate anyway SET enable_indexscan TO off; explain (costs off) select unique2 from onek2 where unique2 = 11 and stringu1 < 'B'; select unique2 from onek2 where unique2 = 11 and stringu1 < 'B'; RESET enable_indexscan; -- check multi-index cases too explain (costs off) select unique1, unique2 from onek2 where (unique2 = 11 or unique1 = 0) and stringu1 < 'B'; select unique1, unique2 from onek2 where (unique2 = 11 or unique1 = 0) and stringu1 < 'B'; explain (costs off) select unique1, unique2 from onek2 where (unique2 = 11 and stringu1 < 'B') or unique1 = 0; select unique1, unique2 from onek2 where (unique2 = 11 and stringu1 < 'B') or unique1 = 0; -- -- Test some corner cases that have been known to confuse the planner -- -- ORDER BY on a constant doesn't really need any sorting SELECT 1 AS x ORDER BY x; -- But ORDER BY on a set-valued expression does create function sillysrf(int) returns setof int as 'values (1),(10),(2),($1)' language sql immutable; select sillysrf(42); select sillysrf(-1) order by 1; drop function sillysrf(int); -- X = X isn't a no-op, it's effectively X IS NOT NULL assuming = is strict -- (see bug #5084) select * from (values (2),(null),(1)) v(k) where k = k order by k; select * from (values (2),(null),(1)) v(k) where k = k; -- Test partitioned tables with no partitions, which should be handled the -- same as the non-inheritance case when expanding its RTE. create table list_parted_tbl (a int,b int) partition by list (a); create table list_parted_tbl1 partition of list_parted_tbl for values in (1) partition by list(b); explain (costs off) select * from list_parted_tbl; drop table list_parted_tbl; libpg_query-13-2.1.0/test/sql/postgres_regress/select_distinct.sql000066400000000000000000000066101413137616400253450ustar00rootroot00000000000000-- -- SELECT_DISTINCT -- -- -- awk '{print $3;}' onek.data | sort -n | uniq -- SELECT DISTINCT two FROM tmp ORDER BY 1; -- -- awk '{print $5;}' onek.data | sort -n | uniq -- SELECT DISTINCT ten FROM tmp ORDER BY 1; -- -- awk '{print $16;}' onek.data | sort -d | uniq -- SELECT DISTINCT string4 FROM tmp ORDER BY 1; -- -- awk '{print $3,$16,$5;}' onek.data | sort -d | uniq | -- sort +0n -1 +1d -2 +2n -3 -- SELECT DISTINCT two, string4, ten FROM tmp ORDER BY two using <, string4 using <, ten using <; -- -- awk '{print $2;}' person.data | -- awk '{if(NF!=1){print $2;}else{print;}}' - emp.data | -- awk '{if(NF!=1){print $2;}else{print;}}' - student.data | -- awk 'BEGIN{FS=" ";}{if(NF!=1){print $5;}else{print;}}' - stud_emp.data | -- sort -n -r | uniq -- SELECT DISTINCT p.age FROM person* p ORDER BY age using >; -- -- Check mentioning same column more than once -- EXPLAIN (VERBOSE, COSTS OFF) SELECT count(*) FROM (SELECT DISTINCT two, four, two FROM tenk1) ss; SELECT count(*) FROM (SELECT DISTINCT two, four, two FROM tenk1) ss; -- -- Compare results between plans using sorting and plans using hash -- aggregation. Force spilling in both cases by setting work_mem low. -- SET work_mem='64kB'; -- Produce results with sorting. SET enable_hashagg=FALSE; SET jit_above_cost=0; EXPLAIN (costs off) SELECT DISTINCT g%1000 FROM generate_series(0,9999) g; CREATE TABLE distinct_group_1 AS SELECT DISTINCT g%1000 FROM generate_series(0,9999) g; SET jit_above_cost TO DEFAULT; CREATE TABLE distinct_group_2 AS SELECT DISTINCT (g%1000)::text FROM generate_series(0,9999) g; SET enable_hashagg=TRUE; -- Produce results with hash aggregation. SET enable_sort=FALSE; SET jit_above_cost=0; EXPLAIN (costs off) SELECT DISTINCT g%1000 FROM generate_series(0,9999) g; CREATE TABLE distinct_hash_1 AS SELECT DISTINCT g%1000 FROM generate_series(0,9999) g; SET jit_above_cost TO DEFAULT; CREATE TABLE distinct_hash_2 AS SELECT DISTINCT (g%1000)::text FROM generate_series(0,9999) g; SET enable_sort=TRUE; SET work_mem TO DEFAULT; -- Compare results (SELECT * FROM distinct_hash_1 EXCEPT SELECT * FROM distinct_group_1) UNION ALL (SELECT * FROM distinct_group_1 EXCEPT SELECT * FROM distinct_hash_1); (SELECT * FROM distinct_hash_1 EXCEPT SELECT * FROM distinct_group_1) UNION ALL (SELECT * FROM distinct_group_1 EXCEPT SELECT * FROM distinct_hash_1); DROP TABLE distinct_hash_1; DROP TABLE distinct_hash_2; DROP TABLE distinct_group_1; DROP TABLE distinct_group_2; -- -- Also, some tests of IS DISTINCT FROM, which doesn't quite deserve its -- very own regression file. -- CREATE TEMP TABLE disttable (f1 integer); INSERT INTO DISTTABLE VALUES(1); INSERT INTO DISTTABLE VALUES(2); INSERT INTO DISTTABLE VALUES(3); INSERT INTO DISTTABLE VALUES(NULL); -- basic cases SELECT f1, f1 IS DISTINCT FROM 2 as "not 2" FROM disttable; SELECT f1, f1 IS DISTINCT FROM NULL as "not null" FROM disttable; SELECT f1, f1 IS DISTINCT FROM f1 as "false" FROM disttable; SELECT f1, f1 IS DISTINCT FROM f1+1 as "not null" FROM disttable; -- check that optimizer constant-folds it properly SELECT 1 IS DISTINCT FROM 2 as "yes"; SELECT 2 IS DISTINCT FROM 2 as "no"; SELECT 2 IS DISTINCT FROM null as "yes"; SELECT null IS DISTINCT FROM null as "no"; -- negated form SELECT 1 IS NOT DISTINCT FROM 2 as "no"; SELECT 2 IS NOT DISTINCT FROM 2 as "yes"; SELECT 2 IS NOT DISTINCT FROM null as "no"; SELECT null IS NOT DISTINCT FROM null as "yes"; libpg_query-13-2.1.0/test/sql/postgres_regress/select_distinct_on.sql000066400000000000000000000011101413137616400260270ustar00rootroot00000000000000-- -- SELECT_DISTINCT_ON -- SELECT DISTINCT ON (string4) string4, two, ten FROM tmp ORDER BY string4 using <, two using >, ten using <; -- this will fail due to conflict of ordering requirements SELECT DISTINCT ON (string4, ten) string4, two, ten FROM tmp ORDER BY string4 using <, two using <, ten using <; SELECT DISTINCT ON (string4, ten) string4, ten, two FROM tmp ORDER BY string4 using <, ten using >, two using <; -- bug #5049: early 8.4.x chokes on volatile DISTINCT ON clauses select distinct on (1) floor(random()) as r, f1 from int4_tbl order by 1,2; libpg_query-13-2.1.0/test/sql/postgres_regress/select_having.sql000066400000000000000000000033251413137616400250000ustar00rootroot00000000000000-- -- SELECT_HAVING -- -- load test data CREATE TABLE test_having (a int, b int, c char(8), d char); INSERT INTO test_having VALUES (0, 1, 'XXXX', 'A'); INSERT INTO test_having VALUES (1, 2, 'AAAA', 'b'); INSERT INTO test_having VALUES (2, 2, 'AAAA', 'c'); INSERT INTO test_having VALUES (3, 3, 'BBBB', 'D'); INSERT INTO test_having VALUES (4, 3, 'BBBB', 'e'); INSERT INTO test_having VALUES (5, 3, 'bbbb', 'F'); INSERT INTO test_having VALUES (6, 4, 'cccc', 'g'); INSERT INTO test_having VALUES (7, 4, 'cccc', 'h'); INSERT INTO test_having VALUES (8, 4, 'CCCC', 'I'); INSERT INTO test_having VALUES (9, 4, 'CCCC', 'j'); SELECT b, c FROM test_having GROUP BY b, c HAVING count(*) = 1 ORDER BY b, c; -- HAVING is effectively equivalent to WHERE in this case SELECT b, c FROM test_having GROUP BY b, c HAVING b = 3 ORDER BY b, c; SELECT lower(c), count(c) FROM test_having GROUP BY lower(c) HAVING count(*) > 2 OR min(a) = max(a) ORDER BY lower(c); SELECT c, max(a) FROM test_having GROUP BY c HAVING count(*) > 2 OR min(a) = max(a) ORDER BY c; -- test degenerate cases involving HAVING without GROUP BY -- Per SQL spec, these should generate 0 or 1 row, even without aggregates SELECT min(a), max(a) FROM test_having HAVING min(a) = max(a); SELECT min(a), max(a) FROM test_having HAVING min(a) < max(a); -- errors: ungrouped column references SELECT a FROM test_having HAVING min(a) < max(a); SELECT 1 AS one FROM test_having HAVING a > 1; -- the really degenerate case: need not scan table at all SELECT 1 AS one FROM test_having HAVING 1 > 2; SELECT 1 AS one FROM test_having HAVING 1 < 2; -- and just to prove that we aren't scanning the table: SELECT 1 AS one FROM test_having WHERE 1/a = 1 HAVING 1 < 2; DROP TABLE test_having; libpg_query-13-2.1.0/test/sql/postgres_regress/select_implicit.sql000066400000000000000000000125621413137616400253410ustar00rootroot00000000000000-- -- SELECT_IMPLICIT -- Test cases for queries with ordering terms missing from the target list. -- This used to be called "junkfilter.sql". -- The parser uses the term "resjunk" to handle these cases. -- - thomas 1998-07-09 -- -- load test data CREATE TABLE test_missing_target (a int, b int, c char(8), d char); INSERT INTO test_missing_target VALUES (0, 1, 'XXXX', 'A'); INSERT INTO test_missing_target VALUES (1, 2, 'ABAB', 'b'); INSERT INTO test_missing_target VALUES (2, 2, 'ABAB', 'c'); INSERT INTO test_missing_target VALUES (3, 3, 'BBBB', 'D'); INSERT INTO test_missing_target VALUES (4, 3, 'BBBB', 'e'); INSERT INTO test_missing_target VALUES (5, 3, 'bbbb', 'F'); INSERT INTO test_missing_target VALUES (6, 4, 'cccc', 'g'); INSERT INTO test_missing_target VALUES (7, 4, 'cccc', 'h'); INSERT INTO test_missing_target VALUES (8, 4, 'CCCC', 'I'); INSERT INTO test_missing_target VALUES (9, 4, 'CCCC', 'j'); -- w/ existing GROUP BY target SELECT c, count(*) FROM test_missing_target GROUP BY test_missing_target.c ORDER BY c; -- w/o existing GROUP BY target using a relation name in GROUP BY clause SELECT count(*) FROM test_missing_target GROUP BY test_missing_target.c ORDER BY c; -- w/o existing GROUP BY target and w/o existing a different ORDER BY target -- failure expected SELECT count(*) FROM test_missing_target GROUP BY a ORDER BY b; -- w/o existing GROUP BY target and w/o existing same ORDER BY target SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b; -- w/ existing GROUP BY target using a relation name in target SELECT test_missing_target.b, count(*) FROM test_missing_target GROUP BY b ORDER BY b; -- w/o existing GROUP BY target SELECT c FROM test_missing_target ORDER BY a; -- w/o existing ORDER BY target SELECT count(*) FROM test_missing_target GROUP BY b ORDER BY b desc; -- group using reference number SELECT count(*) FROM test_missing_target ORDER BY 1 desc; -- order using reference number SELECT c, count(*) FROM test_missing_target GROUP BY 1 ORDER BY 1; -- group using reference number out of range -- failure expected SELECT c, count(*) FROM test_missing_target GROUP BY 3; -- group w/o existing GROUP BY and ORDER BY target under ambiguous condition -- failure expected SELECT count(*) FROM test_missing_target x, test_missing_target y WHERE x.a = y.a GROUP BY b ORDER BY b; -- order w/ target under ambiguous condition -- failure NOT expected SELECT a, a FROM test_missing_target ORDER BY a; -- order expression w/ target under ambiguous condition -- failure NOT expected SELECT a/2, a/2 FROM test_missing_target ORDER BY a/2; -- group expression w/ target under ambiguous condition -- failure NOT expected SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 ORDER BY a/2; -- group w/ existing GROUP BY target under ambiguous condition SELECT x.b, count(*) FROM test_missing_target x, test_missing_target y WHERE x.a = y.a GROUP BY x.b ORDER BY x.b; -- group w/o existing GROUP BY target under ambiguous condition SELECT count(*) FROM test_missing_target x, test_missing_target y WHERE x.a = y.a GROUP BY x.b ORDER BY x.b; -- group w/o existing GROUP BY target under ambiguous condition -- into a table SELECT count(*) INTO TABLE test_missing_target2 FROM test_missing_target x, test_missing_target y WHERE x.a = y.a GROUP BY x.b ORDER BY x.b; SELECT * FROM test_missing_target2; -- Functions and expressions -- w/ existing GROUP BY target SELECT a%2, count(b) FROM test_missing_target GROUP BY test_missing_target.a%2 ORDER BY test_missing_target.a%2; -- w/o existing GROUP BY target using a relation name in GROUP BY clause SELECT count(c) FROM test_missing_target GROUP BY lower(test_missing_target.c) ORDER BY lower(test_missing_target.c); -- w/o existing GROUP BY target and w/o existing a different ORDER BY target -- failure expected SELECT count(a) FROM test_missing_target GROUP BY a ORDER BY b; -- w/o existing GROUP BY target and w/o existing same ORDER BY target SELECT count(b) FROM test_missing_target GROUP BY b/2 ORDER BY b/2; -- w/ existing GROUP BY target using a relation name in target SELECT lower(test_missing_target.c), count(c) FROM test_missing_target GROUP BY lower(c) ORDER BY lower(c); -- w/o existing GROUP BY target SELECT a FROM test_missing_target ORDER BY upper(d); -- w/o existing ORDER BY target SELECT count(b) FROM test_missing_target GROUP BY (b + 1) / 2 ORDER BY (b + 1) / 2 desc; -- group w/o existing GROUP BY and ORDER BY target under ambiguous condition -- failure expected SELECT count(x.a) FROM test_missing_target x, test_missing_target y WHERE x.a = y.a GROUP BY b/2 ORDER BY b/2; -- group w/ existing GROUP BY target under ambiguous condition SELECT x.b/2, count(x.b) FROM test_missing_target x, test_missing_target y WHERE x.a = y.a GROUP BY x.b/2 ORDER BY x.b/2; -- group w/o existing GROUP BY target under ambiguous condition -- failure expected due to ambiguous b in count(b) SELECT count(b) FROM test_missing_target x, test_missing_target y WHERE x.a = y.a GROUP BY x.b/2; -- group w/o existing GROUP BY target under ambiguous condition -- into a table SELECT count(x.b) INTO TABLE test_missing_target3 FROM test_missing_target x, test_missing_target y WHERE x.a = y.a GROUP BY x.b/2 ORDER BY x.b/2; SELECT * FROM test_missing_target3; -- Cleanup DROP TABLE test_missing_target; DROP TABLE test_missing_target2; DROP TABLE test_missing_target3; libpg_query-13-2.1.0/test/sql/postgres_regress/select_into.sql000066400000000000000000000063111413137616400244730ustar00rootroot00000000000000-- -- SELECT_INTO -- SELECT * INTO TABLE sitmp1 FROM onek WHERE onek.unique1 < 2; DROP TABLE sitmp1; SELECT * INTO TABLE sitmp1 FROM onek2 WHERE onek2.unique1 < 2; DROP TABLE sitmp1; -- -- SELECT INTO and INSERT permission, if owner is not allowed to insert. -- CREATE SCHEMA selinto_schema; CREATE USER regress_selinto_user; ALTER DEFAULT PRIVILEGES FOR ROLE regress_selinto_user REVOKE INSERT ON TABLES FROM regress_selinto_user; GRANT ALL ON SCHEMA selinto_schema TO public; SET SESSION AUTHORIZATION regress_selinto_user; SELECT * INTO TABLE selinto_schema.tmp1 FROM pg_class WHERE relname like '%a%'; -- Error SELECT oid AS clsoid, relname, relnatts + 10 AS x INTO selinto_schema.tmp2 FROM pg_class WHERE relname like '%b%'; -- Error CREATE TABLE selinto_schema.tmp3 (a,b,c) AS SELECT oid,relname,relacl FROM pg_class WHERE relname like '%c%'; -- Error RESET SESSION AUTHORIZATION; ALTER DEFAULT PRIVILEGES FOR ROLE regress_selinto_user GRANT INSERT ON TABLES TO regress_selinto_user; SET SESSION AUTHORIZATION regress_selinto_user; SELECT * INTO TABLE selinto_schema.tmp1 FROM pg_class WHERE relname like '%a%'; -- OK SELECT oid AS clsoid, relname, relnatts + 10 AS x INTO selinto_schema.tmp2 FROM pg_class WHERE relname like '%b%'; -- OK CREATE TABLE selinto_schema.tmp3 (a,b,c) AS SELECT oid,relname,relacl FROM pg_class WHERE relname like '%c%'; -- OK RESET SESSION AUTHORIZATION; DROP SCHEMA selinto_schema CASCADE; DROP USER regress_selinto_user; -- Tests for WITH NO DATA and column name consistency CREATE TABLE ctas_base (i int, j int); INSERT INTO ctas_base VALUES (1, 2); CREATE TABLE ctas_nodata (ii, jj, kk) AS SELECT i, j FROM ctas_base; -- Error CREATE TABLE ctas_nodata (ii, jj, kk) AS SELECT i, j FROM ctas_base WITH NO DATA; -- Error CREATE TABLE ctas_nodata (ii, jj) AS SELECT i, j FROM ctas_base; -- OK CREATE TABLE ctas_nodata_2 (ii, jj) AS SELECT i, j FROM ctas_base WITH NO DATA; -- OK CREATE TABLE ctas_nodata_3 (ii) AS SELECT i, j FROM ctas_base; -- OK CREATE TABLE ctas_nodata_4 (ii) AS SELECT i, j FROM ctas_base WITH NO DATA; -- OK SELECT * FROM ctas_nodata; SELECT * FROM ctas_nodata_2; SELECT * FROM ctas_nodata_3; SELECT * FROM ctas_nodata_4; DROP TABLE ctas_base; DROP TABLE ctas_nodata; DROP TABLE ctas_nodata_2; DROP TABLE ctas_nodata_3; DROP TABLE ctas_nodata_4; -- -- CREATE TABLE AS/SELECT INTO as last command in a SQL function -- have been known to cause problems -- CREATE FUNCTION make_table() RETURNS VOID AS $$ CREATE TABLE created_table AS SELECT * FROM int8_tbl; $$ LANGUAGE SQL; SELECT make_table(); SELECT * FROM created_table; -- Try EXPLAIN ANALYZE SELECT INTO and EXPLAIN ANALYZE CREATE TABLE AS -- WITH NO DATA, but hide the outputs since they won't be stable. DO $$ BEGIN EXECUTE 'EXPLAIN ANALYZE SELECT * INTO TABLE easi FROM int8_tbl'; EXECUTE 'EXPLAIN ANALYZE CREATE TABLE easi2 AS SELECT * FROM int8_tbl WITH NO DATA'; END$$; DROP TABLE created_table; DROP TABLE easi, easi2; -- -- Disallowed uses of SELECT ... INTO. All should fail -- DECLARE foo CURSOR FOR SELECT 1 INTO b; COPY (SELECT 1 INTO frak UNION SELECT 2) TO 'blob'; SELECT * FROM (SELECT 1 INTO f) bar; CREATE VIEW foo AS SELECT 1 INTO b; INSERT INTO b SELECT 1 INTO f; libpg_query-13-2.1.0/test/sql/postgres_regress/select_parallel.sql000066400000000000000000000350311413137616400253170ustar00rootroot00000000000000-- -- PARALLEL -- create function sp_parallel_restricted(int) returns int as $$begin return $1; end$$ language plpgsql parallel restricted; -- Serializable isolation would disable parallel query, so explicitly use an -- arbitrary other level. begin isolation level repeatable read; -- encourage use of parallel plans set parallel_setup_cost=0; set parallel_tuple_cost=0; set min_parallel_table_scan_size=0; set max_parallel_workers_per_gather=4; -- Parallel Append with partial-subplans explain (costs off) select round(avg(aa)), sum(aa) from a_star; select round(avg(aa)), sum(aa) from a_star a1; -- Parallel Append with both partial and non-partial subplans alter table c_star set (parallel_workers = 0); alter table d_star set (parallel_workers = 0); explain (costs off) select round(avg(aa)), sum(aa) from a_star; select round(avg(aa)), sum(aa) from a_star a2; -- Parallel Append with only non-partial subplans alter table a_star set (parallel_workers = 0); alter table b_star set (parallel_workers = 0); alter table e_star set (parallel_workers = 0); alter table f_star set (parallel_workers = 0); explain (costs off) select round(avg(aa)), sum(aa) from a_star; select round(avg(aa)), sum(aa) from a_star a3; -- Disable Parallel Append alter table a_star reset (parallel_workers); alter table b_star reset (parallel_workers); alter table c_star reset (parallel_workers); alter table d_star reset (parallel_workers); alter table e_star reset (parallel_workers); alter table f_star reset (parallel_workers); set enable_parallel_append to off; explain (costs off) select round(avg(aa)), sum(aa) from a_star; select round(avg(aa)), sum(aa) from a_star a4; reset enable_parallel_append; -- Parallel Append that runs serially create function sp_test_func() returns setof text as $$ select 'foo'::varchar union all select 'bar'::varchar $$ language sql stable; select sp_test_func() order by 1; -- Parallel Append is not to be used when the subpath depends on the outer param create table part_pa_test(a int, b int) partition by range(a); create table part_pa_test_p1 partition of part_pa_test for values from (minvalue) to (0); create table part_pa_test_p2 partition of part_pa_test for values from (0) to (maxvalue); explain (costs off) select (select max((select pa1.b from part_pa_test pa1 where pa1.a = pa2.a))) from part_pa_test pa2; drop table part_pa_test; -- test with leader participation disabled set parallel_leader_participation = off; explain (costs off) select count(*) from tenk1 where stringu1 = 'GRAAAA'; select count(*) from tenk1 where stringu1 = 'GRAAAA'; -- test with leader participation disabled, but no workers available (so -- the leader will have to run the plan despite the setting) set max_parallel_workers = 0; explain (costs off) select count(*) from tenk1 where stringu1 = 'GRAAAA'; select count(*) from tenk1 where stringu1 = 'GRAAAA'; reset max_parallel_workers; reset parallel_leader_participation; -- test that parallel_restricted function doesn't run in worker alter table tenk1 set (parallel_workers = 4); explain (verbose, costs off) select sp_parallel_restricted(unique1) from tenk1 where stringu1 = 'GRAAAA' order by 1; -- test parallel plan when group by expression is in target list. explain (costs off) select length(stringu1) from tenk1 group by length(stringu1); select length(stringu1) from tenk1 group by length(stringu1); explain (costs off) select stringu1, count(*) from tenk1 group by stringu1 order by stringu1; -- test that parallel plan for aggregates is not selected when -- target list contains parallel restricted clause. explain (costs off) select sum(sp_parallel_restricted(unique1)) from tenk1 group by(sp_parallel_restricted(unique1)); -- test prepared statement prepare tenk1_count(integer) As select count((unique1)) from tenk1 where hundred > $1; explain (costs off) execute tenk1_count(1); execute tenk1_count(1); deallocate tenk1_count; -- test parallel plans for queries containing un-correlated subplans. alter table tenk2 set (parallel_workers = 0); explain (costs off) select count(*) from tenk1 where (two, four) not in (select hundred, thousand from tenk2 where thousand > 100); select count(*) from tenk1 where (two, four) not in (select hundred, thousand from tenk2 where thousand > 100); -- this is not parallel-safe due to use of random() within SubLink's testexpr: explain (costs off) select * from tenk1 where (unique1 + random())::integer not in (select ten from tenk2); alter table tenk2 reset (parallel_workers); -- test parallel plan for a query containing initplan. set enable_indexscan = off; set enable_indexonlyscan = off; set enable_bitmapscan = off; alter table tenk2 set (parallel_workers = 2); explain (costs off) select count(*) from tenk1 where tenk1.unique1 = (Select max(tenk2.unique1) from tenk2); select count(*) from tenk1 where tenk1.unique1 = (Select max(tenk2.unique1) from tenk2); reset enable_indexscan; reset enable_indexonlyscan; reset enable_bitmapscan; alter table tenk2 reset (parallel_workers); -- test parallel index scans. set enable_seqscan to off; set enable_bitmapscan to off; explain (costs off) select count((unique1)) from tenk1 where hundred > 1; select count((unique1)) from tenk1 where hundred > 1; -- test parallel index-only scans. explain (costs off) select count(*) from tenk1 where thousand > 95; select count(*) from tenk1 where thousand > 95; -- test rescan cases too set enable_material = false; explain (costs off) select * from (select count(unique1) from tenk1 where hundred > 10) ss right join (values (1),(2),(3)) v(x) on true; select * from (select count(unique1) from tenk1 where hundred > 10) ss right join (values (1),(2),(3)) v(x) on true; explain (costs off) select * from (select count(*) from tenk1 where thousand > 99) ss right join (values (1),(2),(3)) v(x) on true; select * from (select count(*) from tenk1 where thousand > 99) ss right join (values (1),(2),(3)) v(x) on true; -- test rescans for a Limit node with a parallel node beneath it. reset enable_seqscan; set enable_indexonlyscan to off; set enable_indexscan to off; alter table tenk1 set (parallel_workers = 0); alter table tenk2 set (parallel_workers = 1); explain (costs off) select count(*) from tenk1 left join (select tenk2.unique1 from tenk2 order by 1 limit 1000) ss on tenk1.unique1 < ss.unique1 + 1 where tenk1.unique1 < 2; select count(*) from tenk1 left join (select tenk2.unique1 from tenk2 order by 1 limit 1000) ss on tenk1.unique1 < ss.unique1 + 1 where tenk1.unique1 < 2; --reset the value of workers for each table as it was before this test. alter table tenk1 set (parallel_workers = 4); alter table tenk2 reset (parallel_workers); reset enable_material; reset enable_bitmapscan; reset enable_indexonlyscan; reset enable_indexscan; -- test parallel bitmap heap scan. set enable_seqscan to off; set enable_indexscan to off; set enable_hashjoin to off; set enable_mergejoin to off; set enable_material to off; -- test prefetching, if the platform allows it DO $$ BEGIN SET effective_io_concurrency = 50; EXCEPTION WHEN invalid_parameter_value THEN END $$; set work_mem='64kB'; --set small work mem to force lossy pages explain (costs off) select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0; select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0; create table bmscantest (a int, t text); insert into bmscantest select r, 'fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' FROM generate_series(1,100000) r; create index i_bmtest ON bmscantest(a); select count(*) from bmscantest where a>1; -- test accumulation of stats for parallel nodes reset enable_seqscan; alter table tenk2 set (parallel_workers = 0); explain (analyze, timing off, summary off, costs off) select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0; alter table tenk2 reset (parallel_workers); reset work_mem; create function explain_parallel_sort_stats() returns setof text language plpgsql as $$ declare ln text; begin for ln in explain (analyze, timing off, summary off, costs off) select * from (select ten from tenk1 where ten < 100 order by ten) ss right join (values (1),(2),(3)) v(x) on true loop ln := regexp_replace(ln, 'Memory: \S*', 'Memory: xxx'); return next ln; end loop; end; $$; select * from explain_parallel_sort_stats(); reset enable_indexscan; reset enable_hashjoin; reset enable_mergejoin; reset enable_material; reset effective_io_concurrency; drop table bmscantest; drop function explain_parallel_sort_stats(); -- test parallel merge join path. set enable_hashjoin to off; set enable_nestloop to off; explain (costs off) select count(*) from tenk1, tenk2 where tenk1.unique1 = tenk2.unique1; select count(*) from tenk1, tenk2 where tenk1.unique1 = tenk2.unique1; reset enable_hashjoin; reset enable_nestloop; -- test gather merge set enable_hashagg = false; explain (costs off) select count(*) from tenk1 group by twenty; select count(*) from tenk1 group by twenty; --test expressions in targetlist are pushed down for gather merge create function sp_simple_func(var1 integer) returns integer as $$ begin return var1 + 10; end; $$ language plpgsql PARALLEL SAFE; explain (costs off, verbose) select ten, sp_simple_func(ten) from tenk1 where ten < 100 order by ten; drop function sp_simple_func(integer); -- test handling of SRFs in targetlist (bug in 10.0) explain (costs off) select count(*), generate_series(1,2) from tenk1 group by twenty; select count(*), generate_series(1,2) from tenk1 group by twenty; -- test gather merge with parallel leader participation disabled set parallel_leader_participation = off; explain (costs off) select count(*) from tenk1 group by twenty; select count(*) from tenk1 group by twenty; reset parallel_leader_participation; --test rescan behavior of gather merge set enable_material = false; explain (costs off) select * from (select string4, count(unique2) from tenk1 group by string4 order by string4) ss right join (values (1),(2),(3)) v(x) on true; select * from (select string4, count(unique2) from tenk1 group by string4 order by string4) ss right join (values (1),(2),(3)) v(x) on true; reset enable_material; reset enable_hashagg; -- check parallelized int8 aggregate (bug #14897) explain (costs off) select avg(unique1::int8) from tenk1; select avg(unique1::int8) from tenk1; -- gather merge test with a LIMIT explain (costs off) select fivethous from tenk1 order by fivethous limit 4; select fivethous from tenk1 order by fivethous limit 4; -- gather merge test with 0 worker set max_parallel_workers = 0; explain (costs off) select string4 from tenk1 order by string4 limit 5; select string4 from tenk1 order by string4 limit 5; -- gather merge test with 0 workers, with parallel leader -- participation disabled (the leader will have to run the plan -- despite the setting) set parallel_leader_participation = off; explain (costs off) select string4 from tenk1 order by string4 limit 5; select string4 from tenk1 order by string4 limit 5; reset parallel_leader_participation; reset max_parallel_workers; SAVEPOINT settings; SET LOCAL force_parallel_mode = 1; explain (costs off) select stringu1::int2 from tenk1 where unique1 = 1; ROLLBACK TO SAVEPOINT settings; -- exercise record typmod remapping between backends CREATE FUNCTION make_record(n int) RETURNS RECORD LANGUAGE plpgsql PARALLEL SAFE AS $$ BEGIN RETURN CASE n WHEN 1 THEN ROW(1) WHEN 2 THEN ROW(1, 2) WHEN 3 THEN ROW(1, 2, 3) WHEN 4 THEN ROW(1, 2, 3, 4) ELSE ROW(1, 2, 3, 4, 5) END; END; $$; SAVEPOINT settings; SET LOCAL force_parallel_mode = 1; SELECT make_record(x) FROM (SELECT generate_series(1, 5) x) ss ORDER BY x; ROLLBACK TO SAVEPOINT settings; DROP function make_record(n int); -- test the sanity of parallel query after the active role is dropped. drop role if exists regress_parallel_worker; create role regress_parallel_worker; set role regress_parallel_worker; reset session authorization; drop role regress_parallel_worker; set force_parallel_mode = 1; select count(*) from tenk1; reset force_parallel_mode; reset role; -- Window function calculation can't be pushed to workers. explain (costs off, verbose) select count(*) from tenk1 a where (unique1, two) in (select unique1, row_number() over() from tenk1 b); -- LIMIT/OFFSET within sub-selects can't be pushed to workers. explain (costs off) select * from tenk1 a where two in (select two from tenk1 b where stringu1 like '%AAAA' limit 3); -- to increase the parallel query test coverage SAVEPOINT settings; SET LOCAL force_parallel_mode = 1; EXPLAIN (analyze, timing off, summary off, costs off) SELECT * FROM tenk1; ROLLBACK TO SAVEPOINT settings; -- provoke error in worker -- (make the error message long enough to require multiple bufferloads) SAVEPOINT settings; SET LOCAL force_parallel_mode = 1; select (stringu1 || repeat('abcd', 5000))::int2 from tenk1 where unique1 = 1; ROLLBACK TO SAVEPOINT settings; -- test interaction with set-returning functions SAVEPOINT settings; -- multiple subqueries under a single Gather node -- must set parallel_setup_cost > 0 to discourage multiple Gather nodes SET LOCAL parallel_setup_cost = 10; EXPLAIN (COSTS OFF) SELECT unique1 FROM tenk1 WHERE fivethous = tenthous + 1 UNION ALL SELECT unique1 FROM tenk1 WHERE fivethous = tenthous + 1; ROLLBACK TO SAVEPOINT settings; -- can't use multiple subqueries under a single Gather node due to initPlans EXPLAIN (COSTS OFF) SELECT unique1 FROM tenk1 WHERE fivethous = (SELECT unique1 FROM tenk1 WHERE fivethous = 1 LIMIT 1) UNION ALL SELECT unique1 FROM tenk1 WHERE fivethous = (SELECT unique2 FROM tenk1 WHERE fivethous = 1 LIMIT 1) ORDER BY 1; -- test interaction with SRFs SELECT * FROM information_schema.foreign_data_wrapper_options ORDER BY 1, 2, 3; -- test passing expanded-value representations to workers CREATE FUNCTION make_some_array(int,int) returns int[] as $$declare x int[]; begin x[1] := $1; x[2] := $2; return x; end$$ language plpgsql parallel safe; CREATE TABLE fooarr(f1 text, f2 int[], f3 text); INSERT INTO fooarr VALUES('1', ARRAY[1,2], 'one'); PREPARE pstmt(text, int[]) AS SELECT * FROM fooarr WHERE f1 = $1 AND f2 = $2; EXPLAIN (COSTS OFF) EXECUTE pstmt('1', make_some_array(1,2)); EXECUTE pstmt('1', make_some_array(1,2)); DEALLOCATE pstmt; -- test interaction between subquery and partial_paths CREATE VIEW tenk1_vw_sec WITH (security_barrier) AS SELECT * FROM tenk1; EXPLAIN (COSTS OFF) SELECT 1 FROM tenk1_vw_sec WHERE (SELECT sum(f1) FROM int4_tbl WHERE f1 < unique1) < 100; rollback; libpg_query-13-2.1.0/test/sql/postgres_regress/select_views.sql000066400000000000000000000124031413137616400246560ustar00rootroot00000000000000-- -- SELECT_VIEWS -- test the views defined in CREATE_VIEWS -- SELECT * FROM street; SELECT name, #thepath FROM iexit ORDER BY name COLLATE "C", 2; SELECT * FROM toyemp WHERE name = 'sharon'; -- -- Test for Leaky view scenario -- CREATE ROLE regress_alice; CREATE FUNCTION f_leak (text) RETURNS bool LANGUAGE 'plpgsql' COST 0.0000001 AS 'BEGIN RAISE NOTICE ''f_leak => %'', $1; RETURN true; END'; CREATE TABLE customer ( cid int primary key, name text not null, tel text, passwd text ); CREATE TABLE credit_card ( cid int references customer(cid), cnum text, climit int ); CREATE TABLE credit_usage ( cid int references customer(cid), ymd date, usage int ); INSERT INTO customer VALUES (101, 'regress_alice', '+81-12-3456-7890', 'passwd123'), (102, 'regress_bob', '+01-234-567-8901', 'beafsteak'), (103, 'regress_eve', '+49-8765-43210', 'hamburger'); INSERT INTO credit_card VALUES (101, '1111-2222-3333-4444', 4000), (102, '5555-6666-7777-8888', 3000), (103, '9801-2345-6789-0123', 2000); INSERT INTO credit_usage VALUES (101, '2011-09-15', 120), (101, '2011-10-05', 90), (101, '2011-10-18', 110), (101, '2011-10-21', 200), (101, '2011-11-10', 80), (102, '2011-09-22', 300), (102, '2011-10-12', 120), (102, '2011-10-28', 200), (103, '2011-10-15', 480); CREATE VIEW my_property_normal AS SELECT * FROM customer WHERE name = current_user; CREATE VIEW my_property_secure WITH (security_barrier) AS SELECT * FROM customer WHERE name = current_user; CREATE VIEW my_credit_card_normal AS SELECT * FROM customer l NATURAL JOIN credit_card r WHERE l.name = current_user; CREATE VIEW my_credit_card_secure WITH (security_barrier) AS SELECT * FROM customer l NATURAL JOIN credit_card r WHERE l.name = current_user; CREATE VIEW my_credit_card_usage_normal AS SELECT * FROM my_credit_card_secure l NATURAL JOIN credit_usage r; CREATE VIEW my_credit_card_usage_secure WITH (security_barrier) AS SELECT * FROM my_credit_card_secure l NATURAL JOIN credit_usage r; GRANT SELECT ON my_property_normal TO public; GRANT SELECT ON my_property_secure TO public; GRANT SELECT ON my_credit_card_normal TO public; GRANT SELECT ON my_credit_card_secure TO public; GRANT SELECT ON my_credit_card_usage_normal TO public; GRANT SELECT ON my_credit_card_usage_secure TO public; -- -- Run leaky view scenarios -- SET SESSION AUTHORIZATION regress_alice; -- -- scenario: if a qualifier with tiny-cost is given, it shall be launched -- prior to the security policy of the view. -- SELECT * FROM my_property_normal WHERE f_leak(passwd); EXPLAIN (COSTS OFF) SELECT * FROM my_property_normal WHERE f_leak(passwd); SELECT * FROM my_property_secure WHERE f_leak(passwd); EXPLAIN (COSTS OFF) SELECT * FROM my_property_secure WHERE f_leak(passwd); -- -- scenario: qualifiers can be pushed down if they contain leaky functions, -- provided they aren't passed data from inside the view. -- SELECT * FROM my_property_normal v WHERE f_leak('passwd') AND f_leak(passwd); EXPLAIN (COSTS OFF) SELECT * FROM my_property_normal v WHERE f_leak('passwd') AND f_leak(passwd); SELECT * FROM my_property_secure v WHERE f_leak('passwd') AND f_leak(passwd); EXPLAIN (COSTS OFF) SELECT * FROM my_property_secure v WHERE f_leak('passwd') AND f_leak(passwd); -- -- scenario: if a qualifier references only one-side of a particular join- -- tree, it shall be distributed to the most deep scan plan as -- possible as we can. -- SELECT * FROM my_credit_card_normal WHERE f_leak(cnum); EXPLAIN (COSTS OFF) SELECT * FROM my_credit_card_normal WHERE f_leak(cnum); SELECT * FROM my_credit_card_secure WHERE f_leak(cnum); EXPLAIN (COSTS OFF) SELECT * FROM my_credit_card_secure WHERE f_leak(cnum); -- -- scenario: an external qualifier can be pushed-down by in-front-of the -- views with "security_barrier" attribute, except for operators -- implemented with leakproof functions. -- SELECT * FROM my_credit_card_usage_normal WHERE f_leak(cnum) AND ymd >= '2011-10-01' AND ymd < '2011-11-01'; EXPLAIN (COSTS OFF) SELECT * FROM my_credit_card_usage_normal WHERE f_leak(cnum) AND ymd >= '2011-10-01' AND ymd < '2011-11-01'; SELECT * FROM my_credit_card_usage_secure WHERE f_leak(cnum) AND ymd >= '2011-10-01' AND ymd < '2011-11-01'; EXPLAIN (COSTS OFF) SELECT * FROM my_credit_card_usage_secure WHERE f_leak(cnum) AND ymd >= '2011-10-01' AND ymd < '2011-11-01'; -- -- Test for the case when security_barrier gets changed between rewriter -- and planner stage. -- PREPARE p1 AS SELECT * FROM my_property_normal WHERE f_leak(passwd); PREPARE p2 AS SELECT * FROM my_property_secure WHERE f_leak(passwd); EXECUTE p1; EXECUTE p2; RESET SESSION AUTHORIZATION; ALTER VIEW my_property_normal SET (security_barrier=true); ALTER VIEW my_property_secure SET (security_barrier=false); SET SESSION AUTHORIZATION regress_alice; EXECUTE p1; -- To be perform as a view with security-barrier EXECUTE p2; -- To be perform as a view without security-barrier -- Cleanup. RESET SESSION AUTHORIZATION; DROP ROLE regress_alice; libpg_query-13-2.1.0/test/sql/postgres_regress/sequence.sql000066400000000000000000000272771413137616400240110ustar00rootroot00000000000000-- -- CREATE SEQUENCE -- -- various error cases CREATE UNLOGGED SEQUENCE sequence_testx; CREATE SEQUENCE sequence_testx INCREMENT BY 0; CREATE SEQUENCE sequence_testx INCREMENT BY -1 MINVALUE 20; CREATE SEQUENCE sequence_testx INCREMENT BY 1 MAXVALUE -20; CREATE SEQUENCE sequence_testx INCREMENT BY -1 START 10; CREATE SEQUENCE sequence_testx INCREMENT BY 1 START -10; CREATE SEQUENCE sequence_testx CACHE 0; -- OWNED BY errors CREATE SEQUENCE sequence_testx OWNED BY nobody; -- nonsense word CREATE SEQUENCE sequence_testx OWNED BY pg_class_oid_index.oid; -- not a table CREATE SEQUENCE sequence_testx OWNED BY pg_class.relname; -- not same schema CREATE TABLE sequence_test_table (a int); CREATE SEQUENCE sequence_testx OWNED BY sequence_test_table.b; -- wrong column DROP TABLE sequence_test_table; -- sequence data types CREATE SEQUENCE sequence_test5 AS integer; CREATE SEQUENCE sequence_test6 AS smallint; CREATE SEQUENCE sequence_test7 AS bigint; CREATE SEQUENCE sequence_test8 AS integer MAXVALUE 100000; CREATE SEQUENCE sequence_test9 AS integer INCREMENT BY -1; CREATE SEQUENCE sequence_test10 AS integer MINVALUE -100000 START 1; CREATE SEQUENCE sequence_test11 AS smallint; CREATE SEQUENCE sequence_test12 AS smallint INCREMENT -1; CREATE SEQUENCE sequence_test13 AS smallint MINVALUE -32768; CREATE SEQUENCE sequence_test14 AS smallint MAXVALUE 32767 INCREMENT -1; CREATE SEQUENCE sequence_testx AS text; CREATE SEQUENCE sequence_testx AS nosuchtype; CREATE SEQUENCE sequence_testx AS smallint MAXVALUE 100000; CREATE SEQUENCE sequence_testx AS smallint MINVALUE -100000; ALTER SEQUENCE sequence_test5 AS smallint; -- success, max will be adjusted ALTER SEQUENCE sequence_test8 AS smallint; -- fail, max has to be adjusted ALTER SEQUENCE sequence_test8 AS smallint MAXVALUE 20000; -- ok now ALTER SEQUENCE sequence_test9 AS smallint; -- success, min will be adjusted ALTER SEQUENCE sequence_test10 AS smallint; -- fail, min has to be adjusted ALTER SEQUENCE sequence_test10 AS smallint MINVALUE -20000; -- ok now ALTER SEQUENCE sequence_test11 AS int; -- max will be adjusted ALTER SEQUENCE sequence_test12 AS int; -- min will be adjusted ALTER SEQUENCE sequence_test13 AS int; -- min and max will be adjusted ALTER SEQUENCE sequence_test14 AS int; -- min and max will be adjusted --- --- test creation of SERIAL column --- CREATE TABLE serialTest1 (f1 text, f2 serial); INSERT INTO serialTest1 VALUES ('foo'); INSERT INTO serialTest1 VALUES ('bar'); INSERT INTO serialTest1 VALUES ('force', 100); INSERT INTO serialTest1 VALUES ('wrong', NULL); SELECT * FROM serialTest1; SELECT pg_get_serial_sequence('serialTest1', 'f2'); -- test smallserial / bigserial CREATE TABLE serialTest2 (f1 text, f2 serial, f3 smallserial, f4 serial2, f5 bigserial, f6 serial8); INSERT INTO serialTest2 (f1) VALUES ('test_defaults'); INSERT INTO serialTest2 (f1, f2, f3, f4, f5, f6) VALUES ('test_max_vals', 2147483647, 32767, 32767, 9223372036854775807, 9223372036854775807), ('test_min_vals', -2147483648, -32768, -32768, -9223372036854775808, -9223372036854775808); -- All these INSERTs should fail: INSERT INTO serialTest2 (f1, f3) VALUES ('bogus', -32769); INSERT INTO serialTest2 (f1, f4) VALUES ('bogus', -32769); INSERT INTO serialTest2 (f1, f3) VALUES ('bogus', 32768); INSERT INTO serialTest2 (f1, f4) VALUES ('bogus', 32768); INSERT INTO serialTest2 (f1, f5) VALUES ('bogus', -9223372036854775809); INSERT INTO serialTest2 (f1, f6) VALUES ('bogus', -9223372036854775809); INSERT INTO serialTest2 (f1, f5) VALUES ('bogus', 9223372036854775808); INSERT INTO serialTest2 (f1, f6) VALUES ('bogus', 9223372036854775808); SELECT * FROM serialTest2 ORDER BY f2 ASC; SELECT nextval('serialTest2_f2_seq'); SELECT nextval('serialTest2_f3_seq'); SELECT nextval('serialTest2_f4_seq'); SELECT nextval('serialTest2_f5_seq'); SELECT nextval('serialTest2_f6_seq'); -- basic sequence operations using both text and oid references CREATE SEQUENCE sequence_test; CREATE SEQUENCE IF NOT EXISTS sequence_test; SELECT nextval('sequence_test'::text); SELECT nextval('sequence_test'::regclass); SELECT currval('sequence_test'::text); SELECT currval('sequence_test'::regclass); SELECT setval('sequence_test'::text, 32); SELECT nextval('sequence_test'::regclass); SELECT setval('sequence_test'::text, 99, false); SELECT nextval('sequence_test'::regclass); SELECT setval('sequence_test'::regclass, 32); SELECT nextval('sequence_test'::text); SELECT setval('sequence_test'::regclass, 99, false); SELECT nextval('sequence_test'::text); DISCARD SEQUENCES; SELECT currval('sequence_test'::regclass); DROP SEQUENCE sequence_test; -- renaming sequences CREATE SEQUENCE foo_seq; ALTER TABLE foo_seq RENAME TO foo_seq_new; SELECT * FROM foo_seq_new; SELECT nextval('foo_seq_new'); SELECT nextval('foo_seq_new'); -- log_cnt can be higher if there is a checkpoint just at the right -- time, so just test for the expected range SELECT last_value, log_cnt IN (31, 32) AS log_cnt_ok, is_called FROM foo_seq_new; DROP SEQUENCE foo_seq_new; -- renaming serial sequences ALTER TABLE serialtest1_f2_seq RENAME TO serialtest1_f2_foo; INSERT INTO serialTest1 VALUES ('more'); SELECT * FROM serialTest1; -- -- Check dependencies of serial and ordinary sequences -- CREATE TEMP SEQUENCE myseq2; CREATE TEMP SEQUENCE myseq3; CREATE TEMP TABLE t1 ( f1 serial, f2 int DEFAULT nextval('myseq2'), f3 int DEFAULT nextval('myseq3'::text) ); -- Both drops should fail, but with different error messages: DROP SEQUENCE t1_f1_seq; DROP SEQUENCE myseq2; -- This however will work: DROP SEQUENCE myseq3; DROP TABLE t1; -- Fails because no longer existent: DROP SEQUENCE t1_f1_seq; -- Now OK: DROP SEQUENCE myseq2; -- -- Alter sequence -- ALTER SEQUENCE IF EXISTS sequence_test2 RESTART WITH 24 INCREMENT BY 4 MAXVALUE 36 MINVALUE 5 CYCLE; ALTER SEQUENCE serialTest1 CYCLE; -- error, not a sequence CREATE SEQUENCE sequence_test2 START WITH 32; CREATE SEQUENCE sequence_test4 INCREMENT BY -1; SELECT nextval('sequence_test2'); SELECT nextval('sequence_test4'); ALTER SEQUENCE sequence_test2 RESTART; SELECT nextval('sequence_test2'); ALTER SEQUENCE sequence_test2 RESTART WITH 0; -- error ALTER SEQUENCE sequence_test4 RESTART WITH 40; -- error -- test CYCLE and NO CYCLE ALTER SEQUENCE sequence_test2 RESTART WITH 24 INCREMENT BY 4 MAXVALUE 36 MINVALUE 5 CYCLE; SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); -- cycled ALTER SEQUENCE sequence_test2 RESTART WITH 24 NO CYCLE; SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); -- error ALTER SEQUENCE sequence_test2 RESTART WITH -24 START WITH -24 INCREMENT BY -4 MINVALUE -36 MAXVALUE -5 CYCLE; SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); -- cycled ALTER SEQUENCE sequence_test2 RESTART WITH -24 NO CYCLE; SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); SELECT nextval('sequence_test2'); -- error -- reset ALTER SEQUENCE IF EXISTS sequence_test2 RESTART WITH 32 START WITH 32 INCREMENT BY 4 MAXVALUE 36 MINVALUE 5 CYCLE; SELECT setval('sequence_test2', -100); -- error SELECT setval('sequence_test2', 100); -- error SELECT setval('sequence_test2', 5); CREATE SEQUENCE sequence_test3; -- not read from, to test is_called -- Information schema SELECT * FROM information_schema.sequences WHERE sequence_name ~ ANY(ARRAY['sequence_test', 'serialtest']) ORDER BY sequence_name ASC; SELECT schemaname, sequencename, start_value, min_value, max_value, increment_by, cycle, cache_size, last_value FROM pg_sequences WHERE sequencename ~ ANY(ARRAY['sequence_test', 'serialtest']) ORDER BY sequencename ASC; SELECT * FROM pg_sequence_parameters('sequence_test4'::regclass); \d sequence_test4 \d serialtest2_f2_seq -- Test comments COMMENT ON SEQUENCE asdf IS 'won''t work'; COMMENT ON SEQUENCE sequence_test2 IS 'will work'; COMMENT ON SEQUENCE sequence_test2 IS NULL; -- Test lastval() CREATE SEQUENCE seq; SELECT nextval('seq'); SELECT lastval(); SELECT setval('seq', 99); SELECT lastval(); DISCARD SEQUENCES; SELECT lastval(); CREATE SEQUENCE seq2; SELECT nextval('seq2'); SELECT lastval(); DROP SEQUENCE seq2; -- should fail SELECT lastval(); -- Test sequences in read-only transactions CREATE TEMPORARY SEQUENCE sequence_test_temp1; START TRANSACTION READ ONLY; SELECT nextval('sequence_test_temp1'); -- ok SELECT nextval('sequence_test2'); -- error ROLLBACK; START TRANSACTION READ ONLY; SELECT setval('sequence_test_temp1', 1); -- ok SELECT setval('sequence_test2', 1); -- error ROLLBACK; -- privileges tests CREATE USER regress_seq_user; -- nextval BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; CREATE SEQUENCE seq3; REVOKE ALL ON seq3 FROM regress_seq_user; GRANT SELECT ON seq3 TO regress_seq_user; SELECT nextval('seq3'); ROLLBACK; BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; CREATE SEQUENCE seq3; REVOKE ALL ON seq3 FROM regress_seq_user; GRANT UPDATE ON seq3 TO regress_seq_user; SELECT nextval('seq3'); ROLLBACK; BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; CREATE SEQUENCE seq3; REVOKE ALL ON seq3 FROM regress_seq_user; GRANT USAGE ON seq3 TO regress_seq_user; SELECT nextval('seq3'); ROLLBACK; -- currval BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; CREATE SEQUENCE seq3; SELECT nextval('seq3'); REVOKE ALL ON seq3 FROM regress_seq_user; GRANT SELECT ON seq3 TO regress_seq_user; SELECT currval('seq3'); ROLLBACK; BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; CREATE SEQUENCE seq3; SELECT nextval('seq3'); REVOKE ALL ON seq3 FROM regress_seq_user; GRANT UPDATE ON seq3 TO regress_seq_user; SELECT currval('seq3'); ROLLBACK; BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; CREATE SEQUENCE seq3; SELECT nextval('seq3'); REVOKE ALL ON seq3 FROM regress_seq_user; GRANT USAGE ON seq3 TO regress_seq_user; SELECT currval('seq3'); ROLLBACK; -- lastval BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; CREATE SEQUENCE seq3; SELECT nextval('seq3'); REVOKE ALL ON seq3 FROM regress_seq_user; GRANT SELECT ON seq3 TO regress_seq_user; SELECT lastval(); ROLLBACK; BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; CREATE SEQUENCE seq3; SELECT nextval('seq3'); REVOKE ALL ON seq3 FROM regress_seq_user; GRANT UPDATE ON seq3 TO regress_seq_user; SELECT lastval(); ROLLBACK; BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; CREATE SEQUENCE seq3; SELECT nextval('seq3'); REVOKE ALL ON seq3 FROM regress_seq_user; GRANT USAGE ON seq3 TO regress_seq_user; SELECT lastval(); ROLLBACK; -- setval BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; CREATE SEQUENCE seq3; REVOKE ALL ON seq3 FROM regress_seq_user; SAVEPOINT save; SELECT setval('seq3', 5); ROLLBACK TO save; GRANT UPDATE ON seq3 TO regress_seq_user; SELECT setval('seq3', 5); SELECT nextval('seq3'); ROLLBACK; -- ALTER SEQUENCE BEGIN; SET LOCAL SESSION AUTHORIZATION regress_seq_user; ALTER SEQUENCE sequence_test2 START WITH 1; ROLLBACK; -- Sequences should get wiped out as well: DROP TABLE serialTest1, serialTest2; -- Make sure sequences are gone: SELECT * FROM information_schema.sequences WHERE sequence_name IN ('sequence_test2', 'serialtest2_f2_seq', 'serialtest2_f3_seq', 'serialtest2_f4_seq', 'serialtest2_f5_seq', 'serialtest2_f6_seq') ORDER BY sequence_name ASC; DROP USER regress_seq_user; DROP SEQUENCE seq; -- cache tests CREATE SEQUENCE test_seq1 CACHE 10; SELECT nextval('test_seq1'); SELECT nextval('test_seq1'); SELECT nextval('test_seq1'); DROP SEQUENCE test_seq1; libpg_query-13-2.1.0/test/sql/postgres_regress/spgist.sql000066400000000000000000000055311413137616400234770ustar00rootroot00000000000000-- -- Test SP-GiST indexes. -- -- There are other tests to test different SP-GiST opclasses. This is for -- testing SP-GiST code itself. create table spgist_point_tbl(id int4, p point); create index spgist_point_idx on spgist_point_tbl using spgist(p) with (fillfactor = 75); -- Test vacuum-root operation. It gets invoked when the root is also a leaf, -- i.e. the index is very small. insert into spgist_point_tbl (id, p) select g, point(g*10, g*10) from generate_series(1, 10) g; delete from spgist_point_tbl where id < 5; vacuum spgist_point_tbl; -- Insert more data, to make the index a few levels deep. insert into spgist_point_tbl (id, p) select g, point(g*10, g*10) from generate_series(1, 10000) g; insert into spgist_point_tbl (id, p) select g+100000, point(g*10+1, g*10+1) from generate_series(1, 10000) g; -- To test vacuum, delete some entries from all over the index. delete from spgist_point_tbl where id % 2 = 1; -- And also delete some concentration of values. (SP-GiST doesn't currently -- attempt to delete pages even when they become empty, but if it did, this -- would exercise it) delete from spgist_point_tbl where id < 10000; vacuum spgist_point_tbl; -- Test rescan paths (cf. bug #15378) -- use box and && rather than point, so that rescan happens when the -- traverse stack is non-empty create table spgist_box_tbl(id serial, b box); insert into spgist_box_tbl(b) select box(point(i,j),point(i+s,j+s)) from generate_series(1,100,5) i, generate_series(1,100,5) j, generate_series(1,10) s; create index spgist_box_idx on spgist_box_tbl using spgist (b); select count(*) from (values (point(5,5)),(point(8,8)),(point(12,12))) v(p) where exists(select * from spgist_box_tbl b where b.b && box(v.p,v.p)); -- The point opclass's choose method only uses the spgMatchNode action, -- so the other actions are not tested by the above. Create an index using -- text opclass, which uses the others actions. create table spgist_text_tbl(id int4, t text); create index spgist_text_idx on spgist_text_tbl using spgist(t); insert into spgist_text_tbl (id, t) select g, 'f' || repeat('o', 100) || g from generate_series(1, 10000) g union all select g, 'baaaaaaaaaaaaaar' || g from generate_series(1, 1000) g; -- Do a lot of insertions that have to split an existing node. Hopefully -- one of these will cause the page to run out of space, causing the inner -- tuple to be moved to another page. insert into spgist_text_tbl (id, t) select -g, 'f' || repeat('o', 100-g) || 'surprise' from generate_series(1, 100) g; -- Test out-of-range fillfactor values create index spgist_point_idx2 on spgist_point_tbl using spgist(p) with (fillfactor = 9); create index spgist_point_idx2 on spgist_point_tbl using spgist(p) with (fillfactor = 101); -- Modify fillfactor in existing index alter index spgist_point_idx set (fillfactor = 90); reindex index spgist_point_idx; libpg_query-13-2.1.0/test/sql/postgres_regress/stats.sql000066400000000000000000000145451413137616400233310ustar00rootroot00000000000000-- -- Test Statistics Collector -- -- Must be run after tenk2 has been created (by create_table), -- populated (by create_misc) and indexed (by create_index). -- -- conditio sine qua non SHOW track_counts; -- must be on -- ensure that both seqscan and indexscan plans are allowed SET enable_seqscan TO on; SET enable_indexscan TO on; -- for the moment, we don't want index-only scans here SET enable_indexonlyscan TO off; -- save counters CREATE TABLE prevstats AS SELECT t.seq_scan, t.seq_tup_read, t.idx_scan, t.idx_tup_fetch, (b.heap_blks_read + b.heap_blks_hit) AS heap_blks, (b.idx_blks_read + b.idx_blks_hit) AS idx_blks, pg_stat_get_snapshot_timestamp() as snap_ts FROM pg_catalog.pg_stat_user_tables AS t, pg_catalog.pg_statio_user_tables AS b WHERE t.relname='tenk2' AND b.relname='tenk2'; -- function to wait for counters to advance create function wait_for_stats() returns void as $$ declare start_time timestamptz := clock_timestamp(); updated1 bool; updated2 bool; updated3 bool; updated4 bool; begin -- we don't want to wait forever; loop will exit after 30 seconds for i in 1 .. 300 loop -- With parallel query, the seqscan and indexscan on tenk2 might be done -- in parallel worker processes, which will send their stats counters -- asynchronously to what our own session does. So we must check for -- those counts to be registered separately from the update counts. -- check to see if seqscan has been sensed SELECT (st.seq_scan >= pr.seq_scan + 1) INTO updated1 FROM pg_stat_user_tables AS st, pg_class AS cl, prevstats AS pr WHERE st.relname='tenk2' AND cl.relname='tenk2'; -- check to see if indexscan has been sensed SELECT (st.idx_scan >= pr.idx_scan + 1) INTO updated2 FROM pg_stat_user_tables AS st, pg_class AS cl, prevstats AS pr WHERE st.relname='tenk2' AND cl.relname='tenk2'; -- check to see if all updates have been sensed SELECT (n_tup_ins > 0) INTO updated3 FROM pg_stat_user_tables WHERE relname='trunc_stats_test4'; -- We must also check explicitly that pg_stat_get_snapshot_timestamp has -- advanced, because that comes from the global stats file which might -- be older than the per-DB stats file we got the other values from. SELECT (pr.snap_ts < pg_stat_get_snapshot_timestamp()) INTO updated4 FROM prevstats AS pr; exit when updated1 and updated2 and updated3 and updated4; -- wait a little perform pg_sleep_for('100 milliseconds'); -- reset stats snapshot so we can test again perform pg_stat_clear_snapshot(); end loop; -- report time waited in postmaster log (where it won't change test output) raise log 'wait_for_stats delayed % seconds', extract(epoch from clock_timestamp() - start_time); end $$ language plpgsql; -- test effects of TRUNCATE on n_live_tup/n_dead_tup counters CREATE TABLE trunc_stats_test(id serial); CREATE TABLE trunc_stats_test1(id serial, stuff text); CREATE TABLE trunc_stats_test2(id serial); CREATE TABLE trunc_stats_test3(id serial, stuff text); CREATE TABLE trunc_stats_test4(id serial); -- check that n_live_tup is reset to 0 after truncate INSERT INTO trunc_stats_test DEFAULT VALUES; INSERT INTO trunc_stats_test DEFAULT VALUES; INSERT INTO trunc_stats_test DEFAULT VALUES; TRUNCATE trunc_stats_test; -- test involving a truncate in a transaction; 4 ins but only 1 live INSERT INTO trunc_stats_test1 DEFAULT VALUES; INSERT INTO trunc_stats_test1 DEFAULT VALUES; INSERT INTO trunc_stats_test1 DEFAULT VALUES; UPDATE trunc_stats_test1 SET id = id + 10 WHERE id IN (1, 2); DELETE FROM trunc_stats_test1 WHERE id = 3; BEGIN; UPDATE trunc_stats_test1 SET id = id + 100; TRUNCATE trunc_stats_test1; INSERT INTO trunc_stats_test1 DEFAULT VALUES; COMMIT; -- use a savepoint: 1 insert, 1 live BEGIN; INSERT INTO trunc_stats_test2 DEFAULT VALUES; INSERT INTO trunc_stats_test2 DEFAULT VALUES; SAVEPOINT p1; INSERT INTO trunc_stats_test2 DEFAULT VALUES; TRUNCATE trunc_stats_test2; INSERT INTO trunc_stats_test2 DEFAULT VALUES; RELEASE SAVEPOINT p1; COMMIT; -- rollback a savepoint: this should count 4 inserts and have 2 -- live tuples after commit (and 2 dead ones due to aborted subxact) BEGIN; INSERT INTO trunc_stats_test3 DEFAULT VALUES; INSERT INTO trunc_stats_test3 DEFAULT VALUES; SAVEPOINT p1; INSERT INTO trunc_stats_test3 DEFAULT VALUES; INSERT INTO trunc_stats_test3 DEFAULT VALUES; TRUNCATE trunc_stats_test3; INSERT INTO trunc_stats_test3 DEFAULT VALUES; ROLLBACK TO SAVEPOINT p1; COMMIT; -- rollback a truncate: this should count 2 inserts and produce 2 dead tuples BEGIN; INSERT INTO trunc_stats_test4 DEFAULT VALUES; INSERT INTO trunc_stats_test4 DEFAULT VALUES; TRUNCATE trunc_stats_test4; INSERT INTO trunc_stats_test4 DEFAULT VALUES; ROLLBACK; -- do a seqscan SELECT count(*) FROM tenk2; -- do an indexscan -- make sure it is not a bitmap scan, which might skip fetching heap tuples SET enable_bitmapscan TO off; SELECT count(*) FROM tenk2 WHERE unique1 = 1; RESET enable_bitmapscan; -- We can't just call wait_for_stats() at this point, because we only -- transmit stats when the session goes idle, and we probably didn't -- transmit the last couple of counts yet thanks to the rate-limiting logic -- in pgstat_report_stat(). But instead of waiting for the rate limiter's -- timeout to elapse, let's just start a new session. The old one will -- then send its stats before dying. \c - -- wait for stats collector to update SELECT wait_for_stats(); -- check effects SELECT relname, n_tup_ins, n_tup_upd, n_tup_del, n_live_tup, n_dead_tup FROM pg_stat_user_tables WHERE relname like 'trunc_stats_test%' order by relname; SELECT st.seq_scan >= pr.seq_scan + 1, st.seq_tup_read >= pr.seq_tup_read + cl.reltuples, st.idx_scan >= pr.idx_scan + 1, st.idx_tup_fetch >= pr.idx_tup_fetch + 1 FROM pg_stat_user_tables AS st, pg_class AS cl, prevstats AS pr WHERE st.relname='tenk2' AND cl.relname='tenk2'; SELECT st.heap_blks_read + st.heap_blks_hit >= pr.heap_blks + cl.relpages, st.idx_blks_read + st.idx_blks_hit >= pr.idx_blks + 1 FROM pg_statio_user_tables AS st, pg_class AS cl, prevstats AS pr WHERE st.relname='tenk2' AND cl.relname='tenk2'; SELECT pr.snap_ts < pg_stat_get_snapshot_timestamp() as snapshot_newer FROM prevstats AS pr; DROP TABLE trunc_stats_test, trunc_stats_test1, trunc_stats_test2, trunc_stats_test3, trunc_stats_test4; DROP TABLE prevstats; -- End of Stats Test libpg_query-13-2.1.0/test/sql/postgres_regress/stats_ext.sql000066400000000000000000001105421413137616400242030ustar00rootroot00000000000000-- Generic extended statistics support -- -- Note: tables for which we check estimated row counts should be created -- with autovacuum_enabled = off, so that we don't have unstable results -- from auto-analyze happening when we didn't expect it. -- -- check the number of estimated/actual rows in the top node create function check_estimated_rows(text) returns table (estimated int, actual int) language plpgsql as $$ declare ln text; tmp text[]; first_row bool := true; begin for ln in execute format('explain analyze %s', $1) loop if first_row then first_row := false; tmp := regexp_match(ln, 'rows=(\d*) .* rows=(\d*)'); return query select tmp[1]::int, tmp[2]::int; end if; end loop; end; $$; -- Verify failures CREATE TABLE ext_stats_test (x int, y int, z int); CREATE STATISTICS tst; CREATE STATISTICS tst ON a, b; CREATE STATISTICS tst FROM sometab; CREATE STATISTICS tst ON a, b FROM nonexistent; CREATE STATISTICS tst ON a, b FROM ext_stats_test; CREATE STATISTICS tst ON x, x, y FROM ext_stats_test; CREATE STATISTICS tst ON x + y FROM ext_stats_test; CREATE STATISTICS tst ON (x, y) FROM ext_stats_test; CREATE STATISTICS tst (unrecognized) ON x, y FROM ext_stats_test; DROP TABLE ext_stats_test; -- Ensure stats are dropped sanely, and test IF NOT EXISTS while at it CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER); CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1; CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1; DROP STATISTICS ab1_a_b_stats; CREATE SCHEMA regress_schema_2; CREATE STATISTICS regress_schema_2.ab1_a_b_stats ON a, b FROM ab1; -- Let's also verify the pg_get_statisticsobjdef output looks sane. SELECT pg_get_statisticsobjdef(oid) FROM pg_statistic_ext WHERE stxname = 'ab1_a_b_stats'; DROP STATISTICS regress_schema_2.ab1_a_b_stats; -- Ensure statistics are dropped when columns are CREATE STATISTICS ab1_b_c_stats ON b, c FROM ab1; CREATE STATISTICS ab1_a_b_c_stats ON a, b, c FROM ab1; CREATE STATISTICS ab1_b_a_stats ON b, a FROM ab1; ALTER TABLE ab1 DROP COLUMN a; \d ab1 -- Ensure statistics are dropped when table is SELECT stxname FROM pg_statistic_ext WHERE stxname LIKE 'ab1%'; DROP TABLE ab1; SELECT stxname FROM pg_statistic_ext WHERE stxname LIKE 'ab1%'; -- Ensure things work sanely with SET STATISTICS 0 CREATE TABLE ab1 (a INTEGER, b INTEGER); ALTER TABLE ab1 ALTER a SET STATISTICS 0; INSERT INTO ab1 SELECT a, a%23 FROM generate_series(1, 1000) a; CREATE STATISTICS ab1_a_b_stats ON a, b FROM ab1; ANALYZE ab1; ALTER TABLE ab1 ALTER a SET STATISTICS -1; -- setting statistics target 0 skips the statistics, without printing any message, so check catalog ALTER STATISTICS ab1_a_b_stats SET STATISTICS 0; \d ab1 ANALYZE ab1; SELECT stxname, stxdndistinct, stxddependencies, stxdmcv FROM pg_statistic_ext s, pg_statistic_ext_data d WHERE s.stxname = 'ab1_a_b_stats' AND d.stxoid = s.oid; ALTER STATISTICS ab1_a_b_stats SET STATISTICS -1; \d+ ab1 -- partial analyze doesn't build stats either ANALYZE ab1 (a); ANALYZE ab1; DROP TABLE ab1; ALTER STATISTICS ab1_a_b_stats SET STATISTICS 0; ALTER STATISTICS IF EXISTS ab1_a_b_stats SET STATISTICS 0; -- Ensure we can build statistics for tables with inheritance. CREATE TABLE ab1 (a INTEGER, b INTEGER); CREATE TABLE ab1c () INHERITS (ab1); INSERT INTO ab1 VALUES (1,1); CREATE STATISTICS ab1_a_b_stats ON a, b FROM ab1; ANALYZE ab1; DROP TABLE ab1 CASCADE; -- Verify supported object types for extended statistics CREATE schema tststats; CREATE TABLE tststats.t (a int, b int, c text); CREATE INDEX ti ON tststats.t (a, b); CREATE SEQUENCE tststats.s; CREATE VIEW tststats.v AS SELECT * FROM tststats.t; CREATE MATERIALIZED VIEW tststats.mv AS SELECT * FROM tststats.t; CREATE TYPE tststats.ty AS (a int, b int, c text); CREATE FOREIGN DATA WRAPPER extstats_dummy_fdw; CREATE SERVER extstats_dummy_srv FOREIGN DATA WRAPPER extstats_dummy_fdw; CREATE FOREIGN TABLE tststats.f (a int, b int, c text) SERVER extstats_dummy_srv; CREATE TABLE tststats.pt (a int, b int, c text) PARTITION BY RANGE (a, b); CREATE TABLE tststats.pt1 PARTITION OF tststats.pt FOR VALUES FROM (-10, -10) TO (10, 10); CREATE STATISTICS tststats.s1 ON a, b FROM tststats.t; CREATE STATISTICS tststats.s2 ON a, b FROM tststats.ti; CREATE STATISTICS tststats.s3 ON a, b FROM tststats.s; CREATE STATISTICS tststats.s4 ON a, b FROM tststats.v; CREATE STATISTICS tststats.s5 ON a, b FROM tststats.mv; CREATE STATISTICS tststats.s6 ON a, b FROM tststats.ty; CREATE STATISTICS tststats.s7 ON a, b FROM tststats.f; CREATE STATISTICS tststats.s8 ON a, b FROM tststats.pt; CREATE STATISTICS tststats.s9 ON a, b FROM tststats.pt1; DO $$ DECLARE relname text := reltoastrelid::regclass FROM pg_class WHERE oid = 'tststats.t'::regclass; BEGIN EXECUTE 'CREATE STATISTICS tststats.s10 ON a, b FROM ' || relname; EXCEPTION WHEN wrong_object_type THEN RAISE NOTICE 'stats on toast table not created'; END; $$; DROP SCHEMA tststats CASCADE; DROP FOREIGN DATA WRAPPER extstats_dummy_fdw CASCADE; -- n-distinct tests CREATE TABLE ndistinct ( filler1 TEXT, filler2 NUMERIC, a INT, b INT, filler3 DATE, c INT, d INT ) WITH (autovacuum_enabled = off); -- over-estimates when using only per-column statistics INSERT INTO ndistinct (a, b, c, filler1) SELECT i/100, i/100, i/100, cash_words((i/100)::money) FROM generate_series(1,1000) s(i); ANALYZE ndistinct; -- Group Aggregate, due to over-estimate of the number of groups SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY b, c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c, d'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY b, c, d'); -- correct command CREATE STATISTICS s10 ON a, b, c FROM ndistinct; ANALYZE ndistinct; SELECT s.stxkind, d.stxdndistinct FROM pg_statistic_ext s, pg_statistic_ext_data d WHERE s.stxrelid = 'ndistinct'::regclass AND d.stxoid = s.oid; -- minor improvement, make sure the ctid does not break the matching SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY ctid, a, b'); -- Hash Aggregate, thanks to estimates improved by the statistic SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY b, c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c'); -- last two plans keep using Group Aggregate, because 'd' is not covered -- by the statistic and while it's NULL-only we assume 200 values for it SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c, d'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY b, c, d'); TRUNCATE TABLE ndistinct; -- under-estimates when using only per-column statistics INSERT INTO ndistinct (a, b, c, filler1) SELECT mod(i,50), mod(i,51), mod(i,32), cash_words(mod(i,33)::int::money) FROM generate_series(1,5000) s(i); ANALYZE ndistinct; SELECT s.stxkind, d.stxdndistinct FROM pg_statistic_ext s, pg_statistic_ext_data d WHERE s.stxrelid = 'ndistinct'::regclass AND d.stxoid = s.oid; -- correct estimates SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c, d'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY b, c, d'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, d'); DROP STATISTICS s10; SELECT s.stxkind, d.stxdndistinct FROM pg_statistic_ext s, pg_statistic_ext_data d WHERE s.stxrelid = 'ndistinct'::regclass AND d.stxoid = s.oid; -- dropping the statistics results in under-estimates SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, b, c, d'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY b, c, d'); SELECT * FROM check_estimated_rows('SELECT COUNT(*) FROM ndistinct GROUP BY a, d'); -- functional dependencies tests CREATE TABLE functional_dependencies ( filler1 TEXT, filler2 NUMERIC, a INT, b TEXT, filler3 DATE, c INT, d TEXT ) WITH (autovacuum_enabled = off); CREATE INDEX fdeps_ab_idx ON functional_dependencies (a, b); CREATE INDEX fdeps_abc_idx ON functional_dependencies (a, b, c); -- random data (no functional dependencies) INSERT INTO functional_dependencies (a, b, c, filler1) SELECT mod(i, 23), mod(i, 29), mod(i, 31), i FROM generate_series(1,5000) s(i); ANALYZE functional_dependencies; SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = 1 AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = 1 AND b = ''1'' AND c = 1'); -- create statistics CREATE STATISTICS func_deps_stat (dependencies) ON a, b, c FROM functional_dependencies; ANALYZE functional_dependencies; SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = 1 AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = 1 AND b = ''1'' AND c = 1'); -- a => b, a => c, b => c TRUNCATE functional_dependencies; DROP STATISTICS func_deps_stat; INSERT INTO functional_dependencies (a, b, c, filler1) SELECT mod(i,100), mod(i,50), mod(i,25), i FROM generate_series(1,5000) s(i); ANALYZE functional_dependencies; SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = 1 AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = 1 AND b = ''1'' AND c = 1'); -- IN SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 51) AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 51) AND b IN (''1'', ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 2, 51, 52) AND b IN (''1'', ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 2, 51, 52) AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 26, 51, 76) AND b IN (''1'', ''26'') AND c = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 26, 51, 76) AND b IN (''1'', ''26'') AND c IN (1)'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 2, 26, 27, 51, 52, 76, 77) AND b IN (''1'', ''2'', ''26'', ''27'') AND c IN (1, 2)'); -- OR clauses referencing the same attribute SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a = 1 OR a = 51) AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a = 1 OR a = 51) AND (b = ''1'' OR b = ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a = 1 OR a = 2 OR a = 51 OR a = 52) AND (b = ''1'' OR b = ''2'')'); -- OR clauses referencing different attributes SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a = 1 OR b = ''1'') AND b = ''1'''); -- ANY SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 51]) AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 51]) AND b = ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 2, 51, 52]) AND b = ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 26, 51, 76]) AND b = ANY (ARRAY[''1'', ''26'']) AND c = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 26, 51, 76]) AND b = ANY (ARRAY[''1'', ''26'']) AND c = ANY (ARRAY[1])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 2, 26, 27, 51, 52, 76, 77]) AND b = ANY (ARRAY[''1'', ''2'', ''26'', ''27'']) AND c = ANY (ARRAY[1, 2])'); -- ANY with inequalities should not benefit from functional dependencies SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a < ANY (ARRAY[1, 51]) AND b > ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a >= ANY (ARRAY[1, 51]) AND b <= ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a <= ANY (ARRAY[1, 2, 51, 52]) AND b >= ANY (ARRAY[''1'', ''2''])'); -- ALL (should not benefit from functional dependencies) SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 51) AND b = ALL (ARRAY[''1''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 51) AND b = ALL (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 2, 51, 52) AND b = ALL (ARRAY[''1'', ''2''])'); -- create statistics CREATE STATISTICS func_deps_stat (dependencies) ON a, b, c FROM functional_dependencies; ANALYZE functional_dependencies; -- print the detected dependencies SELECT dependencies FROM pg_stats_ext WHERE statistics_name = 'func_deps_stat'; SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = 1 AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = 1 AND b = ''1'' AND c = 1'); -- IN SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 51) AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 51) AND b IN (''1'', ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 2, 51, 52) AND b IN (''1'', ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 2, 51, 52) AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 26, 51, 76) AND b IN (''1'', ''26'') AND c = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 26, 51, 76) AND b IN (''1'', ''26'') AND c IN (1)'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 2, 26, 27, 51, 52, 76, 77) AND b IN (''1'', ''2'', ''26'', ''27'') AND c IN (1, 2)'); -- OR clauses referencing the same attribute SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a = 1 OR a = 51) AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a = 1 OR a = 51) AND (b = ''1'' OR b = ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a = 1 OR a = 2 OR a = 51 OR a = 52) AND (b = ''1'' OR b = ''2'')'); -- OR clauses referencing different attributes are incompatible SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE (a = 1 OR b = ''1'') AND b = ''1'''); -- ANY SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 51]) AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 51]) AND b = ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 2, 51, 52]) AND b = ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 26, 51, 76]) AND b = ANY (ARRAY[''1'', ''26'']) AND c = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 26, 51, 76]) AND b = ANY (ARRAY[''1'', ''26'']) AND c = ANY (ARRAY[1])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = ANY (ARRAY[1, 2, 26, 27, 51, 52, 76, 77]) AND b = ANY (ARRAY[''1'', ''2'', ''26'', ''27'']) AND c = ANY (ARRAY[1, 2])'); -- ANY with inequalities should not benefit from functional dependencies SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a < ANY (ARRAY[1, 51]) AND b > ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a >= ANY (ARRAY[1, 51]) AND b <= ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a <= ANY (ARRAY[1, 2, 51, 52]) AND b >= ANY (ARRAY[''1'', ''2''])'); -- ALL (should not benefit from functional dependencies) SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 51) AND b = ALL (ARRAY[''1''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 51) AND b = ALL (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a IN (1, 2, 51, 52) AND b = ALL (ARRAY[''1'', ''2''])'); -- changing the type of column c causes its single-column stats to be dropped, -- giving a default estimate of 0.005 * 5000 = 25 for (c = 1); check multiple -- clauses estimated with functional dependencies does not exceed this ALTER TABLE functional_dependencies ALTER COLUMN c TYPE numeric; SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = 1 AND b = ''1'' AND c = 1'); ANALYZE functional_dependencies; SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies WHERE a = 1 AND b = ''1'' AND c = 1'); -- check the ability to use multiple functional dependencies CREATE TABLE functional_dependencies_multi ( a INTEGER, b INTEGER, c INTEGER, d INTEGER ) WITH (autovacuum_enabled = off); INSERT INTO functional_dependencies_multi (a, b, c, d) SELECT mod(i,7), mod(i,7), mod(i,11), mod(i,11) FROM generate_series(1,5000) s(i); ANALYZE functional_dependencies_multi; -- estimates without any functional dependencies SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies_multi WHERE a = 0 AND b = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies_multi WHERE 0 = a AND 0 = b'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies_multi WHERE c = 0 AND d = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies_multi WHERE a = 0 AND b = 0 AND c = 0 AND d = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies_multi WHERE 0 = a AND b = 0 AND 0 = c AND d = 0'); -- create separate functional dependencies CREATE STATISTICS functional_dependencies_multi_1 (dependencies) ON a, b FROM functional_dependencies_multi; CREATE STATISTICS functional_dependencies_multi_2 (dependencies) ON c, d FROM functional_dependencies_multi; ANALYZE functional_dependencies_multi; SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies_multi WHERE a = 0 AND b = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies_multi WHERE 0 = a AND 0 = b'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies_multi WHERE c = 0 AND d = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies_multi WHERE a = 0 AND b = 0 AND c = 0 AND d = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM functional_dependencies_multi WHERE 0 = a AND b = 0 AND 0 = c AND d = 0'); DROP TABLE functional_dependencies_multi; -- MCV lists CREATE TABLE mcv_lists ( filler1 TEXT, filler2 NUMERIC, a INT, b VARCHAR, filler3 DATE, c INT, d TEXT ) WITH (autovacuum_enabled = off); -- random data (no MCV list) INSERT INTO mcv_lists (a, b, c, filler1) SELECT mod(i,37), mod(i,41), mod(i,43), mod(i,47) FROM generate_series(1,5000) s(i); ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1'' AND c = 1'); -- create statistics CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, c FROM mcv_lists; ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1'' AND c = 1'); -- 100 distinct combinations, all in the MCV list TRUNCATE mcv_lists; DROP STATISTICS mcv_lists_stats; INSERT INTO mcv_lists (a, b, c, filler1) SELECT mod(i,100), mod(i,50), mod(i,25), i FROM generate_series(1,5000) s(i); ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 1 = a AND ''1'' = b'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < 1 AND b < ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 1 > a AND ''1'' > b'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a <= 0 AND b <= ''0'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 0 >= a AND ''0'' >= b'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1'' AND c = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < 5 AND b < ''1'' AND c < 5'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < 5 AND ''1'' > b AND 5 > c'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a <= 4 AND b <= ''0'' AND c <= 4'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 4 >= a AND ''0'' >= b AND 4 >= c'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 OR b = ''1'' OR c = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 OR b = ''1'' OR c = 1 OR d IS NOT NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IN (1, 2, 51, 52) AND b IN ( ''1'', ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IN (1, 2, 51, 52, NULL) AND b IN ( ''1'', ''2'', NULL)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[1, 2, 51, 52]) AND b = ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[NULL, 1, 2, 51, 52]) AND b = ANY (ARRAY[''1'', ''2'', NULL])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a <= ANY (ARRAY[1, 2, 3]) AND b IN (''1'', ''2'', ''3'')'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a <= ANY (ARRAY[1, NULL, 2, 3]) AND b IN (''1'', ''2'', NULL, ''3'')'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY[4, 5]) AND c > ANY (ARRAY[1, 2, 3])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY[4, 5]) AND c > ANY (ARRAY[1, 2, 3, NULL])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY[4, 5]) AND b IN (''1'', ''2'', ''3'') AND c > ANY (ARRAY[1, 2, 3])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY[4, 5]) AND b IN (''1'', ''2'', NULL, ''3'') AND c > ANY (ARRAY[1, 2, NULL, 3])'); -- create statistics CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, c FROM mcv_lists; ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 1 = a AND ''1'' = b'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < 1 AND b < ''1'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 1 > a AND ''1'' > b'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a <= 0 AND b <= ''0'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 0 >= a AND ''0'' >= b'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1'' AND c = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < 5 AND b < ''1'' AND c < 5'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < 5 AND ''1'' > b AND 5 > c'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a <= 4 AND b <= ''0'' AND c <= 4'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE 4 >= a AND ''0'' >= b AND 4 >= c'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 OR b = ''1'' OR c = 1'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IN (1, 2, 51, 52) AND b IN ( ''1'', ''2'')'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IN (1, 2, 51, 52, NULL) AND b IN ( ''1'', ''2'', NULL)'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[1, 2, 51, 52]) AND b = ANY (ARRAY[''1'', ''2''])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = ANY (ARRAY[NULL, 1, 2, 51, 52]) AND b = ANY (ARRAY[''1'', ''2'', NULL])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a <= ANY (ARRAY[1, 2, 3]) AND b IN (''1'', ''2'', ''3'')'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a <= ANY (ARRAY[1, NULL, 2, 3]) AND b IN (''1'', ''2'', NULL, ''3'')'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY[4, 5]) AND c > ANY (ARRAY[1, 2, 3])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY[4, 5]) AND c > ANY (ARRAY[1, 2, 3, NULL])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY[4, 5]) AND b IN (''1'', ''2'', ''3'') AND c > ANY (ARRAY[1, 2, 3])'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a < ALL (ARRAY[4, 5]) AND b IN (''1'', ''2'', NULL, ''3'') AND c > ANY (ARRAY[1, 2, NULL, 3])'); -- we can't use the statistic for OR clauses that are not fully covered (missing 'd' attribute) SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 OR b = ''1'' OR c = 1 OR d IS NOT NULL'); -- check change of unrelated column type does not reset the MCV statistics ALTER TABLE mcv_lists ALTER COLUMN d TYPE VARCHAR(64); SELECT d.stxdmcv IS NOT NULL FROM pg_statistic_ext s, pg_statistic_ext_data d WHERE s.stxname = 'mcv_lists_stats' AND d.stxoid = s.oid; -- check change of column type resets the MCV statistics ALTER TABLE mcv_lists ALTER COLUMN c TYPE numeric; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1'''); ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 AND b = ''1'''); -- 100 distinct combinations with NULL values, all in the MCV list TRUNCATE mcv_lists; DROP STATISTICS mcv_lists_stats; INSERT INTO mcv_lists (a, b, c, filler1) SELECT (CASE WHEN mod(i,100) = 1 THEN NULL ELSE mod(i,100) END), (CASE WHEN mod(i,50) = 1 THEN NULL ELSE mod(i,50) END), (CASE WHEN mod(i,25) = 1 THEN NULL ELSE mod(i,25) END), i FROM generate_series(1,5000) s(i); ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IS NULL AND b IS NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IS NULL AND b IS NULL AND c IS NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IS NULL AND b IS NOT NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IS NOT NULL AND b IS NULL AND c IS NOT NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IN (0, 1) AND b IN (''0'', ''1'')'); -- create statistics CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, c FROM mcv_lists; ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IS NULL AND b IS NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IS NULL AND b IS NULL AND c IS NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IS NULL AND b IS NOT NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IS NOT NULL AND b IS NULL AND c IS NOT NULL'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IN (0, 1) AND b IN (''0'', ''1'')'); -- test pg_mcv_list_items with a very simple (single item) MCV list TRUNCATE mcv_lists; INSERT INTO mcv_lists (a, b, c) SELECT 1, 2, 3 FROM generate_series(1,1000) s(i); ANALYZE mcv_lists; SELECT m.* FROM pg_statistic_ext s, pg_statistic_ext_data d, pg_mcv_list_items(d.stxdmcv) m WHERE s.stxname = 'mcv_lists_stats' AND d.stxoid = s.oid; -- 2 distinct combinations with NULL values, all in the MCV list TRUNCATE mcv_lists; DROP STATISTICS mcv_lists_stats; INSERT INTO mcv_lists (a, b, c, d) SELECT NULL, -- always NULL (CASE WHEN mod(i,2) = 0 THEN NULL ELSE 'x' END), (CASE WHEN mod(i,2) = 0 THEN NULL ELSE 0 END), (CASE WHEN mod(i,2) = 0 THEN NULL ELSE 'x' END) FROM generate_series(1,5000) s(i); ANALYZE mcv_lists; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE b = ''x'' OR d = ''x'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 OR b = ''x'' OR d = ''x'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IS NULL AND (b = ''x'' OR d = ''x'')'); -- create statistics CREATE STATISTICS mcv_lists_stats (mcv) ON a, b, d FROM mcv_lists; ANALYZE mcv_lists; -- test pg_mcv_list_items with MCV list containing variable-length data and NULLs SELECT m.* FROM pg_statistic_ext s, pg_statistic_ext_data d, pg_mcv_list_items(d.stxdmcv) m WHERE s.stxname = 'mcv_lists_stats' AND d.stxoid = s.oid; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE b = ''x'' OR d = ''x'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = 1 OR b = ''x'' OR d = ''x'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a IS NULL AND (b = ''x'' OR d = ''x'')'); -- mcv with pass-by-ref fixlen types, e.g. uuid CREATE TABLE mcv_lists_uuid ( a UUID, b UUID, c UUID ) WITH (autovacuum_enabled = off); INSERT INTO mcv_lists_uuid (a, b, c) SELECT md5(mod(i,100)::text)::uuid, md5(mod(i,50)::text)::uuid, md5(mod(i,25)::text)::uuid FROM generate_series(1,5000) s(i); ANALYZE mcv_lists_uuid; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_uuid WHERE a = ''1679091c-5a88-0faf-6fb5-e6087eb1b2dc'' AND b = ''1679091c-5a88-0faf-6fb5-e6087eb1b2dc'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_uuid WHERE a = ''1679091c-5a88-0faf-6fb5-e6087eb1b2dc'' AND b = ''1679091c-5a88-0faf-6fb5-e6087eb1b2dc'' AND c = ''1679091c-5a88-0faf-6fb5-e6087eb1b2dc'''); CREATE STATISTICS mcv_lists_uuid_stats (mcv) ON a, b, c FROM mcv_lists_uuid; ANALYZE mcv_lists_uuid; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_uuid WHERE a = ''1679091c-5a88-0faf-6fb5-e6087eb1b2dc'' AND b = ''1679091c-5a88-0faf-6fb5-e6087eb1b2dc'''); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_uuid WHERE a = ''1679091c-5a88-0faf-6fb5-e6087eb1b2dc'' AND b = ''1679091c-5a88-0faf-6fb5-e6087eb1b2dc'' AND c = ''1679091c-5a88-0faf-6fb5-e6087eb1b2dc'''); DROP TABLE mcv_lists_uuid; -- mcv with arrays CREATE TABLE mcv_lists_arrays ( a TEXT[], b NUMERIC[], c INT[] ) WITH (autovacuum_enabled = off); INSERT INTO mcv_lists_arrays (a, b, c) SELECT ARRAY[md5((i/100)::text), md5((i/100-1)::text), md5((i/100+1)::text)], ARRAY[(i/100-1)::numeric/1000, (i/100)::numeric/1000, (i/100+1)::numeric/1000], ARRAY[(i/100-1), i/100, (i/100+1)] FROM generate_series(1,5000) s(i); CREATE STATISTICS mcv_lists_arrays_stats (mcv) ON a, b, c FROM mcv_lists_arrays; ANALYZE mcv_lists_arrays; -- mcv with bool CREATE TABLE mcv_lists_bool ( a BOOL, b BOOL, c BOOL ) WITH (autovacuum_enabled = off); INSERT INTO mcv_lists_bool (a, b, c) SELECT (mod(i,2) = 0), (mod(i,4) = 0), (mod(i,8) = 0) FROM generate_series(1,10000) s(i); ANALYZE mcv_lists_bool; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_bool WHERE a AND b AND c'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_bool WHERE NOT a AND b AND c'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_bool WHERE NOT a AND NOT b AND c'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_bool WHERE NOT a AND b AND NOT c'); CREATE STATISTICS mcv_lists_bool_stats (mcv) ON a, b, c FROM mcv_lists_bool; ANALYZE mcv_lists_bool; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_bool WHERE a AND b AND c'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_bool WHERE NOT a AND b AND c'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_bool WHERE NOT a AND NOT b AND c'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_bool WHERE NOT a AND b AND NOT c'); -- check the ability to use multiple MCV lists CREATE TABLE mcv_lists_multi ( a INTEGER, b INTEGER, c INTEGER, d INTEGER ) WITH (autovacuum_enabled = off); INSERT INTO mcv_lists_multi (a, b, c, d) SELECT mod(i,5), mod(i,5), mod(i,7), mod(i,7) FROM generate_series(1,5000) s(i); ANALYZE mcv_lists_multi; -- estimates without any mcv statistics SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE a = 0 AND b = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE c = 0 AND d = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE a = 0 AND b = 0 AND c = 0 AND d = 0'); -- create separate MCV statistics CREATE STATISTICS mcv_lists_multi_1 (mcv) ON a, b FROM mcv_lists_multi; CREATE STATISTICS mcv_lists_multi_2 (mcv) ON c, d FROM mcv_lists_multi; ANALYZE mcv_lists_multi; SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE a = 0 AND b = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE c = 0 AND d = 0'); SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists_multi WHERE a = 0 AND b = 0 AND c = 0 AND d = 0'); DROP TABLE mcv_lists_multi; -- Permission tests. Users should not be able to see specific data values in -- the extended statistics, if they lack permission to see those values in -- the underlying table. -- -- Currently this is only relevant for MCV stats. CREATE SCHEMA tststats; CREATE TABLE tststats.priv_test_tbl ( a int, b int ); INSERT INTO tststats.priv_test_tbl SELECT mod(i,5), mod(i,10) FROM generate_series(1,100) s(i); CREATE STATISTICS tststats.priv_test_stats (mcv) ON a, b FROM tststats.priv_test_tbl; ANALYZE tststats.priv_test_tbl; -- User with no access CREATE USER regress_stats_user1; GRANT USAGE ON SCHEMA tststats TO regress_stats_user1; SET SESSION AUTHORIZATION regress_stats_user1; SELECT * FROM tststats.priv_test_tbl; -- Permission denied -- Attempt to gain access using a leaky operator CREATE FUNCTION op_leak(int, int) RETURNS bool AS 'BEGIN RAISE NOTICE ''op_leak => %, %'', $1, $2; RETURN $1 < $2; END' LANGUAGE plpgsql; CREATE OPERATOR <<< (procedure = op_leak, leftarg = int, rightarg = int, restrict = scalarltsel); SELECT * FROM tststats.priv_test_tbl WHERE a <<< 0 AND b <<< 0; -- Permission denied DELETE FROM tststats.priv_test_tbl WHERE a <<< 0 AND b <<< 0; -- Permission denied -- Grant access via a security barrier view, but hide all data RESET SESSION AUTHORIZATION; CREATE VIEW tststats.priv_test_view WITH (security_barrier=true) AS SELECT * FROM tststats.priv_test_tbl WHERE false; GRANT SELECT, DELETE ON tststats.priv_test_view TO regress_stats_user1; -- Should now have access via the view, but see nothing and leak nothing SET SESSION AUTHORIZATION regress_stats_user1; SELECT * FROM tststats.priv_test_view WHERE a <<< 0 AND b <<< 0; -- Should not leak DELETE FROM tststats.priv_test_view WHERE a <<< 0 AND b <<< 0; -- Should not leak -- Grant table access, but hide all data with RLS RESET SESSION AUTHORIZATION; ALTER TABLE tststats.priv_test_tbl ENABLE ROW LEVEL SECURITY; GRANT SELECT, DELETE ON tststats.priv_test_tbl TO regress_stats_user1; -- Should now have direct table access, but see nothing and leak nothing SET SESSION AUTHORIZATION regress_stats_user1; SELECT * FROM tststats.priv_test_tbl WHERE a <<< 0 AND b <<< 0; -- Should not leak DELETE FROM tststats.priv_test_tbl WHERE a <<< 0 AND b <<< 0; -- Should not leak -- Tidy up DROP OPERATOR <<< (int, int); DROP FUNCTION op_leak(int, int); RESET SESSION AUTHORIZATION; DROP SCHEMA tststats CASCADE; DROP USER regress_stats_user1; libpg_query-13-2.1.0/test/sql/postgres_regress/strings.sql000066400000000000000000000565421413137616400236670ustar00rootroot00000000000000-- -- STRINGS -- Test various data entry syntaxes. -- -- SQL string continuation syntax -- E021-03 character string literals SELECT 'first line' ' - next line' ' - third line' AS "Three lines to one"; -- illegal string continuation syntax SELECT 'first line' ' - next line' /* this comment is not allowed here */ ' - third line' AS "Illegal comment within continuation"; -- Unicode escapes SET standard_conforming_strings TO on; SELECT U&'d\0061t\+000061' AS U&"d\0061t\+000061"; SELECT U&'d!0061t\+000061' UESCAPE '!' AS U&"d*0061t\+000061" UESCAPE '*'; SELECT U&'a\\b' AS "a\b"; SELECT U&' \' UESCAPE '!' AS "tricky"; SELECT 'tricky' AS U&"\" UESCAPE '!'; SELECT U&'wrong: \061'; SELECT U&'wrong: \+0061'; SELECT U&'wrong: +0061' UESCAPE +; SELECT U&'wrong: +0061' UESCAPE '+'; SELECT U&'wrong: \db99'; SELECT U&'wrong: \db99xy'; SELECT U&'wrong: \db99\\'; SELECT U&'wrong: \db99\0061'; SELECT U&'wrong: \+00db99\+000061'; SELECT U&'wrong: \+2FFFFF'; -- while we're here, check the same cases in E-style literals SELECT E'd\u0061t\U00000061' AS "data"; SELECT E'a\\b' AS "a\b"; SELECT E'wrong: \u061'; SELECT E'wrong: \U0061'; SELECT E'wrong: \udb99'; SELECT E'wrong: \udb99xy'; SELECT E'wrong: \udb99\\'; SELECT E'wrong: \udb99\u0061'; SELECT E'wrong: \U0000db99\U00000061'; SELECT E'wrong: \U002FFFFF'; SET standard_conforming_strings TO off; SELECT U&'d\0061t\+000061' AS U&"d\0061t\+000061"; SELECT U&'d!0061t\+000061' UESCAPE '!' AS U&"d*0061t\+000061" UESCAPE '*'; SELECT U&' \' UESCAPE '!' AS "tricky"; SELECT 'tricky' AS U&"\" UESCAPE '!'; SELECT U&'wrong: \061'; SELECT U&'wrong: \+0061'; SELECT U&'wrong: +0061' UESCAPE '+'; RESET standard_conforming_strings; -- bytea SET bytea_output TO hex; SELECT E'\\xDeAdBeEf'::bytea; SELECT E'\\x De Ad Be Ef '::bytea; SELECT E'\\xDeAdBeE'::bytea; SELECT E'\\xDeAdBeEx'::bytea; SELECT E'\\xDe00BeEf'::bytea; SELECT E'DeAdBeEf'::bytea; SELECT E'De\\000dBeEf'::bytea; SELECT E'De\123dBeEf'::bytea; SELECT E'De\\123dBeEf'::bytea; SELECT E'De\\678dBeEf'::bytea; SET bytea_output TO escape; SELECT E'\\xDeAdBeEf'::bytea; SELECT E'\\x De Ad Be Ef '::bytea; SELECT E'\\xDe00BeEf'::bytea; SELECT E'DeAdBeEf'::bytea; SELECT E'De\\000dBeEf'::bytea; SELECT E'De\\123dBeEf'::bytea; -- -- test conversions between various string types -- E021-10 implicit casting among the character data types -- SELECT CAST(f1 AS text) AS "text(char)" FROM CHAR_TBL; SELECT CAST(f1 AS text) AS "text(varchar)" FROM VARCHAR_TBL; SELECT CAST(name 'namefield' AS text) AS "text(name)"; -- since this is an explicit cast, it should truncate w/o error: SELECT CAST(f1 AS char(10)) AS "char(text)" FROM TEXT_TBL; -- note: implicit-cast case is tested in char.sql SELECT CAST(f1 AS char(20)) AS "char(text)" FROM TEXT_TBL; SELECT CAST(f1 AS char(10)) AS "char(varchar)" FROM VARCHAR_TBL; SELECT CAST(name 'namefield' AS char(10)) AS "char(name)"; SELECT CAST(f1 AS varchar) AS "varchar(text)" FROM TEXT_TBL; SELECT CAST(f1 AS varchar) AS "varchar(char)" FROM CHAR_TBL; SELECT CAST(name 'namefield' AS varchar) AS "varchar(name)"; -- -- test SQL string functions -- E### and T### are feature reference numbers from SQL99 -- -- E021-09 trim function SELECT TRIM(BOTH FROM ' bunch o blanks ') = 'bunch o blanks' AS "bunch o blanks"; SELECT TRIM(LEADING FROM ' bunch o blanks ') = 'bunch o blanks ' AS "bunch o blanks "; SELECT TRIM(TRAILING FROM ' bunch o blanks ') = ' bunch o blanks' AS " bunch o blanks"; SELECT TRIM(BOTH 'x' FROM 'xxxxxsome Xsxxxxx') = 'some Xs' AS "some Xs"; -- E021-06 substring expression SELECT SUBSTRING('1234567890' FROM 3) = '34567890' AS "34567890"; SELECT SUBSTRING('1234567890' FROM 4 FOR 3) = '456' AS "456"; -- test overflow cases SELECT SUBSTRING('string' FROM 2 FOR 2147483646) AS "tring"; SELECT SUBSTRING('string' FROM -10 FOR 2147483646) AS "string"; SELECT SUBSTRING('string' FROM -10 FOR -2147483646) AS "error"; -- T581 regular expression substring (with SQL's bizarre regexp syntax) SELECT SUBSTRING('abcdefg' FROM 'a#"(b_d)#"%' FOR '#') AS "bcd"; -- No match should return NULL SELECT SUBSTRING('abcdefg' FROM '#"(b_d)#"%' FOR '#') IS NULL AS "True"; -- Null inputs should return NULL SELECT SUBSTRING('abcdefg' FROM '%' FOR NULL) IS NULL AS "True"; SELECT SUBSTRING(NULL FROM '%' FOR '#') IS NULL AS "True"; SELECT SUBSTRING('abcdefg' FROM NULL FOR '#') IS NULL AS "True"; -- The first and last parts should act non-greedy SELECT SUBSTRING('abcdefg' FROM 'a#"%#"g' FOR '#') AS "bcdef"; SELECT SUBSTRING('abcdefg' FROM 'a*#"%#"g*' FOR '#') AS "abcdefg"; -- Vertical bar in any part affects only that part SELECT SUBSTRING('abcdefg' FROM 'a|b#"%#"g' FOR '#') AS "bcdef"; SELECT SUBSTRING('abcdefg' FROM 'a#"%#"x|g' FOR '#') AS "bcdef"; SELECT SUBSTRING('abcdefg' FROM 'a#"%|ab#"g' FOR '#') AS "bcdef"; -- Can't have more than two part separators SELECT SUBSTRING('abcdefg' FROM 'a*#"%#"g*#"x' FOR '#') AS "error"; -- Postgres extension: with 0 or 1 separator, assume parts 1 and 3 are empty SELECT SUBSTRING('abcdefg' FROM 'a#"%g' FOR '#') AS "bcdefg"; SELECT SUBSTRING('abcdefg' FROM 'a%g' FOR '#') AS "abcdefg"; -- substring() with just two arguments is not allowed by SQL spec; -- we accept it, but we interpret the pattern as a POSIX regexp not SQL SELECT SUBSTRING('abcdefg' FROM 'c.e') AS "cde"; -- With a parenthesized subexpression, return only what matches the subexpr SELECT SUBSTRING('abcdefg' FROM 'b(.*)f') AS "cde"; -- Check behavior of SIMILAR TO, which uses largely the same regexp variant SELECT 'abcdefg' SIMILAR TO '_bcd%' AS true; SELECT 'abcdefg' SIMILAR TO 'bcd%' AS false; SELECT 'abcdefg' SIMILAR TO '_bcd#%' ESCAPE '#' AS false; SELECT 'abcd%' SIMILAR TO '_bcd#%' ESCAPE '#' AS true; -- Postgres uses '\' as the default escape character, which is not per spec SELECT 'abcdefg' SIMILAR TO '_bcd\%' AS false; -- and an empty string to mean "no escape", which is also not per spec SELECT 'abcd\efg' SIMILAR TO '_bcd\%' ESCAPE '' AS true; -- these behaviors are per spec, though: SELECT 'abcdefg' SIMILAR TO '_bcd%' ESCAPE NULL AS null; SELECT 'abcdefg' SIMILAR TO '_bcd#%' ESCAPE '##' AS error; -- Test back reference in regexp_replace SELECT regexp_replace('1112223333', E'(\\d{3})(\\d{3})(\\d{4})', E'(\\1) \\2-\\3'); SELECT regexp_replace('AAA BBB CCC ', E'\\s+', ' ', 'g'); SELECT regexp_replace('AAA', '^|$', 'Z', 'g'); SELECT regexp_replace('AAA aaa', 'A+', 'Z', 'gi'); -- invalid regexp option SELECT regexp_replace('AAA aaa', 'A+', 'Z', 'z'); -- set so we can tell NULL from empty string \pset null '\\N' -- return all matches from regexp SELECT regexp_matches('foobarbequebaz', $re$(bar)(beque)$re$); -- test case insensitive SELECT regexp_matches('foObARbEqUEbAz', $re$(bar)(beque)$re$, 'i'); -- global option - more than one match SELECT regexp_matches('foobarbequebazilbarfbonk', $re$(b[^b]+)(b[^b]+)$re$, 'g'); -- empty capture group (matched empty string) SELECT regexp_matches('foobarbequebaz', $re$(bar)(.*)(beque)$re$); -- no match SELECT regexp_matches('foobarbequebaz', $re$(bar)(.+)(beque)$re$); -- optional capture group did not match, null entry in array SELECT regexp_matches('foobarbequebaz', $re$(bar)(.+)?(beque)$re$); -- no capture groups SELECT regexp_matches('foobarbequebaz', $re$barbeque$re$); -- start/end-of-line matches are of zero length SELECT regexp_matches('foo' || chr(10) || 'bar' || chr(10) || 'bequq' || chr(10) || 'baz', '^', 'mg'); SELECT regexp_matches('foo' || chr(10) || 'bar' || chr(10) || 'bequq' || chr(10) || 'baz', '$', 'mg'); SELECT regexp_matches('1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4' || chr(10), '^.?', 'mg'); SELECT regexp_matches(chr(10) || '1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4' || chr(10), '.?$', 'mg'); SELECT regexp_matches(chr(10) || '1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4', '.?$', 'mg'); -- give me errors SELECT regexp_matches('foobarbequebaz', $re$(bar)(beque)$re$, 'gz'); SELECT regexp_matches('foobarbequebaz', $re$(barbeque$re$); SELECT regexp_matches('foobarbequebaz', $re$(bar)(beque){2,1}$re$); -- split string on regexp SELECT foo, length(foo) FROM regexp_split_to_table('the quick brown fox jumps over the lazy dog', $re$\s+$re$) AS foo; SELECT regexp_split_to_array('the quick brown fox jumps over the lazy dog', $re$\s+$re$); SELECT foo, length(foo) FROM regexp_split_to_table('the quick brown fox jumps over the lazy dog', $re$\s*$re$) AS foo; SELECT regexp_split_to_array('the quick brown fox jumps over the lazy dog', $re$\s*$re$); SELECT foo, length(foo) FROM regexp_split_to_table('the quick brown fox jumps over the lazy dog', '') AS foo; SELECT regexp_split_to_array('the quick brown fox jumps over the lazy dog', ''); -- case insensitive SELECT foo, length(foo) FROM regexp_split_to_table('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'i') AS foo; SELECT regexp_split_to_array('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'i'); -- no match of pattern SELECT foo, length(foo) FROM regexp_split_to_table('the quick brown fox jumps over the lazy dog', 'nomatch') AS foo; SELECT regexp_split_to_array('the quick brown fox jumps over the lazy dog', 'nomatch'); -- some corner cases SELECT regexp_split_to_array('123456','1'); SELECT regexp_split_to_array('123456','6'); SELECT regexp_split_to_array('123456','.'); SELECT regexp_split_to_array('123456',''); SELECT regexp_split_to_array('123456','(?:)'); SELECT regexp_split_to_array('1',''); -- errors SELECT foo, length(foo) FROM regexp_split_to_table('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'zippy') AS foo; SELECT regexp_split_to_array('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'iz'); -- global option meaningless for regexp_split SELECT foo, length(foo) FROM regexp_split_to_table('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'g') AS foo; SELECT regexp_split_to_array('thE QUick bROWn FOx jUMPs ovEr The lazy dOG', 'e', 'g'); -- change NULL-display back \pset null '' -- E021-11 position expression SELECT POSITION('4' IN '1234567890') = '4' AS "4"; SELECT POSITION('5' IN '1234567890') = '5' AS "5"; -- T312 character overlay function SELECT OVERLAY('abcdef' PLACING '45' FROM 4) AS "abc45f"; SELECT OVERLAY('yabadoo' PLACING 'daba' FROM 5) AS "yabadaba"; SELECT OVERLAY('yabadoo' PLACING 'daba' FROM 5 FOR 0) AS "yabadabadoo"; SELECT OVERLAY('babosa' PLACING 'ubb' FROM 2 FOR 4) AS "bubba"; -- -- test LIKE -- Be sure to form every test as a LIKE/NOT LIKE pair. -- -- simplest examples -- E061-04 like predicate SELECT 'hawkeye' LIKE 'h%' AS "true"; SELECT 'hawkeye' NOT LIKE 'h%' AS "false"; SELECT 'hawkeye' LIKE 'H%' AS "false"; SELECT 'hawkeye' NOT LIKE 'H%' AS "true"; SELECT 'hawkeye' LIKE 'indio%' AS "false"; SELECT 'hawkeye' NOT LIKE 'indio%' AS "true"; SELECT 'hawkeye' LIKE 'h%eye' AS "true"; SELECT 'hawkeye' NOT LIKE 'h%eye' AS "false"; SELECT 'indio' LIKE '_ndio' AS "true"; SELECT 'indio' NOT LIKE '_ndio' AS "false"; SELECT 'indio' LIKE 'in__o' AS "true"; SELECT 'indio' NOT LIKE 'in__o' AS "false"; SELECT 'indio' LIKE 'in_o' AS "false"; SELECT 'indio' NOT LIKE 'in_o' AS "true"; -- unused escape character SELECT 'hawkeye' LIKE 'h%' ESCAPE '#' AS "true"; SELECT 'hawkeye' NOT LIKE 'h%' ESCAPE '#' AS "false"; SELECT 'indio' LIKE 'ind_o' ESCAPE '$' AS "true"; SELECT 'indio' NOT LIKE 'ind_o' ESCAPE '$' AS "false"; -- escape character -- E061-05 like predicate with escape clause SELECT 'h%' LIKE 'h#%' ESCAPE '#' AS "true"; SELECT 'h%' NOT LIKE 'h#%' ESCAPE '#' AS "false"; SELECT 'h%wkeye' LIKE 'h#%' ESCAPE '#' AS "false"; SELECT 'h%wkeye' NOT LIKE 'h#%' ESCAPE '#' AS "true"; SELECT 'h%wkeye' LIKE 'h#%%' ESCAPE '#' AS "true"; SELECT 'h%wkeye' NOT LIKE 'h#%%' ESCAPE '#' AS "false"; SELECT 'h%awkeye' LIKE 'h#%a%k%e' ESCAPE '#' AS "true"; SELECT 'h%awkeye' NOT LIKE 'h#%a%k%e' ESCAPE '#' AS "false"; SELECT 'indio' LIKE '_ndio' ESCAPE '$' AS "true"; SELECT 'indio' NOT LIKE '_ndio' ESCAPE '$' AS "false"; SELECT 'i_dio' LIKE 'i$_d_o' ESCAPE '$' AS "true"; SELECT 'i_dio' NOT LIKE 'i$_d_o' ESCAPE '$' AS "false"; SELECT 'i_dio' LIKE 'i$_nd_o' ESCAPE '$' AS "false"; SELECT 'i_dio' NOT LIKE 'i$_nd_o' ESCAPE '$' AS "true"; SELECT 'i_dio' LIKE 'i$_d%o' ESCAPE '$' AS "true"; SELECT 'i_dio' NOT LIKE 'i$_d%o' ESCAPE '$' AS "false"; -- escape character same as pattern character SELECT 'maca' LIKE 'm%aca' ESCAPE '%' AS "true"; SELECT 'maca' NOT LIKE 'm%aca' ESCAPE '%' AS "false"; SELECT 'ma%a' LIKE 'm%a%%a' ESCAPE '%' AS "true"; SELECT 'ma%a' NOT LIKE 'm%a%%a' ESCAPE '%' AS "false"; SELECT 'bear' LIKE 'b_ear' ESCAPE '_' AS "true"; SELECT 'bear' NOT LIKE 'b_ear' ESCAPE '_' AS "false"; SELECT 'be_r' LIKE 'b_e__r' ESCAPE '_' AS "true"; SELECT 'be_r' NOT LIKE 'b_e__r' ESCAPE '_' AS "false"; SELECT 'be_r' LIKE '__e__r' ESCAPE '_' AS "false"; SELECT 'be_r' NOT LIKE '__e__r' ESCAPE '_' AS "true"; -- -- test ILIKE (case-insensitive LIKE) -- Be sure to form every test as an ILIKE/NOT ILIKE pair. -- SELECT 'hawkeye' ILIKE 'h%' AS "true"; SELECT 'hawkeye' NOT ILIKE 'h%' AS "false"; SELECT 'hawkeye' ILIKE 'H%' AS "true"; SELECT 'hawkeye' NOT ILIKE 'H%' AS "false"; SELECT 'hawkeye' ILIKE 'H%Eye' AS "true"; SELECT 'hawkeye' NOT ILIKE 'H%Eye' AS "false"; SELECT 'Hawkeye' ILIKE 'h%' AS "true"; SELECT 'Hawkeye' NOT ILIKE 'h%' AS "false"; -- -- test %/_ combination cases, cf bugs #4821 and #5478 -- SELECT 'foo' LIKE '_%' as t, 'f' LIKE '_%' as t, '' LIKE '_%' as f; SELECT 'foo' LIKE '%_' as t, 'f' LIKE '%_' as t, '' LIKE '%_' as f; SELECT 'foo' LIKE '__%' as t, 'foo' LIKE '___%' as t, 'foo' LIKE '____%' as f; SELECT 'foo' LIKE '%__' as t, 'foo' LIKE '%___' as t, 'foo' LIKE '%____' as f; SELECT 'jack' LIKE '%____%' AS t; -- -- basic tests of LIKE with indexes -- CREATE TABLE texttest (a text PRIMARY KEY, b int); SELECT * FROM texttest WHERE a LIKE '%1%'; CREATE TABLE byteatest (a bytea PRIMARY KEY, b int); SELECT * FROM byteatest WHERE a LIKE '%1%'; DROP TABLE texttest, byteatest; -- -- test implicit type conversion -- -- E021-07 character concatenation SELECT 'unknown' || ' and unknown' AS "Concat unknown types"; SELECT text 'text' || ' and unknown' AS "Concat text to unknown type"; SELECT char(20) 'characters' || ' and text' AS "Concat char to unknown type"; SELECT text 'text' || char(20) ' and characters' AS "Concat text to char"; SELECT text 'text' || varchar ' and varchar' AS "Concat text to varchar"; -- -- test substr with toasted text values -- CREATE TABLE toasttest(f1 text); insert into toasttest values(repeat('1234567890',10000)); insert into toasttest values(repeat('1234567890',10000)); -- -- Ensure that some values are uncompressed, to test the faster substring -- operation used in that case -- alter table toasttest alter column f1 set storage external; insert into toasttest values(repeat('1234567890',10000)); insert into toasttest values(repeat('1234567890',10000)); -- If the starting position is zero or less, then return from the start of the string -- adjusting the length to be consistent with the "negative start" per SQL. SELECT substr(f1, -1, 5) from toasttest; -- If the length is less than zero, an ERROR is thrown. SELECT substr(f1, 5, -1) from toasttest; -- If no third argument (length) is provided, the length to the end of the -- string is assumed. SELECT substr(f1, 99995) from toasttest; -- If start plus length is > string length, the result is truncated to -- string length SELECT substr(f1, 99995, 10) from toasttest; TRUNCATE TABLE toasttest; INSERT INTO toasttest values (repeat('1234567890',300)); INSERT INTO toasttest values (repeat('1234567890',300)); INSERT INTO toasttest values (repeat('1234567890',300)); INSERT INTO toasttest values (repeat('1234567890',300)); -- expect >0 blocks SELECT pg_relation_size(reltoastrelid) = 0 AS is_empty FROM pg_class where relname = 'toasttest'; TRUNCATE TABLE toasttest; ALTER TABLE toasttest set (toast_tuple_target = 4080); INSERT INTO toasttest values (repeat('1234567890',300)); INSERT INTO toasttest values (repeat('1234567890',300)); INSERT INTO toasttest values (repeat('1234567890',300)); INSERT INTO toasttest values (repeat('1234567890',300)); -- expect 0 blocks SELECT pg_relation_size(reltoastrelid) = 0 AS is_empty FROM pg_class where relname = 'toasttest'; DROP TABLE toasttest; -- -- test substr with toasted bytea values -- CREATE TABLE toasttest(f1 bytea); insert into toasttest values(decode(repeat('1234567890',10000),'escape')); insert into toasttest values(decode(repeat('1234567890',10000),'escape')); -- -- Ensure that some values are uncompressed, to test the faster substring -- operation used in that case -- alter table toasttest alter column f1 set storage external; insert into toasttest values(decode(repeat('1234567890',10000),'escape')); insert into toasttest values(decode(repeat('1234567890',10000),'escape')); -- If the starting position is zero or less, then return from the start of the string -- adjusting the length to be consistent with the "negative start" per SQL. SELECT substr(f1, -1, 5) from toasttest; -- If the length is less than zero, an ERROR is thrown. SELECT substr(f1, 5, -1) from toasttest; -- If no third argument (length) is provided, the length to the end of the -- string is assumed. SELECT substr(f1, 99995) from toasttest; -- If start plus length is > string length, the result is truncated to -- string length SELECT substr(f1, 99995, 10) from toasttest; DROP TABLE toasttest; -- test internally compressing datums -- this tests compressing a datum to a very small size which exercises a -- corner case in packed-varlena handling: even though small, the compressed -- datum must be given a 4-byte header because there are no bits to indicate -- compression in a 1-byte header CREATE TABLE toasttest (c char(4096)); INSERT INTO toasttest VALUES('x'); SELECT length(c), c::text FROM toasttest; SELECT c FROM toasttest; DROP TABLE toasttest; -- -- test length -- SELECT length('abcdef') AS "length_6"; -- -- test strpos -- SELECT strpos('abcdef', 'cd') AS "pos_3"; SELECT strpos('abcdef', 'xy') AS "pos_0"; SELECT strpos('abcdef', '') AS "pos_1"; SELECT strpos('', 'xy') AS "pos_0"; SELECT strpos('', '') AS "pos_1"; -- -- test replace -- SELECT replace('abcdef', 'de', '45') AS "abc45f"; SELECT replace('yabadabadoo', 'ba', '123') AS "ya123da123doo"; SELECT replace('yabadoo', 'bad', '') AS "yaoo"; -- -- test split_part -- select split_part('joeuser@mydatabase','@',0) AS "an error"; select split_part('joeuser@mydatabase','@',1) AS "joeuser"; select split_part('joeuser@mydatabase','@',2) AS "mydatabase"; select split_part('joeuser@mydatabase','@',3) AS "empty string"; select split_part('@joeuser@mydatabase@','@',2) AS "joeuser"; -- -- test to_hex -- select to_hex(256*256*256 - 1) AS "ffffff"; select to_hex(256::bigint*256::bigint*256::bigint*256::bigint - 1) AS "ffffffff"; -- -- MD5 test suite - from IETF RFC 1321 -- (see: ftp://ftp.rfc-editor.org/in-notes/rfc1321.txt) -- select md5('') = 'd41d8cd98f00b204e9800998ecf8427e' AS "TRUE"; select md5('a') = '0cc175b9c0f1b6a831c399e269772661' AS "TRUE"; select md5('abc') = '900150983cd24fb0d6963f7d28e17f72' AS "TRUE"; select md5('message digest') = 'f96b697d7cb7938d525a2f31aaf161d0' AS "TRUE"; select md5('abcdefghijklmnopqrstuvwxyz') = 'c3fcd3d76192e4007dfb496cca67e13b' AS "TRUE"; select md5('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') = 'd174ab98d277d9f5a5611c2c9f419d9f' AS "TRUE"; select md5('12345678901234567890123456789012345678901234567890123456789012345678901234567890') = '57edf4a22be3c955ac49da2e2107b67a' AS "TRUE"; select md5(''::bytea) = 'd41d8cd98f00b204e9800998ecf8427e' AS "TRUE"; select md5('a'::bytea) = '0cc175b9c0f1b6a831c399e269772661' AS "TRUE"; select md5('abc'::bytea) = '900150983cd24fb0d6963f7d28e17f72' AS "TRUE"; select md5('message digest'::bytea) = 'f96b697d7cb7938d525a2f31aaf161d0' AS "TRUE"; select md5('abcdefghijklmnopqrstuvwxyz'::bytea) = 'c3fcd3d76192e4007dfb496cca67e13b' AS "TRUE"; select md5('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'::bytea) = 'd174ab98d277d9f5a5611c2c9f419d9f' AS "TRUE"; select md5('12345678901234567890123456789012345678901234567890123456789012345678901234567890'::bytea) = '57edf4a22be3c955ac49da2e2107b67a' AS "TRUE"; -- -- SHA-2 -- SET bytea_output TO hex; SELECT sha224(''); SELECT sha224('The quick brown fox jumps over the lazy dog.'); SELECT sha256(''); SELECT sha256('The quick brown fox jumps over the lazy dog.'); SELECT sha384(''); SELECT sha384('The quick brown fox jumps over the lazy dog.'); SELECT sha512(''); SELECT sha512('The quick brown fox jumps over the lazy dog.'); -- -- encode/decode -- SELECT encode('\x1234567890abcdef00', 'hex'); SELECT decode('1234567890abcdef00', 'hex'); SELECT encode(('\x' || repeat('1234567890abcdef0001', 7))::bytea, 'base64'); SELECT decode(encode(('\x' || repeat('1234567890abcdef0001', 7))::bytea, 'base64'), 'base64'); SELECT encode('\x1234567890abcdef00', 'escape'); SELECT decode(encode('\x1234567890abcdef00', 'escape'), 'escape'); -- -- get_bit/set_bit etc -- SELECT get_bit('\x1234567890abcdef00'::bytea, 43); SELECT get_bit('\x1234567890abcdef00'::bytea, 99); -- error SELECT set_bit('\x1234567890abcdef00'::bytea, 43, 0); SELECT set_bit('\x1234567890abcdef00'::bytea, 99, 0); -- error SELECT get_byte('\x1234567890abcdef00'::bytea, 3); SELECT get_byte('\x1234567890abcdef00'::bytea, 99); -- error SELECT set_byte('\x1234567890abcdef00'::bytea, 7, 11); SELECT set_byte('\x1234567890abcdef00'::bytea, 99, 11); -- error -- -- test behavior of escape_string_warning and standard_conforming_strings options -- set escape_string_warning = off; set standard_conforming_strings = off; show escape_string_warning; show standard_conforming_strings; set escape_string_warning = on; set standard_conforming_strings = on; show escape_string_warning; show standard_conforming_strings; select 'a\bcd' as f1, 'a\b''cd' as f2, 'a\b''''cd' as f3, 'abcd\' as f4, 'ab\''cd' as f5, '\\' as f6; set standard_conforming_strings = off; select 'a\\bcd' as f1, 'a\\b\'cd' as f2, 'a\\b\'''cd' as f3, 'abcd\\' as f4, 'ab\\\'cd' as f5, '\\\\' as f6; set escape_string_warning = off; set standard_conforming_strings = on; select 'a\bcd' as f1, 'a\b''cd' as f2, 'a\b''''cd' as f3, 'abcd\' as f4, 'ab\''cd' as f5, '\\' as f6; set standard_conforming_strings = off; select 'a\\bcd' as f1, 'a\\b\'cd' as f2, 'a\\b\'''cd' as f3, 'abcd\\' as f4, 'ab\\\'cd' as f5, '\\\\' as f6; -- -- Additional string functions -- SET bytea_output TO escape; SELECT initcap('hi THOMAS'); SELECT lpad('hi', 5, 'xy'); SELECT lpad('hi', 5); SELECT lpad('hi', -5, 'xy'); SELECT lpad('hello', 2); SELECT lpad('hi', 5, ''); SELECT rpad('hi', 5, 'xy'); SELECT rpad('hi', 5); SELECT rpad('hi', -5, 'xy'); SELECT rpad('hello', 2); SELECT rpad('hi', 5, ''); SELECT ltrim('zzzytrim', 'xyz'); SELECT translate('', '14', 'ax'); SELECT translate('12345', '14', 'ax'); SELECT ascii('x'); SELECT ascii(''); SELECT chr(65); SELECT chr(0); SELECT repeat('Pg', 4); SELECT repeat('Pg', -4); SELECT SUBSTRING('1234567890'::bytea FROM 3) "34567890"; SELECT SUBSTRING('1234567890'::bytea FROM 4 FOR 3) AS "456"; SELECT SUBSTRING('string'::bytea FROM 2 FOR 2147483646) AS "tring"; SELECT SUBSTRING('string'::bytea FROM -10 FOR 2147483646) AS "string"; SELECT SUBSTRING('string'::bytea FROM -10 FOR -2147483646) AS "error"; SELECT trim(E'\\000'::bytea from E'\\000Tom\\000'::bytea); SELECT btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea); SELECT btrim(''::bytea, E'\\000'::bytea); SELECT btrim(E'\\000trim\\000'::bytea, ''::bytea); SELECT encode(overlay(E'Th\\000omas'::bytea placing E'Th\\001omas'::bytea from 2),'escape'); SELECT encode(overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 8),'escape'); SELECT encode(overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 5 for 3),'escape'); libpg_query-13-2.1.0/test/sql/postgres_regress/subscription.sql000066400000000000000000000113761413137616400247160ustar00rootroot00000000000000-- -- SUBSCRIPTION -- CREATE ROLE regress_subscription_user LOGIN SUPERUSER; CREATE ROLE regress_subscription_user2; CREATE ROLE regress_subscription_user_dummy LOGIN NOSUPERUSER; SET SESSION AUTHORIZATION 'regress_subscription_user'; -- fail - no publications CREATE SUBSCRIPTION regress_testsub CONNECTION 'foo'; -- fail - no connection CREATE SUBSCRIPTION regress_testsub PUBLICATION foo; -- fail - cannot do CREATE SUBSCRIPTION CREATE SLOT inside transaction block BEGIN; CREATE SUBSCRIPTION regress_testsub CONNECTION 'testconn' PUBLICATION testpub WITH (create_slot); COMMIT; -- fail - invalid connection string CREATE SUBSCRIPTION regress_testsub CONNECTION 'testconn' PUBLICATION testpub; -- fail - duplicate publications CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION foo, testpub, foo WITH (connect = false); -- ok CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false); COMMENT ON SUBSCRIPTION regress_testsub IS 'test subscription'; SELECT obj_description(s.oid, 'pg_subscription') FROM pg_subscription s; -- fail - name already exists CREATE SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false); -- fail - must be superuser SET SESSION AUTHORIZATION 'regress_subscription_user2'; CREATE SUBSCRIPTION regress_testsub2 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION foo WITH (connect = false); SET SESSION AUTHORIZATION 'regress_subscription_user'; -- fail - invalid option combinations CREATE SUBSCRIPTION regress_testsub2 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, copy_data = true); CREATE SUBSCRIPTION regress_testsub2 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, enabled = true); CREATE SUBSCRIPTION regress_testsub2 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false, create_slot = true); CREATE SUBSCRIPTION regress_testsub2 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, enabled = true); CREATE SUBSCRIPTION regress_testsub2 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, create_slot = true); CREATE SUBSCRIPTION regress_testsub2 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (slot_name = NONE); CREATE SUBSCRIPTION regress_testsub2 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, enabled = false); CREATE SUBSCRIPTION regress_testsub2 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, create_slot = false); -- ok - with slot_name = NONE CREATE SUBSCRIPTION regress_testsub3 CONNECTION 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (slot_name = NONE, connect = false); -- fail ALTER SUBSCRIPTION regress_testsub3 ENABLE; ALTER SUBSCRIPTION regress_testsub3 REFRESH PUBLICATION; DROP SUBSCRIPTION regress_testsub3; -- fail - invalid connection string ALTER SUBSCRIPTION regress_testsub CONNECTION 'foobar'; \dRs+ ALTER SUBSCRIPTION regress_testsub SET PUBLICATION testpub2, testpub3 WITH (refresh = false); ALTER SUBSCRIPTION regress_testsub CONNECTION 'dbname=regress_doesnotexist2'; ALTER SUBSCRIPTION regress_testsub SET (slot_name = 'newname'); -- fail ALTER SUBSCRIPTION regress_doesnotexist CONNECTION 'dbname=regress_doesnotexist2'; ALTER SUBSCRIPTION regress_testsub SET (create_slot = false); \dRs+ BEGIN; ALTER SUBSCRIPTION regress_testsub ENABLE; \dRs ALTER SUBSCRIPTION regress_testsub DISABLE; \dRs COMMIT; -- fail - must be owner of subscription SET ROLE regress_subscription_user_dummy; ALTER SUBSCRIPTION regress_testsub RENAME TO regress_testsub_dummy; RESET ROLE; ALTER SUBSCRIPTION regress_testsub RENAME TO regress_testsub_foo; ALTER SUBSCRIPTION regress_testsub_foo SET (synchronous_commit = local); ALTER SUBSCRIPTION regress_testsub_foo SET (synchronous_commit = foobar); \dRs+ -- rename back to keep the rest simple ALTER SUBSCRIPTION regress_testsub_foo RENAME TO regress_testsub; -- fail - new owner must be superuser ALTER SUBSCRIPTION regress_testsub OWNER TO regress_subscription_user2; ALTER ROLE regress_subscription_user2 SUPERUSER; -- now it works ALTER SUBSCRIPTION regress_testsub OWNER TO regress_subscription_user2; -- fail - cannot do DROP SUBSCRIPTION inside transaction block with slot name BEGIN; DROP SUBSCRIPTION regress_testsub; COMMIT; ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE); \dRs+ -- now it works BEGIN; DROP SUBSCRIPTION regress_testsub; COMMIT; DROP SUBSCRIPTION IF EXISTS regress_testsub; DROP SUBSCRIPTION regress_testsub; -- fail RESET SESSION AUTHORIZATION; DROP ROLE regress_subscription_user; DROP ROLE regress_subscription_user2; DROP ROLE regress_subscription_user_dummy; libpg_query-13-2.1.0/test/sql/postgres_regress/subselect.sql000066400000000000000000000613421413137616400241610ustar00rootroot00000000000000-- -- SUBSELECT -- SELECT 1 AS one WHERE 1 IN (SELECT 1); SELECT 1 AS zero WHERE 1 NOT IN (SELECT 1); SELECT 1 AS zero WHERE 1 IN (SELECT 2); -- Check grammar's handling of extra parens in assorted contexts SELECT * FROM (SELECT 1 AS x) ss; SELECT * FROM ((SELECT 1 AS x)) ss; (SELECT 2) UNION SELECT 2; ((SELECT 2)) UNION SELECT 2; SELECT ((SELECT 2) UNION SELECT 2); SELECT (((SELECT 2)) UNION SELECT 2); SELECT (SELECT ARRAY[1,2,3])[1]; SELECT ((SELECT ARRAY[1,2,3]))[2]; SELECT (((SELECT ARRAY[1,2,3])))[3]; -- Set up some simple test tables CREATE TABLE SUBSELECT_TBL ( f1 integer, f2 integer, f3 float ); INSERT INTO SUBSELECT_TBL VALUES (1, 2, 3); INSERT INTO SUBSELECT_TBL VALUES (2, 3, 4); INSERT INTO SUBSELECT_TBL VALUES (3, 4, 5); INSERT INTO SUBSELECT_TBL VALUES (1, 1, 1); INSERT INTO SUBSELECT_TBL VALUES (2, 2, 2); INSERT INTO SUBSELECT_TBL VALUES (3, 3, 3); INSERT INTO SUBSELECT_TBL VALUES (6, 7, 8); INSERT INTO SUBSELECT_TBL VALUES (8, 9, NULL); SELECT '' AS eight, * FROM SUBSELECT_TBL; -- Uncorrelated subselects SELECT '' AS two, f1 AS "Constant Select" FROM SUBSELECT_TBL WHERE f1 IN (SELECT 1); SELECT '' AS six, f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL); SELECT '' AS six, f1 AS "Uncorrelated Field" FROM SUBSELECT_TBL WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f2 IN (SELECT f1 FROM SUBSELECT_TBL)); SELECT '' AS three, f1, f2 FROM SUBSELECT_TBL WHERE (f1, f2) NOT IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL WHERE f3 IS NOT NULL); -- Correlated subselects SELECT '' AS six, f1 AS "Correlated Field", f2 AS "Second Field" FROM SUBSELECT_TBL upper WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE f1 = upper.f1); SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field" FROM SUBSELECT_TBL upper WHERE f1 IN (SELECT f2 FROM SUBSELECT_TBL WHERE CAST(upper.f2 AS float) = f3); SELECT '' AS six, f1 AS "Correlated Field", f3 AS "Second Field" FROM SUBSELECT_TBL upper WHERE f3 IN (SELECT upper.f1 + f2 FROM SUBSELECT_TBL WHERE f2 = CAST(f3 AS integer)); SELECT '' AS five, f1 AS "Correlated Field" FROM SUBSELECT_TBL WHERE (f1, f2) IN (SELECT f2, CAST(f3 AS int4) FROM SUBSELECT_TBL WHERE f3 IS NOT NULL); -- -- Use some existing tables in the regression test -- SELECT '' AS eight, ss.f1 AS "Correlated Field", ss.f3 AS "Second Field" FROM SUBSELECT_TBL ss WHERE f1 NOT IN (SELECT f1+1 FROM INT4_TBL WHERE f1 != ss.f1 AND f1 < 2147483647); select q1, float8(count(*)) / (select count(*) from int8_tbl) from int8_tbl group by q1 order by q1; -- Unspecified-type literals in output columns should resolve as text SELECT *, pg_typeof(f1) FROM (SELECT 'foo' AS f1 FROM generate_series(1,3)) ss ORDER BY 1; -- ... unless there's context to suggest differently explain (verbose, costs off) select '42' union all select '43'; explain (verbose, costs off) select '42' union all select 43; -- check materialization of an initplan reference (bug #14524) explain (verbose, costs off) select 1 = all (select (select 1)); select 1 = all (select (select 1)); -- -- Check EXISTS simplification with LIMIT -- explain (costs off) select * from int4_tbl o where exists (select 1 from int4_tbl i where i.f1=o.f1 limit null); explain (costs off) select * from int4_tbl o where not exists (select 1 from int4_tbl i where i.f1=o.f1 limit 1); explain (costs off) select * from int4_tbl o where exists (select 1 from int4_tbl i where i.f1=o.f1 limit 0); -- -- Test cases to catch unpleasant interactions between IN-join processing -- and subquery pullup. -- select count(*) from (select 1 from tenk1 a where unique1 IN (select hundred from tenk1 b)) ss; select count(distinct ss.ten) from (select ten from tenk1 a where unique1 IN (select hundred from tenk1 b)) ss; select count(*) from (select 1 from tenk1 a where unique1 IN (select distinct hundred from tenk1 b)) ss; select count(distinct ss.ten) from (select ten from tenk1 a where unique1 IN (select distinct hundred from tenk1 b)) ss; -- -- Test cases to check for overenthusiastic optimization of -- "IN (SELECT DISTINCT ...)" and related cases. Per example from -- Luca Pireddu and Michael Fuhr. -- CREATE TEMP TABLE foo (id integer); CREATE TEMP TABLE bar (id1 integer, id2 integer); INSERT INTO foo VALUES (1); INSERT INTO bar VALUES (1, 1); INSERT INTO bar VALUES (2, 2); INSERT INTO bar VALUES (3, 1); -- These cases require an extra level of distinct-ing above subquery s SELECT * FROM foo WHERE id IN (SELECT id2 FROM (SELECT DISTINCT id1, id2 FROM bar) AS s); SELECT * FROM foo WHERE id IN (SELECT id2 FROM (SELECT id1,id2 FROM bar GROUP BY id1,id2) AS s); SELECT * FROM foo WHERE id IN (SELECT id2 FROM (SELECT id1, id2 FROM bar UNION SELECT id1, id2 FROM bar) AS s); -- These cases do not SELECT * FROM foo WHERE id IN (SELECT id2 FROM (SELECT DISTINCT ON (id2) id1, id2 FROM bar) AS s); SELECT * FROM foo WHERE id IN (SELECT id2 FROM (SELECT id2 FROM bar GROUP BY id2) AS s); SELECT * FROM foo WHERE id IN (SELECT id2 FROM (SELECT id2 FROM bar UNION SELECT id2 FROM bar) AS s); -- -- Test case to catch problems with multiply nested sub-SELECTs not getting -- recalculated properly. Per bug report from Didier Moens. -- CREATE TABLE orderstest ( approver_ref integer, po_ref integer, ordercanceled boolean ); INSERT INTO orderstest VALUES (1, 1, false); INSERT INTO orderstest VALUES (66, 5, false); INSERT INTO orderstest VALUES (66, 6, false); INSERT INTO orderstest VALUES (66, 7, false); INSERT INTO orderstest VALUES (66, 1, true); INSERT INTO orderstest VALUES (66, 8, false); INSERT INTO orderstest VALUES (66, 1, false); INSERT INTO orderstest VALUES (77, 1, false); INSERT INTO orderstest VALUES (1, 1, false); INSERT INTO orderstest VALUES (66, 1, false); INSERT INTO orderstest VALUES (1, 1, false); CREATE VIEW orders_view AS SELECT *, (SELECT CASE WHEN ord.approver_ref=1 THEN '---' ELSE 'Approved' END) AS "Approved", (SELECT CASE WHEN ord.ordercanceled THEN 'Canceled' ELSE (SELECT CASE WHEN ord.po_ref=1 THEN (SELECT CASE WHEN ord.approver_ref=1 THEN '---' ELSE 'Approved' END) ELSE 'PO' END) END) AS "Status", (CASE WHEN ord.ordercanceled THEN 'Canceled' ELSE (CASE WHEN ord.po_ref=1 THEN (CASE WHEN ord.approver_ref=1 THEN '---' ELSE 'Approved' END) ELSE 'PO' END) END) AS "Status_OK" FROM orderstest ord; SELECT * FROM orders_view; DROP TABLE orderstest cascade; -- -- Test cases to catch situations where rule rewriter fails to propagate -- hasSubLinks flag correctly. Per example from Kyle Bateman. -- create temp table parts ( partnum text, cost float8 ); create temp table shipped ( ttype char(2), ordnum int4, partnum text, value float8 ); create temp view shipped_view as select * from shipped where ttype = 'wt'; create rule shipped_view_insert as on insert to shipped_view do instead insert into shipped values('wt', new.ordnum, new.partnum, new.value); insert into parts (partnum, cost) values (1, 1234.56); insert into shipped_view (ordnum, partnum, value) values (0, 1, (select cost from parts where partnum = '1')); select * from shipped_view; create rule shipped_view_update as on update to shipped_view do instead update shipped set partnum = new.partnum, value = new.value where ttype = new.ttype and ordnum = new.ordnum; update shipped_view set value = 11 from int4_tbl a join int4_tbl b on (a.f1 = (select f1 from int4_tbl c where c.f1=b.f1)) where ordnum = a.f1; select * from shipped_view; select f1, ss1 as relabel from (select *, (select sum(f1) from int4_tbl b where f1 >= a.f1) as ss1 from int4_tbl a) ss; -- -- Test cases involving PARAM_EXEC parameters and min/max index optimizations. -- Per bug report from David Sanchez i Gregori. -- select * from ( select max(unique1) from tenk1 as a where exists (select 1 from tenk1 as b where b.thousand = a.unique2) ) ss; select * from ( select min(unique1) from tenk1 as a where not exists (select 1 from tenk1 as b where b.unique2 = 10000) ) ss; -- -- Test that an IN implemented using a UniquePath does unique-ification -- with the right semantics, as per bug #4113. (Unfortunately we have -- no simple way to ensure that this test case actually chooses that type -- of plan, but it does in releases 7.4-8.3. Note that an ordering difference -- here might mean that some other plan type is being used, rendering the test -- pointless.) -- create temp table numeric_table (num_col numeric); insert into numeric_table values (1), (1.000000000000000000001), (2), (3); create temp table float_table (float_col float8); insert into float_table values (1), (2), (3); select * from float_table where float_col in (select num_col from numeric_table); select * from numeric_table where num_col in (select float_col from float_table); -- -- Test case for bug #4290: bogus calculation of subplan param sets -- create temp table ta (id int primary key, val int); insert into ta values(1,1); insert into ta values(2,2); create temp table tb (id int primary key, aval int); insert into tb values(1,1); insert into tb values(2,1); insert into tb values(3,2); insert into tb values(4,2); create temp table tc (id int primary key, aid int); insert into tc values(1,1); insert into tc values(2,2); select ( select min(tb.id) from tb where tb.aval = (select ta.val from ta where ta.id = tc.aid) ) as min_tb_id from tc; -- -- Test case for 8.3 "failed to locate grouping columns" bug -- create temp table t1 (f1 numeric(14,0), f2 varchar(30)); select * from (select distinct f1, f2, (select f2 from t1 x where x.f1 = up.f1) as fs from t1 up) ss group by f1,f2,fs; -- -- Test case for bug #5514 (mishandling of whole-row Vars in subselects) -- create temp table table_a(id integer); insert into table_a values (42); create temp view view_a as select * from table_a; select view_a from view_a; select (select view_a) from view_a; select (select (select view_a)) from view_a; select (select (a.*)::text) from view_a a; -- -- Check that whole-row Vars reading the result of a subselect don't include -- any junk columns therein -- select q from (select max(f1) from int4_tbl group by f1 order by f1) q; with q as (select max(f1) from int4_tbl group by f1 order by f1) select q from q; -- -- Test case for sublinks pulled up into joinaliasvars lists in an -- inherited update/delete query -- begin; -- this shouldn't delete anything, but be safe delete from road where exists ( select 1 from int4_tbl cross join ( select f1, array(select q1 from int8_tbl) as arr from text_tbl ) ss where road.name = ss.f1 ); rollback; -- -- Test case for sublinks pushed down into subselects via join alias expansion -- select (select sq1) as qq1 from (select exists(select 1 from int4_tbl where f1 = q2) as sq1, 42 as dummy from int8_tbl) sq0 join int4_tbl i4 on dummy = i4.f1; -- -- Test case for subselect within UPDATE of INSERT...ON CONFLICT DO UPDATE -- create temp table upsert(key int4 primary key, val text); insert into upsert values(1, 'val') on conflict (key) do update set val = 'not seen'; insert into upsert values(1, 'val') on conflict (key) do update set val = 'seen with subselect ' || (select f1 from int4_tbl where f1 != 0 limit 1)::text; select * from upsert; with aa as (select 'int4_tbl' u from int4_tbl limit 1) insert into upsert values (1, 'x'), (999, 'y') on conflict (key) do update set val = (select u from aa) returning *; -- -- Test case for cross-type partial matching in hashed subplan (bug #7597) -- create temp table outer_7597 (f1 int4, f2 int4); insert into outer_7597 values (0, 0); insert into outer_7597 values (1, 0); insert into outer_7597 values (0, null); insert into outer_7597 values (1, null); create temp table inner_7597(c1 int8, c2 int8); insert into inner_7597 values(0, null); select * from outer_7597 where (f1, f2) not in (select * from inner_7597); -- -- Similar test case using text that verifies that collation -- information is passed through by execTuplesEqual() in nodeSubplan.c -- (otherwise it would error in texteq()) -- create temp table outer_text (f1 text, f2 text); insert into outer_text values ('a', 'a'); insert into outer_text values ('b', 'a'); insert into outer_text values ('a', null); insert into outer_text values ('b', null); create temp table inner_text (c1 text, c2 text); insert into inner_text values ('a', null); insert into inner_text values ('123', '456'); select * from outer_text where (f1, f2) not in (select * from inner_text); -- -- Another test case for cross-type hashed subplans: comparison of -- inner-side values must be done with appropriate operator -- explain (verbose, costs off) select 'foo'::text in (select 'bar'::name union all select 'bar'::name); select 'foo'::text in (select 'bar'::name union all select 'bar'::name); -- -- Test case for premature memory release during hashing of subplan output -- select '1'::text in (select '1'::name union all select '1'::name); -- -- Test that we don't try to use a hashed subplan if the simplified -- testexpr isn't of the right shape -- -- this fails by default, of course select * from int8_tbl where q1 in (select c1 from inner_text); begin; -- make an operator to allow it to succeed create function bogus_int8_text_eq(int8, text) returns boolean language sql as 'select $1::text = $2'; create operator = (procedure=bogus_int8_text_eq, leftarg=int8, rightarg=text); explain (costs off) select * from int8_tbl where q1 in (select c1 from inner_text); select * from int8_tbl where q1 in (select c1 from inner_text); -- inlining of this function results in unusual number of hash clauses, -- which we can still cope with create or replace function bogus_int8_text_eq(int8, text) returns boolean language sql as 'select $1::text = $2 and $1::text = $2'; explain (costs off) select * from int8_tbl where q1 in (select c1 from inner_text); select * from int8_tbl where q1 in (select c1 from inner_text); -- inlining of this function causes LHS and RHS to be switched, -- which we can't cope with, so hashing should be abandoned create or replace function bogus_int8_text_eq(int8, text) returns boolean language sql as 'select $2 = $1::text'; explain (costs off) select * from int8_tbl where q1 in (select c1 from inner_text); select * from int8_tbl where q1 in (select c1 from inner_text); rollback; -- to get rid of the bogus operator -- -- Test case for planner bug with nested EXISTS handling -- select a.thousand from tenk1 a, tenk1 b where a.thousand = b.thousand and exists ( select 1 from tenk1 c where b.hundred = c.hundred and not exists ( select 1 from tenk1 d where a.thousand = d.thousand ) ); -- -- Check that nested sub-selects are not pulled up if they contain volatiles -- explain (verbose, costs off) select x, x from (select (select now()) as x from (values(1),(2)) v(y)) ss; explain (verbose, costs off) select x, x from (select (select random()) as x from (values(1),(2)) v(y)) ss; explain (verbose, costs off) select x, x from (select (select now() where y=y) as x from (values(1),(2)) v(y)) ss; explain (verbose, costs off) select x, x from (select (select random() where y=y) as x from (values(1),(2)) v(y)) ss; -- -- Test rescan of a hashed subplan (the use of random() is to prevent the -- sub-select from being pulled up, which would result in not hashing) -- explain (verbose, costs off) select sum(ss.tst::int) from onek o cross join lateral ( select i.ten in (select f1 from int4_tbl where f1 <= o.hundred) as tst, random() as r from onek i where i.unique1 = o.unique1 ) ss where o.ten = 0; select sum(ss.tst::int) from onek o cross join lateral ( select i.ten in (select f1 from int4_tbl where f1 <= o.hundred) as tst, random() as r from onek i where i.unique1 = o.unique1 ) ss where o.ten = 0; -- -- Test rescan of a SetOp node -- explain (costs off) select count(*) from onek o cross join lateral ( select * from onek i1 where i1.unique1 = o.unique1 except select * from onek i2 where i2.unique1 = o.unique2 ) ss where o.ten = 1; select count(*) from onek o cross join lateral ( select * from onek i1 where i1.unique1 = o.unique1 except select * from onek i2 where i2.unique1 = o.unique2 ) ss where o.ten = 1; -- -- Test rescan of a RecursiveUnion node -- explain (costs off) select sum(o.four), sum(ss.a) from onek o cross join lateral ( with recursive x(a) as (select o.four as a union select a + 1 from x where a < 10) select * from x ) ss where o.ten = 1; select sum(o.four), sum(ss.a) from onek o cross join lateral ( with recursive x(a) as (select o.four as a union select a + 1 from x where a < 10) select * from x ) ss where o.ten = 1; -- -- Check we don't misoptimize a NOT IN where the subquery returns no rows. -- create temp table notinouter (a int); create temp table notininner (b int not null); insert into notinouter values (null), (1); select * from notinouter where a not in (select b from notininner); -- -- Check we behave sanely in corner case of empty SELECT list (bug #8648) -- create temp table nocolumns(); select exists(select * from nocolumns); -- -- Check behavior with a SubPlan in VALUES (bug #14924) -- select val.x from generate_series(1,10) as s(i), lateral ( values ((select s.i + 1)), (s.i + 101) ) as val(x) where s.i < 10 and (select val.x) < 110; -- another variant of that (bug #16213) explain (verbose, costs off) select * from (values (3 not in (select * from (values (1), (2)) ss1)), (false) ) ss; select * from (values (3 not in (select * from (values (1), (2)) ss1)), (false) ) ss; -- -- Check sane behavior with nested IN SubLinks -- explain (verbose, costs off) select * from int4_tbl where (case when f1 in (select unique1 from tenk1 a) then f1 else null end) in (select ten from tenk1 b); select * from int4_tbl where (case when f1 in (select unique1 from tenk1 a) then f1 else null end) in (select ten from tenk1 b); -- -- Check for incorrect optimization when IN subquery contains a SRF -- explain (verbose, costs off) select * from int4_tbl o where (f1, f1) in (select f1, generate_series(1,50) / 10 g from int4_tbl i group by f1); select * from int4_tbl o where (f1, f1) in (select f1, generate_series(1,50) / 10 g from int4_tbl i group by f1); -- -- check for over-optimization of whole-row Var referencing an Append plan -- select (select q from (select 1,2,3 where f1 > 0 union all select 4,5,6.0 where f1 <= 0 ) q ) from int4_tbl; -- -- Check for sane handling of a lateral reference in a subquery's quals -- (most of the complication here is to prevent the test case from being -- flattened too much) -- explain (verbose, costs off) select * from int4_tbl i4, lateral ( select i4.f1 > 1 as b, 1 as id from (select random() order by 1) as t1 union all select true as b, 2 as id ) as t2 where b and f1 >= 0; select * from int4_tbl i4, lateral ( select i4.f1 > 1 as b, 1 as id from (select random() order by 1) as t1 union all select true as b, 2 as id ) as t2 where b and f1 >= 0; -- -- Check that volatile quals aren't pushed down past a DISTINCT: -- nextval() should not be called more than the nominal number of times -- create temp sequence ts1; select * from (select distinct ten from tenk1) ss where ten < 10 + nextval('ts1') order by 1; select nextval('ts1'); -- -- Check that volatile quals aren't pushed down past a set-returning function; -- while a nonvolatile qual can be, if it doesn't reference the SRF. -- create function tattle(x int, y int) returns bool volatile language plpgsql as $$ begin raise notice 'x = %, y = %', x, y; return x > y; end$$; explain (verbose, costs off) select * from (select 9 as x, unnest(array[1,2,3,11,12,13]) as u) ss where tattle(x, 8); select * from (select 9 as x, unnest(array[1,2,3,11,12,13]) as u) ss where tattle(x, 8); -- if we pretend it's stable, we get different results: alter function tattle(x int, y int) stable; explain (verbose, costs off) select * from (select 9 as x, unnest(array[1,2,3,11,12,13]) as u) ss where tattle(x, 8); select * from (select 9 as x, unnest(array[1,2,3,11,12,13]) as u) ss where tattle(x, 8); -- although even a stable qual should not be pushed down if it references SRF explain (verbose, costs off) select * from (select 9 as x, unnest(array[1,2,3,11,12,13]) as u) ss where tattle(x, u); select * from (select 9 as x, unnest(array[1,2,3,11,12,13]) as u) ss where tattle(x, u); drop function tattle(x int, y int); -- -- Test that LIMIT can be pushed to SORT through a subquery that just projects -- columns. We check for that having happened by looking to see if EXPLAIN -- ANALYZE shows that a top-N sort was used. We must suppress or filter away -- all the non-invariant parts of the EXPLAIN ANALYZE output. -- create table sq_limit (pk int primary key, c1 int, c2 int); insert into sq_limit values (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 1, 1), (6, 2, 2), (7, 3, 3), (8, 4, 4); create function explain_sq_limit() returns setof text language plpgsql as $$ declare ln text; begin for ln in explain (analyze, summary off, timing off, costs off) select * from (select pk,c2 from sq_limit order by c1,pk) as x limit 3 loop ln := regexp_replace(ln, 'Memory: \S*', 'Memory: xxx'); return next ln; end loop; end; $$; select * from explain_sq_limit(); select * from (select pk,c2 from sq_limit order by c1,pk) as x limit 3; drop function explain_sq_limit(); drop table sq_limit; -- -- Ensure that backward scan direction isn't propagated into -- expression subqueries (bug #15336) -- begin; declare c1 scroll cursor for select * from generate_series(1,4) i where i <> all (values (2),(3)); move forward all in c1; fetch backward all in c1; commit; -- -- Tests for CTE inlining behavior -- -- Basic subquery that can be inlined explain (verbose, costs off) with x as (select * from (select f1 from subselect_tbl) ss) select * from x where f1 = 1; -- Explicitly request materialization explain (verbose, costs off) with x as materialized (select * from (select f1 from subselect_tbl) ss) select * from x where f1 = 1; -- Stable functions are safe to inline explain (verbose, costs off) with x as (select * from (select f1, now() from subselect_tbl) ss) select * from x where f1 = 1; -- Volatile functions prevent inlining explain (verbose, costs off) with x as (select * from (select f1, random() from subselect_tbl) ss) select * from x where f1 = 1; -- SELECT FOR UPDATE cannot be inlined explain (verbose, costs off) with x as (select * from (select f1 from subselect_tbl for update) ss) select * from x where f1 = 1; -- Multiply-referenced CTEs are inlined only when requested explain (verbose, costs off) with x as (select * from (select f1, now() as n from subselect_tbl) ss) select * from x, x x2 where x.n = x2.n; explain (verbose, costs off) with x as not materialized (select * from (select f1, now() as n from subselect_tbl) ss) select * from x, x x2 where x.n = x2.n; -- Multiply-referenced CTEs can't be inlined if they contain outer self-refs explain (verbose, costs off) with recursive x(a) as ((values ('a'), ('b')) union all (with z as not materialized (select * from x) select z.a || z1.a as a from z cross join z as z1 where length(z.a || z1.a) < 5)) select * from x; with recursive x(a) as ((values ('a'), ('b')) union all (with z as not materialized (select * from x) select z.a || z1.a as a from z cross join z as z1 where length(z.a || z1.a) < 5)) select * from x; explain (verbose, costs off) with recursive x(a) as ((values ('a'), ('b')) union all (with z as not materialized (select * from x) select z.a || z.a as a from z where length(z.a || z.a) < 5)) select * from x; with recursive x(a) as ((values ('a'), ('b')) union all (with z as not materialized (select * from x) select z.a || z.a as a from z where length(z.a || z.a) < 5)) select * from x; -- Check handling of outer references explain (verbose, costs off) with x as (select * from int4_tbl) select * from (with y as (select * from x) select * from y) ss; explain (verbose, costs off) with x as materialized (select * from int4_tbl) select * from (with y as (select * from x) select * from y) ss; -- Ensure that we inline the currect CTE when there are -- multiple CTEs with the same name explain (verbose, costs off) with x as (select 1 as y) select * from (with x as (select 2 as y) select * from x) ss; -- Row marks are not pushed into CTEs explain (verbose, costs off) with x as (select * from subselect_tbl) select * from x for update; libpg_query-13-2.1.0/test/sql/postgres_regress/sysviews.sql000066400000000000000000000044101413137616400240550ustar00rootroot00000000000000-- -- Test assorted system views -- -- This test is mainly meant to provide some code coverage for the -- set-returning functions that underlie certain system views. -- The output of most of these functions is very environment-dependent, -- so our ability to test with fixed expected output is pretty limited; -- but even a trivial check of count(*) will exercise the normal code path -- through the SRF. select count(*) >= 0 as ok from pg_available_extension_versions; select count(*) >= 0 as ok from pg_available_extensions; -- At introduction, pg_config had 23 entries; it may grow select count(*) > 20 as ok from pg_config; -- We expect no cursors in this test; see also portals.sql select count(*) = 0 as ok from pg_cursors; select count(*) >= 0 as ok from pg_file_settings; -- There will surely be at least one rule select count(*) > 0 as ok from pg_hba_file_rules; -- There will surely be at least one active lock select count(*) > 0 as ok from pg_locks; -- We expect no prepared statements in this test; see also prepare.sql select count(*) = 0 as ok from pg_prepared_statements; -- See also prepared_xacts.sql select count(*) >= 0 as ok from pg_prepared_xacts; -- We expect no walreceiver running in this test select count(*) = 0 as ok from pg_stat_wal_receiver; -- This is to record the prevailing planner enable_foo settings during -- a regression test run. select name, setting from pg_settings where name like 'enable%'; -- Test that the pg_timezone_names and pg_timezone_abbrevs views are -- more-or-less working. We can't test their contents in any great detail -- without the outputs changing anytime IANA updates the underlying data, -- but it seems reasonable to expect at least one entry per major meridian. -- (At the time of writing, the actual counts are around 38 because of -- zones using fractional GMT offsets, so this is a pretty loose test.) select count(distinct utc_offset) >= 24 as ok from pg_timezone_names; select count(distinct utc_offset) >= 24 as ok from pg_timezone_abbrevs; -- Let's check the non-default timezone abbreviation sets, too set timezone_abbreviations = 'Australia'; select count(distinct utc_offset) >= 24 as ok from pg_timezone_abbrevs; set timezone_abbreviations = 'India'; select count(distinct utc_offset) >= 24 as ok from pg_timezone_abbrevs; libpg_query-13-2.1.0/test/sql/postgres_regress/tablesample.sql000066400000000000000000000102451413137616400244550ustar00rootroot00000000000000CREATE TABLE test_tablesample (id int, name text) WITH (fillfactor=10); -- use fillfactor so we don't have to load too much data to get multiple pages INSERT INTO test_tablesample SELECT i, repeat(i::text, 200) FROM generate_series(0, 9) s(i); SELECT t.id FROM test_tablesample AS t TABLESAMPLE SYSTEM (50) REPEATABLE (0); SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (100.0/11) REPEATABLE (0); SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (50) REPEATABLE (0); SELECT id FROM test_tablesample TABLESAMPLE BERNOULLI (50) REPEATABLE (0); SELECT id FROM test_tablesample TABLESAMPLE BERNOULLI (5.5) REPEATABLE (0); -- 100% should give repeatable count results (ie, all rows) in any case SELECT count(*) FROM test_tablesample TABLESAMPLE SYSTEM (100); SELECT count(*) FROM test_tablesample TABLESAMPLE SYSTEM (100) REPEATABLE (1+2); SELECT count(*) FROM test_tablesample TABLESAMPLE SYSTEM (100) REPEATABLE (0.4); CREATE VIEW test_tablesample_v1 AS SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (10*2) REPEATABLE (2); CREATE VIEW test_tablesample_v2 AS SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (99); \d+ test_tablesample_v1 \d+ test_tablesample_v2 -- check a sampled query doesn't affect cursor in progress BEGIN; DECLARE tablesample_cur CURSOR FOR SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (50) REPEATABLE (0); FETCH FIRST FROM tablesample_cur; FETCH NEXT FROM tablesample_cur; FETCH NEXT FROM tablesample_cur; SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (50) REPEATABLE (0); FETCH NEXT FROM tablesample_cur; FETCH NEXT FROM tablesample_cur; FETCH NEXT FROM tablesample_cur; FETCH FIRST FROM tablesample_cur; FETCH NEXT FROM tablesample_cur; FETCH NEXT FROM tablesample_cur; FETCH NEXT FROM tablesample_cur; FETCH NEXT FROM tablesample_cur; FETCH NEXT FROM tablesample_cur; CLOSE tablesample_cur; END; EXPLAIN (COSTS OFF) SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (50) REPEATABLE (2); EXPLAIN (COSTS OFF) SELECT * FROM test_tablesample_v1; -- check inheritance behavior explain (costs off) select count(*) from person tablesample bernoulli (100); select count(*) from person tablesample bernoulli (100); select count(*) from person; -- check that collations get assigned within the tablesample arguments SELECT count(*) FROM test_tablesample TABLESAMPLE bernoulli (('1'::text < '0'::text)::int); -- check behavior during rescans, as well as correct handling of min/max pct select * from (values (0),(100)) v(pct), lateral (select count(*) from tenk1 tablesample bernoulli (pct)) ss; select * from (values (0),(100)) v(pct), lateral (select count(*) from tenk1 tablesample system (pct)) ss; explain (costs off) select pct, count(unique1) from (values (0),(100)) v(pct), lateral (select * from tenk1 tablesample bernoulli (pct)) ss group by pct; select pct, count(unique1) from (values (0),(100)) v(pct), lateral (select * from tenk1 tablesample bernoulli (pct)) ss group by pct; select pct, count(unique1) from (values (0),(100)) v(pct), lateral (select * from tenk1 tablesample system (pct)) ss group by pct; -- errors SELECT id FROM test_tablesample TABLESAMPLE FOOBAR (1); SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (NULL); SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (50) REPEATABLE (NULL); SELECT id FROM test_tablesample TABLESAMPLE BERNOULLI (-1); SELECT id FROM test_tablesample TABLESAMPLE BERNOULLI (200); SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (-1); SELECT id FROM test_tablesample TABLESAMPLE SYSTEM (200); SELECT id FROM test_tablesample_v1 TABLESAMPLE BERNOULLI (1); INSERT INTO test_tablesample_v1 VALUES(1); WITH query_select AS (SELECT * FROM test_tablesample) SELECT * FROM query_select TABLESAMPLE BERNOULLI (5.5) REPEATABLE (1); SELECT q.* FROM (SELECT * FROM test_tablesample) as q TABLESAMPLE BERNOULLI (5); -- check partitioned tables support tablesample create table parted_sample (a int) partition by list (a); create table parted_sample_1 partition of parted_sample for values in (1); create table parted_sample_2 partition of parted_sample for values in (2); explain (costs off) select * from parted_sample tablesample bernoulli (100); drop table parted_sample, parted_sample_1, parted_sample_2; libpg_query-13-2.1.0/test/sql/postgres_regress/temp.sql000066400000000000000000000176741413137616400231460ustar00rootroot00000000000000-- -- TEMP -- Test temp relations and indexes -- -- test temp table/index masking CREATE TABLE temptest(col int); CREATE INDEX i_temptest ON temptest(col); CREATE TEMP TABLE temptest(tcol int); CREATE INDEX i_temptest ON temptest(tcol); SELECT * FROM temptest; DROP INDEX i_temptest; DROP TABLE temptest; SELECT * FROM temptest; DROP INDEX i_temptest; DROP TABLE temptest; -- test temp table selects CREATE TABLE temptest(col int); INSERT INTO temptest VALUES (1); CREATE TEMP TABLE temptest(tcol float); INSERT INTO temptest VALUES (2.1); SELECT * FROM temptest; DROP TABLE temptest; SELECT * FROM temptest; DROP TABLE temptest; -- test temp table deletion CREATE TEMP TABLE temptest(col int); \c SELECT * FROM temptest; -- Test ON COMMIT DELETE ROWS CREATE TEMP TABLE temptest(col int) ON COMMIT DELETE ROWS; -- while we're here, verify successful truncation of index with SQL function CREATE INDEX ON temptest(bit_length('')); BEGIN; INSERT INTO temptest VALUES (1); INSERT INTO temptest VALUES (2); SELECT * FROM temptest; COMMIT; SELECT * FROM temptest; DROP TABLE temptest; BEGIN; CREATE TEMP TABLE temptest(col) ON COMMIT DELETE ROWS AS SELECT 1; SELECT * FROM temptest; COMMIT; SELECT * FROM temptest; DROP TABLE temptest; -- Test ON COMMIT DROP BEGIN; CREATE TEMP TABLE temptest(col int) ON COMMIT DROP; INSERT INTO temptest VALUES (1); INSERT INTO temptest VALUES (2); SELECT * FROM temptest; COMMIT; SELECT * FROM temptest; BEGIN; CREATE TEMP TABLE temptest(col) ON COMMIT DROP AS SELECT 1; SELECT * FROM temptest; COMMIT; SELECT * FROM temptest; -- ON COMMIT is only allowed for TEMP CREATE TABLE temptest(col int) ON COMMIT DELETE ROWS; CREATE TABLE temptest(col) ON COMMIT DELETE ROWS AS SELECT 1; -- Test foreign keys BEGIN; CREATE TEMP TABLE temptest1(col int PRIMARY KEY); CREATE TEMP TABLE temptest2(col int REFERENCES temptest1) ON COMMIT DELETE ROWS; INSERT INTO temptest1 VALUES (1); INSERT INTO temptest2 VALUES (1); COMMIT; SELECT * FROM temptest1; SELECT * FROM temptest2; BEGIN; CREATE TEMP TABLE temptest3(col int PRIMARY KEY) ON COMMIT DELETE ROWS; CREATE TEMP TABLE temptest4(col int REFERENCES temptest3); COMMIT; -- Test manipulation of temp schema's placement in search path create table public.whereami (f1 text); insert into public.whereami values ('public'); create temp table whereami (f1 text); insert into whereami values ('temp'); create function public.whoami() returns text as $$select 'public'::text$$ language sql; create function pg_temp.whoami() returns text as $$select 'temp'::text$$ language sql; -- default should have pg_temp implicitly first, but only for tables select * from whereami; select whoami(); -- can list temp first explicitly, but it still doesn't affect functions set search_path = pg_temp, public; select * from whereami; select whoami(); -- or put it last for security set search_path = public, pg_temp; select * from whereami; select whoami(); -- you can invoke a temp function explicitly, though select pg_temp.whoami(); drop table public.whereami; -- types in temp schema set search_path = pg_temp, public; create domain pg_temp.nonempty as text check (value <> ''); -- function-syntax invocation of types matches rules for functions select nonempty(''); select pg_temp.nonempty(''); -- other syntax matches rules for tables select ''::nonempty; reset search_path; -- For partitioned temp tables, ON COMMIT actions ignore storage-less -- partitioned tables. begin; create temp table temp_parted_oncommit (a int) partition by list (a) on commit delete rows; create temp table temp_parted_oncommit_1 partition of temp_parted_oncommit for values in (1) on commit delete rows; insert into temp_parted_oncommit values (1); commit; -- partitions are emptied by the previous commit select * from temp_parted_oncommit; drop table temp_parted_oncommit; -- Check dependencies between ON COMMIT actions with a partitioned -- table and its partitions. Using ON COMMIT DROP on a parent removes -- the whole set. begin; create temp table temp_parted_oncommit_test (a int) partition by list (a) on commit drop; create temp table temp_parted_oncommit_test1 partition of temp_parted_oncommit_test for values in (1) on commit delete rows; create temp table temp_parted_oncommit_test2 partition of temp_parted_oncommit_test for values in (2) on commit drop; insert into temp_parted_oncommit_test values (1), (2); commit; -- no relations remain in this case. select relname from pg_class where relname ~ '^temp_parted_oncommit_test'; -- Using ON COMMIT DELETE on a partitioned table does not remove -- all rows if partitions preserve their data. begin; create temp table temp_parted_oncommit_test (a int) partition by list (a) on commit delete rows; create temp table temp_parted_oncommit_test1 partition of temp_parted_oncommit_test for values in (1) on commit preserve rows; create temp table temp_parted_oncommit_test2 partition of temp_parted_oncommit_test for values in (2) on commit drop; insert into temp_parted_oncommit_test values (1), (2); commit; -- Data from the remaining partition is still here as its rows are -- preserved. select * from temp_parted_oncommit_test; -- two relations remain in this case. select relname from pg_class where relname ~ '^temp_parted_oncommit_test' order by relname; drop table temp_parted_oncommit_test; -- Check dependencies between ON COMMIT actions with inheritance trees. -- Using ON COMMIT DROP on a parent removes the whole set. begin; create temp table temp_inh_oncommit_test (a int) on commit drop; create temp table temp_inh_oncommit_test1 () inherits(temp_inh_oncommit_test) on commit delete rows; insert into temp_inh_oncommit_test1 values (1); commit; -- no relations remain in this case select relname from pg_class where relname ~ '^temp_inh_oncommit_test'; -- Data on the parent is removed, and the child goes away. begin; create temp table temp_inh_oncommit_test (a int) on commit delete rows; create temp table temp_inh_oncommit_test1 () inherits(temp_inh_oncommit_test) on commit drop; insert into temp_inh_oncommit_test1 values (1); insert into temp_inh_oncommit_test values (1); commit; select * from temp_inh_oncommit_test; -- one relation remains select relname from pg_class where relname ~ '^temp_inh_oncommit_test'; drop table temp_inh_oncommit_test; -- Tests with two-phase commit -- Transactions creating objects in a temporary namespace cannot be used -- with two-phase commit. -- These cases generate errors about temporary namespace. -- Function creation begin; create function pg_temp.twophase_func() returns void as $$ select '2pc_func'::text $$ language sql; prepare transaction 'twophase_func'; -- Function drop create function pg_temp.twophase_func() returns void as $$ select '2pc_func'::text $$ language sql; begin; drop function pg_temp.twophase_func(); prepare transaction 'twophase_func'; -- Operator creation begin; create operator pg_temp.@@ (leftarg = int4, rightarg = int4, procedure = int4mi); prepare transaction 'twophase_operator'; -- These generate errors about temporary tables. begin; create type pg_temp.twophase_type as (a int); prepare transaction 'twophase_type'; begin; create view pg_temp.twophase_view as select 1; prepare transaction 'twophase_view'; begin; create sequence pg_temp.twophase_seq; prepare transaction 'twophase_sequence'; -- Temporary tables cannot be used with two-phase commit. create temp table twophase_tab (a int); begin; select a from twophase_tab; prepare transaction 'twophase_tab'; begin; insert into twophase_tab values (1); prepare transaction 'twophase_tab'; begin; lock twophase_tab in access exclusive mode; prepare transaction 'twophase_tab'; begin; drop table twophase_tab; prepare transaction 'twophase_tab'; -- Corner case: current_schema may create a temporary schema if namespace -- creation is pending, so check after that. First reset the connection -- to remove the temporary namespace. \c - SET search_path TO 'pg_temp'; BEGIN; SELECT current_schema() ~ 'pg_temp' AS is_temp_schema; PREPARE TRANSACTION 'twophase_search'; libpg_query-13-2.1.0/test/sql/postgres_regress/text.sql000066400000000000000000000101611413137616400231450ustar00rootroot00000000000000-- -- TEXT -- SELECT text 'this is a text string' = text 'this is a text string' AS true; SELECT text 'this is a text string' = text 'this is a text strin' AS false; CREATE TABLE TEXT_TBL (f1 text); INSERT INTO TEXT_TBL VALUES ('doh!'); INSERT INTO TEXT_TBL VALUES ('hi de ho neighbor'); SELECT '' AS two, * FROM TEXT_TBL; -- As of 8.3 we have removed most implicit casts to text, so that for example -- this no longer works: select length(42); -- But as a special exception for usability's sake, we still allow implicit -- casting to text in concatenations, so long as the other input is text or -- an unknown literal. So these work: select 'four: '::text || 2+2; select 'four: ' || 2+2; -- but not this: select 3 || 4.0; /* * various string functions */ select concat('one'); select concat(1,2,3,'hello',true, false, to_date('20100309','YYYYMMDD')); select concat_ws('#','one'); select concat_ws('#',1,2,3,'hello',true, false, to_date('20100309','YYYYMMDD')); select concat_ws(',',10,20,null,30); select concat_ws('',10,20,null,30); select concat_ws(NULL,10,20,null,30) is null; select reverse('abcde'); select i, left('ahoj', i), right('ahoj', i) from generate_series(-5, 5) t(i) order by i; select quote_literal(''); select quote_literal('abc'''); select quote_literal(e'\\'); -- check variadic labeled argument select concat(variadic array[1,2,3]); select concat_ws(',', variadic array[1,2,3]); select concat_ws(',', variadic NULL::int[]); select concat(variadic NULL::int[]) is NULL; select concat(variadic '{}'::int[]) = ''; --should fail select concat_ws(',', variadic 10); /* * format */ select format(NULL); select format('Hello'); select format('Hello %s', 'World'); select format('Hello %%'); select format('Hello %%%%'); -- should fail select format('Hello %s %s', 'World'); select format('Hello %s'); select format('Hello %x', 20); -- check literal and sql identifiers select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', 10, 'Hello'); select format('%s%s%s','Hello', NULL,'World'); select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', 10, NULL); select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', NULL, 'Hello'); -- should fail, sql identifier cannot be NULL select format('INSERT INTO %I VALUES(%L,%L)', NULL, 10, 'Hello'); -- check positional placeholders select format('%1$s %3$s', 1, 2, 3); select format('%1$s %12$s', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); -- should fail select format('%1$s %4$s', 1, 2, 3); select format('%1$s %13$s', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); select format('%0$s', 'Hello'); select format('%*0$s', 'Hello'); select format('%1$', 1); select format('%1$1', 1); -- check mix of positional and ordered placeholders select format('Hello %s %1$s %s', 'World', 'Hello again'); select format('Hello %s %s, %2$s %2$s', 'World', 'Hello again'); -- check variadic labeled arguments select format('%s, %s', variadic array['Hello','World']); select format('%s, %s', variadic array[1, 2]); select format('%s, %s', variadic array[true, false]); select format('%s, %s', variadic array[true, false]::text[]); -- check variadic with positional placeholders select format('%2$s, %1$s', variadic array['first', 'second']); select format('%2$s, %1$s', variadic array[1, 2]); -- variadic argument can be array type NULL, but should not be referenced select format('Hello', variadic NULL::int[]); -- variadic argument allows simulating more than FUNC_MAX_ARGS parameters select format(string_agg('%s',','), variadic array_agg(i)) from generate_series(1,200) g(i); -- check field widths and left, right alignment select format('>>%10s<<', 'Hello'); select format('>>%10s<<', NULL); select format('>>%10s<<', ''); select format('>>%-10s<<', ''); select format('>>%-10s<<', 'Hello'); select format('>>%-10s<<', NULL); select format('>>%1$10s<<', 'Hello'); select format('>>%1$-10I<<', 'Hello'); select format('>>%2$*1$L<<', 10, 'Hello'); select format('>>%2$*1$L<<', 10, NULL); select format('>>%2$*1$L<<', -10, NULL); select format('>>%*s<<', 10, 'Hello'); select format('>>%*1$s<<', 10, 'Hello'); select format('>>%-s<<', 'Hello'); select format('>>%10L<<', NULL); select format('>>%2$*1$L<<', NULL, 'Hello'); select format('>>%2$*1$L<<', 0, 'Hello'); libpg_query-13-2.1.0/test/sql/postgres_regress/tid.sql000066400000000000000000000046011413137616400227430ustar00rootroot00000000000000-- tests for functions related to TID handling CREATE TABLE tid_tab (a int); -- min() and max() for TIDs INSERT INTO tid_tab VALUES (1), (2); SELECT min(ctid) FROM tid_tab; SELECT max(ctid) FROM tid_tab; TRUNCATE tid_tab; -- Tests for currtid() and currtid2() with various relation kinds -- Materialized view CREATE MATERIALIZED VIEW tid_matview AS SELECT a FROM tid_tab; SELECT currtid('tid_matview'::regclass::oid, '(0,1)'::tid); -- fails SELECT currtid2('tid_matview'::text, '(0,1)'::tid); -- fails INSERT INTO tid_tab VALUES (1); REFRESH MATERIALIZED VIEW tid_matview; SELECT currtid('tid_matview'::regclass::oid, '(0,1)'::tid); -- ok SELECT currtid2('tid_matview'::text, '(0,1)'::tid); -- ok DROP MATERIALIZED VIEW tid_matview; TRUNCATE tid_tab; -- Sequence CREATE SEQUENCE tid_seq; SELECT currtid('tid_seq'::regclass::oid, '(0,1)'::tid); -- ok SELECT currtid2('tid_seq'::text, '(0,1)'::tid); -- ok DROP SEQUENCE tid_seq; -- Index, fails with incorrect relation type CREATE INDEX tid_ind ON tid_tab(a); SELECT currtid('tid_ind'::regclass::oid, '(0,1)'::tid); -- fails SELECT currtid2('tid_ind'::text, '(0,1)'::tid); -- fails DROP INDEX tid_ind; -- Partitioned table, no storage CREATE TABLE tid_part (a int) PARTITION BY RANGE (a); SELECT currtid('tid_part'::regclass::oid, '(0,1)'::tid); -- fails SELECT currtid2('tid_part'::text, '(0,1)'::tid); -- fails DROP TABLE tid_part; -- Views -- ctid not defined in the view CREATE VIEW tid_view_no_ctid AS SELECT a FROM tid_tab; SELECT currtid('tid_view_no_ctid'::regclass::oid, '(0,1)'::tid); -- fails SELECT currtid2('tid_view_no_ctid'::text, '(0,1)'::tid); -- fails DROP VIEW tid_view_no_ctid; -- ctid fetched directly from the source table. CREATE VIEW tid_view_with_ctid AS SELECT ctid, a FROM tid_tab; SELECT currtid('tid_view_with_ctid'::regclass::oid, '(0,1)'::tid); -- fails SELECT currtid2('tid_view_with_ctid'::text, '(0,1)'::tid); -- fails INSERT INTO tid_tab VALUES (1); SELECT currtid('tid_view_with_ctid'::regclass::oid, '(0,1)'::tid); -- ok SELECT currtid2('tid_view_with_ctid'::text, '(0,1)'::tid); -- ok DROP VIEW tid_view_with_ctid; TRUNCATE tid_tab; -- ctid attribute with incorrect data type CREATE VIEW tid_view_fake_ctid AS SELECT 1 AS ctid, 2 AS a; SELECT currtid('tid_view_fake_ctid'::regclass::oid, '(0,1)'::tid); -- fails SELECT currtid2('tid_view_fake_ctid'::text, '(0,1)'::tid); -- fails DROP VIEW tid_view_fake_ctid; DROP TABLE tid_tab CASCADE; libpg_query-13-2.1.0/test/sql/postgres_regress/tidscan.sql000066400000000000000000000070531413137616400236140ustar00rootroot00000000000000-- tests for tidscans CREATE TABLE tidscan(id integer); -- only insert a few rows, we don't want to spill onto a second table page INSERT INTO tidscan VALUES (1), (2), (3); -- show ctids SELECT ctid, * FROM tidscan; -- ctid equality - implemented as tidscan EXPLAIN (COSTS OFF) SELECT ctid, * FROM tidscan WHERE ctid = '(0,1)'; SELECT ctid, * FROM tidscan WHERE ctid = '(0,1)'; EXPLAIN (COSTS OFF) SELECT ctid, * FROM tidscan WHERE '(0,1)' = ctid; SELECT ctid, * FROM tidscan WHERE '(0,1)' = ctid; -- OR'd clauses EXPLAIN (COSTS OFF) SELECT ctid, * FROM tidscan WHERE ctid = '(0,2)' OR '(0,1)' = ctid; SELECT ctid, * FROM tidscan WHERE ctid = '(0,2)' OR '(0,1)' = ctid; -- ctid = ScalarArrayOp - implemented as tidscan EXPLAIN (COSTS OFF) SELECT ctid, * FROM tidscan WHERE ctid = ANY(ARRAY['(0,1)', '(0,2)']::tid[]); SELECT ctid, * FROM tidscan WHERE ctid = ANY(ARRAY['(0,1)', '(0,2)']::tid[]); -- ctid != ScalarArrayOp - can't be implemented as tidscan EXPLAIN (COSTS OFF) SELECT ctid, * FROM tidscan WHERE ctid != ANY(ARRAY['(0,1)', '(0,2)']::tid[]); SELECT ctid, * FROM tidscan WHERE ctid != ANY(ARRAY['(0,1)', '(0,2)']::tid[]); -- tid equality extracted from sub-AND clauses EXPLAIN (COSTS OFF) SELECT ctid, * FROM tidscan WHERE (id = 3 AND ctid IN ('(0,2)', '(0,3)')) OR (ctid = '(0,1)' AND id = 1); SELECT ctid, * FROM tidscan WHERE (id = 3 AND ctid IN ('(0,2)', '(0,3)')) OR (ctid = '(0,1)' AND id = 1); -- nestloop-with-inner-tidscan joins on tid SET enable_hashjoin TO off; -- otherwise hash join might win EXPLAIN (COSTS OFF) SELECT t1.ctid, t1.*, t2.ctid, t2.* FROM tidscan t1 JOIN tidscan t2 ON t1.ctid = t2.ctid WHERE t1.id = 1; SELECT t1.ctid, t1.*, t2.ctid, t2.* FROM tidscan t1 JOIN tidscan t2 ON t1.ctid = t2.ctid WHERE t1.id = 1; EXPLAIN (COSTS OFF) SELECT t1.ctid, t1.*, t2.ctid, t2.* FROM tidscan t1 LEFT JOIN tidscan t2 ON t1.ctid = t2.ctid WHERE t1.id = 1; SELECT t1.ctid, t1.*, t2.ctid, t2.* FROM tidscan t1 LEFT JOIN tidscan t2 ON t1.ctid = t2.ctid WHERE t1.id = 1; RESET enable_hashjoin; -- exercise backward scan and rewind BEGIN; DECLARE c CURSOR FOR SELECT ctid, * FROM tidscan WHERE ctid = ANY(ARRAY['(0,1)', '(0,2)']::tid[]); FETCH ALL FROM c; FETCH BACKWARD 1 FROM c; FETCH FIRST FROM c; ROLLBACK; -- tidscan via CURRENT OF BEGIN; DECLARE c CURSOR FOR SELECT ctid, * FROM tidscan; FETCH NEXT FROM c; -- skip one row FETCH NEXT FROM c; -- perform update EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) UPDATE tidscan SET id = -id WHERE CURRENT OF c RETURNING *; FETCH NEXT FROM c; -- perform update EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) UPDATE tidscan SET id = -id WHERE CURRENT OF c RETURNING *; SELECT * FROM tidscan; -- position cursor past any rows FETCH NEXT FROM c; -- should error out EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) UPDATE tidscan SET id = -id WHERE CURRENT OF c RETURNING *; ROLLBACK; -- bulk joins on CTID -- (these plans don't use TID scans, but this still seems like an -- appropriate place for these tests) EXPLAIN (COSTS OFF) SELECT count(*) FROM tenk1 t1 JOIN tenk1 t2 ON t1.ctid = t2.ctid; SELECT count(*) FROM tenk1 t1 JOIN tenk1 t2 ON t1.ctid = t2.ctid; SET enable_hashjoin TO off; EXPLAIN (COSTS OFF) SELECT count(*) FROM tenk1 t1 JOIN tenk1 t2 ON t1.ctid = t2.ctid; SELECT count(*) FROM tenk1 t1 JOIN tenk1 t2 ON t1.ctid = t2.ctid; RESET enable_hashjoin; -- check predicate lock on CTID BEGIN ISOLATION LEVEL SERIALIZABLE; SELECT * FROM tidscan WHERE ctid = '(0,1)'; -- locktype should be 'tuple' SELECT locktype, mode FROM pg_locks WHERE pid = pg_backend_pid() AND mode = 'SIReadLock'; ROLLBACK; DROP TABLE tidscan; libpg_query-13-2.1.0/test/sql/postgres_regress/time.sql000066400000000000000000000031741413137616400231250ustar00rootroot00000000000000-- -- TIME -- CREATE TABLE TIME_TBL (f1 time(2)); INSERT INTO TIME_TBL VALUES ('00:00'); INSERT INTO TIME_TBL VALUES ('01:00'); -- as of 7.4, timezone spec should be accepted and ignored INSERT INTO TIME_TBL VALUES ('02:03 PST'); INSERT INTO TIME_TBL VALUES ('11:59 EDT'); INSERT INTO TIME_TBL VALUES ('12:00'); INSERT INTO TIME_TBL VALUES ('12:01'); INSERT INTO TIME_TBL VALUES ('23:59'); INSERT INTO TIME_TBL VALUES ('11:59:59.99 PM'); INSERT INTO TIME_TBL VALUES ('2003-03-07 15:36:39 America/New_York'); INSERT INTO TIME_TBL VALUES ('2003-07-07 15:36:39 America/New_York'); -- this should fail (the timezone offset is not known) INSERT INTO TIME_TBL VALUES ('15:36:39 America/New_York'); SELECT f1 AS "Time" FROM TIME_TBL; SELECT f1 AS "Three" FROM TIME_TBL WHERE f1 < '05:06:07'; SELECT f1 AS "Five" FROM TIME_TBL WHERE f1 > '05:06:07'; SELECT f1 AS "None" FROM TIME_TBL WHERE f1 < '00:00'; SELECT f1 AS "Eight" FROM TIME_TBL WHERE f1 >= '00:00'; -- Check edge cases SELECT '23:59:59.999999'::time; SELECT '23:59:59.9999999'::time; -- rounds up SELECT '23:59:60'::time; -- rounds up SELECT '24:00:00'::time; -- allowed SELECT '24:00:00.01'::time; -- not allowed SELECT '23:59:60.01'::time; -- not allowed SELECT '24:01:00'::time; -- not allowed SELECT '25:00:00'::time; -- not allowed -- -- TIME simple math -- -- We now make a distinction between time and intervals, -- and adding two times together makes no sense at all. -- Leave in one query to show that it is rejected, -- and do the rest of the testing in horology.sql -- where we do mixed-type arithmetic. - thomas 2000-12-02 SELECT f1 + time '00:01' AS "Illegal" FROM TIME_TBL; libpg_query-13-2.1.0/test/sql/postgres_regress/timestamp.sql000066400000000000000000000237621413137616400241770ustar00rootroot00000000000000-- -- TIMESTAMP -- CREATE TABLE TIMESTAMP_TBL (d1 timestamp(2) without time zone); -- Test shorthand input values -- We can't just "select" the results since they aren't constants; test for -- equality instead. We can do that by running the test inside a transaction -- block, within which the value of 'now' shouldn't change, and so these -- related values shouldn't either. BEGIN; INSERT INTO TIMESTAMP_TBL VALUES ('today'); INSERT INTO TIMESTAMP_TBL VALUES ('yesterday'); INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow'); -- time zone should be ignored by this data type INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow EST'); INSERT INTO TIMESTAMP_TBL VALUES ('tomorrow zulu'); SELECT count(*) AS One FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone 'today'; SELECT count(*) AS Three FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone 'tomorrow'; SELECT count(*) AS One FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone 'yesterday'; COMMIT; DELETE FROM TIMESTAMP_TBL; -- Verify that 'now' *does* change over a reasonable interval such as 100 msec, -- and that it doesn't change over the same interval within a transaction block INSERT INTO TIMESTAMP_TBL VALUES ('now'); SELECT pg_sleep(0.1); BEGIN; INSERT INTO TIMESTAMP_TBL VALUES ('now'); SELECT pg_sleep(0.1); INSERT INTO TIMESTAMP_TBL VALUES ('now'); SELECT pg_sleep(0.1); SELECT count(*) AS two FROM TIMESTAMP_TBL WHERE d1 = timestamp(2) without time zone 'now'; SELECT count(d1) AS three, count(DISTINCT d1) AS two FROM TIMESTAMP_TBL; COMMIT; TRUNCATE TIMESTAMP_TBL; -- Special values INSERT INTO TIMESTAMP_TBL VALUES ('-infinity'); INSERT INTO TIMESTAMP_TBL VALUES ('infinity'); INSERT INTO TIMESTAMP_TBL VALUES ('epoch'); -- Postgres v6.0 standard output format INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01 1997 PST'); -- Variations on Postgres v6.1 standard output format INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.000001 1997 PST'); INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.999999 1997 PST'); INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.4 1997 PST'); INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.5 1997 PST'); INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01.6 1997 PST'); -- ISO 8601 format INSERT INTO TIMESTAMP_TBL VALUES ('1997-01-02'); INSERT INTO TIMESTAMP_TBL VALUES ('1997-01-02 03:04:05'); INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01-08'); INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01-0800'); INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01 -08:00'); INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 -0800'); INSERT INTO TIMESTAMP_TBL VALUES ('1997-06-10 17:32:01 -07:00'); INSERT INTO TIMESTAMP_TBL VALUES ('2001-09-22T18:19:20'); -- POSIX format (note that the timezone abbrev is just decoration here) INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 08:14:01 GMT+8'); INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 13:14:02 GMT-1'); INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 12:14:03 GMT-2'); INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 03:14:04 PST+8'); INSERT INTO TIMESTAMP_TBL VALUES ('2000-03-15 02:14:05 MST+7:00'); -- Variations for acceptable input formats INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 17:32:01 1997 -0800'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 5:32PM 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('1997/02/10 17:32:01-0800'); INSERT INTO TIMESTAMP_TBL VALUES ('1997-02-10 17:32:01 PST'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb-10-1997 17:32:01 PST'); INSERT INTO TIMESTAMP_TBL VALUES ('02-10-1997 17:32:01 PST'); INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 PST'); set datestyle to ymd; INSERT INTO TIMESTAMP_TBL VALUES ('97FEB10 5:32:01PM UTC'); INSERT INTO TIMESTAMP_TBL VALUES ('97/02/10 17:32:01 UTC'); reset datestyle; INSERT INTO TIMESTAMP_TBL VALUES ('1997.041 17:32:01 UTC'); INSERT INTO TIMESTAMP_TBL VALUES ('19970210 173201 America/New_York'); -- this fails (even though TZ is a no-op, we still look it up) INSERT INTO TIMESTAMP_TBL VALUES ('19970710 173201 America/Does_not_exist'); -- Check date conversion and date arithmetic INSERT INTO TIMESTAMP_TBL VALUES ('1997-06-10 18:32:01 PDT'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 10 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 11 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 12 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 13 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 14 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 15 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 0097 BC'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 0097'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 0597'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1097'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1697'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1797'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1897'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 2097'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 28 17:32:01 1996'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1996'); INSERT INTO TIMESTAMP_TBL VALUES ('Mar 01 17:32:01 1996'); INSERT INTO TIMESTAMP_TBL VALUES ('Dec 30 17:32:01 1996'); INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 1996'); INSERT INTO TIMESTAMP_TBL VALUES ('Jan 01 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 28 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 29 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Mar 01 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Dec 30 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 1997'); INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 1999'); INSERT INTO TIMESTAMP_TBL VALUES ('Jan 01 17:32:01 2000'); INSERT INTO TIMESTAMP_TBL VALUES ('Dec 31 17:32:01 2000'); INSERT INTO TIMESTAMP_TBL VALUES ('Jan 01 17:32:01 2001'); -- Currently unsupported syntax and ranges INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 -0097'); INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC'); SELECT '' AS "64", d1 FROM TIMESTAMP_TBL; -- Check behavior at the lower boundary of the timestamp range SELECT '4714-11-24 00:00:00 BC'::timestamp; SELECT '4714-11-23 23:59:59 BC'::timestamp; -- out of range -- The upper boundary differs between integer and float timestamps, so no check -- Demonstrate functions and operators SELECT '' AS "48", d1 FROM TIMESTAMP_TBL WHERE d1 > timestamp without time zone '1997-01-02'; SELECT '' AS "15", d1 FROM TIMESTAMP_TBL WHERE d1 < timestamp without time zone '1997-01-02'; SELECT '' AS one, d1 FROM TIMESTAMP_TBL WHERE d1 = timestamp without time zone '1997-01-02'; SELECT '' AS "63", d1 FROM TIMESTAMP_TBL WHERE d1 != timestamp without time zone '1997-01-02'; SELECT '' AS "16", d1 FROM TIMESTAMP_TBL WHERE d1 <= timestamp without time zone '1997-01-02'; SELECT '' AS "49", d1 FROM TIMESTAMP_TBL WHERE d1 >= timestamp without time zone '1997-01-02'; SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01'; SELECT '' AS date_trunc_week, date_trunc( 'week', timestamp '2004-02-29 15:44:17.71393' ) AS week_trunc; -- Test casting within a BETWEEN qualifier SELECT '' AS "54", d1 - timestamp without time zone '1997-01-02' AS diff FROM TIMESTAMP_TBL WHERE d1 BETWEEN timestamp without time zone '1902-01-01' AND timestamp without time zone '2038-01-01'; -- DATE_PART (timestamp_part) SELECT d1 as "timestamp", date_part( 'year', d1) AS year, date_part( 'month', d1) AS month, date_part( 'day', d1) AS day, date_part( 'hour', d1) AS hour, date_part( 'minute', d1) AS minute, date_part( 'second', d1) AS second FROM TIMESTAMP_TBL; SELECT d1 as "timestamp", date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec, date_part( 'usec', d1) AS usec FROM TIMESTAMP_TBL; SELECT d1 as "timestamp", date_part( 'isoyear', d1) AS isoyear, date_part( 'week', d1) AS week, date_part( 'isodow', d1) AS isodow, date_part( 'dow', d1) AS dow, date_part( 'doy', d1) AS doy FROM TIMESTAMP_TBL; SELECT d1 as "timestamp", date_part( 'decade', d1) AS decade, date_part( 'century', d1) AS century, date_part( 'millennium', d1) AS millennium, round(date_part( 'julian', d1)) AS julian FROM TIMESTAMP_TBL; -- TO_CHAR() SELECT '' AS to_char_1, to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon') FROM TIMESTAMP_TBL; SELECT '' AS to_char_2, to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM') FROM TIMESTAMP_TBL; SELECT '' AS to_char_3, to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J') FROM TIMESTAMP_TBL; SELECT '' AS to_char_4, to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ') FROM TIMESTAMP_TBL; SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS') FROM TIMESTAMP_TBL; SELECT '' AS to_char_6, to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMP_TBL; SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS') FROM TIMESTAMP_TBL; SELECT '' AS to_char_8, to_char(d1, 'YYYYTH YYYYth Jth') FROM TIMESTAMP_TBL; SELECT '' AS to_char_9, to_char(d1, 'YYYY A.D. YYYY a.d. YYYY bc HH:MI:SS P.M. HH:MI:SS p.m. HH:MI:SS pm') FROM TIMESTAMP_TBL; SELECT '' AS to_char_10, to_char(d1, 'IYYY IYY IY I IW IDDD ID') FROM TIMESTAMP_TBL; SELECT '' AS to_char_11, to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID') FROM TIMESTAMP_TBL; SELECT '' AS to_char_12, to_char(d, 'FF1 FF2 FF3 FF4 FF5 FF6 ff1 ff2 ff3 ff4 ff5 ff6 MS US') FROM (VALUES ('2018-11-02 12:34:56'::timestamp), ('2018-11-02 12:34:56.78'), ('2018-11-02 12:34:56.78901'), ('2018-11-02 12:34:56.78901234') ) d(d); -- Roman months, with upper and lower case. SELECT i, to_char(i * interval '1mon', 'rm'), to_char(i * interval '1mon', 'RM') FROM generate_series(-13, 13) i; -- timestamp numeric fields constructor SELECT make_timestamp(2014,12,28,6,30,45.887); libpg_query-13-2.1.0/test/sql/postgres_regress/timestamptz.sql000066400000000000000000000527661413137616400245630ustar00rootroot00000000000000-- -- TIMESTAMPTZ -- CREATE TABLE TIMESTAMPTZ_TBL (d1 timestamp(2) with time zone); -- Test shorthand input values -- We can't just "select" the results since they aren't constants; test for -- equality instead. We can do that by running the test inside a transaction -- block, within which the value of 'now' shouldn't change, and so these -- related values shouldn't either. BEGIN; INSERT INTO TIMESTAMPTZ_TBL VALUES ('today'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('yesterday'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('tomorrow'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('tomorrow EST'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('tomorrow zulu'); SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp with time zone 'today'; SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp with time zone 'tomorrow'; SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp with time zone 'yesterday'; SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp with time zone 'tomorrow EST'; SELECT count(*) AS One FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp with time zone 'tomorrow zulu'; COMMIT; DELETE FROM TIMESTAMPTZ_TBL; -- Verify that 'now' *does* change over a reasonable interval such as 100 msec, -- and that it doesn't change over the same interval within a transaction block INSERT INTO TIMESTAMPTZ_TBL VALUES ('now'); SELECT pg_sleep(0.1); BEGIN; INSERT INTO TIMESTAMPTZ_TBL VALUES ('now'); SELECT pg_sleep(0.1); INSERT INTO TIMESTAMPTZ_TBL VALUES ('now'); SELECT pg_sleep(0.1); SELECT count(*) AS two FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp(2) with time zone 'now'; SELECT count(d1) AS three, count(DISTINCT d1) AS two FROM TIMESTAMPTZ_TBL; COMMIT; TRUNCATE TIMESTAMPTZ_TBL; -- Special values INSERT INTO TIMESTAMPTZ_TBL VALUES ('-infinity'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('infinity'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('epoch'); -- Postgres v6.0 standard output format INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01 1997 PST'); -- Variations on Postgres v6.1 standard output format INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01.000001 1997 PST'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01.999999 1997 PST'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01.4 1997 PST'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01.5 1997 PST'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01.6 1997 PST'); -- ISO 8601 format INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-01-02'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-01-02 03:04:05'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-02-10 17:32:01-08'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-02-10 17:32:01-0800'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-02-10 17:32:01 -08:00'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970210 173201 -0800'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-06-10 17:32:01 -07:00'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('2001-09-22T18:19:20'); -- POSIX format (note that the timezone abbrev is just decoration here) INSERT INTO TIMESTAMPTZ_TBL VALUES ('2000-03-15 08:14:01 GMT+8'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('2000-03-15 13:14:02 GMT-1'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('2000-03-15 12:14:03 GMT-2'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('2000-03-15 03:14:04 PST+8'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('2000-03-15 02:14:05 MST+7:00'); -- Variations for acceptable input formats INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 10 17:32:01 1997 -0800'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 10 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 10 5:32PM 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997/02/10 17:32:01-0800'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-02-10 17:32:01 PST'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb-10-1997 17:32:01 PST'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('02-10-1997 17:32:01 PST'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970210 173201 PST'); set datestyle to ymd; INSERT INTO TIMESTAMPTZ_TBL VALUES ('97FEB10 5:32:01PM UTC'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('97/02/10 17:32:01 UTC'); reset datestyle; INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997.041 17:32:01 UTC'); -- timestamps at different timezones INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970210 173201 America/New_York'); SELECT '19970210 173201' AT TIME ZONE 'America/New_York'; INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970710 173201 America/New_York'); SELECT '19970710 173201' AT TIME ZONE 'America/New_York'; INSERT INTO TIMESTAMPTZ_TBL VALUES ('19970710 173201 America/Does_not_exist'); SELECT '19970710 173201' AT TIME ZONE 'America/Does_not_exist'; -- Daylight saving time for timestamps beyond 32-bit time_t range. SELECT '20500710 173201 Europe/Helsinki'::timestamptz; -- DST SELECT '20500110 173201 Europe/Helsinki'::timestamptz; -- non-DST SELECT '205000-07-10 17:32:01 Europe/Helsinki'::timestamptz; -- DST SELECT '205000-01-10 17:32:01 Europe/Helsinki'::timestamptz; -- non-DST -- Check date conversion and date arithmetic INSERT INTO TIMESTAMPTZ_TBL VALUES ('1997-06-10 18:32:01 PDT'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 10 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 11 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 12 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 13 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 14 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 15 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 0097 BC'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 0097'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 0597'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1097'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1697'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1797'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1897'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 2097'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 28 17:32:01 1996'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 29 17:32:01 1996'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mar 01 17:32:01 1996'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 30 17:32:01 1996'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 31 17:32:01 1996'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Jan 01 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 28 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 29 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mar 01 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 30 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 31 17:32:01 1997'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 31 17:32:01 1999'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Jan 01 17:32:01 2000'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Dec 31 17:32:01 2000'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Jan 01 17:32:01 2001'); -- Currently unsupported syntax and ranges INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 -0097'); INSERT INTO TIMESTAMPTZ_TBL VALUES ('Feb 16 17:32:01 5097 BC'); -- Alternative field order that we've historically supported (sort of) -- with regular and POSIXy timezone specs SELECT 'Wed Jul 11 10:51:14 America/New_York 2001'::timestamptz; SELECT 'Wed Jul 11 10:51:14 GMT-4 2001'::timestamptz; SELECT 'Wed Jul 11 10:51:14 GMT+4 2001'::timestamptz; SELECT 'Wed Jul 11 10:51:14 PST-03:00 2001'::timestamptz; SELECT 'Wed Jul 11 10:51:14 PST+03:00 2001'::timestamptz; SELECT '' AS "64", d1 FROM TIMESTAMPTZ_TBL; -- Check behavior at the lower boundary of the timestamp range SELECT '4714-11-24 00:00:00+00 BC'::timestamptz; SELECT '4714-11-23 16:00:00-08 BC'::timestamptz; SELECT 'Sun Nov 23 16:00:00 4714 PST BC'::timestamptz; SELECT '4714-11-23 23:59:59+00 BC'::timestamptz; -- out of range -- The upper boundary differs between integer and float timestamps, so no check -- Demonstrate functions and operators SELECT '' AS "48", d1 FROM TIMESTAMPTZ_TBL WHERE d1 > timestamp with time zone '1997-01-02'; SELECT '' AS "15", d1 FROM TIMESTAMPTZ_TBL WHERE d1 < timestamp with time zone '1997-01-02'; SELECT '' AS one, d1 FROM TIMESTAMPTZ_TBL WHERE d1 = timestamp with time zone '1997-01-02'; SELECT '' AS "63", d1 FROM TIMESTAMPTZ_TBL WHERE d1 != timestamp with time zone '1997-01-02'; SELECT '' AS "16", d1 FROM TIMESTAMPTZ_TBL WHERE d1 <= timestamp with time zone '1997-01-02'; SELECT '' AS "49", d1 FROM TIMESTAMPTZ_TBL WHERE d1 >= timestamp with time zone '1997-01-02'; SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01'; SELECT '' AS date_trunc_week, date_trunc( 'week', timestamp with time zone '2004-02-29 15:44:17.71393' ) AS week_trunc; SELECT '' AS date_trunc_at_tz, date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'Australia/Sydney') as sydney_trunc; -- zone name SELECT '' AS date_trunc_at_tz, date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'GMT') as gmt_trunc; -- fixed-offset abbreviation SELECT '' AS date_trunc_at_tz, date_trunc('day', timestamp with time zone '2001-02-16 20:38:40+00', 'VET') as vet_trunc; -- variable-offset abbreviation -- Test casting within a BETWEEN qualifier SELECT '' AS "54", d1 - timestamp with time zone '1997-01-02' AS diff FROM TIMESTAMPTZ_TBL WHERE d1 BETWEEN timestamp with time zone '1902-01-01' AND timestamp with time zone '2038-01-01'; -- DATE_PART (timestamptz_part) SELECT d1 as timestamptz, date_part( 'year', d1) AS year, date_part( 'month', d1) AS month, date_part( 'day', d1) AS day, date_part( 'hour', d1) AS hour, date_part( 'minute', d1) AS minute, date_part( 'second', d1) AS second FROM TIMESTAMPTZ_TBL; SELECT d1 as timestamptz, date_part( 'quarter', d1) AS quarter, date_part( 'msec', d1) AS msec, date_part( 'usec', d1) AS usec FROM TIMESTAMPTZ_TBL; SELECT d1 as timestamptz, date_part( 'isoyear', d1) AS isoyear, date_part( 'week', d1) AS week, date_part( 'isodow', d1) AS isodow, date_part( 'dow', d1) AS dow, date_part( 'doy', d1) AS doy FROM TIMESTAMPTZ_TBL; SELECT d1 as timestamptz, date_part( 'decade', d1) AS decade, date_part( 'century', d1) AS century, date_part( 'millennium', d1) AS millennium, round(date_part( 'julian', d1)) AS julian FROM TIMESTAMPTZ_TBL; SELECT d1 as timestamptz, date_part( 'timezone', d1) AS timezone, date_part( 'timezone_hour', d1) AS timezone_hour, date_part( 'timezone_minute', d1) AS timezone_minute FROM TIMESTAMPTZ_TBL; -- TO_CHAR() SELECT '' AS to_char_1, to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_2, to_char(d1, 'FMDAY FMDay FMday FMMONTH FMMonth FMmonth FMRM') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_3, to_char(d1, 'Y,YYY YYYY YYY YY Y CC Q MM WW DDD DD D J') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_4, to_char(d1, 'FMY,YYY FMYYYY FMYYY FMYY FMY FMCC FMQ FMMM FMWW FMDDD FMDD FMD FMJ') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_5, to_char(d1, 'HH HH12 HH24 MI SS SSSS') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_6, to_char(d1, E'"HH:MI:SS is" HH:MI:SS "\\"text between quote marks\\""') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_7, to_char(d1, 'HH24--text--MI--text--SS') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_8, to_char(d1, 'YYYYTH YYYYth Jth') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_9, to_char(d1, 'YYYY A.D. YYYY a.d. YYYY bc HH:MI:SS P.M. HH:MI:SS p.m. HH:MI:SS pm') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_10, to_char(d1, 'IYYY IYY IY I IW IDDD ID') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_11, to_char(d1, 'FMIYYY FMIYY FMIY FMI FMIW FMIDDD FMID') FROM TIMESTAMPTZ_TBL; SELECT '' AS to_char_12, to_char(d, 'FF1 FF2 FF3 FF4 FF5 FF6 ff1 ff2 ff3 ff4 ff5 ff6 MS US') FROM (VALUES ('2018-11-02 12:34:56'::timestamptz), ('2018-11-02 12:34:56.78'), ('2018-11-02 12:34:56.78901'), ('2018-11-02 12:34:56.78901234') ) d(d); -- Check OF, TZH, TZM with various zone offsets, particularly fractional hours SET timezone = '00:00'; SELECT to_char(now(), 'OF') as "OF", to_char(now(), 'TZH:TZM') as "TZH:TZM"; SET timezone = '+02:00'; SELECT to_char(now(), 'OF') as "OF", to_char(now(), 'TZH:TZM') as "TZH:TZM"; SET timezone = '-13:00'; SELECT to_char(now(), 'OF') as "OF", to_char(now(), 'TZH:TZM') as "TZH:TZM"; SET timezone = '-00:30'; SELECT to_char(now(), 'OF') as "OF", to_char(now(), 'TZH:TZM') as "TZH:TZM"; SET timezone = '00:30'; SELECT to_char(now(), 'OF') as "OF", to_char(now(), 'TZH:TZM') as "TZH:TZM"; SET timezone = '-04:30'; SELECT to_char(now(), 'OF') as "OF", to_char(now(), 'TZH:TZM') as "TZH:TZM"; SET timezone = '04:30'; SELECT to_char(now(), 'OF') as "OF", to_char(now(), 'TZH:TZM') as "TZH:TZM"; SET timezone = '-04:15'; SELECT to_char(now(), 'OF') as "OF", to_char(now(), 'TZH:TZM') as "TZH:TZM"; SET timezone = '04:15'; SELECT to_char(now(), 'OF') as "OF", to_char(now(), 'TZH:TZM') as "TZH:TZM"; RESET timezone; CREATE TABLE TIMESTAMPTZ_TST (a int , b timestamptz); -- Test year field value with len > 4 INSERT INTO TIMESTAMPTZ_TST VALUES(1, 'Sat Mar 12 23:58:48 1000 IST'); INSERT INTO TIMESTAMPTZ_TST VALUES(2, 'Sat Mar 12 23:58:48 10000 IST'); INSERT INTO TIMESTAMPTZ_TST VALUES(3, 'Sat Mar 12 23:58:48 100000 IST'); INSERT INTO TIMESTAMPTZ_TST VALUES(3, '10000 Mar 12 23:58:48 IST'); INSERT INTO TIMESTAMPTZ_TST VALUES(4, '100000312 23:58:48 IST'); INSERT INTO TIMESTAMPTZ_TST VALUES(4, '1000000312 23:58:48 IST'); --Verify data SELECT * FROM TIMESTAMPTZ_TST ORDER BY a; --Cleanup DROP TABLE TIMESTAMPTZ_TST; -- test timestamptz constructors set TimeZone to 'America/New_York'; -- numeric timezone SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33); SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '+2'); SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '-2'); WITH tzs (tz) AS (VALUES ('+1'), ('+1:'), ('+1:0'), ('+100'), ('+1:00'), ('+01:00'), ('+10'), ('+1000'), ('+10:'), ('+10:0'), ('+10:00'), ('+10:00:'), ('+10:00:1'), ('+10:00:01'), ('+10:00:10')) SELECT make_timestamptz(2010, 2, 27, 3, 45, 00, tz), tz FROM tzs; -- these should fail SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '2'); SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, '+16'); SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, '-16'); -- should be true SELECT make_timestamptz(1973, 07, 15, 08, 15, 55.33, '+2') = '1973-07-15 08:15:55.33+02'::timestamptz; -- full timezone names SELECT make_timestamptz(2014, 12, 10, 0, 0, 0, 'Europe/Prague') = timestamptz '2014-12-10 00:00:00 Europe/Prague'; SELECT make_timestamptz(2014, 12, 10, 0, 0, 0, 'Europe/Prague') AT TIME ZONE 'UTC'; SELECT make_timestamptz(1846, 12, 10, 0, 0, 0, 'Asia/Manila') AT TIME ZONE 'UTC'; SELECT make_timestamptz(1881, 12, 10, 0, 0, 0, 'Europe/Paris') AT TIME ZONE 'UTC'; SELECT make_timestamptz(1910, 12, 24, 0, 0, 0, 'Nehwon/Lankhmar'); -- abbreviations SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'EST'); SELECT make_timestamptz(2008, 12, 10, 10, 10, 10, 'EDT'); SELECT make_timestamptz(2014, 12, 10, 10, 10, 10, 'PST8PDT'); RESET TimeZone; -- -- Test behavior with a dynamic (time-varying) timezone abbreviation. -- These tests rely on the knowledge that MSK (Europe/Moscow standard time) -- moved forwards in Mar 2011 and backwards again in Oct 2014. -- SET TimeZone to 'UTC'; SELECT '2011-03-27 00:00:00 Europe/Moscow'::timestamptz; SELECT '2011-03-27 01:00:00 Europe/Moscow'::timestamptz; SELECT '2011-03-27 01:59:59 Europe/Moscow'::timestamptz; SELECT '2011-03-27 02:00:00 Europe/Moscow'::timestamptz; SELECT '2011-03-27 02:00:01 Europe/Moscow'::timestamptz; SELECT '2011-03-27 02:59:59 Europe/Moscow'::timestamptz; SELECT '2011-03-27 03:00:00 Europe/Moscow'::timestamptz; SELECT '2011-03-27 03:00:01 Europe/Moscow'::timestamptz; SELECT '2011-03-27 04:00:00 Europe/Moscow'::timestamptz; SELECT '2011-03-27 00:00:00 MSK'::timestamptz; SELECT '2011-03-27 01:00:00 MSK'::timestamptz; SELECT '2011-03-27 01:59:59 MSK'::timestamptz; SELECT '2011-03-27 02:00:00 MSK'::timestamptz; SELECT '2011-03-27 02:00:01 MSK'::timestamptz; SELECT '2011-03-27 02:59:59 MSK'::timestamptz; SELECT '2011-03-27 03:00:00 MSK'::timestamptz; SELECT '2011-03-27 03:00:01 MSK'::timestamptz; SELECT '2011-03-27 04:00:00 MSK'::timestamptz; SELECT '2014-10-26 00:00:00 Europe/Moscow'::timestamptz; SELECT '2014-10-26 00:59:59 Europe/Moscow'::timestamptz; SELECT '2014-10-26 01:00:00 Europe/Moscow'::timestamptz; SELECT '2014-10-26 01:00:01 Europe/Moscow'::timestamptz; SELECT '2014-10-26 02:00:00 Europe/Moscow'::timestamptz; SELECT '2014-10-26 00:00:00 MSK'::timestamptz; SELECT '2014-10-26 00:59:59 MSK'::timestamptz; SELECT '2014-10-26 01:00:00 MSK'::timestamptz; SELECT '2014-10-26 01:00:01 MSK'::timestamptz; SELECT '2014-10-26 02:00:00 MSK'::timestamptz; SELECT '2011-03-27 00:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 01:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 01:59:59'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 02:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 02:00:01'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 02:59:59'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 03:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 03:00:01'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 04:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 00:00:00'::timestamp AT TIME ZONE 'MSK'; SELECT '2011-03-27 01:00:00'::timestamp AT TIME ZONE 'MSK'; SELECT '2011-03-27 01:59:59'::timestamp AT TIME ZONE 'MSK'; SELECT '2011-03-27 02:00:00'::timestamp AT TIME ZONE 'MSK'; SELECT '2011-03-27 02:00:01'::timestamp AT TIME ZONE 'MSK'; SELECT '2011-03-27 02:59:59'::timestamp AT TIME ZONE 'MSK'; SELECT '2011-03-27 03:00:00'::timestamp AT TIME ZONE 'MSK'; SELECT '2011-03-27 03:00:01'::timestamp AT TIME ZONE 'MSK'; SELECT '2011-03-27 04:00:00'::timestamp AT TIME ZONE 'MSK'; SELECT '2014-10-26 00:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2014-10-26 00:59:59'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2014-10-26 01:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2014-10-26 01:00:01'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2014-10-26 02:00:00'::timestamp AT TIME ZONE 'Europe/Moscow'; SELECT '2014-10-26 00:00:00'::timestamp AT TIME ZONE 'MSK'; SELECT '2014-10-26 00:59:59'::timestamp AT TIME ZONE 'MSK'; SELECT '2014-10-26 01:00:00'::timestamp AT TIME ZONE 'MSK'; SELECT '2014-10-26 01:00:01'::timestamp AT TIME ZONE 'MSK'; SELECT '2014-10-26 02:00:00'::timestamp AT TIME ZONE 'MSK'; SELECT make_timestamptz(2014, 10, 26, 0, 0, 0, 'MSK'); SELECT make_timestamptz(2014, 10, 26, 1, 0, 0, 'MSK'); SELECT to_timestamp( 0); -- 1970-01-01 00:00:00+00 SELECT to_timestamp( 946684800); -- 2000-01-01 00:00:00+00 SELECT to_timestamp(1262349296.7890123); -- 2010-01-01 12:34:56.789012+00 -- edge cases SELECT to_timestamp(-210866803200); -- 4714-11-24 00:00:00+00 BC -- upper limit varies between integer and float timestamps, so hard to test -- nonfinite values SELECT to_timestamp(' Infinity'::float); SELECT to_timestamp('-Infinity'::float); SELECT to_timestamp('NaN'::float); SET TimeZone to 'Europe/Moscow'; SELECT '2011-03-26 21:00:00 UTC'::timestamptz; SELECT '2011-03-26 22:00:00 UTC'::timestamptz; SELECT '2011-03-26 22:59:59 UTC'::timestamptz; SELECT '2011-03-26 23:00:00 UTC'::timestamptz; SELECT '2011-03-26 23:00:01 UTC'::timestamptz; SELECT '2011-03-26 23:59:59 UTC'::timestamptz; SELECT '2011-03-27 00:00:00 UTC'::timestamptz; SELECT '2014-10-25 21:00:00 UTC'::timestamptz; SELECT '2014-10-25 21:59:59 UTC'::timestamptz; SELECT '2014-10-25 22:00:00 UTC'::timestamptz; SELECT '2014-10-25 22:00:01 UTC'::timestamptz; SELECT '2014-10-25 23:00:00 UTC'::timestamptz; RESET TimeZone; SELECT '2011-03-26 21:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-26 22:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-26 22:59:59 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-26 23:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-26 23:00:01 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-26 23:59:59 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-27 00:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2014-10-25 21:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2014-10-25 21:59:59 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2014-10-25 22:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2014-10-25 22:00:01 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2014-10-25 23:00:00 UTC'::timestamptz AT TIME ZONE 'Europe/Moscow'; SELECT '2011-03-26 21:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2011-03-26 22:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2011-03-26 22:59:59 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2011-03-26 23:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2011-03-26 23:00:01 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2011-03-26 23:59:59 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2011-03-27 00:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2014-10-25 21:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2014-10-25 21:59:59 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2014-10-25 22:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2014-10-25 22:00:01 UTC'::timestamptz AT TIME ZONE 'MSK'; SELECT '2014-10-25 23:00:00 UTC'::timestamptz AT TIME ZONE 'MSK'; -- -- Test that AT TIME ZONE isn't misoptimized when using an index (bug #14504) -- create temp table tmptz (f1 timestamptz primary key); insert into tmptz values ('2017-01-18 00:00+00'); explain (costs off) select * from tmptz where f1 at time zone 'utc' = '2017-01-18 00:00'; select * from tmptz where f1 at time zone 'utc' = '2017-01-18 00:00'; libpg_query-13-2.1.0/test/sql/postgres_regress/timetz.sql000066400000000000000000000040261413137616400235000ustar00rootroot00000000000000-- -- TIMETZ -- CREATE TABLE TIMETZ_TBL (f1 time(2) with time zone); INSERT INTO TIMETZ_TBL VALUES ('00:01 PDT'); INSERT INTO TIMETZ_TBL VALUES ('01:00 PDT'); INSERT INTO TIMETZ_TBL VALUES ('02:03 PDT'); INSERT INTO TIMETZ_TBL VALUES ('07:07 PST'); INSERT INTO TIMETZ_TBL VALUES ('08:08 EDT'); INSERT INTO TIMETZ_TBL VALUES ('11:59 PDT'); INSERT INTO TIMETZ_TBL VALUES ('12:00 PDT'); INSERT INTO TIMETZ_TBL VALUES ('12:01 PDT'); INSERT INTO TIMETZ_TBL VALUES ('23:59 PDT'); INSERT INTO TIMETZ_TBL VALUES ('11:59:59.99 PM PDT'); INSERT INTO TIMETZ_TBL VALUES ('2003-03-07 15:36:39 America/New_York'); INSERT INTO TIMETZ_TBL VALUES ('2003-07-07 15:36:39 America/New_York'); -- this should fail (the timezone offset is not known) INSERT INTO TIMETZ_TBL VALUES ('15:36:39 America/New_York'); -- this should fail (timezone not specified without a date) INSERT INTO TIMETZ_TBL VALUES ('15:36:39 m2'); -- this should fail (dynamic timezone abbreviation without a date) INSERT INTO TIMETZ_TBL VALUES ('15:36:39 MSK m2'); SELECT f1 AS "Time TZ" FROM TIMETZ_TBL; SELECT f1 AS "Three" FROM TIMETZ_TBL WHERE f1 < '05:06:07-07'; SELECT f1 AS "Seven" FROM TIMETZ_TBL WHERE f1 > '05:06:07-07'; SELECT f1 AS "None" FROM TIMETZ_TBL WHERE f1 < '00:00-07'; SELECT f1 AS "Ten" FROM TIMETZ_TBL WHERE f1 >= '00:00-07'; -- Check edge cases SELECT '23:59:59.999999 PDT'::timetz; SELECT '23:59:59.9999999 PDT'::timetz; -- rounds up SELECT '23:59:60 PDT'::timetz; -- rounds up SELECT '24:00:00 PDT'::timetz; -- allowed SELECT '24:00:00.01 PDT'::timetz; -- not allowed SELECT '23:59:60.01 PDT'::timetz; -- not allowed SELECT '24:01:00 PDT'::timetz; -- not allowed SELECT '25:00:00 PDT'::timetz; -- not allowed -- -- TIME simple math -- -- We now make a distinction between time and intervals, -- and adding two times together makes no sense at all. -- Leave in one query to show that it is rejected, -- and do the rest of the testing in horology.sql -- where we do mixed-type arithmetic. - thomas 2000-12-02 SELECT f1 + time with time zone '00:01' AS "Illegal" FROM TIMETZ_TBL; libpg_query-13-2.1.0/test/sql/postgres_regress/transactions.sql000066400000000000000000000402221413137616400246720ustar00rootroot00000000000000-- -- TRANSACTIONS -- BEGIN; SELECT * INTO TABLE xacttest FROM aggtest; INSERT INTO xacttest (a, b) VALUES (777, 777.777); END; -- should retrieve one value-- SELECT a FROM xacttest WHERE a > 100; BEGIN; CREATE TABLE disappear (a int4); DELETE FROM aggtest; -- should be empty SELECT * FROM aggtest; ABORT; -- should not exist SELECT oid FROM pg_class WHERE relname = 'disappear'; -- should have members again SELECT * FROM aggtest; -- Read-only tests CREATE TABLE writetest (a int); CREATE TEMPORARY TABLE temptest (a int); BEGIN; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ ONLY, DEFERRABLE; -- ok SELECT * FROM writetest; -- ok SET TRANSACTION READ WRITE; --fail COMMIT; BEGIN; SET TRANSACTION READ ONLY; -- ok SET TRANSACTION READ WRITE; -- ok SET TRANSACTION READ ONLY; -- ok SELECT * FROM writetest; -- ok SAVEPOINT x; SET TRANSACTION READ ONLY; -- ok SELECT * FROM writetest; -- ok SET TRANSACTION READ ONLY; -- ok SET TRANSACTION READ WRITE; --fail COMMIT; BEGIN; SET TRANSACTION READ WRITE; -- ok SAVEPOINT x; SET TRANSACTION READ WRITE; -- ok SET TRANSACTION READ ONLY; -- ok SELECT * FROM writetest; -- ok SET TRANSACTION READ ONLY; -- ok SET TRANSACTION READ WRITE; --fail COMMIT; BEGIN; SET TRANSACTION READ WRITE; -- ok SAVEPOINT x; SET TRANSACTION READ ONLY; -- ok SELECT * FROM writetest; -- ok ROLLBACK TO SAVEPOINT x; SHOW transaction_read_only; -- off SAVEPOINT y; SET TRANSACTION READ ONLY; -- ok SELECT * FROM writetest; -- ok RELEASE SAVEPOINT y; SHOW transaction_read_only; -- off COMMIT; SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY; DROP TABLE writetest; -- fail INSERT INTO writetest VALUES (1); -- fail SELECT * FROM writetest; -- ok DELETE FROM temptest; -- ok UPDATE temptest SET a = 0 FROM writetest WHERE temptest.a = 1 AND writetest.a = temptest.a; -- ok PREPARE test AS UPDATE writetest SET a = 0; -- ok EXECUTE test; -- fail SELECT * FROM writetest, temptest; -- ok CREATE TABLE test AS SELECT * FROM writetest; -- fail START TRANSACTION READ WRITE; DROP TABLE writetest; -- ok COMMIT; -- Subtransactions, basic tests -- create & drop tables SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE; CREATE TABLE trans_foobar (a int); BEGIN; CREATE TABLE trans_foo (a int); SAVEPOINT one; DROP TABLE trans_foo; CREATE TABLE trans_bar (a int); ROLLBACK TO SAVEPOINT one; RELEASE SAVEPOINT one; SAVEPOINT two; CREATE TABLE trans_baz (a int); RELEASE SAVEPOINT two; drop TABLE trans_foobar; CREATE TABLE trans_barbaz (a int); COMMIT; -- should exist: trans_barbaz, trans_baz, trans_foo SELECT * FROM trans_foo; -- should be empty SELECT * FROM trans_bar; -- shouldn't exist SELECT * FROM trans_barbaz; -- should be empty SELECT * FROM trans_baz; -- should be empty -- inserts BEGIN; INSERT INTO trans_foo VALUES (1); SAVEPOINT one; INSERT into trans_bar VALUES (1); ROLLBACK TO one; RELEASE SAVEPOINT one; SAVEPOINT two; INSERT into trans_barbaz VALUES (1); RELEASE two; SAVEPOINT three; SAVEPOINT four; INSERT INTO trans_foo VALUES (2); RELEASE SAVEPOINT four; ROLLBACK TO SAVEPOINT three; RELEASE SAVEPOINT three; INSERT INTO trans_foo VALUES (3); COMMIT; SELECT * FROM trans_foo; -- should have 1 and 3 SELECT * FROM trans_barbaz; -- should have 1 -- test whole-tree commit BEGIN; SAVEPOINT one; SELECT trans_foo; ROLLBACK TO SAVEPOINT one; RELEASE SAVEPOINT one; SAVEPOINT two; CREATE TABLE savepoints (a int); SAVEPOINT three; INSERT INTO savepoints VALUES (1); SAVEPOINT four; INSERT INTO savepoints VALUES (2); SAVEPOINT five; INSERT INTO savepoints VALUES (3); ROLLBACK TO SAVEPOINT five; COMMIT; COMMIT; -- should not be in a transaction block SELECT * FROM savepoints; -- test whole-tree rollback BEGIN; SAVEPOINT one; DELETE FROM savepoints WHERE a=1; RELEASE SAVEPOINT one; SAVEPOINT two; DELETE FROM savepoints WHERE a=1; SAVEPOINT three; DELETE FROM savepoints WHERE a=2; ROLLBACK; COMMIT; -- should not be in a transaction block SELECT * FROM savepoints; -- test whole-tree commit on an aborted subtransaction BEGIN; INSERT INTO savepoints VALUES (4); SAVEPOINT one; INSERT INTO savepoints VALUES (5); SELECT trans_foo; COMMIT; SELECT * FROM savepoints; BEGIN; INSERT INTO savepoints VALUES (6); SAVEPOINT one; INSERT INTO savepoints VALUES (7); RELEASE SAVEPOINT one; INSERT INTO savepoints VALUES (8); COMMIT; -- rows 6 and 8 should have been created by the same xact SELECT a.xmin = b.xmin FROM savepoints a, savepoints b WHERE a.a=6 AND b.a=8; -- rows 6 and 7 should have been created by different xacts SELECT a.xmin = b.xmin FROM savepoints a, savepoints b WHERE a.a=6 AND b.a=7; BEGIN; INSERT INTO savepoints VALUES (9); SAVEPOINT one; INSERT INTO savepoints VALUES (10); ROLLBACK TO SAVEPOINT one; INSERT INTO savepoints VALUES (11); COMMIT; SELECT a FROM savepoints WHERE a in (9, 10, 11); -- rows 9 and 11 should have been created by different xacts SELECT a.xmin = b.xmin FROM savepoints a, savepoints b WHERE a.a=9 AND b.a=11; BEGIN; INSERT INTO savepoints VALUES (12); SAVEPOINT one; INSERT INTO savepoints VALUES (13); SAVEPOINT two; INSERT INTO savepoints VALUES (14); ROLLBACK TO SAVEPOINT one; INSERT INTO savepoints VALUES (15); SAVEPOINT two; INSERT INTO savepoints VALUES (16); SAVEPOINT three; INSERT INTO savepoints VALUES (17); COMMIT; SELECT a FROM savepoints WHERE a BETWEEN 12 AND 17; BEGIN; INSERT INTO savepoints VALUES (18); SAVEPOINT one; INSERT INTO savepoints VALUES (19); SAVEPOINT two; INSERT INTO savepoints VALUES (20); ROLLBACK TO SAVEPOINT one; INSERT INTO savepoints VALUES (21); ROLLBACK TO SAVEPOINT one; INSERT INTO savepoints VALUES (22); COMMIT; SELECT a FROM savepoints WHERE a BETWEEN 18 AND 22; DROP TABLE savepoints; -- only in a transaction block: SAVEPOINT one; ROLLBACK TO SAVEPOINT one; RELEASE SAVEPOINT one; -- Only "rollback to" allowed in aborted state BEGIN; SAVEPOINT one; SELECT 0/0; SAVEPOINT two; -- ignored till the end of ... RELEASE SAVEPOINT one; -- ignored till the end of ... ROLLBACK TO SAVEPOINT one; SELECT 1; COMMIT; SELECT 1; -- this should work -- check non-transactional behavior of cursors BEGIN; DECLARE c CURSOR FOR SELECT unique2 FROM tenk1 ORDER BY unique2; SAVEPOINT one; FETCH 10 FROM c; ROLLBACK TO SAVEPOINT one; FETCH 10 FROM c; RELEASE SAVEPOINT one; FETCH 10 FROM c; CLOSE c; DECLARE c CURSOR FOR SELECT unique2/0 FROM tenk1 ORDER BY unique2; SAVEPOINT two; FETCH 10 FROM c; ROLLBACK TO SAVEPOINT two; -- c is now dead to the world ... FETCH 10 FROM c; ROLLBACK TO SAVEPOINT two; RELEASE SAVEPOINT two; FETCH 10 FROM c; COMMIT; -- -- Check that "stable" functions are really stable. They should not be -- able to see the partial results of the calling query. (Ideally we would -- also check that they don't see commits of concurrent transactions, but -- that's a mite hard to do within the limitations of pg_regress.) -- select * from xacttest; create or replace function max_xacttest() returns smallint language sql as 'select max(a) from xacttest' stable; begin; update xacttest set a = max_xacttest() + 10 where a > 0; select * from xacttest; rollback; -- But a volatile function can see the partial results of the calling query create or replace function max_xacttest() returns smallint language sql as 'select max(a) from xacttest' volatile; begin; update xacttest set a = max_xacttest() + 10 where a > 0; select * from xacttest; rollback; -- Now the same test with plpgsql (since it depends on SPI which is different) create or replace function max_xacttest() returns smallint language plpgsql as 'begin return max(a) from xacttest; end' stable; begin; update xacttest set a = max_xacttest() + 10 where a > 0; select * from xacttest; rollback; create or replace function max_xacttest() returns smallint language plpgsql as 'begin return max(a) from xacttest; end' volatile; begin; update xacttest set a = max_xacttest() + 10 where a > 0; select * from xacttest; rollback; -- test case for problems with dropping an open relation during abort BEGIN; savepoint x; CREATE TABLE koju (a INT UNIQUE); INSERT INTO koju VALUES (1); INSERT INTO koju VALUES (1); rollback to x; CREATE TABLE koju (a INT UNIQUE); INSERT INTO koju VALUES (1); INSERT INTO koju VALUES (1); ROLLBACK; DROP TABLE trans_foo; DROP TABLE trans_baz; DROP TABLE trans_barbaz; -- test case for problems with revalidating an open relation during abort create function inverse(int) returns float8 as $$ begin analyze revalidate_bug; return 1::float8/$1; exception when division_by_zero then return 0; end$$ language plpgsql volatile; create table revalidate_bug (c float8 unique); insert into revalidate_bug values (1); insert into revalidate_bug values (inverse(0)); drop table revalidate_bug; drop function inverse(int); -- verify that cursors created during an aborted subtransaction are -- closed, but that we do not rollback the effect of any FETCHs -- performed in the aborted subtransaction begin; savepoint x; create table abc (a int); insert into abc values (5); insert into abc values (10); declare foo cursor for select * from abc; fetch from foo; rollback to x; -- should fail fetch from foo; commit; begin; create table abc (a int); insert into abc values (5); insert into abc values (10); insert into abc values (15); declare foo cursor for select * from abc; fetch from foo; savepoint x; fetch from foo; rollback to x; fetch from foo; abort; -- Test for proper cleanup after a failure in a cursor portal -- that was created in an outer subtransaction CREATE FUNCTION invert(x float8) RETURNS float8 LANGUAGE plpgsql AS $$ begin return 1/x; end $$; CREATE FUNCTION create_temp_tab() RETURNS text LANGUAGE plpgsql AS $$ BEGIN CREATE TEMP TABLE new_table (f1 float8); -- case of interest is that we fail while holding an open -- relcache reference to new_table INSERT INTO new_table SELECT invert(0.0); RETURN 'foo'; END $$; BEGIN; DECLARE ok CURSOR FOR SELECT * FROM int8_tbl; DECLARE ctt CURSOR FOR SELECT create_temp_tab(); FETCH ok; SAVEPOINT s1; FETCH ok; -- should work FETCH ctt; -- error occurs here ROLLBACK TO s1; FETCH ok; -- should work FETCH ctt; -- must be rejected COMMIT; DROP FUNCTION create_temp_tab(); DROP FUNCTION invert(x float8); -- Tests for AND CHAIN CREATE TABLE abc (a int); -- set nondefault value so we have something to override below SET default_transaction_read_only = on; START TRANSACTION ISOLATION LEVEL REPEATABLE READ, READ WRITE, DEFERRABLE; SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; INSERT INTO abc VALUES (1); INSERT INTO abc VALUES (2); COMMIT AND CHAIN; -- TBLOCK_END SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; INSERT INTO abc VALUES ('error'); INSERT INTO abc VALUES (3); -- check it's really aborted COMMIT AND CHAIN; -- TBLOCK_ABORT_END SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; INSERT INTO abc VALUES (4); COMMIT; START TRANSACTION ISOLATION LEVEL REPEATABLE READ, READ WRITE, DEFERRABLE; SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; SAVEPOINT x; INSERT INTO abc VALUES ('error'); COMMIT AND CHAIN; -- TBLOCK_ABORT_PENDING SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; INSERT INTO abc VALUES (5); COMMIT; START TRANSACTION ISOLATION LEVEL REPEATABLE READ, READ WRITE, DEFERRABLE; SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; SAVEPOINT x; COMMIT AND CHAIN; -- TBLOCK_SUBCOMMIT SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; COMMIT; -- different mix of options just for fun START TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ WRITE, NOT DEFERRABLE; SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; INSERT INTO abc VALUES (6); ROLLBACK AND CHAIN; -- TBLOCK_ABORT_PENDING SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; INSERT INTO abc VALUES ('error'); ROLLBACK AND CHAIN; -- TBLOCK_ABORT_END SHOW transaction_isolation; SHOW transaction_read_only; SHOW transaction_deferrable; ROLLBACK; -- not allowed outside a transaction block COMMIT AND CHAIN; -- error ROLLBACK AND CHAIN; -- error SELECT * FROM abc ORDER BY 1; RESET default_transaction_read_only; DROP TABLE abc; -- Test assorted behaviors around the implicit transaction block created -- when multiple SQL commands are sent in a single Query message. These -- tests rely on the fact that psql will not break SQL commands apart at a -- backslash-quoted semicolon, but will send them as one Query. create temp table i_table (f1 int); -- psql will show only the last result in a multi-statement Query SELECT 1\; SELECT 2\; SELECT 3; -- this implicitly commits: insert into i_table values(1)\; select * from i_table; -- 1/0 error will cause rolling back the whole implicit transaction insert into i_table values(2)\; select * from i_table\; select 1/0; select * from i_table; rollback; -- we are not in a transaction at this point -- can use regular begin/commit/rollback within a single Query begin\; insert into i_table values(3)\; commit; rollback; -- we are not in a transaction at this point begin\; insert into i_table values(4)\; rollback; rollback; -- we are not in a transaction at this point -- begin converts implicit transaction into a regular one that -- can extend past the end of the Query select 1\; begin\; insert into i_table values(5); commit; select 1\; begin\; insert into i_table values(6); rollback; -- commit in implicit-transaction state commits but issues a warning. insert into i_table values(7)\; commit\; insert into i_table values(8)\; select 1/0; -- similarly, rollback aborts but issues a warning. insert into i_table values(9)\; rollback\; select 2; select * from i_table; rollback; -- we are not in a transaction at this point -- implicit transaction block is still a transaction block, for e.g. VACUUM SELECT 1\; VACUUM; SELECT 1\; COMMIT\; VACUUM; -- we disallow savepoint-related commands in implicit-transaction state SELECT 1\; SAVEPOINT sp; SELECT 1\; COMMIT\; SAVEPOINT sp; ROLLBACK TO SAVEPOINT sp\; SELECT 2; SELECT 2\; RELEASE SAVEPOINT sp\; SELECT 3; -- but this is OK, because the BEGIN converts it to a regular xact SELECT 1\; BEGIN\; SAVEPOINT sp\; ROLLBACK TO SAVEPOINT sp\; COMMIT; -- Tests for AND CHAIN in implicit transaction blocks SET TRANSACTION READ ONLY\; COMMIT AND CHAIN; -- error SHOW transaction_read_only; SET TRANSACTION READ ONLY\; ROLLBACK AND CHAIN; -- error SHOW transaction_read_only; CREATE TABLE abc (a int); -- COMMIT/ROLLBACK + COMMIT/ROLLBACK AND CHAIN INSERT INTO abc VALUES (7)\; COMMIT\; INSERT INTO abc VALUES (8)\; COMMIT AND CHAIN; -- 7 commit, 8 error INSERT INTO abc VALUES (9)\; ROLLBACK\; INSERT INTO abc VALUES (10)\; ROLLBACK AND CHAIN; -- 9 rollback, 10 error -- COMMIT/ROLLBACK AND CHAIN + COMMIT/ROLLBACK INSERT INTO abc VALUES (11)\; COMMIT AND CHAIN\; INSERT INTO abc VALUES (12)\; COMMIT; -- 11 error, 12 not reached INSERT INTO abc VALUES (13)\; ROLLBACK AND CHAIN\; INSERT INTO abc VALUES (14)\; ROLLBACK; -- 13 error, 14 not reached -- START TRANSACTION + COMMIT/ROLLBACK AND CHAIN START TRANSACTION ISOLATION LEVEL REPEATABLE READ\; INSERT INTO abc VALUES (15)\; COMMIT AND CHAIN; -- 15 ok SHOW transaction_isolation; -- transaction is active at this point COMMIT; START TRANSACTION ISOLATION LEVEL REPEATABLE READ\; INSERT INTO abc VALUES (16)\; ROLLBACK AND CHAIN; -- 16 ok SHOW transaction_isolation; -- transaction is active at this point ROLLBACK; -- START TRANSACTION + COMMIT/ROLLBACK + COMMIT/ROLLBACK AND CHAIN START TRANSACTION ISOLATION LEVEL REPEATABLE READ\; INSERT INTO abc VALUES (17)\; COMMIT\; INSERT INTO abc VALUES (18)\; COMMIT AND CHAIN; -- 17 commit, 18 error SHOW transaction_isolation; -- out of transaction block START TRANSACTION ISOLATION LEVEL REPEATABLE READ\; INSERT INTO abc VALUES (19)\; ROLLBACK\; INSERT INTO abc VALUES (20)\; ROLLBACK AND CHAIN; -- 19 rollback, 20 error SHOW transaction_isolation; -- out of transaction block SELECT * FROM abc ORDER BY 1; DROP TABLE abc; -- Test for successful cleanup of an aborted transaction at session exit. -- THIS MUST BE THE LAST TEST IN THIS FILE. begin; select 1/0; rollback to X; -- DO NOT ADD ANYTHING HERE. libpg_query-13-2.1.0/test/sql/postgres_regress/triggers.sql000066400000000000000000002473221413137616400240220ustar00rootroot00000000000000-- -- TRIGGERS -- create table pkeys (pkey1 int4 not null, pkey2 text not null); create table fkeys (fkey1 int4, fkey2 text, fkey3 int); create table fkeys2 (fkey21 int4, fkey22 text, pkey23 int not null); create index fkeys_i on fkeys (fkey1, fkey2); create index fkeys2_i on fkeys2 (fkey21, fkey22); create index fkeys2p_i on fkeys2 (pkey23); insert into pkeys values (10, '1'); insert into pkeys values (20, '2'); insert into pkeys values (30, '3'); insert into pkeys values (40, '4'); insert into pkeys values (50, '5'); insert into pkeys values (60, '6'); create unique index pkeys_i on pkeys (pkey1, pkey2); -- -- For fkeys: -- (fkey1, fkey2) --> pkeys (pkey1, pkey2) -- (fkey3) --> fkeys2 (pkey23) -- create trigger check_fkeys_pkey_exist before insert or update on fkeys for each row execute function check_primary_key ('fkey1', 'fkey2', 'pkeys', 'pkey1', 'pkey2'); create trigger check_fkeys_pkey2_exist before insert or update on fkeys for each row execute function check_primary_key ('fkey3', 'fkeys2', 'pkey23'); -- -- For fkeys2: -- (fkey21, fkey22) --> pkeys (pkey1, pkey2) -- create trigger check_fkeys2_pkey_exist before insert or update on fkeys2 for each row execute procedure check_primary_key ('fkey21', 'fkey22', 'pkeys', 'pkey1', 'pkey2'); -- Test comments COMMENT ON TRIGGER check_fkeys2_pkey_bad ON fkeys2 IS 'wrong'; COMMENT ON TRIGGER check_fkeys2_pkey_exist ON fkeys2 IS 'right'; COMMENT ON TRIGGER check_fkeys2_pkey_exist ON fkeys2 IS NULL; -- -- For pkeys: -- ON DELETE/UPDATE (pkey1, pkey2) CASCADE: -- fkeys (fkey1, fkey2) and fkeys2 (fkey21, fkey22) -- create trigger check_pkeys_fkey_cascade before delete or update on pkeys for each row execute procedure check_foreign_key (2, 'cascade', 'pkey1', 'pkey2', 'fkeys', 'fkey1', 'fkey2', 'fkeys2', 'fkey21', 'fkey22'); -- -- For fkeys2: -- ON DELETE/UPDATE (pkey23) RESTRICT: -- fkeys (fkey3) -- create trigger check_fkeys2_fkey_restrict before delete or update on fkeys2 for each row execute procedure check_foreign_key (1, 'restrict', 'pkey23', 'fkeys', 'fkey3'); insert into fkeys2 values (10, '1', 1); insert into fkeys2 values (30, '3', 2); insert into fkeys2 values (40, '4', 5); insert into fkeys2 values (50, '5', 3); -- no key in pkeys insert into fkeys2 values (70, '5', 3); insert into fkeys values (10, '1', 2); insert into fkeys values (30, '3', 3); insert into fkeys values (40, '4', 2); insert into fkeys values (50, '5', 2); -- no key in pkeys insert into fkeys values (70, '5', 1); -- no key in fkeys2 insert into fkeys values (60, '6', 4); delete from pkeys where pkey1 = 30 and pkey2 = '3'; delete from pkeys where pkey1 = 40 and pkey2 = '4'; update pkeys set pkey1 = 7, pkey2 = '70' where pkey1 = 50 and pkey2 = '5'; update pkeys set pkey1 = 7, pkey2 = '70' where pkey1 = 10 and pkey2 = '1'; SELECT trigger_name, event_manipulation, event_object_schema, event_object_table, action_order, action_condition, action_orientation, action_timing, action_reference_old_table, action_reference_new_table FROM information_schema.triggers WHERE event_object_table in ('pkeys', 'fkeys', 'fkeys2') ORDER BY trigger_name COLLATE "C", 2; DROP TABLE pkeys; DROP TABLE fkeys; DROP TABLE fkeys2; -- Check behavior when trigger returns unmodified trigtuple create table trigtest (f1 int, f2 text); create trigger trigger_return_old before insert or delete or update on trigtest for each row execute procedure trigger_return_old(); insert into trigtest values(1, 'foo'); select * from trigtest; update trigtest set f2 = f2 || 'bar'; select * from trigtest; delete from trigtest; select * from trigtest; -- Also check what happens when such a trigger runs before or after others create function f1_times_10() returns trigger as $$ begin new.f1 := new.f1 * 10; return new; end $$ language plpgsql; create trigger trigger_alpha before insert or update on trigtest for each row execute procedure f1_times_10(); insert into trigtest values(1, 'foo'); select * from trigtest; update trigtest set f2 = f2 || 'bar'; select * from trigtest; delete from trigtest; select * from trigtest; create trigger trigger_zed before insert or update on trigtest for each row execute procedure f1_times_10(); insert into trigtest values(1, 'foo'); select * from trigtest; update trigtest set f2 = f2 || 'bar'; select * from trigtest; delete from trigtest; select * from trigtest; drop trigger trigger_alpha on trigtest; insert into trigtest values(1, 'foo'); select * from trigtest; update trigtest set f2 = f2 || 'bar'; select * from trigtest; delete from trigtest; select * from trigtest; drop table trigtest; -- Check behavior with an implicit column default, too (bug #16644) create table trigtest ( a integer, b bool default true not null, c text default 'xyzzy' not null); create trigger trigger_return_old before insert or delete or update on trigtest for each row execute procedure trigger_return_old(); insert into trigtest values(1); select * from trigtest; alter table trigtest add column d integer default 42 not null; select * from trigtest; update trigtest set a = 2 where a = 1 returning *; select * from trigtest; alter table trigtest drop column b; select * from trigtest; update trigtest set a = 2 where a = 1 returning *; select * from trigtest; drop table trigtest; create sequence ttdummy_seq increment 10 start 0 minvalue 0; create table tttest ( price_id int4, price_val int4, price_on int4, price_off int4 default 999999 ); create trigger ttdummy before delete or update on tttest for each row execute procedure ttdummy (price_on, price_off); create trigger ttserial before insert or update on tttest for each row execute procedure autoinc (price_on, ttdummy_seq); insert into tttest values (1, 1, null); insert into tttest values (2, 2, null); insert into tttest values (3, 3, 0); select * from tttest; delete from tttest where price_id = 2; select * from tttest; -- what do we see ? -- get current prices select * from tttest where price_off = 999999; -- change price for price_id == 3 update tttest set price_val = 30 where price_id = 3; select * from tttest; -- now we want to change pric_id in ALL tuples -- this gets us not what we need update tttest set price_id = 5 where price_id = 3; select * from tttest; -- restore data as before last update: select set_ttdummy(0); delete from tttest where price_id = 5; update tttest set price_off = 999999 where price_val = 30; select * from tttest; -- and try change price_id now! update tttest set price_id = 5 where price_id = 3; select * from tttest; -- isn't it what we need ? select set_ttdummy(1); -- we want to correct some "date" update tttest set price_on = -1 where price_id = 1; -- but this doesn't work -- try in this way select set_ttdummy(0); update tttest set price_on = -1 where price_id = 1; select * from tttest; -- isn't it what we need ? -- get price for price_id == 5 as it was @ "date" 35 select * from tttest where price_on <= 35 and price_off > 35 and price_id = 5; drop table tttest; drop sequence ttdummy_seq; -- -- tests for per-statement triggers -- CREATE TABLE log_table (tstamp timestamp default timeofday()::timestamp); CREATE TABLE main_table (a int unique, b int); COPY main_table (a,b) FROM stdin; 5 10 20 20 30 10 50 35 80 15 \. CREATE FUNCTION trigger_func() RETURNS trigger LANGUAGE plpgsql AS ' BEGIN RAISE NOTICE ''trigger_func(%) called: action = %, when = %, level = %'', TG_ARGV[0], TG_OP, TG_WHEN, TG_LEVEL; RETURN NULL; END;'; CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON main_table FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt'); CREATE TRIGGER after_ins_stmt_trig AFTER INSERT ON main_table FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('after_ins_stmt'); -- -- if neither 'FOR EACH ROW' nor 'FOR EACH STATEMENT' was specified, -- CREATE TRIGGER should default to 'FOR EACH STATEMENT' -- CREATE TRIGGER after_upd_stmt_trig AFTER UPDATE ON main_table EXECUTE PROCEDURE trigger_func('after_upd_stmt'); -- Both insert and update statement level triggers (before and after) should -- fire. Doesn't fire UPDATE before trigger, but only because one isn't -- defined. INSERT INTO main_table (a, b) VALUES (5, 10) ON CONFLICT (a) DO UPDATE SET b = EXCLUDED.b; CREATE TRIGGER after_upd_row_trig AFTER UPDATE ON main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('after_upd_row'); INSERT INTO main_table DEFAULT VALUES; UPDATE main_table SET a = a + 1 WHERE b < 30; -- UPDATE that effects zero rows should still call per-statement trigger UPDATE main_table SET a = a + 2 WHERE b > 100; -- constraint now unneeded ALTER TABLE main_table DROP CONSTRAINT main_table_a_key; -- COPY should fire per-row and per-statement INSERT triggers COPY main_table (a, b) FROM stdin; 30 40 50 60 \. SELECT * FROM main_table ORDER BY a, b; -- -- test triggers with WHEN clause -- CREATE TRIGGER modified_a BEFORE UPDATE OF a ON main_table FOR EACH ROW WHEN (OLD.a <> NEW.a) EXECUTE PROCEDURE trigger_func('modified_a'); CREATE TRIGGER modified_any BEFORE UPDATE OF a ON main_table FOR EACH ROW WHEN (OLD.* IS DISTINCT FROM NEW.*) EXECUTE PROCEDURE trigger_func('modified_any'); CREATE TRIGGER insert_a AFTER INSERT ON main_table FOR EACH ROW WHEN (NEW.a = 123) EXECUTE PROCEDURE trigger_func('insert_a'); CREATE TRIGGER delete_a AFTER DELETE ON main_table FOR EACH ROW WHEN (OLD.a = 123) EXECUTE PROCEDURE trigger_func('delete_a'); CREATE TRIGGER insert_when BEFORE INSERT ON main_table FOR EACH STATEMENT WHEN (true) EXECUTE PROCEDURE trigger_func('insert_when'); CREATE TRIGGER delete_when AFTER DELETE ON main_table FOR EACH STATEMENT WHEN (true) EXECUTE PROCEDURE trigger_func('delete_when'); SELECT trigger_name, event_manipulation, event_object_schema, event_object_table, action_order, action_condition, action_orientation, action_timing, action_reference_old_table, action_reference_new_table FROM information_schema.triggers WHERE event_object_table IN ('main_table') ORDER BY trigger_name COLLATE "C", 2; INSERT INTO main_table (a) VALUES (123), (456); COPY main_table FROM stdin; 123 999 456 999 \. DELETE FROM main_table WHERE a IN (123, 456); UPDATE main_table SET a = 50, b = 60; SELECT * FROM main_table ORDER BY a, b; SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_a'; SELECT pg_get_triggerdef(oid, false) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_a'; SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_any'; -- Test RENAME TRIGGER ALTER TRIGGER modified_a ON main_table RENAME TO modified_modified_a; SELECT count(*) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_a'; SELECT count(*) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'modified_modified_a'; DROP TRIGGER modified_modified_a ON main_table; DROP TRIGGER modified_any ON main_table; DROP TRIGGER insert_a ON main_table; DROP TRIGGER delete_a ON main_table; DROP TRIGGER insert_when ON main_table; DROP TRIGGER delete_when ON main_table; -- Test WHEN condition accessing system columns. create table table_with_oids(a int); insert into table_with_oids values (1); create trigger oid_unchanged_trig after update on table_with_oids for each row when (new.tableoid = old.tableoid AND new.tableoid <> 0) execute procedure trigger_func('after_upd_oid_unchanged'); update table_with_oids set a = a + 1; drop table table_with_oids; -- Test column-level triggers DROP TRIGGER after_upd_row_trig ON main_table; CREATE TRIGGER before_upd_a_row_trig BEFORE UPDATE OF a ON main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('before_upd_a_row'); CREATE TRIGGER after_upd_b_row_trig AFTER UPDATE OF b ON main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('after_upd_b_row'); CREATE TRIGGER after_upd_a_b_row_trig AFTER UPDATE OF a, b ON main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('after_upd_a_b_row'); CREATE TRIGGER before_upd_a_stmt_trig BEFORE UPDATE OF a ON main_table FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_upd_a_stmt'); CREATE TRIGGER after_upd_b_stmt_trig AFTER UPDATE OF b ON main_table FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('after_upd_b_stmt'); SELECT pg_get_triggerdef(oid) FROM pg_trigger WHERE tgrelid = 'main_table'::regclass AND tgname = 'after_upd_a_b_row_trig'; UPDATE main_table SET a = 50; UPDATE main_table SET b = 10; -- -- Test case for bug with BEFORE trigger followed by AFTER trigger with WHEN -- CREATE TABLE some_t (some_col boolean NOT NULL); CREATE FUNCTION dummy_update_func() RETURNS trigger AS $$ BEGIN RAISE NOTICE 'dummy_update_func(%) called: action = %, old = %, new = %', TG_ARGV[0], TG_OP, OLD, NEW; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER some_trig_before BEFORE UPDATE ON some_t FOR EACH ROW EXECUTE PROCEDURE dummy_update_func('before'); CREATE TRIGGER some_trig_aftera AFTER UPDATE ON some_t FOR EACH ROW WHEN (NOT OLD.some_col AND NEW.some_col) EXECUTE PROCEDURE dummy_update_func('aftera'); CREATE TRIGGER some_trig_afterb AFTER UPDATE ON some_t FOR EACH ROW WHEN (NOT NEW.some_col) EXECUTE PROCEDURE dummy_update_func('afterb'); INSERT INTO some_t VALUES (TRUE); UPDATE some_t SET some_col = TRUE; UPDATE some_t SET some_col = FALSE; UPDATE some_t SET some_col = TRUE; DROP TABLE some_t; -- bogus cases CREATE TRIGGER error_upd_and_col BEFORE UPDATE OR UPDATE OF a ON main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('error_upd_and_col'); CREATE TRIGGER error_upd_a_a BEFORE UPDATE OF a, a ON main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('error_upd_a_a'); CREATE TRIGGER error_ins_a BEFORE INSERT OF a ON main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('error_ins_a'); CREATE TRIGGER error_ins_when BEFORE INSERT OR UPDATE ON main_table FOR EACH ROW WHEN (OLD.a <> NEW.a) EXECUTE PROCEDURE trigger_func('error_ins_old'); CREATE TRIGGER error_del_when BEFORE DELETE OR UPDATE ON main_table FOR EACH ROW WHEN (OLD.a <> NEW.a) EXECUTE PROCEDURE trigger_func('error_del_new'); CREATE TRIGGER error_del_when BEFORE INSERT OR UPDATE ON main_table FOR EACH ROW WHEN (NEW.tableoid <> 0) EXECUTE PROCEDURE trigger_func('error_when_sys_column'); CREATE TRIGGER error_stmt_when BEFORE UPDATE OF a ON main_table FOR EACH STATEMENT WHEN (OLD.* IS DISTINCT FROM NEW.*) EXECUTE PROCEDURE trigger_func('error_stmt_when'); -- check dependency restrictions ALTER TABLE main_table DROP COLUMN b; -- this should succeed, but we'll roll it back to keep the triggers around begin; DROP TRIGGER after_upd_a_b_row_trig ON main_table; DROP TRIGGER after_upd_b_row_trig ON main_table; DROP TRIGGER after_upd_b_stmt_trig ON main_table; ALTER TABLE main_table DROP COLUMN b; rollback; -- Test enable/disable triggers create table trigtest (i serial primary key); -- test that disabling RI triggers works create table trigtest2 (i int references trigtest(i) on delete cascade); create function trigtest() returns trigger as $$ begin raise notice '% % % %', TG_RELNAME, TG_OP, TG_WHEN, TG_LEVEL; return new; end;$$ language plpgsql; create trigger trigtest_b_row_tg before insert or update or delete on trigtest for each row execute procedure trigtest(); create trigger trigtest_a_row_tg after insert or update or delete on trigtest for each row execute procedure trigtest(); create trigger trigtest_b_stmt_tg before insert or update or delete on trigtest for each statement execute procedure trigtest(); create trigger trigtest_a_stmt_tg after insert or update or delete on trigtest for each statement execute procedure trigtest(); insert into trigtest default values; alter table trigtest disable trigger trigtest_b_row_tg; insert into trigtest default values; alter table trigtest disable trigger user; insert into trigtest default values; alter table trigtest enable trigger trigtest_a_stmt_tg; insert into trigtest default values; set session_replication_role = replica; insert into trigtest default values; -- does not trigger alter table trigtest enable always trigger trigtest_a_stmt_tg; insert into trigtest default values; -- now it does reset session_replication_role; insert into trigtest2 values(1); insert into trigtest2 values(2); delete from trigtest where i=2; select * from trigtest2; alter table trigtest disable trigger all; delete from trigtest where i=1; select * from trigtest2; -- ensure we still insert, even when all triggers are disabled insert into trigtest default values; select * from trigtest; drop table trigtest2; drop table trigtest; -- dump trigger data CREATE TABLE trigger_test ( i int, v varchar ); CREATE OR REPLACE FUNCTION trigger_data() RETURNS trigger LANGUAGE plpgsql AS $$ declare argstr text; relid text; begin relid := TG_relid::regclass; -- plpgsql can't discover its trigger data in a hash like perl and python -- can, or by a sort of reflection like tcl can, -- so we have to hard code the names. raise NOTICE 'TG_NAME: %', TG_name; raise NOTICE 'TG_WHEN: %', TG_when; raise NOTICE 'TG_LEVEL: %', TG_level; raise NOTICE 'TG_OP: %', TG_op; raise NOTICE 'TG_RELID::regclass: %', relid; raise NOTICE 'TG_RELNAME: %', TG_relname; raise NOTICE 'TG_TABLE_NAME: %', TG_table_name; raise NOTICE 'TG_TABLE_SCHEMA: %', TG_table_schema; raise NOTICE 'TG_NARGS: %', TG_nargs; argstr := '['; for i in 0 .. TG_nargs - 1 loop if i > 0 then argstr := argstr || ', '; end if; argstr := argstr || TG_argv[i]; end loop; argstr := argstr || ']'; raise NOTICE 'TG_ARGV: %', argstr; if TG_OP != 'INSERT' then raise NOTICE 'OLD: %', OLD; end if; if TG_OP != 'DELETE' then raise NOTICE 'NEW: %', NEW; end if; if TG_OP = 'DELETE' then return OLD; else return NEW; end if; end; $$; CREATE TRIGGER show_trigger_data_trig BEFORE INSERT OR UPDATE OR DELETE ON trigger_test FOR EACH ROW EXECUTE PROCEDURE trigger_data(23,'skidoo'); insert into trigger_test values(1,'insert'); update trigger_test set v = 'update' where i = 1; delete from trigger_test; DROP TRIGGER show_trigger_data_trig on trigger_test; DROP FUNCTION trigger_data(); DROP TABLE trigger_test; -- -- Test use of row comparisons on OLD/NEW -- CREATE TABLE trigger_test (f1 int, f2 text, f3 text); -- this is the obvious (and wrong...) way to compare rows CREATE FUNCTION mytrigger() RETURNS trigger LANGUAGE plpgsql as $$ begin if row(old.*) = row(new.*) then raise notice 'row % not changed', new.f1; else raise notice 'row % changed', new.f1; end if; return new; end$$; CREATE TRIGGER t BEFORE UPDATE ON trigger_test FOR EACH ROW EXECUTE PROCEDURE mytrigger(); INSERT INTO trigger_test VALUES(1, 'foo', 'bar'); INSERT INTO trigger_test VALUES(2, 'baz', 'quux'); UPDATE trigger_test SET f3 = 'bar'; UPDATE trigger_test SET f3 = NULL; -- this demonstrates that the above isn't really working as desired: UPDATE trigger_test SET f3 = NULL; -- the right way when considering nulls is CREATE OR REPLACE FUNCTION mytrigger() RETURNS trigger LANGUAGE plpgsql as $$ begin if row(old.*) is distinct from row(new.*) then raise notice 'row % changed', new.f1; else raise notice 'row % not changed', new.f1; end if; return new; end$$; UPDATE trigger_test SET f3 = 'bar'; UPDATE trigger_test SET f3 = NULL; UPDATE trigger_test SET f3 = NULL; DROP TABLE trigger_test; DROP FUNCTION mytrigger(); -- Test snapshot management in serializable transactions involving triggers -- per bug report in 6bc73d4c0910042358k3d1adff3qa36f8df75198ecea@mail.gmail.com CREATE FUNCTION serializable_update_trig() RETURNS trigger LANGUAGE plpgsql AS $$ declare rec record; begin new.description = 'updated in trigger'; return new; end; $$; CREATE TABLE serializable_update_tab ( id int, filler text, description text ); CREATE TRIGGER serializable_update_trig BEFORE UPDATE ON serializable_update_tab FOR EACH ROW EXECUTE PROCEDURE serializable_update_trig(); INSERT INTO serializable_update_tab SELECT a, repeat('xyzxz', 100), 'new' FROM generate_series(1, 50) a; BEGIN; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; UPDATE serializable_update_tab SET description = 'no no', id = 1 WHERE id = 1; COMMIT; SELECT description FROM serializable_update_tab WHERE id = 1; DROP TABLE serializable_update_tab; -- minimal update trigger CREATE TABLE min_updates_test ( f1 text, f2 int, f3 int); INSERT INTO min_updates_test VALUES ('a',1,2),('b','2',null); CREATE TRIGGER z_min_update BEFORE UPDATE ON min_updates_test FOR EACH ROW EXECUTE PROCEDURE suppress_redundant_updates_trigger(); \set QUIET false UPDATE min_updates_test SET f1 = f1; UPDATE min_updates_test SET f2 = f2 + 1; UPDATE min_updates_test SET f3 = 2 WHERE f3 is null; \set QUIET true SELECT * FROM min_updates_test; DROP TABLE min_updates_test; -- -- Test triggers on views -- CREATE VIEW main_view AS SELECT a, b FROM main_table; -- VIEW trigger function CREATE OR REPLACE FUNCTION view_trigger() RETURNS trigger LANGUAGE plpgsql AS $$ declare argstr text := ''; begin for i in 0 .. TG_nargs - 1 loop if i > 0 then argstr := argstr || ', '; end if; argstr := argstr || TG_argv[i]; end loop; raise notice '% % % % (%)', TG_RELNAME, TG_WHEN, TG_OP, TG_LEVEL, argstr; if TG_LEVEL = 'ROW' then if TG_OP = 'INSERT' then raise NOTICE 'NEW: %', NEW; INSERT INTO main_table VALUES (NEW.a, NEW.b); RETURN NEW; end if; if TG_OP = 'UPDATE' then raise NOTICE 'OLD: %, NEW: %', OLD, NEW; UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b; if NOT FOUND then RETURN NULL; end if; RETURN NEW; end if; if TG_OP = 'DELETE' then raise NOTICE 'OLD: %', OLD; DELETE FROM main_table WHERE a = OLD.a AND b = OLD.b; if NOT FOUND then RETURN NULL; end if; RETURN OLD; end if; end if; RETURN NULL; end; $$; -- Before row triggers aren't allowed on views CREATE TRIGGER invalid_trig BEFORE INSERT ON main_view FOR EACH ROW EXECUTE PROCEDURE trigger_func('before_ins_row'); CREATE TRIGGER invalid_trig BEFORE UPDATE ON main_view FOR EACH ROW EXECUTE PROCEDURE trigger_func('before_upd_row'); CREATE TRIGGER invalid_trig BEFORE DELETE ON main_view FOR EACH ROW EXECUTE PROCEDURE trigger_func('before_del_row'); -- After row triggers aren't allowed on views CREATE TRIGGER invalid_trig AFTER INSERT ON main_view FOR EACH ROW EXECUTE PROCEDURE trigger_func('before_ins_row'); CREATE TRIGGER invalid_trig AFTER UPDATE ON main_view FOR EACH ROW EXECUTE PROCEDURE trigger_func('before_upd_row'); CREATE TRIGGER invalid_trig AFTER DELETE ON main_view FOR EACH ROW EXECUTE PROCEDURE trigger_func('before_del_row'); -- Truncate triggers aren't allowed on views CREATE TRIGGER invalid_trig BEFORE TRUNCATE ON main_view EXECUTE PROCEDURE trigger_func('before_tru_row'); CREATE TRIGGER invalid_trig AFTER TRUNCATE ON main_view EXECUTE PROCEDURE trigger_func('before_tru_row'); -- INSTEAD OF triggers aren't allowed on tables CREATE TRIGGER invalid_trig INSTEAD OF INSERT ON main_table FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_ins'); CREATE TRIGGER invalid_trig INSTEAD OF UPDATE ON main_table FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_upd'); CREATE TRIGGER invalid_trig INSTEAD OF DELETE ON main_table FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_del'); -- Don't support WHEN clauses with INSTEAD OF triggers CREATE TRIGGER invalid_trig INSTEAD OF UPDATE ON main_view FOR EACH ROW WHEN (OLD.a <> NEW.a) EXECUTE PROCEDURE view_trigger('instead_of_upd'); -- Don't support column-level INSTEAD OF triggers CREATE TRIGGER invalid_trig INSTEAD OF UPDATE OF a ON main_view FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_upd'); -- Don't support statement-level INSTEAD OF triggers CREATE TRIGGER invalid_trig INSTEAD OF UPDATE ON main_view EXECUTE PROCEDURE view_trigger('instead_of_upd'); -- Valid INSTEAD OF triggers CREATE TRIGGER instead_of_insert_trig INSTEAD OF INSERT ON main_view FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_ins'); CREATE TRIGGER instead_of_update_trig INSTEAD OF UPDATE ON main_view FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_upd'); CREATE TRIGGER instead_of_delete_trig INSTEAD OF DELETE ON main_view FOR EACH ROW EXECUTE PROCEDURE view_trigger('instead_of_del'); -- Valid BEFORE statement VIEW triggers CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('before_view_ins_stmt'); CREATE TRIGGER before_upd_stmt_trig BEFORE UPDATE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('before_view_upd_stmt'); CREATE TRIGGER before_del_stmt_trig BEFORE DELETE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('before_view_del_stmt'); -- Valid AFTER statement VIEW triggers CREATE TRIGGER after_ins_stmt_trig AFTER INSERT ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('after_view_ins_stmt'); CREATE TRIGGER after_upd_stmt_trig AFTER UPDATE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('after_view_upd_stmt'); CREATE TRIGGER after_del_stmt_trig AFTER DELETE ON main_view FOR EACH STATEMENT EXECUTE PROCEDURE view_trigger('after_view_del_stmt'); \set QUIET false -- Insert into view using trigger INSERT INTO main_view VALUES (20, 30); INSERT INTO main_view VALUES (21, 31) RETURNING a, b; -- Table trigger will prevent updates UPDATE main_view SET b = 31 WHERE a = 20; UPDATE main_view SET b = 32 WHERE a = 21 AND b = 31 RETURNING a, b; -- Remove table trigger to allow updates DROP TRIGGER before_upd_a_row_trig ON main_table; UPDATE main_view SET b = 31 WHERE a = 20; UPDATE main_view SET b = 32 WHERE a = 21 AND b = 31 RETURNING a, b; -- Before and after stmt triggers should fire even when no rows are affected UPDATE main_view SET b = 0 WHERE false; -- Delete from view using trigger DELETE FROM main_view WHERE a IN (20,21); DELETE FROM main_view WHERE a = 31 RETURNING a, b; \set QUIET true -- Describe view should list triggers \d main_view -- Test dropping view triggers DROP TRIGGER instead_of_insert_trig ON main_view; DROP TRIGGER instead_of_delete_trig ON main_view; \d+ main_view DROP VIEW main_view; -- -- Test triggers on a join view -- CREATE TABLE country_table ( country_id serial primary key, country_name text unique not null, continent text not null ); INSERT INTO country_table (country_name, continent) VALUES ('Japan', 'Asia'), ('UK', 'Europe'), ('USA', 'North America') RETURNING *; CREATE TABLE city_table ( city_id serial primary key, city_name text not null, population bigint, country_id int references country_table ); CREATE VIEW city_view AS SELECT city_id, city_name, population, country_name, continent FROM city_table ci LEFT JOIN country_table co ON co.country_id = ci.country_id; CREATE FUNCTION city_insert() RETURNS trigger LANGUAGE plpgsql AS $$ declare ctry_id int; begin if NEW.country_name IS NOT NULL then SELECT country_id, continent INTO ctry_id, NEW.continent FROM country_table WHERE country_name = NEW.country_name; if NOT FOUND then raise exception 'No such country: "%"', NEW.country_name; end if; else NEW.continent := NULL; end if; if NEW.city_id IS NOT NULL then INSERT INTO city_table VALUES(NEW.city_id, NEW.city_name, NEW.population, ctry_id); else INSERT INTO city_table(city_name, population, country_id) VALUES(NEW.city_name, NEW.population, ctry_id) RETURNING city_id INTO NEW.city_id; end if; RETURN NEW; end; $$; CREATE TRIGGER city_insert_trig INSTEAD OF INSERT ON city_view FOR EACH ROW EXECUTE PROCEDURE city_insert(); CREATE FUNCTION city_delete() RETURNS trigger LANGUAGE plpgsql AS $$ begin DELETE FROM city_table WHERE city_id = OLD.city_id; if NOT FOUND then RETURN NULL; end if; RETURN OLD; end; $$; CREATE TRIGGER city_delete_trig INSTEAD OF DELETE ON city_view FOR EACH ROW EXECUTE PROCEDURE city_delete(); CREATE FUNCTION city_update() RETURNS trigger LANGUAGE plpgsql AS $$ declare ctry_id int; begin if NEW.country_name IS DISTINCT FROM OLD.country_name then SELECT country_id, continent INTO ctry_id, NEW.continent FROM country_table WHERE country_name = NEW.country_name; if NOT FOUND then raise exception 'No such country: "%"', NEW.country_name; end if; UPDATE city_table SET city_name = NEW.city_name, population = NEW.population, country_id = ctry_id WHERE city_id = OLD.city_id; else UPDATE city_table SET city_name = NEW.city_name, population = NEW.population WHERE city_id = OLD.city_id; NEW.continent := OLD.continent; end if; if NOT FOUND then RETURN NULL; end if; RETURN NEW; end; $$; CREATE TRIGGER city_update_trig INSTEAD OF UPDATE ON city_view FOR EACH ROW EXECUTE PROCEDURE city_update(); \set QUIET false -- INSERT .. RETURNING INSERT INTO city_view(city_name) VALUES('Tokyo') RETURNING *; INSERT INTO city_view(city_name, population) VALUES('London', 7556900) RETURNING *; INSERT INTO city_view(city_name, country_name) VALUES('Washington DC', 'USA') RETURNING *; INSERT INTO city_view(city_id, city_name) VALUES(123456, 'New York') RETURNING *; INSERT INTO city_view VALUES(234567, 'Birmingham', 1016800, 'UK', 'EU') RETURNING *; -- UPDATE .. RETURNING UPDATE city_view SET country_name = 'Japon' WHERE city_name = 'Tokyo'; -- error UPDATE city_view SET country_name = 'Japan' WHERE city_name = 'Takyo'; -- no match UPDATE city_view SET country_name = 'Japan' WHERE city_name = 'Tokyo' RETURNING *; -- OK UPDATE city_view SET population = 13010279 WHERE city_name = 'Tokyo' RETURNING *; UPDATE city_view SET country_name = 'UK' WHERE city_name = 'New York' RETURNING *; UPDATE city_view SET country_name = 'USA', population = 8391881 WHERE city_name = 'New York' RETURNING *; UPDATE city_view SET continent = 'EU' WHERE continent = 'Europe' RETURNING *; UPDATE city_view v1 SET country_name = v2.country_name FROM city_view v2 WHERE v2.city_name = 'Birmingham' AND v1.city_name = 'London' RETURNING *; -- DELETE .. RETURNING DELETE FROM city_view WHERE city_name = 'Birmingham' RETURNING *; \set QUIET true -- read-only view with WHERE clause CREATE VIEW european_city_view AS SELECT * FROM city_view WHERE continent = 'Europe'; SELECT count(*) FROM european_city_view; CREATE FUNCTION no_op_trig_fn() RETURNS trigger LANGUAGE plpgsql AS 'begin RETURN NULL; end'; CREATE TRIGGER no_op_trig INSTEAD OF INSERT OR UPDATE OR DELETE ON european_city_view FOR EACH ROW EXECUTE PROCEDURE no_op_trig_fn(); \set QUIET false INSERT INTO european_city_view VALUES (0, 'x', 10000, 'y', 'z'); UPDATE european_city_view SET population = 10000; DELETE FROM european_city_view; \set QUIET true -- rules bypassing no-op triggers CREATE RULE european_city_insert_rule AS ON INSERT TO european_city_view DO INSTEAD INSERT INTO city_view VALUES (NEW.city_id, NEW.city_name, NEW.population, NEW.country_name, NEW.continent) RETURNING *; CREATE RULE european_city_update_rule AS ON UPDATE TO european_city_view DO INSTEAD UPDATE city_view SET city_name = NEW.city_name, population = NEW.population, country_name = NEW.country_name WHERE city_id = OLD.city_id RETURNING NEW.*; CREATE RULE european_city_delete_rule AS ON DELETE TO european_city_view DO INSTEAD DELETE FROM city_view WHERE city_id = OLD.city_id RETURNING *; \set QUIET false -- INSERT not limited by view's WHERE clause, but UPDATE AND DELETE are INSERT INTO european_city_view(city_name, country_name) VALUES ('Cambridge', 'USA') RETURNING *; UPDATE european_city_view SET country_name = 'UK' WHERE city_name = 'Cambridge'; DELETE FROM european_city_view WHERE city_name = 'Cambridge'; -- UPDATE and DELETE via rule and trigger UPDATE city_view SET country_name = 'UK' WHERE city_name = 'Cambridge' RETURNING *; UPDATE european_city_view SET population = 122800 WHERE city_name = 'Cambridge' RETURNING *; DELETE FROM european_city_view WHERE city_name = 'Cambridge' RETURNING *; -- join UPDATE test UPDATE city_view v SET population = 599657 FROM city_table ci, country_table co WHERE ci.city_name = 'Washington DC' and co.country_name = 'USA' AND v.city_id = ci.city_id AND v.country_name = co.country_name RETURNING co.country_id, v.country_name, v.city_id, v.city_name, v.population; \set QUIET true SELECT * FROM city_view; DROP TABLE city_table CASCADE; DROP TABLE country_table; -- Test pg_trigger_depth() create table depth_a (id int not null primary key); create table depth_b (id int not null primary key); create table depth_c (id int not null primary key); create function depth_a_tf() returns trigger language plpgsql as $$ begin raise notice '%: depth = %', tg_name, pg_trigger_depth(); insert into depth_b values (new.id); raise notice '%: depth = %', tg_name, pg_trigger_depth(); return new; end; $$; create trigger depth_a_tr before insert on depth_a for each row execute procedure depth_a_tf(); create function depth_b_tf() returns trigger language plpgsql as $$ begin raise notice '%: depth = %', tg_name, pg_trigger_depth(); begin execute 'insert into depth_c values (' || new.id::text || ')'; exception when sqlstate 'U9999' then raise notice 'SQLSTATE = U9999: depth = %', pg_trigger_depth(); end; raise notice '%: depth = %', tg_name, pg_trigger_depth(); if new.id = 1 then execute 'insert into depth_c values (' || new.id::text || ')'; end if; return new; end; $$; create trigger depth_b_tr before insert on depth_b for each row execute procedure depth_b_tf(); create function depth_c_tf() returns trigger language plpgsql as $$ begin raise notice '%: depth = %', tg_name, pg_trigger_depth(); if new.id = 1 then raise exception sqlstate 'U9999'; end if; raise notice '%: depth = %', tg_name, pg_trigger_depth(); return new; end; $$; create trigger depth_c_tr before insert on depth_c for each row execute procedure depth_c_tf(); select pg_trigger_depth(); insert into depth_a values (1); select pg_trigger_depth(); insert into depth_a values (2); select pg_trigger_depth(); drop table depth_a, depth_b, depth_c; drop function depth_a_tf(); drop function depth_b_tf(); drop function depth_c_tf(); -- -- Test updates to rows during firing of BEFORE ROW triggers. -- As of 9.2, such cases should be rejected (see bug #6123). -- create temp table parent ( aid int not null primary key, val1 text, val2 text, val3 text, val4 text, bcnt int not null default 0); create temp table child ( bid int not null primary key, aid int not null, val1 text); create function parent_upd_func() returns trigger language plpgsql as $$ begin if old.val1 <> new.val1 then new.val2 = new.val1; delete from child where child.aid = new.aid and child.val1 = new.val1; end if; return new; end; $$; create trigger parent_upd_trig before update on parent for each row execute procedure parent_upd_func(); create function parent_del_func() returns trigger language plpgsql as $$ begin delete from child where aid = old.aid; return old; end; $$; create trigger parent_del_trig before delete on parent for each row execute procedure parent_del_func(); create function child_ins_func() returns trigger language plpgsql as $$ begin update parent set bcnt = bcnt + 1 where aid = new.aid; return new; end; $$; create trigger child_ins_trig after insert on child for each row execute procedure child_ins_func(); create function child_del_func() returns trigger language plpgsql as $$ begin update parent set bcnt = bcnt - 1 where aid = old.aid; return old; end; $$; create trigger child_del_trig after delete on child for each row execute procedure child_del_func(); insert into parent values (1, 'a', 'a', 'a', 'a', 0); insert into child values (10, 1, 'b'); select * from parent; select * from child; update parent set val1 = 'b' where aid = 1; -- should fail select * from parent; select * from child; delete from parent where aid = 1; -- should fail select * from parent; select * from child; -- replace the trigger function with one that restarts the deletion after -- having modified a child create or replace function parent_del_func() returns trigger language plpgsql as $$ begin delete from child where aid = old.aid; if found then delete from parent where aid = old.aid; return null; -- cancel outer deletion end if; return old; end; $$; delete from parent where aid = 1; select * from parent; select * from child; drop table parent, child; drop function parent_upd_func(); drop function parent_del_func(); drop function child_ins_func(); drop function child_del_func(); -- similar case, but with a self-referencing FK so that parent and child -- rows can be affected by a single operation create temp table self_ref_trigger ( id int primary key, parent int references self_ref_trigger, data text, nchildren int not null default 0 ); create function self_ref_trigger_ins_func() returns trigger language plpgsql as $$ begin if new.parent is not null then update self_ref_trigger set nchildren = nchildren + 1 where id = new.parent; end if; return new; end; $$; create trigger self_ref_trigger_ins_trig before insert on self_ref_trigger for each row execute procedure self_ref_trigger_ins_func(); create function self_ref_trigger_del_func() returns trigger language plpgsql as $$ begin if old.parent is not null then update self_ref_trigger set nchildren = nchildren - 1 where id = old.parent; end if; return old; end; $$; create trigger self_ref_trigger_del_trig before delete on self_ref_trigger for each row execute procedure self_ref_trigger_del_func(); insert into self_ref_trigger values (1, null, 'root'); insert into self_ref_trigger values (2, 1, 'root child A'); insert into self_ref_trigger values (3, 1, 'root child B'); insert into self_ref_trigger values (4, 2, 'grandchild 1'); insert into self_ref_trigger values (5, 3, 'grandchild 2'); update self_ref_trigger set data = 'root!' where id = 1; select * from self_ref_trigger; delete from self_ref_trigger; select * from self_ref_trigger; drop table self_ref_trigger; drop function self_ref_trigger_ins_func(); drop function self_ref_trigger_del_func(); -- -- Check that statement triggers work correctly even with all children excluded -- create table stmt_trig_on_empty_upd (a int); create table stmt_trig_on_empty_upd1 () inherits (stmt_trig_on_empty_upd); create function update_stmt_notice() returns trigger as $$ begin raise notice 'updating %', TG_TABLE_NAME; return null; end; $$ language plpgsql; create trigger before_stmt_trigger before update on stmt_trig_on_empty_upd execute procedure update_stmt_notice(); create trigger before_stmt_trigger before update on stmt_trig_on_empty_upd1 execute procedure update_stmt_notice(); -- inherited no-op update update stmt_trig_on_empty_upd set a = a where false returning a+1 as aa; -- simple no-op update update stmt_trig_on_empty_upd1 set a = a where false returning a+1 as aa; drop table stmt_trig_on_empty_upd cascade; drop function update_stmt_notice(); -- -- Check that index creation (or DDL in general) is prohibited in a trigger -- create table trigger_ddl_table ( col1 integer, col2 integer ); create function trigger_ddl_func() returns trigger as $$ begin alter table trigger_ddl_table add primary key (col1); return new; end$$ language plpgsql; create trigger trigger_ddl_func before insert on trigger_ddl_table for each row execute procedure trigger_ddl_func(); insert into trigger_ddl_table values (1, 42); -- fail create or replace function trigger_ddl_func() returns trigger as $$ begin create index on trigger_ddl_table (col2); return new; end$$ language plpgsql; insert into trigger_ddl_table values (1, 42); -- fail drop table trigger_ddl_table; drop function trigger_ddl_func(); -- -- Verify behavior of before and after triggers with INSERT...ON CONFLICT -- DO UPDATE -- create table upsert (key int4 primary key, color text); create function upsert_before_func() returns trigger language plpgsql as $$ begin if (TG_OP = 'UPDATE') then raise warning 'before update (old): %', old.*::text; raise warning 'before update (new): %', new.*::text; elsif (TG_OP = 'INSERT') then raise warning 'before insert (new): %', new.*::text; if new.key % 2 = 0 then new.key := new.key + 1; new.color := new.color || ' trig modified'; raise warning 'before insert (new, modified): %', new.*::text; end if; end if; return new; end; $$; create trigger upsert_before_trig before insert or update on upsert for each row execute procedure upsert_before_func(); create function upsert_after_func() returns trigger language plpgsql as $$ begin if (TG_OP = 'UPDATE') then raise warning 'after update (old): %', old.*::text; raise warning 'after update (new): %', new.*::text; elsif (TG_OP = 'INSERT') then raise warning 'after insert (new): %', new.*::text; end if; return null; end; $$; create trigger upsert_after_trig after insert or update on upsert for each row execute procedure upsert_after_func(); insert into upsert values(1, 'black') on conflict (key) do update set color = 'updated ' || upsert.color; insert into upsert values(2, 'red') on conflict (key) do update set color = 'updated ' || upsert.color; insert into upsert values(3, 'orange') on conflict (key) do update set color = 'updated ' || upsert.color; insert into upsert values(4, 'green') on conflict (key) do update set color = 'updated ' || upsert.color; insert into upsert values(5, 'purple') on conflict (key) do update set color = 'updated ' || upsert.color; insert into upsert values(6, 'white') on conflict (key) do update set color = 'updated ' || upsert.color; insert into upsert values(7, 'pink') on conflict (key) do update set color = 'updated ' || upsert.color; insert into upsert values(8, 'yellow') on conflict (key) do update set color = 'updated ' || upsert.color; select * from upsert; drop table upsert; drop function upsert_before_func(); drop function upsert_after_func(); -- -- Verify that triggers with transition tables are not allowed on -- views -- create table my_table (i int); create view my_view as select * from my_table; create function my_trigger_function() returns trigger as $$ begin end; $$ language plpgsql; create trigger my_trigger after update on my_view referencing old table as old_table for each statement execute procedure my_trigger_function(); drop function my_trigger_function(); drop view my_view; drop table my_table; -- -- Verify cases that are unsupported with partitioned tables -- create table parted_trig (a int) partition by list (a); create function trigger_nothing() returns trigger language plpgsql as $$ begin end; $$; create trigger failed instead of update on parted_trig for each row execute procedure trigger_nothing(); create trigger failed after update on parted_trig referencing old table as old_table for each row execute procedure trigger_nothing(); drop table parted_trig; -- -- Verify trigger creation for partitioned tables, and drop behavior -- create table trigpart (a int, b int) partition by range (a); create table trigpart1 partition of trigpart for values from (0) to (1000); create trigger trg1 after insert on trigpart for each row execute procedure trigger_nothing(); create table trigpart2 partition of trigpart for values from (1000) to (2000); create table trigpart3 (like trigpart); alter table trigpart attach partition trigpart3 for values from (2000) to (3000); create table trigpart4 partition of trigpart for values from (3000) to (4000) partition by range (a); create table trigpart41 partition of trigpart4 for values from (3000) to (3500); create table trigpart42 (like trigpart); alter table trigpart4 attach partition trigpart42 for values from (3500) to (4000); select tgrelid::regclass, tgname, tgfoid::regproc from pg_trigger where tgrelid::regclass::text like 'trigpart%' order by tgrelid::regclass::text; drop trigger trg1 on trigpart1; -- fail drop trigger trg1 on trigpart2; -- fail drop trigger trg1 on trigpart3; -- fail drop table trigpart2; -- ok, trigger should be gone in that partition select tgrelid::regclass, tgname, tgfoid::regproc from pg_trigger where tgrelid::regclass::text like 'trigpart%' order by tgrelid::regclass::text; drop trigger trg1 on trigpart; -- ok, all gone select tgrelid::regclass, tgname, tgfoid::regproc from pg_trigger where tgrelid::regclass::text like 'trigpart%' order by tgrelid::regclass::text; -- check detach behavior create trigger trg1 after insert on trigpart for each row execute procedure trigger_nothing(); \d trigpart3 alter table trigpart detach partition trigpart3; drop trigger trg1 on trigpart3; -- fail due to "does not exist" alter table trigpart detach partition trigpart4; drop trigger trg1 on trigpart41; -- fail due to "does not exist" drop table trigpart4; alter table trigpart attach partition trigpart3 for values from (2000) to (3000); alter table trigpart detach partition trigpart3; alter table trigpart attach partition trigpart3 for values from (2000) to (3000); drop table trigpart3; select tgrelid::regclass::text, tgname, tgfoid::regproc, tgenabled, tgisinternal from pg_trigger where tgname ~ '^trg1' order by 1; create table trigpart3 (like trigpart); create trigger trg1 after insert on trigpart3 for each row execute procedure trigger_nothing(); \d trigpart3 alter table trigpart attach partition trigpart3 FOR VALUES FROM (2000) to (3000); -- fail drop table trigpart3; drop table trigpart; drop function trigger_nothing(); -- -- Verify that triggers are fired for partitioned tables -- create table parted_stmt_trig (a int) partition by list (a); create table parted_stmt_trig1 partition of parted_stmt_trig for values in (1); create table parted_stmt_trig2 partition of parted_stmt_trig for values in (2); create table parted2_stmt_trig (a int) partition by list (a); create table parted2_stmt_trig1 partition of parted2_stmt_trig for values in (1); create table parted2_stmt_trig2 partition of parted2_stmt_trig for values in (2); create or replace function trigger_notice() returns trigger as $$ begin raise notice 'trigger % on % % % for %', TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL; if TG_LEVEL = 'ROW' then return NEW; end if; return null; end; $$ language plpgsql; -- insert/update/delete statement-level triggers on the parent create trigger trig_ins_before before insert on parted_stmt_trig for each statement execute procedure trigger_notice(); create trigger trig_ins_after after insert on parted_stmt_trig for each statement execute procedure trigger_notice(); create trigger trig_upd_before before update on parted_stmt_trig for each statement execute procedure trigger_notice(); create trigger trig_upd_after after update on parted_stmt_trig for each statement execute procedure trigger_notice(); create trigger trig_del_before before delete on parted_stmt_trig for each statement execute procedure trigger_notice(); create trigger trig_del_after after delete on parted_stmt_trig for each statement execute procedure trigger_notice(); -- insert/update/delete row-level triggers on the parent create trigger trig_ins_after_parent after insert on parted_stmt_trig for each row execute procedure trigger_notice(); create trigger trig_upd_after_parent after update on parted_stmt_trig for each row execute procedure trigger_notice(); create trigger trig_del_after_parent after delete on parted_stmt_trig for each row execute procedure trigger_notice(); -- insert/update/delete row-level triggers on the first partition create trigger trig_ins_before_child before insert on parted_stmt_trig1 for each row execute procedure trigger_notice(); create trigger trig_ins_after_child after insert on parted_stmt_trig1 for each row execute procedure trigger_notice(); create trigger trig_upd_before_child before update on parted_stmt_trig1 for each row execute procedure trigger_notice(); create trigger trig_upd_after_child after update on parted_stmt_trig1 for each row execute procedure trigger_notice(); create trigger trig_del_before_child before delete on parted_stmt_trig1 for each row execute procedure trigger_notice(); create trigger trig_del_after_child after delete on parted_stmt_trig1 for each row execute procedure trigger_notice(); -- insert/update/delete statement-level triggers on the parent create trigger trig_ins_before_3 before insert on parted2_stmt_trig for each statement execute procedure trigger_notice(); create trigger trig_ins_after_3 after insert on parted2_stmt_trig for each statement execute procedure trigger_notice(); create trigger trig_upd_before_3 before update on parted2_stmt_trig for each statement execute procedure trigger_notice(); create trigger trig_upd_after_3 after update on parted2_stmt_trig for each statement execute procedure trigger_notice(); create trigger trig_del_before_3 before delete on parted2_stmt_trig for each statement execute procedure trigger_notice(); create trigger trig_del_after_3 after delete on parted2_stmt_trig for each statement execute procedure trigger_notice(); with ins (a) as ( insert into parted2_stmt_trig values (1), (2) returning a ) insert into parted_stmt_trig select a from ins returning tableoid::regclass, a; with upd as ( update parted2_stmt_trig set a = a ) update parted_stmt_trig set a = a; delete from parted_stmt_trig; -- insert via copy on the parent copy parted_stmt_trig(a) from stdin; 1 2 \. -- insert via copy on the first partition copy parted_stmt_trig1(a) from stdin; 1 \. -- Disabling a trigger in the parent table should disable children triggers too alter table parted_stmt_trig disable trigger trig_ins_after_parent; insert into parted_stmt_trig values (1); alter table parted_stmt_trig enable trigger trig_ins_after_parent; insert into parted_stmt_trig values (1); drop table parted_stmt_trig, parted2_stmt_trig; -- Verify that triggers fire in alphabetical order create table parted_trig (a int) partition by range (a); create table parted_trig_1 partition of parted_trig for values from (0) to (1000) partition by range (a); create table parted_trig_1_1 partition of parted_trig_1 for values from (0) to (100); create table parted_trig_2 partition of parted_trig for values from (1000) to (2000); create trigger zzz after insert on parted_trig for each row execute procedure trigger_notice(); create trigger mmm after insert on parted_trig_1_1 for each row execute procedure trigger_notice(); create trigger aaa after insert on parted_trig_1 for each row execute procedure trigger_notice(); create trigger bbb after insert on parted_trig for each row execute procedure trigger_notice(); create trigger qqq after insert on parted_trig_1_1 for each row execute procedure trigger_notice(); insert into parted_trig values (50), (1500); drop table parted_trig; -- Verify propagation of trigger arguments to partitions create table parted_trig (a int) partition by list (a); create table parted_trig1 partition of parted_trig for values in (1); create or replace function trigger_notice() returns trigger as $$ declare arg1 text = TG_ARGV[0]; arg2 integer = TG_ARGV[1]; begin raise notice 'trigger % on % % % for % args % %', TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL, arg1, arg2; return null; end; $$ language plpgsql; create trigger aaa after insert on parted_trig for each row execute procedure trigger_notice('quirky', 1); -- Verify propagation of trigger arguments to partitions attached after creating trigger create table parted_trig2 partition of parted_trig for values in (2); create table parted_trig3 (like parted_trig); alter table parted_trig attach partition parted_trig3 for values in (3); insert into parted_trig values (1), (2), (3); drop table parted_trig; -- test irregular partitions (i.e., different column definitions), -- including that the WHEN clause works create function bark(text) returns bool language plpgsql immutable as $$ begin raise notice '% <- woof!', $1; return true; end; $$; create or replace function trigger_notice_ab() returns trigger as $$ begin raise notice 'trigger % on % % % for %: (a,b)=(%,%)', TG_NAME, TG_TABLE_NAME, TG_WHEN, TG_OP, TG_LEVEL, NEW.a, NEW.b; if TG_LEVEL = 'ROW' then return NEW; end if; return null; end; $$ language plpgsql; create table parted_irreg_ancestor (fd text, b text, fd2 int, fd3 int, a int) partition by range (b); alter table parted_irreg_ancestor drop column fd, drop column fd2, drop column fd3; create table parted_irreg (fd int, a int, fd2 int, b text) partition by range (b); alter table parted_irreg drop column fd, drop column fd2; alter table parted_irreg_ancestor attach partition parted_irreg for values from ('aaaa') to ('zzzz'); create table parted1_irreg (b text, fd int, a int); alter table parted1_irreg drop column fd; alter table parted_irreg attach partition parted1_irreg for values from ('aaaa') to ('bbbb'); create trigger parted_trig after insert on parted_irreg for each row execute procedure trigger_notice_ab(); create trigger parted_trig_odd after insert on parted_irreg for each row when (bark(new.b) AND new.a % 2 = 1) execute procedure trigger_notice_ab(); -- we should hear barking for every insert, but parted_trig_odd only emits -- noise for odd values of a. parted_trig does it for all inserts. insert into parted_irreg values (1, 'aardvark'), (2, 'aanimals'); insert into parted1_irreg values ('aardwolf', 2); insert into parted_irreg_ancestor values ('aasvogel', 3); drop table parted_irreg_ancestor; -- Before triggers and partitions create table parted (a int, b int, c text) partition by list (a); create table parted_1 partition of parted for values in (1) partition by list (b); create table parted_1_1 partition of parted_1 for values in (1); create function parted_trigfunc() returns trigger language plpgsql as $$ begin new.a = new.a + 1; return new; end; $$; insert into parted values (1, 1, 'uno uno v1'); -- works create trigger t before insert or update or delete on parted for each row execute function parted_trigfunc(); insert into parted values (1, 1, 'uno uno v2'); -- fail update parted set c = c || 'v3'; -- fail create or replace function parted_trigfunc() returns trigger language plpgsql as $$ begin new.b = new.b + 1; return new; end; $$; insert into parted values (1, 1, 'uno uno v4'); -- fail update parted set c = c || 'v5'; -- fail create or replace function parted_trigfunc() returns trigger language plpgsql as $$ begin new.c = new.c || ' did '|| TG_OP; return new; end; $$; insert into parted values (1, 1, 'uno uno'); -- works update parted set c = c || ' v6'; -- works select tableoid::regclass, * from parted; -- update itself moves tuple to new partition; trigger still works truncate table parted; create table parted_2 partition of parted for values in (2); insert into parted values (1, 1, 'uno uno v5'); update parted set a = 2; select tableoid::regclass, * from parted; -- both trigger and update change the partition create or replace function parted_trigfunc2() returns trigger language plpgsql as $$ begin new.a = new.a + 1; return new; end; $$; create trigger t2 before update on parted for each row execute function parted_trigfunc2(); truncate table parted; insert into parted values (1, 1, 'uno uno v6'); create table parted_3 partition of parted for values in (3); update parted set a = a + 1; select tableoid::regclass, * from parted; -- there's no partition for a=0, but this update works anyway because -- the trigger causes the tuple to be routed to another partition update parted set a = 0; select tableoid::regclass, * from parted; drop table parted; create table parted (a int, b int, c text) partition by list ((a + b)); create or replace function parted_trigfunc() returns trigger language plpgsql as $$ begin new.a = new.a + new.b; return new; end; $$; create table parted_1 partition of parted for values in (1, 2); create table parted_2 partition of parted for values in (3, 4); create trigger t before insert or update on parted for each row execute function parted_trigfunc(); insert into parted values (0, 1, 'zero win'); insert into parted values (1, 1, 'one fail'); insert into parted values (1, 2, 'two fail'); select * from parted; drop table parted; drop function parted_trigfunc(); -- -- Constraint triggers and partitioned tables create table parted_constr_ancestor (a int, b text) partition by range (b); create table parted_constr (a int, b text) partition by range (b); alter table parted_constr_ancestor attach partition parted_constr for values from ('aaaa') to ('zzzz'); create table parted1_constr (a int, b text); alter table parted_constr attach partition parted1_constr for values from ('aaaa') to ('bbbb'); create constraint trigger parted_trig after insert on parted_constr_ancestor deferrable for each row execute procedure trigger_notice_ab(); create constraint trigger parted_trig_two after insert on parted_constr deferrable initially deferred for each row when (bark(new.b) AND new.a % 2 = 1) execute procedure trigger_notice_ab(); -- The immediate constraint is fired immediately; the WHEN clause of the -- deferred constraint is also called immediately. The deferred constraint -- is fired at commit time. begin; insert into parted_constr values (1, 'aardvark'); insert into parted1_constr values (2, 'aardwolf'); insert into parted_constr_ancestor values (3, 'aasvogel'); commit; -- The WHEN clause is immediate, and both constraint triggers are fired at -- commit time. begin; set constraints parted_trig deferred; insert into parted_constr values (1, 'aardvark'); insert into parted1_constr values (2, 'aardwolf'), (3, 'aasvogel'); commit; drop table parted_constr_ancestor; drop function bark(text); -- Test that the WHEN clause is set properly to partitions create table parted_trigger (a int, b text) partition by range (a); create table parted_trigger_1 partition of parted_trigger for values from (0) to (1000); create table parted_trigger_2 (drp int, a int, b text); alter table parted_trigger_2 drop column drp; alter table parted_trigger attach partition parted_trigger_2 for values from (1000) to (2000); create trigger parted_trigger after update on parted_trigger for each row when (new.a % 2 = 1 and length(old.b) >= 2) execute procedure trigger_notice_ab(); create table parted_trigger_3 (b text, a int) partition by range (length(b)); create table parted_trigger_3_1 partition of parted_trigger_3 for values from (1) to (3); create table parted_trigger_3_2 partition of parted_trigger_3 for values from (3) to (5); alter table parted_trigger attach partition parted_trigger_3 for values from (2000) to (3000); insert into parted_trigger values (0, 'a'), (1, 'bbb'), (2, 'bcd'), (3, 'c'), (1000, 'c'), (1001, 'ddd'), (1002, 'efg'), (1003, 'f'), (2000, 'e'), (2001, 'fff'), (2002, 'ghi'), (2003, 'h'); update parted_trigger set a = a + 2; -- notice for odd 'a' values, long 'b' values drop table parted_trigger; -- try a constraint trigger, also create table parted_referenced (a int); create table unparted_trigger (a int, b text); -- for comparison purposes create table parted_trigger (a int, b text) partition by range (a); create table parted_trigger_1 partition of parted_trigger for values from (0) to (1000); create table parted_trigger_2 (drp int, a int, b text); alter table parted_trigger_2 drop column drp; alter table parted_trigger attach partition parted_trigger_2 for values from (1000) to (2000); create constraint trigger parted_trigger after update on parted_trigger from parted_referenced for each row execute procedure trigger_notice_ab(); create constraint trigger parted_trigger after update on unparted_trigger from parted_referenced for each row execute procedure trigger_notice_ab(); create table parted_trigger_3 (b text, a int) partition by range (length(b)); create table parted_trigger_3_1 partition of parted_trigger_3 for values from (1) to (3); create table parted_trigger_3_2 partition of parted_trigger_3 for values from (3) to (5); alter table parted_trigger attach partition parted_trigger_3 for values from (2000) to (3000); select tgname, conname, t.tgrelid::regclass, t.tgconstrrelid::regclass, c.conrelid::regclass, c.confrelid::regclass from pg_trigger t join pg_constraint c on (t.tgconstraint = c.oid) where tgname = 'parted_trigger' order by t.tgrelid::regclass::text; drop table parted_referenced, parted_trigger, unparted_trigger; -- verify that the "AFTER UPDATE OF columns" event is propagated correctly create table parted_trigger (a int, b text) partition by range (a); create table parted_trigger_1 partition of parted_trigger for values from (0) to (1000); create table parted_trigger_2 (drp int, a int, b text); alter table parted_trigger_2 drop column drp; alter table parted_trigger attach partition parted_trigger_2 for values from (1000) to (2000); create trigger parted_trigger after update of b on parted_trigger for each row execute procedure trigger_notice_ab(); create table parted_trigger_3 (b text, a int) partition by range (length(b)); create table parted_trigger_3_1 partition of parted_trigger_3 for values from (1) to (4); create table parted_trigger_3_2 partition of parted_trigger_3 for values from (4) to (8); alter table parted_trigger attach partition parted_trigger_3 for values from (2000) to (3000); insert into parted_trigger values (0, 'a'), (1000, 'c'), (2000, 'e'), (2001, 'eeee'); update parted_trigger set a = a + 2; -- no notices here update parted_trigger set b = b || 'b'; -- all triggers should fire drop table parted_trigger; drop function trigger_notice_ab(); -- Make sure we don't end up with unnecessary copies of triggers, when -- cloning them. create table trg_clone (a int) partition by range (a); create table trg_clone1 partition of trg_clone for values from (0) to (1000); alter table trg_clone add constraint uniq unique (a) deferrable; create table trg_clone2 partition of trg_clone for values from (1000) to (2000); create table trg_clone3 partition of trg_clone for values from (2000) to (3000) partition by range (a); create table trg_clone_3_3 partition of trg_clone3 for values from (2000) to (2100); select tgrelid::regclass, count(*) from pg_trigger where tgrelid::regclass in ('trg_clone', 'trg_clone1', 'trg_clone2', 'trg_clone3', 'trg_clone_3_3') group by tgrelid::regclass order by tgrelid::regclass; drop table trg_clone; -- Test the interaction between ALTER TABLE .. DISABLE TRIGGER and -- both kinds of inheritance. Historically, legacy inheritance has -- not recursed to children, so that behavior is preserved. create table parent (a int); create table child1 () inherits (parent); create function trig_nothing() returns trigger language plpgsql as $$ begin return null; end $$; create trigger tg after insert on parent for each row execute function trig_nothing(); create trigger tg after insert on child1 for each row execute function trig_nothing(); alter table parent disable trigger tg; select tgrelid::regclass, tgname, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text; alter table only parent enable always trigger tg; select tgrelid::regclass, tgname, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text; drop table parent, child1; create table parent (a int) partition by list (a); create table child1 partition of parent for values in (1); create trigger tg after insert on parent for each row execute procedure trig_nothing(); select tgrelid::regclass, tgname, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text; alter table only parent enable always trigger tg; select tgrelid::regclass, tgname, tgenabled from pg_trigger where tgrelid in ('parent'::regclass, 'child1'::regclass) order by tgrelid::regclass::text; drop table parent, child1; -- -- Test the interaction between transition tables and both kinds of -- inheritance. We'll dump the contents of the transition tables in a -- format that shows the attribute order, so that we can distinguish -- tuple formats (though not dropped attributes). -- create or replace function dump_insert() returns trigger language plpgsql as $$ begin raise notice 'trigger = %, new table = %', TG_NAME, (select string_agg(new_table::text, ', ' order by a) from new_table); return null; end; $$; create or replace function dump_update() returns trigger language plpgsql as $$ begin raise notice 'trigger = %, old table = %, new table = %', TG_NAME, (select string_agg(old_table::text, ', ' order by a) from old_table), (select string_agg(new_table::text, ', ' order by a) from new_table); return null; end; $$; create or replace function dump_delete() returns trigger language plpgsql as $$ begin raise notice 'trigger = %, old table = %', TG_NAME, (select string_agg(old_table::text, ', ' order by a) from old_table); return null; end; $$; -- -- Verify behavior of statement triggers on partition hierarchy with -- transition tables. Tuples should appear to each trigger in the -- format of the relation the trigger is attached to. -- -- set up a partition hierarchy with some different TupleDescriptors create table parent (a text, b int) partition by list (a); -- a child matching parent create table child1 partition of parent for values in ('AAA'); -- a child with a dropped column create table child2 (x int, a text, b int); alter table child2 drop column x; alter table parent attach partition child2 for values in ('BBB'); -- a child with a different column order create table child3 (b int, a text); alter table parent attach partition child3 for values in ('CCC'); create trigger parent_insert_trig after insert on parent referencing new table as new_table for each statement execute procedure dump_insert(); create trigger parent_update_trig after update on parent referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); create trigger parent_delete_trig after delete on parent referencing old table as old_table for each statement execute procedure dump_delete(); create trigger child1_insert_trig after insert on child1 referencing new table as new_table for each statement execute procedure dump_insert(); create trigger child1_update_trig after update on child1 referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); create trigger child1_delete_trig after delete on child1 referencing old table as old_table for each statement execute procedure dump_delete(); create trigger child2_insert_trig after insert on child2 referencing new table as new_table for each statement execute procedure dump_insert(); create trigger child2_update_trig after update on child2 referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); create trigger child2_delete_trig after delete on child2 referencing old table as old_table for each statement execute procedure dump_delete(); create trigger child3_insert_trig after insert on child3 referencing new table as new_table for each statement execute procedure dump_insert(); create trigger child3_update_trig after update on child3 referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); create trigger child3_delete_trig after delete on child3 referencing old table as old_table for each statement execute procedure dump_delete(); SELECT trigger_name, event_manipulation, event_object_schema, event_object_table, action_order, action_condition, action_orientation, action_timing, action_reference_old_table, action_reference_new_table FROM information_schema.triggers WHERE event_object_table IN ('parent', 'child1', 'child2', 'child3') ORDER BY trigger_name COLLATE "C", 2; -- insert directly into children sees respective child-format tuples insert into child1 values ('AAA', 42); insert into child2 values ('BBB', 42); insert into child3 values (42, 'CCC'); -- update via parent sees parent-format tuples update parent set b = b + 1; -- delete via parent sees parent-format tuples delete from parent; -- insert into parent sees parent-format tuples insert into parent values ('AAA', 42); insert into parent values ('BBB', 42); insert into parent values ('CCC', 42); -- delete from children sees respective child-format tuples delete from child1; delete from child2; delete from child3; -- copy into parent sees parent-format tuples copy parent (a, b) from stdin; AAA 42 BBB 42 CCC 42 \. -- DML affecting parent sees tuples collected from children even if -- there is no transition table trigger on the children drop trigger child1_insert_trig on child1; drop trigger child1_update_trig on child1; drop trigger child1_delete_trig on child1; drop trigger child2_insert_trig on child2; drop trigger child2_update_trig on child2; drop trigger child2_delete_trig on child2; drop trigger child3_insert_trig on child3; drop trigger child3_update_trig on child3; drop trigger child3_delete_trig on child3; delete from parent; -- copy into parent sees tuples collected from children even if there -- is no transition-table trigger on the children copy parent (a, b) from stdin; AAA 42 BBB 42 CCC 42 \. -- insert into parent with a before trigger on a child tuple before -- insertion, and we capture the newly modified row in parent format create or replace function intercept_insert() returns trigger language plpgsql as $$ begin new.b = new.b + 1000; return new; end; $$; create trigger intercept_insert_child3 before insert on child3 for each row execute procedure intercept_insert(); -- insert, parent trigger sees post-modification parent-format tuple insert into parent values ('AAA', 42), ('BBB', 42), ('CCC', 66); -- copy, parent trigger sees post-modification parent-format tuple copy parent (a, b) from stdin; AAA 42 BBB 42 CCC 234 \. drop table child1, child2, child3, parent; drop function intercept_insert(); -- -- Verify prohibition of row triggers with transition triggers on -- partitions -- create table parent (a text, b int) partition by list (a); create table child partition of parent for values in ('AAA'); -- adding row trigger with transition table fails create trigger child_row_trig after insert on child referencing new table as new_table for each row execute procedure dump_insert(); -- detaching it first works alter table parent detach partition child; create trigger child_row_trig after insert on child referencing new table as new_table for each row execute procedure dump_insert(); -- but now we're not allowed to reattach it alter table parent attach partition child for values in ('AAA'); -- drop the trigger, and now we're allowed to attach it again drop trigger child_row_trig on child; alter table parent attach partition child for values in ('AAA'); drop table child, parent; -- -- Verify behavior of statement triggers on (non-partition) -- inheritance hierarchy with transition tables; similar to the -- partition case, except there is no rerouting on insertion and child -- tables can have extra columns -- -- set up inheritance hierarchy with different TupleDescriptors create table parent (a text, b int); -- a child matching parent create table child1 () inherits (parent); -- a child with a different column order create table child2 (b int, a text); alter table child2 inherit parent; -- a child with an extra column create table child3 (c text) inherits (parent); create trigger parent_insert_trig after insert on parent referencing new table as new_table for each statement execute procedure dump_insert(); create trigger parent_update_trig after update on parent referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); create trigger parent_delete_trig after delete on parent referencing old table as old_table for each statement execute procedure dump_delete(); create trigger child1_insert_trig after insert on child1 referencing new table as new_table for each statement execute procedure dump_insert(); create trigger child1_update_trig after update on child1 referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); create trigger child1_delete_trig after delete on child1 referencing old table as old_table for each statement execute procedure dump_delete(); create trigger child2_insert_trig after insert on child2 referencing new table as new_table for each statement execute procedure dump_insert(); create trigger child2_update_trig after update on child2 referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); create trigger child2_delete_trig after delete on child2 referencing old table as old_table for each statement execute procedure dump_delete(); create trigger child3_insert_trig after insert on child3 referencing new table as new_table for each statement execute procedure dump_insert(); create trigger child3_update_trig after update on child3 referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); create trigger child3_delete_trig after delete on child3 referencing old table as old_table for each statement execute procedure dump_delete(); -- insert directly into children sees respective child-format tuples insert into child1 values ('AAA', 42); insert into child2 values (42, 'BBB'); insert into child3 values ('CCC', 42, 'foo'); -- update via parent sees parent-format tuples update parent set b = b + 1; -- delete via parent sees parent-format tuples delete from parent; -- reinsert values into children for next test... insert into child1 values ('AAA', 42); insert into child2 values (42, 'BBB'); insert into child3 values ('CCC', 42, 'foo'); -- delete from children sees respective child-format tuples delete from child1; delete from child2; delete from child3; -- copy into parent sees parent-format tuples (no rerouting, so these -- are really inserted into the parent) copy parent (a, b) from stdin; AAA 42 BBB 42 CCC 42 \. -- same behavior for copy if there is an index (interesting because rows are -- captured by a different code path in copy.c if there are indexes) create index on parent(b); copy parent (a, b) from stdin; DDD 42 \. -- DML affecting parent sees tuples collected from children even if -- there is no transition table trigger on the children drop trigger child1_insert_trig on child1; drop trigger child1_update_trig on child1; drop trigger child1_delete_trig on child1; drop trigger child2_insert_trig on child2; drop trigger child2_update_trig on child2; drop trigger child2_delete_trig on child2; drop trigger child3_insert_trig on child3; drop trigger child3_update_trig on child3; drop trigger child3_delete_trig on child3; delete from parent; drop table child1, child2, child3, parent; -- -- Verify prohibition of row triggers with transition triggers on -- inheritance children -- create table parent (a text, b int); create table child () inherits (parent); -- adding row trigger with transition table fails create trigger child_row_trig after insert on child referencing new table as new_table for each row execute procedure dump_insert(); -- disinheriting it first works alter table child no inherit parent; create trigger child_row_trig after insert on child referencing new table as new_table for each row execute procedure dump_insert(); -- but now we're not allowed to make it inherit anymore alter table child inherit parent; -- drop the trigger, and now we're allowed to make it inherit again drop trigger child_row_trig on child; alter table child inherit parent; drop table child, parent; -- -- Verify behavior of queries with wCTEs, where multiple transition -- tuplestores can be active at the same time because there are -- multiple DML statements that might fire triggers with transition -- tables -- create table table1 (a int); create table table2 (a text); create trigger table1_trig after insert on table1 referencing new table as new_table for each statement execute procedure dump_insert(); create trigger table2_trig after insert on table2 referencing new table as new_table for each statement execute procedure dump_insert(); with wcte as (insert into table1 values (42)) insert into table2 values ('hello world'); with wcte as (insert into table1 values (43)) insert into table1 values (44); select * from table1; select * from table2; drop table table1; drop table table2; -- -- Verify behavior of INSERT ... ON CONFLICT DO UPDATE ... with -- transition tables. -- create table my_table (a int primary key, b text); create trigger my_table_insert_trig after insert on my_table referencing new table as new_table for each statement execute procedure dump_insert(); create trigger my_table_update_trig after update on my_table referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); -- inserts only insert into my_table values (1, 'AAA'), (2, 'BBB') on conflict (a) do update set b = my_table.b || ':' || excluded.b; -- mixture of inserts and updates insert into my_table values (1, 'AAA'), (2, 'BBB'), (3, 'CCC'), (4, 'DDD') on conflict (a) do update set b = my_table.b || ':' || excluded.b; -- updates only insert into my_table values (3, 'CCC'), (4, 'DDD') on conflict (a) do update set b = my_table.b || ':' || excluded.b; -- -- now using a partitioned table -- create table iocdu_tt_parted (a int primary key, b text) partition by list (a); create table iocdu_tt_parted1 partition of iocdu_tt_parted for values in (1); create table iocdu_tt_parted2 partition of iocdu_tt_parted for values in (2); create table iocdu_tt_parted3 partition of iocdu_tt_parted for values in (3); create table iocdu_tt_parted4 partition of iocdu_tt_parted for values in (4); create trigger iocdu_tt_parted_insert_trig after insert on iocdu_tt_parted referencing new table as new_table for each statement execute procedure dump_insert(); create trigger iocdu_tt_parted_update_trig after update on iocdu_tt_parted referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); -- inserts only insert into iocdu_tt_parted values (1, 'AAA'), (2, 'BBB') on conflict (a) do update set b = iocdu_tt_parted.b || ':' || excluded.b; -- mixture of inserts and updates insert into iocdu_tt_parted values (1, 'AAA'), (2, 'BBB'), (3, 'CCC'), (4, 'DDD') on conflict (a) do update set b = iocdu_tt_parted.b || ':' || excluded.b; -- updates only insert into iocdu_tt_parted values (3, 'CCC'), (4, 'DDD') on conflict (a) do update set b = iocdu_tt_parted.b || ':' || excluded.b; drop table iocdu_tt_parted; -- -- Verify that you can't create a trigger with transition tables for -- more than one event. -- create trigger my_table_multievent_trig after insert or update on my_table referencing new table as new_table for each statement execute procedure dump_insert(); -- -- Verify that you can't create a trigger with transition tables with -- a column list. -- create trigger my_table_col_update_trig after update of b on my_table referencing new table as new_table for each statement execute procedure dump_insert(); drop table my_table; -- -- Test firing of triggers with transition tables by foreign key cascades -- create table refd_table (a int primary key, b text); create table trig_table (a int, b text, foreign key (a) references refd_table on update cascade on delete cascade ); create trigger trig_table_before_trig before insert or update or delete on trig_table for each statement execute procedure trigger_func('trig_table'); create trigger trig_table_insert_trig after insert on trig_table referencing new table as new_table for each statement execute procedure dump_insert(); create trigger trig_table_update_trig after update on trig_table referencing old table as old_table new table as new_table for each statement execute procedure dump_update(); create trigger trig_table_delete_trig after delete on trig_table referencing old table as old_table for each statement execute procedure dump_delete(); insert into refd_table values (1, 'one'), (2, 'two'), (3, 'three'); insert into trig_table values (1, 'one a'), (1, 'one b'), (2, 'two a'), (2, 'two b'), (3, 'three a'), (3, 'three b'); update refd_table set a = 11 where b = 'one'; select * from trig_table; delete from refd_table where length(b) = 3; select * from trig_table; drop table refd_table, trig_table; -- -- self-referential FKs are even more fun -- create table self_ref (a int primary key, b int references self_ref(a) on delete cascade); create trigger self_ref_before_trig before delete on self_ref for each statement execute procedure trigger_func('self_ref'); create trigger self_ref_r_trig after delete on self_ref referencing old table as old_table for each row execute procedure dump_delete(); create trigger self_ref_s_trig after delete on self_ref referencing old table as old_table for each statement execute procedure dump_delete(); insert into self_ref values (1, null), (2, 1), (3, 2); delete from self_ref where a = 1; -- without AR trigger, cascaded deletes all end up in one transition table drop trigger self_ref_r_trig on self_ref; insert into self_ref values (1, null), (2, 1), (3, 2), (4, 3); delete from self_ref where a = 1; drop table self_ref; -- cleanup drop function dump_insert(); drop function dump_update(); drop function dump_delete(); -- Leave around some objects for other tests create table trigger_parted (a int primary key) partition by list (a); create function trigger_parted_trigfunc() returns trigger language plpgsql as $$ begin end; $$; create trigger aft_row after insert or update on trigger_parted for each row execute function trigger_parted_trigfunc(); create table trigger_parted_p1 partition of trigger_parted for values in (1) partition by list (a); create table trigger_parted_p1_1 partition of trigger_parted_p1 for values in (1); -- verify transition table conversion slot's lifetime -- https://postgr.es/m/39a71864-b120-5a5c-8cc5-c632b6f16761@amazon.com create table convslot_test_parent (col1 text primary key); create table convslot_test_child (col1 text primary key, foreign key (col1) references convslot_test_parent(col1) on delete cascade on update cascade ); alter table convslot_test_child add column col2 text not null default 'tutu'; insert into convslot_test_parent(col1) values ('1'); insert into convslot_test_child(col1) values ('1'); insert into convslot_test_parent(col1) values ('3'); insert into convslot_test_child(col1) values ('3'); create or replace function trigger_function1() returns trigger language plpgsql AS $$ begin raise notice 'trigger = %, old_table = %', TG_NAME, (select string_agg(old_table::text, ', ' order by col1) from old_table); return null; end; $$; create or replace function trigger_function2() returns trigger language plpgsql AS $$ begin raise notice 'trigger = %, new table = %', TG_NAME, (select string_agg(new_table::text, ', ' order by col1) from new_table); return null; end; $$; create trigger but_trigger after update on convslot_test_child referencing new table as new_table for each statement execute function trigger_function2(); update convslot_test_parent set col1 = col1 || '1'; create or replace function trigger_function3() returns trigger language plpgsql AS $$ begin raise notice 'trigger = %, old_table = %, new table = %', TG_NAME, (select string_agg(old_table::text, ', ' order by col1) from old_table), (select string_agg(new_table::text, ', ' order by col1) from new_table); return null; end; $$; create trigger but_trigger2 after update on convslot_test_child referencing old table as old_table new table as new_table for each statement execute function trigger_function3(); update convslot_test_parent set col1 = col1 || '1'; create trigger bdt_trigger after delete on convslot_test_child referencing old table as old_table for each statement execute function trigger_function1(); delete from convslot_test_parent; drop table convslot_test_child, convslot_test_parent; libpg_query-13-2.1.0/test/sql/postgres_regress/truncate.sql000066400000000000000000000231521413137616400240120ustar00rootroot00000000000000-- Test basic TRUNCATE functionality. CREATE TABLE truncate_a (col1 integer primary key); INSERT INTO truncate_a VALUES (1); INSERT INTO truncate_a VALUES (2); SELECT * FROM truncate_a; -- Roll truncate back BEGIN; TRUNCATE truncate_a; ROLLBACK; SELECT * FROM truncate_a; -- Commit the truncate this time BEGIN; TRUNCATE truncate_a; COMMIT; SELECT * FROM truncate_a; -- Test foreign-key checks CREATE TABLE trunc_b (a int REFERENCES truncate_a); CREATE TABLE trunc_c (a serial PRIMARY KEY); CREATE TABLE trunc_d (a int REFERENCES trunc_c); CREATE TABLE trunc_e (a int REFERENCES truncate_a, b int REFERENCES trunc_c); TRUNCATE TABLE truncate_a; -- fail TRUNCATE TABLE truncate_a,trunc_b; -- fail TRUNCATE TABLE truncate_a,trunc_b,trunc_e; -- ok TRUNCATE TABLE truncate_a,trunc_e; -- fail TRUNCATE TABLE trunc_c; -- fail TRUNCATE TABLE trunc_c,trunc_d; -- fail TRUNCATE TABLE trunc_c,trunc_d,trunc_e; -- ok TRUNCATE TABLE trunc_c,trunc_d,trunc_e,truncate_a; -- fail TRUNCATE TABLE trunc_c,trunc_d,trunc_e,truncate_a,trunc_b; -- ok TRUNCATE TABLE truncate_a RESTRICT; -- fail TRUNCATE TABLE truncate_a CASCADE; -- ok -- circular references ALTER TABLE truncate_a ADD FOREIGN KEY (col1) REFERENCES trunc_c; -- Add some data to verify that truncating actually works ... INSERT INTO trunc_c VALUES (1); INSERT INTO truncate_a VALUES (1); INSERT INTO trunc_b VALUES (1); INSERT INTO trunc_d VALUES (1); INSERT INTO trunc_e VALUES (1,1); TRUNCATE TABLE trunc_c; TRUNCATE TABLE trunc_c,truncate_a; TRUNCATE TABLE trunc_c,truncate_a,trunc_d; TRUNCATE TABLE trunc_c,truncate_a,trunc_d,trunc_e; TRUNCATE TABLE trunc_c,truncate_a,trunc_d,trunc_e,trunc_b; -- Verify that truncating did actually work SELECT * FROM truncate_a UNION ALL SELECT * FROM trunc_c UNION ALL SELECT * FROM trunc_b UNION ALL SELECT * FROM trunc_d; SELECT * FROM trunc_e; -- Add data again to test TRUNCATE ... CASCADE INSERT INTO trunc_c VALUES (1); INSERT INTO truncate_a VALUES (1); INSERT INTO trunc_b VALUES (1); INSERT INTO trunc_d VALUES (1); INSERT INTO trunc_e VALUES (1,1); TRUNCATE TABLE trunc_c CASCADE; -- ok SELECT * FROM truncate_a UNION ALL SELECT * FROM trunc_c UNION ALL SELECT * FROM trunc_b UNION ALL SELECT * FROM trunc_d; SELECT * FROM trunc_e; DROP TABLE truncate_a,trunc_c,trunc_b,trunc_d,trunc_e CASCADE; -- Test TRUNCATE with inheritance CREATE TABLE trunc_f (col1 integer primary key); INSERT INTO trunc_f VALUES (1); INSERT INTO trunc_f VALUES (2); CREATE TABLE trunc_fa (col2a text) INHERITS (trunc_f); INSERT INTO trunc_fa VALUES (3, 'three'); CREATE TABLE trunc_fb (col2b int) INHERITS (trunc_f); INSERT INTO trunc_fb VALUES (4, 444); CREATE TABLE trunc_faa (col3 text) INHERITS (trunc_fa); INSERT INTO trunc_faa VALUES (5, 'five', 'FIVE'); BEGIN; SELECT * FROM trunc_f; TRUNCATE trunc_f; SELECT * FROM trunc_f; ROLLBACK; BEGIN; SELECT * FROM trunc_f; TRUNCATE ONLY trunc_f; SELECT * FROM trunc_f; ROLLBACK; BEGIN; SELECT * FROM trunc_f; SELECT * FROM trunc_fa; SELECT * FROM trunc_faa; TRUNCATE ONLY trunc_fb, ONLY trunc_fa; SELECT * FROM trunc_f; SELECT * FROM trunc_fa; SELECT * FROM trunc_faa; ROLLBACK; BEGIN; SELECT * FROM trunc_f; SELECT * FROM trunc_fa; SELECT * FROM trunc_faa; TRUNCATE ONLY trunc_fb, trunc_fa; SELECT * FROM trunc_f; SELECT * FROM trunc_fa; SELECT * FROM trunc_faa; ROLLBACK; DROP TABLE trunc_f CASCADE; -- Test ON TRUNCATE triggers CREATE TABLE trunc_trigger_test (f1 int, f2 text, f3 text); CREATE TABLE trunc_trigger_log (tgop text, tglevel text, tgwhen text, tgargv text, tgtable name, rowcount bigint); CREATE FUNCTION trunctrigger() RETURNS trigger as $$ declare c bigint; begin execute 'select count(*) from ' || quote_ident(tg_table_name) into c; insert into trunc_trigger_log values (TG_OP, TG_LEVEL, TG_WHEN, TG_ARGV[0], tg_table_name, c); return null; end; $$ LANGUAGE plpgsql; -- basic before trigger INSERT INTO trunc_trigger_test VALUES(1, 'foo', 'bar'), (2, 'baz', 'quux'); CREATE TRIGGER t BEFORE TRUNCATE ON trunc_trigger_test FOR EACH STATEMENT EXECUTE PROCEDURE trunctrigger('before trigger truncate'); SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; SELECT * FROM trunc_trigger_log; TRUNCATE trunc_trigger_test; SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; SELECT * FROM trunc_trigger_log; DROP TRIGGER t ON trunc_trigger_test; truncate trunc_trigger_log; -- same test with an after trigger INSERT INTO trunc_trigger_test VALUES(1, 'foo', 'bar'), (2, 'baz', 'quux'); CREATE TRIGGER tt AFTER TRUNCATE ON trunc_trigger_test FOR EACH STATEMENT EXECUTE PROCEDURE trunctrigger('after trigger truncate'); SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; SELECT * FROM trunc_trigger_log; TRUNCATE trunc_trigger_test; SELECT count(*) as "Row count in test table" FROM trunc_trigger_test; SELECT * FROM trunc_trigger_log; DROP TABLE trunc_trigger_test; DROP TABLE trunc_trigger_log; DROP FUNCTION trunctrigger(); -- test TRUNCATE ... RESTART IDENTITY CREATE SEQUENCE truncate_a_id1 START WITH 33; CREATE TABLE truncate_a (id serial, id1 integer default nextval('truncate_a_id1')); ALTER SEQUENCE truncate_a_id1 OWNED BY truncate_a.id1; INSERT INTO truncate_a DEFAULT VALUES; INSERT INTO truncate_a DEFAULT VALUES; SELECT * FROM truncate_a; TRUNCATE truncate_a; INSERT INTO truncate_a DEFAULT VALUES; INSERT INTO truncate_a DEFAULT VALUES; SELECT * FROM truncate_a; TRUNCATE truncate_a RESTART IDENTITY; INSERT INTO truncate_a DEFAULT VALUES; INSERT INTO truncate_a DEFAULT VALUES; SELECT * FROM truncate_a; CREATE TABLE truncate_b (id int GENERATED ALWAYS AS IDENTITY (START WITH 44)); INSERT INTO truncate_b DEFAULT VALUES; INSERT INTO truncate_b DEFAULT VALUES; SELECT * FROM truncate_b; TRUNCATE truncate_b; INSERT INTO truncate_b DEFAULT VALUES; INSERT INTO truncate_b DEFAULT VALUES; SELECT * FROM truncate_b; TRUNCATE truncate_b RESTART IDENTITY; INSERT INTO truncate_b DEFAULT VALUES; INSERT INTO truncate_b DEFAULT VALUES; SELECT * FROM truncate_b; -- check rollback of a RESTART IDENTITY operation BEGIN; TRUNCATE truncate_a RESTART IDENTITY; INSERT INTO truncate_a DEFAULT VALUES; SELECT * FROM truncate_a; ROLLBACK; INSERT INTO truncate_a DEFAULT VALUES; INSERT INTO truncate_a DEFAULT VALUES; SELECT * FROM truncate_a; DROP TABLE truncate_a; SELECT nextval('truncate_a_id1'); -- fail, seq should have been dropped -- partitioned table CREATE TABLE truncparted (a int, b char) PARTITION BY LIST (a); -- error, can't truncate a partitioned table TRUNCATE ONLY truncparted; CREATE TABLE truncparted1 PARTITION OF truncparted FOR VALUES IN (1); INSERT INTO truncparted VALUES (1, 'a'); -- error, must truncate partitions TRUNCATE ONLY truncparted; TRUNCATE truncparted; DROP TABLE truncparted; -- foreign key on partitioned table: partition key is referencing column. -- Make sure truncate did execute on all tables CREATE FUNCTION tp_ins_data() RETURNS void LANGUAGE plpgsql AS $$ BEGIN INSERT INTO truncprim VALUES (1), (100), (150); INSERT INTO truncpart VALUES (1), (100), (150); END $$; CREATE FUNCTION tp_chk_data(OUT pktb regclass, OUT pkval int, OUT fktb regclass, OUT fkval int) RETURNS SETOF record LANGUAGE plpgsql AS $$ BEGIN RETURN QUERY SELECT pk.tableoid::regclass, pk.a, fk.tableoid::regclass, fk.a FROM truncprim pk FULL JOIN truncpart fk USING (a) ORDER BY 2, 4; END $$; CREATE TABLE truncprim (a int PRIMARY KEY); CREATE TABLE truncpart (a int REFERENCES truncprim) PARTITION BY RANGE (a); CREATE TABLE truncpart_1 PARTITION OF truncpart FOR VALUES FROM (0) TO (100); CREATE TABLE truncpart_2 PARTITION OF truncpart FOR VALUES FROM (100) TO (200) PARTITION BY RANGE (a); CREATE TABLE truncpart_2_1 PARTITION OF truncpart_2 FOR VALUES FROM (100) TO (150); CREATE TABLE truncpart_2_d PARTITION OF truncpart_2 DEFAULT; TRUNCATE TABLE truncprim; -- should fail select tp_ins_data(); -- should truncate everything TRUNCATE TABLE truncprim, truncpart; select * from tp_chk_data(); select tp_ins_data(); -- should truncate everything TRUNCATE TABLE truncprim CASCADE; SELECT * FROM tp_chk_data(); SELECT tp_ins_data(); -- should truncate all partitions TRUNCATE TABLE truncpart; SELECT * FROM tp_chk_data(); DROP TABLE truncprim, truncpart; DROP FUNCTION tp_ins_data(), tp_chk_data(); -- test cascade when referencing a partitioned table CREATE TABLE trunc_a (a INT PRIMARY KEY) PARTITION BY RANGE (a); CREATE TABLE trunc_a1 PARTITION OF trunc_a FOR VALUES FROM (0) TO (10); CREATE TABLE trunc_a2 PARTITION OF trunc_a FOR VALUES FROM (10) TO (20) PARTITION BY RANGE (a); CREATE TABLE trunc_a21 PARTITION OF trunc_a2 FOR VALUES FROM (10) TO (12); CREATE TABLE trunc_a22 PARTITION OF trunc_a2 FOR VALUES FROM (12) TO (16); CREATE TABLE trunc_a2d PARTITION OF trunc_a2 DEFAULT; CREATE TABLE trunc_a3 PARTITION OF trunc_a FOR VALUES FROM (20) TO (30); INSERT INTO trunc_a VALUES (0), (5), (10), (15), (20), (25); -- truncate a partition cascading to a table CREATE TABLE ref_b ( b INT PRIMARY KEY, a INT REFERENCES trunc_a(a) ON DELETE CASCADE ); INSERT INTO ref_b VALUES (10, 0), (50, 5), (100, 10), (150, 15); TRUNCATE TABLE trunc_a1 CASCADE; SELECT a FROM ref_b; DROP TABLE ref_b; -- truncate a partition cascading to a partitioned table CREATE TABLE ref_c ( c INT PRIMARY KEY, a INT REFERENCES trunc_a(a) ON DELETE CASCADE ) PARTITION BY RANGE (c); CREATE TABLE ref_c1 PARTITION OF ref_c FOR VALUES FROM (100) TO (200); CREATE TABLE ref_c2 PARTITION OF ref_c FOR VALUES FROM (200) TO (300); INSERT INTO ref_c VALUES (100, 10), (150, 15), (200, 20), (250, 25); TRUNCATE TABLE trunc_a21 CASCADE; SELECT a as "from table ref_c" FROM ref_c; SELECT a as "from table trunc_a" FROM trunc_a ORDER BY a; DROP TABLE trunc_a, ref_c; libpg_query-13-2.1.0/test/sql/postgres_regress/tsdicts.sql000066400000000000000000000221331413137616400236400ustar00rootroot00000000000000--Test text search dictionaries and configurations -- Test ISpell dictionary with ispell affix file CREATE TEXT SEARCH DICTIONARY ispell ( Template=ispell, DictFile=ispell_sample, AffFile=ispell_sample ); SELECT ts_lexize('ispell', 'skies'); SELECT ts_lexize('ispell', 'bookings'); SELECT ts_lexize('ispell', 'booking'); SELECT ts_lexize('ispell', 'foot'); SELECT ts_lexize('ispell', 'foots'); SELECT ts_lexize('ispell', 'rebookings'); SELECT ts_lexize('ispell', 'rebooking'); SELECT ts_lexize('ispell', 'rebook'); SELECT ts_lexize('ispell', 'unbookings'); SELECT ts_lexize('ispell', 'unbooking'); SELECT ts_lexize('ispell', 'unbook'); SELECT ts_lexize('ispell', 'footklubber'); SELECT ts_lexize('ispell', 'footballklubber'); SELECT ts_lexize('ispell', 'ballyklubber'); SELECT ts_lexize('ispell', 'footballyklubber'); -- Test ISpell dictionary with hunspell affix file CREATE TEXT SEARCH DICTIONARY hunspell ( Template=ispell, DictFile=ispell_sample, AffFile=hunspell_sample ); SELECT ts_lexize('hunspell', 'skies'); SELECT ts_lexize('hunspell', 'bookings'); SELECT ts_lexize('hunspell', 'booking'); SELECT ts_lexize('hunspell', 'foot'); SELECT ts_lexize('hunspell', 'foots'); SELECT ts_lexize('hunspell', 'rebookings'); SELECT ts_lexize('hunspell', 'rebooking'); SELECT ts_lexize('hunspell', 'rebook'); SELECT ts_lexize('hunspell', 'unbookings'); SELECT ts_lexize('hunspell', 'unbooking'); SELECT ts_lexize('hunspell', 'unbook'); SELECT ts_lexize('hunspell', 'footklubber'); SELECT ts_lexize('hunspell', 'footballklubber'); SELECT ts_lexize('hunspell', 'ballyklubber'); SELECT ts_lexize('hunspell', 'footballyklubber'); -- Test ISpell dictionary with hunspell affix file with FLAG long parameter CREATE TEXT SEARCH DICTIONARY hunspell_long ( Template=ispell, DictFile=hunspell_sample_long, AffFile=hunspell_sample_long ); SELECT ts_lexize('hunspell_long', 'skies'); SELECT ts_lexize('hunspell_long', 'bookings'); SELECT ts_lexize('hunspell_long', 'booking'); SELECT ts_lexize('hunspell_long', 'foot'); SELECT ts_lexize('hunspell_long', 'foots'); SELECT ts_lexize('hunspell_long', 'rebookings'); SELECT ts_lexize('hunspell_long', 'rebooking'); SELECT ts_lexize('hunspell_long', 'rebook'); SELECT ts_lexize('hunspell_long', 'unbookings'); SELECT ts_lexize('hunspell_long', 'unbooking'); SELECT ts_lexize('hunspell_long', 'unbook'); SELECT ts_lexize('hunspell_long', 'booked'); SELECT ts_lexize('hunspell_long', 'footklubber'); SELECT ts_lexize('hunspell_long', 'footballklubber'); SELECT ts_lexize('hunspell_long', 'ballyklubber'); SELECT ts_lexize('hunspell_long', 'ballsklubber'); SELECT ts_lexize('hunspell_long', 'footballyklubber'); SELECT ts_lexize('hunspell_long', 'ex-machina'); -- Test ISpell dictionary with hunspell affix file with FLAG num parameter CREATE TEXT SEARCH DICTIONARY hunspell_num ( Template=ispell, DictFile=hunspell_sample_num, AffFile=hunspell_sample_num ); SELECT ts_lexize('hunspell_num', 'skies'); SELECT ts_lexize('hunspell_num', 'sk'); SELECT ts_lexize('hunspell_num', 'bookings'); SELECT ts_lexize('hunspell_num', 'booking'); SELECT ts_lexize('hunspell_num', 'foot'); SELECT ts_lexize('hunspell_num', 'foots'); SELECT ts_lexize('hunspell_num', 'rebookings'); SELECT ts_lexize('hunspell_num', 'rebooking'); SELECT ts_lexize('hunspell_num', 'rebook'); SELECT ts_lexize('hunspell_num', 'unbookings'); SELECT ts_lexize('hunspell_num', 'unbooking'); SELECT ts_lexize('hunspell_num', 'unbook'); SELECT ts_lexize('hunspell_num', 'booked'); SELECT ts_lexize('hunspell_num', 'footklubber'); SELECT ts_lexize('hunspell_num', 'footballklubber'); SELECT ts_lexize('hunspell_num', 'ballyklubber'); SELECT ts_lexize('hunspell_num', 'footballyklubber'); -- Test suitability of affix and dict files CREATE TEXT SEARCH DICTIONARY hunspell_err ( Template=ispell, DictFile=ispell_sample, AffFile=hunspell_sample_long ); CREATE TEXT SEARCH DICTIONARY hunspell_err ( Template=ispell, DictFile=ispell_sample, AffFile=hunspell_sample_num ); CREATE TEXT SEARCH DICTIONARY hunspell_invalid_1 ( Template=ispell, DictFile=hunspell_sample_long, AffFile=ispell_sample ); CREATE TEXT SEARCH DICTIONARY hunspell_invalid_2 ( Template=ispell, DictFile=hunspell_sample_long, AffFile=hunspell_sample_num ); CREATE TEXT SEARCH DICTIONARY hunspell_invalid_3 ( Template=ispell, DictFile=hunspell_sample_num, AffFile=ispell_sample ); CREATE TEXT SEARCH DICTIONARY hunspell_err ( Template=ispell, DictFile=hunspell_sample_num, AffFile=hunspell_sample_long ); -- Synonym dictionary CREATE TEXT SEARCH DICTIONARY synonym ( Template=synonym, Synonyms=synonym_sample ); SELECT ts_lexize('synonym', 'PoStGrEs'); SELECT ts_lexize('synonym', 'Gogle'); SELECT ts_lexize('synonym', 'indices'); -- test altering boolean parameters SELECT dictinitoption FROM pg_ts_dict WHERE dictname = 'synonym'; ALTER TEXT SEARCH DICTIONARY synonym (CaseSensitive = 1); SELECT ts_lexize('synonym', 'PoStGrEs'); SELECT dictinitoption FROM pg_ts_dict WHERE dictname = 'synonym'; ALTER TEXT SEARCH DICTIONARY synonym (CaseSensitive = 2); -- fail ALTER TEXT SEARCH DICTIONARY synonym (CaseSensitive = off); SELECT ts_lexize('synonym', 'PoStGrEs'); SELECT dictinitoption FROM pg_ts_dict WHERE dictname = 'synonym'; -- Create and simple test thesaurus dictionary -- More tests in configuration checks because ts_lexize() -- cannot pass more than one word to thesaurus. CREATE TEXT SEARCH DICTIONARY thesaurus ( Template=thesaurus, DictFile=thesaurus_sample, Dictionary=english_stem ); SELECT ts_lexize('thesaurus', 'one'); -- Test ispell dictionary in configuration CREATE TEXT SEARCH CONFIGURATION ispell_tst ( COPY=english ); ALTER TEXT SEARCH CONFIGURATION ispell_tst ALTER MAPPING FOR word, numword, asciiword, hword, numhword, asciihword, hword_part, hword_numpart, hword_asciipart WITH ispell, english_stem; SELECT to_tsvector('ispell_tst', 'Booking the skies after rebookings for footballklubber from a foot'); SELECT to_tsquery('ispell_tst', 'footballklubber'); SELECT to_tsquery('ispell_tst', 'footballyklubber:b & rebookings:A & sky'); -- Test ispell dictionary with hunspell affix in configuration CREATE TEXT SEARCH CONFIGURATION hunspell_tst ( COPY=ispell_tst ); ALTER TEXT SEARCH CONFIGURATION hunspell_tst ALTER MAPPING REPLACE ispell WITH hunspell; SELECT to_tsvector('hunspell_tst', 'Booking the skies after rebookings for footballklubber from a foot'); SELECT to_tsquery('hunspell_tst', 'footballklubber'); SELECT to_tsquery('hunspell_tst', 'footballyklubber:b & rebookings:A & sky'); SELECT to_tsquery('hunspell_tst', 'footballyklubber:b <-> sky'); SELECT phraseto_tsquery('hunspell_tst', 'footballyklubber sky'); -- Test ispell dictionary with hunspell affix with FLAG long in configuration ALTER TEXT SEARCH CONFIGURATION hunspell_tst ALTER MAPPING REPLACE hunspell WITH hunspell_long; SELECT to_tsvector('hunspell_tst', 'Booking the skies after rebookings for footballklubber from a foot'); SELECT to_tsquery('hunspell_tst', 'footballklubber'); SELECT to_tsquery('hunspell_tst', 'footballyklubber:b & rebookings:A & sky'); -- Test ispell dictionary with hunspell affix with FLAG num in configuration ALTER TEXT SEARCH CONFIGURATION hunspell_tst ALTER MAPPING REPLACE hunspell_long WITH hunspell_num; SELECT to_tsvector('hunspell_tst', 'Booking the skies after rebookings for footballklubber from a foot'); SELECT to_tsquery('hunspell_tst', 'footballklubber'); SELECT to_tsquery('hunspell_tst', 'footballyklubber:b & rebookings:A & sky'); -- Test synonym dictionary in configuration CREATE TEXT SEARCH CONFIGURATION synonym_tst ( COPY=english ); ALTER TEXT SEARCH CONFIGURATION synonym_tst ALTER MAPPING FOR asciiword, hword_asciipart, asciihword WITH synonym, english_stem; SELECT to_tsvector('synonym_tst', 'Postgresql is often called as postgres or pgsql and pronounced as postgre'); SELECT to_tsvector('synonym_tst', 'Most common mistake is to write Gogle instead of Google'); SELECT to_tsvector('synonym_tst', 'Indexes or indices - Which is right plural form of index?'); SELECT to_tsquery('synonym_tst', 'Index & indices'); -- test thesaurus in configuration -- see thesaurus_sample.ths to understand 'odd' resulting tsvector CREATE TEXT SEARCH CONFIGURATION thesaurus_tst ( COPY=synonym_tst ); ALTER TEXT SEARCH CONFIGURATION thesaurus_tst ALTER MAPPING FOR asciiword, hword_asciipart, asciihword WITH synonym, thesaurus, english_stem; SELECT to_tsvector('thesaurus_tst', 'one postgres one two one two three one'); SELECT to_tsvector('thesaurus_tst', 'Supernovae star is very new star and usually called supernovae (abbreviation SN)'); SELECT to_tsvector('thesaurus_tst', 'Booking tickets is looking like a booking a tickets'); -- invalid: non-lowercase quoted identifiers CREATE TEXT SEARCH DICTIONARY tsdict_case ( Template = ispell, "DictFile" = ispell_sample, "AffFile" = ispell_sample ); libpg_query-13-2.1.0/test/sql/postgres_regress/tsearch.sql000066400000000000000000001046721413137616400236250ustar00rootroot00000000000000-- -- Sanity checks for text search catalogs -- -- NB: we assume the oidjoins test will have caught any dangling links, -- that is OID or REGPROC fields that are not zero and do not match some -- row in the linked-to table. However, if we want to enforce that a link -- field can't be 0, we have to check it here. -- Find unexpected zero link entries SELECT oid, prsname FROM pg_ts_parser WHERE prsnamespace = 0 OR prsstart = 0 OR prstoken = 0 OR prsend = 0 OR -- prsheadline is optional prslextype = 0; SELECT oid, dictname FROM pg_ts_dict WHERE dictnamespace = 0 OR dictowner = 0 OR dicttemplate = 0; SELECT oid, tmplname FROM pg_ts_template WHERE tmplnamespace = 0 OR tmpllexize = 0; -- tmplinit is optional SELECT oid, cfgname FROM pg_ts_config WHERE cfgnamespace = 0 OR cfgowner = 0 OR cfgparser = 0; SELECT mapcfg, maptokentype, mapseqno FROM pg_ts_config_map WHERE mapcfg = 0 OR mapdict = 0; -- Look for pg_ts_config_map entries that aren't one of parser's token types SELECT * FROM ( SELECT oid AS cfgid, (ts_token_type(cfgparser)).tokid AS tokid FROM pg_ts_config ) AS tt RIGHT JOIN pg_ts_config_map AS m ON (tt.cfgid=m.mapcfg AND tt.tokid=m.maptokentype) WHERE tt.cfgid IS NULL OR tt.tokid IS NULL; -- test basic text search behavior without indexes, then with SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); SELECT count(*) FROM test_tsvector WHERE a @@ 'no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ '!no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ 'pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ 'qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> !yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ '!qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(pl <-> yh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(yh <-> pl)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(qe <2> qt)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:D'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:D'; create index wowidx on test_tsvector using gist (a); SET enable_seqscan=OFF; SET enable_indexscan=ON; SET enable_bitmapscan=OFF; explain (costs off) SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); SELECT count(*) FROM test_tsvector WHERE a @@ 'no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ '!no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ 'pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ 'qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> !yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ '!qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(pl <-> yh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(yh <-> pl)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(qe <2> qt)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:D'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:D'; SET enable_indexscan=OFF; SET enable_bitmapscan=ON; explain (costs off) SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); SELECT count(*) FROM test_tsvector WHERE a @@ 'no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ '!no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ 'pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ 'qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> !yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ '!qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(pl <-> yh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(yh <-> pl)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(qe <2> qt)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:D'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:D'; -- Test siglen parameter of GiST tsvector_ops CREATE INDEX wowidx1 ON test_tsvector USING gist (a tsvector_ops(foo=1)); CREATE INDEX wowidx1 ON test_tsvector USING gist (a tsvector_ops(siglen=0)); CREATE INDEX wowidx1 ON test_tsvector USING gist (a tsvector_ops(siglen=2048)); CREATE INDEX wowidx1 ON test_tsvector USING gist (a tsvector_ops(siglen=100,foo='bar')); CREATE INDEX wowidx1 ON test_tsvector USING gist (a tsvector_ops(siglen=100, siglen = 200)); CREATE INDEX wowidx2 ON test_tsvector USING gist (a tsvector_ops(siglen=1)); \d test_tsvector DROP INDEX wowidx; EXPLAIN (costs off) SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); SELECT count(*) FROM test_tsvector WHERE a @@ 'no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ '!no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ 'pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ 'qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> !yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ '!qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(pl <-> yh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(yh <-> pl)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(qe <2> qt)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:D'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:D'; DROP INDEX wowidx2; CREATE INDEX wowidx ON test_tsvector USING gist (a tsvector_ops(siglen=484)); \d test_tsvector EXPLAIN (costs off) SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); SELECT count(*) FROM test_tsvector WHERE a @@ 'no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ '!no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ 'pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ 'qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> !yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ '!qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(pl <-> yh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(yh <-> pl)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(qe <2> qt)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:D'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:D'; RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; DROP INDEX wowidx; CREATE INDEX wowidx ON test_tsvector USING gin (a); SET enable_seqscan=OFF; -- GIN only supports bitmapscan, so no need to test plain indexscan explain (costs off) SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr|qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr&qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq&yt'; SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); SELECT count(*) FROM test_tsvector WHERE a @@ 'no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ '!no_such_lexeme'; SELECT count(*) FROM test_tsvector WHERE a @@ 'pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ 'qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!pl <-> !yh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!yh <-> pl'; SELECT count(*) FROM test_tsvector WHERE a @@ '!qe <2> qt'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(pl <-> yh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(yh <-> pl)'; SELECT count(*) FROM test_tsvector WHERE a @@ '!(qe <2> qt)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wd:D'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:A'; SELECT count(*) FROM test_tsvector WHERE a @@ '!wd:D'; -- Test optimization of non-empty GIN_SEARCH_MODE_ALL queries EXPLAIN (COSTS OFF) SELECT count(*) FROM test_tsvector WHERE a @@ '!qh'; SELECT count(*) FROM test_tsvector WHERE a @@ '!qh'; EXPLAIN (COSTS OFF) SELECT count(*) FROM test_tsvector WHERE a @@ 'wr' AND a @@ '!qh'; SELECT count(*) FROM test_tsvector WHERE a @@ 'wr' AND a @@ '!qh'; RESET enable_seqscan; INSERT INTO test_tsvector VALUES ('???', 'DFG:1A,2B,6C,10 FGH'); SELECT * FROM ts_stat('SELECT a FROM test_tsvector') ORDER BY ndoc DESC, nentry DESC, word LIMIT 10; SELECT * FROM ts_stat('SELECT a FROM test_tsvector', 'AB') ORDER BY ndoc DESC, nentry DESC, word; --dictionaries and to_tsvector SELECT ts_lexize('english_stem', 'skies'); SELECT ts_lexize('english_stem', 'identity'); SELECT * FROM ts_token_type('default'); SELECT * FROM ts_parse('default', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net teodor@123-stack.net 123_teodor@stack.net 123-teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty'); SELECT to_tsvector('english', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net teodor@123-stack.net 123_teodor@stack.net 123-teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty'); SELECT length(to_tsvector('english', '345 qwe@efd.r '' http://www.com/ http://aew.werc.ewr/?ad=qwe&dw 1aew.werc.ewr/?ad=qwe&dw 2aew.werc.ewr http://3aew.werc.ewr/?ad=qwe&dw http://4aew.werc.ewr http://5aew.werc.ewr:8100/? ad=qwe&dw 6aew.werc.ewr:8100/?ad=qwe&dw 7aew.werc.ewr:8100/?ad=qwe&dw=%20%32 +4.0e-10 qwe qwe qwqwe 234.435 455 5.005 teodor@stack.net teodor@123-stack.net 123_teodor@stack.net 123-teodor@stack.net qwe-wer asdf qwer jf sdjk ewr1> ewri2 /usr/local/fff /awdf/dwqe/4325 rewt/ewr wefjn /wqe-324/ewr gist.h gist.h.c gist.c. readline 4.2 4.2. 4.2, readline-4.2 readline-4.2. 234 wow < jqw <> qwerty')); -- ts_debug SELECT * from ts_debug('english', 'abc&nm1;def©ghiõjkl'); -- check parsing of URLs SELECT * from ts_debug('english', 'http://www.harewoodsolutions.co.uk/press.aspx'); SELECT * from ts_debug('english', 'http://aew.wer0c.ewr/id?ad=qwe&dw'); SELECT * from ts_debug('english', 'http://5aew.werc.ewr:8100/?'); SELECT * from ts_debug('english', '5aew.werc.ewr:8100/?xx'); SELECT token, alias, dictionaries, dictionaries is null as dnull, array_dims(dictionaries) as ddims, lexemes, lexemes is null as lnull, array_dims(lexemes) as ldims from ts_debug('english', 'a title'); -- to_tsquery SELECT to_tsquery('english', 'qwe & sKies '); SELECT to_tsquery('simple', 'qwe & sKies '); SELECT to_tsquery('english', '''the wether'':dc & '' sKies '':BC '); SELECT to_tsquery('english', 'asd&(and|fghj)'); SELECT to_tsquery('english', '(asd&and)|fghj'); SELECT to_tsquery('english', '(asd&!and)|fghj'); SELECT to_tsquery('english', '(the|and&(i&1))&fghj'); SELECT plainto_tsquery('english', 'the and z 1))& fghj'); SELECT plainto_tsquery('english', 'foo bar') && plainto_tsquery('english', 'asd'); SELECT plainto_tsquery('english', 'foo bar') || plainto_tsquery('english', 'asd fg'); SELECT plainto_tsquery('english', 'foo bar') || !!plainto_tsquery('english', 'asd fg'); SELECT plainto_tsquery('english', 'foo bar') && 'asd | fg'; -- Check stop word deletion, a and s are stop-words SELECT to_tsquery('english', '!(a & !b) & c'); SELECT to_tsquery('english', '!(a & !b)'); SELECT to_tsquery('english', '(1 <-> 2) <-> a'); SELECT to_tsquery('english', '(1 <-> a) <-> 2'); SELECT to_tsquery('english', '(a <-> 1) <-> 2'); SELECT to_tsquery('english', 'a <-> (1 <-> 2)'); SELECT to_tsquery('english', '1 <-> (a <-> 2)'); SELECT to_tsquery('english', '1 <-> (2 <-> a)'); SELECT to_tsquery('english', '(1 <-> 2) <3> a'); SELECT to_tsquery('english', '(1 <-> a) <3> 2'); SELECT to_tsquery('english', '(a <-> 1) <3> 2'); SELECT to_tsquery('english', 'a <3> (1 <-> 2)'); SELECT to_tsquery('english', '1 <3> (a <-> 2)'); SELECT to_tsquery('english', '1 <3> (2 <-> a)'); SELECT to_tsquery('english', '(1 <3> 2) <-> a'); SELECT to_tsquery('english', '(1 <3> a) <-> 2'); SELECT to_tsquery('english', '(a <3> 1) <-> 2'); SELECT to_tsquery('english', 'a <-> (1 <3> 2)'); SELECT to_tsquery('english', '1 <-> (a <3> 2)'); SELECT to_tsquery('english', '1 <-> (2 <3> a)'); SELECT to_tsquery('english', '((a <-> 1) <-> 2) <-> s'); SELECT to_tsquery('english', '(2 <-> (a <-> 1)) <-> s'); SELECT to_tsquery('english', '((1 <-> a) <-> 2) <-> s'); SELECT to_tsquery('english', '(2 <-> (1 <-> a)) <-> s'); SELECT to_tsquery('english', 's <-> ((a <-> 1) <-> 2)'); SELECT to_tsquery('english', 's <-> (2 <-> (a <-> 1))'); SELECT to_tsquery('english', 's <-> ((1 <-> a) <-> 2)'); SELECT to_tsquery('english', 's <-> (2 <-> (1 <-> a))'); SELECT to_tsquery('english', '((a <-> 1) <-> s) <-> 2'); SELECT to_tsquery('english', '(s <-> (a <-> 1)) <-> 2'); SELECT to_tsquery('english', '((1 <-> a) <-> s) <-> 2'); SELECT to_tsquery('english', '(s <-> (1 <-> a)) <-> 2'); SELECT to_tsquery('english', '2 <-> ((a <-> 1) <-> s)'); SELECT to_tsquery('english', '2 <-> (s <-> (a <-> 1))'); SELECT to_tsquery('english', '2 <-> ((1 <-> a) <-> s)'); SELECT to_tsquery('english', '2 <-> (s <-> (1 <-> a))'); SELECT to_tsquery('english', 'foo <-> (a <-> (the <-> bar))'); SELECT to_tsquery('english', '((foo <-> a) <-> the) <-> bar'); SELECT to_tsquery('english', 'foo <-> a <-> the <-> bar'); SELECT phraseto_tsquery('english', 'PostgreSQL can be extended by the user in many ways'); SELECT ts_rank_cd(to_tsvector('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) '), to_tsquery('english', 'paint&water')); SELECT ts_rank_cd(to_tsvector('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) '), to_tsquery('english', 'breath&motion&water')); SELECT ts_rank_cd(to_tsvector('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) '), to_tsquery('english', 'ocean')); SELECT ts_rank_cd(to_tsvector('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) '), to_tsquery('english', 'painted <-> Ship')); SELECT ts_rank_cd(strip(to_tsvector('both stripped')), to_tsquery('both & stripped')); SELECT ts_rank_cd(to_tsvector('unstripped') || strip(to_tsvector('stripped')), to_tsquery('unstripped & stripped')); --headline tests SELECT ts_headline('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) ', to_tsquery('english', 'paint&water')); SELECT ts_headline('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) ', to_tsquery('english', 'breath&motion&water')); SELECT ts_headline('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) ', to_tsquery('english', 'ocean')); SELECT ts_headline('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) ', phraseto_tsquery('english', 'painted Ocean')); SELECT ts_headline('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) ', phraseto_tsquery('english', 'idle as a painted Ship')); SELECT ts_headline('english', 'Lorem ipsum urna. Nullam nullam ullamcorper urna.', to_tsquery('english','Lorem') && phraseto_tsquery('english','ullamcorper urna'), 'MaxWords=100, MinWords=1'); SELECT ts_headline('english', ' Sea view wow foo bar qq YES   ff-bg ', to_tsquery('english', 'sea&foo'), 'HighlightAll=true'); SELECT ts_headline('simple', '1 2 3 1 3'::text, '1 <-> 3', 'MaxWords=2, MinWords=1'); SELECT ts_headline('simple', '1 2 3 1 3'::text, '1 & 3', 'MaxWords=4, MinWords=1'); SELECT ts_headline('simple', '1 2 3 1 3'::text, '1 <-> 3', 'MaxWords=4, MinWords=1'); --Check if headline fragments work SELECT ts_headline('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) ', to_tsquery('english', 'ocean'), 'MaxFragments=1'); --Check if more than one fragments are displayed SELECT ts_headline('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) ', to_tsquery('english', 'Coleridge & stuck'), 'MaxFragments=2'); --Fragments when there all query words are not in the document SELECT ts_headline('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) ', to_tsquery('english', 'ocean & seahorse'), 'MaxFragments=1'); --FragmentDelimiter option SELECT ts_headline('english', ' Day after day, day after day, We stuck, nor breath nor motion, As idle as a painted Ship Upon a painted Ocean. Water, water, every where And all the boards did shrink; Water, water, every where, Nor any drop to drink. S. T. Coleridge (1772-1834) ', to_tsquery('english', 'Coleridge & stuck'), 'MaxFragments=2,FragmentDelimiter=***'); --Fragments with phrase search SELECT ts_headline('english', 'Lorem ipsum urna. Nullam nullam ullamcorper urna.', to_tsquery('english','Lorem') && phraseto_tsquery('english','ullamcorper urna'), 'MaxFragments=100, MaxWords=100, MinWords=1'); --Rewrite sub system CREATE TABLE test_tsquery (txtkeyword TEXT, txtsample TEXT); \set ECHO none \copy test_tsquery from stdin 'New York' new & york | big & apple | nyc Moscow moskva | moscow 'Sanct Peter' Peterburg | peter | 'Sanct Peterburg' 'foo bar qq' foo & (bar | qq) & city 1 & (2 <-> 3) 2 <-> 4 5 <-> 6 5 <-> 7 \. \set ECHO all ALTER TABLE test_tsquery ADD COLUMN keyword tsquery; UPDATE test_tsquery SET keyword = to_tsquery('english', txtkeyword); ALTER TABLE test_tsquery ADD COLUMN sample tsquery; UPDATE test_tsquery SET sample = to_tsquery('english', txtsample::text); SELECT COUNT(*) FROM test_tsquery WHERE keyword < 'new & york'; SELECT COUNT(*) FROM test_tsquery WHERE keyword <= 'new & york'; SELECT COUNT(*) FROM test_tsquery WHERE keyword = 'new & york'; SELECT COUNT(*) FROM test_tsquery WHERE keyword >= 'new & york'; SELECT COUNT(*) FROM test_tsquery WHERE keyword > 'new & york'; CREATE UNIQUE INDEX bt_tsq ON test_tsquery (keyword); SET enable_seqscan=OFF; SELECT COUNT(*) FROM test_tsquery WHERE keyword < 'new & york'; SELECT COUNT(*) FROM test_tsquery WHERE keyword <= 'new & york'; SELECT COUNT(*) FROM test_tsquery WHERE keyword = 'new & york'; SELECT COUNT(*) FROM test_tsquery WHERE keyword >= 'new & york'; SELECT COUNT(*) FROM test_tsquery WHERE keyword > 'new & york'; RESET enable_seqscan; SELECT ts_rewrite('foo & bar & qq & new & york', 'new & york'::tsquery, 'big & apple | nyc | new & york & city'); SELECT ts_rewrite(ts_rewrite('new & !york ', 'york', '!jersey'), 'jersey', 'mexico'); SELECT ts_rewrite('moscow', 'SELECT keyword, sample FROM test_tsquery'::text ); SELECT ts_rewrite('moscow & hotel', 'SELECT keyword, sample FROM test_tsquery'::text ); SELECT ts_rewrite('bar & new & qq & foo & york', 'SELECT keyword, sample FROM test_tsquery'::text ); SELECT ts_rewrite( 'moscow', 'SELECT keyword, sample FROM test_tsquery'); SELECT ts_rewrite( 'moscow & hotel', 'SELECT keyword, sample FROM test_tsquery'); SELECT ts_rewrite( 'bar & new & qq & foo & york', 'SELECT keyword, sample FROM test_tsquery'); SELECT ts_rewrite('1 & (2 <-> 3)', 'SELECT keyword, sample FROM test_tsquery'::text ); SELECT ts_rewrite('1 & (2 <2> 3)', 'SELECT keyword, sample FROM test_tsquery'::text ); SELECT ts_rewrite('5 <-> (1 & (2 <-> 3))', 'SELECT keyword, sample FROM test_tsquery'::text ); SELECT ts_rewrite('5 <-> (6 | 8)', 'SELECT keyword, sample FROM test_tsquery'::text ); -- Check empty substitution SELECT ts_rewrite(to_tsquery('5 & (6 | 5)'), to_tsquery('5'), to_tsquery('')); SELECT ts_rewrite(to_tsquery('!5'), to_tsquery('5'), to_tsquery('')); SELECT keyword FROM test_tsquery WHERE keyword @> 'new'; SELECT keyword FROM test_tsquery WHERE keyword @> 'moscow'; SELECT keyword FROM test_tsquery WHERE keyword <@ 'new'; SELECT keyword FROM test_tsquery WHERE keyword <@ 'moscow'; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar & new & qq & foo & york') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar & new & qq & foo & york') AS query; CREATE INDEX qq ON test_tsquery USING gist (keyword tsquery_ops); SET enable_seqscan=OFF; SELECT keyword FROM test_tsquery WHERE keyword @> 'new'; SELECT keyword FROM test_tsquery WHERE keyword @> 'moscow'; SELECT keyword FROM test_tsquery WHERE keyword <@ 'new'; SELECT keyword FROM test_tsquery WHERE keyword <@ 'moscow'; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar & new & qq & foo & york') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'moscow & hotel') AS query; SELECT ts_rewrite( query, 'SELECT keyword, sample FROM test_tsquery' ) FROM to_tsquery('english', 'bar & new & qq & foo & york') AS query; SELECT ts_rewrite(tsquery_phrase('foo', 'foo'), 'foo', 'bar | baz'); SELECT to_tsvector('foo bar') @@ ts_rewrite(tsquery_phrase('foo', 'foo'), 'foo', 'bar | baz'); SELECT to_tsvector('bar baz') @@ ts_rewrite(tsquery_phrase('foo', 'foo'), 'foo', 'bar | baz'); RESET enable_seqscan; --test GUC SET default_text_search_config=simple; SELECT to_tsvector('SKIES My booKs'); SELECT plainto_tsquery('SKIES My booKs'); SELECT to_tsquery('SKIES & My | booKs'); SET default_text_search_config=english; SELECT to_tsvector('SKIES My booKs'); SELECT plainto_tsquery('SKIES My booKs'); SELECT to_tsquery('SKIES & My | booKs'); --trigger CREATE TRIGGER tsvectorupdate BEFORE UPDATE OR INSERT ON test_tsvector FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(a, 'pg_catalog.english', t); SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty'); INSERT INTO test_tsvector (t) VALUES ('345 qwerty'); SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty'); UPDATE test_tsvector SET t = null WHERE t = '345 qwerty'; SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty'); INSERT INTO test_tsvector (t) VALUES ('345 qwerty'); SELECT count(*) FROM test_tsvector WHERE a @@ to_tsquery('345&qwerty'); -- Test inlining of immutable constant functions -- to_tsquery(text) is not immutable, so it won't be inlined explain (costs off) select * from test_tsquery, to_tsquery('new') q where txtsample @@ q; -- to_tsquery(regconfig, text) is an immutable function. -- That allows us to get rid of using function scan and join at all. explain (costs off) select * from test_tsquery, to_tsquery('english', 'new') q where txtsample @@ q; -- test finding items in GIN's pending list create temp table pendtest (ts tsvector); create index pendtest_idx on pendtest using gin(ts); insert into pendtest values (to_tsvector('Lore ipsam')); insert into pendtest values (to_tsvector('Lore ipsum')); select * from pendtest where 'ipsu:*'::tsquery @@ ts; select * from pendtest where 'ipsa:*'::tsquery @@ ts; select * from pendtest where 'ips:*'::tsquery @@ ts; select * from pendtest where 'ipt:*'::tsquery @@ ts; select * from pendtest where 'ipi:*'::tsquery @@ ts; --check OP_PHRASE on index create temp table phrase_index_test(fts tsvector); insert into phrase_index_test values ('A fat cat has just eaten a rat.'); insert into phrase_index_test values (to_tsvector('english', 'A fat cat has just eaten a rat.')); create index phrase_index_test_idx on phrase_index_test using gin(fts); set enable_seqscan = off; select * from phrase_index_test where fts @@ phraseto_tsquery('english', 'fat cat'); set enable_seqscan = on; -- test websearch_to_tsquery function select websearch_to_tsquery('simple', 'I have a fat:*ABCD cat'); select websearch_to_tsquery('simple', 'orange:**AABBCCDD'); select websearch_to_tsquery('simple', 'fat:A!cat:B|rat:C<'); select websearch_to_tsquery('simple', 'fat:A : cat:B'); select websearch_to_tsquery('simple', 'fat*rat'); select websearch_to_tsquery('simple', 'fat-rat'); select websearch_to_tsquery('simple', 'fat_rat'); -- weights are completely ignored select websearch_to_tsquery('simple', 'abc : def'); select websearch_to_tsquery('simple', 'abc:def'); select websearch_to_tsquery('simple', 'a:::b'); select websearch_to_tsquery('simple', 'abc:d'); select websearch_to_tsquery('simple', ':'); -- these operators are ignored select websearch_to_tsquery('simple', 'abc & def'); select websearch_to_tsquery('simple', 'abc | def'); select websearch_to_tsquery('simple', 'abc <-> def'); select websearch_to_tsquery('simple', 'abc (pg or class)'); -- NOT is ignored in quotes select websearch_to_tsquery('english', 'My brand new smartphone'); select websearch_to_tsquery('english', 'My brand "new smartphone"'); select websearch_to_tsquery('english', 'My brand "new -smartphone"'); -- test OR operator select websearch_to_tsquery('simple', 'cat or rat'); select websearch_to_tsquery('simple', 'cat OR rat'); select websearch_to_tsquery('simple', 'cat "OR" rat'); select websearch_to_tsquery('simple', 'cat OR'); select websearch_to_tsquery('simple', 'OR rat'); select websearch_to_tsquery('simple', '"fat cat OR rat"'); select websearch_to_tsquery('simple', 'fat (cat OR rat'); select websearch_to_tsquery('simple', 'or OR or'); -- OR is an operator here ... select websearch_to_tsquery('simple', '"fat cat"or"fat rat"'); select websearch_to_tsquery('simple', 'fat or(rat'); select websearch_to_tsquery('simple', 'fat or)rat'); select websearch_to_tsquery('simple', 'fat or&rat'); select websearch_to_tsquery('simple', 'fat or|rat'); select websearch_to_tsquery('simple', 'fat or!rat'); select websearch_to_tsquery('simple', 'fat orrat'); select websearch_to_tsquery('simple', 'fat or '); -- ... but not here select websearch_to_tsquery('simple', 'abc orange'); select websearch_to_tsquery('simple', 'abc OR1234'); select websearch_to_tsquery('simple', 'abc or-abc'); select websearch_to_tsquery('simple', 'abc OR_abc'); -- test quotes select websearch_to_tsquery('english', '"pg_class pg'); select websearch_to_tsquery('english', 'pg_class pg"'); select websearch_to_tsquery('english', '"pg_class pg"'); select websearch_to_tsquery('english', 'abc "pg_class pg"'); select websearch_to_tsquery('english', '"pg_class pg" def'); select websearch_to_tsquery('english', 'abc "pg pg_class pg" def'); select websearch_to_tsquery('english', ' or "pg pg_class pg" or '); select websearch_to_tsquery('english', '""pg pg_class pg""'); select websearch_to_tsquery('english', 'abc """"" def'); select websearch_to_tsquery('english', 'cat -"fat rat"'); select websearch_to_tsquery('english', 'cat -"fat rat" cheese'); select websearch_to_tsquery('english', 'abc "def -"'); select websearch_to_tsquery('english', 'abc "def :"'); select websearch_to_tsquery('english', '"A fat cat" has just eaten a -rat.'); select websearch_to_tsquery('english', '"A fat cat" has just eaten OR !rat.'); select websearch_to_tsquery('english', '"A fat cat" has just (+eaten OR -rat)'); select websearch_to_tsquery('english', 'this is ----fine'); select websearch_to_tsquery('english', '(()) )))) this ||| is && -fine, "dear friend" OR good'); select websearch_to_tsquery('english', 'an old <-> cat " is fine &&& too'); select websearch_to_tsquery('english', '"A the" OR just on'); select websearch_to_tsquery('english', '"a fat cat" ate a rat'); select to_tsvector('english', 'A fat cat ate a rat') @@ websearch_to_tsquery('english', '"a fat cat" ate a rat'); select to_tsvector('english', 'A fat grey cat ate a rat') @@ websearch_to_tsquery('english', '"a fat cat" ate a rat'); -- cases handled by gettoken_tsvector() select websearch_to_tsquery(''''); select websearch_to_tsquery('''abc''''def'''); select websearch_to_tsquery('\abc'); select websearch_to_tsquery('\'); libpg_query-13-2.1.0/test/sql/postgres_regress/tsrf.sql000066400000000000000000000173551413137616400231530ustar00rootroot00000000000000-- -- tsrf - targetlist set returning function tests -- -- simple srf SELECT generate_series(1, 3); -- parallel iteration SELECT generate_series(1, 3), generate_series(3,5); -- parallel iteration, different number of rows SELECT generate_series(1, 2), generate_series(1,4); -- srf, with SRF argument SELECT generate_series(1, generate_series(1, 3)); -- but we've traditionally rejected the same in FROM SELECT * FROM generate_series(1, generate_series(1, 3)); -- srf, with two SRF arguments SELECT generate_series(generate_series(1,3), generate_series(2, 4)); -- check proper nesting of SRFs in different expressions explain (verbose, costs off) SELECT generate_series(1, generate_series(1, 3)), generate_series(2, 4); SELECT generate_series(1, generate_series(1, 3)), generate_series(2, 4); CREATE TABLE few(id int, dataa text, datab text); INSERT INTO few VALUES(1, 'a', 'foo'),(2, 'a', 'bar'),(3, 'b', 'bar'); -- SRF with a provably-dummy relation explain (verbose, costs off) SELECT unnest(ARRAY[1, 2]) FROM few WHERE false; SELECT unnest(ARRAY[1, 2]) FROM few WHERE false; -- SRF shouldn't prevent upper query from recognizing lower as dummy explain (verbose, costs off) SELECT * FROM few f1, (SELECT unnest(ARRAY[1,2]) FROM few f2 WHERE false OFFSET 0) ss; SELECT * FROM few f1, (SELECT unnest(ARRAY[1,2]) FROM few f2 WHERE false OFFSET 0) ss; -- SRF output order of sorting is maintained, if SRF is not referenced SELECT few.id, generate_series(1,3) g FROM few ORDER BY id DESC; -- but SRFs can be referenced in sort SELECT few.id, generate_series(1,3) g FROM few ORDER BY id, g DESC; SELECT few.id, generate_series(1,3) g FROM few ORDER BY id, generate_series(1,3) DESC; -- it's weird to have ORDER BYs that increase the number of results SELECT few.id FROM few ORDER BY id, generate_series(1,3) DESC; -- SRFs are computed after aggregation SET enable_hashagg TO 0; -- stable output order SELECT few.dataa, count(*), min(id), max(id), unnest('{1,1,3}'::int[]) FROM few WHERE few.id = 1 GROUP BY few.dataa; -- unless referenced in GROUP BY clause SELECT few.dataa, count(*), min(id), max(id), unnest('{1,1,3}'::int[]) FROM few WHERE few.id = 1 GROUP BY few.dataa, unnest('{1,1,3}'::int[]); SELECT few.dataa, count(*), min(id), max(id), unnest('{1,1,3}'::int[]) FROM few WHERE few.id = 1 GROUP BY few.dataa, 5; RESET enable_hashagg; -- check HAVING works when GROUP BY does [not] reference SRF output SELECT dataa, generate_series(1,1), count(*) FROM few GROUP BY 1 HAVING count(*) > 1; SELECT dataa, generate_series(1,1), count(*) FROM few GROUP BY 1, 2 HAVING count(*) > 1; -- it's weird to have GROUP BYs that increase the number of results SELECT few.dataa, count(*) FROM few WHERE dataa = 'a' GROUP BY few.dataa ORDER BY 2; SELECT few.dataa, count(*) FROM few WHERE dataa = 'a' GROUP BY few.dataa, unnest('{1,1,3}'::int[]) ORDER BY 2; -- SRFs are not allowed if they'd need to be conditionally executed SELECT q1, case when q1 > 0 then generate_series(1,3) else 0 end FROM int8_tbl; SELECT q1, coalesce(generate_series(1,3), 0) FROM int8_tbl; -- SRFs are not allowed in aggregate arguments SELECT min(generate_series(1, 3)) FROM few; -- ... unless they're within a sub-select SELECT sum((3 = ANY(SELECT generate_series(1,4)))::int); SELECT sum((3 = ANY(SELECT lag(x) over(order by x) FROM generate_series(1,4) x))::int); -- SRFs are not allowed in window function arguments, either SELECT min(generate_series(1, 3)) OVER() FROM few; -- SRFs are normally computed after window functions SELECT id,lag(id) OVER(), count(*) OVER(), generate_series(1,3) FROM few; -- unless referencing SRFs SELECT SUM(count(*)) OVER(PARTITION BY generate_series(1,3) ORDER BY generate_series(1,3)), generate_series(1,3) g FROM few GROUP BY g; -- sorting + grouping SELECT few.dataa, count(*), min(id), max(id), generate_series(1,3) FROM few GROUP BY few.dataa ORDER BY 5, 1; -- grouping sets are a bit special, they produce NULLs in columns not actually NULL set enable_hashagg = false; SELECT dataa, datab b, generate_series(1,2) g, count(*) FROM few GROUP BY CUBE(dataa, datab); SELECT dataa, datab b, generate_series(1,2) g, count(*) FROM few GROUP BY CUBE(dataa, datab) ORDER BY dataa; SELECT dataa, datab b, generate_series(1,2) g, count(*) FROM few GROUP BY CUBE(dataa, datab) ORDER BY g; SELECT dataa, datab b, generate_series(1,2) g, count(*) FROM few GROUP BY CUBE(dataa, datab, g); SELECT dataa, datab b, generate_series(1,2) g, count(*) FROM few GROUP BY CUBE(dataa, datab, g) ORDER BY dataa; SELECT dataa, datab b, generate_series(1,2) g, count(*) FROM few GROUP BY CUBE(dataa, datab, g) ORDER BY g; reset enable_hashagg; -- case with degenerate ORDER BY explain (verbose, costs off) select 'foo' as f, generate_series(1,2) as g from few order by 1; select 'foo' as f, generate_series(1,2) as g from few order by 1; -- data modification CREATE TABLE fewmore AS SELECT generate_series(1,3) AS data; INSERT INTO fewmore VALUES(generate_series(4,5)); SELECT * FROM fewmore; -- SRFs are not allowed in UPDATE (they once were, but it was nonsense) UPDATE fewmore SET data = generate_series(4,9); -- SRFs are not allowed in RETURNING INSERT INTO fewmore VALUES(1) RETURNING generate_series(1,3); -- nor standalone VALUES (but surely this is a bug?) VALUES(1, generate_series(1,2)); -- We allow tSRFs that are not at top level SELECT int4mul(generate_series(1,2), 10); SELECT generate_series(1,3) IS DISTINCT FROM 2; -- but SRFs in function RTEs must be at top level (annoying restriction) SELECT * FROM int4mul(generate_series(1,2), 10); -- DISTINCT ON is evaluated before tSRF evaluation if SRF is not -- referenced either in ORDER BY or in the DISTINCT ON list. The ORDER -- BY reference can be implicitly generated, if there's no other ORDER BY. -- implicit reference (via implicit ORDER) to all columns SELECT DISTINCT ON (a) a, b, generate_series(1,3) g FROM (VALUES (3, 2), (3,1), (1,1), (1,4), (5,3), (5,1)) AS t(a, b); -- unreferenced in DISTINCT ON or ORDER BY SELECT DISTINCT ON (a) a, b, generate_series(1,3) g FROM (VALUES (3, 2), (3,1), (1,1), (1,4), (5,3), (5,1)) AS t(a, b) ORDER BY a, b DESC; -- referenced in ORDER BY SELECT DISTINCT ON (a) a, b, generate_series(1,3) g FROM (VALUES (3, 2), (3,1), (1,1), (1,4), (5,3), (5,1)) AS t(a, b) ORDER BY a, b DESC, g DESC; -- referenced in ORDER BY and DISTINCT ON SELECT DISTINCT ON (a, b, g) a, b, generate_series(1,3) g FROM (VALUES (3, 2), (3,1), (1,1), (1,4), (5,3), (5,1)) AS t(a, b) ORDER BY a, b DESC, g DESC; -- only SRF mentioned in DISTINCT ON SELECT DISTINCT ON (g) a, b, generate_series(1,3) g FROM (VALUES (3, 2), (3,1), (1,1), (1,4), (5,3), (5,1)) AS t(a, b); -- LIMIT / OFFSET is evaluated after SRF evaluation SELECT a, generate_series(1,2) FROM (VALUES(1),(2),(3)) r(a) LIMIT 2 OFFSET 2; -- SRFs are not allowed in LIMIT. SELECT 1 LIMIT generate_series(1,3); -- tSRF in correlated subquery, referencing table outside SELECT (SELECT generate_series(1,3) LIMIT 1 OFFSET few.id) FROM few; -- tSRF in correlated subquery, referencing SRF outside SELECT (SELECT generate_series(1,3) LIMIT 1 OFFSET g.i) FROM generate_series(0,3) g(i); -- Operators can return sets too CREATE OPERATOR |@| (PROCEDURE = unnest, RIGHTARG = ANYARRAY); SELECT |@|ARRAY[1,2,3]; -- Some fun cases involving duplicate SRF calls explain (verbose, costs off) select generate_series(1,3) as x, generate_series(1,3) + 1 as xp1; select generate_series(1,3) as x, generate_series(1,3) + 1 as xp1; explain (verbose, costs off) select generate_series(1,3)+1 order by generate_series(1,3); select generate_series(1,3)+1 order by generate_series(1,3); -- Check that SRFs of same nesting level run in lockstep explain (verbose, costs off) select generate_series(1,3) as x, generate_series(3,6) + 1 as y; select generate_series(1,3) as x, generate_series(3,6) + 1 as y; -- Clean up DROP TABLE few; DROP TABLE fewmore; libpg_query-13-2.1.0/test/sql/postgres_regress/tstypes.sql000066400000000000000000000331131413137616400236760ustar00rootroot00000000000000-- deal with numeric instability of ts_rank SET extra_float_digits = 0; --Base tsvector test SELECT '1'::tsvector; SELECT '1 '::tsvector; SELECT ' 1'::tsvector; SELECT ' 1 '::tsvector; SELECT '1 2'::tsvector; SELECT '''1 2'''::tsvector; SELECT E'''1 \\''2'''::tsvector; SELECT E'''1 \\''2''3'::tsvector; SELECT E'''1 \\''2'' 3'::tsvector; SELECT E'''1 \\''2'' '' 3'' 4 '::tsvector; SELECT $$'\\as' ab\c ab\\c AB\\\c ab\\\\c$$::tsvector; SELECT tsvectorin(tsvectorout($$'\\as' ab\c ab\\c AB\\\c ab\\\\c$$::tsvector)); SELECT '''w'':4A,3B,2C,1D,5 a:8'; SELECT 'a:3A b:2a'::tsvector || 'ba:1234 a:1B'; --Base tsquery test SELECT '1'::tsquery; SELECT '1 '::tsquery; SELECT ' 1'::tsquery; SELECT ' 1 '::tsquery; SELECT '''1 2'''::tsquery; SELECT E'''1 \\''2'''::tsquery; SELECT '!1'::tsquery; SELECT '1|2'::tsquery; SELECT '1|!2'::tsquery; SELECT '!1|2'::tsquery; SELECT '!1|!2'::tsquery; SELECT '!(!1|!2)'::tsquery; SELECT '!(!1|2)'::tsquery; SELECT '!(1|!2)'::tsquery; SELECT '!(1|2)'::tsquery; SELECT '1&2'::tsquery; SELECT '!1&2'::tsquery; SELECT '1&!2'::tsquery; SELECT '!1&!2'::tsquery; SELECT '(1&2)'::tsquery; SELECT '1&(2)'::tsquery; SELECT '!(1)&2'::tsquery; SELECT '!(1&2)'::tsquery; SELECT '1|2&3'::tsquery; SELECT '1|(2&3)'::tsquery; SELECT '(1|2)&3'::tsquery; SELECT '1|2&!3'::tsquery; SELECT '1|!2&3'::tsquery; SELECT '!1|2&3'::tsquery; SELECT '!1|(2&3)'::tsquery; SELECT '!(1|2)&3'::tsquery; SELECT '(!1|2)&3'::tsquery; SELECT '1|(2|(4|(5|6)))'::tsquery; SELECT '1|2|4|5|6'::tsquery; SELECT '1&(2&(4&(5&6)))'::tsquery; SELECT '1&2&4&5&6'::tsquery; SELECT '1&(2&(4&(5|6)))'::tsquery; SELECT '1&(2&(4&(5|!6)))'::tsquery; SELECT E'1&(''2''&('' 4''&(\\|5 | ''6 \\'' !|&'')))'::tsquery; SELECT $$'\\as'$$::tsquery; SELECT 'a:* & nbb:*ac | doo:a* | goo'::tsquery; SELECT '!!b'::tsquery; SELECT '!!!b'::tsquery; SELECT '!(!b)'::tsquery; SELECT 'a & !!b'::tsquery; SELECT '!!a & b'::tsquery; SELECT '!!a & !!b'::tsquery; --comparisons SELECT 'a' < 'b & c'::tsquery as "true"; SELECT 'a' > 'b & c'::tsquery as "false"; SELECT 'a | f' < 'b & c'::tsquery as "false"; SELECT 'a | ff' < 'b & c'::tsquery as "false"; SELECT 'a | f | g' < 'b & c'::tsquery as "false"; --concatenation SELECT numnode( 'new'::tsquery ); SELECT numnode( 'new & york'::tsquery ); SELECT numnode( 'new & york | qwery'::tsquery ); SELECT 'foo & bar'::tsquery && 'asd'; SELECT 'foo & bar'::tsquery || 'asd & fg'; SELECT 'foo & bar'::tsquery || !!'asd & fg'::tsquery; SELECT 'foo & bar'::tsquery && 'asd | fg'; SELECT 'a' <-> 'b & d'::tsquery; SELECT 'a & g' <-> 'b & d'::tsquery; SELECT 'a & g' <-> 'b | d'::tsquery; SELECT 'a & g' <-> 'b <-> d'::tsquery; SELECT tsquery_phrase('a <3> g', 'b & d', 10); -- tsvector-tsquery operations SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca' as "true"; SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:B' as "true"; SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:A' as "true"; SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:C' as "false"; SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & ca:CB' as "true"; SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & c:*C' as "false"; SELECT 'a b:89 ca:23A,64b d:34c'::tsvector @@ 'd:AC & c:*CB' as "true"; SELECT 'a b:89 ca:23A,64b cb:80c d:34c'::tsvector @@ 'd:AC & c:*C' as "true"; SELECT 'a b:89 ca:23A,64c cb:80b d:34c'::tsvector @@ 'd:AC & c:*C' as "true"; SELECT 'a b:89 ca:23A,64c cb:80b d:34c'::tsvector @@ 'd:AC & c:*B' as "true"; SELECT 'wa:1D wb:2A'::tsvector @@ 'w:*D & w:*A'::tsquery as "true"; SELECT 'wa:1D wb:2A'::tsvector @@ 'w:*D <-> w:*A'::tsquery as "true"; SELECT 'wa:1A wb:2D'::tsvector @@ 'w:*D <-> w:*A'::tsquery as "false"; SELECT 'wa:1A'::tsvector @@ 'w:*A'::tsquery as "true"; SELECT 'wa:1A'::tsvector @@ 'w:*D'::tsquery as "false"; SELECT 'wa:1A'::tsvector @@ '!w:*A'::tsquery as "false"; SELECT 'wa:1A'::tsvector @@ '!w:*D'::tsquery as "true"; -- historically, a stripped tsvector matches queries ignoring weights: SELECT strip('wa:1A'::tsvector) @@ 'w:*A'::tsquery as "true"; SELECT strip('wa:1A'::tsvector) @@ 'w:*D'::tsquery as "true"; SELECT strip('wa:1A'::tsvector) @@ '!w:*A'::tsquery as "false"; SELECT strip('wa:1A'::tsvector) @@ '!w:*D'::tsquery as "false"; SELECT 'supernova'::tsvector @@ 'super'::tsquery AS "false"; SELECT 'supeanova supernova'::tsvector @@ 'super'::tsquery AS "false"; SELECT 'supeznova supernova'::tsvector @@ 'super'::tsquery AS "false"; SELECT 'supernova'::tsvector @@ 'super:*'::tsquery AS "true"; SELECT 'supeanova supernova'::tsvector @@ 'super:*'::tsquery AS "true"; SELECT 'supeznova supernova'::tsvector @@ 'super:*'::tsquery AS "true"; --phrase search SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <-> 2' AS "true"; SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <2> 2' AS "false"; SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <-> 3' AS "false"; SELECT to_tsvector('simple', '1 2 3 1') @@ '1 <2> 3' AS "true"; SELECT to_tsvector('simple', '1 2 1 2') @@ '1 <3> 2' AS "true"; SELECT to_tsvector('simple', '1 2 11 3') @@ '1 <-> 3' AS "false"; SELECT to_tsvector('simple', '1 2 11 3') @@ '1:* <-> 3' AS "true"; SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <-> 2 <-> 3' AS "true"; SELECT to_tsvector('simple', '1 2 3 4') @@ '(1 <-> 2) <-> 3' AS "true"; SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <-> (2 <-> 3)' AS "true"; SELECT to_tsvector('simple', '1 2 3 4') @@ '1 <2> (2 <-> 3)' AS "false"; SELECT to_tsvector('simple', '1 2 1 2 3 4') @@ '(1 <-> 2) <-> 3' AS "true"; SELECT to_tsvector('simple', '1 2 1 2 3 4') @@ '1 <-> 2 <-> 3' AS "true"; -- without position data, phrase search does not match SELECT strip(to_tsvector('simple', '1 2 3 4')) @@ '1 <-> 2 <-> 3' AS "false"; select to_tsvector('simple', 'q x q y') @@ 'q <-> (x & y)' AS "false"; select to_tsvector('simple', 'q x') @@ 'q <-> (x | y <-> z)' AS "true"; select to_tsvector('simple', 'q y') @@ 'q <-> (x | y <-> z)' AS "false"; select to_tsvector('simple', 'q y z') @@ 'q <-> (x | y <-> z)' AS "true"; select to_tsvector('simple', 'q y x') @@ 'q <-> (x | y <-> z)' AS "false"; select to_tsvector('simple', 'q x y') @@ 'q <-> (x | y <-> z)' AS "true"; select to_tsvector('simple', 'q x') @@ '(x | y <-> z) <-> q' AS "false"; select to_tsvector('simple', 'x q') @@ '(x | y <-> z) <-> q' AS "true"; select to_tsvector('simple', 'x y q') @@ '(x | y <-> z) <-> q' AS "false"; select to_tsvector('simple', 'x y z') @@ '(x | y <-> z) <-> q' AS "false"; select to_tsvector('simple', 'x y z q') @@ '(x | y <-> z) <-> q' AS "true"; select to_tsvector('simple', 'y z q') @@ '(x | y <-> z) <-> q' AS "true"; select to_tsvector('simple', 'y y q') @@ '(x | y <-> z) <-> q' AS "false"; select to_tsvector('simple', 'y y q') @@ '(!x | y <-> z) <-> q' AS "true"; select to_tsvector('simple', 'x y q') @@ '(!x | y <-> z) <-> q' AS "true"; select to_tsvector('simple', 'y y q') @@ '(x | y <-> !z) <-> q' AS "true"; select to_tsvector('simple', 'x q') @@ '(x | y <-> !z) <-> q' AS "true"; select to_tsvector('simple', 'x q') @@ '(!x | y <-> z) <-> q' AS "false"; select to_tsvector('simple', 'z q') @@ '(!x | y <-> z) <-> q' AS "true"; select to_tsvector('simple', 'x y q') @@ '(!x | y) <-> y <-> q' AS "false"; select to_tsvector('simple', 'x y q') @@ '(!x | !y) <-> y <-> q' AS "true"; select to_tsvector('simple', 'x y q') @@ '(x | !y) <-> y <-> q' AS "true"; select to_tsvector('simple', 'x y q') @@ '(x | !!z) <-> y <-> q' AS "true"; select to_tsvector('simple', 'x y q y') @@ '!x <-> y' AS "true"; select to_tsvector('simple', 'x y q y') @@ '!x <-> !y' AS "true"; select to_tsvector('simple', 'x y q y') @@ '!x <-> !!y' AS "true"; select to_tsvector('simple', 'x y q y') @@ '!(x <-> y)' AS "false"; select to_tsvector('simple', 'x y q y') @@ '!(x <2> y)' AS "true"; select strip(to_tsvector('simple', 'x y q y')) @@ '!x <-> y' AS "false"; select strip(to_tsvector('simple', 'x y q y')) @@ '!x <-> !y' AS "false"; select strip(to_tsvector('simple', 'x y q y')) @@ '!x <-> !!y' AS "false"; select strip(to_tsvector('simple', 'x y q y')) @@ '!(x <-> y)' AS "true"; select strip(to_tsvector('simple', 'x y q y')) @@ '!(x <2> y)' AS "true"; select to_tsvector('simple', 'x y q y') @@ '!foo' AS "true"; select to_tsvector('simple', '') @@ '!foo' AS "true"; --ranking SELECT ts_rank(' a:1 s:2C d g'::tsvector, 'a | s'); SELECT ts_rank(' a:1 sa:2C d g'::tsvector, 'a | s'); SELECT ts_rank(' a:1 sa:2C d g'::tsvector, 'a | s:*'); SELECT ts_rank(' a:1 sa:2C d g'::tsvector, 'a | sa:*'); SELECT ts_rank(' a:1 s:2B d g'::tsvector, 'a | s'); SELECT ts_rank(' a:1 s:2 d g'::tsvector, 'a | s'); SELECT ts_rank(' a:1 s:2C d g'::tsvector, 'a & s'); SELECT ts_rank(' a:1 s:2B d g'::tsvector, 'a & s'); SELECT ts_rank(' a:1 s:2 d g'::tsvector, 'a & s'); SELECT ts_rank_cd(' a:1 s:2C d g'::tsvector, 'a | s'); SELECT ts_rank_cd(' a:1 sa:2C d g'::tsvector, 'a | s'); SELECT ts_rank_cd(' a:1 sa:2C d g'::tsvector, 'a | s:*'); SELECT ts_rank_cd(' a:1 sa:2C d g'::tsvector, 'a | sa:*'); SELECT ts_rank_cd(' a:1 sa:3C sab:2c d g'::tsvector, 'a | sa:*'); SELECT ts_rank_cd(' a:1 s:2B d g'::tsvector, 'a | s'); SELECT ts_rank_cd(' a:1 s:2 d g'::tsvector, 'a | s'); SELECT ts_rank_cd(' a:1 s:2C d g'::tsvector, 'a & s'); SELECT ts_rank_cd(' a:1 s:2B d g'::tsvector, 'a & s'); SELECT ts_rank_cd(' a:1 s:2 d g'::tsvector, 'a & s'); SELECT ts_rank_cd(' a:1 s:2A d g'::tsvector, 'a <-> s'); SELECT ts_rank_cd(' a:1 s:2C d g'::tsvector, 'a <-> s'); SELECT ts_rank_cd(' a:1 s:2 d g'::tsvector, 'a <-> s'); SELECT ts_rank_cd(' a:1 s:2 d:2A g'::tsvector, 'a <-> s'); SELECT ts_rank_cd(' a:1 s:2,3A d:2A g'::tsvector, 'a <2> s:A'); SELECT ts_rank_cd(' a:1 b:2 s:3A d:2A g'::tsvector, 'a <2> s:A'); SELECT ts_rank_cd(' a:1 sa:2D sb:2A g'::tsvector, 'a <-> s:*'); SELECT ts_rank_cd(' a:1 sa:2A sb:2D g'::tsvector, 'a <-> s:*'); SELECT ts_rank_cd(' a:1 sa:2A sb:2D g'::tsvector, 'a <-> s:* <-> sa:A'); SELECT ts_rank_cd(' a:1 sa:2A sb:2D g'::tsvector, 'a <-> s:* <-> sa:B'); SELECT 'a:1 b:2'::tsvector @@ 'a <-> b'::tsquery AS "true"; SELECT 'a:1 b:2'::tsvector @@ 'a <0> b'::tsquery AS "false"; SELECT 'a:1 b:2'::tsvector @@ 'a <1> b'::tsquery AS "true"; SELECT 'a:1 b:2'::tsvector @@ 'a <2> b'::tsquery AS "false"; SELECT 'a:1 b:3'::tsvector @@ 'a <-> b'::tsquery AS "false"; SELECT 'a:1 b:3'::tsvector @@ 'a <0> b'::tsquery AS "false"; SELECT 'a:1 b:3'::tsvector @@ 'a <1> b'::tsquery AS "false"; SELECT 'a:1 b:3'::tsvector @@ 'a <2> b'::tsquery AS "true"; SELECT 'a:1 b:3'::tsvector @@ 'a <3> b'::tsquery AS "false"; SELECT 'a:1 b:3'::tsvector @@ 'a <0> a:*'::tsquery AS "true"; -- tsvector editing operations SELECT strip('w:12B w:13* w:12,5,6 a:1,3* a:3 w asd:1dc asd'::tsvector); SELECT strip('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector); SELECT strip('base hidden rebel spaceship strike'::tsvector); SELECT ts_delete(to_tsvector('english', 'Rebel spaceships, striking from a hidden base'), 'spaceship'); SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, 'base'); SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, 'bas'); SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, 'bases'); SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, 'spaceship'); SELECT ts_delete('base hidden rebel spaceship strike'::tsvector, 'spaceship'); SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, ARRAY['spaceship','rebel']); SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, ARRAY['spaceships','rebel']); SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, ARRAY['spaceshi','rebel']); SELECT ts_delete('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector, ARRAY['spaceship','leya','rebel']); SELECT ts_delete('base hidden rebel spaceship strike'::tsvector, ARRAY['spaceship','leya','rebel']); SELECT ts_delete('base hidden rebel spaceship strike'::tsvector, ARRAY['spaceship','leya','rebel','rebel']); SELECT ts_delete('base hidden rebel spaceship strike'::tsvector, ARRAY['spaceship','leya','rebel', NULL]); SELECT unnest('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector); SELECT unnest('base hidden rebel spaceship strike'::tsvector); SELECT * FROM unnest('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector); SELECT * FROM unnest('base hidden rebel spaceship strike'::tsvector); SELECT lexeme, positions[1] from unnest('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector); SELECT tsvector_to_array('base:7 hidden:6 rebel:1 spaceship:2,33A,34B,35C,36D strike:3'::tsvector); SELECT tsvector_to_array('base hidden rebel spaceship strike'::tsvector); SELECT array_to_tsvector(ARRAY['base','hidden','rebel','spaceship','strike']); SELECT array_to_tsvector(ARRAY['base','hidden','rebel','spaceship', NULL]); -- array_to_tsvector must sort and de-dup SELECT array_to_tsvector(ARRAY['foo','bar','baz','bar']); SELECT setweight('w:12B w:13* w:12,5,6 a:1,3* a:3 w asd:1dc asd zxc:81,567,222A'::tsvector, 'c'); SELECT setweight('a:1,3A asd:1C w:5,6,12B,13A zxc:81,222A,567'::tsvector, 'c'); SELECT setweight('a:1,3A asd:1C w:5,6,12B,13A zxc:81,222A,567'::tsvector, 'c', '{a}'); SELECT setweight('a:1,3A asd:1C w:5,6,12B,13A zxc:81,222A,567'::tsvector, 'c', '{a}'); SELECT setweight('a:1,3A asd:1C w:5,6,12B,13A zxc:81,222A,567'::tsvector, 'c', '{a,zxc}'); SELECT setweight('a asd w:5,6,12B,13A zxc'::tsvector, 'c', '{a,zxc}'); SELECT setweight('a asd w:5,6,12B,13A zxc'::tsvector, 'c', ARRAY['a', 'zxc', NULL]); SELECT ts_filter('base:7A empir:17 evil:15 first:11 galact:16 hidden:6A rebel:1A spaceship:2A strike:3A victori:12 won:9'::tsvector, '{a}'); SELECT ts_filter('base hidden rebel spaceship strike'::tsvector, '{a}'); SELECT ts_filter('base hidden rebel spaceship strike'::tsvector, '{a,b,NULL}'); libpg_query-13-2.1.0/test/sql/postgres_regress/tuplesort.sql000066400000000000000000000243341413137616400242310ustar00rootroot00000000000000-- only use parallelism when explicitly intending to do so SET max_parallel_maintenance_workers = 0; SET max_parallel_workers = 0; -- A table with with contents that, when sorted, triggers abbreviated -- key aborts. One easy way to achieve that is to use uuids that all -- have the same prefix, as abbreviated keys for uuids just use the -- first sizeof(Datum) bytes. CREATE TEMP TABLE abbrev_abort_uuids ( id serial not null, abort_increasing uuid, abort_decreasing uuid, noabort_increasing uuid, noabort_decreasing uuid); INSERT INTO abbrev_abort_uuids (abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing) SELECT ('00000000-0000-0000-0000-'||to_char(g.i, '000000000000FM'))::uuid abort_increasing, ('00000000-0000-0000-0000-'||to_char(20000 - g.i, '000000000000FM'))::uuid abort_decreasing, (to_char(g.i % 10009, '00000000FM')||'-0000-0000-0000-'||to_char(g.i, '000000000000FM'))::uuid noabort_increasing, (to_char(((20000 - g.i) % 10009), '00000000FM')||'-0000-0000-0000-'||to_char(20000 - g.i, '000000000000FM'))::uuid noabort_decreasing FROM generate_series(0, 20000, 1) g(i); -- and a few NULLs INSERT INTO abbrev_abort_uuids(id) VALUES(0); INSERT INTO abbrev_abort_uuids DEFAULT VALUES; INSERT INTO abbrev_abort_uuids DEFAULT VALUES; -- add just a few duplicates INSERT INTO abbrev_abort_uuids (abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing) SELECT abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids WHERE (id < 10 OR id > 19990) AND id % 3 = 0 AND abort_increasing is not null; ---- -- Check sort node uses of tuplesort wrt. abbreviated keys ---- -- plain sort triggering abbreviated abort SELECT abort_increasing, abort_decreasing FROM abbrev_abort_uuids ORDER BY abort_increasing OFFSET 20000 - 4; SELECT abort_increasing, abort_decreasing FROM abbrev_abort_uuids ORDER BY abort_decreasing NULLS FIRST OFFSET 20000 - 4; -- plain sort not triggering abbreviated abort SELECT noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY noabort_increasing OFFSET 20000 - 4; SELECT noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY noabort_decreasing NULLS FIRST OFFSET 20000 - 4; -- bounded sort (disables abbreviated keys) SELECT abort_increasing, noabort_increasing FROM abbrev_abort_uuids ORDER BY abort_increasing LIMIT 5; SELECT abort_increasing, noabort_increasing FROM abbrev_abort_uuids ORDER BY noabort_increasing NULLS FIRST LIMIT 5; ---- -- Check index creation uses of tuplesort wrt. abbreviated keys ---- -- index creation using abbreviated keys successfully CREATE INDEX abbrev_abort_uuids__noabort_increasing_idx ON abbrev_abort_uuids (noabort_increasing); CREATE INDEX abbrev_abort_uuids__noabort_decreasing_idx ON abbrev_abort_uuids (noabort_decreasing); -- verify EXPLAIN (COSTS OFF) SELECT id, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY noabort_increasing LIMIT 5; SELECT id, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY noabort_increasing LIMIT 5; EXPLAIN (COSTS OFF) SELECT id, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY noabort_decreasing LIMIT 5; SELECT id, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY noabort_decreasing LIMIT 5; -- index creation using abbreviated keys, hitting abort CREATE INDEX abbrev_abort_uuids__abort_increasing_idx ON abbrev_abort_uuids (abort_increasing); CREATE INDEX abbrev_abort_uuids__abort_decreasing_idx ON abbrev_abort_uuids (abort_decreasing); -- verify EXPLAIN (COSTS OFF) SELECT id, abort_increasing, abort_decreasing FROM abbrev_abort_uuids ORDER BY abort_increasing LIMIT 5; SELECT id, abort_increasing, abort_decreasing FROM abbrev_abort_uuids ORDER BY abort_increasing LIMIT 5; EXPLAIN (COSTS OFF) SELECT id, abort_increasing, abort_decreasing FROM abbrev_abort_uuids ORDER BY abort_decreasing LIMIT 5; SELECT id, abort_increasing, abort_decreasing FROM abbrev_abort_uuids ORDER BY abort_decreasing LIMIT 5; ---- -- Check CLUSTER uses of tuplesort wrt. abbreviated keys ---- -- when aborting, increasing order BEGIN; SET LOCAL enable_indexscan = false; CLUSTER abbrev_abort_uuids USING abbrev_abort_uuids__abort_increasing_idx; -- head SELECT id, abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY ctid LIMIT 5; -- tail SELECT id, abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY ctid DESC LIMIT 5; ROLLBACK; -- when aborting, decreasing order BEGIN; SET LOCAL enable_indexscan = false; CLUSTER abbrev_abort_uuids USING abbrev_abort_uuids__abort_decreasing_idx; -- head SELECT id, abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY ctid LIMIT 5; -- tail SELECT id, abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY ctid DESC LIMIT 5; ROLLBACK; -- when not aborting, increasing order BEGIN; SET LOCAL enable_indexscan = false; CLUSTER abbrev_abort_uuids USING abbrev_abort_uuids__noabort_increasing_idx; -- head SELECT id, abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY ctid LIMIT 5; -- tail SELECT id, abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY ctid DESC LIMIT 5; ROLLBACK; -- when no aborting, decreasing order BEGIN; SET LOCAL enable_indexscan = false; CLUSTER abbrev_abort_uuids USING abbrev_abort_uuids__noabort_decreasing_idx; -- head SELECT id, abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY ctid LIMIT 5; -- tail SELECT id, abort_increasing, abort_decreasing, noabort_increasing, noabort_decreasing FROM abbrev_abort_uuids ORDER BY ctid DESC LIMIT 5; ROLLBACK; ---- -- test forward and backward scans for in-memory and disk based tuplesort ---- -- in-memory BEGIN; SET LOCAL enable_indexscan = false; -- unfortunately can't show analyze output confirming sort method, -- the memory used output wouldn't be stable EXPLAIN (COSTS OFF) DECLARE c SCROLL CURSOR FOR SELECT noabort_decreasing FROM abbrev_abort_uuids ORDER BY noabort_decreasing; DECLARE c SCROLL CURSOR FOR SELECT noabort_decreasing FROM abbrev_abort_uuids ORDER BY noabort_decreasing; -- first and second FETCH NEXT FROM c; FETCH NEXT FROM c; -- scroll beyond beginning FETCH BACKWARD FROM c; FETCH BACKWARD FROM c; FETCH BACKWARD FROM c; FETCH BACKWARD FROM c; FETCH NEXT FROM c; -- scroll beyond end end FETCH LAST FROM c; FETCH BACKWARD FROM c; FETCH NEXT FROM c; FETCH NEXT FROM c; FETCH NEXT FROM c; FETCH BACKWARD FROM c; FETCH NEXT FROM c; COMMIT; -- disk based BEGIN; SET LOCAL enable_indexscan = false; SET LOCAL work_mem = '100kB'; -- unfortunately can't show analyze output confirming sort method, -- the memory used output wouldn't be stable EXPLAIN (COSTS OFF) DECLARE c SCROLL CURSOR FOR SELECT noabort_decreasing FROM abbrev_abort_uuids ORDER BY noabort_decreasing; DECLARE c SCROLL CURSOR FOR SELECT noabort_decreasing FROM abbrev_abort_uuids ORDER BY noabort_decreasing; -- first and second FETCH NEXT FROM c; FETCH NEXT FROM c; -- scroll beyond beginning FETCH BACKWARD FROM c; FETCH BACKWARD FROM c; FETCH BACKWARD FROM c; FETCH BACKWARD FROM c; FETCH NEXT FROM c; -- scroll beyond end end FETCH LAST FROM c; FETCH BACKWARD FROM c; FETCH NEXT FROM c; FETCH NEXT FROM c; FETCH NEXT FROM c; FETCH BACKWARD FROM c; FETCH NEXT FROM c; COMMIT; ---- -- test tuplesort using both in-memory and disk sort --- -- memory based SELECT -- fixed-width by-value datum (array_agg(id ORDER BY id DESC NULLS FIRST))[0:5], -- fixed-width by-ref datum (array_agg(abort_increasing ORDER BY abort_increasing DESC NULLS LAST))[0:5], -- variable-width datum (array_agg(id::text ORDER BY id::text DESC NULLS LAST))[0:5], -- fixed width by-value datum tuplesort percentile_disc(0.99) WITHIN GROUP (ORDER BY id), -- ensure state is shared percentile_disc(0.01) WITHIN GROUP (ORDER BY id), -- fixed width by-ref datum tuplesort percentile_disc(0.8) WITHIN GROUP (ORDER BY abort_increasing), -- variable width by-ref datum tuplesort percentile_disc(0.2) WITHIN GROUP (ORDER BY id::text), -- multi-column tuplesort rank('00000000-0000-0000-0000-000000000000', '2', '2') WITHIN GROUP (ORDER BY noabort_increasing, id, id::text) FROM ( SELECT * FROM abbrev_abort_uuids UNION ALL SELECT NULL, NULL, NULL, NULL, NULL) s; -- disk based (see also above) BEGIN; SET LOCAL work_mem = '100kB'; SELECT (array_agg(id ORDER BY id DESC NULLS FIRST))[0:5], (array_agg(abort_increasing ORDER BY abort_increasing DESC NULLS LAST))[0:5], (array_agg(id::text ORDER BY id::text DESC NULLS LAST))[0:5], percentile_disc(0.99) WITHIN GROUP (ORDER BY id), percentile_disc(0.01) WITHIN GROUP (ORDER BY id), percentile_disc(0.8) WITHIN GROUP (ORDER BY abort_increasing), percentile_disc(0.2) WITHIN GROUP (ORDER BY id::text), rank('00000000-0000-0000-0000-000000000000', '2', '2') WITHIN GROUP (ORDER BY noabort_increasing, id, id::text) FROM ( SELECT * FROM abbrev_abort_uuids UNION ALL SELECT NULL, NULL, NULL, NULL, NULL) s; ROLLBACK; ---- -- test tuplesort mark/restore --- CREATE TEMP TABLE test_mark_restore(col1 int, col2 int, col12 int); -- need a few duplicates for mark/restore to matter INSERT INTO test_mark_restore(col1, col2, col12) SELECT a.i, b.i, a.i * b.i FROM generate_series(1, 500) a(i), generate_series(1, 5) b(i); BEGIN; SET LOCAL enable_nestloop = off; SET LOCAL enable_hashjoin = off; SET LOCAL enable_material = off; -- set query into variable once, to avoid repetition of the fairly long query SELECT $$ SELECT col12, count(distinct a.col1), count(distinct a.col2), count(distinct b.col1), count(distinct b.col2), count(*) FROM test_mark_restore a JOIN test_mark_restore b USING(col12) GROUP BY 1 HAVING count(*) > 1 ORDER BY 2 DESC, 1 DESC, 3 DESC, 4 DESC, 5 DESC, 6 DESC LIMIT 10 $$ AS qry \gset -- test mark/restore with in-memory sorts EXPLAIN (COSTS OFF) :qry; :qry; -- test mark/restore with on-disk sorts SET LOCAL work_mem = '100kB'; EXPLAIN (COSTS OFF) :qry; :qry; COMMIT; libpg_query-13-2.1.0/test/sql/postgres_regress/txid.sql000066400000000000000000000061611413137616400231360ustar00rootroot00000000000000-- txid_snapshot data type and related functions -- Note: these are backward-compatibility functions and types, and have been -- replaced by new xid8-based variants. See xid.sql. The txid variants will -- be removed in a future release. -- i/o select '12:13:'::txid_snapshot; select '12:18:14,16'::txid_snapshot; select '12:16:14,14'::txid_snapshot; -- errors select '31:12:'::txid_snapshot; select '0:1:'::txid_snapshot; select '12:13:0'::txid_snapshot; select '12:16:14,13'::txid_snapshot; create temp table snapshot_test ( nr integer, snap txid_snapshot ); insert into snapshot_test values (1, '12:13:'); insert into snapshot_test values (2, '12:20:13,15,18'); insert into snapshot_test values (3, '100001:100009:100005,100007,100008'); insert into snapshot_test values (4, '100:150:101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131'); select snap from snapshot_test order by nr; select txid_snapshot_xmin(snap), txid_snapshot_xmax(snap), txid_snapshot_xip(snap) from snapshot_test order by nr; select id, txid_visible_in_snapshot(id, snap) from snapshot_test, generate_series(11, 21) id where nr = 2; -- test bsearch select id, txid_visible_in_snapshot(id, snap) from snapshot_test, generate_series(90, 160) id where nr = 4; -- test current values also select txid_current() >= txid_snapshot_xmin(txid_current_snapshot()); -- we can't assume current is always less than xmax, however select txid_visible_in_snapshot(txid_current(), txid_current_snapshot()); -- test 64bitness select txid_snapshot '1000100010001000:1000100010001100:1000100010001012,1000100010001013'; select txid_visible_in_snapshot('1000100010001012', '1000100010001000:1000100010001100:1000100010001012,1000100010001013'); select txid_visible_in_snapshot('1000100010001015', '1000100010001000:1000100010001100:1000100010001012,1000100010001013'); -- test 64bit overflow SELECT txid_snapshot '1:9223372036854775807:3'; SELECT txid_snapshot '1:9223372036854775808:3'; -- test txid_current_if_assigned BEGIN; SELECT txid_current_if_assigned() IS NULL; SELECT txid_current() \gset SELECT txid_current_if_assigned() IS NOT DISTINCT FROM BIGINT :'txid_current'; COMMIT; -- test xid status functions BEGIN; SELECT txid_current() AS committed \gset COMMIT; BEGIN; SELECT txid_current() AS rolledback \gset ROLLBACK; BEGIN; SELECT txid_current() AS inprogress \gset SELECT txid_status(:committed) AS committed; SELECT txid_status(:rolledback) AS rolledback; SELECT txid_status(:inprogress) AS inprogress; SELECT txid_status(1); -- BootstrapTransactionId is always committed SELECT txid_status(2); -- FrozenTransactionId is always committed SELECT txid_status(3); -- in regress testing FirstNormalTransactionId will always be behind oldestXmin COMMIT; BEGIN; CREATE FUNCTION test_future_xid_status(bigint) RETURNS void LANGUAGE plpgsql AS $$ BEGIN PERFORM txid_status($1); RAISE EXCEPTION 'didn''t ERROR at xid in the future as expected'; EXCEPTION WHEN invalid_parameter_value THEN RAISE NOTICE 'Got expected error for xid in the future'; END; $$; SELECT test_future_xid_status(:inprogress + 10000); ROLLBACK; libpg_query-13-2.1.0/test/sql/postgres_regress/type_sanity.sql000066400000000000000000000412141413137616400245340ustar00rootroot00000000000000-- -- TYPE_SANITY -- Sanity checks for common errors in making type-related system tables: -- pg_type, pg_class, pg_attribute, pg_range. -- -- None of the SELECTs here should ever find any matching entries, -- so the expected output is easy to maintain ;-). -- A test failure indicates someone messed up an entry in the system tables. -- -- NB: we assume the oidjoins test will have caught any dangling links, -- that is OID or REGPROC fields that are not zero and do not match some -- row in the linked-to table. However, if we want to enforce that a link -- field can't be 0, we have to check it here. -- **************** pg_type **************** -- Look for illegal values in pg_type fields. SELECT p1.oid, p1.typname FROM pg_type as p1 WHERE p1.typnamespace = 0 OR (p1.typlen <= 0 AND p1.typlen != -1 AND p1.typlen != -2) OR (p1.typtype not in ('b', 'c', 'd', 'e', 'p', 'r')) OR NOT p1.typisdefined OR (p1.typalign not in ('c', 's', 'i', 'd')) OR (p1.typstorage not in ('p', 'x', 'e', 'm')); -- Look for "pass by value" types that can't be passed by value. SELECT p1.oid, p1.typname FROM pg_type as p1 WHERE p1.typbyval AND (p1.typlen != 1 OR p1.typalign != 'c') AND (p1.typlen != 2 OR p1.typalign != 's') AND (p1.typlen != 4 OR p1.typalign != 'i') AND (p1.typlen != 8 OR p1.typalign != 'd'); -- Look for "toastable" types that aren't varlena. SELECT p1.oid, p1.typname FROM pg_type as p1 WHERE p1.typstorage != 'p' AND (p1.typbyval OR p1.typlen != -1); -- Look for complex types that do not have a typrelid entry, -- or basic types that do. SELECT p1.oid, p1.typname FROM pg_type as p1 WHERE (p1.typtype = 'c' AND p1.typrelid = 0) OR (p1.typtype != 'c' AND p1.typrelid != 0); -- Look for types that should have an array type according to their typtype, -- but don't. We exclude composites here because we have not bothered to -- make array types corresponding to the system catalogs' rowtypes. -- NOTE: as of v10, this check finds pg_node_tree, pg_ndistinct, smgr. SELECT p1.oid, p1.typname FROM pg_type as p1 WHERE p1.typtype not in ('c','d','p') AND p1.typname NOT LIKE E'\\_%' AND NOT EXISTS (SELECT 1 FROM pg_type as p2 WHERE p2.typname = ('_' || p1.typname)::name AND p2.typelem = p1.oid and p1.typarray = p2.oid); -- Make sure typarray points to a varlena array type of our own base SELECT p1.oid, p1.typname as basetype, p2.typname as arraytype, p2.typelem, p2.typlen FROM pg_type p1 LEFT JOIN pg_type p2 ON (p1.typarray = p2.oid) WHERE p1.typarray <> 0 AND (p2.oid IS NULL OR p2.typelem <> p1.oid OR p2.typlen <> -1); -- Look for range types that do not have a pg_range entry SELECT p1.oid, p1.typname FROM pg_type as p1 WHERE p1.typtype = 'r' AND NOT EXISTS(SELECT 1 FROM pg_range r WHERE rngtypid = p1.oid); -- Look for range types whose typalign isn't sufficient SELECT p1.oid, p1.typname, p1.typalign, p2.typname, p2.typalign FROM pg_type as p1 LEFT JOIN pg_range as r ON rngtypid = p1.oid LEFT JOIN pg_type as p2 ON rngsubtype = p2.oid WHERE p1.typtype = 'r' AND (p1.typalign != (CASE WHEN p2.typalign = 'd' THEN 'd'::"char" ELSE 'i'::"char" END) OR p2.oid IS NULL); -- Text conversion routines must be provided. SELECT p1.oid, p1.typname FROM pg_type as p1 WHERE (p1.typinput = 0 OR p1.typoutput = 0); -- Check for bogus typinput routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typinput = p2.oid AND NOT ((p2.pronargs = 1 AND p2.proargtypes[0] = 'cstring'::regtype) OR (p2.pronargs = 2 AND p2.proargtypes[0] = 'cstring'::regtype AND p2.proargtypes[1] = 'oid'::regtype) OR (p2.pronargs = 3 AND p2.proargtypes[0] = 'cstring'::regtype AND p2.proargtypes[1] = 'oid'::regtype AND p2.proargtypes[2] = 'int4'::regtype)); -- Check for type of the variadic array parameter's elements. -- provariadic should be ANYOID if the type of the last element is ANYOID, -- ANYELEMENTOID if the type of the last element is ANYARRAYOID, -- ANYCOMPATIBLEOID if the type of the last element is ANYCOMPATIBLEARRAYOID, -- and otherwise the element type corresponding to the array type. SELECT oid::regprocedure, provariadic::regtype, proargtypes::regtype[] FROM pg_proc WHERE provariadic != 0 AND case proargtypes[array_length(proargtypes, 1)-1] WHEN '"any"'::regtype THEN '"any"'::regtype WHEN 'anyarray'::regtype THEN 'anyelement'::regtype WHEN 'anycompatiblearray'::regtype THEN 'anycompatible'::regtype ELSE (SELECT t.oid FROM pg_type t WHERE t.typarray = proargtypes[array_length(proargtypes, 1)-1]) END != provariadic; -- Check that all and only those functions with a variadic type have -- a variadic argument. SELECT oid::regprocedure, proargmodes, provariadic FROM pg_proc WHERE (proargmodes IS NOT NULL AND 'v' = any(proargmodes)) IS DISTINCT FROM (provariadic != 0); -- As of 8.0, this check finds refcursor, which is borrowing -- other types' I/O routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typinput = p2.oid AND p1.typtype in ('b', 'p') AND NOT (p1.typelem != 0 AND p1.typlen < 0) AND NOT (p2.prorettype = p1.oid AND NOT p2.proretset) ORDER BY 1; -- Varlena array types will point to array_in -- Exception as of 8.1: int2vector and oidvector have their own I/O routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typinput = p2.oid AND (p1.typelem != 0 AND p1.typlen < 0) AND NOT (p2.oid = 'array_in'::regproc) ORDER BY 1; -- typinput routines should not be volatile SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typinput = p2.oid AND p2.provolatile NOT IN ('i', 's'); -- Composites, domains, enums, ranges should all use the same input routines SELECT DISTINCT typtype, typinput FROM pg_type AS p1 WHERE p1.typtype not in ('b', 'p') ORDER BY 1; -- Check for bogus typoutput routines -- As of 8.0, this check finds refcursor, which is borrowing -- other types' I/O routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typoutput = p2.oid AND p1.typtype in ('b', 'p') AND NOT (p2.pronargs = 1 AND (p2.proargtypes[0] = p1.oid OR (p2.oid = 'array_out'::regproc AND p1.typelem != 0 AND p1.typlen = -1))) ORDER BY 1; SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typoutput = p2.oid AND NOT (p2.prorettype = 'cstring'::regtype AND NOT p2.proretset); -- typoutput routines should not be volatile SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typoutput = p2.oid AND p2.provolatile NOT IN ('i', 's'); -- Composites, enums, ranges should all use the same output routines SELECT DISTINCT typtype, typoutput FROM pg_type AS p1 WHERE p1.typtype not in ('b', 'd', 'p') ORDER BY 1; -- Domains should have same typoutput as their base types SELECT p1.oid, p1.typname, p2.oid, p2.typname FROM pg_type AS p1 LEFT JOIN pg_type AS p2 ON p1.typbasetype = p2.oid WHERE p1.typtype = 'd' AND p1.typoutput IS DISTINCT FROM p2.typoutput; -- Check for bogus typreceive routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typreceive = p2.oid AND NOT ((p2.pronargs = 1 AND p2.proargtypes[0] = 'internal'::regtype) OR (p2.pronargs = 2 AND p2.proargtypes[0] = 'internal'::regtype AND p2.proargtypes[1] = 'oid'::regtype) OR (p2.pronargs = 3 AND p2.proargtypes[0] = 'internal'::regtype AND p2.proargtypes[1] = 'oid'::regtype AND p2.proargtypes[2] = 'int4'::regtype)); -- As of 7.4, this check finds refcursor, which is borrowing -- other types' I/O routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typreceive = p2.oid AND p1.typtype in ('b', 'p') AND NOT (p1.typelem != 0 AND p1.typlen < 0) AND NOT (p2.prorettype = p1.oid AND NOT p2.proretset) ORDER BY 1; -- Varlena array types will point to array_recv -- Exception as of 8.1: int2vector and oidvector have their own I/O routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typreceive = p2.oid AND (p1.typelem != 0 AND p1.typlen < 0) AND NOT (p2.oid = 'array_recv'::regproc) ORDER BY 1; -- Suspicious if typreceive doesn't take same number of args as typinput SELECT p1.oid, p1.typname, p2.oid, p2.proname, p3.oid, p3.proname FROM pg_type AS p1, pg_proc AS p2, pg_proc AS p3 WHERE p1.typinput = p2.oid AND p1.typreceive = p3.oid AND p2.pronargs != p3.pronargs; -- typreceive routines should not be volatile SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typreceive = p2.oid AND p2.provolatile NOT IN ('i', 's'); -- Composites, domains, enums, ranges should all use the same receive routines SELECT DISTINCT typtype, typreceive FROM pg_type AS p1 WHERE p1.typtype not in ('b', 'p') ORDER BY 1; -- Check for bogus typsend routines -- As of 7.4, this check finds refcursor, which is borrowing -- other types' I/O routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typsend = p2.oid AND p1.typtype in ('b', 'p') AND NOT (p2.pronargs = 1 AND (p2.proargtypes[0] = p1.oid OR (p2.oid = 'array_send'::regproc AND p1.typelem != 0 AND p1.typlen = -1))) ORDER BY 1; SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typsend = p2.oid AND NOT (p2.prorettype = 'bytea'::regtype AND NOT p2.proretset); -- typsend routines should not be volatile SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typsend = p2.oid AND p2.provolatile NOT IN ('i', 's'); -- Composites, enums, ranges should all use the same send routines SELECT DISTINCT typtype, typsend FROM pg_type AS p1 WHERE p1.typtype not in ('b', 'd', 'p') ORDER BY 1; -- Domains should have same typsend as their base types SELECT p1.oid, p1.typname, p2.oid, p2.typname FROM pg_type AS p1 LEFT JOIN pg_type AS p2 ON p1.typbasetype = p2.oid WHERE p1.typtype = 'd' AND p1.typsend IS DISTINCT FROM p2.typsend; -- Check for bogus typmodin routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typmodin = p2.oid AND NOT (p2.pronargs = 1 AND p2.proargtypes[0] = 'cstring[]'::regtype AND p2.prorettype = 'int4'::regtype AND NOT p2.proretset); -- typmodin routines should not be volatile SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typmodin = p2.oid AND p2.provolatile NOT IN ('i', 's'); -- Check for bogus typmodout routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typmodout = p2.oid AND NOT (p2.pronargs = 1 AND p2.proargtypes[0] = 'int4'::regtype AND p2.prorettype = 'cstring'::regtype AND NOT p2.proretset); -- typmodout routines should not be volatile SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typmodout = p2.oid AND p2.provolatile NOT IN ('i', 's'); -- Array types should have same typmodin/out as their element types SELECT p1.oid, p1.typname, p2.oid, p2.typname FROM pg_type AS p1, pg_type AS p2 WHERE p1.typelem = p2.oid AND NOT (p1.typmodin = p2.typmodin AND p1.typmodout = p2.typmodout); -- Array types should have same typdelim as their element types SELECT p1.oid, p1.typname, p2.oid, p2.typname FROM pg_type AS p1, pg_type AS p2 WHERE p1.typarray = p2.oid AND NOT (p1.typdelim = p2.typdelim); -- Look for array types whose typalign isn't sufficient SELECT p1.oid, p1.typname, p1.typalign, p2.typname, p2.typalign FROM pg_type AS p1, pg_type AS p2 WHERE p1.typarray = p2.oid AND p2.typalign != (CASE WHEN p1.typalign = 'd' THEN 'd'::"char" ELSE 'i'::"char" END); -- Check for bogus typanalyze routines SELECT p1.oid, p1.typname, p2.oid, p2.proname FROM pg_type AS p1, pg_proc AS p2 WHERE p1.typanalyze = p2.oid AND NOT (p2.pronargs = 1 AND p2.proargtypes[0] = 'internal'::regtype AND p2.prorettype = 'bool'::regtype AND NOT p2.proretset); -- there does not seem to be a reason to care about volatility of typanalyze -- domains inherit their base type's typanalyze SELECT d.oid, d.typname, d.typanalyze, t.oid, t.typname, t.typanalyze FROM pg_type d JOIN pg_type t ON d.typbasetype = t.oid WHERE d.typanalyze != t.typanalyze; -- range_typanalyze should be used for all and only range types -- (but exclude domains, which we checked above) SELECT t.oid, t.typname, t.typanalyze FROM pg_type t LEFT JOIN pg_range r on t.oid = r.rngtypid WHERE t.typbasetype = 0 AND (t.typanalyze = 'range_typanalyze'::regproc) != (r.rngtypid IS NOT NULL); -- array_typanalyze should be used for all and only array types -- (but exclude domains, which we checked above) -- As of 9.2 this finds int2vector and oidvector, which are weird anyway SELECT t.oid, t.typname, t.typanalyze FROM pg_type t WHERE t.typbasetype = 0 AND (t.typanalyze = 'array_typanalyze'::regproc) != (typelem != 0 AND typlen < 0) ORDER BY 1; -- **************** pg_class **************** -- Look for illegal values in pg_class fields SELECT p1.oid, p1.relname FROM pg_class as p1 WHERE relkind NOT IN ('r', 'i', 'S', 't', 'v', 'm', 'c', 'f', 'p') OR relpersistence NOT IN ('p', 'u', 't') OR relreplident NOT IN ('d', 'n', 'f', 'i'); -- All tables and indexes should have an access method. SELECT p1.oid, p1.relname FROM pg_class as p1 WHERE p1.relkind NOT IN ('S', 'v', 'f', 'c') and p1.relam = 0; -- Conversely, sequences, views, types shouldn't have them SELECT p1.oid, p1.relname FROM pg_class as p1 WHERE p1.relkind IN ('S', 'v', 'f', 'c') and p1.relam != 0; -- Indexes should have AMs of type 'i' SELECT pc.oid, pc.relname, pa.amname, pa.amtype FROM pg_class as pc JOIN pg_am AS pa ON (pc.relam = pa.oid) WHERE pc.relkind IN ('i') and pa.amtype != 'i'; -- Tables, matviews etc should have AMs of type 't' SELECT pc.oid, pc.relname, pa.amname, pa.amtype FROM pg_class as pc JOIN pg_am AS pa ON (pc.relam = pa.oid) WHERE pc.relkind IN ('r', 't', 'm') and pa.amtype != 't'; -- **************** pg_attribute **************** -- Look for illegal values in pg_attribute fields SELECT p1.attrelid, p1.attname FROM pg_attribute as p1 WHERE p1.attrelid = 0 OR p1.atttypid = 0 OR p1.attnum = 0 OR p1.attcacheoff != -1 OR p1.attinhcount < 0 OR (p1.attinhcount = 0 AND NOT p1.attislocal); -- Cross-check attnum against parent relation SELECT p1.attrelid, p1.attname, p2.oid, p2.relname FROM pg_attribute AS p1, pg_class AS p2 WHERE p1.attrelid = p2.oid AND p1.attnum > p2.relnatts; -- Detect missing pg_attribute entries: should have as many non-system -- attributes as parent relation expects SELECT p1.oid, p1.relname FROM pg_class AS p1 WHERE p1.relnatts != (SELECT count(*) FROM pg_attribute AS p2 WHERE p2.attrelid = p1.oid AND p2.attnum > 0); -- Cross-check against pg_type entry -- NOTE: we allow attstorage to be 'plain' even when typstorage is not; -- this is mainly for toast tables. SELECT p1.attrelid, p1.attname, p2.oid, p2.typname FROM pg_attribute AS p1, pg_type AS p2 WHERE p1.atttypid = p2.oid AND (p1.attlen != p2.typlen OR p1.attalign != p2.typalign OR p1.attbyval != p2.typbyval OR (p1.attstorage != p2.typstorage AND p1.attstorage != 'p')); -- **************** pg_range **************** -- Look for illegal values in pg_range fields. SELECT p1.rngtypid, p1.rngsubtype FROM pg_range as p1 WHERE p1.rngtypid = 0 OR p1.rngsubtype = 0 OR p1.rngsubopc = 0; -- rngcollation should be specified iff subtype is collatable SELECT p1.rngtypid, p1.rngsubtype, p1.rngcollation, t.typcollation FROM pg_range p1 JOIN pg_type t ON t.oid = p1.rngsubtype WHERE (rngcollation = 0) != (typcollation = 0); -- opclass had better be a btree opclass accepting the subtype. -- We must allow anyarray matches, cf opr_sanity's binary_coercible() SELECT p1.rngtypid, p1.rngsubtype, o.opcmethod, o.opcname FROM pg_range p1 JOIN pg_opclass o ON o.oid = p1.rngsubopc WHERE o.opcmethod != 403 OR ((o.opcintype != p1.rngsubtype) AND NOT (o.opcintype = 'pg_catalog.anyarray'::regtype AND EXISTS(select 1 from pg_catalog.pg_type where oid = p1.rngsubtype and typelem != 0 and typlen = -1))); -- canonical function, if any, had better match the range type SELECT p1.rngtypid, p1.rngsubtype, p.proname FROM pg_range p1 JOIN pg_proc p ON p.oid = p1.rngcanonical WHERE pronargs != 1 OR proargtypes[0] != rngtypid OR prorettype != rngtypid; -- subdiff function, if any, had better match the subtype SELECT p1.rngtypid, p1.rngsubtype, p.proname FROM pg_range p1 JOIN pg_proc p ON p.oid = p1.rngsubdiff WHERE pronargs != 2 OR proargtypes[0] != rngsubtype OR proargtypes[1] != rngsubtype OR prorettype != 'pg_catalog.float8'::regtype; libpg_query-13-2.1.0/test/sql/postgres_regress/typed_table.sql000066400000000000000000000033361413137616400244630ustar00rootroot00000000000000CREATE TABLE ttable1 OF nothing; CREATE TYPE person_type AS (id int, name text); CREATE TABLE persons OF person_type; CREATE TABLE IF NOT EXISTS persons OF person_type; SELECT * FROM persons; \d persons CREATE FUNCTION get_all_persons() RETURNS SETOF person_type LANGUAGE SQL AS $$ SELECT * FROM persons; $$; SELECT * FROM get_all_persons(); -- certain ALTER TABLE operations on typed tables are not allowed ALTER TABLE persons ADD COLUMN comment text; ALTER TABLE persons DROP COLUMN name; ALTER TABLE persons RENAME COLUMN id TO num; ALTER TABLE persons ALTER COLUMN name TYPE varchar; CREATE TABLE stuff (id int); ALTER TABLE persons INHERIT stuff; CREATE TABLE personsx OF person_type (myname WITH OPTIONS NOT NULL); -- error CREATE TABLE persons2 OF person_type ( id WITH OPTIONS PRIMARY KEY, UNIQUE (name) ); \d persons2 CREATE TABLE persons3 OF person_type ( PRIMARY KEY (id), name WITH OPTIONS DEFAULT '' ); \d persons3 CREATE TABLE persons4 OF person_type ( name WITH OPTIONS NOT NULL, name WITH OPTIONS DEFAULT '' -- error, specified more than once ); DROP TYPE person_type RESTRICT; DROP TYPE person_type CASCADE; CREATE TABLE persons5 OF stuff; -- only CREATE TYPE AS types may be used DROP TABLE stuff; -- implicit casting CREATE TYPE person_type AS (id int, name text); CREATE TABLE persons OF person_type; INSERT INTO persons VALUES (1, 'test'); CREATE FUNCTION namelen(person_type) RETURNS int LANGUAGE SQL AS $$ SELECT length($1.name) $$; SELECT id, namelen(persons) FROM persons; CREATE TABLE persons2 OF person_type ( id WITH OPTIONS PRIMARY KEY, UNIQUE (name) ); \d persons2 CREATE TABLE persons3 OF person_type ( PRIMARY KEY (id), name NOT NULL DEFAULT '' ); \d persons3 libpg_query-13-2.1.0/test/sql/postgres_regress/unicode.sql000066400000000000000000000022661413137616400236160ustar00rootroot00000000000000SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset \if :skip_test \quit \endif SELECT U&'\0061\0308bc' <> U&'\00E4bc' COLLATE "C" AS sanity_check; SELECT normalize(U&'\0061\0308\24D1c') = U&'\00E4\24D1c' COLLATE "C" AS test_default; SELECT normalize(U&'\0061\0308\24D1c', NFC) = U&'\00E4\24D1c' COLLATE "C" AS test_nfc; SELECT normalize(U&'\00E4bc', NFC) = U&'\00E4bc' COLLATE "C" AS test_nfc_idem; SELECT normalize(U&'\00E4\24D1c', NFD) = U&'\0061\0308\24D1c' COLLATE "C" AS test_nfd; SELECT normalize(U&'\0061\0308\24D1c', NFKC) = U&'\00E4bc' COLLATE "C" AS test_nfkc; SELECT normalize(U&'\00E4\24D1c', NFKD) = U&'\0061\0308bc' COLLATE "C" AS test_nfkd; SELECT "normalize"('abc', 'def'); -- run-time error SELECT U&'\00E4\24D1c' IS NORMALIZED AS test_default; SELECT U&'\00E4\24D1c' IS NFC NORMALIZED AS test_nfc; SELECT num, val, val IS NFC NORMALIZED AS NFC, val IS NFD NORMALIZED AS NFD, val IS NFKC NORMALIZED AS NFKC, val IS NFKD NORMALIZED AS NFKD FROM (VALUES (1, U&'\00E4bc'), (2, U&'\0061\0308bc'), (3, U&'\00E4\24D1c'), (4, U&'\0061\0308\24D1c')) vals (num, val) ORDER BY num; SELECT is_normalized('abc', 'def'); -- run-time error libpg_query-13-2.1.0/test/sql/postgres_regress/union.sql000066400000000000000000000270471413137616400233240ustar00rootroot00000000000000-- -- UNION (also INTERSECT, EXCEPT) -- -- Simple UNION constructs SELECT 1 AS two UNION SELECT 2 ORDER BY 1; SELECT 1 AS one UNION SELECT 1 ORDER BY 1; SELECT 1 AS two UNION ALL SELECT 2; SELECT 1 AS two UNION ALL SELECT 1; SELECT 1 AS three UNION SELECT 2 UNION SELECT 3 ORDER BY 1; SELECT 1 AS two UNION SELECT 2 UNION SELECT 2 ORDER BY 1; SELECT 1 AS three UNION SELECT 2 UNION ALL SELECT 2 ORDER BY 1; SELECT 1.1 AS two UNION SELECT 2.2 ORDER BY 1; -- Mixed types SELECT 1.1 AS two UNION SELECT 2 ORDER BY 1; SELECT 1 AS two UNION SELECT 2.2 ORDER BY 1; SELECT 1 AS one UNION SELECT 1.0::float8 ORDER BY 1; SELECT 1.1 AS two UNION ALL SELECT 2 ORDER BY 1; SELECT 1.0::float8 AS two UNION ALL SELECT 1 ORDER BY 1; SELECT 1.1 AS three UNION SELECT 2 UNION SELECT 3 ORDER BY 1; SELECT 1.1::float8 AS two UNION SELECT 2 UNION SELECT 2.0::float8 ORDER BY 1; SELECT 1.1 AS three UNION SELECT 2 UNION ALL SELECT 2 ORDER BY 1; SELECT 1.1 AS two UNION (SELECT 2 UNION ALL SELECT 2) ORDER BY 1; -- -- Try testing from tables... -- SELECT f1 AS five FROM FLOAT8_TBL UNION SELECT f1 FROM FLOAT8_TBL ORDER BY 1; SELECT f1 AS ten FROM FLOAT8_TBL UNION ALL SELECT f1 FROM FLOAT8_TBL; SELECT f1 AS nine FROM FLOAT8_TBL UNION SELECT f1 FROM INT4_TBL ORDER BY 1; SELECT f1 AS ten FROM FLOAT8_TBL UNION ALL SELECT f1 FROM INT4_TBL; SELECT f1 AS five FROM FLOAT8_TBL WHERE f1 BETWEEN -1e6 AND 1e6 UNION SELECT f1 FROM INT4_TBL WHERE f1 BETWEEN 0 AND 1000000 ORDER BY 1; SELECT CAST(f1 AS char(4)) AS three FROM VARCHAR_TBL UNION SELECT f1 FROM CHAR_TBL ORDER BY 1; SELECT f1 AS three FROM VARCHAR_TBL UNION SELECT CAST(f1 AS varchar) FROM CHAR_TBL ORDER BY 1; SELECT f1 AS eight FROM VARCHAR_TBL UNION ALL SELECT f1 FROM CHAR_TBL; SELECT f1 AS five FROM TEXT_TBL UNION SELECT f1 FROM VARCHAR_TBL UNION SELECT TRIM(TRAILING FROM f1) FROM CHAR_TBL ORDER BY 1; -- -- INTERSECT and EXCEPT -- SELECT q2 FROM int8_tbl INTERSECT SELECT q1 FROM int8_tbl ORDER BY 1; SELECT q2 FROM int8_tbl INTERSECT ALL SELECT q1 FROM int8_tbl ORDER BY 1; SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1; SELECT q2 FROM int8_tbl EXCEPT ALL SELECT q1 FROM int8_tbl ORDER BY 1; SELECT q2 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q1 FROM int8_tbl ORDER BY 1; SELECT q1 FROM int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY 1; SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q2 FROM int8_tbl ORDER BY 1; SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl ORDER BY 1; SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q1 FROM int8_tbl FOR NO KEY UPDATE; -- nested cases (SELECT 1,2,3 UNION SELECT 4,5,6) INTERSECT SELECT 4,5,6; (SELECT 1,2,3 UNION SELECT 4,5,6 ORDER BY 1,2) INTERSECT SELECT 4,5,6; (SELECT 1,2,3 UNION SELECT 4,5,6) EXCEPT SELECT 4,5,6; (SELECT 1,2,3 UNION SELECT 4,5,6 ORDER BY 1,2) EXCEPT SELECT 4,5,6; -- exercise both hashed and sorted implementations of INTERSECT/EXCEPT set enable_hashagg to on; explain (costs off) select count(*) from ( select unique1 from tenk1 intersect select fivethous from tenk1 ) ss; select count(*) from ( select unique1 from tenk1 intersect select fivethous from tenk1 ) ss; explain (costs off) select unique1 from tenk1 except select unique2 from tenk1 where unique2 != 10; select unique1 from tenk1 except select unique2 from tenk1 where unique2 != 10; set enable_hashagg to off; explain (costs off) select count(*) from ( select unique1 from tenk1 intersect select fivethous from tenk1 ) ss; select count(*) from ( select unique1 from tenk1 intersect select fivethous from tenk1 ) ss; explain (costs off) select unique1 from tenk1 except select unique2 from tenk1 where unique2 != 10; select unique1 from tenk1 except select unique2 from tenk1 where unique2 != 10; reset enable_hashagg; -- -- Mixed types -- SELECT f1 FROM float8_tbl INTERSECT SELECT f1 FROM int4_tbl ORDER BY 1; SELECT f1 FROM float8_tbl EXCEPT SELECT f1 FROM int4_tbl ORDER BY 1; -- -- Operator precedence and (((((extra))))) parentheses -- SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl ORDER BY 1; SELECT q1 FROM int8_tbl INTERSECT (((SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl))) ORDER BY 1; (((SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl ORDER BY 1))) UNION ALL SELECT q2 FROM int8_tbl; SELECT q1 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1; SELECT q1 FROM int8_tbl UNION ALL (((SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1))); (((SELECT q1 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl))) EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1; -- -- Subqueries with ORDER BY & LIMIT clauses -- -- In this syntax, ORDER BY/LIMIT apply to the result of the EXCEPT SELECT q1,q2 FROM int8_tbl EXCEPT SELECT q2,q1 FROM int8_tbl ORDER BY q2,q1; -- This should fail, because q2 isn't a name of an EXCEPT output column SELECT q1 FROM int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1; -- But this should work: SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1))) ORDER BY 1; -- -- New syntaxes (7.1) permit new tests -- (((((select * from int8_tbl))))); -- -- Check behavior with empty select list (allowed since 9.4) -- select union select; select intersect select; select except select; -- check hashed implementation set enable_hashagg = true; set enable_sort = false; explain (costs off) select from generate_series(1,5) union select from generate_series(1,3); explain (costs off) select from generate_series(1,5) intersect select from generate_series(1,3); select from generate_series(1,5) union select from generate_series(1,3); select from generate_series(1,5) union all select from generate_series(1,3); select from generate_series(1,5) intersect select from generate_series(1,3); select from generate_series(1,5) intersect all select from generate_series(1,3); select from generate_series(1,5) except select from generate_series(1,3); select from generate_series(1,5) except all select from generate_series(1,3); -- check sorted implementation set enable_hashagg = false; set enable_sort = true; explain (costs off) select from generate_series(1,5) union select from generate_series(1,3); explain (costs off) select from generate_series(1,5) intersect select from generate_series(1,3); select from generate_series(1,5) union select from generate_series(1,3); select from generate_series(1,5) union all select from generate_series(1,3); select from generate_series(1,5) intersect select from generate_series(1,3); select from generate_series(1,5) intersect all select from generate_series(1,3); select from generate_series(1,5) except select from generate_series(1,3); select from generate_series(1,5) except all select from generate_series(1,3); reset enable_hashagg; reset enable_sort; -- -- Check handling of a case with unknown constants. We don't guarantee -- an undecorated constant will work in all cases, but historically this -- usage has worked, so test we don't break it. -- SELECT a.f1 FROM (SELECT 'test' AS f1 FROM varchar_tbl) a UNION SELECT b.f1 FROM (SELECT f1 FROM varchar_tbl) b ORDER BY 1; -- This should fail, but it should produce an error cursor SELECT '3.4'::numeric UNION SELECT 'foo'; -- -- Test that expression-index constraints can be pushed down through -- UNION or UNION ALL -- CREATE TEMP TABLE t1 (a text, b text); CREATE INDEX t1_ab_idx on t1 ((a || b)); CREATE TEMP TABLE t2 (ab text primary key); INSERT INTO t1 VALUES ('a', 'b'), ('x', 'y'); INSERT INTO t2 VALUES ('ab'), ('xy'); set enable_seqscan = off; set enable_indexscan = on; set enable_bitmapscan = off; explain (costs off) SELECT * FROM (SELECT a || b AS ab FROM t1 UNION ALL SELECT * FROM t2) t WHERE ab = 'ab'; explain (costs off) SELECT * FROM (SELECT a || b AS ab FROM t1 UNION SELECT * FROM t2) t WHERE ab = 'ab'; -- -- Test that ORDER BY for UNION ALL can be pushed down to inheritance -- children. -- CREATE TEMP TABLE t1c (b text, a text); ALTER TABLE t1c INHERIT t1; CREATE TEMP TABLE t2c (primary key (ab)) INHERITS (t2); INSERT INTO t1c VALUES ('v', 'w'), ('c', 'd'), ('m', 'n'), ('e', 'f'); INSERT INTO t2c VALUES ('vw'), ('cd'), ('mn'), ('ef'); CREATE INDEX t1c_ab_idx on t1c ((a || b)); set enable_seqscan = on; set enable_indexonlyscan = off; explain (costs off) SELECT * FROM (SELECT a || b AS ab FROM t1 UNION ALL SELECT ab FROM t2) t ORDER BY 1 LIMIT 8; SELECT * FROM (SELECT a || b AS ab FROM t1 UNION ALL SELECT ab FROM t2) t ORDER BY 1 LIMIT 8; reset enable_seqscan; reset enable_indexscan; reset enable_bitmapscan; -- This simpler variant of the above test has been observed to fail differently create table events (event_id int primary key); create table other_events (event_id int primary key); create table events_child () inherits (events); explain (costs off) select event_id from (select event_id from events union all select event_id from other_events) ss order by event_id; drop table events_child, events, other_events; reset enable_indexonlyscan; -- Test constraint exclusion of UNION ALL subqueries explain (costs off) SELECT * FROM (SELECT 1 AS t, * FROM tenk1 a UNION ALL SELECT 2 AS t, * FROM tenk1 b) c WHERE t = 2; -- Test that we push quals into UNION sub-selects only when it's safe explain (costs off) SELECT * FROM (SELECT 1 AS t, 2 AS x UNION SELECT 2 AS t, 4 AS x) ss WHERE x < 4 ORDER BY x; SELECT * FROM (SELECT 1 AS t, 2 AS x UNION SELECT 2 AS t, 4 AS x) ss WHERE x < 4 ORDER BY x; explain (costs off) SELECT * FROM (SELECT 1 AS t, generate_series(1,10) AS x UNION SELECT 2 AS t, 4 AS x) ss WHERE x < 4 ORDER BY x; SELECT * FROM (SELECT 1 AS t, generate_series(1,10) AS x UNION SELECT 2 AS t, 4 AS x) ss WHERE x < 4 ORDER BY x; explain (costs off) SELECT * FROM (SELECT 1 AS t, (random()*3)::int AS x UNION SELECT 2 AS t, 4 AS x) ss WHERE x > 3 ORDER BY x; SELECT * FROM (SELECT 1 AS t, (random()*3)::int AS x UNION SELECT 2 AS t, 4 AS x) ss WHERE x > 3 ORDER BY x; -- Test cases where the native ordering of a sub-select has more pathkeys -- than the outer query cares about explain (costs off) select distinct q1 from (select distinct * from int8_tbl i81 union all select distinct * from int8_tbl i82) ss where q2 = q2; select distinct q1 from (select distinct * from int8_tbl i81 union all select distinct * from int8_tbl i82) ss where q2 = q2; explain (costs off) select distinct q1 from (select distinct * from int8_tbl i81 union all select distinct * from int8_tbl i82) ss where -q1 = q2; select distinct q1 from (select distinct * from int8_tbl i81 union all select distinct * from int8_tbl i82) ss where -q1 = q2; -- Test proper handling of parameterized appendrel paths when the -- potential join qual is expensive create function expensivefunc(int) returns int language plpgsql immutable strict cost 10000 as $$begin return $1; end$$; create temp table t3 as select generate_series(-1000,1000) as x; create index t3i on t3 (expensivefunc(x)); analyze t3; explain (costs off) select * from (select * from t3 a union all select * from t3 b) ss join int4_tbl on f1 = expensivefunc(x); select * from (select * from t3 a union all select * from t3 b) ss join int4_tbl on f1 = expensivefunc(x); drop table t3; drop function expensivefunc(int); -- Test handling of appendrel quals that const-simplify into an AND explain (costs off) select * from (select *, 0 as x from int8_tbl a union all select *, 1 as x from int8_tbl b) ss where (x = 0) or (q1 >= q2 and q1 <= q2); select * from (select *, 0 as x from int8_tbl a union all select *, 1 as x from int8_tbl b) ss where (x = 0) or (q1 >= q2 and q1 <= q2); libpg_query-13-2.1.0/test/sql/postgres_regress/updatable_views.sql000066400000000000000000001507071413137616400253520ustar00rootroot00000000000000-- -- UPDATABLE VIEWS -- -- avoid bit-exact output here because operations may not be bit-exact. SET extra_float_digits = 0; -- check that non-updatable views and columns are rejected with useful error -- messages CREATE TABLE base_tbl (a int PRIMARY KEY, b text DEFAULT 'Unspecified'); INSERT INTO base_tbl SELECT i, 'Row ' || i FROM generate_series(-2, 2) g(i); CREATE VIEW ro_view1 AS SELECT DISTINCT a, b FROM base_tbl; -- DISTINCT not supported CREATE VIEW ro_view2 AS SELECT a, b FROM base_tbl GROUP BY a, b; -- GROUP BY not supported CREATE VIEW ro_view3 AS SELECT 1 FROM base_tbl HAVING max(a) > 0; -- HAVING not supported CREATE VIEW ro_view4 AS SELECT count(*) FROM base_tbl; -- Aggregate functions not supported CREATE VIEW ro_view5 AS SELECT a, rank() OVER() FROM base_tbl; -- Window functions not supported CREATE VIEW ro_view6 AS SELECT a, b FROM base_tbl UNION SELECT -a, b FROM base_tbl; -- Set ops not supported CREATE VIEW ro_view7 AS WITH t AS (SELECT a, b FROM base_tbl) SELECT * FROM t; -- WITH not supported CREATE VIEW ro_view8 AS SELECT a, b FROM base_tbl ORDER BY a OFFSET 1; -- OFFSET not supported CREATE VIEW ro_view9 AS SELECT a, b FROM base_tbl ORDER BY a LIMIT 1; -- LIMIT not supported CREATE VIEW ro_view10 AS SELECT 1 AS a; -- No base relations CREATE VIEW ro_view11 AS SELECT b1.a, b2.b FROM base_tbl b1, base_tbl b2; -- Multiple base relations CREATE VIEW ro_view12 AS SELECT * FROM generate_series(1, 10) AS g(a); -- SRF in rangetable CREATE VIEW ro_view13 AS SELECT a, b FROM (SELECT * FROM base_tbl) AS t; -- Subselect in rangetable CREATE VIEW rw_view14 AS SELECT ctid, a, b FROM base_tbl; -- System columns may be part of an updatable view CREATE VIEW rw_view15 AS SELECT a, upper(b) FROM base_tbl; -- Expression/function may be part of an updatable view CREATE VIEW rw_view16 AS SELECT a, b, a AS aa FROM base_tbl; -- Repeated column may be part of an updatable view CREATE VIEW ro_view17 AS SELECT * FROM ro_view1; -- Base relation not updatable CREATE VIEW ro_view18 AS SELECT * FROM (VALUES(1)) AS tmp(a); -- VALUES in rangetable CREATE SEQUENCE uv_seq; CREATE VIEW ro_view19 AS SELECT * FROM uv_seq; -- View based on a sequence CREATE VIEW ro_view20 AS SELECT a, b, generate_series(1, a) g FROM base_tbl; -- SRF in targetlist not supported SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name LIKE E'r_\\_view%' ORDER BY table_name; SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name LIKE E'r_\\_view%' ORDER BY table_name; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name LIKE E'r_\\_view%' ORDER BY table_name, ordinal_position; -- Read-only views DELETE FROM ro_view1; DELETE FROM ro_view2; DELETE FROM ro_view3; DELETE FROM ro_view4; DELETE FROM ro_view5; DELETE FROM ro_view6; UPDATE ro_view7 SET a=a+1; UPDATE ro_view8 SET a=a+1; UPDATE ro_view9 SET a=a+1; UPDATE ro_view10 SET a=a+1; UPDATE ro_view11 SET a=a+1; UPDATE ro_view12 SET a=a+1; INSERT INTO ro_view13 VALUES (3, 'Row 3'); -- Partially updatable view INSERT INTO rw_view14 VALUES (null, 3, 'Row 3'); -- should fail INSERT INTO rw_view14 (a, b) VALUES (3, 'Row 3'); -- should be OK UPDATE rw_view14 SET ctid=null WHERE a=3; -- should fail UPDATE rw_view14 SET b='ROW 3' WHERE a=3; -- should be OK SELECT * FROM base_tbl; DELETE FROM rw_view14 WHERE a=3; -- should be OK -- Partially updatable view INSERT INTO rw_view15 VALUES (3, 'ROW 3'); -- should fail INSERT INTO rw_view15 (a) VALUES (3); -- should be OK INSERT INTO rw_view15 (a) VALUES (3) ON CONFLICT DO NOTHING; -- succeeds SELECT * FROM rw_view15; INSERT INTO rw_view15 (a) VALUES (3) ON CONFLICT (a) DO NOTHING; -- succeeds SELECT * FROM rw_view15; INSERT INTO rw_view15 (a) VALUES (3) ON CONFLICT (a) DO UPDATE set a = excluded.a; -- succeeds SELECT * FROM rw_view15; INSERT INTO rw_view15 (a) VALUES (3) ON CONFLICT (a) DO UPDATE set upper = 'blarg'; -- fails SELECT * FROM rw_view15; SELECT * FROM rw_view15; ALTER VIEW rw_view15 ALTER COLUMN upper SET DEFAULT 'NOT SET'; INSERT INTO rw_view15 (a) VALUES (4); -- should fail UPDATE rw_view15 SET upper='ROW 3' WHERE a=3; -- should fail UPDATE rw_view15 SET upper=DEFAULT WHERE a=3; -- should fail UPDATE rw_view15 SET a=4 WHERE a=3; -- should be OK SELECT * FROM base_tbl; DELETE FROM rw_view15 WHERE a=4; -- should be OK -- Partially updatable view INSERT INTO rw_view16 VALUES (3, 'Row 3', 3); -- should fail INSERT INTO rw_view16 (a, b) VALUES (3, 'Row 3'); -- should be OK UPDATE rw_view16 SET a=3, aa=-3 WHERE a=3; -- should fail UPDATE rw_view16 SET aa=-3 WHERE a=3; -- should be OK SELECT * FROM base_tbl; DELETE FROM rw_view16 WHERE a=-3; -- should be OK -- Read-only views INSERT INTO ro_view17 VALUES (3, 'ROW 3'); DELETE FROM ro_view18; UPDATE ro_view19 SET last_value=1000; UPDATE ro_view20 SET b=upper(b); -- A view with a conditional INSTEAD rule but no unconditional INSTEAD rules -- or INSTEAD OF triggers should be non-updatable and generate useful error -- messages with appropriate detail CREATE RULE rw_view16_ins_rule AS ON INSERT TO rw_view16 WHERE NEW.a > 0 DO INSTEAD INSERT INTO base_tbl VALUES (NEW.a, NEW.b); CREATE RULE rw_view16_upd_rule AS ON UPDATE TO rw_view16 WHERE OLD.a > 0 DO INSTEAD UPDATE base_tbl SET b=NEW.b WHERE a=OLD.a; CREATE RULE rw_view16_del_rule AS ON DELETE TO rw_view16 WHERE OLD.a > 0 DO INSTEAD DELETE FROM base_tbl WHERE a=OLD.a; INSERT INTO rw_view16 (a, b) VALUES (3, 'Row 3'); -- should fail UPDATE rw_view16 SET b='ROW 2' WHERE a=2; -- should fail DELETE FROM rw_view16 WHERE a=2; -- should fail DROP TABLE base_tbl CASCADE; DROP VIEW ro_view10, ro_view12, ro_view18; DROP SEQUENCE uv_seq CASCADE; -- simple updatable view CREATE TABLE base_tbl (a int PRIMARY KEY, b text DEFAULT 'Unspecified'); INSERT INTO base_tbl SELECT i, 'Row ' || i FROM generate_series(-2, 2) g(i); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl WHERE a>0; SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name = 'rw_view1'; SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name = 'rw_view1'; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name = 'rw_view1' ORDER BY ordinal_position; INSERT INTO rw_view1 VALUES (3, 'Row 3'); INSERT INTO rw_view1 (a) VALUES (4); UPDATE rw_view1 SET a=5 WHERE a=4; DELETE FROM rw_view1 WHERE b='Row 2'; SELECT * FROM base_tbl; EXPLAIN (costs off) UPDATE rw_view1 SET a=6 WHERE a=5; EXPLAIN (costs off) DELETE FROM rw_view1 WHERE a=5; DROP TABLE base_tbl CASCADE; -- view on top of view CREATE TABLE base_tbl (a int PRIMARY KEY, b text DEFAULT 'Unspecified'); INSERT INTO base_tbl SELECT i, 'Row ' || i FROM generate_series(-2, 2) g(i); CREATE VIEW rw_view1 AS SELECT b AS bb, a AS aa FROM base_tbl WHERE a>0; CREATE VIEW rw_view2 AS SELECT aa AS aaa, bb AS bbb FROM rw_view1 WHERE aa<10; SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name = 'rw_view2'; SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name = 'rw_view2'; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name = 'rw_view2' ORDER BY ordinal_position; INSERT INTO rw_view2 VALUES (3, 'Row 3'); INSERT INTO rw_view2 (aaa) VALUES (4); SELECT * FROM rw_view2; UPDATE rw_view2 SET bbb='Row 4' WHERE aaa=4; DELETE FROM rw_view2 WHERE aaa=2; SELECT * FROM rw_view2; EXPLAIN (costs off) UPDATE rw_view2 SET aaa=5 WHERE aaa=4; EXPLAIN (costs off) DELETE FROM rw_view2 WHERE aaa=4; DROP TABLE base_tbl CASCADE; -- view on top of view with rules CREATE TABLE base_tbl (a int PRIMARY KEY, b text DEFAULT 'Unspecified'); INSERT INTO base_tbl SELECT i, 'Row ' || i FROM generate_series(-2, 2) g(i); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl WHERE a>0 OFFSET 0; -- not updatable without rules/triggers CREATE VIEW rw_view2 AS SELECT * FROM rw_view1 WHERE a<10; SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name LIKE 'rw_view%' ORDER BY table_name, ordinal_position; CREATE RULE rw_view1_ins_rule AS ON INSERT TO rw_view1 DO INSTEAD INSERT INTO base_tbl VALUES (NEW.a, NEW.b) RETURNING *; SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name LIKE 'rw_view%' ORDER BY table_name, ordinal_position; CREATE RULE rw_view1_upd_rule AS ON UPDATE TO rw_view1 DO INSTEAD UPDATE base_tbl SET b=NEW.b WHERE a=OLD.a RETURNING NEW.*; SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name LIKE 'rw_view%' ORDER BY table_name, ordinal_position; CREATE RULE rw_view1_del_rule AS ON DELETE TO rw_view1 DO INSTEAD DELETE FROM base_tbl WHERE a=OLD.a RETURNING OLD.*; SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name LIKE 'rw_view%' ORDER BY table_name, ordinal_position; INSERT INTO rw_view2 VALUES (3, 'Row 3') RETURNING *; UPDATE rw_view2 SET b='Row three' WHERE a=3 RETURNING *; SELECT * FROM rw_view2; DELETE FROM rw_view2 WHERE a=3 RETURNING *; SELECT * FROM rw_view2; EXPLAIN (costs off) UPDATE rw_view2 SET a=3 WHERE a=2; EXPLAIN (costs off) DELETE FROM rw_view2 WHERE a=2; DROP TABLE base_tbl CASCADE; -- view on top of view with triggers CREATE TABLE base_tbl (a int PRIMARY KEY, b text DEFAULT 'Unspecified'); INSERT INTO base_tbl SELECT i, 'Row ' || i FROM generate_series(-2, 2) g(i); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl WHERE a>0 OFFSET 0; -- not updatable without rules/triggers CREATE VIEW rw_view2 AS SELECT * FROM rw_view1 WHERE a<10; SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, is_updatable, is_insertable_into, is_trigger_updatable, is_trigger_deletable, is_trigger_insertable_into FROM information_schema.views WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name LIKE 'rw_view%' ORDER BY table_name, ordinal_position; CREATE FUNCTION rw_view1_trig_fn() RETURNS trigger AS $$ BEGIN IF TG_OP = 'INSERT' THEN INSERT INTO base_tbl VALUES (NEW.a, NEW.b); RETURN NEW; ELSIF TG_OP = 'UPDATE' THEN UPDATE base_tbl SET b=NEW.b WHERE a=OLD.a; RETURN NEW; ELSIF TG_OP = 'DELETE' THEN DELETE FROM base_tbl WHERE a=OLD.a; RETURN OLD; END IF; END; $$ LANGUAGE plpgsql; CREATE TRIGGER rw_view1_ins_trig INSTEAD OF INSERT ON rw_view1 FOR EACH ROW EXECUTE PROCEDURE rw_view1_trig_fn(); SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, is_updatable, is_insertable_into, is_trigger_updatable, is_trigger_deletable, is_trigger_insertable_into FROM information_schema.views WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name LIKE 'rw_view%' ORDER BY table_name, ordinal_position; CREATE TRIGGER rw_view1_upd_trig INSTEAD OF UPDATE ON rw_view1 FOR EACH ROW EXECUTE PROCEDURE rw_view1_trig_fn(); SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, is_updatable, is_insertable_into, is_trigger_updatable, is_trigger_deletable, is_trigger_insertable_into FROM information_schema.views WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name LIKE 'rw_view%' ORDER BY table_name, ordinal_position; CREATE TRIGGER rw_view1_del_trig INSTEAD OF DELETE ON rw_view1 FOR EACH ROW EXECUTE PROCEDURE rw_view1_trig_fn(); SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, is_updatable, is_insertable_into, is_trigger_updatable, is_trigger_deletable, is_trigger_insertable_into FROM information_schema.views WHERE table_name LIKE 'rw_view%' ORDER BY table_name; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name LIKE 'rw_view%' ORDER BY table_name, ordinal_position; INSERT INTO rw_view2 VALUES (3, 'Row 3') RETURNING *; UPDATE rw_view2 SET b='Row three' WHERE a=3 RETURNING *; SELECT * FROM rw_view2; DELETE FROM rw_view2 WHERE a=3 RETURNING *; SELECT * FROM rw_view2; EXPLAIN (costs off) UPDATE rw_view2 SET a=3 WHERE a=2; EXPLAIN (costs off) DELETE FROM rw_view2 WHERE a=2; DROP TABLE base_tbl CASCADE; DROP FUNCTION rw_view1_trig_fn(); -- update using whole row from view CREATE TABLE base_tbl (a int PRIMARY KEY, b text DEFAULT 'Unspecified'); INSERT INTO base_tbl SELECT i, 'Row ' || i FROM generate_series(-2, 2) g(i); CREATE VIEW rw_view1 AS SELECT b AS bb, a AS aa FROM base_tbl; CREATE FUNCTION rw_view1_aa(x rw_view1) RETURNS int AS $$ SELECT x.aa $$ LANGUAGE sql; UPDATE rw_view1 v SET bb='Updated row 2' WHERE rw_view1_aa(v)=2 RETURNING rw_view1_aa(v), v.bb; SELECT * FROM base_tbl; EXPLAIN (costs off) UPDATE rw_view1 v SET bb='Updated row 2' WHERE rw_view1_aa(v)=2 RETURNING rw_view1_aa(v), v.bb; DROP TABLE base_tbl CASCADE; -- permissions checks CREATE USER regress_view_user1; CREATE USER regress_view_user2; SET SESSION AUTHORIZATION regress_view_user1; CREATE TABLE base_tbl(a int, b text, c float); INSERT INTO base_tbl VALUES (1, 'Row 1', 1.0); CREATE VIEW rw_view1 AS SELECT b AS bb, c AS cc, a AS aa FROM base_tbl; INSERT INTO rw_view1 VALUES ('Row 2', 2.0, 2); GRANT SELECT ON base_tbl TO regress_view_user2; GRANT SELECT ON rw_view1 TO regress_view_user2; GRANT UPDATE (a,c) ON base_tbl TO regress_view_user2; GRANT UPDATE (bb,cc) ON rw_view1 TO regress_view_user2; RESET SESSION AUTHORIZATION; SET SESSION AUTHORIZATION regress_view_user2; CREATE VIEW rw_view2 AS SELECT b AS bb, c AS cc, a AS aa FROM base_tbl; SELECT * FROM base_tbl; -- ok SELECT * FROM rw_view1; -- ok SELECT * FROM rw_view2; -- ok INSERT INTO base_tbl VALUES (3, 'Row 3', 3.0); -- not allowed INSERT INTO rw_view1 VALUES ('Row 3', 3.0, 3); -- not allowed INSERT INTO rw_view2 VALUES ('Row 3', 3.0, 3); -- not allowed UPDATE base_tbl SET a=a, c=c; -- ok UPDATE base_tbl SET b=b; -- not allowed UPDATE rw_view1 SET bb=bb, cc=cc; -- ok UPDATE rw_view1 SET aa=aa; -- not allowed UPDATE rw_view2 SET aa=aa, cc=cc; -- ok UPDATE rw_view2 SET bb=bb; -- not allowed DELETE FROM base_tbl; -- not allowed DELETE FROM rw_view1; -- not allowed DELETE FROM rw_view2; -- not allowed RESET SESSION AUTHORIZATION; SET SESSION AUTHORIZATION regress_view_user1; GRANT INSERT, DELETE ON base_tbl TO regress_view_user2; RESET SESSION AUTHORIZATION; SET SESSION AUTHORIZATION regress_view_user2; INSERT INTO base_tbl VALUES (3, 'Row 3', 3.0); -- ok INSERT INTO rw_view1 VALUES ('Row 4', 4.0, 4); -- not allowed INSERT INTO rw_view2 VALUES ('Row 4', 4.0, 4); -- ok DELETE FROM base_tbl WHERE a=1; -- ok DELETE FROM rw_view1 WHERE aa=2; -- not allowed DELETE FROM rw_view2 WHERE aa=2; -- ok SELECT * FROM base_tbl; RESET SESSION AUTHORIZATION; SET SESSION AUTHORIZATION regress_view_user1; REVOKE INSERT, DELETE ON base_tbl FROM regress_view_user2; GRANT INSERT, DELETE ON rw_view1 TO regress_view_user2; RESET SESSION AUTHORIZATION; SET SESSION AUTHORIZATION regress_view_user2; INSERT INTO base_tbl VALUES (5, 'Row 5', 5.0); -- not allowed INSERT INTO rw_view1 VALUES ('Row 5', 5.0, 5); -- ok INSERT INTO rw_view2 VALUES ('Row 6', 6.0, 6); -- not allowed DELETE FROM base_tbl WHERE a=3; -- not allowed DELETE FROM rw_view1 WHERE aa=3; -- ok DELETE FROM rw_view2 WHERE aa=4; -- not allowed SELECT * FROM base_tbl; RESET SESSION AUTHORIZATION; DROP TABLE base_tbl CASCADE; -- nested-view permissions CREATE TABLE base_tbl(a int, b text, c float); INSERT INTO base_tbl VALUES (1, 'Row 1', 1.0); SET SESSION AUTHORIZATION regress_view_user1; CREATE VIEW rw_view1 AS SELECT * FROM base_tbl; SELECT * FROM rw_view1; -- not allowed SELECT * FROM rw_view1 FOR UPDATE; -- not allowed UPDATE rw_view1 SET b = 'foo' WHERE a = 1; -- not allowed SET SESSION AUTHORIZATION regress_view_user2; CREATE VIEW rw_view2 AS SELECT * FROM rw_view1; SELECT * FROM rw_view2; -- not allowed SELECT * FROM rw_view2 FOR UPDATE; -- not allowed UPDATE rw_view2 SET b = 'bar' WHERE a = 1; -- not allowed RESET SESSION AUTHORIZATION; GRANT SELECT ON base_tbl TO regress_view_user1; SET SESSION AUTHORIZATION regress_view_user1; SELECT * FROM rw_view1; SELECT * FROM rw_view1 FOR UPDATE; -- not allowed UPDATE rw_view1 SET b = 'foo' WHERE a = 1; -- not allowed SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM rw_view2; -- not allowed SELECT * FROM rw_view2 FOR UPDATE; -- not allowed UPDATE rw_view2 SET b = 'bar' WHERE a = 1; -- not allowed SET SESSION AUTHORIZATION regress_view_user1; GRANT SELECT ON rw_view1 TO regress_view_user2; SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM rw_view2; SELECT * FROM rw_view2 FOR UPDATE; -- not allowed UPDATE rw_view2 SET b = 'bar' WHERE a = 1; -- not allowed RESET SESSION AUTHORIZATION; GRANT UPDATE ON base_tbl TO regress_view_user1; SET SESSION AUTHORIZATION regress_view_user1; SELECT * FROM rw_view1; SELECT * FROM rw_view1 FOR UPDATE; UPDATE rw_view1 SET b = 'foo' WHERE a = 1; SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM rw_view2; SELECT * FROM rw_view2 FOR UPDATE; -- not allowed UPDATE rw_view2 SET b = 'bar' WHERE a = 1; -- not allowed SET SESSION AUTHORIZATION regress_view_user1; GRANT UPDATE ON rw_view1 TO regress_view_user2; SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM rw_view2; SELECT * FROM rw_view2 FOR UPDATE; UPDATE rw_view2 SET b = 'bar' WHERE a = 1; RESET SESSION AUTHORIZATION; REVOKE UPDATE ON base_tbl FROM regress_view_user1; SET SESSION AUTHORIZATION regress_view_user1; SELECT * FROM rw_view1; SELECT * FROM rw_view1 FOR UPDATE; -- not allowed UPDATE rw_view1 SET b = 'foo' WHERE a = 1; -- not allowed SET SESSION AUTHORIZATION regress_view_user2; SELECT * FROM rw_view2; SELECT * FROM rw_view2 FOR UPDATE; -- not allowed UPDATE rw_view2 SET b = 'bar' WHERE a = 1; -- not allowed RESET SESSION AUTHORIZATION; DROP TABLE base_tbl CASCADE; DROP USER regress_view_user1; DROP USER regress_view_user2; -- column defaults CREATE TABLE base_tbl (a int PRIMARY KEY, b text DEFAULT 'Unspecified', c serial); INSERT INTO base_tbl VALUES (1, 'Row 1'); INSERT INTO base_tbl VALUES (2, 'Row 2'); INSERT INTO base_tbl VALUES (3); CREATE VIEW rw_view1 AS SELECT a AS aa, b AS bb FROM base_tbl; ALTER VIEW rw_view1 ALTER COLUMN bb SET DEFAULT 'View default'; INSERT INTO rw_view1 VALUES (4, 'Row 4'); INSERT INTO rw_view1 (aa) VALUES (5); SELECT * FROM base_tbl; DROP TABLE base_tbl CASCADE; -- Table having triggers CREATE TABLE base_tbl (a int PRIMARY KEY, b text DEFAULT 'Unspecified'); INSERT INTO base_tbl VALUES (1, 'Row 1'); INSERT INTO base_tbl VALUES (2, 'Row 2'); CREATE FUNCTION rw_view1_trig_fn() RETURNS trigger AS $$ BEGIN IF TG_OP = 'INSERT' THEN UPDATE base_tbl SET b=NEW.b WHERE a=1; RETURN NULL; END IF; RETURN NULL; END; $$ LANGUAGE plpgsql; CREATE TRIGGER rw_view1_ins_trig AFTER INSERT ON base_tbl FOR EACH ROW EXECUTE PROCEDURE rw_view1_trig_fn(); CREATE VIEW rw_view1 AS SELECT a AS aa, b AS bb FROM base_tbl; INSERT INTO rw_view1 VALUES (3, 'Row 3'); select * from base_tbl; DROP VIEW rw_view1; DROP TRIGGER rw_view1_ins_trig on base_tbl; DROP FUNCTION rw_view1_trig_fn(); DROP TABLE base_tbl; -- view with ORDER BY CREATE TABLE base_tbl (a int, b int); INSERT INTO base_tbl VALUES (1,2), (4,5), (3,-3); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl ORDER BY a+b; SELECT * FROM rw_view1; INSERT INTO rw_view1 VALUES (7,-8); SELECT * FROM rw_view1; EXPLAIN (verbose, costs off) UPDATE rw_view1 SET b = b + 1 RETURNING *; UPDATE rw_view1 SET b = b + 1 RETURNING *; SELECT * FROM rw_view1; DROP TABLE base_tbl CASCADE; -- multiple array-column updates CREATE TABLE base_tbl (a int, arr int[]); INSERT INTO base_tbl VALUES (1,ARRAY[2]), (3,ARRAY[4]); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl; UPDATE rw_view1 SET arr[1] = 42, arr[2] = 77 WHERE a = 3; SELECT * FROM rw_view1; DROP TABLE base_tbl CASCADE; -- views with updatable and non-updatable columns CREATE TABLE base_tbl(a float); INSERT INTO base_tbl SELECT i/10.0 FROM generate_series(1,10) g(i); CREATE VIEW rw_view1 AS SELECT ctid, sin(a) s, a, cos(a) c FROM base_tbl WHERE a != 0 ORDER BY abs(a); INSERT INTO rw_view1 VALUES (null, null, 1.1, null); -- should fail INSERT INTO rw_view1 (s, c, a) VALUES (null, null, 1.1); -- should fail INSERT INTO rw_view1 (a) VALUES (1.1) RETURNING a, s, c; -- OK UPDATE rw_view1 SET s = s WHERE a = 1.1; -- should fail UPDATE rw_view1 SET a = 1.05 WHERE a = 1.1 RETURNING s; -- OK DELETE FROM rw_view1 WHERE a = 1.05; -- OK CREATE VIEW rw_view2 AS SELECT s, c, s/c t, a base_a, ctid FROM rw_view1; INSERT INTO rw_view2 VALUES (null, null, null, 1.1, null); -- should fail INSERT INTO rw_view2(s, c, base_a) VALUES (null, null, 1.1); -- should fail INSERT INTO rw_view2(base_a) VALUES (1.1) RETURNING t; -- OK UPDATE rw_view2 SET s = s WHERE base_a = 1.1; -- should fail UPDATE rw_view2 SET t = t WHERE base_a = 1.1; -- should fail UPDATE rw_view2 SET base_a = 1.05 WHERE base_a = 1.1; -- OK DELETE FROM rw_view2 WHERE base_a = 1.05 RETURNING base_a, s, c, t; -- OK CREATE VIEW rw_view3 AS SELECT s, c, s/c t, ctid FROM rw_view1; INSERT INTO rw_view3 VALUES (null, null, null, null); -- should fail INSERT INTO rw_view3(s) VALUES (null); -- should fail UPDATE rw_view3 SET s = s; -- should fail DELETE FROM rw_view3 WHERE s = sin(0.1); -- should be OK SELECT * FROM base_tbl ORDER BY a; SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name LIKE E'r_\\_view%' ORDER BY table_name; SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name LIKE E'r_\\_view%' ORDER BY table_name; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name LIKE E'r_\\_view%' ORDER BY table_name, ordinal_position; SELECT events & 4 != 0 AS upd, events & 8 != 0 AS ins, events & 16 != 0 AS del FROM pg_catalog.pg_relation_is_updatable('rw_view3'::regclass, false) t(events); DROP TABLE base_tbl CASCADE; -- view on table with GENERATED columns CREATE TABLE base_tbl (id int, idplus1 int GENERATED ALWAYS AS (id + 1) STORED); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl; INSERT INTO base_tbl (id) VALUES (1); INSERT INTO rw_view1 (id) VALUES (2); INSERT INTO base_tbl (id, idplus1) VALUES (3, DEFAULT); INSERT INTO rw_view1 (id, idplus1) VALUES (4, DEFAULT); INSERT INTO base_tbl (id, idplus1) VALUES (5, 6); -- error INSERT INTO rw_view1 (id, idplus1) VALUES (6, 7); -- error SELECT * FROM base_tbl; UPDATE base_tbl SET id = 2000 WHERE id = 2; UPDATE rw_view1 SET id = 3000 WHERE id = 3; SELECT * FROM base_tbl; DROP TABLE base_tbl CASCADE; -- inheritance tests CREATE TABLE base_tbl_parent (a int); CREATE TABLE base_tbl_child (CHECK (a > 0)) INHERITS (base_tbl_parent); INSERT INTO base_tbl_parent SELECT * FROM generate_series(-8, -1); INSERT INTO base_tbl_child SELECT * FROM generate_series(1, 8); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl_parent; CREATE VIEW rw_view2 AS SELECT * FROM ONLY base_tbl_parent; SELECT * FROM rw_view1 ORDER BY a; SELECT * FROM ONLY rw_view1 ORDER BY a; SELECT * FROM rw_view2 ORDER BY a; INSERT INTO rw_view1 VALUES (-100), (100); INSERT INTO rw_view2 VALUES (-200), (200); UPDATE rw_view1 SET a = a*10 WHERE a IN (-1, 1); -- Should produce -10 and 10 UPDATE ONLY rw_view1 SET a = a*10 WHERE a IN (-2, 2); -- Should produce -20 and 20 UPDATE rw_view2 SET a = a*10 WHERE a IN (-3, 3); -- Should produce -30 only UPDATE ONLY rw_view2 SET a = a*10 WHERE a IN (-4, 4); -- Should produce -40 only DELETE FROM rw_view1 WHERE a IN (-5, 5); -- Should delete -5 and 5 DELETE FROM ONLY rw_view1 WHERE a IN (-6, 6); -- Should delete -6 and 6 DELETE FROM rw_view2 WHERE a IN (-7, 7); -- Should delete -7 only DELETE FROM ONLY rw_view2 WHERE a IN (-8, 8); -- Should delete -8 only SELECT * FROM ONLY base_tbl_parent ORDER BY a; SELECT * FROM base_tbl_child ORDER BY a; CREATE TABLE other_tbl_parent (id int); CREATE TABLE other_tbl_child () INHERITS (other_tbl_parent); INSERT INTO other_tbl_parent VALUES (7),(200); INSERT INTO other_tbl_child VALUES (8),(100); EXPLAIN (costs off) UPDATE rw_view1 SET a = a + 1000 FROM other_tbl_parent WHERE a = id; UPDATE rw_view1 SET a = a + 1000 FROM other_tbl_parent WHERE a = id; SELECT * FROM ONLY base_tbl_parent ORDER BY a; SELECT * FROM base_tbl_child ORDER BY a; DROP TABLE base_tbl_parent, base_tbl_child CASCADE; DROP TABLE other_tbl_parent CASCADE; -- simple WITH CHECK OPTION CREATE TABLE base_tbl (a int, b int DEFAULT 10); INSERT INTO base_tbl VALUES (1,2), (2,3), (1,-1); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl WHERE a < b WITH LOCAL CHECK OPTION; \d+ rw_view1 SELECT * FROM information_schema.views WHERE table_name = 'rw_view1'; INSERT INTO rw_view1 VALUES(3,4); -- ok INSERT INTO rw_view1 VALUES(4,3); -- should fail INSERT INTO rw_view1 VALUES(5,null); -- should fail UPDATE rw_view1 SET b = 5 WHERE a = 3; -- ok UPDATE rw_view1 SET b = -5 WHERE a = 3; -- should fail INSERT INTO rw_view1(a) VALUES (9); -- ok INSERT INTO rw_view1(a) VALUES (10); -- should fail SELECT * FROM base_tbl; DROP TABLE base_tbl CASCADE; -- WITH LOCAL/CASCADED CHECK OPTION CREATE TABLE base_tbl (a int); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl WHERE a > 0; CREATE VIEW rw_view2 AS SELECT * FROM rw_view1 WHERE a < 10 WITH CHECK OPTION; -- implicitly cascaded \d+ rw_view2 SELECT * FROM information_schema.views WHERE table_name = 'rw_view2'; INSERT INTO rw_view2 VALUES (-5); -- should fail INSERT INTO rw_view2 VALUES (5); -- ok INSERT INTO rw_view2 VALUES (15); -- should fail SELECT * FROM base_tbl; UPDATE rw_view2 SET a = a - 10; -- should fail UPDATE rw_view2 SET a = a + 10; -- should fail CREATE OR REPLACE VIEW rw_view2 AS SELECT * FROM rw_view1 WHERE a < 10 WITH LOCAL CHECK OPTION; \d+ rw_view2 SELECT * FROM information_schema.views WHERE table_name = 'rw_view2'; INSERT INTO rw_view2 VALUES (-10); -- ok, but not in view INSERT INTO rw_view2 VALUES (20); -- should fail SELECT * FROM base_tbl; ALTER VIEW rw_view1 SET (check_option=here); -- invalid ALTER VIEW rw_view1 SET (check_option=local); INSERT INTO rw_view2 VALUES (-20); -- should fail INSERT INTO rw_view2 VALUES (30); -- should fail ALTER VIEW rw_view2 RESET (check_option); \d+ rw_view2 SELECT * FROM information_schema.views WHERE table_name = 'rw_view2'; INSERT INTO rw_view2 VALUES (30); -- ok, but not in view SELECT * FROM base_tbl; DROP TABLE base_tbl CASCADE; -- WITH CHECK OPTION with no local view qual CREATE TABLE base_tbl (a int); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl WITH CHECK OPTION; CREATE VIEW rw_view2 AS SELECT * FROM rw_view1 WHERE a > 0; CREATE VIEW rw_view3 AS SELECT * FROM rw_view2 WITH CHECK OPTION; SELECT * FROM information_schema.views WHERE table_name LIKE E'rw\\_view_' ORDER BY table_name; INSERT INTO rw_view1 VALUES (-1); -- ok INSERT INTO rw_view1 VALUES (1); -- ok INSERT INTO rw_view2 VALUES (-2); -- ok, but not in view INSERT INTO rw_view2 VALUES (2); -- ok INSERT INTO rw_view3 VALUES (-3); -- should fail INSERT INTO rw_view3 VALUES (3); -- ok DROP TABLE base_tbl CASCADE; -- WITH CHECK OPTION with scalar array ops CREATE TABLE base_tbl (a int, b int[]); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl WHERE a = ANY (b) WITH CHECK OPTION; INSERT INTO rw_view1 VALUES (1, ARRAY[1,2,3]); -- ok INSERT INTO rw_view1 VALUES (10, ARRAY[4,5]); -- should fail UPDATE rw_view1 SET b[2] = -b[2] WHERE a = 1; -- ok UPDATE rw_view1 SET b[1] = -b[1] WHERE a = 1; -- should fail PREPARE ins(int, int[]) AS INSERT INTO rw_view1 VALUES($1, $2); EXECUTE ins(2, ARRAY[1,2,3]); -- ok EXECUTE ins(10, ARRAY[4,5]); -- should fail DEALLOCATE PREPARE ins; DROP TABLE base_tbl CASCADE; -- WITH CHECK OPTION with subquery CREATE TABLE base_tbl (a int); CREATE TABLE ref_tbl (a int PRIMARY KEY); INSERT INTO ref_tbl SELECT * FROM generate_series(1,10); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl b WHERE EXISTS(SELECT 1 FROM ref_tbl r WHERE r.a = b.a) WITH CHECK OPTION; INSERT INTO rw_view1 VALUES (5); -- ok INSERT INTO rw_view1 VALUES (15); -- should fail UPDATE rw_view1 SET a = a + 5; -- ok UPDATE rw_view1 SET a = a + 5; -- should fail EXPLAIN (costs off) INSERT INTO rw_view1 VALUES (5); EXPLAIN (costs off) UPDATE rw_view1 SET a = a + 5; DROP TABLE base_tbl, ref_tbl CASCADE; -- WITH CHECK OPTION with BEFORE trigger on base table CREATE TABLE base_tbl (a int, b int); CREATE FUNCTION base_tbl_trig_fn() RETURNS trigger AS $$ BEGIN NEW.b := 10; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER base_tbl_trig BEFORE INSERT OR UPDATE ON base_tbl FOR EACH ROW EXECUTE PROCEDURE base_tbl_trig_fn(); CREATE VIEW rw_view1 AS SELECT * FROM base_tbl WHERE a < b WITH CHECK OPTION; INSERT INTO rw_view1 VALUES (5,0); -- ok INSERT INTO rw_view1 VALUES (15, 20); -- should fail UPDATE rw_view1 SET a = 20, b = 30; -- should fail DROP TABLE base_tbl CASCADE; DROP FUNCTION base_tbl_trig_fn(); -- WITH LOCAL CHECK OPTION with INSTEAD OF trigger on base view CREATE TABLE base_tbl (a int, b int); CREATE VIEW rw_view1 AS SELECT a FROM base_tbl WHERE a < b; CREATE FUNCTION rw_view1_trig_fn() RETURNS trigger AS $$ BEGIN IF TG_OP = 'INSERT' THEN INSERT INTO base_tbl VALUES (NEW.a, 10); RETURN NEW; ELSIF TG_OP = 'UPDATE' THEN UPDATE base_tbl SET a=NEW.a WHERE a=OLD.a; RETURN NEW; ELSIF TG_OP = 'DELETE' THEN DELETE FROM base_tbl WHERE a=OLD.a; RETURN OLD; END IF; END; $$ LANGUAGE plpgsql; CREATE TRIGGER rw_view1_trig INSTEAD OF INSERT OR UPDATE OR DELETE ON rw_view1 FOR EACH ROW EXECUTE PROCEDURE rw_view1_trig_fn(); CREATE VIEW rw_view2 AS SELECT * FROM rw_view1 WHERE a > 0 WITH LOCAL CHECK OPTION; INSERT INTO rw_view2 VALUES (-5); -- should fail INSERT INTO rw_view2 VALUES (5); -- ok INSERT INTO rw_view2 VALUES (50); -- ok, but not in view UPDATE rw_view2 SET a = a - 10; -- should fail SELECT * FROM base_tbl; -- Check option won't cascade down to base view with INSTEAD OF triggers ALTER VIEW rw_view2 SET (check_option=cascaded); INSERT INTO rw_view2 VALUES (100); -- ok, but not in view (doesn't fail rw_view1's check) UPDATE rw_view2 SET a = 200 WHERE a = 5; -- ok, but not in view (doesn't fail rw_view1's check) SELECT * FROM base_tbl; -- Neither local nor cascaded check options work with INSTEAD rules DROP TRIGGER rw_view1_trig ON rw_view1; CREATE RULE rw_view1_ins_rule AS ON INSERT TO rw_view1 DO INSTEAD INSERT INTO base_tbl VALUES (NEW.a, 10); CREATE RULE rw_view1_upd_rule AS ON UPDATE TO rw_view1 DO INSTEAD UPDATE base_tbl SET a=NEW.a WHERE a=OLD.a; INSERT INTO rw_view2 VALUES (-10); -- ok, but not in view (doesn't fail rw_view2's check) INSERT INTO rw_view2 VALUES (5); -- ok INSERT INTO rw_view2 VALUES (20); -- ok, but not in view (doesn't fail rw_view1's check) UPDATE rw_view2 SET a = 30 WHERE a = 5; -- ok, but not in view (doesn't fail rw_view1's check) INSERT INTO rw_view2 VALUES (5); -- ok UPDATE rw_view2 SET a = -5 WHERE a = 5; -- ok, but not in view (doesn't fail rw_view2's check) SELECT * FROM base_tbl; DROP TABLE base_tbl CASCADE; DROP FUNCTION rw_view1_trig_fn(); CREATE TABLE base_tbl (a int); CREATE VIEW rw_view1 AS SELECT a,10 AS b FROM base_tbl; CREATE RULE rw_view1_ins_rule AS ON INSERT TO rw_view1 DO INSTEAD INSERT INTO base_tbl VALUES (NEW.a); CREATE VIEW rw_view2 AS SELECT * FROM rw_view1 WHERE a > b WITH LOCAL CHECK OPTION; INSERT INTO rw_view2 VALUES (2,3); -- ok, but not in view (doesn't fail rw_view2's check) DROP TABLE base_tbl CASCADE; -- security barrier view CREATE TABLE base_tbl (person text, visibility text); INSERT INTO base_tbl VALUES ('Tom', 'public'), ('Dick', 'private'), ('Harry', 'public'); CREATE VIEW rw_view1 AS SELECT person FROM base_tbl WHERE visibility = 'public'; CREATE FUNCTION snoop(anyelement) RETURNS boolean AS $$ BEGIN RAISE NOTICE 'snooped value: %', $1; RETURN true; END; $$ LANGUAGE plpgsql COST 0.000001; CREATE OR REPLACE FUNCTION leakproof(anyelement) RETURNS boolean AS $$ BEGIN RETURN true; END; $$ LANGUAGE plpgsql STRICT IMMUTABLE LEAKPROOF; SELECT * FROM rw_view1 WHERE snoop(person); UPDATE rw_view1 SET person=person WHERE snoop(person); DELETE FROM rw_view1 WHERE NOT snoop(person); ALTER VIEW rw_view1 SET (security_barrier = true); SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name = 'rw_view1'; SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name = 'rw_view1'; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name = 'rw_view1' ORDER BY ordinal_position; SELECT * FROM rw_view1 WHERE snoop(person); UPDATE rw_view1 SET person=person WHERE snoop(person); DELETE FROM rw_view1 WHERE NOT snoop(person); EXPLAIN (costs off) SELECT * FROM rw_view1 WHERE snoop(person); EXPLAIN (costs off) UPDATE rw_view1 SET person=person WHERE snoop(person); EXPLAIN (costs off) DELETE FROM rw_view1 WHERE NOT snoop(person); -- security barrier view on top of security barrier view CREATE VIEW rw_view2 WITH (security_barrier = true) AS SELECT * FROM rw_view1 WHERE snoop(person); SELECT table_name, is_insertable_into FROM information_schema.tables WHERE table_name = 'rw_view2'; SELECT table_name, is_updatable, is_insertable_into FROM information_schema.views WHERE table_name = 'rw_view2'; SELECT table_name, column_name, is_updatable FROM information_schema.columns WHERE table_name = 'rw_view2' ORDER BY ordinal_position; SELECT * FROM rw_view2 WHERE snoop(person); UPDATE rw_view2 SET person=person WHERE snoop(person); DELETE FROM rw_view2 WHERE NOT snoop(person); EXPLAIN (costs off) SELECT * FROM rw_view2 WHERE snoop(person); EXPLAIN (costs off) UPDATE rw_view2 SET person=person WHERE snoop(person); EXPLAIN (costs off) DELETE FROM rw_view2 WHERE NOT snoop(person); DROP TABLE base_tbl CASCADE; -- security barrier view on top of table with rules CREATE TABLE base_tbl(id int PRIMARY KEY, data text, deleted boolean); INSERT INTO base_tbl VALUES (1, 'Row 1', false), (2, 'Row 2', true); CREATE RULE base_tbl_ins_rule AS ON INSERT TO base_tbl WHERE EXISTS (SELECT 1 FROM base_tbl t WHERE t.id = new.id) DO INSTEAD UPDATE base_tbl SET data = new.data, deleted = false WHERE id = new.id; CREATE RULE base_tbl_del_rule AS ON DELETE TO base_tbl DO INSTEAD UPDATE base_tbl SET deleted = true WHERE id = old.id; CREATE VIEW rw_view1 WITH (security_barrier=true) AS SELECT id, data FROM base_tbl WHERE NOT deleted; SELECT * FROM rw_view1; EXPLAIN (costs off) DELETE FROM rw_view1 WHERE id = 1 AND snoop(data); DELETE FROM rw_view1 WHERE id = 1 AND snoop(data); EXPLAIN (costs off) INSERT INTO rw_view1 VALUES (2, 'New row 2'); INSERT INTO rw_view1 VALUES (2, 'New row 2'); SELECT * FROM base_tbl; DROP TABLE base_tbl CASCADE; -- security barrier view based on inheritance set CREATE TABLE t1 (a int, b float, c text); CREATE INDEX t1_a_idx ON t1(a); INSERT INTO t1 SELECT i,i,'t1' FROM generate_series(1,10) g(i); ANALYZE t1; CREATE TABLE t11 (d text) INHERITS (t1); CREATE INDEX t11_a_idx ON t11(a); INSERT INTO t11 SELECT i,i,'t11','t11d' FROM generate_series(1,10) g(i); ANALYZE t11; CREATE TABLE t12 (e int[]) INHERITS (t1); CREATE INDEX t12_a_idx ON t12(a); INSERT INTO t12 SELECT i,i,'t12','{1,2}'::int[] FROM generate_series(1,10) g(i); ANALYZE t12; CREATE TABLE t111 () INHERITS (t11, t12); CREATE INDEX t111_a_idx ON t111(a); INSERT INTO t111 SELECT i,i,'t111','t111d','{1,1,1}'::int[] FROM generate_series(1,10) g(i); ANALYZE t111; CREATE VIEW v1 WITH (security_barrier=true) AS SELECT *, (SELECT d FROM t11 WHERE t11.a = t1.a LIMIT 1) AS d FROM t1 WHERE a > 5 AND EXISTS(SELECT 1 FROM t12 WHERE t12.a = t1.a); SELECT * FROM v1 WHERE a=3; -- should not see anything SELECT * FROM v1 WHERE a=8; EXPLAIN (VERBOSE, COSTS OFF) UPDATE v1 SET a=100 WHERE snoop(a) AND leakproof(a) AND a < 7 AND a != 6; UPDATE v1 SET a=100 WHERE snoop(a) AND leakproof(a) AND a < 7 AND a != 6; SELECT * FROM v1 WHERE a=100; -- Nothing should have been changed to 100 SELECT * FROM t1 WHERE a=100; -- Nothing should have been changed to 100 EXPLAIN (VERBOSE, COSTS OFF) UPDATE v1 SET a=a+1 WHERE snoop(a) AND leakproof(a) AND a = 8; UPDATE v1 SET a=a+1 WHERE snoop(a) AND leakproof(a) AND a = 8; SELECT * FROM v1 WHERE b=8; DELETE FROM v1 WHERE snoop(a) AND leakproof(a); -- should not delete everything, just where a>5 TABLE t1; -- verify all a<=5 are intact DROP TABLE t1, t11, t12, t111 CASCADE; DROP FUNCTION snoop(anyelement); DROP FUNCTION leakproof(anyelement); CREATE TABLE tx1 (a integer); CREATE TABLE tx2 (b integer); CREATE TABLE tx3 (c integer); CREATE VIEW vx1 AS SELECT a FROM tx1 WHERE EXISTS(SELECT 1 FROM tx2 JOIN tx3 ON b=c); INSERT INTO vx1 values (1); SELECT * FROM tx1; SELECT * FROM vx1; DROP VIEW vx1; DROP TABLE tx1; DROP TABLE tx2; DROP TABLE tx3; CREATE TABLE tx1 (a integer); CREATE TABLE tx2 (b integer); CREATE TABLE tx3 (c integer); CREATE VIEW vx1 AS SELECT a FROM tx1 WHERE EXISTS(SELECT 1 FROM tx2 JOIN tx3 ON b=c); INSERT INTO vx1 VALUES (1); INSERT INTO vx1 VALUES (1); SELECT * FROM tx1; SELECT * FROM vx1; DROP VIEW vx1; DROP TABLE tx1; DROP TABLE tx2; DROP TABLE tx3; CREATE TABLE tx1 (a integer, b integer); CREATE TABLE tx2 (b integer, c integer); CREATE TABLE tx3 (c integer, d integer); ALTER TABLE tx1 DROP COLUMN b; ALTER TABLE tx2 DROP COLUMN c; ALTER TABLE tx3 DROP COLUMN d; CREATE VIEW vx1 AS SELECT a FROM tx1 WHERE EXISTS(SELECT 1 FROM tx2 JOIN tx3 ON b=c); INSERT INTO vx1 VALUES (1); INSERT INTO vx1 VALUES (1); SELECT * FROM tx1; SELECT * FROM vx1; DROP VIEW vx1; DROP TABLE tx1; DROP TABLE tx2; DROP TABLE tx3; -- -- Test handling of vars from correlated subqueries in quals from outer -- security barrier views, per bug #13988 -- CREATE TABLE t1 (a int, b text, c int); INSERT INTO t1 VALUES (1, 'one', 10); CREATE TABLE t2 (cc int); INSERT INTO t2 VALUES (10), (20); CREATE VIEW v1 WITH (security_barrier = true) AS SELECT * FROM t1 WHERE (a > 0) WITH CHECK OPTION; CREATE VIEW v2 WITH (security_barrier = true) AS SELECT * FROM v1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t2.cc = v1.c) WITH CHECK OPTION; INSERT INTO v2 VALUES (2, 'two', 20); -- ok INSERT INTO v2 VALUES (-2, 'minus two', 20); -- not allowed INSERT INTO v2 VALUES (3, 'three', 30); -- not allowed UPDATE v2 SET b = 'ONE' WHERE a = 1; -- ok UPDATE v2 SET a = -1 WHERE a = 1; -- not allowed UPDATE v2 SET c = 30 WHERE a = 1; -- not allowed DELETE FROM v2 WHERE a = 2; -- ok SELECT * FROM v2; DROP VIEW v2; DROP VIEW v1; DROP TABLE t2; DROP TABLE t1; -- -- Test CREATE OR REPLACE VIEW turning a non-updatable view into an -- auto-updatable view and adding check options in a single step -- CREATE TABLE t1 (a int, b text); CREATE VIEW v1 AS SELECT null::int AS a; CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1 WHERE a > 0 WITH CHECK OPTION; INSERT INTO v1 VALUES (1, 'ok'); -- ok INSERT INTO v1 VALUES (-1, 'invalid'); -- should fail DROP VIEW v1; DROP TABLE t1; -- check that an auto-updatable view on a partitioned table works correctly create table uv_pt (a int, b int, v varchar) partition by range (a, b); create table uv_pt1 (b int not null, v varchar, a int not null) partition by range (b); create table uv_pt11 (like uv_pt1); alter table uv_pt11 drop a; alter table uv_pt11 add a int; alter table uv_pt11 drop a; alter table uv_pt11 add a int not null; alter table uv_pt1 attach partition uv_pt11 for values from (2) to (5); alter table uv_pt attach partition uv_pt1 for values from (1, 2) to (1, 10); create view uv_ptv as select * from uv_pt; select events & 4 != 0 AS upd, events & 8 != 0 AS ins, events & 16 != 0 AS del from pg_catalog.pg_relation_is_updatable('uv_pt'::regclass, false) t(events); select pg_catalog.pg_column_is_updatable('uv_pt'::regclass, 1::smallint, false); select pg_catalog.pg_column_is_updatable('uv_pt'::regclass, 2::smallint, false); select table_name, is_updatable, is_insertable_into from information_schema.views where table_name = 'uv_ptv'; select table_name, column_name, is_updatable from information_schema.columns where table_name = 'uv_ptv' order by column_name; insert into uv_ptv values (1, 2); select tableoid::regclass, * from uv_pt; create view uv_ptv_wco as select * from uv_pt where a = 0 with check option; insert into uv_ptv_wco values (1, 2); drop view uv_ptv, uv_ptv_wco; drop table uv_pt, uv_pt1, uv_pt11; -- check that wholerow vars appearing in WITH CHECK OPTION constraint expressions -- work fine with partitioned tables create table wcowrtest (a int) partition by list (a); create table wcowrtest1 partition of wcowrtest for values in (1); create view wcowrtest_v as select * from wcowrtest where wcowrtest = '(2)'::wcowrtest with check option; insert into wcowrtest_v values (1); alter table wcowrtest add b text; create table wcowrtest2 (b text, c int, a int); alter table wcowrtest2 drop c; alter table wcowrtest attach partition wcowrtest2 for values in (2); create table sometable (a int, b text); insert into sometable values (1, 'a'), (2, 'b'); create view wcowrtest_v2 as select * from wcowrtest r where r in (select s from sometable s where r.a = s.a) with check option; -- WITH CHECK qual will be processed with wcowrtest2's -- rowtype after tuple-routing insert into wcowrtest_v2 values (2, 'no such row in sometable'); drop view wcowrtest_v, wcowrtest_v2; drop table wcowrtest, sometable; -- Check INSERT .. ON CONFLICT DO UPDATE works correctly when the view's -- columns are named and ordered differently than the underlying table's. create table uv_iocu_tab (a text unique, b float); insert into uv_iocu_tab values ('xyxyxy', 0); create view uv_iocu_view as select b, b+1 as c, a, '2.0'::text as two from uv_iocu_tab; insert into uv_iocu_view (a, b) values ('xyxyxy', 1) on conflict (a) do update set b = uv_iocu_view.b; select * from uv_iocu_tab; insert into uv_iocu_view (a, b) values ('xyxyxy', 1) on conflict (a) do update set b = excluded.b; select * from uv_iocu_tab; -- OK to access view columns that are not present in underlying base -- relation in the ON CONFLICT portion of the query insert into uv_iocu_view (a, b) values ('xyxyxy', 3) on conflict (a) do update set b = cast(excluded.two as float); select * from uv_iocu_tab; explain (costs off) insert into uv_iocu_view (a, b) values ('xyxyxy', 3) on conflict (a) do update set b = excluded.b where excluded.c > 0; insert into uv_iocu_view (a, b) values ('xyxyxy', 3) on conflict (a) do update set b = excluded.b where excluded.c > 0; select * from uv_iocu_tab; drop view uv_iocu_view; drop table uv_iocu_tab; -- Test whole-row references to the view create table uv_iocu_tab (a int unique, b text); create view uv_iocu_view as select b as bb, a as aa, uv_iocu_tab::text as cc from uv_iocu_tab; insert into uv_iocu_view (aa,bb) values (1,'x'); explain (costs off) insert into uv_iocu_view (aa,bb) values (1,'y') on conflict (aa) do update set bb = 'Rejected: '||excluded.* where excluded.aa > 0 and excluded.bb != '' and excluded.cc is not null; insert into uv_iocu_view (aa,bb) values (1,'y') on conflict (aa) do update set bb = 'Rejected: '||excluded.* where excluded.aa > 0 and excluded.bb != '' and excluded.cc is not null; select * from uv_iocu_view; -- Test omitting a column of the base relation delete from uv_iocu_view; insert into uv_iocu_view (aa,bb) values (1,'x'); insert into uv_iocu_view (aa) values (1) on conflict (aa) do update set bb = 'Rejected: '||excluded.*; select * from uv_iocu_view; alter table uv_iocu_tab alter column b set default 'table default'; insert into uv_iocu_view (aa) values (1) on conflict (aa) do update set bb = 'Rejected: '||excluded.*; select * from uv_iocu_view; alter view uv_iocu_view alter column bb set default 'view default'; insert into uv_iocu_view (aa) values (1) on conflict (aa) do update set bb = 'Rejected: '||excluded.*; select * from uv_iocu_view; -- Should fail to update non-updatable columns insert into uv_iocu_view (aa) values (1) on conflict (aa) do update set cc = 'XXX'; drop view uv_iocu_view; drop table uv_iocu_tab; -- ON CONFLICT DO UPDATE permissions checks create user regress_view_user1; create user regress_view_user2; set session authorization regress_view_user1; create table base_tbl(a int unique, b text, c float); insert into base_tbl values (1,'xxx',1.0); create view rw_view1 as select b as bb, c as cc, a as aa from base_tbl; grant select (aa,bb) on rw_view1 to regress_view_user2; grant insert on rw_view1 to regress_view_user2; grant update (bb) on rw_view1 to regress_view_user2; set session authorization regress_view_user2; insert into rw_view1 values ('yyy',2.0,1) on conflict (aa) do update set bb = excluded.cc; -- Not allowed insert into rw_view1 values ('yyy',2.0,1) on conflict (aa) do update set bb = rw_view1.cc; -- Not allowed insert into rw_view1 values ('yyy',2.0,1) on conflict (aa) do update set bb = excluded.bb; -- OK insert into rw_view1 values ('zzz',2.0,1) on conflict (aa) do update set bb = rw_view1.bb||'xxx'; -- OK insert into rw_view1 values ('zzz',2.0,1) on conflict (aa) do update set cc = 3.0; -- Not allowed reset session authorization; select * from base_tbl; set session authorization regress_view_user1; grant select (a,b) on base_tbl to regress_view_user2; grant insert (a,b) on base_tbl to regress_view_user2; grant update (a,b) on base_tbl to regress_view_user2; set session authorization regress_view_user2; create view rw_view2 as select b as bb, c as cc, a as aa from base_tbl; insert into rw_view2 (aa,bb) values (1,'xxx') on conflict (aa) do update set bb = excluded.bb; -- Not allowed create view rw_view3 as select b as bb, a as aa from base_tbl; insert into rw_view3 (aa,bb) values (1,'xxx') on conflict (aa) do update set bb = excluded.bb; -- OK reset session authorization; select * from base_tbl; set session authorization regress_view_user2; create view rw_view4 as select aa, bb, cc FROM rw_view1; insert into rw_view4 (aa,bb) values (1,'yyy') on conflict (aa) do update set bb = excluded.bb; -- Not allowed create view rw_view5 as select aa, bb FROM rw_view1; insert into rw_view5 (aa,bb) values (1,'yyy') on conflict (aa) do update set bb = excluded.bb; -- OK reset session authorization; select * from base_tbl; drop view rw_view5; drop view rw_view4; drop view rw_view3; drop view rw_view2; drop view rw_view1; drop table base_tbl; drop user regress_view_user1; drop user regress_view_user2; -- Test single- and multi-row inserts with table and view defaults. -- Table defaults should be used, unless overridden by view defaults. create table base_tab_def (a int, b text default 'Table default', c text default 'Table default', d text, e text); create view base_tab_def_view as select * from base_tab_def; alter view base_tab_def_view alter b set default 'View default'; alter view base_tab_def_view alter d set default 'View default'; insert into base_tab_def values (1); insert into base_tab_def values (2), (3); insert into base_tab_def values (4, default, default, default, default); insert into base_tab_def values (5, default, default, default, default), (6, default, default, default, default); insert into base_tab_def_view values (11); insert into base_tab_def_view values (12), (13); insert into base_tab_def_view values (14, default, default, default, default); insert into base_tab_def_view values (15, default, default, default, default), (16, default, default, default, default); insert into base_tab_def_view values (17), (default); select * from base_tab_def order by a; -- Adding an INSTEAD OF trigger should cause NULLs to be inserted instead of -- table defaults, where there are no view defaults. create function base_tab_def_view_instrig_func() returns trigger as $$ begin insert into base_tab_def values (new.a, new.b, new.c, new.d, new.e); return new; end; $$ language plpgsql; create trigger base_tab_def_view_instrig instead of insert on base_tab_def_view for each row execute function base_tab_def_view_instrig_func(); truncate base_tab_def; insert into base_tab_def values (1); insert into base_tab_def values (2), (3); insert into base_tab_def values (4, default, default, default, default); insert into base_tab_def values (5, default, default, default, default), (6, default, default, default, default); insert into base_tab_def_view values (11); insert into base_tab_def_view values (12), (13); insert into base_tab_def_view values (14, default, default, default, default); insert into base_tab_def_view values (15, default, default, default, default), (16, default, default, default, default); insert into base_tab_def_view values (17), (default); select * from base_tab_def order by a; -- Using an unconditional DO INSTEAD rule should also cause NULLs to be -- inserted where there are no view defaults. drop trigger base_tab_def_view_instrig on base_tab_def_view; drop function base_tab_def_view_instrig_func; create rule base_tab_def_view_ins_rule as on insert to base_tab_def_view do instead insert into base_tab_def values (new.a, new.b, new.c, new.d, new.e); truncate base_tab_def; insert into base_tab_def values (1); insert into base_tab_def values (2), (3); insert into base_tab_def values (4, default, default, default, default); insert into base_tab_def values (5, default, default, default, default), (6, default, default, default, default); insert into base_tab_def_view values (11); insert into base_tab_def_view values (12), (13); insert into base_tab_def_view values (14, default, default, default, default); insert into base_tab_def_view values (15, default, default, default, default), (16, default, default, default, default); insert into base_tab_def_view values (17), (default); select * from base_tab_def order by a; -- A DO ALSO rule should cause each row to be inserted twice. The first -- insert should behave the same as an auto-updatable view (using table -- defaults, unless overridden by view defaults). The second insert should -- behave the same as a rule-updatable view (inserting NULLs where there are -- no view defaults). drop rule base_tab_def_view_ins_rule on base_tab_def_view; create rule base_tab_def_view_ins_rule as on insert to base_tab_def_view do also insert into base_tab_def values (new.a, new.b, new.c, new.d, new.e); truncate base_tab_def; insert into base_tab_def values (1); insert into base_tab_def values (2), (3); insert into base_tab_def values (4, default, default, default, default); insert into base_tab_def values (5, default, default, default, default), (6, default, default, default, default); insert into base_tab_def_view values (11); insert into base_tab_def_view values (12), (13); insert into base_tab_def_view values (14, default, default, default, default); insert into base_tab_def_view values (15, default, default, default, default), (16, default, default, default, default); insert into base_tab_def_view values (17), (default); select * from base_tab_def order by a, c NULLS LAST; drop view base_tab_def_view; drop table base_tab_def; -- Test defaults with array assignments create table base_tab (a serial, b int[], c text, d text default 'Table default'); create view base_tab_view as select c, a, b from base_tab; alter view base_tab_view alter column c set default 'View default'; insert into base_tab_view (b[1], b[2], c, b[5], b[4], a, b[3]) values (1, 2, default, 5, 4, default, 3), (10, 11, 'C value', 14, 13, 100, 12); select * from base_tab order by a; drop view base_tab_view; drop table base_tab; libpg_query-13-2.1.0/test/sql/postgres_regress/update.sql000066400000000000000000000671111413137616400234520ustar00rootroot00000000000000-- -- UPDATE syntax tests -- CREATE TABLE update_test ( a INT DEFAULT 10, b INT, c TEXT ); CREATE TABLE upsert_test ( a INT PRIMARY KEY, b TEXT ); INSERT INTO update_test VALUES (5, 10, 'foo'); INSERT INTO update_test(b, a) VALUES (15, 10); SELECT * FROM update_test; UPDATE update_test SET a = DEFAULT, b = DEFAULT; SELECT * FROM update_test; -- aliases for the UPDATE target table UPDATE update_test AS t SET b = 10 WHERE t.a = 10; SELECT * FROM update_test; UPDATE update_test t SET b = t.b + 10 WHERE t.a = 10; SELECT * FROM update_test; -- -- Test VALUES in FROM -- UPDATE update_test SET a=v.i FROM (VALUES(100, 20)) AS v(i, j) WHERE update_test.b = v.j; SELECT * FROM update_test; -- fail, wrong data type: UPDATE update_test SET a = v.* FROM (VALUES(100, 20)) AS v(i, j) WHERE update_test.b = v.j; -- -- Test multiple-set-clause syntax -- INSERT INTO update_test SELECT a,b+1,c FROM update_test; SELECT * FROM update_test; UPDATE update_test SET (c,b,a) = ('bugle', b+11, DEFAULT) WHERE c = 'foo'; SELECT * FROM update_test; UPDATE update_test SET (c,b) = ('car', a+b), a = a + 1 WHERE a = 10; SELECT * FROM update_test; -- fail, multi assignment to same column: UPDATE update_test SET (c,b) = ('car', a+b), b = a + 1 WHERE a = 10; -- uncorrelated sub-select: UPDATE update_test SET (b,a) = (select a,b from update_test where b = 41 and c = 'car') WHERE a = 100 AND b = 20; SELECT * FROM update_test; -- correlated sub-select: UPDATE update_test o SET (b,a) = (select a+1,b from update_test i where i.a=o.a and i.b=o.b and i.c is not distinct from o.c); SELECT * FROM update_test; -- fail, multiple rows supplied: UPDATE update_test SET (b,a) = (select a+1,b from update_test); -- set to null if no rows supplied: UPDATE update_test SET (b,a) = (select a+1,b from update_test where a = 1000) WHERE a = 11; SELECT * FROM update_test; -- *-expansion should work in this context: UPDATE update_test SET (a,b) = ROW(v.*) FROM (VALUES(21, 100)) AS v(i, j) WHERE update_test.a = v.i; -- you might expect this to work, but syntactically it's not a RowExpr: UPDATE update_test SET (a,b) = (v.*) FROM (VALUES(21, 101)) AS v(i, j) WHERE update_test.a = v.i; -- if an alias for the target table is specified, don't allow references -- to the original table name UPDATE update_test AS t SET b = update_test.b + 10 WHERE t.a = 10; -- Make sure that we can update to a TOASTed value. UPDATE update_test SET c = repeat('x', 10000) WHERE c = 'car'; SELECT a, b, char_length(c) FROM update_test; -- Check multi-assignment with a Result node to handle a one-time filter. EXPLAIN (VERBOSE, COSTS OFF) UPDATE update_test t SET (a, b) = (SELECT b, a FROM update_test s WHERE s.a = t.a) WHERE CURRENT_USER = SESSION_USER; UPDATE update_test t SET (a, b) = (SELECT b, a FROM update_test s WHERE s.a = t.a) WHERE CURRENT_USER = SESSION_USER; SELECT a, b, char_length(c) FROM update_test; -- Test ON CONFLICT DO UPDATE INSERT INTO upsert_test VALUES(1, 'Boo'), (3, 'Zoo'); -- uncorrelated sub-select: WITH aaa AS (SELECT 1 AS a, 'Foo' AS b) INSERT INTO upsert_test VALUES (1, 'Bar') ON CONFLICT(a) DO UPDATE SET (b, a) = (SELECT b, a FROM aaa) RETURNING *; -- correlated sub-select: INSERT INTO upsert_test VALUES (1, 'Baz'), (3, 'Zaz') ON CONFLICT(a) DO UPDATE SET (b, a) = (SELECT b || ', Correlated', a from upsert_test i WHERE i.a = upsert_test.a) RETURNING *; -- correlated sub-select (EXCLUDED.* alias): INSERT INTO upsert_test VALUES (1, 'Bat'), (3, 'Zot') ON CONFLICT(a) DO UPDATE SET (b, a) = (SELECT b || ', Excluded', a from upsert_test i WHERE i.a = excluded.a) RETURNING *; -- ON CONFLICT using system attributes in RETURNING, testing both the -- inserting and updating paths. See bug report at: -- https://www.postgresql.org/message-id/73436355-6432-49B1-92ED-1FE4F7E7E100%40finefun.com.au INSERT INTO upsert_test VALUES (2, 'Beeble') ON CONFLICT(a) DO UPDATE SET (b, a) = (SELECT b || ', Excluded', a from upsert_test i WHERE i.a = excluded.a) RETURNING tableoid::regclass, xmin = pg_current_xact_id()::xid AS xmin_correct, xmax = 0 AS xmax_correct; -- currently xmax is set after a conflict - that's probably not good, -- but it seems worthwhile to have to be explicit if that changes. INSERT INTO upsert_test VALUES (2, 'Brox') ON CONFLICT(a) DO UPDATE SET (b, a) = (SELECT b || ', Excluded', a from upsert_test i WHERE i.a = excluded.a) RETURNING tableoid::regclass, xmin = pg_current_xact_id()::xid AS xmin_correct, xmax = pg_current_xact_id()::xid AS xmax_correct; DROP TABLE update_test; DROP TABLE upsert_test; -- Test ON CONFLICT DO UPDATE with partitioned table and non-identical children CREATE TABLE upsert_test ( a INT PRIMARY KEY, b TEXT ) PARTITION BY LIST (a); CREATE TABLE upsert_test_1 PARTITION OF upsert_test FOR VALUES IN (1); CREATE TABLE upsert_test_2 (b TEXT, a INT PRIMARY KEY); ALTER TABLE upsert_test ATTACH PARTITION upsert_test_2 FOR VALUES IN (2); INSERT INTO upsert_test VALUES(1, 'Boo'), (2, 'Zoo'); -- uncorrelated sub-select: WITH aaa AS (SELECT 1 AS a, 'Foo' AS b) INSERT INTO upsert_test VALUES (1, 'Bar') ON CONFLICT(a) DO UPDATE SET (b, a) = (SELECT b, a FROM aaa) RETURNING *; -- correlated sub-select: WITH aaa AS (SELECT 1 AS ctea, ' Foo' AS cteb) INSERT INTO upsert_test VALUES (1, 'Bar'), (2, 'Baz') ON CONFLICT(a) DO UPDATE SET (b, a) = (SELECT upsert_test.b||cteb, upsert_test.a FROM aaa) RETURNING *; DROP TABLE upsert_test; --------------------------- -- UPDATE with row movement --------------------------- -- When a partitioned table receives an UPDATE to the partitioned key and the -- new values no longer meet the partition's bound, the row must be moved to -- the correct partition for the new partition key (if one exists). We must -- also ensure that updatable views on partitioned tables properly enforce any -- WITH CHECK OPTION that is defined. The situation with triggers in this case -- also requires thorough testing as partition key updates causing row -- movement convert UPDATEs into DELETE+INSERT. CREATE TABLE range_parted ( a text, b bigint, c numeric, d int, e varchar ) PARTITION BY RANGE (a, b); -- Create partitions intentionally in descending bound order, so as to test -- that update-row-movement works with the leaf partitions not in bound order. CREATE TABLE part_b_20_b_30 (e varchar, c numeric, a text, b bigint, d int); ALTER TABLE range_parted ATTACH PARTITION part_b_20_b_30 FOR VALUES FROM ('b', 20) TO ('b', 30); CREATE TABLE part_b_10_b_20 (e varchar, c numeric, a text, b bigint, d int) PARTITION BY RANGE (c); CREATE TABLE part_b_1_b_10 PARTITION OF range_parted FOR VALUES FROM ('b', 1) TO ('b', 10); ALTER TABLE range_parted ATTACH PARTITION part_b_10_b_20 FOR VALUES FROM ('b', 10) TO ('b', 20); CREATE TABLE part_a_10_a_20 PARTITION OF range_parted FOR VALUES FROM ('a', 10) TO ('a', 20); CREATE TABLE part_a_1_a_10 PARTITION OF range_parted FOR VALUES FROM ('a', 1) TO ('a', 10); -- Check that partition-key UPDATE works sanely on a partitioned table that -- does not have any child partitions. UPDATE part_b_10_b_20 set b = b - 6; -- Create some more partitions following the above pattern of descending bound -- order, but let's make the situation a bit more complex by having the -- attribute numbers of the columns vary from their parent partition. CREATE TABLE part_c_100_200 (e varchar, c numeric, a text, b bigint, d int) PARTITION BY range (abs(d)); ALTER TABLE part_c_100_200 DROP COLUMN e, DROP COLUMN c, DROP COLUMN a; ALTER TABLE part_c_100_200 ADD COLUMN c numeric, ADD COLUMN e varchar, ADD COLUMN a text; ALTER TABLE part_c_100_200 DROP COLUMN b; ALTER TABLE part_c_100_200 ADD COLUMN b bigint; CREATE TABLE part_d_1_15 PARTITION OF part_c_100_200 FOR VALUES FROM (1) TO (15); CREATE TABLE part_d_15_20 PARTITION OF part_c_100_200 FOR VALUES FROM (15) TO (20); ALTER TABLE part_b_10_b_20 ATTACH PARTITION part_c_100_200 FOR VALUES FROM (100) TO (200); CREATE TABLE part_c_1_100 (e varchar, d int, c numeric, b bigint, a text); ALTER TABLE part_b_10_b_20 ATTACH PARTITION part_c_1_100 FOR VALUES FROM (1) TO (100); \set init_range_parted 'truncate range_parted; insert into range_parted VALUES (''a'', 1, 1, 1), (''a'', 10, 200, 1), (''b'', 12, 96, 1), (''b'', 13, 97, 2), (''b'', 15, 105, 16), (''b'', 17, 105, 19)' \set show_data 'select tableoid::regclass::text COLLATE "C" partname, * from range_parted ORDER BY 1, 2, 3, 4, 5, 6' :init_range_parted; :show_data; -- The order of subplans should be in bound order EXPLAIN (costs off) UPDATE range_parted set c = c - 50 WHERE c > 97; -- fail, row movement happens only within the partition subtree. UPDATE part_c_100_200 set c = c - 20, d = c WHERE c = 105; -- fail, no partition key update, so no attempt to move tuple, -- but "a = 'a'" violates partition constraint enforced by root partition) UPDATE part_b_10_b_20 set a = 'a'; -- ok, partition key update, no constraint violation UPDATE range_parted set d = d - 10 WHERE d > 10; -- ok, no partition key update, no constraint violation UPDATE range_parted set e = d; -- No row found UPDATE part_c_1_100 set c = c + 20 WHERE c = 98; -- ok, row movement UPDATE part_b_10_b_20 set c = c + 20 returning c, b, a; :show_data; -- fail, row movement happens only within the partition subtree. UPDATE part_b_10_b_20 set b = b - 6 WHERE c > 116 returning *; -- ok, row movement, with subset of rows moved into different partition. UPDATE range_parted set b = b - 6 WHERE c > 116 returning a, b + c; :show_data; -- Common table needed for multiple test scenarios. CREATE TABLE mintab(c1 int); INSERT into mintab VALUES (120); -- update partition key using updatable view. CREATE VIEW upview AS SELECT * FROM range_parted WHERE (select c > c1 FROM mintab) WITH CHECK OPTION; -- ok UPDATE upview set c = 199 WHERE b = 4; -- fail, check option violation UPDATE upview set c = 120 WHERE b = 4; -- fail, row movement with check option violation UPDATE upview set a = 'b', b = 15, c = 120 WHERE b = 4; -- ok, row movement, check option passes UPDATE upview set a = 'b', b = 15 WHERE b = 4; :show_data; -- cleanup DROP VIEW upview; -- RETURNING having whole-row vars. :init_range_parted; UPDATE range_parted set c = 95 WHERE a = 'b' and b > 10 and c > 100 returning (range_parted), *; :show_data; -- The following tests computing RETURNING when the source and the destination -- partitions of a UPDATE row movement operation have different tuple -- descriptors, which has been shown to be problematic in the cases where the -- RETURNING targetlist contains non-target relation attributes that are -- computed by referring to the source partition plan's output tuple. Also, -- a trigger on the destination relation may change the tuple, which must be -- reflected in the RETURNING output, so we test that too. CREATE TABLE part_c_1_c_20 (LIKE range_parted); ALTER TABLE part_c_1_c_20 DROP a, DROP b, ADD a text, ADD b bigint; ALTER TABLE range_parted ATTACH PARTITION part_c_1_c_20 FOR VALUES FROM ('c', 1) TO ('c', 20); CREATE FUNCTION trigfunc () RETURNS TRIGGER LANGUAGE plpgsql as $$ BEGIN NEW.e := 'in trigfunc()'; RETURN NEW; END; $$; CREATE TRIGGER trig BEFORE INSERT ON part_c_1_c_20 FOR EACH ROW EXECUTE FUNCTION trigfunc(); UPDATE range_parted r set a = 'c' FROM (VALUES ('a', 1), ('a', 10), ('b', 12)) s(x, y) WHERE s.x = r.a AND s.y = r.b RETURNING tableoid::regclass, *; DROP TRIGGER trig ON part_c_1_c_20; DROP FUNCTION trigfunc; :init_range_parted; CREATE FUNCTION trigfunc () RETURNS TRIGGER LANGUAGE plpgsql as $$ BEGIN RETURN NULL; END; $$; CREATE TRIGGER trig BEFORE INSERT ON part_c_1_c_20 FOR EACH ROW EXECUTE FUNCTION trigfunc(); UPDATE range_parted r set a = 'c' FROM (VALUES ('a', 1), ('a', 10), ('b', 12)) s(x, y) WHERE s.x = r.a AND s.y = r.b RETURNING tableoid::regclass, *; :show_data; DROP TABLE part_c_1_c_20; DROP FUNCTION trigfunc; -- Transition tables with update row movement :init_range_parted; CREATE FUNCTION trans_updatetrigfunc() RETURNS trigger LANGUAGE plpgsql AS $$ begin raise notice 'trigger = %, old table = %, new table = %', TG_NAME, (select string_agg(old_table::text, ', ' ORDER BY a) FROM old_table), (select string_agg(new_table::text, ', ' ORDER BY a) FROM new_table); return null; end; $$; CREATE TRIGGER trans_updatetrig AFTER UPDATE ON range_parted REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table FOR EACH STATEMENT EXECUTE PROCEDURE trans_updatetrigfunc(); UPDATE range_parted set c = (case when c = 96 then 110 else c + 1 end ) WHERE a = 'b' and b > 10 and c >= 96; :show_data; :init_range_parted; -- Enabling OLD TABLE capture for both DELETE as well as UPDATE stmt triggers -- should not cause DELETEd rows to be captured twice. Similar thing for -- INSERT triggers and inserted rows. CREATE TRIGGER trans_deletetrig AFTER DELETE ON range_parted REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE PROCEDURE trans_updatetrigfunc(); CREATE TRIGGER trans_inserttrig AFTER INSERT ON range_parted REFERENCING NEW TABLE AS new_table FOR EACH STATEMENT EXECUTE PROCEDURE trans_updatetrigfunc(); UPDATE range_parted set c = c + 50 WHERE a = 'b' and b > 10 and c >= 96; :show_data; DROP TRIGGER trans_deletetrig ON range_parted; DROP TRIGGER trans_inserttrig ON range_parted; -- Don't drop trans_updatetrig yet. It is required below. -- Test with transition tuple conversion happening for rows moved into the -- new partition. This requires a trigger that references transition table -- (we already have trans_updatetrig). For inserted rows, the conversion -- is not usually needed, because the original tuple is already compatible with -- the desired transition tuple format. But conversion happens when there is a -- BR trigger because the trigger can change the inserted row. So install a -- BR triggers on those child partitions where the rows will be moved. CREATE FUNCTION func_parted_mod_b() RETURNS trigger AS $$ BEGIN NEW.b = NEW.b + 1; return NEW; END $$ language plpgsql; CREATE TRIGGER trig_c1_100 BEFORE UPDATE OR INSERT ON part_c_1_100 FOR EACH ROW EXECUTE PROCEDURE func_parted_mod_b(); CREATE TRIGGER trig_d1_15 BEFORE UPDATE OR INSERT ON part_d_1_15 FOR EACH ROW EXECUTE PROCEDURE func_parted_mod_b(); CREATE TRIGGER trig_d15_20 BEFORE UPDATE OR INSERT ON part_d_15_20 FOR EACH ROW EXECUTE PROCEDURE func_parted_mod_b(); :init_range_parted; UPDATE range_parted set c = (case when c = 96 then 110 else c + 1 end) WHERE a = 'b' and b > 10 and c >= 96; :show_data; :init_range_parted; UPDATE range_parted set c = c + 50 WHERE a = 'b' and b > 10 and c >= 96; :show_data; -- Case where per-partition tuple conversion map array is allocated, but the -- map is not required for the particular tuple that is routed, thanks to -- matching table attributes of the partition and the target table. :init_range_parted; UPDATE range_parted set b = 15 WHERE b = 1; :show_data; DROP TRIGGER trans_updatetrig ON range_parted; DROP TRIGGER trig_c1_100 ON part_c_1_100; DROP TRIGGER trig_d1_15 ON part_d_1_15; DROP TRIGGER trig_d15_20 ON part_d_15_20; DROP FUNCTION func_parted_mod_b(); -- RLS policies with update-row-movement ----------------------------------------- ALTER TABLE range_parted ENABLE ROW LEVEL SECURITY; CREATE USER regress_range_parted_user; GRANT ALL ON range_parted, mintab TO regress_range_parted_user; CREATE POLICY seeall ON range_parted AS PERMISSIVE FOR SELECT USING (true); CREATE POLICY policy_range_parted ON range_parted for UPDATE USING (true) WITH CHECK (c % 2 = 0); :init_range_parted; SET SESSION AUTHORIZATION regress_range_parted_user; -- This should fail with RLS violation error while moving row from -- part_a_10_a_20 to part_d_1_15, because we are setting 'c' to an odd number. UPDATE range_parted set a = 'b', c = 151 WHERE a = 'a' and c = 200; RESET SESSION AUTHORIZATION; -- Create a trigger on part_d_1_15 CREATE FUNCTION func_d_1_15() RETURNS trigger AS $$ BEGIN NEW.c = NEW.c + 1; -- Make even numbers odd, or vice versa return NEW; END $$ LANGUAGE plpgsql; CREATE TRIGGER trig_d_1_15 BEFORE INSERT ON part_d_1_15 FOR EACH ROW EXECUTE PROCEDURE func_d_1_15(); :init_range_parted; SET SESSION AUTHORIZATION regress_range_parted_user; -- Here, RLS checks should succeed while moving row from part_a_10_a_20 to -- part_d_1_15. Even though the UPDATE is setting 'c' to an odd number, the -- trigger at the destination partition again makes it an even number. UPDATE range_parted set a = 'b', c = 151 WHERE a = 'a' and c = 200; RESET SESSION AUTHORIZATION; :init_range_parted; SET SESSION AUTHORIZATION regress_range_parted_user; -- This should fail with RLS violation error. Even though the UPDATE is setting -- 'c' to an even number, the trigger at the destination partition again makes -- it an odd number. UPDATE range_parted set a = 'b', c = 150 WHERE a = 'a' and c = 200; -- Cleanup RESET SESSION AUTHORIZATION; DROP TRIGGER trig_d_1_15 ON part_d_1_15; DROP FUNCTION func_d_1_15(); -- Policy expression contains SubPlan RESET SESSION AUTHORIZATION; :init_range_parted; CREATE POLICY policy_range_parted_subplan on range_parted AS RESTRICTIVE for UPDATE USING (true) WITH CHECK ((SELECT range_parted.c <= c1 FROM mintab)); SET SESSION AUTHORIZATION regress_range_parted_user; -- fail, mintab has row with c1 = 120 UPDATE range_parted set a = 'b', c = 122 WHERE a = 'a' and c = 200; -- ok UPDATE range_parted set a = 'b', c = 120 WHERE a = 'a' and c = 200; -- RLS policy expression contains whole row. RESET SESSION AUTHORIZATION; :init_range_parted; CREATE POLICY policy_range_parted_wholerow on range_parted AS RESTRICTIVE for UPDATE USING (true) WITH CHECK (range_parted = row('b', 10, 112, 1, NULL)::range_parted); SET SESSION AUTHORIZATION regress_range_parted_user; -- ok, should pass the RLS check UPDATE range_parted set a = 'b', c = 112 WHERE a = 'a' and c = 200; RESET SESSION AUTHORIZATION; :init_range_parted; SET SESSION AUTHORIZATION regress_range_parted_user; -- fail, the whole row RLS check should fail UPDATE range_parted set a = 'b', c = 116 WHERE a = 'a' and c = 200; -- Cleanup RESET SESSION AUTHORIZATION; DROP POLICY policy_range_parted ON range_parted; DROP POLICY policy_range_parted_subplan ON range_parted; DROP POLICY policy_range_parted_wholerow ON range_parted; REVOKE ALL ON range_parted, mintab FROM regress_range_parted_user; DROP USER regress_range_parted_user; DROP TABLE mintab; -- statement triggers with update row movement --------------------------------------------------- :init_range_parted; CREATE FUNCTION trigfunc() returns trigger language plpgsql as $$ begin raise notice 'trigger = % fired on table % during %', TG_NAME, TG_TABLE_NAME, TG_OP; return null; end; $$; -- Triggers on root partition CREATE TRIGGER parent_delete_trig AFTER DELETE ON range_parted for each statement execute procedure trigfunc(); CREATE TRIGGER parent_update_trig AFTER UPDATE ON range_parted for each statement execute procedure trigfunc(); CREATE TRIGGER parent_insert_trig AFTER INSERT ON range_parted for each statement execute procedure trigfunc(); -- Triggers on leaf partition part_c_1_100 CREATE TRIGGER c1_delete_trig AFTER DELETE ON part_c_1_100 for each statement execute procedure trigfunc(); CREATE TRIGGER c1_update_trig AFTER UPDATE ON part_c_1_100 for each statement execute procedure trigfunc(); CREATE TRIGGER c1_insert_trig AFTER INSERT ON part_c_1_100 for each statement execute procedure trigfunc(); -- Triggers on leaf partition part_d_1_15 CREATE TRIGGER d1_delete_trig AFTER DELETE ON part_d_1_15 for each statement execute procedure trigfunc(); CREATE TRIGGER d1_update_trig AFTER UPDATE ON part_d_1_15 for each statement execute procedure trigfunc(); CREATE TRIGGER d1_insert_trig AFTER INSERT ON part_d_1_15 for each statement execute procedure trigfunc(); -- Triggers on leaf partition part_d_15_20 CREATE TRIGGER d15_delete_trig AFTER DELETE ON part_d_15_20 for each statement execute procedure trigfunc(); CREATE TRIGGER d15_update_trig AFTER UPDATE ON part_d_15_20 for each statement execute procedure trigfunc(); CREATE TRIGGER d15_insert_trig AFTER INSERT ON part_d_15_20 for each statement execute procedure trigfunc(); -- Move all rows from part_c_100_200 to part_c_1_100. None of the delete or -- insert statement triggers should be fired. UPDATE range_parted set c = c - 50 WHERE c > 97; :show_data; DROP TRIGGER parent_delete_trig ON range_parted; DROP TRIGGER parent_update_trig ON range_parted; DROP TRIGGER parent_insert_trig ON range_parted; DROP TRIGGER c1_delete_trig ON part_c_1_100; DROP TRIGGER c1_update_trig ON part_c_1_100; DROP TRIGGER c1_insert_trig ON part_c_1_100; DROP TRIGGER d1_delete_trig ON part_d_1_15; DROP TRIGGER d1_update_trig ON part_d_1_15; DROP TRIGGER d1_insert_trig ON part_d_1_15; DROP TRIGGER d15_delete_trig ON part_d_15_20; DROP TRIGGER d15_update_trig ON part_d_15_20; DROP TRIGGER d15_insert_trig ON part_d_15_20; -- Creating default partition for range :init_range_parted; create table part_def partition of range_parted default; \d+ part_def insert into range_parted values ('c', 9); -- ok update part_def set a = 'd' where a = 'c'; -- fail update part_def set a = 'a' where a = 'd'; :show_data; -- Update row movement from non-default to default partition. -- fail, default partition is not under part_a_10_a_20; UPDATE part_a_10_a_20 set a = 'ad' WHERE a = 'a'; -- ok UPDATE range_parted set a = 'ad' WHERE a = 'a'; UPDATE range_parted set a = 'bd' WHERE a = 'b'; :show_data; -- Update row movement from default to non-default partitions. -- ok UPDATE range_parted set a = 'a' WHERE a = 'ad'; UPDATE range_parted set a = 'b' WHERE a = 'bd'; :show_data; -- Cleanup: range_parted no longer needed. DROP TABLE range_parted; CREATE TABLE list_parted ( a text, b int ) PARTITION BY list (a); CREATE TABLE list_part1 PARTITION OF list_parted for VALUES in ('a', 'b'); CREATE TABLE list_default PARTITION OF list_parted default; INSERT into list_part1 VALUES ('a', 1); INSERT into list_default VALUES ('d', 10); -- fail UPDATE list_default set a = 'a' WHERE a = 'd'; -- ok UPDATE list_default set a = 'x' WHERE a = 'd'; DROP TABLE list_parted; -- Test retrieval of system columns with non-consistent partition row types. -- This is only partially supported, as seen in the results. create table utrtest (a int, b text) partition by list (a); create table utr1 (a int check (a in (1)), q text, b text); create table utr2 (a int check (a in (2)), b text); alter table utr1 drop column q; alter table utrtest attach partition utr1 for values in (1); alter table utrtest attach partition utr2 for values in (2); insert into utrtest values (1, 'foo') returning *, tableoid::regclass, xmin = pg_current_xact_id()::xid as xmin_ok; insert into utrtest values (2, 'bar') returning *, tableoid::regclass, xmin = pg_current_xact_id()::xid as xmin_ok; -- fails insert into utrtest values (2, 'bar') returning *, tableoid::regclass; update utrtest set b = b || b from (values (1), (2)) s(x) where a = s.x returning *, tableoid::regclass, xmin = pg_current_xact_id()::xid as xmin_ok; update utrtest set a = 3 - a from (values (1), (2)) s(x) where a = s.x returning *, tableoid::regclass, xmin = pg_current_xact_id()::xid as xmin_ok; -- fails update utrtest set a = 3 - a from (values (1), (2)) s(x) where a = s.x returning *, tableoid::regclass; delete from utrtest returning *, tableoid::regclass, xmax = pg_current_xact_id()::xid as xmax_ok; drop table utrtest; -------------- -- Some more update-partition-key test scenarios below. This time use list -- partitions. -------------- -- Setup for list partitions CREATE TABLE list_parted (a numeric, b int, c int8) PARTITION BY list (a); CREATE TABLE sub_parted PARTITION OF list_parted for VALUES in (1) PARTITION BY list (b); CREATE TABLE sub_part1(b int, c int8, a numeric); ALTER TABLE sub_parted ATTACH PARTITION sub_part1 for VALUES in (1); CREATE TABLE sub_part2(b int, c int8, a numeric); ALTER TABLE sub_parted ATTACH PARTITION sub_part2 for VALUES in (2); CREATE TABLE list_part1(a numeric, b int, c int8); ALTER TABLE list_parted ATTACH PARTITION list_part1 for VALUES in (2,3); INSERT into list_parted VALUES (2,5,50); INSERT into list_parted VALUES (3,6,60); INSERT into sub_parted VALUES (1,1,60); INSERT into sub_parted VALUES (1,2,10); -- Test partition constraint violation when intermediate ancestor is used and -- constraint is inherited from upper root. UPDATE sub_parted set a = 2 WHERE c = 10; -- Test update-partition-key, where the unpruned partitions do not have their -- partition keys updated. SELECT tableoid::regclass::text, * FROM list_parted WHERE a = 2 ORDER BY 1; UPDATE list_parted set b = c + a WHERE a = 2; SELECT tableoid::regclass::text, * FROM list_parted WHERE a = 2 ORDER BY 1; -- Test the case where BR UPDATE triggers change the partition key. CREATE FUNCTION func_parted_mod_b() returns trigger as $$ BEGIN NEW.b = 2; -- This is changing partition key column. return NEW; END $$ LANGUAGE plpgsql; CREATE TRIGGER parted_mod_b before update on sub_part1 for each row execute procedure func_parted_mod_b(); SELECT tableoid::regclass::text, * FROM list_parted ORDER BY 1, 2, 3, 4; -- This should do the tuple routing even though there is no explicit -- partition-key update, because there is a trigger on sub_part1. UPDATE list_parted set c = 70 WHERE b = 1; SELECT tableoid::regclass::text, * FROM list_parted ORDER BY 1, 2, 3, 4; DROP TRIGGER parted_mod_b ON sub_part1; -- If BR DELETE trigger prevented DELETE from happening, we should also skip -- the INSERT if that delete is part of UPDATE=>DELETE+INSERT. CREATE OR REPLACE FUNCTION func_parted_mod_b() returns trigger as $$ BEGIN raise notice 'Trigger: Got OLD row %, but returning NULL', OLD; return NULL; END $$ LANGUAGE plpgsql; CREATE TRIGGER trig_skip_delete before delete on sub_part2 for each row execute procedure func_parted_mod_b(); UPDATE list_parted set b = 1 WHERE c = 70; SELECT tableoid::regclass::text, * FROM list_parted ORDER BY 1, 2, 3, 4; -- Drop the trigger. Now the row should be moved. DROP TRIGGER trig_skip_delete ON sub_part2; UPDATE list_parted set b = 1 WHERE c = 70; SELECT tableoid::regclass::text, * FROM list_parted ORDER BY 1, 2, 3, 4; DROP FUNCTION func_parted_mod_b(); -- UPDATE partition-key with FROM clause. If join produces multiple output -- rows for the same row to be modified, we should tuple-route the row only -- once. There should not be any rows inserted. CREATE TABLE non_parted (id int); INSERT into non_parted VALUES (1), (1), (1), (2), (2), (2), (3), (3), (3); UPDATE list_parted t1 set a = 2 FROM non_parted t2 WHERE t1.a = t2.id and a = 1; SELECT tableoid::regclass::text, * FROM list_parted ORDER BY 1, 2, 3, 4; DROP TABLE non_parted; -- Cleanup: list_parted no longer needed. DROP TABLE list_parted; -- create custom operator class and hash function, for the same reason -- explained in alter_table.sql create or replace function dummy_hashint4(a int4, seed int8) returns int8 as $$ begin return (a + seed); end; $$ language 'plpgsql' immutable; create operator class custom_opclass for type int4 using hash as operator 1 = , function 2 dummy_hashint4(int4, int8); create table hash_parted ( a int, b int ) partition by hash (a custom_opclass, b custom_opclass); create table hpart1 partition of hash_parted for values with (modulus 2, remainder 1); create table hpart2 partition of hash_parted for values with (modulus 4, remainder 2); create table hpart3 partition of hash_parted for values with (modulus 8, remainder 0); create table hpart4 partition of hash_parted for values with (modulus 8, remainder 4); insert into hpart1 values (1, 1); insert into hpart2 values (2, 5); insert into hpart4 values (3, 4); -- fail update hpart1 set a = 3, b=4 where a = 1; -- ok, row movement update hash_parted set b = b - 1 where b = 1; -- ok update hash_parted set b = b + 8 where b = 1; -- cleanup drop table hash_parted; drop operator class custom_opclass using hash; drop function dummy_hashint4(a int4, seed int8); libpg_query-13-2.1.0/test/sql/postgres_regress/uuid.sql000066400000000000000000000061641413137616400231370ustar00rootroot00000000000000-- regression test for the uuid datatype -- creating test tables CREATE TABLE guid1 ( guid_field UUID, text_field TEXT DEFAULT(now()) ); CREATE TABLE guid2 ( guid_field UUID, text_field TEXT DEFAULT(now()) ); -- inserting invalid data tests -- too long INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111F'); -- too short INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-1111-11111111111}'); -- valid data but invalid format INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-1111-111111111111'); INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222 '); -- invalid data INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G111-111111111111'); INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-1111-111111111111'); --inserting three input formats INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111'); INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}'); INSERT INTO guid1(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e'); -- retrieving the inserted data SELECT guid_field FROM guid1; -- ordering test SELECT guid_field FROM guid1 ORDER BY guid_field ASC; SELECT guid_field FROM guid1 ORDER BY guid_field DESC; -- = operator test SELECT COUNT(*) FROM guid1 WHERE guid_field = '3f3e3c3b-3a30-3938-3736-353433a2313e'; -- <> operator test SELECT COUNT(*) FROM guid1 WHERE guid_field <> '11111111111111111111111111111111'; -- < operator test SELECT COUNT(*) FROM guid1 WHERE guid_field < '22222222-2222-2222-2222-222222222222'; -- <= operator test SELECT COUNT(*) FROM guid1 WHERE guid_field <= '22222222-2222-2222-2222-222222222222'; -- > operator test SELECT COUNT(*) FROM guid1 WHERE guid_field > '22222222-2222-2222-2222-222222222222'; -- >= operator test SELECT COUNT(*) FROM guid1 WHERE guid_field >= '22222222-2222-2222-2222-222222222222'; -- btree and hash index creation test CREATE INDEX guid1_btree ON guid1 USING BTREE (guid_field); CREATE INDEX guid1_hash ON guid1 USING HASH (guid_field); -- unique index test CREATE UNIQUE INDEX guid1_unique_BTREE ON guid1 USING BTREE (guid_field); -- should fail INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111'); -- check to see whether the new indexes are actually there SELECT count(*) FROM pg_class WHERE relkind='i' AND relname LIKE 'guid%'; -- populating the test tables with additional records INSERT INTO guid1(guid_field) VALUES('44444444-4444-4444-4444-444444444444'); INSERT INTO guid2(guid_field) VALUES('11111111-1111-1111-1111-111111111111'); INSERT INTO guid2(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}'); INSERT INTO guid2(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e'); -- join test SELECT COUNT(*) FROM guid1 g1 INNER JOIN guid2 g2 ON g1.guid_field = g2.guid_field; SELECT COUNT(*) FROM guid1 g1 LEFT JOIN guid2 g2 ON g1.guid_field = g2.guid_field WHERE g2.guid_field IS NULL; -- generation test TRUNCATE guid1; INSERT INTO guid1 (guid_field) VALUES (gen_random_uuid()); INSERT INTO guid1 (guid_field) VALUES (gen_random_uuid()); SELECT count(DISTINCT guid_field) FROM guid1; -- clean up DROP TABLE guid1, guid2 CASCADE; libpg_query-13-2.1.0/test/sql/postgres_regress/vacuum.sql000066400000000000000000000242761413137616400234750ustar00rootroot00000000000000-- -- VACUUM -- CREATE TABLE vactst (i INT); INSERT INTO vactst VALUES (1); INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst VALUES (0); SELECT count(*) FROM vactst; DELETE FROM vactst WHERE i != 0; SELECT * FROM vactst; VACUUM FULL vactst; UPDATE vactst SET i = i + 1; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst SELECT * FROM vactst; INSERT INTO vactst VALUES (0); SELECT count(*) FROM vactst; DELETE FROM vactst WHERE i != 0; VACUUM (FULL) vactst; DELETE FROM vactst; SELECT * FROM vactst; VACUUM (FULL, FREEZE) vactst; VACUUM (ANALYZE, FULL) vactst; CREATE TABLE vaccluster (i INT PRIMARY KEY); ALTER TABLE vaccluster CLUSTER ON vaccluster_pkey; CLUSTER vaccluster; CREATE FUNCTION do_analyze() RETURNS VOID VOLATILE LANGUAGE SQL AS 'ANALYZE pg_am'; CREATE FUNCTION wrap_do_analyze(c INT) RETURNS INT IMMUTABLE LANGUAGE SQL AS 'SELECT $1 FROM do_analyze()'; CREATE INDEX ON vaccluster(wrap_do_analyze(i)); INSERT INTO vaccluster VALUES (1), (2); ANALYZE vaccluster; -- Test ANALYZE in transaction, where the transaction surrounding -- analyze performed modifications. This tests for the bug at -- https://postgr.es/m/c7988239-d42c-ddc4-41db-171b23b35e4f%40ssinger.info -- (which hopefully is unlikely to be reintroduced), but also seems -- independently worthwhile to cover. INSERT INTO vactst SELECT generate_series(1, 300); DELETE FROM vactst WHERE i % 7 = 0; -- delete a few rows outside BEGIN; INSERT INTO vactst SELECT generate_series(301, 400); DELETE FROM vactst WHERE i % 5 <> 0; -- delete a few rows inside ANALYZE vactst; COMMIT; VACUUM FULL pg_am; VACUUM FULL pg_class; VACUUM FULL pg_database; VACUUM FULL vaccluster; VACUUM FULL vactst; VACUUM (DISABLE_PAGE_SKIPPING) vaccluster; -- PARALLEL option CREATE TABLE pvactst (i INT, a INT[], p POINT) with (autovacuum_enabled = off); INSERT INTO pvactst SELECT i, array[1,2,3], point(i, i+1) FROM generate_series(1,1000) i; CREATE INDEX btree_pvactst ON pvactst USING btree (i); CREATE INDEX hash_pvactst ON pvactst USING hash (i); CREATE INDEX brin_pvactst ON pvactst USING brin (i); CREATE INDEX gin_pvactst ON pvactst USING gin (a); CREATE INDEX gist_pvactst ON pvactst USING gist (p); CREATE INDEX spgist_pvactst ON pvactst USING spgist (p); -- VACUUM invokes parallel index cleanup SET min_parallel_index_scan_size to 0; VACUUM (PARALLEL 2) pvactst; -- VACUUM invokes parallel bulk-deletion UPDATE pvactst SET i = i WHERE i < 1000; VACUUM (PARALLEL 2) pvactst; UPDATE pvactst SET i = i WHERE i < 1000; VACUUM (PARALLEL 0) pvactst; -- disable parallel vacuum VACUUM (PARALLEL -1) pvactst; -- error VACUUM (PARALLEL 2, INDEX_CLEANUP FALSE) pvactst; VACUUM (PARALLEL 2, FULL TRUE) pvactst; -- error, cannot use both PARALLEL and FULL VACUUM (PARALLEL) pvactst; -- error, cannot use PARALLEL option without parallel degree -- Test different combinations of parallel and full options for temporary tables CREATE TEMPORARY TABLE tmp (a int PRIMARY KEY); CREATE INDEX tmp_idx1 ON tmp (a); VACUUM (PARALLEL 1, FULL FALSE) tmp; -- parallel vacuum disabled for temp tables VACUUM (PARALLEL 0, FULL TRUE) tmp; -- can specify parallel disabled (even though that's implied by FULL) RESET min_parallel_index_scan_size; DROP TABLE pvactst; -- INDEX_CLEANUP option CREATE TABLE no_index_cleanup (i INT PRIMARY KEY, t TEXT); -- Use uncompressed data stored in toast. CREATE INDEX no_index_cleanup_idx ON no_index_cleanup(t); ALTER TABLE no_index_cleanup ALTER COLUMN t SET STORAGE EXTERNAL; INSERT INTO no_index_cleanup(i, t) VALUES (generate_series(1,30), repeat('1234567890',269)); -- index cleanup option is ignored if VACUUM FULL VACUUM (INDEX_CLEANUP TRUE, FULL TRUE) no_index_cleanup; VACUUM (FULL TRUE) no_index_cleanup; -- Toast inherits the value from its parent table. ALTER TABLE no_index_cleanup SET (vacuum_index_cleanup = false); DELETE FROM no_index_cleanup WHERE i < 15; -- Nothing is cleaned up. VACUUM no_index_cleanup; -- Both parent relation and toast are cleaned up. ALTER TABLE no_index_cleanup SET (vacuum_index_cleanup = true); VACUUM no_index_cleanup; -- Parameter is set for both the parent table and its toast relation. INSERT INTO no_index_cleanup(i, t) VALUES (generate_series(31,60), repeat('1234567890',269)); DELETE FROM no_index_cleanup WHERE i < 45; -- Only toast index is cleaned up. ALTER TABLE no_index_cleanup SET (vacuum_index_cleanup = false, toast.vacuum_index_cleanup = true); VACUUM no_index_cleanup; -- Only parent is cleaned up. ALTER TABLE no_index_cleanup SET (vacuum_index_cleanup = true, toast.vacuum_index_cleanup = false); VACUUM no_index_cleanup; -- Test some extra relations. VACUUM (INDEX_CLEANUP FALSE) vaccluster; VACUUM (INDEX_CLEANUP FALSE) vactst; -- index cleanup option is ignored if no indexes VACUUM (INDEX_CLEANUP FALSE, FREEZE TRUE) vaccluster; -- TRUNCATE option CREATE TABLE vac_truncate_test(i INT NOT NULL, j text) WITH (vacuum_truncate=true, autovacuum_enabled=false); INSERT INTO vac_truncate_test VALUES (1, NULL), (NULL, NULL); VACUUM (TRUNCATE FALSE) vac_truncate_test; SELECT pg_relation_size('vac_truncate_test') > 0; VACUUM vac_truncate_test; SELECT pg_relation_size('vac_truncate_test') = 0; VACUUM (TRUNCATE FALSE, FULL TRUE) vac_truncate_test; DROP TABLE vac_truncate_test; -- partitioned table CREATE TABLE vacparted (a int, b char) PARTITION BY LIST (a); CREATE TABLE vacparted1 PARTITION OF vacparted FOR VALUES IN (1); INSERT INTO vacparted VALUES (1, 'a'); UPDATE vacparted SET b = 'b'; VACUUM (ANALYZE) vacparted; VACUUM (FULL) vacparted; VACUUM (FREEZE) vacparted; -- check behavior with duplicate column mentions VACUUM ANALYZE vacparted(a,b,a); ANALYZE vacparted(a,b,b); -- multiple tables specified VACUUM vaccluster, vactst; VACUUM vacparted, does_not_exist; VACUUM (FREEZE) vacparted, vaccluster, vactst; VACUUM (FREEZE) does_not_exist, vaccluster; VACUUM ANALYZE vactst, vacparted (a); VACUUM ANALYZE vactst (does_not_exist), vacparted (b); VACUUM FULL vacparted, vactst; VACUUM FULL vactst, vacparted (a, b), vaccluster (i); ANALYZE vactst, vacparted; ANALYZE vacparted (b), vactst; ANALYZE vactst, does_not_exist, vacparted; ANALYZE vactst (i), vacparted (does_not_exist); ANALYZE vactst, vactst; BEGIN; -- ANALYZE behaves differently inside a transaction block ANALYZE vactst, vactst; COMMIT; -- parenthesized syntax for ANALYZE ANALYZE (VERBOSE) does_not_exist; ANALYZE (nonexistent-arg) does_not_exist; ANALYZE (nonexistentarg) does_not_exit; -- ensure argument order independence, and that SKIP_LOCKED on non-existing -- relation still errors out. Suppress WARNING messages caused by concurrent -- autovacuums. SET client_min_messages TO 'ERROR'; ANALYZE (SKIP_LOCKED, VERBOSE) does_not_exist; ANALYZE (VERBOSE, SKIP_LOCKED) does_not_exist; -- SKIP_LOCKED option VACUUM (SKIP_LOCKED) vactst; VACUUM (SKIP_LOCKED, FULL) vactst; ANALYZE (SKIP_LOCKED) vactst; RESET client_min_messages; -- ensure VACUUM and ANALYZE don't have a problem with serializable SET default_transaction_isolation = serializable; VACUUM vactst; ANALYZE vactst; RESET default_transaction_isolation; BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; ANALYZE vactst; COMMIT; DROP TABLE vaccluster; DROP TABLE vactst; DROP TABLE vacparted; DROP TABLE no_index_cleanup; -- relation ownership, WARNING logs generated as all are skipped. CREATE TABLE vacowned (a int); CREATE TABLE vacowned_parted (a int) PARTITION BY LIST (a); CREATE TABLE vacowned_part1 PARTITION OF vacowned_parted FOR VALUES IN (1); CREATE TABLE vacowned_part2 PARTITION OF vacowned_parted FOR VALUES IN (2); CREATE ROLE regress_vacuum; SET ROLE regress_vacuum; -- Simple table VACUUM vacowned; ANALYZE vacowned; VACUUM (ANALYZE) vacowned; -- Catalog VACUUM pg_catalog.pg_class; ANALYZE pg_catalog.pg_class; VACUUM (ANALYZE) pg_catalog.pg_class; -- Shared catalog VACUUM pg_catalog.pg_authid; ANALYZE pg_catalog.pg_authid; VACUUM (ANALYZE) pg_catalog.pg_authid; -- Partitioned table and its partitions, nothing owned by other user. -- Relations are not listed in a single command to test ownership -- independently. VACUUM vacowned_parted; VACUUM vacowned_part1; VACUUM vacowned_part2; ANALYZE vacowned_parted; ANALYZE vacowned_part1; ANALYZE vacowned_part2; VACUUM (ANALYZE) vacowned_parted; VACUUM (ANALYZE) vacowned_part1; VACUUM (ANALYZE) vacowned_part2; RESET ROLE; -- Partitioned table and one partition owned by other user. ALTER TABLE vacowned_parted OWNER TO regress_vacuum; ALTER TABLE vacowned_part1 OWNER TO regress_vacuum; SET ROLE regress_vacuum; VACUUM vacowned_parted; VACUUM vacowned_part1; VACUUM vacowned_part2; ANALYZE vacowned_parted; ANALYZE vacowned_part1; ANALYZE vacowned_part2; VACUUM (ANALYZE) vacowned_parted; VACUUM (ANALYZE) vacowned_part1; VACUUM (ANALYZE) vacowned_part2; RESET ROLE; -- Only one partition owned by other user. ALTER TABLE vacowned_parted OWNER TO CURRENT_USER; SET ROLE regress_vacuum; VACUUM vacowned_parted; VACUUM vacowned_part1; VACUUM vacowned_part2; ANALYZE vacowned_parted; ANALYZE vacowned_part1; ANALYZE vacowned_part2; VACUUM (ANALYZE) vacowned_parted; VACUUM (ANALYZE) vacowned_part1; VACUUM (ANALYZE) vacowned_part2; RESET ROLE; -- Only partitioned table owned by other user. ALTER TABLE vacowned_parted OWNER TO regress_vacuum; ALTER TABLE vacowned_part1 OWNER TO CURRENT_USER; SET ROLE regress_vacuum; VACUUM vacowned_parted; VACUUM vacowned_part1; VACUUM vacowned_part2; ANALYZE vacowned_parted; ANALYZE vacowned_part1; ANALYZE vacowned_part2; VACUUM (ANALYZE) vacowned_parted; VACUUM (ANALYZE) vacowned_part1; VACUUM (ANALYZE) vacowned_part2; RESET ROLE; DROP TABLE vacowned; DROP TABLE vacowned_parted; DROP ROLE regress_vacuum; libpg_query-13-2.1.0/test/sql/postgres_regress/varchar.sql000066400000000000000000000025131413137616400236110ustar00rootroot00000000000000-- -- VARCHAR -- CREATE TABLE VARCHAR_TBL(f1 varchar(1)); INSERT INTO VARCHAR_TBL (f1) VALUES ('a'); INSERT INTO VARCHAR_TBL (f1) VALUES ('A'); -- any of the following three input formats are acceptable INSERT INTO VARCHAR_TBL (f1) VALUES ('1'); INSERT INTO VARCHAR_TBL (f1) VALUES (2); INSERT INTO VARCHAR_TBL (f1) VALUES ('3'); -- zero-length char INSERT INTO VARCHAR_TBL (f1) VALUES (''); -- try varchar's of greater than 1 length INSERT INTO VARCHAR_TBL (f1) VALUES ('cd'); INSERT INTO VARCHAR_TBL (f1) VALUES ('c '); SELECT '' AS seven, * FROM VARCHAR_TBL; SELECT '' AS six, c.* FROM VARCHAR_TBL c WHERE c.f1 <> 'a'; SELECT '' AS one, c.* FROM VARCHAR_TBL c WHERE c.f1 = 'a'; SELECT '' AS five, c.* FROM VARCHAR_TBL c WHERE c.f1 < 'a'; SELECT '' AS six, c.* FROM VARCHAR_TBL c WHERE c.f1 <= 'a'; SELECT '' AS one, c.* FROM VARCHAR_TBL c WHERE c.f1 > 'a'; SELECT '' AS two, c.* FROM VARCHAR_TBL c WHERE c.f1 >= 'a'; DROP TABLE VARCHAR_TBL; -- -- Now test longer arrays of char -- CREATE TABLE VARCHAR_TBL(f1 varchar(4)); INSERT INTO VARCHAR_TBL (f1) VALUES ('a'); INSERT INTO VARCHAR_TBL (f1) VALUES ('ab'); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd'); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcde'); INSERT INTO VARCHAR_TBL (f1) VALUES ('abcd '); SELECT '' AS four, * FROM VARCHAR_TBL; libpg_query-13-2.1.0/test/sql/postgres_regress/window.sql000066400000000000000000001406401413137616400234760ustar00rootroot00000000000000-- -- WINDOW FUNCTIONS -- CREATE TEMPORARY TABLE empsalary ( depname varchar, empno bigint, salary int, enroll_date date ); INSERT INTO empsalary VALUES ('develop', 10, 5200, '2007-08-01'), ('sales', 1, 5000, '2006-10-01'), ('personnel', 5, 3500, '2007-12-10'), ('sales', 4, 4800, '2007-08-08'), ('personnel', 2, 3900, '2006-12-23'), ('develop', 7, 4200, '2008-01-01'), ('develop', 9, 4500, '2008-01-01'), ('sales', 3, 4800, '2007-08-01'), ('develop', 8, 6000, '2006-10-01'), ('develop', 11, 5200, '2007-08-15'); SELECT depname, empno, salary, sum(salary) OVER (PARTITION BY depname) FROM empsalary ORDER BY depname, salary; SELECT depname, empno, salary, rank() OVER (PARTITION BY depname ORDER BY salary) FROM empsalary; -- with GROUP BY SELECT four, ten, SUM(SUM(four)) OVER (PARTITION BY four), AVG(ten) FROM tenk1 GROUP BY four, ten ORDER BY four, ten; SELECT depname, empno, salary, sum(salary) OVER w FROM empsalary WINDOW w AS (PARTITION BY depname); SELECT depname, empno, salary, rank() OVER w FROM empsalary WINDOW w AS (PARTITION BY depname ORDER BY salary) ORDER BY rank() OVER w; -- empty window specification SELECT COUNT(*) OVER () FROM tenk1 WHERE unique2 < 10; SELECT COUNT(*) OVER w FROM tenk1 WHERE unique2 < 10 WINDOW w AS (); -- no window operation SELECT four FROM tenk1 WHERE FALSE WINDOW w AS (PARTITION BY ten); -- cumulative aggregate SELECT sum(four) OVER (PARTITION BY ten ORDER BY unique2) AS sum_1, ten, four FROM tenk1 WHERE unique2 < 10; SELECT row_number() OVER (ORDER BY unique2) FROM tenk1 WHERE unique2 < 10; SELECT rank() OVER (PARTITION BY four ORDER BY ten) AS rank_1, ten, four FROM tenk1 WHERE unique2 < 10; SELECT dense_rank() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; SELECT percent_rank() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; SELECT cume_dist() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; SELECT ntile(3) OVER (ORDER BY ten, four), ten, four FROM tenk1 WHERE unique2 < 10; SELECT ntile(NULL) OVER (ORDER BY ten, four), ten, four FROM tenk1 LIMIT 2; SELECT lag(ten) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; SELECT lag(ten, four) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; SELECT lag(ten, four, 0) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; SELECT lead(ten) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; SELECT lead(ten * 2, 1) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; SELECT lead(ten * 2, 1, -1) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; SELECT first_value(ten) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; -- last_value returns the last row of the frame, which is CURRENT ROW in ORDER BY window. SELECT last_value(four) OVER (ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10; SELECT last_value(ten) OVER (PARTITION BY four), ten, four FROM (SELECT * FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten)s ORDER BY four, ten; SELECT nth_value(ten, four + 1) OVER (PARTITION BY four), ten, four FROM (SELECT * FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten)s; SELECT ten, two, sum(hundred) AS gsum, sum(sum(hundred)) OVER (PARTITION BY two ORDER BY ten) AS wsum FROM tenk1 GROUP BY ten, two; SELECT count(*) OVER (PARTITION BY four), four FROM (SELECT * FROM tenk1 WHERE two = 1)s WHERE unique2 < 10; SELECT (count(*) OVER (PARTITION BY four ORDER BY ten) + sum(hundred) OVER (PARTITION BY four ORDER BY ten))::varchar AS cntsum FROM tenk1 WHERE unique2 < 10; -- opexpr with different windows evaluation. SELECT * FROM( SELECT count(*) OVER (PARTITION BY four ORDER BY ten) + sum(hundred) OVER (PARTITION BY two ORDER BY ten) AS total, count(*) OVER (PARTITION BY four ORDER BY ten) AS fourcount, sum(hundred) OVER (PARTITION BY two ORDER BY ten) AS twosum FROM tenk1 )sub WHERE total <> fourcount + twosum; SELECT avg(four) OVER (PARTITION BY four ORDER BY thousand / 100) FROM tenk1 WHERE unique2 < 10; SELECT ten, two, sum(hundred) AS gsum, sum(sum(hundred)) OVER win AS wsum FROM tenk1 GROUP BY ten, two WINDOW win AS (PARTITION BY two ORDER BY ten); -- more than one window with GROUP BY SELECT sum(salary), row_number() OVER (ORDER BY depname), sum(sum(salary)) OVER (ORDER BY depname DESC) FROM empsalary GROUP BY depname; -- identical windows with different names SELECT sum(salary) OVER w1, count(*) OVER w2 FROM empsalary WINDOW w1 AS (ORDER BY salary), w2 AS (ORDER BY salary); -- subplan SELECT lead(ten, (SELECT two FROM tenk1 WHERE s.unique2 = unique2)) OVER (PARTITION BY four ORDER BY ten) FROM tenk1 s WHERE unique2 < 10; -- empty table SELECT count(*) OVER (PARTITION BY four) FROM (SELECT * FROM tenk1 WHERE FALSE)s; -- mixture of agg/wfunc in the same window SELECT sum(salary) OVER w, rank() OVER w FROM empsalary WINDOW w AS (PARTITION BY depname ORDER BY salary DESC); -- strict aggs SELECT empno, depname, salary, bonus, depadj, MIN(bonus) OVER (ORDER BY empno), MAX(depadj) OVER () FROM( SELECT *, CASE WHEN enroll_date < '2008-01-01' THEN 2008 - extract(YEAR FROM enroll_date) END * 500 AS bonus, CASE WHEN AVG(salary) OVER (PARTITION BY depname) < salary THEN 200 END AS depadj FROM empsalary )s; -- window function over ungrouped agg over empty row set (bug before 9.1) SELECT SUM(COUNT(f1)) OVER () FROM int4_tbl WHERE f1=42; -- window function with ORDER BY an expression involving aggregates (9.1 bug) select ten, sum(unique1) + sum(unique2) as res, rank() over (order by sum(unique1) + sum(unique2)) as rank from tenk1 group by ten order by ten; -- window and aggregate with GROUP BY expression (9.2 bug) explain (costs off) select first_value(max(x)) over (), y from (select unique1 as x, ten+four as y from tenk1) ss group by y; -- test non-default frame specifications SELECT four, ten, sum(ten) over (partition by four order by ten), last_value(ten) over (partition by four order by ten) FROM (select distinct ten, four from tenk1) ss; SELECT four, ten, sum(ten) over (partition by four order by ten range between unbounded preceding and current row), last_value(ten) over (partition by four order by ten range between unbounded preceding and current row) FROM (select distinct ten, four from tenk1) ss; SELECT four, ten, sum(ten) over (partition by four order by ten range between unbounded preceding and unbounded following), last_value(ten) over (partition by four order by ten range between unbounded preceding and unbounded following) FROM (select distinct ten, four from tenk1) ss; SELECT four, ten/4 as two, sum(ten/4) over (partition by four order by ten/4 range between unbounded preceding and current row), last_value(ten/4) over (partition by four order by ten/4 range between unbounded preceding and current row) FROM (select distinct ten, four from tenk1) ss; SELECT four, ten/4 as two, sum(ten/4) over (partition by four order by ten/4 rows between unbounded preceding and current row), last_value(ten/4) over (partition by four order by ten/4 rows between unbounded preceding and current row) FROM (select distinct ten, four from tenk1) ss; SELECT sum(unique1) over (order by four range between current row and unbounded following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between current row and unbounded following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between 2 preceding and 2 following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude no others), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude current row), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude group), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude ties), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude current row), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude group), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude ties), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude current row), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude group), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude ties), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between 2 preceding and 1 preceding), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between 1 following and 3 following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (rows between unbounded preceding and 1 following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (w range between current row and unbounded following), unique1, four FROM tenk1 WHERE unique1 < 10 WINDOW w AS (order by four); SELECT sum(unique1) over (w range between unbounded preceding and current row exclude current row), unique1, four FROM tenk1 WHERE unique1 < 10 WINDOW w AS (order by four); SELECT sum(unique1) over (w range between unbounded preceding and current row exclude group), unique1, four FROM tenk1 WHERE unique1 < 10 WINDOW w AS (order by four); SELECT sum(unique1) over (w range between unbounded preceding and current row exclude ties), unique1, four FROM tenk1 WHERE unique1 < 10 WINDOW w AS (order by four); SELECT first_value(unique1) over w, nth_value(unique1, 2) over w AS nth_2, last_value(unique1) over w, unique1, four FROM tenk1 WHERE unique1 < 10 WINDOW w AS (order by four range between current row and unbounded following); SELECT sum(unique1) over (order by unique1 rows (SELECT unique1 FROM tenk1 ORDER BY unique1 LIMIT 1) + 1 PRECEDING), unique1 FROM tenk1 WHERE unique1 < 10; CREATE TEMP VIEW v_window AS SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following) as sum_rows FROM generate_series(1, 10) i; SELECT * FROM v_window; SELECT pg_get_viewdef('v_window'); CREATE OR REPLACE TEMP VIEW v_window AS SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following exclude current row) as sum_rows FROM generate_series(1, 10) i; SELECT * FROM v_window; SELECT pg_get_viewdef('v_window'); CREATE OR REPLACE TEMP VIEW v_window AS SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following exclude group) as sum_rows FROM generate_series(1, 10) i; SELECT * FROM v_window; SELECT pg_get_viewdef('v_window'); CREATE OR REPLACE TEMP VIEW v_window AS SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following exclude ties) as sum_rows FROM generate_series(1, 10) i; SELECT * FROM v_window; SELECT pg_get_viewdef('v_window'); CREATE OR REPLACE TEMP VIEW v_window AS SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following exclude no others) as sum_rows FROM generate_series(1, 10) i; SELECT * FROM v_window; SELECT pg_get_viewdef('v_window'); CREATE OR REPLACE TEMP VIEW v_window AS SELECT i, sum(i) over (order by i groups between 1 preceding and 1 following) as sum_rows FROM generate_series(1, 10) i; SELECT * FROM v_window; SELECT pg_get_viewdef('v_window'); DROP VIEW v_window; CREATE TEMP VIEW v_window AS SELECT i, min(i) over (order by i range between '1 day' preceding and '10 days' following) as min_i FROM generate_series(now(), now()+'100 days'::interval, '1 hour') i; SELECT pg_get_viewdef('v_window'); -- RANGE offset PRECEDING/FOLLOWING tests SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four desc range between 2::int8 preceding and 1::int2 preceding), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude no others), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude current row), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude group), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude ties), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four range between 2::int8 preceding and 6::int2 following exclude ties), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four range between 2::int8 preceding and 6::int2 following exclude group), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (partition by four order by unique1 range between 5::int8 preceding and 6::int2 following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (partition by four order by unique1 range between 5::int8 preceding and 6::int2 following exclude current row),unique1, four FROM tenk1 WHERE unique1 < 10; select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following), salary, enroll_date from empsalary; select sum(salary) over (order by enroll_date desc range between '1 year'::interval preceding and '1 year'::interval following), salary, enroll_date from empsalary; select sum(salary) over (order by enroll_date desc range between '1 year'::interval following and '1 year'::interval following), salary, enroll_date from empsalary; select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following exclude current row), salary, enroll_date from empsalary; select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following exclude group), salary, enroll_date from empsalary; select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following exclude ties), salary, enroll_date from empsalary; select first_value(salary) over(order by salary range between 1000 preceding and 1000 following), lead(salary) over(order by salary range between 1000 preceding and 1000 following), nth_value(salary, 1) over(order by salary range between 1000 preceding and 1000 following), salary from empsalary; select last_value(salary) over(order by salary range between 1000 preceding and 1000 following), lag(salary) over(order by salary range between 1000 preceding and 1000 following), salary from empsalary; select first_value(salary) over(order by salary range between 1000 following and 3000 following exclude current row), lead(salary) over(order by salary range between 1000 following and 3000 following exclude ties), nth_value(salary, 1) over(order by salary range between 1000 following and 3000 following exclude ties), salary from empsalary; select last_value(salary) over(order by salary range between 1000 following and 3000 following exclude group), lag(salary) over(order by salary range between 1000 following and 3000 following exclude group), salary from empsalary; select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following exclude ties), last_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following), salary, enroll_date from empsalary; select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following exclude ties), last_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following exclude ties), salary, enroll_date from empsalary; select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following exclude group), last_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following exclude group), salary, enroll_date from empsalary; select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following exclude current row), last_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following exclude current row), salary, enroll_date from empsalary; -- RANGE offset PRECEDING/FOLLOWING with null values select x, y, first_value(y) over w, last_value(y) over w from (select x, x as y from generate_series(1,5) as x union all select null, 42 union all select null, 43) ss window w as (order by x asc nulls first range between 2 preceding and 2 following); select x, y, first_value(y) over w, last_value(y) over w from (select x, x as y from generate_series(1,5) as x union all select null, 42 union all select null, 43) ss window w as (order by x asc nulls last range between 2 preceding and 2 following); select x, y, first_value(y) over w, last_value(y) over w from (select x, x as y from generate_series(1,5) as x union all select null, 42 union all select null, 43) ss window w as (order by x desc nulls first range between 2 preceding and 2 following); select x, y, first_value(y) over w, last_value(y) over w from (select x, x as y from generate_series(1,5) as x union all select null, 42 union all select null, 43) ss window w as (order by x desc nulls last range between 2 preceding and 2 following); -- Check overflow behavior for various integer sizes select x, last_value(x) over (order by x::smallint range between current row and 2147450884 following) from generate_series(32764, 32766) x; select x, last_value(x) over (order by x::smallint desc range between current row and 2147450885 following) from generate_series(-32766, -32764) x; select x, last_value(x) over (order by x range between current row and 4 following) from generate_series(2147483644, 2147483646) x; select x, last_value(x) over (order by x desc range between current row and 5 following) from generate_series(-2147483646, -2147483644) x; select x, last_value(x) over (order by x range between current row and 4 following) from generate_series(9223372036854775804, 9223372036854775806) x; select x, last_value(x) over (order by x desc range between current row and 5 following) from generate_series(-9223372036854775806, -9223372036854775804) x; -- Test in_range for other numeric datatypes create temp table numerics( id int, f_float4 float4, f_float8 float8, f_numeric numeric ); insert into numerics values (0, '-infinity', '-infinity', '-1000'), -- numeric type lacks infinities (1, -3, -3, -3), (2, -1, -1, -1), (3, 0, 0, 0), (4, 1.1, 1.1, 1.1), (5, 1.12, 1.12, 1.12), (6, 2, 2, 2), (7, 100, 100, 100), (8, 'infinity', 'infinity', '1000'), (9, 'NaN', 'NaN', 'NaN'); select id, f_float4, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_float4 range between 1 preceding and 1 following); select id, f_float4, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_float4 range between 1 preceding and 1.1::float4 following); select id, f_float4, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_float4 range between 'inf' preceding and 'inf' following); select id, f_float4, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_float4 range between 1.1 preceding and 'NaN' following); -- error, NaN disallowed select id, f_float8, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_float8 range between 1 preceding and 1 following); select id, f_float8, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_float8 range between 1 preceding and 1.1::float8 following); select id, f_float8, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_float8 range between 'inf' preceding and 'inf' following); select id, f_float8, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_float8 range between 1.1 preceding and 'NaN' following); -- error, NaN disallowed select id, f_numeric, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_numeric range between 1 preceding and 1 following); select id, f_numeric, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_numeric range between 1 preceding and 1.1::numeric following); select id, f_numeric, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_numeric range between 1 preceding and 1.1::float8 following); -- currently unsupported select id, f_numeric, first_value(id) over w, last_value(id) over w from numerics window w as (order by f_numeric range between 1.1 preceding and 'NaN' following); -- error, NaN disallowed -- Test in_range for other datetime datatypes create temp table datetimes( id int, f_time time, f_timetz timetz, f_interval interval, f_timestamptz timestamptz, f_timestamp timestamp ); insert into datetimes values (1, '11:00', '11:00 BST', '1 year', '2000-10-19 10:23:54+01', '2000-10-19 10:23:54'), (2, '12:00', '12:00 BST', '2 years', '2001-10-19 10:23:54+01', '2001-10-19 10:23:54'), (3, '13:00', '13:00 BST', '3 years', '2001-10-19 10:23:54+01', '2001-10-19 10:23:54'), (4, '14:00', '14:00 BST', '4 years', '2002-10-19 10:23:54+01', '2002-10-19 10:23:54'), (5, '15:00', '15:00 BST', '5 years', '2003-10-19 10:23:54+01', '2003-10-19 10:23:54'), (6, '15:00', '15:00 BST', '5 years', '2004-10-19 10:23:54+01', '2004-10-19 10:23:54'), (7, '17:00', '17:00 BST', '7 years', '2005-10-19 10:23:54+01', '2005-10-19 10:23:54'), (8, '18:00', '18:00 BST', '8 years', '2006-10-19 10:23:54+01', '2006-10-19 10:23:54'), (9, '19:00', '19:00 BST', '9 years', '2007-10-19 10:23:54+01', '2007-10-19 10:23:54'), (10, '20:00', '20:00 BST', '10 years', '2008-10-19 10:23:54+01', '2008-10-19 10:23:54'); select id, f_time, first_value(id) over w, last_value(id) over w from datetimes window w as (order by f_time range between '70 min'::interval preceding and '2 hours'::interval following); select id, f_time, first_value(id) over w, last_value(id) over w from datetimes window w as (order by f_time desc range between '70 min' preceding and '2 hours' following); select id, f_timetz, first_value(id) over w, last_value(id) over w from datetimes window w as (order by f_timetz range between '70 min'::interval preceding and '2 hours'::interval following); select id, f_timetz, first_value(id) over w, last_value(id) over w from datetimes window w as (order by f_timetz desc range between '70 min' preceding and '2 hours' following); select id, f_interval, first_value(id) over w, last_value(id) over w from datetimes window w as (order by f_interval range between '1 year'::interval preceding and '1 year'::interval following); select id, f_interval, first_value(id) over w, last_value(id) over w from datetimes window w as (order by f_interval desc range between '1 year' preceding and '1 year' following); select id, f_timestamptz, first_value(id) over w, last_value(id) over w from datetimes window w as (order by f_timestamptz range between '1 year'::interval preceding and '1 year'::interval following); select id, f_timestamptz, first_value(id) over w, last_value(id) over w from datetimes window w as (order by f_timestamptz desc range between '1 year' preceding and '1 year' following); select id, f_timestamp, first_value(id) over w, last_value(id) over w from datetimes window w as (order by f_timestamp range between '1 year'::interval preceding and '1 year'::interval following); select id, f_timestamp, first_value(id) over w, last_value(id) over w from datetimes window w as (order by f_timestamp desc range between '1 year' preceding and '1 year' following); -- RANGE offset PRECEDING/FOLLOWING error cases select sum(salary) over (order by enroll_date, salary range between '1 year'::interval preceding and '2 years'::interval following exclude ties), salary, enroll_date from empsalary; select sum(salary) over (range between '1 year'::interval preceding and '2 years'::interval following exclude ties), salary, enroll_date from empsalary; select sum(salary) over (order by depname range between '1 year'::interval preceding and '2 years'::interval following exclude ties), salary, enroll_date from empsalary; select max(enroll_date) over (order by enroll_date range between 1 preceding and 2 following exclude ties), salary, enroll_date from empsalary; select max(enroll_date) over (order by salary range between -1 preceding and 2 following exclude ties), salary, enroll_date from empsalary; select max(enroll_date) over (order by salary range between 1 preceding and -2 following exclude ties), salary, enroll_date from empsalary; select max(enroll_date) over (order by salary range between '1 year'::interval preceding and '2 years'::interval following exclude ties), salary, enroll_date from empsalary; select max(enroll_date) over (order by enroll_date range between '1 year'::interval preceding and '-2 years'::interval following exclude ties), salary, enroll_date from empsalary; -- GROUPS tests SELECT sum(unique1) over (order by four groups between unbounded preceding and current row), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between unbounded preceding and unbounded following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between current row and unbounded following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between 1 preceding and unbounded following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between 1 following and unbounded following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between unbounded preceding and 2 following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between 2 preceding and 1 preceding), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between 0 preceding and 0 following), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following exclude current row), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following exclude group), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following exclude ties), unique1, four FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (partition by ten order by four groups between 0 preceding and 0 following),unique1, four, ten FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (partition by ten order by four groups between 0 preceding and 0 following exclude current row), unique1, four, ten FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (partition by ten order by four groups between 0 preceding and 0 following exclude group), unique1, four, ten FROM tenk1 WHERE unique1 < 10; SELECT sum(unique1) over (partition by ten order by four groups between 0 preceding and 0 following exclude ties), unique1, four, ten FROM tenk1 WHERE unique1 < 10; select first_value(salary) over(order by enroll_date groups between 1 preceding and 1 following), lead(salary) over(order by enroll_date groups between 1 preceding and 1 following), nth_value(salary, 1) over(order by enroll_date groups between 1 preceding and 1 following), salary, enroll_date from empsalary; select last_value(salary) over(order by enroll_date groups between 1 preceding and 1 following), lag(salary) over(order by enroll_date groups between 1 preceding and 1 following), salary, enroll_date from empsalary; select first_value(salary) over(order by enroll_date groups between 1 following and 3 following exclude current row), lead(salary) over(order by enroll_date groups between 1 following and 3 following exclude ties), nth_value(salary, 1) over(order by enroll_date groups between 1 following and 3 following exclude ties), salary, enroll_date from empsalary; select last_value(salary) over(order by enroll_date groups between 1 following and 3 following exclude group), lag(salary) over(order by enroll_date groups between 1 following and 3 following exclude group), salary, enroll_date from empsalary; -- Show differences in offset interpretation between ROWS, RANGE, and GROUPS WITH cte (x) AS ( SELECT * FROM generate_series(1, 35, 2) ) SELECT x, (sum(x) over w) FROM cte WINDOW w AS (ORDER BY x rows between 1 preceding and 1 following); WITH cte (x) AS ( SELECT * FROM generate_series(1, 35, 2) ) SELECT x, (sum(x) over w) FROM cte WINDOW w AS (ORDER BY x range between 1 preceding and 1 following); WITH cte (x) AS ( SELECT * FROM generate_series(1, 35, 2) ) SELECT x, (sum(x) over w) FROM cte WINDOW w AS (ORDER BY x groups between 1 preceding and 1 following); WITH cte (x) AS ( select 1 union all select 1 union all select 1 union all SELECT * FROM generate_series(5, 49, 2) ) SELECT x, (sum(x) over w) FROM cte WINDOW w AS (ORDER BY x rows between 1 preceding and 1 following); WITH cte (x) AS ( select 1 union all select 1 union all select 1 union all SELECT * FROM generate_series(5, 49, 2) ) SELECT x, (sum(x) over w) FROM cte WINDOW w AS (ORDER BY x range between 1 preceding and 1 following); WITH cte (x) AS ( select 1 union all select 1 union all select 1 union all SELECT * FROM generate_series(5, 49, 2) ) SELECT x, (sum(x) over w) FROM cte WINDOW w AS (ORDER BY x groups between 1 preceding and 1 following); -- with UNION SELECT count(*) OVER (PARTITION BY four) FROM (SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk2)s LIMIT 0; -- check some degenerate cases create temp table t1 (f1 int, f2 int8); insert into t1 values (1,1),(1,2),(2,2); select f1, sum(f1) over (partition by f1 range between 1 preceding and 1 following) from t1 where f1 = f2; -- error, must have order by explain (costs off) select f1, sum(f1) over (partition by f1 order by f2 range between 1 preceding and 1 following) from t1 where f1 = f2; select f1, sum(f1) over (partition by f1 order by f2 range between 1 preceding and 1 following) from t1 where f1 = f2; select f1, sum(f1) over (partition by f1, f1 order by f2 range between 2 preceding and 1 preceding) from t1 where f1 = f2; select f1, sum(f1) over (partition by f1, f2 order by f2 range between 1 following and 2 following) from t1 where f1 = f2; select f1, sum(f1) over (partition by f1 groups between 1 preceding and 1 following) from t1 where f1 = f2; -- error, must have order by explain (costs off) select f1, sum(f1) over (partition by f1 order by f2 groups between 1 preceding and 1 following) from t1 where f1 = f2; select f1, sum(f1) over (partition by f1 order by f2 groups between 1 preceding and 1 following) from t1 where f1 = f2; select f1, sum(f1) over (partition by f1, f1 order by f2 groups between 2 preceding and 1 preceding) from t1 where f1 = f2; select f1, sum(f1) over (partition by f1, f2 order by f2 groups between 1 following and 2 following) from t1 where f1 = f2; -- ordering by a non-integer constant is allowed SELECT rank() OVER (ORDER BY length('abc')); -- can't order by another window function SELECT rank() OVER (ORDER BY rank() OVER (ORDER BY random())); -- some other errors SELECT * FROM empsalary WHERE row_number() OVER (ORDER BY salary) < 10; SELECT * FROM empsalary INNER JOIN tenk1 ON row_number() OVER (ORDER BY salary) < 10; SELECT rank() OVER (ORDER BY 1), count(*) FROM empsalary GROUP BY 1; SELECT * FROM rank() OVER (ORDER BY random()); DELETE FROM empsalary WHERE (rank() OVER (ORDER BY random())) > 10; DELETE FROM empsalary RETURNING rank() OVER (ORDER BY random()); SELECT count(*) OVER w FROM tenk1 WINDOW w AS (ORDER BY unique1), w AS (ORDER BY unique1); SELECT rank() OVER (PARTITION BY four, ORDER BY ten) FROM tenk1; SELECT count() OVER () FROM tenk1; SELECT generate_series(1, 100) OVER () FROM empsalary; SELECT ntile(0) OVER (ORDER BY ten), ten, four FROM tenk1; SELECT nth_value(four, 0) OVER (ORDER BY ten), ten, four FROM tenk1; -- filter SELECT sum(salary), row_number() OVER (ORDER BY depname), sum( sum(salary) FILTER (WHERE enroll_date > '2007-01-01') ) FILTER (WHERE depname <> 'sales') OVER (ORDER BY depname DESC) AS "filtered_sum", depname FROM empsalary GROUP BY depname; -- Test pushdown of quals into a subquery containing window functions -- pushdown is safe because all PARTITION BY clauses include depname: EXPLAIN (COSTS OFF) SELECT * FROM (SELECT depname, sum(salary) OVER (PARTITION BY depname) depsalary, min(salary) OVER (PARTITION BY depname || 'A', depname) depminsalary FROM empsalary) emp WHERE depname = 'sales'; -- pushdown is unsafe because there's a PARTITION BY clause without depname: EXPLAIN (COSTS OFF) SELECT * FROM (SELECT depname, sum(salary) OVER (PARTITION BY enroll_date) enroll_salary, min(salary) OVER (PARTITION BY depname) depminsalary FROM empsalary) emp WHERE depname = 'sales'; -- Test Sort node collapsing EXPLAIN (COSTS OFF) SELECT * FROM (SELECT depname, sum(salary) OVER (PARTITION BY depname order by empno) depsalary, min(salary) OVER (PARTITION BY depname, empno order by enroll_date) depminsalary FROM empsalary) emp WHERE depname = 'sales'; -- Test Sort node reordering EXPLAIN (COSTS OFF) SELECT lead(1) OVER (PARTITION BY depname ORDER BY salary, enroll_date), lag(1) OVER (PARTITION BY depname ORDER BY salary,enroll_date,empno) FROM empsalary; -- cleanup DROP TABLE empsalary; -- test user-defined window function with named args and default args CREATE FUNCTION nth_value_def(val anyelement, n integer = 1) RETURNS anyelement LANGUAGE internal WINDOW IMMUTABLE STRICT AS 'window_nth_value'; SELECT nth_value_def(n := 2, val := ten) OVER (PARTITION BY four), ten, four FROM (SELECT * FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten) s; SELECT nth_value_def(ten) OVER (PARTITION BY four), ten, four FROM (SELECT * FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten) s; -- -- Test the basic moving-aggregate machinery -- -- create aggregates that record the series of transform calls (these are -- intentionally not true inverses) CREATE FUNCTION logging_sfunc_nonstrict(text, anyelement) RETURNS text AS $$ SELECT COALESCE($1, '') || '*' || quote_nullable($2) $$ LANGUAGE SQL IMMUTABLE; CREATE FUNCTION logging_msfunc_nonstrict(text, anyelement) RETURNS text AS $$ SELECT COALESCE($1, '') || '+' || quote_nullable($2) $$ LANGUAGE SQL IMMUTABLE; CREATE FUNCTION logging_minvfunc_nonstrict(text, anyelement) RETURNS text AS $$ SELECT $1 || '-' || quote_nullable($2) $$ LANGUAGE SQL IMMUTABLE; CREATE AGGREGATE logging_agg_nonstrict (anyelement) ( stype = text, sfunc = logging_sfunc_nonstrict, mstype = text, msfunc = logging_msfunc_nonstrict, minvfunc = logging_minvfunc_nonstrict ); CREATE AGGREGATE logging_agg_nonstrict_initcond (anyelement) ( stype = text, sfunc = logging_sfunc_nonstrict, mstype = text, msfunc = logging_msfunc_nonstrict, minvfunc = logging_minvfunc_nonstrict, initcond = 'I', minitcond = 'MI' ); CREATE FUNCTION logging_sfunc_strict(text, anyelement) RETURNS text AS $$ SELECT $1 || '*' || quote_nullable($2) $$ LANGUAGE SQL STRICT IMMUTABLE; CREATE FUNCTION logging_msfunc_strict(text, anyelement) RETURNS text AS $$ SELECT $1 || '+' || quote_nullable($2) $$ LANGUAGE SQL STRICT IMMUTABLE; CREATE FUNCTION logging_minvfunc_strict(text, anyelement) RETURNS text AS $$ SELECT $1 || '-' || quote_nullable($2) $$ LANGUAGE SQL STRICT IMMUTABLE; CREATE AGGREGATE logging_agg_strict (text) ( stype = text, sfunc = logging_sfunc_strict, mstype = text, msfunc = logging_msfunc_strict, minvfunc = logging_minvfunc_strict ); CREATE AGGREGATE logging_agg_strict_initcond (anyelement) ( stype = text, sfunc = logging_sfunc_strict, mstype = text, msfunc = logging_msfunc_strict, minvfunc = logging_minvfunc_strict, initcond = 'I', minitcond = 'MI' ); -- test strict and non-strict cases SELECT p::text || ',' || i::text || ':' || COALESCE(v::text, 'NULL') AS row, logging_agg_nonstrict(v) over wnd as nstrict, logging_agg_nonstrict_initcond(v) over wnd as nstrict_init, logging_agg_strict(v::text) over wnd as strict, logging_agg_strict_initcond(v) over wnd as strict_init FROM (VALUES (1, 1, NULL), (1, 2, 'a'), (1, 3, 'b'), (1, 4, NULL), (1, 5, NULL), (1, 6, 'c'), (2, 1, NULL), (2, 2, 'x'), (3, 1, 'z') ) AS t(p, i, v) WINDOW wnd AS (PARTITION BY P ORDER BY i ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) ORDER BY p, i; -- and again, but with filter SELECT p::text || ',' || i::text || ':' || CASE WHEN f THEN COALESCE(v::text, 'NULL') ELSE '-' END as row, logging_agg_nonstrict(v) filter(where f) over wnd as nstrict_filt, logging_agg_nonstrict_initcond(v) filter(where f) over wnd as nstrict_init_filt, logging_agg_strict(v::text) filter(where f) over wnd as strict_filt, logging_agg_strict_initcond(v) filter(where f) over wnd as strict_init_filt FROM (VALUES (1, 1, true, NULL), (1, 2, false, 'a'), (1, 3, true, 'b'), (1, 4, false, NULL), (1, 5, false, NULL), (1, 6, false, 'c'), (2, 1, false, NULL), (2, 2, true, 'x'), (3, 1, true, 'z') ) AS t(p, i, f, v) WINDOW wnd AS (PARTITION BY p ORDER BY i ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) ORDER BY p, i; -- test that volatile arguments disable moving-aggregate mode SELECT i::text || ':' || COALESCE(v::text, 'NULL') as row, logging_agg_strict(v::text) over wnd as inverse, logging_agg_strict(v::text || CASE WHEN random() < 0 then '?' ELSE '' END) over wnd as noinverse FROM (VALUES (1, 'a'), (2, 'b'), (3, 'c') ) AS t(i, v) WINDOW wnd AS (ORDER BY i ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) ORDER BY i; SELECT i::text || ':' || COALESCE(v::text, 'NULL') as row, logging_agg_strict(v::text) filter(where true) over wnd as inverse, logging_agg_strict(v::text) filter(where random() >= 0) over wnd as noinverse FROM (VALUES (1, 'a'), (2, 'b'), (3, 'c') ) AS t(i, v) WINDOW wnd AS (ORDER BY i ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) ORDER BY i; -- test that non-overlapping windows don't use inverse transitions SELECT logging_agg_strict(v::text) OVER wnd FROM (VALUES (1, 'a'), (2, 'b'), (3, 'c') ) AS t(i, v) WINDOW wnd AS (ORDER BY i ROWS BETWEEN CURRENT ROW AND CURRENT ROW) ORDER BY i; -- test that returning NULL from the inverse transition functions -- restarts the aggregation from scratch. The second aggregate is supposed -- to test cases where only some aggregates restart, the third one checks -- that one aggregate restarting doesn't cause others to restart. CREATE FUNCTION sum_int_randrestart_minvfunc(int4, int4) RETURNS int4 AS $$ SELECT CASE WHEN random() < 0.2 THEN NULL ELSE $1 - $2 END $$ LANGUAGE SQL STRICT; CREATE AGGREGATE sum_int_randomrestart (int4) ( stype = int4, sfunc = int4pl, mstype = int4, msfunc = int4pl, minvfunc = sum_int_randrestart_minvfunc ); WITH vs AS ( SELECT i, (random() * 100)::int4 AS v FROM generate_series(1, 100) AS i ), sum_following AS ( SELECT i, SUM(v) OVER (ORDER BY i DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS s FROM vs ) SELECT DISTINCT sum_following.s = sum_int_randomrestart(v) OVER fwd AS eq1, -sum_following.s = sum_int_randomrestart(-v) OVER fwd AS eq2, 100*3+(vs.i-1)*3 = length(logging_agg_nonstrict(''::text) OVER fwd) AS eq3 FROM vs JOIN sum_following ON sum_following.i = vs.i WINDOW fwd AS ( ORDER BY vs.i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ); -- -- Test various built-in aggregates that have moving-aggregate support -- -- test inverse transition functions handle NULLs properly SELECT i,AVG(v::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v); SELECT i,AVG(v::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v); SELECT i,AVG(v::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v); SELECT i,AVG(v::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1.5),(2,2.5),(3,NULL),(4,NULL)) t(i,v); SELECT i,AVG(v::interval) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,'1 sec'),(2,'2 sec'),(3,NULL),(4,NULL)) t(i,v); SELECT i,SUM(v::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v); SELECT i,SUM(v::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v); SELECT i,SUM(v::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v); SELECT i,SUM(v::money) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,'1.10'),(2,'2.20'),(3,NULL),(4,NULL)) t(i,v); SELECT i,SUM(v::interval) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,'1 sec'),(2,'2 sec'),(3,NULL),(4,NULL)) t(i,v); SELECT i,SUM(v::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1.1),(2,2.2),(3,NULL),(4,NULL)) t(i,v); SELECT SUM(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1.01),(2,2),(3,3)) v(i,n); SELECT i,COUNT(v) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v); SELECT i,COUNT(*) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v); SELECT VAR_POP(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VAR_POP(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VAR_POP(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VAR_POP(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VAR_SAMP(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VAR_SAMP(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VAR_SAMP(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VAR_SAMP(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VARIANCE(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VARIANCE(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VARIANCE(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT VARIANCE(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT STDDEV_POP(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n); SELECT STDDEV_POP(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n); SELECT STDDEV_POP(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n); SELECT STDDEV_POP(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n); SELECT STDDEV_SAMP(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n); SELECT STDDEV_SAMP(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n); SELECT STDDEV_SAMP(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n); SELECT STDDEV_SAMP(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n); SELECT STDDEV(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(0,NULL),(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT STDDEV(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(0,NULL),(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT STDDEV(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(0,NULL),(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); SELECT STDDEV(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) FROM (VALUES(0,NULL),(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n); -- test that inverse transition functions work with various frame options SELECT i,SUM(v::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND CURRENT ROW) FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v); SELECT i,SUM(v::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v); SELECT i,SUM(v::int) OVER (ORDER BY i ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) FROM (VALUES(1,1),(2,2),(3,3),(4,4)) t(i,v); -- ensure aggregate over numeric properly recovers from NaN values SELECT a, b, SUM(b) OVER(ORDER BY A ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) FROM (VALUES(1,1::numeric),(2,2),(3,'NaN'),(4,3),(5,4)) t(a,b); -- It might be tempting for someone to add an inverse trans function for -- float and double precision. This should not be done as it can give incorrect -- results. This test should fail if anyone ever does this without thinking too -- hard about it. SELECT to_char(SUM(n::float8) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING),'999999999999999999999D9') FROM (VALUES(1,1e20),(2,1)) n(i,n); SELECT i, b, bool_and(b) OVER w, bool_or(b) OVER w FROM (VALUES (1,true), (2,true), (3,false), (4,false), (5,true)) v(i,b) WINDOW w AS (ORDER BY i ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING); -- Tests for problems with failure to walk or mutate expressions -- within window frame clauses. -- test walker (fails with collation error if expressions are not walked) SELECT array_agg(i) OVER w FROM generate_series(1,5) i WINDOW w AS (ORDER BY i ROWS BETWEEN (('foo' < 'foobar')::integer) PRECEDING AND CURRENT ROW); -- test mutator (fails when inlined if expressions are not mutated) CREATE FUNCTION pg_temp.f(group_size BIGINT) RETURNS SETOF integer[] AS $$ SELECT array_agg(s) OVER w FROM generate_series(1,5) s WINDOW w AS (ORDER BY s ROWS BETWEEN CURRENT ROW AND GROUP_SIZE FOLLOWING) $$ LANGUAGE SQL STABLE; EXPLAIN (costs off) SELECT * FROM pg_temp.f(2); SELECT * FROM pg_temp.f(2); libpg_query-13-2.1.0/test/sql/postgres_regress/with.sql000066400000000000000000000643111413137616400231420ustar00rootroot00000000000000-- -- Tests for common table expressions (WITH query, ... SELECT ...) -- -- Basic WITH WITH q1(x,y) AS (SELECT 1,2) SELECT * FROM q1, q1 AS q2; -- Multiple uses are evaluated only once SELECT count(*) FROM ( WITH q1(x) AS (SELECT random() FROM generate_series(1, 5)) SELECT * FROM q1 UNION SELECT * FROM q1 ) ss; -- WITH RECURSIVE -- sum of 1..100 WITH RECURSIVE t(n) AS ( VALUES (1) UNION ALL SELECT n+1 FROM t WHERE n < 100 ) SELECT sum(n) FROM t; WITH RECURSIVE t(n) AS ( SELECT (VALUES(1)) UNION ALL SELECT n+1 FROM t WHERE n < 5 ) SELECT * FROM t; -- recursive view CREATE RECURSIVE VIEW nums (n) AS VALUES (1) UNION ALL SELECT n+1 FROM nums WHERE n < 5; SELECT * FROM nums; CREATE OR REPLACE RECURSIVE VIEW nums (n) AS VALUES (1) UNION ALL SELECT n+1 FROM nums WHERE n < 6; SELECT * FROM nums; -- This is an infinite loop with UNION ALL, but not with UNION WITH RECURSIVE t(n) AS ( SELECT 1 UNION SELECT 10-n FROM t) SELECT * FROM t; -- This'd be an infinite loop, but outside query reads only as much as needed WITH RECURSIVE t(n) AS ( VALUES (1) UNION ALL SELECT n+1 FROM t) SELECT * FROM t LIMIT 10; -- UNION case should have same property WITH RECURSIVE t(n) AS ( SELECT 1 UNION SELECT n+1 FROM t) SELECT * FROM t LIMIT 10; -- Test behavior with an unknown-type literal in the WITH WITH q AS (SELECT 'foo' AS x) SELECT x, x IS OF (text) AS is_text FROM q; WITH RECURSIVE t(n) AS ( SELECT 'foo' UNION ALL SELECT n || ' bar' FROM t WHERE length(n) < 20 ) SELECT n, n IS OF (text) AS is_text FROM t; -- In a perfect world, this would work and resolve the literal as int ... -- but for now, we have to be content with resolving to text too soon. WITH RECURSIVE t(n) AS ( SELECT '7' UNION ALL SELECT n+1 FROM t WHERE n < 10 ) SELECT n, n IS OF (int) AS is_int FROM t; -- Deeply nested WITH caused a list-munging problem in v13 -- Detection of cross-references and self-references WITH RECURSIVE w1(c1) AS (WITH w2(c2) AS (WITH w3(c3) AS (WITH w4(c4) AS (WITH w5(c5) AS (WITH RECURSIVE w6(c6) AS (WITH w6(c6) AS (WITH w8(c8) AS (SELECT 1) SELECT * FROM w8) SELECT * FROM w6) SELECT * FROM w6) SELECT * FROM w5) SELECT * FROM w4) SELECT * FROM w3) SELECT * FROM w2) SELECT * FROM w1; -- Detection of invalid self-references WITH RECURSIVE outermost(x) AS ( SELECT 1 UNION (WITH innermost1 AS ( SELECT 2 UNION (WITH innermost2 AS ( SELECT 3 UNION (WITH innermost3 AS ( SELECT 4 UNION (WITH innermost4 AS ( SELECT 5 UNION (WITH innermost5 AS ( SELECT 6 UNION (WITH innermost6 AS (SELECT 7) SELECT * FROM innermost6)) SELECT * FROM innermost5)) SELECT * FROM innermost4)) SELECT * FROM innermost3)) SELECT * FROM innermost2)) SELECT * FROM outermost UNION SELECT * FROM innermost1) ) SELECT * FROM outermost ORDER BY 1; -- -- Some examples with a tree -- -- department structure represented here is as follows: -- -- ROOT-+->A-+->B-+->C -- | | -- | +->D-+->F -- +->E-+->G CREATE TEMP TABLE department ( id INTEGER PRIMARY KEY, -- department ID parent_department INTEGER REFERENCES department, -- upper department ID name TEXT -- department name ); INSERT INTO department VALUES (0, NULL, 'ROOT'); INSERT INTO department VALUES (1, 0, 'A'); INSERT INTO department VALUES (2, 1, 'B'); INSERT INTO department VALUES (3, 2, 'C'); INSERT INTO department VALUES (4, 2, 'D'); INSERT INTO department VALUES (5, 0, 'E'); INSERT INTO department VALUES (6, 4, 'F'); INSERT INTO department VALUES (7, 5, 'G'); -- extract all departments under 'A'. Result should be A, B, C, D and F WITH RECURSIVE subdepartment AS ( -- non recursive term SELECT name as root_name, * FROM department WHERE name = 'A' UNION ALL -- recursive term SELECT sd.root_name, d.* FROM department AS d, subdepartment AS sd WHERE d.parent_department = sd.id ) SELECT * FROM subdepartment ORDER BY name; -- extract all departments under 'A' with "level" number WITH RECURSIVE subdepartment(level, id, parent_department, name) AS ( -- non recursive term SELECT 1, * FROM department WHERE name = 'A' UNION ALL -- recursive term SELECT sd.level + 1, d.* FROM department AS d, subdepartment AS sd WHERE d.parent_department = sd.id ) SELECT * FROM subdepartment ORDER BY name; -- extract all departments under 'A' with "level" number. -- Only shows level 2 or more WITH RECURSIVE subdepartment(level, id, parent_department, name) AS ( -- non recursive term SELECT 1, * FROM department WHERE name = 'A' UNION ALL -- recursive term SELECT sd.level + 1, d.* FROM department AS d, subdepartment AS sd WHERE d.parent_department = sd.id ) SELECT * FROM subdepartment WHERE level >= 2 ORDER BY name; -- "RECURSIVE" is ignored if the query has no self-reference WITH RECURSIVE subdepartment AS ( -- note lack of recursive UNION structure SELECT * FROM department WHERE name = 'A' ) SELECT * FROM subdepartment ORDER BY name; -- inside subqueries SELECT count(*) FROM ( WITH RECURSIVE t(n) AS ( SELECT 1 UNION ALL SELECT n + 1 FROM t WHERE n < 500 ) SELECT * FROM t) AS t WHERE n < ( SELECT count(*) FROM ( WITH RECURSIVE t(n) AS ( SELECT 1 UNION ALL SELECT n + 1 FROM t WHERE n < 100 ) SELECT * FROM t WHERE n < 50000 ) AS t WHERE n < 100); -- use same CTE twice at different subquery levels WITH q1(x,y) AS ( SELECT hundred, sum(ten) FROM tenk1 GROUP BY hundred ) SELECT count(*) FROM q1 WHERE y > (SELECT sum(y)/100 FROM q1 qsub); -- via a VIEW CREATE TEMPORARY VIEW vsubdepartment AS WITH RECURSIVE subdepartment AS ( -- non recursive term SELECT * FROM department WHERE name = 'A' UNION ALL -- recursive term SELECT d.* FROM department AS d, subdepartment AS sd WHERE d.parent_department = sd.id ) SELECT * FROM subdepartment; SELECT * FROM vsubdepartment ORDER BY name; -- Check reverse listing SELECT pg_get_viewdef('vsubdepartment'::regclass); SELECT pg_get_viewdef('vsubdepartment'::regclass, true); -- Another reverse-listing example CREATE VIEW sums_1_100 AS WITH RECURSIVE t(n) AS ( VALUES (1) UNION ALL SELECT n+1 FROM t WHERE n < 100 ) SELECT sum(n) FROM t; \d+ sums_1_100 -- corner case in which sub-WITH gets initialized first with recursive q as ( select * from department union all (with x as (select * from q) select * from x) ) select * from q limit 24; with recursive q as ( select * from department union all (with recursive x as ( select * from department union all (select * from q union all select * from x) ) select * from x) ) select * from q limit 32; -- recursive term has sub-UNION WITH RECURSIVE t(i,j) AS ( VALUES (1,2) UNION ALL SELECT t2.i, t.j+1 FROM (SELECT 2 AS i UNION ALL SELECT 3 AS i) AS t2 JOIN t ON (t2.i = t.i+1)) SELECT * FROM t; -- -- different tree example -- CREATE TEMPORARY TABLE tree( id INTEGER PRIMARY KEY, parent_id INTEGER REFERENCES tree(id) ); INSERT INTO tree VALUES (1, NULL), (2, 1), (3,1), (4,2), (5,2), (6,2), (7,3), (8,3), (9,4), (10,4), (11,7), (12,7), (13,7), (14, 9), (15,11), (16,11); -- -- get all paths from "second level" nodes to leaf nodes -- WITH RECURSIVE t(id, path) AS ( VALUES(1,ARRAY[]::integer[]) UNION ALL SELECT tree.id, t.path || tree.id FROM tree JOIN t ON (tree.parent_id = t.id) ) SELECT t1.*, t2.* FROM t AS t1 JOIN t AS t2 ON (t1.path[1] = t2.path[1] AND array_upper(t1.path,1) = 1 AND array_upper(t2.path,1) > 1) ORDER BY t1.id, t2.id; -- just count 'em WITH RECURSIVE t(id, path) AS ( VALUES(1,ARRAY[]::integer[]) UNION ALL SELECT tree.id, t.path || tree.id FROM tree JOIN t ON (tree.parent_id = t.id) ) SELECT t1.id, count(t2.*) FROM t AS t1 JOIN t AS t2 ON (t1.path[1] = t2.path[1] AND array_upper(t1.path,1) = 1 AND array_upper(t2.path,1) > 1) GROUP BY t1.id ORDER BY t1.id; -- this variant tickled a whole-row-variable bug in 8.4devel WITH RECURSIVE t(id, path) AS ( VALUES(1,ARRAY[]::integer[]) UNION ALL SELECT tree.id, t.path || tree.id FROM tree JOIN t ON (tree.parent_id = t.id) ) SELECT t1.id, t2.path, t2 FROM t AS t1 JOIN t AS t2 ON (t1.id=t2.id); -- -- test cycle detection -- create temp table graph( f int, t int, label text ); insert into graph values (1, 2, 'arc 1 -> 2'), (1, 3, 'arc 1 -> 3'), (2, 3, 'arc 2 -> 3'), (1, 4, 'arc 1 -> 4'), (4, 5, 'arc 4 -> 5'), (5, 1, 'arc 5 -> 1'); with recursive search_graph(f, t, label, path, cycle) as ( select *, array[row(g.f, g.t)], false from graph g union all select g.*, path || row(g.f, g.t), row(g.f, g.t) = any(path) from graph g, search_graph sg where g.f = sg.t and not cycle ) select * from search_graph; -- ordering by the path column has same effect as SEARCH DEPTH FIRST with recursive search_graph(f, t, label, path, cycle) as ( select *, array[row(g.f, g.t)], false from graph g union all select g.*, path || row(g.f, g.t), row(g.f, g.t) = any(path) from graph g, search_graph sg where g.f = sg.t and not cycle ) select * from search_graph order by path; -- -- test multiple WITH queries -- WITH RECURSIVE y (id) AS (VALUES (1)), x (id) AS (SELECT * FROM y UNION ALL SELECT id+1 FROM x WHERE id < 5) SELECT * FROM x; -- forward reference OK WITH RECURSIVE x(id) AS (SELECT * FROM y UNION ALL SELECT id+1 FROM x WHERE id < 5), y(id) AS (values (1)) SELECT * FROM x; WITH RECURSIVE x(id) AS (VALUES (1) UNION ALL SELECT id+1 FROM x WHERE id < 5), y(id) AS (VALUES (1) UNION ALL SELECT id+1 FROM y WHERE id < 10) SELECT y.*, x.* FROM y LEFT JOIN x USING (id); WITH RECURSIVE x(id) AS (VALUES (1) UNION ALL SELECT id+1 FROM x WHERE id < 5), y(id) AS (VALUES (1) UNION ALL SELECT id+1 FROM x WHERE id < 10) SELECT y.*, x.* FROM y LEFT JOIN x USING (id); WITH RECURSIVE x(id) AS (SELECT 1 UNION ALL SELECT id+1 FROM x WHERE id < 3 ), y(id) AS (SELECT * FROM x UNION ALL SELECT * FROM x), z(id) AS (SELECT * FROM x UNION ALL SELECT id+1 FROM z WHERE id < 10) SELECT * FROM z; WITH RECURSIVE x(id) AS (SELECT 1 UNION ALL SELECT id+1 FROM x WHERE id < 3 ), y(id) AS (SELECT * FROM x UNION ALL SELECT * FROM x), z(id) AS (SELECT * FROM y UNION ALL SELECT id+1 FROM z WHERE id < 10) SELECT * FROM z; -- -- Test WITH attached to a data-modifying statement -- CREATE TEMPORARY TABLE y (a INTEGER); INSERT INTO y SELECT generate_series(1, 10); WITH t AS ( SELECT a FROM y ) INSERT INTO y SELECT a+20 FROM t RETURNING *; SELECT * FROM y; WITH t AS ( SELECT a FROM y ) UPDATE y SET a = y.a-10 FROM t WHERE y.a > 20 AND t.a = y.a RETURNING y.a; SELECT * FROM y; WITH RECURSIVE t(a) AS ( SELECT 11 UNION ALL SELECT a+1 FROM t WHERE a < 50 ) DELETE FROM y USING t WHERE t.a = y.a RETURNING y.a; SELECT * FROM y; DROP TABLE y; -- -- error cases -- -- INTERSECT WITH RECURSIVE x(n) AS (SELECT 1 INTERSECT SELECT n+1 FROM x) SELECT * FROM x; WITH RECURSIVE x(n) AS (SELECT 1 INTERSECT ALL SELECT n+1 FROM x) SELECT * FROM x; -- EXCEPT WITH RECURSIVE x(n) AS (SELECT 1 EXCEPT SELECT n+1 FROM x) SELECT * FROM x; WITH RECURSIVE x(n) AS (SELECT 1 EXCEPT ALL SELECT n+1 FROM x) SELECT * FROM x; -- no non-recursive term WITH RECURSIVE x(n) AS (SELECT n FROM x) SELECT * FROM x; -- recursive term in the left hand side (strictly speaking, should allow this) WITH RECURSIVE x(n) AS (SELECT n FROM x UNION ALL SELECT 1) SELECT * FROM x; CREATE TEMPORARY TABLE y (a INTEGER); INSERT INTO y SELECT generate_series(1, 10); -- LEFT JOIN WITH RECURSIVE x(n) AS (SELECT a FROM y WHERE a = 1 UNION ALL SELECT x.n+1 FROM y LEFT JOIN x ON x.n = y.a WHERE n < 10) SELECT * FROM x; -- RIGHT JOIN WITH RECURSIVE x(n) AS (SELECT a FROM y WHERE a = 1 UNION ALL SELECT x.n+1 FROM x RIGHT JOIN y ON x.n = y.a WHERE n < 10) SELECT * FROM x; -- FULL JOIN WITH RECURSIVE x(n) AS (SELECT a FROM y WHERE a = 1 UNION ALL SELECT x.n+1 FROM x FULL JOIN y ON x.n = y.a WHERE n < 10) SELECT * FROM x; -- subquery WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM x WHERE n IN (SELECT * FROM x)) SELECT * FROM x; -- aggregate functions WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT count(*) FROM x) SELECT * FROM x; WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT sum(n) FROM x) SELECT * FROM x; -- ORDER BY WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM x ORDER BY 1) SELECT * FROM x; -- LIMIT/OFFSET WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM x LIMIT 10 OFFSET 1) SELECT * FROM x; -- FOR UPDATE WITH RECURSIVE x(n) AS (SELECT 1 UNION ALL SELECT n+1 FROM x FOR UPDATE) SELECT * FROM x; -- target list has a recursive query name WITH RECURSIVE x(id) AS (values (1) UNION ALL SELECT (SELECT * FROM x) FROM x WHERE id < 5 ) SELECT * FROM x; -- mutual recursive query (not implemented) WITH RECURSIVE x (id) AS (SELECT 1 UNION ALL SELECT id+1 FROM y WHERE id < 5), y (id) AS (SELECT 1 UNION ALL SELECT id+1 FROM x WHERE id < 5) SELECT * FROM x; -- non-linear recursion is not allowed WITH RECURSIVE foo(i) AS (values (1) UNION ALL (SELECT i+1 FROM foo WHERE i < 10 UNION ALL SELECT i+1 FROM foo WHERE i < 5) ) SELECT * FROM foo; WITH RECURSIVE foo(i) AS (values (1) UNION ALL SELECT * FROM (SELECT i+1 FROM foo WHERE i < 10 UNION ALL SELECT i+1 FROM foo WHERE i < 5) AS t ) SELECT * FROM foo; WITH RECURSIVE foo(i) AS (values (1) UNION ALL (SELECT i+1 FROM foo WHERE i < 10 EXCEPT SELECT i+1 FROM foo WHERE i < 5) ) SELECT * FROM foo; WITH RECURSIVE foo(i) AS (values (1) UNION ALL (SELECT i+1 FROM foo WHERE i < 10 INTERSECT SELECT i+1 FROM foo WHERE i < 5) ) SELECT * FROM foo; -- Wrong type induced from non-recursive term WITH RECURSIVE foo(i) AS (SELECT i FROM (VALUES(1),(2)) t(i) UNION ALL SELECT (i+1)::numeric(10,0) FROM foo WHERE i < 10) SELECT * FROM foo; -- rejects different typmod, too (should we allow this?) WITH RECURSIVE foo(i) AS (SELECT i::numeric(3,0) FROM (VALUES(1),(2)) t(i) UNION ALL SELECT (i+1)::numeric(10,0) FROM foo WHERE i < 10) SELECT * FROM foo; -- disallow OLD/NEW reference in CTE CREATE TEMPORARY TABLE x (n integer); CREATE RULE r2 AS ON UPDATE TO x DO INSTEAD WITH t AS (SELECT OLD.*) UPDATE y SET a = t.n FROM t; -- -- test for bug #4902 -- with cte(foo) as ( values(42) ) values((select foo from cte)); with cte(foo) as ( select 42 ) select * from ((select foo from cte)) q; -- test CTE referencing an outer-level variable (to see that changed-parameter -- signaling still works properly after fixing this bug) select ( with cte(foo) as ( values(f1) ) select (select foo from cte) ) from int4_tbl; select ( with cte(foo) as ( values(f1) ) values((select foo from cte)) ) from int4_tbl; -- -- test for nested-recursive-WITH bug -- WITH RECURSIVE t(j) AS ( WITH RECURSIVE s(i) AS ( VALUES (1) UNION ALL SELECT i+1 FROM s WHERE i < 10 ) SELECT i FROM s UNION ALL SELECT j+1 FROM t WHERE j < 10 ) SELECT * FROM t; -- -- test WITH attached to intermediate-level set operation -- WITH outermost(x) AS ( SELECT 1 UNION (WITH innermost as (SELECT 2) SELECT * FROM innermost UNION SELECT 3) ) SELECT * FROM outermost ORDER BY 1; WITH outermost(x) AS ( SELECT 1 UNION (WITH innermost as (SELECT 2) SELECT * FROM outermost -- fail UNION SELECT * FROM innermost) ) SELECT * FROM outermost ORDER BY 1; WITH RECURSIVE outermost(x) AS ( SELECT 1 UNION (WITH innermost as (SELECT 2) SELECT * FROM outermost UNION SELECT * FROM innermost) ) SELECT * FROM outermost ORDER BY 1; WITH RECURSIVE outermost(x) AS ( WITH innermost as (SELECT 2 FROM outermost) -- fail SELECT * FROM innermost UNION SELECT * from outermost ) SELECT * FROM outermost ORDER BY 1; -- -- This test will fail with the old implementation of PARAM_EXEC parameter -- assignment, because the "q1" Var passed down to A's targetlist subselect -- looks exactly like the "A.id" Var passed down to C's subselect, causing -- the old code to give them the same runtime PARAM_EXEC slot. But the -- lifespans of the two parameters overlap, thanks to B also reading A. -- with A as ( select q2 as id, (select q1) as x from int8_tbl ), B as ( select id, row_number() over (partition by id) as r from A ), C as ( select A.id, array(select B.id from B where B.id = A.id) from A ) select * from C; -- -- Test CTEs read in non-initialization orders -- WITH RECURSIVE tab(id_key,link) AS (VALUES (1,17), (2,17), (3,17), (4,17), (6,17), (5,17)), iter (id_key, row_type, link) AS ( SELECT 0, 'base', 17 UNION ALL ( WITH remaining(id_key, row_type, link, min) AS ( SELECT tab.id_key, 'true'::text, iter.link, MIN(tab.id_key) OVER () FROM tab INNER JOIN iter USING (link) WHERE tab.id_key > iter.id_key ), first_remaining AS ( SELECT id_key, row_type, link FROM remaining WHERE id_key=min ), effect AS ( SELECT tab.id_key, 'new'::text, tab.link FROM first_remaining e INNER JOIN tab ON e.id_key=tab.id_key WHERE e.row_type = 'false' ) SELECT * FROM first_remaining UNION ALL SELECT * FROM effect ) ) SELECT * FROM iter; WITH RECURSIVE tab(id_key,link) AS (VALUES (1,17), (2,17), (3,17), (4,17), (6,17), (5,17)), iter (id_key, row_type, link) AS ( SELECT 0, 'base', 17 UNION ( WITH remaining(id_key, row_type, link, min) AS ( SELECT tab.id_key, 'true'::text, iter.link, MIN(tab.id_key) OVER () FROM tab INNER JOIN iter USING (link) WHERE tab.id_key > iter.id_key ), first_remaining AS ( SELECT id_key, row_type, link FROM remaining WHERE id_key=min ), effect AS ( SELECT tab.id_key, 'new'::text, tab.link FROM first_remaining e INNER JOIN tab ON e.id_key=tab.id_key WHERE e.row_type = 'false' ) SELECT * FROM first_remaining UNION ALL SELECT * FROM effect ) ) SELECT * FROM iter; -- -- Data-modifying statements in WITH -- -- INSERT ... RETURNING WITH t AS ( INSERT INTO y VALUES (11), (12), (13), (14), (15), (16), (17), (18), (19), (20) RETURNING * ) SELECT * FROM t; SELECT * FROM y; -- UPDATE ... RETURNING WITH t AS ( UPDATE y SET a=a+1 RETURNING * ) SELECT * FROM t; SELECT * FROM y; -- DELETE ... RETURNING WITH t AS ( DELETE FROM y WHERE a <= 10 RETURNING * ) SELECT * FROM t; SELECT * FROM y; -- forward reference WITH RECURSIVE t AS ( INSERT INTO y SELECT a+5 FROM t2 WHERE a > 5 RETURNING * ), t2 AS ( UPDATE y SET a=a-11 RETURNING * ) SELECT * FROM t UNION ALL SELECT * FROM t2; SELECT * FROM y; -- unconditional DO INSTEAD rule CREATE RULE y_rule AS ON DELETE TO y DO INSTEAD INSERT INTO y VALUES(42) RETURNING *; WITH t AS ( DELETE FROM y RETURNING * ) SELECT * FROM t; SELECT * FROM y; DROP RULE y_rule ON y; -- check merging of outer CTE with CTE in a rule action CREATE TEMP TABLE bug6051 AS select i from generate_series(1,3) as t(i); SELECT * FROM bug6051; WITH t1 AS ( DELETE FROM bug6051 RETURNING * ) INSERT INTO bug6051 SELECT * FROM t1; SELECT * FROM bug6051; CREATE TEMP TABLE bug6051_2 (i int); CREATE RULE bug6051_ins AS ON INSERT TO bug6051 DO INSTEAD INSERT INTO bug6051_2 SELECT NEW.i; WITH t1 AS ( DELETE FROM bug6051 RETURNING * ) INSERT INTO bug6051 SELECT * FROM t1; SELECT * FROM bug6051; SELECT * FROM bug6051_2; -- a truly recursive CTE in the same list WITH RECURSIVE t(a) AS ( SELECT 0 UNION ALL SELECT a+1 FROM t WHERE a+1 < 5 ), t2 as ( INSERT INTO y SELECT * FROM t RETURNING * ) SELECT * FROM t2 JOIN y USING (a) ORDER BY a; SELECT * FROM y; -- data-modifying WITH in a modifying statement WITH t AS ( DELETE FROM y WHERE a <= 10 RETURNING * ) INSERT INTO y SELECT -a FROM t RETURNING *; SELECT * FROM y; -- check that WITH query is run to completion even if outer query isn't WITH t AS ( UPDATE y SET a = a * 100 RETURNING * ) SELECT * FROM t LIMIT 10; SELECT * FROM y; -- data-modifying WITH containing INSERT...ON CONFLICT DO UPDATE CREATE TABLE withz AS SELECT i AS k, (i || ' v')::text v FROM generate_series(1, 16, 3) i; ALTER TABLE withz ADD UNIQUE (k); WITH t AS ( INSERT INTO withz SELECT i, 'insert' FROM generate_series(0, 16) i ON CONFLICT (k) DO UPDATE SET v = withz.v || ', now update' RETURNING * ) SELECT * FROM t JOIN y ON t.k = y.a ORDER BY a, k; -- Test EXCLUDED.* reference within CTE WITH aa AS ( INSERT INTO withz VALUES(1, 5) ON CONFLICT (k) DO UPDATE SET v = EXCLUDED.v WHERE withz.k != EXCLUDED.k RETURNING * ) SELECT * FROM aa; -- New query/snapshot demonstrates side-effects of previous query. SELECT * FROM withz ORDER BY k; -- -- Ensure subqueries within the update clause work, even if they -- reference outside values -- WITH aa AS (SELECT 1 a, 2 b) INSERT INTO withz VALUES(1, 'insert') ON CONFLICT (k) DO UPDATE SET v = (SELECT b || ' update' FROM aa WHERE a = 1 LIMIT 1); WITH aa AS (SELECT 1 a, 2 b) INSERT INTO withz VALUES(1, 'insert') ON CONFLICT (k) DO UPDATE SET v = ' update' WHERE withz.k = (SELECT a FROM aa); WITH aa AS (SELECT 1 a, 2 b) INSERT INTO withz VALUES(1, 'insert') ON CONFLICT (k) DO UPDATE SET v = (SELECT b || ' update' FROM aa WHERE a = 1 LIMIT 1); WITH aa AS (SELECT 'a' a, 'b' b UNION ALL SELECT 'a' a, 'b' b) INSERT INTO withz VALUES(1, 'insert') ON CONFLICT (k) DO UPDATE SET v = (SELECT b || ' update' FROM aa WHERE a = 'a' LIMIT 1); WITH aa AS (SELECT 1 a, 2 b) INSERT INTO withz VALUES(1, (SELECT b || ' insert' FROM aa WHERE a = 1 )) ON CONFLICT (k) DO UPDATE SET v = (SELECT b || ' update' FROM aa WHERE a = 1 LIMIT 1); -- Update a row more than once, in different parts of a wCTE. That is -- an allowed, presumably very rare, edge case, but since it was -- broken in the past, having a test seems worthwhile. WITH simpletup AS ( SELECT 2 k, 'Green' v), upsert_cte AS ( INSERT INTO withz VALUES(2, 'Blue') ON CONFLICT (k) DO UPDATE SET (k, v) = (SELECT k, v FROM simpletup WHERE simpletup.k = withz.k) RETURNING k, v) INSERT INTO withz VALUES(2, 'Red') ON CONFLICT (k) DO UPDATE SET (k, v) = (SELECT k, v FROM upsert_cte WHERE upsert_cte.k = withz.k) RETURNING k, v; DROP TABLE withz; -- check that run to completion happens in proper ordering TRUNCATE TABLE y; INSERT INTO y SELECT generate_series(1, 3); CREATE TEMPORARY TABLE yy (a INTEGER); WITH RECURSIVE t1 AS ( INSERT INTO y SELECT * FROM y RETURNING * ), t2 AS ( INSERT INTO yy SELECT * FROM t1 RETURNING * ) SELECT 1; SELECT * FROM y; SELECT * FROM yy; WITH RECURSIVE t1 AS ( INSERT INTO yy SELECT * FROM t2 RETURNING * ), t2 AS ( INSERT INTO y SELECT * FROM y RETURNING * ) SELECT 1; SELECT * FROM y; SELECT * FROM yy; -- triggers TRUNCATE TABLE y; INSERT INTO y SELECT generate_series(1, 10); CREATE FUNCTION y_trigger() RETURNS trigger AS $$ begin raise notice 'y_trigger: a = %', new.a; return new; end; $$ LANGUAGE plpgsql; CREATE TRIGGER y_trig BEFORE INSERT ON y FOR EACH ROW EXECUTE PROCEDURE y_trigger(); WITH t AS ( INSERT INTO y VALUES (21), (22), (23) RETURNING * ) SELECT * FROM t; SELECT * FROM y; DROP TRIGGER y_trig ON y; CREATE TRIGGER y_trig AFTER INSERT ON y FOR EACH ROW EXECUTE PROCEDURE y_trigger(); WITH t AS ( INSERT INTO y VALUES (31), (32), (33) RETURNING * ) SELECT * FROM t LIMIT 1; SELECT * FROM y; DROP TRIGGER y_trig ON y; CREATE OR REPLACE FUNCTION y_trigger() RETURNS trigger AS $$ begin raise notice 'y_trigger'; return null; end; $$ LANGUAGE plpgsql; CREATE TRIGGER y_trig AFTER INSERT ON y FOR EACH STATEMENT EXECUTE PROCEDURE y_trigger(); WITH t AS ( INSERT INTO y VALUES (41), (42), (43) RETURNING * ) SELECT * FROM t; SELECT * FROM y; DROP TRIGGER y_trig ON y; DROP FUNCTION y_trigger(); -- WITH attached to inherited UPDATE or DELETE CREATE TEMP TABLE parent ( id int, val text ); CREATE TEMP TABLE child1 ( ) INHERITS ( parent ); CREATE TEMP TABLE child2 ( ) INHERITS ( parent ); INSERT INTO parent VALUES ( 1, 'p1' ); INSERT INTO child1 VALUES ( 11, 'c11' ),( 12, 'c12' ); INSERT INTO child2 VALUES ( 23, 'c21' ),( 24, 'c22' ); WITH rcte AS ( SELECT sum(id) AS totalid FROM parent ) UPDATE parent SET id = id + totalid FROM rcte; SELECT * FROM parent; WITH wcte AS ( INSERT INTO child1 VALUES ( 42, 'new' ) RETURNING id AS newid ) UPDATE parent SET id = id + newid FROM wcte; SELECT * FROM parent; WITH rcte AS ( SELECT max(id) AS maxid FROM parent ) DELETE FROM parent USING rcte WHERE id = maxid; SELECT * FROM parent; WITH wcte AS ( INSERT INTO child2 VALUES ( 42, 'new2' ) RETURNING id AS newid ) DELETE FROM parent USING wcte WHERE id = newid; SELECT * FROM parent; -- check EXPLAIN VERBOSE for a wCTE with RETURNING EXPLAIN (VERBOSE, COSTS OFF) WITH wcte AS ( INSERT INTO int8_tbl VALUES ( 42, 47 ) RETURNING q2 ) DELETE FROM a USING wcte WHERE aa = q2; -- error cases -- data-modifying WITH tries to use its own output WITH RECURSIVE t AS ( INSERT INTO y SELECT * FROM t ) VALUES(FALSE); -- no RETURNING in a referenced data-modifying WITH WITH t AS ( INSERT INTO y VALUES(0) ) SELECT * FROM t; -- data-modifying WITH allowed only at the top level SELECT * FROM ( WITH t AS (UPDATE y SET a=a+1 RETURNING *) SELECT * FROM t ) ss; -- most variants of rules aren't allowed CREATE RULE y_rule AS ON INSERT TO y WHERE a=0 DO INSTEAD DELETE FROM y; WITH t AS ( INSERT INTO y VALUES(0) ) VALUES(FALSE); DROP RULE y_rule ON y; -- check that parser lookahead for WITH doesn't cause any odd behavior create table foo (with baz); -- fail, WITH is a reserved word create table foo (with ordinality); -- fail, WITH is a reserved word with ordinality as (select 1 as x) select * from ordinality; -- check sane response to attempt to modify CTE relation WITH test AS (SELECT 42) INSERT INTO test VALUES (1); -- check response to attempt to modify table with same name as a CTE (perhaps -- surprisingly it works, because CTEs don't hide tables from data-modifying -- statements) create temp table test (i int); with test as (select 42) insert into test select * from test; select * from test; drop table test; libpg_query-13-2.1.0/test/sql/postgres_regress/write_parallel.sql000066400000000000000000000026071413137616400251750ustar00rootroot00000000000000-- -- PARALLEL -- -- Serializable isolation would disable parallel query, so explicitly use an -- arbitrary other level. begin isolation level repeatable read; -- encourage use of parallel plans set parallel_setup_cost=0; set parallel_tuple_cost=0; set min_parallel_table_scan_size=0; set max_parallel_workers_per_gather=4; -- -- Test write operations that has an underlying query that is eligble -- for parallel plans -- explain (costs off) create table parallel_write as select length(stringu1) from tenk1 group by length(stringu1); create table parallel_write as select length(stringu1) from tenk1 group by length(stringu1); drop table parallel_write; explain (costs off) select length(stringu1) into parallel_write from tenk1 group by length(stringu1); select length(stringu1) into parallel_write from tenk1 group by length(stringu1); drop table parallel_write; explain (costs off) create materialized view parallel_mat_view as select length(stringu1) from tenk1 group by length(stringu1); create materialized view parallel_mat_view as select length(stringu1) from tenk1 group by length(stringu1); drop materialized view parallel_mat_view; prepare prep_stmt as select length(stringu1) from tenk1 group by length(stringu1); explain (costs off) create table parallel_write as execute prep_stmt; create table parallel_write as execute prep_stmt; drop table parallel_write; rollback; libpg_query-13-2.1.0/test/sql/postgres_regress/xid.sql000066400000000000000000000110421413137616400227440ustar00rootroot00000000000000-- xid and xid8 -- values in range, in octal, decimal, hex select '010'::xid, '42'::xid, '0xffffffff'::xid, '-1'::xid, '010'::xid8, '42'::xid8, '0xffffffffffffffff'::xid8, '-1'::xid8; -- garbage values are not yet rejected (perhaps they should be) select ''::xid; select 'asdf'::xid; select ''::xid8; select 'asdf'::xid8; -- equality select '1'::xid = '1'::xid; select '1'::xid != '1'::xid; select '1'::xid8 = '1'::xid8; select '1'::xid8 != '1'::xid8; -- conversion select '1'::xid = '1'::xid8::xid; select '1'::xid != '1'::xid8::xid; -- we don't want relational operators for xid, due to use of modular arithmetic select '1'::xid < '2'::xid; select '1'::xid <= '2'::xid; select '1'::xid > '2'::xid; select '1'::xid >= '2'::xid; -- we want them for xid8 though select '1'::xid8 < '2'::xid8, '2'::xid8 < '2'::xid8, '2'::xid8 < '1'::xid8; select '1'::xid8 <= '2'::xid8, '2'::xid8 <= '2'::xid8, '2'::xid8 <= '1'::xid8; select '1'::xid8 > '2'::xid8, '2'::xid8 > '2'::xid8, '2'::xid8 > '1'::xid8; select '1'::xid8 >= '2'::xid8, '2'::xid8 >= '2'::xid8, '2'::xid8 >= '1'::xid8; -- we also have a 3way compare for btrees select xid8cmp('1', '2'), xid8cmp('2', '2'), xid8cmp('2', '1'); -- xid8 has btree and hash opclasses create table xid8_t1 (x xid8); create index on xid8_t1 using btree(x); create index on xid8_t1 using hash(x); drop table xid8_t1; -- pg_snapshot data type and related functions -- Note: another set of tests similar to this exists in txid.sql, for a limited -- time (the relevant functions share C code) -- i/o select '12:13:'::pg_snapshot; select '12:18:14,16'::pg_snapshot; select '12:16:14,14'::pg_snapshot; -- errors select '31:12:'::pg_snapshot; select '0:1:'::pg_snapshot; select '12:13:0'::pg_snapshot; select '12:16:14,13'::pg_snapshot; create temp table snapshot_test ( nr integer, snap pg_snapshot ); insert into snapshot_test values (1, '12:13:'); insert into snapshot_test values (2, '12:20:13,15,18'); insert into snapshot_test values (3, '100001:100009:100005,100007,100008'); insert into snapshot_test values (4, '100:150:101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131'); select snap from snapshot_test order by nr; select pg_snapshot_xmin(snap), pg_snapshot_xmax(snap), pg_snapshot_xip(snap) from snapshot_test order by nr; select id, pg_visible_in_snapshot(id::text::xid8, snap) from snapshot_test, generate_series(11, 21) id where nr = 2; -- test bsearch select id, pg_visible_in_snapshot(id::text::xid8, snap) from snapshot_test, generate_series(90, 160) id where nr = 4; -- test current values also select pg_current_xact_id() >= pg_snapshot_xmin(pg_current_snapshot()); -- we can't assume current is always less than xmax, however select pg_visible_in_snapshot(pg_current_xact_id(), pg_current_snapshot()); -- test 64bitness select pg_snapshot '1000100010001000:1000100010001100:1000100010001012,1000100010001013'; select pg_visible_in_snapshot('1000100010001012', '1000100010001000:1000100010001100:1000100010001012,1000100010001013'); select pg_visible_in_snapshot('1000100010001015', '1000100010001000:1000100010001100:1000100010001012,1000100010001013'); -- test 64bit overflow SELECT pg_snapshot '1:9223372036854775807:3'; SELECT pg_snapshot '1:9223372036854775808:3'; -- test pg_current_xact_id_if_assigned BEGIN; SELECT pg_current_xact_id_if_assigned() IS NULL; SELECT pg_current_xact_id() \gset SELECT pg_current_xact_id_if_assigned() IS NOT DISTINCT FROM xid8 :'pg_current_xact_id'; COMMIT; -- test xid status functions BEGIN; SELECT pg_current_xact_id() AS committed \gset COMMIT; BEGIN; SELECT pg_current_xact_id() AS rolledback \gset ROLLBACK; BEGIN; SELECT pg_current_xact_id() AS inprogress \gset SELECT pg_xact_status(:committed::text::xid8) AS committed; SELECT pg_xact_status(:rolledback::text::xid8) AS rolledback; SELECT pg_xact_status(:inprogress::text::xid8) AS inprogress; SELECT pg_xact_status('1'::xid8); -- BootstrapTransactionId is always committed SELECT pg_xact_status('2'::xid8); -- FrozenTransactionId is always committed SELECT pg_xact_status('3'::xid8); -- in regress testing FirstNormalTransactionId will always be behind oldestXmin COMMIT; BEGIN; CREATE FUNCTION test_future_xid_status(xid8) RETURNS void LANGUAGE plpgsql AS $$ BEGIN PERFORM pg_xact_status($1); RAISE EXCEPTION 'didn''t ERROR at xid in the future as expected'; EXCEPTION WHEN invalid_parameter_value THEN RAISE NOTICE 'Got expected error for xid in the future'; END; $$; SELECT test_future_xid_status((:inprogress + 10000)::text::xid8); ROLLBACK; libpg_query-13-2.1.0/test/sql/postgres_regress/xml.sql000066400000000000000000000673431413137616400227770ustar00rootroot00000000000000CREATE TABLE xmltest ( id int, data xml ); INSERT INTO xmltest VALUES (1, 'one'); INSERT INTO xmltest VALUES (2, 'two'); INSERT INTO xmltest VALUES (3, '', NULL, ''); SELECT xmlconcat('', NULL, ''); SELECT xmlconcat(NULL); SELECT xmlconcat(NULL, NULL); SELECT xmlelement(name element, xmlattributes (1 as one, 'deuce' as two), 'content'); SELECT xmlelement(name element, xmlattributes ('unnamed and wrong')); SELECT xmlelement(name element, xmlelement(name nested, 'stuff')); SELECT xmlelement(name employee, xmlforest(name, age, salary as pay)) FROM emp; SELECT xmlelement(name duplicate, xmlattributes(1 as a, 2 as b, 3 as a)); SELECT xmlelement(name num, 37); SELECT xmlelement(name foo, text 'bar'); SELECT xmlelement(name foo, xml 'bar'); SELECT xmlelement(name foo, text 'br'); SELECT xmlelement(name foo, xml 'br'); SELECT xmlelement(name foo, array[1, 2, 3]); SET xmlbinary TO base64; SELECT xmlelement(name foo, bytea 'bar'); SET xmlbinary TO hex; SELECT xmlelement(name foo, bytea 'bar'); SELECT xmlelement(name foo, xmlattributes(true as bar)); SELECT xmlelement(name foo, xmlattributes('2009-04-09 00:24:37'::timestamp as bar)); SELECT xmlelement(name foo, xmlattributes('infinity'::timestamp as bar)); SELECT xmlelement(name foo, xmlattributes('<>&"''' as funny, xml 'br' as funnier)); SELECT xmlparse(content ''); SELECT xmlparse(content ' '); SELECT xmlparse(content 'abc'); SELECT xmlparse(content 'x'); SELECT xmlparse(content '&'); SELECT xmlparse(content '&idontexist;'); SELECT xmlparse(content ''); SELECT xmlparse(content ''); SELECT xmlparse(content '&idontexist;'); SELECT xmlparse(content ''); SELECT xmlparse(document ' '); SELECT xmlparse(document 'abc'); SELECT xmlparse(document 'x'); SELECT xmlparse(document '&'); SELECT xmlparse(document '&idontexist;'); SELECT xmlparse(document ''); SELECT xmlparse(document ''); SELECT xmlparse(document '&idontexist;'); SELECT xmlparse(document ''); SELECT xmlpi(name foo); SELECT xmlpi(name xml); SELECT xmlpi(name xmlstuff); SELECT xmlpi(name foo, 'bar'); SELECT xmlpi(name foo, 'in?>valid'); SELECT xmlpi(name foo, null); SELECT xmlpi(name xml, null); SELECT xmlpi(name xmlstuff, null); SELECT xmlpi(name "xml-stylesheet", 'href="mystyle.css" type="text/css"'); SELECT xmlpi(name foo, ' bar'); SELECT xmlroot(xml '', version no value, standalone no value); SELECT xmlroot(xml '', version '2.0'); SELECT xmlroot(xml '', version no value, standalone yes); SELECT xmlroot(xml '', version no value, standalone yes); SELECT xmlroot(xmlroot(xml '', version '1.0'), version '1.1', standalone no); SELECT xmlroot('', version no value, standalone no); SELECT xmlroot('', version no value, standalone no value); SELECT xmlroot('', version no value); SELECT xmlroot ( xmlelement ( name gazonk, xmlattributes ( 'val' AS name, 1 + 1 AS num ), xmlelement ( NAME qux, 'foo' ) ), version '1.0', standalone yes ); SELECT xmlserialize(content data as character varying(20)) FROM xmltest; SELECT xmlserialize(content 'good' as char(10)); SELECT xmlserialize(document 'bad' as text); SELECT xml 'bar' IS DOCUMENT; SELECT xml 'barfoo' IS DOCUMENT; SELECT xml '' IS NOT DOCUMENT; SELECT xml 'abc' IS NOT DOCUMENT; SELECT '<>' IS NOT DOCUMENT; SELECT xmlagg(data) FROM xmltest; SELECT xmlagg(data) FROM xmltest WHERE id > 10; SELECT xmlelement(name employees, xmlagg(xmlelement(name name, name))) FROM emp; -- Check mapping SQL identifier to XML name SELECT xmlpi(name ":::_xml_abc135.%-&_"); SELECT xmlpi(name "123"); PREPARE foo (xml) AS SELECT xmlconcat('', $1); SET XML OPTION DOCUMENT; EXECUTE foo (''); EXECUTE foo ('bad'); SELECT xml ''; SET XML OPTION CONTENT; EXECUTE foo (''); EXECUTE foo ('good'); SELECT xml ' '; SELECT xml ' '; SELECT xml ''; SELECT xml ' oops '; SELECT xml ' '; SELECT xml ''; -- Test backwards parsing CREATE VIEW xmlview1 AS SELECT xmlcomment('test'); CREATE VIEW xmlview2 AS SELECT xmlconcat('hello', 'you'); CREATE VIEW xmlview3 AS SELECT xmlelement(name element, xmlattributes (1 as ":one:", 'deuce' as two), 'content&'); CREATE VIEW xmlview4 AS SELECT xmlelement(name employee, xmlforest(name, age, salary as pay)) FROM emp; CREATE VIEW xmlview5 AS SELECT xmlparse(content 'x'); CREATE VIEW xmlview6 AS SELECT xmlpi(name foo, 'bar'); CREATE VIEW xmlview7 AS SELECT xmlroot(xml '', version no value, standalone yes); CREATE VIEW xmlview8 AS SELECT xmlserialize(content 'good' as char(10)); CREATE VIEW xmlview9 AS SELECT xmlserialize(content 'good' as text); SELECT table_name, view_definition FROM information_schema.views WHERE table_name LIKE 'xmlview%' ORDER BY 1; -- Text XPath expressions evaluation SELECT xpath('/value', data) FROM xmltest; SELECT xpath(NULL, NULL) IS NULL FROM xmltest; SELECT xpath('', ''); SELECT xpath('//text()', 'number one'); SELECT xpath('//loc:piece/@id', 'number one', ARRAY[ARRAY['loc', 'http://127.0.0.1']]); SELECT xpath('//loc:piece', 'number one', ARRAY[ARRAY['loc', 'http://127.0.0.1']]); SELECT xpath('//loc:piece', 'number one', ARRAY[ARRAY['loc', 'http://127.0.0.1']]); SELECT xpath('//b', 'one two three etc'); SELECT xpath('//text()', '<'); SELECT xpath('//@value', ''); SELECT xpath('''<>''', ''); SELECT xpath('count(//*)', ''); SELECT xpath('count(//*)=0', ''); SELECT xpath('count(//*)=3', ''); SELECT xpath('name(/*)', ''); SELECT xpath('/nosuchtag', ''); SELECT xpath('root', ''); -- Round-trip non-ASCII data through xpath(). DO $$ DECLARE xml_declaration text := ''; degree_symbol text; res xml[]; BEGIN -- Per the documentation, except when the server encoding is UTF8, xpath() -- may not work on non-ASCII data. The untranslatable_character and -- undefined_function traps below, currently dead code, will become relevant -- if we remove this limitation. IF current_setting('server_encoding') <> 'UTF8' THEN RAISE LOG 'skip: encoding % unsupported for xpath', current_setting('server_encoding'); RETURN; END IF; degree_symbol := convert_from('\xc2b0', 'UTF8'); res := xpath('text()', (xml_declaration || '' || degree_symbol || '')::xml); IF degree_symbol <> res[1]::text THEN RAISE 'expected % (%), got % (%)', degree_symbol, convert_to(degree_symbol, 'UTF8'), res[1], convert_to(res[1]::text, 'UTF8'); END IF; EXCEPTION -- character with byte sequence 0xc2 0xb0 in encoding "UTF8" has no equivalent in encoding "LATIN8" WHEN untranslatable_character -- default conversion function for encoding "UTF8" to "MULE_INTERNAL" does not exist OR undefined_function -- unsupported XML feature OR feature_not_supported THEN RAISE LOG 'skip: %', SQLERRM; END $$; -- Test xmlexists and xpath_exists SELECT xmlexists('//town[text() = ''Toronto'']' PASSING BY REF 'Bidford-on-AvonCwmbranBristol'); SELECT xmlexists('//town[text() = ''Cwmbran'']' PASSING BY REF 'Bidford-on-AvonCwmbranBristol'); SELECT xmlexists('count(/nosuchtag)' PASSING BY REF ''); SELECT xpath_exists('//town[text() = ''Toronto'']','Bidford-on-AvonCwmbranBristol'::xml); SELECT xpath_exists('//town[text() = ''Cwmbran'']','Bidford-on-AvonCwmbranBristol'::xml); SELECT xpath_exists('count(/nosuchtag)', ''::xml); INSERT INTO xmltest VALUES (4, 'BudvarfreeCarlinglots'::xml); INSERT INTO xmltest VALUES (5, 'MolsonfreeCarlinglots'::xml); INSERT INTO xmltest VALUES (6, 'BudvarfreeCarlinglots'::xml); INSERT INTO xmltest VALUES (7, 'MolsonfreeCarlinglots'::xml); SELECT COUNT(id) FROM xmltest WHERE xmlexists('/menu/beer' PASSING data); SELECT COUNT(id) FROM xmltest WHERE xmlexists('/menu/beer' PASSING BY REF data BY REF); SELECT COUNT(id) FROM xmltest WHERE xmlexists('/menu/beers' PASSING BY REF data); SELECT COUNT(id) FROM xmltest WHERE xmlexists('/menu/beers/name[text() = ''Molson'']' PASSING BY REF data); SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beer',data); SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers',data); SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/menu/beers/name[text() = ''Molson'']',data); SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/myns:menu/myns:beer',data,ARRAY[ARRAY['myns','http://myns.com']]); SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/myns:menu/myns:beers',data,ARRAY[ARRAY['myns','http://myns.com']]); SELECT COUNT(id) FROM xmltest WHERE xpath_exists('/myns:menu/myns:beers/myns:name[text() = ''Molson'']',data,ARRAY[ARRAY['myns','http://myns.com']]); CREATE TABLE query ( expr TEXT ); INSERT INTO query VALUES ('/menu/beers/cost[text() = ''lots'']'); SELECT COUNT(id) FROM xmltest, query WHERE xmlexists(expr PASSING BY REF data); -- Test xml_is_well_formed and variants SELECT xml_is_well_formed_document('bar'); SELECT xml_is_well_formed_document('abc'); SELECT xml_is_well_formed_content('bar'); SELECT xml_is_well_formed_content('abc'); SET xmloption TO DOCUMENT; SELECT xml_is_well_formed('abc'); SELECT xml_is_well_formed('<>'); SELECT xml_is_well_formed(''); SELECT xml_is_well_formed('bar'); SELECT xml_is_well_formed('barbaz'); SELECT xml_is_well_formed('number one'); SELECT xml_is_well_formed('bar'); SELECT xml_is_well_formed('bar'); SELECT xml_is_well_formed('&'); SELECT xml_is_well_formed('&idontexist;'); SELECT xml_is_well_formed(''); SELECT xml_is_well_formed(''); SELECT xml_is_well_formed('&idontexist;'); SET xmloption TO CONTENT; SELECT xml_is_well_formed('abc'); -- Since xpath() deals with namespaces, it's a bit stricter about -- what's well-formed and what's not. If we don't obey these rules -- (i.e. ignore namespace-related errors from libxml), xpath() -- fails in subtle ways. The following would for example produce -- the xml value -- -- which is invalid because '<' may not appear un-escaped in -- attribute values. -- Since different libxml versions emit slightly different -- error messages, we suppress the DETAIL in this test. \set VERBOSITY terse SELECT xpath('/*', ''); \set VERBOSITY default -- Again, the XML isn't well-formed for namespace purposes SELECT xpath('/*', ''); -- XPath deprecates relative namespaces, but they're not supposed to -- throw an error, only a warning. SELECT xpath('/*', ''); -- External entity references should not leak filesystem information. SELECT XMLPARSE(DOCUMENT ']>&c;'); SELECT XMLPARSE(DOCUMENT ']>&c;'); -- This might or might not load the requested DTD, but it mustn't throw error. SELECT XMLPARSE(DOCUMENT ' '); -- XMLPATH tests CREATE TABLE xmldata(data xml); INSERT INTO xmldata VALUES(' AU Australia 3 CN China 3 HK HongKong 3 IN India 3 JP Japan 3Sinzo Abe SG Singapore 3791 '); -- XMLTABLE with columns SELECT xmltable.* FROM (SELECT data FROM xmldata) x, LATERAL XMLTABLE('/ROWS/ROW' PASSING data COLUMNS id int PATH '@id', _id FOR ORDINALITY, country_name text PATH 'COUNTRY_NAME/text()' NOT NULL, country_id text PATH 'COUNTRY_ID', region_id int PATH 'REGION_ID', size float PATH 'SIZE', unit text PATH 'SIZE/@unit', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified'); CREATE VIEW xmltableview1 AS SELECT xmltable.* FROM (SELECT data FROM xmldata) x, LATERAL XMLTABLE('/ROWS/ROW' PASSING data COLUMNS id int PATH '@id', _id FOR ORDINALITY, country_name text PATH 'COUNTRY_NAME/text()' NOT NULL, country_id text PATH 'COUNTRY_ID', region_id int PATH 'REGION_ID', size float PATH 'SIZE', unit text PATH 'SIZE/@unit', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified'); SELECT * FROM xmltableview1; \sv xmltableview1 EXPLAIN (COSTS OFF) SELECT * FROM xmltableview1; EXPLAIN (COSTS OFF, VERBOSE) SELECT * FROM xmltableview1; -- XMLNAMESPACES tests SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS zz), '/zz:rows/zz:row' PASSING '10' COLUMNS a int PATH 'zz:a'); CREATE VIEW xmltableview2 AS SELECT * FROM XMLTABLE(XMLNAMESPACES('http://x.y' AS zz), '/zz:rows/zz:row' PASSING '10' COLUMNS a int PATH 'zz:a'); SELECT * FROM xmltableview2; SELECT * FROM XMLTABLE(XMLNAMESPACES(DEFAULT 'http://x.y'), '/rows/row' PASSING '10' COLUMNS a int PATH 'a'); SELECT * FROM XMLTABLE('.' PASSING '' COLUMNS a text PATH 'foo/namespace::node()'); -- used in prepare statements PREPARE pp AS SELECT xmltable.* FROM (SELECT data FROM xmldata) x, LATERAL XMLTABLE('/ROWS/ROW' PASSING data COLUMNS id int PATH '@id', _id FOR ORDINALITY, country_name text PATH 'COUNTRY_NAME' NOT NULL, country_id text PATH 'COUNTRY_ID', region_id int PATH 'REGION_ID', size float PATH 'SIZE', unit text PATH 'SIZE/@unit', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified'); EXECUTE pp; SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS "COUNTRY_NAME" text, "REGION_ID" int); SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id FOR ORDINALITY, "COUNTRY_NAME" text, "REGION_ID" int); SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id', "COUNTRY_NAME" text, "REGION_ID" int); SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id'); SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id FOR ORDINALITY); SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id', "COUNTRY_NAME" text, "REGION_ID" int, rawdata xml PATH '.'); SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS id int PATH '@id', "COUNTRY_NAME" text, "REGION_ID" int, rawdata xml PATH './*'); SELECT * FROM xmltable('/root' passing 'a1aa2a bbbbxxxcccc' COLUMNS element text); SELECT * FROM xmltable('/root' passing 'a1aa2a bbbbxxxcccc' COLUMNS element text PATH 'element/text()'); -- should fail -- CDATA test select * from xmltable('d/r' passing ' &"<>!foo]]>2' columns c text); -- XML builtin entities SELECT * FROM xmltable('/x/a' PASSING ''"&<>' COLUMNS ent text); SELECT * FROM xmltable('/x/a' PASSING ''"&<>' COLUMNS ent xml); EXPLAIN (VERBOSE, COSTS OFF) SELECT xmltable.* FROM (SELECT data FROM xmldata) x, LATERAL XMLTABLE('/ROWS/ROW' PASSING data COLUMNS id int PATH '@id', _id FOR ORDINALITY, country_name text PATH 'COUNTRY_NAME' NOT NULL, country_id text PATH 'COUNTRY_ID', region_id int PATH 'REGION_ID', size float PATH 'SIZE', unit text PATH 'SIZE/@unit', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified'); -- test qual SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS "COUNTRY_NAME" text, "REGION_ID" int) WHERE "COUNTRY_NAME" = 'Japan'; EXPLAIN (VERBOSE, COSTS OFF) SELECT xmltable.* FROM xmldata, LATERAL xmltable('/ROWS/ROW[COUNTRY_NAME="Japan" or COUNTRY_NAME="India"]' PASSING data COLUMNS "COUNTRY_NAME" text, "REGION_ID" int) WHERE "COUNTRY_NAME" = 'Japan'; -- should to work with more data INSERT INTO xmldata VALUES(' CZ Czech Republic 2Milos Zeman DE Germany 2 FR France 2 '); INSERT INTO xmldata VALUES(' EG Egypt 1 SD Sudan 1 '); SELECT xmltable.* FROM (SELECT data FROM xmldata) x, LATERAL XMLTABLE('/ROWS/ROW' PASSING data COLUMNS id int PATH '@id', _id FOR ORDINALITY, country_name text PATH 'COUNTRY_NAME' NOT NULL, country_id text PATH 'COUNTRY_ID', region_id int PATH 'REGION_ID', size float PATH 'SIZE', unit text PATH 'SIZE/@unit', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified'); SELECT xmltable.* FROM (SELECT data FROM xmldata) x, LATERAL XMLTABLE('/ROWS/ROW' PASSING data COLUMNS id int PATH '@id', _id FOR ORDINALITY, country_name text PATH 'COUNTRY_NAME' NOT NULL, country_id text PATH 'COUNTRY_ID', region_id int PATH 'REGION_ID', size float PATH 'SIZE', unit text PATH 'SIZE/@unit', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified') WHERE region_id = 2; EXPLAIN (VERBOSE, COSTS OFF) SELECT xmltable.* FROM (SELECT data FROM xmldata) x, LATERAL XMLTABLE('/ROWS/ROW' PASSING data COLUMNS id int PATH '@id', _id FOR ORDINALITY, country_name text PATH 'COUNTRY_NAME' NOT NULL, country_id text PATH 'COUNTRY_ID', region_id int PATH 'REGION_ID', size float PATH 'SIZE', unit text PATH 'SIZE/@unit', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified') WHERE region_id = 2; -- should fail, NULL value SELECT xmltable.* FROM (SELECT data FROM xmldata) x, LATERAL XMLTABLE('/ROWS/ROW' PASSING data COLUMNS id int PATH '@id', _id FOR ORDINALITY, country_name text PATH 'COUNTRY_NAME' NOT NULL, country_id text PATH 'COUNTRY_ID', region_id int PATH 'REGION_ID', size float PATH 'SIZE' NOT NULL, unit text PATH 'SIZE/@unit', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified'); -- if all is ok, then result is empty -- one line xml test WITH x AS (SELECT proname, proowner, procost::numeric, pronargs, array_to_string(proargnames,',') as proargnames, case when proargtypes <> '' then array_to_string(proargtypes::oid[],',') end as proargtypes FROM pg_proc WHERE proname = 'f_leak'), y AS (SELECT xmlelement(name proc, xmlforest(proname, proowner, procost, pronargs, proargnames, proargtypes)) as proc FROM x), z AS (SELECT xmltable.* FROM y, LATERAL xmltable('/proc' PASSING proc COLUMNS proname name, proowner oid, procost float, pronargs int, proargnames text, proargtypes text)) SELECT * FROM z EXCEPT SELECT * FROM x; -- multi line xml test, result should be empty too WITH x AS (SELECT proname, proowner, procost::numeric, pronargs, array_to_string(proargnames,',') as proargnames, case when proargtypes <> '' then array_to_string(proargtypes::oid[],',') end as proargtypes FROM pg_proc), y AS (SELECT xmlelement(name data, xmlagg(xmlelement(name proc, xmlforest(proname, proowner, procost, pronargs, proargnames, proargtypes)))) as doc FROM x), z AS (SELECT xmltable.* FROM y, LATERAL xmltable('/data/proc' PASSING doc COLUMNS proname name, proowner oid, procost float, pronargs int, proargnames text, proargtypes text)) SELECT * FROM z EXCEPT SELECT * FROM x; CREATE TABLE xmltest2(x xml, _path text); INSERT INTO xmltest2 VALUES('1', 'A'); INSERT INTO xmltest2 VALUES('2', 'B'); INSERT INTO xmltest2 VALUES('3', 'C'); INSERT INTO xmltest2 VALUES('2', 'D'); SELECT xmltable.* FROM xmltest2, LATERAL xmltable('/d/r' PASSING x COLUMNS a int PATH '' || lower(_path) || 'c'); SELECT xmltable.* FROM xmltest2, LATERAL xmltable(('/d/r/' || lower(_path) || 'c') PASSING x COLUMNS a int PATH '.'); SELECT xmltable.* FROM xmltest2, LATERAL xmltable(('/d/r/' || lower(_path) || 'c') PASSING x COLUMNS a int PATH 'x' DEFAULT ascii(_path) - 54); -- XPath result can be boolean or number too SELECT * FROM XMLTABLE('*' PASSING 'a' COLUMNS a xml PATH '.', b text PATH '.', c text PATH '"hi"', d boolean PATH '. = "a"', e integer PATH 'string-length(.)'); \x SELECT * FROM XMLTABLE('*' PASSING 'pre&deeppost' COLUMNS x xml PATH 'node()', y xml PATH '/'); \x SELECT * FROM XMLTABLE('.' PASSING XMLELEMENT(NAME a) columns a varchar(20) PATH '""', b xml PATH '""'); libpg_query-13-2.1.0/test/sql/postgres_regress/xmlmap.sql000066400000000000000000000055201413137616400234620ustar00rootroot00000000000000CREATE SCHEMA testxmlschema; CREATE TABLE testxmlschema.test1 (a int, b text); INSERT INTO testxmlschema.test1 VALUES (1, 'one'), (2, 'two'), (-1, null); CREATE DOMAIN testxmldomain AS varchar; CREATE TABLE testxmlschema.test2 (z int, y varchar(500), x char(6), w numeric(9,2), v smallint, u bigint, t real, s time, r timestamp, q date, p xml, o testxmldomain, n bool, m bytea, aaa text); ALTER TABLE testxmlschema.test2 DROP COLUMN aaa; INSERT INTO testxmlschema.test2 VALUES (55, 'abc', 'def', 98.6, 2, 999, 0, '21:07', '2009-06-08 21:07:30', '2009-06-08', NULL, 'ABC', true, 'XYZ'); SELECT table_to_xml('testxmlschema.test1', false, false, ''); SELECT table_to_xml('testxmlschema.test1', true, false, 'foo'); SELECT table_to_xml('testxmlschema.test1', false, true, ''); SELECT table_to_xml('testxmlschema.test1', true, true, ''); SELECT table_to_xml('testxmlschema.test2', false, false, ''); SELECT table_to_xmlschema('testxmlschema.test1', false, false, ''); SELECT table_to_xmlschema('testxmlschema.test1', true, false, ''); SELECT table_to_xmlschema('testxmlschema.test1', false, true, 'foo'); SELECT table_to_xmlschema('testxmlschema.test1', true, true, ''); SELECT table_to_xmlschema('testxmlschema.test2', false, false, ''); SELECT table_to_xml_and_xmlschema('testxmlschema.test1', false, false, ''); SELECT table_to_xml_and_xmlschema('testxmlschema.test1', true, false, ''); SELECT table_to_xml_and_xmlschema('testxmlschema.test1', false, true, ''); SELECT table_to_xml_and_xmlschema('testxmlschema.test1', true, true, 'foo'); SELECT query_to_xml('SELECT * FROM testxmlschema.test1', false, false, ''); SELECT query_to_xmlschema('SELECT * FROM testxmlschema.test1', false, false, ''); SELECT query_to_xml_and_xmlschema('SELECT * FROM testxmlschema.test1', true, true, ''); DECLARE xc CURSOR WITH HOLD FOR SELECT * FROM testxmlschema.test1 ORDER BY 1, 2; SELECT cursor_to_xml('xc'::refcursor, 5, false, true, ''); SELECT cursor_to_xmlschema('xc'::refcursor, false, true, ''); MOVE BACKWARD ALL IN xc; SELECT cursor_to_xml('xc'::refcursor, 5, true, false, ''); SELECT cursor_to_xmlschema('xc'::refcursor, true, false, ''); SELECT schema_to_xml('testxmlschema', false, true, ''); SELECT schema_to_xml('testxmlschema', true, false, ''); SELECT schema_to_xmlschema('testxmlschema', false, true, ''); SELECT schema_to_xmlschema('testxmlschema', true, false, ''); SELECT schema_to_xml_and_xmlschema('testxmlschema', true, true, 'foo'); -- test that domains are transformed like their base types CREATE DOMAIN testboolxmldomain AS bool; CREATE DOMAIN testdatexmldomain AS date; CREATE TABLE testxmlschema.test3 AS SELECT true c1, true::testboolxmldomain c2, '2013-02-21'::date c3, '2013-02-21'::testdatexmldomain c4; SELECT xmlforest(c1, c2, c3, c4) FROM testxmlschema.test3; SELECT table_to_xml('testxmlschema.test3', true, true, ''); libpg_query-13-2.1.0/test/valgrind.supp000066400000000000000000000001731413137616400177620ustar00rootroot00000000000000{ google_protobuf_cpp_unclean_shutdown Memcheck:Leak match-leak-kinds: reachable ... fun:*google*protobuf* }libpg_query-13-2.1.0/testdata/000077500000000000000000000000001413137616400160745ustar00rootroot00000000000000libpg_query-13-2.1.0/testdata/fingerprint.json000066400000000000000000000647461413137616400213370ustar00rootroot00000000000000[ { "input": "SELECT 1", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], "expectedHash": "50fde20626009aba" }, { "input": "SELECT 2", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], "expectedHash": "50fde20626009aba" }, { "input": "SELECT ?", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], "expectedHash": "50fde20626009aba" }, { "input": "SELECT $1", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], "expectedHash": "50fde20626009aba" }, { "input": "SELECT 1; SELECT a FROM b", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "b", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a"], "expectedHash": "3efa3b10d558d06d" }, { "input": "SELECT COUNT(DISTINCT id), * FROM targets WHERE something IS NOT NULL AND elsewhere::interval < now()", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "targets", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "FuncCall", "agg_distinct", "true", "args", "ColumnRef", "fields", "String", "str", "id", "funcname", "String", "str", "count", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "BoolExpr", "args", "A_Expr", "kind", "AEXPR_OP", "lexpr", "TypeCast", "arg", "ColumnRef", "fields", "String", "str", "elsewhere", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "interval", "typemod", "-1", "name", "String", "str", "<", "rexpr", "FuncCall", "funcname", "String", "str", "now", "NullTest", "arg", "ColumnRef", "fields", "String", "str", "something", "nulltesttype", "IS_NOT_NULL", "boolop", "AND_EXPR"], "expectedHash": "4380dd02d56bbe1a" }, { "input": "INSERT INTO test (a, b) VALUES (?, ?)", "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", "name", "b", "ResTarget", "name", "a", "override", "OVERRIDING_NOT_SET", "relation", "inh", "true", "relname", "test", "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE"], "expectedHash": "51e63b8083b48bdd" }, { "input": "INSERT INTO test (b, a) VALUES (?, ?)", "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", "name", "b", "ResTarget", "name", "a", "override", "OVERRIDING_NOT_SET", "relation", "inh", "true", "relname", "test", "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE"], "expectedHash": "51e63b8083b48bdd" }, { "input": "INSERT INTO test (a, b) VALUES (ARRAY[?, ?, ?, ?], ?::timestamptz), (ARRAY[?, ?, ?, ?], ?::timestamptz), (?, ?::timestamptz)", "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", "name", "b", "ResTarget", "name", "a", "override", "OVERRIDING_NOT_SET", "relation", "inh", "true", "relname", "test", "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "valuesLists", "A_ArrayExpr"], "expectedHash": "4dfdd5260cac5acf" }, { "input": "SELECT b AS x, a AS y FROM z", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "z", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "b", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a"], "expectedHash": "1a8bf5d7614de3a5" }, { "input": "SELECT * FROM x WHERE y = ?", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", "name", "String", "str", "="], "expectedHash": "4ff39426bd074231" }, { "input": "SELECT * FROM x WHERE y = ANY ($1)", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", "name", "String", "str", "="], "expectedHash": "4ff39426bd074231" }, { "input": "SELECT * FROM x WHERE y IN (?)", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", "name", "String", "str", "="], "expectedHash": "4ff39426bd074231" }, { "input": "SELECT * FROM x WHERE y IN (?, ?, ?)", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", "name", "String", "str", "="], "expectedHash": "4ff39426bd074231" }, { "input": "SELECT * FROM x WHERE y IN ( ?::uuid )", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", "name", "String", "str", "="], "expectedHash": "4ff39426bd074231" }, { "input": "SELECT * FROM x WHERE y IN ( ?::uuid, ?::uuid, ?::uuid )", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "y", "name", "String", "str", "="], "expectedHash": "4ff39426bd074231" }, { "input": "PREPARE a123 AS SELECT a", "expectedParts": ["RawStmt", "stmt", "PrepareStmt", "query", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a"], "expectedHash": "9b5e6ead8be993e8" }, { "input": "EXECUTE a123", "expectedParts": ["RawStmt", "stmt", "ExecuteStmt"], "expectedHash": "44ef1d2beabd53e8" }, { "input": "DEALLOCATE a123", "expectedParts": ["RawStmt", "stmt", "DeallocateStmt"], "expectedHash": "d8a65a814fbc5f95" }, { "input": "DEALLOCATE ALL", "expectedParts": ["RawStmt", "stmt", "DeallocateStmt"], "expectedHash": "d8a65a814fbc5f95" }, { "input": "EXPLAIN ANALYZE SELECT a", "expectedParts": ["RawStmt", "stmt", "ExplainStmt", "options", "DefElem", "defaction", "DEFELEM_UNSPEC", "defname", "analyze", "query", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a"], "expectedHash": "82845c1b5c6102e5" }, { "input": "WITH a AS (SELECT * FROM x WHERE x.y = ? AND x.z = 1) SELECT * FROM a", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "a", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "withClause", "ctes", "CommonTableExpr", "ctematerialized", "CTEMaterializeDefault", "ctename", "a", "ctequery", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "BoolExpr", "args", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "x", "String", "str", "y", "name", "String", "str", "=", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "x", "String", "str", "z", "name", "String", "str", "=", "boolop", "AND_EXPR"], "expectedHash": "6831e38bbb3dd18c" }, { "input": "CREATE TABLE types (a float(2), b float(49), c NUMERIC(2, 3), d character(4), e char(5), f varchar(6), g character varying(7))", "expectedParts": ["RawStmt", "stmt", "CreateStmt", "oncommit", "ONCOMMIT_NOOP", "relation", "inh", "true", "relname", "types", "relpersistence", "p", "tableElts", "ColumnDef", "colname", "a", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "float4", "typemod", "-1", "ColumnDef", "colname", "b", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "float8", "typemod", "-1", "ColumnDef", "colname", "c", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "numeric", "typemod", "-1", "ColumnDef", "colname", "d", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "bpchar", "typemod", "-1", "ColumnDef", "colname", "e", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "bpchar", "typemod", "-1", "ColumnDef", "colname", "f", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "varchar", "typemod", "-1", "ColumnDef", "colname", "g", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "varchar", "typemod", "-1"], "expectedHash": "008d6ba4aa0f4c6e" }, { "input": "CREATE VIEW view_a (a, b) AS WITH RECURSIVE view_a (a, b) AS (SELECT * FROM a(1)) SELECT \"a\", \"b\" FROM \"view_a\"", "expectedParts": ["RawStmt", "stmt", "ViewStmt", "aliases", "String", "str", "a", "String", "str", "b", "query", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "view_a", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "b", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a", "withClause", "ctes", "CommonTableExpr", "aliascolnames", "String", "str", "a", "String", "str", "b", "ctematerialized", "CTEMaterializeDefault", "ctename", "view_a", "ctequery", "SelectStmt", "fromClause", "RangeFunction", "functions", "FuncCall", "funcname", "String", "str", "a", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "recursive", "true", "view", "inh", "true", "relname", "view_a", "relpersistence", "p", "withCheckOption", "NO_CHECK_OPTION"], "expectedHash": "6236405577a6cea6" }, { "input": "VACUUM FULL my_table", "expectedParts": ["RawStmt", "stmt", "VacuumStmt", "is_vacuumcmd", "true", "options", "DefElem", "defaction", "DEFELEM_UNSPEC", "defname", "full", "rels", "VacuumRelation", "relation", "inh", "true", "relname", "my_table", "relpersistence", "p"], "expectedHash": "fdf2f4127644f4d8" }, { "input": "SELECT * FROM x AS a, y AS b", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "RangeVar", "inh", "true", "relname", "y", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], "expectedHash": "4e9acae841dae228" }, { "input": "SELECT * FROM y AS a, x AS b", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "RangeVar", "inh", "true", "relname", "y", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], "expectedHash": "4e9acae841dae228" }, { "input": "SELECT x AS a, y AS b FROM x", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "x", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "y"], "expectedHash": "65dff5f5e9a643ad" }, { "input": "SELECT y AS a, x AS b FROM x", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "x", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "y"], "expectedHash": "65dff5f5e9a643ad" }, { "input": "SELECT x, y FROM z", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "z", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "x", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "y"], "expectedHash": "330267237da5535f" }, { "input": "SELECT y, x FROM z", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "z", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "x", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "y"], "expectedHash": "330267237da5535f" }, { "input": "INSERT INTO films (code, title, did) VALUES ('UA502', 'Bananas', 105), ('T_601', 'Yojimbo', DEFAULT)", "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", "name", "title", "ResTarget", "name", "did", "ResTarget", "name", "code", "override", "OVERRIDING_NOT_SET", "relation", "inh", "true", "relname", "films", "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE"], "expectedHash": "459fdc70778b841e" }, { "input": "INSERT INTO films (code, title, did) VALUES (?, ?, ?)", "expectedParts": ["RawStmt", "stmt", "InsertStmt", "cols", "ResTarget", "name", "title", "ResTarget", "name", "did", "ResTarget", "name", "code", "override", "OVERRIDING_NOT_SET", "relation", "inh", "true", "relname", "films", "relpersistence", "p", "selectStmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE"], "expectedHash": "459fdc70778b841e" }, { "input": "SELECT * FROM a", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "a", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], "expectedHash": "fcf44da7b597ef43" }, { "input": "SELECT * FROM a AS b", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "a", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], "expectedHash": "fcf44da7b597ef43" }, { "input": "UPDATE users SET one_thing = $1, second_thing = $2 WHERE users.id = ?", "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "users", "relpersistence", "p", "targetList", "ResTarget", "name", "one_thing", "ResTarget", "name", "second_thing", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "users", "String", "str", "id", "name", "String", "str", "="], "expectedHash": "a0ea386c1cfd1e69" }, { "input": "UPDATE users SET something_else = $1 WHERE users.id = ?", "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "users", "relpersistence", "p", "targetList", "ResTarget", "name", "something_else", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "users", "String", "str", "id", "name", "String", "str", "="], "expectedHash": "3172bc3e0d631d55" }, { "input": "UPDATE users SET something_else = (SELECT a FROM x WHERE uid = users.id LIMIT 1) WHERE users.id = ?", "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "users", "relpersistence", "p", "targetList", "ResTarget", "name", "something_else", "val", "SubLink", "subLinkType", "EXPR_SUBLINK", "subselect", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_COUNT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "String", "str", "a", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "uid", "name", "String", "str", "=", "rexpr", "ColumnRef", "fields", "String", "str", "users", "String", "str", "id", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "users", "String", "str", "id", "name", "String", "str", "="], "expectedHash": "f1127a8b91fbecbf" }, { "input": "SAVEPOINT some_id", "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "TRANS_STMT_SAVEPOINT"], "expectedHash": "8ebd566ea1bf947b" }, { "input": "RELEASE some_id", "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "TRANS_STMT_RELEASE"], "expectedHash": "60d618658252d2af" }, { "input": "PREPARE TRANSACTION 'some_id'", "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "TRANS_STMT_PREPARE"], "expectedHash": "d993959a33d627d4" }, { "input": "START TRANSACTION READ WRITE", "expectedParts": ["RawStmt", "stmt", "TransactionStmt", "kind", "TRANS_STMT_START"], "expectedHash": "4ca25828c835d55a" }, { "input": "DECLARE cursor_123 CURSOR FOR SELECT * FROM test WHERE id = 123", "expectedParts": ["RawStmt", "stmt", "DeclareCursorStmt", "options", "32", "query", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "test", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "id", "name", "String", "str", "="], "expectedHash": "0119adaeb91afad0" }, { "input": "FETCH 1000 FROM cursor_123", "expectedParts": ["RawStmt", "stmt", "FetchStmt", "direction", "FETCH_FORWARD", "howMany", "1000"], "expectedHash": "37f4d2f6a957ae48" }, { "input": "CLOSE cursor_123", "expectedParts": ["RawStmt", "stmt", "ClosePortalStmt"], "expectedHash": "2c7963684fc2bad9" }, { "input": "-- nothing", "expectedParts": [], "expectedHash": "d8d13f8b2da6c9ad" }, { "input": "CREATE FOREIGN TABLE ft1 () SERVER no_server", "expectedParts": ["RawStmt", "stmt", "CreateForeignTableStmt", "base", "oncommit", "ONCOMMIT_NOOP", "relation", "inh", "true", "relname", "ft1", "relpersistence", "p", "servername", "no_server"], "expectedHash": "74481c4af7c76be1" }, { "input": "UPDATE x SET a = 1, b = 2, c = 3", "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "x", "relpersistence", "p", "targetList", "ResTarget", "name", "b", "ResTarget", "name", "c", "ResTarget", "name", "a"], "expectedHash": "fd5c248c0e642ce4" }, { "input": "UPDATE x SET z = now()", "expectedParts": ["RawStmt", "stmt", "UpdateStmt", "relation", "inh", "true", "relname", "x", "relpersistence", "p", "targetList", "ResTarget", "name", "z", "val", "FuncCall", "funcname", "String", "str", "now"], "expectedHash": "78fe872f5ec28674" }, { "input": "CREATE TEMPORARY TABLE my_temp_table (test_id integer NOT NULL) ON COMMIT DROP", "expectedParts": ["RawStmt", "stmt", "CreateStmt", "oncommit", "ONCOMMIT_DROP", "relation","inh", "true", "relpersistence", "t", "tableElts", "ColumnDef", "colname", "test_id", "constraints", "Constraint", "contype", "CONSTR_NOTNULL", "is_local", "true", "typeName", "names", "String", "str", "pg_catalog", "String", "str", "int4", "typemod", "-1"], "expectedHash": "1407ed5c5bb00967" }, { "input": "CREATE TEMPORARY TABLE my_temp_table AS SELECT 1", "expectedParts": ["RawStmt", "stmt", "CreateTableAsStmt", "into", "onCommit", "ONCOMMIT_NOOP", "rel", "inh", "true", "relpersistence", "t", "query", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "relkind", "OBJECT_TABLE"], "expectedHash": "dd5fac57c3c4524c" }, { "input": "SELECT INTERVAL (0) $2", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], "expectedHash": "50fde20626009aba" }, { "input": "SELECT INTERVAL (2) $2", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget"], "expectedHash": "50fde20626009aba" }, { "input": "SELECT * FROM t WHERE t.a IN (1, 2) AND t.b = 3", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "BoolExpr", "args", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "t", "String", "str", "a", "name", "String", "str", "=", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "t", "String", "str", "b", "name", "String", "str", "=", "boolop", "AND_EXPR"], "expectedHash": "346aea01be9173b6" }, { "input": "SELECT * FROM t WHERE t.b = 3 AND t.a IN (1, 2)", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "BoolExpr", "args", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "t", "String", "str", "a", "name", "String", "str", "=", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "t", "String", "str", "b", "name", "String", "str", "=", "boolop", "AND_EXPR"], "expectedHash": "346aea01be9173b6" }, { "input": "SELECT * FROM t WHERE a && '[1,2]'", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "a", "name", "String", "str", "&&"], "expectedHash": "673f199f13dfe665" }, { "input": "SELECT * FROM t WHERE a && '[1,2]'::int4range", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star", "whereClause", "A_Expr", "kind", "AEXPR_OP", "lexpr", "ColumnRef", "fields", "String", "str", "a", "name", "String", "str", "&&"], "expectedHash": "673f199f13dfe665" }, { "input": "SELECT * FROM t_20210301_x", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t__x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], "expectedHash": "6f8169980cd70a25" }, { "input": "SELECT * FROM t_20210302_x", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t__x", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], "expectedHash": "6f8169980cd70a25" }, { "input": "SELECT * FROM t_20210302_y", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t__y", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], "expectedHash": "d357dac4a24fcf1b" }, { "input": "SELECT * FROM t_1", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t_1", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], "expectedHash": "018bd9230646143e" }, { "input": "SELECT * FROM t_2", "expectedParts": ["RawStmt", "stmt", "SelectStmt", "fromClause", "RangeVar", "inh", "true", "relname", "t_2", "relpersistence", "p", "limitOption", "LIMIT_OPTION_DEFAULT", "op", "SETOP_NONE", "targetList", "ResTarget", "val", "ColumnRef", "fields", "A_Star"], "expectedHash": "3f1444da570c1a66" } ] libpg_query-13-2.1.0/tmp/000077500000000000000000000000001413137616400150635ustar00rootroot00000000000000libpg_query-13-2.1.0/tmp/.gitkeep000066400000000000000000000000001413137616400165020ustar00rootroot00000000000000libpg_query-13-2.1.0/vendor/000077500000000000000000000000001413137616400155605ustar00rootroot00000000000000libpg_query-13-2.1.0/vendor/protobuf-c/000077500000000000000000000000001413137616400176405ustar00rootroot00000000000000libpg_query-13-2.1.0/vendor/protobuf-c/protobuf-c.c000066400000000000000000002747361413137616400221070ustar00rootroot00000000000000/* * Copyright (c) 2008-2015, Dave Benson and the protobuf-c authors. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file * Support library for `protoc-c` generated code. * * This file implements the public API used by the code generated * by `protoc-c`. * * \authors Dave Benson and the protobuf-c authors * * \copyright 2008-2014. Licensed under the terms of the [BSD-2-Clause] license. */ /** * \todo 64-BIT OPTIMIZATION: certain implementations use 32-bit math * even on 64-bit platforms (uint64_size, uint64_pack, parse_uint64). * * \todo Use size_t consistently. */ #include /* for malloc, free */ #include /* for strcmp, strlen, memcpy, memmove, memset */ #include "protobuf-c.h" #define TRUE 1 #define FALSE 0 #define PROTOBUF_C__ASSERT_NOT_REACHED() assert(0) /* Workaround for Microsoft compilers. */ #ifdef _MSC_VER # define inline __inline #endif /** * \defgroup internal Internal functions and macros * * These are not exported by the library but are useful to developers working * on `libprotobuf-c` itself. */ /** * \defgroup macros Utility macros for manipulating structures * * Macros and constants used to manipulate the base "classes" generated by * `protobuf-c`. They also define limits and check correctness. * * \ingroup internal * @{ */ /** The maximum length of a 64-bit integer in varint encoding. */ #define MAX_UINT64_ENCODED_SIZE 10 #ifndef PROTOBUF_C_UNPACK_ERROR # define PROTOBUF_C_UNPACK_ERROR(...) #endif #if !defined(_WIN32) || !defined(PROTOBUF_C_USE_SHARED_LIB) const char protobuf_c_empty_string[] = ""; #endif /** * Internal `ProtobufCMessage` manipulation macro. * * Base macro for manipulating a `ProtobufCMessage`. Used by STRUCT_MEMBER() and * STRUCT_MEMBER_PTR(). */ #define STRUCT_MEMBER_P(struct_p, struct_offset) \ ((void *) ((uint8_t *) (struct_p) + (struct_offset))) /** * Return field in a `ProtobufCMessage` based on offset. * * Take a pointer to a `ProtobufCMessage` and find the field at the offset. * Cast it to the passed type. */ #define STRUCT_MEMBER(member_type, struct_p, struct_offset) \ (*(member_type *) STRUCT_MEMBER_P((struct_p), (struct_offset))) /** * Return field in a `ProtobufCMessage` based on offset. * * Take a pointer to a `ProtobufCMessage` and find the field at the offset. Cast * it to a pointer to the passed type. */ #define STRUCT_MEMBER_PTR(member_type, struct_p, struct_offset) \ ((member_type *) STRUCT_MEMBER_P((struct_p), (struct_offset))) /* Assertions for magic numbers. */ #define ASSERT_IS_ENUM_DESCRIPTOR(desc) \ assert((desc)->magic == PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC) #define ASSERT_IS_MESSAGE_DESCRIPTOR(desc) \ assert((desc)->magic == PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC) #define ASSERT_IS_MESSAGE(message) \ ASSERT_IS_MESSAGE_DESCRIPTOR((message)->descriptor) #define ASSERT_IS_SERVICE_DESCRIPTOR(desc) \ assert((desc)->magic == PROTOBUF_C__SERVICE_DESCRIPTOR_MAGIC) /**@}*/ /* --- version --- */ const char * protobuf_c_version(void) { return PROTOBUF_C_VERSION; } uint32_t protobuf_c_version_number(void) { return PROTOBUF_C_VERSION_NUMBER; } /* --- allocator --- */ static void * system_alloc(void *allocator_data, size_t size) { (void)allocator_data; return malloc(size); } static void system_free(void *allocator_data, void *data) { (void)allocator_data; free(data); } static inline void * do_alloc(ProtobufCAllocator *allocator, size_t size) { return allocator->alloc(allocator->allocator_data, size); } static inline void do_free(ProtobufCAllocator *allocator, void *data) { if (data != NULL) allocator->free(allocator->allocator_data, data); } /* * This allocator uses the system's malloc() and free(). It is the default * allocator used if NULL is passed as the ProtobufCAllocator to an exported * function. */ static ProtobufCAllocator protobuf_c__allocator = { .alloc = &system_alloc, .free = &system_free, .allocator_data = NULL, }; /* === buffer-simple === */ void protobuf_c_buffer_simple_append(ProtobufCBuffer *buffer, size_t len, const uint8_t *data) { ProtobufCBufferSimple *simp = (ProtobufCBufferSimple *) buffer; size_t new_len = simp->len + len; if (new_len > simp->alloced) { ProtobufCAllocator *allocator = simp->allocator; size_t new_alloced = simp->alloced * 2; uint8_t *new_data; if (allocator == NULL) allocator = &protobuf_c__allocator; while (new_alloced < new_len) new_alloced += new_alloced; new_data = do_alloc(allocator, new_alloced); if (!new_data) return; memcpy(new_data, simp->data, simp->len); if (simp->must_free_data) do_free(allocator, simp->data); else simp->must_free_data = TRUE; simp->data = new_data; simp->alloced = new_alloced; } memcpy(simp->data + simp->len, data, len); simp->len = new_len; } /** * \defgroup packedsz protobuf_c_message_get_packed_size() implementation * * Routines mainly used by protobuf_c_message_get_packed_size(). * * \ingroup internal * @{ */ /** * Return the number of bytes required to store the tag for the field. Includes * 3 bits for the wire-type, and a single bit that denotes the end-of-tag. * * \param number * Field tag to encode. * \return * Number of bytes required. */ static inline size_t get_tag_size(uint32_t number) { if (number < (1UL << 4)) { return 1; } else if (number < (1UL << 11)) { return 2; } else if (number < (1UL << 18)) { return 3; } else if (number < (1UL << 25)) { return 4; } else { return 5; } } /** * Return the number of bytes required to store a variable-length unsigned * 32-bit integer in base-128 varint encoding. * * \param v * Value to encode. * \return * Number of bytes required. */ static inline size_t uint32_size(uint32_t v) { if (v < (1UL << 7)) { return 1; } else if (v < (1UL << 14)) { return 2; } else if (v < (1UL << 21)) { return 3; } else if (v < (1UL << 28)) { return 4; } else { return 5; } } /** * Return the number of bytes required to store a variable-length signed 32-bit * integer in base-128 varint encoding. * * \param v * Value to encode. * \return * Number of bytes required. */ static inline size_t int32_size(int32_t v) { if (v < 0) { return 10; } else if (v < (1L << 7)) { return 1; } else if (v < (1L << 14)) { return 2; } else if (v < (1L << 21)) { return 3; } else if (v < (1L << 28)) { return 4; } else { return 5; } } /** * Return the ZigZag-encoded 32-bit unsigned integer form of a 32-bit signed * integer. * * \param v * Value to encode. * \return * ZigZag encoded integer. */ static inline uint32_t zigzag32(int32_t v) { // Note: the right-shift must be arithmetic // Note: left shift must be unsigned because of overflow return ((uint32_t)(v) << 1) ^ (uint32_t)(v >> 31); } /** * Return the number of bytes required to store a signed 32-bit integer, * converted to an unsigned 32-bit integer with ZigZag encoding, using base-128 * varint encoding. * * \param v * Value to encode. * \return * Number of bytes required. */ static inline size_t sint32_size(int32_t v) { return uint32_size(zigzag32(v)); } /** * Return the number of bytes required to store a 64-bit unsigned integer in * base-128 varint encoding. * * \param v * Value to encode. * \return * Number of bytes required. */ static inline size_t uint64_size(uint64_t v) { uint32_t upper_v = (uint32_t) (v >> 32); if (upper_v == 0) { return uint32_size((uint32_t) v); } else if (upper_v < (1UL << 3)) { return 5; } else if (upper_v < (1UL << 10)) { return 6; } else if (upper_v < (1UL << 17)) { return 7; } else if (upper_v < (1UL << 24)) { return 8; } else if (upper_v < (1UL << 31)) { return 9; } else { return 10; } } /** * Return the ZigZag-encoded 64-bit unsigned integer form of a 64-bit signed * integer. * * \param v * Value to encode. * \return * ZigZag encoded integer. */ static inline uint64_t zigzag64(int64_t v) { // Note: the right-shift must be arithmetic // Note: left shift must be unsigned because of overflow return ((uint64_t)(v) << 1) ^ (uint64_t)(v >> 63); } /** * Return the number of bytes required to store a signed 64-bit integer, * converted to an unsigned 64-bit integer with ZigZag encoding, using base-128 * varint encoding. * * \param v * Value to encode. * \return * Number of bytes required. */ static inline size_t sint64_size(int64_t v) { return uint64_size(zigzag64(v)); } /** * Calculate the serialized size of a single required message field, including * the space needed by the preceding tag. * * \param field * Field descriptor for member. * \param member * Field to encode. * \return * Number of bytes required. */ static size_t required_field_get_packed_size(const ProtobufCFieldDescriptor *field, const void *member) { size_t rv = get_tag_size(field->id); switch (field->type) { case PROTOBUF_C_TYPE_SINT32: return rv + sint32_size(*(const int32_t *) member); case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_INT32: return rv + int32_size(*(const int32_t *) member); case PROTOBUF_C_TYPE_UINT32: return rv + uint32_size(*(const uint32_t *) member); case PROTOBUF_C_TYPE_SINT64: return rv + sint64_size(*(const int64_t *) member); case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: return rv + uint64_size(*(const uint64_t *) member); case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: return rv + 4; case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: return rv + 8; case PROTOBUF_C_TYPE_BOOL: return rv + 1; case PROTOBUF_C_TYPE_FLOAT: return rv + 4; case PROTOBUF_C_TYPE_DOUBLE: return rv + 8; case PROTOBUF_C_TYPE_STRING: { const char *str = *(char * const *) member; size_t len = str ? strlen(str) : 0; return rv + uint32_size(len) + len; } case PROTOBUF_C_TYPE_BYTES: { size_t len = ((const ProtobufCBinaryData *) member)->len; return rv + uint32_size(len) + len; } case PROTOBUF_C_TYPE_MESSAGE: { const ProtobufCMessage *msg = *(ProtobufCMessage * const *) member; size_t subrv = msg ? protobuf_c_message_get_packed_size(msg) : 0; return rv + uint32_size(subrv) + subrv; } } PROTOBUF_C__ASSERT_NOT_REACHED(); return 0; } /** * Calculate the serialized size of a single oneof message field, including * the space needed by the preceding tag. Returns 0 if the oneof field isn't * selected or is not set. * * \param field * Field descriptor for member. * \param oneof_case * Enum value that selects the field in the oneof. * \param member * Field to encode. * \return * Number of bytes required. */ static size_t oneof_field_get_packed_size(const ProtobufCFieldDescriptor *field, uint32_t oneof_case, const void *member) { if (oneof_case != field->id) { return 0; } if (field->type == PROTOBUF_C_TYPE_MESSAGE || field->type == PROTOBUF_C_TYPE_STRING) { const void *ptr = *(const void * const *) member; if (ptr == NULL || ptr == field->default_value) return 0; } return required_field_get_packed_size(field, member); } /** * Calculate the serialized size of a single optional message field, including * the space needed by the preceding tag. Returns 0 if the optional field isn't * set. * * \param field * Field descriptor for member. * \param has * True if the field exists, false if not. * \param member * Field to encode. * \return * Number of bytes required. */ static size_t optional_field_get_packed_size(const ProtobufCFieldDescriptor *field, const protobuf_c_boolean has, const void *member) { if (field->type == PROTOBUF_C_TYPE_MESSAGE || field->type == PROTOBUF_C_TYPE_STRING) { const void *ptr = *(const void * const *) member; if (ptr == NULL || ptr == field->default_value) return 0; } else { if (!has) return 0; } return required_field_get_packed_size(field, member); } static protobuf_c_boolean field_is_zeroish(const ProtobufCFieldDescriptor *field, const void *member) { protobuf_c_boolean ret = FALSE; switch (field->type) { case PROTOBUF_C_TYPE_BOOL: ret = (0 == *(const protobuf_c_boolean *) member); break; case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_SINT32: case PROTOBUF_C_TYPE_INT32: case PROTOBUF_C_TYPE_UINT32: case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: ret = (0 == *(const uint32_t *) member); break; case PROTOBUF_C_TYPE_SINT64: case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: ret = (0 == *(const uint64_t *) member); break; case PROTOBUF_C_TYPE_FLOAT: ret = (0 == *(const float *) member); break; case PROTOBUF_C_TYPE_DOUBLE: ret = (0 == *(const double *) member); break; case PROTOBUF_C_TYPE_STRING: ret = (NULL == *(const char * const *) member) || ('\0' == **(const char * const *) member); break; case PROTOBUF_C_TYPE_BYTES: case PROTOBUF_C_TYPE_MESSAGE: ret = (NULL == *(const void * const *) member); break; default: ret = TRUE; break; } return ret; } /** * Calculate the serialized size of a single unlabeled message field, including * the space needed by the preceding tag. Returns 0 if the field isn't set or * if it is set to a "zeroish" value (null pointer or 0 for numerical values). * Unlabeled fields are supported only in proto3. * * \param field * Field descriptor for member. * \param member * Field to encode. * \return * Number of bytes required. */ static size_t unlabeled_field_get_packed_size(const ProtobufCFieldDescriptor *field, const void *member) { if (field_is_zeroish(field, member)) return 0; return required_field_get_packed_size(field, member); } /** * Calculate the serialized size of repeated message fields, which may consist * of any number of values (including 0). Includes the space needed by the * preceding tags (as needed). * * \param field * Field descriptor for member. * \param count * Number of repeated field members. * \param member * Field to encode. * \return * Number of bytes required. */ static size_t repeated_field_get_packed_size(const ProtobufCFieldDescriptor *field, size_t count, const void *member) { size_t header_size; size_t rv = 0; unsigned i; void *array = *(void * const *) member; if (count == 0) return 0; header_size = get_tag_size(field->id); if (0 == (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) header_size *= count; switch (field->type) { case PROTOBUF_C_TYPE_SINT32: for (i = 0; i < count; i++) rv += sint32_size(((int32_t *) array)[i]); break; case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_INT32: for (i = 0; i < count; i++) rv += int32_size(((int32_t *) array)[i]); break; case PROTOBUF_C_TYPE_UINT32: for (i = 0; i < count; i++) rv += uint32_size(((uint32_t *) array)[i]); break; case PROTOBUF_C_TYPE_SINT64: for (i = 0; i < count; i++) rv += sint64_size(((int64_t *) array)[i]); break; case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: for (i = 0; i < count; i++) rv += uint64_size(((uint64_t *) array)[i]); break; case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: rv += 4 * count; break; case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: rv += 8 * count; break; case PROTOBUF_C_TYPE_BOOL: rv += count; break; case PROTOBUF_C_TYPE_STRING: for (i = 0; i < count; i++) { size_t len = strlen(((char **) array)[i]); rv += uint32_size(len) + len; } break; case PROTOBUF_C_TYPE_BYTES: for (i = 0; i < count; i++) { size_t len = ((ProtobufCBinaryData *) array)[i].len; rv += uint32_size(len) + len; } break; case PROTOBUF_C_TYPE_MESSAGE: for (i = 0; i < count; i++) { size_t len = protobuf_c_message_get_packed_size( ((ProtobufCMessage **) array)[i]); rv += uint32_size(len) + len; } break; } if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) header_size += uint32_size(rv); return header_size + rv; } /** * Calculate the serialized size of an unknown field, i.e. one that is passed * through mostly uninterpreted. This is required for forward compatibility if * new fields are added to the message descriptor. * * \param field * Unknown field type. * \return * Number of bytes required. */ static inline size_t unknown_field_get_packed_size(const ProtobufCMessageUnknownField *field) { return get_tag_size(field->tag) + field->len; } /**@}*/ /* * Calculate the serialized size of the message. */ size_t protobuf_c_message_get_packed_size(const ProtobufCMessage *message) { unsigned i; size_t rv = 0; ASSERT_IS_MESSAGE(message); for (i = 0; i < message->descriptor->n_fields; i++) { const ProtobufCFieldDescriptor *field = message->descriptor->fields + i; const void *member = ((const char *) message) + field->offset; const void *qmember = ((const char *) message) + field->quantifier_offset; if (field->label == PROTOBUF_C_LABEL_REQUIRED) { rv += required_field_get_packed_size(field, member); } else if ((field->label == PROTOBUF_C_LABEL_OPTIONAL || field->label == PROTOBUF_C_LABEL_NONE) && (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF))) { rv += oneof_field_get_packed_size( field, *(const uint32_t *) qmember, member ); } else if (field->label == PROTOBUF_C_LABEL_OPTIONAL) { rv += optional_field_get_packed_size( field, *(protobuf_c_boolean *) qmember, member ); } else if (field->label == PROTOBUF_C_LABEL_NONE) { rv += unlabeled_field_get_packed_size( field, member ); } else { rv += repeated_field_get_packed_size( field, *(const size_t *) qmember, member ); } } for (i = 0; i < message->n_unknown_fields; i++) rv += unknown_field_get_packed_size(&message->unknown_fields[i]); return rv; } /** * \defgroup pack protobuf_c_message_pack() implementation * * Routines mainly used by protobuf_c_message_pack(). * * \ingroup internal * @{ */ /** * Pack an unsigned 32-bit integer in base-128 varint encoding and return the * number of bytes written, which must be 5 or less. * * \param value * Value to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static inline size_t uint32_pack(uint32_t value, uint8_t *out) { unsigned rv = 0; if (value >= 0x80) { out[rv++] = value | 0x80; value >>= 7; if (value >= 0x80) { out[rv++] = value | 0x80; value >>= 7; if (value >= 0x80) { out[rv++] = value | 0x80; value >>= 7; if (value >= 0x80) { out[rv++] = value | 0x80; value >>= 7; } } } } /* assert: value<128 */ out[rv++] = value; return rv; } /** * Pack a signed 32-bit integer and return the number of bytes written. * Negative numbers are encoded as two's complement 64-bit integers. * * \param value * Value to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static inline size_t int32_pack(int32_t value, uint8_t *out) { if (value < 0) { out[0] = value | 0x80; out[1] = (value >> 7) | 0x80; out[2] = (value >> 14) | 0x80; out[3] = (value >> 21) | 0x80; out[4] = (value >> 28) | 0x80; out[5] = out[6] = out[7] = out[8] = 0xff; out[9] = 0x01; return 10; } else { return uint32_pack(value, out); } } /** * Pack a signed 32-bit integer using ZigZag encoding and return the number of * bytes written. * * \param value * Value to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static inline size_t sint32_pack(int32_t value, uint8_t *out) { return uint32_pack(zigzag32(value), out); } /** * Pack a 64-bit unsigned integer using base-128 varint encoding and return the * number of bytes written. * * \param value * Value to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static size_t uint64_pack(uint64_t value, uint8_t *out) { uint32_t hi = (uint32_t) (value >> 32); uint32_t lo = (uint32_t) value; unsigned rv; if (hi == 0) return uint32_pack((uint32_t) lo, out); out[0] = (lo) | 0x80; out[1] = (lo >> 7) | 0x80; out[2] = (lo >> 14) | 0x80; out[3] = (lo >> 21) | 0x80; if (hi < 8) { out[4] = (hi << 4) | (lo >> 28); return 5; } else { out[4] = ((hi & 7) << 4) | (lo >> 28) | 0x80; hi >>= 3; } rv = 5; while (hi >= 128) { out[rv++] = hi | 0x80; hi >>= 7; } out[rv++] = hi; return rv; } /** * Pack a 64-bit signed integer in ZigZag encoding and return the number of * bytes written. * * \param value * Value to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static inline size_t sint64_pack(int64_t value, uint8_t *out) { return uint64_pack(zigzag64(value), out); } /** * Pack a 32-bit quantity in little-endian byte order. Used for protobuf wire * types fixed32, sfixed32, float. Similar to "htole32". * * \param value * Value to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static inline size_t fixed32_pack(uint32_t value, void *out) { #if !defined(WORDS_BIGENDIAN) memcpy(out, &value, 4); #else uint8_t *buf = out; buf[0] = value; buf[1] = value >> 8; buf[2] = value >> 16; buf[3] = value >> 24; #endif return 4; } /** * Pack a 64-bit quantity in little-endian byte order. Used for protobuf wire * types fixed64, sfixed64, double. Similar to "htole64". * * \todo The big-endian impl is really only good for 32-bit machines, a 64-bit * version would be appreciated, plus a way to decide to use 64-bit math where * convenient. * * \param value * Value to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static inline size_t fixed64_pack(uint64_t value, void *out) { #if !defined(WORDS_BIGENDIAN) memcpy(out, &value, 8); #else fixed32_pack(value, out); fixed32_pack(value >> 32, ((char *) out) + 4); #endif return 8; } /** * Pack a boolean value as an integer and return the number of bytes written. * * \todo Perhaps on some platforms *out = !!value would be a better impl, b/c * that is idiomatic C++ in some STL implementations. * * \param value * Value to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static inline size_t boolean_pack(protobuf_c_boolean value, uint8_t *out) { *out = value ? TRUE : FALSE; return 1; } /** * Pack a NUL-terminated C string and return the number of bytes written. The * output includes a length delimiter. * * The NULL pointer is treated as an empty string. This isn't really necessary, * but it allows people to leave required strings blank. (See Issue #13 in the * bug tracker for a little more explanation). * * \param str * String to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static inline size_t string_pack(const char *str, uint8_t *out) { if (str == NULL) { out[0] = 0; return 1; } else { size_t len = strlen(str); size_t rv = uint32_pack(len, out); memcpy(out + rv, str, len); return rv + len; } } /** * Pack a ProtobufCBinaryData and return the number of bytes written. The output * includes a length delimiter. * * \param bd * ProtobufCBinaryData to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static inline size_t binary_data_pack(const ProtobufCBinaryData *bd, uint8_t *out) { size_t len = bd->len; size_t rv = uint32_pack(len, out); memcpy(out + rv, bd->data, len); return rv + len; } /** * Pack a ProtobufCMessage and return the number of bytes written. The output * includes a length delimiter. * * \param message * ProtobufCMessage object to pack. * \param[out] out * Packed message. * \return * Number of bytes written to `out`. */ static inline size_t prefixed_message_pack(const ProtobufCMessage *message, uint8_t *out) { if (message == NULL) { out[0] = 0; return 1; } else { size_t rv = protobuf_c_message_pack(message, out + 1); uint32_t rv_packed_size = uint32_size(rv); if (rv_packed_size != 1) memmove(out + rv_packed_size, out + 1, rv); return uint32_pack(rv, out) + rv; } } /** * Pack a field tag. * * Wire-type will be added in required_field_pack(). * * \todo Just call uint64_pack on 64-bit platforms. * * \param id * Tag value to encode. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static size_t tag_pack(uint32_t id, uint8_t *out) { if (id < (1UL << (32 - 3))) return uint32_pack(id << 3, out); else return uint64_pack(((uint64_t) id) << 3, out); } /** * Pack a required field and return the number of bytes written. * * \param field * Field descriptor. * \param member * The field member. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static size_t required_field_pack(const ProtobufCFieldDescriptor *field, const void *member, uint8_t *out) { size_t rv = tag_pack(field->id, out); switch (field->type) { case PROTOBUF_C_TYPE_SINT32: out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; return rv + sint32_pack(*(const int32_t *) member, out + rv); case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_INT32: out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; return rv + int32_pack(*(const int32_t *) member, out + rv); case PROTOBUF_C_TYPE_UINT32: out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; return rv + uint32_pack(*(const uint32_t *) member, out + rv); case PROTOBUF_C_TYPE_SINT64: out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; return rv + sint64_pack(*(const int64_t *) member, out + rv); case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; return rv + uint64_pack(*(const uint64_t *) member, out + rv); case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: out[0] |= PROTOBUF_C_WIRE_TYPE_32BIT; return rv + fixed32_pack(*(const uint32_t *) member, out + rv); case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: out[0] |= PROTOBUF_C_WIRE_TYPE_64BIT; return rv + fixed64_pack(*(const uint64_t *) member, out + rv); case PROTOBUF_C_TYPE_BOOL: out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; return rv + boolean_pack(*(const protobuf_c_boolean *) member, out + rv); case PROTOBUF_C_TYPE_STRING: out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; return rv + string_pack(*(char *const *) member, out + rv); case PROTOBUF_C_TYPE_BYTES: out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; return rv + binary_data_pack((const ProtobufCBinaryData *) member, out + rv); case PROTOBUF_C_TYPE_MESSAGE: out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; return rv + prefixed_message_pack(*(ProtobufCMessage * const *) member, out + rv); } PROTOBUF_C__ASSERT_NOT_REACHED(); return 0; } /** * Pack a oneof field and return the number of bytes written. Only packs the * field that is selected by the case enum. * * \param field * Field descriptor. * \param oneof_case * Enum value that selects the field in the oneof. * \param member * The field member. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static size_t oneof_field_pack(const ProtobufCFieldDescriptor *field, uint32_t oneof_case, const void *member, uint8_t *out) { if (oneof_case != field->id) { return 0; } if (field->type == PROTOBUF_C_TYPE_MESSAGE || field->type == PROTOBUF_C_TYPE_STRING) { const void *ptr = *(const void * const *) member; if (ptr == NULL || ptr == field->default_value) return 0; } return required_field_pack(field, member, out); } /** * Pack an optional field and return the number of bytes written. * * \param field * Field descriptor. * \param has * Whether the field is set. * \param member * The field member. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static size_t optional_field_pack(const ProtobufCFieldDescriptor *field, const protobuf_c_boolean has, const void *member, uint8_t *out) { if (field->type == PROTOBUF_C_TYPE_MESSAGE || field->type == PROTOBUF_C_TYPE_STRING) { const void *ptr = *(const void * const *) member; if (ptr == NULL || ptr == field->default_value) return 0; } else { if (!has) return 0; } return required_field_pack(field, member, out); } /** * Pack an unlabeled field and return the number of bytes written. * * \param field * Field descriptor. * \param member * The field member. * \param[out] out * Packed value. * \return * Number of bytes written to `out`. */ static size_t unlabeled_field_pack(const ProtobufCFieldDescriptor *field, const void *member, uint8_t *out) { if (field_is_zeroish(field, member)) return 0; return required_field_pack(field, member, out); } /** * Given a field type, return the in-memory size. * * \todo Implement as a table lookup. * * \param type * Field type. * \return * Size of the field. */ static inline size_t sizeof_elt_in_repeated_array(ProtobufCType type) { switch (type) { case PROTOBUF_C_TYPE_SINT32: case PROTOBUF_C_TYPE_INT32: case PROTOBUF_C_TYPE_UINT32: case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: case PROTOBUF_C_TYPE_ENUM: return 4; case PROTOBUF_C_TYPE_SINT64: case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: return 8; case PROTOBUF_C_TYPE_BOOL: return sizeof(protobuf_c_boolean); case PROTOBUF_C_TYPE_STRING: case PROTOBUF_C_TYPE_MESSAGE: return sizeof(void *); case PROTOBUF_C_TYPE_BYTES: return sizeof(ProtobufCBinaryData); } PROTOBUF_C__ASSERT_NOT_REACHED(); return 0; } /** * Pack an array of 32-bit quantities. * * \param[out] out * Destination. * \param[in] in * Source. * \param[in] n * Number of elements in the source array. */ static void copy_to_little_endian_32(void *out, const void *in, const unsigned n) { #if !defined(WORDS_BIGENDIAN) memcpy(out, in, n * 4); #else unsigned i; const uint32_t *ini = in; for (i = 0; i < n; i++) fixed32_pack(ini[i], (uint32_t *) out + i); #endif } /** * Pack an array of 64-bit quantities. * * \param[out] out * Destination. * \param[in] in * Source. * \param[in] n * Number of elements in the source array. */ static void copy_to_little_endian_64(void *out, const void *in, const unsigned n) { #if !defined(WORDS_BIGENDIAN) memcpy(out, in, n * 8); #else unsigned i; const uint64_t *ini = in; for (i = 0; i < n; i++) fixed64_pack(ini[i], (uint64_t *) out + i); #endif } /** * Get the minimum number of bytes required to pack a field value of a * particular type. * * \param type * Field type. * \return * Number of bytes. */ static unsigned get_type_min_size(ProtobufCType type) { if (type == PROTOBUF_C_TYPE_SFIXED32 || type == PROTOBUF_C_TYPE_FIXED32 || type == PROTOBUF_C_TYPE_FLOAT) { return 4; } if (type == PROTOBUF_C_TYPE_SFIXED64 || type == PROTOBUF_C_TYPE_FIXED64 || type == PROTOBUF_C_TYPE_DOUBLE) { return 8; } return 1; } /** * Packs the elements of a repeated field and returns the serialised field and * its length. * * \param field * Field descriptor. * \param count * Number of elements in the repeated field array. * \param member * Pointer to the elements for this repeated field. * \param[out] out * Serialised representation of the repeated field. * \return * Number of bytes serialised to `out`. */ static size_t repeated_field_pack(const ProtobufCFieldDescriptor *field, size_t count, const void *member, uint8_t *out) { void *array = *(void * const *) member; unsigned i; if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) { unsigned header_len; unsigned len_start; unsigned min_length; unsigned payload_len; unsigned length_size_min; unsigned actual_length_size; uint8_t *payload_at; if (count == 0) return 0; header_len = tag_pack(field->id, out); out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; len_start = header_len; min_length = get_type_min_size(field->type) * count; length_size_min = uint32_size(min_length); header_len += length_size_min; payload_at = out + header_len; switch (field->type) { case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: copy_to_little_endian_32(payload_at, array, count); payload_at += count * 4; break; case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: copy_to_little_endian_64(payload_at, array, count); payload_at += count * 8; break; case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_INT32: { const int32_t *arr = (const int32_t *) array; for (i = 0; i < count; i++) payload_at += int32_pack(arr[i], payload_at); break; } case PROTOBUF_C_TYPE_SINT32: { const int32_t *arr = (const int32_t *) array; for (i = 0; i < count; i++) payload_at += sint32_pack(arr[i], payload_at); break; } case PROTOBUF_C_TYPE_SINT64: { const int64_t *arr = (const int64_t *) array; for (i = 0; i < count; i++) payload_at += sint64_pack(arr[i], payload_at); break; } case PROTOBUF_C_TYPE_UINT32: { const uint32_t *arr = (const uint32_t *) array; for (i = 0; i < count; i++) payload_at += uint32_pack(arr[i], payload_at); break; } case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: { const uint64_t *arr = (const uint64_t *) array; for (i = 0; i < count; i++) payload_at += uint64_pack(arr[i], payload_at); break; } case PROTOBUF_C_TYPE_BOOL: { const protobuf_c_boolean *arr = (const protobuf_c_boolean *) array; for (i = 0; i < count; i++) payload_at += boolean_pack(arr[i], payload_at); break; } default: PROTOBUF_C__ASSERT_NOT_REACHED(); } payload_len = payload_at - (out + header_len); actual_length_size = uint32_size(payload_len); if (length_size_min != actual_length_size) { assert(actual_length_size == length_size_min + 1); memmove(out + header_len + 1, out + header_len, payload_len); header_len++; } uint32_pack(payload_len, out + len_start); return header_len + payload_len; } else { /* not "packed" cased */ /* CONSIDER: optimize this case a bit (by putting the loop inside the switch) */ size_t rv = 0; unsigned siz = sizeof_elt_in_repeated_array(field->type); for (i = 0; i < count; i++) { rv += required_field_pack(field, array, out + rv); array = (char *)array + siz; } return rv; } } static size_t unknown_field_pack(const ProtobufCMessageUnknownField *field, uint8_t *out) { size_t rv = tag_pack(field->tag, out); out[0] |= field->wire_type; memcpy(out + rv, field->data, field->len); return rv + field->len; } /**@}*/ size_t protobuf_c_message_pack(const ProtobufCMessage *message, uint8_t *out) { unsigned i; size_t rv = 0; ASSERT_IS_MESSAGE(message); for (i = 0; i < message->descriptor->n_fields; i++) { const ProtobufCFieldDescriptor *field = message->descriptor->fields + i; const void *member = ((const char *) message) + field->offset; /* * It doesn't hurt to compute qmember (a pointer to the * quantifier field of the structure), but the pointer is only * valid if the field is: * - a repeated field, or * - a field that is part of a oneof * - an optional field that isn't a pointer type * (Meaning: not a message or a string). */ const void *qmember = ((const char *) message) + field->quantifier_offset; if (field->label == PROTOBUF_C_LABEL_REQUIRED) { rv += required_field_pack(field, member, out + rv); } else if ((field->label == PROTOBUF_C_LABEL_OPTIONAL || field->label == PROTOBUF_C_LABEL_NONE) && (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF))) { rv += oneof_field_pack( field, *(const uint32_t *) qmember, member, out + rv ); } else if (field->label == PROTOBUF_C_LABEL_OPTIONAL) { rv += optional_field_pack( field, *(const protobuf_c_boolean *) qmember, member, out + rv ); } else if (field->label == PROTOBUF_C_LABEL_NONE) { rv += unlabeled_field_pack(field, member, out + rv); } else { rv += repeated_field_pack(field, *(const size_t *) qmember, member, out + rv); } } for (i = 0; i < message->n_unknown_fields; i++) rv += unknown_field_pack(&message->unknown_fields[i], out + rv); return rv; } /** * \defgroup packbuf protobuf_c_message_pack_to_buffer() implementation * * Routines mainly used by protobuf_c_message_pack_to_buffer(). * * \ingroup internal * @{ */ /** * Pack a required field to a virtual buffer. * * \param field * Field descriptor. * \param member * The element to be packed. * \param[out] buffer * Virtual buffer to append data to. * \return * Number of bytes packed. */ static size_t required_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, const void *member, ProtobufCBuffer *buffer) { size_t rv; uint8_t scratch[MAX_UINT64_ENCODED_SIZE * 2]; rv = tag_pack(field->id, scratch); switch (field->type) { case PROTOBUF_C_TYPE_SINT32: scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; rv += sint32_pack(*(const int32_t *) member, scratch + rv); buffer->append(buffer, rv, scratch); break; case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_INT32: scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; rv += int32_pack(*(const int32_t *) member, scratch + rv); buffer->append(buffer, rv, scratch); break; case PROTOBUF_C_TYPE_UINT32: scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; rv += uint32_pack(*(const uint32_t *) member, scratch + rv); buffer->append(buffer, rv, scratch); break; case PROTOBUF_C_TYPE_SINT64: scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; rv += sint64_pack(*(const int64_t *) member, scratch + rv); buffer->append(buffer, rv, scratch); break; case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; rv += uint64_pack(*(const uint64_t *) member, scratch + rv); buffer->append(buffer, rv, scratch); break; case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: scratch[0] |= PROTOBUF_C_WIRE_TYPE_32BIT; rv += fixed32_pack(*(const uint32_t *) member, scratch + rv); buffer->append(buffer, rv, scratch); break; case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: scratch[0] |= PROTOBUF_C_WIRE_TYPE_64BIT; rv += fixed64_pack(*(const uint64_t *) member, scratch + rv); buffer->append(buffer, rv, scratch); break; case PROTOBUF_C_TYPE_BOOL: scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT; rv += boolean_pack(*(const protobuf_c_boolean *) member, scratch + rv); buffer->append(buffer, rv, scratch); break; case PROTOBUF_C_TYPE_STRING: { const char *str = *(char *const *) member; size_t sublen = str ? strlen(str) : 0; scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; rv += uint32_pack(sublen, scratch + rv); buffer->append(buffer, rv, scratch); buffer->append(buffer, sublen, (const uint8_t *) str); rv += sublen; break; } case PROTOBUF_C_TYPE_BYTES: { const ProtobufCBinaryData *bd = ((const ProtobufCBinaryData *) member); size_t sublen = bd->len; scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; rv += uint32_pack(sublen, scratch + rv); buffer->append(buffer, rv, scratch); buffer->append(buffer, sublen, bd->data); rv += sublen; break; } case PROTOBUF_C_TYPE_MESSAGE: { const ProtobufCMessage *msg = *(ProtobufCMessage * const *) member; scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; if (msg == NULL) { rv += uint32_pack(0, scratch + rv); buffer->append(buffer, rv, scratch); } else { size_t sublen = protobuf_c_message_get_packed_size(msg); rv += uint32_pack(sublen, scratch + rv); buffer->append(buffer, rv, scratch); protobuf_c_message_pack_to_buffer(msg, buffer); rv += sublen; } break; } default: PROTOBUF_C__ASSERT_NOT_REACHED(); } return rv; } /** * Pack a oneof field to a buffer. Only packs the field that is selected by the case enum. * * \param field * Field descriptor. * \param oneof_case * Enum value that selects the field in the oneof. * \param member * The element to be packed. * \param[out] buffer * Virtual buffer to append data to. * \return * Number of bytes serialised to `buffer`. */ static size_t oneof_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, uint32_t oneof_case, const void *member, ProtobufCBuffer *buffer) { if (oneof_case != field->id) { return 0; } if (field->type == PROTOBUF_C_TYPE_MESSAGE || field->type == PROTOBUF_C_TYPE_STRING) { const void *ptr = *(const void *const *) member; if (ptr == NULL || ptr == field->default_value) return 0; } return required_field_pack_to_buffer(field, member, buffer); } /** * Pack an optional field to a buffer. * * \param field * Field descriptor. * \param has * Whether the field is set. * \param member * The element to be packed. * \param[out] buffer * Virtual buffer to append data to. * \return * Number of bytes serialised to `buffer`. */ static size_t optional_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, const protobuf_c_boolean has, const void *member, ProtobufCBuffer *buffer) { if (field->type == PROTOBUF_C_TYPE_MESSAGE || field->type == PROTOBUF_C_TYPE_STRING) { const void *ptr = *(const void *const *) member; if (ptr == NULL || ptr == field->default_value) return 0; } else { if (!has) return 0; } return required_field_pack_to_buffer(field, member, buffer); } /** * Pack an unlabeled field to a buffer. * * \param field * Field descriptor. * \param member * The element to be packed. * \param[out] buffer * Virtual buffer to append data to. * \return * Number of bytes serialised to `buffer`. */ static size_t unlabeled_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, const void *member, ProtobufCBuffer *buffer) { if (field_is_zeroish(field, member)) return 0; return required_field_pack_to_buffer(field, member, buffer); } /** * Get the packed size of an array of same field type. * * \param field * Field descriptor. * \param count * Number of elements of this type. * \param array * The elements to get the size of. * \return * Number of bytes required. */ static size_t get_packed_payload_length(const ProtobufCFieldDescriptor *field, unsigned count, const void *array) { unsigned rv = 0; unsigned i; switch (field->type) { case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: return count * 4; case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: return count * 8; case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_INT32: { const int32_t *arr = (const int32_t *) array; for (i = 0; i < count; i++) rv += int32_size(arr[i]); break; } case PROTOBUF_C_TYPE_SINT32: { const int32_t *arr = (const int32_t *) array; for (i = 0; i < count; i++) rv += sint32_size(arr[i]); break; } case PROTOBUF_C_TYPE_UINT32: { const uint32_t *arr = (const uint32_t *) array; for (i = 0; i < count; i++) rv += uint32_size(arr[i]); break; } case PROTOBUF_C_TYPE_SINT64: { const int64_t *arr = (const int64_t *) array; for (i = 0; i < count; i++) rv += sint64_size(arr[i]); break; } case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: { const uint64_t *arr = (const uint64_t *) array; for (i = 0; i < count; i++) rv += uint64_size(arr[i]); break; } case PROTOBUF_C_TYPE_BOOL: return count; default: PROTOBUF_C__ASSERT_NOT_REACHED(); } return rv; } /** * Pack an array of same field type to a virtual buffer. * * \param field * Field descriptor. * \param count * Number of elements of this type. * \param array * The elements to get the size of. * \param[out] buffer * Virtual buffer to append data to. * \return * Number of bytes packed. */ static size_t pack_buffer_packed_payload(const ProtobufCFieldDescriptor *field, unsigned count, const void *array, ProtobufCBuffer *buffer) { uint8_t scratch[16]; size_t rv = 0; unsigned i; switch (field->type) { case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: #if !defined(WORDS_BIGENDIAN) rv = count * 4; goto no_packing_needed; #else for (i = 0; i < count; i++) { unsigned len = fixed32_pack(((uint32_t *) array)[i], scratch); buffer->append(buffer, len, scratch); rv += len; } break; #endif case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: #if !defined(WORDS_BIGENDIAN) rv = count * 8; goto no_packing_needed; #else for (i = 0; i < count; i++) { unsigned len = fixed64_pack(((uint64_t *) array)[i], scratch); buffer->append(buffer, len, scratch); rv += len; } break; #endif case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_INT32: for (i = 0; i < count; i++) { unsigned len = int32_pack(((int32_t *) array)[i], scratch); buffer->append(buffer, len, scratch); rv += len; } break; case PROTOBUF_C_TYPE_SINT32: for (i = 0; i < count; i++) { unsigned len = sint32_pack(((int32_t *) array)[i], scratch); buffer->append(buffer, len, scratch); rv += len; } break; case PROTOBUF_C_TYPE_UINT32: for (i = 0; i < count; i++) { unsigned len = uint32_pack(((uint32_t *) array)[i], scratch); buffer->append(buffer, len, scratch); rv += len; } break; case PROTOBUF_C_TYPE_SINT64: for (i = 0; i < count; i++) { unsigned len = sint64_pack(((int64_t *) array)[i], scratch); buffer->append(buffer, len, scratch); rv += len; } break; case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: for (i = 0; i < count; i++) { unsigned len = uint64_pack(((uint64_t *) array)[i], scratch); buffer->append(buffer, len, scratch); rv += len; } break; case PROTOBUF_C_TYPE_BOOL: for (i = 0; i < count; i++) { unsigned len = boolean_pack(((protobuf_c_boolean *) array)[i], scratch); buffer->append(buffer, len, scratch); rv += len; } return count; default: PROTOBUF_C__ASSERT_NOT_REACHED(); } return rv; #if !defined(WORDS_BIGENDIAN) no_packing_needed: buffer->append(buffer, rv, array); return rv; #endif } static size_t repeated_field_pack_to_buffer(const ProtobufCFieldDescriptor *field, unsigned count, const void *member, ProtobufCBuffer *buffer) { char *array = *(char * const *) member; if (count == 0) return 0; if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED)) { uint8_t scratch[MAX_UINT64_ENCODED_SIZE * 2]; size_t rv = tag_pack(field->id, scratch); size_t payload_len = get_packed_payload_length(field, count, array); size_t tmp; scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED; rv += uint32_pack(payload_len, scratch + rv); buffer->append(buffer, rv, scratch); tmp = pack_buffer_packed_payload(field, count, array, buffer); assert(tmp == payload_len); return rv + payload_len; } else { size_t siz; unsigned i; /* CONSIDER: optimize this case a bit (by putting the loop inside the switch) */ unsigned rv = 0; siz = sizeof_elt_in_repeated_array(field->type); for (i = 0; i < count; i++) { rv += required_field_pack_to_buffer(field, array, buffer); array += siz; } return rv; } } static size_t unknown_field_pack_to_buffer(const ProtobufCMessageUnknownField *field, ProtobufCBuffer *buffer) { uint8_t header[MAX_UINT64_ENCODED_SIZE]; size_t rv = tag_pack(field->tag, header); header[0] |= field->wire_type; buffer->append(buffer, rv, header); buffer->append(buffer, field->len, field->data); return rv + field->len; } /**@}*/ size_t protobuf_c_message_pack_to_buffer(const ProtobufCMessage *message, ProtobufCBuffer *buffer) { unsigned i; size_t rv = 0; ASSERT_IS_MESSAGE(message); for (i = 0; i < message->descriptor->n_fields; i++) { const ProtobufCFieldDescriptor *field = message->descriptor->fields + i; const void *member = ((const char *) message) + field->offset; const void *qmember = ((const char *) message) + field->quantifier_offset; if (field->label == PROTOBUF_C_LABEL_REQUIRED) { rv += required_field_pack_to_buffer(field, member, buffer); } else if ((field->label == PROTOBUF_C_LABEL_OPTIONAL || field->label == PROTOBUF_C_LABEL_NONE) && (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF))) { rv += oneof_field_pack_to_buffer( field, *(const uint32_t *) qmember, member, buffer ); } else if (field->label == PROTOBUF_C_LABEL_OPTIONAL) { rv += optional_field_pack_to_buffer( field, *(const protobuf_c_boolean *) qmember, member, buffer ); } else if (field->label == PROTOBUF_C_LABEL_NONE) { rv += unlabeled_field_pack_to_buffer( field, member, buffer ); } else { rv += repeated_field_pack_to_buffer( field, *(const size_t *) qmember, member, buffer ); } } for (i = 0; i < message->n_unknown_fields; i++) rv += unknown_field_pack_to_buffer(&message->unknown_fields[i], buffer); return rv; } /** * \defgroup unpack unpacking implementation * * Routines mainly used by the unpacking functions. * * \ingroup internal * @{ */ static inline int int_range_lookup(unsigned n_ranges, const ProtobufCIntRange *ranges, int value) { unsigned n; unsigned start; if (n_ranges == 0) return -1; start = 0; n = n_ranges; while (n > 1) { unsigned mid = start + n / 2; if (value < ranges[mid].start_value) { n = mid - start; } else if (value >= ranges[mid].start_value + (int) (ranges[mid + 1].orig_index - ranges[mid].orig_index)) { unsigned new_start = mid + 1; n = start + n - new_start; start = new_start; } else return (value - ranges[mid].start_value) + ranges[mid].orig_index; } if (n > 0) { unsigned start_orig_index = ranges[start].orig_index; unsigned range_size = ranges[start + 1].orig_index - start_orig_index; if (ranges[start].start_value <= value && value < (int) (ranges[start].start_value + range_size)) { return (value - ranges[start].start_value) + start_orig_index; } } return -1; } static size_t parse_tag_and_wiretype(size_t len, const uint8_t *data, uint32_t *tag_out, uint8_t *wiretype_out) { unsigned max_rv = len > 5 ? 5 : len; uint32_t tag = (data[0] & 0x7f) >> 3; unsigned shift = 4; unsigned rv; /* 0 is not a valid tag value */ if ((data[0] & 0xf8) == 0) { return 0; } *wiretype_out = data[0] & 7; if ((data[0] & 0x80) == 0) { *tag_out = tag; return 1; } for (rv = 1; rv < max_rv; rv++) { if (data[rv] & 0x80) { tag |= (data[rv] & 0x7f) << shift; shift += 7; } else { tag |= data[rv] << shift; *tag_out = tag; return rv + 1; } } return 0; /* error: bad header */ } /* sizeof(ScannedMember) must be <= (1UL< INT_MAX) { // Protobuf messages should always be less than 2 GiB in size. // We also want to return early here so that hdr_len + val does // not overflow on 32-bit systems. PROTOBUF_C_UNPACK_ERROR("length prefix of %lu is too large", (unsigned long int)val); return 0; } if (hdr_len + val > len) { PROTOBUF_C_UNPACK_ERROR("data too short after length-prefix of %lu", (unsigned long int)val); return 0; } return hdr_len + val; } static size_t max_b128_numbers(size_t len, const uint8_t *data) { size_t rv = 0; while (len--) if ((*data++ & 0x80) == 0) ++rv; return rv; } /**@}*/ /** * Merge earlier message into a latter message. * * For numeric types and strings, if the same value appears multiple * times, the parser accepts the last value it sees. For embedded * message fields, the parser merges multiple instances of the same * field. That is, all singular scalar fields in the latter instance * replace those in the former, singular embedded messages are merged, * and repeated fields are concatenated. * * The earlier message should be freed after calling this function, as * some of its fields may have been reused and changed to their default * values during the merge. */ static protobuf_c_boolean merge_messages(ProtobufCMessage *earlier_msg, ProtobufCMessage *latter_msg, ProtobufCAllocator *allocator) { unsigned i; const ProtobufCFieldDescriptor *fields = latter_msg->descriptor->fields; for (i = 0; i < latter_msg->descriptor->n_fields; i++) { if (fields[i].label == PROTOBUF_C_LABEL_REPEATED) { size_t *n_earlier = STRUCT_MEMBER_PTR(size_t, earlier_msg, fields[i].quantifier_offset); uint8_t **p_earlier = STRUCT_MEMBER_PTR(uint8_t *, earlier_msg, fields[i].offset); size_t *n_latter = STRUCT_MEMBER_PTR(size_t, latter_msg, fields[i].quantifier_offset); uint8_t **p_latter = STRUCT_MEMBER_PTR(uint8_t *, latter_msg, fields[i].offset); if (*n_earlier > 0) { if (*n_latter > 0) { /* Concatenate the repeated field */ size_t el_size = sizeof_elt_in_repeated_array(fields[i].type); uint8_t *new_field; new_field = do_alloc(allocator, (*n_earlier + *n_latter) * el_size); if (!new_field) return FALSE; memcpy(new_field, *p_earlier, *n_earlier * el_size); memcpy(new_field + *n_earlier * el_size, *p_latter, *n_latter * el_size); do_free(allocator, *p_latter); do_free(allocator, *p_earlier); *p_latter = new_field; *n_latter = *n_earlier + *n_latter; } else { /* Zero copy the repeated field from the earlier message */ *n_latter = *n_earlier; *p_latter = *p_earlier; } /* Make sure the field does not get double freed */ *n_earlier = 0; *p_earlier = 0; } } else if (fields[i].label == PROTOBUF_C_LABEL_OPTIONAL || fields[i].label == PROTOBUF_C_LABEL_NONE) { const ProtobufCFieldDescriptor *field; uint32_t *earlier_case_p = STRUCT_MEMBER_PTR(uint32_t, earlier_msg, fields[i]. quantifier_offset); uint32_t *latter_case_p = STRUCT_MEMBER_PTR(uint32_t, latter_msg, fields[i]. quantifier_offset); protobuf_c_boolean need_to_merge = FALSE; void *earlier_elem; void *latter_elem; const void *def_val; if (fields[i].flags & PROTOBUF_C_FIELD_FLAG_ONEOF) { if (*latter_case_p == 0) { /* lookup correct oneof field */ int field_index = int_range_lookup( latter_msg->descriptor ->n_field_ranges, latter_msg->descriptor ->field_ranges, *earlier_case_p); if (field_index < 0) return FALSE; field = latter_msg->descriptor->fields + field_index; } else { /* Oneof is present in the latter message, move on */ continue; } } else { field = &fields[i]; } earlier_elem = STRUCT_MEMBER_P(earlier_msg, field->offset); latter_elem = STRUCT_MEMBER_P(latter_msg, field->offset); def_val = field->default_value; switch (field->type) { case PROTOBUF_C_TYPE_MESSAGE: { ProtobufCMessage *em = *(ProtobufCMessage **) earlier_elem; ProtobufCMessage *lm = *(ProtobufCMessage **) latter_elem; if (em != NULL) { if (lm != NULL) { if (!merge_messages(em, lm, allocator)) return FALSE; /* Already merged */ need_to_merge = FALSE; } else { /* Zero copy the message */ need_to_merge = TRUE; } } break; } case PROTOBUF_C_TYPE_BYTES: { uint8_t *e_data = ((ProtobufCBinaryData *) earlier_elem)->data; uint8_t *l_data = ((ProtobufCBinaryData *) latter_elem)->data; const ProtobufCBinaryData *d_bd = (ProtobufCBinaryData *) def_val; need_to_merge = (e_data != NULL && (d_bd == NULL || e_data != d_bd->data)) && (l_data == NULL || (d_bd != NULL && l_data == d_bd->data)); break; } case PROTOBUF_C_TYPE_STRING: { char *e_str = *(char **) earlier_elem; char *l_str = *(char **) latter_elem; const char *d_str = def_val; need_to_merge = e_str != d_str && l_str == d_str; break; } default: { /* Could be has field or case enum, the logic is * equivalent, since 0 (FALSE) means not set for * oneof */ need_to_merge = (*earlier_case_p != 0) && (*latter_case_p == 0); break; } } if (need_to_merge) { size_t el_size = sizeof_elt_in_repeated_array(field->type); memcpy(latter_elem, earlier_elem, el_size); /* * Reset the element from the old message to 0 * to make sure earlier message deallocation * doesn't corrupt zero-copied data in the new * message, earlier message will be freed after * this function is called anyway */ memset(earlier_elem, 0, el_size); if (field->quantifier_offset != 0) { /* Set the has field or the case enum, * if applicable */ *latter_case_p = *earlier_case_p; *earlier_case_p = 0; } } } } return TRUE; } /** * Count packed elements. * * Given a raw slab of packed-repeated values, determine the number of * elements. This function detects certain kinds of errors but not * others; the remaining error checking is done by * parse_packed_repeated_member(). */ static protobuf_c_boolean count_packed_elements(ProtobufCType type, size_t len, const uint8_t *data, size_t *count_out) { switch (type) { case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: if (len % 4 != 0) { PROTOBUF_C_UNPACK_ERROR("length must be a multiple of 4 for fixed-length 32-bit types"); return FALSE; } *count_out = len / 4; return TRUE; case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: if (len % 8 != 0) { PROTOBUF_C_UNPACK_ERROR("length must be a multiple of 8 for fixed-length 64-bit types"); return FALSE; } *count_out = len / 8; return TRUE; case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_INT32: case PROTOBUF_C_TYPE_SINT32: case PROTOBUF_C_TYPE_UINT32: case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_SINT64: case PROTOBUF_C_TYPE_UINT64: *count_out = max_b128_numbers(len, data); return TRUE; case PROTOBUF_C_TYPE_BOOL: *count_out = len; return TRUE; case PROTOBUF_C_TYPE_STRING: case PROTOBUF_C_TYPE_BYTES: case PROTOBUF_C_TYPE_MESSAGE: default: PROTOBUF_C_UNPACK_ERROR("bad protobuf-c type %u for packed-repeated", type); return FALSE; } } static inline uint32_t parse_uint32(unsigned len, const uint8_t *data) { uint32_t rv = data[0] & 0x7f; if (len > 1) { rv |= ((uint32_t) (data[1] & 0x7f) << 7); if (len > 2) { rv |= ((uint32_t) (data[2] & 0x7f) << 14); if (len > 3) { rv |= ((uint32_t) (data[3] & 0x7f) << 21); if (len > 4) rv |= ((uint32_t) (data[4]) << 28); } } } return rv; } static inline uint32_t parse_int32(unsigned len, const uint8_t *data) { return parse_uint32(len, data); } static inline int32_t unzigzag32(uint32_t v) { // Note: Using unsigned types prevents undefined behavior return (int32_t)((v >> 1) ^ (~(v & 1) + 1)); } static inline uint32_t parse_fixed_uint32(const uint8_t *data) { #if !defined(WORDS_BIGENDIAN) uint32_t t; memcpy(&t, data, 4); return t; #else return data[0] | ((uint32_t) (data[1]) << 8) | ((uint32_t) (data[2]) << 16) | ((uint32_t) (data[3]) << 24); #endif } static uint64_t parse_uint64(unsigned len, const uint8_t *data) { unsigned shift, i; uint64_t rv; if (len < 5) return parse_uint32(len, data); rv = ((uint64_t) (data[0] & 0x7f)) | ((uint64_t) (data[1] & 0x7f) << 7) | ((uint64_t) (data[2] & 0x7f) << 14) | ((uint64_t) (data[3] & 0x7f) << 21); shift = 28; for (i = 4; i < len; i++) { rv |= (((uint64_t) (data[i] & 0x7f)) << shift); shift += 7; } return rv; } static inline int64_t unzigzag64(uint64_t v) { // Note: Using unsigned types prevents undefined behavior return (int64_t)((v >> 1) ^ (~(v & 1) + 1)); } static inline uint64_t parse_fixed_uint64(const uint8_t *data) { #if !defined(WORDS_BIGENDIAN) uint64_t t; memcpy(&t, data, 8); return t; #else return (uint64_t) parse_fixed_uint32(data) | (((uint64_t) parse_fixed_uint32(data + 4)) << 32); #endif } static protobuf_c_boolean parse_boolean(unsigned len, const uint8_t *data) { unsigned i; for (i = 0; i < len; i++) if (data[i] & 0x7f) return TRUE; return FALSE; } static protobuf_c_boolean parse_required_member(ScannedMember *scanned_member, void *member, ProtobufCAllocator *allocator, protobuf_c_boolean maybe_clear) { unsigned len = scanned_member->len; const uint8_t *data = scanned_member->data; uint8_t wire_type = scanned_member->wire_type; switch (scanned_member->field->type) { case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_INT32: if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) return FALSE; *(int32_t *) member = parse_int32(len, data); return TRUE; case PROTOBUF_C_TYPE_UINT32: if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) return FALSE; *(uint32_t *) member = parse_uint32(len, data); return TRUE; case PROTOBUF_C_TYPE_SINT32: if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) return FALSE; *(int32_t *) member = unzigzag32(parse_uint32(len, data)); return TRUE; case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: if (wire_type != PROTOBUF_C_WIRE_TYPE_32BIT) return FALSE; *(uint32_t *) member = parse_fixed_uint32(data); return TRUE; case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) return FALSE; *(uint64_t *) member = parse_uint64(len, data); return TRUE; case PROTOBUF_C_TYPE_SINT64: if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT) return FALSE; *(int64_t *) member = unzigzag64(parse_uint64(len, data)); return TRUE; case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: if (wire_type != PROTOBUF_C_WIRE_TYPE_64BIT) return FALSE; *(uint64_t *) member = parse_fixed_uint64(data); return TRUE; case PROTOBUF_C_TYPE_BOOL: *(protobuf_c_boolean *) member = parse_boolean(len, data); return TRUE; case PROTOBUF_C_TYPE_STRING: { char **pstr = member; unsigned pref_len = scanned_member->length_prefix_len; if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED) return FALSE; if (maybe_clear && *pstr != NULL) { const char *def = scanned_member->field->default_value; if (*pstr != NULL && *pstr != def) do_free(allocator, *pstr); } *pstr = do_alloc(allocator, len - pref_len + 1); if (*pstr == NULL) return FALSE; memcpy(*pstr, data + pref_len, len - pref_len); (*pstr)[len - pref_len] = 0; return TRUE; } case PROTOBUF_C_TYPE_BYTES: { ProtobufCBinaryData *bd = member; const ProtobufCBinaryData *def_bd; unsigned pref_len = scanned_member->length_prefix_len; if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED) return FALSE; def_bd = scanned_member->field->default_value; if (maybe_clear && bd->data != NULL && (def_bd == NULL || bd->data != def_bd->data)) { do_free(allocator, bd->data); } if (len > pref_len) { bd->data = do_alloc(allocator, len - pref_len); if (bd->data == NULL) return FALSE; memcpy(bd->data, data + pref_len, len - pref_len); } else { bd->data = NULL; } bd->len = len - pref_len; return TRUE; } case PROTOBUF_C_TYPE_MESSAGE: { ProtobufCMessage **pmessage = member; ProtobufCMessage *subm; const ProtobufCMessage *def_mess; protobuf_c_boolean merge_successful = TRUE; unsigned pref_len = scanned_member->length_prefix_len; if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED) return FALSE; def_mess = scanned_member->field->default_value; subm = protobuf_c_message_unpack(scanned_member->field->descriptor, allocator, len - pref_len, data + pref_len); if (maybe_clear && *pmessage != NULL && *pmessage != def_mess) { if (subm != NULL) merge_successful = merge_messages(*pmessage, subm, allocator); /* Delete the previous message */ protobuf_c_message_free_unpacked(*pmessage, allocator); } *pmessage = subm; if (subm == NULL || !merge_successful) return FALSE; return TRUE; } } return FALSE; } static protobuf_c_boolean parse_oneof_member (ScannedMember *scanned_member, void *member, ProtobufCMessage *message, ProtobufCAllocator *allocator) { uint32_t *oneof_case = STRUCT_MEMBER_PTR(uint32_t, message, scanned_member->field->quantifier_offset); /* If we have already parsed a member of this oneof, free it. */ if (*oneof_case != 0) { const ProtobufCFieldDescriptor *old_field; size_t el_size; /* lookup field */ int field_index = int_range_lookup(message->descriptor->n_field_ranges, message->descriptor->field_ranges, *oneof_case); if (field_index < 0) return FALSE; old_field = message->descriptor->fields + field_index; el_size = sizeof_elt_in_repeated_array(old_field->type); switch (old_field->type) { case PROTOBUF_C_TYPE_STRING: { char **pstr = member; const char *def = old_field->default_value; if (*pstr != NULL && *pstr != def) do_free(allocator, *pstr); break; } case PROTOBUF_C_TYPE_BYTES: { ProtobufCBinaryData *bd = member; const ProtobufCBinaryData *def_bd = old_field->default_value; if (bd->data != NULL && (def_bd == NULL || bd->data != def_bd->data)) { do_free(allocator, bd->data); } break; } case PROTOBUF_C_TYPE_MESSAGE: { ProtobufCMessage **pmessage = member; const ProtobufCMessage *def_mess = old_field->default_value; if (*pmessage != NULL && *pmessage != def_mess) protobuf_c_message_free_unpacked(*pmessage, allocator); break; } default: break; } memset (member, 0, el_size); } if (!parse_required_member (scanned_member, member, allocator, TRUE)) return FALSE; *oneof_case = scanned_member->tag; return TRUE; } static protobuf_c_boolean parse_optional_member(ScannedMember *scanned_member, void *member, ProtobufCMessage *message, ProtobufCAllocator *allocator) { if (!parse_required_member(scanned_member, member, allocator, TRUE)) return FALSE; if (scanned_member->field->quantifier_offset != 0) STRUCT_MEMBER(protobuf_c_boolean, message, scanned_member->field->quantifier_offset) = TRUE; return TRUE; } static protobuf_c_boolean parse_repeated_member(ScannedMember *scanned_member, void *member, ProtobufCMessage *message, ProtobufCAllocator *allocator) { const ProtobufCFieldDescriptor *field = scanned_member->field; size_t *p_n = STRUCT_MEMBER_PTR(size_t, message, field->quantifier_offset); size_t siz = sizeof_elt_in_repeated_array(field->type); char *array = *(char **) member; if (!parse_required_member(scanned_member, array + siz * (*p_n), allocator, FALSE)) { return FALSE; } *p_n += 1; return TRUE; } static unsigned scan_varint(unsigned len, const uint8_t *data) { unsigned i; if (len > 10) len = 10; for (i = 0; i < len; i++) if ((data[i] & 0x80) == 0) break; if (i == len) return 0; return i + 1; } static protobuf_c_boolean parse_packed_repeated_member(ScannedMember *scanned_member, void *member, ProtobufCMessage *message) { const ProtobufCFieldDescriptor *field = scanned_member->field; size_t *p_n = STRUCT_MEMBER_PTR(size_t, message, field->quantifier_offset); size_t siz = sizeof_elt_in_repeated_array(field->type); void *array = *(char **) member + siz * (*p_n); const uint8_t *at = scanned_member->data + scanned_member->length_prefix_len; size_t rem = scanned_member->len - scanned_member->length_prefix_len; size_t count = 0; #if defined(WORDS_BIGENDIAN) unsigned i; #endif switch (field->type) { case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: count = (scanned_member->len - scanned_member->length_prefix_len) / 4; #if !defined(WORDS_BIGENDIAN) goto no_unpacking_needed; #else for (i = 0; i < count; i++) { ((uint32_t *) array)[i] = parse_fixed_uint32(at); at += 4; } break; #endif case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: count = (scanned_member->len - scanned_member->length_prefix_len) / 8; #if !defined(WORDS_BIGENDIAN) goto no_unpacking_needed; #else for (i = 0; i < count; i++) { ((uint64_t *) array)[i] = parse_fixed_uint64(at); at += 8; } break; #endif case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_INT32: while (rem > 0) { unsigned s = scan_varint(rem, at); if (s == 0) { PROTOBUF_C_UNPACK_ERROR("bad packed-repeated int32 value"); return FALSE; } ((int32_t *) array)[count++] = parse_int32(s, at); at += s; rem -= s; } break; case PROTOBUF_C_TYPE_SINT32: while (rem > 0) { unsigned s = scan_varint(rem, at); if (s == 0) { PROTOBUF_C_UNPACK_ERROR("bad packed-repeated sint32 value"); return FALSE; } ((int32_t *) array)[count++] = unzigzag32(parse_uint32(s, at)); at += s; rem -= s; } break; case PROTOBUF_C_TYPE_UINT32: while (rem > 0) { unsigned s = scan_varint(rem, at); if (s == 0) { PROTOBUF_C_UNPACK_ERROR("bad packed-repeated enum or uint32 value"); return FALSE; } ((uint32_t *) array)[count++] = parse_uint32(s, at); at += s; rem -= s; } break; case PROTOBUF_C_TYPE_SINT64: while (rem > 0) { unsigned s = scan_varint(rem, at); if (s == 0) { PROTOBUF_C_UNPACK_ERROR("bad packed-repeated sint64 value"); return FALSE; } ((int64_t *) array)[count++] = unzigzag64(parse_uint64(s, at)); at += s; rem -= s; } break; case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_UINT64: while (rem > 0) { unsigned s = scan_varint(rem, at); if (s == 0) { PROTOBUF_C_UNPACK_ERROR("bad packed-repeated int64/uint64 value"); return FALSE; } ((int64_t *) array)[count++] = parse_uint64(s, at); at += s; rem -= s; } break; case PROTOBUF_C_TYPE_BOOL: while (rem > 0) { unsigned s = scan_varint(rem, at); if (s == 0) { PROTOBUF_C_UNPACK_ERROR("bad packed-repeated boolean value"); return FALSE; } ((protobuf_c_boolean *) array)[count++] = parse_boolean(s, at); at += s; rem -= s; } break; default: PROTOBUF_C__ASSERT_NOT_REACHED(); } *p_n += count; return TRUE; #if !defined(WORDS_BIGENDIAN) no_unpacking_needed: memcpy(array, at, count * siz); *p_n += count; return TRUE; #endif } static protobuf_c_boolean is_packable_type(ProtobufCType type) { return type != PROTOBUF_C_TYPE_STRING && type != PROTOBUF_C_TYPE_BYTES && type != PROTOBUF_C_TYPE_MESSAGE; } static protobuf_c_boolean parse_member(ScannedMember *scanned_member, ProtobufCMessage *message, ProtobufCAllocator *allocator) { const ProtobufCFieldDescriptor *field = scanned_member->field; void *member; if (field == NULL) { ProtobufCMessageUnknownField *ufield = message->unknown_fields + (message->n_unknown_fields++); ufield->tag = scanned_member->tag; ufield->wire_type = scanned_member->wire_type; ufield->len = scanned_member->len; ufield->data = do_alloc(allocator, scanned_member->len); if (ufield->data == NULL) return FALSE; memcpy(ufield->data, scanned_member->data, ufield->len); return TRUE; } member = (char *) message + field->offset; switch (field->label) { case PROTOBUF_C_LABEL_REQUIRED: return parse_required_member(scanned_member, member, allocator, TRUE); case PROTOBUF_C_LABEL_OPTIONAL: case PROTOBUF_C_LABEL_NONE: if (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_ONEOF)) { return parse_oneof_member(scanned_member, member, message, allocator); } else { return parse_optional_member(scanned_member, member, message, allocator); } case PROTOBUF_C_LABEL_REPEATED: if (scanned_member->wire_type == PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED && (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED) || is_packable_type(field->type))) { return parse_packed_repeated_member(scanned_member, member, message); } else { return parse_repeated_member(scanned_member, member, message, allocator); } } PROTOBUF_C__ASSERT_NOT_REACHED(); return 0; } /** * Initialise messages generated by old code. * * This function is used if desc->message_init == NULL (which occurs * for old code, and which would be useful to support allocating * descriptors dynamically). */ static void message_init_generic(const ProtobufCMessageDescriptor *desc, ProtobufCMessage *message) { unsigned i; memset(message, 0, desc->sizeof_message); message->descriptor = desc; for (i = 0; i < desc->n_fields; i++) { if (desc->fields[i].default_value != NULL && desc->fields[i].label != PROTOBUF_C_LABEL_REPEATED) { void *field = STRUCT_MEMBER_P(message, desc->fields[i].offset); const void *dv = desc->fields[i].default_value; switch (desc->fields[i].type) { case PROTOBUF_C_TYPE_INT32: case PROTOBUF_C_TYPE_SINT32: case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_UINT32: case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FLOAT: case PROTOBUF_C_TYPE_ENUM: memcpy(field, dv, 4); break; case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_SINT64: case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_UINT64: case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_DOUBLE: memcpy(field, dv, 8); break; case PROTOBUF_C_TYPE_BOOL: memcpy(field, dv, sizeof(protobuf_c_boolean)); break; case PROTOBUF_C_TYPE_BYTES: memcpy(field, dv, sizeof(ProtobufCBinaryData)); break; case PROTOBUF_C_TYPE_STRING: case PROTOBUF_C_TYPE_MESSAGE: /* * The next line essentially implements a cast * from const, which is totally unavoidable. */ *(const void **) field = dv; break; } } } } /**@}*/ /* * ScannedMember slabs (an unpacking implementation detail). Before doing real * unpacking, we first scan through the elements to see how many there are (for * repeated fields), and which field to use (for non-repeated fields given * twice). * * In order to avoid allocations for small messages, we keep a stack-allocated * slab of ScannedMembers of size FIRST_SCANNED_MEMBER_SLAB_SIZE (16). After we * fill that up, we allocate each slab twice as large as the previous one. */ #define FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2 4 /* * The number of slabs, including the stack-allocated ones; choose the number so * that we would overflow if we needed a slab larger than provided. */ #define MAX_SCANNED_MEMBER_SLAB \ (sizeof(unsigned int)*8 - 1 \ - BOUND_SIZEOF_SCANNED_MEMBER_LOG2 \ - FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2) #define REQUIRED_FIELD_BITMAP_SET(index) \ (required_fields_bitmap[(index)/8] |= (1UL<<((index)%8))) #define REQUIRED_FIELD_BITMAP_IS_SET(index) \ (required_fields_bitmap[(index)/8] & (1UL<<((index)%8))) ProtobufCMessage * protobuf_c_message_unpack(const ProtobufCMessageDescriptor *desc, ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { ProtobufCMessage *rv; size_t rem = len; const uint8_t *at = data; const ProtobufCFieldDescriptor *last_field = desc->fields + 0; ScannedMember first_member_slab[1UL << FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2]; /* * scanned_member_slabs[i] is an array of arrays of ScannedMember. * The first slab (scanned_member_slabs[0] is just a pointer to * first_member_slab), above. All subsequent slabs will be allocated * using the allocator. */ ScannedMember *scanned_member_slabs[MAX_SCANNED_MEMBER_SLAB + 1]; unsigned which_slab = 0; /* the slab we are currently populating */ unsigned in_slab_index = 0; /* number of members in the slab */ size_t n_unknown = 0; unsigned f; unsigned j; unsigned i_slab; unsigned last_field_index = 0; unsigned required_fields_bitmap_len; unsigned char required_fields_bitmap_stack[16]; unsigned char *required_fields_bitmap = required_fields_bitmap_stack; protobuf_c_boolean required_fields_bitmap_alloced = FALSE; ASSERT_IS_MESSAGE_DESCRIPTOR(desc); if (allocator == NULL) allocator = &protobuf_c__allocator; rv = do_alloc(allocator, desc->sizeof_message); if (!rv) return (NULL); scanned_member_slabs[0] = first_member_slab; required_fields_bitmap_len = (desc->n_fields + 7) / 8; if (required_fields_bitmap_len > sizeof(required_fields_bitmap_stack)) { required_fields_bitmap = do_alloc(allocator, required_fields_bitmap_len); if (!required_fields_bitmap) { do_free(allocator, rv); return (NULL); } required_fields_bitmap_alloced = TRUE; } memset(required_fields_bitmap, 0, required_fields_bitmap_len); /* * Generated code always defines "message_init". However, we provide a * fallback for (1) users of old protobuf-c generated-code that do not * provide the function, and (2) descriptors constructed from some other * source (most likely, direct construction from the .proto file). */ if (desc->message_init != NULL) protobuf_c_message_init(desc, rv); else message_init_generic(desc, rv); while (rem > 0) { uint32_t tag; uint8_t wire_type; size_t used = parse_tag_and_wiretype(rem, at, &tag, &wire_type); const ProtobufCFieldDescriptor *field; ScannedMember tmp; if (used == 0) { PROTOBUF_C_UNPACK_ERROR("error parsing tag/wiretype at offset %u", (unsigned) (at - data)); goto error_cleanup_during_scan; } /* * \todo Consider optimizing for field[1].id == tag, if field[1] * exists! */ if (last_field == NULL || last_field->id != tag) { /* lookup field */ int field_index = int_range_lookup(desc->n_field_ranges, desc->field_ranges, tag); if (field_index < 0) { field = NULL; n_unknown++; } else { field = desc->fields + field_index; last_field = field; last_field_index = field_index; } } else { field = last_field; } if (field != NULL && field->label == PROTOBUF_C_LABEL_REQUIRED) REQUIRED_FIELD_BITMAP_SET(last_field_index); at += used; rem -= used; tmp.tag = tag; tmp.wire_type = wire_type; tmp.field = field; tmp.data = at; tmp.length_prefix_len = 0; switch (wire_type) { case PROTOBUF_C_WIRE_TYPE_VARINT: { unsigned max_len = rem < 10 ? rem : 10; unsigned i; for (i = 0; i < max_len; i++) if ((at[i] & 0x80) == 0) break; if (i == max_len) { PROTOBUF_C_UNPACK_ERROR("unterminated varint at offset %u", (unsigned) (at - data)); goto error_cleanup_during_scan; } tmp.len = i + 1; break; } case PROTOBUF_C_WIRE_TYPE_64BIT: if (rem < 8) { PROTOBUF_C_UNPACK_ERROR("too short after 64bit wiretype at offset %u", (unsigned) (at - data)); goto error_cleanup_during_scan; } tmp.len = 8; break; case PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED: { size_t pref_len; tmp.len = scan_length_prefixed_data(rem, at, &pref_len); if (tmp.len == 0) { /* NOTE: scan_length_prefixed_data calls UNPACK_ERROR */ goto error_cleanup_during_scan; } tmp.length_prefix_len = pref_len; break; } case PROTOBUF_C_WIRE_TYPE_32BIT: if (rem < 4) { PROTOBUF_C_UNPACK_ERROR("too short after 32bit wiretype at offset %u", (unsigned) (at - data)); goto error_cleanup_during_scan; } tmp.len = 4; break; default: PROTOBUF_C_UNPACK_ERROR("unsupported tag %u at offset %u", wire_type, (unsigned) (at - data)); goto error_cleanup_during_scan; } if (in_slab_index == (1UL << (which_slab + FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2))) { size_t size; in_slab_index = 0; if (which_slab == MAX_SCANNED_MEMBER_SLAB) { PROTOBUF_C_UNPACK_ERROR("too many fields"); goto error_cleanup_during_scan; } which_slab++; size = sizeof(ScannedMember) << (which_slab + FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2); scanned_member_slabs[which_slab] = do_alloc(allocator, size); if (scanned_member_slabs[which_slab] == NULL) goto error_cleanup_during_scan; } scanned_member_slabs[which_slab][in_slab_index++] = tmp; if (field != NULL && field->label == PROTOBUF_C_LABEL_REPEATED) { size_t *n = STRUCT_MEMBER_PTR(size_t, rv, field->quantifier_offset); if (wire_type == PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED && (0 != (field->flags & PROTOBUF_C_FIELD_FLAG_PACKED) || is_packable_type(field->type))) { size_t count; if (!count_packed_elements(field->type, tmp.len - tmp.length_prefix_len, tmp.data + tmp.length_prefix_len, &count)) { PROTOBUF_C_UNPACK_ERROR("counting packed elements"); goto error_cleanup_during_scan; } *n += count; } else { *n += 1; } } at += tmp.len; rem -= tmp.len; } /* allocate space for repeated fields, also check that all required fields have been set */ for (f = 0; f < desc->n_fields; f++) { const ProtobufCFieldDescriptor *field = desc->fields + f; if (field->label == PROTOBUF_C_LABEL_REPEATED) { size_t siz = sizeof_elt_in_repeated_array(field->type); size_t *n_ptr = STRUCT_MEMBER_PTR(size_t, rv, field->quantifier_offset); if (*n_ptr != 0) { unsigned n = *n_ptr; void *a; *n_ptr = 0; assert(rv->descriptor != NULL); #define CLEAR_REMAINING_N_PTRS() \ for(f++;f < desc->n_fields; f++) \ { \ field = desc->fields + f; \ if (field->label == PROTOBUF_C_LABEL_REPEATED) \ STRUCT_MEMBER (size_t, rv, field->quantifier_offset) = 0; \ } a = do_alloc(allocator, siz * n); if (!a) { CLEAR_REMAINING_N_PTRS(); goto error_cleanup; } STRUCT_MEMBER(void *, rv, field->offset) = a; } } else if (field->label == PROTOBUF_C_LABEL_REQUIRED) { if (field->default_value == NULL && !REQUIRED_FIELD_BITMAP_IS_SET(f)) { CLEAR_REMAINING_N_PTRS(); PROTOBUF_C_UNPACK_ERROR("message '%s': missing required field '%s'", desc->name, field->name); goto error_cleanup; } } } #undef CLEAR_REMAINING_N_PTRS /* allocate space for unknown fields */ if (n_unknown) { rv->unknown_fields = do_alloc(allocator, n_unknown * sizeof(ProtobufCMessageUnknownField)); if (rv->unknown_fields == NULL) goto error_cleanup; } /* do real parsing */ for (i_slab = 0; i_slab <= which_slab; i_slab++) { unsigned max = (i_slab == which_slab) ? in_slab_index : (1UL << (i_slab + 4)); ScannedMember *slab = scanned_member_slabs[i_slab]; for (j = 0; j < max; j++) { if (!parse_member(slab + j, rv, allocator)) { PROTOBUF_C_UNPACK_ERROR("error parsing member %s of %s", slab->field ? slab->field->name : "*unknown-field*", desc->name); goto error_cleanup; } } } /* cleanup */ for (j = 1; j <= which_slab; j++) do_free(allocator, scanned_member_slabs[j]); if (required_fields_bitmap_alloced) do_free(allocator, required_fields_bitmap); return rv; error_cleanup: protobuf_c_message_free_unpacked(rv, allocator); for (j = 1; j <= which_slab; j++) do_free(allocator, scanned_member_slabs[j]); if (required_fields_bitmap_alloced) do_free(allocator, required_fields_bitmap); return NULL; error_cleanup_during_scan: do_free(allocator, rv); for (j = 1; j <= which_slab; j++) do_free(allocator, scanned_member_slabs[j]); if (required_fields_bitmap_alloced) do_free(allocator, required_fields_bitmap); return NULL; } void protobuf_c_message_free_unpacked(ProtobufCMessage *message, ProtobufCAllocator *allocator) { const ProtobufCMessageDescriptor *desc; unsigned f; if (message == NULL) return; desc = message->descriptor; ASSERT_IS_MESSAGE(message); if (allocator == NULL) allocator = &protobuf_c__allocator; message->descriptor = NULL; for (f = 0; f < desc->n_fields; f++) { if (0 != (desc->fields[f].flags & PROTOBUF_C_FIELD_FLAG_ONEOF) && desc->fields[f].id != STRUCT_MEMBER(uint32_t, message, desc->fields[f].quantifier_offset)) { /* This is not the selected oneof, skip it */ continue; } if (desc->fields[f].label == PROTOBUF_C_LABEL_REPEATED) { size_t n = STRUCT_MEMBER(size_t, message, desc->fields[f].quantifier_offset); void *arr = STRUCT_MEMBER(void *, message, desc->fields[f].offset); if (arr != NULL) { if (desc->fields[f].type == PROTOBUF_C_TYPE_STRING) { unsigned i; for (i = 0; i < n; i++) do_free(allocator, ((char **) arr)[i]); } else if (desc->fields[f].type == PROTOBUF_C_TYPE_BYTES) { unsigned i; for (i = 0; i < n; i++) do_free(allocator, ((ProtobufCBinaryData *) arr)[i].data); } else if (desc->fields[f].type == PROTOBUF_C_TYPE_MESSAGE) { unsigned i; for (i = 0; i < n; i++) protobuf_c_message_free_unpacked( ((ProtobufCMessage **) arr)[i], allocator ); } do_free(allocator, arr); } } else if (desc->fields[f].type == PROTOBUF_C_TYPE_STRING) { char *str = STRUCT_MEMBER(char *, message, desc->fields[f].offset); if (str && str != desc->fields[f].default_value) do_free(allocator, str); } else if (desc->fields[f].type == PROTOBUF_C_TYPE_BYTES) { void *data = STRUCT_MEMBER(ProtobufCBinaryData, message, desc->fields[f].offset).data; const ProtobufCBinaryData *default_bd; default_bd = desc->fields[f].default_value; if (data != NULL && (default_bd == NULL || default_bd->data != data)) { do_free(allocator, data); } } else if (desc->fields[f].type == PROTOBUF_C_TYPE_MESSAGE) { ProtobufCMessage *sm; sm = STRUCT_MEMBER(ProtobufCMessage *, message, desc->fields[f].offset); if (sm && sm != desc->fields[f].default_value) protobuf_c_message_free_unpacked(sm, allocator); } } for (f = 0; f < message->n_unknown_fields; f++) do_free(allocator, message->unknown_fields[f].data); if (message->unknown_fields != NULL) do_free(allocator, message->unknown_fields); do_free(allocator, message); } void protobuf_c_message_init(const ProtobufCMessageDescriptor * descriptor, void *message) { descriptor->message_init((ProtobufCMessage *) (message)); } protobuf_c_boolean protobuf_c_message_check(const ProtobufCMessage *message) { unsigned i; if (!message || !message->descriptor || message->descriptor->magic != PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC) { return FALSE; } for (i = 0; i < message->descriptor->n_fields; i++) { const ProtobufCFieldDescriptor *f = message->descriptor->fields + i; ProtobufCType type = f->type; ProtobufCLabel label = f->label; void *field = STRUCT_MEMBER_P (message, f->offset); if (f->flags & PROTOBUF_C_FIELD_FLAG_ONEOF) { const uint32_t *oneof_case = STRUCT_MEMBER_P (message, f->quantifier_offset); if (f->id != *oneof_case) { continue; //Do not check if it is an unpopulated oneof member. } } if (label == PROTOBUF_C_LABEL_REPEATED) { size_t *quantity = STRUCT_MEMBER_P (message, f->quantifier_offset); if (*quantity > 0 && *(void **) field == NULL) { return FALSE; } if (type == PROTOBUF_C_TYPE_MESSAGE) { ProtobufCMessage **submessage = *(ProtobufCMessage ***) field; unsigned j; for (j = 0; j < *quantity; j++) { if (!protobuf_c_message_check(submessage[j])) return FALSE; } } else if (type == PROTOBUF_C_TYPE_STRING) { char **string = *(char ***) field; unsigned j; for (j = 0; j < *quantity; j++) { if (!string[j]) return FALSE; } } else if (type == PROTOBUF_C_TYPE_BYTES) { ProtobufCBinaryData *bd = *(ProtobufCBinaryData **) field; unsigned j; for (j = 0; j < *quantity; j++) { if (bd[j].len > 0 && bd[j].data == NULL) return FALSE; } } } else { /* PROTOBUF_C_LABEL_REQUIRED or PROTOBUF_C_LABEL_OPTIONAL */ if (type == PROTOBUF_C_TYPE_MESSAGE) { ProtobufCMessage *submessage = *(ProtobufCMessage **) field; if (label == PROTOBUF_C_LABEL_REQUIRED || submessage != NULL) { if (!protobuf_c_message_check(submessage)) return FALSE; } } else if (type == PROTOBUF_C_TYPE_STRING) { char *string = *(char **) field; if (label == PROTOBUF_C_LABEL_REQUIRED && string == NULL) return FALSE; } else if (type == PROTOBUF_C_TYPE_BYTES) { protobuf_c_boolean *has = STRUCT_MEMBER_P (message, f->quantifier_offset); ProtobufCBinaryData *bd = field; if (label == PROTOBUF_C_LABEL_REQUIRED || *has == TRUE) { if (bd->len > 0 && bd->data == NULL) return FALSE; } } } } return TRUE; } /* === services === */ typedef void (*GenericHandler) (void *service, const ProtobufCMessage *input, ProtobufCClosure closure, void *closure_data); void protobuf_c_service_invoke_internal(ProtobufCService *service, unsigned method_index, const ProtobufCMessage *input, ProtobufCClosure closure, void *closure_data) { GenericHandler *handlers; GenericHandler handler; /* * Verify that method_index is within range. If this fails, you are * likely invoking a newly added method on an old service. (Although * other memory corruption bugs can cause this assertion too.) */ assert(method_index < service->descriptor->n_methods); /* * Get the array of virtual methods (which are enumerated by the * generated code). */ handlers = (GenericHandler *) (service + 1); /* * Get our method and invoke it. * \todo Seems like handler == NULL is a situation that needs handling. */ handler = handlers[method_index]; (*handler)(service, input, closure, closure_data); } void protobuf_c_service_generated_init(ProtobufCService *service, const ProtobufCServiceDescriptor *descriptor, ProtobufCServiceDestroy destroy) { ASSERT_IS_SERVICE_DESCRIPTOR(descriptor); service->descriptor = descriptor; service->destroy = destroy; service->invoke = protobuf_c_service_invoke_internal; memset(service + 1, 0, descriptor->n_methods * sizeof(GenericHandler)); } void protobuf_c_service_destroy(ProtobufCService *service) { service->destroy(service); } /* --- querying the descriptors --- */ const ProtobufCEnumValue * protobuf_c_enum_descriptor_get_value_by_name(const ProtobufCEnumDescriptor *desc, const char *name) { unsigned start = 0; unsigned count; if (desc == NULL || desc->values_by_name == NULL) return NULL; count = desc->n_value_names; while (count > 1) { unsigned mid = start + count / 2; int rv = strcmp(desc->values_by_name[mid].name, name); if (rv == 0) return desc->values + desc->values_by_name[mid].index; else if (rv < 0) { count = start + count - (mid + 1); start = mid + 1; } else count = mid - start; } if (count == 0) return NULL; if (strcmp(desc->values_by_name[start].name, name) == 0) return desc->values + desc->values_by_name[start].index; return NULL; } const ProtobufCEnumValue * protobuf_c_enum_descriptor_get_value(const ProtobufCEnumDescriptor *desc, int value) { int rv = int_range_lookup(desc->n_value_ranges, desc->value_ranges, value); if (rv < 0) return NULL; return desc->values + rv; } const ProtobufCFieldDescriptor * protobuf_c_message_descriptor_get_field_by_name(const ProtobufCMessageDescriptor *desc, const char *name) { unsigned start = 0; unsigned count; const ProtobufCFieldDescriptor *field; if (desc == NULL || desc->fields_sorted_by_name == NULL) return NULL; count = desc->n_fields; while (count > 1) { unsigned mid = start + count / 2; int rv; field = desc->fields + desc->fields_sorted_by_name[mid]; rv = strcmp(field->name, name); if (rv == 0) return field; else if (rv < 0) { count = start + count - (mid + 1); start = mid + 1; } else count = mid - start; } if (count == 0) return NULL; field = desc->fields + desc->fields_sorted_by_name[start]; if (strcmp(field->name, name) == 0) return field; return NULL; } const ProtobufCFieldDescriptor * protobuf_c_message_descriptor_get_field(const ProtobufCMessageDescriptor *desc, unsigned value) { int rv = int_range_lookup(desc->n_field_ranges,desc->field_ranges, value); if (rv < 0) return NULL; return desc->fields + rv; } const ProtobufCMethodDescriptor * protobuf_c_service_descriptor_get_method_by_name(const ProtobufCServiceDescriptor *desc, const char *name) { unsigned start = 0; unsigned count; if (desc == NULL || desc->method_indices_by_name == NULL) return NULL; count = desc->n_methods; while (count > 1) { unsigned mid = start + count / 2; unsigned mid_index = desc->method_indices_by_name[mid]; const char *mid_name = desc->methods[mid_index].name; int rv = strcmp(mid_name, name); if (rv == 0) return desc->methods + desc->method_indices_by_name[mid]; if (rv < 0) { count = start + count - (mid + 1); start = mid + 1; } else { count = mid - start; } } if (count == 0) return NULL; if (strcmp(desc->methods[desc->method_indices_by_name[start]].name, name) == 0) return desc->methods + desc->method_indices_by_name[start]; return NULL; }libpg_query-13-2.1.0/vendor/protobuf-c/protobuf-c.h000066400000000000000000001016121413137616400220720ustar00rootroot00000000000000/* * Copyright (c) 2008-2018, Dave Benson and the protobuf-c authors. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! \file * \mainpage Introduction * * This is [protobuf-c], a C implementation of [Protocol Buffers]. * * This file defines the public API for the `libprotobuf-c` support library. * This API includes interfaces that can be used directly by client code as well * as the interfaces used by the code generated by the `protoc-c` compiler. * * The `libprotobuf-c` support library performs the actual serialization and * deserialization of Protocol Buffers messages. It interacts with structures, * definitions, and metadata generated by the `protoc-c` compiler from .proto * files. * * \authors Dave Benson and the `protobuf-c` authors. * * \copyright 2008-2014. Licensed under the terms of the [BSD-2-Clause] license. * * [protobuf-c]: https://github.com/protobuf-c/protobuf-c * [Protocol Buffers]: https://developers.google.com/protocol-buffers/ * [BSD-2-Clause]: http://opensource.org/licenses/BSD-2-Clause * * \page gencode Generated Code * * For each enum, we generate a C enum. For each message, we generate a C * structure which can be cast to a `ProtobufCMessage`. * * For each enum and message, we generate a descriptor object that allows us to * implement a kind of reflection on the structures. * * First, some naming conventions: * * - The name of the type for enums and messages and services is camel case * (meaning WordsAreCrammedTogether) except that double underscores are used * to delimit scopes. For example, the following `.proto` file: * ~~~{.proto} package foo.bar; message BazBah { optional int32 val = 1; } ~~~ * * would generate a C type `Foo__Bar__BazBah`. * * - Identifiers for functions and globals are all lowercase, with camel case * words separated by single underscores. For example, one of the function * prototypes generated by `protoc-c` for the above example: * ~~~{.c} Foo__Bar__BazBah * foo__bar__baz_bah__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); ~~~ * * - Identifiers for enum values contain an uppercase prefix which embeds the * package name and the enum type name. * * - A double underscore is used to separate further components of identifier * names. * * For example, in the name of the unpack function above, the package name * `foo.bar` has become `foo__bar`, the message name BazBah has become * `baz_bah`, and the method name is `unpack`. These are all joined with double * underscores to form the C identifier `foo__bar__baz_bah__unpack`. * * We also generate descriptor objects for messages and enums. These are * declared in the `.pb-c.h` files: * ~~~{.c} extern const ProtobufCMessageDescriptor foo__bar__baz_bah__descriptor; ~~~ * * The message structures all begin with `ProtobufCMessageDescriptor *` which is * sufficient to allow them to be cast to `ProtobufCMessage`. * * For each message defined in a `.proto` file, we generate a number of * functions and macros. Each function name contains a prefix based on the * package name and message name in order to make it a unique C identifier. * * - `INIT`. Statically initializes a message object, initializing its * descriptor and setting its fields to default values. Uninitialized * messages cannot be processed by the protobuf-c library. * ~~~{.c} #define FOO__BAR__BAZ_BAH__INIT \ { PROTOBUF_C_MESSAGE_INIT (&foo__bar__baz_bah__descriptor), 0 } ~~~ * - `init()`. Initializes a message object, initializing its descriptor and * setting its fields to default values. Uninitialized messages cannot be * processed by the protobuf-c library. * ~~~{.c} void foo__bar__baz_bah__init (Foo__Bar__BazBah *message); ~~~ * - `unpack()`. Unpacks data for a particular message format. Note that the * `allocator` parameter is usually `NULL` to indicate that the system's * `malloc()` and `free()` functions should be used for dynamically allocating * memory. * ~~~{.c} Foo__Bar__BazBah * foo__bar__baz_bah__unpack (ProtobufCAllocator *allocator, size_t len, const uint8_t *data); ~~~ * * - `free_unpacked()`. Frees a message object obtained with the `unpack()` * method. Freeing `NULL` is allowed (the same as with `free()`). * ~~~{.c} void foo__bar__baz_bah__free_unpacked (Foo__Bar__BazBah *message, ProtobufCAllocator *allocator); ~~~ * * - `get_packed_size()`. Calculates the length in bytes of the serialized * representation of the message object. * ~~~{.c} size_t foo__bar__baz_bah__get_packed_size (const Foo__Bar__BazBah *message); ~~~ * * - `pack()`. Pack a message object into a preallocated buffer. Assumes that * the buffer is large enough. (Use `get_packed_size()` first.) * ~~~{.c} size_t foo__bar__baz_bah__pack (const Foo__Bar__BazBah *message, uint8_t *out); ~~~ * * - `pack_to_buffer()`. Packs a message into a "virtual buffer". This is an * object which defines an "append bytes" callback to consume data as it is * serialized. * ~~~{.c} size_t foo__bar__baz_bah__pack_to_buffer (const Foo__Bar__BazBah *message, ProtobufCBuffer *buffer); ~~~ * * \page pack Packing and unpacking messages * * To pack a message, first compute the packed size of the message with * protobuf_c_message_get_packed_size(), then allocate a buffer of at least * that size, then call protobuf_c_message_pack(). * * Alternatively, a message can be serialized without calculating the final size * first. Use the protobuf_c_message_pack_to_buffer() function and provide a * ProtobufCBuffer object which implements an "append" method that consumes * data. * * To unpack a message, call the protobuf_c_message_unpack() function. The * result can be cast to an object of the type that matches the descriptor for * the message. * * The result of unpacking a message should be freed with * protobuf_c_message_free_unpacked(). */ #ifndef PROTOBUF_C_H #define PROTOBUF_C_H #include #include #include #include #ifdef __cplusplus # define PROTOBUF_C__BEGIN_DECLS extern "C" { # define PROTOBUF_C__END_DECLS } #else # define PROTOBUF_C__BEGIN_DECLS # define PROTOBUF_C__END_DECLS #endif PROTOBUF_C__BEGIN_DECLS #if defined(_WIN32) && defined(PROTOBUF_C_USE_SHARED_LIB) # ifdef PROTOBUF_C_EXPORT # define PROTOBUF_C__API __declspec(dllexport) # else # define PROTOBUF_C__API __declspec(dllimport) # endif #else # define PROTOBUF_C__API #endif #if !defined(PROTOBUF_C__NO_DEPRECATED) && \ ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) # define PROTOBUF_C__DEPRECATED __attribute__((__deprecated__)) #else # define PROTOBUF_C__DEPRECATED #endif #ifndef PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE #define PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(enum_name) \ , _##enum_name##_IS_INT_SIZE = INT_MAX #endif #define PROTOBUF_C__SERVICE_DESCRIPTOR_MAGIC 0x14159bc3 #define PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC 0x28aaeef9 #define PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC 0x114315af /* Empty string used for initializers */ #if defined(_WIN32) && defined(PROTOBUF_C_USE_SHARED_LIB) static const char protobuf_c_empty_string[] = ""; #else extern const char protobuf_c_empty_string[]; #endif /** * \defgroup api Public API * * This is the public API for `libprotobuf-c`. These interfaces are stable and * subject to Semantic Versioning guarantees. * * @{ */ /** * Values for the `flags` word in `ProtobufCFieldDescriptor`. */ typedef enum { /** Set if the field is repeated and marked with the `packed` option. */ PROTOBUF_C_FIELD_FLAG_PACKED = (1 << 0), /** Set if the field is marked with the `deprecated` option. */ PROTOBUF_C_FIELD_FLAG_DEPRECATED = (1 << 1), /** Set if the field is a member of a oneof (union). */ PROTOBUF_C_FIELD_FLAG_ONEOF = (1 << 2), } ProtobufCFieldFlag; /** * Message field rules. * * \see [Defining A Message Type] in the Protocol Buffers documentation. * * [Defining A Message Type]: * https://developers.google.com/protocol-buffers/docs/proto#simple */ typedef enum { /** A well-formed message must have exactly one of this field. */ PROTOBUF_C_LABEL_REQUIRED, /** * A well-formed message can have zero or one of this field (but not * more than one). */ PROTOBUF_C_LABEL_OPTIONAL, /** * This field can be repeated any number of times (including zero) in a * well-formed message. The order of the repeated values will be * preserved. */ PROTOBUF_C_LABEL_REPEATED, /** * This field has no label. This is valid only in proto3 and is * equivalent to OPTIONAL but no "has" quantifier will be consulted. */ PROTOBUF_C_LABEL_NONE, } ProtobufCLabel; /** * Field value types. * * \see [Scalar Value Types] in the Protocol Buffers documentation. * * [Scalar Value Types]: * https://developers.google.com/protocol-buffers/docs/proto#scalar */ typedef enum { PROTOBUF_C_TYPE_INT32, /**< int32 */ PROTOBUF_C_TYPE_SINT32, /**< signed int32 */ PROTOBUF_C_TYPE_SFIXED32, /**< signed int32 (4 bytes) */ PROTOBUF_C_TYPE_INT64, /**< int64 */ PROTOBUF_C_TYPE_SINT64, /**< signed int64 */ PROTOBUF_C_TYPE_SFIXED64, /**< signed int64 (8 bytes) */ PROTOBUF_C_TYPE_UINT32, /**< unsigned int32 */ PROTOBUF_C_TYPE_FIXED32, /**< unsigned int32 (4 bytes) */ PROTOBUF_C_TYPE_UINT64, /**< unsigned int64 */ PROTOBUF_C_TYPE_FIXED64, /**< unsigned int64 (8 bytes) */ PROTOBUF_C_TYPE_FLOAT, /**< float */ PROTOBUF_C_TYPE_DOUBLE, /**< double */ PROTOBUF_C_TYPE_BOOL, /**< boolean */ PROTOBUF_C_TYPE_ENUM, /**< enumerated type */ PROTOBUF_C_TYPE_STRING, /**< UTF-8 or ASCII string */ PROTOBUF_C_TYPE_BYTES, /**< arbitrary byte sequence */ PROTOBUF_C_TYPE_MESSAGE, /**< nested message */ } ProtobufCType; /** * Field wire types. * * \see [Message Structure] in the Protocol Buffers documentation. * * [Message Structure]: * https://developers.google.com/protocol-buffers/docs/encoding#structure */ typedef enum { PROTOBUF_C_WIRE_TYPE_VARINT = 0, PROTOBUF_C_WIRE_TYPE_64BIT = 1, PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED = 2, /* "Start group" and "end group" wire types are unsupported. */ PROTOBUF_C_WIRE_TYPE_32BIT = 5, } ProtobufCWireType; struct ProtobufCAllocator; struct ProtobufCBinaryData; struct ProtobufCBuffer; struct ProtobufCBufferSimple; struct ProtobufCEnumDescriptor; struct ProtobufCEnumValue; struct ProtobufCEnumValueIndex; struct ProtobufCFieldDescriptor; struct ProtobufCIntRange; struct ProtobufCMessage; struct ProtobufCMessageDescriptor; struct ProtobufCMessageUnknownField; struct ProtobufCMethodDescriptor; struct ProtobufCService; struct ProtobufCServiceDescriptor; typedef struct ProtobufCAllocator ProtobufCAllocator; typedef struct ProtobufCBinaryData ProtobufCBinaryData; typedef struct ProtobufCBuffer ProtobufCBuffer; typedef struct ProtobufCBufferSimple ProtobufCBufferSimple; typedef struct ProtobufCEnumDescriptor ProtobufCEnumDescriptor; typedef struct ProtobufCEnumValue ProtobufCEnumValue; typedef struct ProtobufCEnumValueIndex ProtobufCEnumValueIndex; typedef struct ProtobufCFieldDescriptor ProtobufCFieldDescriptor; typedef struct ProtobufCIntRange ProtobufCIntRange; typedef struct ProtobufCMessage ProtobufCMessage; typedef struct ProtobufCMessageDescriptor ProtobufCMessageDescriptor; typedef struct ProtobufCMessageUnknownField ProtobufCMessageUnknownField; typedef struct ProtobufCMethodDescriptor ProtobufCMethodDescriptor; typedef struct ProtobufCService ProtobufCService; typedef struct ProtobufCServiceDescriptor ProtobufCServiceDescriptor; /** Boolean type. */ typedef int protobuf_c_boolean; typedef void (*ProtobufCClosure)(const ProtobufCMessage *, void *closure_data); typedef void (*ProtobufCMessageInit)(ProtobufCMessage *); typedef void (*ProtobufCServiceDestroy)(ProtobufCService *); /** * Structure for defining a custom memory allocator. */ struct ProtobufCAllocator { /** Function to allocate memory. */ void *(*alloc)(void *allocator_data, size_t size); /** Function to free memory. */ void (*free)(void *allocator_data, void *pointer); /** Opaque pointer passed to `alloc` and `free` functions. */ void *allocator_data; }; /** * Structure for the protobuf `bytes` scalar type. * * The data contained in a `ProtobufCBinaryData` is an arbitrary sequence of * bytes. It may contain embedded `NUL` characters and is not required to be * `NUL`-terminated. */ struct ProtobufCBinaryData { size_t len; /**< Number of bytes in the `data` field. */ uint8_t *data; /**< Data bytes. */ }; /** * Structure for defining a virtual append-only buffer. Used by * protobuf_c_message_pack_to_buffer() to abstract the consumption of serialized * bytes. * * `ProtobufCBuffer` "subclasses" may be defined on the stack. For example, to * write to a `FILE` object: * ~~~{.c} typedef struct { ProtobufCBuffer base; FILE *fp; } BufferAppendToFile; static void my_buffer_file_append(ProtobufCBuffer *buffer, size_t len, const uint8_t *data) { BufferAppendToFile *file_buf = (BufferAppendToFile *) buffer; fwrite(data, len, 1, file_buf->fp); // XXX: No error handling! } ~~~ * * To use this new type of ProtobufCBuffer, it could be called as follows: * ~~~{.c} ... BufferAppendToFile tmp = {0}; tmp.base.append = my_buffer_file_append; tmp.fp = fp; protobuf_c_message_pack_to_buffer(&message, &tmp); ... ~~~ */ struct ProtobufCBuffer { /** Append function. Consumes the `len` bytes stored at `data`. */ void (*append)(ProtobufCBuffer *buffer, size_t len, const uint8_t *data); }; /** * Simple buffer "subclass" of `ProtobufCBuffer`. * * A `ProtobufCBufferSimple` object is declared on the stack and uses a * scratch buffer provided by the user for the initial allocation. It performs * exponential resizing, using dynamically allocated memory. A * `ProtobufCBufferSimple` object can be created and used as follows: * ~~~{.c} uint8_t pad[128]; ProtobufCBufferSimple simple = PROTOBUF_C_BUFFER_SIMPLE_INIT(pad); ProtobufCBuffer *buffer = (ProtobufCBuffer *) &simple; ~~~ * * `buffer` can now be used with `protobuf_c_message_pack_to_buffer()`. Once a * message has been serialized to a `ProtobufCBufferSimple` object, the * serialized data bytes can be accessed from the `.data` field. * * To free the memory allocated by a `ProtobufCBufferSimple` object, if any, * call PROTOBUF_C_BUFFER_SIMPLE_CLEAR() on the object, for example: * ~~~{.c} PROTOBUF_C_BUFFER_SIMPLE_CLEAR(&simple); ~~~ * * \see PROTOBUF_C_BUFFER_SIMPLE_INIT * \see PROTOBUF_C_BUFFER_SIMPLE_CLEAR */ struct ProtobufCBufferSimple { /** "Base class". */ ProtobufCBuffer base; /** Number of bytes allocated in `data`. */ size_t alloced; /** Number of bytes currently stored in `data`. */ size_t len; /** Data bytes. */ uint8_t *data; /** Whether `data` must be freed. */ protobuf_c_boolean must_free_data; /** Allocator to use. May be NULL to indicate the system allocator. */ ProtobufCAllocator *allocator; }; /** * Describes an enumeration as a whole, with all of its values. */ struct ProtobufCEnumDescriptor { /** Magic value checked to ensure that the API is used correctly. */ uint32_t magic; /** The qualified name (e.g., "namespace.Type"). */ const char *name; /** The unqualified name as given in the .proto file (e.g., "Type"). */ const char *short_name; /** Identifier used in generated C code. */ const char *c_name; /** The dot-separated namespace. */ const char *package_name; /** Number elements in `values`. */ unsigned n_values; /** Array of distinct values, sorted by numeric value. */ const ProtobufCEnumValue *values; /** Number of elements in `values_by_name`. */ unsigned n_value_names; /** Array of named values, including aliases, sorted by name. */ const ProtobufCEnumValueIndex *values_by_name; /** Number of elements in `value_ranges`. */ unsigned n_value_ranges; /** Value ranges, for faster lookups by numeric value. */ const ProtobufCIntRange *value_ranges; /** Reserved for future use. */ void *reserved1; /** Reserved for future use. */ void *reserved2; /** Reserved for future use. */ void *reserved3; /** Reserved for future use. */ void *reserved4; }; /** * Represents a single value of an enumeration. */ struct ProtobufCEnumValue { /** The string identifying this value in the .proto file. */ const char *name; /** The string identifying this value in generated C code. */ const char *c_name; /** The numeric value assigned in the .proto file. */ int value; }; /** * Used by `ProtobufCEnumDescriptor` to look up enum values. */ struct ProtobufCEnumValueIndex { /** Name of the enum value. */ const char *name; /** Index into values[] array. */ unsigned index; }; /** * Describes a single field in a message. */ struct ProtobufCFieldDescriptor { /** Name of the field as given in the .proto file. */ const char *name; /** Tag value of the field as given in the .proto file. */ uint32_t id; /** Whether the field is `REQUIRED`, `OPTIONAL`, or `REPEATED`. */ ProtobufCLabel label; /** The type of the field. */ ProtobufCType type; /** * The offset in bytes of the message's C structure's quantifier field * (the `has_MEMBER` field for optional members or the `n_MEMBER` field * for repeated members or the case enum for oneofs). */ unsigned quantifier_offset; /** * The offset in bytes into the message's C structure for the member * itself. */ unsigned offset; /** * A type-specific descriptor. * * If `type` is `PROTOBUF_C_TYPE_ENUM`, then `descriptor` points to the * corresponding `ProtobufCEnumDescriptor`. * * If `type` is `PROTOBUF_C_TYPE_MESSAGE`, then `descriptor` points to * the corresponding `ProtobufCMessageDescriptor`. * * Otherwise this field is NULL. */ const void *descriptor; /* for MESSAGE and ENUM types */ /** The default value for this field, if defined. May be NULL. */ const void *default_value; /** * A flag word. Zero or more of the bits defined in the * `ProtobufCFieldFlag` enum may be set. */ uint32_t flags; /** Reserved for future use. */ unsigned reserved_flags; /** Reserved for future use. */ void *reserved2; /** Reserved for future use. */ void *reserved3; }; /** * Helper structure for optimizing int => index lookups in the case * where the keys are mostly consecutive values, as they presumably are for * enums and fields. * * The data structures requires that the values in the original array are * sorted. */ struct ProtobufCIntRange { int start_value; unsigned orig_index; /* * NOTE: the number of values in the range can be inferred by looking * at the next element's orig_index. A dummy element is added to make * this simple. */ }; /** * An instance of a message. * * `ProtobufCMessage` is a light-weight "base class" for all messages. * * In particular, `ProtobufCMessage` doesn't have any allocation policy * associated with it. That's because it's common to create `ProtobufCMessage` * objects on the stack. In fact, that's what we recommend for sending messages. * If the object is allocated from the stack, you can't really have a memory * leak. * * This means that calls to functions like protobuf_c_message_unpack() which * return a `ProtobufCMessage` must be paired with a call to a free function, * like protobuf_c_message_free_unpacked(). */ struct ProtobufCMessage { /** The descriptor for this message type. */ const ProtobufCMessageDescriptor *descriptor; /** The number of elements in `unknown_fields`. */ unsigned n_unknown_fields; /** The fields that weren't recognized by the parser. */ ProtobufCMessageUnknownField *unknown_fields; }; /** * Describes a message. */ struct ProtobufCMessageDescriptor { /** Magic value checked to ensure that the API is used correctly. */ uint32_t magic; /** The qualified name (e.g., "namespace.Type"). */ const char *name; /** The unqualified name as given in the .proto file (e.g., "Type"). */ const char *short_name; /** Identifier used in generated C code. */ const char *c_name; /** The dot-separated namespace. */ const char *package_name; /** * Size in bytes of the C structure representing an instance of this * type of message. */ size_t sizeof_message; /** Number of elements in `fields`. */ unsigned n_fields; /** Field descriptors, sorted by tag number. */ const ProtobufCFieldDescriptor *fields; /** Used for looking up fields by name. */ const unsigned *fields_sorted_by_name; /** Number of elements in `field_ranges`. */ unsigned n_field_ranges; /** Used for looking up fields by id. */ const ProtobufCIntRange *field_ranges; /** Message initialisation function. */ ProtobufCMessageInit message_init; /** Reserved for future use. */ void *reserved1; /** Reserved for future use. */ void *reserved2; /** Reserved for future use. */ void *reserved3; }; /** * An unknown message field. */ struct ProtobufCMessageUnknownField { /** The tag number. */ uint32_t tag; /** The wire type of the field. */ ProtobufCWireType wire_type; /** Number of bytes in `data`. */ size_t len; /** Field data. */ uint8_t *data; }; /** * Method descriptor. */ struct ProtobufCMethodDescriptor { /** Method name. */ const char *name; /** Input message descriptor. */ const ProtobufCMessageDescriptor *input; /** Output message descriptor. */ const ProtobufCMessageDescriptor *output; }; /** * Service. */ struct ProtobufCService { /** Service descriptor. */ const ProtobufCServiceDescriptor *descriptor; /** Function to invoke the service. */ void (*invoke)(ProtobufCService *service, unsigned method_index, const ProtobufCMessage *input, ProtobufCClosure closure, void *closure_data); /** Function to destroy the service. */ void (*destroy)(ProtobufCService *service); }; /** * Service descriptor. */ struct ProtobufCServiceDescriptor { /** Magic value checked to ensure that the API is used correctly. */ uint32_t magic; /** Service name. */ const char *name; /** Short version of service name. */ const char *short_name; /** C identifier for the service name. */ const char *c_name; /** Package name. */ const char *package; /** Number of elements in `methods`. */ unsigned n_methods; /** Method descriptors, in the order defined in the .proto file. */ const ProtobufCMethodDescriptor *methods; /** Sort index of methods. */ const unsigned *method_indices_by_name; }; /** * Get the version of the protobuf-c library. Note that this is the version of * the library linked against, not the version of the headers compiled against. * * \return A string containing the version number of protobuf-c. */ PROTOBUF_C__API const char * protobuf_c_version(void); /** * Get the version of the protobuf-c library. Note that this is the version of * the library linked against, not the version of the headers compiled against. * * \return A 32 bit unsigned integer containing the version number of * protobuf-c, represented in base-10 as (MAJOR*1E6) + (MINOR*1E3) + PATCH. */ PROTOBUF_C__API uint32_t protobuf_c_version_number(void); /** * The version of the protobuf-c headers, represented as a string using the same * format as protobuf_c_version(). */ #define PROTOBUF_C_VERSION "1.4.0" /** * The version of the protobuf-c headers, represented as an integer using the * same format as protobuf_c_version_number(). */ #define PROTOBUF_C_VERSION_NUMBER 1004000 /** * The minimum protoc-c version which works with the current version of the * protobuf-c headers. */ #define PROTOBUF_C_MIN_COMPILER_VERSION 1000000 /** * Look up a `ProtobufCEnumValue` from a `ProtobufCEnumDescriptor` by name. * * \param desc * The `ProtobufCEnumDescriptor` object. * \param name * The `name` field from the corresponding `ProtobufCEnumValue` object to * match. * \return * A `ProtobufCEnumValue` object. * \retval NULL * If not found or if the optimize_for = CODE_SIZE option was set. */ PROTOBUF_C__API const ProtobufCEnumValue * protobuf_c_enum_descriptor_get_value_by_name( const ProtobufCEnumDescriptor *desc, const char *name); /** * Look up a `ProtobufCEnumValue` from a `ProtobufCEnumDescriptor` by numeric * value. * * \param desc * The `ProtobufCEnumDescriptor` object. * \param value * The `value` field from the corresponding `ProtobufCEnumValue` object to * match. * * \return * A `ProtobufCEnumValue` object. * \retval NULL * If not found. */ PROTOBUF_C__API const ProtobufCEnumValue * protobuf_c_enum_descriptor_get_value( const ProtobufCEnumDescriptor *desc, int value); /** * Look up a `ProtobufCFieldDescriptor` from a `ProtobufCMessageDescriptor` by * the name of the field. * * \param desc * The `ProtobufCMessageDescriptor` object. * \param name * The name of the field. * \return * A `ProtobufCFieldDescriptor` object. * \retval NULL * If not found or if the optimize_for = CODE_SIZE option was set. */ PROTOBUF_C__API const ProtobufCFieldDescriptor * protobuf_c_message_descriptor_get_field_by_name( const ProtobufCMessageDescriptor *desc, const char *name); /** * Look up a `ProtobufCFieldDescriptor` from a `ProtobufCMessageDescriptor` by * the tag value of the field. * * \param desc * The `ProtobufCMessageDescriptor` object. * \param value * The tag value of the field. * \return * A `ProtobufCFieldDescriptor` object. * \retval NULL * If not found. */ PROTOBUF_C__API const ProtobufCFieldDescriptor * protobuf_c_message_descriptor_get_field( const ProtobufCMessageDescriptor *desc, unsigned value); /** * Determine the number of bytes required to store the serialised message. * * \param message * The message object to serialise. * \return * Number of bytes. */ PROTOBUF_C__API size_t protobuf_c_message_get_packed_size(const ProtobufCMessage *message); /** * Serialise a message from its in-memory representation. * * This function stores the serialised bytes of the message in a pre-allocated * buffer. * * \param message * The message object to serialise. * \param[out] out * Buffer to store the bytes of the serialised message. This buffer must * have enough space to store the packed message. Use * protobuf_c_message_get_packed_size() to determine the number of bytes * required. * \return * Number of bytes stored in `out`. */ PROTOBUF_C__API size_t protobuf_c_message_pack(const ProtobufCMessage *message, uint8_t *out); /** * Serialise a message from its in-memory representation to a virtual buffer. * * This function calls the `append` method of a `ProtobufCBuffer` object to * consume the bytes generated by the serialiser. * * \param message * The message object to serialise. * \param buffer * The virtual buffer object. * \return * Number of bytes passed to the virtual buffer. */ PROTOBUF_C__API size_t protobuf_c_message_pack_to_buffer( const ProtobufCMessage *message, ProtobufCBuffer *buffer); /** * Unpack a serialised message into an in-memory representation. * * \param descriptor * The message descriptor. * \param allocator * `ProtobufCAllocator` to use for memory allocation. May be NULL to * specify the default allocator. * \param len * Length in bytes of the serialised message. * \param data * Pointer to the serialised message. * \return * An unpacked message object. * \retval NULL * If an error occurred during unpacking. */ PROTOBUF_C__API ProtobufCMessage * protobuf_c_message_unpack( const ProtobufCMessageDescriptor *descriptor, ProtobufCAllocator *allocator, size_t len, const uint8_t *data); /** * Free an unpacked message object. * * This function should be used to deallocate the memory used by a call to * protobuf_c_message_unpack(). * * \param message * The message object to free. May be NULL. * \param allocator * `ProtobufCAllocator` to use for memory deallocation. May be NULL to * specify the default allocator. */ PROTOBUF_C__API void protobuf_c_message_free_unpacked( ProtobufCMessage *message, ProtobufCAllocator *allocator); /** * Check the validity of a message object. * * Makes sure all required fields (`PROTOBUF_C_LABEL_REQUIRED`) are present. * Recursively checks nested messages. * * \retval TRUE * Message is valid. * \retval FALSE * Message is invalid. */ PROTOBUF_C__API protobuf_c_boolean protobuf_c_message_check(const ProtobufCMessage *); /** Message initialiser. */ #define PROTOBUF_C_MESSAGE_INIT(descriptor) { descriptor, 0, NULL } /** * Initialise a message object from a message descriptor. * * \param descriptor * Message descriptor. * \param message * Allocated block of memory of size `descriptor->sizeof_message`. */ PROTOBUF_C__API void protobuf_c_message_init( const ProtobufCMessageDescriptor *descriptor, void *message); /** * Free a service. * * \param service * The service object to free. */ PROTOBUF_C__API void protobuf_c_service_destroy(ProtobufCService *service); /** * Look up a `ProtobufCMethodDescriptor` by name. * * \param desc * Service descriptor. * \param name * Name of the method. * * \return * A `ProtobufCMethodDescriptor` object. * \retval NULL * If not found or if the optimize_for = CODE_SIZE option was set. */ PROTOBUF_C__API const ProtobufCMethodDescriptor * protobuf_c_service_descriptor_get_method_by_name( const ProtobufCServiceDescriptor *desc, const char *name); /** * Initialise a `ProtobufCBufferSimple` object. */ #define PROTOBUF_C_BUFFER_SIMPLE_INIT(array_of_bytes) \ { \ { protobuf_c_buffer_simple_append }, \ sizeof(array_of_bytes), \ 0, \ (array_of_bytes), \ 0, \ NULL \ } /** * Clear a `ProtobufCBufferSimple` object, freeing any allocated memory. */ #define PROTOBUF_C_BUFFER_SIMPLE_CLEAR(simp_buf) \ do { \ if ((simp_buf)->must_free_data) { \ if ((simp_buf)->allocator != NULL) \ (simp_buf)->allocator->free( \ (simp_buf)->allocator, \ (simp_buf)->data); \ else \ free((simp_buf)->data); \ } \ } while (0) /** * The `append` method for `ProtobufCBufferSimple`. * * \param buffer * The buffer object to append to. Must actually be a * `ProtobufCBufferSimple` object. * \param len * Number of bytes in `data`. * \param data * Data to append. */ PROTOBUF_C__API void protobuf_c_buffer_simple_append( ProtobufCBuffer *buffer, size_t len, const unsigned char *data); PROTOBUF_C__API void protobuf_c_service_generated_init( ProtobufCService *service, const ProtobufCServiceDescriptor *descriptor, ProtobufCServiceDestroy destroy); PROTOBUF_C__API void protobuf_c_service_invoke_internal( ProtobufCService *service, unsigned method_index, const ProtobufCMessage *input, ProtobufCClosure closure, void *closure_data); /**@}*/ PROTOBUF_C__END_DECLS #endif /* PROTOBUF_C_H */libpg_query-13-2.1.0/vendor/xxhash/000077500000000000000000000000001413137616400170635ustar00rootroot00000000000000libpg_query-13-2.1.0/vendor/xxhash/xxhash.c000066400000000000000000000034761413137616400205440ustar00rootroot00000000000000/* * xxHash - Extremely Fast Hash algorithm * Copyright (C) 2012-2020 Yann Collet * * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You can contact the author at: * - xxHash homepage: https://www.xxhash.com * - xxHash source repository: https://github.com/Cyan4973/xxHash */ /* * xxhash.c instantiates functions defined in xxhash.h */ #define XXH_STATIC_LINKING_ONLY /* access advanced declarations */ #define XXH_IMPLEMENTATION /* access definitions */ #include "xxhash.h"libpg_query-13-2.1.0/vendor/xxhash/xxhash.h000066400000000000000000006167101413137616400205520ustar00rootroot00000000000000/* * xxHash - Extremely Fast Hash algorithm * Header File * Copyright (C) 2012-2020 Yann Collet * * BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You can contact the author at: * - xxHash homepage: https://www.xxhash.com * - xxHash source repository: https://github.com/Cyan4973/xxHash */ /*! * @mainpage xxHash * * @file xxhash.h * xxHash prototypes and implementation */ /* TODO: update */ /* Notice extracted from xxHash homepage: xxHash is an extremely fast hash algorithm, running at RAM speed limits. It also successfully passes all tests from the SMHasher suite. Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz) Name Speed Q.Score Author xxHash 5.4 GB/s 10 CrapWow 3.2 GB/s 2 Andrew MurmurHash 3a 2.7 GB/s 10 Austin Appleby SpookyHash 2.0 GB/s 10 Bob Jenkins SBox 1.4 GB/s 9 Bret Mulvey Lookup3 1.2 GB/s 9 Bob Jenkins SuperFastHash 1.2 GB/s 1 Paul Hsieh CityHash64 1.05 GB/s 10 Pike & Alakuijala FNV 0.55 GB/s 5 Fowler, Noll, Vo CRC32 0.43 GB/s 9 MD5-32 0.33 GB/s 10 Ronald L. Rivest SHA1-32 0.28 GB/s 10 Q.Score is a measure of quality of the hash function. It depends on successfully passing SMHasher test set. 10 is a perfect score. Note: SMHasher's CRC32 implementation is not the fastest one. Other speed-oriented implementations can be faster, especially in combination with PCLMUL instruction: https://fastcompression.blogspot.com/2019/03/presenting-xxh3.html?showComment=1552696407071#c3490092340461170735 A 64-bit version, named XXH64, is available since r35. It offers much better speed, but for 64-bit applications only. Name Speed on 64 bits Speed on 32 bits XXH64 13.8 GB/s 1.9 GB/s XXH32 6.8 GB/s 6.0 GB/s */ #if defined (__cplusplus) extern "C" { #endif /* **************************** * INLINE mode ******************************/ /*! * XXH_INLINE_ALL (and XXH_PRIVATE_API) * Use these build macros to inline xxhash into the target unit. * Inlining improves performance on small inputs, especially when the length is * expressed as a compile-time constant: * * https://fastcompression.blogspot.com/2018/03/xxhash-for-small-keys-impressive-power.html * * It also keeps xxHash symbols private to the unit, so they are not exported. * * Usage: * #define XXH_INLINE_ALL * #include "xxhash.h" * * Do not compile and link xxhash.o as a separate object, as it is not useful. */ #if (defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API)) \ && !defined(XXH_INLINE_ALL_31684351384) /* this section should be traversed only once */ # define XXH_INLINE_ALL_31684351384 /* give access to the advanced API, required to compile implementations */ # undef XXH_STATIC_LINKING_ONLY /* avoid macro redef */ # define XXH_STATIC_LINKING_ONLY /* make all functions private */ # undef XXH_PUBLIC_API # if defined(__GNUC__) # define XXH_PUBLIC_API static __inline __attribute__((unused)) # elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) # define XXH_PUBLIC_API static inline # elif defined(_MSC_VER) # define XXH_PUBLIC_API static __inline # else /* note: this version may generate warnings for unused static functions */ # define XXH_PUBLIC_API static # endif /* * This part deals with the special case where a unit wants to inline xxHash, * but "xxhash.h" has previously been included without XXH_INLINE_ALL, such * as part of some previously included *.h header file. * Without further action, the new include would just be ignored, * and functions would effectively _not_ be inlined (silent failure). * The following macros solve this situation by prefixing all inlined names, * avoiding naming collision with previous inclusions. */ # ifdef XXH_NAMESPACE # error "XXH_INLINE_ALL with XXH_NAMESPACE is not supported" /* * Note: Alternative: #undef all symbols (it's a pretty large list). * Without #error: it compiles, but functions are actually not inlined. */ # endif # define XXH_NAMESPACE XXH_INLINE_ /* * Some identifiers (enums, type names) are not symbols, but they must * still be renamed to avoid redeclaration. * Alternative solution: do not redeclare them. * However, this requires some #ifdefs, and is a more dispersed action. * Meanwhile, renaming can be achieved in a single block */ # define XXH_IPREF(Id) XXH_INLINE_ ## Id # define XXH_OK XXH_IPREF(XXH_OK) # define XXH_ERROR XXH_IPREF(XXH_ERROR) # define XXH_errorcode XXH_IPREF(XXH_errorcode) # define XXH32_canonical_t XXH_IPREF(XXH32_canonical_t) # define XXH64_canonical_t XXH_IPREF(XXH64_canonical_t) # define XXH128_canonical_t XXH_IPREF(XXH128_canonical_t) # define XXH32_state_s XXH_IPREF(XXH32_state_s) # define XXH32_state_t XXH_IPREF(XXH32_state_t) # define XXH64_state_s XXH_IPREF(XXH64_state_s) # define XXH64_state_t XXH_IPREF(XXH64_state_t) # define XXH3_state_s XXH_IPREF(XXH3_state_s) # define XXH3_state_t XXH_IPREF(XXH3_state_t) # define XXH128_hash_t XXH_IPREF(XXH128_hash_t) /* Ensure the header is parsed again, even if it was previously included */ # undef XXHASH_H_5627135585666179 # undef XXHASH_H_STATIC_13879238742 #endif /* XXH_INLINE_ALL || XXH_PRIVATE_API */ /* **************************************************************** * Stable API *****************************************************************/ #ifndef XXHASH_H_5627135585666179 #define XXHASH_H_5627135585666179 1 /*! * @defgroup public Public API * Contains details on the public xxHash functions. * @{ */ /* specific declaration modes for Windows */ #if !defined(XXH_INLINE_ALL) && !defined(XXH_PRIVATE_API) # if defined(WIN32) && defined(_MSC_VER) && (defined(XXH_IMPORT) || defined(XXH_EXPORT)) # ifdef XXH_EXPORT # define XXH_PUBLIC_API __declspec(dllexport) # elif XXH_IMPORT # define XXH_PUBLIC_API __declspec(dllimport) # endif # else # define XXH_PUBLIC_API /* do nothing */ # endif #endif #ifdef XXH_DOXYGEN /*! * @brief Emulate a namespace by transparently prefixing all symbols. * * If you want to include _and expose_ xxHash functions from within your own * library, but also want to avoid symbol collisions with other libraries which * may also include xxHash, you can use XXH_NAMESPACE to automatically prefix * any public symbol from xxhash library with the value of XXH_NAMESPACE * (therefore, avoid empty or numeric values). * * Note that no change is required within the calling program as long as it * includes `xxhash.h`: Regular symbol names will be automatically translated * by this header. */ # define XXH_NAMESPACE /* YOUR NAME HERE */ # undef XXH_NAMESPACE #endif #ifdef XXH_NAMESPACE # define XXH_CAT(A,B) A##B # define XXH_NAME2(A,B) XXH_CAT(A,B) # define XXH_versionNumber XXH_NAME2(XXH_NAMESPACE, XXH_versionNumber) /* XXH32 */ # define XXH32 XXH_NAME2(XXH_NAMESPACE, XXH32) # define XXH32_createState XXH_NAME2(XXH_NAMESPACE, XXH32_createState) # define XXH32_freeState XXH_NAME2(XXH_NAMESPACE, XXH32_freeState) # define XXH32_reset XXH_NAME2(XXH_NAMESPACE, XXH32_reset) # define XXH32_update XXH_NAME2(XXH_NAMESPACE, XXH32_update) # define XXH32_digest XXH_NAME2(XXH_NAMESPACE, XXH32_digest) # define XXH32_copyState XXH_NAME2(XXH_NAMESPACE, XXH32_copyState) # define XXH32_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH32_canonicalFromHash) # define XXH32_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH32_hashFromCanonical) /* XXH64 */ # define XXH64 XXH_NAME2(XXH_NAMESPACE, XXH64) # define XXH64_createState XXH_NAME2(XXH_NAMESPACE, XXH64_createState) # define XXH64_freeState XXH_NAME2(XXH_NAMESPACE, XXH64_freeState) # define XXH64_reset XXH_NAME2(XXH_NAMESPACE, XXH64_reset) # define XXH64_update XXH_NAME2(XXH_NAMESPACE, XXH64_update) # define XXH64_digest XXH_NAME2(XXH_NAMESPACE, XXH64_digest) # define XXH64_copyState XXH_NAME2(XXH_NAMESPACE, XXH64_copyState) # define XXH64_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH64_canonicalFromHash) # define XXH64_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH64_hashFromCanonical) /* XXH3_64bits */ # define XXH3_64bits XXH_NAME2(XXH_NAMESPACE, XXH3_64bits) # define XXH3_64bits_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSecret) # define XXH3_64bits_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_withSeed) # define XXH3_createState XXH_NAME2(XXH_NAMESPACE, XXH3_createState) # define XXH3_freeState XXH_NAME2(XXH_NAMESPACE, XXH3_freeState) # define XXH3_copyState XXH_NAME2(XXH_NAMESPACE, XXH3_copyState) # define XXH3_64bits_reset XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset) # define XXH3_64bits_reset_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSeed) # define XXH3_64bits_reset_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_reset_withSecret) # define XXH3_64bits_update XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_update) # define XXH3_64bits_digest XXH_NAME2(XXH_NAMESPACE, XXH3_64bits_digest) # define XXH3_generateSecret XXH_NAME2(XXH_NAMESPACE, XXH3_generateSecret) /* XXH3_128bits */ # define XXH128 XXH_NAME2(XXH_NAMESPACE, XXH128) # define XXH3_128bits XXH_NAME2(XXH_NAMESPACE, XXH3_128bits) # define XXH3_128bits_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSeed) # define XXH3_128bits_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_withSecret) # define XXH3_128bits_reset XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset) # define XXH3_128bits_reset_withSeed XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSeed) # define XXH3_128bits_reset_withSecret XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_reset_withSecret) # define XXH3_128bits_update XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_update) # define XXH3_128bits_digest XXH_NAME2(XXH_NAMESPACE, XXH3_128bits_digest) # define XXH128_isEqual XXH_NAME2(XXH_NAMESPACE, XXH128_isEqual) # define XXH128_cmp XXH_NAME2(XXH_NAMESPACE, XXH128_cmp) # define XXH128_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH128_canonicalFromHash) # define XXH128_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH128_hashFromCanonical) #endif /* ************************************* * Version ***************************************/ #define XXH_VERSION_MAJOR 0 #define XXH_VERSION_MINOR 8 #define XXH_VERSION_RELEASE 0 #define XXH_VERSION_NUMBER (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE) /*! * @brief Obtains the xxHash version. * * This is only useful when xxHash is compiled as a shared library, as it is * independent of the version defined in the header. * * @return `XXH_VERSION_NUMBER` as of when the function was compiled. */ XXH_PUBLIC_API unsigned XXH_versionNumber (void); /* **************************** * Definitions ******************************/ #include /* size_t */ typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode; /*-********************************************************************** * 32-bit hash ************************************************************************/ #if defined(XXH_DOXYGEN) /* Don't show include */ /*! * @brief An unsigned 32-bit integer. * * Not necessarily defined to `uint32_t` but functionally equivalent. */ typedef uint32_t XXH32_hash_t; #elif !defined (__VMS) \ && (defined (__cplusplus) \ || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) # include typedef uint32_t XXH32_hash_t; #else # include # if UINT_MAX == 0xFFFFFFFFUL typedef unsigned int XXH32_hash_t; # else # if ULONG_MAX == 0xFFFFFFFFUL typedef unsigned long XXH32_hash_t; # else # error "unsupported platform: need a 32-bit type" # endif # endif #endif /*! * @} * * @defgroup xxh32_family XXH32 family * @ingroup public * Contains functions used in the classic 32-bit xxHash algorithm. * * @note * XXH32 is considered rather weak by today's standards. * The @ref xxh3_family provides competitive speed for both 32-bit and 64-bit * systems, and offers true 64/128 bit hash results. It provides a superior * level of dispersion, and greatly reduces the risks of collisions. * * @see @ref xxh64_family, @ref xxh3_family : Other xxHash families * @see @ref xxh32_impl for implementation details * @{ */ /*! * @brief Calculates the 32-bit hash of @p input using xxHash32. * * Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark): 5.4 GB/s * * @param input The block of data to be hashed, at least @p length bytes in size. * @param length The length of @p input, in bytes. * @param seed The 32-bit seed to alter the hash's output predictably. * * @pre * The memory between @p input and @p input + @p length must be valid, * readable, contiguous memory. However, if @p length is `0`, @p input may be * `NULL`. In C++, this also must be *TriviallyCopyable*. * * @return The calculated 32-bit hash value. * * @see * XXH64(), XXH3_64bits_withSeed(), XXH3_128bits_withSeed(), XXH128(): * Direct equivalents for the other variants of xxHash. * @see * XXH32_createState(), XXH32_update(), XXH32_digest(): Streaming version. */ XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t length, XXH32_hash_t seed); /*! * Streaming functions generate the xxHash value from an incremental input. * This method is slower than single-call functions, due to state management. * For small inputs, prefer `XXH32()` and `XXH64()`, which are better optimized. * * An XXH state must first be allocated using `XXH*_createState()`. * * Start a new hash by initializing the state with a seed using `XXH*_reset()`. * * Then, feed the hash state by calling `XXH*_update()` as many times as necessary. * * The function returns an error code, with 0 meaning OK, and any other value * meaning there is an error. * * Finally, a hash value can be produced anytime, by using `XXH*_digest()`. * This function returns the nn-bits hash as an int or long long. * * It's still possible to continue inserting input into the hash state after a * digest, and generate new hash values later on by invoking `XXH*_digest()`. * * When done, release the state using `XXH*_freeState()`. * * Example code for incrementally hashing a file: * @code{.c} * #include * #include * #define BUFFER_SIZE 256 * * // Note: XXH64 and XXH3 use the same interface. * XXH32_hash_t * hashFile(FILE* stream) * { * XXH32_state_t* state; * unsigned char buf[BUFFER_SIZE]; * size_t amt; * XXH32_hash_t hash; * * state = XXH32_createState(); // Create a state * assert(state != NULL); // Error check here * XXH32_reset(state, 0xbaad5eed); // Reset state with our seed * while ((amt = fread(buf, 1, sizeof(buf), stream)) != 0) { * XXH32_update(state, buf, amt); // Hash the file in chunks * } * hash = XXH32_digest(state); // Finalize the hash * XXH32_freeState(state); // Clean up * return hash; * } * @endcode */ /*! * @typedef struct XXH32_state_s XXH32_state_t * @brief The opaque state struct for the XXH32 streaming API. * * @see XXH32_state_s for details. */ typedef struct XXH32_state_s XXH32_state_t; /*! * @brief Allocates an @ref XXH32_state_t. * * Must be freed with XXH32_freeState(). * @return An allocated XXH32_state_t on success, `NULL` on failure. */ XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void); /*! * @brief Frees an @ref XXH32_state_t. * * Must be allocated with XXH32_createState(). * @param statePtr A pointer to an @ref XXH32_state_t allocated with @ref XXH32_createState(). * @return XXH_OK. */ XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr); /*! * @brief Copies one @ref XXH32_state_t to another. * * @param dst_state The state to copy to. * @param src_state The state to copy from. * @pre * @p dst_state and @p src_state must not be `NULL` and must not overlap. */ XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dst_state, const XXH32_state_t* src_state); /*! * @brief Resets an @ref XXH32_state_t to begin a new hash. * * This function resets and seeds a state. Call it before @ref XXH32_update(). * * @param statePtr The state struct to reset. * @param seed The 32-bit seed to alter the hash result predictably. * * @pre * @p statePtr must not be `NULL`. * * @return @ref XXH_OK on success, @ref XXH_ERROR on failure. */ XXH_PUBLIC_API XXH_errorcode XXH32_reset (XXH32_state_t* statePtr, XXH32_hash_t seed); /*! * @brief Consumes a block of @p input to an @ref XXH32_state_t. * * Call this to incrementally consume blocks of data. * * @param statePtr The state struct to update. * @param input The block of data to be hashed, at least @p length bytes in size. * @param length The length of @p input, in bytes. * * @pre * @p statePtr must not be `NULL`. * @pre * The memory between @p input and @p input + @p length must be valid, * readable, contiguous memory. However, if @p length is `0`, @p input may be * `NULL`. In C++, this also must be *TriviallyCopyable*. * * @return @ref XXH_OK on success, @ref XXH_ERROR on failure. */ XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* statePtr, const void* input, size_t length); /*! * @brief Returns the calculated hash value from an @ref XXH32_state_t. * * @note * Calling XXH32_digest() will not affect @p statePtr, so you can update, * digest, and update again. * * @param statePtr The state struct to calculate the hash from. * * @pre * @p statePtr must not be `NULL`. * * @return The calculated xxHash32 value from that state. */ XXH_PUBLIC_API XXH32_hash_t XXH32_digest (const XXH32_state_t* statePtr); /******* Canonical representation *******/ /* * The default return values from XXH functions are unsigned 32 and 64 bit * integers. * This the simplest and fastest format for further post-processing. * * However, this leaves open the question of what is the order on the byte level, * since little and big endian conventions will store the same number differently. * * The canonical representation settles this issue by mandating big-endian * convention, the same convention as human-readable numbers (large digits first). * * When writing hash values to storage, sending them over a network, or printing * them, it's highly recommended to use the canonical representation to ensure * portability across a wider range of systems, present and future. * * The following functions allow transformation of hash values to and from * canonical format. */ /*! * @brief Canonical (big endian) representation of @ref XXH32_hash_t. */ typedef struct { unsigned char digest[4]; /*!< Hash bytes, big endian */ } XXH32_canonical_t; /*! * @brief Converts an @ref XXH32_hash_t to a big endian @ref XXH32_canonical_t. * * @param dst The @ref XXH32_canonical_t pointer to be stored to. * @param hash The @ref XXH32_hash_t to be converted. * * @pre * @p dst must not be `NULL`. */ XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash); /*! * @brief Converts an @ref XXH32_canonical_t to a native @ref XXH32_hash_t. * * @param src The @ref XXH32_canonical_t to convert. * * @pre * @p src must not be `NULL`. * * @return The converted hash. */ XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src); /*! * @} * @ingroup public * @{ */ #ifndef XXH_NO_LONG_LONG /*-********************************************************************** * 64-bit hash ************************************************************************/ #if defined(XXH_DOXYGEN) /* don't include */ /*! * @brief An unsigned 64-bit integer. * * Not necessarily defined to `uint64_t` but functionally equivalent. */ typedef uint64_t XXH64_hash_t; #elif !defined (__VMS) \ && (defined (__cplusplus) \ || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) # include typedef uint64_t XXH64_hash_t; #else # include # if defined(__LP64__) && ULONG_MAX == 0xFFFFFFFFFFFFFFFFULL /* LP64 ABI says uint64_t is unsigned long */ typedef unsigned long XXH64_hash_t; # else /* the following type must have a width of 64-bit */ typedef unsigned long long XXH64_hash_t; # endif #endif /*! * @} * * @defgroup xxh64_family XXH64 family * @ingroup public * @{ * Contains functions used in the classic 64-bit xxHash algorithm. * * @note * XXH3 provides competitive speed for both 32-bit and 64-bit systems, * and offers true 64/128 bit hash results. It provides a superior level of * dispersion, and greatly reduces the risks of collisions. */ /*! * @brief Calculates the 64-bit hash of @p input using xxHash64. * * This function usually runs faster on 64-bit systems, but slower on 32-bit * systems (see benchmark). * * @param input The block of data to be hashed, at least @p length bytes in size. * @param length The length of @p input, in bytes. * @param seed The 64-bit seed to alter the hash's output predictably. * * @pre * The memory between @p input and @p input + @p length must be valid, * readable, contiguous memory. However, if @p length is `0`, @p input may be * `NULL`. In C++, this also must be *TriviallyCopyable*. * * @return The calculated 64-bit hash. * * @see * XXH32(), XXH3_64bits_withSeed(), XXH3_128bits_withSeed(), XXH128(): * Direct equivalents for the other variants of xxHash. * @see * XXH64_createState(), XXH64_update(), XXH64_digest(): Streaming version. */ XXH_PUBLIC_API XXH64_hash_t XXH64(const void* input, size_t length, XXH64_hash_t seed); /******* Streaming *******/ /*! * @brief The opaque state struct for the XXH64 streaming API. * * @see XXH64_state_s for details. */ typedef struct XXH64_state_s XXH64_state_t; /* incomplete type */ XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void); XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr); XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dst_state, const XXH64_state_t* src_state); XXH_PUBLIC_API XXH_errorcode XXH64_reset (XXH64_state_t* statePtr, XXH64_hash_t seed); XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* statePtr, const void* input, size_t length); XXH_PUBLIC_API XXH64_hash_t XXH64_digest (const XXH64_state_t* statePtr); /******* Canonical representation *******/ typedef struct { unsigned char digest[sizeof(XXH64_hash_t)]; } XXH64_canonical_t; XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash); XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src); /*! * @} * ************************************************************************ * @defgroup xxh3_family XXH3 family * @ingroup public * @{ * * XXH3 is a more recent hash algorithm featuring: * - Improved speed for both small and large inputs * - True 64-bit and 128-bit outputs * - SIMD acceleration * - Improved 32-bit viability * * Speed analysis methodology is explained here: * * https://fastcompression.blogspot.com/2019/03/presenting-xxh3.html * * Compared to XXH64, expect XXH3 to run approximately * ~2x faster on large inputs and >3x faster on small ones, * exact differences vary depending on platform. * * XXH3's speed benefits greatly from SIMD and 64-bit arithmetic, * but does not require it. * Any 32-bit and 64-bit targets that can run XXH32 smoothly * can run XXH3 at competitive speeds, even without vector support. * Further details are explained in the implementation. * * Optimized implementations are provided for AVX512, AVX2, SSE2, NEON, POWER8, * ZVector and scalar targets. This can be controlled via the XXH_VECTOR macro. * * XXH3 implementation is portable: * it has a generic C90 formulation that can be compiled on any platform, * all implementations generage exactly the same hash value on all platforms. * Starting from v0.8.0, it's also labelled "stable", meaning that * any future version will also generate the same hash value. * * XXH3 offers 2 variants, _64bits and _128bits. * * When only 64 bits are needed, prefer invoking the _64bits variant, as it * reduces the amount of mixing, resulting in faster speed on small inputs. * It's also generally simpler to manipulate a scalar return type than a struct. * * The API supports one-shot hashing, streaming mode, and custom secrets. */ /*-********************************************************************** * XXH3 64-bit variant ************************************************************************/ /* XXH3_64bits(): * default 64-bit variant, using default secret and default seed of 0. * It's the fastest variant. */ XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(const void* data, size_t len); /* * XXH3_64bits_withSeed(): * This variant generates a custom secret on the fly * based on default secret altered using the `seed` value. * While this operation is decently fast, note that it's not completely free. * Note: seed==0 produces the same results as XXH3_64bits(). */ XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSeed(const void* data, size_t len, XXH64_hash_t seed); /*! * The bare minimum size for a custom secret. * * @see * XXH3_64bits_withSecret(), XXH3_64bits_reset_withSecret(), * XXH3_128bits_withSecret(), XXH3_128bits_reset_withSecret(). */ #define XXH3_SECRET_SIZE_MIN 136 /* * XXH3_64bits_withSecret(): * It's possible to provide any blob of bytes as a "secret" to generate the hash. * This makes it more difficult for an external actor to prepare an intentional collision. * The main condition is that secretSize *must* be large enough (>= XXH3_SECRET_SIZE_MIN). * However, the quality of produced hash values depends on secret's entropy. * Technically, the secret must look like a bunch of random bytes. * Avoid "trivial" or structured data such as repeated sequences or a text document. * Whenever unsure about the "randomness" of the blob of bytes, * consider relabelling it as a "custom seed" instead, * and employ "XXH3_generateSecret()" (see below) * to generate a high entropy secret derived from the custom seed. */ XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSecret(const void* data, size_t len, const void* secret, size_t secretSize); /******* Streaming *******/ /* * Streaming requires state maintenance. * This operation costs memory and CPU. * As a consequence, streaming is slower than one-shot hashing. * For better performance, prefer one-shot functions whenever applicable. */ /*! * @brief The state struct for the XXH3 streaming API. * * @see XXH3_state_s for details. */ typedef struct XXH3_state_s XXH3_state_t; XXH_PUBLIC_API XXH3_state_t* XXH3_createState(void); XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr); XXH_PUBLIC_API void XXH3_copyState(XXH3_state_t* dst_state, const XXH3_state_t* src_state); /* * XXH3_64bits_reset(): * Initialize with default parameters. * digest will be equivalent to `XXH3_64bits()`. */ XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset(XXH3_state_t* statePtr); /* * XXH3_64bits_reset_withSeed(): * Generate a custom secret from `seed`, and store it into `statePtr`. * digest will be equivalent to `XXH3_64bits_withSeed()`. */ XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed); /* * XXH3_64bits_reset_withSecret(): * `secret` is referenced, it _must outlive_ the hash streaming session. * Similar to one-shot API, `secretSize` must be >= `XXH3_SECRET_SIZE_MIN`, * and the quality of produced hash values depends on secret's entropy * (secret's content should look like a bunch of random bytes). * When in doubt about the randomness of a candidate `secret`, * consider employing `XXH3_generateSecret()` instead (see below). */ XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize); XXH_PUBLIC_API XXH_errorcode XXH3_64bits_update (XXH3_state_t* statePtr, const void* input, size_t length); XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (const XXH3_state_t* statePtr); /* note : canonical representation of XXH3 is the same as XXH64 * since they both produce XXH64_hash_t values */ /*-********************************************************************** * XXH3 128-bit variant ************************************************************************/ /*! * @brief The return value from 128-bit hashes. * * Stored in little endian order, although the fields themselves are in native * endianness. */ typedef struct { XXH64_hash_t low64; /*!< `value & 0xFFFFFFFFFFFFFFFF` */ XXH64_hash_t high64; /*!< `value >> 64` */ } XXH128_hash_t; XXH_PUBLIC_API XXH128_hash_t XXH3_128bits(const void* data, size_t len); XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSeed(const void* data, size_t len, XXH64_hash_t seed); XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSecret(const void* data, size_t len, const void* secret, size_t secretSize); /******* Streaming *******/ /* * Streaming requires state maintenance. * This operation costs memory and CPU. * As a consequence, streaming is slower than one-shot hashing. * For better performance, prefer one-shot functions whenever applicable. * * XXH3_128bits uses the same XXH3_state_t as XXH3_64bits(). * Use already declared XXH3_createState() and XXH3_freeState(). * * All reset and streaming functions have same meaning as their 64-bit counterpart. */ XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset(XXH3_state_t* statePtr); XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed); XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize); XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update (XXH3_state_t* statePtr, const void* input, size_t length); XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest (const XXH3_state_t* statePtr); /* Following helper functions make it possible to compare XXH128_hast_t values. * Since XXH128_hash_t is a structure, this capability is not offered by the language. * Note: For better performance, these functions can be inlined using XXH_INLINE_ALL */ /*! * XXH128_isEqual(): * Return: 1 if `h1` and `h2` are equal, 0 if they are not. */ XXH_PUBLIC_API int XXH128_isEqual(XXH128_hash_t h1, XXH128_hash_t h2); /*! * XXH128_cmp(): * * This comparator is compatible with stdlib's `qsort()`/`bsearch()`. * * return: >0 if *h128_1 > *h128_2 * =0 if *h128_1 == *h128_2 * <0 if *h128_1 < *h128_2 */ XXH_PUBLIC_API int XXH128_cmp(const void* h128_1, const void* h128_2); /******* Canonical representation *******/ typedef struct { unsigned char digest[sizeof(XXH128_hash_t)]; } XXH128_canonical_t; XXH_PUBLIC_API void XXH128_canonicalFromHash(XXH128_canonical_t* dst, XXH128_hash_t hash); XXH_PUBLIC_API XXH128_hash_t XXH128_hashFromCanonical(const XXH128_canonical_t* src); #endif /* XXH_NO_LONG_LONG */ /*! * @} */ #endif /* XXHASH_H_5627135585666179 */ #if defined(XXH_STATIC_LINKING_ONLY) && !defined(XXHASH_H_STATIC_13879238742) #define XXHASH_H_STATIC_13879238742 /* **************************************************************************** * This section contains declarations which are not guaranteed to remain stable. * They may change in future versions, becoming incompatible with a different * version of the library. * These declarations should only be used with static linking. * Never use them in association with dynamic linking! ***************************************************************************** */ /* * These definitions are only present to allow static allocation * of XXH states, on stack or in a struct, for example. * Never **ever** access their members directly. */ /*! * @internal * @brief Structure for XXH32 streaming API. * * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is * an opaque type. This allows fields to safely be changed. * * Typedef'd to @ref XXH32_state_t. * Do not access the members of this struct directly. * @see XXH64_state_s, XXH3_state_s */ struct XXH32_state_s { XXH32_hash_t total_len_32; /*!< Total length hashed, modulo 2^32 */ XXH32_hash_t large_len; /*!< Whether the hash is >= 16 (handles @ref total_len_32 overflow) */ XXH32_hash_t v1; /*!< First accumulator lane */ XXH32_hash_t v2; /*!< Second accumulator lane */ XXH32_hash_t v3; /*!< Third accumulator lane */ XXH32_hash_t v4; /*!< Fourth accumulator lane */ XXH32_hash_t mem32[4]; /*!< Internal buffer for partial reads. Treated as unsigned char[16]. */ XXH32_hash_t memsize; /*!< Amount of data in @ref mem32 */ XXH32_hash_t reserved; /*!< Reserved field. Do not read or write to it, it may be removed. */ }; /* typedef'd to XXH32_state_t */ #ifndef XXH_NO_LONG_LONG /* defined when there is no 64-bit support */ /*! * @internal * @brief Structure for XXH64 streaming API. * * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is * an opaque type. This allows fields to safely be changed. * * Typedef'd to @ref XXH64_state_t. * Do not access the members of this struct directly. * @see XXH32_state_s, XXH3_state_s */ struct XXH64_state_s { XXH64_hash_t total_len; /*!< Total length hashed. This is always 64-bit. */ XXH64_hash_t v1; /*!< First accumulator lane */ XXH64_hash_t v2; /*!< Second accumulator lane */ XXH64_hash_t v3; /*!< Third accumulator lane */ XXH64_hash_t v4; /*!< Fourth accumulator lane */ XXH64_hash_t mem64[4]; /*!< Internal buffer for partial reads. Treated as unsigned char[32]. */ XXH32_hash_t memsize; /*!< Amount of data in @ref mem64 */ XXH32_hash_t reserved32; /*!< Reserved field, needed for padding anyways*/ XXH64_hash_t reserved64; /*!< Reserved field. Do not read or write to it, it may be removed. */ }; /* typedef'd to XXH64_state_t */ #if defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) /* C11+ */ # include # define XXH_ALIGN(n) alignas(n) #elif defined(__GNUC__) # define XXH_ALIGN(n) __attribute__ ((aligned(n))) #elif defined(_MSC_VER) # define XXH_ALIGN(n) __declspec(align(n)) #else # define XXH_ALIGN(n) /* disabled */ #endif /* Old GCC versions only accept the attribute after the type in structures. */ #if !(defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) /* C11+ */ \ && defined(__GNUC__) # define XXH_ALIGN_MEMBER(align, type) type XXH_ALIGN(align) #else # define XXH_ALIGN_MEMBER(align, type) XXH_ALIGN(align) type #endif /*! * @brief The size of the internal XXH3 buffer. * * This is the optimal update size for incremental hashing. * * @see XXH3_64b_update(), XXH3_128b_update(). */ #define XXH3_INTERNALBUFFER_SIZE 256 /*! * @brief Default size of the secret buffer (and @ref XXH3_kSecret). * * This is the size used in @ref XXH3_kSecret and the seeded functions. * * Not to be confused with @ref XXH3_SECRET_SIZE_MIN. */ #define XXH3_SECRET_DEFAULT_SIZE 192 /*! * @internal * @brief Structure for XXH3 streaming API. * * @note This is only defined when @ref XXH_STATIC_LINKING_ONLY, * @ref XXH_INLINE_ALL, or @ref XXH_IMPLEMENTATION is defined. Otherwise it is * an opaque type. This allows fields to safely be changed. * * @note **This structure has a strict alignment requirement of 64 bytes.** Do * not allocate this with `malloc()` or `new`, it will not be sufficiently * aligned. Use @ref XXH3_createState() and @ref XXH3_freeState(), or stack * allocation. * * Typedef'd to @ref XXH3_state_t. * Do not access the members of this struct directly. * * @see XXH3_INITSTATE() for stack initialization. * @see XXH3_createState(), XXH3_freeState(). * @see XXH32_state_s, XXH64_state_s */ struct XXH3_state_s { XXH_ALIGN_MEMBER(64, XXH64_hash_t acc[8]); /*!< The 8 accumulators. Similar to `vN` in @ref XXH32_state_s::v1 and @ref XXH64_state_s */ XXH_ALIGN_MEMBER(64, unsigned char customSecret[XXH3_SECRET_DEFAULT_SIZE]); /*!< Used to store a custom secret generated from a seed. */ XXH_ALIGN_MEMBER(64, unsigned char buffer[XXH3_INTERNALBUFFER_SIZE]); /*!< The internal buffer. @see XXH32_state_s::mem32 */ XXH32_hash_t bufferedSize; /*!< The amount of memory in @ref buffer, @see XXH32_state_s::memsize */ XXH32_hash_t reserved32; /*!< Reserved field. Needed for padding on 64-bit. */ size_t nbStripesSoFar; /*!< Number or stripes processed. */ XXH64_hash_t totalLen; /*!< Total length hashed. 64-bit even on 32-bit targets. */ size_t nbStripesPerBlock; /*!< Number of stripes per block. */ size_t secretLimit; /*!< Size of @ref customSecret or @ref extSecret */ XXH64_hash_t seed; /*!< Seed for _withSeed variants. Must be zero otherwise, @see XXH3_INITSTATE() */ XXH64_hash_t reserved64; /*!< Reserved field. */ const unsigned char* extSecret; /*!< Reference to an external secret for the _withSecret variants, NULL * for other variants. */ /* note: there may be some padding at the end due to alignment on 64 bytes */ }; /* typedef'd to XXH3_state_t */ #undef XXH_ALIGN_MEMBER /*! * @brief Initializes a stack-allocated `XXH3_state_s`. * * When the @ref XXH3_state_t structure is merely emplaced on stack, * it should be initialized with XXH3_INITSTATE() or a memset() * in case its first reset uses XXH3_NNbits_reset_withSeed(). * This init can be omitted if the first reset uses default or _withSecret mode. * This operation isn't necessary when the state is created with XXH3_createState(). * Note that this doesn't prepare the state for a streaming operation, * it's still necessary to use XXH3_NNbits_reset*() afterwards. */ #define XXH3_INITSTATE(XXH3_state_ptr) { (XXH3_state_ptr)->seed = 0; } /* === Experimental API === */ /* Symbols defined below must be considered tied to a specific library version. */ /* * XXH3_generateSecret(): * * Derive a high-entropy secret from any user-defined content, named customSeed. * The generated secret can be used in combination with `*_withSecret()` functions. * The `_withSecret()` variants are useful to provide a higher level of protection than 64-bit seed, * as it becomes much more difficult for an external actor to guess how to impact the calculation logic. * * The function accepts as input a custom seed of any length and any content, * and derives from it a high-entropy secret of length XXH3_SECRET_DEFAULT_SIZE * into an already allocated buffer secretBuffer. * The generated secret is _always_ XXH_SECRET_DEFAULT_SIZE bytes long. * * The generated secret can then be used with any `*_withSecret()` variant. * Functions `XXH3_128bits_withSecret()`, `XXH3_64bits_withSecret()`, * `XXH3_128bits_reset_withSecret()` and `XXH3_64bits_reset_withSecret()` * are part of this list. They all accept a `secret` parameter * which must be very long for implementation reasons (>= XXH3_SECRET_SIZE_MIN) * _and_ feature very high entropy (consist of random-looking bytes). * These conditions can be a high bar to meet, so * this function can be used to generate a secret of proper quality. * * customSeed can be anything. It can have any size, even small ones, * and its content can be anything, even stupidly "low entropy" source such as a bunch of zeroes. * The resulting `secret` will nonetheless provide all expected qualities. * * Supplying NULL as the customSeed copies the default secret into `secretBuffer`. * When customSeedSize > 0, supplying NULL as customSeed is undefined behavior. */ XXH_PUBLIC_API void XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSeedSize); /* simple short-cut to pre-selected XXH3_128bits variant */ XXH_PUBLIC_API XXH128_hash_t XXH128(const void* data, size_t len, XXH64_hash_t seed); #endif /* XXH_NO_LONG_LONG */ #if defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API) # define XXH_IMPLEMENTATION #endif #endif /* defined(XXH_STATIC_LINKING_ONLY) && !defined(XXHASH_H_STATIC_13879238742) */ /* ======================================================================== */ /* ======================================================================== */ /* ======================================================================== */ /*-********************************************************************** * xxHash implementation *-********************************************************************** * xxHash's implementation used to be hosted inside xxhash.c. * * However, inlining requires implementation to be visible to the compiler, * hence be included alongside the header. * Previously, implementation was hosted inside xxhash.c, * which was then #included when inlining was activated. * This construction created issues with a few build and install systems, * as it required xxhash.c to be stored in /include directory. * * xxHash implementation is now directly integrated within xxhash.h. * As a consequence, xxhash.c is no longer needed in /include. * * xxhash.c is still available and is still useful. * In a "normal" setup, when xxhash is not inlined, * xxhash.h only exposes the prototypes and public symbols, * while xxhash.c can be built into an object file xxhash.o * which can then be linked into the final binary. ************************************************************************/ #if ( defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API) \ || defined(XXH_IMPLEMENTATION) ) && !defined(XXH_IMPLEM_13a8737387) # define XXH_IMPLEM_13a8737387 /* ************************************* * Tuning parameters ***************************************/ /*! * @defgroup tuning Tuning parameters * @{ * * Various macros to control xxHash's behavior. */ #ifdef XXH_DOXYGEN /*! * @brief Define this to disable 64-bit code. * * Useful if only using the @ref xxh32_family and you have a strict C90 compiler. */ # define XXH_NO_LONG_LONG # undef XXH_NO_LONG_LONG /* don't actually */ /*! * @brief Controls how unaligned memory is accessed. * * By default, access to unaligned memory is controlled by `memcpy()`, which is * safe and portable. * * Unfortunately, on some target/compiler combinations, the generated assembly * is sub-optimal. * * The below switch allow selection of a different access method * in the search for improved performance. * * @par Possible options: * * - `XXH_FORCE_MEMORY_ACCESS=0` (default): `memcpy` * @par * Use `memcpy()`. Safe and portable. Note that most modern compilers will * eliminate the function call and treat it as an unaligned access. * * - `XXH_FORCE_MEMORY_ACCESS=1`: `__attribute__((packed))` * @par * Depends on compiler extensions and is therefore not portable. * This method is safe _if_ your compiler supports it, * and *generally* as fast or faster than `memcpy`. * * - `XXH_FORCE_MEMORY_ACCESS=2`: Direct cast * @par * Casts directly and dereferences. This method doesn't depend on the * compiler, but it violates the C standard as it directly dereferences an * unaligned pointer. It can generate buggy code on targets which do not * support unaligned memory accesses, but in some circumstances, it's the * only known way to get the most performance. * * - `XXH_FORCE_MEMORY_ACCESS=3`: Byteshift * @par * Also portable. This can generate the best code on old compilers which don't * inline small `memcpy()` calls, and it might also be faster on big-endian * systems which lack a native byteswap instruction. However, some compilers * will emit literal byteshifts even if the target supports unaligned access. * . * * @warning * Methods 1 and 2 rely on implementation-defined behavior. Use these with * care, as what works on one compiler/platform/optimization level may cause * another to read garbage data or even crash. * * See https://stackoverflow.com/a/32095106/646947 for details. * * Prefer these methods in priority order (0 > 3 > 1 > 2) */ # define XXH_FORCE_MEMORY_ACCESS 0 /*! * @def XXH_ACCEPT_NULL_INPUT_POINTER * @brief Whether to add explicit `NULL` checks. * * If the input pointer is `NULL` and the length is non-zero, xxHash's default * behavior is to dereference it, triggering a segfault. * * When this macro is enabled, xxHash actively checks the input for a null pointer. * If it is, the result for null input pointers is the same as a zero-length input. */ # define XXH_ACCEPT_NULL_INPUT_POINTER 0 /*! * @def XXH_FORCE_ALIGN_CHECK * @brief If defined to non-zero, adds a special path for aligned inputs (XXH32() * and XXH64() only). * * This is an important performance trick for architectures without decent * unaligned memory access performance. * * It checks for input alignment, and when conditions are met, uses a "fast * path" employing direct 32-bit/64-bit reads, resulting in _dramatically * faster_ read speed. * * The check costs one initial branch per hash, which is generally negligible, * but not zero. * * Moreover, it's not useful to generate an additional code path if memory * access uses the same instruction for both aligned and unaligned * addresses (e.g. x86 and aarch64). * * In these cases, the alignment check can be removed by setting this macro to 0. * Then the code will always use unaligned memory access. * Align check is automatically disabled on x86, x64 & arm64, * which are platforms known to offer good unaligned memory accesses performance. * * This option does not affect XXH3 (only XXH32 and XXH64). */ # define XXH_FORCE_ALIGN_CHECK 0 /*! * @def XXH_NO_INLINE_HINTS * @brief When non-zero, sets all functions to `static`. * * By default, xxHash tries to force the compiler to inline almost all internal * functions. * * This can usually improve performance due to reduced jumping and improved * constant folding, but significantly increases the size of the binary which * might not be favorable. * * Additionally, sometimes the forced inlining can be detrimental to performance, * depending on the architecture. * * XXH_NO_INLINE_HINTS marks all internal functions as static, giving the * compiler full control on whether to inline or not. * * When not optimizing (-O0), optimizing for size (-Os, -Oz), or using * -fno-inline with GCC or Clang, this will automatically be defined. */ # define XXH_NO_INLINE_HINTS 0 /*! * @def XXH_REROLL * @brief Whether to reroll `XXH32_finalize` and `XXH64_finalize`. * * For performance, `XXH32_finalize` and `XXH64_finalize` use an unrolled loop * in the form of a switch statement. * * This is not always desirable, as it generates larger code, and depending on * the architecture, may even be slower * * This is automatically defined with `-Os`/`-Oz` on GCC and Clang. */ # define XXH_REROLL 0 /*! * @internal * @brief Redefines old internal names. * * For compatibility with code that uses xxHash's internals before the names * were changed to improve namespacing. There is no other reason to use this. */ # define XXH_OLD_NAMES # undef XXH_OLD_NAMES /* don't actually use, it is ugly. */ #endif /* XXH_DOXYGEN */ /*! * @} */ #ifndef XXH_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */ /* prefer __packed__ structures (method 1) for gcc on armv7 and armv8 */ # if !defined(__clang__) && ( \ (defined(__INTEL_COMPILER) && !defined(_WIN32)) || \ (defined(__GNUC__) && (defined(__ARM_ARCH) && __ARM_ARCH >= 7)) ) # define XXH_FORCE_MEMORY_ACCESS 1 # endif #endif #ifndef XXH_ACCEPT_NULL_INPUT_POINTER /* can be defined externally */ # define XXH_ACCEPT_NULL_INPUT_POINTER 0 #endif #ifndef XXH_FORCE_ALIGN_CHECK /* can be defined externally */ # if defined(__i386) || defined(__x86_64__) || defined(__aarch64__) \ || defined(_M_IX86) || defined(_M_X64) || defined(_M_ARM64) /* visual */ # define XXH_FORCE_ALIGN_CHECK 0 # else # define XXH_FORCE_ALIGN_CHECK 1 # endif #endif #ifndef XXH_NO_INLINE_HINTS # if defined(__OPTIMIZE_SIZE__) /* -Os, -Oz */ \ || defined(__NO_INLINE__) /* -O0, -fno-inline */ # define XXH_NO_INLINE_HINTS 1 # else # define XXH_NO_INLINE_HINTS 0 # endif #endif #ifndef XXH_REROLL # if defined(__OPTIMIZE_SIZE__) # define XXH_REROLL 1 # else # define XXH_REROLL 0 # endif #endif /*! * @defgroup impl Implementation * @{ */ /* ************************************* * Includes & Memory related functions ***************************************/ /* * Modify the local functions below should you wish to use * different memory routines for malloc() and free() */ #include /*! * @internal * @brief Modify this function to use a different routine than malloc(). */ static void* XXH_malloc(size_t s) { return malloc(s); } /*! * @internal * @brief Modify this function to use a different routine than free(). */ static void XXH_free(void* p) { free(p); } #include /*! * @internal * @brief Modify this function to use a different routine than memcpy(). */ static void* XXH_memcpy(void* dest, const void* src, size_t size) { return memcpy(dest,src,size); } #include /* ULLONG_MAX */ /* ************************************* * Compiler Specific Options ***************************************/ #ifdef _MSC_VER /* Visual Studio warning fix */ # pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ #endif #if XXH_NO_INLINE_HINTS /* disable inlining hints */ # if defined(__GNUC__) # define XXH_FORCE_INLINE static __attribute__((unused)) # else # define XXH_FORCE_INLINE static # endif # define XXH_NO_INLINE static /* enable inlining hints */ #elif defined(_MSC_VER) /* Visual Studio */ # define XXH_FORCE_INLINE static __forceinline # define XXH_NO_INLINE static __declspec(noinline) #elif defined(__GNUC__) # define XXH_FORCE_INLINE static __inline__ __attribute__((always_inline, unused)) # define XXH_NO_INLINE static __attribute__((noinline)) #elif defined (__cplusplus) \ || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) /* C99 */ # define XXH_FORCE_INLINE static inline # define XXH_NO_INLINE static #else # define XXH_FORCE_INLINE static # define XXH_NO_INLINE static #endif /* ************************************* * Debug ***************************************/ /*! * @ingroup tuning * @def XXH_DEBUGLEVEL * @brief Sets the debugging level. * * XXH_DEBUGLEVEL is expected to be defined externally, typically via the * compiler's command line options. The value must be a number. */ #ifndef XXH_DEBUGLEVEL # ifdef DEBUGLEVEL /* backwards compat */ # define XXH_DEBUGLEVEL DEBUGLEVEL # else # define XXH_DEBUGLEVEL 0 # endif #endif #if (XXH_DEBUGLEVEL>=1) # include /* note: can still be disabled with NDEBUG */ # define XXH_ASSERT(c) assert(c) #else # define XXH_ASSERT(c) ((void)0) #endif /* note: use after variable declarations */ #define XXH_STATIC_ASSERT(c) do { enum { XXH_sa = 1/(int)(!!(c)) }; } while (0) /* ************************************* * Basic Types ***************************************/ #if !defined (__VMS) \ && (defined (__cplusplus) \ || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) # include typedef uint8_t xxh_u8; #else typedef unsigned char xxh_u8; #endif typedef XXH32_hash_t xxh_u32; #ifdef XXH_OLD_NAMES # define BYTE xxh_u8 # define U8 xxh_u8 # define U32 xxh_u32 #endif /* *** Memory access *** */ /*! * @internal * @fn xxh_u32 XXH_read32(const void* ptr) * @brief Reads an unaligned 32-bit integer from @p ptr in native endianness. * * Affected by @ref XXH_FORCE_MEMORY_ACCESS. * * @param ptr The pointer to read from. * @return The 32-bit native endian integer from the bytes at @p ptr. */ /*! * @internal * @fn xxh_u32 XXH_readLE32(const void* ptr) * @brief Reads an unaligned 32-bit little endian integer from @p ptr. * * Affected by @ref XXH_FORCE_MEMORY_ACCESS. * * @param ptr The pointer to read from. * @return The 32-bit little endian integer from the bytes at @p ptr. */ /*! * @internal * @fn xxh_u32 XXH_readBE32(const void* ptr) * @brief Reads an unaligned 32-bit big endian integer from @p ptr. * * Affected by @ref XXH_FORCE_MEMORY_ACCESS. * * @param ptr The pointer to read from. * @return The 32-bit big endian integer from the bytes at @p ptr. */ /*! * @internal * @fn xxh_u32 XXH_readLE32_align(const void* ptr, XXH_alignment align) * @brief Like @ref XXH_readLE32(), but has an option for aligned reads. * * Affected by @ref XXH_FORCE_MEMORY_ACCESS. * Note that when @ref XXH_FORCE_ALIGN_CHECK == 0, the @p align parameter is * always @ref XXH_alignment::XXH_unaligned. * * @param ptr The pointer to read from. * @param align Whether @p ptr is aligned. * @pre * If @p align == @ref XXH_alignment::XXH_aligned, @p ptr must be 4 byte * aligned. * @return The 32-bit little endian integer from the bytes at @p ptr. */ #if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) /* * Manual byteshift. Best for old compilers which don't inline memcpy. * We actually directly use XXH_readLE32 and XXH_readBE32. */ #elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2)) /* * Force direct memory access. Only works on CPU which support unaligned memory * access in hardware. */ static xxh_u32 XXH_read32(const void* memPtr) { return *(const xxh_u32*) memPtr; } #elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1)) /* * __pack instructions are safer but compiler specific, hence potentially * problematic for some compilers. * * Currently only defined for GCC and ICC. */ #ifdef XXH_OLD_NAMES typedef union { xxh_u32 u32; } __attribute__((packed)) unalign; #endif static xxh_u32 XXH_read32(const void* ptr) { typedef union { xxh_u32 u32; } __attribute__((packed)) xxh_unalign; return ((const xxh_unalign*)ptr)->u32; } #else /* * Portable and safe solution. Generally efficient. * see: https://stackoverflow.com/a/32095106/646947 */ static xxh_u32 XXH_read32(const void* memPtr) { xxh_u32 val; memcpy(&val, memPtr, sizeof(val)); return val; } #endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */ /* *** Endianness *** */ typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess; /*! * @ingroup tuning * @def XXH_CPU_LITTLE_ENDIAN * @brief Whether the target is little endian. * * Defined to 1 if the target is little endian, or 0 if it is big endian. * It can be defined externally, for example on the compiler command line. * * If it is not defined, a runtime check (which is usually constant folded) * is used instead. * * @note * This is not necessarily defined to an integer constant. * * @see XXH_isLittleEndian() for the runtime check. */ #ifndef XXH_CPU_LITTLE_ENDIAN /* * Try to detect endianness automatically, to avoid the nonstandard behavior * in `XXH_isLittleEndian()` */ # if defined(_WIN32) /* Windows is always little endian */ \ || defined(__LITTLE_ENDIAN__) \ || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) # define XXH_CPU_LITTLE_ENDIAN 1 # elif defined(__BIG_ENDIAN__) \ || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) # define XXH_CPU_LITTLE_ENDIAN 0 # else /*! * @internal * @brief Runtime check for @ref XXH_CPU_LITTLE_ENDIAN. * * Most compilers will constant fold this. */ static int XXH_isLittleEndian(void) { /* * Portable and well-defined behavior. * Don't use static: it is detrimental to performance. */ const union { xxh_u32 u; xxh_u8 c[4]; } one = { 1 }; return one.c[0]; } # define XXH_CPU_LITTLE_ENDIAN XXH_isLittleEndian() # endif #endif /* **************************************** * Compiler-specific Functions and Macros ******************************************/ #define XXH_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) #ifdef __has_builtin # define XXH_HAS_BUILTIN(x) __has_builtin(x) #else # define XXH_HAS_BUILTIN(x) 0 #endif /*! * @internal * @def XXH_rotl32(x,r) * @brief 32-bit rotate left. * * @param x The 32-bit integer to be rotated. * @param r The number of bits to rotate. * @pre * @p r > 0 && @p r < 32 * @note * @p x and @p r may be evaluated multiple times. * @return The rotated result. */ #if !defined(NO_CLANG_BUILTIN) && XXH_HAS_BUILTIN(__builtin_rotateleft32) \ && XXH_HAS_BUILTIN(__builtin_rotateleft64) # define XXH_rotl32 __builtin_rotateleft32 # define XXH_rotl64 __builtin_rotateleft64 /* Note: although _rotl exists for minGW (GCC under windows), performance seems poor */ #elif defined(_MSC_VER) # define XXH_rotl32(x,r) _rotl(x,r) # define XXH_rotl64(x,r) _rotl64(x,r) #else # define XXH_rotl32(x,r) (((x) << (r)) | ((x) >> (32 - (r)))) # define XXH_rotl64(x,r) (((x) << (r)) | ((x) >> (64 - (r)))) #endif /*! * @internal * @fn xxh_u32 XXH_swap32(xxh_u32 x) * @brief A 32-bit byteswap. * * @param x The 32-bit integer to byteswap. * @return @p x, byteswapped. */ #if defined(_MSC_VER) /* Visual Studio */ # define XXH_swap32 _byteswap_ulong #elif XXH_GCC_VERSION >= 403 # define XXH_swap32 __builtin_bswap32 #else static xxh_u32 XXH_swap32 (xxh_u32 x) { return ((x << 24) & 0xff000000 ) | ((x << 8) & 0x00ff0000 ) | ((x >> 8) & 0x0000ff00 ) | ((x >> 24) & 0x000000ff ); } #endif /* *************************** * Memory reads *****************************/ /*! * @internal * @brief Enum to indicate whether a pointer is aligned. */ typedef enum { XXH_aligned, /*!< Aligned */ XXH_unaligned /*!< Possibly unaligned */ } XXH_alignment; /* * XXH_FORCE_MEMORY_ACCESS==3 is an endian-independent byteshift load. * * This is ideal for older compilers which don't inline memcpy. */ #if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) XXH_FORCE_INLINE xxh_u32 XXH_readLE32(const void* memPtr) { const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; return bytePtr[0] | ((xxh_u32)bytePtr[1] << 8) | ((xxh_u32)bytePtr[2] << 16) | ((xxh_u32)bytePtr[3] << 24); } XXH_FORCE_INLINE xxh_u32 XXH_readBE32(const void* memPtr) { const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; return bytePtr[3] | ((xxh_u32)bytePtr[2] << 8) | ((xxh_u32)bytePtr[1] << 16) | ((xxh_u32)bytePtr[0] << 24); } #else XXH_FORCE_INLINE xxh_u32 XXH_readLE32(const void* ptr) { return XXH_CPU_LITTLE_ENDIAN ? XXH_read32(ptr) : XXH_swap32(XXH_read32(ptr)); } static xxh_u32 XXH_readBE32(const void* ptr) { return XXH_CPU_LITTLE_ENDIAN ? XXH_swap32(XXH_read32(ptr)) : XXH_read32(ptr); } #endif XXH_FORCE_INLINE xxh_u32 XXH_readLE32_align(const void* ptr, XXH_alignment align) { if (align==XXH_unaligned) { return XXH_readLE32(ptr); } else { return XXH_CPU_LITTLE_ENDIAN ? *(const xxh_u32*)ptr : XXH_swap32(*(const xxh_u32*)ptr); } } /* ************************************* * Misc ***************************************/ /*! @ingroup public */ XXH_PUBLIC_API unsigned XXH_versionNumber (void) { return XXH_VERSION_NUMBER; } /* ******************************************************************* * 32-bit hash functions *********************************************************************/ /*! * @} * @defgroup xxh32_impl XXH32 implementation * @ingroup impl * @{ */ static const xxh_u32 XXH_PRIME32_1 = 0x9E3779B1U; /*!< 0b10011110001101110111100110110001 */ static const xxh_u32 XXH_PRIME32_2 = 0x85EBCA77U; /*!< 0b10000101111010111100101001110111 */ static const xxh_u32 XXH_PRIME32_3 = 0xC2B2AE3DU; /*!< 0b11000010101100101010111000111101 */ static const xxh_u32 XXH_PRIME32_4 = 0x27D4EB2FU; /*!< 0b00100111110101001110101100101111 */ static const xxh_u32 XXH_PRIME32_5 = 0x165667B1U; /*!< 0b00010110010101100110011110110001 */ #ifdef XXH_OLD_NAMES # define PRIME32_1 XXH_PRIME32_1 # define PRIME32_2 XXH_PRIME32_2 # define PRIME32_3 XXH_PRIME32_3 # define PRIME32_4 XXH_PRIME32_4 # define PRIME32_5 XXH_PRIME32_5 #endif /*! * @internal * @brief Normal stripe processing routine. * * This shuffles the bits so that any bit from @p input impacts several bits in * @p acc. * * @param acc The accumulator lane. * @param input The stripe of input to mix. * @return The mixed accumulator lane. */ static xxh_u32 XXH32_round(xxh_u32 acc, xxh_u32 input) { acc += input * XXH_PRIME32_2; acc = XXH_rotl32(acc, 13); acc *= XXH_PRIME32_1; #if defined(__GNUC__) && defined(__SSE4_1__) && !defined(XXH_ENABLE_AUTOVECTORIZE) /* * UGLY HACK: * This inline assembly hack forces acc into a normal register. This is the * only thing that prevents GCC and Clang from autovectorizing the XXH32 * loop (pragmas and attributes don't work for some reason) without globally * disabling SSE4.1. * * The reason we want to avoid vectorization is because despite working on * 4 integers at a time, there are multiple factors slowing XXH32 down on * SSE4: * - There's a ridiculous amount of lag from pmulld (10 cycles of latency on * newer chips!) making it slightly slower to multiply four integers at * once compared to four integers independently. Even when pmulld was * fastest, Sandy/Ivy Bridge, it is still not worth it to go into SSE * just to multiply unless doing a long operation. * * - Four instructions are required to rotate, * movqda tmp, v // not required with VEX encoding * pslld tmp, 13 // tmp <<= 13 * psrld v, 19 // x >>= 19 * por v, tmp // x |= tmp * compared to one for scalar: * roll v, 13 // reliably fast across the board * shldl v, v, 13 // Sandy Bridge and later prefer this for some reason * * - Instruction level parallelism is actually more beneficial here because * the SIMD actually serializes this operation: While v1 is rotating, v2 * can load data, while v3 can multiply. SSE forces them to operate * together. * * How this hack works: * __asm__("" // Declare an assembly block but don't declare any instructions * : // However, as an Input/Output Operand, * "+r" // constrain a read/write operand (+) as a general purpose register (r). * (acc) // and set acc as the operand * ); * * Because of the 'r', the compiler has promised that seed will be in a * general purpose register and the '+' says that it will be 'read/write', * so it has to assume it has changed. It is like volatile without all the * loads and stores. * * Since the argument has to be in a normal register (not an SSE register), * each time XXH32_round is called, it is impossible to vectorize. */ __asm__("" : "+r" (acc)); #endif return acc; } /*! * @internal * @brief Mixes all bits to finalize the hash. * * The final mix ensures that all input bits have a chance to impact any bit in * the output digest, resulting in an unbiased distribution. * * @param h32 The hash to avalanche. * @return The avalanched hash. */ static xxh_u32 XXH32_avalanche(xxh_u32 h32) { h32 ^= h32 >> 15; h32 *= XXH_PRIME32_2; h32 ^= h32 >> 13; h32 *= XXH_PRIME32_3; h32 ^= h32 >> 16; return(h32); } #define XXH_get32bits(p) XXH_readLE32_align(p, align) /*! * @internal * @brief Processes the last 0-15 bytes of @p ptr. * * There may be up to 15 bytes remaining to consume from the input. * This final stage will digest them to ensure that all input bytes are present * in the final mix. * * @param h32 The hash to finalize. * @param ptr The pointer to the remaining input. * @param len The remaining length, modulo 16. * @param align Whether @p ptr is aligned. * @return The finalized hash. */ static xxh_u32 XXH32_finalize(xxh_u32 h32, const xxh_u8* ptr, size_t len, XXH_alignment align) { #define XXH_PROCESS1 do { \ h32 += (*ptr++) * XXH_PRIME32_5; \ h32 = XXH_rotl32(h32, 11) * XXH_PRIME32_1; \ } while (0) #define XXH_PROCESS4 do { \ h32 += XXH_get32bits(ptr) * XXH_PRIME32_3; \ ptr += 4; \ h32 = XXH_rotl32(h32, 17) * XXH_PRIME32_4; \ } while (0) /* Compact rerolled version */ if (XXH_REROLL) { len &= 15; while (len >= 4) { XXH_PROCESS4; len -= 4; } while (len > 0) { XXH_PROCESS1; --len; } return XXH32_avalanche(h32); } else { switch(len&15) /* or switch(bEnd - p) */ { case 12: XXH_PROCESS4; /* fallthrough */ case 8: XXH_PROCESS4; /* fallthrough */ case 4: XXH_PROCESS4; return XXH32_avalanche(h32); case 13: XXH_PROCESS4; /* fallthrough */ case 9: XXH_PROCESS4; /* fallthrough */ case 5: XXH_PROCESS4; XXH_PROCESS1; return XXH32_avalanche(h32); case 14: XXH_PROCESS4; /* fallthrough */ case 10: XXH_PROCESS4; /* fallthrough */ case 6: XXH_PROCESS4; XXH_PROCESS1; XXH_PROCESS1; return XXH32_avalanche(h32); case 15: XXH_PROCESS4; /* fallthrough */ case 11: XXH_PROCESS4; /* fallthrough */ case 7: XXH_PROCESS4; /* fallthrough */ case 3: XXH_PROCESS1; /* fallthrough */ case 2: XXH_PROCESS1; /* fallthrough */ case 1: XXH_PROCESS1; /* fallthrough */ case 0: return XXH32_avalanche(h32); } XXH_ASSERT(0); return h32; /* reaching this point is deemed impossible */ } } #ifdef XXH_OLD_NAMES # define PROCESS1 XXH_PROCESS1 # define PROCESS4 XXH_PROCESS4 #else # undef XXH_PROCESS1 # undef XXH_PROCESS4 #endif /*! * @internal * @brief The implementation for @ref XXH32(). * * @param input, len, seed Directly passed from @ref XXH32(). * @param align Whether @p input is aligned. * @return The calculated hash. */ XXH_FORCE_INLINE xxh_u32 XXH32_endian_align(const xxh_u8* input, size_t len, xxh_u32 seed, XXH_alignment align) { const xxh_u8* bEnd = input + len; xxh_u32 h32; #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) if (input==NULL) { len=0; bEnd=input=(const xxh_u8*)(size_t)16; } #endif if (len>=16) { const xxh_u8* const limit = bEnd - 15; xxh_u32 v1 = seed + XXH_PRIME32_1 + XXH_PRIME32_2; xxh_u32 v2 = seed + XXH_PRIME32_2; xxh_u32 v3 = seed + 0; xxh_u32 v4 = seed - XXH_PRIME32_1; do { v1 = XXH32_round(v1, XXH_get32bits(input)); input += 4; v2 = XXH32_round(v2, XXH_get32bits(input)); input += 4; v3 = XXH32_round(v3, XXH_get32bits(input)); input += 4; v4 = XXH32_round(v4, XXH_get32bits(input)); input += 4; } while (input < limit); h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, 12) + XXH_rotl32(v4, 18); } else { h32 = seed + XXH_PRIME32_5; } h32 += (xxh_u32)len; return XXH32_finalize(h32, input, len&15, align); } /*! @ingroup xxh32_family */ XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t len, XXH32_hash_t seed) { #if 0 /* Simple version, good for code maintenance, but unfortunately slow for small inputs */ XXH32_state_t state; XXH32_reset(&state, seed); XXH32_update(&state, (const xxh_u8*)input, len); return XXH32_digest(&state); #else if (XXH_FORCE_ALIGN_CHECK) { if ((((size_t)input) & 3) == 0) { /* Input is 4-bytes aligned, leverage the speed benefit */ return XXH32_endian_align((const xxh_u8*)input, len, seed, XXH_aligned); } } return XXH32_endian_align((const xxh_u8*)input, len, seed, XXH_unaligned); #endif } /******* Hash streaming *******/ /*! * @ingroup xxh32_family */ XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void) { return (XXH32_state_t*)XXH_malloc(sizeof(XXH32_state_t)); } /*! @ingroup xxh32_family */ XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr) { XXH_free(statePtr); return XXH_OK; } /*! @ingroup xxh32_family */ XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dstState, const XXH32_state_t* srcState) { memcpy(dstState, srcState, sizeof(*dstState)); } /*! @ingroup xxh32_family */ XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, XXH32_hash_t seed) { XXH32_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnings */ memset(&state, 0, sizeof(state)); state.v1 = seed + XXH_PRIME32_1 + XXH_PRIME32_2; state.v2 = seed + XXH_PRIME32_2; state.v3 = seed + 0; state.v4 = seed - XXH_PRIME32_1; /* do not write into reserved, planned to be removed in a future version */ memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved)); return XXH_OK; } /*! @ingroup xxh32_family */ XXH_PUBLIC_API XXH_errorcode XXH32_update(XXH32_state_t* state, const void* input, size_t len) { if (input==NULL) #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) return XXH_OK; #else return XXH_ERROR; #endif { const xxh_u8* p = (const xxh_u8*)input; const xxh_u8* const bEnd = p + len; state->total_len_32 += (XXH32_hash_t)len; state->large_len |= (XXH32_hash_t)((len>=16) | (state->total_len_32>=16)); if (state->memsize + len < 16) { /* fill in tmp buffer */ XXH_memcpy((xxh_u8*)(state->mem32) + state->memsize, input, len); state->memsize += (XXH32_hash_t)len; return XXH_OK; } if (state->memsize) { /* some data left from previous update */ XXH_memcpy((xxh_u8*)(state->mem32) + state->memsize, input, 16-state->memsize); { const xxh_u32* p32 = state->mem32; state->v1 = XXH32_round(state->v1, XXH_readLE32(p32)); p32++; state->v2 = XXH32_round(state->v2, XXH_readLE32(p32)); p32++; state->v3 = XXH32_round(state->v3, XXH_readLE32(p32)); p32++; state->v4 = XXH32_round(state->v4, XXH_readLE32(p32)); } p += 16-state->memsize; state->memsize = 0; } if (p <= bEnd-16) { const xxh_u8* const limit = bEnd - 16; xxh_u32 v1 = state->v1; xxh_u32 v2 = state->v2; xxh_u32 v3 = state->v3; xxh_u32 v4 = state->v4; do { v1 = XXH32_round(v1, XXH_readLE32(p)); p+=4; v2 = XXH32_round(v2, XXH_readLE32(p)); p+=4; v3 = XXH32_round(v3, XXH_readLE32(p)); p+=4; v4 = XXH32_round(v4, XXH_readLE32(p)); p+=4; } while (p<=limit); state->v1 = v1; state->v2 = v2; state->v3 = v3; state->v4 = v4; } if (p < bEnd) { XXH_memcpy(state->mem32, p, (size_t)(bEnd-p)); state->memsize = (unsigned)(bEnd-p); } } return XXH_OK; } /*! @ingroup xxh32_family */ XXH_PUBLIC_API XXH32_hash_t XXH32_digest(const XXH32_state_t* state) { xxh_u32 h32; if (state->large_len) { h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18); } else { h32 = state->v3 /* == seed */ + XXH_PRIME32_5; } h32 += state->total_len_32; return XXH32_finalize(h32, (const xxh_u8*)state->mem32, state->memsize, XXH_aligned); } /******* Canonical representation *******/ /*! * @ingroup xxh32_family * The default return values from XXH functions are unsigned 32 and 64 bit * integers. * * The canonical representation uses big endian convention, the same convention * as human-readable numbers (large digits first). * * This way, hash values can be written into a file or buffer, remaining * comparable across different systems. * * The following functions allow transformation of hash values to and from their * canonical format. */ XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash) { XXH_STATIC_ASSERT(sizeof(XXH32_canonical_t) == sizeof(XXH32_hash_t)); if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap32(hash); memcpy(dst, &hash, sizeof(*dst)); } /*! @ingroup xxh32_family */ XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src) { return XXH_readBE32(src); } #ifndef XXH_NO_LONG_LONG /* ******************************************************************* * 64-bit hash functions *********************************************************************/ /*! * @} * @ingroup impl * @{ */ /******* Memory access *******/ typedef XXH64_hash_t xxh_u64; #ifdef XXH_OLD_NAMES # define U64 xxh_u64 #endif /*! * XXH_REROLL_XXH64: * Whether to reroll the XXH64_finalize() loop. * * Just like XXH32, we can unroll the XXH64_finalize() loop. This can be a * performance gain on 64-bit hosts, as only one jump is required. * * However, on 32-bit hosts, because arithmetic needs to be done with two 32-bit * registers, and 64-bit arithmetic needs to be simulated, it isn't beneficial * to unroll. The code becomes ridiculously large (the largest function in the * binary on i386!), and rerolling it saves anywhere from 3kB to 20kB. It is * also slightly faster because it fits into cache better and is more likely * to be inlined by the compiler. * * If XXH_REROLL is defined, this is ignored and the loop is always rerolled. */ #ifndef XXH_REROLL_XXH64 # if (defined(__ILP32__) || defined(_ILP32)) /* ILP32 is often defined on 32-bit GCC family */ \ || !(defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) /* x86-64 */ \ || defined(_M_ARM64) || defined(__aarch64__) || defined(__arm64__) /* aarch64 */ \ || defined(__PPC64__) || defined(__PPC64LE__) || defined(__ppc64__) || defined(__powerpc64__) /* ppc64 */ \ || defined(__mips64__) || defined(__mips64)) /* mips64 */ \ || (!defined(SIZE_MAX) || SIZE_MAX < ULLONG_MAX) /* check limits */ # define XXH_REROLL_XXH64 1 # else # define XXH_REROLL_XXH64 0 # endif #endif /* !defined(XXH_REROLL_XXH64) */ #if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) /* * Manual byteshift. Best for old compilers which don't inline memcpy. * We actually directly use XXH_readLE64 and XXH_readBE64. */ #elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2)) /* Force direct memory access. Only works on CPU which support unaligned memory access in hardware */ static xxh_u64 XXH_read64(const void* memPtr) { return *(const xxh_u64*) memPtr; } #elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1)) /* * __pack instructions are safer, but compiler specific, hence potentially * problematic for some compilers. * * Currently only defined for GCC and ICC. */ #ifdef XXH_OLD_NAMES typedef union { xxh_u32 u32; xxh_u64 u64; } __attribute__((packed)) unalign64; #endif static xxh_u64 XXH_read64(const void* ptr) { typedef union { xxh_u32 u32; xxh_u64 u64; } __attribute__((packed)) xxh_unalign64; return ((const xxh_unalign64*)ptr)->u64; } #else /* * Portable and safe solution. Generally efficient. * see: https://stackoverflow.com/a/32095106/646947 */ static xxh_u64 XXH_read64(const void* memPtr) { xxh_u64 val; memcpy(&val, memPtr, sizeof(val)); return val; } #endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */ #if defined(_MSC_VER) /* Visual Studio */ # define XXH_swap64 _byteswap_uint64 #elif XXH_GCC_VERSION >= 403 # define XXH_swap64 __builtin_bswap64 #else static xxh_u64 XXH_swap64(xxh_u64 x) { return ((x << 56) & 0xff00000000000000ULL) | ((x << 40) & 0x00ff000000000000ULL) | ((x << 24) & 0x0000ff0000000000ULL) | ((x << 8) & 0x000000ff00000000ULL) | ((x >> 8) & 0x00000000ff000000ULL) | ((x >> 24) & 0x0000000000ff0000ULL) | ((x >> 40) & 0x000000000000ff00ULL) | ((x >> 56) & 0x00000000000000ffULL); } #endif /* XXH_FORCE_MEMORY_ACCESS==3 is an endian-independent byteshift load. */ #if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==3)) XXH_FORCE_INLINE xxh_u64 XXH_readLE64(const void* memPtr) { const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; return bytePtr[0] | ((xxh_u64)bytePtr[1] << 8) | ((xxh_u64)bytePtr[2] << 16) | ((xxh_u64)bytePtr[3] << 24) | ((xxh_u64)bytePtr[4] << 32) | ((xxh_u64)bytePtr[5] << 40) | ((xxh_u64)bytePtr[6] << 48) | ((xxh_u64)bytePtr[7] << 56); } XXH_FORCE_INLINE xxh_u64 XXH_readBE64(const void* memPtr) { const xxh_u8* bytePtr = (const xxh_u8 *)memPtr; return bytePtr[7] | ((xxh_u64)bytePtr[6] << 8) | ((xxh_u64)bytePtr[5] << 16) | ((xxh_u64)bytePtr[4] << 24) | ((xxh_u64)bytePtr[3] << 32) | ((xxh_u64)bytePtr[2] << 40) | ((xxh_u64)bytePtr[1] << 48) | ((xxh_u64)bytePtr[0] << 56); } #else XXH_FORCE_INLINE xxh_u64 XXH_readLE64(const void* ptr) { return XXH_CPU_LITTLE_ENDIAN ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr)); } static xxh_u64 XXH_readBE64(const void* ptr) { return XXH_CPU_LITTLE_ENDIAN ? XXH_swap64(XXH_read64(ptr)) : XXH_read64(ptr); } #endif XXH_FORCE_INLINE xxh_u64 XXH_readLE64_align(const void* ptr, XXH_alignment align) { if (align==XXH_unaligned) return XXH_readLE64(ptr); else return XXH_CPU_LITTLE_ENDIAN ? *(const xxh_u64*)ptr : XXH_swap64(*(const xxh_u64*)ptr); } /******* xxh64 *******/ /*! * @} * @defgroup xxh64_impl XXH64 implementation * @ingroup impl * @{ */ static const xxh_u64 XXH_PRIME64_1 = 0x9E3779B185EBCA87ULL; /*!< 0b1001111000110111011110011011000110000101111010111100101010000111 */ static const xxh_u64 XXH_PRIME64_2 = 0xC2B2AE3D27D4EB4FULL; /*!< 0b1100001010110010101011100011110100100111110101001110101101001111 */ static const xxh_u64 XXH_PRIME64_3 = 0x165667B19E3779F9ULL; /*!< 0b0001011001010110011001111011000110011110001101110111100111111001 */ static const xxh_u64 XXH_PRIME64_4 = 0x85EBCA77C2B2AE63ULL; /*!< 0b1000010111101011110010100111011111000010101100101010111001100011 */ static const xxh_u64 XXH_PRIME64_5 = 0x27D4EB2F165667C5ULL; /*!< 0b0010011111010100111010110010111100010110010101100110011111000101 */ #ifdef XXH_OLD_NAMES # define PRIME64_1 XXH_PRIME64_1 # define PRIME64_2 XXH_PRIME64_2 # define PRIME64_3 XXH_PRIME64_3 # define PRIME64_4 XXH_PRIME64_4 # define PRIME64_5 XXH_PRIME64_5 #endif static xxh_u64 XXH64_round(xxh_u64 acc, xxh_u64 input) { acc += input * XXH_PRIME64_2; acc = XXH_rotl64(acc, 31); acc *= XXH_PRIME64_1; return acc; } static xxh_u64 XXH64_mergeRound(xxh_u64 acc, xxh_u64 val) { val = XXH64_round(0, val); acc ^= val; acc = acc * XXH_PRIME64_1 + XXH_PRIME64_4; return acc; } static xxh_u64 XXH64_avalanche(xxh_u64 h64) { h64 ^= h64 >> 33; h64 *= XXH_PRIME64_2; h64 ^= h64 >> 29; h64 *= XXH_PRIME64_3; h64 ^= h64 >> 32; return h64; } #define XXH_get64bits(p) XXH_readLE64_align(p, align) static xxh_u64 XXH64_finalize(xxh_u64 h64, const xxh_u8* ptr, size_t len, XXH_alignment align) { #define XXH_PROCESS1_64 do { \ h64 ^= (*ptr++) * XXH_PRIME64_5; \ h64 = XXH_rotl64(h64, 11) * XXH_PRIME64_1; \ } while (0) #define XXH_PROCESS4_64 do { \ h64 ^= (xxh_u64)(XXH_get32bits(ptr)) * XXH_PRIME64_1; \ ptr += 4; \ h64 = XXH_rotl64(h64, 23) * XXH_PRIME64_2 + XXH_PRIME64_3; \ } while (0) #define XXH_PROCESS8_64 do { \ xxh_u64 const k1 = XXH64_round(0, XXH_get64bits(ptr)); \ ptr += 8; \ h64 ^= k1; \ h64 = XXH_rotl64(h64,27) * XXH_PRIME64_1 + XXH_PRIME64_4; \ } while (0) /* Rerolled version for 32-bit targets is faster and much smaller. */ if (XXH_REROLL || XXH_REROLL_XXH64) { len &= 31; while (len >= 8) { XXH_PROCESS8_64; len -= 8; } if (len >= 4) { XXH_PROCESS4_64; len -= 4; } while (len > 0) { XXH_PROCESS1_64; --len; } return XXH64_avalanche(h64); } else { switch(len & 31) { case 24: XXH_PROCESS8_64; /* fallthrough */ case 16: XXH_PROCESS8_64; /* fallthrough */ case 8: XXH_PROCESS8_64; return XXH64_avalanche(h64); case 28: XXH_PROCESS8_64; /* fallthrough */ case 20: XXH_PROCESS8_64; /* fallthrough */ case 12: XXH_PROCESS8_64; /* fallthrough */ case 4: XXH_PROCESS4_64; return XXH64_avalanche(h64); case 25: XXH_PROCESS8_64; /* fallthrough */ case 17: XXH_PROCESS8_64; /* fallthrough */ case 9: XXH_PROCESS8_64; XXH_PROCESS1_64; return XXH64_avalanche(h64); case 29: XXH_PROCESS8_64; /* fallthrough */ case 21: XXH_PROCESS8_64; /* fallthrough */ case 13: XXH_PROCESS8_64; /* fallthrough */ case 5: XXH_PROCESS4_64; XXH_PROCESS1_64; return XXH64_avalanche(h64); case 26: XXH_PROCESS8_64; /* fallthrough */ case 18: XXH_PROCESS8_64; /* fallthrough */ case 10: XXH_PROCESS8_64; XXH_PROCESS1_64; XXH_PROCESS1_64; return XXH64_avalanche(h64); case 30: XXH_PROCESS8_64; /* fallthrough */ case 22: XXH_PROCESS8_64; /* fallthrough */ case 14: XXH_PROCESS8_64; /* fallthrough */ case 6: XXH_PROCESS4_64; XXH_PROCESS1_64; XXH_PROCESS1_64; return XXH64_avalanche(h64); case 27: XXH_PROCESS8_64; /* fallthrough */ case 19: XXH_PROCESS8_64; /* fallthrough */ case 11: XXH_PROCESS8_64; XXH_PROCESS1_64; XXH_PROCESS1_64; XXH_PROCESS1_64; return XXH64_avalanche(h64); case 31: XXH_PROCESS8_64; /* fallthrough */ case 23: XXH_PROCESS8_64; /* fallthrough */ case 15: XXH_PROCESS8_64; /* fallthrough */ case 7: XXH_PROCESS4_64; /* fallthrough */ case 3: XXH_PROCESS1_64; /* fallthrough */ case 2: XXH_PROCESS1_64; /* fallthrough */ case 1: XXH_PROCESS1_64; /* fallthrough */ case 0: return XXH64_avalanche(h64); } } /* impossible to reach */ XXH_ASSERT(0); return 0; /* unreachable, but some compilers complain without it */ } #ifdef XXH_OLD_NAMES # define PROCESS1_64 XXH_PROCESS1_64 # define PROCESS4_64 XXH_PROCESS4_64 # define PROCESS8_64 XXH_PROCESS8_64 #else # undef XXH_PROCESS1_64 # undef XXH_PROCESS4_64 # undef XXH_PROCESS8_64 #endif XXH_FORCE_INLINE xxh_u64 XXH64_endian_align(const xxh_u8* input, size_t len, xxh_u64 seed, XXH_alignment align) { const xxh_u8* bEnd = input + len; xxh_u64 h64; #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) if (input==NULL) { len=0; bEnd=input=(const xxh_u8*)(size_t)32; } #endif if (len>=32) { const xxh_u8* const limit = bEnd - 32; xxh_u64 v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2; xxh_u64 v2 = seed + XXH_PRIME64_2; xxh_u64 v3 = seed + 0; xxh_u64 v4 = seed - XXH_PRIME64_1; do { v1 = XXH64_round(v1, XXH_get64bits(input)); input+=8; v2 = XXH64_round(v2, XXH_get64bits(input)); input+=8; v3 = XXH64_round(v3, XXH_get64bits(input)); input+=8; v4 = XXH64_round(v4, XXH_get64bits(input)); input+=8; } while (input<=limit); h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18); h64 = XXH64_mergeRound(h64, v1); h64 = XXH64_mergeRound(h64, v2); h64 = XXH64_mergeRound(h64, v3); h64 = XXH64_mergeRound(h64, v4); } else { h64 = seed + XXH_PRIME64_5; } h64 += (xxh_u64) len; return XXH64_finalize(h64, input, len, align); } /*! @ingroup xxh64_family */ XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t len, XXH64_hash_t seed) { #if 0 /* Simple version, good for code maintenance, but unfortunately slow for small inputs */ XXH64_state_t state; XXH64_reset(&state, seed); XXH64_update(&state, (const xxh_u8*)input, len); return XXH64_digest(&state); #else if (XXH_FORCE_ALIGN_CHECK) { if ((((size_t)input) & 7)==0) { /* Input is aligned, let's leverage the speed advantage */ return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_aligned); } } return XXH64_endian_align((const xxh_u8*)input, len, seed, XXH_unaligned); #endif } /******* Hash Streaming *******/ /*! @ingroup xxh64_family*/ XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void) { return (XXH64_state_t*)XXH_malloc(sizeof(XXH64_state_t)); } /*! @ingroup xxh64_family */ XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr) { XXH_free(statePtr); return XXH_OK; } /*! @ingroup xxh64_family */ XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dstState, const XXH64_state_t* srcState) { memcpy(dstState, srcState, sizeof(*dstState)); } /*! @ingroup xxh64_family */ XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, XXH64_hash_t seed) { XXH64_state_t state; /* use a local state to memcpy() in order to avoid strict-aliasing warnings */ memset(&state, 0, sizeof(state)); state.v1 = seed + XXH_PRIME64_1 + XXH_PRIME64_2; state.v2 = seed + XXH_PRIME64_2; state.v3 = seed + 0; state.v4 = seed - XXH_PRIME64_1; /* do not write into reserved64, might be removed in a future version */ memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved64)); return XXH_OK; } /*! @ingroup xxh64_family */ XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* state, const void* input, size_t len) { if (input==NULL) #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) return XXH_OK; #else return XXH_ERROR; #endif { const xxh_u8* p = (const xxh_u8*)input; const xxh_u8* const bEnd = p + len; state->total_len += len; if (state->memsize + len < 32) { /* fill in tmp buffer */ XXH_memcpy(((xxh_u8*)state->mem64) + state->memsize, input, len); state->memsize += (xxh_u32)len; return XXH_OK; } if (state->memsize) { /* tmp buffer is full */ XXH_memcpy(((xxh_u8*)state->mem64) + state->memsize, input, 32-state->memsize); state->v1 = XXH64_round(state->v1, XXH_readLE64(state->mem64+0)); state->v2 = XXH64_round(state->v2, XXH_readLE64(state->mem64+1)); state->v3 = XXH64_round(state->v3, XXH_readLE64(state->mem64+2)); state->v4 = XXH64_round(state->v4, XXH_readLE64(state->mem64+3)); p += 32 - state->memsize; state->memsize = 0; } if (p+32 <= bEnd) { const xxh_u8* const limit = bEnd - 32; xxh_u64 v1 = state->v1; xxh_u64 v2 = state->v2; xxh_u64 v3 = state->v3; xxh_u64 v4 = state->v4; do { v1 = XXH64_round(v1, XXH_readLE64(p)); p+=8; v2 = XXH64_round(v2, XXH_readLE64(p)); p+=8; v3 = XXH64_round(v3, XXH_readLE64(p)); p+=8; v4 = XXH64_round(v4, XXH_readLE64(p)); p+=8; } while (p<=limit); state->v1 = v1; state->v2 = v2; state->v3 = v3; state->v4 = v4; } if (p < bEnd) { XXH_memcpy(state->mem64, p, (size_t)(bEnd-p)); state->memsize = (unsigned)(bEnd-p); } } return XXH_OK; } /*! @ingroup xxh64_family */ XXH_PUBLIC_API XXH64_hash_t XXH64_digest(const XXH64_state_t* state) { xxh_u64 h64; if (state->total_len >= 32) { xxh_u64 const v1 = state->v1; xxh_u64 const v2 = state->v2; xxh_u64 const v3 = state->v3; xxh_u64 const v4 = state->v4; h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18); h64 = XXH64_mergeRound(h64, v1); h64 = XXH64_mergeRound(h64, v2); h64 = XXH64_mergeRound(h64, v3); h64 = XXH64_mergeRound(h64, v4); } else { h64 = state->v3 /*seed*/ + XXH_PRIME64_5; } h64 += (xxh_u64) state->total_len; return XXH64_finalize(h64, (const xxh_u8*)state->mem64, (size_t)state->total_len, XXH_aligned); } /******* Canonical representation *******/ /*! @ingroup xxh64_family */ XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash) { XXH_STATIC_ASSERT(sizeof(XXH64_canonical_t) == sizeof(XXH64_hash_t)); if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap64(hash); memcpy(dst, &hash, sizeof(*dst)); } /*! @ingroup xxh64_family */ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src) { return XXH_readBE64(src); } /* ********************************************************************* * XXH3 * New generation hash designed for speed on small keys and vectorization ************************************************************************ */ /*! * @} * @defgroup xxh3_impl XXH3 implementation * @ingroup impl * @{ */ /* === Compiler specifics === */ #if ((defined(sun) || defined(__sun)) && __cplusplus) /* Solaris includes __STDC_VERSION__ with C++. Tested with GCC 5.5 */ # define XXH_RESTRICT /* disable */ #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* >= C99 */ # define XXH_RESTRICT restrict #else /* Note: it might be useful to define __restrict or __restrict__ for some C++ compilers */ # define XXH_RESTRICT /* disable */ #endif #if (defined(__GNUC__) && (__GNUC__ >= 3)) \ || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) \ || defined(__clang__) # define XXH_likely(x) __builtin_expect(x, 1) # define XXH_unlikely(x) __builtin_expect(x, 0) #else # define XXH_likely(x) (x) # define XXH_unlikely(x) (x) #endif #if defined(__GNUC__) # if defined(__AVX2__) # include # elif defined(__SSE2__) # include # elif defined(__ARM_NEON__) || defined(__ARM_NEON) # define inline __inline__ /* circumvent a clang bug */ # include # undef inline # endif #elif defined(_MSC_VER) # include #endif /* * One goal of XXH3 is to make it fast on both 32-bit and 64-bit, while * remaining a true 64-bit/128-bit hash function. * * This is done by prioritizing a subset of 64-bit operations that can be * emulated without too many steps on the average 32-bit machine. * * For example, these two lines seem similar, and run equally fast on 64-bit: * * xxh_u64 x; * x ^= (x >> 47); // good * x ^= (x >> 13); // bad * * However, to a 32-bit machine, there is a major difference. * * x ^= (x >> 47) looks like this: * * x.lo ^= (x.hi >> (47 - 32)); * * while x ^= (x >> 13) looks like this: * * // note: funnel shifts are not usually cheap. * x.lo ^= (x.lo >> 13) | (x.hi << (32 - 13)); * x.hi ^= (x.hi >> 13); * * The first one is significantly faster than the second, simply because the * shift is larger than 32. This means: * - All the bits we need are in the upper 32 bits, so we can ignore the lower * 32 bits in the shift. * - The shift result will always fit in the lower 32 bits, and therefore, * we can ignore the upper 32 bits in the xor. * * Thanks to this optimization, XXH3 only requires these features to be efficient: * * - Usable unaligned access * - A 32-bit or 64-bit ALU * - If 32-bit, a decent ADC instruction * - A 32 or 64-bit multiply with a 64-bit result * - For the 128-bit variant, a decent byteswap helps short inputs. * * The first two are already required by XXH32, and almost all 32-bit and 64-bit * platforms which can run XXH32 can run XXH3 efficiently. * * Thumb-1, the classic 16-bit only subset of ARM's instruction set, is one * notable exception. * * First of all, Thumb-1 lacks support for the UMULL instruction which * performs the important long multiply. This means numerous __aeabi_lmul * calls. * * Second of all, the 8 functional registers are just not enough. * Setup for __aeabi_lmul, byteshift loads, pointers, and all arithmetic need * Lo registers, and this shuffling results in thousands more MOVs than A32. * * A32 and T32 don't have this limitation. They can access all 14 registers, * do a 32->64 multiply with UMULL, and the flexible operand allowing free * shifts is helpful, too. * * Therefore, we do a quick sanity check. * * If compiling Thumb-1 for a target which supports ARM instructions, we will * emit a warning, as it is not a "sane" platform to compile for. * * Usually, if this happens, it is because of an accident and you probably need * to specify -march, as you likely meant to compile for a newer architecture. * * Credit: large sections of the vectorial and asm source code paths * have been contributed by @easyaspi314 */ #if defined(__thumb__) && !defined(__thumb2__) && defined(__ARM_ARCH_ISA_ARM) # warning "XXH3 is highly inefficient without ARM or Thumb-2." #endif /* ========================================== * Vectorization detection * ========================================== */ #ifdef XXH_DOXYGEN /*! * @ingroup tuning * @brief Overrides the vectorization implementation chosen for XXH3. * * Can be defined to 0 to disable SIMD or any of the values mentioned in * @ref XXH_VECTOR_TYPE. * * If this is not defined, it uses predefined macros to determine the best * implementation. */ # define XXH_VECTOR XXH_SCALAR /*! * @ingroup tuning * @brief Possible values for @ref XXH_VECTOR. * * Note that these are actually implemented as macros. * * If this is not defined, it is detected automatically. * @ref XXH_X86DISPATCH overrides this. */ enum XXH_VECTOR_TYPE /* fake enum */ { XXH_SCALAR = 0, /*!< Portable scalar version */ XXH_SSE2 = 1, /*!< * SSE2 for Pentium 4, Opteron, all x86_64. * * @note SSE2 is also guaranteed on Windows 10, macOS, and * Android x86. */ XXH_AVX2 = 2, /*!< AVX2 for Haswell and Bulldozer */ XXH_AVX512 = 3, /*!< AVX512 for Skylake and Icelake */ XXH_NEON = 4, /*!< NEON for most ARMv7-A and all AArch64 */ XXH_VSX = 5, /*!< VSX and ZVector for POWER8/z13 (64-bit) */ }; /*! * @ingroup tuning * @brief Selects the minimum alignment for XXH3's accumulators. * * When using SIMD, this should match the alignment reqired for said vector * type, so, for example, 32 for AVX2. * * Default: Auto detected. */ # define XXH_ACC_ALIGN 8 #endif /* Actual definition */ #ifndef XXH_DOXYGEN # define XXH_SCALAR 0 # define XXH_SSE2 1 # define XXH_AVX2 2 # define XXH_AVX512 3 # define XXH_NEON 4 # define XXH_VSX 5 #endif #ifndef XXH_VECTOR /* can be defined on command line */ # if defined(__AVX512F__) # define XXH_VECTOR XXH_AVX512 # elif defined(__AVX2__) # define XXH_VECTOR XXH_AVX2 # elif defined(__SSE2__) || defined(_M_AMD64) || defined(_M_X64) || (defined(_M_IX86_FP) && (_M_IX86_FP == 2)) # define XXH_VECTOR XXH_SSE2 # elif defined(__GNUC__) /* msvc support maybe later */ \ && (defined(__ARM_NEON__) || defined(__ARM_NEON)) \ && (defined(__LITTLE_ENDIAN__) /* We only support little endian NEON */ \ || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) # define XXH_VECTOR XXH_NEON # elif (defined(__PPC64__) && defined(__POWER8_VECTOR__)) \ || (defined(__s390x__) && defined(__VEC__)) \ && defined(__GNUC__) /* TODO: IBM XL */ # define XXH_VECTOR XXH_VSX # else # define XXH_VECTOR XXH_SCALAR # endif #endif /* * Controls the alignment of the accumulator, * for compatibility with aligned vector loads, which are usually faster. */ #ifndef XXH_ACC_ALIGN # if defined(XXH_X86DISPATCH) # define XXH_ACC_ALIGN 64 /* for compatibility with avx512 */ # elif XXH_VECTOR == XXH_SCALAR /* scalar */ # define XXH_ACC_ALIGN 8 # elif XXH_VECTOR == XXH_SSE2 /* sse2 */ # define XXH_ACC_ALIGN 16 # elif XXH_VECTOR == XXH_AVX2 /* avx2 */ # define XXH_ACC_ALIGN 32 # elif XXH_VECTOR == XXH_NEON /* neon */ # define XXH_ACC_ALIGN 16 # elif XXH_VECTOR == XXH_VSX /* vsx */ # define XXH_ACC_ALIGN 16 # elif XXH_VECTOR == XXH_AVX512 /* avx512 */ # define XXH_ACC_ALIGN 64 # endif #endif #if defined(XXH_X86DISPATCH) || XXH_VECTOR == XXH_SSE2 \ || XXH_VECTOR == XXH_AVX2 || XXH_VECTOR == XXH_AVX512 # define XXH_SEC_ALIGN XXH_ACC_ALIGN #else # define XXH_SEC_ALIGN 8 #endif /* * UGLY HACK: * GCC usually generates the best code with -O3 for xxHash. * * However, when targeting AVX2, it is overzealous in its unrolling resulting * in code roughly 3/4 the speed of Clang. * * There are other issues, such as GCC splitting _mm256_loadu_si256 into * _mm_loadu_si128 + _mm256_inserti128_si256. This is an optimization which * only applies to Sandy and Ivy Bridge... which don't even support AVX2. * * That is why when compiling the AVX2 version, it is recommended to use either * -O2 -mavx2 -march=haswell * or * -O2 -mavx2 -mno-avx256-split-unaligned-load * for decent performance, or to use Clang instead. * * Fortunately, we can control the first one with a pragma that forces GCC into * -O2, but the other one we can't control without "failed to inline always * inline function due to target mismatch" warnings. */ #if XXH_VECTOR == XXH_AVX2 /* AVX2 */ \ && defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \ && defined(__OPTIMIZE__) && !defined(__OPTIMIZE_SIZE__) /* respect -O0 and -Os */ # pragma GCC push_options # pragma GCC optimize("-O2") #endif #if XXH_VECTOR == XXH_NEON /* * NEON's setup for vmlal_u32 is a little more complicated than it is on * SSE2, AVX2, and VSX. * * While PMULUDQ and VMULEUW both perform a mask, VMLAL.U32 performs an upcast. * * To do the same operation, the 128-bit 'Q' register needs to be split into * two 64-bit 'D' registers, performing this operation:: * * [ a | b ] * | '---------. .--------' | * | x | * | .---------' '--------. | * [ a & 0xFFFFFFFF | b & 0xFFFFFFFF ],[ a >> 32 | b >> 32 ] * * Due to significant changes in aarch64, the fastest method for aarch64 is * completely different than the fastest method for ARMv7-A. * * ARMv7-A treats D registers as unions overlaying Q registers, so modifying * D11 will modify the high half of Q5. This is similar to how modifying AH * will only affect bits 8-15 of AX on x86. * * VZIP takes two registers, and puts even lanes in one register and odd lanes * in the other. * * On ARMv7-A, this strangely modifies both parameters in place instead of * taking the usual 3-operand form. * * Therefore, if we want to do this, we can simply use a D-form VZIP.32 on the * lower and upper halves of the Q register to end up with the high and low * halves where we want - all in one instruction. * * vzip.32 d10, d11 @ d10 = { d10[0], d11[0] }; d11 = { d10[1], d11[1] } * * Unfortunately we need inline assembly for this: Instructions modifying two * registers at once is not possible in GCC or Clang's IR, and they have to * create a copy. * * aarch64 requires a different approach. * * In order to make it easier to write a decent compiler for aarch64, many * quirks were removed, such as conditional execution. * * NEON was also affected by this. * * aarch64 cannot access the high bits of a Q-form register, and writes to a * D-form register zero the high bits, similar to how writes to W-form scalar * registers (or DWORD registers on x86_64) work. * * The formerly free vget_high intrinsics now require a vext (with a few * exceptions) * * Additionally, VZIP was replaced by ZIP1 and ZIP2, which are the equivalent * of PUNPCKL* and PUNPCKH* in SSE, respectively, in order to only modify one * operand. * * The equivalent of the VZIP.32 on the lower and upper halves would be this * mess: * * ext v2.4s, v0.4s, v0.4s, #2 // v2 = { v0[2], v0[3], v0[0], v0[1] } * zip1 v1.2s, v0.2s, v2.2s // v1 = { v0[0], v2[0] } * zip2 v0.2s, v0.2s, v1.2s // v0 = { v0[1], v2[1] } * * Instead, we use a literal downcast, vmovn_u64 (XTN), and vshrn_n_u64 (SHRN): * * shrn v1.2s, v0.2d, #32 // v1 = (uint32x2_t)(v0 >> 32); * xtn v0.2s, v0.2d // v0 = (uint32x2_t)(v0 & 0xFFFFFFFF); * * This is available on ARMv7-A, but is less efficient than a single VZIP.32. */ /*! * Function-like macro: * void XXH_SPLIT_IN_PLACE(uint64x2_t &in, uint32x2_t &outLo, uint32x2_t &outHi) * { * outLo = (uint32x2_t)(in & 0xFFFFFFFF); * outHi = (uint32x2_t)(in >> 32); * in = UNDEFINED; * } */ # if !defined(XXH_NO_VZIP_HACK) /* define to disable */ \ && defined(__GNUC__) \ && !defined(__aarch64__) && !defined(__arm64__) # define XXH_SPLIT_IN_PLACE(in, outLo, outHi) \ do { \ /* Undocumented GCC/Clang operand modifier: %e0 = lower D half, %f0 = upper D half */ \ /* https://github.com/gcc-mirror/gcc/blob/38cf91e5/gcc/config/arm/arm.c#L22486 */ \ /* https://github.com/llvm-mirror/llvm/blob/2c4ca683/lib/Target/ARM/ARMAsmPrinter.cpp#L399 */ \ __asm__("vzip.32 %e0, %f0" : "+w" (in)); \ (outLo) = vget_low_u32 (vreinterpretq_u32_u64(in)); \ (outHi) = vget_high_u32(vreinterpretq_u32_u64(in)); \ } while (0) # else # define XXH_SPLIT_IN_PLACE(in, outLo, outHi) \ do { \ (outLo) = vmovn_u64 (in); \ (outHi) = vshrn_n_u64 ((in), 32); \ } while (0) # endif #endif /* XXH_VECTOR == XXH_NEON */ /* * VSX and Z Vector helpers. * * This is very messy, and any pull requests to clean this up are welcome. * * There are a lot of problems with supporting VSX and s390x, due to * inconsistent intrinsics, spotty coverage, and multiple endiannesses. */ #if XXH_VECTOR == XXH_VSX # if defined(__s390x__) # include # else /* gcc's altivec.h can have the unwanted consequence to unconditionally * #define bool, vector, and pixel keywords, * with bad consequences for programs already using these keywords for other purposes. * The paragraph defining these macros is skipped when __APPLE_ALTIVEC__ is defined. * __APPLE_ALTIVEC__ is _generally_ defined automatically by the compiler, * but it seems that, in some cases, it isn't. * Force the build macro to be defined, so that keywords are not altered. */ # if defined(__GNUC__) && !defined(__APPLE_ALTIVEC__) # define __APPLE_ALTIVEC__ # endif # include # endif typedef __vector unsigned long long xxh_u64x2; typedef __vector unsigned char xxh_u8x16; typedef __vector unsigned xxh_u32x4; # ifndef XXH_VSX_BE # if defined(__BIG_ENDIAN__) \ || (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) # define XXH_VSX_BE 1 # elif defined(__VEC_ELEMENT_REG_ORDER__) && __VEC_ELEMENT_REG_ORDER__ == __ORDER_BIG_ENDIAN__ # warning "-maltivec=be is not recommended. Please use native endianness." # define XXH_VSX_BE 1 # else # define XXH_VSX_BE 0 # endif # endif /* !defined(XXH_VSX_BE) */ # if XXH_VSX_BE # if defined(__POWER9_VECTOR__) || (defined(__clang__) && defined(__s390x__)) # define XXH_vec_revb vec_revb # else /*! * A polyfill for POWER9's vec_revb(). */ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_revb(xxh_u64x2 val) { xxh_u8x16 const vByteSwap = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08 }; return vec_perm(val, val, vByteSwap); } # endif # endif /* XXH_VSX_BE */ /*! * Performs an unaligned vector load and byte swaps it on big endian. */ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_loadu(const void *ptr) { xxh_u64x2 ret; memcpy(&ret, ptr, sizeof(xxh_u64x2)); # if XXH_VSX_BE ret = XXH_vec_revb(ret); # endif return ret; } /* * vec_mulo and vec_mule are very problematic intrinsics on PowerPC * * These intrinsics weren't added until GCC 8, despite existing for a while, * and they are endian dependent. Also, their meaning swap depending on version. * */ # if defined(__s390x__) /* s390x is always big endian, no issue on this platform */ # define XXH_vec_mulo vec_mulo # define XXH_vec_mule vec_mule # elif defined(__clang__) && XXH_HAS_BUILTIN(__builtin_altivec_vmuleuw) /* Clang has a better way to control this, we can just use the builtin which doesn't swap. */ # define XXH_vec_mulo __builtin_altivec_vmulouw # define XXH_vec_mule __builtin_altivec_vmuleuw # else /* gcc needs inline assembly */ /* Adapted from https://github.com/google/highwayhash/blob/master/highwayhash/hh_vsx.h. */ XXH_FORCE_INLINE xxh_u64x2 XXH_vec_mulo(xxh_u32x4 a, xxh_u32x4 b) { xxh_u64x2 result; __asm__("vmulouw %0, %1, %2" : "=v" (result) : "v" (a), "v" (b)); return result; } XXH_FORCE_INLINE xxh_u64x2 XXH_vec_mule(xxh_u32x4 a, xxh_u32x4 b) { xxh_u64x2 result; __asm__("vmuleuw %0, %1, %2" : "=v" (result) : "v" (a), "v" (b)); return result; } # endif /* XXH_vec_mulo, XXH_vec_mule */ #endif /* XXH_VECTOR == XXH_VSX */ /* prefetch * can be disabled, by declaring XXH_NO_PREFETCH build macro */ #if defined(XXH_NO_PREFETCH) # define XXH_PREFETCH(ptr) (void)(ptr) /* disabled */ #else # if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_IX86)) /* _mm_prefetch() not defined outside of x86/x64 */ # include /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */ # define XXH_PREFETCH(ptr) _mm_prefetch((const char*)(ptr), _MM_HINT_T0) # elif defined(__GNUC__) && ( (__GNUC__ >= 4) || ( (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1) ) ) # define XXH_PREFETCH(ptr) __builtin_prefetch((ptr), 0 /* rw==read */, 3 /* locality */) # else # define XXH_PREFETCH(ptr) (void)(ptr) /* disabled */ # endif #endif /* XXH_NO_PREFETCH */ /* ========================================== * XXH3 default settings * ========================================== */ #define XXH_SECRET_DEFAULT_SIZE 192 /* minimum XXH3_SECRET_SIZE_MIN */ #if (XXH_SECRET_DEFAULT_SIZE < XXH3_SECRET_SIZE_MIN) # error "default keyset is not large enough" #endif /*! Pseudorandom secret taken directly from FARSH. */ XXH_ALIGN(64) static const xxh_u8 XXH3_kSecret[XXH_SECRET_DEFAULT_SIZE] = { 0xb8, 0xfe, 0x6c, 0x39, 0x23, 0xa4, 0x4b, 0xbe, 0x7c, 0x01, 0x81, 0x2c, 0xf7, 0x21, 0xad, 0x1c, 0xde, 0xd4, 0x6d, 0xe9, 0x83, 0x90, 0x97, 0xdb, 0x72, 0x40, 0xa4, 0xa4, 0xb7, 0xb3, 0x67, 0x1f, 0xcb, 0x79, 0xe6, 0x4e, 0xcc, 0xc0, 0xe5, 0x78, 0x82, 0x5a, 0xd0, 0x7d, 0xcc, 0xff, 0x72, 0x21, 0xb8, 0x08, 0x46, 0x74, 0xf7, 0x43, 0x24, 0x8e, 0xe0, 0x35, 0x90, 0xe6, 0x81, 0x3a, 0x26, 0x4c, 0x3c, 0x28, 0x52, 0xbb, 0x91, 0xc3, 0x00, 0xcb, 0x88, 0xd0, 0x65, 0x8b, 0x1b, 0x53, 0x2e, 0xa3, 0x71, 0x64, 0x48, 0x97, 0xa2, 0x0d, 0xf9, 0x4e, 0x38, 0x19, 0xef, 0x46, 0xa9, 0xde, 0xac, 0xd8, 0xa8, 0xfa, 0x76, 0x3f, 0xe3, 0x9c, 0x34, 0x3f, 0xf9, 0xdc, 0xbb, 0xc7, 0xc7, 0x0b, 0x4f, 0x1d, 0x8a, 0x51, 0xe0, 0x4b, 0xcd, 0xb4, 0x59, 0x31, 0xc8, 0x9f, 0x7e, 0xc9, 0xd9, 0x78, 0x73, 0x64, 0xea, 0xc5, 0xac, 0x83, 0x34, 0xd3, 0xeb, 0xc3, 0xc5, 0x81, 0xa0, 0xff, 0xfa, 0x13, 0x63, 0xeb, 0x17, 0x0d, 0xdd, 0x51, 0xb7, 0xf0, 0xda, 0x49, 0xd3, 0x16, 0x55, 0x26, 0x29, 0xd4, 0x68, 0x9e, 0x2b, 0x16, 0xbe, 0x58, 0x7d, 0x47, 0xa1, 0xfc, 0x8f, 0xf8, 0xb8, 0xd1, 0x7a, 0xd0, 0x31, 0xce, 0x45, 0xcb, 0x3a, 0x8f, 0x95, 0x16, 0x04, 0x28, 0xaf, 0xd7, 0xfb, 0xca, 0xbb, 0x4b, 0x40, 0x7e, }; #ifdef XXH_OLD_NAMES # define kSecret XXH3_kSecret #endif #ifdef XXH_DOXYGEN /*! * @brief Calculates a 32-bit to 64-bit long multiply. * * Implemented as a macro. * * Wraps `__emulu` on MSVC x86 because it tends to call `__allmul` when it doesn't * need to (but it shouldn't need to anyways, it is about 7 instructions to do * a 64x64 multiply...). Since we know that this will _always_ emit `MULL`, we * use that instead of the normal method. * * If you are compiling for platforms like Thumb-1 and don't have a better option, * you may also want to write your own long multiply routine here. * * @param x, y Numbers to be multiplied * @return 64-bit product of the low 32 bits of @p x and @p y. */ XXH_FORCE_INLINE xxh_u64 XXH_mult32to64(xxh_u64 x, xxh_u64 y) { return (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF); } #elif defined(_MSC_VER) && defined(_M_IX86) # include # define XXH_mult32to64(x, y) __emulu((unsigned)(x), (unsigned)(y)) #else /* * Downcast + upcast is usually better than masking on older compilers like * GCC 4.2 (especially 32-bit ones), all without affecting newer compilers. * * The other method, (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF), will AND both operands * and perform a full 64x64 multiply -- entirely redundant on 32-bit. */ # define XXH_mult32to64(x, y) ((xxh_u64)(xxh_u32)(x) * (xxh_u64)(xxh_u32)(y)) #endif /*! * @brief Calculates a 64->128-bit long multiply. * * Uses `__uint128_t` and `_umul128` if available, otherwise uses a scalar * version. * * @param lhs, rhs The 64-bit integers to be multiplied * @return The 128-bit result represented in an @ref XXH128_hash_t. */ static XXH128_hash_t XXH_mult64to128(xxh_u64 lhs, xxh_u64 rhs) { /* * GCC/Clang __uint128_t method. * * On most 64-bit targets, GCC and Clang define a __uint128_t type. * This is usually the best way as it usually uses a native long 64-bit * multiply, such as MULQ on x86_64 or MUL + UMULH on aarch64. * * Usually. * * Despite being a 32-bit platform, Clang (and emscripten) define this type * despite not having the arithmetic for it. This results in a laggy * compiler builtin call which calculates a full 128-bit multiply. * In that case it is best to use the portable one. * https://github.com/Cyan4973/xxHash/issues/211#issuecomment-515575677 */ #if defined(__GNUC__) && !defined(__wasm__) \ && defined(__SIZEOF_INT128__) \ || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 128) __uint128_t const product = (__uint128_t)lhs * (__uint128_t)rhs; XXH128_hash_t r128; r128.low64 = (xxh_u64)(product); r128.high64 = (xxh_u64)(product >> 64); return r128; /* * MSVC for x64's _umul128 method. * * xxh_u64 _umul128(xxh_u64 Multiplier, xxh_u64 Multiplicand, xxh_u64 *HighProduct); * * This compiles to single operand MUL on x64. */ #elif defined(_M_X64) || defined(_M_IA64) #ifndef _MSC_VER # pragma intrinsic(_umul128) #endif xxh_u64 product_high; xxh_u64 const product_low = _umul128(lhs, rhs, &product_high); XXH128_hash_t r128; r128.low64 = product_low; r128.high64 = product_high; return r128; #else /* * Portable scalar method. Optimized for 32-bit and 64-bit ALUs. * * This is a fast and simple grade school multiply, which is shown below * with base 10 arithmetic instead of base 0x100000000. * * 9 3 // D2 lhs = 93 * x 7 5 // D2 rhs = 75 * ---------- * 1 5 // D2 lo_lo = (93 % 10) * (75 % 10) = 15 * 4 5 | // D2 hi_lo = (93 / 10) * (75 % 10) = 45 * 2 1 | // D2 lo_hi = (93 % 10) * (75 / 10) = 21 * + 6 3 | | // D2 hi_hi = (93 / 10) * (75 / 10) = 63 * --------- * 2 7 | // D2 cross = (15 / 10) + (45 % 10) + 21 = 27 * + 6 7 | | // D2 upper = (27 / 10) + (45 / 10) + 63 = 67 * --------- * 6 9 7 5 // D4 res = (27 * 10) + (15 % 10) + (67 * 100) = 6975 * * The reasons for adding the products like this are: * 1. It avoids manual carry tracking. Just like how * (9 * 9) + 9 + 9 = 99, the same applies with this for UINT64_MAX. * This avoids a lot of complexity. * * 2. It hints for, and on Clang, compiles to, the powerful UMAAL * instruction available in ARM's Digital Signal Processing extension * in 32-bit ARMv6 and later, which is shown below: * * void UMAAL(xxh_u32 *RdLo, xxh_u32 *RdHi, xxh_u32 Rn, xxh_u32 Rm) * { * xxh_u64 product = (xxh_u64)*RdLo * (xxh_u64)*RdHi + Rn + Rm; * *RdLo = (xxh_u32)(product & 0xFFFFFFFF); * *RdHi = (xxh_u32)(product >> 32); * } * * This instruction was designed for efficient long multiplication, and * allows this to be calculated in only 4 instructions at speeds * comparable to some 64-bit ALUs. * * 3. It isn't terrible on other platforms. Usually this will be a couple * of 32-bit ADD/ADCs. */ /* First calculate all of the cross products. */ xxh_u64 const lo_lo = XXH_mult32to64(lhs & 0xFFFFFFFF, rhs & 0xFFFFFFFF); xxh_u64 const hi_lo = XXH_mult32to64(lhs >> 32, rhs & 0xFFFFFFFF); xxh_u64 const lo_hi = XXH_mult32to64(lhs & 0xFFFFFFFF, rhs >> 32); xxh_u64 const hi_hi = XXH_mult32to64(lhs >> 32, rhs >> 32); /* Now add the products together. These will never overflow. */ xxh_u64 const cross = (lo_lo >> 32) + (hi_lo & 0xFFFFFFFF) + lo_hi; xxh_u64 const upper = (hi_lo >> 32) + (cross >> 32) + hi_hi; xxh_u64 const lower = (cross << 32) | (lo_lo & 0xFFFFFFFF); XXH128_hash_t r128; r128.low64 = lower; r128.high64 = upper; return r128; #endif } /*! * @brief Calculates a 64-bit to 128-bit multiply, then XOR folds it. * * The reason for the separate function is to prevent passing too many structs * around by value. This will hopefully inline the multiply, but we don't force it. * * @param lhs, rhs The 64-bit integers to multiply * @return The low 64 bits of the product XOR'd by the high 64 bits. * @see XXH_mult64to128() */ static xxh_u64 XXH3_mul128_fold64(xxh_u64 lhs, xxh_u64 rhs) { XXH128_hash_t product = XXH_mult64to128(lhs, rhs); return product.low64 ^ product.high64; } /*! Seems to produce slightly better code on GCC for some reason. */ XXH_FORCE_INLINE xxh_u64 XXH_xorshift64(xxh_u64 v64, int shift) { XXH_ASSERT(0 <= shift && shift < 64); return v64 ^ (v64 >> shift); } /* * This is a fast avalanche stage, * suitable when input bits are already partially mixed */ static XXH64_hash_t XXH3_avalanche(xxh_u64 h64) { h64 = XXH_xorshift64(h64, 37); h64 *= 0x165667919E3779F9ULL; h64 = XXH_xorshift64(h64, 32); return h64; } /* * This is a stronger avalanche, * inspired by Pelle Evensen's rrmxmx * preferable when input has not been previously mixed */ static XXH64_hash_t XXH3_rrmxmx(xxh_u64 h64, xxh_u64 len) { /* this mix is inspired by Pelle Evensen's rrmxmx */ h64 ^= XXH_rotl64(h64, 49) ^ XXH_rotl64(h64, 24); h64 *= 0x9FB21C651E98DF25ULL; h64 ^= (h64 >> 35) + len ; h64 *= 0x9FB21C651E98DF25ULL; return XXH_xorshift64(h64, 28); } /* ========================================== * Short keys * ========================================== * One of the shortcomings of XXH32 and XXH64 was that their performance was * sub-optimal on short lengths. It used an iterative algorithm which strongly * favored lengths that were a multiple of 4 or 8. * * Instead of iterating over individual inputs, we use a set of single shot * functions which piece together a range of lengths and operate in constant time. * * Additionally, the number of multiplies has been significantly reduced. This * reduces latency, especially when emulating 64-bit multiplies on 32-bit. * * Depending on the platform, this may or may not be faster than XXH32, but it * is almost guaranteed to be faster than XXH64. */ /* * At very short lengths, there isn't enough input to fully hide secrets, or use * the entire secret. * * There is also only a limited amount of mixing we can do before significantly * impacting performance. * * Therefore, we use different sections of the secret and always mix two secret * samples with an XOR. This should have no effect on performance on the * seedless or withSeed variants because everything _should_ be constant folded * by modern compilers. * * The XOR mixing hides individual parts of the secret and increases entropy. * * This adds an extra layer of strength for custom secrets. */ XXH_FORCE_INLINE XXH64_hash_t XXH3_len_1to3_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(input != NULL); XXH_ASSERT(1 <= len && len <= 3); XXH_ASSERT(secret != NULL); /* * len = 1: combined = { input[0], 0x01, input[0], input[0] } * len = 2: combined = { input[1], 0x02, input[0], input[1] } * len = 3: combined = { input[2], 0x03, input[0], input[1] } */ { xxh_u8 const c1 = input[0]; xxh_u8 const c2 = input[len >> 1]; xxh_u8 const c3 = input[len - 1]; xxh_u32 const combined = ((xxh_u32)c1 << 16) | ((xxh_u32)c2 << 24) | ((xxh_u32)c3 << 0) | ((xxh_u32)len << 8); xxh_u64 const bitflip = (XXH_readLE32(secret) ^ XXH_readLE32(secret+4)) + seed; xxh_u64 const keyed = (xxh_u64)combined ^ bitflip; return XXH64_avalanche(keyed); } } XXH_FORCE_INLINE XXH64_hash_t XXH3_len_4to8_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(input != NULL); XXH_ASSERT(secret != NULL); XXH_ASSERT(4 <= len && len < 8); seed ^= (xxh_u64)XXH_swap32((xxh_u32)seed) << 32; { xxh_u32 const input1 = XXH_readLE32(input); xxh_u32 const input2 = XXH_readLE32(input + len - 4); xxh_u64 const bitflip = (XXH_readLE64(secret+8) ^ XXH_readLE64(secret+16)) - seed; xxh_u64 const input64 = input2 + (((xxh_u64)input1) << 32); xxh_u64 const keyed = input64 ^ bitflip; return XXH3_rrmxmx(keyed, len); } } XXH_FORCE_INLINE XXH64_hash_t XXH3_len_9to16_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(input != NULL); XXH_ASSERT(secret != NULL); XXH_ASSERT(8 <= len && len <= 16); { xxh_u64 const bitflip1 = (XXH_readLE64(secret+24) ^ XXH_readLE64(secret+32)) + seed; xxh_u64 const bitflip2 = (XXH_readLE64(secret+40) ^ XXH_readLE64(secret+48)) - seed; xxh_u64 const input_lo = XXH_readLE64(input) ^ bitflip1; xxh_u64 const input_hi = XXH_readLE64(input + len - 8) ^ bitflip2; xxh_u64 const acc = len + XXH_swap64(input_lo) + input_hi + XXH3_mul128_fold64(input_lo, input_hi); return XXH3_avalanche(acc); } } XXH_FORCE_INLINE XXH64_hash_t XXH3_len_0to16_64b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(len <= 16); { if (XXH_likely(len > 8)) return XXH3_len_9to16_64b(input, len, secret, seed); if (XXH_likely(len >= 4)) return XXH3_len_4to8_64b(input, len, secret, seed); if (len) return XXH3_len_1to3_64b(input, len, secret, seed); return XXH64_avalanche(seed ^ (XXH_readLE64(secret+56) ^ XXH_readLE64(secret+64))); } } /* * DISCLAIMER: There are known *seed-dependent* multicollisions here due to * multiplication by zero, affecting hashes of lengths 17 to 240. * * However, they are very unlikely. * * Keep this in mind when using the unseeded XXH3_64bits() variant: As with all * unseeded non-cryptographic hashes, it does not attempt to defend itself * against specially crafted inputs, only random inputs. * * Compared to classic UMAC where a 1 in 2^31 chance of 4 consecutive bytes * cancelling out the secret is taken an arbitrary number of times (addressed * in XXH3_accumulate_512), this collision is very unlikely with random inputs * and/or proper seeding: * * This only has a 1 in 2^63 chance of 8 consecutive bytes cancelling out, in a * function that is only called up to 16 times per hash with up to 240 bytes of * input. * * This is not too bad for a non-cryptographic hash function, especially with * only 64 bit outputs. * * The 128-bit variant (which trades some speed for strength) is NOT affected * by this, although it is always a good idea to use a proper seed if you care * about strength. */ XXH_FORCE_INLINE xxh_u64 XXH3_mix16B(const xxh_u8* XXH_RESTRICT input, const xxh_u8* XXH_RESTRICT secret, xxh_u64 seed64) { #if defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \ && defined(__i386__) && defined(__SSE2__) /* x86 + SSE2 */ \ && !defined(XXH_ENABLE_AUTOVECTORIZE) /* Define to disable like XXH32 hack */ /* * UGLY HACK: * GCC for x86 tends to autovectorize the 128-bit multiply, resulting in * slower code. * * By forcing seed64 into a register, we disrupt the cost model and * cause it to scalarize. See `XXH32_round()` * * FIXME: Clang's output is still _much_ faster -- On an AMD Ryzen 3600, * XXH3_64bits @ len=240 runs at 4.6 GB/s with Clang 9, but 3.3 GB/s on * GCC 9.2, despite both emitting scalar code. * * GCC generates much better scalar code than Clang for the rest of XXH3, * which is why finding a more optimal codepath is an interest. */ __asm__ ("" : "+r" (seed64)); #endif { xxh_u64 const input_lo = XXH_readLE64(input); xxh_u64 const input_hi = XXH_readLE64(input+8); return XXH3_mul128_fold64( input_lo ^ (XXH_readLE64(secret) + seed64), input_hi ^ (XXH_readLE64(secret+8) - seed64) ); } } /* For mid range keys, XXH3 uses a Mum-hash variant. */ XXH_FORCE_INLINE XXH64_hash_t XXH3_len_17to128_64b(const xxh_u8* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, XXH64_hash_t seed) { XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; XXH_ASSERT(16 < len && len <= 128); { xxh_u64 acc = len * XXH_PRIME64_1; if (len > 32) { if (len > 64) { if (len > 96) { acc += XXH3_mix16B(input+48, secret+96, seed); acc += XXH3_mix16B(input+len-64, secret+112, seed); } acc += XXH3_mix16B(input+32, secret+64, seed); acc += XXH3_mix16B(input+len-48, secret+80, seed); } acc += XXH3_mix16B(input+16, secret+32, seed); acc += XXH3_mix16B(input+len-32, secret+48, seed); } acc += XXH3_mix16B(input+0, secret+0, seed); acc += XXH3_mix16B(input+len-16, secret+16, seed); return XXH3_avalanche(acc); } } #define XXH3_MIDSIZE_MAX 240 XXH_NO_INLINE XXH64_hash_t XXH3_len_129to240_64b(const xxh_u8* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, XXH64_hash_t seed) { XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; XXH_ASSERT(128 < len && len <= XXH3_MIDSIZE_MAX); #define XXH3_MIDSIZE_STARTOFFSET 3 #define XXH3_MIDSIZE_LASTOFFSET 17 { xxh_u64 acc = len * XXH_PRIME64_1; int const nbRounds = (int)len / 16; int i; for (i=0; i<8; i++) { acc += XXH3_mix16B(input+(16*i), secret+(16*i), seed); } acc = XXH3_avalanche(acc); XXH_ASSERT(nbRounds >= 8); #if defined(__clang__) /* Clang */ \ && (defined(__ARM_NEON) || defined(__ARM_NEON__)) /* NEON */ \ && !defined(XXH_ENABLE_AUTOVECTORIZE) /* Define to disable */ /* * UGLY HACK: * Clang for ARMv7-A tries to vectorize this loop, similar to GCC x86. * In everywhere else, it uses scalar code. * * For 64->128-bit multiplies, even if the NEON was 100% optimal, it * would still be slower than UMAAL (see XXH_mult64to128). * * Unfortunately, Clang doesn't handle the long multiplies properly and * converts them to the nonexistent "vmulq_u64" intrinsic, which is then * scalarized into an ugly mess of VMOV.32 instructions. * * This mess is difficult to avoid without turning autovectorization * off completely, but they are usually relatively minor and/or not * worth it to fix. * * This loop is the easiest to fix, as unlike XXH32, this pragma * _actually works_ because it is a loop vectorization instead of an * SLP vectorization. */ #pragma clang loop vectorize(disable) #endif for (i=8 ; i < nbRounds; i++) { acc += XXH3_mix16B(input+(16*i), secret+(16*(i-8)) + XXH3_MIDSIZE_STARTOFFSET, seed); } /* last bytes */ acc += XXH3_mix16B(input + len - 16, secret + XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET, seed); return XXH3_avalanche(acc); } } /* ======= Long Keys ======= */ #define XXH_STRIPE_LEN 64 #define XXH_SECRET_CONSUME_RATE 8 /* nb of secret bytes consumed at each accumulation */ #define XXH_ACC_NB (XXH_STRIPE_LEN / sizeof(xxh_u64)) #ifdef XXH_OLD_NAMES # define STRIPE_LEN XXH_STRIPE_LEN # define ACC_NB XXH_ACC_NB #endif XXH_FORCE_INLINE void XXH_writeLE64(void* dst, xxh_u64 v64) { if (!XXH_CPU_LITTLE_ENDIAN) v64 = XXH_swap64(v64); memcpy(dst, &v64, sizeof(v64)); } /* Several intrinsic functions below are supposed to accept __int64 as argument, * as documented in https://software.intel.com/sites/landingpage/IntrinsicsGuide/ . * However, several environments do not define __int64 type, * requiring a workaround. */ #if !defined (__VMS) \ && (defined (__cplusplus) \ || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) typedef int64_t xxh_i64; #else /* the following type must have a width of 64-bit */ typedef long long xxh_i64; #endif /* * XXH3_accumulate_512 is the tightest loop for long inputs, and it is the most optimized. * * It is a hardened version of UMAC, based off of FARSH's implementation. * * This was chosen because it adapts quite well to 32-bit, 64-bit, and SIMD * implementations, and it is ridiculously fast. * * We harden it by mixing the original input to the accumulators as well as the product. * * This means that in the (relatively likely) case of a multiply by zero, the * original input is preserved. * * On 128-bit inputs, we swap 64-bit pairs when we add the input to improve * cross-pollination, as otherwise the upper and lower halves would be * essentially independent. * * This doesn't matter on 64-bit hashes since they all get merged together in * the end, so we skip the extra step. * * Both XXH3_64bits and XXH3_128bits use this subroutine. */ #if (XXH_VECTOR == XXH_AVX512) \ || (defined(XXH_DISPATCH_AVX512) && XXH_DISPATCH_AVX512 != 0) #ifndef XXH_TARGET_AVX512 # define XXH_TARGET_AVX512 /* disable attribute target */ #endif XXH_FORCE_INLINE XXH_TARGET_AVX512 void XXH3_accumulate_512_avx512(void* XXH_RESTRICT acc, const void* XXH_RESTRICT input, const void* XXH_RESTRICT secret) { XXH_ALIGN(64) __m512i* const xacc = (__m512i *) acc; XXH_ASSERT((((size_t)acc) & 63) == 0); XXH_STATIC_ASSERT(XXH_STRIPE_LEN == sizeof(__m512i)); { /* data_vec = input[0]; */ __m512i const data_vec = _mm512_loadu_si512 (input); /* key_vec = secret[0]; */ __m512i const key_vec = _mm512_loadu_si512 (secret); /* data_key = data_vec ^ key_vec; */ __m512i const data_key = _mm512_xor_si512 (data_vec, key_vec); /* data_key_lo = data_key >> 32; */ __m512i const data_key_lo = _mm512_shuffle_epi32 (data_key, (_MM_PERM_ENUM)_MM_SHUFFLE(0, 3, 0, 1)); /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ __m512i const product = _mm512_mul_epu32 (data_key, data_key_lo); /* xacc[0] += swap(data_vec); */ __m512i const data_swap = _mm512_shuffle_epi32(data_vec, (_MM_PERM_ENUM)_MM_SHUFFLE(1, 0, 3, 2)); __m512i const sum = _mm512_add_epi64(*xacc, data_swap); /* xacc[0] += product; */ *xacc = _mm512_add_epi64(product, sum); } } /* * XXH3_scrambleAcc: Scrambles the accumulators to improve mixing. * * Multiplication isn't perfect, as explained by Google in HighwayHash: * * // Multiplication mixes/scrambles bytes 0-7 of the 64-bit result to * // varying degrees. In descending order of goodness, bytes * // 3 4 2 5 1 6 0 7 have quality 228 224 164 160 100 96 36 32. * // As expected, the upper and lower bytes are much worse. * * Source: https://github.com/google/highwayhash/blob/0aaf66b/highwayhash/hh_avx2.h#L291 * * Since our algorithm uses a pseudorandom secret to add some variance into the * mix, we don't need to (or want to) mix as often or as much as HighwayHash does. * * This isn't as tight as XXH3_accumulate, but still written in SIMD to avoid * extraction. * * Both XXH3_64bits and XXH3_128bits use this subroutine. */ XXH_FORCE_INLINE XXH_TARGET_AVX512 void XXH3_scrambleAcc_avx512(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 63) == 0); XXH_STATIC_ASSERT(XXH_STRIPE_LEN == sizeof(__m512i)); { XXH_ALIGN(64) __m512i* const xacc = (__m512i*) acc; const __m512i prime32 = _mm512_set1_epi32((int)XXH_PRIME32_1); /* xacc[0] ^= (xacc[0] >> 47) */ __m512i const acc_vec = *xacc; __m512i const shifted = _mm512_srli_epi64 (acc_vec, 47); __m512i const data_vec = _mm512_xor_si512 (acc_vec, shifted); /* xacc[0] ^= secret; */ __m512i const key_vec = _mm512_loadu_si512 (secret); __m512i const data_key = _mm512_xor_si512 (data_vec, key_vec); /* xacc[0] *= XXH_PRIME32_1; */ __m512i const data_key_hi = _mm512_shuffle_epi32 (data_key, (_MM_PERM_ENUM)_MM_SHUFFLE(0, 3, 0, 1)); __m512i const prod_lo = _mm512_mul_epu32 (data_key, prime32); __m512i const prod_hi = _mm512_mul_epu32 (data_key_hi, prime32); *xacc = _mm512_add_epi64(prod_lo, _mm512_slli_epi64(prod_hi, 32)); } } XXH_FORCE_INLINE XXH_TARGET_AVX512 void XXH3_initCustomSecret_avx512(void* XXH_RESTRICT customSecret, xxh_u64 seed64) { XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 63) == 0); XXH_STATIC_ASSERT(XXH_SEC_ALIGN == 64); XXH_ASSERT(((size_t)customSecret & 63) == 0); (void)(&XXH_writeLE64); { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / sizeof(__m512i); __m512i const seed = _mm512_mask_set1_epi64(_mm512_set1_epi64((xxh_i64)seed64), 0xAA, -(xxh_i64)seed64); XXH_ALIGN(64) const __m512i* const src = (const __m512i*) XXH3_kSecret; XXH_ALIGN(64) __m512i* const dest = ( __m512i*) customSecret; int i; for (i=0; i < nbRounds; ++i) { /* GCC has a bug, _mm512_stream_load_si512 accepts 'void*', not 'void const*', * this will warn "discards ‘const’ qualifier". */ union { XXH_ALIGN(64) const __m512i* cp; XXH_ALIGN(64) void* p; } remote_const_void; remote_const_void.cp = src + i; dest[i] = _mm512_add_epi64(_mm512_stream_load_si512(remote_const_void.p), seed); } } } #endif #if (XXH_VECTOR == XXH_AVX2) \ || (defined(XXH_DISPATCH_AVX2) && XXH_DISPATCH_AVX2 != 0) #ifndef XXH_TARGET_AVX2 # define XXH_TARGET_AVX2 /* disable attribute target */ #endif XXH_FORCE_INLINE XXH_TARGET_AVX2 void XXH3_accumulate_512_avx2( void* XXH_RESTRICT acc, const void* XXH_RESTRICT input, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 31) == 0); { XXH_ALIGN(32) __m256i* const xacc = (__m256i *) acc; /* Unaligned. This is mainly for pointer arithmetic, and because * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ const __m256i* const xinput = (const __m256i *) input; /* Unaligned. This is mainly for pointer arithmetic, and because * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ const __m256i* const xsecret = (const __m256i *) secret; size_t i; for (i=0; i < XXH_STRIPE_LEN/sizeof(__m256i); i++) { /* data_vec = xinput[i]; */ __m256i const data_vec = _mm256_loadu_si256 (xinput+i); /* key_vec = xsecret[i]; */ __m256i const key_vec = _mm256_loadu_si256 (xsecret+i); /* data_key = data_vec ^ key_vec; */ __m256i const data_key = _mm256_xor_si256 (data_vec, key_vec); /* data_key_lo = data_key >> 32; */ __m256i const data_key_lo = _mm256_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ __m256i const product = _mm256_mul_epu32 (data_key, data_key_lo); /* xacc[i] += swap(data_vec); */ __m256i const data_swap = _mm256_shuffle_epi32(data_vec, _MM_SHUFFLE(1, 0, 3, 2)); __m256i const sum = _mm256_add_epi64(xacc[i], data_swap); /* xacc[i] += product; */ xacc[i] = _mm256_add_epi64(product, sum); } } } XXH_FORCE_INLINE XXH_TARGET_AVX2 void XXH3_scrambleAcc_avx2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 31) == 0); { XXH_ALIGN(32) __m256i* const xacc = (__m256i*) acc; /* Unaligned. This is mainly for pointer arithmetic, and because * _mm256_loadu_si256 requires a const __m256i * pointer for some reason. */ const __m256i* const xsecret = (const __m256i *) secret; const __m256i prime32 = _mm256_set1_epi32((int)XXH_PRIME32_1); size_t i; for (i=0; i < XXH_STRIPE_LEN/sizeof(__m256i); i++) { /* xacc[i] ^= (xacc[i] >> 47) */ __m256i const acc_vec = xacc[i]; __m256i const shifted = _mm256_srli_epi64 (acc_vec, 47); __m256i const data_vec = _mm256_xor_si256 (acc_vec, shifted); /* xacc[i] ^= xsecret; */ __m256i const key_vec = _mm256_loadu_si256 (xsecret+i); __m256i const data_key = _mm256_xor_si256 (data_vec, key_vec); /* xacc[i] *= XXH_PRIME32_1; */ __m256i const data_key_hi = _mm256_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); __m256i const prod_lo = _mm256_mul_epu32 (data_key, prime32); __m256i const prod_hi = _mm256_mul_epu32 (data_key_hi, prime32); xacc[i] = _mm256_add_epi64(prod_lo, _mm256_slli_epi64(prod_hi, 32)); } } } XXH_FORCE_INLINE XXH_TARGET_AVX2 void XXH3_initCustomSecret_avx2(void* XXH_RESTRICT customSecret, xxh_u64 seed64) { XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 31) == 0); XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE / sizeof(__m256i)) == 6); XXH_STATIC_ASSERT(XXH_SEC_ALIGN <= 64); (void)(&XXH_writeLE64); XXH_PREFETCH(customSecret); { __m256i const seed = _mm256_set_epi64x(-(xxh_i64)seed64, (xxh_i64)seed64, -(xxh_i64)seed64, (xxh_i64)seed64); XXH_ALIGN(64) const __m256i* const src = (const __m256i*) XXH3_kSecret; XXH_ALIGN(64) __m256i* dest = ( __m256i*) customSecret; # if defined(__GNUC__) || defined(__clang__) /* * On GCC & Clang, marking 'dest' as modified will cause the compiler: * - do not extract the secret from sse registers in the internal loop * - use less common registers, and avoid pushing these reg into stack * The asm hack causes Clang to assume that XXH3_kSecretPtr aliases with * customSecret, and on aarch64, this prevented LDP from merging two * loads together for free. Putting the loads together before the stores * properly generates LDP. */ __asm__("" : "+r" (dest)); # endif /* GCC -O2 need unroll loop manually */ dest[0] = _mm256_add_epi64(_mm256_stream_load_si256(src+0), seed); dest[1] = _mm256_add_epi64(_mm256_stream_load_si256(src+1), seed); dest[2] = _mm256_add_epi64(_mm256_stream_load_si256(src+2), seed); dest[3] = _mm256_add_epi64(_mm256_stream_load_si256(src+3), seed); dest[4] = _mm256_add_epi64(_mm256_stream_load_si256(src+4), seed); dest[5] = _mm256_add_epi64(_mm256_stream_load_si256(src+5), seed); } } #endif /* x86dispatch always generates SSE2 */ #if (XXH_VECTOR == XXH_SSE2) || defined(XXH_X86DISPATCH) #ifndef XXH_TARGET_SSE2 # define XXH_TARGET_SSE2 /* disable attribute target */ #endif XXH_FORCE_INLINE XXH_TARGET_SSE2 void XXH3_accumulate_512_sse2( void* XXH_RESTRICT acc, const void* XXH_RESTRICT input, const void* XXH_RESTRICT secret) { /* SSE2 is just a half-scale version of the AVX2 version. */ XXH_ASSERT((((size_t)acc) & 15) == 0); { XXH_ALIGN(16) __m128i* const xacc = (__m128i *) acc; /* Unaligned. This is mainly for pointer arithmetic, and because * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ const __m128i* const xinput = (const __m128i *) input; /* Unaligned. This is mainly for pointer arithmetic, and because * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ const __m128i* const xsecret = (const __m128i *) secret; size_t i; for (i=0; i < XXH_STRIPE_LEN/sizeof(__m128i); i++) { /* data_vec = xinput[i]; */ __m128i const data_vec = _mm_loadu_si128 (xinput+i); /* key_vec = xsecret[i]; */ __m128i const key_vec = _mm_loadu_si128 (xsecret+i); /* data_key = data_vec ^ key_vec; */ __m128i const data_key = _mm_xor_si128 (data_vec, key_vec); /* data_key_lo = data_key >> 32; */ __m128i const data_key_lo = _mm_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); /* product = (data_key & 0xffffffff) * (data_key_lo & 0xffffffff); */ __m128i const product = _mm_mul_epu32 (data_key, data_key_lo); /* xacc[i] += swap(data_vec); */ __m128i const data_swap = _mm_shuffle_epi32(data_vec, _MM_SHUFFLE(1,0,3,2)); __m128i const sum = _mm_add_epi64(xacc[i], data_swap); /* xacc[i] += product; */ xacc[i] = _mm_add_epi64(product, sum); } } } XXH_FORCE_INLINE XXH_TARGET_SSE2 void XXH3_scrambleAcc_sse2(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 15) == 0); { XXH_ALIGN(16) __m128i* const xacc = (__m128i*) acc; /* Unaligned. This is mainly for pointer arithmetic, and because * _mm_loadu_si128 requires a const __m128i * pointer for some reason. */ const __m128i* const xsecret = (const __m128i *) secret; const __m128i prime32 = _mm_set1_epi32((int)XXH_PRIME32_1); size_t i; for (i=0; i < XXH_STRIPE_LEN/sizeof(__m128i); i++) { /* xacc[i] ^= (xacc[i] >> 47) */ __m128i const acc_vec = xacc[i]; __m128i const shifted = _mm_srli_epi64 (acc_vec, 47); __m128i const data_vec = _mm_xor_si128 (acc_vec, shifted); /* xacc[i] ^= xsecret[i]; */ __m128i const key_vec = _mm_loadu_si128 (xsecret+i); __m128i const data_key = _mm_xor_si128 (data_vec, key_vec); /* xacc[i] *= XXH_PRIME32_1; */ __m128i const data_key_hi = _mm_shuffle_epi32 (data_key, _MM_SHUFFLE(0, 3, 0, 1)); __m128i const prod_lo = _mm_mul_epu32 (data_key, prime32); __m128i const prod_hi = _mm_mul_epu32 (data_key_hi, prime32); xacc[i] = _mm_add_epi64(prod_lo, _mm_slli_epi64(prod_hi, 32)); } } } XXH_FORCE_INLINE XXH_TARGET_SSE2 void XXH3_initCustomSecret_sse2(void* XXH_RESTRICT customSecret, xxh_u64 seed64) { XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 15) == 0); (void)(&XXH_writeLE64); { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / sizeof(__m128i); # if defined(_MSC_VER) && defined(_M_IX86) && _MSC_VER < 1900 // MSVC 32bit mode does not support _mm_set_epi64x before 2015 XXH_ALIGN(16) const xxh_i64 seed64x2[2] = { (xxh_i64)seed64, -(xxh_i64)seed64 }; __m128i const seed = _mm_load_si128((__m128i const*)seed64x2); # else __m128i const seed = _mm_set_epi64x(-(xxh_i64)seed64, (xxh_i64)seed64); # endif int i; XXH_ALIGN(64) const float* const src = (float const*) XXH3_kSecret; XXH_ALIGN(XXH_SEC_ALIGN) __m128i* dest = (__m128i*) customSecret; # if defined(__GNUC__) || defined(__clang__) /* * On GCC & Clang, marking 'dest' as modified will cause the compiler: * - do not extract the secret from sse registers in the internal loop * - use less common registers, and avoid pushing these reg into stack */ __asm__("" : "+r" (dest)); # endif for (i=0; i < nbRounds; ++i) { dest[i] = _mm_add_epi64(_mm_castps_si128(_mm_load_ps(src+i*4)), seed); } } } #endif #if (XXH_VECTOR == XXH_NEON) XXH_FORCE_INLINE void XXH3_accumulate_512_neon( void* XXH_RESTRICT acc, const void* XXH_RESTRICT input, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 15) == 0); { XXH_ALIGN(16) uint64x2_t* const xacc = (uint64x2_t *) acc; /* We don't use a uint32x4_t pointer because it causes bus errors on ARMv7. */ uint8_t const* const xinput = (const uint8_t *) input; uint8_t const* const xsecret = (const uint8_t *) secret; size_t i; for (i=0; i < XXH_STRIPE_LEN / sizeof(uint64x2_t); i++) { /* data_vec = xinput[i]; */ uint8x16_t data_vec = vld1q_u8(xinput + (i * 16)); /* key_vec = xsecret[i]; */ uint8x16_t key_vec = vld1q_u8(xsecret + (i * 16)); uint64x2_t data_key; uint32x2_t data_key_lo, data_key_hi; /* xacc[i] += swap(data_vec); */ uint64x2_t const data64 = vreinterpretq_u64_u8(data_vec); uint64x2_t const swapped = vextq_u64(data64, data64, 1); xacc[i] = vaddq_u64 (xacc[i], swapped); /* data_key = data_vec ^ key_vec; */ data_key = vreinterpretq_u64_u8(veorq_u8(data_vec, key_vec)); /* data_key_lo = (uint32x2_t) (data_key & 0xFFFFFFFF); * data_key_hi = (uint32x2_t) (data_key >> 32); * data_key = UNDEFINED; */ XXH_SPLIT_IN_PLACE(data_key, data_key_lo, data_key_hi); /* xacc[i] += (uint64x2_t) data_key_lo * (uint64x2_t) data_key_hi; */ xacc[i] = vmlal_u32 (xacc[i], data_key_lo, data_key_hi); } } } XXH_FORCE_INLINE void XXH3_scrambleAcc_neon(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 15) == 0); { uint64x2_t* xacc = (uint64x2_t*) acc; uint8_t const* xsecret = (uint8_t const*) secret; uint32x2_t prime = vdup_n_u32 (XXH_PRIME32_1); size_t i; for (i=0; i < XXH_STRIPE_LEN/sizeof(uint64x2_t); i++) { /* xacc[i] ^= (xacc[i] >> 47); */ uint64x2_t acc_vec = xacc[i]; uint64x2_t shifted = vshrq_n_u64 (acc_vec, 47); uint64x2_t data_vec = veorq_u64 (acc_vec, shifted); /* xacc[i] ^= xsecret[i]; */ uint8x16_t key_vec = vld1q_u8(xsecret + (i * 16)); uint64x2_t data_key = veorq_u64(data_vec, vreinterpretq_u64_u8(key_vec)); /* xacc[i] *= XXH_PRIME32_1 */ uint32x2_t data_key_lo, data_key_hi; /* data_key_lo = (uint32x2_t) (xacc[i] & 0xFFFFFFFF); * data_key_hi = (uint32x2_t) (xacc[i] >> 32); * xacc[i] = UNDEFINED; */ XXH_SPLIT_IN_PLACE(data_key, data_key_lo, data_key_hi); { /* * prod_hi = (data_key >> 32) * XXH_PRIME32_1; * * Avoid vmul_u32 + vshll_n_u32 since Clang 6 and 7 will * incorrectly "optimize" this: * tmp = vmul_u32(vmovn_u64(a), vmovn_u64(b)); * shifted = vshll_n_u32(tmp, 32); * to this: * tmp = "vmulq_u64"(a, b); // no such thing! * shifted = vshlq_n_u64(tmp, 32); * * However, unlike SSE, Clang lacks a 64-bit multiply routine * for NEON, and it scalarizes two 64-bit multiplies instead. * * vmull_u32 has the same timing as vmul_u32, and it avoids * this bug completely. * See https://bugs.llvm.org/show_bug.cgi?id=39967 */ uint64x2_t prod_hi = vmull_u32 (data_key_hi, prime); /* xacc[i] = prod_hi << 32; */ xacc[i] = vshlq_n_u64(prod_hi, 32); /* xacc[i] += (prod_hi & 0xFFFFFFFF) * XXH_PRIME32_1; */ xacc[i] = vmlal_u32(xacc[i], data_key_lo, prime); } } } } #endif #if (XXH_VECTOR == XXH_VSX) XXH_FORCE_INLINE void XXH3_accumulate_512_vsx( void* XXH_RESTRICT acc, const void* XXH_RESTRICT input, const void* XXH_RESTRICT secret) { xxh_u64x2* const xacc = (xxh_u64x2*) acc; /* presumed aligned */ xxh_u64x2 const* const xinput = (xxh_u64x2 const*) input; /* no alignment restriction */ xxh_u64x2 const* const xsecret = (xxh_u64x2 const*) secret; /* no alignment restriction */ xxh_u64x2 const v32 = { 32, 32 }; size_t i; for (i = 0; i < XXH_STRIPE_LEN / sizeof(xxh_u64x2); i++) { /* data_vec = xinput[i]; */ xxh_u64x2 const data_vec = XXH_vec_loadu(xinput + i); /* key_vec = xsecret[i]; */ xxh_u64x2 const key_vec = XXH_vec_loadu(xsecret + i); xxh_u64x2 const data_key = data_vec ^ key_vec; /* shuffled = (data_key << 32) | (data_key >> 32); */ xxh_u32x4 const shuffled = (xxh_u32x4)vec_rl(data_key, v32); /* product = ((xxh_u64x2)data_key & 0xFFFFFFFF) * ((xxh_u64x2)shuffled & 0xFFFFFFFF); */ xxh_u64x2 const product = XXH_vec_mulo((xxh_u32x4)data_key, shuffled); xacc[i] += product; /* swap high and low halves */ #ifdef __s390x__ xacc[i] += vec_permi(data_vec, data_vec, 2); #else xacc[i] += vec_xxpermdi(data_vec, data_vec, 2); #endif } } XXH_FORCE_INLINE void XXH3_scrambleAcc_vsx(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ASSERT((((size_t)acc) & 15) == 0); { xxh_u64x2* const xacc = (xxh_u64x2*) acc; const xxh_u64x2* const xsecret = (const xxh_u64x2*) secret; /* constants */ xxh_u64x2 const v32 = { 32, 32 }; xxh_u64x2 const v47 = { 47, 47 }; xxh_u32x4 const prime = { XXH_PRIME32_1, XXH_PRIME32_1, XXH_PRIME32_1, XXH_PRIME32_1 }; size_t i; for (i = 0; i < XXH_STRIPE_LEN / sizeof(xxh_u64x2); i++) { /* xacc[i] ^= (xacc[i] >> 47); */ xxh_u64x2 const acc_vec = xacc[i]; xxh_u64x2 const data_vec = acc_vec ^ (acc_vec >> v47); /* xacc[i] ^= xsecret[i]; */ xxh_u64x2 const key_vec = XXH_vec_loadu(xsecret + i); xxh_u64x2 const data_key = data_vec ^ key_vec; /* xacc[i] *= XXH_PRIME32_1 */ /* prod_lo = ((xxh_u64x2)data_key & 0xFFFFFFFF) * ((xxh_u64x2)prime & 0xFFFFFFFF); */ xxh_u64x2 const prod_even = XXH_vec_mule((xxh_u32x4)data_key, prime); /* prod_hi = ((xxh_u64x2)data_key >> 32) * ((xxh_u64x2)prime >> 32); */ xxh_u64x2 const prod_odd = XXH_vec_mulo((xxh_u32x4)data_key, prime); xacc[i] = prod_odd + (prod_even << v32); } } } #endif /* scalar variants - universal */ XXH_FORCE_INLINE void XXH3_accumulate_512_scalar(void* XXH_RESTRICT acc, const void* XXH_RESTRICT input, const void* XXH_RESTRICT secret) { XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */ const xxh_u8* const xinput = (const xxh_u8*) input; /* no alignment restriction */ const xxh_u8* const xsecret = (const xxh_u8*) secret; /* no alignment restriction */ size_t i; XXH_ASSERT(((size_t)acc & (XXH_ACC_ALIGN-1)) == 0); for (i=0; i < XXH_ACC_NB; i++) { xxh_u64 const data_val = XXH_readLE64(xinput + 8*i); xxh_u64 const data_key = data_val ^ XXH_readLE64(xsecret + i*8); xacc[i ^ 1] += data_val; /* swap adjacent lanes */ xacc[i] += XXH_mult32to64(data_key & 0xFFFFFFFF, data_key >> 32); } } XXH_FORCE_INLINE void XXH3_scrambleAcc_scalar(void* XXH_RESTRICT acc, const void* XXH_RESTRICT secret) { XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64* const xacc = (xxh_u64*) acc; /* presumed aligned */ const xxh_u8* const xsecret = (const xxh_u8*) secret; /* no alignment restriction */ size_t i; XXH_ASSERT((((size_t)acc) & (XXH_ACC_ALIGN-1)) == 0); for (i=0; i < XXH_ACC_NB; i++) { xxh_u64 const key64 = XXH_readLE64(xsecret + 8*i); xxh_u64 acc64 = xacc[i]; acc64 = XXH_xorshift64(acc64, 47); acc64 ^= key64; acc64 *= XXH_PRIME32_1; xacc[i] = acc64; } } XXH_FORCE_INLINE void XXH3_initCustomSecret_scalar(void* XXH_RESTRICT customSecret, xxh_u64 seed64) { /* * We need a separate pointer for the hack below, * which requires a non-const pointer. * Any decent compiler will optimize this out otherwise. */ const xxh_u8* kSecretPtr = XXH3_kSecret; XXH_STATIC_ASSERT((XXH_SECRET_DEFAULT_SIZE & 15) == 0); #if defined(__clang__) && defined(__aarch64__) /* * UGLY HACK: * Clang generates a bunch of MOV/MOVK pairs for aarch64, and they are * placed sequentially, in order, at the top of the unrolled loop. * * While MOVK is great for generating constants (2 cycles for a 64-bit * constant compared to 4 cycles for LDR), long MOVK chains stall the * integer pipelines: * I L S * MOVK * MOVK * MOVK * MOVK * ADD * SUB STR * STR * By forcing loads from memory (as the asm line causes Clang to assume * that XXH3_kSecretPtr has been changed), the pipelines are used more * efficiently: * I L S * LDR * ADD LDR * SUB STR * STR * XXH3_64bits_withSeed, len == 256, Snapdragon 835 * without hack: 2654.4 MB/s * with hack: 3202.9 MB/s */ __asm__("" : "+r" (kSecretPtr)); #endif /* * Note: in debug mode, this overrides the asm optimization * and Clang will emit MOVK chains again. */ XXH_ASSERT(kSecretPtr == XXH3_kSecret); { int const nbRounds = XXH_SECRET_DEFAULT_SIZE / 16; int i; for (i=0; i < nbRounds; i++) { /* * The asm hack causes Clang to assume that kSecretPtr aliases with * customSecret, and on aarch64, this prevented LDP from merging two * loads together for free. Putting the loads together before the stores * properly generates LDP. */ xxh_u64 lo = XXH_readLE64(kSecretPtr + 16*i) + seed64; xxh_u64 hi = XXH_readLE64(kSecretPtr + 16*i + 8) - seed64; XXH_writeLE64((xxh_u8*)customSecret + 16*i, lo); XXH_writeLE64((xxh_u8*)customSecret + 16*i + 8, hi); } } } typedef void (*XXH3_f_accumulate_512)(void* XXH_RESTRICT, const void*, const void*); typedef void (*XXH3_f_scrambleAcc)(void* XXH_RESTRICT, const void*); typedef void (*XXH3_f_initCustomSecret)(void* XXH_RESTRICT, xxh_u64); #if (XXH_VECTOR == XXH_AVX512) #define XXH3_accumulate_512 XXH3_accumulate_512_avx512 #define XXH3_scrambleAcc XXH3_scrambleAcc_avx512 #define XXH3_initCustomSecret XXH3_initCustomSecret_avx512 #elif (XXH_VECTOR == XXH_AVX2) #define XXH3_accumulate_512 XXH3_accumulate_512_avx2 #define XXH3_scrambleAcc XXH3_scrambleAcc_avx2 #define XXH3_initCustomSecret XXH3_initCustomSecret_avx2 #elif (XXH_VECTOR == XXH_SSE2) #define XXH3_accumulate_512 XXH3_accumulate_512_sse2 #define XXH3_scrambleAcc XXH3_scrambleAcc_sse2 #define XXH3_initCustomSecret XXH3_initCustomSecret_sse2 #elif (XXH_VECTOR == XXH_NEON) #define XXH3_accumulate_512 XXH3_accumulate_512_neon #define XXH3_scrambleAcc XXH3_scrambleAcc_neon #define XXH3_initCustomSecret XXH3_initCustomSecret_scalar #elif (XXH_VECTOR == XXH_VSX) #define XXH3_accumulate_512 XXH3_accumulate_512_vsx #define XXH3_scrambleAcc XXH3_scrambleAcc_vsx #define XXH3_initCustomSecret XXH3_initCustomSecret_scalar #else /* scalar */ #define XXH3_accumulate_512 XXH3_accumulate_512_scalar #define XXH3_scrambleAcc XXH3_scrambleAcc_scalar #define XXH3_initCustomSecret XXH3_initCustomSecret_scalar #endif #ifndef XXH_PREFETCH_DIST # ifdef __clang__ # define XXH_PREFETCH_DIST 320 # else # if (XXH_VECTOR == XXH_AVX512) # define XXH_PREFETCH_DIST 512 # else # define XXH_PREFETCH_DIST 384 # endif # endif /* __clang__ */ #endif /* XXH_PREFETCH_DIST */ /* * XXH3_accumulate() * Loops over XXH3_accumulate_512(). * Assumption: nbStripes will not overflow the secret size */ XXH_FORCE_INLINE void XXH3_accumulate( xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT input, const xxh_u8* XXH_RESTRICT secret, size_t nbStripes, XXH3_f_accumulate_512 f_acc512) { size_t n; for (n = 0; n < nbStripes; n++ ) { const xxh_u8* const in = input + n*XXH_STRIPE_LEN; XXH_PREFETCH(in + XXH_PREFETCH_DIST); f_acc512(acc, in, secret + n*XXH_SECRET_CONSUME_RATE); } } XXH_FORCE_INLINE void XXH3_hashLong_internal_loop(xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, XXH3_f_accumulate_512 f_acc512, XXH3_f_scrambleAcc f_scramble) { size_t const nbStripesPerBlock = (secretSize - XXH_STRIPE_LEN) / XXH_SECRET_CONSUME_RATE; size_t const block_len = XXH_STRIPE_LEN * nbStripesPerBlock; size_t const nb_blocks = (len - 1) / block_len; size_t n; XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); for (n = 0; n < nb_blocks; n++) { XXH3_accumulate(acc, input + n*block_len, secret, nbStripesPerBlock, f_acc512); f_scramble(acc, secret + secretSize - XXH_STRIPE_LEN); } /* last partial block */ XXH_ASSERT(len > XXH_STRIPE_LEN); { size_t const nbStripes = ((len - 1) - (block_len * nb_blocks)) / XXH_STRIPE_LEN; XXH_ASSERT(nbStripes <= (secretSize / XXH_SECRET_CONSUME_RATE)); XXH3_accumulate(acc, input + nb_blocks*block_len, secret, nbStripes, f_acc512); /* last stripe */ { const xxh_u8* const p = input + len - XXH_STRIPE_LEN; #define XXH_SECRET_LASTACC_START 7 /* not aligned on 8, last secret is different from acc & scrambler */ f_acc512(acc, p, secret + secretSize - XXH_STRIPE_LEN - XXH_SECRET_LASTACC_START); } } } XXH_FORCE_INLINE xxh_u64 XXH3_mix2Accs(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secret) { return XXH3_mul128_fold64( acc[0] ^ XXH_readLE64(secret), acc[1] ^ XXH_readLE64(secret+8) ); } static XXH64_hash_t XXH3_mergeAccs(const xxh_u64* XXH_RESTRICT acc, const xxh_u8* XXH_RESTRICT secret, xxh_u64 start) { xxh_u64 result64 = start; size_t i = 0; for (i = 0; i < 4; i++) { result64 += XXH3_mix2Accs(acc+2*i, secret + 16*i); #if defined(__clang__) /* Clang */ \ && (defined(__arm__) || defined(__thumb__)) /* ARMv7 */ \ && (defined(__ARM_NEON) || defined(__ARM_NEON__)) /* NEON */ \ && !defined(XXH_ENABLE_AUTOVECTORIZE) /* Define to disable */ /* * UGLY HACK: * Prevent autovectorization on Clang ARMv7-a. Exact same problem as * the one in XXH3_len_129to240_64b. Speeds up shorter keys > 240b. * XXH3_64bits, len == 256, Snapdragon 835: * without hack: 2063.7 MB/s * with hack: 2560.7 MB/s */ __asm__("" : "+r" (result64)); #endif } return XXH3_avalanche(result64); } #define XXH3_INIT_ACC { XXH_PRIME32_3, XXH_PRIME64_1, XXH_PRIME64_2, XXH_PRIME64_3, \ XXH_PRIME64_4, XXH_PRIME32_2, XXH_PRIME64_5, XXH_PRIME32_1 } XXH_FORCE_INLINE XXH64_hash_t XXH3_hashLong_64b_internal(const void* XXH_RESTRICT input, size_t len, const void* XXH_RESTRICT secret, size_t secretSize, XXH3_f_accumulate_512 f_acc512, XXH3_f_scrambleAcc f_scramble) { XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64 acc[XXH_ACC_NB] = XXH3_INIT_ACC; XXH3_hashLong_internal_loop(acc, (const xxh_u8*)input, len, (const xxh_u8*)secret, secretSize, f_acc512, f_scramble); /* converge into final hash */ XXH_STATIC_ASSERT(sizeof(acc) == 64); /* do not align on 8, so that the secret is different from the accumulator */ #define XXH_SECRET_MERGEACCS_START 11 XXH_ASSERT(secretSize >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); return XXH3_mergeAccs(acc, (const xxh_u8*)secret + XXH_SECRET_MERGEACCS_START, (xxh_u64)len * XXH_PRIME64_1); } /* * It's important for performance that XXH3_hashLong is not inlined. */ XXH_NO_INLINE XXH64_hash_t XXH3_hashLong_64b_withSecret(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) { (void)seed64; return XXH3_hashLong_64b_internal(input, len, secret, secretLen, XXH3_accumulate_512, XXH3_scrambleAcc); } /* * It's important for performance that XXH3_hashLong is not inlined. * Since the function is not inlined, the compiler may not be able to understand that, * in some scenarios, its `secret` argument is actually a compile time constant. * This variant enforces that the compiler can detect that, * and uses this opportunity to streamline the generated code for better performance. */ XXH_NO_INLINE XXH64_hash_t XXH3_hashLong_64b_default(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, const xxh_u8* XXH_RESTRICT secret, size_t secretLen) { (void)seed64; (void)secret; (void)secretLen; return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512, XXH3_scrambleAcc); } /* * XXH3_hashLong_64b_withSeed(): * Generate a custom key based on alteration of default XXH3_kSecret with the seed, * and then use this key for long mode hashing. * * This operation is decently fast but nonetheless costs a little bit of time. * Try to avoid it whenever possible (typically when seed==0). * * It's important for performance that XXH3_hashLong is not inlined. Not sure * why (uop cache maybe?), but the difference is large and easily measurable. */ XXH_FORCE_INLINE XXH64_hash_t XXH3_hashLong_64b_withSeed_internal(const void* input, size_t len, XXH64_hash_t seed, XXH3_f_accumulate_512 f_acc512, XXH3_f_scrambleAcc f_scramble, XXH3_f_initCustomSecret f_initSec) { if (seed == 0) return XXH3_hashLong_64b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), f_acc512, f_scramble); { XXH_ALIGN(XXH_SEC_ALIGN) xxh_u8 secret[XXH_SECRET_DEFAULT_SIZE]; f_initSec(secret, seed); return XXH3_hashLong_64b_internal(input, len, secret, sizeof(secret), f_acc512, f_scramble); } } /* * It's important for performance that XXH3_hashLong is not inlined. */ XXH_NO_INLINE XXH64_hash_t XXH3_hashLong_64b_withSeed(const void* input, size_t len, XXH64_hash_t seed, const xxh_u8* secret, size_t secretLen) { (void)secret; (void)secretLen; return XXH3_hashLong_64b_withSeed_internal(input, len, seed, XXH3_accumulate_512, XXH3_scrambleAcc, XXH3_initCustomSecret); } typedef XXH64_hash_t (*XXH3_hashLong64_f)(const void* XXH_RESTRICT, size_t, XXH64_hash_t, const xxh_u8* XXH_RESTRICT, size_t); XXH_FORCE_INLINE XXH64_hash_t XXH3_64bits_internal(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen, XXH3_hashLong64_f f_hashLong) { XXH_ASSERT(secretLen >= XXH3_SECRET_SIZE_MIN); /* * If an action is to be taken if `secretLen` condition is not respected, * it should be done here. * For now, it's a contract pre-condition. * Adding a check and a branch here would cost performance at every hash. * Also, note that function signature doesn't offer room to return an error. */ if (len <= 16) return XXH3_len_0to16_64b((const xxh_u8*)input, len, (const xxh_u8*)secret, seed64); if (len <= 128) return XXH3_len_17to128_64b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); if (len <= XXH3_MIDSIZE_MAX) return XXH3_len_129to240_64b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); return f_hashLong(input, len, seed64, (const xxh_u8*)secret, secretLen); } /* === Public entry point === */ /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH64_hash_t XXH3_64bits(const void* input, size_t len) { return XXH3_64bits_internal(input, len, 0, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_default); } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSecret(const void* input, size_t len, const void* secret, size_t secretSize) { return XXH3_64bits_internal(input, len, 0, secret, secretSize, XXH3_hashLong_64b_withSecret); } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_withSeed(const void* input, size_t len, XXH64_hash_t seed) { return XXH3_64bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_64b_withSeed); } /* === XXH3 streaming === */ /* * Malloc's a pointer that is always aligned to align. * * This must be freed with `XXH_alignedFree()`. * * malloc typically guarantees 16 byte alignment on 64-bit systems and 8 byte * alignment on 32-bit. This isn't enough for the 32 byte aligned loads in AVX2 * or on 32-bit, the 16 byte aligned loads in SSE2 and NEON. * * This underalignment previously caused a rather obvious crash which went * completely unnoticed due to XXH3_createState() not actually being tested. * Credit to RedSpah for noticing this bug. * * The alignment is done manually: Functions like posix_memalign or _mm_malloc * are avoided: To maintain portability, we would have to write a fallback * like this anyways, and besides, testing for the existence of library * functions without relying on external build tools is impossible. * * The method is simple: Overallocate, manually align, and store the offset * to the original behind the returned pointer. * * Align must be a power of 2 and 8 <= align <= 128. */ static void* XXH_alignedMalloc(size_t s, size_t align) { XXH_ASSERT(align <= 128 && align >= 8); /* range check */ XXH_ASSERT((align & (align-1)) == 0); /* power of 2 */ XXH_ASSERT(s != 0 && s < (s + align)); /* empty/overflow */ { /* Overallocate to make room for manual realignment and an offset byte */ xxh_u8* base = (xxh_u8*)XXH_malloc(s + align); if (base != NULL) { /* * Get the offset needed to align this pointer. * * Even if the returned pointer is aligned, there will always be * at least one byte to store the offset to the original pointer. */ size_t offset = align - ((size_t)base & (align - 1)); /* base % align */ /* Add the offset for the now-aligned pointer */ xxh_u8* ptr = base + offset; XXH_ASSERT((size_t)ptr % align == 0); /* Store the offset immediately before the returned pointer. */ ptr[-1] = (xxh_u8)offset; return ptr; } return NULL; } } /* * Frees an aligned pointer allocated by XXH_alignedMalloc(). Don't pass * normal malloc'd pointers, XXH_alignedMalloc has a specific data layout. */ static void XXH_alignedFree(void* p) { if (p != NULL) { xxh_u8* ptr = (xxh_u8*)p; /* Get the offset byte we added in XXH_malloc. */ xxh_u8 offset = ptr[-1]; /* Free the original malloc'd pointer */ xxh_u8* base = ptr - offset; XXH_free(base); } } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH3_state_t* XXH3_createState(void) { XXH3_state_t* const state = (XXH3_state_t*)XXH_alignedMalloc(sizeof(XXH3_state_t), 64); if (state==NULL) return NULL; XXH3_INITSTATE(state); return state; } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH_errorcode XXH3_freeState(XXH3_state_t* statePtr) { XXH_alignedFree(statePtr); return XXH_OK; } /*! @ingroup xxh3_family */ XXH_PUBLIC_API void XXH3_copyState(XXH3_state_t* dst_state, const XXH3_state_t* src_state) { memcpy(dst_state, src_state, sizeof(*dst_state)); } static void XXH3_reset_internal(XXH3_state_t* statePtr, XXH64_hash_t seed, const void* secret, size_t secretSize) { size_t const initStart = offsetof(XXH3_state_t, bufferedSize); size_t const initLength = offsetof(XXH3_state_t, nbStripesPerBlock) - initStart; XXH_ASSERT(offsetof(XXH3_state_t, nbStripesPerBlock) > initStart); XXH_ASSERT(statePtr != NULL); /* set members from bufferedSize to nbStripesPerBlock (excluded) to 0 */ memset((char*)statePtr + initStart, 0, initLength); statePtr->acc[0] = XXH_PRIME32_3; statePtr->acc[1] = XXH_PRIME64_1; statePtr->acc[2] = XXH_PRIME64_2; statePtr->acc[3] = XXH_PRIME64_3; statePtr->acc[4] = XXH_PRIME64_4; statePtr->acc[5] = XXH_PRIME32_2; statePtr->acc[6] = XXH_PRIME64_5; statePtr->acc[7] = XXH_PRIME32_1; statePtr->seed = seed; statePtr->extSecret = (const unsigned char*)secret; XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); statePtr->secretLimit = secretSize - XXH_STRIPE_LEN; statePtr->nbStripesPerBlock = statePtr->secretLimit / XXH_SECRET_CONSUME_RATE; } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset(XXH3_state_t* statePtr) { if (statePtr == NULL) return XXH_ERROR; XXH3_reset_internal(statePtr, 0, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); return XXH_OK; } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize) { if (statePtr == NULL) return XXH_ERROR; XXH3_reset_internal(statePtr, 0, secret, secretSize); if (secret == NULL) return XXH_ERROR; if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR; return XXH_OK; } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH_errorcode XXH3_64bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed) { if (statePtr == NULL) return XXH_ERROR; if (seed==0) return XXH3_64bits_reset(statePtr); if (seed != statePtr->seed) XXH3_initCustomSecret(statePtr->customSecret, seed); XXH3_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE); return XXH_OK; } /* Note : when XXH3_consumeStripes() is invoked, * there must be a guarantee that at least one more byte must be consumed from input * so that the function can blindly consume all stripes using the "normal" secret segment */ XXH_FORCE_INLINE void XXH3_consumeStripes(xxh_u64* XXH_RESTRICT acc, size_t* XXH_RESTRICT nbStripesSoFarPtr, size_t nbStripesPerBlock, const xxh_u8* XXH_RESTRICT input, size_t nbStripes, const xxh_u8* XXH_RESTRICT secret, size_t secretLimit, XXH3_f_accumulate_512 f_acc512, XXH3_f_scrambleAcc f_scramble) { XXH_ASSERT(nbStripes <= nbStripesPerBlock); /* can handle max 1 scramble per invocation */ XXH_ASSERT(*nbStripesSoFarPtr < nbStripesPerBlock); if (nbStripesPerBlock - *nbStripesSoFarPtr <= nbStripes) { /* need a scrambling operation */ size_t const nbStripesToEndofBlock = nbStripesPerBlock - *nbStripesSoFarPtr; size_t const nbStripesAfterBlock = nbStripes - nbStripesToEndofBlock; XXH3_accumulate(acc, input, secret + nbStripesSoFarPtr[0] * XXH_SECRET_CONSUME_RATE, nbStripesToEndofBlock, f_acc512); f_scramble(acc, secret + secretLimit); XXH3_accumulate(acc, input + nbStripesToEndofBlock * XXH_STRIPE_LEN, secret, nbStripesAfterBlock, f_acc512); *nbStripesSoFarPtr = nbStripesAfterBlock; } else { XXH3_accumulate(acc, input, secret + nbStripesSoFarPtr[0] * XXH_SECRET_CONSUME_RATE, nbStripes, f_acc512); *nbStripesSoFarPtr += nbStripes; } } /* * Both XXH3_64bits_update and XXH3_128bits_update use this routine. */ XXH_FORCE_INLINE XXH_errorcode XXH3_update(XXH3_state_t* state, const xxh_u8* input, size_t len, XXH3_f_accumulate_512 f_acc512, XXH3_f_scrambleAcc f_scramble) { if (input==NULL) #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) return XXH_OK; #else return XXH_ERROR; #endif { const xxh_u8* const bEnd = input + len; const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; state->totalLen += len; XXH_ASSERT(state->bufferedSize <= XXH3_INTERNALBUFFER_SIZE); if (state->bufferedSize + len <= XXH3_INTERNALBUFFER_SIZE) { /* fill in tmp buffer */ XXH_memcpy(state->buffer + state->bufferedSize, input, len); state->bufferedSize += (XXH32_hash_t)len; return XXH_OK; } /* total input is now > XXH3_INTERNALBUFFER_SIZE */ #define XXH3_INTERNALBUFFER_STRIPES (XXH3_INTERNALBUFFER_SIZE / XXH_STRIPE_LEN) XXH_STATIC_ASSERT(XXH3_INTERNALBUFFER_SIZE % XXH_STRIPE_LEN == 0); /* clean multiple */ /* * Internal buffer is partially filled (always, except at beginning) * Complete it, then consume it. */ if (state->bufferedSize) { size_t const loadSize = XXH3_INTERNALBUFFER_SIZE - state->bufferedSize; XXH_memcpy(state->buffer + state->bufferedSize, input, loadSize); input += loadSize; XXH3_consumeStripes(state->acc, &state->nbStripesSoFar, state->nbStripesPerBlock, state->buffer, XXH3_INTERNALBUFFER_STRIPES, secret, state->secretLimit, f_acc512, f_scramble); state->bufferedSize = 0; } XXH_ASSERT(input < bEnd); /* Consume input by a multiple of internal buffer size */ if (input+XXH3_INTERNALBUFFER_SIZE < bEnd) { const xxh_u8* const limit = bEnd - XXH3_INTERNALBUFFER_SIZE; do { XXH3_consumeStripes(state->acc, &state->nbStripesSoFar, state->nbStripesPerBlock, input, XXH3_INTERNALBUFFER_STRIPES, secret, state->secretLimit, f_acc512, f_scramble); input += XXH3_INTERNALBUFFER_SIZE; } while (inputbuffer + sizeof(state->buffer) - XXH_STRIPE_LEN, input - XXH_STRIPE_LEN, XXH_STRIPE_LEN); } XXH_ASSERT(input < bEnd); /* Some remaining input (always) : buffer it */ XXH_memcpy(state->buffer, input, (size_t)(bEnd-input)); state->bufferedSize = (XXH32_hash_t)(bEnd-input); } return XXH_OK; } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH_errorcode XXH3_64bits_update(XXH3_state_t* state, const void* input, size_t len) { return XXH3_update(state, (const xxh_u8*)input, len, XXH3_accumulate_512, XXH3_scrambleAcc); } XXH_FORCE_INLINE void XXH3_digest_long (XXH64_hash_t* acc, const XXH3_state_t* state, const unsigned char* secret) { /* * Digest on a local copy. This way, the state remains unaltered, and it can * continue ingesting more input afterwards. */ memcpy(acc, state->acc, sizeof(state->acc)); if (state->bufferedSize >= XXH_STRIPE_LEN) { size_t const nbStripes = (state->bufferedSize - 1) / XXH_STRIPE_LEN; size_t nbStripesSoFar = state->nbStripesSoFar; XXH3_consumeStripes(acc, &nbStripesSoFar, state->nbStripesPerBlock, state->buffer, nbStripes, secret, state->secretLimit, XXH3_accumulate_512, XXH3_scrambleAcc); /* last stripe */ XXH3_accumulate_512(acc, state->buffer + state->bufferedSize - XXH_STRIPE_LEN, secret + state->secretLimit - XXH_SECRET_LASTACC_START); } else { /* bufferedSize < XXH_STRIPE_LEN */ xxh_u8 lastStripe[XXH_STRIPE_LEN]; size_t const catchupSize = XXH_STRIPE_LEN - state->bufferedSize; XXH_ASSERT(state->bufferedSize > 0); /* there is always some input buffered */ memcpy(lastStripe, state->buffer + sizeof(state->buffer) - catchupSize, catchupSize); memcpy(lastStripe + catchupSize, state->buffer, state->bufferedSize); XXH3_accumulate_512(acc, lastStripe, secret + state->secretLimit - XXH_SECRET_LASTACC_START); } } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH64_hash_t XXH3_64bits_digest (const XXH3_state_t* state) { const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; if (state->totalLen > XXH3_MIDSIZE_MAX) { XXH_ALIGN(XXH_ACC_ALIGN) XXH64_hash_t acc[XXH_ACC_NB]; XXH3_digest_long(acc, state, secret); return XXH3_mergeAccs(acc, secret + XXH_SECRET_MERGEACCS_START, (xxh_u64)state->totalLen * XXH_PRIME64_1); } /* totalLen <= XXH3_MIDSIZE_MAX: digesting a short input */ if (state->seed) return XXH3_64bits_withSeed(state->buffer, (size_t)state->totalLen, state->seed); return XXH3_64bits_withSecret(state->buffer, (size_t)(state->totalLen), secret, state->secretLimit + XXH_STRIPE_LEN); } #define XXH_MIN(x, y) (((x) > (y)) ? (y) : (x)) /*! @ingroup xxh3_family */ XXH_PUBLIC_API void XXH3_generateSecret(void* secretBuffer, const void* customSeed, size_t customSeedSize) { XXH_ASSERT(secretBuffer != NULL); if (customSeedSize == 0) { memcpy(secretBuffer, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); return; } XXH_ASSERT(customSeed != NULL); { size_t const segmentSize = sizeof(XXH128_hash_t); size_t const nbSegments = XXH_SECRET_DEFAULT_SIZE / segmentSize; XXH128_canonical_t scrambler; XXH64_hash_t seeds[12]; size_t segnb; XXH_ASSERT(nbSegments == 12); XXH_ASSERT(segmentSize * nbSegments == XXH_SECRET_DEFAULT_SIZE); /* exact multiple */ XXH128_canonicalFromHash(&scrambler, XXH128(customSeed, customSeedSize, 0)); /* * Copy customSeed to seeds[], truncating or repeating as necessary. */ { size_t toFill = XXH_MIN(customSeedSize, sizeof(seeds)); size_t filled = toFill; memcpy(seeds, customSeed, toFill); while (filled < sizeof(seeds)) { toFill = XXH_MIN(filled, sizeof(seeds) - filled); memcpy((char*)seeds + filled, seeds, toFill); filled += toFill; } } /* generate secret */ memcpy(secretBuffer, &scrambler, sizeof(scrambler)); for (segnb=1; segnb < nbSegments; segnb++) { size_t const segmentStart = segnb * segmentSize; XXH128_canonical_t segment; XXH128_canonicalFromHash(&segment, XXH128(&scrambler, sizeof(scrambler), XXH_readLE64(seeds + segnb) + segnb) ); memcpy((char*)secretBuffer + segmentStart, &segment, sizeof(segment)); } } } /* ========================================== * XXH3 128 bits (a.k.a XXH128) * ========================================== * XXH3's 128-bit variant has better mixing and strength than the 64-bit variant, * even without counting the significantly larger output size. * * For example, extra steps are taken to avoid the seed-dependent collisions * in 17-240 byte inputs (See XXH3_mix16B and XXH128_mix32B). * * This strength naturally comes at the cost of some speed, especially on short * lengths. Note that longer hashes are about as fast as the 64-bit version * due to it using only a slight modification of the 64-bit loop. * * XXH128 is also more oriented towards 64-bit machines. It is still extremely * fast for a _128-bit_ hash on 32-bit (it usually clears XXH64). */ XXH_FORCE_INLINE XXH128_hash_t XXH3_len_1to3_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { /* A doubled version of 1to3_64b with different constants. */ XXH_ASSERT(input != NULL); XXH_ASSERT(1 <= len && len <= 3); XXH_ASSERT(secret != NULL); /* * len = 1: combinedl = { input[0], 0x01, input[0], input[0] } * len = 2: combinedl = { input[1], 0x02, input[0], input[1] } * len = 3: combinedl = { input[2], 0x03, input[0], input[1] } */ { xxh_u8 const c1 = input[0]; xxh_u8 const c2 = input[len >> 1]; xxh_u8 const c3 = input[len - 1]; xxh_u32 const combinedl = ((xxh_u32)c1 <<16) | ((xxh_u32)c2 << 24) | ((xxh_u32)c3 << 0) | ((xxh_u32)len << 8); xxh_u32 const combinedh = XXH_rotl32(XXH_swap32(combinedl), 13); xxh_u64 const bitflipl = (XXH_readLE32(secret) ^ XXH_readLE32(secret+4)) + seed; xxh_u64 const bitfliph = (XXH_readLE32(secret+8) ^ XXH_readLE32(secret+12)) - seed; xxh_u64 const keyed_lo = (xxh_u64)combinedl ^ bitflipl; xxh_u64 const keyed_hi = (xxh_u64)combinedh ^ bitfliph; XXH128_hash_t h128; h128.low64 = XXH64_avalanche(keyed_lo); h128.high64 = XXH64_avalanche(keyed_hi); return h128; } } XXH_FORCE_INLINE XXH128_hash_t XXH3_len_4to8_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(input != NULL); XXH_ASSERT(secret != NULL); XXH_ASSERT(4 <= len && len <= 8); seed ^= (xxh_u64)XXH_swap32((xxh_u32)seed) << 32; { xxh_u32 const input_lo = XXH_readLE32(input); xxh_u32 const input_hi = XXH_readLE32(input + len - 4); xxh_u64 const input_64 = input_lo + ((xxh_u64)input_hi << 32); xxh_u64 const bitflip = (XXH_readLE64(secret+16) ^ XXH_readLE64(secret+24)) + seed; xxh_u64 const keyed = input_64 ^ bitflip; /* Shift len to the left to ensure it is even, this avoids even multiplies. */ XXH128_hash_t m128 = XXH_mult64to128(keyed, XXH_PRIME64_1 + (len << 2)); m128.high64 += (m128.low64 << 1); m128.low64 ^= (m128.high64 >> 3); m128.low64 = XXH_xorshift64(m128.low64, 35); m128.low64 *= 0x9FB21C651E98DF25ULL; m128.low64 = XXH_xorshift64(m128.low64, 28); m128.high64 = XXH3_avalanche(m128.high64); return m128; } } XXH_FORCE_INLINE XXH128_hash_t XXH3_len_9to16_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(input != NULL); XXH_ASSERT(secret != NULL); XXH_ASSERT(9 <= len && len <= 16); { xxh_u64 const bitflipl = (XXH_readLE64(secret+32) ^ XXH_readLE64(secret+40)) - seed; xxh_u64 const bitfliph = (XXH_readLE64(secret+48) ^ XXH_readLE64(secret+56)) + seed; xxh_u64 const input_lo = XXH_readLE64(input); xxh_u64 input_hi = XXH_readLE64(input + len - 8); XXH128_hash_t m128 = XXH_mult64to128(input_lo ^ input_hi ^ bitflipl, XXH_PRIME64_1); /* * Put len in the middle of m128 to ensure that the length gets mixed to * both the low and high bits in the 128x64 multiply below. */ m128.low64 += (xxh_u64)(len - 1) << 54; input_hi ^= bitfliph; /* * Add the high 32 bits of input_hi to the high 32 bits of m128, then * add the long product of the low 32 bits of input_hi and XXH_PRIME32_2 to * the high 64 bits of m128. * * The best approach to this operation is different on 32-bit and 64-bit. */ if (sizeof(void *) < sizeof(xxh_u64)) { /* 32-bit */ /* * 32-bit optimized version, which is more readable. * * On 32-bit, it removes an ADC and delays a dependency between the two * halves of m128.high64, but it generates an extra mask on 64-bit. */ m128.high64 += (input_hi & 0xFFFFFFFF00000000ULL) + XXH_mult32to64((xxh_u32)input_hi, XXH_PRIME32_2); } else { /* * 64-bit optimized (albeit more confusing) version. * * Uses some properties of addition and multiplication to remove the mask: * * Let: * a = input_hi.lo = (input_hi & 0x00000000FFFFFFFF) * b = input_hi.hi = (input_hi & 0xFFFFFFFF00000000) * c = XXH_PRIME32_2 * * a + (b * c) * Inverse Property: x + y - x == y * a + (b * (1 + c - 1)) * Distributive Property: x * (y + z) == (x * y) + (x * z) * a + (b * 1) + (b * (c - 1)) * Identity Property: x * 1 == x * a + b + (b * (c - 1)) * * Substitute a, b, and c: * input_hi.hi + input_hi.lo + ((xxh_u64)input_hi.lo * (XXH_PRIME32_2 - 1)) * * Since input_hi.hi + input_hi.lo == input_hi, we get this: * input_hi + ((xxh_u64)input_hi.lo * (XXH_PRIME32_2 - 1)) */ m128.high64 += input_hi + XXH_mult32to64((xxh_u32)input_hi, XXH_PRIME32_2 - 1); } /* m128 ^= XXH_swap64(m128 >> 64); */ m128.low64 ^= XXH_swap64(m128.high64); { /* 128x64 multiply: h128 = m128 * XXH_PRIME64_2; */ XXH128_hash_t h128 = XXH_mult64to128(m128.low64, XXH_PRIME64_2); h128.high64 += m128.high64 * XXH_PRIME64_2; h128.low64 = XXH3_avalanche(h128.low64); h128.high64 = XXH3_avalanche(h128.high64); return h128; } } } /* * Assumption: `secret` size is >= XXH3_SECRET_SIZE_MIN */ XXH_FORCE_INLINE XXH128_hash_t XXH3_len_0to16_128b(const xxh_u8* input, size_t len, const xxh_u8* secret, XXH64_hash_t seed) { XXH_ASSERT(len <= 16); { if (len > 8) return XXH3_len_9to16_128b(input, len, secret, seed); if (len >= 4) return XXH3_len_4to8_128b(input, len, secret, seed); if (len) return XXH3_len_1to3_128b(input, len, secret, seed); { XXH128_hash_t h128; xxh_u64 const bitflipl = XXH_readLE64(secret+64) ^ XXH_readLE64(secret+72); xxh_u64 const bitfliph = XXH_readLE64(secret+80) ^ XXH_readLE64(secret+88); h128.low64 = XXH64_avalanche(seed ^ bitflipl); h128.high64 = XXH64_avalanche( seed ^ bitfliph); return h128; } } } /* * A bit slower than XXH3_mix16B, but handles multiply by zero better. */ XXH_FORCE_INLINE XXH128_hash_t XXH128_mix32B(XXH128_hash_t acc, const xxh_u8* input_1, const xxh_u8* input_2, const xxh_u8* secret, XXH64_hash_t seed) { acc.low64 += XXH3_mix16B (input_1, secret+0, seed); acc.low64 ^= XXH_readLE64(input_2) + XXH_readLE64(input_2 + 8); acc.high64 += XXH3_mix16B (input_2, secret+16, seed); acc.high64 ^= XXH_readLE64(input_1) + XXH_readLE64(input_1 + 8); return acc; } XXH_FORCE_INLINE XXH128_hash_t XXH3_len_17to128_128b(const xxh_u8* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, XXH64_hash_t seed) { XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; XXH_ASSERT(16 < len && len <= 128); { XXH128_hash_t acc; acc.low64 = len * XXH_PRIME64_1; acc.high64 = 0; if (len > 32) { if (len > 64) { if (len > 96) { acc = XXH128_mix32B(acc, input+48, input+len-64, secret+96, seed); } acc = XXH128_mix32B(acc, input+32, input+len-48, secret+64, seed); } acc = XXH128_mix32B(acc, input+16, input+len-32, secret+32, seed); } acc = XXH128_mix32B(acc, input, input+len-16, secret, seed); { XXH128_hash_t h128; h128.low64 = acc.low64 + acc.high64; h128.high64 = (acc.low64 * XXH_PRIME64_1) + (acc.high64 * XXH_PRIME64_4) + ((len - seed) * XXH_PRIME64_2); h128.low64 = XXH3_avalanche(h128.low64); h128.high64 = (XXH64_hash_t)0 - XXH3_avalanche(h128.high64); return h128; } } } XXH_NO_INLINE XXH128_hash_t XXH3_len_129to240_128b(const xxh_u8* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, XXH64_hash_t seed) { XXH_ASSERT(secretSize >= XXH3_SECRET_SIZE_MIN); (void)secretSize; XXH_ASSERT(128 < len && len <= XXH3_MIDSIZE_MAX); { XXH128_hash_t acc; int const nbRounds = (int)len / 32; int i; acc.low64 = len * XXH_PRIME64_1; acc.high64 = 0; for (i=0; i<4; i++) { acc = XXH128_mix32B(acc, input + (32 * i), input + (32 * i) + 16, secret + (32 * i), seed); } acc.low64 = XXH3_avalanche(acc.low64); acc.high64 = XXH3_avalanche(acc.high64); XXH_ASSERT(nbRounds >= 4); for (i=4 ; i < nbRounds; i++) { acc = XXH128_mix32B(acc, input + (32 * i), input + (32 * i) + 16, secret + XXH3_MIDSIZE_STARTOFFSET + (32 * (i - 4)), seed); } /* last bytes */ acc = XXH128_mix32B(acc, input + len - 16, input + len - 32, secret + XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET - 16, 0ULL - seed); { XXH128_hash_t h128; h128.low64 = acc.low64 + acc.high64; h128.high64 = (acc.low64 * XXH_PRIME64_1) + (acc.high64 * XXH_PRIME64_4) + ((len - seed) * XXH_PRIME64_2); h128.low64 = XXH3_avalanche(h128.low64); h128.high64 = (XXH64_hash_t)0 - XXH3_avalanche(h128.high64); return h128; } } } XXH_FORCE_INLINE XXH128_hash_t XXH3_hashLong_128b_internal(const void* XXH_RESTRICT input, size_t len, const xxh_u8* XXH_RESTRICT secret, size_t secretSize, XXH3_f_accumulate_512 f_acc512, XXH3_f_scrambleAcc f_scramble) { XXH_ALIGN(XXH_ACC_ALIGN) xxh_u64 acc[XXH_ACC_NB] = XXH3_INIT_ACC; XXH3_hashLong_internal_loop(acc, (const xxh_u8*)input, len, secret, secretSize, f_acc512, f_scramble); /* converge into final hash */ XXH_STATIC_ASSERT(sizeof(acc) == 64); XXH_ASSERT(secretSize >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); { XXH128_hash_t h128; h128.low64 = XXH3_mergeAccs(acc, secret + XXH_SECRET_MERGEACCS_START, (xxh_u64)len * XXH_PRIME64_1); h128.high64 = XXH3_mergeAccs(acc, secret + secretSize - sizeof(acc) - XXH_SECRET_MERGEACCS_START, ~((xxh_u64)len * XXH_PRIME64_2)); return h128; } } /* * It's important for performance that XXH3_hashLong is not inlined. */ XXH_NO_INLINE XXH128_hash_t XXH3_hashLong_128b_default(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen) { (void)seed64; (void)secret; (void)secretLen; return XXH3_hashLong_128b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_accumulate_512, XXH3_scrambleAcc); } /* * It's important for performance that XXH3_hashLong is not inlined. */ XXH_NO_INLINE XXH128_hash_t XXH3_hashLong_128b_withSecret(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen) { (void)seed64; return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, secretLen, XXH3_accumulate_512, XXH3_scrambleAcc); } XXH_FORCE_INLINE XXH128_hash_t XXH3_hashLong_128b_withSeed_internal(const void* XXH_RESTRICT input, size_t len, XXH64_hash_t seed64, XXH3_f_accumulate_512 f_acc512, XXH3_f_scrambleAcc f_scramble, XXH3_f_initCustomSecret f_initSec) { if (seed64 == 0) return XXH3_hashLong_128b_internal(input, len, XXH3_kSecret, sizeof(XXH3_kSecret), f_acc512, f_scramble); { XXH_ALIGN(XXH_SEC_ALIGN) xxh_u8 secret[XXH_SECRET_DEFAULT_SIZE]; f_initSec(secret, seed64); return XXH3_hashLong_128b_internal(input, len, (const xxh_u8*)secret, sizeof(secret), f_acc512, f_scramble); } } /* * It's important for performance that XXH3_hashLong is not inlined. */ XXH_NO_INLINE XXH128_hash_t XXH3_hashLong_128b_withSeed(const void* input, size_t len, XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen) { (void)secret; (void)secretLen; return XXH3_hashLong_128b_withSeed_internal(input, len, seed64, XXH3_accumulate_512, XXH3_scrambleAcc, XXH3_initCustomSecret); } typedef XXH128_hash_t (*XXH3_hashLong128_f)(const void* XXH_RESTRICT, size_t, XXH64_hash_t, const void* XXH_RESTRICT, size_t); XXH_FORCE_INLINE XXH128_hash_t XXH3_128bits_internal(const void* input, size_t len, XXH64_hash_t seed64, const void* XXH_RESTRICT secret, size_t secretLen, XXH3_hashLong128_f f_hl128) { XXH_ASSERT(secretLen >= XXH3_SECRET_SIZE_MIN); /* * If an action is to be taken if `secret` conditions are not respected, * it should be done here. * For now, it's a contract pre-condition. * Adding a check and a branch here would cost performance at every hash. */ if (len <= 16) return XXH3_len_0to16_128b((const xxh_u8*)input, len, (const xxh_u8*)secret, seed64); if (len <= 128) return XXH3_len_17to128_128b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); if (len <= XXH3_MIDSIZE_MAX) return XXH3_len_129to240_128b((const xxh_u8*)input, len, (const xxh_u8*)secret, secretLen, seed64); return f_hl128(input, len, seed64, secret, secretLen); } /* === Public XXH128 API === */ /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH128_hash_t XXH3_128bits(const void* input, size_t len) { return XXH3_128bits_internal(input, len, 0, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_128b_default); } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSecret(const void* input, size_t len, const void* secret, size_t secretSize) { return XXH3_128bits_internal(input, len, 0, (const xxh_u8*)secret, secretSize, XXH3_hashLong_128b_withSecret); } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_withSeed(const void* input, size_t len, XXH64_hash_t seed) { return XXH3_128bits_internal(input, len, seed, XXH3_kSecret, sizeof(XXH3_kSecret), XXH3_hashLong_128b_withSeed); } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH128_hash_t XXH128(const void* input, size_t len, XXH64_hash_t seed) { return XXH3_128bits_withSeed(input, len, seed); } /* === XXH3 128-bit streaming === */ /* * All the functions are actually the same as for 64-bit streaming variant. * The only difference is the finalization routine. */ /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset(XXH3_state_t* statePtr) { if (statePtr == NULL) return XXH_ERROR; XXH3_reset_internal(statePtr, 0, XXH3_kSecret, XXH_SECRET_DEFAULT_SIZE); return XXH_OK; } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSecret(XXH3_state_t* statePtr, const void* secret, size_t secretSize) { if (statePtr == NULL) return XXH_ERROR; XXH3_reset_internal(statePtr, 0, secret, secretSize); if (secret == NULL) return XXH_ERROR; if (secretSize < XXH3_SECRET_SIZE_MIN) return XXH_ERROR; return XXH_OK; } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH_errorcode XXH3_128bits_reset_withSeed(XXH3_state_t* statePtr, XXH64_hash_t seed) { if (statePtr == NULL) return XXH_ERROR; if (seed==0) return XXH3_128bits_reset(statePtr); if (seed != statePtr->seed) XXH3_initCustomSecret(statePtr->customSecret, seed); XXH3_reset_internal(statePtr, seed, NULL, XXH_SECRET_DEFAULT_SIZE); return XXH_OK; } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH_errorcode XXH3_128bits_update(XXH3_state_t* state, const void* input, size_t len) { return XXH3_update(state, (const xxh_u8*)input, len, XXH3_accumulate_512, XXH3_scrambleAcc); } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH128_hash_t XXH3_128bits_digest (const XXH3_state_t* state) { const unsigned char* const secret = (state->extSecret == NULL) ? state->customSecret : state->extSecret; if (state->totalLen > XXH3_MIDSIZE_MAX) { XXH_ALIGN(XXH_ACC_ALIGN) XXH64_hash_t acc[XXH_ACC_NB]; XXH3_digest_long(acc, state, secret); XXH_ASSERT(state->secretLimit + XXH_STRIPE_LEN >= sizeof(acc) + XXH_SECRET_MERGEACCS_START); { XXH128_hash_t h128; h128.low64 = XXH3_mergeAccs(acc, secret + XXH_SECRET_MERGEACCS_START, (xxh_u64)state->totalLen * XXH_PRIME64_1); h128.high64 = XXH3_mergeAccs(acc, secret + state->secretLimit + XXH_STRIPE_LEN - sizeof(acc) - XXH_SECRET_MERGEACCS_START, ~((xxh_u64)state->totalLen * XXH_PRIME64_2)); return h128; } } /* len <= XXH3_MIDSIZE_MAX : short code */ if (state->seed) return XXH3_128bits_withSeed(state->buffer, (size_t)state->totalLen, state->seed); return XXH3_128bits_withSecret(state->buffer, (size_t)(state->totalLen), secret, state->secretLimit + XXH_STRIPE_LEN); } /* 128-bit utility functions */ #include /* memcmp, memcpy */ /* return : 1 is equal, 0 if different */ /*! @ingroup xxh3_family */ XXH_PUBLIC_API int XXH128_isEqual(XXH128_hash_t h1, XXH128_hash_t h2) { /* note : XXH128_hash_t is compact, it has no padding byte */ return !(memcmp(&h1, &h2, sizeof(h1))); } /* This prototype is compatible with stdlib's qsort(). * return : >0 if *h128_1 > *h128_2 * <0 if *h128_1 < *h128_2 * =0 if *h128_1 == *h128_2 */ /*! @ingroup xxh3_family */ XXH_PUBLIC_API int XXH128_cmp(const void* h128_1, const void* h128_2) { XXH128_hash_t const h1 = *(const XXH128_hash_t*)h128_1; XXH128_hash_t const h2 = *(const XXH128_hash_t*)h128_2; int const hcmp = (h1.high64 > h2.high64) - (h2.high64 > h1.high64); /* note : bets that, in most cases, hash values are different */ if (hcmp) return hcmp; return (h1.low64 > h2.low64) - (h2.low64 > h1.low64); } /*====== Canonical representation ======*/ /*! @ingroup xxh3_family */ XXH_PUBLIC_API void XXH128_canonicalFromHash(XXH128_canonical_t* dst, XXH128_hash_t hash) { XXH_STATIC_ASSERT(sizeof(XXH128_canonical_t) == sizeof(XXH128_hash_t)); if (XXH_CPU_LITTLE_ENDIAN) { hash.high64 = XXH_swap64(hash.high64); hash.low64 = XXH_swap64(hash.low64); } memcpy(dst, &hash.high64, sizeof(hash.high64)); memcpy((char*)dst + sizeof(hash.high64), &hash.low64, sizeof(hash.low64)); } /*! @ingroup xxh3_family */ XXH_PUBLIC_API XXH128_hash_t XXH128_hashFromCanonical(const XXH128_canonical_t* src) { XXH128_hash_t h; h.high64 = XXH_readBE64(src); h.low64 = XXH_readBE64(src->digest + 8); return h; } /* Pop our optimization override from above */ #if XXH_VECTOR == XXH_AVX2 /* AVX2 */ \ && defined(__GNUC__) && !defined(__clang__) /* GCC, not Clang */ \ && defined(__OPTIMIZE__) && !defined(__OPTIMIZE_SIZE__) /* respect -O0 and -Os */ # pragma GCC pop_options #endif #endif /* XXH_NO_LONG_LONG */ /*! * @} */ #endif /* XXH_IMPLEMENTATION */ #if defined (__cplusplus) } #endif